diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 497d1a751..494c6d284 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -198,7 +198,7 @@ jobs:
- name: Build and install
run: pip install -e .
- name: Run unittests
- run: coverage run --branch --source mmrotate -m pytest tests -sv
+ run: coverage run --branch --source mmrotate -m pytest tests
- name: Generate coverage report
run: |
coverage xml
diff --git a/README.md b/README.md
index 8167549c0..64e06cc6e 100644
--- a/README.md
+++ b/README.md
@@ -62,7 +62,18 @@ https://user-images.githubusercontent.com/10410257/154433305-416d129b-60c8-44c7-
+## Changelog
+**0.1.1** was released in 14/3/2022:
+
+- Add [colab tutorial](demo/MMRotate_Tutorial.ipynb) for beginners (#66)
+- Support [huge image inference](deom/huge_image_demo.py) (#34)
+- Support HRSC Dataset (#96)
+- Support mixed precision training (#72)
+- Add inference speed statistics [tool](tools/analysis_tools/benchmark.py) (#86)
+- Add confusion matrix analysis [tool](tools/analysis_tools/confusion_matrix.py) (#93)
+
+Please refer to [changelog.md](docs/en/changelog.md) for details and release history.
## Installation
@@ -71,6 +82,7 @@ Please refer to [install.md](docs/en/install.md) for installation guide.
## Get Started
Please see [get_started.md](docs/en/get_started.md) for the basic usage of MMRotate.
+We provide [colab tutorial](demo/MMRotate_Tutorial.ipynb) for beginners.
There are also tutorials:
* [learn the basics](docs/en/intro.md)
@@ -145,21 +157,21 @@ This project is released under the [Apache 2.0 license](LICENSE).
## Projects in OpenMMLab
* [MMCV](https://github.com/open-mmlab/mmcv): OpenMMLab foundational library for computer vision.
-* [MIM](https://github.com/open-mmlab/mim): MIM Installs OpenMMLab Packages.
+* [MIM](https://github.com/open-mmlab/mim): MIM installs OpenMMLab packages.
* [MMClassification](https://github.com/open-mmlab/mmclassification): OpenMMLab image classification toolbox and benchmark.
* [MMDetection](https://github.com/open-mmlab/mmdetection): OpenMMLab detection toolbox and benchmark.
-* [MMDetection3D](https://github.com/open-mmlab/mmdetection3d): OpenMMLab next-generation platform for general 3D object detection.
+* [MMDetection3D](https://github.com/open-mmlab/mmdetection3d): OpenMMLab's next-generation platform for general 3D object detection.
+* [MMRotate](https://github.com/open-mmlab/mmrotate): OpenMMLab rotated object detection toolbox and benchmark.
* [MMSegmentation](https://github.com/open-mmlab/mmsegmentation): OpenMMLab semantic segmentation toolbox and benchmark.
-* [MMAction2](https://github.com/open-mmlab/mmaction2): OpenMMLab next-generation action understanding toolbox and benchmark.
-* [MMTracking](https://github.com/open-mmlab/mmtracking): OpenMMLab video perception toolbox and benchmark.
+* [MMOCR](https://github.com/open-mmlab/mmocr): OpenMMLab text detection, recognition, and understanding toolbox.
* [MMPose](https://github.com/open-mmlab/mmpose): OpenMMLab pose estimation toolbox and benchmark.
-* [MMEditing](https://github.com/open-mmlab/mmediting): OpenMMLab image and video editing toolbox.
-* [MMOCR](https://github.com/open-mmlab/mmocr): A comprehensive toolbox for text detection, recognition and understanding.
-* [MMGeneration](https://github.com/open-mmlab/mmgeneration): OpenMMLab next-generation toolbox for generative models.
-* [MMFlow](https://github.com/open-mmlab/mmflow): OpenMMLab optical flow toolbox and benchmark.
-* [MMFewShot](https://github.com/open-mmlab/mmfewshot): OpenMMLab fewshot learning toolbox and benchmark.
* [MMHuman3D](https://github.com/open-mmlab/mmhuman3d): OpenMMLab 3D human parametric model toolbox and benchmark.
* [MMSelfSup](https://github.com/open-mmlab/mmselfsup): OpenMMLab self-supervised learning toolbox and benchmark.
* [MMRazor](https://github.com/open-mmlab/mmrazor): OpenMMLab model compression toolbox and benchmark.
+* [MMFewShot](https://github.com/open-mmlab/mmfewshot): OpenMMLab fewshot learning toolbox and benchmark.
+* [MMAction2](https://github.com/open-mmlab/mmaction2): OpenMMLab's next-generation action understanding toolbox and benchmark.
+* [MMTracking](https://github.com/open-mmlab/mmtracking): OpenMMLab video perception toolbox and benchmark.
+* [MMFlow](https://github.com/open-mmlab/mmflow): OpenMMLab optical flow toolbox and benchmark.
+* [MMEditing](https://github.com/open-mmlab/mmediting): OpenMMLab image and video editing toolbox.
+* [MMGeneration](https://github.com/open-mmlab/mmgeneration): OpenMMLab image and video generative models toolbox.
* [MMDeploy](https://github.com/open-mmlab/mmdeploy): OpenMMLab model deployment framework.
-* [MMRotate](https://github.com/open-mmlab/mmrotate): OpenMMLab rotated object detection toolbox and benchmark.
diff --git a/README_zh-CN.md b/README_zh-CN.md
index 116a85e36..4e5de4a04 100644
--- a/README_zh-CN.md
+++ b/README_zh-CN.md
@@ -59,6 +59,19 @@ https://user-images.githubusercontent.com/10410257/154433305-416d129b-60c8-44c7-
+## 更新日志
+
+最新的 **0.1.1** 版本已经在 2022.03.14 发布:
+
+- 为初学者添加了 [Colab 教程](demo/MMRotate_Tutorial.ipynb)
+- 支持了[大图推理](deom/huge_image_demo.py)
+- 支持了 HRSC 遥感数据集
+- 支持了混合精度训练
+- 添加了推理速度[统计工具](tools/analysis_tools/benchmark.py)
+- 添加了混淆矩阵[分析工具](tools/analysis_tools/confusion_matrix.py).
+
+如果想了解更多版本更新细节和历史信息,请阅读[更新日志](docs/en/changelog.md)。
+
## 安装
请参考 [安装指南](docs/zh_cn/install.md) 进行安装。
@@ -66,6 +79,7 @@ https://user-images.githubusercontent.com/10410257/154433305-416d129b-60c8-44c7-
## 教程
请参考 [get_started.md](docs/zh_cn/get_started.md) 了解 MMRotate 的基本使用。
+我们为初学者提供了 [colab 教程](demo/MMRotate_Tutorial.ipynb)。
MMRotate 也提供了其他更详细的教程:
* [学习基础知识](docs/zh_cn/intro.md)
@@ -141,23 +155,23 @@ MMRotate 是一款由不同学校和公司共同贡献的开源项目。我们
* [MMCV](https://github.com/open-mmlab/mmcv): OpenMMLab 计算机视觉基础库
* [MIM](https://github.com/open-mmlab/mim): MIM 是 OpenMMlab 项目、算法、模型的统一入口
-* [MMClassification](https://github.com/open-mmlab/mmclassification): OpenMMLab 图像分类工具箱与测试基准
-* [MMDetection](https://github.com/open-mmlab/mmdetection): OpenMMLab 检测工具箱与测试基准
-* [MMDetection3D](https://github.com/open-mmlab/mmdetection3d): OpenMMLab 新一代通用3D目标检测平台
-* [MMSegmentation](https://github.com/open-mmlab/mmsegmentation): OpenMMLab 语义分割工具箱与测试基准
-* [MMAction2](https://github.com/open-mmlab/mmaction2): OpenMMLab 新一代视频理解工具箱与测试基准
-* [MMTracking](https://github.com/open-mmlab/mmtracking): OpenMMLab 一体化视频目标感知平台
-* [MMPose](https://github.com/open-mmlab/mmpose): OpenMMLab 姿态估计工具箱与测试基准
-* [MMEditing](https://github.com/open-mmlab/mmediting): OpenMMLab 图像视频编辑工具箱
+* [MMClassification](https://github.com/open-mmlab/mmclassification): OpenMMLab 图像分类工具箱
+* [MMDetection](https://github.com/open-mmlab/mmdetection): OpenMMLab 目标检测工具箱
+* [MMDetection3D](https://github.com/open-mmlab/mmdetection3d): OpenMMLab 新一代通用 3D 目标检测平台
+* [MMRotate](https://github.com/open-mmlab/mmrotate): OpenMMLab 旋转框检测工具箱与测试基准
+* [MMSegmentation](https://github.com/open-mmlab/mmsegmentation): OpenMMLab 语义分割工具箱
* [MMOCR](https://github.com/open-mmlab/mmocr): OpenMMLab 全流程文字检测识别理解工具包
-* [MMGeneration](https://github.com/open-mmlab/mmgeneration): OpenMMLab 新一代生成模型工具箱
-* [MMFlow](https://github.com/open-mmlab/mmflow): OpenMMLab 光流估计工具箱与测试基准
-* [MMFewShot](https://github.com/open-mmlab/mmfewshot): OpenMMLab 少样本学习工具箱与测试基准
+* [MMPose](https://github.com/open-mmlab/mmpose): OpenMMLab 姿态估计工具箱
* [MMHuman3D](https://github.com/open-mmlab/mmhuman3d): OpenMMLab 人体参数化模型工具箱与测试基准
* [MMSelfSup](https://github.com/open-mmlab/mmselfsup): OpenMMLab 自监督学习工具箱与测试基准
* [MMRazor](https://github.com/open-mmlab/mmrazor): OpenMMLab 模型压缩工具箱与测试基准
+* [MMFewShot](https://github.com/open-mmlab/mmfewshot): OpenMMLab 少样本学习工具箱与测试基准
+* [MMAction2](https://github.com/open-mmlab/mmaction2): OpenMMLab 新一代视频理解工具箱
+* [MMTracking](https://github.com/open-mmlab/mmtracking): OpenMMLab 一体化视频目标感知平台
+* [MMFlow](https://github.com/open-mmlab/mmflow): OpenMMLab 光流估计工具箱与测试基准
+* [MMEditing](https://github.com/open-mmlab/mmediting): OpenMMLab 图像视频编辑工具箱
+* [MMGeneration](https://github.com/open-mmlab/mmgeneration): OpenMMLab 图片视频生成模型工具箱
* [MMDeploy](https://github.com/open-mmlab/mmdeploy): OpenMMLab 模型部署框架
-* [MMRotate](https://github.com/open-mmlab/mmrotate): OpenMMLab 旋转框检测工具箱与测试基准
## 欢迎加入 OpenMMLab 社区
diff --git a/configs/_base_/datasets/hrsc.py b/configs/_base_/datasets/hrsc.py
new file mode 100644
index 000000000..469f7574f
--- /dev/null
+++ b/configs/_base_/datasets/hrsc.py
@@ -0,0 +1,53 @@
+# dataset settings
+dataset_type = 'HRSCDataset'
+data_root = 'data/hrsc/'
+img_norm_cfg = dict(
+ mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True)
+train_pipeline = [
+ dict(type='LoadImageFromFile'),
+ dict(type='LoadAnnotations', with_bbox=True),
+ dict(type='RResize', img_scale=(800, 800)),
+ dict(type='RRandomFlip', flip_ratio=0.5),
+ dict(type='Normalize', **img_norm_cfg),
+ dict(type='Pad', size_divisor=32),
+ dict(type='DefaultFormatBundle'),
+ dict(type='Collect', keys=['img', 'gt_bboxes', 'gt_labels'])
+]
+test_pipeline = [
+ dict(type='LoadImageFromFile'),
+ dict(
+ type='MultiScaleFlipAug',
+ img_scale=(800, 800),
+ flip=False,
+ transforms=[
+ dict(type='RResize'),
+ dict(type='Normalize', **img_norm_cfg),
+ dict(type='Pad', size_divisor=32),
+ dict(type='DefaultFormatBundle'),
+ dict(type='Collect', keys=['img'])
+ ])
+]
+data = dict(
+ samples_per_gpu=2,
+ workers_per_gpu=2,
+ train=dict(
+ type=dataset_type,
+ classwise=False,
+ ann_file=data_root + 'ImageSets/trainval.txt',
+ ann_subdir=data_root + 'FullDataSet/Annotations/',
+ img_subdir=data_root + 'FullDataSet/AllImages/',
+ pipeline=train_pipeline),
+ val=dict(
+ type=dataset_type,
+ classwise=False,
+ ann_file=data_root + 'ImageSets/trainval.txt',
+ ann_subdir=data_root + 'FullDataSet/Annotations/',
+ img_subdir=data_root + 'FullDataSet/AllImages/',
+ pipeline=test_pipeline),
+ test=dict(
+ type=dataset_type,
+ classwise=False,
+ ann_file=data_root + 'ImageSets/test.txt',
+ ann_subdir=data_root + 'FullDataSet/Annotations/',
+ img_subdir=data_root + 'FullDataSet/AllImages/',
+ pipeline=test_pipeline))
diff --git a/configs/cfa/README.md b/configs/cfa/README.md
index 87972ee99..f3ebc1669 100644
--- a/configs/cfa/README.md
+++ b/configs/cfa/README.md
@@ -1,22 +1,25 @@
-# [Beyond Bounding-Box: Convex-hull Feature Adaptation for Oriented and Densely Packed Object Detection.](https://openaccess.thecvf.com/content/CVPR2021/papers/Guo_Beyond_Bounding-Box_Convex-Hull_Feature_Adaptation_for_Oriented_and_Densely_Packed_CVPR_2021_paper.pdf)
+# CFA
+> [Beyond Bounding-Box: Convex-hull Feature Adaptation for Oriented and Densely Packed Object Detection.](https://openaccess.thecvf.com/content/CVPR2021/papers/Guo_Beyond_Bounding-Box_Convex-Hull_Feature_Adaptation_for_Oriented_and_Densely_Packed_CVPR_2021_paper.pdf)
+
## Abstract
-![illustration](https://raw.githubusercontent.com/zytx121/image-host/main/imgs/cfa.png)
+
+
+
Detecting oriented and densely packed objects remains challenging for spatial feature aliasing caused by the intersection of reception fields between objects. In this paper, we propose a convex-hull feature adaptation (CFA) approach for configuring convolutional features in accordance with oriented and densely packed object layouts. CFA is rooted in convex-hull feature representation, which defines a set of dynamically predicted feature points guided by the convex intersection over union (CIoU) to bound the extent of objects. CFA pursues optimal feature assignment by constructing convex-hull sets and dynamically splitting positive or negative convex-hulls. By simultaneously considering overlapping convex-hulls and objects and penalizing convex-hulls shared by multiple objects, CFA alleviates spatial feature aliasing towards optimal feature adaptation. Experiments on DOTA and SKU110KR datasets show that CFA significantly outperforms the baseline approach, achieving new state-of-the-art detection performance.
## Results and models
-### DOTA1.0
+DOTA1.0
-#### RepPoints
| Backbone | mAP | Angle | lr schd | Mem (GB) | Inf Time (fps) | Aug | Batch Size | Configs | Download |
|:------------:|:----------:|:-----------:|:---------:|:---------:|:---------:|:---------:|:---------:|:---------:|:-------------:|
-| ResNet50 (1024,1024,200) | 59.44 | oc | 1x | 3.45 | 15.9 | - | 2 | [rotated_reppoints_r50_fpn_1x_dota_oc](../rotated_reppoints/rotated_reppoints_r50_fpn_1x_dota_oc.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/rotated_reppoints/rotated_reppoints_r50_fpn_1x_dota_oc/rotated_reppoints_r50_fpn_1x_dota_oc-d38ce217.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/rotated_reppoints/rotated_reppoints_r50_fpn_1x_dota_oc/rotated_reppoints_r50_fpn_1x_dota_oc_20220205_145010.log.json)
-| ResNet50 (1024,1024,200) | 69.63 | le135 | 1x | 3.45 | 15.7 | - | 2 | [cfa_r50_fpn_1x_dota_le135](./cfa_r50_fpn_1x_dota_le135.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/cfa/cfa_r50_fpn_1x_dota_le135/cfa_r50_fpn_1x_dota_le135-aed1cbc6.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/cfa/cfa_r50_fpn_1x_dota_le135/cfa_r50_fpn_1x_dota_le135_20220205_144859.log.json)
-| ResNet50 (1024,1024,200) | 73.45 | oc | 40e | 3.45 | 15.7 | - | 2 | [cfa_r50_fpn_40e_dota_oc](./cfa_r50_fpn_40e_dota_oc.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/cfa/cfa_r50_fpn_40e_dota_oc/cfa_r50_fpn_40e_dota_oc-2f387232.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/cfa/cfa_r50_fpn_40e_dota_oc/cfa_r50_fpn_40e_dota_oc_20220209_171237.log.json)
+| ResNet50 (1024,1024,200) | 59.44 | oc | 1x | 3.45 | 15.6 | - | 2 | [rotated_reppoints_r50_fpn_1x_dota_oc](../rotated_reppoints/rotated_reppoints_r50_fpn_1x_dota_oc.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/rotated_reppoints/rotated_reppoints_r50_fpn_1x_dota_oc/rotated_reppoints_r50_fpn_1x_dota_oc-d38ce217.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/rotated_reppoints/rotated_reppoints_r50_fpn_1x_dota_oc/rotated_reppoints_r50_fpn_1x_dota_oc_20220205_145010.log.json)
+| ResNet50 (1024,1024,200) | 69.63 | le135 | 1x | 3.45 | 16.1 | - | 2 | [cfa_r50_fpn_1x_dota_le135](./cfa_r50_fpn_1x_dota_le135.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/cfa/cfa_r50_fpn_1x_dota_le135/cfa_r50_fpn_1x_dota_le135-aed1cbc6.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/cfa/cfa_r50_fpn_1x_dota_le135/cfa_r50_fpn_1x_dota_le135_20220205_144859.log.json)
+| ResNet50 (1024,1024,200) | 73.45 | oc | 40e | 3.45 | 16.1 | - | 2 | [cfa_r50_fpn_40e_dota_oc](./cfa_r50_fpn_40e_dota_oc.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/cfa/cfa_r50_fpn_40e_dota_oc/cfa_r50_fpn_40e_dota_oc-2f387232.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/cfa/cfa_r50_fpn_40e_dota_oc/cfa_r50_fpn_40e_dota_oc_20220209_171237.log.json)
## Citation
diff --git a/configs/g_reppoints/README.md b/configs/g_reppoints/README.md
index 6f47f59af..d4bc7bdf1 100644
--- a/configs/g_reppoints/README.md
+++ b/configs/g_reppoints/README.md
@@ -1,4 +1,5 @@
-# G-Rep: Gaussian Representation for Arbitrary-Oriented Object Detection.
+# G-Rep
+> > G-Rep: Gaussian Representation for Arbitrary-Oriented Object Detection.
## Abstract
@@ -7,13 +8,12 @@ Core code will release later.
## Results and models
-### DOTA1.0
+DOTA1.0
-#### RepPoints
| Backbone | mAP | Angle | lr schd | Mem (GB) | Inf Time (fps) | Aug | Batch Size | Configs | Download |
|:------------:|:----------:|:-----------:|:---------:|:---------:|:---------:|:---------:|:---------:|:---------:|:-------------:|
-| ResNet50 (1024,1024,200) | 59.44 | oc | 1x | 3.45 | 15.9 | - | 2 | [rotated_reppoints_r50_fpn_1x_dota_oc](../rotated_reppoints/rotated_reppoints_r50_fpn_1x_dota_oc.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/rotated_reppoints/rotated_reppoints_r50_fpn_1x_dota_oc/rotated_reppoints_r50_fpn_1x_dota_oc-d38ce217.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/rotated_reppoints/rotated_reppoints_r50_fpn_1x_dota_oc/rotated_reppoints_r50_fpn_1x_dota_oc_20220205_145010.log.json)
-| ResNet50 (1024,1024,200) | 69.49 | le135 | 1x | 4.05 | 10.5 | - | 2 | [g_reppoints_r50_fpn_1x_dota_le135](./g_reppoints_r50_fpn_1x_dota_le135.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/g_reppoints/g_reppoints_r50_fpn_1x_dota_le135/g_reppoints_r50_fpn_1x_dota_le135-b840eed7.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/g_reppoints/g_reppoints_r50_fpn_1x_dota_le135/g_reppoints_r50_fpn_1x_dota_le135_20220202_233631.log.json)
+| ResNet50 (1024,1024,200) | 59.44 | oc | 1x | 3.45 | 15.6 | - | 2 | [rotated_reppoints_r50_fpn_1x_dota_oc](../rotated_reppoints/rotated_reppoints_r50_fpn_1x_dota_oc.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/rotated_reppoints/rotated_reppoints_r50_fpn_1x_dota_oc/rotated_reppoints_r50_fpn_1x_dota_oc-d38ce217.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/rotated_reppoints/rotated_reppoints_r50_fpn_1x_dota_oc/rotated_reppoints_r50_fpn_1x_dota_oc_20220205_145010.log.json)
+| ResNet50 (1024,1024,200) | 69.49 | le135 | 1x | 4.05 | 8.6 | - | 2 | [g_reppoints_r50_fpn_1x_dota_le135](./g_reppoints_r50_fpn_1x_dota_le135.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/g_reppoints/g_reppoints_r50_fpn_1x_dota_le135/g_reppoints_r50_fpn_1x_dota_le135-b840eed7.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/g_reppoints/g_reppoints_r50_fpn_1x_dota_le135/g_reppoints_r50_fpn_1x_dota_le135_20220202_233631.log.json)
## Citation
diff --git a/configs/gliding_vertex/README.md b/configs/gliding_vertex/README.md
index 0e603bc1a..65a91f135 100644
--- a/configs/gliding_vertex/README.md
+++ b/configs/gliding_vertex/README.md
@@ -1,21 +1,24 @@
-# [Gliding Vertex on the Horizontal Bounding Box for Multi-Oriented Object Detection](https://arxiv.org/pdf/1911.09358.pdf)
+# Gliding Vertex
+> [Gliding Vertex on the Horizontal Bounding Box for Multi-Oriented Object Detection](https://arxiv.org/pdf/1911.09358.pdf)
## Abstract
-![illustration](https://raw.githubusercontent.com/zytx121/image-host/main/imgs/gv.png)
+
+
+
+
Object detection has recently experienced substantial progress. Yet, the widely adopted horizontal bounding box representation is not appropriate for ubiquitous oriented objects such as objects in aerial images and scene texts. In this paper, we propose a simple yet effective framework to detect multi-oriented objects. Instead of directly regressing the four vertices, we glide the vertex of the horizontal bounding box on each corresponding side to accurately describe a multi-oriented object. Specifically, We regress four length ratios characterizing the relative gliding offset on each corresponding side. This may facilitate the offset learning and avoid the confusion issue of sequential label points for oriented objects. To further remedy the confusion issue for nearly horizontal objects, we also introduce an obliquity factor based on area ratio between the object and its horizontal bounding box, guiding the selection of horizontal or oriented detection for each object. We add these five extra target variables to the regression head of rotated faster R-CNN, which requires ignorable extra computation time. Extensive experimental results demonstrate that without bells and whistles, the proposed method achieves superior performances on multiple multi-oriented object detection benchmarks including object detection in aerial images, scene text detection, pedestrian detection in fisheye images.
## Results and models
-### DOTA1.0
-
+DOTA1.0
| Backbone | mAP | Angle | lr schd | Mem (GB) | Inf Time (fps) | Aug | Batch Size | Configs | Download |
|:------------:|:----------:|:-----------:|:---------:|:---------:|:---------:|:---------:|:---------:|:---------:|:-------------:|
-| ResNet50 (1024,1024,200) | 73.40 | le90 | 1x | 8.46 | 16.0 | - | 2 | [rotated_faster_rcnn_r50_fpn_1x_dota_le90](../rotated_faster_rcnn/rotated_faster_rcnn_r50_fpn_1x_dota_le90.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/rotated_faster_rcnn/rotated_faster_rcnn_r50_fpn_1x_dota_le90/rotated_faster_rcnn_r50_fpn_1x_dota_le90-0393aa5c.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/rotated_faster_rcnn/rotated_faster_rcnn_r50_fpn_1x_dota_le90/rotated_faster_rcnn_r50_fpn_1x_dota_le90_20220131_082156.log.json)
-| ResNet50 (1024,1024,200) | 73.23 | le90 | 1x | 8.45 | 15.6 | - | 2 | [gliding_vertex_r50_fpn_1x_dota_le90](./gliding_vertex_r50_fpn_1x_dota_le90.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/gliding_vertex/gliding_vertex_r50_fpn_1x_dota_le90/gliding_vertex_r50_fpn_1x_dota_le90-12e7423c.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/gliding_vertex/gliding_vertex_r50_fpn_1x_dota_le90/gliding_vertex_r50_fpn_1x_dota_le90_20220129_085529.log.json)
+| ResNet50 (1024,1024,200) | 73.40 | le90 | 1x | 8.46 | 16.5 | - | 2 | [rotated_faster_rcnn_r50_fpn_1x_dota_le90](../rotated_faster_rcnn/rotated_faster_rcnn_r50_fpn_1x_dota_le90.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/rotated_faster_rcnn/rotated_faster_rcnn_r50_fpn_1x_dota_le90/rotated_faster_rcnn_r50_fpn_1x_dota_le90-0393aa5c.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/rotated_faster_rcnn/rotated_faster_rcnn_r50_fpn_1x_dota_le90/rotated_faster_rcnn_r50_fpn_1x_dota_le90_20220131_082156.log.json)
+| ResNet50 (1024,1024,200) | 73.23 | le90 | 1x | 8.45 | 16.4 | - | 2 | [gliding_vertex_r50_fpn_1x_dota_le90](./gliding_vertex_r50_fpn_1x_dota_le90.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/gliding_vertex/gliding_vertex_r50_fpn_1x_dota_le90/gliding_vertex_r50_fpn_1x_dota_le90-12e7423c.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/gliding_vertex/gliding_vertex_r50_fpn_1x_dota_le90/gliding_vertex_r50_fpn_1x_dota_le90_20220129_085529.log.json)
## Citation
diff --git a/configs/gwd/README.md b/configs/gwd/README.md
index 139ceb689..f615373c4 100644
--- a/configs/gwd/README.md
+++ b/configs/gwd/README.md
@@ -1,21 +1,23 @@
-# [Rethinking Rotated Object Detection with Gaussian Wasserstein Distance Loss](https://arxiv.org/pdf/2101.11952.pdf)
+# GWD
+> [Rethinking Rotated Object Detection with Gaussian Wasserstein Distance Loss](https://arxiv.org/pdf/2101.11952.pdf)
## Abstract
-![illustration](https://raw.githubusercontent.com/zytx121/image-host/main/imgs/gwd.png)
+
+
+
Boundary discontinuity and its inconsistency to the final detection metric have been the bottleneck for rotating detection regression loss design. In this paper, we propose a novel regression loss based on Gaussian Wasserstein distance as a fundamental approach to solve the problem. Specifically, the rotated bounding box is converted to a 2- D Gaussian distribution, which enables to approximate the indifferentiable rotational IoU induced loss by the Gaussian Wasserstein distance (GWD) which can be learned efficiently by gradient back-propagation. GWD can still be informative for learning even there is no overlapping between two rotating bounding boxes which is often the case for small object detection. Thanks to its three unique properties, GWD can also elegantly solve the boundary discontinuity and square-like problem regardless how the bounding box is defined. Experiments on five datasets using different detectors show the effectiveness of our approach.
## Results and models
-### DOTA1.0
+DOTA1.0
-#### RotatedRetinaNet
| Backbone | mAP | Angle | lr schd | Mem (GB) | Inf Time (fps) | Aug | Batch Size | Configs | Download |
|:------------:|:----------:|:-----------:|:---------:|:---------:|:---------:|:---------:|:---------:|:---------:|:-------------:|
-| ResNet50 (1024,1024,200) | 64.55 | oc | 1x | 3.38 | 14.8 | - | 2 | [rotated_retinanet_hbb_r50_fpn_1x_dota_oc](../rotated_retinanet/rotated_retinanet_hbb_r50_fpn_1x_dota_oc.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/rotated_retinanet/rotated_retinanet_hbb_r50_fpn_1x_dota_oc/rotated_retinanet_hbb_r50_fpn_1x_dota_oc-e8a7c7df.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/rotated_retinanet/rotated_retinanet_hbb_r50_fpn_1x_dota_oc/rotated_retinanet_hbb_r50_fpn_1x_dota_oc_20220121_095315.log.json)
-| ResNet50 (1024,1024,200) | 69.55 | oc | 1x | 3.39 | 14.8 | - | 2 | [rotated_retinanet_hbb_gwd_r50_fpn_1x_dota_oc](./rotated_retinanet_hbb_gwd_r50_fpn_1x_dota_oc.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/gwd/rotated_retinanet_hbb_gwd_r50_fpn_1x_dota_oc/rotated_retinanet_hbb_gwd_r50_fpn_1x_dota_oc-41fd7805.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/gwd/rotated_retinanet_hbb_gwd_r50_fpn_1x_dota_oc/rotated_retinanet_hbb_gwd_r50_fpn_1x_dota_oc_20220120_152421.log.json)
+| ResNet50 (1024,1024,200) | 64.55 | oc | 1x | 3.38 | 15.7 | - | 2 | [rotated_retinanet_hbb_r50_fpn_1x_dota_oc](../rotated_retinanet/rotated_retinanet_hbb_r50_fpn_1x_dota_oc.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/rotated_retinanet/rotated_retinanet_hbb_r50_fpn_1x_dota_oc/rotated_retinanet_hbb_r50_fpn_1x_dota_oc-e8a7c7df.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/rotated_retinanet/rotated_retinanet_hbb_r50_fpn_1x_dota_oc/rotated_retinanet_hbb_r50_fpn_1x_dota_oc_20220121_095315.log.json)
+| ResNet50 (1024,1024,200) | 69.55 | oc | 1x | 3.39 | 15.5 | - | 2 | [rotated_retinanet_hbb_gwd_r50_fpn_1x_dota_oc](./rotated_retinanet_hbb_gwd_r50_fpn_1x_dota_oc.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/gwd/rotated_retinanet_hbb_gwd_r50_fpn_1x_dota_oc/rotated_retinanet_hbb_gwd_r50_fpn_1x_dota_oc-41fd7805.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/gwd/rotated_retinanet_hbb_gwd_r50_fpn_1x_dota_oc/rotated_retinanet_hbb_gwd_r50_fpn_1x_dota_oc_20220120_152421.log.json)
## Citation
diff --git a/configs/kfiou/README.md b/configs/kfiou/README.md
index c7a68b935..8dde6fc5e 100644
--- a/configs/kfiou/README.md
+++ b/configs/kfiou/README.md
@@ -1,8 +1,12 @@
-# [The KFIoU Loss for Rotated Object Detection](https://arxiv.org/pdf/2101.11952.pdf)
+# KFIoU
+> [The KFIoU Loss for Rotated Object Detection](https://arxiv.org/pdf/2101.11952.pdf)
## Abstract
-![illustration](https://raw.githubusercontent.com/zytx121/image-host/main/imgs/kfiou.png)
+
+
+
+
Differing from the well-developed horizontal object detection area whereby the computing-friendly IoU based loss is
readily adopted and well fits with the detection metrics. In contrast, rotation detectors often involve a more
@@ -19,20 +23,18 @@ base detectors show the effectiveness of our approach.
## Results and models
-### DOTA1.0
+DOTA1.0
-#### RotatedRetinaNet
| Backbone | mAP | Angle | lr schd | Mem (GB) | Inf Time (fps) | Aug | Batch Size | Configs | Download |
|:------------:|:----------:|:-----------:|:---------:|:---------:|:---------:|:---------:|:---------:|:---------:|:-------------:|
-| ResNet50 (1024,1024,200) | 64.55 | oc | 1x | 3.38 | 14.8 | - | 2 | [rotated_retinanet_hbb_r50_fpn_1x_dota_oc](../rotated_retinanet/rotated_retinanet_hbb_r50_fpn_1x_dota_oc.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/rotated_retinanet/rotated_retinanet_hbb_r50_fpn_1x_dota_oc/rotated_retinanet_hbb_r50_fpn_1x_dota_oc-e8a7c7df.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/rotated_retinanet/rotated_retinanet_hbb_r50_fpn_1x_dota_oc/rotated_retinanet_hbb_r50_fpn_1x_dota_oc_20220121_095315.log.json)
-| ResNet50 (1024,1024,200) | 69.60 | le90 | 1x | 3.38 | 14.8 | - | 2 | [rotated_retinanet_hbb_kfiou_r50_fpn_1x_dota_le90](./rotated_retinanet_hbb_kfiou_r50_fpn_1x_dota_le90.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/kfiou/rotated_retinanet_hbb_kfiou_r50_fpn_1x_dota_le90/rotated_retinanet_hbb_kfiou_r50_fpn_1x_dota_le90-03e02f75.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/kfiou/rotated_retinanet_hbb_kfiou_r50_fpn_1x_dota_le90/rotated_retinanet_hbb_kfiou_r50_fpn_1x_dota_le90_20220209_173225.log.json)
-| ResNet50 (1024,1024,200) | 69.76 | oc | 1x | 3.39 | 15.1 | - | 2 | [rotated_retinanet_hbb_kfiou_r50_fpn_1x_dota_oc](./rotated_retinanet_hbb_kfiou_r50_fpn_1x_dota_oc.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/kfiou/rotated_retinanet_hbb_kfiou_r50_fpn_1x_dota_oc/rotated_retinanet_hbb_kfiou_r50_fpn_1x_dota_oc-c00be030.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/kfiou/rotated_retinanet_hbb_kfiou_r50_fpn_1x_dota_oc/rotated_retinanet_hbb_kfiou_r50_fpn_1x_dota_oc_20220126_081643.log.json)
-| ResNet50 (1024,1024,200) | 69.77 | le135 | 1x | 3.38 | 15.1 | - | 2 | [rotated_retinanet_hbb_kfiou_r50_fpn_1x_dota_le135](./rotated_retinanet_hbb_kfiou_r50_fpn_1x_dota_le135.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/kfiou/rotated_retinanet_hbb_kfiou_r50_fpn_1x_dota_le135/rotated_retinanet_hbb_kfiou_r50_fpn_1x_dota_le135-0eaa4156.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/kfiou/rotated_retinanet_hbb_kfiou_r50_fpn_1x_dota_le135/rotated_retinanet_hbb_kfiou_r50_fpn_1x_dota_le135_20220209_173257.log.json)
+| ResNet50 (1024,1024,200) | 64.55 | oc | 1x | 3.38 | 15.7 | - | 2 | [rotated_retinanet_hbb_r50_fpn_1x_dota_oc](../rotated_retinanet/rotated_retinanet_hbb_r50_fpn_1x_dota_oc.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/rotated_retinanet/rotated_retinanet_hbb_r50_fpn_1x_dota_oc/rotated_retinanet_hbb_r50_fpn_1x_dota_oc-e8a7c7df.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/rotated_retinanet/rotated_retinanet_hbb_r50_fpn_1x_dota_oc/rotated_retinanet_hbb_r50_fpn_1x_dota_oc_20220121_095315.log.json)
+| ResNet50 (1024,1024,200) | 69.60 | le90 | 1x | 3.38 | 15.1 | - | 2 | [rotated_retinanet_hbb_kfiou_r50_fpn_1x_dota_le90](./rotated_retinanet_hbb_kfiou_r50_fpn_1x_dota_le90.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/kfiou/rotated_retinanet_hbb_kfiou_r50_fpn_1x_dota_le90/rotated_retinanet_hbb_kfiou_r50_fpn_1x_dota_le90-03e02f75.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/kfiou/rotated_retinanet_hbb_kfiou_r50_fpn_1x_dota_le90/rotated_retinanet_hbb_kfiou_r50_fpn_1x_dota_le90_20220209_173225.log.json)
+| ResNet50 (1024,1024,200) | 69.76 | oc | 1x | 3.39 | 15.6 | - | 2 | [rotated_retinanet_hbb_kfiou_r50_fpn_1x_dota_oc](./rotated_retinanet_hbb_kfiou_r50_fpn_1x_dota_oc.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/kfiou/rotated_retinanet_hbb_kfiou_r50_fpn_1x_dota_oc/rotated_retinanet_hbb_kfiou_r50_fpn_1x_dota_oc-c00be030.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/kfiou/rotated_retinanet_hbb_kfiou_r50_fpn_1x_dota_oc/rotated_retinanet_hbb_kfiou_r50_fpn_1x_dota_oc_20220126_081643.log.json)
+| ResNet50 (1024,1024,200) | 69.77 | le135 | 1x | 3.38 | 15.3 | - | 2 | [rotated_retinanet_hbb_kfiou_r50_fpn_1x_dota_le135](./rotated_retinanet_hbb_kfiou_r50_fpn_1x_dota_le135.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/kfiou/rotated_retinanet_hbb_kfiou_r50_fpn_1x_dota_le135/rotated_retinanet_hbb_kfiou_r50_fpn_1x_dota_le135-0eaa4156.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/kfiou/rotated_retinanet_hbb_kfiou_r50_fpn_1x_dota_le135/rotated_retinanet_hbb_kfiou_r50_fpn_1x_dota_le135_20220209_173257.log.json)
-#### R3Det
| Backbone | mAP | Angle | lr schd | Mem (GB) | Inf Time (fps) | Aug | Batch Size | Configs | Download |
|:------------:|:----------:|:-----------:|:---------:|:---------:|:---------:|:---------:|:---------:|:---------:|:-------------:|
-| ResNet50 (1024,1024,200) | 69.80 | oc | 1x | 3.54 | 12.1 | - | 2 | [r3det_r50_fpn_1x_dota_oc](../r3det/r3det_r50_fpn_1x_dota_oc.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/r3det/r3det_r50_fpn_1x_dota_oc/r3det_r50_fpn_1x_dota_oc-b1fb045c.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/r3det/r3det_r50_fpn_1x_dota_oc/r3det_r50_fpn_1x_dota_oc_20220126_191226.log.json)
+| ResNet50 (1024,1024,200) | 69.80 | oc | 1x | 3.54 | 12.4 | - | 2 | [r3det_r50_fpn_1x_dota_oc](../r3det/r3det_r50_fpn_1x_dota_oc.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/r3det/r3det_r50_fpn_1x_dota_oc/r3det_r50_fpn_1x_dota_oc-b1fb045c.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/r3det/r3det_r50_fpn_1x_dota_oc/r3det_r50_fpn_1x_dota_oc_20220126_191226.log.json)
| ResNet50 (1024,1024,200) | 72.68 | oc | 1x | 3.62 | 12.2 | - | 2 | [r3det_kfiou_ln_r50_fpn_1x_dota_oc](./r3det_kfiou_ln_r50_fpn_1x_dota_oc.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/kfiou/r3det_kfiou_ln_r50_fpn_1x_dota_oc/r3det_kfiou_ln_r50_fpn_1x_dota_oc-8e7f049d.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/kfiou/r3det_kfiou_ln_r50_fpn_1x_dota_oc/r3det_kfiou_ln_r50_fpn_1x_dota_oc_20220123_074507.log.json)
diff --git a/configs/kfiou/r3det_kfiou_ln_swin_tiny_adamw_fpn_1x_dota_ms_rr_oc.py b/configs/kfiou/r3det_kfiou_ln_swin_tiny_adamw_fpn_1x_dota_ms_rr_oc.py
index 961ddaac1..0d2522b74 100644
--- a/configs/kfiou/r3det_kfiou_ln_swin_tiny_adamw_fpn_1x_dota_ms_rr_oc.py
+++ b/configs/kfiou/r3det_kfiou_ln_swin_tiny_adamw_fpn_1x_dota_ms_rr_oc.py
@@ -1,5 +1,7 @@
_base_ = ['./r3det_kfiou_ln_r50_fpn_1x_dota_oc.py']
+pretrained = 'https://github.com/SwinTransformer/storage/releases/download/v1.0.0/swin_tiny_patch4_window7_224.pth' # noqa
+
data_root = '../datasets/split_ms_dota1_0/'
angle_version = 'le90'
model = dict(
@@ -20,10 +22,7 @@
out_indices=(0, 1, 2, 3),
with_cp=False,
convert_weights=True,
- init_cfg=dict(
- type='Pretrained',
- checkpoint='torch/hub/checkpoints/'
- 'swin_tiny_patch4_window7_224.pth')),
+ init_cfg=dict(type='Pretrained', checkpoint=pretrained)),
neck=dict(
_delete_=True,
type='FPN',
diff --git a/configs/kfiou/roi_trans_kfiou_ln_swin_tiny_fpn_1x_dota_le90.py b/configs/kfiou/roi_trans_kfiou_ln_swin_tiny_fpn_1x_dota_le90.py
index bf374a8fa..755f93e52 100644
--- a/configs/kfiou/roi_trans_kfiou_ln_swin_tiny_fpn_1x_dota_le90.py
+++ b/configs/kfiou/roi_trans_kfiou_ln_swin_tiny_fpn_1x_dota_le90.py
@@ -1,5 +1,7 @@
_base_ = ['./roi_trans_kfiou_ln_r50_fpn_1x_dota_le90.py']
+pretrained = 'https://github.com/SwinTransformer/storage/releases/download/v1.0.0/swin_tiny_patch4_window7_224.pth' # noqa
+
model = dict(
backbone=dict(
_delete_=True,
@@ -18,10 +20,7 @@
out_indices=(0, 1, 2, 3),
with_cp=False,
convert_weights=True,
- init_cfg=dict(
- type='Pretrained',
- checkpoint='torch/hub/checkpoints/'
- 'swin_tiny_patch4_window7_224.pth')),
+ init_cfg=dict(type='Pretrained', checkpoint=pretrained)),
neck=dict(
_delete_=True,
type='FPN',
diff --git a/configs/kld/README.md b/configs/kld/README.md
index d38bf3b70..ac519959b 100644
--- a/configs/kld/README.md
+++ b/configs/kld/README.md
@@ -1,32 +1,34 @@
-# [Learning High-Precision Bounding Box for Rotated Object Detection via Kullback-Leibler Divergence](https://arxiv.org/pdf/2106.01883.pdf)
+# KLD
+> [Learning High-Precision Bounding Box for Rotated Object Detection via Kullback-Leibler Divergence](https://arxiv.org/pdf/2106.01883.pdf)
## Abstract
-![illustration](https://raw.githubusercontent.com/zytx121/image-host/main/imgs/kld.png)
+
+
+
Existing rotated object detectors are mostly inherited from the horizontal detection paradigm, as the latter has evolved into a well-developed area. However, these detectors are difficult to perform prominently in high-precision detection due to the limitation of current regression loss design, especially for objects with large aspect ratios. Taking the perspective that horizontal detection is a special case for rotated object detection, in this paper, we are motivated to change the design of rotation regression loss from induction paradigm to deduction methodology, in terms of the relation between rotation and horizontal detection. We show that one essential challenge is how to modulate the coupled parameters in the rotation regression loss, as such the estimated parameters can influence to each other during the dynamic joint optimization, in an adaptive and synergetic way. Specifically, we first convert the rotated bounding box into a 2-D Gaussian distribution, and then calculate the Kullback-Leibler Divergence (KLD) between the Gaussian distributions as the regression loss. By analyzing the gradient of each parameter, we show that KLD (and its derivatives) can dynamically adjust the parameter gradients according to the characteristics of the object. For instance, it will adjust the importance (gradient weight) of the angle parameter according to the aspect ratio. This mechanism can be vital for high-precision detection as a slight angle error would cause a serious accuracy drop for large aspect ratios objects. More importantly, we have proved that KLD is scale invariant. We further show that the KLD loss can be degenerated into the popular $l_{n}$-norm loss for horizontal detection. Experimental results on seven datasets using different detectors show its consistent superiority
## Results and models
-### DOTA1.0
+DOTA1.0
-#### RotatedRetinaNet
| Backbone | mAP | Angle | lr schd | Mem (GB) | Inf Time (fps) | Aug | Batch Size | Configs | Download |
|:------------:|:----------:|:-----------:|:---------:|:---------:|:---------:|:---------:|:---------:|:---------:|:-------------:|
-| ResNet50 (1024,1024,200) | 64.55 | oc | 1x | 3.38 | 14.8 | - | 2 | [rotated_retinanet_hbb_r50_fpn_1x_dota_oc](../rotated_retinanet/rotated_retinanet_hbb_r50_fpn_1x_dota_oc.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/rotated_retinanet/rotated_retinanet_hbb_r50_fpn_1x_dota_oc/rotated_retinanet_hbb_r50_fpn_1x_dota_oc-e8a7c7df.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/rotated_retinanet/rotated_retinanet_hbb_r50_fpn_1x_dota_oc/rotated_retinanet_hbb_r50_fpn_1x_dota_oc_20220121_095315.log.json)
-| ResNet50 (1024,1024,200) | 69.94 | oc | 1x | 3.39 | 14.9 | - | 2 | [rotated_retinanet_hbb_kld_r50_fpn_1x_dota_oc](./rotated_retinanet_hbb_kld_r50_fpn_1x_dota_oc.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/kld/rotated_retinanet_hbb_kld_r50_fpn_1x_dota_oc/rotated_retinanet_hbb_kld_r50_fpn_1x_dota_oc-49c1f937.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/kld/rotated_retinanet_hbb_kld_r50_fpn_1x_dota_oc/rotated_retinanet_hbb_kld_r50_fpn_1x_dota_oc_20220125_201832.log.json)
+| ResNet50 (1024,1024,200) | 64.55 | oc | 1x | 3.38 | 15.7 | - | 2 | [rotated_retinanet_hbb_r50_fpn_1x_dota_oc](../rotated_retinanet/rotated_retinanet_hbb_r50_fpn_1x_dota_oc.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/rotated_retinanet/rotated_retinanet_hbb_r50_fpn_1x_dota_oc/rotated_retinanet_hbb_r50_fpn_1x_dota_oc-e8a7c7df.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/rotated_retinanet/rotated_retinanet_hbb_r50_fpn_1x_dota_oc/rotated_retinanet_hbb_r50_fpn_1x_dota_oc_20220121_095315.log.json)
+| ResNet50 (1024,1024,200) | 69.94 | oc | 1x | 3.39 | 15.6 | - | 2 | [rotated_retinanet_hbb_kld_r50_fpn_1x_dota_oc](./rotated_retinanet_hbb_kld_r50_fpn_1x_dota_oc.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/kld/rotated_retinanet_hbb_kld_r50_fpn_1x_dota_oc/rotated_retinanet_hbb_kld_r50_fpn_1x_dota_oc-49c1f937.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/kld/rotated_retinanet_hbb_kld_r50_fpn_1x_dota_oc/rotated_retinanet_hbb_kld_r50_fpn_1x_dota_oc_20220125_201832.log.json)
| Backbone | mAP | Angle | lr schd | Mem (GB) | Inf Time (fps) | Aug | Batch Size | Configs | Download |
|:------------:|:----------:|:-----------:|:---------:|:---------:|:---------:|:---------:|:---------:|:---------:|:-------------:|
-| ResNet50 (1024,1024,200) | 69.80 | oc | 1x | 3.54 | 12.1 | - | 2 | [r3det_r50_fpn_1x_dota_oc](../r3det/r3det_r50_fpn_1x_dota_oc.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/r3det/r3det_r50_fpn_1x_dota_oc/r3det_r50_fpn_1x_dota_oc-b1fb045c.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/r3det/r3det_r50_fpn_1x_dota_oc/r3det_r50_fpn_1x_dota_oc_20220126_191226.log.json)
-| ResNet50 (1024,1024,200) | 71.83 | oc | 1x | 3.54 | 12.2 | - | 2 | [r3det_kld_r50_fpn_1x_dota_oc](./r3det_kld_r50_fpn_1x_dota_oc.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/kld/r3det_kld_r50_fpn_1x_dota_oc/r3det_kld_r50_fpn_1x_dota_oc-31866226.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/kld/r3det_kld_r50_fpn_1x_dota_oc/r3det_kld_r50_fpn_1x_dota_oc_20220210_114049.log.json)
+| ResNet50 (1024,1024,200) | 69.80 | oc | 1x | 3.54 | 12.4 | - | 2 | [r3det_r50_fpn_1x_dota_oc](../r3det/r3det_r50_fpn_1x_dota_oc.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/r3det/r3det_r50_fpn_1x_dota_oc/r3det_r50_fpn_1x_dota_oc-b1fb045c.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/r3det/r3det_r50_fpn_1x_dota_oc/r3det_r50_fpn_1x_dota_oc_20220126_191226.log.json)
+| ResNet50 (1024,1024,200) | 71.83 | oc | 1x | 3.54 | 12.4 | - | 2 | [r3det_kld_r50_fpn_1x_dota_oc](./r3det_kld_r50_fpn_1x_dota_oc.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/kld/r3det_kld_r50_fpn_1x_dota_oc/r3det_kld_r50_fpn_1x_dota_oc-31866226.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/kld/r3det_kld_r50_fpn_1x_dota_oc/r3det_kld_r50_fpn_1x_dota_oc_20220210_114049.log.json)
+
-#### R3Det*
| Backbone | mAP | Angle | lr schd | Mem (GB) | Inf Time (fps) | Aug | Batch Size | Configs | Download |
|:------------:|:----------:|:-----------:|:---------:|:---------:|:---------:|:---------:|:---------:|:---------:|:-------------:|
-| ResNet50 (1024,1024,200) | 70.18 | oc | 1x | 3.23 | 15.1 | - | 2 | [r3det_tiny_r50_fpn_1x_dota_oc](../r3det/r3det_tiny_r50_fpn_1x_dota_oc.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/r3det/r3det_tiny_r50_fpn_1x_dota_oc/r3det_tiny_r50_fpn_1x_dota_oc-c98a616c.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/r3det/r3det_tiny_r50_fpn_1x_dota_oc/r3det_tiny_r50_fpn_1x_dota_oc_20220209_171624.log.json)
-| ResNet50 (1024,1024,200) | 72.76 | oc | 1x | 3.44 | 13.6 | - | 2 | [r3det_tiny_kld_r50_fpn_1x_dota_oc](./r3det_tiny_kld_r50_fpn_1x_dota_oc.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/kld/r3det_tiny_kld_r50_fpn_1x_dota_oc/r3det_tiny_kld_r50_fpn_1x_dota_oc-589e142a.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/kld/r3det_tiny_kld_r50_fpn_1x_dota_oc/r3det_tiny_kld_r50_fpn_1x_dota_oc_20220209_172917.log.json)
+| ResNet50 (1024,1024,200) | 70.18 | oc | 1x | 3.23 | 15.6 | - | 2 | [r3det_tiny_r50_fpn_1x_dota_oc](../r3det/r3det_tiny_r50_fpn_1x_dota_oc.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/r3det/r3det_tiny_r50_fpn_1x_dota_oc/r3det_tiny_r50_fpn_1x_dota_oc-c98a616c.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/r3det/r3det_tiny_r50_fpn_1x_dota_oc/r3det_tiny_r50_fpn_1x_dota_oc_20220209_171624.log.json)
+| ResNet50 (1024,1024,200) | 72.76 | oc | 1x | 3.44 | 14.0 | - | 2 | [r3det_tiny_kld_r50_fpn_1x_dota_oc](./r3det_tiny_kld_r50_fpn_1x_dota_oc.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/kld/r3det_tiny_kld_r50_fpn_1x_dota_oc/r3det_tiny_kld_r50_fpn_1x_dota_oc-589e142a.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/kld/r3det_tiny_kld_r50_fpn_1x_dota_oc/r3det_tiny_kld_r50_fpn_1x_dota_oc_20220209_172917.log.json)
## Citation
```
diff --git a/configs/oriented_rcnn/README.md b/configs/oriented_rcnn/README.md
index 7d1ea555b..663510110 100644
--- a/configs/oriented_rcnn/README.md
+++ b/configs/oriented_rcnn/README.md
@@ -1,22 +1,25 @@
-# [Oriented R-CNN for Object Detection](https://openaccess.thecvf.com/content/ICCV2021/papers/Xie_Oriented_R-CNN_for_Object_Detection_ICCV_2021_paper.pdf)
+# Oriented R-CNN
+> [Oriented R-CNN for Object Detection](https://openaccess.thecvf.com/content/ICCV2021/papers/Xie_Oriented_R-CNN_for_Object_Detection_ICCV_2021_paper.pdf)
## Abstract
-![illustration](https://raw.githubusercontent.com/zytx121/image-host/main/imgs/oriented_rcnn.png)
+
+
+
Current state-of-the-art two-stage detectors generate oriented proposals through time-consuming schemes. This diminishes the detectors’ speed, thereby becoming the computational bottleneck in advanced oriented object detection systems. This work proposes an effective and simple oriented object detection framework, termed Oriented R-CNN, which is a general two-stage oriented detector with promising accuracy and efficiency. To be specific, in the first stage, we propose an oriented Region Proposal Network (oriented RPN) that directly generates high-quality oriented proposals in a nearly cost-free manner. The second stage is oriented R-CNN head for refining oriented Regions of Interest (oriented RoIs) and recognizing them.
## Results and models
-### DOTA1.0
-
+DOTA1.0
| Backbone | mAP | Angle | lr schd | Mem (GB) | Inf Time (fps) | Aug | Batch Size | Configs | Download |
|:------------:|:----------:|:-----------:|:---------:|:---------:|:---------:|:---------:|:---------:|:---------:|:-------------:|
-| ResNet50 (1024,1024,200) | 73.40 | le90 | 1x | 8.46 | 16.0 | - | 2 | [rotated_faster_rcnn_r50_fpn_1x_dota_le90](../rotated_faster_rcnn/rotated_faster_rcnn_r50_fpn_1x_dota_le90.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/rotated_faster_rcnn/rotated_faster_rcnn_r50_fpn_1x_dota_le90/rotated_faster_rcnn_r50_fpn_1x_dota_le90-0393aa5c.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/rotated_faster_rcnn/rotated_faster_rcnn_r50_fpn_1x_dota_le90/rotated_faster_rcnn_r50_fpn_1x_dota_le90_20220131_082156.log.json)
-| ResNet50 (1024,1024,200) | 75.69 | le90 | 1x | 8.46 | 15.3 | - | 2 | [oriented_rcnn_r50_fpn_1x_dota_le90](./oriented_rcnn_r50_fpn_1x_dota_le90.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/oriented_rcnn/oriented_rcnn_r50_fpn_1x_dota_le90/oriented_rcnn_r50_fpn_1x_dota_le90-6d2b2ce0.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/oriented_rcnn/oriented_rcnn_r50_fpn_1x_dota_le90/oriented_rcnn_r50_fpn_1x_dota_le90_20220127_100150.log.json)
+| ResNet50 (1024,1024,200) | 73.40 | le90 | 1x | 8.46 | 16.5 | - | 2 | [rotated_faster_rcnn_r50_fpn_1x_dota_le90](../rotated_faster_rcnn/rotated_faster_rcnn_r50_fpn_1x_dota_le90.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/rotated_faster_rcnn/rotated_faster_rcnn_r50_fpn_1x_dota_le90/rotated_faster_rcnn_r50_fpn_1x_dota_le90-0393aa5c.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/rotated_faster_rcnn/rotated_faster_rcnn_r50_fpn_1x_dota_le90/rotated_faster_rcnn_r50_fpn_1x_dota_le90_20220131_082156.log.json)
+| ResNet50 (1024,1024,200) | 75.63 | le90 | 1x | 7.37 | 21.2 | - | 2 | [oriented_rcnn_r50_fpn_fp16_1x_dota_le90](./oriented_rcnn_r50_fpn_fp16_1x_dota_le90.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/oriented_rcnn/oriented_rcnn_r50_fpn_fp16_1x_dota_le90/oriented_rcnn_r50_fpn_fp16_1x_dota_le90-57c88621.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/oriented_rcnn/oriented_rcnn_r50_fpn_fp16_1x_dota_le90/oriented_rcnn_r50_fpn_fp16_1x_dota_le90_20220303_195049.log.json)
+| ResNet50 (1024,1024,200) | 75.69 | le90 | 1x | 8.46 | 16.2 | - | 2 | [oriented_rcnn_r50_fpn_1x_dota_le90](./oriented_rcnn_r50_fpn_1x_dota_le90.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/oriented_rcnn/oriented_rcnn_r50_fpn_1x_dota_le90/oriented_rcnn_r50_fpn_1x_dota_le90-6d2b2ce0.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/oriented_rcnn/oriented_rcnn_r50_fpn_1x_dota_le90/oriented_rcnn_r50_fpn_1x_dota_le90_20220127_100150.log.json)
## Citation
```
diff --git a/configs/oriented_rcnn/metafile.yml b/configs/oriented_rcnn/metafile.yml
index 18f45ee59..889628d09 100644
--- a/configs/oriented_rcnn/metafile.yml
+++ b/configs/oriented_rcnn/metafile.yml
@@ -14,6 +14,18 @@ Collections:
README: configs/oriented_rcnn/README.md
Models:
+ - Name: oriented_rcnn_r50_fpn_fp16_1x_dota_le90
+ In Collection: oriented_rcnn
+ Config: configs/cfa/oriented_rcnn_r50_fpn_fp16_1x_dota_le90.py
+ Metadata:
+ Training Data: DOTAv1.0
+ Results:
+ - Task: Oriented Object Detection
+ Dataset: DOTAv1.0
+ Metrics:
+ mAP: 75.63
+ Weights: https://download.openmmlab.com/mmrotate/v0.1.0/oriented_rcnn/oriented_rcnn_r50_fpn_fp16_1x_dota_le90/oriented_rcnn_r50_fpn_fp16_1x_dota_le90-57c88621.pth
+
- Name: oriented_rcnn_r50_fpn_1x_dota_le90
In Collection: oriented_rcnn
Config: configs/cfa/oriented_rcnn_r50_fpn_1x_dota_le90.py
diff --git a/configs/oriented_rcnn/oriented_rcnn_r50_fpn_fp16_1x_dota_le90.py b/configs/oriented_rcnn/oriented_rcnn_r50_fpn_fp16_1x_dota_le90.py
new file mode 100644
index 000000000..1b4ad5017
--- /dev/null
+++ b/configs/oriented_rcnn/oriented_rcnn_r50_fpn_fp16_1x_dota_le90.py
@@ -0,0 +1,3 @@
+_base_ = ['./oriented_rcnn_r50_fpn_1x_dota_le90.py']
+
+fp16 = dict(loss_scale='dynamic')
diff --git a/configs/oriented_rcnn/oriented_rcnn_swin_tiny_fpn_1x_dota_le90.py b/configs/oriented_rcnn/oriented_rcnn_swin_tiny_fpn_1x_dota_le90.py
index 09e2c9de6..efd1e7993 100644
--- a/configs/oriented_rcnn/oriented_rcnn_swin_tiny_fpn_1x_dota_le90.py
+++ b/configs/oriented_rcnn/oriented_rcnn_swin_tiny_fpn_1x_dota_le90.py
@@ -1,5 +1,7 @@
_base_ = ['./oriented_rcnn_r50_fpn_1x_dota_le90.py']
+pretrained = 'https://github.com/SwinTransformer/storage/releases/download/v1.0.0/swin_tiny_patch4_window7_224.pth' # noqa
+
model = dict(
backbone=dict(
_delete_=True,
@@ -18,10 +20,7 @@
out_indices=(0, 1, 2, 3),
with_cp=False,
convert_weights=True,
- init_cfg=dict(
- type='Pretrained',
- checkpoint='torch/hub/checkpoints/'
- 'swin_tiny_patch4_window7_224.pth')),
+ init_cfg=dict(type='Pretrained', checkpoint=pretrained)),
neck=dict(
_delete_=True,
type='FPN',
diff --git a/configs/r3det/README.md b/configs/r3det/README.md
index 684a7f7f6..659ece852 100644
--- a/configs/r3det/README.md
+++ b/configs/r3det/README.md
@@ -1,21 +1,24 @@
-# [R3Det: Refined Single-Stage Detector with Feature Refinement for Rotating Object](https://arxiv.org/pdf/1908.05612.pdf)
+# R3Det
+> [R3Det: Refined Single-Stage Detector with Feature Refinement for Rotating Object](https://arxiv.org/pdf/1908.05612.pdf)
## Abstract
-![illustration](https://raw.githubusercontent.com/zytx121/image-host/main/imgs/r3det.png)
+
+
+
Rotation detection is a challenging task due to the difficulties of locating the multi-angle objects and separating them effectively from the background. Though considerable progress has been made, for practical settings, there still exist challenges for rotating objects with large aspect ratio, dense distribution and category extremely imbalance. In this paper, we propose an end-to-end refined single-stage rotation detector for fast and accurate object detection by using a progressive regression approach from coarse to fine granularity. Considering the shortcoming of feature misalignment in existing refined single stage detector, we design a feature refinement module to improve detection performance by getting more accurate features. The key idea of feature refinement module is to re-encode the position information of the current refined bounding box to the corresponding feature points through pixel-wise feature interpolation to realize feature reconstruction and alignment. For more accurate rotation estimation, an approximate SkewIoU loss is proposed to solve the problem that the calculation of SkewIoU is not derivable. Experiments on three popular remote sensing public datasets DOTA, HRSC2016, UCAS-AOD as well as one scene text dataset ICDAR2015 show the effectiveness of our approach.
## Results and models
-### DOTA1.0
+DOTA1.0
| Backbone | mAP | Angle | lr schd | Mem (GB) | Inf Time (fps) | Aug | Batch Size | Configs | Download |
|:------------:|:----------:|:-----------:|:---------:|:---------:|:---------:|:---------:|:---------:|:---------:|:-------------:|
-| ResNet50 (1024,1024,200) | 64.55 | oc | 1x | 3.38 | 14.8 | - | 2 | [rotated_retinanet_hbb_r50_fpn_1x_dota_oc](../rotated_retinanet/rotated_retinanet_hbb_r50_fpn_1x_dota_oc.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/rotated_retinanet/rotated_retinanet_hbb_r50_fpn_1x_dota_oc/rotated_retinanet_hbb_r50_fpn_1x_dota_oc-e8a7c7df.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/rotated_retinanet/rotated_retinanet_hbb_r50_fpn_1x_dota_oc/rotated_retinanet_hbb_r50_fpn_1x_dota_oc_20220121_095315.log.json)
-| ResNet50 (1024,1024,200) | 69.80 | oc | 1x | 3.54 | 12.1 | - | 2 | [r3det_r50_fpn_1x_dota_oc](../r3det/r3det_r50_fpn_1x_dota_oc.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/r3det/r3det_r50_fpn_1x_dota_oc/r3det_r50_fpn_1x_dota_oc-b1fb045c.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/r3det/r3det_r50_fpn_1x_dota_oc/r3det_r50_fpn_1x_dota_oc_20220126_191226.log.json)
-| ResNet50 (1024,1024,200) | 70.18 | oc | 1x | 3.23 | 15.1 | - | 2 | [r3det_tiny_r50_fpn_1x_dota_oc](../r3det/r3det_tiny_r50_fpn_1x_dota_oc.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/r3det/r3det_tiny_r50_fpn_1x_dota_oc/r3det_tiny_r50_fpn_1x_dota_oc-c98a616c.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/r3det/r3det_tiny_r50_fpn_1x_dota_oc/r3det_tiny_r50_fpn_1x_dota_oc_20220209_171624.log.json)
+| ResNet50 (1024,1024,200) | 64.55 | oc | 1x | 3.38 | 15.7 | - | 2 | [rotated_retinanet_hbb_r50_fpn_1x_dota_oc](../rotated_retinanet/rotated_retinanet_hbb_r50_fpn_1x_dota_oc.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/rotated_retinanet/rotated_retinanet_hbb_r50_fpn_1x_dota_oc/rotated_retinanet_hbb_r50_fpn_1x_dota_oc-e8a7c7df.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/rotated_retinanet/rotated_retinanet_hbb_r50_fpn_1x_dota_oc/rotated_retinanet_hbb_r50_fpn_1x_dota_oc_20220121_095315.log.json)
+| ResNet50 (1024,1024,200) | 69.80 | oc | 1x | 3.54 | 12.4 | - | 2 | [r3det_r50_fpn_1x_dota_oc](../r3det/r3det_r50_fpn_1x_dota_oc.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/r3det/r3det_r50_fpn_1x_dota_oc/r3det_r50_fpn_1x_dota_oc-b1fb045c.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/r3det/r3det_r50_fpn_1x_dota_oc/r3det_r50_fpn_1x_dota_oc_20220126_191226.log.json)
+| ResNet50 (1024,1024,200) | 70.18 | oc | 1x | 3.23 | 15.6 | - | 2 | [r3det_tiny_r50_fpn_1x_dota_oc](../r3det/r3det_tiny_r50_fpn_1x_dota_oc.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/r3det/r3det_tiny_r50_fpn_1x_dota_oc/r3det_tiny_r50_fpn_1x_dota_oc-c98a616c.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/r3det/r3det_tiny_r50_fpn_1x_dota_oc/r3det_tiny_r50_fpn_1x_dota_oc_20220209_171624.log.json)
## Citation
diff --git a/configs/redet/README.md b/configs/redet/README.md
index cf1f17ff3..48a3dc35d 100644
--- a/configs/redet/README.md
+++ b/configs/redet/README.md
@@ -1,29 +1,31 @@
-# [ReDet: A Rotation-equivariant Detector for Aerial Object Detection](https://openaccess.thecvf.com/content/CVPR2021/papers/Han_ReDet_A_Rotation-Equivariant_Detector_for_Aerial_Object_Detection_CVPR_2021_paper.pdf)
+# ReDet
+> [ReDet: A Rotation-equivariant Detector for Aerial Object Detection](https://openaccess.thecvf.com/content/CVPR2021/papers/Han_ReDet_A_Rotation-Equivariant_Detector_for_Aerial_Object_Detection_CVPR_2021_paper.pdf)
## Abstract
-![illustration](https://raw.githubusercontent.com/zytx121/image-host/main/imgs/redet.png)
+
+
+
Recently, object detection in aerial images has gained much attention in computer vision. Different from objects in natural images, aerial objects are often distributed with arbitrary orientation. Therefore, the detector requires more parameters to encode the orientation information, which are often highly redundant and inefficient. Moreover, as ordinary CNNs do not explicitly model the orientation variation, large amounts of rotation augmented data is needed to train an accurate object detector. In this paper, we propose a Rotation-equivariant Detector (ReDet) to address these issues, which explicitly encodes rotation equivariance and rotation invariance. More precisely, we incorporate rotation-equivariant networks into the detector to extract rotation-equivariant features, which can accurately predict the orientation and lead to a huge reduction of model size. Based on the rotation-equivariant features, we also present Rotation-invariant RoI Align (RiRoI Align), which adaptively extracts rotation-invariant features from equivariant features according to the orientation of RoI. Extensive experiments on several challenging aerial image datasets DOTA-v1.0, DOTA-v1.5 and HRSC2016, show that our method can achieve state-of-the-art performance on the task of aerial object detection. Compared with previous best results, our ReDet gains 1.2, 3.5 and 2.6 mAP on DOTA-v1.0, DOTA-v1.5 and HRSC2016 respectively while reducing the number of parameters by 60% (313 Mb vs. 121 Mb).
-
-
## Results and models
-### DOTA1.0
+DOTA1.0
| Backbone | mAP | Angle | lr schd | Mem (GB) | Inf Time (fps) | Aug | Batch Size | Configs | Download |
|:------------:|:----------:|:-----------:|:---------:|:---------:|:---------:|:---------:|:---------:|:---------:|:-------------:|
-| ResNet50 (1024,1024,200) | 73.40 | le90 | 1x | 8.46 | 16.0 | - | 2 | [rotated_faster_rcnn_r50_fpn_1x_dota_le90](../rotated_faster_rcnn/rotated_faster_rcnn_r50_fpn_1x_dota_le90.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/rotated_faster_rcnn/rotated_faster_rcnn_r50_fpn_1x_dota_le90/rotated_faster_rcnn_r50_fpn_1x_dota_le90-0393aa5c.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/rotated_faster_rcnn/rotated_faster_rcnn_r50_fpn_1x_dota_le90/rotated_faster_rcnn_r50_fpn_1x_dota_le90_20220131_082156.log.json)
-| ReResNet50 (1024,1024,200) | 76.68| le90 | 1x | 9.32 | 4.0 | - | 2 | [redet_re50_refpn_1x_dota_le90](./redet_re50_refpn_1x_dota_le90.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/redet/redet_re50_fpn_1x_dota_le90/redet_re50_fpn_1x_dota_le90-724ab2da.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/redet/redet_re50_fpn_1x_dota_le90/redet_re50_fpn_1x_dota_le90_20220130_132751.log.json)
-| ReResNet50 (1024,1024,200) | 79.87 | le90 | 1x | | 4.0 | MS+RR | 2 | [redet_re50_refpn_1x_dota_ms_rr_le90](./redet_re50_refpn_1x_dota_ms_rr_le90.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/redet/redet_re50_fpn_1x_dota_ms_rr_le90/redet_re50_fpn_1x_dota_ms_rr_le90-fc9217b5.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/redet/redet_re50_fpn_1x_dota_ms_rr_le90/redet_re50_fpn_1x_dota_ms_rr_le90_20220206_105343.log.json)
+| ResNet50 (1024,1024,200) | 73.40 | le90 | 1x | 8.46 | 16.5 | - | 2 | [rotated_faster_rcnn_r50_fpn_1x_dota_le90](../rotated_faster_rcnn/rotated_faster_rcnn_r50_fpn_1x_dota_le90.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/rotated_faster_rcnn/rotated_faster_rcnn_r50_fpn_1x_dota_le90/rotated_faster_rcnn_r50_fpn_1x_dota_le90-0393aa5c.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/rotated_faster_rcnn/rotated_faster_rcnn_r50_fpn_1x_dota_le90/rotated_faster_rcnn_r50_fpn_1x_dota_le90_20220131_082156.log.json)
+| ReResNet50 (1024,1024,200) | 75.99 | le90 | 1x | 7.71 | 13.3 | - | 2 | [redet_re50_refpn_fp16_1x_dota_le90](./redet_re50_refpn_fp16_1x_dota_le90.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/redet/redet_re50_refpn_fp16_1x_dota_le90/redet_re50_refpn_fp16_1x_dota_le90-1e34da2d.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/redet/redet_re50_refpn_fp16_1x_dota_le90/redet_re50_refpn_fp16_1x_dota_le90_20220303_194725.log.json)
+| ReResNet50 (1024,1024,200) | 76.68 | le90 | 1x | 9.32 | 10.9 | - | 2 | [redet_re50_refpn_1x_dota_le90](./redet_re50_refpn_1x_dota_le90.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/redet/redet_re50_fpn_1x_dota_le90/redet_re50_fpn_1x_dota_le90-724ab2da.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/redet/redet_re50_fpn_1x_dota_le90/redet_re50_fpn_1x_dota_le90_20220130_132751.log.json)
+| ReResNet50 (1024,1024,200) | 79.87 | le90 | 1x | | 10.9 | MS+RR | 2 | [redet_re50_refpn_1x_dota_ms_rr_le90](./redet_re50_refpn_1x_dota_ms_rr_le90.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/redet/redet_re50_fpn_1x_dota_ms_rr_le90/redet_re50_fpn_1x_dota_ms_rr_le90-fc9217b5.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/redet/redet_re50_fpn_1x_dota_ms_rr_le90/redet_re50_fpn_1x_dota_ms_rr_le90_20220206_105343.log.json)
+Notes:
- `MS` means multiple scale image split.
- `RR` means random rotation.
-
-Please download pretrained weight of ReResNet from [ReDet](https://github.com/csuhan/ReDet), and put it on `work_dirs/pretrain`. BTW, it is normal for `missing keys in source state_dict: xxx.filter ` to appear in the log. Don't worry!
+- Please download pretrained weight of ReResNet from [ReDet](https://github.com/csuhan/ReDet), and put it on `work_dirs/pretrain`. BTW, it is normal for `missing keys in source state_dict: xxx.filter ` to appear in the log. Don't worry!
## Citation
```
diff --git a/configs/redet/metafile.yml b/configs/redet/metafile.yml
index 5485424bd..2ea55abaa 100644
--- a/configs/redet/metafile.yml
+++ b/configs/redet/metafile.yml
@@ -14,6 +14,18 @@ Collections:
README: configs/redet/README.md
Models:
+ - Name: redet_re50_refpn_fp16_1x_dota_le90
+ In Collection: redet
+ Config: configs/redet/redet_re50_refpn_fp16_1x_dota_le90.py
+ Metadata:
+ Training Data: DOTAv1.0
+ Results:
+ - Task: Oriented Object Detection
+ Dataset: DOTAv1.0
+ Metrics:
+ mAP: 75.99
+ Weights: https://download.openmmlab.com/mmrotate/v0.1.0/redet/redet_re50_refpn_fp16_1x_dota_le90/redet_re50_refpn_fp16_1x_dota_le90-1e34da2d.pth
+
- Name: redet_re50_refpn_1x_dota_le90
In Collection: redet
Config: configs/redet/redet_re50_refpn_1x_dota_le90.py
diff --git a/configs/redet/redet_re50_refpn_fp16_1x_dota_le90.py b/configs/redet/redet_re50_refpn_fp16_1x_dota_le90.py
new file mode 100644
index 000000000..834f6a364
--- /dev/null
+++ b/configs/redet/redet_re50_refpn_fp16_1x_dota_le90.py
@@ -0,0 +1,3 @@
+_base_ = ['./redet_re50_refpn_1x_dota_le90.py']
+
+fp16 = dict(loss_scale='dynamic')
diff --git a/configs/roi_trans/README.md b/configs/roi_trans/README.md
index 54cee3517..10e55bc2c 100644
--- a/configs/roi_trans/README.md
+++ b/configs/roi_trans/README.md
@@ -1,23 +1,28 @@
-# [Learning RoI Transformer for Oriented Object Detection in Aerial Images](https://openaccess.thecvf.com/content_CVPR_2019/papers/Ding_Learning_RoI_Transformer_for_Oriented_Object_Detection_in_Aerial_Images_CVPR_2019_paper.pdf)
+# RoI Trans
+> [Learning RoI Transformer for Oriented Object Detection in Aerial Images](https://openaccess.thecvf.com/content_CVPR_2019/papers/Ding_Learning_RoI_Transformer_for_Oriented_Object_Detection_in_Aerial_Images_CVPR_2019_paper.pdf)
## Abstract
-![illustration](https://raw.githubusercontent.com/zytx121/image-host/main/imgs/roi_trans.png)
+
+
+
Object detection in aerial images is an active yet challenging task in computer vision because of the bird’s-eye view perspective, the highly complex backgrounds, and the variant appearances of objects. Especially when detecting densely packed objects in aerial images, methods relying on horizontal proposals for common object detection often introduce mismatches between the Region of Interests (RoIs) and objects. This leads to the common misalignment between the final object classification confidence and localization accuracy. In this paper, we propose a RoI Transformer to address these problems. The core idea of RoI Transformer is to apply spatial transformations on RoIs and learn the transformation parameters under the supervision of oriented bounding box (OBB) annotations. RoI Transformer is with lightweight and can be easily embedded into detectors for oriented object detection. Simply apply the RoI Transformer to light-head RCNN has achieved state-of-the-art performances on two common and challenging aerial datasets, i.e., DOTA and HRSC2016, with a neglectable reduction to detection speed. Our RoI Transformer exceeds the deformable Position Sensitive RoI pooling when oriented bounding-box annotations are available. Extensive experiments have also validated the flexibility and effectiveness of our RoI Transformer
## Results and models
-### DOTA1.0
+DOTA1.0
| Backbone | mAP | Angle | lr schd | Mem (GB) | Inf Time (fps) | Aug | Batch Size | Configs | Download |
|:------------:|:----------:|:-----------:|:---------:|:---------:|:---------:|:---------:|:---------:|:---------:|:-------------:|
-| ResNet50 (1024,1024,200) | 73.40 | le90 | 1x | 8.46 | 16.0 | - | 2 | [rotated_faster_rcnn_r50_fpn_1x_dota_le90](../rotated_faster_rcnn/rotated_faster_rcnn_r50_fpn_1x_dota_le90.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/rotated_faster_rcnn/rotated_faster_rcnn_r50_fpn_1x_dota_le90/rotated_faster_rcnn_r50_fpn_1x_dota_le90-0393aa5c.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/rotated_faster_rcnn/rotated_faster_rcnn_r50_fpn_1x_dota_le90/rotated_faster_rcnn_r50_fpn_1x_dota_le90_20220131_082156.log.json)
-| ResNet50 (1024,1024,200) | 76.08 | le90 | 1x | 8.67 | 13.5 | - | 2 | [roi_trans_r50_fpn_1x_dota_le90](./roi_trans_r50_fpn_1x_dota_le90.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/roi_trans/roi_trans_r50_fpn_1x_dota_le90/roi_trans_r50_fpn_1x_dota_le90-d1f0b77a.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/roi_trans/roi_trans_r50_fpn_1x_dota_le90/roi_trans_r50_fpn_1x_dota_le90_20220130_132727.log.json)
-| Swin-tiny (1024,1024,200) | 77.51 | le90 | 1x | | 10.6 | - | 2 | [roi_trans_swin_tiny_fpn_1x_dota_le90](./roi_trans_swin_tiny_fpn_1x_dota_le90.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/roi_trans/roi_trans_swin_tiny_fpn_1x_dota_le90/roi_trans_swin_tiny_fpn_1x_dota_le90-ddeee9ae.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/roi_trans/roi_trans_swin_tiny_fpn_1x_dota_le90/roi_trans_swin_tiny_fpn_1x_dota_le90_20220131_083622.log.json)
-| ResNet50 (1024,1024,200) | 79.66 | le90 | 1x | | 13.7 | MS+RR | 2 | [roi_trans_r50_fpn_1x_dota_ms_le90](./roi_trans_r50_fpn_1x_dota_ms_le90.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/roi_trans/roi_trans_r50_fpn_1x_dota_ms_rr_le90/roi_trans_r50_fpn_1x_dota_ms_rr_le90-fa99496f.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/roi_trans/roi_trans_r50_fpn_1x_dota_ms_rr_le90/roi_trans_r50_fpn_1x_dota_ms_rr_le90_20220205_171729.log.json)
+| ResNet50 (1024,1024,200) | 73.40 | le90 | 1x | 8.46 | 16.5 | - | 2 | [rotated_faster_rcnn_r50_fpn_1x_dota_le90](../rotated_faster_rcnn/rotated_faster_rcnn_r50_fpn_1x_dota_le90.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/rotated_faster_rcnn/rotated_faster_rcnn_r50_fpn_1x_dota_le90/rotated_faster_rcnn_r50_fpn_1x_dota_le90-0393aa5c.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/rotated_faster_rcnn/rotated_faster_rcnn_r50_fpn_1x_dota_le90/rotated_faster_rcnn_r50_fpn_1x_dota_le90_20220131_082156.log.json)
+| ResNet50 (1024,1024,200) | 75.75 | le90 | 1x | 7.56 | 19.3 | - | 2 | [roi_trans_r50_fpn_fp16_1x_dota_le90](./roi_trans_r50_fpn_fp16_1x_dota_le90.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/roi_trans/roi_trans_r50_fpn_fp16_1x_dota_le90/roi_trans_r50_fpn_fp16_1x_dota_le90-62eb88b1.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/roi_trans/roi_trans_r50_fpn_fp16_1x_dota_le90/roi_trans_r50_fpn_fp16_1x_dota_le90_20220303_193513.log.json)
+| ResNet50 (1024,1024,200) | 76.08 | le90 | 1x | 8.67 | 14.4 | - | 2 | [roi_trans_r50_fpn_1x_dota_le90](./roi_trans_r50_fpn_1x_dota_le90.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/roi_trans/roi_trans_r50_fpn_1x_dota_le90/roi_trans_r50_fpn_1x_dota_le90-d1f0b77a.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/roi_trans/roi_trans_r50_fpn_1x_dota_le90/roi_trans_r50_fpn_1x_dota_le90_20220130_132727.log.json)
+| Swin-tiny (1024,1024,200) | 77.51 | le90 | 1x | | 10.9 | - | 2 | [roi_trans_swin_tiny_fpn_1x_dota_le90](./roi_trans_swin_tiny_fpn_1x_dota_le90.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/roi_trans/roi_trans_swin_tiny_fpn_1x_dota_le90/roi_trans_swin_tiny_fpn_1x_dota_le90-ddeee9ae.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/roi_trans/roi_trans_swin_tiny_fpn_1x_dota_le90/roi_trans_swin_tiny_fpn_1x_dota_le90_20220131_083622.log.json)
+| ResNet50 (1024,1024,200) | 79.66 | le90 | 1x | | 14.4 | MS+RR | 2 | [roi_trans_r50_fpn_1x_dota_ms_le90](./roi_trans_r50_fpn_1x_dota_ms_le90.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/roi_trans/roi_trans_r50_fpn_1x_dota_ms_rr_le90/roi_trans_r50_fpn_1x_dota_ms_rr_le90-fa99496f.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/roi_trans/roi_trans_r50_fpn_1x_dota_ms_rr_le90/roi_trans_r50_fpn_1x_dota_ms_rr_le90_20220205_171729.log.json)
+Notes:
- `MS` means multiple scale image split.
- `RR` means random rotation.
diff --git a/configs/roi_trans/metafile.yml b/configs/roi_trans/metafile.yml
index bf126ba88..d039ff424 100644
--- a/configs/roi_trans/metafile.yml
+++ b/configs/roi_trans/metafile.yml
@@ -16,6 +16,18 @@ Collections:
README: configs/roi_trans/README.md
Models:
+ - Name: roi_trans_r50_fpn_fp16_1x_dota_le90
+ In Collection: roi_trans
+ Config: configs/roi_trans/roi_trans_r50_fpn_fp16_1x_dota_le90.py
+ Metadata:
+ Training Data: DOTAv1.0
+ Results:
+ - Task: Oriented Object Detection
+ Dataset: DOTAv1.0
+ Metrics:
+ mAP: 75.75
+ Weights: https://download.openmmlab.com/mmrotate/v0.1.0/roi_trans/roi_trans_r50_fpn_fp16_1x_dota_le90/roi_trans_r50_fpn_fp16_1x_dota_le90-62eb88b1.pth
+
- Name: roi_trans_r50_fpn_1x_dota_le90
In Collection: roi_trans
Config: configs/roi_trans/roi_trans_r50_fpn_1x_dota_le90.py
diff --git a/configs/roi_trans/roi_trans_r50_fpn_fp16_1x_dota_le90.py b/configs/roi_trans/roi_trans_r50_fpn_fp16_1x_dota_le90.py
new file mode 100644
index 000000000..35af2bbe4
--- /dev/null
+++ b/configs/roi_trans/roi_trans_r50_fpn_fp16_1x_dota_le90.py
@@ -0,0 +1,3 @@
+_base_ = ['./roi_trans_r50_fpn_1x_dota_le90.py']
+
+fp16 = dict(loss_scale='dynamic')
diff --git a/configs/roi_trans/roi_trans_swin_tiny_fpn_1x_dota_le90.py b/configs/roi_trans/roi_trans_swin_tiny_fpn_1x_dota_le90.py
index 074073333..9547b3da2 100644
--- a/configs/roi_trans/roi_trans_swin_tiny_fpn_1x_dota_le90.py
+++ b/configs/roi_trans/roi_trans_swin_tiny_fpn_1x_dota_le90.py
@@ -1,5 +1,7 @@
_base_ = ['./roi_trans_r50_fpn_1x_dota_le90.py']
+pretrained = 'https://github.com/SwinTransformer/storage/releases/download/v1.0.0/swin_tiny_patch4_window7_224.pth' # noqa
+
model = dict(
backbone=dict(
_delete_=True,
@@ -18,10 +20,7 @@
out_indices=(0, 1, 2, 3),
with_cp=False,
convert_weights=True,
- init_cfg=dict(
- type='Pretrained',
- checkpoint='torch/hub/checkpoints/'
- 'swin_tiny_patch4_window7_224.pth')),
+ init_cfg=dict(type='Pretrained', checkpoint=pretrained)),
neck=dict(
_delete_=True,
type='FPN',
diff --git a/configs/rotated_faster_rcnn/README.md b/configs/rotated_faster_rcnn/README.md
index a314b91f5..e7b976535 100644
--- a/configs/rotated_faster_rcnn/README.md
+++ b/configs/rotated_faster_rcnn/README.md
@@ -1,21 +1,25 @@
-# [Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks](https://papers.nips.cc/paper/2015/file/14bfa6bb14875e45bba028a21ed38046-Paper.pdf)
+# Rotated Faster R-CNN
+> [Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks](https://papers.nips.cc/paper/2015/file/14bfa6bb14875e45bba028a21ed38046-Paper.pdf)
## Abstract
-![illustration](https://raw.githubusercontent.com/zytx121/image-host/main/imgs/faster_rcnn.png)
+
+
+
+
State-of-the-art object detection networks depend on region proposal algorithms to hypothesize object locations. Advances like SPPnet [7] and Fast R-CNN [5] have reduced the running time of these detection networks, exposing region proposal computation as a bottleneck. In this work, we introduce a Region Proposal Network (RPN) that shares full-image convolutional features with the detection network, thus enabling nearly cost-free region proposals. An RPN is a fully-convolutional network that simultaneously predicts object bounds and objectness scores at each position. RPNs are trained end-to-end to generate highquality region proposals, which are used by Fast R-CNN for detection. With a simple alternating optimization, RPN and Fast R-CNN can be trained to share convolutional features. For the very deep VGG-16 model [19], our detection system has a frame rate of 5fps (including all steps) on a GPU, while achieving state-of-the-art object detection accuracy on PASCAL VOC 2007 (73.2% mAP) and 2012 (70.4% mAP) using 300 proposals per image.
## Results and models
-### DOTA1.0
+DOTA1.0
| Backbone | mAP | Angle | lr schd | Mem (GB) | Inf Time (fps) | Aug | Batch Size | Configs | Download |
|:------------:|:----------:|:-----------:|:---------:|:---------:|:---------:|:---------:|:---------:|:---------:|:-------------:|
-| ResNet50 (1024,1024,200) | 73.40 | le90 | 1x | 8.46 | 16.0 | - | 2 | [rotated_faster_rcnn_r50_fpn_1x_dota_le90](../rotated_faster_rcnn/rotated_faster_rcnn_r50_fpn_1x_dota_le90.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/rotated_faster_rcnn/rotated_faster_rcnn_r50_fpn_1x_dota_le90/rotated_faster_rcnn_r50_fpn_1x_dota_le90-0393aa5c.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/rotated_faster_rcnn/rotated_faster_rcnn_r50_fpn_1x_dota_le90/rotated_faster_rcnn_r50_fpn_1x_dota_le90_20220131_082156.log.json)
+| ResNet50 (1024,1024,200) | 73.40 | le90 | 1x | 8.46 | 16.5 | - | 2 | [rotated_faster_rcnn_r50_fpn_1x_dota_le90](../rotated_faster_rcnn/rotated_faster_rcnn_r50_fpn_1x_dota_le90.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/rotated_faster_rcnn/rotated_faster_rcnn_r50_fpn_1x_dota_le90/rotated_faster_rcnn_r50_fpn_1x_dota_le90-0393aa5c.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/rotated_faster_rcnn/rotated_faster_rcnn_r50_fpn_1x_dota_le90/rotated_faster_rcnn_r50_fpn_1x_dota_le90_20220131_082156.log.json)
## Citation
```
diff --git a/configs/rotated_reppoints/README.md b/configs/rotated_reppoints/README.md
index 7fc51d750..addf99cdd 100644
--- a/configs/rotated_reppoints/README.md
+++ b/configs/rotated_reppoints/README.md
@@ -1,20 +1,22 @@
-# [RepPoints: Point Set Representation for Object Detection.](https://arxiv.org/abs/1904.11490)
+# Rotated RepPoints
+> [RepPoints: Point Set Representation for Object Detection.](https://arxiv.org/abs/1904.11490)
## Abstract
-![illustration](https://raw.githubusercontent.com/zytx121/image-host/main/imgs/reppoints.png)
+
+
+
Modern object detectors rely heavily on rectangular bounding boxes, such as anchors, proposals and the final predictions, to represent objects at various recognition stages. The bounding box is convenient to use but provides only a coarse localization of objects and leads to a correspondingly coarse extraction of object features. In this paper, we present \textbf{RepPoints} (representative points), a new finer representation of objects as a set of sample points useful for both localization and recognition. Given ground truth localization and recognition targets for training, RepPoints learn to automatically arrange themselves in a manner that bounds the spatial extent of an object and indicates semantically significant local areas. They furthermore do not require the use of anchors to sample a space of bounding boxes. We show that an anchor-free object detector based on RepPoints can be as effective as the state-of-the-art anchor-based detection methods, with 46.5 AP and 67.4 AP50 on the COCO test-dev detection benchmark, using ResNet-101 model.
## Results and models
-### DOTA1.0
+ DOTA1.0
-#### RepPoints
| Backbone | mAP | Angle | lr schd | Mem (GB) | Inf Time (fps) | Aug | Batch Size | Configs | Download |
|:------------:|:----------:|:-----------:|:---------:|:---------:|:---------:|:---------:|:---------:|:---------:|:-------------:|
-| ResNet50 (1024,1024,200) | 59.44 | oc | 1x | 3.45 | 15.9 | - | 2 | [rotated_reppoints_r50_fpn_1x_dota_oc](../rotated_reppoints/rotated_reppoints_r50_fpn_1x_dota_oc.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/rotated_reppoints/rotated_reppoints_r50_fpn_1x_dota_oc/rotated_reppoints_r50_fpn_1x_dota_oc-d38ce217.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/rotated_reppoints/rotated_reppoints_r50_fpn_1x_dota_oc/rotated_reppoints_r50_fpn_1x_dota_oc_20220205_145010.log.json)
+| ResNet50 (1024,1024,200) | 59.44 | oc | 1x | 3.45 | 15.6 | - | 2 | [rotated_reppoints_r50_fpn_1x_dota_oc](../rotated_reppoints/rotated_reppoints_r50_fpn_1x_dota_oc.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/rotated_reppoints/rotated_reppoints_r50_fpn_1x_dota_oc/rotated_reppoints_r50_fpn_1x_dota_oc-d38ce217.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/rotated_reppoints/rotated_reppoints_r50_fpn_1x_dota_oc/rotated_reppoints_r50_fpn_1x_dota_oc_20220205_145010.log.json)
## Citation
```
diff --git a/configs/rotated_retinanet/README.md b/configs/rotated_retinanet/README.md
index f4af32909..1982aaae1 100644
--- a/configs/rotated_retinanet/README.md
+++ b/configs/rotated_retinanet/README.md
@@ -1,26 +1,37 @@
-# [Focal loss for dense object detection](https://arxiv.org/pdf/1708.02002.pdf)
+# Rotated RetinaNet
+> [Focal loss for dense object detection](https://arxiv.org/pdf/1708.02002.pdf)
## Abstract
-![illustration](https://raw.githubusercontent.com/zytx121/image-host/main/imgs/retina.png)
-
-The highest accuracy object detectors to date are based on a two-stage approach popularized by R-CNN, where a classifier is applied to a sparse set of candidate object locations. In contrast, one-stage detectors that are applied over a regular, dense sampling of possible object locations have the potential to be faster and simpler, but have trailed the accuracy of two-stage detectors thus far. In this paper, we investigate why this is the case. We discover that the extreme foreground-background class imbalance encountered during training of dense detectors is the central cause. We propose to address this class imbalance by reshaping the standard cross entropy loss such that it down-weights the loss assigned to well-classified examples. Our novel Focal Loss focuses training on a sparse set of hard examples and prevents the vast number of easy negatives from overwhelming the detector during training. To evaluate the effectiveness of our loss, we design and train a simple dense detector we call RotatedRetinaNet. Our results show that when trained with the focal loss, RetinaNet is able to match the speed of previous one-stage detectors while surpassing the accuracy of all existing state-of-the-art two-stage detectors.
+
+
+
+The highest accuracy object detectors to date are based on a two-stage approach popularized by R-CNN, where a classifier is applied to a sparse set of candidate object locations. In contrast, one-stage detectors that are applied over a regular, dense sampling of possible object locations have the potential to be faster and simpler, but have trailed the accuracy of two-stage detectors thus far. In this paper, we investigate why this is the case. We discover that the extreme foreground-background class imbalance encountered during training of dense detectors is the central cause. We propose to address this class imbalance by reshaping the standard cross entropy loss such that it down-weights the loss assigned to well-classified examples. Our novel Focal Loss focuses training on a sparse set of hard examples and prevents the vast number of easy negatives from overwhelming the detector during training. To evaluate the effectiveness of our loss, we design and train a simple dense detector we call RetinaNet. Our results show that when trained with the focal loss, RetinaNet is able to match the speed of previous one-stage detectors while surpassing the accuracy of all existing state-of-the-art two-stage detectors.
## Results and Models
-### DOTA1.0
+DOTA1.0
| Backbone | mAP | Angle | lr schd | Mem (GB) | Inf Time (fps) | Aug | Batch Size | Configs | Download |
|:------------:|:----------:|:-----------:|:---------:|:---------:|:---------:|:---------:|:---------:|:---------:|:-------------:|
-| ResNet50 (1024,1024,200) | 64.55 | oc | 1x | 3.38 | 14.8 | - | 2 | [rotated_retinanet_hbb_r50_fpn_1x_dota_oc](./rotated_retinanet_hbb_r50_fpn_1x_dota_oc.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/rotated_retinanet/rotated_retinanet_hbb_r50_fpn_1x_dota_oc/rotated_retinanet_hbb_r50_fpn_1x_dota_oc-e8a7c7df.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/rotated_retinanet/rotated_retinanet_hbb_r50_fpn_1x_dota_oc/rotated_retinanet_hbb_r50_fpn_1x_dota_oc_20220121_095315.log.json)
-| ResNet50 (1024,1024,200) | 68.42 | le90 | 1x | 3.38 | 16.2 | - | 2 | [rotated_retinanet_obb_r50_fpn_1x_dota_le90](./rotated_retinanet_obb_r50_fpn_1x_dota_le90.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/rotated_retinanet/rotated_retinanet_obb_r50_fpn_1x_dota_le90/rotated_retinanet_obb_r50_fpn_1x_dota_le90-c0097bc4.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/rotated_retinanet/rotated_retinanet_obb_r50_fpn_1x_dota_le90/rotated_retinanet_obb_r50_fpn_1x_dota_le90_20220128_130740.log.json)
-| ResNet50 (1024,1024,200) | 69.79 | le135 | 1x | 3.38 | 16.6 | - | 2 | [rotated_retinanet_obb_r50_fpn_1x_dota_le135](./rotated_retinanet_obb_r50_fpn_1x_dota_le135.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/rotated_retinanet/rotated_retinanet_obb_r50_fpn_1x_dota_le135/rotated_retinanet_obb_r50_fpn_1x_dota_le135-e4131166.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/rotated_retinanet/rotated_retinanet_obb_r50_fpn_1x_dota_le135/rotated_retinanet_obb_r50_fpn_1x_dota_le135_20220128_130755.log.json)
-| ResNet50 (1024,1024,200) | 76.50 | le90 | 1x | | 16.7 | MS+RR | 2 | [rotated_retinanet_obb_r50_fpn_1x_dota_ms_rr_le90](./rotated_retinanet_obb_r50_fpn_1x_dota_ms_rr_le90.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/rotated_retinanet/rotated_retinanet_obb_r50_fpn_1x_dota_ms_rr_le90/rotated_retinanet_obb_r50_fpn_1x_dota_ms_rr_le90-1da1ec9c.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/rotated_retinanet/rotated_retinanet_obb_r50_fpn_1x_dota_ms_rr_le90/rotated_retinanet_obb_r50_fpn_1x_dota_ms_rr_le90_20220210_114843.log.json)
+| ResNet50 (1024,1024,200) | 64.55 | oc | 1x | 3.38 | 15.7 | - | 2 | [rotated_retinanet_hbb_r50_fpn_1x_dota_oc](./rotated_retinanet_hbb_r50_fpn_1x_dota_oc.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/rotated_retinanet/rotated_retinanet_hbb_r50_fpn_1x_dota_oc/rotated_retinanet_hbb_r50_fpn_1x_dota_oc-e8a7c7df.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/rotated_retinanet/rotated_retinanet_hbb_r50_fpn_1x_dota_oc/rotated_retinanet_hbb_r50_fpn_1x_dota_oc_20220121_095315.log.json)
+| ResNet50 (1024,1024,200) | 68.42 | le90 | 1x | 3.38 | 16.9 | - | 2 | [rotated_retinanet_obb_r50_fpn_1x_dota_le90](./rotated_retinanet_obb_r50_fpn_1x_dota_le90.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/rotated_retinanet/rotated_retinanet_obb_r50_fpn_1x_dota_le90/rotated_retinanet_obb_r50_fpn_1x_dota_le90-c0097bc4.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/rotated_retinanet/rotated_retinanet_obb_r50_fpn_1x_dota_le90/rotated_retinanet_obb_r50_fpn_1x_dota_le90_20220128_130740.log.json)
+| ResNet50 (1024,1024,200) | 68.79 | le90 | 1x | 2.36 | 22.4 | - | 2 | [rotated_retinanet_obb_r50_fpn_fp16_1x_dota_le90](./rotated_retinanet_obb_r50_fpn_fp16_1x_dota_le90.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/rotated_retinanet/rotated_retinanet_obb_r50_fpn_fp16_1x_dota_le90/rotated_retinanet_obb_r50_fpn_fp16_1x_dota_le90-01de71b5.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/rotated_retinanet/rotated_retinanet_obb_r50_fpn_fp16_1x_dota_le90/rotated_retinanet_obb_r50_fpn_fp16_1x_dota_le90_20220303_183714.log.json)
+| ResNet50 (1024,1024,200) | 69.79 | le135 | 1x | 3.38 | 17.2 | - | 2 | [rotated_retinanet_obb_r50_fpn_1x_dota_le135](./rotated_retinanet_obb_r50_fpn_1x_dota_le135.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/rotated_retinanet/rotated_retinanet_obb_r50_fpn_1x_dota_le135/rotated_retinanet_obb_r50_fpn_1x_dota_le135-e4131166.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/rotated_retinanet/rotated_retinanet_obb_r50_fpn_1x_dota_le135/rotated_retinanet_obb_r50_fpn_1x_dota_le135_20220128_130755.log.json)
+| ResNet50 (1024,1024,200) | 76.50 | le90 | 1x | | 17.5 | MS+RR | 2 | [rotated_retinanet_obb_r50_fpn_1x_dota_ms_rr_le90](./rotated_retinanet_obb_r50_fpn_1x_dota_ms_rr_le90.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/rotated_retinanet/rotated_retinanet_obb_r50_fpn_1x_dota_ms_rr_le90/rotated_retinanet_obb_r50_fpn_1x_dota_ms_rr_le90-1da1ec9c.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/rotated_retinanet/rotated_retinanet_obb_r50_fpn_1x_dota_ms_rr_le90/rotated_retinanet_obb_r50_fpn_1x_dota_ms_rr_le90_20220210_114843.log.json)
+
+HRSC
+
+| Backbone | mAP | Angle | lr schd | Mem (GB) | Inf Time (fps) | Aug | Batch Size | Configs | Download |
+|:---------------------:|:-----:|:-----------:|:-------:|:---------:|:---------:|:---------:|:---------:|:---------------------------------------------------------------------------------------------:|:-------------:|
+| ResNet50 (800,800) | 72.62 | le90 | 3x | | | - | 2 | [rotated_retinanet_obb_r50_fpn_3x_hrsc_le90](./rotated_retinanet_obb_r50_fpn_3x_hrsc_le90.py) |
+Notes:
- `MS` means multiple scale image split.
- `RR` means random rotation.
+- `hbb` means the input of the assigner is the predicted box and the horizontal box that can surround the GT. `obb` means the input of the assigner is the predicted box and the GT. They can be switched by `assign_by_circumhbbox` in `RotatedRetinaHead`.
## Citation
```
diff --git a/configs/rotated_retinanet/metafile.yml b/configs/rotated_retinanet/metafile.yml
index a819196fa..4a7d413da 100644
--- a/configs/rotated_retinanet/metafile.yml
+++ b/configs/rotated_retinanet/metafile.yml
@@ -26,6 +26,18 @@ Models:
mAP: 68.42
Weights: https://download.openmmlab.com/mmrotate/v0.1.0/rotated_retinanet/rotated_retinanet_obb_r50_fpn_1x_dota_le90/rotated_retinanet_obb_r50_fpn_1x_dota_le90-c0097bc4.pth
+ - Name: rotated_retinanet_obb_r50_fpn_fp16_1x_dota_le90
+ In Collection: rotated_retinanet
+ Config: configs/rotated_retinanet/rotated_retinanet_obb_r50_fpn_fp16_1x_dota_le90.py
+ Metadata:
+ Training Data: DOTAv1.0
+ Results:
+ - Task: Oriented Object Detection
+ Dataset: DOTAv1.0
+ Metrics:
+ mAP: 68.79
+ Weights: https://download.openmmlab.com/mmrotate/v0.1.0/rotated_retinanet/rotated_retinanet_obb_r50_fpn_fp16_1x_dota_le90/rotated_retinanet_obb_r50_fpn_fp16_1x_dota_le90-01de71b5.pth
+
- Name: rotated_retinanet_obb_r50_fpn_1x_dota_le135
In Collection: rotated_retinanet
Config: configs/rotated_retinanet/rotated_retinanet_obb_r50_fpn_1x_dota_le135.py
diff --git a/configs/rotated_retinanet/rotated_retinanet_obb_r50_fpn_3x_hrsc_le90.py b/configs/rotated_retinanet/rotated_retinanet_obb_r50_fpn_3x_hrsc_le90.py
new file mode 100644
index 000000000..d80c438cf
--- /dev/null
+++ b/configs/rotated_retinanet/rotated_retinanet_obb_r50_fpn_3x_hrsc_le90.py
@@ -0,0 +1,92 @@
+_base_ = [
+ '../_base_/datasets/hrsc.py', '../_base_/schedules/schedule_3x.py',
+ '../_base_/default_runtime.py'
+]
+
+angle_version = 'le90'
+model = dict(
+ type='RotatedRetinaNet',
+ backbone=dict(
+ type='ResNet',
+ depth=50,
+ num_stages=4,
+ out_indices=(0, 1, 2, 3),
+ frozen_stages=1,
+ zero_init_residual=False,
+ norm_cfg=dict(type='BN', requires_grad=True),
+ norm_eval=True,
+ style='pytorch',
+ init_cfg=dict(type='Pretrained', checkpoint='torchvision://resnet50')),
+ neck=dict(
+ type='FPN',
+ in_channels=[256, 512, 1024, 2048],
+ out_channels=256,
+ start_level=1,
+ add_extra_convs='on_input',
+ num_outs=5),
+ bbox_head=dict(
+ type='RotatedRetinaHead',
+ num_classes=1,
+ in_channels=256,
+ stacked_convs=4,
+ feat_channels=256,
+ assign_by_circumhbbox=None,
+ anchor_generator=dict(
+ type='RotatedAnchorGenerator',
+ octave_base_scale=4,
+ scales_per_octave=3,
+ ratios=[1.0, 0.5, 2.0],
+ strides=[8, 16, 32, 64, 128]),
+ bbox_coder=dict(
+ type='DeltaXYWHAOBBoxCoder',
+ angle_range=angle_version,
+ norm_factor=None,
+ edge_swap=True,
+ proj_xy=True,
+ target_means=(.0, .0, .0, .0, .0),
+ target_stds=(1.0, 1.0, 1.0, 1.0, 1.0)),
+ loss_cls=dict(
+ type='FocalLoss',
+ use_sigmoid=True,
+ gamma=2.0,
+ alpha=0.25,
+ loss_weight=1.0),
+ loss_bbox=dict(type='L1Loss', loss_weight=1.0)),
+ train_cfg=dict(
+ assigner=dict(
+ type='MaxIoUAssigner',
+ pos_iou_thr=0.5,
+ neg_iou_thr=0.4,
+ min_pos_iou=0,
+ ignore_iof_thr=-1,
+ iou_calculator=dict(type='RBboxOverlaps2D')),
+ allowed_border=-1,
+ pos_weight=-1,
+ debug=False),
+ test_cfg=dict(
+ nms_pre=2000,
+ min_bbox_size=0,
+ score_thr=0.05,
+ nms=dict(iou_thr=0.1),
+ max_per_img=2000))
+
+img_norm_cfg = dict(
+ mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True)
+train_pipeline = [
+ dict(type='LoadImageFromFile'),
+ dict(type='LoadAnnotations', with_bbox=True),
+ dict(type='RResize', img_scale=(800, 800)),
+ dict(
+ type='RRandomFlip',
+ flip_ratio=[0.25, 0.25, 0.25],
+ direction=['horizontal', 'vertical', 'diagonal'],
+ version=angle_version),
+ dict(type='Normalize', **img_norm_cfg),
+ dict(type='Pad', size_divisor=32),
+ dict(type='DefaultFormatBundle'),
+ dict(type='Collect', keys=['img', 'gt_bboxes', 'gt_labels'])
+]
+data = dict(
+ train=dict(pipeline=train_pipeline, version=angle_version),
+ val=dict(version=angle_version),
+ test=dict(version=angle_version))
diff --git a/configs/rotated_retinanet/rotated_retinanet_obb_r50_fpn_fp16_1x_dota_le90.py b/configs/rotated_retinanet/rotated_retinanet_obb_r50_fpn_fp16_1x_dota_le90.py
new file mode 100644
index 000000000..d2f477372
--- /dev/null
+++ b/configs/rotated_retinanet/rotated_retinanet_obb_r50_fpn_fp16_1x_dota_le90.py
@@ -0,0 +1,3 @@
+_base_ = ['./rotated_retinanet_obb_r50_fpn_1x_dota_le90.py']
+
+fp16 = dict(loss_scale='dynamic')
diff --git a/configs/s2anet/README.md b/configs/s2anet/README.md
index afbb77894..efaec4bfa 100644
--- a/configs/s2anet/README.md
+++ b/configs/s2anet/README.md
@@ -1,21 +1,30 @@
-# [Align Deep Features for Oriented Object Detection](https://ieeexplore.ieee.org/document/9377550)
+# S2ANet
+> [Align Deep Features for Oriented Object Detection](https://ieeexplore.ieee.org/document/9377550)
## Abstract
-![illustration](https://raw.githubusercontent.com/zytx121/image-host/main/imgs/s2a.png)
+
+
+
The past decade has witnessed significant progress on detecting objects in aerial images that are often distributed with large-scale variations and arbitrary orientations. However, most of existing methods rely on heuristically defined anchors with different scales, angles, and aspect ratios, and usually suffer from severe misalignment between anchor boxes (ABs) and axis-aligned convolutional features, which lead to the common inconsistency between the classification score and localization accuracy. To address this issue, we propose a single-shot alignment network (S²A-Net) consisting of two modules: a feature alignment module (FAM) and an oriented detection module (ODM). The FAM can generate high-quality anchors with an anchor refinement network and adaptively align the convolutional features according to the ABs with a novel alignment convolution. The ODM first adopts active rotating filters to encode the orientation information and then produces orientation-sensitive and orientation-invariant features to alleviate the inconsistency between classification score and localization accuracy. Besides, we further explore the approach to detect objects in large-size images, which leads to a better trade-off between speed and accuracy. Extensive experiments demonstrate that our method can achieve the state-of-the-art performance on two commonly used aerial objects' data sets (i.e., DOTA and HRSC2016) while keeping high efficiency.
## Results and models
-### DOTA1.0
+DOTA1.0
| Backbone | mAP | Angle | lr schd | Mem (GB) | Inf Time (fps) | Aug | Batch Size | Configs | Download |
|:------------:|:----------:|:-----------:|:---------:|:---------:|:---------:|:---------:|:---------:|:---------:|:-------------:|
-| ResNet50 (1024,1024,200) | 69.79 | le135 | 1x | 3.38 | 16.6 | - | 2 | [rotated_retinanet_obb_r50_fpn_1x_dota_le135](../rotated_retinanet/rotated_retinanet_obb_r50_fpn_1x_dota_le135.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/rotated_retinanet/rotated_retinanet_obb_r50_fpn_1x_dota_le135/rotated_retinanet_obb_r50_fpn_1x_dota_le135-e4131166.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/rotated_retinanet/rotated_retinanet_obb_r50_fpn_1x_dota_le135/rotated_retinanet_obb_r50_fpn_1x_dota_le135_20220128_130755.log.json)
-| ResNet50 (1024,1024,200) | 73.91 | le135 | 1x | 3.14 | 15.3 | - | 2 | [s2anet_r50_fpn_1x_dota_le135](./s2anet_r50_fpn_1x_dota_le135.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/s2anet/s2anet_r50_fpn_1x_dota_le135/s2anet_r50_fpn_1x_dota_le135-5dfcf396.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/s2anet/s2anet_r50_fpn_1x_dota_le135/s2anet_r50_fpn_1x_dota_le135_20220124_163529.log.json)
+| ResNet50 (1024,1024,200) | 69.79 | le135 | 1x | 3.38 | 17.2 | - | 2 | [rotated_retinanet_obb_r50_fpn_1x_dota_le135](../rotated_retinanet/rotated_retinanet_obb_r50_fpn_1x_dota_le135.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/rotated_retinanet/rotated_retinanet_obb_r50_fpn_1x_dota_le135/rotated_retinanet_obb_r50_fpn_1x_dota_le135-e4131166.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/rotated_retinanet/rotated_retinanet_obb_r50_fpn_1x_dota_le135/rotated_retinanet_obb_r50_fpn_1x_dota_le135_20220128_130755.log.json)
+| ResNet50 (1024,1024,200) | 73.91 | le135 | 1x | 3.14 | 15.5 | - | 2 | [s2anet_r50_fpn_1x_dota_le135](./s2anet_r50_fpn_1x_dota_le135.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/s2anet/s2anet_r50_fpn_1x_dota_le135/s2anet_r50_fpn_1x_dota_le135-5dfcf396.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/s2anet/s2anet_r50_fpn_1x_dota_le135/s2anet_r50_fpn_1x_dota_le135_20220124_163529.log.json)
+| ResNet50 (1024,1024,200) | 74.19 | le135 | 1x | 2.17 | 17.4 | - | 2 | [s2anet_r50_fpn_fp16_1x_dota_le135](./s2anet_r50_fpn_fp16_1x_dota_le135.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/s2anet/s2anet_r50_fpn_fp16_1x_dota_le135/s2anet_r50_fpn_fp16_1x_dota_le135-5cac515c.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/s2anet/s2anet_r50_fpn_fp16_1x_dota_le135/s2anet_r50_fpn_fp16_1x_dota_le135_20220303_194910.log.json)
+HRSC
+
+| Backbone | mAP | Angle | lr schd | Mem (GB) | Inf Time (fps) | Aug | Batch Size | Configs | Download |
+|:---------------------:|:-----:|:-----------:|:-------:|:---------:|:---------:|:---------:|:---------:|:---------------------------------------------------------------------------------------------:|:-------------:|
+| ResNet50 (800,800) | 89.75 | le90 | 3x | | | - | 2 | [s2anet_r50_fpn_3x_hrsc_le135](./s2anet_r50_fpn_3x_hrsc_le135.py) |
## Citation
```
diff --git a/configs/s2anet/metafile.yml b/configs/s2anet/metafile.yml
index a406a7402..946a8c36d 100644
--- a/configs/s2anet/metafile.yml
+++ b/configs/s2anet/metafile.yml
@@ -25,3 +25,15 @@ Models:
Metrics:
mAP: 73.91
Weights: https://download.openmmlab.com/mmrotate/v0.1.0/s2anet/s2anet_r50_fpn_1x_dota_le135/s2anet_r50_fpn_1x_dota_le135-5dfcf396.pth
+
+ - Name: s2anet_r50_fpn_fp16_1x_dota_le135
+ In Collection: s2anet
+ Config: configs/s2anet/s2anet_r50_fpn_fp16_1x_dota_le135.py
+ Metadata:
+ Training Data: DOTAv1.0
+ Results:
+ - Task: Oriented Object Detection
+ Dataset: DOTAv1.0
+ Metrics:
+ mAP: 74.19
+ Weights: https://download.openmmlab.com/mmrotate/v0.1.0/s2anet/s2anet_r50_fpn_fp16_1x_dota_le135/s2anet_r50_fpn_fp16_1x_dota_le135-5cac515c.pth
diff --git a/configs/s2anet/s2anet_r50_fpn_3x_hrsc_le135.py b/configs/s2anet/s2anet_r50_fpn_3x_hrsc_le135.py
new file mode 100644
index 000000000..98edc2631
--- /dev/null
+++ b/configs/s2anet/s2anet_r50_fpn_3x_hrsc_le135.py
@@ -0,0 +1,132 @@
+_base_ = [
+ '../_base_/datasets/hrsc.py', '../_base_/schedules/schedule_3x.py',
+ '../_base_/default_runtime.py'
+]
+
+angle_version = 'le135'
+model = dict(
+ type='S2ANet',
+ backbone=dict(
+ type='ResNet',
+ depth=50,
+ num_stages=4,
+ out_indices=(0, 1, 2, 3),
+ frozen_stages=1,
+ zero_init_residual=False,
+ norm_cfg=dict(type='BN', requires_grad=True),
+ norm_eval=True,
+ style='pytorch',
+ init_cfg=dict(type='Pretrained', checkpoint='torchvision://resnet50')),
+ neck=dict(
+ type='FPN',
+ in_channels=[256, 512, 1024, 2048],
+ out_channels=256,
+ start_level=1,
+ add_extra_convs='on_input',
+ num_outs=5),
+ fam_head=dict(
+ type='RotatedRetinaHead',
+ num_classes=1,
+ in_channels=256,
+ stacked_convs=2,
+ feat_channels=256,
+ assign_by_circumhbbox=None,
+ anchor_generator=dict(
+ type='RotatedAnchorGenerator',
+ scales=[4],
+ ratios=[1.0],
+ strides=[8, 16, 32, 64, 128]),
+ bbox_coder=dict(
+ type='DeltaXYWHAOBBoxCoder',
+ angle_range=angle_version,
+ norm_factor=1,
+ edge_swap=False,
+ proj_xy=True,
+ target_means=(.0, .0, .0, .0, .0),
+ target_stds=(1.0, 1.0, 1.0, 1.0, 1.0)),
+ loss_cls=dict(
+ type='FocalLoss',
+ use_sigmoid=True,
+ gamma=2.0,
+ alpha=0.25,
+ loss_weight=1.0),
+ loss_bbox=dict(type='SmoothL1Loss', beta=0.11, loss_weight=1.0)),
+ align_cfgs=dict(
+ type='AlignConv',
+ kernel_size=3,
+ channels=256,
+ featmap_strides=[8, 16, 32, 64, 128]),
+ odm_head=dict(
+ type='ODMRefineHead',
+ num_classes=1,
+ in_channels=256,
+ stacked_convs=2,
+ feat_channels=256,
+ assign_by_circumhbbox=None,
+ anchor_generator=dict(
+ type='PseudoAnchorGenerator', strides=[8, 16, 32, 64, 128]),
+ bbox_coder=dict(
+ type='DeltaXYWHAOBBoxCoder',
+ angle_range=angle_version,
+ norm_factor=1,
+ edge_swap=False,
+ proj_xy=True,
+ target_means=(0.0, 0.0, 0.0, 0.0, 0.0),
+ target_stds=(1.0, 1.0, 1.0, 1.0, 1.0)),
+ loss_cls=dict(
+ type='FocalLoss',
+ use_sigmoid=True,
+ gamma=2.0,
+ alpha=0.25,
+ loss_weight=1.0),
+ loss_bbox=dict(type='SmoothL1Loss', beta=0.11, loss_weight=1.0)),
+ train_cfg=dict(
+ fam_cfg=dict(
+ assigner=dict(
+ type='MaxIoUAssigner',
+ pos_iou_thr=0.5,
+ neg_iou_thr=0.4,
+ min_pos_iou=0,
+ ignore_iof_thr=-1,
+ iou_calculator=dict(type='RBboxOverlaps2D')),
+ allowed_border=-1,
+ pos_weight=-1,
+ debug=False),
+ odm_cfg=dict(
+ assigner=dict(
+ type='MaxIoUAssigner',
+ pos_iou_thr=0.5,
+ neg_iou_thr=0.4,
+ min_pos_iou=0,
+ ignore_iof_thr=-1,
+ iou_calculator=dict(type='RBboxOverlaps2D')),
+ allowed_border=-1,
+ pos_weight=-1,
+ debug=False)),
+ test_cfg=dict(
+ nms_pre=2000,
+ min_bbox_size=0,
+ score_thr=0.05,
+ nms=dict(iou_thr=0.1),
+ max_per_img=2000))
+
+img_norm_cfg = dict(
+ mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True)
+train_pipeline = [
+ dict(type='LoadImageFromFile'),
+ dict(type='LoadAnnotations', with_bbox=True),
+ dict(type='RResize', img_scale=(800, 800)),
+ dict(
+ type='RRandomFlip',
+ flip_ratio=[0.25, 0.25, 0.25],
+ direction=['horizontal', 'vertical', 'diagonal'],
+ version=angle_version),
+ dict(type='Normalize', **img_norm_cfg),
+ dict(type='Pad', size_divisor=32),
+ dict(type='DefaultFormatBundle'),
+ dict(type='Collect', keys=['img', 'gt_bboxes', 'gt_labels'])
+]
+data = dict(
+ train=dict(pipeline=train_pipeline, version=angle_version),
+ val=dict(version=angle_version),
+ test=dict(version=angle_version))
diff --git a/configs/s2anet/s2anet_r50_fpn_fp16_1x_dota_le135.py b/configs/s2anet/s2anet_r50_fpn_fp16_1x_dota_le135.py
new file mode 100644
index 000000000..34bf65837
--- /dev/null
+++ b/configs/s2anet/s2anet_r50_fpn_fp16_1x_dota_le135.py
@@ -0,0 +1,3 @@
+_base_ = ['./s2anet_r50_fpn_1x_dota_le135.py']
+
+fp16 = dict(loss_scale='dynamic')
diff --git a/configs/sasm_reppoints/README.md b/configs/sasm_reppoints/README.md
index 4d285c401..8eb60cfcb 100644
--- a/configs/sasm_reppoints/README.md
+++ b/configs/sasm_reppoints/README.md
@@ -1,4 +1,5 @@
-# SASM-RepPoints
+# SASM
+> SASM-RepPoints
## Abstract
@@ -7,13 +8,13 @@ Coming soon!
## Results and models
-### DOTA1.0
+DOTA1.0
#### RepPoints
| Backbone | mAP | Angle | lr schd | Mem (GB) | Inf Time (fps) | Aug | Batch Size | Configs | Download |
|:------------:|:----------:|:-----------:|:---------:|:---------:|:---------:|:---------:|:---------:|:---------:|:-------------:|
-| ResNet50 (1024,1024,200) | 59.44 | oc | 1x | 3.45 | 15.9 | - | 2 | [rotated_reppoints_r50_fpn_1x_dota_oc](../rotated_reppoints/rotated_reppoints_r50_fpn_1x_dota_oc.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/rotated_reppoints/rotated_reppoints_r50_fpn_1x_dota_oc/rotated_reppoints_r50_fpn_1x_dota_oc-d38ce217.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/rotated_reppoints/rotated_reppoints_r50_fpn_1x_dota_oc/rotated_reppoints_r50_fpn_1x_dota_oc_20220205_145010.log.json)
-| ResNet50 (1024,1024,200) | 66.45 | oc | 1x | 3.53 | 15.7 | - | 2 | [sasm_reppoints_r50_fpn_1x_dota_oc](./sasm_reppoints_r50_fpn_1x_dota_oc.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/sasm/sasm_reppoints_r50_fpn_1x_dota_oc/sasm_reppoints_r50_fpn_1x_dota_oc-6d9edded.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/sasm/sasm_reppoints_r50_fpn_1x_dota_oc/sasm_reppoints_r50_fpn_1x_dota_oc_20220205_144938.log.json)
+| ResNet50 (1024,1024,200) | 59.44 | oc | 1x | 3.45 | 15.6 | - | 2 | [rotated_reppoints_r50_fpn_1x_dota_oc](../rotated_reppoints/rotated_reppoints_r50_fpn_1x_dota_oc.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/rotated_reppoints/rotated_reppoints_r50_fpn_1x_dota_oc/rotated_reppoints_r50_fpn_1x_dota_oc-d38ce217.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/rotated_reppoints/rotated_reppoints_r50_fpn_1x_dota_oc/rotated_reppoints_r50_fpn_1x_dota_oc_20220205_145010.log.json)
+| ResNet50 (1024,1024,200) | 66.45 | oc | 1x | 3.53 | 15.3 | - | 2 | [sasm_reppoints_r50_fpn_1x_dota_oc](./sasm_reppoints_r50_fpn_1x_dota_oc.py) | [model](https://download.openmmlab.com/mmrotate/v0.1.0/sasm/sasm_reppoints_r50_fpn_1x_dota_oc/sasm_reppoints_r50_fpn_1x_dota_oc-6d9edded.pth) | [log](https://download.openmmlab.com/mmrotate/v0.1.0/sasm/sasm_reppoints_r50_fpn_1x_dota_oc/sasm_reppoints_r50_fpn_1x_dota_oc_20220205_144938.log.json)
## Citation
diff --git a/demo/MMRotate_Tutorial.ipynb b/demo/MMRotate_Tutorial.ipynb
new file mode 100644
index 000000000..ab87eb34b
--- /dev/null
+++ b/demo/MMRotate_Tutorial.ipynb
@@ -0,0 +1,2351 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "aGYwt_UjIrqp"
+ },
+ "source": [
+ "# Rotated Object Detection\n",
+ "\n",
+ "In this tutorial, you will learn:\n",
+ "- the basic structure of Oriented R-CNN.\n",
+ "- to perform inference with a MMRotate detector.\n",
+ "- to perform inference on huge image.\n",
+ "\n",
+ "Let's start!\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "tJxJHruNLb7Y"
+ },
+ "source": [
+ "## Install MMRotate"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "Wi4LPmsR66sy",
+ "outputId": "0b8cf80b-bfc5-4a05-98a2-f3ebf631409e"
+ },
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "nvcc: NVIDIA (R) Cuda compiler driver\n",
+ "Copyright (c) 2005-2020 NVIDIA Corporation\n",
+ "Built on Mon_Oct_12_20:09:46_PDT_2020\n",
+ "Cuda compilation tools, release 11.1, V11.1.105\n",
+ "Build cuda_11.1.TC455_06.29190527_0\n",
+ "gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0\n",
+ "Copyright (C) 2017 Free Software Foundation, Inc.\n",
+ "This is free software; see the source for copying conditions. There is NO\n",
+ "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n",
+ "\n"
+ ]
+ }
+ ],
+ "source": [
+ "# Check nvcc version\n",
+ "!nvcc -V\n",
+ "# Check GCC version\n",
+ "!gcc --version"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "gkGnB9WyHSXB",
+ "outputId": "ee324580-0a97-4e4d-ee41-b19ed3c1dab3"
+ },
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "Looking in links: https://download.pytorch.org/whl/torch_stable.html\n",
+ "Collecting torch==1.9.0+cu111\n",
+ " Downloading https://download.pytorch.org/whl/cu111/torch-1.9.0%2Bcu111-cp37-cp37m-linux_x86_64.whl (2041.3 MB)\n",
+ "\u001B[K |█████████████ | 834.1 MB 1.3 MB/s eta 0:15:32tcmalloc: large alloc 1147494400 bytes == 0x563b09e8c000 @ 0x7f7eebd04615 0x563ad106c3bc 0x563ad114d18a 0x563ad106f1cd 0x563ad1161b3d 0x563ad10e3458 0x563ad10de02f 0x563ad1070aba 0x563ad10e32c0 0x563ad10de02f 0x563ad1070aba 0x563ad10dfcd4 0x563ad1162986 0x563ad10df350 0x563ad1162986 0x563ad10df350 0x563ad1162986 0x563ad10df350 0x563ad1070f19 0x563ad10b4a79 0x563ad106fb32 0x563ad10e31dd 0x563ad10de02f 0x563ad1070aba 0x563ad10dfcd4 0x563ad10de02f 0x563ad1070aba 0x563ad10deeae 0x563ad10709da 0x563ad10df108 0x563ad10de02f\n",
+ "\u001B[K |████████████████▌ | 1055.7 MB 1.4 MB/s eta 0:11:52tcmalloc: large alloc 1434370048 bytes == 0x563b4e4e2000 @ 0x7f7eebd04615 0x563ad106c3bc 0x563ad114d18a 0x563ad106f1cd 0x563ad1161b3d 0x563ad10e3458 0x563ad10de02f 0x563ad1070aba 0x563ad10e32c0 0x563ad10de02f 0x563ad1070aba 0x563ad10dfcd4 0x563ad1162986 0x563ad10df350 0x563ad1162986 0x563ad10df350 0x563ad1162986 0x563ad10df350 0x563ad1070f19 0x563ad10b4a79 0x563ad106fb32 0x563ad10e31dd 0x563ad10de02f 0x563ad1070aba 0x563ad10dfcd4 0x563ad10de02f 0x563ad1070aba 0x563ad10deeae 0x563ad10709da 0x563ad10df108 0x563ad10de02f\n",
+ "\u001B[K |█████████████████████ | 1336.2 MB 1.3 MB/s eta 0:09:05tcmalloc: large alloc 1792966656 bytes == 0x563ad3314000 @ 0x7f7eebd04615 0x563ad106c3bc 0x563ad114d18a 0x563ad106f1cd 0x563ad1161b3d 0x563ad10e3458 0x563ad10de02f 0x563ad1070aba 0x563ad10e32c0 0x563ad10de02f 0x563ad1070aba 0x563ad10dfcd4 0x563ad1162986 0x563ad10df350 0x563ad1162986 0x563ad10df350 0x563ad1162986 0x563ad10df350 0x563ad1070f19 0x563ad10b4a79 0x563ad106fb32 0x563ad10e31dd 0x563ad10de02f 0x563ad1070aba 0x563ad10dfcd4 0x563ad10de02f 0x563ad1070aba 0x563ad10deeae 0x563ad10709da 0x563ad10df108 0x563ad10de02f\n",
+ "\u001B[K |██████████████████████████▌ | 1691.1 MB 1.2 MB/s eta 0:04:49tcmalloc: large alloc 2241208320 bytes == 0x563b3e0fc000 @ 0x7f7eebd04615 0x563ad106c3bc 0x563ad114d18a 0x563ad106f1cd 0x563ad1161b3d 0x563ad10e3458 0x563ad10de02f 0x563ad1070aba 0x563ad10e32c0 0x563ad10de02f 0x563ad1070aba 0x563ad10dfcd4 0x563ad1162986 0x563ad10df350 0x563ad1162986 0x563ad10df350 0x563ad1162986 0x563ad10df350 0x563ad1070f19 0x563ad10b4a79 0x563ad106fb32 0x563ad10e31dd 0x563ad10de02f 0x563ad1070aba 0x563ad10dfcd4 0x563ad10de02f 0x563ad1070aba 0x563ad10deeae 0x563ad10709da 0x563ad10df108 0x563ad10de02f\n",
+ "\u001B[K |████████████████████████████████| 2041.3 MB 1.3 MB/s eta 0:00:01tcmalloc: large alloc 2041348096 bytes == 0x563bc3a5e000 @ 0x7f7eebd031e7 0x563ad10a25d7 0x563ad106c3bc 0x563ad114d18a 0x563ad106f1cd 0x563ad1161b3d 0x563ad10e3458 0x563ad10de02f 0x563ad1070aba 0x563ad10df108 0x563ad10de02f 0x563ad1070aba 0x563ad10df108 0x563ad10de02f 0x563ad1070aba 0x563ad10df108 0x563ad10de02f 0x563ad1070aba 0x563ad10df108 0x563ad10de02f 0x563ad1070aba 0x563ad10df108 0x563ad10709da 0x563ad10df108 0x563ad10de02f 0x563ad1070aba 0x563ad10dfcd4 0x563ad10de02f 0x563ad1070aba 0x563ad10dfcd4 0x563ad10de02f\n",
+ "tcmalloc: large alloc 2551685120 bytes == 0x563cb19aa000 @ 0x7f7eebd04615 0x563ad106c3bc 0x563ad114d18a 0x563ad106f1cd 0x563ad1161b3d 0x563ad10e3458 0x563ad10de02f 0x563ad1070aba 0x563ad10df108 0x563ad10de02f 0x563ad1070aba 0x563ad10df108 0x563ad10de02f 0x563ad1070aba 0x563ad10df108 0x563ad10de02f 0x563ad1070aba 0x563ad10df108 0x563ad10de02f 0x563ad1070aba 0x563ad10df108 0x563ad10709da 0x563ad10df108 0x563ad10de02f 0x563ad1070aba 0x563ad10dfcd4 0x563ad10de02f 0x563ad1070aba 0x563ad10dfcd4 0x563ad10de02f 0x563ad1071151\n",
+ "\u001B[K |████████████████████████████████| 2041.3 MB 7.2 kB/s \n",
+ "\u001B[?25hCollecting torchvision==0.10.0+cu111\n",
+ " Downloading https://download.pytorch.org/whl/cu111/torchvision-0.10.0%2Bcu111-cp37-cp37m-linux_x86_64.whl (23.2 MB)\n",
+ "\u001B[K |████████████████████████████████| 23.2 MB 99.4 MB/s \n",
+ "\u001B[?25hRequirement already satisfied: typing-extensions in /usr/local/lib/python3.7/dist-packages (from torch==1.9.0+cu111) (3.10.0.2)\n",
+ "Requirement already satisfied: pillow>=5.3.0 in /usr/local/lib/python3.7/dist-packages (from torchvision==0.10.0+cu111) (7.1.2)\n",
+ "Requirement already satisfied: numpy in /usr/local/lib/python3.7/dist-packages (from torchvision==0.10.0+cu111) (1.21.5)\n",
+ "Installing collected packages: torch, torchvision\n",
+ " Attempting uninstall: torch\n",
+ " Found existing installation: torch 1.10.0+cu111\n",
+ " Uninstalling torch-1.10.0+cu111:\n",
+ " Successfully uninstalled torch-1.10.0+cu111\n",
+ " Attempting uninstall: torchvision\n",
+ " Found existing installation: torchvision 0.11.1+cu111\n",
+ " Uninstalling torchvision-0.11.1+cu111:\n",
+ " Successfully uninstalled torchvision-0.11.1+cu111\n",
+ "\u001B[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n",
+ "torchtext 0.11.0 requires torch==1.10.0, but you have torch 1.9.0+cu111 which is incompatible.\n",
+ "torchaudio 0.10.0+cu111 requires torch==1.10.0, but you have torch 1.9.0+cu111 which is incompatible.\u001B[0m\n",
+ "Successfully installed torch-1.9.0+cu111 torchvision-0.10.0+cu111\n",
+ "Looking in links: https://download.openmmlab.com/mmcv/dist/cu111/torch1.9.0/index.html\n",
+ "Collecting mmcv-full\n",
+ " Downloading https://download.openmmlab.com/mmcv/dist/cu111/torch1.9.0/mmcv_full-1.4.6-cp37-cp37m-manylinux1_x86_64.whl (45.2 MB)\n",
+ "\u001B[K |████████████████████████████████| 45.2 MB 2.8 MB/s \n",
+ "\u001B[?25hCollecting addict\n",
+ " Downloading addict-2.4.0-py3-none-any.whl (3.8 kB)\n",
+ "Requirement already satisfied: numpy in /usr/local/lib/python3.7/dist-packages (from mmcv-full) (1.21.5)\n",
+ "Requirement already satisfied: opencv-python>=3 in /usr/local/lib/python3.7/dist-packages (from mmcv-full) (4.1.2.30)\n",
+ "Requirement already satisfied: Pillow in /usr/local/lib/python3.7/dist-packages (from mmcv-full) (7.1.2)\n",
+ "Requirement already satisfied: packaging in /usr/local/lib/python3.7/dist-packages (from mmcv-full) (21.3)\n",
+ "Requirement already satisfied: pyyaml in /usr/local/lib/python3.7/dist-packages (from mmcv-full) (3.13)\n",
+ "Collecting yapf\n",
+ " Downloading yapf-0.32.0-py2.py3-none-any.whl (190 kB)\n",
+ "\u001B[K |████████████████████████████████| 190 kB 13.6 MB/s \n",
+ "\u001B[?25hRequirement already satisfied: pyparsing!=3.0.5,>=2.0.2 in /usr/local/lib/python3.7/dist-packages (from packaging->mmcv-full) (3.0.7)\n",
+ "Installing collected packages: yapf, addict, mmcv-full\n",
+ "Successfully installed addict-2.4.0 mmcv-full-1.4.6 yapf-0.32.0\n",
+ "Collecting mmdet\n",
+ " Downloading mmdet-2.22.0-py3-none-any.whl (1.3 MB)\n",
+ "\u001B[K |████████████████████████████████| 1.3 MB 25.0 MB/s \n",
+ "\u001B[?25hRequirement already satisfied: pycocotools in /usr/local/lib/python3.7/dist-packages (from mmdet) (2.0.4)\n",
+ "Requirement already satisfied: numpy in /usr/local/lib/python3.7/dist-packages (from mmdet) (1.21.5)\n",
+ "Requirement already satisfied: matplotlib in /usr/local/lib/python3.7/dist-packages (from mmdet) (3.2.2)\n",
+ "Requirement already satisfied: six in /usr/local/lib/python3.7/dist-packages (from mmdet) (1.15.0)\n",
+ "Collecting terminaltables\n",
+ " Downloading terminaltables-3.1.10-py2.py3-none-any.whl (15 kB)\n",
+ "Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.1 in /usr/local/lib/python3.7/dist-packages (from matplotlib->mmdet) (3.0.7)\n",
+ "Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.7/dist-packages (from matplotlib->mmdet) (0.11.0)\n",
+ "Requirement already satisfied: python-dateutil>=2.1 in /usr/local/lib/python3.7/dist-packages (from matplotlib->mmdet) (2.8.2)\n",
+ "Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.7/dist-packages (from matplotlib->mmdet) (1.3.2)\n",
+ "Installing collected packages: terminaltables, mmdet\n",
+ "Successfully installed mmdet-2.22.0 terminaltables-3.1.10\n",
+ "Cloning into 'mmrotate'...\n",
+ "remote: Enumerating objects: 652, done.\u001B[K\n",
+ "remote: Counting objects: 100% (652/652), done.\u001B[K\n",
+ "remote: Compressing objects: 100% (450/450), done.\u001B[K\n",
+ "remote: Total 652 (delta 287), reused 514 (delta 188), pack-reused 0\u001B[K\n",
+ "Receiving objects: 100% (652/652), 5.02 MiB | 19.94 MiB/s, done.\n",
+ "Resolving deltas: 100% (287/287), done.\n",
+ "/content/mmrotate\n",
+ "Obtaining file:///content/mmrotate\n",
+ "Collecting e2cnn\n",
+ " Downloading e2cnn-0.2.1-py3-none-any.whl (224 kB)\n",
+ "\u001B[K |████████████████████████████████| 224 kB 29.2 MB/s \n",
+ "\u001B[?25hRequirement already satisfied: matplotlib in /usr/local/lib/python3.7/dist-packages (from mmrotate==0.1.0) (3.2.2)\n",
+ "Requirement already satisfied: mmcv-full in /usr/local/lib/python3.7/dist-packages (from mmrotate==0.1.0) (1.4.6)\n",
+ "Requirement already satisfied: mmdet in /usr/local/lib/python3.7/dist-packages (from mmrotate==0.1.0) (2.22.0)\n",
+ "Requirement already satisfied: numpy in /usr/local/lib/python3.7/dist-packages (from mmrotate==0.1.0) (1.21.5)\n",
+ "Requirement already satisfied: six in /usr/local/lib/python3.7/dist-packages (from mmrotate==0.1.0) (1.15.0)\n",
+ "Requirement already satisfied: terminaltables in /usr/local/lib/python3.7/dist-packages (from mmrotate==0.1.0) (3.1.10)\n",
+ "Requirement already satisfied: torch in /usr/local/lib/python3.7/dist-packages (from mmrotate==0.1.0) (1.9.0+cu111)\n",
+ "Requirement already satisfied: pycocotools in /usr/local/lib/python3.7/dist-packages (from mmrotate==0.1.0) (2.0.4)\n",
+ "Requirement already satisfied: sympy in /usr/local/lib/python3.7/dist-packages (from e2cnn->mmrotate==0.1.0) (1.7.1)\n",
+ "Requirement already satisfied: scipy in /usr/local/lib/python3.7/dist-packages (from e2cnn->mmrotate==0.1.0) (1.4.1)\n",
+ "Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.7/dist-packages (from matplotlib->mmrotate==0.1.0) (0.11.0)\n",
+ "Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.1 in /usr/local/lib/python3.7/dist-packages (from matplotlib->mmrotate==0.1.0) (3.0.7)\n",
+ "Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.7/dist-packages (from matplotlib->mmrotate==0.1.0) (1.3.2)\n",
+ "Requirement already satisfied: python-dateutil>=2.1 in /usr/local/lib/python3.7/dist-packages (from matplotlib->mmrotate==0.1.0) (2.8.2)\n",
+ "Requirement already satisfied: pyyaml in /usr/local/lib/python3.7/dist-packages (from mmcv-full->mmrotate==0.1.0) (3.13)\n",
+ "Requirement already satisfied: yapf in /usr/local/lib/python3.7/dist-packages (from mmcv-full->mmrotate==0.1.0) (0.32.0)\n",
+ "Requirement already satisfied: opencv-python>=3 in /usr/local/lib/python3.7/dist-packages (from mmcv-full->mmrotate==0.1.0) (4.1.2.30)\n",
+ "Requirement already satisfied: Pillow in /usr/local/lib/python3.7/dist-packages (from mmcv-full->mmrotate==0.1.0) (7.1.2)\n",
+ "Requirement already satisfied: packaging in /usr/local/lib/python3.7/dist-packages (from mmcv-full->mmrotate==0.1.0) (21.3)\n",
+ "Requirement already satisfied: addict in /usr/local/lib/python3.7/dist-packages (from mmcv-full->mmrotate==0.1.0) (2.4.0)\n",
+ "Requirement already satisfied: mpmath>=0.19 in /usr/local/lib/python3.7/dist-packages (from sympy->e2cnn->mmrotate==0.1.0) (1.2.1)\n",
+ "Requirement already satisfied: typing-extensions in /usr/local/lib/python3.7/dist-packages (from torch->mmrotate==0.1.0) (3.10.0.2)\n",
+ "Installing collected packages: e2cnn, mmrotate\n",
+ " Running setup.py develop for mmrotate\n",
+ "Successfully installed e2cnn-0.2.1 mmrotate-0.1.0\n",
+ "Branch 'dev' set up to track remote branch 'dev' from 'origin'.\n",
+ "Switched to a new branch 'dev'\n",
+ "* \u001B[32mdev\u001B[m\n",
+ " main\u001B[m\n",
+ " \u001B[31mremotes/origin/HEAD\u001B[m -> origin/main\n",
+ " \u001B[31mremotes/origin/dev\u001B[m\n",
+ " \u001B[31mremotes/origin/main\u001B[m\n"
+ ]
+ }
+ ],
+ "source": [
+ "# install dependencies: (use cu111 because colab has CUDA 11.1)\n",
+ "!pip install torch==1.9.0+cu111 torchvision==0.10.0+cu111 -f https://download.pytorch.org/whl/torch_stable.html\n",
+ "\n",
+ "# install mmcv-full thus we could use CUDA operators\n",
+ "!pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.9.0/index.html\n",
+ "\n",
+ "# Install mmdetection\n",
+ "!pip install mmdet\n",
+ "\n",
+ "# Install mmrotate\n",
+ "!rm -rf mmrotate\n",
+ "!git clone https://github.com/open-mmlab/mmrotate.git\n",
+ "%cd mmrotate\n",
+ "!pip install -e .\n",
+ "\n",
+ "# switch branch\n",
+ "!git checkout dev\n",
+ "!git branch -a"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "_YeUiqAoCaoV",
+ "outputId": "184924df-dc28-407b-b6c8-345a5e69c738"
+ },
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "{'CUDA available': True,\n",
+ " 'CUDA_HOME': '/usr/local/cuda',\n",
+ " 'GCC': 'gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0',\n",
+ " 'GPU 0': 'Tesla T4',\n",
+ " 'MMCV': '1.4.6',\n",
+ " 'MMCV CUDA Compiler': '11.1',\n",
+ " 'MMCV Compiler': 'GCC 7.3',\n",
+ " 'NVCC': 'Build cuda_11.1.TC455_06.29190527_0',\n",
+ " 'OpenCV': '4.1.2',\n",
+ " 'PyTorch': '1.9.0+cu111',\n",
+ " 'PyTorch compiling details': 'PyTorch built with:\\n - GCC 7.3\\n - C++ Version: 201402\\n - Intel(R) Math Kernel Library Version 2020.0.0 Product Build 20191122 for Intel(R) 64 architecture applications\\n - Intel(R) MKL-DNN v2.1.2 (Git Hash 98be7e8afa711dc9b66c8ff3504129cb82013cdb)\\n - OpenMP 201511 (a.k.a. OpenMP 4.5)\\n - NNPACK is enabled\\n - CPU capability usage: AVX2\\n - CUDA Runtime 11.1\\n - NVCC architecture flags: -gencode;arch=compute_37,code=sm_37;-gencode;arch=compute_50,code=sm_50;-gencode;arch=compute_60,code=sm_60;-gencode;arch=compute_70,code=sm_70;-gencode;arch=compute_75,code=sm_75;-gencode;arch=compute_80,code=sm_80;-gencode;arch=compute_86,code=sm_86\\n - CuDNN 8.0.5\\n - Magma 2.5.2\\n - Build settings: BLAS_INFO=mkl, BUILD_TYPE=Release, CUDA_VERSION=11.1, CUDNN_VERSION=8.0.5, CXX_COMPILER=/opt/rh/devtoolset-7/root/usr/bin/c++, CXX_FLAGS= -Wno-deprecated -fvisibility-inlines-hidden -DUSE_PTHREADPOOL -fopenmp -DNDEBUG -DUSE_KINETO -DUSE_FBGEMM -DUSE_QNNPACK -DUSE_PYTORCH_QNNPACK -DUSE_XNNPACK -DSYMBOLICATE_MOBILE_DEBUG_HANDLE -O2 -fPIC -Wno-narrowing -Wall -Wextra -Werror=return-type -Wno-missing-field-initializers -Wno-type-limits -Wno-array-bounds -Wno-unknown-pragmas -Wno-sign-compare -Wno-unused-parameter -Wno-unused-variable -Wno-unused-function -Wno-unused-result -Wno-unused-local-typedefs -Wno-strict-overflow -Wno-strict-aliasing -Wno-error=deprecated-declarations -Wno-stringop-overflow -Wno-psabi -Wno-error=pedantic -Wno-error=redundant-decls -Wno-error=old-style-cast -fdiagnostics-color=always -faligned-new -Wno-unused-but-set-variable -Wno-maybe-uninitialized -fno-math-errno -fno-trapping-math -Werror=format -Wno-stringop-overflow, LAPACK_INFO=mkl, PERF_WITH_AVX=1, PERF_WITH_AVX2=1, PERF_WITH_AVX512=1, TORCH_VERSION=1.9.0, USE_CUDA=ON, USE_CUDNN=ON, USE_EXCEPTION_PTR=1, USE_GFLAGS=OFF, USE_GLOG=OFF, USE_MKL=ON, USE_MKLDNN=ON, USE_MPI=OFF, USE_NCCL=ON, USE_NNPACK=ON, USE_OPENMP=ON, \\n',\n",
+ " 'Python': '3.7.12 (default, Jan 15 2022, 18:48:18) [GCC 7.5.0]',\n",
+ " 'TorchVision': '0.10.0+cu111',\n",
+ " 'sys.platform': 'linux'}"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 3
+ }
+ ],
+ "source": [
+ "from mmcv import collect_env\n",
+ "collect_env()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "6hD0mmMixT0p",
+ "outputId": "1d97728b-f88c-40ed-ae05-f608e3356f24"
+ },
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "1.9.0+cu111 True\n",
+ "0.1.0\n",
+ "2.22.0\n",
+ "11.1\n",
+ "GCC 7.3\n"
+ ]
+ }
+ ],
+ "source": [
+ "# Check Pytorch installation\n",
+ "import torch, torchvision\n",
+ "print(torch.__version__, torch.cuda.is_available())\n",
+ "\n",
+ "# Check MMRotate installation\n",
+ "import mmrotate\n",
+ "print(mmrotate.__version__)\n",
+ "\n",
+ "# Check MMDetection installation\n",
+ "import mmdet\n",
+ "print(mmdet.__version__)\n",
+ "\n",
+ "# Check mmcv installation\n",
+ "from mmcv.ops import get_compiling_cuda_version, get_compiler_version\n",
+ "print(get_compiling_cuda_version())\n",
+ "print(get_compiler_version())"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "gi9zw03oM4CH"
+ },
+ "source": [
+ "## Perform Inference with An MMRotate detector\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "s99mDGBG1S1z"
+ },
+ "source": [
+ "### A two-stage detector\n",
+ "\n",
+ "In this tutorial, we use Oriented R-CNN, a simple two-stage detector as an example.\n",
+ "\n",
+ "The high-level architecture of Oriented R-CNN is shown in the following picture. More details can be found in the [paper](https://openaccess.thecvf.com/content/ICCV2021/papers/Xie_Oriented_R-CNN_for_Object_Detection_ICCV_2021_paper.pdf).\n",
+ "\n",
+ "![oriented rcnn](https://raw.githubusercontent.com/zytx121/image-host/main/imgs/oriented_rcnn.png)\n",
+ "\n",
+ "\n",
+ "Briefly, it uses a convolutional neural network (CNN) as backbone to extract features from an image. Then, it uses a region proposal network (RPN) to predict proposals, i.e., potential objects. After that, it uses `RoIAlignRotated` to crop rotated features for the region of interests (RoI), and uses a RoI Head to perform classification and bounding box prediction.\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "j4doHX4exvS1",
+ "outputId": "53927f22-ab1c-40a8-9dce-89569ea5e226"
+ },
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "--2022-03-06 23:40:47-- https://download.openmmlab.com/mmrotate/v0.1.0/oriented_rcnn/oriented_rcnn_r50_fpn_1x_dota_le90/oriented_rcnn_r50_fpn_1x_dota_le90-6d2b2ce0.pth\n",
+ "Resolving download.openmmlab.com (download.openmmlab.com)... 47.74.197.77\n",
+ "Connecting to download.openmmlab.com (download.openmmlab.com)|47.74.197.77|:443... connected.\n",
+ "HTTP request sent, awaiting response... 200 OK\n",
+ "Length: 165749436 (158M) [application/octet-stream]\n",
+ "Saving to: ‘checkpoints/oriented_rcnn_r50_fpn_1x_dota_le90-6d2b2ce0.pth’\n",
+ "\n",
+ "checkpoints/oriente 100%[===================>] 158.07M 10.0MB/s in 17s \n",
+ "\n",
+ "2022-03-06 23:41:05 (9.42 MB/s) - ‘checkpoints/oriented_rcnn_r50_fpn_1x_dota_le90-6d2b2ce0.pth’ saved [165749436/165749436]\n",
+ "\n"
+ ]
+ }
+ ],
+ "source": [
+ "# We download the pre-trained checkpoints for inference and finetuning.\n",
+ "!mkdir checkpoints\n",
+ "!wget -c https://download.openmmlab.com/mmrotate/v0.1.0/oriented_rcnn/oriented_rcnn_r50_fpn_1x_dota_le90/oriented_rcnn_r50_fpn_1x_dota_le90-6d2b2ce0.pth \\\n",
+ " -O checkpoints/oriented_rcnn_r50_fpn_1x_dota_le90-6d2b2ce0.pth"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "8M5KUnX7Np3h",
+ "outputId": "d7e4b0bc-4f0b-4f25-d9ce-a53b8ad499af"
+ },
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "/usr/local/lib/python3.7/dist-packages/mmdet/models/dense_heads/anchor_head.py:116: UserWarning: DeprecationWarning: `num_anchors` is deprecated, for consistency or also use `num_base_priors` instead\n",
+ " warnings.warn('DeprecationWarning: `num_anchors` is deprecated, '\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "load checkpoint from local path: checkpoints/oriented_rcnn_r50_fpn_1x_dota_le90-6d2b2ce0.pth\n"
+ ]
+ },
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "OrientedRCNN(\n",
+ " (backbone): ResNet(\n",
+ " (conv1): Conv2d(3, 64, kernel_size=(7, 7), stride=(2, 2), padding=(3, 3), bias=False)\n",
+ " (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
+ " (relu): ReLU(inplace=True)\n",
+ " (maxpool): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)\n",
+ " (layer1): ResLayer(\n",
+ " (0): Bottleneck(\n",
+ " (conv1): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
+ " (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
+ " (conv2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
+ " (bn2): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
+ " (conv3): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
+ " (bn3): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
+ " (relu): ReLU(inplace=True)\n",
+ " (downsample): Sequential(\n",
+ " (0): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
+ " (1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
+ " )\n",
+ " )\n",
+ " (1): Bottleneck(\n",
+ " (conv1): Conv2d(256, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
+ " (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
+ " (conv2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
+ " (bn2): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
+ " (conv3): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
+ " (bn3): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
+ " (relu): ReLU(inplace=True)\n",
+ " )\n",
+ " (2): Bottleneck(\n",
+ " (conv1): Conv2d(256, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
+ " (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
+ " (conv2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
+ " (bn2): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
+ " (conv3): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
+ " (bn3): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
+ " (relu): ReLU(inplace=True)\n",
+ " )\n",
+ " )\n",
+ " (layer2): ResLayer(\n",
+ " (0): Bottleneck(\n",
+ " (conv1): Conv2d(256, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
+ " (bn1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
+ " (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)\n",
+ " (bn2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
+ " (conv3): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
+ " (bn3): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
+ " (relu): ReLU(inplace=True)\n",
+ " (downsample): Sequential(\n",
+ " (0): Conv2d(256, 512, kernel_size=(1, 1), stride=(2, 2), bias=False)\n",
+ " (1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
+ " )\n",
+ " )\n",
+ " (1): Bottleneck(\n",
+ " (conv1): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
+ " (bn1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
+ " (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
+ " (bn2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
+ " (conv3): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
+ " (bn3): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
+ " (relu): ReLU(inplace=True)\n",
+ " )\n",
+ " (2): Bottleneck(\n",
+ " (conv1): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
+ " (bn1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
+ " (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
+ " (bn2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
+ " (conv3): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
+ " (bn3): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
+ " (relu): ReLU(inplace=True)\n",
+ " )\n",
+ " (3): Bottleneck(\n",
+ " (conv1): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
+ " (bn1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
+ " (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
+ " (bn2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
+ " (conv3): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
+ " (bn3): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
+ " (relu): ReLU(inplace=True)\n",
+ " )\n",
+ " )\n",
+ " (layer3): ResLayer(\n",
+ " (0): Bottleneck(\n",
+ " (conv1): Conv2d(512, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
+ " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
+ " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)\n",
+ " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
+ " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
+ " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
+ " (relu): ReLU(inplace=True)\n",
+ " (downsample): Sequential(\n",
+ " (0): Conv2d(512, 1024, kernel_size=(1, 1), stride=(2, 2), bias=False)\n",
+ " (1): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
+ " )\n",
+ " )\n",
+ " (1): Bottleneck(\n",
+ " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
+ " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
+ " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
+ " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
+ " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
+ " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
+ " (relu): ReLU(inplace=True)\n",
+ " )\n",
+ " (2): Bottleneck(\n",
+ " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
+ " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
+ " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
+ " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
+ " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
+ " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
+ " (relu): ReLU(inplace=True)\n",
+ " )\n",
+ " (3): Bottleneck(\n",
+ " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
+ " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
+ " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
+ " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
+ " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
+ " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
+ " (relu): ReLU(inplace=True)\n",
+ " )\n",
+ " (4): Bottleneck(\n",
+ " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
+ " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
+ " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
+ " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
+ " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
+ " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
+ " (relu): ReLU(inplace=True)\n",
+ " )\n",
+ " (5): Bottleneck(\n",
+ " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
+ " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
+ " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
+ " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
+ " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
+ " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
+ " (relu): ReLU(inplace=True)\n",
+ " )\n",
+ " )\n",
+ " (layer4): ResLayer(\n",
+ " (0): Bottleneck(\n",
+ " (conv1): Conv2d(1024, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
+ " (bn1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
+ " (conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)\n",
+ " (bn2): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
+ " (conv3): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
+ " (bn3): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
+ " (relu): ReLU(inplace=True)\n",
+ " (downsample): Sequential(\n",
+ " (0): Conv2d(1024, 2048, kernel_size=(1, 1), stride=(2, 2), bias=False)\n",
+ " (1): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
+ " )\n",
+ " )\n",
+ " (1): Bottleneck(\n",
+ " (conv1): Conv2d(2048, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
+ " (bn1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
+ " (conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
+ " (bn2): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
+ " (conv3): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
+ " (bn3): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
+ " (relu): ReLU(inplace=True)\n",
+ " )\n",
+ " (2): Bottleneck(\n",
+ " (conv1): Conv2d(2048, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
+ " (bn1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
+ " (conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
+ " (bn2): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
+ " (conv3): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
+ " (bn3): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
+ " (relu): ReLU(inplace=True)\n",
+ " )\n",
+ " )\n",
+ " )\n",
+ " init_cfg={'type': 'Pretrained', 'checkpoint': 'torchvision://resnet50'}\n",
+ " (neck): FPN(\n",
+ " (lateral_convs): ModuleList(\n",
+ " (0): ConvModule(\n",
+ " (conv): Conv2d(256, 256, kernel_size=(1, 1), stride=(1, 1))\n",
+ " )\n",
+ " (1): ConvModule(\n",
+ " (conv): Conv2d(512, 256, kernel_size=(1, 1), stride=(1, 1))\n",
+ " )\n",
+ " (2): ConvModule(\n",
+ " (conv): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1))\n",
+ " )\n",
+ " (3): ConvModule(\n",
+ " (conv): Conv2d(2048, 256, kernel_size=(1, 1), stride=(1, 1))\n",
+ " )\n",
+ " )\n",
+ " (fpn_convs): ModuleList(\n",
+ " (0): ConvModule(\n",
+ " (conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
+ " )\n",
+ " (1): ConvModule(\n",
+ " (conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
+ " )\n",
+ " (2): ConvModule(\n",
+ " (conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
+ " )\n",
+ " (3): ConvModule(\n",
+ " (conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
+ " )\n",
+ " )\n",
+ " )\n",
+ " init_cfg={'type': 'Xavier', 'layer': 'Conv2d', 'distribution': 'uniform'}\n",
+ " (rpn_head): OrientedRPNHead(\n",
+ " (loss_cls): CrossEntropyLoss()\n",
+ " (loss_bbox): SmoothL1Loss()\n",
+ " (rpn_conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
+ " (rpn_cls): Conv2d(256, 3, kernel_size=(1, 1), stride=(1, 1))\n",
+ " (rpn_reg): Conv2d(256, 18, kernel_size=(1, 1), stride=(1, 1))\n",
+ " )\n",
+ " init_cfg={'type': 'Normal', 'layer': 'Conv2d', 'std': 0.01}\n",
+ " (roi_head): OrientedStandardRoIHead(\n",
+ " (bbox_roi_extractor): RotatedSingleRoIExtractor(\n",
+ " (roi_layers): ModuleList(\n",
+ " (0): RoIAlignRotated(output_size=(7, 7), spatial_scale=0.25, sampling_ratio=2, aligned=True, clockwise=True)\n",
+ " (1): RoIAlignRotated(output_size=(7, 7), spatial_scale=0.125, sampling_ratio=2, aligned=True, clockwise=True)\n",
+ " (2): RoIAlignRotated(output_size=(7, 7), spatial_scale=0.0625, sampling_ratio=2, aligned=True, clockwise=True)\n",
+ " (3): RoIAlignRotated(output_size=(7, 7), spatial_scale=0.03125, sampling_ratio=2, aligned=True, clockwise=True)\n",
+ " )\n",
+ " )\n",
+ " (bbox_head): RotatedShared2FCBBoxHead(\n",
+ " (loss_cls): CrossEntropyLoss()\n",
+ " (loss_bbox): SmoothL1Loss()\n",
+ " (fc_cls): Linear(in_features=1024, out_features=16, bias=True)\n",
+ " (fc_reg): Linear(in_features=1024, out_features=5, bias=True)\n",
+ " (shared_convs): ModuleList()\n",
+ " (shared_fcs): ModuleList(\n",
+ " (0): Linear(in_features=12544, out_features=1024, bias=True)\n",
+ " (1): Linear(in_features=1024, out_features=1024, bias=True)\n",
+ " )\n",
+ " (cls_convs): ModuleList()\n",
+ " (cls_fcs): ModuleList()\n",
+ " (reg_convs): ModuleList()\n",
+ " (reg_fcs): ModuleList()\n",
+ " (relu): ReLU(inplace=True)\n",
+ " )\n",
+ " init_cfg=[{'type': 'Normal', 'std': 0.01, 'override': {'name': 'fc_cls'}}, {'type': 'Normal', 'std': 0.001, 'override': {'name': 'fc_reg'}}, {'type': 'Xavier', 'layer': 'Linear', 'override': [{'name': 'shared_fcs'}, {'name': 'cls_fcs'}, {'name': 'reg_fcs'}]}]\n",
+ " )\n",
+ ")"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 6
+ }
+ ],
+ "source": [
+ "import mmcv\n",
+ "from mmcv.runner import load_checkpoint\n",
+ "\n",
+ "from mmdet.apis import inference_detector, show_result_pyplot\n",
+ "from mmdet.models import build_detector\n",
+ "\n",
+ "# Choose to use a config and initialize the detector\n",
+ "config = 'configs/oriented_rcnn/oriented_rcnn_r50_fpn_1x_dota_le90.py'\n",
+ "# Setup a checkpoint file to load\n",
+ "checkpoint = 'checkpoints/oriented_rcnn_r50_fpn_1x_dota_le90-6d2b2ce0.pth'\n",
+ "\n",
+ "# Set the device to be used for evaluation\n",
+ "device='cuda:0'\n",
+ "\n",
+ "# Load the config\n",
+ "config = mmcv.Config.fromfile(config)\n",
+ "# Set pretrained to be None since we do not need pretrained model here\n",
+ "config.model.pretrained = None\n",
+ "\n",
+ "# Initialize the detector\n",
+ "model = build_detector(config.model)\n",
+ "\n",
+ "# Load checkpoint\n",
+ "checkpoint = load_checkpoint(model, checkpoint, map_location=device)\n",
+ "\n",
+ "# Set the classes of models for inference\n",
+ "model.CLASSES = checkpoint['meta']['CLASSES']\n",
+ "\n",
+ "# We need to set the model's cfg for inference\n",
+ "model.cfg = config\n",
+ "\n",
+ "# Convert the model to GPU\n",
+ "model.to(device)\n",
+ "# Convert the model into evaluation mode\n",
+ "model.eval()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "fLgFRMtP91ue"
+ },
+ "source": [
+ "From the printed model, we will find that the model does consist of the components that we described earlier. It uses ResNet as its CNN backbone, and has a RPN head and RoI Head. In addition, the model has a neural network module, named neck, directly after the CNN backbone. It is a [feature pyramid network (FPN)](https://arxiv.org/abs/1612.03144) for enhancing the multi-scale features.\n",
+ "\n",
+ "\n",
+ "### Inference the detector\n",
+ "\n",
+ "Since the model is successfully created and loaded, let's see how good it is. We use the high-level API `inference_detector` implemented in the MMDetection. This API is created to ease the inference process. The details of the codes can be found [here](https://github.com/open-mmlab/mmdetection/blob/master/mmdet/apis/inference.py#L15)."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "Wi6DRpsQPEmV",
+ "outputId": "4049fe7c-3437-4ee7-e0a9-7071ef6e7ddd"
+ },
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "/usr/local/lib/python3.7/dist-packages/torch/nn/functional.py:718: UserWarning: Named tensors and all their associated APIs are an experimental feature and subject to change. Please do not use them for anything important until they are released as stable. (Triggered internally at /pytorch/c10/core/TensorImpl.h:1156.)\n",
+ " return torch.max_pool2d(input, kernel_size, stride, padding, dilation, ceil_mode)\n",
+ "/usr/local/lib/python3.7/dist-packages/mmdet/models/dense_heads/anchor_head.py:123: UserWarning: DeprecationWarning: anchor_generator is deprecated, please use \"prior_generator\" instead\n",
+ " warnings.warn('DeprecationWarning: anchor_generator is deprecated, '\n"
+ ]
+ }
+ ],
+ "source": [
+ "# Use the detector to do inference\n",
+ "img = 'demo/demo.jpg'\n",
+ "result = inference_detector(model, img)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 867
+ },
+ "id": "UsJU5D-QPX8L",
+ "outputId": "aaebf718-f2de-4022-e311-7b51f6efe2bc"
+ },
+ "outputs": [
+ {
+ "output_type": "display_data",
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ }
+ }
+ ],
+ "source": [
+ "# Let's plot the result\n",
+ "import mmcv\n",
+ "import matplotlib.pyplot as plt\n",
+ "\n",
+ "model.show_result(img, result, score_thr=0.3, out_file='./det.jpeg')\n",
+ "img = mmcv.imread('./det.jpeg')\n",
+ "plt.figure(figsize=(20, 15))\n",
+ "plt.imshow(mmcv.bgr2rgb(img))\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "### Inference on huge image\n",
+ "Since small image can be successfully detected, what about huge images in remote sensing? We use the high-level API `inference_detector_by_patches` implemented in the MMRotate. This API is created to ease the inference process for huge image. The details of the codes can be found [here](https://github.com/open-mmlab/mmrotate/blob/dev/mmrotate/apis/inference.py)."
+ ],
+ "metadata": {
+ "id": "CjtQeoaZTaRy"
+ }
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "# Use the detector to do inference\n",
+ "from mmrotate.apis import inference_detector_by_patches\n",
+ "img = 'demo/dota_demo.jpg'\n",
+ "result = inference_detector_by_patches(model, img, [1024], [824], [1.0], 0.1)"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "y6wcKulVTarC",
+ "outputId": "dedcb173-7a62-4a40-82c8-9605b4ecc514"
+ },
+ "execution_count": 9,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "/usr/local/lib/python3.7/dist-packages/mmdet/models/dense_heads/anchor_head.py:123: UserWarning: DeprecationWarning: anchor_generator is deprecated, please use \"prior_generator\" instead\n",
+ " warnings.warn('DeprecationWarning: anchor_generator is deprecated, '\n"
+ ]
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "# Let's plot the result\n",
+ "import mmcv\n",
+ "import matplotlib.pyplot as plt\n",
+ "\n",
+ "model.show_result(img, result, score_thr=0.3, out_file='./det_huge.jpeg')\n",
+ "img = mmcv.imread('./det_huge.jpeg')\n",
+ "plt.figure(figsize=(20, 15))\n",
+ "plt.imshow(mmcv.bgr2rgb(img))\n",
+ "plt.show()"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 867
+ },
+ "id": "kepaXKQCUWoG",
+ "outputId": "ddf0af1d-c01e-4213-aac0-2f73cf34e1f7"
+ },
+ "execution_count": 10,
+ "outputs": [
+ {
+ "output_type": "display_data",
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ }
+ }
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "7GrWIJywLV-V"
+ },
+ "source": [
+ "## Train a detector on customized dataset\n",
+ "\n",
+ "To train a new detector, there are usually three things to do:\n",
+ "1. Support a new dataset\n",
+ "2. Modify the config\n",
+ "3. Train a new detector\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "E73y5Lru-wBx"
+ },
+ "source": [
+ "### Support a new dataset\n",
+ "\n",
+ "There are three ways to support a new dataset in MMRotate: \n",
+ " 1. reorganize the dataset into DOTA format.\n",
+ " 2. reorganize the dataset into a middle format.\n",
+ " 3. implement a new dataset.\n",
+ "\n",
+ "Usually we recommend to use the first two methods which are usually easier than the third.\n",
+ "\n",
+ "In this tutorial, we gives an example that converting the data into the format of existing datasets like DOTA, etc. Other methods and more advanced usages can be found in the [doc](https://mmrotate.readthedocs.io/en/latest/tutorials/customize_dataset.html).\n",
+ "\n",
+ "Firstly, let's download a SAR ship dataset obtained from [SSDD](https://github.com/TianwenZhang0825/Official-SSDD). We select the first 193 offshore images and their annotations from the dataset."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "rHnw5Q_nARXq",
+ "outputId": "6bed8a34-1700-4069-e7cb-3ef5c783731b"
+ },
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "--2022-03-06 23:41:14-- https://download.openmmlab.com/mmrotate/data/ssdd_tiny.zip\n",
+ "Resolving download.openmmlab.com (download.openmmlab.com)... 47.74.197.77\n",
+ "Connecting to download.openmmlab.com (download.openmmlab.com)|47.74.197.77|:443... connected.\n",
+ "HTTP request sent, awaiting response... 200 OK\n",
+ "Length: 6741882 (6.4M) [application/zip]\n",
+ "Saving to: ‘ssdd_tiny.zip’\n",
+ "\n",
+ "ssdd_tiny.zip 100%[===================>] 6.43M 12.0MB/s in 0.5s \n",
+ "\n",
+ "2022-03-06 23:41:15 (12.0 MB/s) - ‘ssdd_tiny.zip’ saved [6741882/6741882]\n",
+ "\n"
+ ]
+ }
+ ],
+ "source": [
+ "# download, decompress the data\n",
+ "!wget https://download.openmmlab.com/mmrotate/data/ssdd_tiny.zip\n",
+ "!unzip ssdd_tiny.zip > /dev/null"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "Wuwxw1oZRtVZ",
+ "outputId": "5163e0a8-0ec6-4c80-8a61-a77a8dce1e84"
+ },
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "Reading package lists...\n",
+ "Building dependency tree...\n",
+ "Reading state information...\n",
+ "The following package was automatically installed and is no longer required:\n",
+ " libnvidia-common-470\n",
+ "Use 'apt autoremove' to remove it.\n",
+ "The following NEW packages will be installed:\n",
+ " tree\n",
+ "0 upgraded, 1 newly installed, 0 to remove and 39 not upgraded.\n",
+ "Need to get 40.7 kB of archives.\n",
+ "After this operation, 105 kB of additional disk space will be used.\n",
+ "Get:1 http://archive.ubuntu.com/ubuntu bionic/universe amd64 tree amd64 1.7.0-5 [40.7 kB]\n",
+ "Fetched 40.7 kB in 1s (54.2 kB/s)\n",
+ "Selecting previously unselected package tree.\n",
+ "(Reading database ... 155320 files and directories currently installed.)\n",
+ "Preparing to unpack .../tree_1.7.0-5_amd64.deb ...\n",
+ "Unpacking tree (1.7.0-5) ...\n",
+ "Setting up tree (1.7.0-5) ...\n",
+ "Processing triggers for man-db (2.8.3-2ubuntu0.1) ...\n",
+ "ssdd_tiny\n",
+ "├── images\n",
+ "│ ├── 000001.png\n",
+ "│ ├── 000009.png\n",
+ "│ ├── 000011.png\n",
+ "│ ├── 000029.png\n",
+ "│ ├── 000041.png\n",
+ "│ ├── 000049.png\n",
+ "│ ├── 000051.png\n",
+ "│ ├── 000059.png\n",
+ "│ ├── 000061.png\n",
+ "│ ├── 000071.png\n",
+ "│ ├── 000079.png\n",
+ "│ ├── 000081.png\n",
+ "│ ├── 000089.png\n",
+ "│ ├── 000091.png\n",
+ "│ ├── 000099.png\n",
+ "│ ├── 000101.png\n",
+ "│ ├── 000109.png\n",
+ "│ ├── 000111.png\n",
+ "│ ├── 000119.png\n",
+ "│ ├── 000121.png\n",
+ "│ ├── 000129.png\n",
+ "│ ├── 000131.png\n",
+ "│ ├── 000139.png\n",
+ "│ ├── 000141.png\n",
+ "│ ├── 000149.png\n",
+ "│ ├── 000151.png\n",
+ "│ ├── 000159.png\n",
+ "│ ├── 000161.png\n",
+ "│ ├── 000169.png\n",
+ "│ ├── 000171.png\n",
+ "│ ├── 000179.png\n",
+ "│ ├── 000181.png\n",
+ "│ ├── 000189.png\n",
+ "│ ├── 000191.png\n",
+ "│ ├── 000199.png\n",
+ "│ ├── 000201.png\n",
+ "│ ├── 000209.png\n",
+ "│ ├── 000211.png\n",
+ "│ ├── 000259.png\n",
+ "│ ├── 000261.png\n",
+ "│ ├── 000269.png\n",
+ "│ ├── 000271.png\n",
+ "│ ├── 000279.png\n",
+ "│ ├── 000281.png\n",
+ "│ ├── 000289.png\n",
+ "│ ├── 000291.png\n",
+ "│ ├── 000299.png\n",
+ "│ ├── 000301.png\n",
+ "│ ├── 000309.png\n",
+ "│ ├── 000311.png\n",
+ "│ ├── 000319.png\n",
+ "│ ├── 000321.png\n",
+ "│ ├── 000329.png\n",
+ "│ ├── 000331.png\n",
+ "│ ├── 000339.png\n",
+ "│ ├── 000341.png\n",
+ "│ ├── 000361.png\n",
+ "│ ├── 000369.png\n",
+ "│ ├── 000371.png\n",
+ "│ ├── 000379.png\n",
+ "│ ├── 000381.png\n",
+ "│ ├── 000389.png\n",
+ "│ ├── 000391.png\n",
+ "│ ├── 000399.png\n",
+ "│ ├── 000401.png\n",
+ "│ ├── 000411.png\n",
+ "│ ├── 000419.png\n",
+ "│ ├── 000421.png\n",
+ "│ ├── 000429.png\n",
+ "│ ├── 000431.png\n",
+ "│ ├── 000439.png\n",
+ "│ ├── 000441.png\n",
+ "│ ├── 000449.png\n",
+ "│ ├── 000451.png\n",
+ "│ ├── 000459.png\n",
+ "│ ├── 000461.png\n",
+ "│ ├── 000469.png\n",
+ "│ ├── 000471.png\n",
+ "│ ├── 000479.png\n",
+ "│ ├── 000481.png\n",
+ "│ ├── 000489.png\n",
+ "│ ├── 000491.png\n",
+ "│ ├── 000499.png\n",
+ "│ ├── 000501.png\n",
+ "│ ├── 000509.png\n",
+ "│ ├── 000511.png\n",
+ "│ ├── 000519.png\n",
+ "│ ├── 000521.png\n",
+ "│ ├── 000529.png\n",
+ "│ ├── 000531.png\n",
+ "│ ├── 000539.png\n",
+ "│ ├── 000541.png\n",
+ "│ ├── 000549.png\n",
+ "│ ├── 000551.png\n",
+ "│ ├── 000559.png\n",
+ "│ ├── 000561.png\n",
+ "│ ├── 000569.png\n",
+ "│ ├── 000571.png\n",
+ "│ ├── 000579.png\n",
+ "│ ├── 000581.png\n",
+ "│ ├── 000589.png\n",
+ "│ ├── 000591.png\n",
+ "│ ├── 000599.png\n",
+ "│ ├── 000601.png\n",
+ "│ ├── 000609.png\n",
+ "│ ├── 000611.png\n",
+ "│ ├── 000619.png\n",
+ "│ ├── 000621.png\n",
+ "│ ├── 000629.png\n",
+ "│ ├── 000631.png\n",
+ "│ ├── 000639.png\n",
+ "│ ├── 000649.png\n",
+ "│ ├── 000651.png\n",
+ "│ ├── 000659.png\n",
+ "│ ├── 000661.png\n",
+ "│ ├── 000669.png\n",
+ "│ ├── 000671.png\n",
+ "│ ├── 000679.png\n",
+ "│ ├── 000681.png\n",
+ "│ ├── 000689.png\n",
+ "│ ├── 000691.png\n",
+ "│ ├── 000699.png\n",
+ "│ ├── 000701.png\n",
+ "│ ├── 000709.png\n",
+ "│ ├── 000711.png\n",
+ "│ ├── 000719.png\n",
+ "│ ├── 000721.png\n",
+ "│ ├── 000731.png\n",
+ "│ ├── 000739.png\n",
+ "│ ├── 000769.png\n",
+ "│ ├── 000771.png\n",
+ "│ ├── 000779.png\n",
+ "│ ├── 000781.png\n",
+ "│ ├── 000789.png\n",
+ "│ ├── 000791.png\n",
+ "│ ├── 000799.png\n",
+ "│ ├── 000801.png\n",
+ "│ ├── 000809.png\n",
+ "│ ├── 000811.png\n",
+ "│ ├── 000819.png\n",
+ "│ ├── 000821.png\n",
+ "│ ├── 000829.png\n",
+ "│ ├── 000831.png\n",
+ "│ ├── 000839.png\n",
+ "│ ├── 000841.png\n",
+ "│ ├── 000849.png\n",
+ "│ ├── 000851.png\n",
+ "│ ├── 000859.png\n",
+ "│ ├── 000861.png\n",
+ "│ ├── 000869.png\n",
+ "│ ├── 000871.png\n",
+ "│ ├── 000879.png\n",
+ "│ ├── 000881.png\n",
+ "│ ├── 000889.png\n",
+ "│ ├── 000891.png\n",
+ "│ ├── 000899.png\n",
+ "│ ├── 000901.png\n",
+ "│ ├── 000909.png\n",
+ "│ ├── 000911.png\n",
+ "│ ├── 000919.png\n",
+ "│ ├── 000921.png\n",
+ "│ ├── 000929.png\n",
+ "│ ├── 000931.png\n",
+ "│ ├── 000939.png\n",
+ "│ ├── 000941.png\n",
+ "│ ├── 000949.png\n",
+ "│ ├── 000951.png\n",
+ "│ ├── 000959.png\n",
+ "│ ├── 000961.png\n",
+ "│ ├── 000969.png\n",
+ "│ ├── 000971.png\n",
+ "│ ├── 000979.png\n",
+ "│ ├── 000981.png\n",
+ "│ ├── 000989.png\n",
+ "│ ├── 000991.png\n",
+ "│ ├── 000999.png\n",
+ "│ ├── 001001.png\n",
+ "│ ├── 001009.png\n",
+ "│ ├── 001011.png\n",
+ "│ ├── 001021.png\n",
+ "│ ├── 001051.png\n",
+ "│ ├── 001061.png\n",
+ "│ ├── 001099.png\n",
+ "│ ├── 001101.png\n",
+ "│ ├── 001109.png\n",
+ "│ ├── 001111.png\n",
+ "│ ├── 001119.png\n",
+ "│ ├── 001121.png\n",
+ "│ ├── 001129.png\n",
+ "│ ├── 001131.png\n",
+ "│ ├── 001139.png\n",
+ "│ ├── 001141.png\n",
+ "│ └── 001149.png\n",
+ "├── train\n",
+ "│ ├── 000029.txt\n",
+ "│ ├── 000041.txt\n",
+ "│ ├── 000049.txt\n",
+ "│ ├── 000051.txt\n",
+ "│ ├── 000079.txt\n",
+ "│ ├── 000081.txt\n",
+ "│ ├── 000089.txt\n",
+ "│ ├── 000091.txt\n",
+ "│ ├── 000111.txt\n",
+ "│ ├── 000119.txt\n",
+ "│ ├── 000121.txt\n",
+ "│ ├── 000129.txt\n",
+ "│ ├── 000149.txt\n",
+ "│ ├── 000151.txt\n",
+ "│ ├── 000159.txt\n",
+ "│ ├── 000161.txt\n",
+ "│ ├── 000181.txt\n",
+ "│ ├── 000189.txt\n",
+ "│ ├── 000191.txt\n",
+ "│ ├── 000199.txt\n",
+ "│ ├── 000259.txt\n",
+ "│ ├── 000261.txt\n",
+ "│ ├── 000269.txt\n",
+ "│ ├── 000271.txt\n",
+ "│ ├── 000291.txt\n",
+ "│ ├── 000299.txt\n",
+ "│ ├── 000301.txt\n",
+ "│ ├── 000309.txt\n",
+ "│ ├── 000329.txt\n",
+ "│ ├── 000331.txt\n",
+ "│ ├── 000339.txt\n",
+ "│ ├── 000341.txt\n",
+ "│ ├── 000379.txt\n",
+ "│ ├── 000381.txt\n",
+ "│ ├── 000389.txt\n",
+ "│ ├── 000391.txt\n",
+ "│ ├── 000419.txt\n",
+ "│ ├── 000421.txt\n",
+ "│ ├── 000429.txt\n",
+ "│ ├── 000431.txt\n",
+ "│ ├── 000451.txt\n",
+ "│ ├── 000459.txt\n",
+ "│ ├── 000461.txt\n",
+ "│ ├── 000469.txt\n",
+ "│ ├── 000489.txt\n",
+ "│ ├── 000491.txt\n",
+ "│ ├── 000499.txt\n",
+ "│ ├── 000501.txt\n",
+ "│ ├── 000521.txt\n",
+ "│ ├── 000529.txt\n",
+ "│ ├── 000531.txt\n",
+ "│ ├── 000539.txt\n",
+ "│ ├── 000559.txt\n",
+ "│ ├── 000561.txt\n",
+ "│ ├── 000569.txt\n",
+ "│ ├── 000571.txt\n",
+ "│ ├── 000591.txt\n",
+ "│ ├── 000599.txt\n",
+ "│ ├── 000601.txt\n",
+ "│ ├── 000609.txt\n",
+ "│ ├── 000629.txt\n",
+ "│ ├── 000631.txt\n",
+ "│ ├── 000639.txt\n",
+ "│ ├── 000649.txt\n",
+ "│ ├── 000669.txt\n",
+ "│ ├── 000671.txt\n",
+ "│ ├── 000679.txt\n",
+ "│ ├── 000681.txt\n",
+ "│ ├── 000701.txt\n",
+ "│ ├── 000709.txt\n",
+ "│ ├── 000711.txt\n",
+ "│ ├── 000719.txt\n",
+ "│ ├── 000769.txt\n",
+ "│ ├── 000771.txt\n",
+ "│ ├── 000779.txt\n",
+ "│ ├── 000781.txt\n",
+ "│ ├── 000801.txt\n",
+ "│ ├── 000809.txt\n",
+ "│ ├── 000811.txt\n",
+ "│ ├── 000819.txt\n",
+ "│ ├── 000839.txt\n",
+ "│ ├── 000841.txt\n",
+ "│ ├── 000849.txt\n",
+ "│ ├── 000851.txt\n",
+ "│ ├── 000871.txt\n",
+ "│ ├── 000879.txt\n",
+ "│ ├── 000881.txt\n",
+ "│ ├── 000889.txt\n",
+ "│ ├── 000909.txt\n",
+ "│ ├── 000911.txt\n",
+ "│ ├── 000919.txt\n",
+ "│ ├── 000921.txt\n",
+ "│ ├── 000941.txt\n",
+ "│ ├── 000949.txt\n",
+ "│ ├── 000951.txt\n",
+ "│ ├── 000959.txt\n",
+ "│ ├── 000979.txt\n",
+ "│ ├── 000981.txt\n",
+ "│ ├── 000989.txt\n",
+ "│ ├── 000991.txt\n",
+ "│ ├── 001011.txt\n",
+ "│ ├── 001021.txt\n",
+ "│ ├── 001051.txt\n",
+ "│ ├── 001061.txt\n",
+ "│ ├── 001111.txt\n",
+ "│ ├── 001119.txt\n",
+ "│ ├── 001121.txt\n",
+ "│ ├── 001129.txt\n",
+ "│ └── 001149.txt\n",
+ "└── val\n",
+ " ├── 000001.txt\n",
+ " ├── 000009.txt\n",
+ " ├── 000011.txt\n",
+ " ├── 000059.txt\n",
+ " ├── 000061.txt\n",
+ " ├── 000071.txt\n",
+ " ├── 000099.txt\n",
+ " ├── 000101.txt\n",
+ " ├── 000109.txt\n",
+ " ├── 000131.txt\n",
+ " ├── 000139.txt\n",
+ " ├── 000141.txt\n",
+ " ├── 000169.txt\n",
+ " ├── 000171.txt\n",
+ " ├── 000179.txt\n",
+ " ├── 000201.txt\n",
+ " ├── 000209.txt\n",
+ " ├── 000211.txt\n",
+ " ├── 000279.txt\n",
+ " ├── 000281.txt\n",
+ " ├── 000289.txt\n",
+ " ├── 000311.txt\n",
+ " ├── 000319.txt\n",
+ " ├── 000321.txt\n",
+ " ├── 000361.txt\n",
+ " ├── 000369.txt\n",
+ " ├── 000371.txt\n",
+ " ├── 000399.txt\n",
+ " ├── 000401.txt\n",
+ " ├── 000411.txt\n",
+ " ├── 000439.txt\n",
+ " ├── 000441.txt\n",
+ " ├── 000449.txt\n",
+ " ├── 000471.txt\n",
+ " ├── 000479.txt\n",
+ " ├── 000481.txt\n",
+ " ├── 000509.txt\n",
+ " ├── 000511.txt\n",
+ " ├── 000519.txt\n",
+ " ├── 000541.txt\n",
+ " ├── 000549.txt\n",
+ " ├── 000551.txt\n",
+ " ├── 000579.txt\n",
+ " ├── 000581.txt\n",
+ " ├── 000589.txt\n",
+ " ├── 000611.txt\n",
+ " ├── 000619.txt\n",
+ " ├── 000621.txt\n",
+ " ├── 000651.txt\n",
+ " ├── 000659.txt\n",
+ " ├── 000661.txt\n",
+ " ├── 000689.txt\n",
+ " ├── 000691.txt\n",
+ " ├── 000699.txt\n",
+ " ├── 000721.txt\n",
+ " ├── 000731.txt\n",
+ " ├── 000739.txt\n",
+ " ├── 000789.txt\n",
+ " ├── 000791.txt\n",
+ " ├── 000799.txt\n",
+ " ├── 000821.txt\n",
+ " ├── 000829.txt\n",
+ " ├── 000831.txt\n",
+ " ├── 000859.txt\n",
+ " ├── 000861.txt\n",
+ " ├── 000869.txt\n",
+ " ├── 000891.txt\n",
+ " ├── 000899.txt\n",
+ " ├── 000901.txt\n",
+ " ├── 000929.txt\n",
+ " ├── 000931.txt\n",
+ " ├── 000939.txt\n",
+ " ├── 000961.txt\n",
+ " ├── 000969.txt\n",
+ " ├── 000971.txt\n",
+ " ├── 000999.txt\n",
+ " ├── 001001.txt\n",
+ " ├── 001009.txt\n",
+ " ├── 001099.txt\n",
+ " ├── 001101.txt\n",
+ " ├── 001109.txt\n",
+ " ├── 001131.txt\n",
+ " ├── 001139.txt\n",
+ " └── 001141.txt\n",
+ "\n",
+ "3 directories, 386 files\n"
+ ]
+ }
+ ],
+ "source": [
+ "# Check the directory structure of the tiny data\n",
+ "\n",
+ "# Install tree first\n",
+ "!apt-get -q install tree\n",
+ "!tree ssdd_tiny"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 595
+ },
+ "id": "YnQQqzOWzE91",
+ "outputId": "92c6c605-40bf-4618-faf1-41303c2818c9"
+ },
+ "outputs": [
+ {
+ "output_type": "display_data",
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ }
+ }
+ ],
+ "source": [
+ "# Let's take a look at the dataset image\n",
+ "img = mmcv.imread('ssdd_tiny/images/000631.png')\n",
+ "plt.figure(figsize=(15, 10))\n",
+ "plt.imshow(mmcv.bgr2rgb(img))\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "PMZvtSIl71qi"
+ },
+ "source": [
+ "Let's take a look at the annotation txt file.\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "n7rwalnPd6e1",
+ "outputId": "85073b5e-d6cb-4996-cdb8-96ba4c39187a"
+ },
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "337 169 395 183 398 162 339 154 ship 0\n",
+ "263 273 261 296 276 297 279 272 ship 0\n",
+ "95 165 173 132 184 156 103 186 ship 0\n"
+ ]
+ }
+ ],
+ "source": [
+ "# Check the label of a single image\n",
+ "!cat ssdd_tiny/train/000631.txt"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "metadata": {
+ "id": "GdSaB2ad0EdX"
+ },
+ "outputs": [],
+ "source": [
+ "from mmrotate.datasets.builder import ROTATED_DATASETS\n",
+ "from mmrotate.datasets.dota import DOTADataset\n",
+ "\n",
+ "\n",
+ "@ROTATED_DATASETS.register_module()\n",
+ "class TinyDataset(DOTADataset):\n",
+ " \"\"\"SAR ship dataset for detection.\"\"\"\n",
+ " CLASSES = ('ship',)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "PwqJOpBe-bMj"
+ },
+ "source": [
+ "### Modify the config\n",
+ "\n",
+ "In the next step, we need to modify the config for the training.\n",
+ "To accelerate the process, we finetune a detector using a pre-trained detector."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "metadata": {
+ "id": "hamZrlnH-YDD"
+ },
+ "outputs": [],
+ "source": [
+ "from mmcv import Config\n",
+ "cfg = Config.fromfile('./configs/oriented_rcnn/oriented_rcnn_r50_fpn_1x_dota_le90.py')"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "HntziLGq-92Z"
+ },
+ "source": [
+ "Given a config that trains a Oriented R-CNN on DOTA dataset, we need to modify some values to use it for training Oriented R-CNN on SSDD dataset."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 17,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "pUbwD8uV0PR8",
+ "outputId": "c1a2423b-2973-4f5e-9016-da20e578663b"
+ },
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "Config:\n",
+ "dataset_type = 'TinyDataset'\n",
+ "data_root = 'ssdd_tiny/'\n",
+ "img_norm_cfg = dict(\n",
+ " mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True)\n",
+ "train_pipeline = [\n",
+ " dict(type='LoadImageFromFile'),\n",
+ " dict(type='LoadAnnotations', with_bbox=True),\n",
+ " dict(type='RResize', img_scale=(1024, 1024)),\n",
+ " dict(\n",
+ " type='RRandomFlip',\n",
+ " flip_ratio=[0.25, 0.25, 0.25],\n",
+ " direction=['horizontal', 'vertical', 'diagonal'],\n",
+ " version='le90'),\n",
+ " dict(\n",
+ " type='Normalize',\n",
+ " mean=[123.675, 116.28, 103.53],\n",
+ " std=[58.395, 57.12, 57.375],\n",
+ " to_rgb=True),\n",
+ " dict(type='Pad', size_divisor=32),\n",
+ " dict(type='DefaultFormatBundle'),\n",
+ " dict(type='Collect', keys=['img', 'gt_bboxes', 'gt_labels'])\n",
+ "]\n",
+ "test_pipeline = [\n",
+ " dict(type='LoadImageFromFile'),\n",
+ " dict(\n",
+ " type='MultiScaleFlipAug',\n",
+ " img_scale=(1024, 1024),\n",
+ " flip=False,\n",
+ " transforms=[\n",
+ " dict(type='RResize'),\n",
+ " dict(\n",
+ " type='Normalize',\n",
+ " mean=[123.675, 116.28, 103.53],\n",
+ " std=[58.395, 57.12, 57.375],\n",
+ " to_rgb=True),\n",
+ " dict(type='Pad', size_divisor=32),\n",
+ " dict(type='DefaultFormatBundle'),\n",
+ " dict(type='Collect', keys=['img'])\n",
+ " ])\n",
+ "]\n",
+ "data = dict(\n",
+ " samples_per_gpu=2,\n",
+ " workers_per_gpu=2,\n",
+ " train=dict(\n",
+ " type='TinyDataset',\n",
+ " ann_file='train',\n",
+ " img_prefix='images',\n",
+ " pipeline=[\n",
+ " dict(type='LoadImageFromFile'),\n",
+ " dict(type='LoadAnnotations', with_bbox=True),\n",
+ " dict(type='RResize', img_scale=(1024, 1024)),\n",
+ " dict(\n",
+ " type='RRandomFlip',\n",
+ " flip_ratio=[0.25, 0.25, 0.25],\n",
+ " direction=['horizontal', 'vertical', 'diagonal'],\n",
+ " version='le90'),\n",
+ " dict(\n",
+ " type='Normalize',\n",
+ " mean=[123.675, 116.28, 103.53],\n",
+ " std=[58.395, 57.12, 57.375],\n",
+ " to_rgb=True),\n",
+ " dict(type='Pad', size_divisor=32),\n",
+ " dict(type='DefaultFormatBundle'),\n",
+ " dict(type='Collect', keys=['img', 'gt_bboxes', 'gt_labels'])\n",
+ " ],\n",
+ " version='le90',\n",
+ " data_root='ssdd_tiny/'),\n",
+ " val=dict(\n",
+ " type='TinyDataset',\n",
+ " ann_file='val',\n",
+ " img_prefix='images',\n",
+ " pipeline=[\n",
+ " dict(type='LoadImageFromFile'),\n",
+ " dict(\n",
+ " type='MultiScaleFlipAug',\n",
+ " img_scale=(1024, 1024),\n",
+ " flip=False,\n",
+ " transforms=[\n",
+ " dict(type='RResize'),\n",
+ " dict(\n",
+ " type='Normalize',\n",
+ " mean=[123.675, 116.28, 103.53],\n",
+ " std=[58.395, 57.12, 57.375],\n",
+ " to_rgb=True),\n",
+ " dict(type='Pad', size_divisor=32),\n",
+ " dict(type='DefaultFormatBundle'),\n",
+ " dict(type='Collect', keys=['img'])\n",
+ " ])\n",
+ " ],\n",
+ " version='le90',\n",
+ " data_root='ssdd_tiny/'),\n",
+ " test=dict(\n",
+ " type='TinyDataset',\n",
+ " ann_file='val',\n",
+ " img_prefix='images',\n",
+ " pipeline=[\n",
+ " dict(type='LoadImageFromFile'),\n",
+ " dict(\n",
+ " type='MultiScaleFlipAug',\n",
+ " img_scale=(1024, 1024),\n",
+ " flip=False,\n",
+ " transforms=[\n",
+ " dict(type='RResize'),\n",
+ " dict(\n",
+ " type='Normalize',\n",
+ " mean=[123.675, 116.28, 103.53],\n",
+ " std=[58.395, 57.12, 57.375],\n",
+ " to_rgb=True),\n",
+ " dict(type='Pad', size_divisor=32),\n",
+ " dict(type='DefaultFormatBundle'),\n",
+ " dict(type='Collect', keys=['img'])\n",
+ " ])\n",
+ " ],\n",
+ " version='le90',\n",
+ " data_root='ssdd_tiny/'))\n",
+ "evaluation = dict(interval=3, metric='mAP')\n",
+ "optimizer = dict(type='SGD', lr=0.001, momentum=0.9, weight_decay=0.0001)\n",
+ "optimizer_config = dict(grad_clip=dict(max_norm=35, norm_type=2))\n",
+ "lr_config = dict(\n",
+ " policy='step',\n",
+ " warmup=None,\n",
+ " warmup_iters=500,\n",
+ " warmup_ratio=0.3333333333333333,\n",
+ " step=[8, 11])\n",
+ "runner = dict(type='EpochBasedRunner', max_epochs=3)\n",
+ "checkpoint_config = dict(interval=3)\n",
+ "log_config = dict(\n",
+ " interval=10,\n",
+ " hooks=[dict(type='TextLoggerHook'),\n",
+ " dict(type='TensorboardLoggerHook')])\n",
+ "dist_params = dict(backend='nccl')\n",
+ "log_level = 'INFO'\n",
+ "load_from = 'checkpoints/oriented_rcnn_r50_fpn_1x_dota_le90-6d2b2ce0.pth'\n",
+ "resume_from = None\n",
+ "workflow = [('train', 1)]\n",
+ "angle_version = 'le90'\n",
+ "model = dict(\n",
+ " type='OrientedRCNN',\n",
+ " backbone=dict(\n",
+ " type='ResNet',\n",
+ " depth=50,\n",
+ " num_stages=4,\n",
+ " out_indices=(0, 1, 2, 3),\n",
+ " frozen_stages=1,\n",
+ " norm_cfg=dict(type='BN', requires_grad=True),\n",
+ " norm_eval=True,\n",
+ " style='pytorch',\n",
+ " init_cfg=dict(type='Pretrained', checkpoint='torchvision://resnet50')),\n",
+ " neck=dict(\n",
+ " type='FPN',\n",
+ " in_channels=[256, 512, 1024, 2048],\n",
+ " out_channels=256,\n",
+ " num_outs=5),\n",
+ " rpn_head=dict(\n",
+ " type='OrientedRPNHead',\n",
+ " in_channels=256,\n",
+ " feat_channels=256,\n",
+ " version='le90',\n",
+ " anchor_generator=dict(\n",
+ " type='AnchorGenerator',\n",
+ " scales=[8],\n",
+ " ratios=[0.5, 1.0, 2.0],\n",
+ " strides=[4, 8, 16, 32, 64]),\n",
+ " bbox_coder=dict(\n",
+ " type='MidpointOffsetCoder',\n",
+ " angle_range='le90',\n",
+ " target_means=[0.0, 0.0, 0.0, 0.0, 0.0, 0.0],\n",
+ " target_stds=[1.0, 1.0, 1.0, 1.0, 0.5, 0.5]),\n",
+ " loss_cls=dict(\n",
+ " type='CrossEntropyLoss', use_sigmoid=True, loss_weight=1.0),\n",
+ " loss_bbox=dict(\n",
+ " type='SmoothL1Loss', beta=0.1111111111111111, loss_weight=1.0)),\n",
+ " roi_head=dict(\n",
+ " type='OrientedStandardRoIHead',\n",
+ " bbox_roi_extractor=dict(\n",
+ " type='RotatedSingleRoIExtractor',\n",
+ " roi_layer=dict(\n",
+ " type='RoIAlignRotated',\n",
+ " out_size=7,\n",
+ " sample_num=2,\n",
+ " clockwise=True),\n",
+ " out_channels=256,\n",
+ " featmap_strides=[4, 8, 16, 32]),\n",
+ " bbox_head=dict(\n",
+ " type='RotatedShared2FCBBoxHead',\n",
+ " in_channels=256,\n",
+ " fc_out_channels=1024,\n",
+ " roi_feat_size=7,\n",
+ " num_classes=1,\n",
+ " bbox_coder=dict(\n",
+ " type='DeltaXYWHAOBBoxCoder',\n",
+ " angle_range='le90',\n",
+ " norm_factor=None,\n",
+ " edge_swap=True,\n",
+ " proj_xy=True,\n",
+ " target_means=(0.0, 0.0, 0.0, 0.0, 0.0),\n",
+ " target_stds=(0.1, 0.1, 0.2, 0.2, 0.1)),\n",
+ " reg_class_agnostic=True,\n",
+ " loss_cls=dict(\n",
+ " type='CrossEntropyLoss', use_sigmoid=False, loss_weight=1.0),\n",
+ " loss_bbox=dict(type='SmoothL1Loss', beta=1.0, loss_weight=1.0))),\n",
+ " train_cfg=dict(\n",
+ " rpn=dict(\n",
+ " assigner=dict(\n",
+ " type='MaxIoUAssigner',\n",
+ " pos_iou_thr=0.7,\n",
+ " neg_iou_thr=0.3,\n",
+ " min_pos_iou=0.3,\n",
+ " match_low_quality=True,\n",
+ " ignore_iof_thr=-1),\n",
+ " sampler=dict(\n",
+ " type='RandomSampler',\n",
+ " num=256,\n",
+ " pos_fraction=0.5,\n",
+ " neg_pos_ub=-1,\n",
+ " add_gt_as_proposals=False),\n",
+ " allowed_border=0,\n",
+ " pos_weight=-1,\n",
+ " debug=False),\n",
+ " rpn_proposal=dict(\n",
+ " nms_pre=2000,\n",
+ " max_per_img=2000,\n",
+ " nms=dict(type='nms', iou_threshold=0.8),\n",
+ " min_bbox_size=0),\n",
+ " rcnn=dict(\n",
+ " assigner=dict(\n",
+ " type='MaxIoUAssigner',\n",
+ " pos_iou_thr=0.5,\n",
+ " neg_iou_thr=0.5,\n",
+ " min_pos_iou=0.5,\n",
+ " match_low_quality=False,\n",
+ " iou_calculator=dict(type='RBboxOverlaps2D'),\n",
+ " ignore_iof_thr=-1),\n",
+ " sampler=dict(\n",
+ " type='RRandomSampler',\n",
+ " num=512,\n",
+ " pos_fraction=0.25,\n",
+ " neg_pos_ub=-1,\n",
+ " add_gt_as_proposals=True),\n",
+ " pos_weight=-1,\n",
+ " debug=False)),\n",
+ " test_cfg=dict(\n",
+ " rpn=dict(\n",
+ " nms_pre=2000,\n",
+ " max_per_img=2000,\n",
+ " nms=dict(type='nms', iou_threshold=0.8),\n",
+ " min_bbox_size=0),\n",
+ " rcnn=dict(\n",
+ " nms_pre=2000,\n",
+ " min_bbox_size=0,\n",
+ " score_thr=0.05,\n",
+ " nms=dict(iou_thr=0.1),\n",
+ " max_per_img=2000)))\n",
+ "work_dir = './tutorial_exps'\n",
+ "seed = 0\n",
+ "gpu_ids = range(0, 1)\n",
+ "\n"
+ ]
+ }
+ ],
+ "source": [
+ "from mmdet.apis import set_random_seed\n",
+ "\n",
+ "# Modify dataset type and path\n",
+ "cfg.dataset_type = 'TinyDataset'\n",
+ "cfg.data_root = 'ssdd_tiny/'\n",
+ "\n",
+ "cfg.data.test.type = 'TinyDataset'\n",
+ "cfg.data.test.data_root = 'ssdd_tiny/'\n",
+ "cfg.data.test.ann_file = 'val'\n",
+ "cfg.data.test.img_prefix = 'images'\n",
+ "\n",
+ "cfg.data.train.type = 'TinyDataset'\n",
+ "cfg.data.train.data_root = 'ssdd_tiny/'\n",
+ "cfg.data.train.ann_file = 'train'\n",
+ "cfg.data.train.img_prefix = 'images'\n",
+ "\n",
+ "cfg.data.val.type = 'TinyDataset'\n",
+ "cfg.data.val.data_root = 'ssdd_tiny/'\n",
+ "cfg.data.val.ann_file = 'val'\n",
+ "cfg.data.val.img_prefix = 'images'\n",
+ "\n",
+ "# modify num classes of the model in box head\n",
+ "cfg.model.roi_head.bbox_head.num_classes = 1\n",
+ "# We can still use the pre-trained Mask RCNN model though we do not need to\n",
+ "# use the mask branch\n",
+ "cfg.load_from = 'checkpoints/oriented_rcnn_r50_fpn_1x_dota_le90-6d2b2ce0.pth'\n",
+ "\n",
+ "# Set up working dir to save files and logs.\n",
+ "cfg.work_dir = './tutorial_exps'\n",
+ "\n",
+ "cfg.optimizer.lr = 0.001\n",
+ "cfg.lr_config.warmup = None\n",
+ "cfg.runner.max_epochs = 3\n",
+ "cfg.log_config.interval = 10\n",
+ "\n",
+ "# Change the evaluation metric since we use customized dataset.\n",
+ "cfg.evaluation.metric = 'mAP'\n",
+ "# We can set the evaluation interval to reduce the evaluation times\n",
+ "cfg.evaluation.interval = 3\n",
+ "# We can set the checkpoint saving interval to reduce the storage cost\n",
+ "cfg.checkpoint_config.interval = 3\n",
+ "\n",
+ "# Set seed thus the results are more reproducible\n",
+ "cfg.seed = 0\n",
+ "set_random_seed(0, deterministic=False)\n",
+ "cfg.gpu_ids = range(1)\n",
+ "\n",
+ "# We can also use tensorboard to log the training process\n",
+ "cfg.log_config.hooks = [\n",
+ " dict(type='TextLoggerHook'),\n",
+ " dict(type='TensorboardLoggerHook')]\n",
+ "\n",
+ "# We can initialize the logger for training and have a look\n",
+ "# at the final config used for training\n",
+ "print(f'Config:\\n{cfg.pretty_text}')"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "111W_oZV_3wa"
+ },
+ "source": [
+ "### Train a new detector\n",
+ "\n",
+ "Finally, lets initialize the dataset and detector, then train a new detector!"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 18,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "7WBWHu010PN3",
+ "outputId": "65e52055-46ee-4ba3-fac3-914389ab15d0"
+ },
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "/usr/local/lib/python3.7/dist-packages/mmdet/models/dense_heads/anchor_head.py:116: UserWarning: DeprecationWarning: `num_anchors` is deprecated, for consistency or also use `num_base_priors` instead\n",
+ " warnings.warn('DeprecationWarning: `num_anchors` is deprecated, '\n",
+ "2022-03-06 23:41:22,846 - mmdet - INFO - load checkpoint from local path: checkpoints/oriented_rcnn_r50_fpn_1x_dota_le90-6d2b2ce0.pth\n",
+ "2022-03-06 23:41:22,987 - mmdet - WARNING - The model and loaded state dict do not match exactly\n",
+ "\n",
+ "size mismatch for roi_head.bbox_head.fc_cls.weight: copying a param with shape torch.Size([16, 1024]) from checkpoint, the shape in current model is torch.Size([2, 1024]).\n",
+ "size mismatch for roi_head.bbox_head.fc_cls.bias: copying a param with shape torch.Size([16]) from checkpoint, the shape in current model is torch.Size([2]).\n",
+ "2022-03-06 23:41:22,992 - mmdet - INFO - Start running, host: root@70c142fde9f7, work_dir: /content/mmrotate/tutorial_exps\n",
+ "2022-03-06 23:41:22,994 - mmdet - INFO - Hooks will be executed in the following order:\n",
+ "before_run:\n",
+ "(VERY_HIGH ) StepLrUpdaterHook \n",
+ "(NORMAL ) CheckpointHook \n",
+ "(LOW ) EvalHook \n",
+ "(VERY_LOW ) TextLoggerHook \n",
+ "(VERY_LOW ) TensorboardLoggerHook \n",
+ " -------------------- \n",
+ "before_train_epoch:\n",
+ "(VERY_HIGH ) StepLrUpdaterHook \n",
+ "(LOW ) IterTimerHook \n",
+ "(LOW ) EvalHook \n",
+ "(VERY_LOW ) TextLoggerHook \n",
+ "(VERY_LOW ) TensorboardLoggerHook \n",
+ " -------------------- \n",
+ "before_train_iter:\n",
+ "(VERY_HIGH ) StepLrUpdaterHook \n",
+ "(LOW ) IterTimerHook \n",
+ "(LOW ) EvalHook \n",
+ " -------------------- \n",
+ "after_train_iter:\n",
+ "(ABOVE_NORMAL) OptimizerHook \n",
+ "(NORMAL ) CheckpointHook \n",
+ "(LOW ) IterTimerHook \n",
+ "(LOW ) EvalHook \n",
+ "(VERY_LOW ) TextLoggerHook \n",
+ "(VERY_LOW ) TensorboardLoggerHook \n",
+ " -------------------- \n",
+ "after_train_epoch:\n",
+ "(NORMAL ) CheckpointHook \n",
+ "(LOW ) EvalHook \n",
+ "(VERY_LOW ) TextLoggerHook \n",
+ "(VERY_LOW ) TensorboardLoggerHook \n",
+ " -------------------- \n",
+ "before_val_epoch:\n",
+ "(LOW ) IterTimerHook \n",
+ "(VERY_LOW ) TextLoggerHook \n",
+ "(VERY_LOW ) TensorboardLoggerHook \n",
+ " -------------------- \n",
+ "before_val_iter:\n",
+ "(LOW ) IterTimerHook \n",
+ " -------------------- \n",
+ "after_val_iter:\n",
+ "(LOW ) IterTimerHook \n",
+ " -------------------- \n",
+ "after_val_epoch:\n",
+ "(VERY_LOW ) TextLoggerHook \n",
+ "(VERY_LOW ) TensorboardLoggerHook \n",
+ " -------------------- \n",
+ "after_run:\n",
+ "(VERY_LOW ) TextLoggerHook \n",
+ "(VERY_LOW ) TensorboardLoggerHook \n",
+ " -------------------- \n",
+ "2022-03-06 23:41:22,996 - mmdet - INFO - workflow: [('train', 1)], max: 3 epochs\n",
+ "2022-03-06 23:41:22,999 - mmdet - INFO - Checkpoints will be saved to /content/mmrotate/tutorial_exps by HardDiskBackend.\n",
+ "/usr/local/lib/python3.7/dist-packages/mmdet/models/dense_heads/anchor_head.py:123: UserWarning: DeprecationWarning: anchor_generator is deprecated, please use \"prior_generator\" instead\n",
+ " warnings.warn('DeprecationWarning: anchor_generator is deprecated, '\n",
+ "2022-03-06 23:41:38,421 - mmdet - INFO - Epoch [1][10/55]\tlr: 1.000e-03, eta: 0:02:28, time: 0.958, data_time: 0.238, memory: 3822, loss_rpn_cls: 0.1268, loss_rpn_bbox: 0.0315, loss_cls: 0.4075, acc: 91.7871, loss_bbox: 0.0574, loss: 0.6232, grad_norm: 5.8396\n",
+ "2022-03-06 23:41:43,250 - mmdet - INFO - Epoch [1][20/55]\tlr: 1.000e-03, eta: 0:01:44, time: 0.483, data_time: 0.010, memory: 3822, loss_rpn_cls: 0.0417, loss_rpn_bbox: 0.0224, loss_cls: 0.1827, acc: 92.9980, loss_bbox: 0.1160, loss: 0.3628, grad_norm: 3.6948\n",
+ "2022-03-06 23:41:47,898 - mmdet - INFO - Epoch [1][30/55]\tlr: 1.000e-03, eta: 0:01:25, time: 0.465, data_time: 0.008, memory: 3822, loss_rpn_cls: 0.0177, loss_rpn_bbox: 0.0319, loss_cls: 0.1304, acc: 94.5117, loss_bbox: 0.1026, loss: 0.2825, grad_norm: 2.4865\n",
+ "2022-03-06 23:41:52,653 - mmdet - INFO - Epoch [1][40/55]\tlr: 1.000e-03, eta: 0:01:14, time: 0.475, data_time: 0.009, memory: 4020, loss_rpn_cls: 0.0120, loss_rpn_bbox: 0.0212, loss_cls: 0.1486, acc: 92.5488, loss_bbox: 0.1440, loss: 0.3257, grad_norm: 2.9026\n",
+ "2022-03-06 23:41:57,508 - mmdet - INFO - Epoch [1][50/55]\tlr: 1.000e-03, eta: 0:01:05, time: 0.485, data_time: 0.008, memory: 4020, loss_rpn_cls: 0.0092, loss_rpn_bbox: 0.0258, loss_cls: 0.1415, acc: 93.4082, loss_bbox: 0.1254, loss: 0.3019, grad_norm: 2.1873\n",
+ "2022-03-06 23:42:08,011 - mmdet - INFO - Epoch [2][10/55]\tlr: 1.000e-03, eta: 0:00:55, time: 0.744, data_time: 0.238, memory: 4020, loss_rpn_cls: 0.0052, loss_rpn_bbox: 0.0143, loss_cls: 0.1292, acc: 93.2031, loss_bbox: 0.0995, loss: 0.2482, grad_norm: 2.0069\n",
+ "2022-03-06 23:42:12,839 - mmdet - INFO - Epoch [2][20/55]\tlr: 1.000e-03, eta: 0:00:49, time: 0.483, data_time: 0.010, memory: 4020, loss_rpn_cls: 0.0029, loss_rpn_bbox: 0.0298, loss_cls: 0.1524, acc: 91.6895, loss_bbox: 0.1496, loss: 0.3348, grad_norm: 2.2273\n",
+ "2022-03-06 23:42:17,626 - mmdet - INFO - Epoch [2][30/55]\tlr: 1.000e-03, eta: 0:00:43, time: 0.479, data_time: 0.009, memory: 4020, loss_rpn_cls: 0.0053, loss_rpn_bbox: 0.0260, loss_cls: 0.1255, acc: 94.3164, loss_bbox: 0.0986, loss: 0.2554, grad_norm: 1.7703\n",
+ "2022-03-06 23:42:22,315 - mmdet - INFO - Epoch [2][40/55]\tlr: 1.000e-03, eta: 0:00:37, time: 0.469, data_time: 0.008, memory: 4020, loss_rpn_cls: 0.0014, loss_rpn_bbox: 0.0140, loss_cls: 0.1377, acc: 92.9395, loss_bbox: 0.1065, loss: 0.2597, grad_norm: 1.8501\n",
+ "2022-03-06 23:42:27,086 - mmdet - INFO - Epoch [2][50/55]\tlr: 1.000e-03, eta: 0:00:31, time: 0.477, data_time: 0.008, memory: 4020, loss_rpn_cls: 0.0035, loss_rpn_bbox: 0.0192, loss_cls: 0.1126, acc: 94.8438, loss_bbox: 0.1005, loss: 0.2357, grad_norm: 2.1476\n",
+ "2022-03-06 23:42:36,694 - mmdet - INFO - Epoch [3][10/55]\tlr: 1.000e-03, eta: 0:00:23, time: 0.715, data_time: 0.230, memory: 4020, loss_rpn_cls: 0.0016, loss_rpn_bbox: 0.0174, loss_cls: 0.1221, acc: 95.7422, loss_bbox: 0.1016, loss: 0.2428, grad_norm: 2.0338\n",
+ "2022-03-06 23:42:41,491 - mmdet - INFO - Epoch [3][20/55]\tlr: 1.000e-03, eta: 0:00:18, time: 0.480, data_time: 0.009, memory: 4020, loss_rpn_cls: 0.0008, loss_rpn_bbox: 0.0262, loss_cls: 0.1183, acc: 96.0742, loss_bbox: 0.0871, loss: 0.2324, grad_norm: 1.8662\n",
+ "2022-03-06 23:42:46,332 - mmdet - INFO - Epoch [3][30/55]\tlr: 1.000e-03, eta: 0:00:12, time: 0.484, data_time: 0.008, memory: 4020, loss_rpn_cls: 0.0035, loss_rpn_bbox: 0.0396, loss_cls: 0.1179, acc: 95.4297, loss_bbox: 0.1787, loss: 0.3398, grad_norm: 2.6065\n",
+ "2022-03-06 23:42:51,241 - mmdet - INFO - Epoch [3][40/55]\tlr: 1.000e-03, eta: 0:00:07, time: 0.491, data_time: 0.010, memory: 4020, loss_rpn_cls: 0.0026, loss_rpn_bbox: 0.0233, loss_cls: 0.1157, acc: 95.6055, loss_bbox: 0.1160, loss: 0.2577, grad_norm: 2.0607\n",
+ "2022-03-06 23:42:56,039 - mmdet - INFO - Epoch [3][50/55]\tlr: 1.000e-03, eta: 0:00:02, time: 0.480, data_time: 0.009, memory: 4020, loss_rpn_cls: 0.0006, loss_rpn_bbox: 0.0129, loss_cls: 0.1005, acc: 96.9336, loss_bbox: 0.1052, loss: 0.2191, grad_norm: 1.8306\n",
+ "2022-03-06 23:42:58,895 - mmdet - INFO - Saving checkpoint at 3 epochs\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "[>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] 84/84, 7.9 task/s, elapsed: 11s, ETA: 0s"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "2022-03-06 23:43:27,895 - mmdet - INFO - \n",
+ "+-------+-----+------+--------+-------+\n",
+ "| class | gts | dets | recall | ap |\n",
+ "+-------+-----+------+--------+-------+\n",
+ "| ship | 176 | 2526 | 0.943 | 0.920 |\n",
+ "+-------+-----+------+--------+-------+\n",
+ "| mAP | | | | 0.920 |\n",
+ "+-------+-----+------+--------+-------+\n",
+ "2022-03-06 23:43:27,897 - mmdet - INFO - Epoch(val) [3][84]\tmAP: 0.9203\n"
+ ]
+ }
+ ],
+ "source": [
+ "import os.path as osp\n",
+ "\n",
+ "from mmdet.datasets import build_dataset\n",
+ "from mmdet.models import build_detector\n",
+ "from mmdet.apis import train_detector\n",
+ "\n",
+ "# Build dataset\n",
+ "datasets = [build_dataset(cfg.data.train)]\n",
+ "\n",
+ "# Build the detector\n",
+ "model = build_detector(\n",
+ " cfg.model, train_cfg=cfg.get('train_cfg'), test_cfg=cfg.get('test_cfg'))\n",
+ "# Add an attribute for visualization convenience\n",
+ "model.CLASSES = datasets[0].CLASSES\n",
+ "\n",
+ "# Create work_dir\n",
+ "mmcv.mkdir_or_exist(osp.abspath(cfg.work_dir))\n",
+ "train_detector(model, datasets, cfg, distributed=False, validate=True)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "_vYQF5K2NqqI"
+ },
+ "source": [
+ "### Understand the log\n",
+ "From the log, we can have a basic understanding the training process and know how well the detector is trained.\n",
+ "\n",
+ "Firstly, the ResNet-50 backbone pre-trained on ImageNet is loaded, this is a common practice since training from scratch is more cost. The log shows that all the weights of the ResNet-50 backbone are loaded except the `conv1.bias`, which has been merged into `conv.weights`.\n",
+ "\n",
+ "Second, since the dataset we are using is small, we loaded a Oriented R-CNN model and finetune it for detection. \n",
+ "The original Oriented R-CNN is trained on DOTA dataset which contains 15 classes but SSDD dataset only have 1 classes. Therefore, the last FC layer of the pre-trained Oriented R-CNN for classification has different weight shape and is not used.\n",
+ "\n",
+ "Third, after training, the detector is evaluated by the default evaluation. The results show that the detector achieves over 90 mAP on the val dataset,\n",
+ " not bad!\n",
+ "\n",
+ "We can also check the tensorboard to see the curves."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "# load tensorboard in colab\n",
+ "%load_ext tensorboard\n",
+ "\n",
+ "# see curves in tensorboard\n",
+ "%tensorboard --logdir ./tutorial_exps"
+ ],
+ "metadata": {
+ "colab": {
+ "resources": {
+ "https://localhost:6009/?tensorboardColab=true": {
+ "data": "PCFkb2N0eXBlIGh0bWw+PG1ldGEgbmFtZT0idGItcmVsYXRpdmUtcm9vdCIgY29udGVudD0iLi8iPjwhZG9jdHlwZSBodG1sPjwhLS0KQGxpY2Vuc2UKQ29weXJpZ2h0IDIwMTkgVGhlIFRlbnNvckZsb3cgQXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KCkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwp5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoKICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoKVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQpkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZApsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLS0+PGh0bWw+PGhlYWQ+PG1ldGEgY2hhcnNldD0idXRmLTgiPgo8dGl0bGU+VGVuc29yQm9hcmQ8L3RpdGxlPgo8bGluayByZWw9InNob3J0Y3V0IGljb24iIGhyZWY9ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBTVFBQUFERUNBWUFBQURBcG81ckFBQUFCSE5DU1ZRSUNBZ0lmQWhraUFBQUFBbHdTRmx6QUFCYWJnQUFXbTRCeFdzak9BQUFBQmwwUlZoMFUyOW1kSGRoY21VQWQzZDNMbWx1YTNOallYQmxMbTl5WjV2dVBCb0FBQmwwU1VSQlZIaWM3WjE1ZUZUVjNjYy92NXNGQ1ZSeHFWdHB0VlcyVmx4ZjYxcXRpcTBMOUdsOU5YVUJGRXBGUlRJaGhCQURDVGRBTUFFa0NZc0s3cUI5K2tENzJxZkJXaXZxVzdWYTY3NGlyZTlyYXhYMWJaVldaVEhML040LzVnNEdTR0R1ekwxejc1MDVuMzg0ek13NTU4dk0vWEsyM3prSERJR2ppemhQRjNGZTBEb01JRUVMeUdkMFBvT3dhQUF1Y1Y1YWgwVzVWUEI2a0xyeUdXT0lBRkNiL3ZTakVxZ0crdXp3S3dnZHdDMTBVQ2ZWL0RzWWhmbUxNVVFXVVJ1TEVrWUQ4eEVPMnY3R2pvWndQc3hIV014aElFdWxsSzVzNnN4bmpDR3loQzdnSkpSVzRDU2daeFAwbkg0Smk1aVU4N2pmR2czR0VMNmpUUXdFNWdHamtXN2ZkK3FHU0xLV0lzcGtNbS83SU5QZ1lBemhFMnBUUWgrcXNLZ0MrZ0x1VGJCcmVpdXdtSFlhWkRxZmVpcllBQmhEZUk0cVFpTVhBd3NRRHZQQUJEMmxOeUxVczRuYnhTYWV1V3BERW1NSUQ5RWJPUUZvUlRodCs0ditHQ0w1NTdOQXVjUjRLaTNCaGwwd2h2QUFiZUFRTEd4Z0FtRDVhb0x1NmNTZml2QUxsRXFKOFk1TDZZYWRNSWJJQUxVcHBvaHJFV1lqN0wzOWpld2FJcG5lakxLUXZXbVVjV3hMNlI5ZzJBVmppRFRSdVl6Q29nWDRCcEE5RTNSUDkveiszNEdaVXNiS1hxUWJkb014aEV1MGdhTVJtbEhPOXZBQi82T1RPdGtEUXlUU3lpTW81UkxqdFo3K0hZYWVzWUlXRUJYVVpqK2RTeXZ3UE1yWkhoVzdFV0VpbjNFYVV6a1ZvUlQ0bXljbEMrZGc4Ykl1WmFYZXdvR2VsSmtIbUJaaUQ2aE5JVVdNUjJrQUR2Q29WZGlLc0pqNHJ1c0p1cHdTUHFNS3FFS2M5WXZleWttOXprMUFFd2ZTTEtXMFkrZ1ZZNGpkb1BXY2cwVUx3bEhiWDh6Y0VHc1J5bVRhN2xlY3RZbUJGRGtyM095d3hwMk9JWkxwRFFoVDVUb2UyRjNkK1l3eFJBL29IQVpCdDdCc2IxcUZGeW1nWENyZHhTVHBJczRFV2hDTzNhWE05TFdzbzRDWVhNTWJiclRrQThZUTNWQ2IvZ2lWeUU1aDJaa1o0aU9FT1J5ZWZ0U3EybGdNWURUS2ZPQWdqM1Ixb054Q0lYVXkwWVNaSnpHR3dIbmdMT2VCNnlrc083MEhML0hBaVhmN0duUVovV252d2JEcGF3U2NNUFA5VEpnNUdFT2dzMU1JeTNiL3NLMGpUa3hxL09tU2FDdURVQnFRN1R2dHZPald2WWhRTHRma2Q1aDUzaHBDYlJkaDJhay9WQnRRS3FTRzMzZ3F0aGUwbFhPQUZ1QW9EOWRFMWxKQW1mdzBQOFBNODg0UWFsTUN6clJtcW1IWmUzNlFOaUUwOFRuTlltZDNXbE50Q3RtWDhZZ3pMZHk3UmpmcFJKaDVFUTN5ay93S004OGJReWdJZFZ5TXhRTFVaVmgyNys5M290eUpNRk5xK0lmWG10MmdpOWlQUW1ZQjF5RVVibjhqTTNPOGgxTERSRmFKb0o0S0RpbDVZUWl0NVFRa2c3RHNubDk3Rkl0eXFlWlZUOFZtaUM1aEtFb3o0aHhyNDAxWDZsbVVtRnpEMHg1S0RTVTViUWl0NFJDS3NORU13N0ozZk8wdGxCcVp5UnFQNVhxS0xtWVVRZ3ZpQkI5Q3B1WlE0RjQ2cUpKSmZPQ3AyQkNSazRaUW0ySTZQUXpMVHZ5WkNLL2VoeHVsak04OWx1d0xhbFBNL3M3M0FIdDcxRnBzUmxoSVlXNkdtZWVjSVhTRzUySFpjWVQ3RUtiSkRENzBWbTEyME9VY1FnYzI0clNVNE1YMzhoWkNqVXdJZDB2cGxwd3hoTjdBVUFwb0JzN3pjQXJ5R1pTWTFQR01oMUlEUTI5MnRyZ3FwM24ySFZrOFNwd3A4bE5lOFZCcVlFVGVFR3F6SHgzTVFyZ09uTm1Wekgvc2Q0RVoxT2JlN0lvcXdpM09JUWh3R09ERjk5V0pPTE50NDRPZGJjdVV5QnBDYlFycFlEeDRHcGE5QlZqQWwyaVNDclo2S0RkMDZISks2S1FLU1NITVBOVzB4U2JpTkxGM2RNUE1JMmtJclhGV2FMMEx5MWJnRnhRd1RXWjZ0RUVuSXVqaUZNTE0zYVlUWWVZVk1pNDdLL1plRWlsRDZFd0dFZmM4TFBzNUxNcWxqajk0cHpSNjZNMmM2VXhHN0JwbTdqYjl4V3ZyS0tSTXhyTGVPNlgrRWdsRHFPMUVlU3JWQ0gyMnY1R1pJVFlDOVdBTyswcWlOaFlITzRjeGR3OHpoMHpXYlJKUnZ4M1JDRE1QdFNIVXhtSXJvN0djSHdpOGFCWGFnVnNwWWFZNURySm5kQm45c2FqRWNzTE1JUk5ESkVtRW1mY05kNWg1YUEyaE4zUUx5L1p1R25VdFFreHMvdGREcVRtTDNzb2d4T21pWm02SVpQb0ZsSElaeHhOZWF2V0swQmxDcXhpSTFXMlFCMTYwQ2kraGxNc2NmdStwMkR4QlZ6RENpWTlLVEdKa1pvaGtlaTF4SnNzNC91cWwxa3dKalNIVXBvUXR6alFnOVBXb1ZVaHMzMXpQVWxrVDNtWTZDcWhOSVY5eFRoOFJKOHdjTWpFRUpLYTVsOUNYdVZMS1o5NHFUby9BRGFFZ1RPTml4RmtvY3YrbDlwUk9YRXZWVHAwMGhYOGdGeVgwZHZaRG1RVk1BZ295TkVReS9SNUNEYU9EWHdnTjFCQTZsUk93ZWduTFR0OFE2eERLWlk2NXVOQlA5RGFHQVl1UWJyZW5adjdiL1FtTG1JemVmcEpoMWduRUVGcnVoR1h2N3JSczkxL3FCdUpNbFhubXpLRnNvcmN6Q3B4Z1NtOWFkMFdjTVBOeDJROHp6Nm9obk83Uk5KUmFoUDQ5cW5EL3BYNE0xRlBFeldMVDZhMWlReXJvWGV4Rm5BcmdCcUMvUitPL1Q3Q1lReEdMc3hrR2t2VVdRaXM0emprTjc0d2VWYVJ1aUVSWWRoR1ZZdk4vZm1nMXVFT1hjd2lGUG9XWlg1R2RNUFBBeGhCYXlTaUVWdURycmcyaFBJb3dSZWJsUnNoeHJxRjNjd0pkenRqUXV6V2tSMUhLWmJTL1czYURIVlRiRkxPWmF4SG1BRi9hUVZIUFg4eGJXTlJJUTI1dFNzbEZWQkh1OWlITUhPNmtpSmxTNmsrWWVlRFRyZ0JheGFIQUxHQUMwbU5UbTlpMldFeWoyTG0zYlRHWDBlV1VVSnppYWVhcHB6ZWgxSE1veStRc2I4ZU5vVEJFRXEzaVA1eHUxS21Pc3NURzlpNnFaRUh1Ym16UEIvUTJCbExNUE5URE1ITjRFNHNLdVpRSHZkSVpLa09BTXhNMW5URUlGMk5oeXp4ZUNGcVR3VHYwTHI3cmhKa2ZzLzNGek0xeFAzRXE1WXJNWTlSQ1p3aEQ3cU0yRm9jN1llYVNRWmo1anVrT0xHNmhnMW9aelNmcGFqT0dNQVNHcnFZL1c3dWRaZzZadHhiQyt5ZzJGbmVrRTJadURHRUlITDJQUVhTbEVXYSt1elE4ajBXNWxQS2tHeTNHRUliUW9QZHdQc0lpaEtGQXBvYUF4S1gyRStUSDNKbXFCdGUza0dvNUU3U2NIN3JOWnpEc0NibVNCOW5LMGNCRTRKOWVGQWtjNmlhRCsydDVsU05SN3RjWTYvUjZ4OGtHZzBmSVJEcGtEQ3Zvd3hCZ01XUjNIMHM2aGloeVV1ZFF3Q3NhbzFXdjZ4YW9aekI0Z0pUeXNZd21ScHpod0crelZhOTdRMWpiRFFGUUJKUlJ4SHFOTWRZelZRYURnNHhsdll6bWZJUWZnUDk3NFROcElib3pFTGhIeTNqWWRLTU1maUNYMDBZUnc0QnlTSCtkWVUrNE53UTlHaUtCTUlJQ1h0WXBOS3JOWHVuTE1oaDJSVXBwbHl0b1JSZ0cvcHlsNWEwaEVoU2pUT2Rmdks0eFJxWWp5bURZSFhJWkc4R2Z2ZGQrR0NMSk54RGFkQXB0V3NuWDA2akhZTWc2WG8waGRzZEl1bmhkSzdCTk44b1FkaktkWlVxVnZpaXorSVRYdEpJTDA4aHZNR1NGYkxRUTNUbUNPR3UxZ2pZdDUvQU15akVZZk1IUE1jVHVHRWtCYjJpbDZVWVp3a1ZRaG9Ca04rcFRYdFZwWE9CUm1RWkRSZ1JwaUNSSG9qeWdVMm5UYXRPTk1nUkx0c2NRdlNPTXBKUFh0UXBiSjNlN0ZNVmd5Q0x1RFNFK0dTSkJDY29zK3ZDYVR1dDJacWpCa0NYQzBHWGFGZUZJNEVHdG9rMm5PbWY2R0F4WklKeUcrSUxFYkpUcFJobXlSTmdOQVZBQ3pLS0VWM1U2Mzg5eTNZWThJd3FHU0RJSStLMVcwNmJUK1ZwQUdndzVUcFFNa1VBWmliQmVxN0hWcGpoUUxZYWNJM3FHU0pEb1JtM2pWYTNtZTBHTE1lUU9VVFZFa3NFSUQra050T2tNdmhxMEdFUDBpYm9oa293a3pucXRNZDBvUTJia2lpRUErZ0d6YU9jVnJlSGNvTVVZb29rclEyamk0S2RDbjdSNHhSRGdkenJEZEtNTTduSFhRbHdkZWpOMFp5U3dYbWVhYmxSZUUzZDNHSUhiTGxOWXUwdTkwUTlsRmwyOHJETVpFYlFZUTFiWmpGTFBOaGE1eWVUT0VQdEd6aEFKbEtIQTczUW1LN1dHZzRLV1kvQVZCVmJSd1NDNURGdkd1YnVDelowaE9pTnFpQVFDaktHQURUcVRtTnFSNnY0WlVrSDVFeGFueWFXTWxURzhuMDRSN2d6UkZXbERKTmtIb1lVdW50TmFUZ3Rhak1FVDNrVzRra3M1V1VwNU9wT0MzQm5DcjgxQndYQU13aE5hWjdwUmtVWFpBdFJUd0dDNWxKVWltUjllNXM0UThad3lCQ1M3VVlXOHFYWEU5QklLZ2haa1NCRmhGVVVNbHN1d3BaU3QzaFhyQXIyZW9SU3czbFdwMFVxL2hEQkpiSjdDa0plNGF5R0tjcTZGMkpsamdTZlZacVhhSEJpMEdFUDJ5ZWN4Uk0rbzA0MkNEVnBQVEZlYmJsUStZUXpST3dOUVdsalBzenFiVTRJV1k4Z091YjVTN1FYSG9meEI2MW1wOC9oeTBHSU0vbUphaU5SSWRLTTYyYUJ6VERjcWwzRm5DTW43SUxsOVVWcll3SjkwTGljSExjYmdQYWJMbEE3SzhTaFA2UnpUamNvMVRKY3BmUkxkcUM3VGpjb2xUQXVST2ZzaXRQQVhudEhabkJTMEdFTm11RE5FZXJjSDVRZktDVmc4cFhOWnFUWUhCQzNIa0I2bWhmQVdDMkVNUld6UUJtSnFwN1ZuUFZSb013T0MxcEFKdXBxRDNYemU3USsyNXowRXJxS2pjcGI5Z0JhS2VWSWJPU1pvTWVtZ1N6aFVsN0tjWXVZRXJTVWRkQlZEOUdjOFFBZFQzZVJ6TzZoMk4rMXF6SEVLU2xuUUl0eWdOc1c2aEJnV2J5SmNUWG9uc3dTRzNzZStlaCtOV0x3QzdtK21jcmRyVENsSyt5SGZNZDltNERHZ2pTNmVvSWpIMEJ6ZGt4Q25QV2dKcWFMTEdJWFNDdEc3VjF4dExJNWdOTEFBMGcvTWRMdU5NcE14eE5zb0R3TnIyWWVIeFA3aVFkRktLb0Q3TWlnN3ZBZ2RRVXZZRTdxTVk0blRnbkptMEZyU1FlL2pMT0swSUJ5ZGFWbnVER0ZSNUdKUFVoZUovUVZyRWRya0pwN3Y3WU95a0o5cEpaZEREdDVoTGVGdElYUXArd04xeEprRTBWdEgwWlY4RFl1NUtHTzg2cDY3N3pMdG5zMkkweFVxNU5leWdBOWNLTG1lTHI1TDRnUyszRUhEMTBMb2NvcG81enJpMUNQc0U3UWV0K2hLK2lGTUE2YWo3T1hsV05XTEx0UGJDQThqdTNhRjNDQ04vRldyYUVDWmwzZ2huVkpDU01nTW9Zc1p3ZWUwQU44S1dvdGJWQkh1WlF4S0U3aWJUazJWZEF6eFJWY29UcHNzN3IwcjVKb1NGckNaVWhJNzEzSURLeHlHMEtVTXBvdEZLQmRHOFQ4YnZZc1RXVVVyK0xzM3haMGh1cmliSXVaTE14LzdJVVpzT3JXUzZ4Q2VwUHQwWDIvN29LTkJvR01JYldZQVFqVmRUSUhvUlN2clBYd0Z1QkVZVFJaK2ZWZUdrS1c4NlplUTdYVXM1R21keG5MZ1dyL3J5Z29CZFpuVXhtSkE1dE9RUWFHcjZjdFd5b0Fad0pleVZXODRGMTIyVVkzdzNoNC9GNFhXSW9CWkpyMkpzOWlIRjRCN2lLSVo3bUlVVzNnRHBaRXNtZ0ZDYWdoWndpZEFoYnRNL21qSm1DeTJFSG9UWDlWbVZtTHhLRVF2WkVUdjVIaTlpOGNSZmcwY0hvU0cwSjV2S2syczFtbU1SaGpsUHJNUGd0SWxDNGJRQmZURFlockNkR0F2dit2ekdyMkgvZW1pRGdsK1BTUzBoZ0RBNG5xVXM0RCthWmNSdkRsODZ6S3BJaXppWW9TRkVMMnJpblU1UlJSekhWM2hXUThKWlpjcGlUVHhEa0s5ZHdWNlZsTHErRFR0cWdzNWtVVThDYXdtaW1hNGt4RVU4UkpLQzRURERKQmxRNmhOb2JwOUxQdlNBcnpvdVpqc21HTVR5cXRlRnFoTkhLb0xXWTd3UitCVUw4dk9Cbm9IUS9SMkhuRGkycjRadEo2ZDhkMFFPcGsrT29VUldrRXJuL0F1VTdqS1RYNng2VVM1bXNTQ29ELzRZUTdsQXl6T2tocmU4S3pJaFZ4RUFYK0c2SVZsQStqdGpBZGVROXlIWldjTFg3NVVuVUpmbmNJb25jSktDdmtRZUJnb0F3NUNhTllxQnJvcFQrYnpISEN6SDFwM3JjeVRVdDZtZ085SU5TOTdVdG9YSEVPMFk3MkdFZkp4cTJmaXRKd0JLT2NpakVMNUVkQy9sNGRySDdxNEJWek9IaWt6RUg0RTdzeVVFZW1aNHpVSytiNU1aNlBIYWd4WklLTVdRaWV4djhZWXF6SGFVRDRrTWNBYnc1NW5oVVpxQlQ5MlU1Zk01MU1rOUx2UEhxZUEwNDBab290clEraGtCbW9aVjJ1TU5ncDVuOFJxNkVqY3hza0lTN1hTM1NxcU5ISS95cTljMWVNVmUyNHQxbExDZVZMTnY3T2d4dUFUN2k1dUwrY2lMTjVCV0U3Q0JKbnNvRHVBT00ydWN5bVRJT0NIYm1kektQZnlaUzZTQ3U5dXNqRUVnOXNydGZyaDVaeU1jTGxPNVlldXNzeG5JOG9zenpSa2lzVVN1cmhTSm9ZanpOdVFHY0ZQM1FrM2F6WDd1c3JUbHlYQUgvMFJsRElLMU1zTXlzUW1IckFXZzBjRWJ3ZzRoRTZhM0dRUW16Z1dFeUd3LzVXN1VLNlJXdXlBNmpmNFJCZ01BVEJCcC9FOU54bGtIcThBUzN6U3N6dmFFUzZUT2xZRVVMZkJaOEppQ0NIT2NyVmRCdkgxb1JaNDJ4OUpQYklaWVpUTVpFMFc2elJra2JBWUFvVEQyY3hjVjFsc3RqZ2h3OW5nWXl4R1NDMi95MUo5aGdBSWp5RVNUTmJwbk80bWc4empRZUFYUHVsSjhnN0NxVEl6OElHOHdXZkNaZ2lMT0xlcjdYS1RTeWVUZ1gvNUk0bjFGSEM2MUxMQnAvSU5JU0pzaGdBWXdtWnEzV1J3RGtTYjZZT1c1eWppVEpuSjM5TXRRQnM0eWt0QkJuOEpveUVBcXJTYUUxemxLT1lXNENrUE5UekdYcHd0TmZ3ajNRTDBScVlqVkhxb3llQXpZVFZFSVhIdTBLdFREdzBSbXpnRlhJTTNheE8vQWk2UTZYeWFiZ0hhd0d6bjFBaERoQWlySVFDT1lRQlZiakxJSEY1RjBvaVAycEc3Z1V2RVpsczZtVlVSYmFBRmNkZnRNNFNETUJzQ29GYW51enlEZEFzMjhEOXAxU1kwaWMwNHNlbE1KN3V1cG9CNTNBN0UwcXJmRURoaE4wUWY0QTY5SlBXalNhU1pyVTVFYk9vSWlsSXBOdFZ1QlNiUjFSVHdaKzRDeHFkYmhpRjR3bTRJVUU3aTYweDJrMFhtOFJEQ3oxUDhlQmN3UVdaemszdHhDZFNtbUQrekJtRk11bVVZd2tINERRRWdOR2cxUjdyS0U2Y2MyTFNIVDMxT1lyeHdaN3JTMUthRVF0cUFINlZiaGlFOFJNTVFVSUp5bTVzamJHUWVIOEp1dTBEL3dtS0V6T2IrZEVYcEF2bzVabkFWbUdnSUwxRXhCTUIzcWVhbnJuSTBjQnZ3WkEvdkpJNklzWHQ4THlYVVpnRGJXQWVjblc0Wmh2QVJKVU9Bc2tCbjhOVlVQeTZKVFR3VFNIU05raVNPaUxGNUtXMFpOZ2RTd0g4REo2ZGJoaUdjUk1zUXNEZGQzT29tZzh4bEE3RFErZXZyeFBtTzJMeVZyZ0MxT1pnQ0hpR0NwMnNiOWt6VURBRndnVlp6aGFzY2hjeEZ1WnNDVHBlR0ZPNmQ2QVdkeTJGWVBBRW1QaWxYQ2ZVcGFydWhWV3RZNXd5Yzk0aXo2and1a3dyVlpqQngxa0hxWFRaRDlJaGlDd0d3UDhyaWJGV21jeGlHeFdNWU0rUThVVFVFS0tWNkF4ZjVYbzNOOGNSNUhEalU3N29Nd1JOZFF5UllwamI3K1ZXNHp1WkVoSWVCQS95cXd4QXVvbTZJZzltV2ZzakY3dERabklueUNQaG5PRVA0aUxvaFFMaEtxem5QeXlLMW52T0o4eUJadmdIVEVEelJOd1NBc0Z5cnZIbDQxZVlIS1BjRGZiMG96eEF0Y3NNUThEVUt1VEhUUXJTT3k0QmZrZ2c3TitRaHVXSUlnR3QxQm1la20xbHRya2E0bCtpdXpSZzhJSmNNWWFIY3BsUGNkM1cwamtuQXJlVFc5MkZJZzF4N0FBWlQ0dTRBWXExak9zSlNOQVEzV2hzQ0o5Y01BY3BVcmVYRWxENDZpM293SjJQa01HK2cvTkpOQm5lRzZPSnhKUFJubXhZUTV3NjFlNy9pUzBGMEZxMG9kZGtVWnNnYW00QnFDamxPUnJzN2Z0VFZBRktXOFRmZyt6cUZFY1JwQVpjblltU1A0YlJ6QTFDLzh4dHFZOUhKQ3BTZkJLREw0Qzl4NEQ2S21DcWw2UjB3bDFhWFNacFp4MWFPUXlrbjZQdmVla09vMFZxR2QzOUpMNkdBVHU1RWpCbHlEdUZSTEk2VEt4aWJyaGtnZ3pHRXJLQkRGdE5LSjBjQWkwbWNYaEVtaW9semo5cUpWbEJ0aWhuS2FvUXJneFptOEpTM0VFcmxDczZSeTNrbDA4SXlIbFRMTWo2U1ZtSUl3NEdITWkzUFk0NmpnM0tkVEI4NldRUCtSOGNhc3NabW9KNU9oc3NWM2wxZzQ5a2lsTFN3SGpoUFkxeUNNQjg0M0t1eU0wS1l6VDVjQkp3U3RCU0RKeWh3TDUxVXlUZys4THB3ejZkZHBaVTFER0FJUWpud2lkZmxwMEZmakJseWhXZFJUcE94alBYRERPRFRPb1RZdEVzenJSUXhERmdCNXRwYVEwYThoM0lsWXpoSnJ1UnBQeXZ5ZFdGTzVyTlJtcGtJbkFUOHdjKzZERG5KVnFDSnZneVZxMWdwZ3ZwZFlWWUMyYVNaNXhTK1F3VVhBd3VBdzdKUnJ5SFNyRVdaTEZmeDEyeFdtclhRRFFHVlJhemhNNzZKVUUvQy9RYkR6cnlBY29aY3hTZ1psMTB6UUFDeFRMS0NMYklRbXdJR0E2dkEvMmJRRUFrK0FzcnB4N2RsSEU4RUpTS3c0RDZaejd0eUUyT0JVeEJ6M1cwZTB3RXNwcDBqWkJ5dFVocnNBbS9nMGE2eWtHZm94Mm5PQ25KS0I0OFpjb1oxd0xFeW5waE1ERWNJVU9DR2dNU0ZpYktBbFNoSE9PT0x6L2VZeVJCbE5tQnhvWXpuWEJuUEcwR0w2VTRvREpGRUZySlo1bU5Ud0ZHSWQ4dnhodER3TWNway9zNVJNbzdmQkMybUowSzVmMWdhZVFzbzFXck9kc0xNaCs4cGp5SDh5SVRNRDRMd20xQzFFRHNqalR4S0NjY2pUSVQwUTNvTmhsUUp0U0VBeEtaVEdsbUJNQVNsQ1dnUFdwTWhkd205SVpKSUk1dGtQdFhFT1JyQzJmODBSSi9JR0NLSnpHZUROSEloY0M2RWE0YkNFSDBpWjRnazBzZzZQdUpZSjh3OEZIUFlodWdUV1VPQXM0MTFIcTNBRWM0RkttSGJ4bXFJR0pFMlJCSzVrWS9rUm1MRU9SRjRQR2c5aHVpU0U0WklJbzI4S1BNNEUvZ0I4SGJRZWd6Ukk2Y01rVVFhYUdNTDMwS3BCajROV284aE91U2tJUUNrbWEweWp5WUtHWXFhYmF5RzFNaFpReVFSbTQzU3dFU1VreENlQ2xwUHhQZ3Y0dHN2dmM4TGN0NFFTYVNCNTVqTjZRaWx3RHRCNndrNWJ3TG55eVQrVXlibjExZ3Nid3dCempiVzJheWhnR0Vrem4zZEZyU21rUEV4U2puL1pMaE00cmRCaXdtQ3ZESkVFckhaSXJPeHNSZ0VyQ0lMcHptRW5FNWdCVVVNa2NtMGlrMW4wSUtDSWk4TmtVUnMzcFhaaktXTHM0Q1hndFlUQ01vanhEbE9Kak5SSnZMUG9PVUVUVjRiSW9uTTRmY0lKK1RaTnRhL0lKUktHU01reG10Qml3a0x4aEFPWWhNWG01WEFrWkRUMjFnL1E2a0hoc3Rrc3l0eFo0d2hka0pzUGhNYm13S0dRMDQ5TUhGZ0ZjcVJFc09Xc3B3MWZFYUVjZ3RwR0pCYS9nS1VhajNuQU0xRWV4dnJNeWd4S2VlWm9JV0VIZE5DN0FHWnhTTW94ME1rdDdHK0MxeEpqRk9NR1ZMREdDSUZ4S1pUNmxoQm5LRWtia3NLKzdUa0ZxQ2VPSU9sUER1SEJPY0t4aEF1RUp1UHBZNFlCUXhIZVRCb1BUMmd3QnE2K0taTXdaWUtjMzZ1Vzh3WUlnMmtoamVCQzNRT0kwaTBHTU1DbGdUQzgwQk1wcGhyQnpMQnRCQVpJTFdzNDhzY0UvQnRyTzhqVE9UZmZOdVlJWE9NSVRKRUp0SWh0YlJpY1FTUzFXMnM3Y0JpaWhncVUxZ2h0Z2x2OXdKakNJK1FHajZTR21MQXQ4SDM0OXpYWWpGTXBoS1RzbERjNDVjem1ER0V4OGdNWGdETzBMbU13cUxWNCtMZlJEaGJwdktZeCtVYURQNmpOaVhheUJsQjZ6Q2t6djhEUWQ3UXJNYkxSMUFBQUFBQVNVVk9SSzVDWUlJPSI+CjxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbiIgaHJlZj0iZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFNUUFBQURFQ0FZQUFBREFwbzVyQUFBQUJITkNTVlFJQ0FnSWZBaGtpQUFBQUFsd1NGbHpBQUJhYmdBQVdtNEJ4V3NqT0FBQUFCbDBSVmgwVTI5bWRIZGhjbVVBZDNkM0xtbHVhM05qWVhCbExtOXlaNXZ1UEJvQUFCbDBTVVJCVkhpYzdaMTVlRlRWM2NjL3Y1c0ZDVlJ4cVZ0cHRWVzJWbHhmNjFxdGlxMEw5R2w5TlhVQkZFcEZSVEloaEJBRENUZEFNQUVrQ1lzSzdxQjkra0Q3MnFmQldpdnFXN1ZhNjc0aXJlOXJheFgxYlpWV1pUSEwvTjQvNWc0R1NHRHV6TDF6NzUwNW4zODR6TXc1NTh2TS9YSzIzemtIRElHaml6aFBGM0ZlMERvTUlFRUx5R2QwUG9Pd2FBQXVjVjVhaDBXNVZQQjZrTHJ5R1dPSUFGQ2IvdlNqRXFnRyt1endLd2dkd0MxMFVDZlYvRHNZaGZtTE1VUVdVUnVMRWtZRDh4RU8ydjdHam9ad1BzeEhXTXhoSUV1bGxLNXM2c3huakNHeWhDN2dKSlJXNENTZ1p4UDBuSDRKaTVpVTg3amZHZzNHRUw2alRRd0U1Z0dqa1c3ZmQrcUdTTEtXSXNwa01tLzdJTlBnWUF6aEUycFRRaCtxc0tnQytnTHVUYkJyZWl1d21IWWFaRHFmZWlyWUFCaERlSTRxUWlNWEF3c1FEdlBBQkQybE55TFVzNG5ieFNhZXVXcERFbU1JRDlFYk9RRm9SVGh0KzR2K0dDTDU1N05BdWNSNEtpM0JobDB3aHZBQWJlQVFMR3hnQW1ENWFvTHU2Y1NmaXZBTGxFcUo4WTVMNllhZE1JYklBTFVwcG9ockVXWWo3TDM5amV3YUlwbmVqTEtRdldtVWNXeEw2UjlnMkFWamlEVFJ1WXpDb2dYNEJwQTlFM1JQOS96KzM0R1pVc2JLWHFRYmRvTXhoRXUwZ2FNUm1sSE85dkFCLzZPVE90a0RReVRTeWlNbzVSTGp0WjcrSFlhZXNZSVdFQlhVWmorZFN5dndQTXJaSGhXN0VXRWluM0VhVXprVm9SVDRteWNsQytkZzhiSXVaYVhld29HZWxKa0htQlppRDZoTklVV01SMmtBRHZDb1ZkaUtzSmo0cnVzSnVwd1NQcU1LcUVLYzlZdmV5a205emsxQUV3ZlNMS1cwWStnVlk0amRvUFdjZzBVTHdsSGJYOHpjRUdzUnltVGE3bGVjdFltQkZEa3IzT3l3eHAyT0laTHBEUWhUNVRvZTJGM2QrWXd4UkEvb0hBWkJ0N0JzYjFxRkZ5bWdYQ3JkeFNUcElzNEVXaENPM2FYTTlMV3NvNENZWE1NYmJyVGtBOFlRM1ZDYi9naVZ5RTVoMlprWjRpT0VPUnllZnRTcTJsZ01ZRFRLZk9BZ2ozUjFvTnhDSVhVeTBZU1pKekdHd0huZ0xPZUI2eWtzTzcwSEwvSEFpWGY3R25RWi9XbnZ3YkRwYXdTY01QUDlUSmc1R0VPZ3MxTUl5M2Ivc0swalRreHEvT21TYUN1RFVCcVE3VHZ0dk9qV3ZZaFFMdGZrZDVoNTNocENiUmRoMmFrL1ZCdFFLcVNHMzNncXRoZTBsWE9BRnVBb0Q5ZEUxbEpBbWZ3MFA4UE04ODRRYWxNQ3pyUm1xbUhaZTM2UU5pRTA4VG5OWW1kM1dsTnRDdG1YOFlnekxkeTdSamZwUkpoNUVRM3lrL3dLTTg4YlF5Z0lkVnlNeFFMVVpWaDI3Kzkzb3R5Sk1GTnErSWZYbXQyZ2k5aVBRbVlCMXlFVWJuOGpNM084aDFMRFJGYUpvSjRLRGlsNVlRaXQ1UVFrZzdEc25sOTdGSXR5cWVaVlQ4Vm1pQzVoS0VvejRoeHI0MDFYNmxtVW1GekQweDVLRFNVNWJRaXQ0UkNLc05FTXc3SjNmTzB0bEJxWnlScVA1WHFLTG1ZVVFndmlCQjlDcHVaUTRGNDZxSkpKZk9DcDJCQ1JrNFpRbTJJNlBRekxUdnlaQ0svZWh4dWxqTTg5bHV3TGFsUE0vczczQUh0NzFGcHNSbGhJWVc2R21lZWNJWFNHNTJIWmNZVDdFS2JKREQ3MFZtMTIwT1VjUWdjMjRyU1U0TVgzOGhaQ2pVd0lkMHZwbHB3eGhON0FVQXBvQnM3emNBcnlHWlNZMVBHTWgxSURRMjkydHJncXAzbjJIVms4U3B3cDhsTmU4VkJxWUVUZUVHcXpIeDNNUXJnT25ObVZ6SC9zZDRFWjFPYmU3SW9xd2kzT0lRaHdHT0RGOTlXSk9MTnQ0NE9kYmN1VXlCcENiUXJwWUR4NEdwYTlCVmpBbDJpU0NyWjZLRGQwNkhKSzZLUUtTU0hNUE5XMHhTYmlOTEYzZE1QTUkya0lyWEZXYUwwTHkxYmdGeFF3VFdaNnRFRW5JdWppRk1MTTNhWVRZZVlWTWk0N0svWmVFaWxENkV3R0VmYzhMUHM1TE1xbGpqOTRwelI2Nk0yYzZVeEc3QnBtN2piOXhXdnJLS1JNeHJMZU82WCtFZ2xEcU8xRWVTclZDSDIydjVHWklUWUM5V0FPKzBxaU5oWUhPNGN4ZHc4emgweldiUkpSdngzUkNETVB0U0hVeG1Jcm83R2NId2k4YUJYYWdWc3BZYVk1RHJKbmRCbjlzYWpFY3NMTUlSTkRKRW1FbWZjTmQ1aDVhQTJoTjNRTHkvWnVHblV0UWt4cy90ZERxVG1MM3NvZ3hPbWlabTZJWlBvRmxISVp4eE5lYXZXSzBCbENxeGlJMVcyUUIxNjBDaStobE1zY2Z1K3AyRHhCVnpEQ2lZOUtUR0prWm9oa2VpMXhKc3M0L3VxbDFrd0pqU0hVcG9RdHpqUWc5UFdvVlVoczMxelBVbGtUM21ZNkNxaE5JVjl4VGg4Uko4d2NNakVFSkthNWw5Q1h1VkxLWjk0cVRvL0FEYUVnVE9OaXhGa29jditsOXBST1hFdlZUcDAwaFg4Z0Z5WDBkdlpEbVFWTUFnb3lORVF5L1I1Q0RhT0RYd2dOMUJBNmxST3dlZ25MVHQ4UTZ4REtaWTY1dU5CUDlEYUdBWXVRYnJlblp2N2IvUW1MbUl6ZWZwSmgxZ25FRUZydWhHWHY3clJzOTEvcUJ1Sk1sWG5tektGc29yY3pDcHhnU205YWQwV2NNUE54MlE4eno2b2huTzdSTkpSYWhQNDlxbkQvcFg0TTFGUEV6V0xUNmExaVF5cm9YZXhGbkFyZ0JxQy9SK08vVDdDWVF4R0xzeGtHa3ZVV1FpczR6amtONzR3ZVZhUnVpRVJZZGhHVll2Ti9mbWcxdUVPWGN3aUZQb1daWDVHZE1QUEF4aEJheVNpRVZ1RHJyZzJoUElvd1JlYmxSc2h4cnFGM2N3SmR6dGpRdXpXa1IxSEtaYlMvVzNhREhWVGJGTE9aYXhIbUFGL2FRVkhQWDh4YldOUklRMjV0U3NsRlZCSHU5aUhNSE82a2lKbFM2aytZZWVEVHJnQmF4YUhBTEdBQzBtTlRtOWkyV0V5ajJMbTNiVEdYMGVXVVVKemlhZWFwcHplaDFITW95K1FzYjhlTm9UQkVFcTNpUDV4dTFLbU9zc1RHOWk2cVpFSHVibXpQQi9RMkJsTE1QTlRETUhONEU0c0t1WlFIdmRJWktrT0FNeE0xblRFSUYyTmh5enhlQ0ZxVHdUdjBMcjdyaEprZnMvM0Z6TTF4UDNFcTVZck1ZOVJDWndoRDdxTTJGb2M3WWVhU1FaajVqdWtPTEc2aGcxb1p6U2ZwYWpPR01BU0dycVkvVzd1ZFpnNlp0eGJDK3lnMkZuZWtFMlp1REdFSUhMMlBRWFNsRVdhK3V6UThqMFc1bFBLa0d5M0dFSWJRb1Bkd1BzSWloS0ZBcG9hQXhLWDJFK1RIM0ptcUJ0ZTNrR281RTdTY0g3ck5aekRzQ2JtU0I5bkswY0JFNEo5ZUZBa2M2aWFEKzJ0NWxTTlI3dGNZNi9SNng4a0dnMGZJUkRwa0RDdm93eEJnTVdSM0gwczZoaWh5VXVkUXdDc2FvMVd2Nnhhb1p6QjRnSlR5c1l3bVJwemh3Ryt6VmE5N1ExamJEUUZRQkpSUnhIcU5NZFl6VlFhRGc0eGx2WXptZklRZmdQOTc0VE5wSWJvekVMaEh5M2pZZEtNTWZpQ1gwMFlSdzRCeVNIK2RZVSs0TndROUdpS0JNSUlDWHRZcE5Lck5YdW5MTWhoMlJVcHBseXRvUlJnRy9weWw1YTBoRWhTalRPZGZ2SzR4UnFZanltRFlIWElaRzhHZnZkZCtHQ0xKTnhEYWRBcHRXc25YMDZqSFlNZzZYbzBoZHNkSXVuaGRLN0JOTjhvUWRqS2RaVXFWdmlpeitJVFh0SklMMDhodk1HU0ZiTFFRM1RtQ09HdTFnall0NS9BTXlqRVlmTUhQTWNUdUdFa0JiMmlsNlVZWndrVlFob0JrTitwVFh0VnBYT0JSbVFaRFJnUnBpQ1JIb2p5Z1UyblRhdE9OTWdSTHRzY1F2U09NcEpQWHRRcGJKM2U3Rk1WZ3lDTHVEU0UrR1NKQkNjb3MrdkNhVHV0MlpxakJrQ1hDMEdYYUZlRkk0RUd0b2sybk9tZjZHQXhaSUp5RytJTEViSlRwUmhteVJOZ05BVkFDektLRVYzVTYzODl5M1lZOEl3cUdTRElJK0sxVzA2YlQrVnBBR2d3NVRwUU1rVUFaaWJCZXE3SFZwamhRTFlhY0kzcUdTSkRvUm0zalZhM21lMEdMTWVRT1VUVkVrc0VJRCtrTnRPa012aHEwR0VQMGlib2hrb3drem5xdE1kMG9RMmJraWlFQStnR3phT2NWcmVIY29NVVlvb2tyUTJqaTRLZENuN1I0eFJEZ2R6ckRkS01NN25IWFFsd2Rlak4wWnlTd1htZWFibFJlRTNkM0dJSGJMbE5ZdTB1OTBROWxGbDI4ckRNWkViUVlRMWJaakZMUE5oYTV5ZVRPRVB0R3poQUpsS0hBNzNRbUs3V0dnNEtXWS9BVkJWYlJ3U0M1REZ2R3VidUN6WjBoT2lOcWlBUUNqS0dBRFRxVG1OcVI2djRaVWtINUV4YW55YVdNbFRHOG4wNFI3Z3pSRldsREpOa0hvWVV1bnROYVRndGFqTUVUM2tXNGtrczVXVXA1T3BPQzNCbkNyODFCd1hBTXdoTmFaN3BSa1VYWkF0UlR3R0M1bEpVaW1SOWU1czRROFp3eUJDUzdVWVc4cVhYRTlCSUtnaFprU0JGaEZVVU1sc3V3cFpTdDNoWHJBcjJlb1JTdzNsV3AwVXEvaERCSmJKN0NrSmU0YXlHS2NxNkYySmxqZ1NmVlpxWGFIQmkwR0VQMnllY3hSTStvMDQyQ0RWcFBURmViYmxRK1lRelJPd05RV2xqUHN6cWJVNElXWThnT3ViNVM3UVhIb2Z4QjYxbXA4L2h5MEdJTS9tSmFpTlJJZEtNNjJhQnpURGNxbDNGbkNNbjdJTGw5VVZyWXdKOTBMaWNITGNiZ1BhYkxsQTdLOFNoUDZSelRqY28xVEpjcGZSTGRxQzdUamNvbFRBdVJPZnNpdFBBWG50SFpuQlMwR0VObXVETkVlcmNINVFmS0NWZzhwWE5acVRZSEJDM0hrQjZtaGZBV0MyRU1SV3pRQm1KcXA3Vm5QVlJvTXdPQzFwQUp1cHFEM1h6ZTdRKzI1ejBFcnFLamNwYjlnQmFLZVZJYk9TWm9NZW1nU3poVWw3S2NZdVlFclNVZGRCVkQ5R2M4UUFkVDNlUnpPNmgyTisxcXpIRUtTbG5RSXR5Z05zVzZoQmdXYnlKY1RYb25zd1NHM3NlK2VoK05XTHdDN20rbWNyZHJUQ2xLK3lIZk1kOW00REdnalM2ZW9JakgwQnpka3hDblBXZ0pxYUxMR0lYU0N0RzdWMXh0TEk1Z05MQUEwZy9NZEx1Tk1wTXh4TnNvRHdOcjJZZUh4UDdpUWRGS0tvRDdNaWc3dkFnZFFVdllFN3FNWTRuVGduSm0wRnJTUWUvakxPSzBJQnlkYVZudURHRlI1R0pQVWhlSi9RVnJFZHJrSnA3djdZT3lrSjlwSlpkRER0NWhMZUZ0SVhRcCt3TjF4SmtFMFZ0SDBaVjhEWXU1S0dPODZwNjc3ekx0bnMySTB4VXE1TmV5Z0E5Y0tMbWVMcjVMNGdTKzNFSEQxMExvY29wbzV6cmkxQ1BzRTdRZXQraEsraUZNQTZhajdPWGxXTldMTHRQYkNBOGp1M2FGM0NDTi9GV3JhRUNabDNnaG5WSkNTTWdNb1lzWndlZTBBTjhLV290YlZCSHVaUXhLRTdpYlRrMlZkQXp4UlZjb1Rwc3M3cjByNUpvU0ZyQ1pVaEk3MTNJREt4eUcwS1VNcG90RktCZEc4VDhidllzVFdVVXIrTHMzeFowaHVyaWJJdVpMTXgvN0lVWnNPcldTNnhDZXBQdDBYMi83b0tOQm9HTUliV1lBUWpWZFRJSG9SU3ZyUFh3RnVCRVlUUlorZlZlR2tLVzg2WmVRN1hVczVHbWR4bkxnV3Ivcnlnb0JkWm5VeG1KQTV0T1FRYUdyNmN0V3lvQVp3SmV5Vlc4NEYxMjJVWTN3M2g0L0Y0WFdJb0JaSnIySnM5aUhGNEI3aUtJWjdtSVVXM2dEcFpFc21nRkNhZ2had2lkQWhidE0vbWpKbUN5MkVIb1RYOVZtVm1MeEtFUXZaRVR2NUhpOWk4Y1JmZzBjSG9TRzBKNXZLazJzMW1tTVJoamxQck1QZ3RJbEM0YlFCZlREWWhyQ2RHQXZ2K3Z6R3IySC9lbWlEZ2wrUFNTMGhnREE0bnFVczREK2FaY1J2RGw4NnpLcElpemlZb1NGRUwycmluVTVSUlJ6SFYzaFdROEpaWmNwaVRUeERrSzlkd1Y2VmxMcStEVHRxZ3M1a1VVOENhd21pbWE0a3hFVThSSktDNFREREpCbFE2aE5vYnA5TFB2U0Fyem91WmpzbUdNVHlxdGVGcWhOSEtvTFdZN3dSK0JVTDh2T0Jub0hRL1IySG5EaTJyNFp0SjZkOGQwUU9waytPb1VSV2tFcm4vQXVVN2pLVFg2eDZVUzVtc1NDb0QvNFlRN2xBeXpPa2hyZThLekloVnhFQVgrRzZJVmxBK2p0akFkZVE5eUhaV2NMWDc1VW5VSmZuY0lvbmNKS0N2a1FlQmdvQXc1Q2FOWXFCcm9wVCtiekhIQ3pIMXAzcmN5VFV0Nm1nTzlJTlM5N1V0b1hIRU8wWTcyR0VmSnhxMmZpdEp3QktPY2lqRUw1RWRDL2w0ZHJIN3E0QlZ6T0hpa3pFSDRFN3N5VUVlbVo0elVLK2I1TVo2UEhhZ3haSUtNV1FpZXh2OFlZcXpIYVVENGtNY0FidzU1bmhVWnFCVDkyVTVmTTUxTWs5THZQSHFlQTA0MFpvb3RyUStoa0Jtb1pWMnVNTmdwNW44UnE2RWpjeHNrSVM3WFMzU3FxTkhJL3lxOWMxZU1WZTI0dDFsTENlVkxOdjdPZ3h1QVQ3aTV1TCtjaUxONUJXRTdDQkpuc29EdUFPTTJ1Y3ltVElPQ0hibWR6S1BmeVpTNlNDdTl1c2pFRWc5c3J0ZnJoNVp5TWNMbE81WWV1c3N4bkk4b3N6elJraXNVU3VyaFNKb1lqek51UUdjRlAzUWszYXpYN3VzclRseVhBSC8wUmxESUsxTXNNeXNRbUhyQVdnMGNFYndnNGhFNmEzR1FRbXpnV0V5R3cvNVc3VUs2Uld1eUE2amY0UkJnTUFUQkJwL0U5Tnhsa0hxOEFTM3pTc3p2YUVTNlRPbFlFVUxmQlo4SmlDQ0hPY3JWZEJ2SDFvUlo0Mng5SlBiSVpZWlRNWkUwVzZ6UmtrYkFZQW9URDJjeGNWMWxzdGpnaHc5bmdZeXhHU0MyL3kxSjloZ0FJanlFU1ROYnBuTzRtZzh6alFlQVhQdWxKOGc3Q3FUSXo4SUc4d1dmQ1pnaUxPTGVyN1hLVFN5ZVRnWC81STRuMUZIQzYxTExCcC9JTklTSnNoZ0FZd21acTNXUndEa1NiNllPVzV5amlUSm5KMzlNdFFCczR5a3RCQm44Sm95RUFxclNhRTF6bEtPWVc0Q2tQTlR6R1hwd3ROZndqM1FMMFJxWWpWSHFveWVBellUVkVJWEh1MEt0VER3MFJtemdGWElNM2F4Ty9BaTZRNlh5YWJnSGF3R3puMUFoRGhBaXJJUUNPWVFCVmJqTElIRjVGMG9pUDJwRzdnVXZFWmxzNm1WVVJiYUFGY2RmdE00U0RNQnNDb0ZhbnV6eURkQXMyOEQ5cDFTWTBpYzA0c2VsTUo3dXVwb0I1M0E3RTBxcmZFRGhoTjBRZjRBNjlKUFdqU2FTWnJVNUViT29JaWxJcE50VnVCU2JSMVJUd1orNEN4cWRiaGlGNHdtNElVRTdpNjB4MmswWG04UkRDejFQOGVCY3dRV1p6azN0eENkU21tRCt6Qm1GTXVtVVl3a0g0RFFFZ05HZzFSN3JLRTZjYzJMU0hUMzFPWXJ4d1o3clMxS2FFUXRxQUg2VmJoaUU4Uk1NUVVJSnltNXNqYkdRZUg4SnV1MEQvd21LRXpPYitkRVhwQXZvNVpuQVZtR2dJTDFFeEJNQjNxZWFucm5JMGNCdndaQS92Skk2SXNYdDhMeVhVWmdEYldBZWNuVzRaaHZBUkpVT0Fza0JuOE5WVVB5NkpUVHdUU0hTTmtpU09pTEY1S1cwWk5nZFN3SDhESjZkYmhpR2NSTXNRc0RkZDNPb21nOHhsQTdEUStldnJ4UG1PMkx5VnJnQzFPWmdDSGlHQ3Ayc2I5a3pVREFGd2dWWnpoYXNjaGN4RnVac0NUcGVHRk82ZDZBV2R5MkZZUEFFbVBpbFhDZlVwYXJ1aFZXdFk1d3ljOTRpejZqd3Vrd3JWWmpCeDFrSHFYVFpEOUloaUN3R3dQOHJpYkZXbWN4aUd4V01ZTStROFVUVUVLS1Y2QXhmNVhvM044Y1I1SERqVTc3b013Uk5kUXlSWXBqYjcrVlc0enVaRWhJZUJBL3lxd3hBdW9tNklnOW1XZnNqRjd0RFpuSW55Q1Bobk9FUDRpTG9oUUxoS3F6blB5eUsxbnZPSjh5Qlp2Z0hURUR6Uk53U0FzRnlydkhsNDFlWUhLUGNEZmIwb3p4QXRjc01ROERVS3VUSFRRclNPeTRCZmtnZzdOK1FodVdJSWdHdDFCbWVrbTFsdHJrYTRsK2l1elJnOElKY01ZYUhjcGxQY2QzVzBqa25BcmVUVzkyRklnMXg3QUFaVDR1NEFZcTFqT3NKU05BUTNXaHNDSjljTUFjcFVyZVhFbEQ0Nmkzb3dKMlBrTUcrZy9OSk5CbmVHNk9KeEpQUm5teFlRNXc2MWU3L2lTMEYwRnEwb2Rka1Vac2dhbTRCcUNqbE9ScnM3ZnRUVkFGS1c4VGZnK3pxRkVjUnBBWmNuWW1TUDRiUnpBMUMvOHh0cVk5SEpDcFNmQktETDRDOXg0RDZLbUNxbDZSMHdsMWFYU1pwWngxYU9ReWtuNlB2ZWVrT28wVnFHZDM5Skw2R0FUdTVFakJseUR1RlJMSTZUS3hpYnJoa2dnekdFcktCREZ0TktKMGNBaTBtY1hoRW1pb2x6ajlxSlZsQnRpaG5LYW9Rcmd4Wm04SlMzRUVybENzNlJ5M2tsMDhJeUhsVExNajZTVm1JSXc0R0hNaTNQWTQ2amczS2RUQjg2V1FQK1I4Y2Fzc1ptb0o1T2hzc1YzbDFnNDlraWxMU3dIamhQWTF5Q01CODQzS3V5TTBLWXpUNWNCSndTdEJTREp5aHdMNTFVeVRnKzhMcHd6NmRkcFpVMURHQUlRam53aWRmbHAwRmZqQmx5aFdkUlRwT3hqUFhERE9EVE9vVFl0RXN6clJReERGZ0I1dHBhUTBhOGgzSWxZemhKcnVScFB5dnlkV0ZPNXJOUm1wa0luQVQ4d2MrNkREbkpWcUNKdmd5VnExZ3BndnBkWVZZQzJhU1o1eFMrUXdVWEF3dUF3N0pScnlIU3JFV1pMRmZ4MTJ4V21yWFFEUUdWUmF6aE03NkpVRS9DL1FiRHpyeUFjb1pjeFNnWmwxMHpRQUN4VExLQ0xiSVFtd0lHQTZ2QS8yYlFFQWsrQXNycHg3ZGxIRThFSlNLdzRENlp6N3R5RTJPQlV4QnozVzBlMHdFc3BwMGpaQnl0VWhyc0FtL2cwYTZ5a0dmb3gybk9DbkpLQjQ4WmNvWjF3TEV5bnBoTURFY0lVT0NHZ01TRmliS0FsU2hIT09PTHovZVl5UkJsTm1CeG9Zem5YQm5QRzBHTDZVNG9ESkZFRnJKWjVtTlR3RkdJZDh2eGh0RHdNY3BrL3M1Uk1vN2ZCQzJtSjBLNWYxZ2FlUXNvMVdyT2RzTE1oKzhwanlIOHlJVE1ENEx3bTFDMUVEc2pqVHhLQ2NjalRJVDBRM29OaGxRSnRTRUF4S1pUR2xtQk1BU2xDV2dQV3BNaGR3bTlJWkpJSTV0a1B0WEVPUnJDMmY4MFJKL0lHQ0tKekdlRE5ISWhjQzZFYTRiQ0VIMGlaNGdrMHNnNlB1SllKOHc4RkhQWWh1Z1RXVU9BczQxMUhxM0FFYzRGS21IYnhtcUlHSkUyUkJLNWtZL2tSbUxFT1JGNFBHZzlodWlTRTRaSUlvMjhLUE00RS9nQjhIYlFlZ3pSSTZjTWtVUWFhR01MMzBLcEJqNE5XbzhoT3VTa0lRQ2ttYTB5anlZS0dZcWFiYXlHMU1oWlF5UVJtNDNTd0VTVWt4Q2VDbHBQeFBndjR0c3Z2YzhMY3Q0UVNhU0I1NWpONlFpbHdEdEI2d2s1YndMbnl5VCtVeWJuMTFnc2J3d0J6amJXMmF5aGdHRWt6bjNkRnJTbWtQRXhTam4vWkxoTTRyZEJpd21DdkRKRUVySFpJck94c1JnRXJDSUxwem1FbkU1Z0JVVU1rY20waWsxbjBJS0NJaThOa1VSczNwWFpqS1dMczRDWGd0WVRDTW9qeERsT0pqTlJKdkxQb09VRVRWNGJJb25NNGZjSUorVFpOdGEvSUpSS0dTTWt4bXRCaXdrTHhoQU9ZaE1YbTVYQWtaRFQyMWcvUTZrSGhzdGtzeXR4WjR3aGRrSnNQaE1ibXdLR1EwNDlNSEZnRmNxUkVzT1dzcHcxZkVhRWNndHBHSkJhL2dLVWFqM25BTTFFZXh2ck15Z3hLZWVab0lXRUhkTkM3QUdaeFNNb3gwTWt0N0crQzF4SmpGT01HVkxER0NJRnhLWlQ2bGhCbktFa2Jrc0srN1RrRnFDZU9JT2xQRHVIQk9jS3hoQXVFSnVQcFk0WUJReEhlVEJvUFQyZ3dCcTYrS1pNd1pZS2MzNnVXOHdZSWcya2hqZUJDM1FPSTBpMEdNTUNsZ1RDODBCTXBwaHJCekxCdEJBWklMV3M0OHNjRS9CdHJPOGpUT1RmZk51WUlYT01JVEpFSnRJaHRiUmljUVNTMVcyczdjQmlpaGdxVTFnaHRnbHY5d0pqQ0krUUdqNlNHbUxBdDhIMzQ5elhZakZNcGhLVHNsRGM0NWN6bURHRXg4Z01YZ0RPMExtTXdxTFY0K0xmUkRoYnB2S1l4K1VhRFA2ak5pWGF5QmxCNnpDa3p2OERRZDdRck1iTFIxQUFBQUFBU1VWT1JLNUNZSUk9Ij4KCjxzdHlsZT4KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNDAwOwogIHNyYzogbG9jYWwoJ1JvYm90bycpLCBsb2NhbCgnUm9ib3RvLVJlZ3VsYXInKSwgdXJsKC9mb250LXJvYm90by91WUVDTUtvSGNPOXgxd2RtYnlISW0zLV9rZjZCeVlPNkNMWWRCNEhRRS1ZLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDAwLTA0NUYsIFUrMDQ5MC0wNDkxLCBVKzA0QjAtMDRCMSwgVSsyMTE2Owp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8nKSwgbG9jYWwoJ1JvYm90by1SZWd1bGFyJyksIHVybCgvZm9udC1yb2JvdG8vc1RkYUE2ajBQc2I5MjBWanYtbXJ6SC1fa2Y2QnlZTzZDTFlkQjRIUUUtWS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQ2MC0wNTJGLCBVKzIwQjQsIFUrMkRFMC0yREZGLCBVK0E2NDAtQTY5RjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvJyksIGxvY2FsKCdSb2JvdG8tUmVndWxhcicpLCB1cmwoL2ZvbnQtcm9ib3RvL19WWUZ4LXM4MjRrWHFfVWwyQkhxWUgtX2tmNkJ5WU82Q0xZZEI0SFFFLVkud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAzNzAtMDNGRjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvJyksIGxvY2FsKCdSb2JvdG8tUmVndWxhcicpLCB1cmwoL2ZvbnQtcm9ib3RvL3RuajRTQjZETmJkYVFuc004Q0ZxQlgtX2tmNkJ5WU82Q0xZZEI0SFFFLVkud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzFGMDAtMUZGRjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvJyksIGxvY2FsKCdSb2JvdG8tUmVndWxhcicpLCB1cmwoL2ZvbnQtcm9ib3RvL29NTWdmWk1RdGhPcnlRbzluMjJkY3V2dkRpbjFwSzhhS3RlTHBlWjVjMEEud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkM2LCBVKzAyREEsIFUrMDJEQywgVSsyMDAwLTIwNkYsIFUrMjA3NCwgVSsyMEFDLCBVKzIyMTIsIFUrMjIxNTsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvJyksIGxvY2FsKCdSb2JvdG8tUmVndWxhcicpLCB1cmwoL2ZvbnQtcm9ib3RvL0tzX2NWeGlDaXdVV1ZzRldGQTNCam4tX2tmNkJ5WU82Q0xZZEI0SFFFLVkud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDI0RiwgVSsxRTAwLTFFRkYsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDRiwgVSsyQzYwLTJDN0YsIFUrQTcyMC1BN0ZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8nKSwgbG9jYWwoJ1JvYm90by1SZWd1bGFyJyksIHVybCgvZm9udC1yb2JvdG8vTko0dnhsZ1d3V2JFc3YxOGRBaHFubi1fa2Y2QnlZTzZDTFlkQjRIUUUtWS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMi0wMTAzLCBVKzFFQTAtMUVGOSwgVSsyMEFCOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gQm9sZCcpLCBsb2NhbCgnUm9ib3RvLUJvbGQnKSwgdXJsKC9mb250LXJvYm90by9pc1otd2JDWE5LQWJuam82X1R3SFRvWDBoVmd6WlFVZlJEdVpyUHZIM0Q4LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDAwLTA0NUYsIFUrMDQ5MC0wNDkxLCBVKzA0QjAtMDRCMSwgVSsyMTE2Owp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gQm9sZCcpLCBsb2NhbCgnUm9ib3RvLUJvbGQnKSwgdXJsKC9mb250LXJvYm90by83N0ZYRmpSYkd6TjRhQ3JTRmhsaDNvWDBoVmd6WlFVZlJEdVpyUHZIM0Q4LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDYwLTA1MkYsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gQm9sZCcpLCBsb2NhbCgnUm9ib3RvLUJvbGQnKSwgdXJsKC9mb250LXJvYm90by9qU04yQ0dWRGJjVnlDbmZKZmpTZGZJWDBoVmd6WlFVZlJEdVpyUHZIM0Q4LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzcwLTAzRkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBCb2xkJyksIGxvY2FsKCdSb2JvdG8tQm9sZCcpLCB1cmwoL2ZvbnQtcm9ib3RvL1VYNmk0SnhRRG0zZlZUYzFDUHV3cW9YMGhWZ3paUVVmUkR1WnJQdkgzRDgud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzFGMDAtMUZGRjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIEJvbGQnKSwgbG9jYWwoJ1JvYm90by1Cb2xkJyksIHVybCgvZm9udC1yb2JvdG8vZC02SVlwbE9Gb2NDYWNLenh3WFNPSkJ3MXhVMXJLcHRKal8wamFuczkyMC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzIwMDAtMjA2RiwgVSsyMDc0LCBVKzIwQUMsIFUrMjIxMiwgVSsyMjE1Owp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gQm9sZCcpLCBsb2NhbCgnUm9ib3RvLUJvbGQnKSwgdXJsKC9mb250LXJvYm90by85N3VhaHhpcVpSb25jQmFDRUkzYVc0WDBoVmd6WlFVZlJEdVpyUHZIM0Q4LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyNEYsIFUrMUUwMC0xRUZGLCBVKzIwQTAtMjBBQiwgVSsyMEFELTIwQ0YsIFUrMkM2MC0yQzdGLCBVK0E3MjAtQTdGRjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIEJvbGQnKSwgbG9jYWwoJ1JvYm90by1Cb2xkJyksIHVybCgvZm9udC1yb2JvdG8vUHdaYy1ZYklMNDE0d0I5ckIxSUFQWVgwaFZnelpRVWZSRHVaclB2SDNEOC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMi0wMTAzLCBVKzFFQTAtMUVGOSwgVSsyMEFCOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gQm9sZCBJdGFsaWMnKSwgbG9jYWwoJ1JvYm90by1Cb2xkSXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vdDZOZDRjZlBSaFpQNDRRNVFBamNDMTRzWVlkSmc1ZFUycXpKRVZTdXRhMC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIEJvbGQgSXRhbGljJyksIGxvY2FsKCdSb2JvdG8tQm9sZEl0YWxpYycpLCB1cmwoL2ZvbnQtcm9ib3RvL3Q2TmQ0Y2ZQUmhaUDQ0UTVRQWpjQ19acmFSMlRnOHcybHptN2tMTkwwLXcud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzA0NjAtMDUyRiwgVSsyMEI0LCBVKzJERTAtMkRGRiwgVStBNjQwLUE2OUY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBCb2xkIEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLUJvbGRJdGFsaWMnKSwgdXJsKC9mb250LXJvYm90by90Nk5kNGNmUFJoWlA0NFE1UUFqY0N3dF9SbTY5MUxUZWJLZlkyWmtLU21JLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzcwLTAzRkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBCb2xkIEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLUJvbGRJdGFsaWMnKSwgdXJsKC9mb250LXJvYm90by90Nk5kNGNmUFJoWlA0NFE1UUFqY0MxQlcyNlF4cFNqLV9aS21feFQ0aFd3LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSsxRjAwLTFGRkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBCb2xkIEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLUJvbGRJdGFsaWMnKSwgdXJsKC9mb250LXJvYm90by90Nk5kNGNmUFJoWlA0NFE1UUFqY0M0Z3A5UThnYllyaHFHbFJhdl9JWGZrLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJDNiwgVSswMkRBLCBVKzAyREMsIFUrMjAwMC0yMDZGLCBVKzIwNzQsIFUrMjBBQywgVSsyMjEyLCBVKzIyMTU7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBCb2xkIEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLUJvbGRJdGFsaWMnKSwgdXJsKC9mb250LXJvYm90by90Nk5kNGNmUFJoWlA0NFE1UUFqY0M2RThrTTR4V1IxXzFiWVVSUm9qUkdjLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyNEYsIFUrMUUwMC0xRUZGLCBVKzIwQTAtMjBBQiwgVSsyMEFELTIwQ0YsIFUrMkM2MC0yQzdGLCBVK0E3MjAtQTdGRjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIEJvbGQgSXRhbGljJyksIGxvY2FsKCdSb2JvdG8tQm9sZEl0YWxpYycpLCB1cmwoL2ZvbnQtcm9ib3RvL3Q2TmQ0Y2ZQUmhaUDQ0UTVRQWpjQzlEaU5zUjVhLTlPZV9JdnB1OFhXbFkud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLUl0YWxpYycpLCB1cmwoL2ZvbnQtcm9ib3RvL09wWFVxVG8wVWdRUWhHal9TRmRMV0JrQXo0clluNDdaeTJydmlnV1FmNncud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzA0MDAtMDQ1RiwgVSswNDkwLTA0OTEsIFUrMDRCMC0wNEIxLCBVKzIxMTY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNDAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBJdGFsaWMnKSwgbG9jYWwoJ1JvYm90by1JdGFsaWMnKSwgdXJsKC9mb250LXJvYm90by9XeHJYSmEwQzNLZHRDN2xNYWZHNGRSa0F6NHJZbjQ3WnkycnZpZ1dRZjZ3LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDYwLTA1MkYsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gSXRhbGljJyksIGxvY2FsKCdSb2JvdG8tSXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vY0RLaFJhWG5RVE9WYmFveHdkT3I5eGtBejRyWW40N1p5MnJ2aWdXUWY2dy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDM3MC0wM0ZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gSXRhbGljJyksIGxvY2FsKCdSb2JvdG8tSXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vMWhaZjAyUE9BTmgzMmsyVmtnRW9VQmtBejRyWW40N1p5MnJ2aWdXUWY2dy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMUYwMC0xRkZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gSXRhbGljJyksIGxvY2FsKCdSb2JvdG8tSXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vdlBjeW5TTDBxSHFfNmRYN2xLVkJ5WFloamJTcHZjNDdlZTZ4Ul84MEhudy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzIwMDAtMjA2RiwgVSsyMDc0LCBVKzIwQUMsIFUrMjIxMiwgVSsyMjE1Owp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gSXRhbGljJyksIGxvY2FsKCdSb2JvdG8tSXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vdlN6dWxmS1NLMExMampmZWF4Y1JFaGtBejRyWW40N1p5MnJ2aWdXUWY2dy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMjRGLCBVKzFFMDAtMUVGRiwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMENGLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNDAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBJdGFsaWMnKSwgbG9jYWwoJ1JvYm90by1JdGFsaWMnKSwgdXJsKC9mb250LXJvYm90by9LMjNjeFdWVHJJRkQ2REpzRVZpMDdSa0F6NHJZbjQ3WnkycnZpZ1dRZjZ3LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAyLTAxMDMsIFUrMUVBMC0xRUY5LCBVKzIwQUI7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogMzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBMaWdodCcpLCBsb2NhbCgnUm9ib3RvLUxpZ2h0JyksIHVybCgvZm9udC1yb2JvdG8vRmw0eTBRZE94eXlUSEVHTVhYOGtjWVgwaFZnelpRVWZSRHVaclB2SDNEOC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIExpZ2h0JyksIGxvY2FsKCdSb2JvdG8tTGlnaHQnKSwgdXJsKC9mb250LXJvYm90by8wZUM2ZmwwNmx1WEVZV3BCU0p2WENJWDBoVmd6WlFVZlJEdVpyUHZIM0Q4LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDYwLTA1MkYsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDMwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTGlnaHQnKSwgbG9jYWwoJ1JvYm90by1MaWdodCcpLCB1cmwoL2ZvbnQtcm9ib3RvL0kzUzF3c2dTZzlZQ3VyVjZQVWtUT1lYMGhWZ3paUVVmUkR1WnJQdkgzRDgud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAzNzAtMDNGRjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIExpZ2h0JyksIGxvY2FsKCdSb2JvdG8tTGlnaHQnKSwgdXJsKC9mb250LXJvYm90by8tTDE0SmswNm02cFVIQi01bVhRUW5ZWDBoVmd6WlFVZlJEdVpyUHZIM0Q4LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSsxRjAwLTFGRkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogMzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBMaWdodCcpLCBsb2NhbCgnUm9ib3RvLUxpZ2h0JyksIHVybCgvZm9udC1yb2JvdG8vSGdvMTNrLXRmU3BuMHFpMVNGZFVmWkJ3MXhVMXJLcHRKal8wamFuczkyMC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzIwMDAtMjA2RiwgVSsyMDc0LCBVKzIwQUMsIFUrMjIxMiwgVSsyMjE1Owp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDMwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTGlnaHQnKSwgbG9jYWwoJ1JvYm90by1MaWdodCcpLCB1cmwoL2ZvbnQtcm9ib3RvL1BydTMzcWpTaHBaU21HM3o2Vll3bllYMGhWZ3paUVVmUkR1WnJQdkgzRDgud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDI0RiwgVSsxRTAwLTFFRkYsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDRiwgVSsyQzYwLTJDN0YsIFUrQTcyMC1BN0ZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDMwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTGlnaHQnKSwgbG9jYWwoJ1JvYm90by1MaWdodCcpLCB1cmwoL2ZvbnQtcm9ib3RvL05ZRFdCZEQ0Z0lxMjZHNVhZYkhzRklYMGhWZ3paUVVmUkR1WnJQdkgzRDgud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIExpZ2h0IEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLUxpZ2h0SXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vN204bDdUbEZPLVMzVmtoSHVSMGF0MTRzWVlkSmc1ZFUycXpKRVZTdXRhMC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIExpZ2h0IEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLUxpZ2h0SXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vN204bDdUbEZPLVMzVmtoSHVSMGF0X1pyYVIyVGc4dzJsem03a0xOTDAtdy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQ2MC0wNTJGLCBVKzIwQjQsIFUrMkRFMC0yREZGLCBVK0E2NDAtQTY5RjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIExpZ2h0IEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLUxpZ2h0SXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vN204bDdUbEZPLVMzVmtoSHVSMGF0d3RfUm02OTFMVGViS2ZZMlprS1NtSS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDM3MC0wM0ZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDMwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTGlnaHQgSXRhbGljJyksIGxvY2FsKCdSb2JvdG8tTGlnaHRJdGFsaWMnKSwgdXJsKC9mb250LXJvYm90by83bThsN1RsRk8tUzNWa2hIdVIwYXQxQlcyNlF4cFNqLV9aS21feFQ0aFd3LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSsxRjAwLTFGRkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogMzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBMaWdodCBJdGFsaWMnKSwgbG9jYWwoJ1JvYm90by1MaWdodEl0YWxpYycpLCB1cmwoL2ZvbnQtcm9ib3RvLzdtOGw3VGxGTy1TM1ZraEh1UjBhdDRncDlROGdiWXJocUdsUmF2X0lYZmsud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkM2LCBVKzAyREEsIFUrMDJEQywgVSsyMDAwLTIwNkYsIFUrMjA3NCwgVSsyMEFDLCBVKzIyMTIsIFUrMjIxNTsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIExpZ2h0IEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLUxpZ2h0SXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vN204bDdUbEZPLVMzVmtoSHVSMGF0NkU4a000eFdSMV8xYllVUlJvalJHYy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMjRGLCBVKzFFMDAtMUVGRiwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMENGLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogMzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBMaWdodCBJdGFsaWMnKSwgbG9jYWwoJ1JvYm90by1MaWdodEl0YWxpYycpLCB1cmwoL2ZvbnQtcm9ib3RvLzdtOGw3VGxGTy1TM1ZraEh1UjBhdDlEaU5zUjVhLTlPZV9JdnB1OFhXbFkud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIE1lZGl1bScpLCBsb2NhbCgnUm9ib3RvLU1lZGl1bScpLCB1cmwoL2ZvbnQtcm9ib3RvL29IaTMwa3dRV3ZwQ1dxQWh6SGNDU0lYMGhWZ3paUVVmUkR1WnJQdkgzRDgud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzA0MDAtMDQ1RiwgVSswNDkwLTA0OTEsIFUrMDRCMC0wNEIxLCBVKzIxMTY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNTAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBNZWRpdW0nKSwgbG9jYWwoJ1JvYm90by1NZWRpdW0nKSwgdXJsKC9mb250LXJvYm90by9aTHFLZWVsWWJBVEc2MEVwWkJTRHk0WDBoVmd6WlFVZlJEdVpyUHZIM0Q4LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDYwLTA1MkYsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTWVkaXVtJyksIGxvY2FsKCdSb2JvdG8tTWVkaXVtJyksIHVybCgvZm9udC1yb2JvdG8vbXg5VWNrNnVCNjNWSUtGWW5FTVhyWVgwaFZnelpRVWZSRHVaclB2SDNEOC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDM3MC0wM0ZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTWVkaXVtJyksIGxvY2FsKCdSb2JvdG8tTWVkaXVtJyksIHVybCgvZm9udC1yb2JvdG8vckd2SGRKbnIybDc1cWIwWU5EOU55SVgwaFZnelpRVWZSRHVaclB2SDNEOC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMUYwMC0xRkZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTWVkaXVtJyksIGxvY2FsKCdSb2JvdG8tTWVkaXVtJyksIHVybCgvZm9udC1yb2JvdG8vUnhaSmRuemVvM1I1elNleGdlOFVVWkJ3MXhVMXJLcHRKal8wamFuczkyMC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzIwMDAtMjA2RiwgVSsyMDc0LCBVKzIwQUMsIFUrMjIxMiwgVSsyMjE1Owp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTWVkaXVtJyksIGxvY2FsKCdSb2JvdG8tTWVkaXVtJyksIHVybCgvZm9udC1yb2JvdG8vb09lRndaTmxyVGVmekxZbWxWVjFVSVgwaFZnelpRVWZSRHVaclB2SDNEOC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMjRGLCBVKzFFMDAtMUVGRiwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMENGLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNTAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBNZWRpdW0nKSwgbG9jYWwoJ1JvYm90by1NZWRpdW0nKSwgdXJsKC9mb250LXJvYm90by9tYm1ocHJNSDY5Wmk2ZUVQQllWRmhZWDBoVmd6WlFVZlJEdVpyUHZIM0Q4LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAyLTAxMDMsIFUrMUVBMC0xRUY5LCBVKzIwQUI7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNTAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBNZWRpdW0gSXRhbGljJyksIGxvY2FsKCdSb2JvdG8tTWVkaXVtSXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vT0xmZkdCVGFGMFhGT1cxZ251SEYwVjRzWVlkSmc1ZFUycXpKRVZTdXRhMC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIE1lZGl1bSBJdGFsaWMnKSwgbG9jYWwoJ1JvYm90by1NZWRpdW1JdGFsaWMnKSwgdXJsKC9mb250LXJvYm90by9PTGZmR0JUYUYwWEZPVzFnbnVIRjBmWnJhUjJUZzh3Mmx6bTdrTE5MMC13LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDYwLTA1MkYsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTWVkaXVtIEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLU1lZGl1bUl0YWxpYycpLCB1cmwoL2ZvbnQtcm9ib3RvL09MZmZHQlRhRjBYRk9XMWdudUhGMFF0X1JtNjkxTFRlYktmWTJaa0tTbUkud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAzNzAtMDNGRjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIE1lZGl1bSBJdGFsaWMnKSwgbG9jYWwoJ1JvYm90by1NZWRpdW1JdGFsaWMnKSwgdXJsKC9mb250LXJvYm90by9PTGZmR0JUYUYwWEZPVzFnbnVIRjBWQlcyNlF4cFNqLV9aS21feFQ0aFd3LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSsxRjAwLTFGRkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNTAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBNZWRpdW0gSXRhbGljJyksIGxvY2FsKCdSb2JvdG8tTWVkaXVtSXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vT0xmZkdCVGFGMFhGT1cxZ251SEYwWWdwOVE4Z2JZcmhxR2xSYXZfSVhmay53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzIwMDAtMjA2RiwgVSsyMDc0LCBVKzIwQUMsIFUrMjIxMiwgVSsyMjE1Owp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTWVkaXVtIEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLU1lZGl1bUl0YWxpYycpLCB1cmwoL2ZvbnQtcm9ib3RvL09MZmZHQlRhRjBYRk9XMWdudUhGMGFFOGtNNHhXUjFfMWJZVVJSb2pSR2Mud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDI0RiwgVSsxRTAwLTFFRkYsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDRiwgVSsyQzYwLTJDN0YsIFUrQTcyMC1BN0ZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTWVkaXVtIEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLU1lZGl1bUl0YWxpYycpLCB1cmwoL2ZvbnQtcm9ib3RvL09MZmZHQlRhRjBYRk9XMWdudUhGMGREaU5zUjVhLTlPZV9JdnB1OFhXbFkud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBNb25vJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTW9ubycpLCBsb2NhbCgnUm9ib3RvTW9uby1SZWd1bGFyJyksIHVybCgvZm9udC1yb2JvdG8vaE1xUE5Mc3VfZHl3TWE0Q19ERXBZMTRzWVlkSmc1ZFUycXpKRVZTdXRhMC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBNb25vJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTW9ubycpLCBsb2NhbCgnUm9ib3RvTW9uby1SZWd1bGFyJyksIHVybCgvZm9udC1yb2JvdG8vaE1xUE5Mc3VfZHl3TWE0Q19ERXBZX1pyYVIyVGc4dzJsem03a0xOTDAtdy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQ2MC0wNTJGLCBVKzIwQjQsIFUrMkRFMC0yREZGLCBVK0E2NDAtQTY5RjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBNb25vJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTW9ubycpLCBsb2NhbCgnUm9ib3RvTW9uby1SZWd1bGFyJyksIHVybCgvZm9udC1yb2JvdG8vaE1xUE5Mc3VfZHl3TWE0Q19ERXBZd3RfUm02OTFMVGViS2ZZMlprS1NtSS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDM3MC0wM0ZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvIE1vbm8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNDAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBNb25vJyksIGxvY2FsKCdSb2JvdG9Nb25vLVJlZ3VsYXInKSwgdXJsKC9mb250LXJvYm90by9oTXFQTkxzdV9keXdNYTRDX0RFcFkxQlcyNlF4cFNqLV9aS21feFQ0aFd3LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSsxRjAwLTFGRkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8gTW9ubyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIE1vbm8nKSwgbG9jYWwoJ1JvYm90b01vbm8tUmVndWxhcicpLCB1cmwoL2ZvbnQtcm9ib3RvL2hNcVBOTHN1X2R5d01hNENfREVwWTRncDlROGdiWXJocUdsUmF2X0lYZmsud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkM2LCBVKzAyREEsIFUrMDJEQywgVSsyMDAwLTIwNkYsIFUrMjA3NCwgVSsyMEFDLCBVKzIyMTIsIFUrMjIxNTsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBNb25vJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTW9ubycpLCBsb2NhbCgnUm9ib3RvTW9uby1SZWd1bGFyJyksIHVybCgvZm9udC1yb2JvdG8vaE1xUE5Mc3VfZHl3TWE0Q19ERXBZNkU4a000eFdSMV8xYllVUlJvalJHYy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMjRGLCBVKzFFMDAtMUVGRiwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMENGLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8gTW9ubyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIE1vbm8nKSwgbG9jYWwoJ1JvYm90b01vbm8tUmVndWxhcicpLCB1cmwoL2ZvbnQtcm9ib3RvL2hNcVBOTHN1X2R5d01hNENfREVwWTlEaU5zUjVhLTlPZV9JdnB1OFhXbFkud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBNb25vJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTW9ubyBCb2xkJyksIGxvY2FsKCdSb2JvdG9Nb25vLUJvbGQnKSwgdXJsKC9mb250LXJvYm90by9ONGR1VmM5QzU4dXdQaVk4XzU5RnoxeC1NMUkxdzVPTWlxblZGOHhCTGhVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDAwLTA0NUYsIFUrMDQ5MC0wNDkxLCBVKzA0QjAtMDRCMSwgVSsyMTE2Owp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvIE1vbm8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBNb25vIEJvbGQnKSwgbG9jYWwoJ1JvYm90b01vbm8tQm9sZCcpLCB1cmwoL2ZvbnQtcm9ib3RvL040ZHVWYzlDNTh1d1BpWThfNTlGendYYUFYdXA1bVpsZks2eFJMcmhzY28ud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzA0NjAtMDUyRiwgVSsyMEI0LCBVKzJERTAtMkRGRiwgVStBNjQwLUE2OUY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8gTW9ubyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIE1vbm8gQm9sZCcpLCBsb2NhbCgnUm9ib3RvTW9uby1Cb2xkJyksIHVybCgvZm9udC1yb2JvdG8vTjRkdVZjOUM1OHV3UGlZOF81OUZ6d242V3F4by14d3hpbERYUFU4Y2hWVS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDM3MC0wM0ZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvIE1vbm8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBNb25vIEJvbGQnKSwgbG9jYWwoJ1JvYm90b01vbm8tQm9sZCcpLCB1cmwoL2ZvbnQtcm9ib3RvL040ZHVWYzlDNTh1d1BpWThfNTlGejFUN2FKTEs2bktwbjM2SU13VGNNTWMud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzFGMDAtMUZGRjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBNb25vJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTW9ubyBCb2xkJyksIGxvY2FsKCdSb2JvdG9Nb25vLUJvbGQnKSwgdXJsKC9mb250LXJvYm90by9ONGR1VmM5QzU4dXdQaVk4XzU5RnpfNzlfWnVVeENpZ00yRGVzcFRuRmF3LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJDNiwgVSswMkRBLCBVKzAyREMsIFUrMjAwMC0yMDZGLCBVKzIwNzQsIFUrMjBBQywgVSsyMjEyLCBVKzIyMTU7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8gTW9ubyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIE1vbm8gQm9sZCcpLCBsb2NhbCgnUm9ib3RvTW9uby1Cb2xkJyksIHVybCgvZm9udC1yb2JvdG8vTjRkdVZjOUM1OHV3UGlZOF81OUZ6NGdkOU9FUFVDTjNBZFlXMGU4dGF0NC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMjRGLCBVKzFFMDAtMUVGRiwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMENGLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8gTW9ubyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIE1vbm8gQm9sZCcpLCBsb2NhbCgnUm9ib3RvTW9uby1Cb2xkJyksIHVybCgvZm9udC1yb2JvdG8vTjRkdVZjOUM1OHV3UGlZOF81OUZ6OGJJUVNZWm5XTGFXQzlRTkNwVEtfVS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMi0wMTAzLCBVKzFFQTAtMUVGOSwgVSsyMEFCOwp9Cjwvc3R5bGU+CgoKCjxzdHlsZT4ubWF0LWJhZGdlLWNvbnRlbnR7Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsIC5tYXQtYmFkZ2UtY29udGVudHtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2UgLm1hdC1iYWRnZS1jb250ZW50e2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDEsLm1hdC1oZWFkbGluZSwubWF0LXR5cG9ncmFwaHkgaDF7Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDIsLm1hdC10aXRsZSwubWF0LXR5cG9ncmFwaHkgaDJ7Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDMsLm1hdC1zdWJoZWFkaW5nLTIsLm1hdC10eXBvZ3JhcGh5IGgze2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0LC5tYXQtc3ViaGVhZGluZy0xLC5tYXQtdHlwb2dyYXBoeSBoNHtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNSwubWF0LXR5cG9ncmFwaHkgaDV7Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDYsLm1hdC10eXBvZ3JhcGh5IGg2e2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nLC5tYXQtYm9keS0ye2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keSwubWF0LWJvZHktMSwubWF0LXR5cG9ncmFwaHl7Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5IHAsLm1hdC1ib2R5LTEgcCwubWF0LXR5cG9ncmFwaHkgcHttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbCwubWF0LWNhcHRpb257Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTQsLm1hdC10eXBvZ3JhcGh5IC5tYXQtZGlzcGxheS00e2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktMywubWF0LXR5cG9ncmFwaHkgLm1hdC1kaXNwbGF5LTN7Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMiwubWF0LXR5cG9ncmFwaHkgLm1hdC1kaXNwbGF5LTJ7Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTEsLm1hdC10eXBvZ3JhcGh5IC5tYXQtZGlzcGxheS0xe2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJ7Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b24sLm1hdC1yYWlzZWQtYnV0dG9uLC5tYXQtaWNvbi1idXR0b24sLm1hdC1zdHJva2VkLWJ1dHRvbiwubWF0LWZsYXQtYnV0dG9uLC5tYXQtZmFiLC5tYXQtbWluaS1mYWJ7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGV7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZHtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxle2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyIC5tYXQtY2FyZC10aXRsZXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGUsLm1hdC1jYXJkLWNvbnRlbnR7Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveHtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXQgLm1hdC1jaGVja2JveC1sYWJlbHtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcHtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uLC5tYXQtY2hpcCAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29ue2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGV7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGx7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbCwubWF0LWZvb3Rlci1jZWxse2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJ7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWwsLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9ue2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlciB0aHtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGV7Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVye2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudHtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGR7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJ7cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXggLm1hdC1pY29uLC5tYXQtZm9ybS1maWVsZC1zdWZmaXggLm1hdC1pY29ue2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXggLm1hdC1pY29uLWJ1dHRvbiwubWF0LWZvcm0tZmllbGQtc3VmZml4IC5tYXQtaWNvbi1idXR0b257aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXggLm1hdC1pY29uLWJ1dHRvbiAubWF0LWljb24sLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeCAubWF0LWljb24tYnV0dG9uIC5tYXQtaWNvbntoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXh7cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCB0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdCAubWF0LWZvcm0tZmllbGQtbGFiZWwsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCAubWF0LWlucHV0LXNlcnZlcjpmb2N1cysubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdOm5vdCg6bGFiZWwtc2hvd24pKy5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbHt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJ7dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVse3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcntmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtd3JhcHBlcntwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtZm9ybS1maWVsZC1pbmZpeHtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdCAubWF0LWZvcm0tZmllbGQtbGFiZWwsLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCAubWF0LWlucHV0LXNlcnZlcjpmb2N1cysubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sOi13ZWJraXQtYXV0b2ZpbGwrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXTpub3QoOmxhYmVsLXNob3duKSsubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtbGFiZWx7dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJ7bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0IC5tYXQtZm9ybS1maWVsZC1sYWJlbCwubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtaW5wdXQtc2VydmVyOmZvY3VzKy5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbHt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sOi13ZWJraXQtYXV0b2ZpbGwrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdOm5vdCg6bGFiZWwtc2hvd24pKy5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbHt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsIC5tYXQtZm9ybS1maWVsZC1pbmZpeHtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsIC5tYXQtZm9ybS1maWVsZC1sYWJlbHt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdCAubWF0LWZvcm0tZmllbGQtbGFiZWwsLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQgLm1hdC1pbnB1dC1zZXJ2ZXI6Zm9jdXMrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCAubWF0LWlucHV0LXNlcnZlcltsYWJlbF06bm90KDpsYWJlbC1zaG93bikrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1pbmZpeHtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdCAubWF0LWZvcm0tZmllbGQtbGFiZWwsLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQgLm1hdC1pbnB1dC1zZXJ2ZXI6Zm9jdXMrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCAubWF0LWlucHV0LXNlcnZlcltsYWJlbF06bm90KDpsYWJlbC1zaG93bikrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXIsLm1hdC1ncmlkLXRpbGUtZm9vdGVye2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlciAubWF0LWxpbmUsLm1hdC1ncmlkLXRpbGUtZm9vdGVyIC5tYXQtbGluZXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyIC5tYXQtbGluZTpudGgtY2hpbGQobisyKSwubWF0LWdyaWQtdGlsZS1mb290ZXIgLm1hdC1saW5lOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50e21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVte2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3IsLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplIC5tYXQtc2VsZWN0LXRyaWdnZXJ7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9ue2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdHtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcntoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50e2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0e2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsLC5tYXQtc3RlcHBlci1ob3Jpem9udGFse2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWx7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3J7Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcntmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWR7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3Vwe2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbCwubWF0LXRhYi1saW5re2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyLC5tYXQtdG9vbGJhciBoMSwubWF0LXRvb2xiYXIgaDIsLm1hdC10b29sYmFyIGgzLC5tYXQtdG9vbGJhciBoNCwubWF0LXRvb2xiYXIgaDUsLm1hdC10b29sYmFyIGg2e2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcHtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldHtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVte2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9ue2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZSAubWF0LWxpc3QtaXRlbXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZSAubWF0LWxpc3QtaXRlbSAubWF0LWxpbmV7d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlIC5tYXQtbGlzdC1pdGVtIC5tYXQtbGluZTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZSAubWF0LWxpc3Qtb3B0aW9ue2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlIC5tYXQtbGlzdC1vcHRpb24gLm1hdC1saW5le3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZSAubWF0LWxpc3Qtb3B0aW9uIC5tYXQtbGluZTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZSAubWF0LXN1YmhlYWRlcntmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXSAubWF0LWxpc3QtaXRlbXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV0gLm1hdC1saXN0LWl0ZW0gLm1hdC1saW5le3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV0gLm1hdC1saXN0LWl0ZW0gLm1hdC1saW5lOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXSAubWF0LWxpc3Qtb3B0aW9ue2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXSAubWF0LWxpc3Qtb3B0aW9uIC5tYXQtbGluZXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdIC5tYXQtbGlzdC1vcHRpb24gLm1hdC1saW5lOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXSAubWF0LXN1YmhlYWRlcntmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9ue2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVse2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFye2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb257bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWV7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlLC5tYXQtbmVzdGVkLXRyZWUtbm9kZXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGV7b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVke292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudHtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtcmlwcGxlLWVsZW1lbnR7ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVue2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lciwuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJ7cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVye3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJ7ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3B7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmd7b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmd7b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcHtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AsLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmd7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94e3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2t7cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemV7cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ3twYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94e3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0ey8qISovfUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5key8qISovfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWQ6LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWQ6bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcntwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3J7cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjEpfS5tYXQtb3B0aW9ue2NvbG9yOiMyMTIxMjF9Lm1hdC1vcHRpb246aG92ZXI6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKSwubWF0LW9wdGlvbjpmb2N1czpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfS5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZDpub3QoLm1hdC1vcHRpb24tbXVsdGlwbGUpOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCl7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4wNCl9Lm1hdC1vcHRpb24ubWF0LWFjdGl2ZXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KTtjb2xvcjojMjEyMTIxfS5tYXQtb3B0aW9uLm1hdC1vcHRpb24tZGlzYWJsZWR7Y29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcHJpbWFyeSAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWQ6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtjb2xvcjojZjU3YzAwfS5tYXQtYWNjZW50IC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZDpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2NvbG9yOiNmZjk4MDB9Lm1hdC13YXJuIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZDpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2NvbG9yOiNmNDQzMzZ9Lm1hdC1vcHRncm91cC1sYWJlbHtjb2xvcjojNjE2MTYxfS5tYXQtb3B0Z3JvdXAtZGlzYWJsZWQgLm1hdC1vcHRncm91cC1sYWJlbHtjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1wc2V1ZG8tY2hlY2tib3h7Y29sb3I6IzYxNjE2MX0ubWF0LXBzZXVkby1jaGVja2JveDo6YWZ0ZXJ7Y29sb3I6I2ZmZn0ubWF0LXBzZXVkby1jaGVja2JveC1kaXNhYmxlZHtjb2xvcjojYjBiMGIwfS5tYXQtcHJpbWFyeSAubWF0LXBzZXVkby1jaGVja2JveC1jaGVja2VkLC5tYXQtcHJpbWFyeSAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRle2JhY2tncm91bmQ6I2Y1N2MwMH0ubWF0LXBzZXVkby1jaGVja2JveC1jaGVja2VkLC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGUsLm1hdC1hY2NlbnQgLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZCwubWF0LWFjY2VudCAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRle2JhY2tncm91bmQ6I2ZmOTgwMH0ubWF0LXdhcm4gLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZCwubWF0LXdhcm4gLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZXtiYWNrZ3JvdW5kOiNmNDQzMzZ9Lm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZC5tYXQtcHNldWRvLWNoZWNrYm94LWRpc2FibGVkLC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGUubWF0LXBzZXVkby1jaGVja2JveC1kaXNhYmxlZHtiYWNrZ3JvdW5kOiNiMGIwYjB9Lm1hdC1hcHAtYmFja2dyb3VuZHtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWVsZXZhdGlvbi16MHtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejF7Ym94LXNoYWRvdzowcHggMnB4IDFweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMXB4IDFweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDNweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16Mntib3gtc2hhZG93OjBweCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAycHggMnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoze2JveC1zaGFkb3c6MHB4IDNweCAzcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDNweCA0cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejR7Ym94LXNoYWRvdzowcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejV7Ym94LXNoYWRvdzowcHggM3B4IDVweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNXB4IDhweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDE0cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejZ7Ym94LXNoYWRvdzowcHggM3B4IDVweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNnB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo3e2JveC1zaGFkb3c6MHB4IDRweCA1cHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDdweCAxMHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAycHggMTZweCAxcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16OHtib3gtc2hhZG93OjBweCA1cHggNXB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA4cHggMTBweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggM3B4IDE0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejl7Ym94LXNoYWRvdzowcHggNXB4IDZweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggOXB4IDEycHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDNweCAxNnB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxMHtib3gtc2hhZG93OjBweCA2cHggNnB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxMHB4IDE0cHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDRweCAxOHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxMXtib3gtc2hhZG93OjBweCA2cHggN3B4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxMXB4IDE1cHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDRweCAyMHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxMntib3gtc2hhZG93OjBweCA3cHggOHB4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxMnB4IDE3cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDVweCAyMnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxM3tib3gtc2hhZG93OjBweCA3cHggOHB4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxM3B4IDE5cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDVweCAyNHB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxNHtib3gtc2hhZG93OjBweCA3cHggOXB4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxNHB4IDIxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDVweCAyNnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxNXtib3gtc2hhZG93OjBweCA4cHggOXB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxNXB4IDIycHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAyOHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxNntib3gtc2hhZG93OjBweCA4cHggMTBweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTZweCAyNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMzBweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTd7Ym94LXNoYWRvdzowcHggOHB4IDExcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE3cHggMjZweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNnB4IDMycHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE4e2JveC1zaGFkb3c6MHB4IDlweCAxMXB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxOHB4IDI4cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDdweCAzNHB4IDZweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxOXtib3gtc2hhZG93OjBweCA5cHggMTJweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTlweCAyOXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA3cHggMzZweCA2cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjB7Ym94LXNoYWRvdzowcHggMTBweCAxM3B4IC02cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAyMHB4IDMxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDhweCAzOHB4IDdweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoyMXtib3gtc2hhZG93OjBweCAxMHB4IDEzcHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDIxcHggMzNweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOHB4IDQwcHggN3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejIye2JveC1zaGFkb3c6MHB4IDEwcHggMTRweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjJweCAzNXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA4cHggNDJweCA3cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjN7Ym94LXNoYWRvdzowcHggMTFweCAxNHB4IC03cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAyM3B4IDM2cHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDlweCA0NHB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoyNHtib3gtc2hhZG93OjBweCAxMXB4IDE1cHggLTdweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDI0cHggMzhweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOXB4IDQ2cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC10aGVtZS1sb2FkZWQtbWFya2Vye2Rpc3BsYXk6bm9uZX0ubWF0LWF1dG9jb21wbGV0ZS1wYW5lbHtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWF1dG9jb21wbGV0ZS1wYW5lbDpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA0cHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWF1dG9jb21wbGV0ZS1wYW5lbCAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWQ6bm90KC5tYXQtYWN0aXZlKTpub3QoOmhvdmVyKXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1hdXRvY29tcGxldGUtcGFuZWwgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkOm5vdCgubWF0LWFjdGl2ZSk6bm90KDpob3Zlcik6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtjb2xvcjojMjEyMTIxfS5tYXQtYmFkZ2V7cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1iYWRnZS1oaWRkZW4gLm1hdC1iYWRnZS1jb250ZW50e2Rpc3BsYXk6bm9uZX0ubWF0LWJhZGdlLWNvbnRlbnR7cG9zaXRpb246YWJzb2x1dGU7dGV4dC1hbGlnbjpjZW50ZXI7ZGlzcGxheTppbmxpbmUtYmxvY2s7Ym9yZGVyLXJhZGl1czo1MCU7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gMjAwbXMgZWFzZS1pbi1vdXQ7dHJhbnNmb3JtOnNjYWxlKDAuNik7b3ZlcmZsb3c6aGlkZGVuO3doaXRlLXNwYWNlOm5vd3JhcDt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO3BvaW50ZXItZXZlbnRzOm5vbmV9Lm5nLWFuaW1hdGUtZGlzYWJsZWQgLm1hdC1iYWRnZS1jb250ZW50LC5tYXQtYmFkZ2UtY29udGVudC5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZXt0cmFuc2l0aW9uOm5vbmV9Lm1hdC1iYWRnZS1jb250ZW50Lm1hdC1iYWRnZS1hY3RpdmV7dHJhbnNmb3JtOm5vbmV9Lm1hdC1iYWRnZS1zbWFsbCAubWF0LWJhZGdlLWNvbnRlbnR7d2lkdGg6MTZweDtoZWlnaHQ6MTZweDtsaW5lLWhlaWdodDoxNnB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWFib3ZlIC5tYXQtYmFkZ2UtY29udGVudHt0b3A6LThweH0ubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1iZWxvdyAubWF0LWJhZGdlLWNvbnRlbnR7Ym90dG9tOi04cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2UtYmVmb3JlIC5tYXQtYmFkZ2UtY29udGVudHtsZWZ0Oi0xNnB4fVtkaXI9cnRsXSAubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1iZWZvcmUgLm1hdC1iYWRnZS1jb250ZW50e2xlZnQ6YXV0bztyaWdodDotMTZweH0ubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1hZnRlciAubWF0LWJhZGdlLWNvbnRlbnR7cmlnaHQ6LTE2cHh9W2Rpcj1ydGxdIC5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWFmdGVyIC5tYXQtYmFkZ2UtY29udGVudHtyaWdodDphdXRvO2xlZnQ6LTE2cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYmVmb3JlIC5tYXQtYmFkZ2UtY29udGVudHtsZWZ0Oi04cHh9W2Rpcj1ydGxdIC5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZSAubWF0LWJhZGdlLWNvbnRlbnR7bGVmdDphdXRvO3JpZ2h0Oi04cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXIgLm1hdC1iYWRnZS1jb250ZW50e3JpZ2h0Oi04cHh9W2Rpcj1ydGxdIC5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyIC5tYXQtYmFkZ2UtY29udGVudHtyaWdodDphdXRvO2xlZnQ6LThweH0ubWF0LWJhZGdlLW1lZGl1bSAubWF0LWJhZGdlLWNvbnRlbnR7d2lkdGg6MjJweDtoZWlnaHQ6MjJweDtsaW5lLWhlaWdodDoyMnB4fS5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1hYm92ZSAubWF0LWJhZGdlLWNvbnRlbnR7dG9wOi0xMXB4fS5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1iZWxvdyAubWF0LWJhZGdlLWNvbnRlbnR7Ym90dG9tOi0xMXB4fS5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1iZWZvcmUgLm1hdC1iYWRnZS1jb250ZW50e2xlZnQ6LTIycHh9W2Rpcj1ydGxdIC5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1iZWZvcmUgLm1hdC1iYWRnZS1jb250ZW50e2xlZnQ6YXV0bztyaWdodDotMjJweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYWZ0ZXIgLm1hdC1iYWRnZS1jb250ZW50e3JpZ2h0Oi0yMnB4fVtkaXI9cnRsXSAubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYWZ0ZXIgLm1hdC1iYWRnZS1jb250ZW50e3JpZ2h0OmF1dG87bGVmdDotMjJweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYmVmb3JlIC5tYXQtYmFkZ2UtY29udGVudHtsZWZ0Oi0xMXB4fVtkaXI9cnRsXSAubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYmVmb3JlIC5tYXQtYmFkZ2UtY29udGVudHtsZWZ0OmF1dG87cmlnaHQ6LTExcHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyIC5tYXQtYmFkZ2UtY29udGVudHtyaWdodDotMTFweH1bZGlyPXJ0bF0gLm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyIC5tYXQtYmFkZ2UtY29udGVudHtyaWdodDphdXRvO2xlZnQ6LTExcHh9Lm1hdC1iYWRnZS1sYXJnZSAubWF0LWJhZGdlLWNvbnRlbnR7d2lkdGg6MjhweDtoZWlnaHQ6MjhweDtsaW5lLWhlaWdodDoyOHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWFib3ZlIC5tYXQtYmFkZ2UtY29udGVudHt0b3A6LTE0cHh9Lm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYmVsb3cgLm1hdC1iYWRnZS1jb250ZW50e2JvdHRvbTotMTRweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1iZWZvcmUgLm1hdC1iYWRnZS1jb250ZW50e2xlZnQ6LTI4cHh9W2Rpcj1ydGxdIC5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWJlZm9yZSAubWF0LWJhZGdlLWNvbnRlbnR7bGVmdDphdXRvO3JpZ2h0Oi0yOHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWFmdGVyIC5tYXQtYmFkZ2UtY29udGVudHtyaWdodDotMjhweH1bZGlyPXJ0bF0gLm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYWZ0ZXIgLm1hdC1iYWRnZS1jb250ZW50e3JpZ2h0OmF1dG87bGVmdDotMjhweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1iZWZvcmUgLm1hdC1iYWRnZS1jb250ZW50e2xlZnQ6LTE0cHh9W2Rpcj1ydGxdIC5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZSAubWF0LWJhZGdlLWNvbnRlbnR7bGVmdDphdXRvO3JpZ2h0Oi0xNHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyIC5tYXQtYmFkZ2UtY29udGVudHtyaWdodDotMTRweH1bZGlyPXJ0bF0gLm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXIgLm1hdC1iYWRnZS1jb250ZW50e3JpZ2h0OmF1dG87bGVmdDotMTRweH0ubWF0LWJhZGdlLWNvbnRlbnR7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kOiNmNTdjMDB9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWJhZGdlLWNvbnRlbnR7b3V0bGluZTpzb2xpZCAxcHg7Ym9yZGVyLXJhZGl1czowfS5tYXQtYmFkZ2UtYWNjZW50IC5tYXQtYmFkZ2UtY29udGVudHtiYWNrZ3JvdW5kOiNmZjk4MDA7Y29sb3I6I2ZmZn0ubWF0LWJhZGdlLXdhcm4gLm1hdC1iYWRnZS1jb250ZW50e2NvbG9yOiNmZmY7YmFja2dyb3VuZDojZjQ0MzM2fS5tYXQtYmFkZ2UtZGlzYWJsZWQgLm1hdC1iYWRnZS1jb250ZW50e2JhY2tncm91bmQ6I2JkYmRiZDtjb2xvcjojNzU3NTc1fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcntib3gtc2hhZG93OjBweCA4cHggMTBweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTZweCAyNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMzBweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWJ1dHRvbiwubWF0LWljb24tYnV0dG9uLC5tYXQtc3Ryb2tlZC1idXR0b257Y29sb3I6aW5oZXJpdDtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50fS5tYXQtYnV0dG9uLm1hdC1wcmltYXJ5LC5tYXQtaWNvbi1idXR0b24ubWF0LXByaW1hcnksLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtcHJpbWFyeXtjb2xvcjojZjU3YzAwfS5tYXQtYnV0dG9uLm1hdC1hY2NlbnQsLm1hdC1pY29uLWJ1dHRvbi5tYXQtYWNjZW50LC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LWFjY2VudHtjb2xvcjojZmY5ODAwfS5tYXQtYnV0dG9uLm1hdC13YXJuLC5tYXQtaWNvbi1idXR0b24ubWF0LXdhcm4sLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtd2Fybntjb2xvcjojZjQ0MzM2fS5tYXQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtaWNvbi1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LWljb24tYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LWljb24tYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1pY29uLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZHtjb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1idXR0b24ubWF0LXByaW1hcnkgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LWljb24tYnV0dG9uLm1hdC1wcmltYXJ5IC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtcHJpbWFyeSAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LWJ1dHRvbi5tYXQtYWNjZW50IC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1pY29uLWJ1dHRvbi5tYXQtYWNjZW50IC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYWNjZW50IC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXl7YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtYnV0dG9uLm1hdC13YXJuIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1pY29uLWJ1dHRvbi5tYXQtd2FybiAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXdhcm4gLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtaWNvbi1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9Lm1hdC1idXR0b24gLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LWljb24tYnV0dG9uIC5tYXQtcmlwcGxlLWVsZW1lbnQsLm1hdC1zdHJva2VkLWJ1dHRvbiAubWF0LXJpcHBsZS1lbGVtZW50e29wYWNpdHk6LjE7YmFja2dyb3VuZC1jb2xvcjpjdXJyZW50Q29sb3J9Lm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXtiYWNrZ3JvdW5kOiMwMDB9Lm1hdC1zdHJva2VkLWJ1dHRvbjpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpe2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1mbGF0LWJ1dHRvbiwubWF0LXJhaXNlZC1idXR0b24sLm1hdC1mYWIsLm1hdC1taW5pLWZhYntjb2xvcjojMjEyMTIxO2JhY2tncm91bmQtY29sb3I6I2ZmZn0ubWF0LWZsYXQtYnV0dG9uLm1hdC1wcmltYXJ5LC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeSwubWF0LWZhYi5tYXQtcHJpbWFyeSwubWF0LW1pbmktZmFiLm1hdC1wcmltYXJ5e2NvbG9yOiNmZmZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50LC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYWNjZW50LC5tYXQtZmFiLm1hdC1hY2NlbnQsLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50e2NvbG9yOiNmZmZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtd2FybiwubWF0LXJhaXNlZC1idXR0b24ubWF0LXdhcm4sLm1hdC1mYWIubWF0LXdhcm4sLm1hdC1taW5pLWZhYi5tYXQtd2Fybntjb2xvcjojZmZmfS5tYXQtZmxhdC1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LWZsYXQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LWZsYXQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1mbGF0LWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LXJhaXNlZC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LXJhaXNlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtZmFiLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1mYWIubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtZmFiLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtbWluaS1mYWIubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LW1pbmktZmFiLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LW1pbmktZmFiLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1taW5pLWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWR7Y29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtZmxhdC1idXR0b24ubWF0LXByaW1hcnksLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1wcmltYXJ5LC5tYXQtZmFiLm1hdC1wcmltYXJ5LC5tYXQtbWluaS1mYWIubWF0LXByaW1hcnl7YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtZmxhdC1idXR0b24ubWF0LWFjY2VudCwubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudCwubWF0LWZhYi5tYXQtYWNjZW50LC5tYXQtbWluaS1mYWIubWF0LWFjY2VudHtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtd2FybiwubWF0LXJhaXNlZC1idXR0b24ubWF0LXdhcm4sLm1hdC1mYWIubWF0LXdhcm4sLm1hdC1taW5pLWZhYi5tYXQtd2FybntiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtZmxhdC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LWZsYXQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1mYWIubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LWZhYi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1mYWIubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtbWluaS1mYWIubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtbWluaS1mYWIubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LW1pbmktZmFiLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWZsYXQtYnV0dG9uLm1hdC1wcmltYXJ5IC5tYXQtcmlwcGxlLWVsZW1lbnQsLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1wcmltYXJ5IC5tYXQtcmlwcGxlLWVsZW1lbnQsLm1hdC1mYWIubWF0LXByaW1hcnkgLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LW1pbmktZmFiLm1hdC1wcmltYXJ5IC5tYXQtcmlwcGxlLWVsZW1lbnR7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX0ubWF0LWZsYXQtYnV0dG9uLm1hdC1hY2NlbnQgLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudCAubWF0LXJpcHBsZS1lbGVtZW50LC5tYXQtZmFiLm1hdC1hY2NlbnQgLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LW1pbmktZmFiLm1hdC1hY2NlbnQgLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm4gLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LXJhaXNlZC1idXR0b24ubWF0LXdhcm4gLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LWZhYi5tYXQtd2FybiAubWF0LXJpcHBsZS1lbGVtZW50LC5tYXQtbWluaS1mYWIubWF0LXdhcm4gLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtc3Ryb2tlZC1idXR0b246bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSksLm1hdC1mbGF0LWJ1dHRvbjpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1yYWlzZWQtYnV0dG9uOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDJweCAycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1yYWlzZWQtYnV0dG9uOm5vdCgubWF0LWJ1dHRvbi1kaXNhYmxlZCk6YWN0aXZlOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDVweCA1cHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDhweCAxMHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAzcHggMTRweCAycHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXJhaXNlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZDpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1mYWI6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSksLm1hdC1taW5pLWZhYjpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA2cHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDE4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1mYWI6bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKTphY3RpdmU6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSksLm1hdC1taW5pLWZhYjpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpOmFjdGl2ZTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCA3cHggOHB4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxMnB4IDE3cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDVweCAyMnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZmFiLm1hdC1idXR0b24tZGlzYWJsZWQ6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSksLm1hdC1taW5pLWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhbG9uZSwubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXB7Ym94LXNoYWRvdzowcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhbG9uZS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkLC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJke2JveC1zaGFkb3c6bm9uZX0ubWF0LWJ1dHRvbi10b2dnbGV7Y29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtYnV0dG9uLXRvZ2dsZSAubWF0LWJ1dHRvbi10b2dnbGUtZm9jdXMtb3ZlcmxheXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZHtjb2xvcjojMjEyMTIxO2JhY2tncm91bmQ6I2ZmZn0ubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZCAubWF0LWJ1dHRvbi10b2dnbGUtZm9jdXMtb3ZlcmxheXtiYWNrZ3JvdW5kLWNvbG9yOiMwMDB9Lm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmQgLm1hdC1idXR0b24tdG9nZ2xlKy5tYXQtYnV0dG9uLXRvZ2dsZXtib3JkZXItbGVmdDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfVtkaXI9cnRsXSAubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZCAubWF0LWJ1dHRvbi10b2dnbGUrLm1hdC1idXR0b24tdG9nZ2xle2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLXJpZ2h0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9Lm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmQubWF0LWJ1dHRvbi10b2dnbGUtdmVydGljYWwgLm1hdC1idXR0b24tdG9nZ2xlKy5tYXQtYnV0dG9uLXRvZ2dsZXtib3JkZXItbGVmdDpub25lO2JvcmRlci1yaWdodDpub25lO2JvcmRlci10b3A6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtY2hlY2tlZHtiYWNrZ3JvdW5kLWNvbG9yOiNlMGUwZTA7Y29sb3I6IzYxNjE2MX0ubWF0LWJ1dHRvbi10b2dnbGUtY2hlY2tlZC5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJke2NvbG9yOiMyMTIxMjF9Lm1hdC1idXR0b24tdG9nZ2xlLWRpc2FibGVke2NvbG9yOnJnYmEoMCwwLDAsLjI2KTtiYWNrZ3JvdW5kLWNvbG9yOiNlZWV9Lm1hdC1idXR0b24tdG9nZ2xlLWRpc2FibGVkLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmR7YmFja2dyb3VuZDojZmZmfS5tYXQtYnV0dG9uLXRvZ2dsZS1kaXNhYmxlZC5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2Vke2JhY2tncm91bmQtY29sb3I6I2JkYmRiZH0ubWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhbG9uZS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkLC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJke2JvcmRlcjpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkIC5tYXQtYnV0dG9uLXRvZ2dsZS1sYWJlbC1jb250ZW50e2xpbmUtaGVpZ2h0OjQ4cHh9Lm1hdC1jYXJke2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtY2FyZDpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAycHggMXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxcHggMXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggM3B4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtY2FyZC5tYXQtY2FyZC1mbGF0Om5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWNhcmQtc3VidGl0bGV7Y29sb3I6IzYxNjE2MX0ubWF0LWNoZWNrYm94LWZyYW1le2JvcmRlci1jb2xvcjojNjE2MTYxfS5tYXQtY2hlY2tib3gtY2hlY2ttYXJre2ZpbGw6I2ZmZn0ubWF0LWNoZWNrYm94LWNoZWNrbWFyay1wYXRoe3N0cm9rZTojZmZmICFpbXBvcnRhbnR9Lm1hdC1jaGVja2JveC1taXhlZG1hcmt7YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS5tYXQtcHJpbWFyeSAubWF0LWNoZWNrYm94LWJhY2tncm91bmQsLm1hdC1jaGVja2JveC1jaGVja2VkLm1hdC1wcmltYXJ5IC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZHtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlLm1hdC1hY2NlbnQgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kLC5tYXQtY2hlY2tib3gtY2hlY2tlZC5tYXQtYWNjZW50IC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZHtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlLm1hdC13YXJuIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZCwubWF0LWNoZWNrYm94LWNoZWNrZWQubWF0LXdhcm4gLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5ke2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LWNoZWNrYm94LWRpc2FibGVkLm1hdC1jaGVja2JveC1jaGVja2VkIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZCwubWF0LWNoZWNrYm94LWRpc2FibGVkLm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZHtiYWNrZ3JvdW5kLWNvbG9yOiNiMGIwYjB9Lm1hdC1jaGVja2JveC1kaXNhYmxlZDpub3QoLm1hdC1jaGVja2JveC1jaGVja2VkKSAubWF0LWNoZWNrYm94LWZyYW1le2JvcmRlci1jb2xvcjojYjBiMGIwfS5tYXQtY2hlY2tib3gtZGlzYWJsZWQgLm1hdC1jaGVja2JveC1sYWJlbHtjb2xvcjojNjE2MTYxfS5tYXQtY2hlY2tib3ggLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOiMwMDB9Lm1hdC1jaGVja2JveC1jaGVja2VkOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtcHJpbWFyeSAubWF0LXJpcHBsZS1lbGVtZW50LC5tYXQtY2hlY2tib3g6YWN0aXZlOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtcHJpbWFyeSAubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQ6I2Y1N2MwMH0ubWF0LWNoZWNrYm94LWNoZWNrZWQ6bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC1hY2NlbnQgLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LWNoZWNrYm94OmFjdGl2ZTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LWFjY2VudCAubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQ6I2ZmOTgwMH0ubWF0LWNoZWNrYm94LWNoZWNrZWQ6bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC13YXJuIC5tYXQtcmlwcGxlLWVsZW1lbnQsLm1hdC1jaGVja2JveDphY3RpdmU6bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC13YXJuIC5tYXQtcmlwcGxlLWVsZW1lbnR7YmFja2dyb3VuZDojZjQ0MzM2fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcHtiYWNrZ3JvdW5kLWNvbG9yOiNlMGUwZTA7Y29sb3I6IzIxMjEyMX0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAgLm1hdC1jaGlwLXJlbW92ZXtjb2xvcjojMjEyMTIxO29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwOm5vdCgubWF0LWNoaXAtZGlzYWJsZWQpOmFjdGl2ZXtib3gtc2hhZG93OjBweCAzcHggM3B4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAzcHggNHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcDpub3QoLm1hdC1jaGlwLWRpc2FibGVkKSAubWF0LWNoaXAtcmVtb3ZlOmhvdmVye29wYWNpdHk6LjU0fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1kaXNhYmxlZHtvcGFjaXR5Oi40fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcDo6YWZ0ZXJ7YmFja2dyb3VuZDojMDAwfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtcHJpbWFyeXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDA7Y29sb3I6I2ZmZn0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXByaW1hcnkgLm1hdC1jaGlwLXJlbW92ZXtjb2xvcjojZmZmO29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1wcmltYXJ5IC5tYXQtcmlwcGxlLWVsZW1lbnR7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXdhcm57YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2O2NvbG9yOiNmZmZ9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC13YXJuIC5tYXQtY2hpcC1yZW1vdmV7Y29sb3I6I2ZmZjtvcGFjaXR5Oi40fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtd2FybiAubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1hY2NlbnR7YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwO2NvbG9yOiNmZmZ9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1hY2NlbnQgLm1hdC1jaGlwLXJlbW92ZXtjb2xvcjojZmZmO29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1hY2NlbnQgLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtdGFibGV7YmFja2dyb3VuZDojZmZmfS5tYXQtdGFibGUgdGhlYWQsLm1hdC10YWJsZSB0Ym9keSwubWF0LXRhYmxlIHRmb290LG1hdC1oZWFkZXItcm93LG1hdC1yb3csbWF0LWZvb3Rlci1yb3csW21hdC1oZWFkZXItcm93XSxbbWF0LXJvd10sW21hdC1mb290ZXItcm93XSwubWF0LXRhYmxlLXN0aWNreXtiYWNrZ3JvdW5kOmluaGVyaXR9bWF0LXJvdyxtYXQtaGVhZGVyLXJvdyxtYXQtZm9vdGVyLXJvdyx0aC5tYXQtaGVhZGVyLWNlbGwsdGQubWF0LWNlbGwsdGQubWF0LWZvb3Rlci1jZWxse2JvcmRlci1ib3R0b20tY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtaGVhZGVyLWNlbGx7Y29sb3I6IzYxNjE2MX0ubWF0LWNlbGwsLm1hdC1mb290ZXItY2VsbHtjb2xvcjojMjEyMTIxfS5tYXQtY2FsZW5kYXItYXJyb3d7ZmlsbDpyZ2JhKDAsMCwwLC41NCl9Lm1hdC1kYXRlcGlja2VyLXRvZ2dsZSwubWF0LWRhdGVwaWNrZXItY29udGVudCAubWF0LWNhbGVuZGFyLW5leHQtYnV0dG9uLC5tYXQtZGF0ZXBpY2tlci1jb250ZW50IC5tYXQtY2FsZW5kYXItcHJldmlvdXMtYnV0dG9ue2NvbG9yOnJnYmEoMCwwLDAsLjU0KX0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcntjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXItZGl2aWRlcjo6YWZ0ZXJ7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVse2NvbG9yOiM2MTYxNjF9Lm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudCwubWF0LWRhdGUtcmFuZ2UtaW5wdXQtc2VwYXJhdG9ye2NvbG9yOiMyMTIxMjE7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50fS5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZD4ubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50Om5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpe2NvbG9yOiM3NTc1NzV9Lm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkIC5tYXQtZGF0ZS1yYW5nZS1pbnB1dC1zZXBhcmF0b3J7Y29sb3I6Izc1NzU3NX0ubWF0LWNhbGVuZGFyLWJvZHktaW4tcHJldmlld3tjb2xvcjpyZ2JhKDAsMCwwLC4yNCl9Lm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5Om5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpe2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkPi5tYXQtY2FsZW5kYXItYm9keS10b2RheTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMTgpfS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDUsMTI0LDAsLjIpfS5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCwubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDksMTcxLDAsLjIpfS5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydDo6YmVmb3JlLFtkaXI9cnRsXSAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2UtZW5kOjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMjQ1LCAxMjQsIDAsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Lm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZDo6YmVmb3JlLFtkaXI9cnRsXSAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnQ6OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byBsZWZ0LCByZ2JhKDI0NSwgMTI0LCAwLCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZT4ubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwsLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2UubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2U6OmFmdGVye2JhY2tncm91bmQ6I2E4ZGFiNX0ubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQsLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2U+Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVke2JhY2tncm91bmQ6IzQ2YTM1ZX0ubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWR7YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwO2NvbG9yOiNmZmZ9Lm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkPi5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ1LDEyNCwwLC40KX0ubWF0LWNhbGVuZGFyLWJvZHktdG9kYXkubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWR7Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggI2ZmZn0ubWF0LWNhbGVuZGFyLWJvZHktY2VsbDpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkKTpob3Zlcj4ubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50Om5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpLC5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LWNhbGVuZGFyLWJvZHktYWN0aXZlPi5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnQ6bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCksLmNkay1wcm9ncmFtLWZvY3VzZWQgLm1hdC1jYWxlbmRhci1ib2R5LWFjdGl2ZT4ubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50Om5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDUsMTI0LDAsLjMpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50e2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpO2JhY2tncm91bmQtY29sb3I6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnQgLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlOjpiZWZvcmV7YmFja2dyb3VuZDpyZ2JhKDI1NSwxNTIsMCwuMil9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudCAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwsLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudCAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDksMTcxLDAsLjIpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnQgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0OjpiZWZvcmUsLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudCBbZGlyPXJ0bF0gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZDo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDI1NSwgMTUyLCAwLCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnQgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZDo6YmVmb3JlLC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnQgW2Rpcj1ydGxdIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydDo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIGxlZnQsIHJnYmEoMjU1LCAxNTIsIDAsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudCAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2U+Lm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsLC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnQgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2UubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2U6OmFmdGVye2JhY2tncm91bmQ6I2E4ZGFiNX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50IC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCwubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50IC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlPi5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZHtiYWNrZ3JvdW5kOiM0NmEzNWV9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudCAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWR7YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwO2NvbG9yOiNmZmZ9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudCAubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWQ+Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVke2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjQpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnQgLm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVke2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4ICNmZmZ9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudCAubWF0LWNhbGVuZGFyLWJvZHktY2VsbDpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkKTpob3Zlcj4ubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50Om5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpLC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnQgLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtY2FsZW5kYXItYm9keS1hY3RpdmU+Lm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudDpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKSwubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50IC5jZGstcHJvZ3JhbS1mb2N1c2VkIC5tYXQtY2FsZW5kYXItYm9keS1hY3RpdmU+Lm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudDpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4zKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2U6OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ0LDY3LDU0LC4yKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwsLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm4gLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2U6OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ5LDE3MSwwLC4yKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnQ6OmJlZm9yZSwubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiBbZGlyPXJ0bF0gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZDo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDI0NCwgNjcsIDU0LCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmQ6OmJlZm9yZSwubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiBbZGlyPXJ0bF0gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0OjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gbGVmdCwgcmdiYSgyNDQsIDY3LCA1NCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2U+Lm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsLC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlOjphZnRlcntiYWNrZ3JvdW5kOiNhOGRhYjV9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm4gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkLC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlPi5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZHtiYWNrZ3JvdW5kOiM0NmEzNWV9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVke2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNjtjb2xvcjojZmZmfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuIC5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZD4ubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWR7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NCw2Nyw1NCwuNCl9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm4gLm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVke2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4ICNmZmZ9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm4gLm1hdC1jYWxlbmRhci1ib2R5LWNlbGw6bm90KC5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZCk6aG92ZXI+Lm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudDpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKSwubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiAuY2RrLWtleWJvYXJkLWZvY3VzZWQgLm1hdC1jYWxlbmRhci1ib2R5LWFjdGl2ZT4ubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50Om5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpLC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuIC5jZGstcHJvZ3JhbS1mb2N1c2VkIC5tYXQtY2FsZW5kYXItYm9keS1hY3RpdmU+Lm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudDpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ0LDY3LDU0LC4zKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC10b3VjaHtib3gtc2hhZG93OjBweCAxMXB4IDE1cHggLTdweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDI0cHggMzhweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOXB4IDQ2cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1kYXRlcGlja2VyLXRvZ2dsZS1hY3RpdmV7Y29sb3I6I2Y1N2MwMH0ubWF0LWRhdGVwaWNrZXItdG9nZ2xlLWFjdGl2ZS5tYXQtYWNjZW50e2NvbG9yOiNmZjk4MDB9Lm1hdC1kYXRlcGlja2VyLXRvZ2dsZS1hY3RpdmUubWF0LXdhcm57Y29sb3I6I2Y0NDMzNn0ubWF0LWRhdGUtcmFuZ2UtaW5wdXQtaW5uZXJbZGlzYWJsZWRde2NvbG9yOiM3NTc1NzV9Lm1hdC1kaWFsb2ctY29udGFpbmVye2JveC1zaGFkb3c6MHB4IDExcHggMTVweCAtN3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjRweCAzOHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA5cHggNDZweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWRpdmlkZXJ7Ym9yZGVyLXRvcC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1kaXZpZGVyLXZlcnRpY2Fse2JvcmRlci1yaWdodC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1leHBhbnNpb24tcGFuZWx7YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1leHBhbnNpb24tcGFuZWw6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWFjdGlvbi1yb3d7Ym9yZGVyLXRvcC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1leHBhbnNpb24tcGFuZWwgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdChbYXJpYS1kaXNhYmxlZD10cnVlXSksLm1hdC1leHBhbnNpb24tcGFuZWwgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KFthcmlhLWRpc2FibGVkPXRydWVdKSwubWF0LWV4cGFuc2lvbi1wYW5lbDpub3QoLm1hdC1leHBhbmRlZCkgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyOmhvdmVyOm5vdChbYXJpYS1kaXNhYmxlZD10cnVlXSl7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4wNCl9QG1lZGlhKGhvdmVyOiBub25lKXsubWF0LWV4cGFuc2lvbi1wYW5lbDpub3QoLm1hdC1leHBhbmRlZCk6bm90KFthcmlhLWRpc2FibGVkPXRydWVdKSAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI6aG92ZXJ7YmFja2dyb3VuZDojZmZmfX0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItdGl0bGV7Y29sb3I6IzIxMjEyMX0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItZGVzY3JpcHRpb24sLm1hdC1leHBhbnNpb24taW5kaWNhdG9yOjphZnRlcntjb2xvcjojNjE2MTYxfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlclthcmlhLWRpc2FibGVkPXRydWVde2NvbG9yOnJnYmEoMCwwLDAsLjI2KX0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbYXJpYS1kaXNhYmxlZD10cnVlXSAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItdGl0bGUsLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0gLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLWRlc2NyaXB0aW9ue2NvbG9yOmluaGVyaXR9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVye2hlaWdodDo0OHB4fS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci5tYXQtZXhwYW5kZWR7aGVpZ2h0OjY0cHh9Lm1hdC1mb3JtLWZpZWxkLWxhYmVse2NvbG9yOnJnYmEoOTcsOTcsOTcsLjYpfS5tYXQtaGludHtjb2xvcjpyZ2JhKDk3LDk3LDk3LC42KX0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQgLm1hdC1mb3JtLWZpZWxkLWxhYmVse2NvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1sYWJlbC5tYXQtYWNjZW50e2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1sYWJlbC5tYXQtd2Fybntjb2xvcjojZjQ0MzM2fS5tYXQtZm9jdXNlZCAubWF0LWZvcm0tZmllbGQtcmVxdWlyZWQtbWFya2Vye2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLXJpcHBsZXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjg3KX0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1yaXBwbGUubWF0LWFjY2VudHtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1yaXBwbGUubWF0LXdhcm57YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb2N1c2VkOm5vdCgubWF0LWZvcm0tZmllbGQtaW52YWxpZCkgLm1hdC1mb3JtLWZpZWxkLWluZml4OjphZnRlcntjb2xvcjojZjU3YzAwfS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb2N1c2VkOm5vdCgubWF0LWZvcm0tZmllbGQtaW52YWxpZCkubWF0LWFjY2VudCAubWF0LWZvcm0tZmllbGQtaW5maXg6OmFmdGVye2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvY3VzZWQ6bm90KC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkKS5tYXQtd2FybiAubWF0LWZvcm0tZmllbGQtaW5maXg6OmFmdGVye2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb3JtLWZpZWxkLWludmFsaWQgLm1hdC1mb3JtLWZpZWxkLWxhYmVse2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb3JtLWZpZWxkLWludmFsaWQgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLm1hdC1hY2NlbnQsLm1hdC1mb3JtLWZpZWxkLm1hdC1mb3JtLWZpZWxkLWludmFsaWQgLm1hdC1mb3JtLWZpZWxkLWxhYmVsIC5tYXQtZm9ybS1maWVsZC1yZXF1aXJlZC1tYXJrZXJ7Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZCAubWF0LWZvcm0tZmllbGQtcmlwcGxlLC5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIC5tYXQtZm9ybS1maWVsZC1yaXBwbGUubWF0LWFjY2VudHtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1lcnJvcntjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtbGFiZWx7Y29sb3I6IzYxNjE2MX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kgLm1hdC1oaW50e2NvbG9yOiM2MTYxNjF9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmV7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC40Mil9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmV7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMCwgMCwgMCwgMC40MikgMCUsIHJnYmEoMCwgMCwgMCwgMC40MikgMzMlLCB0cmFuc3BhcmVudCAwJSk7YmFja2dyb3VuZC1zaXplOjRweCAxMDAlO2JhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLXN0YW5kYXJkIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmV7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC40Mil9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmQubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZXtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgwLCAwLCAwLCAwLjQyKSAwJSwgcmdiYSgwLCAwLCAwLCAwLjQyKSAzMyUsIHRyYW5zcGFyZW50IDAlKTtiYWNrZ3JvdW5kLXNpemU6NHB4IDEwMCU7YmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0LXh9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbCAubWF0LWZvcm0tZmllbGQtZmxleHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjA0KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkIC5tYXQtZm9ybS1maWVsZC1mbGV4e2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMDIpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZTo6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNDIpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1mb3JtLWZpZWxkLWxhYmVse2NvbG9yOiM3NTc1NzV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lOjpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5le2NvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNre2NvbG9yOnJnYmEoMCwwLDAsLjg3KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNre2NvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9jdXNlZC5tYXQtYWNjZW50IC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNre2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9jdXNlZC5tYXQtd2FybiAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja3tjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtaW52YWxpZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNre2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCAubWF0LWZvcm0tZmllbGQtbGFiZWx7Y29sb3I6Izc1NzU3NX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5le2NvbG9yOnJnYmEoMCwwLDAsLjA2KX0ubWF0LWljb24ubWF0LXByaW1hcnl7Y29sb3I6I2Y1N2MwMH0ubWF0LWljb24ubWF0LWFjY2VudHtjb2xvcjojZmY5ODAwfS5tYXQtaWNvbi5tYXQtd2Fybntjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0IC5tYXQtZm9ybS1maWVsZC1pbmZpeDo6YWZ0ZXJ7Y29sb3I6IzYxNjE2MX0ubWF0LWlucHV0LWVsZW1lbnQ6ZGlzYWJsZWQsLm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1mb3JtLWZpZWxkLWluZml4OjphZnRlcntjb2xvcjojNzU3NTc1fS5tYXQtaW5wdXQtZWxlbWVudHtjYXJldC1jb2xvcjojZjU3YzAwfS5tYXQtaW5wdXQtZWxlbWVudDo6cGxhY2Vob2xkZXJ7Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNDIpfS5tYXQtaW5wdXQtZWxlbWVudDo6LW1vei1wbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1pbnB1dC1lbGVtZW50Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVye2NvbG9yOnJnYmEoOTcsOTcsOTcsLjQyKX0ubWF0LWlucHV0LWVsZW1lbnQ6LW1zLWlucHV0LXBsYWNlaG9sZGVye2NvbG9yOnJnYmEoOTcsOTcsOTcsLjQyKX0ubWF0LWZvcm0tZmllbGQubWF0LWFjY2VudCAubWF0LWlucHV0LWVsZW1lbnR7Y2FyZXQtY29sb3I6I2ZmOTgwMH0ubWF0LWZvcm0tZmllbGQubWF0LXdhcm4gLm1hdC1pbnB1dC1lbGVtZW50LC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIC5tYXQtaW5wdXQtZWxlbWVudHtjYXJldC1jb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb3JtLWZpZWxkLWludmFsaWQgLm1hdC1mb3JtLWZpZWxkLWluZml4OjphZnRlcntjb2xvcjojZjQ0MzM2fS5tYXQtbGlzdC1iYXNlIC5tYXQtbGlzdC1pdGVte2NvbG9yOiMyMTIxMjF9Lm1hdC1saXN0LWJhc2UgLm1hdC1saXN0LW9wdGlvbntjb2xvcjojMjEyMTIxfS5tYXQtbGlzdC1iYXNlIC5tYXQtc3ViaGVhZGVye2NvbG9yOiM2MTYxNjF9Lm1hdC1saXN0LWl0ZW0tZGlzYWJsZWR7YmFja2dyb3VuZC1jb2xvcjojZWVlfS5tYXQtbGlzdC1vcHRpb246aG92ZXIsLm1hdC1saXN0LW9wdGlvbjpmb2N1cywubWF0LW5hdi1saXN0IC5tYXQtbGlzdC1pdGVtOmhvdmVyLC5tYXQtbmF2LWxpc3QgLm1hdC1saXN0LWl0ZW06Zm9jdXMsLm1hdC1hY3Rpb24tbGlzdCAubWF0LWxpc3QtaXRlbTpob3ZlciwubWF0LWFjdGlvbi1saXN0IC5tYXQtbGlzdC1pdGVtOmZvY3Vze2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfS5tYXQtbGlzdC1zaW5nbGUtc2VsZWN0ZWQtb3B0aW9uLC5tYXQtbGlzdC1zaW5nbGUtc2VsZWN0ZWQtb3B0aW9uOmhvdmVyLC5tYXQtbGlzdC1zaW5nbGUtc2VsZWN0ZWQtb3B0aW9uOmZvY3Vze2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMTIpfS5tYXQtbWVudS1wYW5lbHtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1tZW51LXBhbmVsOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtbWVudS1pdGVte2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Y29sb3I6IzIxMjEyMX0ubWF0LW1lbnUtaXRlbVtkaXNhYmxlZF0sLm1hdC1tZW51LWl0ZW1bZGlzYWJsZWRdIC5tYXQtbWVudS1zdWJtZW51LWljb24sLm1hdC1tZW51LWl0ZW1bZGlzYWJsZWRdIC5tYXQtaWNvbi1uby1jb2xvcntjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1tZW51LWl0ZW0gLm1hdC1pY29uLW5vLWNvbG9yLC5tYXQtbWVudS1zdWJtZW51LWljb257Y29sb3I6cmdiYSgwLDAsMCwuNTQpfS5tYXQtbWVudS1pdGVtOmhvdmVyOm5vdChbZGlzYWJsZWRdKSwubWF0LW1lbnUtaXRlbS5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdChbZGlzYWJsZWRdKSwubWF0LW1lbnUtaXRlbS5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoW2Rpc2FibGVkXSksLm1hdC1tZW51LWl0ZW0taGlnaGxpZ2h0ZWQ6bm90KFtkaXNhYmxlZF0pe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfS5tYXQtcGFnaW5hdG9ye2JhY2tncm91bmQ6I2ZmZn0ubWF0LXBhZ2luYXRvciwubWF0LXBhZ2luYXRvci1wYWdlLXNpemUgLm1hdC1zZWxlY3QtdHJpZ2dlcntjb2xvcjojNjE2MTYxfS5tYXQtcGFnaW5hdG9yLWRlY3JlbWVudCwubWF0LXBhZ2luYXRvci1pbmNyZW1lbnR7Ym9yZGVyLXRvcDoycHggc29saWQgcmdiYSgwLDAsMCwuNTQpO2JvcmRlci1yaWdodDoycHggc29saWQgcmdiYSgwLDAsMCwuNTQpfS5tYXQtcGFnaW5hdG9yLWZpcnN0LC5tYXQtcGFnaW5hdG9yLWxhc3R7Ym9yZGVyLXRvcDoycHggc29saWQgcmdiYSgwLDAsMCwuNTQpfS5tYXQtaWNvbi1idXR0b25bZGlzYWJsZWRdIC5tYXQtcGFnaW5hdG9yLWRlY3JlbWVudCwubWF0LWljb24tYnV0dG9uW2Rpc2FibGVkXSAubWF0LXBhZ2luYXRvci1pbmNyZW1lbnQsLm1hdC1pY29uLWJ1dHRvbltkaXNhYmxlZF0gLm1hdC1wYWdpbmF0b3ItZmlyc3QsLm1hdC1pY29uLWJ1dHRvbltkaXNhYmxlZF0gLm1hdC1wYWdpbmF0b3ItbGFzdHtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcGFnaW5hdG9yLWNvbnRhaW5lcnttaW4taGVpZ2h0OjU2cHh9Lm1hdC1wcm9ncmVzcy1iYXItYmFja2dyb3VuZHtmaWxsOiNmZGRlYmZ9Lm1hdC1wcm9ncmVzcy1iYXItYnVmZmVye2JhY2tncm91bmQtY29sb3I6I2ZkZGViZn0ubWF0LXByb2dyZXNzLWJhci1maWxsOjphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LWFjY2VudCAubWF0LXByb2dyZXNzLWJhci1iYWNrZ3JvdW5ke2ZpbGw6I2ZmZTViZn0ubWF0LXByb2dyZXNzLWJhci5tYXQtYWNjZW50IC5tYXQtcHJvZ3Jlc3MtYmFyLWJ1ZmZlcntiYWNrZ3JvdW5kLWNvbG9yOiNmZmU1YmZ9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LWFjY2VudCAubWF0LXByb2dyZXNzLWJhci1maWxsOjphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LXdhcm4gLm1hdC1wcm9ncmVzcy1iYXItYmFja2dyb3VuZHtmaWxsOiNmY2QwY2R9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LXdhcm4gLm1hdC1wcm9ncmVzcy1iYXItYnVmZmVye2JhY2tncm91bmQtY29sb3I6I2ZjZDBjZH0ubWF0LXByb2dyZXNzLWJhci5tYXQtd2FybiAubWF0LXByb2dyZXNzLWJhci1maWxsOjphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1wcm9ncmVzcy1zcGlubmVyIGNpcmNsZSwubWF0LXNwaW5uZXIgY2lyY2xle3N0cm9rZTojZjU3YzAwfS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtYWNjZW50IGNpcmNsZSwubWF0LXNwaW5uZXIubWF0LWFjY2VudCBjaXJjbGV7c3Ryb2tlOiNmZjk4MDB9Lm1hdC1wcm9ncmVzcy1zcGlubmVyLm1hdC13YXJuIGNpcmNsZSwubWF0LXNwaW5uZXIubWF0LXdhcm4gY2lyY2xle3N0cm9rZTojZjQ0MzM2fS5tYXQtcmFkaW8tb3V0ZXItY2lyY2xle2JvcmRlci1jb2xvcjojNjE2MTYxfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1yYWRpby1jaGVja2VkIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xle2JvcmRlci1jb2xvcjojZjU3YzAwfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1wcmltYXJ5IC5tYXQtcmFkaW8taW5uZXItY2lyY2xlLC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1wcmltYXJ5IC5tYXQtcmFkaW8tcmlwcGxlIC5tYXQtcmlwcGxlLWVsZW1lbnQ6bm90KC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGUpLC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1yYWRpby1jaGVja2VkIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGUsLm1hdC1yYWRpby1idXR0b24ubWF0LXByaW1hcnk6YWN0aXZlIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGV7YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnQubWF0LXJhZGlvLWNoZWNrZWQgLm1hdC1yYWRpby1vdXRlci1jaXJjbGV7Ym9yZGVyLWNvbG9yOiNmZjk4MDB9Lm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudCAubWF0LXJhZGlvLWlubmVyLWNpcmNsZSwubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50IC5tYXQtcmFkaW8tcmlwcGxlIC5tYXQtcmlwcGxlLWVsZW1lbnQ6bm90KC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGUpLC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnQubWF0LXJhZGlvLWNoZWNrZWQgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSwubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50OmFjdGl2ZSAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxle2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2Fybi5tYXQtcmFkaW8tY2hlY2tlZCAubWF0LXJhZGlvLW91dGVyLWNpcmNsZXtib3JkZXItY29sb3I6I2Y0NDMzNn0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2FybiAubWF0LXJhZGlvLWlubmVyLWNpcmNsZSwubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2FybiAubWF0LXJhZGlvLXJpcHBsZSAubWF0LXJpcHBsZS1lbGVtZW50Om5vdCgubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlKSwubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2Fybi5tYXQtcmFkaW8tY2hlY2tlZCAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlLC5tYXQtcmFkaW8tYnV0dG9uLm1hdC13YXJuOmFjdGl2ZSAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxle2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcmFkaW8tZGlzYWJsZWQubWF0LXJhZGlvLWNoZWNrZWQgLm1hdC1yYWRpby1vdXRlci1jaXJjbGUsLm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xle2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkIC5tYXQtcmFkaW8tcmlwcGxlIC5tYXQtcmlwcGxlLWVsZW1lbnQsLm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkIC5tYXQtcmFkaW8taW5uZXItY2lyY2xle2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZCAubWF0LXJhZGlvLWxhYmVsLWNvbnRlbnR7Y29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcmFkaW8tYnV0dG9uIC5tYXQtcmlwcGxlLWVsZW1lbnR7YmFja2dyb3VuZC1jb2xvcjojMDAwfS5tYXQtc2VsZWN0LXZhbHVle2NvbG9yOiMyMTIxMjF9Lm1hdC1zZWxlY3QtcGxhY2Vob2xkZXJ7Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNDIpfS5tYXQtc2VsZWN0LWRpc2FibGVkIC5tYXQtc2VsZWN0LXZhbHVle2NvbG9yOiM3NTc1NzV9Lm1hdC1zZWxlY3QtYXJyb3d7Y29sb3I6IzYxNjE2MX0ubWF0LXNlbGVjdC1wYW5lbHtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1zZWxlY3QtcGFuZWw6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1zZWxlY3QtcGFuZWwgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkOm5vdCgubWF0LW9wdGlvbi1tdWx0aXBsZSl7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkLm1hdC1wcmltYXJ5IC5tYXQtc2VsZWN0LWFycm93e2NvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkLm1hdC1hY2NlbnQgLm1hdC1zZWxlY3QtYXJyb3d7Y29sb3I6I2ZmOTgwMH0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQubWF0LXdhcm4gLm1hdC1zZWxlY3QtYXJyb3d7Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQgLm1hdC1zZWxlY3QubWF0LXNlbGVjdC1pbnZhbGlkIC5tYXQtc2VsZWN0LWFycm93e2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkIC5tYXQtc2VsZWN0Lm1hdC1zZWxlY3QtZGlzYWJsZWQgLm1hdC1zZWxlY3QtYXJyb3d7Y29sb3I6Izc1NzU3NX0ubWF0LWRyYXdlci1jb250YWluZXJ7YmFja2dyb3VuZC1jb2xvcjojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1kcmF3ZXJ7YmFja2dyb3VuZC1jb2xvcjojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1kcmF3ZXIubWF0LWRyYXdlci1wdXNoe2JhY2tncm91bmQtY29sb3I6I2ZmZn0ubWF0LWRyYXdlcjpub3QoLm1hdC1kcmF3ZXItc2lkZSl7Ym94LXNoYWRvdzowcHggOHB4IDEwcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE2cHggMjRweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNnB4IDMwcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1kcmF3ZXItc2lkZXtib3JkZXItcmlnaHQ6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKX0ubWF0LWRyYXdlci1zaWRlLm1hdC1kcmF3ZXItZW5ke2JvcmRlci1sZWZ0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMik7Ym9yZGVyLXJpZ2h0Om5vbmV9W2Rpcj1ydGxdIC5tYXQtZHJhd2VyLXNpZGV7Ym9yZGVyLWxlZnQ6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKTtib3JkZXItcmlnaHQ6bm9uZX1bZGlyPXJ0bF0gLm1hdC1kcmF3ZXItc2lkZS5tYXQtZHJhd2VyLWVuZHtib3JkZXItbGVmdDpub25lO2JvcmRlci1yaWdodDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtZHJhd2VyLWJhY2tkcm9wLm1hdC1kcmF3ZXItc2hvd257YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC42KX0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtY2hlY2tlZCAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYntiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1zbGlkZS10b2dnbGUubWF0LWNoZWNrZWQgLm1hdC1zbGlkZS10b2dnbGUtYmFye2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjU0KX0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtY2hlY2tlZCAubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtcHJpbWFyeS5tYXQtY2hlY2tlZCAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYntiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1zbGlkZS10b2dnbGUubWF0LXByaW1hcnkubWF0LWNoZWNrZWQgLm1hdC1zbGlkZS10b2dnbGUtYmFye2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDUsMTI0LDAsLjU0KX0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtcHJpbWFyeS5tYXQtY2hlY2tlZCAubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtd2Fybi5tYXQtY2hlY2tlZCAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYntiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1zbGlkZS10b2dnbGUubWF0LXdhcm4ubWF0LWNoZWNrZWQgLm1hdC1zbGlkZS10b2dnbGUtYmFye2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDQsNjcsNTQsLjU0KX0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtd2Fybi5tYXQtY2hlY2tlZCAubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXNsaWRlLXRvZ2dsZTpub3QoLm1hdC1jaGVja2VkKSAubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQtY29sb3I6IzAwMH0ubWF0LXNsaWRlLXRvZ2dsZS10aHVtYntib3gtc2hhZG93OjBweCAycHggMXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxcHggMXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggM3B4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpO2JhY2tncm91bmQtY29sb3I6I2ZhZmFmYX0ubWF0LXNsaWRlLXRvZ2dsZS1iYXJ7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjI2KX0ubWF0LXByaW1hcnkgLm1hdC1zbGlkZXItdHJhY2stZmlsbCwubWF0LXByaW1hcnkgLm1hdC1zbGlkZXItdGh1bWIsLm1hdC1wcmltYXJ5IC5tYXQtc2xpZGVyLXRodW1iLWxhYmVse2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXByaW1hcnkgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dHtjb2xvcjojZmZmfS5tYXQtcHJpbWFyeSAubWF0LXNsaWRlci1mb2N1cy1yaW5ne2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDUsMTI0LDAsLjIpfS5tYXQtYWNjZW50IC5tYXQtc2xpZGVyLXRyYWNrLWZpbGwsLm1hdC1hY2NlbnQgLm1hdC1zbGlkZXItdGh1bWIsLm1hdC1hY2NlbnQgLm1hdC1zbGlkZXItdGh1bWItbGFiZWx7YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtYWNjZW50IC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHR7Y29sb3I6I2ZmZn0ubWF0LWFjY2VudCAubWF0LXNsaWRlci1mb2N1cy1yaW5ne2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjIpfS5tYXQtd2FybiAubWF0LXNsaWRlci10cmFjay1maWxsLC5tYXQtd2FybiAubWF0LXNsaWRlci10aHVtYiwubWF0LXdhcm4gLm1hdC1zbGlkZXItdGh1bWItbGFiZWx7YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtd2FybiAubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0e2NvbG9yOiNmZmZ9Lm1hdC13YXJuIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmd7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NCw2Nyw1NCwuMil9Lm1hdC1zbGlkZXI6aG92ZXIgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZCwubWF0LXNsaWRlci5jZGstZm9jdXNlZCAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5ke2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtc2xpZGVyLWRpc2FibGVkIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmQsLm1hdC1zbGlkZXItZGlzYWJsZWQgLm1hdC1zbGlkZXItdHJhY2stZmlsbCwubWF0LXNsaWRlci1kaXNhYmxlZCAubWF0LXNsaWRlci10aHVtYntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjI2KX0ubWF0LXNsaWRlci1kaXNhYmxlZDpob3ZlciAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5ke2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtc2xpZGVyLW1pbi12YWx1ZSAubWF0LXNsaWRlci1mb2N1cy1yaW5ne2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtc2xpZGVyLW1pbi12YWx1ZS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcgLm1hdC1zbGlkZXItdGh1bWIsLm1hdC1zbGlkZXItbWluLXZhbHVlLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZyAubWF0LXNsaWRlci10aHVtYi1sYWJlbHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjg3KX0ubWF0LXNsaWRlci1taW4tdmFsdWUubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nLmNkay1mb2N1c2VkIC5tYXQtc2xpZGVyLXRodW1iLC5tYXQtc2xpZGVyLW1pbi12YWx1ZS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcuY2RrLWZvY3VzZWQgLm1hdC1zbGlkZXItdGh1bWItbGFiZWx7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1zbGlkZXItbWluLXZhbHVlOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKSAubWF0LXNsaWRlci10aHVtYntib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMjYpO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9Lm1hdC1zbGlkZXItbWluLXZhbHVlOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKTpob3ZlciAubWF0LXNsaWRlci10aHVtYiwubWF0LXNsaWRlci1taW4tdmFsdWU6bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpLmNkay1mb2N1c2VkIC5tYXQtc2xpZGVyLXRodW1ie2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1zbGlkZXItbWluLXZhbHVlOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKTpob3Zlci5tYXQtc2xpZGVyLWRpc2FibGVkIC5tYXQtc2xpZGVyLXRodW1iLC5tYXQtc2xpZGVyLW1pbi12YWx1ZTpub3QoLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZykuY2RrLWZvY3VzZWQubWF0LXNsaWRlci1kaXNhYmxlZCAubWF0LXNsaWRlci10aHVtYntib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtc2xpZGVyLWhhcy10aWNrcyAubWF0LXNsaWRlci13cmFwcGVyOjphZnRlcntib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuNyl9Lm1hdC1zbGlkZXItaG9yaXpvbnRhbCAubWF0LXNsaWRlci10aWNrc3tiYWNrZ3JvdW5kLWltYWdlOnJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMCwgMCwgMCwgMC43KSwgcmdiYSgwLCAwLCAwLCAwLjcpIDJweCwgdHJhbnNwYXJlbnQgMCwgdHJhbnNwYXJlbnQpO2JhY2tncm91bmQtaW1hZ2U6LW1vei1yZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KDAuMDAwMWRlZywgcmdiYSgwLCAwLCAwLCAwLjcpLCByZ2JhKDAsIDAsIDAsIDAuNykgMnB4LCB0cmFuc3BhcmVudCAwLCB0cmFuc3BhcmVudCl9Lm1hdC1zbGlkZXItdmVydGljYWwgLm1hdC1zbGlkZXItdGlja3N7YmFja2dyb3VuZC1pbWFnZTpyZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgcmdiYSgwLCAwLCAwLCAwLjcpLCByZ2JhKDAsIDAsIDAsIDAuNykgMnB4LCB0cmFuc3BhcmVudCAwLCB0cmFuc3BhcmVudCl9Lm1hdC1zdGVwLWhlYWRlci5jZGsta2V5Ym9hcmQtZm9jdXNlZCwubWF0LXN0ZXAtaGVhZGVyLmNkay1wcm9ncmFtLWZvY3VzZWQsLm1hdC1zdGVwLWhlYWRlcjpob3Zlcjpub3QoW2FyaWEtZGlzYWJsZWRdKSwubWF0LXN0ZXAtaGVhZGVyOmhvdmVyW2FyaWEtZGlzYWJsZWQ9ZmFsc2Vde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMDQpfS5tYXQtc3RlcC1oZWFkZXI6aG92ZXJbYXJpYS1kaXNhYmxlZD10cnVlXXtjdXJzb3I6ZGVmYXVsdH1AbWVkaWEoaG92ZXI6IG5vbmUpey5tYXQtc3RlcC1oZWFkZXI6aG92ZXJ7YmFja2dyb3VuZDpub25lfX0ubWF0LXN0ZXAtaGVhZGVyIC5tYXQtc3RlcC1sYWJlbCwubWF0LXN0ZXAtaGVhZGVyIC5tYXQtc3RlcC1vcHRpb25hbHtjb2xvcjojNjE2MTYxfS5tYXQtc3RlcC1oZWFkZXIgLm1hdC1zdGVwLWljb257YmFja2dyb3VuZC1jb2xvcjojNjE2MTYxO2NvbG9yOiNmZmZ9Lm1hdC1zdGVwLWhlYWRlciAubWF0LXN0ZXAtaWNvbi1zZWxlY3RlZCwubWF0LXN0ZXAtaGVhZGVyIC5tYXQtc3RlcC1pY29uLXN0YXRlLWRvbmUsLm1hdC1zdGVwLWhlYWRlciAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1lZGl0e2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMDtjb2xvcjojZmZmfS5tYXQtc3RlcC1oZWFkZXIubWF0LWFjY2VudCAubWF0LXN0ZXAtaWNvbntjb2xvcjojZmZmfS5tYXQtc3RlcC1oZWFkZXIubWF0LWFjY2VudCAubWF0LXN0ZXAtaWNvbi1zZWxlY3RlZCwubWF0LXN0ZXAtaGVhZGVyLm1hdC1hY2NlbnQgLm1hdC1zdGVwLWljb24tc3RhdGUtZG9uZSwubWF0LXN0ZXAtaGVhZGVyLm1hdC1hY2NlbnQgLm1hdC1zdGVwLWljb24tc3RhdGUtZWRpdHtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDA7Y29sb3I6I2ZmZn0ubWF0LXN0ZXAtaGVhZGVyLm1hdC13YXJuIC5tYXQtc3RlcC1pY29ue2NvbG9yOiNmZmZ9Lm1hdC1zdGVwLWhlYWRlci5tYXQtd2FybiAubWF0LXN0ZXAtaWNvbi1zZWxlY3RlZCwubWF0LXN0ZXAtaGVhZGVyLm1hdC13YXJuIC5tYXQtc3RlcC1pY29uLXN0YXRlLWRvbmUsLm1hdC1zdGVwLWhlYWRlci5tYXQtd2FybiAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1lZGl0e2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNjtjb2xvcjojZmZmfS5tYXQtc3RlcC1oZWFkZXIgLm1hdC1zdGVwLWljb24tc3RhdGUtZXJyb3J7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtjb2xvcjojZjQ0MzM2fS5tYXQtc3RlcC1oZWFkZXIgLm1hdC1zdGVwLWxhYmVsLm1hdC1zdGVwLWxhYmVsLWFjdGl2ZXtjb2xvcjojMjEyMTIxfS5tYXQtc3RlcC1oZWFkZXIgLm1hdC1zdGVwLWxhYmVsLm1hdC1zdGVwLWxhYmVsLWVycm9ye2NvbG9yOiNmNDQzMzZ9Lm1hdC1zdGVwcGVyLWhvcml6b250YWwsLm1hdC1zdGVwcGVyLXZlcnRpY2Fse2JhY2tncm91bmQtY29sb3I6I2ZmZn0ubWF0LXN0ZXBwZXItdmVydGljYWwtbGluZTo6YmVmb3Jle2JvcmRlci1sZWZ0LWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXI6OmJlZm9yZSwubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXI6OmFmdGVyLC5tYXQtc3RlcHBlci1ob3Jpem9udGFsLWxpbmV7Ym9yZGVyLXRvcC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVye2hlaWdodDo3MnB4fS5tYXQtc3RlcHBlci1sYWJlbC1wb3NpdGlvbi1ib3R0b20gLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyLC5tYXQtdmVydGljYWwtc3RlcHBlci1oZWFkZXJ7cGFkZGluZzoyNHB4IDI0cHh9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsLWxpbmU6OmJlZm9yZXt0b3A6LTE2cHg7Ym90dG9tOi0xNnB4fS5tYXQtc3RlcHBlci1sYWJlbC1wb3NpdGlvbi1ib3R0b20gLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyOjphZnRlciwubWF0LXN0ZXBwZXItbGFiZWwtcG9zaXRpb24tYm90dG9tIC5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcjo6YmVmb3Jle3RvcDozNnB4fS5tYXQtc3RlcHBlci1sYWJlbC1wb3NpdGlvbi1ib3R0b20gLm1hdC1zdGVwcGVyLWhvcml6b250YWwtbGluZXt0b3A6MzZweH0ubWF0LXNvcnQtaGVhZGVyLWFycm93e2NvbG9yOiM2MTYxNjF9Lm1hdC10YWItbmF2LWJhciwubWF0LXRhYi1oZWFkZXJ7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgcmdiYSgwLDAsMCwuMTIpfS5tYXQtdGFiLWdyb3VwLWludmVydGVkLWhlYWRlciAubWF0LXRhYi1uYXYtYmFyLC5tYXQtdGFiLWdyb3VwLWludmVydGVkLWhlYWRlciAubWF0LXRhYi1oZWFkZXJ7Ym9yZGVyLXRvcDoxcHggc29saWQgcmdiYSgwLDAsMCwuMTIpO2JvcmRlci1ib3R0b206bm9uZX0ubWF0LXRhYi1sYWJlbCwubWF0LXRhYi1saW5re2NvbG9yOiMyMTIxMjF9Lm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZCwubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWR7Y29sb3I6Izc1NzU3NX0ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9ue2JvcmRlci1jb2xvcjojMjEyMTIxfS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb257Ym9yZGVyLWNvbG9yOiM3NTc1NzV9Lm1hdC10YWItZ3JvdXBbY2xhc3MqPW1hdC1iYWNrZ3JvdW5kLV0gLm1hdC10YWItaGVhZGVyLC5tYXQtdGFiLW5hdi1iYXJbY2xhc3MqPW1hdC1iYWNrZ3JvdW5kLV17Ym9yZGVyLWJvdHRvbTpub25lO2JvcmRlci10b3A6bm9uZX0ubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeSAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5IC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeSAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItZ3JvdXAubWF0LXByaW1hcnkgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeSAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnkgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnkgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnkgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNjcsMzgsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5IC5tYXQtaW5rLWJhciwubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5IC5tYXQtaW5rLWJhcntiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC10YWItZ3JvdXAubWF0LXByaW1hcnkubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1oZWFkZXIgLm1hdC1pbmstYmFyLC5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5Lm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC1pbmstYmFyLC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnkubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1oZWFkZXIgLm1hdC1pbmstYmFyLC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnkubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LWluay1iYXJ7YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnQgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50IC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50IC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50IC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudCAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudCAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50IC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnQgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyMjQsMTc4LC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50IC5tYXQtaW5rLWJhciwubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnQgLm1hdC1pbmstYmFye2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50Lm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1oZWFkZXIgLm1hdC1pbmstYmFyLC5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnQubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtaW5rLWJhciwubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnQubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWhlYWRlciAubWF0LWluay1iYXIsLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50Lm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LWluay1iYXJ7YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC13YXJuIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItZ3JvdXAubWF0LXdhcm4gLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLWdyb3VwLm1hdC13YXJuIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1ncm91cC5tYXQtd2FybiAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItbmF2LWJhci5tYXQtd2FybiAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItbmF2LWJhci5tYXQtd2FybiAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItbmF2LWJhci5tYXQtd2FybiAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDIwNSwyMTAsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC13YXJuIC5tYXQtaW5rLWJhciwubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuIC5tYXQtaW5rLWJhcntiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC10YWItZ3JvdXAubWF0LXdhcm4ubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1oZWFkZXIgLm1hdC1pbmstYmFyLC5tYXQtdGFiLWdyb3VwLm1hdC13YXJuLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC1pbmstYmFyLC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm4ubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1oZWFkZXIgLm1hdC1pbmstYmFyLC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm4ubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LWluay1iYXJ7YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnkgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5IC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5IC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5IC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeSAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeSAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5IC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnkgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNjcsMzgsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItbGluay1jb250YWluZXIsLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbiwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb257YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWxhYmVsLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC10YWItbGluaywubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWxhYmVsLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LXRhYi1saW5re2NvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZCwubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZCwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWQsLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZHtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC40KX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24gLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiwubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtZm9jdXMtaW5kaWNhdG9yOjpiZWZvcmUsLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1oZWFkZXIgLm1hdC1mb2N1cy1pbmRpY2F0b3I6OmJlZm9yZSwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtZm9jdXMtaW5kaWNhdG9yOjpiZWZvcmUsLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWhlYWRlciAubWF0LWZvY3VzLWluZGljYXRvcjo6YmVmb3Jle2JvcmRlci1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbntib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1oZWFkZXIgLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtcmlwcGxlLWVsZW1lbnQsLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbiAubWF0LXJpcHBsZS1lbGVtZW50LC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1oZWFkZXIgLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24gLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEyKX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnQgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnQgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudCAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50IC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50IC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnQgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50IC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudCAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDIyNCwxNzgsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1oZWFkZXIsLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbiwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1oZWFkZXIsLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItbGluay1jb250YWluZXIsLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb257YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItbGFiZWwsLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtdGFiLWxpbmssLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWxhYmVsLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtdGFiLWxpbmt7Y29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWQsLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZCwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZCwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWR7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbiAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LWZvY3VzLWluZGljYXRvcjo6YmVmb3JlLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1oZWFkZXIgLm1hdC1mb2N1cy1pbmRpY2F0b3I6OmJlZm9yZSwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbiAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtZm9jdXMtaW5kaWNhdG9yOjpiZWZvcmUsLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItaGVhZGVyIC5tYXQtZm9jdXMtaW5kaWNhdG9yOjpiZWZvcmV7Ym9yZGVyLWNvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb257Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1oZWFkZXIgLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24gLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1oZWFkZXIgLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LXJpcHBsZS1lbGVtZW50LC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uIC5tYXQtcmlwcGxlLWVsZW1lbnR7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xMil9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2FybiAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2FybiAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDIwNSwyMTAsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItbGluay1jb250YWluZXIsLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbiwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb257YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWxhYmVsLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC10YWItbGluaywubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWxhYmVsLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LXRhYi1saW5re2NvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZCwubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZCwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWQsLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZHtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC40KX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24gLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiwubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtZm9jdXMtaW5kaWNhdG9yOjpiZWZvcmUsLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1oZWFkZXIgLm1hdC1mb2N1cy1pbmRpY2F0b3I6OmJlZm9yZSwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtZm9jdXMtaW5kaWNhdG9yOjpiZWZvcmUsLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWhlYWRlciAubWF0LWZvY3VzLWluZGljYXRvcjo6YmVmb3Jle2JvcmRlci1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbntib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1oZWFkZXIgLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtcmlwcGxlLWVsZW1lbnQsLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbiAubWF0LXJpcHBsZS1lbGVtZW50LC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1oZWFkZXIgLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24gLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEyKX0ubWF0LXRvb2xiYXJ7YmFja2dyb3VuZDojZjU3YzAwO2NvbG9yOiMyMTIxMjF9Lm1hdC10b29sYmFyLm1hdC1wcmltYXJ5e2JhY2tncm91bmQ6I2Y1N2MwMDtjb2xvcjojZmZmfS5tYXQtdG9vbGJhci5tYXQtYWNjZW50e2JhY2tncm91bmQ6I2ZmOTgwMDtjb2xvcjojZmZmfS5tYXQtdG9vbGJhci5tYXQtd2FybntiYWNrZ3JvdW5kOiNmNDQzMzY7Y29sb3I6I2ZmZn0ubWF0LXRvb2xiYXIgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZSwubWF0LXRvb2xiYXIgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZSwubWF0LXRvb2xiYXIgLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1yaXBwbGV7YmFja2dyb3VuZC1jb2xvcjpjdXJyZW50Q29sb3J9Lm1hdC10b29sYmFyIC5tYXQtZm9ybS1maWVsZC1sYWJlbCwubWF0LXRvb2xiYXIgLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1sYWJlbCwubWF0LXRvb2xiYXIgLm1hdC1zZWxlY3QtdmFsdWUsLm1hdC10b29sYmFyIC5tYXQtc2VsZWN0LWFycm93LC5tYXQtdG9vbGJhciAubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQgLm1hdC1zZWxlY3QtYXJyb3d7Y29sb3I6aW5oZXJpdH0ubWF0LXRvb2xiYXIgLm1hdC1pbnB1dC1lbGVtZW50e2NhcmV0LWNvbG9yOmN1cnJlbnRDb2xvcn0ubWF0LXRvb2xiYXItbXVsdGlwbGUtcm93c3ttaW4taGVpZ2h0OjY0cHh9Lm1hdC10b29sYmFyLXJvdywubWF0LXRvb2xiYXItc2luZ2xlLXJvd3toZWlnaHQ6NjRweH1AbWVkaWEobWF4LXdpZHRoOiA1OTlweCl7Lm1hdC10b29sYmFyLW11bHRpcGxlLXJvd3N7bWluLWhlaWdodDo1NnB4fS5tYXQtdG9vbGJhci1yb3csLm1hdC10b29sYmFyLXNpbmdsZS1yb3d7aGVpZ2h0OjU2cHh9fS5tYXQtdG9vbHRpcHtiYWNrZ3JvdW5kOnJnYmEoOTcsOTcsOTcsLjkpfS5tYXQtdHJlZXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC10cmVlLW5vZGUsLm1hdC1uZXN0ZWQtdHJlZS1ub2Rle2NvbG9yOiMyMTIxMjF9Lm1hdC10cmVlLW5vZGV7bWluLWhlaWdodDo0OHB4fS5tYXQtc25hY2stYmFyLWNvbnRhaW5lcntjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KTtiYWNrZ3JvdW5kOiMzMjMyMzI7Ym94LXNoYWRvdzowcHggM3B4IDVweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNnB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbntjb2xvcjojZmY5ODAwfWJvZHl7b3ZlcmZsb3c6aGlkZGVufS5jZGstb3ZlcmxheS1jb250YWluZXJ7Y29udGFpbjpzdHJpY3R9YTpub3QoLm1hdC1idXR0b24sLm1hdC1pY29uLWJ1dHRvbil7Y29sb3I6IzE5NzZkMn1hOm5vdCgubWF0LWJ1dHRvbiwubWF0LWljb24tYnV0dG9uKTp2aXNpdGVke2NvbG9yOiM3YjFmYTJ9Ym9keS5kYXJrLW1vZGV7YmFja2dyb3VuZC1jb2xvcjojMzAzMDMwfWJvZHkuZGFyay1tb2RlIGE6bm90KC5tYXQtYnV0dG9uLC5tYXQtaWNvbi1idXR0b24pe2NvbG9yOiM0MmE1ZjV9Ym9keS5kYXJrLW1vZGUgYTpub3QoLm1hdC1idXR0b24sLm1hdC1pY29uLWJ1dHRvbik6dmlzaXRlZHtjb2xvcjojYmE2OGM4fWJvZHkuZGFyay1tb2RlIC5tYXQtcmlwcGxlLWVsZW1lbnR7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX1ib2R5LmRhcmstbW9kZSAubWF0LW9wdGlvbntjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtb3B0aW9uOmhvdmVyOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC1vcHRpb246Zm9jdXM6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjA0KX1ib2R5LmRhcmstbW9kZSAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWQ6bm90KC5tYXQtb3B0aW9uLW11bHRpcGxlKTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2JhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuMDQpfWJvZHkuZGFyay1tb2RlIC5tYXQtb3B0aW9uLm1hdC1hY3RpdmV7YmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC4wNCk7Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LW9wdGlvbi5tYXQtb3B0aW9uLWRpc2FibGVke2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjUpfWJvZHkuZGFyay1tb2RlIC5tYXQtcHJpbWFyeSAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWQ6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtjb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtYWNjZW50IC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZDpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2NvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC13YXJuIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZDpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2NvbG9yOiNmNDQzMzZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1vcHRncm91cC1sYWJlbHtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX1ib2R5LmRhcmstbW9kZSAubWF0LW9wdGdyb3VwLWRpc2FibGVkIC5tYXQtb3B0Z3JvdXAtbGFiZWx7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSl9Ym9keS5kYXJrLW1vZGUgLm1hdC1wc2V1ZG8tY2hlY2tib3h7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9Ym9keS5kYXJrLW1vZGUgLm1hdC1wc2V1ZG8tY2hlY2tib3g6OmFmdGVye2NvbG9yOiMzMDMwMzB9Ym9keS5kYXJrLW1vZGUgLm1hdC1wc2V1ZG8tY2hlY2tib3gtZGlzYWJsZWR7Y29sb3I6IzY4Njg2OH1ib2R5LmRhcmstbW9kZSAubWF0LXByaW1hcnkgLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZCxib2R5LmRhcmstbW9kZSAubWF0LXByaW1hcnkgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZXtiYWNrZ3JvdW5kOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZCxib2R5LmRhcmstbW9kZSAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlLGJvZHkuZGFyay1tb2RlIC5tYXQtYWNjZW50IC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1hY2NlbnQgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZXtiYWNrZ3JvdW5kOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC13YXJuIC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWQsYm9keS5kYXJrLW1vZGUgLm1hdC13YXJuIC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGV7YmFja2dyb3VuZDojZjQ0MzM2fWJvZHkuZGFyay1tb2RlIC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWQubWF0LXBzZXVkby1jaGVja2JveC1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlLm1hdC1wc2V1ZG8tY2hlY2tib3gtZGlzYWJsZWR7YmFja2dyb3VuZDojNjg2ODY4fWJvZHkuZGFyay1tb2RlIC5tYXQtYXBwLWJhY2tncm91bmQsYm9keS5kYXJrLW1vZGUubWF0LWFwcC1iYWNrZ3JvdW5ke2JhY2tncm91bmQtY29sb3I6IzMwMzAzMDtjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtZWxldmF0aW9uLXowe2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LWVsZXZhdGlvbi16MXtib3gtc2hhZG93OjBweCAycHggMXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxcHggMXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggM3B4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtZWxldmF0aW9uLXoye2JveC1zaGFkb3c6MHB4IDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDJweCAycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1lbGV2YXRpb24tejN7Ym94LXNoYWRvdzowcHggM3B4IDNweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggM3B4IDRweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDhweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LWVsZXZhdGlvbi16NHtib3gtc2hhZG93OjBweCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA0cHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LWVsZXZhdGlvbi16NXtib3gtc2hhZG93OjBweCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA1cHggOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTRweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LWVsZXZhdGlvbi16Nntib3gtc2hhZG93OjBweCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA2cHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDE4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1lbGV2YXRpb24tejd7Ym94LXNoYWRvdzowcHggNHB4IDVweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggN3B4IDEwcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDJweCAxNnB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtZWxldmF0aW9uLXo4e2JveC1zaGFkb3c6MHB4IDVweCA1cHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDhweCAxMHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAzcHggMTRweCAycHggcmdiYSgwLCAwLCAwLCAwLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LWVsZXZhdGlvbi16OXtib3gtc2hhZG93OjBweCA1cHggNnB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA5cHggMTJweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggM3B4IDE2cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1lbGV2YXRpb24tejEwe2JveC1zaGFkb3c6MHB4IDZweCA2cHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDEwcHggMTRweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNHB4IDE4cHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1lbGV2YXRpb24tejExe2JveC1zaGFkb3c6MHB4IDZweCA3cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDExcHggMTVweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNHB4IDIwcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1lbGV2YXRpb24tejEye2JveC1zaGFkb3c6MHB4IDdweCA4cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDEycHggMTdweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNXB4IDIycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1lbGV2YXRpb24tejEze2JveC1zaGFkb3c6MHB4IDdweCA4cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDEzcHggMTlweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNXB4IDI0cHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1lbGV2YXRpb24tejE0e2JveC1zaGFkb3c6MHB4IDdweCA5cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE0cHggMjFweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNXB4IDI2cHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1lbGV2YXRpb24tejE1e2JveC1zaGFkb3c6MHB4IDhweCA5cHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE1cHggMjJweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNnB4IDI4cHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1lbGV2YXRpb24tejE2e2JveC1zaGFkb3c6MHB4IDhweCAxMHB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxNnB4IDI0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAzMHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtZWxldmF0aW9uLXoxN3tib3gtc2hhZG93OjBweCA4cHggMTFweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTdweCAyNnB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMzJweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LWVsZXZhdGlvbi16MTh7Ym94LXNoYWRvdzowcHggOXB4IDExcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE4cHggMjhweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggN3B4IDM0cHggNnB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1lbGV2YXRpb24tejE5e2JveC1zaGFkb3c6MHB4IDlweCAxMnB4IC02cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxOXB4IDI5cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDdweCAzNnB4IDZweCByZ2JhKDAsIDAsIDAsIDAuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtZWxldmF0aW9uLXoyMHtib3gtc2hhZG93OjBweCAxMHB4IDEzcHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDIwcHggMzFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOHB4IDM4cHggN3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1lbGV2YXRpb24tejIxe2JveC1zaGFkb3c6MHB4IDEwcHggMTNweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjFweCAzM3B4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA4cHggNDBweCA3cHggcmdiYSgwLCAwLCAwLCAwLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LWVsZXZhdGlvbi16MjJ7Ym94LXNoYWRvdzowcHggMTBweCAxNHB4IC02cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAyMnB4IDM1cHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDhweCA0MnB4IDdweCByZ2JhKDAsIDAsIDAsIDAuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtZWxldmF0aW9uLXoyM3tib3gtc2hhZG93OjBweCAxMXB4IDE0cHggLTdweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDIzcHggMzZweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOXB4IDQ0cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1lbGV2YXRpb24tejI0e2JveC1zaGFkb3c6MHB4IDExcHggMTVweCAtN3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjRweCAzOHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA5cHggNDZweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXRoZW1lLWxvYWRlZC1tYXJrZXJ7ZGlzcGxheTpub25lfWJvZHkuZGFyay1tb2RlIC5tYXQtYXV0b2NvbXBsZXRlLXBhbmVse2JhY2tncm91bmQ6IzQyNDI0Mjtjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZDpub3QoLm1hdC1hY3RpdmUpOm5vdCg6aG92ZXIpe2JhY2tncm91bmQ6IzQyNDI0Mn1ib2R5LmRhcmstbW9kZSAubWF0LWF1dG9jb21wbGV0ZS1wYW5lbCAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWQ6bm90KC5tYXQtYWN0aXZlKTpub3QoOmhvdmVyKTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1iYWRnZS1jb250ZW50e2NvbG9yOiNmZmY7YmFja2dyb3VuZDojZWY2YzAwfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgYm9keS5kYXJrLW1vZGUgLm1hdC1iYWRnZS1jb250ZW50e291dGxpbmU6c29saWQgMXB4O2JvcmRlci1yYWRpdXM6MH1ib2R5LmRhcmstbW9kZSAubWF0LWJhZGdlLWFjY2VudCAubWF0LWJhZGdlLWNvbnRlbnR7YmFja2dyb3VuZDojZWY2YzAwO2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1iYWRnZS13YXJuIC5tYXQtYmFkZ2UtY29udGVudHtjb2xvcjojZmZmO2JhY2tncm91bmQ6I2Y0NDMzNn1ib2R5LmRhcmstbW9kZSAubWF0LWJhZGdlLWRpc2FibGVkIC5tYXQtYmFkZ2UtY29udGVudHtiYWNrZ3JvdW5kOiM2ZTZlNmU7Y29sb3I6IzYxNjE2MX1ib2R5LmRhcmstbW9kZSAubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJ7Ym94LXNoYWRvdzowcHggOHB4IDEwcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE2cHggMjRweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNnB4IDMwcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMik7YmFja2dyb3VuZDojNDI0MjQyO2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1idXR0b24sYm9keS5kYXJrLW1vZGUgLm1hdC1pY29uLWJ1dHRvbixib2R5LmRhcmstbW9kZSAubWF0LXN0cm9rZWQtYnV0dG9ue2NvbG9yOmluaGVyaXQ7YmFja2dyb3VuZDp0cmFuc3BhcmVudH1ib2R5LmRhcmstbW9kZSAubWF0LWJ1dHRvbi5tYXQtcHJpbWFyeSxib2R5LmRhcmstbW9kZSAubWF0LWljb24tYnV0dG9uLm1hdC1wcmltYXJ5LGJvZHkuZGFyay1tb2RlIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXByaW1hcnl7Y29sb3I6I2VmNmMwMH1ib2R5LmRhcmstbW9kZSAubWF0LWJ1dHRvbi5tYXQtYWNjZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtaWNvbi1idXR0b24ubWF0LWFjY2VudCxib2R5LmRhcmstbW9kZSAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1hY2NlbnR7Y29sb3I6I2VmNmMwMH1ib2R5LmRhcmstbW9kZSAubWF0LWJ1dHRvbi5tYXQtd2Fybixib2R5LmRhcmstbW9kZSAubWF0LWljb24tYnV0dG9uLm1hdC13YXJuLGJvZHkuZGFyay1tb2RlIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXdhcm57Y29sb3I6I2Y0NDMzNn1ib2R5LmRhcmstbW9kZSAubWF0LWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LWljb24tYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1pY29uLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1pY29uLWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtaWNvbi1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWR7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMyl9Ym9keS5kYXJrLW1vZGUgLm1hdC1idXR0b24ubWF0LXByaW1hcnkgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSxib2R5LmRhcmstbW9kZSAubWF0LWljb24tYnV0dG9uLm1hdC1wcmltYXJ5IC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksYm9keS5kYXJrLW1vZGUgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtcHJpbWFyeSAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e2JhY2tncm91bmQtY29sb3I6I2VmNmMwMH1ib2R5LmRhcmstbW9kZSAubWF0LWJ1dHRvbi5tYXQtYWNjZW50IC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksYm9keS5kYXJrLW1vZGUgLm1hdC1pY29uLWJ1dHRvbi5tYXQtYWNjZW50IC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksYm9keS5kYXJrLW1vZGUgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYWNjZW50IC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXl7YmFja2dyb3VuZC1jb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtYnV0dG9uLm1hdC13YXJuIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksYm9keS5kYXJrLW1vZGUgLm1hdC1pY29uLWJ1dHRvbi5tYXQtd2FybiAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LGJvZHkuZGFyay1tb2RlIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXdhcm4gLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LGJvZHkuZGFyay1tb2RlIC5tYXQtaWNvbi1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LGJvZHkuZGFyay1tb2RlIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9Ym9keS5kYXJrLW1vZGUgLm1hdC1idXR0b24gLm1hdC1yaXBwbGUtZWxlbWVudCxib2R5LmRhcmstbW9kZSAubWF0LWljb24tYnV0dG9uIC5tYXQtcmlwcGxlLWVsZW1lbnQsYm9keS5kYXJrLW1vZGUgLm1hdC1zdHJva2VkLWJ1dHRvbiAubWF0LXJpcHBsZS1lbGVtZW50e29wYWNpdHk6LjE7YmFja2dyb3VuZC1jb2xvcjpjdXJyZW50Q29sb3J9Ym9keS5kYXJrLW1vZGUgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXtiYWNrZ3JvdW5kOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1zdHJva2VkLWJ1dHRvbjpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpe2JvcmRlci1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1mbGF0LWJ1dHRvbixib2R5LmRhcmstbW9kZSAubWF0LXJhaXNlZC1idXR0b24sYm9keS5kYXJrLW1vZGUgLm1hdC1mYWIsYm9keS5kYXJrLW1vZGUgLm1hdC1taW5pLWZhYntjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6IzQyNDI0Mn1ib2R5LmRhcmstbW9kZSAubWF0LWZsYXQtYnV0dG9uLm1hdC1wcmltYXJ5LGJvZHkuZGFyay1tb2RlIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeSxib2R5LmRhcmstbW9kZSAubWF0LWZhYi5tYXQtcHJpbWFyeSxib2R5LmRhcmstbW9kZSAubWF0LW1pbmktZmFiLm1hdC1wcmltYXJ5e2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYWNjZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtZmFiLm1hdC1hY2NlbnQsYm9keS5kYXJrLW1vZGUgLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50e2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtd2Fybixib2R5LmRhcmstbW9kZSAubWF0LXJhaXNlZC1idXR0b24ubWF0LXdhcm4sYm9keS5kYXJrLW1vZGUgLm1hdC1mYWIubWF0LXdhcm4sYm9keS5kYXJrLW1vZGUgLm1hdC1taW5pLWZhYi5tYXQtd2Fybntjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtZmxhdC1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LWZsYXQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LWZsYXQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LXJhaXNlZC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LXJhaXNlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtZmFiLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1mYWIubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtZmFiLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtbWluaS1mYWIubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LW1pbmktZmFiLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LW1pbmktZmFiLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1taW5pLWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWR7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMyl9Ym9keS5kYXJrLW1vZGUgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeSxib2R5LmRhcmstbW9kZSAubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnksYm9keS5kYXJrLW1vZGUgLm1hdC1mYWIubWF0LXByaW1hcnksYm9keS5kYXJrLW1vZGUgLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeXtiYWNrZ3JvdW5kLWNvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYWNjZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtZmFiLm1hdC1hY2NlbnQsYm9keS5kYXJrLW1vZGUgLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50e2JhY2tncm91bmQtY29sb3I6I2VmNmMwMH1ib2R5LmRhcmstbW9kZSAubWF0LWZsYXQtYnV0dG9uLm1hdC13YXJuLGJvZHkuZGFyay1tb2RlIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2Fybixib2R5LmRhcmstbW9kZSAubWF0LWZhYi5tYXQtd2Fybixib2R5LmRhcmstbW9kZSAubWF0LW1pbmktZmFiLm1hdC13YXJue2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn1ib2R5LmRhcmstbW9kZSAubWF0LWZsYXQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtZmxhdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LWZhYi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtZmFiLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LWZhYi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtZmFiLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LW1pbmktZmFiLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1taW5pLWZhYi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtbWluaS1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVke2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtZmxhdC1idXR0b24ubWF0LXByaW1hcnkgLm1hdC1yaXBwbGUtZWxlbWVudCxib2R5LmRhcmstbW9kZSAubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnkgLm1hdC1yaXBwbGUtZWxlbWVudCxib2R5LmRhcmstbW9kZSAubWF0LWZhYi5tYXQtcHJpbWFyeSAubWF0LXJpcHBsZS1lbGVtZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtbWluaS1mYWIubWF0LXByaW1hcnkgLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfWJvZHkuZGFyay1tb2RlIC5tYXQtZmxhdC1idXR0b24ubWF0LWFjY2VudCAubWF0LXJpcHBsZS1lbGVtZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYWNjZW50IC5tYXQtcmlwcGxlLWVsZW1lbnQsYm9keS5kYXJrLW1vZGUgLm1hdC1mYWIubWF0LWFjY2VudCAubWF0LXJpcHBsZS1lbGVtZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtbWluaS1mYWIubWF0LWFjY2VudCAubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Ym9keS5kYXJrLW1vZGUgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtd2FybiAubWF0LXJpcHBsZS1lbGVtZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2FybiAubWF0LXJpcHBsZS1lbGVtZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtZmFiLm1hdC13YXJuIC5tYXQtcmlwcGxlLWVsZW1lbnQsYm9keS5kYXJrLW1vZGUgLm1hdC1taW5pLWZhYi5tYXQtd2FybiAubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Ym9keS5kYXJrLW1vZGUgLm1hdC1zdHJva2VkLWJ1dHRvbjpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSxib2R5LmRhcmstbW9kZSAubWF0LWZsYXQtYnV0dG9uOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LXJhaXNlZC1idXR0b246bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LXJhaXNlZC1idXR0b246bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKTphY3RpdmU6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggNXB4IDVweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggOHB4IDEwcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDNweCAxNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LWZhYjpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSxib2R5LmRhcmstbW9kZSAubWF0LW1pbmktZmFiOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDNweCA1cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDZweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMThweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LWZhYjpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpOmFjdGl2ZTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSxib2R5LmRhcmstbW9kZSAubWF0LW1pbmktZmFiOm5vdCgubWF0LWJ1dHRvbi1kaXNhYmxlZCk6YWN0aXZlOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDdweCA4cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDEycHggMTdweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNXB4IDIycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZDpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSxib2R5LmRhcmstbW9kZSAubWF0LW1pbmktZmFiLm1hdC1idXR0b24tZGlzYWJsZWQ6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lLGJvZHkuZGFyay1tb2RlIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cHtib3gtc2hhZG93OjBweCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAycHggMnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQsYm9keS5kYXJrLW1vZGUgLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmR7Ym94LXNoYWRvdzpub25lfWJvZHkuZGFyay1tb2RlIC5tYXQtYnV0dG9uLXRvZ2dsZXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC41KX1ib2R5LmRhcmstbW9kZSAubWF0LWJ1dHRvbi10b2dnbGUgLm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmR7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kOiM0MjQyNDJ9Ym9keS5kYXJrLW1vZGUgLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQgLm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXl7YmFja2dyb3VuZC1jb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkIC5tYXQtYnV0dG9uLXRvZ2dsZSsubWF0LWJ1dHRvbi10b2dnbGV7Ym9yZGVyLWxlZnQ6c29saWQgMXB4IHJnYmEoMjU1LDI1NSwyNTUsLjEyKX1ib2R5LmRhcmstbW9kZSBbZGlyPXJ0bF0gLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmQgLm1hdC1idXR0b24tdG9nZ2xlKy5tYXQtYnV0dG9uLXRvZ2dsZXtib3JkZXItbGVmdDpub25lO2JvcmRlci1yaWdodDpzb2xpZCAxcHggcmdiYSgyNTUsMjU1LDI1NSwuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkLm1hdC1idXR0b24tdG9nZ2xlLXZlcnRpY2FsIC5tYXQtYnV0dG9uLXRvZ2dsZSsubWF0LWJ1dHRvbi10b2dnbGV7Ym9yZGVyLWxlZnQ6bm9uZTtib3JkZXItcmlnaHQ6bm9uZTtib3JkZXItdG9wOnNvbGlkIDFweCByZ2JhKDI1NSwyNTUsMjU1LC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1idXR0b24tdG9nZ2xlLWNoZWNrZWR7YmFja2dyb3VuZC1jb2xvcjojMjEyMTIxO2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfWJvZHkuZGFyay1tb2RlIC5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2VkLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmR7Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LWJ1dHRvbi10b2dnbGUtZGlzYWJsZWR7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMyk7YmFja2dyb3VuZC1jb2xvcjojMDAwfWJvZHkuZGFyay1tb2RlIC5tYXQtYnV0dG9uLXRvZ2dsZS1kaXNhYmxlZC5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJke2JhY2tncm91bmQ6IzQyNDI0Mn1ib2R5LmRhcmstbW9kZSAubWF0LWJ1dHRvbi10b2dnbGUtZGlzYWJsZWQubWF0LWJ1dHRvbi10b2dnbGUtY2hlY2tlZHtiYWNrZ3JvdW5kLWNvbG9yOiM0MjQyNDJ9Ym9keS5kYXJrLW1vZGUgLm1hdC1idXR0b24tdG9nZ2xlLXN0YW5kYWxvbmUubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZCxib2R5LmRhcmstbW9kZSAubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZHtib3JkZXI6c29saWQgMXB4IHJnYmEoMjU1LDI1NSwyNTUsLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LWNhcmR7YmFja2dyb3VuZDojNDI0MjQyO2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1jYXJkOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDJweCAxcHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDFweCAxcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAzcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1jYXJkLm1hdC1jYXJkLWZsYXQ6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtY2FyZC1zdWJ0aXRsZXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX1ib2R5LmRhcmstbW9kZSAubWF0LWNoZWNrYm94LWZyYW1le2JvcmRlci1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX1ib2R5LmRhcmstbW9kZSAubWF0LWNoZWNrYm94LWNoZWNrbWFya3tmaWxsOiMzMDMwMzB9Ym9keS5kYXJrLW1vZGUgLm1hdC1jaGVja2JveC1jaGVja21hcmstcGF0aHtzdHJva2U6IzMwMzAzMCAhaW1wb3J0YW50fWJvZHkuZGFyay1tb2RlIC5tYXQtY2hlY2tib3gtbWl4ZWRtYXJre2JhY2tncm91bmQtY29sb3I6IzMwMzAzMH1ib2R5LmRhcmstbW9kZSAubWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUubWF0LXByaW1hcnkgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kLGJvZHkuZGFyay1tb2RlIC5tYXQtY2hlY2tib3gtY2hlY2tlZC5tYXQtcHJpbWFyeSAubWF0LWNoZWNrYm94LWJhY2tncm91bmR7YmFja2dyb3VuZC1jb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS5tYXQtYWNjZW50IC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZCxib2R5LmRhcmstbW9kZSAubWF0LWNoZWNrYm94LWNoZWNrZWQubWF0LWFjY2VudCAubWF0LWNoZWNrYm94LWJhY2tncm91bmR7YmFja2dyb3VuZC1jb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS5tYXQtd2FybiAubWF0LWNoZWNrYm94LWJhY2tncm91bmQsYm9keS5kYXJrLW1vZGUgLm1hdC1jaGVja2JveC1jaGVja2VkLm1hdC13YXJuIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZHtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1jaGVja2JveC1kaXNhYmxlZC5tYXQtY2hlY2tib3gtY2hlY2tlZCAubWF0LWNoZWNrYm94LWJhY2tncm91bmQsYm9keS5kYXJrLW1vZGUgLm1hdC1jaGVja2JveC1kaXNhYmxlZC5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZSAubWF0LWNoZWNrYm94LWJhY2tncm91bmR7YmFja2dyb3VuZC1jb2xvcjojNjg2ODY4fWJvZHkuZGFyay1tb2RlIC5tYXQtY2hlY2tib3gtZGlzYWJsZWQ6bm90KC5tYXQtY2hlY2tib3gtY2hlY2tlZCkgLm1hdC1jaGVja2JveC1mcmFtZXtib3JkZXItY29sb3I6IzY4Njg2OH1ib2R5LmRhcmstbW9kZSAubWF0LWNoZWNrYm94LWRpc2FibGVkIC5tYXQtY2hlY2tib3gtbGFiZWx7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9Ym9keS5kYXJrLW1vZGUgLm1hdC1jaGVja2JveCAubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQtY29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LWNoZWNrYm94LWNoZWNrZWQ6bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC1wcmltYXJ5IC5tYXQtcmlwcGxlLWVsZW1lbnQsYm9keS5kYXJrLW1vZGUgLm1hdC1jaGVja2JveDphY3RpdmU6bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC1wcmltYXJ5IC5tYXQtcmlwcGxlLWVsZW1lbnR7YmFja2dyb3VuZDojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtY2hlY2tib3gtY2hlY2tlZDpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LWFjY2VudCAubWF0LXJpcHBsZS1lbGVtZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtY2hlY2tib3g6YWN0aXZlOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtYWNjZW50IC5tYXQtcmlwcGxlLWVsZW1lbnR7YmFja2dyb3VuZDojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtY2hlY2tib3gtY2hlY2tlZDpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LXdhcm4gLm1hdC1yaXBwbGUtZWxlbWVudCxib2R5LmRhcmstbW9kZSAubWF0LWNoZWNrYm94OmFjdGl2ZTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LXdhcm4gLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kOiNmNDQzMzZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwe2JhY2tncm91bmQtY29sb3I6IzYxNjE2MTtjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcCAubWF0LWNoaXAtcmVtb3Zle2NvbG9yOiNmZmY7b3BhY2l0eTouNH1ib2R5LmRhcmstbW9kZSAubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXA6bm90KC5tYXQtY2hpcC1kaXNhYmxlZCk6YWN0aXZle2JveC1zaGFkb3c6MHB4IDNweCAzcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDNweCA0cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwOm5vdCgubWF0LWNoaXAtZGlzYWJsZWQpIC5tYXQtY2hpcC1yZW1vdmU6aG92ZXJ7b3BhY2l0eTouNTR9Ym9keS5kYXJrLW1vZGUgLm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLWRpc2FibGVke29wYWNpdHk6LjR9Ym9keS5kYXJrLW1vZGUgLm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwOjphZnRlcntiYWNrZ3JvdW5kOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1wcmltYXJ5e2JhY2tncm91bmQtY29sb3I6I2VmNmMwMDtjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtcHJpbWFyeSAubWF0LWNoaXAtcmVtb3Zle2NvbG9yOiNmZmY7b3BhY2l0eTouNH1ib2R5LmRhcmstbW9kZSAubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXByaW1hcnkgLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfWJvZHkuZGFyay1tb2RlIC5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtd2FybntiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzY7Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXdhcm4gLm1hdC1jaGlwLXJlbW92ZXtjb2xvcjojZmZmO29wYWNpdHk6LjR9Ym9keS5kYXJrLW1vZGUgLm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC13YXJuIC5tYXQtcmlwcGxlLWVsZW1lbnR7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX1ib2R5LmRhcmstbW9kZSAubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LWFjY2VudHtiYWNrZ3JvdW5kLWNvbG9yOiNlZjZjMDA7Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LWFjY2VudCAubWF0LWNoaXAtcmVtb3Zle2NvbG9yOiNmZmY7b3BhY2l0eTouNH1ib2R5LmRhcmstbW9kZSAubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LWFjY2VudCAubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Ym9keS5kYXJrLW1vZGUgLm1hdC10YWJsZXtiYWNrZ3JvdW5kOiM0MjQyNDJ9Ym9keS5kYXJrLW1vZGUgLm1hdC10YWJsZSB0aGVhZCxib2R5LmRhcmstbW9kZSAubWF0LXRhYmxlIHRib2R5LGJvZHkuZGFyay1tb2RlIC5tYXQtdGFibGUgdGZvb3QsYm9keS5kYXJrLW1vZGUgbWF0LWhlYWRlci1yb3csYm9keS5kYXJrLW1vZGUgbWF0LXJvdyxib2R5LmRhcmstbW9kZSBtYXQtZm9vdGVyLXJvdyxib2R5LmRhcmstbW9kZSBbbWF0LWhlYWRlci1yb3ddLGJvZHkuZGFyay1tb2RlIFttYXQtcm93XSxib2R5LmRhcmstbW9kZSBbbWF0LWZvb3Rlci1yb3ddLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFibGUtc3RpY2t5e2JhY2tncm91bmQ6aW5oZXJpdH1ib2R5LmRhcmstbW9kZSBtYXQtcm93LGJvZHkuZGFyay1tb2RlIG1hdC1oZWFkZXItcm93LGJvZHkuZGFyay1tb2RlIG1hdC1mb290ZXItcm93LGJvZHkuZGFyay1tb2RlIHRoLm1hdC1oZWFkZXItY2VsbCxib2R5LmRhcmstbW9kZSB0ZC5tYXQtY2VsbCxib2R5LmRhcmstbW9kZSB0ZC5tYXQtZm9vdGVyLWNlbGx7Ym9yZGVyLWJvdHRvbS1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1oZWFkZXItY2VsbHtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX1ib2R5LmRhcmstbW9kZSAubWF0LWNlbGwsYm9keS5kYXJrLW1vZGUgLm1hdC1mb290ZXItY2VsbHtjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtY2FsZW5kYXItYXJyb3d7ZmlsbDojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtZGF0ZXBpY2tlci10b2dnbGUsYm9keS5kYXJrLW1vZGUgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQgLm1hdC1jYWxlbmRhci1uZXh0LWJ1dHRvbixib2R5LmRhcmstbW9kZSAubWF0LWRhdGVwaWNrZXItY29udGVudCAubWF0LWNhbGVuZGFyLXByZXZpb3VzLWJ1dHRvbntjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVye2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjUpfWJvZHkuZGFyay1tb2RlIC5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyLWRpdmlkZXI6OmFmdGVye2JhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtY2FsZW5kYXItYm9keS1sYWJlbHtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX1ib2R5LmRhcmstbW9kZSAubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtZGF0ZS1yYW5nZS1pbnB1dC1zZXBhcmF0b3J7Y29sb3I6I2ZmZjtib3JkZXItY29sb3I6dHJhbnNwYXJlbnR9Ym9keS5kYXJrLW1vZGUgLm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkPi5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnQ6bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCl7Y29sb3I6IzYxNjE2MX1ib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1kYXRlLXJhbmdlLWlucHV0LXNlcGFyYXRvcntjb2xvcjojNjE2MTYxfWJvZHkuZGFyay1tb2RlIC5tYXQtY2FsZW5kYXItYm9keS1pbi1wcmV2aWV3e2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjI0KX1ib2R5LmRhcmstbW9kZSAubWF0LWNhbGVuZGFyLWJvZHktdG9kYXk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCl7Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjUpfWJvZHkuZGFyay1tb2RlIC5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZD4ubWF0LWNhbGVuZGFyLWJvZHktdG9kYXk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCl7Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjMpfWJvZHkuZGFyay1tb2RlIC5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyMzksMTA4LDAsLjIpfWJvZHkuZGFyay1tb2RlIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCxib2R5LmRhcmstbW9kZSAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDksMTcxLDAsLjIpfWJvZHkuZGFyay1tb2RlIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydDo6YmVmb3JlLGJvZHkuZGFyay1tb2RlIFtkaXI9cnRsXSAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2UtZW5kOjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMjM5LCAxMDgsIDAsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Ym9keS5kYXJrLW1vZGUgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZDo6YmVmb3JlLGJvZHkuZGFyay1tb2RlIFtkaXI9cnRsXSAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnQ6OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byBsZWZ0LCByZ2JhKDIzOSwgMTA4LCAwLCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfWJvZHkuZGFyay1tb2RlIC5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZT4ubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwsYm9keS5kYXJrLW1vZGUgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2UubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2U6OmFmdGVye2JhY2tncm91bmQ6I2E4ZGFiNX1ib2R5LmRhcmstbW9kZSAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2U+Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVke2JhY2tncm91bmQ6IzQ2YTM1ZX1ib2R5LmRhcmstbW9kZSAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWR7YmFja2dyb3VuZC1jb2xvcjojZWY2YzAwO2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkPi5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjM5LDEwOCwwLC40KX1ib2R5LmRhcmstbW9kZSAubWF0LWNhbGVuZGFyLWJvZHktdG9kYXkubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWR7Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggI2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LWNhbGVuZGFyLWJvZHktY2VsbDpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkKTpob3Zlcj4ubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50Om5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpLGJvZHkuZGFyay1tb2RlIC5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LWNhbGVuZGFyLWJvZHktYWN0aXZlPi5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnQ6bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCksYm9keS5kYXJrLW1vZGUgLmNkay1wcm9ncmFtLWZvY3VzZWQgLm1hdC1jYWxlbmRhci1ib2R5LWFjdGl2ZT4ubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50Om5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyMzksMTA4LDAsLjMpfWJvZHkuZGFyay1tb2RlIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50e2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpO2JhY2tncm91bmQtY29sb3I6IzQyNDI0Mjtjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnQgLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlOjpiZWZvcmV7YmFja2dyb3VuZDpyZ2JhKDIzOSwxMDgsMCwuMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudCAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwsYm9keS5kYXJrLW1vZGUgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudCAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDksMTcxLDAsLjIpfWJvZHkuZGFyay1tb2RlIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnQgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0OjpiZWZvcmUsYm9keS5kYXJrLW1vZGUgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudCBbZGlyPXJ0bF0gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZDo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDIzOSwgMTA4LCAwLCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfWJvZHkuZGFyay1tb2RlIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnQgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZDo6YmVmb3JlLGJvZHkuZGFyay1tb2RlIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnQgW2Rpcj1ydGxdIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydDo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIGxlZnQsIHJnYmEoMjM5LCAxMDgsIDAsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Ym9keS5kYXJrLW1vZGUgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudCAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2U+Lm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsLGJvZHkuZGFyay1tb2RlIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnQgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2UubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2U6OmFmdGVye2JhY2tncm91bmQ6I2E4ZGFiNX1ib2R5LmRhcmstbW9kZSAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50IC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCxib2R5LmRhcmstbW9kZSAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50IC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlPi5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZHtiYWNrZ3JvdW5kOiM0NmEzNWV9Ym9keS5kYXJrLW1vZGUgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudCAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWR7YmFja2dyb3VuZC1jb2xvcjojZWY2YzAwO2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudCAubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWQ+Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVke2JhY2tncm91bmQtY29sb3I6cmdiYSgyMzksMTA4LDAsLjQpfWJvZHkuZGFyay1tb2RlIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnQgLm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVke2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4ICNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudCAubWF0LWNhbGVuZGFyLWJvZHktY2VsbDpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkKTpob3Zlcj4ubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50Om5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpLGJvZHkuZGFyay1tb2RlIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnQgLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtY2FsZW5kYXItYm9keS1hY3RpdmU+Lm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudDpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKSxib2R5LmRhcmstbW9kZSAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50IC5jZGstcHJvZ3JhbS1mb2N1c2VkIC5tYXQtY2FsZW5kYXItYm9keS1hY3RpdmU+Lm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudDpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjM5LDEwOCwwLC4zKX1ib2R5LmRhcmstbW9kZSAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2U6OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ0LDY3LDU0LC4yKX1ib2R5LmRhcmstbW9kZSAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwsYm9keS5kYXJrLW1vZGUgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm4gLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2U6OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ5LDE3MSwwLC4yKX1ib2R5LmRhcmstbW9kZSAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnQ6OmJlZm9yZSxib2R5LmRhcmstbW9kZSAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiBbZGlyPXJ0bF0gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZDo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDI0NCwgNjcsIDU0LCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfWJvZHkuZGFyay1tb2RlIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmQ6OmJlZm9yZSxib2R5LmRhcmstbW9kZSAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiBbZGlyPXJ0bF0gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0OjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gbGVmdCwgcmdiYSgyNDQsIDY3LCA1NCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX1ib2R5LmRhcmstbW9kZSAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2U+Lm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsLGJvZHkuZGFyay1tb2RlIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlOjphZnRlcntiYWNrZ3JvdW5kOiNhOGRhYjV9Ym9keS5kYXJrLW1vZGUgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm4gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlPi5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZHtiYWNrZ3JvdW5kOiM0NmEzNWV9Ym9keS5kYXJrLW1vZGUgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVke2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNjtjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuIC5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZD4ubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWR7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NCw2Nyw1NCwuNCl9Ym9keS5kYXJrLW1vZGUgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm4gLm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVke2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4ICNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm4gLm1hdC1jYWxlbmRhci1ib2R5LWNlbGw6bm90KC5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZCk6aG92ZXI+Lm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudDpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKSxib2R5LmRhcmstbW9kZSAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiAuY2RrLWtleWJvYXJkLWZvY3VzZWQgLm1hdC1jYWxlbmRhci1ib2R5LWFjdGl2ZT4ubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50Om5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpLGJvZHkuZGFyay1tb2RlIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuIC5jZGstcHJvZ3JhbS1mb2N1c2VkIC5tYXQtY2FsZW5kYXItYm9keS1hY3RpdmU+Lm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudDpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ0LDY3LDU0LC4zKX1ib2R5LmRhcmstbW9kZSAubWF0LWRhdGVwaWNrZXItY29udGVudC10b3VjaHtib3gtc2hhZG93OjBweCAxMXB4IDE1cHggLTdweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDI0cHggMzhweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOXB4IDQ2cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1kYXRlcGlja2VyLXRvZ2dsZS1hY3RpdmV7Y29sb3I6I2VmNmMwMH1ib2R5LmRhcmstbW9kZSAubWF0LWRhdGVwaWNrZXItdG9nZ2xlLWFjdGl2ZS5tYXQtYWNjZW50e2NvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1kYXRlcGlja2VyLXRvZ2dsZS1hY3RpdmUubWF0LXdhcm57Y29sb3I6I2Y0NDMzNn1ib2R5LmRhcmstbW9kZSAubWF0LWRhdGUtcmFuZ2UtaW5wdXQtaW5uZXJbZGlzYWJsZWRde2NvbG9yOiM2MTYxNjF9Ym9keS5kYXJrLW1vZGUgLm1hdC1kaWFsb2ctY29udGFpbmVye2JveC1zaGFkb3c6MHB4IDExcHggMTVweCAtN3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjRweCAzOHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA5cHggNDZweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtiYWNrZ3JvdW5kOiM0MjQyNDI7Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LWRpdmlkZXJ7Ym9yZGVyLXRvcC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1kaXZpZGVyLXZlcnRpY2Fse2JvcmRlci1yaWdodC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1leHBhbnNpb24tcGFuZWx7YmFja2dyb3VuZDojNDI0MjQyO2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1leHBhbnNpb24tcGFuZWw6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LWFjdGlvbi1yb3d7Ym9yZGVyLXRvcC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1leHBhbnNpb24tcGFuZWwgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdChbYXJpYS1kaXNhYmxlZD10cnVlXSksYm9keS5kYXJrLW1vZGUgLm1hdC1leHBhbnNpb24tcGFuZWwgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KFthcmlhLWRpc2FibGVkPXRydWVdKSxib2R5LmRhcmstbW9kZSAubWF0LWV4cGFuc2lvbi1wYW5lbDpub3QoLm1hdC1leHBhbmRlZCkgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyOmhvdmVyOm5vdChbYXJpYS1kaXNhYmxlZD10cnVlXSl7YmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC4wNCl9QG1lZGlhKGhvdmVyOiBub25lKXtib2R5LmRhcmstbW9kZSAubWF0LWV4cGFuc2lvbi1wYW5lbDpub3QoLm1hdC1leHBhbmRlZCk6bm90KFthcmlhLWRpc2FibGVkPXRydWVdKSAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI6aG92ZXJ7YmFja2dyb3VuZDojNDI0MjQyfX1ib2R5LmRhcmstbW9kZSAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItdGl0bGV7Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItZGVzY3JpcHRpb24sYm9keS5kYXJrLW1vZGUgLm1hdC1leHBhbnNpb24taW5kaWNhdG9yOjphZnRlcntjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX1ib2R5LmRhcmstbW9kZSAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbYXJpYS1kaXNhYmxlZD10cnVlXXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4zKX1ib2R5LmRhcmstbW9kZSAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbYXJpYS1kaXNhYmxlZD10cnVlXSAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItdGl0bGUsYm9keS5kYXJrLW1vZGUgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0gLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLWRlc2NyaXB0aW9ue2NvbG9yOmluaGVyaXR9Ym9keS5kYXJrLW1vZGUgLm1hdC1mb3JtLWZpZWxkLWxhYmVse2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfWJvZHkuZGFyay1tb2RlIC5tYXQtaGludHtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX1ib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQgLm1hdC1mb3JtLWZpZWxkLWxhYmVse2NvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1sYWJlbC5tYXQtYWNjZW50e2NvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1sYWJlbC5tYXQtd2Fybntjb2xvcjojZjQ0MzM2fWJvZHkuZGFyay1tb2RlIC5tYXQtZm9jdXNlZCAubWF0LWZvcm0tZmllbGQtcmVxdWlyZWQtbWFya2Vye2NvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1yaXBwbGV7YmFja2dyb3VuZC1jb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZCAubWF0LWZvcm0tZmllbGQtcmlwcGxlLm1hdC1hY2NlbnR7YmFja2dyb3VuZC1jb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZCAubWF0LWZvcm0tZmllbGQtcmlwcGxlLm1hdC13YXJue2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn1ib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9jdXNlZDpub3QoLm1hdC1mb3JtLWZpZWxkLWludmFsaWQpIC5tYXQtZm9ybS1maWVsZC1pbmZpeDo6YWZ0ZXJ7Y29sb3I6I2VmNmMwMH1ib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9jdXNlZDpub3QoLm1hdC1mb3JtLWZpZWxkLWludmFsaWQpLm1hdC1hY2NlbnQgLm1hdC1mb3JtLWZpZWxkLWluZml4OjphZnRlcntjb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb2N1c2VkOm5vdCgubWF0LWZvcm0tZmllbGQtaW52YWxpZCkubWF0LXdhcm4gLm1hdC1mb3JtLWZpZWxkLWluZml4OjphZnRlcntjb2xvcjojZjQ0MzM2fWJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIC5tYXQtZm9ybS1maWVsZC1sYWJlbHtjb2xvcjojZjQ0MzM2fWJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIC5tYXQtZm9ybS1maWVsZC1sYWJlbC5tYXQtYWNjZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIC5tYXQtZm9ybS1maWVsZC1sYWJlbCAubWF0LWZvcm0tZmllbGQtcmVxdWlyZWQtbWFya2Vye2NvbG9yOiNmNDQzMzZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1mb3JtLWZpZWxkLm1hdC1mb3JtLWZpZWxkLWludmFsaWQgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZSxib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZCAubWF0LWZvcm0tZmllbGQtcmlwcGxlLm1hdC1hY2NlbnR7YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fWJvZHkuZGFyay1tb2RlIC5tYXQtZXJyb3J7Y29sb3I6I2Y0NDMzNn1ib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kgLm1hdC1mb3JtLWZpZWxkLWxhYmVse2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfWJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWhpbnR7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9Ym9keS5kYXJrLW1vZGUgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmV7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX1ib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZXtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpIDAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNykgMzMlLCB0cmFuc3BhcmVudCAwJSk7YmFja2dyb3VuZC1zaXplOjRweCAxMDAlO2JhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14fWJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLXN0YW5kYXJkIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmV7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX1ib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5le2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNykgMCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KSAzMyUsIHRyYW5zcGFyZW50IDAlKTtiYWNrZ3JvdW5kLXNpemU6NHB4IDEwMCU7YmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0LXh9Ym9keS5kYXJrLW1vZGUgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbCAubWF0LWZvcm0tZmllbGQtZmxleHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfWJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1mb3JtLWZpZWxkLWZsZXh7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4wNSl9Ym9keS5kYXJrLW1vZGUgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbCAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lOjpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC41KX1ib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkIC5tYXQtZm9ybS1maWVsZC1sYWJlbHtjb2xvcjojNjE2MTYxfWJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZTo6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9Ym9keS5kYXJrLW1vZGUgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtb3V0bGluZXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4zKX1ib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNre2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9jdXNlZCAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja3tjb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvY3VzZWQubWF0LWFjY2VudCAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja3tjb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvY3VzZWQubWF0LXdhcm4gLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2t7Y29sb3I6I2Y0NDMzNn1ib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWludmFsaWQubWF0LWZvcm0tZmllbGQtaW52YWxpZCAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja3tjb2xvcjojZjQ0MzM2fWJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1mb3JtLWZpZWxkLWxhYmVse2NvbG9yOiM2MTYxNjF9Ym9keS5kYXJrLW1vZGUgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCAubWF0LWZvcm0tZmllbGQtb3V0bGluZXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xNSl9Ym9keS5kYXJrLW1vZGUgLm1hdC1pY29uLm1hdC1wcmltYXJ5e2NvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1pY29uLm1hdC1hY2NlbnR7Y29sb3I6I2VmNmMwMH1ib2R5LmRhcmstbW9kZSAubWF0LWljb24ubWF0LXdhcm57Y29sb3I6I2Y0NDMzNn1ib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdCAubWF0LWZvcm0tZmllbGQtaW5maXg6OmFmdGVye2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfWJvZHkuZGFyay1tb2RlIC5tYXQtaW5wdXQtZWxlbWVudDpkaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCAubWF0LWZvcm0tZmllbGQtaW5maXg6OmFmdGVye2NvbG9yOiM2MTYxNjF9Ym9keS5kYXJrLW1vZGUgLm1hdC1pbnB1dC1lbGVtZW50e2NhcmV0LWNvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1pbnB1dC1lbGVtZW50OjpwbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC41KX1ib2R5LmRhcmstbW9kZSAubWF0LWlucHV0LWVsZW1lbnQ6Oi1tb3otcGxhY2Vob2xkZXJ7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSl9Ym9keS5kYXJrLW1vZGUgLm1hdC1pbnB1dC1lbGVtZW50Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVye2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjUpfWJvZHkuZGFyay1tb2RlIC5tYXQtaW5wdXQtZWxlbWVudDotbXMtaW5wdXQtcGxhY2Vob2xkZXJ7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSl9Ym9keS5kYXJrLW1vZGUgLm1hdC1pbnB1dC1lbGVtZW50IG9wdGlvbntjb2xvcjpyZ2JhKDAsMCwwLC44Nyl9Ym9keS5kYXJrLW1vZGUgLm1hdC1pbnB1dC1lbGVtZW50IG9wdGlvbjpkaXNhYmxlZHtjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Ym9keS5kYXJrLW1vZGUgLm1hdC1mb3JtLWZpZWxkLm1hdC1hY2NlbnQgLm1hdC1pbnB1dC1lbGVtZW50e2NhcmV0LWNvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1mb3JtLWZpZWxkLm1hdC13YXJuIC5tYXQtaW5wdXQtZWxlbWVudCxib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQtaW52YWxpZCAubWF0LWlucHV0LWVsZW1lbnR7Y2FyZXQtY29sb3I6I2Y0NDMzNn1ib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIC5tYXQtZm9ybS1maWVsZC1pbmZpeDo6YWZ0ZXJ7Y29sb3I6I2Y0NDMzNn1ib2R5LmRhcmstbW9kZSAubWF0LWxpc3QtYmFzZSAubWF0LWxpc3QtaXRlbXtjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtbGlzdC1iYXNlIC5tYXQtbGlzdC1vcHRpb257Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LWxpc3QtYmFzZSAubWF0LXN1YmhlYWRlcntjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX1ib2R5LmRhcmstbW9kZSAubWF0LWxpc3QtaXRlbS1kaXNhYmxlZHtiYWNrZ3JvdW5kLWNvbG9yOiMwMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1saXN0LW9wdGlvbjpob3Zlcixib2R5LmRhcmstbW9kZSAubWF0LWxpc3Qtb3B0aW9uOmZvY3VzLGJvZHkuZGFyay1tb2RlIC5tYXQtbmF2LWxpc3QgLm1hdC1saXN0LWl0ZW06aG92ZXIsYm9keS5kYXJrLW1vZGUgLm1hdC1uYXYtbGlzdCAubWF0LWxpc3QtaXRlbTpmb2N1cyxib2R5LmRhcmstbW9kZSAubWF0LWFjdGlvbi1saXN0IC5tYXQtbGlzdC1pdGVtOmhvdmVyLGJvZHkuZGFyay1tb2RlIC5tYXQtYWN0aW9uLWxpc3QgLm1hdC1saXN0LWl0ZW06Zm9jdXN7YmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC4wNCl9Ym9keS5kYXJrLW1vZGUgLm1hdC1saXN0LXNpbmdsZS1zZWxlY3RlZC1vcHRpb24sYm9keS5kYXJrLW1vZGUgLm1hdC1saXN0LXNpbmdsZS1zZWxlY3RlZC1vcHRpb246aG92ZXIsYm9keS5kYXJrLW1vZGUgLm1hdC1saXN0LXNpbmdsZS1zZWxlY3RlZC1vcHRpb246Zm9jdXN7YmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1tZW51LXBhbmVse2JhY2tncm91bmQ6IzQyNDI0Mn1ib2R5LmRhcmstbW9kZSAubWF0LW1lbnUtcGFuZWw6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1tZW51LWl0ZW17YmFja2dyb3VuZDp0cmFuc3BhcmVudDtjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtbWVudS1pdGVtW2Rpc2FibGVkXSxib2R5LmRhcmstbW9kZSAubWF0LW1lbnUtaXRlbVtkaXNhYmxlZF0gLm1hdC1tZW51LXN1Ym1lbnUtaWNvbixib2R5LmRhcmstbW9kZSAubWF0LW1lbnUtaXRlbVtkaXNhYmxlZF0gLm1hdC1pY29uLW5vLWNvbG9ye2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjUpfWJvZHkuZGFyay1tb2RlIC5tYXQtbWVudS1pdGVtIC5tYXQtaWNvbi1uby1jb2xvcixib2R5LmRhcmstbW9kZSAubWF0LW1lbnUtc3VibWVudS1pY29ue2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1tZW51LWl0ZW06aG92ZXI6bm90KFtkaXNhYmxlZF0pLGJvZHkuZGFyay1tb2RlIC5tYXQtbWVudS1pdGVtLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KFtkaXNhYmxlZF0pLGJvZHkuZGFyay1tb2RlIC5tYXQtbWVudS1pdGVtLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdChbZGlzYWJsZWRdKSxib2R5LmRhcmstbW9kZSAubWF0LW1lbnUtaXRlbS1oaWdobGlnaHRlZDpub3QoW2Rpc2FibGVkXSl7YmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC4wNCl9Ym9keS5kYXJrLW1vZGUgLm1hdC1wYWdpbmF0b3J7YmFja2dyb3VuZDojNDI0MjQyfWJvZHkuZGFyay1tb2RlIC5tYXQtcGFnaW5hdG9yLGJvZHkuZGFyay1tb2RlIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZSAubWF0LXNlbGVjdC10cmlnZ2Vye2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfWJvZHkuZGFyay1tb2RlIC5tYXQtcGFnaW5hdG9yLWRlY3JlbWVudCxib2R5LmRhcmstbW9kZSAubWF0LXBhZ2luYXRvci1pbmNyZW1lbnR7Ym9yZGVyLXRvcDoycHggc29saWQgI2ZmZjtib3JkZXItcmlnaHQ6MnB4IHNvbGlkICNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1wYWdpbmF0b3ItZmlyc3QsYm9keS5kYXJrLW1vZGUgLm1hdC1wYWdpbmF0b3ItbGFzdHtib3JkZXItdG9wOjJweCBzb2xpZCAjZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtaWNvbi1idXR0b25bZGlzYWJsZWRdIC5tYXQtcGFnaW5hdG9yLWRlY3JlbWVudCxib2R5LmRhcmstbW9kZSAubWF0LWljb24tYnV0dG9uW2Rpc2FibGVkXSAubWF0LXBhZ2luYXRvci1pbmNyZW1lbnQsYm9keS5kYXJrLW1vZGUgLm1hdC1pY29uLWJ1dHRvbltkaXNhYmxlZF0gLm1hdC1wYWdpbmF0b3ItZmlyc3QsYm9keS5kYXJrLW1vZGUgLm1hdC1pY29uLWJ1dHRvbltkaXNhYmxlZF0gLm1hdC1wYWdpbmF0b3ItbGFzdHtib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSl9Ym9keS5kYXJrLW1vZGUgLm1hdC1wcm9ncmVzcy1iYXItYmFja2dyb3VuZHtmaWxsOiM2MDNmMjR9Ym9keS5kYXJrLW1vZGUgLm1hdC1wcm9ncmVzcy1iYXItYnVmZmVye2JhY2tncm91bmQtY29sb3I6IzYwM2YyNH1ib2R5LmRhcmstbW9kZSAubWF0LXByb2dyZXNzLWJhci1maWxsOjphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1wcm9ncmVzcy1iYXIubWF0LWFjY2VudCAubWF0LXByb2dyZXNzLWJhci1iYWNrZ3JvdW5ke2ZpbGw6IzYwM2YyNH1ib2R5LmRhcmstbW9kZSAubWF0LXByb2dyZXNzLWJhci5tYXQtYWNjZW50IC5tYXQtcHJvZ3Jlc3MtYmFyLWJ1ZmZlcntiYWNrZ3JvdW5kLWNvbG9yOiM2MDNmMjR9Ym9keS5kYXJrLW1vZGUgLm1hdC1wcm9ncmVzcy1iYXIubWF0LWFjY2VudCAubWF0LXByb2dyZXNzLWJhci1maWxsOjphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1wcm9ncmVzcy1iYXIubWF0LXdhcm4gLm1hdC1wcm9ncmVzcy1iYXItYmFja2dyb3VuZHtmaWxsOiM2MTM1MzJ9Ym9keS5kYXJrLW1vZGUgLm1hdC1wcm9ncmVzcy1iYXIubWF0LXdhcm4gLm1hdC1wcm9ncmVzcy1iYXItYnVmZmVye2JhY2tncm91bmQtY29sb3I6IzYxMzUzMn1ib2R5LmRhcmstbW9kZSAubWF0LXByb2dyZXNzLWJhci5tYXQtd2FybiAubWF0LXByb2dyZXNzLWJhci1maWxsOjphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1wcm9ncmVzcy1zcGlubmVyIGNpcmNsZSxib2R5LmRhcmstbW9kZSAubWF0LXNwaW5uZXIgY2lyY2xle3N0cm9rZTojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtYWNjZW50IGNpcmNsZSxib2R5LmRhcmstbW9kZSAubWF0LXNwaW5uZXIubWF0LWFjY2VudCBjaXJjbGV7c3Ryb2tlOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1wcm9ncmVzcy1zcGlubmVyLm1hdC13YXJuIGNpcmNsZSxib2R5LmRhcmstbW9kZSAubWF0LXNwaW5uZXIubWF0LXdhcm4gY2lyY2xle3N0cm9rZTojZjQ0MzM2fWJvZHkuZGFyay1tb2RlIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xle2JvcmRlci1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX1ib2R5LmRhcmstbW9kZSAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtcmFkaW8tY2hlY2tlZCAubWF0LXJhZGlvLW91dGVyLWNpcmNsZXtib3JkZXItY29sb3I6I2VmNmMwMH1ib2R5LmRhcmstbW9kZSAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeSAubWF0LXJhZGlvLWlubmVyLWNpcmNsZSxib2R5LmRhcmstbW9kZSAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeSAubWF0LXJhZGlvLXJpcHBsZSAubWF0LXJpcHBsZS1lbGVtZW50Om5vdCgubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlKSxib2R5LmRhcmstbW9kZSAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtcmFkaW8tY2hlY2tlZCAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlLGJvZHkuZGFyay1tb2RlIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1wcmltYXJ5OmFjdGl2ZSAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxle2JhY2tncm91bmQtY29sb3I6I2VmNmMwMH1ib2R5LmRhcmstbW9kZSAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1yYWRpby1jaGVja2VkIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xle2JvcmRlci1jb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnQgLm1hdC1yYWRpby1pbm5lci1jaXJjbGUsYm9keS5kYXJrLW1vZGUgLm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudCAubWF0LXJhZGlvLXJpcHBsZSAubWF0LXJpcHBsZS1lbGVtZW50Om5vdCgubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlKSxib2R5LmRhcmstbW9kZSAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1yYWRpby1jaGVja2VkIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGUsYm9keS5kYXJrLW1vZGUgLm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudDphY3RpdmUgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZXtiYWNrZ3JvdW5kLWNvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm4ubWF0LXJhZGlvLWNoZWNrZWQgLm1hdC1yYWRpby1vdXRlci1jaXJjbGV7Ym9yZGVyLWNvbG9yOiNmNDQzMzZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm4gLm1hdC1yYWRpby1pbm5lci1jaXJjbGUsYm9keS5kYXJrLW1vZGUgLm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm4gLm1hdC1yYWRpby1yaXBwbGUgLm1hdC1yaXBwbGUtZWxlbWVudDpub3QoLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSksYm9keS5kYXJrLW1vZGUgLm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm4ubWF0LXJhZGlvLWNoZWNrZWQgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSxib2R5LmRhcmstbW9kZSAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2FybjphY3RpdmUgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkLm1hdC1yYWRpby1jaGVja2VkIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlLGJvZHkuZGFyay1tb2RlIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZCAubWF0LXJhZGlvLW91dGVyLWNpcmNsZXtib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSl9Ym9keS5kYXJrLW1vZGUgLm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkIC5tYXQtcmFkaW8tcmlwcGxlIC5tYXQtcmlwcGxlLWVsZW1lbnQsYm9keS5kYXJrLW1vZGUgLm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkIC5tYXQtcmFkaW8taW5uZXItY2lyY2xle2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSl9Ym9keS5kYXJrLW1vZGUgLm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkIC5tYXQtcmFkaW8tbGFiZWwtY29udGVudHtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC41KX1ib2R5LmRhcmstbW9kZSAubWF0LXJhZGlvLWJ1dHRvbiAubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQtY29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LXNlbGVjdC12YWx1ZXtjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtc2VsZWN0LXBsYWNlaG9sZGVye2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjUpfWJvZHkuZGFyay1tb2RlIC5tYXQtc2VsZWN0LWRpc2FibGVkIC5tYXQtc2VsZWN0LXZhbHVle2NvbG9yOiM2MTYxNjF9Ym9keS5kYXJrLW1vZGUgLm1hdC1zZWxlY3QtYXJyb3d7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9Ym9keS5kYXJrLW1vZGUgLm1hdC1zZWxlY3QtcGFuZWx7YmFja2dyb3VuZDojNDI0MjQyfWJvZHkuZGFyay1tb2RlIC5tYXQtc2VsZWN0LXBhbmVsOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtc2VsZWN0LXBhbmVsIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZDpub3QoLm1hdC1vcHRpb24tbXVsdGlwbGUpe2JhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZC5tYXQtcHJpbWFyeSAubWF0LXNlbGVjdC1hcnJvd3tjb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZC5tYXQtYWNjZW50IC5tYXQtc2VsZWN0LWFycm93e2NvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkLm1hdC13YXJuIC5tYXQtc2VsZWN0LWFycm93e2NvbG9yOiNmNDQzMzZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1mb3JtLWZpZWxkIC5tYXQtc2VsZWN0Lm1hdC1zZWxlY3QtaW52YWxpZCAubWF0LXNlbGVjdC1hcnJvd3tjb2xvcjojZjQ0MzM2fWJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZCAubWF0LXNlbGVjdC5tYXQtc2VsZWN0LWRpc2FibGVkIC5tYXQtc2VsZWN0LWFycm93e2NvbG9yOiM2MTYxNjF9Ym9keS5kYXJrLW1vZGUgLm1hdC1kcmF3ZXItY29udGFpbmVye2JhY2tncm91bmQtY29sb3I6IzMwMzAzMDtjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtZHJhd2Vye2JhY2tncm91bmQtY29sb3I6IzQyNDI0Mjtjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtZHJhd2VyLm1hdC1kcmF3ZXItcHVzaHtiYWNrZ3JvdW5kLWNvbG9yOiM0MjQyNDJ9Ym9keS5kYXJrLW1vZGUgLm1hdC1kcmF3ZXI6bm90KC5tYXQtZHJhd2VyLXNpZGUpe2JveC1zaGFkb3c6MHB4IDhweCAxMHB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxNnB4IDI0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAzMHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtZHJhd2VyLXNpZGV7Ym9yZGVyLXJpZ2h0OnNvbGlkIDFweCByZ2JhKDI1NSwyNTUsMjU1LC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1kcmF3ZXItc2lkZS5tYXQtZHJhd2VyLWVuZHtib3JkZXItbGVmdDpzb2xpZCAxcHggcmdiYSgyNTUsMjU1LDI1NSwuMTIpO2JvcmRlci1yaWdodDpub25lfWJvZHkuZGFyay1tb2RlIFtkaXI9cnRsXSAubWF0LWRyYXdlci1zaWRle2JvcmRlci1sZWZ0OnNvbGlkIDFweCByZ2JhKDI1NSwyNTUsMjU1LC4xMik7Ym9yZGVyLXJpZ2h0Om5vbmV9Ym9keS5kYXJrLW1vZGUgW2Rpcj1ydGxdIC5tYXQtZHJhd2VyLXNpZGUubWF0LWRyYXdlci1lbmR7Ym9yZGVyLWxlZnQ6bm9uZTtib3JkZXItcmlnaHQ6c29saWQgMXB4IHJnYmEoMjU1LDI1NSwyNTUsLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LWRyYXdlci1iYWNrZHJvcC5tYXQtZHJhd2VyLXNob3due2JhY2tncm91bmQtY29sb3I6cmdiYSgxODksMTg5LDE4OSwuNil9Ym9keS5kYXJrLW1vZGUgLm1hdC1zbGlkZS10b2dnbGUubWF0LWNoZWNrZWQgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWJ7YmFja2dyb3VuZC1jb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1jaGVja2VkIC5tYXQtc2xpZGUtdG9nZ2xlLWJhcntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjM5LDEwOCwwLC41NCl9Ym9keS5kYXJrLW1vZGUgLm1hdC1zbGlkZS10b2dnbGUubWF0LWNoZWNrZWQgLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1zbGlkZS10b2dnbGUubWF0LXByaW1hcnkubWF0LWNoZWNrZWQgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWJ7YmFja2dyb3VuZC1jb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1wcmltYXJ5Lm1hdC1jaGVja2VkIC5tYXQtc2xpZGUtdG9nZ2xlLWJhcntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjM5LDEwOCwwLC41NCl9Ym9keS5kYXJrLW1vZGUgLm1hdC1zbGlkZS10b2dnbGUubWF0LXByaW1hcnkubWF0LWNoZWNrZWQgLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1zbGlkZS10b2dnbGUubWF0LXdhcm4ubWF0LWNoZWNrZWQgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWJ7YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fWJvZHkuZGFyay1tb2RlIC5tYXQtc2xpZGUtdG9nZ2xlLm1hdC13YXJuLm1hdC1jaGVja2VkIC5tYXQtc2xpZGUtdG9nZ2xlLWJhcntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ0LDY3LDU0LC41NCl9Ym9keS5kYXJrLW1vZGUgLm1hdC1zbGlkZS10b2dnbGUubWF0LXdhcm4ubWF0LWNoZWNrZWQgLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1zbGlkZS10b2dnbGU6bm90KC5tYXQtY2hlY2tlZCkgLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWJ7Ym94LXNoYWRvdzowcHggMnB4IDFweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMXB4IDFweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDNweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKTtiYWNrZ3JvdW5kLWNvbG9yOiNiZGJkYmR9Ym9keS5kYXJrLW1vZGUgLm1hdC1zbGlkZS10b2dnbGUtYmFye2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSl9Ym9keS5kYXJrLW1vZGUgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjMpfWJvZHkuZGFyay1tb2RlIC5tYXQtcHJpbWFyeSAubWF0LXNsaWRlci10cmFjay1maWxsLGJvZHkuZGFyay1tb2RlIC5tYXQtcHJpbWFyeSAubWF0LXNsaWRlci10aHVtYixib2R5LmRhcmstbW9kZSAubWF0LXByaW1hcnkgLm1hdC1zbGlkZXItdGh1bWItbGFiZWx7YmFja2dyb3VuZC1jb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtcHJpbWFyeSAubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0e2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1wcmltYXJ5IC5tYXQtc2xpZGVyLWZvY3VzLXJpbmd7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDIzOSwxMDgsMCwuMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1hY2NlbnQgLm1hdC1zbGlkZXItdHJhY2stZmlsbCxib2R5LmRhcmstbW9kZSAubWF0LWFjY2VudCAubWF0LXNsaWRlci10aHVtYixib2R5LmRhcmstbW9kZSAubWF0LWFjY2VudCAubWF0LXNsaWRlci10aHVtYi1sYWJlbHtiYWNrZ3JvdW5kLWNvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1hY2NlbnQgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dHtjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtYWNjZW50IC5tYXQtc2xpZGVyLWZvY3VzLXJpbmd7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDIzOSwxMDgsMCwuMil9Ym9keS5kYXJrLW1vZGUgLm1hdC13YXJuIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGwsYm9keS5kYXJrLW1vZGUgLm1hdC13YXJuIC5tYXQtc2xpZGVyLXRodW1iLGJvZHkuZGFyay1tb2RlIC5tYXQtd2FybiAubWF0LXNsaWRlci10aHVtYi1sYWJlbHtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Ym9keS5kYXJrLW1vZGUgLm1hdC13YXJuIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHR7Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LXdhcm4gLm1hdC1zbGlkZXItZm9jdXMtcmluZ3tiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ0LDY3LDU0LC4yKX1ib2R5LmRhcmstbW9kZSAubWF0LXNsaWRlcjpob3ZlciAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kLGJvZHkuZGFyay1tb2RlIC5tYXQtc2xpZGVyLmNkay1mb2N1c2VkIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmR7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4zKX1ib2R5LmRhcmstbW9kZSAubWF0LXNsaWRlci1kaXNhYmxlZCAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kLGJvZHkuZGFyay1tb2RlIC5tYXQtc2xpZGVyLWRpc2FibGVkIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGwsYm9keS5kYXJrLW1vZGUgLm1hdC1zbGlkZXItZGlzYWJsZWQgLm1hdC1zbGlkZXItdGh1bWJ7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4zKX1ib2R5LmRhcmstbW9kZSAubWF0LXNsaWRlci1kaXNhYmxlZDpob3ZlciAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5ke2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMyl9Ym9keS5kYXJrLW1vZGUgLm1hdC1zbGlkZXItbWluLXZhbHVlIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmd7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1zbGlkZXItbWluLXZhbHVlLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZyAubWF0LXNsaWRlci10aHVtYixib2R5LmRhcmstbW9kZSAubWF0LXNsaWRlci1taW4tdmFsdWUubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVse2JhY2tncm91bmQtY29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LXNsaWRlci1taW4tdmFsdWUubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nLmNkay1mb2N1c2VkIC5tYXQtc2xpZGVyLXRodW1iLGJvZHkuZGFyay1tb2RlIC5tYXQtc2xpZGVyLW1pbi12YWx1ZS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcuY2RrLWZvY3VzZWQgLm1hdC1zbGlkZXItdGh1bWItbGFiZWx7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4zKX1ib2R5LmRhcmstbW9kZSAubWF0LXNsaWRlci1taW4tdmFsdWU6bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpIC5tYXQtc2xpZGVyLXRodW1ie2JvcmRlci1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4zKTtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fWJvZHkuZGFyay1tb2RlIC5tYXQtc2xpZGVyLW1pbi12YWx1ZTpub3QoLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZyk6aG92ZXIgLm1hdC1zbGlkZXItdGh1bWIsYm9keS5kYXJrLW1vZGUgLm1hdC1zbGlkZXItbWluLXZhbHVlOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKS5jZGstZm9jdXNlZCAubWF0LXNsaWRlci10aHVtYntib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMyl9Ym9keS5kYXJrLW1vZGUgLm1hdC1zbGlkZXItbWluLXZhbHVlOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKTpob3Zlci5tYXQtc2xpZGVyLWRpc2FibGVkIC5tYXQtc2xpZGVyLXRodW1iLGJvZHkuZGFyay1tb2RlIC5tYXQtc2xpZGVyLW1pbi12YWx1ZTpub3QoLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZykuY2RrLWZvY3VzZWQubWF0LXNsaWRlci1kaXNhYmxlZCAubWF0LXNsaWRlci10aHVtYntib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMyl9Ym9keS5kYXJrLW1vZGUgLm1hdC1zbGlkZXItaGFzLXRpY2tzIC5tYXQtc2xpZGVyLXdyYXBwZXI6OmFmdGVye2JvcmRlci1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX1ib2R5LmRhcmstbW9kZSAubWF0LXNsaWRlci1ob3Jpem9udGFsIC5tYXQtc2xpZGVyLXRpY2tze2JhY2tncm91bmQtaW1hZ2U6cmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNykgMnB4LCB0cmFuc3BhcmVudCAwLCB0cmFuc3BhcmVudCk7YmFja2dyb3VuZC1pbWFnZTotbW96LXJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQoMC4wMDAxZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KSAycHgsIHRyYW5zcGFyZW50IDAsIHRyYW5zcGFyZW50KX1ib2R5LmRhcmstbW9kZSAubWF0LXNsaWRlci12ZXJ0aWNhbCAubWF0LXNsaWRlci10aWNrc3tiYWNrZ3JvdW5kLWltYWdlOnJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KSAycHgsIHRyYW5zcGFyZW50IDAsIHRyYW5zcGFyZW50KX1ib2R5LmRhcmstbW9kZSAubWF0LXN0ZXAtaGVhZGVyLmNkay1rZXlib2FyZC1mb2N1c2VkLGJvZHkuZGFyay1tb2RlIC5tYXQtc3RlcC1oZWFkZXIuY2RrLXByb2dyYW0tZm9jdXNlZCxib2R5LmRhcmstbW9kZSAubWF0LXN0ZXAtaGVhZGVyOmhvdmVyOm5vdChbYXJpYS1kaXNhYmxlZF0pLGJvZHkuZGFyay1tb2RlIC5tYXQtc3RlcC1oZWFkZXI6aG92ZXJbYXJpYS1kaXNhYmxlZD1mYWxzZV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4wNCl9Ym9keS5kYXJrLW1vZGUgLm1hdC1zdGVwLWhlYWRlcjpob3ZlclthcmlhLWRpc2FibGVkPXRydWVde2N1cnNvcjpkZWZhdWx0fUBtZWRpYShob3Zlcjogbm9uZSl7Ym9keS5kYXJrLW1vZGUgLm1hdC1zdGVwLWhlYWRlcjpob3ZlcntiYWNrZ3JvdW5kOm5vbmV9fWJvZHkuZGFyay1tb2RlIC5tYXQtc3RlcC1oZWFkZXIgLm1hdC1zdGVwLWxhYmVsLGJvZHkuZGFyay1tb2RlIC5tYXQtc3RlcC1oZWFkZXIgLm1hdC1zdGVwLW9wdGlvbmFse2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfWJvZHkuZGFyay1tb2RlIC5tYXQtc3RlcC1oZWFkZXIgLm1hdC1zdGVwLWljb257YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KTtjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtc3RlcC1oZWFkZXIgLm1hdC1zdGVwLWljb24tc2VsZWN0ZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1zdGVwLWhlYWRlciAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1kb25lLGJvZHkuZGFyay1tb2RlIC5tYXQtc3RlcC1oZWFkZXIgLm1hdC1zdGVwLWljb24tc3RhdGUtZWRpdHtiYWNrZ3JvdW5kLWNvbG9yOiNlZjZjMDA7Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LXN0ZXAtaGVhZGVyLm1hdC1hY2NlbnQgLm1hdC1zdGVwLWljb257Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LXN0ZXAtaGVhZGVyLm1hdC1hY2NlbnQgLm1hdC1zdGVwLWljb24tc2VsZWN0ZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1zdGVwLWhlYWRlci5tYXQtYWNjZW50IC5tYXQtc3RlcC1pY29uLXN0YXRlLWRvbmUsYm9keS5kYXJrLW1vZGUgLm1hdC1zdGVwLWhlYWRlci5tYXQtYWNjZW50IC5tYXQtc3RlcC1pY29uLXN0YXRlLWVkaXR7YmFja2dyb3VuZC1jb2xvcjojZWY2YzAwO2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1zdGVwLWhlYWRlci5tYXQtd2FybiAubWF0LXN0ZXAtaWNvbntjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtc3RlcC1oZWFkZXIubWF0LXdhcm4gLm1hdC1zdGVwLWljb24tc2VsZWN0ZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1zdGVwLWhlYWRlci5tYXQtd2FybiAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1kb25lLGJvZHkuZGFyay1tb2RlIC5tYXQtc3RlcC1oZWFkZXIubWF0LXdhcm4gLm1hdC1zdGVwLWljb24tc3RhdGUtZWRpdHtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzY7Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LXN0ZXAtaGVhZGVyIC5tYXQtc3RlcC1pY29uLXN0YXRlLWVycm9ye2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Y29sb3I6I2Y0NDMzNn1ib2R5LmRhcmstbW9kZSAubWF0LXN0ZXAtaGVhZGVyIC5tYXQtc3RlcC1sYWJlbC5tYXQtc3RlcC1sYWJlbC1hY3RpdmV7Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LXN0ZXAtaGVhZGVyIC5tYXQtc3RlcC1sYWJlbC5tYXQtc3RlcC1sYWJlbC1lcnJvcntjb2xvcjojZjQ0MzM2fWJvZHkuZGFyay1tb2RlIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsLGJvZHkuZGFyay1tb2RlIC5tYXQtc3RlcHBlci12ZXJ0aWNhbHtiYWNrZ3JvdW5kLWNvbG9yOiM0MjQyNDJ9Ym9keS5kYXJrLW1vZGUgLm1hdC1zdGVwcGVyLXZlcnRpY2FsLWxpbmU6OmJlZm9yZXtib3JkZXItbGVmdC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyOjpiZWZvcmUsYm9keS5kYXJrLW1vZGUgLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyOjphZnRlcixib2R5LmRhcmstbW9kZSAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbC1saW5le2JvcmRlci10b3AtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtc29ydC1oZWFkZXItYXJyb3d7Y29sb3I6I2M2YzZjNn1ib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWhlYWRlcntib3JkZXItYm90dG9tOjFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAtaW52ZXJ0ZWQtaGVhZGVyIC5tYXQtdGFiLW5hdi1iYXIsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAtaW52ZXJ0ZWQtaGVhZGVyIC5tYXQtdGFiLWhlYWRlcntib3JkZXItdG9wOjFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LC4xMik7Ym9yZGVyLWJvdHRvbTpub25lfWJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWxhYmVsLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWxpbmt7Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZHtjb2xvcjojNjE2MTYxfWJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb257Ym9yZGVyLWNvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbntib3JkZXItY29sb3I6IzYxNjE2MX1ib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cFtjbGFzcyo9bWF0LWJhY2tncm91bmQtXSAubWF0LXRhYi1oZWFkZXIsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhcltjbGFzcyo9bWF0LWJhY2tncm91bmQtXXtib3JkZXItYm90dG9tOm5vbmU7Ym9yZGVyLXRvcDpub25lfWJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5IC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LXByaW1hcnkgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5IC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeSAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5IC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeSAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeSAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeSAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjUxLDE0MCwwLC4zKX1ib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeSAubWF0LWluay1iYXIsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeSAubWF0LWluay1iYXJ7YmFja2dyb3VuZC1jb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5Lm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyIC5tYXQtaW5rLWJhcixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeS5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtaW5rLWJhcixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5Lm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyIC5tYXQtaW5rLWJhcixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5Lm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC1pbmstYmFye2JhY2tncm91bmQtY29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50IC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWFjY2VudCAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWFjY2VudCAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWFjY2VudCAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnQgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnQgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudCAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50IC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTEsMTQwLDAsLjMpfWJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnQgLm1hdC1pbmstYmFyLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudCAubWF0LWluay1iYXJ7YmFja2dyb3VuZC1jb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnQubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWhlYWRlciAubWF0LWluay1iYXIsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWFjY2VudC5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC1pbmstYmFyLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudC5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItaGVhZGVyIC5tYXQtaW5rLWJhcixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnQubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtaW5rLWJhcntiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LXdhcm4gLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtd2FybiAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LXdhcm4gLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC13YXJuIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm4gLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjA1LDIxMCwuMyl9Ym9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LXdhcm4gLm1hdC1pbmstYmFyLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm4gLm1hdC1pbmstYmFye2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn1ib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtd2Fybi5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWhlYWRlciAubWF0LWluay1iYXIsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LXdhcm4ubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LWluay1iYXIsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtd2Fybi5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWhlYWRlciAubWF0LWluay1iYXIsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtd2Fybi5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtaW5rLWJhcntiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeSAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnkgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnkgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnkgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5IC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5IC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnkgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeSAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjUxLDE0MCwwLC4zKX1ib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWhlYWRlcixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24sYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWhlYWRlcixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItbGluay1jb250YWluZXIsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9ue2JhY2tncm91bmQtY29sb3I6I2VmNmMwMH1ib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1sYWJlbCxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtdGFiLWxpbmssYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1sYWJlbCxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC10YWItbGlua3tjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWR7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Ym9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LWZvY3VzLWluZGljYXRvcjo6YmVmb3JlLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyIC5tYXQtZm9jdXMtaW5kaWNhdG9yOjpiZWZvcmUsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbiAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LWZvY3VzLWluZGljYXRvcjo6YmVmb3JlLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1oZWFkZXIgLm1hdC1mb2N1cy1pbmRpY2F0b3I6OmJlZm9yZXtib3JkZXItY29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb257Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfWJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyIC5tYXQtcmlwcGxlLWVsZW1lbnQsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LXJpcHBsZS1lbGVtZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24gLm1hdC1yaXBwbGUtZWxlbWVudCxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyIC5tYXQtcmlwcGxlLWVsZW1lbnQsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtcmlwcGxlLWVsZW1lbnQsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uIC5tYXQtcmlwcGxlLWVsZW1lbnR7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50IC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50IC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnQgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudCAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudCAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50IC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudCAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnQgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1MSwxNDAsMCwuMyl9Ym9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWhlYWRlcixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItbGluay1jb250YWluZXIsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWhlYWRlcixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1saW5rLWNvbnRhaW5lcixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbntiYWNrZ3JvdW5kLWNvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1sYWJlbCxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC10YWItbGluayxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItbGFiZWwsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC10YWItbGlua3tjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZHtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC40KX1ib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtZm9jdXMtaW5kaWNhdG9yOjpiZWZvcmUsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWhlYWRlciAubWF0LWZvY3VzLWluZGljYXRvcjo6YmVmb3JlLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC1mb2N1cy1pbmRpY2F0b3I6OmJlZm9yZSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1oZWFkZXIgLm1hdC1mb2N1cy1pbmRpY2F0b3I6OmJlZm9yZXtib3JkZXItY29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbntib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Ym9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWhlYWRlciAubWF0LXJpcHBsZS1lbGVtZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LXJpcHBsZS1lbGVtZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbiAubWF0LXJpcHBsZS1lbGVtZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWhlYWRlciAubWF0LXJpcHBsZS1lbGVtZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtcmlwcGxlLWVsZW1lbnQsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24gLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2FybiAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2FybiAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2FybiAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2FybiAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjA1LDIxMCwuMyl9Ym9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1oZWFkZXIsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1saW5rLWNvbnRhaW5lcixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1oZWFkZXIsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWxpbmstY29udGFpbmVyLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbntiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Ym9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItbGFiZWwsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LXRhYi1saW5rLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItbGFiZWwsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtdGFiLWxpbmt7Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVke2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfWJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbiAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC1mb2N1cy1pbmRpY2F0b3I6OmJlZm9yZSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWhlYWRlciAubWF0LWZvY3VzLWluZGljYXRvcjo6YmVmb3JlLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24gLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC1mb2N1cy1pbmRpY2F0b3I6OmJlZm9yZSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyIC5tYXQtZm9jdXMtaW5kaWNhdG9yOjpiZWZvcmV7Ym9yZGVyLWNvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9ue2JvcmRlci1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC40KX1ib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWhlYWRlciAubWF0LXJpcHBsZS1lbGVtZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC1yaXBwbGUtZWxlbWVudCxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uIC5tYXQtcmlwcGxlLWVsZW1lbnQsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWhlYWRlciAubWF0LXJpcHBsZS1lbGVtZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LXJpcHBsZS1lbGVtZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbiAubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtdG9vbGJhcntiYWNrZ3JvdW5kOiNlZjZjMDA7Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LXRvb2xiYXIubWF0LXByaW1hcnl7YmFja2dyb3VuZDojZWY2YzAwO2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC10b29sYmFyLm1hdC1hY2NlbnR7YmFja2dyb3VuZDojZWY2YzAwO2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC10b29sYmFyLm1hdC13YXJue2JhY2tncm91bmQ6I2Y0NDMzNjtjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtdG9vbGJhciAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lLGJvZHkuZGFyay1tb2RlIC5tYXQtdG9vbGJhciAubWF0LWZvcm0tZmllbGQtcmlwcGxlLGJvZHkuZGFyay1tb2RlIC5tYXQtdG9vbGJhciAubWF0LWZvY3VzZWQgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZXtiYWNrZ3JvdW5kLWNvbG9yOmN1cnJlbnRDb2xvcn1ib2R5LmRhcmstbW9kZSAubWF0LXRvb2xiYXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLGJvZHkuZGFyay1tb2RlIC5tYXQtdG9vbGJhciAubWF0LWZvY3VzZWQgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLGJvZHkuZGFyay1tb2RlIC5tYXQtdG9vbGJhciAubWF0LXNlbGVjdC12YWx1ZSxib2R5LmRhcmstbW9kZSAubWF0LXRvb2xiYXIgLm1hdC1zZWxlY3QtYXJyb3csYm9keS5kYXJrLW1vZGUgLm1hdC10b29sYmFyIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZCAubWF0LXNlbGVjdC1hcnJvd3tjb2xvcjppbmhlcml0fWJvZHkuZGFyay1tb2RlIC5tYXQtdG9vbGJhciAubWF0LWlucHV0LWVsZW1lbnR7Y2FyZXQtY29sb3I6Y3VycmVudENvbG9yfWJvZHkuZGFyay1tb2RlIC5tYXQtdG9vbHRpcHtiYWNrZ3JvdW5kOnJnYmEoOTcsOTcsOTcsLjkpfWJvZHkuZGFyay1tb2RlIC5tYXQtdHJlZXtiYWNrZ3JvdW5kOiM0MjQyNDJ9Ym9keS5kYXJrLW1vZGUgLm1hdC10cmVlLW5vZGUsYm9keS5kYXJrLW1vZGUgLm1hdC1uZXN0ZWQtdHJlZS1ub2Rle2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1zbmFjay1iYXItY29udGFpbmVye2NvbG9yOnJnYmEoMCwwLDAsLjg3KTtiYWNrZ3JvdW5kOiNmYWZhZmE7Ym94LXNoYWRvdzowcHggM3B4IDVweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNnB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbntjb2xvcjppbmhlcml0fQo8L3N0eWxlPgoKPHN0eWxlPgogIGh0bWwsCiAgYm9keSB7CiAgICBtYXJnaW46IDA7CiAgICBwYWRkaW5nOiAwOwogICAgaGVpZ2h0OiAxMDAlOwogICAgZm9udC1mYW1pbHk6IFJvYm90bywgc2Fucy1zZXJpZjsKICAgIGNvbG9yOiB2YXIoLS1wcmltYXJ5LXRleHQtY29sb3IpOwoKICAgIC8qIExlZ2FjeSBtZWNoYW5pc20gdG8gYXZvaWQgaXNzdWVzIHdpdGggc3VicGl4ZWwgYW50aS1hbGlhc2luZyBvbiBtYWNPUy4KICAgICAqCiAgICAgKiBJbiB0aGUgcGFzdCBbMV0sIG1hY09TIHN1YnBpeGVsIEFBIGNhdXNlZCBleGNlc3NpdmUgYm9sZGluZyBmb3IgbGlnaHQtb24tZGFyayB0ZXh0OyB0aGlzIHJ1bGUKICAgICAqIGF2b2lkcyB0aGF0IGJ5IHJlcXVlc3Rpbmcgbm9uLXN1YnBpeGVsIEFBIGFsd2F5cywgcmF0aGVyIHRoYW4gdGhlIGRlZmF1bHQgYmVoYXZpb3IsIHdoaWNoIGlzCiAgICAgKiB0byB1c2Ugc3VicGl4ZWwgQUEgd2hlbiBhdmFpbGFibGUuIFRoZSBvcmlnaW5hbCBpc3N1ZSB3YXMgImZpeGVkIiBieSByZW1vdmluZyBzdWJwaXhlbCBBQSBpbgogICAgICogbWFjT1MgMTQgKE1vamF2ZSksIGJ1dCBmb3IgbGVnYWN5IHJlYXNvbnMgdGhleSBwcmVzZXJ2ZWQgdGhlIGJvbGRpbmcgZWZmZWN0IGFzIGFuIG9wdGlvbi4KICAgICAqIENocm9tZSB0aGVuIGluIHR1cm4gdXBkYXRlZCBpdHMgZm9udCByZW5kZXJpbmcgdG8gYXBwbHkgdGhhdCBib2xkaW5nIGVmZmVjdCBbMl0sIHdoaWNoIG1lYW5zCiAgICAgKiB0aGF0IGV2ZW4gdGhvdWdoIHRoZSBgLXdlYmtpdC1mb250LXNtb290aGluZ2AgZG9jcyBbM10gc3VnZ2VzdCB0aGF0IHNldHRpbmcgYGFudGlhbGlhc2VkYAogICAgICogd291bGQgaGF2ZSBubyBlZmZlY3QgZm9yIHJlY2VudCB2ZXJzaW9ucyBvZiBtYWNPUywgaXQgc3RpbGwgaXMgbmVlZGVkIHRvIGF2b2lkIHRoZSBib2xkaW5nLgogICAgICoKICAgICAqIFsxXTogaHR0cDovL3d3dy5saWdodGVycmEuY29tL2FydGljbGVzL21hY29zeHRleHRhYWJ1Zy8KICAgICAqIFsyXTogaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9ODU4ODYxCiAgICAgKiBbM106IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9mb250LXNtb290aAogICAgICoKICAgICAqLwoKICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOwogIH0KICBub3NjcmlwdCB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIG1hcmdpbjogMCBhdXRvOwogICAgbWF4LXdpZHRoOiA2MDBweDsKICAgIHBhZGRpbmc6IDEwcHg7CiAgfQo8L3N0eWxlPgoKPC9oZWFkPjxib2R5Pjxub3NjcmlwdD4KICAgIDxoMT5UZW5zb3JCb2FyZCByZXF1aXJlcyBKYXZhU2NyaXB0PC9oMT4KICAgIDxwPlBsZWFzZSBlbmFibGUgSmF2YVNjcmlwdCBhbmQgcmVsb2FkIHRoaXMgcGFnZS48L3A+CiAgPC9ub3NjcmlwdD48dGItd2ViYXBwPjwvdGItd2ViYXBwPjxzY3JpcHQgc3JjPSJpbmRleC5qcz9fZmlsZV9oYXNoPTRhMzY2Y2JlIj48L3NjcmlwdD48L2JvZHk+PC9odG1sPg==",
+ "ok": true,
+ "headers": [
+ [
+ "content-type",
+ "text/html; charset=utf-8"
+ ]
+ ],
+ "status": 200,
+ "status_text": ""
+ },
+ "https://localhost:6009/font-roboto/oMMgfZMQthOryQo9n22dcuvvDin1pK8aKteLpeZ5c0A.woff2": {
+ "data": "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",
+ "ok": true,
+ "headers": [
+ [
+ "content-type",
+ "font/woff2"
+ ]
+ ],
+ "status": 200,
+ "status_text": ""
+ },
+ "https://localhost:6009/index.js?_file_hash=4a366cbe": {
+ "data": "dmFyIENMT1NVUkVfTk9fREVQUyA9IHRydWU7CndpbmRvdy5wb2x5bWVyU2tpcExvYWRpbmdGb250Um9ib3RvID0gdHJ1ZTsKLyoqIHZpbTogZXQ6dHM9NDpzdz00OnN0cz00CiAqIEBsaWNlbnNlIFJlcXVpcmVKUyAyLjMuNiBDb3B5cmlnaHQgalF1ZXJ5IEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9ycy4KICogUmVsZWFzZWQgdW5kZXIgTUlUIGxpY2Vuc2UsIGh0dHBzOi8vZ2l0aHViLmNvbS9yZXF1aXJlanMvcmVxdWlyZWpzL2Jsb2IvbWFzdGVyL0xJQ0VOU0UKICovCi8vTm90IHVzaW5nIHN0cmljdDogdW5ldmVuIHN0cmljdCBzdXBwb3J0IGluIGJyb3dzZXJzLCAjMzkyLCBhbmQgY2F1c2VzCi8vcHJvYmxlbXMgd2l0aCByZXF1aXJlanMuZXhlYygpL3RyYW5zcGlsZXIgcGx1Z2lucyB0aGF0IG1heSBub3QgYmUgc3RyaWN0LgovKmpzbGludCByZWdleHA6IHRydWUsIG5vbWVuOiB0cnVlLCBzbG9wcHk6IHRydWUgKi8KLypnbG9iYWwgd2luZG93LCBuYXZpZ2F0b3IsIGRvY3VtZW50LCBpbXBvcnRTY3JpcHRzLCBzZXRUaW1lb3V0LCBvcGVyYSAqLwoKdmFyIHJlcXVpcmVqcywgcmVxdWlyZSwgZGVmaW5lOwooZnVuY3Rpb24gKGdsb2JhbCwgc2V0VGltZW91dCkgewogICAgdmFyIHJlcSwgcywgaGVhZCwgYmFzZUVsZW1lbnQsIGRhdGFNYWluLCBzcmMsCiAgICAgICAgaW50ZXJhY3RpdmVTY3JpcHQsIGN1cnJlbnRseUFkZGluZ1NjcmlwdCwgbWFpblNjcmlwdCwgc3ViUGF0aCwKICAgICAgICB2ZXJzaW9uID0gJzIuMy42JywKICAgICAgICBjb21tZW50UmVnRXhwID0gL1wvXCpbXHNcU10qP1wqXC98KFteOiInPV18XilcL1wvLiokL21nLAogICAgICAgIGNqc1JlcXVpcmVSZWdFeHAgPSAvW14uXVxzKnJlcXVpcmVccypcKFxzKlsiJ10oW14nIlxzXSspWyInXVxzKlwpL2csCiAgICAgICAganNTdWZmaXhSZWdFeHAgPSAvXC5qcyQvLAogICAgICAgIGN1cnJEaXJSZWdFeHAgPSAvXlwuXC8vLAogICAgICAgIG9wID0gT2JqZWN0LnByb3RvdHlwZSwKICAgICAgICBvc3RyaW5nID0gb3AudG9TdHJpbmcsCiAgICAgICAgaGFzT3duID0gb3AuaGFzT3duUHJvcGVydHksCiAgICAgICAgaXNCcm93c2VyID0gISEodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LmRvY3VtZW50KSwKICAgICAgICBpc1dlYldvcmtlciA9ICFpc0Jyb3dzZXIgJiYgdHlwZW9mIGltcG9ydFNjcmlwdHMgIT09ICd1bmRlZmluZWQnLAogICAgICAgIC8vUFMzIGluZGljYXRlcyBsb2FkZWQgYW5kIGNvbXBsZXRlLCBidXQgbmVlZCB0byB3YWl0IGZvciBjb21wbGV0ZQogICAgICAgIC8vc3BlY2lmaWNhbGx5LiBTZXF1ZW5jZSBpcyAnbG9hZGluZycsICdsb2FkZWQnLCBleGVjdXRpb24sCiAgICAgICAgLy8gdGhlbiAnY29tcGxldGUnLiBUaGUgVUEgY2hlY2sgaXMgdW5mb3J0dW5hdGUsIGJ1dCBub3Qgc3VyZSBob3cKICAgICAgICAvL3RvIGZlYXR1cmUgdGVzdCB3L28gY2F1c2luZyBwZXJmIGlzc3Vlcy4KICAgICAgICByZWFkeVJlZ0V4cCA9IGlzQnJvd3NlciAmJiBuYXZpZ2F0b3IucGxhdGZvcm0gPT09ICdQTEFZU1RBVElPTiAzJyA/CiAgICAgICAgICAgICAgICAgICAgICAvXmNvbXBsZXRlJC8gOiAvXihjb21wbGV0ZXxsb2FkZWQpJC8sCiAgICAgICAgZGVmQ29udGV4dE5hbWUgPSAnXycsCiAgICAgICAgLy9PaCB0aGUgdHJhZ2VkeSwgZGV0ZWN0aW5nIG9wZXJhLiBTZWUgdGhlIHVzYWdlIG9mIGlzT3BlcmEgZm9yIHJlYXNvbi4KICAgICAgICBpc09wZXJhID0gdHlwZW9mIG9wZXJhICE9PSAndW5kZWZpbmVkJyAmJiBvcGVyYS50b1N0cmluZygpID09PSAnW29iamVjdCBPcGVyYV0nLAogICAgICAgIGNvbnRleHRzID0ge30sCiAgICAgICAgY2ZnID0ge30sCiAgICAgICAgZ2xvYmFsRGVmUXVldWUgPSBbXSwKICAgICAgICB1c2VJbnRlcmFjdGl2ZSA9IGZhbHNlOwoKICAgIC8vQ291bGQgbWF0Y2ggc29tZXRoaW5nIGxpa2UgJykvL2NvbW1lbnQnLCBkbyBub3QgbG9zZSB0aGUgcHJlZml4IHRvIGNvbW1lbnQuCiAgICBmdW5jdGlvbiBjb21tZW50UmVwbGFjZShtYXRjaCwgc2luZ2xlUHJlZml4KSB7CiAgICAgICAgcmV0dXJuIHNpbmdsZVByZWZpeCB8fCAnJzsKICAgIH0KCiAgICBmdW5jdGlvbiBpc0Z1bmN0aW9uKGl0KSB7CiAgICAgICAgcmV0dXJuIG9zdHJpbmcuY2FsbChpdCkgPT09ICdbb2JqZWN0IEZ1bmN0aW9uXSc7CiAgICB9CgogICAgZnVuY3Rpb24gaXNBcnJheShpdCkgewogICAgICAgIHJldHVybiBvc3RyaW5nLmNhbGwoaXQpID09PSAnW29iamVjdCBBcnJheV0nOwogICAgfQoKICAgIC8qKgogICAgICogSGVscGVyIGZ1bmN0aW9uIGZvciBpdGVyYXRpbmcgb3ZlciBhbiBhcnJheS4gSWYgdGhlIGZ1bmMgcmV0dXJucwogICAgICogYSB0cnVlIHZhbHVlLCBpdCB3aWxsIGJyZWFrIG91dCBvZiB0aGUgbG9vcC4KICAgICAqLwogICAgZnVuY3Rpb24gZWFjaChhcnksIGZ1bmMpIHsKICAgICAgICBpZiAoYXJ5KSB7CiAgICAgICAgICAgIHZhciBpOwogICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYXJ5Lmxlbmd0aDsgaSArPSAxKSB7CiAgICAgICAgICAgICAgICBpZiAoYXJ5W2ldICYmIGZ1bmMoYXJ5W2ldLCBpLCBhcnkpKSB7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBIZWxwZXIgZnVuY3Rpb24gZm9yIGl0ZXJhdGluZyBvdmVyIGFuIGFycmF5IGJhY2t3YXJkcy4gSWYgdGhlIGZ1bmMKICAgICAqIHJldHVybnMgYSB0cnVlIHZhbHVlLCBpdCB3aWxsIGJyZWFrIG91dCBvZiB0aGUgbG9vcC4KICAgICAqLwogICAgZnVuY3Rpb24gZWFjaFJldmVyc2UoYXJ5LCBmdW5jKSB7CiAgICAgICAgaWYgKGFyeSkgewogICAgICAgICAgICB2YXIgaTsKICAgICAgICAgICAgZm9yIChpID0gYXJ5Lmxlbmd0aCAtIDE7IGkgPiAtMTsgaSAtPSAxKSB7CiAgICAgICAgICAgICAgICBpZiAoYXJ5W2ldICYmIGZ1bmMoYXJ5W2ldLCBpLCBhcnkpKSB7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gaGFzUHJvcChvYmosIHByb3ApIHsKICAgICAgICByZXR1cm4gaGFzT3duLmNhbGwob2JqLCBwcm9wKTsKICAgIH0KCiAgICBmdW5jdGlvbiBnZXRPd24ob2JqLCBwcm9wKSB7CiAgICAgICAgcmV0dXJuIGhhc1Byb3Aob2JqLCBwcm9wKSAmJiBvYmpbcHJvcF07CiAgICB9CgogICAgLyoqCiAgICAgKiBDeWNsZXMgb3ZlciBwcm9wZXJ0aWVzIGluIGFuIG9iamVjdCBhbmQgY2FsbHMgYSBmdW5jdGlvbiBmb3IgZWFjaAogICAgICogcHJvcGVydHkgdmFsdWUuIElmIHRoZSBmdW5jdGlvbiByZXR1cm5zIGEgdHJ1dGh5IHZhbHVlLCB0aGVuIHRoZQogICAgICogaXRlcmF0aW9uIGlzIHN0b3BwZWQuCiAgICAgKi8KICAgIGZ1bmN0aW9uIGVhY2hQcm9wKG9iaiwgZnVuYykgewogICAgICAgIHZhciBwcm9wOwogICAgICAgIGZvciAocHJvcCBpbiBvYmopIHsKICAgICAgICAgICAgaWYgKGhhc1Byb3Aob2JqLCBwcm9wKSkgewogICAgICAgICAgICAgICAgaWYgKGZ1bmMob2JqW3Byb3BdLCBwcm9wKSkgewogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogU2ltcGxlIGZ1bmN0aW9uIHRvIG1peCBpbiBwcm9wZXJ0aWVzIGZyb20gc291cmNlIGludG8gdGFyZ2V0LAogICAgICogYnV0IG9ubHkgaWYgdGFyZ2V0IGRvZXMgbm90IGFscmVhZHkgaGF2ZSBhIHByb3BlcnR5IG9mIHRoZSBzYW1lIG5hbWUuCiAgICAgKi8KICAgIGZ1bmN0aW9uIG1peGluKHRhcmdldCwgc291cmNlLCBmb3JjZSwgZGVlcFN0cmluZ01peGluKSB7CiAgICAgICAgaWYgKHNvdXJjZSkgewogICAgICAgICAgICBlYWNoUHJvcChzb3VyY2UsIGZ1bmN0aW9uICh2YWx1ZSwgcHJvcCkgewogICAgICAgICAgICAgICAgaWYgKGZvcmNlIHx8ICFoYXNQcm9wKHRhcmdldCwgcHJvcCkpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoZGVlcFN0cmluZ01peGluICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYKICAgICAgICAgICAgICAgICAgICAgICAgIWlzQXJyYXkodmFsdWUpICYmICFpc0Z1bmN0aW9uKHZhbHVlKSAmJgogICAgICAgICAgICAgICAgICAgICAgICAhKHZhbHVlIGluc3RhbmNlb2YgUmVnRXhwKSkgewoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0YXJnZXRbcHJvcF0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFtwcm9wXSA9IHt9OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIG1peGluKHRhcmdldFtwcm9wXSwgdmFsdWUsIGZvcmNlLCBkZWVwU3RyaW5nTWl4aW4pOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFtwcm9wXSA9IHZhbHVlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiB0YXJnZXQ7CiAgICB9CgogICAgLy9TaW1pbGFyIHRvIEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kLCBidXQgdGhlICd0aGlzJyBvYmplY3QgaXMgc3BlY2lmaWVkCiAgICAvL2ZpcnN0LCBzaW5jZSBpdCBpcyBlYXNpZXIgdG8gcmVhZC9maWd1cmUgb3V0IHdoYXQgJ3RoaXMnIHdpbGwgYmUuCiAgICBmdW5jdGlvbiBiaW5kKG9iaiwgZm4pIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkgewogICAgICAgICAgICByZXR1cm4gZm4uYXBwbHkob2JqLCBhcmd1bWVudHMpOwogICAgICAgIH07CiAgICB9CgogICAgZnVuY3Rpb24gc2NyaXB0cygpIHsKICAgICAgICByZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3NjcmlwdCcpOwogICAgfQoKICAgIGZ1bmN0aW9uIGRlZmF1bHRPbkVycm9yKGVycikgewogICAgICAgIHRocm93IGVycjsKICAgIH0KCiAgICAvL0FsbG93IGdldHRpbmcgYSBnbG9iYWwgdGhhdCBpcyBleHByZXNzZWQgaW4KICAgIC8vZG90IG5vdGF0aW9uLCBsaWtlICdhLmIuYycuCiAgICBmdW5jdGlvbiBnZXRHbG9iYWwodmFsdWUpIHsKICAgICAgICBpZiAoIXZhbHVlKSB7CiAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICAgICB9CiAgICAgICAgdmFyIGcgPSBnbG9iYWw7CiAgICAgICAgZWFjaCh2YWx1ZS5zcGxpdCgnLicpLCBmdW5jdGlvbiAocGFydCkgewogICAgICAgICAgICBnID0gZ1twYXJ0XTsKICAgICAgICB9KTsKICAgICAgICByZXR1cm4gZzsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnN0cnVjdHMgYW4gZXJyb3Igd2l0aCBhIHBvaW50ZXIgdG8gYW4gVVJMIHdpdGggbW9yZSBpbmZvcm1hdGlvbi4KICAgICAqIEBwYXJhbSB7U3RyaW5nfSBpZCB0aGUgZXJyb3IgSUQgdGhhdCBtYXBzIHRvIGFuIElEIG9uIGEgd2ViIHBhZ2UuCiAgICAgKiBAcGFyYW0ge1N0cmluZ30gbWVzc2FnZSBodW1hbiByZWFkYWJsZSBlcnJvci4KICAgICAqIEBwYXJhbSB7RXJyb3J9IFtlcnJdIHRoZSBvcmlnaW5hbCBlcnJvciwgaWYgdGhlcmUgaXMgb25lLgogICAgICoKICAgICAqIEByZXR1cm5zIHtFcnJvcn0KICAgICAqLwogICAgZnVuY3Rpb24gbWFrZUVycm9yKGlkLCBtc2csIGVyciwgcmVxdWlyZU1vZHVsZXMpIHsKICAgICAgICB2YXIgZSA9IG5ldyBFcnJvcihtc2cgKyAnXG5odHRwczovL3JlcXVpcmVqcy5vcmcvZG9jcy9lcnJvcnMuaHRtbCMnICsgaWQpOwogICAgICAgIGUucmVxdWlyZVR5cGUgPSBpZDsKICAgICAgICBlLnJlcXVpcmVNb2R1bGVzID0gcmVxdWlyZU1vZHVsZXM7CiAgICAgICAgaWYgKGVycikgewogICAgICAgICAgICBlLm9yaWdpbmFsRXJyb3IgPSBlcnI7CiAgICAgICAgfQogICAgICAgIHJldHVybiBlOwogICAgfQoKICAgIGlmICh0eXBlb2YgZGVmaW5lICE9PSAndW5kZWZpbmVkJykgewogICAgICAgIC8vSWYgYSBkZWZpbmUgaXMgYWxyZWFkeSBpbiBwbGF5IHZpYSBhbm90aGVyIEFNRCBsb2FkZXIsCiAgICAgICAgLy9kbyBub3Qgb3ZlcndyaXRlLgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBpZiAodHlwZW9mIHJlcXVpcmVqcyAhPT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICBpZiAoaXNGdW5jdGlvbihyZXF1aXJlanMpKSB7CiAgICAgICAgICAgIC8vRG8gbm90IG92ZXJ3cml0ZSBhbiBleGlzdGluZyByZXF1aXJlanMgaW5zdGFuY2UuCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgY2ZnID0gcmVxdWlyZWpzOwogICAgICAgIHJlcXVpcmVqcyA9IHVuZGVmaW5lZDsKICAgIH0KCiAgICAvL0FsbG93IGZvciBhIHJlcXVpcmUgY29uZmlnIG9iamVjdAogICAgaWYgKHR5cGVvZiByZXF1aXJlICE9PSAndW5kZWZpbmVkJyAmJiAhaXNGdW5jdGlvbihyZXF1aXJlKSkgewogICAgICAgIC8vYXNzdW1lIGl0IGlzIGEgY29uZmlnIG9iamVjdC4KICAgICAgICBjZmcgPSByZXF1aXJlOwogICAgICAgIHJlcXVpcmUgPSB1bmRlZmluZWQ7CiAgICB9CgogICAgZnVuY3Rpb24gbmV3Q29udGV4dChjb250ZXh0TmFtZSkgewogICAgICAgIHZhciBpbkNoZWNrTG9hZGVkLCBNb2R1bGUsIGNvbnRleHQsIGhhbmRsZXJzLAogICAgICAgICAgICBjaGVja0xvYWRlZFRpbWVvdXRJZCwKICAgICAgICAgICAgY29uZmlnID0gewogICAgICAgICAgICAgICAgLy9EZWZhdWx0cy4gRG8gbm90IHNldCBhIGRlZmF1bHQgZm9yIG1hcAogICAgICAgICAgICAgICAgLy9jb25maWcgdG8gc3BlZWQgdXAgbm9ybWFsaXplKCksIHdoaWNoCiAgICAgICAgICAgICAgICAvL3dpbGwgcnVuIGZhc3RlciBpZiB0aGVyZSBpcyBubyBkZWZhdWx0LgogICAgICAgICAgICAgICAgd2FpdFNlY29uZHM6IDcsCiAgICAgICAgICAgICAgICBiYXNlVXJsOiAnLi8nLAogICAgICAgICAgICAgICAgcGF0aHM6IHt9LAogICAgICAgICAgICAgICAgYnVuZGxlczoge30sCiAgICAgICAgICAgICAgICBwa2dzOiB7fSwKICAgICAgICAgICAgICAgIHNoaW06IHt9LAogICAgICAgICAgICAgICAgY29uZmlnOiB7fQogICAgICAgICAgICB9LAogICAgICAgICAgICByZWdpc3RyeSA9IHt9LAogICAgICAgICAgICAvL3JlZ2lzdHJ5IG9mIGp1c3QgZW5hYmxlZCBtb2R1bGVzLCB0byBzcGVlZAogICAgICAgICAgICAvL2N5Y2xlIGJyZWFraW5nIGNvZGUgd2hlbiBsb3RzIG9mIG1vZHVsZXMKICAgICAgICAgICAgLy9hcmUgcmVnaXN0ZXJlZCwgYnV0IG5vdCBhY3RpdmF0ZWQuCiAgICAgICAgICAgIGVuYWJsZWRSZWdpc3RyeSA9IHt9LAogICAgICAgICAgICB1bmRlZkV2ZW50cyA9IHt9LAogICAgICAgICAgICBkZWZRdWV1ZSA9IFtdLAogICAgICAgICAgICBkZWZpbmVkID0ge30sCiAgICAgICAgICAgIHVybEZldGNoZWQgPSB7fSwKICAgICAgICAgICAgYnVuZGxlc01hcCA9IHt9LAogICAgICAgICAgICByZXF1aXJlQ291bnRlciA9IDEsCiAgICAgICAgICAgIHVubm9ybWFsaXplZENvdW50ZXIgPSAxOwoKICAgICAgICAvKioKICAgICAgICAgKiBUcmltcyB0aGUgLiBhbmQgLi4gZnJvbSBhbiBhcnJheSBvZiBwYXRoIHNlZ21lbnRzLgogICAgICAgICAqIEl0IHdpbGwga2VlcCBhIGxlYWRpbmcgcGF0aCBzZWdtZW50IGlmIGEgLi4gd2lsbCBiZWNvbWUKICAgICAgICAgKiB0aGUgZmlyc3QgcGF0aCBzZWdtZW50LCB0byBoZWxwIHdpdGggbW9kdWxlIG5hbWUgbG9va3VwcywKICAgICAgICAgKiB3aGljaCBhY3QgbGlrZSBwYXRocywgYnV0IGNhbiBiZSByZW1hcHBlZC4gQnV0IHRoZSBlbmQgcmVzdWx0LAogICAgICAgICAqIGFsbCBwYXRocyB0aGF0IHVzZSB0aGlzIGZ1bmN0aW9uIHNob3VsZCBsb29rIG5vcm1hbGl6ZWQuCiAgICAgICAgICogTk9URTogdGhpcyBtZXRob2QgTU9ESUZJRVMgdGhlIGlucHV0IGFycmF5LgogICAgICAgICAqIEBwYXJhbSB7QXJyYXl9IGFyeSB0aGUgYXJyYXkgb2YgcGF0aCBzZWdtZW50cy4KICAgICAgICAgKi8KICAgICAgICBmdW5jdGlvbiB0cmltRG90cyhhcnkpIHsKICAgICAgICAgICAgdmFyIGksIHBhcnQ7CiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBhcnkubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgIHBhcnQgPSBhcnlbaV07CiAgICAgICAgICAgICAgICBpZiAocGFydCA9PT0gJy4nKSB7CiAgICAgICAgICAgICAgICAgICAgYXJ5LnNwbGljZShpLCAxKTsKICAgICAgICAgICAgICAgICAgICBpIC09IDE7CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHBhcnQgPT09ICcuLicpIHsKICAgICAgICAgICAgICAgICAgICAvLyBJZiBhdCB0aGUgc3RhcnQsIG9yIHByZXZpb3VzIHZhbHVlIGlzIHN0aWxsIC4uLAogICAgICAgICAgICAgICAgICAgIC8vIGtlZXAgdGhlbSBzbyB0aGF0IHdoZW4gY29udmVydGVkIHRvIGEgcGF0aCBpdCBtYXkKICAgICAgICAgICAgICAgICAgICAvLyBzdGlsbCB3b3JrIHdoZW4gY29udmVydGVkIHRvIGEgcGF0aCwgZXZlbiB0aG91Z2gKICAgICAgICAgICAgICAgICAgICAvLyBhcyBhbiBJRCBpdCBpcyBsZXNzIHRoYW4gaWRlYWwuIEluIGxhcmdlciBwb2ludAogICAgICAgICAgICAgICAgICAgIC8vIHJlbGVhc2VzLCBtYXkgYmUgYmV0dGVyIHRvIGp1c3Qga2ljayBvdXQgYW4gZXJyb3IuCiAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT09IDAgfHwgKGkgPT09IDEgJiYgYXJ5WzJdID09PSAnLi4nKSB8fCBhcnlbaSAtIDFdID09PSAnLi4nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaSA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgYXJ5LnNwbGljZShpIC0gMSwgMik7CiAgICAgICAgICAgICAgICAgICAgICAgIGkgLT0gMjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8qKgogICAgICAgICAqIEdpdmVuIGEgcmVsYXRpdmUgbW9kdWxlIG5hbWUsIGxpa2UgLi9zb21ldGhpbmcsIG5vcm1hbGl6ZSBpdCB0bwogICAgICAgICAqIGEgcmVhbCBuYW1lIHRoYXQgY2FuIGJlIG1hcHBlZCB0byBhIHBhdGguCiAgICAgICAgICogQHBhcmFtIHtTdHJpbmd9IG5hbWUgdGhlIHJlbGF0aXZlIG5hbWUKICAgICAgICAgKiBAcGFyYW0ge1N0cmluZ30gYmFzZU5hbWUgYSByZWFsIG5hbWUgdGhhdCB0aGUgbmFtZSBhcmcgaXMgcmVsYXRpdmUKICAgICAgICAgKiB0by4KICAgICAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IGFwcGx5TWFwIGFwcGx5IHRoZSBtYXAgY29uZmlnIHRvIHRoZSB2YWx1ZS4gU2hvdWxkCiAgICAgICAgICogb25seSBiZSBkb25lIGlmIHRoaXMgbm9ybWFsaXphdGlvbiBpcyBmb3IgYSBkZXBlbmRlbmN5IElELgogICAgICAgICAqIEByZXR1cm5zIHtTdHJpbmd9IG5vcm1hbGl6ZWQgbmFtZQogICAgICAgICAqLwogICAgICAgIGZ1bmN0aW9uIG5vcm1hbGl6ZShuYW1lLCBiYXNlTmFtZSwgYXBwbHlNYXApIHsKICAgICAgICAgICAgdmFyIHBrZ01haW4sIG1hcFZhbHVlLCBuYW1lUGFydHMsIGksIGosIG5hbWVTZWdtZW50LCBsYXN0SW5kZXgsCiAgICAgICAgICAgICAgICBmb3VuZE1hcCwgZm91bmRJLCBmb3VuZFN0YXJNYXAsIHN0YXJJLCBub3JtYWxpemVkQmFzZVBhcnRzLAogICAgICAgICAgICAgICAgYmFzZVBhcnRzID0gKGJhc2VOYW1lICYmIGJhc2VOYW1lLnNwbGl0KCcvJykpLAogICAgICAgICAgICAgICAgbWFwID0gY29uZmlnLm1hcCwKICAgICAgICAgICAgICAgIHN0YXJNYXAgPSBtYXAgJiYgbWFwWycqJ107CgogICAgICAgICAgICAvL0FkanVzdCBhbnkgcmVsYXRpdmUgcGF0aHMuCiAgICAgICAgICAgIGlmIChuYW1lKSB7CiAgICAgICAgICAgICAgICBuYW1lID0gbmFtZS5zcGxpdCgnLycpOwogICAgICAgICAgICAgICAgbGFzdEluZGV4ID0gbmFtZS5sZW5ndGggLSAxOwoKICAgICAgICAgICAgICAgIC8vIElmIHdhbnRpbmcgbm9kZSBJRCBjb21wYXRpYmlsaXR5LCBzdHJpcCAuanMgZnJvbSBlbmQKICAgICAgICAgICAgICAgIC8vIG9mIElEcy4gSGF2ZSB0byBkbyB0aGlzIGhlcmUsIGFuZCBub3QgaW4gbmFtZVRvVXJsCiAgICAgICAgICAgICAgICAvLyBiZWNhdXNlIG5vZGUgYWxsb3dzIGVpdGhlciAuanMgb3Igbm9uIC5qcyB0byBtYXAKICAgICAgICAgICAgICAgIC8vIHRvIHNhbWUgZmlsZS4KICAgICAgICAgICAgICAgIGlmIChjb25maWcubm9kZUlkQ29tcGF0ICYmIGpzU3VmZml4UmVnRXhwLnRlc3QobmFtZVtsYXN0SW5kZXhdKSkgewogICAgICAgICAgICAgICAgICAgIG5hbWVbbGFzdEluZGV4XSA9IG5hbWVbbGFzdEluZGV4XS5yZXBsYWNlKGpzU3VmZml4UmVnRXhwLCAnJyk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8gU3RhcnRzIHdpdGggYSAnLicgc28gbmVlZCB0aGUgYmFzZU5hbWUKICAgICAgICAgICAgICAgIGlmIChuYW1lWzBdLmNoYXJBdCgwKSA9PT0gJy4nICYmIGJhc2VQYXJ0cykgewogICAgICAgICAgICAgICAgICAgIC8vQ29udmVydCBiYXNlTmFtZSB0byBhcnJheSwgYW5kIGxvcCBvZmYgdGhlIGxhc3QgcGFydCwKICAgICAgICAgICAgICAgICAgICAvL3NvIHRoYXQgLiBtYXRjaGVzIHRoYXQgJ2RpcmVjdG9yeScgYW5kIG5vdCBuYW1lIG9mIHRoZSBiYXNlTmFtZSdzCiAgICAgICAgICAgICAgICAgICAgLy9tb2R1bGUuIEZvciBpbnN0YW5jZSwgYmFzZU5hbWUgb2YgJ29uZS90d28vdGhyZWUnLCBtYXBzIHRvCiAgICAgICAgICAgICAgICAgICAgLy8nb25lL3R3by90aHJlZS5qcycsIGJ1dCB3ZSB3YW50IHRoZSBkaXJlY3RvcnksICdvbmUvdHdvJyBmb3IKICAgICAgICAgICAgICAgICAgICAvL3RoaXMgbm9ybWFsaXphdGlvbi4KICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVkQmFzZVBhcnRzID0gYmFzZVBhcnRzLnNsaWNlKDAsIGJhc2VQYXJ0cy5sZW5ndGggLSAxKTsKICAgICAgICAgICAgICAgICAgICBuYW1lID0gbm9ybWFsaXplZEJhc2VQYXJ0cy5jb25jYXQobmFtZSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgdHJpbURvdHMobmFtZSk7CiAgICAgICAgICAgICAgICBuYW1lID0gbmFtZS5qb2luKCcvJyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vQXBwbHkgbWFwIGNvbmZpZyBpZiBhdmFpbGFibGUuCiAgICAgICAgICAgIGlmIChhcHBseU1hcCAmJiBtYXAgJiYgKGJhc2VQYXJ0cyB8fCBzdGFyTWFwKSkgewogICAgICAgICAgICAgICAgbmFtZVBhcnRzID0gbmFtZS5zcGxpdCgnLycpOwoKICAgICAgICAgICAgICAgIG91dGVyTG9vcDogZm9yIChpID0gbmFtZVBhcnRzLmxlbmd0aDsgaSA+IDA7IGkgLT0gMSkgewogICAgICAgICAgICAgICAgICAgIG5hbWVTZWdtZW50ID0gbmFtZVBhcnRzLnNsaWNlKDAsIGkpLmpvaW4oJy8nKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKGJhc2VQYXJ0cykgewogICAgICAgICAgICAgICAgICAgICAgICAvL0ZpbmQgdGhlIGxvbmdlc3QgYmFzZU5hbWUgc2VnbWVudCBtYXRjaCBpbiB0aGUgY29uZmlnLgogICAgICAgICAgICAgICAgICAgICAgICAvL1NvLCBkbyBqb2lucyBvbiB0aGUgYmlnZ2VzdCB0byBzbWFsbGVzdCBsZW5ndGhzIG9mIGJhc2VQYXJ0cy4KICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChqID0gYmFzZVBhcnRzLmxlbmd0aDsgaiA+IDA7IGogLT0gMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwVmFsdWUgPSBnZXRPd24obWFwLCBiYXNlUGFydHMuc2xpY2UoMCwgaikuam9pbignLycpKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2Jhc2VOYW1lIHNlZ21lbnQgaGFzIGNvbmZpZywgZmluZCBpZiBpdCBoYXMgb25lIGZvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy90aGlzIG5hbWUuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWFwVmFsdWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBWYWx1ZSA9IGdldE93bihtYXBWYWx1ZSwgbmFtZVNlZ21lbnQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtYXBWYWx1ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL01hdGNoLCB1cGRhdGUgbmFtZSB0byB0aGUgbmV3IHZhbHVlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZE1hcCA9IG1hcFZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZEkgPSBpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBvdXRlckxvb3A7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAvL0NoZWNrIGZvciBhIHN0YXIgbWFwIG1hdGNoLCBidXQganVzdCBob2xkIG9uIHRvIGl0LAogICAgICAgICAgICAgICAgICAgIC8vaWYgdGhlcmUgaXMgYSBzaG9ydGVyIHNlZ21lbnQgbWF0Y2ggbGF0ZXIgaW4gYSBtYXRjaGluZwogICAgICAgICAgICAgICAgICAgIC8vY29uZmlnLCB0aGVuIGZhdm9yIG92ZXIgdGhpcyBzdGFyIG1hcC4KICAgICAgICAgICAgICAgICAgICBpZiAoIWZvdW5kU3Rhck1hcCAmJiBzdGFyTWFwICYmIGdldE93bihzdGFyTWFwLCBuYW1lU2VnbWVudCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRTdGFyTWFwID0gZ2V0T3duKHN0YXJNYXAsIG5hbWVTZWdtZW50KTsKICAgICAgICAgICAgICAgICAgICAgICAgc3RhckkgPSBpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoIWZvdW5kTWFwICYmIGZvdW5kU3Rhck1hcCkgewogICAgICAgICAgICAgICAgICAgIGZvdW5kTWFwID0gZm91bmRTdGFyTWFwOwogICAgICAgICAgICAgICAgICAgIGZvdW5kSSA9IHN0YXJJOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmIChmb3VuZE1hcCkgewogICAgICAgICAgICAgICAgICAgIG5hbWVQYXJ0cy5zcGxpY2UoMCwgZm91bmRJLCBmb3VuZE1hcCk7CiAgICAgICAgICAgICAgICAgICAgbmFtZSA9IG5hbWVQYXJ0cy5qb2luKCcvJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIElmIHRoZSBuYW1lIHBvaW50cyB0byBhIHBhY2thZ2UncyBuYW1lLCB1c2UKICAgICAgICAgICAgLy8gdGhlIHBhY2thZ2UgbWFpbiBpbnN0ZWFkLgogICAgICAgICAgICBwa2dNYWluID0gZ2V0T3duKGNvbmZpZy5wa2dzLCBuYW1lKTsKCiAgICAgICAgICAgIHJldHVybiBwa2dNYWluID8gcGtnTWFpbiA6IG5hbWU7CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiByZW1vdmVTY3JpcHQobmFtZSkgewogICAgICAgICAgICBpZiAoaXNCcm93c2VyKSB7CiAgICAgICAgICAgICAgICBlYWNoKHNjcmlwdHMoKSwgZnVuY3Rpb24gKHNjcmlwdE5vZGUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoc2NyaXB0Tm9kZS5nZXRBdHRyaWJ1dGUoJ2RhdGEtcmVxdWlyZW1vZHVsZScpID09PSBuYW1lICYmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHROb2RlLmdldEF0dHJpYnV0ZSgnZGF0YS1yZXF1aXJlY29udGV4dCcpID09PSBjb250ZXh0LmNvbnRleHROYW1lKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdE5vZGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzY3JpcHROb2RlKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGhhc1BhdGhGYWxsYmFjayhpZCkgewogICAgICAgICAgICB2YXIgcGF0aENvbmZpZyA9IGdldE93bihjb25maWcucGF0aHMsIGlkKTsKICAgICAgICAgICAgaWYgKHBhdGhDb25maWcgJiYgaXNBcnJheShwYXRoQ29uZmlnKSAmJiBwYXRoQ29uZmlnLmxlbmd0aCA+IDEpIHsKICAgICAgICAgICAgICAgIC8vUG9wIG9mZiB0aGUgZmlyc3QgYXJyYXkgdmFsdWUsIHNpbmNlIGl0IGZhaWxlZCwgYW5kCiAgICAgICAgICAgICAgICAvL3JldHJ5CiAgICAgICAgICAgICAgICBwYXRoQ29uZmlnLnNoaWZ0KCk7CiAgICAgICAgICAgICAgICBjb250ZXh0LnJlcXVpcmUudW5kZWYoaWQpOwoKICAgICAgICAgICAgICAgIC8vQ3VzdG9tIHJlcXVpcmUgdGhhdCBkb2VzIG5vdCBkbyBtYXAgdHJhbnNsYXRpb24sIHNpbmNlCiAgICAgICAgICAgICAgICAvL0lEIGlzICJhYnNvbHV0ZSIsIGFscmVhZHkgbWFwcGVkL3Jlc29sdmVkLgogICAgICAgICAgICAgICAgY29udGV4dC5tYWtlUmVxdWlyZShudWxsLCB7CiAgICAgICAgICAgICAgICAgICAgc2tpcE1hcDogdHJ1ZQogICAgICAgICAgICAgICAgfSkoW2lkXSk7CgogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vVHVybnMgYSBwbHVnaW4hcmVzb3VyY2UgdG8gW3BsdWdpbiwgcmVzb3VyY2VdCiAgICAgICAgLy93aXRoIHRoZSBwbHVnaW4gYmVpbmcgdW5kZWZpbmVkIGlmIHRoZSBuYW1lCiAgICAgICAgLy9kaWQgbm90IGhhdmUgYSBwbHVnaW4gcHJlZml4LgogICAgICAgIGZ1bmN0aW9uIHNwbGl0UHJlZml4KG5hbWUpIHsKICAgICAgICAgICAgdmFyIHByZWZpeCwKICAgICAgICAgICAgICAgIGluZGV4ID0gbmFtZSA/IG5hbWUuaW5kZXhPZignIScpIDogLTE7CiAgICAgICAgICAgIGlmIChpbmRleCA+IC0xKSB7CiAgICAgICAgICAgICAgICBwcmVmaXggPSBuYW1lLnN1YnN0cmluZygwLCBpbmRleCk7CiAgICAgICAgICAgICAgICBuYW1lID0gbmFtZS5zdWJzdHJpbmcoaW5kZXggKyAxLCBuYW1lLmxlbmd0aCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIFtwcmVmaXgsIG5hbWVdOwogICAgICAgIH0KCiAgICAgICAgLyoqCiAgICAgICAgICogQ3JlYXRlcyBhIG1vZHVsZSBtYXBwaW5nIHRoYXQgaW5jbHVkZXMgcGx1Z2luIHByZWZpeCwgbW9kdWxlCiAgICAgICAgICogbmFtZSwgYW5kIHBhdGguIElmIHBhcmVudE1vZHVsZU1hcCBpcyBwcm92aWRlZCBpdCB3aWxsCiAgICAgICAgICogYWxzbyBub3JtYWxpemUgdGhlIG5hbWUgdmlhIHJlcXVpcmUubm9ybWFsaXplKCkKICAgICAgICAgKgogICAgICAgICAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lIHRoZSBtb2R1bGUgbmFtZQogICAgICAgICAqIEBwYXJhbSB7U3RyaW5nfSBbcGFyZW50TW9kdWxlTWFwXSBwYXJlbnQgbW9kdWxlIG1hcAogICAgICAgICAqIGZvciB0aGUgbW9kdWxlIG5hbWUsIHVzZWQgdG8gcmVzb2x2ZSByZWxhdGl2ZSBuYW1lcy4KICAgICAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IGlzTm9ybWFsaXplZDogaXMgdGhlIElEIGFscmVhZHkgbm9ybWFsaXplZC4KICAgICAgICAgKiBUaGlzIGlzIHRydWUgaWYgdGhpcyBjYWxsIGlzIGRvbmUgZm9yIGEgZGVmaW5lKCkgbW9kdWxlIElELgogICAgICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gYXBwbHlNYXA6IGFwcGx5IHRoZSBtYXAgY29uZmlnIHRvIHRoZSBJRC4KICAgICAgICAgKiBTaG91bGQgb25seSBiZSB0cnVlIGlmIHRoaXMgbWFwIGlzIGZvciBhIGRlcGVuZGVuY3kuCiAgICAgICAgICoKICAgICAgICAgKiBAcmV0dXJucyB7T2JqZWN0fQogICAgICAgICAqLwogICAgICAgIGZ1bmN0aW9uIG1ha2VNb2R1bGVNYXAobmFtZSwgcGFyZW50TW9kdWxlTWFwLCBpc05vcm1hbGl6ZWQsIGFwcGx5TWFwKSB7CiAgICAgICAgICAgIHZhciB1cmwsIHBsdWdpbk1vZHVsZSwgc3VmZml4LCBuYW1lUGFydHMsCiAgICAgICAgICAgICAgICBwcmVmaXggPSBudWxsLAogICAgICAgICAgICAgICAgcGFyZW50TmFtZSA9IHBhcmVudE1vZHVsZU1hcCA/IHBhcmVudE1vZHVsZU1hcC5uYW1lIDogbnVsbCwKICAgICAgICAgICAgICAgIG9yaWdpbmFsTmFtZSA9IG5hbWUsCiAgICAgICAgICAgICAgICBpc0RlZmluZSA9IHRydWUsCiAgICAgICAgICAgICAgICBub3JtYWxpemVkTmFtZSA9ICcnOwoKICAgICAgICAgICAgLy9JZiBubyBuYW1lLCB0aGVuIGl0IG1lYW5zIGl0IGlzIGEgcmVxdWlyZSBjYWxsLCBnZW5lcmF0ZSBhbgogICAgICAgICAgICAvL2ludGVybmFsIG5hbWUuCiAgICAgICAgICAgIGlmICghbmFtZSkgewogICAgICAgICAgICAgICAgaXNEZWZpbmUgPSBmYWxzZTsKICAgICAgICAgICAgICAgIG5hbWUgPSAnX0ByJyArIChyZXF1aXJlQ291bnRlciArPSAxKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbmFtZVBhcnRzID0gc3BsaXRQcmVmaXgobmFtZSk7CiAgICAgICAgICAgIHByZWZpeCA9IG5hbWVQYXJ0c1swXTsKICAgICAgICAgICAgbmFtZSA9IG5hbWVQYXJ0c1sxXTsKCiAgICAgICAgICAgIGlmIChwcmVmaXgpIHsKICAgICAgICAgICAgICAgIHByZWZpeCA9IG5vcm1hbGl6ZShwcmVmaXgsIHBhcmVudE5hbWUsIGFwcGx5TWFwKTsKICAgICAgICAgICAgICAgIHBsdWdpbk1vZHVsZSA9IGdldE93bihkZWZpbmVkLCBwcmVmaXgpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvL0FjY291bnQgZm9yIHJlbGF0aXZlIHBhdGhzIGlmIHRoZXJlIGlzIGEgYmFzZSBuYW1lLgogICAgICAgICAgICBpZiAobmFtZSkgewogICAgICAgICAgICAgICAgaWYgKHByZWZpeCkgewogICAgICAgICAgICAgICAgICAgIGlmIChpc05vcm1hbGl6ZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplZE5hbWUgPSBuYW1lOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocGx1Z2luTW9kdWxlICYmIHBsdWdpbk1vZHVsZS5ub3JtYWxpemUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy9QbHVnaW4gaXMgbG9hZGVkLCB1c2UgaXRzIG5vcm1hbGl6ZSBtZXRob2QuCiAgICAgICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWROYW1lID0gcGx1Z2luTW9kdWxlLm5vcm1hbGl6ZShuYW1lLCBmdW5jdGlvbiAobmFtZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZShuYW1lLCBwYXJlbnROYW1lLCBhcHBseU1hcCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIG5lc3RlZCBwbHVnaW4gcmVmZXJlbmNlcywgdGhlbiBkbyBub3QgdHJ5IHRvCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5vcm1hbGl6ZSwgYXMgaXQgd2lsbCBub3Qgbm9ybWFsaXplIGNvcnJlY3RseS4gVGhpcwogICAgICAgICAgICAgICAgICAgICAgICAvLyBwbGFjZXMgYSByZXN0cmljdGlvbiBvbiByZXNvdXJjZUlkcywgYW5kIHRoZSBsb25nZXIKICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGVybSBzb2x1dGlvbiBpcyBub3QgdG8gbm9ybWFsaXplIHVudGlsIHBsdWdpbnMgYXJlCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvYWRlZCBhbmQgYWxsIG5vcm1hbGl6YXRpb25zIHRvIGFsbG93IGZvciBhc3luYwogICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2FkaW5nIG9mIGEgbG9hZGVyIHBsdWdpbi4gQnV0IGZvciBub3csIGZpeGVzIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAvLyBjb21tb24gdXNlcy4gRGV0YWlscyBpbiAjMTEzMQogICAgICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVkTmFtZSA9IG5hbWUuaW5kZXhPZignIScpID09PSAtMSA/CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplKG5hbWUsIHBhcmVudE5hbWUsIGFwcGx5TWFwKSA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIC8vQSByZWd1bGFyIG1vZHVsZS4KICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVkTmFtZSA9IG5vcm1hbGl6ZShuYW1lLCBwYXJlbnROYW1lLCBhcHBseU1hcCk7CgogICAgICAgICAgICAgICAgICAgIC8vTm9ybWFsaXplZCBuYW1lIG1heSBiZSBhIHBsdWdpbiBJRCBkdWUgdG8gbWFwIGNvbmZpZwogICAgICAgICAgICAgICAgICAgIC8vYXBwbGljYXRpb24gaW4gbm9ybWFsaXplLiBUaGUgbWFwIGNvbmZpZyB2YWx1ZXMgbXVzdAogICAgICAgICAgICAgICAgICAgIC8vYWxyZWFkeSBiZSBub3JtYWxpemVkLCBzbyBkbyBub3QgbmVlZCB0byByZWRvIHRoYXQgcGFydC4KICAgICAgICAgICAgICAgICAgICBuYW1lUGFydHMgPSBzcGxpdFByZWZpeChub3JtYWxpemVkTmFtZSk7CiAgICAgICAgICAgICAgICAgICAgcHJlZml4ID0gbmFtZVBhcnRzWzBdOwogICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWROYW1lID0gbmFtZVBhcnRzWzFdOwogICAgICAgICAgICAgICAgICAgIGlzTm9ybWFsaXplZCA9IHRydWU7CgogICAgICAgICAgICAgICAgICAgIHVybCA9IGNvbnRleHQubmFtZVRvVXJsKG5vcm1hbGl6ZWROYW1lKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy9JZiB0aGUgaWQgaXMgYSBwbHVnaW4gaWQgdGhhdCBjYW5ub3QgYmUgZGV0ZXJtaW5lZCBpZiBpdCBuZWVkcwogICAgICAgICAgICAvL25vcm1hbGl6YXRpb24sIHN0YW1wIGl0IHdpdGggYSB1bmlxdWUgSUQgc28gdHdvIG1hdGNoaW5nIHJlbGF0aXZlCiAgICAgICAgICAgIC8vaWRzIHRoYXQgbWF5IGNvbmZsaWN0IGNhbiBiZSBzZXBhcmF0ZS4KICAgICAgICAgICAgc3VmZml4ID0gcHJlZml4ICYmICFwbHVnaW5Nb2R1bGUgJiYgIWlzTm9ybWFsaXplZCA/CiAgICAgICAgICAgICAgICAgICAgICdfdW5ub3JtYWxpemVkJyArICh1bm5vcm1hbGl6ZWRDb3VudGVyICs9IDEpIDoKICAgICAgICAgICAgICAgICAgICAgJyc7CgogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgcHJlZml4OiBwcmVmaXgsCiAgICAgICAgICAgICAgICBuYW1lOiBub3JtYWxpemVkTmFtZSwKICAgICAgICAgICAgICAgIHBhcmVudE1hcDogcGFyZW50TW9kdWxlTWFwLAogICAgICAgICAgICAgICAgdW5ub3JtYWxpemVkOiAhIXN1ZmZpeCwKICAgICAgICAgICAgICAgIHVybDogdXJsLAogICAgICAgICAgICAgICAgb3JpZ2luYWxOYW1lOiBvcmlnaW5hbE5hbWUsCiAgICAgICAgICAgICAgICBpc0RlZmluZTogaXNEZWZpbmUsCiAgICAgICAgICAgICAgICBpZDogKHByZWZpeCA/CiAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeCArICchJyArIG5vcm1hbGl6ZWROYW1lIDoKICAgICAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplZE5hbWUpICsgc3VmZml4CiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBnZXRNb2R1bGUoZGVwTWFwKSB7CiAgICAgICAgICAgIHZhciBpZCA9IGRlcE1hcC5pZCwKICAgICAgICAgICAgICAgIG1vZCA9IGdldE93bihyZWdpc3RyeSwgaWQpOwoKICAgICAgICAgICAgaWYgKCFtb2QpIHsKICAgICAgICAgICAgICAgIG1vZCA9IHJlZ2lzdHJ5W2lkXSA9IG5ldyBjb250ZXh0Lk1vZHVsZShkZXBNYXApOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gbW9kOwogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gb24oZGVwTWFwLCBuYW1lLCBmbikgewogICAgICAgICAgICB2YXIgaWQgPSBkZXBNYXAuaWQsCiAgICAgICAgICAgICAgICBtb2QgPSBnZXRPd24ocmVnaXN0cnksIGlkKTsKCiAgICAgICAgICAgIGlmIChoYXNQcm9wKGRlZmluZWQsIGlkKSAmJgogICAgICAgICAgICAgICAgICAgICghbW9kIHx8IG1vZC5kZWZpbmVFbWl0Q29tcGxldGUpKSB7CiAgICAgICAgICAgICAgICBpZiAobmFtZSA9PT0gJ2RlZmluZWQnKSB7CiAgICAgICAgICAgICAgICAgICAgZm4oZGVmaW5lZFtpZF0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgbW9kID0gZ2V0TW9kdWxlKGRlcE1hcCk7CiAgICAgICAgICAgICAgICBpZiAobW9kLmVycm9yICYmIG5hbWUgPT09ICdlcnJvcicpIHsKICAgICAgICAgICAgICAgICAgICBmbihtb2QuZXJyb3IpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBtb2Qub24obmFtZSwgZm4pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBvbkVycm9yKGVyciwgZXJyYmFjaykgewogICAgICAgICAgICB2YXIgaWRzID0gZXJyLnJlcXVpcmVNb2R1bGVzLAogICAgICAgICAgICAgICAgbm90aWZpZWQgPSBmYWxzZTsKCiAgICAgICAgICAgIGlmIChlcnJiYWNrKSB7CiAgICAgICAgICAgICAgICBlcnJiYWNrKGVycik7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBlYWNoKGlkcywgZnVuY3Rpb24gKGlkKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG1vZCA9IGdldE93bihyZWdpc3RyeSwgaWQpOwogICAgICAgICAgICAgICAgICAgIGlmIChtb2QpIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy9TZXQgZXJyb3Igb24gbW9kdWxlLCBzbyBpdCBza2lwcyB0aW1lb3V0IGNoZWNrcy4KICAgICAgICAgICAgICAgICAgICAgICAgbW9kLmVycm9yID0gZXJyOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAobW9kLmV2ZW50cy5lcnJvcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90aWZpZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kLmVtaXQoJ2Vycm9yJywgZXJyKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgIGlmICghbm90aWZpZWQpIHsKICAgICAgICAgICAgICAgICAgICByZXEub25FcnJvcihlcnIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvKioKICAgICAgICAgKiBJbnRlcm5hbCBtZXRob2QgdG8gdHJhbnNmZXIgZ2xvYmFsUXVldWUgaXRlbXMgdG8gdGhpcyBjb250ZXh0J3MKICAgICAgICAgKiBkZWZRdWV1ZS4KICAgICAgICAgKi8KICAgICAgICBmdW5jdGlvbiB0YWtlR2xvYmFsUXVldWUoKSB7CiAgICAgICAgICAgIC8vUHVzaCBhbGwgdGhlIGdsb2JhbERlZlF1ZXVlIGl0ZW1zIGludG8gdGhlIGNvbnRleHQncyBkZWZRdWV1ZQogICAgICAgICAgICBpZiAoZ2xvYmFsRGVmUXVldWUubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICBlYWNoKGdsb2JhbERlZlF1ZXVlLCBmdW5jdGlvbihxdWV1ZUl0ZW0pIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaWQgPSBxdWV1ZUl0ZW1bMF07CiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBpZCA9PT0gJ3N0cmluZycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kZWZRdWV1ZU1hcFtpZF0gPSB0cnVlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBkZWZRdWV1ZS5wdXNoKHF1ZXVlSXRlbSk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIGdsb2JhbERlZlF1ZXVlID0gW107CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGhhbmRsZXJzID0gewogICAgICAgICAgICAncmVxdWlyZSc6IGZ1bmN0aW9uIChtb2QpIHsKICAgICAgICAgICAgICAgIGlmIChtb2QucmVxdWlyZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBtb2QucmVxdWlyZTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChtb2QucmVxdWlyZSA9IGNvbnRleHQubWFrZVJlcXVpcmUobW9kLm1hcCkpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAnZXhwb3J0cyc6IGZ1bmN0aW9uIChtb2QpIHsKICAgICAgICAgICAgICAgIG1vZC51c2luZ0V4cG9ydHMgPSB0cnVlOwogICAgICAgICAgICAgICAgaWYgKG1vZC5tYXAuaXNEZWZpbmUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAobW9kLmV4cG9ydHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChkZWZpbmVkW21vZC5tYXAuaWRdID0gbW9kLmV4cG9ydHMpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAobW9kLmV4cG9ydHMgPSBkZWZpbmVkW21vZC5tYXAuaWRdID0ge30pOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgJ21vZHVsZSc6IGZ1bmN0aW9uIChtb2QpIHsKICAgICAgICAgICAgICAgIGlmIChtb2QubW9kdWxlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1vZC5tb2R1bGU7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAobW9kLm1vZHVsZSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IG1vZC5tYXAuaWQsCiAgICAgICAgICAgICAgICAgICAgICAgIHVyaTogbW9kLm1hcC51cmwsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZzogZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdldE93bihjb25maWcuY29uZmlnLCBtb2QubWFwLmlkKSB8fCB7fTsKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgZXhwb3J0czogbW9kLmV4cG9ydHMgfHwgKG1vZC5leHBvcnRzID0ge30pCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9OwoKICAgICAgICBmdW5jdGlvbiBjbGVhblJlZ2lzdHJ5KGlkKSB7CiAgICAgICAgICAgIC8vQ2xlYW4gdXAgbWFjaGluZXJ5IHVzZWQgZm9yIHdhaXRpbmcgbW9kdWxlcy4KICAgICAgICAgICAgZGVsZXRlIHJlZ2lzdHJ5W2lkXTsKICAgICAgICAgICAgZGVsZXRlIGVuYWJsZWRSZWdpc3RyeVtpZF07CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBicmVha0N5Y2xlKG1vZCwgdHJhY2VkLCBwcm9jZXNzZWQpIHsKICAgICAgICAgICAgdmFyIGlkID0gbW9kLm1hcC5pZDsKCiAgICAgICAgICAgIGlmIChtb2QuZXJyb3IpIHsKICAgICAgICAgICAgICAgIG1vZC5lbWl0KCdlcnJvcicsIG1vZC5lcnJvcik7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICB0cmFjZWRbaWRdID0gdHJ1ZTsKICAgICAgICAgICAgICAgIGVhY2gobW9kLmRlcE1hcHMsIGZ1bmN0aW9uIChkZXBNYXAsIGkpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZGVwSWQgPSBkZXBNYXAuaWQsCiAgICAgICAgICAgICAgICAgICAgICAgIGRlcCA9IGdldE93bihyZWdpc3RyeSwgZGVwSWQpOwoKICAgICAgICAgICAgICAgICAgICAvL09ubHkgZm9yY2UgdGhpbmdzIHRoYXQgaGF2ZSBub3QgY29tcGxldGVkCiAgICAgICAgICAgICAgICAgICAgLy9iZWluZyBkZWZpbmVkLCBzbyBzdGlsbCBpbiB0aGUgcmVnaXN0cnksCiAgICAgICAgICAgICAgICAgICAgLy9hbmQgb25seSBpZiBpdCBoYXMgbm90IGJlZW4gbWF0Y2hlZCB1cAogICAgICAgICAgICAgICAgICAgIC8vaW4gdGhlIG1vZHVsZSBhbHJlYWR5LgogICAgICAgICAgICAgICAgICAgIGlmIChkZXAgJiYgIW1vZC5kZXBNYXRjaGVkW2ldICYmICFwcm9jZXNzZWRbZGVwSWRdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnZXRPd24odHJhY2VkLCBkZXBJZCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZC5kZWZpbmVEZXAoaSwgZGVmaW5lZFtkZXBJZF0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kLmNoZWNrKCk7IC8vcGFzcyBmYWxzZT8KICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrQ3ljbGUoZGVwLCB0cmFjZWQsIHByb2Nlc3NlZCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIHByb2Nlc3NlZFtpZF0gPSB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBjaGVja0xvYWRlZCgpIHsKICAgICAgICAgICAgdmFyIGVyciwgdXNpbmdQYXRoRmFsbGJhY2ssCiAgICAgICAgICAgICAgICB3YWl0SW50ZXJ2YWwgPSBjb25maWcud2FpdFNlY29uZHMgKiAxMDAwLAogICAgICAgICAgICAgICAgLy9JdCBpcyBwb3NzaWJsZSB0byBkaXNhYmxlIHRoZSB3YWl0IGludGVydmFsIGJ5IHVzaW5nIHdhaXRTZWNvbmRzIG9mIDAuCiAgICAgICAgICAgICAgICBleHBpcmVkID0gd2FpdEludGVydmFsICYmIChjb250ZXh0LnN0YXJ0VGltZSArIHdhaXRJbnRlcnZhbCkgPCBuZXcgRGF0ZSgpLmdldFRpbWUoKSwKICAgICAgICAgICAgICAgIG5vTG9hZHMgPSBbXSwKICAgICAgICAgICAgICAgIHJlcUNhbGxzID0gW10sCiAgICAgICAgICAgICAgICBzdGlsbExvYWRpbmcgPSBmYWxzZSwKICAgICAgICAgICAgICAgIG5lZWRDeWNsZUNoZWNrID0gdHJ1ZTsKCiAgICAgICAgICAgIC8vRG8gbm90IGJvdGhlciBpZiB0aGlzIGNhbGwgd2FzIGEgcmVzdWx0IG9mIGEgY3ljbGUgYnJlYWsuCiAgICAgICAgICAgIGlmIChpbkNoZWNrTG9hZGVkKSB7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGluQ2hlY2tMb2FkZWQgPSB0cnVlOwoKICAgICAgICAgICAgLy9GaWd1cmUgb3V0IHRoZSBzdGF0ZSBvZiBhbGwgdGhlIG1vZHVsZXMuCiAgICAgICAgICAgIGVhY2hQcm9wKGVuYWJsZWRSZWdpc3RyeSwgZnVuY3Rpb24gKG1vZCkgewogICAgICAgICAgICAgICAgdmFyIG1hcCA9IG1vZC5tYXAsCiAgICAgICAgICAgICAgICAgICAgbW9kSWQgPSBtYXAuaWQ7CgogICAgICAgICAgICAgICAgLy9Ta2lwIHRoaW5ncyB0aGF0IGFyZSBub3QgZW5hYmxlZCBvciBpbiBlcnJvciBzdGF0ZS4KICAgICAgICAgICAgICAgIGlmICghbW9kLmVuYWJsZWQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCFtYXAuaXNEZWZpbmUpIHsKICAgICAgICAgICAgICAgICAgICByZXFDYWxscy5wdXNoKG1vZCk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCFtb2QuZXJyb3IpIHsKICAgICAgICAgICAgICAgICAgICAvL0lmIHRoZSBtb2R1bGUgc2hvdWxkIGJlIGV4ZWN1dGVkLCBhbmQgaXQgaGFzIG5vdAogICAgICAgICAgICAgICAgICAgIC8vYmVlbiBpbml0ZWQgYW5kIHRpbWUgaXMgdXAsIHJlbWVtYmVyIGl0LgogICAgICAgICAgICAgICAgICAgIGlmICghbW9kLmluaXRlZCAmJiBleHBpcmVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoYXNQYXRoRmFsbGJhY2sobW9kSWQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2luZ1BhdGhGYWxsYmFjayA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGlsbExvYWRpbmcgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9Mb2Fkcy5wdXNoKG1vZElkKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZVNjcmlwdChtb2RJZCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFtb2QuaW5pdGVkICYmIG1vZC5mZXRjaGVkICYmIG1hcC5pc0RlZmluZSkgewogICAgICAgICAgICAgICAgICAgICAgICBzdGlsbExvYWRpbmcgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW1hcC5wcmVmaXgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vTm8gcmVhc29uIHRvIGtlZXAgbG9va2luZyBmb3IgdW5maW5pc2hlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9sb2FkaW5nLiBJZiB0aGUgb25seSBzdGlsbExvYWRpbmcgaXMgYQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9wbHVnaW4gcmVzb3VyY2UgdGhvdWdoLCBrZWVwIGdvaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9iZWNhdXNlIGl0IG1heSBiZSB0aGF0IGEgcGx1Z2luIHJlc291cmNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2lzIHdhaXRpbmcgb24gYSBub24tcGx1Z2luIGN5Y2xlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChuZWVkQ3ljbGVDaGVjayA9IGZhbHNlKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CgogICAgICAgICAgICBpZiAoZXhwaXJlZCAmJiBub0xvYWRzLmxlbmd0aCkgewogICAgICAgICAgICAgICAgLy9JZiB3YWl0IHRpbWUgZXhwaXJlZCwgdGhyb3cgZXJyb3Igb2YgdW5sb2FkZWQgbW9kdWxlcy4KICAgICAgICAgICAgICAgIGVyciA9IG1ha2VFcnJvcigndGltZW91dCcsICdMb2FkIHRpbWVvdXQgZm9yIG1vZHVsZXM6ICcgKyBub0xvYWRzLCBudWxsLCBub0xvYWRzKTsKICAgICAgICAgICAgICAgIGVyci5jb250ZXh0TmFtZSA9IGNvbnRleHQuY29udGV4dE5hbWU7CiAgICAgICAgICAgICAgICByZXR1cm4gb25FcnJvcihlcnIpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvL05vdCBleHBpcmVkLCBjaGVjayBmb3IgYSBjeWNsZS4KICAgICAgICAgICAgaWYgKG5lZWRDeWNsZUNoZWNrKSB7CiAgICAgICAgICAgICAgICBlYWNoKHJlcUNhbGxzLCBmdW5jdGlvbiAobW9kKSB7CiAgICAgICAgICAgICAgICAgICAgYnJlYWtDeWNsZShtb2QsIHt9LCB7fSk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy9JZiBzdGlsbCB3YWl0aW5nIG9uIGxvYWRzLCBhbmQgdGhlIHdhaXRpbmcgbG9hZCBpcyBzb21ldGhpbmcKICAgICAgICAgICAgLy9vdGhlciB0aGFuIGEgcGx1Z2luIHJlc291cmNlLCBvciB0aGVyZSBhcmUgc3RpbGwgb3V0c3RhbmRpbmcKICAgICAgICAgICAgLy9zY3JpcHRzLCB0aGVuIGp1c3QgdHJ5IGJhY2sgbGF0ZXIuCiAgICAgICAgICAgIGlmICgoIWV4cGlyZWQgfHwgdXNpbmdQYXRoRmFsbGJhY2spICYmIHN0aWxsTG9hZGluZykgewogICAgICAgICAgICAgICAgLy9Tb21ldGhpbmcgaXMgc3RpbGwgd2FpdGluZyB0byBsb2FkLiBXYWl0IGZvciBpdCwgYnV0IG9ubHkKICAgICAgICAgICAgICAgIC8vaWYgYSB0aW1lb3V0IGlzIG5vdCBhbHJlYWR5IGluIGVmZmVjdC4KICAgICAgICAgICAgICAgIGlmICgoaXNCcm93c2VyIHx8IGlzV2ViV29ya2VyKSAmJiAhY2hlY2tMb2FkZWRUaW1lb3V0SWQpIHsKICAgICAgICAgICAgICAgICAgICBjaGVja0xvYWRlZFRpbWVvdXRJZCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgICBjaGVja0xvYWRlZFRpbWVvdXRJZCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrTG9hZGVkKCk7CiAgICAgICAgICAgICAgICAgICAgfSwgNTApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBpbkNoZWNrTG9hZGVkID0gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICBNb2R1bGUgPSBmdW5jdGlvbiAobWFwKSB7CiAgICAgICAgICAgIHRoaXMuZXZlbnRzID0gZ2V0T3duKHVuZGVmRXZlbnRzLCBtYXAuaWQpIHx8IHt9OwogICAgICAgICAgICB0aGlzLm1hcCA9IG1hcDsKICAgICAgICAgICAgdGhpcy5zaGltID0gZ2V0T3duKGNvbmZpZy5zaGltLCBtYXAuaWQpOwogICAgICAgICAgICB0aGlzLmRlcEV4cG9ydHMgPSBbXTsKICAgICAgICAgICAgdGhpcy5kZXBNYXBzID0gW107CiAgICAgICAgICAgIHRoaXMuZGVwTWF0Y2hlZCA9IFtdOwogICAgICAgICAgICB0aGlzLnBsdWdpbk1hcHMgPSB7fTsKICAgICAgICAgICAgdGhpcy5kZXBDb3VudCA9IDA7CgogICAgICAgICAgICAvKiB0aGlzLmV4cG9ydHMgdGhpcy5mYWN0b3J5CiAgICAgICAgICAgICAgIHRoaXMuZGVwTWFwcyA9IFtdLAogICAgICAgICAgICAgICB0aGlzLmVuYWJsZWQsIHRoaXMuZmV0Y2hlZAogICAgICAgICAgICAqLwogICAgICAgIH07CgogICAgICAgIE1vZHVsZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgIGluaXQ6IGZ1bmN0aW9uIChkZXBNYXBzLCBmYWN0b3J5LCBlcnJiYWNrLCBvcHRpb25zKSB7CiAgICAgICAgICAgICAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTsKCiAgICAgICAgICAgICAgICAvL0RvIG5vdCBkbyBtb3JlIGluaXRzIGlmIGFscmVhZHkgZG9uZS4gQ2FuIGhhcHBlbiBpZiB0aGVyZQogICAgICAgICAgICAgICAgLy9hcmUgbXVsdGlwbGUgZGVmaW5lIGNhbGxzIGZvciB0aGUgc2FtZSBtb2R1bGUuIFRoYXQgaXMgbm90CiAgICAgICAgICAgICAgICAvL2Egbm9ybWFsLCBjb21tb24gY2FzZSwgYnV0IGl0IGlzIGFsc28gbm90IHVuZXhwZWN0ZWQuCiAgICAgICAgICAgICAgICBpZiAodGhpcy5pbml0ZWQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgdGhpcy5mYWN0b3J5ID0gZmFjdG9yeTsKCiAgICAgICAgICAgICAgICBpZiAoZXJyYmFjaykgewogICAgICAgICAgICAgICAgICAgIC8vUmVnaXN0ZXIgZm9yIGVycm9ycyBvbiB0aGlzIG1vZHVsZS4KICAgICAgICAgICAgICAgICAgICB0aGlzLm9uKCdlcnJvcicsIGVycmJhY2spOwogICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmV2ZW50cy5lcnJvcikgewogICAgICAgICAgICAgICAgICAgIC8vSWYgbm8gZXJyYmFjayBhbHJlYWR5LCBidXQgdGhlcmUgYXJlIGVycm9yIGxpc3RlbmVycwogICAgICAgICAgICAgICAgICAgIC8vb24gdGhpcyBtb2R1bGUsIHNldCB1cCBhbiBlcnJiYWNrIHRvIHBhc3MgdG8gdGhlIGRlcHMuCiAgICAgICAgICAgICAgICAgICAgZXJyYmFjayA9IGJpbmQodGhpcywgZnVuY3Rpb24gKGVycikgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVtaXQoJ2Vycm9yJywgZXJyKTsKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAvL0RvIGEgY29weSBvZiB0aGUgZGVwZW5kZW5jeSBhcnJheSwgc28gdGhhdAogICAgICAgICAgICAgICAgLy9zb3VyY2UgaW5wdXRzIGFyZSBub3QgbW9kaWZpZWQuIEZvciBleGFtcGxlCiAgICAgICAgICAgICAgICAvLyJzaGltIiBkZXBzIGFyZSBwYXNzZWQgaW4gaGVyZSBkaXJlY3RseSwgYW5kCiAgICAgICAgICAgICAgICAvL2RvaW5nIGEgZGlyZWN0IG1vZGlmaWNhdGlvbiBvZiB0aGUgZGVwTWFwcyBhcnJheQogICAgICAgICAgICAgICAgLy93b3VsZCBhZmZlY3QgdGhhdCBjb25maWcuCiAgICAgICAgICAgICAgICB0aGlzLmRlcE1hcHMgPSBkZXBNYXBzICYmIGRlcE1hcHMuc2xpY2UoMCk7CgogICAgICAgICAgICAgICAgdGhpcy5lcnJiYWNrID0gZXJyYmFjazsKCiAgICAgICAgICAgICAgICAvL0luZGljYXRlIHRoaXMgbW9kdWxlIGhhcyBiZSBpbml0aWFsaXplZAogICAgICAgICAgICAgICAgdGhpcy5pbml0ZWQgPSB0cnVlOwoKICAgICAgICAgICAgICAgIHRoaXMuaWdub3JlID0gb3B0aW9ucy5pZ25vcmU7CgogICAgICAgICAgICAgICAgLy9Db3VsZCBoYXZlIG9wdGlvbiB0byBpbml0IHRoaXMgbW9kdWxlIGluIGVuYWJsZWQgbW9kZSwKICAgICAgICAgICAgICAgIC8vb3IgY291bGQgaGF2ZSBiZWVuIHByZXZpb3VzbHkgbWFya2VkIGFzIGVuYWJsZWQuIEhvd2V2ZXIsCiAgICAgICAgICAgICAgICAvL3RoZSBkZXBlbmRlbmNpZXMgYXJlIG5vdCBrbm93biB1bnRpbCBpbml0IGlzIGNhbGxlZC4gU28KICAgICAgICAgICAgICAgIC8vaWYgZW5hYmxlZCBwcmV2aW91c2x5LCBub3cgdHJpZ2dlciBkZXBlbmRlbmNpZXMgYXMgZW5hYmxlZC4KICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLmVuYWJsZWQgfHwgdGhpcy5lbmFibGVkKSB7CiAgICAgICAgICAgICAgICAgICAgLy9FbmFibGUgdGhpcyBtb2R1bGUgYW5kIGRlcGVuZGVuY2llcy4KICAgICAgICAgICAgICAgICAgICAvL1dpbGwgY2FsbCB0aGlzLmNoZWNrKCkKICAgICAgICAgICAgICAgICAgICB0aGlzLmVuYWJsZSgpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmNoZWNrKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICBkZWZpbmVEZXA6IGZ1bmN0aW9uIChpLCBkZXBFeHBvcnRzKSB7CiAgICAgICAgICAgICAgICAvL0JlY2F1c2Ugb2YgY3ljbGVzLCBkZWZpbmVkIGNhbGxiYWNrIGZvciBhIGdpdmVuCiAgICAgICAgICAgICAgICAvL2V4cG9ydCBjYW4gYmUgY2FsbGVkIG1vcmUgdGhhbiBvbmNlLgogICAgICAgICAgICAgICAgaWYgKCF0aGlzLmRlcE1hdGNoZWRbaV0pIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmRlcE1hdGNoZWRbaV0gPSB0cnVlOwogICAgICAgICAgICAgICAgICAgIHRoaXMuZGVwQ291bnQgLT0gMTsKICAgICAgICAgICAgICAgICAgICB0aGlzLmRlcEV4cG9ydHNbaV0gPSBkZXBFeHBvcnRzOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAoKICAgICAgICAgICAgZmV0Y2g6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIGlmICh0aGlzLmZldGNoZWQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB0aGlzLmZldGNoZWQgPSB0cnVlOwoKICAgICAgICAgICAgICAgIGNvbnRleHQuc3RhcnRUaW1lID0gKG5ldyBEYXRlKCkpLmdldFRpbWUoKTsKCiAgICAgICAgICAgICAgICB2YXIgbWFwID0gdGhpcy5tYXA7CgogICAgICAgICAgICAgICAgLy9JZiB0aGUgbWFuYWdlciBpcyBmb3IgYSBwbHVnaW4gbWFuYWdlZCByZXNvdXJjZSwKICAgICAgICAgICAgICAgIC8vYXNrIHRoZSBwbHVnaW4gdG8gbG9hZCBpdCBub3cuCiAgICAgICAgICAgICAgICBpZiAodGhpcy5zaGltKSB7CiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5tYWtlUmVxdWlyZSh0aGlzLm1hcCwgewogICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVCdWlsZENhbGxiYWNrOiB0cnVlCiAgICAgICAgICAgICAgICAgICAgfSkodGhpcy5zaGltLmRlcHMgfHwgW10sIGJpbmQodGhpcywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWFwLnByZWZpeCA/IHRoaXMuY2FsbFBsdWdpbigpIDogdGhpcy5sb2FkKCk7CiAgICAgICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAvL1JlZ3VsYXIgZGVwZW5kZW5jeS4KICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWFwLnByZWZpeCA/IHRoaXMuY2FsbFBsdWdpbigpIDogdGhpcy5sb2FkKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICBsb2FkOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICB2YXIgdXJsID0gdGhpcy5tYXAudXJsOwoKICAgICAgICAgICAgICAgIC8vUmVndWxhciBkZXBlbmRlbmN5LgogICAgICAgICAgICAgICAgaWYgKCF1cmxGZXRjaGVkW3VybF0pIHsKICAgICAgICAgICAgICAgICAgICB1cmxGZXRjaGVkW3VybF0gPSB0cnVlOwogICAgICAgICAgICAgICAgICAgIGNvbnRleHQubG9hZCh0aGlzLm1hcC5pZCwgdXJsKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIC8qKgogICAgICAgICAgICAgKiBDaGVja3MgaWYgdGhlIG1vZHVsZSBpcyByZWFkeSB0byBkZWZpbmUgaXRzZWxmLCBhbmQgaWYgc28sCiAgICAgICAgICAgICAqIGRlZmluZSBpdC4KICAgICAgICAgICAgICovCiAgICAgICAgICAgIGNoZWNrOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZW5hYmxlZCB8fCB0aGlzLmVuYWJsaW5nKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHZhciBlcnIsIGNqc01vZHVsZSwKICAgICAgICAgICAgICAgICAgICBpZCA9IHRoaXMubWFwLmlkLAogICAgICAgICAgICAgICAgICAgIGRlcEV4cG9ydHMgPSB0aGlzLmRlcEV4cG9ydHMsCiAgICAgICAgICAgICAgICAgICAgZXhwb3J0cyA9IHRoaXMuZXhwb3J0cywKICAgICAgICAgICAgICAgICAgICBmYWN0b3J5ID0gdGhpcy5mYWN0b3J5OwoKICAgICAgICAgICAgICAgIGlmICghdGhpcy5pbml0ZWQpIHsKICAgICAgICAgICAgICAgICAgICAvLyBPbmx5IGZldGNoIGlmIG5vdCBhbHJlYWR5IGluIHRoZSBkZWZRdWV1ZS4KICAgICAgICAgICAgICAgICAgICBpZiAoIWhhc1Byb3AoY29udGV4dC5kZWZRdWV1ZU1hcCwgaWQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmV0Y2goKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZXJyb3IpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmVtaXQoJ2Vycm9yJywgdGhpcy5lcnJvcik7CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLmRlZmluaW5nKSB7CiAgICAgICAgICAgICAgICAgICAgLy9UaGUgZmFjdG9yeSBjb3VsZCB0cmlnZ2VyIGFub3RoZXIgcmVxdWlyZSBjYWxsCiAgICAgICAgICAgICAgICAgICAgLy90aGF0IHdvdWxkIHJlc3VsdCBpbiBjaGVja2luZyB0aGlzIG1vZHVsZSB0bwogICAgICAgICAgICAgICAgICAgIC8vZGVmaW5lIGl0c2VsZiBhZ2Fpbi4gSWYgYWxyZWFkeSBpbiB0aGUgcHJvY2VzcwogICAgICAgICAgICAgICAgICAgIC8vb2YgZG9pbmcgdGhhdCwgc2tpcCB0aGlzIHdvcmsuCiAgICAgICAgICAgICAgICAgICAgdGhpcy5kZWZpbmluZyA9IHRydWU7CgogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmRlcENvdW50IDwgMSAmJiAhdGhpcy5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0Z1bmN0aW9uKGZhY3RvcnkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL0lmIHRoZXJlIGlzIGFuIGVycm9yIGxpc3RlbmVyLCBmYXZvciBwYXNzaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3RvIHRoYXQgaW5zdGVhZCBvZiB0aHJvd2luZyBhbiBlcnJvci4gSG93ZXZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vb25seSBkbyBpdCBmb3IgZGVmaW5lKCknZCAgbW9kdWxlcy4gcmVxdWlyZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9lcnJiYWNrcyBzaG91bGQgbm90IGJlIGNhbGxlZCBmb3IgZmFpbHVyZXMgaW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vdGhlaXIgY2FsbGJhY2tzICgjNjk5KS4gSG93ZXZlciBpZiBhIGdsb2JhbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9vbkVycm9yIGlzIHNldCwgdXNlIHRoYXQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHRoaXMuZXZlbnRzLmVycm9yICYmIHRoaXMubWFwLmlzRGVmaW5lKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcS5vbkVycm9yICE9PSBkZWZhdWx0T25FcnJvcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cG9ydHMgPSBjb250ZXh0LmV4ZWNDYihpZCwgZmFjdG9yeSwgZGVwRXhwb3J0cywgZXhwb3J0cyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnIgPSBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwb3J0cyA9IGNvbnRleHQuZXhlY0NiKGlkLCBmYWN0b3J5LCBkZXBFeHBvcnRzLCBleHBvcnRzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGYXZvciByZXR1cm4gdmFsdWUgb3ZlciBleHBvcnRzLiBJZiBub2RlL2NqcyBpbiBwbGF5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlbiB3aWxsIG5vdCBoYXZlIGEgcmV0dXJuIHZhbHVlIGFueXdheS4gRmF2b3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1vZHVsZS5leHBvcnRzIGFzc2lnbm1lbnQgb3ZlciBleHBvcnRzIG9iamVjdC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm1hcC5pc0RlZmluZSAmJiBleHBvcnRzID09PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjanNNb2R1bGUgPSB0aGlzLm1vZHVsZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2pzTW9kdWxlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cG9ydHMgPSBjanNNb2R1bGUuZXhwb3J0czsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMudXNpbmdFeHBvcnRzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vZXhwb3J0cyBhbHJlYWR5IHNldCB0aGUgZGVmaW5lZCB2YWx1ZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwb3J0cyA9IHRoaXMuZXhwb3J0czsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVycikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVyci5yZXF1aXJlTWFwID0gdGhpcy5tYXA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyLnJlcXVpcmVNb2R1bGVzID0gdGhpcy5tYXAuaXNEZWZpbmUgPyBbdGhpcy5tYXAuaWRdIDogbnVsbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnIucmVxdWlyZVR5cGUgPSB0aGlzLm1hcC5pc0RlZmluZSA/ICdkZWZpbmUnIDogJ3JlcXVpcmUnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvbkVycm9yKCh0aGlzLmVycm9yID0gZXJyKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9KdXN0IGEgbGl0ZXJhbCB2YWx1ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwb3J0cyA9IGZhY3Rvcnk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZXhwb3J0cyA9IGV4cG9ydHM7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5tYXAuaXNEZWZpbmUgJiYgIXRoaXMuaWdub3JlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmVkW2lkXSA9IGV4cG9ydHM7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcS5vblJlc291cmNlTG9hZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXNMb2FkTWFwcyA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVhY2godGhpcy5kZXBNYXBzLCBmdW5jdGlvbiAoZGVwTWFwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc0xvYWRNYXBzLnB1c2goZGVwTWFwLm5vcm1hbGl6ZWRNYXAgfHwgZGVwTWFwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXEub25SZXNvdXJjZUxvYWQoY29udGV4dCwgdGhpcy5tYXAsIHJlc0xvYWRNYXBzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgLy9DbGVhbiB1cAogICAgICAgICAgICAgICAgICAgICAgICBjbGVhblJlZ2lzdHJ5KGlkKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGVmaW5lZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAvL0ZpbmlzaGVkIHRoZSBkZWZpbmUgc3RhZ2UuIEFsbG93IGNhbGxpbmcgY2hlY2sgYWdhaW4KICAgICAgICAgICAgICAgICAgICAvL3RvIGFsbG93IGRlZmluZSBub3RpZmljYXRpb25zIGJlbG93IGluIHRoZSBjYXNlIG9mIGEKICAgICAgICAgICAgICAgICAgICAvL2N5Y2xlLgogICAgICAgICAgICAgICAgICAgIHRoaXMuZGVmaW5pbmcgPSBmYWxzZTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZGVmaW5lZCAmJiAhdGhpcy5kZWZpbmVFbWl0dGVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGVmaW5lRW1pdHRlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZW1pdCgnZGVmaW5lZCcsIHRoaXMuZXhwb3J0cyk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGVmaW5lRW1pdENvbXBsZXRlID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAoKICAgICAgICAgICAgY2FsbFBsdWdpbjogZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgdmFyIG1hcCA9IHRoaXMubWFwLAogICAgICAgICAgICAgICAgICAgIGlkID0gbWFwLmlkLAogICAgICAgICAgICAgICAgICAgIC8vTWFwIGFscmVhZHkgbm9ybWFsaXplZCB0aGUgcHJlZml4LgogICAgICAgICAgICAgICAgICAgIHBsdWdpbk1hcCA9IG1ha2VNb2R1bGVNYXAobWFwLnByZWZpeCk7CgogICAgICAgICAgICAgICAgLy9NYXJrIHRoaXMgYXMgYSBkZXBlbmRlbmN5IGZvciB0aGlzIHBsdWdpbiwgc28gaXQKICAgICAgICAgICAgICAgIC8vY2FuIGJlIHRyYWNlZCBmb3IgY3ljbGVzLgogICAgICAgICAgICAgICAgdGhpcy5kZXBNYXBzLnB1c2gocGx1Z2luTWFwKTsKCiAgICAgICAgICAgICAgICBvbihwbHVnaW5NYXAsICdkZWZpbmVkJywgYmluZCh0aGlzLCBmdW5jdGlvbiAocGx1Z2luKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGxvYWQsIG5vcm1hbGl6ZWRNYXAsIG5vcm1hbGl6ZWRNb2QsCiAgICAgICAgICAgICAgICAgICAgICAgIGJ1bmRsZUlkID0gZ2V0T3duKGJ1bmRsZXNNYXAsIHRoaXMubWFwLmlkKSwKICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9IHRoaXMubWFwLm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudE5hbWUgPSB0aGlzLm1hcC5wYXJlbnRNYXAgPyB0aGlzLm1hcC5wYXJlbnRNYXAubmFtZSA6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsUmVxdWlyZSA9IGNvbnRleHQubWFrZVJlcXVpcmUobWFwLnBhcmVudE1hcCwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlQnVpbGRDYWxsYmFjazogdHJ1ZQogICAgICAgICAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAgICAgLy9JZiBjdXJyZW50IG1hcCBpcyBub3Qgbm9ybWFsaXplZCwgd2FpdCBmb3IgdGhhdAogICAgICAgICAgICAgICAgICAgIC8vbm9ybWFsaXplZCBuYW1lIHRvIGxvYWQgaW5zdGVhZCBvZiBjb250aW51aW5nLgogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm1hcC51bm5vcm1hbGl6ZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy9Ob3JtYWxpemUgdGhlIElEIGlmIHRoZSBwbHVnaW4gYWxsb3dzIGl0LgogICAgICAgICAgICAgICAgICAgICAgICBpZiAocGx1Z2luLm5vcm1hbGl6ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9IHBsdWdpbi5ub3JtYWxpemUobmFtZSwgZnVuY3Rpb24gKG5hbWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbm9ybWFsaXplKG5hbWUsIHBhcmVudE5hbWUsIHRydWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgfHwgJyc7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIC8vcHJlZml4IGFuZCBuYW1lIHNob3VsZCBhbHJlYWR5IGJlIG5vcm1hbGl6ZWQsIG5vIG5lZWQKICAgICAgICAgICAgICAgICAgICAgICAgLy9mb3IgYXBwbHlpbmcgbWFwIGNvbmZpZyBhZ2FpbiBlaXRoZXIuCiAgICAgICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWRNYXAgPSBtYWtlTW9kdWxlTWFwKG1hcC5wcmVmaXggKyAnIScgKyBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1hcC5wYXJlbnRNYXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpOwogICAgICAgICAgICAgICAgICAgICAgICBvbihub3JtYWxpemVkTWFwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlZmluZWQnLCBiaW5kKHRoaXMsIGZ1bmN0aW9uICh2YWx1ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWFwLm5vcm1hbGl6ZWRNYXAgPSBub3JtYWxpemVkTWFwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5pdChbXSwgZnVuY3Rpb24gKCkgeyByZXR1cm4gdmFsdWU7IH0sIG51bGwsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlZDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlOiB0cnVlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7CgogICAgICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVkTW9kID0gZ2V0T3duKHJlZ2lzdHJ5LCBub3JtYWxpemVkTWFwLmlkKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5vcm1hbGl6ZWRNb2QpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vTWFyayB0aGlzIGFzIGEgZGVwZW5kZW5jeSBmb3IgdGhpcyBwbHVnaW4sIHNvIGl0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2NhbiBiZSB0cmFjZWQgZm9yIGN5Y2xlcy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGVwTWFwcy5wdXNoKG5vcm1hbGl6ZWRNYXApOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmV2ZW50cy5lcnJvcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWRNb2Qub24oJ2Vycm9yJywgYmluZCh0aGlzLCBmdW5jdGlvbiAoZXJyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZW1pdCgnZXJyb3InLCBlcnIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWRNb2QuZW5hYmxlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIC8vSWYgYSBwYXRocyBjb25maWcsIHRoZW4ganVzdCBsb2FkIHRoYXQgZmlsZSBpbnN0ZWFkIHRvCiAgICAgICAgICAgICAgICAgICAgLy9yZXNvbHZlIHRoZSBwbHVnaW4sIGFzIGl0IGlzIGJ1aWx0IGludG8gdGhhdCBwYXRocyBsYXllci4KICAgICAgICAgICAgICAgICAgICBpZiAoYnVuZGxlSWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXAudXJsID0gY29udGV4dC5uYW1lVG9VcmwoYnVuZGxlSWQpOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgbG9hZCA9IGJpbmQodGhpcywgZnVuY3Rpb24gKHZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5pdChbXSwgZnVuY3Rpb24gKCkgeyByZXR1cm4gdmFsdWU7IH0sIG51bGwsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZWQ6IHRydWUKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgICAgIGxvYWQuZXJyb3IgPSBiaW5kKHRoaXMsIGZ1bmN0aW9uIChlcnIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbml0ZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVycm9yID0gZXJyOwogICAgICAgICAgICAgICAgICAgICAgICBlcnIucmVxdWlyZU1vZHVsZXMgPSBbaWRdOwoKICAgICAgICAgICAgICAgICAgICAgICAgLy9SZW1vdmUgdGVtcCB1bm5vcm1hbGl6ZWQgbW9kdWxlcyBmb3IgdGhpcyBtb2R1bGUsCiAgICAgICAgICAgICAgICAgICAgICAgIC8vc2luY2UgdGhleSB3aWxsIG5ldmVyIGJlIHJlc29sdmVkIG90aGVyd2lzZSBub3cuCiAgICAgICAgICAgICAgICAgICAgICAgIGVhY2hQcm9wKHJlZ2lzdHJ5LCBmdW5jdGlvbiAobW9kKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobW9kLm1hcC5pZC5pbmRleE9mKGlkICsgJ191bm5vcm1hbGl6ZWQnKSA9PT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFuUmVnaXN0cnkobW9kLm1hcC5pZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgICAgICAgICAgb25FcnJvcihlcnIpOwogICAgICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgICAgICAvL0FsbG93IHBsdWdpbnMgdG8gbG9hZCBvdGhlciBjb2RlIHdpdGhvdXQgaGF2aW5nIHRvIGtub3cgdGhlCiAgICAgICAgICAgICAgICAgICAgLy9jb250ZXh0IG9yIGhvdyB0byAnY29tcGxldGUnIHRoZSBsb2FkLgogICAgICAgICAgICAgICAgICAgIGxvYWQuZnJvbVRleHQgPSBiaW5kKHRoaXMsIGZ1bmN0aW9uICh0ZXh0LCB0ZXh0QWx0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8qanNsaW50IGV2aWw6IHRydWUgKi8KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG1vZHVsZU5hbWUgPSBtYXAubmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZU1hcCA9IG1ha2VNb2R1bGVNYXAobW9kdWxlTmFtZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNJbnRlcmFjdGl2ZSA9IHVzZUludGVyYWN0aXZlOwoKICAgICAgICAgICAgICAgICAgICAgICAgLy9BcyBvZiAyLjEuMCwgc3VwcG9ydCBqdXN0IHBhc3NpbmcgdGhlIHRleHQsIHRvIHJlaW5mb3JjZQogICAgICAgICAgICAgICAgICAgICAgICAvL2Zyb21UZXh0IG9ubHkgYmVpbmcgY2FsbGVkIG9uY2UgcGVyIHJlc291cmNlLiBTdGlsbAogICAgICAgICAgICAgICAgICAgICAgICAvL3N1cHBvcnQgb2xkIHN0eWxlIG9mIHBhc3NpbmcgbW9kdWxlTmFtZSBidXQgZGlzY2FyZAogICAgICAgICAgICAgICAgICAgICAgICAvL3RoYXQgbW9kdWxlTmFtZSBpbiBmYXZvciBvZiB0aGUgaW50ZXJuYWwgcmVmLgogICAgICAgICAgICAgICAgICAgICAgICBpZiAodGV4dEFsdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dCA9IHRleHRBbHQ7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIC8vVHVybiBvZmYgaW50ZXJhY3RpdmUgc2NyaXB0IG1hdGNoaW5nIGZvciBJRSBmb3IgYW55IGRlZmluZQogICAgICAgICAgICAgICAgICAgICAgICAvL2NhbGxzIGluIHRoZSB0ZXh0LCB0aGVuIHR1cm4gaXQgYmFjayBvbiBhdCB0aGUgZW5kLgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaGFzSW50ZXJhY3RpdmUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZUludGVyYWN0aXZlID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIC8vUHJpbWUgdGhlIHN5c3RlbSBieSBjcmVhdGluZyBhIG1vZHVsZSBpbnN0YW5jZSBmb3IKICAgICAgICAgICAgICAgICAgICAgICAgLy9pdC4KICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TW9kdWxlKG1vZHVsZU1hcCk7CgogICAgICAgICAgICAgICAgICAgICAgICAvL1RyYW5zZmVyIGFueSBjb25maWcgdG8gdGhpcyBvdGhlciBtb2R1bGUuCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoYXNQcm9wKGNvbmZpZy5jb25maWcsIGlkKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLmNvbmZpZ1ttb2R1bGVOYW1lXSA9IGNvbmZpZy5jb25maWdbaWRdOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxLmV4ZWModGV4dCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvbkVycm9yKG1ha2VFcnJvcignZnJvbXRleHRldmFsJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zyb21UZXh0IGV2YWwgZm9yICcgKyBpZCArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyBmYWlsZWQ6ICcgKyBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRdKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoYXNJbnRlcmFjdGl2ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlSW50ZXJhY3RpdmUgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAvL01hcmsgdGhpcyBhcyBhIGRlcGVuZGVuY3kgZm9yIHRoZSBwbHVnaW4KICAgICAgICAgICAgICAgICAgICAgICAgLy9yZXNvdXJjZQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRlcE1hcHMucHVzaChtb2R1bGVNYXApOwoKICAgICAgICAgICAgICAgICAgICAgICAgLy9TdXBwb3J0IGFub255bW91cyBtb2R1bGVzLgogICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmNvbXBsZXRlTG9hZChtb2R1bGVOYW1lKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIC8vQmluZCB0aGUgdmFsdWUgb2YgdGhhdCBtb2R1bGUgdG8gdGhlIHZhbHVlIGZvciB0aGlzCiAgICAgICAgICAgICAgICAgICAgICAgIC8vcmVzb3VyY2UgSUQuCiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsUmVxdWlyZShbbW9kdWxlTmFtZV0sIGxvYWQpOwogICAgICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgICAgICAvL1VzZSBwYXJlbnROYW1lIGhlcmUgc2luY2UgdGhlIHBsdWdpbidzIG5hbWUgaXMgbm90IHJlbGlhYmxlLAogICAgICAgICAgICAgICAgICAgIC8vY291bGQgYmUgc29tZSB3ZWlyZCBzdHJpbmcgd2l0aCBubyBwYXRoIHRoYXQgYWN0dWFsbHkgd2FudHMgdG8KICAgICAgICAgICAgICAgICAgICAvL3JlZmVyZW5jZSB0aGUgcGFyZW50TmFtZSdzIHBhdGguCiAgICAgICAgICAgICAgICAgICAgcGx1Z2luLmxvYWQobWFwLm5hbWUsIGxvY2FsUmVxdWlyZSwgbG9hZCwgY29uZmlnKTsKICAgICAgICAgICAgICAgIH0pKTsKCiAgICAgICAgICAgICAgICBjb250ZXh0LmVuYWJsZShwbHVnaW5NYXAsIHRoaXMpOwogICAgICAgICAgICAgICAgdGhpcy5wbHVnaW5NYXBzW3BsdWdpbk1hcC5pZF0gPSBwbHVnaW5NYXA7CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICBlbmFibGU6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIGVuYWJsZWRSZWdpc3RyeVt0aGlzLm1hcC5pZF0gPSB0aGlzOwogICAgICAgICAgICAgICAgdGhpcy5lbmFibGVkID0gdHJ1ZTsKCiAgICAgICAgICAgICAgICAvL1NldCBmbGFnIG1lbnRpb25pbmcgdGhhdCB0aGUgbW9kdWxlIGlzIGVuYWJsaW5nLAogICAgICAgICAgICAgICAgLy9zbyB0aGF0IGltbWVkaWF0ZSBjYWxscyB0byB0aGUgZGVmaW5lZCBjYWxsYmFja3MKICAgICAgICAgICAgICAgIC8vZm9yIGRlcGVuZGVuY2llcyBkbyBub3QgdHJpZ2dlciBpbmFkdmVydGVudCBsb2FkCiAgICAgICAgICAgICAgICAvL3dpdGggdGhlIGRlcENvdW50IHN0aWxsIGJlaW5nIHplcm8uCiAgICAgICAgICAgICAgICB0aGlzLmVuYWJsaW5nID0gdHJ1ZTsKCiAgICAgICAgICAgICAgICAvL0VuYWJsZSBlYWNoIGRlcGVuZGVuY3kKICAgICAgICAgICAgICAgIGVhY2godGhpcy5kZXBNYXBzLCBiaW5kKHRoaXMsIGZ1bmN0aW9uIChkZXBNYXAsIGkpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaWQsIG1vZCwgaGFuZGxlcjsKCiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBkZXBNYXAgPT09ICdzdHJpbmcnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vRGVwZW5kZW5jeSBuZWVkcyB0byBiZSBjb252ZXJ0ZWQgdG8gYSBkZXBNYXAKICAgICAgICAgICAgICAgICAgICAgICAgLy9hbmQgd2lyZWQgdXAgdG8gdGhpcyBtb2R1bGUuCiAgICAgICAgICAgICAgICAgICAgICAgIGRlcE1hcCA9IG1ha2VNb2R1bGVNYXAoZGVwTWFwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLm1hcC5pc0RlZmluZSA/IHRoaXMubWFwIDogdGhpcy5tYXAucGFyZW50TWFwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhdGhpcy5za2lwTWFwKTsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kZXBNYXBzW2ldID0gZGVwTWFwOwoKICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlciA9IGdldE93bihoYW5kbGVycywgZGVwTWFwLmlkKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoYW5kbGVyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRlcEV4cG9ydHNbaV0gPSBoYW5kbGVyKHRoaXMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRlcENvdW50ICs9IDE7CgogICAgICAgICAgICAgICAgICAgICAgICBvbihkZXBNYXAsICdkZWZpbmVkJywgYmluZCh0aGlzLCBmdW5jdGlvbiAoZGVwRXhwb3J0cykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudW5kZWZlZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGVmaW5lRGVwKGksIGRlcEV4cG9ydHMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGVjaygpOwogICAgICAgICAgICAgICAgICAgICAgICB9KSk7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5lcnJiYWNrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbihkZXBNYXAsICdlcnJvcicsIGJpbmQodGhpcywgdGhpcy5lcnJiYWNrKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5ldmVudHMuZXJyb3IpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5vIGRpcmVjdCBlcnJiYWNrIG9uIHRoaXMgbW9kdWxlLCBidXQgc29tZXRoaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbHNlIGlzIGxpc3RlbmluZyBmb3IgZXJyb3JzLCBzbyBiZSBzdXJlIHRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwcm9wYWdhdGUgdGhlIGVycm9yIGNvcnJlY3RseS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uKGRlcE1hcCwgJ2Vycm9yJywgYmluZCh0aGlzLCBmdW5jdGlvbihlcnIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVtaXQoJ2Vycm9yJywgZXJyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgaWQgPSBkZXBNYXAuaWQ7CiAgICAgICAgICAgICAgICAgICAgbW9kID0gcmVnaXN0cnlbaWRdOwoKICAgICAgICAgICAgICAgICAgICAvL1NraXAgc3BlY2lhbCBtb2R1bGVzIGxpa2UgJ3JlcXVpcmUnLCAnZXhwb3J0cycsICdtb2R1bGUnCiAgICAgICAgICAgICAgICAgICAgLy9BbHNvLCBkb24ndCBjYWxsIGVuYWJsZSBpZiBpdCBpcyBhbHJlYWR5IGVuYWJsZWQsCiAgICAgICAgICAgICAgICAgICAgLy9pbXBvcnRhbnQgaW4gY2lyY3VsYXIgZGVwZW5kZW5jeSBjYXNlcy4KICAgICAgICAgICAgICAgICAgICBpZiAoIWhhc1Byb3AoaGFuZGxlcnMsIGlkKSAmJiBtb2QgJiYgIW1vZC5lbmFibGVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZW5hYmxlKGRlcE1hcCwgdGhpcyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSkpOwoKICAgICAgICAgICAgICAgIC8vRW5hYmxlIGVhY2ggcGx1Z2luIHRoYXQgaXMgdXNlZCBpbgogICAgICAgICAgICAgICAgLy9hIGRlcGVuZGVuY3kKICAgICAgICAgICAgICAgIGVhY2hQcm9wKHRoaXMucGx1Z2luTWFwcywgYmluZCh0aGlzLCBmdW5jdGlvbiAocGx1Z2luTWFwKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG1vZCA9IGdldE93bihyZWdpc3RyeSwgcGx1Z2luTWFwLmlkKTsKICAgICAgICAgICAgICAgICAgICBpZiAobW9kICYmICFtb2QuZW5hYmxlZCkgewogICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmVuYWJsZShwbHVnaW5NYXAsIHRoaXMpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pKTsKCiAgICAgICAgICAgICAgICB0aGlzLmVuYWJsaW5nID0gZmFsc2U7CgogICAgICAgICAgICAgICAgdGhpcy5jaGVjaygpOwogICAgICAgICAgICB9LAoKICAgICAgICAgICAgb246IGZ1bmN0aW9uIChuYW1lLCBjYikgewogICAgICAgICAgICAgICAgdmFyIGNicyA9IHRoaXMuZXZlbnRzW25hbWVdOwogICAgICAgICAgICAgICAgaWYgKCFjYnMpIHsKICAgICAgICAgICAgICAgICAgICBjYnMgPSB0aGlzLmV2ZW50c1tuYW1lXSA9IFtdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY2JzLnB1c2goY2IpOwogICAgICAgICAgICB9LAoKICAgICAgICAgICAgZW1pdDogZnVuY3Rpb24gKG5hbWUsIGV2dCkgewogICAgICAgICAgICAgICAgZWFjaCh0aGlzLmV2ZW50c1tuYW1lXSwgZnVuY3Rpb24gKGNiKSB7CiAgICAgICAgICAgICAgICAgICAgY2IoZXZ0KTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgaWYgKG5hbWUgPT09ICdlcnJvcicpIHsKICAgICAgICAgICAgICAgICAgICAvL05vdyB0aGF0IHRoZSBlcnJvciBoYW5kbGVyIHdhcyB0cmlnZ2VyZWQsIHJlbW92ZQogICAgICAgICAgICAgICAgICAgIC8vdGhlIGxpc3RlbmVycywgc2luY2UgdGhpcyBicm9rZW4gTW9kdWxlIGluc3RhbmNlCiAgICAgICAgICAgICAgICAgICAgLy9jYW4gc3RheSBhcm91bmQgZm9yIGEgd2hpbGUgaW4gdGhlIHJlZ2lzdHJ5LgogICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLmV2ZW50c1tuYW1lXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH07CgogICAgICAgIGZ1bmN0aW9uIGNhbGxHZXRNb2R1bGUoYXJncykgewogICAgICAgICAgICAvL1NraXAgbW9kdWxlcyBhbHJlYWR5IGRlZmluZWQuCiAgICAgICAgICAgIGlmICghaGFzUHJvcChkZWZpbmVkLCBhcmdzWzBdKSkgewogICAgICAgICAgICAgICAgZ2V0TW9kdWxlKG1ha2VNb2R1bGVNYXAoYXJnc1swXSwgbnVsbCwgdHJ1ZSkpLmluaXQoYXJnc1sxXSwgYXJnc1syXSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHJlbW92ZUxpc3RlbmVyKG5vZGUsIGZ1bmMsIG5hbWUsIGllTmFtZSkgewogICAgICAgICAgICAvL0Zhdm9yIGRldGFjaEV2ZW50IGJlY2F1c2Ugb2YgSUU5CiAgICAgICAgICAgIC8vaXNzdWUsIHNlZSBhdHRhY2hFdmVudC9hZGRFdmVudExpc3RlbmVyIGNvbW1lbnQgZWxzZXdoZXJlCiAgICAgICAgICAgIC8vaW4gdGhpcyBmaWxlLgogICAgICAgICAgICBpZiAobm9kZS5kZXRhY2hFdmVudCAmJiAhaXNPcGVyYSkgewogICAgICAgICAgICAgICAgLy9Qcm9iYWJseSBJRS4gSWYgbm90IGl0IHdpbGwgdGhyb3cgYW4gZXJyb3IsIHdoaWNoIHdpbGwgYmUKICAgICAgICAgICAgICAgIC8vdXNlZnVsIHRvIGtub3cuCiAgICAgICAgICAgICAgICBpZiAoaWVOYW1lKSB7CiAgICAgICAgICAgICAgICAgICAgbm9kZS5kZXRhY2hFdmVudChpZU5hbWUsIGZ1bmMpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgbm9kZS5yZW1vdmVFdmVudExpc3RlbmVyKG5hbWUsIGZ1bmMsIGZhbHNlKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLyoqCiAgICAgICAgICogR2l2ZW4gYW4gZXZlbnQgZnJvbSBhIHNjcmlwdCBub2RlLCBnZXQgdGhlIHJlcXVpcmVqcyBpbmZvIGZyb20gaXQsCiAgICAgICAgICogYW5kIHRoZW4gcmVtb3ZlcyB0aGUgZXZlbnQgbGlzdGVuZXJzIG9uIHRoZSBub2RlLgogICAgICAgICAqIEBwYXJhbSB7RXZlbnR9IGV2dAogICAgICAgICAqIEByZXR1cm5zIHtPYmplY3R9CiAgICAgICAgICovCiAgICAgICAgZnVuY3Rpb24gZ2V0U2NyaXB0RGF0YShldnQpIHsKICAgICAgICAgICAgLy9Vc2luZyBjdXJyZW50VGFyZ2V0IGluc3RlYWQgb2YgdGFyZ2V0IGZvciBGaXJlZm94IDIuMCdzIHNha2UuIE5vdAogICAgICAgICAgICAvL2FsbCBvbGQgYnJvd3NlcnMgd2lsbCBiZSBzdXBwb3J0ZWQsIGJ1dCB0aGlzIG9uZSB3YXMgZWFzeSBlbm91Z2gKICAgICAgICAgICAgLy90byBzdXBwb3J0IGFuZCBzdGlsbCBtYWtlcyBzZW5zZS4KICAgICAgICAgICAgdmFyIG5vZGUgPSBldnQuY3VycmVudFRhcmdldCB8fCBldnQuc3JjRWxlbWVudDsKCiAgICAgICAgICAgIC8vUmVtb3ZlIHRoZSBsaXN0ZW5lcnMgb25jZSBoZXJlLgogICAgICAgICAgICByZW1vdmVMaXN0ZW5lcihub2RlLCBjb250ZXh0Lm9uU2NyaXB0TG9hZCwgJ2xvYWQnLCAnb25yZWFkeXN0YXRlY2hhbmdlJyk7CiAgICAgICAgICAgIHJlbW92ZUxpc3RlbmVyKG5vZGUsIGNvbnRleHQub25TY3JpcHRFcnJvciwgJ2Vycm9yJyk7CgogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgbm9kZTogbm9kZSwKICAgICAgICAgICAgICAgIGlkOiBub2RlICYmIG5vZGUuZ2V0QXR0cmlidXRlKCdkYXRhLXJlcXVpcmVtb2R1bGUnKQogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gaW50YWtlRGVmaW5lcygpIHsKICAgICAgICAgICAgdmFyIGFyZ3M7CgogICAgICAgICAgICAvL0FueSBkZWZpbmVkIG1vZHVsZXMgaW4gdGhlIGdsb2JhbCBxdWV1ZSwgaW50YWtlIHRoZW0gbm93LgogICAgICAgICAgICB0YWtlR2xvYmFsUXVldWUoKTsKCiAgICAgICAgICAgIC8vTWFrZSBzdXJlIGFueSByZW1haW5pbmcgZGVmUXVldWUgaXRlbXMgZ2V0IHByb3Blcmx5IHByb2Nlc3NlZC4KICAgICAgICAgICAgd2hpbGUgKGRlZlF1ZXVlLmxlbmd0aCkgewogICAgICAgICAgICAgICAgYXJncyA9IGRlZlF1ZXVlLnNoaWZ0KCk7CiAgICAgICAgICAgICAgICBpZiAoYXJnc1swXSA9PT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBvbkVycm9yKG1ha2VFcnJvcignbWlzbWF0Y2gnLCAnTWlzbWF0Y2hlZCBhbm9ueW1vdXMgZGVmaW5lKCkgbW9kdWxlOiAnICsKICAgICAgICAgICAgICAgICAgICAgICAgYXJnc1thcmdzLmxlbmd0aCAtIDFdKSk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIC8vYXJncyBhcmUgaWQsIGRlcHMsIGZhY3RvcnkuIFNob3VsZCBiZSBub3JtYWxpemVkIGJ5IHRoZQogICAgICAgICAgICAgICAgICAgIC8vZGVmaW5lKCkgZnVuY3Rpb24uCiAgICAgICAgICAgICAgICAgICAgY2FsbEdldE1vZHVsZShhcmdzKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBjb250ZXh0LmRlZlF1ZXVlTWFwID0ge307CiAgICAgICAgfQoKICAgICAgICBjb250ZXh0ID0gewogICAgICAgICAgICBjb25maWc6IGNvbmZpZywKICAgICAgICAgICAgY29udGV4dE5hbWU6IGNvbnRleHROYW1lLAogICAgICAgICAgICByZWdpc3RyeTogcmVnaXN0cnksCiAgICAgICAgICAgIGRlZmluZWQ6IGRlZmluZWQsCiAgICAgICAgICAgIHVybEZldGNoZWQ6IHVybEZldGNoZWQsCiAgICAgICAgICAgIGRlZlF1ZXVlOiBkZWZRdWV1ZSwKICAgICAgICAgICAgZGVmUXVldWVNYXA6IHt9LAogICAgICAgICAgICBNb2R1bGU6IE1vZHVsZSwKICAgICAgICAgICAgbWFrZU1vZHVsZU1hcDogbWFrZU1vZHVsZU1hcCwKICAgICAgICAgICAgbmV4dFRpY2s6IHJlcS5uZXh0VGljaywKICAgICAgICAgICAgb25FcnJvcjogb25FcnJvciwKCiAgICAgICAgICAgIC8qKgogICAgICAgICAgICAgKiBTZXQgYSBjb25maWd1cmF0aW9uIGZvciB0aGUgY29udGV4dC4KICAgICAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IGNmZyBjb25maWcgb2JqZWN0IHRvIGludGVncmF0ZS4KICAgICAgICAgICAgICovCiAgICAgICAgICAgIGNvbmZpZ3VyZTogZnVuY3Rpb24gKGNmZykgewogICAgICAgICAgICAgICAgLy9NYWtlIHN1cmUgdGhlIGJhc2VVcmwgZW5kcyBpbiBhIHNsYXNoLgogICAgICAgICAgICAgICAgaWYgKGNmZy5iYXNlVXJsKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGNmZy5iYXNlVXJsLmNoYXJBdChjZmcuYmFzZVVybC5sZW5ndGggLSAxKSAhPT0gJy8nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNmZy5iYXNlVXJsICs9ICcvJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8gQ29udmVydCBvbGQgc3R5bGUgdXJsQXJncyBzdHJpbmcgdG8gYSBmdW5jdGlvbi4KICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgY2ZnLnVybEFyZ3MgPT09ICdzdHJpbmcnKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHVybEFyZ3MgPSBjZmcudXJsQXJnczsKICAgICAgICAgICAgICAgICAgICBjZmcudXJsQXJncyA9IGZ1bmN0aW9uKGlkLCB1cmwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICh1cmwuaW5kZXhPZignPycpID09PSAtMSA/ICc/JyA6ICcmJykgKyB1cmxBcmdzOwogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy9TYXZlIG9mZiB0aGUgcGF0aHMgc2luY2UgdGhleSByZXF1aXJlIHNwZWNpYWwgcHJvY2Vzc2luZywKICAgICAgICAgICAgICAgIC8vdGhleSBhcmUgYWRkaXRpdmUuCiAgICAgICAgICAgICAgICB2YXIgc2hpbSA9IGNvbmZpZy5zaGltLAogICAgICAgICAgICAgICAgICAgIG9ianMgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhzOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICBidW5kbGVzOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICBjb25maWc6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgIG1hcDogdHJ1ZQogICAgICAgICAgICAgICAgICAgIH07CgogICAgICAgICAgICAgICAgZWFjaFByb3AoY2ZnLCBmdW5jdGlvbiAodmFsdWUsIHByb3ApIHsKICAgICAgICAgICAgICAgICAgICBpZiAob2Jqc1twcm9wXSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbmZpZ1twcm9wXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnW3Byb3BdID0ge307CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgbWl4aW4oY29uZmlnW3Byb3BdLCB2YWx1ZSwgdHJ1ZSwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnW3Byb3BdID0gdmFsdWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgLy9SZXZlcnNlIG1hcCB0aGUgYnVuZGxlcwogICAgICAgICAgICAgICAgaWYgKGNmZy5idW5kbGVzKSB7CiAgICAgICAgICAgICAgICAgICAgZWFjaFByb3AoY2ZnLmJ1bmRsZXMsIGZ1bmN0aW9uICh2YWx1ZSwgcHJvcCkgewogICAgICAgICAgICAgICAgICAgICAgICBlYWNoKHZhbHVlLCBmdW5jdGlvbiAodikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHYgIT09IHByb3ApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidW5kbGVzTWFwW3ZdID0gcHJvcDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy9NZXJnZSBzaGltCiAgICAgICAgICAgICAgICBpZiAoY2ZnLnNoaW0pIHsKICAgICAgICAgICAgICAgICAgICBlYWNoUHJvcChjZmcuc2hpbSwgZnVuY3Rpb24gKHZhbHVlLCBpZCkgewogICAgICAgICAgICAgICAgICAgICAgICAvL05vcm1hbGl6ZSB0aGUgc3RydWN0dXJlCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0FycmF5KHZhbHVlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwczogdmFsdWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCh2YWx1ZS5leHBvcnRzIHx8IHZhbHVlLmluaXQpICYmICF2YWx1ZS5leHBvcnRzRm4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLmV4cG9ydHNGbiA9IGNvbnRleHQubWFrZVNoaW1FeHBvcnRzKHZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBzaGltW2lkXSA9IHZhbHVlOwogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIGNvbmZpZy5zaGltID0gc2hpbTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAvL0FkanVzdCBwYWNrYWdlcyBpZiBuZWNlc3NhcnkuCiAgICAgICAgICAgICAgICBpZiAoY2ZnLnBhY2thZ2VzKSB7CiAgICAgICAgICAgICAgICAgICAgZWFjaChjZmcucGFja2FnZXMsIGZ1bmN0aW9uIChwa2dPYmopIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxvY2F0aW9uLCBuYW1lOwoKICAgICAgICAgICAgICAgICAgICAgICAgcGtnT2JqID0gdHlwZW9mIHBrZ09iaiA9PT0gJ3N0cmluZycgPyB7bmFtZTogcGtnT2JqfSA6IHBrZ09iajsKCiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgPSBwa2dPYmoubmFtZTsKICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24gPSBwa2dPYmoubG9jYXRpb247CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsb2NhdGlvbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLnBhdGhzW25hbWVdID0gcGtnT2JqLmxvY2F0aW9uOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAvL1NhdmUgcG9pbnRlciB0byBtYWluIG1vZHVsZSBJRCBmb3IgcGtnIG5hbWUuCiAgICAgICAgICAgICAgICAgICAgICAgIC8vUmVtb3ZlIGxlYWRpbmcgZG90IGluIG1haW4sIHNvIG1haW4gcGF0aHMgYXJlIG5vcm1hbGl6ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgIC8vYW5kIHJlbW92ZSBhbnkgdHJhaWxpbmcgLmpzLCBzaW5jZSBkaWZmZXJlbnQgcGFja2FnZQogICAgICAgICAgICAgICAgICAgICAgICAvL2VudnMgaGF2ZSBkaWZmZXJlbnQgY29udmVudGlvbnM6IHNvbWUgdXNlIGEgbW9kdWxlIG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIC8vc29tZSB1c2UgYSBmaWxlIG5hbWUuCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5wa2dzW25hbWVdID0gcGtnT2JqLm5hbWUgKyAnLycgKyAocGtnT2JqLm1haW4gfHwgJ21haW4nKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoY3VyckRpclJlZ0V4cCwgJycpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZShqc1N1ZmZpeFJlZ0V4cCwgJycpOwogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8vSWYgdGhlcmUgYXJlIGFueSAid2FpdGluZyB0byBleGVjdXRlIiBtb2R1bGVzIGluIHRoZSByZWdpc3RyeSwKICAgICAgICAgICAgICAgIC8vdXBkYXRlIHRoZSBtYXBzIGZvciB0aGVtLCBzaW5jZSB0aGVpciBpbmZvLCBsaWtlIFVSTHMgdG8gbG9hZCwKICAgICAgICAgICAgICAgIC8vbWF5IGhhdmUgY2hhbmdlZC4KICAgICAgICAgICAgICAgIGVhY2hQcm9wKHJlZ2lzdHJ5LCBmdW5jdGlvbiAobW9kLCBpZCkgewogICAgICAgICAgICAgICAgICAgIC8vSWYgbW9kdWxlIGFscmVhZHkgaGFzIGluaXQgY2FsbGVkLCBzaW5jZSBpdCBpcyB0b28KICAgICAgICAgICAgICAgICAgICAvL2xhdGUgdG8gbW9kaWZ5IHRoZW0sIGFuZCBpZ25vcmUgdW5ub3JtYWxpemVkIG9uZXMKICAgICAgICAgICAgICAgICAgICAvL3NpbmNlIHRoZXkgYXJlIHRyYW5zaWVudC4KICAgICAgICAgICAgICAgICAgICBpZiAoIW1vZC5pbml0ZWQgJiYgIW1vZC5tYXAudW5ub3JtYWxpemVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG1vZC5tYXAgPSBtYWtlTW9kdWxlTWFwKGlkLCBudWxsLCB0cnVlKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAvL0lmIGEgZGVwcyBhcnJheSBvciBhIGNvbmZpZyBjYWxsYmFjayBpcyBzcGVjaWZpZWQsIHRoZW4gY2FsbAogICAgICAgICAgICAgICAgLy9yZXF1aXJlIHdpdGggdGhvc2UgYXJncy4gVGhpcyBpcyB1c2VmdWwgd2hlbiByZXF1aXJlIGlzIGRlZmluZWQgYXMgYQogICAgICAgICAgICAgICAgLy9jb25maWcgb2JqZWN0IGJlZm9yZSByZXF1aXJlLmpzIGlzIGxvYWRlZC4KICAgICAgICAgICAgICAgIGlmIChjZmcuZGVwcyB8fCBjZmcuY2FsbGJhY2spIHsKICAgICAgICAgICAgICAgICAgICBjb250ZXh0LnJlcXVpcmUoY2ZnLmRlcHMgfHwgW10sIGNmZy5jYWxsYmFjayk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICBtYWtlU2hpbUV4cG9ydHM6IGZ1bmN0aW9uICh2YWx1ZSkgewogICAgICAgICAgICAgICAgZnVuY3Rpb24gZm4oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHJldDsKICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUuaW5pdCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXQgPSB2YWx1ZS5pbml0LmFwcGx5KGdsb2JhbCwgYXJndW1lbnRzKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldCB8fCAodmFsdWUuZXhwb3J0cyAmJiBnZXRHbG9iYWwodmFsdWUuZXhwb3J0cykpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIGZuOwogICAgICAgICAgICB9LAoKICAgICAgICAgICAgbWFrZVJlcXVpcmU6IGZ1bmN0aW9uIChyZWxNYXAsIG9wdGlvbnMpIHsKICAgICAgICAgICAgICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9OwoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGxvY2FsUmVxdWlyZShkZXBzLCBjYWxsYmFjaywgZXJyYmFjaykgewogICAgICAgICAgICAgICAgICAgIHZhciBpZCwgbWFwLCByZXF1aXJlTW9kOwoKICAgICAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5lbmFibGVCdWlsZENhbGxiYWNrICYmIGNhbGxiYWNrICYmIGlzRnVuY3Rpb24oY2FsbGJhY2spKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrLl9fcmVxdWlyZUpzQnVpbGQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBkZXBzID09PSAnc3RyaW5nJykgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNGdW5jdGlvbihjYWxsYmFjaykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vSW52YWxpZCBjYWxsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb25FcnJvcihtYWtlRXJyb3IoJ3JlcXVpcmVhcmdzJywgJ0ludmFsaWQgcmVxdWlyZSBjYWxsJyksIGVycmJhY2spOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAvL0lmIHJlcXVpcmV8ZXhwb3J0c3xtb2R1bGUgYXJlIHJlcXVlc3RlZCwgZ2V0IHRoZQogICAgICAgICAgICAgICAgICAgICAgICAvL3ZhbHVlIGZvciB0aGVtIGZyb20gdGhlIHNwZWNpYWwgaGFuZGxlcnMuIENhdmVhdDoKICAgICAgICAgICAgICAgICAgICAgICAgLy90aGlzIG9ubHkgd29ya3Mgd2hpbGUgbW9kdWxlIGlzIGJlaW5nIGRlZmluZWQuCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZWxNYXAgJiYgaGFzUHJvcChoYW5kbGVycywgZGVwcykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBoYW5kbGVyc1tkZXBzXShyZWdpc3RyeVtyZWxNYXAuaWRdKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgLy9TeW5jaHJvbm91cyBhY2Nlc3MgdG8gb25lIG1vZHVsZS4gSWYgcmVxdWlyZS5nZXQgaXMKICAgICAgICAgICAgICAgICAgICAgICAgLy9hdmFpbGFibGUgKGFzIGluIHRoZSBOb2RlIGFkYXB0ZXIpLCBwcmVmZXIgdGhhdC4KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcS5nZXQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXEuZ2V0KGNvbnRleHQsIGRlcHMsIHJlbE1hcCwgbG9jYWxSZXF1aXJlKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgLy9Ob3JtYWxpemUgbW9kdWxlIG5hbWUsIGlmIGl0IGNvbnRhaW5zIC4gb3IgLi4KICAgICAgICAgICAgICAgICAgICAgICAgbWFwID0gbWFrZU1vZHVsZU1hcChkZXBzLCByZWxNYXAsIGZhbHNlLCB0cnVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBtYXAuaWQ7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWhhc1Byb3AoZGVmaW5lZCwgaWQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb25FcnJvcihtYWtlRXJyb3IoJ25vdGxvYWRlZCcsICdNb2R1bGUgbmFtZSAiJyArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIiBoYXMgbm90IGJlZW4gbG9hZGVkIHlldCBmb3IgY29udGV4dDogJyArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0TmFtZSArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVsTWFwID8gJycgOiAnLiBVc2UgcmVxdWlyZShbXSknKSkpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkZWZpbmVkW2lkXTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIC8vR3JhYiBkZWZpbmVzIHdhaXRpbmcgaW4gdGhlIGdsb2JhbCBxdWV1ZS4KICAgICAgICAgICAgICAgICAgICBpbnRha2VEZWZpbmVzKCk7CgogICAgICAgICAgICAgICAgICAgIC8vTWFyayBhbGwgdGhlIGRlcGVuZGVuY2llcyBhcyBuZWVkaW5nIHRvIGJlIGxvYWRlZC4KICAgICAgICAgICAgICAgICAgICBjb250ZXh0Lm5leHRUaWNrKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy9Tb21lIGRlZmluZXMgY291bGQgaGF2ZSBiZWVuIGFkZGVkIHNpbmNlIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAvL3JlcXVpcmUgY2FsbCwgY29sbGVjdCB0aGVtLgogICAgICAgICAgICAgICAgICAgICAgICBpbnRha2VEZWZpbmVzKCk7CgogICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlTW9kID0gZ2V0TW9kdWxlKG1ha2VNb2R1bGVNYXAobnVsbCwgcmVsTWFwKSk7CgogICAgICAgICAgICAgICAgICAgICAgICAvL1N0b3JlIGlmIG1hcCBjb25maWcgc2hvdWxkIGJlIGFwcGxpZWQgdG8gdGhpcyByZXF1aXJlCiAgICAgICAgICAgICAgICAgICAgICAgIC8vY2FsbCBmb3IgZGVwZW5kZW5jaWVzLgogICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlTW9kLnNraXBNYXAgPSBvcHRpb25zLnNraXBNYXA7CgogICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlTW9kLmluaXQoZGVwcywgY2FsbGJhY2ssIGVycmJhY2ssIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZWQ6IHRydWUKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgICAgICAgICBjaGVja0xvYWRlZCgpOwogICAgICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9jYWxSZXF1aXJlOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIG1peGluKGxvY2FsUmVxdWlyZSwgewogICAgICAgICAgICAgICAgICAgIGlzQnJvd3NlcjogaXNCcm93c2VyLAoKICAgICAgICAgICAgICAgICAgICAvKioKICAgICAgICAgICAgICAgICAgICAgKiBDb252ZXJ0cyBhIG1vZHVsZSBuYW1lICsgLmV4dGVuc2lvbiBpbnRvIGFuIFVSTCBwYXRoLgogICAgICAgICAgICAgICAgICAgICAqICpSZXF1aXJlcyogdGhlIHVzZSBvZiBhIG1vZHVsZSBuYW1lLiBJdCBkb2VzIG5vdCBzdXBwb3J0IHVzaW5nCiAgICAgICAgICAgICAgICAgICAgICogcGxhaW4gVVJMcyBsaWtlIG5hbWVUb1VybC4KICAgICAgICAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgICAgICAgICB0b1VybDogZnVuY3Rpb24gKG1vZHVsZU5hbWVQbHVzRXh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCA9IG1vZHVsZU5hbWVQbHVzRXh0Lmxhc3RJbmRleE9mKCcuJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWdtZW50ID0gbW9kdWxlTmFtZVBsdXNFeHQuc3BsaXQoJy8nKVswXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzUmVsYXRpdmUgPSBzZWdtZW50ID09PSAnLicgfHwgc2VnbWVudCA9PT0gJy4uJzsKCiAgICAgICAgICAgICAgICAgICAgICAgIC8vSGF2ZSBhIGZpbGUgZXh0ZW5zaW9uIGFsaWFzLCBhbmQgaXQgaXMgbm90IHRoZQogICAgICAgICAgICAgICAgICAgICAgICAvL2RvdHMgZnJvbSBhIHJlbGF0aXZlIHBhdGguCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbmRleCAhPT0gLTEgJiYgKCFpc1JlbGF0aXZlIHx8IGluZGV4ID4gMSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dCA9IG1vZHVsZU5hbWVQbHVzRXh0LnN1YnN0cmluZyhpbmRleCwgbW9kdWxlTmFtZVBsdXNFeHQubGVuZ3RoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZU5hbWVQbHVzRXh0ID0gbW9kdWxlTmFtZVBsdXNFeHQuc3Vic3RyaW5nKDAsIGluZGV4KTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQubmFtZVRvVXJsKG5vcm1hbGl6ZShtb2R1bGVOYW1lUGx1c0V4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsTWFwICYmIHJlbE1hcC5pZCwgdHJ1ZSksIGV4dCwgIHRydWUpOwogICAgICAgICAgICAgICAgICAgIH0sCgogICAgICAgICAgICAgICAgICAgIGRlZmluZWQ6IGZ1bmN0aW9uIChpZCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaGFzUHJvcChkZWZpbmVkLCBtYWtlTW9kdWxlTWFwKGlkLCByZWxNYXAsIGZhbHNlLCB0cnVlKS5pZCk7CiAgICAgICAgICAgICAgICAgICAgfSwKCiAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVkOiBmdW5jdGlvbiAoaWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBtYWtlTW9kdWxlTWFwKGlkLCByZWxNYXAsIGZhbHNlLCB0cnVlKS5pZDsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGhhc1Byb3AoZGVmaW5lZCwgaWQpIHx8IGhhc1Byb3AocmVnaXN0cnksIGlkKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAvL09ubHkgYWxsb3cgdW5kZWYgb24gdG9wIGxldmVsIHJlcXVpcmUgY2FsbHMKICAgICAgICAgICAgICAgIGlmICghcmVsTWFwKSB7CiAgICAgICAgICAgICAgICAgICAgbG9jYWxSZXF1aXJlLnVuZGVmID0gZnVuY3Rpb24gKGlkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vQmluZCBhbnkgd2FpdGluZyBkZWZpbmUoKSBjYWxscyB0byB0aGlzIGNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgIC8vZml4IGZvciAjNDA4CiAgICAgICAgICAgICAgICAgICAgICAgIHRha2VHbG9iYWxRdWV1ZSgpOwoKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG1hcCA9IG1ha2VNb2R1bGVNYXAoaWQsIHJlbE1hcCwgdHJ1ZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2QgPSBnZXRPd24ocmVnaXN0cnksIGlkKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIG1vZC51bmRlZmVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlU2NyaXB0KGlkKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBkZWZpbmVkW2lkXTsKICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHVybEZldGNoZWRbbWFwLnVybF07CiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB1bmRlZkV2ZW50c1tpZF07CgogICAgICAgICAgICAgICAgICAgICAgICAvL0NsZWFuIHF1ZXVlZCBkZWZpbmVzIHRvby4gR28gYmFja3dhcmRzCiAgICAgICAgICAgICAgICAgICAgICAgIC8vaW4gYXJyYXkgc28gdGhhdCB0aGUgc3BsaWNlcyBkbyBub3QKICAgICAgICAgICAgICAgICAgICAgICAgLy9tZXNzIHVwIHRoZSBpdGVyYXRpb24uCiAgICAgICAgICAgICAgICAgICAgICAgIGVhY2hSZXZlcnNlKGRlZlF1ZXVlLCBmdW5jdGlvbihhcmdzLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXJnc1swXSA9PT0gaWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZRdWV1ZS5zcGxpY2UoaSwgMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgY29udGV4dC5kZWZRdWV1ZU1hcFtpZF07CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAobW9kKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL0hvbGQgb24gdG8gbGlzdGVuZXJzIGluIGNhc2UgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL21vZHVsZSB3aWxsIGJlIGF0dGVtcHRlZCB0byBiZSByZWxvYWRlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy91c2luZyBhIGRpZmZlcmVudCBjb25maWcuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobW9kLmV2ZW50cy5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWZFdmVudHNbaWRdID0gbW9kLmV2ZW50czsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhblJlZ2lzdHJ5KGlkKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0dXJuIGxvY2FsUmVxdWlyZTsKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIC8qKgogICAgICAgICAgICAgKiBDYWxsZWQgdG8gZW5hYmxlIGEgbW9kdWxlIGlmIGl0IGlzIHN0aWxsIGluIHRoZSByZWdpc3RyeQogICAgICAgICAgICAgKiBhd2FpdGluZyBlbmFibGVtZW50LiBBIHNlY29uZCBhcmcsIHBhcmVudCwgdGhlIHBhcmVudCBtb2R1bGUsCiAgICAgICAgICAgICAqIGlzIHBhc3NlZCBpbiBmb3IgY29udGV4dCwgd2hlbiB0aGlzIG1ldGhvZCBpcyBvdmVycmlkZGVuIGJ5CiAgICAgICAgICAgICAqIHRoZSBvcHRpbWl6ZXIuIE5vdCBzaG93biBoZXJlIHRvIGtlZXAgY29kZSBjb21wYWN0LgogICAgICAgICAgICAgKi8KICAgICAgICAgICAgZW5hYmxlOiBmdW5jdGlvbiAoZGVwTWFwKSB7CiAgICAgICAgICAgICAgICB2YXIgbW9kID0gZ2V0T3duKHJlZ2lzdHJ5LCBkZXBNYXAuaWQpOwogICAgICAgICAgICAgICAgaWYgKG1vZCkgewogICAgICAgICAgICAgICAgICAgIGdldE1vZHVsZShkZXBNYXApLmVuYWJsZSgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAoKICAgICAgICAgICAgLyoqCiAgICAgICAgICAgICAqIEludGVybmFsIG1ldGhvZCB1c2VkIGJ5IGVudmlyb25tZW50IGFkYXB0ZXJzIHRvIGNvbXBsZXRlIGEgbG9hZCBldmVudC4KICAgICAgICAgICAgICogQSBsb2FkIGV2ZW50IGNvdWxkIGJlIGEgc2NyaXB0IGxvYWQgb3IganVzdCBhIGxvYWQgcGFzcyBmcm9tIGEgc3luY2hyb25vdXMKICAgICAgICAgICAgICogbG9hZCBjYWxsLgogICAgICAgICAgICAgKiBAcGFyYW0ge1N0cmluZ30gbW9kdWxlTmFtZSB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlIHRvIHBvdGVudGlhbGx5IGNvbXBsZXRlLgogICAgICAgICAgICAgKi8KICAgICAgICAgICAgY29tcGxldGVMb2FkOiBmdW5jdGlvbiAobW9kdWxlTmFtZSkgewogICAgICAgICAgICAgICAgdmFyIGZvdW5kLCBhcmdzLCBtb2QsCiAgICAgICAgICAgICAgICAgICAgc2hpbSA9IGdldE93bihjb25maWcuc2hpbSwgbW9kdWxlTmFtZSkgfHwge30sCiAgICAgICAgICAgICAgICAgICAgc2hFeHBvcnRzID0gc2hpbS5leHBvcnRzOwoKICAgICAgICAgICAgICAgIHRha2VHbG9iYWxRdWV1ZSgpOwoKICAgICAgICAgICAgICAgIHdoaWxlIChkZWZRdWV1ZS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICBhcmdzID0gZGVmUXVldWUuc2hpZnQoKTsKICAgICAgICAgICAgICAgICAgICBpZiAoYXJnc1swXSA9PT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICBhcmdzWzBdID0gbW9kdWxlTmFtZTsKICAgICAgICAgICAgICAgICAgICAgICAgLy9JZiBhbHJlYWR5IGZvdW5kIGFuIGFub255bW91cyBtb2R1bGUgYW5kIGJvdW5kIGl0CiAgICAgICAgICAgICAgICAgICAgICAgIC8vdG8gdGhpcyBuYW1lLCB0aGVuIHRoaXMgaXMgc29tZSBvdGhlciBhbm9uIG1vZHVsZQogICAgICAgICAgICAgICAgICAgICAgICAvL3dhaXRpbmcgZm9yIGl0cyBjb21wbGV0ZUxvYWQgdG8gZmlyZS4KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZvdW5kKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChhcmdzWzBdID09PSBtb2R1bGVOYW1lKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vRm91bmQgbWF0Y2hpbmcgZGVmaW5lIGNhbGwgZm9yIHRoaXMgc2NyaXB0IQogICAgICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBjYWxsR2V0TW9kdWxlKGFyZ3MpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY29udGV4dC5kZWZRdWV1ZU1hcCA9IHt9OwoKICAgICAgICAgICAgICAgIC8vRG8gdGhpcyBhZnRlciB0aGUgY3ljbGUgb2YgY2FsbEdldE1vZHVsZSBpbiBjYXNlIHRoZSByZXN1bHQKICAgICAgICAgICAgICAgIC8vb2YgdGhvc2UgY2FsbHMvaW5pdCBjYWxscyBjaGFuZ2VzIHRoZSByZWdpc3RyeS4KICAgICAgICAgICAgICAgIG1vZCA9IGdldE93bihyZWdpc3RyeSwgbW9kdWxlTmFtZSk7CgogICAgICAgICAgICAgICAgaWYgKCFmb3VuZCAmJiAhaGFzUHJvcChkZWZpbmVkLCBtb2R1bGVOYW1lKSAmJiBtb2QgJiYgIW1vZC5pbml0ZWQpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoY29uZmlnLmVuZm9yY2VEZWZpbmUgJiYgKCFzaEV4cG9ydHMgfHwgIWdldEdsb2JhbChzaEV4cG9ydHMpKSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaGFzUGF0aEZhbGxiYWNrKG1vZHVsZU5hbWUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb25FcnJvcihtYWtlRXJyb3IoJ25vZGVmaW5lJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ05vIGRlZmluZSBjYWxsIGZvciAnICsgbW9kdWxlTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21vZHVsZU5hbWVdKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAvL0Egc2NyaXB0IHRoYXQgZG9lcyBub3QgY2FsbCBkZWZpbmUoKSwgc28ganVzdCBzaW11bGF0ZQogICAgICAgICAgICAgICAgICAgICAgICAvL3RoZSBjYWxsIGZvciBpdC4KICAgICAgICAgICAgICAgICAgICAgICAgY2FsbEdldE1vZHVsZShbbW9kdWxlTmFtZSwgKHNoaW0uZGVwcyB8fCBbXSksIHNoaW0uZXhwb3J0c0ZuXSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGNoZWNrTG9hZGVkKCk7CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICAvKioKICAgICAgICAgICAgICogQ29udmVydHMgYSBtb2R1bGUgbmFtZSB0byBhIGZpbGUgcGF0aC4gU3VwcG9ydHMgY2FzZXMgd2hlcmUKICAgICAgICAgICAgICogbW9kdWxlTmFtZSBtYXkgYWN0dWFsbHkgYmUganVzdCBhbiBVUkwuCiAgICAgICAgICAgICAqIE5vdGUgdGhhdCBpdCAqKmRvZXMgbm90KiogY2FsbCBub3JtYWxpemUgb24gdGhlIG1vZHVsZU5hbWUsCiAgICAgICAgICAgICAqIGl0IGlzIGFzc3VtZWQgdG8gaGF2ZSBhbHJlYWR5IGJlZW4gbm9ybWFsaXplZC4gVGhpcyBpcyBhbgogICAgICAgICAgICAgKiBpbnRlcm5hbCBBUEksIG5vdCBhIHB1YmxpYyBvbmUuIFVzZSB0b1VybCBmb3IgdGhlIHB1YmxpYyBBUEkuCiAgICAgICAgICAgICAqLwogICAgICAgICAgICBuYW1lVG9Vcmw6IGZ1bmN0aW9uIChtb2R1bGVOYW1lLCBleHQsIHNraXBFeHQpIHsKICAgICAgICAgICAgICAgIHZhciBwYXRocywgc3ltcywgaSwgcGFyZW50TW9kdWxlLCB1cmwsCiAgICAgICAgICAgICAgICAgICAgcGFyZW50UGF0aCwgYnVuZGxlSWQsCiAgICAgICAgICAgICAgICAgICAgcGtnTWFpbiA9IGdldE93bihjb25maWcucGtncywgbW9kdWxlTmFtZSk7CgogICAgICAgICAgICAgICAgaWYgKHBrZ01haW4pIHsKICAgICAgICAgICAgICAgICAgICBtb2R1bGVOYW1lID0gcGtnTWFpbjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBidW5kbGVJZCA9IGdldE93bihidW5kbGVzTWFwLCBtb2R1bGVOYW1lKTsKCiAgICAgICAgICAgICAgICBpZiAoYnVuZGxlSWQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5uYW1lVG9VcmwoYnVuZGxlSWQsIGV4dCwgc2tpcEV4dCk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy9JZiBhIGNvbG9uIGlzIGluIHRoZSBVUkwsIGl0IGluZGljYXRlcyBhIHByb3RvY29sIGlzIHVzZWQgYW5kIGl0IGlzIGp1c3QKICAgICAgICAgICAgICAgIC8vYW4gVVJMIHRvIGEgZmlsZSwgb3IgaWYgaXQgc3RhcnRzIHdpdGggYSBzbGFzaCwgY29udGFpbnMgYSBxdWVyeSBhcmcgKGkuZS4gPykKICAgICAgICAgICAgICAgIC8vb3IgZW5kcyB3aXRoIC5qcywgdGhlbiBhc3N1bWUgdGhlIHVzZXIgbWVhbnQgdG8gdXNlIGFuIHVybCBhbmQgbm90IGEgbW9kdWxlIGlkLgogICAgICAgICAgICAgICAgLy9UaGUgc2xhc2ggaXMgaW1wb3J0YW50IGZvciBwcm90b2NvbC1sZXNzIFVSTHMgYXMgd2VsbCBhcyBmdWxsIHBhdGhzLgogICAgICAgICAgICAgICAgaWYgKHJlcS5qc0V4dFJlZ0V4cC50ZXN0KG1vZHVsZU5hbWUpKSB7CiAgICAgICAgICAgICAgICAgICAgLy9KdXN0IGEgcGxhaW4gcGF0aCwgbm90IG1vZHVsZSBuYW1lIGxvb2t1cCwgc28ganVzdCByZXR1cm4gaXQuCiAgICAgICAgICAgICAgICAgICAgLy9BZGQgZXh0ZW5zaW9uIGlmIGl0IGlzIGluY2x1ZGVkLiBUaGlzIGlzIGEgYml0IHdvbmt5LCBvbmx5IG5vbi0uanMgdGhpbmdzIHBhc3MKICAgICAgICAgICAgICAgICAgICAvL2FuIGV4dGVuc2lvbiwgdGhpcyBtZXRob2QgcHJvYmFibHkgbmVlZHMgdG8gYmUgcmV3b3JrZWQuCiAgICAgICAgICAgICAgICAgICAgdXJsID0gbW9kdWxlTmFtZSArIChleHQgfHwgJycpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAvL0EgbW9kdWxlIHRoYXQgbmVlZHMgdG8gYmUgY29udmVydGVkIHRvIGEgcGF0aC4KICAgICAgICAgICAgICAgICAgICBwYXRocyA9IGNvbmZpZy5wYXRoczsKCiAgICAgICAgICAgICAgICAgICAgc3ltcyA9IG1vZHVsZU5hbWUuc3BsaXQoJy8nKTsKICAgICAgICAgICAgICAgICAgICAvL0ZvciBlYWNoIG1vZHVsZSBuYW1lIHNlZ21lbnQsIHNlZSBpZiB0aGVyZSBpcyBhIHBhdGgKICAgICAgICAgICAgICAgICAgICAvL3JlZ2lzdGVyZWQgZm9yIGl0LiBTdGFydCB3aXRoIG1vc3Qgc3BlY2lmaWMgbmFtZQogICAgICAgICAgICAgICAgICAgIC8vYW5kIHdvcmsgdXAgZnJvbSBpdC4KICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSBzeW1zLmxlbmd0aDsgaSA+IDA7IGkgLT0gMSkgewogICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRNb2R1bGUgPSBzeW1zLnNsaWNlKDAsIGkpLmpvaW4oJy8nKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudFBhdGggPSBnZXRPd24ocGF0aHMsIHBhcmVudE1vZHVsZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnRQYXRoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL0lmIGFuIGFycmF5LCBpdCBtZWFucyB0aGVyZSBhcmUgYSBmZXcgY2hvaWNlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vQ2hvb3NlIHRoZSBvbmUgdGhhdCBpcyBkZXNpcmVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNBcnJheShwYXJlbnRQYXRoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudFBhdGggPSBwYXJlbnRQYXRoWzBdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ltcy5zcGxpY2UoMCwgaSwgcGFyZW50UGF0aCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgLy9Kb2luIHRoZSBwYXRoIHBhcnRzIHRvZ2V0aGVyLCB0aGVuIGZpZ3VyZSBvdXQgaWYgYmFzZVVybCBpcyBuZWVkZWQuCiAgICAgICAgICAgICAgICAgICAgdXJsID0gc3ltcy5qb2luKCcvJyk7CiAgICAgICAgICAgICAgICAgICAgdXJsICs9IChleHQgfHwgKC9eZGF0YVw6fF5ibG9iXDp8XD8vLnRlc3QodXJsKSB8fCBza2lwRXh0ID8gJycgOiAnLmpzJykpOwogICAgICAgICAgICAgICAgICAgIHVybCA9ICh1cmwuY2hhckF0KDApID09PSAnLycgfHwgdXJsLm1hdGNoKC9eW1x3XCtcLlwtXSs6LykgPyAnJyA6IGNvbmZpZy5iYXNlVXJsKSArIHVybDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICByZXR1cm4gY29uZmlnLnVybEFyZ3MgJiYgIS9eYmxvYlw6Ly50ZXN0KHVybCkgPwogICAgICAgICAgICAgICAgICAgICAgIHVybCArIGNvbmZpZy51cmxBcmdzKG1vZHVsZU5hbWUsIHVybCkgOiB1cmw7CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICAvL0RlbGVnYXRlcyB0byByZXEubG9hZC4gQnJva2VuIG91dCBhcyBhIHNlcGFyYXRlIGZ1bmN0aW9uIHRvCiAgICAgICAgICAgIC8vYWxsb3cgb3ZlcnJpZGluZyBpbiB0aGUgb3B0aW1pemVyLgogICAgICAgICAgICBsb2FkOiBmdW5jdGlvbiAoaWQsIHVybCkgewogICAgICAgICAgICAgICAgcmVxLmxvYWQoY29udGV4dCwgaWQsIHVybCk7CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICAvKioKICAgICAgICAgICAgICogRXhlY3V0ZXMgYSBtb2R1bGUgY2FsbGJhY2sgZnVuY3Rpb24uIEJyb2tlbiBvdXQgYXMgYSBzZXBhcmF0ZSBmdW5jdGlvbgogICAgICAgICAgICAgKiBzb2xlbHkgdG8gYWxsb3cgdGhlIGJ1aWxkIHN5c3RlbSB0byBzZXF1ZW5jZSB0aGUgZmlsZXMgaW4gdGhlIGJ1aWx0CiAgICAgICAgICAgICAqIGxheWVyIGluIHRoZSByaWdodCBzZXF1ZW5jZS4KICAgICAgICAgICAgICoKICAgICAgICAgICAgICogQHByaXZhdGUKICAgICAgICAgICAgICovCiAgICAgICAgICAgIGV4ZWNDYjogZnVuY3Rpb24gKG5hbWUsIGNhbGxiYWNrLCBhcmdzLCBleHBvcnRzKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2suYXBwbHkoZXhwb3J0cywgYXJncyk7CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICAvKioKICAgICAgICAgICAgICogY2FsbGJhY2sgZm9yIHNjcmlwdCBsb2FkcywgdXNlZCB0byBjaGVjayBzdGF0dXMgb2YgbG9hZGluZy4KICAgICAgICAgICAgICoKICAgICAgICAgICAgICogQHBhcmFtIHtFdmVudH0gZXZ0IHRoZSBldmVudCBmcm9tIHRoZSBicm93c2VyIGZvciB0aGUgc2NyaXB0CiAgICAgICAgICAgICAqIHRoYXQgd2FzIGxvYWRlZC4KICAgICAgICAgICAgICovCiAgICAgICAgICAgIG9uU2NyaXB0TG9hZDogZnVuY3Rpb24gKGV2dCkgewogICAgICAgICAgICAgICAgLy9Vc2luZyBjdXJyZW50VGFyZ2V0IGluc3RlYWQgb2YgdGFyZ2V0IGZvciBGaXJlZm94IDIuMCdzIHNha2UuIE5vdAogICAgICAgICAgICAgICAgLy9hbGwgb2xkIGJyb3dzZXJzIHdpbGwgYmUgc3VwcG9ydGVkLCBidXQgdGhpcyBvbmUgd2FzIGVhc3kgZW5vdWdoCiAgICAgICAgICAgICAgICAvL3RvIHN1cHBvcnQgYW5kIHN0aWxsIG1ha2VzIHNlbnNlLgogICAgICAgICAgICAgICAgaWYgKGV2dC50eXBlID09PSAnbG9hZCcgfHwKICAgICAgICAgICAgICAgICAgICAgICAgKHJlYWR5UmVnRXhwLnRlc3QoKGV2dC5jdXJyZW50VGFyZ2V0IHx8IGV2dC5zcmNFbGVtZW50KS5yZWFkeVN0YXRlKSkpIHsKICAgICAgICAgICAgICAgICAgICAvL1Jlc2V0IGludGVyYWN0aXZlIHNjcmlwdCBzbyBhIHNjcmlwdCBub2RlIGlzIG5vdCBoZWxkIG9udG8gZm9yCiAgICAgICAgICAgICAgICAgICAgLy90byBsb25nLgogICAgICAgICAgICAgICAgICAgIGludGVyYWN0aXZlU2NyaXB0ID0gbnVsbDsKCiAgICAgICAgICAgICAgICAgICAgLy9QdWxsIG91dCB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlIGFuZCB0aGUgY29udGV4dC4KICAgICAgICAgICAgICAgICAgICB2YXIgZGF0YSA9IGdldFNjcmlwdERhdGEoZXZ0KTsKICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmNvbXBsZXRlTG9hZChkYXRhLmlkKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIC8qKgogICAgICAgICAgICAgKiBDYWxsYmFjayBmb3Igc2NyaXB0IGVycm9ycy4KICAgICAgICAgICAgICovCiAgICAgICAgICAgIG9uU2NyaXB0RXJyb3I6IGZ1bmN0aW9uIChldnQpIHsKICAgICAgICAgICAgICAgIHZhciBkYXRhID0gZ2V0U2NyaXB0RGF0YShldnQpOwogICAgICAgICAgICAgICAgaWYgKCFoYXNQYXRoRmFsbGJhY2soZGF0YS5pZCkpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgcGFyZW50cyA9IFtdOwogICAgICAgICAgICAgICAgICAgIGVhY2hQcm9wKHJlZ2lzdHJ5LCBmdW5jdGlvbih2YWx1ZSwga2V5KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrZXkuaW5kZXhPZignX0ByJykgIT09IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVhY2godmFsdWUuZGVwTWFwcywgZnVuY3Rpb24oZGVwTWFwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRlcE1hcC5pZCA9PT0gZGF0YS5pZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRzLnB1c2goa2V5KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gb25FcnJvcihtYWtlRXJyb3IoJ3NjcmlwdGVycm9yJywgJ1NjcmlwdCBlcnJvciBmb3IgIicgKyBkYXRhLmlkICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmVudHMubGVuZ3RoID8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyIsIG5lZWRlZCBieTogJyArIHBhcmVudHMuam9pbignLCAnKSA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICciJyksIGV2dCwgW2RhdGEuaWRdKSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9OwoKICAgICAgICBjb250ZXh0LnJlcXVpcmUgPSBjb250ZXh0Lm1ha2VSZXF1aXJlKCk7CiAgICAgICAgcmV0dXJuIGNvbnRleHQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBNYWluIGVudHJ5IHBvaW50LgogICAgICoKICAgICAqIElmIHRoZSBvbmx5IGFyZ3VtZW50IHRvIHJlcXVpcmUgaXMgYSBzdHJpbmcsIHRoZW4gdGhlIG1vZHVsZSB0aGF0CiAgICAgKiBpcyByZXByZXNlbnRlZCBieSB0aGF0IHN0cmluZyBpcyBmZXRjaGVkIGZvciB0aGUgYXBwcm9wcmlhdGUgY29udGV4dC4KICAgICAqCiAgICAgKiBJZiB0aGUgZmlyc3QgYXJndW1lbnQgaXMgYW4gYXJyYXksIHRoZW4gaXQgd2lsbCBiZSB0cmVhdGVkIGFzIGFuIGFycmF5CiAgICAgKiBvZiBkZXBlbmRlbmN5IHN0cmluZyBuYW1lcyB0byBmZXRjaC4gQW4gb3B0aW9uYWwgZnVuY3Rpb24gY2FsbGJhY2sgY2FuCiAgICAgKiBiZSBzcGVjaWZpZWQgdG8gZXhlY3V0ZSB3aGVuIGFsbCBvZiB0aG9zZSBkZXBlbmRlbmNpZXMgYXJlIGF2YWlsYWJsZS4KICAgICAqCiAgICAgKiBNYWtlIGEgbG9jYWwgcmVxIHZhcmlhYmxlIHRvIGhlbHAgQ2FqYSBjb21wbGlhbmNlIChpdCBhc3N1bWVzIHRoaW5ncwogICAgICogb24gYSByZXF1aXJlIHRoYXQgYXJlIG5vdCBzdGFuZGFyZGl6ZWQpLCBhbmQgdG8gZ2l2ZSBhIHNob3J0CiAgICAgKiBuYW1lIGZvciBtaW5pZmljYXRpb24vbG9jYWwgc2NvcGUgdXNlLgogICAgICovCiAgICByZXEgPSByZXF1aXJlanMgPSBmdW5jdGlvbiAoZGVwcywgY2FsbGJhY2ssIGVycmJhY2ssIG9wdGlvbmFsKSB7CgogICAgICAgIC8vRmluZCB0aGUgcmlnaHQgY29udGV4dCwgdXNlIGRlZmF1bHQKICAgICAgICB2YXIgY29udGV4dCwgY29uZmlnLAogICAgICAgICAgICBjb250ZXh0TmFtZSA9IGRlZkNvbnRleHROYW1lOwoKICAgICAgICAvLyBEZXRlcm1pbmUgaWYgaGF2ZSBjb25maWcgb2JqZWN0IGluIHRoZSBjYWxsLgogICAgICAgIGlmICghaXNBcnJheShkZXBzKSAmJiB0eXBlb2YgZGVwcyAhPT0gJ3N0cmluZycpIHsKICAgICAgICAgICAgLy8gZGVwcyBpcyBhIGNvbmZpZyBvYmplY3QKICAgICAgICAgICAgY29uZmlnID0gZGVwczsKICAgICAgICAgICAgaWYgKGlzQXJyYXkoY2FsbGJhY2spKSB7CiAgICAgICAgICAgICAgICAvLyBBZGp1c3QgYXJncyBpZiB0aGVyZSBhcmUgZGVwZW5kZW5jaWVzCiAgICAgICAgICAgICAgICBkZXBzID0gY2FsbGJhY2s7CiAgICAgICAgICAgICAgICBjYWxsYmFjayA9IGVycmJhY2s7CiAgICAgICAgICAgICAgICBlcnJiYWNrID0gb3B0aW9uYWw7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBkZXBzID0gW107CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmIChjb25maWcgJiYgY29uZmlnLmNvbnRleHQpIHsKICAgICAgICAgICAgY29udGV4dE5hbWUgPSBjb25maWcuY29udGV4dDsKICAgICAgICB9CgogICAgICAgIGNvbnRleHQgPSBnZXRPd24oY29udGV4dHMsIGNvbnRleHROYW1lKTsKICAgICAgICBpZiAoIWNvbnRleHQpIHsKICAgICAgICAgICAgY29udGV4dCA9IGNvbnRleHRzW2NvbnRleHROYW1lXSA9IHJlcS5zLm5ld0NvbnRleHQoY29udGV4dE5hbWUpOwogICAgICAgIH0KCiAgICAgICAgaWYgKGNvbmZpZykgewogICAgICAgICAgICBjb250ZXh0LmNvbmZpZ3VyZShjb25maWcpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGNvbnRleHQucmVxdWlyZShkZXBzLCBjYWxsYmFjaywgZXJyYmFjayk7CiAgICB9OwoKICAgIC8qKgogICAgICogU3VwcG9ydCByZXF1aXJlLmNvbmZpZygpIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGNvb3BlcmF0ZSB3aXRoIG90aGVyCiAgICAgKiBBTUQgbG9hZGVycyBvbiBnbG9iYWxseSBhZ3JlZWQgbmFtZXMuCiAgICAgKi8KICAgIHJlcS5jb25maWcgPSBmdW5jdGlvbiAoY29uZmlnKSB7CiAgICAgICAgcmV0dXJuIHJlcShjb25maWcpOwogICAgfTsKCiAgICAvKioKICAgICAqIEV4ZWN1dGUgc29tZXRoaW5nIGFmdGVyIHRoZSBjdXJyZW50IHRpY2sKICAgICAqIG9mIHRoZSBldmVudCBsb29wLiBPdmVycmlkZSBmb3Igb3RoZXIgZW52cwogICAgICogdGhhdCBoYXZlIGEgYmV0dGVyIHNvbHV0aW9uIHRoYW4gc2V0VGltZW91dC4KICAgICAqIEBwYXJhbSAge0Z1bmN0aW9ufSBmbiBmdW5jdGlvbiB0byBleGVjdXRlIGxhdGVyLgogICAgICovCiAgICByZXEubmV4dFRpY2sgPSB0eXBlb2Ygc2V0VGltZW91dCAhPT0gJ3VuZGVmaW5lZCcgPyBmdW5jdGlvbiAoZm4pIHsKICAgICAgICBzZXRUaW1lb3V0KGZuLCA0KTsKICAgIH0gOiBmdW5jdGlvbiAoZm4pIHsgZm4oKTsgfTsKCiAgICAvKioKICAgICAqIEV4cG9ydCByZXF1aXJlIGFzIGEgZ2xvYmFsLCBidXQgb25seSBpZiBpdCBkb2VzIG5vdCBhbHJlYWR5IGV4aXN0LgogICAgICovCiAgICBpZiAoIXJlcXVpcmUpIHsKICAgICAgICByZXF1aXJlID0gcmVxOwogICAgfQoKICAgIHJlcS52ZXJzaW9uID0gdmVyc2lvbjsKCiAgICAvL1VzZWQgdG8gZmlsdGVyIG91dCBkZXBlbmRlbmNpZXMgdGhhdCBhcmUgYWxyZWFkeSBwYXRocy4KICAgIHJlcS5qc0V4dFJlZ0V4cCA9IC9eXC98OnxcP3xcLmpzJC87CiAgICByZXEuaXNCcm93c2VyID0gaXNCcm93c2VyOwogICAgcyA9IHJlcS5zID0gewogICAgICAgIGNvbnRleHRzOiBjb250ZXh0cywKICAgICAgICBuZXdDb250ZXh0OiBuZXdDb250ZXh0CiAgICB9OwoKICAgIC8vQ3JlYXRlIGRlZmF1bHQgY29udGV4dC4KICAgIHJlcSh7fSk7CgogICAgLy9FeHBvcnRzIHNvbWUgY29udGV4dC1zZW5zaXRpdmUgbWV0aG9kcyBvbiBnbG9iYWwgcmVxdWlyZS4KICAgIGVhY2goWwogICAgICAgICd0b1VybCcsCiAgICAgICAgJ3VuZGVmJywKICAgICAgICAnZGVmaW5lZCcsCiAgICAgICAgJ3NwZWNpZmllZCcKICAgIF0sIGZ1bmN0aW9uIChwcm9wKSB7CiAgICAgICAgLy9SZWZlcmVuY2UgZnJvbSBjb250ZXh0cyBpbnN0ZWFkIG9mIGVhcmx5IGJpbmRpbmcgdG8gZGVmYXVsdCBjb250ZXh0LAogICAgICAgIC8vc28gdGhhdCBkdXJpbmcgYnVpbGRzLCB0aGUgbGF0ZXN0IGluc3RhbmNlIG9mIHRoZSBkZWZhdWx0IGNvbnRleHQKICAgICAgICAvL3dpdGggaXRzIGNvbmZpZyBnZXRzIHVzZWQuCiAgICAgICAgcmVxW3Byb3BdID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgICB2YXIgY3R4ID0gY29udGV4dHNbZGVmQ29udGV4dE5hbWVdOwogICAgICAgICAgICByZXR1cm4gY3R4LnJlcXVpcmVbcHJvcF0uYXBwbHkoY3R4LCBhcmd1bWVudHMpOwogICAgICAgIH07CiAgICB9KTsKCiAgICBpZiAoaXNCcm93c2VyKSB7CiAgICAgICAgaGVhZCA9IHMuaGVhZCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF07CiAgICAgICAgLy9JZiBCQVNFIHRhZyBpcyBpbiBwbGF5LCB1c2luZyBhcHBlbmRDaGlsZCBpcyBhIHByb2JsZW0gZm9yIElFNi4KICAgICAgICAvL1doZW4gdGhhdCBicm93c2VyIGRpZXMsIHRoaXMgY2FuIGJlIHJlbW92ZWQuIERldGFpbHMgaW4gdGhpcyBqUXVlcnkgYnVnOgogICAgICAgIC8vaHR0cDovL2Rldi5qcXVlcnkuY29tL3RpY2tldC8yNzA5CiAgICAgICAgYmFzZUVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYmFzZScpWzBdOwogICAgICAgIGlmIChiYXNlRWxlbWVudCkgewogICAgICAgICAgICBoZWFkID0gcy5oZWFkID0gYmFzZUVsZW1lbnQucGFyZW50Tm9kZTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBBbnkgZXJyb3JzIHRoYXQgcmVxdWlyZSBleHBsaWNpdGx5IGdlbmVyYXRlcyB3aWxsIGJlIHBhc3NlZCB0byB0aGlzCiAgICAgKiBmdW5jdGlvbi4gSW50ZXJjZXB0L292ZXJyaWRlIGl0IGlmIHlvdSB3YW50IGN1c3RvbSBlcnJvciBoYW5kbGluZy4KICAgICAqIEBwYXJhbSB7RXJyb3J9IGVyciB0aGUgZXJyb3Igb2JqZWN0LgogICAgICovCiAgICByZXEub25FcnJvciA9IGRlZmF1bHRPbkVycm9yOwoKICAgIC8qKgogICAgICogQ3JlYXRlcyB0aGUgbm9kZSBmb3IgdGhlIGxvYWQgY29tbWFuZC4gT25seSB1c2VkIGluIGJyb3dzZXIgZW52cy4KICAgICAqLwogICAgcmVxLmNyZWF0ZU5vZGUgPSBmdW5jdGlvbiAoY29uZmlnLCBtb2R1bGVOYW1lLCB1cmwpIHsKICAgICAgICB2YXIgbm9kZSA9IGNvbmZpZy54aHRtbCA/CiAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoJ2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnLCAnaHRtbDpzY3JpcHQnKSA6CiAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTsKICAgICAgICBub2RlLnR5cGUgPSBjb25maWcuc2NyaXB0VHlwZSB8fCAndGV4dC9qYXZhc2NyaXB0JzsKICAgICAgICBub2RlLmNoYXJzZXQgPSAndXRmLTgnOwogICAgICAgIG5vZGUuYXN5bmMgPSB0cnVlOwogICAgICAgIHJldHVybiBub2RlOwogICAgfTsKCiAgICAvKioKICAgICAqIERvZXMgdGhlIHJlcXVlc3QgdG8gbG9hZCBhIG1vZHVsZSBmb3IgdGhlIGJyb3dzZXIgY2FzZS4KICAgICAqIE1ha2UgdGhpcyBhIHNlcGFyYXRlIGZ1bmN0aW9uIHRvIGFsbG93IG90aGVyIGVudmlyb25tZW50cwogICAgICogdG8gb3ZlcnJpZGUgaXQuCiAgICAgKgogICAgICogQHBhcmFtIHtPYmplY3R9IGNvbnRleHQgdGhlIHJlcXVpcmUgY29udGV4dCB0byBmaW5kIHN0YXRlLgogICAgICogQHBhcmFtIHtTdHJpbmd9IG1vZHVsZU5hbWUgdGhlIG5hbWUgb2YgdGhlIG1vZHVsZS4KICAgICAqIEBwYXJhbSB7T2JqZWN0fSB1cmwgdGhlIFVSTCB0byB0aGUgbW9kdWxlLgogICAgICovCiAgICByZXEubG9hZCA9IGZ1bmN0aW9uIChjb250ZXh0LCBtb2R1bGVOYW1lLCB1cmwpIHsKICAgICAgICB2YXIgY29uZmlnID0gKGNvbnRleHQgJiYgY29udGV4dC5jb25maWcpIHx8IHt9LAogICAgICAgICAgICBub2RlOwogICAgICAgIGlmIChpc0Jyb3dzZXIpIHsKICAgICAgICAgICAgLy9JbiB0aGUgYnJvd3NlciBzbyB1c2UgYSBzY3JpcHQgdGFnCiAgICAgICAgICAgIG5vZGUgPSByZXEuY3JlYXRlTm9kZShjb25maWcsIG1vZHVsZU5hbWUsIHVybCk7CgogICAgICAgICAgICBub2RlLnNldEF0dHJpYnV0ZSgnZGF0YS1yZXF1aXJlY29udGV4dCcsIGNvbnRleHQuY29udGV4dE5hbWUpOwogICAgICAgICAgICBub2RlLnNldEF0dHJpYnV0ZSgnZGF0YS1yZXF1aXJlbW9kdWxlJywgbW9kdWxlTmFtZSk7CgogICAgICAgICAgICAvL1NldCB1cCBsb2FkIGxpc3RlbmVyLiBUZXN0IGF0dGFjaEV2ZW50IGZpcnN0IGJlY2F1c2UgSUU5IGhhcwogICAgICAgICAgICAvL2Egc3VidGxlIGlzc3VlIGluIGl0cyBhZGRFdmVudExpc3RlbmVyIGFuZCBzY3JpcHQgb25sb2FkIGZpcmluZ3MKICAgICAgICAgICAgLy90aGF0IGRvIG5vdCBtYXRjaCB0aGUgYmVoYXZpb3Igb2YgYWxsIG90aGVyIGJyb3dzZXJzIHdpdGgKICAgICAgICAgICAgLy9hZGRFdmVudExpc3RlbmVyIHN1cHBvcnQsIHdoaWNoIGZpcmUgdGhlIG9ubG9hZCBldmVudCBmb3IgYQogICAgICAgICAgICAvL3NjcmlwdCByaWdodCBhZnRlciB0aGUgc2NyaXB0IGV4ZWN1dGlvbi4gU2VlOgogICAgICAgICAgICAvL2h0dHBzOi8vY29ubmVjdC5taWNyb3NvZnQuY29tL0lFL2ZlZWRiYWNrL2RldGFpbHMvNjQ4MDU3L3NjcmlwdC1vbmxvYWQtZXZlbnQtaXMtbm90LWZpcmVkLWltbWVkaWF0ZWx5LWFmdGVyLXNjcmlwdC1leGVjdXRpb24KICAgICAgICAgICAgLy9VTkZPUlRVTkFURUxZIE9wZXJhIGltcGxlbWVudHMgYXR0YWNoRXZlbnQgYnV0IGRvZXMgbm90IGZvbGxvdyB0aGUgc2NyaXB0CiAgICAgICAgICAgIC8vc2NyaXB0IGV4ZWN1dGlvbiBtb2RlLgogICAgICAgICAgICBpZiAobm9kZS5hdHRhY2hFdmVudCAmJgogICAgICAgICAgICAgICAgICAgIC8vQ2hlY2sgaWYgbm9kZS5hdHRhY2hFdmVudCBpcyBhcnRpZmljaWFsbHkgYWRkZWQgYnkgY3VzdG9tIHNjcmlwdCBvcgogICAgICAgICAgICAgICAgICAgIC8vbmF0aXZlbHkgc3VwcG9ydGVkIGJ5IGJyb3dzZXIKICAgICAgICAgICAgICAgICAgICAvL3JlYWQgaHR0cHM6Ly9naXRodWIuY29tL3JlcXVpcmVqcy9yZXF1aXJlanMvaXNzdWVzLzE4NwogICAgICAgICAgICAgICAgICAgIC8vaWYgd2UgY2FuIE5PVCBmaW5kIFtuYXRpdmUgY29kZV0gdGhlbiBpdCBtdXN0IE5PVCBuYXRpdmVseSBzdXBwb3J0ZWQuCiAgICAgICAgICAgICAgICAgICAgLy9pbiBJRTgsIG5vZGUuYXR0YWNoRXZlbnQgZG9lcyBub3QgaGF2ZSB0b1N0cmluZygpCiAgICAgICAgICAgICAgICAgICAgLy9Ob3RlIHRoZSB0ZXN0IGZvciAiW25hdGl2ZSBjb2RlIiB3aXRoIG5vIGNsb3NpbmcgYnJhY2UsIHNlZToKICAgICAgICAgICAgICAgICAgICAvL2h0dHBzOi8vZ2l0aHViLmNvbS9yZXF1aXJlanMvcmVxdWlyZWpzL2lzc3Vlcy8yNzMKICAgICAgICAgICAgICAgICAgICAhKG5vZGUuYXR0YWNoRXZlbnQudG9TdHJpbmcgJiYgbm9kZS5hdHRhY2hFdmVudC50b1N0cmluZygpLmluZGV4T2YoJ1tuYXRpdmUgY29kZScpIDwgMCkgJiYKICAgICAgICAgICAgICAgICAgICAhaXNPcGVyYSkgewogICAgICAgICAgICAgICAgLy9Qcm9iYWJseSBJRS4gSUUgKGF0IGxlYXN0IDYtOCkgZG8gbm90IGZpcmUKICAgICAgICAgICAgICAgIC8vc2NyaXB0IG9ubG9hZCByaWdodCBhZnRlciBleGVjdXRpbmcgdGhlIHNjcmlwdCwgc28KICAgICAgICAgICAgICAgIC8vd2UgY2Fubm90IHRpZSB0aGUgYW5vbnltb3VzIGRlZmluZSBjYWxsIHRvIGEgbmFtZS4KICAgICAgICAgICAgICAgIC8vSG93ZXZlciwgSUUgcmVwb3J0cyB0aGUgc2NyaXB0IGFzIGJlaW5nIGluICdpbnRlcmFjdGl2ZScKICAgICAgICAgICAgICAgIC8vcmVhZHlTdGF0ZSBhdCB0aGUgdGltZSBvZiB0aGUgZGVmaW5lIGNhbGwuCiAgICAgICAgICAgICAgICB1c2VJbnRlcmFjdGl2ZSA9IHRydWU7CgogICAgICAgICAgICAgICAgbm9kZS5hdHRhY2hFdmVudCgnb25yZWFkeXN0YXRlY2hhbmdlJywgY29udGV4dC5vblNjcmlwdExvYWQpOwogICAgICAgICAgICAgICAgLy9JdCB3b3VsZCBiZSBncmVhdCB0byBhZGQgYW4gZXJyb3IgaGFuZGxlciBoZXJlIHRvIGNhdGNoCiAgICAgICAgICAgICAgICAvLzQwNHMgaW4gSUU5Ky4gSG93ZXZlciwgb25yZWFkeXN0YXRlY2hhbmdlIHdpbGwgZmlyZSBiZWZvcmUKICAgICAgICAgICAgICAgIC8vdGhlIGVycm9yIGhhbmRsZXIsIHNvIHRoYXQgZG9lcyBub3QgaGVscC4gSWYgYWRkRXZlbnRMaXN0ZW5lcgogICAgICAgICAgICAgICAgLy9pcyB1c2VkLCB0aGVuIElFIHdpbGwgZmlyZSBlcnJvciBiZWZvcmUgbG9hZCwgYnV0IHdlIGNhbm5vdAogICAgICAgICAgICAgICAgLy91c2UgdGhhdCBwYXRod2F5IGdpdmVuIHRoZSBjb25uZWN0Lm1pY3Jvc29mdC5jb20gaXNzdWUKICAgICAgICAgICAgICAgIC8vbWVudGlvbmVkIGFib3ZlIGFib3V0IG5vdCBkb2luZyB0aGUgJ3NjcmlwdCBleGVjdXRlLAogICAgICAgICAgICAgICAgLy90aGVuIGZpcmUgdGhlIHNjcmlwdCBsb2FkIGV2ZW50IGxpc3RlbmVyIGJlZm9yZSBleGVjdXRlCiAgICAgICAgICAgICAgICAvL25leHQgc2NyaXB0JyB0aGF0IG90aGVyIGJyb3dzZXJzIGRvLgogICAgICAgICAgICAgICAgLy9CZXN0IGhvcGU6IElFMTAgZml4ZXMgdGhlIGlzc3VlcywKICAgICAgICAgICAgICAgIC8vYW5kIHRoZW4gZGVzdHJveXMgYWxsIGluc3RhbGxzIG9mIElFIDYtOS4KICAgICAgICAgICAgICAgIC8vbm9kZS5hdHRhY2hFdmVudCgnb25lcnJvcicsIGNvbnRleHQub25TY3JpcHRFcnJvcik7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBub2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBjb250ZXh0Lm9uU2NyaXB0TG9hZCwgZmFsc2UpOwogICAgICAgICAgICAgICAgbm9kZS5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIGNvbnRleHQub25TY3JpcHRFcnJvciwgZmFsc2UpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIG5vZGUuc3JjID0gdXJsOwoKICAgICAgICAgICAgLy9DYWxsaW5nIG9uTm9kZUNyZWF0ZWQgYWZ0ZXIgYWxsIHByb3BlcnRpZXMgb24gdGhlIG5vZGUgaGF2ZSBiZWVuCiAgICAgICAgICAgIC8vc2V0LCBidXQgYmVmb3JlIGl0IGlzIHBsYWNlZCBpbiB0aGUgRE9NLgogICAgICAgICAgICBpZiAoY29uZmlnLm9uTm9kZUNyZWF0ZWQpIHsKICAgICAgICAgICAgICAgIGNvbmZpZy5vbk5vZGVDcmVhdGVkKG5vZGUsIGNvbmZpZywgbW9kdWxlTmFtZSwgdXJsKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy9Gb3Igc29tZSBjYWNoZSBjYXNlcyBpbiBJRSA2LTgsIHRoZSBzY3JpcHQgZXhlY3V0ZXMgYmVmb3JlIHRoZSBlbmQKICAgICAgICAgICAgLy9vZiB0aGUgYXBwZW5kQ2hpbGQgZXhlY3V0aW9uLCBzbyB0byB0aWUgYW4gYW5vbnltb3VzIGRlZmluZQogICAgICAgICAgICAvL2NhbGwgdG8gdGhlIG1vZHVsZSBuYW1lICh3aGljaCBpcyBzdG9yZWQgb24gdGhlIG5vZGUpLCBob2xkIG9uCiAgICAgICAgICAgIC8vdG8gYSByZWZlcmVuY2UgdG8gdGhpcyBub2RlLCBidXQgY2xlYXIgYWZ0ZXIgdGhlIERPTSBpbnNlcnRpb24uCiAgICAgICAgICAgIGN1cnJlbnRseUFkZGluZ1NjcmlwdCA9IG5vZGU7CiAgICAgICAgICAgIGlmIChiYXNlRWxlbWVudCkgewogICAgICAgICAgICAgICAgaGVhZC5pbnNlcnRCZWZvcmUobm9kZSwgYmFzZUVsZW1lbnQpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgaGVhZC5hcHBlbmRDaGlsZChub2RlKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjdXJyZW50bHlBZGRpbmdTY3JpcHQgPSBudWxsOwoKICAgICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgICAgfSBlbHNlIGlmIChpc1dlYldvcmtlcikgewogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgLy9JbiBhIHdlYiB3b3JrZXIsIHVzZSBpbXBvcnRTY3JpcHRzLiBUaGlzIGlzIG5vdCBhIHZlcnkKICAgICAgICAgICAgICAgIC8vZWZmaWNpZW50IHVzZSBvZiBpbXBvcnRTY3JpcHRzLCBpbXBvcnRTY3JpcHRzIHdpbGwgYmxvY2sgdW50aWwKICAgICAgICAgICAgICAgIC8vaXRzIHNjcmlwdCBpcyBkb3dubG9hZGVkIGFuZCBldmFsdWF0ZWQuIEhvd2V2ZXIsIGlmIHdlYiB3b3JrZXJzCiAgICAgICAgICAgICAgICAvL2FyZSBpbiBwbGF5LCB0aGUgZXhwZWN0YXRpb24gaXMgdGhhdCBhIGJ1aWxkIGhhcyBiZWVuIGRvbmUgc28KICAgICAgICAgICAgICAgIC8vdGhhdCBvbmx5IG9uZSBzY3JpcHQgbmVlZHMgdG8gYmUgbG9hZGVkIGFueXdheS4gVGhpcyBtYXkgbmVlZAogICAgICAgICAgICAgICAgLy90byBiZSByZWV2YWx1YXRlZCBpZiBvdGhlciB1c2UgY2FzZXMgYmVjb21lIGNvbW1vbi4KCiAgICAgICAgICAgICAgICAvLyBQb3N0IGEgdGFzayB0byB0aGUgZXZlbnQgbG9vcCB0byB3b3JrIGFyb3VuZCBhIGJ1ZyBpbiBXZWJLaXQKICAgICAgICAgICAgICAgIC8vIHdoZXJlIHRoZSB3b3JrZXIgZ2V0cyBnYXJiYWdlLWNvbGxlY3RlZCBhZnRlciBjYWxsaW5nCiAgICAgICAgICAgICAgICAvLyBpbXBvcnRTY3JpcHRzKCk6IGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE1MzMxNwogICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHt9LCAwKTsKICAgICAgICAgICAgICAgIGltcG9ydFNjcmlwdHModXJsKTsKCiAgICAgICAgICAgICAgICAvL0FjY291bnQgZm9yIGFub255bW91cyBtb2R1bGVzCiAgICAgICAgICAgICAgICBjb250ZXh0LmNvbXBsZXRlTG9hZChtb2R1bGVOYW1lKTsKICAgICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgICAgY29udGV4dC5vbkVycm9yKG1ha2VFcnJvcignaW1wb3J0c2NyaXB0cycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ltcG9ydFNjcmlwdHMgZmFpbGVkIGZvciAnICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlTmFtZSArICcgYXQgJyArIHVybCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttb2R1bGVOYW1lXSkpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfTsKCiAgICBmdW5jdGlvbiBnZXRJbnRlcmFjdGl2ZVNjcmlwdCgpIHsKICAgICAgICBpZiAoaW50ZXJhY3RpdmVTY3JpcHQgJiYgaW50ZXJhY3RpdmVTY3JpcHQucmVhZHlTdGF0ZSA9PT0gJ2ludGVyYWN0aXZlJykgewogICAgICAgICAgICByZXR1cm4gaW50ZXJhY3RpdmVTY3JpcHQ7CiAgICAgICAgfQoKICAgICAgICBlYWNoUmV2ZXJzZShzY3JpcHRzKCksIGZ1bmN0aW9uIChzY3JpcHQpIHsKICAgICAgICAgICAgaWYgKHNjcmlwdC5yZWFkeVN0YXRlID09PSAnaW50ZXJhY3RpdmUnKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gKGludGVyYWN0aXZlU2NyaXB0ID0gc2NyaXB0KTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgICAgIHJldHVybiBpbnRlcmFjdGl2ZVNjcmlwdDsKICAgIH0KCiAgICAvL0xvb2sgZm9yIGEgZGF0YS1tYWluIHNjcmlwdCBhdHRyaWJ1dGUsIHdoaWNoIGNvdWxkIGFsc28gYWRqdXN0IHRoZSBiYXNlVXJsLgogICAgaWYgKGlzQnJvd3NlciAmJiAhY2ZnLnNraXBEYXRhTWFpbikgewogICAgICAgIC8vRmlndXJlIG91dCBiYXNlVXJsLiBHZXQgaXQgZnJvbSB0aGUgc2NyaXB0IHRhZyB3aXRoIHJlcXVpcmUuanMgaW4gaXQuCiAgICAgICAgZWFjaFJldmVyc2Uoc2NyaXB0cygpLCBmdW5jdGlvbiAoc2NyaXB0KSB7CiAgICAgICAgICAgIC8vU2V0IHRoZSAnaGVhZCcgd2hlcmUgd2UgY2FuIGFwcGVuZCBjaGlsZHJlbiBieQogICAgICAgICAgICAvL3VzaW5nIHRoZSBzY3JpcHQncyBwYXJlbnQuCiAgICAgICAgICAgIGlmICghaGVhZCkgewogICAgICAgICAgICAgICAgaGVhZCA9IHNjcmlwdC5wYXJlbnROb2RlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvL0xvb2sgZm9yIGEgZGF0YS1tYWluIGF0dHJpYnV0ZSB0byBzZXQgbWFpbiBzY3JpcHQgZm9yIHRoZSBwYWdlCiAgICAgICAgICAgIC8vdG8gbG9hZC4gSWYgaXQgaXMgdGhlcmUsIHRoZSBwYXRoIHRvIGRhdGEgbWFpbiBiZWNvbWVzIHRoZQogICAgICAgICAgICAvL2Jhc2VVcmwsIGlmIGl0IGlzIG5vdCBhbHJlYWR5IHNldC4KICAgICAgICAgICAgZGF0YU1haW4gPSBzY3JpcHQuZ2V0QXR0cmlidXRlKCdkYXRhLW1haW4nKTsKICAgICAgICAgICAgaWYgKGRhdGFNYWluKSB7CiAgICAgICAgICAgICAgICAvL1ByZXNlcnZlIGRhdGFNYWluIGluIGNhc2UgaXQgaXMgYSBwYXRoIChpLmUuIGNvbnRhaW5zICc/JykKICAgICAgICAgICAgICAgIG1haW5TY3JpcHQgPSBkYXRhTWFpbjsKCiAgICAgICAgICAgICAgICAvL1NldCBmaW5hbCBiYXNlVXJsIGlmIHRoZXJlIGlzIG5vdCBhbHJlYWR5IGFuIGV4cGxpY2l0IG9uZSwKICAgICAgICAgICAgICAgIC8vYnV0IG9ubHkgZG8gc28gaWYgdGhlIGRhdGEtbWFpbiB2YWx1ZSBpcyBub3QgYSBsb2FkZXIgcGx1Z2luCiAgICAgICAgICAgICAgICAvL21vZHVsZSBJRC4KICAgICAgICAgICAgICAgIGlmICghY2ZnLmJhc2VVcmwgJiYgbWFpblNjcmlwdC5pbmRleE9mKCchJykgPT09IC0xKSB7CiAgICAgICAgICAgICAgICAgICAgLy9QdWxsIG9mZiB0aGUgZGlyZWN0b3J5IG9mIGRhdGEtbWFpbiBmb3IgdXNlIGFzIHRoZQogICAgICAgICAgICAgICAgICAgIC8vYmFzZVVybC4KICAgICAgICAgICAgICAgICAgICBzcmMgPSBtYWluU2NyaXB0LnNwbGl0KCcvJyk7CiAgICAgICAgICAgICAgICAgICAgbWFpblNjcmlwdCA9IHNyYy5wb3AoKTsKICAgICAgICAgICAgICAgICAgICBzdWJQYXRoID0gc3JjLmxlbmd0aCA/IHNyYy5qb2luKCcvJykgICsgJy8nIDogJy4vJzsKCiAgICAgICAgICAgICAgICAgICAgY2ZnLmJhc2VVcmwgPSBzdWJQYXRoOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8vU3RyaXAgb2ZmIGFueSB0cmFpbGluZyAuanMgc2luY2UgbWFpblNjcmlwdCBpcyBub3cKICAgICAgICAgICAgICAgIC8vbGlrZSBhIG1vZHVsZSBuYW1lLgogICAgICAgICAgICAgICAgbWFpblNjcmlwdCA9IG1haW5TY3JpcHQucmVwbGFjZShqc1N1ZmZpeFJlZ0V4cCwgJycpOwoKICAgICAgICAgICAgICAgIC8vSWYgbWFpblNjcmlwdCBpcyBzdGlsbCBhIHBhdGgsIGZhbGwgYmFjayB0byBkYXRhTWFpbgogICAgICAgICAgICAgICAgaWYgKHJlcS5qc0V4dFJlZ0V4cC50ZXN0KG1haW5TY3JpcHQpKSB7CiAgICAgICAgICAgICAgICAgICAgbWFpblNjcmlwdCA9IGRhdGFNYWluOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8vUHV0IHRoZSBkYXRhLW1haW4gc2NyaXB0IGluIHRoZSBmaWxlcyB0byBsb2FkLgogICAgICAgICAgICAgICAgY2ZnLmRlcHMgPSBjZmcuZGVwcyA/IGNmZy5kZXBzLmNvbmNhdChtYWluU2NyaXB0KSA6IFttYWluU2NyaXB0XTsKCiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgfQoKICAgIC8qKgogICAgICogVGhlIGZ1bmN0aW9uIHRoYXQgaGFuZGxlcyBkZWZpbml0aW9ucyBvZiBtb2R1bGVzLiBEaWZmZXJzIGZyb20KICAgICAqIHJlcXVpcmUoKSBpbiB0aGF0IGEgc3RyaW5nIGZvciB0aGUgbW9kdWxlIHNob3VsZCBiZSB0aGUgZmlyc3QgYXJndW1lbnQsCiAgICAgKiBhbmQgdGhlIGZ1bmN0aW9uIHRvIGV4ZWN1dGUgYWZ0ZXIgZGVwZW5kZW5jaWVzIGFyZSBsb2FkZWQgc2hvdWxkCiAgICAgKiByZXR1cm4gYSB2YWx1ZSB0byBkZWZpbmUgdGhlIG1vZHVsZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBmaXJzdCBhcmd1bWVudCdzCiAgICAgKiBuYW1lLgogICAgICovCiAgICBkZWZpbmUgPSBmdW5jdGlvbiAobmFtZSwgZGVwcywgY2FsbGJhY2spIHsKICAgICAgICB2YXIgbm9kZSwgY29udGV4dDsKCiAgICAgICAgLy9BbGxvdyBmb3IgYW5vbnltb3VzIG1vZHVsZXMKICAgICAgICBpZiAodHlwZW9mIG5hbWUgIT09ICdzdHJpbmcnKSB7CiAgICAgICAgICAgIC8vQWRqdXN0IGFyZ3MgYXBwcm9wcmlhdGVseQogICAgICAgICAgICBjYWxsYmFjayA9IGRlcHM7CiAgICAgICAgICAgIGRlcHMgPSBuYW1lOwogICAgICAgICAgICBuYW1lID0gbnVsbDsKICAgICAgICB9CgogICAgICAgIC8vVGhpcyBtb2R1bGUgbWF5IG5vdCBoYXZlIGRlcGVuZGVuY2llcwogICAgICAgIGlmICghaXNBcnJheShkZXBzKSkgewogICAgICAgICAgICBjYWxsYmFjayA9IGRlcHM7CiAgICAgICAgICAgIGRlcHMgPSBudWxsOwogICAgICAgIH0KCiAgICAgICAgLy9JZiBubyBuYW1lLCBhbmQgY2FsbGJhY2sgaXMgYSBmdW5jdGlvbiwgdGhlbiBmaWd1cmUgb3V0IGlmIGl0IGEKICAgICAgICAvL0NvbW1vbkpTIHRoaW5nIHdpdGggZGVwZW5kZW5jaWVzLgogICAgICAgIGlmICghZGVwcyAmJiBpc0Z1bmN0aW9uKGNhbGxiYWNrKSkgewogICAgICAgICAgICBkZXBzID0gW107CiAgICAgICAgICAgIC8vUmVtb3ZlIGNvbW1lbnRzIGZyb20gdGhlIGNhbGxiYWNrIHN0cmluZywKICAgICAgICAgICAgLy9sb29rIGZvciByZXF1aXJlIGNhbGxzLCBhbmQgcHVsbCB0aGVtIGludG8gdGhlIGRlcGVuZGVuY2llcywKICAgICAgICAgICAgLy9idXQgb25seSBpZiB0aGVyZSBhcmUgZnVuY3Rpb24gYXJncy4KICAgICAgICAgICAgaWYgKGNhbGxiYWNrLmxlbmd0aCkgewogICAgICAgICAgICAgICAgY2FsbGJhY2sKICAgICAgICAgICAgICAgICAgICAudG9TdHJpbmcoKQogICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKGNvbW1lbnRSZWdFeHAsIGNvbW1lbnRSZXBsYWNlKQogICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKGNqc1JlcXVpcmVSZWdFeHAsIGZ1bmN0aW9uIChtYXRjaCwgZGVwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRlcHMucHVzaChkZXApOwogICAgICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgIC8vTWF5IGJlIGEgQ29tbW9uSlMgdGhpbmcgZXZlbiB3aXRob3V0IHJlcXVpcmUgY2FsbHMsIGJ1dCBzdGlsbAogICAgICAgICAgICAgICAgLy9jb3VsZCB1c2UgZXhwb3J0cywgYW5kIG1vZHVsZS4gQXZvaWQgZG9pbmcgZXhwb3J0cyBhbmQgbW9kdWxlCiAgICAgICAgICAgICAgICAvL3dvcmsgdGhvdWdoIGlmIGl0IGp1c3QgbmVlZHMgcmVxdWlyZS4KICAgICAgICAgICAgICAgIC8vUkVRVUlSRVMgdGhlIGZ1bmN0aW9uIHRvIGV4cGVjdCB0aGUgQ29tbW9uSlMgdmFyaWFibGVzIGluIHRoZQogICAgICAgICAgICAgICAgLy9vcmRlciBsaXN0ZWQgYmVsb3cuCiAgICAgICAgICAgICAgICBkZXBzID0gKGNhbGxiYWNrLmxlbmd0aCA9PT0gMSA/IFsncmVxdWlyZSddIDogWydyZXF1aXJlJywgJ2V4cG9ydHMnLCAnbW9kdWxlJ10pLmNvbmNhdChkZXBzKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy9JZiBpbiBJRSA2LTggYW5kIGhpdCBhbiBhbm9ueW1vdXMgZGVmaW5lKCkgY2FsbCwgZG8gdGhlIGludGVyYWN0aXZlCiAgICAgICAgLy93b3JrLgogICAgICAgIGlmICh1c2VJbnRlcmFjdGl2ZSkgewogICAgICAgICAgICBub2RlID0gY3VycmVudGx5QWRkaW5nU2NyaXB0IHx8IGdldEludGVyYWN0aXZlU2NyaXB0KCk7CiAgICAgICAgICAgIGlmIChub2RlKSB7CiAgICAgICAgICAgICAgICBpZiAoIW5hbWUpIHsKICAgICAgICAgICAgICAgICAgICBuYW1lID0gbm9kZS5nZXRBdHRyaWJ1dGUoJ2RhdGEtcmVxdWlyZW1vZHVsZScpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY29udGV4dCA9IGNvbnRleHRzW25vZGUuZ2V0QXR0cmlidXRlKCdkYXRhLXJlcXVpcmVjb250ZXh0JyldOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvL0Fsd2F5cyBzYXZlIG9mZiBldmFsdWF0aW5nIHRoZSBkZWYgY2FsbCB1bnRpbCB0aGUgc2NyaXB0IG9ubG9hZCBoYW5kbGVyLgogICAgICAgIC8vVGhpcyBhbGxvd3MgbXVsdGlwbGUgbW9kdWxlcyB0byBiZSBpbiBhIGZpbGUgd2l0aG91dCBwcmVtYXR1cmVseQogICAgICAgIC8vdHJhY2luZyBkZXBlbmRlbmNpZXMsIGFuZCBhbGxvd3MgZm9yIGFub255bW91cyBtb2R1bGUgc3VwcG9ydCwKICAgICAgICAvL3doZXJlIHRoZSBtb2R1bGUgbmFtZSBpcyBub3Qga25vd24gdW50aWwgdGhlIHNjcmlwdCBvbmxvYWQgZXZlbnQKICAgICAgICAvL29jY3Vycy4gSWYgbm8gY29udGV4dCwgdXNlIHRoZSBnbG9iYWwgcXVldWUsIGFuZCBnZXQgaXQgcHJvY2Vzc2VkCiAgICAgICAgLy9pbiB0aGUgb25zY3JpcHQgbG9hZCBjYWxsYmFjay4KICAgICAgICBpZiAoY29udGV4dCkgewogICAgICAgICAgICBjb250ZXh0LmRlZlF1ZXVlLnB1c2goW25hbWUsIGRlcHMsIGNhbGxiYWNrXSk7CiAgICAgICAgICAgIGNvbnRleHQuZGVmUXVldWVNYXBbbmFtZV0gPSB0cnVlOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGdsb2JhbERlZlF1ZXVlLnB1c2goW25hbWUsIGRlcHMsIGNhbGxiYWNrXSk7CiAgICAgICAgfQogICAgfTsKCiAgICBkZWZpbmUuYW1kID0gewogICAgICAgIGpRdWVyeTogdHJ1ZQogICAgfTsKCiAgICAvKioKICAgICAqIEV4ZWN1dGVzIHRoZSB0ZXh0LiBOb3JtYWxseSBqdXN0IHVzZXMgZXZhbCwgYnV0IGNhbiBiZSBtb2RpZmllZAogICAgICogdG8gdXNlIGEgYmV0dGVyLCBlbnZpcm9ubWVudC1zcGVjaWZpYyBjYWxsLiBPbmx5IHVzZWQgZm9yIHRyYW5zcGlsaW5nCiAgICAgKiBsb2FkZXIgcGx1Z2lucywgbm90IGZvciBwbGFpbiBKUyBtb2R1bGVzLgogICAgICogQHBhcmFtIHtTdHJpbmd9IHRleHQgdGhlIHRleHQgdG8gZXhlY3V0ZS9ldmFsdWF0ZS4KICAgICAqLwogICAgcmVxLmV4ZWMgPSBmdW5jdGlvbiAodGV4dCkgewogICAgICAgIC8qanNsaW50IGV2aWw6IHRydWUgKi8KICAgICAgICByZXR1cm4gZXZhbCh0ZXh0KTsKICAgIH07CgogICAgLy9TZXQgdXAgd2l0aCBjb25maWcgaW5mby4KICAgIHJlcShjZmcpOwp9KHRoaXMsICh0eXBlb2Ygc2V0VGltZW91dCA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBzZXRUaW1lb3V0KSkpOwoKLy8gQ29weXJpZ2h0IDIwMTQgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLy8KLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLy8gICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAovLwovLyBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLy8KLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQovLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAovLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLy8gICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgohZnVuY3Rpb24oKXt2YXIgYT17fSxiPXt9LGM9e307IWZ1bmN0aW9uKGEsYil7ZnVuY3Rpb24gYyhhKXtpZigibnVtYmVyIj09dHlwZW9mIGEpcmV0dXJuIGE7dmFyIGI9e307Zm9yKHZhciBjIGluIGEpYltjXT1hW2NdO3JldHVybiBifWZ1bmN0aW9uIGQoKXt0aGlzLl9kZWxheT0wLHRoaXMuX2VuZERlbGF5PTAsdGhpcy5fZmlsbD0ibm9uZSIsdGhpcy5faXRlcmF0aW9uU3RhcnQ9MCx0aGlzLl9pdGVyYXRpb25zPTEsdGhpcy5fZHVyYXRpb249MCx0aGlzLl9wbGF5YmFja1JhdGU9MSx0aGlzLl9kaXJlY3Rpb249Im5vcm1hbCIsdGhpcy5fZWFzaW5nPSJsaW5lYXIiLHRoaXMuX2Vhc2luZ0Z1bmN0aW9uPXh9ZnVuY3Rpb24gZSgpe3JldHVybiBhLmlzRGVwcmVjYXRlZCgiSW52YWxpZCB0aW1pbmcgaW5wdXRzIiwiMjAxNi0wMy0wMiIsIlR5cGVFcnJvciBleGNlcHRpb25zIHdpbGwgYmUgdGhyb3duIGluc3RlYWQuIiwhMCl9ZnVuY3Rpb24gZihiLGMsZSl7dmFyIGY9bmV3IGQ7cmV0dXJuIGMmJihmLmZpbGw9ImJvdGgiLGYuZHVyYXRpb249ImF1dG8iKSwibnVtYmVyIiE9dHlwZW9mIGJ8fGlzTmFOKGIpP3ZvaWQgMCE9PWImJk9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGIpLmZvckVhY2goZnVuY3Rpb24oYyl7aWYoImF1dG8iIT1iW2NdKXtpZigoIm51bWJlciI9PXR5cGVvZiBmW2NdfHwiZHVyYXRpb24iPT1jKSYmKCJudW1iZXIiIT10eXBlb2YgYltjXXx8aXNOYU4oYltjXSkpKXJldHVybjtpZigiZmlsbCI9PWMmJi0xPT12LmluZGV4T2YoYltjXSkpcmV0dXJuO2lmKCJkaXJlY3Rpb24iPT1jJiYtMT09dy5pbmRleE9mKGJbY10pKXJldHVybjtpZigicGxheWJhY2tSYXRlIj09YyYmMSE9PWJbY10mJmEuaXNEZXByZWNhdGVkKCJBbmltYXRpb25FZmZlY3RUaW1pbmcucGxheWJhY2tSYXRlIiwiMjAxNC0xMS0yOCIsIlVzZSBBbmltYXRpb24ucGxheWJhY2tSYXRlIGluc3RlYWQuIikpcmV0dXJuO2ZbY109YltjXX19KTpmLmR1cmF0aW9uPWIsZn1mdW5jdGlvbiBnKGEpe3JldHVybiJudW1iZXIiPT10eXBlb2YgYSYmKGE9aXNOYU4oYSk/e2R1cmF0aW9uOjB9OntkdXJhdGlvbjphfSksYX1mdW5jdGlvbiBoKGIsYyl7cmV0dXJuIGI9YS5udW1lcmljVGltaW5nVG9PYmplY3QoYiksZihiLGMpfWZ1bmN0aW9uIGkoYSxiLGMsZCl7cmV0dXJuIGE8MHx8YT4xfHxjPDB8fGM+MT94OmZ1bmN0aW9uKGUpe2Z1bmN0aW9uIGYoYSxiLGMpe3JldHVybiAzKmEqKDEtYykqKDEtYykqYyszKmIqKDEtYykqYypjK2MqYypjfWlmKGU8PTApe3ZhciBnPTA7cmV0dXJuIGE+MD9nPWIvYTohYiYmYz4wJiYoZz1kL2MpLGcqZX1pZihlPj0xKXt2YXIgaD0wO3JldHVybiBjPDE/aD0oZC0xKS8oYy0xKToxPT1jJiZhPDEmJihoPShiLTEpLyhhLTEpKSwxK2gqKGUtMSl9Zm9yKHZhciBpPTAsaj0xO2k8ajspe3ZhciBrPShpK2opLzIsbD1mKGEsYyxrKTtpZihNYXRoLmFicyhlLWwpPDFlLTUpcmV0dXJuIGYoYixkLGspO2w8ZT9pPWs6aj1rfXJldHVybiBmKGIsZCxrKX19ZnVuY3Rpb24gaihhLGIpe3JldHVybiBmdW5jdGlvbihjKXtpZihjPj0xKXJldHVybiAxO3ZhciBkPTEvYTtyZXR1cm4oYys9YipkKS1jJWR9fWZ1bmN0aW9uIGsoYSl7Q3x8KEM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iikuc3R5bGUpLEMuYW5pbWF0aW9uVGltaW5nRnVuY3Rpb249IiIsQy5hbmltYXRpb25UaW1pbmdGdW5jdGlvbj1hO3ZhciBiPUMuYW5pbWF0aW9uVGltaW5nRnVuY3Rpb247aWYoIiI9PWImJmUoKSl0aHJvdyBuZXcgVHlwZUVycm9yKGErIiBpcyBub3QgYSB2YWxpZCB2YWx1ZSBmb3IgZWFzaW5nIik7cmV0dXJuIGJ9ZnVuY3Rpb24gbChhKXtpZigibGluZWFyIj09YSlyZXR1cm4geDt2YXIgYj1FLmV4ZWMoYSk7aWYoYilyZXR1cm4gaS5hcHBseSh0aGlzLGIuc2xpY2UoMSkubWFwKE51bWJlcikpO3ZhciBjPUYuZXhlYyhhKTtpZihjKXJldHVybiBqKE51bWJlcihjWzFdKSxBKTt2YXIgZD1HLmV4ZWMoYSk7cmV0dXJuIGQ/aihOdW1iZXIoZFsxXSkse3N0YXJ0OnksbWlkZGxlOnosZW5kOkF9W2RbMl1dKTpCW2FdfHx4fWZ1bmN0aW9uIG0oYSl7cmV0dXJuIE1hdGguYWJzKG4oYSkvYS5wbGF5YmFja1JhdGUpfWZ1bmN0aW9uIG4oYSl7cmV0dXJuIDA9PT1hLmR1cmF0aW9ufHwwPT09YS5pdGVyYXRpb25zPzA6YS5kdXJhdGlvbiphLml0ZXJhdGlvbnN9ZnVuY3Rpb24gbyhhLGIsYyl7aWYobnVsbD09YilyZXR1cm4gSDt2YXIgZD1jLmRlbGF5K2ErYy5lbmREZWxheTtyZXR1cm4gYjxNYXRoLm1pbihjLmRlbGF5LGQpP0k6Yj49TWF0aC5taW4oYy5kZWxheSthLGQpP0o6S31mdW5jdGlvbiBwKGEsYixjLGQsZSl7c3dpdGNoKGQpe2Nhc2UgSTpyZXR1cm4iYmFja3dhcmRzIj09Ynx8ImJvdGgiPT1iPzA6bnVsbDtjYXNlIEs6cmV0dXJuIGMtZTtjYXNlIEo6cmV0dXJuImZvcndhcmRzIj09Ynx8ImJvdGgiPT1iP2E6bnVsbDtjYXNlIEg6cmV0dXJuIG51bGx9fWZ1bmN0aW9uIHEoYSxiLGMsZCxlKXt2YXIgZj1lO3JldHVybiAwPT09YT9iIT09SSYmKGYrPWMpOmYrPWQvYSxmfWZ1bmN0aW9uIHIoYSxiLGMsZCxlLGYpe3ZhciBnPWE9PT0xLzA/YiUxOmElMTtyZXR1cm4gMCE9PWd8fGMhPT1KfHwwPT09ZHx8MD09PWUmJjAhPT1mfHwoZz0xKSxnfWZ1bmN0aW9uIHMoYSxiLGMsZCl7cmV0dXJuIGE9PT1KJiZiPT09MS8wPzEvMDoxPT09Yz9NYXRoLmZsb29yKGQpLTE6TWF0aC5mbG9vcihkKX1mdW5jdGlvbiB0KGEsYixjKXt2YXIgZD1hO2lmKCJub3JtYWwiIT09YSYmInJldmVyc2UiIT09YSl7dmFyIGU9YjsiYWx0ZXJuYXRlLXJldmVyc2UiPT09YSYmKGUrPTEpLGQ9Im5vcm1hbCIsZSE9PTEvMCYmZSUyIT0wJiYoZD0icmV2ZXJzZSIpfXJldHVybiJub3JtYWwiPT09ZD9jOjEtY31mdW5jdGlvbiB1KGEsYixjKXt2YXIgZD1vKGEsYixjKSxlPXAoYSxjLmZpbGwsYixkLGMuZGVsYXkpO2lmKG51bGw9PT1lKXJldHVybiBudWxsO3ZhciBmPXEoYy5kdXJhdGlvbixkLGMuaXRlcmF0aW9ucyxlLGMuaXRlcmF0aW9uU3RhcnQpLGc9cihmLGMuaXRlcmF0aW9uU3RhcnQsZCxjLml0ZXJhdGlvbnMsZSxjLmR1cmF0aW9uKSxoPXMoZCxjLml0ZXJhdGlvbnMsZyxmKSxpPXQoYy5kaXJlY3Rpb24saCxnKTtyZXR1cm4gYy5fZWFzaW5nRnVuY3Rpb24oaSl9dmFyIHY9ImJhY2t3YXJkc3xmb3J3YXJkc3xib3RofG5vbmUiLnNwbGl0KCJ8Iiksdz0icmV2ZXJzZXxhbHRlcm5hdGV8YWx0ZXJuYXRlLXJldmVyc2UiLnNwbGl0KCJ8IikseD1mdW5jdGlvbihhKXtyZXR1cm4gYX07ZC5wcm90b3R5cGU9e19zZXRNZW1iZXI6ZnVuY3Rpb24oYixjKXt0aGlzWyJfIitiXT1jLHRoaXMuX2VmZmVjdCYmKHRoaXMuX2VmZmVjdC5fdGltaW5nSW5wdXRbYl09Yyx0aGlzLl9lZmZlY3QuX3RpbWluZz1hLm5vcm1hbGl6ZVRpbWluZ0lucHV0KHRoaXMuX2VmZmVjdC5fdGltaW5nSW5wdXQpLHRoaXMuX2VmZmVjdC5hY3RpdmVEdXJhdGlvbj1hLmNhbGN1bGF0ZUFjdGl2ZUR1cmF0aW9uKHRoaXMuX2VmZmVjdC5fdGltaW5nKSx0aGlzLl9lZmZlY3QuX2FuaW1hdGlvbiYmdGhpcy5fZWZmZWN0Ll9hbmltYXRpb24uX3JlYnVpbGRVbmRlcmx5aW5nQW5pbWF0aW9uKCkpfSxnZXQgcGxheWJhY2tSYXRlKCl7cmV0dXJuIHRoaXMuX3BsYXliYWNrUmF0ZX0sc2V0IGRlbGF5KGEpe3RoaXMuX3NldE1lbWJlcigiZGVsYXkiLGEpfSxnZXQgZGVsYXkoKXtyZXR1cm4gdGhpcy5fZGVsYXl9LHNldCBlbmREZWxheShhKXt0aGlzLl9zZXRNZW1iZXIoImVuZERlbGF5IixhKX0sZ2V0IGVuZERlbGF5KCl7cmV0dXJuIHRoaXMuX2VuZERlbGF5fSxzZXQgZmlsbChhKXt0aGlzLl9zZXRNZW1iZXIoImZpbGwiLGEpfSxnZXQgZmlsbCgpe3JldHVybiB0aGlzLl9maWxsfSxzZXQgaXRlcmF0aW9uU3RhcnQoYSl7aWYoKGlzTmFOKGEpfHxhPDApJiZlKCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiaXRlcmF0aW9uU3RhcnQgbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBudW1iZXIsIHJlY2VpdmVkOiAiK2EpO3RoaXMuX3NldE1lbWJlcigiaXRlcmF0aW9uU3RhcnQiLGEpfSxnZXQgaXRlcmF0aW9uU3RhcnQoKXtyZXR1cm4gdGhpcy5faXRlcmF0aW9uU3RhcnR9LHNldCBkdXJhdGlvbihhKXtpZigiYXV0byIhPWEmJihpc05hTihhKXx8YTwwKSYmZSgpKXRocm93IG5ldyBUeXBlRXJyb3IoImR1cmF0aW9uIG11c3QgYmUgbm9uLW5lZ2F0aXZlIG9yIGF1dG8sIHJlY2VpdmVkOiAiK2EpO3RoaXMuX3NldE1lbWJlcigiZHVyYXRpb24iLGEpfSxnZXQgZHVyYXRpb24oKXtyZXR1cm4gdGhpcy5fZHVyYXRpb259LHNldCBkaXJlY3Rpb24oYSl7dGhpcy5fc2V0TWVtYmVyKCJkaXJlY3Rpb24iLGEpfSxnZXQgZGlyZWN0aW9uKCl7cmV0dXJuIHRoaXMuX2RpcmVjdGlvbn0sc2V0IGVhc2luZyhhKXt0aGlzLl9lYXNpbmdGdW5jdGlvbj1sKGsoYSkpLHRoaXMuX3NldE1lbWJlcigiZWFzaW5nIixhKX0sZ2V0IGVhc2luZygpe3JldHVybiB0aGlzLl9lYXNpbmd9LHNldCBpdGVyYXRpb25zKGEpe2lmKChpc05hTihhKXx8YTwwKSYmZSgpKXRocm93IG5ldyBUeXBlRXJyb3IoIml0ZXJhdGlvbnMgbXVzdCBiZSBub24tbmVnYXRpdmUsIHJlY2VpdmVkOiAiK2EpO3RoaXMuX3NldE1lbWJlcigiaXRlcmF0aW9ucyIsYSl9LGdldCBpdGVyYXRpb25zKCl7cmV0dXJuIHRoaXMuX2l0ZXJhdGlvbnN9fTt2YXIgeT0xLHo9LjUsQT0wLEI9e2Vhc2U6aSguMjUsLjEsLjI1LDEpLCJlYXNlLWluIjppKC40MiwwLDEsMSksImVhc2Utb3V0IjppKDAsMCwuNTgsMSksImVhc2UtaW4tb3V0IjppKC40MiwwLC41OCwxKSwic3RlcC1zdGFydCI6aigxLHkpLCJzdGVwLW1pZGRsZSI6aigxLHopLCJzdGVwLWVuZCI6aigxLEEpfSxDPW51bGwsRD0iXFxzKigtP1xcZCtcXC4/XFxkKnwtP1xcLlxcZCspXFxzKiIsRT1uZXcgUmVnRXhwKCJjdWJpYy1iZXppZXJcXCgiK0QrIiwiK0QrIiwiK0QrIiwiK0QrIlxcKSIpLEY9L3N0ZXBzXChccyooXGQrKVxzKlwpLyxHPS9zdGVwc1woXHMqKFxkKylccyosXHMqKHN0YXJ0fG1pZGRsZXxlbmQpXHMqXCkvLEg9MCxJPTEsSj0yLEs9MzthLmNsb25lVGltaW5nSW5wdXQ9YyxhLm1ha2VUaW1pbmc9ZixhLm51bWVyaWNUaW1pbmdUb09iamVjdD1nLGEubm9ybWFsaXplVGltaW5nSW5wdXQ9aCxhLmNhbGN1bGF0ZUFjdGl2ZUR1cmF0aW9uPW0sYS5jYWxjdWxhdGVJdGVyYXRpb25Qcm9ncmVzcz11LGEuY2FsY3VsYXRlUGhhc2U9byxhLm5vcm1hbGl6ZUVhc2luZz1rLGEucGFyc2VFYXNpbmdGdW5jdGlvbj1sfShhKSxmdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGMoYSxiKXtyZXR1cm4gYSBpbiBrP2tbYV1bYl18fGI6Yn1mdW5jdGlvbiBkKGEpe3JldHVybiJkaXNwbGF5Ij09PWF8fDA9PT1hLmxhc3RJbmRleE9mKCJhbmltYXRpb24iLDApfHwwPT09YS5sYXN0SW5kZXhPZigidHJhbnNpdGlvbiIsMCl9ZnVuY3Rpb24gZShhLGIsZSl7aWYoIWQoYSkpe3ZhciBmPWhbYV07aWYoZil7aS5zdHlsZVthXT1iO2Zvcih2YXIgZyBpbiBmKXt2YXIgaj1mW2ddLGs9aS5zdHlsZVtqXTtlW2pdPWMoaixrKX19ZWxzZSBlW2FdPWMoYSxiKX19ZnVuY3Rpb24gZihhKXt2YXIgYj1bXTtmb3IodmFyIGMgaW4gYSlpZighKGMgaW5bImVhc2luZyIsIm9mZnNldCIsImNvbXBvc2l0ZSJdKSl7dmFyIGQ9YVtjXTtBcnJheS5pc0FycmF5KGQpfHwoZD1bZF0pO2Zvcih2YXIgZSxmPWQubGVuZ3RoLGc9MDtnPGY7ZysrKWU9e30sZS5vZmZzZXQ9Im9mZnNldCJpbiBhP2Eub2Zmc2V0OjE9PWY/MTpnLyhmLTEpLCJlYXNpbmciaW4gYSYmKGUuZWFzaW5nPWEuZWFzaW5nKSwiY29tcG9zaXRlImluIGEmJihlLmNvbXBvc2l0ZT1hLmNvbXBvc2l0ZSksZVtjXT1kW2ddLGIucHVzaChlKX1yZXR1cm4gYi5zb3J0KGZ1bmN0aW9uKGEsYil7cmV0dXJuIGEub2Zmc2V0LWIub2Zmc2V0fSksYn1mdW5jdGlvbiBnKGIpe2Z1bmN0aW9uIGMoKXt2YXIgYT1kLmxlbmd0aDtudWxsPT1kW2EtMV0ub2Zmc2V0JiYoZFthLTFdLm9mZnNldD0xKSxhPjEmJm51bGw9PWRbMF0ub2Zmc2V0JiYoZFswXS5vZmZzZXQ9MCk7Zm9yKHZhciBiPTAsYz1kWzBdLm9mZnNldCxlPTE7ZTxhO2UrKyl7dmFyIGY9ZFtlXS5vZmZzZXQ7aWYobnVsbCE9Zil7Zm9yKHZhciBnPTE7ZzxlLWI7ZysrKWRbYitnXS5vZmZzZXQ9YysoZi1jKSpnLyhlLWIpO2I9ZSxjPWZ9fX1pZihudWxsPT1iKXJldHVybltdO3dpbmRvdy5TeW1ib2wmJlN5bWJvbC5pdGVyYXRvciYmQXJyYXkucHJvdG90eXBlLmZyb20mJmJbU3ltYm9sLml0ZXJhdG9yXSYmKGI9QXJyYXkuZnJvbShiKSksQXJyYXkuaXNBcnJheShiKXx8KGI9ZihiKSk7Zm9yKHZhciBkPWIubWFwKGZ1bmN0aW9uKGIpe3ZhciBjPXt9O2Zvcih2YXIgZCBpbiBiKXt2YXIgZj1iW2RdO2lmKCJvZmZzZXQiPT1kKXtpZihudWxsIT1mKXtpZihmPU51bWJlcihmKSwhaXNGaW5pdGUoZikpdGhyb3cgbmV3IFR5cGVFcnJvcigiS2V5ZnJhbWUgb2Zmc2V0cyBtdXN0IGJlIG51bWJlcnMuIik7aWYoZjwwfHxmPjEpdGhyb3cgbmV3IFR5cGVFcnJvcigiS2V5ZnJhbWUgb2Zmc2V0cyBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMS4iKX19ZWxzZSBpZigiY29tcG9zaXRlIj09ZCl7aWYoImFkZCI9PWZ8fCJhY2N1bXVsYXRlIj09Zil0aHJvd3t0eXBlOkRPTUV4Y2VwdGlvbi5OT1RfU1VQUE9SVEVEX0VSUixuYW1lOiJOb3RTdXBwb3J0ZWRFcnJvciIsbWVzc2FnZToiYWRkIGNvbXBvc2l0aW5nIGlzIG5vdCBzdXBwb3J0ZWQifTtpZigicmVwbGFjZSIhPWYpdGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBjb21wb3NpdGUgbW9kZSAiK2YrIi4iKX1lbHNlIGY9ImVhc2luZyI9PWQ/YS5ub3JtYWxpemVFYXNpbmcoZik6IiIrZjtlKGQsZixjKX1yZXR1cm4gdm9pZCAwPT1jLm9mZnNldCYmKGMub2Zmc2V0PW51bGwpLHZvaWQgMD09Yy5lYXNpbmcmJihjLmVhc2luZz0ibGluZWFyIiksY30pLGc9ITAsaD0tMS8wLGk9MDtpPGQubGVuZ3RoO2krKyl7dmFyIGo9ZFtpXS5vZmZzZXQ7aWYobnVsbCE9ail7aWYoajxoKXRocm93IG5ldyBUeXBlRXJyb3IoIktleWZyYW1lcyBhcmUgbm90IGxvb3NlbHkgc29ydGVkIGJ5IG9mZnNldC4gU29ydCBvciBzcGVjaWZ5IG9mZnNldHMuIik7aD1qfWVsc2UgZz0hMX1yZXR1cm4gZD1kLmZpbHRlcihmdW5jdGlvbihhKXtyZXR1cm4gYS5vZmZzZXQ+PTAmJmEub2Zmc2V0PD0xfSksZ3x8YygpLGR9dmFyIGg9e2JhY2tncm91bmQ6WyJiYWNrZ3JvdW5kSW1hZ2UiLCJiYWNrZ3JvdW5kUG9zaXRpb24iLCJiYWNrZ3JvdW5kU2l6ZSIsImJhY2tncm91bmRSZXBlYXQiLCJiYWNrZ3JvdW5kQXR0YWNobWVudCIsImJhY2tncm91bmRPcmlnaW4iLCJiYWNrZ3JvdW5kQ2xpcCIsImJhY2tncm91bmRDb2xvciJdLGJvcmRlcjpbImJvcmRlclRvcENvbG9yIiwiYm9yZGVyVG9wU3R5bGUiLCJib3JkZXJUb3BXaWR0aCIsImJvcmRlclJpZ2h0Q29sb3IiLCJib3JkZXJSaWdodFN0eWxlIiwiYm9yZGVyUmlnaHRXaWR0aCIsImJvcmRlckJvdHRvbUNvbG9yIiwiYm9yZGVyQm90dG9tU3R5bGUiLCJib3JkZXJCb3R0b21XaWR0aCIsImJvcmRlckxlZnRDb2xvciIsImJvcmRlckxlZnRTdHlsZSIsImJvcmRlckxlZnRXaWR0aCJdLGJvcmRlckJvdHRvbTpbImJvcmRlckJvdHRvbVdpZHRoIiwiYm9yZGVyQm90dG9tU3R5bGUiLCJib3JkZXJCb3R0b21Db2xvciJdLGJvcmRlckNvbG9yOlsiYm9yZGVyVG9wQ29sb3IiLCJib3JkZXJSaWdodENvbG9yIiwiYm9yZGVyQm90dG9tQ29sb3IiLCJib3JkZXJMZWZ0Q29sb3IiXSxib3JkZXJMZWZ0OlsiYm9yZGVyTGVmdFdpZHRoIiwiYm9yZGVyTGVmdFN0eWxlIiwiYm9yZGVyTGVmdENvbG9yIl0sYm9yZGVyUmFkaXVzOlsiYm9yZGVyVG9wTGVmdFJhZGl1cyIsImJvcmRlclRvcFJpZ2h0UmFkaXVzIiwiYm9yZGVyQm90dG9tUmlnaHRSYWRpdXMiLCJib3JkZXJCb3R0b21MZWZ0UmFkaXVzIl0sYm9yZGVyUmlnaHQ6WyJib3JkZXJSaWdodFdpZHRoIiwiYm9yZGVyUmlnaHRTdHlsZSIsImJvcmRlclJpZ2h0Q29sb3IiXSxib3JkZXJUb3A6WyJib3JkZXJUb3BXaWR0aCIsImJvcmRlclRvcFN0eWxlIiwiYm9yZGVyVG9wQ29sb3IiXSxib3JkZXJXaWR0aDpbImJvcmRlclRvcFdpZHRoIiwiYm9yZGVyUmlnaHRXaWR0aCIsImJvcmRlckJvdHRvbVdpZHRoIiwiYm9yZGVyTGVmdFdpZHRoIl0sZmxleDpbImZsZXhHcm93IiwiZmxleFNocmluayIsImZsZXhCYXNpcyJdLGZvbnQ6WyJmb250RmFtaWx5IiwiZm9udFNpemUiLCJmb250U3R5bGUiLCJmb250VmFyaWFudCIsImZvbnRXZWlnaHQiLCJsaW5lSGVpZ2h0Il0sbWFyZ2luOlsibWFyZ2luVG9wIiwibWFyZ2luUmlnaHQiLCJtYXJnaW5Cb3R0b20iLCJtYXJnaW5MZWZ0Il0sb3V0bGluZTpbIm91dGxpbmVDb2xvciIsIm91dGxpbmVTdHlsZSIsIm91dGxpbmVXaWR0aCJdLHBhZGRpbmc6WyJwYWRkaW5nVG9wIiwicGFkZGluZ1JpZ2h0IiwicGFkZGluZ0JvdHRvbSIsInBhZGRpbmdMZWZ0Il19LGk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiwiZGl2Iiksaj17dGhpbjoiMXB4IixtZWRpdW06IjNweCIsdGhpY2s6IjVweCJ9LGs9e2JvcmRlckJvdHRvbVdpZHRoOmosYm9yZGVyTGVmdFdpZHRoOmosYm9yZGVyUmlnaHRXaWR0aDpqLGJvcmRlclRvcFdpZHRoOmosZm9udFNpemU6eyJ4eC1zbWFsbCI6IjYwJSIsIngtc21hbGwiOiI3NSUiLHNtYWxsOiI4OSUiLG1lZGl1bToiMTAwJSIsbGFyZ2U6IjEyMCUiLCJ4LWxhcmdlIjoiMTUwJSIsInh4LWxhcmdlIjoiMjAwJSJ9LGZvbnRXZWlnaHQ6e25vcm1hbDoiNDAwIixib2xkOiI3MDAifSxvdXRsaW5lV2lkdGg6aix0ZXh0U2hhZG93Ontub25lOiIwcHggMHB4IDBweCB0cmFuc3BhcmVudCJ9LGJveFNoYWRvdzp7bm9uZToiMHB4IDBweCAwcHggMHB4IHRyYW5zcGFyZW50In19O2EuY29udmVydFRvQXJyYXlGb3JtPWYsYS5ub3JtYWxpemVLZXlmcmFtZXM9Z30oYSksZnVuY3Rpb24oYSl7dmFyIGI9e307YS5pc0RlcHJlY2F0ZWQ9ZnVuY3Rpb24oYSxjLGQsZSl7dmFyIGY9ZT8iYXJlIjoiaXMiLGc9bmV3IERhdGUsaD1uZXcgRGF0ZShjKTtyZXR1cm4gaC5zZXRNb250aChoLmdldE1vbnRoKCkrMyksIShnPGgmJihhIGluIGJ8fGNvbnNvbGUud2FybigiV2ViIEFuaW1hdGlvbnM6ICIrYSsiICIrZisiIGRlcHJlY2F0ZWQgYW5kIHdpbGwgc3RvcCB3b3JraW5nIG9uICIraC50b0RhdGVTdHJpbmcoKSsiLiAiK2QpLGJbYV09ITAsMSkpfSxhLmRlcHJlY2F0ZWQ9ZnVuY3Rpb24oYixjLGQsZSl7dmFyIGY9ZT8iYXJlIjoiaXMiO2lmKGEuaXNEZXByZWNhdGVkKGIsYyxkLGUpKXRocm93IG5ldyBFcnJvcihiKyIgIitmKyIgbm8gbG9uZ2VyIHN1cHBvcnRlZC4gIitkKX19KGEpLGZ1bmN0aW9uKCl7aWYoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmFuaW1hdGUpe3ZhciBjPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5hbmltYXRlKFtdLDApLGQ9ITA7aWYoYyYmKGQ9ITEsInBsYXl8Y3VycmVudFRpbWV8cGF1c2V8cmV2ZXJzZXxwbGF5YmFja1JhdGV8Y2FuY2VsfGZpbmlzaHxzdGFydFRpbWV8cGxheVN0YXRlIi5zcGxpdCgifCIpLmZvckVhY2goZnVuY3Rpb24oYSl7dm9pZCAwPT09Y1thXSYmKGQ9ITApfSkpLCFkKXJldHVybn0hZnVuY3Rpb24oYSxiLGMpe2Z1bmN0aW9uIGQoYSl7Zm9yKHZhciBiPXt9LGM9MDtjPGEubGVuZ3RoO2MrKylmb3IodmFyIGQgaW4gYVtjXSlpZigib2Zmc2V0IiE9ZCYmImVhc2luZyIhPWQmJiJjb21wb3NpdGUiIT1kKXt2YXIgZT17b2Zmc2V0OmFbY10ub2Zmc2V0LGVhc2luZzphW2NdLmVhc2luZyx2YWx1ZTphW2NdW2RdfTtiW2RdPWJbZF18fFtdLGJbZF0ucHVzaChlKX1mb3IodmFyIGYgaW4gYil7dmFyIGc9YltmXTtpZigwIT1nWzBdLm9mZnNldHx8MSE9Z1tnLmxlbmd0aC0xXS5vZmZzZXQpdGhyb3d7dHlwZTpET01FeGNlcHRpb24uTk9UX1NVUFBPUlRFRF9FUlIsbmFtZToiTm90U3VwcG9ydGVkRXJyb3IiLG1lc3NhZ2U6IlBhcnRpYWwga2V5ZnJhbWVzIGFyZSBub3Qgc3VwcG9ydGVkIn19cmV0dXJuIGJ9ZnVuY3Rpb24gZShjKXt2YXIgZD1bXTtmb3IodmFyIGUgaW4gYylmb3IodmFyIGY9Y1tlXSxnPTA7ZzxmLmxlbmd0aC0xO2crKyl7dmFyIGg9ZyxpPWcrMSxqPWZbaF0ub2Zmc2V0LGs9ZltpXS5vZmZzZXQsbD1qLG09azswPT1nJiYobD0tMS8wLDA9PWsmJihpPWgpKSxnPT1mLmxlbmd0aC0yJiYobT0xLzAsMT09aiYmKGg9aSkpLGQucHVzaCh7YXBwbHlGcm9tOmwsYXBwbHlUbzptLHN0YXJ0T2Zmc2V0OmZbaF0ub2Zmc2V0LGVuZE9mZnNldDpmW2ldLm9mZnNldCxlYXNpbmdGdW5jdGlvbjphLnBhcnNlRWFzaW5nRnVuY3Rpb24oZltoXS5lYXNpbmcpLHByb3BlcnR5OmUsaW50ZXJwb2xhdGlvbjpiLnByb3BlcnR5SW50ZXJwb2xhdGlvbihlLGZbaF0udmFsdWUsZltpXS52YWx1ZSl9KX1yZXR1cm4gZC5zb3J0KGZ1bmN0aW9uKGEsYil7cmV0dXJuIGEuc3RhcnRPZmZzZXQtYi5zdGFydE9mZnNldH0pLGR9Yi5jb252ZXJ0RWZmZWN0SW5wdXQ9ZnVuY3Rpb24oYyl7dmFyIGY9YS5ub3JtYWxpemVLZXlmcmFtZXMoYyksZz1kKGYpLGg9ZShnKTtyZXR1cm4gZnVuY3Rpb24oYSxjKXtpZihudWxsIT1jKWguZmlsdGVyKGZ1bmN0aW9uKGEpe3JldHVybiBjPj1hLmFwcGx5RnJvbSYmYzxhLmFwcGx5VG99KS5mb3JFYWNoKGZ1bmN0aW9uKGQpe3ZhciBlPWMtZC5zdGFydE9mZnNldCxmPWQuZW5kT2Zmc2V0LWQuc3RhcnRPZmZzZXQsZz0wPT1mPzA6ZC5lYXNpbmdGdW5jdGlvbihlL2YpO2IuYXBwbHkoYSxkLnByb3BlcnR5LGQuaW50ZXJwb2xhdGlvbihnKSl9KTtlbHNlIGZvcih2YXIgZCBpbiBnKSJvZmZzZXQiIT1kJiYiZWFzaW5nIiE9ZCYmImNvbXBvc2l0ZSIhPWQmJmIuY2xlYXIoYSxkKX19fShhLGIpLGZ1bmN0aW9uKGEsYixjKXtmdW5jdGlvbiBkKGEpe3JldHVybiBhLnJlcGxhY2UoLy0oLikvZyxmdW5jdGlvbihhLGIpe3JldHVybiBiLnRvVXBwZXJDYXNlKCl9KX1mdW5jdGlvbiBlKGEsYixjKXtoW2NdPWhbY118fFtdLGhbY10ucHVzaChbYSxiXSl9ZnVuY3Rpb24gZihhLGIsYyl7Zm9yKHZhciBmPTA7ZjxjLmxlbmd0aDtmKyspe2UoYSxiLGQoY1tmXSkpfX1mdW5jdGlvbiBnKGMsZSxmKXt2YXIgZz1jOy8tLy50ZXN0KGMpJiYhYS5pc0RlcHJlY2F0ZWQoIkh5cGhlbmF0ZWQgcHJvcGVydHkgbmFtZXMiLCIyMDE2LTAzLTIyIiwiVXNlIGNhbWVsQ2FzZSBpbnN0ZWFkLiIsITApJiYoZz1kKGMpKSwiaW5pdGlhbCIhPWUmJiJpbml0aWFsIiE9Znx8KCJpbml0aWFsIj09ZSYmKGU9aVtnXSksImluaXRpYWwiPT1mJiYoZj1pW2ddKSk7Zm9yKHZhciBqPWU9PWY/W106aFtnXSxrPTA7aiYmazxqLmxlbmd0aDtrKyspe3ZhciBsPWpba11bMF0oZSksbT1qW2tdWzBdKGYpO2lmKHZvaWQgMCE9PWwmJnZvaWQgMCE9PW0pe3ZhciBuPWpba11bMV0obCxtKTtpZihuKXt2YXIgbz1iLkludGVycG9sYXRpb24uYXBwbHkobnVsbCxuKTtyZXR1cm4gZnVuY3Rpb24oYSl7cmV0dXJuIDA9PWE/ZToxPT1hP2Y6byhhKX19fX1yZXR1cm4gYi5JbnRlcnBvbGF0aW9uKCExLCEwLGZ1bmN0aW9uKGEpe3JldHVybiBhP2Y6ZX0pfXZhciBoPXt9O2IuYWRkUHJvcGVydGllc0hhbmRsZXI9Zjt2YXIgaT17YmFja2dyb3VuZENvbG9yOiJ0cmFuc3BhcmVudCIsYmFja2dyb3VuZFBvc2l0aW9uOiIwJSAwJSIsYm9yZGVyQm90dG9tQ29sb3I6ImN1cnJlbnRDb2xvciIsYm9yZGVyQm90dG9tTGVmdFJhZGl1czoiMHB4Iixib3JkZXJCb3R0b21SaWdodFJhZGl1czoiMHB4Iixib3JkZXJCb3R0b21XaWR0aDoiM3B4Iixib3JkZXJMZWZ0Q29sb3I6ImN1cnJlbnRDb2xvciIsYm9yZGVyTGVmdFdpZHRoOiIzcHgiLGJvcmRlclJpZ2h0Q29sb3I6ImN1cnJlbnRDb2xvciIsYm9yZGVyUmlnaHRXaWR0aDoiM3B4Iixib3JkZXJTcGFjaW5nOiIycHgiLGJvcmRlclRvcENvbG9yOiJjdXJyZW50Q29sb3IiLGJvcmRlclRvcExlZnRSYWRpdXM6IjBweCIsYm9yZGVyVG9wUmlnaHRSYWRpdXM6IjBweCIsYm9yZGVyVG9wV2lkdGg6IjNweCIsYm90dG9tOiJhdXRvIixjbGlwOiJyZWN0KDBweCwgMHB4LCAwcHgsIDBweCkiLGNvbG9yOiJibGFjayIsZm9udFNpemU6IjEwMCUiLGZvbnRXZWlnaHQ6IjQwMCIsaGVpZ2h0OiJhdXRvIixsZWZ0OiJhdXRvIixsZXR0ZXJTcGFjaW5nOiJub3JtYWwiLGxpbmVIZWlnaHQ6IjEyMCUiLG1hcmdpbkJvdHRvbToiMHB4IixtYXJnaW5MZWZ0OiIwcHgiLG1hcmdpblJpZ2h0OiIwcHgiLG1hcmdpblRvcDoiMHB4IixtYXhIZWlnaHQ6Im5vbmUiLG1heFdpZHRoOiJub25lIixtaW5IZWlnaHQ6IjBweCIsbWluV2lkdGg6IjBweCIsb3BhY2l0eToiMS4wIixvdXRsaW5lQ29sb3I6ImludmVydCIsb3V0bGluZU9mZnNldDoiMHB4IixvdXRsaW5lV2lkdGg6IjNweCIscGFkZGluZ0JvdHRvbToiMHB4IixwYWRkaW5nTGVmdDoiMHB4IixwYWRkaW5nUmlnaHQ6IjBweCIscGFkZGluZ1RvcDoiMHB4IixyaWdodDoiYXV0byIsc3Ryb2tlRGFzaGFycmF5OiJub25lIixzdHJva2VEYXNob2Zmc2V0OiIwcHgiLHRleHRJbmRlbnQ6IjBweCIsdGV4dFNoYWRvdzoiMHB4IDBweCAwcHggdHJhbnNwYXJlbnQiLHRvcDoiYXV0byIsdHJhbnNmb3JtOiIiLHZlcnRpY2FsQWxpZ246IjBweCIsdmlzaWJpbGl0eToidmlzaWJsZSIsd2lkdGg6ImF1dG8iLHdvcmRTcGFjaW5nOiJub3JtYWwiLHpJbmRleDoiYXV0byJ9O2IucHJvcGVydHlJbnRlcnBvbGF0aW9uPWd9KGEsYiksZnVuY3Rpb24oYSxiLGMpe2Z1bmN0aW9uIGQoYil7dmFyIGM9YS5jYWxjdWxhdGVBY3RpdmVEdXJhdGlvbihiKSxkPWZ1bmN0aW9uKGQpe3JldHVybiBhLmNhbGN1bGF0ZUl0ZXJhdGlvblByb2dyZXNzKGMsZCxiKX07cmV0dXJuIGQuX3RvdGFsRHVyYXRpb249Yi5kZWxheStjK2IuZW5kRGVsYXksZH1iLktleWZyYW1lRWZmZWN0PWZ1bmN0aW9uKGMsZSxmLGcpe3ZhciBoLGk9ZChhLm5vcm1hbGl6ZVRpbWluZ0lucHV0KGYpKSxqPWIuY29udmVydEVmZmVjdElucHV0KGUpLGs9ZnVuY3Rpb24oKXtqKGMsaCl9O3JldHVybiBrLl91cGRhdGU9ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGwhPT0oaD1pKGEpKX0say5fY2xlYXI9ZnVuY3Rpb24oKXtqKGMsbnVsbCl9LGsuX2hhc1NhbWVUYXJnZXQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGM9PT1hfSxrLl90YXJnZXQ9YyxrLl90b3RhbER1cmF0aW9uPWkuX3RvdGFsRHVyYXRpb24say5faWQ9ZyxrfX0oYSxiKSxmdW5jdGlvbihhLGIpe2EuYXBwbHk9ZnVuY3Rpb24oYixjLGQpe2Iuc3R5bGVbYS5wcm9wZXJ0eU5hbWUoYyldPWR9LGEuY2xlYXI9ZnVuY3Rpb24oYixjKXtiLnN0eWxlW2EucHJvcGVydHlOYW1lKGMpXT0iIn19KGIpLGZ1bmN0aW9uKGEpe3dpbmRvdy5FbGVtZW50LnByb3RvdHlwZS5hbmltYXRlPWZ1bmN0aW9uKGIsYyl7dmFyIGQ9IiI7cmV0dXJuIGMmJmMuaWQmJihkPWMuaWQpLGEudGltZWxpbmUuX3BsYXkoYS5LZXlmcmFtZUVmZmVjdCh0aGlzLGIsYyxkKSl9fShiKSxmdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGMoYSxiLGQpe2lmKCJudW1iZXIiPT10eXBlb2YgYSYmIm51bWJlciI9PXR5cGVvZiBiKXJldHVybiBhKigxLWQpK2IqZDtpZigiYm9vbGVhbiI9PXR5cGVvZiBhJiYiYm9vbGVhbiI9PXR5cGVvZiBiKXJldHVybiBkPC41P2E6YjtpZihhLmxlbmd0aD09Yi5sZW5ndGgpe2Zvcih2YXIgZT1bXSxmPTA7ZjxhLmxlbmd0aDtmKyspZS5wdXNoKGMoYVtmXSxiW2ZdLGQpKTtyZXR1cm4gZX10aHJvdyJNaXNtYXRjaGVkIGludGVycG9sYXRpb24gYXJndW1lbnRzICIrYSsiOiIrYn1hLkludGVycG9sYXRpb249ZnVuY3Rpb24oYSxiLGQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gZChjKGEsYixlKSl9fX0oYiksZnVuY3Rpb24oYSxiLGMpe2Euc2VxdWVuY2VOdW1iZXI9MDt2YXIgZD1mdW5jdGlvbihhLGIsYyl7dGhpcy50YXJnZXQ9YSx0aGlzLmN1cnJlbnRUaW1lPWIsdGhpcy50aW1lbGluZVRpbWU9Yyx0aGlzLnR5cGU9ImZpbmlzaCIsdGhpcy5idWJibGVzPSExLHRoaXMuY2FuY2VsYWJsZT0hMSx0aGlzLmN1cnJlbnRUYXJnZXQ9YSx0aGlzLmRlZmF1bHRQcmV2ZW50ZWQ9ITEsdGhpcy5ldmVudFBoYXNlPUV2ZW50LkFUX1RBUkdFVCx0aGlzLnRpbWVTdGFtcD1EYXRlLm5vdygpfTtiLkFuaW1hdGlvbj1mdW5jdGlvbihiKXt0aGlzLmlkPSIiLGImJmIuX2lkJiYodGhpcy5pZD1iLl9pZCksdGhpcy5fc2VxdWVuY2VOdW1iZXI9YS5zZXF1ZW5jZU51bWJlcisrLHRoaXMuX2N1cnJlbnRUaW1lPTAsdGhpcy5fc3RhcnRUaW1lPW51bGwsdGhpcy5fcGF1c2VkPSExLHRoaXMuX3BsYXliYWNrUmF0ZT0xLHRoaXMuX2luVGltZWxpbmU9ITAsdGhpcy5fZmluaXNoZWRGbGFnPSEwLHRoaXMub25maW5pc2g9bnVsbCx0aGlzLl9maW5pc2hIYW5kbGVycz1bXSx0aGlzLl9lZmZlY3Q9Yix0aGlzLl9pbkVmZmVjdD10aGlzLl9lZmZlY3QuX3VwZGF0ZSgwKSx0aGlzLl9pZGxlPSEwLHRoaXMuX2N1cnJlbnRUaW1lUGVuZGluZz0hMX0sYi5BbmltYXRpb24ucHJvdG90eXBlPXtfZW5zdXJlQWxpdmU6ZnVuY3Rpb24oKXt0aGlzLnBsYXliYWNrUmF0ZTwwJiYwPT09dGhpcy5jdXJyZW50VGltZT90aGlzLl9pbkVmZmVjdD10aGlzLl9lZmZlY3QuX3VwZGF0ZSgtMSk6dGhpcy5faW5FZmZlY3Q9dGhpcy5fZWZmZWN0Ll91cGRhdGUodGhpcy5jdXJyZW50VGltZSksdGhpcy5faW5UaW1lbGluZXx8IXRoaXMuX2luRWZmZWN0JiZ0aGlzLl9maW5pc2hlZEZsYWd8fCh0aGlzLl9pblRpbWVsaW5lPSEwLGIudGltZWxpbmUuX2FuaW1hdGlvbnMucHVzaCh0aGlzKSl9LF90aWNrQ3VycmVudFRpbWU6ZnVuY3Rpb24oYSxiKXthIT10aGlzLl9jdXJyZW50VGltZSYmKHRoaXMuX2N1cnJlbnRUaW1lPWEsdGhpcy5faXNGaW5pc2hlZCYmIWImJih0aGlzLl9jdXJyZW50VGltZT10aGlzLl9wbGF5YmFja1JhdGU+MD90aGlzLl90b3RhbER1cmF0aW9uOjApLHRoaXMuX2Vuc3VyZUFsaXZlKCkpfSxnZXQgY3VycmVudFRpbWUoKXtyZXR1cm4gdGhpcy5faWRsZXx8dGhpcy5fY3VycmVudFRpbWVQZW5kaW5nP251bGw6dGhpcy5fY3VycmVudFRpbWV9LHNldCBjdXJyZW50VGltZShhKXthPSthLGlzTmFOKGEpfHwoYi5yZXN0YXJ0KCksdGhpcy5fcGF1c2VkfHxudWxsPT10aGlzLl9zdGFydFRpbWV8fCh0aGlzLl9zdGFydFRpbWU9dGhpcy5fdGltZWxpbmUuY3VycmVudFRpbWUtYS90aGlzLl9wbGF5YmFja1JhdGUpLHRoaXMuX2N1cnJlbnRUaW1lUGVuZGluZz0hMSx0aGlzLl9jdXJyZW50VGltZSE9YSYmKHRoaXMuX2lkbGUmJih0aGlzLl9pZGxlPSExLHRoaXMuX3BhdXNlZD0hMCksdGhpcy5fdGlja0N1cnJlbnRUaW1lKGEsITApLGIuYXBwbHlEaXJ0aWVkQW5pbWF0aW9uKHRoaXMpKSl9LGdldCBzdGFydFRpbWUoKXtyZXR1cm4gdGhpcy5fc3RhcnRUaW1lfSxzZXQgc3RhcnRUaW1lKGEpe2E9K2EsaXNOYU4oYSl8fHRoaXMuX3BhdXNlZHx8dGhpcy5faWRsZXx8KHRoaXMuX3N0YXJ0VGltZT1hLHRoaXMuX3RpY2tDdXJyZW50VGltZSgodGhpcy5fdGltZWxpbmUuY3VycmVudFRpbWUtdGhpcy5fc3RhcnRUaW1lKSp0aGlzLnBsYXliYWNrUmF0ZSksYi5hcHBseURpcnRpZWRBbmltYXRpb24odGhpcykpfSxnZXQgcGxheWJhY2tSYXRlKCl7cmV0dXJuIHRoaXMuX3BsYXliYWNrUmF0ZX0sc2V0IHBsYXliYWNrUmF0ZShhKXtpZihhIT10aGlzLl9wbGF5YmFja1JhdGUpe3ZhciBjPXRoaXMuY3VycmVudFRpbWU7dGhpcy5fcGxheWJhY2tSYXRlPWEsdGhpcy5fc3RhcnRUaW1lPW51bGwsInBhdXNlZCIhPXRoaXMucGxheVN0YXRlJiYiaWRsZSIhPXRoaXMucGxheVN0YXRlJiYodGhpcy5fZmluaXNoZWRGbGFnPSExLHRoaXMuX2lkbGU9ITEsdGhpcy5fZW5zdXJlQWxpdmUoKSxiLmFwcGx5RGlydGllZEFuaW1hdGlvbih0aGlzKSksbnVsbCE9YyYmKHRoaXMuY3VycmVudFRpbWU9Yyl9fSxnZXQgX2lzRmluaXNoZWQoKXtyZXR1cm4hdGhpcy5faWRsZSYmKHRoaXMuX3BsYXliYWNrUmF0ZT4wJiZ0aGlzLl9jdXJyZW50VGltZT49dGhpcy5fdG90YWxEdXJhdGlvbnx8dGhpcy5fcGxheWJhY2tSYXRlPDAmJnRoaXMuX2N1cnJlbnRUaW1lPD0wKX0sZ2V0IF90b3RhbER1cmF0aW9uKCl7cmV0dXJuIHRoaXMuX2VmZmVjdC5fdG90YWxEdXJhdGlvbn0sZ2V0IHBsYXlTdGF0ZSgpe3JldHVybiB0aGlzLl9pZGxlPyJpZGxlIjpudWxsPT10aGlzLl9zdGFydFRpbWUmJiF0aGlzLl9wYXVzZWQmJjAhPXRoaXMucGxheWJhY2tSYXRlfHx0aGlzLl9jdXJyZW50VGltZVBlbmRpbmc/InBlbmRpbmciOnRoaXMuX3BhdXNlZD8icGF1c2VkIjp0aGlzLl9pc0ZpbmlzaGVkPyJmaW5pc2hlZCI6InJ1bm5pbmcifSxfcmV3aW5kOmZ1bmN0aW9uKCl7aWYodGhpcy5fcGxheWJhY2tSYXRlPj0wKXRoaXMuX2N1cnJlbnRUaW1lPTA7ZWxzZXtpZighKHRoaXMuX3RvdGFsRHVyYXRpb248MS8wKSl0aHJvdyBuZXcgRE9NRXhjZXB0aW9uKCJVbmFibGUgdG8gcmV3aW5kIG5lZ2F0aXZlIHBsYXliYWNrIHJhdGUgYW5pbWF0aW9uIHdpdGggaW5maW5pdGUgZHVyYXRpb24iLCJJbnZhbGlkU3RhdGVFcnJvciIpO3RoaXMuX2N1cnJlbnRUaW1lPXRoaXMuX3RvdGFsRHVyYXRpb259fSxwbGF5OmZ1bmN0aW9uKCl7dGhpcy5fcGF1c2VkPSExLCh0aGlzLl9pc0ZpbmlzaGVkfHx0aGlzLl9pZGxlKSYmKHRoaXMuX3Jld2luZCgpLHRoaXMuX3N0YXJ0VGltZT1udWxsKSx0aGlzLl9maW5pc2hlZEZsYWc9ITEsdGhpcy5faWRsZT0hMSx0aGlzLl9lbnN1cmVBbGl2ZSgpLGIuYXBwbHlEaXJ0aWVkQW5pbWF0aW9uKHRoaXMpfSxwYXVzZTpmdW5jdGlvbigpe3RoaXMuX2lzRmluaXNoZWR8fHRoaXMuX3BhdXNlZHx8dGhpcy5faWRsZT90aGlzLl9pZGxlJiYodGhpcy5fcmV3aW5kKCksdGhpcy5faWRsZT0hMSk6dGhpcy5fY3VycmVudFRpbWVQZW5kaW5nPSEwLHRoaXMuX3N0YXJ0VGltZT1udWxsLHRoaXMuX3BhdXNlZD0hMH0sZmluaXNoOmZ1bmN0aW9uKCl7dGhpcy5faWRsZXx8KHRoaXMuY3VycmVudFRpbWU9dGhpcy5fcGxheWJhY2tSYXRlPjA/dGhpcy5fdG90YWxEdXJhdGlvbjowLHRoaXMuX3N0YXJ0VGltZT10aGlzLl90b3RhbER1cmF0aW9uLXRoaXMuY3VycmVudFRpbWUsdGhpcy5fY3VycmVudFRpbWVQZW5kaW5nPSExLGIuYXBwbHlEaXJ0aWVkQW5pbWF0aW9uKHRoaXMpKX0sY2FuY2VsOmZ1bmN0aW9uKCl7dGhpcy5faW5FZmZlY3QmJih0aGlzLl9pbkVmZmVjdD0hMSx0aGlzLl9pZGxlPSEwLHRoaXMuX3BhdXNlZD0hMSx0aGlzLl9maW5pc2hlZEZsYWc9ITAsdGhpcy5fY3VycmVudFRpbWU9MCx0aGlzLl9zdGFydFRpbWU9bnVsbCx0aGlzLl9lZmZlY3QuX3VwZGF0ZShudWxsKSxiLmFwcGx5RGlydGllZEFuaW1hdGlvbih0aGlzKSl9LHJldmVyc2U6ZnVuY3Rpb24oKXt0aGlzLnBsYXliYWNrUmF0ZSo9LTEsdGhpcy5wbGF5KCl9LGFkZEV2ZW50TGlzdGVuZXI6ZnVuY3Rpb24oYSxiKXsiZnVuY3Rpb24iPT10eXBlb2YgYiYmImZpbmlzaCI9PWEmJnRoaXMuX2ZpbmlzaEhhbmRsZXJzLnB1c2goYil9LHJlbW92ZUV2ZW50TGlzdGVuZXI6ZnVuY3Rpb24oYSxiKXtpZigiZmluaXNoIj09YSl7dmFyIGM9dGhpcy5fZmluaXNoSGFuZGxlcnMuaW5kZXhPZihiKTtjPj0wJiZ0aGlzLl9maW5pc2hIYW5kbGVycy5zcGxpY2UoYywxKX19LF9maXJlRXZlbnRzOmZ1bmN0aW9uKGEpe2lmKHRoaXMuX2lzRmluaXNoZWQpe2lmKCF0aGlzLl9maW5pc2hlZEZsYWcpe3ZhciBiPW5ldyBkKHRoaXMsdGhpcy5fY3VycmVudFRpbWUsYSksYz10aGlzLl9maW5pc2hIYW5kbGVycy5jb25jYXQodGhpcy5vbmZpbmlzaD9bdGhpcy5vbmZpbmlzaF06W10pO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtjLmZvckVhY2goZnVuY3Rpb24oYSl7YS5jYWxsKGIudGFyZ2V0LGIpfSl9LDApLHRoaXMuX2ZpbmlzaGVkRmxhZz0hMH19ZWxzZSB0aGlzLl9maW5pc2hlZEZsYWc9ITF9LF90aWNrOmZ1bmN0aW9uKGEsYil7dGhpcy5faWRsZXx8dGhpcy5fcGF1c2VkfHwobnVsbD09dGhpcy5fc3RhcnRUaW1lP2ImJih0aGlzLnN0YXJ0VGltZT1hLXRoaXMuX2N1cnJlbnRUaW1lL3RoaXMucGxheWJhY2tSYXRlKTp0aGlzLl9pc0ZpbmlzaGVkfHx0aGlzLl90aWNrQ3VycmVudFRpbWUoKGEtdGhpcy5fc3RhcnRUaW1lKSp0aGlzLnBsYXliYWNrUmF0ZSkpLGImJih0aGlzLl9jdXJyZW50VGltZVBlbmRpbmc9ITEsdGhpcy5fZmlyZUV2ZW50cyhhKSl9LGdldCBfbmVlZHNUaWNrKCl7cmV0dXJuIHRoaXMucGxheVN0YXRlIGlue3BlbmRpbmc6MSxydW5uaW5nOjF9fHwhdGhpcy5fZmluaXNoZWRGbGFnfSxfdGFyZ2V0QW5pbWF0aW9uczpmdW5jdGlvbigpe3ZhciBhPXRoaXMuX2VmZmVjdC5fdGFyZ2V0O3JldHVybiBhLl9hY3RpdmVBbmltYXRpb25zfHwoYS5fYWN0aXZlQW5pbWF0aW9ucz1bXSksYS5fYWN0aXZlQW5pbWF0aW9uc30sX21hcmtUYXJnZXQ6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLl90YXJnZXRBbmltYXRpb25zKCk7LTE9PT1hLmluZGV4T2YodGhpcykmJmEucHVzaCh0aGlzKX0sX3VubWFya1RhcmdldDpmdW5jdGlvbigpe3ZhciBhPXRoaXMuX3RhcmdldEFuaW1hdGlvbnMoKSxiPWEuaW5kZXhPZih0aGlzKTstMSE9PWImJmEuc3BsaWNlKGIsMSl9fX0oYSxiKSxmdW5jdGlvbihhLGIsYyl7ZnVuY3Rpb24gZChhKXt2YXIgYj1qO2o9W10sYTxxLmN1cnJlbnRUaW1lJiYoYT1xLmN1cnJlbnRUaW1lKSxxLl9hbmltYXRpb25zLnNvcnQoZSkscS5fYW5pbWF0aW9ucz1oKGEsITAscS5fYW5pbWF0aW9ucylbMF0sYi5mb3JFYWNoKGZ1bmN0aW9uKGIpe2JbMV0oYSl9KSxnKCksbD12b2lkIDB9ZnVuY3Rpb24gZShhLGIpe3JldHVybiBhLl9zZXF1ZW5jZU51bWJlci1iLl9zZXF1ZW5jZU51bWJlcn1mdW5jdGlvbiBmKCl7dGhpcy5fYW5pbWF0aW9ucz1bXSx0aGlzLmN1cnJlbnRUaW1lPXdpbmRvdy5wZXJmb3JtYW5jZSYmcGVyZm9ybWFuY2Uubm93P3BlcmZvcm1hbmNlLm5vdygpOjB9ZnVuY3Rpb24gZygpe28uZm9yRWFjaChmdW5jdGlvbihhKXthKCl9KSxvLmxlbmd0aD0wfWZ1bmN0aW9uIGgoYSxjLGQpe3A9ITAsbj0hMSxiLnRpbWVsaW5lLmN1cnJlbnRUaW1lPWEsbT0hMTt2YXIgZT1bXSxmPVtdLGc9W10saD1bXTtyZXR1cm4gZC5mb3JFYWNoKGZ1bmN0aW9uKGIpe2IuX3RpY2soYSxjKSxiLl9pbkVmZmVjdD8oZi5wdXNoKGIuX2VmZmVjdCksYi5fbWFya1RhcmdldCgpKTooZS5wdXNoKGIuX2VmZmVjdCksYi5fdW5tYXJrVGFyZ2V0KCkpLGIuX25lZWRzVGljayYmKG09ITApO3ZhciBkPWIuX2luRWZmZWN0fHxiLl9uZWVkc1RpY2s7Yi5faW5UaW1lbGluZT1kLGQ/Zy5wdXNoKGIpOmgucHVzaChiKX0pLG8ucHVzaC5hcHBseShvLGUpLG8ucHVzaC5hcHBseShvLGYpLG0mJnJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbigpe30pLHA9ITEsW2csaF19dmFyIGk9d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSxqPVtdLGs9MDt3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lPWZ1bmN0aW9uKGEpe3ZhciBiPWsrKztyZXR1cm4gMD09ai5sZW5ndGgmJmkoZCksai5wdXNoKFtiLGFdKSxifSx3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWU9ZnVuY3Rpb24oYSl7ai5mb3JFYWNoKGZ1bmN0aW9uKGIpe2JbMF09PWEmJihiWzFdPWZ1bmN0aW9uKCl7fSl9KX0sZi5wcm90b3R5cGU9e19wbGF5OmZ1bmN0aW9uKGMpe2MuX3RpbWluZz1hLm5vcm1hbGl6ZVRpbWluZ0lucHV0KGMudGltaW5nKTt2YXIgZD1uZXcgYi5BbmltYXRpb24oYyk7cmV0dXJuIGQuX2lkbGU9ITEsZC5fdGltZWxpbmU9dGhpcyx0aGlzLl9hbmltYXRpb25zLnB1c2goZCksYi5yZXN0YXJ0KCksYi5hcHBseURpcnRpZWRBbmltYXRpb24oZCksZH19O3ZhciBsPXZvaWQgMCxtPSExLG49ITE7Yi5yZXN0YXJ0PWZ1bmN0aW9uKCl7cmV0dXJuIG18fChtPSEwLHJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbigpe30pLG49ITApLG59LGIuYXBwbHlEaXJ0aWVkQW5pbWF0aW9uPWZ1bmN0aW9uKGEpe2lmKCFwKXthLl9tYXJrVGFyZ2V0KCk7dmFyIGM9YS5fdGFyZ2V0QW5pbWF0aW9ucygpO2Muc29ydChlKSxoKGIudGltZWxpbmUuY3VycmVudFRpbWUsITEsYy5zbGljZSgpKVsxXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciBiPXEuX2FuaW1hdGlvbnMuaW5kZXhPZihhKTstMSE9PWImJnEuX2FuaW1hdGlvbnMuc3BsaWNlKGIsMSl9KSxnKCl9fTt2YXIgbz1bXSxwPSExLHE9bmV3IGY7Yi50aW1lbGluZT1xfShhLGIpLGZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoYSxiKXt2YXIgYz1hLmV4ZWMoYik7aWYoYylyZXR1cm4gYz1hLmlnbm9yZUNhc2U/Y1swXS50b0xvd2VyQ2FzZSgpOmNbMF0sW2MsYi5zdWJzdHIoYy5sZW5ndGgpXX1mdW5jdGlvbiBjKGEsYil7Yj1iLnJlcGxhY2UoL15ccyovLCIiKTt2YXIgYz1hKGIpO2lmKGMpcmV0dXJuW2NbMF0sY1sxXS5yZXBsYWNlKC9eXHMqLywiIildfWZ1bmN0aW9uIGQoYSxkLGUpe2E9Yy5iaW5kKG51bGwsYSk7Zm9yKHZhciBmPVtdOzspe3ZhciBnPWEoZSk7aWYoIWcpcmV0dXJuW2YsZV07aWYoZi5wdXNoKGdbMF0pLGU9Z1sxXSwhKGc9YihkLGUpKXx8IiI9PWdbMV0pcmV0dXJuW2YsZV07ZT1nWzFdfX1mdW5jdGlvbiBlKGEsYil7Zm9yKHZhciBjPTAsZD0wO2Q8Yi5sZW5ndGgmJighL1xzfCwvLnRlc3QoYltkXSl8fDAhPWMpO2QrKylpZigiKCI9PWJbZF0pYysrO2Vsc2UgaWYoIikiPT1iW2RdJiYoYy0tLDA9PWMmJmQrKyxjPD0wKSlicmVhazt2YXIgZT1hKGIuc3Vic3RyKDAsZCkpO3JldHVybiB2b2lkIDA9PWU/dm9pZCAwOltlLGIuc3Vic3RyKGQpXX1mdW5jdGlvbiBmKGEsYil7Zm9yKHZhciBjPWEsZD1iO2MmJmQ7KWM+ZD9jJT1kOmQlPWM7cmV0dXJuIGM9YSpiLyhjK2QpfWZ1bmN0aW9uIGcoYSl7cmV0dXJuIGZ1bmN0aW9uKGIpe3ZhciBjPWEoYik7cmV0dXJuIGMmJihjWzBdPXZvaWQgMCksY319ZnVuY3Rpb24gaChhLGIpe3JldHVybiBmdW5jdGlvbihjKXtyZXR1cm4gYShjKXx8W2IsY119fWZ1bmN0aW9uIGkoYixjKXtmb3IodmFyIGQ9W10sZT0wO2U8Yi5sZW5ndGg7ZSsrKXt2YXIgZj1hLmNvbnN1bWVUcmltbWVkKGJbZV0sYyk7aWYoIWZ8fCIiPT1mWzBdKXJldHVybjt2b2lkIDAhPT1mWzBdJiZkLnB1c2goZlswXSksYz1mWzFdfWlmKCIiPT1jKXJldHVybiBkfWZ1bmN0aW9uIGooYSxiLGMsZCxlKXtmb3IodmFyIGc9W10saD1bXSxpPVtdLGo9ZihkLmxlbmd0aCxlLmxlbmd0aCksaz0wO2s8ajtrKyspe3ZhciBsPWIoZFtrJWQubGVuZ3RoXSxlW2slZS5sZW5ndGhdKTtpZighbClyZXR1cm47Zy5wdXNoKGxbMF0pLGgucHVzaChsWzFdKSxpLnB1c2gobFsyXSl9cmV0dXJuW2csaCxmdW5jdGlvbihiKXt2YXIgZD1iLm1hcChmdW5jdGlvbihhLGIpe3JldHVybiBpW2JdKGEpfSkuam9pbihjKTtyZXR1cm4gYT9hKGQpOmR9XX1mdW5jdGlvbiBrKGEsYixjKXtmb3IodmFyIGQ9W10sZT1bXSxmPVtdLGc9MCxoPTA7aDxjLmxlbmd0aDtoKyspaWYoImZ1bmN0aW9uIj09dHlwZW9mIGNbaF0pe3ZhciBpPWNbaF0oYVtnXSxiW2crK10pO2QucHVzaChpWzBdKSxlLnB1c2goaVsxXSksZi5wdXNoKGlbMl0pfWVsc2UhZnVuY3Rpb24oYSl7ZC5wdXNoKCExKSxlLnB1c2goITEpLGYucHVzaChmdW5jdGlvbigpe3JldHVybiBjW2FdfSl9KGgpO3JldHVybltkLGUsZnVuY3Rpb24oYSl7Zm9yKHZhciBiPSIiLGM9MDtjPGEubGVuZ3RoO2MrKyliKz1mW2NdKGFbY10pO3JldHVybiBifV19YS5jb25zdW1lVG9rZW49YixhLmNvbnN1bWVUcmltbWVkPWMsYS5jb25zdW1lUmVwZWF0ZWQ9ZCxhLmNvbnN1bWVQYXJlbnRoZXNpc2VkPWUsYS5pZ25vcmU9ZyxhLm9wdGlvbmFsPWgsYS5jb25zdW1lTGlzdD1pLGEubWVyZ2VOZXN0ZWRSZXBlYXRlZD1qLmJpbmQobnVsbCxudWxsKSxhLm1lcmdlV3JhcHBlZE5lc3RlZFJlcGVhdGVkPWosYS5tZXJnZUxpc3Q9a30oYiksZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYihiKXtmdW5jdGlvbiBjKGIpe3ZhciBjPWEuY29uc3VtZVRva2VuKC9eaW5zZXQvaSxiKTtyZXR1cm4gYz8oZC5pbnNldD0hMCxjKTooYz1hLmNvbnN1bWVMZW5ndGhPclBlcmNlbnQoYikpPyhkLmxlbmd0aHMucHVzaChjWzBdKSxjKTooYz1hLmNvbnN1bWVDb2xvcihiKSxjPyhkLmNvbG9yPWNbMF0sYyk6dm9pZCAwKX12YXIgZD17aW5zZXQ6ITEsbGVuZ3RoczpbXSxjb2xvcjpudWxsfSxlPWEuY29uc3VtZVJlcGVhdGVkKGMsL14vLGIpO2lmKGUmJmVbMF0ubGVuZ3RoKXJldHVybltkLGVbMV1dfWZ1bmN0aW9uIGMoYyl7dmFyIGQ9YS5jb25zdW1lUmVwZWF0ZWQoYiwvXiwvLGMpO2lmKGQmJiIiPT1kWzFdKXJldHVybiBkWzBdfWZ1bmN0aW9uIGQoYixjKXtmb3IoO2IubGVuZ3Rocy5sZW5ndGg8TWF0aC5tYXgoYi5sZW5ndGhzLmxlbmd0aCxjLmxlbmd0aHMubGVuZ3RoKTspYi5sZW5ndGhzLnB1c2goe3B4OjB9KTtmb3IoO2MubGVuZ3Rocy5sZW5ndGg8TWF0aC5tYXgoYi5sZW5ndGhzLmxlbmd0aCxjLmxlbmd0aHMubGVuZ3RoKTspYy5sZW5ndGhzLnB1c2goe3B4OjB9KTtpZihiLmluc2V0PT1jLmluc2V0JiYhIWIuY29sb3I9PSEhYy5jb2xvcil7Zm9yKHZhciBkLGU9W10sZj1bW10sMF0sZz1bW10sMF0saD0wO2g8Yi5sZW5ndGhzLmxlbmd0aDtoKyspe3ZhciBpPWEubWVyZ2VEaW1lbnNpb25zKGIubGVuZ3Roc1toXSxjLmxlbmd0aHNbaF0sMj09aCk7ZlswXS5wdXNoKGlbMF0pLGdbMF0ucHVzaChpWzFdKSxlLnB1c2goaVsyXSl9aWYoYi5jb2xvciYmYy5jb2xvcil7dmFyIGo9YS5tZXJnZUNvbG9ycyhiLmNvbG9yLGMuY29sb3IpO2ZbMV09alswXSxnWzFdPWpbMV0sZD1qWzJdfXJldHVybltmLGcsZnVuY3Rpb24oYSl7Zm9yKHZhciBjPWIuaW5zZXQ/Imluc2V0ICI6IiAiLGY9MDtmPGUubGVuZ3RoO2YrKyljKz1lW2ZdKGFbMF1bZl0pKyIgIjtyZXR1cm4gZCYmKGMrPWQoYVsxXSkpLGN9XX19ZnVuY3Rpb24gZShiLGMsZCxlKXtmdW5jdGlvbiBmKGEpe3JldHVybntpbnNldDphLGNvbG9yOlswLDAsMCwwXSxsZW5ndGhzOlt7cHg6MH0se3B4OjB9LHtweDowfSx7cHg6MH1dfX1mb3IodmFyIGc9W10saD1bXSxpPTA7aTxkLmxlbmd0aHx8aTxlLmxlbmd0aDtpKyspe3ZhciBqPWRbaV18fGYoZVtpXS5pbnNldCksaz1lW2ldfHxmKGRbaV0uaW5zZXQpO2cucHVzaChqKSxoLnB1c2goayl9cmV0dXJuIGEubWVyZ2VOZXN0ZWRSZXBlYXRlZChiLGMsZyxoKX12YXIgZj1lLmJpbmQobnVsbCxkLCIsICIpO2EuYWRkUHJvcGVydGllc0hhbmRsZXIoYyxmLFsiYm94LXNoYWRvdyIsInRleHQtc2hhZG93Il0pfShiKSxmdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGMoYSl7cmV0dXJuIGEudG9GaXhlZCgzKS5yZXBsYWNlKC8wKyQvLCIiKS5yZXBsYWNlKC9cLiQvLCIiKX1mdW5jdGlvbiBkKGEsYixjKXtyZXR1cm4gTWF0aC5taW4oYixNYXRoLm1heChhLGMpKX1mdW5jdGlvbiBlKGEpe2lmKC9eXHMqWy0rXT8oXGQqXC4pP1xkK1xzKiQvLnRlc3QoYSkpcmV0dXJuIE51bWJlcihhKX1mdW5jdGlvbiBmKGEsYil7cmV0dXJuW2EsYixjXX1mdW5jdGlvbiBnKGEsYil7aWYoMCE9YSlyZXR1cm4gaSgwLDEvMCkoYSxiKX1mdW5jdGlvbiBoKGEsYil7cmV0dXJuW2EsYixmdW5jdGlvbihhKXtyZXR1cm4gTWF0aC5yb3VuZChkKDEsMS8wLGEpKX1dfWZ1bmN0aW9uIGkoYSxiKXtyZXR1cm4gZnVuY3Rpb24oZSxmKXtyZXR1cm5bZSxmLGZ1bmN0aW9uKGUpe3JldHVybiBjKGQoYSxiLGUpKX1dfX1mdW5jdGlvbiBqKGEpe3ZhciBiPWEudHJpbSgpLnNwbGl0KC9ccypbXHMsXVxzKi8pO2lmKDAhPT1iLmxlbmd0aCl7Zm9yKHZhciBjPVtdLGQ9MDtkPGIubGVuZ3RoO2QrKyl7dmFyIGY9ZShiW2RdKTtpZih2b2lkIDA9PT1mKXJldHVybjtjLnB1c2goZil9cmV0dXJuIGN9fWZ1bmN0aW9uIGsoYSxiKXtpZihhLmxlbmd0aD09Yi5sZW5ndGgpcmV0dXJuW2EsYixmdW5jdGlvbihhKXtyZXR1cm4gYS5tYXAoYykuam9pbigiICIpfV19ZnVuY3Rpb24gbChhLGIpe3JldHVyblthLGIsTWF0aC5yb3VuZF19YS5jbGFtcD1kLGEuYWRkUHJvcGVydGllc0hhbmRsZXIoaixrLFsic3Ryb2tlLWRhc2hhcnJheSJdKSxhLmFkZFByb3BlcnRpZXNIYW5kbGVyKGUsaSgwLDEvMCksWyJib3JkZXItaW1hZ2Utd2lkdGgiLCJsaW5lLWhlaWdodCJdKSxhLmFkZFByb3BlcnRpZXNIYW5kbGVyKGUsaSgwLDEpLFsib3BhY2l0eSIsInNoYXBlLWltYWdlLXRocmVzaG9sZCJdKSxhLmFkZFByb3BlcnRpZXNIYW5kbGVyKGUsZyxbImZsZXgtZ3JvdyIsImZsZXgtc2hyaW5rIl0pLGEuYWRkUHJvcGVydGllc0hhbmRsZXIoZSxoLFsib3JwaGFucyIsIndpZG93cyJdKSxhLmFkZFByb3BlcnRpZXNIYW5kbGVyKGUsbCxbInotaW5kZXgiXSksYS5wYXJzZU51bWJlcj1lLGEucGFyc2VOdW1iZXJMaXN0PWosYS5tZXJnZU51bWJlcnM9ZixhLm51bWJlclRvU3RyaW5nPWN9KGIpLGZ1bmN0aW9uKGEsYil7ZnVuY3Rpb24gYyhhLGIpe2lmKCJ2aXNpYmxlIj09YXx8InZpc2libGUiPT1iKXJldHVyblswLDEsZnVuY3Rpb24oYyl7cmV0dXJuIGM8PTA/YTpjPj0xP2I6InZpc2libGUifV19YS5hZGRQcm9wZXJ0aWVzSGFuZGxlcihTdHJpbmcsYyxbInZpc2liaWxpdHkiXSl9KGIpLGZ1bmN0aW9uKGEsYil7ZnVuY3Rpb24gYyhhKXthPWEudHJpbSgpLGYuZmlsbFN0eWxlPSIjMDAwIixmLmZpbGxTdHlsZT1hO3ZhciBiPWYuZmlsbFN0eWxlO2lmKGYuZmlsbFN0eWxlPSIjZmZmIixmLmZpbGxTdHlsZT1hLGI9PWYuZmlsbFN0eWxlKXtmLmZpbGxSZWN0KDAsMCwxLDEpO3ZhciBjPWYuZ2V0SW1hZ2VEYXRhKDAsMCwxLDEpLmRhdGE7Zi5jbGVhclJlY3QoMCwwLDEsMSk7dmFyIGQ9Y1szXS8yNTU7cmV0dXJuW2NbMF0qZCxjWzFdKmQsY1syXSpkLGRdfX1mdW5jdGlvbiBkKGIsYyl7cmV0dXJuW2IsYyxmdW5jdGlvbihiKXtmdW5jdGlvbiBjKGEpe3JldHVybiBNYXRoLm1heCgwLE1hdGgubWluKDI1NSxhKSl9aWYoYlszXSlmb3IodmFyIGQ9MDtkPDM7ZCsrKWJbZF09TWF0aC5yb3VuZChjKGJbZF0vYlszXSkpO3JldHVybiBiWzNdPWEubnVtYmVyVG9TdHJpbmcoYS5jbGFtcCgwLDEsYlszXSkpLCJyZ2JhKCIrYi5qb2luKCIsIikrIikifV19dmFyIGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiwiY2FudmFzIik7ZS53aWR0aD1lLmhlaWdodD0xO3ZhciBmPWUuZ2V0Q29udGV4dCgiMmQiKTthLmFkZFByb3BlcnRpZXNIYW5kbGVyKGMsZCxbImJhY2tncm91bmQtY29sb3IiLCJib3JkZXItYm90dG9tLWNvbG9yIiwiYm9yZGVyLWxlZnQtY29sb3IiLCJib3JkZXItcmlnaHQtY29sb3IiLCJib3JkZXItdG9wLWNvbG9yIiwiY29sb3IiLCJmaWxsIiwiZmxvb2QtY29sb3IiLCJsaWdodGluZy1jb2xvciIsIm91dGxpbmUtY29sb3IiLCJzdG9wLWNvbG9yIiwic3Ryb2tlIiwidGV4dC1kZWNvcmF0aW9uLWNvbG9yIl0pLGEuY29uc3VtZUNvbG9yPWEuY29uc3VtZVBhcmVudGhlc2lzZWQuYmluZChudWxsLGMpLGEubWVyZ2VDb2xvcnM9ZH0oYiksZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKGEpe2Z1bmN0aW9uIGIoKXt2YXIgYj1oLmV4ZWMoYSk7Zz1iP2JbMF06dm9pZCAwfWZ1bmN0aW9uIGMoKXt2YXIgYT1OdW1iZXIoZyk7cmV0dXJuIGIoKSxhfWZ1bmN0aW9uIGQoKXtpZigiKCIhPT1nKXJldHVybiBjKCk7YigpO3ZhciBhPWYoKTtyZXR1cm4iKSIhPT1nP05hTjooYigpLGEpfWZ1bmN0aW9uIGUoKXtmb3IodmFyIGE9ZCgpOyIqIj09PWd8fCIvIj09PWc7KXt2YXIgYz1nO2IoKTt2YXIgZT1kKCk7IioiPT09Yz9hKj1lOmEvPWV9cmV0dXJuIGF9ZnVuY3Rpb24gZigpe2Zvcih2YXIgYT1lKCk7IisiPT09Z3x8Ii0iPT09Zzspe3ZhciBjPWc7YigpO3ZhciBkPWUoKTsiKyI9PT1jP2ErPWQ6YS09ZH1yZXR1cm4gYX12YXIgZyxoPS8oW1wrXC1cd1wuXSt8W1woXClcKlwvXSkvZztyZXR1cm4gYigpLGYoKX1mdW5jdGlvbiBkKGEsYil7aWYoIjAiPT0oYj1iLnRyaW0oKS50b0xvd2VyQ2FzZSgpKSYmInB4Ii5zZWFyY2goYSk+PTApcmV0dXJue3B4OjB9O2lmKC9eW14oXSokfF5jYWxjLy50ZXN0KGIpKXtiPWIucmVwbGFjZSgvY2FsY1woL2csIigiKTt2YXIgZD17fTtiPWIucmVwbGFjZShhLGZ1bmN0aW9uKGEpe3JldHVybiBkW2FdPW51bGwsIlUiK2F9KTtmb3IodmFyIGU9IlUoIithLnNvdXJjZSsiKSIsZj1iLnJlcGxhY2UoL1stK10/KFxkKlwuKT9cZCsoW0VlXVstK10/XGQrKT8vZywiTiIpLnJlcGxhY2UobmV3IFJlZ0V4cCgiTiIrZSwiZyIpLCJEIikucmVwbGFjZSgvXHNbKy1dXHMvZywiTyIpLnJlcGxhY2UoL1xzL2csIiIpLGc9Wy9OXCooRCkvZywvKE58RClbKlwvXU4vZywvKE58RClPXDEvZywvXCgoTnxEKVwpL2ddLGg9MDtoPGcubGVuZ3RoOylnW2hdLnRlc3QoZik/KGY9Zi5yZXBsYWNlKGdbaF0sIiQxIiksaD0wKTpoKys7aWYoIkQiPT1mKXtmb3IodmFyIGkgaW4gZCl7dmFyIGo9YyhiLnJlcGxhY2UobmV3IFJlZ0V4cCgiVSIraSwiZyIpLCIiKS5yZXBsYWNlKG5ldyBSZWdFeHAoZSwiZyIpLCIqMCIpKTtpZighaXNGaW5pdGUoaikpcmV0dXJuO2RbaV09an1yZXR1cm4gZH19fWZ1bmN0aW9uIGUoYSxiKXtyZXR1cm4gZihhLGIsITApfWZ1bmN0aW9uIGYoYixjLGQpe3ZhciBlLGY9W107Zm9yKGUgaW4gYilmLnB1c2goZSk7Zm9yKGUgaW4gYylmLmluZGV4T2YoZSk8MCYmZi5wdXNoKGUpO3JldHVybiBiPWYubWFwKGZ1bmN0aW9uKGEpe3JldHVybiBiW2FdfHwwfSksYz1mLm1hcChmdW5jdGlvbihhKXtyZXR1cm4gY1thXXx8MH0pLFtiLGMsZnVuY3Rpb24oYil7dmFyIGM9Yi5tYXAoZnVuY3Rpb24oYyxlKXtyZXR1cm4gMT09Yi5sZW5ndGgmJmQmJihjPU1hdGgubWF4KGMsMCkpLGEubnVtYmVyVG9TdHJpbmcoYykrZltlXX0pLmpvaW4oIiArICIpO3JldHVybiBiLmxlbmd0aD4xPyJjYWxjKCIrYysiKSI6Y31dfXZhciBnPSJweHxlbXxleHxjaHxyZW18dnd8dmh8dm1pbnx2bWF4fGNtfG1tfGlufHB0fHBjIixoPWQuYmluZChudWxsLG5ldyBSZWdFeHAoZywiZyIpKSxpPWQuYmluZChudWxsLG5ldyBSZWdFeHAoZysifCUiLCJnIikpLGo9ZC5iaW5kKG51bGwsL2RlZ3xyYWR8Z3JhZHx0dXJuL2cpO2EucGFyc2VMZW5ndGg9aCxhLnBhcnNlTGVuZ3RoT3JQZXJjZW50PWksYS5jb25zdW1lTGVuZ3RoT3JQZXJjZW50PWEuY29uc3VtZVBhcmVudGhlc2lzZWQuYmluZChudWxsLGkpLGEucGFyc2VBbmdsZT1qLGEubWVyZ2VEaW1lbnNpb25zPWY7dmFyIGs9YS5jb25zdW1lUGFyZW50aGVzaXNlZC5iaW5kKG51bGwsaCksbD1hLmNvbnN1bWVSZXBlYXRlZC5iaW5kKHZvaWQgMCxrLC9eLyksbT1hLmNvbnN1bWVSZXBlYXRlZC5iaW5kKHZvaWQgMCxsLC9eLC8pO2EuY29uc3VtZVNpemVQYWlyTGlzdD1tO3ZhciBuPWZ1bmN0aW9uKGEpe3ZhciBiPW0oYSk7aWYoYiYmIiI9PWJbMV0pcmV0dXJuIGJbMF19LG89YS5tZXJnZU5lc3RlZFJlcGVhdGVkLmJpbmQodm9pZCAwLGUsIiAiKSxwPWEubWVyZ2VOZXN0ZWRSZXBlYXRlZC5iaW5kKHZvaWQgMCxvLCIsIik7YS5tZXJnZU5vbk5lZ2F0aXZlU2l6ZVBhaXI9byxhLmFkZFByb3BlcnRpZXNIYW5kbGVyKG4scCxbImJhY2tncm91bmQtc2l6ZSJdKSxhLmFkZFByb3BlcnRpZXNIYW5kbGVyKGksZSxbImJvcmRlci1ib3R0b20td2lkdGgiLCJib3JkZXItaW1hZ2Utd2lkdGgiLCJib3JkZXItbGVmdC13aWR0aCIsImJvcmRlci1yaWdodC13aWR0aCIsImJvcmRlci10b3Atd2lkdGgiLCJmbGV4LWJhc2lzIiwiZm9udC1zaXplIiwiaGVpZ2h0IiwibGluZS1oZWlnaHQiLCJtYXgtaGVpZ2h0IiwibWF4LXdpZHRoIiwib3V0bGluZS13aWR0aCIsIndpZHRoIl0pLGEuYWRkUHJvcGVydGllc0hhbmRsZXIoaSxmLFsiYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1cyIsImJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzIiwiYm9yZGVyLXRvcC1sZWZ0LXJhZGl1cyIsImJvcmRlci10b3AtcmlnaHQtcmFkaXVzIiwiYm90dG9tIiwibGVmdCIsImxldHRlci1zcGFjaW5nIiwibWFyZ2luLWJvdHRvbSIsIm1hcmdpbi1sZWZ0IiwibWFyZ2luLXJpZ2h0IiwibWFyZ2luLXRvcCIsIm1pbi1oZWlnaHQiLCJtaW4td2lkdGgiLCJvdXRsaW5lLW9mZnNldCIsInBhZGRpbmctYm90dG9tIiwicGFkZGluZy1sZWZ0IiwicGFkZGluZy1yaWdodCIsInBhZGRpbmctdG9wIiwicGVyc3BlY3RpdmUiLCJyaWdodCIsInNoYXBlLW1hcmdpbiIsInN0cm9rZS1kYXNob2Zmc2V0IiwidGV4dC1pbmRlbnQiLCJ0b3AiLCJ2ZXJ0aWNhbC1hbGlnbiIsIndvcmQtc3BhY2luZyJdKX0oYiksZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKGIpe3JldHVybiBhLmNvbnN1bWVMZW5ndGhPclBlcmNlbnQoYil8fGEuY29uc3VtZVRva2VuKC9eYXV0by8sYil9ZnVuY3Rpb24gZChiKXt2YXIgZD1hLmNvbnN1bWVMaXN0KFthLmlnbm9yZShhLmNvbnN1bWVUb2tlbi5iaW5kKG51bGwsL15yZWN0LykpLGEuaWdub3JlKGEuY29uc3VtZVRva2VuLmJpbmQobnVsbCwvXlwoLykpLGEuY29uc3VtZVJlcGVhdGVkLmJpbmQobnVsbCxjLC9eLC8pLGEuaWdub3JlKGEuY29uc3VtZVRva2VuLmJpbmQobnVsbCwvXlwpLykpXSxiKTtpZihkJiY0PT1kWzBdLmxlbmd0aClyZXR1cm4gZFswXX1mdW5jdGlvbiBlKGIsYyl7cmV0dXJuImF1dG8iPT1ifHwiYXV0byI9PWM/WyEwLCExLGZ1bmN0aW9uKGQpe3ZhciBlPWQ/YjpjO2lmKCJhdXRvIj09ZSlyZXR1cm4iYXV0byI7dmFyIGY9YS5tZXJnZURpbWVuc2lvbnMoZSxlKTtyZXR1cm4gZlsyXShmWzBdKX1dOmEubWVyZ2VEaW1lbnNpb25zKGIsYyl9ZnVuY3Rpb24gZihhKXtyZXR1cm4icmVjdCgiK2ErIikifXZhciBnPWEubWVyZ2VXcmFwcGVkTmVzdGVkUmVwZWF0ZWQuYmluZChudWxsLGYsZSwiLCAiKTthLnBhcnNlQm94PWQsYS5tZXJnZUJveGVzPWcsYS5hZGRQcm9wZXJ0aWVzSGFuZGxlcihkLGcsWyJjbGlwIl0pfShiKSxmdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGMoYSl7cmV0dXJuIGZ1bmN0aW9uKGIpe3ZhciBjPTA7cmV0dXJuIGEubWFwKGZ1bmN0aW9uKGEpe3JldHVybiBhPT09az9iW2MrK106YX0pfX1mdW5jdGlvbiBkKGEpe3JldHVybiBhfWZ1bmN0aW9uIGUoYil7aWYoIm5vbmUiPT0oYj1iLnRvTG93ZXJDYXNlKCkudHJpbSgpKSlyZXR1cm5bXTtmb3IodmFyIGMsZD0vXHMqKFx3KylcKChbXildKilcKS9nLGU9W10sZj0wO2M9ZC5leGVjKGIpOyl7aWYoYy5pbmRleCE9ZilyZXR1cm47Zj1jLmluZGV4K2NbMF0ubGVuZ3RoO3ZhciBnPWNbMV0saD1uW2ddO2lmKCFoKXJldHVybjt2YXIgaT1jWzJdLnNwbGl0KCIsIiksaj1oWzBdO2lmKGoubGVuZ3RoPGkubGVuZ3RoKXJldHVybjtmb3IodmFyIGs9W10sbz0wO288ai5sZW5ndGg7bysrKXt2YXIgcCxxPWlbb10scj1qW29dO2lmKHZvaWQgMD09PShwPXE/e0E6ZnVuY3Rpb24oYil7cmV0dXJuIjAiPT1iLnRyaW0oKT9tOmEucGFyc2VBbmdsZShiKX0sTjphLnBhcnNlTnVtYmVyLFQ6YS5wYXJzZUxlbmd0aE9yUGVyY2VudCxMOmEucGFyc2VMZW5ndGh9W3IudG9VcHBlckNhc2UoKV0ocSk6e2E6bSxuOmtbMF0sdDpsfVtyXSkpcmV0dXJuO2sucHVzaChwKX1pZihlLnB1c2goe3Q6ZyxkOmt9KSxkLmxhc3RJbmRleD09Yi5sZW5ndGgpcmV0dXJuIGV9fWZ1bmN0aW9uIGYoYSl7cmV0dXJuIGEudG9GaXhlZCg2KS5yZXBsYWNlKCIuMDAwMDAwIiwiIil9ZnVuY3Rpb24gZyhiLGMpe2lmKGIuZGVjb21wb3NpdGlvblBhaXIhPT1jKXtiLmRlY29tcG9zaXRpb25QYWlyPWM7dmFyIGQ9YS5tYWtlTWF0cml4RGVjb21wb3NpdGlvbihiKX1pZihjLmRlY29tcG9zaXRpb25QYWlyIT09Yil7Yy5kZWNvbXBvc2l0aW9uUGFpcj1iO3ZhciBlPWEubWFrZU1hdHJpeERlY29tcG9zaXRpb24oYyl9cmV0dXJuIG51bGw9PWRbMF18fG51bGw9PWVbMF0/W1shMV0sWyEwXSxmdW5jdGlvbihhKXtyZXR1cm4gYT9jWzBdLmQ6YlswXS5kfV06KGRbMF0ucHVzaCgwKSxlWzBdLnB1c2goMSksW2QsZSxmdW5jdGlvbihiKXt2YXIgYz1hLnF1YXQoZFswXVszXSxlWzBdWzNdLGJbNV0pO3JldHVybiBhLmNvbXBvc2VNYXRyaXgoYlswXSxiWzFdLGJbMl0sYyxiWzRdKS5tYXAoZikuam9pbigiLCIpfV0pfWZ1bmN0aW9uIGgoYSl7cmV0dXJuIGEucmVwbGFjZSgvW3h5XS8sIiIpfWZ1bmN0aW9uIGkoYSl7cmV0dXJuIGEucmVwbGFjZSgvKHh8eXx6fDNkKT8kLywiM2QiKX1mdW5jdGlvbiBqKGIsYyl7dmFyIGQ9YS5tYWtlTWF0cml4RGVjb21wb3NpdGlvbiYmITAsZT0hMTtpZighYi5sZW5ndGh8fCFjLmxlbmd0aCl7Yi5sZW5ndGh8fChlPSEwLGI9YyxjPVtdKTtmb3IodmFyIGY9MDtmPGIubGVuZ3RoO2YrKyl7dmFyIGo9YltmXS50LGs9YltmXS5kLGw9InNjYWxlIj09ai5zdWJzdHIoMCw1KT8xOjA7Yy5wdXNoKHt0OmosZDprLm1hcChmdW5jdGlvbihhKXtpZigibnVtYmVyIj09dHlwZW9mIGEpcmV0dXJuIGw7dmFyIGI9e307Zm9yKHZhciBjIGluIGEpYltjXT1sO3JldHVybiBifSl9KX19dmFyIG09ZnVuY3Rpb24oYSxiKXtyZXR1cm4icGVyc3BlY3RpdmUiPT1hJiYicGVyc3BlY3RpdmUiPT1ifHwoIm1hdHJpeCI9PWF8fCJtYXRyaXgzZCI9PWEpJiYoIm1hdHJpeCI9PWJ8fCJtYXRyaXgzZCI9PWIpfSxvPVtdLHA9W10scT1bXTtpZihiLmxlbmd0aCE9Yy5sZW5ndGgpe2lmKCFkKXJldHVybjt2YXIgcj1nKGIsYyk7bz1bclswXV0scD1bclsxXV0scT1bWyJtYXRyaXgiLFtyWzJdXV1dfWVsc2UgZm9yKHZhciBmPTA7ZjxiLmxlbmd0aDtmKyspe3ZhciBqLHM9YltmXS50LHQ9Y1tmXS50LHU9YltmXS5kLHY9Y1tmXS5kLHc9bltzXSx4PW5bdF07aWYobShzLHQpKXtpZighZClyZXR1cm47dmFyIHI9ZyhbYltmXV0sW2NbZl1dKTtvLnB1c2goclswXSkscC5wdXNoKHJbMV0pLHEucHVzaChbIm1hdHJpeCIsW3JbMl1dXSl9ZWxzZXtpZihzPT10KWo9cztlbHNlIGlmKHdbMl0mJnhbMl0mJmgocyk9PWgodCkpaj1oKHMpLHU9d1syXSh1KSx2PXhbMl0odik7ZWxzZXtpZighd1sxXXx8IXhbMV18fGkocykhPWkodCkpe2lmKCFkKXJldHVybjt2YXIgcj1nKGIsYyk7bz1bclswXV0scD1bclsxXV0scT1bWyJtYXRyaXgiLFtyWzJdXV1dO2JyZWFrfWo9aShzKSx1PXdbMV0odSksdj14WzFdKHYpfWZvcih2YXIgeT1bXSx6PVtdLEE9W10sQj0wO0I8dS5sZW5ndGg7QisrKXt2YXIgQz0ibnVtYmVyIj09dHlwZW9mIHVbQl0/YS5tZXJnZU51bWJlcnM6YS5tZXJnZURpbWVuc2lvbnMscj1DKHVbQl0sdltCXSk7eVtCXT1yWzBdLHpbQl09clsxXSxBLnB1c2goclsyXSl9by5wdXNoKHkpLHAucHVzaCh6KSxxLnB1c2goW2osQV0pfX1pZihlKXt2YXIgRD1vO289cCxwPUR9cmV0dXJuW28scCxmdW5jdGlvbihhKXtyZXR1cm4gYS5tYXAoZnVuY3Rpb24oYSxiKXt2YXIgYz1hLm1hcChmdW5jdGlvbihhLGMpe3JldHVybiBxW2JdWzFdW2NdKGEpfSkuam9pbigiLCIpO3JldHVybiJtYXRyaXgiPT1xW2JdWzBdJiYxNj09Yy5zcGxpdCgiLCIpLmxlbmd0aCYmKHFbYl1bMF09Im1hdHJpeDNkIikscVtiXVswXSsiKCIrYysiKSJ9KS5qb2luKCIgIil9XX12YXIgaz1udWxsLGw9e3B4OjB9LG09e2RlZzowfSxuPXttYXRyaXg6WyJOTk5OTk4iLFtrLGssMCwwLGssaywwLDAsMCwwLDEsMCxrLGssMCwxXSxkXSxtYXRyaXgzZDpbIk5OTk5OTk5OTk5OTk5OTk4iLGRdLHJvdGF0ZTpbIkEiXSxyb3RhdGV4OlsiQSJdLHJvdGF0ZXk6WyJBIl0scm90YXRlejpbIkEiXSxyb3RhdGUzZDpbIk5OTkEiXSxwZXJzcGVjdGl2ZTpbIkwiXSxzY2FsZTpbIk5uIixjKFtrLGssMV0pLGRdLHNjYWxleDpbIk4iLGMoW2ssMSwxXSksYyhbaywxXSldLHNjYWxleTpbIk4iLGMoWzEsaywxXSksYyhbMSxrXSldLHNjYWxlejpbIk4iLGMoWzEsMSxrXSldLHNjYWxlM2Q6WyJOTk4iLGRdLHNrZXc6WyJBYSIsbnVsbCxkXSxza2V3eDpbIkEiLG51bGwsYyhbayxtXSldLHNrZXd5OlsiQSIsbnVsbCxjKFttLGtdKV0sdHJhbnNsYXRlOlsiVHQiLGMoW2ssayxsXSksZF0sdHJhbnNsYXRleDpbIlQiLGMoW2ssbCxsXSksYyhbayxsXSldLHRyYW5zbGF0ZXk6WyJUIixjKFtsLGssbF0pLGMoW2wsa10pXSx0cmFuc2xhdGV6OlsiTCIsYyhbbCxsLGtdKV0sdHJhbnNsYXRlM2Q6WyJUVEwiLGRdfTthLmFkZFByb3BlcnRpZXNIYW5kbGVyKGUsaixbInRyYW5zZm9ybSJdKSxhLnRyYW5zZm9ybVRvU3ZnTWF0cml4PWZ1bmN0aW9uKGIpe3ZhciBjPWEudHJhbnNmb3JtTGlzdFRvTWF0cml4KGUoYikpO3JldHVybiJtYXRyaXgoIitmKGNbMF0pKyIgIitmKGNbMV0pKyIgIitmKGNbNF0pKyIgIitmKGNbNV0pKyIgIitmKGNbMTJdKSsiICIrZihjWzEzXSkrIikifX0oYiksZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKGEsYil7Yi5jb25jYXQoW2FdKS5mb3JFYWNoKGZ1bmN0aW9uKGIpe2IgaW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlJiYoZFthXT1iKSxlW2JdPWF9KX12YXIgZD17fSxlPXt9O2MoInRyYW5zZm9ybSIsWyJ3ZWJraXRUcmFuc2Zvcm0iLCJtc1RyYW5zZm9ybSJdKSxjKCJ0cmFuc2Zvcm1PcmlnaW4iLFsid2Via2l0VHJhbnNmb3JtT3JpZ2luIl0pLGMoInBlcnNwZWN0aXZlIixbIndlYmtpdFBlcnNwZWN0aXZlIl0pLGMoInBlcnNwZWN0aXZlT3JpZ2luIixbIndlYmtpdFBlcnNwZWN0aXZlT3JpZ2luIl0pLGEucHJvcGVydHlOYW1lPWZ1bmN0aW9uKGEpe3JldHVybiBkW2FdfHxhfSxhLnVucHJlZml4ZWRQcm9wZXJ0eU5hbWU9ZnVuY3Rpb24oYSl7cmV0dXJuIGVbYV18fGF9fShiKX0oKSxmdW5jdGlvbigpe2lmKHZvaWQgMD09PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLmFuaW1hdGUoW10pLm9uY2FuY2VsKXt2YXIgYTtpZih3aW5kb3cucGVyZm9ybWFuY2UmJnBlcmZvcm1hbmNlLm5vdyl2YXIgYT1mdW5jdGlvbigpe3JldHVybiBwZXJmb3JtYW5jZS5ub3coKX07ZWxzZSB2YXIgYT1mdW5jdGlvbigpe3JldHVybiBEYXRlLm5vdygpfTt2YXIgYj1mdW5jdGlvbihhLGIsYyl7dGhpcy50YXJnZXQ9YSx0aGlzLmN1cnJlbnRUaW1lPWIsdGhpcy50aW1lbGluZVRpbWU9Yyx0aGlzLnR5cGU9ImNhbmNlbCIsdGhpcy5idWJibGVzPSExLHRoaXMuY2FuY2VsYWJsZT0hMSx0aGlzLmN1cnJlbnRUYXJnZXQ9YSx0aGlzLmRlZmF1bHRQcmV2ZW50ZWQ9ITEsdGhpcy5ldmVudFBoYXNlPUV2ZW50LkFUX1RBUkdFVCx0aGlzLnRpbWVTdGFtcD1EYXRlLm5vdygpfSxjPXdpbmRvdy5FbGVtZW50LnByb3RvdHlwZS5hbmltYXRlO3dpbmRvdy5FbGVtZW50LnByb3RvdHlwZS5hbmltYXRlPWZ1bmN0aW9uKGQsZSl7dmFyIGY9Yy5jYWxsKHRoaXMsZCxlKTtmLl9jYW5jZWxIYW5kbGVycz1bXSxmLm9uY2FuY2VsPW51bGw7dmFyIGc9Zi5jYW5jZWw7Zi5jYW5jZWw9ZnVuY3Rpb24oKXtnLmNhbGwodGhpcyk7dmFyIGM9bmV3IGIodGhpcyxudWxsLGEoKSksZD10aGlzLl9jYW5jZWxIYW5kbGVycy5jb25jYXQodGhpcy5vbmNhbmNlbD9bdGhpcy5vbmNhbmNlbF06W10pO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtkLmZvckVhY2goZnVuY3Rpb24oYSl7YS5jYWxsKGMudGFyZ2V0LGMpfSl9LDApfTt2YXIgaD1mLmFkZEV2ZW50TGlzdGVuZXI7Zi5hZGRFdmVudExpc3RlbmVyPWZ1bmN0aW9uKGEsYil7ImZ1bmN0aW9uIj09dHlwZW9mIGImJiJjYW5jZWwiPT1hP3RoaXMuX2NhbmNlbEhhbmRsZXJzLnB1c2goYik6aC5jYWxsKHRoaXMsYSxiKX07dmFyIGk9Zi5yZW1vdmVFdmVudExpc3RlbmVyO3JldHVybiBmLnJlbW92ZUV2ZW50TGlzdGVuZXI9ZnVuY3Rpb24oYSxiKXtpZigiY2FuY2VsIj09YSl7dmFyIGM9dGhpcy5fY2FuY2VsSGFuZGxlcnMuaW5kZXhPZihiKTtjPj0wJiZ0aGlzLl9jYW5jZWxIYW5kbGVycy5zcGxpY2UoYywxKX1lbHNlIGkuY2FsbCh0aGlzLGEsYil9LGZ9fX0oKSxmdW5jdGlvbihhKXt2YXIgYj1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsYz1udWxsLGQ9ITE7dHJ5e3ZhciBlPWdldENvbXB1dGVkU3R5bGUoYikuZ2V0UHJvcGVydHlWYWx1ZSgib3BhY2l0eSIpLGY9IjAiPT1lPyIxIjoiMCI7Yz1iLmFuaW1hdGUoe29wYWNpdHk6W2YsZl19LHtkdXJhdGlvbjoxfSksYy5jdXJyZW50VGltZT0wLGQ9Z2V0Q29tcHV0ZWRTdHlsZShiKS5nZXRQcm9wZXJ0eVZhbHVlKCJvcGFjaXR5Iik9PWZ9Y2F0Y2goYSl7fWZpbmFsbHl7YyYmYy5jYW5jZWwoKX1pZighZCl7dmFyIGc9d2luZG93LkVsZW1lbnQucHJvdG90eXBlLmFuaW1hdGU7d2luZG93LkVsZW1lbnQucHJvdG90eXBlLmFuaW1hdGU9ZnVuY3Rpb24oYixjKXtyZXR1cm4gd2luZG93LlN5bWJvbCYmU3ltYm9sLml0ZXJhdG9yJiZBcnJheS5wcm90b3R5cGUuZnJvbSYmYltTeW1ib2wuaXRlcmF0b3JdJiYoYj1BcnJheS5mcm9tKGIpKSxBcnJheS5pc0FycmF5KGIpfHxudWxsPT09Ynx8KGI9YS5jb252ZXJ0VG9BcnJheUZvcm0oYikpLGcuY2FsbCh0aGlzLGIsYyl9fX0oYSksZnVuY3Rpb24oYSxiLGMpe2Z1bmN0aW9uIGQoYSl7dmFyIGM9Yi50aW1lbGluZTtjLmN1cnJlbnRUaW1lPWEsYy5fZGlzY2FyZEFuaW1hdGlvbnMoKSwwPT1jLl9hbmltYXRpb25zLmxlbmd0aD9mPSExOnJlcXVlc3RBbmltYXRpb25GcmFtZShkKX12YXIgZT13aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lO3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWU9ZnVuY3Rpb24oYSl7cmV0dXJuIGUoZnVuY3Rpb24oYyl7Yi50aW1lbGluZS5fdXBkYXRlQW5pbWF0aW9uc1Byb21pc2VzKCksYShjKSxiLnRpbWVsaW5lLl91cGRhdGVBbmltYXRpb25zUHJvbWlzZXMoKX0pfSxiLkFuaW1hdGlvblRpbWVsaW5lPWZ1bmN0aW9uKCl7dGhpcy5fYW5pbWF0aW9ucz1bXSx0aGlzLmN1cnJlbnRUaW1lPXZvaWQgMH0sYi5BbmltYXRpb25UaW1lbGluZS5wcm90b3R5cGU9e2dldEFuaW1hdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGlzY2FyZEFuaW1hdGlvbnMoKSx0aGlzLl9hbmltYXRpb25zLnNsaWNlKCl9LF91cGRhdGVBbmltYXRpb25zUHJvbWlzZXM6ZnVuY3Rpb24oKXtiLmFuaW1hdGlvbnNXaXRoUHJvbWlzZXM9Yi5hbmltYXRpb25zV2l0aFByb21pc2VzLmZpbHRlcihmdW5jdGlvbihhKXtyZXR1cm4gYS5fdXBkYXRlUHJvbWlzZXMoKX0pfSxfZGlzY2FyZEFuaW1hdGlvbnM6ZnVuY3Rpb24oKXt0aGlzLl91cGRhdGVBbmltYXRpb25zUHJvbWlzZXMoKSx0aGlzLl9hbmltYXRpb25zPXRoaXMuX2FuaW1hdGlvbnMuZmlsdGVyKGZ1bmN0aW9uKGEpe3JldHVybiJmaW5pc2hlZCIhPWEucGxheVN0YXRlJiYiaWRsZSIhPWEucGxheVN0YXRlfSl9LF9wbGF5OmZ1bmN0aW9uKGEpe3ZhciBjPW5ldyBiLkFuaW1hdGlvbihhLHRoaXMpO3JldHVybiB0aGlzLl9hbmltYXRpb25zLnB1c2goYyksYi5yZXN0YXJ0V2ViQW5pbWF0aW9uc05leHRUaWNrKCksYy5fdXBkYXRlUHJvbWlzZXMoKSxjLl9hbmltYXRpb24ucGxheSgpLGMuX3VwZGF0ZVByb21pc2VzKCksY30scGxheTpmdW5jdGlvbihhKXtyZXR1cm4gYSYmYS5yZW1vdmUoKSx0aGlzLl9wbGF5KGEpfX07dmFyIGY9ITE7Yi5yZXN0YXJ0V2ViQW5pbWF0aW9uc05leHRUaWNrPWZ1bmN0aW9uKCl7Znx8KGY9ITAscmVxdWVzdEFuaW1hdGlvbkZyYW1lKGQpKX07dmFyIGc9bmV3IGIuQW5pbWF0aW9uVGltZWxpbmU7Yi50aW1lbGluZT1nO3RyeXtPYmplY3QuZGVmaW5lUHJvcGVydHkod2luZG93LmRvY3VtZW50LCJ0aW1lbGluZSIse2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZ319KX1jYXRjaChhKXt9dHJ5e3dpbmRvdy5kb2N1bWVudC50aW1lbGluZT1nfWNhdGNoKGEpe319KDAsYyksZnVuY3Rpb24oYSxiLGMpe2IuYW5pbWF0aW9uc1dpdGhQcm9taXNlcz1bXSxiLkFuaW1hdGlvbj1mdW5jdGlvbihiLGMpe2lmKHRoaXMuaWQ9IiIsYiYmYi5faWQmJih0aGlzLmlkPWIuX2lkKSx0aGlzLmVmZmVjdD1iLGImJihiLl9hbmltYXRpb249dGhpcyksIWMpdGhyb3cgbmV3IEVycm9yKCJBbmltYXRpb24gd2l0aCBudWxsIHRpbWVsaW5lIGlzIG5vdCBzdXBwb3J0ZWQiKTt0aGlzLl90aW1lbGluZT1jLHRoaXMuX3NlcXVlbmNlTnVtYmVyPWEuc2VxdWVuY2VOdW1iZXIrKyx0aGlzLl9ob2xkVGltZT0wLHRoaXMuX3BhdXNlZD0hMSx0aGlzLl9pc0dyb3VwPSExLHRoaXMuX2FuaW1hdGlvbj1udWxsLHRoaXMuX2NoaWxkQW5pbWF0aW9ucz1bXSx0aGlzLl9jYWxsYmFjaz1udWxsLHRoaXMuX29sZFBsYXlTdGF0ZT0iaWRsZSIsdGhpcy5fcmVidWlsZFVuZGVybHlpbmdBbmltYXRpb24oKSx0aGlzLl9hbmltYXRpb24uY2FuY2VsKCksdGhpcy5fdXBkYXRlUHJvbWlzZXMoKX0sYi5BbmltYXRpb24ucHJvdG90eXBlPXtfdXBkYXRlUHJvbWlzZXM6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLl9vbGRQbGF5U3RhdGUsYj10aGlzLnBsYXlTdGF0ZTtyZXR1cm4gdGhpcy5fcmVhZHlQcm9taXNlJiZiIT09YSYmKCJpZGxlIj09Yj8odGhpcy5fcmVqZWN0UmVhZHlQcm9taXNlKCksdGhpcy5fcmVhZHlQcm9taXNlPXZvaWQgMCk6InBlbmRpbmciPT1hP3RoaXMuX3Jlc29sdmVSZWFkeVByb21pc2UoKToicGVuZGluZyI9PWImJih0aGlzLl9yZWFkeVByb21pc2U9dm9pZCAwKSksdGhpcy5fZmluaXNoZWRQcm9taXNlJiZiIT09YSYmKCJpZGxlIj09Yj8odGhpcy5fcmVqZWN0RmluaXNoZWRQcm9taXNlKCksdGhpcy5fZmluaXNoZWRQcm9taXNlPXZvaWQgMCk6ImZpbmlzaGVkIj09Yj90aGlzLl9yZXNvbHZlRmluaXNoZWRQcm9taXNlKCk6ImZpbmlzaGVkIj09YSYmKHRoaXMuX2ZpbmlzaGVkUHJvbWlzZT12b2lkIDApKSx0aGlzLl9vbGRQbGF5U3RhdGU9dGhpcy5wbGF5U3RhdGUsdGhpcy5fcmVhZHlQcm9taXNlfHx0aGlzLl9maW5pc2hlZFByb21pc2V9LF9yZWJ1aWxkVW5kZXJseWluZ0FuaW1hdGlvbjpmdW5jdGlvbigpe3RoaXMuX3VwZGF0ZVByb21pc2VzKCk7dmFyIGEsYyxkLGUsZj0hIXRoaXMuX2FuaW1hdGlvbjtmJiYoYT10aGlzLnBsYXliYWNrUmF0ZSxjPXRoaXMuX3BhdXNlZCxkPXRoaXMuc3RhcnRUaW1lLGU9dGhpcy5jdXJyZW50VGltZSx0aGlzLl9hbmltYXRpb24uY2FuY2VsKCksdGhpcy5fYW5pbWF0aW9uLl93cmFwcGVyPW51bGwsdGhpcy5fYW5pbWF0aW9uPW51bGwpLCghdGhpcy5lZmZlY3R8fHRoaXMuZWZmZWN0IGluc3RhbmNlb2Ygd2luZG93LktleWZyYW1lRWZmZWN0KSYmKHRoaXMuX2FuaW1hdGlvbj1iLm5ld1VuZGVybHlpbmdBbmltYXRpb25Gb3JLZXlmcmFtZUVmZmVjdCh0aGlzLmVmZmVjdCksYi5iaW5kQW5pbWF0aW9uRm9yS2V5ZnJhbWVFZmZlY3QodGhpcykpLCh0aGlzLmVmZmVjdCBpbnN0YW5jZW9mIHdpbmRvdy5TZXF1ZW5jZUVmZmVjdHx8dGhpcy5lZmZlY3QgaW5zdGFuY2VvZiB3aW5kb3cuR3JvdXBFZmZlY3QpJiYodGhpcy5fYW5pbWF0aW9uPWIubmV3VW5kZXJseWluZ0FuaW1hdGlvbkZvckdyb3VwKHRoaXMuZWZmZWN0KSxiLmJpbmRBbmltYXRpb25Gb3JHcm91cCh0aGlzKSksdGhpcy5lZmZlY3QmJnRoaXMuZWZmZWN0Ll9vbnNhbXBsZSYmYi5iaW5kQW5pbWF0aW9uRm9yQ3VzdG9tRWZmZWN0KHRoaXMpLGYmJigxIT1hJiYodGhpcy5wbGF5YmFja1JhdGU9YSksbnVsbCE9PWQ/dGhpcy5zdGFydFRpbWU9ZDpudWxsIT09ZT90aGlzLmN1cnJlbnRUaW1lPWU6bnVsbCE9PXRoaXMuX2hvbGRUaW1lJiYodGhpcy5jdXJyZW50VGltZT10aGlzLl9ob2xkVGltZSksYyYmdGhpcy5wYXVzZSgpKSx0aGlzLl91cGRhdGVQcm9taXNlcygpfSxfdXBkYXRlQ2hpbGRyZW46ZnVuY3Rpb24oKXtpZih0aGlzLmVmZmVjdCYmImlkbGUiIT10aGlzLnBsYXlTdGF0ZSl7dmFyIGE9dGhpcy5lZmZlY3QuX3RpbWluZy5kZWxheTt0aGlzLl9jaGlsZEFuaW1hdGlvbnMuZm9yRWFjaChmdW5jdGlvbihjKXt0aGlzLl9hcnJhbmdlQ2hpbGRyZW4oYyxhKSx0aGlzLmVmZmVjdCBpbnN0YW5jZW9mIHdpbmRvdy5TZXF1ZW5jZUVmZmVjdCYmKGErPWIuZ3JvdXBDaGlsZER1cmF0aW9uKGMuZWZmZWN0KSl9LmJpbmQodGhpcykpfX0sX3NldEV4dGVybmFsQW5pbWF0aW9uOmZ1bmN0aW9uKGEpe2lmKHRoaXMuZWZmZWN0JiZ0aGlzLl9pc0dyb3VwKWZvcih2YXIgYj0wO2I8dGhpcy5lZmZlY3QuY2hpbGRyZW4ubGVuZ3RoO2IrKyl0aGlzLmVmZmVjdC5jaGlsZHJlbltiXS5fYW5pbWF0aW9uPWEsdGhpcy5fY2hpbGRBbmltYXRpb25zW2JdLl9zZXRFeHRlcm5hbEFuaW1hdGlvbihhKX0sX2NvbnN0cnVjdENoaWxkQW5pbWF0aW9uczpmdW5jdGlvbigpe2lmKHRoaXMuZWZmZWN0JiZ0aGlzLl9pc0dyb3VwKXt2YXIgYT10aGlzLmVmZmVjdC5fdGltaW5nLmRlbGF5O3RoaXMuX3JlbW92ZUNoaWxkQW5pbWF0aW9ucygpLHRoaXMuZWZmZWN0LmNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24oYyl7dmFyIGQ9Yi50aW1lbGluZS5fcGxheShjKTt0aGlzLl9jaGlsZEFuaW1hdGlvbnMucHVzaChkKSxkLnBsYXliYWNrUmF0ZT10aGlzLnBsYXliYWNrUmF0ZSx0aGlzLl9wYXVzZWQmJmQucGF1c2UoKSxjLl9hbmltYXRpb249dGhpcy5lZmZlY3QuX2FuaW1hdGlvbix0aGlzLl9hcnJhbmdlQ2hpbGRyZW4oZCxhKSx0aGlzLmVmZmVjdCBpbnN0YW5jZW9mIHdpbmRvdy5TZXF1ZW5jZUVmZmVjdCYmKGErPWIuZ3JvdXBDaGlsZER1cmF0aW9uKGMpKX0uYmluZCh0aGlzKSl9fSxfYXJyYW5nZUNoaWxkcmVuOmZ1bmN0aW9uKGEsYil7bnVsbD09PXRoaXMuc3RhcnRUaW1lP2EuY3VycmVudFRpbWU9dGhpcy5jdXJyZW50VGltZS1iL3RoaXMucGxheWJhY2tSYXRlOmEuc3RhcnRUaW1lIT09dGhpcy5zdGFydFRpbWUrYi90aGlzLnBsYXliYWNrUmF0ZSYmKGEuc3RhcnRUaW1lPXRoaXMuc3RhcnRUaW1lK2IvdGhpcy5wbGF5YmFja1JhdGUpfSxnZXQgdGltZWxpbmUoKXtyZXR1cm4gdGhpcy5fdGltZWxpbmV9LGdldCBwbGF5U3RhdGUoKXtyZXR1cm4gdGhpcy5fYW5pbWF0aW9uP3RoaXMuX2FuaW1hdGlvbi5wbGF5U3RhdGU6ImlkbGUifSxnZXQgZmluaXNoZWQoKXtyZXR1cm4gd2luZG93LlByb21pc2U/KHRoaXMuX2ZpbmlzaGVkUHJvbWlzZXx8KC0xPT1iLmFuaW1hdGlvbnNXaXRoUHJvbWlzZXMuaW5kZXhPZih0aGlzKSYmYi5hbmltYXRpb25zV2l0aFByb21pc2VzLnB1c2godGhpcyksdGhpcy5fZmluaXNoZWRQcm9taXNlPW5ldyBQcm9taXNlKGZ1bmN0aW9uKGEsYil7dGhpcy5fcmVzb2x2ZUZpbmlzaGVkUHJvbWlzZT1mdW5jdGlvbigpe2EodGhpcyl9LHRoaXMuX3JlamVjdEZpbmlzaGVkUHJvbWlzZT1mdW5jdGlvbigpe2Ioe3R5cGU6RE9NRXhjZXB0aW9uLkFCT1JUX0VSUixuYW1lOiJBYm9ydEVycm9yIn0pfX0uYmluZCh0aGlzKSksImZpbmlzaGVkIj09dGhpcy5wbGF5U3RhdGUmJnRoaXMuX3Jlc29sdmVGaW5pc2hlZFByb21pc2UoKSksdGhpcy5fZmluaXNoZWRQcm9taXNlKTooY29uc29sZS53YXJuKCJBbmltYXRpb24gUHJvbWlzZXMgcmVxdWlyZSBKYXZhU2NyaXB0IFByb21pc2UgY29uc3RydWN0b3IiKSxudWxsKX0sZ2V0IHJlYWR5KCl7cmV0dXJuIHdpbmRvdy5Qcm9taXNlPyh0aGlzLl9yZWFkeVByb21pc2V8fCgtMT09Yi5hbmltYXRpb25zV2l0aFByb21pc2VzLmluZGV4T2YodGhpcykmJmIuYW5pbWF0aW9uc1dpdGhQcm9taXNlcy5wdXNoKHRoaXMpLHRoaXMuX3JlYWR5UHJvbWlzZT1uZXcgUHJvbWlzZShmdW5jdGlvbihhLGIpe3RoaXMuX3Jlc29sdmVSZWFkeVByb21pc2U9ZnVuY3Rpb24oKXthKHRoaXMpfSx0aGlzLl9yZWplY3RSZWFkeVByb21pc2U9ZnVuY3Rpb24oKXtiKHt0eXBlOkRPTUV4Y2VwdGlvbi5BQk9SVF9FUlIsbmFtZToiQWJvcnRFcnJvciJ9KX19LmJpbmQodGhpcykpLCJwZW5kaW5nIiE9PXRoaXMucGxheVN0YXRlJiZ0aGlzLl9yZXNvbHZlUmVhZHlQcm9taXNlKCkpLHRoaXMuX3JlYWR5UHJvbWlzZSk6KGNvbnNvbGUud2FybigiQW5pbWF0aW9uIFByb21pc2VzIHJlcXVpcmUgSmF2YVNjcmlwdCBQcm9taXNlIGNvbnN0cnVjdG9yIiksbnVsbCl9LGdldCBvbmZpbmlzaCgpe3JldHVybiB0aGlzLl9hbmltYXRpb24ub25maW5pc2h9LHNldCBvbmZpbmlzaChhKXt0aGlzLl9hbmltYXRpb24ub25maW5pc2g9ImZ1bmN0aW9uIj09dHlwZW9mIGE/ZnVuY3Rpb24oYil7Yi50YXJnZXQ9dGhpcyxhLmNhbGwodGhpcyxiKX0uYmluZCh0aGlzKTphfSxnZXQgb25jYW5jZWwoKXtyZXR1cm4gdGhpcy5fYW5pbWF0aW9uLm9uY2FuY2VsfSxzZXQgb25jYW5jZWwoYSl7dGhpcy5fYW5pbWF0aW9uLm9uY2FuY2VsPSJmdW5jdGlvbiI9PXR5cGVvZiBhP2Z1bmN0aW9uKGIpe2IudGFyZ2V0PXRoaXMsYS5jYWxsKHRoaXMsYil9LmJpbmQodGhpcyk6YX0sZ2V0IGN1cnJlbnRUaW1lKCl7dGhpcy5fdXBkYXRlUHJvbWlzZXMoKTt2YXIgYT10aGlzLl9hbmltYXRpb24uY3VycmVudFRpbWU7cmV0dXJuIHRoaXMuX3VwZGF0ZVByb21pc2VzKCksYX0sc2V0IGN1cnJlbnRUaW1lKGEpe3RoaXMuX3VwZGF0ZVByb21pc2VzKCksdGhpcy5fYW5pbWF0aW9uLmN1cnJlbnRUaW1lPWlzRmluaXRlKGEpP2E6TWF0aC5zaWduKGEpKk51bWJlci5NQVhfVkFMVUUsdGhpcy5fcmVnaXN0ZXIoKSx0aGlzLl9mb3JFYWNoQ2hpbGQoZnVuY3Rpb24oYixjKXtiLmN1cnJlbnRUaW1lPWEtY30pLHRoaXMuX3VwZGF0ZVByb21pc2VzKCl9LGdldCBzdGFydFRpbWUoKXtyZXR1cm4gdGhpcy5fYW5pbWF0aW9uLnN0YXJ0VGltZX0sc2V0IHN0YXJ0VGltZShhKXt0aGlzLl91cGRhdGVQcm9taXNlcygpLHRoaXMuX2FuaW1hdGlvbi5zdGFydFRpbWU9aXNGaW5pdGUoYSk/YTpNYXRoLnNpZ24oYSkqTnVtYmVyLk1BWF9WQUxVRSx0aGlzLl9yZWdpc3RlcigpLHRoaXMuX2ZvckVhY2hDaGlsZChmdW5jdGlvbihiLGMpe2Iuc3RhcnRUaW1lPWErY30pLHRoaXMuX3VwZGF0ZVByb21pc2VzKCl9LGdldCBwbGF5YmFja1JhdGUoKXtyZXR1cm4gdGhpcy5fYW5pbWF0aW9uLnBsYXliYWNrUmF0ZX0sc2V0IHBsYXliYWNrUmF0ZShhKXt0aGlzLl91cGRhdGVQcm9taXNlcygpO3ZhciBiPXRoaXMuY3VycmVudFRpbWU7dGhpcy5fYW5pbWF0aW9uLnBsYXliYWNrUmF0ZT1hLHRoaXMuX2ZvckVhY2hDaGlsZChmdW5jdGlvbihiKXtiLnBsYXliYWNrUmF0ZT1hfSksbnVsbCE9PWImJih0aGlzLmN1cnJlbnRUaW1lPWIpLHRoaXMuX3VwZGF0ZVByb21pc2VzKCl9LHBsYXk6ZnVuY3Rpb24oKXt0aGlzLl91cGRhdGVQcm9taXNlcygpLHRoaXMuX3BhdXNlZD0hMSx0aGlzLl9hbmltYXRpb24ucGxheSgpLC0xPT10aGlzLl90aW1lbGluZS5fYW5pbWF0aW9ucy5pbmRleE9mKHRoaXMpJiZ0aGlzLl90aW1lbGluZS5fYW5pbWF0aW9ucy5wdXNoKHRoaXMpLHRoaXMuX3JlZ2lzdGVyKCksYi5hd2FpdFN0YXJ0VGltZSh0aGlzKSx0aGlzLl9mb3JFYWNoQ2hpbGQoZnVuY3Rpb24oYSl7dmFyIGI9YS5jdXJyZW50VGltZTthLnBsYXkoKSxhLmN1cnJlbnRUaW1lPWJ9KSx0aGlzLl91cGRhdGVQcm9taXNlcygpfSxwYXVzZTpmdW5jdGlvbigpe3RoaXMuX3VwZGF0ZVByb21pc2VzKCksdGhpcy5jdXJyZW50VGltZSYmKHRoaXMuX2hvbGRUaW1lPXRoaXMuY3VycmVudFRpbWUpLHRoaXMuX2FuaW1hdGlvbi5wYXVzZSgpLHRoaXMuX3JlZ2lzdGVyKCksdGhpcy5fZm9yRWFjaENoaWxkKGZ1bmN0aW9uKGEpe2EucGF1c2UoKX0pLHRoaXMuX3BhdXNlZD0hMCx0aGlzLl91cGRhdGVQcm9taXNlcygpfSxmaW5pc2g6ZnVuY3Rpb24oKXt0aGlzLl91cGRhdGVQcm9taXNlcygpLHRoaXMuX2FuaW1hdGlvbi5maW5pc2goKSx0aGlzLl9yZWdpc3RlcigpLHRoaXMuX3VwZGF0ZVByb21pc2VzKCl9LGNhbmNlbDpmdW5jdGlvbigpe3RoaXMuX3VwZGF0ZVByb21pc2VzKCksdGhpcy5fYW5pbWF0aW9uLmNhbmNlbCgpLHRoaXMuX3JlZ2lzdGVyKCksdGhpcy5fcmVtb3ZlQ2hpbGRBbmltYXRpb25zKCksdGhpcy5fdXBkYXRlUHJvbWlzZXMoKX0scmV2ZXJzZTpmdW5jdGlvbigpe3RoaXMuX3VwZGF0ZVByb21pc2VzKCk7dmFyIGE9dGhpcy5jdXJyZW50VGltZTt0aGlzLl9hbmltYXRpb24ucmV2ZXJzZSgpLHRoaXMuX2ZvckVhY2hDaGlsZChmdW5jdGlvbihhKXthLnJldmVyc2UoKX0pLG51bGwhPT1hJiYodGhpcy5jdXJyZW50VGltZT1hKSx0aGlzLl91cGRhdGVQcm9taXNlcygpfSxhZGRFdmVudExpc3RlbmVyOmZ1bmN0aW9uKGEsYil7dmFyIGM9YjsiZnVuY3Rpb24iPT10eXBlb2YgYiYmKGM9ZnVuY3Rpb24oYSl7YS50YXJnZXQ9dGhpcyxiLmNhbGwodGhpcyxhKX0uYmluZCh0aGlzKSxiLl93cmFwcGVyPWMpLHRoaXMuX2FuaW1hdGlvbi5hZGRFdmVudExpc3RlbmVyKGEsYyl9LHJlbW92ZUV2ZW50TGlzdGVuZXI6ZnVuY3Rpb24oYSxiKXt0aGlzLl9hbmltYXRpb24ucmVtb3ZlRXZlbnRMaXN0ZW5lcihhLGImJmIuX3dyYXBwZXJ8fGIpfSxfcmVtb3ZlQ2hpbGRBbmltYXRpb25zOmZ1bmN0aW9uKCl7Zm9yKDt0aGlzLl9jaGlsZEFuaW1hdGlvbnMubGVuZ3RoOyl0aGlzLl9jaGlsZEFuaW1hdGlvbnMucG9wKCkuY2FuY2VsKCl9LF9mb3JFYWNoQ2hpbGQ6ZnVuY3Rpb24oYil7dmFyIGM9MDtpZih0aGlzLmVmZmVjdC5jaGlsZHJlbiYmdGhpcy5fY2hpbGRBbmltYXRpb25zLmxlbmd0aDx0aGlzLmVmZmVjdC5jaGlsZHJlbi5sZW5ndGgmJnRoaXMuX2NvbnN0cnVjdENoaWxkQW5pbWF0aW9ucygpLHRoaXMuX2NoaWxkQW5pbWF0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKGEpe2IuY2FsbCh0aGlzLGEsYyksdGhpcy5lZmZlY3QgaW5zdGFuY2VvZiB3aW5kb3cuU2VxdWVuY2VFZmZlY3QmJihjKz1hLmVmZmVjdC5hY3RpdmVEdXJhdGlvbil9LmJpbmQodGhpcykpLCJwZW5kaW5nIiE9dGhpcy5wbGF5U3RhdGUpe3ZhciBkPXRoaXMuZWZmZWN0Ll90aW1pbmcsZT10aGlzLmN1cnJlbnRUaW1lO251bGwhPT1lJiYoZT1hLmNhbGN1bGF0ZUl0ZXJhdGlvblByb2dyZXNzKGEuY2FsY3VsYXRlQWN0aXZlRHVyYXRpb24oZCksZSxkKSksKG51bGw9PWV8fGlzTmFOKGUpKSYmdGhpcy5fcmVtb3ZlQ2hpbGRBbmltYXRpb25zKCl9fX0sd2luZG93LkFuaW1hdGlvbj1iLkFuaW1hdGlvbn0oYSxjKSxmdW5jdGlvbihhLGIsYyl7ZnVuY3Rpb24gZChiKXt0aGlzLl9mcmFtZXM9YS5ub3JtYWxpemVLZXlmcmFtZXMoYil9ZnVuY3Rpb24gZSgpe2Zvcih2YXIgYT0hMTtpLmxlbmd0aDspaS5zaGlmdCgpLl91cGRhdGVDaGlsZHJlbigpLGE9ITA7cmV0dXJuIGF9dmFyIGY9ZnVuY3Rpb24oYSl7aWYoYS5fYW5pbWF0aW9uPXZvaWQgMCxhIGluc3RhbmNlb2Ygd2luZG93LlNlcXVlbmNlRWZmZWN0fHxhIGluc3RhbmNlb2Ygd2luZG93Lkdyb3VwRWZmZWN0KWZvcih2YXIgYj0wO2I8YS5jaGlsZHJlbi5sZW5ndGg7YisrKWYoYS5jaGlsZHJlbltiXSl9O2IucmVtb3ZlTXVsdGk9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPVtdLGM9MDtjPGEubGVuZ3RoO2MrKyl7dmFyIGQ9YVtjXTtkLl9wYXJlbnQ/KC0xPT1iLmluZGV4T2YoZC5fcGFyZW50KSYmYi5wdXNoKGQuX3BhcmVudCksZC5fcGFyZW50LmNoaWxkcmVuLnNwbGljZShkLl9wYXJlbnQuY2hpbGRyZW4uaW5kZXhPZihkKSwxKSxkLl9wYXJlbnQ9bnVsbCxmKGQpKTpkLl9hbmltYXRpb24mJmQuX2FuaW1hdGlvbi5lZmZlY3Q9PWQmJihkLl9hbmltYXRpb24uY2FuY2VsKCksZC5fYW5pbWF0aW9uLmVmZmVjdD1uZXcgS2V5ZnJhbWVFZmZlY3QobnVsbCxbXSksZC5fYW5pbWF0aW9uLl9jYWxsYmFjayYmKGQuX2FuaW1hdGlvbi5fY2FsbGJhY2suX2FuaW1hdGlvbj1udWxsKSxkLl9hbmltYXRpb24uX3JlYnVpbGRVbmRlcmx5aW5nQW5pbWF0aW9uKCksZihkKSl9Zm9yKGM9MDtjPGIubGVuZ3RoO2MrKyliW2NdLl9yZWJ1aWxkKCl9LGIuS2V5ZnJhbWVFZmZlY3Q9ZnVuY3Rpb24oYixjLGUsZil7cmV0dXJuIHRoaXMudGFyZ2V0PWIsdGhpcy5fcGFyZW50PW51bGwsZT1hLm51bWVyaWNUaW1pbmdUb09iamVjdChlKSx0aGlzLl90aW1pbmdJbnB1dD1hLmNsb25lVGltaW5nSW5wdXQoZSksdGhpcy5fdGltaW5nPWEubm9ybWFsaXplVGltaW5nSW5wdXQoZSksdGhpcy50aW1pbmc9YS5tYWtlVGltaW5nKGUsITEsdGhpcyksdGhpcy50aW1pbmcuX2VmZmVjdD10aGlzLCJmdW5jdGlvbiI9PXR5cGVvZiBjPyhhLmRlcHJlY2F0ZWQoIkN1c3RvbSBLZXlmcmFtZUVmZmVjdCIsIjIwMTUtMDYtMjIiLCJVc2UgS2V5ZnJhbWVFZmZlY3Qub25zYW1wbGUgaW5zdGVhZC4iKSx0aGlzLl9ub3JtYWxpemVkS2V5ZnJhbWVzPWMpOnRoaXMuX25vcm1hbGl6ZWRLZXlmcmFtZXM9bmV3IGQoYyksdGhpcy5fa2V5ZnJhbWVzPWMsdGhpcy5hY3RpdmVEdXJhdGlvbj1hLmNhbGN1bGF0ZUFjdGl2ZUR1cmF0aW9uKHRoaXMuX3RpbWluZyksdGhpcy5faWQ9Zix0aGlzfSxiLktleWZyYW1lRWZmZWN0LnByb3RvdHlwZT17Z2V0RnJhbWVzOmZ1bmN0aW9uKCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMuX25vcm1hbGl6ZWRLZXlmcmFtZXM/dGhpcy5fbm9ybWFsaXplZEtleWZyYW1lczp0aGlzLl9ub3JtYWxpemVkS2V5ZnJhbWVzLl9mcmFtZXN9LHNldCBvbnNhbXBsZShhKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5nZXRGcmFtZXMoKSl0aHJvdyBuZXcgRXJyb3IoIlNldHRpbmcgb25zYW1wbGUgb24gY3VzdG9tIGVmZmVjdCBLZXlmcmFtZUVmZmVjdCBpcyBub3Qgc3VwcG9ydGVkLiIpO3RoaXMuX29uc2FtcGxlPWEsdGhpcy5fYW5pbWF0aW9uJiZ0aGlzLl9hbmltYXRpb24uX3JlYnVpbGRVbmRlcmx5aW5nQW5pbWF0aW9uKCl9LGdldCBwYXJlbnQoKXtyZXR1cm4gdGhpcy5fcGFyZW50fSxjbG9uZTpmdW5jdGlvbigpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLmdldEZyYW1lcygpKXRocm93IG5ldyBFcnJvcigiQ2xvbmluZyBjdXN0b20gZWZmZWN0cyBpcyBub3Qgc3VwcG9ydGVkLiIpO3ZhciBiPW5ldyBLZXlmcmFtZUVmZmVjdCh0aGlzLnRhcmdldCxbXSxhLmNsb25lVGltaW5nSW5wdXQodGhpcy5fdGltaW5nSW5wdXQpLHRoaXMuX2lkKTtyZXR1cm4gYi5fbm9ybWFsaXplZEtleWZyYW1lcz10aGlzLl9ub3JtYWxpemVkS2V5ZnJhbWVzLGIuX2tleWZyYW1lcz10aGlzLl9rZXlmcmFtZXMsYn0scmVtb3ZlOmZ1bmN0aW9uKCl7Yi5yZW1vdmVNdWx0aShbdGhpc10pfX07dmFyIGc9RWxlbWVudC5wcm90b3R5cGUuYW5pbWF0ZTtFbGVtZW50LnByb3RvdHlwZS5hbmltYXRlPWZ1bmN0aW9uKGEsYyl7dmFyIGQ9IiI7cmV0dXJuIGMmJmMuaWQmJihkPWMuaWQpLGIudGltZWxpbmUuX3BsYXkobmV3IGIuS2V5ZnJhbWVFZmZlY3QodGhpcyxhLGMsZCkpfTt2YXIgaD1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiLCJkaXYiKTtiLm5ld1VuZGVybHlpbmdBbmltYXRpb25Gb3JLZXlmcmFtZUVmZmVjdD1mdW5jdGlvbihhKXtpZihhKXt2YXIgYj1hLnRhcmdldHx8aCxjPWEuX2tleWZyYW1lczsiZnVuY3Rpb24iPT10eXBlb2YgYyYmKGM9W10pO3ZhciBkPWEuX3RpbWluZ0lucHV0O2QuaWQ9YS5faWR9ZWxzZSB2YXIgYj1oLGM9W10sZD0wO3JldHVybiBnLmFwcGx5KGIsW2MsZF0pfSxiLmJpbmRBbmltYXRpb25Gb3JLZXlmcmFtZUVmZmVjdD1mdW5jdGlvbihhKXthLmVmZmVjdCYmImZ1bmN0aW9uIj09dHlwZW9mIGEuZWZmZWN0Ll9ub3JtYWxpemVkS2V5ZnJhbWVzJiZiLmJpbmRBbmltYXRpb25Gb3JDdXN0b21FZmZlY3QoYSl9O3ZhciBpPVtdO2IuYXdhaXRTdGFydFRpbWU9ZnVuY3Rpb24oYSl7bnVsbD09PWEuc3RhcnRUaW1lJiZhLl9pc0dyb3VwJiYoMD09aS5sZW5ndGgmJnJlcXVlc3RBbmltYXRpb25GcmFtZShlKSxpLnB1c2goYSkpfTt2YXIgaj13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZTtPYmplY3QuZGVmaW5lUHJvcGVydHkod2luZG93LCJnZXRDb21wdXRlZFN0eWxlIix7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsdmFsdWU6ZnVuY3Rpb24oKXtiLnRpbWVsaW5lLl91cGRhdGVBbmltYXRpb25zUHJvbWlzZXMoKTt2YXIgYT1qLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gZSgpJiYoYT1qLmFwcGx5KHRoaXMsYXJndW1lbnRzKSksYi50aW1lbGluZS5fdXBkYXRlQW5pbWF0aW9uc1Byb21pc2VzKCksYX19KSx3aW5kb3cuS2V5ZnJhbWVFZmZlY3Q9Yi5LZXlmcmFtZUVmZmVjdCx3aW5kb3cuRWxlbWVudC5wcm90b3R5cGUuZ2V0QW5pbWF0aW9ucz1mdW5jdGlvbigpe3JldHVybiBkb2N1bWVudC50aW1lbGluZS5nZXRBbmltYXRpb25zKCkuZmlsdGVyKGZ1bmN0aW9uKGEpe3JldHVybiBudWxsIT09YS5lZmZlY3QmJmEuZWZmZWN0LnRhcmdldD09dGhpc30uYmluZCh0aGlzKSl9fShhLGMpLGZ1bmN0aW9uKGEsYixjKXtmdW5jdGlvbiBkKGEpe2EuX3JlZ2lzdGVyZWR8fChhLl9yZWdpc3RlcmVkPSEwLGcucHVzaChhKSxofHwoaD0hMCxyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZSkpKX1mdW5jdGlvbiBlKGEpe3ZhciBiPWc7Zz1bXSxiLnNvcnQoZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5fc2VxdWVuY2VOdW1iZXItYi5fc2VxdWVuY2VOdW1iZXJ9KSxiPWIuZmlsdGVyKGZ1bmN0aW9uKGEpe2EoKTt2YXIgYj1hLl9hbmltYXRpb24/YS5fYW5pbWF0aW9uLnBsYXlTdGF0ZToiaWRsZSI7cmV0dXJuInJ1bm5pbmciIT1iJiYicGVuZGluZyIhPWImJihhLl9yZWdpc3RlcmVkPSExKSxhLl9yZWdpc3RlcmVkfSksZy5wdXNoLmFwcGx5KGcsYiksZy5sZW5ndGg/KGg9ITAscmVxdWVzdEFuaW1hdGlvbkZyYW1lKGUpKTpoPSExfXZhciBmPShkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiLCJkaXYiKSwwKTtiLmJpbmRBbmltYXRpb25Gb3JDdXN0b21FZmZlY3Q9ZnVuY3Rpb24oYil7dmFyIGMsZT1iLmVmZmVjdC50YXJnZXQsZz0iZnVuY3Rpb24iPT10eXBlb2YgYi5lZmZlY3QuZ2V0RnJhbWVzKCk7Yz1nP2IuZWZmZWN0LmdldEZyYW1lcygpOmIuZWZmZWN0Ll9vbnNhbXBsZTt2YXIgaD1iLmVmZmVjdC50aW1pbmcsaT1udWxsO2g9YS5ub3JtYWxpemVUaW1pbmdJbnB1dChoKTt2YXIgaj1mdW5jdGlvbigpe3ZhciBkPWouX2FuaW1hdGlvbj9qLl9hbmltYXRpb24uY3VycmVudFRpbWU6bnVsbDtudWxsIT09ZCYmKGQ9YS5jYWxjdWxhdGVJdGVyYXRpb25Qcm9ncmVzcyhhLmNhbGN1bGF0ZUFjdGl2ZUR1cmF0aW9uKGgpLGQsaCksaXNOYU4oZCkmJihkPW51bGwpKSxkIT09aSYmKGc/YyhkLGUsYi5lZmZlY3QpOmMoZCxiLmVmZmVjdCxiLmVmZmVjdC5fYW5pbWF0aW9uKSksaT1kfTtqLl9hbmltYXRpb249YixqLl9yZWdpc3RlcmVkPSExLGouX3NlcXVlbmNlTnVtYmVyPWYrKyxiLl9jYWxsYmFjaz1qLGQoail9O3ZhciBnPVtdLGg9ITE7Yi5BbmltYXRpb24ucHJvdG90eXBlLl9yZWdpc3Rlcj1mdW5jdGlvbigpe3RoaXMuX2NhbGxiYWNrJiZkKHRoaXMuX2NhbGxiYWNrKX19KGEsYyksZnVuY3Rpb24oYSxiLGMpe2Z1bmN0aW9uIGQoYSl7cmV0dXJuIGEuX3RpbWluZy5kZWxheSthLmFjdGl2ZUR1cmF0aW9uK2EuX3RpbWluZy5lbmREZWxheX1mdW5jdGlvbiBlKGIsYyxkKXt0aGlzLl9pZD1kLHRoaXMuX3BhcmVudD1udWxsLHRoaXMuY2hpbGRyZW49Ynx8W10sdGhpcy5fcmVwYXJlbnQodGhpcy5jaGlsZHJlbiksYz1hLm51bWVyaWNUaW1pbmdUb09iamVjdChjKSx0aGlzLl90aW1pbmdJbnB1dD1hLmNsb25lVGltaW5nSW5wdXQoYyksdGhpcy5fdGltaW5nPWEubm9ybWFsaXplVGltaW5nSW5wdXQoYywhMCksdGhpcy50aW1pbmc9YS5tYWtlVGltaW5nKGMsITAsdGhpcyksdGhpcy50aW1pbmcuX2VmZmVjdD10aGlzLCJhdXRvIj09PXRoaXMuX3RpbWluZy5kdXJhdGlvbiYmKHRoaXMuX3RpbWluZy5kdXJhdGlvbj10aGlzLmFjdGl2ZUR1cmF0aW9uKX13aW5kb3cuU2VxdWVuY2VFZmZlY3Q9ZnVuY3Rpb24oKXtlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sd2luZG93Lkdyb3VwRWZmZWN0PWZ1bmN0aW9uKCl7ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LGUucHJvdG90eXBlPXtfaXNBbmNlc3RvcjpmdW5jdGlvbihhKXtmb3IodmFyIGI9dGhpcztudWxsIT09Yjspe2lmKGI9PWEpcmV0dXJuITA7Yj1iLl9wYXJlbnR9cmV0dXJuITF9LF9yZWJ1aWxkOmZ1bmN0aW9uKCl7Zm9yKHZhciBhPXRoaXM7YTspImF1dG8iPT09YS50aW1pbmcuZHVyYXRpb24mJihhLl90aW1pbmcuZHVyYXRpb249YS5hY3RpdmVEdXJhdGlvbiksYT1hLl9wYXJlbnQ7dGhpcy5fYW5pbWF0aW9uJiZ0aGlzLl9hbmltYXRpb24uX3JlYnVpbGRVbmRlcmx5aW5nQW5pbWF0aW9uKCl9LF9yZXBhcmVudDpmdW5jdGlvbihhKXtiLnJlbW92ZU11bHRpKGEpO2Zvcih2YXIgYz0wO2M8YS5sZW5ndGg7YysrKWFbY10uX3BhcmVudD10aGlzfSxfcHV0Q2hpbGQ6ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9Yj8iQ2Fubm90IGFwcGVuZCBhbiBhbmNlc3RvciBvciBzZWxmIjoiQ2Fubm90IHByZXBlbmQgYW4gYW5jZXN0b3Igb3Igc2VsZiIsZD0wO2Q8YS5sZW5ndGg7ZCsrKWlmKHRoaXMuX2lzQW5jZXN0b3IoYVtkXSkpdGhyb3d7dHlwZTpET01FeGNlcHRpb24uSElFUkFSQ0hZX1JFUVVFU1RfRVJSLG5hbWU6IkhpZXJhcmNoeVJlcXVlc3RFcnJvciIsbWVzc2FnZTpjfTtmb3IodmFyIGQ9MDtkPGEubGVuZ3RoO2QrKyliP3RoaXMuY2hpbGRyZW4ucHVzaChhW2RdKTp0aGlzLmNoaWxkcmVuLnVuc2hpZnQoYVtkXSk7dGhpcy5fcmVwYXJlbnQoYSksdGhpcy5fcmVidWlsZCgpfSxhcHBlbmQ6ZnVuY3Rpb24oKXt0aGlzLl9wdXRDaGlsZChhcmd1bWVudHMsITApfSxwcmVwZW5kOmZ1bmN0aW9uKCl7dGhpcy5fcHV0Q2hpbGQoYXJndW1lbnRzLCExKX0sZ2V0IHBhcmVudCgpe3JldHVybiB0aGlzLl9wYXJlbnR9LGdldCBmaXJzdENoaWxkKCl7cmV0dXJuIHRoaXMuY2hpbGRyZW4ubGVuZ3RoP3RoaXMuY2hpbGRyZW5bMF06bnVsbH0sZ2V0IGxhc3RDaGlsZCgpe3JldHVybiB0aGlzLmNoaWxkcmVuLmxlbmd0aD90aGlzLmNoaWxkcmVuW3RoaXMuY2hpbGRyZW4ubGVuZ3RoLTFdOm51bGx9LGNsb25lOmZ1bmN0aW9uKCl7Zm9yKHZhciBiPWEuY2xvbmVUaW1pbmdJbnB1dCh0aGlzLl90aW1pbmdJbnB1dCksYz1bXSxkPTA7ZDx0aGlzLmNoaWxkcmVuLmxlbmd0aDtkKyspYy5wdXNoKHRoaXMuY2hpbGRyZW5bZF0uY2xvbmUoKSk7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBHcm91cEVmZmVjdD9uZXcgR3JvdXBFZmZlY3QoYyxiKTpuZXcgU2VxdWVuY2VFZmZlY3QoYyxiKX0scmVtb3ZlOmZ1bmN0aW9uKCl7Yi5yZW1vdmVNdWx0aShbdGhpc10pfX0sd2luZG93LlNlcXVlbmNlRWZmZWN0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGUucHJvdG90eXBlKSxPYmplY3QuZGVmaW5lUHJvcGVydHkod2luZG93LlNlcXVlbmNlRWZmZWN0LnByb3RvdHlwZSwiYWN0aXZlRHVyYXRpb24iLHtnZXQ6ZnVuY3Rpb24oKXt2YXIgYT0wO3JldHVybiB0aGlzLmNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24oYil7YSs9ZChiKX0pLE1hdGgubWF4KGEsMCl9fSksd2luZG93Lkdyb3VwRWZmZWN0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGUucHJvdG90eXBlKSxPYmplY3QuZGVmaW5lUHJvcGVydHkod2luZG93Lkdyb3VwRWZmZWN0LnByb3RvdHlwZSwiYWN0aXZlRHVyYXRpb24iLHtnZXQ6ZnVuY3Rpb24oKXt2YXIgYT0wO3JldHVybiB0aGlzLmNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24oYil7YT1NYXRoLm1heChhLGQoYikpfSksYX19KSxiLm5ld1VuZGVybHlpbmdBbmltYXRpb25Gb3JHcm91cD1mdW5jdGlvbihjKXt2YXIgZCxlPW51bGwsZj1mdW5jdGlvbihiKXt2YXIgYz1kLl93cmFwcGVyO2lmKGMmJiJwZW5kaW5nIiE9Yy5wbGF5U3RhdGUmJmMuZWZmZWN0KXJldHVybiBudWxsPT1iP3ZvaWQgYy5fcmVtb3ZlQ2hpbGRBbmltYXRpb25zKCk6MD09YiYmYy5wbGF5YmFja1JhdGU8MCYmKGV8fChlPWEubm9ybWFsaXplVGltaW5nSW5wdXQoYy5lZmZlY3QudGltaW5nKSksYj1hLmNhbGN1bGF0ZUl0ZXJhdGlvblByb2dyZXNzKGEuY2FsY3VsYXRlQWN0aXZlRHVyYXRpb24oZSksLTEsZSksaXNOYU4oYil8fG51bGw9PWIpPyhjLl9mb3JFYWNoQ2hpbGQoZnVuY3Rpb24oYSl7YS5jdXJyZW50VGltZT0tMX0pLHZvaWQgYy5fcmVtb3ZlQ2hpbGRBbmltYXRpb25zKCkpOnZvaWQgMH0sZz1uZXcgS2V5ZnJhbWVFZmZlY3QobnVsbCxbXSxjLl90aW1pbmcsYy5faWQpO3JldHVybiBnLm9uc2FtcGxlPWYsZD1iLnRpbWVsaW5lLl9wbGF5KGcpfSxiLmJpbmRBbmltYXRpb25Gb3JHcm91cD1mdW5jdGlvbihhKXthLl9hbmltYXRpb24uX3dyYXBwZXI9YSxhLl9pc0dyb3VwPSEwLGIuYXdhaXRTdGFydFRpbWUoYSksYS5fY29uc3RydWN0Q2hpbGRBbmltYXRpb25zKCksYS5fc2V0RXh0ZXJuYWxBbmltYXRpb24oYSl9LGIuZ3JvdXBDaGlsZER1cmF0aW9uPWR9KGEsYyl9KCk7CgohKGZ1bmN0aW9uKCl7Ci8qISAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAgQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uCgogICAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55CiAgICBwdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQuCgogICAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEgKICAgIFJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWQogICAgQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgRElSRUNULAogICAgSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NCiAgICBMT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUgogICAgT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUgogICAgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS4KICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCmZ1bmN0aW9uIHQodCxlLG4saSl7dmFyIHIsbz1hcmd1bWVudHMubGVuZ3RoLGE9bzwzP2U6bnVsbD09PWk/aT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsbik6aTtpZigib2JqZWN0Ij09dHlwZW9mIFJlZmxlY3QmJiJmdW5jdGlvbiI9PXR5cGVvZiBSZWZsZWN0LmRlY29yYXRlKWE9UmVmbGVjdC5kZWNvcmF0ZSh0LGUsbixpKTtlbHNlIGZvcih2YXIgcz10Lmxlbmd0aC0xO3M+PTA7cy0tKShyPXRbc10pJiYoYT0obzwzP3IoYSk6bz4zP3IoZSxuLGEpOnIoZSxuKSl8fGEpO3JldHVybiBvPjMmJmEmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4sYSksYX1mdW5jdGlvbiBlKHQsZSl7aWYoIm9iamVjdCI9PXR5cGVvZiBSZWZsZWN0JiYiZnVuY3Rpb24iPT10eXBlb2YgUmVmbGVjdC5tZXRhZGF0YSlyZXR1cm4gUmVmbGVjdC5tZXRhZGF0YSh0LGUpfWZ1bmN0aW9uIG4odCxlLG4saSl7cmV0dXJuIG5ldyhufHwobj1Qcm9taXNlKSkoKGZ1bmN0aW9uKHIsbyl7ZnVuY3Rpb24gYSh0KXt0cnl7bChpLm5leHQodCkpfWNhdGNoKHQpe28odCl9fWZ1bmN0aW9uIHModCl7dHJ5e2woaS50aHJvdyh0KSl9Y2F0Y2godCl7byh0KX19ZnVuY3Rpb24gbCh0KXt0LmRvbmU/cih0LnZhbHVlKTooZnVuY3Rpb24gZSh0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIG4/dDpuZXcgbigoZnVuY3Rpb24oZSl7ZSh0KX0pKX0pKHQudmFsdWUpLnRoZW4oYSxzKX1sKChpPWkuYXBwbHkodCxlfHxbXSkpLm5leHQoKSl9KSl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAxNiBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICAgKiBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgICAqIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kCiAgICAgKiBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5CiAgICAgKiBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5CiAgICAgKiBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQCiAgICAgKiByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAgKi9mdW5jdGlvbiBpKHQpe3JldHVybiBlPT57aWYodClpZihlLmhhc093blByb3BlcnR5KCJpcyIpKXtpZih0IT09ZS5pcyl0aHJvdyBuZXcgRXJyb3IoYGN1c3RvbSBlbGVtZW50IHRhZyBuYW1lcyBkbyBub3QgbWF0Y2g6ICgke3R9ICE9PSAke2UuaXN9KWApfWVsc2UgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsImlzIix7dmFsdWU6dH0pO3dpbmRvdy5jdXN0b21FbGVtZW50cy5kZWZpbmUoZS5pcyxlKX19ZnVuY3Rpb24gcih0LGUsbil7dC5jb25zdHJ1Y3Rvci5oYXNPd25Qcm9wZXJ0eSgicHJvcGVydGllcyIpfHxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5jb25zdHJ1Y3RvciwicHJvcGVydGllcyIse3ZhbHVlOnt9fSksdC5jb25zdHJ1Y3Rvci5wcm9wZXJ0aWVzW2VdPU9iamVjdC5hc3NpZ24oe30sdC5jb25zdHJ1Y3Rvci5wcm9wZXJ0aWVzW2VdLG4pfWZ1bmN0aW9uIG8odCl7cmV0dXJuKGUsbik9PntyKGUsbix0KX19ZnVuY3Rpb24gYSguLi50KXtyZXR1cm4oZSxuKT0+e2UuY29uc3RydWN0b3IuaGFzT3duUHJvcGVydHkoIm9ic2VydmVycyIpfHxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5jb25zdHJ1Y3Rvciwib2JzZXJ2ZXJzIix7dmFsdWU6W119KSxlLmNvbnN0cnVjdG9yLm9ic2VydmVycy5wdXNoKGAke259KCR7dC5qb2luKCIsIil9KWApfX1mdW5jdGlvbiBzKHQsLi4uZSl7cmV0dXJuKG4saSxvKT0+e2NvbnN0IGE9YF9fY29tcHV0ZSR7aX1gO09iamVjdC5kZWZpbmVQcm9wZXJ0eShuLGEse3ZhbHVlOm8uZ2V0fSksby5nZXQ9dm9pZCAwO3IobixpLHtjb21wdXRlZDpgJHthfSgke1t0LC4uLmVdLmpvaW4oIiwiKX0pYH0pfX0KLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi93aW5kb3cuSlNDb21waWxlcl9yZW5hbWVQcm9wZXJ0eT1mdW5jdGlvbih0LGUpe3JldHVybiB0fTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KbGV0IGwsYyx1PS8odXJsXCgpKFteKV0qKShcKSkvZyxoPS8oXlwvW15cL10pfCheIyl8KF5bXHctXGRdKjopLztmdW5jdGlvbiBkKHQsZSl7aWYodCYmaC50ZXN0KHQpKXJldHVybiB0O2lmKCIvLyI9PT10KXJldHVybiB0O2lmKHZvaWQgMD09PWwpe2w9ITE7dHJ5e2NvbnN0IHQ9bmV3IFVSTCgiYiIsImh0dHA6Ly9hIik7dC5wYXRobmFtZT0iYyUyMGQiLGw9Imh0dHA6Ly9hL2MlMjBkIj09PXQuaHJlZn1jYXRjaCh0KXt9fWlmKGV8fChlPWRvY3VtZW50LmJhc2VVUkl8fHdpbmRvdy5sb2NhdGlvbi5ocmVmKSxsKXRyeXtyZXR1cm4gbmV3IFVSTCh0LGUpLmhyZWZ9Y2F0Y2goZSl7cmV0dXJuIHR9cmV0dXJuIGN8fChjPWRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudCgidGVtcCIpLGMuYmFzZT1jLmNyZWF0ZUVsZW1lbnQoImJhc2UiKSxjLmhlYWQuYXBwZW5kQ2hpbGQoYy5iYXNlKSxjLmFuY2hvcj1jLmNyZWF0ZUVsZW1lbnQoImEiKSxjLmJvZHkuYXBwZW5kQ2hpbGQoYy5hbmNob3IpKSxjLmJhc2UuaHJlZj1lLGMuYW5jaG9yLmhyZWY9dCxjLmFuY2hvci5ocmVmfHx0fWZ1bmN0aW9uIHAodCxlKXtyZXR1cm4gdC5yZXBsYWNlKHUsKGZ1bmN0aW9uKHQsbixpLHIpe3JldHVybiBuKyInIitkKGkucmVwbGFjZSgvWyInXS9nLCIiKSxlKSsiJyIrcn0pKX1mdW5jdGlvbiBmKHQpe3JldHVybiB0LnN1YnN0cmluZygwLHQubGFzdEluZGV4T2YoIi8iKSsxKX0KLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi9jb25zdCBtPSF3aW5kb3cuU2hhZHlET018fCF3aW5kb3cuU2hhZHlET00uaW5Vc2U7Qm9vbGVhbighd2luZG93LlNoYWR5Q1NTfHx3aW5kb3cuU2hhZHlDU1MubmF0aXZlQ3NzKTtjb25zdCBnPW0mJiJhZG9wdGVkU3R5bGVTaGVldHMiaW4gRG9jdW1lbnQucHJvdG90eXBlJiYicmVwbGFjZVN5bmMiaW4gQ1NTU3R5bGVTaGVldC5wcm90b3R5cGUmJigoKT0+e3RyeXtjb25zdCB0PW5ldyBDU1NTdHlsZVNoZWV0O3QucmVwbGFjZVN5bmMoIiIpO2NvbnN0IGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7cmV0dXJuIGUuYXR0YWNoU2hhZG93KHttb2RlOiJvcGVuIn0pLGUuc2hhZG93Um9vdC5hZG9wdGVkU3R5bGVTaGVldHM9W3RdLGUuc2hhZG93Um9vdC5hZG9wdGVkU3R5bGVTaGVldHNbMF09PT10fWNhdGNoKHQpe3JldHVybiExfX0pKCk7bGV0IF89d2luZG93LlBvbHltZXImJndpbmRvdy5Qb2x5bWVyLnJvb3RQYXRofHxmKGRvY3VtZW50LmJhc2VVUkl8fHdpbmRvdy5sb2NhdGlvbi5ocmVmKSx5PXdpbmRvdy5Qb2x5bWVyJiZ3aW5kb3cuUG9seW1lci5zYW5pdGl6ZURPTVZhbHVlfHx2b2lkIDAsdj13aW5kb3cuUG9seW1lciYmd2luZG93LlBvbHltZXIuc2V0UGFzc2l2ZVRvdWNoR2VzdHVyZXN8fCExLGI9d2luZG93LlBvbHltZXImJndpbmRvdy5Qb2x5bWVyLnN0cmljdFRlbXBsYXRlUG9saWN5fHwhMSx4PXdpbmRvdy5Qb2x5bWVyJiZ3aW5kb3cuUG9seW1lci5hbGxvd1RlbXBsYXRlRnJvbURvbU1vZHVsZXx8ITEsdz13aW5kb3cuUG9seW1lciYmd2luZG93LlBvbHltZXIubGVnYWN5T3B0aW1pemF0aW9uc3x8ITEsUz13aW5kb3cuUG9seW1lciYmd2luZG93LlBvbHltZXIubGVnYWN5V2FybmluZ3N8fCExLE09d2luZG93LlBvbHltZXImJndpbmRvdy5Qb2x5bWVyLnN5bmNJbml0aWFsUmVuZGVyfHwhMSxFPXdpbmRvdy5Qb2x5bWVyJiZ3aW5kb3cuUG9seW1lci5sZWdhY3lVbmRlZmluZWR8fCExLFQ9d2luZG93LlBvbHltZXImJndpbmRvdy5Qb2x5bWVyLm9yZGVyZWRDb21wdXRlZHx8ITEsQz13aW5kb3cuUG9seW1lciYmd2luZG93LlBvbHltZXIucmVtb3ZlTmVzdGVkVGVtcGxhdGVzfHwhMSxBPXdpbmRvdy5Qb2x5bWVyJiZ3aW5kb3cuUG9seW1lci5mYXN0RG9tSWZ8fCExLGs9d2luZG93LlBvbHltZXImJndpbmRvdy5Qb2x5bWVyLnN1cHByZXNzVGVtcGxhdGVOb3RpZmljYXRpb25zfHwhMSxMPXdpbmRvdy5Qb2x5bWVyJiZ3aW5kb3cuUG9seW1lci5sZWdhY3lOb09ic2VydmVkQXR0cmlidXRlc3x8ITEsUD13aW5kb3cuUG9seW1lciYmd2luZG93LlBvbHltZXIudXNlQWRvcHRlZFN0eWxlU2hlZXRzV2l0aEJ1aWx0Q1NTfHwhMSxOPTA7Y29uc3QgST1mdW5jdGlvbih0KXtsZXQgZT10Ll9fbWl4aW5BcHBsaWNhdGlvbnM7ZXx8KGU9bmV3IFdlYWtNYXAsdC5fX21peGluQXBwbGljYXRpb25zPWUpO2xldCBuPU4rKztyZXR1cm4gZnVuY3Rpb24gaShyKXtsZXQgbz1yLl9fbWl4aW5TZXQ7aWYobyYmb1tuXSlyZXR1cm4gcjtsZXQgYT1lLHM9YS5nZXQocik7aWYoIXMpe3M9dChyKSxhLnNldChyLHMpO2xldCBlPU9iamVjdC5jcmVhdGUocy5fX21peGluU2V0fHxvfHxudWxsKTtlW25dPSEwLHMuX19taXhpblNldD1lfXJldHVybiBzfX07Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovbGV0IFI9e30sTz17fTtmdW5jdGlvbiB6KHQsZSl7Ult0XT1PW3QudG9Mb3dlckNhc2UoKV09ZX1mdW5jdGlvbiBEKHQpe3JldHVybiBSW3RdfHxPW3QudG9Mb3dlckNhc2UoKV19Y2xhc3MgQiBleHRlbmRzIEhUTUxFbGVtZW50e3N0YXRpYyBnZXQgb2JzZXJ2ZWRBdHRyaWJ1dGVzKCl7cmV0dXJuWyJpZCJdfXN0YXRpYyBpbXBvcnQodCxlKXtpZih0KXtsZXQgbj1EKHQpO3JldHVybiBuJiZlP24ucXVlcnlTZWxlY3RvcihlKTpufXJldHVybiBudWxsfWF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayh0LGUsbixpKXtlIT09biYmdGhpcy5yZWdpc3RlcigpfWdldCBhc3NldHBhdGgoKXtpZighdGhpcy5fX2Fzc2V0cGF0aCl7Y29uc3QgdD13aW5kb3cuSFRNTEltcG9ydHMmJkhUTUxJbXBvcnRzLmltcG9ydEZvckVsZW1lbnQ/SFRNTEltcG9ydHMuaW1wb3J0Rm9yRWxlbWVudCh0aGlzKXx8ZG9jdW1lbnQ6dGhpcy5vd25lckRvY3VtZW50LGU9ZCh0aGlzLmdldEF0dHJpYnV0ZSgiYXNzZXRwYXRoIil8fCIiLHQuYmFzZVVSSSk7dGhpcy5fX2Fzc2V0cGF0aD1mKGUpfXJldHVybiB0aGlzLl9fYXNzZXRwYXRofXJlZ2lzdGVyKHQpe2lmKHQ9dHx8dGhpcy5pZCl7aWYoYiYmdm9pZCAwIT09RCh0KSl0aHJvdyB6KHQsbnVsbCksbmV3IEVycm9yKGBzdHJpY3RUZW1wbGF0ZVBvbGljeTogZG9tLW1vZHVsZSAke3R9IHJlLXJlZ2lzdGVyZWRgKTt0aGlzLmlkPXQseih0LHRoaXMpLChmdW5jdGlvbiBlKHQpe3QucXVlcnlTZWxlY3Rvcigic3R5bGUiKSYmY29uc29sZS53YXJuKCJkb20tbW9kdWxlICVzIGhhcyBzdHlsZSBvdXRzaWRlIHRlbXBsYXRlIix0LmlkKX0pKHRoaXMpfX19Qi5wcm90b3R5cGUubW9kdWxlcz1SLGN1c3RvbUVsZW1lbnRzLmRlZmluZSgiZG9tLW1vZHVsZSIsQik7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNvbnN0IEg9InNoYWR5LXVuc2NvcGVkIjtmdW5jdGlvbiBGKHQpe3JldHVybiBCLmltcG9ydCh0KX1mdW5jdGlvbiBWKHQpe2NvbnN0IGU9cCgodC5ib2R5P3QuYm9keTp0KS50ZXh0Q29udGVudCx0LmJhc2VVUkkpLG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTtyZXR1cm4gbi50ZXh0Q29udGVudD1lLG59ZnVuY3Rpb24gVSh0KXtjb25zdCBlPXQudHJpbSgpLnNwbGl0KC9ccysvKSxuPVtdO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKW4ucHVzaCguLi5qKGVbdF0pKTtyZXR1cm4gbn1mdW5jdGlvbiBqKHQpe2NvbnN0IGU9Rih0KTtpZighZSlyZXR1cm4gY29uc29sZS53YXJuKCJDb3VsZCBub3QgZmluZCBzdHlsZSBkYXRhIGluIG1vZHVsZSBuYW1lZCIsdCksW107aWYodm9pZCAwPT09ZS5fc3R5bGVzKXtjb25zdCB0PVtdO3QucHVzaCguLi5XKGUpKTtjb25zdCBuPWUucXVlcnlTZWxlY3RvcigidGVtcGxhdGUiKTtuJiZ0LnB1c2goLi4uRyhuLGUuYXNzZXRwYXRoKSksZS5fc3R5bGVzPXR9cmV0dXJuIGUuX3N0eWxlc31mdW5jdGlvbiBHKHQsZSl7aWYoIXQuX3N0eWxlcyl7Y29uc3Qgbj1bXSxpPXQuY29udGVudC5xdWVyeVNlbGVjdG9yQWxsKCJzdHlsZSIpO2ZvcihsZXQgdD0wO3Q8aS5sZW5ndGg7dCsrKXtsZXQgcj1pW3RdLG89ci5nZXRBdHRyaWJ1dGUoImluY2x1ZGUiKTtvJiZuLnB1c2goLi4uVShvKS5maWx0ZXIoKGZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gbi5pbmRleE9mKHQpPT09ZX0pKSksZSYmKHIudGV4dENvbnRlbnQ9cChyLnRleHRDb250ZW50LGUpKSxuLnB1c2gocil9dC5fc3R5bGVzPW59cmV0dXJuIHQuX3N0eWxlc31mdW5jdGlvbiBXKHQpe2NvbnN0IGU9W10sbj10LnF1ZXJ5U2VsZWN0b3JBbGwoImxpbmtbcmVsPWltcG9ydF1bdHlwZX49Y3NzXSIpO2ZvcihsZXQgdD0wO3Q8bi5sZW5ndGg7dCsrKXtsZXQgaT1uW3RdO2lmKGkuaW1wb3J0KXtjb25zdCB0PWkuaW1wb3J0LG49aS5oYXNBdHRyaWJ1dGUoSCk7aWYobiYmIXQuX3Vuc2NvcGVkU3R5bGUpe2NvbnN0IGU9Vih0KTtlLnNldEF0dHJpYnV0ZShILCIiKSx0Ll91bnNjb3BlZFN0eWxlPWV9ZWxzZSB0Ll9zdHlsZXx8KHQuX3N0eWxlPVYodCkpO2UucHVzaChuP3QuX3Vuc2NvcGVkU3R5bGU6dC5fc3R5bGUpfX1yZXR1cm4gZX1mdW5jdGlvbiBxKHQpe2xldCBlPUYodCk7aWYoZSYmdm9pZCAwPT09ZS5fY3NzVGV4dCl7bGV0IHQ9KGZ1bmN0aW9uIG4odCl7bGV0IGU9IiIsbj1XKHQpO2ZvcihsZXQgdD0wO3Q8bi5sZW5ndGg7dCsrKWUrPW5bdF0udGV4dENvbnRlbnQ7cmV0dXJuIGV9Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovKShlKSxuPWUucXVlcnlTZWxlY3RvcigidGVtcGxhdGUiKTtuJiYodCs9KGZ1bmN0aW9uIGkodCxlKXtsZXQgbj0iIjtjb25zdCBpPUcodCxlKTtmb3IobGV0IHQ9MDt0PGkubGVuZ3RoO3QrKyl7bGV0IGU9aVt0XTtlLnBhcmVudE5vZGUmJmUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlKSxuKz1lLnRleHRDb250ZW50fXJldHVybiBufSkobixlLmFzc2V0cGF0aCkpLGUuX2Nzc1RleHQ9dHx8bnVsbH1yZXR1cm4gZXx8Y29uc29sZS53YXJuKCJDb3VsZCBub3QgZmluZCBzdHlsZSBkYXRhIGluIG1vZHVsZSBuYW1lZCIsdCksZSYmZS5fY3NzVGV4dHx8IiJ9Y29uc3QgWT13aW5kb3cuU2hhZHlET00mJndpbmRvdy5TaGFkeURPTS5ub1BhdGNoJiZ3aW5kb3cuU2hhZHlET00ud3JhcD93aW5kb3cuU2hhZHlET00ud3JhcDp3aW5kb3cuU2hhZHlET00/dD0+U2hhZHlET00ucGF0Y2godCk6dD0+dDsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi9mdW5jdGlvbiBYKHQpe3JldHVybiB0LmluZGV4T2YoIi4iKT49MH1mdW5jdGlvbiAkKHQpe2xldCBlPXQuaW5kZXhPZigiLiIpO3JldHVybi0xPT09ZT90OnQuc2xpY2UoMCxlKX1mdW5jdGlvbiBLKHQsZSl7cmV0dXJuIDA9PT10LmluZGV4T2YoZSsiLiIpfWZ1bmN0aW9uIFoodCxlKXtyZXR1cm4gMD09PWUuaW5kZXhPZih0KyIuIil9ZnVuY3Rpb24gSih0LGUsbil7cmV0dXJuIGUrbi5zbGljZSh0Lmxlbmd0aCl9ZnVuY3Rpb24gUSh0LGUpe3JldHVybiB0PT09ZXx8Syh0LGUpfHxaKHQsZSl9ZnVuY3Rpb24gdHQodCl7aWYoQXJyYXkuaXNBcnJheSh0KSl7bGV0IGU9W107Zm9yKGxldCBuPTA7bjx0Lmxlbmd0aDtuKyspe2xldCBpPXRbbl0udG9TdHJpbmcoKS5zcGxpdCgiLiIpO2ZvcihsZXQgdD0wO3Q8aS5sZW5ndGg7dCsrKWUucHVzaChpW3RdKX1yZXR1cm4gZS5qb2luKCIuIil9cmV0dXJuIHR9ZnVuY3Rpb24gZXQodCl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCk/dHQodCkuc3BsaXQoIi4iKTp0LnRvU3RyaW5nKCkuc3BsaXQoIi4iKX1mdW5jdGlvbiBudCh0LGUsbil7bGV0IGk9dCxyPWV0KGUpO2ZvcihsZXQgdD0wO3Q8ci5sZW5ndGg7dCsrKXtpZighaSlyZXR1cm47aT1pW3JbdF1dfXJldHVybiBuJiYobi5wYXRoPXIuam9pbigiLiIpKSxpfWZ1bmN0aW9uIGl0KHQsZSxuKXtsZXQgaT10LHI9ZXQoZSksbz1yW3IubGVuZ3RoLTFdO2lmKHIubGVuZ3RoPjEpe2ZvcihsZXQgdD0wO3Q8ci5sZW5ndGgtMTt0Kyspe2lmKGk9aVtyW3RdXSwhaSlyZXR1cm59aVtvXT1ufWVsc2UgaVtlXT1uO3JldHVybiByLmpvaW4oIi4iKX0KLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi9jb25zdCBydD17fSxvdD0vLVthLXpdL2csYXQ9LyhbQS1aXSkvZztmdW5jdGlvbiBzdCh0KXtyZXR1cm4gcnRbdF18fChydFt0XT10LmluZGV4T2YoIi0iKTwwP3Q6dC5yZXBsYWNlKG90LCh0PT50WzFdLnRvVXBwZXJDYXNlKCkpKSl9ZnVuY3Rpb24gbHQodCl7cmV0dXJuIHJ0W3RdfHwocnRbdF09dC5yZXBsYWNlKGF0LCItJDEiKS50b0xvd2VyQ2FzZSgpKX0KLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi9sZXQgY3Q9MCx1dD0wLGh0PVtdLGR0PTAscHQ9ITEsZnQ9ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIiIpO25ldyB3aW5kb3cuTXV0YXRpb25PYnNlcnZlcigoZnVuY3Rpb24gbXQoKXtwdD0hMTtjb25zdCB0PWh0Lmxlbmd0aDtmb3IobGV0IGU9MDtlPHQ7ZSsrKXtsZXQgdD1odFtlXTtpZih0KXRyeXt0KCl9Y2F0Y2godCl7c2V0VGltZW91dCgoKCk9Pnt0aHJvdyB0fSkpfX1odC5zcGxpY2UoMCx0KSx1dCs9dH0pKS5vYnNlcnZlKGZ0LHtjaGFyYWN0ZXJEYXRhOiEwfSk7Y29uc3QgZ3Q9e2FmdGVyOnQ9Pih7cnVuOmU9PndpbmRvdy5zZXRUaW1lb3V0KGUsdCksY2FuY2VsKHQpe3dpbmRvdy5jbGVhclRpbWVvdXQodCl9fSkscnVuOih0LGUpPT53aW5kb3cuc2V0VGltZW91dCh0LGUpLGNhbmNlbCh0KXt3aW5kb3cuY2xlYXJUaW1lb3V0KHQpfX0sX3Q9e3J1bjp0PT53aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKHQpLGNhbmNlbCh0KXt3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUodCl9fSx5dD17cnVuOnQ9PndpbmRvdy5yZXF1ZXN0SWRsZUNhbGxiYWNrP3dpbmRvdy5yZXF1ZXN0SWRsZUNhbGxiYWNrKHQpOndpbmRvdy5zZXRUaW1lb3V0KHQsMTYpLGNhbmNlbCh0KXt3aW5kb3cuY2FuY2VsSWRsZUNhbGxiYWNrP3dpbmRvdy5jYW5jZWxJZGxlQ2FsbGJhY2sodCk6d2luZG93LmNsZWFyVGltZW91dCh0KX19LHZ0PXtydW46dD0+KHB0fHwocHQ9ITAsZnQudGV4dENvbnRlbnQ9ZHQrKyksaHQucHVzaCh0KSxjdCsrKSxjYW5jZWwodCl7Y29uc3QgZT10LXV0O2lmKGU+PTApe2lmKCFodFtlXSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgYXN5bmMgaGFuZGxlOiAiK3QpO2h0W2VdPW51bGx9fX0sYnQ9dnQseHQ9SSgodD0+Y2xhc3MgZXh0ZW5kcyB0e3N0YXRpYyBjcmVhdGVQcm9wZXJ0aWVzKHQpe2NvbnN0IGU9dGhpcy5wcm90b3R5cGU7Zm9yKGxldCBuIGluIHQpbiBpbiBlfHxlLl9jcmVhdGVQcm9wZXJ0eUFjY2Vzc29yKG4pfXN0YXRpYyBhdHRyaWJ1dGVOYW1lRm9yUHJvcGVydHkodCl7cmV0dXJuIHQudG9Mb3dlckNhc2UoKX1zdGF0aWMgdHlwZUZvclByb3BlcnR5KHQpe31fY3JlYXRlUHJvcGVydHlBY2Nlc3Nvcih0LGUpe3RoaXMuX2FkZFByb3BlcnR5VG9BdHRyaWJ1dGVNYXAodCksdGhpcy5oYXNPd25Qcm9wZXJ0eShKU0NvbXBpbGVyX3JlbmFtZVByb3BlcnR5KCJfX2RhdGFIYXNBY2Nlc3NvciIsdGhpcykpfHwodGhpcy5fX2RhdGFIYXNBY2Nlc3Nvcj1PYmplY3QuYXNzaWduKHt9LHRoaXMuX19kYXRhSGFzQWNjZXNzb3IpKSx0aGlzLl9fZGF0YUhhc0FjY2Vzc29yW3RdfHwodGhpcy5fX2RhdGFIYXNBY2Nlc3Nvclt0XT0hMCx0aGlzLl9kZWZpbmVQcm9wZXJ0eUFjY2Vzc29yKHQsZSkpfV9hZGRQcm9wZXJ0eVRvQXR0cmlidXRlTWFwKHQpe3RoaXMuaGFzT3duUHJvcGVydHkoSlNDb21waWxlcl9yZW5hbWVQcm9wZXJ0eSgiX19kYXRhQXR0cmlidXRlcyIsdGhpcykpfHwodGhpcy5fX2RhdGFBdHRyaWJ1dGVzPU9iamVjdC5hc3NpZ24oe30sdGhpcy5fX2RhdGFBdHRyaWJ1dGVzKSk7bGV0IGU9dGhpcy5fX2RhdGFBdHRyaWJ1dGVzW3RdO3JldHVybiBlfHwoZT10aGlzLmNvbnN0cnVjdG9yLmF0dHJpYnV0ZU5hbWVGb3JQcm9wZXJ0eSh0KSx0aGlzLl9fZGF0YUF0dHJpYnV0ZXNbZV09dCksZX1fZGVmaW5lUHJvcGVydHlBY2Nlc3Nvcih0LGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLHQse2dldCgpe3JldHVybiB0aGlzLl9fZGF0YVt0XX0sc2V0OmU/ZnVuY3Rpb24oKXt9OmZ1bmN0aW9uKGUpe3RoaXMuX3NldFBlbmRpbmdQcm9wZXJ0eSh0LGUsITApJiZ0aGlzLl9pbnZhbGlkYXRlUHJvcGVydGllcygpfX0pfWNvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLl9fZGF0YUVuYWJsZWQ9ITEsdGhpcy5fX2RhdGFSZWFkeT0hMSx0aGlzLl9fZGF0YUludmFsaWQ9ITEsdGhpcy5fX2RhdGE9e30sdGhpcy5fX2RhdGFQZW5kaW5nPW51bGwsdGhpcy5fX2RhdGFPbGQ9bnVsbCx0aGlzLl9fZGF0YUluc3RhbmNlUHJvcHM9bnVsbCx0aGlzLl9fZGF0YUNvdW50ZXI9MCx0aGlzLl9fc2VyaWFsaXppbmc9ITEsdGhpcy5faW5pdGlhbGl6ZVByb3BlcnRpZXMoKX1yZWFkeSgpe3RoaXMuX19kYXRhUmVhZHk9ITAsdGhpcy5fZmx1c2hQcm9wZXJ0aWVzKCl9X2luaXRpYWxpemVQcm9wZXJ0aWVzKCl7Zm9yKGxldCB0IGluIHRoaXMuX19kYXRhSGFzQWNjZXNzb3IpdGhpcy5oYXNPd25Qcm9wZXJ0eSh0KSYmKHRoaXMuX19kYXRhSW5zdGFuY2VQcm9wcz10aGlzLl9fZGF0YUluc3RhbmNlUHJvcHN8fHt9LHRoaXMuX19kYXRhSW5zdGFuY2VQcm9wc1t0XT10aGlzW3RdLGRlbGV0ZSB0aGlzW3RdKX1faW5pdGlhbGl6ZUluc3RhbmNlUHJvcGVydGllcyh0KXtPYmplY3QuYXNzaWduKHRoaXMsdCl9X3NldFByb3BlcnR5KHQsZSl7dGhpcy5fc2V0UGVuZGluZ1Byb3BlcnR5KHQsZSkmJnRoaXMuX2ludmFsaWRhdGVQcm9wZXJ0aWVzKCl9X2dldFByb3BlcnR5KHQpe3JldHVybiB0aGlzLl9fZGF0YVt0XX1fc2V0UGVuZGluZ1Byb3BlcnR5KHQsZSxuKXtsZXQgaT10aGlzLl9fZGF0YVt0XSxyPXRoaXMuX3Nob3VsZFByb3BlcnR5Q2hhbmdlKHQsZSxpKTtyZXR1cm4gciYmKHRoaXMuX19kYXRhUGVuZGluZ3x8KHRoaXMuX19kYXRhUGVuZGluZz17fSx0aGlzLl9fZGF0YU9sZD17fSksdGhpcy5fX2RhdGFPbGQmJiEodCBpbiB0aGlzLl9fZGF0YU9sZCkmJih0aGlzLl9fZGF0YU9sZFt0XT1pKSx0aGlzLl9fZGF0YVt0XT1lLHRoaXMuX19kYXRhUGVuZGluZ1t0XT1lKSxyfV9pc1Byb3BlcnR5UGVuZGluZyh0KXtyZXR1cm4hKCF0aGlzLl9fZGF0YVBlbmRpbmd8fCF0aGlzLl9fZGF0YVBlbmRpbmcuaGFzT3duUHJvcGVydHkodCkpfV9pbnZhbGlkYXRlUHJvcGVydGllcygpeyF0aGlzLl9fZGF0YUludmFsaWQmJnRoaXMuX19kYXRhUmVhZHkmJih0aGlzLl9fZGF0YUludmFsaWQ9ITAsYnQucnVuKCgoKT0+e3RoaXMuX19kYXRhSW52YWxpZCYmKHRoaXMuX19kYXRhSW52YWxpZD0hMSx0aGlzLl9mbHVzaFByb3BlcnRpZXMoKSl9KSkpfV9lbmFibGVQcm9wZXJ0aWVzKCl7dGhpcy5fX2RhdGFFbmFibGVkfHwodGhpcy5fX2RhdGFFbmFibGVkPSEwLHRoaXMuX19kYXRhSW5zdGFuY2VQcm9wcyYmKHRoaXMuX2luaXRpYWxpemVJbnN0YW5jZVByb3BlcnRpZXModGhpcy5fX2RhdGFJbnN0YW5jZVByb3BzKSx0aGlzLl9fZGF0YUluc3RhbmNlUHJvcHM9bnVsbCksdGhpcy5yZWFkeSgpKX1fZmx1c2hQcm9wZXJ0aWVzKCl7dGhpcy5fX2RhdGFDb3VudGVyKys7Y29uc3QgdD10aGlzLl9fZGF0YSxlPXRoaXMuX19kYXRhUGVuZGluZyxuPXRoaXMuX19kYXRhT2xkO3RoaXMuX3Nob3VsZFByb3BlcnRpZXNDaGFuZ2UodCxlLG4pJiYodGhpcy5fX2RhdGFQZW5kaW5nPW51bGwsdGhpcy5fX2RhdGFPbGQ9bnVsbCx0aGlzLl9wcm9wZXJ0aWVzQ2hhbmdlZCh0LGUsbikpLHRoaXMuX19kYXRhQ291bnRlci0tfV9zaG91bGRQcm9wZXJ0aWVzQ2hhbmdlKHQsZSxuKXtyZXR1cm4gQm9vbGVhbihlKX1fcHJvcGVydGllc0NoYW5nZWQodCxlLG4pe31fc2hvdWxkUHJvcGVydHlDaGFuZ2UodCxlLG4pe3JldHVybiBuIT09ZSYmKG49PW58fGU9PWUpfWF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayh0LGUsbixpKXtlIT09biYmdGhpcy5fYXR0cmlidXRlVG9Qcm9wZXJ0eSh0LG4pLHN1cGVyLmF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayYmc3VwZXIuYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKHQsZSxuLGkpfV9hdHRyaWJ1dGVUb1Byb3BlcnR5KHQsZSxuKXtpZighdGhpcy5fX3NlcmlhbGl6aW5nKXtjb25zdCBpPXRoaXMuX19kYXRhQXR0cmlidXRlcyxyPWkmJmlbdF18fHQ7dGhpc1tyXT10aGlzLl9kZXNlcmlhbGl6ZVZhbHVlKGUsbnx8dGhpcy5jb25zdHJ1Y3Rvci50eXBlRm9yUHJvcGVydHkocikpfX1fcHJvcGVydHlUb0F0dHJpYnV0ZSh0LGUsbil7dGhpcy5fX3NlcmlhbGl6aW5nPSEwLHRoaXMuX3ZhbHVlVG9Ob2RlQXR0cmlidXRlKHRoaXMsbj1hcmd1bWVudHMubGVuZ3RoPDM/dGhpc1t0XTpuLGV8fHRoaXMuY29uc3RydWN0b3IuYXR0cmlidXRlTmFtZUZvclByb3BlcnR5KHQpKSx0aGlzLl9fc2VyaWFsaXppbmc9ITF9X3ZhbHVlVG9Ob2RlQXR0cmlidXRlKHQsZSxuKXtjb25zdCBpPXRoaXMuX3NlcmlhbGl6ZVZhbHVlKGUpOyJjbGFzcyIhPT1uJiYibmFtZSIhPT1uJiYic2xvdCIhPT1ufHwodD1ZKHQpKSx2b2lkIDA9PT1pP3QucmVtb3ZlQXR0cmlidXRlKG4pOnQuc2V0QXR0cmlidXRlKG4saSl9X3NlcmlhbGl6ZVZhbHVlKHQpe3N3aXRjaCh0eXBlb2YgdCl7Y2FzZSJib29sZWFuIjpyZXR1cm4gdD8iIjp2b2lkIDA7ZGVmYXVsdDpyZXR1cm4gbnVsbCE9dD90LnRvU3RyaW5nKCk6dm9pZCAwfX1fZGVzZXJpYWxpemVWYWx1ZSh0LGUpe3N3aXRjaChlKXtjYXNlIEJvb2xlYW46cmV0dXJuIG51bGwhPT10O2Nhc2UgTnVtYmVyOnJldHVybiBOdW1iZXIodCk7ZGVmYXVsdDpyZXR1cm4gdH19fSkpLHd0PXt9O2xldCBTdD1IVE1MRWxlbWVudC5wcm90b3R5cGU7Zm9yKDtTdDspe2xldCB0PU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKFN0KTtmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKyl3dFt0W2VdXT0hMDtTdD1PYmplY3QuZ2V0UHJvdG90eXBlT2YoU3QpfWNvbnN0IE10PUkoKHQ9Pntjb25zdCBlPXh0KHQpO3JldHVybiBjbGFzcyBleHRlbmRzIGV7c3RhdGljIGNyZWF0ZVByb3BlcnRpZXNGb3JBdHRyaWJ1dGVzKCl7bGV0IHQ9dGhpcy5vYnNlcnZlZEF0dHJpYnV0ZXM7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspdGhpcy5wcm90b3R5cGUuX2NyZWF0ZVByb3BlcnR5QWNjZXNzb3Ioc3QodFtlXSkpfXN0YXRpYyBhdHRyaWJ1dGVOYW1lRm9yUHJvcGVydHkodCl7cmV0dXJuIGx0KHQpfV9pbml0aWFsaXplUHJvcGVydGllcygpe3RoaXMuX19kYXRhUHJvdG8mJih0aGlzLl9pbml0aWFsaXplUHJvdG9Qcm9wZXJ0aWVzKHRoaXMuX19kYXRhUHJvdG8pLHRoaXMuX19kYXRhUHJvdG89bnVsbCksc3VwZXIuX2luaXRpYWxpemVQcm9wZXJ0aWVzKCl9X2luaXRpYWxpemVQcm90b1Byb3BlcnRpZXModCl7Zm9yKGxldCBlIGluIHQpdGhpcy5fc2V0UHJvcGVydHkoZSx0W2VdKX1fZW5zdXJlQXR0cmlidXRlKHQsZSl7Y29uc3Qgbj10aGlzO24uaGFzQXR0cmlidXRlKHQpfHx0aGlzLl92YWx1ZVRvTm9kZUF0dHJpYnV0ZShuLGUsdCl9X3NlcmlhbGl6ZVZhbHVlKHQpe3N3aXRjaCh0eXBlb2YgdCl7Y2FzZSJvYmplY3QiOmlmKHQgaW5zdGFuY2VvZiBEYXRlKXJldHVybiB0LnRvU3RyaW5nKCk7aWYodCl0cnl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KHQpfWNhdGNoKHQpe3JldHVybiIifWRlZmF1bHQ6cmV0dXJuIHN1cGVyLl9zZXJpYWxpemVWYWx1ZSh0KX19X2Rlc2VyaWFsaXplVmFsdWUodCxlKXtsZXQgbjtzd2l0Y2goZSl7Y2FzZSBPYmplY3Q6dHJ5e249SlNPTi5wYXJzZSh0KX1jYXRjaChlKXtuPXR9YnJlYWs7Y2FzZSBBcnJheTp0cnl7bj1KU09OLnBhcnNlKHQpfWNhdGNoKGUpe249bnVsbCxjb25zb2xlLndhcm4oYFBvbHltZXI6OkF0dHJpYnV0ZXM6IGNvdWxkbid0IGRlY29kZSBBcnJheSBhcyBKU09OOiAke3R9YCl9YnJlYWs7Y2FzZSBEYXRlOm49aXNOYU4odCk/U3RyaW5nKHQpOk51bWJlcih0KSxuPW5ldyBEYXRlKG4pO2JyZWFrO2RlZmF1bHQ6bj1zdXBlci5fZGVzZXJpYWxpemVWYWx1ZSh0LGUpfXJldHVybiBufV9kZWZpbmVQcm9wZXJ0eUFjY2Vzc29yKHQsZSl7IShmdW5jdGlvbiBuKHQsZSl7aWYoIXd0W2VdKXtsZXQgbj10W2VdO3ZvaWQgMCE9PW4mJih0Ll9fZGF0YT90Ll9zZXRQZW5kaW5nUHJvcGVydHkoZSxuKToodC5fX2RhdGFQcm90bz90Lmhhc093blByb3BlcnR5KEpTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoIl9fZGF0YVByb3RvIix0KSl8fCh0Ll9fZGF0YVByb3RvPU9iamVjdC5jcmVhdGUodC5fX2RhdGFQcm90bykpOnQuX19kYXRhUHJvdG89e30sdC5fX2RhdGFQcm90b1tlXT1uKSl9fSkodGhpcyx0KSxzdXBlci5fZGVmaW5lUHJvcGVydHlBY2Nlc3Nvcih0LGUpfV9oYXNBY2Nlc3Nvcih0KXtyZXR1cm4gdGhpcy5fX2RhdGFIYXNBY2Nlc3NvciYmdGhpcy5fX2RhdGFIYXNBY2Nlc3Nvclt0XX1faXNQcm9wZXJ0eVBlbmRpbmcodCl7cmV0dXJuIEJvb2xlYW4odGhpcy5fX2RhdGFQZW5kaW5nJiZ0IGluIHRoaXMuX19kYXRhUGVuZGluZyl9fX0pKSxFdD17ImRvbS1pZiI6ITAsImRvbS1yZXBlYXQiOiEwfTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi9sZXQgVHQ9ITEsQ3Q9ITE7ZnVuY3Rpb24gQXQodCl7KGZ1bmN0aW9uIGUoKXtpZighVHQpe1R0PSEwO2NvbnN0IHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGV4dGFyZWEiKTt0LnBsYWNlaG9sZGVyPSJhIixDdD10LnBsYWNlaG9sZGVyPT09dC50ZXh0Q29udGVudH1yZXR1cm4gQ3R9KSgpJiYidGV4dGFyZWEiPT09dC5sb2NhbE5hbWUmJnQucGxhY2Vob2xkZXImJnQucGxhY2Vob2xkZXI9PT10LnRleHRDb250ZW50JiYodC50ZXh0Q29udGVudD1udWxsKX1mdW5jdGlvbiBrdCh0KXtsZXQgZT10LmdldEF0dHJpYnV0ZSgiaXMiKTtpZihlJiZFdFtlXSl7bGV0IG49dDtmb3Iobi5yZW1vdmVBdHRyaWJ1dGUoImlzIiksdD1uLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudChlKSxuLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKHQsbiksdC5hcHBlbmRDaGlsZChuKTtuLmF0dHJpYnV0ZXMubGVuZ3RoOyl0LnNldEF0dHJpYnV0ZShuLmF0dHJpYnV0ZXNbMF0ubmFtZSxuLmF0dHJpYnV0ZXNbMF0udmFsdWUpLG4ucmVtb3ZlQXR0cmlidXRlKG4uYXR0cmlidXRlc1swXS5uYW1lKX1yZXR1cm4gdH1mdW5jdGlvbiBMdCh0LGUpe2xldCBuPWUucGFyZW50SW5mbyYmTHQodCxlLnBhcmVudEluZm8pO2lmKCFuKXJldHVybiB0O2ZvcihsZXQgdD1uLmZpcnN0Q2hpbGQsaT0wO3Q7dD10Lm5leHRTaWJsaW5nKWlmKGUucGFyZW50SW5kZXg9PT1pKyspcmV0dXJuIHR9ZnVuY3Rpb24gUHQodCxlLG4saSl7aS5pZCYmKGVbaS5pZF09bil9ZnVuY3Rpb24gTnQodCxlLG4pe2lmKG4uZXZlbnRzJiZuLmV2ZW50cy5sZW5ndGgpZm9yKGxldCBpLHI9MCxvPW4uZXZlbnRzO3I8by5sZW5ndGgmJihpPW9bcl0pO3IrKyl0Ll9hZGRNZXRob2RFdmVudExpc3RlbmVyVG9Ob2RlKGUsaS5uYW1lLGkudmFsdWUsdCl9ZnVuY3Rpb24gSXQodCxlLG4saSl7bi50ZW1wbGF0ZUluZm8mJihlLl90ZW1wbGF0ZUluZm89bi50ZW1wbGF0ZUluZm8sZS5fcGFyZW50VGVtcGxhdGVJbmZvPWkpfWNvbnN0IFJ0PUkoKHQ9PmNsYXNzIGV4dGVuZHMgdHtzdGF0aWMgX3BhcnNlVGVtcGxhdGUodCxlKXtpZighdC5fdGVtcGxhdGVJbmZvKXtsZXQgbj10Ll90ZW1wbGF0ZUluZm89e307bi5ub2RlSW5mb0xpc3Q9W10sbi5uZXN0ZWRUZW1wbGF0ZT1Cb29sZWFuKGUpLG4uc3RyaXBXaGl0ZVNwYWNlPWUmJmUuc3RyaXBXaGl0ZVNwYWNlfHx0Lmhhc0F0dHJpYnV0ZSgic3RyaXAtd2hpdGVzcGFjZSIpLHRoaXMuX3BhcnNlVGVtcGxhdGVDb250ZW50KHQsbix7cGFyZW50Om51bGx9KX1yZXR1cm4gdC5fdGVtcGxhdGVJbmZvfXN0YXRpYyBfcGFyc2VUZW1wbGF0ZUNvbnRlbnQodCxlLG4pe3JldHVybiB0aGlzLl9wYXJzZVRlbXBsYXRlTm9kZSh0LmNvbnRlbnQsZSxuKX1zdGF0aWMgX3BhcnNlVGVtcGxhdGVOb2RlKHQsZSxuKXtsZXQgaT0hMSxyPXQ7cmV0dXJuInRlbXBsYXRlIiE9ci5sb2NhbE5hbWV8fHIuaGFzQXR0cmlidXRlKCJwcmVzZXJ2ZS1jb250ZW50Iik/InNsb3QiPT09ci5sb2NhbE5hbWUmJihlLmhhc0luc2VydGlvblBvaW50PSEwKTppPXRoaXMuX3BhcnNlVGVtcGxhdGVOZXN0ZWRUZW1wbGF0ZShyLGUsbil8fGksQXQociksci5maXJzdENoaWxkJiZ0aGlzLl9wYXJzZVRlbXBsYXRlQ2hpbGROb2RlcyhyLGUsbiksci5oYXNBdHRyaWJ1dGVzJiZyLmhhc0F0dHJpYnV0ZXMoKSYmKGk9dGhpcy5fcGFyc2VUZW1wbGF0ZU5vZGVBdHRyaWJ1dGVzKHIsZSxuKXx8aSksaXx8bi5ub3RlZH1zdGF0aWMgX3BhcnNlVGVtcGxhdGVDaGlsZE5vZGVzKHQsZSxuKXtpZigic2NyaXB0IiE9PXQubG9jYWxOYW1lJiYic3R5bGUiIT09dC5sb2NhbE5hbWUpZm9yKGxldCBpLHI9dC5maXJzdENoaWxkLG89MDtyO3I9aSl7aWYoInRlbXBsYXRlIj09ci5sb2NhbE5hbWUmJihyPWt0KHIpKSxpPXIubmV4dFNpYmxpbmcsci5ub2RlVHlwZT09PU5vZGUuVEVYVF9OT0RFKXtsZXQgbj1pO2Zvcig7biYmbi5ub2RlVHlwZT09PU5vZGUuVEVYVF9OT0RFOylyLnRleHRDb250ZW50Kz1uLnRleHRDb250ZW50LGk9bi5uZXh0U2libGluZyx0LnJlbW92ZUNoaWxkKG4pLG49aTtpZihlLnN0cmlwV2hpdGVTcGFjZSYmIXIudGV4dENvbnRlbnQudHJpbSgpKXt0LnJlbW92ZUNoaWxkKHIpO2NvbnRpbnVlfX1sZXQgYT17cGFyZW50SW5kZXg6byxwYXJlbnRJbmZvOm59O3RoaXMuX3BhcnNlVGVtcGxhdGVOb2RlKHIsZSxhKSYmKGEuaW5mb0luZGV4PWUubm9kZUluZm9MaXN0LnB1c2goYSktMSksci5wYXJlbnROb2RlJiZvKyt9fXN0YXRpYyBfcGFyc2VUZW1wbGF0ZU5lc3RlZFRlbXBsYXRlKHQsZSxuKXtsZXQgaT10LHI9dGhpcy5fcGFyc2VUZW1wbGF0ZShpLGUpO3JldHVybihyLmNvbnRlbnQ9aS5jb250ZW50Lm93bmVyRG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpKS5hcHBlbmRDaGlsZChpLmNvbnRlbnQpLG4udGVtcGxhdGVJbmZvPXIsITB9c3RhdGljIF9wYXJzZVRlbXBsYXRlTm9kZUF0dHJpYnV0ZXModCxlLG4pe2xldCBpPSExLHI9QXJyYXkuZnJvbSh0LmF0dHJpYnV0ZXMpO2ZvcihsZXQgbyxhPXIubGVuZ3RoLTE7bz1yW2FdO2EtLSlpPXRoaXMuX3BhcnNlVGVtcGxhdGVOb2RlQXR0cmlidXRlKHQsZSxuLG8ubmFtZSxvLnZhbHVlKXx8aTtyZXR1cm4gaX1zdGF0aWMgX3BhcnNlVGVtcGxhdGVOb2RlQXR0cmlidXRlKHQsZSxuLGkscil7cmV0dXJuIm9uLSI9PT1pLnNsaWNlKDAsMyk/KHQucmVtb3ZlQXR0cmlidXRlKGkpLG4uZXZlbnRzPW4uZXZlbnRzfHxbXSxuLmV2ZW50cy5wdXNoKHtuYW1lOmkuc2xpY2UoMyksdmFsdWU6cn0pLCEwKToiaWQiPT09aSYmKG4uaWQ9ciwhMCl9c3RhdGljIF9jb250ZW50Rm9yVGVtcGxhdGUodCl7bGV0IGU9dC5fdGVtcGxhdGVJbmZvO3JldHVybiBlJiZlLmNvbnRlbnR8fHQuY29udGVudH1fc3RhbXBUZW1wbGF0ZSh0LGUpe3QmJiF0LmNvbnRlbnQmJndpbmRvdy5IVE1MVGVtcGxhdGVFbGVtZW50JiZIVE1MVGVtcGxhdGVFbGVtZW50LmRlY29yYXRlJiZIVE1MVGVtcGxhdGVFbGVtZW50LmRlY29yYXRlKHQpO2xldCBuPShlPWV8fHRoaXMuY29uc3RydWN0b3IuX3BhcnNlVGVtcGxhdGUodCkpLm5vZGVJbmZvTGlzdCxpPWRvY3VtZW50LmltcG9ydE5vZGUoZS5jb250ZW50fHx0LmNvbnRlbnQsITApO2kuX19ub0luc2VydGlvblBvaW50PSFlLmhhc0luc2VydGlvblBvaW50O2xldCByPWkubm9kZUxpc3Q9bmV3IEFycmF5KG4ubGVuZ3RoKTtpLiQ9e307Zm9yKGxldCB0LG89MCxhPW4ubGVuZ3RoO288YSYmKHQ9bltvXSk7bysrKXtsZXQgbj1yW29dPUx0KGksdCk7UHQoMCxpLiQsbix0KSxJdCgwLG4sdCxlKSxOdCh0aGlzLG4sdCl9cmV0dXJuIGk9aSxpfV9hZGRNZXRob2RFdmVudExpc3RlbmVyVG9Ob2RlKHQsZSxuLGkpe2xldCByPShmdW5jdGlvbiBvKHQsZSxuKXtyZXR1cm4gdD10Ll9tZXRob2RIb3N0fHx0LGZ1bmN0aW9uKGUpe3Rbbl0/dFtuXShlLGUuZGV0YWlsKTpjb25zb2xlLndhcm4oImxpc3RlbmVyIG1ldGhvZCBgIituKyJgIG5vdCBkZWZpbmVkIil9fSkoaT1pfHx0LDAsbik7cmV0dXJuIHRoaXMuX2FkZEV2ZW50TGlzdGVuZXJUb05vZGUodCxlLHIpLHJ9X2FkZEV2ZW50TGlzdGVuZXJUb05vZGUodCxlLG4pe3QuYWRkRXZlbnRMaXN0ZW5lcihlLG4pfV9yZW1vdmVFdmVudExpc3RlbmVyRnJvbU5vZGUodCxlLG4pe3QucmVtb3ZlRXZlbnRMaXN0ZW5lcihlLG4pfX0pKTsKLyoqCiAgICAgKiBAZmlsZW92ZXJ2aWV3CiAgICAgKiBAc3VwcHJlc3Mge2NoZWNrUHJvdG90eXBhbFR5cGVzfQogICAgICogQGxpY2Vuc2UgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgICAqIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgICogaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQKICAgICAqIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkKICAgICAqIGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkKICAgICAqIEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAKICAgICAqIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICAqL2xldCBPdD0wO2NvbnN0IHp0PVtdLER0PXtDT01QVVRFOiJfX2NvbXB1dGVFZmZlY3RzIixSRUZMRUNUOiJfX3JlZmxlY3RFZmZlY3RzIixOT1RJRlk6Il9fbm90aWZ5RWZmZWN0cyIsUFJPUEFHQVRFOiJfX3Byb3BhZ2F0ZUVmZmVjdHMiLE9CU0VSVkU6Il9fb2JzZXJ2ZUVmZmVjdHMiLFJFQURfT05MWToiX19yZWFkT25seSJ9LEJ0PSJfX2NvbXB1dGVJbmZvIixIdD0vW0EtWl0vO2Z1bmN0aW9uIEZ0KHQsZSxuKXtsZXQgaT10W2VdO2lmKGkpe2lmKCF0Lmhhc093blByb3BlcnR5KGUpJiYoaT10W2VdPU9iamVjdC5jcmVhdGUodFtlXSksbikpZm9yKGxldCB0IGluIGkpe2xldCBlPWlbdF0sbj1pW3RdPUFycmF5KGUubGVuZ3RoKTtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKyluW3RdPWVbdF19fWVsc2UgaT10W2VdPXt9O3JldHVybiBpfWZ1bmN0aW9uIFZ0KHQsZSxuLGkscixvKXtpZihlKXtsZXQgYT0hMTtjb25zdCBzPU90Kys7Zm9yKGxldCBsIGluIG4pe2xldCBjPWVbcj8kKGwpOmxdO2lmKGMpZm9yKGxldCBlLHU9MCxoPWMubGVuZ3RoO3U8aCYmKGU9Y1t1XSk7dSsrKWUuaW5mbyYmZS5pbmZvLmxhc3RSdW49PT1zfHxyJiYhanQobCxlLnRyaWdnZXIpfHwoZS5pbmZvJiYoZS5pbmZvLmxhc3RSdW49cyksZS5mbih0LGwsbixpLGUuaW5mbyxyLG8pLGE9ITApfXJldHVybiBhfXJldHVybiExfWZ1bmN0aW9uIFV0KHQsZSxuLGkscixvLGEscyl7bGV0IGw9ITEsYz1lW2E/JChpKTppXTtpZihjKWZvcihsZXQgZSx1PTAsaD1jLmxlbmd0aDt1PGgmJihlPWNbdV0pO3UrKyllLmluZm8mJmUuaW5mby5sYXN0UnVuPT09bnx8YSYmIWp0KGksZS50cmlnZ2VyKXx8KGUuaW5mbyYmKGUuaW5mby5sYXN0UnVuPW4pLGUuZm4odCxpLHIsbyxlLmluZm8sYSxzKSxsPSEwKTtyZXR1cm4gbH1mdW5jdGlvbiBqdCh0LGUpe2lmKGUpe2xldCBuPWUubmFtZTtyZXR1cm4gbj09dHx8ISghZS5zdHJ1Y3R1cmVkfHwhSyhuLHQpKXx8ISghZS53aWxkY2FyZHx8IVoobix0KSl9cmV0dXJuITB9ZnVuY3Rpb24gR3QodCxlLG4saSxyKXtsZXQgbz0ic3RyaW5nIj09dHlwZW9mIHIubWV0aG9kP3Rbci5tZXRob2RdOnIubWV0aG9kLGE9ci5wcm9wZXJ0eTtvP28uY2FsbCh0LHQuX19kYXRhW2FdLGlbYV0pOnIuZHluYW1pY0ZufHxjb25zb2xlLndhcm4oIm9ic2VydmVyIG1ldGhvZCBgIityLm1ldGhvZCsiYCBub3QgZGVmaW5lZCIpfWZ1bmN0aW9uIFd0KHQsZSxuKXtsZXQgaT0kKGUpO2lmKGkhPT1lKXtyZXR1cm4gcXQodCxsdChpKSsiLWNoYW5nZWQiLG5bZV0sZSksITB9cmV0dXJuITF9ZnVuY3Rpb24gcXQodCxlLG4saSl7bGV0IHI9e3ZhbHVlOm4scXVldWVQcm9wZXJ0eTohMH07aSYmKHIucGF0aD1pKSxZKHQpLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KGUse2RldGFpbDpyfSkpfWZ1bmN0aW9uIFl0KHQsZSxuLGkscixvKXtsZXQgYT0obz8kKGUpOmUpIT1lP2U6bnVsbCxzPWE/bnQodCxhKTp0Ll9fZGF0YVtlXTthJiZ2b2lkIDA9PT1zJiYocz1uW2VdKSxxdCh0LHIuZXZlbnROYW1lLHMsYSl9ZnVuY3Rpb24gWHQodCxlLG4saSxyKXtsZXQgbz10Ll9fZGF0YVtlXTt5JiYobz15KG8sci5hdHRyTmFtZSwiYXR0cmlidXRlIix0KSksdC5fcHJvcGVydHlUb0F0dHJpYnV0ZShlLHIuYXR0ck5hbWUsbyl9ZnVuY3Rpb24gJHQodCxlLG4saSl7bGV0IHI9dFtEdC5DT01QVVRFXTtpZihyKWlmKFQpe090Kys7Y29uc3Qgbz0oZnVuY3Rpb24gbyh0KXtsZXQgZT10LmNvbnN0cnVjdG9yLl9fb3JkZXJlZENvbXB1dGVkRGVwcztpZighZSl7ZT1uZXcgTWFwO2NvbnN0IG49dFtEdC5DT01QVVRFXTtsZXQgaSx7Y291bnRzOnIscmVhZHk6byx0b3RhbDphfT0oZnVuY3Rpb24gbih0KXtjb25zdCBlPXQuX19jb21wdXRlSW5mbyxuPXt9LGk9dFtEdC5DT01QVVRFXSxyPVtdO2xldCBvPTA7Zm9yKGxldCB0IGluIGUpe2NvbnN0IGk9ZVt0XTtvKz1uW3RdPWkuYXJncy5maWx0ZXIoKHQ9PiF0LmxpdGVyYWwpKS5sZW5ndGgrKGkuZHluYW1pY0ZuPzE6MCl9Zm9yKGxldCB0IGluIGkpZVt0XXx8ci5wdXNoKHQpO3JldHVybntjb3VudHM6bixyZWFkeTpyLHRvdGFsOm99fSkodCk7Zm9yKDtpPW8uc2hpZnQoKTspe2Uuc2V0KGksZS5zaXplKTtjb25zdCB0PW5baV07dCYmdC5mb3JFYWNoKCh0PT57Y29uc3QgZT10LmluZm8ubWV0aG9kSW5mbzstLWEsMD09LS1yW2VdJiZvLnB1c2goZSl9KSl9aWYoMCE9PWEpe2NvbnNvbGUud2FybihgQ29tcHV0ZWQgZ3JhcGggZm9yICR7dC5sb2NhbE5hbWV9IGluY29tcGxldGU7IGNpcmN1bGFyP2ApfXQuY29uc3RydWN0b3IuX19vcmRlcmVkQ29tcHV0ZWREZXBzPWV9cmV0dXJuIGV9KSh0KSxhPVtdO2ZvcihsZXQgdCBpbiBlKVp0KHQscixhLG8saSk7bGV0IHM7Zm9yKDtzPWEuc2hpZnQoKTspSnQodCwiIixlLG4scykmJlp0KHMubWV0aG9kSW5mbyxyLGEsbyxpKTtPYmplY3QuYXNzaWduKG4sdC5fX2RhdGFPbGQpLE9iamVjdC5hc3NpZ24oZSx0Ll9fZGF0YVBlbmRpbmcpLHQuX19kYXRhUGVuZGluZz1udWxsfWVsc2V7bGV0IG89ZTtmb3IoO1Z0KHQscixvLG4saSk7KU9iamVjdC5hc3NpZ24obix0Ll9fZGF0YU9sZCksT2JqZWN0LmFzc2lnbihlLHQuX19kYXRhUGVuZGluZyksbz10Ll9fZGF0YVBlbmRpbmcsdC5fX2RhdGFQZW5kaW5nPW51bGx9fWNvbnN0IEt0PSh0LGUsbik9PntsZXQgaT0wLHI9ZS5sZW5ndGgtMSxvPS0xO2Zvcig7aTw9cjspe2NvbnN0IGE9aStyPj4xLHM9bi5nZXQoZVthXS5tZXRob2RJbmZvKS1uLmdldCh0Lm1ldGhvZEluZm8pO2lmKHM8MClpPWErMTtlbHNle2lmKCEocz4wKSl7bz1hO2JyZWFrfXI9YS0xfX1vPDAmJihvPXIrMSksZS5zcGxpY2UobywwLHQpfSxadD0odCxlLG4saSxyKT0+e2NvbnN0IG89ZVtyPyQodCk6dF07aWYobylmb3IobGV0IGU9MDtlPG8ubGVuZ3RoO2UrKyl7Y29uc3QgYT1vW2VdO2EuaW5mby5sYXN0UnVuPT09T3R8fHImJiFqdCh0LGEudHJpZ2dlcil8fChhLmluZm8ubGFzdFJ1bj1PdCxLdChhLmluZm8sbixpKSl9fTtmdW5jdGlvbiBKdCh0LGUsbixpLHIpe2xldCBvPW9lKHQsZSxuLGkscik7aWYobz09PXp0KXJldHVybiExO2xldCBhPXIubWV0aG9kSW5mbztyZXR1cm4gdC5fX2RhdGFIYXNBY2Nlc3NvciYmdC5fX2RhdGFIYXNBY2Nlc3NvclthXT90Ll9zZXRQZW5kaW5nUHJvcGVydHkoYSxvLCEwKToodFthXT1vLCExKX1mdW5jdGlvbiBRdCh0LGUsbixpLHIsbyxhKXtuLmJpbmRpbmdzPW4uYmluZGluZ3N8fFtdO2xldCBzPXtraW5kOmksdGFyZ2V0OnIscGFydHM6byxsaXRlcmFsOmEsaXNDb21wb3VuZDoxIT09by5sZW5ndGh9O2lmKG4uYmluZGluZ3MucHVzaChzKSwoZnVuY3Rpb24gbCh0KXtyZXR1cm4gQm9vbGVhbih0LnRhcmdldCkmJiJhdHRyaWJ1dGUiIT10LmtpbmQmJiJ0ZXh0IiE9dC5raW5kJiYhdC5pc0NvbXBvdW5kJiYieyI9PT10LnBhcnRzWzBdLm1vZGV9KShzKSl7bGV0e2V2ZW50OnQsbmVnYXRlOmV9PXMucGFydHNbMF07cy5saXN0ZW5lckV2ZW50PXR8fGx0KHIpKyItY2hhbmdlZCIscy5saXN0ZW5lck5lZ2F0ZT1lfWxldCBjPWUubm9kZUluZm9MaXN0Lmxlbmd0aDtmb3IobGV0IG49MDtuPHMucGFydHMubGVuZ3RoO24rKyl7bGV0IGk9cy5wYXJ0c1tuXTtpLmNvbXBvdW5kSW5kZXg9bix0ZSh0LGUscyxpLGMpfX1mdW5jdGlvbiB0ZSh0LGUsbixpLHIpe2lmKCFpLmxpdGVyYWwpaWYoImF0dHJpYnV0ZSI9PT1uLmtpbmQmJiItIj09PW4udGFyZ2V0WzBdKWNvbnNvbGUud2FybigiQ2Fubm90IHNldCBhdHRyaWJ1dGUgIituLnRhcmdldCsnIGJlY2F1c2UgIi0iIGlzIG5vdCBhIHZhbGlkIGF0dHJpYnV0ZSBzdGFydGluZyBjaGFyYWN0ZXInKTtlbHNle2xldCBvPWkuZGVwZW5kZW5jaWVzLGE9e2luZGV4OnIsYmluZGluZzpuLHBhcnQ6aSxldmFsdWF0b3I6dH07Zm9yKGxldCBuPTA7bjxvLmxlbmd0aDtuKyspe2xldCBpPW9bbl07InN0cmluZyI9PXR5cGVvZiBpJiYoaT11ZShpKSxpLndpbGRjYXJkPSEwKSx0Ll9hZGRUZW1wbGF0ZVByb3BlcnR5RWZmZWN0KGUsaS5yb290UHJvcGVydHkse2ZuOmVlLGluZm86YSx0cmlnZ2VyOml9KX19fWZ1bmN0aW9uIGVlKHQsZSxuLGkscixvLGEpe2xldCBzPWFbci5pbmRleF0sbD1yLmJpbmRpbmcsYz1yLnBhcnQ7aWYobyYmYy5zb3VyY2UmJmUubGVuZ3RoPmMuc291cmNlLmxlbmd0aCYmInByb3BlcnR5Ij09bC5raW5kJiYhbC5pc0NvbXBvdW5kJiZzLl9faXNQcm9wZXJ0eUVmZmVjdHNDbGllbnQmJnMuX19kYXRhSGFzQWNjZXNzb3ImJnMuX19kYXRhSGFzQWNjZXNzb3JbbC50YXJnZXRdKXtsZXQgaT1uW2VdO2U9SihjLnNvdXJjZSxsLnRhcmdldCxlKSxzLl9zZXRQZW5kaW5nUHJvcGVydHlPclBhdGgoZSxpLCExLCEwKSYmdC5fZW5xdWV1ZUNsaWVudChzKX1lbHNle2xldCBhPXIuZXZhbHVhdG9yLl9ldmFsdWF0ZUJpbmRpbmcodCxjLGUsbixpLG8pO2EhPT16dCYmKGZ1bmN0aW9uIHUodCxlLG4saSxyKXtyPShmdW5jdGlvbiBvKHQsZSxuLGkpe2lmKG4uaXNDb21wb3VuZCl7bGV0IHI9dC5fX2RhdGFDb21wb3VuZFN0b3JhZ2Vbbi50YXJnZXRdO3JbaS5jb21wb3VuZEluZGV4XT1lLGU9ci5qb2luKCIiKX0iYXR0cmlidXRlIiE9PW4ua2luZCYmKCJ0ZXh0Q29udGVudCIhPT1uLnRhcmdldCYmKCJ2YWx1ZSIhPT1uLnRhcmdldHx8ImlucHV0IiE9PXQubG9jYWxOYW1lJiYidGV4dGFyZWEiIT09dC5sb2NhbE5hbWUpfHwoZT1udWxsPT1lPyIiOmUpKTtyZXR1cm4gZX0pKGUscixuLGkpLHkmJihyPXkocixuLnRhcmdldCxuLmtpbmQsZSkpO2lmKCJhdHRyaWJ1dGUiPT1uLmtpbmQpdC5fdmFsdWVUb05vZGVBdHRyaWJ1dGUoZSxyLG4udGFyZ2V0KTtlbHNle2xldCBpPW4udGFyZ2V0O2UuX19pc1Byb3BlcnR5RWZmZWN0c0NsaWVudCYmZS5fX2RhdGFIYXNBY2Nlc3NvciYmZS5fX2RhdGFIYXNBY2Nlc3NvcltpXT9lW0R0LlJFQURfT05MWV0mJmVbRHQuUkVBRF9PTkxZXVtpXXx8ZS5fc2V0UGVuZGluZ1Byb3BlcnR5KGkscikmJnQuX2VucXVldWVDbGllbnQoZSk6dC5fc2V0VW5tYW5hZ2VkUHJvcGVydHlUb05vZGUoZSxpLHIpfX0pKHQscyxsLGMsYSl9fWZ1bmN0aW9uIG5lKHQsZSl7aWYoZS5pc0NvbXBvdW5kKXtsZXQgbj10Ll9fZGF0YUNvbXBvdW5kU3RvcmFnZXx8KHQuX19kYXRhQ29tcG91bmRTdG9yYWdlPXt9KSxpPWUucGFydHMscj1uZXcgQXJyYXkoaS5sZW5ndGgpO2ZvcihsZXQgdD0wO3Q8aS5sZW5ndGg7dCsrKXJbdF09aVt0XS5saXRlcmFsO2xldCBvPWUudGFyZ2V0O25bb109cixlLmxpdGVyYWwmJiJwcm9wZXJ0eSI9PWUua2luZCYmKCJjbGFzc05hbWUiPT09byYmKHQ9WSh0KSksdFtvXT1lLmxpdGVyYWwpfX1mdW5jdGlvbiBpZSh0LGUsbil7aWYobi5saXN0ZW5lckV2ZW50KXtsZXQgaT1uLnBhcnRzWzBdO3QuYWRkRXZlbnRMaXN0ZW5lcihuLmxpc3RlbmVyRXZlbnQsKGZ1bmN0aW9uKHQpeyEoZnVuY3Rpb24gcih0LGUsbixpLG8pe2xldCBhLHM9dC5kZXRhaWwsbD1zJiZzLnBhdGg7bD8oaT1KKG4saSxsKSxhPXMmJnMudmFsdWUpOmE9dC5jdXJyZW50VGFyZ2V0W25dLGE9bz8hYTphLGVbRHQuUkVBRF9PTkxZXSYmZVtEdC5SRUFEX09OTFldW2ldfHwhZS5fc2V0UGVuZGluZ1Byb3BlcnR5T3JQYXRoKGksYSwhMCxCb29sZWFuKGwpKXx8cyYmcy5xdWV1ZVByb3BlcnR5fHxlLl9pbnZhbGlkYXRlUHJvcGVydGllcygpfSkodCxlLG4udGFyZ2V0LGkuc291cmNlLGkubmVnYXRlKX0pKX19ZnVuY3Rpb24gcmUodCxlLG4saSxyLG8pe2xldCBhPXttZXRob2ROYW1lOmUubWV0aG9kTmFtZSxhcmdzOmUuYXJncyxtZXRob2RJbmZvOnIsZHluYW1pY0ZuOm89ZS5zdGF0aWN8fG8mJigib2JqZWN0IiE9dHlwZW9mIG98fG9bZS5tZXRob2ROYW1lXSl9O2ZvcihsZXQgcixvPTA7bzxlLmFyZ3MubGVuZ3RoJiYocj1lLmFyZ3Nbb10pO28rKylyLmxpdGVyYWx8fHQuX2FkZFByb3BlcnR5RWZmZWN0KHIucm9vdFByb3BlcnR5LG4se2ZuOmksaW5mbzphLHRyaWdnZXI6cn0pO3JldHVybiBvJiZ0Ll9hZGRQcm9wZXJ0eUVmZmVjdChlLm1ldGhvZE5hbWUsbix7Zm46aSxpbmZvOmF9KSxhfWZ1bmN0aW9uIG9lKHQsZSxuLGkscil7bGV0IG89dC5fbWV0aG9kSG9zdHx8dCxhPW9bci5tZXRob2ROYW1lXTtpZihhKXtsZXQgaT10Ll9tYXJzaGFsQXJncyhyLmFyZ3MsZSxuKTtyZXR1cm4gaT09PXp0P3p0OmEuYXBwbHkobyxpKX1yLmR5bmFtaWNGbnx8Y29uc29sZS53YXJuKCJtZXRob2QgYCIrci5tZXRob2ROYW1lKyJgIG5vdCBkZWZpbmVkIil9Y29uc3QgYWU9W10sc2U9bmV3IFJlZ0V4cCgiKFxcW1xcW3x7eylcXHMqKD86KCEpXFxzKik/KCg/OlthLXpBLVpfJF1bXFx3LjokXFwtKl0qKVxccyooPzpcXChcXHMqKD86KD86KD86KCg/OlthLXpBLVpfJF1bXFx3LjokXFwtKl0qKXwoPzpbLStdP1swLTldKlxcLj9bMC05XSsoPzpbZUVdWy0rXT9bMC05XSspPyl8KD86KD86Jyg/OlteJ1xcXFxdfFxcXFwuKSonKXwoPzpcIig/OlteXCJcXFxcXXxcXFxcLikqXCIpKSlcXHMqKSg/OixcXHMqKD86KCg/OlthLXpBLVpfJF1bXFx3LjokXFwtKl0qKXwoPzpbLStdP1swLTldKlxcLj9bMC05XSsoPzpbZUVdWy0rXT9bMC05XSspPyl8KD86KD86Jyg/OlteJ1xcXFxdfFxcXFwuKSonKXwoPzpcIig/OlteXCJcXFxcXXxcXFxcLikqXCIpKSlcXHMqKSkqKT8pXFwpXFxzKik/KSg/Ol1dfH19KSIsImciKTtmdW5jdGlvbiBsZSh0KXtsZXQgZT0iIjtmb3IobGV0IG49MDtuPHQubGVuZ3RoO24rKyl7ZSs9dFtuXS5saXRlcmFsfHwiIn1yZXR1cm4gZX1mdW5jdGlvbiBjZSh0KXtsZXQgZT10Lm1hdGNoKC8oW15cc10rPylcKChbXHNcU10qKVwpLyk7aWYoZSl7bGV0IHQ9e21ldGhvZE5hbWU6ZVsxXSxzdGF0aWM6ITAsYXJnczphZX07aWYoZVsyXS50cmltKCkpe3JldHVybihmdW5jdGlvbiBuKHQsZSl7cmV0dXJuIGUuYXJncz10Lm1hcCgoZnVuY3Rpb24odCl7bGV0IG49dWUodCk7cmV0dXJuIG4ubGl0ZXJhbHx8KGUuc3RhdGljPSExKSxufSksdGhpcyksZX0pKGVbMl0ucmVwbGFjZSgvXFwsL2csIiZjb21tYTsiKS5zcGxpdCgiLCIpLHQpfXJldHVybiB0fXJldHVybiBudWxsfWZ1bmN0aW9uIHVlKHQpe2xldCBlPXQudHJpbSgpLnJlcGxhY2UoLyZjb21tYTsvZywiLCIpLnJlcGxhY2UoL1xcKC4pL2csIiQxIiksbj17bmFtZTplLHZhbHVlOiIiLGxpdGVyYWw6ITF9LGk9ZVswXTtzd2l0Y2goIi0iPT09aSYmKGk9ZVsxXSksaT49IjAiJiZpPD0iOSImJihpPSIjIiksaSl7Y2FzZSInIjpjYXNlJyInOm4udmFsdWU9ZS5zbGljZSgxLC0xKSxuLmxpdGVyYWw9ITA7YnJlYWs7Y2FzZSIjIjpuLnZhbHVlPU51bWJlcihlKSxuLmxpdGVyYWw9ITB9cmV0dXJuIG4ubGl0ZXJhbHx8KG4ucm9vdFByb3BlcnR5PSQoZSksbi5zdHJ1Y3R1cmVkPVgoZSksbi5zdHJ1Y3R1cmVkJiYobi53aWxkY2FyZD0iLioiPT1lLnNsaWNlKC0yKSxuLndpbGRjYXJkJiYobi5uYW1lPWUuc2xpY2UoMCwtMikpKSksbn1mdW5jdGlvbiBoZSh0LGUsbil7bGV0IGk9bnQodCxuKTtyZXR1cm4gdm9pZCAwPT09aSYmKGk9ZVtuXSksaX1mdW5jdGlvbiBkZSh0LGUsbixpKXtjb25zdCByPXtpbmRleFNwbGljZXM6aX07RSYmIXQuX292ZXJyaWRlTGVnYWN5VW5kZWZpbmVkJiYoZS5zcGxpY2VzPXIpLHQubm90aWZ5UGF0aChuKyIuc3BsaWNlcyIsciksdC5ub3RpZnlQYXRoKG4rIi5sZW5ndGgiLGUubGVuZ3RoKSxFJiYhdC5fb3ZlcnJpZGVMZWdhY3lVbmRlZmluZWQmJihyLmluZGV4U3BsaWNlcz1bXSl9ZnVuY3Rpb24gcGUodCxlLG4saSxyLG8pe2RlKHQsZSxuLFt7aW5kZXg6aSxhZGRlZENvdW50OnIscmVtb3ZlZDpvLG9iamVjdDplLHR5cGU6InNwbGljZSJ9XSl9Y29uc3QgZmU9SSgodD0+e2NvbnN0IGU9UnQoTXQodCkpO3JldHVybiBjbGFzcyBleHRlbmRzIGV7Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMuX19pc1Byb3BlcnR5RWZmZWN0c0NsaWVudD0hMH1nZXQgUFJPUEVSVFlfRUZGRUNUX1RZUEVTKCl7cmV0dXJuIER0fV9pbml0aWFsaXplUHJvcGVydGllcygpe3N1cGVyLl9pbml0aWFsaXplUHJvcGVydGllcygpLHRoaXMuX3JlZ2lzdGVySG9zdCgpLHRoaXMuX19kYXRhQ2xpZW50c1JlYWR5PSExLHRoaXMuX19kYXRhUGVuZGluZ0NsaWVudHM9bnVsbCx0aGlzLl9fZGF0YVRvTm90aWZ5PW51bGwsdGhpcy5fX2RhdGFMaW5rZWRQYXRocz1udWxsLHRoaXMuX19kYXRhSGFzUGF0aHM9ITEsdGhpcy5fX2RhdGFDb21wb3VuZFN0b3JhZ2U9dGhpcy5fX2RhdGFDb21wb3VuZFN0b3JhZ2V8fG51bGwsdGhpcy5fX2RhdGFIb3N0PXRoaXMuX19kYXRhSG9zdHx8bnVsbCx0aGlzLl9fZGF0YVRlbXA9e30sdGhpcy5fX2RhdGFDbGllbnRzSW5pdGlhbGl6ZWQ9ITF9X3JlZ2lzdGVySG9zdCgpe2lmKG1lLmxlbmd0aCl7bGV0IHQ9bWVbbWUubGVuZ3RoLTFdO3QuX2VucXVldWVDbGllbnQodGhpcyksdGhpcy5fX2RhdGFIb3N0PXR9fV9pbml0aWFsaXplUHJvdG9Qcm9wZXJ0aWVzKHQpe3RoaXMuX19kYXRhPU9iamVjdC5jcmVhdGUodCksdGhpcy5fX2RhdGFQZW5kaW5nPU9iamVjdC5jcmVhdGUodCksdGhpcy5fX2RhdGFPbGQ9e319X2luaXRpYWxpemVJbnN0YW5jZVByb3BlcnRpZXModCl7bGV0IGU9dGhpc1tEdC5SRUFEX09OTFldO2ZvcihsZXQgbiBpbiB0KWUmJmVbbl18fCh0aGlzLl9fZGF0YVBlbmRpbmc9dGhpcy5fX2RhdGFQZW5kaW5nfHx7fSx0aGlzLl9fZGF0YU9sZD10aGlzLl9fZGF0YU9sZHx8e30sdGhpcy5fX2RhdGFbbl09dGhpcy5fX2RhdGFQZW5kaW5nW25dPXRbbl0pfV9hZGRQcm9wZXJ0eUVmZmVjdCh0LGUsbil7dGhpcy5fY3JlYXRlUHJvcGVydHlBY2Nlc3Nvcih0LGU9PUR0LlJFQURfT05MWSk7bGV0IGk9RnQodGhpcyxlLCEwKVt0XTtpfHwoaT10aGlzW2VdW3RdPVtdKSxpLnB1c2gobil9X3JlbW92ZVByb3BlcnR5RWZmZWN0KHQsZSxuKXtsZXQgaT1GdCh0aGlzLGUsITApW3RdLHI9aS5pbmRleE9mKG4pO3I+PTAmJmkuc3BsaWNlKHIsMSl9X2hhc1Byb3BlcnR5RWZmZWN0KHQsZSl7bGV0IG49dGhpc1tlXTtyZXR1cm4gQm9vbGVhbihuJiZuW3RdKX1faGFzUmVhZE9ubHlFZmZlY3QodCl7cmV0dXJuIHRoaXMuX2hhc1Byb3BlcnR5RWZmZWN0KHQsRHQuUkVBRF9PTkxZKX1faGFzTm90aWZ5RWZmZWN0KHQpe3JldHVybiB0aGlzLl9oYXNQcm9wZXJ0eUVmZmVjdCh0LER0Lk5PVElGWSl9X2hhc1JlZmxlY3RFZmZlY3QodCl7cmV0dXJuIHRoaXMuX2hhc1Byb3BlcnR5RWZmZWN0KHQsRHQuUkVGTEVDVCl9X2hhc0NvbXB1dGVkRWZmZWN0KHQpe3JldHVybiB0aGlzLl9oYXNQcm9wZXJ0eUVmZmVjdCh0LER0LkNPTVBVVEUpfV9zZXRQZW5kaW5nUHJvcGVydHlPclBhdGgodCxlLG4saSl7aWYoaXx8JChBcnJheS5pc0FycmF5KHQpP3RbMF06dCkhPT10KXtpZighaSl7bGV0IG49bnQodGhpcyx0KTtpZighKHQ9aXQodGhpcyx0LGUpKXx8IXN1cGVyLl9zaG91bGRQcm9wZXJ0eUNoYW5nZSh0LGUsbikpcmV0dXJuITF9aWYodGhpcy5fX2RhdGFIYXNQYXRocz0hMCx0aGlzLl9zZXRQZW5kaW5nUHJvcGVydHkodCxlLG4pKXJldHVybihmdW5jdGlvbiByKHQsZSxuKXtsZXQgaT10Ll9fZGF0YUxpbmtlZFBhdGhzO2lmKGkpe2xldCByO2ZvcihsZXQgbyBpbiBpKXtsZXQgYT1pW29dO1oobyxlKT8ocj1KKG8sYSxlKSx0Ll9zZXRQZW5kaW5nUHJvcGVydHlPclBhdGgocixuLCEwLCEwKSk6WihhLGUpJiYocj1KKGEsbyxlKSx0Ll9zZXRQZW5kaW5nUHJvcGVydHlPclBhdGgocixuLCEwLCEwKSl9fX0pKHRoaXMsdCxlKSwhMH1lbHNle2lmKHRoaXMuX19kYXRhSGFzQWNjZXNzb3ImJnRoaXMuX19kYXRhSGFzQWNjZXNzb3JbdF0pcmV0dXJuIHRoaXMuX3NldFBlbmRpbmdQcm9wZXJ0eSh0LGUsbik7dGhpc1t0XT1lfXJldHVybiExfV9zZXRVbm1hbmFnZWRQcm9wZXJ0eVRvTm9kZSh0LGUsbil7bj09PXRbZV0mJiJvYmplY3QiIT10eXBlb2Ygbnx8KCJjbGFzc05hbWUiPT09ZSYmKHQ9WSh0KSksdFtlXT1uKX1fc2V0UGVuZGluZ1Byb3BlcnR5KHQsZSxuKXtsZXQgaT10aGlzLl9fZGF0YUhhc1BhdGhzJiZYKHQpO3JldHVybiEhdGhpcy5fc2hvdWxkUHJvcGVydHlDaGFuZ2UodCxlLChpP3RoaXMuX19kYXRhVGVtcDp0aGlzLl9fZGF0YSlbdF0pJiYodGhpcy5fX2RhdGFQZW5kaW5nfHwodGhpcy5fX2RhdGFQZW5kaW5nPXt9LHRoaXMuX19kYXRhT2xkPXt9KSx0IGluIHRoaXMuX19kYXRhT2xkfHwodGhpcy5fX2RhdGFPbGRbdF09dGhpcy5fX2RhdGFbdF0pLGk/dGhpcy5fX2RhdGFUZW1wW3RdPWU6dGhpcy5fX2RhdGFbdF09ZSx0aGlzLl9fZGF0YVBlbmRpbmdbdF09ZSwoaXx8dGhpc1tEdC5OT1RJRlldJiZ0aGlzW0R0Lk5PVElGWV1bdF0pJiYodGhpcy5fX2RhdGFUb05vdGlmeT10aGlzLl9fZGF0YVRvTm90aWZ5fHx7fSx0aGlzLl9fZGF0YVRvTm90aWZ5W3RdPW4pLCEwKX1fc2V0UHJvcGVydHkodCxlKXt0aGlzLl9zZXRQZW5kaW5nUHJvcGVydHkodCxlLCEwKSYmdGhpcy5faW52YWxpZGF0ZVByb3BlcnRpZXMoKX1faW52YWxpZGF0ZVByb3BlcnRpZXMoKXt0aGlzLl9fZGF0YVJlYWR5JiZ0aGlzLl9mbHVzaFByb3BlcnRpZXMoKX1fZW5xdWV1ZUNsaWVudCh0KXt0aGlzLl9fZGF0YVBlbmRpbmdDbGllbnRzPXRoaXMuX19kYXRhUGVuZGluZ0NsaWVudHN8fFtdLHQhPT10aGlzJiZ0aGlzLl9fZGF0YVBlbmRpbmdDbGllbnRzLnB1c2godCl9X2ZsdXNoQ2xpZW50cygpe3RoaXMuX19kYXRhQ2xpZW50c1JlYWR5P3RoaXMuX19lbmFibGVPckZsdXNoQ2xpZW50cygpOih0aGlzLl9fZGF0YUNsaWVudHNSZWFkeT0hMCx0aGlzLl9yZWFkeUNsaWVudHMoKSx0aGlzLl9fZGF0YVJlYWR5PSEwKX1fX2VuYWJsZU9yRmx1c2hDbGllbnRzKCl7bGV0IHQ9dGhpcy5fX2RhdGFQZW5kaW5nQ2xpZW50cztpZih0KXt0aGlzLl9fZGF0YVBlbmRpbmdDbGllbnRzPW51bGw7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspe2xldCBuPXRbZV07bi5fX2RhdGFFbmFibGVkP24uX19kYXRhUGVuZGluZyYmbi5fZmx1c2hQcm9wZXJ0aWVzKCk6bi5fZW5hYmxlUHJvcGVydGllcygpfX19X3JlYWR5Q2xpZW50cygpe3RoaXMuX19lbmFibGVPckZsdXNoQ2xpZW50cygpfXNldFByb3BlcnRpZXModCxlKXtmb3IobGV0IG4gaW4gdCkhZSYmdGhpc1tEdC5SRUFEX09OTFldJiZ0aGlzW0R0LlJFQURfT05MWV1bbl18fHRoaXMuX3NldFBlbmRpbmdQcm9wZXJ0eU9yUGF0aChuLHRbbl0sITApO3RoaXMuX2ludmFsaWRhdGVQcm9wZXJ0aWVzKCl9cmVhZHkoKXt0aGlzLl9mbHVzaFByb3BlcnRpZXMoKSx0aGlzLl9fZGF0YUNsaWVudHNSZWFkeXx8dGhpcy5fZmx1c2hDbGllbnRzKCksdGhpcy5fX2RhdGFQZW5kaW5nJiZ0aGlzLl9mbHVzaFByb3BlcnRpZXMoKX1fcHJvcGVydGllc0NoYW5nZWQodCxlLG4pe2xldCBpLHI9dGhpcy5fX2RhdGFIYXNQYXRoczt0aGlzLl9fZGF0YUhhc1BhdGhzPSExLCR0KHRoaXMsZSxuLHIpLGk9dGhpcy5fX2RhdGFUb05vdGlmeSx0aGlzLl9fZGF0YVRvTm90aWZ5PW51bGwsdGhpcy5fcHJvcGFnYXRlUHJvcGVydHlDaGFuZ2VzKGUsbixyKSx0aGlzLl9mbHVzaENsaWVudHMoKSxWdCh0aGlzLHRoaXNbRHQuUkVGTEVDVF0sZSxuLHIpLFZ0KHRoaXMsdGhpc1tEdC5PQlNFUlZFXSxlLG4sciksaSYmKGZ1bmN0aW9uIG8odCxlLG4saSxyKXtsZXQgbyxhLHM9dFtEdC5OT1RJRlldLGw9T3QrKztmb3IobGV0IGEgaW4gZSllW2FdJiYocyYmVXQodCxzLGwsYSxuLGkscil8fHImJld0KHQsYSxuKSkmJihvPSEwKTtvJiYoYT10Ll9fZGF0YUhvc3QpJiZhLl9pbnZhbGlkYXRlUHJvcGVydGllcyYmYS5faW52YWxpZGF0ZVByb3BlcnRpZXMoKX0pKHRoaXMsaSxlLG4sciksMT09dGhpcy5fX2RhdGFDb3VudGVyJiYodGhpcy5fX2RhdGFUZW1wPXt9KX1fcHJvcGFnYXRlUHJvcGVydHlDaGFuZ2VzKHQsZSxuKXt0aGlzW0R0LlBST1BBR0FURV0mJlZ0KHRoaXMsdGhpc1tEdC5QUk9QQUdBVEVdLHQsZSxuKSx0aGlzLl9fdGVtcGxhdGVJbmZvJiZ0aGlzLl9ydW5FZmZlY3RzRm9yVGVtcGxhdGUodGhpcy5fX3RlbXBsYXRlSW5mbyx0LGUsbil9X3J1bkVmZmVjdHNGb3JUZW1wbGF0ZSh0LGUsbixpKXtjb25zdCByPShlLGkpPT57VnQodGhpcyx0LnByb3BlcnR5RWZmZWN0cyxlLG4saSx0Lm5vZGVMaXN0KTtmb3IobGV0IHI9dC5maXJzdENoaWxkO3I7cj1yLm5leHRTaWJsaW5nKXRoaXMuX3J1bkVmZmVjdHNGb3JUZW1wbGF0ZShyLGUsbixpKX07dC5ydW5FZmZlY3RzP3QucnVuRWZmZWN0cyhyLGUsaSk6cihlLGkpfWxpbmtQYXRocyh0LGUpe3Q9dHQodCksZT10dChlKSx0aGlzLl9fZGF0YUxpbmtlZFBhdGhzPXRoaXMuX19kYXRhTGlua2VkUGF0aHN8fHt9LHRoaXMuX19kYXRhTGlua2VkUGF0aHNbdF09ZX11bmxpbmtQYXRocyh0KXt0PXR0KHQpLHRoaXMuX19kYXRhTGlua2VkUGF0aHMmJmRlbGV0ZSB0aGlzLl9fZGF0YUxpbmtlZFBhdGhzW3RdfW5vdGlmeVNwbGljZXModCxlKXtsZXQgbj17cGF0aDoiIn07ZGUodGhpcyxudCh0aGlzLHQsbiksbi5wYXRoLGUpfWdldCh0LGUpe3JldHVybiBudChlfHx0aGlzLHQpfXNldCh0LGUsbil7bj9pdChuLHQsZSk6dGhpc1tEdC5SRUFEX09OTFldJiZ0aGlzW0R0LlJFQURfT05MWV1bdF18fHRoaXMuX3NldFBlbmRpbmdQcm9wZXJ0eU9yUGF0aCh0LGUsITApJiZ0aGlzLl9pbnZhbGlkYXRlUHJvcGVydGllcygpfXB1c2godCwuLi5lKXtsZXQgbj17cGF0aDoiIn0saT1udCh0aGlzLHQsbikscj1pLmxlbmd0aCxvPWkucHVzaCguLi5lKTtyZXR1cm4gZS5sZW5ndGgmJnBlKHRoaXMsaSxuLnBhdGgscixlLmxlbmd0aCxbXSksb31wb3AodCl7bGV0IGU9e3BhdGg6IiJ9LG49bnQodGhpcyx0LGUpLGk9Qm9vbGVhbihuLmxlbmd0aCkscj1uLnBvcCgpO3JldHVybiBpJiZwZSh0aGlzLG4sZS5wYXRoLG4ubGVuZ3RoLDAsW3JdKSxyfXNwbGljZSh0LGUsbiwuLi5pKXtsZXQgcixvPXtwYXRoOiIifSxhPW50KHRoaXMsdCxvKTtyZXR1cm4gZTwwP2U9YS5sZW5ndGgtTWF0aC5mbG9vcigtZSk6ZSYmKGU9TWF0aC5mbG9vcihlKSkscj0yPT09YXJndW1lbnRzLmxlbmd0aD9hLnNwbGljZShlKTphLnNwbGljZShlLG4sLi4uaSksKGkubGVuZ3RofHxyLmxlbmd0aCkmJnBlKHRoaXMsYSxvLnBhdGgsZSxpLmxlbmd0aCxyKSxyfXNoaWZ0KHQpe2xldCBlPXtwYXRoOiIifSxuPW50KHRoaXMsdCxlKSxpPUJvb2xlYW4obi5sZW5ndGgpLHI9bi5zaGlmdCgpO3JldHVybiBpJiZwZSh0aGlzLG4sZS5wYXRoLDAsMCxbcl0pLHJ9dW5zaGlmdCh0LC4uLmUpe2xldCBuPXtwYXRoOiIifSxpPW50KHRoaXMsdCxuKSxyPWkudW5zaGlmdCguLi5lKTtyZXR1cm4gZS5sZW5ndGgmJnBlKHRoaXMsaSxuLnBhdGgsMCxlLmxlbmd0aCxbXSkscn1ub3RpZnlQYXRoKHQsZSl7bGV0IG47aWYoMT09YXJndW1lbnRzLmxlbmd0aCl7bGV0IGk9e3BhdGg6IiJ9O2U9bnQodGhpcyx0LGkpLG49aS5wYXRofWVsc2Ugbj1BcnJheS5pc0FycmF5KHQpP3R0KHQpOnQ7dGhpcy5fc2V0UGVuZGluZ1Byb3BlcnR5T3JQYXRoKG4sZSwhMCwhMCkmJnRoaXMuX2ludmFsaWRhdGVQcm9wZXJ0aWVzKCl9X2NyZWF0ZVJlYWRPbmx5UHJvcGVydHkodCxlKXt0aGlzLl9hZGRQcm9wZXJ0eUVmZmVjdCh0LER0LlJFQURfT05MWSksZSYmKHRoaXNbIl9zZXQiKyhmdW5jdGlvbiBuKHQpe3JldHVybiB0WzBdLnRvVXBwZXJDYXNlKCkrdC5zdWJzdHJpbmcoMSl9KSh0KV09ZnVuY3Rpb24oZSl7dGhpcy5fc2V0UHJvcGVydHkodCxlKX0pfV9jcmVhdGVQcm9wZXJ0eU9ic2VydmVyKHQsZSxuKXtsZXQgaT17cHJvcGVydHk6dCxtZXRob2Q6ZSxkeW5hbWljRm46Qm9vbGVhbihuKX07dGhpcy5fYWRkUHJvcGVydHlFZmZlY3QodCxEdC5PQlNFUlZFLHtmbjpHdCxpbmZvOmksdHJpZ2dlcjp7bmFtZTp0fX0pLG4mJnRoaXMuX2FkZFByb3BlcnR5RWZmZWN0KGUsRHQuT0JTRVJWRSx7Zm46R3QsaW5mbzppLHRyaWdnZXI6e25hbWU6ZX19KX1fY3JlYXRlTWV0aG9kT2JzZXJ2ZXIodCxlKXtsZXQgbj1jZSh0KTtpZighbil0aHJvdyBuZXcgRXJyb3IoIk1hbGZvcm1lZCBvYnNlcnZlciBleHByZXNzaW9uICciK3QrIiciKTtyZSh0aGlzLG4sRHQuT0JTRVJWRSxvZSxudWxsLGUpfV9jcmVhdGVOb3RpZnlpbmdQcm9wZXJ0eSh0KXt0aGlzLl9hZGRQcm9wZXJ0eUVmZmVjdCh0LER0Lk5PVElGWSx7Zm46WXQsaW5mbzp7ZXZlbnROYW1lOmx0KHQpKyItY2hhbmdlZCIscHJvcGVydHk6dH19KX1fY3JlYXRlUmVmbGVjdGVkUHJvcGVydHkodCl7bGV0IGU9dGhpcy5jb25zdHJ1Y3Rvci5hdHRyaWJ1dGVOYW1lRm9yUHJvcGVydHkodCk7Ii0iPT09ZVswXT9jb25zb2xlLndhcm4oIlByb3BlcnR5ICIrdCsiIGNhbm5vdCBiZSByZWZsZWN0ZWQgdG8gYXR0cmlidXRlICIrZSsnIGJlY2F1c2UgIi0iIGlzIG5vdCBhIHZhbGlkIHN0YXJ0aW5nIGF0dHJpYnV0ZSBuYW1lLiBVc2UgYSBsb3dlcmNhc2UgZmlyc3QgbGV0dGVyIGZvciB0aGUgcHJvcGVydHkgaW5zdGVhZC4nKTp0aGlzLl9hZGRQcm9wZXJ0eUVmZmVjdCh0LER0LlJFRkxFQ1Qse2ZuOlh0LGluZm86e2F0dHJOYW1lOmV9fSl9X2NyZWF0ZUNvbXB1dGVkUHJvcGVydHkodCxlLG4pe2xldCBpPWNlKGUpO2lmKCFpKXRocm93IG5ldyBFcnJvcigiTWFsZm9ybWVkIGNvbXB1dGVkIGV4cHJlc3Npb24gJyIrZSsiJyIpO2NvbnN0IHI9cmUodGhpcyxpLER0LkNPTVBVVEUsSnQsdCxuKTtGdCh0aGlzLEJ0KVt0XT1yfV9tYXJzaGFsQXJncyh0LGUsbil7Y29uc3QgaT10aGlzLl9fZGF0YSxyPVtdO2ZvcihsZXQgbz0wLGE9dC5sZW5ndGg7bzxhO28rKyl7bGV0e25hbWU6YSxzdHJ1Y3R1cmVkOnMsd2lsZGNhcmQ6bCx2YWx1ZTpjLGxpdGVyYWw6dX09dFtvXTtpZighdSlpZihsKXtjb25zdCB0PVooYSxlKSxyPWhlKGksbix0P2U6YSk7Yz17cGF0aDp0P2U6YSx2YWx1ZTpyLGJhc2U6dD9udChpLGEpOnJ9fWVsc2UgYz1zP2hlKGksbixhKTppW2FdO2lmKEUmJiF0aGlzLl9vdmVycmlkZUxlZ2FjeVVuZGVmaW5lZCYmdm9pZCAwPT09YyYmdC5sZW5ndGg+MSlyZXR1cm4genQ7cltvXT1jfXJldHVybiByfXN0YXRpYyBhZGRQcm9wZXJ0eUVmZmVjdCh0LGUsbil7dGhpcy5wcm90b3R5cGUuX2FkZFByb3BlcnR5RWZmZWN0KHQsZSxuKX1zdGF0aWMgY3JlYXRlUHJvcGVydHlPYnNlcnZlcih0LGUsbil7dGhpcy5wcm90b3R5cGUuX2NyZWF0ZVByb3BlcnR5T2JzZXJ2ZXIodCxlLG4pfXN0YXRpYyBjcmVhdGVNZXRob2RPYnNlcnZlcih0LGUpe3RoaXMucHJvdG90eXBlLl9jcmVhdGVNZXRob2RPYnNlcnZlcih0LGUpfXN0YXRpYyBjcmVhdGVOb3RpZnlpbmdQcm9wZXJ0eSh0KXt0aGlzLnByb3RvdHlwZS5fY3JlYXRlTm90aWZ5aW5nUHJvcGVydHkodCl9c3RhdGljIGNyZWF0ZVJlYWRPbmx5UHJvcGVydHkodCxlKXt0aGlzLnByb3RvdHlwZS5fY3JlYXRlUmVhZE9ubHlQcm9wZXJ0eSh0LGUpfXN0YXRpYyBjcmVhdGVSZWZsZWN0ZWRQcm9wZXJ0eSh0KXt0aGlzLnByb3RvdHlwZS5fY3JlYXRlUmVmbGVjdGVkUHJvcGVydHkodCl9c3RhdGljIGNyZWF0ZUNvbXB1dGVkUHJvcGVydHkodCxlLG4pe3RoaXMucHJvdG90eXBlLl9jcmVhdGVDb21wdXRlZFByb3BlcnR5KHQsZSxuKX1zdGF0aWMgYmluZFRlbXBsYXRlKHQpe3JldHVybiB0aGlzLnByb3RvdHlwZS5fYmluZFRlbXBsYXRlKHQpfV9iaW5kVGVtcGxhdGUodCxlKXtsZXQgbj10aGlzLmNvbnN0cnVjdG9yLl9wYXJzZVRlbXBsYXRlKHQpLGk9dGhpcy5fX3ByZUJvdW5kVGVtcGxhdGVJbmZvPT1uO2lmKCFpKWZvcihsZXQgdCBpbiBuLnByb3BlcnR5RWZmZWN0cyl0aGlzLl9jcmVhdGVQcm9wZXJ0eUFjY2Vzc29yKHQpO2lmKGUpaWYobj1PYmplY3QuY3JlYXRlKG4pLG4ud2FzUHJlQm91bmQ9aSx0aGlzLl9fdGVtcGxhdGVJbmZvKXtjb25zdCBlPXQuX3BhcmVudFRlbXBsYXRlSW5mb3x8dGhpcy5fX3RlbXBsYXRlSW5mbyxpPWUubGFzdENoaWxkO24ucGFyZW50PWUsZS5sYXN0Q2hpbGQ9bixuLnByZXZpb3VzU2libGluZz1pLGk/aS5uZXh0U2libGluZz1uOmUuZmlyc3RDaGlsZD1ufWVsc2UgdGhpcy5fX3RlbXBsYXRlSW5mbz1uO2Vsc2UgdGhpcy5fX3ByZUJvdW5kVGVtcGxhdGVJbmZvPW47cmV0dXJuIG59c3RhdGljIF9hZGRUZW1wbGF0ZVByb3BlcnR5RWZmZWN0KHQsZSxuKXsodC5ob3N0UHJvcHM9dC5ob3N0UHJvcHN8fHt9KVtlXT0hMDtsZXQgaT10LnByb3BlcnR5RWZmZWN0cz10LnByb3BlcnR5RWZmZWN0c3x8e307KGlbZV09aVtlXXx8W10pLnB1c2gobil9X3N0YW1wVGVtcGxhdGUodCxlKXtlPWV8fHRoaXMuX2JpbmRUZW1wbGF0ZSh0LCEwKSxtZS5wdXNoKHRoaXMpO2xldCBuPXN1cGVyLl9zdGFtcFRlbXBsYXRlKHQsZSk7aWYobWUucG9wKCksZS5ub2RlTGlzdD1uLm5vZGVMaXN0LCFlLndhc1ByZUJvdW5kKXtsZXQgdD1lLmNoaWxkTm9kZXM9W107Zm9yKGxldCBlPW4uZmlyc3RDaGlsZDtlO2U9ZS5uZXh0U2libGluZyl0LnB1c2goZSl9cmV0dXJuIG4udGVtcGxhdGVJbmZvPWUsKGZ1bmN0aW9uIGkodCxlKXtsZXR7bm9kZUxpc3Q6bixub2RlSW5mb0xpc3Q6aX09ZTtpZihpLmxlbmd0aClmb3IobGV0IGU9MDtlPGkubGVuZ3RoO2UrKyl7bGV0IHI9bltlXSxvPWlbZV0uYmluZGluZ3M7aWYobylmb3IobGV0IGU9MDtlPG8ubGVuZ3RoO2UrKyl7bGV0IG49b1tlXTtuZShyLG4pLGllKHIsdCxuKX1yLl9fZGF0YUhvc3Q9dH19KSh0aGlzLGUpLHRoaXMuX19kYXRhQ2xpZW50c1JlYWR5JiYodGhpcy5fcnVuRWZmZWN0c0ZvclRlbXBsYXRlKGUsdGhpcy5fX2RhdGEsbnVsbCwhMSksdGhpcy5fZmx1c2hDbGllbnRzKCkpLG59X3JlbW92ZUJvdW5kRG9tKHQpe2NvbnN0IGU9dC50ZW1wbGF0ZUluZm8se3ByZXZpb3VzU2libGluZzpuLG5leHRTaWJsaW5nOmkscGFyZW50OnJ9PWU7bj9uLm5leHRTaWJsaW5nPWk6ciYmKHIuZmlyc3RDaGlsZD1pKSxpP2kucHJldmlvdXNTaWJsaW5nPW46ciYmKHIubGFzdENoaWxkPW4pLGUubmV4dFNpYmxpbmc9ZS5wcmV2aW91c1NpYmxpbmc9bnVsbDtsZXQgbz1lLmNoaWxkTm9kZXM7Zm9yKGxldCB0PTA7dDxvLmxlbmd0aDt0Kyspe2xldCBlPW9bdF07WShZKGUpLnBhcmVudE5vZGUpLnJlbW92ZUNoaWxkKGUpfX1zdGF0aWMgX3BhcnNlVGVtcGxhdGVOb2RlKHQsbixpKXtsZXQgcj1lLl9wYXJzZVRlbXBsYXRlTm9kZS5jYWxsKHRoaXMsdCxuLGkpO2lmKHQubm9kZVR5cGU9PT1Ob2RlLlRFWFRfTk9ERSl7bGV0IGU9dGhpcy5fcGFyc2VCaW5kaW5ncyh0LnRleHRDb250ZW50LG4pO2UmJih0LnRleHRDb250ZW50PWxlKGUpfHwiICIsUXQodGhpcyxuLGksInRleHQiLCJ0ZXh0Q29udGVudCIsZSkscj0hMCl9cmV0dXJuIHJ9c3RhdGljIF9wYXJzZVRlbXBsYXRlTm9kZUF0dHJpYnV0ZSh0LG4saSxyLG8pe2xldCBhPXRoaXMuX3BhcnNlQmluZGluZ3MobyxuKTtpZihhKXtsZXQgZT1yLG89InByb3BlcnR5IjtIdC50ZXN0KHIpP289ImF0dHJpYnV0ZSI6IiQiPT1yW3IubGVuZ3RoLTFdJiYocj1yLnNsaWNlKDAsLTEpLG89ImF0dHJpYnV0ZSIpO2xldCBzPWxlKGEpO3JldHVybiBzJiYiYXR0cmlidXRlIj09byYmKCJjbGFzcyI9PXImJnQuaGFzQXR0cmlidXRlKCJjbGFzcyIpJiYocys9IiAiK3QuZ2V0QXR0cmlidXRlKHIpKSx0LnNldEF0dHJpYnV0ZShyLHMpKSwiYXR0cmlidXRlIj09byYmImRpc2FibGUtdXBncmFkZSQiPT1lJiZ0LnNldEF0dHJpYnV0ZShyLCIiKSwiaW5wdXQiPT09dC5sb2NhbE5hbWUmJiJ2YWx1ZSI9PT1lJiZ0LnNldEF0dHJpYnV0ZShlLCIiKSx0LnJlbW92ZUF0dHJpYnV0ZShlKSwicHJvcGVydHkiPT09byYmKHI9c3QocikpLFF0KHRoaXMsbixpLG8scixhLHMpLCEwfXJldHVybiBlLl9wYXJzZVRlbXBsYXRlTm9kZUF0dHJpYnV0ZS5jYWxsKHRoaXMsdCxuLGkscixvKX1zdGF0aWMgX3BhcnNlVGVtcGxhdGVOZXN0ZWRUZW1wbGF0ZSh0LG4saSl7bGV0IHI9ZS5fcGFyc2VUZW1wbGF0ZU5lc3RlZFRlbXBsYXRlLmNhbGwodGhpcyx0LG4saSk7Y29uc3Qgbz10LnBhcmVudE5vZGUsYT1pLnRlbXBsYXRlSW5mbyxzPSJkb20taWYiPT09by5sb2NhbE5hbWU7QyYmKHN8fCJkb20tcmVwZWF0Ij09PW8ubG9jYWxOYW1lKSYmKG8ucmVtb3ZlQ2hpbGQodCksKGk9aS5wYXJlbnRJbmZvKS50ZW1wbGF0ZUluZm89YSxpLm5vdGVkPSEwLHI9ITEpO2xldCBsPWEuaG9zdFByb3BzO2lmKEEmJnMpbCYmKG4uaG9zdFByb3BzPU9iamVjdC5hc3NpZ24obi5ob3N0UHJvcHN8fHt9LGwpLEN8fChpLnBhcmVudEluZm8ubm90ZWQ9ITApKTtlbHNle2xldCB0PSJ7Ijtmb3IobGV0IGUgaW4gbCl7UXQodGhpcyxuLGksInByb3BlcnR5IiwiX2hvc3RfIitlLFt7bW9kZTp0LHNvdXJjZTplLGRlcGVuZGVuY2llczpbZV0saG9zdFByb3A6ITB9XSl9fXJldHVybiByfXN0YXRpYyBfcGFyc2VCaW5kaW5ncyh0LGUpe2xldCBuLGk9W10scj0wO2Zvcig7bnVsbCE9PShuPXNlLmV4ZWModCkpOyl7bi5pbmRleD5yJiZpLnB1c2goe2xpdGVyYWw6dC5zbGljZShyLG4uaW5kZXgpfSk7bGV0IG89blsxXVswXSxhPUJvb2xlYW4oblsyXSkscz1uWzNdLnRyaW0oKSxsPSExLGM9IiIsdT0tMTsieyI9PW8mJih1PXMuaW5kZXhPZigiOjoiKSk+MCYmKGM9cy5zdWJzdHJpbmcodSsyKSxzPXMuc3Vic3RyaW5nKDAsdSksbD0hMCk7bGV0IGg9Y2UocyksZD1bXTtpZihoKXtsZXR7YXJnczp0LG1ldGhvZE5hbWU6bn09aDtmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKyl7bGV0IG49dFtlXTtuLmxpdGVyYWx8fGQucHVzaChuKX1sZXQgaT1lLmR5bmFtaWNGbnM7KGkmJmlbbl18fGguc3RhdGljKSYmKGQucHVzaChuKSxoLmR5bmFtaWNGbj0hMCl9ZWxzZSBkLnB1c2gocyk7aS5wdXNoKHtzb3VyY2U6cyxtb2RlOm8sbmVnYXRlOmEsY3VzdG9tRXZlbnQ6bCxzaWduYXR1cmU6aCxkZXBlbmRlbmNpZXM6ZCxldmVudDpjfSkscj1zZS5sYXN0SW5kZXh9aWYociYmcjx0Lmxlbmd0aCl7bGV0IGU9dC5zdWJzdHJpbmcocik7ZSYmaS5wdXNoKHtsaXRlcmFsOmV9KX1yZXR1cm4gaS5sZW5ndGg/aTpudWxsfXN0YXRpYyBfZXZhbHVhdGVCaW5kaW5nKHQsZSxuLGkscixvKXtsZXQgYTtyZXR1cm4gYT1lLnNpZ25hdHVyZT9vZSh0LG4saSwwLGUuc2lnbmF0dXJlKTpuIT1lLnNvdXJjZT9udCh0LGUuc291cmNlKTpvJiZYKG4pP250KHQsbik6dC5fX2RhdGFbbl0sZS5uZWdhdGUmJihhPSFhKSxhfX19KSksbWU9W107Y29uc3QgZ2U9SSgodD0+e2NvbnN0IGU9eHQodCk7ZnVuY3Rpb24gbih0KXtjb25zdCBlPU9iamVjdC5nZXRQcm90b3R5cGVPZih0KTtyZXR1cm4gZS5wcm90b3R5cGUgaW5zdGFuY2VvZiByP2U6bnVsbH1mdW5jdGlvbiBpKHQpe2lmKCF0Lmhhc093blByb3BlcnR5KEpTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoIl9fb3duUHJvcGVydGllcyIsdCkpKXtsZXQgZT1udWxsO2lmKHQuaGFzT3duUHJvcGVydHkoSlNDb21waWxlcl9yZW5hbWVQcm9wZXJ0eSgicHJvcGVydGllcyIsdCkpKXtjb25zdCBuPXQucHJvcGVydGllcztuJiYoZT0oCi8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmZ1bmN0aW9uIGUodCl7Y29uc3QgZT17fTtmb3IobGV0IG4gaW4gdCl7Y29uc3QgaT10W25dO2Vbbl09ImZ1bmN0aW9uIj09dHlwZW9mIGk/e3R5cGU6aX06aX1yZXR1cm4gZX0pKG4pKX10Ll9fb3duUHJvcGVydGllcz1lfXJldHVybiB0Ll9fb3duUHJvcGVydGllc31jbGFzcyByIGV4dGVuZHMgZXtzdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcygpe2lmKCF0aGlzLmhhc093blByb3BlcnR5KEpTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoIl9fb2JzZXJ2ZWRBdHRyaWJ1dGVzIix0aGlzKSkpe2NvbnN0IHQ9dGhpcy5fcHJvcGVydGllczt0aGlzLl9fb2JzZXJ2ZWRBdHRyaWJ1dGVzPXQ/T2JqZWN0LmtleXModCkubWFwKCh0PT50aGlzLnByb3RvdHlwZS5fYWRkUHJvcGVydHlUb0F0dHJpYnV0ZU1hcCh0KSkpOltdfXJldHVybiB0aGlzLl9fb2JzZXJ2ZWRBdHRyaWJ1dGVzfXN0YXRpYyBmaW5hbGl6ZSgpe2lmKCF0aGlzLmhhc093blByb3BlcnR5KEpTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoIl9fZmluYWxpemVkIix0aGlzKSkpe2NvbnN0IHQ9bih0aGlzKTt0JiZ0LmZpbmFsaXplKCksdGhpcy5fX2ZpbmFsaXplZD0hMCx0aGlzLl9maW5hbGl6ZUNsYXNzKCl9fXN0YXRpYyBfZmluYWxpemVDbGFzcygpe2NvbnN0IHQ9aSh0aGlzKTt0JiZ0aGlzLmNyZWF0ZVByb3BlcnRpZXModCl9c3RhdGljIGdldCBfcHJvcGVydGllcygpe2lmKCF0aGlzLmhhc093blByb3BlcnR5KEpTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoIl9fcHJvcGVydGllcyIsdGhpcykpKXtjb25zdCB0PW4odGhpcyk7dGhpcy5fX3Byb3BlcnRpZXM9T2JqZWN0LmFzc2lnbih7fSx0JiZ0Ll9wcm9wZXJ0aWVzLGkodGhpcykpfXJldHVybiB0aGlzLl9fcHJvcGVydGllc31zdGF0aWMgdHlwZUZvclByb3BlcnR5KHQpe2NvbnN0IGU9dGhpcy5fcHJvcGVydGllc1t0XTtyZXR1cm4gZSYmZS50eXBlfV9pbml0aWFsaXplUHJvcGVydGllcygpe3RoaXMuY29uc3RydWN0b3IuZmluYWxpemUoKSxzdXBlci5faW5pdGlhbGl6ZVByb3BlcnRpZXMoKX1jb25uZWN0ZWRDYWxsYmFjaygpe3N1cGVyLmNvbm5lY3RlZENhbGxiYWNrJiZzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpLHRoaXMuX2VuYWJsZVByb3BlcnRpZXMoKX1kaXNjb25uZWN0ZWRDYWxsYmFjaygpe3N1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrJiZzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpfX1yZXR1cm4gcn0pKSxfZT13aW5kb3cuU2hhZHlDU1MmJndpbmRvdy5TaGFkeUNTUy5jc3NCdWlsZCx5ZT1JKCh0PT57Y29uc3QgZT1nZShmZSh0KSk7ZnVuY3Rpb24gbih0LGUsbixpKXtuLmNvbXB1dGVkJiYobi5yZWFkT25seT0hMCksbi5jb21wdXRlZCYmKHQuX2hhc1JlYWRPbmx5RWZmZWN0KGUpP2NvbnNvbGUud2FybihgQ2Fubm90IHJlZGVmaW5lIGNvbXB1dGVkIHByb3BlcnR5ICcke2V9Jy5gKTp0Ll9jcmVhdGVDb21wdXRlZFByb3BlcnR5KGUsbi5jb21wdXRlZCxpKSksbi5yZWFkT25seSYmIXQuX2hhc1JlYWRPbmx5RWZmZWN0KGUpP3QuX2NyZWF0ZVJlYWRPbmx5UHJvcGVydHkoZSwhbi5jb21wdXRlZCk6ITE9PT1uLnJlYWRPbmx5JiZ0Ll9oYXNSZWFkT25seUVmZmVjdChlKSYmY29uc29sZS53YXJuKGBDYW5ub3QgbWFrZSByZWFkT25seSBwcm9wZXJ0eSAnJHtlfScgbm9uLXJlYWRPbmx5LmApLG4ucmVmbGVjdFRvQXR0cmlidXRlJiYhdC5faGFzUmVmbGVjdEVmZmVjdChlKT90Ll9jcmVhdGVSZWZsZWN0ZWRQcm9wZXJ0eShlKTohMT09PW4ucmVmbGVjdFRvQXR0cmlidXRlJiZ0Ll9oYXNSZWZsZWN0RWZmZWN0KGUpJiZjb25zb2xlLndhcm4oYENhbm5vdCBtYWtlIHJlZmxlY3RlZCBwcm9wZXJ0eSAnJHtlfScgbm9uLXJlZmxlY3RlZC5gKSxuLm5vdGlmeSYmIXQuX2hhc05vdGlmeUVmZmVjdChlKT90Ll9jcmVhdGVOb3RpZnlpbmdQcm9wZXJ0eShlKTohMT09PW4ubm90aWZ5JiZ0Ll9oYXNOb3RpZnlFZmZlY3QoZSkmJmNvbnNvbGUud2FybihgQ2Fubm90IG1ha2Ugbm90aWZ5IHByb3BlcnR5ICcke2V9JyBub24tbm90aWZ5LmApLG4ub2JzZXJ2ZXImJnQuX2NyZWF0ZVByb3BlcnR5T2JzZXJ2ZXIoZSxuLm9ic2VydmVyLGlbbi5vYnNlcnZlcl0pLHQuX2FkZFByb3BlcnR5VG9BdHRyaWJ1dGVNYXAoZSl9ZnVuY3Rpb24gaSh0LGUsbixpKXtpZighX2Upe2NvbnN0IHI9ZS5jb250ZW50LnF1ZXJ5U2VsZWN0b3JBbGwoInN0eWxlIiksbz1HKGUpLGE9KGZ1bmN0aW9uIHIodCl7bGV0IGU9Rih0KTtyZXR1cm4gZT9XKGUpOltdfSkobikscz1lLmNvbnRlbnQuZmlyc3RFbGVtZW50Q2hpbGQ7Zm9yKGxldCBuPTA7bjxhLmxlbmd0aDtuKyspe2xldCByPWFbbl07ci50ZXh0Q29udGVudD10Ll9wcm9jZXNzU3R5bGVUZXh0KHIudGV4dENvbnRlbnQsaSksZS5jb250ZW50Lmluc2VydEJlZm9yZShyLHMpfWxldCBsPTA7Zm9yKGxldCBlPTA7ZTxvLmxlbmd0aDtlKyspe2xldCBuPW9bZV0sYT1yW2xdO2EhPT1uPyhuPW4uY2xvbmVOb2RlKCEwKSxhLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKG4sYSkpOmwrKyxuLnRleHRDb250ZW50PXQuX3Byb2Nlc3NTdHlsZVRleHQobi50ZXh0Q29udGVudCxpKX19aWYod2luZG93LlNoYWR5Q1NTJiZ3aW5kb3cuU2hhZHlDU1MucHJlcGFyZVRlbXBsYXRlKGUsbiksUCYmX2UmJmcpe2NvbnN0IG49ZS5jb250ZW50LnF1ZXJ5U2VsZWN0b3JBbGwoInN0eWxlIik7aWYobil7bGV0IGU9IiI7QXJyYXkuZnJvbShuKS5mb3JFYWNoKCh0PT57ZSs9dC50ZXh0Q29udGVudCx0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodCl9KSksdC5fc3R5bGVTaGVldD1uZXcgQ1NTU3R5bGVTaGVldCx0Ll9zdHlsZVNoZWV0LnJlcGxhY2VTeW5jKGUpfX19cmV0dXJuIGNsYXNzIGV4dGVuZHMgZXtzdGF0aWMgZ2V0IHBvbHltZXJFbGVtZW50VmVyc2lvbigpe3JldHVybiIzLjQuMSJ9c3RhdGljIF9maW5hbGl6ZUNsYXNzKCl7ZS5fZmluYWxpemVDbGFzcy5jYWxsKHRoaXMpO2NvbnN0IHQ9KGZ1bmN0aW9uIG4odCl7cmV0dXJuIHQuaGFzT3duUHJvcGVydHkoSlNDb21waWxlcl9yZW5hbWVQcm9wZXJ0eSgiX19vd25PYnNlcnZlcnMiLHQpKXx8KHQuX19vd25PYnNlcnZlcnM9dC5oYXNPd25Qcm9wZXJ0eShKU0NvbXBpbGVyX3JlbmFtZVByb3BlcnR5KCJvYnNlcnZlcnMiLHQpKT90Lm9ic2VydmVyczpudWxsKSx0Ll9fb3duT2JzZXJ2ZXJzfSkodGhpcyk7dCYmdGhpcy5jcmVhdGVPYnNlcnZlcnModCx0aGlzLl9wcm9wZXJ0aWVzKSx0aGlzLl9wcmVwYXJlVGVtcGxhdGUoKX1zdGF0aWMgX3ByZXBhcmVUZW1wbGF0ZSgpe2xldCB0PXRoaXMudGVtcGxhdGU7dCYmKCJzdHJpbmciPT10eXBlb2YgdD8oY29uc29sZS5lcnJvcigidGVtcGxhdGUgZ2V0dGVyIG11c3QgcmV0dXJuIEhUTUxUZW1wbGF0ZUVsZW1lbnQiKSx0PW51bGwpOnd8fCh0PXQuY2xvbmVOb2RlKCEwKSkpLHRoaXMucHJvdG90eXBlLl90ZW1wbGF0ZT10fXN0YXRpYyBjcmVhdGVQcm9wZXJ0aWVzKHQpe2ZvcihsZXQgZSBpbiB0KW4odGhpcy5wcm90b3R5cGUsZSx0W2VdLHQpfXN0YXRpYyBjcmVhdGVPYnNlcnZlcnModCxlKXtjb25zdCBuPXRoaXMucHJvdG90eXBlO2ZvcihsZXQgaT0wO2k8dC5sZW5ndGg7aSsrKW4uX2NyZWF0ZU1ldGhvZE9ic2VydmVyKHRbaV0sZSl9c3RhdGljIGdldCB0ZW1wbGF0ZSgpe2lmKCF0aGlzLmhhc093blByb3BlcnR5KEpTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoIl90ZW1wbGF0ZSIsdGhpcykpKXtjb25zdCB0PXRoaXMucHJvdG90eXBlLmhhc093blByb3BlcnR5KEpTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoIl90ZW1wbGF0ZSIsdGhpcy5wcm90b3R5cGUpKT90aGlzLnByb3RvdHlwZS5fdGVtcGxhdGU6dm9pZCAwO3RoaXMuX3RlbXBsYXRlPXZvaWQgMCE9PXQ/dDp0aGlzLmhhc093blByb3BlcnR5KEpTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoImlzIix0aGlzKSkmJihmdW5jdGlvbiBlKHQpe2xldCBlPW51bGw7aWYodCYmKCFifHx4KSYmKGU9Qi5pbXBvcnQodCwidGVtcGxhdGUiKSxiJiYhZSkpdGhyb3cgbmV3IEVycm9yKGBzdHJpY3RUZW1wbGF0ZVBvbGljeTogZXhwZWN0aW5nIGRvbS1tb2R1bGUgb3IgbnVsbCB0ZW1wbGF0ZSBmb3IgJHt0fWApO3JldHVybiBlfSkodGhpcy5pcyl8fE9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzLnByb3RvdHlwZSkuY29uc3RydWN0b3IudGVtcGxhdGV9cmV0dXJuIHRoaXMuX3RlbXBsYXRlfXN0YXRpYyBzZXQgdGVtcGxhdGUodCl7dGhpcy5fdGVtcGxhdGU9dH1zdGF0aWMgZ2V0IGltcG9ydFBhdGgoKXtpZighdGhpcy5oYXNPd25Qcm9wZXJ0eShKU0NvbXBpbGVyX3JlbmFtZVByb3BlcnR5KCJfaW1wb3J0UGF0aCIsdGhpcykpKXtjb25zdCB0PXRoaXMuaW1wb3J0TWV0YTtpZih0KXRoaXMuX2ltcG9ydFBhdGg9Zih0LnVybCk7ZWxzZXtjb25zdCB0PUIuaW1wb3J0KHRoaXMuaXMpO3RoaXMuX2ltcG9ydFBhdGg9dCYmdC5hc3NldHBhdGh8fE9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzLnByb3RvdHlwZSkuY29uc3RydWN0b3IuaW1wb3J0UGF0aH19cmV0dXJuIHRoaXMuX2ltcG9ydFBhdGh9Y29uc3RydWN0b3IoKXtzdXBlcigpfV9pbml0aWFsaXplUHJvcGVydGllcygpe3RoaXMuY29uc3RydWN0b3IuZmluYWxpemUoKSx0aGlzLmNvbnN0cnVjdG9yLl9maW5hbGl6ZVRlbXBsYXRlKHRoaXMubG9jYWxOYW1lKSxzdXBlci5faW5pdGlhbGl6ZVByb3BlcnRpZXMoKSx0aGlzLnJvb3RQYXRoPV8sdGhpcy5pbXBvcnRQYXRoPXRoaXMuY29uc3RydWN0b3IuaW1wb3J0UGF0aDtsZXQgdD0oZnVuY3Rpb24gZSh0KXtpZighdC5oYXNPd25Qcm9wZXJ0eShKU0NvbXBpbGVyX3JlbmFtZVByb3BlcnR5KCJfX3Byb3BlcnR5RGVmYXVsdHMiLHQpKSl7dC5fX3Byb3BlcnR5RGVmYXVsdHM9bnVsbDtsZXQgZT10Ll9wcm9wZXJ0aWVzO2ZvcihsZXQgbiBpbiBlKXtsZXQgaT1lW25dOyJ2YWx1ZSJpbiBpJiYodC5fX3Byb3BlcnR5RGVmYXVsdHM9dC5fX3Byb3BlcnR5RGVmYXVsdHN8fHt9LHQuX19wcm9wZXJ0eURlZmF1bHRzW25dPWkpfX1yZXR1cm4gdC5fX3Byb3BlcnR5RGVmYXVsdHN9KSh0aGlzLmNvbnN0cnVjdG9yKTtpZih0KWZvcihsZXQgZSBpbiB0KXtsZXQgbj10W2VdO2lmKHRoaXMuX2NhbkFwcGx5UHJvcGVydHlEZWZhdWx0KGUpKXtsZXQgdD0iZnVuY3Rpb24iPT10eXBlb2Ygbi52YWx1ZT9uLnZhbHVlLmNhbGwodGhpcyk6bi52YWx1ZTt0aGlzLl9oYXNBY2Nlc3NvcihlKT90aGlzLl9zZXRQZW5kaW5nUHJvcGVydHkoZSx0LCEwKTp0aGlzW2VdPXR9fX1fY2FuQXBwbHlQcm9wZXJ0eURlZmF1bHQodCl7cmV0dXJuIXRoaXMuaGFzT3duUHJvcGVydHkodCl9c3RhdGljIF9wcm9jZXNzU3R5bGVUZXh0KHQsZSl7cmV0dXJuIHAodCxlKX1zdGF0aWMgX2ZpbmFsaXplVGVtcGxhdGUodCl7Y29uc3QgZT10aGlzLnByb3RvdHlwZS5fdGVtcGxhdGU7aWYoZSYmIWUuX19wb2x5bWVyRmluYWxpemVkKXtlLl9fcG9seW1lckZpbmFsaXplZD0hMDtjb25zdCBuPXRoaXMuaW1wb3J0UGF0aDtpKHRoaXMsZSx0LG4/ZChuKToiIiksdGhpcy5wcm90b3R5cGUuX2JpbmRUZW1wbGF0ZShlKX19Y29ubmVjdGVkQ2FsbGJhY2soKXt3aW5kb3cuU2hhZHlDU1MmJnRoaXMuX3RlbXBsYXRlJiZ3aW5kb3cuU2hhZHlDU1Muc3R5bGVFbGVtZW50KHRoaXMpLHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCl9cmVhZHkoKXt0aGlzLl90ZW1wbGF0ZSYmKHRoaXMucm9vdD10aGlzLl9zdGFtcFRlbXBsYXRlKHRoaXMuX3RlbXBsYXRlKSx0aGlzLiQ9dGhpcy5yb290LiQpLHN1cGVyLnJlYWR5KCl9X3JlYWR5Q2xpZW50cygpe3RoaXMuX3RlbXBsYXRlJiYodGhpcy5yb290PXRoaXMuX2F0dGFjaERvbSh0aGlzLnJvb3QpKSxzdXBlci5fcmVhZHlDbGllbnRzKCl9X2F0dGFjaERvbSh0KXtjb25zdCBlPVkodGhpcyk7aWYoZS5hdHRhY2hTaGFkb3cpcmV0dXJuIHQ/KGUuc2hhZG93Um9vdHx8KGUuYXR0YWNoU2hhZG93KHttb2RlOiJvcGVuIixzaGFkeVVwZ3JhZGVGcmFnbWVudDp0fSksZS5zaGFkb3dSb290LmFwcGVuZENoaWxkKHQpLHRoaXMuY29uc3RydWN0b3IuX3N0eWxlU2hlZXQmJihlLnNoYWRvd1Jvb3QuYWRvcHRlZFN0eWxlU2hlZXRzPVt0aGlzLmNvbnN0cnVjdG9yLl9zdHlsZVNoZWV0XSkpLE0mJndpbmRvdy5TaGFkeURPTSYmd2luZG93LlNoYWR5RE9NLmZsdXNoSW5pdGlhbChlLnNoYWRvd1Jvb3QpLGUuc2hhZG93Um9vdCk6bnVsbDt0aHJvdyBuZXcgRXJyb3IoIlNoYWRvd0RPTSBub3QgYXZhaWxhYmxlLiBQb2x5bWVyRWxlbWVudCBjYW4gY3JlYXRlIGRvbSBhcyBjaGlsZHJlbiBpbnN0ZWFkIG9mIGluIFNoYWRvd0RPTSBieSBzZXR0aW5nIGB0aGlzLnJvb3QgPSB0aGlzO2AgYmVmb3JlIGByZWFkeWAuIil9dXBkYXRlU3R5bGVzKHQpe3dpbmRvdy5TaGFkeUNTUyYmd2luZG93LlNoYWR5Q1NTLnN0eWxlU3VidHJlZSh0aGlzLHQpfXJlc29sdmVVcmwodCxlKXtyZXR1cm4hZSYmdGhpcy5pbXBvcnRQYXRoJiYoZT1kKHRoaXMuaW1wb3J0UGF0aCkpLGQodCxlKX1zdGF0aWMgX3BhcnNlVGVtcGxhdGVDb250ZW50KHQsbixpKXtyZXR1cm4gbi5keW5hbWljRm5zPW4uZHluYW1pY0Zuc3x8dGhpcy5fcHJvcGVydGllcyxlLl9wYXJzZVRlbXBsYXRlQ29udGVudC5jYWxsKHRoaXMsdCxuLGkpfXN0YXRpYyBfYWRkVGVtcGxhdGVQcm9wZXJ0eUVmZmVjdCh0LG4saSl7cmV0dXJuIVN8fG4gaW4gdGhpcy5fcHJvcGVydGllc3x8aS5pbmZvLnBhcnQuc2lnbmF0dXJlJiZpLmluZm8ucGFydC5zaWduYXR1cmUuc3RhdGljfHxpLmluZm8ucGFydC5ob3N0UHJvcHx8dC5uZXN0ZWRUZW1wbGF0ZXx8Y29uc29sZS53YXJuKGBQcm9wZXJ0eSAnJHtufScgdXNlZCBpbiB0ZW1wbGF0ZSBidXQgbm90IGRlY2xhcmVkIGluICdwcm9wZXJ0aWVzJzsgYXR0cmlidXRlIHdpbGwgbm90IGJlIG9ic2VydmVkLmApLGUuX2FkZFRlbXBsYXRlUHJvcGVydHlFZmZlY3QuY2FsbCh0aGlzLHQsbixpKX19fSkpOwovKioKICAgICAqIEBmaWxlb3ZlcnZpZXcKICAgICAqIEBzdXBwcmVzcyB7Y2hlY2tQcm90b3R5cGFsVHlwZXN9CiAgICAgKiBAbGljZW5zZSBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgICogVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICAgKiBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZAogICAgICogYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heQogICAgICogYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieQogICAgICogR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUAogICAgICogcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgICovCi8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNsYXNzIHZle2NvbnN0cnVjdG9yKHQpe3RoaXMudmFsdWU9dC50b1N0cmluZygpfXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMudmFsdWV9fWZ1bmN0aW9uIGJlKHQpe2lmKHQgaW5zdGFuY2VvZiBIVE1MVGVtcGxhdGVFbGVtZW50KXJldHVybiB0LmlubmVySFRNTDtpZih0IGluc3RhbmNlb2YgdmUpcmV0dXJuKGZ1bmN0aW9uIGUodCl7aWYodCBpbnN0YW5jZW9mIHZlKXJldHVybiB0LnZhbHVlO3Rocm93IG5ldyBFcnJvcihgbm9uLWxpdGVyYWwgdmFsdWUgcGFzc2VkIHRvIFBvbHltZXIncyBodG1sTGl0ZXJhbCBmdW5jdGlvbjogJHt0fWApfSkodCk7dGhyb3cgbmV3IEVycm9yKGBub24tdGVtcGxhdGUgdmFsdWUgcGFzc2VkIHRvIFBvbHltZXIncyBodG1sIGZ1bmN0aW9uOiAke3R9YCl9Y29uc3QgeGU9ZnVuY3Rpb24gdChlLC4uLm4pe2NvbnN0IGk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGVtcGxhdGUiKTtyZXR1cm4gaS5pbm5lckhUTUw9bi5yZWR1Y2UoKCh0LG4saSk9PnQrYmUobikrZVtpKzFdKSxlWzBdKSxpfSx3ZT15ZShIVE1MRWxlbWVudCk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovdmFyIFNlPSJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsVGhpcz9nbG9iYWxUaGlzOiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzoidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6e307ZnVuY3Rpb24gTWUodCl7aWYodC5fX2VzTW9kdWxlKXJldHVybiB0O3ZhciBlPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7cmV0dXJuIE9iamVjdC5rZXlzKHQpLmZvckVhY2goKGZ1bmN0aW9uKG4pe3ZhciBpPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLGkuZ2V0P2k6e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSl9KSksZX12YXIgRWUsVGUsQ2U9e2V4cG9ydHM6e319OwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBMb2Rhc2ggPGh0dHBzOi8vbG9kYXNoLmNvbS8+CiAgICAgKiBDb3B5cmlnaHQgT3BlbkpTIEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9ycyA8aHR0cHM6Ly9vcGVuanNmLm9yZy8+CiAgICAgKiBSZWxlYXNlZCB1bmRlciBNSVQgbGljZW5zZSA8aHR0cHM6Ly9sb2Rhc2guY29tL2xpY2Vuc2U+CiAgICAgKiBCYXNlZCBvbiBVbmRlcnNjb3JlLmpzIDEuOC4zIDxodHRwOi8vdW5kZXJzY29yZWpzLm9yZy9MSUNFTlNFPgogICAgICogQ29weXJpZ2h0IEplcmVteSBBc2hrZW5hcywgRG9jdW1lbnRDbG91ZCBhbmQgSW52ZXN0aWdhdGl2ZSBSZXBvcnRlcnMgJiBFZGl0b3JzCiAgICAgKi9FZT1DZSxUZT1DZS5leHBvcnRzLGZ1bmN0aW9uKCl7dmFyIHQsZT0iRXhwZWN0ZWQgYSBmdW5jdGlvbiIsbj0iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyIsaT0iX19sb2Rhc2hfcGxhY2Vob2xkZXJfXyIscj0xNixvPTMyLGE9NjQscz0xMjgsbD0yNTYsYz0xLzAsdT05MDA3MTk5MjU0NzQwOTkxLGg9TmFOLGQ9NDI5NDk2NzI5NSxwPVtbImFyeSIsc10sWyJiaW5kIiwxXSxbImJpbmRLZXkiLDJdLFsiY3VycnkiLDhdLFsiY3VycnlSaWdodCIscl0sWyJmbGlwIiw1MTJdLFsicGFydGlhbCIsb10sWyJwYXJ0aWFsUmlnaHQiLGFdLFsicmVhcmciLGxdXSxmPSJbb2JqZWN0IEFyZ3VtZW50c10iLG09IltvYmplY3QgQXJyYXldIixnPSJbb2JqZWN0IEJvb2xlYW5dIixfPSJbb2JqZWN0IERhdGVdIix5PSJbb2JqZWN0IEVycm9yXSIsdj0iW29iamVjdCBGdW5jdGlvbl0iLGI9IltvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dIix4PSJbb2JqZWN0IE1hcF0iLHc9IltvYmplY3QgTnVtYmVyXSIsUz0iW29iamVjdCBPYmplY3RdIixNPSJbb2JqZWN0IFByb21pc2VdIixFPSJbb2JqZWN0IFJlZ0V4cF0iLFQ9IltvYmplY3QgU2V0XSIsQz0iW29iamVjdCBTdHJpbmddIixBPSJbb2JqZWN0IFN5bWJvbF0iLGs9IltvYmplY3QgV2Vha01hcF0iLEw9IltvYmplY3QgQXJyYXlCdWZmZXJdIixQPSJbb2JqZWN0IERhdGFWaWV3XSIsTj0iW29iamVjdCBGbG9hdDMyQXJyYXldIixJPSJbb2JqZWN0IEZsb2F0NjRBcnJheV0iLFI9IltvYmplY3QgSW50OEFycmF5XSIsTz0iW29iamVjdCBJbnQxNkFycmF5XSIsej0iW29iamVjdCBJbnQzMkFycmF5XSIsRD0iW29iamVjdCBVaW50OEFycmF5XSIsQj0iW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0iLEg9IltvYmplY3QgVWludDE2QXJyYXldIixGPSJbb2JqZWN0IFVpbnQzMkFycmF5XSIsVj0vXGJfX3AgXCs9ICcnOy9nLFU9L1xiKF9fcCBcKz0pICcnIFwrL2csaj0vKF9fZVwoLio/XCl8XGJfX3RcKSkgXCtcbicnOy9nLEc9LyYoPzphbXB8bHR8Z3R8cXVvdHwjMzkpOy9nLFc9L1smPD4iJ10vZyxxPVJlZ0V4cChHLnNvdXJjZSksWT1SZWdFeHAoVy5zb3VyY2UpLFg9LzwlLShbXHNcU10rPyklPi9nLCQ9LzwlKFtcc1xTXSs/KSU+L2csSz0vPCU9KFtcc1xTXSs/KSU+L2csWj0vXC58XFsoPzpbXltcXV0qfChbIiddKSg/Oig/IVwxKVteXFxdfFxcLikqP1wxKVxdLyxKPS9eXHcqJC8sUT0vW14uW1xdXSt8XFsoPzooLT9cZCsoPzpcLlxkKyk/KXwoWyInXSkoKD86KD8hXDIpW15cXF18XFwuKSo/KVwyKVxdfCg/PSg/OlwufFxbXF0pKD86XC58XFtcXXwkKSkvZyx0dD0vW1xcXiQuKis/KClbXF17fXxdL2csZXQ9UmVnRXhwKHR0LnNvdXJjZSksbnQ9L15ccysvLGl0PS9ccy8scnQ9L1x7KD86XG5cL1wqIFxbd3JhcHBlZCB3aXRoIC4rXF0gXCpcLyk/XG4/LyxvdD0vXHtcblwvXCogXFt3cmFwcGVkIHdpdGggKC4rKVxdIFwqLyxhdD0vLD8gJiAvLHN0PS9bXlx4MDAtXHgyZlx4M2EtXHg0MFx4NWItXHg2MFx4N2ItXHg3Zl0rL2csbHQ9L1soKT0se31cW1xdXC9cc10vLGN0PS9cXChcXCk/L2csdXQ9L1wkXHsoW15cXH1dKig/OlxcLlteXFx9XSopKilcfS9nLGh0PS9cdyokLyxkdD0vXlstK10weFswLTlhLWZdKyQvaSxwdD0vXjBiWzAxXSskL2ksZnQ9L15cW29iamVjdCAuKz9Db25zdHJ1Y3RvclxdJC8sbXQ9L14wb1swLTddKyQvaSxndD0vXig/OjB8WzEtOV1cZCopJC8sX3Q9L1tceGMwLVx4ZDZceGQ4LVx4ZjZceGY4LVx4ZmZcdTAxMDAtXHUwMTdmXS9nLHl0PS8oJF4pLyx2dD0vWydcblxyXHUyMDI4XHUyMDI5XFxdL2csYnQ9IlxcdTAzMDAtXFx1MDM2ZlxcdWZlMjAtXFx1ZmUyZlxcdTIwZDAtXFx1MjBmZiIseHQ9IlxcdTI3MDAtXFx1MjdiZiIsd3Q9ImEtelxceGRmLVxceGY2XFx4ZjgtXFx4ZmYiLFN0PSJBLVpcXHhjMC1cXHhkNlxceGQ4LVxceGRlIixNdD0iXFx1ZmUwZVxcdWZlMGYiLEV0PSJcXHhhY1xceGIxXFx4ZDdcXHhmN1xceDAwLVxceDJmXFx4M2EtXFx4NDBcXHg1Yi1cXHg2MFxceDdiLVxceGJmXFx1MjAwMC1cXHUyMDZmIFxcdFxceDBiXFxmXFx4YTBcXHVmZWZmXFxuXFxyXFx1MjAyOFxcdTIwMjlcXHUxNjgwXFx1MTgwZVxcdTIwMDBcXHUyMDAxXFx1MjAwMlxcdTIwMDNcXHUyMDA0XFx1MjAwNVxcdTIwMDZcXHUyMDA3XFx1MjAwOFxcdTIwMDlcXHUyMDBhXFx1MjAyZlxcdTIwNWZcXHUzMDAwIixUdD0iWyfigJldIixDdD0iW1xcdWQ4MDAtXFx1ZGZmZl0iLEF0PSJbIitFdCsiXSIsa3Q9IlsiK2J0KyJdIixMdD0iXFxkKyIsUHQ9IltcXHUyNzAwLVxcdTI3YmZdIixOdD0iWyIrd3QrIl0iLEl0PSJbXlxcdWQ4MDAtXFx1ZGZmZiIrRXQrTHQreHQrd3QrU3QrIl0iLFJ0PSJcXHVkODNjW1xcdWRmZmItXFx1ZGZmZl0iLE90PSJbXlxcdWQ4MDAtXFx1ZGZmZl0iLHp0PSIoPzpcXHVkODNjW1xcdWRkZTYtXFx1ZGRmZl0pezJ9IixEdD0iW1xcdWQ4MDAtXFx1ZGJmZl1bXFx1ZGMwMC1cXHVkZmZmXSIsQnQ9IlsiK1N0KyJdIixIdD0iKD86IitOdCsifCIrSXQrIikiLEZ0PSIoPzoiK0J0KyJ8IitJdCsiKSIsVnQ9Iig/Olsn4oCZXSg/OmR8bGx8bXxyZXxzfHR8dmUpKT8iLFV0PSIoPzpbJ+KAmV0oPzpEfExMfE18UkV8U3xUfFZFKSk/IixqdD0iKD86IitrdCsifCIrUnQrIik/IixHdD0iW1xcdWZlMGVcXHVmZTBmXT8iLFd0PUd0K2p0KyIoPzpcXHUyMDBkKD86IitbT3QsenQsRHRdLmpvaW4oInwiKSsiKSIrR3QranQrIikqIixxdD0iKD86IitbUHQsenQsRHRdLmpvaW4oInwiKSsiKSIrV3QsWXQ9Iig/OiIrW090K2t0KyI/IixrdCx6dCxEdCxDdF0uam9pbigifCIpKyIpIixYdD1SZWdFeHAoVHQsImciKSwkdD1SZWdFeHAoa3QsImciKSxLdD1SZWdFeHAoUnQrIig/PSIrUnQrIil8IitZdCtXdCwiZyIpLFp0PVJlZ0V4cChbQnQrIj8iK050KyIrIitWdCsiKD89IitbQXQsQnQsIiQiXS5qb2luKCJ8IikrIikiLEZ0KyIrIitVdCsiKD89IitbQXQsQnQrSHQsIiQiXS5qb2luKCJ8IikrIikiLEJ0KyI/IitIdCsiKyIrVnQsQnQrIisiK1V0LCJcXGQqKD86MVNUfDJORHwzUkR8KD8hWzEyM10pXFxkVEgpKD89XFxifFthLXpfXSkiLCJcXGQqKD86MXN0fDJuZHwzcmR8KD8hWzEyM10pXFxkdGgpKD89XFxifFtBLVpfXSkiLEx0LHF0XS5qb2luKCJ8IiksImciKSxKdD1SZWdFeHAoIltcXHUyMDBkXFx1ZDgwMC1cXHVkZmZmIitidCtNdCsiXSIpLFF0PS9bYS16XVtBLVpdfFtBLVpdezJ9W2Etel18WzAtOV1bYS16QS1aXXxbYS16QS1aXVswLTldfFteYS16QS1aMC05IF0vLHRlPVsiQXJyYXkiLCJCdWZmZXIiLCJEYXRhVmlldyIsIkRhdGUiLCJFcnJvciIsIkZsb2F0MzJBcnJheSIsIkZsb2F0NjRBcnJheSIsIkZ1bmN0aW9uIiwiSW50OEFycmF5IiwiSW50MTZBcnJheSIsIkludDMyQXJyYXkiLCJNYXAiLCJNYXRoIiwiT2JqZWN0IiwiUHJvbWlzZSIsIlJlZ0V4cCIsIlNldCIsIlN0cmluZyIsIlN5bWJvbCIsIlR5cGVFcnJvciIsIlVpbnQ4QXJyYXkiLCJVaW50OENsYW1wZWRBcnJheSIsIlVpbnQxNkFycmF5IiwiVWludDMyQXJyYXkiLCJXZWFrTWFwIiwiXyIsImNsZWFyVGltZW91dCIsImlzRmluaXRlIiwicGFyc2VJbnQiLCJzZXRUaW1lb3V0Il0sZWU9LTEsbmU9e307bmVbTl09bmVbSV09bmVbUl09bmVbT109bmVbel09bmVbRF09bmVbQl09bmVbSF09bmVbRl09ITAsbmVbZl09bmVbbV09bmVbTF09bmVbZ109bmVbUF09bmVbX109bmVbeV09bmVbdl09bmVbeF09bmVbd109bmVbU109bmVbRV09bmVbVF09bmVbQ109bmVba109ITE7dmFyIGllPXt9O2llW2ZdPWllW21dPWllW0xdPWllW1BdPWllW2ddPWllW19dPWllW05dPWllW0ldPWllW1JdPWllW09dPWllW3pdPWllW3hdPWllW3ddPWllW1NdPWllW0VdPWllW1RdPWllW0NdPWllW0FdPWllW0RdPWllW0JdPWllW0hdPWllW0ZdPSEwLGllW3ldPWllW3ZdPWllW2tdPSExO3ZhciByZT17IlxcIjoiXFwiLCInIjoiJyIsIlxuIjoibiIsIlxyIjoiciIsIlx1MjAyOCI6InUyMDI4IiwiXHUyMDI5IjoidTIwMjkifSxvZT1wYXJzZUZsb2F0LGFlPXBhcnNlSW50LHNlPSJvYmplY3QiPT10eXBlb2YgU2UmJlNlJiZTZS5PYmplY3Q9PT1PYmplY3QmJlNlLGxlPSJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZiYmc2VsZi5PYmplY3Q9PT1PYmplY3QmJnNlbGYsY2U9c2V8fGxlfHxGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpLHVlPVRlJiYhVGUubm9kZVR5cGUmJlRlLGhlPXVlJiZFZSYmIUVlLm5vZGVUeXBlJiZFZSxkZT1oZSYmaGUuZXhwb3J0cz09PXVlLHBlPWRlJiZzZS5wcm9jZXNzLGZlPShmdW5jdGlvbigpe3RyeXt2YXIgdD1oZSYmaGUucmVxdWlyZSYmaGUucmVxdWlyZSgidXRpbCIpLnR5cGVzO3JldHVybiB0fHxwZSYmcGUuYmluZGluZyYmcGUuYmluZGluZygidXRpbCIpfWNhdGNoKHQpe319KSgpLG1lPWZlJiZmZS5pc0FycmF5QnVmZmVyLGdlPWZlJiZmZS5pc0RhdGUsX2U9ZmUmJmZlLmlzTWFwLHllPWZlJiZmZS5pc1JlZ0V4cCx2ZT1mZSYmZmUuaXNTZXQsYmU9ZmUmJmZlLmlzVHlwZWRBcnJheTtmdW5jdGlvbiB4ZSh0LGUsbil7c3dpdGNoKG4ubGVuZ3RoKXtjYXNlIDA6cmV0dXJuIHQuY2FsbChlKTtjYXNlIDE6cmV0dXJuIHQuY2FsbChlLG5bMF0pO2Nhc2UgMjpyZXR1cm4gdC5jYWxsKGUsblswXSxuWzFdKTtjYXNlIDM6cmV0dXJuIHQuY2FsbChlLG5bMF0sblsxXSxuWzJdKX1yZXR1cm4gdC5hcHBseShlLG4pfWZ1bmN0aW9uIHdlKHQsZSxuLGkpe2Zvcih2YXIgcj0tMSxvPW51bGw9PXQ/MDp0Lmxlbmd0aDsrK3I8bzspe3ZhciBhPXRbcl07ZShpLGEsbihhKSx0KX1yZXR1cm4gaX1mdW5jdGlvbiBNZSh0LGUpe2Zvcih2YXIgbj0tMSxpPW51bGw9PXQ/MDp0Lmxlbmd0aDsrK248aSYmITEhPT1lKHRbbl0sbix0KTspO3JldHVybiB0fWZ1bmN0aW9uIENlKHQsZSl7Zm9yKHZhciBuPW51bGw9PXQ/MDp0Lmxlbmd0aDtuLS0mJiExIT09ZSh0W25dLG4sdCk7KTtyZXR1cm4gdH1mdW5jdGlvbiBBZSh0LGUpe2Zvcih2YXIgbj0tMSxpPW51bGw9PXQ/MDp0Lmxlbmd0aDsrK248aTspaWYoIWUodFtuXSxuLHQpKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIGtlKHQsZSl7Zm9yKHZhciBuPS0xLGk9bnVsbD09dD8wOnQubGVuZ3RoLHI9MCxvPVtdOysrbjxpOyl7dmFyIGE9dFtuXTtlKGEsbix0KSYmKG9bcisrXT1hKX1yZXR1cm4gb31mdW5jdGlvbiBMZSh0LGUpe3JldHVybiEobnVsbD09dHx8IXQubGVuZ3RoKSYmRmUodCxlLDApPi0xfWZ1bmN0aW9uIFBlKHQsZSxuKXtmb3IodmFyIGk9LTEscj1udWxsPT10PzA6dC5sZW5ndGg7KytpPHI7KWlmKG4oZSx0W2ldKSlyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiBOZSh0LGUpe2Zvcih2YXIgbj0tMSxpPW51bGw9PXQ/MDp0Lmxlbmd0aCxyPUFycmF5KGkpOysrbjxpOylyW25dPWUodFtuXSxuLHQpO3JldHVybiByfWZ1bmN0aW9uIEllKHQsZSl7Zm9yKHZhciBuPS0xLGk9ZS5sZW5ndGgscj10Lmxlbmd0aDsrK248aTspdFtyK25dPWVbbl07cmV0dXJuIHR9ZnVuY3Rpb24gUmUodCxlLG4saSl7dmFyIHI9LTEsbz1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKGkmJm8mJihuPXRbKytyXSk7KytyPG87KW49ZShuLHRbcl0scix0KTtyZXR1cm4gbn1mdW5jdGlvbiBPZSh0LGUsbixpKXt2YXIgcj1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKGkmJnImJihuPXRbLS1yXSk7ci0tOyluPWUobix0W3JdLHIsdCk7cmV0dXJuIG59ZnVuY3Rpb24gemUodCxlKXtmb3IodmFyIG49LTEsaT1udWxsPT10PzA6dC5sZW5ndGg7KytuPGk7KWlmKGUodFtuXSxuLHQpKXJldHVybiEwO3JldHVybiExfXZhciBEZT1HZSgibGVuZ3RoIik7ZnVuY3Rpb24gQmUodCxlLG4pe3ZhciBpO3JldHVybiBuKHQsKGZ1bmN0aW9uKHQsbixyKXtpZihlKHQsbixyKSlyZXR1cm4gaT1uLCExfSkpLGl9ZnVuY3Rpb24gSGUodCxlLG4saSl7Zm9yKHZhciByPXQubGVuZ3RoLG89bisoaT8xOi0xKTtpP28tLTorK288cjspaWYoZSh0W29dLG8sdCkpcmV0dXJuIG87cmV0dXJuLTF9ZnVuY3Rpb24gRmUodCxlLG4pe3JldHVybiBlPT1lPyhmdW5jdGlvbiBpKHQsZSxuKXtmb3IodmFyIGk9bi0xLHI9dC5sZW5ndGg7KytpPHI7KWlmKHRbaV09PT1lKXJldHVybiBpO3JldHVybi0xfSkodCxlLG4pOkhlKHQsVWUsbil9ZnVuY3Rpb24gVmUodCxlLG4saSl7Zm9yKHZhciByPW4tMSxvPXQubGVuZ3RoOysrcjxvOylpZihpKHRbcl0sZSkpcmV0dXJuIHI7cmV0dXJuLTF9ZnVuY3Rpb24gVWUodCl7cmV0dXJuIHQhPXR9ZnVuY3Rpb24gamUodCxlKXt2YXIgbj1udWxsPT10PzA6dC5sZW5ndGg7cmV0dXJuIG4/WWUodCxlKS9uOmh9ZnVuY3Rpb24gR2UoZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiBudWxsPT1uP3Q6bltlXX19ZnVuY3Rpb24gV2UoZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiBudWxsPT1lP3Q6ZVtuXX19ZnVuY3Rpb24gcWUodCxlLG4saSxyKXtyZXR1cm4gcih0LChmdW5jdGlvbih0LHIsbyl7bj1pPyhpPSExLHQpOmUobix0LHIsbyl9KSksbn1mdW5jdGlvbiBZZShlLG4pe2Zvcih2YXIgaSxyPS0xLG89ZS5sZW5ndGg7KytyPG87KXt2YXIgYT1uKGVbcl0pO2EhPT10JiYoaT1pPT09dD9hOmkrYSl9cmV0dXJuIGl9ZnVuY3Rpb24gWGUodCxlKXtmb3IodmFyIG49LTEsaT1BcnJheSh0KTsrK248dDspaVtuXT1lKG4pO3JldHVybiBpfWZ1bmN0aW9uICRlKHQpe3JldHVybiB0P3Quc2xpY2UoMCxmbih0KSsxKS5yZXBsYWNlKG50LCIiKTp0fWZ1bmN0aW9uIEtlKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gdChlKX19ZnVuY3Rpb24gWmUodCxlKXtyZXR1cm4gTmUoZSwoZnVuY3Rpb24oZSl7cmV0dXJuIHRbZV19KSl9ZnVuY3Rpb24gSmUodCxlKXtyZXR1cm4gdC5oYXMoZSl9ZnVuY3Rpb24gUWUodCxlKXtmb3IodmFyIG49LTEsaT10Lmxlbmd0aDsrK248aSYmRmUoZSx0W25dLDApPi0xOyk7cmV0dXJuIG59ZnVuY3Rpb24gdG4odCxlKXtmb3IodmFyIG49dC5sZW5ndGg7bi0tJiZGZShlLHRbbl0sMCk+LTE7KTtyZXR1cm4gbn1mdW5jdGlvbiBlbih0LGUpe2Zvcih2YXIgbj10Lmxlbmd0aCxpPTA7bi0tOyl0W25dPT09ZSYmKytpO3JldHVybiBpfXZhciBubj1XZSh7IsOAIjoiQSIsIsOBIjoiQSIsIsOCIjoiQSIsIsODIjoiQSIsIsOEIjoiQSIsIsOFIjoiQSIsIsOgIjoiYSIsIsOhIjoiYSIsIsOiIjoiYSIsIsOjIjoiYSIsIsOkIjoiYSIsIsOlIjoiYSIsIsOHIjoiQyIsIsOnIjoiYyIsIsOQIjoiRCIsIsOwIjoiZCIsIsOIIjoiRSIsIsOJIjoiRSIsIsOKIjoiRSIsIsOLIjoiRSIsIsOoIjoiZSIsIsOpIjoiZSIsIsOqIjoiZSIsIsOrIjoiZSIsIsOMIjoiSSIsIsONIjoiSSIsIsOOIjoiSSIsIsOPIjoiSSIsIsOsIjoiaSIsIsOtIjoiaSIsIsOuIjoiaSIsIsOvIjoiaSIsIsORIjoiTiIsIsOxIjoibiIsIsOSIjoiTyIsIsOTIjoiTyIsIsOUIjoiTyIsIsOVIjoiTyIsIsOWIjoiTyIsIsOYIjoiTyIsIsOyIjoibyIsIsOzIjoibyIsIsO0IjoibyIsIsO1IjoibyIsIsO2IjoibyIsIsO4IjoibyIsIsOZIjoiVSIsIsOaIjoiVSIsIsObIjoiVSIsIsOcIjoiVSIsIsO5IjoidSIsIsO6IjoidSIsIsO7IjoidSIsIsO8IjoidSIsIsOdIjoiWSIsIsO9IjoieSIsIsO/IjoieSIsIsOGIjoiQWUiLCLDpiI6ImFlIiwiw54iOiJUaCIsIsO+IjoidGgiLCLDnyI6InNzIiwixIAiOiJBIiwixIIiOiJBIiwixIQiOiJBIiwixIEiOiJhIiwixIMiOiJhIiwixIUiOiJhIiwixIYiOiJDIiwixIgiOiJDIiwixIoiOiJDIiwixIwiOiJDIiwixIciOiJjIiwixIkiOiJjIiwixIsiOiJjIiwixI0iOiJjIiwixI4iOiJEIiwixJAiOiJEIiwixI8iOiJkIiwixJEiOiJkIiwixJIiOiJFIiwixJQiOiJFIiwixJYiOiJFIiwixJgiOiJFIiwixJoiOiJFIiwixJMiOiJlIiwixJUiOiJlIiwixJciOiJlIiwixJkiOiJlIiwixJsiOiJlIiwixJwiOiJHIiwixJ4iOiJHIiwixKAiOiJHIiwixKIiOiJHIiwixJ0iOiJnIiwixJ8iOiJnIiwixKEiOiJnIiwixKMiOiJnIiwixKQiOiJIIiwixKYiOiJIIiwixKUiOiJoIiwixKciOiJoIiwixKgiOiJJIiwixKoiOiJJIiwixKwiOiJJIiwixK4iOiJJIiwixLAiOiJJIiwixKkiOiJpIiwixKsiOiJpIiwixK0iOiJpIiwixK8iOiJpIiwixLEiOiJpIiwixLQiOiJKIiwixLUiOiJqIiwixLYiOiJLIiwixLciOiJrIiwixLgiOiJrIiwixLkiOiJMIiwixLsiOiJMIiwixL0iOiJMIiwixL8iOiJMIiwixYEiOiJMIiwixLoiOiJsIiwixLwiOiJsIiwixL4iOiJsIiwixYAiOiJsIiwixYIiOiJsIiwixYMiOiJOIiwixYUiOiJOIiwixYciOiJOIiwixYoiOiJOIiwixYQiOiJuIiwixYYiOiJuIiwixYgiOiJuIiwixYsiOiJuIiwixYwiOiJPIiwixY4iOiJPIiwixZAiOiJPIiwixY0iOiJvIiwixY8iOiJvIiwixZEiOiJvIiwixZQiOiJSIiwixZYiOiJSIiwixZgiOiJSIiwixZUiOiJyIiwixZciOiJyIiwixZkiOiJyIiwixZoiOiJTIiwixZwiOiJTIiwixZ4iOiJTIiwixaAiOiJTIiwixZsiOiJzIiwixZ0iOiJzIiwixZ8iOiJzIiwixaEiOiJzIiwixaIiOiJUIiwixaQiOiJUIiwixaYiOiJUIiwixaMiOiJ0IiwixaUiOiJ0IiwixaciOiJ0IiwixagiOiJVIiwixaoiOiJVIiwixawiOiJVIiwixa4iOiJVIiwixbAiOiJVIiwixbIiOiJVIiwixakiOiJ1IiwixasiOiJ1Iiwixa0iOiJ1Iiwixa8iOiJ1IiwixbEiOiJ1IiwixbMiOiJ1IiwixbQiOiJXIiwixbUiOiJ3IiwixbYiOiJZIiwixbciOiJ5IiwixbgiOiJZIiwixbkiOiJaIiwixbsiOiJaIiwixb0iOiJaIiwixboiOiJ6IiwixbwiOiJ6Iiwixb4iOiJ6IiwixLIiOiJJSiIsIsSzIjoiaWoiLCLFkiI6Ik9lIiwixZMiOiJvZSIsIsWJIjoiJ24iLCLFvyI6InMifSkscm49V2UoeyImIjoiJmFtcDsiLCI8IjoiJmx0OyIsIj4iOiImZ3Q7IiwnIic6IiZxdW90OyIsIiciOiImIzM5OyJ9KTtmdW5jdGlvbiBvbih0KXtyZXR1cm4iXFwiK3JlW3RdfWZ1bmN0aW9uIGFuKHQpe3JldHVybiBKdC50ZXN0KHQpfWZ1bmN0aW9uIHNuKHQpe3ZhciBlPS0xLG49QXJyYXkodC5zaXplKTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0LGkpe25bKytlXT1baSx0XX0pKSxufWZ1bmN0aW9uIGxuKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiB0KGUobikpfX1mdW5jdGlvbiBjbih0LGUpe2Zvcih2YXIgbj0tMSxyPXQubGVuZ3RoLG89MCxhPVtdOysrbjxyOyl7dmFyIHM9dFtuXTtzIT09ZSYmcyE9PWl8fCh0W25dPWksYVtvKytdPW4pfXJldHVybiBhfWZ1bmN0aW9uIHVuKHQpe3ZhciBlPS0xLG49QXJyYXkodC5zaXplKTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0KXtuWysrZV09dH0pKSxufWZ1bmN0aW9uIGhuKHQpe3ZhciBlPS0xLG49QXJyYXkodC5zaXplKTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0KXtuWysrZV09W3QsdF19KSksbn1mdW5jdGlvbiBkbih0KXtyZXR1cm4gYW4odCk/KGZ1bmN0aW9uIGUodCl7Zm9yKHZhciBlPUt0Lmxhc3RJbmRleD0wO0t0LnRlc3QodCk7KSsrZTtyZXR1cm4gZX0pKHQpOkRlKHQpfWZ1bmN0aW9uIHBuKHQpe3JldHVybiBhbih0KT8oZnVuY3Rpb24gZSh0KXtyZXR1cm4gdC5tYXRjaChLdCl8fFtdfSkodCk6KGZ1bmN0aW9uIG4odCl7cmV0dXJuIHQuc3BsaXQoIiIpfSkodCl9ZnVuY3Rpb24gZm4odCl7Zm9yKHZhciBlPXQubGVuZ3RoO2UtLSYmaXQudGVzdCh0LmNoYXJBdChlKSk7KTtyZXR1cm4gZX12YXIgbW49V2UoeyImYW1wOyI6IiYiLCImbHQ7IjoiPCIsIiZndDsiOiI+IiwiJnF1b3Q7IjonIicsIiYjMzk7IjoiJyJ9KSxnbj0oZnVuY3Rpb24gaXQoYnQpe3ZhciB4dCx3dD0oYnQ9bnVsbD09YnQ/Y2U6Z24uZGVmYXVsdHMoY2UuT2JqZWN0KCksYnQsZ24ucGljayhjZSx0ZSkpKS5BcnJheSxTdD1idC5EYXRlLE10PWJ0LkVycm9yLEV0PWJ0LkZ1bmN0aW9uLFR0PWJ0Lk1hdGgsQ3Q9YnQuT2JqZWN0LEF0PWJ0LlJlZ0V4cCxrdD1idC5TdHJpbmcsTHQ9YnQuVHlwZUVycm9yLFB0PXd0LnByb3RvdHlwZSxOdD1DdC5wcm90b3R5cGUsSXQ9YnRbIl9fY29yZS1qc19zaGFyZWRfXyJdLFJ0PUV0LnByb3RvdHlwZS50b1N0cmluZyxPdD1OdC5oYXNPd25Qcm9wZXJ0eSx6dD0wLER0PSh4dD0vW14uXSskLy5leGVjKEl0JiZJdC5rZXlzJiZJdC5rZXlzLklFX1BST1RPfHwiIikpPyJTeW1ib2woc3JjKV8xLiIreHQ6IiIsQnQ9TnQudG9TdHJpbmcsSHQ9UnQuY2FsbChDdCksRnQ9Y2UuXyxWdD1BdCgiXiIrUnQuY2FsbChPdCkucmVwbGFjZSh0dCwiXFwkJiIpLnJlcGxhY2UoL2hhc093blByb3BlcnR5fChmdW5jdGlvbikuKj8oPz1cXFwoKXwgZm9yIC4rPyg/PVxcXF0pL2csIiQxLio/IikrIiQiKSxVdD1kZT9idC5CdWZmZXI6dCxqdD1idC5TeW1ib2wsR3Q9YnQuVWludDhBcnJheSxXdD1VdD9VdC5hbGxvY1Vuc2FmZTp0LHF0PWxuKEN0LmdldFByb3RvdHlwZU9mLEN0KSxZdD1DdC5jcmVhdGUsS3Q9TnQucHJvcGVydHlJc0VudW1lcmFibGUsSnQ9UHQuc3BsaWNlLHJlPWp0P2p0LmlzQ29uY2F0U3ByZWFkYWJsZTp0LHNlPWp0P2p0Lml0ZXJhdG9yOnQsbGU9anQ/anQudG9TdHJpbmdUYWc6dCx1ZT0oZnVuY3Rpb24oKXt0cnl7dmFyIHQ9T28oQ3QsImRlZmluZVByb3BlcnR5Iik7cmV0dXJuIHQoe30sIiIse30pLHR9Y2F0Y2godCl7fX0pKCksaGU9YnQuY2xlYXJUaW1lb3V0IT09Y2UuY2xlYXJUaW1lb3V0JiZidC5jbGVhclRpbWVvdXQscGU9U3QmJlN0Lm5vdyE9PWNlLkRhdGUubm93JiZTdC5ub3csZmU9YnQuc2V0VGltZW91dCE9PWNlLnNldFRpbWVvdXQmJmJ0LnNldFRpbWVvdXQsU2U9VHQuY2VpbCxFZT1UdC5mbG9vcixUZT1DdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMsRGU9VXQ/VXQuaXNCdWZmZXI6dCxXZT1idC5pc0Zpbml0ZSxfbj1QdC5qb2luLHluPWxuKEN0LmtleXMsQ3QpLHZuPVR0Lm1heCxibj1UdC5taW4seG49U3Qubm93LHduPWJ0LnBhcnNlSW50LFNuPVR0LnJhbmRvbSxNbj1QdC5yZXZlcnNlLEVuPU9vKGJ0LCJEYXRhVmlldyIpLFRuPU9vKGJ0LCJNYXAiKSxDbj1PbyhidCwiUHJvbWlzZSIpLEFuPU9vKGJ0LCJTZXQiKSxrbj1PbyhidCwiV2Vha01hcCIpLExuPU9vKEN0LCJjcmVhdGUiKSxQbj1rbiYmbmV3IGtuLE5uPXt9LEluPWNhKEVuKSxSbj1jYShUbiksT249Y2EoQ24pLHpuPWNhKEFuKSxEbj1jYShrbiksQm49anQ/anQucHJvdG90eXBlOnQsSG49Qm4/Qm4udmFsdWVPZjp0LEZuPUJuP0JuLnRvU3RyaW5nOnQ7ZnVuY3Rpb24gVm4odCl7aWYoQXModCkmJiFtcyh0KSYmISh0IGluc3RhbmNlb2YgV24pKXtpZih0IGluc3RhbmNlb2YgR24pcmV0dXJuIHQ7aWYoT3QuY2FsbCh0LCJfX3dyYXBwZWRfXyIpKXJldHVybiB1YSh0KX1yZXR1cm4gbmV3IEduKHQpfXZhciBVbj0oZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7fXJldHVybiBmdW5jdGlvbihuKXtpZighQ3MobikpcmV0dXJue307aWYoWXQpcmV0dXJuIFl0KG4pO2UucHJvdG90eXBlPW47dmFyIGk9bmV3IGU7cmV0dXJuIGUucHJvdG90eXBlPXQsaX19KSgpO2Z1bmN0aW9uIGpuKCl7fWZ1bmN0aW9uIEduKGUsbil7dGhpcy5fX3dyYXBwZWRfXz1lLHRoaXMuX19hY3Rpb25zX189W10sdGhpcy5fX2NoYWluX189ISFuLHRoaXMuX19pbmRleF9fPTAsdGhpcy5fX3ZhbHVlc19fPXR9ZnVuY3Rpb24gV24odCl7dGhpcy5fX3dyYXBwZWRfXz10LHRoaXMuX19hY3Rpb25zX189W10sdGhpcy5fX2Rpcl9fPTEsdGhpcy5fX2ZpbHRlcmVkX189ITEsdGhpcy5fX2l0ZXJhdGVlc19fPVtdLHRoaXMuX190YWtlQ291bnRfXz1kLHRoaXMuX192aWV3c19fPVtdfWZ1bmN0aW9uIHFuKHQpe3ZhciBlPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytlPG47KXt2YXIgaT10W2VdO3RoaXMuc2V0KGlbMF0saVsxXSl9fWZ1bmN0aW9uIFluKHQpe3ZhciBlPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytlPG47KXt2YXIgaT10W2VdO3RoaXMuc2V0KGlbMF0saVsxXSl9fWZ1bmN0aW9uIFhuKHQpe3ZhciBlPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytlPG47KXt2YXIgaT10W2VdO3RoaXMuc2V0KGlbMF0saVsxXSl9fWZ1bmN0aW9uICRuKHQpe3ZhciBlPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLl9fZGF0YV9fPW5ldyBYbjsrK2U8bjspdGhpcy5hZGQodFtlXSl9ZnVuY3Rpb24gS24odCl7dmFyIGU9dGhpcy5fX2RhdGFfXz1uZXcgWW4odCk7dGhpcy5zaXplPWUuc2l6ZX1mdW5jdGlvbiBabih0LGUpe3ZhciBuPW1zKHQpLGk9IW4mJmZzKHQpLHI9IW4mJiFpJiZicyh0KSxvPSFuJiYhaSYmIXImJkhzKHQpLGE9bnx8aXx8cnx8byxzPWE/WGUodC5sZW5ndGgsa3QpOltdLGw9cy5sZW5ndGg7Zm9yKHZhciBjIGluIHQpIWUmJiFPdC5jYWxsKHQsYyl8fGEmJigibGVuZ3RoIj09Y3x8ciYmKCJvZmZzZXQiPT1jfHwicGFyZW50Ij09Yyl8fG8mJigiYnVmZmVyIj09Y3x8ImJ5dGVMZW5ndGgiPT1jfHwiYnl0ZU9mZnNldCI9PWMpfHxVbyhjLGwpKXx8cy5wdXNoKGMpO3JldHVybiBzfWZ1bmN0aW9uIEpuKGUpe3ZhciBuPWUubGVuZ3RoO3JldHVybiBuP2VbX3IoMCxuLTEpXTp0fWZ1bmN0aW9uIFFuKHQsZSl7cmV0dXJuIG9hKEpyKHQpLGxpKGUsMCx0Lmxlbmd0aCkpfWZ1bmN0aW9uIHRpKHQpe3JldHVybiBvYShKcih0KSl9ZnVuY3Rpb24gZWkoZSxuLGkpeyhpIT09dCYmIWhzKGVbbl0saSl8fGk9PT10JiYhKG4gaW4gZSkpJiZhaShlLG4saSl9ZnVuY3Rpb24gbmkoZSxuLGkpe3ZhciByPWVbbl07T3QuY2FsbChlLG4pJiZocyhyLGkpJiYoaSE9PXR8fG4gaW4gZSl8fGFpKGUsbixpKX1mdW5jdGlvbiBpaSh0LGUpe2Zvcih2YXIgbj10Lmxlbmd0aDtuLS07KWlmKGhzKHRbbl1bMF0sZSkpcmV0dXJuIG47cmV0dXJuLTF9ZnVuY3Rpb24gcmkodCxlLG4saSl7cmV0dXJuIE9pKHQsKGZ1bmN0aW9uKHQscixvKXtlKGksdCxuKHQpLG8pfSkpLGl9ZnVuY3Rpb24gb2kodCxlKXtyZXR1cm4gdCYmUXIoZSxsbChlKSx0KX1mdW5jdGlvbiBhaSh0LGUsbil7Il9fcHJvdG9fXyI9PWUmJnVlP3VlKHQsZSx7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsdmFsdWU6bix3cml0YWJsZTohMH0pOnRbZV09bn1mdW5jdGlvbiBzaShlLG4pe2Zvcih2YXIgaT0tMSxyPW4ubGVuZ3RoLG89d3QociksYT1udWxsPT1lOysraTxyOylvW2ldPWE/dDppbChlLG5baV0pO3JldHVybiBvfWZ1bmN0aW9uIGxpKGUsbixpKXtyZXR1cm4gZT09ZSYmKGkhPT10JiYoZT1lPD1pP2U6aSksbiE9PXQmJihlPWU+PW4/ZTpuKSksZX1mdW5jdGlvbiBjaShlLG4saSxyLG8sYSl7dmFyIHMsbD0xJm4sYz0yJm4sdT00Jm47aWYoaSYmKHM9bz9pKGUscixvLGEpOmkoZSkpLHMhPT10KXJldHVybiBzO2lmKCFDcyhlKSlyZXR1cm4gZTt2YXIgaD1tcyhlKTtpZihoKXtpZihzPShmdW5jdGlvbiBkKHQpe3ZhciBlPXQubGVuZ3RoLG49bmV3IHQuY29uc3RydWN0b3IoZSk7cmV0dXJuIGUmJiJzdHJpbmciPT10eXBlb2YgdFswXSYmT3QuY2FsbCh0LCJpbmRleCIpJiYobi5pbmRleD10LmluZGV4LG4uaW5wdXQ9dC5pbnB1dCksbn0pKGUpLCFsKXJldHVybiBKcihlLHMpfWVsc2V7dmFyIHA9Qm8oZSksbT1wPT12fHxwPT1iO2lmKGJzKGUpKXJldHVybiBxcihlLGwpO2lmKHA9PVN8fHA9PWZ8fG0mJiFvKXtpZihzPWN8fG0/e306Rm8oZSksIWwpcmV0dXJuIGM/KGZ1bmN0aW9uIE0odCxlKXtyZXR1cm4gUXIodCxEbyh0KSxlKX0pKGUsKGZ1bmN0aW9uIHkodCxlKXtyZXR1cm4gdCYmUXIoZSxjbChlKSx0KX0pKHMsZSkpOihmdW5jdGlvbiBrKHQsZSl7cmV0dXJuIFFyKHQsem8odCksZSl9KShlLG9pKHMsZSkpfWVsc2V7aWYoIWllW3BdKXJldHVybiBvP2U6e307cz0oZnVuY3Rpb24gVih0LGUsbil7dmFyIGk9dC5jb25zdHJ1Y3Rvcjtzd2l0Y2goZSl7Y2FzZSBMOnJldHVybiBZcih0KTtjYXNlIGc6Y2FzZSBfOnJldHVybiBuZXcgaSgrdCk7Y2FzZSBQOnJldHVybihmdW5jdGlvbiByKHQsZSl7dmFyIG49ZT9Zcih0LmJ1ZmZlcik6dC5idWZmZXI7cmV0dXJuIG5ldyB0LmNvbnN0cnVjdG9yKG4sdC5ieXRlT2Zmc2V0LHQuYnl0ZUxlbmd0aCl9KSh0LG4pO2Nhc2UgTjpjYXNlIEk6Y2FzZSBSOmNhc2UgTzpjYXNlIHo6Y2FzZSBEOmNhc2UgQjpjYXNlIEg6Y2FzZSBGOnJldHVybiBYcih0LG4pO2Nhc2UgeDpyZXR1cm4gbmV3IGk7Y2FzZSB3OmNhc2UgQzpyZXR1cm4gbmV3IGkodCk7Y2FzZSBFOnJldHVybihmdW5jdGlvbiBvKHQpe3ZhciBlPW5ldyB0LmNvbnN0cnVjdG9yKHQuc291cmNlLGh0LmV4ZWModCkpO3JldHVybiBlLmxhc3RJbmRleD10Lmxhc3RJbmRleCxlfSkodCk7Y2FzZSBUOnJldHVybiBuZXcgaTtjYXNlIEE6cmV0dXJuKGZ1bmN0aW9uIGEodCl7cmV0dXJuIEhuP0N0KEhuLmNhbGwodCkpOnt9fSkodCl9fSkoZSxwLGwpfX1hfHwoYT1uZXcgS24pO3ZhciBVPWEuZ2V0KGUpO2lmKFUpcmV0dXJuIFU7YS5zZXQoZSxzKSxPcyhlKT9lLmZvckVhY2goKGZ1bmN0aW9uKHQpe3MuYWRkKGNpKHQsbixpLHQsZSxhKSl9KSk6a3MoZSkmJmUuZm9yRWFjaCgoZnVuY3Rpb24odCxyKXtzLnNldChyLGNpKHQsbixpLHIsZSxhKSl9KSk7dmFyIGo9aD90Oih1P2M/QW86Q286Yz9jbDpsbCkoZSk7cmV0dXJuIE1lKGp8fGUsKGZ1bmN0aW9uKHQscil7aiYmKHQ9ZVtyPXRdKSxuaShzLHIsY2kodCxuLGkscixlLGEpKX0pKSxzfWZ1bmN0aW9uIHVpKGUsbixpKXt2YXIgcj1pLmxlbmd0aDtpZihudWxsPT1lKXJldHVybiFyO2ZvcihlPUN0KGUpO3ItLTspe3ZhciBvPWlbcl0sYT1lW29dO2lmKGE9PT10JiYhKG8gaW4gZSl8fCEoMCxuW29dKShhKSlyZXR1cm4hMX1yZXR1cm4hMH1mdW5jdGlvbiBoaShuLGkscil7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIG4pdGhyb3cgbmV3IEx0KGUpO3JldHVybiBlYSgoZnVuY3Rpb24oKXtuLmFwcGx5KHQscil9KSxpKX1mdW5jdGlvbiBkaSh0LGUsbixpKXt2YXIgcj0tMSxvPUxlLGE9ITAscz10Lmxlbmd0aCxsPVtdLGM9ZS5sZW5ndGg7aWYoIXMpcmV0dXJuIGw7biYmKGU9TmUoZSxLZShuKSkpLGk/KG89UGUsYT0hMSk6ZS5sZW5ndGg+PTIwMCYmKG89SmUsYT0hMSxlPW5ldyAkbihlKSk7dDpmb3IoOysrcjxzOyl7dmFyIHU9dFtyXSxoPW51bGw9PW4/dTpuKHUpO2lmKHU9aXx8MCE9PXU/dTowLGEmJmg9PWgpe2Zvcih2YXIgZD1jO2QtLTspaWYoZVtkXT09PWgpY29udGludWUgdDtsLnB1c2godSl9ZWxzZSBvKGUsaCxpKXx8bC5wdXNoKHUpfXJldHVybiBsfVZuLnRlbXBsYXRlU2V0dGluZ3M9e2VzY2FwZTpYLGV2YWx1YXRlOiQsaW50ZXJwb2xhdGU6Syx2YXJpYWJsZToiIixpbXBvcnRzOntfOlZufX0sKFZuLnByb3RvdHlwZT1qbi5wcm90b3R5cGUpLmNvbnN0cnVjdG9yPVZuLChHbi5wcm90b3R5cGU9VW4oam4ucHJvdG90eXBlKSkuY29uc3RydWN0b3I9R24sKFduLnByb3RvdHlwZT1Vbihqbi5wcm90b3R5cGUpKS5jb25zdHJ1Y3Rvcj1Xbixxbi5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24gcGkoKXt0aGlzLl9fZGF0YV9fPUxuP0xuKG51bGwpOnt9LHRoaXMuc2l6ZT0wfSxxbi5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uIGZpKHQpe3ZhciBlPXRoaXMuaGFzKHQpJiZkZWxldGUgdGhpcy5fX2RhdGFfX1t0XTtyZXR1cm4gdGhpcy5zaXplLT1lPzE6MCxlfSxxbi5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uIG1pKGUpe3ZhciBpPXRoaXMuX19kYXRhX187aWYoTG4pe3ZhciByPWlbZV07cmV0dXJuIHI9PT1uP3Q6cn1yZXR1cm4gT3QuY2FsbChpLGUpP2lbZV06dH0scW4ucHJvdG90eXBlLmhhcz1mdW5jdGlvbiBnaShlKXt2YXIgbj10aGlzLl9fZGF0YV9fO3JldHVybiBMbj9uW2VdIT09dDpPdC5jYWxsKG4sZSl9LHFuLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24gX2koZSxpKXt2YXIgcj10aGlzLl9fZGF0YV9fO3JldHVybiB0aGlzLnNpemUrPXRoaXMuaGFzKGUpPzA6MSxyW2VdPUxuJiZpPT09dD9uOmksdGhpc30sWW4ucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uIHlpKCl7dGhpcy5fX2RhdGFfXz1bXSx0aGlzLnNpemU9MH0sWW4ucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbiB2aSh0KXt2YXIgZT10aGlzLl9fZGF0YV9fLG49aWkoZSx0KTtyZXR1cm4hKG48MHx8KG49PWUubGVuZ3RoLTE/ZS5wb3AoKTpKdC5jYWxsKGUsbiwxKSwtLXRoaXMuc2l6ZSwwKSl9LFluLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24gYmkoZSl7dmFyIG49dGhpcy5fX2RhdGFfXyxpPWlpKG4sZSk7cmV0dXJuIGk8MD90Om5baV1bMV19LFluLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24geGkodCl7cmV0dXJuIGlpKHRoaXMuX19kYXRhX18sdCk+LTF9LFluLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24gd2kodCxlKXt2YXIgbj10aGlzLl9fZGF0YV9fLGk9aWkobix0KTtyZXR1cm4gaTwwPygrK3RoaXMuc2l6ZSxuLnB1c2goW3QsZV0pKTpuW2ldWzFdPWUsdGhpc30sWG4ucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uIFNpKCl7dGhpcy5zaXplPTAsdGhpcy5fX2RhdGFfXz17aGFzaDpuZXcgcW4sbWFwOm5ldyhUbnx8WW4pLHN0cmluZzpuZXcgcW59fSxYbi5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uIE1pKHQpe3ZhciBlPUlvKHRoaXMsdCkuZGVsZXRlKHQpO3JldHVybiB0aGlzLnNpemUtPWU/MTowLGV9LFhuLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24gRWkodCl7cmV0dXJuIElvKHRoaXMsdCkuZ2V0KHQpfSxYbi5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uIFRpKHQpe3JldHVybiBJbyh0aGlzLHQpLmhhcyh0KX0sWG4ucHJvdG90eXBlLnNldD1mdW5jdGlvbiBDaSh0LGUpe3ZhciBuPUlvKHRoaXMsdCksaT1uLnNpemU7cmV0dXJuIG4uc2V0KHQsZSksdGhpcy5zaXplKz1uLnNpemU9PWk/MDoxLHRoaXN9LCRuLnByb3RvdHlwZS5hZGQ9JG4ucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24gQWkodCl7cmV0dXJuIHRoaXMuX19kYXRhX18uc2V0KHQsbiksdGhpc30sJG4ucHJvdG90eXBlLmhhcz1mdW5jdGlvbiBraSh0KXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5oYXModCl9LEtuLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbiBMaSgpe3RoaXMuX19kYXRhX189bmV3IFluLHRoaXMuc2l6ZT0wfSxLbi5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uIFBpKHQpe3ZhciBlPXRoaXMuX19kYXRhX18sbj1lLmRlbGV0ZSh0KTtyZXR1cm4gdGhpcy5zaXplPWUuc2l6ZSxufSxLbi5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uIE5pKHQpe3JldHVybiB0aGlzLl9fZGF0YV9fLmdldCh0KX0sS24ucHJvdG90eXBlLmhhcz1mdW5jdGlvbiBJaSh0KXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5oYXModCl9LEtuLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24gUmkodCxlKXt2YXIgbj10aGlzLl9fZGF0YV9fO2lmKG4gaW5zdGFuY2VvZiBZbil7dmFyIGk9bi5fX2RhdGFfXztpZighVG58fGkubGVuZ3RoPDE5OSlyZXR1cm4gaS5wdXNoKFt0LGVdKSx0aGlzLnNpemU9KytuLnNpemUsdGhpcztuPXRoaXMuX19kYXRhX189bmV3IFhuKGkpfXJldHVybiBuLnNldCh0LGUpLHRoaXMuc2l6ZT1uLnNpemUsdGhpc307dmFyIE9pPW5vKGppKSx6aT1ubyhHaSwhMCk7ZnVuY3Rpb24gRGkodCxlKXt2YXIgbj0hMDtyZXR1cm4gT2kodCwoZnVuY3Rpb24odCxpLHIpe3JldHVybiBuPSEhZSh0LGkscil9KSksbn1mdW5jdGlvbiBCaShlLG4saSl7Zm9yKHZhciByPS0xLG89ZS5sZW5ndGg7KytyPG87KXt2YXIgYT1lW3JdLHM9bihhKTtpZihudWxsIT1zJiYobD09PXQ/cz09cyYmIUJzKHMpOmkocyxsKSkpdmFyIGw9cyxjPWF9cmV0dXJuIGN9ZnVuY3Rpb24gSGkodCxlKXt2YXIgbj1bXTtyZXR1cm4gT2kodCwoZnVuY3Rpb24odCxpLHIpe2UodCxpLHIpJiZuLnB1c2godCl9KSksbn1mdW5jdGlvbiBGaSh0LGUsbixpLHIpe3ZhciBvPS0xLGE9dC5sZW5ndGg7Zm9yKG58fChuPVZvKSxyfHwocj1bXSk7KytvPGE7KXt2YXIgcz10W29dO2U+MCYmbihzKT9lPjE/RmkocyxlLTEsbixpLHIpOkllKHIscyk6aXx8KHJbci5sZW5ndGhdPXMpfXJldHVybiByfXZhciBWaT1pbygpLFVpPWlvKCEwKTtmdW5jdGlvbiBqaSh0LGUpe3JldHVybiB0JiZWaSh0LGUsbGwpfWZ1bmN0aW9uIEdpKHQsZSl7cmV0dXJuIHQmJlVpKHQsZSxsbCl9ZnVuY3Rpb24gV2kodCxlKXtyZXR1cm4ga2UoZSwoZnVuY3Rpb24oZSl7cmV0dXJuIE1zKHRbZV0pfSkpfWZ1bmN0aW9uIHFpKGUsbil7Zm9yKHZhciBpPTAscj0obj1VcihuLGUpKS5sZW5ndGg7bnVsbCE9ZSYmaTxyOyllPWVbbGEobltpKytdKV07cmV0dXJuIGkmJmk9PXI/ZTp0fWZ1bmN0aW9uIFlpKHQsZSxuKXt2YXIgaT1lKHQpO3JldHVybiBtcyh0KT9pOkllKGksbih0KSl9ZnVuY3Rpb24gWGkoZSl7cmV0dXJuIG51bGw9PWU/ZT09PXQ/IltvYmplY3QgVW5kZWZpbmVkXSI6IltvYmplY3QgTnVsbF0iOmxlJiZsZSBpbiBDdChlKT8oZnVuY3Rpb24gbihlKXt2YXIgbj1PdC5jYWxsKGUsbGUpLGk9ZVtsZV07dHJ5e2VbbGVdPXQ7dmFyIHI9ITB9Y2F0Y2godCl7fXZhciBvPUJ0LmNhbGwoZSk7cmV0dXJuIHImJihuP2VbbGVdPWk6ZGVsZXRlIGVbbGVdKSxvfSkoZSk6KGZ1bmN0aW9uIGkodCl7cmV0dXJuIEJ0LmNhbGwodCl9KShlKX1mdW5jdGlvbiAkaSh0LGUpe3JldHVybiB0PmV9ZnVuY3Rpb24gS2kodCxlKXtyZXR1cm4gbnVsbCE9dCYmT3QuY2FsbCh0LGUpfWZ1bmN0aW9uIFppKHQsZSl7cmV0dXJuIG51bGwhPXQmJmUgaW4gQ3QodCl9ZnVuY3Rpb24gSmkoZSxuLGkpe2Zvcih2YXIgcj1pP1BlOkxlLG89ZVswXS5sZW5ndGgsYT1lLmxlbmd0aCxzPWEsbD13dChhKSxjPTEvMCx1PVtdO3MtLTspe3ZhciBoPWVbc107cyYmbiYmKGg9TmUoaCxLZShuKSkpLGM9Ym4oaC5sZW5ndGgsYyksbFtzXT0haSYmKG58fG8+PTEyMCYmaC5sZW5ndGg+PTEyMCk/bmV3ICRuKHMmJmgpOnR9aD1lWzBdO3ZhciBkPS0xLHA9bFswXTt0OmZvcig7KytkPG8mJnUubGVuZ3RoPGM7KXt2YXIgZj1oW2RdLG09bj9uKGYpOmY7aWYoZj1pfHwwIT09Zj9mOjAsIShwP0plKHAsbSk6cih1LG0saSkpKXtmb3Iocz1hOy0tczspe3ZhciBnPWxbc107aWYoIShnP0plKGcsbSk6cihlW3NdLG0saSkpKWNvbnRpbnVlIHR9cCYmcC5wdXNoKG0pLHUucHVzaChmKX19cmV0dXJuIHV9ZnVuY3Rpb24gUWkoZSxuLGkpe3ZhciByPW51bGw9PShlPVpvKGUsbj1VcihuLGUpKSk/ZTplW2xhKHhhKG4pKV07cmV0dXJuIG51bGw9PXI/dDp4ZShyLGUsaSl9ZnVuY3Rpb24gdHIodCl7cmV0dXJuIEFzKHQpJiZYaSh0KT09Zn1mdW5jdGlvbiBlcihlLG4saSxyLG8pe3JldHVybiBlPT09bnx8KG51bGw9PWV8fG51bGw9PW58fCFBcyhlKSYmIUFzKG4pP2UhPWUmJm4hPW46KGZ1bmN0aW9uIGEoZSxuLGkscixvLHMpe3ZhciBsPW1zKGUpLGM9bXMobiksdT1sP206Qm8oZSksaD1jP206Qm8obiksZD0odT11PT1mP1M6dSk9PVMscD0oaD1oPT1mP1M6aCk9PVMsdj11PT1oO2lmKHYmJmJzKGUpKXtpZighYnMobikpcmV0dXJuITE7bD0hMCxkPSExfWlmKHYmJiFkKXJldHVybiBzfHwocz1uZXcgS24pLGx8fEhzKGUpP0VvKGUsbixpLHIsbyxzKTooZnVuY3Rpb24gYih0LGUsbixpLHIsbyxhKXtzd2l0Y2gobil7Y2FzZSBQOmlmKHQuYnl0ZUxlbmd0aCE9ZS5ieXRlTGVuZ3RofHx0LmJ5dGVPZmZzZXQhPWUuYnl0ZU9mZnNldClyZXR1cm4hMTt0PXQuYnVmZmVyLGU9ZS5idWZmZXI7Y2FzZSBMOnJldHVybiEodC5ieXRlTGVuZ3RoIT1lLmJ5dGVMZW5ndGh8fCFvKG5ldyBHdCh0KSxuZXcgR3QoZSkpKTtjYXNlIGc6Y2FzZSBfOmNhc2UgdzpyZXR1cm4gaHMoK3QsK2UpO2Nhc2UgeTpyZXR1cm4gdC5uYW1lPT1lLm5hbWUmJnQubWVzc2FnZT09ZS5tZXNzYWdlO2Nhc2UgRTpjYXNlIEM6cmV0dXJuIHQ9PWUrIiI7Y2FzZSB4OnZhciBzPXNuO2Nhc2UgVDppZihzfHwocz11biksdC5zaXplIT1lLnNpemUmJiEoMSZpKSlyZXR1cm4hMTt2YXIgbD1hLmdldCh0KTtpZihsKXJldHVybiBsPT1lO2l8PTIsYS5zZXQodCxlKTt2YXIgYz1FbyhzKHQpLHMoZSksaSxyLG8sYSk7cmV0dXJuIGEuZGVsZXRlKHQpLGM7Y2FzZSBBOmlmKEhuKXJldHVybiBIbi5jYWxsKHQpPT1Ibi5jYWxsKGUpfXJldHVybiExfSkoZSxuLHUsaSxyLG8scyk7aWYoISgxJmkpKXt2YXIgTT1kJiZPdC5jYWxsKGUsIl9fd3JhcHBlZF9fIiksaz1wJiZPdC5jYWxsKG4sIl9fd3JhcHBlZF9fIik7aWYoTXx8ayl7dmFyIE49TT9lLnZhbHVlKCk6ZSxJPWs/bi52YWx1ZSgpOm47cmV0dXJuIHN8fChzPW5ldyBLbiksbyhOLEksaSxyLHMpfX1yZXR1cm4hIXYmJihzfHwocz1uZXcgS24pLChmdW5jdGlvbiBSKGUsbixpLHIsbyxhKXt2YXIgcz0xJmksbD1DbyhlKSxjPWwubGVuZ3RoLHU9Q28obik7aWYoYyE9dS5sZW5ndGgmJiFzKXJldHVybiExO2Zvcih2YXIgaD1jO2gtLTspe3ZhciBkPWxbaF07aWYoIShzP2QgaW4gbjpPdC5jYWxsKG4sZCkpKXJldHVybiExfXZhciBwPWEuZ2V0KGUpLGY9YS5nZXQobik7aWYocCYmZilyZXR1cm4gcD09biYmZj09ZTt2YXIgbT0hMDthLnNldChlLG4pLGEuc2V0KG4sZSk7Zm9yKHZhciBnPXM7KytoPGM7KXt2YXIgXz1lW2Q9bFtoXV0seT1uW2RdO2lmKHIpdmFyIHY9cz9yKHksXyxkLG4sZSxhKTpyKF8seSxkLGUsbixhKTtpZighKHY9PT10P189PT15fHxvKF8seSxpLHIsYSk6dikpe209ITE7YnJlYWt9Z3x8KGc9ImNvbnN0cnVjdG9yIj09ZCl9aWYobSYmIWcpe3ZhciBiPWUuY29uc3RydWN0b3IseD1uLmNvbnN0cnVjdG9yO2I9PXh8fCEoImNvbnN0cnVjdG9yImluIGUpfHwhKCJjb25zdHJ1Y3RvciJpbiBuKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGImJmIgaW5zdGFuY2VvZiBiJiYiZnVuY3Rpb24iPT10eXBlb2YgeCYmeCBpbnN0YW5jZW9mIHh8fChtPSExKX1yZXR1cm4gYS5kZWxldGUoZSksYS5kZWxldGUobiksbX0pKGUsbixpLHIsbyxzKSl9KShlLG4saSxyLGVyLG8pKX1mdW5jdGlvbiBucihlLG4saSxyKXt2YXIgbz1pLmxlbmd0aCxhPW8scz0hcjtpZihudWxsPT1lKXJldHVybiFhO2ZvcihlPUN0KGUpO28tLTspe3ZhciBsPWlbb107aWYocyYmbFsyXT9sWzFdIT09ZVtsWzBdXTohKGxbMF1pbiBlKSlyZXR1cm4hMX1mb3IoOysrbzxhOyl7dmFyIGM9KGw9aVtvXSlbMF0sdT1lW2NdLGg9bFsxXTtpZihzJiZsWzJdKXtpZih1PT09dCYmIShjIGluIGUpKXJldHVybiExfWVsc2V7dmFyIGQ9bmV3IEtuO2lmKHIpdmFyIHA9cih1LGgsYyxlLG4sZCk7aWYoIShwPT09dD9lcihoLHUsMyxyLGQpOnApKXJldHVybiExfX1yZXR1cm4hMH1mdW5jdGlvbiBpcih0KXtyZXR1cm4hKCFDcyh0KXx8KGZ1bmN0aW9uIGUodCl7cmV0dXJuISFEdCYmRHQgaW4gdH0pKHQpKSYmKE1zKHQpP1Z0OmZ0KS50ZXN0KGNhKHQpKX1mdW5jdGlvbiBycih0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdD90Om51bGw9PXQ/Umw6Im9iamVjdCI9PXR5cGVvZiB0P21zKHQpP3VyKHRbMF0sdFsxXSk6Y3IodCk6amwodCl9ZnVuY3Rpb24gb3IodCl7aWYoIVlvKHQpKXJldHVybiB5bih0KTt2YXIgZT1bXTtmb3IodmFyIG4gaW4gQ3QodCkpT3QuY2FsbCh0LG4pJiYiY29uc3RydWN0b3IiIT1uJiZlLnB1c2gobik7cmV0dXJuIGV9ZnVuY3Rpb24gYXIodCl7aWYoIUNzKHQpKXJldHVybihmdW5jdGlvbiBlKHQpe3ZhciBlPVtdO2lmKG51bGwhPXQpZm9yKHZhciBuIGluIEN0KHQpKWUucHVzaChuKTtyZXR1cm4gZX0pKHQpO3ZhciBuPVlvKHQpLGk9W107Zm9yKHZhciByIGluIHQpKCJjb25zdHJ1Y3RvciIhPXJ8fCFuJiZPdC5jYWxsKHQscikpJiZpLnB1c2gocik7cmV0dXJuIGl9ZnVuY3Rpb24gc3IodCxlKXtyZXR1cm4gdDxlfWZ1bmN0aW9uIGxyKHQsZSl7dmFyIG49LTEsaT15cyh0KT93dCh0Lmxlbmd0aCk6W107cmV0dXJuIE9pKHQsKGZ1bmN0aW9uKHQscixvKXtpWysrbl09ZSh0LHIsbyl9KSksaX1mdW5jdGlvbiBjcih0KXt2YXIgZT1Sbyh0KTtyZXR1cm4gMT09ZS5sZW5ndGgmJmVbMF1bMl0/JG8oZVswXVswXSxlWzBdWzFdKTpmdW5jdGlvbihuKXtyZXR1cm4gbj09PXR8fG5yKG4sdCxlKX19ZnVuY3Rpb24gdXIoZSxuKXtyZXR1cm4gR28oZSkmJlhvKG4pPyRvKGxhKGUpLG4pOmZ1bmN0aW9uKGkpe3ZhciByPWlsKGksZSk7cmV0dXJuIHI9PT10JiZyPT09bj9ybChpLGUpOmVyKG4sciwzKX19ZnVuY3Rpb24gaHIoZSxuLGkscixvKXtlIT09biYmVmkobiwoZnVuY3Rpb24oYSxzKXtpZihvfHwobz1uZXcgS24pLENzKGEpKSEoZnVuY3Rpb24gbChlLG4saSxyLG8sYSxzKXt2YXIgbD1RbyhlLGkpLGM9UW8obixpKSx1PXMuZ2V0KGMpO2lmKHUpZWkoZSxpLHUpO2Vsc2V7dmFyIGg9YT9hKGwsYyxpKyIiLGUsbixzKTp0LGQ9aD09PXQ7aWYoZCl7dmFyIHA9bXMoYyksZj0hcCYmYnMoYyksbT0hcCYmIWYmJkhzKGMpO2g9YyxwfHxmfHxtP21zKGwpP2g9bDp2cyhsKT9oPUpyKGwpOmY/KGQ9ITEsaD1xcihjLCEwKSk6bT8oZD0hMSxoPVhyKGMsITApKTpoPVtdOk5zKGMpfHxmcyhjKT8oaD1sLGZzKGwpP2g9WHMobCk6Q3MobCkmJiFNcyhsKXx8KGg9Rm8oYykpKTpkPSExfWQmJihzLnNldChjLGgpLG8oaCxjLHIsYSxzKSxzLmRlbGV0ZShjKSksZWkoZSxpLGgpfX0pKGUsbixzLGksaHIscixvKTtlbHNle3ZhciBjPXI/cihRbyhlLHMpLGEscysiIixlLG4sbyk6dDtjPT09dCYmKGM9YSksZWkoZSxzLGMpfX0pLGNsKX1mdW5jdGlvbiBkcihlLG4pe3ZhciBpPWUubGVuZ3RoO2lmKGkpcmV0dXJuIFVvKG4rPW48MD9pOjAsaSk/ZVtuXTp0fWZ1bmN0aW9uIHByKHQsZSxuKXtlPWUubGVuZ3RoP05lKGUsKGZ1bmN0aW9uKHQpe3JldHVybiBtcyh0KT9mdW5jdGlvbihlKXtyZXR1cm4gcWkoZSwxPT09dC5sZW5ndGg/dFswXTp0KX06dH0pKTpbUmxdO3ZhciBpPS0xO3JldHVybiBlPU5lKGUsS2UoTm8oKSkpLChmdW5jdGlvbiByKHQsZSl7dmFyIG49dC5sZW5ndGg7Zm9yKHQuc29ydChlKTtuLS07KXRbbl09dFtuXS52YWx1ZTtyZXR1cm4gdH0pKGxyKHQsKGZ1bmN0aW9uKHQsbixyKXtyZXR1cm57Y3JpdGVyaWE6TmUoZSwoZnVuY3Rpb24oZSl7cmV0dXJuIGUodCl9KSksaW5kZXg6KytpLHZhbHVlOnR9fSkpLChmdW5jdGlvbih0LGUpe3JldHVybihmdW5jdGlvbiBpKHQsZSxuKXtmb3IodmFyIGk9LTEscj10LmNyaXRlcmlhLG89ZS5jcml0ZXJpYSxhPXIubGVuZ3RoLHM9bi5sZW5ndGg7KytpPGE7KXt2YXIgbD0kcihyW2ldLG9baV0pO2lmKGwpcmV0dXJuIGk+PXM/bDpsKigiZGVzYyI9PW5baV0/LTE6MSl9cmV0dXJuIHQuaW5kZXgtZS5pbmRleH0pKHQsZSxuKX0pKX1mdW5jdGlvbiBmcih0LGUsbil7Zm9yKHZhciBpPS0xLHI9ZS5sZW5ndGgsbz17fTsrK2k8cjspe3ZhciBhPWVbaV0scz1xaSh0LGEpO24ocyxhKSYmd3IobyxVcihhLHQpLHMpfXJldHVybiBvfWZ1bmN0aW9uIG1yKHQsZSxuLGkpe3ZhciByPWk/VmU6RmUsbz0tMSxhPWUubGVuZ3RoLHM9dDtmb3IodD09PWUmJihlPUpyKGUpKSxuJiYocz1OZSh0LEtlKG4pKSk7KytvPGE7KWZvcih2YXIgbD0wLGM9ZVtvXSx1PW4/bihjKTpjOyhsPXIocyx1LGwsaSkpPi0xOylzIT09dCYmSnQuY2FsbChzLGwsMSksSnQuY2FsbCh0LGwsMSk7cmV0dXJuIHR9ZnVuY3Rpb24gZ3IodCxlKXtmb3IodmFyIG49dD9lLmxlbmd0aDowLGk9bi0xO24tLTspe3ZhciByPWVbbl07aWYobj09aXx8ciE9PW8pe3ZhciBvPXI7VW8ocik/SnQuY2FsbCh0LHIsMSk6UnIodCxyKX19cmV0dXJuIHR9ZnVuY3Rpb24gX3IodCxlKXtyZXR1cm4gdCtFZShTbigpKihlLXQrMSkpfWZ1bmN0aW9uIHlyKHQsZSl7dmFyIG49IiI7aWYoIXR8fGU8MXx8ZT51KXJldHVybiBuO2Rve2UlMiYmKG4rPXQpLChlPUVlKGUvMikpJiYodCs9dCl9d2hpbGUoZSk7cmV0dXJuIG59ZnVuY3Rpb24gdnIodCxlKXtyZXR1cm4gbmEoS28odCxlLFJsKSx0KyIiKX1mdW5jdGlvbiBicih0KXtyZXR1cm4gSm4oX2wodCkpfWZ1bmN0aW9uIHhyKHQsZSl7dmFyIG49X2wodCk7cmV0dXJuIG9hKG4sbGkoZSwwLG4ubGVuZ3RoKSl9ZnVuY3Rpb24gd3IoZSxuLGkscil7aWYoIUNzKGUpKXJldHVybiBlO2Zvcih2YXIgbz0tMSxhPShuPVVyKG4sZSkpLmxlbmd0aCxzPWEtMSxsPWU7bnVsbCE9bCYmKytvPGE7KXt2YXIgYz1sYShuW29dKSx1PWk7aWYoIl9fcHJvdG9fXyI9PT1jfHwiY29uc3RydWN0b3IiPT09Y3x8InByb3RvdHlwZSI9PT1jKXJldHVybiBlO2lmKG8hPXMpe3ZhciBoPWxbY107KHU9cj9yKGgsYyxsKTp0KT09PXQmJih1PUNzKGgpP2g6VW8obltvKzFdKT9bXTp7fSl9bmkobCxjLHUpLGw9bFtjXX1yZXR1cm4gZX12YXIgU3I9UG4/ZnVuY3Rpb24odCxlKXtyZXR1cm4gUG4uc2V0KHQsZSksdH06UmwsTXI9dWU/ZnVuY3Rpb24odCxlKXtyZXR1cm4gdWUodCwidG9TdHJpbmciLHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMSx2YWx1ZTpQbChlKSx3cml0YWJsZTohMH0pfTpSbDtmdW5jdGlvbiBFcih0KXtyZXR1cm4gb2EoX2wodCkpfWZ1bmN0aW9uIFRyKHQsZSxuKXt2YXIgaT0tMSxyPXQubGVuZ3RoO2U8MCYmKGU9LWU+cj8wOnIrZSksKG49bj5yP3I6bik8MCYmKG4rPXIpLHI9ZT5uPzA6bi1lPj4+MCxlPj4+PTA7Zm9yKHZhciBvPXd0KHIpOysraTxyOylvW2ldPXRbaStlXTtyZXR1cm4gb31mdW5jdGlvbiBDcih0LGUpe3ZhciBuO3JldHVybiBPaSh0LChmdW5jdGlvbih0LGkscil7cmV0dXJuIShuPWUodCxpLHIpKX0pKSwhIW59ZnVuY3Rpb24gQXIodCxlLG4pe3ZhciBpPTAscj1udWxsPT10P2k6dC5sZW5ndGg7aWYoIm51bWJlciI9PXR5cGVvZiBlJiZlPT1lJiZyPD0yMTQ3NDgzNjQ3KXtmb3IoO2k8cjspe3ZhciBvPWkrcj4+PjEsYT10W29dO251bGwhPT1hJiYhQnMoYSkmJihuP2E8PWU6YTxlKT9pPW8rMTpyPW99cmV0dXJuIHJ9cmV0dXJuIGtyKHQsZSxSbCxuKX1mdW5jdGlvbiBrcihlLG4saSxyKXt2YXIgbz0wLGE9bnVsbD09ZT8wOmUubGVuZ3RoO2lmKDA9PT1hKXJldHVybiAwO2Zvcih2YXIgcz0obj1pKG4pKSE9bixsPW51bGw9PT1uLGM9QnMobiksdT1uPT09dDtvPGE7KXt2YXIgaD1FZSgobythKS8yKSxkPWkoZVtoXSkscD1kIT09dCxmPW51bGw9PT1kLG09ZD09ZCxnPUJzKGQpO2lmKHMpdmFyIF89cnx8bTtlbHNlIF89dT9tJiYocnx8cCk6bD9tJiZwJiYocnx8IWYpOmM/bSYmcCYmIWYmJihyfHwhZyk6IWYmJiFnJiYocj9kPD1uOmQ8bik7Xz9vPWgrMTphPWh9cmV0dXJuIGJuKGEsNDI5NDk2NzI5NCl9ZnVuY3Rpb24gTHIodCxlKXtmb3IodmFyIG49LTEsaT10Lmxlbmd0aCxyPTAsbz1bXTsrK248aTspe3ZhciBhPXRbbl0scz1lP2UoYSk6YTtpZighbnx8IWhzKHMsbCkpe3ZhciBsPXM7b1tyKytdPTA9PT1hPzA6YX19cmV0dXJuIG99ZnVuY3Rpb24gUHIodCl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0P3Q6QnModCk/aDordH1mdW5jdGlvbiBOcih0KXtpZigic3RyaW5nIj09dHlwZW9mIHQpcmV0dXJuIHQ7aWYobXModCkpcmV0dXJuIE5lKHQsTnIpKyIiO2lmKEJzKHQpKXJldHVybiBGbj9Gbi5jYWxsKHQpOiIiO3ZhciBlPXQrIiI7cmV0dXJuIjAiPT1lJiYxL3Q9PS0xLzA/Ii0wIjplfWZ1bmN0aW9uIElyKHQsZSxuKXt2YXIgaT0tMSxyPUxlLG89dC5sZW5ndGgsYT0hMCxzPVtdLGw9cztpZihuKWE9ITEscj1QZTtlbHNlIGlmKG8+PTIwMCl7dmFyIGM9ZT9udWxsOnZvKHQpO2lmKGMpcmV0dXJuIHVuKGMpO2E9ITEscj1KZSxsPW5ldyAkbn1lbHNlIGw9ZT9bXTpzO3Q6Zm9yKDsrK2k8bzspe3ZhciB1PXRbaV0saD1lP2UodSk6dTtpZih1PW58fDAhPT11P3U6MCxhJiZoPT1oKXtmb3IodmFyIGQ9bC5sZW5ndGg7ZC0tOylpZihsW2RdPT09aCljb250aW51ZSB0O2UmJmwucHVzaChoKSxzLnB1c2godSl9ZWxzZSByKGwsaCxuKXx8KGwhPT1zJiZsLnB1c2goaCkscy5wdXNoKHUpKX1yZXR1cm4gc31mdW5jdGlvbiBScih0LGUpe3JldHVybiBudWxsPT0odD1abyh0LGU9VXIoZSx0KSkpfHxkZWxldGUgdFtsYSh4YShlKSldfWZ1bmN0aW9uIE9yKHQsZSxuLGkpe3JldHVybiB3cih0LGUsbihxaSh0LGUpKSxpKX1mdW5jdGlvbiB6cih0LGUsbixpKXtmb3IodmFyIHI9dC5sZW5ndGgsbz1pP3I6LTE7KGk/by0tOisrbzxyKSYmZSh0W29dLG8sdCk7KTtyZXR1cm4gbj9Ucih0LGk/MDpvLGk/bysxOnIpOlRyKHQsaT9vKzE6MCxpP3I6byl9ZnVuY3Rpb24gRHIodCxlKXt2YXIgbj10O3JldHVybiBuIGluc3RhbmNlb2YgV24mJihuPW4udmFsdWUoKSksUmUoZSwoZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5mdW5jLmFwcGx5KGUudGhpc0FyZyxJZShbdF0sZS5hcmdzKSl9KSxuKX1mdW5jdGlvbiBCcih0LGUsbil7dmFyIGk9dC5sZW5ndGg7aWYoaTwyKXJldHVybiBpP0lyKHRbMF0pOltdO2Zvcih2YXIgcj0tMSxvPXd0KGkpOysrcjxpOylmb3IodmFyIGE9dFtyXSxzPS0xOysrczxpOylzIT1yJiYob1tyXT1kaShvW3JdfHxhLHRbc10sZSxuKSk7cmV0dXJuIElyKEZpKG8sMSksZSxuKX1mdW5jdGlvbiBIcihlLG4saSl7Zm9yKHZhciByPS0xLG89ZS5sZW5ndGgsYT1uLmxlbmd0aCxzPXt9OysrcjxvOylpKHMsZVtyXSxyPGE/bltyXTp0KTtyZXR1cm4gc31mdW5jdGlvbiBGcih0KXtyZXR1cm4gdnModCk/dDpbXX1mdW5jdGlvbiBWcih0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdD90OlJsfWZ1bmN0aW9uIFVyKHQsZSl7cmV0dXJuIG1zKHQpP3Q6R28odCxlKT9bdF06YWEoJHModCkpfXZhciBqcj12cjtmdW5jdGlvbiBHcihlLG4saSl7dmFyIHI9ZS5sZW5ndGg7cmV0dXJuIGk9aT09PXQ/cjppLCFuJiZpPj1yP2U6VHIoZSxuLGkpfXZhciBXcj1oZXx8ZnVuY3Rpb24odCl7cmV0dXJuIGNlLmNsZWFyVGltZW91dCh0KX07ZnVuY3Rpb24gcXIodCxlKXtpZihlKXJldHVybiB0LnNsaWNlKCk7dmFyIG49dC5sZW5ndGgsaT1XdD9XdChuKTpuZXcgdC5jb25zdHJ1Y3RvcihuKTtyZXR1cm4gdC5jb3B5KGkpLGl9ZnVuY3Rpb24gWXIodCl7dmFyIGU9bmV3IHQuY29uc3RydWN0b3IodC5ieXRlTGVuZ3RoKTtyZXR1cm4gbmV3IEd0KGUpLnNldChuZXcgR3QodCkpLGV9ZnVuY3Rpb24gWHIodCxlKXt2YXIgbj1lP1lyKHQuYnVmZmVyKTp0LmJ1ZmZlcjtyZXR1cm4gbmV3IHQuY29uc3RydWN0b3Iobix0LmJ5dGVPZmZzZXQsdC5sZW5ndGgpfWZ1bmN0aW9uICRyKGUsbil7aWYoZSE9PW4pe3ZhciBpPWUhPT10LHI9bnVsbD09PWUsbz1lPT1lLGE9QnMoZSkscz1uIT09dCxsPW51bGw9PT1uLGM9bj09bix1PUJzKG4pO2lmKCFsJiYhdSYmIWEmJmU+bnx8YSYmcyYmYyYmIWwmJiF1fHxyJiZzJiZjfHwhaSYmY3x8IW8pcmV0dXJuIDE7aWYoIXImJiFhJiYhdSYmZTxufHx1JiZpJiZvJiYhciYmIWF8fGwmJmkmJm98fCFzJiZvfHwhYylyZXR1cm4tMX1yZXR1cm4gMH1mdW5jdGlvbiBLcih0LGUsbixpKXtmb3IodmFyIHI9LTEsbz10Lmxlbmd0aCxhPW4ubGVuZ3RoLHM9LTEsbD1lLmxlbmd0aCxjPXZuKG8tYSwwKSx1PXd0KGwrYyksaD0haTsrK3M8bDspdVtzXT1lW3NdO2Zvcig7KytyPGE7KShofHxyPG8pJiYodVtuW3JdXT10W3JdKTtmb3IoO2MtLTspdVtzKytdPXRbcisrXTtyZXR1cm4gdX1mdW5jdGlvbiBacih0LGUsbixpKXtmb3IodmFyIHI9LTEsbz10Lmxlbmd0aCxhPS0xLHM9bi5sZW5ndGgsbD0tMSxjPWUubGVuZ3RoLHU9dm4oby1zLDApLGg9d3QodStjKSxkPSFpOysrcjx1OyloW3JdPXRbcl07Zm9yKHZhciBwPXI7KytsPGM7KWhbcCtsXT1lW2xdO2Zvcig7KythPHM7KShkfHxyPG8pJiYoaFtwK25bYV1dPXRbcisrXSk7cmV0dXJuIGh9ZnVuY3Rpb24gSnIodCxlKXt2YXIgbj0tMSxpPXQubGVuZ3RoO2ZvcihlfHwoZT13dChpKSk7KytuPGk7KWVbbl09dFtuXTtyZXR1cm4gZX1mdW5jdGlvbiBRcihlLG4saSxyKXt2YXIgbz0haTtpfHwoaT17fSk7Zm9yKHZhciBhPS0xLHM9bi5sZW5ndGg7KythPHM7KXt2YXIgbD1uW2FdLGM9cj9yKGlbbF0sZVtsXSxsLGksZSk6dDtjPT09dCYmKGM9ZVtsXSksbz9haShpLGwsYyk6bmkoaSxsLGMpfXJldHVybiBpfWZ1bmN0aW9uIHRvKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4saSl7dmFyIHI9bXMobik/d2U6cmksbz1lP2UoKTp7fTtyZXR1cm4gcihuLHQsTm8oaSwyKSxvKX19ZnVuY3Rpb24gZW8oZSl7cmV0dXJuIHZyKChmdW5jdGlvbihuLGkpe3ZhciByPS0xLG89aS5sZW5ndGgsYT1vPjE/aVtvLTFdOnQscz1vPjI/aVsyXTp0O2ZvcihhPWUubGVuZ3RoPjMmJiJmdW5jdGlvbiI9PXR5cGVvZiBhPyhvLS0sYSk6dCxzJiZqbyhpWzBdLGlbMV0scykmJihhPW88Mz90OmEsbz0xKSxuPUN0KG4pOysrcjxvOyl7dmFyIGw9aVtyXTtsJiZlKG4sbCxyLGEpfXJldHVybiBufSkpfWZ1bmN0aW9uIG5vKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4saSl7aWYobnVsbD09bilyZXR1cm4gbjtpZigheXMobikpcmV0dXJuIHQobixpKTtmb3IodmFyIHI9bi5sZW5ndGgsbz1lP3I6LTEsYT1DdChuKTsoZT9vLS06KytvPHIpJiYhMSE9PWkoYVtvXSxvLGEpOyk7cmV0dXJuIG59fWZ1bmN0aW9uIGlvKHQpe3JldHVybiBmdW5jdGlvbihlLG4saSl7Zm9yKHZhciByPS0xLG89Q3QoZSksYT1pKGUpLHM9YS5sZW5ndGg7cy0tOyl7dmFyIGw9YVt0P3M6KytyXTtpZighMT09PW4ob1tsXSxsLG8pKWJyZWFrfXJldHVybiBlfX1mdW5jdGlvbiBybyhlKXtyZXR1cm4gZnVuY3Rpb24obil7dmFyIGk9YW4obj0kcyhuKSk/cG4obik6dCxyPWk/aVswXTpuLmNoYXJBdCgwKSxvPWk/R3IoaSwxKS5qb2luKCIiKTpuLnNsaWNlKDEpO3JldHVybiByW2VdKCkrb319ZnVuY3Rpb24gb28odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBSZShBbChibChlKS5yZXBsYWNlKFh0LCIiKSksdCwiIil9fWZ1bmN0aW9uIGFvKHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cztzd2l0Y2goZS5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4gbmV3IHQ7Y2FzZSAxOnJldHVybiBuZXcgdChlWzBdKTtjYXNlIDI6cmV0dXJuIG5ldyB0KGVbMF0sZVsxXSk7Y2FzZSAzOnJldHVybiBuZXcgdChlWzBdLGVbMV0sZVsyXSk7Y2FzZSA0OnJldHVybiBuZXcgdChlWzBdLGVbMV0sZVsyXSxlWzNdKTtjYXNlIDU6cmV0dXJuIG5ldyB0KGVbMF0sZVsxXSxlWzJdLGVbM10sZVs0XSk7Y2FzZSA2OnJldHVybiBuZXcgdChlWzBdLGVbMV0sZVsyXSxlWzNdLGVbNF0sZVs1XSk7Y2FzZSA3OnJldHVybiBuZXcgdChlWzBdLGVbMV0sZVsyXSxlWzNdLGVbNF0sZVs1XSxlWzZdKX12YXIgbj1Vbih0LnByb3RvdHlwZSksaT10LmFwcGx5KG4sZSk7cmV0dXJuIENzKGkpP2k6bn19ZnVuY3Rpb24gc28oZSl7cmV0dXJuIGZ1bmN0aW9uKG4saSxyKXt2YXIgbz1DdChuKTtpZigheXMobikpe3ZhciBhPU5vKGksMyk7bj1sbChuKSxpPWZ1bmN0aW9uKHQpe3JldHVybiBhKG9bdF0sdCxvKX19dmFyIHM9ZShuLGkscik7cmV0dXJuIHM+LTE/b1thP25bc106c106dH19ZnVuY3Rpb24gbG8obil7cmV0dXJuIFRvKChmdW5jdGlvbihpKXt2YXIgcj1pLmxlbmd0aCxvPXIsYT1Hbi5wcm90b3R5cGUudGhydTtmb3IobiYmaS5yZXZlcnNlKCk7by0tOyl7dmFyIHM9aVtvXTtpZigiZnVuY3Rpb24iIT10eXBlb2Ygcyl0aHJvdyBuZXcgTHQoZSk7aWYoYSYmIWwmJiJ3cmFwcGVyIj09TG8ocykpdmFyIGw9bmV3IEduKFtdLCEwKX1mb3Iobz1sP286cjsrK288cjspe3ZhciBjPUxvKHM9aVtvXSksdT0id3JhcHBlciI9PWM/a28ocyk6dDtsPXUmJldvKHVbMF0pJiY0MjQ9PXVbMV0mJiF1WzRdLmxlbmd0aCYmMT09dVs5XT9sW0xvKHVbMF0pXS5hcHBseShsLHVbM10pOjE9PXMubGVuZ3RoJiZXbyhzKT9sW2NdKCk6bC50aHJ1KHMpfXJldHVybiBmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cyxlPXRbMF07aWYobCYmMT09dC5sZW5ndGgmJm1zKGUpKXJldHVybiBsLnBsYW50KGUpLnZhbHVlKCk7Zm9yKHZhciBuPTAsbz1yP2lbbl0uYXBwbHkodGhpcyx0KTplOysrbjxyOylvPWlbbl0uY2FsbCh0aGlzLG8pO3JldHVybiBvfX0pKX1mdW5jdGlvbiBjbyhlLG4saSxyLG8sYSxsLGMsdSxoKXt2YXIgZD1uJnMscD0xJm4sZj0yJm4sbT0yNCZuLGc9NTEyJm4sXz1mP3Q6YW8oZSk7cmV0dXJuIGZ1bmN0aW9uIHQoKXtmb3IodmFyIHM9YXJndW1lbnRzLmxlbmd0aCx5PXd0KHMpLHY9czt2LS07KXlbdl09YXJndW1lbnRzW3ZdO2lmKG0pdmFyIGI9UG8odCkseD1lbih5LGIpO2lmKHImJih5PUtyKHkscixvLG0pKSxhJiYoeT1acih5LGEsbCxtKSkscy09eCxtJiZzPGgpe3ZhciB3PWNuKHksYik7cmV0dXJuIF9vKGUsbixjbyx0LnBsYWNlaG9sZGVyLGkseSx3LGMsdSxoLXMpfXZhciBTPXA/aTp0aGlzLE09Zj9TW2VdOmU7cmV0dXJuIHM9eS5sZW5ndGgsYz95PUpvKHksYyk6ZyYmcz4xJiZ5LnJldmVyc2UoKSxkJiZ1PHMmJih5Lmxlbmd0aD11KSx0aGlzJiZ0aGlzIT09Y2UmJnRoaXMgaW5zdGFuY2VvZiB0JiYoTT1ffHxhbyhNKSksTS5hcHBseShTLHkpfX1mdW5jdGlvbiB1byh0LGUpe3JldHVybiBmdW5jdGlvbihuLGkpe3JldHVybihmdW5jdGlvbiByKHQsZSxuLGkpe3JldHVybiBqaSh0LChmdW5jdGlvbih0LHIsbyl7ZShpLG4odCkscixvKX0pKSxpfSkobix0LGUoaSkse30pfX1mdW5jdGlvbiBobyhlLG4pe3JldHVybiBmdW5jdGlvbihpLHIpe3ZhciBvO2lmKGk9PT10JiZyPT09dClyZXR1cm4gbjtpZihpIT09dCYmKG89aSksciE9PXQpe2lmKG89PT10KXJldHVybiByOyJzdHJpbmciPT10eXBlb2YgaXx8InN0cmluZyI9PXR5cGVvZiByPyhpPU5yKGkpLHI9TnIocikpOihpPVByKGkpLHI9UHIocikpLG89ZShpLHIpfXJldHVybiBvfX1mdW5jdGlvbiBwbyh0KXtyZXR1cm4gVG8oKGZ1bmN0aW9uKGUpe3JldHVybiBlPU5lKGUsS2UoTm8oKSkpLHZyKChmdW5jdGlvbihuKXt2YXIgaT10aGlzO3JldHVybiB0KGUsKGZ1bmN0aW9uKHQpe3JldHVybiB4ZSh0LGksbil9KSl9KSl9KSl9ZnVuY3Rpb24gZm8oZSxuKXt2YXIgaT0obj1uPT09dD8iICI6TnIobikpLmxlbmd0aDtpZihpPDIpcmV0dXJuIGk/eXIobixlKTpuO3ZhciByPXlyKG4sU2UoZS9kbihuKSkpO3JldHVybiBhbihuKT9HcihwbihyKSwwLGUpLmpvaW4oIiIpOnIuc2xpY2UoMCxlKX1mdW5jdGlvbiBtbyhlKXtyZXR1cm4gZnVuY3Rpb24obixpLHIpe3JldHVybiByJiYibnVtYmVyIiE9dHlwZW9mIHImJmpvKG4saSxyKSYmKGk9cj10KSxuPUdzKG4pLGk9PT10PyhpPW4sbj0wKTppPUdzKGkpLChmdW5jdGlvbiBvKHQsZSxuLGkpe2Zvcih2YXIgcj0tMSxvPXZuKFNlKChlLXQpLyhufHwxKSksMCksYT13dChvKTtvLS07KWFbaT9vOisrcl09dCx0Kz1uO3JldHVybiBhfSkobixpLHI9cj09PXQ/bjxpPzE6LTE6R3MociksZSl9fWZ1bmN0aW9uIGdvKHQpe3JldHVybiBmdW5jdGlvbihlLG4pe3JldHVybiJzdHJpbmciPT10eXBlb2YgZSYmInN0cmluZyI9PXR5cGVvZiBufHwoZT1ZcyhlKSxuPVlzKG4pKSx0KGUsbil9fWZ1bmN0aW9uIF9vKGUsbixpLHIscyxsLGMsdSxoLGQpe3ZhciBwPTgmbjtufD1wP286YSw0JihuJj1+KHA/YTpvKSl8fChuJj0tNCk7dmFyIGY9W2UsbixzLHA/bDp0LHA/Yzp0LHA/dDpsLHA/dDpjLHUsaCxkXSxtPWkuYXBwbHkodCxmKTtyZXR1cm4gV28oZSkmJnRhKG0sZiksbS5wbGFjZWhvbGRlcj1yLGlhKG0sZSxuKX1mdW5jdGlvbiB5byh0KXt2YXIgZT1UdFt0XTtyZXR1cm4gZnVuY3Rpb24odCxuKXtpZih0PVlzKHQpLChuPW51bGw9PW4/MDpibihXcyhuKSwyOTIpKSYmV2UodCkpe3ZhciBpPSgkcyh0KSsiZSIpLnNwbGl0KCJlIik7cmV0dXJuKygoaT0oJHMoZShpWzBdKyJlIisoK2lbMV0rbikpKSsiZSIpLnNwbGl0KCJlIikpWzBdKyJlIisoK2lbMV0tbikpfXJldHVybiBlKHQpfX12YXIgdm89QW4mJjEvdW4obmV3IEFuKFssLTBdKSlbMV09PWM/ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBBbih0KX06SGw7ZnVuY3Rpb24gYm8odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBuPUJvKGUpO3JldHVybiBuPT14P3NuKGUpOm49PVQ/aG4oZSk6KGZ1bmN0aW9uIGkodCxlKXtyZXR1cm4gTmUoZSwoZnVuY3Rpb24oZSl7cmV0dXJuW2UsdFtlXV19KSl9KShlLHQoZSkpfX1mdW5jdGlvbiB4byhuLGMsdSxoLGQscCxmLG0pe3ZhciBnPTImYztpZighZyYmImZ1bmN0aW9uIiE9dHlwZW9mIG4pdGhyb3cgbmV3IEx0KGUpO3ZhciBfPWg/aC5sZW5ndGg6MDtpZihffHwoYyY9LTk3LGg9ZD10KSxmPWY9PT10P2Y6dm4oV3MoZiksMCksbT1tPT09dD9tOldzKG0pLF8tPWQ/ZC5sZW5ndGg6MCxjJmEpe3ZhciB5PWgsdj1kO2g9ZD10fXZhciBiPWc/dDprbyhuKSx4PVtuLGMsdSxoLGQseSx2LHAsZixtXTtpZihiJiYoZnVuY3Rpb24gdyh0LGUpe3ZhciBuPXRbMV0scj1lWzFdLG89bnxyLGE9cj09cyYmOD09bnx8cj09cyYmbj09bCYmdFs3XS5sZW5ndGg8PWVbOF18fDM4ND09ciYmZVs3XS5sZW5ndGg8PWVbOF0mJjg9PW47aWYoIShvPDEzMXx8YSkpcmV0dXJuIHQ7MSZyJiYodFsyXT1lWzJdLG98PTEmbj8wOjQpO3ZhciBjPWVbM107aWYoYyl7dmFyIHU9dFszXTt0WzNdPXU/S3IodSxjLGVbNF0pOmMsdFs0XT11P2NuKHRbM10saSk6ZVs0XX1yZXR1cm4oYz1lWzVdKSYmKHRbNV09KHU9dFs1XSk/WnIodSxjLGVbNl0pOmMsdFs2XT11P2NuKHRbNV0saSk6ZVs2XSksKGM9ZVs3XSkmJih0WzddPWMpLHImcyYmKHRbOF09bnVsbD09dFs4XT9lWzhdOmJuKHRbOF0sZVs4XSkpLG51bGw9PXRbOV0mJih0WzldPWVbOV0pLHRbMF09ZVswXSx0WzFdPW8sdH0pKHgsYiksbj14WzBdLGM9eFsxXSx1PXhbMl0saD14WzNdLGQ9eFs0XSwhKG09eFs5XT14WzldPT09dD9nPzA6bi5sZW5ndGg6dm4oeFs5XS1fLDApKSYmMjQmYyYmKGMmPS0yNSksYyYmMSE9YylFPTg9PWN8fGM9PXI/KGZ1bmN0aW9uIFMoZSxuLGkpe3ZhciByPWFvKGUpO3JldHVybiBmdW5jdGlvbiBvKCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGgscz13dChhKSxsPWEsYz1QbyhvKTtsLS07KXNbbF09YXJndW1lbnRzW2xdO3ZhciB1PWE8MyYmc1swXSE9PWMmJnNbYS0xXSE9PWM/W106Y24ocyxjKTtyZXR1cm4oYS09dS5sZW5ndGgpPGk/X28oZSxuLGNvLG8ucGxhY2Vob2xkZXIsdCxzLHUsdCx0LGktYSk6eGUodGhpcyYmdGhpcyE9PWNlJiZ0aGlzIGluc3RhbmNlb2Ygbz9yOmUsdGhpcyxzKX19KShuLGMsbSk6YyE9byYmMzMhPWN8fGQubGVuZ3RoP2NvLmFwcGx5KHQseCk6KGZ1bmN0aW9uIE0odCxlLG4saSl7dmFyIHI9MSZlLG89YW8odCk7cmV0dXJuIGZ1bmN0aW9uIGUoKXtmb3IodmFyIGE9LTEscz1hcmd1bWVudHMubGVuZ3RoLGw9LTEsYz1pLmxlbmd0aCx1PXd0KGMrcyksaD10aGlzJiZ0aGlzIT09Y2UmJnRoaXMgaW5zdGFuY2VvZiBlP286dDsrK2w8YzspdVtsXT1pW2xdO2Zvcig7cy0tOyl1W2wrK109YXJndW1lbnRzWysrYV07cmV0dXJuIHhlKGgscj9uOnRoaXMsdSl9fSkobixjLHUsaCk7ZWxzZSB2YXIgRT0oZnVuY3Rpb24gVCh0LGUsbil7dmFyIGk9MSZlLHI9YW8odCk7cmV0dXJuIGZ1bmN0aW9uIGUoKXtyZXR1cm4odGhpcyYmdGhpcyE9PWNlJiZ0aGlzIGluc3RhbmNlb2YgZT9yOnQpLmFwcGx5KGk/bjp0aGlzLGFyZ3VtZW50cyl9fSkobixjLHUpO3JldHVybiBpYSgoYj9Tcjp0YSkoRSx4KSxuLGMpfWZ1bmN0aW9uIHdvKGUsbixpLHIpe3JldHVybiBlPT09dHx8aHMoZSxOdFtpXSkmJiFPdC5jYWxsKHIsaSk/bjplfWZ1bmN0aW9uIFNvKGUsbixpLHIsbyxhKXtyZXR1cm4gQ3MoZSkmJkNzKG4pJiYoYS5zZXQobixlKSxocihlLG4sdCxTbyxhKSxhLmRlbGV0ZShuKSksZX1mdW5jdGlvbiBNbyhlKXtyZXR1cm4gTnMoZSk/dDplfWZ1bmN0aW9uIEVvKGUsbixpLHIsbyxhKXt2YXIgcz0xJmksbD1lLmxlbmd0aCxjPW4ubGVuZ3RoO2lmKGwhPWMmJiEocyYmYz5sKSlyZXR1cm4hMTt2YXIgdT1hLmdldChlKSxoPWEuZ2V0KG4pO2lmKHUmJmgpcmV0dXJuIHU9PW4mJmg9PWU7dmFyIGQ9LTEscD0hMCxmPTImaT9uZXcgJG46dDtmb3IoYS5zZXQoZSxuKSxhLnNldChuLGUpOysrZDxsOyl7dmFyIG09ZVtkXSxnPW5bZF07aWYocil2YXIgXz1zP3IoZyxtLGQsbixlLGEpOnIobSxnLGQsZSxuLGEpO2lmKF8hPT10KXtpZihfKWNvbnRpbnVlO3A9ITE7YnJlYWt9aWYoZil7aWYoIXplKG4sKGZ1bmN0aW9uKHQsZSl7aWYoIUplKGYsZSkmJihtPT09dHx8byhtLHQsaSxyLGEpKSlyZXR1cm4gZi5wdXNoKGUpfSkpKXtwPSExO2JyZWFrfX1lbHNlIGlmKG0hPT1nJiYhbyhtLGcsaSxyLGEpKXtwPSExO2JyZWFrfX1yZXR1cm4gYS5kZWxldGUoZSksYS5kZWxldGUobikscH1mdW5jdGlvbiBUbyhlKXtyZXR1cm4gbmEoS28oZSx0LGdhKSxlKyIiKX1mdW5jdGlvbiBDbyh0KXtyZXR1cm4gWWkodCxsbCx6byl9ZnVuY3Rpb24gQW8odCl7cmV0dXJuIFlpKHQsY2wsRG8pfXZhciBrbz1Qbj9mdW5jdGlvbih0KXtyZXR1cm4gUG4uZ2V0KHQpfTpIbDtmdW5jdGlvbiBMbyh0KXtmb3IodmFyIGU9dC5uYW1lKyIiLG49Tm5bZV0saT1PdC5jYWxsKE5uLGUpP24ubGVuZ3RoOjA7aS0tOyl7dmFyIHI9bltpXSxvPXIuZnVuYztpZihudWxsPT1vfHxvPT10KXJldHVybiByLm5hbWV9cmV0dXJuIGV9ZnVuY3Rpb24gUG8odCl7cmV0dXJuKE90LmNhbGwoVm4sInBsYWNlaG9sZGVyIik/Vm46dCkucGxhY2Vob2xkZXJ9ZnVuY3Rpb24gTm8oKXt2YXIgdD1Wbi5pdGVyYXRlZXx8T2w7cmV0dXJuIHQ9dD09PU9sP3JyOnQsYXJndW1lbnRzLmxlbmd0aD90KGFyZ3VtZW50c1swXSxhcmd1bWVudHNbMV0pOnR9ZnVuY3Rpb24gSW8odCxlKXt2YXIgbj10Ll9fZGF0YV9fO3JldHVybihmdW5jdGlvbiBpKHQpe3ZhciBlPXR5cGVvZiB0O3JldHVybiJzdHJpbmciPT1lfHwibnVtYmVyIj09ZXx8InN5bWJvbCI9PWV8fCJib29sZWFuIj09ZT8iX19wcm90b19fIiE9PXQ6bnVsbD09PXR9KShlKT9uWyJzdHJpbmciPT10eXBlb2YgZT8ic3RyaW5nIjoiaGFzaCJdOm4ubWFwfWZ1bmN0aW9uIFJvKHQpe2Zvcih2YXIgZT1sbCh0KSxuPWUubGVuZ3RoO24tLTspe3ZhciBpPWVbbl0scj10W2ldO2Vbbl09W2kscixYbyhyKV19cmV0dXJuIGV9ZnVuY3Rpb24gT28oZSxuKXt2YXIgaT0oZnVuY3Rpb24gcihlLG4pe3JldHVybiBudWxsPT1lP3Q6ZVtuXX0pKGUsbik7cmV0dXJuIGlyKGkpP2k6dH12YXIgem89VGU/ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/W106KHQ9Q3QodCksa2UoVGUodCksKGZ1bmN0aW9uKGUpe3JldHVybiBLdC5jYWxsKHQsZSl9KSkpfTpxbCxEbz1UZT9mdW5jdGlvbih0KXtmb3IodmFyIGU9W107dDspSWUoZSx6byh0KSksdD1xdCh0KTtyZXR1cm4gZX06cWwsQm89WGk7ZnVuY3Rpb24gSG8odCxlLG4pe2Zvcih2YXIgaT0tMSxyPShlPVVyKGUsdCkpLmxlbmd0aCxvPSExOysraTxyOyl7dmFyIGE9bGEoZVtpXSk7aWYoIShvPW51bGwhPXQmJm4odCxhKSkpYnJlYWs7dD10W2FdfXJldHVybiBvfHwrK2khPXI/bzohIShyPW51bGw9PXQ/MDp0Lmxlbmd0aCkmJlRzKHIpJiZVbyhhLHIpJiYobXModCl8fGZzKHQpKX1mdW5jdGlvbiBGbyh0KXtyZXR1cm4iZnVuY3Rpb24iIT10eXBlb2YgdC5jb25zdHJ1Y3Rvcnx8WW8odCk/e306VW4ocXQodCkpfWZ1bmN0aW9uIFZvKHQpe3JldHVybiBtcyh0KXx8ZnModCl8fCEhKHJlJiZ0JiZ0W3JlXSl9ZnVuY3Rpb24gVW8odCxlKXt2YXIgbj10eXBlb2YgdDtyZXR1cm4hIShlPW51bGw9PWU/dTplKSYmKCJudW1iZXIiPT1ufHwic3ltYm9sIiE9biYmZ3QudGVzdCh0KSkmJnQ+LTEmJnQlMT09MCYmdDxlfWZ1bmN0aW9uIGpvKHQsZSxuKXtpZighQ3MobikpcmV0dXJuITE7dmFyIGk9dHlwZW9mIGU7cmV0dXJuISEoIm51bWJlciI9PWk/eXMobikmJlVvKGUsbi5sZW5ndGgpOiJzdHJpbmciPT1pJiZlIGluIG4pJiZocyhuW2VdLHQpfWZ1bmN0aW9uIEdvKHQsZSl7aWYobXModCkpcmV0dXJuITE7dmFyIG49dHlwZW9mIHQ7cmV0dXJuISgibnVtYmVyIiE9biYmInN5bWJvbCIhPW4mJiJib29sZWFuIiE9biYmbnVsbCE9dCYmIUJzKHQpKXx8Si50ZXN0KHQpfHwhWi50ZXN0KHQpfHxudWxsIT1lJiZ0IGluIEN0KGUpfWZ1bmN0aW9uIFdvKHQpe3ZhciBlPUxvKHQpLG49Vm5bZV07aWYoImZ1bmN0aW9uIiE9dHlwZW9mIG58fCEoZSBpbiBXbi5wcm90b3R5cGUpKXJldHVybiExO2lmKHQ9PT1uKXJldHVybiEwO3ZhciBpPWtvKG4pO3JldHVybiEhaSYmdD09PWlbMF19KEVuJiZCbyhuZXcgRW4obmV3IEFycmF5QnVmZmVyKDEpKSkhPVB8fFRuJiZCbyhuZXcgVG4pIT14fHxDbiYmQm8oQ24ucmVzb2x2ZSgpKSE9TXx8QW4mJkJvKG5ldyBBbikhPVR8fGtuJiZCbyhuZXcga24pIT1rKSYmKEJvPWZ1bmN0aW9uKGUpe3ZhciBuPVhpKGUpLGk9bj09Uz9lLmNvbnN0cnVjdG9yOnQscj1pP2NhKGkpOiIiO2lmKHIpc3dpdGNoKHIpe2Nhc2UgSW46cmV0dXJuIFA7Y2FzZSBSbjpyZXR1cm4geDtjYXNlIE9uOnJldHVybiBNO2Nhc2Ugem46cmV0dXJuIFQ7Y2FzZSBEbjpyZXR1cm4ga31yZXR1cm4gbn0pO3ZhciBxbz1JdD9NczpZbDtmdW5jdGlvbiBZbyh0KXt2YXIgZT10JiZ0LmNvbnN0cnVjdG9yO3JldHVybiB0PT09KCJmdW5jdGlvbiI9PXR5cGVvZiBlJiZlLnByb3RvdHlwZXx8TnQpfWZ1bmN0aW9uIFhvKHQpe3JldHVybiB0PT10JiYhQ3ModCl9ZnVuY3Rpb24gJG8oZSxuKXtyZXR1cm4gZnVuY3Rpb24oaSl7cmV0dXJuIG51bGwhPWkmJmlbZV09PT1uJiYobiE9PXR8fGUgaW4gQ3QoaSkpfX1mdW5jdGlvbiBLbyhlLG4saSl7cmV0dXJuIG49dm4obj09PXQ/ZS5sZW5ndGgtMTpuLDApLGZ1bmN0aW9uKCl7Zm9yKHZhciB0PWFyZ3VtZW50cyxyPS0xLG89dm4odC5sZW5ndGgtbiwwKSxhPXd0KG8pOysrcjxvOylhW3JdPXRbbityXTtyPS0xO2Zvcih2YXIgcz13dChuKzEpOysrcjxuOylzW3JdPXRbcl07cmV0dXJuIHNbbl09aShhKSx4ZShlLHRoaXMscyl9fWZ1bmN0aW9uIFpvKHQsZSl7cmV0dXJuIGUubGVuZ3RoPDI/dDpxaSh0LFRyKGUsMCwtMSkpfWZ1bmN0aW9uIEpvKGUsbil7Zm9yKHZhciBpPWUubGVuZ3RoLHI9Ym4obi5sZW5ndGgsaSksbz1KcihlKTtyLS07KXt2YXIgYT1uW3JdO2Vbcl09VW8oYSxpKT9vW2FdOnR9cmV0dXJuIGV9ZnVuY3Rpb24gUW8odCxlKXtpZigoImNvbnN0cnVjdG9yIiE9PWV8fCJmdW5jdGlvbiIhPXR5cGVvZiB0W2VdKSYmIl9fcHJvdG9fXyIhPWUpcmV0dXJuIHRbZV19dmFyIHRhPXJhKFNyKSxlYT1mZXx8ZnVuY3Rpb24odCxlKXtyZXR1cm4gY2Uuc2V0VGltZW91dCh0LGUpfSxuYT1yYShNcik7ZnVuY3Rpb24gaWEodCxlLG4pe3ZhciBpPWUrIiI7cmV0dXJuIG5hKHQsKGZ1bmN0aW9uIGEodCxlKXt2YXIgbj1lLmxlbmd0aDtpZighbilyZXR1cm4gdDt2YXIgaT1uLTE7cmV0dXJuIGVbaV09KG4+MT8iJiAiOiIiKStlW2ldLGU9ZS5qb2luKG4+Mj8iLCAiOiIgIiksdC5yZXBsYWNlKHJ0LCJ7XG4vKiBbd3JhcHBlZCB3aXRoICIrZSsiXSAqL1xuIil9KShpLChmdW5jdGlvbiBvKHQsZSl7cmV0dXJuIE1lKHAsKGZ1bmN0aW9uKG4pe3ZhciBpPSJfLiIrblswXTtlJm5bMV0mJiFMZSh0LGkpJiZ0LnB1c2goaSl9KSksdC5zb3J0KCl9KSgoZnVuY3Rpb24gcih0KXt2YXIgZT10Lm1hdGNoKG90KTtyZXR1cm4gZT9lWzFdLnNwbGl0KGF0KTpbXX0pKGkpLG4pKSl9ZnVuY3Rpb24gcmEoZSl7dmFyIG49MCxpPTA7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHI9eG4oKSxvPTE2LShyLWkpO2lmKGk9cixvPjApe2lmKCsrbj49ODAwKXJldHVybiBhcmd1bWVudHNbMF19ZWxzZSBuPTA7cmV0dXJuIGUuYXBwbHkodCxhcmd1bWVudHMpfX1mdW5jdGlvbiBvYShlLG4pe3ZhciBpPS0xLHI9ZS5sZW5ndGgsbz1yLTE7Zm9yKG49bj09PXQ/cjpuOysraTxuOyl7dmFyIGE9X3IoaSxvKSxzPWVbYV07ZVthXT1lW2ldLGVbaV09c31yZXR1cm4gZS5sZW5ndGg9bixlfXZhciBhYT0oZnVuY3Rpb24gc2EodCl7dmFyIGU9b3ModCwoZnVuY3Rpb24odCl7cmV0dXJuIDUwMD09PW4uc2l6ZSYmbi5jbGVhcigpLHR9KSksbj1lLmNhY2hlO3JldHVybiBlfSkoKGZ1bmN0aW9uKHQpe3ZhciBlPVtdO3JldHVybiA0Nj09PXQuY2hhckNvZGVBdCgwKSYmZS5wdXNoKCIiKSx0LnJlcGxhY2UoUSwoZnVuY3Rpb24odCxuLGkscil7ZS5wdXNoKGk/ci5yZXBsYWNlKGN0LCIkMSIpOm58fHQpfSkpLGV9KSk7ZnVuY3Rpb24gbGEodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0fHxCcyh0KSlyZXR1cm4gdDt2YXIgZT10KyIiO3JldHVybiIwIj09ZSYmMS90PT0tMS8wPyItMCI6ZX1mdW5jdGlvbiBjYSh0KXtpZihudWxsIT10KXt0cnl7cmV0dXJuIFJ0LmNhbGwodCl9Y2F0Y2godCl7fXRyeXtyZXR1cm4gdCsiIn1jYXRjaCh0KXt9fXJldHVybiIifWZ1bmN0aW9uIHVhKHQpe2lmKHQgaW5zdGFuY2VvZiBXbilyZXR1cm4gdC5jbG9uZSgpO3ZhciBlPW5ldyBHbih0Ll9fd3JhcHBlZF9fLHQuX19jaGFpbl9fKTtyZXR1cm4gZS5fX2FjdGlvbnNfXz1Kcih0Ll9fYWN0aW9uc19fKSxlLl9faW5kZXhfXz10Ll9faW5kZXhfXyxlLl9fdmFsdWVzX189dC5fX3ZhbHVlc19fLGV9dmFyIGhhPXZyKChmdW5jdGlvbih0LGUpe3JldHVybiB2cyh0KT9kaSh0LEZpKGUsMSx2cywhMCkpOltdfSkpLGRhPXZyKChmdW5jdGlvbihlLG4pe3ZhciBpPXhhKG4pO3JldHVybiB2cyhpKSYmKGk9dCksdnMoZSk/ZGkoZSxGaShuLDEsdnMsITApLE5vKGksMikpOltdfSkpLHBhPXZyKChmdW5jdGlvbihlLG4pe3ZhciBpPXhhKG4pO3JldHVybiB2cyhpKSYmKGk9dCksdnMoZSk/ZGkoZSxGaShuLDEsdnMsITApLHQsaSk6W119KSk7ZnVuY3Rpb24gZmEodCxlLG4pe3ZhciBpPW51bGw9PXQ/MDp0Lmxlbmd0aDtpZighaSlyZXR1cm4tMTt2YXIgcj1udWxsPT1uPzA6V3Mobik7cmV0dXJuIHI8MCYmKHI9dm4oaStyLDApKSxIZSh0LE5vKGUsMykscil9ZnVuY3Rpb24gbWEoZSxuLGkpe3ZhciByPW51bGw9PWU/MDplLmxlbmd0aDtpZighcilyZXR1cm4tMTt2YXIgbz1yLTE7cmV0dXJuIGkhPT10JiYobz1XcyhpKSxvPWk8MD92bihyK28sMCk6Ym4obyxyLTEpKSxIZShlLE5vKG4sMyksbywhMCl9ZnVuY3Rpb24gZ2EodCl7cmV0dXJuIG51bGwhPXQmJnQubGVuZ3RoP0ZpKHQsMSk6W119ZnVuY3Rpb24gX2EoZSl7cmV0dXJuIGUmJmUubGVuZ3RoP2VbMF06dH12YXIgeWE9dnIoKGZ1bmN0aW9uKHQpe3ZhciBlPU5lKHQsRnIpO3JldHVybiBlLmxlbmd0aCYmZVswXT09PXRbMF0/SmkoZSk6W119KSksdmE9dnIoKGZ1bmN0aW9uKGUpe3ZhciBuPXhhKGUpLGk9TmUoZSxGcik7cmV0dXJuIG49PT14YShpKT9uPXQ6aS5wb3AoKSxpLmxlbmd0aCYmaVswXT09PWVbMF0/SmkoaSxObyhuLDIpKTpbXX0pKSxiYT12cigoZnVuY3Rpb24oZSl7dmFyIG49eGEoZSksaT1OZShlLEZyKTtyZXR1cm4obj0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uOnQpJiZpLnBvcCgpLGkubGVuZ3RoJiZpWzBdPT09ZVswXT9KaShpLHQsbik6W119KSk7ZnVuY3Rpb24geGEoZSl7dmFyIG49bnVsbD09ZT8wOmUubGVuZ3RoO3JldHVybiBuP2Vbbi0xXTp0fXZhciB3YT12cihTYSk7ZnVuY3Rpb24gU2EodCxlKXtyZXR1cm4gdCYmdC5sZW5ndGgmJmUmJmUubGVuZ3RoP21yKHQsZSk6dH12YXIgTWE9VG8oKGZ1bmN0aW9uKHQsZSl7dmFyIG49bnVsbD09dD8wOnQubGVuZ3RoLGk9c2kodCxlKTtyZXR1cm4gZ3IodCxOZShlLChmdW5jdGlvbih0KXtyZXR1cm4gVW8odCxuKT8rdDp0fSkpLnNvcnQoJHIpKSxpfSkpO2Z1bmN0aW9uIEVhKHQpe3JldHVybiBudWxsPT10P3Q6TW4uY2FsbCh0KX12YXIgVGE9dnIoKGZ1bmN0aW9uKHQpe3JldHVybiBJcihGaSh0LDEsdnMsITApKX0pKSxDYT12cigoZnVuY3Rpb24oZSl7dmFyIG49eGEoZSk7cmV0dXJuIHZzKG4pJiYobj10KSxJcihGaShlLDEsdnMsITApLE5vKG4sMikpfSkpLEFhPXZyKChmdW5jdGlvbihlKXt2YXIgbj14YShlKTtyZXR1cm4gbj0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uOnQsSXIoRmkoZSwxLHZzLCEwKSx0LG4pfSkpO2Z1bmN0aW9uIGthKHQpe2lmKCF0fHwhdC5sZW5ndGgpcmV0dXJuW107dmFyIGU9MDtyZXR1cm4gdD1rZSh0LChmdW5jdGlvbih0KXtpZih2cyh0KSlyZXR1cm4gZT12bih0Lmxlbmd0aCxlKSwhMH0pKSxYZShlLChmdW5jdGlvbihlKXtyZXR1cm4gTmUodCxHZShlKSl9KSl9ZnVuY3Rpb24gTGEoZSxuKXtpZighZXx8IWUubGVuZ3RoKXJldHVybltdO3ZhciBpPWthKGUpO3JldHVybiBudWxsPT1uP2k6TmUoaSwoZnVuY3Rpb24oZSl7cmV0dXJuIHhlKG4sdCxlKX0pKX12YXIgUGE9dnIoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHZzKHQpP2RpKHQsZSk6W119KSksTmE9dnIoKGZ1bmN0aW9uKHQpe3JldHVybiBCcihrZSh0LHZzKSl9KSksSWE9dnIoKGZ1bmN0aW9uKGUpe3ZhciBuPXhhKGUpO3JldHVybiB2cyhuKSYmKG49dCksQnIoa2UoZSx2cyksTm8obiwyKSl9KSksUmE9dnIoKGZ1bmN0aW9uKGUpe3ZhciBuPXhhKGUpO3JldHVybiBuPSJmdW5jdGlvbiI9PXR5cGVvZiBuP246dCxCcihrZShlLHZzKSx0LG4pfSkpLE9hPXZyKGthKSx6YT12cigoZnVuY3Rpb24oZSl7dmFyIG49ZS5sZW5ndGgsaT1uPjE/ZVtuLTFdOnQ7cmV0dXJuIGk9ImZ1bmN0aW9uIj09dHlwZW9mIGk/KGUucG9wKCksaSk6dCxMYShlLGkpfSkpO2Z1bmN0aW9uIERhKHQpe3ZhciBlPVZuKHQpO3JldHVybiBlLl9fY2hhaW5fXz0hMCxlfWZ1bmN0aW9uIEJhKHQsZSl7cmV0dXJuIGUodCl9dmFyIEhhPVRvKChmdW5jdGlvbihlKXt2YXIgbj1lLmxlbmd0aCxpPW4/ZVswXTowLHI9dGhpcy5fX3dyYXBwZWRfXyxvPWZ1bmN0aW9uKHQpe3JldHVybiBzaSh0LGUpfTtyZXR1cm4hKG4+MXx8dGhpcy5fX2FjdGlvbnNfXy5sZW5ndGgpJiZyIGluc3RhbmNlb2YgV24mJlVvKGkpPygocj1yLnNsaWNlKGksK2krKG4/MTowKSkpLl9fYWN0aW9uc19fLnB1c2goe2Z1bmM6QmEsYXJnczpbb10sdGhpc0FyZzp0fSksbmV3IEduKHIsdGhpcy5fX2NoYWluX18pLnRocnUoKGZ1bmN0aW9uKGUpe3JldHVybiBuJiYhZS5sZW5ndGgmJmUucHVzaCh0KSxlfSkpKTp0aGlzLnRocnUobyl9KSksRmE9dG8oKGZ1bmN0aW9uKHQsZSxuKXtPdC5jYWxsKHQsbik/Kyt0W25dOmFpKHQsbiwxKX0pKSxWYT1zbyhmYSksVWE9c28obWEpO2Z1bmN0aW9uIGphKHQsZSl7cmV0dXJuKG1zKHQpP01lOk9pKSh0LE5vKGUsMykpfWZ1bmN0aW9uIEdhKHQsZSl7cmV0dXJuKG1zKHQpP0NlOnppKSh0LE5vKGUsMykpfXZhciBXYT10bygoZnVuY3Rpb24odCxlLG4pe090LmNhbGwodCxuKT90W25dLnB1c2goZSk6YWkodCxuLFtlXSl9KSkscWE9dnIoKGZ1bmN0aW9uKHQsZSxuKXt2YXIgaT0tMSxyPSJmdW5jdGlvbiI9PXR5cGVvZiBlLG89eXModCk/d3QodC5sZW5ndGgpOltdO3JldHVybiBPaSh0LChmdW5jdGlvbih0KXtvWysraV09cj94ZShlLHQsbik6UWkodCxlLG4pfSkpLG99KSksWWE9dG8oKGZ1bmN0aW9uKHQsZSxuKXthaSh0LG4sZSl9KSk7ZnVuY3Rpb24gWGEodCxlKXtyZXR1cm4obXModCk/TmU6bHIpKHQsTm8oZSwzKSl9dmFyICRhPXRvKChmdW5jdGlvbih0LGUsbil7dFtuPzA6MV0ucHVzaChlKX0pLChmdW5jdGlvbigpe3JldHVybltbXSxbXV19KSksS2E9dnIoKGZ1bmN0aW9uKHQsZSl7aWYobnVsbD09dClyZXR1cm5bXTt2YXIgbj1lLmxlbmd0aDtyZXR1cm4gbj4xJiZqbyh0LGVbMF0sZVsxXSk/ZT1bXTpuPjImJmpvKGVbMF0sZVsxXSxlWzJdKSYmKGU9W2VbMF1dKSxwcih0LEZpKGUsMSksW10pfSkpLFphPXBlfHxmdW5jdGlvbigpe3JldHVybiBjZS5EYXRlLm5vdygpfTtmdW5jdGlvbiBKYShlLG4saSl7cmV0dXJuIG49aT90Om4seG8oZSxzLHQsdCx0LHQsbj1lJiZudWxsPT1uP2UubGVuZ3RoOm4pfWZ1bmN0aW9uIFFhKG4saSl7dmFyIHI7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGkpdGhyb3cgbmV3IEx0KGUpO3JldHVybiBuPVdzKG4pLGZ1bmN0aW9uKCl7cmV0dXJuLS1uPjAmJihyPWkuYXBwbHkodGhpcyxhcmd1bWVudHMpKSxuPD0xJiYoaT10KSxyfX12YXIgdHM9dnIoKGZ1bmN0aW9uKHQsZSxuKXt2YXIgaT0xO2lmKG4ubGVuZ3RoKXt2YXIgcj1jbihuLFBvKHRzKSk7aXw9b31yZXR1cm4geG8odCxpLGUsbixyKX0pKSxlcz12cigoZnVuY3Rpb24odCxlLG4pe3ZhciBpPTM7aWYobi5sZW5ndGgpe3ZhciByPWNuKG4sUG8oZXMpKTtpfD1vfXJldHVybiB4byhlLGksdCxuLHIpfSkpO2Z1bmN0aW9uIG5zKG4saSxyKXt2YXIgbyxhLHMsbCxjLHUsaD0wLGQ9ITEscD0hMSxmPSEwO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBuKXRocm93IG5ldyBMdChlKTtmdW5jdGlvbiBtKGUpe3ZhciBpPW8scj1hO3JldHVybiBvPWE9dCxoPWUsbD1uLmFwcGx5KHIsaSl9ZnVuY3Rpb24gZyh0KXtyZXR1cm4gaD10LGM9ZWEoeSxpKSxkP20odCk6bH1mdW5jdGlvbiBfKGUpe3ZhciBuPWUtdTtyZXR1cm4gdT09PXR8fG4+PWl8fG48MHx8cCYmZS1oPj1zfWZ1bmN0aW9uIHkoKXt2YXIgdD1aYSgpO2lmKF8odCkpcmV0dXJuIHYodCk7Yz1lYSh5LChmdW5jdGlvbiBlKHQpe3ZhciBlPWktKHQtdSk7cmV0dXJuIHA/Ym4oZSxzLSh0LWgpKTplfSkodCkpfWZ1bmN0aW9uIHYoZSl7cmV0dXJuIGM9dCxmJiZvP20oZSk6KG89YT10LGwpfWZ1bmN0aW9uIGIoKXt2YXIgZT1aYSgpLG49XyhlKTtpZihvPWFyZ3VtZW50cyxhPXRoaXMsdT1lLG4pe2lmKGM9PT10KXJldHVybiBnKHUpO2lmKHApcmV0dXJuIFdyKGMpLGM9ZWEoeSxpKSxtKHUpfXJldHVybiBjPT09dCYmKGM9ZWEoeSxpKSksbH1yZXR1cm4gaT1ZcyhpKXx8MCxDcyhyKSYmKGQ9ISFyLmxlYWRpbmcscz0ocD0ibWF4V2FpdCJpbiByKT92bihZcyhyLm1heFdhaXQpfHwwLGkpOnMsZj0idHJhaWxpbmciaW4gcj8hIXIudHJhaWxpbmc6ZiksYi5jYW5jZWw9ZnVuY3Rpb24geCgpe2MhPT10JiZXcihjKSxoPTAsbz11PWE9Yz10fSxiLmZsdXNoPWZ1bmN0aW9uIHcoKXtyZXR1cm4gYz09PXQ/bDp2KFphKCkpfSxifXZhciBpcz12cigoZnVuY3Rpb24odCxlKXtyZXR1cm4gaGkodCwxLGUpfSkpLHJzPXZyKChmdW5jdGlvbih0LGUsbil7cmV0dXJuIGhpKHQsWXMoZSl8fDAsbil9KSk7ZnVuY3Rpb24gb3ModCxuKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdHx8bnVsbCE9biYmImZ1bmN0aW9uIiE9dHlwZW9mIG4pdGhyb3cgbmV3IEx0KGUpO3ZhciBpPWZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzLHI9bj9uLmFwcGx5KHRoaXMsZSk6ZVswXSxvPWkuY2FjaGU7aWYoby5oYXMocikpcmV0dXJuIG8uZ2V0KHIpO3ZhciBhPXQuYXBwbHkodGhpcyxlKTtyZXR1cm4gaS5jYWNoZT1vLnNldChyLGEpfHxvLGF9O3JldHVybiBpLmNhY2hlPW5ldyhvcy5DYWNoZXx8WG4pLGl9ZnVuY3Rpb24gYXModCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IEx0KGUpO3JldHVybiBmdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cztzd2l0Y2goZS5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4hdC5jYWxsKHRoaXMpO2Nhc2UgMTpyZXR1cm4hdC5jYWxsKHRoaXMsZVswXSk7Y2FzZSAyOnJldHVybiF0LmNhbGwodGhpcyxlWzBdLGVbMV0pO2Nhc2UgMzpyZXR1cm4hdC5jYWxsKHRoaXMsZVswXSxlWzFdLGVbMl0pfXJldHVybiF0LmFwcGx5KHRoaXMsZSl9fW9zLkNhY2hlPVhuO3ZhciBzcz1qcigoZnVuY3Rpb24odCxlKXt2YXIgbj0oZT0xPT1lLmxlbmd0aCYmbXMoZVswXSk/TmUoZVswXSxLZShObygpKSk6TmUoRmkoZSwxKSxLZShObygpKSkpLmxlbmd0aDtyZXR1cm4gdnIoKGZ1bmN0aW9uKGkpe2Zvcih2YXIgcj0tMSxvPWJuKGkubGVuZ3RoLG4pOysrcjxvOylpW3JdPWVbcl0uY2FsbCh0aGlzLGlbcl0pO3JldHVybiB4ZSh0LHRoaXMsaSl9KSl9KSksbHM9dnIoKGZ1bmN0aW9uKGUsbil7dmFyIGk9Y24obixQbyhscykpO3JldHVybiB4byhlLG8sdCxuLGkpfSkpLGNzPXZyKChmdW5jdGlvbihlLG4pe3ZhciBpPWNuKG4sUG8oY3MpKTtyZXR1cm4geG8oZSxhLHQsbixpKX0pKSx1cz1UbygoZnVuY3Rpb24oZSxuKXtyZXR1cm4geG8oZSxsLHQsdCx0LG4pfSkpO2Z1bmN0aW9uIGhzKHQsZSl7cmV0dXJuIHQ9PT1lfHx0IT10JiZlIT1lfXZhciBkcz1nbygkaSkscHM9Z28oKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ+PWV9KSksZnM9dHIoKGZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50c30pKCkpP3RyOmZ1bmN0aW9uKHQpe3JldHVybiBBcyh0KSYmT3QuY2FsbCh0LCJjYWxsZWUiKSYmIUt0LmNhbGwodCwiY2FsbGVlIil9LG1zPXd0LmlzQXJyYXksZ3M9bWU/S2UobWUpOmZ1bmN0aW9uIF9zKHQpe3JldHVybiBBcyh0KSYmWGkodCk9PUx9O2Z1bmN0aW9uIHlzKHQpe3JldHVybiBudWxsIT10JiZUcyh0Lmxlbmd0aCkmJiFNcyh0KX1mdW5jdGlvbiB2cyh0KXtyZXR1cm4gQXModCkmJnlzKHQpfXZhciBicz1EZXx8WWwseHM9Z2U/S2UoZ2UpOmZ1bmN0aW9uIHdzKHQpe3JldHVybiBBcyh0KSYmWGkodCk9PV99O2Z1bmN0aW9uIFNzKHQpe2lmKCFBcyh0KSlyZXR1cm4hMTt2YXIgZT1YaSh0KTtyZXR1cm4gZT09eXx8IltvYmplY3QgRE9NRXhjZXB0aW9uXSI9PWV8fCJzdHJpbmciPT10eXBlb2YgdC5tZXNzYWdlJiYic3RyaW5nIj09dHlwZW9mIHQubmFtZSYmIU5zKHQpfWZ1bmN0aW9uIE1zKHQpe2lmKCFDcyh0KSlyZXR1cm4hMTt2YXIgZT1YaSh0KTtyZXR1cm4gZT09dnx8ZT09Ynx8IltvYmplY3QgQXN5bmNGdW5jdGlvbl0iPT1lfHwiW29iamVjdCBQcm94eV0iPT1lfWZ1bmN0aW9uIEVzKHQpe3JldHVybiJudW1iZXIiPT10eXBlb2YgdCYmdD09V3ModCl9ZnVuY3Rpb24gVHModCl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0JiZ0Pi0xJiZ0JTE9PTAmJnQ8PXV9ZnVuY3Rpb24gQ3ModCl7dmFyIGU9dHlwZW9mIHQ7cmV0dXJuIG51bGwhPXQmJigib2JqZWN0Ij09ZXx8ImZ1bmN0aW9uIj09ZSl9ZnVuY3Rpb24gQXModCl7cmV0dXJuIG51bGwhPXQmJiJvYmplY3QiPT10eXBlb2YgdH12YXIga3M9X2U/S2UoX2UpOmZ1bmN0aW9uIExzKHQpe3JldHVybiBBcyh0KSYmQm8odCk9PXh9O2Z1bmN0aW9uIFBzKHQpe3JldHVybiJudW1iZXIiPT10eXBlb2YgdHx8QXModCkmJlhpKHQpPT13fWZ1bmN0aW9uIE5zKHQpe2lmKCFBcyh0KXx8WGkodCkhPVMpcmV0dXJuITE7dmFyIGU9cXQodCk7aWYobnVsbD09PWUpcmV0dXJuITA7dmFyIG49T3QuY2FsbChlLCJjb25zdHJ1Y3RvciIpJiZlLmNvbnN0cnVjdG9yO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBuJiZuIGluc3RhbmNlb2YgbiYmUnQuY2FsbChuKT09SHR9dmFyIElzPXllP0tlKHllKTpmdW5jdGlvbiBScyh0KXtyZXR1cm4gQXModCkmJlhpKHQpPT1FfSxPcz12ZT9LZSh2ZSk6ZnVuY3Rpb24genModCl7cmV0dXJuIEFzKHQpJiZCbyh0KT09VH07ZnVuY3Rpb24gRHModCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0fHwhbXModCkmJkFzKHQpJiZYaSh0KT09Q31mdW5jdGlvbiBCcyh0KXtyZXR1cm4ic3ltYm9sIj09dHlwZW9mIHR8fEFzKHQpJiZYaSh0KT09QX12YXIgSHM9YmU/S2UoYmUpOmZ1bmN0aW9uIEZzKHQpe3JldHVybiBBcyh0KSYmVHModC5sZW5ndGgpJiYhIW5lW1hpKHQpXX0sVnM9Z28oc3IpLFVzPWdvKChmdW5jdGlvbih0LGUpe3JldHVybiB0PD1lfSkpO2Z1bmN0aW9uIGpzKHQpe2lmKCF0KXJldHVybltdO2lmKHlzKHQpKXJldHVybiBEcyh0KT9wbih0KTpKcih0KTtpZihzZSYmdFtzZV0pcmV0dXJuKGZ1bmN0aW9uIGUodCl7Zm9yKHZhciBlLG49W107IShlPXQubmV4dCgpKS5kb25lOyluLnB1c2goZS52YWx1ZSk7cmV0dXJuIG59KSh0W3NlXSgpKTt2YXIgbj1Cbyh0KTtyZXR1cm4obj09eD9zbjpuPT1UP3VuOl9sKSh0KX1mdW5jdGlvbiBHcyh0KXtyZXR1cm4gdD8odD1Zcyh0KSk9PT1jfHx0PT09LTEvMD8xNzk3NjkzMTM0ODYyMzE1N2UyOTIqKHQ8MD8tMToxKTp0PT10P3Q6MDowPT09dD90OjB9ZnVuY3Rpb24gV3ModCl7dmFyIGU9R3ModCksbj1lJTE7cmV0dXJuIGU9PWU/bj9lLW46ZTowfWZ1bmN0aW9uIHFzKHQpe3JldHVybiB0P2xpKFdzKHQpLDAsZCk6MH1mdW5jdGlvbiBZcyh0KXtpZigibnVtYmVyIj09dHlwZW9mIHQpcmV0dXJuIHQ7aWYoQnModCkpcmV0dXJuIGg7aWYoQ3ModCkpe3ZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiB0LnZhbHVlT2Y/dC52YWx1ZU9mKCk6dDt0PUNzKGUpP2UrIiI6ZX1pZigic3RyaW5nIiE9dHlwZW9mIHQpcmV0dXJuIDA9PT10P3Q6K3Q7dD0kZSh0KTt2YXIgbj1wdC50ZXN0KHQpO3JldHVybiBufHxtdC50ZXN0KHQpP2FlKHQuc2xpY2UoMiksbj8yOjgpOmR0LnRlc3QodCk/aDordH1mdW5jdGlvbiBYcyh0KXtyZXR1cm4gUXIodCxjbCh0KSl9ZnVuY3Rpb24gJHModCl7cmV0dXJuIG51bGw9PXQ/IiI6TnIodCl9dmFyIEtzPWVvKChmdW5jdGlvbih0LGUpe2lmKFlvKGUpfHx5cyhlKSlRcihlLGxsKGUpLHQpO2Vsc2UgZm9yKHZhciBuIGluIGUpT3QuY2FsbChlLG4pJiZuaSh0LG4sZVtuXSl9KSksWnM9ZW8oKGZ1bmN0aW9uKHQsZSl7UXIoZSxjbChlKSx0KX0pKSxKcz1lbygoZnVuY3Rpb24odCxlLG4saSl7UXIoZSxjbChlKSx0LGkpfSkpLFFzPWVvKChmdW5jdGlvbih0LGUsbixpKXtRcihlLGxsKGUpLHQsaSl9KSksdGw9VG8oc2kpLGVsPXZyKChmdW5jdGlvbihlLG4pe2U9Q3QoZSk7dmFyIGk9LTEscj1uLmxlbmd0aCxvPXI+Mj9uWzJdOnQ7Zm9yKG8mJmpvKG5bMF0sblsxXSxvKSYmKHI9MSk7KytpPHI7KWZvcih2YXIgYT1uW2ldLHM9Y2woYSksbD0tMSxjPXMubGVuZ3RoOysrbDxjOyl7dmFyIHU9c1tsXSxoPWVbdV07KGg9PT10fHxocyhoLE50W3VdKSYmIU90LmNhbGwoZSx1KSkmJihlW3VdPWFbdV0pfXJldHVybiBlfSkpLG5sPXZyKChmdW5jdGlvbihlKXtyZXR1cm4gZS5wdXNoKHQsU28pLHhlKGhsLHQsZSl9KSk7ZnVuY3Rpb24gaWwoZSxuLGkpe3ZhciByPW51bGw9PWU/dDpxaShlLG4pO3JldHVybiByPT09dD9pOnJ9ZnVuY3Rpb24gcmwodCxlKXtyZXR1cm4gbnVsbCE9dCYmSG8odCxlLFppKX12YXIgb2w9dW8oKGZ1bmN0aW9uKHQsZSxuKXtudWxsIT1lJiYiZnVuY3Rpb24iIT10eXBlb2YgZS50b1N0cmluZyYmKGU9QnQuY2FsbChlKSksdFtlXT1ufSksUGwoUmwpKSxhbD11bygoZnVuY3Rpb24odCxlLG4pe251bGwhPWUmJiJmdW5jdGlvbiIhPXR5cGVvZiBlLnRvU3RyaW5nJiYoZT1CdC5jYWxsKGUpKSxPdC5jYWxsKHQsZSk/dFtlXS5wdXNoKG4pOnRbZV09W25dfSksTm8pLHNsPXZyKFFpKTtmdW5jdGlvbiBsbCh0KXtyZXR1cm4geXModCk/Wm4odCk6b3IodCl9ZnVuY3Rpb24gY2wodCl7cmV0dXJuIHlzKHQpP1puKHQsITApOmFyKHQpfXZhciB1bD1lbygoZnVuY3Rpb24odCxlLG4pe2hyKHQsZSxuKX0pKSxobD1lbygoZnVuY3Rpb24odCxlLG4saSl7aHIodCxlLG4saSl9KSksZGw9VG8oKGZ1bmN0aW9uKHQsZSl7dmFyIG49e307aWYobnVsbD09dClyZXR1cm4gbjt2YXIgaT0hMTtlPU5lKGUsKGZ1bmN0aW9uKGUpe3JldHVybiBlPVVyKGUsdCksaXx8KGk9ZS5sZW5ndGg+MSksZX0pKSxRcih0LEFvKHQpLG4pLGkmJihuPWNpKG4sNyxNbykpO2Zvcih2YXIgcj1lLmxlbmd0aDtyLS07KVJyKG4sZVtyXSk7cmV0dXJuIG59KSkscGw9VG8oKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIG51bGw9PXQ/e306KGZ1bmN0aW9uIG4odCxlKXtyZXR1cm4gZnIodCxlLChmdW5jdGlvbihlLG4pe3JldHVybiBybCh0LG4pfSkpfSkodCxlKX0pKTtmdW5jdGlvbiBmbCh0LGUpe2lmKG51bGw9PXQpcmV0dXJue307dmFyIG49TmUoQW8odCksKGZ1bmN0aW9uKHQpe3JldHVyblt0XX0pKTtyZXR1cm4gZT1ObyhlKSxmcih0LG4sKGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUodCxuWzBdKX0pKX12YXIgbWw9Ym8obGwpLGdsPWJvKGNsKTtmdW5jdGlvbiBfbCh0KXtyZXR1cm4gbnVsbD09dD9bXTpaZSh0LGxsKHQpKX12YXIgeWw9b28oKGZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gZT1lLnRvTG93ZXJDYXNlKCksdCsobj92bChlKTplKX0pKTtmdW5jdGlvbiB2bCh0KXtyZXR1cm4gQ2woJHModCkudG9Mb3dlckNhc2UoKSl9ZnVuY3Rpb24gYmwodCl7cmV0dXJuKHQ9JHModCkpJiZ0LnJlcGxhY2UoX3Qsbm4pLnJlcGxhY2UoJHQsIiIpfXZhciB4bD1vbygoZnVuY3Rpb24odCxlLG4pe3JldHVybiB0KyhuPyItIjoiIikrZS50b0xvd2VyQ2FzZSgpfSkpLHdsPW9vKChmdW5jdGlvbih0LGUsbil7cmV0dXJuIHQrKG4/IiAiOiIiKStlLnRvTG93ZXJDYXNlKCl9KSksU2w9cm8oInRvTG93ZXJDYXNlIiksTWw9b28oKGZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdCsobj8iXyI6IiIpK2UudG9Mb3dlckNhc2UoKX0pKSxFbD1vbygoZnVuY3Rpb24odCxlLG4pe3JldHVybiB0KyhuPyIgIjoiIikrQ2woZSl9KSksVGw9b28oKGZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdCsobj8iICI6IiIpK2UudG9VcHBlckNhc2UoKX0pKSxDbD1ybygidG9VcHBlckNhc2UiKTtmdW5jdGlvbiBBbChlLG4saSl7cmV0dXJuIGU9JHMoZSksKG49aT90Om4pPT09dD8oZnVuY3Rpb24gcih0KXtyZXR1cm4gUXQudGVzdCh0KX0pKGUpPyhmdW5jdGlvbiBvKHQpe3JldHVybiB0Lm1hdGNoKFp0KXx8W119KShlKTooZnVuY3Rpb24gYSh0KXtyZXR1cm4gdC5tYXRjaChzdCl8fFtdfSkoZSk6ZS5tYXRjaChuKXx8W119dmFyIGtsPXZyKChmdW5jdGlvbihlLG4pe3RyeXtyZXR1cm4geGUoZSx0LG4pfWNhdGNoKHQpe3JldHVybiBTcyh0KT90Om5ldyBNdCh0KX19KSksTGw9VG8oKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIE1lKGUsKGZ1bmN0aW9uKGUpe2U9bGEoZSksYWkodCxlLHRzKHRbZV0sdCkpfSkpLHR9KSk7ZnVuY3Rpb24gUGwodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fXZhciBObD1sbygpLElsPWxvKCEwKTtmdW5jdGlvbiBSbCh0KXtyZXR1cm4gdH1mdW5jdGlvbiBPbCh0KXtyZXR1cm4gcnIoImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpjaSh0LDEpKX12YXIgemw9dnIoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiBRaShuLHQsZSl9fSkpLERsPXZyKChmdW5jdGlvbih0LGUpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gUWkodCxuLGUpfX0pKTtmdW5jdGlvbiBCbCh0LGUsbil7dmFyIGk9bGwoZSkscj1XaShlLGkpO251bGwhPW58fENzKGUpJiYoci5sZW5ndGh8fCFpLmxlbmd0aCl8fChuPWUsZT10LHQ9dGhpcyxyPVdpKGUsbGwoZSkpKTt2YXIgbz0hKENzKG4pJiYiY2hhaW4iaW4gbiYmIW4uY2hhaW4pLGE9TXModCk7cmV0dXJuIE1lKHIsKGZ1bmN0aW9uKG4pe3ZhciBpPWVbbl07dFtuXT1pLGEmJih0LnByb3RvdHlwZVtuXT1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX19jaGFpbl9fO2lmKG98fGUpe3ZhciBuPXQodGhpcy5fX3dyYXBwZWRfXykscj1uLl9fYWN0aW9uc19fPUpyKHRoaXMuX19hY3Rpb25zX18pO3JldHVybiByLnB1c2goe2Z1bmM6aSxhcmdzOmFyZ3VtZW50cyx0aGlzQXJnOnR9KSxuLl9fY2hhaW5fXz1lLG59cmV0dXJuIGkuYXBwbHkodCxJZShbdGhpcy52YWx1ZSgpXSxhcmd1bWVudHMpKX0pfSkpLHR9ZnVuY3Rpb24gSGwoKXt9dmFyIEZsPXBvKE5lKSxWbD1wbyhBZSksVWw9cG8oemUpO2Z1bmN0aW9uIGpsKHQpe3JldHVybiBHbyh0KT9HZShsYSh0KSk6KGZ1bmN0aW9uIGUodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBxaShlLHQpfX0pKHQpfXZhciBHbD1tbygpLFdsPW1vKCEwKTtmdW5jdGlvbiBxbCgpe3JldHVybltdfWZ1bmN0aW9uIFlsKCl7cmV0dXJuITF9dmFyIFhsLCRsPWhvKChmdW5jdGlvbih0LGUpe3JldHVybiB0K2V9KSwwKSxLbD15bygiY2VpbCIpLFpsPWhvKChmdW5jdGlvbih0LGUpe3JldHVybiB0L2V9KSwxKSxKbD15bygiZmxvb3IiKSxRbD1obygoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCplfSksMSksdGM9eW8oInJvdW5kIiksZWM9aG8oKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQtZX0pLDApO3JldHVybiBWbi5hZnRlcj1mdW5jdGlvbiBuYyh0LG4pe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBuKXRocm93IG5ldyBMdChlKTtyZXR1cm4gdD1Xcyh0KSxmdW5jdGlvbigpe2lmKC0tdDwxKXJldHVybiBuLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19LFZuLmFyeT1KYSxWbi5hc3NpZ249S3MsVm4uYXNzaWduSW49WnMsVm4uYXNzaWduSW5XaXRoPUpzLFZuLmFzc2lnbldpdGg9UXMsVm4uYXQ9dGwsVm4uYmVmb3JlPVFhLFZuLmJpbmQ9dHMsVm4uYmluZEFsbD1MbCxWbi5iaW5kS2V5PWVzLFZuLmNhc3RBcnJheT1mdW5jdGlvbiBpYygpe2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybltdO3ZhciB0PWFyZ3VtZW50c1swXTtyZXR1cm4gbXModCk/dDpbdF19LFZuLmNoYWluPURhLFZuLmNodW5rPWZ1bmN0aW9uIHJjKGUsbixpKXtuPShpP2pvKGUsbixpKTpuPT09dCk/MTp2bihXcyhuKSwwKTt2YXIgcj1udWxsPT1lPzA6ZS5sZW5ndGg7aWYoIXJ8fG48MSlyZXR1cm5bXTtmb3IodmFyIG89MCxhPTAscz13dChTZShyL24pKTtvPHI7KXNbYSsrXT1UcihlLG8sbys9bik7cmV0dXJuIHN9LFZuLmNvbXBhY3Q9ZnVuY3Rpb24gb2ModCl7Zm9yKHZhciBlPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoLGk9MCxyPVtdOysrZTxuOyl7dmFyIG89dFtlXTtvJiYocltpKytdPW8pfXJldHVybiByfSxWbi5jb25jYXQ9ZnVuY3Rpb24gYWMoKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoO2lmKCF0KXJldHVybltdO2Zvcih2YXIgZT13dCh0LTEpLG49YXJndW1lbnRzWzBdLGk9dDtpLS07KWVbaS0xXT1hcmd1bWVudHNbaV07cmV0dXJuIEllKG1zKG4pP0pyKG4pOltuXSxGaShlLDEpKX0sVm4uY29uZD1mdW5jdGlvbiBzYyh0KXt2YXIgbj1udWxsPT10PzA6dC5sZW5ndGgsaT1ObygpO3JldHVybiB0PW4/TmUodCwoZnVuY3Rpb24odCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHRbMV0pdGhyb3cgbmV3IEx0KGUpO3JldHVybltpKHRbMF0pLHRbMV1dfSkpOltdLHZyKChmdW5jdGlvbihlKXtmb3IodmFyIGk9LTE7KytpPG47KXt2YXIgcj10W2ldO2lmKHhlKHJbMF0sdGhpcyxlKSlyZXR1cm4geGUoclsxXSx0aGlzLGUpfX0pKX0sVm4uY29uZm9ybXM9ZnVuY3Rpb24gbGModCl7cmV0dXJuKGZ1bmN0aW9uIGUodCl7dmFyIGU9bGwodCk7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiB1aShuLHQsZSl9fSkoY2kodCwxKSl9LFZuLmNvbnN0YW50PVBsLFZuLmNvdW50Qnk9RmEsVm4uY3JlYXRlPWZ1bmN0aW9uIGNjKHQsZSl7dmFyIG49VW4odCk7cmV0dXJuIG51bGw9PWU/bjpvaShuLGUpfSxWbi5jdXJyeT1mdW5jdGlvbiBlKG4saSxyKXt2YXIgbz14byhuLDgsdCx0LHQsdCx0LGk9cj90OmkpO3JldHVybiBvLnBsYWNlaG9sZGVyPWUucGxhY2Vob2xkZXIsb30sVm4uY3VycnlSaWdodD1mdW5jdGlvbiBlKG4saSxvKXt2YXIgYT14byhuLHIsdCx0LHQsdCx0LGk9bz90OmkpO3JldHVybiBhLnBsYWNlaG9sZGVyPWUucGxhY2Vob2xkZXIsYX0sVm4uZGVib3VuY2U9bnMsVm4uZGVmYXVsdHM9ZWwsVm4uZGVmYXVsdHNEZWVwPW5sLFZuLmRlZmVyPWlzLFZuLmRlbGF5PXJzLFZuLmRpZmZlcmVuY2U9aGEsVm4uZGlmZmVyZW5jZUJ5PWRhLFZuLmRpZmZlcmVuY2VXaXRoPXBhLFZuLmRyb3A9ZnVuY3Rpb24gdWMoZSxuLGkpe3ZhciByPW51bGw9PWU/MDplLmxlbmd0aDtyZXR1cm4gcj9UcihlLChuPWl8fG49PT10PzE6V3MobikpPDA/MDpuLHIpOltdfSxWbi5kcm9wUmlnaHQ9ZnVuY3Rpb24gaGMoZSxuLGkpe3ZhciByPW51bGw9PWU/MDplLmxlbmd0aDtyZXR1cm4gcj9UcihlLDAsKG49ci0obj1pfHxuPT09dD8xOldzKG4pKSk8MD8wOm4pOltdfSxWbi5kcm9wUmlnaHRXaGlsZT1mdW5jdGlvbiBkYyh0LGUpe3JldHVybiB0JiZ0Lmxlbmd0aD96cih0LE5vKGUsMyksITAsITApOltdfSxWbi5kcm9wV2hpbGU9ZnVuY3Rpb24gcGModCxlKXtyZXR1cm4gdCYmdC5sZW5ndGg/enIodCxObyhlLDMpLCEwKTpbXX0sVm4uZmlsbD1mdW5jdGlvbiBmYyhlLG4saSxyKXt2YXIgbz1udWxsPT1lPzA6ZS5sZW5ndGg7cmV0dXJuIG8/KGkmJiJudW1iZXIiIT10eXBlb2YgaSYmam8oZSxuLGkpJiYoaT0wLHI9byksKGZ1bmN0aW9uIGEoZSxuLGkscil7dmFyIG89ZS5sZW5ndGg7Zm9yKChpPVdzKGkpKTwwJiYoaT0taT5vPzA6bytpKSwocj1yPT09dHx8cj5vP286V3MocikpPDAmJihyKz1vKSxyPWk+cj8wOnFzKHIpO2k8cjspZVtpKytdPW47cmV0dXJuIGV9KShlLG4saSxyKSk6W119LFZuLmZpbHRlcj1mdW5jdGlvbiBtYyh0LGUpe3JldHVybihtcyh0KT9rZTpIaSkodCxObyhlLDMpKX0sVm4uZmxhdE1hcD1mdW5jdGlvbiBnYyh0LGUpe3JldHVybiBGaShYYSh0LGUpLDEpfSxWbi5mbGF0TWFwRGVlcD1mdW5jdGlvbiBfYyh0LGUpe3JldHVybiBGaShYYSh0LGUpLGMpfSxWbi5mbGF0TWFwRGVwdGg9ZnVuY3Rpb24geWMoZSxuLGkpe3JldHVybiBpPWk9PT10PzE6V3MoaSksRmkoWGEoZSxuKSxpKX0sVm4uZmxhdHRlbj1nYSxWbi5mbGF0dGVuRGVlcD1mdW5jdGlvbiB2Yyh0KXtyZXR1cm4gbnVsbCE9dCYmdC5sZW5ndGg/RmkodCxjKTpbXX0sVm4uZmxhdHRlbkRlcHRoPWZ1bmN0aW9uIGJjKGUsbil7cmV0dXJuIG51bGwhPWUmJmUubGVuZ3RoP0ZpKGUsbj1uPT09dD8xOldzKG4pKTpbXX0sVm4uZmxpcD1mdW5jdGlvbiB4Yyh0KXtyZXR1cm4geG8odCw1MTIpfSxWbi5mbG93PU5sLFZuLmZsb3dSaWdodD1JbCxWbi5mcm9tUGFpcnM9ZnVuY3Rpb24gd2ModCl7Zm9yKHZhciBlPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoLGk9e307KytlPG47KXt2YXIgcj10W2VdO2lbclswXV09clsxXX1yZXR1cm4gaX0sVm4uZnVuY3Rpb25zPWZ1bmN0aW9uIFNjKHQpe3JldHVybiBudWxsPT10P1tdOldpKHQsbGwodCkpfSxWbi5mdW5jdGlvbnNJbj1mdW5jdGlvbiBNYyh0KXtyZXR1cm4gbnVsbD09dD9bXTpXaSh0LGNsKHQpKX0sVm4uZ3JvdXBCeT1XYSxWbi5pbml0aWFsPWZ1bmN0aW9uIEVjKHQpe3JldHVybiBudWxsIT10JiZ0Lmxlbmd0aD9Ucih0LDAsLTEpOltdfSxWbi5pbnRlcnNlY3Rpb249eWEsVm4uaW50ZXJzZWN0aW9uQnk9dmEsVm4uaW50ZXJzZWN0aW9uV2l0aD1iYSxWbi5pbnZlcnQ9b2wsVm4uaW52ZXJ0Qnk9YWwsVm4uaW52b2tlTWFwPXFhLFZuLml0ZXJhdGVlPU9sLFZuLmtleUJ5PVlhLFZuLmtleXM9bGwsVm4ua2V5c0luPWNsLFZuLm1hcD1YYSxWbi5tYXBLZXlzPWZ1bmN0aW9uIFRjKHQsZSl7dmFyIG49e307cmV0dXJuIGU9Tm8oZSwzKSxqaSh0LChmdW5jdGlvbih0LGkscil7YWkobixlKHQsaSxyKSx0KX0pKSxufSxWbi5tYXBWYWx1ZXM9ZnVuY3Rpb24gQ2ModCxlKXt2YXIgbj17fTtyZXR1cm4gZT1ObyhlLDMpLGppKHQsKGZ1bmN0aW9uKHQsaSxyKXthaShuLGksZSh0LGkscikpfSkpLG59LFZuLm1hdGNoZXM9ZnVuY3Rpb24gQWModCl7cmV0dXJuIGNyKGNpKHQsMSkpfSxWbi5tYXRjaGVzUHJvcGVydHk9ZnVuY3Rpb24ga2ModCxlKXtyZXR1cm4gdXIodCxjaShlLDEpKX0sVm4ubWVtb2l6ZT1vcyxWbi5tZXJnZT11bCxWbi5tZXJnZVdpdGg9aGwsVm4ubWV0aG9kPXpsLFZuLm1ldGhvZE9mPURsLFZuLm1peGluPUJsLFZuLm5lZ2F0ZT1hcyxWbi5udGhBcmc9ZnVuY3Rpb24gTGModCl7cmV0dXJuIHQ9V3ModCksdnIoKGZ1bmN0aW9uKGUpe3JldHVybiBkcihlLHQpfSkpfSxWbi5vbWl0PWRsLFZuLm9taXRCeT1mdW5jdGlvbiBQYyh0LGUpe3JldHVybiBmbCh0LGFzKE5vKGUpKSl9LFZuLm9uY2U9ZnVuY3Rpb24gTmModCl7cmV0dXJuIFFhKDIsdCl9LFZuLm9yZGVyQnk9ZnVuY3Rpb24gSWMoZSxuLGkscil7cmV0dXJuIG51bGw9PWU/W106KG1zKG4pfHwobj1udWxsPT1uP1tdOltuXSksbXMoaT1yP3Q6aSl8fChpPW51bGw9PWk/W106W2ldKSxwcihlLG4saSkpfSxWbi5vdmVyPUZsLFZuLm92ZXJBcmdzPXNzLFZuLm92ZXJFdmVyeT1WbCxWbi5vdmVyU29tZT1VbCxWbi5wYXJ0aWFsPWxzLFZuLnBhcnRpYWxSaWdodD1jcyxWbi5wYXJ0aXRpb249JGEsVm4ucGljaz1wbCxWbi5waWNrQnk9ZmwsVm4ucHJvcGVydHk9amwsVm4ucHJvcGVydHlPZj1mdW5jdGlvbiBSYyhlKXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIG51bGw9PWU/dDpxaShlLG4pfX0sVm4ucHVsbD13YSxWbi5wdWxsQWxsPVNhLFZuLnB1bGxBbGxCeT1mdW5jdGlvbiBPYyh0LGUsbil7cmV0dXJuIHQmJnQubGVuZ3RoJiZlJiZlLmxlbmd0aD9tcih0LGUsTm8obiwyKSk6dH0sVm4ucHVsbEFsbFdpdGg9ZnVuY3Rpb24gemMoZSxuLGkpe3JldHVybiBlJiZlLmxlbmd0aCYmbiYmbi5sZW5ndGg/bXIoZSxuLHQsaSk6ZX0sVm4ucHVsbEF0PU1hLFZuLnJhbmdlPUdsLFZuLnJhbmdlUmlnaHQ9V2wsVm4ucmVhcmc9dXMsVm4ucmVqZWN0PWZ1bmN0aW9uIERjKHQsZSl7cmV0dXJuKG1zKHQpP2tlOkhpKSh0LGFzKE5vKGUsMykpKX0sVm4ucmVtb3ZlPWZ1bmN0aW9uIEJjKHQsZSl7dmFyIG49W107aWYoIXR8fCF0Lmxlbmd0aClyZXR1cm4gbjt2YXIgaT0tMSxyPVtdLG89dC5sZW5ndGg7Zm9yKGU9Tm8oZSwzKTsrK2k8bzspe3ZhciBhPXRbaV07ZShhLGksdCkmJihuLnB1c2goYSksci5wdXNoKGkpKX1yZXR1cm4gZ3IodCxyKSxufSxWbi5yZXN0PWZ1bmN0aW9uIEhjKG4saSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIG4pdGhyb3cgbmV3IEx0KGUpO3JldHVybiB2cihuLGk9aT09PXQ/aTpXcyhpKSl9LFZuLnJldmVyc2U9RWEsVm4uc2FtcGxlU2l6ZT1mdW5jdGlvbiBGYyhlLG4saSl7cmV0dXJuIG49KGk/am8oZSxuLGkpOm49PT10KT8xOldzKG4pLChtcyhlKT9Rbjp4cikoZSxuKX0sVm4uc2V0PWZ1bmN0aW9uIFZjKHQsZSxuKXtyZXR1cm4gbnVsbD09dD90OndyKHQsZSxuKX0sVm4uc2V0V2l0aD1mdW5jdGlvbiBVYyhlLG4saSxyKXtyZXR1cm4gcj0iZnVuY3Rpb24iPT10eXBlb2Ygcj9yOnQsbnVsbD09ZT9lOndyKGUsbixpLHIpfSxWbi5zaHVmZmxlPWZ1bmN0aW9uIGpjKHQpe3JldHVybihtcyh0KT90aTpFcikodCl9LFZuLnNsaWNlPWZ1bmN0aW9uIEdjKGUsbixpKXt2YXIgcj1udWxsPT1lPzA6ZS5sZW5ndGg7cmV0dXJuIHI/KGkmJiJudW1iZXIiIT10eXBlb2YgaSYmam8oZSxuLGkpPyhuPTAsaT1yKToobj1udWxsPT1uPzA6V3MobiksaT1pPT09dD9yOldzKGkpKSxUcihlLG4saSkpOltdfSxWbi5zb3J0Qnk9S2EsVm4uc29ydGVkVW5pcT1mdW5jdGlvbiBXYyh0KXtyZXR1cm4gdCYmdC5sZW5ndGg/THIodCk6W119LFZuLnNvcnRlZFVuaXFCeT1mdW5jdGlvbiBxYyh0LGUpe3JldHVybiB0JiZ0Lmxlbmd0aD9Mcih0LE5vKGUsMikpOltdfSxWbi5zcGxpdD1mdW5jdGlvbiBZYyhlLG4saSl7cmV0dXJuIGkmJiJudW1iZXIiIT10eXBlb2YgaSYmam8oZSxuLGkpJiYobj1pPXQpLChpPWk9PT10P2Q6aT4+PjApPyhlPSRzKGUpKSYmKCJzdHJpbmciPT10eXBlb2Ygbnx8bnVsbCE9biYmIUlzKG4pKSYmIShuPU5yKG4pKSYmYW4oZSk/R3IocG4oZSksMCxpKTplLnNwbGl0KG4saSk6W119LFZuLnNwcmVhZD1mdW5jdGlvbiBYYyh0LG4pe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBMdChlKTtyZXR1cm4gbj1udWxsPT1uPzA6dm4oV3MobiksMCksdnIoKGZ1bmN0aW9uKGUpe3ZhciBpPWVbbl0scj1HcihlLDAsbik7cmV0dXJuIGkmJkllKHIsaSkseGUodCx0aGlzLHIpfSkpfSxWbi50YWlsPWZ1bmN0aW9uICRjKHQpe3ZhciBlPW51bGw9PXQ/MDp0Lmxlbmd0aDtyZXR1cm4gZT9Ucih0LDEsZSk6W119LFZuLnRha2U9ZnVuY3Rpb24gS2MoZSxuLGkpe3JldHVybiBlJiZlLmxlbmd0aD9UcihlLDAsKG49aXx8bj09PXQ/MTpXcyhuKSk8MD8wOm4pOltdfSxWbi50YWtlUmlnaHQ9ZnVuY3Rpb24gWmMoZSxuLGkpe3ZhciByPW51bGw9PWU/MDplLmxlbmd0aDtyZXR1cm4gcj9UcihlLChuPXItKG49aXx8bj09PXQ/MTpXcyhuKSkpPDA/MDpuLHIpOltdfSxWbi50YWtlUmlnaHRXaGlsZT1mdW5jdGlvbiBKYyh0LGUpe3JldHVybiB0JiZ0Lmxlbmd0aD96cih0LE5vKGUsMyksITEsITApOltdfSxWbi50YWtlV2hpbGU9ZnVuY3Rpb24gUWModCxlKXtyZXR1cm4gdCYmdC5sZW5ndGg/enIodCxObyhlLDMpKTpbXX0sVm4udGFwPWZ1bmN0aW9uIHR1KHQsZSl7cmV0dXJuIGUodCksdH0sVm4udGhyb3R0bGU9ZnVuY3Rpb24gZXUodCxuLGkpe3ZhciByPSEwLG89ITA7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IEx0KGUpO3JldHVybiBDcyhpKSYmKHI9ImxlYWRpbmciaW4gaT8hIWkubGVhZGluZzpyLG89InRyYWlsaW5nImluIGk/ISFpLnRyYWlsaW5nOm8pLG5zKHQsbix7bGVhZGluZzpyLG1heFdhaXQ6bix0cmFpbGluZzpvfSl9LFZuLnRocnU9QmEsVm4udG9BcnJheT1qcyxWbi50b1BhaXJzPW1sLFZuLnRvUGFpcnNJbj1nbCxWbi50b1BhdGg9ZnVuY3Rpb24gbnUodCl7cmV0dXJuIG1zKHQpP05lKHQsbGEpOkJzKHQpP1t0XTpKcihhYSgkcyh0KSkpfSxWbi50b1BsYWluT2JqZWN0PVhzLFZuLnRyYW5zZm9ybT1mdW5jdGlvbiBpdSh0LGUsbil7dmFyIGk9bXModCkscj1pfHxicyh0KXx8SHModCk7aWYoZT1ObyhlLDQpLG51bGw9PW4pe3ZhciBvPXQmJnQuY29uc3RydWN0b3I7bj1yP2k/bmV3IG86W106Q3ModCkmJk1zKG8pP1VuKHF0KHQpKTp7fX1yZXR1cm4ocj9NZTpqaSkodCwoZnVuY3Rpb24odCxpLHIpe3JldHVybiBlKG4sdCxpLHIpfSkpLG59LFZuLnVuYXJ5PWZ1bmN0aW9uIHJ1KHQpe3JldHVybiBKYSh0LDEpfSxWbi51bmlvbj1UYSxWbi51bmlvbkJ5PUNhLFZuLnVuaW9uV2l0aD1BYSxWbi51bmlxPWZ1bmN0aW9uIG91KHQpe3JldHVybiB0JiZ0Lmxlbmd0aD9Jcih0KTpbXX0sVm4udW5pcUJ5PWZ1bmN0aW9uIGF1KHQsZSl7cmV0dXJuIHQmJnQubGVuZ3RoP0lyKHQsTm8oZSwyKSk6W119LFZuLnVuaXFXaXRoPWZ1bmN0aW9uIHN1KGUsbil7cmV0dXJuIG49ImZ1bmN0aW9uIj09dHlwZW9mIG4/bjp0LGUmJmUubGVuZ3RoP0lyKGUsdCxuKTpbXX0sVm4udW5zZXQ9ZnVuY3Rpb24gbHUodCxlKXtyZXR1cm4gbnVsbD09dHx8UnIodCxlKX0sVm4udW56aXA9a2EsVm4udW56aXBXaXRoPUxhLFZuLnVwZGF0ZT1mdW5jdGlvbiBjdSh0LGUsbil7cmV0dXJuIG51bGw9PXQ/dDpPcih0LGUsVnIobikpfSxWbi51cGRhdGVXaXRoPWZ1bmN0aW9uIHV1KGUsbixpLHIpe3JldHVybiByPSJmdW5jdGlvbiI9PXR5cGVvZiByP3I6dCxudWxsPT1lP2U6T3IoZSxuLFZyKGkpLHIpfSxWbi52YWx1ZXM9X2wsVm4udmFsdWVzSW49ZnVuY3Rpb24gaHUodCl7cmV0dXJuIG51bGw9PXQ/W106WmUodCxjbCh0KSl9LFZuLndpdGhvdXQ9UGEsVm4ud29yZHM9QWwsVm4ud3JhcD1mdW5jdGlvbiBkdSh0LGUpe3JldHVybiBscyhWcihlKSx0KX0sVm4ueG9yPU5hLFZuLnhvckJ5PUlhLFZuLnhvcldpdGg9UmEsVm4uemlwPU9hLFZuLnppcE9iamVjdD1mdW5jdGlvbiBwdSh0LGUpe3JldHVybiBIcih0fHxbXSxlfHxbXSxuaSl9LFZuLnppcE9iamVjdERlZXA9ZnVuY3Rpb24gZnUodCxlKXtyZXR1cm4gSHIodHx8W10sZXx8W10sd3IpfSxWbi56aXBXaXRoPXphLFZuLmVudHJpZXM9bWwsVm4uZW50cmllc0luPWdsLFZuLmV4dGVuZD1acyxWbi5leHRlbmRXaXRoPUpzLEJsKFZuLFZuKSxWbi5hZGQ9JGwsVm4uYXR0ZW1wdD1rbCxWbi5jYW1lbENhc2U9eWwsVm4uY2FwaXRhbGl6ZT12bCxWbi5jZWlsPUtsLFZuLmNsYW1wPWZ1bmN0aW9uIG11KGUsbixpKXtyZXR1cm4gaT09PXQmJihpPW4sbj10KSxpIT09dCYmKGk9KGk9WXMoaSkpPT1pP2k6MCksbiE9PXQmJihuPShuPVlzKG4pKT09bj9uOjApLGxpKFlzKGUpLG4saSl9LFZuLmNsb25lPWZ1bmN0aW9uIGd1KHQpe3JldHVybiBjaSh0LDQpfSxWbi5jbG9uZURlZXA9ZnVuY3Rpb24gX3UodCl7cmV0dXJuIGNpKHQsNSl9LFZuLmNsb25lRGVlcFdpdGg9ZnVuY3Rpb24geXUoZSxuKXtyZXR1cm4gY2koZSw1LG49ImZ1bmN0aW9uIj09dHlwZW9mIG4/bjp0KX0sVm4uY2xvbmVXaXRoPWZ1bmN0aW9uIHZ1KGUsbil7cmV0dXJuIGNpKGUsNCxuPSJmdW5jdGlvbiI9PXR5cGVvZiBuP246dCl9LFZuLmNvbmZvcm1zVG89ZnVuY3Rpb24gYnUodCxlKXtyZXR1cm4gbnVsbD09ZXx8dWkodCxlLGxsKGUpKX0sVm4uZGVidXJyPWJsLFZuLmRlZmF1bHRUbz1mdW5jdGlvbiB4dSh0LGUpe3JldHVybiBudWxsPT10fHx0IT10P2U6dH0sVm4uZGl2aWRlPVpsLFZuLmVuZHNXaXRoPWZ1bmN0aW9uIHd1KGUsbixpKXtlPSRzKGUpLG49TnIobik7dmFyIHI9ZS5sZW5ndGgsbz1pPWk9PT10P3I6bGkoV3MoaSksMCxyKTtyZXR1cm4oaS09bi5sZW5ndGgpPj0wJiZlLnNsaWNlKGksbyk9PW59LFZuLmVxPWhzLFZuLmVzY2FwZT1mdW5jdGlvbiBTdSh0KXtyZXR1cm4odD0kcyh0KSkmJlkudGVzdCh0KT90LnJlcGxhY2UoVyxybik6dH0sVm4uZXNjYXBlUmVnRXhwPWZ1bmN0aW9uIE11KHQpe3JldHVybih0PSRzKHQpKSYmZXQudGVzdCh0KT90LnJlcGxhY2UodHQsIlxcJCYiKTp0fSxWbi5ldmVyeT1mdW5jdGlvbiBFdShlLG4saSl7dmFyIHI9bXMoZSk/QWU6RGk7cmV0dXJuIGkmJmpvKGUsbixpKSYmKG49dCkscihlLE5vKG4sMykpfSxWbi5maW5kPVZhLFZuLmZpbmRJbmRleD1mYSxWbi5maW5kS2V5PWZ1bmN0aW9uIFR1KHQsZSl7cmV0dXJuIEJlKHQsTm8oZSwzKSxqaSl9LFZuLmZpbmRMYXN0PVVhLFZuLmZpbmRMYXN0SW5kZXg9bWEsVm4uZmluZExhc3RLZXk9ZnVuY3Rpb24gQ3UodCxlKXtyZXR1cm4gQmUodCxObyhlLDMpLEdpKX0sVm4uZmxvb3I9SmwsVm4uZm9yRWFjaD1qYSxWbi5mb3JFYWNoUmlnaHQ9R2EsVm4uZm9ySW49ZnVuY3Rpb24gQXUodCxlKXtyZXR1cm4gbnVsbD09dD90OlZpKHQsTm8oZSwzKSxjbCl9LFZuLmZvckluUmlnaHQ9ZnVuY3Rpb24ga3UodCxlKXtyZXR1cm4gbnVsbD09dD90OlVpKHQsTm8oZSwzKSxjbCl9LFZuLmZvck93bj1mdW5jdGlvbiBMdSh0LGUpe3JldHVybiB0JiZqaSh0LE5vKGUsMykpfSxWbi5mb3JPd25SaWdodD1mdW5jdGlvbiBQdSh0LGUpe3JldHVybiB0JiZHaSh0LE5vKGUsMykpfSxWbi5nZXQ9aWwsVm4uZ3Q9ZHMsVm4uZ3RlPXBzLFZuLmhhcz1mdW5jdGlvbiBOdSh0LGUpe3JldHVybiBudWxsIT10JiZIbyh0LGUsS2kpfSxWbi5oYXNJbj1ybCxWbi5oZWFkPV9hLFZuLmlkZW50aXR5PVJsLFZuLmluY2x1ZGVzPWZ1bmN0aW9uIEl1KHQsZSxuLGkpe3Q9eXModCk/dDpfbCh0KSxuPW4mJiFpP1dzKG4pOjA7dmFyIHI9dC5sZW5ndGg7cmV0dXJuIG48MCYmKG49dm4ocituLDApKSxEcyh0KT9uPD1yJiZ0LmluZGV4T2YoZSxuKT4tMTohIXImJkZlKHQsZSxuKT4tMX0sVm4uaW5kZXhPZj1mdW5jdGlvbiBSdSh0LGUsbil7dmFyIGk9bnVsbD09dD8wOnQubGVuZ3RoO2lmKCFpKXJldHVybi0xO3ZhciByPW51bGw9PW4/MDpXcyhuKTtyZXR1cm4gcjwwJiYocj12bihpK3IsMCkpLEZlKHQsZSxyKX0sVm4uaW5SYW5nZT1mdW5jdGlvbiBPdShlLG4saSl7cmV0dXJuIG49R3MobiksaT09PXQ/KGk9bixuPTApOmk9R3MoaSksKGZ1bmN0aW9uIHIodCxlLG4pe3JldHVybiB0Pj1ibihlLG4pJiZ0PHZuKGUsbil9KShlPVlzKGUpLG4saSl9LFZuLmludm9rZT1zbCxWbi5pc0FyZ3VtZW50cz1mcyxWbi5pc0FycmF5PW1zLFZuLmlzQXJyYXlCdWZmZXI9Z3MsVm4uaXNBcnJheUxpa2U9eXMsVm4uaXNBcnJheUxpa2VPYmplY3Q9dnMsVm4uaXNCb29sZWFuPWZ1bmN0aW9uIHp1KHQpe3JldHVybiEwPT09dHx8ITE9PT10fHxBcyh0KSYmWGkodCk9PWd9LFZuLmlzQnVmZmVyPWJzLFZuLmlzRGF0ZT14cyxWbi5pc0VsZW1lbnQ9ZnVuY3Rpb24gRHUodCl7cmV0dXJuIEFzKHQpJiYxPT09dC5ub2RlVHlwZSYmIU5zKHQpfSxWbi5pc0VtcHR5PWZ1bmN0aW9uIEJ1KHQpe2lmKG51bGw9PXQpcmV0dXJuITA7aWYoeXModCkmJihtcyh0KXx8InN0cmluZyI9PXR5cGVvZiB0fHwiZnVuY3Rpb24iPT10eXBlb2YgdC5zcGxpY2V8fGJzKHQpfHxIcyh0KXx8ZnModCkpKXJldHVybiF0Lmxlbmd0aDt2YXIgZT1Cbyh0KTtpZihlPT14fHxlPT1UKXJldHVybiF0LnNpemU7aWYoWW8odCkpcmV0dXJuIW9yKHQpLmxlbmd0aDtmb3IodmFyIG4gaW4gdClpZihPdC5jYWxsKHQsbikpcmV0dXJuITE7cmV0dXJuITB9LFZuLmlzRXF1YWw9ZnVuY3Rpb24gSHUodCxlKXtyZXR1cm4gZXIodCxlKX0sVm4uaXNFcXVhbFdpdGg9ZnVuY3Rpb24gRnUoZSxuLGkpe3ZhciByPShpPSJmdW5jdGlvbiI9PXR5cGVvZiBpP2k6dCk/aShlLG4pOnQ7cmV0dXJuIHI9PT10P2VyKGUsbix0LGkpOiEhcn0sVm4uaXNFcnJvcj1TcyxWbi5pc0Zpbml0ZT1mdW5jdGlvbiBWdSh0KXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIHQmJldlKHQpfSxWbi5pc0Z1bmN0aW9uPU1zLFZuLmlzSW50ZWdlcj1FcyxWbi5pc0xlbmd0aD1UcyxWbi5pc01hcD1rcyxWbi5pc01hdGNoPWZ1bmN0aW9uIFV1KHQsZSl7cmV0dXJuIHQ9PT1lfHxucih0LGUsUm8oZSkpfSxWbi5pc01hdGNoV2l0aD1mdW5jdGlvbiBqdShlLG4saSl7cmV0dXJuIGk9ImZ1bmN0aW9uIj09dHlwZW9mIGk/aTp0LG5yKGUsbixSbyhuKSxpKX0sVm4uaXNOYU49ZnVuY3Rpb24gR3UodCl7cmV0dXJuIFBzKHQpJiZ0IT0rdH0sVm4uaXNOYXRpdmU9ZnVuY3Rpb24gV3UodCl7aWYocW8odCkpdGhyb3cgbmV3IE10KCJVbnN1cHBvcnRlZCBjb3JlLWpzIHVzZS4gVHJ5IGh0dHBzOi8vbnBtcy5pby9zZWFyY2g/cT1wb255ZmlsbC4iKTtyZXR1cm4gaXIodCl9LFZuLmlzTmlsPWZ1bmN0aW9uIHF1KHQpe3JldHVybiBudWxsPT10fSxWbi5pc051bGw9ZnVuY3Rpb24gWXUodCl7cmV0dXJuIG51bGw9PT10fSxWbi5pc051bWJlcj1QcyxWbi5pc09iamVjdD1DcyxWbi5pc09iamVjdExpa2U9QXMsVm4uaXNQbGFpbk9iamVjdD1OcyxWbi5pc1JlZ0V4cD1JcyxWbi5pc1NhZmVJbnRlZ2VyPWZ1bmN0aW9uIFh1KHQpe3JldHVybiBFcyh0KSYmdD49LTkwMDcxOTkyNTQ3NDA5OTEmJnQ8PXV9LFZuLmlzU2V0PU9zLFZuLmlzU3RyaW5nPURzLFZuLmlzU3ltYm9sPUJzLFZuLmlzVHlwZWRBcnJheT1IcyxWbi5pc1VuZGVmaW5lZD1mdW5jdGlvbiAkdShlKXtyZXR1cm4gZT09PXR9LFZuLmlzV2Vha01hcD1mdW5jdGlvbiBLdSh0KXtyZXR1cm4gQXModCkmJkJvKHQpPT1rfSxWbi5pc1dlYWtTZXQ9ZnVuY3Rpb24gWnUodCl7cmV0dXJuIEFzKHQpJiYiW29iamVjdCBXZWFrU2V0XSI9PVhpKHQpfSxWbi5qb2luPWZ1bmN0aW9uIEp1KHQsZSl7cmV0dXJuIG51bGw9PXQ/IiI6X24uY2FsbCh0LGUpfSxWbi5rZWJhYkNhc2U9eGwsVm4ubGFzdD14YSxWbi5sYXN0SW5kZXhPZj1mdW5jdGlvbiBRdShlLG4saSl7dmFyIHI9bnVsbD09ZT8wOmUubGVuZ3RoO2lmKCFyKXJldHVybi0xO3ZhciBvPXI7cmV0dXJuIGkhPT10JiYobz0obz1XcyhpKSk8MD92bihyK28sMCk6Ym4obyxyLTEpKSxuPT1uPyhmdW5jdGlvbiBhKHQsZSxuKXtmb3IodmFyIGk9bisxO2ktLTspaWYodFtpXT09PWUpcmV0dXJuIGk7cmV0dXJuIGl9KShlLG4sbyk6SGUoZSxVZSxvLCEwKX0sVm4ubG93ZXJDYXNlPXdsLFZuLmxvd2VyRmlyc3Q9U2wsVm4ubHQ9VnMsVm4ubHRlPVVzLFZuLm1heD1mdW5jdGlvbiB0aChlKXtyZXR1cm4gZSYmZS5sZW5ndGg/QmkoZSxSbCwkaSk6dH0sVm4ubWF4Qnk9ZnVuY3Rpb24gZWgoZSxuKXtyZXR1cm4gZSYmZS5sZW5ndGg/QmkoZSxObyhuLDIpLCRpKTp0fSxWbi5tZWFuPWZ1bmN0aW9uIG5oKHQpe3JldHVybiBqZSh0LFJsKX0sVm4ubWVhbkJ5PWZ1bmN0aW9uIGloKHQsZSl7cmV0dXJuIGplKHQsTm8oZSwyKSl9LFZuLm1pbj1mdW5jdGlvbiByaChlKXtyZXR1cm4gZSYmZS5sZW5ndGg/QmkoZSxSbCxzcik6dH0sVm4ubWluQnk9ZnVuY3Rpb24gb2goZSxuKXtyZXR1cm4gZSYmZS5sZW5ndGg/QmkoZSxObyhuLDIpLHNyKTp0fSxWbi5zdHViQXJyYXk9cWwsVm4uc3R1YkZhbHNlPVlsLFZuLnN0dWJPYmplY3Q9ZnVuY3Rpb24gYWgoKXtyZXR1cm57fX0sVm4uc3R1YlN0cmluZz1mdW5jdGlvbiBzaCgpe3JldHVybiIifSxWbi5zdHViVHJ1ZT1mdW5jdGlvbiBsaCgpe3JldHVybiEwfSxWbi5tdWx0aXBseT1RbCxWbi5udGg9ZnVuY3Rpb24gY2goZSxuKXtyZXR1cm4gZSYmZS5sZW5ndGg/ZHIoZSxXcyhuKSk6dH0sVm4ubm9Db25mbGljdD1mdW5jdGlvbiB1aCgpe3JldHVybiBjZS5fPT09dGhpcyYmKGNlLl89RnQpLHRoaXN9LFZuLm5vb3A9SGwsVm4ubm93PVphLFZuLnBhZD1mdW5jdGlvbiBoaCh0LGUsbil7dD0kcyh0KTt2YXIgaT0oZT1XcyhlKSk/ZG4odCk6MDtpZighZXx8aT49ZSlyZXR1cm4gdDt2YXIgcj0oZS1pKS8yO3JldHVybiBmbyhFZShyKSxuKSt0K2ZvKFNlKHIpLG4pfSxWbi5wYWRFbmQ9ZnVuY3Rpb24gZGgodCxlLG4pe3Q9JHModCk7dmFyIGk9KGU9V3MoZSkpP2RuKHQpOjA7cmV0dXJuIGUmJmk8ZT90K2ZvKGUtaSxuKTp0fSxWbi5wYWRTdGFydD1mdW5jdGlvbiBwaCh0LGUsbil7dD0kcyh0KTt2YXIgaT0oZT1XcyhlKSk/ZG4odCk6MDtyZXR1cm4gZSYmaTxlP2ZvKGUtaSxuKSt0OnR9LFZuLnBhcnNlSW50PWZ1bmN0aW9uIGZoKHQsZSxuKXtyZXR1cm4gbnx8bnVsbD09ZT9lPTA6ZSYmKGU9K2UpLHduKCRzKHQpLnJlcGxhY2UobnQsIiIpLGV8fDApfSxWbi5yYW5kb209ZnVuY3Rpb24gbWgoZSxuLGkpe2lmKGkmJiJib29sZWFuIiE9dHlwZW9mIGkmJmpvKGUsbixpKSYmKG49aT10KSxpPT09dCYmKCJib29sZWFuIj09dHlwZW9mIG4/KGk9bixuPXQpOiJib29sZWFuIj09dHlwZW9mIGUmJihpPWUsZT10KSksZT09PXQmJm49PT10PyhlPTAsbj0xKTooZT1HcyhlKSxuPT09dD8obj1lLGU9MCk6bj1HcyhuKSksZT5uKXt2YXIgcj1lO2U9bixuPXJ9aWYoaXx8ZSUxfHxuJTEpe3ZhciBvPVNuKCk7cmV0dXJuIGJuKGUrbyoobi1lK29lKCIxZS0iKygobysiIikubGVuZ3RoLTEpKSksbil9cmV0dXJuIF9yKGUsbil9LFZuLnJlZHVjZT1mdW5jdGlvbiBnaCh0LGUsbil7dmFyIGk9bXModCk/UmU6cWUscj1hcmd1bWVudHMubGVuZ3RoPDM7cmV0dXJuIGkodCxObyhlLDQpLG4scixPaSl9LFZuLnJlZHVjZVJpZ2h0PWZ1bmN0aW9uIF9oKHQsZSxuKXt2YXIgaT1tcyh0KT9PZTpxZSxyPWFyZ3VtZW50cy5sZW5ndGg8MztyZXR1cm4gaSh0LE5vKGUsNCksbixyLHppKX0sVm4ucmVwZWF0PWZ1bmN0aW9uIHloKGUsbixpKXtyZXR1cm4gbj0oaT9qbyhlLG4saSk6bj09PXQpPzE6V3MobikseXIoJHMoZSksbil9LFZuLnJlcGxhY2U9ZnVuY3Rpb24gdmgoKXt2YXIgdD1hcmd1bWVudHMsZT0kcyh0WzBdKTtyZXR1cm4gdC5sZW5ndGg8Mz9lOmUucmVwbGFjZSh0WzFdLHRbMl0pfSxWbi5yZXN1bHQ9ZnVuY3Rpb24gYmgoZSxuLGkpe3ZhciByPS0xLG89KG49VXIobixlKSkubGVuZ3RoO2ZvcihvfHwobz0xLGU9dCk7KytyPG87KXt2YXIgYT1udWxsPT1lP3Q6ZVtsYShuW3JdKV07YT09PXQmJihyPW8sYT1pKSxlPU1zKGEpP2EuY2FsbChlKTphfXJldHVybiBlfSxWbi5yb3VuZD10YyxWbi5ydW5JbkNvbnRleHQ9aXQsVm4uc2FtcGxlPWZ1bmN0aW9uIHhoKHQpe3JldHVybihtcyh0KT9KbjpicikodCl9LFZuLnNpemU9ZnVuY3Rpb24gd2godCl7aWYobnVsbD09dClyZXR1cm4gMDtpZih5cyh0KSlyZXR1cm4gRHModCk/ZG4odCk6dC5sZW5ndGg7dmFyIGU9Qm8odCk7cmV0dXJuIGU9PXh8fGU9PVQ/dC5zaXplOm9yKHQpLmxlbmd0aH0sVm4uc25ha2VDYXNlPU1sLFZuLnNvbWU9ZnVuY3Rpb24gU2goZSxuLGkpe3ZhciByPW1zKGUpP3plOkNyO3JldHVybiBpJiZqbyhlLG4saSkmJihuPXQpLHIoZSxObyhuLDMpKX0sVm4uc29ydGVkSW5kZXg9ZnVuY3Rpb24gTWgodCxlKXtyZXR1cm4gQXIodCxlKX0sVm4uc29ydGVkSW5kZXhCeT1mdW5jdGlvbiBFaCh0LGUsbil7cmV0dXJuIGtyKHQsZSxObyhuLDIpKX0sVm4uc29ydGVkSW5kZXhPZj1mdW5jdGlvbiBUaCh0LGUpe3ZhciBuPW51bGw9PXQ/MDp0Lmxlbmd0aDtpZihuKXt2YXIgaT1Bcih0LGUpO2lmKGk8biYmaHModFtpXSxlKSlyZXR1cm4gaX1yZXR1cm4tMX0sVm4uc29ydGVkTGFzdEluZGV4PWZ1bmN0aW9uIENoKHQsZSl7cmV0dXJuIEFyKHQsZSwhMCl9LFZuLnNvcnRlZExhc3RJbmRleEJ5PWZ1bmN0aW9uIEFoKHQsZSxuKXtyZXR1cm4ga3IodCxlLE5vKG4sMiksITApfSxWbi5zb3J0ZWRMYXN0SW5kZXhPZj1mdW5jdGlvbiBraCh0LGUpe2lmKG51bGwhPXQmJnQubGVuZ3RoKXt2YXIgbj1Bcih0LGUsITApLTE7aWYoaHModFtuXSxlKSlyZXR1cm4gbn1yZXR1cm4tMX0sVm4uc3RhcnRDYXNlPUVsLFZuLnN0YXJ0c1dpdGg9ZnVuY3Rpb24gTGgodCxlLG4pe3JldHVybiB0PSRzKHQpLG49bnVsbD09bj8wOmxpKFdzKG4pLDAsdC5sZW5ndGgpLGU9TnIoZSksdC5zbGljZShuLG4rZS5sZW5ndGgpPT1lfSxWbi5zdWJ0cmFjdD1lYyxWbi5zdW09ZnVuY3Rpb24gUGgodCl7cmV0dXJuIHQmJnQubGVuZ3RoP1llKHQsUmwpOjB9LFZuLnN1bUJ5PWZ1bmN0aW9uIE5oKHQsZSl7cmV0dXJuIHQmJnQubGVuZ3RoP1llKHQsTm8oZSwyKSk6MH0sVm4udGVtcGxhdGU9ZnVuY3Rpb24gSWgoZSxuLGkpe3ZhciByPVZuLnRlbXBsYXRlU2V0dGluZ3M7aSYmam8oZSxuLGkpJiYobj10KSxlPSRzKGUpLG49SnMoe30sbixyLHdvKTt2YXIgbyxhLHM9SnMoe30sbi5pbXBvcnRzLHIuaW1wb3J0cyx3byksbD1sbChzKSxjPVplKHMsbCksdT0wLGg9bi5pbnRlcnBvbGF0ZXx8eXQsZD0iX19wICs9ICciLHA9QXQoKG4uZXNjYXBlfHx5dCkuc291cmNlKyJ8IitoLnNvdXJjZSsifCIrKGg9PT1LP3V0Onl0KS5zb3VyY2UrInwiKyhuLmV2YWx1YXRlfHx5dCkuc291cmNlKyJ8JCIsImciKSxmPSIvLyMgc291cmNlVVJMPSIrKE90LmNhbGwobiwic291cmNlVVJMIik/KG4uc291cmNlVVJMKyIiKS5yZXBsYWNlKC9ccy9nLCIgIik6ImxvZGFzaC50ZW1wbGF0ZVNvdXJjZXNbIisgKytlZSsiXSIpKyJcbiI7ZS5yZXBsYWNlKHAsKGZ1bmN0aW9uKHQsbixpLHIscyxsKXtyZXR1cm4gaXx8KGk9ciksZCs9ZS5zbGljZSh1LGwpLnJlcGxhY2UodnQsb24pLG4mJihvPSEwLGQrPSInICtcbl9fZSgiK24rIikgK1xuJyIpLHMmJihhPSEwLGQrPSInO1xuIitzKyI7XG5fX3AgKz0gJyIpLGkmJihkKz0iJyArXG4oKF9fdCA9ICgiK2krIikpID09IG51bGwgPyAnJyA6IF9fdCkgK1xuJyIpLHU9bCt0Lmxlbmd0aCx0fSkpLGQrPSInO1xuIjt2YXIgbT1PdC5jYWxsKG4sInZhcmlhYmxlIikmJm4udmFyaWFibGU7aWYobSl7aWYobHQudGVzdChtKSl0aHJvdyBuZXcgTXQoIkludmFsaWQgYHZhcmlhYmxlYCBvcHRpb24gcGFzc2VkIGludG8gYF8udGVtcGxhdGVgIil9ZWxzZSBkPSJ3aXRoIChvYmopIHtcbiIrZCsiXG59XG4iO2Q9KGE/ZC5yZXBsYWNlKFYsIiIpOmQpLnJlcGxhY2UoVSwiJDEiKS5yZXBsYWNlKGosIiQxOyIpLGQ9ImZ1bmN0aW9uKCIrKG18fCJvYmoiKSsiKSB7XG4iKyhtPyIiOiJvYmogfHwgKG9iaiA9IHt9KTtcbiIpKyJ2YXIgX190LCBfX3AgPSAnJyIrKG8/IiwgX19lID0gXy5lc2NhcGUiOiIiKSsoYT8iLCBfX2ogPSBBcnJheS5wcm90b3R5cGUuam9pbjtcbmZ1bmN0aW9uIHByaW50KCkgeyBfX3AgKz0gX19qLmNhbGwoYXJndW1lbnRzLCAnJykgfVxuIjoiO1xuIikrZCsicmV0dXJuIF9fcFxufSI7dmFyIGc9a2woKGZ1bmN0aW9uKCl7cmV0dXJuIEV0KGwsZisicmV0dXJuICIrZCkuYXBwbHkodCxjKX0pKTtpZihnLnNvdXJjZT1kLFNzKGcpKXRocm93IGc7cmV0dXJuIGd9LFZuLnRpbWVzPWZ1bmN0aW9uIFJoKHQsZSl7aWYoKHQ9V3ModCkpPDF8fHQ+dSlyZXR1cm5bXTt2YXIgbj1kLGk9Ym4odCxkKTtlPU5vKGUpLHQtPWQ7Zm9yKHZhciByPVhlKGksZSk7KytuPHQ7KWUobik7cmV0dXJuIHJ9LFZuLnRvRmluaXRlPUdzLFZuLnRvSW50ZWdlcj1XcyxWbi50b0xlbmd0aD1xcyxWbi50b0xvd2VyPWZ1bmN0aW9uIE9oKHQpe3JldHVybiAkcyh0KS50b0xvd2VyQ2FzZSgpfSxWbi50b051bWJlcj1ZcyxWbi50b1NhZmVJbnRlZ2VyPWZ1bmN0aW9uIHpoKHQpe3JldHVybiB0P2xpKFdzKHQpLC05MDA3MTk5MjU0NzQwOTkxLHUpOjA9PT10P3Q6MH0sVm4udG9TdHJpbmc9JHMsVm4udG9VcHBlcj1mdW5jdGlvbiBEaCh0KXtyZXR1cm4gJHModCkudG9VcHBlckNhc2UoKX0sVm4udHJpbT1mdW5jdGlvbiBCaChlLG4saSl7aWYoKGU9JHMoZSkpJiYoaXx8bj09PXQpKXJldHVybiAkZShlKTtpZighZXx8IShuPU5yKG4pKSlyZXR1cm4gZTt2YXIgcj1wbihlKSxvPXBuKG4pO3JldHVybiBHcihyLFFlKHIsbyksdG4ocixvKSsxKS5qb2luKCIiKX0sVm4udHJpbUVuZD1mdW5jdGlvbiBIaChlLG4saSl7aWYoKGU9JHMoZSkpJiYoaXx8bj09PXQpKXJldHVybiBlLnNsaWNlKDAsZm4oZSkrMSk7aWYoIWV8fCEobj1OcihuKSkpcmV0dXJuIGU7dmFyIHI9cG4oZSk7cmV0dXJuIEdyKHIsMCx0bihyLHBuKG4pKSsxKS5qb2luKCIiKX0sVm4udHJpbVN0YXJ0PWZ1bmN0aW9uIEZoKGUsbixpKXtpZigoZT0kcyhlKSkmJihpfHxuPT09dCkpcmV0dXJuIGUucmVwbGFjZShudCwiIik7aWYoIWV8fCEobj1OcihuKSkpcmV0dXJuIGU7dmFyIHI9cG4oZSk7cmV0dXJuIEdyKHIsUWUocixwbihuKSkpLmpvaW4oIiIpfSxWbi50cnVuY2F0ZT1mdW5jdGlvbiBWaChlLG4pe3ZhciBpPTMwLHI9Ii4uLiI7aWYoQ3Mobikpe3ZhciBvPSJzZXBhcmF0b3IiaW4gbj9uLnNlcGFyYXRvcjpvO2k9Imxlbmd0aCJpbiBuP1dzKG4ubGVuZ3RoKTppLHI9Im9taXNzaW9uImluIG4/TnIobi5vbWlzc2lvbik6cn12YXIgYT0oZT0kcyhlKSkubGVuZ3RoO2lmKGFuKGUpKXt2YXIgcz1wbihlKTthPXMubGVuZ3RofWlmKGk+PWEpcmV0dXJuIGU7dmFyIGw9aS1kbihyKTtpZihsPDEpcmV0dXJuIHI7dmFyIGM9cz9HcihzLDAsbCkuam9pbigiIik6ZS5zbGljZSgwLGwpO2lmKG89PT10KXJldHVybiBjK3I7aWYocyYmKGwrPWMubGVuZ3RoLWwpLElzKG8pKXtpZihlLnNsaWNlKGwpLnNlYXJjaChvKSl7dmFyIHUsaD1jO2ZvcihvLmdsb2JhbHx8KG89QXQoby5zb3VyY2UsJHMoaHQuZXhlYyhvKSkrImciKSksby5sYXN0SW5kZXg9MDt1PW8uZXhlYyhoKTspdmFyIGQ9dS5pbmRleDtjPWMuc2xpY2UoMCxkPT09dD9sOmQpfX1lbHNlIGlmKGUuaW5kZXhPZihOcihvKSxsKSE9bCl7dmFyIHA9Yy5sYXN0SW5kZXhPZihvKTtwPi0xJiYoYz1jLnNsaWNlKDAscCkpfXJldHVybiBjK3J9LFZuLnVuZXNjYXBlPWZ1bmN0aW9uIFVoKHQpe3JldHVybih0PSRzKHQpKSYmcS50ZXN0KHQpP3QucmVwbGFjZShHLG1uKTp0fSxWbi51bmlxdWVJZD1mdW5jdGlvbiBqaCh0KXt2YXIgZT0rK3p0O3JldHVybiAkcyh0KStlfSxWbi51cHBlckNhc2U9VGwsVm4udXBwZXJGaXJzdD1DbCxWbi5lYWNoPWphLFZuLmVhY2hSaWdodD1HYSxWbi5maXJzdD1fYSxCbChWbiwoWGw9e30samkoVm4sKGZ1bmN0aW9uKHQsZSl7T3QuY2FsbChWbi5wcm90b3R5cGUsZSl8fChYbFtlXT10KX0pKSxYbCkse2NoYWluOiExfSksVm4uVkVSU0lPTj0iNC4xNy4yMSIsTWUoWyJiaW5kIiwiYmluZEtleSIsImN1cnJ5IiwiY3VycnlSaWdodCIsInBhcnRpYWwiLCJwYXJ0aWFsUmlnaHQiXSwoZnVuY3Rpb24odCl7Vm5bdF0ucGxhY2Vob2xkZXI9Vm59KSksTWUoWyJkcm9wIiwidGFrZSJdLChmdW5jdGlvbihlLG4pe1duLnByb3RvdHlwZVtlXT1mdW5jdGlvbihpKXtpPWk9PT10PzE6dm4oV3MoaSksMCk7dmFyIHI9dGhpcy5fX2ZpbHRlcmVkX18mJiFuP25ldyBXbih0aGlzKTp0aGlzLmNsb25lKCk7cmV0dXJuIHIuX19maWx0ZXJlZF9fP3IuX190YWtlQ291bnRfXz1ibihpLHIuX190YWtlQ291bnRfXyk6ci5fX3ZpZXdzX18ucHVzaCh7c2l6ZTpibihpLGQpLHR5cGU6ZSsoci5fX2Rpcl9fPDA/IlJpZ2h0IjoiIil9KSxyfSxXbi5wcm90b3R5cGVbZSsiUmlnaHQiXT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5yZXZlcnNlKClbZV0odCkucmV2ZXJzZSgpfX0pKSxNZShbImZpbHRlciIsIm1hcCIsInRha2VXaGlsZSJdLChmdW5jdGlvbih0LGUpe3ZhciBuPWUrMSxpPTE9PW58fDM9PW47V24ucHJvdG90eXBlW3RdPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuY2xvbmUoKTtyZXR1cm4gZS5fX2l0ZXJhdGVlc19fLnB1c2goe2l0ZXJhdGVlOk5vKHQsMyksdHlwZTpufSksZS5fX2ZpbHRlcmVkX189ZS5fX2ZpbHRlcmVkX198fGksZX19KSksTWUoWyJoZWFkIiwibGFzdCJdLChmdW5jdGlvbih0LGUpe3ZhciBuPSJ0YWtlIisoZT8iUmlnaHQiOiIiKTtXbi5wcm90b3R5cGVbdF09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc1tuXSgxKS52YWx1ZSgpWzBdfX0pKSxNZShbImluaXRpYWwiLCJ0YWlsIl0sKGZ1bmN0aW9uKHQsZSl7dmFyIG49ImRyb3AiKyhlPyIiOiJSaWdodCIpO1duLnByb3RvdHlwZVt0XT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9fZmlsdGVyZWRfXz9uZXcgV24odGhpcyk6dGhpc1tuXSgxKX19KSksV24ucHJvdG90eXBlLmNvbXBhY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5maWx0ZXIoUmwpfSxXbi5wcm90b3R5cGUuZmluZD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5maWx0ZXIodCkuaGVhZCgpfSxXbi5wcm90b3R5cGUuZmluZExhc3Q9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucmV2ZXJzZSgpLmZpbmQodCl9LFduLnByb3RvdHlwZS5pbnZva2VNYXA9dnIoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQ/bmV3IFduKHRoaXMpOnRoaXMubWFwKChmdW5jdGlvbihuKXtyZXR1cm4gUWkobix0LGUpfSkpfSkpLFduLnByb3RvdHlwZS5yZWplY3Q9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZmlsdGVyKGFzKE5vKHQpKSl9LFduLnByb3RvdHlwZS5zbGljZT1mdW5jdGlvbihlLG4pe2U9V3MoZSk7dmFyIGk9dGhpcztyZXR1cm4gaS5fX2ZpbHRlcmVkX18mJihlPjB8fG48MCk/bmV3IFduKGkpOihlPDA/aT1pLnRha2VSaWdodCgtZSk6ZSYmKGk9aS5kcm9wKGUpKSxuIT09dCYmKGk9KG49V3MobikpPDA/aS5kcm9wUmlnaHQoLW4pOmkudGFrZShuLWUpKSxpKX0sV24ucHJvdG90eXBlLnRha2VSaWdodFdoaWxlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnJldmVyc2UoKS50YWtlV2hpbGUodCkucmV2ZXJzZSgpfSxXbi5wcm90b3R5cGUudG9BcnJheT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRha2UoZCl9LGppKFduLnByb3RvdHlwZSwoZnVuY3Rpb24oZSxuKXt2YXIgaT0vXig/OmZpbHRlcnxmaW5kfG1hcHxyZWplY3QpfFdoaWxlJC8udGVzdChuKSxyPS9eKD86aGVhZHxsYXN0KSQvLnRlc3Qobiksbz1WbltyPyJ0YWtlIisoImxhc3QiPT1uPyJSaWdodCI6IiIpOm5dLGE9cnx8L15maW5kLy50ZXN0KG4pO28mJihWbi5wcm90b3R5cGVbbl09ZnVuY3Rpb24oKXt2YXIgbj10aGlzLl9fd3JhcHBlZF9fLHM9cj9bMV06YXJndW1lbnRzLGw9biBpbnN0YW5jZW9mIFduLGM9c1swXSx1PWx8fG1zKG4pLGg9ZnVuY3Rpb24odCl7dmFyIGU9by5hcHBseShWbixJZShbdF0scykpO3JldHVybiByJiZkP2VbMF06ZX07dSYmaSYmImZ1bmN0aW9uIj09dHlwZW9mIGMmJjEhPWMubGVuZ3RoJiYobD11PSExKTt2YXIgZD10aGlzLl9fY2hhaW5fXyxwPSEhdGhpcy5fX2FjdGlvbnNfXy5sZW5ndGgsZj1hJiYhZCxtPWwmJiFwO2lmKCFhJiZ1KXtuPW0/bjpuZXcgV24odGhpcyk7dmFyIGc9ZS5hcHBseShuLHMpO3JldHVybiBnLl9fYWN0aW9uc19fLnB1c2goe2Z1bmM6QmEsYXJnczpbaF0sdGhpc0FyZzp0fSksbmV3IEduKGcsZCl9cmV0dXJuIGYmJm0/ZS5hcHBseSh0aGlzLHMpOihnPXRoaXMudGhydShoKSxmP3I/Zy52YWx1ZSgpWzBdOmcudmFsdWUoKTpnKX0pfSkpLE1lKFsicG9wIiwicHVzaCIsInNoaWZ0Iiwic29ydCIsInNwbGljZSIsInVuc2hpZnQiXSwoZnVuY3Rpb24odCl7dmFyIGU9UHRbdF0sbj0vXig/OnB1c2h8c29ydHx1bnNoaWZ0KSQvLnRlc3QodCk/InRhcCI6InRocnUiLGk9L14oPzpwb3B8c2hpZnQpJC8udGVzdCh0KTtWbi5wcm90b3R5cGVbdF09ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHM7aWYoaSYmIXRoaXMuX19jaGFpbl9fKXt2YXIgcj10aGlzLnZhbHVlKCk7cmV0dXJuIGUuYXBwbHkobXMocik/cjpbXSx0KX1yZXR1cm4gdGhpc1tuXSgoZnVuY3Rpb24obil7cmV0dXJuIGUuYXBwbHkobXMobik/bjpbXSx0KX0pKX19KSksamkoV24ucHJvdG90eXBlLChmdW5jdGlvbih0LGUpe3ZhciBuPVZuW2VdO2lmKG4pe3ZhciBpPW4ubmFtZSsiIjtPdC5jYWxsKE5uLGkpfHwoTm5baV09W10pLE5uW2ldLnB1c2goe25hbWU6ZSxmdW5jOm59KX19KSksTm5bY28odCwyKS5uYW1lXT1be25hbWU6IndyYXBwZXIiLGZ1bmM6dH1dLFduLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbiBHaCgpe3ZhciB0PW5ldyBXbih0aGlzLl9fd3JhcHBlZF9fKTtyZXR1cm4gdC5fX2FjdGlvbnNfXz1Kcih0aGlzLl9fYWN0aW9uc19fKSx0Ll9fZGlyX189dGhpcy5fX2Rpcl9fLHQuX19maWx0ZXJlZF9fPXRoaXMuX19maWx0ZXJlZF9fLHQuX19pdGVyYXRlZXNfXz1Kcih0aGlzLl9faXRlcmF0ZWVzX18pLHQuX190YWtlQ291bnRfXz10aGlzLl9fdGFrZUNvdW50X18sdC5fX3ZpZXdzX189SnIodGhpcy5fX3ZpZXdzX18pLHR9LFduLnByb3RvdHlwZS5yZXZlcnNlPWZ1bmN0aW9uIFdoKCl7aWYodGhpcy5fX2ZpbHRlcmVkX18pe3ZhciB0PW5ldyBXbih0aGlzKTt0Ll9fZGlyX189LTEsdC5fX2ZpbHRlcmVkX189ITB9ZWxzZSh0PXRoaXMuY2xvbmUoKSkuX19kaXJfXyo9LTE7cmV0dXJuIHR9LFduLnByb3RvdHlwZS52YWx1ZT1mdW5jdGlvbiBxaCgpe3ZhciB0PXRoaXMuX193cmFwcGVkX18udmFsdWUoKSxlPXRoaXMuX19kaXJfXyxuPW1zKHQpLGk9ZTwwLHI9bj90Lmxlbmd0aDowLG89KGZ1bmN0aW9uIGEodCxlLG4pe2Zvcih2YXIgaT0tMSxyPW4ubGVuZ3RoOysraTxyOyl7dmFyIG89bltpXSxhPW8uc2l6ZTtzd2l0Y2goby50eXBlKXtjYXNlImRyb3AiOnQrPWE7YnJlYWs7Y2FzZSJkcm9wUmlnaHQiOmUtPWE7YnJlYWs7Y2FzZSJ0YWtlIjplPWJuKGUsdCthKTticmVhaztjYXNlInRha2VSaWdodCI6dD12bih0LGUtYSl9fXJldHVybntzdGFydDp0LGVuZDplfX0pKDAscix0aGlzLl9fdmlld3NfXykscz1vLnN0YXJ0LGw9by5lbmQsYz1sLXMsdT1pP2w6cy0xLGg9dGhpcy5fX2l0ZXJhdGVlc19fLGQ9aC5sZW5ndGgscD0wLGY9Ym4oYyx0aGlzLl9fdGFrZUNvdW50X18pO2lmKCFufHwhaSYmcj09YyYmZj09YylyZXR1cm4gRHIodCx0aGlzLl9fYWN0aW9uc19fKTt2YXIgbT1bXTt0OmZvcig7Yy0tJiZwPGY7KXtmb3IodmFyIGc9LTEsXz10W3UrPWVdOysrZzxkOyl7dmFyIHk9aFtnXSx2PXkudHlwZSxiPSgwLHkuaXRlcmF0ZWUpKF8pO2lmKDI9PXYpXz1iO2Vsc2UgaWYoIWIpe2lmKDE9PXYpY29udGludWUgdDticmVhayB0fX1tW3ArK109X31yZXR1cm4gbX0sVm4ucHJvdG90eXBlLmF0PUhhLFZuLnByb3RvdHlwZS5jaGFpbj1mdW5jdGlvbiBZaCgpe3JldHVybiBEYSh0aGlzKX0sVm4ucHJvdG90eXBlLmNvbW1pdD1mdW5jdGlvbiBYaCgpe3JldHVybiBuZXcgR24odGhpcy52YWx1ZSgpLHRoaXMuX19jaGFpbl9fKX0sVm4ucHJvdG90eXBlLm5leHQ9ZnVuY3Rpb24gJGgoKXt0aGlzLl9fdmFsdWVzX189PT10JiYodGhpcy5fX3ZhbHVlc19fPWpzKHRoaXMudmFsdWUoKSkpO3ZhciBlPXRoaXMuX19pbmRleF9fPj10aGlzLl9fdmFsdWVzX18ubGVuZ3RoO3JldHVybntkb25lOmUsdmFsdWU6ZT90OnRoaXMuX192YWx1ZXNfX1t0aGlzLl9faW5kZXhfXysrXX19LFZuLnByb3RvdHlwZS5wbGFudD1mdW5jdGlvbiBLaChlKXtmb3IodmFyIG4saT10aGlzO2kgaW5zdGFuY2VvZiBqbjspe3ZhciByPXVhKGkpO3IuX19pbmRleF9fPTAsci5fX3ZhbHVlc19fPXQsbj9vLl9fd3JhcHBlZF9fPXI6bj1yO3ZhciBvPXI7aT1pLl9fd3JhcHBlZF9ffXJldHVybiBvLl9fd3JhcHBlZF9fPWUsbn0sVm4ucHJvdG90eXBlLnJldmVyc2U9ZnVuY3Rpb24gWmgoKXt2YXIgZT10aGlzLl9fd3JhcHBlZF9fO2lmKGUgaW5zdGFuY2VvZiBXbil7dmFyIG49ZTtyZXR1cm4gdGhpcy5fX2FjdGlvbnNfXy5sZW5ndGgmJihuPW5ldyBXbih0aGlzKSksKG49bi5yZXZlcnNlKCkpLl9fYWN0aW9uc19fLnB1c2goe2Z1bmM6QmEsYXJnczpbRWFdLHRoaXNBcmc6dH0pLG5ldyBHbihuLHRoaXMuX19jaGFpbl9fKX1yZXR1cm4gdGhpcy50aHJ1KEVhKX0sVm4ucHJvdG90eXBlLnRvSlNPTj1Wbi5wcm90b3R5cGUudmFsdWVPZj1Wbi5wcm90b3R5cGUudmFsdWU9ZnVuY3Rpb24gSmgoKXtyZXR1cm4gRHIodGhpcy5fX3dyYXBwZWRfXyx0aGlzLl9fYWN0aW9uc19fKX0sVm4ucHJvdG90eXBlLmZpcnN0PVZuLnByb3RvdHlwZS5oZWFkLHNlJiYoVm4ucHJvdG90eXBlW3NlXT1mdW5jdGlvbiBRaCgpe3JldHVybiB0aGlzfSksVm59KSgpO2hlPygoaGUuZXhwb3J0cz1nbikuXz1nbix1ZS5fPWduKTpjZS5fPWdufS5jYWxsKFNlKTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KY29uc3QgQWU9ISh3aW5kb3cuU2hhZHlET00mJndpbmRvdy5TaGFkeURPTS5pblVzZSk7bGV0IGtlLExlO2Z1bmN0aW9uIFBlKHQpe2tlPSghdHx8IXQuc2hpbWNzc3Byb3BlcnRpZXMpJiYoQWV8fEJvb2xlYW4oIW5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL0FwcGxlV2ViS2l0XC82MDF8RWRnZVwvMTUvKSYmd2luZG93LkNTUyYmQ1NTLnN1cHBvcnRzJiZDU1Muc3VwcG9ydHMoImJveC1zaGFkb3ciLCIwIDAgMCB2YXIoLS1mb28pIikpKX13aW5kb3cuU2hhZHlDU1MmJnZvaWQgMCE9PXdpbmRvdy5TaGFkeUNTUy5jc3NCdWlsZCYmKExlPXdpbmRvdy5TaGFkeUNTUy5jc3NCdWlsZCk7Y29uc3QgTmU9Qm9vbGVhbih3aW5kb3cuU2hhZHlDU1MmJndpbmRvdy5TaGFkeUNTUy5kaXNhYmxlUnVudGltZSk7d2luZG93LlNoYWR5Q1NTJiZ2b2lkIDAhPT13aW5kb3cuU2hhZHlDU1MubmF0aXZlQ3NzP2tlPXdpbmRvdy5TaGFkeUNTUy5uYXRpdmVDc3M6d2luZG93LlNoYWR5Q1NTPyhQZSh3aW5kb3cuU2hhZHlDU1MpLHdpbmRvdy5TaGFkeUNTUz12b2lkIDApOlBlKHdpbmRvdy5XZWJDb21wb25lbnRzJiZ3aW5kb3cuV2ViQ29tcG9uZW50cy5mbGFncyk7Y29uc3QgSWU9a2U7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovY2xhc3MgUmV7Y29uc3RydWN0b3IoKXt0aGlzLnN0YXJ0PTAsdGhpcy5lbmQ9MCx0aGlzLnByZXZpb3VzPW51bGwsdGhpcy5wYXJlbnQ9bnVsbCx0aGlzLnJ1bGVzPW51bGwsdGhpcy5wYXJzZWRDc3NUZXh0PSIiLHRoaXMuY3NzVGV4dD0iIix0aGlzLmF0UnVsZT0hMSx0aGlzLnR5cGU9MCx0aGlzLmtleWZyYW1lc05hbWU9IiIsdGhpcy5zZWxlY3Rvcj0iIix0aGlzLnBhcnNlZFNlbGVjdG9yPSIifX1mdW5jdGlvbiBPZSh0KXtyZXR1cm4gemUoKGZ1bmN0aW9uIG4odCl7bGV0IGU9bmV3IFJlO2Uuc3RhcnQ9MCxlLmVuZD10Lmxlbmd0aDtsZXQgbj1lO2ZvcihsZXQgaT0wLHI9dC5sZW5ndGg7aTxyO2krKylpZih0W2ldPT09SGUpe24ucnVsZXN8fChuLnJ1bGVzPVtdKTtsZXQgdD1uLGU9dC5ydWxlc1t0LnJ1bGVzLmxlbmd0aC0xXXx8bnVsbDtuPW5ldyBSZSxuLnN0YXJ0PWkrMSxuLnBhcmVudD10LG4ucHJldmlvdXM9ZSx0LnJ1bGVzLnB1c2gobil9ZWxzZSB0W2ldPT09RmUmJihuLmVuZD1pKzEsbj1uLnBhcmVudHx8ZSk7cmV0dXJuIGV9KSh0PShmdW5jdGlvbiBlKHQpe3JldHVybiB0LnJlcGxhY2UoVmUuY29tbWVudHMsIiIpLnJlcGxhY2UoVmUucG9ydCwiIil9KSh0KSksdCl9ZnVuY3Rpb24gemUodCxlKXtsZXQgbj1lLnN1YnN0cmluZyh0LnN0YXJ0LHQuZW5kLTEpO2lmKHQucGFyc2VkQ3NzVGV4dD10LmNzc1RleHQ9bi50cmltKCksdC5wYXJlbnQpe249ZS5zdWJzdHJpbmcodC5wcmV2aW91cz90LnByZXZpb3VzLmVuZDp0LnBhcmVudC5zdGFydCx0LnN0YXJ0LTEpLG49KGZ1bmN0aW9uIGkodCl7cmV0dXJuIHQucmVwbGFjZSgvXFwoWzAtOWEtZl17MSw2fSlccy9naSwoZnVuY3Rpb24oKXtsZXQgdD1hcmd1bWVudHNbMV0sZT02LXQubGVuZ3RoO2Zvcig7ZS0tOyl0PSIwIit0O3JldHVybiJcXCIrdH0pKX0pKG4pLG49bi5yZXBsYWNlKFZlLm11bHRpcGxlU3BhY2VzLCIgIiksbj1uLnN1YnN0cmluZyhuLmxhc3RJbmRleE9mKCI7IikrMSk7bGV0IGk9dC5wYXJzZWRTZWxlY3Rvcj10LnNlbGVjdG9yPW4udHJpbSgpO3QuYXRSdWxlPTA9PT1pLmluZGV4T2YoR2UpLHQuYXRSdWxlPzA9PT1pLmluZGV4T2YoamUpP3QudHlwZT1CZS5NRURJQV9SVUxFOmkubWF0Y2goVmUua2V5ZnJhbWVzUnVsZSkmJih0LnR5cGU9QmUuS0VZRlJBTUVTX1JVTEUsdC5rZXlmcmFtZXNOYW1lPXQuc2VsZWN0b3Iuc3BsaXQoVmUubXVsdGlwbGVTcGFjZXMpLnBvcCgpKTp0LnR5cGU9MD09PWkuaW5kZXhPZihVZSk/QmUuTUlYSU5fUlVMRTpCZS5TVFlMRV9SVUxFfWxldCByPXQucnVsZXM7aWYocilmb3IobGV0IHQsbj0wLGk9ci5sZW5ndGg7bjxpJiYodD1yW25dKTtuKyspemUodCxlKTtyZXR1cm4gdH1mdW5jdGlvbiBEZSh0LGUsbj0iIil7bGV0IGk9IiI7aWYodC5jc3NUZXh0fHx0LnJ1bGVzKXtsZXQgbj10LnJ1bGVzO2lmKG4mJiEoZnVuY3Rpb24gcih0KXtsZXQgZT10WzBdO3JldHVybiBCb29sZWFuKGUpJiZCb29sZWFuKGUuc2VsZWN0b3IpJiYwPT09ZS5zZWxlY3Rvci5pbmRleE9mKFVlKX0pKG4pKWZvcihsZXQgdCxyPTAsbz1uLmxlbmd0aDtyPG8mJih0PW5bcl0pO3IrKylpPURlKHQsZSxpKTtlbHNlIGk9ZT90LmNzc1RleHQ6KGZ1bmN0aW9uIG8odCl7cmV0dXJuKGZ1bmN0aW9uIG4odCl7cmV0dXJuIHQucmVwbGFjZShWZS5taXhpbkFwcGx5LCIiKS5yZXBsYWNlKFZlLnZhckFwcGx5LCIiKX0pKHQ9KGZ1bmN0aW9uIGUodCl7cmV0dXJuIHQucmVwbGFjZShWZS5jdXN0b21Qcm9wLCIiKS5yZXBsYWNlKFZlLm1peGluUHJvcCwiIil9KSh0KSl9KSh0LmNzc1RleHQpLGk9aS50cmltKCksaSYmKGk9IiAgIitpKyJcbiIpfXJldHVybiBpJiYodC5zZWxlY3RvciYmKG4rPXQuc2VsZWN0b3IrIiAiK0hlKyJcbiIpLG4rPWksdC5zZWxlY3RvciYmKG4rPUZlKyJcblxuIikpLG59Y29uc3QgQmU9e1NUWUxFX1JVTEU6MSxLRVlGUkFNRVNfUlVMRTo3LE1FRElBX1JVTEU6NCxNSVhJTl9SVUxFOjFlM30sSGU9InsiLEZlPSJ9IixWZT17Y29tbWVudHM6L1wvXCpbXipdKlwqKyhbXi8qXVteKl0qXCorKSpcLy9naW0scG9ydDovQGltcG9ydFteO10qOy9naW0sY3VzdG9tUHJvcDovKD86XlteO1wtXHN9XSspPy0tW147e31dKj86W157fTtdKj8oPzpbO1xuXXwkKS9naW0sbWl4aW5Qcm9wOi8oPzpeW147XC1cc31dKyk/LS1bXjt7fV0qPzpbXnt9O10qP3tbXn1dKj99KD86Wztcbl18JCk/L2dpbSxtaXhpbkFwcGx5Oi9AYXBwbHlccypcKD9bXik7XSpcKT9ccyooPzpbO1xuXXwkKT8vZ2ltLHZhckFwcGx5Oi9bXjs6XSo/OlteO10qP3ZhclwoW147XSpcKSg/Ols7XG5dfCQpPy9naW0sa2V5ZnJhbWVzUnVsZTovXkBbXlxzXSprZXlmcmFtZXMvLG11bHRpcGxlU3BhY2VzOi9ccysvZ30sVWU9Ii0tIixqZT0iQG1lZGlhIixHZT0iQCIsV2U9Lyg/Ol58Wztcc3tdXHMqKSgtLVtcdy1dKj8pXHMqOlxzKig/OigoPzonKD86XFwnfC4pKj8nfCIoPzpcXCJ8LikqPyJ8XChbXildKj9cKXxbXn07e10pKyl8XHsoW159XSopXH0oPzooPz1bO1xzfV0pfCQpKS9naSxxZT0vKD86XnxcVyspQGFwcGx5XHMqXCg/KFteKTtcbl0qKVwpPy9naSxZZT0vQG1lZGlhXHMoLiopLyxYZT1uZXcgU2V0O2Z1bmN0aW9uICRlKHQpe2NvbnN0IGU9dC50ZXh0Q29udGVudDtpZighWGUuaGFzKGUpKXtYZS5hZGQoZSk7Y29uc3QgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO3Quc2V0QXR0cmlidXRlKCJzaGFkeS11bnNjb3BlZCIsIiIpLHQudGV4dENvbnRlbnQ9ZSxkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHQpfX1mdW5jdGlvbiBLZSh0KXtyZXR1cm4gdC5oYXNBdHRyaWJ1dGUoInNoYWR5LXVuc2NvcGVkIil9Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovZnVuY3Rpb24gWmUodCxlKXtyZXR1cm4gdD8oInN0cmluZyI9PXR5cGVvZiB0JiYodD1PZSh0KSksZSYmUWUodCxlKSxEZSh0LEllKSk6IiJ9ZnVuY3Rpb24gSmUodCl7cmV0dXJuIXQuX19jc3NSdWxlcyYmdC50ZXh0Q29udGVudCYmKHQuX19jc3NSdWxlcz1PZSh0LnRleHRDb250ZW50KSksdC5fX2Nzc1J1bGVzfHxudWxsfWZ1bmN0aW9uIFFlKHQsZSxuLGkpe2lmKCF0KXJldHVybjtsZXQgcj0hMSxvPXQudHlwZTtpZihpJiZvPT09QmUuTUVESUFfUlVMRSl7bGV0IGU9dC5zZWxlY3Rvci5tYXRjaChZZSk7ZSYmKHdpbmRvdy5tYXRjaE1lZGlhKGVbMV0pLm1hdGNoZXN8fChyPSEwKSl9bz09PUJlLlNUWUxFX1JVTEU/ZSh0KTpuJiZvPT09QmUuS0VZRlJBTUVTX1JVTEU/bih0KTpvPT09QmUuTUlYSU5fUlVMRSYmKHI9ITApO2xldCBhPXQucnVsZXM7aWYoYSYmIXIpZm9yKGxldCB0LHI9MCxvPWEubGVuZ3RoO3I8byYmKHQ9YVtyXSk7cisrKVFlKHQsZSxuLGkpfWZ1bmN0aW9uIHRuKHQsZSl7bGV0IG49dC5pbmRleE9mKCJ2YXIoIik7aWYoLTE9PT1uKXJldHVybiBlKHQsIiIsIiIsIiIpO2xldCBpPShmdW5jdGlvbiByKHQsZSl7bGV0IG49MDtmb3IobGV0IGk9ZSxyPXQubGVuZ3RoO2k8cjtpKyspaWYoIigiPT09dFtpXSluKys7ZWxzZSBpZigiKSI9PT10W2ldJiYwPT0tLW4pcmV0dXJuIGk7cmV0dXJuLTF9KSh0LG4rMyksbz10LnN1YnN0cmluZyhuKzQsaSksYT10LnN1YnN0cmluZygwLG4pLHM9dG4odC5zdWJzdHJpbmcoaSsxKSxlKSxsPW8uaW5kZXhPZigiLCIpO3JldHVybi0xPT09bD9lKGEsby50cmltKCksIiIscyk6ZShhLG8uc3Vic3RyaW5nKDAsbCkudHJpbSgpLG8uc3Vic3RyaW5nKGwrMSkudHJpbSgpLHMpfXdpbmRvdy5TaGFkeURPTSYmd2luZG93O2NvbnN0IGVuPSJjc3MtYnVpbGQiO2Z1bmN0aW9uIG5uKHQpe2lmKHZvaWQgMCE9PUxlKXJldHVybiBMZTtpZih2b2lkIDA9PT10Ll9fY3NzQnVpbGQpe2NvbnN0IGU9dC5nZXRBdHRyaWJ1dGUoZW4pO2lmKGUpdC5fX2Nzc0J1aWxkPWU7ZWxzZXtjb25zdCBlPShmdW5jdGlvbiBlKHQpe2NvbnN0IGU9InRlbXBsYXRlIj09PXQubG9jYWxOYW1lP3QuY29udGVudC5maXJzdENoaWxkOnQuZmlyc3RDaGlsZDtpZihlIGluc3RhbmNlb2YgQ29tbWVudCl7Y29uc3QgdD1lLnRleHRDb250ZW50LnRyaW0oKS5zcGxpdCgiOiIpO2lmKHRbMF09PT1lbilyZXR1cm4gdFsxXX1yZXR1cm4iIn0pKHQpOyIiIT09ZSYmKGZ1bmN0aW9uIG4odCl7Y29uc3QgZT0idGVtcGxhdGUiPT09dC5sb2NhbE5hbWU/dC5jb250ZW50LmZpcnN0Q2hpbGQ6dC5maXJzdENoaWxkO2UucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlKX0KLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8pKHQpLHQuX19jc3NCdWlsZD1lfX1yZXR1cm4gdC5fX2Nzc0J1aWxkfHwiIn1mdW5jdGlvbiBybih0KXtyZXR1cm4iIiE9PW5uKHQpfWZ1bmN0aW9uIG9uKHQsZSl7Zm9yKGxldCBuIGluIGUpbnVsbD09PW4/dC5zdHlsZS5yZW1vdmVQcm9wZXJ0eShuKTp0LnN0eWxlLnNldFByb3BlcnR5KG4sZVtuXSl9ZnVuY3Rpb24gYW4odCxlKXtjb25zdCBuPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHQpLmdldFByb3BlcnR5VmFsdWUoZSk7cmV0dXJuIG4/bi50cmltKCk6IiJ9Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNvbnN0IHNuPS87XHMqL20sbG49L15ccyooaW5pdGlhbCl8KGluaGVyaXQpXHMqJC8sY249L1xzKiFpbXBvcnRhbnQvLHVuPSJfLV8iO2NsYXNzIGhue2NvbnN0cnVjdG9yKCl7dGhpcy5fbWFwPXt9fXNldCh0LGUpe3Q9dC50cmltKCksdGhpcy5fbWFwW3RdPXtwcm9wZXJ0aWVzOmUsZGVwZW5kYW50czp7fX19Z2V0KHQpe3JldHVybiB0PXQudHJpbSgpLHRoaXMuX21hcFt0XXx8bnVsbH19bGV0IGRuPW51bGw7Y2xhc3MgcG57Y29uc3RydWN0b3IoKXt0aGlzLl9jdXJyZW50RWxlbWVudD1udWxsLHRoaXMuX21lYXN1cmVFbGVtZW50PW51bGwsdGhpcy5fbWFwPW5ldyBobn1kZXRlY3RNaXhpbih0KXtyZXR1cm4oZnVuY3Rpb24gZSh0KXtjb25zdCBlPXFlLnRlc3QodCl8fFdlLnRlc3QodCk7cmV0dXJuIHFlLmxhc3RJbmRleD0wLFdlLmxhc3RJbmRleD0wLGV9KSh0KX1nYXRoZXJTdHlsZXModCl7Y29uc3QgZT0oZnVuY3Rpb24gbih0KXtjb25zdCBlPVtdLG49dC5xdWVyeVNlbGVjdG9yQWxsKCJzdHlsZSIpO2ZvcihsZXQgdD0wO3Q8bi5sZW5ndGg7dCsrKXtjb25zdCBpPW5bdF07S2UoaSk/QWV8fCgkZShpKSxpLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoaSkpOihlLnB1c2goaS50ZXh0Q29udGVudCksaS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGkpKX1yZXR1cm4gZS5qb2luKCIiKS50cmltKCl9KSh0LmNvbnRlbnQpO2lmKGUpe2NvbnN0IG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTtyZXR1cm4gbi50ZXh0Q29udGVudD1lLHQuY29udGVudC5pbnNlcnRCZWZvcmUobix0LmNvbnRlbnQuZmlyc3RDaGlsZCksbn1yZXR1cm4gbnVsbH10cmFuc2Zvcm1UZW1wbGF0ZSh0LGUpe3ZvaWQgMD09PXQuX2dhdGhlcmVkU3R5bGUmJih0Ll9nYXRoZXJlZFN0eWxlPXRoaXMuZ2F0aGVyU3R5bGVzKHQpKTtjb25zdCBuPXQuX2dhdGhlcmVkU3R5bGU7cmV0dXJuIG4/dGhpcy50cmFuc2Zvcm1TdHlsZShuLGUpOm51bGx9dHJhbnNmb3JtU3R5bGUodCxlPSIiKXtsZXQgbj1KZSh0KTtyZXR1cm4gdGhpcy50cmFuc2Zvcm1SdWxlcyhuLGUpLHQudGV4dENvbnRlbnQ9WmUobiksbn10cmFuc2Zvcm1DdXN0b21TdHlsZSh0KXtsZXQgZT1KZSh0KTtyZXR1cm4gUWUoZSwodD0+eyI6cm9vdCI9PT10LnNlbGVjdG9yJiYodC5zZWxlY3Rvcj0iaHRtbCIpLHRoaXMudHJhbnNmb3JtUnVsZSh0KX0pKSx0LnRleHRDb250ZW50PVplKGUpLGV9dHJhbnNmb3JtUnVsZXModCxlKXt0aGlzLl9jdXJyZW50RWxlbWVudD1lLFFlKHQsKHQ9Pnt0aGlzLnRyYW5zZm9ybVJ1bGUodCl9KSksdGhpcy5fY3VycmVudEVsZW1lbnQ9bnVsbH10cmFuc2Zvcm1SdWxlKHQpe3QuY3NzVGV4dD10aGlzLnRyYW5zZm9ybUNzc1RleHQodC5wYXJzZWRDc3NUZXh0LHQpLCI6cm9vdCI9PT10LnNlbGVjdG9yJiYodC5zZWxlY3Rvcj0iOmhvc3QgPiAqIil9dHJhbnNmb3JtQ3NzVGV4dCh0LGUpe3JldHVybiB0PXQucmVwbGFjZShXZSwoKHQsbixpLHIpPT50aGlzLl9wcm9kdWNlQ3NzUHJvcGVydGllcyh0LG4saSxyLGUpKSksdGhpcy5fY29uc3VtZUNzc1Byb3BlcnRpZXModCxlKX1fZ2V0SW5pdGlhbFZhbHVlRm9yUHJvcGVydHkodCl7cmV0dXJuIHRoaXMuX21lYXN1cmVFbGVtZW50fHwodGhpcy5fbWVhc3VyZUVsZW1lbnQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibWV0YSIpLHRoaXMuX21lYXN1cmVFbGVtZW50LnNldEF0dHJpYnV0ZSgiYXBwbHktc2hpbS1tZWFzdXJlIiwiIiksdGhpcy5fbWVhc3VyZUVsZW1lbnQuc3R5bGUuYWxsPSJpbml0aWFsIixkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHRoaXMuX21lYXN1cmVFbGVtZW50KSksd2luZG93LmdldENvbXB1dGVkU3R5bGUodGhpcy5fbWVhc3VyZUVsZW1lbnQpLmdldFByb3BlcnR5VmFsdWUodCl9X2ZhbGxiYWNrc0Zyb21QcmV2aW91c1J1bGVzKHQpe2xldCBlPXQ7Zm9yKDtlLnBhcmVudDspZT1lLnBhcmVudDtjb25zdCBuPXt9O2xldCBpPSExO3JldHVybiBRZShlLChlPT57aT1pfHxlPT09dCxpfHxlLnNlbGVjdG9yPT09dC5zZWxlY3RvciYmT2JqZWN0LmFzc2lnbihuLHRoaXMuX2Nzc1RleHRUb01hcChlLnBhcnNlZENzc1RleHQpKX0pKSxufV9jb25zdW1lQ3NzUHJvcGVydGllcyh0LGUpe2xldCBuPW51bGw7Zm9yKDtuPXFlLmV4ZWModCk7KXtsZXQgaT1uWzBdLHI9blsxXSxvPW4uaW5kZXgsYT1vK2kuaW5kZXhPZigiQGFwcGx5Iikscz1vK2kubGVuZ3RoLGw9dC5zbGljZSgwLGEpLGM9dC5zbGljZShzKSx1PWU/dGhpcy5fZmFsbGJhY2tzRnJvbVByZXZpb3VzUnVsZXMoZSk6e307T2JqZWN0LmFzc2lnbih1LHRoaXMuX2Nzc1RleHRUb01hcChsKSk7bGV0IGg9dGhpcy5fYXRBcHBseVRvQ3NzUHJvcGVydGllcyhyLHUpO3Q9YCR7bH0ke2h9JHtjfWAscWUubGFzdEluZGV4PW8raC5sZW5ndGh9cmV0dXJuIHR9X2F0QXBwbHlUb0Nzc1Byb3BlcnRpZXModCxlKXt0PXQucmVwbGFjZShzbiwiIik7bGV0IG49W10saT10aGlzLl9tYXAuZ2V0KHQpO2lmKGl8fCh0aGlzLl9tYXAuc2V0KHQse30pLGk9dGhpcy5fbWFwLmdldCh0KSksaSl7bGV0IHIsbyxhO3RoaXMuX2N1cnJlbnRFbGVtZW50JiYoaS5kZXBlbmRhbnRzW3RoaXMuX2N1cnJlbnRFbGVtZW50XT0hMCk7Y29uc3Qgcz1pLnByb3BlcnRpZXM7Zm9yKHIgaW4gcylhPWUmJmVbcl0sbz1bciwiOiB2YXIoIix0LHVuLHJdLGEmJm8ucHVzaCgiLCIsYS5yZXBsYWNlKGNuLCIiKSksby5wdXNoKCIpIiksY24udGVzdChzW3JdKSYmby5wdXNoKCIgIWltcG9ydGFudCIpLG4ucHVzaChvLmpvaW4oIiIpKX1yZXR1cm4gbi5qb2luKCI7ICIpfV9yZXBsYWNlSW5pdGlhbE9ySW5oZXJpdCh0LGUpe2xldCBuPWxuLmV4ZWMoZSk7cmV0dXJuIG4mJihlPW5bMV0/dGhpcy5fZ2V0SW5pdGlhbFZhbHVlRm9yUHJvcGVydHkodCk6ImFwcGx5LXNoaW0taW5oZXJpdCIpLGV9X2Nzc1RleHRUb01hcCh0LGU9ITEpe2xldCBuLGkscj10LnNwbGl0KCI7Iiksbz17fTtmb3IobGV0IHQsYSxzPTA7czxyLmxlbmd0aDtzKyspdD1yW3NdLHQmJihhPXQuc3BsaXQoIjoiKSxhLmxlbmd0aD4xJiYobj1hWzBdLnRyaW0oKSxpPWEuc2xpY2UoMSkuam9pbigiOiIpLGUmJihpPXRoaXMuX3JlcGxhY2VJbml0aWFsT3JJbmhlcml0KG4saSkpLG9bbl09aSkpO3JldHVybiBvfV9pbnZhbGlkYXRlTWl4aW5FbnRyeSh0KXtpZihkbilmb3IobGV0IGUgaW4gdC5kZXBlbmRhbnRzKWUhPT10aGlzLl9jdXJyZW50RWxlbWVudCYmZG4oZSl9X3Byb2R1Y2VDc3NQcm9wZXJ0aWVzKHQsZSxuLGkscil7aWYobiYmdG4obiwoKHQsZSk9PntlJiZ0aGlzLl9tYXAuZ2V0KGUpJiYoaT1gQGFwcGx5ICR7ZX07YCl9KSksIWkpcmV0dXJuIHQ7bGV0IG89dGhpcy5fY29uc3VtZUNzc1Byb3BlcnRpZXMoIiIraSxyKSxhPXQuc2xpY2UoMCx0LmluZGV4T2YoIi0tIikpLHM9dGhpcy5fY3NzVGV4dFRvTWFwKG8sITApLGw9cyxjPXRoaXMuX21hcC5nZXQoZSksdT1jJiZjLnByb3BlcnRpZXM7dT9sPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZSh1KSxzKTp0aGlzLl9tYXAuc2V0KGUsbCk7bGV0IGgsZCxwPVtdLGY9ITE7Zm9yKGggaW4gbClkPXNbaF0sdm9pZCAwPT09ZCYmKGQ9ImluaXRpYWwiKSx1JiYhKGggaW4gdSkmJihmPSEwKSxwLnB1c2goYCR7ZX1fLV8ke2h9OiAke2R9YCk7cmV0dXJuIGYmJnRoaXMuX2ludmFsaWRhdGVNaXhpbkVudHJ5KGMpLGMmJihjLnByb3BlcnRpZXM9bCksbiYmKGE9YCR7dH07JHthfWApLGAke2F9JHtwLmpvaW4oIjsgIil9O2B9fXBuLnByb3RvdHlwZS5kZXRlY3RNaXhpbj1wbi5wcm90b3R5cGUuZGV0ZWN0TWl4aW4scG4ucHJvdG90eXBlLnRyYW5zZm9ybVN0eWxlPXBuLnByb3RvdHlwZS50cmFuc2Zvcm1TdHlsZSxwbi5wcm90b3R5cGUudHJhbnNmb3JtQ3VzdG9tU3R5bGU9cG4ucHJvdG90eXBlLnRyYW5zZm9ybUN1c3RvbVN0eWxlLHBuLnByb3RvdHlwZS50cmFuc2Zvcm1SdWxlcz1wbi5wcm90b3R5cGUudHJhbnNmb3JtUnVsZXMscG4ucHJvdG90eXBlLnRyYW5zZm9ybVJ1bGU9cG4ucHJvdG90eXBlLnRyYW5zZm9ybVJ1bGUscG4ucHJvdG90eXBlLnRyYW5zZm9ybVRlbXBsYXRlPXBuLnByb3RvdHlwZS50cmFuc2Zvcm1UZW1wbGF0ZSxwbi5wcm90b3R5cGUuX3NlcGFyYXRvcj11bixPYmplY3QuZGVmaW5lUHJvcGVydHkocG4ucHJvdG90eXBlLCJpbnZhbGlkQ2FsbGJhY2siLHtnZXQ6KCk9PmRuLHNldCh0KXtkbj10fX0pOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCBmbj17fSxtbj0iX2FwcGx5U2hpbUN1cnJlbnRWZXJzaW9uIixnbj0iX2FwcGx5U2hpbU5leHRWZXJzaW9uIixfbj0iX2FwcGx5U2hpbVZhbGlkYXRpbmdWZXJzaW9uIix5bj1Qcm9taXNlLnJlc29sdmUoKTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi9mdW5jdGlvbiB2bih0KXtsZXQgZT1mblt0XTtlJiYoZnVuY3Rpb24gbih0KXt0W21uXT10W21uXXx8MCx0W19uXT10W19uXXx8MCx0W2duXT0odFtnbl18fDApKzF9KShlKX1mdW5jdGlvbiBibih0KXtyZXR1cm4gdFttbl09PT10W2duXX0KLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KbGV0IHhuLHduPW51bGwsU249d2luZG93LkhUTUxJbXBvcnRzJiZ3aW5kb3cuSFRNTEltcG9ydHMud2hlblJlYWR5fHxudWxsO2Z1bmN0aW9uIE1uKHQpe3JlcXVlc3RBbmltYXRpb25GcmFtZSgoZnVuY3Rpb24oKXtTbj9Tbih0KTood258fCh3bj1uZXcgUHJvbWlzZSgodD0+e3huPXR9KSksImNvbXBsZXRlIj09PWRvY3VtZW50LnJlYWR5U3RhdGU/eG4oKTpkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJyZWFkeXN0YXRlY2hhbmdlIiwoKCk9PnsiY29tcGxldGUiPT09ZG9jdW1lbnQucmVhZHlTdGF0ZSYmeG4oKX0pKSksd24udGhlbigoZnVuY3Rpb24oKXt0JiZ0KCl9KSkpfSkpfQovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqL2NvbnN0IEVuPSJfX3NlZW5CeVNoYWR5Q1NTIixUbj0iX19zaGFkeUNTU0NhY2hlZFN0eWxlIjtsZXQgQ249bnVsbCxBbj1udWxsO2NsYXNzIGtue2NvbnN0cnVjdG9yKCl7dGhpcy5jdXN0b21TdHlsZXM9W10sdGhpcy5lbnF1ZXVlZD0hMSxNbigoKCk9Pnt3aW5kb3cuU2hhZHlDU1MuZmx1c2hDdXN0b21TdHlsZXMmJndpbmRvdy5TaGFkeUNTUy5mbHVzaEN1c3RvbVN0eWxlcygpfSkpfWVucXVldWVEb2N1bWVudFZhbGlkYXRpb24oKXshdGhpcy5lbnF1ZXVlZCYmQW4mJih0aGlzLmVucXVldWVkPSEwLE1uKEFuKSl9YWRkQ3VzdG9tU3R5bGUodCl7dFtFbl18fCh0W0VuXT0hMCx0aGlzLmN1c3RvbVN0eWxlcy5wdXNoKHQpLHRoaXMuZW5xdWV1ZURvY3VtZW50VmFsaWRhdGlvbigpKX1nZXRTdHlsZUZvckN1c3RvbVN0eWxlKHQpe2lmKHRbVG5dKXJldHVybiB0W1RuXTtsZXQgZTtyZXR1cm4gZT10LmdldFN0eWxlP3QuZ2V0U3R5bGUoKTp0LGV9cHJvY2Vzc1N0eWxlcygpe2NvbnN0IHQ9dGhpcy5jdXN0b21TdHlsZXM7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspe2NvbnN0IG49dFtlXTtpZihuW1RuXSljb250aW51ZTtjb25zdCBpPXRoaXMuZ2V0U3R5bGVGb3JDdXN0b21TdHlsZShuKTtpZihpKXtjb25zdCB0PWkuX19hcHBsaWVkRWxlbWVudHx8aTtDbiYmQ24odCksbltUbl09dH19cmV0dXJuIHR9fWtuLnByb3RvdHlwZS5hZGRDdXN0b21TdHlsZT1rbi5wcm90b3R5cGUuYWRkQ3VzdG9tU3R5bGUsa24ucHJvdG90eXBlLmdldFN0eWxlRm9yQ3VzdG9tU3R5bGU9a24ucHJvdG90eXBlLmdldFN0eWxlRm9yQ3VzdG9tU3R5bGUsa24ucHJvdG90eXBlLnByb2Nlc3NTdHlsZXM9a24ucHJvdG90eXBlLnByb2Nlc3NTdHlsZXMsT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoa24ucHJvdG90eXBlLHt0cmFuc2Zvcm1DYWxsYmFjazp7Z2V0OigpPT5DbixzZXQodCl7Q249dH19LHZhbGlkYXRlQ2FsbGJhY2s6e2dldDooKT0+QW4sc2V0KHQpe2xldCBlPSExO0FufHwoZT0hMCksQW49dCxlJiZ0aGlzLmVucXVldWVEb2N1bWVudFZhbGlkYXRpb24oKX19fSk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNvbnN0IExuPW5ldyBwbjtjbGFzcyBQbntjb25zdHJ1Y3Rvcigpe3RoaXMuY3VzdG9tU3R5bGVJbnRlcmZhY2U9bnVsbCxMbi5pbnZhbGlkQ2FsbGJhY2s9dm59ZW5zdXJlKCl7dGhpcy5jdXN0b21TdHlsZUludGVyZmFjZXx8d2luZG93LlNoYWR5Q1NTLkN1c3RvbVN0eWxlSW50ZXJmYWNlJiYodGhpcy5jdXN0b21TdHlsZUludGVyZmFjZT13aW5kb3cuU2hhZHlDU1MuQ3VzdG9tU3R5bGVJbnRlcmZhY2UsdGhpcy5jdXN0b21TdHlsZUludGVyZmFjZS50cmFuc2Zvcm1DYWxsYmFjaz10PT57TG4udHJhbnNmb3JtQ3VzdG9tU3R5bGUodCl9LHRoaXMuY3VzdG9tU3R5bGVJbnRlcmZhY2UudmFsaWRhdGVDYWxsYmFjaz0oKT0+e3JlcXVlc3RBbmltYXRpb25GcmFtZSgoKCk9Pnt0aGlzLmN1c3RvbVN0eWxlSW50ZXJmYWNlLmVucXVldWVkJiZ0aGlzLmZsdXNoQ3VzdG9tU3R5bGVzKCl9KSl9KX1wcmVwYXJlVGVtcGxhdGUodCxlKXtpZih0aGlzLmVuc3VyZSgpLHJuKHQpKXJldHVybjtmbltlXT10O2xldCBuPUxuLnRyYW5zZm9ybVRlbXBsYXRlKHQsZSk7dC5fc3R5bGVBc3Q9bn1mbHVzaEN1c3RvbVN0eWxlcygpe2lmKHRoaXMuZW5zdXJlKCksIXRoaXMuY3VzdG9tU3R5bGVJbnRlcmZhY2UpcmV0dXJuO2xldCB0PXRoaXMuY3VzdG9tU3R5bGVJbnRlcmZhY2UucHJvY2Vzc1N0eWxlcygpO2lmKHRoaXMuY3VzdG9tU3R5bGVJbnRlcmZhY2UuZW5xdWV1ZWQpe2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKXtsZXQgbj10aGlzLmN1c3RvbVN0eWxlSW50ZXJmYWNlLmdldFN0eWxlRm9yQ3VzdG9tU3R5bGUodFtlXSk7biYmTG4udHJhbnNmb3JtQ3VzdG9tU3R5bGUobil9dGhpcy5jdXN0b21TdHlsZUludGVyZmFjZS5lbnF1ZXVlZD0hMX19c3R5bGVTdWJ0cmVlKHQsZSl7aWYodGhpcy5lbnN1cmUoKSxlJiZvbih0LGUpLHQuc2hhZG93Um9vdCl7dGhpcy5zdHlsZUVsZW1lbnQodCk7bGV0IGU9dC5zaGFkb3dSb290LmNoaWxkcmVufHx0LnNoYWRvd1Jvb3QuY2hpbGROb2Rlcztmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKyl0aGlzLnN0eWxlU3VidHJlZShlW3RdKX1lbHNle2xldCBlPXQuY2hpbGRyZW58fHQuY2hpbGROb2Rlcztmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKyl0aGlzLnN0eWxlU3VidHJlZShlW3RdKX19c3R5bGVFbGVtZW50KHQpe3RoaXMuZW5zdXJlKCk7bGV0e2lzOmV9PShmdW5jdGlvbiBuKHQpe2xldCBlPXQubG9jYWxOYW1lLG49IiIsaT0iIjtyZXR1cm4gZT9lLmluZGV4T2YoIi0iKT4tMT9uPWU6KGk9ZSxuPXQuZ2V0QXR0cmlidXRlJiZ0LmdldEF0dHJpYnV0ZSgiaXMiKXx8IiIpOihuPXQuaXMsaT10LmV4dGVuZHMpLHtpczpuLHR5cGVFeHRlbnNpb246aX19KSh0KSxpPWZuW2VdO2lmKCghaXx8IXJuKGkpKSYmaSYmIWJuKGkpKXsoZnVuY3Rpb24gbih0KXtyZXR1cm4hYm4odCkmJnRbX25dPT09dFtnbl19KShpKXx8KHRoaXMucHJlcGFyZVRlbXBsYXRlKGksZSksKGZ1bmN0aW9uIHIodCl7dFtfbl09dFtnbl0sdC5fdmFsaWRhdGluZ3x8KHQuX3ZhbGlkYXRpbmc9ITAseW4udGhlbigoZnVuY3Rpb24oKXt0W21uXT10W2duXSx0Ll92YWxpZGF0aW5nPSExfSkpKX0pKGkpKTtsZXQgbz10LnNoYWRvd1Jvb3Q7aWYobyl7bGV0IHQ9by5xdWVyeVNlbGVjdG9yKCJzdHlsZSIpO3QmJih0Ll9fY3NzUnVsZXM9aS5fc3R5bGVBc3QsdC50ZXh0Q29udGVudD1aZShpLl9zdHlsZUFzdCkpfX19c3R5bGVEb2N1bWVudCh0KXt0aGlzLmVuc3VyZSgpLHRoaXMuc3R5bGVTdWJ0cmVlKGRvY3VtZW50LmJvZHksdCl9fWlmKCF3aW5kb3cuU2hhZHlDU1N8fCF3aW5kb3cuU2hhZHlDU1MuU2NvcGluZ1NoaW0pe2NvbnN0IHQ9bmV3IFBuO2xldCBlPXdpbmRvdy5TaGFkeUNTUyYmd2luZG93LlNoYWR5Q1NTLkN1c3RvbVN0eWxlSW50ZXJmYWNlO3dpbmRvdy5TaGFkeUNTUz17cHJlcGFyZVRlbXBsYXRlKGUsbixpKXt0LmZsdXNoQ3VzdG9tU3R5bGVzKCksdC5wcmVwYXJlVGVtcGxhdGUoZSxuKX0scHJlcGFyZVRlbXBsYXRlU3R5bGVzKHQsZSxuKXt3aW5kb3cuU2hhZHlDU1MucHJlcGFyZVRlbXBsYXRlKHQsZSxuKX0scHJlcGFyZVRlbXBsYXRlRG9tKHQsZSl7fSxzdHlsZVN1YnRyZWUoZSxuKXt0LmZsdXNoQ3VzdG9tU3R5bGVzKCksdC5zdHlsZVN1YnRyZWUoZSxuKX0sc3R5bGVFbGVtZW50KGUpe3QuZmx1c2hDdXN0b21TdHlsZXMoKSx0LnN0eWxlRWxlbWVudChlKX0sc3R5bGVEb2N1bWVudChlKXt0LmZsdXNoQ3VzdG9tU3R5bGVzKCksdC5zdHlsZURvY3VtZW50KGUpfSxnZXRDb21wdXRlZFN0eWxlVmFsdWU6KHQsZSk9PmFuKHQsZSksZmx1c2hDdXN0b21TdHlsZXMoKXt0LmZsdXNoQ3VzdG9tU3R5bGVzKCl9LG5hdGl2ZUNzczpJZSxuYXRpdmVTaGFkb3c6QWUsY3NzQnVpbGQ6TGUsZGlzYWJsZVJ1bnRpbWU6TmV9LGUmJih3aW5kb3cuU2hhZHlDU1MuQ3VzdG9tU3R5bGVJbnRlcmZhY2U9ZSl9d2luZG93LlNoYWR5Q1NTLkFwcGx5U2hpbT1MbjsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KY2xhc3MgTm57Y29uc3RydWN0b3IoKXt0aGlzLl9hc3luY01vZHVsZT1udWxsLHRoaXMuX2NhbGxiYWNrPW51bGwsdGhpcy5fdGltZXI9bnVsbH1zZXRDb25maWcodCxlKXt0aGlzLl9hc3luY01vZHVsZT10LHRoaXMuX2NhbGxiYWNrPWUsdGhpcy5fdGltZXI9dGhpcy5fYXN5bmNNb2R1bGUucnVuKCgoKT0+e3RoaXMuX3RpbWVyPW51bGwsSW4uZGVsZXRlKHRoaXMpLHRoaXMuX2NhbGxiYWNrKCl9KSl9Y2FuY2VsKCl7dGhpcy5pc0FjdGl2ZSgpJiYodGhpcy5fY2FuY2VsQXN5bmMoKSxJbi5kZWxldGUodGhpcykpfV9jYW5jZWxBc3luYygpe3RoaXMuaXNBY3RpdmUoKSYmKHRoaXMuX2FzeW5jTW9kdWxlLmNhbmNlbCh0aGlzLl90aW1lciksdGhpcy5fdGltZXI9bnVsbCl9Zmx1c2goKXt0aGlzLmlzQWN0aXZlKCkmJih0aGlzLmNhbmNlbCgpLHRoaXMuX2NhbGxiYWNrKCkpfWlzQWN0aXZlKCl7cmV0dXJuIG51bGwhPXRoaXMuX3RpbWVyfXN0YXRpYyBkZWJvdW5jZSh0LGUsbil7cmV0dXJuIHQgaW5zdGFuY2VvZiBObj90Ll9jYW5jZWxBc3luYygpOnQ9bmV3IE5uLHQuc2V0Q29uZmlnKGUsbiksdH19bGV0IEluPW5ldyBTZXQ7Y29uc3QgUm49ZnVuY3Rpb24odCl7SW4uYWRkKHQpfSxPbj1mdW5jdGlvbigpe2NvbnN0IHQ9Qm9vbGVhbihJbi5zaXplKTtyZXR1cm4gSW4uZm9yRWFjaCgodD0+e3RyeXt0LmZsdXNoKCl9Y2F0Y2godCl7c2V0VGltZW91dCgoKCk9Pnt0aHJvdyB0fSkpfX0pKSx0fTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KbGV0IHpuPSJzdHJpbmciPT10eXBlb2YgZG9jdW1lbnQuaGVhZC5zdHlsZS50b3VjaEFjdGlvbixEbj0iX19wb2x5bWVyR2VzdHVyZXMiLEJuPSJfX3BvbHltZXJHZXN0dXJlc0hhbmRsZWQiLEhuPSJfX3BvbHltZXJHZXN0dXJlc1RvdWNoQWN0aW9uIixGbj1bIm1vdXNlZG93biIsIm1vdXNlbW92ZSIsIm1vdXNldXAiLCJjbGljayJdLFZuPVswLDEsNCwyXSxVbj0oZnVuY3Rpb24oKXt0cnl7cmV0dXJuIDE9PT1uZXcgTW91c2VFdmVudCgidGVzdCIse2J1dHRvbnM6MX0pLmJ1dHRvbnN9Y2F0Y2godCl7cmV0dXJuITF9fSkoKTtmdW5jdGlvbiBqbih0KXtyZXR1cm4gRm4uaW5kZXhPZih0KT4tMX1sZXQgR249ITE7ZnVuY3Rpb24gV24odCl7aWYoIWpuKHQpJiYidG91Y2hlbmQiIT09dClyZXR1cm4gem4mJkduJiZ2P3twYXNzaXZlOiEwfTp2b2lkIDB9IShmdW5jdGlvbigpe3RyeXtsZXQgdD1PYmplY3QuZGVmaW5lUHJvcGVydHkoe30sInBhc3NpdmUiLHtnZXQoKXtHbj0hMH19KTt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigidGVzdCIsbnVsbCx0KSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigidGVzdCIsbnVsbCx0KX1jYXRjaCh0KXt9fSkoKTtsZXQgcW49bmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvaVAoPzpbb2FdZHxob25lKXxBbmRyb2lkLyk7Y29uc3QgWW49W10sWG49e2J1dHRvbjohMCxpbnB1dDohMCxrZXlnZW46ITAsbWV0ZXI6ITAsb3V0cHV0OiEwLHRleHRhcmVhOiEwLHByb2dyZXNzOiEwLHNlbGVjdDohMH0sJG49e2J1dHRvbjohMCxjb21tYW5kOiEwLGZpZWxkc2V0OiEwLGlucHV0OiEwLGtleWdlbjohMCxvcHRncm91cDohMCxvcHRpb246ITAsc2VsZWN0OiEwLHRleHRhcmVhOiEwfTtmdW5jdGlvbiBLbih0KXtsZXQgZT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0LmxhYmVsc3x8W10pO2lmKCFlLmxlbmd0aCl7ZT1bXTtsZXQgbj10LmdldFJvb3ROb2RlKCk7aWYodC5pZCl7bGV0IGk9bi5xdWVyeVNlbGVjdG9yQWxsKGBsYWJlbFtmb3IgPSAke3QuaWR9XWApO2ZvcihsZXQgdD0wO3Q8aS5sZW5ndGg7dCsrKWUucHVzaChpW3RdKX19cmV0dXJuIGV9bGV0IFpuPWZ1bmN0aW9uKHQpe2xldCBlPXQuc291cmNlQ2FwYWJpbGl0aWVzO2lmKCghZXx8ZS5maXJlc1RvdWNoRXZlbnRzKSYmKHRbQm5dPXtza2lwOiEwfSwiY2xpY2siPT09dC50eXBlKSl7bGV0IGU9ITEsbj1yaSh0KTtmb3IobGV0IHQ9MDt0PG4ubGVuZ3RoO3QrKyl7aWYoblt0XS5ub2RlVHlwZT09PU5vZGUuRUxFTUVOVF9OT0RFKWlmKCJsYWJlbCI9PT1uW3RdLmxvY2FsTmFtZSlZbi5wdXNoKG5bdF0pO2Vsc2UgaWYoWG5bblt0XS5sb2NhbE5hbWVdKXtsZXQgaT1LbihuW3RdKTtmb3IobGV0IHQ9MDt0PGkubGVuZ3RoO3QrKyllPWV8fFluLmluZGV4T2YoaVt0XSk+LTF9aWYoblt0XT09PXRpLm1vdXNlLnRhcmdldClyZXR1cm59aWYoZSlyZXR1cm47dC5wcmV2ZW50RGVmYXVsdCgpLHQuc3RvcFByb3BhZ2F0aW9uKCl9fTtmdW5jdGlvbiBKbih0KXtsZXQgZT1xbj9bImNsaWNrIl06Rm47Zm9yKGxldCBuLGk9MDtpPGUubGVuZ3RoO2krKyluPWVbaV0sdD8oWW4ubGVuZ3RoPTAsZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihuLFpuLCEwKSk6ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihuLFpuLCEwKX1mdW5jdGlvbiBRbih0KXtsZXQgZT10LnR5cGU7aWYoIWpuKGUpKXJldHVybiExO2lmKCJtb3VzZW1vdmUiPT09ZSl7bGV0IGU9dm9pZCAwPT09dC5idXR0b25zPzE6dC5idXR0b25zO3JldHVybiB0IGluc3RhbmNlb2Ygd2luZG93Lk1vdXNlRXZlbnQmJiFVbiYmKGU9Vm5bdC53aGljaF18fDApLEJvb2xlYW4oMSZlKX1yZXR1cm4gMD09PSh2b2lkIDA9PT10LmJ1dHRvbj8wOnQuYnV0dG9uKX1sZXQgdGk9e21vdXNlOnt0YXJnZXQ6bnVsbCxtb3VzZUlnbm9yZUpvYjpudWxsfSx0b3VjaDp7eDowLHk6MCxpZDotMSxzY3JvbGxEZWNpZGVkOiExfX07ZnVuY3Rpb24gZWkodCxlLG4pe3QubW92ZWZuPWUsdC51cGZuPW4sZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIixlKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXVwIixuKX1mdW5jdGlvbiBuaSh0KXtkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLHQubW92ZWZuKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZXVwIix0LnVwZm4pLHQubW92ZWZuPW51bGwsdC51cGZuPW51bGx9ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hlbmQiLChmdW5jdGlvbiBpaSh0KXt0aS5tb3VzZS5tb3VzZUlnbm9yZUpvYnx8Sm4oITApLHRpLm1vdXNlLnRhcmdldD1yaSh0KVswXSx0aS5tb3VzZS5tb3VzZUlnbm9yZUpvYj1Obi5kZWJvdW5jZSh0aS5tb3VzZS5tb3VzZUlnbm9yZUpvYixndC5hZnRlcigyNTAwKSwoZnVuY3Rpb24oKXtKbigpLHRpLm1vdXNlLnRhcmdldD1udWxsLHRpLm1vdXNlLm1vdXNlSWdub3JlSm9iPW51bGx9KSl9KSwhIUduJiZ7cGFzc2l2ZTohMH0pO2NvbnN0IHJpPXdpbmRvdy5TaGFkeURPTSYmd2luZG93LlNoYWR5RE9NLm5vUGF0Y2g/d2luZG93LlNoYWR5RE9NLmNvbXBvc2VkUGF0aDp0PT50LmNvbXBvc2VkUGF0aCYmdC5jb21wb3NlZFBhdGgoKXx8W10sb2k9e30sYWk9W107ZnVuY3Rpb24gc2kodCl7Y29uc3QgZT1yaSh0KTtyZXR1cm4gZS5sZW5ndGg+MD9lWzBdOnQudGFyZ2V0fWZ1bmN0aW9uIGxpKHQpe2xldCBlLG49dC50eXBlLGk9dC5jdXJyZW50VGFyZ2V0W0RuXTtpZighaSlyZXR1cm47bGV0IHI9aVtuXTtpZihyKXtpZighdFtCbl0mJih0W0JuXT17fSwidG91Y2giPT09bi5zbGljZSgwLDUpKSl7bGV0IGU9KHQ9dCkuY2hhbmdlZFRvdWNoZXNbMF07aWYoInRvdWNoc3RhcnQiPT09biYmMT09PXQudG91Y2hlcy5sZW5ndGgmJih0aS50b3VjaC5pZD1lLmlkZW50aWZpZXIpLHRpLnRvdWNoLmlkIT09ZS5pZGVudGlmaWVyKXJldHVybjt6bnx8InRvdWNoc3RhcnQiIT09biYmInRvdWNobW92ZSIhPT1ufHwoZnVuY3Rpb24gbyh0KXtsZXQgZT10LmNoYW5nZWRUb3VjaGVzWzBdLG49dC50eXBlO2lmKCJ0b3VjaHN0YXJ0Ij09PW4pdGkudG91Y2gueD1lLmNsaWVudFgsdGkudG91Y2gueT1lLmNsaWVudFksdGkudG91Y2guc2Nyb2xsRGVjaWRlZD0hMTtlbHNlIGlmKCJ0b3VjaG1vdmUiPT09bil7aWYodGkudG91Y2guc2Nyb2xsRGVjaWRlZClyZXR1cm47dGkudG91Y2guc2Nyb2xsRGVjaWRlZD0hMDtsZXQgbj0oZnVuY3Rpb24gaSh0KXtsZXQgZT0iYXV0byIsbj1yaSh0KTtmb3IobGV0IHQsaT0wO2k8bi5sZW5ndGg7aSsrKWlmKHQ9bltpXSx0W0huXSl7ZT10W0huXTticmVha31yZXR1cm4gZX0pKHQpLGk9ITEscj1NYXRoLmFicyh0aS50b3VjaC54LWUuY2xpZW50WCksbz1NYXRoLmFicyh0aS50b3VjaC55LWUuY2xpZW50WSk7dC5jYW5jZWxhYmxlJiYoIm5vbmUiPT09bj9pPSEwOiJwYW4teCI9PT1uP2k9bz5yOiJwYW4teSI9PT1uJiYoaT1yPm8pKSxpP3QucHJldmVudERlZmF1bHQoKTpmaSgidHJhY2siKX19KSh0KX1pZihlPXRbQm5dLCFlLnNraXApe2ZvcihsZXQgbixpPTA7aTxhaS5sZW5ndGg7aSsrKW49YWlbaV0scltuLm5hbWVdJiYhZVtuLm5hbWVdJiZuLmZsb3cmJm4uZmxvdy5zdGFydC5pbmRleE9mKHQudHlwZSk+LTEmJm4ucmVzZXQmJm4ucmVzZXQoKTtmb3IobGV0IGksbz0wO288YWkubGVuZ3RoO28rKylpPWFpW29dLHJbaS5uYW1lXSYmIWVbaS5uYW1lXSYmKGVbaS5uYW1lXT0hMCxpW25dKHQpKX19fWZ1bmN0aW9uIGNpKHQsZSxuKXtyZXR1cm4hIW9pW2VdJiYoKGZ1bmN0aW9uIGkodCxlLG4pe2xldCBpPW9pW2VdLHI9aS5kZXBzLG89aS5uYW1lLGE9dFtEbl07YXx8KHRbRG5dPWE9e30pO2ZvcihsZXQgZSxuLGk9MDtpPHIubGVuZ3RoO2krKyllPXJbaV0scW4mJmpuKGUpJiYiY2xpY2siIT09ZXx8KG49YVtlXSxufHwoYVtlXT1uPXtfY291bnQ6MH0pLDA9PT1uLl9jb3VudCYmdC5hZGRFdmVudExpc3RlbmVyKGUsbGksV24oZSkpLG5bb109KG5bb118fDApKzEsbi5fY291bnQ9KG4uX2NvdW50fHwwKSsxKTt0LmFkZEV2ZW50TGlzdGVuZXIoZSxuKSxpLnRvdWNoQWN0aW9uJiZkaSh0LGkudG91Y2hBY3Rpb24pfSkodCxlLG4pLCEwKX1mdW5jdGlvbiB1aSh0LGUsbil7cmV0dXJuISFvaVtlXSYmKChmdW5jdGlvbiBpKHQsZSxuKXtsZXQgaT1vaVtlXSxyPWkuZGVwcyxvPWkubmFtZSxhPXRbRG5dO2lmKGEpZm9yKGxldCBlLG4saT0wO2k8ci5sZW5ndGg7aSsrKWU9cltpXSxuPWFbZV0sbiYmbltvXSYmKG5bb109KG5bb118fDEpLTEsbi5fY291bnQ9KG4uX2NvdW50fHwxKS0xLDA9PT1uLl9jb3VudCYmdC5yZW1vdmVFdmVudExpc3RlbmVyKGUsbGksV24oZSkpKTt0LnJlbW92ZUV2ZW50TGlzdGVuZXIoZSxuKX0pKHQsZSxuKSwhMCl9ZnVuY3Rpb24gaGkodCl7YWkucHVzaCh0KTtmb3IobGV0IGU9MDtlPHQuZW1pdHMubGVuZ3RoO2UrKylvaVt0LmVtaXRzW2VdXT10fWZ1bmN0aW9uIGRpKHQsZSl7em4mJnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCYmdnQucnVuKCgoKT0+e3Quc3R5bGUudG91Y2hBY3Rpb249ZX0pKSx0W0huXT1lfWZ1bmN0aW9uIHBpKHQsZSxuKXtsZXQgaT1uZXcgRXZlbnQoZSx7YnViYmxlczohMCxjYW5jZWxhYmxlOiEwLGNvbXBvc2VkOiEwfSk7aWYoaS5kZXRhaWw9bixZKHQpLmRpc3BhdGNoRXZlbnQoaSksaS5kZWZhdWx0UHJldmVudGVkKXtsZXQgdD1uLnByZXZlbnRlcnx8bi5zb3VyY2VFdmVudDt0JiZ0LnByZXZlbnREZWZhdWx0JiZ0LnByZXZlbnREZWZhdWx0KCl9fWZ1bmN0aW9uIGZpKHQpe2xldCBlPShmdW5jdGlvbiBuKHQpe2ZvcihsZXQgZSxuPTA7bjxhaS5sZW5ndGg7bisrKXtlPWFpW25dO2ZvcihsZXQgbixpPTA7aTxlLmVtaXRzLmxlbmd0aDtpKyspaWYobj1lLmVtaXRzW2ldLG49PT10KXJldHVybiBlfXJldHVybiBudWxsfSkodCk7ZS5pbmZvJiYoZS5pbmZvLnByZXZlbnQ9ITApfWZ1bmN0aW9uIG1pKHQsZSxuLGkpe2UmJnBpKGUsdCx7eDpuLmNsaWVudFgseTpuLmNsaWVudFksc291cmNlRXZlbnQ6bixwcmV2ZW50ZXI6aSxwcmV2ZW50OmZ1bmN0aW9uKHQpe3JldHVybiBmaSh0KX19KX1mdW5jdGlvbiBnaSh0LGUsbil7aWYodC5wcmV2ZW50KXJldHVybiExO2lmKHQuc3RhcnRlZClyZXR1cm4hMDtsZXQgaT1NYXRoLmFicyh0LngtZSkscj1NYXRoLmFicyh0Lnktbik7cmV0dXJuIGk+PTV8fHI+PTV9ZnVuY3Rpb24gX2kodCxlLG4pe2lmKCFlKXJldHVybjtsZXQgaSxyPXQubW92ZXNbdC5tb3Zlcy5sZW5ndGgtMl0sbz10Lm1vdmVzW3QubW92ZXMubGVuZ3RoLTFdLGE9MDtyJiYoaT1vLngtci54LGE9by55LXIueSkscGkoZSwidHJhY2siLHtzdGF0ZTp0LnN0YXRlLHg6bi5jbGllbnRYLHk6bi5jbGllbnRZLGR4Om8ueC10LngsZHk6by55LXQueSxkZHg6aSxkZHk6YSxzb3VyY2VFdmVudDpuLGhvdmVyOmZ1bmN0aW9uKCl7cmV0dXJuKGZ1bmN0aW9uIHQoZSxuKXtsZXQgaT1kb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KGUsbikscj1pO2Zvcig7ciYmci5zaGFkb3dSb290JiYhd2luZG93LlNoYWR5RE9NOyl7bGV0IHQ9cjtpZihyPXIuc2hhZG93Um9vdC5lbGVtZW50RnJvbVBvaW50KGUsbiksdD09PXIpYnJlYWs7ciYmKGk9cil9cmV0dXJuIGl9KShuLmNsaWVudFgsbi5jbGllbnRZKX19KX1mdW5jdGlvbiB5aSh0LGUsbil7bGV0IGk9TWF0aC5hYnMoZS5jbGllbnRYLXQueCkscj1NYXRoLmFicyhlLmNsaWVudFktdC55KSxvPXNpKG58fGUpOyFvfHwkbltvLmxvY2FsTmFtZV0mJm8uaGFzQXR0cmlidXRlKCJkaXNhYmxlZCIpfHwoaXNOYU4oaSl8fGlzTmFOKHIpfHxpPD0yNSYmcjw9MjV8fChmdW5jdGlvbiBhKHQpe2lmKCJjbGljayI9PT10LnR5cGUpe2lmKDA9PT10LmRldGFpbClyZXR1cm4hMDtsZXQgZT1zaSh0KTtpZighZS5ub2RlVHlwZXx8ZS5ub2RlVHlwZSE9PU5vZGUuRUxFTUVOVF9OT0RFKXJldHVybiEwO2xldCBuPWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksaT10LnBhZ2VYLHI9dC5wYWdlWTtyZXR1cm4hKGk+PW4ubGVmdCYmaTw9bi5yaWdodCYmcj49bi50b3AmJnI8PW4uYm90dG9tKX1yZXR1cm4hMX0pKGUpKSYmKHQucHJldmVudHx8cGkobywidGFwIix7eDplLmNsaWVudFgseTplLmNsaWVudFksc291cmNlRXZlbnQ6ZSxwcmV2ZW50ZXI6bn0pKX1oaSh7bmFtZToiZG93bnVwIixkZXBzOlsibW91c2Vkb3duIiwidG91Y2hzdGFydCIsInRvdWNoZW5kIl0sZmxvdzp7c3RhcnQ6WyJtb3VzZWRvd24iLCJ0b3VjaHN0YXJ0Il0sZW5kOlsibW91c2V1cCIsInRvdWNoZW5kIl19LGVtaXRzOlsiZG93biIsInVwIl0saW5mbzp7bW92ZWZuOm51bGwsdXBmbjpudWxsfSxyZXNldDpmdW5jdGlvbigpe25pKHRoaXMuaW5mbyl9LG1vdXNlZG93bjpmdW5jdGlvbih0KXtpZighUW4odCkpcmV0dXJuO2xldCBlPXNpKHQpLG49dGhpcztlaSh0aGlzLmluZm8sKGZ1bmN0aW9uIHQoaSl7UW4oaSl8fChtaSgidXAiLGUsaSksbmkobi5pbmZvKSl9KSwoZnVuY3Rpb24gdChpKXtRbihpKSYmbWkoInVwIixlLGkpLG5pKG4uaW5mbyl9KSksbWkoImRvd24iLGUsdCl9LHRvdWNoc3RhcnQ6ZnVuY3Rpb24odCl7bWkoImRvd24iLHNpKHQpLHQuY2hhbmdlZFRvdWNoZXNbMF0sdCl9LHRvdWNoZW5kOmZ1bmN0aW9uKHQpe21pKCJ1cCIsc2kodCksdC5jaGFuZ2VkVG91Y2hlc1swXSx0KX19KSxoaSh7bmFtZToidHJhY2siLHRvdWNoQWN0aW9uOiJub25lIixkZXBzOlsibW91c2Vkb3duIiwidG91Y2hzdGFydCIsInRvdWNobW92ZSIsInRvdWNoZW5kIl0sZmxvdzp7c3RhcnQ6WyJtb3VzZWRvd24iLCJ0b3VjaHN0YXJ0Il0sZW5kOlsibW91c2V1cCIsInRvdWNoZW5kIl19LGVtaXRzOlsidHJhY2siXSxpbmZvOnt4OjAseTowLHN0YXRlOiJzdGFydCIsc3RhcnRlZDohMSxtb3ZlczpbXSxhZGRNb3ZlOmZ1bmN0aW9uKHQpe3RoaXMubW92ZXMubGVuZ3RoPjImJnRoaXMubW92ZXMuc2hpZnQoKSx0aGlzLm1vdmVzLnB1c2godCl9LG1vdmVmbjpudWxsLHVwZm46bnVsbCxwcmV2ZW50OiExfSxyZXNldDpmdW5jdGlvbigpe3RoaXMuaW5mby5zdGF0ZT0ic3RhcnQiLHRoaXMuaW5mby5zdGFydGVkPSExLHRoaXMuaW5mby5tb3Zlcz1bXSx0aGlzLmluZm8ueD0wLHRoaXMuaW5mby55PTAsdGhpcy5pbmZvLnByZXZlbnQ9ITEsbmkodGhpcy5pbmZvKX0sbW91c2Vkb3duOmZ1bmN0aW9uKHQpe2lmKCFRbih0KSlyZXR1cm47bGV0IGU9c2kodCksbj10aGlzLGk9ZnVuY3Rpb24gdChpKXtsZXQgcj1pLmNsaWVudFgsbz1pLmNsaWVudFk7Z2kobi5pbmZvLHIsbykmJihuLmluZm8uc3RhdGU9bi5pbmZvLnN0YXJ0ZWQ/Im1vdXNldXAiPT09aS50eXBlPyJlbmQiOiJ0cmFjayI6InN0YXJ0Iiwic3RhcnQiPT09bi5pbmZvLnN0YXRlJiZmaSgidGFwIiksbi5pbmZvLmFkZE1vdmUoe3g6cix5Om99KSxRbihpKXx8KG4uaW5mby5zdGF0ZT0iZW5kIixuaShuLmluZm8pKSxlJiZfaShuLmluZm8sZSxpKSxuLmluZm8uc3RhcnRlZD0hMCl9O2VpKHRoaXMuaW5mbyxpLChmdW5jdGlvbiB0KGUpe24uaW5mby5zdGFydGVkJiZpKGUpLG5pKG4uaW5mbyl9KSksdGhpcy5pbmZvLng9dC5jbGllbnRYLHRoaXMuaW5mby55PXQuY2xpZW50WX0sdG91Y2hzdGFydDpmdW5jdGlvbih0KXtsZXQgZT10LmNoYW5nZWRUb3VjaGVzWzBdO3RoaXMuaW5mby54PWUuY2xpZW50WCx0aGlzLmluZm8ueT1lLmNsaWVudFl9LHRvdWNobW92ZTpmdW5jdGlvbih0KXtsZXQgZT1zaSh0KSxuPXQuY2hhbmdlZFRvdWNoZXNbMF0saT1uLmNsaWVudFgscj1uLmNsaWVudFk7Z2kodGhpcy5pbmZvLGkscikmJigic3RhcnQiPT09dGhpcy5pbmZvLnN0YXRlJiZmaSgidGFwIiksdGhpcy5pbmZvLmFkZE1vdmUoe3g6aSx5OnJ9KSxfaSh0aGlzLmluZm8sZSxuKSx0aGlzLmluZm8uc3RhdGU9InRyYWNrIix0aGlzLmluZm8uc3RhcnRlZD0hMCl9LHRvdWNoZW5kOmZ1bmN0aW9uKHQpe2xldCBlPXNpKHQpLG49dC5jaGFuZ2VkVG91Y2hlc1swXTt0aGlzLmluZm8uc3RhcnRlZCYmKHRoaXMuaW5mby5zdGF0ZT0iZW5kIix0aGlzLmluZm8uYWRkTW92ZSh7eDpuLmNsaWVudFgseTpuLmNsaWVudFl9KSxfaSh0aGlzLmluZm8sZSxuKSl9fSksaGkoe25hbWU6InRhcCIsZGVwczpbIm1vdXNlZG93biIsImNsaWNrIiwidG91Y2hzdGFydCIsInRvdWNoZW5kIl0sZmxvdzp7c3RhcnQ6WyJtb3VzZWRvd24iLCJ0b3VjaHN0YXJ0Il0sZW5kOlsiY2xpY2siLCJ0b3VjaGVuZCJdfSxlbWl0czpbInRhcCJdLGluZm86e3g6TmFOLHk6TmFOLHByZXZlbnQ6ITF9LHJlc2V0OmZ1bmN0aW9uKCl7dGhpcy5pbmZvLng9TmFOLHRoaXMuaW5mby55PU5hTix0aGlzLmluZm8ucHJldmVudD0hMX0sbW91c2Vkb3duOmZ1bmN0aW9uKHQpe1FuKHQpJiYodGhpcy5pbmZvLng9dC5jbGllbnRYLHRoaXMuaW5mby55PXQuY2xpZW50WSl9LGNsaWNrOmZ1bmN0aW9uKHQpe1FuKHQpJiZ5aSh0aGlzLmluZm8sdCl9LHRvdWNoc3RhcnQ6ZnVuY3Rpb24odCl7Y29uc3QgZT10LmNoYW5nZWRUb3VjaGVzWzBdO3RoaXMuaW5mby54PWUuY2xpZW50WCx0aGlzLmluZm8ueT1lLmNsaWVudFl9LHRvdWNoZW5kOmZ1bmN0aW9uKHQpe3lpKHRoaXMuaW5mbyx0LmNoYW5nZWRUb3VjaGVzWzBdLHQpfX0pO2NvbnN0IHZpPXNpLGJpPUkoKHQ9PmNsYXNzIGV4dGVuZHMgdHtfYWRkRXZlbnRMaXN0ZW5lclRvTm9kZSh0LGUsbil7Y2kodCxlLG4pfHxzdXBlci5fYWRkRXZlbnRMaXN0ZW5lclRvTm9kZSh0LGUsbil9X3JlbW92ZUV2ZW50TGlzdGVuZXJGcm9tTm9kZSh0LGUsbil7dWkodCxlLG4pfHxzdXBlci5fcmVtb3ZlRXZlbnRMaXN0ZW5lckZyb21Ob2RlKHQsZSxuKX19KSkseGk9Lzpob3N0XCg6ZGlyXCgobHRyfHJ0bClcKVwpL2csd2k9LyhbXHNcdy0jXC5cW1xdXCpdKik6ZGlyXCgobHRyfHJ0bClcKS9nLFNpPS86ZGlyXCgoPzpsdHJ8cnRsKVwpLyxNaT1Cb29sZWFuKHdpbmRvdy5TaGFkeURPTSYmd2luZG93LlNoYWR5RE9NLmluVXNlKSxFaT1bXTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi9sZXQgVGk9bnVsbCxDaT0iIjtmdW5jdGlvbiBBaSgpe0NpPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5nZXRBdHRyaWJ1dGUoImRpciIpfWZ1bmN0aW9uIGtpKHQpe2lmKCF0Ll9fYXV0b0Rpck9wdE91dCl7dC5zZXRBdHRyaWJ1dGUoImRpciIsQ2kpfX1mdW5jdGlvbiBMaSgpe0FpKCksQ2k9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmdldEF0dHJpYnV0ZSgiZGlyIik7Zm9yKGxldCB0PTA7dDxFaS5sZW5ndGg7dCsrKWtpKEVpW3RdKX1jb25zdCBQaT1JKCh0PT57TWl8fFRpfHwoQWkoKSxUaT1uZXcgTXV0YXRpb25PYnNlcnZlcihMaSksVGkub2JzZXJ2ZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQse2F0dHJpYnV0ZXM6ITAsYXR0cmlidXRlRmlsdGVyOlsiZGlyIl19KSk7Y29uc3QgZT1NdCh0KTtjbGFzcyBuIGV4dGVuZHMgZXtzdGF0aWMgX3Byb2Nlc3NTdHlsZVRleHQodCxuKXtyZXR1cm4gdD1lLl9wcm9jZXNzU3R5bGVUZXh0LmNhbGwodGhpcyx0LG4pLCFNaSYmU2kudGVzdCh0KSYmKHQ9dGhpcy5fcmVwbGFjZURpckluQ3NzVGV4dCh0KSx0aGlzLl9fYWN0aXZhdGVEaXI9ITApLHR9c3RhdGljIF9yZXBsYWNlRGlySW5Dc3NUZXh0KHQpe2xldCBlPXQ7cmV0dXJuIGU9ZS5yZXBsYWNlKHhpLCc6aG9zdChbZGlyPSIkMSJdKScpLGU9ZS5yZXBsYWNlKHdpLCc6aG9zdChbZGlyPSIkMiJdKSAkMScpLGV9Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMuX19hdXRvRGlyT3B0T3V0PSExfXJlYWR5KCl7c3VwZXIucmVhZHkoKSx0aGlzLl9fYXV0b0Rpck9wdE91dD10aGlzLmhhc0F0dHJpYnV0ZSgiZGlyIil9Y29ubmVjdGVkQ2FsbGJhY2soKXtlLnByb3RvdHlwZS5jb25uZWN0ZWRDYWxsYmFjayYmc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKSx0aGlzLmNvbnN0cnVjdG9yLl9fYWN0aXZhdGVEaXImJighKGZ1bmN0aW9uIHQoKXtUaSYmVGkudGFrZVJlY29yZHMoKS5sZW5ndGgmJkxpKCl9KSgpLEVpLnB1c2godGhpcyksa2kodGhpcykpfWRpc2Nvbm5lY3RlZENhbGxiYWNrKCl7aWYoZS5wcm90b3R5cGUuZGlzY29ubmVjdGVkQ2FsbGJhY2smJnN1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCksdGhpcy5jb25zdHJ1Y3Rvci5fX2FjdGl2YXRlRGlyKXtjb25zdCB0PUVpLmluZGV4T2YodGhpcyk7dD4tMSYmRWkuc3BsaWNlKHQsMSl9fX1yZXR1cm4gbi5fX2FjdGl2YXRlRGlyPSExLG59KSk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovbGV0IE5pPSExLElpPVtdLFJpPVtdO2Z1bmN0aW9uIE9pKCl7Tmk9ITAscmVxdWVzdEFuaW1hdGlvbkZyYW1lKChmdW5jdGlvbigpe05pPSExLChmdW5jdGlvbiB0KGUpe2Zvcig7ZS5sZW5ndGg7KXppKGUuc2hpZnQoKSl9KShJaSksc2V0VGltZW91dCgoZnVuY3Rpb24oKXshKGZ1bmN0aW9uIHQoZSl7Zm9yKGxldCB0PTAsbj1lLmxlbmd0aDt0PG47dCsrKXppKGUuc2hpZnQoKSl9KShSaSl9KSl9KSl9ZnVuY3Rpb24gemkodCl7Y29uc3QgZT10WzBdLG49dFsxXSxpPXRbMl07dHJ5e24uYXBwbHkoZSxpKX1jYXRjaCh0KXtzZXRUaW1lb3V0KCgoKT0+e3Rocm93IHR9KSl9fWZ1bmN0aW9uIERpKHQsZSxuKXtOaXx8T2koKSxSaS5wdXNoKFt0LGUsbl0pfQovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqL2Z1bmN0aW9uIEJpKCl7ZG9jdW1lbnQuYm9keS5yZW1vdmVBdHRyaWJ1dGUoInVucmVzb2x2ZWQiKX0KLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KZnVuY3Rpb24gSGkodCxlLG4pe3JldHVybntpbmRleDp0LHJlbW92ZWQ6ZSxhZGRlZENvdW50Om59fSJpbnRlcmFjdGl2ZSI9PT1kb2N1bWVudC5yZWFkeVN0YXRlfHwiY29tcGxldGUiPT09ZG9jdW1lbnQucmVhZHlTdGF0ZT9CaSgpOndpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixCaSk7ZnVuY3Rpb24gRmkodCxlLG4saSxyLG8pe2xldCBhLHM9MCxsPTAsYz1NYXRoLm1pbihuLWUsby1yKTtpZigwPT1lJiYwPT1yJiYocz0oZnVuY3Rpb24gdSh0LGUsbil7Zm9yKGxldCBpPTA7aTxuO2krKylpZighVWkodFtpXSxlW2ldKSlyZXR1cm4gaTtyZXR1cm4gbn0pKHQsaSxjKSksbj09dC5sZW5ndGgmJm89PWkubGVuZ3RoJiYobD0oZnVuY3Rpb24gaCh0LGUsbil7bGV0IGk9dC5sZW5ndGgscj1lLmxlbmd0aCxvPTA7Zm9yKDtvPG4mJlVpKHRbLS1pXSxlWy0tcl0pOylvKys7cmV0dXJuIG99KSh0LGksYy1zKSkscis9cyxvLT1sLChuLT1sKS0oZSs9cyk9PTAmJm8tcj09MClyZXR1cm5bXTtpZihlPT1uKXtmb3IoYT1IaShlLFtdLDApO3I8bzspYS5yZW1vdmVkLnB1c2goaVtyKytdKTtyZXR1cm5bYV19aWYocj09bylyZXR1cm5bSGkoZSxbXSxuLWUpXTtsZXQgZD0oZnVuY3Rpb24gZih0KXtsZXQgZT10Lmxlbmd0aC0xLG49dFswXS5sZW5ndGgtMSxpPXRbZV1bbl0scj1bXTtmb3IoO2U+MHx8bj4wOyl7aWYoMD09ZSl7ci5wdXNoKDIpLG4tLTtjb250aW51ZX1pZigwPT1uKXtyLnB1c2goMyksZS0tO2NvbnRpbnVlfWxldCBvLGE9dFtlLTFdW24tMV0scz10W2UtMV1bbl0sbD10W2VdW24tMV07bz1zPGw/czxhP3M6YTpsPGE/bDphLG89PWE/KGE9PWk/ci5wdXNoKDApOihyLnB1c2goMSksaT1hKSxlLS0sbi0tKTpvPT1zPyhyLnB1c2goMyksZS0tLGk9cyk6KHIucHVzaCgyKSxuLS0saT1sKX1yZXR1cm4gci5yZXZlcnNlKCkscn0pKChmdW5jdGlvbiBwKHQsZSxuLGkscixvKXtsZXQgYT1vLXIrMSxzPW4tZSsxLGw9bmV3IEFycmF5KGEpO2ZvcihsZXQgdD0wO3Q8YTt0KyspbFt0XT1uZXcgQXJyYXkocyksbFt0XVswXT10O2ZvcihsZXQgdD0wO3Q8czt0KyspbFswXVt0XT10O2ZvcihsZXQgbj0xO248YTtuKyspZm9yKGxldCBvPTE7bzxzO28rKylpZihVaSh0W2Urby0xXSxpW3Irbi0xXSkpbFtuXVtvXT1sW24tMV1bby0xXTtlbHNle2xldCB0PWxbbi0xXVtvXSsxLGU9bFtuXVtvLTFdKzE7bFtuXVtvXT10PGU/dDplfXJldHVybiBsfSkodCxlLG4saSxyLG8pKTthPXZvaWQgMDtsZXQgbT1bXSxnPWUsXz1yO2ZvcihsZXQgdD0wO3Q8ZC5sZW5ndGg7dCsrKXN3aXRjaChkW3RdKXtjYXNlIDA6YSYmKG0ucHVzaChhKSxhPXZvaWQgMCksZysrLF8rKzticmVhaztjYXNlIDE6YXx8KGE9SGkoZyxbXSwwKSksYS5hZGRlZENvdW50KyssZysrLGEucmVtb3ZlZC5wdXNoKGlbX10pLF8rKzticmVhaztjYXNlIDI6YXx8KGE9SGkoZyxbXSwwKSksYS5hZGRlZENvdW50KyssZysrO2JyZWFrO2Nhc2UgMzphfHwoYT1IaShnLFtdLDApKSxhLnJlbW92ZWQucHVzaChpW19dKSxfKyt9cmV0dXJuIGEmJm0ucHVzaChhKSxtfWZ1bmN0aW9uIFZpKHQsZSl7cmV0dXJuIEZpKHQsMCx0Lmxlbmd0aCxlLDAsZS5sZW5ndGgpfWZ1bmN0aW9uIFVpKHQsZSl7cmV0dXJuIHQ9PT1lfQovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqL2Z1bmN0aW9uIGppKHQpe3JldHVybiJzbG90Ij09PXQubG9jYWxOYW1lfWxldCBHaT1jbGFzc3tzdGF0aWMgZ2V0RmxhdHRlbmVkTm9kZXModCl7Y29uc3QgZT1ZKHQpO3JldHVybiBqaSh0KT8odD10LGUuYXNzaWduZWROb2Rlcyh7ZmxhdHRlbjohMH0pKTpBcnJheS5mcm9tKGUuY2hpbGROb2RlcykubWFwKCh0PT5qaSh0KT9ZKHQ9dCkuYXNzaWduZWROb2Rlcyh7ZmxhdHRlbjohMH0pOlt0XSkpLnJlZHVjZSgoKHQsZSk9PnQuY29uY2F0KGUpKSxbXSl9Y29uc3RydWN0b3IodCxlKXt0aGlzLl9zaGFkeUNoaWxkcmVuT2JzZXJ2ZXI9bnVsbCx0aGlzLl9uYXRpdmVDaGlsZHJlbk9ic2VydmVyPW51bGwsdGhpcy5fY29ubmVjdGVkPSExLHRoaXMuX3RhcmdldD10LHRoaXMuY2FsbGJhY2s9ZSx0aGlzLl9lZmZlY3RpdmVOb2Rlcz1bXSx0aGlzLl9vYnNlcnZlcj1udWxsLHRoaXMuX3NjaGVkdWxlZD0hMSx0aGlzLl9ib3VuZFNjaGVkdWxlPSgpPT57dGhpcy5fc2NoZWR1bGUoKX0sdGhpcy5jb25uZWN0KCksdGhpcy5fc2NoZWR1bGUoKX1jb25uZWN0KCl7amkodGhpcy5fdGFyZ2V0KT90aGlzLl9saXN0ZW5TbG90cyhbdGhpcy5fdGFyZ2V0XSk6WSh0aGlzLl90YXJnZXQpLmNoaWxkcmVuJiYodGhpcy5fbGlzdGVuU2xvdHMoWSh0aGlzLl90YXJnZXQpLmNoaWxkcmVuKSx3aW5kb3cuU2hhZHlET00/dGhpcy5fc2hhZHlDaGlsZHJlbk9ic2VydmVyPXdpbmRvdy5TaGFkeURPTS5vYnNlcnZlQ2hpbGRyZW4odGhpcy5fdGFyZ2V0LCh0PT57dGhpcy5fcHJvY2Vzc011dGF0aW9ucyh0KX0pKToodGhpcy5fbmF0aXZlQ2hpbGRyZW5PYnNlcnZlcj1uZXcgTXV0YXRpb25PYnNlcnZlcigodD0+e3RoaXMuX3Byb2Nlc3NNdXRhdGlvbnModCl9KSksdGhpcy5fbmF0aXZlQ2hpbGRyZW5PYnNlcnZlci5vYnNlcnZlKHRoaXMuX3RhcmdldCx7Y2hpbGRMaXN0OiEwfSkpKSx0aGlzLl9jb25uZWN0ZWQ9ITB9ZGlzY29ubmVjdCgpe2ppKHRoaXMuX3RhcmdldCk/dGhpcy5fdW5saXN0ZW5TbG90cyhbdGhpcy5fdGFyZ2V0XSk6WSh0aGlzLl90YXJnZXQpLmNoaWxkcmVuJiYodGhpcy5fdW5saXN0ZW5TbG90cyhZKHRoaXMuX3RhcmdldCkuY2hpbGRyZW4pLHdpbmRvdy5TaGFkeURPTSYmdGhpcy5fc2hhZHlDaGlsZHJlbk9ic2VydmVyPyh3aW5kb3cuU2hhZHlET00udW5vYnNlcnZlQ2hpbGRyZW4odGhpcy5fc2hhZHlDaGlsZHJlbk9ic2VydmVyKSx0aGlzLl9zaGFkeUNoaWxkcmVuT2JzZXJ2ZXI9bnVsbCk6dGhpcy5fbmF0aXZlQ2hpbGRyZW5PYnNlcnZlciYmKHRoaXMuX25hdGl2ZUNoaWxkcmVuT2JzZXJ2ZXIuZGlzY29ubmVjdCgpLHRoaXMuX25hdGl2ZUNoaWxkcmVuT2JzZXJ2ZXI9bnVsbCkpLHRoaXMuX2Nvbm5lY3RlZD0hMX1fc2NoZWR1bGUoKXt0aGlzLl9zY2hlZHVsZWR8fCh0aGlzLl9zY2hlZHVsZWQ9ITAsdnQucnVuKCgoKT0+dGhpcy5mbHVzaCgpKSkpfV9wcm9jZXNzTXV0YXRpb25zKHQpe3RoaXMuX3Byb2Nlc3NTbG90TXV0YXRpb25zKHQpLHRoaXMuZmx1c2goKX1fcHJvY2Vzc1Nsb3RNdXRhdGlvbnModCl7aWYodClmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKyl7bGV0IG49dFtlXTtuLmFkZGVkTm9kZXMmJnRoaXMuX2xpc3RlblNsb3RzKG4uYWRkZWROb2Rlcyksbi5yZW1vdmVkTm9kZXMmJnRoaXMuX3VubGlzdGVuU2xvdHMobi5yZW1vdmVkTm9kZXMpfX1mbHVzaCgpe2lmKCF0aGlzLl9jb25uZWN0ZWQpcmV0dXJuITE7d2luZG93LlNoYWR5RE9NJiZTaGFkeURPTS5mbHVzaCgpLHRoaXMuX25hdGl2ZUNoaWxkcmVuT2JzZXJ2ZXI/dGhpcy5fcHJvY2Vzc1Nsb3RNdXRhdGlvbnModGhpcy5fbmF0aXZlQ2hpbGRyZW5PYnNlcnZlci50YWtlUmVjb3JkcygpKTp0aGlzLl9zaGFkeUNoaWxkcmVuT2JzZXJ2ZXImJnRoaXMuX3Byb2Nlc3NTbG90TXV0YXRpb25zKHRoaXMuX3NoYWR5Q2hpbGRyZW5PYnNlcnZlci50YWtlUmVjb3JkcygpKSx0aGlzLl9zY2hlZHVsZWQ9ITE7bGV0IHQ9e3RhcmdldDp0aGlzLl90YXJnZXQsYWRkZWROb2RlczpbXSxyZW1vdmVkTm9kZXM6W119LGU9dGhpcy5jb25zdHJ1Y3Rvci5nZXRGbGF0dGVuZWROb2Rlcyh0aGlzLl90YXJnZXQpLG49VmkoZSx0aGlzLl9lZmZlY3RpdmVOb2Rlcyk7Zm9yKGxldCBlLGk9MDtpPG4ubGVuZ3RoJiYoZT1uW2ldKTtpKyspZm9yKGxldCBuLGk9MDtpPGUucmVtb3ZlZC5sZW5ndGgmJihuPWUucmVtb3ZlZFtpXSk7aSsrKXQucmVtb3ZlZE5vZGVzLnB1c2gobik7Zm9yKGxldCBpLHI9MDtyPG4ubGVuZ3RoJiYoaT1uW3JdKTtyKyspZm9yKGxldCBuPWkuaW5kZXg7bjxpLmluZGV4K2kuYWRkZWRDb3VudDtuKyspdC5hZGRlZE5vZGVzLnB1c2goZVtuXSk7dGhpcy5fZWZmZWN0aXZlTm9kZXM9ZTtsZXQgaT0hMTtyZXR1cm4odC5hZGRlZE5vZGVzLmxlbmd0aHx8dC5yZW1vdmVkTm9kZXMubGVuZ3RoKSYmKGk9ITAsdGhpcy5jYWxsYmFjay5jYWxsKHRoaXMuX3RhcmdldCx0KSksaX1fbGlzdGVuU2xvdHModCl7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspe2xldCBuPXRbZV07amkobikmJm4uYWRkRXZlbnRMaXN0ZW5lcigic2xvdGNoYW5nZSIsdGhpcy5fYm91bmRTY2hlZHVsZSl9fV91bmxpc3RlblNsb3RzKHQpe2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKXtsZXQgbj10W2VdO2ppKG4pJiZuLnJlbW92ZUV2ZW50TGlzdGVuZXIoInNsb3RjaGFuZ2UiLHRoaXMuX2JvdW5kU2NoZWR1bGUpfX19OwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqL2NvbnN0IFdpPWZ1bmN0aW9uKCl7bGV0IHQsZTtkb3t0PXdpbmRvdy5TaGFkeURPTSYmU2hhZHlET00uZmx1c2goKSx3aW5kb3cuU2hhZHlDU1MmJndpbmRvdy5TaGFkeUNTUy5TY29waW5nU2hpbSYmd2luZG93LlNoYWR5Q1NTLlNjb3BpbmdTaGltLmZsdXNoKCksZT1PbigpfXdoaWxlKHR8fGUpfSxxaT1FbGVtZW50LnByb3RvdHlwZSxZaT1xaS5tYXRjaGVzfHxxaS5tYXRjaGVzU2VsZWN0b3J8fHFpLm1vek1hdGNoZXNTZWxlY3Rvcnx8cWkubXNNYXRjaGVzU2VsZWN0b3J8fHFpLm9NYXRjaGVzU2VsZWN0b3J8fHFpLndlYmtpdE1hdGNoZXNTZWxlY3RvcixYaT1mdW5jdGlvbih0LGUpe3JldHVybiBZaS5jYWxsKHQsZSl9OwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqL2NsYXNzICRpe2NvbnN0cnVjdG9yKHQpe3dpbmRvdy5TaGFkeURPTSYmd2luZG93LlNoYWR5RE9NLmluVXNlJiZ3aW5kb3cuU2hhZHlET00ucGF0Y2godCksdGhpcy5ub2RlPXR9b2JzZXJ2ZU5vZGVzKHQpe3JldHVybiBuZXcgR2kodGhpcy5ub2RlLHQpfXVub2JzZXJ2ZU5vZGVzKHQpe3QuZGlzY29ubmVjdCgpfW5vdGlmeU9ic2VydmVyKCl7fWRlZXBDb250YWlucyh0KXtpZihZKHRoaXMubm9kZSkuY29udGFpbnModCkpcmV0dXJuITA7bGV0IGU9dCxuPXQub3duZXJEb2N1bWVudDtmb3IoO2UmJmUhPT1uJiZlIT09dGhpcy5ub2RlOyllPVkoZSkucGFyZW50Tm9kZXx8WShlKS5ob3N0O3JldHVybiBlPT09dGhpcy5ub2RlfWdldE93bmVyUm9vdCgpe3JldHVybiBZKHRoaXMubm9kZSkuZ2V0Um9vdE5vZGUoKX1nZXREaXN0cmlidXRlZE5vZGVzKCl7cmV0dXJuInNsb3QiPT09dGhpcy5ub2RlLmxvY2FsTmFtZT9ZKHRoaXMubm9kZSkuYXNzaWduZWROb2Rlcyh7ZmxhdHRlbjohMH0pOltdfWdldERlc3RpbmF0aW9uSW5zZXJ0aW9uUG9pbnRzKCl7bGV0IHQ9W10sZT1ZKHRoaXMubm9kZSkuYXNzaWduZWRTbG90O2Zvcig7ZTspdC5wdXNoKGUpLGU9WShlKS5hc3NpZ25lZFNsb3Q7cmV0dXJuIHR9aW1wb3J0Tm9kZSh0LGUpe2xldCBuPXRoaXMubm9kZSBpbnN0YW5jZW9mIERvY3VtZW50P3RoaXMubm9kZTp0aGlzLm5vZGUub3duZXJEb2N1bWVudDtyZXR1cm4gWShuKS5pbXBvcnROb2RlKHQsZSl9Z2V0RWZmZWN0aXZlQ2hpbGROb2Rlcygpe3JldHVybiBHaS5nZXRGbGF0dGVuZWROb2Rlcyh0aGlzLm5vZGUpfXF1ZXJ5RGlzdHJpYnV0ZWRFbGVtZW50cyh0KXtsZXQgZT10aGlzLmdldEVmZmVjdGl2ZUNoaWxkTm9kZXMoKSxuPVtdO2ZvcihsZXQgaSxyPTAsbz1lLmxlbmd0aDtyPG8mJihpPWVbcl0pO3IrKylpLm5vZGVUeXBlPT09Tm9kZS5FTEVNRU5UX05PREUmJlhpKGksdCkmJm4ucHVzaChpKTtyZXR1cm4gbn1nZXQgYWN0aXZlRWxlbWVudCgpe2xldCB0PXRoaXMubm9kZTtyZXR1cm4gdm9pZCAwIT09dC5fYWN0aXZlRWxlbWVudD90Ll9hY3RpdmVFbGVtZW50OnQuYWN0aXZlRWxlbWVudH19ZnVuY3Rpb24gS2kodCxlKXtmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rKyl7bGV0IGk9ZVtuXTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxpLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ub2RlW2ldfSxjb25maWd1cmFibGU6ITB9KX19Y2xhc3MgWml7Y29uc3RydWN0b3IodCl7dGhpcy5ldmVudD10fWdldCByb290VGFyZ2V0KCl7cmV0dXJuIHRoaXMucGF0aFswXX1nZXQgbG9jYWxUYXJnZXQoKXtyZXR1cm4gdGhpcy5ldmVudC50YXJnZXR9Z2V0IHBhdGgoKXtyZXR1cm4gdGhpcy5ldmVudC5jb21wb3NlZFBhdGgoKX19bGV0IEppPSRpO2lmKHdpbmRvdy5TaGFkeURPTSYmd2luZG93LlNoYWR5RE9NLmluVXNlJiZ3aW5kb3cuU2hhZHlET00ubm9QYXRjaCYmd2luZG93LlNoYWR5RE9NLldyYXBwZXIpe2NsYXNzIHQgZXh0ZW5kcyB3aW5kb3cuU2hhZHlET00uV3JhcHBlcnt9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoJGkucHJvdG90eXBlKS5mb3JFYWNoKChlPT57ImFjdGl2ZUVsZW1lbnQiIT1lJiYodC5wcm90b3R5cGVbZV09JGkucHJvdG90eXBlW2VdKX0pKSxLaSh0LnByb3RvdHlwZSxbImNsYXNzTGlzdCJdKSxKaT10LE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKFppLnByb3RvdHlwZSx7bG9jYWxUYXJnZXQ6e2dldCgpe2NvbnN0IHQ9dGhpcy5ldmVudC5jdXJyZW50VGFyZ2V0LGU9dCYmZXIodCkuZ2V0T3duZXJSb290KCksbj10aGlzLnBhdGg7Zm9yKGxldCB0PTA7dDxuLmxlbmd0aDt0Kyspe2NvbnN0IGk9blt0XTtpZihlcihpKS5nZXRPd25lclJvb3QoKT09PWUpcmV0dXJuIGl9fSxjb25maWd1cmFibGU6ITB9LHBhdGg6e2dldCgpe3JldHVybiB3aW5kb3cuU2hhZHlET00uY29tcG9zZWRQYXRoKHRoaXMuZXZlbnQpfSxjb25maWd1cmFibGU6ITB9fSl9ZWxzZSEoZnVuY3Rpb24gUWkodCxlKXtmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rKyl7bGV0IGk9ZVtuXTt0W2ldPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubm9kZVtpXS5hcHBseSh0aGlzLm5vZGUsYXJndW1lbnRzKX19fSkoJGkucHJvdG90eXBlLFsiY2xvbmVOb2RlIiwiYXBwZW5kQ2hpbGQiLCJpbnNlcnRCZWZvcmUiLCJyZW1vdmVDaGlsZCIsInJlcGxhY2VDaGlsZCIsInNldEF0dHJpYnV0ZSIsInJlbW92ZUF0dHJpYnV0ZSIsInF1ZXJ5U2VsZWN0b3IiLCJxdWVyeVNlbGVjdG9yQWxsIl0pLEtpKCRpLnByb3RvdHlwZSxbInBhcmVudE5vZGUiLCJmaXJzdENoaWxkIiwibGFzdENoaWxkIiwibmV4dFNpYmxpbmciLCJwcmV2aW91c1NpYmxpbmciLCJmaXJzdEVsZW1lbnRDaGlsZCIsImxhc3RFbGVtZW50Q2hpbGQiLCJuZXh0RWxlbWVudFNpYmxpbmciLCJwcmV2aW91c0VsZW1lbnRTaWJsaW5nIiwiY2hpbGROb2RlcyIsImNoaWxkcmVuIiwiY2xhc3NMaXN0Il0pLChmdW5jdGlvbiB0cih0LGUpe2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7bisrKXtsZXQgaT1lW25dO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGkse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm5vZGVbaV19LHNldDpmdW5jdGlvbih0KXt0aGlzLm5vZGVbaV09dH0sY29uZmlndXJhYmxlOiEwfSl9fSkoJGkucHJvdG90eXBlLFsidGV4dENvbnRlbnQiLCJpbm5lckhUTUwiLCJjbGFzc05hbWUiXSk7Y29uc3QgZXI9ZnVuY3Rpb24odCl7aWYoKHQ9dHx8ZG9jdW1lbnQpaW5zdGFuY2VvZiBKaSlyZXR1cm4gdDtpZih0IGluc3RhbmNlb2YgWmkpcmV0dXJuIHQ7bGV0IGU9dC5fX2RvbUFwaTtyZXR1cm4gZXx8KGU9dCBpbnN0YW5jZW9mIEV2ZW50P25ldyBaaSh0KTpuZXcgSmkodCksdC5fX2RvbUFwaT1lKSxlfSxucj13aW5kb3cuU2hhZHlET00saXI9d2luZG93LlNoYWR5Q1NTOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqL2Z1bmN0aW9uIHJyKHQsZSl7cmV0dXJuIFkodCkuZ2V0Um9vdE5vZGUoKT09PWV9Ci8qKgogICAgICogQGZpbGVvdmVydmlldwogICAgICogQHN1cHByZXNzIHtjaGVja1Byb3RvdHlwYWxUeXBlc30KICAgICAqIEBsaWNlbnNlIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICAgKiBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgICAqIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kCiAgICAgKiBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5CiAgICAgKiBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5CiAgICAgKiBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQCiAgICAgKiByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAgKi8KY29uc3Qgb3I9ImRpc2FibGUtdXBncmFkZSIsYXI9dD0+e2Zvcig7dDspe2NvbnN0IGU9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LCJvYnNlcnZlZEF0dHJpYnV0ZXMiKTtpZihlKXJldHVybiBlLmdldDt0PU9iamVjdC5nZXRQcm90b3R5cGVPZih0LnByb3RvdHlwZSkuY29uc3RydWN0b3J9cmV0dXJuKCk9PltdfTtJKCh0PT57Y29uc3QgZT15ZSh0KTtsZXQgbj1hcihlKTtyZXR1cm4gY2xhc3MgZXh0ZW5kcyBle2NvbnN0cnVjdG9yKCl7c3VwZXIoKX1zdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcygpe3JldHVybiBuLmNhbGwodGhpcykuY29uY2F0KG9yKX1faW5pdGlhbGl6ZVByb3BlcnRpZXMoKXt0aGlzLmhhc0F0dHJpYnV0ZShvcik/dGhpcy5fX2lzVXBncmFkZURpc2FibGVkPSEwOnN1cGVyLl9pbml0aWFsaXplUHJvcGVydGllcygpfV9lbmFibGVQcm9wZXJ0aWVzKCl7dGhpcy5fX2lzVXBncmFkZURpc2FibGVkfHxzdXBlci5fZW5hYmxlUHJvcGVydGllcygpfV9jYW5BcHBseVByb3BlcnR5RGVmYXVsdCh0KXtyZXR1cm4gc3VwZXIuX2NhbkFwcGx5UHJvcGVydHlEZWZhdWx0KHQpJiYhKHRoaXMuX19pc1VwZ3JhZGVEaXNhYmxlZCYmdGhpcy5faXNQcm9wZXJ0eVBlbmRpbmcodCkpfWF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayh0LGUsbixpKXt0PT1vcj90aGlzLl9faXNVcGdyYWRlRGlzYWJsZWQmJm51bGw9PW4mJihzdXBlci5faW5pdGlhbGl6ZVByb3BlcnRpZXMoKSx0aGlzLl9faXNVcGdyYWRlRGlzYWJsZWQ9ITEsWSh0aGlzKS5pc0Nvbm5lY3RlZCYmc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKSk6c3VwZXIuYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKHQsZSxuLGkpfWNvbm5lY3RlZENhbGxiYWNrKCl7dGhpcy5fX2lzVXBncmFkZURpc2FibGVkfHxzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpfWRpc2Nvbm5lY3RlZENhbGxiYWNrKCl7dGhpcy5fX2lzVXBncmFkZURpc2FibGVkfHxzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpfX19KSk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNvbnN0IHNyPSJkaXNhYmxlLXVwZ3JhZGUiO2xldCBscj13aW5kb3cuU2hhZHlDU1M7Y29uc3QgY3I9SSgodD0+e2NvbnN0IGU9YmkoeWUodCkpLG49X2U/ZTpQaShlKSxpPWFyKG4pLHI9e3g6InBhbi14Iix5OiJwYW4teSIsbm9uZToibm9uZSIsYWxsOiJhdXRvIn07Y2xhc3MgbyBleHRlbmRzIG57Y29uc3RydWN0b3IoKXtzdXBlcigpfXN0YXRpYyBnZXQgaW1wb3J0TWV0YSgpe3JldHVybiB0aGlzLnByb3RvdHlwZS5pbXBvcnRNZXRhfWNyZWF0ZWQoKXt9X19hdHRyaWJ1dGVSZWFjdGlvbih0LGUsbil7KHRoaXMuX19kYXRhQXR0cmlidXRlcyYmdGhpcy5fX2RhdGFBdHRyaWJ1dGVzW3RdfHx0PT09c3IpJiZ0aGlzLmF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayh0LGUsbixudWxsKX1zZXRBdHRyaWJ1dGUodCxlKXtpZihMJiYhdGhpcy5fbGVnYWN5Rm9yY2VPYnNlcnZlZEF0dHJpYnV0ZXMpe2NvbnN0IG49dGhpcy5nZXRBdHRyaWJ1dGUodCk7c3VwZXIuc2V0QXR0cmlidXRlKHQsZSksdGhpcy5fX2F0dHJpYnV0ZVJlYWN0aW9uKHQsbixTdHJpbmcoZSkpfWVsc2Ugc3VwZXIuc2V0QXR0cmlidXRlKHQsZSl9cmVtb3ZlQXR0cmlidXRlKHQpe2lmKEwmJiF0aGlzLl9sZWdhY3lGb3JjZU9ic2VydmVkQXR0cmlidXRlcyl7Y29uc3QgZT10aGlzLmdldEF0dHJpYnV0ZSh0KTtzdXBlci5yZW1vdmVBdHRyaWJ1dGUodCksdGhpcy5fX2F0dHJpYnV0ZVJlYWN0aW9uKHQsZSxudWxsKX1lbHNlIHN1cGVyLnJlbW92ZUF0dHJpYnV0ZSh0KX1zdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcygpe3JldHVybiBMJiYhdGhpcy5wcm90b3R5cGUuX2xlZ2FjeUZvcmNlT2JzZXJ2ZWRBdHRyaWJ1dGVzPyh0aGlzLmhhc093blByb3BlcnR5KEpTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoIl9fb2JzZXJ2ZWRBdHRyaWJ1dGVzIix0aGlzKSl8fCh0aGlzLl9fb2JzZXJ2ZWRBdHRyaWJ1dGVzPVtdKSx0aGlzLl9fb2JzZXJ2ZWRBdHRyaWJ1dGVzKTppLmNhbGwodGhpcykuY29uY2F0KHNyKX1fZW5hYmxlUHJvcGVydGllcygpe3RoaXMuX19pc1VwZ3JhZGVEaXNhYmxlZHx8c3VwZXIuX2VuYWJsZVByb3BlcnRpZXMoKX1fY2FuQXBwbHlQcm9wZXJ0eURlZmF1bHQodCl7cmV0dXJuIHN1cGVyLl9jYW5BcHBseVByb3BlcnR5RGVmYXVsdCh0KSYmISh0aGlzLl9faXNVcGdyYWRlRGlzYWJsZWQmJnRoaXMuX2lzUHJvcGVydHlQZW5kaW5nKHQpKX1jb25uZWN0ZWRDYWxsYmFjaygpe3RoaXMuX19uZWVkc0F0dHJpYnV0ZXNBdENvbm5lY3RlZCYmdGhpcy5fdGFrZUF0dHJpYnV0ZXMoKSx0aGlzLl9faXNVcGdyYWRlRGlzYWJsZWR8fChzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpLHRoaXMuaXNBdHRhY2hlZD0hMCx0aGlzLmF0dGFjaGVkKCkpfWF0dGFjaGVkKCl7fWRpc2Nvbm5lY3RlZENhbGxiYWNrKCl7dGhpcy5fX2lzVXBncmFkZURpc2FibGVkfHwoc3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKSx0aGlzLmlzQXR0YWNoZWQ9ITEsdGhpcy5kZXRhY2hlZCgpKX1kZXRhY2hlZCgpe31hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sodCxlLG4saSl7ZSE9PW4mJih0PT1zcj90aGlzLl9faXNVcGdyYWRlRGlzYWJsZWQmJm51bGw9PW4mJih0aGlzLl9pbml0aWFsaXplUHJvcGVydGllcygpLHRoaXMuX19pc1VwZ3JhZGVEaXNhYmxlZD0hMSxZKHRoaXMpLmlzQ29ubmVjdGVkJiZ0aGlzLmNvbm5lY3RlZENhbGxiYWNrKCkpOihzdXBlci5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sodCxlLG4saSksdGhpcy5hdHRyaWJ1dGVDaGFuZ2VkKHQsZSxuKSkpfWF0dHJpYnV0ZUNoYW5nZWQodCxlLG4pe31faW5pdGlhbGl6ZVByb3BlcnRpZXMoKXtpZih3JiZ0aGlzLmhhc0F0dHJpYnV0ZShzcikpdGhpcy5fX2lzVXBncmFkZURpc2FibGVkPSEwO2Vsc2V7bGV0IHQ9T2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpO3QuaGFzT3duUHJvcGVydHkoSlNDb21waWxlcl9yZW5hbWVQcm9wZXJ0eSgiX19oYXNSZWdpc3RlckZpbmlzaGVkIix0KSl8fCh0aGlzLl9yZWdpc3RlcmVkKCksdC5fX2hhc1JlZ2lzdGVyRmluaXNoZWQ9ITApLHN1cGVyLl9pbml0aWFsaXplUHJvcGVydGllcygpLHRoaXMucm9vdD10aGlzLHRoaXMuY3JlYXRlZCgpLEwmJiF0aGlzLl9sZWdhY3lGb3JjZU9ic2VydmVkQXR0cmlidXRlcyYmKHRoaXMuaGFzQXR0cmlidXRlcygpP3RoaXMuX3Rha2VBdHRyaWJ1dGVzKCk6dGhpcy5wYXJlbnROb2RlfHwodGhpcy5fX25lZWRzQXR0cmlidXRlc0F0Q29ubmVjdGVkPSEwKSksdGhpcy5fYXBwbHlMaXN0ZW5lcnMoKX19X3Rha2VBdHRyaWJ1dGVzKCl7Y29uc3QgdD10aGlzLmF0dHJpYnV0ZXM7Zm9yKGxldCBlPTAsbj10Lmxlbmd0aDtlPG47ZSsrKXtjb25zdCBuPXRbZV07dGhpcy5fX2F0dHJpYnV0ZVJlYWN0aW9uKG4ubmFtZSxudWxsLG4udmFsdWUpfX1fcmVnaXN0ZXJlZCgpe31yZWFkeSgpe3RoaXMuX2Vuc3VyZUF0dHJpYnV0ZXMoKSxzdXBlci5yZWFkeSgpfV9lbnN1cmVBdHRyaWJ1dGVzKCl7fV9hcHBseUxpc3RlbmVycygpe31zZXJpYWxpemUodCl7cmV0dXJuIHRoaXMuX3NlcmlhbGl6ZVZhbHVlKHQpfWRlc2VyaWFsaXplKHQsZSl7cmV0dXJuIHRoaXMuX2Rlc2VyaWFsaXplVmFsdWUodCxlKX1yZWZsZWN0UHJvcGVydHlUb0F0dHJpYnV0ZSh0LGUsbil7dGhpcy5fcHJvcGVydHlUb0F0dHJpYnV0ZSh0LGUsbil9c2VyaWFsaXplVmFsdWVUb0F0dHJpYnV0ZSh0LGUsbil7dGhpcy5fdmFsdWVUb05vZGVBdHRyaWJ1dGUobnx8dGhpcyx0LGUpfWV4dGVuZCh0LGUpe2lmKCF0fHwhZSlyZXR1cm4gdHx8ZTtsZXQgbj1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhlKTtmb3IobGV0IGkscj0wO3I8bi5sZW5ndGgmJihpPW5bcl0pO3IrKyl7bGV0IG49T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLGkpO24mJk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGksbil9cmV0dXJuIHR9bWl4aW4odCxlKXtmb3IobGV0IG4gaW4gZSl0W25dPWVbbl07cmV0dXJuIHR9Y2hhaW5PYmplY3QodCxlKXtyZXR1cm4gdCYmZSYmdCE9PWUmJih0Ll9fcHJvdG9fXz1lKSx0fWluc3RhbmNlVGVtcGxhdGUodCl7bGV0IGU9dGhpcy5jb25zdHJ1Y3Rvci5fY29udGVudEZvclRlbXBsYXRlKHQpO3JldHVybiBkb2N1bWVudC5pbXBvcnROb2RlKGUsITApfWZpcmUodCxlLG4pe249bnx8e30sZT1udWxsPT1lP3t9OmU7bGV0IGk9bmV3IEV2ZW50KHQse2J1YmJsZXM6dm9pZCAwPT09bi5idWJibGVzfHxuLmJ1YmJsZXMsY2FuY2VsYWJsZTpCb29sZWFuKG4uY2FuY2VsYWJsZSksY29tcG9zZWQ6dm9pZCAwPT09bi5jb21wb3NlZHx8bi5jb21wb3NlZH0pO3JldHVybiBpLmRldGFpbD1lLFkobi5ub2RlfHx0aGlzKS5kaXNwYXRjaEV2ZW50KGkpLGl9bGlzdGVuKHQsZSxuKXt0PXR8fHRoaXM7bGV0IGk9dGhpcy5fX2JvdW5kTGlzdGVuZXJzfHwodGhpcy5fX2JvdW5kTGlzdGVuZXJzPW5ldyBXZWFrTWFwKSxyPWkuZ2V0KHQpO3J8fChyPXt9LGkuc2V0KHQscikpO2xldCBvPWUrbjtyW29dfHwocltvXT10aGlzLl9hZGRNZXRob2RFdmVudExpc3RlbmVyVG9Ob2RlKHQsZSxuLHRoaXMpKX11bmxpc3Rlbih0LGUsbil7dD10fHx0aGlzO2xldCBpPXRoaXMuX19ib3VuZExpc3RlbmVycyYmdGhpcy5fX2JvdW5kTGlzdGVuZXJzLmdldCh0KSxyPWUrbixvPWkmJmlbcl07byYmKHRoaXMuX3JlbW92ZUV2ZW50TGlzdGVuZXJGcm9tTm9kZSh0LGUsbyksaVtyXT1udWxsKX1zZXRTY3JvbGxEaXJlY3Rpb24odCxlKXtkaShlfHx0aGlzLHJbdF18fCJhdXRvIil9JCQodCl7cmV0dXJuIHRoaXMucm9vdC5xdWVyeVNlbGVjdG9yKHQpfWdldCBkb21Ib3N0KCl7bGV0IHQ9WSh0aGlzKS5nZXRSb290Tm9kZSgpO3JldHVybiB0IGluc3RhbmNlb2YgRG9jdW1lbnRGcmFnbWVudD90Lmhvc3Q6dH1kaXN0cmlidXRlQ29udGVudCgpe2NvbnN0IHQ9ZXIodGhpcyk7d2luZG93LlNoYWR5RE9NJiZ0LnNoYWRvd1Jvb3QmJlNoYWR5RE9NLmZsdXNoKCl9Z2V0RWZmZWN0aXZlQ2hpbGROb2Rlcygpe3JldHVybiBlcih0aGlzKS5nZXRFZmZlY3RpdmVDaGlsZE5vZGVzKCl9cXVlcnlEaXN0cmlidXRlZEVsZW1lbnRzKHQpe3JldHVybiBlcih0aGlzKS5xdWVyeURpc3RyaWJ1dGVkRWxlbWVudHModCl9Z2V0RWZmZWN0aXZlQ2hpbGRyZW4oKXtyZXR1cm4gdGhpcy5nZXRFZmZlY3RpdmVDaGlsZE5vZGVzKCkuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gdC5ub2RlVHlwZT09PU5vZGUuRUxFTUVOVF9OT0RFfSkpfWdldEVmZmVjdGl2ZVRleHRDb250ZW50KCl7bGV0IHQ9dGhpcy5nZXRFZmZlY3RpdmVDaGlsZE5vZGVzKCksZT1bXTtmb3IobGV0IG4saT0wO249dFtpXTtpKyspbi5ub2RlVHlwZSE9PU5vZGUuQ09NTUVOVF9OT0RFJiZlLnB1c2gobi50ZXh0Q29udGVudCk7cmV0dXJuIGUuam9pbigiIil9cXVlcnlFZmZlY3RpdmVDaGlsZHJlbih0KXtsZXQgZT10aGlzLnF1ZXJ5RGlzdHJpYnV0ZWRFbGVtZW50cyh0KTtyZXR1cm4gZSYmZVswXX1xdWVyeUFsbEVmZmVjdGl2ZUNoaWxkcmVuKHQpe3JldHVybiB0aGlzLnF1ZXJ5RGlzdHJpYnV0ZWRFbGVtZW50cyh0KX1nZXRDb250ZW50Q2hpbGROb2Rlcyh0KXtsZXQgZT10aGlzLnJvb3QucXVlcnlTZWxlY3Rvcih0fHwic2xvdCIpO3JldHVybiBlP2VyKGUpLmdldERpc3RyaWJ1dGVkTm9kZXMoKTpbXX1nZXRDb250ZW50Q2hpbGRyZW4odCl7cmV0dXJuIHRoaXMuZ2V0Q29udGVudENoaWxkTm9kZXModCkuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gdC5ub2RlVHlwZT09PU5vZGUuRUxFTUVOVF9OT0RFfSkpfWlzTGlnaHREZXNjZW5kYW50KHQpe2NvbnN0IGU9dGhpcztyZXR1cm4gZSE9PXQmJlkoZSkuY29udGFpbnModCkmJlkoZSkuZ2V0Um9vdE5vZGUoKT09PVkodCkuZ2V0Um9vdE5vZGUoKX1pc0xvY2FsRGVzY2VuZGFudCh0KXtyZXR1cm4gdGhpcy5yb290PT09WSh0KS5nZXRSb290Tm9kZSgpfXNjb3BlU3VidHJlZSh0LGU9ITEpe3JldHVybihmdW5jdGlvbiBuKHQsZT0hMSl7aWYoIW5yfHwhaXIpcmV0dXJuIG51bGw7aWYoIW5yLmhhbmRsZXNEeW5hbWljU2NvcGluZylyZXR1cm4gbnVsbDtjb25zdCBuPWlyLlNjb3BpbmdTaGltO2lmKCFuKXJldHVybiBudWxsO2NvbnN0IGk9bi5zY29wZUZvck5vZGUodCkscj1ZKHQpLmdldFJvb3ROb2RlKCksbz10PT57aWYoIXJyKHQscikpcmV0dXJuO2NvbnN0IGU9QXJyYXkuZnJvbShuci5uYXRpdmVNZXRob2RzLnF1ZXJ5U2VsZWN0b3JBbGwuY2FsbCh0LCIqIikpO2UucHVzaCh0KTtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKyl7Y29uc3Qgbz1lW3RdO2lmKCFycihvLHIpKWNvbnRpbnVlO2NvbnN0IGE9bi5jdXJyZW50U2NvcGVGb3JOb2RlKG8pO2EhPT1pJiYoIiIhPT1hJiZuLnVuc2NvcGVOb2RlKG8sYSksbi5zY29wZU5vZGUobyxpKSl9fTtpZihvKHQpLGUpe2NvbnN0IGU9bmV3IE11dGF0aW9uT2JzZXJ2ZXIoKHQ9Pntmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKyl7Y29uc3Qgbj10W2VdO2ZvcihsZXQgdD0wO3Q8bi5hZGRlZE5vZGVzLmxlbmd0aDt0Kyspe2NvbnN0IGU9bi5hZGRlZE5vZGVzW3RdO2Uubm9kZVR5cGU9PT1Ob2RlLkVMRU1FTlRfTk9ERSYmbyhlKX19fSkpO3JldHVybiBlLm9ic2VydmUodCx7Y2hpbGRMaXN0OiEwLHN1YnRyZWU6ITB9KSxlfXJldHVybiBudWxsfSkodCxlKX1nZXRDb21wdXRlZFN0eWxlVmFsdWUodCl7cmV0dXJuIGxyLmdldENvbXB1dGVkU3R5bGVWYWx1ZSh0aGlzLHQpfWRlYm91bmNlKHQsZSxuKXtyZXR1cm4gdGhpcy5fZGVib3VuY2Vycz10aGlzLl9kZWJvdW5jZXJzfHx7fSx0aGlzLl9kZWJvdW5jZXJzW3RdPU5uLmRlYm91bmNlKHRoaXMuX2RlYm91bmNlcnNbdF0sbj4wP2d0LmFmdGVyKG4pOnZ0LGUuYmluZCh0aGlzKSl9aXNEZWJvdW5jZXJBY3RpdmUodCl7dGhpcy5fZGVib3VuY2Vycz10aGlzLl9kZWJvdW5jZXJzfHx7fTtsZXQgZT10aGlzLl9kZWJvdW5jZXJzW3RdO3JldHVybiEoIWV8fCFlLmlzQWN0aXZlKCkpfWZsdXNoRGVib3VuY2VyKHQpe3RoaXMuX2RlYm91bmNlcnM9dGhpcy5fZGVib3VuY2Vyc3x8e307bGV0IGU9dGhpcy5fZGVib3VuY2Vyc1t0XTtlJiZlLmZsdXNoKCl9Y2FuY2VsRGVib3VuY2VyKHQpe3RoaXMuX2RlYm91bmNlcnM9dGhpcy5fZGVib3VuY2Vyc3x8e307bGV0IGU9dGhpcy5fZGVib3VuY2Vyc1t0XTtlJiZlLmNhbmNlbCgpfWFzeW5jKHQsZSl7cmV0dXJuIGU+MD9ndC5ydW4odC5iaW5kKHRoaXMpLGUpOn52dC5ydW4odC5iaW5kKHRoaXMpKX1jYW5jZWxBc3luYyh0KXt0PDA/dnQuY2FuY2VsKH50KTpndC5jYW5jZWwodCl9Y3JlYXRlKHQsZSl7bGV0IG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0KTtpZihlKWlmKG4uc2V0UHJvcGVydGllcyluLnNldFByb3BlcnRpZXMoZSk7ZWxzZSBmb3IobGV0IHQgaW4gZSluW3RdPWVbdF07cmV0dXJuIG59ZWxlbWVudE1hdGNoZXModCxlKXtyZXR1cm4gWGkoZXx8dGhpcyx0KX10b2dnbGVBdHRyaWJ1dGUodCxlKXtsZXQgbj10aGlzO3JldHVybiAzPT09YXJndW1lbnRzLmxlbmd0aCYmKG49YXJndW1lbnRzWzJdKSwxPT1hcmd1bWVudHMubGVuZ3RoJiYoZT0hbi5oYXNBdHRyaWJ1dGUodCkpLGU/KFkobikuc2V0QXR0cmlidXRlKHQsIiIpLCEwKTooWShuKS5yZW1vdmVBdHRyaWJ1dGUodCksITEpfXRvZ2dsZUNsYXNzKHQsZSxuKXtuPW58fHRoaXMsMT09YXJndW1lbnRzLmxlbmd0aCYmKGU9IW4uY2xhc3NMaXN0LmNvbnRhaW5zKHQpKSxlP24uY2xhc3NMaXN0LmFkZCh0KTpuLmNsYXNzTGlzdC5yZW1vdmUodCl9dHJhbnNmb3JtKHQsZSl7KGU9ZXx8dGhpcykuc3R5bGUud2Via2l0VHJhbnNmb3JtPXQsZS5zdHlsZS50cmFuc2Zvcm09dH10cmFuc2xhdGUzZCh0LGUsbixpKXt0aGlzLnRyYW5zZm9ybSgidHJhbnNsYXRlM2QoIit0KyIsIitlKyIsIituKyIpIixpPWl8fHRoaXMpfWFycmF5RGVsZXRlKHQsZSl7bGV0IG47aWYoQXJyYXkuaXNBcnJheSh0KSl7aWYobj10LmluZGV4T2YoZSksbj49MClyZXR1cm4gdC5zcGxpY2UobiwxKX1lbHNle2lmKG49bnQodGhpcyx0KS5pbmRleE9mKGUpLG4+PTApcmV0dXJuIHRoaXMuc3BsaWNlKHQsbiwxKX1yZXR1cm4gbnVsbH1fbG9nZ2VyKHQsZSl7c3dpdGNoKEFycmF5LmlzQXJyYXkoZSkmJjE9PT1lLmxlbmd0aCYmQXJyYXkuaXNBcnJheShlWzBdKSYmKGU9ZVswXSksdCl7Y2FzZSJsb2ciOmNhc2Uid2FybiI6Y2FzZSJlcnJvciI6Y29uc29sZVt0XSguLi5lKX19X2xvZyguLi50KXt0aGlzLl9sb2dnZXIoImxvZyIsdCl9X3dhcm4oLi4udCl7dGhpcy5fbG9nZ2VyKCJ3YXJuIix0KX1fZXJyb3IoLi4udCl7dGhpcy5fbG9nZ2VyKCJlcnJvciIsdCl9X2xvZ2YodCwuLi5lKXtyZXR1cm5bIlslczo6JXNdIix0aGlzLmlzLHQsLi4uZV19fXJldHVybiBvLnByb3RvdHlwZS5pcz0iIixvfSkpO2Z1bmN0aW9uIHVyKHQsZSl7bGV0IG49MCxpPTA7Zm9yKDs7KXtpZihuPT09dC5sZW5ndGgpcmV0dXJuIGk9PT1lLmxlbmd0aD8wOi0xO2lmKGk9PT1lLmxlbmd0aClyZXR1cm4gMTtpZihkcih0W25dKSYmZHIoZVtpXSkpe2NvbnN0IHI9bixvPWk7bj1ocih0LG4rMSksaT1ocihlLGkrMSk7Y29uc3QgYT1wYXJzZUZsb2F0KHQuc2xpY2UocixuKSkscz1wYXJzZUZsb2F0KGUuc2xpY2UobyxpKSk7aWYoYTxzKXJldHVybi0xO2lmKGE+cylyZXR1cm4gMX1lbHNle2lmKHByKHRbbl0pKXtpZighcHIoZVtpXSkpcmV0dXJuLTF9ZWxzZXtpZihwcihlW2ldKSlyZXR1cm4gMTtpZih0W25dPGVbaV0pcmV0dXJuLTE7aWYodFtuXT5lW2ldKXJldHVybiAxfW4rKyxpKyt9fX1mdW5jdGlvbiBocih0LGUpe2xldCBuOyEoZnVuY3Rpb24odCl7dFt0Lk5BVFVSQUw9MF09Ik5BVFVSQUwiLHRbdC5SRUFMPTFdPSJSRUFMIix0W3QuRVhQT05FTlRfU0lHTj0yXT0iRVhQT05FTlRfU0lHTiIsdFt0LkVYUE9ORU5UPTNdPSJFWFBPTkVOVCJ9KShufHwobj17fSkpO2xldCBpPW4uTkFUVVJBTDtmb3IoO2U8dC5sZW5ndGg7ZSsrKWlmKGk9PT1uLk5BVFVSQUwpe2lmKCIuIj09PXRbZV0paT1uLlJFQUw7ZWxzZSBpZigiZSI9PT10W2VdfHwiRSI9PT10W2VdKWk9bi5FWFBPTkVOVF9TSUdOO2Vsc2UgaWYoIWRyKHRbZV0pKWJyZWFrfWVsc2UgaWYoaT09PW4uUkVBTCl7aWYoImUiPT09dFtlXXx8IkUiPT09dFtlXSlpPW4uRVhQT05FTlRfU0lHTjtlbHNlIGlmKCFkcih0W2VdKSlicmVha31lbHNlIGlmKGk9PT1uLkVYUE9ORU5UX1NJR04pe2lmKCFkcih0W2VdKSYmIisiIT09dFtlXSYmIi0iIT09dFtlXSlicmVhaztpPW4uRVhQT05FTlR9ZWxzZSBpZihpPT09bi5FWFBPTkVOVCYmIWRyKHRbZV0pKWJyZWFrO3JldHVybiBlfWZ1bmN0aW9uIGRyKHQpe3JldHVybiIwIjw9dCYmdDw9IjkifWZ1bmN0aW9uIHByKHQpe3JldHVybiIvIj09PXR8fCJfIj09PXR8fGRyKHQpfWZ1bmN0aW9uIGZyKHQpe3JldHVybiBDZS5leHBvcnRzLnVuaW9uLmFwcGx5KG51bGwsQ2UuZXhwb3J0cy52YWx1ZXModCkpLnNvcnQodXIpfWNsYXNzIG1yIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMubmFtZT0iUmVxdWVzdENhbmNlbGxhdGlvbkVycm9yIn19Y2xhc3MgZ3IgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KSx0aGlzLm5hbWU9IkludmFsaWRSZXF1ZXN0T3B0aW9uc0Vycm9yIixPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcyxnci5wcm90b3R5cGUpfX1jbGFzcyBfciBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIoKSx0aGlzLm1lc3NhZ2U9YFJlcXVlc3ROZXR3b3JrRXJyb3I6ICR7dC5zdGF0dXN9IGF0ICR7ZX1gLHRoaXMubmFtZT0iUmVxdWVzdE5ldHdvcmtFcnJvciIsdGhpcy5yZXE9dCx0aGlzLnVybD1lfX12YXIgeXI7IShmdW5jdGlvbih0KXt0LkdFVD0iR0VUIix0LlBPU1Q9IlBPU1QifSkoeXJ8fCh5cj17fSkpO2NsYXNzIHZye3ZhbGlkYXRlKCl7aWYodGhpcy5tZXRob2RUeXBlPT09eXIuR0VUJiZ0aGlzLmJvZHkpdGhyb3cgbmV3IGdyKCJib2R5IG11c3QgYmUgbWlzc2luZyBmb3IgYSBHRVQgcmVxdWVzdC4iKX19Y2xhc3MgYnJ7Y29uc3RydWN0b3IodD0xZTMsZT0zKXt0aGlzLl9xdWV1ZT1bXSx0aGlzLl9uQWN0aXZlUmVxdWVzdHM9MCx0aGlzLl9uU2ltdWx0YW5lb3VzUmVxdWVzdHM9dCx0aGlzLl9tYXhSZXRyaWVzPWV9cmVxdWVzdCh0LGUpe2NvbnN0IG49KGZ1bmN0aW9uIGkodCl7Y29uc3QgZT1uZXcgdnI7aWYoIXQpcmV0dXJuIGUubWV0aG9kVHlwZT15ci5HRVQsZTtyZXR1cm4gZS5tZXRob2RUeXBlPXlyLlBPU1QsZS5ib2R5PShmdW5jdGlvbiBuKHQpe2NvbnN0IGU9bmV3IEZvcm1EYXRhO2Zvcihjb25zdFtuLGldb2YgT2JqZWN0LmVudHJpZXModCkpe2NvbnN0IHQ9QXJyYXkuaXNBcnJheShpKT9pOltpXTtmb3IoY29uc3QgaSBvZiB0KWUuYXBwZW5kKG4saSl9cmV0dXJuIGV9KSh0KSxlfSkoZSk7cmV0dXJuIHRoaXMucmVxdWVzdFdpdGhPcHRpb25zKHQsbil9cmVxdWVzdFdpdGhPcHRpb25zKHQsZSl7ZS52YWxpZGF0ZSgpO3JldHVybiBuZXcgUHJvbWlzZSgoKHQsZSk9Pnt0aGlzLl9xdWV1ZS5wdXNoKHtyZXNvbHZlOnQscmVqZWN0OmV9KSx0aGlzLmxhdW5jaFJlcXVlc3RzKCl9KSkudGhlbigoKCk9PnRoaXMucHJvbWlzZVdpdGhSZXRyaWVzKHQsdGhpcy5fbWF4UmV0cmllcyxlKSkpLnRoZW4oKHQ9Pih0aGlzLl9uQWN0aXZlUmVxdWVzdHMtLSx0aGlzLmxhdW5jaFJlcXVlc3RzKCksdCkpLCh0PT4oIlJlcXVlc3ROZXR3b3JrRXJyb3IiPT09dC5uYW1lJiYodGhpcy5fbkFjdGl2ZVJlcXVlc3RzLS0sdGhpcy5sYXVuY2hSZXF1ZXN0cygpKSxQcm9taXNlLnJlamVjdCh0KSkpKX1mZXRjaCh0LGUpe3JldHVybiBuZXcgUHJvbWlzZSgoKHQsZSk9Pnt0aGlzLl9xdWV1ZS5wdXNoKHtyZXNvbHZlOnQscmVqZWN0OmV9KSx0aGlzLmxhdW5jaFJlcXVlc3RzKCl9KSkudGhlbigoKCk9PntsZXQgbj0xO3JldHVybiBuZXcgUHJvbWlzZSgoaT0+e2NvbnN0IHI9KCk9PntmZXRjaCh0LGUpLnRoZW4oKHQ9PntpZighdC5vayYmdGhpcy5fbWF4UmV0cmllcz5uKXJldHVybiBuKyssdm9pZCByKCk7aSh0KSx0aGlzLl9uQWN0aXZlUmVxdWVzdHMtLSx0aGlzLmxhdW5jaFJlcXVlc3RzKCl9KSl9O3IoKX0pKX0pKX1jbGVhclF1ZXVlKCl7Zm9yKDt0aGlzLl9xdWV1ZS5sZW5ndGg+MDspdGhpcy5fcXVldWUucG9wKCkucmVqZWN0KG5ldyBtcigiUmVxdWVzdCBjYW5jZWxsZWQgYnkgY2xlYXJRdWV1ZSIpKX1hY3RpdmVSZXF1ZXN0cygpe3JldHVybiB0aGlzLl9uQWN0aXZlUmVxdWVzdHN9b3V0c3RhbmRpbmdSZXF1ZXN0cygpe3JldHVybiB0aGlzLl9uQWN0aXZlUmVxdWVzdHMrdGhpcy5fcXVldWUubGVuZ3RofWxhdW5jaFJlcXVlc3RzKCl7Zm9yKDt0aGlzLl9uQWN0aXZlUmVxdWVzdHM8dGhpcy5fblNpbXVsdGFuZW91c1JlcXVlc3RzJiZ0aGlzLl9xdWV1ZS5sZW5ndGg+MDspdGhpcy5fbkFjdGl2ZVJlcXVlc3RzKyssdGhpcy5fcXVldWUucG9wKCkucmVzb2x2ZSh2b2lkIDApfXByb21pc2VXaXRoUmV0cmllcyh0LGUsbil7cmV0dXJuIHRoaXMuX3Byb21pc2VGcm9tVXJsKHQsbikudGhlbigodD0+dCksKGk9PmU+MD90aGlzLnByb21pc2VXaXRoUmV0cmllcyh0LGUtMSxuKTpQcm9taXNlLnJlamVjdChpKSkpfV9wcm9taXNlRnJvbVVybCh0LGUpe3JldHVybiBuZXcgUHJvbWlzZSgoKG4saSk9Pntjb25zdCByPShmdW5jdGlvbiBvKHQsZSxuLGkpe2NvbnN0IHI9bmV3IFhNTEh0dHBSZXF1ZXN0O3Iub3Blbih0LGUpLG4mJihyLndpdGhDcmVkZW50aWFscz1uKTtpJiZyLnNldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQtVHlwZSIsaSk7cmV0dXJuIHJ9KShlLm1ldGhvZFR5cGUsdCxlLndpdGhDcmVkZW50aWFscyxlLmNvbnRlbnRUeXBlKTtyLm9ubG9hZD1mdW5jdGlvbigpezIwMD09PXIuc3RhdHVzP24oSlNPTi5wYXJzZShyLnJlc3BvbnNlVGV4dCkpOmkobmV3IF9yKHIsdCkpfSxyLm9uZXJyb3I9ZnVuY3Rpb24oKXtpKG5ldyBfcihyLHQpKX0sZS5ib2R5P3Iuc2VuZChlLmJvZHkpOnIuc2VuZCgpfSkpfX1jb25zdCB4cj0iZXhwZXJpbWVudGFsUGx1Z2luIix3cj1uZXcgVVJMU2VhcmNoUGFyYW1zKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpO2xldCBTcj1NcigpO2Z1bmN0aW9uIE1yKHQ9ImRhdGEiLGU9d3Ipe3JldHVybiIvIj09PXRbdC5sZW5ndGgtMV0mJih0PXQuc2xpY2UoMCx0Lmxlbmd0aC0xKSkse2Vudmlyb25tZW50OigpPT5Ucih0LCIvZW52aXJvbm1lbnQiKSxleHBlcmltZW50czooKT0+VHIodCwiL2V4cGVyaW1lbnRzIikscGx1Z2luUm91dGU6KGUsbixpKT0+VHIodCsiL3BsdWdpbiIsYC8ke2V9JHtufWAsaSkscGx1Z2luc0xpc3Rpbmc6KCk9PlRyKHQsIi9wbHVnaW5zX2xpc3RpbmciLENyKHtbeHJdOmUuZ2V0QWxsKHhyKX0pKSxydW5zOigpPT5Ucih0LCIvcnVucyIpLHJ1bnNGb3JFeHBlcmltZW50OmU9PlRyKHQsIi9leHBlcmltZW50X3J1bnMiLENyKHtleHBlcmltZW50OlN0cmluZyhlKX0pKX19ZnVuY3Rpb24gRXIoKXtyZXR1cm4gU3J9ZnVuY3Rpb24gVHIodCxlLG49bmV3IFVSTFNlYXJjaFBhcmFtcyl7bGV0IGk9dCtlO2lmKFN0cmluZyhuKSl7aSs9KGUuaW5jbHVkZXMoIj8iKT8iJiI6Ij8iKStTdHJpbmcobil9cmV0dXJuIGl9ZnVuY3Rpb24gQ3IodD17fSl7Y29uc3QgZT1PYmplY3Qua2V5cyh0KS5zb3J0KCkuZmlsdGVyKChlPT50W2VdKSksbj1uZXcgVVJMU2VhcmNoUGFyYW1zO3JldHVybiBlLmZvckVhY2goKGU9Pntjb25zdCBpPXRbZV07KEFycmF5LmlzQXJyYXkoaSk/aTpbaV0pLmZvckVhY2goKHQ9Pm4uYXBwZW5kKGUsdCkpKX0pKSxufXZhciBBcjtmdW5jdGlvbiBrcih0LGUpe2NvbnN0IG49KCgpPT57dHJ5e3JldHVybiBuZXcgUmVnRXhwKGUpfWNhdGNoKHQpe3JldHVybiBudWxsfX0pKCk7cmV0dXJue25hbWU6ZSxtZXRhZGF0YTp7dHlwZTpBci5TRUFSQ0hfUkVTVUxUUyx2YWxpZFJlZ2V4OiEhbix1bml2ZXJzYWxSZWdleDoiLioiPT09ZX0saXRlbXM6bj90LmZpbHRlcigodD0+dC5tYXRjaChuKSkpOltdfX1mdW5jdGlvbiBMcih0LGU9IiIpe2NvbnN0IG49W2tyKHQsZSldLGk9KGZ1bmN0aW9uIHIodCxlPSIvIil7Y29uc3Qgbj1bXSxpPXt9O3JldHVybiB0LmZvckVhY2goKHQ9Pntjb25zdCByPXQuaW5kZXhPZihlKSxvPXI+PTA/dC5zbGljZSgwLHIpOnQ7aWYoIWlbb10pe2NvbnN0IHQ9e25hbWU6byxtZXRhZGF0YTp7dHlwZTpBci5QUkVGSVhfR1JPVVB9LGl0ZW1zOltdfTtpW29dPXQsbi5wdXNoKHQpfWlbb10uaXRlbXMucHVzaCh0KX0pKSxufSkodCk7cmV0dXJuW10uY29uY2F0KG4saSl9ZnVuY3Rpb24gUHIodCxlLG4pe2NvbnN0IGk9THIoZnIodCksbikscj0oZnVuY3Rpb24gbyh0KXtjb25zdCBlPW5ldyBNYXA7cmV0dXJuIE9iamVjdC5rZXlzKHQpLmZvckVhY2goKG49Pnt0W25dLmZvckVhY2goKHQ9Pntjb25zdCBpPWUuZ2V0KHQpfHxbXTtpLnB1c2gobiksZS5zZXQodCxpKX0pKX0pKSxlfSkoQ2UuZXhwb3J0cy5waWNrKHQsZSkpO3JldHVybiBpLm1hcCgoKHtuYW1lOnQsbWV0YWRhdGE6ZSxpdGVtczpufSk9Pih7bmFtZTp0LG1ldGFkYXRhOmUsaXRlbXM6bi5tYXAoKHQ9Pih7dGFnOnQscnVuczooci5nZXQodCl8fFtdKS5zbGljZSgpfSkpKX0pKSl9ZnVuY3Rpb24gTnIodCxlKXtjb25zdCBuPXVyKHQudGFnLGUudGFnKTtyZXR1cm4gMCE9bj9uOnVyKHQucnVuLGUucnVuKX1mdW5jdGlvbiBJcih0LGUsbil7cmV0dXJuIFByKHQsZSxuKS5tYXAoKGZ1bmN0aW9uIGkodCl7Y29uc3QgZT1DZS5leHBvcnRzLmZsYXR0ZW4odC5pdGVtcy5tYXAoKCh7dGFnOnQscnVuczplfSk9PmUubWFwKChlPT4oe3RhZzp0LHJ1bjplfSkpKSkpKTtyZXR1cm4gZS5zb3J0KE5yKSx7bmFtZTp0Lm5hbWUsbWV0YWRhdGE6dC5tZXRhZGF0YSxpdGVtczplfX0pKX0KLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8hKGZ1bmN0aW9uKHQpe3RbdC5TRUFSQ0hfUkVTVUxUUz0wXT0iU0VBUkNIX1JFU1VMVFMiLHRbdC5QUkVGSVhfR1JPVVA9MV09IlBSRUZJWF9HUk9VUCJ9KShBcnx8KEFyPXt9KSk7Y29uc3QgUnI9e2F0dGFjaGVkOiEwLGRldGFjaGVkOiEwLHJlYWR5OiEwLGNyZWF0ZWQ6ITAsYmVmb3JlUmVnaXN0ZXI6ITAscmVnaXN0ZXJlZDohMCxhdHRyaWJ1dGVDaGFuZ2VkOiEwLGxpc3RlbmVyczohMCxob3N0QXR0cmlidXRlczohMH0sT3I9e2F0dGFjaGVkOiEwLGRldGFjaGVkOiEwLHJlYWR5OiEwLGNyZWF0ZWQ6ITAsYmVmb3JlUmVnaXN0ZXI6ITAscmVnaXN0ZXJlZDohMCxhdHRyaWJ1dGVDaGFuZ2VkOiEwLGJlaGF2aW9yczohMCxfbm9BY2Nlc3NvcnM6ITB9LHpyPU9iamVjdC5hc3NpZ24oe2xpc3RlbmVyczohMCxob3N0QXR0cmlidXRlczohMCxwcm9wZXJ0aWVzOiEwLG9ic2VydmVyczohMH0sT3IpO2Z1bmN0aW9uIERyKHQsZSxuLGkpeyEoZnVuY3Rpb24gcih0LGUsbil7Y29uc3QgaT10Ll9ub0FjY2Vzc29ycyxyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHQpO2ZvcihsZXQgbz0wO288ci5sZW5ndGg7bysrKXtsZXQgYT1yW29dO2lmKCEoYSBpbiBuKSlpZihpKWVbYV09dFthXTtlbHNle2xldCBuPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxhKTtuJiYobi5jb25maWd1cmFibGU9ITAsT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsYSxuKSl9fX0pKGUsdCxpKTtmb3IobGV0IHQgaW4gUnIpZVt0XSYmKG5bdF09blt0XXx8W10sblt0XS5wdXNoKGVbdF0pKX1mdW5jdGlvbiBCcih0LGUsbil7ZT1lfHxbXTtmb3IobGV0IGk9dC5sZW5ndGgtMTtpPj0wO2ktLSl7bGV0IHI9dFtpXTtyP0FycmF5LmlzQXJyYXkocik/QnIocixlKTplLmluZGV4T2Yocik8MCYmKCFufHxuLmluZGV4T2Yocik8MCkmJmUudW5zaGlmdChyKTpjb25zb2xlLndhcm4oImJlaGF2aW9yIGlzIG51bGwsIGNoZWNrIGZvciBtaXNzaW5nIG9yIDQwNCBpbXBvcnQiKX1yZXR1cm4gZX1mdW5jdGlvbiBIcih0LGUpe2Zvcihjb25zdCBuIGluIGUpe2NvbnN0IGk9dFtuXSxyPWVbbl07dFtuXT0hKCJ2YWx1ZSJpbiByKSYmaSYmInZhbHVlImluIGk/T2JqZWN0LmFzc2lnbih7dmFsdWU6aS52YWx1ZX0scik6cn19Y29uc3QgRnI9Y3IoSFRNTEVsZW1lbnQpO2Z1bmN0aW9uIFZyKHQsZSxuKXtsZXQgaTtjb25zdCByPXt9O2NsYXNzIG8gZXh0ZW5kcyBle3N0YXRpYyBfZmluYWxpemVDbGFzcygpe2lmKHRoaXMuaGFzT3duUHJvcGVydHkoSlNDb21waWxlcl9yZW5hbWVQcm9wZXJ0eSgiZ2VuZXJhdGVkRnJvbSIsdGhpcykpKXtpZihpKWZvcihsZXQgdCxlPTA7ZTxpLmxlbmd0aDtlKyspdD1pW2VdLHQucHJvcGVydGllcyYmdGhpcy5jcmVhdGVQcm9wZXJ0aWVzKHQucHJvcGVydGllcyksdC5vYnNlcnZlcnMmJnRoaXMuY3JlYXRlT2JzZXJ2ZXJzKHQub2JzZXJ2ZXJzLHQucHJvcGVydGllcyk7dC5wcm9wZXJ0aWVzJiZ0aGlzLmNyZWF0ZVByb3BlcnRpZXModC5wcm9wZXJ0aWVzKSx0Lm9ic2VydmVycyYmdGhpcy5jcmVhdGVPYnNlcnZlcnModC5vYnNlcnZlcnMsdC5wcm9wZXJ0aWVzKSx0aGlzLl9wcmVwYXJlVGVtcGxhdGUoKX1lbHNlIGUuX2ZpbmFsaXplQ2xhc3MuY2FsbCh0aGlzKX1zdGF0aWMgZ2V0IHByb3BlcnRpZXMoKXtjb25zdCBlPXt9O2lmKGkpZm9yKGxldCB0PTA7dDxpLmxlbmd0aDt0KyspSHIoZSxpW3RdLnByb3BlcnRpZXMpO3JldHVybiBIcihlLHQucHJvcGVydGllcyksZX1zdGF0aWMgZ2V0IG9ic2VydmVycygpe2xldCBlPVtdO2lmKGkpZm9yKGxldCB0LG49MDtuPGkubGVuZ3RoO24rKyl0PWlbbl0sdC5vYnNlcnZlcnMmJihlPWUuY29uY2F0KHQub2JzZXJ2ZXJzKSk7cmV0dXJuIHQub2JzZXJ2ZXJzJiYoZT1lLmNvbmNhdCh0Lm9ic2VydmVycykpLGV9Y3JlYXRlZCgpe3N1cGVyLmNyZWF0ZWQoKTtjb25zdCB0PXIuY3JlYXRlZDtpZih0KWZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKXRbZV0uY2FsbCh0aGlzKX1fcmVnaXN0ZXJlZCgpe2NvbnN0IHQ9by5wcm90b3R5cGU7aWYoIXQuaGFzT3duUHJvcGVydHkoSlNDb21waWxlcl9yZW5hbWVQcm9wZXJ0eSgiX19oYXNSZWdpc3RlckZpbmlzaGVkIix0KSkpe3QuX19oYXNSZWdpc3RlckZpbmlzaGVkPSEwLHN1cGVyLl9yZWdpc3RlcmVkKCksdyYmYSh0KTtjb25zdCBlPU9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKTtsZXQgbj1yLmJlZm9yZVJlZ2lzdGVyO2lmKG4pZm9yKGxldCB0PTA7dDxuLmxlbmd0aDt0Kyspblt0XS5jYWxsKGUpO2lmKG49ci5yZWdpc3RlcmVkLG4pZm9yKGxldCB0PTA7dDxuLmxlbmd0aDt0Kyspblt0XS5jYWxsKGUpfX1fYXBwbHlMaXN0ZW5lcnMoKXtzdXBlci5fYXBwbHlMaXN0ZW5lcnMoKTtjb25zdCB0PXIubGlzdGVuZXJzO2lmKHQpZm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspe2NvbnN0IG49dFtlXTtpZihuKWZvcihsZXQgdCBpbiBuKXRoaXMuX2FkZE1ldGhvZEV2ZW50TGlzdGVuZXJUb05vZGUodGhpcyx0LG5bdF0pfX1fZW5zdXJlQXR0cmlidXRlcygpe2NvbnN0IHQ9ci5ob3N0QXR0cmlidXRlcztpZih0KWZvcihsZXQgZT10Lmxlbmd0aC0xO2U+PTA7ZS0tKXtjb25zdCBuPXRbZV07Zm9yKGxldCB0IGluIG4pdGhpcy5fZW5zdXJlQXR0cmlidXRlKHQsblt0XSl9c3VwZXIuX2Vuc3VyZUF0dHJpYnV0ZXMoKX1yZWFkeSgpe3N1cGVyLnJlYWR5KCk7bGV0IHQ9ci5yZWFkeTtpZih0KWZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKXRbZV0uY2FsbCh0aGlzKX1hdHRhY2hlZCgpe3N1cGVyLmF0dGFjaGVkKCk7bGV0IHQ9ci5hdHRhY2hlZDtpZih0KWZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKXRbZV0uY2FsbCh0aGlzKX1kZXRhY2hlZCgpe3N1cGVyLmRldGFjaGVkKCk7bGV0IHQ9ci5kZXRhY2hlZDtpZih0KWZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKXRbZV0uY2FsbCh0aGlzKX1hdHRyaWJ1dGVDaGFuZ2VkKHQsZSxuKXtzdXBlci5hdHRyaWJ1dGVDaGFuZ2VkKCk7bGV0IGk9ci5hdHRyaWJ1dGVDaGFuZ2VkO2lmKGkpZm9yKGxldCByPTA7cjxpLmxlbmd0aDtyKyspaVtyXS5jYWxsKHRoaXMsdCxlLG4pfX1pZihuKXtBcnJheS5pc0FycmF5KG4pfHwobj1bbl0pO2xldCB0PWUucHJvdG90eXBlLmJlaGF2aW9ycztpPUJyKG4sbnVsbCx0KSxvLnByb3RvdHlwZS5iZWhhdmlvcnM9dD90LmNvbmNhdChuKTppfWNvbnN0IGE9ZT0+e2kmJihmdW5jdGlvbiBuKHQsZSxpKXtmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rKylEcih0LGVbbl0saSx6cil9KShlLGksciksRHIoZSx0LHIsT3IpfTtyZXR1cm4gd3x8YShvLnByb3RvdHlwZSksby5nZW5lcmF0ZWRGcm9tPXQsb31jb25zdCBVcj1mdW5jdGlvbih0LGUpe3R8fGNvbnNvbGUud2FybigiUG9seW1lci5DbGFzcyByZXF1aXJlcyBgaW5mb2AgYXJndW1lbnQiKTtsZXQgbj1lP2UoRnIpOkZyO3JldHVybiBuPVZyKHQsbix0LmJlaGF2aW9ycyksbi5pcz1uLnByb3RvdHlwZS5pcz10LmlzLG59LGpyPWZ1bmN0aW9uKHQpe2xldCBlO3JldHVybiBlPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6anIuQ2xhc3ModCksdC5fbGVnYWN5Rm9yY2VPYnNlcnZlZEF0dHJpYnV0ZXMmJihlLnByb3RvdHlwZS5fbGVnYWN5Rm9yY2VPYnNlcnZlZEF0dHJpYnV0ZXM9dC5fbGVnYWN5Rm9yY2VPYnNlcnZlZEF0dHJpYnV0ZXMpLGN1c3RvbUVsZW1lbnRzLmRlZmluZShlLmlzLGUpLGV9OwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpmdW5jdGlvbiBHcih0LGUsbixpLHIpe2xldCBvO3ImJihvPSJvYmplY3QiPT10eXBlb2YgbiYmbnVsbCE9PW4sbyYmKGk9dC5fX2RhdGFUZW1wW2VdKSk7bGV0IGE9aSE9PW4mJihpPT1pfHxuPT1uKTtyZXR1cm4gbyYmYSYmKHQuX19kYXRhVGVtcFtlXT1uKSxhfWpyLkNsYXNzPVVyO2NvbnN0IFdyPUkoKHQ9PmNsYXNzIGV4dGVuZHMgdHtfc2hvdWxkUHJvcGVydHlDaGFuZ2UodCxlLG4pe3JldHVybiBHcih0aGlzLHQsZSxuLCEwKX19KSkscXI9SSgodD0+Y2xhc3MgZXh0ZW5kcyB0e3N0YXRpYyBnZXQgcHJvcGVydGllcygpe3JldHVybnttdXRhYmxlRGF0YTpCb29sZWFufX1fc2hvdWxkUHJvcGVydHlDaGFuZ2UodCxlLG4pe3JldHVybiBHcih0aGlzLHQsZSxuLHRoaXMubXV0YWJsZURhdGEpfX0pKTtXci5fbXV0YWJsZVByb3BlcnR5Q2hhbmdlPUdyOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpsZXQgWXI9bnVsbDtmdW5jdGlvbiBYcigpe3JldHVybiBZcn1Yci5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShIVE1MVGVtcGxhdGVFbGVtZW50LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOlhyLHdyaXRhYmxlOiEwfX0pO2NvbnN0ICRyPWZlKFhyKSxLcj1Xcigkcik7Y29uc3QgWnI9ZmUoY2xhc3N7fSk7ZnVuY3Rpb24gSnIodCxlKXtmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rKyl7bGV0IGk9ZVtuXTtpZihCb29sZWFuKHQpIT1Cb29sZWFuKGkuX19oaWRlVGVtcGxhdGVDaGlsZHJlbl9fKSlpZihpLm5vZGVUeXBlPT09Tm9kZS5URVhUX05PREUpdD8oaS5fX3BvbHltZXJUZXh0Q29udGVudF9fPWkudGV4dENvbnRlbnQsaS50ZXh0Q29udGVudD0iIik6aS50ZXh0Q29udGVudD1pLl9fcG9seW1lclRleHRDb250ZW50X187ZWxzZSBpZigic2xvdCI9PT1pLmxvY2FsTmFtZSlpZih0KWkuX19wb2x5bWVyUmVwbGFjZWRfXz1kb2N1bWVudC5jcmVhdGVDb21tZW50KCJoaWRkZW4tc2xvdCIpLFkoWShpKS5wYXJlbnROb2RlKS5yZXBsYWNlQ2hpbGQoaS5fX3BvbHltZXJSZXBsYWNlZF9fLGkpO2Vsc2V7Y29uc3QgdD1pLl9fcG9seW1lclJlcGxhY2VkX187dCYmWShZKHQpLnBhcmVudE5vZGUpLnJlcGxhY2VDaGlsZChpLHQpfWVsc2UgaS5zdHlsZSYmKHQ/KGkuX19wb2x5bWVyRGlzcGxheV9fPWkuc3R5bGUuZGlzcGxheSxpLnN0eWxlLmRpc3BsYXk9Im5vbmUiKTppLnN0eWxlLmRpc3BsYXk9aS5fX3BvbHltZXJEaXNwbGF5X18pO2kuX19oaWRlVGVtcGxhdGVDaGlsZHJlbl9fPXQsaS5fc2hvd0hpZGVDaGlsZHJlbiYmaS5fc2hvd0hpZGVDaGlsZHJlbih0KX19Y2xhc3MgUXIgZXh0ZW5kcyBacntjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMuX2NvbmZpZ3VyZVByb3BlcnRpZXModCksdGhpcy5yb290PXRoaXMuX3N0YW1wVGVtcGxhdGUodGhpcy5fX2RhdGFIb3N0KTtsZXQgZT1bXTt0aGlzLmNoaWxkcmVuPWU7Zm9yKGxldCB0PXRoaXMucm9vdC5maXJzdENoaWxkO3Q7dD10Lm5leHRTaWJsaW5nKWUucHVzaCh0KSx0Ll9fdGVtcGxhdGl6ZUluc3RhbmNlPXRoaXM7dGhpcy5fX3RlbXBsYXRpemVPd25lciYmdGhpcy5fX3RlbXBsYXRpemVPd25lci5fX2hpZGVUZW1wbGF0ZUNoaWxkcmVuX18mJnRoaXMuX3Nob3dIaWRlQ2hpbGRyZW4oITApO2xldCBuPXRoaXMuX190ZW1wbGF0aXplT3B0aW9uczsodCYmbi5pbnN0YW5jZVByb3BzfHwhbi5pbnN0YW5jZVByb3BzKSYmdGhpcy5fZW5hYmxlUHJvcGVydGllcygpfV9jb25maWd1cmVQcm9wZXJ0aWVzKHQpe2lmKHRoaXMuX190ZW1wbGF0aXplT3B0aW9ucy5mb3J3YXJkSG9zdFByb3ApZm9yKGxldCB0IGluIHRoaXMuX19ob3N0UHJvcHMpdGhpcy5fc2V0UGVuZGluZ1Byb3BlcnR5KHQsdGhpcy5fX2RhdGFIb3N0WyJfaG9zdF8iK3RdKTtmb3IobGV0IGUgaW4gdCl0aGlzLl9zZXRQZW5kaW5nUHJvcGVydHkoZSx0W2VdKX1mb3J3YXJkSG9zdFByb3AodCxlKXt0aGlzLl9zZXRQZW5kaW5nUHJvcGVydHlPclBhdGgodCxlLCExLCEwKSYmdGhpcy5fX2RhdGFIb3N0Ll9lbnF1ZXVlQ2xpZW50KHRoaXMpfV9hZGRFdmVudExpc3RlbmVyVG9Ob2RlKHQsZSxuKXtpZih0aGlzLl9tZXRob2RIb3N0JiZ0aGlzLl9fdGVtcGxhdGl6ZU9wdGlvbnMucGFyZW50TW9kZWwpdGhpcy5fbWV0aG9kSG9zdC5fYWRkRXZlbnRMaXN0ZW5lclRvTm9kZSh0LGUsKHQ9Pnt0Lm1vZGVsPXRoaXMsbih0KX0pKTtlbHNle2xldCBpPXRoaXMuX19kYXRhSG9zdC5fX2RhdGFIb3N0O2kmJmkuX2FkZEV2ZW50TGlzdGVuZXJUb05vZGUodCxlLG4pfX1fc2hvd0hpZGVDaGlsZHJlbih0KXtKcih0LHRoaXMuY2hpbGRyZW4pfV9zZXRVbm1hbmFnZWRQcm9wZXJ0eVRvTm9kZSh0LGUsbil7dC5fX2hpZGVUZW1wbGF0ZUNoaWxkcmVuX18mJnQubm9kZVR5cGU9PU5vZGUuVEVYVF9OT0RFJiYidGV4dENvbnRlbnQiPT1lP3QuX19wb2x5bWVyVGV4dENvbnRlbnRfXz1uOnN1cGVyLl9zZXRVbm1hbmFnZWRQcm9wZXJ0eVRvTm9kZSh0LGUsbil9Z2V0IHBhcmVudE1vZGVsKCl7bGV0IHQ9dGhpcy5fX3BhcmVudE1vZGVsO2lmKCF0KXtsZXQgZTt0PXRoaXM7ZG97dD10Ll9fZGF0YUhvc3QuX19kYXRhSG9zdH13aGlsZSgoZT10Ll9fdGVtcGxhdGl6ZU9wdGlvbnMpJiYhZS5wYXJlbnRNb2RlbCk7dGhpcy5fX3BhcmVudE1vZGVsPXR9cmV0dXJuIHR9ZGlzcGF0Y2hFdmVudCh0KXtyZXR1cm4hMH19Y29uc3QgdG89V3IoUXIpO2Z1bmN0aW9uIGVvKHQpe2xldCBlPXQuX19kYXRhSG9zdDtyZXR1cm4gZSYmZS5fbWV0aG9kSG9zdHx8ZX1mdW5jdGlvbiBubyh0LGUsbil7bGV0IGk9bi5tdXRhYmxlRGF0YT90bzpRcjthby5taXhpbiYmKGk9YW8ubWl4aW4oaSkpO2xldCByPWNsYXNzIGV4dGVuZHMgaXt9O3JldHVybiByLnByb3RvdHlwZS5fX3RlbXBsYXRpemVPcHRpb25zPW4sci5wcm90b3R5cGUuX2JpbmRUZW1wbGF0ZSh0KSwoZnVuY3Rpb24gbyh0LGUsbixpKXtsZXQgcj1uLmhvc3RQcm9wc3x8e307Zm9yKGxldCBlIGluIGkuaW5zdGFuY2VQcm9wcyl7ZGVsZXRlIHJbZV07bGV0IG49aS5ub3RpZnlJbnN0YW5jZVByb3A7biYmdC5wcm90b3R5cGUuX2FkZFByb3BlcnR5RWZmZWN0KGUsdC5wcm90b3R5cGUuUFJPUEVSVFlfRUZGRUNUX1RZUEVTLk5PVElGWSx7Zm46b28oZSxuKX0pfWlmKGkuZm9yd2FyZEhvc3RQcm9wJiZlLl9fZGF0YUhvc3QpZm9yKGxldCBlIGluIHIpbi5oYXNIb3N0UHJvcHN8fChuLmhhc0hvc3RQcm9wcz0hMCksdC5wcm90b3R5cGUuX2FkZFByb3BlcnR5RWZmZWN0KGUsdC5wcm90b3R5cGUuUFJPUEVSVFlfRUZGRUNUX1RZUEVTLk5PVElGWSx7Zm46ZnVuY3Rpb24gdChlLG4saSl7ZS5fX2RhdGFIb3N0Ll9zZXRQZW5kaW5nUHJvcGVydHlPclBhdGgoIl9ob3N0XyIrbixpW25dLCEwLCEwKX19KX0pKHIsdCxlLG4pLHJ9ZnVuY3Rpb24gaW8odCxlLG4saSl7bGV0IHI9bi5mb3J3YXJkSG9zdFByb3A7aWYociYmZS5oYXNIb3N0UHJvcHMpe2NvbnN0IG89InRlbXBsYXRlIj09dC5sb2NhbE5hbWU7bGV0IGE9ZS50ZW1wbGF0aXplVGVtcGxhdGVDbGFzcztpZighYSl7aWYobyl7bGV0IHQ9bi5tdXRhYmxlRGF0YT9LcjokcjtjbGFzcyBpIGV4dGVuZHMgdHt9YT1lLnRlbXBsYXRpemVUZW1wbGF0ZUNsYXNzPWl9ZWxzZXtjb25zdCBuPXQuY29uc3RydWN0b3I7Y2xhc3MgaSBleHRlbmRzIG57fWE9ZS50ZW1wbGF0aXplVGVtcGxhdGVDbGFzcz1pfWxldCBzPWUuaG9zdFByb3BzO2ZvcihsZXQgdCBpbiBzKWEucHJvdG90eXBlLl9hZGRQcm9wZXJ0eUVmZmVjdCgiX2hvc3RfIit0LGEucHJvdG90eXBlLlBST1BFUlRZX0VGRkVDVF9UWVBFUy5QUk9QQUdBVEUse2ZuOnJvKHQscil9KSxhLnByb3RvdHlwZS5fY3JlYXRlTm90aWZ5aW5nUHJvcGVydHkoIl9ob3N0XyIrdCk7UyYmaSYmKGZ1bmN0aW9uIG8odCxlLG4pe2NvbnN0IGk9bi5jb25zdHJ1Y3Rvci5fcHJvcGVydGllcyx7cHJvcGVydHlFZmZlY3RzOnJ9PXQse2luc3RhbmNlUHJvcHM6b309ZTtmb3IobGV0IHQgaW4gcilpZighKGlbdF18fG8mJm9bdF0pKXtjb25zdCBlPXJbdF07Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKyspe2NvbnN0e3BhcnQ6aX09ZVtuXS5pbmZvO2lmKCFpLnNpZ25hdHVyZXx8IWkuc2lnbmF0dXJlLnN0YXRpYyl7Y29uc29sZS53YXJuKGBQcm9wZXJ0eSAnJHt0fScgdXNlZCBpbiB0ZW1wbGF0ZSBidXQgbm90IGRlY2xhcmVkIGluICdwcm9wZXJ0aWVzJzsgYXR0cmlidXRlIHdpbGwgbm90IGJlIG9ic2VydmVkLmApO2JyZWFrfX19fSkoZSxuLGkpfWlmKHQuX19kYXRhUHJvdG8mJk9iamVjdC5hc3NpZ24odC5fX2RhdGEsdC5fX2RhdGFQcm90byksbykhKGZ1bmN0aW9uIGEodCxlKXtZcj10LE9iamVjdC5zZXRQcm90b3R5cGVPZih0LGUucHJvdG90eXBlKSxuZXcgZSxZcj1udWxsfSkodCxhKSx0Ll9fZGF0YVRlbXA9e30sdC5fX2RhdGFQZW5kaW5nPW51bGwsdC5fX2RhdGFPbGQ9bnVsbCx0Ll9lbmFibGVQcm9wZXJ0aWVzKCk7ZWxzZXtPYmplY3Quc2V0UHJvdG90eXBlT2YodCxhLnByb3RvdHlwZSk7Y29uc3Qgbj1lLmhvc3RQcm9wcztmb3IobGV0IGUgaW4gbilpZihlPSJfaG9zdF8iK2UsZSBpbiB0KXtjb25zdCBuPXRbZV07ZGVsZXRlIHRbZV0sdC5fX2RhdGFbZV09bn19fX1mdW5jdGlvbiBybyh0LGUpe3JldHVybiBmdW5jdGlvbiB0KG4saSxyKXtlLmNhbGwobi5fX3RlbXBsYXRpemVPd25lcixpLnN1YnN0cmluZygiX2hvc3RfIi5sZW5ndGgpLHJbaV0pfX1mdW5jdGlvbiBvbyh0LGUpe3JldHVybiBmdW5jdGlvbiB0KG4saSxyKXtlLmNhbGwobi5fX3RlbXBsYXRpemVPd25lcixuLGkscltpXSl9fWZ1bmN0aW9uIGFvKHQsZSxuKXtpZihiJiYhZW8odCkpdGhyb3cgbmV3IEVycm9yKCJzdHJpY3RUZW1wbGF0ZVBvbGljeTogdGVtcGxhdGUgb3duZXIgbm90IHRydXN0ZWQiKTtpZihuPW58fHt9LHQuX190ZW1wbGF0aXplT3duZXIpdGhyb3cgbmV3IEVycm9yKCJBIDx0ZW1wbGF0ZT4gY2FuIG9ubHkgYmUgdGVtcGxhdGl6ZWQgb25jZSIpO3QuX190ZW1wbGF0aXplT3duZXI9ZTtsZXQgaT0oZT9lLmNvbnN0cnVjdG9yOlFyKS5fcGFyc2VUZW1wbGF0ZSh0KSxyPWkudGVtcGxhdGl6ZUluc3RhbmNlQ2xhc3M7cnx8KHI9bm8odCxpLG4pLGkudGVtcGxhdGl6ZUluc3RhbmNlQ2xhc3M9cik7Y29uc3Qgbz1lbyh0KTtpbyh0LGksbixvKTtsZXQgYT1jbGFzcyBleHRlbmRzIHJ7fTtyZXR1cm4gYS5wcm90b3R5cGUuX21ldGhvZEhvc3Q9byxhLnByb3RvdHlwZS5fX2RhdGFIb3N0PXQsYS5wcm90b3R5cGUuX190ZW1wbGF0aXplT3duZXI9ZSxhLnByb3RvdHlwZS5fX2hvc3RQcm9wcz1pLmhvc3RQcm9wcyxhPWEsYX1mdW5jdGlvbiBzbyh0LGUpe2xldCBuO2Zvcig7ZTspaWYobj1lLl9fZGF0YUhvc3Q/ZTplLl9fdGVtcGxhdGl6ZUluc3RhbmNlKXtpZihuLl9fZGF0YUhvc3Q9PXQpcmV0dXJuIG47ZT1uLl9fZGF0YUhvc3R9ZWxzZSBlPVkoZSkucGFyZW50Tm9kZTtyZXR1cm4gbnVsbH0KLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi9jb25zdCBsbz17dGVtcGxhdGl6ZSh0LGUpe3RoaXMuX3RlbXBsYXRpemVyVGVtcGxhdGU9dCx0aGlzLmN0b3I9YW8odCx0aGlzLHttdXRhYmxlRGF0YTpCb29sZWFuKGUpLHBhcmVudE1vZGVsOnRoaXMuX3BhcmVudE1vZGVsLGluc3RhbmNlUHJvcHM6dGhpcy5faW5zdGFuY2VQcm9wcyxmb3J3YXJkSG9zdFByb3A6dGhpcy5fZm9yd2FyZEhvc3RQcm9wVjIsbm90aWZ5SW5zdGFuY2VQcm9wOnRoaXMuX25vdGlmeUluc3RhbmNlUHJvcFYyfSl9LHN0YW1wKHQpe3JldHVybiBuZXcgdGhpcy5jdG9yKHQpfSxtb2RlbEZvckVsZW1lbnQodCl7cmV0dXJuIHNvKHRoaXMuX3RlbXBsYXRpemVyVGVtcGxhdGUsdCl9fTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi9sZXQgY289ITE7ZnVuY3Rpb24gdW8oKXtpZih3JiYhbSl7aWYoIWNvKXtjbz0hMDtjb25zdCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7dC50ZXh0Q29udGVudD0iZG9tLWJpbmQsZG9tLWlmLGRvbS1yZXBlYXR7ZGlzcGxheTpub25lO30iLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQodCl9cmV0dXJuITB9cmV0dXJuITF9Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovY29uc3QgaG89YmkocXIoZmUoSFRNTEVsZW1lbnQpKSk7Y3VzdG9tRWxlbWVudHMuZGVmaW5lKCJkb20tYmluZCIsY2xhc3MgZXh0ZW5kcyBob3tzdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcygpe3JldHVyblsibXV0YWJsZS1kYXRhIl19Y29uc3RydWN0b3IoKXtpZihzdXBlcigpLGIpdGhyb3cgbmV3IEVycm9yKCJzdHJpY3RUZW1wbGF0ZVBvbGljeTogZG9tLWJpbmQgbm90IGFsbG93ZWQiKTt0aGlzLnJvb3Q9bnVsbCx0aGlzLiQ9bnVsbCx0aGlzLl9fY2hpbGRyZW49bnVsbH1hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sodCxlLG4saSl7dGhpcy5tdXRhYmxlRGF0YT0hMH1jb25uZWN0ZWRDYWxsYmFjaygpe3VvKCl8fCh0aGlzLnN0eWxlLmRpc3BsYXk9Im5vbmUiKSx0aGlzLnJlbmRlcigpfWRpc2Nvbm5lY3RlZENhbGxiYWNrKCl7dGhpcy5fX3JlbW92ZUNoaWxkcmVuKCl9X19pbnNlcnRDaGlsZHJlbigpe1koWSh0aGlzKS5wYXJlbnROb2RlKS5pbnNlcnRCZWZvcmUodGhpcy5yb290LHRoaXMpfV9fcmVtb3ZlQ2hpbGRyZW4oKXtpZih0aGlzLl9fY2hpbGRyZW4pZm9yKGxldCB0PTA7dDx0aGlzLl9fY2hpbGRyZW4ubGVuZ3RoO3QrKyl0aGlzLnJvb3QuYXBwZW5kQ2hpbGQodGhpcy5fX2NoaWxkcmVuW3RdKX1yZW5kZXIoKXtsZXQgdDtpZighdGhpcy5fX2NoaWxkcmVuKXtpZih0PXR8fHRoaXMucXVlcnlTZWxlY3RvcigidGVtcGxhdGUiKSwhdCl7bGV0IGU9bmV3IE11dGF0aW9uT2JzZXJ2ZXIoKCgpPT57aWYodD10aGlzLnF1ZXJ5U2VsZWN0b3IoInRlbXBsYXRlIiksIXQpdGhyb3cgbmV3IEVycm9yKCJkb20tYmluZCByZXF1aXJlcyBhIDx0ZW1wbGF0ZT4gY2hpbGQiKTtlLmRpc2Nvbm5lY3QoKSx0aGlzLnJlbmRlcigpfSkpO3JldHVybiB2b2lkIGUub2JzZXJ2ZSh0aGlzLHtjaGlsZExpc3Q6ITB9KX10aGlzLnJvb3Q9dGhpcy5fc3RhbXBUZW1wbGF0ZSh0KSx0aGlzLiQ9dGhpcy5yb290LiQsdGhpcy5fX2NoaWxkcmVuPVtdO2ZvcihsZXQgdD10aGlzLnJvb3QuZmlyc3RDaGlsZDt0O3Q9dC5uZXh0U2libGluZyl0aGlzLl9fY2hpbGRyZW5bdGhpcy5fX2NoaWxkcmVuLmxlbmd0aF09dDt0aGlzLl9lbmFibGVQcm9wZXJ0aWVzKCl9dGhpcy5fX2luc2VydENoaWxkcmVuKCksdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiZG9tLWNoYW5nZSIse2J1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSl9fSk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNvbnN0IHBvPXFyKHdlKTtjbGFzcyBmbyBleHRlbmRzIHBve3N0YXRpYyBnZXQgaXMoKXtyZXR1cm4iZG9tLXJlcGVhdCJ9c3RhdGljIGdldCB0ZW1wbGF0ZSgpe3JldHVybiBudWxsfXN0YXRpYyBnZXQgcHJvcGVydGllcygpe3JldHVybntpdGVtczp7dHlwZTpBcnJheX0sYXM6e3R5cGU6U3RyaW5nLHZhbHVlOiJpdGVtIn0saW5kZXhBczp7dHlwZTpTdHJpbmcsdmFsdWU6ImluZGV4In0saXRlbXNJbmRleEFzOnt0eXBlOlN0cmluZyx2YWx1ZToiaXRlbXNJbmRleCJ9LHNvcnQ6e3R5cGU6RnVuY3Rpb24sb2JzZXJ2ZXI6Il9fc29ydENoYW5nZWQifSxmaWx0ZXI6e3R5cGU6RnVuY3Rpb24sb2JzZXJ2ZXI6Il9fZmlsdGVyQ2hhbmdlZCJ9LG9ic2VydmU6e3R5cGU6U3RyaW5nLG9ic2VydmVyOiJfX29ic2VydmVDaGFuZ2VkIn0sZGVsYXk6TnVtYmVyLHJlbmRlcmVkSXRlbUNvdW50Ont0eXBlOk51bWJlcixub3RpZnk6IWsscmVhZE9ubHk6ITB9LGluaXRpYWxDb3VudDp7dHlwZTpOdW1iZXJ9LHRhcmdldEZyYW1lcmF0ZTp7dHlwZTpOdW1iZXIsdmFsdWU6MjB9LF90YXJnZXRGcmFtZVRpbWU6e3R5cGU6TnVtYmVyLGNvbXB1dGVkOiJfX2NvbXB1dGVGcmFtZVRpbWUodGFyZ2V0RnJhbWVyYXRlKSJ9LG5vdGlmeURvbUNoYW5nZTp7dHlwZTpCb29sZWFufSxyZXVzZUNodW5rZWRJbnN0YW5jZXM6e3R5cGU6Qm9vbGVhbn19fXN0YXRpYyBnZXQgb2JzZXJ2ZXJzKCl7cmV0dXJuWyJfX2l0ZW1zQ2hhbmdlZChpdGVtcy4qKSJdfWNvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLl9faW5zdGFuY2VzPVtdLHRoaXMuX19yZW5kZXJEZWJvdW5jZXI9bnVsbCx0aGlzLl9faXRlbXNJZHhUb0luc3RJZHg9e30sdGhpcy5fX2NodW5rQ291bnQ9bnVsbCx0aGlzLl9fcmVuZGVyU3RhcnRUaW1lPW51bGwsdGhpcy5fX2l0ZW1zQXJyYXlDaGFuZ2VkPSExLHRoaXMuX19zaG91bGRNZWFzdXJlQ2h1bms9ITEsdGhpcy5fX3Nob3VsZENvbnRpbnVlQ2h1bmtpbmc9ITEsdGhpcy5fX2NodW5raW5nSWQ9MCx0aGlzLl9fc29ydEZuPW51bGwsdGhpcy5fX2ZpbHRlckZuPW51bGwsdGhpcy5fX29ic2VydmVQYXRocz1udWxsLHRoaXMuX19jdG9yPW51bGwsdGhpcy5fX2lzRGV0YWNoZWQ9ITAsdGhpcy50ZW1wbGF0ZT1udWxsfWRpc2Nvbm5lY3RlZENhbGxiYWNrKCl7c3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKSx0aGlzLl9faXNEZXRhY2hlZD0hMDtmb3IobGV0IHQ9MDt0PHRoaXMuX19pbnN0YW5jZXMubGVuZ3RoO3QrKyl0aGlzLl9fZGV0YWNoSW5zdGFuY2UodCl9Y29ubmVjdGVkQ2FsbGJhY2soKXtpZihzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpLHVvKCl8fCh0aGlzLnN0eWxlLmRpc3BsYXk9Im5vbmUiKSx0aGlzLl9faXNEZXRhY2hlZCl7dGhpcy5fX2lzRGV0YWNoZWQ9ITE7bGV0IHQ9WShZKHRoaXMpLnBhcmVudE5vZGUpO2ZvcihsZXQgZT0wO2U8dGhpcy5fX2luc3RhbmNlcy5sZW5ndGg7ZSsrKXRoaXMuX19hdHRhY2hJbnN0YW5jZShlLHQpfX1fX2Vuc3VyZVRlbXBsYXRpemVkKCl7aWYoIXRoaXMuX19jdG9yKXtjb25zdCB0PXRoaXM7bGV0IGU9dGhpcy50ZW1wbGF0ZT10Ll90ZW1wbGF0ZUluZm8/dDp0aGlzLnF1ZXJ5U2VsZWN0b3IoInRlbXBsYXRlIik7aWYoIWUpe2xldCB0PW5ldyBNdXRhdGlvbk9ic2VydmVyKCgoKT0+e2lmKCF0aGlzLnF1ZXJ5U2VsZWN0b3IoInRlbXBsYXRlIikpdGhyb3cgbmV3IEVycm9yKCJkb20tcmVwZWF0IHJlcXVpcmVzIGEgPHRlbXBsYXRlPiBjaGlsZCIpO3QuZGlzY29ubmVjdCgpLHRoaXMuX19yZW5kZXIoKX0pKTtyZXR1cm4gdC5vYnNlcnZlKHRoaXMse2NoaWxkTGlzdDohMH0pLCExfWxldCBuPXt9O25bdGhpcy5hc109ITAsblt0aGlzLmluZGV4QXNdPSEwLG5bdGhpcy5pdGVtc0luZGV4QXNdPSEwLHRoaXMuX19jdG9yPWFvKGUsdGhpcyx7bXV0YWJsZURhdGE6dGhpcy5tdXRhYmxlRGF0YSxwYXJlbnRNb2RlbDohMCxpbnN0YW5jZVByb3BzOm4sZm9yd2FyZEhvc3RQcm9wOmZ1bmN0aW9uKHQsZSl7bGV0IG49dGhpcy5fX2luc3RhbmNlcztmb3IobGV0IGkscj0wO3I8bi5sZW5ndGgmJihpPW5bcl0pO3IrKylpLmZvcndhcmRIb3N0UHJvcCh0LGUpfSxub3RpZnlJbnN0YW5jZVByb3A6ZnVuY3Rpb24odCxlLG4pe2lmKFEodGhpcy5hcyxlKSl7bGV0IGk9dFt0aGlzLml0ZW1zSW5kZXhBc107ZT09dGhpcy5hcyYmKHRoaXMuaXRlbXNbaV09bik7bGV0IHI9Sih0aGlzLmFzLGAke0pTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoIml0ZW1zIix0aGlzKX0uJHtpfWAsZSk7dGhpcy5ub3RpZnlQYXRoKHIsbil9fX0pfXJldHVybiEwfV9fZ2V0TWV0aG9kSG9zdCgpe3JldHVybiB0aGlzLl9fZGF0YUhvc3QuX21ldGhvZEhvc3R8fHRoaXMuX19kYXRhSG9zdH1fX2Z1bmN0aW9uRnJvbVByb3BlcnR5VmFsdWUodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXtsZXQgZT10LG49dGhpcy5fX2dldE1ldGhvZEhvc3QoKTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbltlXS5hcHBseShuLGFyZ3VtZW50cyl9fXJldHVybiB0fV9fc29ydENoYW5nZWQodCl7dGhpcy5fX3NvcnRGbj10aGlzLl9fZnVuY3Rpb25Gcm9tUHJvcGVydHlWYWx1ZSh0KSx0aGlzLml0ZW1zJiZ0aGlzLl9fZGVib3VuY2VSZW5kZXIodGhpcy5fX3JlbmRlcil9X19maWx0ZXJDaGFuZ2VkKHQpe3RoaXMuX19maWx0ZXJGbj10aGlzLl9fZnVuY3Rpb25Gcm9tUHJvcGVydHlWYWx1ZSh0KSx0aGlzLml0ZW1zJiZ0aGlzLl9fZGVib3VuY2VSZW5kZXIodGhpcy5fX3JlbmRlcil9X19jb21wdXRlRnJhbWVUaW1lKHQpe3JldHVybiBNYXRoLmNlaWwoMWUzL3QpfV9fb2JzZXJ2ZUNoYW5nZWQoKXt0aGlzLl9fb2JzZXJ2ZVBhdGhzPXRoaXMub2JzZXJ2ZSYmdGhpcy5vYnNlcnZlLnJlcGxhY2UoIi4qIiwiLiIpLnNwbGl0KCIgIil9X19oYW5kbGVPYnNlcnZlZFBhdGhzKHQpe2lmKHRoaXMuX19zb3J0Rm58fHRoaXMuX19maWx0ZXJGbilpZih0KXtpZih0aGlzLl9fb2JzZXJ2ZVBhdGhzKXtsZXQgZT10aGlzLl9fb2JzZXJ2ZVBhdGhzO2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7bisrKTA9PT10LmluZGV4T2YoZVtuXSkmJnRoaXMuX19kZWJvdW5jZVJlbmRlcih0aGlzLl9fcmVuZGVyLHRoaXMuZGVsYXkpfX1lbHNlIHRoaXMuX19kZWJvdW5jZVJlbmRlcih0aGlzLl9fcmVuZGVyLHRoaXMuZGVsYXkpfV9faXRlbXNDaGFuZ2VkKHQpe3RoaXMuaXRlbXMmJiFBcnJheS5pc0FycmF5KHRoaXMuaXRlbXMpJiZjb25zb2xlLndhcm4oImRvbS1yZXBlYXQgZXhwZWN0ZWQgYXJyYXkgZm9yIGBpdGVtc2AsIGZvdW5kIix0aGlzLml0ZW1zKSx0aGlzLl9faGFuZGxlSXRlbVBhdGgodC5wYXRoLHQudmFsdWUpfHwoIml0ZW1zIj09PXQucGF0aCYmKHRoaXMuX19pdGVtc0FycmF5Q2hhbmdlZD0hMCksdGhpcy5fX2RlYm91bmNlUmVuZGVyKHRoaXMuX19yZW5kZXIpKX1fX2RlYm91bmNlUmVuZGVyKHQsZT0wKXt0aGlzLl9fcmVuZGVyRGVib3VuY2VyPU5uLmRlYm91bmNlKHRoaXMuX19yZW5kZXJEZWJvdW5jZXIsZT4wP2d0LmFmdGVyKGUpOnZ0LHQuYmluZCh0aGlzKSksUm4odGhpcy5fX3JlbmRlckRlYm91bmNlcil9cmVuZGVyKCl7dGhpcy5fX2RlYm91bmNlUmVuZGVyKHRoaXMuX19yZW5kZXIpLFdpKCl9X19yZW5kZXIoKXtpZighdGhpcy5fX2Vuc3VyZVRlbXBsYXRpemVkKCkpcmV0dXJuO2xldCB0PXRoaXMuaXRlbXN8fFtdO2NvbnN0IGU9dGhpcy5fX3NvcnRBbmRGaWx0ZXJJdGVtcyh0KSxuPXRoaXMuX19jYWxjdWxhdGVMaW1pdChlLmxlbmd0aCk7dGhpcy5fX3VwZGF0ZUluc3RhbmNlcyh0LG4sZSksdGhpcy5pbml0aWFsQ291bnQmJih0aGlzLl9fc2hvdWxkTWVhc3VyZUNodW5rfHx0aGlzLl9fc2hvdWxkQ29udGludWVDaHVua2luZykmJihjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9fY2h1bmtpbmdJZCksdGhpcy5fX2NodW5raW5nSWQ9cmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgoKT0+dGhpcy5fX2NvbnRpbnVlQ2h1bmtpbmcoKSkpKSx0aGlzLl9zZXRSZW5kZXJlZEl0ZW1Db3VudCh0aGlzLl9faW5zdGFuY2VzLmxlbmd0aCksayYmIXRoaXMubm90aWZ5RG9tQ2hhbmdlfHx0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJkb20tY2hhbmdlIix7YnViYmxlczohMCxjb21wb3NlZDohMH0pKX1fX3NvcnRBbmRGaWx0ZXJJdGVtcyh0KXtsZXQgZT1uZXcgQXJyYXkodC5sZW5ndGgpO2ZvcihsZXQgbj0wO248dC5sZW5ndGg7bisrKWVbbl09bjtyZXR1cm4gdGhpcy5fX2ZpbHRlckZuJiYoZT1lLmZpbHRlcigoKGUsbixpKT0+dGhpcy5fX2ZpbHRlckZuKHRbZV0sbixpKSkpKSx0aGlzLl9fc29ydEZuJiZlLnNvcnQoKChlLG4pPT50aGlzLl9fc29ydEZuKHRbZV0sdFtuXSkpKSxlfV9fY2FsY3VsYXRlTGltaXQodCl7bGV0IGU9dDtjb25zdCBuPXRoaXMuX19pbnN0YW5jZXMubGVuZ3RoO2lmKHRoaXMuaW5pdGlhbENvdW50KXtsZXQgaTshdGhpcy5fX2NodW5rQ291bnR8fHRoaXMuX19pdGVtc0FycmF5Q2hhbmdlZCYmIXRoaXMucmV1c2VDaHVua2VkSW5zdGFuY2VzPyhlPU1hdGgubWluKHQsdGhpcy5pbml0aWFsQ291bnQpLGk9TWF0aC5tYXgoZS1uLDApLHRoaXMuX19jaHVua0NvdW50PWl8fDEpOihpPU1hdGgubWluKE1hdGgubWF4KHQtbiwwKSx0aGlzLl9fY2h1bmtDb3VudCksZT1NYXRoLm1pbihuK2ksdCkpLHRoaXMuX19zaG91bGRNZWFzdXJlQ2h1bms9aT09PXRoaXMuX19jaHVua0NvdW50LHRoaXMuX19zaG91bGRDb250aW51ZUNodW5raW5nPWU8dCx0aGlzLl9fcmVuZGVyU3RhcnRUaW1lPXBlcmZvcm1hbmNlLm5vdygpfXJldHVybiB0aGlzLl9faXRlbXNBcnJheUNoYW5nZWQ9ITEsZX1fX2NvbnRpbnVlQ2h1bmtpbmcoKXtpZih0aGlzLl9fc2hvdWxkTWVhc3VyZUNodW5rKXtjb25zdCB0PXBlcmZvcm1hbmNlLm5vdygpLXRoaXMuX19yZW5kZXJTdGFydFRpbWU7dGhpcy5fX2NodW5rQ291bnQ9TWF0aC5yb3VuZCh0aGlzLl9fY2h1bmtDb3VudCoodGhpcy5fdGFyZ2V0RnJhbWVUaW1lL3QpKXx8MX10aGlzLl9fc2hvdWxkQ29udGludWVDaHVua2luZyYmdGhpcy5fX2RlYm91bmNlUmVuZGVyKHRoaXMuX19yZW5kZXIpfV9fdXBkYXRlSW5zdGFuY2VzKHQsZSxuKXtjb25zdCBpPXRoaXMuX19pdGVtc0lkeFRvSW5zdElkeD17fTtsZXQgcjtmb3Iocj0wO3I8ZTtyKyspe2xldCBlPXRoaXMuX19pbnN0YW5jZXNbcl0sbz1uW3JdLGE9dFtvXTtpW29dPXIsZT8oZS5fc2V0UGVuZGluZ1Byb3BlcnR5KHRoaXMuYXMsYSksZS5fc2V0UGVuZGluZ1Byb3BlcnR5KHRoaXMuaW5kZXhBcyxyKSxlLl9zZXRQZW5kaW5nUHJvcGVydHkodGhpcy5pdGVtc0luZGV4QXMsbyksZS5fZmx1c2hQcm9wZXJ0aWVzKCkpOnRoaXMuX19pbnNlcnRJbnN0YW5jZShhLHIsbyl9Zm9yKGxldCB0PXRoaXMuX19pbnN0YW5jZXMubGVuZ3RoLTE7dD49cjt0LS0pdGhpcy5fX2RldGFjaEFuZFJlbW92ZUluc3RhbmNlKHQpfV9fZGV0YWNoSW5zdGFuY2UodCl7bGV0IGU9dGhpcy5fX2luc3RhbmNlc1t0XTtjb25zdCBuPVkoZS5yb290KTtmb3IobGV0IHQ9MDt0PGUuY2hpbGRyZW4ubGVuZ3RoO3QrKyl7bi5hcHBlbmRDaGlsZChlLmNoaWxkcmVuW3RdKX1yZXR1cm4gZX1fX2F0dGFjaEluc3RhbmNlKHQsZSl7ZS5pbnNlcnRCZWZvcmUodGhpcy5fX2luc3RhbmNlc1t0XS5yb290LHRoaXMpfV9fZGV0YWNoQW5kUmVtb3ZlSW5zdGFuY2UodCl7dGhpcy5fX2RldGFjaEluc3RhbmNlKHQpLHRoaXMuX19pbnN0YW5jZXMuc3BsaWNlKHQsMSl9X19zdGFtcEluc3RhbmNlKHQsZSxuKXtsZXQgaT17fTtyZXR1cm4gaVt0aGlzLmFzXT10LGlbdGhpcy5pbmRleEFzXT1lLGlbdGhpcy5pdGVtc0luZGV4QXNdPW4sbmV3IHRoaXMuX19jdG9yKGkpfV9faW5zZXJ0SW5zdGFuY2UodCxlLG4pe2NvbnN0IGk9dGhpcy5fX3N0YW1wSW5zdGFuY2UodCxlLG4pO2xldCByPXRoaXMuX19pbnN0YW5jZXNbZSsxXSxvPXI/ci5jaGlsZHJlblswXTp0aGlzO3JldHVybiBZKFkodGhpcykucGFyZW50Tm9kZSkuaW5zZXJ0QmVmb3JlKGkucm9vdCxvKSx0aGlzLl9faW5zdGFuY2VzW2VdPWksaX1fc2hvd0hpZGVDaGlsZHJlbih0KXtmb3IobGV0IGU9MDtlPHRoaXMuX19pbnN0YW5jZXMubGVuZ3RoO2UrKyl0aGlzLl9faW5zdGFuY2VzW2VdLl9zaG93SGlkZUNoaWxkcmVuKHQpfV9faGFuZGxlSXRlbVBhdGgodCxlKXtsZXQgbj10LnNsaWNlKDYpLGk9bi5pbmRleE9mKCIuIikscj1pPDA/bjpuLnN1YnN0cmluZygwLGkpO2lmKHI9PXBhcnNlSW50KHIsMTApKXtsZXQgdD1pPDA/IiI6bi5zdWJzdHJpbmcoaSsxKTt0aGlzLl9faGFuZGxlT2JzZXJ2ZWRQYXRocyh0KTtsZXQgbz10aGlzLl9faW5zdGFuY2VzW3RoaXMuX19pdGVtc0lkeFRvSW5zdElkeFtyXV07aWYobyl7by5fc2V0UGVuZGluZ1Byb3BlcnR5T3JQYXRoKHRoaXMuYXMrKHQ/Ii4iK3Q6IiIpLGUsITEsITApLG8uX2ZsdXNoUHJvcGVydGllcygpfXJldHVybiEwfX1pdGVtRm9yRWxlbWVudCh0KXtsZXQgZT10aGlzLm1vZGVsRm9yRWxlbWVudCh0KTtyZXR1cm4gZSYmZVt0aGlzLmFzXX1pbmRleEZvckVsZW1lbnQodCl7bGV0IGU9dGhpcy5tb2RlbEZvckVsZW1lbnQodCk7cmV0dXJuIGUmJmVbdGhpcy5pbmRleEFzXX1tb2RlbEZvckVsZW1lbnQodCl7cmV0dXJuIHNvKHRoaXMudGVtcGxhdGUsdCl9fWN1c3RvbUVsZW1lbnRzLmRlZmluZShmby5pcyxmbyk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNsYXNzIG1vIGV4dGVuZHMgd2V7c3RhdGljIGdldCBpcygpe3JldHVybiJkb20taWYifXN0YXRpYyBnZXQgdGVtcGxhdGUoKXtyZXR1cm4gbnVsbH1zdGF0aWMgZ2V0IHByb3BlcnRpZXMoKXtyZXR1cm57aWY6e3R5cGU6Qm9vbGVhbixvYnNlcnZlcjoiX19kZWJvdW5jZVJlbmRlciJ9LHJlc3RhbXA6e3R5cGU6Qm9vbGVhbixvYnNlcnZlcjoiX19kZWJvdW5jZVJlbmRlciJ9LG5vdGlmeURvbUNoYW5nZTp7dHlwZTpCb29sZWFufX19Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMuX19yZW5kZXJEZWJvdW5jZXI9bnVsbCx0aGlzLl9sYXN0SWY9ITEsdGhpcy5fX2hpZGVUZW1wbGF0ZUNoaWxkcmVuX189ITF9X19kZWJvdW5jZVJlbmRlcigpe3RoaXMuX19yZW5kZXJEZWJvdW5jZXI9Tm4uZGVib3VuY2UodGhpcy5fX3JlbmRlckRlYm91bmNlcix2dCwoKCk9PnRoaXMuX19yZW5kZXIoKSkpLFJuKHRoaXMuX19yZW5kZXJEZWJvdW5jZXIpfWRpc2Nvbm5lY3RlZENhbGxiYWNrKCl7c3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKTtjb25zdCB0PVkodGhpcykucGFyZW50Tm9kZTt0JiYodC5ub2RlVHlwZSE9Tm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFfHxZKHQpLmhvc3QpfHx0aGlzLl9fdGVhcmRvd25JbnN0YW5jZSgpfWNvbm5lY3RlZENhbGxiYWNrKCl7c3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKSx1bygpfHwodGhpcy5zdHlsZS5kaXNwbGF5PSJub25lIiksdGhpcy5pZiYmdGhpcy5fX2RlYm91bmNlUmVuZGVyKCl9X19lbnN1cmVUZW1wbGF0ZSgpe2lmKCF0aGlzLl9fdGVtcGxhdGUpe2NvbnN0IHQ9dGhpcztsZXQgZT10Ll90ZW1wbGF0ZUluZm8/dDpZKHQpLnF1ZXJ5U2VsZWN0b3IoInRlbXBsYXRlIik7aWYoIWUpe2xldCB0PW5ldyBNdXRhdGlvbk9ic2VydmVyKCgoKT0+e2lmKCFZKHRoaXMpLnF1ZXJ5U2VsZWN0b3IoInRlbXBsYXRlIikpdGhyb3cgbmV3IEVycm9yKCJkb20taWYgcmVxdWlyZXMgYSA8dGVtcGxhdGU+IGNoaWxkIik7dC5kaXNjb25uZWN0KCksdGhpcy5fX3JlbmRlcigpfSkpO3JldHVybiB0Lm9ic2VydmUodGhpcyx7Y2hpbGRMaXN0OiEwfSksITF9dGhpcy5fX3RlbXBsYXRlPWV9cmV0dXJuITB9X19lbnN1cmVJbnN0YW5jZSgpe2xldCB0PVkodGhpcykucGFyZW50Tm9kZTtpZih0aGlzLl9faGFzSW5zdGFuY2UoKSl7bGV0IGU9dGhpcy5fX2dldEluc3RhbmNlTm9kZXMoKTtpZihlJiZlLmxlbmd0aCl7aWYoWSh0aGlzKS5wcmV2aW91c1NpYmxpbmchPT1lW2UubGVuZ3RoLTFdKWZvcihsZXQgbixpPTA7aTxlLmxlbmd0aCYmKG49ZVtpXSk7aSsrKVkodCkuaW5zZXJ0QmVmb3JlKG4sdGhpcyl9fWVsc2V7aWYoIXQpcmV0dXJuITE7aWYoIXRoaXMuX19lbnN1cmVUZW1wbGF0ZSgpKXJldHVybiExO3RoaXMuX19jcmVhdGVBbmRJbnNlcnRJbnN0YW5jZSh0KX1yZXR1cm4hMH1yZW5kZXIoKXtXaSgpfV9fcmVuZGVyKCl7aWYodGhpcy5pZil7aWYoIXRoaXMuX19lbnN1cmVJbnN0YW5jZSgpKXJldHVybn1lbHNlIHRoaXMucmVzdGFtcCYmdGhpcy5fX3RlYXJkb3duSW5zdGFuY2UoKTt0aGlzLl9zaG93SGlkZUNoaWxkcmVuKCksayYmIXRoaXMubm90aWZ5RG9tQ2hhbmdlfHx0aGlzLmlmPT10aGlzLl9sYXN0SWZ8fCh0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJkb20tY2hhbmdlIix7YnViYmxlczohMCxjb21wb3NlZDohMH0pKSx0aGlzLl9sYXN0SWY9dGhpcy5pZil9X19oYXNJbnN0YW5jZSgpe31fX2dldEluc3RhbmNlTm9kZXMoKXt9X19jcmVhdGVBbmRJbnNlcnRJbnN0YW5jZSh0KXt9X190ZWFyZG93bkluc3RhbmNlKCl7fV9zaG93SGlkZUNoaWxkcmVuKCl7fX1jb25zdCBnbz1BP2NsYXNzIGV4dGVuZHMgbW97Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMuX19pbnN0YW5jZT1udWxsLHRoaXMuX19zeW5jSW5mbz1udWxsfV9faGFzSW5zdGFuY2UoKXtyZXR1cm4gQm9vbGVhbih0aGlzLl9faW5zdGFuY2UpfV9fZ2V0SW5zdGFuY2VOb2Rlcygpe3JldHVybiB0aGlzLl9faW5zdGFuY2UudGVtcGxhdGVJbmZvLmNoaWxkTm9kZXN9X19jcmVhdGVBbmRJbnNlcnRJbnN0YW5jZSh0KXtjb25zdCBlPXRoaXMuX19kYXRhSG9zdHx8dGhpcztpZihiJiYhdGhpcy5fX2RhdGFIb3N0KXRocm93IG5ldyBFcnJvcigic3RyaWN0VGVtcGxhdGVQb2xpY3k6IHRlbXBsYXRlIG93bmVyIG5vdCB0cnVzdGVkIik7Y29uc3Qgbj1lLl9iaW5kVGVtcGxhdGUodGhpcy5fX3RlbXBsYXRlLCEwKTtuLnJ1bkVmZmVjdHM9KHQsZSxuKT0+e2xldCBpPXRoaXMuX19zeW5jSW5mbztpZih0aGlzLmlmKWkmJih0aGlzLl9fc3luY0luZm89bnVsbCx0aGlzLl9zaG93SGlkZUNoaWxkcmVuKCksZT1PYmplY3QuYXNzaWduKGkuY2hhbmdlZFByb3BzLGUpKSx0KGUsbik7ZWxzZSBpZih0aGlzLl9faW5zdGFuY2UpaWYoaXx8KGk9dGhpcy5fX3N5bmNJbmZvPXtydW5FZmZlY3RzOnQsY2hhbmdlZFByb3BzOnt9fSksbilmb3IoY29uc3QgdCBpbiBlKXtjb25zdCBlPSQodCk7aS5jaGFuZ2VkUHJvcHNbZV09dGhpcy5fX2RhdGFIb3N0W2VdfWVsc2UgT2JqZWN0LmFzc2lnbihpLmNoYW5nZWRQcm9wcyxlKX0sdGhpcy5fX2luc3RhbmNlPWUuX3N0YW1wVGVtcGxhdGUodGhpcy5fX3RlbXBsYXRlLG4pLFkodCkuaW5zZXJ0QmVmb3JlKHRoaXMuX19pbnN0YW5jZSx0aGlzKX1fX3N5bmNIb3N0UHJvcGVydGllcygpe2NvbnN0IHQ9dGhpcy5fX3N5bmNJbmZvO3QmJih0aGlzLl9fc3luY0luZm89bnVsbCx0LnJ1bkVmZmVjdHModC5jaGFuZ2VkUHJvcHMsITEpKX1fX3RlYXJkb3duSW5zdGFuY2UoKXt0aGlzLl9faW5zdGFuY2UmJigodGhpcy5fX2RhdGFIb3N0fHx0aGlzKS5fcmVtb3ZlQm91bmREb20odGhpcy5fX2luc3RhbmNlKSx0aGlzLl9faW5zdGFuY2U9bnVsbCx0aGlzLl9fc3luY0luZm89bnVsbCl9X3Nob3dIaWRlQ2hpbGRyZW4oKXtjb25zdCB0PXRoaXMuX19oaWRlVGVtcGxhdGVDaGlsZHJlbl9ffHwhdGhpcy5pZjt0aGlzLl9faW5zdGFuY2UmJkJvb2xlYW4odGhpcy5fX2luc3RhbmNlLl9faGlkZGVuKSE9PXQmJih0aGlzLl9faW5zdGFuY2UuX19oaWRkZW49dCxKcih0LHRoaXMuX19pbnN0YW5jZS50ZW1wbGF0ZUluZm8uY2hpbGROb2RlcykpLHR8fHRoaXMuX19zeW5jSG9zdFByb3BlcnRpZXMoKX19OmNsYXNzIGV4dGVuZHMgbW97Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMuX19jdG9yPW51bGwsdGhpcy5fX2luc3RhbmNlPW51bGwsdGhpcy5fX2ludmFsaWRQcm9wcz1udWxsfV9faGFzSW5zdGFuY2UoKXtyZXR1cm4gQm9vbGVhbih0aGlzLl9faW5zdGFuY2UpfV9fZ2V0SW5zdGFuY2VOb2Rlcygpe3JldHVybiB0aGlzLl9faW5zdGFuY2UuY2hpbGRyZW59X19jcmVhdGVBbmRJbnNlcnRJbnN0YW5jZSh0KXt0aGlzLl9fY3Rvcnx8KHRoaXMuX19jdG9yPWFvKHRoaXMuX190ZW1wbGF0ZSx0aGlzLHttdXRhYmxlRGF0YTohMCxmb3J3YXJkSG9zdFByb3A6ZnVuY3Rpb24odCxlKXt0aGlzLl9faW5zdGFuY2UmJih0aGlzLmlmP3RoaXMuX19pbnN0YW5jZS5mb3J3YXJkSG9zdFByb3AodCxlKToodGhpcy5fX2ludmFsaWRQcm9wcz10aGlzLl9faW52YWxpZFByb3BzfHxPYmplY3QuY3JlYXRlKG51bGwpLHRoaXMuX19pbnZhbGlkUHJvcHNbJCh0KV09ITApKX19KSksdGhpcy5fX2luc3RhbmNlPW5ldyB0aGlzLl9fY3RvcixZKHQpLmluc2VydEJlZm9yZSh0aGlzLl9faW5zdGFuY2Uucm9vdCx0aGlzKX1fX3RlYXJkb3duSW5zdGFuY2UoKXtpZih0aGlzLl9faW5zdGFuY2Upe2xldCB0PXRoaXMuX19pbnN0YW5jZS5jaGlsZHJlbjtpZih0JiZ0Lmxlbmd0aCl7bGV0IGU9WSh0WzBdKS5wYXJlbnROb2RlO2lmKGUpe2U9WShlKTtmb3IobGV0IG4saT0wO2k8dC5sZW5ndGgmJihuPXRbaV0pO2krKyllLnJlbW92ZUNoaWxkKG4pfX10aGlzLl9faW52YWxpZFByb3BzPW51bGwsdGhpcy5fX2luc3RhbmNlPW51bGx9fV9fc3luY0hvc3RQcm9wZXJ0aWVzKCl7bGV0IHQ9dGhpcy5fX2ludmFsaWRQcm9wcztpZih0KXt0aGlzLl9faW52YWxpZFByb3BzPW51bGw7Zm9yKGxldCBlIGluIHQpdGhpcy5fX2luc3RhbmNlLl9zZXRQZW5kaW5nUHJvcGVydHkoZSx0aGlzLl9fZGF0YUhvc3RbZV0pO3RoaXMuX19pbnN0YW5jZS5fZmx1c2hQcm9wZXJ0aWVzKCl9fV9zaG93SGlkZUNoaWxkcmVuKCl7Y29uc3QgdD10aGlzLl9faGlkZVRlbXBsYXRlQ2hpbGRyZW5fX3x8IXRoaXMuaWY7dGhpcy5fX2luc3RhbmNlJiZCb29sZWFuKHRoaXMuX19pbnN0YW5jZS5fX2hpZGRlbikhPT10JiYodGhpcy5fX2luc3RhbmNlLl9faGlkZGVuPXQsdGhpcy5fX2luc3RhbmNlLl9zaG93SGlkZUNoaWxkcmVuKHQpKSx0fHx0aGlzLl9fc3luY0hvc3RQcm9wZXJ0aWVzKCl9fTtjdXN0b21FbGVtZW50cy5kZWZpbmUoZ28uaXMsZ28pOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpsZXQgX289SSgodD0+e2xldCBlPXllKHQpO3JldHVybiBjbGFzcyBleHRlbmRzIGV7c3RhdGljIGdldCBwcm9wZXJ0aWVzKCl7cmV0dXJue2l0ZW1zOnt0eXBlOkFycmF5fSxtdWx0aTp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxzZWxlY3RlZDp7dHlwZTpPYmplY3Qsbm90aWZ5OiEwfSxzZWxlY3RlZEl0ZW06e3R5cGU6T2JqZWN0LG5vdGlmeTohMH0sdG9nZ2xlOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9fX1zdGF0aWMgZ2V0IG9ic2VydmVycygpe3JldHVyblsiX191cGRhdGVTZWxlY3Rpb24obXVsdGksIGl0ZW1zLiopIl19Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMuX19sYXN0SXRlbXM9bnVsbCx0aGlzLl9fbGFzdE11bHRpPW51bGwsdGhpcy5fX3NlbGVjdGVkTWFwPW51bGx9X191cGRhdGVTZWxlY3Rpb24odCxlKXtsZXQgbj1lLnBhdGg7aWYobj09SlNDb21waWxlcl9yZW5hbWVQcm9wZXJ0eSgiaXRlbXMiLHRoaXMpKXtsZXQgbj1lLmJhc2V8fFtdLGk9dGhpcy5fX2xhc3RJdGVtcztpZih0IT09dGhpcy5fX2xhc3RNdWx0aSYmdGhpcy5jbGVhclNlbGVjdGlvbigpLGkpe2xldCB0PVZpKG4saSk7dGhpcy5fX2FwcGx5U3BsaWNlcyh0KX10aGlzLl9fbGFzdEl0ZW1zPW4sdGhpcy5fX2xhc3RNdWx0aT10fWVsc2UgaWYoZS5wYXRoPT1gJHtKU0NvbXBpbGVyX3JlbmFtZVByb3BlcnR5KCJpdGVtcyIsdGhpcyl9LnNwbGljZXNgKXRoaXMuX19hcHBseVNwbGljZXMoZS52YWx1ZS5pbmRleFNwbGljZXMpO2Vsc2V7bGV0IHQ9bi5zbGljZShgJHtKU0NvbXBpbGVyX3JlbmFtZVByb3BlcnR5KCJpdGVtcyIsdGhpcyl9LmAubGVuZ3RoKSxlPXBhcnNlSW50KHQsMTApO3QuaW5kZXhPZigiLiIpPDAmJnQ9PWUmJnRoaXMuX19kZXNlbGVjdENoYW5nZWRJZHgoZSl9fV9fYXBwbHlTcGxpY2VzKHQpe2xldCBlPXRoaXMuX19zZWxlY3RlZE1hcDtmb3IobGV0IG49MDtuPHQubGVuZ3RoO24rKyl7bGV0IGk9dFtuXTtlLmZvckVhY2goKCh0LG4pPT57dDxpLmluZGV4fHxlLnNldChuLHQ+PWkuaW5kZXgraS5yZW1vdmVkLmxlbmd0aD90K2kuYWRkZWRDb3VudC1pLnJlbW92ZWQubGVuZ3RoOi0xKX0pKTtmb3IobGV0IHQ9MDt0PGkuYWRkZWRDb3VudDt0Kyspe2xldCBuPWkuaW5kZXgrdDtlLmhhcyh0aGlzLml0ZW1zW25dKSYmZS5zZXQodGhpcy5pdGVtc1tuXSxuKX19dGhpcy5fX3VwZGF0ZUxpbmtzKCk7bGV0IG49MDtlLmZvckVhY2goKCh0LGkpPT57dDwwPyh0aGlzLm11bHRpP3RoaXMuc3BsaWNlKEpTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoInNlbGVjdGVkIix0aGlzKSxuLDEpOnRoaXMuc2VsZWN0ZWQ9dGhpcy5zZWxlY3RlZEl0ZW09bnVsbCxlLmRlbGV0ZShpKSk6bisrfSkpfV9fdXBkYXRlTGlua3MoKXtpZih0aGlzLl9fZGF0YUxpbmtlZFBhdGhzPXt9LHRoaXMubXVsdGkpe2xldCB0PTA7dGhpcy5fX3NlbGVjdGVkTWFwLmZvckVhY2goKGU9PntlPj0wJiZ0aGlzLmxpbmtQYXRocyhgJHtKU0NvbXBpbGVyX3JlbmFtZVByb3BlcnR5KCJpdGVtcyIsdGhpcyl9LiR7ZX1gLGAke0pTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoInNlbGVjdGVkIix0aGlzKX0uJHt0Kyt9YCl9KSl9ZWxzZSB0aGlzLl9fc2VsZWN0ZWRNYXAuZm9yRWFjaCgodD0+e3RoaXMubGlua1BhdGhzKEpTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoInNlbGVjdGVkIix0aGlzKSxgJHtKU0NvbXBpbGVyX3JlbmFtZVByb3BlcnR5KCJpdGVtcyIsdGhpcyl9LiR7dH1gKSx0aGlzLmxpbmtQYXRocyhKU0NvbXBpbGVyX3JlbmFtZVByb3BlcnR5KCJzZWxlY3RlZEl0ZW0iLHRoaXMpLGAke0pTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoIml0ZW1zIix0aGlzKX0uJHt0fWApfSkpfWNsZWFyU2VsZWN0aW9uKCl7dGhpcy5fX2RhdGFMaW5rZWRQYXRocz17fSx0aGlzLl9fc2VsZWN0ZWRNYXA9bmV3IE1hcCx0aGlzLnNlbGVjdGVkPXRoaXMubXVsdGk/W106bnVsbCx0aGlzLnNlbGVjdGVkSXRlbT1udWxsfWlzU2VsZWN0ZWQodCl7cmV0dXJuIHRoaXMuX19zZWxlY3RlZE1hcC5oYXModCl9aXNJbmRleFNlbGVjdGVkKHQpe3JldHVybiB0aGlzLmlzU2VsZWN0ZWQodGhpcy5pdGVtc1t0XSl9X19kZXNlbGVjdENoYW5nZWRJZHgodCl7bGV0IGU9dGhpcy5fX3NlbGVjdGVkSW5kZXhGb3JJdGVtSW5kZXgodCk7aWYoZT49MCl7bGV0IHQ9MDt0aGlzLl9fc2VsZWN0ZWRNYXAuZm9yRWFjaCgoKG4saSk9PntlPT10KysmJnRoaXMuZGVzZWxlY3QoaSl9KSl9fV9fc2VsZWN0ZWRJbmRleEZvckl0ZW1JbmRleCh0KXtsZXQgZT10aGlzLl9fZGF0YUxpbmtlZFBhdGhzW2Ake0pTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoIml0ZW1zIix0aGlzKX0uJHt0fWBdO2lmKGUpcmV0dXJuIHBhcnNlSW50KGUuc2xpY2UoYCR7SlNDb21waWxlcl9yZW5hbWVQcm9wZXJ0eSgic2VsZWN0ZWQiLHRoaXMpfS5gLmxlbmd0aCksMTApfWRlc2VsZWN0KHQpe2xldCBlPXRoaXMuX19zZWxlY3RlZE1hcC5nZXQodCk7aWYoZT49MCl7bGV0IG47dGhpcy5fX3NlbGVjdGVkTWFwLmRlbGV0ZSh0KSx0aGlzLm11bHRpJiYobj10aGlzLl9fc2VsZWN0ZWRJbmRleEZvckl0ZW1JbmRleChlKSksdGhpcy5fX3VwZGF0ZUxpbmtzKCksdGhpcy5tdWx0aT90aGlzLnNwbGljZShKU0NvbXBpbGVyX3JlbmFtZVByb3BlcnR5KCJzZWxlY3RlZCIsdGhpcyksbiwxKTp0aGlzLnNlbGVjdGVkPXRoaXMuc2VsZWN0ZWRJdGVtPW51bGx9fWRlc2VsZWN0SW5kZXgodCl7dGhpcy5kZXNlbGVjdCh0aGlzLml0ZW1zW3RdKX1zZWxlY3QodCl7dGhpcy5zZWxlY3RJbmRleCh0aGlzLml0ZW1zLmluZGV4T2YodCkpfXNlbGVjdEluZGV4KHQpe2xldCBlPXRoaXMuaXRlbXNbdF07dGhpcy5pc1NlbGVjdGVkKGUpP3RoaXMudG9nZ2xlJiZ0aGlzLmRlc2VsZWN0SW5kZXgodCk6KHRoaXMubXVsdGl8fHRoaXMuX19zZWxlY3RlZE1hcC5jbGVhcigpLHRoaXMuX19zZWxlY3RlZE1hcC5zZXQoZSx0KSx0aGlzLl9fdXBkYXRlTGlua3MoKSx0aGlzLm11bHRpP3RoaXMucHVzaChKU0NvbXBpbGVyX3JlbmFtZVByb3BlcnR5KCJzZWxlY3RlZCIsdGhpcyksZSk6dGhpcy5zZWxlY3RlZD10aGlzLnNlbGVjdGVkSXRlbT1lKX19fSkpKHdlKTtjbGFzcyB5byBleHRlbmRzIF9ve3N0YXRpYyBnZXQgaXMoKXtyZXR1cm4iYXJyYXktc2VsZWN0b3IifXN0YXRpYyBnZXQgdGVtcGxhdGUoKXtyZXR1cm4gbnVsbH19Y3VzdG9tRWxlbWVudHMuZGVmaW5lKHlvLmlzLHlvKTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KY29uc3Qgdm89bmV3IGtuO3dpbmRvdy5TaGFkeUNTU3x8KHdpbmRvdy5TaGFkeUNTUz17cHJlcGFyZVRlbXBsYXRlKHQsZSxuKXt9LHByZXBhcmVUZW1wbGF0ZURvbSh0LGUpe30scHJlcGFyZVRlbXBsYXRlU3R5bGVzKHQsZSxuKXt9LHN0eWxlU3VidHJlZSh0LGUpe3ZvLnByb2Nlc3NTdHlsZXMoKSxvbih0LGUpfSxzdHlsZUVsZW1lbnQodCl7dm8ucHJvY2Vzc1N0eWxlcygpfSxzdHlsZURvY3VtZW50KHQpe3ZvLnByb2Nlc3NTdHlsZXMoKSxvbihkb2N1bWVudC5ib2R5LHQpfSxnZXRDb21wdXRlZFN0eWxlVmFsdWU6KHQsZSk9PmFuKHQsZSksZmx1c2hDdXN0b21TdHlsZXMoKXt9LG5hdGl2ZUNzczpJZSxuYXRpdmVTaGFkb3c6QWUsY3NzQnVpbGQ6TGUsZGlzYWJsZVJ1bnRpbWU6TmV9KSx3aW5kb3cuU2hhZHlDU1MuQ3VzdG9tU3R5bGVJbnRlcmZhY2U9dm87Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNvbnN0IGJvPSJpbmNsdWRlIix4bz13aW5kb3cuU2hhZHlDU1MuQ3VzdG9tU3R5bGVJbnRlcmZhY2U7Y2xhc3Mgd28gZXh0ZW5kcyBIVE1MRWxlbWVudHtjb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy5fc3R5bGU9bnVsbCx4by5hZGRDdXN0b21TdHlsZSh0aGlzKX1nZXRTdHlsZSgpe2lmKHRoaXMuX3N0eWxlKXJldHVybiB0aGlzLl9zdHlsZTtjb25zdCB0PXRoaXMucXVlcnlTZWxlY3Rvcigic3R5bGUiKTtpZighdClyZXR1cm4gbnVsbDt0aGlzLl9zdHlsZT10O2NvbnN0IGU9dC5nZXRBdHRyaWJ1dGUoYm8pO3JldHVybiBlJiYodC5yZW1vdmVBdHRyaWJ1dGUoYm8pLHQudGV4dENvbnRlbnQ9KGZ1bmN0aW9uIG4odCl7bGV0IGU9dC50cmltKCkuc3BsaXQoL1xzKy8pLG49IiI7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0Kyspbis9cShlW3RdKTtyZXR1cm4gbn0pKGUpK3QudGV4dENvbnRlbnQpLHRoaXMub3duZXJEb2N1bWVudCE9PXdpbmRvdy5kb2N1bWVudCYmd2luZG93LmRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQodGhpcyksdGhpcy5fc3R5bGV9fQovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpsZXQgU287d2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgiY3VzdG9tLXN0eWxlIix3byksU289V3IuX211dGFibGVQcm9wZXJ0eUNoYW5nZTtjb25zdCBNbz17cHJvcGVydGllczp7bXV0YWJsZURhdGE6Qm9vbGVhbn0sX3Nob3VsZFByb3BlcnR5Q2hhbmdlKHQsZSxuKXtyZXR1cm4gU28odGhpcyx0LGUsbix0aGlzLm11dGFibGVEYXRhKX19LEVvPWNyKEhUTUxFbGVtZW50KS5wcm90b3R5cGU7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCi8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwp2YXIgVG89bmV3IFNldDtjb25zdCBDbz17cHJvcGVydGllczp7X3BhcmVudFJlc2l6YWJsZTp7dHlwZTpPYmplY3Qsb2JzZXJ2ZXI6Il9wYXJlbnRSZXNpemFibGVDaGFuZ2VkIn0sX25vdGlmeWluZ0Rlc2NlbmRhbnQ6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX19LGxpc3RlbmVyczp7Imlyb24tcmVxdWVzdC1yZXNpemUtbm90aWZpY2F0aW9ucyI6Il9vbklyb25SZXF1ZXN0UmVzaXplTm90aWZpY2F0aW9ucyJ9LGNyZWF0ZWQ6ZnVuY3Rpb24oKXt0aGlzLl9pbnRlcmVzdGVkUmVzaXphYmxlcz1bXSx0aGlzLl9ib3VuZE5vdGlmeVJlc2l6ZT10aGlzLm5vdGlmeVJlc2l6ZS5iaW5kKHRoaXMpLHRoaXMuX2JvdW5kT25EZXNjZW5kYW50SXJvblJlc2l6ZT10aGlzLl9vbkRlc2NlbmRhbnRJcm9uUmVzaXplLmJpbmQodGhpcyl9LGF0dGFjaGVkOmZ1bmN0aW9uKCl7dGhpcy5fcmVxdWVzdFJlc2l6ZU5vdGlmaWNhdGlvbnMoKX0sZGV0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLl9wYXJlbnRSZXNpemFibGU/dGhpcy5fcGFyZW50UmVzaXphYmxlLnN0b3BSZXNpemVOb3RpZmljYXRpb25zRm9yKHRoaXMpOihUby5kZWxldGUodGhpcyksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsdGhpcy5fYm91bmROb3RpZnlSZXNpemUpKSx0aGlzLl9wYXJlbnRSZXNpemFibGU9bnVsbH0sbm90aWZ5UmVzaXplOmZ1bmN0aW9uKCl7dGhpcy5pc0F0dGFjaGVkJiYodGhpcy5faW50ZXJlc3RlZFJlc2l6YWJsZXMuZm9yRWFjaCgoZnVuY3Rpb24odCl7dGhpcy5yZXNpemVyU2hvdWxkTm90aWZ5KHQpJiZ0aGlzLl9ub3RpZnlEZXNjZW5kYW50KHQpfSksdGhpcyksdGhpcy5fZmlyZVJlc2l6ZSgpKX0sYXNzaWduUGFyZW50UmVzaXphYmxlOmZ1bmN0aW9uKHQpe3RoaXMuX3BhcmVudFJlc2l6YWJsZSYmdGhpcy5fcGFyZW50UmVzaXphYmxlLnN0b3BSZXNpemVOb3RpZmljYXRpb25zRm9yKHRoaXMpLHRoaXMuX3BhcmVudFJlc2l6YWJsZT10LHQmJi0xPT09dC5faW50ZXJlc3RlZFJlc2l6YWJsZXMuaW5kZXhPZih0aGlzKSYmKHQuX2ludGVyZXN0ZWRSZXNpemFibGVzLnB1c2godGhpcyksdC5fc3Vic2NyaWJlSXJvblJlc2l6ZSh0aGlzKSl9LHN0b3BSZXNpemVOb3RpZmljYXRpb25zRm9yOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2ludGVyZXN0ZWRSZXNpemFibGVzLmluZGV4T2YodCk7ZT4tMSYmKHRoaXMuX2ludGVyZXN0ZWRSZXNpemFibGVzLnNwbGljZShlLDEpLHRoaXMuX3Vuc3Vic2NyaWJlSXJvblJlc2l6ZSh0KSl9LF9zdWJzY3JpYmVJcm9uUmVzaXplOmZ1bmN0aW9uKHQpe3QuYWRkRXZlbnRMaXN0ZW5lcigiaXJvbi1yZXNpemUiLHRoaXMuX2JvdW5kT25EZXNjZW5kYW50SXJvblJlc2l6ZSl9LF91bnN1YnNjcmliZUlyb25SZXNpemU6ZnVuY3Rpb24odCl7dC5yZW1vdmVFdmVudExpc3RlbmVyKCJpcm9uLXJlc2l6ZSIsdGhpcy5fYm91bmRPbkRlc2NlbmRhbnRJcm9uUmVzaXplKX0scmVzaXplclNob3VsZE5vdGlmeTpmdW5jdGlvbih0KXtyZXR1cm4hMH0sX29uRGVzY2VuZGFudElyb25SZXNpemU6ZnVuY3Rpb24odCl7dGhpcy5fbm90aWZ5aW5nRGVzY2VuZGFudD90LnN0b3BQcm9wYWdhdGlvbigpOm18fHRoaXMuX2ZpcmVSZXNpemUoKX0sX2ZpcmVSZXNpemU6ZnVuY3Rpb24oKXt0aGlzLmZpcmUoImlyb24tcmVzaXplIixudWxsLHtub2RlOnRoaXMsYnViYmxlczohMX0pfSxfb25Jcm9uUmVxdWVzdFJlc2l6ZU5vdGlmaWNhdGlvbnM6ZnVuY3Rpb24odCl7dmFyIGU9ZXIodCkucm9vdFRhcmdldDtlIT09dGhpcyYmKGUuYXNzaWduUGFyZW50UmVzaXphYmxlKHRoaXMpLHRoaXMuX25vdGlmeURlc2NlbmRhbnQoZSksdC5zdG9wUHJvcGFnYXRpb24oKSl9LF9wYXJlbnRSZXNpemFibGVDaGFuZ2VkOmZ1bmN0aW9uKHQpe3QmJndpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJyZXNpemUiLHRoaXMuX2JvdW5kTm90aWZ5UmVzaXplKX0sX25vdGlmeURlc2NlbmRhbnQ6ZnVuY3Rpb24odCl7dGhpcy5pc0F0dGFjaGVkJiYodGhpcy5fbm90aWZ5aW5nRGVzY2VuZGFudD0hMCx0Lm5vdGlmeVJlc2l6ZSgpLHRoaXMuX25vdGlmeWluZ0Rlc2NlbmRhbnQ9ITEpfSxfcmVxdWVzdFJlc2l6ZU5vdGlmaWNhdGlvbnM6ZnVuY3Rpb24oKXtpZih0aGlzLmlzQXR0YWNoZWQpaWYoImxvYWRpbmciPT09ZG9jdW1lbnQucmVhZHlTdGF0ZSl7dmFyIHQ9dGhpcy5fcmVxdWVzdFJlc2l6ZU5vdGlmaWNhdGlvbnMuYmluZCh0aGlzKTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJyZWFkeXN0YXRlY2hhbmdlIiwoZnVuY3Rpb24gZSgpe2RvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInJlYWR5c3RhdGVjaGFuZ2UiLGUpLHQoKX0pKX1lbHNlIHRoaXMuX2ZpbmRQYXJlbnQoKSx0aGlzLl9wYXJlbnRSZXNpemFibGU/dGhpcy5fcGFyZW50UmVzaXphYmxlLl9pbnRlcmVzdGVkUmVzaXphYmxlcy5mb3JFYWNoKChmdW5jdGlvbih0KXt0IT09dGhpcyYmdC5fZmluZFBhcmVudCgpfSksdGhpcyk6KFRvLmZvckVhY2goKGZ1bmN0aW9uKHQpe3QhPT10aGlzJiZ0Ll9maW5kUGFyZW50KCl9KSx0aGlzKSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicmVzaXplIix0aGlzLl9ib3VuZE5vdGlmeVJlc2l6ZSksdGhpcy5ub3RpZnlSZXNpemUoKSl9LF9maW5kUGFyZW50OmZ1bmN0aW9uKCl7dGhpcy5hc3NpZ25QYXJlbnRSZXNpemFibGUobnVsbCksdGhpcy5maXJlKCJpcm9uLXJlcXVlc3QtcmVzaXplLW5vdGlmaWNhdGlvbnMiLG51bGwse25vZGU6dGhpcyxidWJibGVzOiEwLGNhbmNlbGFibGU6ITB9KSx0aGlzLl9wYXJlbnRSZXNpemFibGU/VG8uZGVsZXRlKHRoaXMpOlRvLmFkZCh0aGlzKX19O3ZhciBBbz1PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxJcm9uUmVzaXphYmxlQmVoYXZpb3I6Q299KTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovanIoe190ZW1wbGF0ZTp4ZWAKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIHRyYW5zaXRpb24tZHVyYXRpb246IHZhcigtLWlyb24tY29sbGFwc2UtdHJhbnNpdGlvbi1kdXJhdGlvbiwgMzAwbXMpOwogICAgICAgIC8qIFNhZmFyaSAxMCBuZWVkcyB0aGlzIHByb3BlcnR5IHByZWZpeGVkIHRvIGNvcnJlY3RseSBhcHBseSB0aGUgY3VzdG9tIHByb3BlcnR5ICovCiAgICAgICAgLXdlYmtpdC10cmFuc2l0aW9uLWR1cmF0aW9uOiB2YXIoLS1pcm9uLWNvbGxhcHNlLXRyYW5zaXRpb24tZHVyYXRpb24sIDMwMG1zKTsKICAgICAgICBvdmVyZmxvdzogdmlzaWJsZTsKICAgICAgfQoKICAgICAgOmhvc3QoLmlyb24tY29sbGFwc2UtY2xvc2VkKSB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgfQoKICAgICAgOmhvc3QoOm5vdCguaXJvbi1jb2xsYXBzZS1vcGVuZWQpKSB7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8c2xvdD48L3Nsb3Q+CmAsaXM6Imlyb24tY29sbGFwc2UiLGJlaGF2aW9yczpbQ29dLHByb3BlcnRpZXM6e2hvcml6b250YWw6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMSxvYnNlcnZlcjoiX2hvcml6b250YWxDaGFuZ2VkIn0sb3BlbmVkOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITEsbm90aWZ5OiEwLG9ic2VydmVyOiJfb3BlbmVkQ2hhbmdlZCJ9LHRyYW5zaXRpb25pbmc6e3R5cGU6Qm9vbGVhbixub3RpZnk6ITAscmVhZE9ubHk6ITB9LG5vQW5pbWF0aW9uOnt0eXBlOkJvb2xlYW59LF9kZXNpcmVkU2l6ZTp7dHlwZTpTdHJpbmcsdmFsdWU6IiJ9fSxnZXQgZGltZW5zaW9uKCl7cmV0dXJuIHRoaXMuaG9yaXpvbnRhbD8id2lkdGgiOiJoZWlnaHQifSxnZXQgX2RpbWVuc2lvbk1heCgpe3JldHVybiB0aGlzLmhvcml6b250YWw/Im1heFdpZHRoIjoibWF4SGVpZ2h0In0sZ2V0IF9kaW1lbnNpb25NYXhDc3MoKXtyZXR1cm4gdGhpcy5ob3Jpem9udGFsPyJtYXgtd2lkdGgiOiJtYXgtaGVpZ2h0In0saG9zdEF0dHJpYnV0ZXM6e3JvbGU6Imdyb3VwIiwiYXJpYS1oaWRkZW4iOiJ0cnVlIn0sbGlzdGVuZXJzOnt0cmFuc2l0aW9uZW5kOiJfb25UcmFuc2l0aW9uRW5kIn0sdG9nZ2xlOmZ1bmN0aW9uKCl7dGhpcy5vcGVuZWQ9IXRoaXMub3BlbmVkfSxzaG93OmZ1bmN0aW9uKCl7dGhpcy5vcGVuZWQ9ITB9LGhpZGU6ZnVuY3Rpb24oKXt0aGlzLm9wZW5lZD0hMX0sdXBkYXRlU2l6ZTpmdW5jdGlvbih0LGUpe3Q9ImF1dG8iPT09dD8iIjp0O3ZhciBuPWUmJiF0aGlzLm5vQW5pbWF0aW9uJiZ0aGlzLmlzQXR0YWNoZWQmJnRoaXMuX2Rlc2lyZWRTaXplIT09dDtpZih0aGlzLl9kZXNpcmVkU2l6ZT10LHRoaXMuX3VwZGF0ZVRyYW5zaXRpb24oITEpLG4pe3ZhciBpPXRoaXMuX2NhbGNTaXplKCk7IiI9PT10JiYodGhpcy5zdHlsZVt0aGlzLl9kaW1lbnNpb25NYXhdPSIiLHQ9dGhpcy5fY2FsY1NpemUoKSksdGhpcy5zdHlsZVt0aGlzLl9kaW1lbnNpb25NYXhdPWksdGhpcy5zY3JvbGxUb3A9dGhpcy5zY3JvbGxUb3AsdGhpcy5fdXBkYXRlVHJhbnNpdGlvbighMCksbj10IT09aX10aGlzLnN0eWxlW3RoaXMuX2RpbWVuc2lvbk1heF09dCxufHx0aGlzLl90cmFuc2l0aW9uRW5kKCl9LGVuYWJsZVRyYW5zaXRpb246ZnVuY3Rpb24odCl7RW8uX3dhcm4oImBlbmFibGVUcmFuc2l0aW9uKClgIGlzIGRlcHJlY2F0ZWQsIHVzZSBgbm9BbmltYXRpb25gIGluc3RlYWQuIiksdGhpcy5ub0FuaW1hdGlvbj0hdH0sX3VwZGF0ZVRyYW5zaXRpb246ZnVuY3Rpb24odCl7dGhpcy5zdHlsZS50cmFuc2l0aW9uRHVyYXRpb249dCYmIXRoaXMubm9BbmltYXRpb24/IiI6IjBzIn0sX2hvcml6b250YWxDaGFuZ2VkOmZ1bmN0aW9uKCl7dGhpcy5zdHlsZS50cmFuc2l0aW9uUHJvcGVydHk9dGhpcy5fZGltZW5zaW9uTWF4Q3NzLHRoaXMuc3R5bGVbIm1heFdpZHRoIj09PXRoaXMuX2RpbWVuc2lvbk1heD8ibWF4SGVpZ2h0IjoibWF4V2lkdGgiXT0iIix0aGlzLnVwZGF0ZVNpemUodGhpcy5vcGVuZWQ/ImF1dG8iOiIwcHgiLCExKX0sX29wZW5lZENoYW5nZWQ6ZnVuY3Rpb24oKXt0aGlzLnNldEF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iLCF0aGlzLm9wZW5lZCksdGhpcy5fc2V0VHJhbnNpdGlvbmluZyghMCksdGhpcy50b2dnbGVDbGFzcygiaXJvbi1jb2xsYXBzZS1jbG9zZWQiLCExKSx0aGlzLnRvZ2dsZUNsYXNzKCJpcm9uLWNvbGxhcHNlLW9wZW5lZCIsITEpLHRoaXMudXBkYXRlU2l6ZSh0aGlzLm9wZW5lZD8iYXV0byI6IjBweCIsITApLHRoaXMub3BlbmVkJiZ0aGlzLmZvY3VzKCl9LF90cmFuc2l0aW9uRW5kOmZ1bmN0aW9uKCl7dGhpcy5zdHlsZVt0aGlzLl9kaW1lbnNpb25NYXhdPXRoaXMuX2Rlc2lyZWRTaXplLHRoaXMudG9nZ2xlQ2xhc3MoImlyb24tY29sbGFwc2UtY2xvc2VkIiwhdGhpcy5vcGVuZWQpLHRoaXMudG9nZ2xlQ2xhc3MoImlyb24tY29sbGFwc2Utb3BlbmVkIix0aGlzLm9wZW5lZCksdGhpcy5fdXBkYXRlVHJhbnNpdGlvbighMSksdGhpcy5ub3RpZnlSZXNpemUoKSx0aGlzLl9zZXRUcmFuc2l0aW9uaW5nKCExKX0sX29uVHJhbnNpdGlvbkVuZDpmdW5jdGlvbih0KXtlcih0KS5yb290VGFyZ2V0PT09dGhpcyYmdGhpcy5fdHJhbnNpdGlvbkVuZCgpfSxfY2FsY1NpemU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVt0aGlzLmRpbWVuc2lvbl0rInB4In19KTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNvbnN0IGtvPXhlYAovKiBNb3N0IGNvbW1vbiB1c2VkIGZsZXggc3R5bGVzKi8KPGRvbS1tb2R1bGUgaWQ9Imlyb24tZmxleCI+CiAgPHRlbXBsYXRlPgogICAgPHN0eWxlPgogICAgICAubGF5b3V0Lmhvcml6b250YWwsCiAgICAgIC5sYXlvdXQudmVydGljYWwgewogICAgICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgICAgIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICB9CgogICAgICAubGF5b3V0LmlubGluZSB7CiAgICAgICAgZGlzcGxheTogLW1zLWlubGluZS1mbGV4Ym94OwogICAgICAgIGRpc3BsYXk6IC13ZWJraXQtaW5saW5lLWZsZXg7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgICAgIH0KCiAgICAgIC5sYXlvdXQuaG9yaXpvbnRhbCB7CiAgICAgICAgLW1zLWZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAgICAgLXdlYmtpdC1mbGV4LWRpcmVjdGlvbjogcm93OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAgIH0KCiAgICAgIC5sYXlvdXQudmVydGljYWwgewogICAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIC13ZWJraXQtZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICB9CgogICAgICAubGF5b3V0LndyYXAgewogICAgICAgIC1tcy1mbGV4LXdyYXA6IHdyYXA7CiAgICAgICAgLXdlYmtpdC1mbGV4LXdyYXA6IHdyYXA7CiAgICAgICAgZmxleC13cmFwOiB3cmFwOwogICAgICB9CgogICAgICAubGF5b3V0Lm5vLXdyYXAgewogICAgICAgIC1tcy1mbGV4LXdyYXA6IG5vd3JhcDsKICAgICAgICAtd2Via2l0LWZsZXgtd3JhcDogbm93cmFwOwogICAgICAgIGZsZXgtd3JhcDogbm93cmFwOwogICAgICB9CgogICAgICAubGF5b3V0LmNlbnRlciwKICAgICAgLmxheW91dC5jZW50ZXItY2VudGVyIHsKICAgICAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyOwogICAgICAgIC13ZWJraXQtYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICB9CgogICAgICAubGF5b3V0LmNlbnRlci1qdXN0aWZpZWQsCiAgICAgIC5sYXlvdXQuY2VudGVyLWNlbnRlciB7CiAgICAgICAgLW1zLWZsZXgtcGFjazogY2VudGVyOwogICAgICAgIC13ZWJraXQtanVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgIH0KCiAgICAgIC5mbGV4IHsKICAgICAgICAtbXMtZmxleDogMSAxIDAuMDAwMDAwMDAxcHg7CiAgICAgICAgLXdlYmtpdC1mbGV4OiAxOwogICAgICAgIGZsZXg6IDE7CiAgICAgICAgLXdlYmtpdC1mbGV4LWJhc2lzOiAwLjAwMDAwMDAwMXB4OwogICAgICAgIGZsZXgtYmFzaXM6IDAuMDAwMDAwMDAxcHg7CiAgICAgIH0KCiAgICAgIC5mbGV4LWF1dG8gewogICAgICAgIC1tcy1mbGV4OiAxIDEgYXV0bzsKICAgICAgICAtd2Via2l0LWZsZXg6IDEgMSBhdXRvOwogICAgICAgIGZsZXg6IDEgMSBhdXRvOwogICAgICB9CgogICAgICAuZmxleC1ub25lIHsKICAgICAgICAtbXMtZmxleDogbm9uZTsKICAgICAgICAtd2Via2l0LWZsZXg6IG5vbmU7CiAgICAgICAgZmxleDogbm9uZTsKICAgICAgfQogICAgPC9zdHlsZT4KICA8L3RlbXBsYXRlPgo8L2RvbS1tb2R1bGU+Ci8qIEJhc2ljIGZsZXhib3ggcmV2ZXJzZSBzdHlsZXMgKi8KPGRvbS1tb2R1bGUgaWQ9Imlyb24tZmxleC1yZXZlcnNlIj4KICA8dGVtcGxhdGU+CiAgICA8c3R5bGU+CiAgICAgIC5sYXlvdXQuaG9yaXpvbnRhbC1yZXZlcnNlLAogICAgICAubGF5b3V0LnZlcnRpY2FsLXJldmVyc2UgewogICAgICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgICAgIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICB9CgogICAgICAubGF5b3V0Lmhvcml6b250YWwtcmV2ZXJzZSB7CiAgICAgICAgLW1zLWZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTsKICAgICAgICAtd2Via2l0LWZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2U7CiAgICAgIH0KCiAgICAgIC5sYXlvdXQudmVydGljYWwtcmV2ZXJzZSB7CiAgICAgICAgLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZTsKICAgICAgICAtd2Via2l0LWZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZTsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2U7CiAgICAgIH0KCiAgICAgIC5sYXlvdXQud3JhcC1yZXZlcnNlIHsKICAgICAgICAtbXMtZmxleC13cmFwOiB3cmFwLXJldmVyc2U7CiAgICAgICAgLXdlYmtpdC1mbGV4LXdyYXA6IHdyYXAtcmV2ZXJzZTsKICAgICAgICBmbGV4LXdyYXA6IHdyYXAtcmV2ZXJzZTsKICAgICAgfQogICAgPC9zdHlsZT4KICA8L3RlbXBsYXRlPgo8L2RvbS1tb2R1bGU+Ci8qIEZsZXhib3ggYWxpZ25tZW50ICovCjxkb20tbW9kdWxlIGlkPSJpcm9uLWZsZXgtYWxpZ25tZW50Ij4KICA8dGVtcGxhdGU+CiAgICA8c3R5bGU+CiAgICAgIC8qKgogICAgICAgKiBBbGlnbm1lbnQgaW4gY3Jvc3MgYXhpcy4KICAgICAgICovCiAgICAgIC5sYXlvdXQuc3RhcnQgewogICAgICAgIC1tcy1mbGV4LWFsaWduOiBzdGFydDsKICAgICAgICAtd2Via2l0LWFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OwogICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OwogICAgICB9CgogICAgICAubGF5b3V0LmNlbnRlciwKICAgICAgLmxheW91dC5jZW50ZXItY2VudGVyIHsKICAgICAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyOwogICAgICAgIC13ZWJraXQtYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICB9CgogICAgICAubGF5b3V0LmVuZCB7CiAgICAgICAgLW1zLWZsZXgtYWxpZ246IGVuZDsKICAgICAgICAtd2Via2l0LWFsaWduLWl0ZW1zOiBmbGV4LWVuZDsKICAgICAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7CiAgICAgIH0KCiAgICAgIC5sYXlvdXQuYmFzZWxpbmUgewogICAgICAgIC1tcy1mbGV4LWFsaWduOiBiYXNlbGluZTsKICAgICAgICAtd2Via2l0LWFsaWduLWl0ZW1zOiBiYXNlbGluZTsKICAgICAgICBhbGlnbi1pdGVtczogYmFzZWxpbmU7CiAgICAgIH0KCiAgICAgIC8qKgogICAgICAgKiBBbGlnbm1lbnQgaW4gbWFpbiBheGlzLgogICAgICAgKi8KICAgICAgLmxheW91dC5zdGFydC1qdXN0aWZpZWQgewogICAgICAgIC1tcy1mbGV4LXBhY2s6IHN0YXJ0OwogICAgICAgIC13ZWJraXQtanVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0OwogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsKICAgICAgfQoKICAgICAgLmxheW91dC5jZW50ZXItanVzdGlmaWVkLAogICAgICAubGF5b3V0LmNlbnRlci1jZW50ZXIgewogICAgICAgIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjsKICAgICAgICAtd2Via2l0LWp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICB9CgogICAgICAubGF5b3V0LmVuZC1qdXN0aWZpZWQgewogICAgICAgIC1tcy1mbGV4LXBhY2s6IGVuZDsKICAgICAgICAtd2Via2l0LWp1c3RpZnktY29udGVudDogZmxleC1lbmQ7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsKICAgICAgfQoKICAgICAgLmxheW91dC5hcm91bmQtanVzdGlmaWVkIHsKICAgICAgICAtbXMtZmxleC1wYWNrOiBkaXN0cmlidXRlOwogICAgICAgIC13ZWJraXQtanVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQ7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQ7CiAgICAgIH0KCiAgICAgIC5sYXlvdXQuanVzdGlmaWVkIHsKICAgICAgICAtbXMtZmxleC1wYWNrOiBqdXN0aWZ5OwogICAgICAgIC13ZWJraXQtanVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgfQoKICAgICAgLyoqCiAgICAgICAqIFNlbGYgYWxpZ25tZW50LgogICAgICAgKi8KICAgICAgLnNlbGYtc3RhcnQgewogICAgICAgIC1tcy1hbGlnbi1zZWxmOiBmbGV4LXN0YXJ0OwogICAgICAgIC13ZWJraXQtYWxpZ24tc2VsZjogZmxleC1zdGFydDsKICAgICAgICBhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0OwogICAgICB9CgogICAgICAuc2VsZi1jZW50ZXIgewogICAgICAgIC1tcy1hbGlnbi1zZWxmOiBjZW50ZXI7CiAgICAgICAgLXdlYmtpdC1hbGlnbi1zZWxmOiBjZW50ZXI7CiAgICAgICAgYWxpZ24tc2VsZjogY2VudGVyOwogICAgICB9CgogICAgICAuc2VsZi1lbmQgewogICAgICAgIC1tcy1hbGlnbi1zZWxmOiBmbGV4LWVuZDsKICAgICAgICAtd2Via2l0LWFsaWduLXNlbGY6IGZsZXgtZW5kOwogICAgICAgIGFsaWduLXNlbGY6IGZsZXgtZW5kOwogICAgICB9CgogICAgICAuc2VsZi1zdHJldGNoIHsKICAgICAgICAtbXMtYWxpZ24tc2VsZjogc3RyZXRjaDsKICAgICAgICAtd2Via2l0LWFsaWduLXNlbGY6IHN0cmV0Y2g7CiAgICAgICAgYWxpZ24tc2VsZjogc3RyZXRjaDsKICAgICAgfQoKICAgICAgLnNlbGYtYmFzZWxpbmUgewogICAgICAgIC1tcy1hbGlnbi1zZWxmOiBiYXNlbGluZTsKICAgICAgICAtd2Via2l0LWFsaWduLXNlbGY6IGJhc2VsaW5lOwogICAgICAgIGFsaWduLXNlbGY6IGJhc2VsaW5lOwogICAgICB9CgogICAgICAvKioKICAgICAgICogbXVsdGktbGluZSBhbGlnbm1lbnQgaW4gbWFpbiBheGlzLgogICAgICAgKi8KICAgICAgLmxheW91dC5zdGFydC1hbGlnbmVkIHsKICAgICAgICAtbXMtZmxleC1saW5lLXBhY2s6IHN0YXJ0OyAgLyogSUUxMCAqLwogICAgICAgIC1tcy1hbGlnbi1jb250ZW50OiBmbGV4LXN0YXJ0OwogICAgICAgIC13ZWJraXQtYWxpZ24tY29udGVudDogZmxleC1zdGFydDsKICAgICAgICBhbGlnbi1jb250ZW50OiBmbGV4LXN0YXJ0OwogICAgICB9CgogICAgICAubGF5b3V0LmVuZC1hbGlnbmVkIHsKICAgICAgICAtbXMtZmxleC1saW5lLXBhY2s6IGVuZDsgIC8qIElFMTAgKi8KICAgICAgICAtbXMtYWxpZ24tY29udGVudDogZmxleC1lbmQ7CiAgICAgICAgLXdlYmtpdC1hbGlnbi1jb250ZW50OiBmbGV4LWVuZDsKICAgICAgICBhbGlnbi1jb250ZW50OiBmbGV4LWVuZDsKICAgICAgfQoKICAgICAgLmxheW91dC5jZW50ZXItYWxpZ25lZCB7CiAgICAgICAgLW1zLWZsZXgtbGluZS1wYWNrOiBjZW50ZXI7ICAvKiBJRTEwICovCiAgICAgICAgLW1zLWFsaWduLWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAtd2Via2l0LWFsaWduLWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICBhbGlnbi1jb250ZW50OiBjZW50ZXI7CiAgICAgIH0KCiAgICAgIC5sYXlvdXQuYmV0d2Vlbi1hbGlnbmVkIHsKICAgICAgICAtbXMtZmxleC1saW5lLXBhY2s6IGp1c3RpZnk7ICAvKiBJRTEwICovCiAgICAgICAgLW1zLWFsaWduLWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAgICAgLXdlYmtpdC1hbGlnbi1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgIGFsaWduLWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAgIH0KCiAgICAgIC5sYXlvdXQuYXJvdW5kLWFsaWduZWQgewogICAgICAgIC1tcy1mbGV4LWxpbmUtcGFjazogZGlzdHJpYnV0ZTsgIC8qIElFMTAgKi8KICAgICAgICAtbXMtYWxpZ24tY29udGVudDogc3BhY2UtYXJvdW5kOwogICAgICAgIC13ZWJraXQtYWxpZ24tY29udGVudDogc3BhY2UtYXJvdW5kOwogICAgICAgIGFsaWduLWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDsKICAgICAgfQogICAgPC9zdHlsZT4KICA8L3RlbXBsYXRlPgo8L2RvbS1tb2R1bGU+Ci8qIE5vbi1mbGV4Ym94IHBvc2l0aW9uaW5nIGhlbHBlciBzdHlsZXMgKi8KPGRvbS1tb2R1bGUgaWQ9Imlyb24tZmxleC1mYWN0b3JzIj4KICA8dGVtcGxhdGU+CiAgICA8c3R5bGU+CiAgICAgIC5mbGV4LAogICAgICAuZmxleC0xIHsKICAgICAgICAtbXMtZmxleDogMSAxIDAuMDAwMDAwMDAxcHg7CiAgICAgICAgLXdlYmtpdC1mbGV4OiAxOwogICAgICAgIGZsZXg6IDE7CiAgICAgICAgLXdlYmtpdC1mbGV4LWJhc2lzOiAwLjAwMDAwMDAwMXB4OwogICAgICAgIGZsZXgtYmFzaXM6IDAuMDAwMDAwMDAxcHg7CiAgICAgIH0KCiAgICAgIC5mbGV4LTIgewogICAgICAgIC1tcy1mbGV4OiAyOwogICAgICAgIC13ZWJraXQtZmxleDogMjsKICAgICAgICBmbGV4OiAyOwogICAgICB9CgogICAgICAuZmxleC0zIHsKICAgICAgICAtbXMtZmxleDogMzsKICAgICAgICAtd2Via2l0LWZsZXg6IDM7CiAgICAgICAgZmxleDogMzsKICAgICAgfQoKICAgICAgLmZsZXgtNCB7CiAgICAgICAgLW1zLWZsZXg6IDQ7CiAgICAgICAgLXdlYmtpdC1mbGV4OiA0OwogICAgICAgIGZsZXg6IDQ7CiAgICAgIH0KCiAgICAgIC5mbGV4LTUgewogICAgICAgIC1tcy1mbGV4OiA1OwogICAgICAgIC13ZWJraXQtZmxleDogNTsKICAgICAgICBmbGV4OiA1OwogICAgICB9CgogICAgICAuZmxleC02IHsKICAgICAgICAtbXMtZmxleDogNjsKICAgICAgICAtd2Via2l0LWZsZXg6IDY7CiAgICAgICAgZmxleDogNjsKICAgICAgfQoKICAgICAgLmZsZXgtNyB7CiAgICAgICAgLW1zLWZsZXg6IDc7CiAgICAgICAgLXdlYmtpdC1mbGV4OiA3OwogICAgICAgIGZsZXg6IDc7CiAgICAgIH0KCiAgICAgIC5mbGV4LTggewogICAgICAgIC1tcy1mbGV4OiA4OwogICAgICAgIC13ZWJraXQtZmxleDogODsKICAgICAgICBmbGV4OiA4OwogICAgICB9CgogICAgICAuZmxleC05IHsKICAgICAgICAtbXMtZmxleDogOTsKICAgICAgICAtd2Via2l0LWZsZXg6IDk7CiAgICAgICAgZmxleDogOTsKICAgICAgfQoKICAgICAgLmZsZXgtMTAgewogICAgICAgIC1tcy1mbGV4OiAxMDsKICAgICAgICAtd2Via2l0LWZsZXg6IDEwOwogICAgICAgIGZsZXg6IDEwOwogICAgICB9CgogICAgICAuZmxleC0xMSB7CiAgICAgICAgLW1zLWZsZXg6IDExOwogICAgICAgIC13ZWJraXQtZmxleDogMTE7CiAgICAgICAgZmxleDogMTE7CiAgICAgIH0KCiAgICAgIC5mbGV4LTEyIHsKICAgICAgICAtbXMtZmxleDogMTI7CiAgICAgICAgLXdlYmtpdC1mbGV4OiAxMjsKICAgICAgICBmbGV4OiAxMjsKICAgICAgfQogICAgPC9zdHlsZT4KICA8L3RlbXBsYXRlPgo8L2RvbS1tb2R1bGU+Cjxkb20tbW9kdWxlIGlkPSJpcm9uLXBvc2l0aW9uaW5nIj4KICA8dGVtcGxhdGU+CiAgICA8c3R5bGU+CiAgICAgIC5ibG9jayB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgIH0KCiAgICAgIFtoaWRkZW5dIHsKICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgICAgIH0KCiAgICAgIC5pbnZpc2libGUgewogICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbiAhaW1wb3J0YW50OwogICAgICB9CgogICAgICAucmVsYXRpdmUgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgfQoKICAgICAgLmZpdCB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogMDsKICAgICAgICByaWdodDogMDsKICAgICAgICBib3R0b206IDA7CiAgICAgICAgbGVmdDogMDsKICAgICAgfQoKICAgICAgYm9keS5mdWxsYmxlZWQgewogICAgICAgIG1hcmdpbjogMDsKICAgICAgICBoZWlnaHQ6IDEwMHZoOwogICAgICB9CgogICAgICAuc2Nyb2xsIHsKICAgICAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7CiAgICAgICAgb3ZlcmZsb3c6IGF1dG87CiAgICAgIH0KCiAgICAgIC8qIGZpeGVkIHBvc2l0aW9uICovCiAgICAgIC5maXhlZC1ib3R0b20sCiAgICAgIC5maXhlZC1sZWZ0LAogICAgICAuZml4ZWQtcmlnaHQsCiAgICAgIC5maXhlZC10b3AgewogICAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgfQoKICAgICAgLmZpeGVkLXRvcCB7CiAgICAgICAgdG9wOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgIH0KCiAgICAgIC5maXhlZC1yaWdodCB7CiAgICAgICAgdG9wOiAwOwogICAgICAgIHJpZ2h0OiAwOwogICAgICAgIGJvdHRvbTogMDsKICAgICAgfQoKICAgICAgLmZpeGVkLWJvdHRvbSB7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgYm90dG9tOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgIH0KCiAgICAgIC5maXhlZC1sZWZ0IHsKICAgICAgICB0b3A6IDA7CiAgICAgICAgYm90dG9tOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC90ZW1wbGF0ZT4KPC9kb20tbW9kdWxlPgpgO2tvLnNldEF0dHJpYnV0ZSgic3R5bGUiLCJkaXNwbGF5OiBub25lOyIpLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoa28uY29udGVudCk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCBMbz14ZWAKPGN1c3RvbS1zdHlsZT4KICA8c3R5bGUgaXM9ImN1c3RvbS1zdHlsZSI+CiAgICBbaGlkZGVuXSB7CiAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICAgIH0KICA8L3N0eWxlPgo8L2N1c3RvbS1zdHlsZT4KPGN1c3RvbS1zdHlsZT4KICA8c3R5bGUgaXM9ImN1c3RvbS1zdHlsZSI+CiAgICBodG1sIHsKCiAgICAgIC0tbGF5b3V0OiB7CiAgICAgICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICAgICAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIH07CgogICAgICAtLWxheW91dC1pbmxpbmU6IHsKICAgICAgICBkaXNwbGF5OiAtbXMtaW5saW5lLWZsZXhib3g7CiAgICAgICAgZGlzcGxheTogLXdlYmtpdC1pbmxpbmUtZmxleDsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWhvcml6b250YWw6IHsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQ7CgogICAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogcm93OwogICAgICAgIC13ZWJraXQtZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93OwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtaG9yaXpvbnRhbC1yZXZlcnNlOiB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0OwoKICAgICAgICAtbXMtZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlOwogICAgICAgIC13ZWJraXQtZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlOwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LXZlcnRpY2FsOiB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0OwoKICAgICAgICAtbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICAtd2Via2l0LWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LXZlcnRpY2FsLXJldmVyc2U6IHsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQ7CgogICAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2U7CiAgICAgICAgLXdlYmtpdC1mbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2U7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtd3JhcDogewogICAgICAgIC1tcy1mbGV4LXdyYXA6IHdyYXA7CiAgICAgICAgLXdlYmtpdC1mbGV4LXdyYXA6IHdyYXA7CiAgICAgICAgZmxleC13cmFwOiB3cmFwOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtd3JhcC1yZXZlcnNlOiB7CiAgICAgICAgLW1zLWZsZXgtd3JhcDogd3JhcC1yZXZlcnNlOwogICAgICAgIC13ZWJraXQtZmxleC13cmFwOiB3cmFwLXJldmVyc2U7CiAgICAgICAgZmxleC13cmFwOiB3cmFwLXJldmVyc2U7CiAgICAgIH07CgogICAgICAtLWxheW91dC1mbGV4LWF1dG86IHsKICAgICAgICAtbXMtZmxleDogMSAxIGF1dG87CiAgICAgICAgLXdlYmtpdC1mbGV4OiAxIDEgYXV0bzsKICAgICAgICBmbGV4OiAxIDEgYXV0bzsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWZsZXgtbm9uZTogewogICAgICAgIC1tcy1mbGV4OiBub25lOwogICAgICAgIC13ZWJraXQtZmxleDogbm9uZTsKICAgICAgICBmbGV4OiBub25lOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtZmxleDogewogICAgICAgIC1tcy1mbGV4OiAxIDEgMC4wMDAwMDAwMDFweDsKICAgICAgICAtd2Via2l0LWZsZXg6IDE7CiAgICAgICAgZmxleDogMTsKICAgICAgICAtd2Via2l0LWZsZXgtYmFzaXM6IDAuMDAwMDAwMDAxcHg7CiAgICAgICAgZmxleC1iYXNpczogMC4wMDAwMDAwMDFweDsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWZsZXgtMjogewogICAgICAgIC1tcy1mbGV4OiAyOwogICAgICAgIC13ZWJraXQtZmxleDogMjsKICAgICAgICBmbGV4OiAyOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtZmxleC0zOiB7CiAgICAgICAgLW1zLWZsZXg6IDM7CiAgICAgICAgLXdlYmtpdC1mbGV4OiAzOwogICAgICAgIGZsZXg6IDM7CiAgICAgIH07CgogICAgICAtLWxheW91dC1mbGV4LTQ6IHsKICAgICAgICAtbXMtZmxleDogNDsKICAgICAgICAtd2Via2l0LWZsZXg6IDQ7CiAgICAgICAgZmxleDogNDsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWZsZXgtNTogewogICAgICAgIC1tcy1mbGV4OiA1OwogICAgICAgIC13ZWJraXQtZmxleDogNTsKICAgICAgICBmbGV4OiA1OwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtZmxleC02OiB7CiAgICAgICAgLW1zLWZsZXg6IDY7CiAgICAgICAgLXdlYmtpdC1mbGV4OiA2OwogICAgICAgIGZsZXg6IDY7CiAgICAgIH07CgogICAgICAtLWxheW91dC1mbGV4LTc6IHsKICAgICAgICAtbXMtZmxleDogNzsKICAgICAgICAtd2Via2l0LWZsZXg6IDc7CiAgICAgICAgZmxleDogNzsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWZsZXgtODogewogICAgICAgIC1tcy1mbGV4OiA4OwogICAgICAgIC13ZWJraXQtZmxleDogODsKICAgICAgICBmbGV4OiA4OwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtZmxleC05OiB7CiAgICAgICAgLW1zLWZsZXg6IDk7CiAgICAgICAgLXdlYmtpdC1mbGV4OiA5OwogICAgICAgIGZsZXg6IDk7CiAgICAgIH07CgogICAgICAtLWxheW91dC1mbGV4LTEwOiB7CiAgICAgICAgLW1zLWZsZXg6IDEwOwogICAgICAgIC13ZWJraXQtZmxleDogMTA7CiAgICAgICAgZmxleDogMTA7CiAgICAgIH07CgogICAgICAtLWxheW91dC1mbGV4LTExOiB7CiAgICAgICAgLW1zLWZsZXg6IDExOwogICAgICAgIC13ZWJraXQtZmxleDogMTE7CiAgICAgICAgZmxleDogMTE7CiAgICAgIH07CgogICAgICAtLWxheW91dC1mbGV4LTEyOiB7CiAgICAgICAgLW1zLWZsZXg6IDEyOwogICAgICAgIC13ZWJraXQtZmxleDogMTI7CiAgICAgICAgZmxleDogMTI7CiAgICAgIH07CgogICAgICAvKiBhbGlnbm1lbnQgaW4gY3Jvc3MgYXhpcyAqLwoKICAgICAgLS1sYXlvdXQtc3RhcnQ6IHsKICAgICAgICAtbXMtZmxleC1hbGlnbjogc3RhcnQ7CiAgICAgICAgLXdlYmtpdC1hbGlnbi1pdGVtczogZmxleC1zdGFydDsKICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWNlbnRlcjogewogICAgICAgIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7CiAgICAgICAgLXdlYmtpdC1hbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgIH07CgogICAgICAtLWxheW91dC1lbmQ6IHsKICAgICAgICAtbXMtZmxleC1hbGlnbjogZW5kOwogICAgICAgIC13ZWJraXQtYWxpZ24taXRlbXM6IGZsZXgtZW5kOwogICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWJhc2VsaW5lOiB7CiAgICAgICAgLW1zLWZsZXgtYWxpZ246IGJhc2VsaW5lOwogICAgICAgIC13ZWJraXQtYWxpZ24taXRlbXM6IGJhc2VsaW5lOwogICAgICAgIGFsaWduLWl0ZW1zOiBiYXNlbGluZTsKICAgICAgfTsKCiAgICAgIC8qIGFsaWdubWVudCBpbiBtYWluIGF4aXMgKi8KCiAgICAgIC0tbGF5b3V0LXN0YXJ0LWp1c3RpZmllZDogewogICAgICAgIC1tcy1mbGV4LXBhY2s6IHN0YXJ0OwogICAgICAgIC13ZWJraXQtanVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0OwogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWNlbnRlci1qdXN0aWZpZWQ6IHsKICAgICAgICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7CiAgICAgICAgLXdlYmtpdC1qdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWVuZC1qdXN0aWZpZWQ6IHsKICAgICAgICAtbXMtZmxleC1wYWNrOiBlbmQ7CiAgICAgICAgLXdlYmtpdC1qdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOwogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7CiAgICAgIH07CgogICAgICAtLWxheW91dC1hcm91bmQtanVzdGlmaWVkOiB7CiAgICAgICAgLW1zLWZsZXgtcGFjazogZGlzdHJpYnV0ZTsKICAgICAgICAtd2Via2l0LWp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kOwogICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtanVzdGlmaWVkOiB7CiAgICAgICAgLW1zLWZsZXgtcGFjazoganVzdGlmeTsKICAgICAgICAtd2Via2l0LWp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAgIH07CgogICAgICAtLWxheW91dC1jZW50ZXItY2VudGVyOiB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWNlbnRlcjsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtY2VudGVyLWp1c3RpZmllZDsKICAgICAgfTsKCiAgICAgIC8qIHNlbGYgYWxpZ25tZW50ICovCgogICAgICAtLWxheW91dC1zZWxmLXN0YXJ0OiB7CiAgICAgICAgLW1zLWFsaWduLXNlbGY6IGZsZXgtc3RhcnQ7CiAgICAgICAgLXdlYmtpdC1hbGlnbi1zZWxmOiBmbGV4LXN0YXJ0OwogICAgICAgIGFsaWduLXNlbGY6IGZsZXgtc3RhcnQ7CiAgICAgIH07CgogICAgICAtLWxheW91dC1zZWxmLWNlbnRlcjogewogICAgICAgIC1tcy1hbGlnbi1zZWxmOiBjZW50ZXI7CiAgICAgICAgLXdlYmtpdC1hbGlnbi1zZWxmOiBjZW50ZXI7CiAgICAgICAgYWxpZ24tc2VsZjogY2VudGVyOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtc2VsZi1lbmQ6IHsKICAgICAgICAtbXMtYWxpZ24tc2VsZjogZmxleC1lbmQ7CiAgICAgICAgLXdlYmtpdC1hbGlnbi1zZWxmOiBmbGV4LWVuZDsKICAgICAgICBhbGlnbi1zZWxmOiBmbGV4LWVuZDsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LXNlbGYtc3RyZXRjaDogewogICAgICAgIC1tcy1hbGlnbi1zZWxmOiBzdHJldGNoOwogICAgICAgIC13ZWJraXQtYWxpZ24tc2VsZjogc3RyZXRjaDsKICAgICAgICBhbGlnbi1zZWxmOiBzdHJldGNoOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtc2VsZi1iYXNlbGluZTogewogICAgICAgIC1tcy1hbGlnbi1zZWxmOiBiYXNlbGluZTsKICAgICAgICAtd2Via2l0LWFsaWduLXNlbGY6IGJhc2VsaW5lOwogICAgICAgIGFsaWduLXNlbGY6IGJhc2VsaW5lOwogICAgICB9OwoKICAgICAgLyogbXVsdGktbGluZSBhbGlnbm1lbnQgaW4gbWFpbiBheGlzICovCgogICAgICAtLWxheW91dC1zdGFydC1hbGlnbmVkOiB7CiAgICAgICAgLW1zLWZsZXgtbGluZS1wYWNrOiBzdGFydDsgIC8qIElFMTAgKi8KICAgICAgICAtbXMtYWxpZ24tY29udGVudDogZmxleC1zdGFydDsKICAgICAgICAtd2Via2l0LWFsaWduLWNvbnRlbnQ6IGZsZXgtc3RhcnQ7CiAgICAgICAgYWxpZ24tY29udGVudDogZmxleC1zdGFydDsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWVuZC1hbGlnbmVkOiB7CiAgICAgICAgLW1zLWZsZXgtbGluZS1wYWNrOiBlbmQ7ICAvKiBJRTEwICovCiAgICAgICAgLW1zLWFsaWduLWNvbnRlbnQ6IGZsZXgtZW5kOwogICAgICAgIC13ZWJraXQtYWxpZ24tY29udGVudDogZmxleC1lbmQ7CiAgICAgICAgYWxpZ24tY29udGVudDogZmxleC1lbmQ7CiAgICAgIH07CgogICAgICAtLWxheW91dC1jZW50ZXItYWxpZ25lZDogewogICAgICAgIC1tcy1mbGV4LWxpbmUtcGFjazogY2VudGVyOyAgLyogSUUxMCAqLwogICAgICAgIC1tcy1hbGlnbi1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgLXdlYmtpdC1hbGlnbi1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgYWxpZ24tY29udGVudDogY2VudGVyOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtYmV0d2Vlbi1hbGlnbmVkOiB7CiAgICAgICAgLW1zLWZsZXgtbGluZS1wYWNrOiBqdXN0aWZ5OyAgLyogSUUxMCAqLwogICAgICAgIC1tcy1hbGlnbi1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgIC13ZWJraXQtYWxpZ24tY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgICBhbGlnbi1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtYXJvdW5kLWFsaWduZWQ6IHsKICAgICAgICAtbXMtZmxleC1saW5lLXBhY2s6IGRpc3RyaWJ1dGU7ICAvKiBJRTEwICovCiAgICAgICAgLW1zLWFsaWduLWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDsKICAgICAgICAtd2Via2l0LWFsaWduLWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDsKICAgICAgICBhbGlnbi1jb250ZW50OiBzcGFjZS1hcm91bmQ7CiAgICAgIH07CgogICAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAgICAgICAgICAgICAgT3RoZXIgTGF5b3V0CiAgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgogICAgICAtLWxheW91dC1ibG9jazogewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtaW52aXNpYmxlOiB7CiAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuICFpbXBvcnRhbnQ7CiAgICAgIH07CgogICAgICAtLWxheW91dC1yZWxhdGl2ZTogewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWZpdDogewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDA7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgYm90dG9tOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgIH07CgogICAgICAtLWxheW91dC1zY3JvbGw6IHsKICAgICAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7CiAgICAgICAgb3ZlcmZsb3c6IGF1dG87CiAgICAgIH07CgogICAgICAtLWxheW91dC1mdWxsYmxlZWQ6IHsKICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgaGVpZ2h0OiAxMDB2aDsKICAgICAgfTsKCiAgICAgIC8qIGZpeGVkIHBvc2l0aW9uICovCgogICAgICAtLWxheW91dC1maXhlZC10b3A6IHsKICAgICAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICAgICAgdG9wOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgIH07CgogICAgICAtLWxheW91dC1maXhlZC1yaWdodDogewogICAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgICB0b3A6IDA7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgYm90dG9tOiAwOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtZml4ZWQtYm90dG9tOiB7CiAgICAgICAgcG9zaXRpb246IGZpeGVkOwogICAgICAgIHJpZ2h0OiAwOwogICAgICAgIGJvdHRvbTogMDsKICAgICAgICBsZWZ0OiAwOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtZml4ZWQtbGVmdDogewogICAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgICB0b3A6IDA7CiAgICAgICAgYm90dG9tOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgIH07CgogICAgfQogIDwvc3R5bGU+CjwvY3VzdG9tLXN0eWxlPmA7TG8uc2V0QXR0cmlidXRlKCJzdHlsZSIsImRpc3BsYXk6IG5vbmU7IiksZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChMby5jb250ZW50KTt2YXIgUG89ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTtQby50ZXh0Q29udGVudD0iW2hpZGRlbl0geyBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH0iLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoUG8pOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KY2xhc3MgTm97Y29uc3RydWN0b3IodCl7Tm9bIiAiXSh0KSx0aGlzLnR5cGU9dCYmdC50eXBlfHwiZGVmYXVsdCIsdGhpcy5rZXk9dCYmdC5rZXksdCYmInZhbHVlImluIHQmJih0aGlzLnZhbHVlPXQudmFsdWUpfWdldCB2YWx1ZSgpe3ZhciB0PXRoaXMudHlwZSxlPXRoaXMua2V5O2lmKHQmJmUpcmV0dXJuIE5vLnR5cGVzW3RdJiZOby50eXBlc1t0XVtlXX1zZXQgdmFsdWUodCl7dmFyIGU9dGhpcy50eXBlLG49dGhpcy5rZXk7ZSYmbiYmKGU9Tm8udHlwZXNbZV09Tm8udHlwZXNbZV18fHt9LG51bGw9PXQ/ZGVsZXRlIGVbbl06ZVtuXT10KX1nZXQgbGlzdCgpe2lmKHRoaXMudHlwZSl7dmFyIHQ9Tm8udHlwZXNbdGhpcy50eXBlXTtyZXR1cm4gdD9PYmplY3Qua2V5cyh0KS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBJb1t0aGlzLnR5cGVdW3RdfSksdGhpcyk6W119fWJ5S2V5KHQpe3JldHVybiB0aGlzLmtleT10LHRoaXMudmFsdWV9fU5vWyIgIl09ZnVuY3Rpb24oKXt9LE5vLnR5cGVzPXt9O3ZhciBJbz1Oby50eXBlcztqcih7aXM6Imlyb24tbWV0YSIscHJvcGVydGllczp7dHlwZTp7dHlwZTpTdHJpbmcsdmFsdWU6ImRlZmF1bHQifSxrZXk6e3R5cGU6U3RyaW5nfSx2YWx1ZTp7dHlwZTpTdHJpbmcsbm90aWZ5OiEwfSxzZWxmOnt0eXBlOkJvb2xlYW4sb2JzZXJ2ZXI6Il9zZWxmQ2hhbmdlZCJ9LF9fbWV0YTp7dHlwZTpCb29sZWFuLGNvbXB1dGVkOiJfX2NvbXB1dGVNZXRhKHR5cGUsIGtleSwgdmFsdWUpIn19LGhvc3RBdHRyaWJ1dGVzOntoaWRkZW46ITB9LF9fY29tcHV0ZU1ldGE6ZnVuY3Rpb24odCxlLG4pe3ZhciBpPW5ldyBObyh7dHlwZTp0LGtleTplfSk7cmV0dXJuIHZvaWQgMCE9PW4mJm4hPT1pLnZhbHVlP2kudmFsdWU9bjp0aGlzLnZhbHVlIT09aS52YWx1ZSYmKHRoaXMudmFsdWU9aS52YWx1ZSksaX0sZ2V0IGxpc3QoKXtyZXR1cm4gdGhpcy5fX21ldGEmJnRoaXMuX19tZXRhLmxpc3R9LF9zZWxmQ2hhbmdlZDpmdW5jdGlvbih0KXt0JiYodGhpcy52YWx1ZT10aGlzKX0sYnlLZXk6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBObyh7dHlwZTp0aGlzLnR5cGUsa2V5OnR9KS52YWx1ZX19KSwKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmpyKHtfdGVtcGxhdGU6eGVgCiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtaW5saW5lOwogICAgICAgIEBhcHBseSAtLWxheW91dC1jZW50ZXItY2VudGVyOwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKCiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKCiAgICAgICAgZmlsbDogdmFyKC0taXJvbi1pY29uLWZpbGwtY29sb3IsIGN1cnJlbnRjb2xvcik7CiAgICAgICAgc3Ryb2tlOiB2YXIoLS1pcm9uLWljb24tc3Ryb2tlLWNvbG9yLCBub25lKTsKCiAgICAgICAgd2lkdGg6IHZhcigtLWlyb24taWNvbi13aWR0aCwgMjRweCk7CiAgICAgICAgaGVpZ2h0OiB2YXIoLS1pcm9uLWljb24taGVpZ2h0LCAyNHB4KTsKICAgICAgICBAYXBwbHkgLS1pcm9uLWljb247CiAgICAgIH0KCiAgICAgIDpob3N0KFtoaWRkZW5dKSB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgfQogICAgPC9zdHlsZT4KYCxpczoiaXJvbi1pY29uIixwcm9wZXJ0aWVzOntpY29uOnt0eXBlOlN0cmluZ30sdGhlbWU6e3R5cGU6U3RyaW5nfSxzcmM6e3R5cGU6U3RyaW5nfSxfbWV0YTp7dmFsdWU6RW8uY3JlYXRlKCJpcm9uLW1ldGEiLHt0eXBlOiJpY29uc2V0In0pfX0sb2JzZXJ2ZXJzOlsiX3VwZGF0ZUljb24oX21ldGEsIGlzQXR0YWNoZWQpIiwiX3VwZGF0ZUljb24odGhlbWUsIGlzQXR0YWNoZWQpIiwiX3NyY0NoYW5nZWQoc3JjLCBpc0F0dGFjaGVkKSIsIl9pY29uQ2hhbmdlZChpY29uLCBpc0F0dGFjaGVkKSJdLF9ERUZBVUxUX0lDT05TRVQ6Imljb25zIixfaWNvbkNoYW5nZWQ6ZnVuY3Rpb24odCl7dmFyIGU9KHR8fCIiKS5zcGxpdCgiOiIpO3RoaXMuX2ljb25OYW1lPWUucG9wKCksdGhpcy5faWNvbnNldE5hbWU9ZS5wb3AoKXx8dGhpcy5fREVGQVVMVF9JQ09OU0VULHRoaXMuX3VwZGF0ZUljb24oKX0sX3NyY0NoYW5nZWQ6ZnVuY3Rpb24odCl7dGhpcy5fdXBkYXRlSWNvbigpfSxfdXNlc0ljb25zZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pY29ufHwhdGhpcy5zcmN9LF91cGRhdGVJY29uOmZ1bmN0aW9uKCl7dGhpcy5fdXNlc0ljb25zZXQoKT8odGhpcy5faW1nJiZ0aGlzLl9pbWcucGFyZW50Tm9kZSYmZXIodGhpcy5yb290KS5yZW1vdmVDaGlsZCh0aGlzLl9pbWcpLCIiPT09dGhpcy5faWNvbk5hbWU/dGhpcy5faWNvbnNldCYmdGhpcy5faWNvbnNldC5yZW1vdmVJY29uKHRoaXMpOnRoaXMuX2ljb25zZXROYW1lJiZ0aGlzLl9tZXRhJiYodGhpcy5faWNvbnNldD10aGlzLl9tZXRhLmJ5S2V5KHRoaXMuX2ljb25zZXROYW1lKSx0aGlzLl9pY29uc2V0Pyh0aGlzLl9pY29uc2V0LmFwcGx5SWNvbih0aGlzLHRoaXMuX2ljb25OYW1lLHRoaXMudGhlbWUpLHRoaXMudW5saXN0ZW4od2luZG93LCJpcm9uLWljb25zZXQtYWRkZWQiLCJfdXBkYXRlSWNvbiIpKTp0aGlzLmxpc3Rlbih3aW5kb3csImlyb24taWNvbnNldC1hZGRlZCIsIl91cGRhdGVJY29uIikpKToodGhpcy5faWNvbnNldCYmdGhpcy5faWNvbnNldC5yZW1vdmVJY29uKHRoaXMpLHRoaXMuX2ltZ3x8KHRoaXMuX2ltZz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKSx0aGlzLl9pbWcuc3R5bGUud2lkdGg9IjEwMCUiLHRoaXMuX2ltZy5zdHlsZS5oZWlnaHQ9IjEwMCUiLHRoaXMuX2ltZy5kcmFnZ2FibGU9ITEpLHRoaXMuX2ltZy5zcmM9dGhpcy5zcmMsZXIodGhpcy5yb290KS5hcHBlbmRDaGlsZCh0aGlzLl9pbWcpKX19KSwKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmpyKHtpczoiaXJvbi1pY29uc2V0LXN2ZyIscHJvcGVydGllczp7bmFtZTp7dHlwZTpTdHJpbmcsb2JzZXJ2ZXI6Il9uYW1lQ2hhbmdlZCJ9LHNpemU6e3R5cGU6TnVtYmVyLHZhbHVlOjI0fSxydGxNaXJyb3Jpbmc6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sdXNlR2xvYmFsUnRsQXR0cmlidXRlOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9fSxjcmVhdGVkOmZ1bmN0aW9uKCl7dGhpcy5fbWV0YT1uZXcgTm8oe3R5cGU6Imljb25zZXQiLGtleTpudWxsLHZhbHVlOm51bGx9KX0sYXR0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLnN0eWxlLmRpc3BsYXk9Im5vbmUifSxnZXRJY29uTmFtZXM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faWNvbnM9dGhpcy5fY3JlYXRlSWNvbk1hcCgpLE9iamVjdC5rZXlzKHRoaXMuX2ljb25zKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm5hbWUrIjoiK3R9KSx0aGlzKX0sYXBwbHlJY29uOmZ1bmN0aW9uKHQsZSl7dGhpcy5yZW1vdmVJY29uKHQpO3ZhciBuPXRoaXMuX2Nsb25lSWNvbihlLHRoaXMucnRsTWlycm9yaW5nJiZ0aGlzLl90YXJnZXRJc1JUTCh0KSk7aWYobil7dmFyIGk9ZXIodC5yb290fHx0KTtyZXR1cm4gaS5pbnNlcnRCZWZvcmUobixpLmNoaWxkTm9kZXNbMF0pLHQuX3N2Z0ljb249bn1yZXR1cm4gbnVsbH0scmVtb3ZlSWNvbjpmdW5jdGlvbih0KXt0Ll9zdmdJY29uJiYoZXIodC5yb290fHx0KS5yZW1vdmVDaGlsZCh0Ll9zdmdJY29uKSx0Ll9zdmdJY29uPW51bGwpfSxfdGFyZ2V0SXNSVEw6ZnVuY3Rpb24odCl7aWYobnVsbD09dGhpcy5fX3RhcmdldElzUlRMKWlmKHRoaXMudXNlR2xvYmFsUnRsQXR0cmlidXRlKXt2YXIgZT1kb2N1bWVudC5ib2R5JiZkb2N1bWVudC5ib2R5Lmhhc0F0dHJpYnV0ZSgiZGlyIik/ZG9jdW1lbnQuYm9keTpkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7dGhpcy5fX3RhcmdldElzUlRMPSJydGwiPT09ZS5nZXRBdHRyaWJ1dGUoImRpciIpfWVsc2UgdCYmdC5ub2RlVHlwZSE9PU5vZGUuRUxFTUVOVF9OT0RFJiYodD10Lmhvc3QpLHRoaXMuX190YXJnZXRJc1JUTD10JiYicnRsIj09PXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHQpLmRpcmVjdGlvbjtyZXR1cm4gdGhpcy5fX3RhcmdldElzUlRMfSxfbmFtZUNoYW5nZWQ6ZnVuY3Rpb24oKXt0aGlzLl9tZXRhLnZhbHVlPW51bGwsdGhpcy5fbWV0YS5rZXk9dGhpcy5uYW1lLHRoaXMuX21ldGEudmFsdWU9dGhpcyx0aGlzLmFzeW5jKChmdW5jdGlvbigpe3RoaXMuZmlyZSgiaXJvbi1pY29uc2V0LWFkZGVkIix0aGlzLHtub2RlOndpbmRvd30pfSkpfSxfY3JlYXRlSWNvbk1hcDpmdW5jdGlvbigpe3ZhciB0PU9iamVjdC5jcmVhdGUobnVsbCk7cmV0dXJuIGVyKHRoaXMpLnF1ZXJ5U2VsZWN0b3JBbGwoIltpZF0iKS5mb3JFYWNoKChmdW5jdGlvbihlKXt0W2UuaWRdPWV9KSksdH0sX2Nsb25lSWNvbjpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9pY29ucz10aGlzLl9pY29uc3x8dGhpcy5fY3JlYXRlSWNvbk1hcCgpLHRoaXMuX3ByZXBhcmVTdmdDbG9uZSh0aGlzLl9pY29uc1t0XSx0aGlzLnNpemUsZSl9LF9wcmVwYXJlU3ZnQ2xvbmU6ZnVuY3Rpb24odCxlLG4pe2lmKHQpe3ZhciBpPXQuY2xvbmVOb2RlKCEwKSxyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJzdmciKSxvPWkuZ2V0QXR0cmlidXRlKCJ2aWV3Qm94Iil8fCIwIDAgIitlKyIgIitlLGE9InBvaW50ZXItZXZlbnRzOiBub25lOyBkaXNwbGF5OiBibG9jazsgd2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTsiO3JldHVybiBuJiZpLmhhc0F0dHJpYnV0ZSgibWlycm9yLWluLXJ0bCIpJiYoYSs9Ii13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKC0xLDEpO3RyYW5zZm9ybTpzY2FsZSgtMSwxKTt0cmFuc2Zvcm0tb3JpZ2luOmNlbnRlcjsiKSxyLnNldEF0dHJpYnV0ZSgidmlld0JveCIsbyksci5zZXRBdHRyaWJ1dGUoInByZXNlcnZlQXNwZWN0UmF0aW8iLCJ4TWlkWU1pZCBtZWV0Iiksci5zZXRBdHRyaWJ1dGUoImZvY3VzYWJsZSIsImZhbHNlIiksci5zdHlsZS5jc3NUZXh0PWEsci5hcHBlbmRDaGlsZChpKS5yZW1vdmVBdHRyaWJ1dGUoImlkIikscn1yZXR1cm4gbnVsbH19KTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE0IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNvbnN0IFJvPXhlYDxpcm9uLWljb25zZXQtc3ZnIG5hbWU9ImltYWdlIiBzaXplPSIyNCI+Cjxzdmc+PGRlZnM+CjxnIGlkPSJhZGQtYS1waG90byI+PHBhdGggZD0iTTMgNFYxaDJ2M2gzdjJINXYzSDNWNkgwVjRoM3ptMyA2VjdoM1Y0aDdsMS44MyAySDIxYzEuMSAwIDIgLjkgMiAydjEyYzAgMS4xLS45IDItMiAySDVjLTEuMSAwLTItLjktMi0yVjEwaDN6bTcgOWMyLjc2IDAgNS0yLjI0IDUtNXMtMi4yNC01LTUtNS01IDIuMjQtNSA1IDIuMjQgNSA1IDV6bS0zLjItNWMwIDEuNzcgMS40MyAzLjIgMy4yIDMuMnMzLjItMS40MyAzLjItMy4yLTEuNDMtMy4yLTMuMi0zLjItMy4yIDEuNDMtMy4yIDMuMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJhZGQtdG8tcGhvdG9zIj48cGF0aCBkPSJNNCA2SDJ2MTRjMCAxLjEuOSAyIDIgMmgxNHYtMkg0VjZ6bTE2LTRIOGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0tMSA5aC00djRoLTJ2LTRIOVY5aDRWNWgydjRoNHYyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFkanVzdCI+PHBhdGggZD0iTTEyIDJDNi40OSAyIDIgNi40OSAyIDEyczQuNDkgMTAgMTAgMTAgMTAtNC40OSAxMC0xMFMxNy41MSAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4em0zLThjMCAxLjY2LTEuMzQgMy0zIDNzLTMtMS4zNC0zLTMgMS4zNC0zIDMtMyAzIDEuMzQgMyAzeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFzc2lzdGFudCI+PHBhdGggZD0iTTE5IDJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmg0bDMgMyAzLTNoNGMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0tNS4xMiAxMC44OEwxMiAxN2wtMS44OC00LjEyTDYgMTFsNC4xMi0xLjg4TDEyIDVsMS44OCA0LjEyTDE4IDExbC00LjEyIDEuODh6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iYXNzaXN0YW50LXBob3RvIj48cGF0aCBkPSJNMTQuNCA2TDE0IDRINXYxN2gydi03aDUuNmwuNCAyaDdWNnoiPjwvcGF0aD48L2c+CjxnIGlkPSJhdWRpb3RyYWNrIj48cGF0aCBkPSJNMTIgM3Y5LjI4Yy0uNDctLjE3LS45Ny0uMjgtMS41LS4yOEM4LjAxIDEyIDYgMTQuMDEgNiAxNi41UzguMDEgMjEgMTAuNSAyMWMyLjMxIDAgNC4yLTEuNzUgNC40NS00SDE1VjZoNFYzaC03eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImJsdXItY2lyY3VsYXIiPjxwYXRoIGQ9Ik0xMCA5Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTAgNGMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xek03IDkuNWMtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6bTMgN2MtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6bS0zLTNjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41em0zLTZjLjI4IDAgLjUtLjIyLjUtLjVzLS4yMi0uNS0uNS0uNS0uNS4yMi0uNS41LjIyLjUuNS41ek0xNCA5Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTAtMS41Yy4yOCAwIC41LS4yMi41LS41cy0uMjItLjUtLjUtLjUtLjUuMjItLjUuNS4yMi41LjUuNXptMyA2Yy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXptMC00Yy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXpNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6bTItMy41Yy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXptMC0zLjVjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXoiPjwvcGF0aD48L2c+CjxnIGlkPSJibHVyLWxpbmVhciI+PHBhdGggZD0iTTUgMTcuNWMuODMgMCAxLjUtLjY3IDEuNS0xLjVzLS42Ny0xLjUtMS41LTEuNS0xLjUuNjctMS41IDEuNS42NyAxLjUgMS41IDEuNXpNOSAxM2MuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMS0xIC40NS0xIDEgLjQ1IDEgMSAxem0wLTRjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTEtMSAuNDUtMSAxIC40NSAxIDEgMXpNMyAyMWgxOHYtMkgzdjJ6TTUgOS41Yy44MyAwIDEuNS0uNjcgMS41LTEuNVM1LjgzIDYuNSA1IDYuNSAzLjUgNy4xNyAzLjUgOCA0LjE3IDkuNSA1IDkuNXptMCA0Yy44MyAwIDEuNS0uNjcgMS41LTEuNXMtLjY3LTEuNS0xLjUtMS41LTEuNS42Ny0xLjUgMS41LjY3IDEuNSAxLjUgMS41ek05IDE3Yy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xLTEgLjQ1LTEgMSAuNDUgMSAxIDF6bTgtLjVjLjI4IDAgLjUtLjIyLjUtLjVzLS4yMi0uNS0uNS0uNS0uNS4yMi0uNS41LjIyLjUuNS41ek0zIDN2MmgxOFYzSDN6bTE0IDUuNWMuMjggMCAuNS0uMjIuNS0uNXMtLjIyLS41LS41LS41LS41LjIyLS41LjUuMjIuNS41LjV6bTAgNGMuMjggMCAuNS0uMjIuNS0uNXMtLjIyLS41LS41LS41LS41LjIyLS41LjUuMjIuNS41LjV6TTEzIDljLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTEtMSAuNDUtMSAxIC40NSAxIDEgMXptMCA0Yy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xLTEgLjQ1LTEgMSAuNDUgMSAxIDF6bTAgNGMuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMS0xIC40NS0xIDEgLjQ1IDEgMSAxeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImJsdXItb2ZmIj48cGF0aCBkPSJNMTQgN2MuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMS0xIC40NS0xIDEgLjQ1IDEgMSAxem0tLjIgNC40OGwuMi4wMmMuODMgMCAxLjUtLjY3IDEuNS0xLjVzLS42Ny0xLjUtMS41LTEuNS0xLjUuNjctMS41IDEuNWwuMDIuMmMuMDkuNjcuNjEgMS4xOSAxLjI4IDEuMjh6TTE0IDMuNWMuMjggMCAuNS0uMjIuNS0uNXMtLjIyLS41LS41LS41LS41LjIyLS41LjUuMjIuNS41LjV6bS00IDBjLjI4IDAgLjUtLjIyLjUtLjVzLS4yMi0uNS0uNS0uNS0uNS4yMi0uNS41LjIyLjUuNS41em0xMSA3Yy4yOCAwIC41LS4yMi41LS41cy0uMjItLjUtLjUtLjUtLjUuMjItLjUuNS4yMi41LjUuNXpNMTAgN2MuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMS0xIC40NS0xIDEgLjQ1IDEgMSAxem04IDhjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTEtMSAuNDUtMSAxIC40NSAxIDEgMXptMC00Yy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xLTEgLjQ1LTEgMSAuNDUgMSAxIDF6bTAtNGMuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMS0xIC40NS0xIDEgLjQ1IDEgMSAxem0tNCAxMy41Yy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXpNMi41IDUuMjdsMy43OCAzLjc4TDYgOWMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTFjMC0uMS0uMDMtLjE5LS4wNi0uMjhsMi44MSAyLjgxYy0uNzEuMTEtMS4yNS43My0xLjI1IDEuNDcgMCAuODMuNjcgMS41IDEuNSAxLjUuNzQgMCAxLjM2LS41NCAxLjQ3LTEuMjVsMi44MSAyLjgxYy0uMDktLjAzLS4xOC0uMDYtLjI4LS4wNi0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMWMwLS4xLS4wMy0uMTktLjA2LS4yOGwzLjc4IDMuNzhMMjAgMjAuMjMgMy43NyA0IDIuNSA1LjI3ek0xMCAxN2MtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0xMS0zLjVjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41ek02IDEzYy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6TTMgOS41Yy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXptNyAxMWMtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6TTYgMTdjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptLTMtMy41Yy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXoiPjwvcGF0aD48L2c+CjxnIGlkPSJibHVyLW9uIj48cGF0aCBkPSJNNiAxM2MtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0wIDRjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptMC04Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bS0zIC41Yy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXpNNiA1Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTE1IDUuNWMuMjggMCAuNS0uMjIuNS0uNXMtLjIyLS41LS41LS41LS41LjIyLS41LjUuMjIuNS41LjV6TTE0IDdjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTEtMSAuNDUtMSAxIC40NSAxIDEgMXptMC0zLjVjLjI4IDAgLjUtLjIyLjUtLjVzLS4yMi0uNS0uNS0uNS0uNS4yMi0uNS41LjIyLjUuNS41em0tMTEgMTBjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41em03IDdjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41em0wLTE3Yy4yOCAwIC41LS4yMi41LS41cy0uMjItLjUtLjUtLjUtLjUuMjItLjUuNS4yMi41LjUuNXpNMTAgN2MuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMS0xIC40NS0xIDEgLjQ1IDEgMSAxem0wIDUuNWMtLjgzIDAtMS41LjY3LTEuNSAxLjVzLjY3IDEuNSAxLjUgMS41IDEuNS0uNjcgMS41LTEuNS0uNjctMS41LTEuNS0xLjV6bTggLjVjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptMCA0Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTAtOGMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0wLTRjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptMyA4LjVjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41ek0xNCAxN2MtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0wIDMuNWMtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6bS00LTEyYy0uODMgMC0xLjUuNjctMS41IDEuNXMuNjcgMS41IDEuNSAxLjUgMS41LS42NyAxLjUtMS41LS42Ny0xLjUtMS41LTEuNXptMCA4LjVjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptNC00LjVjLS44MyAwLTEuNS42Ny0xLjUgMS41cy42NyAxLjUgMS41IDEuNSAxLjUtLjY3IDEuNS0xLjUtLjY3LTEuNS0xLjUtMS41em0wLTRjLS44MyAwLTEuNS42Ny0xLjUgMS41cy42NyAxLjUgMS41IDEuNSAxLjUtLjY3IDEuNS0xLjUtLjY3LTEuNS0xLjUtMS41eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImJyaWdodG5lc3MtMSI+PGNpcmNsZSBjeD0iMTIiIGN5PSIxMiIgcj0iMTAiPjwvY2lyY2xlPjwvZz4KPGcgaWQ9ImJyaWdodG5lc3MtMiI+PHBhdGggZD0iTTEwIDJjLTEuODIgMC0zLjUzLjUtNSAxLjM1QzcuOTkgNS4wOCAxMCA4LjMgMTAgMTJzLTIuMDEgNi45Mi01IDguNjVDNi40NyAyMS41IDguMTggMjIgMTAgMjJjNS41MiAwIDEwLTQuNDggMTAtMTBTMTUuNTIgMiAxMCAyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImJyaWdodG5lc3MtMyI+PHBhdGggZD0iTTkgMmMtMS4wNSAwLTIuMDUuMTYtMyAuNDYgNC4wNiAxLjI3IDcgNS4wNiA3IDkuNTQgMCA0LjQ4LTIuOTQgOC4yNy03IDkuNTQuOTUuMyAxLjk1LjQ2IDMgLjQ2IDUuNTIgMCAxMC00LjQ4IDEwLTEwUzE0LjUyIDIgOSAyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImJyaWdodG5lc3MtNCI+PHBhdGggZD0iTTIwIDguNjlWNGgtNC42OUwxMiAuNjkgOC42OSA0SDR2NC42OUwuNjkgMTIgNCAxNS4zMVYyMGg0LjY5TDEyIDIzLjMxIDE1LjMxIDIwSDIwdi00LjY5TDIzLjMxIDEyIDIwIDguNjl6TTEyIDE4Yy0uODkgMC0xLjc0LS4yLTIuNS0uNTVDMTEuNTYgMTYuNSAxMyAxNC40MiAxMyAxMnMtMS40NC00LjUtMy41LTUuNDVDMTAuMjYgNi4yIDExLjExIDYgMTIgNmMzLjMxIDAgNiAyLjY5IDYgNnMtMi42OSA2LTYgNnoiPjwvcGF0aD48L2c+CjxnIGlkPSJicmlnaHRuZXNzLTUiPjxwYXRoIGQ9Ik0yMCAxNS4zMUwyMy4zMSAxMiAyMCA4LjY5VjRoLTQuNjlMMTIgLjY5IDguNjkgNEg0djQuNjlMLjY5IDEyIDQgMTUuMzFWMjBoNC42OUwxMiAyMy4zMSAxNS4zMSAyMEgyMHYtNC42OXpNMTIgMThjLTMuMzEgMC02LTIuNjktNi02czIuNjktNiA2LTYgNiAyLjY5IDYgNi0yLjY5IDYtNiA2eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImJyaWdodG5lc3MtNiI+PHBhdGggZD0iTTIwIDE1LjMxTDIzLjMxIDEyIDIwIDguNjlWNGgtNC42OUwxMiAuNjkgOC42OSA0SDR2NC42OUwuNjkgMTIgNCAxNS4zMVYyMGg0LjY5TDEyIDIzLjMxIDE1LjMxIDIwSDIwdi00LjY5ek0xMiAxOFY2YzMuMzEgMCA2IDIuNjkgNiA2cy0yLjY5IDYtNiA2eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImJyaWdodG5lc3MtNyI+PHBhdGggZD0iTTIwIDguNjlWNGgtNC42OUwxMiAuNjkgOC42OSA0SDR2NC42OUwuNjkgMTIgNCAxNS4zMVYyMGg0LjY5TDEyIDIzLjMxIDE1LjMxIDIwSDIwdi00LjY5TDIzLjMxIDEyIDIwIDguNjl6TTEyIDE4Yy0zLjMxIDAtNi0yLjY5LTYtNnMyLjY5LTYgNi02IDYgMi42OSA2IDYtMi42OSA2LTYgNnptMC0xMGMtMi4yMSAwLTQgMS43OS00IDRzMS43OSA0IDQgNCA0LTEuNzkgNC00LTEuNzktNC00LTR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iYnJva2VuLWltYWdlIj48cGF0aCBkPSJNMjEgNXY2LjU5bC0zLTMuMDEtNCA0LjAxLTQtNC00IDQtMy0zLjAxVjVjMC0xLjEuOS0yIDItMmgxNGMxLjEgMCAyIC45IDIgMnptLTMgNi40MmwzIDMuMDFWMTljMCAxLjEtLjkgMi0yIDJINWMtMS4xIDAtMi0uOS0yLTJ2LTYuNThsMyAyLjk5IDQtNCA0IDQgNC0zLjk5eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImJydXNoIj48cGF0aCBkPSJNNyAxNGMtMS42NiAwLTMgMS4zNC0zIDMgMCAxLjMxLTEuMTYgMi0yIDIgLjkyIDEuMjIgMi40OSAyIDQgMiAyLjIxIDAgNC0xLjc5IDQtNCAwLTEuNjYtMS4zNC0zLTMtM3ptMTMuNzEtOS4zN2wtMS4zNC0xLjM0Yy0uMzktLjM5LTEuMDItLjM5LTEuNDEgMEw5IDEyLjI1IDExLjc1IDE1bDguOTYtOC45NmMuMzktLjM5LjM5LTEuMDIgMC0xLjQxeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImJ1cnN0LW1vZGUiPjxwYXRoIGQ9Ik0xIDVoMnYxNEgxem00IDBoMnYxNEg1em0xNyAwSDEwYy0uNTUgMC0xIC40NS0xIDF2MTJjMCAuNTUuNDUgMSAxIDFoMTJjLjU1IDAgMS0uNDUgMS0xVjZjMC0uNTUtLjQ1LTEtMS0xek0xMSAxN2wyLjUtMy4xNUwxNS4yOSAxNmwyLjUtMy4yMkwyMSAxN0gxMXoiPjwvcGF0aD48L2c+CjxnIGlkPSJjYW1lcmEiPjxwYXRoIGQ9Ik05LjQgMTAuNWw0Ljc3LTguMjZDMTMuNDcgMi4wOSAxMi43NSAyIDEyIDJjLTIuNCAwLTQuNi44NS02LjMyIDIuMjVsMy42NiA2LjM1LjA2LS4xek0yMS41NCA5Yy0uOTItMi45Mi0zLjE1LTUuMjYtNi02LjM0TDExLjg4IDloOS42NnptLjI2IDFoLTcuNDlsLjI5LjUgNC43NiA4LjI1QzIxIDE2Ljk3IDIyIDE0LjYxIDIyIDEyYzAtLjY5LS4wNy0xLjM1LS4yLTJ6TTguNTQgMTJsLTMuOS02Ljc1QzMuMDEgNy4wMyAyIDkuMzkgMiAxMmMwIC42OS4wNyAxLjM1LjIgMmg3LjQ5bC0xLjE1LTJ6bS02LjA4IDNjLjkyIDIuOTIgMy4xNSA1LjI2IDYgNi4zNEwxMi4xMiAxNUgyLjQ2em0xMS4yNyAwbC0zLjkgNi43NmMuNy4xNSAxLjQyLjI0IDIuMTcuMjQgMi40IDAgNC42LS44NSA2LjMyLTIuMjVsLTMuNjYtNi4zNS0uOTMgMS42eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNhbWVyYS1hbHQiPjxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjMuMiI+PC9jaXJjbGU+PHBhdGggZD0iTTkgMkw3LjE3IDRINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yaC0zLjE3TDE1IDJIOXptMyAxNWMtMi43NiAwLTUtMi4yNC01LTVzMi4yNC01IDUtNSA1IDIuMjQgNSA1LTIuMjQgNS01IDV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY2FtZXJhLWZyb250Ij48cGF0aCBkPSJNMTAgMjBINXYyaDV2MmwzLTMtMy0zdjJ6bTQgMHYyaDV2LTJoLTV6TTEyIDhjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTEuOTkuOS0xLjk5IDJTMTAuOSA4IDEyIDh6bTUtOEg3QzUuOSAwIDUgLjkgNSAydjE0YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWMmMwLTEuMS0uOS0yLTItMnpNNyAyaDEwdjEwLjVjMC0xLjY3LTMuMzMtMi41LTUtMi41cy01IC44My01IDIuNVYyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNhbWVyYS1yZWFyIj48cGF0aCBkPSJNMTAgMjBINXYyaDV2MmwzLTMtMy0zdjJ6bTQgMHYyaDV2LTJoLTV6bTMtMjBIN0M1LjkgMCA1IC45IDUgMnYxNGMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjJjMC0xLjEtLjktMi0yLTJ6bS01IDZjLTEuMTEgMC0yLS45LTItMnMuODktMiAxLjk5LTIgMiAuOSAyIDJDMTQgNS4xIDEzLjEgNiAxMiA2eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNhbWVyYS1yb2xsIj48cGF0aCBkPSJNMTQgNWMwLTEuMS0uOS0yLTItMmgtMVYyYzAtLjU1LS40NS0xLTEtMUg2Yy0uNTUgMC0xIC40NS0xIDF2MUg0Yy0xLjEgMC0yIC45LTIgMnYxNWMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJoOFY1aC04em0tMiAxM2gtMnYtMmgydjJ6bTAtOWgtMlY3aDJ2MnptNCA5aC0ydi0yaDJ2MnptMC05aC0yVjdoMnYyem00IDloLTJ2LTJoMnYyem0wLTloLTJWN2gydjJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY2VudGVyLWZvY3VzLXN0cm9uZyI+PHBhdGggZD0iTTEyIDhjLTIuMjEgMC00IDEuNzktNCA0czEuNzkgNCA0IDQgNC0xLjc5IDQtNC0xLjc5LTQtNC00em0tNyA3SDN2NGMwIDEuMS45IDIgMiAyaDR2LTJINXYtNHpNNSA1aDRWM0g1Yy0xLjEgMC0yIC45LTIgMnY0aDJWNXptMTQtMmgtNHYyaDR2NGgyVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZoLTR2Mmg0YzEuMSAwIDItLjkgMi0ydi00aC0ydjR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY2VudGVyLWZvY3VzLXdlYWsiPjxwYXRoIGQ9Ik01IDE1SDN2NGMwIDEuMS45IDIgMiAyaDR2LTJINXYtNHpNNSA1aDRWM0g1Yy0xLjEgMC0yIC45LTIgMnY0aDJWNXptMTQtMmgtNHYyaDR2NGgyVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZoLTR2Mmg0YzEuMSAwIDItLjkgMi0ydi00aC0ydjR6TTEyIDhjLTIuMjEgMC00IDEuNzktNCA0czEuNzkgNCA0IDQgNC0xLjc5IDQtNC0xLjc5LTQtNC00em0wIDZjLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNvbGxlY3Rpb25zIj48cGF0aCBkPSJNMjIgMTZWNGMwLTEuMS0uOS0yLTItMkg4Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yem0tMTEtNGwyLjAzIDIuNzFMMTYgMTFsNCA1SDhsMy00ek0yIDZ2MTRjMCAxLjEuOSAyIDIgMmgxNHYtMkg0VjZIMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJjb2xsZWN0aW9ucy1ib29rbWFyayI+PHBhdGggZD0iTTQgNkgydjE0YzAgMS4xLjkgMiAyIDJoMTR2LTJINFY2em0xNi00SDhjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptMCAxMGwtMi41LTEuNUwxNSAxMlY0aDV2OHoiPjwvcGF0aD48L2c+CjxnIGlkPSJjb2xvci1sZW5zIj48cGF0aCBkPSJNMTIgM2MtNC45NyAwLTkgNC4wMy05IDlzNC4wMyA5IDkgOWMuODMgMCAxLjUtLjY3IDEuNS0xLjUgMC0uMzktLjE1LS43NC0uMzktMS4wMS0uMjMtLjI2LS4zOC0uNjEtLjM4LS45OSAwLS44My42Ny0xLjUgMS41LTEuNUgxNmMyLjc2IDAgNS0yLjI0IDUtNSAwLTQuNDItNC4wMy04LTktOHptLTUuNSA5Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTNS42NyA5IDYuNSA5IDggOS42NyA4IDEwLjUgNy4zMyAxMiA2LjUgMTJ6bTMtNEM4LjY3IDggOCA3LjMzIDggNi41UzguNjcgNSA5LjUgNXMxLjUuNjcgMS41IDEuNVMxMC4zMyA4IDkuNSA4em01IDBjLS44MyAwLTEuNS0uNjctMS41LTEuNVMxMy42NyA1IDE0LjUgNXMxLjUuNjcgMS41IDEuNVMxNS4zMyA4IDE0LjUgOHptMyA0Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTMTYuNjcgOSAxNy41IDlzMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNvbG9yaXplIj48cGF0aCBkPSJNMjAuNzEgNS42M2wtMi4zNC0yLjM0Yy0uMzktLjM5LTEuMDItLjM5LTEuNDEgMGwtMy4xMiAzLjEyLTEuOTMtMS45MS0xLjQxIDEuNDEgMS40MiAxLjQyTDMgMTYuMjVWMjFoNC43NWw4LjkyLTguOTIgMS40MiAxLjQyIDEuNDEtMS40MS0xLjkyLTEuOTIgMy4xMi0zLjEyYy40LS40LjQtMS4wMy4wMS0xLjQyek02LjkyIDE5TDUgMTcuMDhsOC4wNi04LjA2IDEuOTIgMS45Mkw2LjkyIDE5eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNvbXBhcmUiPjxwYXRoIGQ9Ik0xMCAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoNXYyaDJWMWgtMnYyem0wIDE1SDVsNS02djZ6bTktMTVoLTV2Mmg1djEzbC01LTZ2OWg1YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY29udHJvbC1wb2ludCI+PHBhdGggZD0iTTEzIDdoLTJ2NEg3djJoNHY0aDJ2LTRoNHYtMmgtNFY3em0tMS01QzYuNDkgMiAyIDYuNDkgMiAxMnM0LjQ5IDEwIDEwIDEwIDEwLTQuNDkgMTAtMTBTMTcuNTEgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHoiPjwvcGF0aD48L2c+CjxnIGlkPSJjb250cm9sLXBvaW50LWR1cGxpY2F0ZSI+PHBhdGggZD0iTTE2IDhoLTJ2M2gtM3YyaDN2M2gydi0zaDN2LTJoLTN6TTIgMTJjMC0yLjc5IDEuNjQtNS4yIDQuMDEtNi4zMlYzLjUyQzIuNTIgNC43NiAwIDguMDkgMCAxMnMyLjUyIDcuMjQgNi4wMSA4LjQ4di0yLjE2QzMuNjQgMTcuMiAyIDE0Ljc5IDIgMTJ6bTEzLTljLTQuOTYgMC05IDQuMDQtOSA5czQuMDQgOSA5IDkgOS00LjA0IDktOS00LjA0LTktOS05em0wIDE2Yy0zLjg2IDAtNy0zLjE0LTctN3MzLjE0LTcgNy03IDcgMy4xNCA3IDctMy4xNCA3LTcgN3oiPjwvcGF0aD48L2c+CjxnIGlkPSJjcm9wIj48cGF0aCBkPSJNMTcgMTVoMlY3YzAtMS4xLS45LTItMi0ySDl2Mmg4djh6TTcgMTdWMUg1djRIMXYyaDR2MTBjMCAxLjEuOSAyIDIgMmgxMHY0aDJ2LTRoNHYtMkg3eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNyb3AtMTYtOSI+PHBhdGggZD0iTTE5IDZINWMtMS4xIDAtMiAuOS0yIDJ2OGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJ6bTAgMTBINVY4aDE0djh6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY3JvcC0zLTIiPjxwYXRoIGQ9Ik0xOSA0SDVjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptMCAxNEg1VjZoMTR2MTJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY3JvcC01LTQiPjxwYXRoIGQ9Ik0xOSA1SDVjLTEuMSAwLTIgLjktMiAydjEwYzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWN2MwLTEuMS0uOS0yLTItMnptMCAxMkg1VjdoMTR2MTB6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY3JvcC03LTUiPjxwYXRoIGQ9Ik0xOSA3SDVjLTEuMSAwLTIgLjktMiAydjZjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY5YzAtMS4xLS45LTItMi0yem0wIDhINVY5aDE0djZ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY3JvcC1kaW4iPjxwYXRoIGQ9Ik0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY3JvcC1mcmVlIj48cGF0aCBkPSJNMyA1djRoMlY1aDRWM0g1Yy0xLjEgMC0yIC45LTIgMnptMiAxMEgzdjRjMCAxLjEuOSAyIDIgMmg0di0ySDV2LTR6bTE0IDRoLTR2Mmg0YzEuMSAwIDItLjkgMi0ydi00aC0ydjR6bTAtMTZoLTR2Mmg0djRoMlY1YzAtMS4xLS45LTItMi0yeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNyb3AtbGFuZHNjYXBlIj48cGF0aCBkPSJNMTkgNUg1Yy0xLjEgMC0yIC45LTIgMnYxMGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjdjMC0xLjEtLjktMi0yLTJ6bTAgMTJINVY3aDE0djEweiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNyb3Atb3JpZ2luYWwiPjxwYXRoIGQ9Ik0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6bS01LjA0LTYuNzFsLTIuNzUgMy41NC0xLjk2LTIuMzZMNi41IDE3aDExbC0zLjU0LTQuNzF6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY3JvcC1wb3J0cmFpdCI+PHBhdGggZD0iTTE3IDNIN2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDdWNWgxMHYxNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJjcm9wLXJvdGF0ZSI+PHBhdGggZD0iTTcuNDcgMjEuNDlDNC4yIDE5LjkzIDEuODYgMTYuNzYgMS41IDEzSDBjLjUxIDYuMTYgNS42NiAxMSAxMS45NSAxMSAuMjMgMCAuNDQtLjAyLjY2LS4wM0w4LjggMjAuMTVsLTEuMzMgMS4zNHpNMTIuMDUgMGMtLjIzIDAtLjQ0LjAyLS42Ni4wNGwzLjgxIDMuODEgMS4zMy0xLjMzQzE5LjggNC4wNyAyMi4xNCA3LjI0IDIyLjUgMTFIMjRjLS41MS02LjE2LTUuNjYtMTEtMTEuOTUtMTF6TTE2IDE0aDJWOGMwLTEuMTEtLjktMi0yLTJoLTZ2Mmg2djZ6bS04IDJWNEg2djJINHYyaDJ2OGMwIDEuMS44OSAyIDIgMmg4djJoMnYtMmgydi0ySDh6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY3JvcC1zcXVhcmUiPjxwYXRoIGQ9Ik0xOCA0SDZjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptMCAxNEg2VjZoMTJ2MTJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZGVoYXplIj48cGF0aCBkPSJNMiAxNS41djJoMjB2LTJIMnptMC01djJoMjB2LTJIMnptMC01djJoMjB2LTJIMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJkZXRhaWxzIj48cGF0aCBkPSJNMyA0bDkgMTYgOS0xNkgzem0zLjM4IDJoMTEuMjVMMTIgMTYgNi4zOCA2eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImVkaXQiPjxwYXRoIGQ9Ik0zIDE3LjI1VjIxaDMuNzVMMTcuODEgOS45NGwtMy43NS0zLjc1TDMgMTcuMjV6TTIwLjcxIDcuMDRjLjM5LS4zOS4zOS0xLjAyIDAtMS40MWwtMi4zNC0yLjM0Yy0uMzktLjM5LTEuMDItLjM5LTEuNDEgMGwtMS44MyAxLjgzIDMuNzUgMy43NSAxLjgzLTEuODN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZXhwb3N1cmUiPjxwYXRoIGQ9Ik0xNSAxN3YyaDJ2LTJoMnYtMmgtMnYtMmgtMnYyaC0ydjJoMnptNS0xNUg0Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6TTUgNWg2djJINVY1em0xNSAxNUg0TDIwIDR2MTZ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZXhwb3N1cmUtbmVnLTEiPjxwYXRoIGQ9Ik00IDExdjJoOHYtMkg0em0xNSA3aC0yVjcuMzhMMTQgOC40VjYuN0wxOC43IDVoLjN2MTN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZXhwb3N1cmUtbmVnLTIiPjxwYXRoIGQ9Ik0xNS4wNSAxNi4yOWwyLjg2LTMuMDdjLjM4LS4zOS43Mi0uNzkgMS4wNC0xLjE4LjMyLS4zOS41OS0uNzguODItMS4xNy4yMy0uMzkuNDEtLjc4LjU0LTEuMTdzLjE5LS43OS4xOS0xLjE4YzAtLjUzLS4wOS0xLjAyLS4yNy0xLjQ2LS4xOC0uNDQtLjQ0LS44MS0uNzgtMS4xMS0uMzQtLjMxLS43Ny0uNTQtMS4yNi0uNzEtLjUxLS4xNi0xLjA4LS4yNC0xLjcyLS4yNC0uNjkgMC0xLjMxLjExLTEuODUuMzItLjU0LjIxLTEgLjUxLTEuMzYuODgtLjM3LjM3LS42NS44LS44NCAxLjMtLjE4LjQ3LS4yNy45Ny0uMjggMS41aDIuMTRjLjAxLS4zMS4wNS0uNi4xMy0uODcuMDktLjI5LjIzLS41NC40LS43NS4xOC0uMjEuNDEtLjM3LjY4LS40OS4yNy0uMTIuNi0uMTguOTYtLjE4LjMxIDAgLjU4LjA1LjgxLjE1LjIzLjEuNDMuMjUuNTkuNDMuMTYuMTguMjguNC4zNy42NS4wOC4yNS4xMy41Mi4xMy44MSAwIC4yMi0uMDMuNDMtLjA4LjY1LS4wNi4yMi0uMTUuNDUtLjI5LjctLjE0LjI1LS4zMi41My0uNTYuODMtLjIzLjMtLjUyLjY1LS44OCAxLjAzbC00LjE3IDQuNTVWMThIMjF2LTEuNzFoLTUuOTV6TTIgMTF2Mmg4di0ySDJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZXhwb3N1cmUtcGx1cy0xIj48cGF0aCBkPSJNMTAgN0g4djRINHYyaDR2NGgydi00aDR2LTJoLTRWN3ptMTAgMTFoLTJWNy4zOEwxNSA4LjRWNi43TDE5LjcgNWguM3YxM3oiPjwvcGF0aD48L2c+CjxnIGlkPSJleHBvc3VyZS1wbHVzLTIiPjxwYXRoIGQ9Ik0xNi4wNSAxNi4yOWwyLjg2LTMuMDdjLjM4LS4zOS43Mi0uNzkgMS4wNC0xLjE4LjMyLS4zOS41OS0uNzguODItMS4xNy4yMy0uMzkuNDEtLjc4LjU0LTEuMTcuMTMtLjM5LjE5LS43OS4xOS0xLjE4IDAtLjUzLS4wOS0xLjAyLS4yNy0xLjQ2LS4xOC0uNDQtLjQ0LS44MS0uNzgtMS4xMS0uMzQtLjMxLS43Ny0uNTQtMS4yNi0uNzEtLjUxLS4xNi0xLjA4LS4yNC0xLjcyLS4yNC0uNjkgMC0xLjMxLjExLTEuODUuMzItLjU0LjIxLTEgLjUxLTEuMzYuODgtLjM3LjM3LS42NS44LS44NCAxLjMtLjE4LjQ3LS4yNy45Ny0uMjggMS41aDIuMTRjLjAxLS4zMS4wNS0uNi4xMy0uODcuMDktLjI5LjIzLS41NC40LS43NS4xOC0uMjEuNDEtLjM3LjY4LS40OS4yNy0uMTIuNi0uMTguOTYtLjE4LjMxIDAgLjU4LjA1LjgxLjE1LjIzLjEuNDMuMjUuNTkuNDMuMTYuMTguMjguNC4zNy42NS4wOC4yNS4xMy41Mi4xMy44MSAwIC4yMi0uMDMuNDMtLjA4LjY1LS4wNi4yMi0uMTUuNDUtLjI5LjctLjE0LjI1LS4zMi41My0uNTYuODMtLjIzLjMtLjUyLjY1LS44OCAxLjAzbC00LjE3IDQuNTVWMThIMjJ2LTEuNzFoLTUuOTV6TTggN0g2djRIMnYyaDR2NGgydi00aDR2LTJIOFY3eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImV4cG9zdXJlLXplcm8iPjxwYXRoIGQ9Ik0xNi4xNCAxMi41YzAgMS0uMSAxLjg1LS4zIDIuNTUtLjIuNy0uNDggMS4yNy0uODMgMS43LS4zNi40NC0uNzkuNzUtMS4zLjk1LS41MS4yLTEuMDcuMy0xLjcuMy0uNjIgMC0xLjE4LS4xLTEuNjktLjMtLjUxLS4yLS45NS0uNTEtMS4zMS0uOTUtLjM2LS40NC0uNjUtMS4wMS0uODUtMS43LS4yLS43LS4zLTEuNTUtLjMtMi41NXYtMi4wNGMwLTEgLjEtMS44NS4zLTIuNTUuMi0uNy40OC0xLjI2Ljg0LTEuNjkuMzYtLjQzLjgtLjc0IDEuMzEtLjkzQzEwLjgxIDUuMSAxMS4zOCA1IDEyIDVjLjYzIDAgMS4xOS4xIDEuNy4yOS41MS4xOS45NS41IDEuMzEuOTMuMzYuNDMuNjQuOTkuODQgMS42OS4yLjcuMyAxLjU0LjMgMi41NXYyLjA0em0tMi4xMS0yLjM2YzAtLjY0LS4wNS0xLjE4LS4xMy0xLjYyLS4wOS0uNDQtLjIyLS43OS0uNC0xLjA2LS4xNy0uMjctLjM5LS40Ni0uNjQtLjU4LS4yNS0uMTMtLjU0LS4xOS0uODYtLjE5LS4zMiAwLS42MS4wNi0uODYuMThzLS40Ny4zMS0uNjQuNThjLS4xNy4yNy0uMzEuNjItLjQgMS4wNnMtLjEzLjk4LS4xMyAxLjYydjIuNjdjMCAuNjQuMDUgMS4xOC4xNCAxLjYyLjA5LjQ1LjIzLjgxLjQgMS4wOXMuMzkuNDguNjQuNjEuNTQuMTkuODcuMTljLjMzIDAgLjYyLS4wNi44Ny0uMTlzLjQ2LS4zMy42My0uNjFjLjE3LS4yOC4zLS42NC4zOS0xLjA5LjA5LS40NS4xMy0uOTkuMTMtMS42MnYtMi42NnoiPjwvcGF0aD48L2c+CjxnIGlkPSJmaWx0ZXIiPjxwYXRoIGQ9Ik0xNS45NiAxMC4yOWwtMi43NSAzLjU0LTEuOTYtMi4zNkw4LjUgMTVoMTFsLTMuNTQtNC43MXpNMyA1SDF2MTZjMCAxLjEuOSAyIDIgMmgxNnYtMkgzVjV6bTE4LTRIN2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTItMi0yem0wIDE2SDdWM2gxNHYxNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJmaWx0ZXItMSI+PHBhdGggZD0iTTMgNUgxdjE2YzAgMS4xLjkgMiAyIDJoMTZ2LTJIM1Y1em0xMSAxMGgyVjVoLTR2Mmgydjh6bTctMTRIN2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTItMi0yem0wIDE2SDdWM2gxNHYxNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJmaWx0ZXItMiI+PHBhdGggZD0iTTMgNUgxdjE2YzAgMS4xLjkgMiAyIDJoMTZ2LTJIM1Y1em0xOC00SDdjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMCAxNkg3VjNoMTR2MTR6bS00LTRoLTR2LTJoMmMxLjEgMCAyLS44OSAyLTJWN2MwLTEuMTEtLjktMi0yLTJoLTR2Mmg0djJoLTJjLTEuMSAwLTIgLjg5LTIgMnY0aDZ2LTJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmlsdGVyLTMiPjxwYXRoIGQ9Ik0yMSAxSDdjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMCAxNkg3VjNoMTR2MTR6TTMgNUgxdjE2YzAgMS4xLjkgMiAyIDJoMTZ2LTJIM1Y1em0xNCA4di0xLjVjMC0uODMtLjY3LTEuNS0xLjUtMS41LjgzIDAgMS41LS42NyAxLjUtMS41VjdjMC0xLjExLS45LTItMi0yaC00djJoNHYyaC0ydjJoMnYyaC00djJoNGMxLjEgMCAyLS44OSAyLTJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmlsdGVyLTQiPjxwYXRoIGQ9Ik0zIDVIMXYxNmMwIDEuMS45IDIgMiAyaDE2di0ySDNWNXptMTIgMTBoMlY1aC0ydjRoLTJWNWgtMnY2aDR2NHptNi0xNEg3Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMTZIN1YzaDE0djE0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImZpbHRlci01Ij48cGF0aCBkPSJNMjEgMUg3Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMTZIN1YzaDE0djE0ek0zIDVIMXYxNmMwIDEuMS45IDIgMiAyaDE2di0ySDNWNXptMTQgOHYtMmMwLTEuMTEtLjktMi0yLTJoLTJWN2g0VjVoLTZ2Nmg0djJoLTR2Mmg0YzEuMSAwIDItLjg5IDItMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJmaWx0ZXItNiI+PHBhdGggZD0iTTMgNUgxdjE2YzAgMS4xLjkgMiAyIDJoMTZ2LTJIM1Y1em0xOC00SDdjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMCAxNkg3VjNoMTR2MTR6bS04LTJoMmMxLjEgMCAyLS44OSAyLTJ2LTJjMC0xLjExLS45LTItMi0yaC0yVjdoNFY1aC00Yy0xLjEgMC0yIC44OS0yIDJ2NmMwIDEuMTEuOSAyIDIgMnptMC00aDJ2MmgtMnYtMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJmaWx0ZXItNyI+PHBhdGggZD0iTTMgNUgxdjE2YzAgMS4xLjkgMiAyIDJoMTZ2LTJIM1Y1em0xOC00SDdjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMCAxNkg3VjNoMTR2MTR6bS04LTJsNC04VjVoLTZ2Mmg0bC00IDhoMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJmaWx0ZXItOCI+PHBhdGggZD0iTTMgNUgxdjE2YzAgMS4xLjkgMiAyIDJoMTZ2LTJIM1Y1em0xOC00SDdjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMCAxNkg3VjNoMTR2MTR6bS04LTJoMmMxLjEgMCAyLS44OSAyLTJ2LTEuNWMwLS44My0uNjctMS41LTEuNS0xLjUuODMgMCAxLjUtLjY3IDEuNS0xLjVWN2MwLTEuMTEtLjktMi0yLTJoLTJjLTEuMSAwLTIgLjg5LTIgMnYxLjVjMCAuODMuNjcgMS41IDEuNSAxLjUtLjgzIDAtMS41LjY3LTEuNSAxLjVWMTNjMCAxLjExLjkgMiAyIDJ6bTAtOGgydjJoLTJWN3ptMCA0aDJ2MmgtMnYtMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJmaWx0ZXItOSI+PHBhdGggZD0iTTMgNUgxdjE2YzAgMS4xLjkgMiAyIDJoMTZ2LTJIM1Y1em0xOC00SDdjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMCAxNkg3VjNoMTR2MTR6TTE1IDVoLTJjLTEuMSAwLTIgLjg5LTIgMnYyYzAgMS4xMS45IDIgMiAyaDJ2MmgtNHYyaDRjMS4xIDAgMi0uODkgMi0yVjdjMC0xLjExLS45LTItMi0yem0wIDRoLTJWN2gydjJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmlsdGVyLTktcGx1cyI+PHBhdGggZD0iTTMgNUgxdjE2YzAgMS4xLjkgMiAyIDJoMTZ2LTJIM1Y1em0xMSA3VjhjMC0xLjExLS45LTItMi0yaC0xYy0xLjEgMC0yIC44OS0yIDJ2MWMwIDEuMTEuOSAyIDIgMmgxdjFIOXYyaDNjMS4xIDAgMi0uODkgMi0yem0tMy0zVjhoMXYxaC0xem0xMC04SDdjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMCA4aC0yVjdoLTJ2MmgtMnYyaDJ2Mmgydi0yaDJ2Nkg3VjNoMTR2NnoiPjwvcGF0aD48L2c+CjxnIGlkPSJmaWx0ZXItYi1hbmQtdyI+PHBhdGggZD0iTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2bC03LTh2OEg1bDctOFY1aDd2MTR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmlsdGVyLWNlbnRlci1mb2N1cyI+PHBhdGggZD0iTTUgMTVIM3Y0YzAgMS4xLjkgMiAyIDJoNHYtMkg1di00ek01IDVoNFYzSDVjLTEuMSAwLTIgLjktMiAydjRoMlY1em0xNC0yaC00djJoNHY0aDJWNWMwLTEuMS0uOS0yLTItMnptMCAxNmgtNHYyaDRjMS4xIDAgMi0uOSAyLTJ2LTRoLTJ2NHpNMTIgOWMtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgMyAzLTEuMzQgMy0zLTEuMzQtMy0zLTN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmlsdGVyLWRyYW1hIj48cGF0aCBkPSJNMTkuMzUgMTAuMDRDMTguNjcgNi41OSAxNS42NCA0IDEyIDQgOS4xMSA0IDYuNjEgNS42NCA1LjM2IDguMDQgMi4zNSA4LjM2IDAgMTAuOSAwIDE0YzAgMy4zMSAyLjY5IDYgNiA2aDEzYzIuNzYgMCA1LTIuMjQgNS01IDAtMi42NC0yLjA1LTQuNzgtNC42NS00Ljk2ek0xOSAxOEg2Yy0yLjIxIDAtNC0xLjc5LTQtNHMxLjc5LTQgNC00IDQgMS43OSA0IDRoMmMwLTIuNzYtMS44Ni01LjA4LTQuNC01Ljc4QzguNjEgNi44OCAxMC4yIDYgMTIgNmMzLjAzIDAgNS41IDIuNDcgNS41IDUuNXYuNUgxOWMxLjY1IDAgMyAxLjM1IDMgM3MtMS4zNSAzLTMgM3oiPjwvcGF0aD48L2c+CjxnIGlkPSJmaWx0ZXItZnJhbWVzIj48cGF0aCBkPSJNMjAgNGgtNGwtNC00LTQgNEg0Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bTAgMTZINFY2aDQuNTJsMy41Mi0zLjVMMTUuNTIgNkgyMHYxNHpNMTggOEg2djEwaDEyIj48L3BhdGg+PC9nPgo8ZyBpZD0iZmlsdGVyLWhkciI+PHBhdGggZD0iTTE0IDZsLTMuNzUgNSAyLjg1IDMuOC0xLjYgMS4yQzkuODEgMTMuNzUgNyAxMCA3IDEwbC02IDhoMjJMMTQgNnoiPjwvcGF0aD48L2c+CjxnIGlkPSJmaWx0ZXItbm9uZSI+PHBhdGggZD0iTTMgNUgxdjE2YzAgMS4xLjkgMiAyIDJoMTZ2LTJIM1Y1em0xOC00SDdjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMCAxNkg3VjNoMTR2MTR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmlsdGVyLXRpbHQtc2hpZnQiPjxwYXRoIGQ9Ik0xMSA0LjA3VjIuMDVjLTIuMDEuMi0zLjg0IDEtNS4zMiAyLjIxTDcuMSA1LjY5YzEuMTEtLjg2IDIuNDQtMS40NCAzLjktMS42MnptNy4zMi4xOUMxNi44NCAzLjA1IDE1LjAxIDIuMjUgMTMgMi4wNXYyLjAyYzEuNDYuMTggMi43OS43NiAzLjkgMS42MmwxLjQyLTEuNDN6TTE5LjkzIDExaDIuMDJjLS4yLTIuMDEtMS0zLjg0LTIuMjEtNS4zMkwxOC4zMSA3LjFjLjg2IDEuMTEgMS40NCAyLjQ0IDEuNjIgMy45ek01LjY5IDcuMUw0LjI2IDUuNjhDMy4wNSA3LjE2IDIuMjUgOC45OSAyLjA1IDExaDIuMDJjLjE4LTEuNDYuNzYtMi43OSAxLjYyLTMuOXpNNC4wNyAxM0gyLjA1Yy4yIDIuMDEgMSAzLjg0IDIuMjEgNS4zMmwxLjQzLTEuNDNjLS44Ni0xLjEtMS40NC0yLjQzLTEuNjItMy44OXpNMTUgMTJjMC0xLjY2LTEuMzQtMy0zLTNzLTMgMS4zNC0zIDMgMS4zNCAzIDMgMyAzLTEuMzQgMy0zem0zLjMxIDQuOWwxLjQzIDEuNDNjMS4yMS0xLjQ4IDIuMDEtMy4zMiAyLjIxLTUuMzJoLTIuMDJjLS4xOCAxLjQ1LS43NiAyLjc4LTEuNjIgMy44OXpNMTMgMTkuOTN2Mi4wMmMyLjAxLS4yIDMuODQtMSA1LjMyLTIuMjFsLTEuNDMtMS40M2MtMS4xLjg2LTIuNDMgMS40NC0zLjg5IDEuNjJ6bS03LjMyLS4xOUM3LjE2IDIwLjk1IDkgMjEuNzUgMTEgMjEuOTV2LTIuMDJjLTEuNDYtLjE4LTIuNzktLjc2LTMuOS0xLjYybC0xLjQyIDEuNDN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmlsdGVyLXZpbnRhZ2UiPjxwYXRoIGQ9Ik0xOC43IDEyLjRjLS4yOC0uMTYtLjU3LS4yOS0uODYtLjQuMjktLjExLjU4LS4yNC44Ni0uNCAxLjkyLTEuMTEgMi45OS0zLjEyIDMtNS4xOS0xLjc5LTEuMDMtNC4wNy0xLjExLTYgMC0uMjguMTYtLjU0LjM1LS43OC41NC4wNS0uMzEuMDgtLjYzLjA4LS45NSAwLTIuMjItMS4yMS00LjE1LTMtNS4xOUMxMC4yMSAxLjg1IDkgMy43OCA5IDZjMCAuMzIuMDMuNjQuMDguOTUtLjI0LS4yLS41LS4zOS0uNzgtLjU1LTEuOTItMS4xMS00LjItMS4wMy02IDAgMCAyLjA3IDEuMDcgNC4wOCAzIDUuMTkuMjguMTYuNTcuMjkuODYuNC0uMjkuMTEtLjU4LjI0LS44Ni40LTEuOTIgMS4xMS0yLjk5IDMuMTItMyA1LjE5IDEuNzkgMS4wMyA0LjA3IDEuMTEgNiAwIC4yOC0uMTYuNTQtLjM1Ljc4LS41NC0uMDUuMzItLjA4LjY0LS4wOC45NiAwIDIuMjIgMS4yMSA0LjE1IDMgNS4xOSAxLjc5LTEuMDQgMy0yLjk3IDMtNS4xOSAwLS4zMi0uMDMtLjY0LS4wOC0uOTUuMjQuMi41LjM4Ljc4LjU0IDEuOTIgMS4xMSA0LjIgMS4wMyA2IDAtLjAxLTIuMDctMS4wOC00LjA4LTMtNS4xOXpNMTIgMTZjLTIuMjEgMC00LTEuNzktNC00czEuNzktNCA0LTQgNCAxLjc5IDQgNC0xLjc5IDQtNCA0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImZsYXJlIj48cGF0aCBkPSJNNyAxMUgxdjJoNnYtMnptMi4xNy0zLjI0TDcuMDUgNS42NCA1LjY0IDcuMDVsMi4xMiAyLjEyIDEuNDEtMS40MXpNMTMgMWgtMnY2aDJWMXptNS4zNiA2LjA1bC0xLjQxLTEuNDEtMi4xMiAyLjEyIDEuNDEgMS40MSAyLjEyLTIuMTJ6TTE3IDExdjJoNnYtMmgtNnptLTUtMmMtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgMyAzLTEuMzQgMy0zLTEuMzQtMy0zLTN6bTIuODMgNy4yNGwyLjEyIDIuMTIgMS40MS0xLjQxLTIuMTItMi4xMi0xLjQxIDEuNDF6bS05LjE5LjcxbDEuNDEgMS40MSAyLjEyLTIuMTItMS40MS0xLjQxLTIuMTIgMi4xMnpNMTEgMjNoMnYtNmgtMnY2eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImZsYXNoLWF1dG8iPjxwYXRoIGQ9Ik0zIDJ2MTJoM3Y5bDctMTJIOWw0LTlIM3ptMTYgMGgtMmwtMy4yIDloMS45bC43LTJoMy4ybC43IDJoMS45TDE5IDJ6bS0yLjE1IDUuNjVMMTggNGwxLjE1IDMuNjVoLTIuM3oiPjwvcGF0aD48L2c+CjxnIGlkPSJmbGFzaC1vZmYiPjxwYXRoIGQ9Ik0zLjI3IDNMMiA0LjI3bDUgNVYxM2gzdjlsMy41OC02LjE0TDE3LjczIDIwIDE5IDE4LjczIDMuMjcgM3pNMTcgMTBoLTRsNC04SDd2Mi4xOGw4LjQ2IDguNDZMMTcgMTB6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmxhc2gtb24iPjxwYXRoIGQ9Ik03IDJ2MTFoM3Y5bDctMTJoLTRsNC04eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImZsaXAiPjxwYXRoIGQ9Ik0xNSAyMWgydi0yaC0ydjJ6bTQtMTJoMlY3aC0ydjJ6TTMgNXYxNGMwIDEuMS45IDIgMiAyaDR2LTJINVY1aDRWM0g1Yy0xLjEgMC0yIC45LTIgMnptMTYtMnYyaDJjMC0xLjEtLjktMi0yLTJ6bS04IDIwaDJWMWgtMnYyMnptOC02aDJ2LTJoLTJ2MnpNMTUgNWgyVjNoLTJ2MnptNCA4aDJ2LTJoLTJ2MnptMCA4YzEuMSAwIDItLjkgMi0yaC0ydjJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZ3JhZGllbnQiPjxwYXRoIGQ9Ik0xMSA5aDJ2MmgtMnptLTIgMmgydjJIOXptNCAwaDJ2MmgtMnptMi0yaDJ2MmgtMnpNNyA5aDJ2Mkg3em0xMi02SDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpNOSAxOEg3di0yaDJ2MnptNCAwaC0ydi0yaDJ2MnptNCAwaC0ydi0yaDJ2MnptMi03aC0ydjJoMnYyaC0ydi0yaC0ydjJoLTJ2LTJoLTJ2Mkg5di0ySDd2Mkg1di0yaDJ2LTJINVY1aDE0djZ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZ3JhaW4iPjxwYXRoIGQ9Ik0xMCAxMmMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6TTYgOGMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bTAgOGMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bTEyLThjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyem0tNCA4Yy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptNC00Yy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptLTQtNGMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bS00LTRjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImdyaWQtb2ZmIj48cGF0aCBkPSJNOCA0djEuNDVsMiAyVjRoNHY0aC0zLjQ1bDIgMkgxNHYxLjQ1bDIgMlYxMGg0djRoLTMuNDVsMiAySDIwdjEuNDVsMiAyVjRjMC0xLjEtLjktMi0yLTJINC41NWwyIDJIOHptOCAwaDR2NGgtNFY0ek0xLjI3IDEuMjdMMCAyLjU1bDIgMlYyMGMwIDEuMS45IDIgMiAyaDE1LjQ2bDIgMiAxLjI3LTEuMjdMMS4yNyAxLjI3ek0xMCAxMi41NUwxMS40NSAxNEgxMHYtMS40NXptLTYtNkw1LjQ1IDhINFY2LjU1ek04IDIwSDR2LTRoNHY0em0wLTZINHYtNGgzLjQ1bC41NS41NVYxNHptNiA2aC00di00aDMuNDVsLjU1LjU0VjIwem0yIDB2LTEuNDZMMTcuNDYgMjBIMTZ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZ3JpZC1vbiI+PHBhdGggZD0iTTIwIDJINGMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yek04IDIwSDR2LTRoNHY0em0wLTZINHYtNGg0djR6bTAtNkg0VjRoNHY0em02IDEyaC00di00aDR2NHptMC02aC00di00aDR2NHptMC02aC00VjRoNHY0em02IDEyaC00di00aDR2NHptMC02aC00di00aDR2NHptMC02aC00VjRoNHY0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9Imhkci1vZmYiPjxwYXRoIGQ9Ik0xNy41IDE1di0yaDEuMWwuOSAySDIxbC0uOS0yLjFjLjUtLjIuOS0uOC45LTEuNHYtMWMwLS44LS43LTEuNS0xLjUtMS41SDE2djQuOWwxLjEgMS4xaC40em0wLTQuNWgydjFoLTJ2LTF6bS00LjUgMHYuNGwxLjUgMS41di0xLjljMC0uOC0uNy0xLjUtMS41LTEuNWgtMS45bDEuNSAxLjVoLjR6bS0zLjUtMWwtNy03LTEuMSAxTDYuOSA5aC0uNHYyaC0yVjlIM3Y2aDEuNXYtMi41aDJWMTVIOHYtNC45bDEuNSAxLjVWMTVoMy40bDcuNiA3LjYgMS4xLTEuMS0xMi4xLTEyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9Imhkci1vbiI+PHBhdGggZD0iTTIxIDExLjV2LTFjMC0uOC0uNy0xLjUtMS41LTEuNUgxNnY2aDEuNXYtMmgxLjFsLjkgMkgyMWwtLjktMi4xYy41LS4zLjktLjguOS0xLjR6bS0xLjUgMGgtMnYtMWgydjF6bS0xMy0uNWgtMlY5SDN2NmgxLjV2LTIuNWgyVjE1SDhWOUg2LjV2MnpNMTMgOUg5LjV2NkgxM2MuOCAwIDEuNS0uNyAxLjUtMS41di0zYzAtLjgtLjctMS41LTEuNS0xLjV6bTAgNC41aC0ydi0zaDJ2M3oiPjwvcGF0aD48L2c+CjxnIGlkPSJoZHItc3Ryb25nIj48cGF0aCBkPSJNMTcgNmMtMy4zMSAwLTYgMi42OS02IDZzMi42OSA2IDYgNiA2LTIuNjkgNi02LTIuNjktNi02LTZ6TTUgOGMtMi4yMSAwLTQgMS43OS00IDRzMS43OSA0IDQgNCA0LTEuNzkgNC00LTEuNzktNC00LTR6bTAgNmMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iaGRyLXdlYWsiPjxwYXRoIGQ9Ik01IDhjLTIuMjEgMC00IDEuNzktNCA0czEuNzkgNCA0IDQgNC0xLjc5IDQtNC0xLjc5LTQtNC00em0xMi0yYy0zLjMxIDAtNiAyLjY5LTYgNnMyLjY5IDYgNiA2IDYtMi42OSA2LTYtMi42OS02LTYtNnptMCAxMGMtMi4yMSAwLTQtMS43OS00LTRzMS43OS00IDQtNCA0IDEuNzkgNCA0LTEuNzkgNC00IDR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iaGVhbGluZyI+PHBhdGggZD0iTTE3LjczIDEyLjAybDMuOTgtMy45OGMuMzktLjM5LjM5LTEuMDIgMC0xLjQxbC00LjM0LTQuMzRjLS4zOS0uMzktMS4wMi0uMzktMS40MSAwbC0zLjk4IDMuOThMOCAyLjI5QzcuOCAyLjEgNy41NSAyIDcuMjkgMmMtLjI1IDAtLjUxLjEtLjcuMjlMMi4yNSA2LjYzYy0uMzkuMzktLjM5IDEuMDIgMCAxLjQxbDMuOTggMy45OEwyLjI1IDE2Yy0uMzkuMzktLjM5IDEuMDIgMCAxLjQxbDQuMzQgNC4zNGMuMzkuMzkgMS4wMi4zOSAxLjQxIDBsMy45OC0zLjk4IDMuOTggMy45OGMuMi4yLjQ1LjI5LjcxLjI5LjI2IDAgLjUxLS4xLjcxLS4yOWw0LjM0LTQuMzRjLjM5LS4zOS4zOS0xLjAyIDAtMS40MWwtMy45OS0zLjk4ek0xMiA5Yy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6bS00LjcxIDEuOTZMMy42NiA3LjM0bDMuNjMtMy42MyAzLjYyIDMuNjItMy42MiAzLjYzek0xMCAxM2MtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem0yIDJjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptMi00Yy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6bTIuNjYgOS4zNGwtMy42My0zLjYyIDMuNjMtMy42MyAzLjYyIDMuNjItMy42MiAzLjYzeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImltYWdlIj48cGF0aCBkPSJNMjEgMTlWNWMwLTEuMS0uOS0yLTItMkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yek04LjUgMTMuNWwyLjUgMy4wMUwxNC41IDEybDQuNSA2SDVsMy41LTQuNXoiPjwvcGF0aD48L2c+CjxnIGlkPSJpbWFnZS1hc3BlY3QtcmF0aW8iPjxwYXRoIGQ9Ik0xNiAxMGgtMnYyaDJ2LTJ6bTAgNGgtMnYyaDJ2LTJ6bS04LTRINnYyaDJ2LTJ6bTQgMGgtMnYyaDJ2LTJ6bTgtNkg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bTAgMTRINFY2aDE2djEyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImlzbyI+PHBhdGggZD0iTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yek01LjUgNy41aDJ2LTJIOXYyaDJWOUg5djJINy41VjloLTJWNy41ek0xOSAxOUg1TDE5IDV2MTR6bS0yLTJ2LTEuNWgtNVYxN2g1eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImxhbmRzY2FwZSI+PHBhdGggZD0iTTE0IDZsLTMuNzUgNSAyLjg1IDMuOC0xLjYgMS4yQzkuODEgMTMuNzUgNyAxMCA3IDEwbC02IDhoMjJMMTQgNnoiPjwvcGF0aD48L2c+CjxnIGlkPSJsZWFrLWFkZCI+PHBhdGggZD0iTTYgM0gzdjNjMS42NiAwIDMtMS4zNCAzLTN6bTggMGgtMmMwIDQuOTctNC4wMyA5LTkgOXYyYzYuMDggMCAxMS00LjkzIDExLTExem0tNCAwSDhjMCAyLjc2LTIuMjQgNS01IDV2MmMzLjg3IDAgNy0zLjEzIDctN3ptMCAxOGgyYzAtNC45NyA0LjAzLTkgOS05di0yYy02LjA3IDAtMTEgNC45My0xMSAxMXptOCAwaDN2LTNjLTEuNjYgMC0zIDEuMzQtMyAzem0tNCAwaDJjMC0yLjc2IDIuMjQtNSA1LTV2LTJjLTMuODcgMC03IDMuMTMtNyA3eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImxlYWstcmVtb3ZlIj48cGF0aCBkPSJNMTAgM0g4YzAgLjM3LS4wNC43Mi0uMTIgMS4wNmwxLjU5IDEuNTlDOS44MSA0Ljg0IDEwIDMuOTQgMTAgM3pNMyA0LjI3bDIuODQgMi44NEM1LjAzIDcuNjcgNC4wNiA4IDMgOHYyYzEuNjEgMCAzLjA5LS41NSA0LjI3LTEuNDZMOC43IDkuOTdDNy4xNCAxMS4yNCA1LjE2IDEyIDMgMTJ2MmMyLjcxIDAgNS4xOS0uOTkgNy4xMS0yLjYybDIuNSAyLjVDMTAuOTkgMTUuODEgMTAgMTguMjkgMTAgMjFoMmMwLTIuMTYuNzYtNC4xNCAyLjAzLTUuNjlsMS40MyAxLjQzQzE0LjU1IDE3LjkxIDE0IDE5LjM5IDE0IDIxaDJjMC0xLjA2LjMzLTIuMDMuODktMi44NEwxOS43MyAyMSAyMSAxOS43MyA0LjI3IDMgMyA0LjI3ek0xNCAzaC0yYzAgMS41LS4zNyAyLjkxLTEuMDIgNC4xNmwxLjQ2IDEuNDZDMTMuNDIgNi45OCAxNCA1LjA2IDE0IDN6bTUuOTQgMTMuMTJjLjM0LS4wOC42OS0uMTIgMS4wNi0uMTJ2LTJjLS45NCAwLTEuODQuMTktMi42Ni41MmwxLjYgMS42em0tNC41Ni00LjU2bDEuNDYgMS40NkMxOC4wOSAxMi4zNyAxOS41IDEyIDIxIDEydi0yYy0yLjA2IDAtMy45OC41OC01LjYyIDEuNTZ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ibGVucyI+PHBhdGggZD0iTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ibGlua2VkLWNhbWVyYSI+PGNpcmNsZSBjeD0iMTIiIGN5PSIxNCIgcj0iMy4yIj48L2NpcmNsZT48cGF0aCBkPSJNMTYgMy4zM2MyLjU4IDAgNC42NyAyLjA5IDQuNjcgNC42N0gyMmMwLTMuMzEtMi42OS02LTYtNnYxLjMzTTE2IDZjMS4xMSAwIDIgLjg5IDIgMmgxLjMzYzAtMS44NC0xLjQ5LTMuMzMtMy4zMy0zLjMzVjYiPjwvcGF0aD48cGF0aCBkPSJNMTcgOWMwLTEuMTEtLjg5LTItMi0yVjRIOUw3LjE3IDZINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY5aC01em0tNSAxMGMtMi43NiAwLTUtMi4yNC01LTVzMi4yNC01IDUtNSA1IDIuMjQgNSA1LTIuMjQgNS01IDV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ibG9va3MiPjxwYXRoIGQ9Ik0xMiAxMGMtMy44NiAwLTcgMy4xNC03IDdoMmMwLTIuNzYgMi4yNC01IDUtNXM1IDIuMjQgNSA1aDJjMC0zLjg2LTMuMTQtNy03LTd6bTAtNEM1LjkzIDYgMSAxMC45MyAxIDE3aDJjMC00Ljk2IDQuMDQtOSA5LTlzOSA0LjA0IDkgOWgyYzAtNi4wNy00LjkzLTExLTExLTExeiI+PC9wYXRoPjwvZz4KPGcgaWQ9Imxvb2tzLTMiPjxwYXRoIGQ9Ik0xOS4wMSAzaC0xNGMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNCA3LjVjMCAuODMtLjY3IDEuNS0xLjUgMS41LjgzIDAgMS41LjY3IDEuNSAxLjVWMTVjMCAxLjExLS45IDItMiAyaC00di0yaDR2LTJoLTJ2LTJoMlY5aC00VjdoNGMxLjEgMCAyIC44OSAyIDJ2MS41eiI+PC9wYXRoPjwvZz4KPGcgaWQ9Imxvb2tzLTQiPjxwYXRoIGQ9Ik0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTQgMTRoLTJ2LTRIOVY3aDJ2NGgyVjdoMnYxMHoiPjwvcGF0aD48L2c+CjxnIGlkPSJsb29rcy01Ij48cGF0aCBkPSJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS00IDZoLTR2MmgyYzEuMSAwIDIgLjg5IDIgMnYyYzAgMS4xMS0uOSAyLTIgMkg5di0yaDR2LTJIOVY3aDZ2MnoiPjwvcGF0aD48L2c+CjxnIGlkPSJsb29rcy02Ij48cGF0aCBkPSJNMTEgMTVoMnYtMmgtMnYyem04LTEySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTQgNmgtNHYyaDJjMS4xIDAgMiAuODkgMiAydjJjMCAxLjExLS45IDItMiAyaC0yYy0xLjEgMC0yLS44OS0yLTJWOWMwLTEuMTEuOS0yIDItMmg0djJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ibG9va3Mtb25lIj48cGF0aCBkPSJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS01IDE0aC0yVjloLTJWN2g0djEweiI+PC9wYXRoPjwvZz4KPGcgaWQ9Imxvb2tzLXR3byI+PHBhdGggZD0iTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNCA4YzAgMS4xMS0uOSAyLTIgMmgtMnYyaDR2Mkg5di00YzAtMS4xMS45LTIgMi0yaDJWOUg5VjdoNGMxLjEgMCAyIC44OSAyIDJ2MnoiPjwvcGF0aD48L2c+CjxnIGlkPSJsb3VwZSI+PHBhdGggZD0iTTEzIDdoLTJ2NEg3djJoNHY0aDJ2LTRoNHYtMmgtNFY3em0tMS01QzYuNDkgMiAyIDYuNDkgMiAxMnM0LjQ5IDEwIDEwIDEwaDhjMS4xIDAgMi0uOSAyLTJ2LThjMC01LjUxLTQuNDktMTAtMTAtMTB6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4eiI+PC9wYXRoPjwvZz4KPGcgaWQ9Im1vbm9jaHJvbWUtcGhvdG9zIj48cGF0aCBkPSJNMjAgNWgtMy4yTDE1IDNIOUw3LjIgNUg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjdjMC0xLjEtLjktMi0yLTJ6bTAgMTRoLTh2LTFjLTIuOCAwLTUtMi4yLTUtNXMyLjItNSA1LTVWN2g4djEyem0tMy02YzAtMi44LTIuMi01LTUtNXYxLjhjMS44IDAgMy4yIDEuNCAzLjIgMy4ycy0xLjQgMy4yLTMuMiAzLjJWMThjMi44IDAgNS0yLjIgNS01em0tOC4yIDBjMCAxLjggMS40IDMuMiAzLjIgMy4yVjkuOGMtMS44IDAtMy4yIDEuNC0zLjIgMy4yeiI+PC9wYXRoPjwvZz4KPGcgaWQ9Im1vdmllLWNyZWF0aW9uIj48cGF0aCBkPSJNMTggNGwyIDRoLTNsLTItNGgtMmwyIDRoLTNsLTItNEg4bDIgNEg3TDUgNEg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY0aC00eiI+PC9wYXRoPjwvZz4KPGcgaWQ9Im1vdmllLWZpbHRlciI+PHBhdGggZD0iTTE4IDRsMiAzaC0zbC0yLTNoLTJsMiAzaC0zbC0yLTNIOGwyIDNIN0w1IDRINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDE4YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNGgtNHptLTYuNzUgMTEuMjVMMTAgMThsLTEuMjUtMi43NUw2IDE0bDIuNzUtMS4yNUwxMCAxMGwxLjI1IDIuNzVMMTQgMTRsLTIuNzUgMS4yNXptNS42OS0zLjMxTDE2IDE0bC0uOTQtMi4wNkwxMyAxMWwyLjA2LS45NEwxNiA4bC45NCAyLjA2TDE5IDExbC0yLjA2Ljk0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9Im11c2ljLW5vdGUiPjxwYXRoIGQ9Ik0xMiAzdjEwLjU1Yy0uNTktLjM0LTEuMjctLjU1LTItLjU1LTIuMjEgMC00IDEuNzktNCA0czEuNzkgNCA0IDQgNC0xLjc5IDQtNFY3aDRWM2gtNnoiPjwvcGF0aD48L2c+CjxnIGlkPSJuYXR1cmUiPjxwYXRoIGQ9Ik0xMyAxNi4xMmMzLjQ3LS40MSA2LjE3LTMuMzYgNi4xNy02Ljk1IDAtMy44Ny0zLjEzLTctNy03cy03IDMuMTMtNyA3YzAgMy40NyAyLjUyIDYuMzQgNS44MyA2Ljg5VjIwSDV2MmgxNHYtMmgtNnYtMy44OHoiPjwvcGF0aD48L2c+CjxnIGlkPSJuYXR1cmUtcGVvcGxlIj48cGF0aCBkPSJNMjIuMTcgOS4xN2MwLTMuODctMy4xMy03LTctN3MtNyAzLjEzLTcgN2MwIDMuNDcgMi41MiA2LjM0IDUuODMgNi44OVYyMEg2di0zaDF2LTRjMC0uNTUtLjQ1LTEtMS0xSDNjLS41NSAwLTEgLjQ1LTEgMXY0aDF2NWgxNnYtMmgtM3YtMy44OGMzLjQ3LS40MSA2LjE3LTMuMzYgNi4xNy02Ljk1ek00LjUgMTFjLjgzIDAgMS41LS42NyAxLjUtMS41UzUuMzMgOCA0LjUgOCAzIDguNjcgMyA5LjUgMy42NyAxMSA0LjUgMTF6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ibmF2aWdhdGUtYmVmb3JlIj48cGF0aCBkPSJNMTUuNDEgNy40MUwxNCA2bC02IDYgNiA2IDEuNDEtMS40MUwxMC44MyAxMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJuYXZpZ2F0ZS1uZXh0Ij48cGF0aCBkPSJNMTAgNkw4LjU5IDcuNDEgMTMuMTcgMTJsLTQuNTggNC41OUwxMCAxOGw2LTZ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icGFsZXR0ZSI+PHBhdGggZD0iTTEyIDNjLTQuOTcgMC05IDQuMDMtOSA5czQuMDMgOSA5IDljLjgzIDAgMS41LS42NyAxLjUtMS41IDAtLjM5LS4xNS0uNzQtLjM5LTEuMDEtLjIzLS4yNi0uMzgtLjYxLS4zOC0uOTkgMC0uODMuNjctMS41IDEuNS0xLjVIMTZjMi43NiAwIDUtMi4yNCA1LTUgMC00LjQyLTQuMDMtOC05LTh6bS01LjUgOWMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzUuNjcgOSA2LjUgOSA4IDkuNjcgOCAxMC41IDcuMzMgMTIgNi41IDEyem0zLTRDOC42NyA4IDggNy4zMyA4IDYuNVM4LjY3IDUgOS41IDVzMS41LjY3IDEuNSAxLjVTMTAuMzMgOCA5LjUgOHptNSAwYy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTMTMuNjcgNSAxNC41IDVzMS41LjY3IDEuNSAxLjVTMTUuMzMgOCAxNC41IDh6bTMgNGMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzE2LjY3IDkgMTcuNSA5czEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXoiPjwvcGF0aD48L2c+CjxnIGlkPSJwYW5vcmFtYSI+PHBhdGggZD0iTTIzIDE4VjZjMC0xLjEtLjktMi0yLTJIM2MtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMnpNOC41IDEyLjVsMi41IDMuMDFMMTQuNSAxMWw0LjUgNkg1bDMuNS00LjV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icGFub3JhbWEtZmlzaC1leWUiPjxwYXRoIGQ9Ik0xMiAyQzYuNDcgMiAyIDYuNDcgMiAxMnM0LjQ3IDEwIDEwIDEwIDEwLTQuNDcgMTAtMTBTMTcuNTMgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHoiPjwvcGF0aD48L2c+CjxnIGlkPSJwYW5vcmFtYS1ob3Jpem9udGFsIj48cGF0aCBkPSJNMjAgNi41NHYxMC45MWMtMi42LS43Ny01LjI4LTEuMTYtOC0xLjE2LTIuNzIgMC01LjQuMzktOCAxLjE2VjYuNTRjMi42Ljc3IDUuMjggMS4xNiA4IDEuMTYgMi43Mi4wMSA1LjQtLjM4IDgtMS4xNk0yMS40MyA0Yy0uMSAwLS4yLjAyLS4zMS4wNkMxOC4xOCA1LjE2IDE1LjA5IDUuNyAxMiA1LjdjLTMuMDkgMC02LjE4LS41NS05LjEyLTEuNjQtLjExLS4wNC0uMjItLjA2LS4zMS0uMDYtLjM0IDAtLjU3LjIzLS41Ny42M3YxNC43NWMwIC4zOS4yMy42Mi41Ny42Mi4xIDAgLjItLjAyLjMxLS4wNiAyLjk0LTEuMSA2LjAzLTEuNjQgOS4xMi0xLjY0IDMuMDkgMCA2LjE4LjU1IDkuMTIgMS42NC4xMS4wNC4yMS4wNi4zMS4wNi4zMyAwIC41Ny0uMjMuNTctLjYzVjQuNjNjMC0uNC0uMjQtLjYzLS41Ny0uNjN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icGFub3JhbWEtdmVydGljYWwiPjxwYXRoIGQ9Ik0xOS45NCAyMS4xMmMtMS4xLTIuOTQtMS42NC02LjAzLTEuNjQtOS4xMiAwLTMuMDkuNTUtNi4xOCAxLjY0LTkuMTIuMDQtLjExLjA2LS4yMi4wNi0uMzEgMC0uMzQtLjIzLS41Ny0uNjMtLjU3SDQuNjNjLS40IDAtLjYzLjIzLS42My41NyAwIC4xLjAyLjIuMDYuMzFDNS4xNiA1LjgyIDUuNzEgOC45MSA1LjcxIDEyYzAgMy4wOS0uNTUgNi4xOC0xLjY0IDkuMTItLjA1LjExLS4wNy4yMi0uMDcuMzEgMCAuMzMuMjMuNTcuNjMuNTdoMTQuNzVjLjM5IDAgLjYzLS4yNC42My0uNTctLjAxLS4xLS4wMy0uMi0uMDctLjMxek02LjU0IDIwYy43Ny0yLjYgMS4xNi01LjI4IDEuMTYtOCAwLTIuNzItLjM5LTUuNC0xLjE2LThoMTAuOTFjLS43NyAyLjYtMS4xNiA1LjI4LTEuMTYgOCAwIDIuNzIuMzkgNS40IDEuMTYgOEg2LjU0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InBhbm9yYW1hLXdpZGUtYW5nbGUiPjxwYXRoIGQ9Ik0xMiA2YzIuNDUgMCA0LjcxLjIgNy4yOS42NC40NyAxLjc4LjcxIDMuNTguNzEgNS4zNiAwIDEuNzgtLjI0IDMuNTgtLjcxIDUuMzYtMi41OC40NC00Ljg0LjY0LTcuMjkuNjRzLTQuNzEtLjItNy4yOS0uNjRDNC4yNCAxNS41OCA0IDEzLjc4IDQgMTJjMC0xLjc4LjI0LTMuNTguNzEtNS4zNkM3LjI5IDYuMiA5LjU1IDYgMTIgNm0wLTJjLTIuNzMgMC01LjIyLjI0LTcuOTUuNzJsLS45My4xNi0uMjUuOUMyLjI5IDcuODUgMiA5LjkzIDIgMTJzLjI5IDQuMTUuODcgNi4yMmwuMjUuODkuOTMuMTZjMi43My40OSA1LjIyLjczIDcuOTUuNzNzNS4yMi0uMjQgNy45NS0uNzJsLjkzLS4xNi4yNS0uODljLjU4LTIuMDguODctNC4xNi44Ny02LjIzcy0uMjktNC4xNS0uODctNi4yMmwtLjI1LS44OS0uOTMtLjE2QzE3LjIyIDQuMjQgMTQuNzMgNCAxMiA0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InBob3RvIj48cGF0aCBkPSJNMjEgMTlWNWMwLTEuMS0uOS0yLTItMkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yek04LjUgMTMuNWwyLjUgMy4wMUwxNC41IDEybDQuNSA2SDVsMy41LTQuNXoiPjwvcGF0aD48L2c+CjxnIGlkPSJwaG90by1hbGJ1bSI+PHBhdGggZD0iTTE4IDJINmMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yek02IDRoNXY4bC0yLjUtMS41TDYgMTJWNHptMCAxNWwzLTMuODYgMi4xNCAyLjU4IDMtMy44NkwxOCAxOUg2eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InBob3RvLWNhbWVyYSI+PGNpcmNsZSBjeD0iMTIiIGN5PSIxMiIgcj0iMy4yIj48L2NpcmNsZT48cGF0aCBkPSJNOSAyTDcuMTcgNEg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJoLTMuMTdMMTUgMkg5em0zIDE1Yy0yLjc2IDAtNS0yLjI0LTUtNXMyLjI0LTUgNS01IDUgMi4yNCA1IDUtMi4yNCA1LTUgNXoiPjwvcGF0aD48L2c+CjxnIGlkPSJwaG90by1maWx0ZXIiPjxwYXRoIGQ9Ik0xOS4wMiAxMHY5SDVWNWg5VjNINS4wMmMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMnYtOWgtMnpNMTcgMTBsLjk0LTIuMDZMMjAgN2wtMi4wNi0uOTRMMTcgNGwtLjk0IDIuMDZMMTQgN2wyLjA2Ljk0em0tMy43NS43NUwxMiA4bC0xLjI1IDIuNzVMOCAxMmwyLjc1IDEuMjVMMTIgMTZsMS4yNS0yLjc1TDE2IDEyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InBob3RvLWxpYnJhcnkiPjxwYXRoIGQ9Ik0yMiAxNlY0YzAtMS4xLS45LTItMi0ySDhjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJ6bS0xMS00bDIuMDMgMi43MUwxNiAxMWw0IDVIOGwzLTR6TTIgNnYxNGMwIDEuMS45IDIgMiAyaDE0di0ySDRWNkgyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InBob3RvLXNpemUtc2VsZWN0LWFjdHVhbCI+PHBhdGggZD0iTTIxIDNIM0MyIDMgMSA0IDEgNXYxNGMwIDEuMS45IDIgMiAyaDE4YzEgMCAyLTEgMi0yVjVjMC0xLTEtMi0yLTJ6TTUgMTdsMy41LTQuNSAyLjUgMy4wMUwxNC41IDExbDQuNSA2SDV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icGhvdG8tc2l6ZS1zZWxlY3QtbGFyZ2UiPjxwYXRoIGQ9Ik0yMSAxNWgydjJoLTJ2LTJ6bTAtNGgydjJoLTJ2LTJ6bTIgOGgtMnYyYzEgMCAyLTEgMi0yek0xMyAzaDJ2MmgtMlYzem04IDRoMnYyaC0yVjd6bTAtNHYyaDJjMC0xLTEtMi0yLTJ6TTEgN2gydjJIMVY3em0xNi00aDJ2MmgtMlYzem0wIDE2aDJ2MmgtMnYtMnpNMyAzQzIgMyAxIDQgMSA1aDJWM3ptNiAwaDJ2Mkg5VjN6TTUgM2gydjJINVYzem0tNCA4djhjMCAxLjEuOSAyIDIgMmgxMlYxMUgxem0yIDhsMi41LTMuMjEgMS43OSAyLjE1IDIuNS0zLjIyTDEzIDE5SDN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icGhvdG8tc2l6ZS1zZWxlY3Qtc21hbGwiPjxwYXRoIGQ9Ik0yMyAxNWgtMnYyaDJ2LTJ6bTAtNGgtMnYyaDJ2LTJ6bTAgOGgtMnYyYzEgMCAyLTEgMi0yek0xNSAzaC0ydjJoMlYzem04IDRoLTJ2MmgyVjd6bS0yLTR2MmgyYzAtMS0xLTItMi0yek0zIDIxaDh2LTZIMXY0YzAgMS4xLjkgMiAyIDJ6TTMgN0gxdjJoMlY3em0xMiAxMmgtMnYyaDJ2LTJ6bTQtMTZoLTJ2MmgyVjN6bTAgMTZoLTJ2Mmgydi0yek0zIDNDMiAzIDEgNCAxIDVoMlYzem0wIDhIMXYyaDJ2LTJ6bTgtOEg5djJoMlYzek03IDNINXYyaDJWM3oiPjwvcGF0aD48L2c+CjxnIGlkPSJwaWN0dXJlLWFzLXBkZiI+PHBhdGggZD0iTTIwIDJIOGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0tOC41IDcuNWMwIC44My0uNjcgMS41LTEuNSAxLjVIOXYySDcuNVY3SDEwYy44MyAwIDEuNS42NyAxLjUgMS41djF6bTUgMmMwIC44My0uNjcgMS41LTEuNSAxLjVoLTIuNVY3SDE1Yy44MyAwIDEuNS42NyAxLjUgMS41djN6bTQtM0gxOXYxaDEuNVYxMUgxOXYyaC0xLjVWN2gzdjEuNXpNOSA5LjVoMXYtMUg5djF6TTQgNkgydjE0YzAgMS4xLjkgMiAyIDJoMTR2LTJINFY2em0xMCA1LjVoMXYtM2gtMXYzeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InBvcnRyYWl0Ij48cGF0aCBkPSJNMTIgMTIuMjVjMS4yNCAwIDIuMjUtMS4wMSAyLjI1LTIuMjVTMTMuMjQgNy43NSAxMiA3Ljc1IDkuNzUgOC43NiA5Ljc1IDEwczEuMDEgMi4yNSAyLjI1IDIuMjV6bTQuNSA0YzAtMS41LTMtMi4yNS00LjUtMi4yNXMtNC41Ljc1LTQuNSAyLjI1VjE3aDl2LS43NXpNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InJlbW92ZS1yZWQtZXllIj48cGF0aCBkPSJNMTIgNC41QzcgNC41IDIuNzMgNy42MSAxIDEyYzEuNzMgNC4zOSA2IDcuNSAxMSA3LjVzOS4yNy0zLjExIDExLTcuNWMtMS43My00LjM5LTYtNy41LTExLTcuNXpNMTIgMTdjLTIuNzYgMC01LTIuMjQtNS01czIuMjQtNSA1LTUgNSAyLjI0IDUgNS0yLjI0IDUtNSA1em0wLThjLTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDMgMy0xLjM0IDMtMy0xLjM0LTMtMy0zeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InJvdGF0ZS05MC1kZWdyZWVzLWNjdyI+PHBhdGggZD0iTTcuMzQgNi40MUwuODYgMTIuOWw2LjQ5IDYuNDggNi40OS02LjQ4LTYuNS02LjQ5ek0zLjY5IDEyLjlsMy42Ni0zLjY2TDExIDEyLjlsLTMuNjYgMy42Ni0zLjY1LTMuNjZ6bTE1LjY3LTYuMjZDMTcuNjEgNC44OCAxNS4zIDQgMTMgNFYuNzZMOC43NiA1IDEzIDkuMjRWNmMxLjc5IDAgMy41OC42OCA0Ljk1IDIuMDUgMi43MyAyLjczIDIuNzMgNy4xNyAwIDkuOUMxNi41OCAxOS4zMiAxNC43OSAyMCAxMyAyMGMtLjk3IDAtMS45NC0uMjEtMi44NC0uNjFsLTEuNDkgMS40OUMxMC4wMiAyMS42MiAxMS41MSAyMiAxMyAyMmMyLjMgMCA0LjYxLS44OCA2LjM2LTIuNjQgMy41Mi0zLjUxIDMuNTItOS4yMSAwLTEyLjcyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InJvdGF0ZS1sZWZ0Ij48cGF0aCBkPSJNNy4xMSA4LjUzTDUuNyA3LjExQzQuOCA4LjI3IDQuMjQgOS42MSA0LjA3IDExaDIuMDJjLjE0LS44Ny40OS0xLjcyIDEuMDItMi40N3pNNi4wOSAxM0g0LjA3Yy4xNyAxLjM5LjcyIDIuNzMgMS42MiAzLjg5bDEuNDEtMS40MmMtLjUyLS43NS0uODctMS41OS0xLjAxLTIuNDd6bTEuMDEgNS4zMmMxLjE2LjkgMi41MSAxLjQ0IDMuOSAxLjYxVjE3LjljLS44Ny0uMTUtMS43MS0uNDktMi40Ni0xLjAzTDcuMSAxOC4zMnpNMTMgNC4wN1YxTDguNDUgNS41NSAxMyAxMFY2LjA5YzIuODQuNDggNSAyLjk0IDUgNS45MXMtMi4xNiA1LjQzLTUgNS45MXYyLjAyYzMuOTUtLjQ5IDctMy44NSA3LTcuOTNzLTMuMDUtNy40NC03LTcuOTN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icm90YXRlLXJpZ2h0Ij48cGF0aCBkPSJNMTUuNTUgNS41NUwxMSAxdjMuMDdDNy4wNiA0LjU2IDQgNy45MiA0IDEyczMuMDUgNy40NCA3IDcuOTN2LTIuMDJjLTIuODQtLjQ4LTUtMi45NC01LTUuOTFzMi4xNi01LjQzIDUtNS45MVYxMGw0LjU1LTQuNDV6TTE5LjkzIDExYy0uMTctMS4zOS0uNzItMi43My0xLjYyLTMuODlsLTEuNDIgMS40MmMuNTQuNzUuODggMS42IDEuMDIgMi40N2gyLjAyek0xMyAxNy45djIuMDJjMS4zOS0uMTcgMi43NC0uNzEgMy45LTEuNjFsLTEuNDQtMS40NGMtLjc1LjU0LTEuNTkuODktMi40NiAxLjAzem0zLjg5LTIuNDJsMS40MiAxLjQxYy45LTEuMTYgMS40NS0yLjUgMS42Mi0zLjg5aC0yLjAyYy0uMTQuODctLjQ4IDEuNzItMS4wMiAyLjQ4eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InNsaWRlc2hvdyI+PHBhdGggZD0iTTEwIDh2OGw1LTQtNS00em05LTVINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJzdHJhaWdodGVuIj48cGF0aCBkPSJNMjEgNkgzYy0xLjEgMC0yIC45LTIgMnY4YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnptMCAxMEgzVjhoMnY0aDJWOGgydjRoMlY4aDJ2NGgyVjhoMnY0aDJWOGgydjh6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic3R5bGUiPjxwYXRoIGQ9Ik0yLjUzIDE5LjY1bDEuMzQuNTZ2LTkuMDNsLTIuNDMgNS44NmMtLjQxIDEuMDIuMDggMi4xOSAxLjA5IDIuNjF6bTE5LjUtMy43TDE3LjA3IDMuOThjLS4zMS0uNzUtMS4wNC0xLjIxLTEuODEtMS4yMy0uMjYgMC0uNTMuMDQtLjc5LjE1TDcuMSA1Ljk1Yy0uNzUuMzEtMS4yMSAxLjAzLTEuMjMgMS44LS4wMS4yNy4wNC41NC4xNS44bDQuOTYgMTEuOTdjLjMxLjc2IDEuMDUgMS4yMiAxLjgzIDEuMjMuMjYgMCAuNTItLjA1Ljc3LS4xNWw3LjM2LTMuMDVjMS4wMi0uNDIgMS41MS0xLjU5IDEuMDktMi42ek03Ljg4IDguNzVjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptLTIgMTFjMCAxLjEuOSAyIDIgMmgxLjQ1bC0zLjQ1LTguMzR2Ni4zNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJzd2l0Y2gtY2FtZXJhIj48cGF0aCBkPSJNMjAgNGgtMy4xN0wxNSAySDlMNy4xNyA0SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptLTUgMTEuNVYxM0g5djIuNUw1LjUgMTIgOSA4LjVWMTFoNlY4LjVsMy41IDMuNS0zLjUgMy41eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InN3aXRjaC12aWRlbyI+PHBhdGggZD0iTTE4IDkuNVY2YzAtLjU1LS40NS0xLTEtMUgzYy0uNTUgMC0xIC40NS0xIDF2MTJjMCAuNTUuNDUgMSAxIDFoMTRjLjU1IDAgMS0uNDUgMS0xdi0zLjVsNCA0di0xM2wtNCA0em0tNSA2VjEzSDd2Mi41TDMuNSAxMiA3IDguNVYxMWg2VjguNWwzLjUgMy41LTMuNSAzLjV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idGFnLWZhY2VzIj48cGF0aCBkPSJNMTEuOTkgMkM2LjQ3IDIgMiA2LjQ4IDIgMTJzNC40NyAxMCA5Ljk5IDEwQzE3LjUyIDIyIDIyIDE3LjUyIDIyIDEyUzE3LjUyIDIgMTEuOTkgMnpNMTIgMjBjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4em0zLjUtOWMuODMgMCAxLjUtLjY3IDEuNS0xLjVTMTYuMzMgOCAxNS41IDggMTQgOC42NyAxNCA5LjVzLjY3IDEuNSAxLjUgMS41em0tNyAwYy44MyAwIDEuNS0uNjcgMS41LTEuNVM5LjMzIDggOC41IDggNyA4LjY3IDcgOS41IDcuNjcgMTEgOC41IDExem0zLjUgNi41YzIuMzMgMCA0LjMxLTEuNDYgNS4xMS0zLjVINi44OWMuOCAyLjA0IDIuNzggMy41IDUuMTEgMy41eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InRleHR1cmUiPjxwYXRoIGQ9Ik0xOS41MSAzLjA4TDMuMDggMTkuNTFjLjA5LjM0LjI3LjY1LjUxLjkuMjUuMjQuNTYuNDIuOS41MUwyMC45MyA0LjQ5Yy0uMTktLjY5LS43My0xLjIzLTEuNDItMS40MXpNMTEuODggM0wzIDExLjg4djIuODNMMTQuNzEgM2gtMi44M3pNNSAzYy0xLjEgMC0yIC45LTIgMnYybDQtNEg1em0xNCAxOGMuNTUgMCAxLjA1LS4yMiAxLjQxLS41OS4zNy0uMzYuNTktLjg2LjU5LTEuNDF2LTJsLTQgNGgyem0tOS43MSAwaDIuODNMMjEgMTIuMTJWOS4yOUw5LjI5IDIxeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InRpbWVsYXBzZSI+PHBhdGggZD0iTTE2LjI0IDcuNzZDMTUuMDcgNi41OSAxMy41NCA2IDEyIDZ2NmwtNC4yNCA0LjI0YzIuMzQgMi4zNCA2LjE0IDIuMzQgOC40OSAwIDIuMzQtMi4zNCAyLjM0LTYuMTQtLjAxLTguNDh6TTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InRpbWVyIj48cGF0aCBkPSJNMTUgMUg5djJoNlYxem0tNCAxM2gyVjhoLTJ2NnptOC4wMy02LjYxbDEuNDItMS40MmMtLjQzLS41MS0uOS0uOTktMS40MS0xLjQxbC0xLjQyIDEuNDJDMTYuMDcgNC43NCAxNC4xMiA0IDEyIDRjLTQuOTcgMC05IDQuMDMtOSA5czQuMDIgOSA5IDkgOS00LjAzIDktOWMwLTIuMTItLjc0LTQuMDctMS45Ny01LjYxek0xMiAyMGMtMy44NyAwLTctMy4xMy03LTdzMy4xMy03IDctNyA3IDMuMTMgNyA3LTMuMTMgNy03IDd6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idGltZXItMTAiPjxwYXRoIGQ9Ik0wIDcuNzJWOS40bDMtMVYxOGgyVjZoLS4yNUwwIDcuNzJ6bTIzLjc4IDYuNjVjLS4xNC0uMjgtLjM1LS41My0uNjMtLjc0LS4yOC0uMjEtLjYxLS4zOS0xLjAxLS41M3MtLjg1LS4yNy0xLjM1LS4zOGMtLjM1LS4wNy0uNjQtLjE1LS44Ny0uMjMtLjIzLS4wOC0uNDEtLjE2LS41NS0uMjUtLjE0LS4wOS0uMjMtLjE5LS4yOC0uMy0uMDUtLjExLS4wOC0uMjQtLjA4LS4zOSAwLS4xNC4wMy0uMjguMDktLjQxLjA2LS4xMy4xNS0uMjUuMjctLjM0LjEyLS4xLjI3LS4xOC40NS0uMjRzLjQtLjA5LjY0LS4wOWMuMjUgMCAuNDcuMDQuNjYuMTEuMTkuMDcuMzUuMTcuNDguMjkuMTMuMTIuMjIuMjYuMjkuNDIuMDYuMTYuMS4zMi4xLjQ5aDEuOTVjMC0uMzktLjA4LS43NS0uMjQtMS4wOS0uMTYtLjM0LS4zOS0uNjMtLjY5LS44OC0uMy0uMjUtLjY2LS40NC0xLjA5LS41OUMyMS40OSA5LjA3IDIxIDkgMjAuNDYgOWMtLjUxIDAtLjk4LjA3LTEuMzkuMjEtLjQxLjE0LS43Ny4zMy0xLjA2LjU3LS4yOS4yNC0uNTEuNTItLjY3Ljg0LS4xNi4zMi0uMjMuNjUtLjIzIDEuMDFzLjA4LjY5LjIzLjk2Yy4xNS4yOC4zNi41Mi42NC43My4yNy4yMS42LjM4Ljk4LjUzLjM4LjE0LjgxLjI2IDEuMjcuMzYuMzkuMDguNzEuMTcuOTUuMjZzLjQzLjE5LjU3LjI5Yy4xMy4xLjIyLjIyLjI3LjM0LjA1LjEyLjA3LjI1LjA3LjM5IDAgLjMyLS4xMy41Ny0uNC43Ny0uMjcuMi0uNjYuMjktMS4xNy4yOS0uMjIgMC0uNDMtLjAyLS42NC0uMDgtLjIxLS4wNS0uNC0uMTMtLjU2LS4yNC0uMTctLjExLS4zLS4yNi0uNDEtLjQ0LS4xMS0uMTgtLjE3LS40MS0uMTgtLjY3aC0xLjg5YzAgLjM2LjA4LjcxLjI0IDEuMDUuMTYuMzQuMzkuNjUuNy45My4zMS4yNy42OS40OSAxLjE1LjY2LjQ2LjE3Ljk4LjI1IDEuNTguMjUuNTMgMCAxLjAxLS4wNiAxLjQ0LS4xOS40My0uMTMuOC0uMzEgMS4xMS0uNTQuMzEtLjIzLjU0LS41MS43MS0uODMuMTctLjMyLjI1LS42Ny4yNS0xLjA2LS4wMi0uNC0uMDktLjc0LS4yNC0xLjAyem0tOS45Ni03LjMyYy0uMzQtLjQtLjc1LS43LTEuMjMtLjg4LS40Ny0uMTgtMS4wMS0uMjctMS41OS0uMjctLjU4IDAtMS4xMS4wOS0xLjU5LjI3LS40OC4xOC0uODkuNDctMS4yMy44OC0uMzQuNDEtLjYuOTMtLjc5IDEuNTktLjE4LjY1LS4yOCAxLjQ1LS4yOCAyLjM5djEuOTJjMCAuOTQuMDkgMS43NC4yOCAyLjM5LjE5LjY2LjQ1IDEuMTkuOCAxLjYuMzQuNDEuNzUuNzEgMS4yMy44OS40OC4xOCAxLjAxLjI4IDEuNTkuMjguNTkgMCAxLjEyLS4wOSAxLjU5LS4yOC40OC0uMTguODgtLjQ4IDEuMjItLjg5LjM0LS40MS42LS45NC43OC0xLjYuMTgtLjY1LjI4LTEuNDUuMjgtMi4zOXYtMS45MmMwLS45NC0uMDktMS43NC0uMjgtMi4zOS0uMTgtLjY2LS40NC0xLjE5LS43OC0xLjU5em0tLjkyIDYuMTdjMCAuNi0uMDQgMS4xMS0uMTIgMS41My0uMDguNDItLjIuNzYtLjM2IDEuMDItLjE2LjI2LS4zNi40NS0uNTkuNTctLjIzLjEyLS41MS4xOC0uODIuMTgtLjMgMC0uNTgtLjA2LS44Mi0uMThzLS40NC0uMzEtLjYtLjU3Yy0uMTYtLjI2LS4yOS0uNi0uMzgtMS4wMi0uMDktLjQyLS4xMy0uOTMtLjEzLTEuNTN2LTIuNWMwLS42LjA0LTEuMTEuMTMtMS41Mi4wOS0uNDEuMjEtLjc0LjM4LTEgLjE2LS4yNS4zNi0uNDMuNi0uNTUuMjQtLjExLjUxLS4xNy44MS0uMTcuMzEgMCAuNTguMDYuODEuMTcuMjQuMTEuNDQuMjkuNi41NS4xNi4yNS4yOS41OC4zNy45OS4wOC40MS4xMy45Mi4xMyAxLjUydjIuNTF6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idGltZXItMyI+PHBhdGggZD0iTTExLjYxIDEyLjk3Yy0uMTYtLjI0LS4zNi0uNDYtLjYyLS42NS0uMjUtLjE5LS41Ni0uMzUtLjkzLS40OC4zLS4xNC41Ny0uMy44LS41LjIzLS4yLjQyLS40MS41Ny0uNjQuMTUtLjIzLjI3LS40Ni4zNC0uNzEuMDgtLjI0LjExLS40OS4xMS0uNzMgMC0uNTUtLjA5LTEuMDQtLjI4LTEuNDYtLjE4LS40Mi0uNDQtLjc3LS43OC0xLjA2LS4zMy0uMjgtLjczLS41LTEuMi0uNjQtLjQ1LS4xMy0uOTctLjItMS41My0uMi0uNTUgMC0xLjA2LjA4LTEuNTIuMjQtLjQ3LjE3LS44Ny40LTEuMi42OS0uMzMuMjktLjYuNjMtLjc4IDEuMDMtLjIuMzktLjI5LjgzLS4yOSAxLjI5aDEuOThjMC0uMjYuMDUtLjQ5LjE0LS42OS4wOS0uMi4yMi0uMzguMzgtLjUyLjE3LS4xNC4zNi0uMjUuNTgtLjMzLjIyLS4wOC40Ni0uMTIuNzMtLjEyLjYxIDAgMS4wNi4xNiAxLjM2LjQ3LjMuMzEuNDQuNzUuNDQgMS4zMiAwIC4yNy0uMDQuNTItLjEyLjc0LS4wOC4yMi0uMjEuNDEtLjM4LjU3LS4xNy4xNi0uMzguMjgtLjYzLjM3LS4yNS4wOS0uNTUuMTMtLjg5LjEzSDYuNzJ2MS41N0g3LjljLjM0IDAgLjY0LjA0LjkxLjExLjI3LjA4LjUuMTkuNjkuMzUuMTkuMTYuMzQuMzYuNDQuNjEuMS4yNC4xNi41NC4xNi44NyAwIC42Mi0uMTggMS4wOS0uNTMgMS40Mi0uMzUuMzMtLjg0LjQ5LTEuNDUuNDktLjI5IDAtLjU2LS4wNC0uOC0uMTMtLjI0LS4wOC0uNDQtLjItLjYxLS4zNi0uMTctLjE2LS4zLS4zNC0uMzktLjU2LS4wOS0uMjItLjE0LS40Ni0uMTQtLjcySDQuMTljMCAuNTUuMTEgMS4wMy4zMiAxLjQ1LjIxLjQyLjUuNzcuODYgMS4wNXMuNzcuNDkgMS4yNC42My45Ni4yMSAxLjQ4LjIxYy41NyAwIDEuMDktLjA4IDEuNTgtLjIzLjQ5LS4xNS45MS0uMzggMS4yNi0uNjguMzYtLjMuNjQtLjY2Ljg0LTEuMS4yLS40My4zLS45My4zLTEuNDggMC0uMjktLjA0LS41OC0uMTEtLjg2LS4wOC0uMjUtLjE5LS41MS0uMzUtLjc2em05LjI2IDEuNGMtLjE0LS4yOC0uMzUtLjUzLS42My0uNzQtLjI4LS4yMS0uNjEtLjM5LTEuMDEtLjUzcy0uODUtLjI3LTEuMzUtLjM4Yy0uMzUtLjA3LS42NC0uMTUtLjg3LS4yMy0uMjMtLjA4LS40MS0uMTYtLjU1LS4yNS0uMTQtLjA5LS4yMy0uMTktLjI4LS4zLS4wNS0uMTEtLjA4LS4yNC0uMDgtLjM5cy4wMy0uMjguMDktLjQxYy4wNi0uMTMuMTUtLjI1LjI3LS4zNC4xMi0uMS4yNy0uMTguNDUtLjI0cy40LS4wOS42NC0uMDljLjI1IDAgLjQ3LjA0LjY2LjExLjE5LjA3LjM1LjE3LjQ4LjI5LjEzLjEyLjIyLjI2LjI5LjQyLjA2LjE2LjEuMzIuMS40OWgxLjk1YzAtLjM5LS4wOC0uNzUtLjI0LTEuMDktLjE2LS4zNC0uMzktLjYzLS42OS0uODgtLjMtLjI1LS42Ni0uNDQtMS4wOS0uNTktLjQzLS4xNS0uOTItLjIyLTEuNDYtLjIyLS41MSAwLS45OC4wNy0xLjM5LjIxLS40MS4xNC0uNzcuMzMtMS4wNi41Ny0uMjkuMjQtLjUxLjUyLS42Ny44NC0uMTYuMzItLjIzLjY1LS4yMyAxLjAxcy4wOC42OC4yMy45NmMuMTUuMjguMzcuNTIuNjQuNzMuMjcuMjEuNi4zOC45OC41My4zOC4xNC44MS4yNiAxLjI3LjM2LjM5LjA4LjcxLjE3Ljk1LjI2cy40My4xOS41Ny4yOWMuMTMuMS4yMi4yMi4yNy4zNC4wNS4xMi4wNy4yNS4wNy4zOSAwIC4zMi0uMTMuNTctLjQuNzctLjI3LjItLjY2LjI5LTEuMTcuMjktLjIyIDAtLjQzLS4wMi0uNjQtLjA4LS4yMS0uMDUtLjQtLjEzLS41Ni0uMjQtLjE3LS4xMS0uMy0uMjYtLjQxLS40NC0uMTEtLjE4LS4xNy0uNDEtLjE4LS42N2gtMS44OWMwIC4zNi4wOC43MS4yNCAxLjA1LjE2LjM0LjM5LjY1LjcuOTMuMzEuMjcuNjkuNDkgMS4xNS42Ni40Ni4xNy45OC4yNSAxLjU4LjI1LjUzIDAgMS4wMS0uMDYgMS40NC0uMTkuNDMtLjEzLjgtLjMxIDEuMTEtLjU0LjMxLS4yMy41NC0uNTEuNzEtLjgzLjE3LS4zMi4yNS0uNjcuMjUtMS4wNi0uMDItLjQtLjA5LS43NC0uMjQtMS4wMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJ0aW1lci1vZmYiPjxwYXRoIGQ9Ik0xOS4wNCA0LjU1bC0xLjQyIDEuNDJDMTYuMDcgNC43NCAxNC4xMiA0IDEyIDRjLTEuODMgMC0zLjUzLjU1LTQuOTUgMS40OGwxLjQ2IDEuNDZDOS41MyA2LjM1IDEwLjczIDYgMTIgNmMzLjg3IDAgNyAzLjEzIDcgNyAwIDEuMjctLjM1IDIuNDctLjk0IDMuNDlsMS40NSAxLjQ1QzIwLjQ1IDE2LjUzIDIxIDE0LjgzIDIxIDEzYzAtMi4xMi0uNzQtNC4wNy0xLjk3LTUuNjFsMS40Mi0xLjQyLTEuNDEtMS40MnpNMTUgMUg5djJoNlYxem0tNCA4LjQ0bDIgMlY4aC0ydjEuNDR6TTMuMDIgNEwxLjc1IDUuMjcgNC41IDguMDNDMy41NSA5LjQ1IDMgMTEuMTYgMyAxM2MwIDQuOTcgNC4wMiA5IDkgOSAxLjg0IDAgMy41NS0uNTUgNC45OC0xLjVsMi41IDIuNSAxLjI3LTEuMjctNy43MS03LjcxTDMuMDIgNHpNMTIgMjBjLTMuODcgMC03LTMuMTMtNy03IDAtMS4yOC4zNS0yLjQ4Ljk1LTMuNTJsOS41NiA5LjU2Yy0xLjAzLjYxLTIuMjMuOTYtMy41MS45NnoiPjwvcGF0aD48L2c+CjxnIGlkPSJ0b25hbGl0eSI+PHBhdGggZD0iTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bS0xIDE3LjkzYy0zLjk0LS40OS03LTMuODUtNy03LjkzczMuMDUtNy40NCA3LTcuOTN2MTUuODZ6bTItMTUuODZjMS4wMy4xMyAyIC40NSAyLjg3LjkzSDEzdi0uOTN6TTEzIDdoNS4yNGMuMjUuMzEuNDguNjUuNjggMUgxM1Y3em0wIDNoNi43NGMuMDguMzMuMTUuNjYuMTkgMUgxM3YtMXptMCA5LjkzVjE5aDIuODdjLS44Ny40OC0xLjg0LjgtMi44Ny45M3pNMTguMjQgMTdIMTN2LTFoNS45MmMtLjIuMzUtLjQzLjY5LS42OCAxem0xLjUtM0gxM3YtMWg2LjkzYy0uMDQuMzQtLjExLjY3LS4xOSAxeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InRyYW5zZm9ybSI+PHBhdGggZD0iTTIyIDE4di0ySDhWNGgyTDcgMSA0IDRoMnYySDJ2Mmg0djhjMCAxLjEuOSAyIDIgMmg4djJoLTJsMyAzIDMtM2gtMnYtMmg0ek0xMCA4aDZ2NmgyVjhjMC0xLjEtLjktMi0yLTJoLTZ2MnoiPjwvcGF0aD48L2c+CjxnIGlkPSJ0dW5lIj48cGF0aCBkPSJNMyAxN3YyaDZ2LTJIM3pNMyA1djJoMTBWNUgzem0xMCAxNnYtMmg4di0yaC04di0yaC0ydjZoMnpNNyA5djJIM3YyaDR2MmgyVjlIN3ptMTQgNHYtMkgxMXYyaDEwem0tNi00aDJWN2g0VjVoLTRWM2gtMnY2eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InZpZXctY29tZnkiPjxwYXRoIGQ9Ik0zIDloNFY1SDN2NHptMCA1aDR2LTRIM3Y0em01IDBoNHYtNEg4djR6bTUgMGg0di00aC00djR6TTggOWg0VjVIOHY0em01LTR2NGg0VjVoLTR6bTUgOWg0di00aC00djR6TTMgMTloNHYtNEgzdjR6bTUgMGg0di00SDh2NHptNSAwaDR2LTRoLTR2NHptNSAwaDR2LTRoLTR2NHptMC0xNHY0aDRWNWgtNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJ2aWV3LWNvbXBhY3QiPjxwYXRoIGQ9Ik0zIDE5aDZ2LTdIM3Y3em03IDBoMTJ2LTdIMTB2N3pNMyA1djZoMTlWNUgzeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InZpZ25ldHRlIj48cGF0aCBkPSJNMjEgM0gzYy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS05IDE1Yy00LjQyIDAtOC0yLjY5LTgtNnMzLjU4LTYgOC02IDggMi42OSA4IDYtMy41OCA2LTggNnoiPjwvcGF0aD48L2c+CjxnIGlkPSJ3Yi1hdXRvIj48cGF0aCBkPSJNNi44NSAxMi42NWgyLjNMOCA5bC0xLjE1IDMuNjV6TTIyIDdsLTEuMiA2LjI5TDE5LjMgN2gtMS42bC0xLjQ5IDYuMjlMMTUgN2gtLjc2QzEyLjc3IDUuMTcgMTAuNTMgNCA4IDRjLTQuNDIgMC04IDMuNTgtOCA4czMuNTggOCA4IDhjMy4xMyAwIDUuODQtMS44MSA3LjE1LTQuNDNsLjEuNDNIMTdsMS41LTYuMUwyMCAxNmgxLjc1bDIuMDUtOUgyMnptLTExLjcgOWwtLjctMkg2LjRsLS43IDJIMy44TDcgN2gybDMuMiA5aC0xLjl6Ij48L3BhdGg+PC9nPgo8ZyBpZD0id2ItY2xvdWR5Ij48cGF0aCBkPSJNMTkuMzYgMTAuMDRDMTguNjcgNi41OSAxNS42NCA0IDEyIDQgOS4xMSA0IDYuNiA1LjY0IDUuMzUgOC4wNCAyLjM0IDguMzYgMCAxMC45MSAwIDE0YzAgMy4zMSAyLjY5IDYgNiA2aDEzYzIuNzYgMCA1LTIuMjQgNS01IDAtMi42NC0yLjA1LTQuNzgtNC42NC00Ljk2eiI+PC9wYXRoPjwvZz4KPGcgaWQ9IndiLWluY2FuZGVzY2VudCI+PHBhdGggZD0iTTMuNTUgMTguNTRsMS40MSAxLjQxIDEuNzktMS44LTEuNDEtMS40MS0xLjc5IDEuOHpNMTEgMjIuNDVoMlYxOS41aC0ydjIuOTV6TTQgMTAuNUgxdjJoM3YtMnptMTEtNC4xOVYxLjVIOXY0LjgxQzcuMjEgNy4zNSA2IDkuMjggNiAxMS41YzAgMy4zMSAyLjY5IDYgNiA2czYtMi42OSA2LTZjMC0yLjIyLTEuMjEtNC4xNS0zLTUuMTl6bTUgNC4xOXYyaDN2LTJoLTN6bS0yLjc2IDcuNjZsMS43OSAxLjggMS40MS0xLjQxLTEuOC0xLjc5LTEuNCAxLjR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0id2ItaXJpZGVzY2VudCI+PHBhdGggZD0iTTUgMTQuNWgxNHYtNkg1djZ6TTExIC41NVYzLjVoMlYuNTVoLTJ6bTguMDQgMi41bC0xLjc5IDEuNzkgMS40MSAxLjQxIDEuOC0xLjc5LTEuNDItMS40MXpNMTMgMjIuNDVWMTkuNWgtMnYyLjk1aDJ6bTcuNDUtMy45MWwtMS44LTEuNzktMS40MSAxLjQxIDEuNzkgMS44IDEuNDItMS40MnpNMy41NSA0LjQ2bDEuNzkgMS43OSAxLjQxLTEuNDEtMS43OS0xLjc5LTEuNDEgMS40MXptMS40MSAxNS40OWwxLjc5LTEuOC0xLjQxLTEuNDEtMS43OSAxLjc5IDEuNDEgMS40MnoiPjwvcGF0aD48L2c+CjxnIGlkPSJ3Yi1zdW5ueSI+PHBhdGggZD0iTTYuNzYgNC44NGwtMS44LTEuNzktMS40MSAxLjQxIDEuNzkgMS43OSAxLjQyLTEuNDF6TTQgMTAuNUgxdjJoM3YtMnptOS05Ljk1aC0yVjMuNWgyVi41NXptNy40NSAzLjkxbC0xLjQxLTEuNDEtMS43OSAxLjc5IDEuNDEgMS40MSAxLjc5LTEuNzl6bS0zLjIxIDEzLjdsMS43OSAxLjggMS40MS0xLjQxLTEuOC0xLjc5LTEuNCAxLjR6TTIwIDEwLjV2Mmgzdi0yaC0zem0tOC01Yy0zLjMxIDAtNiAyLjY5LTYgNnMyLjY5IDYgNiA2IDYtMi42OSA2LTYtMi42OS02LTYtNnptLTEgMTYuOTVoMlYxOS41aC0ydjIuOTV6bS03LjQ1LTMuOTFsMS40MSAxLjQxIDEuNzktMS44LTEuNDEtMS40MS0xLjc5IDEuOHoiPjwvcGF0aD48L2c+CjwvZGVmcz48L3N2Zz4KPC9pcm9uLWljb25zZXQtc3ZnPmA7ZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChSby5jb250ZW50KTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE0IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNvbnN0IE9vPXhlYDxpcm9uLWljb25zZXQtc3ZnIG5hbWU9Imljb25zIiBzaXplPSIyNCI+Cjxzdmc+PGRlZnM+CjxnIGlkPSIzZC1yb3RhdGlvbiI+PHBhdGggZD0iTTcuNTIgMjEuNDhDNC4yNSAxOS45NCAxLjkxIDE2Ljc2IDEuNTUgMTNILjA1Qy41NiAxOS4xNiA1LjcxIDI0IDEyIDI0bC42Ni0uMDMtMy44MS0zLjgxLTEuMzMgMS4zMnptLjg5LTYuNTJjLS4xOSAwLS4zNy0uMDMtLjUyLS4wOC0uMTYtLjA2LS4yOS0uMTMtLjQtLjI0LS4xMS0uMS0uMi0uMjItLjI2LS4zNy0uMDYtLjE0LS4wOS0uMy0uMDktLjQ3aC0xLjNjMCAuMzYuMDcuNjguMjEuOTUuMTQuMjcuMzMuNS41Ni42OS4yNC4xOC41MS4zMi44Mi40MS4zLjEuNjIuMTUuOTYuMTUuMzcgMCAuNzItLjA1IDEuMDMtLjE1LjMyLS4xLjYtLjI1LjgzLS40NHMuNDItLjQzLjU1LS43MmMuMTMtLjI5LjItLjYxLjItLjk3IDAtLjE5LS4wMi0uMzgtLjA3LS41Ni0uMDUtLjE4LS4xMi0uMzUtLjIzLS41MS0uMS0uMTYtLjI0LS4zLS40LS40My0uMTctLjEzLS4zNy0uMjMtLjYxLS4zMS4yLS4wOS4zNy0uMi41Mi0uMzMuMTUtLjEzLjI3LS4yNy4zNy0uNDIuMS0uMTUuMTctLjMuMjItLjQ2LjA1LS4xNi4wNy0uMzIuMDctLjQ4IDAtLjM2LS4wNi0uNjgtLjE4LS45Ni0uMTItLjI4LS4yOS0uNTEtLjUxLS42OS0uMi0uMTktLjQ3LS4zMy0uNzctLjQzQzkuMSA4LjA1IDguNzYgOCA4LjM5IDhjLS4zNiAwLS42OS4wNS0xIC4xNi0uMy4xMS0uNTcuMjYtLjc5LjQ1LS4yMS4xOS0uMzguNDEtLjUxLjY3LS4xMi4yNi0uMTguNTQtLjE4Ljg1aDEuM2MwLS4xNy4wMy0uMzIuMDktLjQ1cy4xNC0uMjUuMjUtLjM0Yy4xMS0uMDkuMjMtLjE3LjM4LS4yMi4xNS0uMDUuMy0uMDguNDgtLjA4LjQgMCAuNy4xLjg5LjMxLjE5LjIuMjkuNDkuMjkuODYgMCAuMTgtLjAzLjM0LS4wOC40OS0uMDUuMTUtLjE0LjI3LS4yNS4zNy0uMTEuMS0uMjUuMTgtLjQxLjI0LS4xNi4wNi0uMzYuMDktLjU4LjA5SDcuNXYxLjAzaC43N2MuMjIgMCAuNDIuMDIuNi4wN3MuMzMuMTMuNDUuMjNjLjEyLjExLjIyLjI0LjI5LjQuMDcuMTYuMS4zNS4xLjU3IDAgLjQxLS4xMi43Mi0uMzUuOTMtLjIzLjIzLS41NS4zMy0uOTUuMzN6bTguNTUtNS45MmMtLjMyLS4zMy0uNy0uNTktMS4xNC0uNzctLjQzLS4xOC0uOTItLjI3LTEuNDYtLjI3SDEydjhoMi4zYy41NSAwIDEuMDYtLjA5IDEuNTEtLjI3LjQ1LS4xOC44NC0uNDMgMS4xNi0uNzYuMzItLjMzLjU3LS43My43NC0xLjE5LjE3LS40Ny4yNi0uOTkuMjYtMS41N3YtLjRjMC0uNTgtLjA5LTEuMS0uMjYtMS41Ny0uMTgtLjQ3LS40My0uODctLjc1LTEuMnptLS4zOSAzLjE2YzAgLjQyLS4wNS43OS0uMTQgMS4xMy0uMS4zMy0uMjQuNjItLjQzLjg1LS4xOS4yMy0uNDMuNDEtLjcxLjUzLS4yOS4xMi0uNjIuMTgtLjk5LjE4aC0uOTFWOS4xMmguOTdjLjcyIDAgMS4yNy4yMyAxLjY0LjY5LjM4LjQ2LjU3IDEuMTIuNTcgMS45OXYuNHpNMTIgMGwtLjY2LjAzIDMuODEgMy44MSAxLjMzLTEuMzNjMy4yNyAxLjU1IDUuNjEgNC43MiA1Ljk2IDguNDhoMS41QzIzLjQ0IDQuODQgMTguMjkgMCAxMiAweiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFjY2Vzc2liaWxpdHkiPjxwYXRoIGQ9Ik0xMiAyYzEuMSAwIDIgLjkgMiAycy0uOSAyLTIgMi0yLS45LTItMiAuOS0yIDItMnptOSA3aC02djEzaC0ydi02aC0ydjZIOVY5SDNWN2gxOHYyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFjY2Vzc2libGUiPjxjaXJjbGUgY3g9IjEyIiBjeT0iNCIgcj0iMiI+PC9jaXJjbGU+PHBhdGggZD0iTTE5IDEzdi0yYy0xLjU0LjAyLTMuMDktLjc1LTQuMDctMS44M2wtMS4yOS0xLjQzYy0uMTctLjE5LS4zOC0uMzQtLjYxLS40NS0uMDEgMC0uMDEtLjAxLS4wMi0uMDFIMTNjLS4zNS0uMi0uNzUtLjMtMS4xOS0uMjZDMTAuNzYgNy4xMSAxMCA4LjA0IDEwIDkuMDlWMTVjMCAxLjEuOSAyIDIgMmg1djVoMnYtNS41YzAtMS4xLS45LTItMi0yaC0zdi0zLjQ1YzEuMjkgMS4wNyAzLjI1IDEuOTQgNSAxLjk1em0tNi4xNyA1Yy0uNDEgMS4xNi0xLjUyIDItMi44MyAyLTEuNjYgMC0zLTEuMzQtMy0zIDAtMS4zMS44NC0yLjQxIDItMi44M1YxMi4xYy0yLjI4LjQ2LTQgMi40OC00IDQuOSAwIDIuNzYgMi4yNCA1IDUgNSAyLjQyIDAgNC40NC0xLjcyIDQuOS00aC0yLjA3eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFjY291bnQtYmFsYW5jZSI+PHBhdGggZD0iTTQgMTB2N2gzdi03SDR6bTYgMHY3aDN2LTdoLTN6TTIgMjJoMTl2LTNIMnYzem0xNC0xMnY3aDN2LTdoLTN6bS00LjUtOUwyIDZ2MmgxOVY2bC05LjUtNXoiPjwvcGF0aD48L2c+CjxnIGlkPSJhY2NvdW50LWJhbGFuY2Utd2FsbGV0Ij48cGF0aCBkPSJNMjEgMTh2MWMwIDEuMS0uOSAyLTIgMkg1Yy0xLjExIDAtMi0uOS0yLTJWNWMwLTEuMS44OS0yIDItMmgxNGMxLjEgMCAyIC45IDIgMnYxaC05Yy0xLjExIDAtMiAuOS0yIDJ2OGMwIDEuMS44OSAyIDIgMmg5em0tOS0yaDEwVjhIMTJ2OHptNC0yLjVjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFjY291bnQtYm94Ij48cGF0aCBkPSJNMyA1djE0YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJINWMtMS4xMSAwLTIgLjktMiAyem0xMiA0YzAgMS42Ni0xLjM0IDMtMyAzcy0zLTEuMzQtMy0zIDEuMzQtMyAzLTMgMyAxLjM0IDMgM3ptLTkgOGMwLTIgNC0zLjEgNi0zLjFzNiAxLjEgNiAzLjF2MUg2di0xeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFjY291bnQtY2lyY2xlIj48cGF0aCBkPSJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAzYzEuNjYgMCAzIDEuMzQgMyAzcy0xLjM0IDMtMyAzLTMtMS4zNC0zLTMgMS4zNC0zIDMtM3ptMCAxNC4yYy0yLjUgMC00LjcxLTEuMjgtNi0zLjIyLjAzLTEuOTkgNC0zLjA4IDYtMy4wOCAxLjk5IDAgNS45NyAxLjA5IDYgMy4wOC0xLjI5IDEuOTQtMy41IDMuMjItNiAzLjIyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFkZCI+PHBhdGggZD0iTTE5IDEzaC02djZoLTJ2LTZINXYtMmg2VjVoMnY2aDZ2MnoiPjwvcGF0aD48L2c+CjxnIGlkPSJhZGQtYWxlcnQiPjxwYXRoIGQ9Ik0xMC4wMSAyMS4wMWMwIDEuMS44OSAxLjk5IDEuOTkgMS45OXMxLjk5LS44OSAxLjk5LTEuOTloLTMuOTh6bTguODctNC4xOVYxMWMwLTMuMjUtMi4yNS01Ljk3LTUuMjktNi42OXYtLjcyQzEzLjU5IDIuNzEgMTIuODggMiAxMiAycy0xLjU5LjcxLTEuNTkgMS41OXYuNzJDNy4zNyA1LjAzIDUuMTIgNy43NSA1LjEyIDExdjUuODJMMyAxOC45NFYyMGgxOHYtMS4wNmwtMi4xMi0yLjEyek0xNiAxMy4wMWgtM3YzaC0ydi0zSDhWMTFoM1Y4aDJ2M2gzdjIuMDF6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iYWRkLWJveCI+PHBhdGggZD0iTTE5IDNINWMtMS4xMSAwLTIgLjktMiAydjE0YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS0yIDEwaC00djRoLTJ2LTRIN3YtMmg0VjdoMnY0aDR2MnoiPjwvcGF0aD48L2c+CjxnIGlkPSJhZGQtY2lyY2xlIj48cGF0aCBkPSJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptNSAxMWgtNHY0aC0ydi00SDd2LTJoNFY3aDJ2NGg0djJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iYWRkLWNpcmNsZS1vdXRsaW5lIj48cGF0aCBkPSJNMTMgN2gtMnY0SDd2Mmg0djRoMnYtNGg0di0yaC00Vjd6bS0xLTVDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFkZC1zaG9wcGluZy1jYXJ0Ij48cGF0aCBkPSJNMTEgOWgyVjZoM1Y0aC0zVjFoLTJ2M0g4djJoM3Yzem0tNCA5Yy0xLjEgMC0xLjk5LjktMS45OSAyUzUuOSAyMiA3IDIyczItLjkgMi0yLS45LTItMi0yem0xMCAwYy0xLjEgMC0xLjk5LjktMS45OSAycy44OSAyIDEuOTkgMiAyLS45IDItMi0uOS0yLTItMnptLTkuODMtMy4yNWwuMDMtLjEyLjktMS42M2g3LjQ1Yy43NSAwIDEuNDEtLjQxIDEuNzUtMS4wM2wzLjg2LTcuMDFMMTkuNDIgNGgtLjAxbC0xLjEgMi0yLjc2IDVIOC41M2wtLjEzLS4yN0w2LjE2IDZsLS45NS0yLS45NC0ySDF2MmgybDMuNiA3LjU5LTEuMzUgMi40NWMtLjE2LjI4LS4yNS42MS0uMjUuOTYgMCAxLjEuOSAyIDIgMmgxMnYtMkg3LjQyYy0uMTMgMC0uMjUtLjExLS4yNS0uMjV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iYWxhcm0iPjxwYXRoIGQ9Ik0yMiA1LjcybC00LjYtMy44Ni0xLjI5IDEuNTMgNC42IDMuODZMMjIgNS43MnpNNy44OCAzLjM5TDYuNiAxLjg2IDIgNS43MWwxLjI5IDEuNTMgNC41OS0zLjg1ek0xMi41IDhIMTF2Nmw0Ljc1IDIuODUuNzUtMS4yMy00LTIuMzdWOHpNMTIgNGMtNC45NyAwLTkgNC4wMy05IDlzNC4wMiA5IDkgOWM0Ljk3IDAgOS00LjAzIDktOXMtNC4wMy05LTktOXptMCAxNmMtMy44NyAwLTctMy4xMy03LTdzMy4xMy03IDctNyA3IDMuMTMgNyA3LTMuMTMgNy03IDd6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iYWxhcm0tYWRkIj48cGF0aCBkPSJNNy44OCAzLjM5TDYuNiAxLjg2IDIgNS43MWwxLjI5IDEuNTMgNC41OS0zLjg1ek0yMiA1LjcybC00LjYtMy44Ni0xLjI5IDEuNTMgNC42IDMuODZMMjIgNS43MnpNMTIgNGMtNC45NyAwLTkgNC4wMy05IDlzNC4wMiA5IDkgOWM0Ljk3IDAgOS00LjAzIDktOXMtNC4wMy05LTktOXptMCAxNmMtMy44NyAwLTctMy4xMy03LTdzMy4xMy03IDctNyA3IDMuMTMgNyA3LTMuMTMgNy03IDd6bTEtMTFoLTJ2M0g4djJoM3YzaDJ2LTNoM3YtMmgtM1Y5eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFsYXJtLW9mZiI+PHBhdGggZD0iTTEyIDZjMy44NyAwIDcgMy4xMyA3IDcgMCAuODQtLjE2IDEuNjUtLjQzIDIuNGwxLjUyIDEuNTJjLjU4LTEuMTkuOTEtMi41MS45MS0zLjkyIDAtNC45Ny00LjAzLTktOS05LTEuNDEgMC0yLjczLjMzLTMuOTIuOTFMOS42IDYuNDNDMTAuMzUgNi4xNiAxMS4xNiA2IDEyIDZ6bTEwLS4yOGwtNC42LTMuODYtMS4yOSAxLjUzIDQuNiAzLjg2TDIyIDUuNzJ6TTIuOTIgMi4yOUwxLjY1IDMuNTcgMi45OCA0LjlsLTEuMTEuOTMgMS40MiAxLjQyIDEuMTEtLjk0LjguOEMzLjgzIDguNjkgMyAxMC43NSAzIDEzYzAgNC45NyA0LjAyIDkgOSA5IDIuMjUgMCA0LjMxLS44MyA1Ljg5LTIuMmwyLjIgMi4yIDEuMjctMS4yN0wzLjg5IDMuMjdsLS45Ny0uOTh6bTEzLjU1IDE2LjFDMTUuMjYgMTkuMzkgMTMuNyAyMCAxMiAyMGMtMy44NyAwLTctMy4xMy03LTcgMC0xLjcuNjEtMy4yNiAxLjYxLTQuNDdsOS44NiA5Ljg2ek04LjAyIDMuMjhMNi42IDEuODZsLS44Ni43MSAxLjQyIDEuNDIuODYtLjcxeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFsYXJtLW9uIj48cGF0aCBkPSJNMjIgNS43MmwtNC42LTMuODYtMS4yOSAxLjUzIDQuNiAzLjg2TDIyIDUuNzJ6TTcuODggMy4zOUw2LjYgMS44NiAyIDUuNzFsMS4yOSAxLjUzIDQuNTktMy44NXpNMTIgNGMtNC45NyAwLTkgNC4wMy05IDlzNC4wMiA5IDkgOWM0Ljk3IDAgOS00LjAzIDktOXMtNC4wMy05LTktOXptMCAxNmMtMy44NyAwLTctMy4xMy03LTdzMy4xMy03IDctNyA3IDMuMTMgNyA3LTMuMTMgNy03IDd6bS0xLjQ2LTUuNDdMOC40MSAxMi40bC0xLjA2IDEuMDYgMy4xOCAzLjE4IDYtNi0xLjA2LTEuMDYtNC45MyA0Ljk1eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFsbC1vdXQiPjxwYXRoIGQ9Ik0xNi4yMSA0LjE2bDQgNHYtNHptNCAxMmwtNCA0aDR6bS0xMiA0bC00LTR2NHptLTQtMTJsNC00aC00em0xMi45NS0uOTVjLTIuNzMtMi43My03LjE3LTIuNzMtOS45IDBzLTIuNzMgNy4xNyAwIDkuOSA3LjE3IDIuNzMgOS45IDAgMi43My03LjE2IDAtOS45em0tMS4xIDguOGMtMi4xMyAyLjEzLTUuNTcgMi4xMy03LjcgMHMtMi4xMy01LjU3IDAtNy43IDUuNTctMi4xMyA3LjcgMCAyLjEzIDUuNTcgMCA3Ljd6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iYW5kcm9pZCI+PHBhdGggZD0iTTYgMThjMCAuNTUuNDUgMSAxIDFoMXYzLjVjMCAuODMuNjcgMS41IDEuNSAxLjVzMS41LS42NyAxLjUtMS41VjE5aDJ2My41YzAgLjgzLjY3IDEuNSAxLjUgMS41czEuNS0uNjcgMS41LTEuNVYxOWgxYy41NSAwIDEtLjQ1IDEtMVY4SDZ2MTB6TTMuNSA4QzIuNjcgOCAyIDguNjcgMiA5LjV2N2MwIC44My42NyAxLjUgMS41IDEuNVM1IDE3LjMzIDUgMTYuNXYtN0M1IDguNjcgNC4zMyA4IDMuNSA4em0xNyAwYy0uODMgMC0xLjUuNjctMS41IDEuNXY3YzAgLjgzLjY3IDEuNSAxLjUgMS41czEuNS0uNjcgMS41LTEuNXYtN2MwLS44My0uNjctMS41LTEuNS0xLjV6bS00Ljk3LTUuODRsMS4zLTEuM2MuMi0uMi4yLS41MSAwLS43MS0uMi0uMi0uNTEtLjItLjcxIDBsLTEuNDggMS40OEMxMy44NSAxLjIzIDEyLjk1IDEgMTIgMWMtLjk2IDAtMS44Ni4yMy0yLjY2LjYzTDcuODUuMTVjLS4yLS4yLS41MS0uMi0uNzEgMC0uMi4yLS4yLjUxIDAgLjcxbDEuMzEgMS4zMUM2Ljk3IDMuMjYgNiA1LjAxIDYgN2gxMmMwLTEuOTktLjk3LTMuNzUtMi40Ny00Ljg0ek0xMCA1SDlWNGgxdjF6bTUgMGgtMVY0aDF2MXoiPjwvcGF0aD48L2c+CjxnIGlkPSJhbm5vdW5jZW1lbnQiPjxwYXRoIGQ9Ik0yMCAySDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAyMmw0LTRoMTRjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTcgOWgtMlY1aDJ2NnptMCA0aC0ydi0yaDJ2MnoiPjwvcGF0aD48L2c+CjxnIGlkPSJhcHBzIj48cGF0aCBkPSJNNCA4aDRWNEg0djR6bTYgMTJoNHYtNGgtNHY0em0tNiAwaDR2LTRINHY0em0wLTZoNHYtNEg0djR6bTYgMGg0di00aC00djR6bTYtMTB2NGg0VjRoLTR6bS02IDRoNFY0aC00djR6bTYgNmg0di00aC00djR6bTAgNmg0di00aC00djR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iYXJjaGl2ZSI+PHBhdGggZD0iTTIwLjU0IDUuMjNsLTEuMzktMS42OEMxOC44OCAzLjIxIDE4LjQ3IDMgMTggM0g2Yy0uNDcgMC0uODguMjEtMS4xNi41NUwzLjQ2IDUuMjNDMy4xNyA1LjU3IDMgNi4wMiAzIDYuNVYxOWMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjYuNWMwLS40OC0uMTctLjkzLS40Ni0xLjI3ek0xMiAxNy41TDYuNSAxMkgxMHYtMmg0djJoMy41TDEyIDE3LjV6TTUuMTIgNWwuODEtMWgxMmwuOTQgMUg1LjEyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFycm93LWJhY2siPjxwYXRoIGQ9Ik0yMCAxMUg3LjgzbDUuNTktNS41OUwxMiA0bC04IDggOCA4IDEuNDEtMS40MUw3LjgzIDEzSDIwdi0yeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFycm93LWRvd253YXJkIj48cGF0aCBkPSJNMjAgMTJsLTEuNDEtMS40MUwxMyAxNi4xN1Y0aC0ydjEyLjE3bC01LjU4LTUuNTlMNCAxMmw4IDggOC04eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFycm93LWRyb3AtZG93biI+PHBhdGggZD0iTTcgMTBsNSA1IDUtNXoiPjwvcGF0aD48L2c+CjxnIGlkPSJhcnJvdy1kcm9wLWRvd24tY2lyY2xlIj48cGF0aCBkPSJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxMmwtNC00aDhsLTQgNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJhcnJvdy1kcm9wLXVwIj48cGF0aCBkPSJNNyAxNGw1LTUgNSA1eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFycm93LWZvcndhcmQiPjxwYXRoIGQ9Ik0xMiA0bC0xLjQxIDEuNDFMMTYuMTcgMTFINHYyaDEyLjE3bC01LjU4IDUuNTlMMTIgMjBsOC04eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFycm93LXVwd2FyZCI+PHBhdGggZD0iTTQgMTJsMS40MSAxLjQxTDExIDcuODNWMjBoMlY3LjgzbDUuNTggNS41OUwyMCAxMmwtOC04LTggOHoiPjwvcGF0aD48L2c+CjxnIGlkPSJhc3BlY3QtcmF0aW8iPjxwYXRoIGQ9Ik0xOSAxMmgtMnYzaC0zdjJoNXYtNXpNNyA5aDNWN0g1djVoMlY5em0xNC02SDNjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNi4wMUgzVjQuOTloMTh2MTQuMDJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iYXNzZXNzbWVudCI+PHBhdGggZD0iTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yek05IDE3SDd2LTdoMnY3em00IDBoLTJWN2gydjEwem00IDBoLTJ2LTRoMnY0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFzc2lnbm1lbnQiPjxwYXRoIGQ9Ik0xOSAzaC00LjE4QzE0LjQgMS44NCAxMy4zIDEgMTIgMWMtMS4zIDAtMi40Ljg0LTIuODIgMkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS03IDBjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXptMiAxNEg3di0yaDd2MnptMy00SDd2LTJoMTB2MnptMC00SDdWN2gxMHYyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFzc2lnbm1lbnQtaW5kIj48cGF0aCBkPSJNMTkgM2gtNC4xOEMxNC40IDEuODQgMTMuMyAxIDEyIDFjLTEuMyAwLTIuNC44NC0yLjgyIDJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNyAwYy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6bTAgNGMxLjY2IDAgMyAxLjM0IDMgM3MtMS4zNCAzLTMgMy0zLTEuMzQtMy0zIDEuMzQtMyAzLTN6bTYgMTJINnYtMS40YzAtMiA0LTMuMSA2LTMuMXM2IDEuMSA2IDMuMVYxOXoiPjwvcGF0aD48L2c+CjxnIGlkPSJhc3NpZ25tZW50LWxhdGUiPjxwYXRoIGQ9Ik0xOSAzaC00LjE4QzE0LjQgMS44NCAxMy4zIDEgMTIgMWMtMS4zIDAtMi40Ljg0LTIuODIgMkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS02IDE1aC0ydi0yaDJ2MnptMC00aC0yVjhoMnY2em0tMS05Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iYXNzaWdubWVudC1yZXR1cm4iPjxwYXRoIGQ9Ik0xOSAzaC00LjE4QzE0LjQgMS44NCAxMy4zIDEgMTIgMWMtMS4zIDAtMi40Ljg0LTIuODIgMkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS03IDBjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXptNCAxMmgtNHYzbC01LTUgNS01djNoNHY0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFzc2lnbm1lbnQtcmV0dXJuZWQiPjxwYXRoIGQ9Ik0xOSAzaC00LjE4QzE0LjQgMS44NCAxMy4zIDEgMTIgMWMtMS4zIDAtMi40Ljg0LTIuODIgMkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS03IDBjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXptMCAxNWwtNS01aDNWOWg0djRoM2wtNSA1eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFzc2lnbm1lbnQtdHVybmVkLWluIj48cGF0aCBkPSJNMTkgM2gtNC4xOEMxNC40IDEuODQgMTMuMyAxIDEyIDFjLTEuMyAwLTIuNC44NC0yLjgyIDJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNyAwYy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6bS0yIDE0bC00LTQgMS40MS0xLjQxTDEwIDE0LjE3bDYuNTktNi41OUwxOCA5bC04IDh6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iYXR0YWNobWVudCI+PHBhdGggZD0iTTIgMTIuNUMyIDkuNDYgNC40NiA3IDcuNSA3SDE4YzIuMjEgMCA0IDEuNzkgNCA0cy0xLjc5IDQtNCA0SDkuNUM4LjEyIDE1IDcgMTMuODggNyAxMi41UzguMTIgMTAgOS41IDEwSDE3djJIOS40MWMtLjU1IDAtLjU1IDEgMCAxSDE4YzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMkg3LjVDNS41NyA5IDQgMTAuNTcgNCAxMi41UzUuNTcgMTYgNy41IDE2SDE3djJINy41QzQuNDYgMTggMiAxNS41NCAyIDEyLjV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iYXV0b3JlbmV3Ij48cGF0aCBkPSJNMTIgNnYzbDQtNC00LTR2M2MtNC40MiAwLTggMy41OC04IDggMCAxLjU3LjQ2IDMuMDMgMS4yNCA0LjI2TDYuNyAxNC44Yy0uNDUtLjgzLS43LTEuNzktLjctMi44IDAtMy4zMSAyLjY5LTYgNi02em02Ljc2IDEuNzRMMTcuMyA5LjJjLjQ0Ljg0LjcgMS43OS43IDIuOCAwIDMuMzEtMi42OSA2LTYgNnYtM2wtNCA0IDQgNHYtM2M0LjQyIDAgOC0zLjU4IDgtOCAwLTEuNTctLjQ2LTMuMDMtMS4yNC00LjI2eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImJhY2tzcGFjZSI+PHBhdGggZD0iTTIyIDNIN2MtLjY5IDAtMS4yMy4zNS0xLjU5Ljg4TDAgMTJsNS40MSA4LjExYy4zNi41My45Ljg5IDEuNTkuODloMTVjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTMgMTIuNTlMMTcuNTkgMTcgMTQgMTMuNDEgMTAuNDEgMTcgOSAxNS41OSAxMi41OSAxMiA5IDguNDEgMTAuNDEgNyAxNCAxMC41OSAxNy41OSA3IDE5IDguNDEgMTUuNDEgMTIgMTkgMTUuNTl6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iYmFja3VwIj48cGF0aCBkPSJNMTkuMzUgMTAuMDRDMTguNjcgNi41OSAxNS42NCA0IDEyIDQgOS4xMSA0IDYuNiA1LjY0IDUuMzUgOC4wNCAyLjM0IDguMzYgMCAxMC45MSAwIDE0YzAgMy4zMSAyLjY5IDYgNiA2aDEzYzIuNzYgMCA1LTIuMjQgNS01IDAtMi42NC0yLjA1LTQuNzgtNC42NS00Ljk2ek0xNCAxM3Y0aC00di00SDdsNS01IDUgNWgtM3oiPjwvcGF0aD48L2c+CjxnIGlkPSJibG9jayI+PHBhdGggZD0iTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6TTQgMTJjMC00LjQyIDMuNTgtOCA4LTggMS44NSAwIDMuNTUuNjMgNC45IDEuNjlMNS42OSAxNi45QzQuNjMgMTUuNTUgNCAxMy44NSA0IDEyem04IDhjLTEuODUgMC0zLjU1LS42My00LjktMS42OUwxOC4zMSA3LjFDMTkuMzcgOC40NSAyMCAxMC4xNSAyMCAxMmMwIDQuNDItMy41OCA4LTggOHoiPjwvcGF0aD48L2c+CjxnIGlkPSJib29rIj48cGF0aCBkPSJNMTggMkg2Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6TTYgNGg1djhsLTIuNS0xLjVMNiAxMlY0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImJvb2ttYXJrIj48cGF0aCBkPSJNMTcgM0g3Yy0xLjEgMC0xLjk5LjktMS45OSAyTDUgMjFsNy0zIDcgM1Y1YzAtMS4xLS45LTItMi0yeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImJvb2ttYXJrLWJvcmRlciI+PHBhdGggZD0iTTE3IDNIN2MtMS4xIDAtMS45OS45LTEuOTkgMkw1IDIxbDctMyA3IDNWNWMwLTEuMS0uOS0yLTItMnptMCAxNWwtNS0yLjE4TDcgMThWNWgxMHYxM3oiPjwvcGF0aD48L2c+CjxnIGlkPSJidWctcmVwb3J0Ij48cGF0aCBkPSJNMjAgOGgtMi44MWMtLjQ1LS43OC0xLjA3LTEuNDUtMS44Mi0xLjk2TDE3IDQuNDEgMTUuNTkgM2wtMi4xNyAyLjE3QzEyLjk2IDUuMDYgMTIuNDkgNSAxMiA1Yy0uNDkgMC0uOTYuMDYtMS40MS4xN0w4LjQxIDMgNyA0LjQxbDEuNjIgMS42M0M3Ljg4IDYuNTUgNy4yNiA3LjIyIDYuODEgOEg0djJoMi4wOWMtLjA1LjMzLS4wOS42Ni0uMDkgMXYxSDR2MmgydjFjMCAuMzQuMDQuNjcuMDkgMUg0djJoMi44MWMxLjA0IDEuNzkgMi45NyAzIDUuMTkgM3M0LjE1LTEuMjEgNS4xOS0zSDIwdi0yaC0yLjA5Yy4wNS0uMzMuMDktLjY2LjA5LTF2LTFoMnYtMmgtMnYtMWMwLS4zNC0uMDQtLjY3LS4wOS0xSDIwVjh6bS02IDhoLTR2LTJoNHYyem0wLTRoLTR2LTJoNHYyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImJ1aWxkIj48cGF0aCBkPSJNMjIuNyAxOWwtOS4xLTkuMWMuOS0yLjMuNC01LTEuNS02LjktMi0yLTUtMi40LTcuNC0xLjNMOSA2IDYgOSAxLjYgNC43Qy40IDcuMS45IDEwLjEgMi45IDEyLjFjMS45IDEuOSA0LjYgMi40IDYuOSAxLjVsOS4xIDkuMWMuNC40IDEgLjQgMS40IDBsMi4zLTIuM2MuNS0uNC41LTEuMS4xLTEuNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJjYWNoZWQiPjxwYXRoIGQ9Ik0xOSA4bC00IDRoM2MwIDMuMzEtMi42OSA2LTYgNi0xLjAxIDAtMS45Ny0uMjUtMi44LS43bC0xLjQ2IDEuNDZDOC45NyAxOS41NCAxMC40MyAyMCAxMiAyMGM0LjQyIDAgOC0zLjU4IDgtOGgzbC00LTR6TTYgMTJjMC0zLjMxIDIuNjktNiA2LTYgMS4wMSAwIDEuOTcuMjUgMi44LjdsMS40Ni0xLjQ2QzE1LjAzIDQuNDYgMTMuNTcgNCAxMiA0Yy00LjQyIDAtOCAzLjU4LTggOEgxbDQgNCA0LTRINnoiPjwvcGF0aD48L2c+CjxnIGlkPSJjYW1lcmEtZW5oYW5jZSI+PHBhdGggZD0iTTkgM0w3LjE3IDVINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY3YzAtMS4xLS45LTItMi0yaC0zLjE3TDE1IDNIOXptMyAxNWMtMi43NiAwLTUtMi4yNC01LTVzMi4yNC01IDUtNSA1IDIuMjQgNSA1LTIuMjQgNS01IDV6bTAtMWwxLjI1LTIuNzVMMTYgMTNsLTIuNzUtMS4yNUwxMiA5bC0xLjI1IDIuNzVMOCAxM2wyLjc1IDEuMjV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY2FuY2VsIj48cGF0aCBkPSJNMTIgMkM2LjQ3IDIgMiA2LjQ3IDIgMTJzNC40NyAxMCAxMCAxMCAxMC00LjQ3IDEwLTEwUzE3LjUzIDIgMTIgMnptNSAxMy41OUwxNS41OSAxNyAxMiAxMy40MSA4LjQxIDE3IDcgMTUuNTkgMTAuNTkgMTIgNyA4LjQxIDguNDEgNyAxMiAxMC41OSAxNS41OSA3IDE3IDguNDEgMTMuNDEgMTIgMTcgMTUuNTl6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY2FyZC1naWZ0Y2FyZCI+PHBhdGggZD0iTTIwIDZoLTIuMThjLjExLS4zMS4xOC0uNjUuMTgtMSAwLTEuNjYtMS4zNC0zLTMtMy0xLjA1IDAtMS45Ni41NC0yLjUgMS4zNWwtLjUuNjctLjUtLjY4QzEwLjk2IDIuNTQgMTAuMDUgMiA5IDIgNy4zNCAyIDYgMy4zNCA2IDVjMCAuMzUuMDcuNjkuMTggMUg0Yy0xLjExIDAtMS45OS44OS0xLjk5IDJMMiAxOWMwIDEuMTEuODkgMiAyIDJoMTZjMS4xMSAwIDItLjg5IDItMlY4YzAtMS4xMS0uODktMi0yLTJ6bS01LTJjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXpNOSA0Yy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6bTExIDE1SDR2LTJoMTZ2MnptMC01SDRWOGg1LjA4TDcgMTAuODMgOC42MiAxMiAxMSA4Ljc2bDEtMS4zNiAxIDEuMzZMMTUuMzggMTIgMTcgMTAuODMgMTQuOTIgOEgyMHY2eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNhcmQtbWVtYmVyc2hpcCI+PHBhdGggZD0iTTIwIDJINGMtMS4xMSAwLTIgLjg5LTIgMnYxMWMwIDEuMTEuODkgMiAyIDJoNHY1bDQtMiA0IDJ2LTVoNGMxLjExIDAgMi0uODkgMi0yVjRjMC0xLjExLS44OS0yLTItMnptMCAxM0g0di0yaDE2djJ6bTAtNUg0VjRoMTZ2NnoiPjwvcGF0aD48L2c+CjxnIGlkPSJjYXJkLXRyYXZlbCI+PHBhdGggZD0iTTIwIDZoLTNWNGMwLTEuMTEtLjg5LTItMi0ySDljLTEuMTEgMC0yIC44OS0yIDJ2Mkg0Yy0xLjExIDAtMiAuODktMiAydjExYzAgMS4xMS44OSAyIDIgMmgxNmMxLjExIDAgMi0uODkgMi0yVjhjMC0xLjExLS44OS0yLTItMnpNOSA0aDZ2Mkg5VjR6bTExIDE1SDR2LTJoMTZ2MnptMC01SDRWOGgzdjJoMlY4aDZ2MmgyVjhoM3Y2eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNoYW5nZS1oaXN0b3J5Ij48cGF0aCBkPSJNMTIgNy43N0wxOC4zOSAxOEg1LjYxTDEyIDcuNzdNMTIgNEwyIDIwaDIwTDEyIDR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY2hlY2siPjxwYXRoIGQ9Ik05IDE2LjE3TDQuODMgMTJsLTEuNDIgMS40MUw5IDE5IDIxIDdsLTEuNDEtMS40MXoiPjwvcGF0aD48L2c+CjxnIGlkPSJjaGVjay1ib3giPjxwYXRoIGQ9Ik0xOSAzSDVjLTEuMTEgMC0yIC45LTIgMnYxNGMwIDEuMS44OSAyIDIgMmgxNGMxLjExIDAgMi0uOSAyLTJWNWMwLTEuMS0uODktMi0yLTJ6bS05IDE0bC01LTUgMS40MS0xLjQxTDEwIDE0LjE3bDcuNTktNy41OUwxOSA4bC05IDl6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY2hlY2stYm94LW91dGxpbmUtYmxhbmsiPjxwYXRoIGQ9Ik0xOSA1djE0SDVWNWgxNG0wLTJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNoZWNrLWNpcmNsZSI+PHBhdGggZD0iTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bS0yIDE1bC01LTUgMS40MS0xLjQxTDEwIDE0LjE3bDcuNTktNy41OUwxOSA4bC05IDl6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY2hldnJvbi1sZWZ0Ij48cGF0aCBkPSJNMTUuNDEgNy40MUwxNCA2bC02IDYgNiA2IDEuNDEtMS40MUwxMC44MyAxMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJjaGV2cm9uLXJpZ2h0Ij48cGF0aCBkPSJNMTAgNkw4LjU5IDcuNDEgMTMuMTcgMTJsLTQuNTggNC41OUwxMCAxOGw2LTZ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY2hyb21lLXJlYWRlci1tb2RlIj48cGF0aCBkPSJNMTMgMTJoN3YxLjVoLTd6bTAtMi41aDdWMTFoLTd6bTAgNWg3VjE2aC03ek0yMSA0SDNjLTEuMSAwLTIgLjktMiAydjEzYzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptMCAxNWgtOVY2aDl2MTN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY2xhc3MiPjxwYXRoIGQ9Ik0xOCAySDZjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnpNNiA0aDV2OGwtMi41LTEuNUw2IDEyVjR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY2xlYXIiPjxwYXRoIGQ9Ik0xOSA2LjQxTDE3LjU5IDUgMTIgMTAuNTkgNi40MSA1IDUgNi40MSAxMC41OSAxMiA1IDE3LjU5IDYuNDEgMTkgMTIgMTMuNDEgMTcuNTkgMTkgMTkgMTcuNTkgMTMuNDEgMTJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY2xvc2UiPjxwYXRoIGQ9Ik0xOSA2LjQxTDE3LjU5IDUgMTIgMTAuNTkgNi40MSA1IDUgNi40MSAxMC41OSAxMiA1IDE3LjU5IDYuNDEgMTkgMTIgMTMuNDEgMTcuNTkgMTkgMTkgMTcuNTkgMTMuNDEgMTJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY2xvdWQiPjxwYXRoIGQ9Ik0xOS4zNSAxMC4wNEMxOC42NyA2LjU5IDE1LjY0IDQgMTIgNCA5LjExIDQgNi42IDUuNjQgNS4zNSA4LjA0IDIuMzQgOC4zNiAwIDEwLjkxIDAgMTRjMCAzLjMxIDIuNjkgNiA2IDZoMTNjMi43NiAwIDUtMi4yNCA1LTUgMC0yLjY0LTIuMDUtNC43OC00LjY1LTQuOTZ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY2xvdWQtY2lyY2xlIj48cGF0aCBkPSJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptNC41IDE0SDhjLTEuNjYgMC0zLTEuMzQtMy0zczEuMzQtMyAzLTNsLjE0LjAxQzguNTggOC4yOCAxMC4xMyA3IDEyIDdjMi4yMSAwIDQgMS43OSA0IDRoLjVjMS4zOCAwIDIuNSAxLjEyIDIuNSAyLjVTMTcuODggMTYgMTYuNSAxNnoiPjwvcGF0aD48L2c+CjxnIGlkPSJjbG91ZC1kb25lIj48cGF0aCBkPSJNMTkuMzUgMTAuMDRDMTguNjcgNi41OSAxNS42NCA0IDEyIDQgOS4xMSA0IDYuNiA1LjY0IDUuMzUgOC4wNCAyLjM0IDguMzYgMCAxMC45MSAwIDE0YzAgMy4zMSAyLjY5IDYgNiA2aDEzYzIuNzYgMCA1LTIuMjQgNS01IDAtMi42NC0yLjA1LTQuNzgtNC42NS00Ljk2ek0xMCAxN2wtMy41LTMuNSAxLjQxLTEuNDFMMTAgMTQuMTcgMTUuMTggOWwxLjQxIDEuNDFMMTAgMTd6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY2xvdWQtZG93bmxvYWQiPjxwYXRoIGQ9Ik0xOS4zNSAxMC4wNEMxOC42NyA2LjU5IDE1LjY0IDQgMTIgNCA5LjExIDQgNi42IDUuNjQgNS4zNSA4LjA0IDIuMzQgOC4zNiAwIDEwLjkxIDAgMTRjMCAzLjMxIDIuNjkgNiA2IDZoMTNjMi43NiAwIDUtMi4yNCA1LTUgMC0yLjY0LTIuMDUtNC43OC00LjY1LTQuOTZ6TTE3IDEzbC01IDUtNS01aDNWOWg0djRoM3oiPjwvcGF0aD48L2c+CjxnIGlkPSJjbG91ZC1vZmYiPjxwYXRoIGQ9Ik0xOS4zNSAxMC4wNEMxOC42NyA2LjU5IDE1LjY0IDQgMTIgNGMtMS40OCAwLTIuODUuNDMtNC4wMSAxLjE3bDEuNDYgMS40NkMxMC4yMSA2LjIzIDExLjA4IDYgMTIgNmMzLjA0IDAgNS41IDIuNDYgNS41IDUuNXYuNUgxOWMxLjY2IDAgMyAxLjM0IDMgMyAwIDEuMTMtLjY0IDIuMTEtMS41NiAyLjYybDEuNDUgMS40NUMyMy4xNiAxOC4xNiAyNCAxNi42OCAyNCAxNWMwLTIuNjQtMi4wNS00Ljc4LTQuNjUtNC45NnpNMyA1LjI3bDIuNzUgMi43NEMyLjU2IDguMTUgMCAxMC43NyAwIDE0YzAgMy4zMSAyLjY5IDYgNiA2aDExLjczbDIgMkwyMSAyMC43MyA0LjI3IDQgMyA1LjI3ek03LjczIDEwbDggOEg2Yy0yLjIxIDAtNC0xLjc5LTQtNHMxLjc5LTQgNC00aDEuNzN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY2xvdWQtcXVldWUiPjxwYXRoIGQ9Ik0xOS4zNSAxMC4wNEMxOC42NyA2LjU5IDE1LjY0IDQgMTIgNCA5LjExIDQgNi42IDUuNjQgNS4zNSA4LjA0IDIuMzQgOC4zNiAwIDEwLjkxIDAgMTRjMCAzLjMxIDIuNjkgNiA2IDZoMTNjMi43NiAwIDUtMi4yNCA1LTUgMC0yLjY0LTIuMDUtNC43OC00LjY1LTQuOTZ6TTE5IDE4SDZjLTIuMjEgMC00LTEuNzktNC00czEuNzktNCA0LTRoLjcxQzcuMzcgNy42OSA5LjQ4IDYgMTIgNmMzLjA0IDAgNS41IDIuNDYgNS41IDUuNXYuNUgxOWMxLjY2IDAgMyAxLjM0IDMgM3MtMS4zNCAzLTMgM3oiPjwvcGF0aD48L2c+CjxnIGlkPSJjbG91ZC11cGxvYWQiPjxwYXRoIGQ9Ik0xOS4zNSAxMC4wNEMxOC42NyA2LjU5IDE1LjY0IDQgMTIgNCA5LjExIDQgNi42IDUuNjQgNS4zNSA4LjA0IDIuMzQgOC4zNiAwIDEwLjkxIDAgMTRjMCAzLjMxIDIuNjkgNiA2IDZoMTNjMi43NiAwIDUtMi4yNCA1LTUgMC0yLjY0LTIuMDUtNC43OC00LjY1LTQuOTZ6TTE0IDEzdjRoLTR2LTRIN2w1LTUgNSA1aC0zeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNvZGUiPjxwYXRoIGQ9Ik05LjQgMTYuNkw0LjggMTJsNC42LTQuNkw4IDZsLTYgNiA2IDYgMS40LTEuNHptNS4yIDBsNC42LTQuNi00LjYtNC42TDE2IDZsNiA2LTYgNi0xLjQtMS40eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNvbXBhcmUtYXJyb3dzIj48cGF0aCBkPSJNOS4wMSAxNEgydjJoNy4wMXYzTDEzIDE1bC0zLjk5LTR2M3ptNS45OC0xdi0zSDIyVjhoLTcuMDFWNUwxMSA5bDMuOTkgNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJjb250ZW50LWNvcHkiPjxwYXRoIGQ9Ik0xNiAxSDRjLTEuMSAwLTIgLjktMiAydjE0aDJWM2gxMlYxem0zIDRIOGMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxMWMxLjEgMCAyLS45IDItMlY3YzAtMS4xLS45LTItMi0yem0wIDE2SDhWN2gxMXYxNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJjb250ZW50LWN1dCI+PHBhdGggZD0iTTkuNjQgNy42NGMuMjMtLjUuMzYtMS4wNS4zNi0xLjY0IDAtMi4yMS0xLjc5LTQtNC00UzIgMy43OSAyIDZzMS43OSA0IDQgNGMuNTkgMCAxLjE0LS4xMyAxLjY0LS4zNkwxMCAxMmwtMi4zNiAyLjM2QzcuMTQgMTQuMTMgNi41OSAxNCA2IDE0Yy0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0IDQtMS43OSA0LTRjMC0uNTktLjEzLTEuMTQtLjM2LTEuNjRMMTIgMTRsNyA3aDN2LTFMOS42NCA3LjY0ek02IDhjLTEuMSAwLTItLjg5LTItMnMuOS0yIDItMiAyIC44OSAyIDItLjkgMi0yIDJ6bTAgMTJjLTEuMSAwLTItLjg5LTItMnMuOS0yIDItMiAyIC44OSAyIDItLjkgMi0yIDJ6bTYtNy41Yy0uMjggMC0uNS0uMjItLjUtLjVzLjIyLS41LjUtLjUuNS4yMi41LjUtLjIyLjUtLjUuNXpNMTkgM2wtNiA2IDIgMiA3LTdWM3oiPjwvcGF0aD48L2c+CjxnIGlkPSJjb250ZW50LXBhc3RlIj48cGF0aCBkPSJNMTkgMmgtNC4xOEMxNC40Ljg0IDEzLjMgMCAxMiAwYy0xLjMgMC0yLjQuODQtMi44MiAySDVjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTcgMGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem03IDE4SDVWNGgydjNoMTBWNGgydjE2eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNvcHlyaWdodCI+PHBhdGggZD0iTTEwLjA4IDEwLjg2Yy4wNS0uMzMuMTYtLjYyLjMtLjg3cy4zNC0uNDYuNTktLjYyYy4yNC0uMTUuNTQtLjIyLjkxLS4yMy4yMy4wMS40NC4wNS42My4xMy4yLjA5LjM4LjIxLjUyLjM2cy4yNS4zMy4zNC41My4xMy40Mi4xNC42NGgxLjc5Yy0uMDItLjQ3LS4xMS0uOS0uMjgtMS4yOXMtLjQtLjczLS43LTEuMDEtLjY2LS41LTEuMDgtLjY2LS44OC0uMjMtMS4zOS0uMjNjLS42NSAwLTEuMjIuMTEtMS43LjM0cy0uODguNTMtMS4yLjkyLS41Ni44NC0uNzEgMS4zNlM4IDExLjI5IDggMTEuODd2LjI3YzAgLjU4LjA4IDEuMTIuMjMgMS42NHMuMzkuOTcuNzEgMS4zNS43Mi42OSAxLjIuOTEgMS4wNS4zNCAxLjcuMzRjLjQ3IDAgLjkxLS4wOCAxLjMyLS4yM3MuNzctLjM2IDEuMDgtLjYzLjU2LS41OC43NC0uOTQuMjktLjc0LjMtMS4xNWgtMS43OWMtLjAxLjIxLS4wNi40LS4xNS41OHMtLjIxLjMzLS4zNi40Ni0uMzIuMjMtLjUyLjNjLS4xOS4wNy0uMzkuMDktLjYuMS0uMzYtLjAxLS42Ni0uMDgtLjg5LS4yMy0uMjUtLjE2LS40NS0uMzctLjU5LS42MnMtLjI1LS41NS0uMy0uODgtLjA4LS42Ny0uMDgtMXYtLjI3YzAtLjM1LjAzLS42OC4wOC0xLjAxek0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHoiPjwvcGF0aD48L2c+CjxnIGlkPSJjcmVhdGUiPjxwYXRoIGQ9Ik0zIDE3LjI1VjIxaDMuNzVMMTcuODEgOS45NGwtMy43NS0zLjc1TDMgMTcuMjV6TTIwLjcxIDcuMDRjLjM5LS4zOS4zOS0xLjAyIDAtMS40MWwtMi4zNC0yLjM0Yy0uMzktLjM5LTEuMDItLjM5LTEuNDEgMGwtMS44MyAxLjgzIDMuNzUgMy43NSAxLjgzLTEuODN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY3JlYXRlLW5ldy1mb2xkZXIiPjxwYXRoIGQ9Ik0yMCA2aC04bC0yLTJINGMtMS4xMSAwLTEuOTkuODktMS45OSAyTDIgMThjMCAxLjExLjg5IDIgMiAyaDE2YzEuMTEgMCAyLS44OSAyLTJWOGMwLTEuMTEtLjg5LTItMi0yem0tMSA4aC0zdjNoLTJ2LTNoLTN2LTJoM1Y5aDJ2M2gzdjJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY3JlZGl0LWNhcmQiPjxwYXRoIGQ9Ik0yMCA0SDRjLTEuMTEgMC0xLjk5Ljg5LTEuOTkgMkwyIDE4YzAgMS4xMS44OSAyIDIgMmgxNmMxLjExIDAgMi0uODkgMi0yVjZjMC0xLjExLS44OS0yLTItMnptMCAxNEg0di02aDE2djZ6bTAtMTBINFY2aDE2djJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZGFzaGJvYXJkIj48cGF0aCBkPSJNMyAxM2g4VjNIM3YxMHptMCA4aDh2LTZIM3Y2em0xMCAwaDhWMTFoLTh2MTB6bTAtMTh2Nmg4VjNoLTh6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZGF0ZS1yYW5nZSI+PHBhdGggZD0iTTkgMTFIN3YyaDJ2LTJ6bTQgMGgtMnYyaDJ2LTJ6bTQgMGgtMnYyaDJ2LTJ6bTItN2gtMVYyaC0ydjJIOFYySDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDIwYzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY5aDE0djExeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImRlbGV0ZSI+PHBhdGggZD0iTTYgMTljMCAxLjEuOSAyIDIgMmg4YzEuMSAwIDItLjkgMi0yVjdINnYxMnpNMTkgNGgtMy41bC0xLTFoLTVsLTEgMUg1djJoMTRWNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJkZWxldGUtZm9yZXZlciI+PHBhdGggZD0iTTYgMTljMCAxLjEuOSAyIDIgMmg4YzEuMSAwIDItLjkgMi0yVjdINnYxMnptMi40Ni03LjEybDEuNDEtMS40MUwxMiAxMi41OWwyLjEyLTIuMTIgMS40MSAxLjQxTDEzLjQxIDE0bDIuMTIgMi4xMi0xLjQxIDEuNDFMMTIgMTUuNDFsLTIuMTIgMi4xMi0xLjQxLTEuNDFMMTAuNTkgMTRsLTIuMTMtMi4xMnpNMTUuNSA0bC0xLTFoLTVsLTEgMUg1djJoMTRWNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJkZWxldGUtc3dlZXAiPjxwYXRoIGQ9Ik0xNSAxNmg0djJoLTR6bTAtOGg3djJoLTd6bTAgNGg2djJoLTZ6TTMgMThjMCAxLjEuOSAyIDIgMmg2YzEuMSAwIDItLjkgMi0yVjhIM3YxMHpNMTQgNWgtM2wtMS0xSDZMNSA1SDJ2MmgxMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJkZXNjcmlwdGlvbiI+PHBhdGggZD0iTTE0IDJINmMtMS4xIDAtMS45OS45LTEuOTkgMkw0IDIwYzAgMS4xLjg5IDIgMS45OSAySDE4YzEuMSAwIDItLjkgMi0yVjhsLTYtNnptMiAxNkg4di0yaDh2MnptMC00SDh2LTJoOHYyem0tMy01VjMuNUwxOC41IDlIMTN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZG5zIj48cGF0aCBkPSJNMjAgMTNINGMtLjU1IDAtMSAuNDUtMSAxdjZjMCAuNTUuNDUgMSAxIDFoMTZjLjU1IDAgMS0uNDUgMS0xdi02YzAtLjU1LS40NS0xLTEtMXpNNyAxOWMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6TTIwIDNINGMtLjU1IDAtMSAuNDUtMSAxdjZjMCAuNTUuNDUgMSAxIDFoMTZjLjU1IDAgMS0uNDUgMS0xVjRjMC0uNTUtLjQ1LTEtMS0xek03IDljLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImRvbmUiPjxwYXRoIGQ9Ik05IDE2LjJMNC44IDEybC0xLjQgMS40TDkgMTkgMjEgN2wtMS40LTEuNEw5IDE2LjJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZG9uZS1hbGwiPjxwYXRoIGQ9Ik0xOCA3bC0xLjQxLTEuNDEtNi4zNCA2LjM0IDEuNDEgMS40MUwxOCA3em00LjI0LTEuNDFMMTEuNjYgMTYuMTcgNy40OCAxMmwtMS40MSAxLjQxTDExLjY2IDE5bDEyLTEyLTEuNDItMS40MXpNLjQxIDEzLjQxTDYgMTlsMS40MS0xLjQxTDEuODMgMTIgLjQxIDEzLjQxeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImRvbnV0LWxhcmdlIj48cGF0aCBkPSJNMTEgNS4wOFYyYy01IC41LTkgNC44MS05IDEwczQgOS41IDkgMTB2LTMuMDhjLTMtLjQ4LTYtMy40LTYtNi45MnMzLTYuNDQgNi02Ljkyek0xOC45NyAxMUgyMmMtLjQ3LTUtNC04LjUzLTktOXYzLjA4QzE2IDUuNTEgMTguNTQgOCAxOC45NyAxMXpNMTMgMTguOTJWMjJjNS0uNDcgOC41My00IDktOWgtMy4wM2MtLjQzIDMtMi45NyA1LjQ5LTUuOTcgNS45MnoiPjwvcGF0aD48L2c+CjxnIGlkPSJkb251dC1zbWFsbCI+PHBhdGggZD0iTTExIDkuMTZWMmMtNSAuNS05IDQuNzktOSAxMHM0IDkuNSA5IDEwdi03LjE2Yy0xLS40MS0yLTEuNTItMi0yLjg0czEtMi40MyAyLTIuODR6TTE0Ljg2IDExSDIyYy0uNDgtNC43NS00LTguNTMtOS05djcuMTZjMSAuMyAxLjUyLjk4IDEuODYgMS44NHpNMTMgMTQuODRWMjJjNS0uNDcgOC41Mi00LjI1IDktOWgtNy4xNGMtLjM0Ljg2LS44NiAxLjU0LTEuODYgMS44NHoiPjwvcGF0aD48L2c+CjxnIGlkPSJkcmFmdHMiPjxwYXRoIGQ9Ik0yMS45OSA4YzAtLjcyLS4zNy0xLjM1LS45NC0xLjdMMTIgMSAyLjk1IDYuM0MyLjM4IDYuNjUgMiA3LjI4IDIgOHYxMGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0ybC0uMDEtMTB6TTEyIDEzTDMuNzQgNy44NCAxMiAzbDguMjYgNC44NEwxMiAxM3oiPjwvcGF0aD48L2c+CjxnIGlkPSJlamVjdCI+PHBhdGggZD0iTTUgMTdoMTR2Mkg1em03LTEyTDUuMzMgMTVoMTMuMzR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZXJyb3IiPjxwYXRoIGQ9Ik0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0xIDE1aC0ydi0yaDJ2MnptMC00aC0yVjdoMnY2eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImVycm9yLW91dGxpbmUiPjxwYXRoIGQ9Ik0xMSAxNWgydjJoLTJ6bTAtOGgydjZoLTJ6bS45OS01QzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJTMTcuNTIgMiAxMS45OSAyek0xMiAyMGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZXVyby1zeW1ib2wiPjxwYXRoIGQ9Ik0xNSAxOC41Yy0yLjUxIDAtNC42OC0xLjQyLTUuNzYtMy41SDE1di0ySDguNThjLS4wNS0uMzMtLjA4LS42Ni0uMDgtMXMuMDMtLjY3LjA4LTFIMTVWOUg5LjI0QzEwLjMyIDYuOTIgMTIuNSA1LjUgMTUgNS41YzEuNjEgMCAzLjA5LjU5IDQuMjMgMS41N0wyMSA1LjNDMTkuNDEgMy44NyAxNy4zIDMgMTUgM2MtMy45MiAwLTcuMjQgMi41MS04LjQ4IDZIM3YyaDMuMDZjLS4wNC4zMy0uMDYuNjYtLjA2IDEgMCAuMzQuMDIuNjcuMDYgMUgzdjJoMy41MmMxLjI0IDMuNDkgNC41NiA2IDguNDggNiAyLjMxIDAgNC40MS0uODcgNi0yLjNsLTEuNzgtMS43N2MtMS4xMy45OC0yLjYgMS41Ny00LjIyIDEuNTd6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZXZlbnQiPjxwYXRoIGQ9Ik0xNyAxMmgtNXY1aDV2LTV6TTE2IDF2Mkg4VjFINnYySDVjLTEuMTEgMC0xLjk5LjktMS45OSAyTDMgMTljMCAxLjEuODkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMmgtMVYxaC0yem0zIDE4SDVWOGgxNHYxMXoiPjwvcGF0aD48L2c+CjxnIGlkPSJldmVudC1zZWF0Ij48cGF0aCBkPSJNNCAxOHYzaDN2LTNoMTB2M2gzdi02SDR6bTE1LThoM3YzaC0zek0yIDEwaDN2M0gyem0xNSAzSDdWNWMwLTEuMS45LTIgMi0yaDZjMS4xIDAgMiAuOSAyIDJ2OHoiPjwvcGF0aD48L2c+CjxnIGlkPSJleGl0LXRvLWFwcCI+PHBhdGggZD0iTTEwLjA5IDE1LjU5TDExLjUgMTdsNS01LTUtNS0xLjQxIDEuNDFMMTIuNjcgMTFIM3YyaDkuNjdsLTIuNTggMi41OXpNMTkgM0g1Yy0xLjExIDAtMiAuOS0yIDJ2NGgyVjVoMTR2MTRINXYtNEgzdjRjMCAxLjEuODkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJleHBhbmQtbGVzcyI+PHBhdGggZD0iTTEyIDhsLTYgNiAxLjQxIDEuNDFMMTIgMTAuODNsNC41OSA0LjU4TDE4IDE0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImV4cGFuZC1tb3JlIj48cGF0aCBkPSJNMTYuNTkgOC41OUwxMiAxMy4xNyA3LjQxIDguNTkgNiAxMGw2IDYgNi02eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImV4cGxvcmUiPjxwYXRoIGQ9Ik0xMiAxMC45Yy0uNjEgMC0xLjEuNDktMS4xIDEuMXMuNDkgMS4xIDEuMSAxLjFjLjYxIDAgMS4xLS40OSAxLjEtMS4xcy0uNDktMS4xLTEuMS0xLjF6TTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTIuMTkgMTIuMTlMNiAxOGwzLjgxLTguMTlMMTggNmwtMy44MSA4LjE5eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImV4dGVuc2lvbiI+PHBhdGggZD0iTTIwLjUgMTFIMTlWN2MwLTEuMS0uOS0yLTItMmgtNFYzLjVDMTMgMi4xMiAxMS44OCAxIDEwLjUgMVM4IDIuMTIgOCAzLjVWNUg0Yy0xLjEgMC0xLjk5LjktMS45OSAydjMuOEgzLjVjMS40OSAwIDIuNyAxLjIxIDIuNyAyLjdzLTEuMjEgMi43LTIuNyAyLjdIMlYyMGMwIDEuMS45IDIgMiAyaDMuOHYtMS41YzAtMS40OSAxLjIxLTIuNyAyLjctMi43IDEuNDkgMCAyLjcgMS4yMSAyLjcgMi43VjIySDE3YzEuMSAwIDItLjkgMi0ydi00aDEuNWMxLjM4IDAgMi41LTEuMTIgMi41LTIuNVMyMS44OCAxMSAyMC41IDExeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImZhY2UiPjxwYXRoIGQ9Ik05IDExLjc1Yy0uNjkgMC0xLjI1LjU2LTEuMjUgMS4yNXMuNTYgMS4yNSAxLjI1IDEuMjUgMS4yNS0uNTYgMS4yNS0xLjI1LS41Ni0xLjI1LTEuMjUtMS4yNXptNiAwYy0uNjkgMC0xLjI1LjU2LTEuMjUgMS4yNXMuNTYgMS4yNSAxLjI1IDEuMjUgMS4yNS0uNTYgMS4yNS0xLjI1LS41Ni0xLjI1LTEuMjUtMS4yNXpNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LTggMC0uMjkuMDItLjU4LjA1LS44NiAyLjM2LTEuMDUgNC4yMy0yLjk4IDUuMjEtNS4zN0MxMS4wNyA4LjMzIDE0LjA1IDEwIDE3LjQyIDEwYy43OCAwIDEuNTMtLjA5IDIuMjUtLjI2LjIxLjcxLjMzIDEuNDcuMzMgMi4yNiAwIDQuNDEtMy41OSA4LTggOHoiPjwvcGF0aD48L2c+CjxnIGlkPSJmYXZvcml0ZSI+PHBhdGggZD0iTTEyIDIxLjM1bC0xLjQ1LTEuMzJDNS40IDE1LjM2IDIgMTIuMjggMiA4LjUgMiA1LjQyIDQuNDIgMyA3LjUgM2MxLjc0IDAgMy40MS44MSA0LjUgMi4wOUMxMy4wOSAzLjgxIDE0Ljc2IDMgMTYuNSAzIDE5LjU4IDMgMjIgNS40MiAyMiA4LjVjMCAzLjc4LTMuNCA2Ljg2LTguNTUgMTEuNTRMMTIgMjEuMzV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmF2b3JpdGUtYm9yZGVyIj48cGF0aCBkPSJNMTYuNSAzYy0xLjc0IDAtMy40MS44MS00LjUgMi4wOUMxMC45MSAzLjgxIDkuMjQgMyA3LjUgMyA0LjQyIDMgMiA1LjQyIDIgOC41YzAgMy43OCAzLjQgNi44NiA4LjU1IDExLjU0TDEyIDIxLjM1bDEuNDUtMS4zMkMxOC42IDE1LjM2IDIyIDEyLjI4IDIyIDguNSAyMiA1LjQyIDE5LjU4IDMgMTYuNSAzem0tNC40IDE1LjU1bC0uMS4xLS4xLS4xQzcuMTQgMTQuMjQgNCAxMS4zOSA0IDguNSA0IDYuNSA1LjUgNSA3LjUgNWMxLjU0IDAgMy4wNC45OSAzLjU3IDIuMzZoMS44N0MxMy40NiA1Ljk5IDE0Ljk2IDUgMTYuNSA1YzIgMCAzLjUgMS41IDMuNSAzLjUgMCAyLjg5LTMuMTQgNS43NC03LjkgMTAuMDV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmVlZGJhY2siPjxwYXRoIGQ9Ik0yMCAySDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAyMmw0LTRoMTRjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTcgMTJoLTJ2LTJoMnYyem0wLTRoLTJWNmgydjR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmlsZS1kb3dubG9hZCI+PHBhdGggZD0iTTE5IDloLTRWM0g5djZINWw3IDcgNy03ek01IDE4djJoMTR2LTJINXoiPjwvcGF0aD48L2c+CjxnIGlkPSJmaWxlLXVwbG9hZCI+PHBhdGggZD0iTTkgMTZoNnYtNmg0bC03LTctNyA3aDR6bS00IDJoMTR2Mkg1eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImZpbHRlci1saXN0Ij48cGF0aCBkPSJNMTAgMThoNHYtMmgtNHYyek0zIDZ2MmgxOFY2SDN6bTMgN2gxMnYtMkg2djJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmluZC1pbi1wYWdlIj48cGF0aCBkPSJNMjAgMTkuNTlWOGwtNi02SDZjLTEuMSAwLTEuOTkuOS0xLjk5IDJMNCAyMGMwIDEuMS44OSAyIDEuOTkgMkgxOGMuNDUgMCAuODUtLjE1IDEuMTktLjRsLTQuNDMtNC40M2MtLjguNTItMS43NC44My0yLjc2LjgzLTIuNzYgMC01LTIuMjQtNS01czIuMjQtNSA1LTUgNSAyLjI0IDUgNWMwIDEuMDItLjMxIDEuOTYtLjgzIDIuNzVMMjAgMTkuNTl6TTkgMTNjMCAxLjY2IDEuMzQgMyAzIDNzMy0xLjM0IDMtMy0xLjM0LTMtMy0zLTMgMS4zNC0zIDN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmluZC1yZXBsYWNlIj48cGF0aCBkPSJNMTEgNmMxLjM4IDAgMi42My41NiAzLjU0IDEuNDZMMTIgMTBoNlY0bC0yLjA1IDIuMDVDMTQuNjggNC43OCAxMi45MyA0IDExIDRjLTMuNTMgMC02LjQzIDIuNjEtNi45MiA2SDYuMWMuNDYtMi4yOCAyLjQ4LTQgNC45LTR6bTUuNjQgOS4xNGMuNjYtLjkgMS4xMi0xLjk3IDEuMjgtMy4xNEgxNS45Yy0uNDYgMi4yOC0yLjQ4IDQtNC45IDQtMS4zOCAwLTIuNjMtLjU2LTMuNTQtMS40NkwxMCAxMkg0djZsMi4wNS0yLjA1QzcuMzIgMTcuMjIgOS4wNyAxOCAxMSAxOGMxLjU1IDAgMi45OC0uNTEgNC4xNC0xLjM2TDIwIDIxLjQ5IDIxLjQ5IDIwbC00Ljg1LTQuODZ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmluZ2VycHJpbnQiPjxwYXRoIGQ9Ik0xNy44MSA0LjQ3Yy0uMDggMC0uMTYtLjAyLS4yMy0uMDZDMTUuNjYgMy40MiAxNCAzIDEyLjAxIDNjLTEuOTggMC0zLjg2LjQ3LTUuNTcgMS40MS0uMjQuMTMtLjU0LjA0LS42OC0uMi0uMTMtLjI0LS4wNC0uNTUuMi0uNjhDNy44MiAyLjUyIDkuODYgMiAxMi4wMSAyYzIuMTMgMCAzLjk5LjQ3IDYuMDMgMS41Mi4yNS4xMy4zNC40My4yMS42Ny0uMDkuMTgtLjI2LjI4LS40NC4yOHpNMy41IDkuNzJjLS4xIDAtLjItLjAzLS4yOS0uMDktLjIzLS4xNi0uMjgtLjQ3LS4xMi0uNy45OS0xLjQgMi4yNS0yLjUgMy43NS0zLjI3QzkuOTggNC4wNCAxNCA0LjAzIDE3LjE1IDUuNjVjMS41Ljc3IDIuNzYgMS44NiAzLjc1IDMuMjUuMTYuMjIuMTEuNTQtLjEyLjctLjIzLjE2LS41NC4xMS0uNy0uMTItLjktMS4yNi0yLjA0LTIuMjUtMy4zOS0yLjk0LTIuODctMS40Ny02LjU0LTEuNDctOS40LjAxLTEuMzYuNy0yLjUgMS43LTMuNCAyLjk2LS4wOC4xNC0uMjMuMjEtLjM5LjIxem02LjI1IDEyLjA3Yy0uMTMgMC0uMjYtLjA1LS4zNS0uMTUtLjg3LS44Ny0xLjM0LTEuNDMtMi4wMS0yLjY0LS42OS0xLjIzLTEuMDUtMi43My0xLjA1LTQuMzQgMC0yLjk3IDIuNTQtNS4zOSA1LjY2LTUuMzlzNS42NiAyLjQyIDUuNjYgNS4zOWMwIC4yOC0uMjIuNS0uNS41cy0uNS0uMjItLjUtLjVjMC0yLjQyLTIuMDktNC4zOS00LjY2LTQuMzktMi41NyAwLTQuNjYgMS45Ny00LjY2IDQuMzkgMCAxLjQ0LjMyIDIuNzcuOTMgMy44NS42NCAxLjE1IDEuMDggMS42NCAxLjg1IDIuNDIuMTkuMi4xOS41MSAwIC43MS0uMTEuMS0uMjQuMTUtLjM3LjE1em03LjE3LTEuODVjLTEuMTkgMC0yLjI0LS4zLTMuMS0uODktMS40OS0xLjAxLTIuMzgtMi42NS0yLjM4LTQuMzkgMC0uMjguMjItLjUuNS0uNXMuNS4yMi41LjVjMCAxLjQxLjcyIDIuNzQgMS45NCAzLjU2LjcxLjQ4IDEuNTQuNzEgMi41NC43MS4yNCAwIC42NC0uMDMgMS4wNC0uMS4yNy0uMDUuNTMuMTMuNTguNDEuMDUuMjctLjEzLjUzLS40MS41OC0uNTcuMTEtMS4wNy4xMi0xLjIxLjEyek0xNC45MSAyMmMtLjA0IDAtLjA5LS4wMS0uMTMtLjAyLTEuNTktLjQ0LTIuNjMtMS4wMy0zLjcyLTIuMS0xLjQtMS4zOS0yLjE3LTMuMjQtMi4xNy01LjIyIDAtMS42MiAxLjM4LTIuOTQgMy4wOC0yLjk0IDEuNyAwIDMuMDggMS4zMiAzLjA4IDIuOTQgMCAxLjA3LjkzIDEuOTQgMi4wOCAxLjk0czIuMDgtLjg3IDIuMDgtMS45NGMwLTMuNzctMy4yNS02LjgzLTcuMjUtNi44My0yLjg0IDAtNS40NCAxLjU4LTYuNjEgNC4wMy0uMzkuODEtLjU5IDEuNzYtLjU5IDIuOCAwIC43OC4wNyAyLjAxLjY3IDMuNjEuMS4yNi0uMDMuNTUtLjI5LjY0LS4yNi4xLS41NS0uMDQtLjY0LS4yOS0uNDktMS4zMS0uNzMtMi42MS0uNzMtMy45NiAwLTEuMi4yMy0yLjI5LjY4LTMuMjQgMS4zMy0yLjc5IDQuMjgtNC42IDcuNTEtNC42IDQuNTUgMCA4LjI1IDMuNTEgOC4yNSA3LjgzIDAgMS42Mi0xLjM4IDIuOTQtMy4wOCAyLjk0cy0zLjA4LTEuMzItMy4wOC0yLjk0YzAtMS4wNy0uOTMtMS45NC0yLjA4LTEuOTRzLTIuMDguODctMi4wOCAxLjk0YzAgMS43MS42NiAzLjMxIDEuODcgNC41MS45NS45NCAxLjg2IDEuNDYgMy4yNyAxLjg1LjI3LjA3LjQyLjM1LjM1LjYxLS4wNS4yMy0uMjYuMzgtLjQ3LjM4eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImZpcnN0LXBhZ2UiPjxwYXRoIGQ9Ik0xOC40MSAxNi41OUwxMy44MiAxMmw0LjU5LTQuNTlMMTcgNmwtNiA2IDYgNnpNNiA2aDJ2MTJINnoiPjwvcGF0aD48L2c+CjxnIGlkPSJmbGFnIj48cGF0aCBkPSJNMTQuNCA2TDE0IDRINXYxN2gydi03aDUuNmwuNCAyaDdWNnoiPjwvcGF0aD48L2c+CjxnIGlkPSJmbGlnaHQtbGFuZCI+PHBhdGggZD0iTTIuNSAxOWgxOXYyaC0xOXptNy4xOC01LjczbDQuMzUgMS4xNiA1LjMxIDEuNDJjLjguMjEgMS42Mi0uMjYgMS44NC0xLjA2LjIxLS44LS4yNi0xLjYyLTEuMDYtMS44NGwtNS4zMS0xLjQyLTIuNzYtOS4wMkwxMC4xMiAydjguMjhMNS4xNSA4Ljk1bC0uOTMtMi4zMi0xLjQ1LS4zOXY1LjE3bDEuNi40MyA1LjMxIDEuNDN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmxpZ2h0LXRha2VvZmYiPjxwYXRoIGQ9Ik0yLjUgMTloMTl2MmgtMTl6bTE5LjU3LTkuMzZjLS4yMS0uOC0xLjA0LTEuMjgtMS44NC0xLjA2TDE0LjkyIDEwbC02LjktNi40My0xLjkzLjUxIDQuMTQgNy4xNy00Ljk3IDEuMzMtMS45Ny0xLjU0LTEuNDUuMzkgMS44MiAzLjE2Ljc3IDEuMzMgMS42LS40MyA1LjMxLTEuNDIgNC4zNS0xLjE2TDIxIDExLjQ5Yy44MS0uMjMgMS4yOC0xLjA1IDEuMDctMS44NXoiPjwvcGF0aD48L2c+CjxnIGlkPSJmbGlwLXRvLWJhY2siPjxwYXRoIGQ9Ik05IDdIN3YyaDJWN3ptMCA0SDd2Mmgydi0yem0wLThjLTEuMTEgMC0yIC45LTIgMmgyVjN6bTQgMTJoLTJ2Mmgydi0yem02LTEydjJoMmMwLTEuMS0uOS0yLTItMnptLTYgMGgtMnYyaDJWM3pNOSAxN3YtMkg3YzAgMS4xLjg5IDIgMiAyem0xMC00aDJ2LTJoLTJ2MnptMC00aDJWN2gtMnYyem0wIDhjMS4xIDAgMi0uOSAyLTJoLTJ2MnpNNSA3SDN2MTJjMCAxLjEuODkgMiAyIDJoMTJ2LTJINVY3em0xMC0yaDJWM2gtMnYyem0wIDEyaDJ2LTJoLTJ2MnoiPjwvcGF0aD48L2c+CjxnIGlkPSJmbGlwLXRvLWZyb250Ij48cGF0aCBkPSJNMyAxM2gydi0ySDN2MnptMCA0aDJ2LTJIM3Yyem0yIDR2LTJIM2MwIDEuMS44OSAyIDIgMnpNMyA5aDJWN0gzdjJ6bTEyIDEyaDJ2LTJoLTJ2MnptNC0xOEg5Yy0xLjExIDAtMiAuOS0yIDJ2MTBjMCAxLjEuODkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxMkg5VjVoMTB2MTB6bS04IDZoMnYtMmgtMnYyem0tNCAwaDJ2LTJIN3YyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImZvbGRlciI+PHBhdGggZD0iTTEwIDRINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDE4YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMmgtOGwtMi0yeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImZvbGRlci1vcGVuIj48cGF0aCBkPSJNMjAgNmgtOGwtMi0ySDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAxOGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJ6bTAgMTJINFY4aDE2djEweiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImZvbGRlci1zaGFyZWQiPjxwYXRoIGQ9Ik0yMCA2aC04bC0yLTJINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDE4YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnptLTUgM2MxLjEgMCAyIC45IDIgMnMtLjkgMi0yIDItMi0uOS0yLTIgLjktMiAyLTJ6bTQgOGgtOHYtMWMwLTEuMzMgMi42Ny0yIDQtMnM0IC42NyA0IDJ2MXoiPjwvcGF0aD48L2c+CjxnIGlkPSJmb250LWRvd25sb2FkIj48cGF0aCBkPSJNOS45MyAxMy41aDQuMTRMMTIgNy45OHpNMjAgMkg0Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS00LjA1IDE2LjVsLTEuMTQtM0g5LjE3bC0xLjEyIDNINS45Nmw1LjExLTEzaDEuODZsNS4xMSAxM2gtMi4wOXoiPjwvcGF0aD48L2c+CjxnIGlkPSJmb3J3YXJkIj48cGF0aCBkPSJNMTIgOFY0bDggOC04IDh2LTRINFY4eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImZ1bGxzY3JlZW4iPjxwYXRoIGQ9Ik03IDE0SDV2NWg1di0ySDd2LTN6bS0yLTRoMlY3aDNWNUg1djV6bTEyIDdoLTN2Mmg1di01aC0ydjN6TTE0IDV2MmgzdjNoMlY1aC01eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImZ1bGxzY3JlZW4tZXhpdCI+PHBhdGggZD0iTTUgMTZoM3YzaDJ2LTVINXYyem0zLThINXYyaDVWNUg4djN6bTYgMTFoMnYtM2gzdi0yaC01djV6bTItMTFWNWgtMnY1aDVWOGgtM3oiPjwvcGF0aD48L2c+CjxnIGlkPSJnLXRyYW5zbGF0ZSI+PHBhdGggZD0iTTIwIDVoLTkuMTJMMTAgMkg0Yy0xLjEgMC0yIC45LTIgMnYxM2MwIDEuMS45IDIgMiAyaDdsMSAzaDhjMS4xIDAgMi0uOSAyLTJWN2MwLTEuMS0uOS0yLTItMnpNNy4xNyAxNC41OWMtMi4yNSAwLTQuMDktMS44My00LjA5LTQuMDlzMS44My00LjA5IDQuMDktNC4wOWMxLjA0IDAgMS45OS4zNyAyLjc0IDEuMDdsLjA3LjA2LTEuMjMgMS4xOC0uMDYtLjA1Yy0uMjktLjI3LS43OC0uNTktMS41Mi0uNTktMS4zMSAwLTIuMzggMS4wOS0yLjM4IDIuNDJzMS4wNyAyLjQyIDIuMzggMi40MmMxLjM3IDAgMS45Ni0uODcgMi4xMi0xLjQ2SDcuMDhWOS45MWgzLjk1bC4wMS4wN2MuMDQuMjEuMDUuNC4wNS42MSAwIDIuMzUtMS42MSA0LTMuOTIgNHptNi4wMy0xLjcxYy4zMy42Ljc0IDEuMTggMS4xOSAxLjdsLS41NC41My0uNjUtMi4yM3ptLjc3LS43NmgtLjk5bC0uMzEtMS4wNGgzLjk5cy0uMzQgMS4zMS0xLjU2IDIuNzRjLS41Mi0uNjItLjg5LTEuMjMtMS4xMy0xLjd6TTIxIDIwYzAgLjU1LS40NSAxLTEgMWgtN2wyLTItLjgxLTIuNzcuOTItLjkyTDE3Ljc5IDE4bC43My0uNzMtMi43MS0yLjY4Yy45LTEuMDMgMS42LTIuMjUgMS45Mi0zLjUxSDE5di0xLjA0aC0zLjY0VjloLTEuMDR2MS4wNGgtMS45NkwxMS4xOCA2SDIwYy41NSAwIDEgLjQ1IDEgMXYxM3oiPjwvcGF0aD48L2c+CjxnIGlkPSJnYXZlbCI+PHBhdGggZD0iTTEgMjFoMTJ2Mkgxek01LjI0NSA4LjA3bDIuODMtMi44MjcgMTQuMTQgMTQuMTQyLTIuODI4IDIuODI4ek0xMi4zMTcgMWw1LjY1NyA1LjY1Ni0yLjgzIDIuODMtNS42NTQtNS42NnpNMy44MjUgOS40ODVsNS42NTcgNS42NTctMi44MjggMi44MjgtNS42NTctNS42NTd6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZ2VzdHVyZSI+PHBhdGggZD0iTTQuNTkgNi44OWMuNy0uNzEgMS40LTEuMzUgMS43MS0xLjIyLjUuMiAwIDEuMDMtLjMgMS41Mi0uMjUuNDItMi44NiAzLjg5LTIuODYgNi4zMSAwIDEuMjguNDggMi4zNCAxLjM0IDIuOTguNzUuNTYgMS43NC43MyAyLjY0LjQ2IDEuMDctLjMxIDEuOTUtMS40IDMuMDYtMi43NyAxLjIxLTEuNDkgMi44My0zLjQ0IDQuMDgtMy40NCAxLjYzIDAgMS42NSAxLjAxIDEuNzYgMS43OS0zLjc4LjY0LTUuMzggMy42Ny01LjM4IDUuMzcgMCAxLjcgMS40NCAzLjA5IDMuMjEgMy4wOSAxLjYzIDAgNC4yOS0xLjMzIDQuNjktNi4xSDIxdi0yLjVoLTIuNDdjLS4xNS0xLjY1LTEuMDktNC4yLTQuMDMtNC4yLTIuMjUgMC00LjE4IDEuOTEtNC45NCAyLjg0LS41OC43My0yLjA2IDIuNDgtMi4yOSAyLjcyLS4yNS4zLS42OC44NC0xLjExLjg0LS40NSAwLS43Mi0uODMtLjM2LTEuOTIuMzUtMS4wOSAxLjQtMi44NiAxLjg1LTMuNTIuNzgtMS4xNCAxLjMtMS45MiAxLjMtMy4yOEM4Ljk1IDMuNjkgNy4zMSAzIDYuNDQgMyA1LjEyIDMgMy45NyA0IDMuNzIgNC4yNWMtLjM2LjM2LS42Ni42Ni0uODguOTNsMS43NSAxLjcxem05LjI5IDExLjY2Yy0uMzEgMC0uNzQtLjI2LS43NC0uNzIgMC0uNi43My0yLjIgMi44Ny0yLjc2LS4zIDIuNjktMS40MyAzLjQ4LTIuMTMgMy40OHoiPjwvcGF0aD48L2c+CjxnIGlkPSJnZXQtYXBwIj48cGF0aCBkPSJNMTkgOWgtNFYzSDl2Nkg1bDcgNyA3LTd6TTUgMTh2MmgxNHYtMkg1eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImdpZiI+PHBhdGggZD0iTTExLjUgOUgxM3Y2aC0xLjV6TTkgOUg2Yy0uNiAwLTEgLjUtMSAxdjRjMCAuNS40IDEgMSAxaDNjLjYgMCAxLS41IDEtMXYtMkg4LjV2MS41aC0ydi0zSDEwVjEwYzAtLjUtLjQtMS0xLTF6bTEwIDEuNVY5aC00LjV2NkgxNnYtMmgydi0xLjVoLTJ2LTF6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZ3JhZGUiPjxwYXRoIGQ9Ik0xMiAxNy4yN0wxOC4xOCAyMWwtMS42NC03LjAzTDIyIDkuMjRsLTcuMTktLjYxTDEyIDIgOS4xOSA4LjYzIDIgOS4yNGw1LjQ2IDQuNzNMNS44MiAyMXoiPjwvcGF0aD48L2c+CjxnIGlkPSJncm91cC13b3JrIj48cGF0aCBkPSJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnpNOCAxNy41Yy0xLjM4IDAtMi41LTEuMTItMi41LTIuNXMxLjEyLTIuNSAyLjUtMi41IDIuNSAxLjEyIDIuNSAyLjUtMS4xMiAyLjUtMi41IDIuNXpNOS41IDhjMC0xLjM4IDEuMTItMi41IDIuNS0yLjVzMi41IDEuMTIgMi41IDIuNS0xLjEyIDIuNS0yLjUgMi41UzkuNSA5LjM4IDkuNSA4em02LjUgOS41Yy0xLjM4IDAtMi41LTEuMTItMi41LTIuNXMxLjEyLTIuNSAyLjUtMi41IDIuNSAxLjEyIDIuNSAyLjUtMS4xMiAyLjUtMi41IDIuNXoiPjwvcGF0aD48L2c+CjxnIGlkPSJoZWxwIj48cGF0aCBkPSJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMSAxN2gtMnYtMmgydjJ6bTIuMDctNy43NWwtLjkuOTJDMTMuNDUgMTIuOSAxMyAxMy41IDEzIDE1aC0ydi0uNWMwLTEuMS40NS0yLjEgMS4xNy0yLjgzbDEuMjQtMS4yNmMuMzctLjM2LjU5LS44Ni41OS0xLjQxIDAtMS4xLS45LTItMi0ycy0yIC45LTIgMkg4YzAtMi4yMSAxLjc5LTQgNC00czQgMS43OSA0IDRjMCAuODgtLjM2IDEuNjgtLjkzIDIuMjV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iaGVscC1vdXRsaW5lIj48cGF0aCBkPSJNMTEgMThoMnYtMmgtMnYyem0xLTE2QzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHptMC0xNGMtMi4yMSAwLTQgMS43OS00IDRoMmMwLTEuMS45LTIgMi0yczIgLjkgMiAyYzAgMi0zIDEuNzUtMyA1aDJjMC0yLjI1IDMtMi41IDMtNSAwLTIuMjEtMS43OS00LTQtNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJoaWdobGlnaHQtb2ZmIj48cGF0aCBkPSJNMTQuNTkgOEwxMiAxMC41OSA5LjQxIDggOCA5LjQxIDEwLjU5IDEyIDggMTQuNTkgOS40MSAxNiAxMiAxMy40MSAxNC41OSAxNiAxNiAxNC41OSAxMy40MSAxMiAxNiA5LjQxIDE0LjU5IDh6TTEyIDJDNi40NyAyIDIgNi40NyAyIDEyczQuNDcgMTAgMTAgMTAgMTAtNC40NyAxMC0xMFMxNy41MyAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4eiI+PC9wYXRoPjwvZz4KPGcgaWQ9Imhpc3RvcnkiPjxwYXRoIGQ9Ik0xMyAzYy00Ljk3IDAtOSA0LjAzLTkgOUgxbDMuODkgMy44OS4wNy4xNEw5IDEySDZjMC0zLjg3IDMuMTMtNyA3LTdzNyAzLjEzIDcgNy0zLjEzIDctNyA3Yy0xLjkzIDAtMy42OC0uNzktNC45NC0yLjA2bC0xLjQyIDEuNDJDOC4yNyAxOS45OSAxMC41MSAyMSAxMyAyMWM0Ljk3IDAgOS00LjAzIDktOXMtNC4wMy05LTktOXptLTEgNXY1bDQuMjggMi41NC43Mi0xLjIxLTMuNS0yLjA4VjhIMTJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iaG9tZSI+PHBhdGggZD0iTTEwIDIwdi02aDR2Nmg1di04aDNMMTIgMyAyIDEyaDN2OHoiPjwvcGF0aD48L2c+CjxnIGlkPSJob3VyZ2xhc3MtZW1wdHkiPjxwYXRoIGQ9Ik02IDJ2NmguMDFMNiA4LjAxIDEwIDEybC00IDQgLjAxLjAxSDZWMjJoMTJ2LTUuOTloLS4wMUwxOCAxNmwtNC00IDQtMy45OS0uMDEtLjAxSDE4VjJINnptMTAgMTQuNVYyMEg4di0zLjVsNC00IDQgNHptLTQtNWwtNC00VjRoOHYzLjVsLTQgNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJob3VyZ2xhc3MtZnVsbCI+PHBhdGggZD0iTTYgMnY2aC4wMUw2IDguMDEgMTAgMTJsLTQgNCAuMDEuMDFINlYyMmgxMnYtNS45OWgtLjAxTDE4IDE2bC00LTQgNC0zLjk5LS4wMS0uMDFIMThWMkg2eiI+PC9wYXRoPjwvZz4KPGcgaWQ9Imh0dHAiPjxwYXRoIGQ9Ik00LjUgMTFoLTJWOUgxdjZoMS41di0yLjVoMlYxNUg2VjlINC41djJ6bTIuNS0uNWgxLjVWMTVIMTB2LTQuNWgxLjVWOUg3djEuNXptNS41IDBIMTRWMTVoMS41di00LjVIMTdWOWgtNC41djEuNXptOS0xLjVIMTh2NmgxLjV2LTJoMmMuOCAwIDEuNS0uNyAxLjUtMS41di0xYzAtLjgtLjctMS41LTEuNS0xLjV6bTAgMi41aC0ydi0xaDJ2MXoiPjwvcGF0aD48L2c+CjxnIGlkPSJodHRwcyI+PHBhdGggZD0iTTE4IDhoLTFWNmMwLTIuNzYtMi4yNC01LTUtNVM3IDMuMjQgNyA2djJINmMtMS4xIDAtMiAuOS0yIDJ2MTBjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlYxMGMwLTEuMS0uOS0yLTItMnptLTYgOWMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6bTMuMS05SDguOVY2YzAtMS43MSAxLjM5LTMuMSAzLjEtMy4xIDEuNzEgMCAzLjEgMS4zOSAzLjEgMy4xdjJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iaW1wb3J0YW50LWRldmljZXMiPjxwYXRoIGQ9Ik0yMyAxMS4wMUwxOCAxMWMtLjU1IDAtMSAuNDUtMSAxdjljMCAuNTUuNDUgMSAxIDFoNWMuNTUgMCAxLS40NSAxLTF2LTljMC0uNTUtLjQ1LS45OS0xLS45OXpNMjMgMjBoLTV2LTdoNXY3ek0yMCAySDJDLjg5IDIgMCAyLjg5IDAgNHYxMmMwIDEuMS44OSAyIDIgMmg3djJIN3YyaDh2LTJoLTJ2LTJoMnYtMkgyVjRoMTh2NWgyVjRjMC0xLjExLS45LTItMi0yem0tOC4wMyA3TDExIDZsLS45NyAzSDdsMi40NyAxLjc2LS45NCAyLjkxIDIuNDctMS44IDIuNDcgMS44LS45NC0yLjkxTDE1IDloLTMuMDN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iaW5ib3giPjxwYXRoIGQ9Ik0xOSAzSDQuOTljLTEuMTEgMC0xLjk4Ljg5LTEuOTggMkwzIDE5YzAgMS4xLjg4IDIgMS45OSAySDE5YzEuMSAwIDItLjkgMi0yVjVjMC0xLjExLS45LTItMi0yem0wIDEyaC00YzAgMS42Ni0xLjM1IDMtMyAzcy0zLTEuMzQtMy0zSDQuOTlWNUgxOXYxMHoiPjwvcGF0aD48L2c+CjxnIGlkPSJpbmRldGVybWluYXRlLWNoZWNrLWJveCI+PHBhdGggZD0iTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tMiAxMEg3di0yaDEwdjJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iaW5mbyI+PHBhdGggZD0iTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTEgMTVoLTJ2LTZoMnY2em0wLThoLTJWN2gydjJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iaW5mby1vdXRsaW5lIj48cGF0aCBkPSJNMTEgMTdoMnYtNmgtMnY2em0xLTE1QzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHpNMTEgOWgyVjdoLTJ2MnoiPjwvcGF0aD48L2c+CjxnIGlkPSJpbnB1dCI+PHBhdGggZD0iTTIxIDMuMDFIM2MtMS4xIDAtMiAuOS0yIDJWOWgyVjQuOTloMTh2MTQuMDNIM1YxNUgxdjQuMDFjMCAxLjEuOSAxLjk4IDIgMS45OGgxOGMxLjEgMCAyLS44OCAyLTEuOTh2LTE0YzAtMS4xMS0uOS0yLTItMnpNMTEgMTZsNC00LTQtNHYzSDF2MmgxMHYzeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImludmVydC1jb2xvcnMiPjxwYXRoIGQ9Ik0xNy42NiA3LjkzTDEyIDIuMjcgNi4zNCA3LjkzYy0zLjEyIDMuMTItMy4xMiA4LjE5IDAgMTEuMzFDNy45IDIwLjggOS45NSAyMS41OCAxMiAyMS41OGMyLjA1IDAgNC4xLS43OCA1LjY2LTIuMzQgMy4xMi0zLjEyIDMuMTItOC4xOSAwLTExLjMxek0xMiAxOS41OWMtMS42IDAtMy4xMS0uNjItNC4yNC0xLjc2QzYuNjIgMTYuNjkgNiAxNS4xOSA2IDEzLjU5cy42Mi0zLjExIDEuNzYtNC4yNEwxMiA1LjF2MTQuNDl6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ibGFiZWwiPjxwYXRoIGQ9Ik0xNy42MyA1Ljg0QzE3LjI3IDUuMzMgMTYuNjcgNSAxNiA1TDUgNS4wMUMzLjkgNS4wMSAzIDUuOSAzIDd2MTBjMCAxLjEuOSAxLjk5IDIgMS45OUwxNiAxOWMuNjcgMCAxLjI3LS4zMyAxLjYzLS44NEwyMiAxMmwtNC4zNy02LjE2eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImxhYmVsLW91dGxpbmUiPjxwYXRoIGQ9Ik0xNy42MyA1Ljg0QzE3LjI3IDUuMzMgMTYuNjcgNSAxNiA1TDUgNS4wMUMzLjkgNS4wMSAzIDUuOSAzIDd2MTBjMCAxLjEuOSAxLjk5IDIgMS45OUwxNiAxOWMuNjcgMCAxLjI3LS4zMyAxLjYzLS44NEwyMiAxMmwtNC4zNy02LjE2ek0xNiAxN0g1VjdoMTFsMy41NSA1TDE2IDE3eiI+PC9wYXRoPjwvZz4KPGcgaWQ9Imxhbmd1YWdlIj48cGF0aCBkPSJNMTEuOTkgMkM2LjQ3IDIgMiA2LjQ4IDIgMTJzNC40NyAxMCA5Ljk5IDEwQzE3LjUyIDIyIDIyIDE3LjUyIDIyIDEyUzE3LjUyIDIgMTEuOTkgMnptNi45MyA2aC0yLjk1Yy0uMzItMS4yNS0uNzgtMi40NS0xLjM4LTMuNTYgMS44NC42MyAzLjM3IDEuOTEgNC4zMyAzLjU2ek0xMiA0LjA0Yy44MyAxLjIgMS40OCAyLjUzIDEuOTEgMy45NmgtMy44MmMuNDMtMS40MyAxLjA4LTIuNzYgMS45MS0zLjk2ek00LjI2IDE0QzQuMSAxMy4zNiA0IDEyLjY5IDQgMTJzLjEtMS4zNi4yNi0yaDMuMzhjLS4wOC42Ni0uMTQgMS4zMi0uMTQgMiAwIC42OC4wNiAxLjM0LjE0IDJINC4yNnptLjgyIDJoMi45NWMuMzIgMS4yNS43OCAyLjQ1IDEuMzggMy41Ni0xLjg0LS42My0zLjM3LTEuOS00LjMzLTMuNTZ6bTIuOTUtOEg1LjA4Yy45Ni0xLjY2IDIuNDktMi45MyA0LjMzLTMuNTZDOC44MSA1LjU1IDguMzUgNi43NSA4LjAzIDh6TTEyIDE5Ljk2Yy0uODMtMS4yLTEuNDgtMi41My0xLjkxLTMuOTZoMy44MmMtLjQzIDEuNDMtMS4wOCAyLjc2LTEuOTEgMy45NnpNMTQuMzQgMTRIOS42NmMtLjA5LS42Ni0uMTYtMS4zMi0uMTYtMiAwLS42OC4wNy0xLjM1LjE2LTJoNC42OGMuMDkuNjUuMTYgMS4zMi4xNiAyIDAgLjY4LS4wNyAxLjM0LS4xNiAyem0uMjUgNS41NmMuNi0xLjExIDEuMDYtMi4zMSAxLjM4LTMuNTZoMi45NWMtLjk2IDEuNjUtMi40OSAyLjkzLTQuMzMgMy41NnpNMTYuMzYgMTRjLjA4LS42Ni4xNC0xLjMyLjE0LTIgMC0uNjgtLjA2LTEuMzQtLjE0LTJoMy4zOGMuMTYuNjQuMjYgMS4zMS4yNiAycy0uMSAxLjM2LS4yNiAyaC0zLjM4eiI+PC9wYXRoPjwvZz4KPGcgaWQ9Imxhc3QtcGFnZSI+PHBhdGggZD0iTTUuNTkgNy40MUwxMC4xOCAxMmwtNC41OSA0LjU5TDcgMThsNi02LTYtNnpNMTYgNmgydjEyaC0yeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImxhdW5jaCI+PHBhdGggZD0iTTE5IDE5SDVWNWg3VjNINWMtMS4xMSAwLTIgLjktMiAydjE0YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0ydi03aC0ydjd6TTE0IDN2MmgzLjU5bC05LjgzIDkuODMgMS40MSAxLjQxTDE5IDYuNDFWMTBoMlYzaC03eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImxpZ2h0YnVsYi1vdXRsaW5lIj48cGF0aCBkPSJNOSAyMWMwIC41NS40NSAxIDEgMWg0Yy41NSAwIDEtLjQ1IDEtMXYtMUg5djF6bTMtMTlDOC4xNCAyIDUgNS4xNCA1IDljMCAyLjM4IDEuMTkgNC40NyAzIDUuNzRWMTdjMCAuNTUuNDUgMSAxIDFoNmMuNTUgMCAxLS40NSAxLTF2LTIuMjZjMS44MS0xLjI3IDMtMy4zNiAzLTUuNzQgMC0zLjg2LTMuMTQtNy03LTd6bTIuODUgMTEuMWwtLjg1LjZWMTZoLTR2LTIuM2wtLjg1LS42QzcuOCAxMi4xNiA3IDEwLjYzIDcgOWMwLTIuNzYgMi4yNC01IDUtNXM1IDIuMjQgNSA1YzAgMS42My0uOCAzLjE2LTIuMTUgNC4xeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImxpbmUtc3R5bGUiPjxwYXRoIGQ9Ik0zIDE2aDV2LTJIM3Yyem02LjUgMGg1di0yaC01djJ6bTYuNSAwaDV2LTJoLTV2MnpNMyAyMGgydi0ySDN2MnptNCAwaDJ2LTJIN3Yyem00IDBoMnYtMmgtMnYyem00IDBoMnYtMmgtMnYyem00IDBoMnYtMmgtMnYyek0zIDEyaDh2LTJIM3Yyem0xMCAwaDh2LTJoLTh2MnpNMyA0djRoMThWNEgzeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImxpbmUtd2VpZ2h0Ij48cGF0aCBkPSJNMyAxN2gxOHYtMkgzdjJ6bTAgM2gxOHYtMUgzdjF6bTAtN2gxOHYtM0gzdjN6bTAtOXY0aDE4VjRIM3oiPjwvcGF0aD48L2c+CjxnIGlkPSJsaW5rIj48cGF0aCBkPSJNMy45IDEyYzAtMS43MSAxLjM5LTMuMSAzLjEtMy4xaDRWN0g3Yy0yLjc2IDAtNSAyLjI0LTUgNXMyLjI0IDUgNSA1aDR2LTEuOUg3Yy0xLjcxIDAtMy4xLTEuMzktMy4xLTMuMXpNOCAxM2g4di0ySDh2MnptOS02aC00djEuOWg0YzEuNzEgMCAzLjEgMS4zOSAzLjEgMy4xcy0xLjM5IDMuMS0zLjEgMy4xaC00VjE3aDRjMi43NiAwIDUtMi4yNCA1LTVzLTIuMjQtNS01LTV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ibGlzdCI+PHBhdGggZD0iTTMgMTNoMnYtMkgzdjJ6bTAgNGgydi0ySDN2MnptMC04aDJWN0gzdjJ6bTQgNGgxNHYtMkg3djJ6bTAgNGgxNHYtMkg3djJ6TTcgN3YyaDE0VjdIN3oiPjwvcGF0aD48L2c+CjxnIGlkPSJsb2NrIj48cGF0aCBkPSJNMTggOGgtMVY2YzAtMi43Ni0yLjI0LTUtNS01UzcgMy4yNCA3IDZ2Mkg2Yy0xLjEgMC0yIC45LTIgMnYxMGMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjEwYzAtMS4xLS45LTItMi0yem0tNiA5Yy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnptMy4xLTlIOC45VjZjMC0xLjcxIDEuMzktMy4xIDMuMS0zLjEgMS43MSAwIDMuMSAxLjM5IDMuMSAzLjF2MnoiPjwvcGF0aD48L2c+CjxnIGlkPSJsb2NrLW9wZW4iPjxwYXRoIGQ9Ik0xMiAxN2MxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6bTYtOWgtMVY2YzAtMi43Ni0yLjI0LTUtNS01UzcgMy4yNCA3IDZoMS45YzAtMS43MSAxLjM5LTMuMSAzLjEtMy4xIDEuNzEgMCAzLjEgMS4zOSAzLjEgMy4xdjJINmMtMS4xIDAtMiAuOS0yIDJ2MTBjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlYxMGMwLTEuMS0uOS0yLTItMnptMCAxMkg2VjEwaDEydjEweiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImxvY2stb3V0bGluZSI+PHBhdGggZD0iTTEyIDE3YzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMiAuOSAyIDIgMnptNi05aC0xVjZjMC0yLjc2LTIuMjQtNS01LTVTNyAzLjI0IDcgNnYySDZjLTEuMSAwLTIgLjktMiAydjEwYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWMTBjMC0xLjEtLjktMi0yLTJ6TTguOSA2YzAtMS43MSAxLjM5LTMuMSAzLjEtMy4xczMuMSAxLjM5IDMuMSAzLjF2Mkg4LjlWNnpNMTggMjBINlYxMGgxMnYxMHoiPjwvcGF0aD48L2c+CjxnIGlkPSJsb3ctcHJpb3JpdHkiPjxwYXRoIGQ9Ik0xNCA1aDh2MmgtOHptMCA1LjVoOHYyaC04em0wIDUuNWg4djJoLTh6TTIgMTEuNUMyIDE1LjA4IDQuOTIgMTggOC41IDE4SDl2MmwzLTMtMy0zdjJoLS41QzYuMDIgMTYgNCAxMy45OCA0IDExLjVTNi4wMiA3IDguNSA3SDEyVjVIOC41QzQuOTIgNSAyIDcuOTIgMiAxMS41eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImxveWFsdHkiPjxwYXRoIGQ9Ik0yMS40MSAxMS41OGwtOS05QzEyLjA1IDIuMjIgMTEuNTUgMiAxMSAySDRjLTEuMSAwLTIgLjktMiAydjdjMCAuNTUuMjIgMS4wNS41OSAxLjQybDkgOWMuMzYuMzYuODYuNTggMS40MS41OC41NSAwIDEuMDUtLjIyIDEuNDEtLjU5bDctN2MuMzctLjM2LjU5LS44Ni41OS0xLjQxIDAtLjU1LS4yMy0xLjA2LS41OS0xLjQyek01LjUgN0M0LjY3IDcgNCA2LjMzIDQgNS41UzQuNjcgNCA1LjUgNCA3IDQuNjcgNyA1LjUgNi4zMyA3IDUuNSA3em0xMS43NyA4LjI3TDEzIDE5LjU0bC00LjI3LTQuMjdDOC4yOCAxNC44MSA4IDE0LjE5IDggMTMuNWMwLTEuMzggMS4xMi0yLjUgMi41LTIuNS42OSAwIDEuMzIuMjggMS43Ny43NGwuNzMuNzIuNzMtLjczYy40NS0uNDUgMS4wOC0uNzMgMS43Ny0uNzMgMS4zOCAwIDIuNSAxLjEyIDIuNSAyLjUgMCAuNjktLjI4IDEuMzItLjczIDEuNzd6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ibWFpbCI+PHBhdGggZD0iTTIwIDRINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDE4YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptMCA0bC04IDUtOC01VjZsOCA1IDgtNXYyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9Im1hcmt1bnJlYWQiPjxwYXRoIGQ9Ik0yMCA0SDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAxOGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bTAgNGwtOCA1LTgtNVY2bDggNSA4LTV2MnoiPjwvcGF0aD48L2c+CjxnIGlkPSJtYXJrdW5yZWFkLW1haWxib3giPjxwYXRoIGQ9Ik0yMCA2SDEwdjZIOFY0aDZWMEg2djZINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY4YzAtMS4xLS45LTItMi0yeiI+PC9wYXRoPjwvZz4KPGcgaWQ9Im1lbnUiPjxwYXRoIGQ9Ik0zIDE4aDE4di0ySDN2MnptMC01aDE4di0ySDN2MnptMC03djJoMThWNkgzeiI+PC9wYXRoPjwvZz4KPGcgaWQ9Im1vcmUtaG9yaXoiPjxwYXRoIGQ9Ik02IDEwYy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptMTIgMGMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bS02IDBjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yeiI+PC9wYXRoPjwvZz4KPGcgaWQ9Im1vcmUtdmVydCI+PHBhdGggZD0iTTEyIDhjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyem0wIDJjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem0wIDZjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yeiI+PC9wYXRoPjwvZz4KPGcgaWQ9Im1vdG9yY3ljbGUiPjxwYXRoIGQ9Ik0xOS40NCA5LjAzTDE1LjQxIDVIMTF2MmgzLjU5bDIgMkg1Yy0yLjggMC01IDIuMi01IDVzMi4yIDUgNSA1YzIuNDYgMCA0LjQ1LTEuNjkgNC45LTRoMS42NWwyLjc3LTIuNzdjLS4yMS41NC0uMzIgMS4xNC0uMzIgMS43NyAwIDIuOCAyLjIgNSA1IDVzNS0yLjIgNS01YzAtMi42NS0xLjk3LTQuNzctNC41Ni00Ljk3ek03LjgyIDE1QzcuNCAxNi4xNSA2LjI4IDE3IDUgMTdjLTEuNjMgMC0zLTEuMzctMy0zczEuMzctMyAzLTNjMS4yOCAwIDIuNC44NSAyLjgyIDJINXYyaDIuODJ6TTE5IDE3Yy0xLjY2IDAtMy0xLjM0LTMtM3MxLjM0LTMgMy0zIDMgMS4zNCAzIDMtMS4zNCAzLTMgM3oiPjwvcGF0aD48L2c+CjxnIGlkPSJtb3ZlLXRvLWluYm94Ij48cGF0aCBkPSJNMTkgM0g0Ljk5Yy0xLjExIDAtMS45OC45LTEuOTggMkwzIDE5YzAgMS4xLjg4IDIgMS45OSAySDE5YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTJoLTRjMCAxLjY2LTEuMzUgMy0zIDNzLTMtMS4zNC0zLTNINC45OVY1SDE5djEwem0tMy01aC0yVjdoLTR2M0g4bDQgNCA0LTR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ibmV4dC13ZWVrIj48cGF0aCBkPSJNMjAgN2gtNFY1YzAtLjU1LS4yMi0xLjA1LS41OS0xLjQxQzE1LjA1IDMuMjIgMTQuNTUgMyAxNCAzaC00Yy0xLjEgMC0yIC45LTIgMnYySDRjLTEuMSAwLTIgLjktMiAydjExYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWOWMwLTEuMS0uOS0yLTItMnpNMTAgNWg0djJoLTRWNXptMSAxMy41bC0xLTEgMy0zLTMtMyAxLTEgNCA0LTQgNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJub3RlLWFkZCI+PHBhdGggZD0iTTE0IDJINmMtMS4xIDAtMS45OS45LTEuOTkgMkw0IDIwYzAgMS4xLjg5IDIgMS45OSAySDE4YzEuMSAwIDItLjkgMi0yVjhsLTYtNnptMiAxNGgtM3YzaC0ydi0zSDh2LTJoM3YtM2gydjNoM3Yyem0tMy03VjMuNUwxOC41IDlIMTN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ib2ZmbGluZS1waW4iPjxwYXRoIGQ9Ik0xMiAyQzYuNSAyIDIgNi41IDIgMTJzNC41IDEwIDEwIDEwIDEwLTQuNSAxMC0xMFMxNy41IDIgMTIgMnptNSAxNkg3di0yaDEwdjJ6bS02LjctNEw3IDEwLjdsMS40LTEuNCAxLjkgMS45IDUuMy01LjNMMTcgNy4zIDEwLjMgMTR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ib3BhY2l0eSI+PHBhdGggZD0iTTE3LjY2IDhMMTIgMi4zNSA2LjM0IDhDNC43OCA5LjU2IDQgMTEuNjQgNCAxMy42NHMuNzggNC4xMSAyLjM0IDUuNjcgMy42MSAyLjM1IDUuNjYgMi4zNSA0LjEtLjc5IDUuNjYtMi4zNVMyMCAxNS42NCAyMCAxMy42NCAxOS4yMiA5LjU2IDE3LjY2IDh6TTYgMTRjLjAxLTIgLjYyLTMuMjcgMS43Ni00LjRMMTIgNS4yN2w0LjI0IDQuMzhDMTcuMzggMTAuNzcgMTcuOTkgMTIgMTggMTRINnoiPjwvcGF0aD48L2c+CjxnIGlkPSJvcGVuLWluLWJyb3dzZXIiPjxwYXRoIGQ9Ik0xOSA0SDVjLTEuMTEgMC0yIC45LTIgMnYxMmMwIDEuMS44OSAyIDIgMmg0di0ySDVWOGgxNHYxMGgtNHYyaDRjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uODktMi0yLTJ6bS03IDZsLTQgNGgzdjZoMnYtNmgzbC00LTR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ib3Blbi1pbi1uZXciPjxwYXRoIGQ9Ik0xOSAxOUg1VjVoN1YzSDVjLTEuMTEgMC0yIC45LTIgMnYxNGMwIDEuMS44OSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMnYtN2gtMnY3ek0xNCAzdjJoMy41OWwtOS44MyA5LjgzIDEuNDEgMS40MUwxOSA2LjQxVjEwaDJWM2gtN3oiPjwvcGF0aD48L2c+CjxnIGlkPSJvcGVuLXdpdGgiPjxwYXRoIGQ9Ik0xMCA5aDRWNmgzbC01LTUtNSA1aDN2M3ptLTEgMUg2VjdsLTUgNSA1IDV2LTNoM3YtNHptMTQgMmwtNS01djNoLTN2NGgzdjNsNS01em0tOSAzaC00djNIN2w1IDUgNS01aC0zdi0zeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InBhZ2V2aWV3Ij48cGF0aCBkPSJNMTEuNSA5QzEwLjEyIDkgOSAxMC4xMiA5IDExLjVzMS4xMiAyLjUgMi41IDIuNSAyLjUtMS4xMiAyLjUtMi41UzEyLjg4IDkgMTEuNSA5ek0yMCA0SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptLTMuMjEgMTQuMjFsLTIuOTEtMi45MWMtLjY5LjQ0LTEuNTEuNy0yLjM5LjdDOS4wMSAxNiA3IDEzLjk5IDcgMTEuNVM5LjAxIDcgMTEuNSA3IDE2IDkuMDEgMTYgMTEuNWMwIC44OC0uMjYgMS42OS0uNyAyLjM5bDIuOTEgMi45LTEuNDIgMS40MnoiPjwvcGF0aD48L2c+CjxnIGlkPSJwYW4tdG9vbCI+PHBhdGggZD0iTTIzIDUuNVYyMGMwIDIuMi0xLjggNC00IDRoLTcuM2MtMS4wOCAwLTIuMS0uNDMtMi44NS0xLjE5TDEgMTQuODNzMS4yNi0xLjIzIDEuMy0xLjI1Yy4yMi0uMTkuNDktLjI5Ljc5LS4yOS4yMiAwIC40Mi4wNi42LjE2LjA0LjAxIDQuMzEgMi40NiA0LjMxIDIuNDZWNGMwLS44My42Ny0xLjUgMS41LTEuNVMxMSAzLjE3IDExIDR2N2gxVjEuNWMwLS44My42Ny0xLjUgMS41LTEuNVMxNSAuNjcgMTUgMS41VjExaDFWMi41YzAtLjgzLjY3LTEuNSAxLjUtMS41czEuNS42NyAxLjUgMS41VjExaDFWNS41YzAtLjgzLjY3LTEuNSAxLjUtMS41czEuNS42NyAxLjUgMS41eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InBheW1lbnQiPjxwYXRoIGQ9Ik0yMCA0SDRjLTEuMTEgMC0xLjk5Ljg5LTEuOTkgMkwyIDE4YzAgMS4xMS44OSAyIDIgMmgxNmMxLjExIDAgMi0uODkgMi0yVjZjMC0xLjExLS44OS0yLTItMnptMCAxNEg0di02aDE2djZ6bTAtMTBINFY2aDE2djJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icGVybS1jYW1lcmEtbWljIj48cGF0aCBkPSJNMjAgNWgtMy4xN0wxNSAzSDlMNy4xNyA1SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoN3YtMi4wOWMtMi44My0uNDgtNS0yLjk0LTUtNS45MWgyYzAgMi4yMSAxLjc5IDQgNCA0czQtMS43OSA0LTRoMmMwIDIuOTctMi4xNyA1LjQzLTUgNS45MVYyMWg3YzEuMSAwIDItLjkgMi0yVjdjMC0xLjEtLjktMi0yLTJ6bS02IDhjMCAxLjEtLjkgMi0yIDJzLTItLjktMi0yVjljMC0xLjEuOS0yIDItMnMyIC45IDIgMnY0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InBlcm0tY29udGFjdC1jYWxlbmRhciI+PHBhdGggZD0iTTE5IDNoLTFWMWgtMnYySDhWMUg2djJINWMtMS4xMSAwLTIgLjktMiAydjE0YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS03IDNjMS42NiAwIDMgMS4zNCAzIDNzLTEuMzQgMy0zIDMtMy0xLjM0LTMtMyAxLjM0LTMgMy0zem02IDEySDZ2LTFjMC0yIDQtMy4xIDYtMy4xczYgMS4xIDYgMy4xdjF6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icGVybS1kYXRhLXNldHRpbmciPjxwYXRoIGQ9Ik0xOC45OSAxMS41Yy4zNCAwIC42Ny4wMyAxIC4wN0wyMCAwIDAgMjBoMTEuNTZjLS4wNC0uMzMtLjA3LS42Ni0uMDctMSAwLTQuMTQgMy4zNi03LjUgNy41LTcuNXptMy43MSA3Ljk5Yy4wMi0uMTYuMDQtLjMyLjA0LS40OSAwLS4xNy0uMDEtLjMzLS4wNC0uNDlsMS4wNi0uODNjLjA5LS4wOC4xMi0uMjEuMDYtLjMybC0xLTEuNzNjLS4wNi0uMTEtLjE5LS4xNS0uMzEtLjExbC0xLjI0LjVjLS4yNi0uMi0uNTQtLjM3LS44NS0uNDlsLS4xOS0xLjMyYy0uMDEtLjEyLS4xMi0uMjEtLjI0LS4yMWgtMmMtLjEyIDAtLjIzLjA5LS4yNS4yMWwtLjE5IDEuMzJjLS4zLjEzLS41OS4yOS0uODUuNDlsLTEuMjQtLjVjLS4xMS0uMDQtLjI0IDAtLjMxLjExbC0xIDEuNzNjLS4wNi4xMS0uMDQuMjQuMDYuMzJsMS4wNi44M2MtLjAyLjE2LS4wMy4zMi0uMDMuNDkgMCAuMTcuMDEuMzMuMDMuNDlsLTEuMDYuODNjLS4wOS4wOC0uMTIuMjEtLjA2LjMybDEgMS43M2MuMDYuMTEuMTkuMTUuMzEuMTFsMS4yNC0uNWMuMjYuMi41NC4zNy44NS40OWwuMTkgMS4zMmMuMDIuMTIuMTIuMjEuMjUuMjFoMmMuMTIgMCAuMjMtLjA5LjI1LS4yMWwuMTktMS4zMmMuMy0uMTMuNTktLjI5Ljg0LS40OWwxLjI1LjVjLjExLjA0LjI0IDAgLjMxLS4xMWwxLTEuNzNjLjA2LS4xMS4wMy0uMjQtLjA2LS4zMmwtMS4wNy0uODN6bS0zLjcxIDEuMDFjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InBlcm0tZGV2aWNlLWluZm9ybWF0aW9uIj48cGF0aCBkPSJNMTMgN2gtMnYyaDJWN3ptMCA0aC0ydjZoMnYtNnptNC05Ljk5TDcgMWMtMS4xIDAtMiAuOS0yIDJ2MThjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTEuOTktMi0xLjk5ek0xNyAxOUg3VjVoMTB2MTR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icGVybS1pZGVudGl0eSI+PHBhdGggZD0iTTEyIDUuOWMxLjE2IDAgMi4xLjk0IDIuMSAyLjFzLS45NCAyLjEtMi4xIDIuMVM5LjkgOS4xNiA5LjkgOHMuOTQtMi4xIDIuMS0yLjFtMCA5YzIuOTcgMCA2LjEgMS40NiA2LjEgMi4xdjEuMUg1LjlWMTdjMC0uNjQgMy4xMy0yLjEgNi4xLTIuMU0xMiA0QzkuNzkgNCA4IDUuNzkgOCA4czEuNzkgNCA0IDQgNC0xLjc5IDQtNC0xLjc5LTQtNC00em0wIDljLTIuNjcgMC04IDEuMzQtOCA0djNoMTZ2LTNjMC0yLjY2LTUuMzMtNC04LTR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icGVybS1tZWRpYSI+PHBhdGggZD0iTTIgNkgwdjVoLjAxTDAgMjBjMCAxLjEuOSAyIDIgMmgxOHYtMkgyVjZ6bTIwLTJoLThsLTItMkg2Yy0xLjEgMC0xLjk5LjktMS45OSAyTDQgMTZjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yek03IDE1bDQuNS02IDMuNSA0LjUxIDIuNS0zLjAxTDIxIDE1SDd6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icGVybS1waG9uZS1tc2ciPjxwYXRoIGQ9Ik0yMCAxNS41Yy0xLjI1IDAtMi40NS0uMi0zLjU3LS41Ny0uMzUtLjExLS43NC0uMDMtMS4wMi4yNGwtMi4yIDIuMmMtMi44My0xLjQ0LTUuMTUtMy43NS02LjU5LTYuNThsMi4yLTIuMjFjLjI4LS4yNy4zNi0uNjYuMjUtMS4wMUM4LjcgNi40NSA4LjUgNS4yNSA4LjUgNGMwLS41NS0uNDUtMS0xLTFINGMtLjU1IDAtMSAuNDUtMSAxIDAgOS4zOSA3LjYxIDE3IDE3IDE3IC41NSAwIDEtLjQ1IDEtMXYtMy41YzAtLjU1LS40NS0xLTEtMXpNMTIgM3YxMGwzLTNoNlYzaC05eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InBlcm0tc2Nhbi13aWZpIj48cGF0aCBkPSJNMTIgM0M2Ljk1IDMgMy4xNSA0Ljg1IDAgNy4yM0wxMiAyMiAyNCA3LjI1QzIwLjg1IDQuODcgMTcuMDUgMyAxMiAzem0xIDEzaC0ydi02aDJ2NnptLTItOFY2aDJ2MmgtMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJwZXRzIj48Y2lyY2xlIGN4PSI0LjUiIGN5PSI5LjUiIHI9IjIuNSI+PC9jaXJjbGU+PGNpcmNsZSBjeD0iOSIgY3k9IjUuNSIgcj0iMi41Ij48L2NpcmNsZT48Y2lyY2xlIGN4PSIxNSIgY3k9IjUuNSIgcj0iMi41Ij48L2NpcmNsZT48Y2lyY2xlIGN4PSIxOS41IiBjeT0iOS41IiByPSIyLjUiPjwvY2lyY2xlPjxwYXRoIGQ9Ik0xNy4zNCAxNC44NmMtLjg3LTEuMDItMS42LTEuODktMi40OC0yLjkxLS40Ni0uNTQtMS4wNS0xLjA4LTEuNzUtMS4zMi0uMTEtLjA0LS4yMi0uMDctLjMzLS4wOS0uMjUtLjA0LS41Mi0uMDQtLjc4LS4wNHMtLjUzIDAtLjc5LjA1Yy0uMTEuMDItLjIyLjA1LS4zMy4wOS0uNy4yNC0xLjI4Ljc4LTEuNzUgMS4zMi0uODcgMS4wMi0xLjYgMS44OS0yLjQ4IDIuOTEtMS4zMSAxLjMxLTIuOTIgMi43Ni0yLjYyIDQuNzkuMjkgMS4wMiAxLjAyIDIuMDMgMi4zMyAyLjMyLjczLjE1IDMuMDYtLjQ0IDUuNTQtLjQ0aC4xOGMyLjQ4IDAgNC44MS41OCA1LjU0LjQ0IDEuMzEtLjI5IDIuMDQtMS4zMSAyLjMzLTIuMzIuMzEtMi4wNC0xLjMtMy40OS0yLjYxLTQuOHoiPjwvcGF0aD48L2c+CjxnIGlkPSJwaWN0dXJlLWluLXBpY3R1cmUiPjxwYXRoIGQ9Ik0xOSA3aC04djZoOFY3em0yLTRIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAxLjk4IDIgMS45OGgxOGMxLjEgMCAyLS44OCAyLTEuOThWNWMwLTEuMS0uOS0yLTItMnptMCAxNi4wMUgzVjQuOThoMTh2MTQuMDN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icGljdHVyZS1pbi1waWN0dXJlLWFsdCI+PHBhdGggZD0iTTE5IDExaC04djZoOHYtNnptNCA4VjQuOThDMjMgMy44OCAyMi4xIDMgMjEgM0gzYy0xLjEgMC0yIC44OC0yIDEuOThWMTljMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMnptLTIgLjAySDNWNC45N2gxOHYxNC4wNXoiPjwvcGF0aD48L2c+CjxnIGlkPSJwbGF5LWZvci13b3JrIj48cGF0aCBkPSJNMTEgNXY1LjU5SDcuNWw0LjUgNC41IDQuNS00LjVIMTNWNWgtMnptLTUgOWMwIDMuMzEgMi42OSA2IDYgNnM2LTIuNjkgNi02aC0yYzAgMi4yMS0xLjc5IDQtNCA0cy00LTEuNzktNC00SDZ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icG9seW1lciI+PHBhdGggZD0iTTE5IDRoLTRMNy4xMSAxNi42MyA0LjUgMTIgOSA0SDVMLjUgMTIgNSAyMGg0bDcuODktMTIuNjNMMTkuNSAxMiAxNSAyMGg0bDQuNS04eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InBvd2VyLXNldHRpbmdzLW5ldyI+PHBhdGggZD0iTTEzIDNoLTJ2MTBoMlYzem00LjgzIDIuMTdsLTEuNDIgMS40MkMxNy45OSA3Ljg2IDE5IDkuODEgMTkgMTJjMCAzLjg3LTMuMTMgNy03IDdzLTctMy4xMy03LTdjMC0yLjE5IDEuMDEtNC4xNCAyLjU4LTUuNDJMNi4xNyA1LjE3QzQuMjMgNi44MiAzIDkuMjYgMyAxMmMwIDQuOTcgNC4wMyA5IDkgOXM5LTQuMDMgOS05YzAtMi43NC0xLjIzLTUuMTgtMy4xNy02LjgzeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InByZWduYW50LXdvbWFuIj48cGF0aCBkPSJNOSA0YzAtMS4xMS44OS0yIDItMnMyIC44OSAyIDItLjg5IDItMiAyLTItLjg5LTItMnptNyA5Yy0uMDEtMS4zNC0uODMtMi41MS0yLTMgMC0xLjY2LTEuMzQtMy0zLTNzLTMgMS4zNC0zIDN2N2gydjVoM3YtNWgzdi00eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InByaW50Ij48cGF0aCBkPSJNMTkgOEg1Yy0xLjY2IDAtMyAxLjM0LTMgM3Y2aDR2NGgxMnYtNGg0di02YzAtMS42Ni0xLjM0LTMtMy0zem0tMyAxMUg4di01aDh2NXptMy03Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bS0xLTlINnY0aDEyVjN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icXVlcnktYnVpbGRlciI+PHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHptLjUtMTNIMTF2Nmw1LjI1IDMuMTUuNzUtMS4yMy00LjUtMi42N3oiPjwvcGF0aD48L2c+CjxnIGlkPSJxdWVzdGlvbi1hbnN3ZXIiPjxwYXRoIGQ9Ik0yMSA2aC0ydjlINnYyYzAgLjU1LjQ1IDEgMSAxaDExbDQgNFY3YzAtLjU1LS40NS0xLTEtMXptLTQgNlYzYzAtLjU1LS40NS0xLTEtMUgzYy0uNTUgMC0xIC40NS0xIDF2MTRsNC00aDEwYy41NSAwIDEtLjQ1IDEtMXoiPjwvcGF0aD48L2c+CjxnIGlkPSJyYWRpby1idXR0b24tY2hlY2tlZCI+PHBhdGggZD0iTTEyIDdjLTIuNzYgMC01IDIuMjQtNSA1czIuMjQgNSA1IDUgNS0yLjI0IDUtNS0yLjI0LTUtNS01em0wLTVDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InJhZGlvLWJ1dHRvbi11bmNoZWNrZWQiPjxwYXRoIGQ9Ik0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiPjwvcGF0aD48L2c+CjxnIGlkPSJyZWNlaXB0Ij48cGF0aCBkPSJNMTggMTdINnYtMmgxMnYyem0wLTRINnYtMmgxMnYyem0wLTRINlY3aDEydjJ6TTMgMjJsMS41LTEuNUw2IDIybDEuNS0xLjVMOSAyMmwxLjUtMS41TDEyIDIybDEuNS0xLjVMMTUgMjJsMS41LTEuNUwxOCAyMmwxLjUtMS41TDIxIDIyVjJsLTEuNSAxLjVMMTggMmwtMS41IDEuNUwxNSAybC0xLjUgMS41TDEyIDJsLTEuNSAxLjVMOSAyIDcuNSAzLjUgNiAyIDQuNSAzLjUgMyAydjIweiI+PC9wYXRoPjwvZz4KPGcgaWQ9InJlY29yZC12b2ljZS1vdmVyIj48Y2lyY2xlIGN4PSI5IiBjeT0iOSIgcj0iNCI+PC9jaXJjbGU+PHBhdGggZD0iTTkgMTVjLTIuNjcgMC04IDEuMzQtOCA0djJoMTZ2LTJjMC0yLjY2LTUuMzMtNC04LTR6bTcuNzYtOS42NGwtMS42OCAxLjY5Yy44NCAxLjE4Ljg0IDIuNzEgMCAzLjg5bDEuNjggMS42OWMyLjAyLTIuMDIgMi4wMi01LjA3IDAtNy4yN3pNMjAuMDcgMmwtMS42MyAxLjYzYzIuNzcgMy4wMiAyLjc3IDcuNTYgMCAxMC43NEwyMC4wNyAxNmMzLjktMy44OSAzLjkxLTkuOTUgMC0xNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJyZWRlZW0iPjxwYXRoIGQ9Ik0yMCA2aC0yLjE4Yy4xMS0uMzEuMTgtLjY1LjE4LTEgMC0xLjY2LTEuMzQtMy0zLTMtMS4wNSAwLTEuOTYuNTQtMi41IDEuMzVsLS41LjY3LS41LS42OEMxMC45NiAyLjU0IDEwLjA1IDIgOSAyIDcuMzQgMiA2IDMuMzQgNiA1YzAgLjM1LjA3LjY5LjE4IDFINGMtMS4xMSAwLTEuOTkuODktMS45OSAyTDIgMTljMCAxLjExLjg5IDIgMiAyaDE2YzEuMTEgMCAyLS44OSAyLTJWOGMwLTEuMTEtLjg5LTItMi0yem0tNS0yYy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6TTkgNGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem0xMSAxNUg0di0yaDE2djJ6bTAtNUg0VjhoNS4wOEw3IDEwLjgzIDguNjIgMTIgMTEgOC43NmwxLTEuMzYgMSAxLjM2TDE1LjM4IDEyIDE3IDEwLjgzIDE0LjkyIDhIMjB2NnoiPjwvcGF0aD48L2c+CjxnIGlkPSJyZWRvIj48cGF0aCBkPSJNMTguNCAxMC42QzE2LjU1IDguOTkgMTQuMTUgOCAxMS41IDhjLTQuNjUgMC04LjU4IDMuMDMtOS45NiA3LjIyTDMuOSAxNmMxLjA1LTMuMTkgNC4wNS01LjUgNy42LTUuNSAxLjk1IDAgMy43My43MiA1LjEyIDEuODhMMTMgMTZoOVY3bC0zLjYgMy42eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InJlZnJlc2giPjxwYXRoIGQ9Ik0xNy42NSA2LjM1QzE2LjIgNC45IDE0LjIxIDQgMTIgNGMtNC40MiAwLTcuOTkgMy41OC03Ljk5IDhzMy41NyA4IDcuOTkgOGMzLjczIDAgNi44NC0yLjU1IDcuNzMtNmgtMi4wOGMtLjgyIDIuMzMtMy4wNCA0LTUuNjUgNC0zLjMxIDAtNi0yLjY5LTYtNnMyLjY5LTYgNi02YzEuNjYgMCAzLjE0LjY5IDQuMjIgMS43OEwxMyAxMWg3VjRsLTIuMzUgMi4zNXoiPjwvcGF0aD48L2c+CjxnIGlkPSJyZW1vdmUiPjxwYXRoIGQ9Ik0xOSAxM0g1di0yaDE0djJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icmVtb3ZlLWNpcmNsZSI+PHBhdGggZD0iTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTUgMTFIN3YtMmgxMHYyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InJlbW92ZS1jaXJjbGUtb3V0bGluZSI+PHBhdGggZD0iTTcgMTF2MmgxMHYtMkg3em01LTlDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InJlbW92ZS1zaG9wcGluZy1jYXJ0Ij48cGF0aCBkPSJNMjIuNzMgMjIuNzNMMi43NyAyLjc3IDIgMmwtLjczLS43M0wwIDIuNTRsNC4zOSA0LjM5IDIuMjEgNC42Ni0xLjM1IDIuNDVjLS4xNi4yOC0uMjUuNjEtLjI1Ljk2IDAgMS4xLjkgMiAyIDJoNy40NmwxLjM4IDEuMzhjLS41LjM2LS44My45NS0uODMgMS42MiAwIDEuMS44OSAyIDEuOTkgMiAuNjcgMCAxLjI2LS4zMyAxLjYyLS44NEwyMS40NiAyNGwxLjI3LTEuMjd6TTcuNDIgMTVjLS4xNCAwLS4yNS0uMTEtLjI1LS4yNWwuMDMtLjEyLjktMS42M2gyLjM2bDIgMkg3LjQyem04LjEzLTJjLjc1IDAgMS40MS0uNDEgMS43NS0xLjAzbDMuNTgtNi40OWMuMDgtLjE0LjEyLS4zMS4xMi0uNDggMC0uNTUtLjQ1LTEtMS0xSDYuNTRsOS4wMSA5ek03IDE4Yy0xLjEgMC0xLjk5LjktMS45OSAyUzUuOSAyMiA3IDIyczItLjkgMi0yLS45LTItMi0yeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InJlb3JkZXIiPjxwYXRoIGQ9Ik0zIDE1aDE4di0ySDN2MnptMCA0aDE4di0ySDN2MnptMC04aDE4VjlIM3Yyem0wLTZ2MmgxOFY1SDN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icmVwbHkiPjxwYXRoIGQ9Ik0xMCA5VjVsLTcgNyA3IDd2LTQuMWM1IDAgOC41IDEuNiAxMSA1LjEtMS01LTQtMTAtMTEtMTF6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icmVwbHktYWxsIj48cGF0aCBkPSJNNyA4VjVsLTcgNyA3IDd2LTNsLTQtNCA0LTR6bTYgMVY1bC03IDcgNyA3di00LjFjNSAwIDguNSAxLjYgMTEgNS4xLTEtNS00LTEwLTExLTExeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InJlcG9ydCI+PHBhdGggZD0iTTE1LjczIDNIOC4yN0wzIDguMjd2Ny40Nkw4LjI3IDIxaDcuNDZMMjEgMTUuNzNWOC4yN0wxNS43MyAzek0xMiAxNy4zYy0uNzIgMC0xLjMtLjU4LTEuMy0xLjMgMC0uNzIuNTgtMS4zIDEuMy0xLjMuNzIgMCAxLjMuNTggMS4zIDEuMyAwIC43Mi0uNTggMS4zLTEuMyAxLjN6bTEtNC4zaC0yVjdoMnY2eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InJlcG9ydC1wcm9ibGVtIj48cGF0aCBkPSJNMSAyMWgyMkwxMiAyIDEgMjF6bTEyLTNoLTJ2LTJoMnYyem0wLTRoLTJ2LTRoMnY0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InJlc3RvcmUiPjxwYXRoIGQ9Ik0xMyAzYy00Ljk3IDAtOSA0LjAzLTkgOUgxbDMuODkgMy44OS4wNy4xNEw5IDEySDZjMC0zLjg3IDMuMTMtNyA3LTdzNyAzLjEzIDcgNy0zLjEzIDctNyA3Yy0xLjkzIDAtMy42OC0uNzktNC45NC0yLjA2bC0xLjQyIDEuNDJDOC4yNyAxOS45OSAxMC41MSAyMSAxMyAyMWM0Ljk3IDAgOS00LjAzIDktOXMtNC4wMy05LTktOXptLTEgNXY1bDQuMjggMi41NC43Mi0xLjIxLTMuNS0yLjA4VjhIMTJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icmVzdG9yZS1wYWdlIj48cGF0aCBkPSJNMTQgMkg2Yy0xLjEgMC0xLjk5LjktMS45OSAyTDQgMjBjMCAxLjEuODkgMiAxLjk5IDJIMThjMS4xIDAgMi0uOSAyLTJWOGwtNi02em0tMiAxNmMtMi4wNSAwLTMuODEtMS4yNC00LjU4LTNoMS43MWMuNjMuOSAxLjY4IDEuNSAyLjg3IDEuNSAxLjkzIDAgMy41LTEuNTcgMy41LTMuNVMxMy45MyA5LjUgMTIgOS41Yy0xLjM1IDAtMi41Mi43OC0zLjEgMS45bDEuNiAxLjZoLTRWOWwxLjMgMS4zQzguNjkgOC45MiAxMC4yMyA4IDEyIDhjMi43NiAwIDUgMi4yNCA1IDVzLTIuMjQgNS01IDV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icm9vbSI+PHBhdGggZD0iTTEyIDJDOC4xMyAyIDUgNS4xMyA1IDljMCA1LjI1IDcgMTMgNyAxM3M3LTcuNzUgNy0xM2MwLTMuODctMy4xMy03LTctN3ptMCA5LjVjLTEuMzggMC0yLjUtMS4xMi0yLjUtMi41czEuMTItMi41IDIuNS0yLjUgMi41IDEuMTIgMi41IDIuNS0xLjEyIDIuNS0yLjUgMi41eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InJvdW5kZWQtY29ybmVyIj48cGF0aCBkPSJNMTkgMTloMnYyaC0ydi0yem0wLTJoMnYtMmgtMnYyek0zIDEzaDJ2LTJIM3Yyem0wIDRoMnYtMkgzdjJ6bTAtOGgyVjdIM3Yyem0wLTRoMlYzSDN2MnptNCAwaDJWM0g3djJ6bTggMTZoMnYtMmgtMnYyem0tNCAwaDJ2LTJoLTJ2MnptNCAwaDJ2LTJoLTJ2MnptLTggMGgydi0ySDd2MnptLTQgMGgydi0ySDN2MnpNMjEgOGMwLTIuNzYtMi4yNC01LTUtNWgtNXYyaDVjMS42NSAwIDMgMS4zNSAzIDN2NWgyVjh6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icm93aW5nIj48cGF0aCBkPSJNOC41IDE0LjVMNCAxOWwxLjUgMS41TDkgMTdoMmwtMi41LTIuNXpNMTUgMWMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bTYgMjAuMDFMMTggMjRsLTIuOTktMy4wMVYxOS41bC03LjEtNy4wOWMtLjMxLjA1LS42MS4wNy0uOTEuMDd2LTIuMTZjMS42Ni4wMyAzLjYxLS44NyA0LjY3LTIuMDRsMS40LTEuNTVjLjE5LS4yMS40My0uMzguNjktLjUuMjktLjE0LjYyLS4yMy45Ni0uMjNoLjAzQzE1Ljk5IDYuMDEgMTcgNy4wMiAxNyA4LjI2djUuNzVjMCAuODQtLjM1IDEuNjEtLjkyIDIuMTZsLTMuNTgtMy41OHYtMi4yN2MtLjYzLjUyLTEuNDMgMS4wMi0yLjI5IDEuMzlMMTYuNSAxOEgxOGwzIDMuMDF6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic2F2ZSI+PHBhdGggZD0iTTE3IDNINWMtMS4xMSAwLTIgLjktMiAydjE0YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjdsLTQtNHptLTUgMTZjLTEuNjYgMC0zLTEuMzQtMy0zczEuMzQtMyAzLTMgMyAxLjM0IDMgMy0xLjM0IDMtMyAzem0zLTEwSDVWNWgxMHY0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InNjaGVkdWxlIj48cGF0aCBkPSJNMTEuOTkgMkM2LjQ3IDIgMiA2LjQ4IDIgMTJzNC40NyAxMCA5Ljk5IDEwQzE3LjUyIDIyIDIyIDE3LjUyIDIyIDEyUzE3LjUyIDIgMTEuOTkgMnpNMTIgMjBjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4em0uNS0xM0gxMXY2bDUuMjUgMy4xNS43NS0xLjIzLTQuNS0yLjY3eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InNlYXJjaCI+PHBhdGggZD0iTTE1LjUgMTRoLS43OWwtLjI4LS4yN0MxNS40MSAxMi41OSAxNiAxMS4xMSAxNiA5LjUgMTYgNS45MSAxMy4wOSAzIDkuNSAzUzMgNS45MSAzIDkuNSA1LjkxIDE2IDkuNSAxNmMxLjYxIDAgMy4wOS0uNTkgNC4yMy0xLjU3bC4yNy4yOHYuNzlsNSA0Ljk5TDIwLjQ5IDE5bC00Ljk5LTV6bS02IDBDNy4wMSAxNCA1IDExLjk5IDUgOS41UzcuMDEgNSA5LjUgNSAxNCA3LjAxIDE0IDkuNSAxMS45OSAxNCA5LjUgMTR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic2VsZWN0LWFsbCI+PHBhdGggZD0iTTMgNWgyVjNjLTEuMSAwLTIgLjktMiAyem0wIDhoMnYtMkgzdjJ6bTQgOGgydi0ySDd2MnpNMyA5aDJWN0gzdjJ6bTEwLTZoLTJ2MmgyVjN6bTYgMHYyaDJjMC0xLjEtLjktMi0yLTJ6TTUgMjF2LTJIM2MwIDEuMS45IDIgMiAyem0tMi00aDJ2LTJIM3Yyek05IDNIN3YyaDJWM3ptMiAxOGgydi0yaC0ydjJ6bTgtOGgydi0yaC0ydjJ6bTAgOGMxLjEgMCAyLS45IDItMmgtMnYyem0wLTEyaDJWN2gtMnYyem0wIDhoMnYtMmgtMnYyem0tNCA0aDJ2LTJoLTJ2MnptMC0xNmgyVjNoLTJ2MnpNNyAxN2gxMFY3SDd2MTB6bTItOGg2djZIOVY5eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InNlbmQiPjxwYXRoIGQ9Ik0yLjAxIDIxTDIzIDEyIDIuMDEgMyAyIDEwbDE1IDItMTUgMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJzZXR0aW5ncyI+PHBhdGggZD0iTTE5LjQzIDEyLjk4Yy4wNC0uMzIuMDctLjY0LjA3LS45OHMtLjAzLS42Ni0uMDctLjk4bDIuMTEtMS42NWMuMTktLjE1LjI0LS40Mi4xMi0uNjRsLTItMy40NmMtLjEyLS4yMi0uMzktLjMtLjYxLS4yMmwtMi40OSAxYy0uNTItLjQtMS4wOC0uNzMtMS42OS0uOThsLS4zOC0yLjY1QzE0LjQ2IDIuMTggMTQuMjUgMiAxNCAyaC00Yy0uMjUgMC0uNDYuMTgtLjQ5LjQybC0uMzggMi42NWMtLjYxLjI1LTEuMTcuNTktMS42OS45OGwtMi40OS0xYy0uMjMtLjA5LS40OSAwLS42MS4yMmwtMiAzLjQ2Yy0uMTMuMjItLjA3LjQ5LjEyLjY0bDIuMTEgMS42NWMtLjA0LjMyLS4wNy42NS0uMDcuOThzLjAzLjY2LjA3Ljk4bC0yLjExIDEuNjVjLS4xOS4xNS0uMjQuNDItLjEyLjY0bDIgMy40NmMuMTIuMjIuMzkuMy42MS4yMmwyLjQ5LTFjLjUyLjQgMS4wOC43MyAxLjY5Ljk4bC4zOCAyLjY1Yy4wMy4yNC4yNC40Mi40OS40Mmg0Yy4yNSAwIC40Ni0uMTguNDktLjQybC4zOC0yLjY1Yy42MS0uMjUgMS4xNy0uNTkgMS42OS0uOThsMi40OSAxYy4yMy4wOS40OSAwIC42MS0uMjJsMi0zLjQ2Yy4xMi0uMjIuMDctLjQ5LS4xMi0uNjRsLTIuMTEtMS42NXpNMTIgMTUuNWMtMS45MyAwLTMuNS0xLjU3LTMuNS0zLjVzMS41Ny0zLjUgMy41LTMuNSAzLjUgMS41NyAzLjUgMy41LTEuNTcgMy41LTMuNSAzLjV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic2V0dGluZ3MtYXBwbGljYXRpb25zIj48cGF0aCBkPSJNMTIgMTBjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem03LTdINWMtMS4xMSAwLTIgLjktMiAydjE0YzAgMS4xLjg5IDIgMiAyaDE0YzEuMTEgMCAyLS45IDItMlY1YzAtMS4xLS44OS0yLTItMnptLTEuNzUgOWMwIC4yMy0uMDIuNDYtLjA1LjY4bDEuNDggMS4xNmMuMTMuMTEuMTcuMy4wOC40NWwtMS40IDIuNDJjLS4wOS4xNS0uMjcuMjEtLjQzLjE1bC0xLjc0LS43Yy0uMzYuMjgtLjc2LjUxLTEuMTguNjlsLS4yNiAxLjg1Yy0uMDMuMTctLjE4LjMtLjM1LjNoLTIuOGMtLjE3IDAtLjMyLS4xMy0uMzUtLjI5bC0uMjYtMS44NWMtLjQzLS4xOC0uODItLjQxLTEuMTgtLjY5bC0xLjc0LjdjLS4xNi4wNi0uMzQgMC0uNDMtLjE1bC0xLjQtMi40MmMtLjA5LS4xNS0uMDUtLjM0LjA4LS40NWwxLjQ4LTEuMTZjLS4wMy0uMjMtLjA1LS40Ni0uMDUtLjY5IDAtLjIzLjAyLS40Ni4wNS0uNjhsLTEuNDgtMS4xNmMtLjEzLS4xMS0uMTctLjMtLjA4LS40NWwxLjQtMi40MmMuMDktLjE1LjI3LS4yMS40My0uMTVsMS43NC43Yy4zNi0uMjguNzYtLjUxIDEuMTgtLjY5bC4yNi0xLjg1Yy4wMy0uMTcuMTgtLjMuMzUtLjNoMi44Yy4xNyAwIC4zMi4xMy4zNS4yOWwuMjYgMS44NWMuNDMuMTguODIuNDEgMS4xOC42OWwxLjc0LS43Yy4xNi0uMDYuMzQgMCAuNDMuMTVsMS40IDIuNDJjLjA5LjE1LjA1LjM0LS4wOC40NWwtMS40OCAxLjE2Yy4wMy4yMy4wNS40Ni4wNS42OXoiPjwvcGF0aD48L2c+CjxnIGlkPSJzZXR0aW5ncy1iYWNrdXAtcmVzdG9yZSI+PHBhdGggZD0iTTE0IDEyYzAtMS4xLS45LTItMi0ycy0yIC45LTIgMiAuOSAyIDIgMiAyLS45IDItMnptLTItOWMtNC45NyAwLTkgNC4wMy05IDlIMGw0IDQgNC00SDVjMC0zLjg3IDMuMTMtNyA3LTdzNyAzLjEzIDcgNy0zLjEzIDctNyA3Yy0xLjUxIDAtMi45MS0uNDktNC4wNi0xLjNsLTEuNDIgMS40NEM4LjA0IDIwLjMgOS45NCAyMSAxMiAyMWM0Ljk3IDAgOS00LjAzIDktOXMtNC4wMy05LTktOXoiPjwvcGF0aD48L2c+CjxnIGlkPSJzZXR0aW5ncy1ibHVldG9vdGgiPjxwYXRoIGQ9Ik0xMSAyNGgydi0yaC0ydjJ6bS00IDBoMnYtMkg3djJ6bTggMGgydi0yaC0ydjJ6bTIuNzEtMTguMjlMMTIgMGgtMXY3LjU5TDYuNDEgMyA1IDQuNDEgMTAuNTkgMTAgNSAxNS41OSA2LjQxIDE3IDExIDEyLjQxVjIwaDFsNS43MS01LjcxLTQuMy00LjI5IDQuMy00LjI5ek0xMyAzLjgzbDEuODggMS44OEwxMyA3LjU5VjMuODN6bTEuODggMTAuNDZMMTMgMTYuMTd2LTMuNzZsMS44OCAxLjg4eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InNldHRpbmdzLWJyaWdodG5lc3MiPjxwYXRoIGQ9Ik0yMSAzSDNjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNi4wMUgzVjQuOTloMTh2MTQuMDJ6TTggMTZoMi41bDEuNSAxLjUgMS41LTEuNUgxNnYtMi41bDEuNS0xLjUtMS41LTEuNVY4aC0yLjVMMTIgNi41IDEwLjUgOEg4djIuNUw2LjUgMTIgOCAxMy41VjE2em00LTdjMS42NiAwIDMgMS4zNCAzIDNzLTEuMzQgMy0zIDNWOXoiPjwvcGF0aD48L2c+CjxnIGlkPSJzZXR0aW5ncy1jZWxsIj48cGF0aCBkPSJNNyAyNGgydi0ySDd2MnptNCAwaDJ2LTJoLTJ2MnptNCAwaDJ2LTJoLTJ2MnpNMTYgLjAxTDggMEM2LjkgMCA2IC45IDYgMnYxNmMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJWMmMwLTEuMS0uOS0xLjk5LTItMS45OXpNMTYgMTZIOFY0aDh2MTJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic2V0dGluZ3MtZXRoZXJuZXQiPjxwYXRoIGQ9Ik03Ljc3IDYuNzZMNi4yMyA1LjQ4LjgyIDEybDUuNDEgNi41MiAxLjU0LTEuMjhMMy40MiAxMmw0LjM1LTUuMjR6TTcgMTNoMnYtMkg3djJ6bTEwLTJoLTJ2Mmgydi0yem0tNiAyaDJ2LTJoLTJ2MnptNi43Ny03LjUybC0xLjU0IDEuMjhMMjAuNTggMTJsLTQuMzUgNS4yNCAxLjU0IDEuMjhMMjMuMTggMTJsLTUuNDEtNi41MnoiPjwvcGF0aD48L2c+CjxnIGlkPSJzZXR0aW5ncy1pbnB1dC1hbnRlbm5hIj48cGF0aCBkPSJNMTIgNWMtMy44NyAwLTcgMy4xMy03IDdoMmMwLTIuNzYgMi4yNC01IDUtNXM1IDIuMjQgNSA1aDJjMC0zLjg3LTMuMTMtNy03LTd6bTEgOS4yOWMuODgtLjM5IDEuNS0xLjI2IDEuNS0yLjI5IDAtMS4zOC0xLjEyLTIuNS0yLjUtMi41UzkuNSAxMC42MiA5LjUgMTJjMCAxLjAyLjYyIDEuOSAxLjUgMi4yOXYzLjNMNy41OSAyMSA5IDIyLjQxbDMtMyAzIDNMMTYuNDEgMjEgMTMgMTcuNTl2LTMuM3pNMTIgMUM1LjkzIDEgMSA1LjkzIDEgMTJoMmMwLTQuOTcgNC4wMy05IDktOXM5IDQuMDMgOSA5aDJjMC02LjA3LTQuOTMtMTEtMTEtMTF6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic2V0dGluZ3MtaW5wdXQtY29tcG9uZW50Ij48cGF0aCBkPSJNNSAyYzAtLjU1LS40NS0xLTEtMXMtMSAuNDUtMSAxdjRIMXY2aDZWNkg1VjJ6bTQgMTRjMCAxLjMuODQgMi40IDIgMi44MlYyM2gydi00LjE4YzEuMTYtLjQxIDItMS41MSAyLTIuODJ2LTJIOXYyem0tOCAwYzAgMS4zLjg0IDIuNCAyIDIuODJWMjNoMnYtNC4xOEM2LjE2IDE4LjQgNyAxNy4zIDcgMTZ2LTJIMXYyek0yMSA2VjJjMC0uNTUtLjQ1LTEtMS0xcy0xIC40NS0xIDF2NGgtMnY2aDZWNmgtMnptLTgtNGMwLS41NS0uNDUtMS0xLTFzLTEgLjQ1LTEgMXY0SDl2Nmg2VjZoLTJWMnptNCAxNGMwIDEuMy44NCAyLjQgMiAyLjgyVjIzaDJ2LTQuMThjMS4xNi0uNDEgMi0xLjUxIDItMi44MnYtMmgtNnYyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InNldHRpbmdzLWlucHV0LWNvbXBvc2l0ZSI+PHBhdGggZD0iTTUgMmMwLS41NS0uNDUtMS0xLTFzLTEgLjQ1LTEgMXY0SDF2Nmg2VjZINVYyem00IDE0YzAgMS4zLjg0IDIuNCAyIDIuODJWMjNoMnYtNC4xOGMxLjE2LS40MSAyLTEuNTEgMi0yLjgydi0ySDl2MnptLTggMGMwIDEuMy44NCAyLjQgMiAyLjgyVjIzaDJ2LTQuMThDNi4xNiAxOC40IDcgMTcuMyA3IDE2di0ySDF2MnpNMjEgNlYyYzAtLjU1LS40NS0xLTEtMXMtMSAuNDUtMSAxdjRoLTJ2Nmg2VjZoLTJ6bS04LTRjMC0uNTUtLjQ1LTEtMS0xcy0xIC40NS0xIDF2NEg5djZoNlY2aC0yVjJ6bTQgMTRjMCAxLjMuODQgMi40IDIgMi44MlYyM2gydi00LjE4YzEuMTYtLjQxIDItMS41MSAyLTIuODJ2LTJoLTZ2MnoiPjwvcGF0aD48L2c+CjxnIGlkPSJzZXR0aW5ncy1pbnB1dC1oZG1pIj48cGF0aCBkPSJNMTggN1Y0YzAtMS4xLS45LTItMi0ySDhjLTEuMSAwLTIgLjktMiAydjNINXY2bDMgNnYzaDh2LTNsMy02VjdoLTF6TTggNGg4djNoLTJWNWgtMXYyaC0yVjVoLTF2Mkg4VjR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic2V0dGluZ3MtaW5wdXQtc3ZpZGVvIj48cGF0aCBkPSJNOCAxMS41YzAtLjgzLS42Ny0xLjUtMS41LTEuNVM1IDEwLjY3IDUgMTEuNSA1LjY3IDEzIDYuNSAxMyA4IDEyLjMzIDggMTEuNXptNy01YzAtLjgzLS42Ny0xLjUtMS41LTEuNWgtM0M5LjY3IDUgOSA1LjY3IDkgNi41UzkuNjcgOCAxMC41IDhoM2MuODMgMCAxLjUtLjY3IDEuNS0xLjV6TTguNSAxNWMtLjgzIDAtMS41LjY3LTEuNSAxLjVTNy42NyAxOCA4LjUgMThzMS41LS42NyAxLjUtMS41UzkuMzMgMTUgOC41IDE1ek0xMiAxQzUuOTMgMSAxIDUuOTMgMSAxMnM0LjkzIDExIDExIDExIDExLTQuOTMgMTEtMTFTMTguMDcgMSAxMiAxem0wIDIwYy00Ljk2IDAtOS00LjA0LTktOXM0LjA0LTkgOS05IDkgNC4wNCA5IDktNC4wNCA5LTkgOXptNS41LTExYy0uODMgMC0xLjUuNjctMS41IDEuNXMuNjcgMS41IDEuNSAxLjUgMS41LS42NyAxLjUtMS41LS42Ny0xLjUtMS41LTEuNXptLTIgNWMtLjgzIDAtMS41LjY3LTEuNSAxLjVzLjY3IDEuNSAxLjUgMS41IDEuNS0uNjcgMS41LTEuNS0uNjctMS41LTEuNS0xLjV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic2V0dGluZ3Mtb3ZlcnNjYW4iPjxwYXRoIGQ9Ik0xMi4wMSA1LjVMMTAgOGg0bC0xLjk5LTIuNXpNMTggMTB2NGwyLjUtMS45OUwxOCAxMHpNNiAxMGwtMi41IDIuMDFMNiAxNHYtNHptOCA2aC00bDIuMDEgMi41TDE0IDE2em03LTEzSDNjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNi4wMUgzVjQuOTloMTh2MTQuMDJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic2V0dGluZ3MtcGhvbmUiPjxwYXRoIGQ9Ik0xMyA5aC0ydjJoMlY5em00IDBoLTJ2MmgyVjl6bTMgNi41Yy0xLjI1IDAtMi40NS0uMi0zLjU3LS41Ny0uMzUtLjExLS43NC0uMDMtMS4wMi4yNGwtMi4yIDIuMmMtMi44My0xLjQ0LTUuMTUtMy43NS02LjU5LTYuNThsMi4yLTIuMjFjLjI4LS4yNy4zNi0uNjYuMjUtMS4wMUM4LjcgNi40NSA4LjUgNS4yNSA4LjUgNGMwLS41NS0uNDUtMS0xLTFINGMtLjU1IDAtMSAuNDUtMSAxIDAgOS4zOSA3LjYxIDE3IDE3IDE3IC41NSAwIDEtLjQ1IDEtMXYtMy41YzAtLjU1LS40NS0xLTEtMXpNMTkgOXYyaDJWOWgtMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJzZXR0aW5ncy1wb3dlciI+PHBhdGggZD0iTTcgMjRoMnYtMkg3djJ6bTQgMGgydi0yaC0ydjJ6bTItMjJoLTJ2MTBoMlYyem0zLjU2IDIuNDRsLTEuNDUgMS40NUMxNi44NCA2Ljk0IDE4IDguODMgMTggMTFjMCAzLjMxLTIuNjkgNi02IDZzLTYtMi42OS02LTZjMC0yLjE3IDEuMTYtNC4wNiAyLjg4LTUuMTJMNy40NCA0LjQ0QzUuMzYgNS44OCA0IDguMjggNCAxMWMwIDQuNDIgMy41OCA4IDggOHM4LTMuNTggOC04YzAtMi43Mi0xLjM2LTUuMTItMy40NC02LjU2ek0xNSAyNGgydi0yaC0ydjJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic2V0dGluZ3MtcmVtb3RlIj48cGF0aCBkPSJNMTUgOUg5Yy0uNTUgMC0xIC40NS0xIDF2MTJjMCAuNTUuNDUgMSAxIDFoNmMuNTUgMCAxLS40NSAxLTFWMTBjMC0uNTUtLjQ1LTEtMS0xem0tMyA2Yy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnpNNy4wNSA2LjA1bDEuNDEgMS40MUM5LjM3IDYuNTYgMTAuNjIgNiAxMiA2czIuNjMuNTYgMy41NCAxLjQ2bDEuNDEtMS40MUMxNS42OCA0Ljc4IDEzLjkzIDQgMTIgNHMtMy42OC43OC00Ljk1IDIuMDV6TTEyIDBDOC45NiAwIDYuMjEgMS4yMyA0LjIyIDMuMjJsMS40MSAxLjQxQzcuMjYgMy4wMSA5LjUxIDIgMTIgMnM0Ljc0IDEuMDEgNi4zNiAyLjY0bDEuNDEtMS40MUMxNy43OSAxLjIzIDE1LjA0IDAgMTIgMHoiPjwvcGF0aD48L2c+CjxnIGlkPSJzZXR0aW5ncy12b2ljZSI+PHBhdGggZD0iTTcgMjRoMnYtMkg3djJ6bTUtMTFjMS42NiAwIDIuOTktMS4zNCAyLjk5LTNMMTUgNGMwLTEuNjYtMS4zNC0zLTMtM1M5IDIuMzQgOSA0djZjMCAxLjY2IDEuMzQgMyAzIDN6bS0xIDExaDJ2LTJoLTJ2MnptNCAwaDJ2LTJoLTJ2MnptNC0xNGgtMS43YzAgMy0yLjU0IDUuMS01LjMgNS4xUzYuNyAxMyA2LjcgMTBINWMwIDMuNDEgMi43MiA2LjIzIDYgNi43MlYyMGgydi0zLjI4YzMuMjgtLjQ5IDYtMy4zMSA2LTYuNzJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic2hvcCI+PHBhdGggZD0iTTE2IDZWNGMwLTEuMTEtLjg5LTItMi0yaC00Yy0xLjExIDAtMiAuODktMiAydjJIMnYxM2MwIDEuMTEuODkgMiAyIDJoMTZjMS4xMSAwIDItLjg5IDItMlY2aC02em0tNi0yaDR2MmgtNFY0ek05IDE4VjlsNy41IDRMOSAxOHoiPjwvcGF0aD48L2c+CjxnIGlkPSJzaG9wLXR3byI+PHBhdGggZD0iTTMgOUgxdjExYzAgMS4xMS44OSAyIDIgMmgxNGMxLjExIDAgMi0uODkgMi0ySDNWOXptMTUtNFYzYzAtMS4xMS0uODktMi0yLTJoLTRjLTEuMTEgMC0yIC44OS0yIDJ2Mkg1djExYzAgMS4xMS44OSAyIDIgMmgxNGMxLjExIDAgMi0uODkgMi0yVjVoLTV6bS02LTJoNHYyaC00VjN6bTAgMTJWOGw1LjUgMy01LjUgNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJzaG9wcGluZy1iYXNrZXQiPjxwYXRoIGQ9Ik0xNy4yMSA5bC00LjM4LTYuNTZjLS4xOS0uMjgtLjUxLS40Mi0uODMtLjQyLS4zMiAwLS42NC4xNC0uODMuNDNMNi43OSA5SDJjLS41NSAwLTEgLjQ1LTEgMSAwIC4wOS4wMS4xOC4wNC4yN2wyLjU0IDkuMjdjLjIzLjg0IDEgMS40NiAxLjkyIDEuNDZoMTNjLjkyIDAgMS42OS0uNjIgMS45My0xLjQ2bDIuNTQtOS4yN0wyMyAxMGMwLS41NS0uNDUtMS0xLTFoLTQuNzl6TTkgOWwzLTQuNEwxNSA5SDl6bTMgOGMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic2hvcHBpbmctY2FydCI+PHBhdGggZD0iTTcgMThjLTEuMSAwLTEuOTkuOS0xLjk5IDJTNS45IDIyIDcgMjJzMi0uOSAyLTItLjktMi0yLTJ6TTEgMnYyaDJsMy42IDcuNTktMS4zNSAyLjQ1Yy0uMTYuMjgtLjI1LjYxLS4yNS45NiAwIDEuMS45IDIgMiAyaDEydi0ySDcuNDJjLS4xNCAwLS4yNS0uMTEtLjI1LS4yNWwuMDMtLjEyLjktMS42M2g3LjQ1Yy43NSAwIDEuNDEtLjQxIDEuNzUtMS4wM2wzLjU4LTYuNDljLjA4LS4xNC4xMi0uMzEuMTItLjQ4IDAtLjU1LS40NS0xLTEtMUg1LjIxbC0uOTQtMkgxem0xNiAxNmMtMS4xIDAtMS45OS45LTEuOTkgMnMuODkgMiAxLjk5IDIgMi0uOSAyLTItLjktMi0yLTJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic29ydCI+PHBhdGggZD0iTTMgMThoNnYtMkgzdjJ6TTMgNnYyaDE4VjZIM3ptMCA3aDEydi0ySDN2MnoiPjwvcGF0aD48L2c+CjxnIGlkPSJzcGVha2VyLW5vdGVzIj48cGF0aCBkPSJNMjAgMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMjJsNC00aDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6TTggMTRINnYtMmgydjJ6bTAtM0g2VjloMnYyem0wLTNINlY2aDJ2MnptNyA2aC01di0yaDV2MnptMy0zaC04VjloOHYyem0wLTNoLThWNmg4djJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic3BlYWtlci1ub3Rlcy1vZmYiPjxwYXRoIGQ9Ik0xMC41NCAxMWwtLjU0LS41NEw3LjU0IDggNiA2LjQ2IDIuMzggMi44NCAxLjI3IDEuNzMgMCAzbDIuMDEgMi4wMUwyIDIybDQtNGg5bDUuNzMgNS43M0wyMiAyMi40NiAxNy41NCAxOGwtNy03ek04IDE0SDZ2LTJoMnYyem0tMi0zVjlsMiAySDZ6bTE0LTlINC4wOEwxMCA3LjkyVjZoOHYyaC03LjkybDEgMUgxOHYyaC00LjkybDYuOTkgNi45OUMyMS4xNCAxNy45NSAyMiAxNy4wOCAyMiAxNlY0YzAtMS4xLS45LTItMi0yeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InNwZWxsY2hlY2siPjxwYXRoIGQ9Ik0xMi40NSAxNmgyLjA5TDkuNDMgM0g3LjU3TDIuNDYgMTZoMi4wOWwxLjEyLTNoNS42NGwxLjE0IDN6bS02LjAyLTVMOC41IDUuNDggMTAuNTcgMTFINi40M3ptMTUuMTYuNTlsLTguMDkgOC4wOUw5LjgzIDE2bC0xLjQxIDEuNDEgNS4wOSA1LjA5TDIzIDEzbC0xLjQxLTEuNDF6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic3RhciI+PHBhdGggZD0iTTEyIDE3LjI3TDE4LjE4IDIxbC0xLjY0LTcuMDNMMjIgOS4yNGwtNy4xOS0uNjFMMTIgMiA5LjE5IDguNjMgMiA5LjI0bDUuNDYgNC43M0w1LjgyIDIxeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InN0YXItYm9yZGVyIj48cGF0aCBkPSJNMjIgOS4yNGwtNy4xOS0uNjJMMTIgMiA5LjE5IDguNjMgMiA5LjI0bDUuNDYgNC43M0w1LjgyIDIxIDEyIDE3LjI3IDE4LjE4IDIxbC0xLjYzLTcuMDNMMjIgOS4yNHpNMTIgMTUuNGwtMy43NiAyLjI3IDEtNC4yOC0zLjMyLTIuODggNC4zOC0uMzhMMTIgNi4xbDEuNzEgNC4wNCA0LjM4LjM4LTMuMzIgMi44OCAxIDQuMjhMMTIgMTUuNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJzdGFyLWhhbGYiPjxwYXRoIGQ9Ik0yMiA5LjI0bC03LjE5LS42MkwxMiAyIDkuMTkgOC42MyAyIDkuMjRsNS40NiA0LjczTDUuODIgMjEgMTIgMTcuMjcgMTguMTggMjFsLTEuNjMtNy4wM0wyMiA5LjI0ek0xMiAxNS40VjYuMWwxLjcxIDQuMDQgNC4zOC4zOC0zLjMyIDIuODggMSA0LjI4TDEyIDE1LjR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic3RhcnMiPjxwYXRoIGQ9Ik0xMS45OSAyQzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJTMTcuNTIgMiAxMS45OSAyem00LjI0IDE2TDEyIDE1LjQ1IDcuNzcgMThsMS4xMi00LjgxLTMuNzMtMy4yMyA0LjkyLS40MkwxMiA1bDEuOTIgNC41MyA0LjkyLjQyLTMuNzMgMy4yM0wxNi4yMyAxOHoiPjwvcGF0aD48L2c+CjxnIGlkPSJzdG9yZSI+PHBhdGggZD0iTTIwIDRINHYyaDE2VjR6bTEgMTB2LTJsLTEtNUg0bC0xIDV2MmgxdjZoMTB2LTZoNHY2aDJ2LTZoMXptLTkgNEg2di00aDZ2NHoiPjwvcGF0aD48L2c+CjxnIGlkPSJzdWJkaXJlY3RvcnktYXJyb3ctbGVmdCI+PHBhdGggZD0iTTExIDlsMS40MiAxLjQyTDguODMgMTRIMThWNGgydjEySDguODNsMy41OSAzLjU4TDExIDIxbC02LTYgNi02eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InN1YmRpcmVjdG9yeS1hcnJvdy1yaWdodCI+PHBhdGggZD0iTTE5IDE1bC02IDYtMS40Mi0xLjQyTDE1LjE3IDE2SDRWNGgydjEwaDkuMTdsLTMuNTktMy41OEwxMyA5bDYgNnoiPjwvcGF0aD48L2c+CjxnIGlkPSJzdWJqZWN0Ij48cGF0aCBkPSJNMTQgMTdINHYyaDEwdi0yem02LThINHYyaDE2Vjl6TTQgMTVoMTZ2LTJINHYyek00IDV2MmgxNlY1SDR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic3VwZXJ2aXNvci1hY2NvdW50Ij48cGF0aCBkPSJNMTYuNSAxMmMxLjM4IDAgMi40OS0xLjEyIDIuNDktMi41UzE3Ljg4IDcgMTYuNSA3QzE1LjEyIDcgMTQgOC4xMiAxNCA5LjVzMS4xMiAyLjUgMi41IDIuNXpNOSAxMWMxLjY2IDAgMi45OS0xLjM0IDIuOTktM1MxMC42NiA1IDkgNUM3LjM0IDUgNiA2LjM0IDYgOHMxLjM0IDMgMyAzem03LjUgM2MtMS44MyAwLTUuNS45Mi01LjUgMi43NVYxOWgxMXYtMi4yNWMwLTEuODMtMy42Ny0yLjc1LTUuNS0yLjc1ek05IDEzYy0yLjMzIDAtNyAxLjE3LTcgMy41VjE5aDd2LTIuMjVjMC0uODUuMzMtMi4zNCAyLjM3LTMuNDdDMTAuNSAxMy4xIDkuNjYgMTMgOSAxM3oiPjwvcGF0aD48L2c+CjxnIGlkPSJzd2FwLWhvcml6Ij48cGF0aCBkPSJNNi45OSAxMUwzIDE1bDMuOTkgNHYtM0gxNHYtMkg2Ljk5di0zek0yMSA5bC0zLjk5LTR2M0gxMHYyaDcuMDF2M0wyMSA5eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InN3YXAtdmVydCI+PHBhdGggZD0iTTE2IDE3LjAxVjEwaC0ydjcuMDFoLTNMMTUgMjFsNC0zLjk5aC0zek05IDNMNSA2Ljk5aDNWMTRoMlY2Ljk5aDNMOSAzeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InN3YXAtdmVydGljYWwtY2lyY2xlIj48cGF0aCBkPSJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnpNNi41IDlMMTAgNS41IDEzLjUgOUgxMXY0SDlWOUg2LjV6bTExIDZMMTQgMTguNSAxMC41IDE1SDEzdi00aDJ2NGgyLjV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic3lzdGVtLXVwZGF0ZS1hbHQiPjxwYXRoIGQ9Ik0xMiAxNi41bDQtNGgtM3YtOWgtMnY5SDhsNCA0em05LTEzaC02djEuOTloNnYxNC4wM0gzVjUuNDloNlYzLjVIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMnYtMTRjMC0xLjEtLjktMi0yLTJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idGFiIj48cGF0aCBkPSJNMjEgM0gzYy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZIM1Y1aDEwdjRoOHYxMHoiPjwvcGF0aD48L2c+CjxnIGlkPSJ0YWItdW5zZWxlY3RlZCI+PHBhdGggZD0iTTEgOWgyVjdIMXYyem0wIDRoMnYtMkgxdjJ6bTAtOGgyVjNjLTEuMSAwLTIgLjktMiAyem04IDE2aDJ2LTJIOXYyem0tOC00aDJ2LTJIMXYyem0yIDR2LTJIMWMwIDEuMS45IDIgMiAyek0yMSAzaC04djZoMTBWNWMwLTEuMS0uOS0yLTItMnptMCAxNGgydi0yaC0ydjJ6TTkgNWgyVjNIOXYyek01IDIxaDJ2LTJINXYyek01IDVoMlYzSDV2MnptMTYgMTZjMS4xIDAgMi0uOSAyLTJoLTJ2MnptMC04aDJ2LTJoLTJ2MnptLTggOGgydi0yaC0ydjJ6bTQgMGgydi0yaC0ydjJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idGV4dC1mb3JtYXQiPjxwYXRoIGQ9Ik01IDE3djJoMTR2LTJINXptNC41LTQuMmg1bC45IDIuMmgyLjFMMTIuNzUgNGgtMS41TDYuNSAxNWgyLjFsLjktMi4yek0xMiA1Ljk4TDEzLjg3IDExaC0zLjc0TDEyIDUuOTh6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idGhlYXRlcnMiPjxwYXRoIGQ9Ik0xOCAzdjJoLTJWM0g4djJINlYzSDR2MThoMnYtMmgydjJoOHYtMmgydjJoMlYzaC0yek04IDE3SDZ2LTJoMnYyem0wLTRINnYtMmgydjJ6bTAtNEg2VjdoMnYyem0xMCA4aC0ydi0yaDJ2MnptMC00aC0ydi0yaDJ2MnptMC00aC0yVjdoMnYyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InRodW1iLWRvd24iPjxwYXRoIGQ9Ik0xNSAzSDZjLS44MyAwLTEuNTQuNS0xLjg0IDEuMjJsLTMuMDIgNy4wNWMtLjA5LjIzLS4xNC40Ny0uMTQuNzN2MS45MWwuMDEuMDFMMSAxNGMwIDEuMS45IDIgMiAyaDYuMzFsLS45NSA0LjU3LS4wMy4zMmMwIC40MS4xNy43OS40NCAxLjA2TDkuODMgMjNsNi41OS02LjU5Yy4zNi0uMzYuNTgtLjg2LjU4LTEuNDFWNWMwLTEuMS0uOS0yLTItMnptNCAwdjEyaDRWM2gtNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJ0aHVtYi11cCI+PHBhdGggZD0iTTEgMjFoNFY5SDF2MTJ6bTIyLTExYzAtMS4xLS45LTItMi0yaC02LjMxbC45NS00LjU3LjAzLS4zMmMwLS40MS0uMTctLjc5LS40NC0xLjA2TDE0LjE3IDEgNy41OSA3LjU5QzcuMjIgNy45NSA3IDguNDUgNyA5djEwYzAgMS4xLjkgMiAyIDJoOWMuODMgMCAxLjU0LS41IDEuODQtMS4yMmwzLjAyLTcuMDVjLjA5LS4yMy4xNC0uNDcuMTQtLjczdi0xLjkxbC0uMDEtLjAxTDIzIDEweiI+PC9wYXRoPjwvZz4KPGcgaWQ9InRodW1icy11cC1kb3duIj48cGF0aCBkPSJNMTIgNmMwLS41NS0uNDUtMS0xLTFINS44MmwuNjYtMy4xOC4wMi0uMjNjMC0uMzEtLjEzLS41OS0uMzMtLjhMNS4zOCAwIC40NCA0Ljk0Qy4xNyA1LjIxIDAgNS41OSAwIDZ2Ni41YzAgLjgzLjY3IDEuNSAxLjUgMS41aDYuNzVjLjYyIDAgMS4xNS0uMzggMS4zOC0uOTFsMi4yNi01LjI5Yy4wNy0uMTcuMTEtLjM2LjExLS41NVY2em0xMC41IDRoLTYuNzVjLS42MiAwLTEuMTUuMzgtMS4zOC45MWwtMi4yNiA1LjI5Yy0uMDcuMTctLjExLjM2LS4xMS41NVYxOGMwIC41NS40NSAxIDEgMWg1LjE4bC0uNjYgMy4xOC0uMDIuMjRjMCAuMzEuMTMuNTkuMzMuOGwuNzkuNzggNC45NC00Ljk0Yy4yNy0uMjcuNDQtLjY1LjQ0LTEuMDZ2LTYuNWMwLS44My0uNjctMS41LTEuNS0xLjV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idGltZWxpbmUiPjxwYXRoIGQ9Ik0yMyA4YzAgMS4xLS45IDItMiAyLS4xOCAwLS4zNS0uMDItLjUxLS4wN2wtMy41NiAzLjU1Yy4wNS4xNi4wNy4zNC4wNy41MiAwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTJjMC0uMTguMDItLjM2LjA3LS41MmwtMi41NS0yLjU1Yy0uMTYuMDUtLjM0LjA3LS41Mi4wN3MtLjM2LS4wMi0uNTItLjA3bC00LjU1IDQuNTZjLjA1LjE2LjA3LjMzLjA3LjUxIDAgMS4xLS45IDItMiAycy0yLS45LTItMiAuOS0yIDItMmMuMTggMCAuMzUuMDIuNTEuMDdsNC41Ni00LjU1QzguMDIgOS4zNiA4IDkuMTggOCA5YzAtMS4xLjktMiAyLTJzMiAuOSAyIDJjMCAuMTgtLjAyLjM2LS4wNy41MmwyLjU1IDIuNTVjLjE2LS4wNS4zNC0uMDcuNTItLjA3cy4zNi4wMi41Mi4wN2wzLjU1LTMuNTZDMTkuMDIgOC4zNSAxOSA4LjE4IDE5IDhjMC0xLjEuOS0yIDItMnMyIC45IDIgMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJ0b2MiPjxwYXRoIGQ9Ik0zIDloMTRWN0gzdjJ6bTAgNGgxNHYtMkgzdjJ6bTAgNGgxNHYtMkgzdjJ6bTE2IDBoMnYtMmgtMnYyem0wLTEwdjJoMlY3aC0yem0wIDZoMnYtMmgtMnYyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InRvZGF5Ij48cGF0aCBkPSJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InRvbGwiPjxwYXRoIGQ9Ik0xNSA0Yy00LjQyIDAtOCAzLjU4LTggOHMzLjU4IDggOCA4IDgtMy41OCA4LTgtMy41OC04LTgtOHptMCAxNGMtMy4zMSAwLTYtMi42OS02LTZzMi42OS02IDYtNiA2IDIuNjkgNiA2LTIuNjkgNi02IDZ6TTMgMTJjMC0yLjYxIDEuNjctNC44MyA0LTUuNjVWNC4yNkMzLjU1IDUuMTUgMSA4LjI3IDEgMTJzMi41NSA2Ljg1IDYgNy43NHYtMi4wOWMtMi4zMy0uODItNC0zLjA0LTQtNS42NXoiPjwvcGF0aD48L2c+CjxnIGlkPSJ0b3VjaC1hcHAiPjxwYXRoIGQ9Ik05IDExLjI0VjcuNUM5IDYuMTIgMTAuMTIgNSAxMS41IDVTMTQgNi4xMiAxNCA3LjV2My43NGMxLjIxLS44MSAyLTIuMTggMi0zLjc0QzE2IDUuMDEgMTMuOTkgMyAxMS41IDNTNyA1LjAxIDcgNy41YzAgMS41Ni43OSAyLjkzIDIgMy43NHptOS44NCA0LjYzbC00LjU0LTIuMjZjLS4xNy0uMDctLjM1LS4xMS0uNTQtLjExSDEzdi02YzAtLjgzLS42Ny0xLjUtMS41LTEuNVMxMCA2LjY3IDEwIDcuNXYxMC43NGwtMy40My0uNzJjLS4wOC0uMDEtLjE1LS4wMy0uMjQtLjAzLS4zMSAwLS41OS4xMy0uNzkuMzNsLS43OS44IDQuOTQgNC45NGMuMjcuMjcuNjUuNDQgMS4wNi40NGg2Ljc5Yy43NSAwIDEuMzMtLjU1IDEuNDQtMS4yOGwuNzUtNS4yN2MuMDEtLjA3LjAyLS4xNC4wMi0uMiAwLS42Mi0uMzgtMS4xNi0uOTEtMS4zOHoiPjwvcGF0aD48L2c+CjxnIGlkPSJ0cmFjay1jaGFuZ2VzIj48cGF0aCBkPSJNMTkuMDcgNC45M2wtMS40MSAxLjQxQzE5LjEgNy43OSAyMCA5Ljc5IDIwIDEyYzAgNC40Mi0zLjU4IDgtOCA4cy04LTMuNTgtOC04YzAtNC4wOCAzLjA1LTcuNDQgNy03LjkzdjIuMDJDOC4xNiA2LjU3IDYgOS4wMyA2IDEyYzAgMy4zMSAyLjY5IDYgNiA2czYtMi42OSA2LTZjMC0xLjY2LS42Ny0zLjE2LTEuNzYtNC4yNGwtMS40MSAxLjQxQzE1LjU1IDkuOSAxNiAxMC45IDE2IDEyYzAgMi4yMS0xLjc5IDQtNCA0cy00LTEuNzktNC00YzAtMS44NiAxLjI4LTMuNDEgMy0zLjg2djIuMTRjLS42LjM1LTEgLjk4LTEgMS43MiAwIDEuMS45IDIgMiAyczItLjkgMi0yYzAtLjc0LS40LTEuMzgtMS0xLjcyVjJoLTFDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMGMwLTIuNzYtMS4xMi01LjI2LTIuOTMtNy4wN3oiPjwvcGF0aD48L2c+CjxnIGlkPSJ0cmFuc2xhdGUiPjxwYXRoIGQ9Ik0xMi44NyAxNS4wN2wtMi41NC0yLjUxLjAzLS4wM2MxLjc0LTEuOTQgMi45OC00LjE3IDMuNzEtNi41M0gxN1Y0aC03VjJIOHYySDF2MS45OWgxMS4xN0MxMS41IDcuOTIgMTAuNDQgOS43NSA5IDExLjM1IDguMDcgMTAuMzIgNy4zIDkuMTkgNi42OSA4aC0yYy43MyAxLjYzIDEuNzMgMy4xNyAyLjk4IDQuNTZsLTUuMDkgNS4wMkw0IDE5bDUtNSAzLjExIDMuMTEuNzYtMi4wNHpNMTguNSAxMGgtMkwxMiAyMmgybDEuMTItM2g0Ljc1TDIxIDIyaDJsLTQuNS0xMnptLTIuNjIgN2wxLjYyLTQuMzNMMTkuMTIgMTdoLTMuMjR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idHJlbmRpbmctZG93biI+PHBhdGggZD0iTTE2IDE4bDIuMjktMi4yOS00Ljg4LTQuODgtNCA0TDIgNy40MSAzLjQxIDZsNiA2IDQtNCA2LjMgNi4yOUwyMiAxMnY2eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InRyZW5kaW5nLWZsYXQiPjxwYXRoIGQ9Ik0yMiAxMmwtNC00djNIM3YyaDE1djN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idHJlbmRpbmctdXAiPjxwYXRoIGQ9Ik0xNiA2bDIuMjkgMi4yOS00Ljg4IDQuODgtNC00TDIgMTYuNTkgMy40MSAxOGw2LTYgNCA0IDYuMy02LjI5TDIyIDEyVjZ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idHVybmVkLWluIj48cGF0aCBkPSJNMTcgM0g3Yy0xLjEgMC0xLjk5LjktMS45OSAyTDUgMjFsNy0zIDcgM1Y1YzAtMS4xLS45LTItMi0yeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InR1cm5lZC1pbi1ub3QiPjxwYXRoIGQ9Ik0xNyAzSDdjLTEuMSAwLTEuOTkuOS0xLjk5IDJMNSAyMWw3LTMgNyAzVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTVsLTUtMi4xOEw3IDE4VjVoMTB2MTN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idW5hcmNoaXZlIj48cGF0aCBkPSJNMjAuNTUgNS4yMmwtMS4zOS0xLjY4QzE4Ljg4IDMuMjEgMTguNDcgMyAxOCAzSDZjLS40NyAwLS44OC4yMS0xLjE1LjU1TDMuNDYgNS4yMkMzLjE3IDUuNTcgMyA2LjAxIDMgNi41VjE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjYuNWMwLS40OS0uMTctLjkzLS40NS0xLjI4ek0xMiA5LjVsNS41IDUuNUgxNHYyaC00di0ySDYuNUwxMiA5LjV6TTUuMTIgNWwuODItMWgxMmwuOTMgMUg1LjEyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InVuZG8iPjxwYXRoIGQ9Ik0xMi41IDhjLTIuNjUgMC01LjA1Ljk5LTYuOSAyLjZMMiA3djloOWwtMy42Mi0zLjYyYzEuMzktMS4xNiAzLjE2LTEuODggNS4xMi0xLjg4IDMuNTQgMCA2LjU1IDIuMzEgNy42IDUuNWwyLjM3LS43OEMyMS4wOCAxMS4wMyAxNy4xNSA4IDEyLjUgOHoiPjwvcGF0aD48L2c+CjxnIGlkPSJ1bmZvbGQtbGVzcyI+PHBhdGggZD0iTTcuNDEgMTguNTlMOC44MyAyMCAxMiAxNi44MyAxNS4xNyAyMGwxLjQxLTEuNDFMMTIgMTRsLTQuNTkgNC41OXptOS4xOC0xMy4xOEwxNS4xNyA0IDEyIDcuMTcgOC44MyA0IDcuNDEgNS40MSAxMiAxMGw0LjU5LTQuNTl6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idW5mb2xkLW1vcmUiPjxwYXRoIGQ9Ik0xMiA1LjgzTDE1LjE3IDlsMS40MS0xLjQxTDEyIDMgNy40MSA3LjU5IDguODMgOSAxMiA1Ljgzem0wIDEyLjM0TDguODMgMTVsLTEuNDEgMS40MUwxMiAyMWw0LjU5LTQuNTlMMTUuMTcgMTUgMTIgMTguMTd6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idXBkYXRlIj48cGF0aCBkPSJNMjEgMTAuMTJoLTYuNzhsMi43NC0yLjgyYy0yLjczLTIuNy03LjE1LTIuOC05Ljg4LS4xLTIuNzMgMi43MS0yLjczIDcuMDggMCA5Ljc5IDIuNzMgMi43MSA3LjE1IDIuNzEgOS44OCAwQzE4LjMyIDE1LjY1IDE5IDE0LjA4IDE5IDEyLjFoMmMwIDEuOTgtLjg4IDQuNTUtMi42NCA2LjI5LTMuNTEgMy40OC05LjIxIDMuNDgtMTIuNzIgMC0zLjUtMy40Ny0zLjUzLTkuMTEtLjAyLTEyLjU4IDMuNTEtMy40NyA5LjE0LTMuNDcgMTIuNjUgMEwyMSAzdjcuMTJ6TTEyLjUgOHY0LjI1bDMuNSAyLjA4LS43MiAxLjIxTDExIDEzVjhoMS41eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InZlcmlmaWVkLXVzZXIiPjxwYXRoIGQ9Ik0xMiAxTDMgNXY2YzAgNS41NSAzLjg0IDEwLjc0IDkgMTIgNS4xNi0xLjI2IDktNi40NSA5LTEyVjVsLTktNHptLTIgMTZsLTQtNCAxLjQxLTEuNDFMMTAgMTQuMTdsNi41OS02LjU5TDE4IDlsLTggOHoiPjwvcGF0aD48L2c+CjxnIGlkPSJ2aWV3LWFnZW5kYSI+PHBhdGggZD0iTTIwIDEzSDNjLS41NSAwLTEgLjQ1LTEgMXY2YzAgLjU1LjQ1IDEgMSAxaDE3Yy41NSAwIDEtLjQ1IDEtMXYtNmMwLS41NS0uNDUtMS0xLTF6bTAtMTBIM2MtLjU1IDAtMSAuNDUtMSAxdjZjMCAuNTUuNDUgMSAxIDFoMTdjLjU1IDAgMS0uNDUgMS0xVjRjMC0uNTUtLjQ1LTEtMS0xeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InZpZXctYXJyYXkiPjxwYXRoIGQ9Ik00IDE4aDNWNUg0djEzek0xOCA1djEzaDNWNWgtM3pNOCAxOGg5VjVIOHYxM3oiPjwvcGF0aD48L2c+CjxnIGlkPSJ2aWV3LWNhcm91c2VsIj48cGF0aCBkPSJNNyAxOWgxMFY0SDd2MTV6bS01LTJoNFY2SDJ2MTF6TTE4IDZ2MTFoNFY2aC00eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InZpZXctY29sdW1uIj48cGF0aCBkPSJNMTAgMThoNVY1aC01djEzem0tNiAwaDVWNUg0djEzek0xNiA1djEzaDVWNWgtNXoiPjwvcGF0aD48L2c+CjxnIGlkPSJ2aWV3LWRheSI+PHBhdGggZD0iTTIgMjFoMTl2LTNIMnYzek0yMCA4SDNjLS41NSAwLTEgLjQ1LTEgMXY2YzAgLjU1LjQ1IDEgMSAxaDE3Yy41NSAwIDEtLjQ1IDEtMVY5YzAtLjU1LS40NS0xLTEtMXpNMiAzdjNoMTlWM0gyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InZpZXctaGVhZGxpbmUiPjxwYXRoIGQ9Ik00IDE1aDE2di0ySDR2MnptMCA0aDE2di0ySDR2MnptMC04aDE2VjlINHYyem0wLTZ2MmgxNlY1SDR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idmlldy1saXN0Ij48cGF0aCBkPSJNNCAxNGg0di00SDR2NHptMCA1aDR2LTRINHY0ek00IDloNFY1SDR2NHptNSA1aDEydi00SDl2NHptMCA1aDEydi00SDl2NHpNOSA1djRoMTJWNUg5eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InZpZXctbW9kdWxlIj48cGF0aCBkPSJNNCAxMWg1VjVINHY2em0wIDdoNXYtNkg0djZ6bTYgMGg1di02aC01djZ6bTYgMGg1di02aC01djZ6bS02LTdoNVY1aC01djZ6bTYtNnY2aDVWNWgtNXoiPjwvcGF0aD48L2c+CjxnIGlkPSJ2aWV3LXF1aWx0Ij48cGF0aCBkPSJNMTAgMThoNXYtNmgtNXY2em0tNiAwaDVWNUg0djEzem0xMiAwaDV2LTZoLTV2NnpNMTAgNXY2aDExVjVIMTB6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idmlldy1zdHJlYW0iPjxwYXRoIGQ9Ik00IDE4aDE3di02SDR2NnpNNCA1djZoMTdWNUg0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InZpZXctd2VlayI+PHBhdGggZD0iTTYgNUgzYy0uNTUgMC0xIC40NS0xIDF2MTJjMCAuNTUuNDUgMSAxIDFoM2MuNTUgMCAxLS40NSAxLTFWNmMwLS41NS0uNDUtMS0xLTF6bTE0IDBoLTNjLS41NSAwLTEgLjQ1LTEgMXYxMmMwIC41NS40NSAxIDEgMWgzYy41NSAwIDEtLjQ1IDEtMVY2YzAtLjU1LS40NS0xLTEtMXptLTcgMGgtM2MtLjU1IDAtMSAuNDUtMSAxdjEyYzAgLjU1LjQ1IDEgMSAxaDNjLjU1IDAgMS0uNDUgMS0xVjZjMC0uNTUtLjQ1LTEtMS0xeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InZpc2liaWxpdHkiPjxwYXRoIGQ9Ik0xMiA0LjVDNyA0LjUgMi43MyA3LjYxIDEgMTJjMS43MyA0LjM5IDYgNy41IDExIDcuNXM5LjI3LTMuMTEgMTEtNy41Yy0xLjczLTQuMzktNi03LjUtMTEtNy41ek0xMiAxN2MtMi43NiAwLTUtMi4yNC01LTVzMi4yNC01IDUtNSA1IDIuMjQgNSA1LTIuMjQgNS01IDV6bTAtOGMtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgMyAzLTEuMzQgMy0zLTEuMzQtMy0zLTN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idmlzaWJpbGl0eS1vZmYiPjxwYXRoIGQ9Ik0xMiA3YzIuNzYgMCA1IDIuMjQgNSA1IDAgLjY1LS4xMyAxLjI2LS4zNiAxLjgzbDIuOTIgMi45MmMxLjUxLTEuMjYgMi43LTIuODkgMy40My00Ljc1LTEuNzMtNC4zOS02LTcuNS0xMS03LjUtMS40IDAtMi43NC4yNS0zLjk4LjdsMi4xNiAyLjE2QzEwLjc0IDcuMTMgMTEuMzUgNyAxMiA3ek0yIDQuMjdsMi4yOCAyLjI4LjQ2LjQ2QzMuMDggOC4zIDEuNzggMTAuMDIgMSAxMmMxLjczIDQuMzkgNiA3LjUgMTEgNy41IDEuNTUgMCAzLjAzLS4zIDQuMzgtLjg0bC40Mi40MkwxOS43MyAyMiAyMSAyMC43MyAzLjI3IDMgMiA0LjI3ek03LjUzIDkuOGwxLjU1IDEuNTVjLS4wNS4yMS0uMDguNDMtLjA4LjY1IDAgMS42NiAxLjM0IDMgMyAzIC4yMiAwIC40NC0uMDMuNjUtLjA4bDEuNTUgMS41NWMtLjY3LjMzLTEuNDEuNTMtMi4yLjUzLTIuNzYgMC01LTIuMjQtNS01IDAtLjc5LjItMS41My41My0yLjJ6bTQuMzEtLjc4bDMuMTUgMy4xNS4wMi0uMTZjMC0xLjY2LTEuMzQtMy0zLTNsLS4xNy4wMXoiPjwvcGF0aD48L2c+CjxnIGlkPSJ3YXJuaW5nIj48cGF0aCBkPSJNMSAyMWgyMkwxMiAyIDEgMjF6bTEyLTNoLTJ2LTJoMnYyem0wLTRoLTJ2LTRoMnY0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9IndhdGNoLWxhdGVyIj48cGF0aCBkPSJNMTIgMkM2LjUgMiAyIDYuNSAyIDEyczQuNSAxMCAxMCAxMCAxMC00LjUgMTAtMTBTMTcuNSAyIDEyIDJ6bTQuMiAxNC4yTDExIDEzVjdoMS41djUuMmw0LjUgMi43LS44IDEuM3oiPjwvcGF0aD48L2c+CjxnIGlkPSJ3ZWVrZW5kIj48cGF0aCBkPSJNMjEgMTBjLTEuMSAwLTIgLjktMiAydjNINXYtM2MwLTEuMS0uOS0yLTItMnMtMiAuOS0yIDJ2NWMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0ydi01YzAtMS4xLS45LTItMi0yem0tMy01SDZjLTEuMSAwLTIgLjktMiAydjIuMTVjMS4xNi40MSAyIDEuNTEgMiAyLjgyVjE0aDEydi0yLjAzYzAtMS4zLjg0LTIuNCAyLTIuODJWN2MwLTEuMS0uOS0yLTItMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJ3b3JrIj48cGF0aCBkPSJNMjAgNmgtNFY0YzAtMS4xMS0uODktMi0yLTJoLTRjLTEuMTEgMC0yIC44OS0yIDJ2Mkg0Yy0xLjExIDAtMS45OS44OS0xLjk5IDJMMiAxOWMwIDEuMTEuODkgMiAyIDJoMTZjMS4xMSAwIDItLjg5IDItMlY4YzAtMS4xMS0uODktMi0yLTJ6bS02IDBoLTRWNGg0djJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ieW91dHViZS1zZWFyY2hlZC1mb3IiPjxwYXRoIGQ9Ik0xNy4wMSAxNGgtLjhsLS4yNy0uMjdjLjk4LTEuMTQgMS41Ny0yLjYxIDEuNTctNC4yMyAwLTMuNTktMi45MS02LjUtNi41LTYuNXMtNi41IDMtNi41IDYuNUgybDMuODQgNCA0LjE2LTRINi41MUM2LjUxIDcgOC41MyA1IDExLjAxIDVzNC41IDIuMDEgNC41IDQuNWMwIDIuNDgtMi4wMiA0LjUtNC41IDQuNS0uNjUgMC0xLjI2LS4xNC0xLjgyLS4zOEw3LjcxIDE1LjFjLjk3LjU3IDIuMDkuOSAzLjMuOSAxLjYxIDAgMy4wOC0uNTkgNC4yMi0xLjU3bC4yNy4yN3YuNzlsNS4wMSA0Ljk5TDIyIDE5bC00Ljk5LTV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iem9vbS1pbiI+PHBhdGggZD0iTTE1LjUgMTRoLS43OWwtLjI4LS4yN0MxNS40MSAxMi41OSAxNiAxMS4xMSAxNiA5LjUgMTYgNS45MSAxMy4wOSAzIDkuNSAzUzMgNS45MSAzIDkuNSA1LjkxIDE2IDkuNSAxNmMxLjYxIDAgMy4wOS0uNTkgNC4yMy0xLjU3bC4yNy4yOHYuNzlsNSA0Ljk5TDIwLjQ5IDE5bC00Ljk5LTV6bS02IDBDNy4wMSAxNCA1IDExLjk5IDUgOS41UzcuMDEgNSA5LjUgNSAxNCA3LjAxIDE0IDkuNSAxMS45OSAxNCA5LjUgMTR6bTIuNS00aC0ydjJIOXYtMkg3VjloMlY3aDF2MmgydjF6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iem9vbS1vdXQiPjxwYXRoIGQ9Ik0xNS41IDE0aC0uNzlsLS4yOC0uMjdDMTUuNDEgMTIuNTkgMTYgMTEuMTEgMTYgOS41IDE2IDUuOTEgMTMuMDkgMyA5LjUgM1MzIDUuOTEgMyA5LjUgNS45MSAxNiA5LjUgMTZjMS42MSAwIDMuMDktLjU5IDQuMjMtMS41N2wuMjcuMjh2Ljc5bDUgNC45OUwyMC40OSAxOWwtNC45OS01em0tNiAwQzcuMDEgMTQgNSAxMS45OSA1IDkuNVM3LjAxIDUgOS41IDUgMTQgNy4wMSAxNCA5LjUgMTEuOTkgMTQgOS41IDE0ek03IDloNXYxSDd6Ij48L3BhdGg+PC9nPgo8L2RlZnM+PC9zdmc+CjwvaXJvbi1pY29uc2V0LXN2Zz5gO2RvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoT28uY29udGVudCk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwp2YXIgem89eyJVKzAwMDgiOiJiYWNrc3BhY2UiLCJVKzAwMDkiOiJ0YWIiLCJVKzAwMUIiOiJlc2MiLCJVKzAwMjAiOiJzcGFjZSIsIlUrMDA3RiI6ImRlbCJ9LERvPXs4OiJiYWNrc3BhY2UiLDk6InRhYiIsMTM6ImVudGVyIiwyNzoiZXNjIiwzMzoicGFnZXVwIiwzNDoicGFnZWRvd24iLDM1OiJlbmQiLDM2OiJob21lIiwzMjoic3BhY2UiLDM3OiJsZWZ0IiwzODoidXAiLDM5OiJyaWdodCIsNDA6ImRvd24iLDQ2OiJkZWwiLDEwNjoiKiJ9LEJvPXtzaGlmdDoic2hpZnRLZXkiLGN0cmw6ImN0cmxLZXkiLGFsdDoiYWx0S2V5IixtZXRhOiJtZXRhS2V5In0sSG89L1thLXowLTkqXS8sRm89L1VcKy8sVm89L15hcnJvdy8sVW89L15zcGFjZShiYXIpPy8sam89L15lc2NhcGUkLztmdW5jdGlvbiBHbyh0LGUpe3ZhciBuPSIiO2lmKHQpe3ZhciBpPXQudG9Mb3dlckNhc2UoKTsiICI9PT1pfHxVby50ZXN0KGkpP249InNwYWNlIjpqby50ZXN0KGkpP249ImVzYyI6MT09aS5sZW5ndGg/ZSYmIUhvLnRlc3QoaSl8fChuPWkpOm49Vm8udGVzdChpKT9pLnJlcGxhY2UoImFycm93IiwiIik6Im11bHRpcGx5Ij09aT8iKiI6aX1yZXR1cm4gbn1mdW5jdGlvbiBXbyh0LGUpe3JldHVybiB0LmtleT9Hbyh0LmtleSxlKTp0LmRldGFpbCYmdC5kZXRhaWwua2V5P0dvKHQuZGV0YWlsLmtleSxlKTooZnVuY3Rpb24gbih0KXt2YXIgZT0iIjtyZXR1cm4gdCYmKHQgaW4gem8/ZT16b1t0XTpGby50ZXN0KHQpPyh0PXBhcnNlSW50KHQucmVwbGFjZSgiVSsiLCIweCIpLDE2KSxlPVN0cmluZy5mcm9tQ2hhckNvZGUodCkudG9Mb3dlckNhc2UoKSk6ZT10LnRvTG93ZXJDYXNlKCkpLGV9KSh0LmtleUlkZW50aWZpZXIpfHwoZnVuY3Rpb24gaSh0KXt2YXIgZT0iIjtyZXR1cm4gTnVtYmVyKHQpJiYoZT10Pj02NSYmdDw9OTA/U3RyaW5nLmZyb21DaGFyQ29kZSgzMit0KTp0Pj0xMTImJnQ8PTEyMz8iZiIrKHQtMTEyKzEpOnQ+PTQ4JiZ0PD01Nz9TdHJpbmcodC00OCk6dD49OTYmJnQ8PTEwNT9TdHJpbmcodC05Nik6RG9bdF0pLGV9KSh0LmtleUNvZGUpfHwiIn1mdW5jdGlvbiBxbyh0LGUpe3JldHVybiBXbyhlLHQuaGFzTW9kaWZpZXJzKT09PXQua2V5JiYoIXQuaGFzTW9kaWZpZXJzfHwhIWUuc2hpZnRLZXk9PSEhdC5zaGlmdEtleSYmISFlLmN0cmxLZXk9PSEhdC5jdHJsS2V5JiYhIWUuYWx0S2V5PT0hIXQuYWx0S2V5JiYhIWUubWV0YUtleT09ISF0Lm1ldGFLZXkpfWZ1bmN0aW9uIFlvKHQpe3JldHVybiB0LnRyaW0oKS5zcGxpdCgiICIpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuKGZ1bmN0aW9uIGUodCl7cmV0dXJuIDE9PT10Lmxlbmd0aD97Y29tYm86dCxrZXk6dCxldmVudDoia2V5ZG93biJ9OnQuc3BsaXQoIisiKS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7dmFyIG49ZS5zcGxpdCgiOiIpLGk9blswXSxyPW5bMV07cmV0dXJuIGkgaW4gQm8/KHRbQm9baV1dPSEwLHQuaGFzTW9kaWZpZXJzPSEwKToodC5rZXk9aSx0LmV2ZW50PXJ8fCJrZXlkb3duIiksdH0pLHtjb21ibzp0LnNwbGl0KCI6Iikuc2hpZnQoKX0pfSkodCl9KSl9Y29uc3QgWG89e3Byb3BlcnRpZXM6e2tleUV2ZW50VGFyZ2V0Ont0eXBlOk9iamVjdCx2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzfX0sc3RvcEtleWJvYXJkRXZlbnRQcm9wYWdhdGlvbjp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxfYm91bmRLZXlIYW5kbGVyczp7dHlwZTpBcnJheSx2YWx1ZTpmdW5jdGlvbigpe3JldHVybltdfX0sX2ltcGVyYXRpdmVLZXlCaW5kaW5nczp7dHlwZTpPYmplY3QsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57fX19fSxvYnNlcnZlcnM6WyJfcmVzZXRLZXlFdmVudExpc3RlbmVycyhrZXlFdmVudFRhcmdldCwgX2JvdW5kS2V5SGFuZGxlcnMpIl0sa2V5QmluZGluZ3M6e30scmVnaXN0ZXJlZDpmdW5jdGlvbigpe3RoaXMuX3ByZXBLZXlCaW5kaW5ncygpfSxhdHRhY2hlZDpmdW5jdGlvbigpe3RoaXMuX2xpc3RlbktleUV2ZW50TGlzdGVuZXJzKCl9LGRldGFjaGVkOmZ1bmN0aW9uKCl7dGhpcy5fdW5saXN0ZW5LZXlFdmVudExpc3RlbmVycygpfSxhZGRPd25LZXlCaW5kaW5nOmZ1bmN0aW9uKHQsZSl7dGhpcy5faW1wZXJhdGl2ZUtleUJpbmRpbmdzW3RdPWUsdGhpcy5fcHJlcEtleUJpbmRpbmdzKCksdGhpcy5fcmVzZXRLZXlFdmVudExpc3RlbmVycygpfSxyZW1vdmVPd25LZXlCaW5kaW5nczpmdW5jdGlvbigpe3RoaXMuX2ltcGVyYXRpdmVLZXlCaW5kaW5ncz17fSx0aGlzLl9wcmVwS2V5QmluZGluZ3MoKSx0aGlzLl9yZXNldEtleUV2ZW50TGlzdGVuZXJzKCl9LGtleWJvYXJkRXZlbnRNYXRjaGVzS2V5czpmdW5jdGlvbih0LGUpe2Zvcih2YXIgbj1ZbyhlKSxpPTA7aTxuLmxlbmd0aDsrK2kpaWYocW8obltpXSx0KSlyZXR1cm4hMDtyZXR1cm4hMX0sX2NvbGxlY3RLZXlCaW5kaW5nczpmdW5jdGlvbigpe3ZhciB0PXRoaXMuYmVoYXZpb3JzLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQua2V5QmluZGluZ3N9KSk7cmV0dXJuLTE9PT10LmluZGV4T2YodGhpcy5rZXlCaW5kaW5ncykmJnQucHVzaCh0aGlzLmtleUJpbmRpbmdzKSx0fSxfcHJlcEtleUJpbmRpbmdzOmZ1bmN0aW9uKCl7Zm9yKHZhciB0IGluIHRoaXMuX2tleUJpbmRpbmdzPXt9LHRoaXMuX2NvbGxlY3RLZXlCaW5kaW5ncygpLmZvckVhY2goKGZ1bmN0aW9uKHQpe2Zvcih2YXIgZSBpbiB0KXRoaXMuX2FkZEtleUJpbmRpbmcoZSx0W2VdKX0pLHRoaXMpLHRoaXMuX2ltcGVyYXRpdmVLZXlCaW5kaW5ncyl0aGlzLl9hZGRLZXlCaW5kaW5nKHQsdGhpcy5faW1wZXJhdGl2ZUtleUJpbmRpbmdzW3RdKTtmb3IodmFyIGUgaW4gdGhpcy5fa2V5QmluZGluZ3MpdGhpcy5fa2V5QmluZGluZ3NbZV0uc29ydCgoZnVuY3Rpb24odCxlKXt2YXIgbj10WzBdLmhhc01vZGlmaWVycztyZXR1cm4gbj09PWVbMF0uaGFzTW9kaWZpZXJzPzA6bj8tMToxfSkpfSxfYWRkS2V5QmluZGluZzpmdW5jdGlvbih0LGUpe1lvKHQpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3RoaXMuX2tleUJpbmRpbmdzW3QuZXZlbnRdPXRoaXMuX2tleUJpbmRpbmdzW3QuZXZlbnRdfHxbXSx0aGlzLl9rZXlCaW5kaW5nc1t0LmV2ZW50XS5wdXNoKFt0LGVdKX0pLHRoaXMpfSxfcmVzZXRLZXlFdmVudExpc3RlbmVyczpmdW5jdGlvbigpe3RoaXMuX3VubGlzdGVuS2V5RXZlbnRMaXN0ZW5lcnMoKSx0aGlzLmlzQXR0YWNoZWQmJnRoaXMuX2xpc3RlbktleUV2ZW50TGlzdGVuZXJzKCl9LF9saXN0ZW5LZXlFdmVudExpc3RlbmVyczpmdW5jdGlvbigpe3RoaXMua2V5RXZlbnRUYXJnZXQmJk9iamVjdC5rZXlzKHRoaXMuX2tleUJpbmRpbmdzKS5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9vbktleUJpbmRpbmdFdmVudC5iaW5kKHRoaXMsdGhpcy5fa2V5QmluZGluZ3NbdF0pO3RoaXMuX2JvdW5kS2V5SGFuZGxlcnMucHVzaChbdGhpcy5rZXlFdmVudFRhcmdldCx0LGVdKSx0aGlzLmtleUV2ZW50VGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIodCxlKX0pLHRoaXMpfSxfdW5saXN0ZW5LZXlFdmVudExpc3RlbmVyczpmdW5jdGlvbigpe2Zvcih2YXIgdDt0aGlzLl9ib3VuZEtleUhhbmRsZXJzLmxlbmd0aDspKHQ9dGhpcy5fYm91bmRLZXlIYW5kbGVycy5wb3AoKSlbMF0ucmVtb3ZlRXZlbnRMaXN0ZW5lcih0WzFdLHRbMl0pfSxfb25LZXlCaW5kaW5nRXZlbnQ6ZnVuY3Rpb24odCxlKXtpZih0aGlzLnN0b3BLZXlib2FyZEV2ZW50UHJvcGFnYXRpb24mJmUuc3RvcFByb3BhZ2F0aW9uKCksIWUuZGVmYXVsdFByZXZlbnRlZClmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIGk9dFtuXVswXSxyPXRbbl1bMV07aWYocW8oaSxlKSYmKHRoaXMuX3RyaWdnZXJLZXlIYW5kbGVyKGkscixlKSxlLmRlZmF1bHRQcmV2ZW50ZWQpKXJldHVybn19LF90cmlnZ2VyS2V5SGFuZGxlcjpmdW5jdGlvbih0LGUsbil7dmFyIGk9T2JqZWN0LmNyZWF0ZSh0KTtpLmtleWJvYXJkRXZlbnQ9bjt2YXIgcj1uZXcgQ3VzdG9tRXZlbnQodC5ldmVudCx7ZGV0YWlsOmksY2FuY2VsYWJsZTohMH0pO3RoaXNbZV0uY2FsbCh0aGlzLHIpLHIuZGVmYXVsdFByZXZlbnRlZCYmbi5wcmV2ZW50RGVmYXVsdCgpfX0sJG89e3Byb3BlcnRpZXM6e3Njcm9sbFRhcmdldDp7dHlwZTpIVE1MRWxlbWVudCx2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kZWZhdWx0U2Nyb2xsVGFyZ2V0fX19LG9ic2VydmVyczpbIl9zY3JvbGxUYXJnZXRDaGFuZ2VkKHNjcm9sbFRhcmdldCwgaXNBdHRhY2hlZCkiXSxfc2hvdWxkSGF2ZUxpc3RlbmVyOiEwLF9zY3JvbGxUYXJnZXRDaGFuZ2VkOmZ1bmN0aW9uKHQsZSl7aWYodGhpcy5fb2xkU2Nyb2xsVGFyZ2V0JiYodGhpcy5fdG9nZ2xlU2Nyb2xsTGlzdGVuZXIoITEsdGhpcy5fb2xkU2Nyb2xsVGFyZ2V0KSx0aGlzLl9vbGRTY3JvbGxUYXJnZXQ9bnVsbCksZSlpZigiZG9jdW1lbnQiPT09dCl0aGlzLnNjcm9sbFRhcmdldD10aGlzLl9kb2M7ZWxzZSBpZigic3RyaW5nIj09dHlwZW9mIHQpe3ZhciBuPXRoaXMuZG9tSG9zdDt0aGlzLnNjcm9sbFRhcmdldD1uJiZuLiQ/bi4kW3RdOmVyKHRoaXMub3duZXJEb2N1bWVudCkucXVlcnlTZWxlY3RvcigiIyIrdCl9ZWxzZSB0aGlzLl9pc1ZhbGlkU2Nyb2xsVGFyZ2V0KCkmJih0aGlzLl9vbGRTY3JvbGxUYXJnZXQ9dCx0aGlzLl90b2dnbGVTY3JvbGxMaXN0ZW5lcih0aGlzLl9zaG91bGRIYXZlTGlzdGVuZXIsdCkpfSxfc2Nyb2xsSGFuZGxlcjpmdW5jdGlvbiB0KCl7fSxnZXQgX2RlZmF1bHRTY3JvbGxUYXJnZXQoKXtyZXR1cm4gdGhpcy5fZG9jfSxnZXQgX2RvYygpe3JldHVybiB0aGlzLm93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50fSxnZXQgX3Njcm9sbFRvcCgpe3JldHVybiB0aGlzLl9pc1ZhbGlkU2Nyb2xsVGFyZ2V0KCk/dGhpcy5zY3JvbGxUYXJnZXQ9PT10aGlzLl9kb2M/d2luZG93LnBhZ2VZT2Zmc2V0OnRoaXMuc2Nyb2xsVGFyZ2V0LnNjcm9sbFRvcDowfSxnZXQgX3Njcm9sbExlZnQoKXtyZXR1cm4gdGhpcy5faXNWYWxpZFNjcm9sbFRhcmdldCgpP3RoaXMuc2Nyb2xsVGFyZ2V0PT09dGhpcy5fZG9jP3dpbmRvdy5wYWdlWE9mZnNldDp0aGlzLnNjcm9sbFRhcmdldC5zY3JvbGxMZWZ0OjB9LHNldCBfc2Nyb2xsVG9wKHQpe3RoaXMuc2Nyb2xsVGFyZ2V0PT09dGhpcy5fZG9jP3dpbmRvdy5zY3JvbGxUbyh3aW5kb3cucGFnZVhPZmZzZXQsdCk6dGhpcy5faXNWYWxpZFNjcm9sbFRhcmdldCgpJiYodGhpcy5zY3JvbGxUYXJnZXQuc2Nyb2xsVG9wPXQpfSxzZXQgX3Njcm9sbExlZnQodCl7dGhpcy5zY3JvbGxUYXJnZXQ9PT10aGlzLl9kb2M/d2luZG93LnNjcm9sbFRvKHQsd2luZG93LnBhZ2VZT2Zmc2V0KTp0aGlzLl9pc1ZhbGlkU2Nyb2xsVGFyZ2V0KCkmJih0aGlzLnNjcm9sbFRhcmdldC5zY3JvbGxMZWZ0PXQpfSxzY3JvbGw6ZnVuY3Rpb24odCxlKXt2YXIgbjsib2JqZWN0Ij09dHlwZW9mIHQ/KG49dC5sZWZ0LGU9dC50b3ApOm49dCxuPW58fDAsZT1lfHwwLHRoaXMuc2Nyb2xsVGFyZ2V0PT09dGhpcy5fZG9jP3dpbmRvdy5zY3JvbGxUbyhuLGUpOnRoaXMuX2lzVmFsaWRTY3JvbGxUYXJnZXQoKSYmKHRoaXMuc2Nyb2xsVGFyZ2V0LnNjcm9sbExlZnQ9bix0aGlzLnNjcm9sbFRhcmdldC5zY3JvbGxUb3A9ZSl9LGdldCBfc2Nyb2xsVGFyZ2V0V2lkdGgoKXtyZXR1cm4gdGhpcy5faXNWYWxpZFNjcm9sbFRhcmdldCgpP3RoaXMuc2Nyb2xsVGFyZ2V0PT09dGhpcy5fZG9jP3dpbmRvdy5pbm5lcldpZHRoOnRoaXMuc2Nyb2xsVGFyZ2V0Lm9mZnNldFdpZHRoOjB9LGdldCBfc2Nyb2xsVGFyZ2V0SGVpZ2h0KCl7cmV0dXJuIHRoaXMuX2lzVmFsaWRTY3JvbGxUYXJnZXQoKT90aGlzLnNjcm9sbFRhcmdldD09PXRoaXMuX2RvYz93aW5kb3cuaW5uZXJIZWlnaHQ6dGhpcy5zY3JvbGxUYXJnZXQub2Zmc2V0SGVpZ2h0OjB9LF9pc1ZhbGlkU2Nyb2xsVGFyZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2Nyb2xsVGFyZ2V0IGluc3RhbmNlb2YgSFRNTEVsZW1lbnR9LF90b2dnbGVTY3JvbGxMaXN0ZW5lcjpmdW5jdGlvbih0LGUpe3ZhciBuPWU9PT10aGlzLl9kb2M/d2luZG93OmU7dD90aGlzLl9ib3VuZFNjcm9sbEhhbmRsZXJ8fCh0aGlzLl9ib3VuZFNjcm9sbEhhbmRsZXI9dGhpcy5fc2Nyb2xsSGFuZGxlci5iaW5kKHRoaXMpLG4uYWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xsIix0aGlzLl9ib3VuZFNjcm9sbEhhbmRsZXIpKTp0aGlzLl9ib3VuZFNjcm9sbEhhbmRsZXImJihuLnJlbW92ZUV2ZW50TGlzdGVuZXIoInNjcm9sbCIsdGhpcy5fYm91bmRTY3JvbGxIYW5kbGVyKSx0aGlzLl9ib3VuZFNjcm9sbEhhbmRsZXI9bnVsbCl9LHRvZ2dsZVNjcm9sbExpc3RlbmVyOmZ1bmN0aW9uKHQpe3RoaXMuX3Nob3VsZEhhdmVMaXN0ZW5lcj10LHRoaXMuX3RvZ2dsZVNjcm9sbExpc3RlbmVyKHQsdGhpcy5zY3JvbGxUYXJnZXQpfX07Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNiBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTYgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KdmFyIEtvPW5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL2lQKD86aG9uZXxhZDsoPzogVTspPyBDUFUpIE9TIChcZCspLyksWm89S28mJktvWzFdPj04LEpvPSItMTAwMDBweCIsUW89LTEwMDtqcih7X3RlbXBsYXRlOnhlYAogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgIH0KCiAgICAgIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKC13ZWJraXQtbWF4LWRldmljZS1waXhlbC1yYXRpbzogMSkgewogICAgICAgIDpob3N0IHsKICAgICAgICAgIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07CiAgICAgICAgfQogICAgICB9CgogICAgICAjaXRlbXMgewogICAgICAgIEBhcHBseSAtLWlyb24tbGlzdC1pdGVtcy1jb250YWluZXI7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICB9CgogICAgICA6aG9zdCg6bm90KFtncmlkXSkpICNpdGVtcyA+IDo6c2xvdHRlZCgqKSB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIH0KCiAgICAgICNpdGVtcyA+IDo6c2xvdHRlZCgqKSB7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogMDsKICAgICAgICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtOwogICAgICB9CiAgICA8L3N0eWxlPgoKICAgIDxhcnJheS1zZWxlY3RvciBpZD0ic2VsZWN0b3IiIGl0ZW1zPSJ7e2l0ZW1zfX0iIHNlbGVjdGVkPSJ7e3NlbGVjdGVkSXRlbXN9fSIgc2VsZWN0ZWQtaXRlbT0ie3tzZWxlY3RlZEl0ZW19fSI+PC9hcnJheS1zZWxlY3Rvcj4KCiAgICA8ZGl2IGlkPSJpdGVtcyI+CiAgICAgIDxzbG90Pjwvc2xvdD4KICAgIDwvZGl2PgpgLGlzOiJpcm9uLWxpc3QiLHByb3BlcnRpZXM6e2l0ZW1zOnt0eXBlOkFycmF5fSxhczp7dHlwZTpTdHJpbmcsdmFsdWU6Iml0ZW0ifSxpbmRleEFzOnt0eXBlOlN0cmluZyx2YWx1ZToiaW5kZXgifSxzZWxlY3RlZEFzOnt0eXBlOlN0cmluZyx2YWx1ZToic2VsZWN0ZWQifSxncmlkOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITEscmVmbGVjdFRvQXR0cmlidXRlOiEwLG9ic2VydmVyOiJfZ3JpZENoYW5nZWQifSxzZWxlY3Rpb25FbmFibGVkOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LHNlbGVjdGVkSXRlbTp7dHlwZTpPYmplY3Qsbm90aWZ5OiEwfSxzZWxlY3RlZEl0ZW1zOnt0eXBlOk9iamVjdCxub3RpZnk6ITB9LG11bHRpU2VsZWN0aW9uOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LHNjcm9sbE9mZnNldDp7dHlwZTpOdW1iZXIsdmFsdWU6MH19LG9ic2VydmVyczpbIl9pdGVtc0NoYW5nZWQoaXRlbXMuKikiLCJfc2VsZWN0aW9uRW5hYmxlZENoYW5nZWQoc2VsZWN0aW9uRW5hYmxlZCkiLCJfbXVsdGlTZWxlY3Rpb25DaGFuZ2VkKG11bHRpU2VsZWN0aW9uKSIsIl9zZXRPdmVyZmxvdyhzY3JvbGxUYXJnZXQsIHNjcm9sbE9mZnNldCkiXSxiZWhhdmlvcnM6W2xvLENvLCRvLE1vXSxfcmF0aW86LjUsX3Njcm9sbGVyUGFkZGluZ1RvcDowLF9zY3JvbGxQb3NpdGlvbjowLF9waHlzaWNhbFNpemU6MCxfcGh5c2ljYWxBdmVyYWdlOjAsX3BoeXNpY2FsQXZlcmFnZUNvdW50OjAsX3BoeXNpY2FsVG9wOjAsX3ZpcnR1YWxDb3VudDowLF9lc3RTY3JvbGxIZWlnaHQ6MCxfc2Nyb2xsSGVpZ2h0OjAsX3ZpZXdwb3J0SGVpZ2h0OjAsX3ZpZXdwb3J0V2lkdGg6MCxfcGh5c2ljYWxJdGVtczpudWxsLF9waHlzaWNhbFNpemVzOm51bGwsX2ZpcnN0VmlzaWJsZUluZGV4VmFsOm51bGwsX2xhc3RWaXNpYmxlSW5kZXhWYWw6bnVsbCxfbWF4UGFnZXM6MixfZm9jdXNlZEl0ZW06bnVsbCxfZm9jdXNlZFZpcnR1YWxJbmRleDotMSxfZm9jdXNlZFBoeXNpY2FsSW5kZXg6LTEsX29mZnNjcmVlbkZvY3VzZWRJdGVtOm51bGwsX2ZvY3VzQmFja2ZpbGxJdGVtOm51bGwsX2l0ZW1zUGVyUm93OjEsX2l0ZW1XaWR0aDowLF9yb3dIZWlnaHQ6MCxfdGVtcGxhdGVDb3N0OjAsX3BhcmVudE1vZGVsOiEwLGdldCBfcGh5c2ljYWxCb3R0b20oKXtyZXR1cm4gdGhpcy5fcGh5c2ljYWxUb3ArdGhpcy5fcGh5c2ljYWxTaXplfSxnZXQgX3Njcm9sbEJvdHRvbSgpe3JldHVybiB0aGlzLl9zY3JvbGxQb3NpdGlvbit0aGlzLl92aWV3cG9ydEhlaWdodH0sZ2V0IF92aXJ0dWFsRW5kKCl7cmV0dXJuIHRoaXMuX3ZpcnR1YWxTdGFydCt0aGlzLl9waHlzaWNhbENvdW50LTF9LGdldCBfaGlkZGVuQ29udGVudFNpemUoKXtyZXR1cm4odGhpcy5ncmlkP3RoaXMuX3BoeXNpY2FsUm93cyp0aGlzLl9yb3dIZWlnaHQ6dGhpcy5fcGh5c2ljYWxTaXplKS10aGlzLl92aWV3cG9ydEhlaWdodH0sZ2V0IF9pdGVtc1BhcmVudCgpe3JldHVybiBlcihlcih0aGlzLl91c2VyVGVtcGxhdGUpLnBhcmVudE5vZGUpfSxnZXQgX21heFNjcm9sbFRvcCgpe3JldHVybiB0aGlzLl9lc3RTY3JvbGxIZWlnaHQtdGhpcy5fdmlld3BvcnRIZWlnaHQrdGhpcy5fc2Nyb2xsT2Zmc2V0fSxnZXQgX21heFZpcnR1YWxTdGFydCgpe3ZhciB0PXRoaXMuX2NvbnZlcnRJbmRleFRvQ29tcGxldGVSb3codGhpcy5fdmlydHVhbENvdW50KTtyZXR1cm4gTWF0aC5tYXgoMCx0LXRoaXMuX3BoeXNpY2FsQ291bnQpfSxzZXQgX3ZpcnR1YWxTdGFydCh0KXt0PXRoaXMuX2NsYW1wKHQsMCx0aGlzLl9tYXhWaXJ0dWFsU3RhcnQpLHRoaXMuZ3JpZCYmKHQtPXQldGhpcy5faXRlbXNQZXJSb3cpLHRoaXMuX3ZpcnR1YWxTdGFydFZhbD10fSxnZXQgX3ZpcnR1YWxTdGFydCgpe3JldHVybiB0aGlzLl92aXJ0dWFsU3RhcnRWYWx8fDB9LHNldCBfcGh5c2ljYWxTdGFydCh0KXsodCU9dGhpcy5fcGh5c2ljYWxDb3VudCk8MCYmKHQ9dGhpcy5fcGh5c2ljYWxDb3VudCt0KSx0aGlzLmdyaWQmJih0LT10JXRoaXMuX2l0ZW1zUGVyUm93KSx0aGlzLl9waHlzaWNhbFN0YXJ0VmFsPXR9LGdldCBfcGh5c2ljYWxTdGFydCgpe3JldHVybiB0aGlzLl9waHlzaWNhbFN0YXJ0VmFsfHwwfSxnZXQgX3BoeXNpY2FsRW5kKCl7cmV0dXJuKHRoaXMuX3BoeXNpY2FsU3RhcnQrdGhpcy5fcGh5c2ljYWxDb3VudC0xKSV0aGlzLl9waHlzaWNhbENvdW50fSxzZXQgX3BoeXNpY2FsQ291bnQodCl7dGhpcy5fcGh5c2ljYWxDb3VudFZhbD10fSxnZXQgX3BoeXNpY2FsQ291bnQoKXtyZXR1cm4gdGhpcy5fcGh5c2ljYWxDb3VudFZhbHx8MH0sZ2V0IF9vcHRQaHlzaWNhbFNpemUoKXtyZXR1cm4gMD09PXRoaXMuX3ZpZXdwb3J0SGVpZ2h0PzEvMDp0aGlzLl92aWV3cG9ydEhlaWdodCp0aGlzLl9tYXhQYWdlc30sZ2V0IF9pc1Zpc2libGUoKXtyZXR1cm4gQm9vbGVhbih0aGlzLm9mZnNldFdpZHRofHx0aGlzLm9mZnNldEhlaWdodCl9LGdldCBmaXJzdFZpc2libGVJbmRleCgpe3ZhciB0PXRoaXMuX2ZpcnN0VmlzaWJsZUluZGV4VmFsO2lmKG51bGw9PXQpe3ZhciBlPXRoaXMuX3BoeXNpY2FsVG9wK3RoaXMuX3Njcm9sbE9mZnNldDt0PXRoaXMuX2l0ZXJhdGVJdGVtcygoZnVuY3Rpb24odCxuKXtyZXR1cm4oZSs9dGhpcy5fZ2V0UGh5c2ljYWxTaXplSW5jcmVtZW50KHQpKT50aGlzLl9zY3JvbGxQb3NpdGlvbj90aGlzLmdyaWQ/bi1uJXRoaXMuX2l0ZW1zUGVyUm93Om46dGhpcy5ncmlkJiZ0aGlzLl92aXJ0dWFsQ291bnQtMT09PW4/bi1uJXRoaXMuX2l0ZW1zUGVyUm93OnZvaWQgMH0pKXx8MCx0aGlzLl9maXJzdFZpc2libGVJbmRleFZhbD10fXJldHVybiB0fSxnZXQgbGFzdFZpc2libGVJbmRleCgpe3ZhciB0PXRoaXMuX2xhc3RWaXNpYmxlSW5kZXhWYWw7aWYobnVsbD09dCl7aWYodGhpcy5ncmlkKXQ9TWF0aC5taW4odGhpcy5fdmlydHVhbENvdW50LHRoaXMuZmlyc3RWaXNpYmxlSW5kZXgrdGhpcy5fZXN0Um93c0luVmlldyp0aGlzLl9pdGVtc1BlclJvdy0xKTtlbHNle3ZhciBlPXRoaXMuX3BoeXNpY2FsVG9wK3RoaXMuX3Njcm9sbE9mZnNldDt0aGlzLl9pdGVyYXRlSXRlbXMoKGZ1bmN0aW9uKG4saSl7ZTx0aGlzLl9zY3JvbGxCb3R0b20mJih0PWkpLGUrPXRoaXMuX2dldFBoeXNpY2FsU2l6ZUluY3JlbWVudChuKX0pKX10aGlzLl9sYXN0VmlzaWJsZUluZGV4VmFsPXR9cmV0dXJuIHR9LGdldCBfZGVmYXVsdFNjcm9sbFRhcmdldCgpe3JldHVybiB0aGlzfSxnZXQgX3ZpcnR1YWxSb3dDb3VudCgpe3JldHVybiBNYXRoLmNlaWwodGhpcy5fdmlydHVhbENvdW50L3RoaXMuX2l0ZW1zUGVyUm93KX0sZ2V0IF9lc3RSb3dzSW5WaWV3KCl7cmV0dXJuIE1hdGguY2VpbCh0aGlzLl92aWV3cG9ydEhlaWdodC90aGlzLl9yb3dIZWlnaHQpfSxnZXQgX3BoeXNpY2FsUm93cygpe3JldHVybiBNYXRoLmNlaWwodGhpcy5fcGh5c2ljYWxDb3VudC90aGlzLl9pdGVtc1BlclJvdyl9LGdldCBfc2Nyb2xsT2Zmc2V0KCl7cmV0dXJuIHRoaXMuX3Njcm9sbGVyUGFkZGluZ1RvcCt0aGlzLnNjcm9sbE9mZnNldH0scmVhZHk6ZnVuY3Rpb24oKXt0aGlzLmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzIix0aGlzLl9kaWRGb2N1cy5iaW5kKHRoaXMpLCEwKX0sYXR0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLl9kZWJvdW5jZSgiX3JlbmRlciIsdGhpcy5fcmVuZGVyLF90KSx0aGlzLmxpc3Rlbih0aGlzLCJpcm9uLXJlc2l6ZSIsIl9yZXNpemVIYW5kbGVyIiksdGhpcy5saXN0ZW4odGhpcywia2V5ZG93biIsIl9rZXlkb3duSGFuZGxlciIpfSxkZXRhY2hlZDpmdW5jdGlvbigpe3RoaXMudW5saXN0ZW4odGhpcywiaXJvbi1yZXNpemUiLCJfcmVzaXplSGFuZGxlciIpLHRoaXMudW5saXN0ZW4odGhpcywia2V5ZG93biIsIl9rZXlkb3duSGFuZGxlciIpfSxfc2V0T3ZlcmZsb3c6ZnVuY3Rpb24odCl7dGhpcy5zdHlsZS53ZWJraXRPdmVyZmxvd1Njcm9sbGluZz10PT09dGhpcz8idG91Y2giOiIiLHRoaXMuc3R5bGUub3ZlcmZsb3dZPXQ9PT10aGlzPyJhdXRvIjoiIix0aGlzLl9sYXN0VmlzaWJsZUluZGV4VmFsPW51bGwsdGhpcy5fZmlyc3RWaXNpYmxlSW5kZXhWYWw9bnVsbCx0aGlzLl9kZWJvdW5jZSgiX3JlbmRlciIsdGhpcy5fcmVuZGVyLF90KX0sdXBkYXRlVmlld3BvcnRCb3VuZGFyaWVzOmZ1bmN0aW9uKCl7dmFyIHQ9d2luZG93LmdldENvbXB1dGVkU3R5bGUodGhpcyk7dGhpcy5fc2Nyb2xsZXJQYWRkaW5nVG9wPXRoaXMuc2Nyb2xsVGFyZ2V0PT09dGhpcz8wOnBhcnNlSW50KHRbInBhZGRpbmctdG9wIl0sMTApLHRoaXMuX2lzUlRMPUJvb2xlYW4oInJ0bCI9PT10LmRpcmVjdGlvbiksdGhpcy5fdmlld3BvcnRXaWR0aD10aGlzLiQuaXRlbXMub2Zmc2V0V2lkdGgsdGhpcy5fdmlld3BvcnRIZWlnaHQ9dGhpcy5fc2Nyb2xsVGFyZ2V0SGVpZ2h0LHRoaXMuZ3JpZCYmdGhpcy5fdXBkYXRlR3JpZE1ldHJpY3MoKX0sX3Njcm9sbEhhbmRsZXI6ZnVuY3Rpb24oKXt2YXIgdD1NYXRoLm1heCgwLE1hdGgubWluKHRoaXMuX21heFNjcm9sbFRvcCx0aGlzLl9zY3JvbGxUb3ApKSxlPXQtdGhpcy5fc2Nyb2xsUG9zaXRpb24sbj1lPj0wO2lmKHRoaXMuX3Njcm9sbFBvc2l0aW9uPXQsdGhpcy5fZmlyc3RWaXNpYmxlSW5kZXhWYWw9bnVsbCx0aGlzLl9sYXN0VmlzaWJsZUluZGV4VmFsPW51bGwsTWF0aC5hYnMoZSk+dGhpcy5fcGh5c2ljYWxTaXplJiZ0aGlzLl9waHlzaWNhbFNpemU+MCl7ZS09dGhpcy5fc2Nyb2xsT2Zmc2V0O3ZhciBpPU1hdGgucm91bmQoZS90aGlzLl9waHlzaWNhbEF2ZXJhZ2UpKnRoaXMuX2l0ZW1zUGVyUm93O3RoaXMuX3ZpcnR1YWxTdGFydD10aGlzLl92aXJ0dWFsU3RhcnQraSx0aGlzLl9waHlzaWNhbFN0YXJ0PXRoaXMuX3BoeXNpY2FsU3RhcnQraSx0aGlzLl9waHlzaWNhbFRvcD1NYXRoLm1pbihNYXRoLmZsb29yKHRoaXMuX3ZpcnR1YWxTdGFydC90aGlzLl9pdGVtc1BlclJvdykqdGhpcy5fcGh5c2ljYWxBdmVyYWdlLHRoaXMuX3Njcm9sbFBvc2l0aW9uKSx0aGlzLl91cGRhdGUoKX1lbHNlIGlmKHRoaXMuX3BoeXNpY2FsQ291bnQ+MCl7dmFyIHI9dGhpcy5fZ2V0UmV1c2FibGVzKG4pO24/KHRoaXMuX3BoeXNpY2FsVG9wPXIucGh5c2ljYWxUb3AsdGhpcy5fdmlydHVhbFN0YXJ0PXRoaXMuX3ZpcnR1YWxTdGFydCtyLmluZGV4ZXMubGVuZ3RoLHRoaXMuX3BoeXNpY2FsU3RhcnQ9dGhpcy5fcGh5c2ljYWxTdGFydCtyLmluZGV4ZXMubGVuZ3RoKToodGhpcy5fdmlydHVhbFN0YXJ0PXRoaXMuX3ZpcnR1YWxTdGFydC1yLmluZGV4ZXMubGVuZ3RoLHRoaXMuX3BoeXNpY2FsU3RhcnQ9dGhpcy5fcGh5c2ljYWxTdGFydC1yLmluZGV4ZXMubGVuZ3RoKSx0aGlzLl91cGRhdGUoci5pbmRleGVzLG4/bnVsbDpyLmluZGV4ZXMpLHRoaXMuX2RlYm91bmNlKCJfaW5jcmVhc2VQb29sSWZOZWVkZWQiLHRoaXMuX2luY3JlYXNlUG9vbElmTmVlZGVkLmJpbmQodGhpcywwKSx2dCl9fSxfZ2V0UmV1c2FibGVzOmZ1bmN0aW9uKHQpe3ZhciBlLG4saSxyPVtdLG89dGhpcy5faGlkZGVuQ29udGVudFNpemUqdGhpcy5fcmF0aW8sYT10aGlzLl92aXJ0dWFsU3RhcnQscz10aGlzLl92aXJ0dWFsRW5kLGw9dGhpcy5fcGh5c2ljYWxDb3VudCxjPXRoaXMuX3BoeXNpY2FsVG9wK3RoaXMuX3Njcm9sbE9mZnNldCx1PXRoaXMuX3Njcm9sbFBvc2l0aW9uLGg9dGhpcy5fc2Nyb2xsQm90dG9tO2Zvcih0PyhlPXRoaXMuX3BoeXNpY2FsU3RhcnQsbj11LWMpOihlPXRoaXMuX3BoeXNpY2FsRW5kLG49dGhpcy5fcGh5c2ljYWxCb3R0b20rdGhpcy5fc2Nyb2xsT2Zmc2V0LWgpO24tPWk9dGhpcy5fZ2V0UGh5c2ljYWxTaXplSW5jcmVtZW50KGUpLCEoci5sZW5ndGg+PWx8fG48PW8pOylpZih0KXtpZihzK3IubGVuZ3RoKzE+PXRoaXMuX3ZpcnR1YWxDb3VudClicmVhaztpZihjK2k+PXUtdGhpcy5fc2Nyb2xsT2Zmc2V0KWJyZWFrO3IucHVzaChlKSxjKz1pLGU9KGUrMSklbH1lbHNle2lmKGEtci5sZW5ndGg8PTApYnJlYWs7aWYoYyt0aGlzLl9waHlzaWNhbFNpemUtaTw9aClicmVhaztyLnB1c2goZSksYy09aSxlPTA9PT1lP2wtMTplLTF9cmV0dXJue2luZGV4ZXM6cixwaHlzaWNhbFRvcDpjLXRoaXMuX3Njcm9sbE9mZnNldH19LF91cGRhdGU6ZnVuY3Rpb24odCxlKXtpZighKHQmJjA9PT10Lmxlbmd0aHx8MD09PXRoaXMuX3BoeXNpY2FsQ291bnQpKXtpZih0aGlzLl9tYW5hZ2VGb2N1cygpLHRoaXMuX2Fzc2lnbk1vZGVscyh0KSx0aGlzLl91cGRhdGVNZXRyaWNzKHQpLGUpZm9yKDtlLmxlbmd0aDspe3ZhciBuPWUucG9wKCk7dGhpcy5fcGh5c2ljYWxUb3AtPXRoaXMuX2dldFBoeXNpY2FsU2l6ZUluY3JlbWVudChuKX10aGlzLl9wb3NpdGlvbkl0ZW1zKCksdGhpcy5fdXBkYXRlU2Nyb2xsZXJTaXplKCl9fSxfY3JlYXRlUG9vbDpmdW5jdGlvbih0KXt2YXIgZSxuO3RoaXMuX2Vuc3VyZVRlbXBsYXRpemVkKCk7dmFyIGk9bmV3IEFycmF5KHQpO2ZvcihlPTA7ZTx0O2UrKyluPXRoaXMuc3RhbXAobnVsbCksaVtlXT1uLnJvb3QucXVlcnlTZWxlY3RvcigiKiIpLHRoaXMuX2l0ZW1zUGFyZW50LmFwcGVuZENoaWxkKG4ucm9vdCk7cmV0dXJuIGl9LF9pc0NsaWVudEZ1bGw6ZnVuY3Rpb24oKXtyZXR1cm4gMCE9dGhpcy5fc2Nyb2xsQm90dG9tJiZ0aGlzLl9waHlzaWNhbEJvdHRvbS0xPj10aGlzLl9zY3JvbGxCb3R0b20mJnRoaXMuX3BoeXNpY2FsVG9wPD10aGlzLl9zY3JvbGxQb3NpdGlvbn0sX2luY3JlYXNlUG9vbElmTmVlZGVkOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2NsYW1wKHRoaXMuX3BoeXNpY2FsQ291bnQrdCwzLHRoaXMuX3ZpcnR1YWxDb3VudC10aGlzLl92aXJ0dWFsU3RhcnQpO2lmKGU9dGhpcy5fY29udmVydEluZGV4VG9Db21wbGV0ZVJvdyhlKSx0aGlzLmdyaWQpe3ZhciBuPWUldGhpcy5faXRlbXNQZXJSb3c7biYmZS1uPD10aGlzLl9waHlzaWNhbENvdW50JiYoZSs9dGhpcy5faXRlbXNQZXJSb3cpLGUtPW59dmFyIGk9ZS10aGlzLl9waHlzaWNhbENvdW50LHI9TWF0aC5yb3VuZCguNSp0aGlzLl9waHlzaWNhbENvdW50KTtpZighKGk8MCkpe2lmKGk+MCl7dmFyIG89d2luZG93LnBlcmZvcm1hbmNlLm5vdygpO1tdLnB1c2guYXBwbHkodGhpcy5fcGh5c2ljYWxJdGVtcyx0aGlzLl9jcmVhdGVQb29sKGkpKTtmb3IodmFyIGE9MDthPGk7YSsrKXRoaXMuX3BoeXNpY2FsU2l6ZXMucHVzaCgwKTt0aGlzLl9waHlzaWNhbENvdW50PXRoaXMuX3BoeXNpY2FsQ291bnQraSx0aGlzLl9waHlzaWNhbFN0YXJ0PnRoaXMuX3BoeXNpY2FsRW5kJiZ0aGlzLl9pc0luZGV4UmVuZGVyZWQodGhpcy5fZm9jdXNlZFZpcnR1YWxJbmRleCkmJnRoaXMuX2dldFBoeXNpY2FsSW5kZXgodGhpcy5fZm9jdXNlZFZpcnR1YWxJbmRleCk8dGhpcy5fcGh5c2ljYWxFbmQmJih0aGlzLl9waHlzaWNhbFN0YXJ0PXRoaXMuX3BoeXNpY2FsU3RhcnQraSksdGhpcy5fdXBkYXRlKCksdGhpcy5fdGVtcGxhdGVDb3N0PSh3aW5kb3cucGVyZm9ybWFuY2Uubm93KCktbykvaSxyPU1hdGgucm91bmQoLjUqdGhpcy5fcGh5c2ljYWxDb3VudCl9dGhpcy5fdmlydHVhbEVuZD49dGhpcy5fdmlydHVhbENvdW50LTF8fDA9PT1yfHwodGhpcy5faXNDbGllbnRGdWxsKCk/dGhpcy5fcGh5c2ljYWxTaXplPHRoaXMuX29wdFBoeXNpY2FsU2l6ZSYmdGhpcy5fZGVib3VuY2UoIl9pbmNyZWFzZVBvb2xJZk5lZWRlZCIsdGhpcy5faW5jcmVhc2VQb29sSWZOZWVkZWQuYmluZCh0aGlzLHRoaXMuX2NsYW1wKE1hdGgucm91bmQoNTAvdGhpcy5fdGVtcGxhdGVDb3N0KSwxLHIpKSx5dCk6dGhpcy5fZGVib3VuY2UoIl9pbmNyZWFzZVBvb2xJZk5lZWRlZCIsdGhpcy5faW5jcmVhc2VQb29sSWZOZWVkZWQuYmluZCh0aGlzLHIpLHZ0KSl9fSxfcmVuZGVyOmZ1bmN0aW9uKCl7aWYodGhpcy5pc0F0dGFjaGVkJiZ0aGlzLl9pc1Zpc2libGUpaWYoMCE9PXRoaXMuX3BoeXNpY2FsQ291bnQpe3ZhciB0PXRoaXMuX2dldFJldXNhYmxlcyghMCk7dGhpcy5fcGh5c2ljYWxUb3A9dC5waHlzaWNhbFRvcCx0aGlzLl92aXJ0dWFsU3RhcnQ9dGhpcy5fdmlydHVhbFN0YXJ0K3QuaW5kZXhlcy5sZW5ndGgsdGhpcy5fcGh5c2ljYWxTdGFydD10aGlzLl9waHlzaWNhbFN0YXJ0K3QuaW5kZXhlcy5sZW5ndGgsdGhpcy5fdXBkYXRlKHQuaW5kZXhlcyksdGhpcy5fdXBkYXRlKCksdGhpcy5faW5jcmVhc2VQb29sSWZOZWVkZWQoMCl9ZWxzZSB0aGlzLl92aXJ0dWFsQ291bnQ+MCYmKHRoaXMudXBkYXRlVmlld3BvcnRCb3VuZGFyaWVzKCksdGhpcy5faW5jcmVhc2VQb29sSWZOZWVkZWQoMykpfSxfZW5zdXJlVGVtcGxhdGl6ZWQ6ZnVuY3Rpb24oKXtpZighdGhpcy5jdG9yKXt0aGlzLl91c2VyVGVtcGxhdGU9dGhpcy5xdWVyeUVmZmVjdGl2ZUNoaWxkcmVuKCJ0ZW1wbGF0ZSIpLHRoaXMuX3VzZXJUZW1wbGF0ZXx8Y29uc29sZS53YXJuKCJpcm9uLWxpc3QgcmVxdWlyZXMgYSB0ZW1wbGF0ZSB0byBiZSBwcm92aWRlZCBpbiBsaWdodC1kb20iKTt2YXIgdD17X19rZXlfXzohMH07dFt0aGlzLmFzXT0hMCx0W3RoaXMuaW5kZXhBc109ITAsdFt0aGlzLnNlbGVjdGVkQXNdPSEwLHQudGFiSW5kZXg9ITAsdGhpcy5faW5zdGFuY2VQcm9wcz10LHRoaXMudGVtcGxhdGl6ZSh0aGlzLl91c2VyVGVtcGxhdGUsdGhpcy5tdXRhYmxlRGF0YSl9fSxfZ3JpZENoYW5nZWQ6ZnVuY3Rpb24odCxlKXt2b2lkIDAhPT1lJiYodGhpcy5ub3RpZnlSZXNpemUoKSxXaSgpLHQmJnRoaXMuX3VwZGF0ZUdyaWRNZXRyaWNzKCkpfSxfaXRlbXNDaGFuZ2VkOmZ1bmN0aW9uKHQpe2lmKCJpdGVtcyI9PT10LnBhdGgpdGhpcy5fdmlydHVhbFN0YXJ0PTAsdGhpcy5fcGh5c2ljYWxUb3A9MCx0aGlzLl92aXJ0dWFsQ291bnQ9dGhpcy5pdGVtcz90aGlzLml0ZW1zLmxlbmd0aDowLHRoaXMuX3BoeXNpY2FsSW5kZXhGb3JLZXk9e30sdGhpcy5fZmlyc3RWaXNpYmxlSW5kZXhWYWw9bnVsbCx0aGlzLl9sYXN0VmlzaWJsZUluZGV4VmFsPW51bGwsdGhpcy5fcGh5c2ljYWxDb3VudD10aGlzLl9waHlzaWNhbENvdW50fHwwLHRoaXMuX3BoeXNpY2FsSXRlbXM9dGhpcy5fcGh5c2ljYWxJdGVtc3x8W10sdGhpcy5fcGh5c2ljYWxTaXplcz10aGlzLl9waHlzaWNhbFNpemVzfHxbXSx0aGlzLl9waHlzaWNhbFN0YXJ0PTAsdGhpcy5fc2Nyb2xsVG9wPnRoaXMuX3Njcm9sbE9mZnNldCYmdGhpcy5fcmVzZXRTY3JvbGxQb3NpdGlvbigwKSx0aGlzLl9yZW1vdmVGb2N1c2VkSXRlbSgpLHRoaXMuX2RlYm91bmNlKCJfcmVuZGVyIix0aGlzLl9yZW5kZXIsX3QpO2Vsc2UgaWYoIml0ZW1zLnNwbGljZXMiPT09dC5wYXRoKXtpZih0aGlzLl9hZGp1c3RWaXJ0dWFsSW5kZXgodC52YWx1ZS5pbmRleFNwbGljZXMpLHRoaXMuX3ZpcnR1YWxDb3VudD10aGlzLml0ZW1zP3RoaXMuaXRlbXMubGVuZ3RoOjAsdC52YWx1ZS5pbmRleFNwbGljZXMuc29tZSgoZnVuY3Rpb24odCl7cmV0dXJuIHQuYWRkZWRDb3VudD4wfHx0LnJlbW92ZWQubGVuZ3RoPjB9KSkpe3ZhciBlPXRoaXMuX2dldEFjdGl2ZUVsZW1lbnQoKTt0aGlzLmNvbnRhaW5zKGUpJiZlLmJsdXIoKX12YXIgbj10LnZhbHVlLmluZGV4U3BsaWNlcy5zb21lKChmdW5jdGlvbih0KXtyZXR1cm4gdC5pbmRleCt0LmFkZGVkQ291bnQ+PXRoaXMuX3ZpcnR1YWxTdGFydCYmdC5pbmRleDw9dGhpcy5fdmlydHVhbEVuZH0pLHRoaXMpO3RoaXMuX2lzQ2xpZW50RnVsbCgpJiYhbnx8dGhpcy5fZGVib3VuY2UoIl9yZW5kZXIiLHRoaXMuX3JlbmRlcixfdCl9ZWxzZSJpdGVtcy5sZW5ndGgiIT09dC5wYXRoJiZ0aGlzLl9mb3J3YXJkSXRlbVBhdGgodC5wYXRoLHQudmFsdWUpfSxfZm9yd2FyZEl0ZW1QYXRoOmZ1bmN0aW9uKHQsZSl7dmFyIG4saSxyLG89KHQ9dC5zbGljZSg2KSkuaW5kZXhPZigiLiIpOy0xPT09byYmKG89dC5sZW5ndGgpO3ZhciBhPXRoaXMubW9kZWxGb3JFbGVtZW50KHRoaXMuX29mZnNjcmVlbkZvY3VzZWRJdGVtKSxzPXBhcnNlSW50KHQuc3Vic3RyaW5nKDAsbyksMTApOyhuPXRoaXMuX2lzSW5kZXhSZW5kZXJlZChzKSk/KGk9dGhpcy5fZ2V0UGh5c2ljYWxJbmRleChzKSxyPXRoaXMubW9kZWxGb3JFbGVtZW50KHRoaXMuX3BoeXNpY2FsSXRlbXNbaV0pKTphJiYocj1hKSxyJiZyW3RoaXMuaW5kZXhBc109PT1zJiYodD10LnN1YnN0cmluZyhvKzEpLHIuX3NldFBlbmRpbmdQcm9wZXJ0eU9yUGF0aCh0PXRoaXMuYXMrKHQ/Ii4iK3Q6IiIpLGUsITEsITApLHIuX2ZsdXNoUHJvcGVydGllcyYmci5fZmx1c2hQcm9wZXJ0aWVzKCksbiYmKHRoaXMuX3VwZGF0ZU1ldHJpY3MoW2ldKSx0aGlzLl9wb3NpdGlvbkl0ZW1zKCksdGhpcy5fdXBkYXRlU2Nyb2xsZXJTaXplKCkpKX0sX2FkanVzdFZpcnR1YWxJbmRleDpmdW5jdGlvbih0KXt0LmZvckVhY2goKGZ1bmN0aW9uKHQpe2lmKHQucmVtb3ZlZC5mb3JFYWNoKHRoaXMuX3JlbW92ZUl0ZW0sdGhpcyksdC5pbmRleDx0aGlzLl92aXJ0dWFsU3RhcnQpe3ZhciBlPU1hdGgubWF4KHQuYWRkZWRDb3VudC10LnJlbW92ZWQubGVuZ3RoLHQuaW5kZXgtdGhpcy5fdmlydHVhbFN0YXJ0KTt0aGlzLl92aXJ0dWFsU3RhcnQ9dGhpcy5fdmlydHVhbFN0YXJ0K2UsdGhpcy5fZm9jdXNlZFZpcnR1YWxJbmRleD49MCYmKHRoaXMuX2ZvY3VzZWRWaXJ0dWFsSW5kZXg9dGhpcy5fZm9jdXNlZFZpcnR1YWxJbmRleCtlKX19KSx0aGlzKX0sX3JlbW92ZUl0ZW06ZnVuY3Rpb24odCl7dGhpcy4kLnNlbGVjdG9yLmRlc2VsZWN0KHQpLHRoaXMuX2ZvY3VzZWRJdGVtJiZ0aGlzLm1vZGVsRm9yRWxlbWVudCh0aGlzLl9mb2N1c2VkSXRlbSlbdGhpcy5hc109PT10JiZ0aGlzLl9yZW1vdmVGb2N1c2VkSXRlbSgpfSxfaXRlcmF0ZUl0ZW1zOmZ1bmN0aW9uKHQsZSl7dmFyIG4saSxyLG87aWYoMj09PWFyZ3VtZW50cy5sZW5ndGgmJmUpe2ZvcihvPTA7bzxlLmxlbmd0aDtvKyspaWYoaT10aGlzLl9jb21wdXRlVmlkeChuPWVbb10pLG51bGwhPShyPXQuY2FsbCh0aGlzLG4saSkpKXJldHVybiByfWVsc2V7Zm9yKG49dGhpcy5fcGh5c2ljYWxTdGFydCxpPXRoaXMuX3ZpcnR1YWxTdGFydDtuPHRoaXMuX3BoeXNpY2FsQ291bnQ7bisrLGkrKylpZihudWxsIT0ocj10LmNhbGwodGhpcyxuLGkpKSlyZXR1cm4gcjtmb3Iobj0wO248dGhpcy5fcGh5c2ljYWxTdGFydDtuKyssaSsrKWlmKG51bGwhPShyPXQuY2FsbCh0aGlzLG4saSkpKXJldHVybiByfX0sX2NvbXB1dGVWaWR4OmZ1bmN0aW9uKHQpe3JldHVybiB0Pj10aGlzLl9waHlzaWNhbFN0YXJ0P3RoaXMuX3ZpcnR1YWxTdGFydCsodC10aGlzLl9waHlzaWNhbFN0YXJ0KTp0aGlzLl92aXJ0dWFsU3RhcnQrKHRoaXMuX3BoeXNpY2FsQ291bnQtdGhpcy5fcGh5c2ljYWxTdGFydCkrdH0sX2Fzc2lnbk1vZGVsczpmdW5jdGlvbih0KXt0aGlzLl9pdGVyYXRlSXRlbXMoKGZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5fcGh5c2ljYWxJdGVtc1t0XSxpPXRoaXMuaXRlbXMmJnRoaXMuaXRlbXNbZV07aWYobnVsbCE9aSl7dmFyIHI9dGhpcy5tb2RlbEZvckVsZW1lbnQobik7ci5fX2tleV9fPW51bGwsdGhpcy5fZm9yd2FyZFByb3BlcnR5KHIsdGhpcy5hcyxpKSx0aGlzLl9mb3J3YXJkUHJvcGVydHkocix0aGlzLnNlbGVjdGVkQXMsdGhpcy4kLnNlbGVjdG9yLmlzU2VsZWN0ZWQoaSkpLHRoaXMuX2ZvcndhcmRQcm9wZXJ0eShyLHRoaXMuaW5kZXhBcyxlKSx0aGlzLl9mb3J3YXJkUHJvcGVydHkociwidGFiSW5kZXgiLHRoaXMuX2ZvY3VzZWRWaXJ0dWFsSW5kZXg9PT1lPzA6LTEpLHRoaXMuX3BoeXNpY2FsSW5kZXhGb3JLZXlbci5fX2tleV9fXT10LHIuX2ZsdXNoUHJvcGVydGllcyYmci5fZmx1c2hQcm9wZXJ0aWVzKCEwKSxuLnJlbW92ZUF0dHJpYnV0ZSgiaGlkZGVuIil9ZWxzZSBuLnNldEF0dHJpYnV0ZSgiaGlkZGVuIiwiIil9KSx0KX0sX3VwZGF0ZU1ldHJpY3M6ZnVuY3Rpb24odCl7V2koKTt2YXIgZT0wLG49MCxpPXRoaXMuX3BoeXNpY2FsQXZlcmFnZUNvdW50LHI9dGhpcy5fcGh5c2ljYWxBdmVyYWdlO3RoaXMuX2l0ZXJhdGVJdGVtcygoZnVuY3Rpb24odCxpKXtuKz10aGlzLl9waHlzaWNhbFNpemVzW3RdLHRoaXMuX3BoeXNpY2FsU2l6ZXNbdF09dGhpcy5fcGh5c2ljYWxJdGVtc1t0XS5vZmZzZXRIZWlnaHQsZSs9dGhpcy5fcGh5c2ljYWxTaXplc1t0XSx0aGlzLl9waHlzaWNhbEF2ZXJhZ2VDb3VudCs9dGhpcy5fcGh5c2ljYWxTaXplc1t0XT8xOjB9KSx0KSx0aGlzLmdyaWQ/KHRoaXMuX3VwZGF0ZUdyaWRNZXRyaWNzKCksdGhpcy5fcGh5c2ljYWxTaXplPU1hdGguY2VpbCh0aGlzLl9waHlzaWNhbENvdW50L3RoaXMuX2l0ZW1zUGVyUm93KSp0aGlzLl9yb3dIZWlnaHQpOihuPTE9PT10aGlzLl9pdGVtc1BlclJvdz9uOk1hdGguY2VpbCh0aGlzLl9waHlzaWNhbENvdW50L3RoaXMuX2l0ZW1zUGVyUm93KSp0aGlzLl9yb3dIZWlnaHQsdGhpcy5fcGh5c2ljYWxTaXplPXRoaXMuX3BoeXNpY2FsU2l6ZStlLW4sdGhpcy5faXRlbXNQZXJSb3c9MSksdGhpcy5fcGh5c2ljYWxBdmVyYWdlQ291bnQhPT1pJiYodGhpcy5fcGh5c2ljYWxBdmVyYWdlPU1hdGgucm91bmQoKHIqaStlKS90aGlzLl9waHlzaWNhbEF2ZXJhZ2VDb3VudCkpfSxfdXBkYXRlR3JpZE1ldHJpY3M6ZnVuY3Rpb24oKXt0aGlzLl9pdGVtV2lkdGg9dGhpcy5fcGh5c2ljYWxDb3VudD4wP3RoaXMuX3BoeXNpY2FsSXRlbXNbMF0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg6MjAwLHRoaXMuX3Jvd0hlaWdodD10aGlzLl9waHlzaWNhbENvdW50PjA/dGhpcy5fcGh5c2ljYWxJdGVtc1swXS5vZmZzZXRIZWlnaHQ6MjAwLHRoaXMuX2l0ZW1zUGVyUm93PXRoaXMuX2l0ZW1XaWR0aD9NYXRoLmZsb29yKHRoaXMuX3ZpZXdwb3J0V2lkdGgvdGhpcy5faXRlbVdpZHRoKTp0aGlzLl9pdGVtc1BlclJvd30sX3Bvc2l0aW9uSXRlbXM6ZnVuY3Rpb24oKXt0aGlzLl9hZGp1c3RTY3JvbGxQb3NpdGlvbigpO3ZhciB0PXRoaXMuX3BoeXNpY2FsVG9wO2lmKHRoaXMuZ3JpZCl7dmFyIGU9KHRoaXMuX3ZpZXdwb3J0V2lkdGgtdGhpcy5faXRlbXNQZXJSb3cqdGhpcy5faXRlbVdpZHRoKS8yO3RoaXMuX2l0ZXJhdGVJdGVtcygoZnVuY3Rpb24obixpKXt2YXIgcj1NYXRoLmZsb29yKGkldGhpcy5faXRlbXNQZXJSb3cqdGhpcy5faXRlbVdpZHRoK2UpO3RoaXMuX2lzUlRMJiYocio9LTEpLHRoaXMudHJhbnNsYXRlM2QocisicHgiLHQrInB4IiwwLHRoaXMuX3BoeXNpY2FsSXRlbXNbbl0pLHRoaXMuX3Nob3VsZFJlbmRlck5leHRSb3coaSkmJih0Kz10aGlzLl9yb3dIZWlnaHQpfSkpfWVsc2V7Y29uc3QgZT1bXTt0aGlzLl9pdGVyYXRlSXRlbXMoKGZ1bmN0aW9uKG4saSl7Y29uc3Qgcj10aGlzLl9waHlzaWNhbEl0ZW1zW25dO3RoaXMudHJhbnNsYXRlM2QoMCx0KyJweCIsMCxyKSx0Kz10aGlzLl9waHlzaWNhbFNpemVzW25dO2NvbnN0IG89ci5pZDtvJiZlLnB1c2gobyl9KSksZS5sZW5ndGgmJnRoaXMuc2V0QXR0cmlidXRlKCJhcmlhLW93bnMiLGUuam9pbigiICIpKX19LF9nZXRQaHlzaWNhbFNpemVJbmNyZW1lbnQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZ3JpZD90aGlzLl9jb21wdXRlVmlkeCh0KSV0aGlzLl9pdGVtc1BlclJvdyE9dGhpcy5faXRlbXNQZXJSb3ctMT8wOnRoaXMuX3Jvd0hlaWdodDp0aGlzLl9waHlzaWNhbFNpemVzW3RdfSxfc2hvdWxkUmVuZGVyTmV4dFJvdzpmdW5jdGlvbih0KXtyZXR1cm4gdCV0aGlzLl9pdGVtc1BlclJvdz09dGhpcy5faXRlbXNQZXJSb3ctMX0sX2FkanVzdFNjcm9sbFBvc2l0aW9uOmZ1bmN0aW9uKCl7dmFyIHQ9MD09PXRoaXMuX3ZpcnR1YWxTdGFydD90aGlzLl9waHlzaWNhbFRvcDpNYXRoLm1pbih0aGlzLl9zY3JvbGxQb3NpdGlvbit0aGlzLl9waHlzaWNhbFRvcCwwKTtpZigwIT09dCl7dGhpcy5fcGh5c2ljYWxUb3A9dGhpcy5fcGh5c2ljYWxUb3AtdDt2YXIgZT10aGlzLl9zY3JvbGxQb3NpdGlvbjshWm8mJmU+MCYmdGhpcy5fcmVzZXRTY3JvbGxQb3NpdGlvbihlLXQpfX0sX3Jlc2V0U2Nyb2xsUG9zaXRpb246ZnVuY3Rpb24odCl7dGhpcy5zY3JvbGxUYXJnZXQmJnQ+PTAmJih0aGlzLl9zY3JvbGxUb3A9dCx0aGlzLl9zY3JvbGxQb3NpdGlvbj10aGlzLl9zY3JvbGxUb3ApfSxfdXBkYXRlU2Nyb2xsZXJTaXplOmZ1bmN0aW9uKHQpe3RoaXMuX2VzdFNjcm9sbEhlaWdodD10aGlzLmdyaWQ/dGhpcy5fdmlydHVhbFJvd0NvdW50KnRoaXMuX3Jvd0hlaWdodDp0aGlzLl9waHlzaWNhbEJvdHRvbStNYXRoLm1heCh0aGlzLl92aXJ0dWFsQ291bnQtdGhpcy5fcGh5c2ljYWxDb3VudC10aGlzLl92aXJ0dWFsU3RhcnQsMCkqdGhpcy5fcGh5c2ljYWxBdmVyYWdlLCgodD0odD0odD10fHwwPT09dGhpcy5fc2Nyb2xsSGVpZ2h0KXx8dGhpcy5fc2Nyb2xsUG9zaXRpb24+PXRoaXMuX2VzdFNjcm9sbEhlaWdodC10aGlzLl9waHlzaWNhbFNpemUpfHx0aGlzLmdyaWQmJnRoaXMuJC5pdGVtcy5zdHlsZS5oZWlnaHQ8dGhpcy5fZXN0U2Nyb2xsSGVpZ2h0KXx8TWF0aC5hYnModGhpcy5fZXN0U2Nyb2xsSGVpZ2h0LXRoaXMuX3Njcm9sbEhlaWdodCk+PXRoaXMuX3ZpZXdwb3J0SGVpZ2h0KSYmKHRoaXMuJC5pdGVtcy5zdHlsZS5oZWlnaHQ9dGhpcy5fZXN0U2Nyb2xsSGVpZ2h0KyJweCIsdGhpcy5fc2Nyb2xsSGVpZ2h0PXRoaXMuX2VzdFNjcm9sbEhlaWdodCl9LHNjcm9sbFRvSXRlbTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5zY3JvbGxUb0luZGV4KHRoaXMuaXRlbXMuaW5kZXhPZih0KSl9LHNjcm9sbFRvSW5kZXg6ZnVuY3Rpb24odCl7aWYoISgibnVtYmVyIiE9dHlwZW9mIHR8fHQ8MHx8dD50aGlzLml0ZW1zLmxlbmd0aC0xKSYmKFdpKCksMCE9PXRoaXMuX3BoeXNpY2FsQ291bnQpKXt0PXRoaXMuX2NsYW1wKHQsMCx0aGlzLl92aXJ0dWFsQ291bnQtMSksKCF0aGlzLl9pc0luZGV4UmVuZGVyZWQodCl8fHQ+PXRoaXMuX21heFZpcnR1YWxTdGFydCkmJih0aGlzLl92aXJ0dWFsU3RhcnQ9dGhpcy5ncmlkP3QtMip0aGlzLl9pdGVtc1BlclJvdzp0LTEpLHRoaXMuX21hbmFnZUZvY3VzKCksdGhpcy5fYXNzaWduTW9kZWxzKCksdGhpcy5fdXBkYXRlTWV0cmljcygpLHRoaXMuX3BoeXNpY2FsVG9wPU1hdGguZmxvb3IodGhpcy5fdmlydHVhbFN0YXJ0L3RoaXMuX2l0ZW1zUGVyUm93KSp0aGlzLl9waHlzaWNhbEF2ZXJhZ2U7Zm9yKHZhciBlPXRoaXMuX3BoeXNpY2FsU3RhcnQsbj10aGlzLl92aXJ0dWFsU3RhcnQsaT0wLHI9dGhpcy5faGlkZGVuQ29udGVudFNpemU7bjx0JiZpPD1yOylpKz10aGlzLl9nZXRQaHlzaWNhbFNpemVJbmNyZW1lbnQoZSksZT0oZSsxKSV0aGlzLl9waHlzaWNhbENvdW50LG4rKzt0aGlzLl91cGRhdGVTY3JvbGxlclNpemUoITApLHRoaXMuX3Bvc2l0aW9uSXRlbXMoKSx0aGlzLl9yZXNldFNjcm9sbFBvc2l0aW9uKHRoaXMuX3BoeXNpY2FsVG9wK3RoaXMuX3Njcm9sbE9mZnNldCtpKSx0aGlzLl9pbmNyZWFzZVBvb2xJZk5lZWRlZCgwKSx0aGlzLl9maXJzdFZpc2libGVJbmRleFZhbD1udWxsLHRoaXMuX2xhc3RWaXNpYmxlSW5kZXhWYWw9bnVsbH19LF9yZXNldEF2ZXJhZ2U6ZnVuY3Rpb24oKXt0aGlzLl9waHlzaWNhbEF2ZXJhZ2U9MCx0aGlzLl9waHlzaWNhbEF2ZXJhZ2VDb3VudD0wfSxfcmVzaXplSGFuZGxlcjpmdW5jdGlvbigpe3RoaXMuX2RlYm91bmNlKCJfcmVuZGVyIiwoZnVuY3Rpb24oKXt0aGlzLl9maXJzdFZpc2libGVJbmRleFZhbD1udWxsLHRoaXMuX2xhc3RWaXNpYmxlSW5kZXhWYWw9bnVsbCx0aGlzLl9pc1Zpc2libGU/KHRoaXMudXBkYXRlVmlld3BvcnRCb3VuZGFyaWVzKCksdGhpcy50b2dnbGVTY3JvbGxMaXN0ZW5lcighMCksdGhpcy5fcmVzZXRBdmVyYWdlKCksdGhpcy5fcmVuZGVyKCkpOnRoaXMudG9nZ2xlU2Nyb2xsTGlzdGVuZXIoITEpfSksX3QpfSxzZWxlY3RJdGVtOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnNlbGVjdEluZGV4KHRoaXMuaXRlbXMuaW5kZXhPZih0KSl9LHNlbGVjdEluZGV4OmZ1bmN0aW9uKHQpe2lmKCEodDwwfHx0Pj10aGlzLl92aXJ0dWFsQ291bnQpKXtpZighdGhpcy5tdWx0aVNlbGVjdGlvbiYmdGhpcy5zZWxlY3RlZEl0ZW0mJnRoaXMuY2xlYXJTZWxlY3Rpb24oKSx0aGlzLl9pc0luZGV4UmVuZGVyZWQodCkpe3ZhciBlPXRoaXMubW9kZWxGb3JFbGVtZW50KHRoaXMuX3BoeXNpY2FsSXRlbXNbdGhpcy5fZ2V0UGh5c2ljYWxJbmRleCh0KV0pO2UmJihlW3RoaXMuc2VsZWN0ZWRBc109ITApLHRoaXMudXBkYXRlU2l6ZUZvckluZGV4KHQpfXRoaXMuJC5zZWxlY3Rvci5zZWxlY3RJbmRleCh0KX19LGRlc2VsZWN0SXRlbTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5kZXNlbGVjdEluZGV4KHRoaXMuaXRlbXMuaW5kZXhPZih0KSl9LGRlc2VsZWN0SW5kZXg6ZnVuY3Rpb24odCl7aWYoISh0PDB8fHQ+PXRoaXMuX3ZpcnR1YWxDb3VudCkpe2lmKHRoaXMuX2lzSW5kZXhSZW5kZXJlZCh0KSl0aGlzLm1vZGVsRm9yRWxlbWVudCh0aGlzLl9waHlzaWNhbEl0ZW1zW3RoaXMuX2dldFBoeXNpY2FsSW5kZXgodCldKVt0aGlzLnNlbGVjdGVkQXNdPSExLHRoaXMudXBkYXRlU2l6ZUZvckluZGV4KHQpO3RoaXMuJC5zZWxlY3Rvci5kZXNlbGVjdEluZGV4KHQpfX0sdG9nZ2xlU2VsZWN0aW9uRm9ySXRlbTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy50b2dnbGVTZWxlY3Rpb25Gb3JJbmRleCh0aGlzLml0ZW1zLmluZGV4T2YodCkpfSx0b2dnbGVTZWxlY3Rpb25Gb3JJbmRleDpmdW5jdGlvbih0KXsodGhpcy4kLnNlbGVjdG9yLmlzSW5kZXhTZWxlY3RlZD90aGlzLiQuc2VsZWN0b3IuaXNJbmRleFNlbGVjdGVkKHQpOnRoaXMuJC5zZWxlY3Rvci5pc1NlbGVjdGVkKHRoaXMuaXRlbXNbdF0pKT90aGlzLmRlc2VsZWN0SW5kZXgodCk6dGhpcy5zZWxlY3RJbmRleCh0KX0sY2xlYXJTZWxlY3Rpb246ZnVuY3Rpb24oKXt0aGlzLl9pdGVyYXRlSXRlbXMoKGZ1bmN0aW9uKHQsZSl7dGhpcy5tb2RlbEZvckVsZW1lbnQodGhpcy5fcGh5c2ljYWxJdGVtc1t0XSlbdGhpcy5zZWxlY3RlZEFzXT0hMX0pKSx0aGlzLiQuc2VsZWN0b3IuY2xlYXJTZWxlY3Rpb24oKX0sX3NlbGVjdGlvbkVuYWJsZWRDaGFuZ2VkOmZ1bmN0aW9uKHQpeyh0P3RoaXMubGlzdGVuOnRoaXMudW5saXN0ZW4pLmNhbGwodGhpcyx0aGlzLCJ0YXAiLCJfc2VsZWN0aW9uSGFuZGxlciIpfSxfc2VsZWN0aW9uSGFuZGxlcjpmdW5jdGlvbih0KXt2YXIgZT10aGlzLm1vZGVsRm9yRWxlbWVudCh0LnRhcmdldCk7aWYoZSl7dmFyIG4saSxyPWVyKHQpLnBhdGhbMF0sbz10aGlzLl9nZXRBY3RpdmVFbGVtZW50KCksYT10aGlzLl9waHlzaWNhbEl0ZW1zW3RoaXMuX2dldFBoeXNpY2FsSW5kZXgoZVt0aGlzLmluZGV4QXNdKV07ImlucHV0IiE9PXIubG9jYWxOYW1lJiYiYnV0dG9uIiE9PXIubG9jYWxOYW1lJiYic2VsZWN0IiE9PXIubG9jYWxOYW1lJiYobj1lLnRhYkluZGV4LGUudGFiSW5kZXg9UW8saT1vP28udGFiSW5kZXg6LTEsZS50YWJJbmRleD1uLG8mJmEhPT1vJiZhLmNvbnRhaW5zKG8pJiZpIT09UW98fHRoaXMudG9nZ2xlU2VsZWN0aW9uRm9ySXRlbShlW3RoaXMuYXNdKSl9fSxfbXVsdGlTZWxlY3Rpb25DaGFuZ2VkOmZ1bmN0aW9uKHQpe3RoaXMuY2xlYXJTZWxlY3Rpb24oKSx0aGlzLiQuc2VsZWN0b3IubXVsdGk9dH0sdXBkYXRlU2l6ZUZvckl0ZW06ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMudXBkYXRlU2l6ZUZvckluZGV4KHRoaXMuaXRlbXMuaW5kZXhPZih0KSl9LHVwZGF0ZVNpemVGb3JJbmRleDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5faXNJbmRleFJlbmRlcmVkKHQpPyh0aGlzLl91cGRhdGVNZXRyaWNzKFt0aGlzLl9nZXRQaHlzaWNhbEluZGV4KHQpXSksdGhpcy5fcG9zaXRpb25JdGVtcygpLG51bGwpOm51bGx9LF9tYW5hZ2VGb2N1czpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2ZvY3VzZWRWaXJ0dWFsSW5kZXg7dD49MCYmdDx0aGlzLl92aXJ0dWFsQ291bnQ/dGhpcy5faXNJbmRleFJlbmRlcmVkKHQpP3RoaXMuX3Jlc3RvcmVGb2N1c2VkSXRlbSgpOnRoaXMuX2NyZWF0ZUZvY3VzQmFja2ZpbGxJdGVtKCk6dGhpcy5fdmlydHVhbENvdW50PjAmJnRoaXMuX3BoeXNpY2FsQ291bnQ+MCYmKHRoaXMuX2ZvY3VzZWRQaHlzaWNhbEluZGV4PXRoaXMuX3BoeXNpY2FsU3RhcnQsdGhpcy5fZm9jdXNlZFZpcnR1YWxJbmRleD10aGlzLl92aXJ0dWFsU3RhcnQsdGhpcy5fZm9jdXNlZEl0ZW09dGhpcy5fcGh5c2ljYWxJdGVtc1t0aGlzLl9waHlzaWNhbFN0YXJ0XSl9LF9jb252ZXJ0SW5kZXhUb0NvbXBsZXRlUm93OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9pdGVtc1BlclJvdz10aGlzLl9pdGVtc1BlclJvd3x8MSx0aGlzLmdyaWQ/TWF0aC5jZWlsKHQvdGhpcy5faXRlbXNQZXJSb3cpKnRoaXMuX2l0ZW1zUGVyUm93OnR9LF9pc0luZGV4UmVuZGVyZWQ6ZnVuY3Rpb24odCl7cmV0dXJuIHQ+PXRoaXMuX3ZpcnR1YWxTdGFydCYmdDw9dGhpcy5fdmlydHVhbEVuZH0sX2lzSW5kZXhWaXNpYmxlOmZ1bmN0aW9uKHQpe3JldHVybiB0Pj10aGlzLmZpcnN0VmlzaWJsZUluZGV4JiZ0PD10aGlzLmxhc3RWaXNpYmxlSW5kZXh9LF9nZXRQaHlzaWNhbEluZGV4OmZ1bmN0aW9uKHQpe3JldHVybih0aGlzLl9waHlzaWNhbFN0YXJ0Kyh0LXRoaXMuX3ZpcnR1YWxTdGFydCkpJXRoaXMuX3BoeXNpY2FsQ291bnR9LGZvY3VzSXRlbTpmdW5jdGlvbih0KXt0aGlzLl9mb2N1c1BoeXNpY2FsSXRlbSh0KX0sX2ZvY3VzUGh5c2ljYWxJdGVtOmZ1bmN0aW9uKHQpe2lmKCEodDwwfHx0Pj10aGlzLl92aXJ0dWFsQ291bnQpKXt0aGlzLl9yZXN0b3JlRm9jdXNlZEl0ZW0oKSx0aGlzLl9pc0luZGV4UmVuZGVyZWQodCl8fHRoaXMuc2Nyb2xsVG9JbmRleCh0KTt2YXIgZSxuPXRoaXMuX3BoeXNpY2FsSXRlbXNbdGhpcy5fZ2V0UGh5c2ljYWxJbmRleCh0KV0saT10aGlzLm1vZGVsRm9yRWxlbWVudChuKTtpLnRhYkluZGV4PVFvLG4udGFiSW5kZXg9PT1RbyYmKGU9biksZXx8KGU9ZXIobikucXVlcnlTZWxlY3RvcignW3RhYmluZGV4PSItMTAwIl0nKSksaS50YWJJbmRleD0wLHRoaXMuX2ZvY3VzZWRWaXJ0dWFsSW5kZXg9dCxlJiZlLmZvY3VzKCl9fSxfcmVtb3ZlRm9jdXNlZEl0ZW06ZnVuY3Rpb24oKXt0aGlzLl9vZmZzY3JlZW5Gb2N1c2VkSXRlbSYmdGhpcy5faXRlbXNQYXJlbnQucmVtb3ZlQ2hpbGQodGhpcy5fb2Zmc2NyZWVuRm9jdXNlZEl0ZW0pLHRoaXMuX29mZnNjcmVlbkZvY3VzZWRJdGVtPW51bGwsdGhpcy5fZm9jdXNCYWNrZmlsbEl0ZW09bnVsbCx0aGlzLl9mb2N1c2VkSXRlbT1udWxsLHRoaXMuX2ZvY3VzZWRWaXJ0dWFsSW5kZXg9LTEsdGhpcy5fZm9jdXNlZFBoeXNpY2FsSW5kZXg9LTF9LF9jcmVhdGVGb2N1c0JhY2tmaWxsSXRlbTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2ZvY3VzZWRQaHlzaWNhbEluZGV4O2lmKCEodGhpcy5fb2Zmc2NyZWVuRm9jdXNlZEl0ZW18fHRoaXMuX2ZvY3VzZWRWaXJ0dWFsSW5kZXg8MCkpe2lmKCF0aGlzLl9mb2N1c0JhY2tmaWxsSXRlbSl7dmFyIGU9dGhpcy5zdGFtcChudWxsKTt0aGlzLl9mb2N1c0JhY2tmaWxsSXRlbT1lLnJvb3QucXVlcnlTZWxlY3RvcigiKiIpLHRoaXMuX2l0ZW1zUGFyZW50LmFwcGVuZENoaWxkKGUucm9vdCl9dGhpcy5fb2Zmc2NyZWVuRm9jdXNlZEl0ZW09dGhpcy5fcGh5c2ljYWxJdGVtc1t0XSx0aGlzLm1vZGVsRm9yRWxlbWVudCh0aGlzLl9vZmZzY3JlZW5Gb2N1c2VkSXRlbSkudGFiSW5kZXg9MCx0aGlzLl9waHlzaWNhbEl0ZW1zW3RdPXRoaXMuX2ZvY3VzQmFja2ZpbGxJdGVtLHRoaXMuX2ZvY3VzZWRQaHlzaWNhbEluZGV4PXQsdGhpcy50cmFuc2xhdGUzZCgwLEpvLDAsdGhpcy5fb2Zmc2NyZWVuRm9jdXNlZEl0ZW0pfX0sX3Jlc3RvcmVGb2N1c2VkSXRlbTpmdW5jdGlvbigpe2lmKHRoaXMuX29mZnNjcmVlbkZvY3VzZWRJdGVtJiYhKHRoaXMuX2ZvY3VzZWRWaXJ0dWFsSW5kZXg8MCkpe3RoaXMuX2Fzc2lnbk1vZGVscygpO3ZhciB0PXRoaXMuX2ZvY3VzZWRQaHlzaWNhbEluZGV4PXRoaXMuX2dldFBoeXNpY2FsSW5kZXgodGhpcy5fZm9jdXNlZFZpcnR1YWxJbmRleCksZT10aGlzLl9waHlzaWNhbEl0ZW1zW3RdO2lmKGUpe3ZhciBuPXRoaXMubW9kZWxGb3JFbGVtZW50KGUpLGk9dGhpcy5tb2RlbEZvckVsZW1lbnQodGhpcy5fb2Zmc2NyZWVuRm9jdXNlZEl0ZW0pO25bdGhpcy5hc109PT1pW3RoaXMuYXNdPyh0aGlzLl9mb2N1c0JhY2tmaWxsSXRlbT1lLG4udGFiSW5kZXg9LTEsdGhpcy5fcGh5c2ljYWxJdGVtc1t0XT10aGlzLl9vZmZzY3JlZW5Gb2N1c2VkSXRlbSx0aGlzLnRyYW5zbGF0ZTNkKDAsSm8sMCx0aGlzLl9mb2N1c0JhY2tmaWxsSXRlbSkpOih0aGlzLl9yZW1vdmVGb2N1c2VkSXRlbSgpLHRoaXMuX2ZvY3VzQmFja2ZpbGxJdGVtPW51bGwpLHRoaXMuX29mZnNjcmVlbkZvY3VzZWRJdGVtPW51bGx9fX0sX2RpZEZvY3VzOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMubW9kZWxGb3JFbGVtZW50KHQudGFyZ2V0KSxuPXRoaXMubW9kZWxGb3JFbGVtZW50KHRoaXMuX2ZvY3VzZWRJdGVtKSxpPW51bGwhPT10aGlzLl9vZmZzY3JlZW5Gb2N1c2VkSXRlbSxyPXRoaXMuX2ZvY3VzZWRWaXJ0dWFsSW5kZXg7ZSYmKG49PT1lP3RoaXMuX2lzSW5kZXhWaXNpYmxlKHIpfHx0aGlzLnNjcm9sbFRvSW5kZXgocik6KHRoaXMuX3Jlc3RvcmVGb2N1c2VkSXRlbSgpLG4mJihuLnRhYkluZGV4PS0xKSxlLnRhYkluZGV4PTAsdGhpcy5fZm9jdXNlZFZpcnR1YWxJbmRleD1yPWVbdGhpcy5pbmRleEFzXSx0aGlzLl9mb2N1c2VkUGh5c2ljYWxJbmRleD10aGlzLl9nZXRQaHlzaWNhbEluZGV4KHIpLHRoaXMuX2ZvY3VzZWRJdGVtPXRoaXMuX3BoeXNpY2FsSXRlbXNbdGhpcy5fZm9jdXNlZFBoeXNpY2FsSW5kZXhdLGkmJiF0aGlzLl9vZmZzY3JlZW5Gb2N1c2VkSXRlbSYmdGhpcy5fdXBkYXRlKCkpKX0sX2tleWRvd25IYW5kbGVyOmZ1bmN0aW9uKHQpe3N3aXRjaCh0LmtleUNvZGUpe2Nhc2UgNDA6dGhpcy5fZm9jdXNlZFZpcnR1YWxJbmRleDx0aGlzLl92aXJ0dWFsQ291bnQtMSYmdC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuX2ZvY3VzUGh5c2ljYWxJdGVtKHRoaXMuX2ZvY3VzZWRWaXJ0dWFsSW5kZXgrKHRoaXMuZ3JpZD90aGlzLl9pdGVtc1BlclJvdzoxKSk7YnJlYWs7Y2FzZSAzOTp0aGlzLmdyaWQmJnRoaXMuX2ZvY3VzUGh5c2ljYWxJdGVtKHRoaXMuX2ZvY3VzZWRWaXJ0dWFsSW5kZXgrKHRoaXMuX2lzUlRMPy0xOjEpKTticmVhaztjYXNlIDM4OnRoaXMuX2ZvY3VzZWRWaXJ0dWFsSW5kZXg+MCYmdC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuX2ZvY3VzUGh5c2ljYWxJdGVtKHRoaXMuX2ZvY3VzZWRWaXJ0dWFsSW5kZXgtKHRoaXMuZ3JpZD90aGlzLl9pdGVtc1BlclJvdzoxKSk7YnJlYWs7Y2FzZSAzNzp0aGlzLmdyaWQmJnRoaXMuX2ZvY3VzUGh5c2ljYWxJdGVtKHRoaXMuX2ZvY3VzZWRWaXJ0dWFsSW5kZXgrKHRoaXMuX2lzUlRMPzE6LTEpKTticmVhaztjYXNlIDEzOnRoaXMuX2ZvY3VzUGh5c2ljYWxJdGVtKHRoaXMuX2ZvY3VzZWRWaXJ0dWFsSW5kZXgpLHRoaXMuc2VsZWN0aW9uRW5hYmxlZCYmdGhpcy5fc2VsZWN0aW9uSGFuZGxlcih0KX19LF9jbGFtcDpmdW5jdGlvbih0LGUsbil7cmV0dXJuIE1hdGgubWluKG4sTWF0aC5tYXgoZSx0KSl9LF9kZWJvdW5jZTpmdW5jdGlvbih0LGUsbil7dGhpcy5fZGVib3VuY2Vycz10aGlzLl9kZWJvdW5jZXJzfHx7fSx0aGlzLl9kZWJvdW5jZXJzW3RdPU5uLmRlYm91bmNlKHRoaXMuX2RlYm91bmNlcnNbdF0sbixlLmJpbmQodGhpcykpLFJuKHRoaXMuX2RlYm91bmNlcnNbdF0pfSxfZm9yd2FyZFByb3BlcnR5OmZ1bmN0aW9uKHQsZSxuKXt0Ll9zZXRQZW5kaW5nUHJvcGVydHkoZSxuKX0sX2ZvcndhcmRIb3N0UHJvcFYyOmZ1bmN0aW9uKHQsZSl7KHRoaXMuX3BoeXNpY2FsSXRlbXN8fFtdKS5jb25jYXQoW3RoaXMuX29mZnNjcmVlbkZvY3VzZWRJdGVtLHRoaXMuX2ZvY3VzQmFja2ZpbGxJdGVtXSkuZm9yRWFjaCgoZnVuY3Rpb24obil7biYmdGhpcy5tb2RlbEZvckVsZW1lbnQobikuZm9yd2FyZEhvc3RQcm9wKHQsZSl9KSx0aGlzKX0sX25vdGlmeUluc3RhbmNlUHJvcFYyOmZ1bmN0aW9uKHQsZSxuKXtpZihRKHRoaXMuYXMsZSkpe3ZhciBpPXRbdGhpcy5pbmRleEFzXTtlPT10aGlzLmFzJiYodGhpcy5pdGVtc1tpXT1uKSx0aGlzLm5vdGlmeVBhdGgoSih0aGlzLmFzLCJpdGVtcy4iK2ksZSksbil9fSxfZ2V0U3RhbXBlZENoaWxkcmVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BoeXNpY2FsSXRlbXN9LF9mb3J3YXJkSW5zdGFuY2VQYXRoOmZ1bmN0aW9uKHQsZSxuKXswPT09ZS5pbmRleE9mKHRoaXMuYXMrIi4iKSYmdGhpcy5ub3RpZnlQYXRoKCJpdGVtcy4iK3QuX19rZXlfXysiLiIrZS5zbGljZSh0aGlzLmFzLmxlbmd0aCsxKSxuKX0sX2ZvcndhcmRQYXJlbnRQYXRoOmZ1bmN0aW9uKHQsZSl7KHRoaXMuX3BoeXNpY2FsSXRlbXN8fFtdKS5jb25jYXQoW3RoaXMuX29mZnNjcmVlbkZvY3VzZWRJdGVtLHRoaXMuX2ZvY3VzQmFja2ZpbGxJdGVtXSkuZm9yRWFjaCgoZnVuY3Rpb24obil7biYmdGhpcy5tb2RlbEZvckVsZW1lbnQobikubm90aWZ5UGF0aCh0LGUpfSksdGhpcyl9LF9mb3J3YXJkUGFyZW50UHJvcDpmdW5jdGlvbih0LGUpeyh0aGlzLl9waHlzaWNhbEl0ZW1zfHxbXSkuY29uY2F0KFt0aGlzLl9vZmZzY3JlZW5Gb2N1c2VkSXRlbSx0aGlzLl9mb2N1c0JhY2tmaWxsSXRlbV0pLmZvckVhY2goKGZ1bmN0aW9uKG4pe24mJih0aGlzLm1vZGVsRm9yRWxlbWVudChuKVt0XT1lKX0pLHRoaXMpfSxfZ2V0QWN0aXZlRWxlbWVudDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2l0ZW1zUGFyZW50Lm5vZGUuZG9tSG9zdDtyZXR1cm4gZXIodD90LnJvb3Q6ZG9jdW1lbnQpLmFjdGl2ZUVsZW1lbnR9fSk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjbGFzcyB0YXtjb25zdHJ1Y3Rvcih0KXt0aGlzLnNlbGVjdGlvbj1bXSx0aGlzLnNlbGVjdENhbGxiYWNrPXR9Z2V0KCl7cmV0dXJuIHRoaXMubXVsdGk/dGhpcy5zZWxlY3Rpb24uc2xpY2UoKTp0aGlzLnNlbGVjdGlvblswXX1jbGVhcih0KXt0aGlzLnNlbGVjdGlvbi5zbGljZSgpLmZvckVhY2goKGZ1bmN0aW9uKGUpeyghdHx8dC5pbmRleE9mKGUpPDApJiZ0aGlzLnNldEl0ZW1TZWxlY3RlZChlLCExKX0pLHRoaXMpfWlzU2VsZWN0ZWQodCl7cmV0dXJuIHRoaXMuc2VsZWN0aW9uLmluZGV4T2YodCk+PTB9c2V0SXRlbVNlbGVjdGVkKHQsZSl7aWYobnVsbCE9dCYmZSE9PXRoaXMuaXNTZWxlY3RlZCh0KSl7aWYoZSl0aGlzLnNlbGVjdGlvbi5wdXNoKHQpO2Vsc2V7dmFyIG49dGhpcy5zZWxlY3Rpb24uaW5kZXhPZih0KTtuPj0wJiZ0aGlzLnNlbGVjdGlvbi5zcGxpY2UobiwxKX10aGlzLnNlbGVjdENhbGxiYWNrJiZ0aGlzLnNlbGVjdENhbGxiYWNrKHQsZSl9fXNlbGVjdCh0KXt0aGlzLm11bHRpP3RoaXMudG9nZ2xlKHQpOnRoaXMuZ2V0KCkhPT10JiYodGhpcy5zZXRJdGVtU2VsZWN0ZWQodGhpcy5nZXQoKSwhMSksdGhpcy5zZXRJdGVtU2VsZWN0ZWQodCwhMCkpfXRvZ2dsZSh0KXt0aGlzLnNldEl0ZW1TZWxlY3RlZCh0LCF0aGlzLmlzU2VsZWN0ZWQodCkpfX0KLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovY29uc3QgZWE9e3Byb3BlcnRpZXM6e2F0dHJGb3JTZWxlY3RlZDp7dHlwZTpTdHJpbmcsdmFsdWU6bnVsbH0sc2VsZWN0ZWQ6e3R5cGU6U3RyaW5nLG5vdGlmeTohMH0sc2VsZWN0ZWRJdGVtOnt0eXBlOk9iamVjdCxyZWFkT25seTohMCxub3RpZnk6ITB9LGFjdGl2YXRlRXZlbnQ6e3R5cGU6U3RyaW5nLHZhbHVlOiJ0YXAiLG9ic2VydmVyOiJfYWN0aXZhdGVFdmVudENoYW5nZWQifSxzZWxlY3RhYmxlOlN0cmluZyxzZWxlY3RlZENsYXNzOnt0eXBlOlN0cmluZyx2YWx1ZToiaXJvbi1zZWxlY3RlZCJ9LHNlbGVjdGVkQXR0cmlidXRlOnt0eXBlOlN0cmluZyx2YWx1ZTpudWxsfSxmYWxsYmFja1NlbGVjdGlvbjp7dHlwZTpTdHJpbmcsdmFsdWU6bnVsbH0saXRlbXM6e3R5cGU6QXJyYXkscmVhZE9ubHk6ITAsbm90aWZ5OiEwLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuW119fSxfZXhjbHVkZWRMb2NhbE5hbWVzOnt0eXBlOk9iamVjdCx2YWx1ZTpmdW5jdGlvbigpe3JldHVybnt0ZW1wbGF0ZToxLCJkb20tYmluZCI6MSwiZG9tLWlmIjoxLCJkb20tcmVwZWF0IjoxfX19fSxvYnNlcnZlcnM6WyJfdXBkYXRlQXR0ckZvclNlbGVjdGVkKGF0dHJGb3JTZWxlY3RlZCkiLCJfdXBkYXRlU2VsZWN0ZWQoc2VsZWN0ZWQpIiwiX2NoZWNrRmFsbGJhY2soZmFsbGJhY2tTZWxlY3Rpb24pIl0sY3JlYXRlZDpmdW5jdGlvbigpe3RoaXMuX2JpbmRGaWx0ZXJJdGVtPXRoaXMuX2ZpbHRlckl0ZW0uYmluZCh0aGlzKSx0aGlzLl9zZWxlY3Rpb249bmV3IHRhKHRoaXMuX2FwcGx5U2VsZWN0aW9uLmJpbmQodGhpcykpfSxhdHRhY2hlZDpmdW5jdGlvbigpe3RoaXMuX29ic2VydmVyPXRoaXMuX29ic2VydmVJdGVtcyh0aGlzKSx0aGlzLl9hZGRMaXN0ZW5lcih0aGlzLmFjdGl2YXRlRXZlbnQpfSxkZXRhY2hlZDpmdW5jdGlvbigpe3RoaXMuX29ic2VydmVyJiZlcih0aGlzKS51bm9ic2VydmVOb2Rlcyh0aGlzLl9vYnNlcnZlciksdGhpcy5fcmVtb3ZlTGlzdGVuZXIodGhpcy5hY3RpdmF0ZUV2ZW50KX0saW5kZXhPZjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5pdGVtcz90aGlzLml0ZW1zLmluZGV4T2YodCk6LTF9LHNlbGVjdDpmdW5jdGlvbih0KXt0aGlzLnNlbGVjdGVkPXR9LHNlbGVjdFByZXZpb3VzOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5pdGVtcy5sZW5ndGgsZT10LTE7dm9pZCAwIT09dGhpcy5zZWxlY3RlZCYmKGU9KE51bWJlcih0aGlzLl92YWx1ZVRvSW5kZXgodGhpcy5zZWxlY3RlZCkpLTErdCkldCksdGhpcy5zZWxlY3RlZD10aGlzLl9pbmRleFRvVmFsdWUoZSl9LHNlbGVjdE5leHQ6ZnVuY3Rpb24oKXt2YXIgdD0wO3ZvaWQgMCE9PXRoaXMuc2VsZWN0ZWQmJih0PShOdW1iZXIodGhpcy5fdmFsdWVUb0luZGV4KHRoaXMuc2VsZWN0ZWQpKSsxKSV0aGlzLml0ZW1zLmxlbmd0aCksdGhpcy5zZWxlY3RlZD10aGlzLl9pbmRleFRvVmFsdWUodCl9LHNlbGVjdEluZGV4OmZ1bmN0aW9uKHQpe3RoaXMuc2VsZWN0KHRoaXMuX2luZGV4VG9WYWx1ZSh0KSl9LGZvcmNlU3luY2hyb25vdXNJdGVtVXBkYXRlOmZ1bmN0aW9uKCl7dGhpcy5fb2JzZXJ2ZXImJiJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLl9vYnNlcnZlci5mbHVzaD90aGlzLl9vYnNlcnZlci5mbHVzaCgpOnRoaXMuX3VwZGF0ZUl0ZW1zKCl9LGdldCBfc2hvdWxkVXBkYXRlU2VsZWN0aW9uKCl7cmV0dXJuIG51bGwhPXRoaXMuc2VsZWN0ZWR9LF9jaGVja0ZhbGxiYWNrOmZ1bmN0aW9uKCl7dGhpcy5fdXBkYXRlU2VsZWN0ZWQoKX0sX2FkZExpc3RlbmVyOmZ1bmN0aW9uKHQpe3RoaXMubGlzdGVuKHRoaXMsdCwiX2FjdGl2YXRlSGFuZGxlciIpfSxfcmVtb3ZlTGlzdGVuZXI6ZnVuY3Rpb24odCl7dGhpcy51bmxpc3Rlbih0aGlzLHQsIl9hY3RpdmF0ZUhhbmRsZXIiKX0sX2FjdGl2YXRlRXZlbnRDaGFuZ2VkOmZ1bmN0aW9uKHQsZSl7dGhpcy5fcmVtb3ZlTGlzdGVuZXIoZSksdGhpcy5fYWRkTGlzdGVuZXIodCl9LF91cGRhdGVJdGVtczpmdW5jdGlvbigpe3ZhciB0PWVyKHRoaXMpLnF1ZXJ5RGlzdHJpYnV0ZWRFbGVtZW50cyh0aGlzLnNlbGVjdGFibGV8fCIqIik7dD1BcnJheS5wcm90b3R5cGUuZmlsdGVyLmNhbGwodCx0aGlzLl9iaW5kRmlsdGVySXRlbSksdGhpcy5fc2V0SXRlbXModCl9LF91cGRhdGVBdHRyRm9yU2VsZWN0ZWQ6ZnVuY3Rpb24oKXt0aGlzLnNlbGVjdGVkSXRlbSYmKHRoaXMuc2VsZWN0ZWQ9dGhpcy5fdmFsdWVGb3JJdGVtKHRoaXMuc2VsZWN0ZWRJdGVtKSl9LF91cGRhdGVTZWxlY3RlZDpmdW5jdGlvbigpe3RoaXMuX3NlbGVjdFNlbGVjdGVkKHRoaXMuc2VsZWN0ZWQpfSxfc2VsZWN0U2VsZWN0ZWQ6ZnVuY3Rpb24odCl7aWYodGhpcy5pdGVtcyl7dmFyIGU9dGhpcy5fdmFsdWVUb0l0ZW0odGhpcy5zZWxlY3RlZCk7ZT90aGlzLl9zZWxlY3Rpb24uc2VsZWN0KGUpOnRoaXMuX3NlbGVjdGlvbi5jbGVhcigpLHRoaXMuZmFsbGJhY2tTZWxlY3Rpb24mJnRoaXMuaXRlbXMubGVuZ3RoJiZ2b2lkIDA9PT10aGlzLl9zZWxlY3Rpb24uZ2V0KCkmJih0aGlzLnNlbGVjdGVkPXRoaXMuZmFsbGJhY2tTZWxlY3Rpb24pfX0sX2ZpbHRlckl0ZW06ZnVuY3Rpb24odCl7cmV0dXJuIXRoaXMuX2V4Y2x1ZGVkTG9jYWxOYW1lc1t0LmxvY2FsTmFtZV19LF92YWx1ZVRvSXRlbTpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD9udWxsOnRoaXMuaXRlbXNbdGhpcy5fdmFsdWVUb0luZGV4KHQpXX0sX3ZhbHVlVG9JbmRleDpmdW5jdGlvbih0KXtpZighdGhpcy5hdHRyRm9yU2VsZWN0ZWQpcmV0dXJuIE51bWJlcih0KTtmb3IodmFyIGUsbj0wO2U9dGhpcy5pdGVtc1tuXTtuKyspaWYodGhpcy5fdmFsdWVGb3JJdGVtKGUpPT10KXJldHVybiBufSxfaW5kZXhUb1ZhbHVlOmZ1bmN0aW9uKHQpe2lmKCF0aGlzLmF0dHJGb3JTZWxlY3RlZClyZXR1cm4gdDt2YXIgZT10aGlzLml0ZW1zW3RdO3JldHVybiBlP3RoaXMuX3ZhbHVlRm9ySXRlbShlKTp2b2lkIDB9LF92YWx1ZUZvckl0ZW06ZnVuY3Rpb24odCl7aWYoIXQpcmV0dXJuIG51bGw7aWYoIXRoaXMuYXR0ckZvclNlbGVjdGVkKXt2YXIgZT10aGlzLmluZGV4T2YodCk7cmV0dXJuLTE9PT1lP251bGw6ZX12YXIgbj10W3N0KHRoaXMuYXR0ckZvclNlbGVjdGVkKV07cmV0dXJuIG51bGwhPW4/bjp0LmdldEF0dHJpYnV0ZSh0aGlzLmF0dHJGb3JTZWxlY3RlZCl9LF9hcHBseVNlbGVjdGlvbjpmdW5jdGlvbih0LGUpe3RoaXMuc2VsZWN0ZWRDbGFzcyYmdGhpcy50b2dnbGVDbGFzcyh0aGlzLnNlbGVjdGVkQ2xhc3MsZSx0KSx0aGlzLnNlbGVjdGVkQXR0cmlidXRlJiZ0aGlzLnRvZ2dsZUF0dHJpYnV0ZSh0aGlzLnNlbGVjdGVkQXR0cmlidXRlLGUsdCksdGhpcy5fc2VsZWN0aW9uQ2hhbmdlKCksdGhpcy5maXJlKCJpcm9uLSIrKGU/InNlbGVjdCI6ImRlc2VsZWN0Iikse2l0ZW06dH0pfSxfc2VsZWN0aW9uQ2hhbmdlOmZ1bmN0aW9uKCl7dGhpcy5fc2V0U2VsZWN0ZWRJdGVtKHRoaXMuX3NlbGVjdGlvbi5nZXQoKSl9LF9vYnNlcnZlSXRlbXM6ZnVuY3Rpb24odCl7cmV0dXJuIGVyKHQpLm9ic2VydmVOb2RlcygoZnVuY3Rpb24odCl7dGhpcy5fdXBkYXRlSXRlbXMoKSx0aGlzLl91cGRhdGVTZWxlY3RlZCgpLHRoaXMuZmlyZSgiaXJvbi1pdGVtcy1jaGFuZ2VkIix0LHtidWJibGVzOiExLGNhbmNlbGFibGU6ITF9KX0pKX0sX2FjdGl2YXRlSGFuZGxlcjpmdW5jdGlvbih0KXtmb3IodmFyIGU9dC50YXJnZXQsbj10aGlzLml0ZW1zO2UmJmUhPXRoaXM7KXt2YXIgaT1uLmluZGV4T2YoZSk7aWYoaT49MCl7dmFyIHI9dGhpcy5faW5kZXhUb1ZhbHVlKGkpO3JldHVybiB2b2lkIHRoaXMuX2l0ZW1BY3RpdmF0ZShyLGUpfWU9ZS5wYXJlbnROb2RlfX0sX2l0ZW1BY3RpdmF0ZTpmdW5jdGlvbih0LGUpe3RoaXMuZmlyZSgiaXJvbi1hY3RpdmF0ZSIse3NlbGVjdGVkOnQsaXRlbTplfSx7Y2FuY2VsYWJsZTohMH0pLmRlZmF1bHRQcmV2ZW50ZWR8fHRoaXMuc2VsZWN0KHQpfX07Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqL2pyKHtfdGVtcGxhdGU6eGVgCiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgfQoKICAgICAgOmhvc3QgPiA6OnNsb3R0ZWQoOm5vdChzbG90KTpub3QoLmlyb24tc2VsZWN0ZWQpKSB7CiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogICAgICB9CiAgICA8L3N0eWxlPgoKICAgIDxzbG90Pjwvc2xvdD4KYCxpczoiaXJvbi1wYWdlcyIsYmVoYXZpb3JzOltDbyxlYV0scHJvcGVydGllczp7YWN0aXZhdGVFdmVudDp7dHlwZTpTdHJpbmcsdmFsdWU6bnVsbH19LG9ic2VydmVyczpbIl9zZWxlY3RlZFBhZ2VDaGFuZ2VkKHNlbGVjdGVkKSJdLF9zZWxlY3RlZFBhZ2VDaGFuZ2VkOmZ1bmN0aW9uKHQsZSl7dGhpcy5hc3luYyh0aGlzLm5vdGlmeVJlc2l6ZSl9fSk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCBuYT14ZWAKPGN1c3RvbS1zdHlsZT4KICA8c3R5bGUgaXM9ImN1c3RvbS1zdHlsZSI+CiAgICBodG1sIHsKCiAgICAgIC0tc2hhZG93LXRyYW5zaXRpb246IHsKICAgICAgICB0cmFuc2l0aW9uOiBib3gtc2hhZG93IDAuMjhzIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7CiAgICAgIH07CgogICAgICAtLXNoYWRvdy1ub25lOiB7CiAgICAgICAgYm94LXNoYWRvdzogbm9uZTsKICAgICAgfTsKCiAgICAgIC8qIGZyb20gaHR0cDovL2NvZGVwZW4uaW8vc2h5bmRtYW4vcGVuL2M1Mzk0ZGRmMmU4YjJhNWM5MTg1OTA0YjU3NDIxY2RiICovCgogICAgICAtLXNoYWRvdy1lbGV2YXRpb24tMmRwOiB7CiAgICAgICAgYm94LXNoYWRvdzogMCAycHggMnB4IDAgcmdiYSgwLCAwLCAwLCAwLjE0KSwKICAgICAgICAgICAgICAgICAgICAwIDFweCA1cHggMCByZ2JhKDAsIDAsIDAsIDAuMTIpLAogICAgICAgICAgICAgICAgICAgIDAgM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKTsKICAgICAgfTsKCiAgICAgIC0tc2hhZG93LWVsZXZhdGlvbi0zZHA6IHsKICAgICAgICBib3gtc2hhZG93OiAwIDNweCA0cHggMCByZ2JhKDAsIDAsIDAsIDAuMTQpLAogICAgICAgICAgICAgICAgICAgIDAgMXB4IDhweCAwIHJnYmEoMCwgMCwgMCwgMC4xMiksCiAgICAgICAgICAgICAgICAgICAgMCAzcHggM3B4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjQpOwogICAgICB9OwoKICAgICAgLS1zaGFkb3ctZWxldmF0aW9uLTRkcDogewogICAgICAgIGJveC1zaGFkb3c6IDAgNHB4IDVweCAwIHJnYmEoMCwgMCwgMCwgMC4xNCksCiAgICAgICAgICAgICAgICAgICAgMCAxcHggMTBweCAwIHJnYmEoMCwgMCwgMCwgMC4xMiksCiAgICAgICAgICAgICAgICAgICAgMCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjQpOwogICAgICB9OwoKICAgICAgLS1zaGFkb3ctZWxldmF0aW9uLTZkcDogewogICAgICAgIGJveC1zaGFkb3c6IDAgNnB4IDEwcHggMCByZ2JhKDAsIDAsIDAsIDAuMTQpLAogICAgICAgICAgICAgICAgICAgIDAgMXB4IDE4cHggMCByZ2JhKDAsIDAsIDAsIDAuMTIpLAogICAgICAgICAgICAgICAgICAgIDAgM3B4IDVweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC40KTsKICAgICAgfTsKCiAgICAgIC0tc2hhZG93LWVsZXZhdGlvbi04ZHA6IHsKICAgICAgICBib3gtc2hhZG93OiAwIDhweCAxMHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLAogICAgICAgICAgICAgICAgICAgIDAgM3B4IDE0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xMiksCiAgICAgICAgICAgICAgICAgICAgMCA1cHggNXB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjQpOwogICAgICB9OwoKICAgICAgLS1zaGFkb3ctZWxldmF0aW9uLTEyZHA6IHsKICAgICAgICBib3gtc2hhZG93OiAwIDEycHggMTZweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwKICAgICAgICAgICAgICAgICAgICAwIDRweCAyMnB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTIpLAogICAgICAgICAgICAgICAgICAgIDAgNnB4IDdweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC40KTsKICAgICAgfTsKCiAgICAgIC0tc2hhZG93LWVsZXZhdGlvbi0xNmRwOiB7CiAgICAgICAgYm94LXNoYWRvdzogMCAxNnB4IDI0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksCiAgICAgICAgICAgICAgICAgICAgMCAgNnB4IDMwcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMiksCiAgICAgICAgICAgICAgICAgICAgMCAgOHB4IDEwcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuNCk7CiAgICAgIH07CgogICAgICAtLXNoYWRvdy1lbGV2YXRpb24tMjRkcDogewogICAgICAgIGJveC1zaGFkb3c6IDAgMjRweCAzOHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLAogICAgICAgICAgICAgICAgICAgIDAgOXB4IDQ2cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMiksCiAgICAgICAgICAgICAgICAgICAgMCAxMXB4IDE1cHggLTdweCByZ2JhKDAsIDAsIDAsIDAuNCk7CiAgICAgIH07CiAgICB9CiAgPC9zdHlsZT4KPC9jdXN0b20tc3R5bGU+YDtuYS5zZXRBdHRyaWJ1dGUoInN0eWxlIiwiZGlzcGxheTogbm9uZTsiKSxkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKG5hLmNvbnRlbnQpOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KY29uc3QgaWE9eGVgCjxkb20tbW9kdWxlIGlkPSJwYXBlci1tYXRlcmlhbC1zdHlsZXMiPgogIDx0ZW1wbGF0ZT4KICAgIDxzdHlsZT4KICAgICAgaHRtbCB7CiAgICAgICAgLS1wYXBlci1tYXRlcmlhbDogewogICAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgfTsKICAgICAgICAtLXBhcGVyLW1hdGVyaWFsLWVsZXZhdGlvbi0xOiB7CiAgICAgICAgICBAYXBwbHkgLS1zaGFkb3ctZWxldmF0aW9uLTJkcDsKICAgICAgICB9OwogICAgICAgIC0tcGFwZXItbWF0ZXJpYWwtZWxldmF0aW9uLTI6IHsKICAgICAgICAgIEBhcHBseSAtLXNoYWRvdy1lbGV2YXRpb24tNGRwOwogICAgICAgIH07CiAgICAgICAgLS1wYXBlci1tYXRlcmlhbC1lbGV2YXRpb24tMzogewogICAgICAgICAgQGFwcGx5IC0tc2hhZG93LWVsZXZhdGlvbi02ZHA7CiAgICAgICAgfTsKICAgICAgICAtLXBhcGVyLW1hdGVyaWFsLWVsZXZhdGlvbi00OiB7CiAgICAgICAgICBAYXBwbHkgLS1zaGFkb3ctZWxldmF0aW9uLThkcDsKICAgICAgICB9OwogICAgICAgIC0tcGFwZXItbWF0ZXJpYWwtZWxldmF0aW9uLTU6IHsKICAgICAgICAgIEBhcHBseSAtLXNoYWRvdy1lbGV2YXRpb24tMTZkcDsKICAgICAgICB9OwogICAgICB9CiAgICAgIC5wYXBlci1tYXRlcmlhbCB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItbWF0ZXJpYWw7CiAgICAgIH0KICAgICAgLnBhcGVyLW1hdGVyaWFsW2VsZXZhdGlvbj0iMSJdIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1tYXRlcmlhbC1lbGV2YXRpb24tMTsKICAgICAgfQogICAgICAucGFwZXItbWF0ZXJpYWxbZWxldmF0aW9uPSIyIl0gewogICAgICAgIEBhcHBseSAtLXBhcGVyLW1hdGVyaWFsLWVsZXZhdGlvbi0yOwogICAgICB9CiAgICAgIC5wYXBlci1tYXRlcmlhbFtlbGV2YXRpb249IjMiXSB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItbWF0ZXJpYWwtZWxldmF0aW9uLTM7CiAgICAgIH0KICAgICAgLnBhcGVyLW1hdGVyaWFsW2VsZXZhdGlvbj0iNCJdIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1tYXRlcmlhbC1lbGV2YXRpb24tNDsKICAgICAgfQogICAgICAucGFwZXItbWF0ZXJpYWxbZWxldmF0aW9uPSI1Il0gewogICAgICAgIEBhcHBseSAtLXBhcGVyLW1hdGVyaWFsLWVsZXZhdGlvbi01OwogICAgICB9CgogICAgICAvKiBEdXBsaWNhdGUgdGhlIHN0eWxlcyBiZWNhdXNlIG9mIGh0dHBzOi8vZ2l0aHViLmNvbS93ZWJjb21wb25lbnRzL3NoYWR5Y3NzL2lzc3Vlcy8xOTMgKi8KICAgICAgOmhvc3QgewogICAgICAgIC0tcGFwZXItbWF0ZXJpYWw6IHsKICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIH07CiAgICAgICAgLS1wYXBlci1tYXRlcmlhbC1lbGV2YXRpb24tMTogewogICAgICAgICAgQGFwcGx5IC0tc2hhZG93LWVsZXZhdGlvbi0yZHA7CiAgICAgICAgfTsKICAgICAgICAtLXBhcGVyLW1hdGVyaWFsLWVsZXZhdGlvbi0yOiB7CiAgICAgICAgICBAYXBwbHkgLS1zaGFkb3ctZWxldmF0aW9uLTRkcDsKICAgICAgICB9OwogICAgICAgIC0tcGFwZXItbWF0ZXJpYWwtZWxldmF0aW9uLTM6IHsKICAgICAgICAgIEBhcHBseSAtLXNoYWRvdy1lbGV2YXRpb24tNmRwOwogICAgICAgIH07CiAgICAgICAgLS1wYXBlci1tYXRlcmlhbC1lbGV2YXRpb24tNDogewogICAgICAgICAgQGFwcGx5IC0tc2hhZG93LWVsZXZhdGlvbi04ZHA7CiAgICAgICAgfTsKICAgICAgICAtLXBhcGVyLW1hdGVyaWFsLWVsZXZhdGlvbi01OiB7CiAgICAgICAgICBAYXBwbHkgLS1zaGFkb3ctZWxldmF0aW9uLTE2ZHA7CiAgICAgICAgfTsKICAgICAgfQogICAgICA6aG9zdCgucGFwZXItbWF0ZXJpYWwpIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1tYXRlcmlhbDsKICAgICAgfQogICAgICA6aG9zdCgucGFwZXItbWF0ZXJpYWxbZWxldmF0aW9uPSIxIl0pIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1tYXRlcmlhbC1lbGV2YXRpb24tMTsKICAgICAgfQogICAgICA6aG9zdCgucGFwZXItbWF0ZXJpYWxbZWxldmF0aW9uPSIyIl0pIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1tYXRlcmlhbC1lbGV2YXRpb24tMjsKICAgICAgfQogICAgICA6aG9zdCgucGFwZXItbWF0ZXJpYWxbZWxldmF0aW9uPSIzIl0pIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1tYXRlcmlhbC1lbGV2YXRpb24tMzsKICAgICAgfQogICAgICA6aG9zdCgucGFwZXItbWF0ZXJpYWxbZWxldmF0aW9uPSI0Il0pIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1tYXRlcmlhbC1lbGV2YXRpb24tNDsKICAgICAgfQogICAgICA6aG9zdCgucGFwZXItbWF0ZXJpYWxbZWxldmF0aW9uPSI1Il0pIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1tYXRlcmlhbC1lbGV2YXRpb24tNTsKICAgICAgfQogICAgPC9zdHlsZT4KICA8L3RlbXBsYXRlPgo8L2RvbS1tb2R1bGU+YDtpYS5zZXRBdHRyaWJ1dGUoInN0eWxlIiwiZGlzcGxheTogbm9uZTsiKSxkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGlhLmNvbnRlbnQpOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KY29uc3QgcmE9e3Byb3BlcnRpZXM6e2ZvY3VzZWQ6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMSxub3RpZnk6ITAscmVhZE9ubHk6ITAscmVmbGVjdFRvQXR0cmlidXRlOiEwfSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHZhbHVlOiExLG5vdGlmeTohMCxvYnNlcnZlcjoiX2Rpc2FibGVkQ2hhbmdlZCIscmVmbGVjdFRvQXR0cmlidXRlOiEwfSxfb2xkVGFiSW5kZXg6e3R5cGU6U3RyaW5nfSxfYm91bmRGb2N1c0JsdXJIYW5kbGVyOnt0eXBlOkZ1bmN0aW9uLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2ZvY3VzQmx1ckhhbmRsZXIuYmluZCh0aGlzKX19fSxvYnNlcnZlcnM6WyJfY2hhbmdlZENvbnRyb2xTdGF0ZShmb2N1c2VkLCBkaXNhYmxlZCkiXSxyZWFkeTpmdW5jdGlvbigpe3RoaXMuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLHRoaXMuX2JvdW5kRm9jdXNCbHVySGFuZGxlciwhMCksdGhpcy5hZGRFdmVudExpc3RlbmVyKCJibHVyIix0aGlzLl9ib3VuZEZvY3VzQmx1ckhhbmRsZXIsITApfSxfZm9jdXNCbHVySGFuZGxlcjpmdW5jdGlvbih0KXt0aGlzLl9zZXRGb2N1c2VkKCJmb2N1cyI9PT10LnR5cGUpfSxfZGlzYWJsZWRDaGFuZ2VkOmZ1bmN0aW9uKHQsZSl7dGhpcy5zZXRBdHRyaWJ1dGUoImFyaWEtZGlzYWJsZWQiLHQ/InRydWUiOiJmYWxzZSIpLHRoaXMuc3R5bGUucG9pbnRlckV2ZW50cz10PyJub25lIjoiIix0Pyh0aGlzLl9vbGRUYWJJbmRleD10aGlzLmdldEF0dHJpYnV0ZSgidGFiaW5kZXgiKSx0aGlzLl9zZXRGb2N1c2VkKCExKSx0aGlzLnRhYkluZGV4PS0xLHRoaXMuYmx1cigpKTp2b2lkIDAhPT10aGlzLl9vbGRUYWJJbmRleCYmKG51bGw9PT10aGlzLl9vbGRUYWJJbmRleD90aGlzLnJlbW92ZUF0dHJpYnV0ZSgidGFiaW5kZXgiKTp0aGlzLnNldEF0dHJpYnV0ZSgidGFiaW5kZXgiLHRoaXMuX29sZFRhYkluZGV4KSl9LF9jaGFuZ2VkQ29udHJvbFN0YXRlOmZ1bmN0aW9uKCl7dGhpcy5fY29udHJvbFN0YXRlQ2hhbmdlZCYmdGhpcy5fY29udHJvbFN0YXRlQ2hhbmdlZCgpfX0sb2E9e3Byb3BlcnRpZXM6e3ByZXNzZWQ6e3R5cGU6Qm9vbGVhbixyZWFkT25seTohMCx2YWx1ZTohMSxyZWZsZWN0VG9BdHRyaWJ1dGU6ITAsb2JzZXJ2ZXI6Il9wcmVzc2VkQ2hhbmdlZCJ9LHRvZ2dsZXM6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMSxyZWZsZWN0VG9BdHRyaWJ1dGU6ITB9LGFjdGl2ZTp7dHlwZTpCb29sZWFuLHZhbHVlOiExLG5vdGlmeTohMCxyZWZsZWN0VG9BdHRyaWJ1dGU6ITB9LHBvaW50ZXJEb3duOnt0eXBlOkJvb2xlYW4scmVhZE9ubHk6ITAsdmFsdWU6ITF9LHJlY2VpdmVkRm9jdXNGcm9tS2V5Ym9hcmQ6e3R5cGU6Qm9vbGVhbixyZWFkT25seTohMH0sYXJpYUFjdGl2ZUF0dHJpYnV0ZTp7dHlwZTpTdHJpbmcsdmFsdWU6ImFyaWEtcHJlc3NlZCIsb2JzZXJ2ZXI6Il9hcmlhQWN0aXZlQXR0cmlidXRlQ2hhbmdlZCJ9fSxsaXN0ZW5lcnM6e2Rvd246Il9kb3duSGFuZGxlciIsdXA6Il91cEhhbmRsZXIiLHRhcDoiX3RhcEhhbmRsZXIifSxvYnNlcnZlcnM6WyJfZm9jdXNDaGFuZ2VkKGZvY3VzZWQpIiwiX2FjdGl2ZUNoYW5nZWQoYWN0aXZlLCBhcmlhQWN0aXZlQXR0cmlidXRlKSJdLGtleUJpbmRpbmdzOnsiZW50ZXI6a2V5ZG93biI6Il9hc3luY0NsaWNrIiwic3BhY2U6a2V5ZG93biI6Il9zcGFjZUtleURvd25IYW5kbGVyIiwic3BhY2U6a2V5dXAiOiJfc3BhY2VLZXlVcEhhbmRsZXIifSxfbW91c2VFdmVudFJlOi9ebW91c2UvLF90YXBIYW5kbGVyOmZ1bmN0aW9uKCl7dGhpcy50b2dnbGVzP3RoaXMuX3VzZXJBY3RpdmF0ZSghdGhpcy5hY3RpdmUpOnRoaXMuYWN0aXZlPSExfSxfZm9jdXNDaGFuZ2VkOmZ1bmN0aW9uKHQpe3RoaXMuX2RldGVjdEtleWJvYXJkRm9jdXModCksdHx8dGhpcy5fc2V0UHJlc3NlZCghMSl9LF9kZXRlY3RLZXlib2FyZEZvY3VzOmZ1bmN0aW9uKHQpe3RoaXMuX3NldFJlY2VpdmVkRm9jdXNGcm9tS2V5Ym9hcmQoIXRoaXMucG9pbnRlckRvd24mJnQpfSxfdXNlckFjdGl2YXRlOmZ1bmN0aW9uKHQpe3RoaXMuYWN0aXZlIT09dCYmKHRoaXMuYWN0aXZlPXQsdGhpcy5maXJlKCJjaGFuZ2UiKSl9LF9kb3duSGFuZGxlcjpmdW5jdGlvbih0KXt0aGlzLl9zZXRQb2ludGVyRG93bighMCksdGhpcy5fc2V0UHJlc3NlZCghMCksdGhpcy5fc2V0UmVjZWl2ZWRGb2N1c0Zyb21LZXlib2FyZCghMSl9LF91cEhhbmRsZXI6ZnVuY3Rpb24oKXt0aGlzLl9zZXRQb2ludGVyRG93bighMSksdGhpcy5fc2V0UHJlc3NlZCghMSl9LF9zcGFjZUtleURvd25IYW5kbGVyOmZ1bmN0aW9uKHQpe3ZhciBlPXQuZGV0YWlsLmtleWJvYXJkRXZlbnQsbj1lcihlKS5sb2NhbFRhcmdldDt0aGlzLmlzTGlnaHREZXNjZW5kYW50KG4pfHwoZS5wcmV2ZW50RGVmYXVsdCgpLGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCksdGhpcy5fc2V0UHJlc3NlZCghMCkpfSxfc3BhY2VLZXlVcEhhbmRsZXI6ZnVuY3Rpb24odCl7dmFyIGU9ZXIodC5kZXRhaWwua2V5Ym9hcmRFdmVudCkubG9jYWxUYXJnZXQ7dGhpcy5pc0xpZ2h0RGVzY2VuZGFudChlKXx8KHRoaXMucHJlc3NlZCYmdGhpcy5fYXN5bmNDbGljaygpLHRoaXMuX3NldFByZXNzZWQoITEpKX0sX2FzeW5jQ2xpY2s6ZnVuY3Rpb24oKXt0aGlzLmFzeW5jKChmdW5jdGlvbigpe3RoaXMuY2xpY2soKX0pLDEpfSxfcHJlc3NlZENoYW5nZWQ6ZnVuY3Rpb24odCl7dGhpcy5fY2hhbmdlZEJ1dHRvblN0YXRlKCl9LF9hcmlhQWN0aXZlQXR0cmlidXRlQ2hhbmdlZDpmdW5jdGlvbih0LGUpe2UmJmUhPXQmJnRoaXMuaGFzQXR0cmlidXRlKGUpJiZ0aGlzLnJlbW92ZUF0dHJpYnV0ZShlKX0sX2FjdGl2ZUNoYW5nZWQ6ZnVuY3Rpb24odCxlKXt0aGlzLnRvZ2dsZXM/dGhpcy5zZXRBdHRyaWJ1dGUodGhpcy5hcmlhQWN0aXZlQXR0cmlidXRlLHQ/InRydWUiOiJmYWxzZSIpOnRoaXMucmVtb3ZlQXR0cmlidXRlKHRoaXMuYXJpYUFjdGl2ZUF0dHJpYnV0ZSksdGhpcy5fY2hhbmdlZEJ1dHRvblN0YXRlKCl9LF9jb250cm9sU3RhdGVDaGFuZ2VkOmZ1bmN0aW9uKCl7dGhpcy5kaXNhYmxlZD90aGlzLl9zZXRQcmVzc2VkKCExKTp0aGlzLl9jaGFuZ2VkQnV0dG9uU3RhdGUoKX0sX2NoYW5nZWRCdXR0b25TdGF0ZTpmdW5jdGlvbigpe3RoaXMuX2J1dHRvblN0YXRlQ2hhbmdlZCYmdGhpcy5fYnV0dG9uU3RhdGVDaGFuZ2VkKCl9fSxhYT1bWG8sb2FdOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE0IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCnZhciBzYT17ZGlzdGFuY2U6ZnVuY3Rpb24odCxlLG4saSl7dmFyIHI9dC1uLG89ZS1pO3JldHVybiBNYXRoLnNxcnQocipyK28qbyl9LG5vdzp3aW5kb3cucGVyZm9ybWFuY2UmJndpbmRvdy5wZXJmb3JtYW5jZS5ub3c/d2luZG93LnBlcmZvcm1hbmNlLm5vdy5iaW5kKHdpbmRvdy5wZXJmb3JtYW5jZSk6RGF0ZS5ub3d9O2Z1bmN0aW9uIGxhKHQpe3RoaXMuZWxlbWVudD10LHRoaXMud2lkdGg9dGhpcy5ib3VuZGluZ1JlY3Qud2lkdGgsdGhpcy5oZWlnaHQ9dGhpcy5ib3VuZGluZ1JlY3QuaGVpZ2h0LHRoaXMuc2l6ZT1NYXRoLm1heCh0aGlzLndpZHRoLHRoaXMuaGVpZ2h0KX1mdW5jdGlvbiBjYSh0KXt0aGlzLmVsZW1lbnQ9dCx0aGlzLmNvbG9yPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHQpLmNvbG9yLHRoaXMud2F2ZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLndhdmVDb250YWluZXI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy53YXZlLnN0eWxlLmJhY2tncm91bmRDb2xvcj10aGlzLmNvbG9yLHRoaXMud2F2ZS5jbGFzc0xpc3QuYWRkKCJ3YXZlIiksdGhpcy53YXZlQ29udGFpbmVyLmNsYXNzTGlzdC5hZGQoIndhdmUtY29udGFpbmVyIiksZXIodGhpcy53YXZlQ29udGFpbmVyKS5hcHBlbmRDaGlsZCh0aGlzLndhdmUpLHRoaXMucmVzZXRJbnRlcmFjdGlvblN0YXRlKCl9bGEucHJvdG90eXBlPXtnZXQgYm91bmRpbmdSZWN0KCl7cmV0dXJuIHRoaXMuZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKX0sZnVydGhlc3RDb3JuZXJEaXN0YW5jZUZyb206ZnVuY3Rpb24odCxlKXt2YXIgbj1zYS5kaXN0YW5jZSh0LGUsMCwwKSxpPXNhLmRpc3RhbmNlKHQsZSx0aGlzLndpZHRoLDApLHI9c2EuZGlzdGFuY2UodCxlLDAsdGhpcy5oZWlnaHQpLG89c2EuZGlzdGFuY2UodCxlLHRoaXMud2lkdGgsdGhpcy5oZWlnaHQpO3JldHVybiBNYXRoLm1heChuLGkscixvKX19LGNhLk1BWF9SQURJVVM9MzAwLGNhLnByb3RvdHlwZT17Z2V0IHJlY2VudGVycygpe3JldHVybiB0aGlzLmVsZW1lbnQucmVjZW50ZXJzfSxnZXQgY2VudGVyKCl7cmV0dXJuIHRoaXMuZWxlbWVudC5jZW50ZXJ9LGdldCBtb3VzZURvd25FbGFwc2VkKCl7dmFyIHQ7cmV0dXJuIHRoaXMubW91c2VEb3duU3RhcnQ/KHQ9c2Eubm93KCktdGhpcy5tb3VzZURvd25TdGFydCx0aGlzLm1vdXNlVXBTdGFydCYmKHQtPXRoaXMubW91c2VVcEVsYXBzZWQpLHQpOjB9LGdldCBtb3VzZVVwRWxhcHNlZCgpe3JldHVybiB0aGlzLm1vdXNlVXBTdGFydD9zYS5ub3coKS10aGlzLm1vdXNlVXBTdGFydDowfSxnZXQgbW91c2VEb3duRWxhcHNlZFNlY29uZHMoKXtyZXR1cm4gdGhpcy5tb3VzZURvd25FbGFwc2VkLzFlM30sZ2V0IG1vdXNlVXBFbGFwc2VkU2Vjb25kcygpe3JldHVybiB0aGlzLm1vdXNlVXBFbGFwc2VkLzFlM30sZ2V0IG1vdXNlSW50ZXJhY3Rpb25TZWNvbmRzKCl7cmV0dXJuIHRoaXMubW91c2VEb3duRWxhcHNlZFNlY29uZHMrdGhpcy5tb3VzZVVwRWxhcHNlZFNlY29uZHN9LGdldCBpbml0aWFsT3BhY2l0eSgpe3JldHVybiB0aGlzLmVsZW1lbnQuaW5pdGlhbE9wYWNpdHl9LGdldCBvcGFjaXR5RGVjYXlWZWxvY2l0eSgpe3JldHVybiB0aGlzLmVsZW1lbnQub3BhY2l0eURlY2F5VmVsb2NpdHl9LGdldCByYWRpdXMoKXt2YXIgdD0xLjEqTWF0aC5taW4oTWF0aC5zcXJ0KHRoaXMuY29udGFpbmVyTWV0cmljcy53aWR0aCp0aGlzLmNvbnRhaW5lck1ldHJpY3Mud2lkdGgrdGhpcy5jb250YWluZXJNZXRyaWNzLmhlaWdodCp0aGlzLmNvbnRhaW5lck1ldHJpY3MuaGVpZ2h0KSxjYS5NQVhfUkFESVVTKSs1LGU9dCooMS1NYXRoLnBvdyg4MCwtKHRoaXMubW91c2VJbnRlcmFjdGlvblNlY29uZHMvKDEuMS10L2NhLk1BWF9SQURJVVMqLjIpKSkpO3JldHVybiBNYXRoLmFicyhlKX0sZ2V0IG9wYWNpdHkoKXtyZXR1cm4gdGhpcy5tb3VzZVVwU3RhcnQ/TWF0aC5tYXgoMCx0aGlzLmluaXRpYWxPcGFjaXR5LXRoaXMubW91c2VVcEVsYXBzZWRTZWNvbmRzKnRoaXMub3BhY2l0eURlY2F5VmVsb2NpdHkpOnRoaXMuaW5pdGlhbE9wYWNpdHl9LGdldCBvdXRlck9wYWNpdHkoKXtyZXR1cm4gTWF0aC5tYXgoMCxNYXRoLm1pbiguMyp0aGlzLm1vdXNlVXBFbGFwc2VkU2Vjb25kcyx0aGlzLm9wYWNpdHkpKX0sZ2V0IGlzT3BhY2l0eUZ1bGx5RGVjYXllZCgpe3JldHVybiB0aGlzLm9wYWNpdHk8LjAxJiZ0aGlzLnJhZGl1cz49TWF0aC5taW4odGhpcy5tYXhSYWRpdXMsY2EuTUFYX1JBRElVUyl9LGdldCBpc1Jlc3RpbmdBdE1heFJhZGl1cygpe3JldHVybiB0aGlzLm9wYWNpdHk+PXRoaXMuaW5pdGlhbE9wYWNpdHkmJnRoaXMucmFkaXVzPj1NYXRoLm1pbih0aGlzLm1heFJhZGl1cyxjYS5NQVhfUkFESVVTKX0sZ2V0IGlzQW5pbWF0aW9uQ29tcGxldGUoKXtyZXR1cm4gdGhpcy5tb3VzZVVwU3RhcnQ/dGhpcy5pc09wYWNpdHlGdWxseURlY2F5ZWQ6dGhpcy5pc1Jlc3RpbmdBdE1heFJhZGl1c30sZ2V0IHRyYW5zbGF0aW9uRnJhY3Rpb24oKXtyZXR1cm4gTWF0aC5taW4oMSx0aGlzLnJhZGl1cy90aGlzLmNvbnRhaW5lck1ldHJpY3Muc2l6ZSoyL01hdGguc3FydCgyKSl9LGdldCB4Tm93KCl7cmV0dXJuIHRoaXMueEVuZD90aGlzLnhTdGFydCt0aGlzLnRyYW5zbGF0aW9uRnJhY3Rpb24qKHRoaXMueEVuZC10aGlzLnhTdGFydCk6dGhpcy54U3RhcnR9LGdldCB5Tm93KCl7cmV0dXJuIHRoaXMueUVuZD90aGlzLnlTdGFydCt0aGlzLnRyYW5zbGF0aW9uRnJhY3Rpb24qKHRoaXMueUVuZC10aGlzLnlTdGFydCk6dGhpcy55U3RhcnR9LGdldCBpc01vdXNlRG93bigpe3JldHVybiB0aGlzLm1vdXNlRG93blN0YXJ0JiYhdGhpcy5tb3VzZVVwU3RhcnR9LHJlc2V0SW50ZXJhY3Rpb25TdGF0ZTpmdW5jdGlvbigpe3RoaXMubWF4UmFkaXVzPTAsdGhpcy5tb3VzZURvd25TdGFydD0wLHRoaXMubW91c2VVcFN0YXJ0PTAsdGhpcy54U3RhcnQ9MCx0aGlzLnlTdGFydD0wLHRoaXMueEVuZD0wLHRoaXMueUVuZD0wLHRoaXMuc2xpZGVEaXN0YW5jZT0wLHRoaXMuY29udGFpbmVyTWV0cmljcz1uZXcgbGEodGhpcy5lbGVtZW50KX0sZHJhdzpmdW5jdGlvbigpe3ZhciB0LGUsbjt0aGlzLndhdmUuc3R5bGUub3BhY2l0eT10aGlzLm9wYWNpdHksdD10aGlzLnJhZGl1cy8odGhpcy5jb250YWluZXJNZXRyaWNzLnNpemUvMiksdGhpcy53YXZlQ29udGFpbmVyLnN0eWxlLndlYmtpdFRyYW5zZm9ybT0idHJhbnNsYXRlKCIrKGU9dGhpcy54Tm93LXRoaXMuY29udGFpbmVyTWV0cmljcy53aWR0aC8yKSsicHgsICIrKG49dGhpcy55Tm93LXRoaXMuY29udGFpbmVyTWV0cmljcy5oZWlnaHQvMikrInB4KSIsdGhpcy53YXZlQ29udGFpbmVyLnN0eWxlLnRyYW5zZm9ybT0idHJhbnNsYXRlM2QoIitlKyJweCwgIituKyJweCwgMCkiLHRoaXMud2F2ZS5zdHlsZS53ZWJraXRUcmFuc2Zvcm09InNjYWxlKCIrdCsiLCIrdCsiKSIsdGhpcy53YXZlLnN0eWxlLnRyYW5zZm9ybT0ic2NhbGUzZCgiK3QrIiwiK3QrIiwxKSJ9LGRvd25BY3Rpb246ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5jb250YWluZXJNZXRyaWNzLndpZHRoLzIsbj10aGlzLmNvbnRhaW5lck1ldHJpY3MuaGVpZ2h0LzI7dGhpcy5yZXNldEludGVyYWN0aW9uU3RhdGUoKSx0aGlzLm1vdXNlRG93blN0YXJ0PXNhLm5vdygpLHRoaXMuY2VudGVyPyh0aGlzLnhTdGFydD1lLHRoaXMueVN0YXJ0PW4sdGhpcy5zbGlkZURpc3RhbmNlPXNhLmRpc3RhbmNlKHRoaXMueFN0YXJ0LHRoaXMueVN0YXJ0LHRoaXMueEVuZCx0aGlzLnlFbmQpKToodGhpcy54U3RhcnQ9dD90LmRldGFpbC54LXRoaXMuY29udGFpbmVyTWV0cmljcy5ib3VuZGluZ1JlY3QubGVmdDp0aGlzLmNvbnRhaW5lck1ldHJpY3Mud2lkdGgvMix0aGlzLnlTdGFydD10P3QuZGV0YWlsLnktdGhpcy5jb250YWluZXJNZXRyaWNzLmJvdW5kaW5nUmVjdC50b3A6dGhpcy5jb250YWluZXJNZXRyaWNzLmhlaWdodC8yKSx0aGlzLnJlY2VudGVycyYmKHRoaXMueEVuZD1lLHRoaXMueUVuZD1uLHRoaXMuc2xpZGVEaXN0YW5jZT1zYS5kaXN0YW5jZSh0aGlzLnhTdGFydCx0aGlzLnlTdGFydCx0aGlzLnhFbmQsdGhpcy55RW5kKSksdGhpcy5tYXhSYWRpdXM9dGhpcy5jb250YWluZXJNZXRyaWNzLmZ1cnRoZXN0Q29ybmVyRGlzdGFuY2VGcm9tKHRoaXMueFN0YXJ0LHRoaXMueVN0YXJ0KSx0aGlzLndhdmVDb250YWluZXIuc3R5bGUudG9wPSh0aGlzLmNvbnRhaW5lck1ldHJpY3MuaGVpZ2h0LXRoaXMuY29udGFpbmVyTWV0cmljcy5zaXplKS8yKyJweCIsdGhpcy53YXZlQ29udGFpbmVyLnN0eWxlLmxlZnQ9KHRoaXMuY29udGFpbmVyTWV0cmljcy53aWR0aC10aGlzLmNvbnRhaW5lck1ldHJpY3Muc2l6ZSkvMisicHgiLHRoaXMud2F2ZUNvbnRhaW5lci5zdHlsZS53aWR0aD10aGlzLmNvbnRhaW5lck1ldHJpY3Muc2l6ZSsicHgiLHRoaXMud2F2ZUNvbnRhaW5lci5zdHlsZS5oZWlnaHQ9dGhpcy5jb250YWluZXJNZXRyaWNzLnNpemUrInB4In0sdXBBY3Rpb246ZnVuY3Rpb24odCl7dGhpcy5pc01vdXNlRG93biYmKHRoaXMubW91c2VVcFN0YXJ0PXNhLm5vdygpKX0scmVtb3ZlOmZ1bmN0aW9uKCl7ZXIoZXIodGhpcy53YXZlQ29udGFpbmVyKS5wYXJlbnROb2RlKS5yZW1vdmVDaGlsZCh0aGlzLndhdmVDb250YWluZXIpfX0sanIoe190ZW1wbGF0ZTp4ZWAKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICBib3JkZXItcmFkaXVzOiBpbmhlcml0OwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgdG9wOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgYm90dG9tOiAwOwoKICAgICAgICAvKiBTZWUgUG9seW1lckVsZW1lbnRzL3BhcGVyLWJlaGF2aW9ycy9pc3N1ZXMvMzQuIE9uIG5vbi1DaHJvbWUgYnJvd3NlcnMsCiAgICAgICAgICogY3JlYXRpbmcgYSBub2RlICh3aXRoIGEgcG9zaXRpb246YWJzb2x1dGUpIGluIHRoZSBtaWRkbGUgb2YgYW4gZXZlbnQKICAgICAgICAgKiBoYW5kbGVyICJpbnRlcnJ1cHRzIiB0aGF0IGV2ZW50IGhhbmRsZXIgKHdoaWNoIGhhcHBlbnMgd2hlbiB0aGUKICAgICAgICAgKiByaXBwbGUgaXMgY3JlYXRlZCBvbiBkZW1hbmQpICovCiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgIH0KCiAgICAgIDpob3N0KFthbmltYXRpbmddKSB7CiAgICAgICAgLyogVGhpcyByZXNvbHZlcyBhIHJlbmRlcmluZyBpc3N1ZSBpbiBDaHJvbWUgKGFzIG9mIDQwKSB3aGVyZSB0aGUKICAgICAgICAgICByaXBwbGUgaXMgbm90IHByb3Blcmx5IGNsaXBwZWQgYnkgaXRzIHBhcmVudCAod2hpY2ggbWF5IGhhdmUKICAgICAgICAgICByb3VuZGVkIGNvcm5lcnMpLiBTZWU6IGh0dHA6Ly9qc2Jpbi5jb20vdGVtZXhhLzQKCiAgICAgICAgICAgTm90ZTogV2Ugb25seSBhcHBseSB0aGlzIHN0eWxlIGNvbmRpdGlvbmFsbHkuIE90aGVyd2lzZSwgdGhlIGJyb3dzZXIKICAgICAgICAgICB3aWxsIGNyZWF0ZSBhIG5ldyBjb21wb3NpdGluZyBsYXllciBmb3IgZXZlcnkgcmlwcGxlIGVsZW1lbnQgb24gdGhlCiAgICAgICAgICAgcGFnZSwgYW5kIHRoYXQgd291bGQgYmUgYmFkLiAqLwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsKICAgICAgfQoKICAgICAgI2JhY2tncm91bmQsCiAgICAgICN3YXZlcywKICAgICAgLndhdmUtY29udGFpbmVyLAogICAgICAud2F2ZSB7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogMDsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgfQoKICAgICAgI2JhY2tncm91bmQsCiAgICAgIC53YXZlIHsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICB9CgogICAgICAjd2F2ZXMsCiAgICAgIC53YXZlIHsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICB9CgogICAgICAud2F2ZS1jb250YWluZXIsCiAgICAgIC53YXZlIHsKICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgIH0KCiAgICAgIDpob3N0KC5jaXJjbGUpICNiYWNrZ3JvdW5kLAogICAgICA6aG9zdCguY2lyY2xlKSAjd2F2ZXMgewogICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgfQoKICAgICAgOmhvc3QoLmNpcmNsZSkgLndhdmUtY29udGFpbmVyIHsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICB9CiAgICA8L3N0eWxlPgoKICAgIDxkaXYgaWQ9ImJhY2tncm91bmQiPjwvZGl2PgogICAgPGRpdiBpZD0id2F2ZXMiPjwvZGl2PgpgLGlzOiJwYXBlci1yaXBwbGUiLGJlaGF2aW9yczpbWG9dLHByb3BlcnRpZXM6e2luaXRpYWxPcGFjaXR5Ont0eXBlOk51bWJlcix2YWx1ZTouMjV9LG9wYWNpdHlEZWNheVZlbG9jaXR5Ont0eXBlOk51bWJlcix2YWx1ZTouOH0scmVjZW50ZXJzOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LGNlbnRlcjp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxyaXBwbGVzOnt0eXBlOkFycmF5LHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuW119fSxhbmltYXRpbmc6e3R5cGU6Qm9vbGVhbixyZWFkT25seTohMCxyZWZsZWN0VG9BdHRyaWJ1dGU6ITAsdmFsdWU6ITF9LGhvbGREb3duOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITEsb2JzZXJ2ZXI6Il9ob2xkRG93bkNoYW5nZWQifSxub2luazp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxfYW5pbWF0aW5nOnt0eXBlOkJvb2xlYW59LF9ib3VuZEFuaW1hdGU6e3R5cGU6RnVuY3Rpb24sdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hbmltYXRlLmJpbmQodGhpcyl9fX0sZ2V0IHRhcmdldCgpe3JldHVybiB0aGlzLmtleUV2ZW50VGFyZ2V0fSxrZXlCaW5kaW5nczp7ImVudGVyOmtleWRvd24iOiJfb25FbnRlcktleWRvd24iLCJzcGFjZTprZXlkb3duIjoiX29uU3BhY2VLZXlkb3duIiwic3BhY2U6a2V5dXAiOiJfb25TcGFjZUtleXVwIn0sYXR0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLmtleUV2ZW50VGFyZ2V0PTExPT1lcih0aGlzKS5wYXJlbnROb2RlLm5vZGVUeXBlP2VyKHRoaXMpLmdldE93bmVyUm9vdCgpLmhvc3Q6ZXIodGhpcykucGFyZW50Tm9kZTt2YXIgdD10aGlzLmtleUV2ZW50VGFyZ2V0O3RoaXMubGlzdGVuKHQsInVwIiwidWlVcEFjdGlvbiIpLHRoaXMubGlzdGVuKHQsImRvd24iLCJ1aURvd25BY3Rpb24iKX0sZGV0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLnVubGlzdGVuKHRoaXMua2V5RXZlbnRUYXJnZXQsInVwIiwidWlVcEFjdGlvbiIpLHRoaXMudW5saXN0ZW4odGhpcy5rZXlFdmVudFRhcmdldCwiZG93biIsInVpRG93bkFjdGlvbiIpLHRoaXMua2V5RXZlbnRUYXJnZXQ9bnVsbH0sZ2V0IHNob3VsZEtlZXBBbmltYXRpbmcoKXtmb3IodmFyIHQ9MDt0PHRoaXMucmlwcGxlcy5sZW5ndGg7Kyt0KWlmKCF0aGlzLnJpcHBsZXNbdF0uaXNBbmltYXRpb25Db21wbGV0ZSlyZXR1cm4hMDtyZXR1cm4hMX0sc2ltdWxhdGVkUmlwcGxlOmZ1bmN0aW9uKCl7dGhpcy5kb3duQWN0aW9uKG51bGwpLHRoaXMuYXN5bmMoKGZ1bmN0aW9uKCl7dGhpcy51cEFjdGlvbigpfSksMSl9LHVpRG93bkFjdGlvbjpmdW5jdGlvbih0KXt0aGlzLm5vaW5rfHx0aGlzLmRvd25BY3Rpb24odCl9LGRvd25BY3Rpb246ZnVuY3Rpb24odCl7dGhpcy5ob2xkRG93biYmdGhpcy5yaXBwbGVzLmxlbmd0aD4wfHwodGhpcy5hZGRSaXBwbGUoKS5kb3duQWN0aW9uKHQpLHRoaXMuX2FuaW1hdGluZ3x8KHRoaXMuX2FuaW1hdGluZz0hMCx0aGlzLmFuaW1hdGUoKSkpfSx1aVVwQWN0aW9uOmZ1bmN0aW9uKHQpe3RoaXMubm9pbmt8fHRoaXMudXBBY3Rpb24odCl9LHVwQWN0aW9uOmZ1bmN0aW9uKHQpe3RoaXMuaG9sZERvd258fCh0aGlzLnJpcHBsZXMuZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZS51cEFjdGlvbih0KX0pKSx0aGlzLl9hbmltYXRpbmc9ITAsdGhpcy5hbmltYXRlKCkpfSxvbkFuaW1hdGlvbkNvbXBsZXRlOmZ1bmN0aW9uKCl7dGhpcy5fYW5pbWF0aW5nPSExLHRoaXMuJC5iYWNrZ3JvdW5kLnN0eWxlLmJhY2tncm91bmRDb2xvcj0iIix0aGlzLmZpcmUoInRyYW5zaXRpb25lbmQiKX0sYWRkUmlwcGxlOmZ1bmN0aW9uKCl7dmFyIHQ9bmV3IGNhKHRoaXMpO3JldHVybiBlcih0aGlzLiQud2F2ZXMpLmFwcGVuZENoaWxkKHQud2F2ZUNvbnRhaW5lciksdGhpcy4kLmJhY2tncm91bmQuc3R5bGUuYmFja2dyb3VuZENvbG9yPXQuY29sb3IsdGhpcy5yaXBwbGVzLnB1c2godCksdGhpcy5fc2V0QW5pbWF0aW5nKCEwKSx0fSxyZW1vdmVSaXBwbGU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5yaXBwbGVzLmluZGV4T2YodCk7ZTwwfHwodGhpcy5yaXBwbGVzLnNwbGljZShlLDEpLHQucmVtb3ZlKCksdGhpcy5yaXBwbGVzLmxlbmd0aHx8dGhpcy5fc2V0QW5pbWF0aW5nKCExKSl9LGFuaW1hdGU6ZnVuY3Rpb24oKXtpZih0aGlzLl9hbmltYXRpbmcpe3ZhciB0LGU7Zm9yKHQ9MDt0PHRoaXMucmlwcGxlcy5sZW5ndGg7Kyt0KShlPXRoaXMucmlwcGxlc1t0XSkuZHJhdygpLHRoaXMuJC5iYWNrZ3JvdW5kLnN0eWxlLm9wYWNpdHk9ZS5vdXRlck9wYWNpdHksZS5pc09wYWNpdHlGdWxseURlY2F5ZWQmJiFlLmlzUmVzdGluZ0F0TWF4UmFkaXVzJiZ0aGlzLnJlbW92ZVJpcHBsZShlKTt0aGlzLnNob3VsZEtlZXBBbmltYXRpbmd8fDAhPT10aGlzLnJpcHBsZXMubGVuZ3RoP3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGhpcy5fYm91bmRBbmltYXRlKTp0aGlzLm9uQW5pbWF0aW9uQ29tcGxldGUoKX19LGFuaW1hdGVSaXBwbGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hbmltYXRlKCl9LF9vbkVudGVyS2V5ZG93bjpmdW5jdGlvbigpe3RoaXMudWlEb3duQWN0aW9uKCksdGhpcy5hc3luYyh0aGlzLnVpVXBBY3Rpb24sMSl9LF9vblNwYWNlS2V5ZG93bjpmdW5jdGlvbigpe3RoaXMudWlEb3duQWN0aW9uKCl9LF9vblNwYWNlS2V5dXA6ZnVuY3Rpb24oKXt0aGlzLnVpVXBBY3Rpb24oKX0sX2hvbGREb3duQ2hhbmdlZDpmdW5jdGlvbih0LGUpe3ZvaWQgMCE9PWUmJih0P3RoaXMuZG93bkFjdGlvbigpOnRoaXMudXBBY3Rpb24oKSl9fSk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCB1YT17cHJvcGVydGllczp7bm9pbms6e3R5cGU6Qm9vbGVhbixvYnNlcnZlcjoiX25vaW5rQ2hhbmdlZCJ9LF9yaXBwbGVDb250YWluZXI6e3R5cGU6T2JqZWN0fX0sX2J1dHRvblN0YXRlQ2hhbmdlZDpmdW5jdGlvbigpe3RoaXMuZm9jdXNlZCYmdGhpcy5lbnN1cmVSaXBwbGUoKX0sX2Rvd25IYW5kbGVyOmZ1bmN0aW9uKHQpe29hLl9kb3duSGFuZGxlci5jYWxsKHRoaXMsdCksdGhpcy5wcmVzc2VkJiZ0aGlzLmVuc3VyZVJpcHBsZSh0KX0sZW5zdXJlUmlwcGxlOmZ1bmN0aW9uKHQpe2lmKCF0aGlzLmhhc1JpcHBsZSgpKXt0aGlzLl9yaXBwbGU9dGhpcy5fY3JlYXRlUmlwcGxlKCksdGhpcy5fcmlwcGxlLm5vaW5rPXRoaXMubm9pbms7dmFyIGU9dGhpcy5fcmlwcGxlQ29udGFpbmVyfHx0aGlzLnJvb3Q7aWYoZSYmZXIoZSkuYXBwZW5kQ2hpbGQodGhpcy5fcmlwcGxlKSx0KXt2YXIgbj1lcih0aGlzLl9yaXBwbGVDb250YWluZXJ8fHRoaXMpLGk9ZXIodCkucm9vdFRhcmdldDtuLmRlZXBDb250YWlucyhpKSYmdGhpcy5fcmlwcGxlLnVpRG93bkFjdGlvbih0KX19fSxnZXRSaXBwbGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbnN1cmVSaXBwbGUoKSx0aGlzLl9yaXBwbGV9LGhhc1JpcHBsZTpmdW5jdGlvbigpe3JldHVybiBCb29sZWFuKHRoaXMuX3JpcHBsZSl9LF9jcmVhdGVSaXBwbGU6ZnVuY3Rpb24oKXtyZXR1cm4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgicGFwZXItcmlwcGxlIil9LF9ub2lua0NoYW5nZWQ6ZnVuY3Rpb24odCl7dGhpcy5oYXNSaXBwbGUoKSYmKHRoaXMuX3JpcHBsZS5ub2luaz10KX19LGhhPXtwcm9wZXJ0aWVzOntlbGV2YXRpb246e3R5cGU6TnVtYmVyLHJlZmxlY3RUb0F0dHJpYnV0ZTohMCxyZWFkT25seTohMH19LG9ic2VydmVyczpbIl9jYWxjdWxhdGVFbGV2YXRpb24oZm9jdXNlZCwgZGlzYWJsZWQsIGFjdGl2ZSwgcHJlc3NlZCwgcmVjZWl2ZWRGb2N1c0Zyb21LZXlib2FyZCkiLCJfY29tcHV0ZUtleWJvYXJkQ2xhc3MocmVjZWl2ZWRGb2N1c0Zyb21LZXlib2FyZCkiXSxob3N0QXR0cmlidXRlczp7cm9sZToiYnV0dG9uIix0YWJpbmRleDoiMCIsYW5pbWF0ZWQ6ITB9LF9jYWxjdWxhdGVFbGV2YXRpb246ZnVuY3Rpb24oKXt2YXIgdD0xO3RoaXMuZGlzYWJsZWQ/dD0wOnRoaXMuYWN0aXZlfHx0aGlzLnByZXNzZWQ/dD00OnRoaXMucmVjZWl2ZWRGb2N1c0Zyb21LZXlib2FyZCYmKHQ9MyksdGhpcy5fc2V0RWxldmF0aW9uKHQpfSxfY29tcHV0ZUtleWJvYXJkQ2xhc3M6ZnVuY3Rpb24odCl7dGhpcy50b2dnbGVDbGFzcygia2V5Ym9hcmQtZm9jdXMiLHQpfSxfc3BhY2VLZXlEb3duSGFuZGxlcjpmdW5jdGlvbih0KXtvYS5fc3BhY2VLZXlEb3duSGFuZGxlci5jYWxsKHRoaXMsdCksdGhpcy5oYXNSaXBwbGUoKSYmdGhpcy5nZXRSaXBwbGUoKS5yaXBwbGVzLmxlbmd0aDwxJiZ0aGlzLl9yaXBwbGUudWlEb3duQWN0aW9uKCl9LF9zcGFjZUtleVVwSGFuZGxlcjpmdW5jdGlvbih0KXtvYS5fc3BhY2VLZXlVcEhhbmRsZXIuY2FsbCh0aGlzLHQpLHRoaXMuaGFzUmlwcGxlKCkmJnRoaXMuX3JpcHBsZS51aVVwQWN0aW9uKCl9fSxkYT1bYWEscmEsdWEsaGFdLHBhPXhlYAogIDxzdHlsZSBpbmNsdWRlPSJwYXBlci1tYXRlcmlhbC1zdHlsZXMiPgogICAgLyogTmVlZCB0byBzcGVjaWZ5IHRoZSBzYW1lIHNwZWNpZmljaXR5IGFzIHRoZSBzdHlsZXMgaW1wb3J0ZWQgZnJvbSBwYXBlci1tYXRlcmlhbC4gKi8KICAgIDpob3N0IHsKICAgICAgQGFwcGx5IC0tbGF5b3V0LWlubGluZTsKICAgICAgQGFwcGx5IC0tbGF5b3V0LWNlbnRlci1jZW50ZXI7CiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgbWluLXdpZHRoOiA1LjE0ZW07CiAgICAgIG1hcmdpbjogMCAwLjI5ZW07CiAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMCk7CiAgICAgIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICAgIGZvbnQ6IGluaGVyaXQ7CiAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICAgIG91dGxpbmUtd2lkdGg6IDA7CiAgICAgIGJvcmRlci1yYWRpdXM6IDNweDsKICAgICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgLW1zLXVzZXItc2VsZWN0OiBub25lOwogICAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwogICAgICB1c2VyLXNlbGVjdDogbm9uZTsKICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICB6LWluZGV4OiAwOwogICAgICBwYWRkaW5nOiAwLjdlbSAwLjU3ZW07CgogICAgICBAYXBwbHkgLS1wYXBlci1mb250LWNvbW1vbi1iYXNlOwogICAgICBAYXBwbHkgLS1wYXBlci1idXR0b247CiAgICB9CgogICAgOmhvc3QoW2VsZXZhdGlvbj0iMSJdKSB7CiAgICAgIEBhcHBseSAtLXBhcGVyLW1hdGVyaWFsLWVsZXZhdGlvbi0xOwogICAgfQoKICAgIDpob3N0KFtlbGV2YXRpb249IjIiXSkgewogICAgICBAYXBwbHkgLS1wYXBlci1tYXRlcmlhbC1lbGV2YXRpb24tMjsKICAgIH0KCiAgICA6aG9zdChbZWxldmF0aW9uPSIzIl0pIHsKICAgICAgQGFwcGx5IC0tcGFwZXItbWF0ZXJpYWwtZWxldmF0aW9uLTM7CiAgICB9CgogICAgOmhvc3QoW2VsZXZhdGlvbj0iNCJdKSB7CiAgICAgIEBhcHBseSAtLXBhcGVyLW1hdGVyaWFsLWVsZXZhdGlvbi00OwogICAgfQoKICAgIDpob3N0KFtlbGV2YXRpb249IjUiXSkgewogICAgICBAYXBwbHkgLS1wYXBlci1tYXRlcmlhbC1lbGV2YXRpb24tNTsKICAgIH0KCiAgICA6aG9zdChbaGlkZGVuXSkgewogICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgICB9CgogICAgOmhvc3QoW3JhaXNlZF0ua2V5Ym9hcmQtZm9jdXMpIHsKICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICAgIEBhcHBseSAtLXBhcGVyLWJ1dHRvbi1yYWlzZWQta2V5Ym9hcmQtZm9jdXM7CiAgICB9CgogICAgOmhvc3QoOm5vdChbcmFpc2VkXSkua2V5Ym9hcmQtZm9jdXMpIHsKICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICAgIEBhcHBseSAtLXBhcGVyLWJ1dHRvbi1mbGF0LWtleWJvYXJkLWZvY3VzOwogICAgfQoKICAgIDpob3N0KFtkaXNhYmxlZF0pIHsKICAgICAgYmFja2dyb3VuZDogbm9uZTsKICAgICAgY29sb3I6ICNhOGE4YTg7CiAgICAgIGN1cnNvcjogYXV0bzsKICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CgogICAgICBAYXBwbHkgLS1wYXBlci1idXR0b24tZGlzYWJsZWQ7CiAgICB9CgogICAgOmhvc3QoW2Rpc2FibGVkXVtyYWlzZWRdKSB7CiAgICAgIGJhY2tncm91bmQ6ICNlYWVhZWE7CiAgICB9CgoKICAgIDpob3N0KFthbmltYXRlZF0pIHsKICAgICAgQGFwcGx5IC0tc2hhZG93LXRyYW5zaXRpb247CiAgICB9CgogICAgcGFwZXItcmlwcGxlIHsKICAgICAgY29sb3I6IHZhcigtLXBhcGVyLWJ1dHRvbi1pbmstY29sb3IpOwogICAgfQogIDwvc3R5bGU+CgogIDxzbG90Pjwvc2xvdD5gOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi9wYS5zZXRBdHRyaWJ1dGUoInN0cmlwLXdoaXRlc3BhY2UiLCIiKSxqcih7X3RlbXBsYXRlOnBhLGlzOiJwYXBlci1idXR0b24iLGJlaGF2aW9yczpbZGFdLHByb3BlcnRpZXM6e3JhaXNlZDp7dHlwZTpCb29sZWFuLHJlZmxlY3RUb0F0dHJpYnV0ZTohMCx2YWx1ZTohMSxvYnNlcnZlcjoiX2NhbGN1bGF0ZUVsZXZhdGlvbiJ9fSxfY2FsY3VsYXRlRWxldmF0aW9uOmZ1bmN0aW9uKCl7dGhpcy5yYWlzZWQ/aGEuX2NhbGN1bGF0ZUVsZXZhdGlvbi5hcHBseSh0aGlzKTp0aGlzLl9zZXRFbGV2YXRpb24oMCl9fSk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCBmYT14ZWAKPGN1c3RvbS1zdHlsZT4KICA8c3R5bGUgaXM9ImN1c3RvbS1zdHlsZSI+CiAgICBodG1sIHsKCiAgICAgIC8qIE1hdGVyaWFsIERlc2lnbiBjb2xvciBwYWxldHRlIGZvciBHb29nbGUgcHJvZHVjdHMgKi8KCiAgICAgIC0tZ29vZ2xlLXJlZC0xMDA6ICNmNGM3YzM7CiAgICAgIC0tZ29vZ2xlLXJlZC0zMDA6ICNlNjdjNzM7CiAgICAgIC0tZ29vZ2xlLXJlZC01MDA6ICNkYjQ0Mzc7CiAgICAgIC0tZ29vZ2xlLXJlZC03MDA6ICNjNTM5Mjk7CgogICAgICAtLWdvb2dsZS1ibHVlLTEwMDogI2M2ZGFmYzsKICAgICAgLS1nb29nbGUtYmx1ZS0zMDA6ICM3YmFhZjc7CiAgICAgIC0tZ29vZ2xlLWJsdWUtNTAwOiAjNDI4NWY0OwogICAgICAtLWdvb2dsZS1ibHVlLTcwMDogIzMzNjdkNjsKCiAgICAgIC0tZ29vZ2xlLWdyZWVuLTEwMDogI2I3ZTFjZDsKICAgICAgLS1nb29nbGUtZ3JlZW4tMzAwOiAjNTdiYjhhOwogICAgICAtLWdvb2dsZS1ncmVlbi01MDA6ICMwZjlkNTg7CiAgICAgIC0tZ29vZ2xlLWdyZWVuLTcwMDogIzBiODA0MzsKCiAgICAgIC0tZ29vZ2xlLXllbGxvdy0xMDA6ICNmY2U4YjI7CiAgICAgIC0tZ29vZ2xlLXllbGxvdy0zMDA6ICNmN2NiNGQ7CiAgICAgIC0tZ29vZ2xlLXllbGxvdy01MDA6ICNmNGI0MDA7CiAgICAgIC0tZ29vZ2xlLXllbGxvdy03MDA6ICNmMDkzMDA7CgogICAgICAtLWdvb2dsZS1ncmV5LTEwMDogI2Y1ZjVmNTsKICAgICAgLS1nb29nbGUtZ3JleS0zMDA6ICNlMGUwZTA7CiAgICAgIC0tZ29vZ2xlLWdyZXktNTAwOiAjOWU5ZTllOwogICAgICAtLWdvb2dsZS1ncmV5LTcwMDogIzYxNjE2MTsKCiAgICAgIC8qIE1hdGVyaWFsIERlc2lnbiBjb2xvciBwYWxldHRlIGZyb20gb25saW5lIHNwZWMgZG9jdW1lbnQgKi8KCiAgICAgIC0tcGFwZXItcmVkLTUwOiAjZmZlYmVlOwogICAgICAtLXBhcGVyLXJlZC0xMDA6ICNmZmNkZDI7CiAgICAgIC0tcGFwZXItcmVkLTIwMDogI2VmOWE5YTsKICAgICAgLS1wYXBlci1yZWQtMzAwOiAjZTU3MzczOwogICAgICAtLXBhcGVyLXJlZC00MDA6ICNlZjUzNTA7CiAgICAgIC0tcGFwZXItcmVkLTUwMDogI2Y0NDMzNjsKICAgICAgLS1wYXBlci1yZWQtNjAwOiAjZTUzOTM1OwogICAgICAtLXBhcGVyLXJlZC03MDA6ICNkMzJmMmY7CiAgICAgIC0tcGFwZXItcmVkLTgwMDogI2M2MjgyODsKICAgICAgLS1wYXBlci1yZWQtOTAwOiAjYjcxYzFjOwogICAgICAtLXBhcGVyLXJlZC1hMTAwOiAjZmY4YTgwOwogICAgICAtLXBhcGVyLXJlZC1hMjAwOiAjZmY1MjUyOwogICAgICAtLXBhcGVyLXJlZC1hNDAwOiAjZmYxNzQ0OwogICAgICAtLXBhcGVyLXJlZC1hNzAwOiAjZDUwMDAwOwoKICAgICAgLS1wYXBlci1waW5rLTUwOiAjZmNlNGVjOwogICAgICAtLXBhcGVyLXBpbmstMTAwOiAjZjhiYmQwOwogICAgICAtLXBhcGVyLXBpbmstMjAwOiAjZjQ4ZmIxOwogICAgICAtLXBhcGVyLXBpbmstMzAwOiAjZjA2MjkyOwogICAgICAtLXBhcGVyLXBpbmstNDAwOiAjZWM0MDdhOwogICAgICAtLXBhcGVyLXBpbmstNTAwOiAjZTkxZTYzOwogICAgICAtLXBhcGVyLXBpbmstNjAwOiAjZDgxYjYwOwogICAgICAtLXBhcGVyLXBpbmstNzAwOiAjYzIxODViOwogICAgICAtLXBhcGVyLXBpbmstODAwOiAjYWQxNDU3OwogICAgICAtLXBhcGVyLXBpbmstOTAwOiAjODgwZTRmOwogICAgICAtLXBhcGVyLXBpbmstYTEwMDogI2ZmODBhYjsKICAgICAgLS1wYXBlci1waW5rLWEyMDA6ICNmZjQwODE7CiAgICAgIC0tcGFwZXItcGluay1hNDAwOiAjZjUwMDU3OwogICAgICAtLXBhcGVyLXBpbmstYTcwMDogI2M1MTE2MjsKCiAgICAgIC0tcGFwZXItcHVycGxlLTUwOiAjZjNlNWY1OwogICAgICAtLXBhcGVyLXB1cnBsZS0xMDA6ICNlMWJlZTc7CiAgICAgIC0tcGFwZXItcHVycGxlLTIwMDogI2NlOTNkODsKICAgICAgLS1wYXBlci1wdXJwbGUtMzAwOiAjYmE2OGM4OwogICAgICAtLXBhcGVyLXB1cnBsZS00MDA6ICNhYjQ3YmM7CiAgICAgIC0tcGFwZXItcHVycGxlLTUwMDogIzljMjdiMDsKICAgICAgLS1wYXBlci1wdXJwbGUtNjAwOiAjOGUyNGFhOwogICAgICAtLXBhcGVyLXB1cnBsZS03MDA6ICM3YjFmYTI7CiAgICAgIC0tcGFwZXItcHVycGxlLTgwMDogIzZhMWI5YTsKICAgICAgLS1wYXBlci1wdXJwbGUtOTAwOiAjNGExNDhjOwogICAgICAtLXBhcGVyLXB1cnBsZS1hMTAwOiAjZWE4MGZjOwogICAgICAtLXBhcGVyLXB1cnBsZS1hMjAwOiAjZTA0MGZiOwogICAgICAtLXBhcGVyLXB1cnBsZS1hNDAwOiAjZDUwMGY5OwogICAgICAtLXBhcGVyLXB1cnBsZS1hNzAwOiAjYWEwMGZmOwoKICAgICAgLS1wYXBlci1kZWVwLXB1cnBsZS01MDogI2VkZTdmNjsKICAgICAgLS1wYXBlci1kZWVwLXB1cnBsZS0xMDA6ICNkMWM0ZTk7CiAgICAgIC0tcGFwZXItZGVlcC1wdXJwbGUtMjAwOiAjYjM5ZGRiOwogICAgICAtLXBhcGVyLWRlZXAtcHVycGxlLTMwMDogIzk1NzVjZDsKICAgICAgLS1wYXBlci1kZWVwLXB1cnBsZS00MDA6ICM3ZTU3YzI7CiAgICAgIC0tcGFwZXItZGVlcC1wdXJwbGUtNTAwOiAjNjczYWI3OwogICAgICAtLXBhcGVyLWRlZXAtcHVycGxlLTYwMDogIzVlMzViMTsKICAgICAgLS1wYXBlci1kZWVwLXB1cnBsZS03MDA6ICM1MTJkYTg7CiAgICAgIC0tcGFwZXItZGVlcC1wdXJwbGUtODAwOiAjNDUyN2EwOwogICAgICAtLXBhcGVyLWRlZXAtcHVycGxlLTkwMDogIzMxMWI5MjsKICAgICAgLS1wYXBlci1kZWVwLXB1cnBsZS1hMTAwOiAjYjM4OGZmOwogICAgICAtLXBhcGVyLWRlZXAtcHVycGxlLWEyMDA6ICM3YzRkZmY7CiAgICAgIC0tcGFwZXItZGVlcC1wdXJwbGUtYTQwMDogIzY1MWZmZjsKICAgICAgLS1wYXBlci1kZWVwLXB1cnBsZS1hNzAwOiAjNjIwMGVhOwoKICAgICAgLS1wYXBlci1pbmRpZ28tNTA6ICNlOGVhZjY7CiAgICAgIC0tcGFwZXItaW5kaWdvLTEwMDogI2M1Y2FlOTsKICAgICAgLS1wYXBlci1pbmRpZ28tMjAwOiAjOWZhOGRhOwogICAgICAtLXBhcGVyLWluZGlnby0zMDA6ICM3OTg2Y2I7CiAgICAgIC0tcGFwZXItaW5kaWdvLTQwMDogIzVjNmJjMDsKICAgICAgLS1wYXBlci1pbmRpZ28tNTAwOiAjM2Y1MWI1OwogICAgICAtLXBhcGVyLWluZGlnby02MDA6ICMzOTQ5YWI7CiAgICAgIC0tcGFwZXItaW5kaWdvLTcwMDogIzMwM2Y5ZjsKICAgICAgLS1wYXBlci1pbmRpZ28tODAwOiAjMjgzNTkzOwogICAgICAtLXBhcGVyLWluZGlnby05MDA6ICMxYTIzN2U7CiAgICAgIC0tcGFwZXItaW5kaWdvLWExMDA6ICM4YzllZmY7CiAgICAgIC0tcGFwZXItaW5kaWdvLWEyMDA6ICM1MzZkZmU7CiAgICAgIC0tcGFwZXItaW5kaWdvLWE0MDA6ICMzZDVhZmU7CiAgICAgIC0tcGFwZXItaW5kaWdvLWE3MDA6ICMzMDRmZmU7CgogICAgICAtLXBhcGVyLWJsdWUtNTA6ICNlM2YyZmQ7CiAgICAgIC0tcGFwZXItYmx1ZS0xMDA6ICNiYmRlZmI7CiAgICAgIC0tcGFwZXItYmx1ZS0yMDA6ICM5MGNhZjk7CiAgICAgIC0tcGFwZXItYmx1ZS0zMDA6ICM2NGI1ZjY7CiAgICAgIC0tcGFwZXItYmx1ZS00MDA6ICM0MmE1ZjU7CiAgICAgIC0tcGFwZXItYmx1ZS01MDA6ICMyMTk2ZjM7CiAgICAgIC0tcGFwZXItYmx1ZS02MDA6ICMxZTg4ZTU7CiAgICAgIC0tcGFwZXItYmx1ZS03MDA6ICMxOTc2ZDI7CiAgICAgIC0tcGFwZXItYmx1ZS04MDA6ICMxNTY1YzA7CiAgICAgIC0tcGFwZXItYmx1ZS05MDA6ICMwZDQ3YTE7CiAgICAgIC0tcGFwZXItYmx1ZS1hMTAwOiAjODJiMWZmOwogICAgICAtLXBhcGVyLWJsdWUtYTIwMDogIzQ0OGFmZjsKICAgICAgLS1wYXBlci1ibHVlLWE0MDA6ICMyOTc5ZmY7CiAgICAgIC0tcGFwZXItYmx1ZS1hNzAwOiAjMjk2MmZmOwoKICAgICAgLS1wYXBlci1saWdodC1ibHVlLTUwOiAjZTFmNWZlOwogICAgICAtLXBhcGVyLWxpZ2h0LWJsdWUtMTAwOiAjYjNlNWZjOwogICAgICAtLXBhcGVyLWxpZ2h0LWJsdWUtMjAwOiAjODFkNGZhOwogICAgICAtLXBhcGVyLWxpZ2h0LWJsdWUtMzAwOiAjNGZjM2Y3OwogICAgICAtLXBhcGVyLWxpZ2h0LWJsdWUtNDAwOiAjMjliNmY2OwogICAgICAtLXBhcGVyLWxpZ2h0LWJsdWUtNTAwOiAjMDNhOWY0OwogICAgICAtLXBhcGVyLWxpZ2h0LWJsdWUtNjAwOiAjMDM5YmU1OwogICAgICAtLXBhcGVyLWxpZ2h0LWJsdWUtNzAwOiAjMDI4OGQxOwogICAgICAtLXBhcGVyLWxpZ2h0LWJsdWUtODAwOiAjMDI3N2JkOwogICAgICAtLXBhcGVyLWxpZ2h0LWJsdWUtOTAwOiAjMDE1NzliOwogICAgICAtLXBhcGVyLWxpZ2h0LWJsdWUtYTEwMDogIzgwZDhmZjsKICAgICAgLS1wYXBlci1saWdodC1ibHVlLWEyMDA6ICM0MGM0ZmY7CiAgICAgIC0tcGFwZXItbGlnaHQtYmx1ZS1hNDAwOiAjMDBiMGZmOwogICAgICAtLXBhcGVyLWxpZ2h0LWJsdWUtYTcwMDogIzAwOTFlYTsKCiAgICAgIC0tcGFwZXItY3lhbi01MDogI2UwZjdmYTsKICAgICAgLS1wYXBlci1jeWFuLTEwMDogI2IyZWJmMjsKICAgICAgLS1wYXBlci1jeWFuLTIwMDogIzgwZGVlYTsKICAgICAgLS1wYXBlci1jeWFuLTMwMDogIzRkZDBlMTsKICAgICAgLS1wYXBlci1jeWFuLTQwMDogIzI2YzZkYTsKICAgICAgLS1wYXBlci1jeWFuLTUwMDogIzAwYmNkNDsKICAgICAgLS1wYXBlci1jeWFuLTYwMDogIzAwYWNjMTsKICAgICAgLS1wYXBlci1jeWFuLTcwMDogIzAwOTdhNzsKICAgICAgLS1wYXBlci1jeWFuLTgwMDogIzAwODM4ZjsKICAgICAgLS1wYXBlci1jeWFuLTkwMDogIzAwNjA2NDsKICAgICAgLS1wYXBlci1jeWFuLWExMDA6ICM4NGZmZmY7CiAgICAgIC0tcGFwZXItY3lhbi1hMjAwOiAjMThmZmZmOwogICAgICAtLXBhcGVyLWN5YW4tYTQwMDogIzAwZTVmZjsKICAgICAgLS1wYXBlci1jeWFuLWE3MDA6ICMwMGI4ZDQ7CgogICAgICAtLXBhcGVyLXRlYWwtNTA6ICNlMGYyZjE7CiAgICAgIC0tcGFwZXItdGVhbC0xMDA6ICNiMmRmZGI7CiAgICAgIC0tcGFwZXItdGVhbC0yMDA6ICM4MGNiYzQ7CiAgICAgIC0tcGFwZXItdGVhbC0zMDA6ICM0ZGI2YWM7CiAgICAgIC0tcGFwZXItdGVhbC00MDA6ICMyNmE2OWE7CiAgICAgIC0tcGFwZXItdGVhbC01MDA6ICMwMDk2ODg7CiAgICAgIC0tcGFwZXItdGVhbC02MDA6ICMwMDg5N2I7CiAgICAgIC0tcGFwZXItdGVhbC03MDA6ICMwMDc5NmI7CiAgICAgIC0tcGFwZXItdGVhbC04MDA6ICMwMDY5NWM7CiAgICAgIC0tcGFwZXItdGVhbC05MDA6ICMwMDRkNDA7CiAgICAgIC0tcGFwZXItdGVhbC1hMTAwOiAjYTdmZmViOwogICAgICAtLXBhcGVyLXRlYWwtYTIwMDogIzY0ZmZkYTsKICAgICAgLS1wYXBlci10ZWFsLWE0MDA6ICMxZGU5YjY7CiAgICAgIC0tcGFwZXItdGVhbC1hNzAwOiAjMDBiZmE1OwoKICAgICAgLS1wYXBlci1ncmVlbi01MDogI2U4ZjVlOTsKICAgICAgLS1wYXBlci1ncmVlbi0xMDA6ICNjOGU2Yzk7CiAgICAgIC0tcGFwZXItZ3JlZW4tMjAwOiAjYTVkNmE3OwogICAgICAtLXBhcGVyLWdyZWVuLTMwMDogIzgxYzc4NDsKICAgICAgLS1wYXBlci1ncmVlbi00MDA6ICM2NmJiNmE7CiAgICAgIC0tcGFwZXItZ3JlZW4tNTAwOiAjNGNhZjUwOwogICAgICAtLXBhcGVyLWdyZWVuLTYwMDogIzQzYTA0NzsKICAgICAgLS1wYXBlci1ncmVlbi03MDA6ICMzODhlM2M7CiAgICAgIC0tcGFwZXItZ3JlZW4tODAwOiAjMmU3ZDMyOwogICAgICAtLXBhcGVyLWdyZWVuLTkwMDogIzFiNWUyMDsKICAgICAgLS1wYXBlci1ncmVlbi1hMTAwOiAjYjlmNmNhOwogICAgICAtLXBhcGVyLWdyZWVuLWEyMDA6ICM2OWYwYWU7CiAgICAgIC0tcGFwZXItZ3JlZW4tYTQwMDogIzAwZTY3NjsKICAgICAgLS1wYXBlci1ncmVlbi1hNzAwOiAjMDBjODUzOwoKICAgICAgLS1wYXBlci1saWdodC1ncmVlbi01MDogI2YxZjhlOTsKICAgICAgLS1wYXBlci1saWdodC1ncmVlbi0xMDA6ICNkY2VkYzg7CiAgICAgIC0tcGFwZXItbGlnaHQtZ3JlZW4tMjAwOiAjYzVlMWE1OwogICAgICAtLXBhcGVyLWxpZ2h0LWdyZWVuLTMwMDogI2FlZDU4MTsKICAgICAgLS1wYXBlci1saWdodC1ncmVlbi00MDA6ICM5Y2NjNjU7CiAgICAgIC0tcGFwZXItbGlnaHQtZ3JlZW4tNTAwOiAjOGJjMzRhOwogICAgICAtLXBhcGVyLWxpZ2h0LWdyZWVuLTYwMDogIzdjYjM0MjsKICAgICAgLS1wYXBlci1saWdodC1ncmVlbi03MDA6ICM2ODlmMzg7CiAgICAgIC0tcGFwZXItbGlnaHQtZ3JlZW4tODAwOiAjNTU4YjJmOwogICAgICAtLXBhcGVyLWxpZ2h0LWdyZWVuLTkwMDogIzMzNjkxZTsKICAgICAgLS1wYXBlci1saWdodC1ncmVlbi1hMTAwOiAjY2NmZjkwOwogICAgICAtLXBhcGVyLWxpZ2h0LWdyZWVuLWEyMDA6ICNiMmZmNTk7CiAgICAgIC0tcGFwZXItbGlnaHQtZ3JlZW4tYTQwMDogIzc2ZmYwMzsKICAgICAgLS1wYXBlci1saWdodC1ncmVlbi1hNzAwOiAjNjRkZDE3OwoKICAgICAgLS1wYXBlci1saW1lLTUwOiAjZjlmYmU3OwogICAgICAtLXBhcGVyLWxpbWUtMTAwOiAjZjBmNGMzOwogICAgICAtLXBhcGVyLWxpbWUtMjAwOiAjZTZlZTljOwogICAgICAtLXBhcGVyLWxpbWUtMzAwOiAjZGNlNzc1OwogICAgICAtLXBhcGVyLWxpbWUtNDAwOiAjZDRlMTU3OwogICAgICAtLXBhcGVyLWxpbWUtNTAwOiAjY2RkYzM5OwogICAgICAtLXBhcGVyLWxpbWUtNjAwOiAjYzBjYTMzOwogICAgICAtLXBhcGVyLWxpbWUtNzAwOiAjYWZiNDJiOwogICAgICAtLXBhcGVyLWxpbWUtODAwOiAjOWU5ZDI0OwogICAgICAtLXBhcGVyLWxpbWUtOTAwOiAjODI3NzE3OwogICAgICAtLXBhcGVyLWxpbWUtYTEwMDogI2Y0ZmY4MTsKICAgICAgLS1wYXBlci1saW1lLWEyMDA6ICNlZWZmNDE7CiAgICAgIC0tcGFwZXItbGltZS1hNDAwOiAjYzZmZjAwOwogICAgICAtLXBhcGVyLWxpbWUtYTcwMDogI2FlZWEwMDsKCiAgICAgIC0tcGFwZXIteWVsbG93LTUwOiAjZmZmZGU3OwogICAgICAtLXBhcGVyLXllbGxvdy0xMDA6ICNmZmY5YzQ7CiAgICAgIC0tcGFwZXIteWVsbG93LTIwMDogI2ZmZjU5ZDsKICAgICAgLS1wYXBlci15ZWxsb3ctMzAwOiAjZmZmMTc2OwogICAgICAtLXBhcGVyLXllbGxvdy00MDA6ICNmZmVlNTg7CiAgICAgIC0tcGFwZXIteWVsbG93LTUwMDogI2ZmZWIzYjsKICAgICAgLS1wYXBlci15ZWxsb3ctNjAwOiAjZmRkODM1OwogICAgICAtLXBhcGVyLXllbGxvdy03MDA6ICNmYmMwMmQ7CiAgICAgIC0tcGFwZXIteWVsbG93LTgwMDogI2Y5YTgyNTsKICAgICAgLS1wYXBlci15ZWxsb3ctOTAwOiAjZjU3ZjE3OwogICAgICAtLXBhcGVyLXllbGxvdy1hMTAwOiAjZmZmZjhkOwogICAgICAtLXBhcGVyLXllbGxvdy1hMjAwOiAjZmZmZjAwOwogICAgICAtLXBhcGVyLXllbGxvdy1hNDAwOiAjZmZlYTAwOwogICAgICAtLXBhcGVyLXllbGxvdy1hNzAwOiAjZmZkNjAwOwoKICAgICAgLS1wYXBlci1hbWJlci01MDogI2ZmZjhlMTsKICAgICAgLS1wYXBlci1hbWJlci0xMDA6ICNmZmVjYjM7CiAgICAgIC0tcGFwZXItYW1iZXItMjAwOiAjZmZlMDgyOwogICAgICAtLXBhcGVyLWFtYmVyLTMwMDogI2ZmZDU0ZjsKICAgICAgLS1wYXBlci1hbWJlci00MDA6ICNmZmNhMjg7CiAgICAgIC0tcGFwZXItYW1iZXItNTAwOiAjZmZjMTA3OwogICAgICAtLXBhcGVyLWFtYmVyLTYwMDogI2ZmYjMwMDsKICAgICAgLS1wYXBlci1hbWJlci03MDA6ICNmZmEwMDA7CiAgICAgIC0tcGFwZXItYW1iZXItODAwOiAjZmY4ZjAwOwogICAgICAtLXBhcGVyLWFtYmVyLTkwMDogI2ZmNmYwMDsKICAgICAgLS1wYXBlci1hbWJlci1hMTAwOiAjZmZlNTdmOwogICAgICAtLXBhcGVyLWFtYmVyLWEyMDA6ICNmZmQ3NDA7CiAgICAgIC0tcGFwZXItYW1iZXItYTQwMDogI2ZmYzQwMDsKICAgICAgLS1wYXBlci1hbWJlci1hNzAwOiAjZmZhYjAwOwoKICAgICAgLS1wYXBlci1vcmFuZ2UtNTA6ICNmZmYzZTA7CiAgICAgIC0tcGFwZXItb3JhbmdlLTEwMDogI2ZmZTBiMjsKICAgICAgLS1wYXBlci1vcmFuZ2UtMjAwOiAjZmZjYzgwOwogICAgICAtLXBhcGVyLW9yYW5nZS0zMDA6ICNmZmI3NGQ7CiAgICAgIC0tcGFwZXItb3JhbmdlLTQwMDogI2ZmYTcyNjsKICAgICAgLS1wYXBlci1vcmFuZ2UtNTAwOiAjZmY5ODAwOwogICAgICAtLXBhcGVyLW9yYW5nZS02MDA6ICNmYjhjMDA7CiAgICAgIC0tcGFwZXItb3JhbmdlLTcwMDogI2Y1N2MwMDsKICAgICAgLS1wYXBlci1vcmFuZ2UtODAwOiAjZWY2YzAwOwogICAgICAtLXBhcGVyLW9yYW5nZS05MDA6ICNlNjUxMDA7CiAgICAgIC0tcGFwZXItb3JhbmdlLWExMDA6ICNmZmQxODA7CiAgICAgIC0tcGFwZXItb3JhbmdlLWEyMDA6ICNmZmFiNDA7CiAgICAgIC0tcGFwZXItb3JhbmdlLWE0MDA6ICNmZjkxMDA7CiAgICAgIC0tcGFwZXItb3JhbmdlLWE3MDA6ICNmZjY1MDA7CgogICAgICAtLXBhcGVyLWRlZXAtb3JhbmdlLTUwOiAjZmJlOWU3OwogICAgICAtLXBhcGVyLWRlZXAtb3JhbmdlLTEwMDogI2ZmY2NiYzsKICAgICAgLS1wYXBlci1kZWVwLW9yYW5nZS0yMDA6ICNmZmFiOTE7CiAgICAgIC0tcGFwZXItZGVlcC1vcmFuZ2UtMzAwOiAjZmY4YTY1OwogICAgICAtLXBhcGVyLWRlZXAtb3JhbmdlLTQwMDogI2ZmNzA0MzsKICAgICAgLS1wYXBlci1kZWVwLW9yYW5nZS01MDA6ICNmZjU3MjI7CiAgICAgIC0tcGFwZXItZGVlcC1vcmFuZ2UtNjAwOiAjZjQ1MTFlOwogICAgICAtLXBhcGVyLWRlZXAtb3JhbmdlLTcwMDogI2U2NGExOTsKICAgICAgLS1wYXBlci1kZWVwLW9yYW5nZS04MDA6ICNkODQzMTU7CiAgICAgIC0tcGFwZXItZGVlcC1vcmFuZ2UtOTAwOiAjYmYzNjBjOwogICAgICAtLXBhcGVyLWRlZXAtb3JhbmdlLWExMDA6ICNmZjllODA7CiAgICAgIC0tcGFwZXItZGVlcC1vcmFuZ2UtYTIwMDogI2ZmNmU0MDsKICAgICAgLS1wYXBlci1kZWVwLW9yYW5nZS1hNDAwOiAjZmYzZDAwOwogICAgICAtLXBhcGVyLWRlZXAtb3JhbmdlLWE3MDA6ICNkZDJjMDA7CgogICAgICAtLXBhcGVyLWJyb3duLTUwOiAjZWZlYmU5OwogICAgICAtLXBhcGVyLWJyb3duLTEwMDogI2Q3Y2NjODsKICAgICAgLS1wYXBlci1icm93bi0yMDA6ICNiY2FhYTQ7CiAgICAgIC0tcGFwZXItYnJvd24tMzAwOiAjYTE4ODdmOwogICAgICAtLXBhcGVyLWJyb3duLTQwMDogIzhkNmU2MzsKICAgICAgLS1wYXBlci1icm93bi01MDA6ICM3OTU1NDg7CiAgICAgIC0tcGFwZXItYnJvd24tNjAwOiAjNmQ0YzQxOwogICAgICAtLXBhcGVyLWJyb3duLTcwMDogIzVkNDAzNzsKICAgICAgLS1wYXBlci1icm93bi04MDA6ICM0ZTM0MmU7CiAgICAgIC0tcGFwZXItYnJvd24tOTAwOiAjM2UyNzIzOwoKICAgICAgLS1wYXBlci1ncmV5LTUwOiAjZmFmYWZhOwogICAgICAtLXBhcGVyLWdyZXktMTAwOiAjZjVmNWY1OwogICAgICAtLXBhcGVyLWdyZXktMjAwOiAjZWVlZWVlOwogICAgICAtLXBhcGVyLWdyZXktMzAwOiAjZTBlMGUwOwogICAgICAtLXBhcGVyLWdyZXktNDAwOiAjYmRiZGJkOwogICAgICAtLXBhcGVyLWdyZXktNTAwOiAjOWU5ZTllOwogICAgICAtLXBhcGVyLWdyZXktNjAwOiAjNzU3NTc1OwogICAgICAtLXBhcGVyLWdyZXktNzAwOiAjNjE2MTYxOwogICAgICAtLXBhcGVyLWdyZXktODAwOiAjNDI0MjQyOwogICAgICAtLXBhcGVyLWdyZXktOTAwOiAjMjEyMTIxOwoKICAgICAgLS1wYXBlci1ibHVlLWdyZXktNTA6ICNlY2VmZjE7CiAgICAgIC0tcGFwZXItYmx1ZS1ncmV5LTEwMDogI2NmZDhkYzsKICAgICAgLS1wYXBlci1ibHVlLWdyZXktMjAwOiAjYjBiZWM1OwogICAgICAtLXBhcGVyLWJsdWUtZ3JleS0zMDA6ICM5MGE0YWU7CiAgICAgIC0tcGFwZXItYmx1ZS1ncmV5LTQwMDogIzc4OTA5YzsKICAgICAgLS1wYXBlci1ibHVlLWdyZXktNTAwOiAjNjA3ZDhiOwogICAgICAtLXBhcGVyLWJsdWUtZ3JleS02MDA6ICM1NDZlN2E7CiAgICAgIC0tcGFwZXItYmx1ZS1ncmV5LTcwMDogIzQ1NWE2NDsKICAgICAgLS1wYXBlci1ibHVlLWdyZXktODAwOiAjMzc0NzRmOwogICAgICAtLXBhcGVyLWJsdWUtZ3JleS05MDA6ICMyNjMyMzg7CgogICAgICAvKiBvcGFjaXR5IGZvciBkYXJrIHRleHQgb24gYSBsaWdodCBiYWNrZ3JvdW5kICovCiAgICAgIC0tZGFyay1kaXZpZGVyLW9wYWNpdHk6IDAuMTI7CiAgICAgIC0tZGFyay1kaXNhYmxlZC1vcGFjaXR5OiAwLjM4OyAvKiBvciBoaW50IHRleHQgb3IgaWNvbiAqLwogICAgICAtLWRhcmstc2Vjb25kYXJ5LW9wYWNpdHk6IDAuNTQ7CiAgICAgIC0tZGFyay1wcmltYXJ5LW9wYWNpdHk6IDAuODc7CgogICAgICAvKiBvcGFjaXR5IGZvciBsaWdodCB0ZXh0IG9uIGEgZGFyayBiYWNrZ3JvdW5kICovCiAgICAgIC0tbGlnaHQtZGl2aWRlci1vcGFjaXR5OiAwLjEyOwogICAgICAtLWxpZ2h0LWRpc2FibGVkLW9wYWNpdHk6IDAuMzsgLyogb3IgaGludCB0ZXh0IG9yIGljb24gKi8KICAgICAgLS1saWdodC1zZWNvbmRhcnktb3BhY2l0eTogMC43OwogICAgICAtLWxpZ2h0LXByaW1hcnktb3BhY2l0eTogMS4wOwoKICAgIH0KCiAgPC9zdHlsZT4KPC9jdXN0b20tc3R5bGU+CmA7ZmEuc2V0QXR0cmlidXRlKCJzdHlsZSIsImRpc3BsYXk6IG5vbmU7IiksZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChmYS5jb250ZW50KTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNvbnN0IG1hPXhlYAo8Y3VzdG9tLXN0eWxlPgogIDxzdHlsZSBpcz0iY3VzdG9tLXN0eWxlIj4KICAgIGh0bWwgewogICAgICAvKgogICAgICAgKiBZb3UgY2FuIHVzZSB0aGVzZSBnZW5lcmljIHZhcmlhYmxlcyBpbiB5b3VyIGVsZW1lbnRzIGZvciBlYXN5IHRoZW1pbmcuCiAgICAgICAqIEZvciBleGFtcGxlLCBpZiBhbGwgeW91ciBlbGVtZW50cyB1c2UgXGAtLXByaW1hcnktdGV4dC1jb2xvclxgIGFzIGl0cyBtYWluCiAgICAgICAqIGNvbG9yLCB0aGVuIHN3aXRjaGluZyBmcm9tIGEgbGlnaHQgdG8gYSBkYXJrIHRoZW1lIGlzIGp1c3QgYSBtYXR0ZXIgb2YKICAgICAgICogY2hhbmdpbmcgdGhlIHZhbHVlIG9mIFxgLS1wcmltYXJ5LXRleHQtY29sb3JcYCBpbiB5b3VyIGFwcGxpY2F0aW9uLgogICAgICAgKi8KICAgICAgLS1wcmltYXJ5LXRleHQtY29sb3I6IHZhcigtLWxpZ2h0LXRoZW1lLXRleHQtY29sb3IpOwogICAgICAtLXByaW1hcnktYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbGlnaHQtdGhlbWUtYmFja2dyb3VuZC1jb2xvcik7CiAgICAgIC0tc2Vjb25kYXJ5LXRleHQtY29sb3I6IHZhcigtLWxpZ2h0LXRoZW1lLXNlY29uZGFyeS1jb2xvcik7CiAgICAgIC0tZGlzYWJsZWQtdGV4dC1jb2xvcjogdmFyKC0tbGlnaHQtdGhlbWUtZGlzYWJsZWQtY29sb3IpOwogICAgICAtLWRpdmlkZXItY29sb3I6IHZhcigtLWxpZ2h0LXRoZW1lLWRpdmlkZXItY29sb3IpOwogICAgICAtLWVycm9yLWNvbG9yOiB2YXIoLS1wYXBlci1kZWVwLW9yYW5nZS1hNzAwKTsKCiAgICAgIC8qCiAgICAgICAqIFByaW1hcnkgYW5kIGFjY2VudCBjb2xvcnMuIEFsc28gc2VlIGNvbG9yLmpzIGZvciBtb3JlIGNvbG9ycy4KICAgICAgICovCiAgICAgIC0tcHJpbWFyeS1jb2xvcjogdmFyKC0tcGFwZXItaW5kaWdvLTUwMCk7CiAgICAgIC0tbGlnaHQtcHJpbWFyeS1jb2xvcjogdmFyKC0tcGFwZXItaW5kaWdvLTEwMCk7CiAgICAgIC0tZGFyay1wcmltYXJ5LWNvbG9yOiB2YXIoLS1wYXBlci1pbmRpZ28tNzAwKTsKCiAgICAgIC0tYWNjZW50LWNvbG9yOiB2YXIoLS1wYXBlci1waW5rLWEyMDApOwogICAgICAtLWxpZ2h0LWFjY2VudC1jb2xvcjogdmFyKC0tcGFwZXItcGluay1hMTAwKTsKICAgICAgLS1kYXJrLWFjY2VudC1jb2xvcjogdmFyKC0tcGFwZXItcGluay1hNDAwKTsKCgogICAgICAvKgogICAgICAgKiBNYXRlcmlhbCBEZXNpZ24gTGlnaHQgYmFja2dyb3VuZCB0aGVtZQogICAgICAgKi8KICAgICAgLS1saWdodC10aGVtZS1iYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmOwogICAgICAtLWxpZ2h0LXRoZW1lLWJhc2UtY29sb3I6ICMwMDAwMDA7CiAgICAgIC0tbGlnaHQtdGhlbWUtdGV4dC1jb2xvcjogdmFyKC0tcGFwZXItZ3JleS05MDApOwogICAgICAtLWxpZ2h0LXRoZW1lLXNlY29uZGFyeS1jb2xvcjogIzczNzM3MzsgIC8qIGZvciBzZWNvbmRhcnkgdGV4dCBhbmQgaWNvbnMgKi8KICAgICAgLS1saWdodC10aGVtZS1kaXNhYmxlZC1jb2xvcjogIzliOWI5YjsgIC8qIGRpc2FibGVkL2hpbnQgdGV4dCAqLwogICAgICAtLWxpZ2h0LXRoZW1lLWRpdmlkZXItY29sb3I6ICNkYmRiZGI7CgogICAgICAvKgogICAgICAgKiBNYXRlcmlhbCBEZXNpZ24gRGFyayBiYWNrZ3JvdW5kIHRoZW1lCiAgICAgICAqLwogICAgICAtLWRhcmstdGhlbWUtYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcGFwZXItZ3JleS05MDApOwogICAgICAtLWRhcmstdGhlbWUtYmFzZS1jb2xvcjogI2ZmZmZmZjsKICAgICAgLS1kYXJrLXRoZW1lLXRleHQtY29sb3I6ICNmZmZmZmY7CiAgICAgIC0tZGFyay10aGVtZS1zZWNvbmRhcnktY29sb3I6ICNiY2JjYmM7ICAvKiBmb3Igc2Vjb25kYXJ5IHRleHQgYW5kIGljb25zICovCiAgICAgIC0tZGFyay10aGVtZS1kaXNhYmxlZC1jb2xvcjogIzY0NjQ2NDsgIC8qIGRpc2FibGVkL2hpbnQgdGV4dCAqLwogICAgICAtLWRhcmstdGhlbWUtZGl2aWRlci1jb2xvcjogIzNjM2MzYzsKCiAgICAgIC8qCiAgICAgICAqIERlcHJlY2F0ZWQgdmFsdWVzIGJlY2F1c2Ugb2YgdGhlaXIgY29uZnVzaW5nIG5hbWVzLgogICAgICAgKi8KICAgICAgLS10ZXh0LXByaW1hcnktY29sb3I6IHZhcigtLWRhcmstdGhlbWUtdGV4dC1jb2xvcik7CiAgICAgIC0tZGVmYXVsdC1wcmltYXJ5LWNvbG9yOiB2YXIoLS1wcmltYXJ5LWNvbG9yKTsKICAgIH0KICA8L3N0eWxlPgo8L2N1c3RvbS1zdHlsZT5gO21hLnNldEF0dHJpYnV0ZSgic3R5bGUiLCJkaXNwbGF5OiBub25lOyIpLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQobWEuY29udGVudCk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCBnYT17cHJvcGVydGllczp7bmFtZTp7dHlwZTpTdHJpbmd9LHZhbHVlOntub3RpZnk6ITAsdHlwZTpTdHJpbmd9LHJlcXVpcmVkOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9fSxhdHRhY2hlZDpmdW5jdGlvbigpe30sZGV0YWNoZWQ6ZnVuY3Rpb24oKXt9fTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovbGV0IF9hPW51bGw7Y29uc3QgeWE9e3Byb3BlcnRpZXM6e3ZhbGlkYXRvcjp7dHlwZTpTdHJpbmd9LGludmFsaWQ6e25vdGlmeTohMCxyZWZsZWN0VG9BdHRyaWJ1dGU6ITAsdHlwZTpCb29sZWFuLHZhbHVlOiExLG9ic2VydmVyOiJfaW52YWxpZENoYW5nZWQifX0scmVnaXN0ZXJlZDpmdW5jdGlvbigpe19hPW5ldyBObyh7dHlwZToidmFsaWRhdG9yIn0pfSxfaW52YWxpZENoYW5nZWQ6ZnVuY3Rpb24oKXt0aGlzLmludmFsaWQ/dGhpcy5zZXRBdHRyaWJ1dGUoImFyaWEtaW52YWxpZCIsInRydWUiKTp0aGlzLnJlbW92ZUF0dHJpYnV0ZSgiYXJpYS1pbnZhbGlkIil9LGdldCBfdmFsaWRhdG9yKCl7cmV0dXJuIF9hJiZfYS5ieUtleSh0aGlzLnZhbGlkYXRvcil9LGhhc1ZhbGlkYXRvcjpmdW5jdGlvbigpe3JldHVybiBudWxsIT10aGlzLl92YWxpZGF0b3J9LHZhbGlkYXRlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmludmFsaWQ9dm9pZCAwPT09dCYmdm9pZCAwIT09dGhpcy52YWx1ZT8hdGhpcy5fZ2V0VmFsaWRpdHkodGhpcy52YWx1ZSk6IXRoaXMuX2dldFZhbGlkaXR5KHQpLCF0aGlzLmludmFsaWR9LF9nZXRWYWxpZGl0eTpmdW5jdGlvbih0KXtyZXR1cm4hdGhpcy5oYXNWYWxpZGF0b3IoKXx8dGhpcy5fdmFsaWRhdG9yLnZhbGlkYXRlKHQpfX0sdmE9e3Byb3BlcnRpZXM6e2NoZWNrZWQ6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMSxyZWZsZWN0VG9BdHRyaWJ1dGU6ITAsbm90aWZ5OiEwLG9ic2VydmVyOiJfY2hlY2tlZENoYW5nZWQifSx0b2dnbGVzOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITAscmVmbGVjdFRvQXR0cmlidXRlOiEwfSx2YWx1ZTp7dHlwZTpTdHJpbmcsdmFsdWU6Im9uIixvYnNlcnZlcjoiX3ZhbHVlQ2hhbmdlZCJ9fSxvYnNlcnZlcnM6WyJfcmVxdWlyZWRDaGFuZ2VkKHJlcXVpcmVkKSJdLGNyZWF0ZWQ6ZnVuY3Rpb24oKXt0aGlzLl9oYXNJcm9uQ2hlY2tlZEVsZW1lbnRCZWhhdmlvcj0hMH0sX2dldFZhbGlkaXR5OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmRpc2FibGVkfHwhdGhpcy5yZXF1aXJlZHx8dGhpcy5jaGVja2VkfSxfcmVxdWlyZWRDaGFuZ2VkOmZ1bmN0aW9uKCl7dGhpcy5yZXF1aXJlZD90aGlzLnNldEF0dHJpYnV0ZSgiYXJpYS1yZXF1aXJlZCIsInRydWUiKTp0aGlzLnJlbW92ZUF0dHJpYnV0ZSgiYXJpYS1yZXF1aXJlZCIpfSxfY2hlY2tlZENoYW5nZWQ6ZnVuY3Rpb24oKXt0aGlzLmFjdGl2ZT10aGlzLmNoZWNrZWQsdGhpcy5maXJlKCJpcm9uLWNoYW5nZSIpfSxfdmFsdWVDaGFuZ2VkOmZ1bmN0aW9uKCl7bnVsbD09dGhpcy52YWx1ZSYmKHRoaXMudmFsdWU9Im9uIil9fSxiYT17b2JzZXJ2ZXJzOlsiX2ZvY3VzZWRDaGFuZ2VkKHJlY2VpdmVkRm9jdXNGcm9tS2V5Ym9hcmQpIl0sX2ZvY3VzZWRDaGFuZ2VkOmZ1bmN0aW9uKHQpe3QmJnRoaXMuZW5zdXJlUmlwcGxlKCksdGhpcy5oYXNSaXBwbGUoKSYmKHRoaXMuX3JpcHBsZS5ob2xkRG93bj10KX0sX2NyZWF0ZVJpcHBsZTpmdW5jdGlvbigpe3ZhciB0PXVhLl9jcmVhdGVSaXBwbGUoKTtyZXR1cm4gdC5pZD0iaW5rIix0LnNldEF0dHJpYnV0ZSgiY2VudGVyIiwiIiksdC5jbGFzc0xpc3QuYWRkKCJjaXJjbGUiKSx0fX0seGE9W2FhLHJhLHVhLGJhXSx3YT1beGEsW2dhLHlhLHZhXSx7X2NoZWNrZWRDaGFuZ2VkOmZ1bmN0aW9uKCl7dmEuX2NoZWNrZWRDaGFuZ2VkLmNhbGwodGhpcyksdGhpcy5oYXNSaXBwbGUoKSYmKHRoaXMuY2hlY2tlZD90aGlzLl9yaXBwbGUuc2V0QXR0cmlidXRlKCJjaGVja2VkIiwiIik6dGhpcy5fcmlwcGxlLnJlbW92ZUF0dHJpYnV0ZSgiY2hlY2tlZCIpKX0sX2J1dHRvblN0YXRlQ2hhbmdlZDpmdW5jdGlvbigpe3VhLl9idXR0b25TdGF0ZUNoYW5nZWQuY2FsbCh0aGlzKSx0aGlzLmRpc2FibGVkfHx0aGlzLmlzQXR0YWNoZWQmJih0aGlzLmNoZWNrZWQ9dGhpcy5hY3RpdmUpfX1dLFNhPXhlYDxzdHlsZT4KICA6aG9zdCB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgLS1jYWxjdWxhdGVkLXBhcGVyLWNoZWNrYm94LXNpemU6IHZhcigtLXBhcGVyLWNoZWNrYm94LXNpemUsIDE4cHgpOwogICAgLyogLTFweCBpcyBhIHNlbnRpbmVsIGZvciB0aGUgZGVmYXVsdCBhbmQgaXMgcmVwbGFjZWQgaW4gXGBhdHRhY2hlZFxgLiAqLwogICAgLS1jYWxjdWxhdGVkLXBhcGVyLWNoZWNrYm94LWluay1zaXplOiB2YXIoLS1wYXBlci1jaGVja2JveC1pbmstc2l6ZSwgLTFweCk7CiAgICBAYXBwbHkgLS1wYXBlci1mb250LWNvbW1vbi1iYXNlOwogICAgbGluZS1oZWlnaHQ6IDA7CiAgICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50OwogIH0KCiAgOmhvc3QoW2hpZGRlbl0pIHsKICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICB9CgogIDpob3N0KDpmb2N1cykgewogICAgb3V0bGluZTogbm9uZTsKICB9CgogIC5oaWRkZW4gewogICAgZGlzcGxheTogbm9uZTsKICB9CgogICNjaGVja2JveENvbnRhaW5lciB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB3aWR0aDogdmFyKC0tY2FsY3VsYXRlZC1wYXBlci1jaGVja2JveC1zaXplKTsKICAgIGhlaWdodDogdmFyKC0tY2FsY3VsYXRlZC1wYXBlci1jaGVja2JveC1zaXplKTsKICAgIG1pbi13aWR0aDogdmFyKC0tY2FsY3VsYXRlZC1wYXBlci1jaGVja2JveC1zaXplKTsKICAgIG1hcmdpbjogdmFyKC0tcGFwZXItY2hlY2tib3gtbWFyZ2luLCBpbml0aWFsKTsKICAgIHZlcnRpY2FsLWFsaWduOiB2YXIoLS1wYXBlci1jaGVja2JveC12ZXJ0aWNhbC1hbGlnbiwgbWlkZGxlKTsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXBhcGVyLWNoZWNrYm94LXVuY2hlY2tlZC1iYWNrZ3JvdW5kLWNvbG9yLCB0cmFuc3BhcmVudCk7CiAgfQoKICAjaW5rIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKCiAgICAvKiBDZW50ZXIgdGhlIHJpcHBsZSBpbiB0aGUgY2hlY2tib3ggYnkgbmVnYXRpdmUgb2Zmc2V0dGluZyBpdCBieQogICAgICogKGlua1dpZHRoIC0gcmlwcGxlV2lkdGgpIC8gMiAqLwogICAgdG9wOiBjYWxjKDBweCAtICh2YXIoLS1jYWxjdWxhdGVkLXBhcGVyLWNoZWNrYm94LWluay1zaXplKSAtIHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItY2hlY2tib3gtc2l6ZSkpIC8gMik7CiAgICBsZWZ0OiBjYWxjKDBweCAtICh2YXIoLS1jYWxjdWxhdGVkLXBhcGVyLWNoZWNrYm94LWluay1zaXplKSAtIHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItY2hlY2tib3gtc2l6ZSkpIC8gMik7CiAgICB3aWR0aDogdmFyKC0tY2FsY3VsYXRlZC1wYXBlci1jaGVja2JveC1pbmstc2l6ZSk7CiAgICBoZWlnaHQ6IHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItY2hlY2tib3gtaW5rLXNpemUpOwogICAgY29sb3I6IHZhcigtLXBhcGVyLWNoZWNrYm94LXVuY2hlY2tlZC1pbmstY29sb3IsIHZhcigtLXByaW1hcnktdGV4dC1jb2xvcikpOwogICAgb3BhY2l0eTogMC42OwogICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgfQoKICAjaW5rOmRpcihydGwpIHsKICAgIHJpZ2h0OiBjYWxjKDBweCAtICh2YXIoLS1jYWxjdWxhdGVkLXBhcGVyLWNoZWNrYm94LWluay1zaXplKSAtIHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItY2hlY2tib3gtc2l6ZSkpIC8gMik7CiAgICBsZWZ0OiBhdXRvOwogIH0KCiAgI2lua1tjaGVja2VkXSB7CiAgICBjb2xvcjogdmFyKC0tcGFwZXItY2hlY2tib3gtY2hlY2tlZC1pbmstY29sb3IsIHZhcigtLXByaW1hcnktY29sb3IpKTsKICB9CgogICNjaGVja2JveCB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgaGVpZ2h0OiAxMDAlOwogICAgYm9yZGVyOiBzb2xpZCAycHg7CiAgICBib3JkZXItY29sb3I6IHZhcigtLXBhcGVyLWNoZWNrYm94LXVuY2hlY2tlZC1jb2xvciwgdmFyKC0tcHJpbWFyeS10ZXh0LWNvbG9yKSk7CiAgICBib3JkZXItcmFkaXVzOiAycHg7CiAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAxNDBtcywgYm9yZGVyLWNvbG9yIDE0MG1zOwogICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAxNDBtcywgYm9yZGVyLWNvbG9yIDE0MG1zOwoKICAgIC13ZWJraXQtdHJhbnNpdGlvbi1kdXJhdGlvbjogdmFyKC0tcGFwZXItY2hlY2tib3gtYW5pbWF0aW9uLWR1cmF0aW9uLCAxNDBtcyk7CiAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiB2YXIoLS1wYXBlci1jaGVja2JveC1hbmltYXRpb24tZHVyYXRpb24sIDE0MG1zKTsKICB9CgogIC8qIGNoZWNrYm94IGNoZWNrZWQgYW5pbWF0aW9ucyAqLwogICNjaGVja2JveC5jaGVja2VkICNjaGVja21hcmsgewogICAgLXdlYmtpdC1hbmltYXRpb246IGNoZWNrbWFyay1leHBhbmQgMTQwbXMgZWFzZS1vdXQgZm9yd2FyZHM7CiAgICBhbmltYXRpb246IGNoZWNrbWFyay1leHBhbmQgMTQwbXMgZWFzZS1vdXQgZm9yd2FyZHM7CgogICAgLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246IHZhcigtLXBhcGVyLWNoZWNrYm94LWFuaW1hdGlvbi1kdXJhdGlvbiwgMTQwbXMpOwogICAgYW5pbWF0aW9uLWR1cmF0aW9uOiB2YXIoLS1wYXBlci1jaGVja2JveC1hbmltYXRpb24tZHVyYXRpb24sIDE0MG1zKTsKICB9CgogIEAtd2Via2l0LWtleWZyYW1lcyBjaGVja21hcmstZXhwYW5kIHsKICAgIDAlIHsKICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDAsIDApIHJvdGF0ZSg0NWRlZyk7CiAgICB9CiAgICAxMDAlIHsKICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEsIDEpIHJvdGF0ZSg0NWRlZyk7CiAgICB9CiAgfQoKICBAa2V5ZnJhbWVzIGNoZWNrbWFyay1leHBhbmQgewogICAgMCUgewogICAgICB0cmFuc2Zvcm06IHNjYWxlKDAsIDApIHJvdGF0ZSg0NWRlZyk7CiAgICB9CiAgICAxMDAlIHsKICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLCAxKSByb3RhdGUoNDVkZWcpOwogICAgfQogIH0KCiAgI2NoZWNrYm94LmNoZWNrZWQgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcGFwZXItY2hlY2tib3gtY2hlY2tlZC1jb2xvciwgdmFyKC0tcHJpbWFyeS1jb2xvcikpOwogICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1wYXBlci1jaGVja2JveC1jaGVja2VkLWNvbG9yLCB2YXIoLS1wcmltYXJ5LWNvbG9yKSk7CiAgfQoKICAjY2hlY2ttYXJrIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHdpZHRoOiAzNiU7CiAgICBoZWlnaHQ6IDcwJTsKICAgIGJvcmRlci1zdHlsZTogc29saWQ7CiAgICBib3JkZXItdG9wOiBub25lOwogICAgYm9yZGVyLWxlZnQ6IG5vbmU7CiAgICBib3JkZXItcmlnaHQtd2lkdGg6IGNhbGMoMi8xNSAqIHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItY2hlY2tib3gtc2l6ZSkpOwogICAgYm9yZGVyLWJvdHRvbS13aWR0aDogY2FsYygyLzE1ICogdmFyKC0tY2FsY3VsYXRlZC1wYXBlci1jaGVja2JveC1zaXplKSk7CiAgICBib3JkZXItY29sb3I6IHZhcigtLXBhcGVyLWNoZWNrYm94LWNoZWNrbWFyay1jb2xvciwgd2hpdGUpOwogICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiA5NyUgODYlOwogICAgdHJhbnNmb3JtLW9yaWdpbjogOTclIDg2JTsKICAgIGJveC1zaXppbmc6IGNvbnRlbnQtYm94OyAvKiBwcm90ZWN0IGFnYWluc3QgcGFnZS1sZXZlbCBib3gtc2l6aW5nICovCiAgfQoKICAjY2hlY2ttYXJrOmRpcihydGwpIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogNTAlIDE0JTsKICAgIHRyYW5zZm9ybS1vcmlnaW46IDUwJSAxNCU7CiAgfQoKICAvKiBsYWJlbCAqLwogICNjaGVja2JveExhYmVsIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgICBwYWRkaW5nLWxlZnQ6IHZhcigtLXBhcGVyLWNoZWNrYm94LWxhYmVsLXNwYWNpbmcsIDhweCk7CiAgICB3aGl0ZS1zcGFjZTogbm9ybWFsOwogICAgbGluZS1oZWlnaHQ6IG5vcm1hbDsKICAgIGNvbG9yOiB2YXIoLS1wYXBlci1jaGVja2JveC1sYWJlbC1jb2xvciwgdmFyKC0tcHJpbWFyeS10ZXh0LWNvbG9yKSk7CiAgICBAYXBwbHkgLS1wYXBlci1jaGVja2JveC1sYWJlbDsKICB9CgogIDpob3N0KFtjaGVja2VkXSkgI2NoZWNrYm94TGFiZWwgewogICAgY29sb3I6IHZhcigtLXBhcGVyLWNoZWNrYm94LWxhYmVsLWNoZWNrZWQtY29sb3IsIHZhcigtLXBhcGVyLWNoZWNrYm94LWxhYmVsLWNvbG9yLCB2YXIoLS1wcmltYXJ5LXRleHQtY29sb3IpKSk7CiAgICBAYXBwbHkgLS1wYXBlci1jaGVja2JveC1sYWJlbC1jaGVja2VkOwogIH0KCiAgI2NoZWNrYm94TGFiZWw6ZGlyKHJ0bCkgewogICAgcGFkZGluZy1yaWdodDogdmFyKC0tcGFwZXItY2hlY2tib3gtbGFiZWwtc3BhY2luZywgOHB4KTsKICAgIHBhZGRpbmctbGVmdDogMDsKICB9CgogICNjaGVja2JveExhYmVsW2hpZGRlbl0gewogICAgZGlzcGxheTogbm9uZTsKICB9CgogIC8qIGRpc2FibGVkIHN0YXRlICovCgogIDpob3N0KFtkaXNhYmxlZF0pICNjaGVja2JveCB7CiAgICBvcGFjaXR5OiAwLjU7CiAgICBib3JkZXItY29sb3I6IHZhcigtLXBhcGVyLWNoZWNrYm94LXVuY2hlY2tlZC1jb2xvciwgdmFyKC0tcHJpbWFyeS10ZXh0LWNvbG9yKSk7CiAgfQoKICA6aG9zdChbZGlzYWJsZWRdW2NoZWNrZWRdKSAjY2hlY2tib3ggewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcGFwZXItY2hlY2tib3gtdW5jaGVja2VkLWNvbG9yLCB2YXIoLS1wcmltYXJ5LXRleHQtY29sb3IpKTsKICAgIG9wYWNpdHk6IDAuNTsKICB9CgogIDpob3N0KFtkaXNhYmxlZF0pICNjaGVja2JveExhYmVsICB7CiAgICBvcGFjaXR5OiAwLjY1OwogIH0KCiAgLyogaW52YWxpZCBzdGF0ZSAqLwogICNjaGVja2JveC5pbnZhbGlkOm5vdCguY2hlY2tlZCkgewogICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1wYXBlci1jaGVja2JveC1lcnJvci1jb2xvciwgdmFyKC0tZXJyb3ItY29sb3IpKTsKICB9Cjwvc3R5bGU+Cgo8ZGl2IGlkPSJjaGVja2JveENvbnRhaW5lciI+CiAgPGRpdiBpZD0iY2hlY2tib3giIGNsYXNzJD0iW1tfY29tcHV0ZUNoZWNrYm94Q2xhc3MoY2hlY2tlZCwgaW52YWxpZCldXSI+CiAgICA8ZGl2IGlkPSJjaGVja21hcmsiIGNsYXNzJD0iW1tfY29tcHV0ZUNoZWNrbWFya0NsYXNzKGNoZWNrZWQpXV0iPjwvZGl2PgogIDwvZGl2Pgo8L2Rpdj4KCjxkaXYgaWQ9ImNoZWNrYm94TGFiZWwiPjxzbG90Pjwvc2xvdD48L2Rpdj5gOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmlmKFNhLnNldEF0dHJpYnV0ZSgic3RyaXAtd2hpdGVzcGFjZSIsIiIpLGpyKHtfdGVtcGxhdGU6U2EsaXM6InBhcGVyLWNoZWNrYm94IixiZWhhdmlvcnM6W3dhXSxob3N0QXR0cmlidXRlczp7cm9sZToiY2hlY2tib3giLCJhcmlhLWNoZWNrZWQiOiExLHRhYmluZGV4OjB9LHByb3BlcnRpZXM6e2FyaWFBY3RpdmVBdHRyaWJ1dGU6e3R5cGU6U3RyaW5nLHZhbHVlOiJhcmlhLWNoZWNrZWQifX0sYXR0YWNoZWQ6ZnVuY3Rpb24oKXtEaSh0aGlzLChmdW5jdGlvbigpe2lmKCItMXB4Ij09PXRoaXMuZ2V0Q29tcHV0ZWRTdHlsZVZhbHVlKCItLWNhbGN1bGF0ZWQtcGFwZXItY2hlY2tib3gtaW5rLXNpemUiKS50cmltKCkpe3ZhciB0PXRoaXMuZ2V0Q29tcHV0ZWRTdHlsZVZhbHVlKCItLWNhbGN1bGF0ZWQtcGFwZXItY2hlY2tib3gtc2l6ZSIpLnRyaW0oKSxlPSJweCIsbj10Lm1hdGNoKC9bQS1aYS16XSskLyk7bnVsbCE9PW4mJihlPW5bMF0pO3ZhciBpPXBhcnNlRmxvYXQodCkscj04LzMqaTsicHgiPT09ZSYmKHI9TWF0aC5mbG9vcihyKSklMiE9aSUyJiZyKyssdGhpcy51cGRhdGVTdHlsZXMoeyItLXBhcGVyLWNoZWNrYm94LWluay1zaXplIjpyK2V9KX19KSl9LF9jb21wdXRlQ2hlY2tib3hDbGFzczpmdW5jdGlvbih0LGUpe3ZhciBuPSIiO3JldHVybiB0JiYobis9ImNoZWNrZWQgIiksZSYmKG4rPSJpbnZhbGlkIiksbn0sX2NvbXB1dGVDaGVja21hcmtDbGFzczpmdW5jdGlvbih0KXtyZXR1cm4gdD8iIjoiaGlkZGVuIn0sX2NyZWF0ZVJpcHBsZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yaXBwbGVDb250YWluZXI9dGhpcy4kLmNoZWNrYm94Q29udGFpbmVyLGJhLl9jcmVhdGVSaXBwbGUuY2FsbCh0aGlzKX19KSwhd2luZG93LnBvbHltZXJTa2lwTG9hZGluZ0ZvbnRSb2JvdG8pe2NvbnN0IHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGluayIpO3QucmVsPSJzdHlsZXNoZWV0Iix0LnR5cGU9InRleHQvY3NzIix0LmNyb3NzT3JpZ2luPSJhbm9ueW1vdXMiLHQuaHJlZj0iaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3M/ZmFtaWx5PVJvYm90bytNb25vOjQwMCw3MDB8Um9ib3RvOjQwMCwzMDAsMzAwaXRhbGljLDQwMGl0YWxpYyw1MDAsNTAwaXRhbGljLDcwMCw3MDBpdGFsaWMiLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQodCl9Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqL2NvbnN0IE1hPXhlYDxjdXN0b20tc3R5bGU+CiAgPHN0eWxlIGlzPSJjdXN0b20tc3R5bGUiPgogICAgaHRtbCB7CgogICAgICAvKiBTaGFyZWQgU3R5bGVzICovCiAgICAgIC0tcGFwZXItZm9udC1jb21tb24tYmFzZTogewogICAgICAgIGZvbnQtZmFtaWx5OiAnUm9ib3RvJywgJ05vdG8nLCBzYW5zLXNlcmlmOwogICAgICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOwogICAgICB9OwoKICAgICAgLS1wYXBlci1mb250LWNvbW1vbi1jb2RlOiB7CiAgICAgICAgZm9udC1mYW1pbHk6ICdSb2JvdG8gTW9ubycsICdDb25zb2xhcycsICdNZW5sbycsIG1vbm9zcGFjZTsKICAgICAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKICAgICAgfTsKCiAgICAgIC0tcGFwZXItZm9udC1jb21tb24tZXhwZW5zaXZlLWtlcm5pbmc6IHsKICAgICAgICB0ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5OwogICAgICB9OwoKICAgICAgLS1wYXBlci1mb250LWNvbW1vbi1ub3dyYXA6IHsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICAgIH07CgogICAgICAvKiBNYXRlcmlhbCBGb250IFN0eWxlcyAqLwoKICAgICAgLS1wYXBlci1mb250LWRpc3BsYXk0OiB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItZm9udC1jb21tb24tYmFzZTsKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LWNvbW1vbi1ub3dyYXA7CgogICAgICAgIGZvbnQtc2l6ZTogMTEycHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDMwMDsKICAgICAgICBsZXR0ZXItc3BhY2luZzogLS4wNDRlbTsKICAgICAgICBsaW5lLWhlaWdodDogMTIwcHg7CiAgICAgIH07CgogICAgICAtLXBhcGVyLWZvbnQtZGlzcGxheTM6IHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LWNvbW1vbi1iYXNlOwogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY29tbW9uLW5vd3JhcDsKCiAgICAgICAgZm9udC1zaXplOiA1NnB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0uMDI2ZW07CiAgICAgICAgbGluZS1oZWlnaHQ6IDYwcHg7CiAgICAgIH07CgogICAgICAtLXBhcGVyLWZvbnQtZGlzcGxheTI6IHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LWNvbW1vbi1iYXNlOwoKICAgICAgICBmb250LXNpemU6IDQ1cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgICAgICBsZXR0ZXItc3BhY2luZzogLS4wMThlbTsKICAgICAgICBsaW5lLWhlaWdodDogNDhweDsKICAgICAgfTsKCiAgICAgIC0tcGFwZXItZm9udC1kaXNwbGF5MTogewogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY29tbW9uLWJhc2U7CgogICAgICAgIGZvbnQtc2l6ZTogMzRweDsKICAgICAgICBmb250LXdlaWdodDogNDAwOwogICAgICAgIGxldHRlci1zcGFjaW5nOiAtLjAxZW07CiAgICAgICAgbGluZS1oZWlnaHQ6IDQwcHg7CiAgICAgIH07CgogICAgICAtLXBhcGVyLWZvbnQtaGVhZGxpbmU6IHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LWNvbW1vbi1iYXNlOwoKICAgICAgICBmb250LXNpemU6IDI0cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgICAgICBsZXR0ZXItc3BhY2luZzogLS4wMTJlbTsKICAgICAgICBsaW5lLWhlaWdodDogMzJweDsKICAgICAgfTsKCiAgICAgIC0tcGFwZXItZm9udC10aXRsZTogewogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY29tbW9uLWJhc2U7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItZm9udC1jb21tb24tbm93cmFwOwoKICAgICAgICBmb250LXNpemU6IDIwcHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBsaW5lLWhlaWdodDogMjhweDsKICAgICAgfTsKCiAgICAgIC0tcGFwZXItZm9udC1zdWJoZWFkOiB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItZm9udC1jb21tb24tYmFzZTsKCiAgICAgICAgZm9udC1zaXplOiAxNnB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICAgICAgbGluZS1oZWlnaHQ6IDI0cHg7CiAgICAgIH07CgogICAgICAtLXBhcGVyLWZvbnQtYm9keTI6IHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LWNvbW1vbi1iYXNlOwoKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBsaW5lLWhlaWdodDogMjRweDsKICAgICAgfTsKCiAgICAgIC0tcGFwZXItZm9udC1ib2R5MTogewogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY29tbW9uLWJhc2U7CgogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBmb250LXdlaWdodDogNDAwOwogICAgICAgIGxpbmUtaGVpZ2h0OiAyMHB4OwogICAgICB9OwoKICAgICAgLS1wYXBlci1mb250LWNhcHRpb246IHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LWNvbW1vbi1iYXNlOwogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY29tbW9uLW5vd3JhcDsKCiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDExZW07CiAgICAgICAgbGluZS1oZWlnaHQ6IDIwcHg7CiAgICAgIH07CgogICAgICAtLXBhcGVyLWZvbnQtbWVudTogewogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY29tbW9uLWJhc2U7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItZm9udC1jb21tb24tbm93cmFwOwoKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBsaW5lLWhlaWdodDogMjRweDsKICAgICAgfTsKCiAgICAgIC0tcGFwZXItZm9udC1idXR0b246IHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LWNvbW1vbi1iYXNlOwogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY29tbW9uLW5vd3JhcDsKCiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDE4ZW07CiAgICAgICAgbGluZS1oZWlnaHQ6IDI0cHg7CiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgICAgfTsKCiAgICAgIC0tcGFwZXItZm9udC1jb2RlMjogewogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY29tbW9uLWNvZGU7CgogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBmb250LXdlaWdodDogNzAwOwogICAgICAgIGxpbmUtaGVpZ2h0OiAyMHB4OwogICAgICB9OwoKICAgICAgLS1wYXBlci1mb250LWNvZGUxOiB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItZm9udC1jb21tb24tY29kZTsKCiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgbGluZS1oZWlnaHQ6IDIwcHg7CiAgICAgIH07CgogICAgfQoKICA8L3N0eWxlPgo8L2N1c3RvbS1zdHlsZT5gO01hLnNldEF0dHJpYnV0ZSgic3R5bGUiLCJkaXNwbGF5OiBub25lOyIpLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoTWEuY29udGVudCk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCBFYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZW1wbGF0ZSIpO0VhLnNldEF0dHJpYnV0ZSgic3R5bGUiLCJkaXNwbGF5OiBub25lOyIpLEVhLmlubmVySFRNTD0nPGRvbS1tb2R1bGUgaWQ9InBhcGVyLWRpYWxvZy1zaGFyZWQtc3R5bGVzIj5cbiAgPHRlbXBsYXRlPlxuICAgIDxzdHlsZT5cbiAgICAgIDpob3N0IHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIG1hcmdpbjogMjRweCA0MHB4O1xuXG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXBhcGVyLWRpYWxvZy1iYWNrZ3JvdW5kLWNvbG9yLCB2YXIoLS1wcmltYXJ5LWJhY2tncm91bmQtY29sb3IpKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLWRpYWxvZy1jb2xvciwgdmFyKC0tcHJpbWFyeS10ZXh0LWNvbG9yKSk7XG5cbiAgICAgICAgQGFwcGx5IC0tcGFwZXItZm9udC1ib2R5MTtcbiAgICAgICAgQGFwcGx5IC0tc2hhZG93LWVsZXZhdGlvbi0xNmRwO1xuICAgICAgICBAYXBwbHkgLS1wYXBlci1kaWFsb2c7XG4gICAgICB9XG5cbiAgICAgIDpob3N0ID4gOjpzbG90dGVkKCopIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMjBweDtcbiAgICAgICAgcGFkZGluZzogMCAyNHB4O1xuICAgICAgfVxuXG4gICAgICA6aG9zdCA+IDo6c2xvdHRlZCgubm8tcGFkZGluZykge1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgfVxuXG4gICAgICBcbiAgICAgIDpob3N0ID4gOjpzbG90dGVkKCo6Zmlyc3QtY2hpbGQpIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMjRweDtcbiAgICAgIH1cblxuICAgICAgOmhvc3QgPiA6OnNsb3R0ZWQoKjpsYXN0LWNoaWxkKSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDI0cHg7XG4gICAgICB9XG5cbiAgICAgIC8qIEluIDEueCwgdGhpcyBzZWxlY3RvciB3YXMgYDpob3N0ID4gOjpjb250ZW50IGgyYC4gSW4gMi54IDxzbG90PiBhbGxvd3NcbiAgICAgIHRvIHNlbGVjdCBkaXJlY3QgY2hpbGRyZW4gb25seSwgd2hpY2ggaW5jcmVhc2VzIHRoZSB3ZWlnaHQgb2YgdGhpc1xuICAgICAgc2VsZWN0b3IsIHNvIHdlIGhhdmUgdG8gcmUtZGVmaW5lIGZpcnN0LWNoaWxkL2xhc3QtY2hpbGQgbWFyZ2lucyBiZWxvdy4gKi9cbiAgICAgIDpob3N0ID4gOjpzbG90dGVkKGgyKSB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgbWFyZ2luOiAwO1xuXG4gICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtdGl0bGU7XG4gICAgICAgIEBhcHBseSAtLXBhcGVyLWRpYWxvZy10aXRsZTtcbiAgICAgIH1cblxuICAgICAgLyogQXBwbHkgbWl4aW4gYWdhaW4sIGluIGNhc2UgaXQgc2V0cyBtYXJnaW4tdG9wLiAqL1xuICAgICAgOmhvc3QgPiA6OnNsb3R0ZWQoaDI6Zmlyc3QtY2hpbGQpIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMjRweDtcbiAgICAgICAgQGFwcGx5IC0tcGFwZXItZGlhbG9nLXRpdGxlO1xuICAgICAgfVxuXG4gICAgICAvKiBBcHBseSBtaXhpbiBhZ2FpbiwgaW4gY2FzZSBpdCBzZXRzIG1hcmdpbi1ib3R0b20uICovXG4gICAgICA6aG9zdCA+IDo6c2xvdHRlZChoMjpsYXN0LWNoaWxkKSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDI0cHg7XG4gICAgICAgIEBhcHBseSAtLXBhcGVyLWRpYWxvZy10aXRsZTtcbiAgICAgIH1cblxuICAgICAgOmhvc3QgPiA6OnNsb3R0ZWQoLnBhcGVyLWRpYWxvZy1idXR0b25zKSxcbiAgICAgIDpob3N0ID4gOjpzbG90dGVkKC5idXR0b25zKSB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgcGFkZGluZzogOHB4IDhweCA4cHggMjRweDtcbiAgICAgICAgbWFyZ2luOiAwO1xuXG4gICAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci1kaWFsb2ctYnV0dG9uLWNvbG9yLCB2YXIoLS1wcmltYXJ5LWNvbG9yKSk7XG5cbiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWhvcml6b250YWw7XG4gICAgICAgIEBhcHBseSAtLWxheW91dC1lbmQtanVzdGlmaWVkO1xuICAgICAgfVxuICAgIDwvc3R5bGU+XG4gIDwvdGVtcGxhdGU+XG48L2RvbS1tb2R1bGU+Jyxkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKEVhLmNvbnRlbnQpOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KY29uc3QgVGE9W3twcm9wZXJ0aWVzOnthbmltYXRpb25Db25maWc6e3R5cGU6T2JqZWN0fSxlbnRyeUFuaW1hdGlvbjp7b2JzZXJ2ZXI6Il9lbnRyeUFuaW1hdGlvbkNoYW5nZWQiLHR5cGU6U3RyaW5nfSxleGl0QW5pbWF0aW9uOntvYnNlcnZlcjoiX2V4aXRBbmltYXRpb25DaGFuZ2VkIix0eXBlOlN0cmluZ319LF9lbnRyeUFuaW1hdGlvbkNoYW5nZWQ6ZnVuY3Rpb24oKXt0aGlzLmFuaW1hdGlvbkNvbmZpZz10aGlzLmFuaW1hdGlvbkNvbmZpZ3x8e30sdGhpcy5hbmltYXRpb25Db25maWcuZW50cnk9W3tuYW1lOnRoaXMuZW50cnlBbmltYXRpb24sbm9kZTp0aGlzfV19LF9leGl0QW5pbWF0aW9uQ2hhbmdlZDpmdW5jdGlvbigpe3RoaXMuYW5pbWF0aW9uQ29uZmlnPXRoaXMuYW5pbWF0aW9uQ29uZmlnfHx7fSx0aGlzLmFuaW1hdGlvbkNvbmZpZy5leGl0PVt7bmFtZTp0aGlzLmV4aXRBbmltYXRpb24sbm9kZTp0aGlzfV19LF9jb3B5UHJvcGVydGllczpmdW5jdGlvbih0LGUpe2Zvcih2YXIgbiBpbiBlKXRbbl09ZVtuXX0sX2Nsb25lQ29uZmlnOmZ1bmN0aW9uKHQpe3ZhciBlPXtpc0Nsb25lOiEwfTtyZXR1cm4gdGhpcy5fY29weVByb3BlcnRpZXMoZSx0KSxlfSxfZ2V0QW5pbWF0aW9uQ29uZmlnUmVjdXJzaXZlOmZ1bmN0aW9uKHQsZSxuKXt2YXIgaTtpZih0aGlzLmFuaW1hdGlvbkNvbmZpZylpZih0aGlzLmFuaW1hdGlvbkNvbmZpZy52YWx1ZSYmImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMuYW5pbWF0aW9uQ29uZmlnLnZhbHVlKXRoaXMuX3dhcm4odGhpcy5fbG9nZigicGxheUFuaW1hdGlvbiIsIlBsZWFzZSBwdXQgJ2FuaW1hdGlvbkNvbmZpZycgaW5zaWRlIG9mIHlvdXIgY29tcG9uZW50cyAncHJvcGVydGllcycgb2JqZWN0IGluc3RlYWQgb2Ygb3V0c2lkZSBvZiBpdC4iKSk7ZWxzZSBpZihpPXQ/dGhpcy5hbmltYXRpb25Db25maWdbdF06dGhpcy5hbmltYXRpb25Db25maWcsQXJyYXkuaXNBcnJheShpKXx8KGk9W2ldKSxpKWZvcih2YXIgcixvPTA7cj1pW29dO28rKylpZihyLmFuaW1hdGFibGUpci5hbmltYXRhYmxlLl9nZXRBbmltYXRpb25Db25maWdSZWN1cnNpdmUoci50eXBlfHx0LGUsbik7ZWxzZSBpZihyLmlkKXt2YXIgYT1lW3IuaWRdO2E/KGEuaXNDbG9uZXx8KGVbci5pZF09dGhpcy5fY2xvbmVDb25maWcoYSksYT1lW3IuaWRdKSx0aGlzLl9jb3B5UHJvcGVydGllcyhhLHIpKTplW3IuaWRdPXJ9ZWxzZSBuLnB1c2gocil9LGdldEFuaW1hdGlvbkNvbmZpZzpmdW5jdGlvbih0KXt2YXIgZT17fSxuPVtdO2Zvcih2YXIgaSBpbiB0aGlzLl9nZXRBbmltYXRpb25Db25maWdSZWN1cnNpdmUodCxlLG4pLGUpbi5wdXNoKGVbaV0pO3JldHVybiBufX0se19jb25maWd1cmVBbmltYXRpb25zOmZ1bmN0aW9uKHQpe3ZhciBlPVtdLG49W107aWYodC5sZW5ndGg+MClmb3IobGV0IGUsaT0wO2U9dFtpXTtpKyspe2xldCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoZS5uYW1lKTtpZih0LmlzTmVvbkFuaW1hdGlvbil7bGV0IGk9bnVsbDt0LmNvbmZpZ3VyZXx8KHQuY29uZmlndXJlPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsfSksaT10LmNvbmZpZ3VyZShlKSxuLnB1c2goe3Jlc3VsdDppLGNvbmZpZzplLG5lb25BbmltYXRpb246dH0pfWVsc2UgY29uc29sZS53YXJuKHRoaXMuaXMrIjoiLGUubmFtZSwibm90IGZvdW5kISIpfWZvcih2YXIgaT0wO2k8bi5sZW5ndGg7aSsrKXtsZXQgdD1uW2ldLnJlc3VsdCxyPW5baV0uY29uZmlnLG89bltpXS5uZW9uQW5pbWF0aW9uO3RyeXsiZnVuY3Rpb24iIT10eXBlb2YgdC5jYW5jZWwmJih0PWRvY3VtZW50LnRpbWVsaW5lLnBsYXkodCkpfWNhdGNoKGUpe3Q9bnVsbCxjb25zb2xlLndhcm4oIkNvdWxkbnQgcGxheSIsIigiLHIubmFtZSwiKS4iLGUpfXQmJmUucHVzaCh7bmVvbkFuaW1hdGlvbjpvLGNvbmZpZzpyLGFuaW1hdGlvbjp0fSl9cmV0dXJuIGV9LF9zaG91bGRDb21wbGV0ZTpmdW5jdGlvbih0KXtmb3IodmFyIGU9ITAsbj0wO248dC5sZW5ndGg7bisrKWlmKCJmaW5pc2hlZCIhPXRbbl0uYW5pbWF0aW9uLnBsYXlTdGF0ZSl7ZT0hMTticmVha31yZXR1cm4gZX0sX2NvbXBsZXRlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wO2U8dC5sZW5ndGg7ZSsrKXRbZV0ubmVvbkFuaW1hdGlvbi5jb21wbGV0ZSh0W2VdLmNvbmZpZyk7Zm9yKGU9MDtlPHQubGVuZ3RoO2UrKyl0W2VdLmFuaW1hdGlvbi5jYW5jZWwoKX0scGxheUFuaW1hdGlvbjpmdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuZ2V0QW5pbWF0aW9uQ29uZmlnKHQpO2lmKG4pe3RoaXMuX2FjdGl2ZT10aGlzLl9hY3RpdmV8fHt9LHRoaXMuX2FjdGl2ZVt0XSYmKHRoaXMuX2NvbXBsZXRlKHRoaXMuX2FjdGl2ZVt0XSksZGVsZXRlIHRoaXMuX2FjdGl2ZVt0XSk7dmFyIGk9dGhpcy5fY29uZmlndXJlQW5pbWF0aW9ucyhuKTtpZigwIT1pLmxlbmd0aCl7dGhpcy5fYWN0aXZlW3RdPWk7Zm9yKHZhciByPTA7cjxpLmxlbmd0aDtyKyspaVtyXS5hbmltYXRpb24ub25maW5pc2g9ZnVuY3Rpb24oKXt0aGlzLl9zaG91bGRDb21wbGV0ZShpKSYmKHRoaXMuX2NvbXBsZXRlKGkpLGRlbGV0ZSB0aGlzLl9hY3RpdmVbdF0sdGhpcy5maXJlKCJuZW9uLWFuaW1hdGlvbi1maW5pc2giLGUse2J1YmJsZXM6ITF9KSl9LmJpbmQodGhpcyl9ZWxzZSB0aGlzLmZpcmUoIm5lb24tYW5pbWF0aW9uLWZpbmlzaCIsZSx7YnViYmxlczohMX0pfX0sY2FuY2VsQW5pbWF0aW9uOmZ1bmN0aW9uKCl7Zm9yKHZhciB0IGluIHRoaXMuX2FjdGl2ZSl7dmFyIGU9dGhpcy5fYWN0aXZlW3RdO2Zvcih2YXIgbiBpbiBlKWVbbl0uYW5pbWF0aW9uLmNhbmNlbCgpfXRoaXMuX2FjdGl2ZT17fX19XTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCi8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpsZXQgQ2E7Y29uc3QgQWE9e3Byb3BlcnRpZXM6e3NpemluZ1RhcmdldDp7dHlwZTpPYmplY3QsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc319LGZpdEludG86e3R5cGU6T2JqZWN0LHZhbHVlOndpbmRvd30sbm9PdmVybGFwOnt0eXBlOkJvb2xlYW59LHBvc2l0aW9uVGFyZ2V0Ont0eXBlOkVsZW1lbnR9LGhvcml6b250YWxBbGlnbjp7dHlwZTpTdHJpbmd9LHZlcnRpY2FsQWxpZ246e3R5cGU6U3RyaW5nfSxkeW5hbWljQWxpZ246e3R5cGU6Qm9vbGVhbn0saG9yaXpvbnRhbE9mZnNldDp7dHlwZTpOdW1iZXIsdmFsdWU6MCxub3RpZnk6ITB9LHZlcnRpY2FsT2Zmc2V0Ont0eXBlOk51bWJlcix2YWx1ZTowLG5vdGlmeTohMH0sYXV0b0ZpdE9uQXR0YWNoOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LGV4cGFuZFNpemluZ1RhcmdldEZvclNjcm9sbGJhcnM6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sX2ZpdEluZm86e3R5cGU6T2JqZWN0fX0sZ2V0IF9maXRXaWR0aCgpe3JldHVybiB0aGlzLmZpdEludG89PT13aW5kb3c/dGhpcy5maXRJbnRvLmlubmVyV2lkdGg6dGhpcy5maXRJbnRvLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRofSxnZXQgX2ZpdEhlaWdodCgpe3JldHVybiB0aGlzLmZpdEludG89PT13aW5kb3c/dGhpcy5maXRJbnRvLmlubmVySGVpZ2h0OnRoaXMuZml0SW50by5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHR9LGdldCBfZml0TGVmdCgpe3JldHVybiB0aGlzLmZpdEludG89PT13aW5kb3c/MDp0aGlzLmZpdEludG8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdH0sZ2V0IF9maXRUb3AoKXtyZXR1cm4gdGhpcy5maXRJbnRvPT09d2luZG93PzA6dGhpcy5maXRJbnRvLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcH0sZ2V0IF9kZWZhdWx0UG9zaXRpb25UYXJnZXQoKXt2YXIgdD1lcih0aGlzKS5wYXJlbnROb2RlO3JldHVybiB0JiZ0Lm5vZGVUeXBlPT09Tm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFJiYodD10Lmhvc3QpLHR9LGdldCBfbG9jYWxlSG9yaXpvbnRhbEFsaWduKCl7aWYodGhpcy5faXNSVEwpe2lmKCJyaWdodCI9PT10aGlzLmhvcml6b250YWxBbGlnbilyZXR1cm4ibGVmdCI7aWYoImxlZnQiPT09dGhpcy5ob3Jpem9udGFsQWxpZ24pcmV0dXJuInJpZ2h0In1yZXR1cm4gdGhpcy5ob3Jpem9udGFsQWxpZ259LGdldCBfX3Nob3VsZFBvc2l0aW9uKCl7cmV0dXJuKHRoaXMuaG9yaXpvbnRhbEFsaWdufHx0aGlzLnZlcnRpY2FsQWxpZ24pJiZ0aGlzLnBvc2l0aW9uVGFyZ2V0fSxnZXQgX2lzUlRMKCl7cmV0dXJuIHZvaWQgMD09PXRoaXMuX21lbW9pemVkSXNSVEwmJih0aGlzLl9tZW1vaXplZElzUlRMPSJydGwiPT13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzKS5kaXJlY3Rpb24pLHRoaXMuX21lbW9pemVkSXNSVEx9LGF0dGFjaGVkOmZ1bmN0aW9uKCl7dGhpcy5wb3NpdGlvblRhcmdldD10aGlzLnBvc2l0aW9uVGFyZ2V0fHx0aGlzLl9kZWZhdWx0UG9zaXRpb25UYXJnZXQsdGhpcy5hdXRvRml0T25BdHRhY2gmJigibm9uZSI9PT13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzKS5kaXNwbGF5P3NldFRpbWVvdXQoZnVuY3Rpb24oKXt0aGlzLmZpdCgpfS5iaW5kKHRoaXMpKTood2luZG93LlNoYWR5RE9NJiZTaGFkeURPTS5mbHVzaCgpLHRoaXMuZml0KCkpKX0sZGV0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLl9fZGVmZXJyZWRGaXQmJihjbGVhclRpbWVvdXQodGhpcy5fX2RlZmVycmVkRml0KSx0aGlzLl9fZGVmZXJyZWRGaXQ9bnVsbCl9LGZpdDpmdW5jdGlvbigpe3RoaXMucG9zaXRpb24oKSx0aGlzLmNvbnN0cmFpbigpLHRoaXMuY2VudGVyKCl9LF9kaXNjb3ZlckluZm86ZnVuY3Rpb24oKXtpZighdGhpcy5fZml0SW5mbyl7dmFyIHQ9d2luZG93LmdldENvbXB1dGVkU3R5bGUodGhpcyksZT13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLnNpemluZ1RhcmdldCk7dGhpcy5fZml0SW5mbz17aW5saW5lU3R5bGU6e3RvcDp0aGlzLnN0eWxlLnRvcHx8IiIsbGVmdDp0aGlzLnN0eWxlLmxlZnR8fCIiLHBvc2l0aW9uOnRoaXMuc3R5bGUucG9zaXRpb258fCIifSxzaXplcklubGluZVN0eWxlOnttYXhXaWR0aDp0aGlzLnNpemluZ1RhcmdldC5zdHlsZS5tYXhXaWR0aHx8IiIsbWF4SGVpZ2h0OnRoaXMuc2l6aW5nVGFyZ2V0LnN0eWxlLm1heEhlaWdodHx8IiIsYm94U2l6aW5nOnRoaXMuc2l6aW5nVGFyZ2V0LnN0eWxlLmJveFNpemluZ3x8IiJ9LHBvc2l0aW9uZWRCeTp7dmVydGljYWxseToiYXV0byIhPT10LnRvcD8idG9wIjoiYXV0byIhPT10LmJvdHRvbT8iYm90dG9tIjpudWxsLGhvcml6b250YWxseToiYXV0byIhPT10LmxlZnQ/ImxlZnQiOiJhdXRvIiE9PXQucmlnaHQ/InJpZ2h0IjpudWxsfSxzaXplZEJ5OntoZWlnaHQ6Im5vbmUiIT09ZS5tYXhIZWlnaHQsd2lkdGg6Im5vbmUiIT09ZS5tYXhXaWR0aCxtaW5XaWR0aDpwYXJzZUludChlLm1pbldpZHRoLDEwKXx8MCxtaW5IZWlnaHQ6cGFyc2VJbnQoZS5taW5IZWlnaHQsMTApfHwwfSxtYXJnaW46e3RvcDpwYXJzZUludCh0Lm1hcmdpblRvcCwxMCl8fDAscmlnaHQ6cGFyc2VJbnQodC5tYXJnaW5SaWdodCwxMCl8fDAsYm90dG9tOnBhcnNlSW50KHQubWFyZ2luQm90dG9tLDEwKXx8MCxsZWZ0OnBhcnNlSW50KHQubWFyZ2luTGVmdCwxMCl8fDB9fX19LHJlc2V0Rml0OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fZml0SW5mb3x8e307Zm9yKHZhciBlIGluIHQuc2l6ZXJJbmxpbmVTdHlsZSl0aGlzLnNpemluZ1RhcmdldC5zdHlsZVtlXT10LnNpemVySW5saW5lU3R5bGVbZV07Zm9yKHZhciBlIGluIHQuaW5saW5lU3R5bGUpdGhpcy5zdHlsZVtlXT10LmlubGluZVN0eWxlW2VdO3RoaXMuX2ZpdEluZm89bnVsbH0scmVmaXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnNpemluZ1RhcmdldC5zY3JvbGxMZWZ0LGU9dGhpcy5zaXppbmdUYXJnZXQuc2Nyb2xsVG9wO3RoaXMucmVzZXRGaXQoKSx0aGlzLmZpdCgpLHRoaXMuc2l6aW5nVGFyZ2V0LnNjcm9sbExlZnQ9dCx0aGlzLnNpemluZ1RhcmdldC5zY3JvbGxUb3A9ZX0scG9zaXRpb246ZnVuY3Rpb24oKXtpZighdGhpcy5fX3Nob3VsZFBvc2l0aW9uKXJldHVybjt0aGlzLl9kaXNjb3ZlckluZm8oKSx3aW5kb3cuU2hhZHlET00mJndpbmRvdy5TaGFkeURPTS5mbHVzaCgpLHRoaXMuc3R5bGUucG9zaXRpb249ImZpeGVkIix0aGlzLnNpemluZ1RhcmdldC5zdHlsZS5ib3hTaXppbmc9ImJvcmRlci1ib3giLHRoaXMuc3R5bGUubGVmdD0iMHB4Iix0aGlzLnN0eWxlLnRvcD0iMHB4Ijt2YXIgdD10aGlzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGU9dGhpcy5fX2dldE5vcm1hbGl6ZWRSZWN0KHRoaXMucG9zaXRpb25UYXJnZXQpLG49dGhpcy5fX2dldE5vcm1hbGl6ZWRSZWN0KHRoaXMuZml0SW50byk7bGV0IGkscixvLGE7dGhpcy5leHBhbmRTaXppbmdUYXJnZXRGb3JTY3JvbGxiYXJzJiYoaT10aGlzLnNpemluZ1RhcmdldC5vZmZzZXRXaWR0aCxyPXRoaXMuc2l6aW5nVGFyZ2V0Lm9mZnNldEhlaWdodCxvPXRoaXMuc2l6aW5nVGFyZ2V0LmNsaWVudFdpZHRoLGE9dGhpcy5zaXppbmdUYXJnZXQuY2xpZW50SGVpZ2h0KTt2YXIgcz10aGlzLl9maXRJbmZvLm1hcmdpbixsPXRoaXMuX19nZXRQb3NpdGlvbih0aGlzLl9sb2NhbGVIb3Jpem9udGFsQWxpZ24sdGhpcy52ZXJ0aWNhbEFsaWduLHt3aWR0aDp0LndpZHRoK3MubGVmdCtzLnJpZ2h0LGhlaWdodDp0LmhlaWdodCtzLnRvcCtzLmJvdHRvbX0sdCxlLG4pLGM9bC5sZWZ0K3MubGVmdCx1PWwudG9wK3MudG9wLGg9TWF0aC5taW4obi5yaWdodC1zLnJpZ2h0LGMrdC53aWR0aCksZD1NYXRoLm1pbihuLmJvdHRvbS1zLmJvdHRvbSx1K3QuaGVpZ2h0KTtjPU1hdGgubWF4KG4ubGVmdCtzLmxlZnQsTWF0aC5taW4oYyxoLXRoaXMuX2ZpdEluZm8uc2l6ZWRCeS5taW5XaWR0aCkpLHU9TWF0aC5tYXgobi50b3Arcy50b3AsTWF0aC5taW4odSxkLXRoaXMuX2ZpdEluZm8uc2l6ZWRCeS5taW5IZWlnaHQpKTtjb25zdCBwPU1hdGgubWF4KGgtYyx0aGlzLl9maXRJbmZvLnNpemVkQnkubWluV2lkdGgpLGY9TWF0aC5tYXgoZC11LHRoaXMuX2ZpdEluZm8uc2l6ZWRCeS5taW5IZWlnaHQpO3RoaXMuc2l6aW5nVGFyZ2V0LnN0eWxlLm1heFdpZHRoPXArInB4Iix0aGlzLnNpemluZ1RhcmdldC5zdHlsZS5tYXhIZWlnaHQ9ZisicHgiO2NvbnN0IG09Yy10LmxlZnQsZz11LXQudG9wO2lmKHRoaXMuc3R5bGUubGVmdD1gJHttfXB4YCx0aGlzLnN0eWxlLnRvcD1gJHtnfXB4YCx0aGlzLmV4cGFuZFNpemluZ1RhcmdldEZvclNjcm9sbGJhcnMpe2NvbnN0IHQ9dGhpcy5zaXppbmdUYXJnZXQub2Zmc2V0SGVpZ2h0LGU9dC10aGlzLnNpemluZ1RhcmdldC5jbGllbnRIZWlnaHQtKHItYSk7aWYoZT4wKXtjb25zdCBpPU1hdGgubWluKG4uaGVpZ2h0LXMudG9wLXMuYm90dG9tLGYrZSk7dGhpcy5zaXppbmdUYXJnZXQuc3R5bGUubWF4SGVpZ2h0PWAke2l9cHhgO2NvbnN0IHI9dGhpcy5zaXppbmdUYXJnZXQub2Zmc2V0SGVpZ2h0LG89ci10O2xldCBhOyJ0b3AiPT09bC52ZXJ0aWNhbEFsaWduP2E9ZzoibWlkZGxlIj09PWwudmVydGljYWxBbGlnbj9hPWctby8yOiJib3R0b20iPT09bC52ZXJ0aWNhbEFsaWduJiYoYT1nLW8pLGE9TWF0aC5tYXgobi50b3Arcy50b3AsTWF0aC5taW4oYSxuLmJvdHRvbS1zLmJvdHRvbS1yKSksdGhpcy5zdHlsZS50b3A9YCR7YX1weGB9Y29uc3QgYz10aGlzLnNpemluZ1RhcmdldC5vZmZzZXRXaWR0aCx1PWMtdGhpcy5zaXppbmdUYXJnZXQuY2xpZW50V2lkdGgtKGktbyk7aWYodT4wKXtjb25zdCB0PSgoKT0+e2lmKHZvaWQgMCE9PUNhKXJldHVybiBDYTtjb25zdCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO09iamVjdC5hc3NpZ24odC5zdHlsZSx7b3ZlcmZsb3c6ImF1dG8iLHBvc2l0aW9uOiJmaXhlZCIsbGVmdDoiMHB4Iix0b3A6IjBweCIsbWF4V2lkdGg6IjEwMHB4IixtYXhIZWlnaHQ6IjEwMHB4In0pO2NvbnN0IGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7cmV0dXJuIGUuc3R5bGUud2lkdGg9IjIwMHB4IixlLnN0eWxlLmhlaWdodD0iMjAwcHgiLHQuYXBwZW5kQ2hpbGQoZSksZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0KSxDYT1NYXRoLmFicyh0Lm9mZnNldFdpZHRoLTEwMCk+MT90Lm9mZnNldFdpZHRoLXQuY2xpZW50V2lkdGg6MCxkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHQpLENhfSkoKSxlPU1hdGgubWluKG4ud2lkdGgtcy5sZWZ0LXMucmlnaHQscCt1LXQpO3RoaXMuc2l6aW5nVGFyZ2V0LnN0eWxlLm1heFdpZHRoPWAke2V9cHhgO2NvbnN0IGk9dGhpcy5zaXppbmdUYXJnZXQub2Zmc2V0V2lkdGgrdCxyPWktYztsZXQgbzsibGVmdCI9PT1sLmhvcml6b250YWxBbGlnbj9vPW06ImNlbnRlciI9PT1sLmhvcml6b250YWxBbGlnbj9vPW0tci8yOiJyaWdodCI9PT1sLmhvcml6b250YWxBbGlnbiYmKG89bS1yKSxvPU1hdGgubWF4KG4ubGVmdCtzLmxlZnQsTWF0aC5taW4obyxuLnJpZ2h0LXMucmlnaHQtaSkpLHRoaXMuc3R5bGUubGVmdD1gJHtvfXB4YH19fSxjb25zdHJhaW46ZnVuY3Rpb24oKXtpZighdGhpcy5fX3Nob3VsZFBvc2l0aW9uKXt0aGlzLl9kaXNjb3ZlckluZm8oKTt2YXIgdD10aGlzLl9maXRJbmZvO3QucG9zaXRpb25lZEJ5LnZlcnRpY2FsbHl8fCh0aGlzLnN0eWxlLnBvc2l0aW9uPSJmaXhlZCIsdGhpcy5zdHlsZS50b3A9IjBweCIpLHQucG9zaXRpb25lZEJ5Lmhvcml6b250YWxseXx8KHRoaXMuc3R5bGUucG9zaXRpb249ImZpeGVkIix0aGlzLnN0eWxlLmxlZnQ9IjBweCIpLHRoaXMuc2l6aW5nVGFyZ2V0LnN0eWxlLmJveFNpemluZz0iYm9yZGVyLWJveCI7dmFyIGU9dGhpcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTt0LnNpemVkQnkuaGVpZ2h0fHx0aGlzLl9fc2l6ZURpbWVuc2lvbihlLHQucG9zaXRpb25lZEJ5LnZlcnRpY2FsbHksInRvcCIsImJvdHRvbSIsIkhlaWdodCIpLHQuc2l6ZWRCeS53aWR0aHx8dGhpcy5fX3NpemVEaW1lbnNpb24oZSx0LnBvc2l0aW9uZWRCeS5ob3Jpem9udGFsbHksImxlZnQiLCJyaWdodCIsIldpZHRoIil9fSxfc2l6ZURpbWVuc2lvbjpmdW5jdGlvbih0LGUsbixpLHIpe3RoaXMuX19zaXplRGltZW5zaW9uKHQsZSxuLGkscil9LF9fc2l6ZURpbWVuc2lvbjpmdW5jdGlvbih0LGUsbixpLHIpe3ZhciBvPXRoaXMuX2ZpdEluZm8sYT10aGlzLl9fZ2V0Tm9ybWFsaXplZFJlY3QodGhpcy5maXRJbnRvKSxzPSJXaWR0aCI9PT1yP2Eud2lkdGg6YS5oZWlnaHQsbD1lPT09aSxjPSJvZmZzZXQiK3I7dGhpcy5zaXppbmdUYXJnZXQuc3R5bGVbIm1heCIrcl09cy1vLm1hcmdpbltsP246aV0tKGw/cy10W2ldOnRbbl0pLSh0aGlzW2NdLXRoaXMuc2l6aW5nVGFyZ2V0W2NdKSsicHgifSxjZW50ZXI6ZnVuY3Rpb24oKXtpZighdGhpcy5fX3Nob3VsZFBvc2l0aW9uKXt0aGlzLl9kaXNjb3ZlckluZm8oKTt2YXIgdD10aGlzLl9maXRJbmZvLnBvc2l0aW9uZWRCeTtpZighdC52ZXJ0aWNhbGx5fHwhdC5ob3Jpem9udGFsbHkpe3RoaXMuc3R5bGUucG9zaXRpb249ImZpeGVkIix0LnZlcnRpY2FsbHl8fCh0aGlzLnN0eWxlLnRvcD0iMHB4IiksdC5ob3Jpem9udGFsbHl8fCh0aGlzLnN0eWxlLmxlZnQ9IjBweCIpO3ZhciBlPXRoaXMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbj10aGlzLl9fZ2V0Tm9ybWFsaXplZFJlY3QodGhpcy5maXRJbnRvKTtpZighdC52ZXJ0aWNhbGx5KXRoaXMuc3R5bGUudG9wPW4udG9wLWUudG9wKyhuLmhlaWdodC1lLmhlaWdodCkvMisicHgiO2lmKCF0Lmhvcml6b250YWxseSl0aGlzLnN0eWxlLmxlZnQ9bi5sZWZ0LWUubGVmdCsobi53aWR0aC1lLndpZHRoKS8yKyJweCJ9fX0sX19nZXROb3JtYWxpemVkUmVjdDpmdW5jdGlvbih0KXtyZXR1cm4gdD09PWRvY3VtZW50LmRvY3VtZW50RWxlbWVudHx8dD09PXdpbmRvdz97dG9wOjAsbGVmdDowLHdpZHRoOndpbmRvdy5pbm5lcldpZHRoLGhlaWdodDp3aW5kb3cuaW5uZXJIZWlnaHQscmlnaHQ6d2luZG93LmlubmVyV2lkdGgsYm90dG9tOndpbmRvdy5pbm5lckhlaWdodH06dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKX0sX19nZXRPZmZzY3JlZW5BcmVhOmZ1bmN0aW9uKHQsZSxuKXt2YXIgaT1NYXRoLm1pbigwLHQudG9wKStNYXRoLm1pbigwLG4uYm90dG9tLSh0LnRvcCtlLmhlaWdodCkpLHI9TWF0aC5taW4oMCx0LmxlZnQpK01hdGgubWluKDAsbi5yaWdodC0odC5sZWZ0K2Uud2lkdGgpKTtyZXR1cm4gTWF0aC5hYnMoaSkqZS53aWR0aCtNYXRoLmFicyhyKSplLmhlaWdodH0sX19nZXRQb3NpdGlvbjpmdW5jdGlvbih0LGUsbixpLHIsbyl7dmFyIGEscz1be3ZlcnRpY2FsQWxpZ246InRvcCIsaG9yaXpvbnRhbEFsaWduOiJsZWZ0Iix0b3A6ci50b3ArdGhpcy52ZXJ0aWNhbE9mZnNldCxsZWZ0OnIubGVmdCt0aGlzLmhvcml6b250YWxPZmZzZXR9LHt2ZXJ0aWNhbEFsaWduOiJ0b3AiLGhvcml6b250YWxBbGlnbjoicmlnaHQiLHRvcDpyLnRvcCt0aGlzLnZlcnRpY2FsT2Zmc2V0LGxlZnQ6ci5yaWdodC1uLndpZHRoLXRoaXMuaG9yaXpvbnRhbE9mZnNldH0se3ZlcnRpY2FsQWxpZ246ImJvdHRvbSIsaG9yaXpvbnRhbEFsaWduOiJsZWZ0Iix0b3A6ci5ib3R0b20tbi5oZWlnaHQtdGhpcy52ZXJ0aWNhbE9mZnNldCxsZWZ0OnIubGVmdCt0aGlzLmhvcml6b250YWxPZmZzZXR9LHt2ZXJ0aWNhbEFsaWduOiJib3R0b20iLGhvcml6b250YWxBbGlnbjoicmlnaHQiLHRvcDpyLmJvdHRvbS1uLmhlaWdodC10aGlzLnZlcnRpY2FsT2Zmc2V0LGxlZnQ6ci5yaWdodC1uLndpZHRoLXRoaXMuaG9yaXpvbnRhbE9mZnNldH1dO2lmKHRoaXMubm9PdmVybGFwKXtmb3IodmFyIGw9MCxjPXMubGVuZ3RoO2w8YztsKyspe3ZhciB1PXt9O2Zvcih2YXIgaCBpbiBzW2xdKXVbaF09c1tsXVtoXTtzLnB1c2godSl9c1swXS50b3A9c1sxXS50b3ArPXIuaGVpZ2h0LHNbMl0udG9wPXNbM10udG9wLT1yLmhlaWdodCxzWzRdLmxlZnQ9c1s2XS5sZWZ0Kz1yLndpZHRoLHNbNV0ubGVmdD1zWzddLmxlZnQtPXIud2lkdGh9ZT0iYXV0byI9PT1lP251bGw6ZSwodD0iYXV0byI9PT10P251bGw6dCkmJiJjZW50ZXIiIT09dHx8KHMucHVzaCh7dmVydGljYWxBbGlnbjoidG9wIixob3Jpem9udGFsQWxpZ246ImNlbnRlciIsdG9wOnIudG9wK3RoaXMudmVydGljYWxPZmZzZXQrKHRoaXMubm9PdmVybGFwP3IuaGVpZ2h0OjApLGxlZnQ6ci5sZWZ0LWkud2lkdGgvMityLndpZHRoLzIrdGhpcy5ob3Jpem9udGFsT2Zmc2V0fSkscy5wdXNoKHt2ZXJ0aWNhbEFsaWduOiJib3R0b20iLGhvcml6b250YWxBbGlnbjoiY2VudGVyIix0b3A6ci5ib3R0b20tbi5oZWlnaHQtdGhpcy52ZXJ0aWNhbE9mZnNldC0odGhpcy5ub092ZXJsYXA/ci5oZWlnaHQ6MCksbGVmdDpyLmxlZnQtaS53aWR0aC8yK3Iud2lkdGgvMit0aGlzLmhvcml6b250YWxPZmZzZXR9KSksZSYmIm1pZGRsZSIhPT1lfHwocy5wdXNoKHt2ZXJ0aWNhbEFsaWduOiJtaWRkbGUiLGhvcml6b250YWxBbGlnbjoibGVmdCIsdG9wOnIudG9wLWkuaGVpZ2h0LzIrci5oZWlnaHQvMit0aGlzLnZlcnRpY2FsT2Zmc2V0LGxlZnQ6ci5sZWZ0K3RoaXMuaG9yaXpvbnRhbE9mZnNldCsodGhpcy5ub092ZXJsYXA/ci53aWR0aDowKX0pLHMucHVzaCh7dmVydGljYWxBbGlnbjoibWlkZGxlIixob3Jpem9udGFsQWxpZ246InJpZ2h0Iix0b3A6ci50b3AtaS5oZWlnaHQvMityLmhlaWdodC8yK3RoaXMudmVydGljYWxPZmZzZXQsbGVmdDpyLnJpZ2h0LW4ud2lkdGgtdGhpcy5ob3Jpem9udGFsT2Zmc2V0LSh0aGlzLm5vT3ZlcmxhcD9yLndpZHRoOjApfSkpLCJtaWRkbGUiPT09ZSYmImNlbnRlciI9PT10JiZzLnB1c2goe3ZlcnRpY2FsQWxpZ246Im1pZGRsZSIsaG9yaXpvbnRhbEFsaWduOiJjZW50ZXIiLHRvcDpyLnRvcC1pLmhlaWdodC8yK3IuaGVpZ2h0LzIrdGhpcy52ZXJ0aWNhbE9mZnNldCxsZWZ0OnIubGVmdC1pLndpZHRoLzIrci53aWR0aC8yK3RoaXMuaG9yaXpvbnRhbE9mZnNldH0pO2ZvcihsPTA7bDxzLmxlbmd0aDtsKyspe3ZhciBkPXNbbF0scD1kLnZlcnRpY2FsQWxpZ249PT1lLGY9ZC5ob3Jpem9udGFsQWxpZ249PT10O2lmKCF0aGlzLmR5bmFtaWNBbGlnbiYmIXRoaXMubm9PdmVybGFwJiZwJiZmKXthPWQ7YnJlYWt9dmFyIG09KCFlfHxwKSYmKCF0fHxmKTtpZih0aGlzLmR5bmFtaWNBbGlnbnx8bSl7aWYoZC5vZmZzY3JlZW5BcmVhPXRoaXMuX19nZXRPZmZzY3JlZW5BcmVhKGQsbixvKSwwPT09ZC5vZmZzY3JlZW5BcmVhJiZtKXthPWQ7YnJlYWt9dmFyIGc9ZC5vZmZzY3JlZW5BcmVhLShhPWF8fGQpLm9mZnNjcmVlbkFyZWE7KGc8MHx8MD09PWcmJihwfHxmKSkmJihhPWQpfX1yZXR1cm4gYX19OwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTYgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KdmFyIGthPUVsZW1lbnQucHJvdG90eXBlLExhPWthLm1hdGNoZXN8fGthLm1hdGNoZXNTZWxlY3Rvcnx8a2EubW96TWF0Y2hlc1NlbGVjdG9yfHxrYS5tc01hdGNoZXNTZWxlY3Rvcnx8a2Eub01hdGNoZXNTZWxlY3Rvcnx8a2Eud2Via2l0TWF0Y2hlc1NlbGVjdG9yO2NvbnN0IFBhPW5ldyBjbGFzc3tnZXRUYWJiYWJsZU5vZGVzKHQpe3ZhciBlPVtdO3JldHVybiB0aGlzLl9jb2xsZWN0VGFiYmFibGVOb2Rlcyh0LGUpP3RoaXMuX3NvcnRCeVRhYkluZGV4KGUpOmV9aXNGb2N1c2FibGUodCl7cmV0dXJuIExhLmNhbGwodCwiaW5wdXQsIHNlbGVjdCwgdGV4dGFyZWEsIGJ1dHRvbiwgb2JqZWN0Iik/TGEuY2FsbCh0LCI6bm90KFtkaXNhYmxlZF0pIik6TGEuY2FsbCh0LCJhW2hyZWZdLCBhcmVhW2hyZWZdLCBpZnJhbWUsIFt0YWJpbmRleF0sIFtjb250ZW50RWRpdGFibGVdIil9aXNUYWJiYWJsZSh0KXtyZXR1cm4gdGhpcy5pc0ZvY3VzYWJsZSh0KSYmTGEuY2FsbCh0LCc6bm90KFt0YWJpbmRleD0iLTEiXSknKSYmdGhpcy5faXNWaXNpYmxlKHQpfV9ub3JtYWxpemVkVGFiSW5kZXgodCl7aWYodGhpcy5pc0ZvY3VzYWJsZSh0KSl7dmFyIGU9dC5nZXRBdHRyaWJ1dGUoInRhYmluZGV4Iil8fDA7cmV0dXJuIE51bWJlcihlKX1yZXR1cm4tMX1fY29sbGVjdFRhYmJhYmxlTm9kZXModCxlKXtpZih0Lm5vZGVUeXBlIT09Tm9kZS5FTEVNRU5UX05PREUpcmV0dXJuITE7dmFyIG49dDtpZighdGhpcy5faXNWaXNpYmxlKG4pKXJldHVybiExO3ZhciBpLHI9dGhpcy5fbm9ybWFsaXplZFRhYkluZGV4KG4pLG89cj4wO3I+PTAmJmUucHVzaChuKSxpPSJjb250ZW50Ij09PW4ubG9jYWxOYW1lfHwic2xvdCI9PT1uLmxvY2FsTmFtZT9lcihuKS5nZXREaXN0cmlidXRlZE5vZGVzKCk6ZXIobi5yb290fHxuKS5jaGlsZHJlbjtmb3IodmFyIGE9MDthPGkubGVuZ3RoO2ErKylvPXRoaXMuX2NvbGxlY3RUYWJiYWJsZU5vZGVzKGlbYV0sZSl8fG87cmV0dXJuIG99X2lzVmlzaWJsZSh0KXt2YXIgZT10LnN0eWxlO3JldHVybiJoaWRkZW4iIT09ZS52aXNpYmlsaXR5JiYibm9uZSIhPT1lLmRpc3BsYXkmJigiaGlkZGVuIiE9PShlPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHQpKS52aXNpYmlsaXR5JiYibm9uZSIhPT1lLmRpc3BsYXkpfV9zb3J0QnlUYWJJbmRleCh0KXt2YXIgZT10Lmxlbmd0aDtpZihlPDIpcmV0dXJuIHQ7dmFyIG49TWF0aC5jZWlsKGUvMiksaT10aGlzLl9zb3J0QnlUYWJJbmRleCh0LnNsaWNlKDAsbikpLHI9dGhpcy5fc29ydEJ5VGFiSW5kZXgodC5zbGljZShuKSk7cmV0dXJuIHRoaXMuX21lcmdlU29ydEJ5VGFiSW5kZXgoaSxyKX1fbWVyZ2VTb3J0QnlUYWJJbmRleCh0LGUpe2Zvcih2YXIgbj1bXTt0Lmxlbmd0aD4wJiZlLmxlbmd0aD4wOyl0aGlzLl9oYXNMb3dlclRhYk9yZGVyKHRbMF0sZVswXSk/bi5wdXNoKGUuc2hpZnQoKSk6bi5wdXNoKHQuc2hpZnQoKSk7cmV0dXJuIG4uY29uY2F0KHQsZSl9X2hhc0xvd2VyVGFiT3JkZXIodCxlKXt2YXIgbj1NYXRoLm1heCh0LnRhYkluZGV4LDApLGk9TWF0aC5tYXgoZS50YWJJbmRleCwwKTtyZXR1cm4gMD09PW58fDA9PT1pP2k+bjpuPml9fTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovanIoe190ZW1wbGF0ZTp4ZWAKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgICB0b3A6IDA7CiAgICAgICAgbGVmdDogMDsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0taXJvbi1vdmVybGF5LWJhY2tkcm9wLWJhY2tncm91bmQtY29sb3IsICMwMDApOwogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzOwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICAgIEBhcHBseSAtLWlyb24tb3ZlcmxheS1iYWNrZHJvcDsKICAgICAgfQoKICAgICAgOmhvc3QoLm9wZW5lZCkgewogICAgICAgIG9wYWNpdHk6IHZhcigtLWlyb24tb3ZlcmxheS1iYWNrZHJvcC1vcGFjaXR5LCAwLjYpOwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvOwogICAgICAgIEBhcHBseSAtLWlyb24tb3ZlcmxheS1iYWNrZHJvcC1vcGVuZWQ7CiAgICAgIH0KICAgIDwvc3R5bGU+CgogICAgPHNsb3Q+PC9zbG90PgpgLGlzOiJpcm9uLW92ZXJsYXktYmFja2Ryb3AiLHByb3BlcnRpZXM6e29wZW5lZDp7cmVmbGVjdFRvQXR0cmlidXRlOiEwLHR5cGU6Qm9vbGVhbix2YWx1ZTohMSxvYnNlcnZlcjoiX29wZW5lZENoYW5nZWQifX0sbGlzdGVuZXJzOnt0cmFuc2l0aW9uZW5kOiJfb25UcmFuc2l0aW9uZW5kIn0sY3JlYXRlZDpmdW5jdGlvbigpe3RoaXMuX19vcGVuZWRSYWY9bnVsbH0sYXR0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLm9wZW5lZCYmdGhpcy5fb3BlbmVkQ2hhbmdlZCh0aGlzLm9wZW5lZCl9LHByZXBhcmU6ZnVuY3Rpb24oKXt0aGlzLm9wZW5lZCYmIXRoaXMucGFyZW50Tm9kZSYmZXIoZG9jdW1lbnQuYm9keSkuYXBwZW5kQ2hpbGQodGhpcyl9LG9wZW46ZnVuY3Rpb24oKXt0aGlzLm9wZW5lZD0hMH0sY2xvc2U6ZnVuY3Rpb24oKXt0aGlzLm9wZW5lZD0hMX0sY29tcGxldGU6ZnVuY3Rpb24oKXt0aGlzLm9wZW5lZHx8dGhpcy5wYXJlbnROb2RlIT09ZG9jdW1lbnQuYm9keXx8ZXIodGhpcy5wYXJlbnROb2RlKS5yZW1vdmVDaGlsZCh0aGlzKX0sX29uVHJhbnNpdGlvbmVuZDpmdW5jdGlvbih0KXt0JiZ0LnRhcmdldD09PXRoaXMmJnRoaXMuY29tcGxldGUoKX0sX29wZW5lZENoYW5nZWQ6ZnVuY3Rpb24odCl7aWYodCl0aGlzLnByZXBhcmUoKTtlbHNle3ZhciBlPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRoaXMpOyIwcyIhPT1lLnRyYW5zaXRpb25EdXJhdGlvbiYmMCE9ZS5vcGFjaXR5fHx0aGlzLmNvbXBsZXRlKCl9dGhpcy5pc0F0dGFjaGVkJiYodGhpcy5fX29wZW5lZFJhZiYmKHdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9fb3BlbmVkUmFmKSx0aGlzLl9fb3BlbmVkUmFmPW51bGwpLHRoaXMuc2Nyb2xsVG9wPXRoaXMuc2Nyb2xsVG9wLHRoaXMuX19vcGVuZWRSYWY9d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbigpe3RoaXMuX19vcGVuZWRSYWY9bnVsbCx0aGlzLnRvZ2dsZUNsYXNzKCJvcGVuZWQiLHRoaXMub3BlbmVkKX0uYmluZCh0aGlzKSkpfX0pO2NvbnN0IE5hPW5ldwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KY2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLl9vdmVybGF5cz1bXSx0aGlzLl9taW5pbXVtWj0xMDEsdGhpcy5fYmFja2Ryb3BFbGVtZW50PW51bGwsY2koZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCJ0YXAiLChmdW5jdGlvbigpe30pKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ0YXAiLHRoaXMuX29uQ2FwdHVyZUNsaWNrLmJpbmQodGhpcyksITApLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzIix0aGlzLl9vbkNhcHR1cmVGb2N1cy5iaW5kKHRoaXMpLCEwKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIix0aGlzLl9vbkNhcHR1cmVLZXlEb3duLmJpbmQodGhpcyksITApfWdldCBiYWNrZHJvcEVsZW1lbnQoKXtyZXR1cm4gdGhpcy5fYmFja2Ryb3BFbGVtZW50fHwodGhpcy5fYmFja2Ryb3BFbGVtZW50PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlyb24tb3ZlcmxheS1iYWNrZHJvcCIpKSx0aGlzLl9iYWNrZHJvcEVsZW1lbnR9Z2V0IGRlZXBBY3RpdmVFbGVtZW50KCl7dmFyIHQ9ZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtmb3IodCYmdCBpbnN0YW5jZW9mIEVsZW1lbnQhPSExfHwodD1kb2N1bWVudC5ib2R5KTt0LnJvb3QmJmVyKHQucm9vdCkuYWN0aXZlRWxlbWVudDspdD1lcih0LnJvb3QpLmFjdGl2ZUVsZW1lbnQ7cmV0dXJuIHR9X2JyaW5nT3ZlcmxheUF0SW5kZXhUb0Zyb250KHQpe3ZhciBlPXRoaXMuX292ZXJsYXlzW3RdO2lmKGUpe3ZhciBuPXRoaXMuX292ZXJsYXlzLmxlbmd0aC0xLGk9dGhpcy5fb3ZlcmxheXNbbl07aWYoaSYmdGhpcy5fc2hvdWxkQmVCZWhpbmRPdmVybGF5KGUsaSkmJm4tLSwhKHQ+PW4pKXt2YXIgcj1NYXRoLm1heCh0aGlzLmN1cnJlbnRPdmVybGF5WigpLHRoaXMuX21pbmltdW1aKTtmb3IodGhpcy5fZ2V0WihlKTw9ciYmdGhpcy5fYXBwbHlPdmVybGF5WihlLHIpO3Q8bjspdGhpcy5fb3ZlcmxheXNbdF09dGhpcy5fb3ZlcmxheXNbdCsxXSx0Kys7dGhpcy5fb3ZlcmxheXNbbl09ZX19fWFkZE9yUmVtb3ZlT3ZlcmxheSh0KXt0Lm9wZW5lZD90aGlzLmFkZE92ZXJsYXkodCk6dGhpcy5yZW1vdmVPdmVybGF5KHQpfWFkZE92ZXJsYXkodCl7dmFyIGU9dGhpcy5fb3ZlcmxheXMuaW5kZXhPZih0KTtpZihlPj0wKXJldHVybiB0aGlzLl9icmluZ092ZXJsYXlBdEluZGV4VG9Gcm9udChlKSx2b2lkIHRoaXMudHJhY2tCYWNrZHJvcCgpO3ZhciBuPXRoaXMuX292ZXJsYXlzLmxlbmd0aCxpPXRoaXMuX292ZXJsYXlzW24tMV0scj1NYXRoLm1heCh0aGlzLl9nZXRaKGkpLHRoaXMuX21pbmltdW1aKSxvPXRoaXMuX2dldFoodCk7aSYmdGhpcy5fc2hvdWxkQmVCZWhpbmRPdmVybGF5KHQsaSkmJih0aGlzLl9hcHBseU92ZXJsYXlaKGksciksbi0tLHI9TWF0aC5tYXgodGhpcy5fZ2V0Wih0aGlzLl9vdmVybGF5c1tuLTFdKSx0aGlzLl9taW5pbXVtWikpO288PXImJnRoaXMuX2FwcGx5T3ZlcmxheVoodCxyKSx0aGlzLl9vdmVybGF5cy5zcGxpY2UobiwwLHQpLHRoaXMudHJhY2tCYWNrZHJvcCgpfXJlbW92ZU92ZXJsYXkodCl7dmFyIGU9dGhpcy5fb3ZlcmxheXMuaW5kZXhPZih0KTstMSE9PWUmJih0aGlzLl9vdmVybGF5cy5zcGxpY2UoZSwxKSx0aGlzLnRyYWNrQmFja2Ryb3AoKSl9Y3VycmVudE92ZXJsYXkoKXtyZXR1cm4gdGhpcy5fb3ZlcmxheXNbdGhpcy5fb3ZlcmxheXMubGVuZ3RoLTFdfWN1cnJlbnRPdmVybGF5Wigpe3JldHVybiB0aGlzLl9nZXRaKHRoaXMuY3VycmVudE92ZXJsYXkoKSl9ZW5zdXJlTWluaW11bVoodCl7dGhpcy5fbWluaW11bVo9TWF0aC5tYXgodGhpcy5fbWluaW11bVosdCl9Zm9jdXNPdmVybGF5KCl7dmFyIHQ9dGhpcy5jdXJyZW50T3ZlcmxheSgpO3QmJnQuX2FwcGx5Rm9jdXMoKX10cmFja0JhY2tkcm9wKCl7dmFyIHQ9dGhpcy5fb3ZlcmxheVdpdGhCYWNrZHJvcCgpOyh0fHx0aGlzLl9iYWNrZHJvcEVsZW1lbnQpJiYodGhpcy5iYWNrZHJvcEVsZW1lbnQuc3R5bGUuekluZGV4PXRoaXMuX2dldFoodCktMSx0aGlzLmJhY2tkcm9wRWxlbWVudC5vcGVuZWQ9ISF0LHRoaXMuYmFja2Ryb3BFbGVtZW50LnByZXBhcmUoKSl9Z2V0QmFja2Ryb3BzKCl7Zm9yKHZhciB0PVtdLGU9MDtlPHRoaXMuX292ZXJsYXlzLmxlbmd0aDtlKyspdGhpcy5fb3ZlcmxheXNbZV0ud2l0aEJhY2tkcm9wJiZ0LnB1c2godGhpcy5fb3ZlcmxheXNbZV0pO3JldHVybiB0fWJhY2tkcm9wWigpe3JldHVybiB0aGlzLl9nZXRaKHRoaXMuX292ZXJsYXlXaXRoQmFja2Ryb3AoKSktMX1fb3ZlcmxheVdpdGhCYWNrZHJvcCgpe2Zvcih2YXIgdD10aGlzLl9vdmVybGF5cy5sZW5ndGgtMTt0Pj0wO3QtLSlpZih0aGlzLl9vdmVybGF5c1t0XS53aXRoQmFja2Ryb3ApcmV0dXJuIHRoaXMuX292ZXJsYXlzW3RdfV9nZXRaKHQpe3ZhciBlPXRoaXMuX21pbmltdW1aO2lmKHQpe3ZhciBuPU51bWJlcih0LnN0eWxlLnpJbmRleHx8d2luZG93LmdldENvbXB1dGVkU3R5bGUodCkuekluZGV4KTtuPT1uJiYoZT1uKX1yZXR1cm4gZX1fc2V0Wih0LGUpe3Quc3R5bGUuekluZGV4PWV9X2FwcGx5T3ZlcmxheVoodCxlKXt0aGlzLl9zZXRaKHQsZSsyKX1fb3ZlcmxheUluUGF0aCh0KXt0PXR8fFtdO2Zvcih2YXIgZT0wO2U8dC5sZW5ndGg7ZSsrKWlmKHRbZV0uX21hbmFnZXI9PT10aGlzKXJldHVybiB0W2VdfV9vbkNhcHR1cmVDbGljayh0KXt2YXIgZT10aGlzLl9vdmVybGF5cy5sZW5ndGgtMTtpZigtMSE9PWUpZm9yKHZhciBuLGk9ZXIodCkucGF0aDsobj10aGlzLl9vdmVybGF5c1tlXSkmJnRoaXMuX292ZXJsYXlJblBhdGgoaSkhPT1uJiYobi5fb25DYXB0dXJlQ2xpY2sodCksbi5hbGxvd0NsaWNrVGhyb3VnaCk7KWUtLX1fb25DYXB0dXJlRm9jdXModCl7dmFyIGU9dGhpcy5jdXJyZW50T3ZlcmxheSgpO2UmJmUuX29uQ2FwdHVyZUZvY3VzKHQpfV9vbkNhcHR1cmVLZXlEb3duKHQpe3ZhciBlPXRoaXMuY3VycmVudE92ZXJsYXkoKTtlJiYoWG8ua2V5Ym9hcmRFdmVudE1hdGNoZXNLZXlzKHQsImVzYyIpP2UuX29uQ2FwdHVyZUVzYyh0KTpYby5rZXlib2FyZEV2ZW50TWF0Y2hlc0tleXModCwidGFiIikmJmUuX29uQ2FwdHVyZVRhYih0KSl9X3Nob3VsZEJlQmVoaW5kT3ZlcmxheSh0LGUpe3JldHVybiF0LmFsd2F5c09uVG9wJiZlLmFsd2F5c09uVG9wfX07Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqL3ZhciBJYSxSYSxPYT17cGFnZVg6MCxwYWdlWTowfSx6YT1udWxsLERhPVtdLEJhPVsid2hlZWwiLCJtb3VzZXdoZWVsIiwiRE9NTW91c2VTY3JvbGwiLCJ0b3VjaHN0YXJ0IiwidG91Y2htb3ZlIl07ZnVuY3Rpb24gSGEodCl7VmEuaW5kZXhPZih0KT49MHx8KDA9PT1WYS5sZW5ndGgmJihmdW5jdGlvbiBlKCl7SWE9SWF8fFVhLmJpbmQodm9pZCAwKTtmb3IodmFyIHQ9MCxlPUJhLmxlbmd0aDt0PGU7dCsrKWRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoQmFbdF0sSWEse2NhcHR1cmU6ITAscGFzc2l2ZTohMX0pfSkoKSxWYS5wdXNoKHQpLFJhPVZhW1ZhLmxlbmd0aC0xXSl9ZnVuY3Rpb24gRmEodCl7dmFyIGU9VmEuaW5kZXhPZih0KTstMSE9PWUmJihWYS5zcGxpY2UoZSwxKSxSYT1WYVtWYS5sZW5ndGgtMV0sMD09PVZhLmxlbmd0aCYmKGZ1bmN0aW9uIG4oKXtmb3IodmFyIHQ9MCxlPUJhLmxlbmd0aDt0PGU7dCsrKWRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoQmFbdF0sSWEse2NhcHR1cmU6ITAscGFzc2l2ZTohMX0pfSkoKSl9Y29uc3QgVmE9W107ZnVuY3Rpb24gVWEodCl7aWYodC5jYW5jZWxhYmxlJiYoZnVuY3Rpb24gZSh0KXt2YXIgZT1lcih0KS5yb290VGFyZ2V0OyJ0b3VjaG1vdmUiIT09dC50eXBlJiZ6YSE9PWUmJih6YT1lLERhPShmdW5jdGlvbiBuKHQpe2Zvcih2YXIgZT1bXSxuPXQuaW5kZXhPZihSYSksaT0wO2k8PW47aSsrKWlmKHRbaV0ubm9kZVR5cGU9PT1Ob2RlLkVMRU1FTlRfTk9ERSl7dmFyIHI9dFtpXSxvPXIuc3R5bGU7InNjcm9sbCIhPT1vLm92ZXJmbG93JiYiYXV0byIhPT1vLm92ZXJmbG93JiYobz13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShyKSksInNjcm9sbCIhPT1vLm92ZXJmbG93JiYiYXV0byIhPT1vLm92ZXJmbG93fHxlLnB1c2gocil9cmV0dXJuIGV9KShlcih0KS5wYXRoKSk7aWYoIURhLmxlbmd0aClyZXR1cm4hMDtpZigidG91Y2hzdGFydCI9PT10LnR5cGUpcmV0dXJuITE7dmFyIGk9KGZ1bmN0aW9uIHIodCl7dmFyIGU9e2RlbHRhWDp0LmRlbHRhWCxkZWx0YVk6dC5kZWx0YVl9O2lmKCJkZWx0YVgiaW4gdCk7ZWxzZSBpZigid2hlZWxEZWx0YVgiaW4gdCYmIndoZWVsRGVsdGFZImluIHQpZS5kZWx0YVg9LXQud2hlZWxEZWx0YVgsZS5kZWx0YVk9LXQud2hlZWxEZWx0YVk7ZWxzZSBpZigid2hlZWxEZWx0YSJpbiB0KWUuZGVsdGFYPTAsZS5kZWx0YVk9LXQud2hlZWxEZWx0YTtlbHNlIGlmKCJheGlzImluIHQpZS5kZWx0YVg9MT09PXQuYXhpcz90LmRldGFpbDowLGUuZGVsdGFZPTI9PT10LmF4aXM/dC5kZXRhaWw6MDtlbHNlIGlmKHQudGFyZ2V0VG91Y2hlcyl7dmFyIG49dC50YXJnZXRUb3VjaGVzWzBdO2UuZGVsdGFYPU9hLnBhZ2VYLW4ucGFnZVgsZS5kZWx0YVk9T2EucGFnZVktbi5wYWdlWX1yZXR1cm4gZX0KLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovKSh0KTtyZXR1cm4hKGZ1bmN0aW9uIG8odCxlLG4pe2lmKCFlJiYhbilyZXR1cm47Zm9yKHZhciBpPU1hdGguYWJzKG4pPj1NYXRoLmFicyhlKSxyPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBvPXRbcl07aWYoaT9uPDA/by5zY3JvbGxUb3A+MDpvLnNjcm9sbFRvcDxvLnNjcm9sbEhlaWdodC1vLmNsaWVudEhlaWdodDplPDA/by5zY3JvbGxMZWZ0PjA6by5zY3JvbGxMZWZ0PG8uc2Nyb2xsV2lkdGgtby5jbGllbnRXaWR0aClyZXR1cm4gb319KShEYSxpLmRlbHRhWCxpLmRlbHRhWSl9KSh0KSYmdC5wcmV2ZW50RGVmYXVsdCgpLHQudGFyZ2V0VG91Y2hlcyl7dmFyIG49dC50YXJnZXRUb3VjaGVzWzBdO09hLnBhZ2VYPW4ucGFnZVgsT2EucGFnZVk9bi5wYWdlWX19Y29uc3QgamE9e3Byb3BlcnRpZXM6e29wZW5lZDp7b2JzZXJ2ZXI6Il9vcGVuZWRDaGFuZ2VkIix0eXBlOkJvb2xlYW4sdmFsdWU6ITEsbm90aWZ5OiEwfSxjYW5jZWxlZDp7b2JzZXJ2ZXI6Il9jYW5jZWxlZENoYW5nZWQiLHJlYWRPbmx5OiEwLHR5cGU6Qm9vbGVhbix2YWx1ZTohMX0sd2l0aEJhY2tkcm9wOntvYnNlcnZlcjoiX3dpdGhCYWNrZHJvcENoYW5nZWQiLHR5cGU6Qm9vbGVhbn0sbm9BdXRvRm9jdXM6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sbm9DYW5jZWxPbkVzY0tleTp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxub0NhbmNlbE9uT3V0c2lkZUNsaWNrOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LGNsb3NpbmdSZWFzb246e3R5cGU6T2JqZWN0fSxyZXN0b3JlRm9jdXNPbkNsb3NlOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LGFsbG93Q2xpY2tUaHJvdWdoOnt0eXBlOkJvb2xlYW59LGFsd2F5c09uVG9wOnt0eXBlOkJvb2xlYW59LHNjcm9sbEFjdGlvbjp7dHlwZTpTdHJpbmd9LF9tYW5hZ2VyOnt0eXBlOk9iamVjdCx2YWx1ZTpOYX0sX2ZvY3VzZWRDaGlsZDp7dHlwZTpPYmplY3R9fSxsaXN0ZW5lcnM6eyJpcm9uLXJlc2l6ZSI6Il9vbklyb25SZXNpemUifSxvYnNlcnZlcnM6WyJfX3VwZGF0ZVNjcm9sbE9ic2VydmVycyhpc0F0dGFjaGVkLCBvcGVuZWQsIHNjcm9sbEFjdGlvbikiXSxnZXQgYmFja2Ryb3BFbGVtZW50KCl7cmV0dXJuIHRoaXMuX21hbmFnZXIuYmFja2Ryb3BFbGVtZW50fSxnZXQgX2ZvY3VzTm9kZSgpe3JldHVybiB0aGlzLl9mb2N1c2VkQ2hpbGR8fGVyKHRoaXMpLnF1ZXJ5U2VsZWN0b3IoIlthdXRvZm9jdXNdIil8fHRoaXN9LGdldCBfZm9jdXNhYmxlTm9kZXMoKXtyZXR1cm4gUGEuZ2V0VGFiYmFibGVOb2Rlcyh0aGlzKX0scmVhZHk6ZnVuY3Rpb24oKXt0aGlzLl9faXNBbmltYXRpbmc9ITEsdGhpcy5fX3Nob3VsZFJlbW92ZVRhYkluZGV4PSExLHRoaXMuX19maXJzdEZvY3VzYWJsZU5vZGU9dGhpcy5fX2xhc3RGb2N1c2FibGVOb2RlPW51bGwsdGhpcy5fX3JhZnM9e30sdGhpcy5fX3Jlc3RvcmVGb2N1c05vZGU9bnVsbCx0aGlzLl9fc2Nyb2xsVG9wPXRoaXMuX19zY3JvbGxMZWZ0PW51bGwsdGhpcy5fX29uQ2FwdHVyZVNjcm9sbD10aGlzLl9fb25DYXB0dXJlU2Nyb2xsLmJpbmQodGhpcyksdGhpcy5fX3Jvb3ROb2Rlcz1udWxsLHRoaXMuX2Vuc3VyZVNldHVwKCl9LGF0dGFjaGVkOmZ1bmN0aW9uKCl7dGhpcy5vcGVuZWQmJnRoaXMuX29wZW5lZENoYW5nZWQodGhpcy5vcGVuZWQpLHRoaXMuX29ic2VydmVyPWVyKHRoaXMpLm9ic2VydmVOb2Rlcyh0aGlzLl9vbk5vZGVzQ2hhbmdlKX0sZGV0YWNoZWQ6ZnVuY3Rpb24oKXtmb3IodmFyIHQgaW4gdGhpcy5fb2JzZXJ2ZXImJmVyKHRoaXMpLnVub2JzZXJ2ZU5vZGVzKHRoaXMuX29ic2VydmVyKSx0aGlzLl9vYnNlcnZlcj1udWxsLHRoaXMuX19yYWZzKW51bGwhPT10aGlzLl9fcmFmc1t0XSYmY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5fX3JhZnNbdF0pO3RoaXMuX19yYWZzPXt9LHRoaXMuX21hbmFnZXIucmVtb3ZlT3ZlcmxheSh0aGlzKSx0aGlzLl9faXNBbmltYXRpbmcmJih0aGlzLm9wZW5lZD90aGlzLl9maW5pc2hSZW5kZXJPcGVuZWQoKToodGhpcy5fYXBwbHlGb2N1cygpLHRoaXMuX2ZpbmlzaFJlbmRlckNsb3NlZCgpKSl9LHRvZ2dsZTpmdW5jdGlvbigpe3RoaXMuX3NldENhbmNlbGVkKCExKSx0aGlzLm9wZW5lZD0hdGhpcy5vcGVuZWR9LG9wZW46ZnVuY3Rpb24oKXt0aGlzLl9zZXRDYW5jZWxlZCghMSksdGhpcy5vcGVuZWQ9ITB9LGNsb3NlOmZ1bmN0aW9uKCl7dGhpcy5fc2V0Q2FuY2VsZWQoITEpLHRoaXMub3BlbmVkPSExfSxjYW5jZWw6ZnVuY3Rpb24odCl7dGhpcy5maXJlKCJpcm9uLW92ZXJsYXktY2FuY2VsZWQiLHQse2NhbmNlbGFibGU6ITB9KS5kZWZhdWx0UHJldmVudGVkfHwodGhpcy5fc2V0Q2FuY2VsZWQoITApLHRoaXMub3BlbmVkPSExKX0saW52YWxpZGF0ZVRhYmJhYmxlczpmdW5jdGlvbigpe3RoaXMuX19maXJzdEZvY3VzYWJsZU5vZGU9dGhpcy5fX2xhc3RGb2N1c2FibGVOb2RlPW51bGx9LF9lbnN1cmVTZXR1cDpmdW5jdGlvbigpe3RoaXMuX292ZXJsYXlTZXR1cHx8KHRoaXMuX292ZXJsYXlTZXR1cD0hMCx0aGlzLnN0eWxlLm91dGxpbmU9Im5vbmUiLHRoaXMuc3R5bGUuZGlzcGxheT0ibm9uZSIpfSxfb3BlbmVkQ2hhbmdlZDpmdW5jdGlvbih0KXt0P3RoaXMucmVtb3ZlQXR0cmlidXRlKCJhcmlhLWhpZGRlbiIpOnRoaXMuc2V0QXR0cmlidXRlKCJhcmlhLWhpZGRlbiIsInRydWUiKSx0aGlzLmlzQXR0YWNoZWQmJih0aGlzLl9faXNBbmltYXRpbmc9ITAsdGhpcy5fX2RlcmFmKCJfX29wZW5lZENoYW5nZWQiLHRoaXMuX19vcGVuZWRDaGFuZ2VkKSl9LF9jYW5jZWxlZENoYW5nZWQ6ZnVuY3Rpb24oKXt0aGlzLmNsb3NpbmdSZWFzb249dGhpcy5jbG9zaW5nUmVhc29ufHx7fSx0aGlzLmNsb3NpbmdSZWFzb24uY2FuY2VsZWQ9dGhpcy5jYW5jZWxlZH0sX3dpdGhCYWNrZHJvcENoYW5nZWQ6ZnVuY3Rpb24oKXt0aGlzLndpdGhCYWNrZHJvcCYmIXRoaXMuaGFzQXR0cmlidXRlKCJ0YWJpbmRleCIpPyh0aGlzLnNldEF0dHJpYnV0ZSgidGFiaW5kZXgiLCItMSIpLHRoaXMuX19zaG91bGRSZW1vdmVUYWJJbmRleD0hMCk6dGhpcy5fX3Nob3VsZFJlbW92ZVRhYkluZGV4JiYodGhpcy5yZW1vdmVBdHRyaWJ1dGUoInRhYmluZGV4IiksdGhpcy5fX3Nob3VsZFJlbW92ZVRhYkluZGV4PSExKSx0aGlzLm9wZW5lZCYmdGhpcy5pc0F0dGFjaGVkJiZ0aGlzLl9tYW5hZ2VyLnRyYWNrQmFja2Ryb3AoKX0sX3ByZXBhcmVSZW5kZXJPcGVuZWQ6ZnVuY3Rpb24oKXt0aGlzLl9fcmVzdG9yZUZvY3VzTm9kZT10aGlzLl9tYW5hZ2VyLmRlZXBBY3RpdmVFbGVtZW50LHRoaXMuX3ByZXBhcmVQb3NpdGlvbmluZygpLHRoaXMucmVmaXQoKSx0aGlzLl9maW5pc2hQb3NpdGlvbmluZygpLHRoaXMubm9BdXRvRm9jdXMmJmRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ9PT10aGlzLl9mb2N1c05vZGUmJih0aGlzLl9mb2N1c05vZGUuYmx1cigpLHRoaXMuX19yZXN0b3JlRm9jdXNOb2RlLmZvY3VzKCkpfSxfcmVuZGVyT3BlbmVkOmZ1bmN0aW9uKCl7dGhpcy5fZmluaXNoUmVuZGVyT3BlbmVkKCl9LF9yZW5kZXJDbG9zZWQ6ZnVuY3Rpb24oKXt0aGlzLl9maW5pc2hSZW5kZXJDbG9zZWQoKX0sX2ZpbmlzaFJlbmRlck9wZW5lZDpmdW5jdGlvbigpe3RoaXMubm90aWZ5UmVzaXplKCksdGhpcy5fX2lzQW5pbWF0aW5nPSExLHRoaXMuZmlyZSgiaXJvbi1vdmVybGF5LW9wZW5lZCIpfSxfZmluaXNoUmVuZGVyQ2xvc2VkOmZ1bmN0aW9uKCl7dGhpcy5zdHlsZS5kaXNwbGF5PSJub25lIix0aGlzLnN0eWxlLnpJbmRleD0iIix0aGlzLm5vdGlmeVJlc2l6ZSgpLHRoaXMuX19pc0FuaW1hdGluZz0hMSx0aGlzLmZpcmUoImlyb24tb3ZlcmxheS1jbG9zZWQiLHRoaXMuY2xvc2luZ1JlYXNvbil9LF9wcmVwYXJlUG9zaXRpb25pbmc6ZnVuY3Rpb24oKXt0aGlzLnN0eWxlLnRyYW5zaXRpb249dGhpcy5zdHlsZS53ZWJraXRUcmFuc2l0aW9uPSJub25lIix0aGlzLnN0eWxlLnRyYW5zZm9ybT10aGlzLnN0eWxlLndlYmtpdFRyYW5zZm9ybT0ibm9uZSIsdGhpcy5zdHlsZS5kaXNwbGF5PSIifSxfZmluaXNoUG9zaXRpb25pbmc6ZnVuY3Rpb24oKXt0aGlzLnN0eWxlLmRpc3BsYXk9Im5vbmUiLHRoaXMuc2Nyb2xsVG9wPXRoaXMuc2Nyb2xsVG9wLHRoaXMuc3R5bGUudHJhbnNpdGlvbj10aGlzLnN0eWxlLndlYmtpdFRyYW5zaXRpb249IiIsdGhpcy5zdHlsZS50cmFuc2Zvcm09dGhpcy5zdHlsZS53ZWJraXRUcmFuc2Zvcm09IiIsdGhpcy5zdHlsZS5kaXNwbGF5PSIiLHRoaXMuc2Nyb2xsVG9wPXRoaXMuc2Nyb2xsVG9wfSxfYXBwbHlGb2N1czpmdW5jdGlvbigpe2lmKHRoaXMub3BlbmVkKXRoaXMubm9BdXRvRm9jdXN8fHRoaXMuX2ZvY3VzTm9kZS5mb2N1cygpO2Vsc2V7aWYodGhpcy5yZXN0b3JlRm9jdXNPbkNsb3NlJiZ0aGlzLl9fcmVzdG9yZUZvY3VzTm9kZSl7dmFyIHQ9dGhpcy5fbWFuYWdlci5kZWVwQWN0aXZlRWxlbWVudDsodD09PWRvY3VtZW50LmJvZHl8fEdhKHRoaXMsdCkpJiZ0aGlzLl9fcmVzdG9yZUZvY3VzTm9kZS5mb2N1cygpfXRoaXMuX19yZXN0b3JlRm9jdXNOb2RlPW51bGwsdGhpcy5fZm9jdXNOb2RlLmJsdXIoKSx0aGlzLl9mb2N1c2VkQ2hpbGQ9bnVsbH19LF9vbkNhcHR1cmVDbGljazpmdW5jdGlvbih0KXt0aGlzLm5vQ2FuY2VsT25PdXRzaWRlQ2xpY2t8fHRoaXMuY2FuY2VsKHQpfSxfb25DYXB0dXJlRm9jdXM6ZnVuY3Rpb24odCl7aWYodGhpcy53aXRoQmFja2Ryb3Ape3ZhciBlPWVyKHQpLnBhdGg7LTE9PT1lLmluZGV4T2YodGhpcyk/KHQuc3RvcFByb3BhZ2F0aW9uKCksdGhpcy5fYXBwbHlGb2N1cygpKTp0aGlzLl9mb2N1c2VkQ2hpbGQ9ZVswXX19LF9vbkNhcHR1cmVFc2M6ZnVuY3Rpb24odCl7dGhpcy5ub0NhbmNlbE9uRXNjS2V5fHx0aGlzLmNhbmNlbCh0KX0sX29uQ2FwdHVyZVRhYjpmdW5jdGlvbih0KXtpZih0aGlzLndpdGhCYWNrZHJvcCl7dGhpcy5fX2Vuc3VyZUZpcnN0TGFzdEZvY3VzYWJsZXMoKTt2YXIgZT10LnNoaWZ0S2V5LG49ZT90aGlzLl9fZmlyc3RGb2N1c2FibGVOb2RlOnRoaXMuX19sYXN0Rm9jdXNhYmxlTm9kZSxpPWU/dGhpcy5fX2xhc3RGb2N1c2FibGVOb2RlOnRoaXMuX19maXJzdEZvY3VzYWJsZU5vZGUscj0hMTtpZihuPT09aSlyPSEwO2Vsc2V7dmFyIG89dGhpcy5fbWFuYWdlci5kZWVwQWN0aXZlRWxlbWVudDtyPW89PT1ufHxvPT09dGhpc31yJiYodC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuX2ZvY3VzZWRDaGlsZD1pLHRoaXMuX2FwcGx5Rm9jdXMoKSl9fSxfb25Jcm9uUmVzaXplOmZ1bmN0aW9uKCl7dGhpcy5vcGVuZWQmJiF0aGlzLl9faXNBbmltYXRpbmcmJnRoaXMuX19kZXJhZigicmVmaXQiLHRoaXMucmVmaXQpfSxfb25Ob2Rlc0NoYW5nZTpmdW5jdGlvbigpe3RoaXMub3BlbmVkJiYhdGhpcy5fX2lzQW5pbWF0aW5nJiYodGhpcy5pbnZhbGlkYXRlVGFiYmFibGVzKCksdGhpcy5ub3RpZnlSZXNpemUoKSl9LF9fZW5zdXJlRmlyc3RMYXN0Rm9jdXNhYmxlczpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2ZvY3VzYWJsZU5vZGVzO3RoaXMuX19maXJzdEZvY3VzYWJsZU5vZGU9dFswXSx0aGlzLl9fbGFzdEZvY3VzYWJsZU5vZGU9dFt0Lmxlbmd0aC0xXX0sX19vcGVuZWRDaGFuZ2VkOmZ1bmN0aW9uKCl7dGhpcy5vcGVuZWQ/KHRoaXMuX3ByZXBhcmVSZW5kZXJPcGVuZWQoKSx0aGlzLl9tYW5hZ2VyLmFkZE92ZXJsYXkodGhpcyksdGhpcy5fYXBwbHlGb2N1cygpLHRoaXMuX3JlbmRlck9wZW5lZCgpKToodGhpcy5fbWFuYWdlci5yZW1vdmVPdmVybGF5KHRoaXMpLHRoaXMuX2FwcGx5Rm9jdXMoKSx0aGlzLl9yZW5kZXJDbG9zZWQoKSl9LF9fZGVyYWY6ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLl9fcmFmcztudWxsIT09blt0XSYmY2FuY2VsQW5pbWF0aW9uRnJhbWUoblt0XSksblt0XT1yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24gaSgpe25bdF09bnVsbCxlLmNhbGwodGhpcyl9LmJpbmQodGhpcykpfSxfX3VwZGF0ZVNjcm9sbE9ic2VydmVyczpmdW5jdGlvbih0LGUsbil7dCYmZSYmdGhpcy5fX2lzVmFsaWRTY3JvbGxBY3Rpb24obik/KCJsb2NrIj09PW4mJih0aGlzLl9fc2F2ZVNjcm9sbFBvc2l0aW9uKCksSGEodGhpcykpLHRoaXMuX19hZGRTY3JvbGxMaXN0ZW5lcnMoKSk6KEZhKHRoaXMpLHRoaXMuX19yZW1vdmVTY3JvbGxMaXN0ZW5lcnMoKSl9LF9fYWRkU2Nyb2xsTGlzdGVuZXJzOmZ1bmN0aW9uKCl7aWYoIXRoaXMuX19yb290Tm9kZXMpe2lmKHRoaXMuX19yb290Tm9kZXM9W10sbSlmb3IodmFyIHQ9dGhpczt0Oyl0Lm5vZGVUeXBlPT09Tm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFJiZ0Lmhvc3QmJnRoaXMuX19yb290Tm9kZXMucHVzaCh0KSx0PXQuaG9zdHx8dC5hc3NpZ25lZFNsb3R8fHQucGFyZW50Tm9kZTt0aGlzLl9fcm9vdE5vZGVzLnB1c2goZG9jdW1lbnQpfXRoaXMuX19yb290Tm9kZXMuZm9yRWFjaCgoZnVuY3Rpb24odCl7dC5hZGRFdmVudExpc3RlbmVyKCJzY3JvbGwiLHRoaXMuX19vbkNhcHR1cmVTY3JvbGwse2NhcHR1cmU6ITAscGFzc2l2ZTohMH0pfSksdGhpcyl9LF9fcmVtb3ZlU2Nyb2xsTGlzdGVuZXJzOmZ1bmN0aW9uKCl7dGhpcy5fX3Jvb3ROb2RlcyYmdGhpcy5fX3Jvb3ROb2Rlcy5mb3JFYWNoKChmdW5jdGlvbih0KXt0LnJlbW92ZUV2ZW50TGlzdGVuZXIoInNjcm9sbCIsdGhpcy5fX29uQ2FwdHVyZVNjcm9sbCx7Y2FwdHVyZTohMCxwYXNzaXZlOiEwfSl9KSx0aGlzKSx0aGlzLmlzQXR0YWNoZWR8fCh0aGlzLl9fcm9vdE5vZGVzPW51bGwpfSxfX2lzVmFsaWRTY3JvbGxBY3Rpb246ZnVuY3Rpb24odCl7cmV0dXJuImxvY2siPT09dHx8InJlZml0Ij09PXR8fCJjYW5jZWwiPT09dH0sX19vbkNhcHR1cmVTY3JvbGw6ZnVuY3Rpb24odCl7aWYoISh0aGlzLl9faXNBbmltYXRpbmd8fGVyKHQpLnBhdGguaW5kZXhPZih0aGlzKT49MCkpc3dpdGNoKHRoaXMuc2Nyb2xsQWN0aW9uKXtjYXNlImxvY2siOnRoaXMuX19yZXN0b3JlU2Nyb2xsUG9zaXRpb24oKTticmVhaztjYXNlInJlZml0Ijp0aGlzLl9fZGVyYWYoInJlZml0Iix0aGlzLnJlZml0KTticmVhaztjYXNlImNhbmNlbCI6dGhpcy5jYW5jZWwodCl9fSxfX3NhdmVTY3JvbGxQb3NpdGlvbjpmdW5jdGlvbigpe2RvY3VtZW50LnNjcm9sbGluZ0VsZW1lbnQ/KHRoaXMuX19zY3JvbGxUb3A9ZG9jdW1lbnQuc2Nyb2xsaW5nRWxlbWVudC5zY3JvbGxUb3AsdGhpcy5fX3Njcm9sbExlZnQ9ZG9jdW1lbnQuc2Nyb2xsaW5nRWxlbWVudC5zY3JvbGxMZWZ0KToodGhpcy5fX3Njcm9sbFRvcD1NYXRoLm1heChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wLGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wKSx0aGlzLl9fc2Nyb2xsTGVmdD1NYXRoLm1heChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdCxkb2N1bWVudC5ib2R5LnNjcm9sbExlZnQpKX0sX19yZXN0b3JlU2Nyb2xsUG9zaXRpb246ZnVuY3Rpb24oKXtkb2N1bWVudC5zY3JvbGxpbmdFbGVtZW50Pyhkb2N1bWVudC5zY3JvbGxpbmdFbGVtZW50LnNjcm9sbFRvcD10aGlzLl9fc2Nyb2xsVG9wLGRvY3VtZW50LnNjcm9sbGluZ0VsZW1lbnQuc2Nyb2xsTGVmdD10aGlzLl9fc2Nyb2xsTGVmdCk6KGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3A9ZG9jdW1lbnQuYm9keS5zY3JvbGxUb3A9dGhpcy5fX3Njcm9sbFRvcCxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdD1kb2N1bWVudC5ib2R5LnNjcm9sbExlZnQ9dGhpcy5fX3Njcm9sbExlZnQpfX0sR2E9KHQsZSk9Pntmb3IobGV0IGk9ZTtpO2k9KG49aSkuYXNzaWduZWRTbG90fHxuLnBhcmVudE5vZGV8fG4uaG9zdClpZihpPT09dClyZXR1cm4hMDt2YXIgbjtyZXR1cm4hMX0sV2E9W0FhLENvLGphXSxxYT17aG9zdEF0dHJpYnV0ZXM6e3JvbGU6ImRpYWxvZyIsdGFiaW5kZXg6Ii0xIn0scHJvcGVydGllczp7bW9kYWw6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sX19yZWFkaWVkOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9fSxvYnNlcnZlcnM6WyJfbW9kYWxDaGFuZ2VkKG1vZGFsLCBfX3JlYWRpZWQpIl0sbGlzdGVuZXJzOnt0YXA6Il9vbkRpYWxvZ0NsaWNrIn0scmVhZHk6ZnVuY3Rpb24oKXt0aGlzLl9fcHJldk5vQ2FuY2VsT25PdXRzaWRlQ2xpY2s9dGhpcy5ub0NhbmNlbE9uT3V0c2lkZUNsaWNrLHRoaXMuX19wcmV2Tm9DYW5jZWxPbkVzY0tleT10aGlzLm5vQ2FuY2VsT25Fc2NLZXksdGhpcy5fX3ByZXZXaXRoQmFja2Ryb3A9dGhpcy53aXRoQmFja2Ryb3AsdGhpcy5fX3JlYWRpZWQ9ITB9LF9tb2RhbENoYW5nZWQ6ZnVuY3Rpb24odCxlKXtlJiYodD8odGhpcy5fX3ByZXZOb0NhbmNlbE9uT3V0c2lkZUNsaWNrPXRoaXMubm9DYW5jZWxPbk91dHNpZGVDbGljayx0aGlzLl9fcHJldk5vQ2FuY2VsT25Fc2NLZXk9dGhpcy5ub0NhbmNlbE9uRXNjS2V5LHRoaXMuX19wcmV2V2l0aEJhY2tkcm9wPXRoaXMud2l0aEJhY2tkcm9wLHRoaXMubm9DYW5jZWxPbk91dHNpZGVDbGljaz0hMCx0aGlzLm5vQ2FuY2VsT25Fc2NLZXk9ITAsdGhpcy53aXRoQmFja2Ryb3A9ITApOih0aGlzLm5vQ2FuY2VsT25PdXRzaWRlQ2xpY2s9dGhpcy5ub0NhbmNlbE9uT3V0c2lkZUNsaWNrJiZ0aGlzLl9fcHJldk5vQ2FuY2VsT25PdXRzaWRlQ2xpY2ssdGhpcy5ub0NhbmNlbE9uRXNjS2V5PXRoaXMubm9DYW5jZWxPbkVzY0tleSYmdGhpcy5fX3ByZXZOb0NhbmNlbE9uRXNjS2V5LHRoaXMud2l0aEJhY2tkcm9wPXRoaXMud2l0aEJhY2tkcm9wJiZ0aGlzLl9fcHJldldpdGhCYWNrZHJvcCkpfSxfdXBkYXRlQ2xvc2luZ1JlYXNvbkNvbmZpcm1lZDpmdW5jdGlvbih0KXt0aGlzLmNsb3NpbmdSZWFzb249dGhpcy5jbG9zaW5nUmVhc29ufHx7fSx0aGlzLmNsb3NpbmdSZWFzb24uY29uZmlybWVkPXR9LF9vbkRpYWxvZ0NsaWNrOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1lcih0KS5wYXRoLG49MCxpPWUuaW5kZXhPZih0aGlzKTtuPGk7bisrKXt2YXIgcj1lW25dO2lmKHIuaGFzQXR0cmlidXRlJiYoci5oYXNBdHRyaWJ1dGUoImRpYWxvZy1kaXNtaXNzIil8fHIuaGFzQXR0cmlidXRlKCJkaWFsb2ctY29uZmlybSIpKSl7dGhpcy5fdXBkYXRlQ2xvc2luZ1JlYXNvbkNvbmZpcm1lZChyLmhhc0F0dHJpYnV0ZSgiZGlhbG9nLWNvbmZpcm0iKSksdGhpcy5jbG9zZSgpLHQuc3RvcFByb3BhZ2F0aW9uKCk7YnJlYWt9fX19OwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KanIoe190ZW1wbGF0ZTp4ZWAKICAgIDxzdHlsZSBpbmNsdWRlPSJwYXBlci1kaWFsb2ctc2hhcmVkLXN0eWxlcyI+PC9zdHlsZT4KICAgIDxzbG90Pjwvc2xvdD4KYCxpczoicGFwZXItZGlhbG9nIixiZWhhdmlvcnM6W1tXYSxxYV0sVGFdLGxpc3RlbmVyczp7Im5lb24tYW5pbWF0aW9uLWZpbmlzaCI6Il9vbk5lb25BbmltYXRpb25GaW5pc2gifSxfcmVuZGVyT3BlbmVkOmZ1bmN0aW9uKCl7dGhpcy5jYW5jZWxBbmltYXRpb24oKSx0aGlzLnBsYXlBbmltYXRpb24oImVudHJ5Iil9LF9yZW5kZXJDbG9zZWQ6ZnVuY3Rpb24oKXt0aGlzLmNhbmNlbEFuaW1hdGlvbigpLHRoaXMucGxheUFuaW1hdGlvbigiZXhpdCIpfSxfb25OZW9uQW5pbWF0aW9uRmluaXNoOmZ1bmN0aW9uKCl7dGhpcy5vcGVuZWQ/dGhpcy5fZmluaXNoUmVuZGVyT3BlbmVkKCk6dGhpcy5fZmluaXNoUmVuZGVyQ2xvc2VkKCl9fSksCi8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpqcih7X3RlbXBsYXRlOnhlYAogICAgPHN0eWxlPgoKICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIEBhcHBseSAtLWxheW91dC1yZWxhdGl2ZTsKICAgICAgfQoKICAgICAgOmhvc3QoLmlzLXNjcm9sbGVkOm5vdCg6Zmlyc3QtY2hpbGQpKTo6YmVmb3JlIHsKICAgICAgICBjb250ZW50OiAnJzsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgdG9wOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgaGVpZ2h0OiAxcHg7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZGl2aWRlci1jb2xvcik7CiAgICAgIH0KCiAgICAgIDpob3N0KC5jYW4tc2Nyb2xsOm5vdCguc2Nyb2xsZWQtdG8tYm90dG9tKTpub3QoOmxhc3QtY2hpbGQpKTo6YWZ0ZXIgewogICAgICAgIGNvbnRlbnQ6ICcnOwogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICBib3R0b206IDA7CiAgICAgICAgbGVmdDogMDsKICAgICAgICByaWdodDogMDsKICAgICAgICBoZWlnaHQ6IDFweDsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kaXZpZGVyLWNvbG9yKTsKICAgICAgfQoKICAgICAgLnNjcm9sbGFibGUgewogICAgICAgIHBhZGRpbmc6IDAgMjRweDsKCiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LXNjcm9sbDsKICAgICAgICBAYXBwbHkgLS1wYXBlci1kaWFsb2ctc2Nyb2xsYWJsZTsKICAgICAgfQoKICAgICAgLmZpdCB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWZpdDsKICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8ZGl2IGlkPSJzY3JvbGxhYmxlIiBjbGFzcz0ic2Nyb2xsYWJsZSIgb24tc2Nyb2xsPSJ1cGRhdGVTY3JvbGxTdGF0ZSI+CiAgICAgIDxzbG90Pjwvc2xvdD4KICAgIDwvZGl2PgpgLGlzOiJwYXBlci1kaWFsb2ctc2Nyb2xsYWJsZSIscHJvcGVydGllczp7ZGlhbG9nRWxlbWVudDp7dHlwZTpPYmplY3R9fSxnZXQgc2Nyb2xsVGFyZ2V0KCl7cmV0dXJuIHRoaXMuJC5zY3JvbGxhYmxlfSxyZWFkeTpmdW5jdGlvbigpe3RoaXMuX2Vuc3VyZVRhcmdldCgpLHRoaXMuY2xhc3NMaXN0LmFkZCgibm8tcGFkZGluZyIpfSxhdHRhY2hlZDpmdW5jdGlvbigpe3RoaXMuX2Vuc3VyZVRhcmdldCgpLHJlcXVlc3RBbmltYXRpb25GcmFtZSh0aGlzLnVwZGF0ZVNjcm9sbFN0YXRlLmJpbmQodGhpcykpfSx1cGRhdGVTY3JvbGxTdGF0ZTpmdW5jdGlvbigpe3RoaXMudG9nZ2xlQ2xhc3MoImlzLXNjcm9sbGVkIix0aGlzLnNjcm9sbFRhcmdldC5zY3JvbGxUb3A+MCksdGhpcy50b2dnbGVDbGFzcygiY2FuLXNjcm9sbCIsdGhpcy5zY3JvbGxUYXJnZXQub2Zmc2V0SGVpZ2h0PHRoaXMuc2Nyb2xsVGFyZ2V0LnNjcm9sbEhlaWdodCksdGhpcy50b2dnbGVDbGFzcygic2Nyb2xsZWQtdG8tYm90dG9tIix0aGlzLnNjcm9sbFRhcmdldC5zY3JvbGxUb3ArdGhpcy5zY3JvbGxUYXJnZXQub2Zmc2V0SGVpZ2h0Pj10aGlzLnNjcm9sbFRhcmdldC5zY3JvbGxIZWlnaHQpfSxfZW5zdXJlVGFyZ2V0OmZ1bmN0aW9uKCl7dGhpcy5kaWFsb2dFbGVtZW50PXRoaXMuZGlhbG9nRWxlbWVudHx8dGhpcy5wYXJlbnRFbGVtZW50LHRoaXMuZGlhbG9nRWxlbWVudCYmdGhpcy5kaWFsb2dFbGVtZW50LmJlaGF2aW9ycyYmdGhpcy5kaWFsb2dFbGVtZW50LmJlaGF2aW9ycy5pbmRleE9mKHFhKT49MD8odGhpcy5kaWFsb2dFbGVtZW50LnNpemluZ1RhcmdldD10aGlzLnNjcm9sbFRhcmdldCx0aGlzLnNjcm9sbFRhcmdldC5jbGFzc0xpc3QucmVtb3ZlKCJmaXQiKSk6dGhpcy5kaWFsb2dFbGVtZW50JiZ0aGlzLnNjcm9sbFRhcmdldC5jbGFzc0xpc3QuYWRkKCJmaXQiKX19KTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNvbnN0IFlhPWpyKHtfdGVtcGxhdGU6eGVgCiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgcG9zaXRpb246IGZpeGVkOwogICAgICAgIGNsaXA6IHJlY3QoMHB4LDBweCwwcHgsMHB4KTsKICAgICAgfQogICAgPC9zdHlsZT4KICAgIDxkaXYgYXJpYS1saXZlJD0iW1ttb2RlXV0iPltbX3RleHRdXTwvZGl2PgpgLGlzOiJpcm9uLWExMXktYW5ub3VuY2VyIixwcm9wZXJ0aWVzOnttb2RlOnt0eXBlOlN0cmluZyx2YWx1ZToicG9saXRlIn0sdGltZW91dDp7dHlwZTpOdW1iZXIsdmFsdWU6MTUwfSxfdGV4dDp7dHlwZTpTdHJpbmcsdmFsdWU6IiJ9fSxjcmVhdGVkOmZ1bmN0aW9uKCl7WWEuaW5zdGFuY2V8fChZYS5pbnN0YW5jZT10aGlzKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJpcm9uLWFubm91bmNlIix0aGlzLl9vbklyb25Bbm5vdW5jZS5iaW5kKHRoaXMpKX0sYW5ub3VuY2U6ZnVuY3Rpb24odCl7dGhpcy5fdGV4dD0iIix0aGlzLmFzeW5jKChmdW5jdGlvbigpe3RoaXMuX3RleHQ9dH0pLHRoaXMudGltZW91dCl9LF9vbklyb25Bbm5vdW5jZTpmdW5jdGlvbih0KXt0LmRldGFpbCYmdC5kZXRhaWwudGV4dCYmdGhpcy5hbm5vdW5jZSh0LmRldGFpbC50ZXh0KX19KTtZYS5pbnN0YW5jZT1udWxsLFlhLnJlcXVlc3RBdmFpbGFiaWxpdHk9ZnVuY3Rpb24oKXtZYS5pbnN0YW5jZXx8KFlhLmluc3RhbmNlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlyb24tYTExeS1hbm5vdW5jZXIiKSksZG9jdW1lbnQuYm9keT9kb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKFlhLmluc3RhbmNlKTpkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwoZnVuY3Rpb24oKXtkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKFlhLmluc3RhbmNlKX0pKX0sCi8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpqcih7X3RlbXBsYXRlOnhlYAogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICB9CiAgICA8L3N0eWxlPgogICAgPHNsb3QgaWQ9ImNvbnRlbnQiPjwvc2xvdD4KYCxpczoiaXJvbi1pbnB1dCIsYmVoYXZpb3JzOlt5YV0scHJvcGVydGllczp7YmluZFZhbHVlOnt0eXBlOlN0cmluZyx2YWx1ZToiIn0sdmFsdWU6e3R5cGU6U3RyaW5nLGNvbXB1dGVkOiJfY29tcHV0ZVZhbHVlKGJpbmRWYWx1ZSkifSxhbGxvd2VkUGF0dGVybjp7dHlwZTpTdHJpbmd9LGF1dG9WYWxpZGF0ZTp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxfaW5wdXRFbGVtZW50Ok9iamVjdH0sb2JzZXJ2ZXJzOlsiX2JpbmRWYWx1ZUNoYW5nZWQoYmluZFZhbHVlLCBfaW5wdXRFbGVtZW50KSJdLGxpc3RlbmVyczp7aW5wdXQ6Il9vbklucHV0IixrZXlwcmVzczoiX29uS2V5cHJlc3MifSxjcmVhdGVkOmZ1bmN0aW9uKCl7WWEucmVxdWVzdEF2YWlsYWJpbGl0eSgpLHRoaXMuX3ByZXZpb3VzVmFsaWRJbnB1dD0iIix0aGlzLl9wYXR0ZXJuQWxyZWFkeUNoZWNrZWQ9ITF9LGF0dGFjaGVkOmZ1bmN0aW9uKCl7dGhpcy5fb2JzZXJ2ZXI9ZXIodGhpcykub2JzZXJ2ZU5vZGVzKGZ1bmN0aW9uKHQpe3RoaXMuX2luaXRTbG90dGVkSW5wdXQoKX0uYmluZCh0aGlzKSl9LGRldGFjaGVkOmZ1bmN0aW9uKCl7dGhpcy5fb2JzZXJ2ZXImJihlcih0aGlzKS51bm9ic2VydmVOb2Rlcyh0aGlzLl9vYnNlcnZlciksdGhpcy5fb2JzZXJ2ZXI9bnVsbCl9LGdldCBpbnB1dEVsZW1lbnQoKXtyZXR1cm4gdGhpcy5faW5wdXRFbGVtZW50fSxfaW5pdFNsb3R0ZWRJbnB1dDpmdW5jdGlvbigpe3RoaXMuX2lucHV0RWxlbWVudD10aGlzLmdldEVmZmVjdGl2ZUNoaWxkcmVuKClbMF0sdGhpcy5pbnB1dEVsZW1lbnQmJnRoaXMuaW5wdXRFbGVtZW50LnZhbHVlJiYodGhpcy5iaW5kVmFsdWU9dGhpcy5pbnB1dEVsZW1lbnQudmFsdWUpLHRoaXMuZmlyZSgiaXJvbi1pbnB1dC1yZWFkeSIpfSxnZXQgX3BhdHRlcm5SZWdFeHAoKXt2YXIgdDtpZih0aGlzLmFsbG93ZWRQYXR0ZXJuKXQ9bmV3IFJlZ0V4cCh0aGlzLmFsbG93ZWRQYXR0ZXJuKTtlbHNlIHN3aXRjaCh0aGlzLmlucHV0RWxlbWVudC50eXBlKXtjYXNlIm51bWJlciI6dD0vWzAtOS4sZS1dL31yZXR1cm4gdH0sX2JpbmRWYWx1ZUNoYW5nZWQ6ZnVuY3Rpb24odCxlKXtlJiYodm9pZCAwPT09dD9lLnZhbHVlPW51bGw6dCE9PWUudmFsdWUmJih0aGlzLmlucHV0RWxlbWVudC52YWx1ZT10KSx0aGlzLmF1dG9WYWxpZGF0ZSYmdGhpcy52YWxpZGF0ZSgpLHRoaXMuZmlyZSgiYmluZC12YWx1ZS1jaGFuZ2VkIix7dmFsdWU6dH0pKX0sX29uSW5wdXQ6ZnVuY3Rpb24oKXt0aGlzLmFsbG93ZWRQYXR0ZXJuJiYhdGhpcy5fcGF0dGVybkFscmVhZHlDaGVja2VkJiYodGhpcy5fY2hlY2tQYXR0ZXJuVmFsaWRpdHkoKXx8KHRoaXMuX2Fubm91bmNlSW52YWxpZENoYXJhY3RlcigiSW52YWxpZCBzdHJpbmcgb2YgY2hhcmFjdGVycyBub3QgZW50ZXJlZC4iKSx0aGlzLmlucHV0RWxlbWVudC52YWx1ZT10aGlzLl9wcmV2aW91c1ZhbGlkSW5wdXQpKTt0aGlzLmJpbmRWYWx1ZT10aGlzLl9wcmV2aW91c1ZhbGlkSW5wdXQ9dGhpcy5pbnB1dEVsZW1lbnQudmFsdWUsdGhpcy5fcGF0dGVybkFscmVhZHlDaGVja2VkPSExfSxfaXNQcmludGFibGU6ZnVuY3Rpb24odCl7cmV0dXJuISg4PT10LmtleUNvZGV8fDk9PXQua2V5Q29kZXx8MTM9PXQua2V5Q29kZXx8Mjc9PXQua2V5Q29kZXx8MD09dC5jaGFyQ29kZSYmKDE5PT10LmtleUNvZGV8fDIwPT10LmtleUNvZGV8fDQ1PT10LmtleUNvZGV8fDQ2PT10LmtleUNvZGV8fDE0ND09dC5rZXlDb2RlfHwxNDU9PXQua2V5Q29kZXx8dC5rZXlDb2RlPjMyJiZ0LmtleUNvZGU8NDF8fHQua2V5Q29kZT4xMTEmJnQua2V5Q29kZTwxMjQpKX0sX29uS2V5cHJlc3M6ZnVuY3Rpb24odCl7aWYodGhpcy5hbGxvd2VkUGF0dGVybnx8Im51bWJlciI9PT10aGlzLmlucHV0RWxlbWVudC50eXBlKXt2YXIgZT10aGlzLl9wYXR0ZXJuUmVnRXhwO2lmKGUmJiEodC5tZXRhS2V5fHx0LmN0cmxLZXl8fHQuYWx0S2V5KSl7dGhpcy5fcGF0dGVybkFscmVhZHlDaGVja2VkPSEwO3ZhciBuPVN0cmluZy5mcm9tQ2hhckNvZGUodC5jaGFyQ29kZSk7dGhpcy5faXNQcmludGFibGUodCkmJiFlLnRlc3QobikmJih0LnByZXZlbnREZWZhdWx0KCksdGhpcy5fYW5ub3VuY2VJbnZhbGlkQ2hhcmFjdGVyKCJJbnZhbGlkIGNoYXJhY3RlciAiK24rIiBub3QgZW50ZXJlZC4iKSl9fX0sX2NoZWNrUGF0dGVyblZhbGlkaXR5OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fcGF0dGVyblJlZ0V4cDtpZighdClyZXR1cm4hMDtmb3IodmFyIGU9MDtlPHRoaXMuaW5wdXRFbGVtZW50LnZhbHVlLmxlbmd0aDtlKyspaWYoIXQudGVzdCh0aGlzLmlucHV0RWxlbWVudC52YWx1ZVtlXSkpcmV0dXJuITE7cmV0dXJuITB9LHZhbGlkYXRlOmZ1bmN0aW9uKCl7aWYoIXRoaXMuaW5wdXRFbGVtZW50KXJldHVybiB0aGlzLmludmFsaWQ9ITEsITA7dmFyIHQ9dGhpcy5pbnB1dEVsZW1lbnQuY2hlY2tWYWxpZGl0eSgpO3JldHVybiB0JiYodGhpcy5yZXF1aXJlZCYmIiI9PT10aGlzLmJpbmRWYWx1ZT90PSExOnRoaXMuaGFzVmFsaWRhdG9yKCkmJih0PXlhLnZhbGlkYXRlLmNhbGwodGhpcyx0aGlzLmJpbmRWYWx1ZSkpKSx0aGlzLmludmFsaWQ9IXQsdGhpcy5maXJlKCJpcm9uLWlucHV0LXZhbGlkYXRlIiksdH0sX2Fubm91bmNlSW52YWxpZENoYXJhY3RlcjpmdW5jdGlvbih0KXt0aGlzLmZpcmUoImlyb24tYW5ub3VuY2UiLHt0ZXh0OnR9KX0sX2NvbXB1dGVWYWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdH19KTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNvbnN0IFhhPXthdHRhY2hlZDpmdW5jdGlvbigpe3RoaXMuZmlyZSgiYWRkb24tYXR0YWNoZWQiKX0sdXBkYXRlOmZ1bmN0aW9uKHQpe319OwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi9qcih7X3RlbXBsYXRlOnhlYAogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIGZsb2F0OiByaWdodDsKCiAgICAgICAgQGFwcGx5IC0tcGFwZXItZm9udC1jYXB0aW9uOwogICAgICAgIEBhcHBseSAtLXBhcGVyLWlucHV0LWNoYXItY291bnRlcjsKICAgICAgfQoKICAgICAgOmhvc3QoW2hpZGRlbl0pIHsKICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgICAgIH0KCiAgICAgIDpob3N0KDpkaXIocnRsKSkgewogICAgICAgIGZsb2F0OiBsZWZ0OwogICAgICB9CiAgICA8L3N0eWxlPgoKICAgIDxzcGFuPltbX2NoYXJDb3VudGVyU3RyXV08L3NwYW4+CmAsaXM6InBhcGVyLWlucHV0LWNoYXItY291bnRlciIsYmVoYXZpb3JzOltYYV0scHJvcGVydGllczp7X2NoYXJDb3VudGVyU3RyOnt0eXBlOlN0cmluZyx2YWx1ZToiMCJ9fSx1cGRhdGU6ZnVuY3Rpb24odCl7aWYodC5pbnB1dEVsZW1lbnQpe3QudmFsdWU9dC52YWx1ZXx8IiI7dmFyIGU9dC52YWx1ZS50b1N0cmluZygpLmxlbmd0aC50b1N0cmluZygpO3QuaW5wdXRFbGVtZW50Lmhhc0F0dHJpYnV0ZSgibWF4bGVuZ3RoIikmJihlKz0iLyIrdC5pbnB1dEVsZW1lbnQuZ2V0QXR0cmlidXRlKCJtYXhsZW5ndGgiKSksdGhpcy5fY2hhckNvdW50ZXJTdHI9ZX19fSk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCAkYT14ZWAKPGN1c3RvbS1zdHlsZT4KICA8c3R5bGUgaXM9ImN1c3RvbS1zdHlsZSI+CiAgICBodG1sIHsKICAgICAgLS1wYXBlci1pbnB1dC1jb250YWluZXItc2hhcmVkLWlucHV0LXN0eWxlOiB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOyAvKiB0byBtYWtlIGEgc3RhY2tpbmcgY29udGV4dCAqLwogICAgICAgIG91dGxpbmU6IG5vbmU7CiAgICAgICAgYm94LXNoYWRvdzogbm9uZTsKICAgICAgICBwYWRkaW5nOiAwOwogICAgICAgIG1hcmdpbjogMDsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBtYXgtd2lkdGg6IDEwMCU7CiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci1pbnB1dC1jb250YWluZXItaW5wdXQtY29sb3IsIHZhcigtLXByaW1hcnktdGV4dC1jb2xvcikpOwogICAgICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKICAgICAgICB0ZXh0LWFsaWduOiBpbmhlcml0OwogICAgICAgIHZlcnRpY2FsLWFsaWduOiB2YXIoLS1wYXBlci1pbnB1dC1jb250YWluZXItaW5wdXQtYWxpZ24sIGJvdHRvbSk7CgogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtc3ViaGVhZDsKICAgICAgfTsKICAgIH0KICA8L3N0eWxlPgo8L2N1c3RvbS1zdHlsZT4KYDskYS5zZXRBdHRyaWJ1dGUoInN0eWxlIiwiZGlzcGxheTogbm9uZTsiKSxkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKCRhLmNvbnRlbnQpLGpyKHtfdGVtcGxhdGU6eGVgCiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBwYWRkaW5nOiA4cHggMDsKICAgICAgICBAYXBwbHkgLS1wYXBlci1pbnB1dC1jb250YWluZXI7CiAgICAgIH0KCiAgICAgIDpob3N0KFtpbmxpbmVdKSB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICB9CgogICAgICA6aG9zdChbZGlzYWJsZWRdKSB7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgb3BhY2l0eTogMC4zMzsKCiAgICAgICAgQGFwcGx5IC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWRpc2FibGVkOwogICAgICB9CgogICAgICA6aG9zdChbaGlkZGVuXSkgewogICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICAgICAgfQoKICAgICAgW2hpZGRlbl0gewogICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICAgICAgfQoKICAgICAgLmZsb2F0ZWQtbGFiZWwtcGxhY2Vob2xkZXIgewogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY2FwdGlvbjsKICAgICAgfQoKICAgICAgLnVuZGVybGluZSB7CiAgICAgICAgaGVpZ2h0OiAycHg7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICB9CgogICAgICAuZm9jdXNlZC1saW5lIHsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtZml0OwogICAgICAgIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCB2YXIoLS1wYXBlci1pbnB1dC1jb250YWluZXItZm9jdXMtY29sb3IsIHZhcigtLXByaW1hcnktY29sb3IpKTsKCiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXIgY2VudGVyOwogICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciBjZW50ZXI7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlM2QoMCwxLDEpOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUzZCgwLDEsMSk7CgogICAgICAgIEBhcHBseSAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci11bmRlcmxpbmUtZm9jdXM7CiAgICAgIH0KCiAgICAgIC51bmRlcmxpbmUuaXMtaGlnaGxpZ2h0ZWQgLmZvY3VzZWQtbGluZSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IG5vbmU7CiAgICAgICAgdHJhbnNmb3JtOiBub25lOwogICAgICAgIC13ZWJraXQtdHJhbnNpdGlvbjogLXdlYmtpdC10cmFuc2Zvcm0gMC4yNXM7CiAgICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMjVzOwoKICAgICAgICBAYXBwbHkgLS1wYXBlci10cmFuc2l0aW9uLWVhc2luZzsKICAgICAgfQoKICAgICAgLnVuZGVybGluZS5pcy1pbnZhbGlkIC5mb2N1c2VkLWxpbmUgewogICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWludmFsaWQtY29sb3IsIHZhcigtLWVycm9yLWNvbG9yKSk7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IG5vbmU7CiAgICAgICAgdHJhbnNmb3JtOiBub25lOwogICAgICAgIC13ZWJraXQtdHJhbnNpdGlvbjogLXdlYmtpdC10cmFuc2Zvcm0gMC4yNXM7CiAgICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMjVzOwoKICAgICAgICBAYXBwbHkgLS1wYXBlci10cmFuc2l0aW9uLWVhc2luZzsKICAgICAgfQoKICAgICAgLnVuZm9jdXNlZC1saW5lIHsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtZml0OwogICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1wYXBlci1pbnB1dC1jb250YWluZXItY29sb3IsIHZhcigtLXNlY29uZGFyeS10ZXh0LWNvbG9yKSk7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItaW5wdXQtY29udGFpbmVyLXVuZGVybGluZTsKICAgICAgfQoKICAgICAgOmhvc3QoW2Rpc2FibGVkXSkgLnVuZm9jdXNlZC1saW5lIHsKICAgICAgICBib3JkZXItYm90dG9tOiAxcHggZGFzaGVkOwogICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWNvbG9yLCB2YXIoLS1zZWNvbmRhcnktdGV4dC1jb2xvcikpOwogICAgICAgIEBhcHBseSAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci11bmRlcmxpbmUtZGlzYWJsZWQ7CiAgICAgIH0KCiAgICAgIC5pbnB1dC13cmFwcGVyIHsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtaG9yaXpvbnRhbDsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtY2VudGVyOwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgfQoKICAgICAgLmlucHV0LWNvbnRlbnQgewogICAgICAgIEBhcHBseSAtLWxheW91dC1mbGV4LWF1dG87CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LXJlbGF0aXZlOwogICAgICAgIG1heC13aWR0aDogMTAwJTsKICAgICAgfQoKICAgICAgLmlucHV0LWNvbnRlbnQgOjpzbG90dGVkKGxhYmVsKSwKICAgICAgLmlucHV0LWNvbnRlbnQgOjpzbG90dGVkKC5wYXBlci1pbnB1dC1sYWJlbCkgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDA7CiAgICAgICAgbGVmdDogMDsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBmb250OiBpbmhlcml0OwogICAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci1pbnB1dC1jb250YWluZXItY29sb3IsIHZhcigtLXNlY29uZGFyeS10ZXh0LWNvbG9yKSk7CiAgICAgICAgLXdlYmtpdC10cmFuc2l0aW9uOiAtd2Via2l0LXRyYW5zZm9ybSAwLjI1cywgd2lkdGggMC4yNXM7CiAgICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMjVzLCB3aWR0aCAwLjI1czsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IGxlZnQgdG9wOwogICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IGxlZnQgdG9wOwogICAgICAgIC8qIEZpeCBmb3Igc2FmYXJpIG5vdCBmb2N1c2luZyAwLWhlaWdodCBkYXRlL3RpbWUgaW5wdXRzIHdpdGggLXdlYmtpdC1hcHBlcmFuY2U6IG5vbmU7ICovCiAgICAgICAgbWluLWhlaWdodDogMXB4OwoKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LWNvbW1vbi1ub3dyYXA7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItZm9udC1zdWJoZWFkOwogICAgICAgIEBhcHBseSAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1sYWJlbDsKICAgICAgICBAYXBwbHkgLS1wYXBlci10cmFuc2l0aW9uLWVhc2luZzsKICAgICAgfQoKCiAgICAgIC5pbnB1dC1jb250ZW50IDo6c2xvdHRlZChsYWJlbCk6YmVmb3JlLAogICAgICAuaW5wdXQtY29udGVudCA6OnNsb3R0ZWQoLnBhcGVyLWlucHV0LWxhYmVsKTpiZWZvcmUgewogICAgICAgIEBhcHBseSAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1sYWJlbC1iZWZvcmU7CiAgICAgIH0KCiAgICAgIC5pbnB1dC1jb250ZW50IDo6c2xvdHRlZChsYWJlbCk6YWZ0ZXIsCiAgICAgIC5pbnB1dC1jb250ZW50IDo6c2xvdHRlZCgucGFwZXItaW5wdXQtbGFiZWwpOmFmdGVyIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1pbnB1dC1jb250YWluZXItbGFiZWwtYWZ0ZXI7CiAgICAgIH0KCiAgICAgIC5pbnB1dC1jb250ZW50LmxhYmVsLWlzLWZsb2F0aW5nIDo6c2xvdHRlZChsYWJlbCksCiAgICAgIC5pbnB1dC1jb250ZW50LmxhYmVsLWlzLWZsb2F0aW5nIDo6c2xvdHRlZCgucGFwZXItaW5wdXQtbGFiZWwpIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNzUlKSBzY2FsZSgwLjc1KTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTc1JSkgc2NhbGUoMC43NSk7CgogICAgICAgIC8qIFNpbmNlIHdlIHNjYWxlIHRvIDc1LzEwMCBvZiB0aGUgc2l6ZSwgd2UgYWN0dWFsbHkgaGF2ZSAxMDAvNzUgb2YgdGhlCiAgICAgICAgb3JpZ2luYWwgc3BhY2Ugbm93IGF2YWlsYWJsZSAqLwogICAgICAgIHdpZHRoOiAxMzMlOwoKICAgICAgICBAYXBwbHkgLS1wYXBlci1pbnB1dC1jb250YWluZXItbGFiZWwtZmxvYXRpbmc7CiAgICAgIH0KCiAgICAgIDpob3N0KDpkaXIocnRsKSkgLmlucHV0LWNvbnRlbnQubGFiZWwtaXMtZmxvYXRpbmcgOjpzbG90dGVkKGxhYmVsKSwKICAgICAgOmhvc3QoOmRpcihydGwpKSAuaW5wdXQtY29udGVudC5sYWJlbC1pcy1mbG9hdGluZyA6OnNsb3R0ZWQoLnBhcGVyLWlucHV0LWxhYmVsKSB7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgbGVmdDogYXV0bzsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IHJpZ2h0IHRvcDsKICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiByaWdodCB0b3A7CiAgICAgIH0KCiAgICAgIC5pbnB1dC1jb250ZW50LmxhYmVsLWlzLWhpZ2hsaWdodGVkIDo6c2xvdHRlZChsYWJlbCksCiAgICAgIC5pbnB1dC1jb250ZW50LmxhYmVsLWlzLWhpZ2hsaWdodGVkIDo6c2xvdHRlZCgucGFwZXItaW5wdXQtbGFiZWwpIHsKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWZvY3VzLWNvbG9yLCB2YXIoLS1wcmltYXJ5LWNvbG9yKSk7CgogICAgICAgIEBhcHBseSAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1sYWJlbC1mb2N1czsKICAgICAgfQoKICAgICAgLmlucHV0LWNvbnRlbnQuaXMtaW52YWxpZCA6OnNsb3R0ZWQobGFiZWwpLAogICAgICAuaW5wdXQtY29udGVudC5pcy1pbnZhbGlkIDo6c2xvdHRlZCgucGFwZXItaW5wdXQtbGFiZWwpIHsKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWludmFsaWQtY29sb3IsIHZhcigtLWVycm9yLWNvbG9yKSk7CiAgICAgIH0KCiAgICAgIC5pbnB1dC1jb250ZW50LmxhYmVsLWlzLWhpZGRlbiA6OnNsb3R0ZWQobGFiZWwpLAogICAgICAuaW5wdXQtY29udGVudC5sYWJlbC1pcy1oaWRkZW4gOjpzbG90dGVkKC5wYXBlci1pbnB1dC1sYWJlbCkgewogICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKICAgICAgfQoKICAgICAgLmlucHV0LWNvbnRlbnQgOjpzbG90dGVkKGlucHV0KSwKICAgICAgLmlucHV0LWNvbnRlbnQgOjpzbG90dGVkKGlyb24taW5wdXQpLAogICAgICAuaW5wdXQtY29udGVudCA6OnNsb3R0ZWQodGV4dGFyZWEpLAogICAgICAuaW5wdXQtY29udGVudCA6OnNsb3R0ZWQoaXJvbi1hdXRvZ3Jvdy10ZXh0YXJlYSksCiAgICAgIC5pbnB1dC1jb250ZW50IDo6c2xvdHRlZCgucGFwZXItaW5wdXQtaW5wdXQpIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1pbnB1dC1jb250YWluZXItc2hhcmVkLWlucHV0LXN0eWxlOwogICAgICAgIC8qIFRoZSBhcHBseSBzaGltIGRvZXNuJ3QgYXBwbHkgdGhlIG5lc3RlZCBjb2xvciBjdXN0b20gcHJvcGVydHksCiAgICAgICAgICBzbyB3ZSBoYXZlIHRvIHJlLWFwcGx5IGl0IGhlcmUuICovCiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1pbnB1dC1jb2xvciwgdmFyKC0tcHJpbWFyeS10ZXh0LWNvbG9yKSk7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWlucHV0OwogICAgICB9CgogICAgICAuaW5wdXQtY29udGVudCA6OnNsb3R0ZWQoaW5wdXQpOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uLAogICAgICAuaW5wdXQtY29udGVudCA6OnNsb3R0ZWQoaW5wdXQpOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1pbnB1dC1jb250YWluZXItaW5wdXQtd2Via2l0LXNwaW5uZXI7CiAgICAgIH0KCiAgICAgIC5pbnB1dC1jb250ZW50LmZvY3VzZWQgOjpzbG90dGVkKGlucHV0KSwKICAgICAgLmlucHV0LWNvbnRlbnQuZm9jdXNlZCA6OnNsb3R0ZWQoaXJvbi1pbnB1dCksCiAgICAgIC5pbnB1dC1jb250ZW50LmZvY3VzZWQgOjpzbG90dGVkKHRleHRhcmVhKSwKICAgICAgLmlucHV0LWNvbnRlbnQuZm9jdXNlZCA6OnNsb3R0ZWQoaXJvbi1hdXRvZ3Jvdy10ZXh0YXJlYSksCiAgICAgIC5pbnB1dC1jb250ZW50LmZvY3VzZWQgOjpzbG90dGVkKC5wYXBlci1pbnB1dC1pbnB1dCkgewogICAgICAgIEBhcHBseSAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1pbnB1dC1mb2N1czsKICAgICAgfQoKICAgICAgLmlucHV0LWNvbnRlbnQuaXMtaW52YWxpZCA6OnNsb3R0ZWQoaW5wdXQpLAogICAgICAuaW5wdXQtY29udGVudC5pcy1pbnZhbGlkIDo6c2xvdHRlZChpcm9uLWlucHV0KSwKICAgICAgLmlucHV0LWNvbnRlbnQuaXMtaW52YWxpZCA6OnNsb3R0ZWQodGV4dGFyZWEpLAogICAgICAuaW5wdXQtY29udGVudC5pcy1pbnZhbGlkIDo6c2xvdHRlZChpcm9uLWF1dG9ncm93LXRleHRhcmVhKSwKICAgICAgLmlucHV0LWNvbnRlbnQuaXMtaW52YWxpZCA6OnNsb3R0ZWQoLnBhcGVyLWlucHV0LWlucHV0KSB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWlucHV0LWludmFsaWQ7CiAgICAgIH0KCiAgICAgIC5wcmVmaXggOjpzbG90dGVkKCopIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItZm9udC1zdWJoZWFkOwogICAgICAgIEBhcHBseSAtLWxheW91dC1mbGV4LW5vbmU7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItaW5wdXQtcHJlZml4OwogICAgICB9CgogICAgICAuc3VmZml4IDo6c2xvdHRlZCgqKSB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtc3ViaGVhZDsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtZmxleC1ub25lOwoKICAgICAgICBAYXBwbHkgLS1wYXBlci1pbnB1dC1zdWZmaXg7CiAgICAgIH0KCiAgICAgIC8qIEZpcmVmb3ggc2V0cyBhIG1pbi13aWR0aCBvbiB0aGUgaW5wdXQsIHdoaWNoIGNhbiBjYXVzZSBsYXlvdXQgaXNzdWVzICovCiAgICAgIC5pbnB1dC1jb250ZW50IDo6c2xvdHRlZChpbnB1dCkgewogICAgICAgIG1pbi13aWR0aDogMDsKICAgICAgfQoKICAgICAgLmlucHV0LWNvbnRlbnQgOjpzbG90dGVkKHRleHRhcmVhKSB7CiAgICAgICAgcmVzaXplOiBub25lOwogICAgICB9CgogICAgICAuYWRkLW9uLWNvbnRlbnQgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgfQoKICAgICAgLmFkZC1vbi1jb250ZW50LmlzLWludmFsaWQgOjpzbG90dGVkKCopIHsKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWludmFsaWQtY29sb3IsIHZhcigtLWVycm9yLWNvbG9yKSk7CiAgICAgIH0KCiAgICAgIC5hZGQtb24tY29udGVudC5pcy1oaWdobGlnaHRlZCA6OnNsb3R0ZWQoKikgewogICAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci1pbnB1dC1jb250YWluZXItZm9jdXMtY29sb3IsIHZhcigtLXByaW1hcnktY29sb3IpKTsKICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8ZGl2IGNsYXNzPSJmbG9hdGVkLWxhYmVsLXBsYWNlaG9sZGVyIiBhcmlhLWhpZGRlbj0idHJ1ZSIgaGlkZGVuPSJbW25vTGFiZWxGbG9hdF1dIj4mbmJzcDs8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJpbnB1dC13cmFwcGVyIj4KICAgICAgPHNwYW4gY2xhc3M9InByZWZpeCI+PHNsb3QgbmFtZT0icHJlZml4Ij48L3Nsb3Q+PC9zcGFuPgoKICAgICAgPGRpdiBjbGFzcyQ9IltbX2NvbXB1dGVJbnB1dENvbnRlbnRDbGFzcyhub0xhYmVsRmxvYXQsYWx3YXlzRmxvYXRMYWJlbCxmb2N1c2VkLGludmFsaWQsX2lucHV0SGFzQ29udGVudCldXSIgaWQ9ImxhYmVsQW5kSW5wdXRDb250YWluZXIiPgogICAgICAgIDxzbG90IG5hbWU9ImxhYmVsIj48L3Nsb3Q+CiAgICAgICAgPHNsb3QgbmFtZT0iaW5wdXQiPjwvc2xvdD4KICAgICAgPC9kaXY+CgogICAgICA8c3BhbiBjbGFzcz0ic3VmZml4Ij48c2xvdCBuYW1lPSJzdWZmaXgiPjwvc2xvdD48L3NwYW4+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzJD0iW1tfY29tcHV0ZVVuZGVybGluZUNsYXNzKGZvY3VzZWQsaW52YWxpZCldXSI+CiAgICAgIDxkaXYgY2xhc3M9InVuZm9jdXNlZC1saW5lIj48L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iZm9jdXNlZC1saW5lIj48L2Rpdj4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3MkPSJbW19jb21wdXRlQWRkT25Db250ZW50Q2xhc3MoZm9jdXNlZCxpbnZhbGlkKV1dIj4KICAgICAgPHNsb3QgbmFtZT0iYWRkLW9uIj48L3Nsb3Q+CiAgICA8L2Rpdj4KYCxpczoicGFwZXItaW5wdXQtY29udGFpbmVyIixwcm9wZXJ0aWVzOntub0xhYmVsRmxvYXQ6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sYWx3YXlzRmxvYXRMYWJlbDp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxhdHRyRm9yVmFsdWU6e3R5cGU6U3RyaW5nLHZhbHVlOiJiaW5kLXZhbHVlIn0sYXV0b1ZhbGlkYXRlOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LGludmFsaWQ6e29ic2VydmVyOiJfaW52YWxpZENoYW5nZWQiLHR5cGU6Qm9vbGVhbix2YWx1ZTohMX0sZm9jdXNlZDp7cmVhZE9ubHk6ITAsdHlwZTpCb29sZWFuLHZhbHVlOiExLG5vdGlmeTohMH0sX2FkZG9uczp7dHlwZTpBcnJheX0sX2lucHV0SGFzQ29udGVudDp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxfaW5wdXRTZWxlY3Rvcjp7dHlwZTpTdHJpbmcsdmFsdWU6ImlucHV0LGlyb24taW5wdXQsdGV4dGFyZWEsLnBhcGVyLWlucHV0LWlucHV0In0sX2JvdW5kT25Gb2N1czp7dHlwZTpGdW5jdGlvbix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9vbkZvY3VzLmJpbmQodGhpcyl9fSxfYm91bmRPbkJsdXI6e3R5cGU6RnVuY3Rpb24sdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb25CbHVyLmJpbmQodGhpcyl9fSxfYm91bmRPbklucHV0Ont0eXBlOkZ1bmN0aW9uLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX29uSW5wdXQuYmluZCh0aGlzKX19LF9ib3VuZFZhbHVlQ2hhbmdlZDp7dHlwZTpGdW5jdGlvbix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9vblZhbHVlQ2hhbmdlZC5iaW5kKHRoaXMpfX19LGxpc3RlbmVyczp7ImFkZG9uLWF0dGFjaGVkIjoiX29uQWRkb25BdHRhY2hlZCIsImlyb24taW5wdXQtdmFsaWRhdGUiOiJfb25Jcm9uSW5wdXRWYWxpZGF0ZSJ9LGdldCBfdmFsdWVDaGFuZ2VkRXZlbnQoKXtyZXR1cm4gdGhpcy5hdHRyRm9yVmFsdWUrIi1jaGFuZ2VkIn0sZ2V0IF9wcm9wZXJ0eUZvclZhbHVlKCl7cmV0dXJuIHN0KHRoaXMuYXR0ckZvclZhbHVlKX0sZ2V0IF9pbnB1dEVsZW1lbnQoKXtyZXR1cm4gZXIodGhpcykucXVlcnlTZWxlY3Rvcih0aGlzLl9pbnB1dFNlbGVjdG9yKX0sZ2V0IF9pbnB1dEVsZW1lbnRWYWx1ZSgpe3JldHVybiB0aGlzLl9pbnB1dEVsZW1lbnRbdGhpcy5fcHJvcGVydHlGb3JWYWx1ZV18fHRoaXMuX2lucHV0RWxlbWVudC52YWx1ZX0scmVhZHk6ZnVuY3Rpb24oKXt0aGlzLl9faXNGaXJzdFZhbHVlVXBkYXRlPSEwLHRoaXMuX2FkZG9uc3x8KHRoaXMuX2FkZG9ucz1bXSksdGhpcy5hZGRFdmVudExpc3RlbmVyKCJmb2N1cyIsdGhpcy5fYm91bmRPbkZvY3VzLCEwKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoImJsdXIiLHRoaXMuX2JvdW5kT25CbHVyLCEwKX0sYXR0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLmF0dHJGb3JWYWx1ZT90aGlzLl9pbnB1dEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcih0aGlzLl92YWx1ZUNoYW5nZWRFdmVudCx0aGlzLl9ib3VuZFZhbHVlQ2hhbmdlZCk6dGhpcy5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsdGhpcy5fb25JbnB1dCksdGhpcy5faW5wdXRFbGVtZW50VmFsdWUmJiIiIT10aGlzLl9pbnB1dEVsZW1lbnRWYWx1ZT90aGlzLl9oYW5kbGVWYWx1ZUFuZEF1dG9WYWxpZGF0ZSh0aGlzLl9pbnB1dEVsZW1lbnQpOnRoaXMuX2hhbmRsZVZhbHVlKHRoaXMuX2lucHV0RWxlbWVudCl9LF9vbkFkZG9uQXR0YWNoZWQ6ZnVuY3Rpb24odCl7dGhpcy5fYWRkb25zfHwodGhpcy5fYWRkb25zPVtdKTt2YXIgZT10LnRhcmdldDstMT09PXRoaXMuX2FkZG9ucy5pbmRleE9mKGUpJiYodGhpcy5fYWRkb25zLnB1c2goZSksdGhpcy5pc0F0dGFjaGVkJiZ0aGlzLl9oYW5kbGVWYWx1ZSh0aGlzLl9pbnB1dEVsZW1lbnQpKX0sX29uRm9jdXM6ZnVuY3Rpb24oKXt0aGlzLl9zZXRGb2N1c2VkKCEwKX0sX29uQmx1cjpmdW5jdGlvbigpe3RoaXMuX3NldEZvY3VzZWQoITEpLHRoaXMuX2hhbmRsZVZhbHVlQW5kQXV0b1ZhbGlkYXRlKHRoaXMuX2lucHV0RWxlbWVudCl9LF9vbklucHV0OmZ1bmN0aW9uKHQpe3RoaXMuX2hhbmRsZVZhbHVlQW5kQXV0b1ZhbGlkYXRlKHQudGFyZ2V0KX0sX29uVmFsdWVDaGFuZ2VkOmZ1bmN0aW9uKHQpe3ZhciBlPXQudGFyZ2V0O3RoaXMuX19pc0ZpcnN0VmFsdWVVcGRhdGUmJih0aGlzLl9faXNGaXJzdFZhbHVlVXBkYXRlPSExLHZvaWQgMD09PWUudmFsdWV8fCIiPT09ZS52YWx1ZSl8fHRoaXMuX2hhbmRsZVZhbHVlQW5kQXV0b1ZhbGlkYXRlKHQudGFyZ2V0KX0sX2hhbmRsZVZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2lucHV0RWxlbWVudFZhbHVlO3RoaXMuX2lucHV0SGFzQ29udGVudD0hKCFlJiYwIT09ZSYmKCJudW1iZXIiIT09dC50eXBlfHx0LmNoZWNrVmFsaWRpdHkoKSkpLHRoaXMudXBkYXRlQWRkb25zKHtpbnB1dEVsZW1lbnQ6dCx2YWx1ZTplLGludmFsaWQ6dGhpcy5pbnZhbGlkfSl9LF9oYW5kbGVWYWx1ZUFuZEF1dG9WYWxpZGF0ZTpmdW5jdGlvbih0KXt2YXIgZTt0aGlzLmF1dG9WYWxpZGF0ZSYmdCYmKGU9dC52YWxpZGF0ZT90LnZhbGlkYXRlKHRoaXMuX2lucHV0RWxlbWVudFZhbHVlKTp0LmNoZWNrVmFsaWRpdHkoKSx0aGlzLmludmFsaWQ9IWUpO3RoaXMuX2hhbmRsZVZhbHVlKHQpfSxfb25Jcm9uSW5wdXRWYWxpZGF0ZTpmdW5jdGlvbih0KXt0aGlzLmludmFsaWQ9dGhpcy5faW5wdXRFbGVtZW50LmludmFsaWR9LF9pbnZhbGlkQ2hhbmdlZDpmdW5jdGlvbigpe3RoaXMuX2FkZG9ucyYmdGhpcy51cGRhdGVBZGRvbnMoe2ludmFsaWQ6dGhpcy5pbnZhbGlkfSl9LHVwZGF0ZUFkZG9uczpmdW5jdGlvbih0KXtmb3IodmFyIGUsbj0wO2U9dGhpcy5fYWRkb25zW25dO24rKyllLnVwZGF0ZSh0KX0sX2NvbXB1dGVJbnB1dENvbnRlbnRDbGFzczpmdW5jdGlvbih0LGUsbixpLHIpe3ZhciBvPSJpbnB1dC1jb250ZW50IjtpZih0KXImJihvKz0iIGxhYmVsLWlzLWhpZGRlbiIpLGkmJihvKz0iIGlzLWludmFsaWQiKTtlbHNle3ZhciBhPXRoaXMucXVlcnlTZWxlY3RvcigibGFiZWwiKTtlfHxyPyhvKz0iIGxhYmVsLWlzLWZsb2F0aW5nIix0aGlzLiQubGFiZWxBbmRJbnB1dENvbnRhaW5lci5zdHlsZS5wb3NpdGlvbj0ic3RhdGljIixpP28rPSIgaXMtaW52YWxpZCI6biYmKG8rPSIgbGFiZWwtaXMtaGlnaGxpZ2h0ZWQiKSk6KGEmJih0aGlzLiQubGFiZWxBbmRJbnB1dENvbnRhaW5lci5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiKSxpJiYobys9IiBpcy1pbnZhbGlkIikpfXJldHVybiBuJiYobys9IiBmb2N1c2VkIiksb30sX2NvbXB1dGVVbmRlcmxpbmVDbGFzczpmdW5jdGlvbih0LGUpe3ZhciBuPSJ1bmRlcmxpbmUiO3JldHVybiBlP24rPSIgaXMtaW52YWxpZCI6dCYmKG4rPSIgaXMtaGlnaGxpZ2h0ZWQiKSxufSxfY29tcHV0ZUFkZE9uQ29udGVudENsYXNzOmZ1bmN0aW9uKHQsZSl7dmFyIG49ImFkZC1vbi1jb250ZW50IjtyZXR1cm4gZT9uKz0iIGlzLWludmFsaWQiOnQmJihuKz0iIGlzLWhpZ2hsaWdodGVkIiksbn19KSwKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmpyKHtfdGVtcGxhdGU6eGVgCiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuOwoKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWludmFsaWQtY29sb3IsIHZhcigtLWVycm9yLWNvbG9yKSk7CgogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY2FwdGlvbjsKICAgICAgICBAYXBwbHkgLS1wYXBlci1pbnB1dC1lcnJvcjsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgbGVmdDowOwogICAgICAgIHJpZ2h0OjA7CiAgICAgIH0KCiAgICAgIDpob3N0KFtpbnZhbGlkXSkgewogICAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7CiAgICAgIH0KCiAgICAgICNhMTF5V3JhcHBlciB7CiAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuOwogICAgICB9CgogICAgICA6aG9zdChbaW52YWxpZF0pICNhMTF5V3JhcHBlciB7CiAgICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZTsKICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8IS0tCiAgICBJZiB0aGUgcGFwZXItaW5wdXQtZXJyb3IgZWxlbWVudCBpcyBkaXJlY3RseSByZWZlcmVuY2VkIGJ5IGFuCiAgICBcYGFyaWEtZGVzY3JpYmVkYnlcYCBhdHRyaWJ1dGUsIHN1Y2ggYXMgd2hlbiB1c2VkIGFzIGEgcGFwZXItaW5wdXQgYWRkLW9uLAogICAgdGhlbiBhcHBseWluZyBcYHZpc2liaWxpdHk6IGhpZGRlbjtcYCB0byB0aGUgcGFwZXItaW5wdXQtZXJyb3IgZWxlbWVudCBpdHNlbGYKICAgIGRvZXMgbm90IGhpZGUgdGhlIGVycm9yLgoKICAgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWU6CiAgICBodHRwczovL3d3dy53My5vcmcvVFIvYWNjbmFtZS0xLjEvI21hcHBpbmdfYWRkaXRpb25hbF9uZF9kZXNjcmlwdGlvbgogICAgLS0+CiAgICA8ZGl2IGlkPSJhMTF5V3JhcHBlciI+CiAgICAgIDxzbG90Pjwvc2xvdD4KICAgIDwvZGl2PgpgLGlzOiJwYXBlci1pbnB1dC1lcnJvciIsYmVoYXZpb3JzOltYYV0scHJvcGVydGllczp7aW52YWxpZDp7cmVhZE9ubHk6ITAscmVmbGVjdFRvQXR0cmlidXRlOiEwLHR5cGU6Qm9vbGVhbn19LHVwZGF0ZTpmdW5jdGlvbih0KXt0aGlzLl9zZXRJbnZhbGlkKHQuaW52YWxpZCl9fSk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCBLYT17TmV4dExhYmVsSUQ6MSxOZXh0QWRkb25JRDoxLE5leHRJbnB1dElEOjF9LFphPXtwcm9wZXJ0aWVzOntsYWJlbDp7dHlwZTpTdHJpbmd9LHZhbHVlOntub3RpZnk6ITAsdHlwZTpTdHJpbmd9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LGludmFsaWQ6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMSxub3RpZnk6ITB9LGFsbG93ZWRQYXR0ZXJuOnt0eXBlOlN0cmluZ30sdHlwZTp7dHlwZTpTdHJpbmd9LGxpc3Q6e3R5cGU6U3RyaW5nfSxwYXR0ZXJuOnt0eXBlOlN0cmluZ30scmVxdWlyZWQ6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sZXJyb3JNZXNzYWdlOnt0eXBlOlN0cmluZ30sY2hhckNvdW50ZXI6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sbm9MYWJlbEZsb2F0Ont0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LGFsd2F5c0Zsb2F0TGFiZWw6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sYXV0b1ZhbGlkYXRlOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LHZhbGlkYXRvcjp7dHlwZTpTdHJpbmd9LGF1dG9jb21wbGV0ZTp7dHlwZTpTdHJpbmcsdmFsdWU6Im9mZiJ9LGF1dG9mb2N1czp7dHlwZTpCb29sZWFuLG9ic2VydmVyOiJfYXV0b2ZvY3VzQ2hhbmdlZCJ9LGlucHV0bW9kZTp7dHlwZTpTdHJpbmd9LG1pbmxlbmd0aDp7dHlwZTpOdW1iZXJ9LG1heGxlbmd0aDp7dHlwZTpOdW1iZXJ9LG1pbjp7dHlwZTpTdHJpbmd9LG1heDp7dHlwZTpTdHJpbmd9LHN0ZXA6e3R5cGU6U3RyaW5nfSxuYW1lOnt0eXBlOlN0cmluZ30scGxhY2Vob2xkZXI6e3R5cGU6U3RyaW5nLHZhbHVlOiIifSxyZWFkb25seTp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxzaXplOnt0eXBlOk51bWJlcn0sYXV0b2NhcGl0YWxpemU6e3R5cGU6U3RyaW5nLHZhbHVlOiJub25lIn0sYXV0b2NvcnJlY3Q6e3R5cGU6U3RyaW5nLHZhbHVlOiJvZmYifSxhdXRvc2F2ZTp7dHlwZTpTdHJpbmd9LHJlc3VsdHM6e3R5cGU6TnVtYmVyfSxhY2NlcHQ6e3R5cGU6U3RyaW5nfSxtdWx0aXBsZTp7dHlwZTpCb29sZWFufSxfYXJpYURlc2NyaWJlZEJ5Ont0eXBlOlN0cmluZyx2YWx1ZToiIn0sX2FyaWFMYWJlbGxlZEJ5Ont0eXBlOlN0cmluZyx2YWx1ZToiIn0sX2lucHV0SWQ6e3R5cGU6U3RyaW5nLHZhbHVlOiIifX0sbGlzdGVuZXJzOnsiYWRkb24tYXR0YWNoZWQiOiJfb25BZGRvbkF0dGFjaGVkIn0sa2V5QmluZGluZ3M6eyJzaGlmdCt0YWI6a2V5ZG93biI6Il9vblNoaWZ0VGFiRG93biJ9LGhvc3RBdHRyaWJ1dGVzOnt0YWJpbmRleDowfSxnZXQgaW5wdXRFbGVtZW50KCl7cmV0dXJuIHRoaXMuJHx8KHRoaXMuJD17fSksdGhpcy4kLmlucHV0fHwodGhpcy5fZ2VuZXJhdGVJbnB1dElkKCksdGhpcy4kLmlucHV0PXRoaXMuJCQoIiMiK3RoaXMuX2lucHV0SWQpKSx0aGlzLiQuaW5wdXR9LGdldCBfZm9jdXNhYmxlRWxlbWVudCgpe3JldHVybiB0aGlzLmlucHV0RWxlbWVudH0sY3JlYXRlZDpmdW5jdGlvbigpe3RoaXMuX3R5cGVzVGhhdEhhdmVUZXh0PVsiZGF0ZSIsImRhdGV0aW1lIiwiZGF0ZXRpbWUtbG9jYWwiLCJtb250aCIsInRpbWUiLCJ3ZWVrIiwiZmlsZSJdfSxhdHRhY2hlZDpmdW5jdGlvbigpe3RoaXMuX3VwZGF0ZUFyaWFMYWJlbGxlZEJ5KCksIXdlJiZ0aGlzLmlucHV0RWxlbWVudCYmLTEhPT10aGlzLl90eXBlc1RoYXRIYXZlVGV4dC5pbmRleE9mKHRoaXMuaW5wdXRFbGVtZW50LnR5cGUpJiYodGhpcy5hbHdheXNGbG9hdExhYmVsPSEwKX0sX2FwcGVuZFN0cmluZ1dpdGhTcGFjZTpmdW5jdGlvbih0LGUpe3JldHVybiB0PXQ/dCsiICIrZTplfSxfb25BZGRvbkF0dGFjaGVkOmZ1bmN0aW9uKHQpe3ZhciBlPWVyKHQpLnJvb3RUYXJnZXQ7aWYoZS5pZCl0aGlzLl9hcmlhRGVzY3JpYmVkQnk9dGhpcy5fYXBwZW5kU3RyaW5nV2l0aFNwYWNlKHRoaXMuX2FyaWFEZXNjcmliZWRCeSxlLmlkKTtlbHNle3ZhciBuPSJwYXBlci1pbnB1dC1hZGQtb24tIitLYS5OZXh0QWRkb25JRCsrO2UuaWQ9bix0aGlzLl9hcmlhRGVzY3JpYmVkQnk9dGhpcy5fYXBwZW5kU3RyaW5nV2l0aFNwYWNlKHRoaXMuX2FyaWFEZXNjcmliZWRCeSxuKX19LHZhbGlkYXRlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5wdXRFbGVtZW50LnZhbGlkYXRlKCl9LF9mb2N1c0JsdXJIYW5kbGVyOmZ1bmN0aW9uKHQpe3JhLl9mb2N1c0JsdXJIYW5kbGVyLmNhbGwodGhpcyx0KSx0aGlzLmZvY3VzZWQmJiF0aGlzLl9zaGlmdFRhYlByZXNzZWQmJnRoaXMuX2ZvY3VzYWJsZUVsZW1lbnQmJnRoaXMuX2ZvY3VzYWJsZUVsZW1lbnQuZm9jdXMoKX0sX29uU2hpZnRUYWJEb3duOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZ2V0QXR0cmlidXRlKCJ0YWJpbmRleCIpO3RoaXMuX3NoaWZ0VGFiUHJlc3NlZD0hMCx0aGlzLnNldEF0dHJpYnV0ZSgidGFiaW5kZXgiLCItMSIpLHRoaXMuYXN5bmMoKGZ1bmN0aW9uKCl7dGhpcy5zZXRBdHRyaWJ1dGUoInRhYmluZGV4IixlKSx0aGlzLl9zaGlmdFRhYlByZXNzZWQ9ITF9KSwxKX0sX2hhbmRsZUF1dG9WYWxpZGF0ZTpmdW5jdGlvbigpe3RoaXMuYXV0b1ZhbGlkYXRlJiZ0aGlzLnZhbGlkYXRlKCl9LHVwZGF0ZVZhbHVlQW5kUHJlc2VydmVDYXJldDpmdW5jdGlvbih0KXt0cnl7dmFyIGU9dGhpcy5pbnB1dEVsZW1lbnQuc2VsZWN0aW9uU3RhcnQ7dGhpcy52YWx1ZT10LHRoaXMuaW5wdXRFbGVtZW50LnNlbGVjdGlvblN0YXJ0PWUsdGhpcy5pbnB1dEVsZW1lbnQuc2VsZWN0aW9uRW5kPWV9Y2F0Y2goZSl7dGhpcy52YWx1ZT10fX0sX2NvbXB1dGVBbHdheXNGbG9hdExhYmVsOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGV8fHR9LF91cGRhdGVBcmlhTGFiZWxsZWRCeTpmdW5jdGlvbigpe3ZhciB0LGU9ZXIodGhpcy5yb290KS5xdWVyeVNlbGVjdG9yKCJsYWJlbCIpO2U/KGUuaWQ/dD1lLmlkOih0PSJwYXBlci1pbnB1dC1sYWJlbC0iK0thLk5leHRMYWJlbElEKyssZS5pZD10KSx0aGlzLl9hcmlhTGFiZWxsZWRCeT10KTp0aGlzLl9hcmlhTGFiZWxsZWRCeT0iIn0sX2dlbmVyYXRlSW5wdXRJZDpmdW5jdGlvbigpe3RoaXMuX2lucHV0SWQmJiIiIT09dGhpcy5faW5wdXRJZHx8KHRoaXMuX2lucHV0SWQ9ImlucHV0LSIrS2EuTmV4dElucHV0SUQrKyl9LF9vbkNoYW5nZTpmdW5jdGlvbih0KXt0aGlzLnNoYWRvd1Jvb3QmJnRoaXMuZmlyZSh0LnR5cGUse3NvdXJjZUV2ZW50OnR9LHtub2RlOnRoaXMsYnViYmxlczp0LmJ1YmJsZXMsY2FuY2VsYWJsZTp0LmNhbmNlbGFibGV9KX0sX2F1dG9mb2N1c0NoYW5nZWQ6ZnVuY3Rpb24oKXtpZih0aGlzLmF1dG9mb2N1cyYmdGhpcy5fZm9jdXNhYmxlRWxlbWVudCl7dmFyIHQ9ZG9jdW1lbnQuYWN0aXZlRWxlbWVudDt0IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQmJnQhPT1kb2N1bWVudC5ib2R5JiZ0IT09ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50fHx0aGlzLl9mb2N1c2FibGVFbGVtZW50LmZvY3VzKCl9fX0sSmE9W3JhLFhvLFphXTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmpyKHtpczoicGFwZXItaW5wdXQiLF90ZW1wbGF0ZTp4ZWAKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CgogICAgICA6aG9zdChbZm9jdXNlZF0pIHsKICAgICAgICBvdXRsaW5lOiBub25lOwogICAgICB9CgogICAgICA6aG9zdChbaGlkZGVuXSkgewogICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICAgICAgfQoKICAgICAgaW5wdXQgewogICAgICAgIC8qIEZpcmVmb3ggc2V0cyBhIG1pbi13aWR0aCBvbiB0aGUgaW5wdXQsIHdoaWNoIGNhbiBjYXVzZSBsYXlvdXQgaXNzdWVzICovCiAgICAgICAgbWluLXdpZHRoOiAwOwogICAgICB9CgogICAgICAvKiBJbiAxLngsIHRoZSA8aW5wdXQ+IGlzIGRpc3RyaWJ1dGVkIHRvIHBhcGVyLWlucHV0LWNvbnRhaW5lciwgd2hpY2ggc3R5bGVzIGl0LgogICAgICBJbiAyLnggdGhlIDxpcm9uLWlucHV0PiBpcyBkaXN0cmlidXRlZCB0byBwYXBlci1pbnB1dC1jb250YWluZXIsIHdoaWNoIHN0eWxlcwogICAgICBpdCwgYnV0IGluIG9yZGVyIGZvciB0aGlzIHRvIHdvcmsgY29ycmVjdGx5LCB3ZSBuZWVkIHRvIHJlc2V0IHNvbWUKICAgICAgb2YgdGhlIG5hdGl2ZSBpbnB1dCdzIHByb3BlcnRpZXMgdG8gaW5oZXJpdCAoZnJvbSB0aGUgaXJvbi1pbnB1dCkgKi8KICAgICAgaXJvbi1pbnB1dCA+IGlucHV0IHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1pbnB1dC1jb250YWluZXItc2hhcmVkLWlucHV0LXN0eWxlOwogICAgICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0OwogICAgICAgIGZvbnQtd2VpZ2h0OiBpbmhlcml0OwogICAgICAgIGZvbnQtc2l6ZTogaW5oZXJpdDsKICAgICAgICBsZXR0ZXItc3BhY2luZzogaW5oZXJpdDsKICAgICAgICB3b3JkLXNwYWNpbmc6IGluaGVyaXQ7CiAgICAgICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7CiAgICAgICAgdGV4dC1zaGFkb3c6IGluaGVyaXQ7CiAgICAgICAgY29sb3I6IGluaGVyaXQ7CiAgICAgICAgY3Vyc29yOiBpbmhlcml0OwogICAgICB9CgogICAgICBpbnB1dDpkaXNhYmxlZCB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWlucHV0LWRpc2FibGVkOwogICAgICB9CgogICAgICBpbnB1dDo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbiwKICAgICAgaW5wdXQ6Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24gewogICAgICAgIEBhcHBseSAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1pbnB1dC13ZWJraXQtc3Bpbm5lcjsKICAgICAgfQoKICAgICAgaW5wdXQ6Oi13ZWJraXQtY2xlYXItYnV0dG9uIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1pbnB1dC1jb250YWluZXItaW5wdXQtd2Via2l0LWNsZWFyOwogICAgICB9CgogICAgICBpbnB1dDo6LXdlYmtpdC1jYWxlbmRhci1waWNrZXItaW5kaWNhdG9yIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1pbnB1dC1jb250YWluZXItaW5wdXQtd2Via2l0LWNhbGVuZGFyLXBpY2tlci1pbmRpY2F0b3I7CiAgICAgIH0KCiAgICAgIGlucHV0Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHsKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWNvbG9yLCB2YXIoLS1zZWNvbmRhcnktdGV4dC1jb2xvcikpOwogICAgICB9CgogICAgICBpbnB1dDotbW96LXBsYWNlaG9sZGVyIHsKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWNvbG9yLCB2YXIoLS1zZWNvbmRhcnktdGV4dC1jb2xvcikpOwogICAgICB9CgogICAgICBpbnB1dDo6LW1vei1wbGFjZWhvbGRlciB7CiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1jb2xvciwgdmFyKC0tc2Vjb25kYXJ5LXRleHQtY29sb3IpKTsKICAgICAgfQoKICAgICAgaW5wdXQ6Oi1tcy1jbGVhciB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItaW5wdXQtY29udGFpbmVyLW1zLWNsZWFyOwogICAgICB9CgogICAgICBpbnB1dDo6LW1zLXJldmVhbCB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItaW5wdXQtY29udGFpbmVyLW1zLXJldmVhbDsKICAgICAgfQoKICAgICAgaW5wdXQ6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHsKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWNvbG9yLCB2YXIoLS1zZWNvbmRhcnktdGV4dC1jb2xvcikpOwogICAgICB9CgogICAgICBsYWJlbCB7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgIH0KICAgIDwvc3R5bGU+CgogICAgPHBhcGVyLWlucHV0LWNvbnRhaW5lciBpZD0iY29udGFpbmVyIiBuby1sYWJlbC1mbG9hdD0iW1tub0xhYmVsRmxvYXRdXSIgYWx3YXlzLWZsb2F0LWxhYmVsPSJbW19jb21wdXRlQWx3YXlzRmxvYXRMYWJlbChhbHdheXNGbG9hdExhYmVsLHBsYWNlaG9sZGVyKV1dIiBhdXRvLXZhbGlkYXRlJD0iW1thdXRvVmFsaWRhdGVdXSIgZGlzYWJsZWQkPSJbW2Rpc2FibGVkXV0iIGludmFsaWQ9IltbaW52YWxpZF1dIj4KCiAgICAgIDxzbG90IG5hbWU9InByZWZpeCIgc2xvdD0icHJlZml4Ij48L3Nsb3Q+CgogICAgICA8bGFiZWwgaGlkZGVuJD0iW1shbGFiZWxdXSIgYXJpYS1oaWRkZW49InRydWUiIGZvciQ9IltbX2lucHV0SWRdXSIgc2xvdD0ibGFiZWwiPltbbGFiZWxdXTwvbGFiZWw+CgogICAgICA8IS0tIE5lZWQgdG8gYmluZCBtYXhsZW5ndGggc28gdGhhdCB0aGUgcGFwZXItaW5wdXQtY2hhci1jb3VudGVyIHdvcmtzIGNvcnJlY3RseSAtLT4KICAgICAgPGlyb24taW5wdXQgYmluZC12YWx1ZT0ie3t2YWx1ZX19IiBzbG90PSJpbnB1dCIgY2xhc3M9ImlucHV0LWVsZW1lbnQiIGlkJD0iW1tfaW5wdXRJZF1dIiBtYXhsZW5ndGgkPSJbW21heGxlbmd0aF1dIiBhbGxvd2VkLXBhdHRlcm49IltbYWxsb3dlZFBhdHRlcm5dXSIgaW52YWxpZD0ie3tpbnZhbGlkfX0iIHZhbGlkYXRvcj0iW1t2YWxpZGF0b3JdXSI+CiAgICAgICAgPGlucHV0IGFyaWEtbGFiZWxsZWRieSQ9IltbX2FyaWFMYWJlbGxlZEJ5XV0iIGFyaWEtZGVzY3JpYmVkYnkkPSJbW19hcmlhRGVzY3JpYmVkQnldXSIgZGlzYWJsZWQkPSJbW2Rpc2FibGVkXV0iIHRpdGxlJD0iW1t0aXRsZV1dIiB0eXBlJD0iW1t0eXBlXV0iIHBhdHRlcm4kPSJbW3BhdHRlcm5dXSIgcmVxdWlyZWQkPSJbW3JlcXVpcmVkXV0iIGF1dG9jb21wbGV0ZSQ9IltbYXV0b2NvbXBsZXRlXV0iIGF1dG9mb2N1cyQ9IltbYXV0b2ZvY3VzXV0iIGlucHV0bW9kZSQ9IltbaW5wdXRtb2RlXV0iIG1pbmxlbmd0aCQ9IltbbWlubGVuZ3RoXV0iIG1heGxlbmd0aCQ9IltbbWF4bGVuZ3RoXV0iIG1pbiQ9IltbbWluXV0iIG1heCQ9IltbbWF4XV0iIHN0ZXAkPSJbW3N0ZXBdXSIgbmFtZSQ9IltbbmFtZV1dIiBwbGFjZWhvbGRlciQ9IltbcGxhY2Vob2xkZXJdXSIgcmVhZG9ubHkkPSJbW3JlYWRvbmx5XV0iIGxpc3QkPSJbW2xpc3RdXSIgc2l6ZSQ9Iltbc2l6ZV1dIiBhdXRvY2FwaXRhbGl6ZSQ9IltbYXV0b2NhcGl0YWxpemVdXSIgYXV0b2NvcnJlY3QkPSJbW2F1dG9jb3JyZWN0XV0iIG9uLWNoYW5nZT0iX29uQ2hhbmdlIiB0YWJpbmRleCQ9IltbdGFiSW5kZXhdXSIgYXV0b3NhdmUkPSJbW2F1dG9zYXZlXV0iIHJlc3VsdHMkPSJbW3Jlc3VsdHNdXSIgYWNjZXB0JD0iW1thY2NlcHRdXSIgbXVsdGlwbGUkPSJbW211bHRpcGxlXV0iIHJvbGUkPSJbW2lucHV0Um9sZV1dIiBhcmlhLWhhc3BvcHVwJD0iW1tpbnB1dEFyaWFIYXNwb3B1cF1dIj4KICAgICAgPC9pcm9uLWlucHV0PgoKICAgICAgPHNsb3QgbmFtZT0ic3VmZml4IiBzbG90PSJzdWZmaXgiPjwvc2xvdD4KCiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tlcnJvck1lc3NhZ2VdXSI+CiAgICAgICAgPHBhcGVyLWlucHV0LWVycm9yIGFyaWEtbGl2ZT0iYXNzZXJ0aXZlIiBzbG90PSJhZGQtb24iPltbZXJyb3JNZXNzYWdlXV08L3BhcGVyLWlucHV0LWVycm9yPgogICAgICA8L3RlbXBsYXRlPgoKICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW2NoYXJDb3VudGVyXV0iPgogICAgICAgIDxwYXBlci1pbnB1dC1jaGFyLWNvdW50ZXIgc2xvdD0iYWRkLW9uIj48L3BhcGVyLWlucHV0LWNoYXItY291bnRlcj4KICAgICAgPC90ZW1wbGF0ZT4KCiAgICA8L3BhcGVyLWlucHV0LWNvbnRhaW5lcj4KICBgLGJlaGF2aW9yczpbSmEsZ2FdLHByb3BlcnRpZXM6e3ZhbHVlOnt0eXBlOlN0cmluZ30saW5wdXRSb2xlOnt0eXBlOlN0cmluZyx2YWx1ZTp2b2lkIDB9LGlucHV0QXJpYUhhc3BvcHVwOnt0eXBlOlN0cmluZyx2YWx1ZTp2b2lkIDB9fSxnZXQgX2ZvY3VzYWJsZUVsZW1lbnQoKXtyZXR1cm4gdGhpcy5pbnB1dEVsZW1lbnQuX2lucHV0RWxlbWVudH0sbGlzdGVuZXJzOnsiaXJvbi1pbnB1dC1yZWFkeSI6Il9vbklyb25JbnB1dFJlYWR5In0sX29uSXJvbklucHV0UmVhZHk6ZnVuY3Rpb24oKXt0aGlzLiQubmF0aXZlSW5wdXR8fCh0aGlzLiQubmF0aXZlSW5wdXQ9dGhpcy4kJCgiaW5wdXQiKSksdGhpcy5pbnB1dEVsZW1lbnQmJi0xIT09dGhpcy5fdHlwZXNUaGF0SGF2ZVRleHQuaW5kZXhPZih0aGlzLiQubmF0aXZlSW5wdXQudHlwZSkmJih0aGlzLmFsd2F5c0Zsb2F0TGFiZWw9ITApLHRoaXMuaW5wdXRFbGVtZW50LmJpbmRWYWx1ZSYmdGhpcy4kLmNvbnRhaW5lci5faGFuZGxlVmFsdWVBbmRBdXRvVmFsaWRhdGUodGhpcy5pbnB1dEVsZW1lbnQpfX0pLAovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KanIoe190ZW1wbGF0ZTp4ZWAKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgfQoKICAgICAgI2NvbnRlbnRXcmFwcGVyIDo6c2xvdHRlZCgqKSB7CiAgICAgICAgb3ZlcmZsb3c6IGF1dG87CiAgICAgIH0KCiAgICAgICNjb250ZW50V3JhcHBlci5hbmltYXRpbmcgOjpzbG90dGVkKCopIHsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICB9CiAgICA8L3N0eWxlPgoKICAgIDxkaXYgaWQ9ImNvbnRlbnRXcmFwcGVyIj4KICAgICAgPHNsb3QgaWQ9ImNvbnRlbnQiIG5hbWU9ImRyb3Bkb3duLWNvbnRlbnQiPjwvc2xvdD4KICAgIDwvZGl2PgpgLGlzOiJpcm9uLWRyb3Bkb3duIixiZWhhdmlvcnM6W3JhLFhvLFdhLFRhXSxwcm9wZXJ0aWVzOntob3Jpem9udGFsQWxpZ246e3R5cGU6U3RyaW5nLHZhbHVlOiJsZWZ0IixyZWZsZWN0VG9BdHRyaWJ1dGU6ITB9LHZlcnRpY2FsQWxpZ246e3R5cGU6U3RyaW5nLHZhbHVlOiJ0b3AiLHJlZmxlY3RUb0F0dHJpYnV0ZTohMH0sb3BlbkFuaW1hdGlvbkNvbmZpZzp7dHlwZTpPYmplY3R9LGNsb3NlQW5pbWF0aW9uQ29uZmlnOnt0eXBlOk9iamVjdH0sZm9jdXNUYXJnZXQ6e3R5cGU6T2JqZWN0fSxub0FuaW1hdGlvbnM6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sYWxsb3dPdXRzaWRlU2Nyb2xsOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITEsb2JzZXJ2ZXI6Il9hbGxvd091dHNpZGVTY3JvbGxDaGFuZ2VkIn19LGxpc3RlbmVyczp7Im5lb24tYW5pbWF0aW9uLWZpbmlzaCI6Il9vbk5lb25BbmltYXRpb25GaW5pc2gifSxvYnNlcnZlcnM6WyJfdXBkYXRlT3ZlcmxheVBvc2l0aW9uKHBvc2l0aW9uVGFyZ2V0LCB2ZXJ0aWNhbEFsaWduLCBob3Jpem9udGFsQWxpZ24sIHZlcnRpY2FsT2Zmc2V0LCBob3Jpem9udGFsT2Zmc2V0KSJdLGdldCBjb250YWluZWRFbGVtZW50KCl7Zm9yKHZhciB0PWVyKHRoaXMuJC5jb250ZW50KS5nZXREaXN0cmlidXRlZE5vZGVzKCksZT0wLG49dC5sZW5ndGg7ZTxuO2UrKylpZih0W2VdLm5vZGVUeXBlPT09Tm9kZS5FTEVNRU5UX05PREUpcmV0dXJuIHRbZV19LHJlYWR5OmZ1bmN0aW9uKCl7dGhpcy5zY3JvbGxBY3Rpb258fCh0aGlzLnNjcm9sbEFjdGlvbj10aGlzLmFsbG93T3V0c2lkZVNjcm9sbD8icmVmaXQiOiJsb2NrIiksdGhpcy5fcmVhZGllZD0hMH0sYXR0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLnNpemluZ1RhcmdldCYmdGhpcy5zaXppbmdUYXJnZXQhPT10aGlzfHwodGhpcy5zaXppbmdUYXJnZXQ9dGhpcy5jb250YWluZWRFbGVtZW50fHx0aGlzKX0sZGV0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLmNhbmNlbEFuaW1hdGlvbigpfSxfb3BlbmVkQ2hhbmdlZDpmdW5jdGlvbigpe3RoaXMub3BlbmVkJiZ0aGlzLmRpc2FibGVkP3RoaXMuY2FuY2VsKCk6KHRoaXMuY2FuY2VsQW5pbWF0aW9uKCksdGhpcy5fdXBkYXRlQW5pbWF0aW9uQ29uZmlnKCksamEuX29wZW5lZENoYW5nZWQuYXBwbHkodGhpcyxhcmd1bWVudHMpKX0sX3JlbmRlck9wZW5lZDpmdW5jdGlvbigpeyF0aGlzLm5vQW5pbWF0aW9ucyYmdGhpcy5hbmltYXRpb25Db25maWcub3Blbj8odGhpcy4kLmNvbnRlbnRXcmFwcGVyLmNsYXNzTGlzdC5hZGQoImFuaW1hdGluZyIpLHRoaXMucGxheUFuaW1hdGlvbigib3BlbiIpKTpqYS5fcmVuZGVyT3BlbmVkLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sX3JlbmRlckNsb3NlZDpmdW5jdGlvbigpeyF0aGlzLm5vQW5pbWF0aW9ucyYmdGhpcy5hbmltYXRpb25Db25maWcuY2xvc2U/KHRoaXMuJC5jb250ZW50V3JhcHBlci5jbGFzc0xpc3QuYWRkKCJhbmltYXRpbmciKSx0aGlzLnBsYXlBbmltYXRpb24oImNsb3NlIikpOmphLl9yZW5kZXJDbG9zZWQuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxfb25OZW9uQW5pbWF0aW9uRmluaXNoOmZ1bmN0aW9uKCl7dGhpcy4kLmNvbnRlbnRXcmFwcGVyLmNsYXNzTGlzdC5yZW1vdmUoImFuaW1hdGluZyIpLHRoaXMub3BlbmVkP3RoaXMuX2ZpbmlzaFJlbmRlck9wZW5lZCgpOnRoaXMuX2ZpbmlzaFJlbmRlckNsb3NlZCgpfSxfdXBkYXRlQW5pbWF0aW9uQ29uZmlnOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMuY29udGFpbmVkRWxlbWVudCxlPVtdLmNvbmNhdCh0aGlzLm9wZW5BbmltYXRpb25Db25maWd8fFtdKS5jb25jYXQodGhpcy5jbG9zZUFuaW1hdGlvbkNvbmZpZ3x8W10pLG49MDtuPGUubGVuZ3RoO24rKyllW25dLm5vZGU9dDt0aGlzLmFuaW1hdGlvbkNvbmZpZz17b3Blbjp0aGlzLm9wZW5BbmltYXRpb25Db25maWcsY2xvc2U6dGhpcy5jbG9zZUFuaW1hdGlvbkNvbmZpZ319LF91cGRhdGVPdmVybGF5UG9zaXRpb246ZnVuY3Rpb24oKXt0aGlzLmlzQXR0YWNoZWQmJnRoaXMubm90aWZ5UmVzaXplKCl9LF9hbGxvd091dHNpZGVTY3JvbGxDaGFuZ2VkOmZ1bmN0aW9uKHQpe3RoaXMuX3JlYWRpZWQmJih0P3RoaXMuc2Nyb2xsQWN0aW9uJiYibG9jayIhPT10aGlzLnNjcm9sbEFjdGlvbnx8KHRoaXMuc2Nyb2xsQWN0aW9uPSJyZWZpdCIpOnRoaXMuc2Nyb2xsQWN0aW9uPSJsb2NrIil9LF9hcHBseUZvY3VzOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5mb2N1c1RhcmdldHx8dGhpcy5jb250YWluZWRFbGVtZW50O3QmJnRoaXMub3BlbmVkJiYhdGhpcy5ub0F1dG9Gb2N1cz90LmZvY3VzKCk6amEuX2FwcGx5Rm9jdXMuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0pOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KY29uc3QgUWE9e3Byb3BlcnRpZXM6e2FuaW1hdGlvblRpbWluZzp7dHlwZTpPYmplY3QsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57ZHVyYXRpb246NTAwLGVhc2luZzoiY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSIsZmlsbDoiYm90aCJ9fX19LGlzTmVvbkFuaW1hdGlvbjohMCxjcmVhdGVkOmZ1bmN0aW9uKCl7ZG9jdW1lbnQuYm9keS5hbmltYXRlfHxjb25zb2xlLndhcm4oIk5vIHdlYiBhbmltYXRpb25zIGRldGVjdGVkLiBUaGlzIGVsZW1lbnQgd2lsbCBub3QgZnVuY3Rpb24gd2l0aG91dCBhIHdlYiBhbmltYXRpb25zIHBvbHlmaWxsLiIpfSx0aW1pbmdGcm9tQ29uZmlnOmZ1bmN0aW9uKHQpe2lmKHQudGltaW5nKWZvcih2YXIgZSBpbiB0LnRpbWluZyl0aGlzLmFuaW1hdGlvblRpbWluZ1tlXT10LnRpbWluZ1tlXTtyZXR1cm4gdGhpcy5hbmltYXRpb25UaW1pbmd9LHNldFByZWZpeGVkUHJvcGVydHk6ZnVuY3Rpb24odCxlLG4pe2Zvcih2YXIgaSxyPXt0cmFuc2Zvcm06WyJ3ZWJraXRUcmFuc2Zvcm0iXSx0cmFuc2Zvcm1PcmlnaW46WyJtb3pUcmFuc2Zvcm1PcmlnaW4iLCJ3ZWJraXRUcmFuc2Zvcm1PcmlnaW4iXX1bZV0sbz0wO2k9cltvXTtvKyspdC5zdHlsZVtpXT1uO3Quc3R5bGVbZV09bn0sY29tcGxldGU6ZnVuY3Rpb24odCl7fX07Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqL2pyKHtpczoiZmFkZS1pbi1hbmltYXRpb24iLGJlaGF2aW9yczpbUWFdLGNvbmZpZ3VyZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZWZmZWN0PW5ldyBLZXlmcmFtZUVmZmVjdCh0Lm5vZGUsW3tvcGFjaXR5OiIwIn0se29wYWNpdHk6IjEifV0sdGhpcy50aW1pbmdGcm9tQ29uZmlnKHQpKSx0aGlzLl9lZmZlY3R9fSksCi8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpqcih7aXM6ImZhZGUtb3V0LWFuaW1hdGlvbiIsYmVoYXZpb3JzOltRYV0sY29uZmlndXJlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9lZmZlY3Q9bmV3IEtleWZyYW1lRWZmZWN0KHQubm9kZSxbe29wYWNpdHk6IjEifSx7b3BhY2l0eToiMCJ9XSx0aGlzLnRpbWluZ0Zyb21Db25maWcodCkpLHRoaXMuX2VmZmVjdH19KSwKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmpyKHtpczoicGFwZXItbWVudS1ncm93LWhlaWdodC1hbmltYXRpb24iLF90ZW1wbGF0ZTpudWxsLGJlaGF2aW9yczpbUWFdLGNvbmZpZ3VyZTpmdW5jdGlvbih0KXt2YXIgZT10Lm5vZGUsbj1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodDtyZXR1cm4gdGhpcy5fZWZmZWN0PW5ldyBLZXlmcmFtZUVmZmVjdChlLFt7aGVpZ2h0Om4vMisicHgifSx7aGVpZ2h0Om4rInB4In1dLHRoaXMudGltaW5nRnJvbUNvbmZpZyh0KSksdGhpcy5fZWZmZWN0fX0pLGpyKHtpczoicGFwZXItbWVudS1ncm93LXdpZHRoLWFuaW1hdGlvbiIsX3RlbXBsYXRlOm51bGwsYmVoYXZpb3JzOltRYV0sY29uZmlndXJlOmZ1bmN0aW9uKHQpe3ZhciBlPXQubm9kZSxuPWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7cmV0dXJuIHRoaXMuX2VmZmVjdD1uZXcgS2V5ZnJhbWVFZmZlY3QoZSxbe3dpZHRoOm4vMisicHgifSx7d2lkdGg6bisicHgifV0sdGhpcy50aW1pbmdGcm9tQ29uZmlnKHQpKSx0aGlzLl9lZmZlY3R9fSksanIoe2lzOiJwYXBlci1tZW51LXNocmluay13aWR0aC1hbmltYXRpb24iLF90ZW1wbGF0ZTpudWxsLGJlaGF2aW9yczpbUWFdLGNvbmZpZ3VyZTpmdW5jdGlvbih0KXt2YXIgZT10Lm5vZGUsbj1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO3JldHVybiB0aGlzLl9lZmZlY3Q9bmV3IEtleWZyYW1lRWZmZWN0KGUsW3t3aWR0aDpuKyJweCJ9LHt3aWR0aDpuLW4vMjArInB4In1dLHRoaXMudGltaW5nRnJvbUNvbmZpZyh0KSksdGhpcy5fZWZmZWN0fX0pLGpyKHtpczoicGFwZXItbWVudS1zaHJpbmstaGVpZ2h0LWFuaW1hdGlvbiIsX3RlbXBsYXRlOm51bGwsYmVoYXZpb3JzOltRYV0sY29uZmlndXJlOmZ1bmN0aW9uKHQpe3ZhciBlPXQubm9kZSxuPWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0O3JldHVybiB0aGlzLnNldFByZWZpeGVkUHJvcGVydHkoZSwidHJhbnNmb3JtT3JpZ2luIiwiMCAwIiksdGhpcy5fZWZmZWN0PW5ldyBLZXlmcmFtZUVmZmVjdChlLFt7aGVpZ2h0Om4rInB4Iix0cmFuc2Zvcm06InRyYW5zbGF0ZVkoMCkifSx7aGVpZ2h0Om4vMisicHgiLHRyYW5zZm9ybToidHJhbnNsYXRlWSgtMjBweCkifV0sdGhpcy50aW1pbmdGcm9tQ29uZmlnKHQpKSx0aGlzLl9lZmZlY3R9fSk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwp2YXIgdHM9e0FOSU1BVElPTl9DVUJJQ19CRVpJRVI6ImN1YmljLWJlemllciguMywuOTUsLjUsMSkiLE1BWF9BTklNQVRJT05fVElNRV9NUzo0MDB9O2NvbnN0IGVzPWpyKHtfdGVtcGxhdGU6eGVgCiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIHBhZGRpbmc6IDhweDsKICAgICAgICBvdXRsaW5lOiBub25lOwoKICAgICAgICBAYXBwbHkgLS1wYXBlci1tZW51LWJ1dHRvbjsKICAgICAgfQoKICAgICAgOmhvc3QoW2Rpc2FibGVkXSkgewogICAgICAgIGN1cnNvcjogYXV0bzsKICAgICAgICBjb2xvcjogdmFyKC0tZGlzYWJsZWQtdGV4dC1jb2xvcik7CgogICAgICAgIEBhcHBseSAtLXBhcGVyLW1lbnUtYnV0dG9uLWRpc2FibGVkOwogICAgICB9CgogICAgICBpcm9uLWRyb3Bkb3duIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1tZW51LWJ1dHRvbi1kcm9wZG93bjsKICAgICAgfQoKICAgICAgLmRyb3Bkb3duLWNvbnRlbnQgewogICAgICAgIEBhcHBseSAtLXNoYWRvdy1lbGV2YXRpb24tMmRwOwoKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgYm9yZGVyLXJhZGl1czogMnB4OwogICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXBhcGVyLW1lbnUtYnV0dG9uLWRyb3Bkb3duLWJhY2tncm91bmQsIHZhcigtLXByaW1hcnktYmFja2dyb3VuZC1jb2xvcikpOwoKICAgICAgICBAYXBwbHkgLS1wYXBlci1tZW51LWJ1dHRvbi1jb250ZW50OwogICAgICB9CgogICAgICA6aG9zdChbdmVydGljYWwtYWxpZ249InRvcCJdKSAuZHJvcGRvd24tY29udGVudCB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDsKICAgICAgICBtYXJnaW4tdG9wOiAtMTBweDsKICAgICAgICB0b3A6IDEwcHg7CiAgICAgIH0KCiAgICAgIDpob3N0KFt2ZXJ0aWNhbC1hbGlnbj0iYm90dG9tIl0pIC5kcm9wZG93bi1jb250ZW50IHsKICAgICAgICBib3R0b206IDEwcHg7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogLTEwcHg7CiAgICAgICAgbWFyZ2luLXRvcDogMjBweDsKICAgICAgfQoKICAgICAgI3RyaWdnZXIgewogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8ZGl2IGlkPSJ0cmlnZ2VyIiBvbi10YXA9InRvZ2dsZSI+CiAgICAgIDxzbG90IG5hbWU9ImRyb3Bkb3duLXRyaWdnZXIiPjwvc2xvdD4KICAgIDwvZGl2PgoKICAgIDxpcm9uLWRyb3Bkb3duIGlkPSJkcm9wZG93biIgb3BlbmVkPSJ7e29wZW5lZH19IiBob3Jpem9udGFsLWFsaWduPSJbW2hvcml6b250YWxBbGlnbl1dIiB2ZXJ0aWNhbC1hbGlnbj0iW1t2ZXJ0aWNhbEFsaWduXV0iIGR5bmFtaWMtYWxpZ249IltbZHluYW1pY0FsaWduXV0iIGhvcml6b250YWwtb2Zmc2V0PSJbW2hvcml6b250YWxPZmZzZXRdXSIgdmVydGljYWwtb2Zmc2V0PSJbW3ZlcnRpY2FsT2Zmc2V0XV0iIG5vLW92ZXJsYXA9Iltbbm9PdmVybGFwXV0iIG9wZW4tYW5pbWF0aW9uLWNvbmZpZz0iW1tvcGVuQW5pbWF0aW9uQ29uZmlnXV0iIGNsb3NlLWFuaW1hdGlvbi1jb25maWc9IltbY2xvc2VBbmltYXRpb25Db25maWddXSIgbm8tYW5pbWF0aW9ucz0iW1tub0FuaW1hdGlvbnNdXSIgZm9jdXMtdGFyZ2V0PSJbW19kcm9wZG93bkNvbnRlbnRdXSIgYWxsb3ctb3V0c2lkZS1zY3JvbGw9IltbYWxsb3dPdXRzaWRlU2Nyb2xsXV0iIHJlc3RvcmUtZm9jdXMtb24tY2xvc2U9IltbcmVzdG9yZUZvY3VzT25DbG9zZV1dIiBvbi1pcm9uLW92ZXJsYXktY2FuY2VsZWQ9Il9fb25Jcm9uT3ZlcmxheUNhbmNlbGVkIiBleHBhbmQtc2l6aW5nLXRhcmdldC1mb3Itc2Nyb2xsYmFycz0iW1tleHBhbmRTaXppbmdUYXJnZXRGb3JTY3JvbGxiYXJzXV0iPgogICAgICA8ZGl2IHNsb3Q9ImRyb3Bkb3duLWNvbnRlbnQiIGNsYXNzPSJkcm9wZG93bi1jb250ZW50Ij4KICAgICAgICA8c2xvdCBpZD0iY29udGVudCIgbmFtZT0iZHJvcGRvd24tY29udGVudCI+PC9zbG90PgogICAgICA8L2Rpdj4KICAgIDwvaXJvbi1kcm9wZG93bj4KYCxpczoicGFwZXItbWVudS1idXR0b24iLGJlaGF2aW9yczpbWG8scmFdLHByb3BlcnRpZXM6e29wZW5lZDp7dHlwZTpCb29sZWFuLHZhbHVlOiExLG5vdGlmeTohMCxvYnNlcnZlcjoiX29wZW5lZENoYW5nZWQifSxob3Jpem9udGFsQWxpZ246e3R5cGU6U3RyaW5nLHZhbHVlOiJsZWZ0IixyZWZsZWN0VG9BdHRyaWJ1dGU6ITB9LHZlcnRpY2FsQWxpZ246e3R5cGU6U3RyaW5nLHZhbHVlOiJ0b3AiLHJlZmxlY3RUb0F0dHJpYnV0ZTohMH0sZHluYW1pY0FsaWduOnt0eXBlOkJvb2xlYW59LGhvcml6b250YWxPZmZzZXQ6e3R5cGU6TnVtYmVyLHZhbHVlOjAsbm90aWZ5OiEwfSx2ZXJ0aWNhbE9mZnNldDp7dHlwZTpOdW1iZXIsdmFsdWU6MCxub3RpZnk6ITB9LG5vT3ZlcmxhcDp7dHlwZTpCb29sZWFufSxub0FuaW1hdGlvbnM6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0saWdub3JlU2VsZWN0Ont0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LGNsb3NlT25BY3RpdmF0ZTp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxvcGVuQW5pbWF0aW9uQ29uZmlnOnt0eXBlOk9iamVjdCx2YWx1ZTpmdW5jdGlvbigpe3JldHVyblt7bmFtZToiZmFkZS1pbi1hbmltYXRpb24iLHRpbWluZzp7ZGVsYXk6MTAwLGR1cmF0aW9uOjIwMH19LHtuYW1lOiJwYXBlci1tZW51LWdyb3ctd2lkdGgtYW5pbWF0aW9uIix0aW1pbmc6e2RlbGF5OjEwMCxkdXJhdGlvbjoxNTAsZWFzaW5nOnRzLkFOSU1BVElPTl9DVUJJQ19CRVpJRVJ9fSx7bmFtZToicGFwZXItbWVudS1ncm93LWhlaWdodC1hbmltYXRpb24iLHRpbWluZzp7ZGVsYXk6MTAwLGR1cmF0aW9uOjI3NSxlYXNpbmc6dHMuQU5JTUFUSU9OX0NVQklDX0JFWklFUn19XX19LGNsb3NlQW5pbWF0aW9uQ29uZmlnOnt0eXBlOk9iamVjdCx2YWx1ZTpmdW5jdGlvbigpe3JldHVyblt7bmFtZToiZmFkZS1vdXQtYW5pbWF0aW9uIix0aW1pbmc6e2R1cmF0aW9uOjE1MH19LHtuYW1lOiJwYXBlci1tZW51LXNocmluay13aWR0aC1hbmltYXRpb24iLHRpbWluZzp7ZGVsYXk6MTAwLGR1cmF0aW9uOjUwLGVhc2luZzp0cy5BTklNQVRJT05fQ1VCSUNfQkVaSUVSfX0se25hbWU6InBhcGVyLW1lbnUtc2hyaW5rLWhlaWdodC1hbmltYXRpb24iLHRpbWluZzp7ZHVyYXRpb246MjAwLGVhc2luZzoiZWFzZS1pbiJ9fV19fSxhbGxvd091dHNpZGVTY3JvbGw6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0scmVzdG9yZUZvY3VzT25DbG9zZTp7dHlwZTpCb29sZWFuLHZhbHVlOiEwfSxleHBhbmRTaXppbmdUYXJnZXRGb3JTY3JvbGxiYXJzOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LF9kcm9wZG93bkNvbnRlbnQ6e3R5cGU6T2JqZWN0fX0saG9zdEF0dHJpYnV0ZXM6e3JvbGU6Imdyb3VwIiwiYXJpYS1oYXNwb3B1cCI6InRydWUifSxsaXN0ZW5lcnM6eyJpcm9uLWFjdGl2YXRlIjoiX29uSXJvbkFjdGl2YXRlIiwiaXJvbi1zZWxlY3QiOiJfb25Jcm9uU2VsZWN0In0sZ2V0IGNvbnRlbnRFbGVtZW50KCl7Zm9yKHZhciB0PWVyKHRoaXMuJC5jb250ZW50KS5nZXREaXN0cmlidXRlZE5vZGVzKCksZT0wLG49dC5sZW5ndGg7ZTxuO2UrKylpZih0W2VdLm5vZGVUeXBlPT09Tm9kZS5FTEVNRU5UX05PREUpcmV0dXJuIHRbZV19LHRvZ2dsZTpmdW5jdGlvbigpe3RoaXMub3BlbmVkP3RoaXMuY2xvc2UoKTp0aGlzLm9wZW4oKX0sb3BlbjpmdW5jdGlvbigpe3RoaXMuZGlzYWJsZWR8fHRoaXMuJC5kcm9wZG93bi5vcGVuKCl9LGNsb3NlOmZ1bmN0aW9uKCl7dGhpcy4kLmRyb3Bkb3duLmNsb3NlKCl9LF9vbklyb25TZWxlY3Q6ZnVuY3Rpb24odCl7dGhpcy5pZ25vcmVTZWxlY3R8fHRoaXMuY2xvc2UoKX0sX29uSXJvbkFjdGl2YXRlOmZ1bmN0aW9uKHQpe3RoaXMuY2xvc2VPbkFjdGl2YXRlJiZ0aGlzLmNsb3NlKCl9LF9vcGVuZWRDaGFuZ2VkOmZ1bmN0aW9uKHQsZSl7dD8odGhpcy5fZHJvcGRvd25Db250ZW50PXRoaXMuY29udGVudEVsZW1lbnQsdGhpcy5maXJlKCJwYXBlci1kcm9wZG93bi1vcGVuIikpOm51bGwhPWUmJnRoaXMuZmlyZSgicGFwZXItZHJvcGRvd24tY2xvc2UiKX0sX2Rpc2FibGVkQ2hhbmdlZDpmdW5jdGlvbih0KXtyYS5fZGlzYWJsZWRDaGFuZ2VkLmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0JiZ0aGlzLm9wZW5lZCYmdGhpcy5jbG9zZSgpfSxfX29uSXJvbk92ZXJsYXlDYW5jZWxlZDpmdW5jdGlvbih0KXt2YXIgZT10aGlzLiQudHJpZ2dlcjtlcih0LmRldGFpbCkucGF0aC5pbmRleE9mKGUpPi0xJiZ0LnByZXZlbnREZWZhdWx0KCl9fSk7T2JqZWN0LmtleXModHMpLmZvckVhY2goKGZ1bmN0aW9uKHQpe2VzW3RdPXRzW3RdfSkpOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTYgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KY29uc3QgbnM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGVtcGxhdGUiKTtucy5zZXRBdHRyaWJ1dGUoInN0eWxlIiwiZGlzcGxheTogbm9uZTsiKSxucy5pbm5lckhUTUw9Jzxpcm9uLWljb25zZXQtc3ZnIG5hbWU9InBhcGVyLWRyb3Bkb3duLW1lbnUiIHNpemU9IjI0Ij5cbjxzdmc+PGRlZnM+XG48ZyBpZD0iYXJyb3ctZHJvcC1kb3duIj48cGF0aCBkPSJNNyAxMGw1IDUgNS01eiI+PC9wYXRoPjwvZz5cbjwvZGVmcz48L3N2Zz5cbjwvaXJvbi1pY29uc2V0LXN2Zz4nLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQobnMuY29udGVudCk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNiBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCBpcz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZW1wbGF0ZSIpO2lzLnNldEF0dHJpYnV0ZSgic3R5bGUiLCJkaXNwbGF5OiBub25lOyIpLGlzLmlubmVySFRNTD0nPGRvbS1tb2R1bGUgaWQ9InBhcGVyLWRyb3Bkb3duLW1lbnUtc2hhcmVkLXN0eWxlcyI+XG4gIDx0ZW1wbGF0ZT5cbiAgICA8c3R5bGU+XG4gICAgICA6aG9zdCB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuXG4gICAgICAgIC8qIE5PVEUoY2RhdGEpOiBCb3RoIHZhbHVlcyBhcmUgbmVlZGVkLCBzaW5jZSBzb21lIHBob25lcyByZXF1aXJlIHRoZVxuICAgICAgICAgKiB2YWx1ZSB0byBiZSBgdHJhbnNwYXJlbnRgLlxuICAgICAgICAgKi9cbiAgICAgICAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiByZ2JhKDAsMCwwLDApO1xuICAgICAgICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xuXG4gICAgICAgIC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWlucHV0OiB7XG4gICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgfTtcblxuICAgICAgICBAYXBwbHkgLS1wYXBlci1kcm9wZG93bi1tZW51O1xuICAgICAgfVxuXG4gICAgICAvKiBwYXBlci1kcm9wZG93bi1tZW51IGFuZCBwYXBlci1kcm9wZG93bi1tZW51LWxpZ2h0IGJvdGggZGVsZWdhdGUgZm9jdXNcbiAgICAgICAqIHRvIG90aGVyIGludGVybmFsIGVsZW1lbnRzIHdoaWNoIG1hbmFnZSBmb2N1cyBzdHlsaW5nLiAqL1xuICAgICAgOmhvc3QoOmZvY3VzKSB7XG4gICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICB9XG5cbiAgICAgIDpob3N0KDpkaXIocnRsKSkge1xuICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcblxuICAgICAgICBAYXBwbHkoLS1wYXBlci1kcm9wZG93bi1tZW51KTtcbiAgICAgIH1cblxuICAgICAgOmhvc3QoW2Rpc2FibGVkXSkge1xuICAgICAgICBAYXBwbHkgLS1wYXBlci1kcm9wZG93bi1tZW51LWRpc2FibGVkO1xuICAgICAgfVxuXG4gICAgICA6aG9zdChbbm9pbmtdKSBwYXBlci1yaXBwbGUge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgfVxuXG4gICAgICA6aG9zdChbbm8tbGFiZWwtZmxvYXRdKSBwYXBlci1yaXBwbGUge1xuICAgICAgICB0b3A6IDhweDtcbiAgICAgIH1cblxuICAgICAgcGFwZXItcmlwcGxlIHtcbiAgICAgICAgdG9wOiAxMnB4O1xuICAgICAgICBsZWZ0OiAwcHg7XG4gICAgICAgIGJvdHRvbTogOHB4O1xuICAgICAgICByaWdodDogMHB4O1xuXG4gICAgICAgIEBhcHBseSAtLXBhcGVyLWRyb3Bkb3duLW1lbnUtcmlwcGxlO1xuICAgICAgfVxuXG4gICAgICBwYXBlci1tZW51LWJ1dHRvbiB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBwYWRkaW5nOiAwO1xuXG4gICAgICAgIEBhcHBseSAtLXBhcGVyLWRyb3Bkb3duLW1lbnUtYnV0dG9uO1xuICAgICAgfVxuXG4gICAgICBwYXBlci1pbnB1dCB7XG4gICAgICAgIEBhcHBseSAtLXBhcGVyLWRyb3Bkb3duLW1lbnUtaW5wdXQ7XG4gICAgICB9XG5cbiAgICAgIGlyb24taWNvbiB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1kaXNhYmxlZC10ZXh0LWNvbG9yKTtcblxuICAgICAgICBAYXBwbHkgLS1wYXBlci1kcm9wZG93bi1tZW51LWljb247XG4gICAgICB9XG4gICAgPC9zdHlsZT5cbiAgPC90ZW1wbGF0ZT5cbjwvZG9tLW1vZHVsZT4nLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoaXMuY29udGVudCk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCBycz1jcihIVE1MRWxlbWVudCk7anIoe190ZW1wbGF0ZTp4ZWAKICAgIDxzdHlsZSBpbmNsdWRlPSJwYXBlci1kcm9wZG93bi1tZW51LXNoYXJlZC1zdHlsZXMiPjwvc3R5bGU+CgogICAgPHBhcGVyLW1lbnUtYnV0dG9uIGlkPSJtZW51QnV0dG9uIiB2ZXJ0aWNhbC1hbGlnbj0iW1t2ZXJ0aWNhbEFsaWduXV0iIGhvcml6b250YWwtYWxpZ249IltbaG9yaXpvbnRhbEFsaWduXV0iIGR5bmFtaWMtYWxpZ249IltbZHluYW1pY0FsaWduXV0iIHZlcnRpY2FsLW9mZnNldD0iW1tfY29tcHV0ZU1lbnVWZXJ0aWNhbE9mZnNldChub0xhYmVsRmxvYXQsIHZlcnRpY2FsT2Zmc2V0KV1dIiBkaXNhYmxlZD0iW1tkaXNhYmxlZF1dIiBuby1hbmltYXRpb25zPSJbW25vQW5pbWF0aW9uc11dIiBvbi1pcm9uLXNlbGVjdD0iX29uSXJvblNlbGVjdCIgb24taXJvbi1kZXNlbGVjdD0iX29uSXJvbkRlc2VsZWN0IiBvcGVuZWQ9Int7b3BlbmVkfX0iIGNsb3NlLW9uLWFjdGl2YXRlIGFsbG93LW91dHNpZGUtc2Nyb2xsPSJbW2FsbG93T3V0c2lkZVNjcm9sbF1dIiByZXN0b3JlLWZvY3VzLW9uLWNsb3NlPSJbW3Jlc3RvcmVGb2N1c09uQ2xvc2VdXSIgZXhwYW5kLXNpemluZy10YXJnZXQtZm9yLXNjcm9sbGJhcnM9IltbZXhwYW5kU2l6aW5nVGFyZ2V0Rm9yU2Nyb2xsYmFyc11dIj4KICAgICAgPCEtLSBzdXBwb3J0IGh5YnJpZCBtb2RlOiB1c2VyIG1pZ2h0IGJlIHVzaW5nIHBhcGVyLW1lbnUtYnV0dG9uIDEueCB3aGljaCBkaXN0cmlidXRlcyB2aWEgPGNvbnRlbnQ+IC0tPgogICAgICA8ZGl2IGNsYXNzPSJkcm9wZG93bi10cmlnZ2VyIiBzbG90PSJkcm9wZG93bi10cmlnZ2VyIj4KICAgICAgICA8cGFwZXItcmlwcGxlPjwvcGFwZXItcmlwcGxlPgogICAgICAgIDwhLS0gcGFwZXItaW5wdXQgaGFzIHR5cGU9InRleHQiIGZvciBhMTF5LCBkbyBub3QgcmVtb3ZlIC0tPgogICAgICAgIDxwYXBlci1pbnB1dCBpZD0iaW5wdXQiIHR5cGU9InRleHQiIGludmFsaWQ9IltbaW52YWxpZF1dIiByZWFkb25seSBkaXNhYmxlZD0iW1tkaXNhYmxlZF1dIiB2YWx1ZT0iW1t2YWx1ZV1dIiBwbGFjZWhvbGRlcj0iW1twbGFjZWhvbGRlcl1dIiBlcnJvci1tZXNzYWdlPSJbW2Vycm9yTWVzc2FnZV1dIiBhbHdheXMtZmxvYXQtbGFiZWw9IltbYWx3YXlzRmxvYXRMYWJlbF1dIiBuby1sYWJlbC1mbG9hdD0iW1tub0xhYmVsRmxvYXRdXSIgbGFiZWw9IltbbGFiZWxdXSIgaW5wdXQtcm9sZT0iYnV0dG9uIiBpbnB1dC1hcmlhLWhhc3BvcHVwPSJsaXN0Ym94IiBhdXRvY29tcGxldGU9Im9mZiI+CiAgICAgICAgICA8IS0tIHN1cHBvcnQgaHlicmlkIG1vZGU6IHVzZXIgbWlnaHQgYmUgdXNpbmcgcGFwZXItaW5wdXQgMS54IHdoaWNoIGRpc3RyaWJ1dGVzIHZpYSA8Y29udGVudD4gLS0+CiAgICAgICAgICA8aXJvbi1pY29uIGljb249InBhcGVyLWRyb3Bkb3duLW1lbnU6YXJyb3ctZHJvcC1kb3duIiBzdWZmaXggc2xvdD0ic3VmZml4Ij48L2lyb24taWNvbj4KICAgICAgICA8L3BhcGVyLWlucHV0PgogICAgICA8L2Rpdj4KICAgICAgPHNsb3QgaWQ9ImNvbnRlbnQiIG5hbWU9ImRyb3Bkb3duLWNvbnRlbnQiIHNsb3Q9ImRyb3Bkb3duLWNvbnRlbnQiPjwvc2xvdD4KICAgIDwvcGFwZXItbWVudS1idXR0b24+CmAsaXM6InBhcGVyLWRyb3Bkb3duLW1lbnUiLGJlaGF2aW9yczpbYWEscmEsZ2EseWFdLHByb3BlcnRpZXM6e3NlbGVjdGVkSXRlbUxhYmVsOnt0eXBlOlN0cmluZyxub3RpZnk6ITAscmVhZE9ubHk6ITB9LHNlbGVjdGVkSXRlbTp7dHlwZTpPYmplY3Qsbm90aWZ5OiEwLHJlYWRPbmx5OiEwfSx2YWx1ZTp7dHlwZTpTdHJpbmcsbm90aWZ5OiEwfSxsYWJlbDp7dHlwZTpTdHJpbmd9LHBsYWNlaG9sZGVyOnt0eXBlOlN0cmluZ30sZXJyb3JNZXNzYWdlOnt0eXBlOlN0cmluZ30sb3BlbmVkOnt0eXBlOkJvb2xlYW4sbm90aWZ5OiEwLHZhbHVlOiExLG9ic2VydmVyOiJfb3BlbmVkQ2hhbmdlZCJ9LGFsbG93T3V0c2lkZVNjcm9sbDp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxub0xhYmVsRmxvYXQ6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMSxyZWZsZWN0VG9BdHRyaWJ1dGU6ITB9LGFsd2F5c0Zsb2F0TGFiZWw6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sbm9BbmltYXRpb25zOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LGhvcml6b250YWxBbGlnbjp7dHlwZTpTdHJpbmcsdmFsdWU6InJpZ2h0In0sdmVydGljYWxBbGlnbjp7dHlwZTpTdHJpbmcsdmFsdWU6InRvcCJ9LHZlcnRpY2FsT2Zmc2V0Ok51bWJlcixkeW5hbWljQWxpZ246e3R5cGU6Qm9vbGVhbn0scmVzdG9yZUZvY3VzT25DbG9zZTp7dHlwZTpCb29sZWFuLHZhbHVlOiEwfSxleHBhbmRTaXppbmdUYXJnZXRGb3JTY3JvbGxiYXJzOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9fSxsaXN0ZW5lcnM6e3RhcDoiX29uVGFwIn0sa2V5QmluZGluZ3M6eyJ1cCBkb3duIjoib3BlbiIsZXNjOiJjbG9zZSJ9LG9ic2VydmVyczpbIl9zZWxlY3RlZEl0ZW1DaGFuZ2VkKHNlbGVjdGVkSXRlbSkiXSxfYXR0YWNoRG9tKHQpe2NvbnN0IGU9WSh0aGlzKTtyZXR1cm4gZS5hdHRhY2hTaGFkb3coe21vZGU6Im9wZW4iLGRlbGVnYXRlc0ZvY3VzOiEwLHNoYWR5VXBncmFkZUZyYWdtZW50OnR9KSxlLnNoYWRvd1Jvb3QuYXBwZW5kQ2hpbGQodCkscnMucHJvdG90eXBlLl9hdHRhY2hEb20uY2FsbCh0aGlzLHQpfSxmb2N1cygpe3RoaXMuJC5pbnB1dC5fZm9jdXNhYmxlRWxlbWVudC5mb2N1cygpfSxhdHRhY2hlZDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuY29udGVudEVsZW1lbnQ7dCYmdC5zZWxlY3RlZEl0ZW0mJnRoaXMuX3NldFNlbGVjdGVkSXRlbSh0LnNlbGVjdGVkSXRlbSl9LGdldCBjb250ZW50RWxlbWVudCgpe2Zvcih2YXIgdD1lcih0aGlzLiQuY29udGVudCkuZ2V0RGlzdHJpYnV0ZWROb2RlcygpLGU9MCxuPXQubGVuZ3RoO2U8bjtlKyspaWYodFtlXS5ub2RlVHlwZT09PU5vZGUuRUxFTUVOVF9OT0RFKXJldHVybiB0W2VdfSxvcGVuOmZ1bmN0aW9uKCl7dGhpcy4kLm1lbnVCdXR0b24ub3BlbigpfSxjbG9zZTpmdW5jdGlvbigpe3RoaXMuJC5tZW51QnV0dG9uLmNsb3NlKCl9LF9vbklyb25TZWxlY3Q6ZnVuY3Rpb24odCl7dGhpcy5fc2V0U2VsZWN0ZWRJdGVtKHQuZGV0YWlsLml0ZW0pfSxfb25Jcm9uRGVzZWxlY3Q6ZnVuY3Rpb24odCl7dGhpcy5fc2V0U2VsZWN0ZWRJdGVtKG51bGwpfSxfb25UYXA6ZnVuY3Rpb24odCl7dmkodCk9PT10aGlzJiZ0aGlzLm9wZW4oKX0sX3NlbGVjdGVkSXRlbUNoYW5nZWQ6ZnVuY3Rpb24odCl7dmFyIGU9IiI7ZT10P3QubGFiZWx8fHQuZ2V0QXR0cmlidXRlKCJsYWJlbCIpfHx0LnRleHRDb250ZW50LnRyaW0oKToiIix0aGlzLnZhbHVlPWUsdGhpcy5fc2V0U2VsZWN0ZWRJdGVtTGFiZWwoZSl9LF9jb21wdXRlTWVudVZlcnRpY2FsT2Zmc2V0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGV8fCh0Py00OjgpfSxfZ2V0VmFsaWRpdHk6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZGlzYWJsZWR8fCF0aGlzLnJlcXVpcmVkfHx0aGlzLnJlcXVpcmVkJiYhIXRoaXMudmFsdWV9LF9vcGVuZWRDaGFuZ2VkOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5jb250ZW50RWxlbWVudDt0JiZ0LnNldEF0dHJpYnV0ZSgiYXJpYS1leHBhbmRlZCIsdGhpcy5vcGVuZWQ/InRydWUiOiJmYWxzZSIpfX0pOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KdmFyIG9zPXtvdXRlclNjcm9sbDp7c2Nyb2xsOiEwfSxzaGFkb3dNb2RlOntzdGFuZGFyZDoyLHdhdGVyZmFsbDoxLCJ3YXRlcmZhbGwtdGFsbCI6MX0sdGFsbE1vZGU6eyJ3YXRlcmZhbGwtdGFsbCI6ITB9fTtqcih7X3RlbXBsYXRlOnhlYAogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LXZlcnRpY2FsOwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItaGVhZGVyLXBhbmVsOwogICAgICB9CgogICAgICAjbWFpbkNvbnRhaW5lciB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWZsZXg7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOwogICAgICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDsKICAgICAgfQoKICAgICAgI21haW5QYW5lbCB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LXZlcnRpY2FsOwogICAgICAgIEBhcHBseSAtLWxheW91dC1mbGV4OwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBtaW4taGVpZ2h0OiAwOwogICAgICAgIEBhcHBseSAtLXBhcGVyLWhlYWRlci1wYW5lbC1ib2R5OwogICAgICB9CgogICAgICAjbWFpbkNvbnRhaW5lciB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItaGVhZGVyLXBhbmVsLWNvbnRhaW5lcjsKICAgICAgfQoKICAgICAgLyoKICAgICAgICogbW9kZTogc2Nyb2xsCiAgICAgICAqLwogICAgICA6aG9zdChbbW9kZT1zY3JvbGxdKSAjbWFpbkNvbnRhaW5lciB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItaGVhZGVyLXBhbmVsLXNjcm9sbC1jb250YWluZXI7CiAgICAgICAgb3ZlcmZsb3c6IHZpc2libGU7CiAgICAgIH0KCiAgICAgIDpob3N0KFttb2RlPXNjcm9sbF0pIHsKICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKICAgICAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7CiAgICAgIH0KCiAgICAgIC8qCiAgICAgICAqIG1vZGU6IGNvdmVyCiAgICAgICAqLwogICAgICA6aG9zdChbbW9kZT1jb3Zlcl0pICNtYWluQ29udGFpbmVyIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1oZWFkZXItcGFuZWwtY292ZXItY29udGFpbmVyOwogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDA7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgYm90dG9tOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgIH0KCiAgICAgIDpob3N0KFttb2RlPWNvdmVyXSkgI21haW5QYW5lbCB7CiAgICAgICAgcG9zaXRpb246IHN0YXRpYzsKICAgICAgfQoKICAgICAgLyoKICAgICAgICogbW9kZTogc3RhbmRhcmQKICAgICAgICovCiAgICAgIDpob3N0KFttb2RlPXN0YW5kYXJkXSkgI21haW5Db250YWluZXIgewogICAgICAgIEBhcHBseSAtLXBhcGVyLWhlYWRlci1wYW5lbC1zdGFuZGFyZC1jb250YWluZXI7CiAgICAgIH0KCiAgICAgIC8qCiAgICAgICAqIG1vZGU6IHNlYW1lZAogICAgICAgKi8KICAgICAgOmhvc3QoW21vZGU9c2VhbWVkXSkgI21haW5Db250YWluZXIgewogICAgICAgIEBhcHBseSAtLXBhcGVyLWhlYWRlci1wYW5lbC1zZWFtZWQtY29udGFpbmVyOwogICAgICB9CgoKICAgICAgLyoKICAgICAgICogbW9kZTogd2F0ZXJmYWxsCiAgICAgICAqLwogICAgICA6aG9zdChbbW9kZT13YXRlcmZhbGxdKSAjbWFpbkNvbnRhaW5lciB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItaGVhZGVyLXBhbmVsLXdhdGVyZmFsbC1jb250YWluZXI7CiAgICAgIH0KCiAgICAgIC8qCiAgICAgICAqIG1vZGU6IHdhdGVyZmFsbC10YWxsCiAgICAgICAqLwogICAgICA6aG9zdChbbW9kZT13YXRlcmZhbGwtdGFsbF0pICNtYWluQ29udGFpbmVyIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1oZWFkZXItcGFuZWwtd2F0ZXJmYWxsLXRhbGwtY29udGFpbmVyOwogICAgICB9CgogICAgICAjZHJvcFNoYWRvdyB7CiAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjVzOwogICAgICAgIGhlaWdodDogNnB4OwogICAgICAgIGJveC1zaGFkb3c6IGluc2V0IDBweCA1cHggNnB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjQpOwogICAgICAgIEBhcHBseSAtLXBhcGVyLWhlYWRlci1wYW5lbC1zaGFkb3c7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogMDsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIHJpZ2h0OiAwOwogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgIH0KCiAgICAgICNkcm9wU2hhZG93Lmhhcy1zaGFkb3cgewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgIH0KCiAgICAgICNtYWluQ29udGFpbmVyID4gOjpzbG90dGVkKC5maXQpIHsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtZml0OwogICAgICB9CgogICAgPC9zdHlsZT4KCiAgICA8c2xvdCBpZD0iaGVhZGVyU2xvdCIgbmFtZT0iaGVhZGVyIj48L3Nsb3Q+CgogICAgPGRpdiBpZD0ibWFpblBhbmVsIj4KICAgICAgPGRpdiBpZD0ibWFpbkNvbnRhaW5lciIgY2xhc3NcJD0iW1tfY29tcHV0ZU1haW5Db250YWluZXJDbGFzcyhtb2RlKV1dIj4KICAgICAgICA8c2xvdD48L3Nsb3Q+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGlkPSJkcm9wU2hhZG93Ij48L2Rpdj4KICAgIDwvZGl2PgpgLGlzOiJwYXBlci1oZWFkZXItcGFuZWwiLHByb3BlcnRpZXM6e21vZGU6e3R5cGU6U3RyaW5nLHZhbHVlOiJzdGFuZGFyZCIsb2JzZXJ2ZXI6Il9tb2RlQ2hhbmdlZCIscmVmbGVjdFRvQXR0cmlidXRlOiEwfSxzaGFkb3c6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sdGFsbENsYXNzOnt0eXBlOlN0cmluZyx2YWx1ZToidGFsbCJ9LGF0VG9wOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITAsbm90aWZ5OiEwLHJlYWRPbmx5OiEwLHJlZmxlY3RUb0F0dHJpYnV0ZTohMH19LG9ic2VydmVyczpbIl9jb21wdXRlRHJvcFNoYWRvd0hpZGRlbihhdFRvcCwgbW9kZSwgc2hhZG93KSJdLGF0dGFjaGVkOmZ1bmN0aW9uKCl7dGhpcy5fYWRkTGlzdGVuZXIoKSx0aGlzLl9rZWVwU2Nyb2xsaW5nU3RhdGUoKX0sZGV0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLl9yZW1vdmVMaXN0ZW5lcigpfSxyZWFkeTpmdW5jdGlvbigpe3RoaXMuc2Nyb2xsSGFuZGxlcj10aGlzLl9zY3JvbGwuYmluZCh0aGlzKSxjb25zb2xlLndhcm4odGhpcy5pcywiaXMgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSBhcHAtbGF5b3V0IGluc3RlYWQhIil9LGdldCBoZWFkZXIoKXtyZXR1cm4gZXIodGhpcy4kLmhlYWRlclNsb3QpLmdldERpc3RyaWJ1dGVkTm9kZXMoKVswXX0sZ2V0IHNjcm9sbGVyKCl7cmV0dXJuIHRoaXMuX2dldFNjcm9sbGVyRm9yTW9kZSh0aGlzLm1vZGUpfSxnZXQgdmlzaWJsZVNoYWRvdygpe3JldHVybiB0aGlzLiQuZHJvcFNoYWRvdy5jbGFzc0xpc3QuY29udGFpbnMoImhhcy1zaGFkb3ciKX0sX2NvbXB1dGVEcm9wU2hhZG93SGlkZGVuOmZ1bmN0aW9uKHQsZSxuKXt2YXIgaT1vcy5zaGFkb3dNb2RlW2VdO3RoaXMudG9nZ2xlQ2xhc3MoImhhcy1zaGFkb3ciLCEhdGhpcy5zaGFkb3d8fCgyPT09aXx8MT09PWkmJiF0KSx0aGlzLiQuZHJvcFNoYWRvdyl9LF9jb21wdXRlTWFpbkNvbnRhaW5lckNsYXNzOmZ1bmN0aW9uKHQpe3ZhciBlPXt9O3JldHVybiBlLmZsZXg9ImNvdmVyIiE9PXQsT2JqZWN0LmtleXMoZSkuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gZVt0XX0pKS5qb2luKCIgIil9LF9hZGRMaXN0ZW5lcjpmdW5jdGlvbigpe3RoaXMuc2Nyb2xsZXIuYWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xsIix0aGlzLnNjcm9sbEhhbmRsZXIpfSxfcmVtb3ZlTGlzdGVuZXI6ZnVuY3Rpb24oKXt0aGlzLnNjcm9sbGVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoInNjcm9sbCIsdGhpcy5zY3JvbGxIYW5kbGVyKX0sX21vZGVDaGFuZ2VkOmZ1bmN0aW9uKHQsZSl7dmFyIG49b3MsaT10aGlzLmhlYWRlcjtpJiYobi50YWxsTW9kZVtlXSYmIW4udGFsbE1vZGVbdF0/KGkuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLnRhbGxDbGFzcyksdGhpcy5hc3luYygoZnVuY3Rpb24oKXtpLmNsYXNzTGlzdC5yZW1vdmUoImFuaW1hdGUiKX0pLDIwMCkpOnRoaXMudG9nZ2xlQ2xhc3MoImFuaW1hdGUiLG4udGFsbE1vZGVbdF0saSkpLHRoaXMuX2tlZXBTY3JvbGxpbmdTdGF0ZSgpfSxfa2VlcFNjcm9sbGluZ1N0YXRlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5zY3JvbGxlcixlPXRoaXMuaGVhZGVyO3RoaXMuX3NldEF0VG9wKDA9PT10LnNjcm9sbFRvcCksZSYmdGhpcy50YWxsQ2xhc3MmJm9zLnRhbGxNb2RlW3RoaXMubW9kZV0mJnRoaXMudG9nZ2xlQ2xhc3ModGhpcy50YWxsQ2xhc3MsdGhpcy5hdFRvcHx8ZS5jbGFzc0xpc3QuY29udGFpbnModGhpcy50YWxsQ2xhc3MpJiZ0LnNjcm9sbEhlaWdodDx0aGlzLm9mZnNldEhlaWdodCxlKX0sX3Njcm9sbDpmdW5jdGlvbigpe3RoaXMuX2tlZXBTY3JvbGxpbmdTdGF0ZSgpLHRoaXMuZmlyZSgiY29udGVudC1zY3JvbGwiLHt0YXJnZXQ6dGhpcy5zY3JvbGxlcn0se2J1YmJsZXM6ITF9KX0sX2dldFNjcm9sbGVyRm9yTW9kZTpmdW5jdGlvbih0KXtyZXR1cm4gb3Mub3V0ZXJTY3JvbGxbdF0/dGhpczp0aGlzLiQubWFpbkNvbnRhaW5lcn19KSwKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmpyKHtpczoicGFwZXItaWNvbi1idXR0b24iLF90ZW1wbGF0ZTp4ZWAKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgcGFkZGluZzogOHB4OwogICAgICAgIG91dGxpbmU6IG5vbmU7CiAgICAgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICAtbW96LXVzZXItc2VsZWN0OiBub25lOwogICAgICAgIC1tcy11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgei1pbmRleDogMDsKICAgICAgICBsaW5lLWhlaWdodDogMTsKCiAgICAgICAgd2lkdGg6IDQwcHg7CiAgICAgICAgaGVpZ2h0OiA0MHB4OwoKICAgICAgICAvKgogICAgICAgICAgTk9URTogQm90aCB2YWx1ZXMgYXJlIG5lZWRlZCwgc2luY2Ugc29tZSBwaG9uZXMgcmVxdWlyZSB0aGUgdmFsdWUgdG8KICAgICAgICAgIGJlIFxgdHJhbnNwYXJlbnRcYC4KICAgICAgICAqLwogICAgICAgIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwKTsKICAgICAgICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50OwoKICAgICAgICAvKiBCZWNhdXNlIG9mIHBvbHltZXIvMjU1OCwgdGhpcyBzdHlsZSBoYXMgbG93ZXIgc3BlY2lmaWNpdHkgdGhhbiAqICovCiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveCAhaW1wb3J0YW50OwoKICAgICAgICBAYXBwbHkgLS1wYXBlci1pY29uLWJ1dHRvbjsKICAgICAgfQoKICAgICAgOmhvc3QgI2luayB7CiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLWljb24tYnV0dG9uLWluay1jb2xvciwgdmFyKC0tcHJpbWFyeS10ZXh0LWNvbG9yKSk7CiAgICAgICAgb3BhY2l0eTogMC42OwogICAgICB9CgogICAgICA6aG9zdChbZGlzYWJsZWRdKSB7CiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLWljb24tYnV0dG9uLWRpc2FibGVkLXRleHQsIHZhcigtLWRpc2FibGVkLXRleHQtY29sb3IpKTsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgICBjdXJzb3I6IGF1dG87CgogICAgICAgIEBhcHBseSAtLXBhcGVyLWljb24tYnV0dG9uLWRpc2FibGVkOwogICAgICB9CgogICAgICA6aG9zdChbaGlkZGVuXSkgewogICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICAgICAgfQoKICAgICAgOmhvc3QoOmhvdmVyKSB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItaWNvbi1idXR0b24taG92ZXI7CiAgICAgIH0KCiAgICAgIGlyb24taWNvbiB7CiAgICAgICAgLS1pcm9uLWljb24td2lkdGg6IDEwMCU7CiAgICAgICAgLS1pcm9uLWljb24taGVpZ2h0OiAxMDAlOwogICAgICB9CiAgICA8L3N0eWxlPgoKICAgIDxpcm9uLWljb24gaWQ9Imljb24iIHNyYz0iW1tzcmNdXSIgaWNvbj0iW1tpY29uXV0iCiAgICAgICAgICAgICAgIGFsdCQ9IltbYWx0XV0iPjwvaXJvbi1pY29uPgogIGAsaG9zdEF0dHJpYnV0ZXM6e3JvbGU6ImJ1dHRvbiIsdGFiaW5kZXg6IjAifSxiZWhhdmlvcnM6W3hhXSxyZWdpc3RlcmVkOmZ1bmN0aW9uKCl7dGhpcy5fdGVtcGxhdGUuc2V0QXR0cmlidXRlKCJzdHJpcC13aGl0ZXNwYWNlIiwiIil9LHByb3BlcnRpZXM6e3NyYzp7dHlwZTpTdHJpbmd9LGljb246e3R5cGU6U3RyaW5nfSxhbHQ6e3R5cGU6U3RyaW5nLG9ic2VydmVyOiJfYWx0Q2hhbmdlZCJ9fSxfYWx0Q2hhbmdlZDpmdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuZ2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIik7biYmZSE9bnx8dGhpcy5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWwiLHQpfX0pLAovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KanIoe190ZW1wbGF0ZTp4ZWAKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgd2lkdGg6IDQwMHB4OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkOwogICAgICAgIHBhZGRpbmc6IDJweDsKICAgICAgICAtbW96LWFwcGVhcmFuY2U6IHRleHRhcmVhOwogICAgICAgIC13ZWJraXQtYXBwZWFyYW5jZTogdGV4dGFyZWE7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgfQoKICAgICAgLm1pcnJvci10ZXh0IHsKICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47CiAgICAgICAgd29yZC13cmFwOiBicmVhay13b3JkOwogICAgICAgIEBhcHBseSAtLWlyb24tYXV0b2dyb3ctdGV4dGFyZWE7CiAgICAgIH0KCiAgICAgIC5maXQgewogICAgICAgIEBhcHBseSAtLWxheW91dC1maXQ7CiAgICAgIH0KCiAgICAgIHRleHRhcmVhIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgb3V0bGluZTogbm9uZTsKICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgICAgcmVzaXplOiBub25lOwogICAgICAgIGJhY2tncm91bmQ6IGluaGVyaXQ7CiAgICAgICAgY29sb3I6IGluaGVyaXQ7CiAgICAgICAgLyogc2VlIGNvbW1lbnRzIGluIHRlbXBsYXRlICovCiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIGZvbnQtc2l6ZTogaW5oZXJpdDsKICAgICAgICBmb250LWZhbWlseTogaW5oZXJpdDsKICAgICAgICBsaW5lLWhlaWdodDogaW5oZXJpdDsKICAgICAgICB0ZXh0LWFsaWduOiBpbmhlcml0OwogICAgICAgIEBhcHBseSAtLWlyb24tYXV0b2dyb3ctdGV4dGFyZWE7CiAgICAgIH0KCiAgICAgIHRleHRhcmVhOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHsKICAgICAgICBAYXBwbHkgLS1pcm9uLWF1dG9ncm93LXRleHRhcmVhLXBsYWNlaG9sZGVyOwogICAgICB9CgogICAgICB0ZXh0YXJlYTotbW96LXBsYWNlaG9sZGVyIHsKICAgICAgICBAYXBwbHkgLS1pcm9uLWF1dG9ncm93LXRleHRhcmVhLXBsYWNlaG9sZGVyOwogICAgICB9CgogICAgICB0ZXh0YXJlYTo6LW1vei1wbGFjZWhvbGRlciB7CiAgICAgICAgQGFwcGx5IC0taXJvbi1hdXRvZ3Jvdy10ZXh0YXJlYS1wbGFjZWhvbGRlcjsKICAgICAgfQoKICAgICAgdGV4dGFyZWE6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHsKICAgICAgICBAYXBwbHkgLS1pcm9uLWF1dG9ncm93LXRleHRhcmVhLXBsYWNlaG9sZGVyOwogICAgICB9CiAgICA8L3N0eWxlPgoKICAgIDwhLS0gdGhlIG1pcnJvciBzaXplcyB0aGUgaW5wdXQvdGV4dGFyZWEgc28gaXQgZ3Jvd3Mgd2l0aCB0eXBpbmcgLS0+CiAgICA8IS0tIHVzZSAmIzE2MDsgaW5zdGVhZCAmbmJzcDsgb2YgdG8gYWxsb3cgdGhpcyBlbGVtZW50IHRvIGJlIHVzZWQgaW4gWEhUTUwgLS0+CiAgICA8ZGl2IGlkPSJtaXJyb3IiIGNsYXNzPSJtaXJyb3ItdGV4dCIgYXJpYS1oaWRkZW49InRydWUiPiZuYnNwOzwvZGl2PgoKICAgIDwhLS0gc2l6ZSB0aGUgaW5wdXQvdGV4dGFyZWEgd2l0aCBhIGRpdiwgYmVjYXVzZSB0aGUgdGV4dGFyZWEgaGFzIGludHJpbnNpYyBzaXplIGluIGZmIC0tPgogICAgPGRpdiBjbGFzcz0idGV4dGFyZWEtY29udGFpbmVyIGZpdCI+CiAgICAgIDx0ZXh0YXJlYSBpZD0idGV4dGFyZWEiIG5hbWUkPSJbW25hbWVdXSIgYXJpYS1sYWJlbCQ9IltbbGFiZWxdXSIgYXV0b2NvbXBsZXRlJD0iW1thdXRvY29tcGxldGVdXSIgYXV0b2ZvY3VzJD0iW1thdXRvZm9jdXNdXSIgYXV0b2NhcGl0YWxpemUkPSJbW2F1dG9jYXBpdGFsaXplXV0iIGlucHV0bW9kZSQ9IltbaW5wdXRtb2RlXV0iIHBsYWNlaG9sZGVyJD0iW1twbGFjZWhvbGRlcl1dIiByZWFkb25seSQ9IltbcmVhZG9ubHldXSIgcmVxdWlyZWQkPSJbW3JlcXVpcmVkXV0iIGRpc2FibGVkJD0iW1tkaXNhYmxlZF1dIiByb3dzJD0iW1tyb3dzXV0iIG1pbmxlbmd0aCQ9IltbbWlubGVuZ3RoXV0iIG1heGxlbmd0aCQ9IltbbWF4bGVuZ3RoXV0iPjwvdGV4dGFyZWE+CiAgICA8L2Rpdj4KYCxpczoiaXJvbi1hdXRvZ3Jvdy10ZXh0YXJlYSIsYmVoYXZpb3JzOlt5YSxyYV0scHJvcGVydGllczp7dmFsdWU6e29ic2VydmVyOiJfdmFsdWVDaGFuZ2VkIix0eXBlOlN0cmluZyxub3RpZnk6ITB9LGJpbmRWYWx1ZTp7b2JzZXJ2ZXI6Il9iaW5kVmFsdWVDaGFuZ2VkIix0eXBlOlN0cmluZyxub3RpZnk6ITB9LHJvd3M6e3R5cGU6TnVtYmVyLHZhbHVlOjEsb2JzZXJ2ZXI6Il91cGRhdGVDYWNoZWQifSxtYXhSb3dzOnt0eXBlOk51bWJlcix2YWx1ZTowLG9ic2VydmVyOiJfdXBkYXRlQ2FjaGVkIn0sYXV0b2NvbXBsZXRlOnt0eXBlOlN0cmluZyx2YWx1ZToib2ZmIn0sYXV0b2ZvY3VzOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LGF1dG9jYXBpdGFsaXplOnt0eXBlOlN0cmluZyx2YWx1ZToibm9uZSJ9LGlucHV0bW9kZTp7dHlwZTpTdHJpbmd9LHBsYWNlaG9sZGVyOnt0eXBlOlN0cmluZ30scmVhZG9ubHk6e3R5cGU6U3RyaW5nfSxyZXF1aXJlZDp7dHlwZTpCb29sZWFufSxtaW5sZW5ndGg6e3R5cGU6TnVtYmVyfSxtYXhsZW5ndGg6e3R5cGU6TnVtYmVyfSxsYWJlbDp7dHlwZTpTdHJpbmd9fSxsaXN0ZW5lcnM6e2lucHV0OiJfb25JbnB1dCJ9LGdldCB0ZXh0YXJlYSgpe3JldHVybiB0aGlzLiQudGV4dGFyZWF9LGdldCBzZWxlY3Rpb25TdGFydCgpe3JldHVybiB0aGlzLiQudGV4dGFyZWEuc2VsZWN0aW9uU3RhcnR9LGdldCBzZWxlY3Rpb25FbmQoKXtyZXR1cm4gdGhpcy4kLnRleHRhcmVhLnNlbGVjdGlvbkVuZH0sc2V0IHNlbGVjdGlvblN0YXJ0KHQpe3RoaXMuJC50ZXh0YXJlYS5zZWxlY3Rpb25TdGFydD10fSxzZXQgc2VsZWN0aW9uRW5kKHQpe3RoaXMuJC50ZXh0YXJlYS5zZWxlY3Rpb25FbmQ9dH0sYXR0YWNoZWQ6ZnVuY3Rpb24oKXtuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9pUCg/OltvYV1kfGhvbmUpLykmJiFuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9PUyAxWzM0NTY3ODldLykmJih0aGlzLiQudGV4dGFyZWEuc3R5bGUubWFyZ2luTGVmdD0iLTNweCIpfSx2YWxpZGF0ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuJC50ZXh0YXJlYS52YWxpZGl0eS52YWxpZDtyZXR1cm4gdCYmKHRoaXMucmVxdWlyZWQmJiIiPT09dGhpcy52YWx1ZT90PSExOnRoaXMuaGFzVmFsaWRhdG9yKCkmJih0PXlhLnZhbGlkYXRlLmNhbGwodGhpcyx0aGlzLnZhbHVlKSkpLHRoaXMuaW52YWxpZD0hdCx0aGlzLmZpcmUoImlyb24taW5wdXQtdmFsaWRhdGUiKSx0fSxfYmluZFZhbHVlQ2hhbmdlZDpmdW5jdGlvbih0KXt0aGlzLnZhbHVlPXR9LF92YWx1ZUNoYW5nZWQ6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy50ZXh0YXJlYTtlJiYoZS52YWx1ZSE9PXQmJihlLnZhbHVlPXR8fDA9PT10P3Q6IiIpLHRoaXMuYmluZFZhbHVlPXQsdGhpcy4kLm1pcnJvci5pbm5lckhUTUw9dGhpcy5fdmFsdWVGb3JNaXJyb3IoKSx0aGlzLmZpcmUoImJpbmQtdmFsdWUtY2hhbmdlZCIse3ZhbHVlOnRoaXMuYmluZFZhbHVlfSkpfSxfb25JbnB1dDpmdW5jdGlvbih0KXt2YXIgZT1lcih0KS5wYXRoO3RoaXMudmFsdWU9ZT9lWzBdLnZhbHVlOnQudGFyZ2V0LnZhbHVlfSxfY29uc3RyYWluOmZ1bmN0aW9uKHQpe3ZhciBlO2Zvcih0PXR8fFsiIl0sZT10aGlzLm1heFJvd3M+MCYmdC5sZW5ndGg+dGhpcy5tYXhSb3dzP3Quc2xpY2UoMCx0aGlzLm1heFJvd3MpOnQuc2xpY2UoMCk7dGhpcy5yb3dzPjAmJmUubGVuZ3RoPHRoaXMucm93czspZS5wdXNoKCIiKTtyZXR1cm4gZS5qb2luKCI8YnIvPiIpKyImIzE2MDsifSxfdmFsdWVGb3JNaXJyb3I6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnRleHRhcmVhO2lmKHQpcmV0dXJuIHRoaXMudG9rZW5zPXQmJnQudmFsdWU/dC52YWx1ZS5yZXBsYWNlKC8mL2dtLCImYW1wOyIpLnJlcGxhY2UoLyIvZ20sIiZxdW90OyIpLnJlcGxhY2UoLycvZ20sIiYjMzk7IikucmVwbGFjZSgvPC9nbSwiJmx0OyIpLnJlcGxhY2UoLz4vZ20sIiZndDsiKS5zcGxpdCgiXG4iKTpbIiJdLHRoaXMuX2NvbnN0cmFpbih0aGlzLnRva2Vucyl9LF91cGRhdGVDYWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLiQubWlycm9yLmlubmVySFRNTD10aGlzLl9jb25zdHJhaW4odGhpcy50b2tlbnMpfX0pLAovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KanIoe190ZW1wbGF0ZTp4ZWAKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CgogICAgICA6aG9zdChbaGlkZGVuXSkgewogICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICAgICAgfQoKICAgICAgbGFiZWwgewogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICB9CiAgICA8L3N0eWxlPgoKICAgIDxwYXBlci1pbnB1dC1jb250YWluZXIgbm8tbGFiZWwtZmxvYXQkPSJbW25vTGFiZWxGbG9hdF1dIiBhbHdheXMtZmxvYXQtbGFiZWw9IltbX2NvbXB1dGVBbHdheXNGbG9hdExhYmVsKGFsd2F5c0Zsb2F0TGFiZWwscGxhY2Vob2xkZXIpXV0iIGF1dG8tdmFsaWRhdGUkPSJbW2F1dG9WYWxpZGF0ZV1dIiBkaXNhYmxlZCQ9IltbZGlzYWJsZWRdXSIgaW52YWxpZD0iW1tpbnZhbGlkXV0iPgoKICAgICAgPGxhYmVsIGhpZGRlbiQ9IltbIWxhYmVsXV0iIGFyaWEtaGlkZGVuPSJ0cnVlIiBmb3IkPSJbW19pbnB1dElkXV0iIHNsb3Q9ImxhYmVsIj5bW2xhYmVsXV08L2xhYmVsPgoKICAgICAgPGlyb24tYXV0b2dyb3ctdGV4dGFyZWEgY2xhc3M9InBhcGVyLWlucHV0LWlucHV0IiBzbG90PSJpbnB1dCIgaWQkPSJbW19pbnB1dElkXV0iIGFyaWEtbGFiZWxsZWRieSQ9IltbX2FyaWFMYWJlbGxlZEJ5XV0iIGFyaWEtZGVzY3JpYmVkYnkkPSJbW19hcmlhRGVzY3JpYmVkQnldXSIgYmluZC12YWx1ZT0ie3t2YWx1ZX19IiBpbnZhbGlkPSJ7e2ludmFsaWR9fSIgdmFsaWRhdG9yJD0iW1t2YWxpZGF0b3JdXSIgZGlzYWJsZWQkPSJbW2Rpc2FibGVkXV0iIGF1dG9jb21wbGV0ZSQ9IltbYXV0b2NvbXBsZXRlXV0iIGF1dG9mb2N1cyQ9IltbYXV0b2ZvY3VzXV0iIGlucHV0bW9kZSQ9IltbaW5wdXRtb2RlXV0iIG5hbWUkPSJbW25hbWVdXSIgcGxhY2Vob2xkZXIkPSJbW3BsYWNlaG9sZGVyXV0iIHJlYWRvbmx5JD0iW1tyZWFkb25seV1dIiByZXF1aXJlZCQ9IltbcmVxdWlyZWRdXSIgbWlubGVuZ3RoJD0iW1ttaW5sZW5ndGhdXSIgbWF4bGVuZ3RoJD0iW1ttYXhsZW5ndGhdXSIgYXV0b2NhcGl0YWxpemUkPSJbW2F1dG9jYXBpdGFsaXplXV0iIHJvd3MkPSJbW3Jvd3NdXSIgbWF4LXJvd3MkPSJbW21heFJvd3NdXSIgb24tY2hhbmdlPSJfb25DaGFuZ2UiPjwvaXJvbi1hdXRvZ3Jvdy10ZXh0YXJlYT4KCiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tlcnJvck1lc3NhZ2VdXSI+CiAgICAgICAgPHBhcGVyLWlucHV0LWVycm9yIGFyaWEtbGl2ZT0iYXNzZXJ0aXZlIiBzbG90PSJhZGQtb24iPltbZXJyb3JNZXNzYWdlXV08L3BhcGVyLWlucHV0LWVycm9yPgogICAgICA8L3RlbXBsYXRlPgoKICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW2NoYXJDb3VudGVyXV0iPgogICAgICAgIDxwYXBlci1pbnB1dC1jaGFyLWNvdW50ZXIgc2xvdD0iYWRkLW9uIj48L3BhcGVyLWlucHV0LWNoYXItY291bnRlcj4KICAgICAgPC90ZW1wbGF0ZT4KCiAgICA8L3BhcGVyLWlucHV0LWNvbnRhaW5lcj4KYCxpczoicGFwZXItdGV4dGFyZWEiLGJlaGF2aW9yczpbSmEsZ2FdLHByb3BlcnRpZXM6e19hcmlhTGFiZWxsZWRCeTp7b2JzZXJ2ZXI6Il9hcmlhTGFiZWxsZWRCeUNoYW5nZWQiLHR5cGU6U3RyaW5nfSxfYXJpYURlc2NyaWJlZEJ5OntvYnNlcnZlcjoiX2FyaWFEZXNjcmliZWRCeUNoYW5nZWQiLHR5cGU6U3RyaW5nfSx2YWx1ZTp7dHlwZTpTdHJpbmd9LHJvd3M6e3R5cGU6TnVtYmVyLHZhbHVlOjF9LG1heFJvd3M6e3R5cGU6TnVtYmVyLHZhbHVlOjB9fSxnZXQgc2VsZWN0aW9uU3RhcnQoKXtyZXR1cm4gdGhpcy4kLmlucHV0LnRleHRhcmVhLnNlbGVjdGlvblN0YXJ0fSxzZXQgc2VsZWN0aW9uU3RhcnQodCl7dGhpcy4kLmlucHV0LnRleHRhcmVhLnNlbGVjdGlvblN0YXJ0PXR9LGdldCBzZWxlY3Rpb25FbmQoKXtyZXR1cm4gdGhpcy4kLmlucHV0LnRleHRhcmVhLnNlbGVjdGlvbkVuZH0sc2V0IHNlbGVjdGlvbkVuZCh0KXt0aGlzLiQuaW5wdXQudGV4dGFyZWEuc2VsZWN0aW9uRW5kPXR9LF9hcmlhTGFiZWxsZWRCeUNoYW5nZWQ6ZnVuY3Rpb24odCl7dGhpcy5fZm9jdXNhYmxlRWxlbWVudC5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWxsZWRieSIsdCl9LF9hcmlhRGVzY3JpYmVkQnlDaGFuZ2VkOmZ1bmN0aW9uKHQpe3RoaXMuX2ZvY3VzYWJsZUVsZW1lbnQuc2V0QXR0cmlidXRlKCJhcmlhLWRlc2NyaWJlZGJ5Iix0KX0sZ2V0IF9mb2N1c2FibGVFbGVtZW50KCl7cmV0dXJuIHRoaXMuaW5wdXRFbGVtZW50LnRleHRhcmVhfX0pOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KY29uc3QgYXM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGVtcGxhdGUiKTthcy5zZXRBdHRyaWJ1dGUoInN0eWxlIiwiZGlzcGxheTogbm9uZTsiKSxhcy5pbm5lckhUTUw9Ijxkb20tbW9kdWxlIGlkPVwicGFwZXItaXRlbS1zaGFyZWQtc3R5bGVzXCI+XG4gIDx0ZW1wbGF0ZT5cbiAgICA8c3R5bGU+XG4gICAgICA6aG9zdCwgLnBhcGVyLWl0ZW0ge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBtaW4taGVpZ2h0OiB2YXIoLS1wYXBlci1pdGVtLW1pbi1oZWlnaHQsIDQ4cHgpO1xuICAgICAgICBwYWRkaW5nOiAwcHggMTZweDtcbiAgICAgIH1cblxuICAgICAgLnBhcGVyLWl0ZW0ge1xuICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LXN1YmhlYWQ7XG4gICAgICAgIGJvcmRlcjpub25lO1xuICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICB9XG5cbiAgICAgIDpob3N0KFtoaWRkZW5dKSwgLnBhcGVyLWl0ZW1baGlkZGVuXSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgIH1cblxuICAgICAgOmhvc3QoLmlyb24tc2VsZWN0ZWQpLCAucGFwZXItaXRlbS5pcm9uLXNlbGVjdGVkIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXBhcGVyLWl0ZW0tc2VsZWN0ZWQtd2VpZ2h0LCBib2xkKTtcblxuICAgICAgICBAYXBwbHkgLS1wYXBlci1pdGVtLXNlbGVjdGVkO1xuICAgICAgfVxuXG4gICAgICA6aG9zdChbZGlzYWJsZWRdKSwgLnBhcGVyLWl0ZW1bZGlzYWJsZWRdIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLWl0ZW0tZGlzYWJsZWQtY29sb3IsIHZhcigtLWRpc2FibGVkLXRleHQtY29sb3IpKTtcblxuICAgICAgICBAYXBwbHkgLS1wYXBlci1pdGVtLWRpc2FibGVkO1xuICAgICAgfVxuXG4gICAgICA6aG9zdCg6Zm9jdXMpLCAucGFwZXItaXRlbTpmb2N1cyB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgb3V0bGluZTogMDtcblxuICAgICAgICBAYXBwbHkgLS1wYXBlci1pdGVtLWZvY3VzZWQ7XG4gICAgICB9XG5cbiAgICAgIDpob3N0KDpmb2N1cyk6YmVmb3JlLCAucGFwZXItaXRlbTpmb2N1czpiZWZvcmUge1xuICAgICAgICBAYXBwbHkgLS1sYXlvdXQtZml0O1xuXG4gICAgICAgIGJhY2tncm91bmQ6IGN1cnJlbnRDb2xvcjtcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgIG9wYWNpdHk6IHZhcigtLWRhcmstZGl2aWRlci1vcGFjaXR5KTtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG5cbiAgICAgICAgQGFwcGx5IC0tcGFwZXItaXRlbS1mb2N1c2VkLWJlZm9yZTtcbiAgICAgIH1cbiAgICA8L3N0eWxlPlxuICA8L3RlbXBsYXRlPlxuPC9kb20tbW9kdWxlPiIsZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChhcy5jb250ZW50KTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNvbnN0IHNzPVthYSxyYSx7aG9zdEF0dHJpYnV0ZXM6e3JvbGU6Im9wdGlvbiIsdGFiaW5kZXg6IjAifX1dOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KanIoe190ZW1wbGF0ZTp4ZWAKICAgIDxzdHlsZSBpbmNsdWRlPSJwYXBlci1pdGVtLXNoYXJlZC1zdHlsZXMiPgogICAgICA6aG9zdCB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWhvcml6b250YWw7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWNlbnRlcjsKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LXN1YmhlYWQ7CgogICAgICAgIEBhcHBseSAtLXBhcGVyLWl0ZW07CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgICA8c2xvdD48L3Nsb3Q+CmAsaXM6InBhcGVyLWl0ZW0iLGJlaGF2aW9yczpbc3NdfSksCi8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpqcih7X3RlbXBsYXRlOnhlYAogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsgLyogbmVlZGVkIGZvciB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcyB0byB3b3JrIG9uIGZmICovCiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LXZlcnRpY2FsOwogICAgICAgIEBhcHBseSAtLWxheW91dC1jZW50ZXItanVzdGlmaWVkOwogICAgICAgIEBhcHBseSAtLWxheW91dC1mbGV4OwogICAgICB9CgogICAgICA6aG9zdChbdHdvLWxpbmVdKSB7CiAgICAgICAgbWluLWhlaWdodDogdmFyKC0tcGFwZXItaXRlbS1ib2R5LXR3by1saW5lLW1pbi1oZWlnaHQsIDcycHgpOwogICAgICB9CgogICAgICA6aG9zdChbdGhyZWUtbGluZV0pIHsKICAgICAgICBtaW4taGVpZ2h0OiB2YXIoLS1wYXBlci1pdGVtLWJvZHktdGhyZWUtbGluZS1taW4taGVpZ2h0LCA4OHB4KTsKICAgICAgfQoKICAgICAgOmhvc3QgPiA6OnNsb3R0ZWQoKikgewogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgfQoKICAgICAgOmhvc3QgPiA6OnNsb3R0ZWQoW3NlY29uZGFyeV0pIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LWJvZHkxOwoKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItaXRlbS1ib2R5LXNlY29uZGFyeS1jb2xvciwgdmFyKC0tc2Vjb25kYXJ5LXRleHQtY29sb3IpKTsKCiAgICAgICAgQGFwcGx5IC0tcGFwZXItaXRlbS1ib2R5LXNlY29uZGFyeTsKICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8c2xvdD48L3Nsb3Q+CmAsaXM6InBhcGVyLWl0ZW0tYm9keSJ9KSwKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmpyKHtfdGVtcGxhdGU6eGVgCiAgICA8c3R5bGUgaW5jbHVkZT0icGFwZXItaXRlbS1zaGFyZWQtc3R5bGVzIj48L3N0eWxlPgogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWhvcml6b250YWw7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWNlbnRlcjsKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LXN1YmhlYWQ7CgogICAgICAgIEBhcHBseSAtLXBhcGVyLWl0ZW07CiAgICAgICAgQGFwcGx5IC0tcGFwZXItaWNvbi1pdGVtOwogICAgICB9CgogICAgICAuY29udGVudC1pY29uIHsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtaG9yaXpvbnRhbDsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtY2VudGVyOwoKICAgICAgICB3aWR0aDogdmFyKC0tcGFwZXItaXRlbS1pY29uLXdpZHRoLCA1NnB4KTsKICAgICAgICBAYXBwbHkgLS1wYXBlci1pdGVtLWljb247CiAgICAgIH0KICAgIDwvc3R5bGU+CgogICAgPGRpdiBpZD0iY29udGVudEljb24iIGNsYXNzPSJjb250ZW50LWljb24iPgogICAgICA8c2xvdCBuYW1lPSJpdGVtLWljb24iPjwvc2xvdD4KICAgIDwvZGl2PgogICAgPHNsb3Q+PC9zbG90PgpgLGlzOiJwYXBlci1pY29uLWl0ZW0iLGJlaGF2aW9yczpbc3NdfSk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCBscz17cHJvcGVydGllczp7bXVsdGk6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMSxvYnNlcnZlcjoibXVsdGlDaGFuZ2VkIn0sc2VsZWN0ZWRWYWx1ZXM6e3R5cGU6QXJyYXksbm90aWZ5OiEwLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuW119fSxzZWxlY3RlZEl0ZW1zOnt0eXBlOkFycmF5LHJlYWRPbmx5OiEwLG5vdGlmeTohMCx2YWx1ZTpmdW5jdGlvbigpe3JldHVybltdfX19LG9ic2VydmVyczpbIl91cGRhdGVTZWxlY3RlZChzZWxlY3RlZFZhbHVlcy5zcGxpY2VzKSJdLHNlbGVjdDpmdW5jdGlvbih0KXt0aGlzLm11bHRpP3RoaXMuX3RvZ2dsZVNlbGVjdGVkKHQpOnRoaXMuc2VsZWN0ZWQ9dH0sbXVsdGlDaGFuZ2VkOmZ1bmN0aW9uKHQpe3RoaXMuX3NlbGVjdGlvbi5tdWx0aT10LHRoaXMuX3VwZGF0ZVNlbGVjdGVkKCl9LGdldCBfc2hvdWxkVXBkYXRlU2VsZWN0aW9uKCl7cmV0dXJuIG51bGwhPXRoaXMuc2VsZWN0ZWR8fG51bGwhPXRoaXMuc2VsZWN0ZWRWYWx1ZXMmJnRoaXMuc2VsZWN0ZWRWYWx1ZXMubGVuZ3RofSxfdXBkYXRlQXR0ckZvclNlbGVjdGVkOmZ1bmN0aW9uKCl7dGhpcy5tdWx0aT90aGlzLnNlbGVjdGVkSXRlbXMmJnRoaXMuc2VsZWN0ZWRJdGVtcy5sZW5ndGg+MCYmKHRoaXMuc2VsZWN0ZWRWYWx1ZXM9dGhpcy5zZWxlY3RlZEl0ZW1zLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2luZGV4VG9WYWx1ZSh0aGlzLmluZGV4T2YodCkpfSksdGhpcykuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9dH0pLHRoaXMpKTplYS5fdXBkYXRlQXR0ckZvclNlbGVjdGVkLmFwcGx5KHRoaXMpfSxfdXBkYXRlU2VsZWN0ZWQ6ZnVuY3Rpb24oKXt0aGlzLm11bHRpP3RoaXMuX3NlbGVjdE11bHRpKHRoaXMuc2VsZWN0ZWRWYWx1ZXMpOnRoaXMuX3NlbGVjdFNlbGVjdGVkKHRoaXMuc2VsZWN0ZWQpfSxfc2VsZWN0TXVsdGk6ZnVuY3Rpb24odCl7dmFyIGU9KHRoaXMuX3ZhbHVlc1RvSXRlbXModD10fHxbXSl8fFtdKS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBudWxsIT10fSkpO3RoaXMuX3NlbGVjdGlvbi5jbGVhcihlKTtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKyl0aGlzLl9zZWxlY3Rpb24uc2V0SXRlbVNlbGVjdGVkKGVbbl0sITApO3RoaXMuZmFsbGJhY2tTZWxlY3Rpb24mJiF0aGlzLl9zZWxlY3Rpb24uZ2V0KCkubGVuZ3RoJiYodGhpcy5fdmFsdWVUb0l0ZW0odGhpcy5mYWxsYmFja1NlbGVjdGlvbikmJnRoaXMuc2VsZWN0KHRoaXMuZmFsbGJhY2tTZWxlY3Rpb24pKX0sX3NlbGVjdGlvbkNoYW5nZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX3NlbGVjdGlvbi5nZXQoKTt0aGlzLm11bHRpPyh0aGlzLl9zZXRTZWxlY3RlZEl0ZW1zKHQpLHRoaXMuX3NldFNlbGVjdGVkSXRlbSh0Lmxlbmd0aD90WzBdOm51bGwpKTpudWxsIT10Pyh0aGlzLl9zZXRTZWxlY3RlZEl0ZW1zKFt0XSksdGhpcy5fc2V0U2VsZWN0ZWRJdGVtKHQpKToodGhpcy5fc2V0U2VsZWN0ZWRJdGVtcyhbXSksdGhpcy5fc2V0U2VsZWN0ZWRJdGVtKG51bGwpKX0sX3RvZ2dsZVNlbGVjdGVkOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuc2VsZWN0ZWRWYWx1ZXMuaW5kZXhPZih0KTtlPDA/dGhpcy5wdXNoKCJzZWxlY3RlZFZhbHVlcyIsdCk6dGhpcy5zcGxpY2UoInNlbGVjdGVkVmFsdWVzIixlLDEpfSxfdmFsdWVzVG9JdGVtczpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD9udWxsOnQubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fdmFsdWVUb0l0ZW0odCl9KSx0aGlzKX19LGNzPXtwcm9wZXJ0aWVzOntmb2N1c2VkSXRlbTp7b2JzZXJ2ZXI6Il9mb2N1c2VkSXRlbUNoYW5nZWQiLHJlYWRPbmx5OiEwLHR5cGU6T2JqZWN0fSxhdHRyRm9ySXRlbVRpdGxlOnt0eXBlOlN0cmluZ30sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMSxvYnNlcnZlcjoiX2Rpc2FibGVkQ2hhbmdlZCJ9fSxfTU9ESUZJRVJfS0VZUzpbIkFsdCIsIkFsdEdyYXBoIiwiQ2Fwc0xvY2siLCJDb250cm9sIiwiRm4iLCJGbkxvY2siLCJIeXBlciIsIk1ldGEiLCJOdW1Mb2NrIiwiT1MiLCJTY3JvbGxMb2NrIiwiU2hpZnQiLCJTdXBlciIsIlN5bWJvbCIsIlN5bWJvbExvY2siXSxfU0VBUkNIX1JFU0VUX1RJTUVPVVRfTVM6MWUzLF9wcmV2aW91c1RhYkluZGV4OjAsaG9zdEF0dHJpYnV0ZXM6e3JvbGU6Im1lbnUifSxvYnNlcnZlcnM6WyJfdXBkYXRlTXVsdGlzZWxlY3RhYmxlKG11bHRpKSJdLGxpc3RlbmVyczp7Zm9jdXM6Il9vbkZvY3VzIixrZXlkb3duOiJfb25LZXlkb3duIiwiaXJvbi1pdGVtcy1jaGFuZ2VkIjoiX29uSXJvbkl0ZW1zQ2hhbmdlZCJ9LGtleUJpbmRpbmdzOnt1cDoiX29uVXBLZXkiLGRvd246Il9vbkRvd25LZXkiLGVzYzoiX29uRXNjS2V5Iiwic2hpZnQrdGFiOmtleWRvd24iOiJfb25TaGlmdFRhYkRvd24ifSxhdHRhY2hlZDpmdW5jdGlvbigpe3RoaXMuX3Jlc2V0VGFiaW5kaWNlcygpfSxzZWxlY3Q6ZnVuY3Rpb24odCl7dGhpcy5fZGVmYXVsdEZvY3VzQXN5bmMmJih0aGlzLmNhbmNlbEFzeW5jKHRoaXMuX2RlZmF1bHRGb2N1c0FzeW5jKSx0aGlzLl9kZWZhdWx0Rm9jdXNBc3luYz1udWxsKTt2YXIgZT10aGlzLl92YWx1ZVRvSXRlbSh0KTtlJiZlLmhhc0F0dHJpYnV0ZSgiZGlzYWJsZWQiKXx8KHRoaXMuX3NldEZvY3VzZWRJdGVtKGUpLGxzLnNlbGVjdC5hcHBseSh0aGlzLGFyZ3VtZW50cykpfSxfcmVzZXRUYWJpbmRpY2VzOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5tdWx0aT90aGlzLnNlbGVjdGVkSXRlbXMmJnRoaXMuc2VsZWN0ZWRJdGVtc1swXTp0aGlzLnNlbGVjdGVkSXRlbTt0aGlzLml0ZW1zLmZvckVhY2goKGZ1bmN0aW9uKGUpe2Uuc2V0QXR0cmlidXRlKCJ0YWJpbmRleCIsZT09PXQ/IjAiOiItMSIpLGUuc2V0QXR0cmlidXRlKCJhcmlhLXNlbGVjdGVkIix0aGlzLl9zZWxlY3Rpb24uaXNTZWxlY3RlZChlKSl9KSx0aGlzKX0sX3VwZGF0ZU11bHRpc2VsZWN0YWJsZTpmdW5jdGlvbih0KXt0P3RoaXMuc2V0QXR0cmlidXRlKCJhcmlhLW11bHRpc2VsZWN0YWJsZSIsInRydWUiKTp0aGlzLnJlbW92ZUF0dHJpYnV0ZSgiYXJpYS1tdWx0aXNlbGVjdGFibGUiKX0sX2ZvY3VzV2l0aEtleWJvYXJkRXZlbnQ6ZnVuY3Rpb24odCl7aWYoLTE9PT10aGlzLl9NT0RJRklFUl9LRVlTLmluZGV4T2YodC5rZXkpKXt0aGlzLmNhbmNlbERlYm91bmNlcigiX2NsZWFyU2VhcmNoVGV4dCIpO2Zvcih2YXIgZSxuPXRoaXMuX3NlYXJjaFRleHR8fCIiLGk9KG4rPSh0LmtleSYmMT09dC5rZXkubGVuZ3RoP3Qua2V5OlN0cmluZy5mcm9tQ2hhckNvZGUodC5rZXlDb2RlKSkudG9Mb2NhbGVMb3dlckNhc2UoKSkubGVuZ3RoLHI9MDtlPXRoaXMuaXRlbXNbcl07cisrKWlmKCFlLmhhc0F0dHJpYnV0ZSgiZGlzYWJsZWQiKSl7dmFyIG89dGhpcy5hdHRyRm9ySXRlbVRpdGxlfHwidGV4dENvbnRlbnQiLGE9KGVbb118fGUuZ2V0QXR0cmlidXRlKG8pfHwiIikudHJpbSgpO2lmKCEoYS5sZW5ndGg8aSkmJmEuc2xpY2UoMCxpKS50b0xvY2FsZUxvd2VyQ2FzZSgpPT1uKXt0aGlzLl9zZXRGb2N1c2VkSXRlbShlKTticmVha319dGhpcy5fc2VhcmNoVGV4dD1uLHRoaXMuZGVib3VuY2UoIl9jbGVhclNlYXJjaFRleHQiLHRoaXMuX2NsZWFyU2VhcmNoVGV4dCx0aGlzLl9TRUFSQ0hfUkVTRVRfVElNRU9VVF9NUyl9fSxfY2xlYXJTZWFyY2hUZXh0OmZ1bmN0aW9uKCl7dGhpcy5fc2VhcmNoVGV4dD0iIn0sX2ZvY3VzUHJldmlvdXM6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy5pdGVtcy5sZW5ndGgsZT1OdW1iZXIodGhpcy5pbmRleE9mKHRoaXMuZm9jdXNlZEl0ZW0pKSxuPTE7bjx0KzE7bisrKXt2YXIgaT10aGlzLml0ZW1zWyhlLW4rdCkldF07aWYoIWkuaGFzQXR0cmlidXRlKCJkaXNhYmxlZCIpKXt2YXIgcj1lcihpKS5nZXRPd25lclJvb3QoKXx8ZG9jdW1lbnQ7aWYodGhpcy5fc2V0Rm9jdXNlZEl0ZW0oaSksZXIocikuYWN0aXZlRWxlbWVudD09aSlyZXR1cm59fX0sX2ZvY3VzTmV4dDpmdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLml0ZW1zLmxlbmd0aCxlPU51bWJlcih0aGlzLmluZGV4T2YodGhpcy5mb2N1c2VkSXRlbSkpLG49MTtuPHQrMTtuKyspe3ZhciBpPXRoaXMuaXRlbXNbKGUrbikldF07aWYoIWkuaGFzQXR0cmlidXRlKCJkaXNhYmxlZCIpKXt2YXIgcj1lcihpKS5nZXRPd25lclJvb3QoKXx8ZG9jdW1lbnQ7aWYodGhpcy5fc2V0Rm9jdXNlZEl0ZW0oaSksZXIocikuYWN0aXZlRWxlbWVudD09aSlyZXR1cm59fX0sX2FwcGx5U2VsZWN0aW9uOmZ1bmN0aW9uKHQsZSl7dC5zZXRBdHRyaWJ1dGUoImFyaWEtc2VsZWN0ZWQiLGU/InRydWUiOiJmYWxzZSIpLGVhLl9hcHBseVNlbGVjdGlvbi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LF9mb2N1c2VkSXRlbUNoYW5nZWQ6ZnVuY3Rpb24odCxlKXtlJiZlLnNldEF0dHJpYnV0ZSgidGFiaW5kZXgiLCItMSIpLCF0fHx0Lmhhc0F0dHJpYnV0ZSgiZGlzYWJsZWQiKXx8dGhpcy5kaXNhYmxlZHx8KHQuc2V0QXR0cmlidXRlKCJ0YWJpbmRleCIsIjAiKSx0LmZvY3VzKCkpfSxfb25Jcm9uSXRlbXNDaGFuZ2VkOmZ1bmN0aW9uKHQpe3QuZGV0YWlsLmFkZGVkTm9kZXMubGVuZ3RoJiZ0aGlzLl9yZXNldFRhYmluZGljZXMoKX0sX29uU2hpZnRUYWJEb3duOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZ2V0QXR0cmlidXRlKCJ0YWJpbmRleCIpO2NzLl9zaGlmdFRhYlByZXNzZWQ9ITAsdGhpcy5fc2V0Rm9jdXNlZEl0ZW0obnVsbCksdGhpcy5zZXRBdHRyaWJ1dGUoInRhYmluZGV4IiwiLTEiKSx0aGlzLmFzeW5jKChmdW5jdGlvbigpe3RoaXMuc2V0QXR0cmlidXRlKCJ0YWJpbmRleCIsZSksY3MuX3NoaWZ0VGFiUHJlc3NlZD0hMX0pLDEpfSxfb25Gb2N1czpmdW5jdGlvbih0KXtpZighY3MuX3NoaWZ0VGFiUHJlc3NlZCl7dmFyIGU9ZXIodCkucm9vdFRhcmdldDsoZT09PXRoaXN8fHZvaWQgMD09PWUudGFiSW5kZXh8fHRoaXMuaXNMaWdodERlc2NlbmRhbnQoZSkpJiYodGhpcy5fZGVmYXVsdEZvY3VzQXN5bmM9dGhpcy5hc3luYygoZnVuY3Rpb24oKXt2YXIgdD10aGlzLm11bHRpP3RoaXMuc2VsZWN0ZWRJdGVtcyYmdGhpcy5zZWxlY3RlZEl0ZW1zWzBdOnRoaXMuc2VsZWN0ZWRJdGVtO3RoaXMuX3NldEZvY3VzZWRJdGVtKG51bGwpLHQ/dGhpcy5fc2V0Rm9jdXNlZEl0ZW0odCk6dGhpcy5pdGVtc1swXSYmdGhpcy5fZm9jdXNOZXh0KCl9KSkpfX0sX29uVXBLZXk6ZnVuY3Rpb24odCl7dGhpcy5fZm9jdXNQcmV2aW91cygpLHQuZGV0YWlsLmtleWJvYXJkRXZlbnQucHJldmVudERlZmF1bHQoKX0sX29uRG93bktleTpmdW5jdGlvbih0KXt0aGlzLl9mb2N1c05leHQoKSx0LmRldGFpbC5rZXlib2FyZEV2ZW50LnByZXZlbnREZWZhdWx0KCl9LF9vbkVzY0tleTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmZvY3VzZWRJdGVtO2UmJmUuYmx1cigpfSxfb25LZXlkb3duOmZ1bmN0aW9uKHQpe3RoaXMua2V5Ym9hcmRFdmVudE1hdGNoZXNLZXlzKHQsInVwIGRvd24gZXNjIil8fHRoaXMuX2ZvY3VzV2l0aEtleWJvYXJkRXZlbnQodCksdC5zdG9wUHJvcGFnYXRpb24oKX0sX2FjdGl2YXRlSGFuZGxlcjpmdW5jdGlvbih0KXtlYS5fYWN0aXZhdGVIYW5kbGVyLmNhbGwodGhpcyx0KSx0LnN0b3BQcm9wYWdhdGlvbigpfSxfZGlzYWJsZWRDaGFuZ2VkOmZ1bmN0aW9uKHQpe3Q/KHRoaXMuX3ByZXZpb3VzVGFiSW5kZXg9dGhpcy5oYXNBdHRyaWJ1dGUoInRhYmluZGV4Iik/dGhpcy50YWJJbmRleDowLHRoaXMucmVtb3ZlQXR0cmlidXRlKCJ0YWJpbmRleCIpKTp0aGlzLmhhc0F0dHJpYnV0ZSgidGFiaW5kZXgiKXx8dGhpcy5zZXRBdHRyaWJ1dGUoInRhYmluZGV4Iix0aGlzLl9wcmV2aW91c1RhYkluZGV4KX0sX3NoaWZ0VGFiUHJlc3NlZDohMX0sdXM9W1tlYSxsc10sWG8sY3NdOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KanIoe190ZW1wbGF0ZTp4ZWAKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIHBhZGRpbmc6IDhweCAwOwoKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1wYXBlci1saXN0Ym94LWJhY2tncm91bmQtY29sb3IsIHZhcigtLXByaW1hcnktYmFja2dyb3VuZC1jb2xvcikpOwogICAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci1saXN0Ym94LWNvbG9yLCB2YXIoLS1wcmltYXJ5LXRleHQtY29sb3IpKTsKCiAgICAgICAgQGFwcGx5IC0tcGFwZXItbGlzdGJveDsKICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8c2xvdD48L3Nsb3Q+CmAsaXM6InBhcGVyLWxpc3Rib3giLGJlaGF2aW9yczpbdXNdLGhvc3RBdHRyaWJ1dGVzOntyb2xlOiJsaXN0Ym94In19KTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNvbnN0IGhzPXhlYAo8ZG9tLW1vZHVsZSBpZD0icGFwZXItbWF0ZXJpYWwtc2hhcmVkLXN0eWxlcyI+CiAgPHRlbXBsYXRlPgogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICB9CgogICAgICA6aG9zdChbZWxldmF0aW9uPSIxIl0pIHsKICAgICAgICBAYXBwbHkgLS1zaGFkb3ctZWxldmF0aW9uLTJkcDsKICAgICAgfQoKICAgICAgOmhvc3QoW2VsZXZhdGlvbj0iMiJdKSB7CiAgICAgICAgQGFwcGx5IC0tc2hhZG93LWVsZXZhdGlvbi00ZHA7CiAgICAgIH0KCiAgICAgIDpob3N0KFtlbGV2YXRpb249IjMiXSkgewogICAgICAgIEBhcHBseSAtLXNoYWRvdy1lbGV2YXRpb24tNmRwOwogICAgICB9CgogICAgICA6aG9zdChbZWxldmF0aW9uPSI0Il0pIHsKICAgICAgICBAYXBwbHkgLS1zaGFkb3ctZWxldmF0aW9uLThkcDsKICAgICAgfQoKICAgICAgOmhvc3QoW2VsZXZhdGlvbj0iNSJdKSB7CiAgICAgICAgQGFwcGx5IC0tc2hhZG93LWVsZXZhdGlvbi0xNmRwOwogICAgICB9CiAgICA8L3N0eWxlPgogIDwvdGVtcGxhdGU+CjwvZG9tLW1vZHVsZT4KYDtocy5zZXRBdHRyaWJ1dGUoInN0eWxlIiwiZGlzcGxheTogbm9uZTsiKSxkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGhzLmNvbnRlbnQpLAovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KanIoe190ZW1wbGF0ZTp4ZWAKICAgIDxzdHlsZSBpbmNsdWRlPSJwYXBlci1tYXRlcmlhbC1zaGFyZWQtc3R5bGVzIj48L3N0eWxlPgogICAgPHN0eWxlPgogICAgICA6aG9zdChbYW5pbWF0ZWRdKSB7CiAgICAgICAgQGFwcGx5IC0tc2hhZG93LXRyYW5zaXRpb247CiAgICAgIH0KICAgICAgOmhvc3QgewogICAgICAgIEBhcHBseSAtLXBhcGVyLW1hdGVyaWFsOwogICAgICB9CiAgICA8L3N0eWxlPgoKICAgIDxzbG90Pjwvc2xvdD4KYCxpczoicGFwZXItbWF0ZXJpYWwiLHByb3BlcnRpZXM6e2VsZXZhdGlvbjp7dHlwZTpOdW1iZXIscmVmbGVjdFRvQXR0cmlidXRlOiEwLHZhbHVlOjF9LGFuaW1hdGVkOnt0eXBlOkJvb2xlYW4scmVmbGVjdFRvQXR0cmlidXRlOiEwLHZhbHVlOiExfX19KTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNvbnN0IGRzPXtwcm9wZXJ0aWVzOnt2YWx1ZTp7dHlwZTpOdW1iZXIsdmFsdWU6MCxub3RpZnk6ITAscmVmbGVjdFRvQXR0cmlidXRlOiEwfSxtaW46e3R5cGU6TnVtYmVyLHZhbHVlOjAsbm90aWZ5OiEwfSxtYXg6e3R5cGU6TnVtYmVyLHZhbHVlOjEwMCxub3RpZnk6ITB9LHN0ZXA6e3R5cGU6TnVtYmVyLHZhbHVlOjEsbm90aWZ5OiEwfSxyYXRpbzp7dHlwZTpOdW1iZXIsdmFsdWU6MCxyZWFkT25seTohMCxub3RpZnk6ITB9fSxvYnNlcnZlcnM6WyJfdXBkYXRlKHZhbHVlLCBtaW4sIG1heCwgc3RlcCkiXSxfY2FsY1JhdGlvOmZ1bmN0aW9uKHQpe3JldHVybih0aGlzLl9jbGFtcFZhbHVlKHQpLXRoaXMubWluKS8odGhpcy5tYXgtdGhpcy5taW4pfSxfY2xhbXBWYWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5taW4odGhpcy5tYXgsTWF0aC5tYXgodGhpcy5taW4sdGhpcy5fY2FsY1N0ZXAodCkpKX0sX2NhbGNTdGVwOmZ1bmN0aW9uKHQpe2lmKHQ9cGFyc2VGbG9hdCh0KSwhdGhpcy5zdGVwKXJldHVybiB0O3ZhciBlPU1hdGgucm91bmQoKHQtdGhpcy5taW4pL3RoaXMuc3RlcCk7cmV0dXJuIHRoaXMuc3RlcDwxP2UvKDEvdGhpcy5zdGVwKSt0aGlzLm1pbjplKnRoaXMuc3RlcCt0aGlzLm1pbn0sX3ZhbGlkYXRlVmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9jbGFtcFZhbHVlKHRoaXMudmFsdWUpO3JldHVybiB0aGlzLnZhbHVlPXRoaXMub2xkVmFsdWU9aXNOYU4odCk/dGhpcy5vbGRWYWx1ZTp0LHRoaXMudmFsdWUhPT10fSxfdXBkYXRlOmZ1bmN0aW9uKCl7dGhpcy5fdmFsaWRhdGVWYWx1ZSgpLHRoaXMuX3NldFJhdGlvKDEwMCp0aGlzLl9jYWxjUmF0aW8odGhpcy52YWx1ZSkpfX07Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqL2pyKHtfdGVtcGxhdGU6eGVgCiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICB3aWR0aDogMjAwcHg7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgIH0KCiAgICAgIDpob3N0KFtoaWRkZW5dKSwgW2hpZGRlbl0gewogICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICAgICAgfQoKICAgICAgI3Byb2dyZXNzQ29udGFpbmVyIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1wcm9ncmVzcy1jb250YWluZXI7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICB9CgogICAgICAjcHJvZ3Jlc3NDb250YWluZXIsCiAgICAgIC8qIHRoZSBzdHJpcGUgZm9yIHRoZSBpbmRldGVybWluYXRlIGFuaW1hdGlvbiovCiAgICAgIC5pbmRldGVybWluYXRlOjphZnRlciB7CiAgICAgICAgaGVpZ2h0OiB2YXIoLS1wYXBlci1wcm9ncmVzcy1oZWlnaHQsIDRweCk7CiAgICAgIH0KCiAgICAgICNwcmltYXJ5UHJvZ3Jlc3MsCiAgICAgICNzZWNvbmRhcnlQcm9ncmVzcywKICAgICAgLmluZGV0ZXJtaW5hdGU6OmFmdGVyIHsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtZml0OwogICAgICB9CgogICAgICAjcHJvZ3Jlc3NDb250YWluZXIsCiAgICAgIC5pbmRldGVybWluYXRlOjphZnRlciB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tcGFwZXItcHJvZ3Jlc3MtY29udGFpbmVyLWNvbG9yLCB2YXIoLS1nb29nbGUtZ3JleS0zMDApKTsKICAgICAgfQoKICAgICAgOmhvc3QoLnRyYW5zaXRpbmcpICNwcmltYXJ5UHJvZ3Jlc3MsCiAgICAgIDpob3N0KC50cmFuc2l0aW5nKSAjc2Vjb25kYXJ5UHJvZ3Jlc3MgewogICAgICAgIC13ZWJraXQtdHJhbnNpdGlvbi1wcm9wZXJ0eTogLXdlYmtpdC10cmFuc2Zvcm07CiAgICAgICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogdHJhbnNmb3JtOwoKICAgICAgICAvKiBEdXJhdGlvbiAqLwogICAgICAgIC13ZWJraXQtdHJhbnNpdGlvbi1kdXJhdGlvbjogdmFyKC0tcGFwZXItcHJvZ3Jlc3MtdHJhbnNpdGlvbi1kdXJhdGlvbiwgMC4wOHMpOwogICAgICAgIHRyYW5zaXRpb24tZHVyYXRpb246IHZhcigtLXBhcGVyLXByb2dyZXNzLXRyYW5zaXRpb24tZHVyYXRpb24sIDAuMDhzKTsKCiAgICAgICAgLyogVGltaW5nIGZ1bmN0aW9uICovCiAgICAgICAgLXdlYmtpdC10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogdmFyKC0tcGFwZXItcHJvZ3Jlc3MtdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24sIGVhc2UpOwogICAgICAgIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiB2YXIoLS1wYXBlci1wcm9ncmVzcy10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbiwgZWFzZSk7CgogICAgICAgIC8qIERlbGF5ICovCiAgICAgICAgLXdlYmtpdC10cmFuc2l0aW9uLWRlbGF5OiB2YXIoLS1wYXBlci1wcm9ncmVzcy10cmFuc2l0aW9uLWRlbGF5LCAwcyk7CiAgICAgICAgdHJhbnNpdGlvbi1kZWxheTogdmFyKC0tcGFwZXItcHJvZ3Jlc3MtdHJhbnNpdGlvbi1kZWxheSwgMHMpOwogICAgICB9CgogICAgICAjcHJpbWFyeVByb2dyZXNzLAogICAgICAjc2Vjb25kYXJ5UHJvZ3Jlc3MgewogICAgICAgIEBhcHBseSAtLWxheW91dC1maXQ7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IGNlbnRlcjsKICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IGNlbnRlcjsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGVYKDApOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGVYKDApOwogICAgICAgIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07CiAgICAgIH0KCiAgICAgICNwcmltYXJ5UHJvZ3Jlc3MgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXBhcGVyLXByb2dyZXNzLWFjdGl2ZS1jb2xvciwgdmFyKC0tZ29vZ2xlLWdyZWVuLTUwMCkpOwogICAgICB9CgogICAgICAjc2Vjb25kYXJ5UHJvZ3Jlc3MgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXBhcGVyLXByb2dyZXNzLXNlY29uZGFyeS1jb2xvciwgdmFyKC0tZ29vZ2xlLWdyZWVuLTEwMCkpOwogICAgICB9CgogICAgICA6aG9zdChbZGlzYWJsZWRdKSAjcHJpbWFyeVByb2dyZXNzIHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1wYXBlci1wcm9ncmVzcy1kaXNhYmxlZC1hY3RpdmUtY29sb3IsIHZhcigtLWdvb2dsZS1ncmV5LTUwMCkpOwogICAgICB9CgogICAgICA6aG9zdChbZGlzYWJsZWRdKSAjc2Vjb25kYXJ5UHJvZ3Jlc3MgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXBhcGVyLXByb2dyZXNzLWRpc2FibGVkLXNlY29uZGFyeS1jb2xvciwgdmFyKC0tZ29vZ2xlLWdyZXktMzAwKSk7CiAgICAgIH0KCiAgICAgIDpob3N0KDpub3QoW2Rpc2FibGVkXSkpICNwcmltYXJ5UHJvZ3Jlc3MuaW5kZXRlcm1pbmF0ZSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiByaWdodCBjZW50ZXI7CiAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogcmlnaHQgY2VudGVyOwogICAgICAgIC13ZWJraXQtYW5pbWF0aW9uOiBpbmRldGVybWluYXRlLWJhciB2YXIoLS1wYXBlci1wcm9ncmVzcy1pbmRldGVybWluYXRlLWN5Y2xlLWR1cmF0aW9uLCAycykgbGluZWFyIGluZmluaXRlOwogICAgICAgIGFuaW1hdGlvbjogaW5kZXRlcm1pbmF0ZS1iYXIgdmFyKC0tcGFwZXItcHJvZ3Jlc3MtaW5kZXRlcm1pbmF0ZS1jeWNsZS1kdXJhdGlvbiwgMnMpIGxpbmVhciBpbmZpbml0ZTsKICAgICAgfQoKICAgICAgOmhvc3QoOm5vdChbZGlzYWJsZWRdKSkgI3ByaW1hcnlQcm9ncmVzcy5pbmRldGVybWluYXRlOjphZnRlciB7CiAgICAgICAgY29udGVudDogIiI7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXIgY2VudGVyOwogICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciBjZW50ZXI7CgogICAgICAgIC13ZWJraXQtYW5pbWF0aW9uOiBpbmRldGVybWluYXRlLXNwbGl0dGVyIHZhcigtLXBhcGVyLXByb2dyZXNzLWluZGV0ZXJtaW5hdGUtY3ljbGUtZHVyYXRpb24sIDJzKSBsaW5lYXIgaW5maW5pdGU7CiAgICAgICAgYW5pbWF0aW9uOiBpbmRldGVybWluYXRlLXNwbGl0dGVyIHZhcigtLXBhcGVyLXByb2dyZXNzLWluZGV0ZXJtaW5hdGUtY3ljbGUtZHVyYXRpb24sIDJzKSBsaW5lYXIgaW5maW5pdGU7CiAgICAgIH0KCiAgICAgIEAtd2Via2l0LWtleWZyYW1lcyBpbmRldGVybWluYXRlLWJhciB7CiAgICAgICAgMCUgewogICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlWCgxKSB0cmFuc2xhdGVYKC0xMDAlKTsKICAgICAgICB9CiAgICAgICAgNTAlIHsKICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZVgoMSkgdHJhbnNsYXRlWCgwJSk7CiAgICAgICAgfQogICAgICAgIDc1JSB7CiAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGVYKDEpIHRyYW5zbGF0ZVgoMCUpOwogICAgICAgICAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoLjI4LC42MiwuMzcsLjkxKTsKICAgICAgICB9CiAgICAgICAgMTAwJSB7CiAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGVYKDApIHRyYW5zbGF0ZVgoMCUpOwogICAgICAgIH0KICAgICAgfQoKICAgICAgQC13ZWJraXQta2V5ZnJhbWVzIGluZGV0ZXJtaW5hdGUtc3BsaXR0ZXIgewogICAgICAgIDAlIHsKICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZVgoLjc1KSB0cmFuc2xhdGVYKC0xMjUlKTsKICAgICAgICB9CiAgICAgICAgMzAlIHsKICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZVgoLjc1KSB0cmFuc2xhdGVYKC0xMjUlKTsKICAgICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKC40MiwwLC42LC44KTsKICAgICAgICB9CiAgICAgICAgOTAlIHsKICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZVgoLjc1KSB0cmFuc2xhdGVYKDEyNSUpOwogICAgICAgIH0KICAgICAgICAxMDAlIHsKICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZVgoLjc1KSB0cmFuc2xhdGVYKDEyNSUpOwogICAgICAgIH0KICAgICAgfQoKICAgICAgQGtleWZyYW1lcyBpbmRldGVybWluYXRlLWJhciB7CiAgICAgICAgMCUgewogICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZVgoMSkgdHJhbnNsYXRlWCgtMTAwJSk7CiAgICAgICAgfQogICAgICAgIDUwJSB7CiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlWCgxKSB0cmFuc2xhdGVYKDAlKTsKICAgICAgICB9CiAgICAgICAgNzUlIHsKICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGVYKDEpIHRyYW5zbGF0ZVgoMCUpOwogICAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKC4yOCwuNjIsLjM3LC45MSk7CiAgICAgICAgfQogICAgICAgIDEwMCUgewogICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZVgoMCkgdHJhbnNsYXRlWCgwJSk7CiAgICAgICAgfQogICAgICB9CgogICAgICBAa2V5ZnJhbWVzIGluZGV0ZXJtaW5hdGUtc3BsaXR0ZXIgewogICAgICAgIDAlIHsKICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGVYKC43NSkgdHJhbnNsYXRlWCgtMTI1JSk7CiAgICAgICAgfQogICAgICAgIDMwJSB7CiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlWCguNzUpIHRyYW5zbGF0ZVgoLTEyNSUpOwogICAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKC40MiwwLC42LC44KTsKICAgICAgICB9CiAgICAgICAgOTAlIHsKICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGVYKC43NSkgdHJhbnNsYXRlWCgxMjUlKTsKICAgICAgICB9CiAgICAgICAgMTAwJSB7CiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlWCguNzUpIHRyYW5zbGF0ZVgoMTI1JSk7CiAgICAgICAgfQogICAgICB9CiAgICA8L3N0eWxlPgoKICAgIDxkaXYgaWQ9InByb2dyZXNzQ29udGFpbmVyIj4KICAgICAgPGRpdiBpZD0ic2Vjb25kYXJ5UHJvZ3Jlc3MiIGhpZGRlblwkPSJbW19oaWRlU2Vjb25kYXJ5UHJvZ3Jlc3Moc2Vjb25kYXJ5UmF0aW8pXV0iPjwvZGl2PgogICAgICA8ZGl2IGlkPSJwcmltYXJ5UHJvZ3Jlc3MiPjwvZGl2PgogICAgPC9kaXY+CmAsaXM6InBhcGVyLXByb2dyZXNzIixiZWhhdmlvcnM6W2RzXSxwcm9wZXJ0aWVzOntzZWNvbmRhcnlQcm9ncmVzczp7dHlwZTpOdW1iZXIsdmFsdWU6MH0sc2Vjb25kYXJ5UmF0aW86e3R5cGU6TnVtYmVyLHZhbHVlOjAscmVhZE9ubHk6ITB9LGluZGV0ZXJtaW5hdGU6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMSxvYnNlcnZlcjoiX3RvZ2dsZUluZGV0ZXJtaW5hdGUifSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHZhbHVlOiExLHJlZmxlY3RUb0F0dHJpYnV0ZTohMCxvYnNlcnZlcjoiX2Rpc2FibGVkQ2hhbmdlZCJ9fSxvYnNlcnZlcnM6WyJfcHJvZ3Jlc3NDaGFuZ2VkKHNlY29uZGFyeVByb2dyZXNzLCB2YWx1ZSwgbWluLCBtYXgsIGluZGV0ZXJtaW5hdGUpIl0saG9zdEF0dHJpYnV0ZXM6e3JvbGU6InByb2dyZXNzYmFyIn0sX3RvZ2dsZUluZGV0ZXJtaW5hdGU6ZnVuY3Rpb24odCl7dGhpcy50b2dnbGVDbGFzcygiaW5kZXRlcm1pbmF0ZSIsdCx0aGlzLiQucHJpbWFyeVByb2dyZXNzKX0sX3RyYW5zZm9ybVByb2dyZXNzOmZ1bmN0aW9uKHQsZSl7dC5zdHlsZS50cmFuc2Zvcm09dC5zdHlsZS53ZWJraXRUcmFuc2Zvcm09InNjYWxlWCgiK2UvMTAwKyIpIn0sX21haW5SYXRpb0NoYW5nZWQ6ZnVuY3Rpb24odCl7dGhpcy5fdHJhbnNmb3JtUHJvZ3Jlc3ModGhpcy4kLnByaW1hcnlQcm9ncmVzcyx0KX0sX3Byb2dyZXNzQ2hhbmdlZDpmdW5jdGlvbih0LGUsbixpLHIpe3Q9dGhpcy5fY2xhbXBWYWx1ZSh0KSxlPXRoaXMuX2NsYW1wVmFsdWUoZSk7dmFyIG89MTAwKnRoaXMuX2NhbGNSYXRpbyh0KSxhPTEwMCp0aGlzLl9jYWxjUmF0aW8oZSk7dGhpcy5fc2V0U2Vjb25kYXJ5UmF0aW8obyksdGhpcy5fdHJhbnNmb3JtUHJvZ3Jlc3ModGhpcy4kLnNlY29uZGFyeVByb2dyZXNzLG8pLHRoaXMuX3RyYW5zZm9ybVByb2dyZXNzKHRoaXMuJC5wcmltYXJ5UHJvZ3Jlc3MsYSksdGhpcy5zZWNvbmRhcnlQcm9ncmVzcz10LHI/dGhpcy5yZW1vdmVBdHRyaWJ1dGUoImFyaWEtdmFsdWVub3ciKTp0aGlzLnNldEF0dHJpYnV0ZSgiYXJpYS12YWx1ZW5vdyIsZSksdGhpcy5zZXRBdHRyaWJ1dGUoImFyaWEtdmFsdWVtaW4iLG4pLHRoaXMuc2V0QXR0cmlidXRlKCJhcmlhLXZhbHVlbWF4IixpKX0sX2Rpc2FibGVkQ2hhbmdlZDpmdW5jdGlvbih0KXt0aGlzLnNldEF0dHJpYnV0ZSgiYXJpYS1kaXNhYmxlZCIsdD8idHJ1ZSI6ImZhbHNlIil9LF9oaWRlU2Vjb25kYXJ5UHJvZ3Jlc3M6ZnVuY3Rpb24odCl7cmV0dXJuIDA9PT10fX0pOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCBwcz14ZWAKPHN0eWxlPgogIDpob3N0IHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIGxpbmUtaGVpZ2h0OiAwOwogICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY29tbW9uLWJhc2U7CiAgICAtLWNhbGN1bGF0ZWQtcGFwZXItcmFkaW8tYnV0dG9uLXNpemU6IHZhcigtLXBhcGVyLXJhZGlvLWJ1dHRvbi1zaXplLCAxNnB4KTsKICAgIC8qIC0xcHggaXMgYSBzZW50aW5lbCBmb3IgdGhlIGRlZmF1bHQgYW5kIGlzIHJlcGxhY2UgaW4gXGBhdHRhY2hlZFxgLiAqLwogICAgLS1jYWxjdWxhdGVkLXBhcGVyLXJhZGlvLWJ1dHRvbi1pbmstc2l6ZTogdmFyKC0tcGFwZXItcmFkaW8tYnV0dG9uLWluay1zaXplLCAtMXB4KTsKICB9CgogIDpob3N0KDpmb2N1cykgewogICAgb3V0bGluZTogbm9uZTsKICB9CgogICNyYWRpb0NvbnRhaW5lciB7CiAgICBAYXBwbHkgLS1sYXlvdXQtaW5saW5lOwogICAgQGFwcGx5IC0tbGF5b3V0LWNlbnRlci1jZW50ZXI7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB3aWR0aDogdmFyKC0tY2FsY3VsYXRlZC1wYXBlci1yYWRpby1idXR0b24tc2l6ZSk7CiAgICBoZWlnaHQ6IHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItcmFkaW8tYnV0dG9uLXNpemUpOwogICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKCiAgICBAYXBwbHkgLS1wYXBlci1yYWRpby1idXR0b24tcmFkaW8tY29udGFpbmVyOwogIH0KCiAgI2luayB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDUwJTsKICAgIGxlZnQ6IDUwJTsKICAgIHJpZ2h0OiBhdXRvOwogICAgd2lkdGg6IHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItcmFkaW8tYnV0dG9uLWluay1zaXplKTsKICAgIGhlaWdodDogdmFyKC0tY2FsY3VsYXRlZC1wYXBlci1yYWRpby1idXR0b24taW5rLXNpemUpOwogICAgY29sb3I6IHZhcigtLXBhcGVyLXJhZGlvLWJ1dHRvbi11bmNoZWNrZWQtaW5rLWNvbG9yLCB2YXIoLS1wcmltYXJ5LXRleHQtY29sb3IpKTsKICAgIG9wYWNpdHk6IDAuNjsKICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOwogIH0KCiAgI2lua1tjaGVja2VkXSB7CiAgICBjb2xvcjogdmFyKC0tcGFwZXItcmFkaW8tYnV0dG9uLWNoZWNrZWQtaW5rLWNvbG9yLCB2YXIoLS1wcmltYXJ5LWNvbG9yKSk7CiAgfQoKICAjb2ZmUmFkaW8sICNvblJhZGlvIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICB0b3A6IDA7CiAgICBsZWZ0OiAwOwogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgfQoKICAjb2ZmUmFkaW8gewogICAgYm9yZGVyOiAycHggc29saWQgdmFyKC0tcGFwZXItcmFkaW8tYnV0dG9uLXVuY2hlY2tlZC1jb2xvciwgdmFyKC0tcHJpbWFyeS10ZXh0LWNvbG9yKSk7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wYXBlci1yYWRpby1idXR0b24tdW5jaGVja2VkLWJhY2tncm91bmQtY29sb3IsIHRyYW5zcGFyZW50KTsKICAgIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAwLjI4czsKICB9CgogICNvblJhZGlvIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXBhcGVyLXJhZGlvLWJ1dHRvbi1jaGVja2VkLWNvbG9yLCB2YXIoLS1wcmltYXJ5LWNvbG9yKSk7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMCk7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDApOwogICAgdHJhbnNpdGlvbjogLXdlYmtpdC10cmFuc2Zvcm0gZWFzZSAwLjI4czsKICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSBlYXNlIDAuMjhzOwogICAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTsKICB9CgogIDpob3N0KFtjaGVja2VkXSkgI29mZlJhZGlvIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKC0tcGFwZXItcmFkaW8tYnV0dG9uLWNoZWNrZWQtY29sb3IsIHZhcigtLXByaW1hcnktY29sb3IpKTsKICB9CgogIDpob3N0KFtjaGVja2VkXSkgI29uUmFkaW8gewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDAuNSk7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuNSk7CiAgfQoKICAjcmFkaW9MYWJlbCB7CiAgICBsaW5lLWhlaWdodDogbm9ybWFsOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICAgIG1hcmdpbi1sZWZ0OiB2YXIoLS1wYXBlci1yYWRpby1idXR0b24tbGFiZWwtc3BhY2luZywgMTBweCk7CiAgICB3aGl0ZS1zcGFjZTogbm9ybWFsOwogICAgY29sb3I6IHZhcigtLXBhcGVyLXJhZGlvLWJ1dHRvbi1sYWJlbC1jb2xvciwgdmFyKC0tcHJpbWFyeS10ZXh0LWNvbG9yKSk7CgogICAgQGFwcGx5IC0tcGFwZXItcmFkaW8tYnV0dG9uLWxhYmVsOwogIH0KCiAgOmhvc3QoW2NoZWNrZWRdKSAjcmFkaW9MYWJlbCB7CiAgICBAYXBwbHkgLS1wYXBlci1yYWRpby1idXR0b24tbGFiZWwtY2hlY2tlZDsKICB9CgogICNyYWRpb0xhYmVsOmRpcihydGwpIHsKICAgIG1hcmdpbi1sZWZ0OiAwOwogICAgbWFyZ2luLXJpZ2h0OiB2YXIoLS1wYXBlci1yYWRpby1idXR0b24tbGFiZWwtc3BhY2luZywgMTBweCk7CiAgfQoKICAjcmFkaW9MYWJlbFtoaWRkZW5dIHsKICAgIGRpc3BsYXk6IG5vbmU7CiAgfQoKICAvKiBkaXNhYmxlZCBzdGF0ZSAqLwoKICA6aG9zdChbZGlzYWJsZWRdKSAjb2ZmUmFkaW8gewogICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1wYXBlci1yYWRpby1idXR0b24tdW5jaGVja2VkLWNvbG9yLCB2YXIoLS1wcmltYXJ5LXRleHQtY29sb3IpKTsKICAgIG9wYWNpdHk6IDAuNTsKICB9CgogIDpob3N0KFtkaXNhYmxlZF1bY2hlY2tlZF0pICNvblJhZGlvIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXBhcGVyLXJhZGlvLWJ1dHRvbi11bmNoZWNrZWQtY29sb3IsIHZhcigtLXByaW1hcnktdGV4dC1jb2xvcikpOwogICAgb3BhY2l0eTogMC41OwogIH0KCiAgOmhvc3QoW2Rpc2FibGVkXSkgI3JhZGlvTGFiZWwgewogICAgLyogc2xpZ2h0bHkgZGFya2VyIHRoYW4gdGhlIGJ1dHRvbiwgc28gdGhhdCBpdCdzIHJlYWRhYmxlICovCiAgICBvcGFjaXR5OiAwLjY1OwogIH0KPC9zdHlsZT4KCjxkaXYgaWQ9InJhZGlvQ29udGFpbmVyIj4KICA8ZGl2IGlkPSJvZmZSYWRpbyI+PC9kaXY+CiAgPGRpdiBpZD0ib25SYWRpbyI+PC9kaXY+CjwvZGl2PgoKPGRpdiBpZD0icmFkaW9MYWJlbCI+PHNsb3Q+PC9zbG90PjwvZGl2PmA7cHMuc2V0QXR0cmlidXRlKCJzdHJpcC13aGl0ZXNwYWNlIiwiIiksanIoe190ZW1wbGF0ZTpwcyxpczoicGFwZXItcmFkaW8tYnV0dG9uIixiZWhhdmlvcnM6W3dhXSxob3N0QXR0cmlidXRlczp7cm9sZToicmFkaW8iLCJhcmlhLWNoZWNrZWQiOiExLHRhYmluZGV4OjB9LHByb3BlcnRpZXM6e2FyaWFBY3RpdmVBdHRyaWJ1dGU6e3R5cGU6U3RyaW5nLHZhbHVlOiJhcmlhLWNoZWNrZWQifX0scmVhZHk6ZnVuY3Rpb24oKXt0aGlzLl9yaXBwbGVDb250YWluZXI9dGhpcy4kLnJhZGlvQ29udGFpbmVyfSxhdHRhY2hlZDpmdW5jdGlvbigpe0RpKHRoaXMsKGZ1bmN0aW9uKCl7aWYoIi0xcHgiPT09dGhpcy5nZXRDb21wdXRlZFN0eWxlVmFsdWUoIi0tY2FsY3VsYXRlZC1wYXBlci1yYWRpby1idXR0b24taW5rLXNpemUiKS50cmltKCkpe3ZhciB0PXBhcnNlRmxvYXQodGhpcy5nZXRDb21wdXRlZFN0eWxlVmFsdWUoIi0tY2FsY3VsYXRlZC1wYXBlci1yYWRpby1idXR0b24tc2l6ZSIpLnRyaW0oKSksZT1NYXRoLmZsb29yKDMqdCk7ZSUyIT10JTImJmUrKyx0aGlzLnVwZGF0ZVN0eWxlcyh7Ii0tcGFwZXItcmFkaW8tYnV0dG9uLWluay1zaXplIjplKyJweCJ9KX19KSl9fSk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCBmcz17aG9zdEF0dHJpYnV0ZXM6e3JvbGU6Im1lbnViYXIifSxrZXlCaW5kaW5nczp7bGVmdDoiX29uTGVmdEtleSIscmlnaHQ6Il9vblJpZ2h0S2V5In0sX29uVXBLZXk6ZnVuY3Rpb24odCl7dGhpcy5mb2N1c2VkSXRlbS5jbGljaygpLHQuZGV0YWlsLmtleWJvYXJkRXZlbnQucHJldmVudERlZmF1bHQoKX0sX29uRG93bktleTpmdW5jdGlvbih0KXt0aGlzLmZvY3VzZWRJdGVtLmNsaWNrKCksdC5kZXRhaWwua2V5Ym9hcmRFdmVudC5wcmV2ZW50RGVmYXVsdCgpfSxnZXQgX2lzUlRMKCl7cmV0dXJuInJ0bCI9PT13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzKS5kaXJlY3Rpb259LF9vbkxlZnRLZXk6ZnVuY3Rpb24odCl7dGhpcy5faXNSVEw/dGhpcy5fZm9jdXNOZXh0KCk6dGhpcy5fZm9jdXNQcmV2aW91cygpLHQuZGV0YWlsLmtleWJvYXJkRXZlbnQucHJldmVudERlZmF1bHQoKX0sX29uUmlnaHRLZXk6ZnVuY3Rpb24odCl7dGhpcy5faXNSVEw/dGhpcy5fZm9jdXNQcmV2aW91cygpOnRoaXMuX2ZvY3VzTmV4dCgpLHQuZGV0YWlsLmtleWJvYXJkRXZlbnQucHJldmVudERlZmF1bHQoKX0sX29uS2V5ZG93bjpmdW5jdGlvbih0KXt0aGlzLmtleWJvYXJkRXZlbnRNYXRjaGVzS2V5cyh0LCJ1cCBkb3duIGxlZnQgcmlnaHQgZXNjIil8fHRoaXMuX2ZvY3VzV2l0aEtleWJvYXJkRXZlbnQodCl9fSxtcz1bdXMsZnNdOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KanIoe190ZW1wbGF0ZTp4ZWAKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgfQoKICAgICAgOmhvc3QgOjpzbG90dGVkKCopIHsKICAgICAgICBwYWRkaW5nOiB2YXIoLS1wYXBlci1yYWRpby1ncm91cC1pdGVtLXBhZGRpbmcsIDEycHgpOwogICAgICB9CiAgICA8L3N0eWxlPgoKICAgIDxzbG90Pjwvc2xvdD4KYCxpczoicGFwZXItcmFkaW8tZ3JvdXAiLGJlaGF2aW9yczpbbXNdLGhvc3RBdHRyaWJ1dGVzOntyb2xlOiJyYWRpb2dyb3VwIn0scHJvcGVydGllczp7YXR0ckZvclNlbGVjdGVkOnt0eXBlOlN0cmluZyx2YWx1ZToibmFtZSJ9LHNlbGVjdGVkQXR0cmlidXRlOnt0eXBlOlN0cmluZyx2YWx1ZToiY2hlY2tlZCJ9LHNlbGVjdGFibGU6e3R5cGU6U3RyaW5nLHZhbHVlOiJwYXBlci1yYWRpby1idXR0b24ifSxhbGxvd0VtcHR5U2VsZWN0aW9uOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9fSxzZWxlY3Q6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fdmFsdWVUb0l0ZW0odCk7aWYoIWV8fCFlLmhhc0F0dHJpYnV0ZSgiZGlzYWJsZWQiKSl7aWYodGhpcy5zZWxlY3RlZCl7dmFyIG49dGhpcy5fdmFsdWVUb0l0ZW0odGhpcy5zZWxlY3RlZCk7aWYodGhpcy5zZWxlY3RlZD09dCl7aWYoIXRoaXMuYWxsb3dFbXB0eVNlbGVjdGlvbilyZXR1cm4gdm9pZChuJiYobi5jaGVja2VkPSEwKSk7dD0iIn1uJiYobi5jaGVja2VkPSExKX1lYS5zZWxlY3QuYXBwbHkodGhpcyxbdF0pLHRoaXMuZmlyZSgicGFwZXItcmFkaW8tZ3JvdXAtY2hhbmdlZCIpfX0sX2FjdGl2YXRlRm9jdXNlZEl0ZW06ZnVuY3Rpb24oKXt0aGlzLl9pdGVtQWN0aXZhdGUodGhpcy5fdmFsdWVGb3JJdGVtKHRoaXMuZm9jdXNlZEl0ZW0pLHRoaXMuZm9jdXNlZEl0ZW0pfSxfb25VcEtleTpmdW5jdGlvbih0KXt0aGlzLl9mb2N1c1ByZXZpb3VzKCksdC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuX2FjdGl2YXRlRm9jdXNlZEl0ZW0oKX0sX29uRG93bktleTpmdW5jdGlvbih0KXt0aGlzLl9mb2N1c05leHQoKSx0LnByZXZlbnREZWZhdWx0KCksdGhpcy5fYWN0aXZhdGVGb2N1c2VkSXRlbSgpfSxfb25MZWZ0S2V5OmZ1bmN0aW9uKHQpe2ZzLl9vbkxlZnRLZXkuYXBwbHkodGhpcyxhcmd1bWVudHMpLHRoaXMuX2FjdGl2YXRlRm9jdXNlZEl0ZW0oKX0sX29uUmlnaHRLZXk6ZnVuY3Rpb24odCl7ZnMuX29uUmlnaHRLZXkuYXBwbHkodGhpcyxhcmd1bWVudHMpLHRoaXMuX2FjdGl2YXRlRm9jdXNlZEl0ZW0oKX19KTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNvbnN0IGdzPXhlYAogIDxzdHlsZT4KICAgIDpob3N0IHsKICAgICAgQGFwcGx5IC0tbGF5b3V0OwogICAgICBAYXBwbHkgLS1sYXlvdXQtanVzdGlmaWVkOwogICAgICBAYXBwbHkgLS1sYXlvdXQtY2VudGVyOwogICAgICB3aWR0aDogMjAwcHg7CiAgICAgIGN1cnNvcjogZGVmYXVsdDsKICAgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgLW1zLXVzZXItc2VsZWN0OiBub25lOwogICAgICB1c2VyLXNlbGVjdDogbm9uZTsKICAgICAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiByZ2JhKDAsIDAsIDAsIDApOwogICAgICAtLXBhcGVyLXByb2dyZXNzLWFjdGl2ZS1jb2xvcjogdmFyKC0tcGFwZXItc2xpZGVyLWFjdGl2ZS1jb2xvciwgdmFyKC0tZ29vZ2xlLWJsdWUtNzAwKSk7CiAgICAgIC0tcGFwZXItcHJvZ3Jlc3Mtc2Vjb25kYXJ5LWNvbG9yOiB2YXIoLS1wYXBlci1zbGlkZXItc2Vjb25kYXJ5LWNvbG9yLCB2YXIoLS1nb29nbGUtYmx1ZS0zMDApKTsKICAgICAgLS1wYXBlci1wcm9ncmVzcy1kaXNhYmxlZC1hY3RpdmUtY29sb3I6IHZhcigtLXBhcGVyLXNsaWRlci1kaXNhYmxlZC1hY3RpdmUtY29sb3IsIHZhcigtLXBhcGVyLWdyZXktNDAwKSk7CiAgICAgIC0tcGFwZXItcHJvZ3Jlc3MtZGlzYWJsZWQtc2Vjb25kYXJ5LWNvbG9yOiB2YXIoLS1wYXBlci1zbGlkZXItZGlzYWJsZWQtc2Vjb25kYXJ5LWNvbG9yLCB2YXIoLS1wYXBlci1ncmV5LTQwMCkpOwogICAgICAtLWNhbGN1bGF0ZWQtcGFwZXItc2xpZGVyLWhlaWdodDogdmFyKC0tcGFwZXItc2xpZGVyLWhlaWdodCwgMnB4KTsKICAgIH0KCiAgICAvKiBmb2N1cyBzaG93cyB0aGUgcmlwcGxlICovCiAgICA6aG9zdCg6Zm9jdXMpIHsKICAgICAgb3V0bGluZTogbm9uZTsKICAgIH0KCiAgICAvKioKICAgICAgKiBOT1RFKGtlYW51bGVlKTogVGhvdWdoIDpob3N0LWNvbnRleHQgaXMgbm90IHVuaXZlcnNhbGx5IHN1cHBvcnRlZCwgc29tZSBwYWdlcwogICAgICAqIHN0aWxsIHJlbHkgb24gcGFwZXItc2xpZGVyIGJlaW5nIGZsaXBwZWQgd2hlbiBkaXI9InJ0bCIgaXMgc2V0IG9uIGJvZHkuIEZvciBmdWxsCiAgICAgICogY29tcGF0aWJpbGl0eSwgZGlyPSJydGwiIG11c3QgYmUgZXhwbGljaXRseSBzZXQgb24gcGFwZXItc2xpZGVyLgogICAgICAqLwogICAgOmRpcihydGwpICNzbGlkZXJDb250YWluZXIgewogICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGVYKC0xKTsKICAgICAgdHJhbnNmb3JtOiBzY2FsZVgoLTEpOwogICAgfQoKICAgIC8qKgogICAgICAqIE5PVEUoa2VhbnVsZWUpOiBUaGlzIGlzIHNlcGFyYXRlIGZyb20gdGhlIHJ1bGUgYWJvdmUgYmVjYXVzZSA6aG9zdC1jb250ZXh0IG1heQogICAgICAqIG5vdCBiZSByZWNvZ25pemVkLgogICAgICAqLwogICAgOmhvc3QoW2Rpcj0icnRsIl0pICNzbGlkZXJDb250YWluZXIgewogICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGVYKC0xKTsKICAgICAgdHJhbnNmb3JtOiBzY2FsZVgoLTEpOwogICAgfQoKICAgIC8qKgogICAgICAqIE5PVEUoa2VhbnVsZWUpOiBOZWVkZWQgdG8gb3ZlcnJpZGUgdGhlIDpob3N0LWNvbnRleHQgcnVsZSAod2hlcmUgc3VwcG9ydGVkKQogICAgICAqIHRvIHN1cHBvcnQgTFRSIHNsaWRlcnMgaW4gUlRMIHBhZ2VzLgogICAgICAqLwogICAgOmhvc3QoW2Rpcj0ibHRyIl0pICNzbGlkZXJDb250YWluZXIgewogICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGVYKDEpOwogICAgICB0cmFuc2Zvcm06IHNjYWxlWCgxKTsKICAgIH0KCiAgICAjc2xpZGVyQ29udGFpbmVyIHsKICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICB3aWR0aDogMTAwJTsKICAgICAgaGVpZ2h0OiBjYWxjKDMwcHggKyB2YXIoLS1jYWxjdWxhdGVkLXBhcGVyLXNsaWRlci1oZWlnaHQpKTsKICAgICAgbWFyZ2luLWxlZnQ6IGNhbGMoMTVweCArIHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItc2xpZGVyLWhlaWdodCkvMik7CiAgICAgIG1hcmdpbi1yaWdodDogY2FsYygxNXB4ICsgdmFyKC0tY2FsY3VsYXRlZC1wYXBlci1zbGlkZXItaGVpZ2h0KS8yKTsKICAgIH0KCiAgICAjc2xpZGVyQ29udGFpbmVyOmZvY3VzIHsKICAgICAgb3V0bGluZTogMDsKICAgIH0KCiAgICAjc2xpZGVyQ29udGFpbmVyLmVkaXRhYmxlIHsKICAgICAgbWFyZ2luLXRvcDogMTJweDsKICAgICAgbWFyZ2luLWJvdHRvbTogMTJweDsKICAgIH0KCiAgICAuYmFyLWNvbnRhaW5lciB7CiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgdG9wOiAwOwogICAgICBib3R0b206IDA7CiAgICAgIGxlZnQ6IDA7CiAgICAgIHJpZ2h0OiAwOwogICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgfQoKICAgIC5yaW5nID4gLmJhci1jb250YWluZXIgewogICAgICBsZWZ0OiBjYWxjKDVweCArIHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItc2xpZGVyLWhlaWdodCkvMik7CiAgICAgIHRyYW5zaXRpb246IGxlZnQgMC4xOHMgZWFzZTsKICAgIH0KCiAgICAucmluZy5leHBhbmQuZHJhZ2dpbmcgPiAuYmFyLWNvbnRhaW5lciB7CiAgICAgIHRyYW5zaXRpb246IG5vbmU7CiAgICB9CgogICAgLnJpbmcuZXhwYW5kOm5vdCgucGluKSA+IC5iYXItY29udGFpbmVyIHsKICAgICAgbGVmdDogY2FsYyg4cHggKyB2YXIoLS1jYWxjdWxhdGVkLXBhcGVyLXNsaWRlci1oZWlnaHQpLzIpOwogICAgfQoKICAgICNzbGlkZXJCYXIgewogICAgICBwYWRkaW5nOiAxNXB4IDA7CiAgICAgIHdpZHRoOiAxMDAlOwogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wYXBlci1zbGlkZXItYmFyLWNvbG9yLCB0cmFuc3BhcmVudCk7CiAgICAgIC0tcGFwZXItcHJvZ3Jlc3MtY29udGFpbmVyLWNvbG9yOiB2YXIoLS1wYXBlci1zbGlkZXItY29udGFpbmVyLWNvbG9yLCB2YXIoLS1wYXBlci1ncmV5LTQwMCkpOwogICAgICAtLXBhcGVyLXByb2dyZXNzLWhlaWdodDogdmFyKC0tY2FsY3VsYXRlZC1wYXBlci1zbGlkZXItaGVpZ2h0KTsKICAgIH0KCiAgICAuc2xpZGVyLW1hcmtlcnMgewogICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgIC8qIHNsaWRlci1rbm9iIGlzIDMwcHggKyB0aGUgc2xpZGVyLWhlaWdodCBzbyB0aGF0IHRoZSBtYXJrZXJzIHNob3VsZCBzdGFydCBhdCBhIG9mZnNldCBvZiAxNXB4Ki8KICAgICAgdG9wOiAxNXB4OwogICAgICBoZWlnaHQ6IHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItc2xpZGVyLWhlaWdodCk7CiAgICAgIGxlZnQ6IDA7CiAgICAgIHJpZ2h0OiAtMXB4OwogICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgQGFwcGx5IC0tbGF5b3V0LWhvcml6b250YWw7CiAgICB9CgogICAgLnNsaWRlci1tYXJrZXIgewogICAgICBAYXBwbHkgLS1sYXlvdXQtZmxleDsKICAgIH0KICAgIC5zbGlkZXItbWFya2Vyczo6YWZ0ZXIsCiAgICAuc2xpZGVyLW1hcmtlcjo6YWZ0ZXIgewogICAgICBjb250ZW50OiAiIjsKICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgIG1hcmdpbi1sZWZ0OiAtMXB4OwogICAgICB3aWR0aDogMnB4OwogICAgICBoZWlnaHQ6IHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItc2xpZGVyLWhlaWdodCk7CiAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcGFwZXItc2xpZGVyLW1hcmtlcnMtY29sb3IsICMwMDApOwogICAgfQoKICAgIC5zbGlkZXIta25vYiB7CiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgbGVmdDogMDsKICAgICAgdG9wOiAwOwogICAgICBtYXJnaW4tbGVmdDogY2FsYygtMTVweCAtIHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItc2xpZGVyLWhlaWdodCkvMik7CiAgICAgIHdpZHRoOiBjYWxjKDMwcHggKyB2YXIoLS1jYWxjdWxhdGVkLXBhcGVyLXNsaWRlci1oZWlnaHQpKTsKICAgICAgaGVpZ2h0OiBjYWxjKDMwcHggKyB2YXIoLS1jYWxjdWxhdGVkLXBhcGVyLXNsaWRlci1oZWlnaHQpKTsKICAgIH0KCiAgICAudHJhbnNpdGluZyA+IC5zbGlkZXIta25vYiB7CiAgICAgIHRyYW5zaXRpb246IGxlZnQgMC4wOHMgZWFzZTsKICAgIH0KCiAgICAuc2xpZGVyLWtub2I6Zm9jdXMgewogICAgICBvdXRsaW5lOiBub25lOwogICAgfQoKICAgIC5zbGlkZXIta25vYi5kcmFnZ2luZyB7CiAgICAgIHRyYW5zaXRpb246IG5vbmU7CiAgICB9CgogICAgLnNuYXBzID4gLnNsaWRlci1rbm9iLmRyYWdnaW5nIHsKICAgICAgdHJhbnNpdGlvbjogLXdlYmtpdC10cmFuc2Zvcm0gMC4wOHMgZWFzZTsKICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMDhzIGVhc2U7CiAgICB9CgogICAgLnNsaWRlci1rbm9iLWlubmVyIHsKICAgICAgbWFyZ2luOiAxMHB4OwogICAgICB3aWR0aDogY2FsYygxMDAlIC0gMjBweCk7CiAgICAgIGhlaWdodDogY2FsYygxMDAlIC0gMjBweCk7CiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXBhcGVyLXNsaWRlci1rbm9iLWNvbG9yLCB2YXIoLS1nb29nbGUtYmx1ZS03MDApKTsKICAgICAgYm9yZGVyOiAycHggc29saWQgdmFyKC0tcGFwZXItc2xpZGVyLWtub2ItY29sb3IsIHZhcigtLWdvb2dsZS1ibHVlLTcwMCkpOwogICAgICBib3JkZXItcmFkaXVzOiA1MCU7CgogICAgICAtbW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CgogICAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiAtd2Via2l0LXRyYW5zZm9ybSwgYmFja2dyb3VuZC1jb2xvciwgYm9yZGVyOwogICAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiB0cmFuc2Zvcm0sIGJhY2tncm91bmQtY29sb3IsIGJvcmRlcjsKICAgICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMC4xOHM7CiAgICAgIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlOwogICAgfQoKICAgIC5leHBhbmQ6bm90KC5waW4pID4gLnNsaWRlci1rbm9iID4gLnNsaWRlci1rbm9iLWlubmVyIHsKICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEuNSk7CiAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS41KTsKICAgIH0KCiAgICAucmluZyA+IC5zbGlkZXIta25vYiA+IC5zbGlkZXIta25vYi1pbm5lciB7CiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXBhcGVyLXNsaWRlci1rbm9iLXN0YXJ0LWNvbG9yLCB0cmFuc3BhcmVudCk7CiAgICAgIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLXBhcGVyLXNsaWRlci1rbm9iLXN0YXJ0LWJvcmRlci1jb2xvciwgdmFyKC0tcGFwZXItZ3JleS00MDApKTsKICAgIH0KCiAgICAuc2xpZGVyLWtub2ItaW5uZXI6OmJlZm9yZSB7CiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXBhcGVyLXNsaWRlci1waW4tY29sb3IsIHZhcigtLWdvb2dsZS1ibHVlLTcwMCkpOwogICAgfQoKICAgIC5waW4gPiAuc2xpZGVyLWtub2IgPiAuc2xpZGVyLWtub2ItaW5uZXI6OmJlZm9yZSB7CiAgICAgIGNvbnRlbnQ6ICIiOwogICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgIHRvcDogMDsKICAgICAgbGVmdDogNTAlOwogICAgICBtYXJnaW4tbGVmdDogLTEzcHg7CiAgICAgIHdpZHRoOiAyNnB4OwogICAgICBoZWlnaHQ6IDI2cHg7CiAgICAgIGJvcmRlci1yYWRpdXM6IDUwJSA1MCUgNTAlIDA7CgogICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKC00NWRlZykgc2NhbGUoMCkgdHJhbnNsYXRlKDApOwogICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpIHNjYWxlKDApIHRyYW5zbGF0ZSgwKTsKICAgIH0KCiAgICAuc2xpZGVyLWtub2ItaW5uZXI6OmJlZm9yZSwKICAgIC5zbGlkZXIta25vYi1pbm5lcjo6YWZ0ZXIgewogICAgICB0cmFuc2l0aW9uOiAtd2Via2l0LXRyYW5zZm9ybSAuMThzIGVhc2UsIGJhY2tncm91bmQtY29sb3IgLjE4cyBlYXNlOwogICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gLjE4cyBlYXNlLCBiYWNrZ3JvdW5kLWNvbG9yIC4xOHMgZWFzZTsKICAgIH0KCiAgICAucGluLnJpbmcgPiAuc2xpZGVyLWtub2IgPiAuc2xpZGVyLWtub2ItaW5uZXI6OmJlZm9yZSB7CiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXBhcGVyLXNsaWRlci1waW4tc3RhcnQtY29sb3IsIHZhcigtLXBhcGVyLWdyZXktNDAwKSk7CiAgICB9CgogICAgLnBpbi5leHBhbmQgPiAuc2xpZGVyLWtub2IgPiAuc2xpZGVyLWtub2ItaW5uZXI6OmJlZm9yZSB7CiAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKSBzY2FsZSgxKSB0cmFuc2xhdGUoMTdweCwgLTE3cHgpOwogICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpIHNjYWxlKDEpIHRyYW5zbGF0ZSgxN3B4LCAtMTdweCk7CiAgICB9CgogICAgLnBpbiA+IC5zbGlkZXIta25vYiA+IC5zbGlkZXIta25vYi1pbm5lcjo6YWZ0ZXIgewogICAgICBjb250ZW50OiBhdHRyKHZhbHVlKTsKICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICB0b3A6IDA7CiAgICAgIGxlZnQ6IDUwJTsKICAgICAgbWFyZ2luLWxlZnQ6IC0xNnB4OwogICAgICB3aWR0aDogMzJweDsKICAgICAgaGVpZ2h0OiAyNnB4OwogICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci1zbGlkZXItZm9udC1jb2xvciwgI2ZmZik7CiAgICAgIGZvbnQtc2l6ZTogMTBweDsKCiAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgwKSB0cmFuc2xhdGUoMCk7CiAgICAgIHRyYW5zZm9ybTogc2NhbGUoMCkgdHJhbnNsYXRlKDApOwogICAgfQoKICAgIC5waW4uZXhwYW5kID4gLnNsaWRlci1rbm9iID4gLnNsaWRlci1rbm9iLWlubmVyOjphZnRlciB7CiAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxKSB0cmFuc2xhdGUoMCwgLTE3cHgpOwogICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpIHRyYW5zbGF0ZSgwLCAtMTdweCk7CiAgICB9CgogICAgLyogcGFwZXItaW5wdXQgKi8KICAgIC5zbGlkZXItaW5wdXQgewogICAgICB3aWR0aDogNTBweDsKICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgLS1wYXBlci1pbnB1dC1jb250YWluZXItaW5wdXQ6IHsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItc2xpZGVyLWlucHV0LWNvbnRhaW5lci1pbnB1dDsKICAgICAgfTsKICAgICAgQGFwcGx5IC0tcGFwZXItc2xpZGVyLWlucHV0OwogICAgfQoKICAgIC8qIGRpc2FibGVkIHN0YXRlICovCiAgICAjc2xpZGVyQ29udGFpbmVyLmRpc2FibGVkIHsKICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICB9CgogICAgLmRpc2FibGVkID4gLnNsaWRlci1rbm9iID4gLnNsaWRlci1rbm9iLWlubmVyIHsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcGFwZXItc2xpZGVyLWRpc2FibGVkLWtub2ItY29sb3IsIHZhcigtLXBhcGVyLWdyZXktNDAwKSk7CiAgICAgIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLXBhcGVyLXNsaWRlci1kaXNhYmxlZC1rbm9iLWNvbG9yLCB2YXIoLS1wYXBlci1ncmV5LTQwMCkpOwogICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUzZCgwLjc1LCAwLjc1LCAxKTsKICAgICAgdHJhbnNmb3JtOiBzY2FsZTNkKDAuNzUsIDAuNzUsIDEpOwogICAgfQoKICAgIC5kaXNhYmxlZC5yaW5nID4gLnNsaWRlci1rbm9iID4gLnNsaWRlci1rbm9iLWlubmVyIHsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcGFwZXItc2xpZGVyLWtub2Itc3RhcnQtY29sb3IsIHRyYW5zcGFyZW50KTsKICAgICAgYm9yZGVyOiAycHggc29saWQgdmFyKC0tcGFwZXItc2xpZGVyLWtub2Itc3RhcnQtYm9yZGVyLWNvbG9yLCB2YXIoLS1wYXBlci1ncmV5LTQwMCkpOwogICAgfQoKICAgIHBhcGVyLXJpcHBsZSB7CiAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci1zbGlkZXIta25vYi1jb2xvciwgdmFyKC0tZ29vZ2xlLWJsdWUtNzAwKSk7CiAgICB9CiAgPC9zdHlsZT4KCiAgPGRpdiBpZD0ic2xpZGVyQ29udGFpbmVyIiBjbGFzc1wkPSJbW19nZXRDbGFzc05hbWVzKGRpc2FibGVkLCBwaW4sIHNuYXBzLCBpbW1lZGlhdGVWYWx1ZSwgbWluLCBleHBhbmQsIGRyYWdnaW5nLCB0cmFuc2l0aW5nLCBlZGl0YWJsZSldXSI+CiAgICA8ZGl2IGNsYXNzPSJiYXItY29udGFpbmVyIj4KICAgICAgPHBhcGVyLXByb2dyZXNzIGRpc2FibGVkXCQ9IltbZGlzYWJsZWRdXSIgaWQ9InNsaWRlckJhciIgYXJpYS1oaWRkZW49InRydWUiIG1pbj0iW1ttaW5dXSIgbWF4PSJbW21heF1dIiBzdGVwPSJbW3N0ZXBdXSIgdmFsdWU9IltbaW1tZWRpYXRlVmFsdWVdXSIgc2Vjb25kYXJ5LXByb2dyZXNzPSJbW3NlY29uZGFyeVByb2dyZXNzXV0iIG9uLWRvd249Il9iYXJkb3duIiBvbi11cD0iX3Jlc2V0S25vYiIgb24tdHJhY2s9Il9iYXJ0cmFjayIgb24tdGFwPSJfYmFyY2xpY2siPgogICAgICA8L3BhcGVyLXByb2dyZXNzPgogICAgPC9kaXY+CgogICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW3NuYXBzXV0iPgogICAgICA8ZGl2IGNsYXNzPSJzbGlkZXItbWFya2VycyI+CiAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20tcmVwZWF0IiBpdGVtcz0iW1ttYXJrZXJzXV0iPgogICAgICAgICAgPGRpdiBjbGFzcz0ic2xpZGVyLW1hcmtlciI+PC9kaXY+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPC9kaXY+CiAgICA8L3RlbXBsYXRlPgoKICAgIDxkaXYgaWQ9InNsaWRlcktub2IiIGNsYXNzPSJzbGlkZXIta25vYiIgb24tZG93bj0iX2tub2Jkb3duIiBvbi11cD0iX3Jlc2V0S25vYiIgb24tdHJhY2s9Il9vblRyYWNrIiBvbi10cmFuc2l0aW9uZW5kPSJfa25vYlRyYW5zaXRpb25FbmQiPgogICAgICAgIDxkaXYgY2xhc3M9InNsaWRlci1rbm9iLWlubmVyIiB2YWx1ZVwkPSJbW2ltbWVkaWF0ZVZhbHVlXV0iPjwvZGl2PgogICAgPC9kaXY+CiAgPC9kaXY+CgogIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tlZGl0YWJsZV1dIj4KICAgIDxwYXBlci1pbnB1dCBpZD0iaW5wdXQiIHR5cGU9Im51bWJlciIgc3RlcD0iW1tzdGVwXV0iIG1pbj0iW1ttaW5dXSIgbWF4PSJbW21heF1dIiBjbGFzcz0ic2xpZGVyLWlucHV0IiBkaXNhYmxlZFwkPSJbW2Rpc2FibGVkXV0iIHZhbHVlPSJbW2ltbWVkaWF0ZVZhbHVlXV0iIG9uLWNoYW5nZT0iX2NoYW5nZVZhbHVlIiBvbi1rZXlkb3duPSJfaW5wdXRLZXlEb3duIiBuby1sYWJlbC1mbG9hdD4KICAgIDwvcGFwZXItaW5wdXQ+CiAgPC90ZW1wbGF0ZT4KYDtncy5zZXRBdHRyaWJ1dGUoInN0cmlwLXdoaXRlc3BhY2UiLCIiKSxqcih7X3RlbXBsYXRlOmdzLGlzOiJwYXBlci1zbGlkZXIiLGJlaGF2aW9yczpbWG8sZ2EseGEsZHNdLHByb3BlcnRpZXM6e3ZhbHVlOnt0eXBlOk51bWJlcix2YWx1ZTowfSxzbmFwczp7dHlwZTpCb29sZWFuLHZhbHVlOiExLG5vdGlmeTohMH0scGluOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITEsbm90aWZ5OiEwfSxzZWNvbmRhcnlQcm9ncmVzczp7dHlwZTpOdW1iZXIsdmFsdWU6MCxub3RpZnk6ITAsb2JzZXJ2ZXI6Il9zZWNvbmRhcnlQcm9ncmVzc0NoYW5nZWQifSxlZGl0YWJsZTp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxpbW1lZGlhdGVWYWx1ZTp7dHlwZTpOdW1iZXIsdmFsdWU6MCxyZWFkT25seTohMCxub3RpZnk6ITB9LG1heE1hcmtlcnM6e3R5cGU6TnVtYmVyLHZhbHVlOjAsbm90aWZ5OiEwfSxleHBhbmQ6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMSxyZWFkT25seTohMH0saWdub3JlQmFyVG91Y2g6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sZHJhZ2dpbmc6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMSxyZWFkT25seTohMCxub3RpZnk6ITB9LHRyYW5zaXRpbmc6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMSxyZWFkT25seTohMH0sbWFya2Vyczp7dHlwZTpBcnJheSxyZWFkT25seTohMCx2YWx1ZTpmdW5jdGlvbigpe3JldHVybltdfX19LG9ic2VydmVyczpbIl91cGRhdGVLbm9iKHZhbHVlLCBtaW4sIG1heCwgc25hcHMsIHN0ZXApIiwiX3ZhbHVlQ2hhbmdlZCh2YWx1ZSkiLCJfaW1tZWRpYXRlVmFsdWVDaGFuZ2VkKGltbWVkaWF0ZVZhbHVlKSIsIl91cGRhdGVNYXJrZXJzKG1heE1hcmtlcnMsIG1pbiwgbWF4LCBzbmFwcykiXSxob3N0QXR0cmlidXRlczp7cm9sZToic2xpZGVyIix0YWJpbmRleDowfSxrZXlCaW5kaW5nczp7bGVmdDoiX2xlZnRLZXkiLHJpZ2h0OiJfcmlnaHRLZXkiLCJkb3duIHBhZ2Vkb3duIGhvbWUiOiJfZGVjcmVtZW50S2V5IiwidXAgcGFnZXVwIGVuZCI6Il9pbmNyZW1lbnRLZXkifSxyZWFkeTpmdW5jdGlvbigpe3RoaXMuaWdub3JlQmFyVG91Y2gmJmRpKHRoaXMuJC5zbGlkZXJCYXIsImF1dG8iKX0saW5jcmVtZW50OmZ1bmN0aW9uKCl7dGhpcy52YWx1ZT10aGlzLl9jbGFtcFZhbHVlKHRoaXMudmFsdWUrdGhpcy5zdGVwKX0sZGVjcmVtZW50OmZ1bmN0aW9uKCl7dGhpcy52YWx1ZT10aGlzLl9jbGFtcFZhbHVlKHRoaXMudmFsdWUtdGhpcy5zdGVwKX0sX3VwZGF0ZUtub2I6ZnVuY3Rpb24odCxlLG4saSxyKXt0aGlzLnNldEF0dHJpYnV0ZSgiYXJpYS12YWx1ZW1pbiIsZSksdGhpcy5zZXRBdHRyaWJ1dGUoImFyaWEtdmFsdWVtYXgiLG4pLHRoaXMuc2V0QXR0cmlidXRlKCJhcmlhLXZhbHVlbm93Iix0KSx0aGlzLl9wb3NpdGlvbktub2IoMTAwKnRoaXMuX2NhbGNSYXRpbyh0KSl9LF92YWx1ZUNoYW5nZWQ6ZnVuY3Rpb24oKXt0aGlzLmZpcmUoInZhbHVlLWNoYW5nZSIse2NvbXBvc2VkOiEwfSl9LF9pbW1lZGlhdGVWYWx1ZUNoYW5nZWQ6ZnVuY3Rpb24oKXt0aGlzLmRyYWdnaW5nP3RoaXMuZmlyZSgiaW1tZWRpYXRlLXZhbHVlLWNoYW5nZSIse2NvbXBvc2VkOiEwfSk6dGhpcy52YWx1ZT10aGlzLmltbWVkaWF0ZVZhbHVlfSxfc2Vjb25kYXJ5UHJvZ3Jlc3NDaGFuZ2VkOmZ1bmN0aW9uKCl7dGhpcy5zZWNvbmRhcnlQcm9ncmVzcz10aGlzLl9jbGFtcFZhbHVlKHRoaXMuc2Vjb25kYXJ5UHJvZ3Jlc3MpfSxfZXhwYW5kS25vYjpmdW5jdGlvbigpe3RoaXMuX3NldEV4cGFuZCghMCl9LF9yZXNldEtub2I6ZnVuY3Rpb24oKXt0aGlzLmNhbmNlbERlYm91bmNlcigiZXhwYW5kS25vYiIpLHRoaXMuX3NldEV4cGFuZCghMSl9LF9wb3NpdGlvbktub2I6ZnVuY3Rpb24odCl7dGhpcy5fc2V0SW1tZWRpYXRlVmFsdWUodGhpcy5fY2FsY1N0ZXAodGhpcy5fY2FsY0tub2JQb3NpdGlvbih0KSkpLHRoaXMuX3NldFJhdGlvKDEwMCp0aGlzLl9jYWxjUmF0aW8odGhpcy5pbW1lZGlhdGVWYWx1ZSkpLHRoaXMuJC5zbGlkZXJLbm9iLnN0eWxlLmxlZnQ9dGhpcy5yYXRpbysiJSIsdGhpcy5kcmFnZ2luZyYmKHRoaXMuX2tub2JzdGFydHg9dGhpcy5yYXRpbyp0aGlzLl93LzEwMCx0aGlzLnRyYW5zbGF0ZTNkKDAsMCwwLHRoaXMuJC5zbGlkZXJLbm9iKSl9LF9jYWxjS25vYlBvc2l0aW9uOmZ1bmN0aW9uKHQpe3JldHVybih0aGlzLm1heC10aGlzLm1pbikqdC8xMDArdGhpcy5taW59LF9vblRyYWNrOmZ1bmN0aW9uKHQpe3N3aXRjaCh0LnN0b3BQcm9wYWdhdGlvbigpLHQuZGV0YWlsLnN0YXRlKXtjYXNlInN0YXJ0Ijp0aGlzLl90cmFja1N0YXJ0KHQpO2JyZWFrO2Nhc2UidHJhY2siOnRoaXMuX3RyYWNrWCh0KTticmVhaztjYXNlImVuZCI6dGhpcy5fdHJhY2tFbmQoKX19LF90cmFja1N0YXJ0OmZ1bmN0aW9uKHQpe3RoaXMuX3NldFRyYW5zaXRpbmcoITEpLHRoaXMuX3c9dGhpcy4kLnNsaWRlckJhci5vZmZzZXRXaWR0aCx0aGlzLl94PXRoaXMucmF0aW8qdGhpcy5fdy8xMDAsdGhpcy5fc3RhcnR4PXRoaXMuX3gsdGhpcy5fa25vYnN0YXJ0eD10aGlzLl9zdGFydHgsdGhpcy5fbWlueD0tdGhpcy5fc3RhcnR4LHRoaXMuX21heHg9dGhpcy5fdy10aGlzLl9zdGFydHgsdGhpcy4kLnNsaWRlcktub2IuY2xhc3NMaXN0LmFkZCgiZHJhZ2dpbmciKSx0aGlzLl9zZXREcmFnZ2luZyghMCl9LF90cmFja1g6ZnVuY3Rpb24odCl7dGhpcy5kcmFnZ2luZ3x8dGhpcy5fdHJhY2tTdGFydCh0KTt2YXIgZT1NYXRoLm1pbih0aGlzLl9tYXh4LE1hdGgubWF4KHRoaXMuX21pbngsdC5kZXRhaWwuZHgqKHRoaXMuX2lzUlRMPy0xOjEpKSk7dGhpcy5feD10aGlzLl9zdGFydHgrZTt2YXIgbj10aGlzLl9jYWxjU3RlcCh0aGlzLl9jYWxjS25vYlBvc2l0aW9uKHRoaXMuX3gvdGhpcy5fdyoxMDApKTt0aGlzLl9zZXRJbW1lZGlhdGVWYWx1ZShuKTt2YXIgaT10aGlzLl9jYWxjUmF0aW8odGhpcy5pbW1lZGlhdGVWYWx1ZSkqdGhpcy5fdy10aGlzLl9rbm9ic3RhcnR4O3RoaXMudHJhbnNsYXRlM2QoaSsicHgiLDAsMCx0aGlzLiQuc2xpZGVyS25vYil9LF90cmFja0VuZDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuJC5zbGlkZXJLbm9iLnN0eWxlO3RoaXMuJC5zbGlkZXJLbm9iLmNsYXNzTGlzdC5yZW1vdmUoImRyYWdnaW5nIiksdGhpcy5fc2V0RHJhZ2dpbmcoITEpLHRoaXMuX3Jlc2V0S25vYigpLHRoaXMudmFsdWU9dGhpcy5pbW1lZGlhdGVWYWx1ZSx0LnRyYW5zZm9ybT10LndlYmtpdFRyYW5zZm9ybT0iIix0aGlzLmZpcmUoImNoYW5nZSIse2NvbXBvc2VkOiEwfSl9LF9rbm9iZG93bjpmdW5jdGlvbih0KXt0aGlzLl9leHBhbmRLbm9iKCksdC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuZm9jdXMoKX0sX2JhcnRyYWNrOmZ1bmN0aW9uKHQpe3RoaXMuX2FsbG93QmFyRXZlbnQodCkmJnRoaXMuX29uVHJhY2sodCl9LF9iYXJjbGljazpmdW5jdGlvbih0KXt0aGlzLl93PXRoaXMuJC5zbGlkZXJCYXIub2Zmc2V0V2lkdGg7dmFyIGU9dGhpcy4kLnNsaWRlckJhci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxuPSh0LmRldGFpbC54LWUubGVmdCkvdGhpcy5fdyoxMDA7dGhpcy5faXNSVEwmJihuPTEwMC1uKTt2YXIgaT10aGlzLnJhdGlvO3RoaXMuX3NldFRyYW5zaXRpbmcoITApLHRoaXMuX3Bvc2l0aW9uS25vYihuKSxpPT09dGhpcy5yYXRpbyYmdGhpcy5fc2V0VHJhbnNpdGluZyghMSksdGhpcy5hc3luYygoZnVuY3Rpb24oKXt0aGlzLmZpcmUoImNoYW5nZSIse2NvbXBvc2VkOiEwfSl9KSksdC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuZm9jdXMoKX0sX2JhcmRvd246ZnVuY3Rpb24odCl7dGhpcy5fYWxsb3dCYXJFdmVudCh0KSYmKHRoaXMuZGVib3VuY2UoImV4cGFuZEtub2IiLHRoaXMuX2V4cGFuZEtub2IsNjApLHRoaXMuX2JhcmNsaWNrKHQpKX0sX2tub2JUcmFuc2l0aW9uRW5kOmZ1bmN0aW9uKHQpe3QudGFyZ2V0PT09dGhpcy4kLnNsaWRlcktub2ImJnRoaXMuX3NldFRyYW5zaXRpbmcoITEpfSxfdXBkYXRlTWFya2VyczpmdW5jdGlvbih0LGUsbixpKXtpfHx0aGlzLl9zZXRNYXJrZXJzKFtdKTt2YXIgcj1NYXRoLnJvdW5kKChuLWUpL3RoaXMuc3RlcCk7cj50JiYocj10KSwocjwwfHwhaXNGaW5pdGUocikpJiYocj0wKSx0aGlzLl9zZXRNYXJrZXJzKG5ldyBBcnJheShyKSl9LF9tZXJnZUNsYXNzZXM6ZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5rZXlzKHQpLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIHRbZV19KSkuam9pbigiICIpfSxfZ2V0Q2xhc3NOYW1lczpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9tZXJnZUNsYXNzZXMoe2Rpc2FibGVkOnRoaXMuZGlzYWJsZWQscGluOnRoaXMucGluLHNuYXBzOnRoaXMuc25hcHMscmluZzp0aGlzLmltbWVkaWF0ZVZhbHVlPD10aGlzLm1pbixleHBhbmQ6dGhpcy5leHBhbmQsZHJhZ2dpbmc6dGhpcy5kcmFnZ2luZyx0cmFuc2l0aW5nOnRoaXMudHJhbnNpdGluZyxlZGl0YWJsZTp0aGlzLmVkaXRhYmxlfSl9LF9hbGxvd0JhckV2ZW50OmZ1bmN0aW9uKHQpe3JldHVybiF0aGlzLmlnbm9yZUJhclRvdWNofHx0LmRldGFpbC5zb3VyY2VFdmVudCBpbnN0YW5jZW9mIE1vdXNlRXZlbnR9LGdldCBfaXNSVEwoKXtyZXR1cm4gdm9pZCAwPT09dGhpcy5fX2lzUlRMJiYodGhpcy5fX2lzUlRMPSJydGwiPT09d2luZG93LmdldENvbXB1dGVkU3R5bGUodGhpcykuZGlyZWN0aW9uKSx0aGlzLl9faXNSVEx9LF9sZWZ0S2V5OmZ1bmN0aW9uKHQpe3RoaXMuX2lzUlRMP3RoaXMuX2luY3JlbWVudEtleSh0KTp0aGlzLl9kZWNyZW1lbnRLZXkodCl9LF9yaWdodEtleTpmdW5jdGlvbih0KXt0aGlzLl9pc1JUTD90aGlzLl9kZWNyZW1lbnRLZXkodCk6dGhpcy5faW5jcmVtZW50S2V5KHQpfSxfaW5jcmVtZW50S2V5OmZ1bmN0aW9uKHQpe3RoaXMuZGlzYWJsZWR8fCgiZW5kIj09PXQuZGV0YWlsLmtleT90aGlzLnZhbHVlPXRoaXMubWF4OnRoaXMuaW5jcmVtZW50KCksdGhpcy5maXJlKCJjaGFuZ2UiKSx0LnByZXZlbnREZWZhdWx0KCkpfSxfZGVjcmVtZW50S2V5OmZ1bmN0aW9uKHQpe3RoaXMuZGlzYWJsZWR8fCgiaG9tZSI9PT10LmRldGFpbC5rZXk/dGhpcy52YWx1ZT10aGlzLm1pbjp0aGlzLmRlY3JlbWVudCgpLHRoaXMuZmlyZSgiY2hhbmdlIiksdC5wcmV2ZW50RGVmYXVsdCgpKX0sX2NoYW5nZVZhbHVlOmZ1bmN0aW9uKHQpe3RoaXMudmFsdWU9dC50YXJnZXQudmFsdWUsdGhpcy5maXJlKCJjaGFuZ2UiLHtjb21wb3NlZDohMH0pfSxfaW5wdXRLZXlEb3duOmZ1bmN0aW9uKHQpe3Quc3RvcFByb3BhZ2F0aW9uKCl9LF9jcmVhdGVSaXBwbGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmlwcGxlQ29udGFpbmVyPXRoaXMuJC5zbGlkZXJLbm9iLGJhLl9jcmVhdGVSaXBwbGUuY2FsbCh0aGlzKX0sX2ZvY3VzZWRDaGFuZ2VkOmZ1bmN0aW9uKHQpe3QmJnRoaXMuZW5zdXJlUmlwcGxlKCksdGhpcy5oYXNSaXBwbGUoKSYmKHRoaXMuX3JpcHBsZS5zdHlsZS5kaXNwbGF5PXQ/IiI6Im5vbmUiLHRoaXMuX3JpcHBsZS5ob2xkRG93bj10KX19KTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNvbnN0IF9zPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRlbXBsYXRlIik7X3Muc2V0QXR0cmlidXRlKCJzdHlsZSIsImRpc3BsYXk6IG5vbmU7IiksX3MuaW5uZXJIVE1MPSI8ZG9tLW1vZHVsZSBpZD1cInBhcGVyLXNwaW5uZXItc3R5bGVzXCI+XG4gIDx0ZW1wbGF0ZT5cbiAgICA8c3R5bGU+XG4gICAgICAvKlxuICAgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqL1xuICAgICAgLyogU1RZTEVTIEZPUiBUSEUgU1BJTk5FUiAqL1xuICAgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gICAgICAvKlxuICAgICAgICogQ29uc3RhbnRzOlxuICAgICAgICogICAgICBBUkNTSVpFICAgICA9IDI3MCBkZWdyZWVzIChhbW91bnQgb2YgY2lyY2xlIHRoZSBhcmMgdGFrZXMgdXApXG4gICAgICAgKiAgICAgIEFSQ1RJTUUgICAgID0gMTMzM21zICh0aW1lIGl0IHRha2VzIHRvIGV4cGFuZCBhbmQgY29udHJhY3QgYXJjKVxuICAgICAgICogICAgICBBUkNTVEFSVFJPVCA9IDIxNiBkZWdyZWVzIChob3cgbXVjaCB0aGUgc3RhcnQgbG9jYXRpb24gb2YgdGhlIGFyY1xuICAgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZCByb3RhdGUgZWFjaCB0aW1lLCAyMTYgZ2l2ZXMgdXMgYVxuICAgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUgcG9pbnRlZCBzdGFyIHNoYXBlIChpdCdzIDM2MC81ICogMykuXG4gICAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGEgNyBwb2ludGVkIHN0YXIsIHdlIG1pZ2h0IGRvXG4gICAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzYwLzcgKiAzID0gMTU0LjI4NilcbiAgICAgICAqICAgICAgU0hSSU5LX1RJTUUgPSA0MDBtc1xuICAgICAgICovXG5cbiAgICAgIDpob3N0IHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHdpZHRoOiAyOHB4O1xuICAgICAgICBoZWlnaHQ6IDI4cHg7XG5cbiAgICAgICAgLyogMzYwICogQVJDVElNRSAvIChBUkNTVEFSVFJPVCArICgzNjAtQVJDU0laRSkpICovXG4gICAgICAgIC0tcGFwZXItc3Bpbm5lci1jb250YWluZXItcm90YXRpb24tZHVyYXRpb246IDE1NjhtcztcblxuICAgICAgICAvKiBBUkNUSU1FICovXG4gICAgICAgIC0tcGFwZXItc3Bpbm5lci1leHBhbmQtY29udHJhY3QtZHVyYXRpb246IDEzMzNtcztcblxuICAgICAgICAvKiA0ICogQVJDVElNRSAqL1xuICAgICAgICAtLXBhcGVyLXNwaW5uZXItZnVsbC1jeWNsZS1kdXJhdGlvbjogNTMzMm1zO1xuXG4gICAgICAgIC8qIFNIUklOS19USU1FICovXG4gICAgICAgIC0tcGFwZXItc3Bpbm5lci1jb29sZG93bi1kdXJhdGlvbjogNDAwbXM7XG4gICAgICB9XG5cbiAgICAgICNzcGlubmVyQ29udGFpbmVyIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMTAwJTtcblxuICAgICAgICAvKiBUaGUgc3Bpbm5lciBkb2VzIG5vdCBoYXZlIGFueSBjb250ZW50cyB0aGF0IHdvdWxkIGhhdmUgdG8gYmVcbiAgICAgICAgICogZmxpcHBlZCBpZiB0aGUgZGlyZWN0aW9uIGNoYW5nZXMuIEFsd2F5cyB1c2UgbHRyIHNvIHRoYXQgdGhlXG4gICAgICAgICAqIHN0eWxlIHdvcmtzIG91dCBjb3JyZWN0bHkgaW4gYm90aCBjYXNlcy4gKi9cbiAgICAgICAgZGlyZWN0aW9uOiBsdHI7XG4gICAgICB9XG5cbiAgICAgICNzcGlubmVyQ29udGFpbmVyLmFjdGl2ZSB7XG4gICAgICAgIC13ZWJraXQtYW5pbWF0aW9uOiBjb250YWluZXItcm90YXRlIHZhcigtLXBhcGVyLXNwaW5uZXItY29udGFpbmVyLXJvdGF0aW9uLWR1cmF0aW9uKSBsaW5lYXIgaW5maW5pdGU7XG4gICAgICAgIGFuaW1hdGlvbjogY29udGFpbmVyLXJvdGF0ZSB2YXIoLS1wYXBlci1zcGlubmVyLWNvbnRhaW5lci1yb3RhdGlvbi1kdXJhdGlvbikgbGluZWFyIGluZmluaXRlO1xuICAgICAgfVxuXG4gICAgICBALXdlYmtpdC1rZXlmcmFtZXMgY29udGFpbmVyLXJvdGF0ZSB7XG4gICAgICAgIHRvIHsgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjb250YWluZXItcm90YXRlIHtcbiAgICAgICAgdG8geyB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpIH1cbiAgICAgIH1cblxuICAgICAgLnNwaW5uZXItbGF5ZXIge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci1zcGlubmVyLWNvbG9yLCB2YXIoLS1nb29nbGUtYmx1ZS01MDApKTtcbiAgICAgIH1cblxuICAgICAgLmxheWVyLTEge1xuICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItc3Bpbm5lci1sYXllci0xLWNvbG9yLCB2YXIoLS1nb29nbGUtYmx1ZS01MDApKTtcbiAgICAgIH1cblxuICAgICAgLmxheWVyLTIge1xuICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItc3Bpbm5lci1sYXllci0yLWNvbG9yLCB2YXIoLS1nb29nbGUtcmVkLTUwMCkpO1xuICAgICAgfVxuXG4gICAgICAubGF5ZXItMyB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci1zcGlubmVyLWxheWVyLTMtY29sb3IsIHZhcigtLWdvb2dsZS15ZWxsb3ctNTAwKSk7XG4gICAgICB9XG5cbiAgICAgIC5sYXllci00IHtcbiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLXNwaW5uZXItbGF5ZXItNC1jb2xvciwgdmFyKC0tZ29vZ2xlLWdyZWVuLTUwMCkpO1xuICAgICAgfVxuXG4gICAgICAvKipcbiAgICAgICAqIElNUE9SVEFOVCBOT1RFIEFCT1VUIENTUyBBTklNQVRJT04gUFJPUEVSVElFUyAoa2VhbnVsZWUpOlxuICAgICAgICpcbiAgICAgICAqIGlPUyBTYWZhcmkgKHRlc3RlZCBvbiBpT1MgOC4xKSBkb2VzIG5vdCBoYW5kbGUgYW5pbWF0aW9uLWRlbGF5IHZlcnkgd2VsbCAtIGl0IGRvZXNuJ3RcbiAgICAgICAqIGd1YXJhbnRlZSB0aGF0IHRoZSBhbmltYXRpb24gd2lsbCBzdGFydCBfZXhhY3RseV8gYWZ0ZXIgdGhhdCB2YWx1ZS4gU28gd2UgYXZvaWQgdXNpbmdcbiAgICAgICAqIGFuaW1hdGlvbi1kZWxheSBhbmQgaW5zdGVhZCBzZXQgY3VzdG9tIGtleWZyYW1lcyBmb3IgZWFjaCBjb2xvciAoYXMgbGF5ZXItMnVuZGFudCBhcyBpdFxuICAgICAgICogc2VlbXMpLlxuICAgICAgICovXG4gICAgICAuYWN0aXZlIC5zcGlubmVyLWxheWVyIHtcbiAgICAgICAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogZmlsbC11bmZpbGwtcm90YXRlO1xuICAgICAgICAtd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjogdmFyKC0tcGFwZXItc3Bpbm5lci1mdWxsLWN5Y2xlLWR1cmF0aW9uKTtcbiAgICAgICAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC40LCAwLjAsIDAuMiwgMSk7XG4gICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7XG4gICAgICAgIGFuaW1hdGlvbi1uYW1lOiBmaWxsLXVuZmlsbC1yb3RhdGU7XG4gICAgICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogdmFyKC0tcGFwZXItc3Bpbm5lci1mdWxsLWN5Y2xlLWR1cmF0aW9uKTtcbiAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAwLjIsIDEpO1xuICAgICAgICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiBpbmZpbml0ZTtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgIH1cblxuICAgICAgLmFjdGl2ZSAuc3Bpbm5lci1sYXllci5sYXllci0xIHtcbiAgICAgICAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogZmlsbC11bmZpbGwtcm90YXRlLCBsYXllci0xLWZhZGUtaW4tb3V0O1xuICAgICAgICBhbmltYXRpb24tbmFtZTogZmlsbC11bmZpbGwtcm90YXRlLCBsYXllci0xLWZhZGUtaW4tb3V0O1xuICAgICAgfVxuXG4gICAgICAuYWN0aXZlIC5zcGlubmVyLWxheWVyLmxheWVyLTIge1xuICAgICAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBmaWxsLXVuZmlsbC1yb3RhdGUsIGxheWVyLTItZmFkZS1pbi1vdXQ7XG4gICAgICAgIGFuaW1hdGlvbi1uYW1lOiBmaWxsLXVuZmlsbC1yb3RhdGUsIGxheWVyLTItZmFkZS1pbi1vdXQ7XG4gICAgICB9XG5cbiAgICAgIC5hY3RpdmUgLnNwaW5uZXItbGF5ZXIubGF5ZXItMyB7XG4gICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IGZpbGwtdW5maWxsLXJvdGF0ZSwgbGF5ZXItMy1mYWRlLWluLW91dDtcbiAgICAgICAgYW5pbWF0aW9uLW5hbWU6IGZpbGwtdW5maWxsLXJvdGF0ZSwgbGF5ZXItMy1mYWRlLWluLW91dDtcbiAgICAgIH1cblxuICAgICAgLmFjdGl2ZSAuc3Bpbm5lci1sYXllci5sYXllci00IHtcbiAgICAgICAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogZmlsbC11bmZpbGwtcm90YXRlLCBsYXllci00LWZhZGUtaW4tb3V0O1xuICAgICAgICBhbmltYXRpb24tbmFtZTogZmlsbC11bmZpbGwtcm90YXRlLCBsYXllci00LWZhZGUtaW4tb3V0O1xuICAgICAgfVxuXG4gICAgICBALXdlYmtpdC1rZXlmcmFtZXMgZmlsbC11bmZpbGwtcm90YXRlIHtcbiAgICAgICAgMTIuNSUgeyAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDEzNWRlZykgfSAvKiAwLjUgKiBBUkNTSVpFICovXG4gICAgICAgIDI1JSAgIHsgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgyNzBkZWcpIH0gLyogMSAgICogQVJDU0laRSAqL1xuICAgICAgICAzNy41JSB7IC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoNDA1ZGVnKSB9IC8qIDEuNSAqIEFSQ1NJWkUgKi9cbiAgICAgICAgNTAlICAgeyAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDU0MGRlZykgfSAvKiAyICAgKiBBUkNTSVpFICovXG4gICAgICAgIDYyLjUlIHsgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg2NzVkZWcpIH0gLyogMi41ICogQVJDU0laRSAqL1xuICAgICAgICA3NSUgICB7IC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoODEwZGVnKSB9IC8qIDMgICAqIEFSQ1NJWkUgKi9cbiAgICAgICAgODcuNSUgeyAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDk0NWRlZykgfSAvKiAzLjUgKiBBUkNTSVpFICovXG4gICAgICAgIHRvICAgIHsgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgxMDgwZGVnKSB9IC8qIDQgICAqIEFSQ1NJWkUgKi9cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBmaWxsLXVuZmlsbC1yb3RhdGUge1xuICAgICAgICAxMi41JSB7IHRyYW5zZm9ybTogcm90YXRlKDEzNWRlZykgfSAvKiAwLjUgKiBBUkNTSVpFICovXG4gICAgICAgIDI1JSAgIHsgdHJhbnNmb3JtOiByb3RhdGUoMjcwZGVnKSB9IC8qIDEgICAqIEFSQ1NJWkUgKi9cbiAgICAgICAgMzcuNSUgeyB0cmFuc2Zvcm06IHJvdGF0ZSg0MDVkZWcpIH0gLyogMS41ICogQVJDU0laRSAqL1xuICAgICAgICA1MCUgICB7IHRyYW5zZm9ybTogcm90YXRlKDU0MGRlZykgfSAvKiAyICAgKiBBUkNTSVpFICovXG4gICAgICAgIDYyLjUlIHsgdHJhbnNmb3JtOiByb3RhdGUoNjc1ZGVnKSB9IC8qIDIuNSAqIEFSQ1NJWkUgKi9cbiAgICAgICAgNzUlICAgeyB0cmFuc2Zvcm06IHJvdGF0ZSg4MTBkZWcpIH0gLyogMyAgICogQVJDU0laRSAqL1xuICAgICAgICA4Ny41JSB7IHRyYW5zZm9ybTogcm90YXRlKDk0NWRlZykgfSAvKiAzLjUgKiBBUkNTSVpFICovXG4gICAgICAgIHRvICAgIHsgdHJhbnNmb3JtOiByb3RhdGUoMTA4MGRlZykgfSAvKiA0ICAgKiBBUkNTSVpFICovXG4gICAgICB9XG5cbiAgICAgIEAtd2Via2l0LWtleWZyYW1lcyBsYXllci0xLWZhZGUtaW4tb3V0IHtcbiAgICAgICAgMCUgeyBvcGFjaXR5OiAxIH1cbiAgICAgICAgMjUlIHsgb3BhY2l0eTogMSB9XG4gICAgICAgIDI2JSB7IG9wYWNpdHk6IDAgfVxuICAgICAgICA4OSUgeyBvcGFjaXR5OiAwIH1cbiAgICAgICAgOTAlIHsgb3BhY2l0eTogMSB9XG4gICAgICAgIHRvIHsgb3BhY2l0eTogMSB9XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgbGF5ZXItMS1mYWRlLWluLW91dCB7XG4gICAgICAgIDAlIHsgb3BhY2l0eTogMSB9XG4gICAgICAgIDI1JSB7IG9wYWNpdHk6IDEgfVxuICAgICAgICAyNiUgeyBvcGFjaXR5OiAwIH1cbiAgICAgICAgODklIHsgb3BhY2l0eTogMCB9XG4gICAgICAgIDkwJSB7IG9wYWNpdHk6IDEgfVxuICAgICAgICB0byB7IG9wYWNpdHk6IDEgfVxuICAgICAgfVxuXG4gICAgICBALXdlYmtpdC1rZXlmcmFtZXMgbGF5ZXItMi1mYWRlLWluLW91dCB7XG4gICAgICAgIDAlIHsgb3BhY2l0eTogMCB9XG4gICAgICAgIDE1JSB7IG9wYWNpdHk6IDAgfVxuICAgICAgICAyNSUgeyBvcGFjaXR5OiAxIH1cbiAgICAgICAgNTAlIHsgb3BhY2l0eTogMSB9XG4gICAgICAgIDUxJSB7IG9wYWNpdHk6IDAgfVxuICAgICAgICB0byB7IG9wYWNpdHk6IDAgfVxuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGxheWVyLTItZmFkZS1pbi1vdXQge1xuICAgICAgICAwJSB7IG9wYWNpdHk6IDAgfVxuICAgICAgICAxNSUgeyBvcGFjaXR5OiAwIH1cbiAgICAgICAgMjUlIHsgb3BhY2l0eTogMSB9XG4gICAgICAgIDUwJSB7IG9wYWNpdHk6IDEgfVxuICAgICAgICA1MSUgeyBvcGFjaXR5OiAwIH1cbiAgICAgICAgdG8geyBvcGFjaXR5OiAwIH1cbiAgICAgIH1cblxuICAgICAgQC13ZWJraXQta2V5ZnJhbWVzIGxheWVyLTMtZmFkZS1pbi1vdXQge1xuICAgICAgICAwJSB7IG9wYWNpdHk6IDAgfVxuICAgICAgICA0MCUgeyBvcGFjaXR5OiAwIH1cbiAgICAgICAgNTAlIHsgb3BhY2l0eTogMSB9XG4gICAgICAgIDc1JSB7IG9wYWNpdHk6IDEgfVxuICAgICAgICA3NiUgeyBvcGFjaXR5OiAwIH1cbiAgICAgICAgdG8geyBvcGFjaXR5OiAwIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBsYXllci0zLWZhZGUtaW4tb3V0IHtcbiAgICAgICAgMCUgeyBvcGFjaXR5OiAwIH1cbiAgICAgICAgNDAlIHsgb3BhY2l0eTogMCB9XG4gICAgICAgIDUwJSB7IG9wYWNpdHk6IDEgfVxuICAgICAgICA3NSUgeyBvcGFjaXR5OiAxIH1cbiAgICAgICAgNzYlIHsgb3BhY2l0eTogMCB9XG4gICAgICAgIHRvIHsgb3BhY2l0eTogMCB9XG4gICAgICB9XG5cbiAgICAgIEAtd2Via2l0LWtleWZyYW1lcyBsYXllci00LWZhZGUtaW4tb3V0IHtcbiAgICAgICAgMCUgeyBvcGFjaXR5OiAwIH1cbiAgICAgICAgNjUlIHsgb3BhY2l0eTogMCB9XG4gICAgICAgIDc1JSB7IG9wYWNpdHk6IDEgfVxuICAgICAgICA5MCUgeyBvcGFjaXR5OiAxIH1cbiAgICAgICAgdG8geyBvcGFjaXR5OiAwIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBsYXllci00LWZhZGUtaW4tb3V0IHtcbiAgICAgICAgMCUgeyBvcGFjaXR5OiAwIH1cbiAgICAgICAgNjUlIHsgb3BhY2l0eTogMCB9XG4gICAgICAgIDc1JSB7IG9wYWNpdHk6IDEgfVxuICAgICAgICA5MCUgeyBvcGFjaXR5OiAxIH1cbiAgICAgICAgdG8geyBvcGFjaXR5OiAwIH1cbiAgICAgIH1cblxuICAgICAgLmNpcmNsZS1jbGlwcGVyIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHdpZHRoOiA1MCU7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIH1cblxuICAgICAgLyoqXG4gICAgICAgKiBQYXRjaCB0aGUgZ2FwIHRoYXQgYXBwZWFyIGJldHdlZW4gdGhlIHR3byBhZGphY2VudCBkaXYuY2lyY2xlLWNsaXBwZXIgd2hpbGUgdGhlXG4gICAgICAgKiBzcGlubmVyIGlzIHJvdGF0aW5nIChhcHBlYXJzIG9uIENocm9tZSA1MCwgU2FmYXJpIDkuMS4xLCBhbmQgRWRnZSkuXG4gICAgICAgKi9cbiAgICAgIC5zcGlubmVyLWxheWVyOjphZnRlciB7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBsZWZ0OiA0NSU7XG4gICAgICAgIHdpZHRoOiAxMCU7XG4gICAgICAgIGJvcmRlci10b3Atc3R5bGU6IHNvbGlkO1xuICAgICAgfVxuXG4gICAgICAuc3Bpbm5lci1sYXllcjo6YWZ0ZXIsXG4gICAgICAuY2lyY2xlLWNsaXBwZXIgLmNpcmNsZSB7XG4gICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICBib3JkZXItd2lkdGg6IHZhcigtLXBhcGVyLXNwaW5uZXItc3Ryb2tlLXdpZHRoLCAzcHgpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICB9XG5cbiAgICAgIC5jaXJjbGUtY2xpcHBlciAuY2lyY2xlIHtcbiAgICAgICAgYm90dG9tOiAwO1xuICAgICAgICB3aWR0aDogMjAwJTtcbiAgICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbiAgICAgIH1cblxuICAgICAgLmNpcmNsZS1jbGlwcGVyLmxlZnQgLmNpcmNsZSB7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIGJvcmRlci1yaWdodC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgxMjlkZWcpO1xuICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxMjlkZWcpO1xuICAgICAgfVxuXG4gICAgICAuY2lyY2xlLWNsaXBwZXIucmlnaHQgLmNpcmNsZSB7XG4gICAgICAgIGxlZnQ6IC0xMDAlO1xuICAgICAgICBib3JkZXItbGVmdC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgtMTI5ZGVnKTtcbiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoLTEyOWRlZyk7XG4gICAgICB9XG5cbiAgICAgIC5hY3RpdmUgLmdhcC1wYXRjaDo6YWZ0ZXIsXG4gICAgICAuYWN0aXZlIC5jaXJjbGUtY2xpcHBlciAuY2lyY2xlIHtcbiAgICAgICAgLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246IHZhcigtLXBhcGVyLXNwaW5uZXItZXhwYW5kLWNvbnRyYWN0LWR1cmF0aW9uKTtcbiAgICAgICAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC40LCAwLjAsIDAuMiwgMSk7XG4gICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7XG4gICAgICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogdmFyKC0tcGFwZXItc3Bpbm5lci1leHBhbmQtY29udHJhY3QtZHVyYXRpb24pO1xuICAgICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC40LCAwLjAsIDAuMiwgMSk7XG4gICAgICAgIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IGluZmluaXRlO1xuICAgICAgfVxuXG4gICAgICAuYWN0aXZlIC5jaXJjbGUtY2xpcHBlci5sZWZ0IC5jaXJjbGUge1xuICAgICAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBsZWZ0LXNwaW47XG4gICAgICAgIGFuaW1hdGlvbi1uYW1lOiBsZWZ0LXNwaW47XG4gICAgICB9XG5cbiAgICAgIC5hY3RpdmUgLmNpcmNsZS1jbGlwcGVyLnJpZ2h0IC5jaXJjbGUge1xuICAgICAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiByaWdodC1zcGluO1xuICAgICAgICBhbmltYXRpb24tbmFtZTogcmlnaHQtc3BpbjtcbiAgICAgIH1cblxuICAgICAgQC13ZWJraXQta2V5ZnJhbWVzIGxlZnQtc3BpbiB7XG4gICAgICAgIDAlIHsgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgxMzBkZWcpIH1cbiAgICAgICAgNTAlIHsgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgtNWRlZykgfVxuICAgICAgICB0byB7IC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMTMwZGVnKSB9XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgbGVmdC1zcGluIHtcbiAgICAgICAgMCUgeyB0cmFuc2Zvcm06IHJvdGF0ZSgxMzBkZWcpIH1cbiAgICAgICAgNTAlIHsgdHJhbnNmb3JtOiByb3RhdGUoLTVkZWcpIH1cbiAgICAgICAgdG8geyB0cmFuc2Zvcm06IHJvdGF0ZSgxMzBkZWcpIH1cbiAgICAgIH1cblxuICAgICAgQC13ZWJraXQta2V5ZnJhbWVzIHJpZ2h0LXNwaW4ge1xuICAgICAgICAwJSB7IC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoLTEzMGRlZykgfVxuICAgICAgICA1MCUgeyAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDVkZWcpIH1cbiAgICAgICAgdG8geyAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKC0xMzBkZWcpIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyByaWdodC1zcGluIHtcbiAgICAgICAgMCUgeyB0cmFuc2Zvcm06IHJvdGF0ZSgtMTMwZGVnKSB9XG4gICAgICAgIDUwJSB7IHRyYW5zZm9ybTogcm90YXRlKDVkZWcpIH1cbiAgICAgICAgdG8geyB0cmFuc2Zvcm06IHJvdGF0ZSgtMTMwZGVnKSB9XG4gICAgICB9XG5cbiAgICAgICNzcGlubmVyQ29udGFpbmVyLmNvb2xkb3duIHtcbiAgICAgICAgLXdlYmtpdC1hbmltYXRpb246IGNvbnRhaW5lci1yb3RhdGUgdmFyKC0tcGFwZXItc3Bpbm5lci1jb250YWluZXItcm90YXRpb24tZHVyYXRpb24pIGxpbmVhciBpbmZpbml0ZSwgZmFkZS1vdXQgdmFyKC0tcGFwZXItc3Bpbm5lci1jb29sZG93bi1kdXJhdGlvbikgY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAwLjIsIDEpO1xuICAgICAgICBhbmltYXRpb246IGNvbnRhaW5lci1yb3RhdGUgdmFyKC0tcGFwZXItc3Bpbm5lci1jb250YWluZXItcm90YXRpb24tZHVyYXRpb24pIGxpbmVhciBpbmZpbml0ZSwgZmFkZS1vdXQgdmFyKC0tcGFwZXItc3Bpbm5lci1jb29sZG93bi1kdXJhdGlvbikgY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAwLjIsIDEpO1xuICAgICAgfVxuXG4gICAgICBALXdlYmtpdC1rZXlmcmFtZXMgZmFkZS1vdXQge1xuICAgICAgICAwJSB7IG9wYWNpdHk6IDEgfVxuICAgICAgICB0byB7IG9wYWNpdHk6IDAgfVxuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGZhZGUtb3V0IHtcbiAgICAgICAgMCUgeyBvcGFjaXR5OiAxIH1cbiAgICAgICAgdG8geyBvcGFjaXR5OiAwIH1cbiAgICAgIH1cbiAgICA8L3N0eWxlPlxuICA8L3RlbXBsYXRlPlxuPC9kb20tbW9kdWxlPiIsZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChfcy5jb250ZW50KTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNvbnN0IHlzPXtwcm9wZXJ0aWVzOnthY3RpdmU6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMSxyZWZsZWN0VG9BdHRyaWJ1dGU6ITAsb2JzZXJ2ZXI6Il9fYWN0aXZlQ2hhbmdlZCJ9LGFsdDp7dHlwZTpTdHJpbmcsdmFsdWU6ImxvYWRpbmciLG9ic2VydmVyOiJfX2FsdENoYW5nZWQifSxfX2Nvb2xpbmdEb3duOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9fSxfX2NvbXB1dGVDb250YWluZXJDbGFzc2VzOmZ1bmN0aW9uKHQsZSl7cmV0dXJuW3R8fGU/ImFjdGl2ZSI6IiIsZT8iY29vbGRvd24iOiIiXS5qb2luKCIgIil9LF9fYWN0aXZlQ2hhbmdlZDpmdW5jdGlvbih0LGUpe3RoaXMuX19zZXRBcmlhSGlkZGVuKCF0KSx0aGlzLl9fY29vbGluZ0Rvd249IXQmJmV9LF9fYWx0Q2hhbmdlZDpmdW5jdGlvbih0KXsibG9hZGluZyI9PT10P3RoaXMuYWx0PXRoaXMuZ2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIil8fHQ6KHRoaXMuX19zZXRBcmlhSGlkZGVuKCIiPT09dCksdGhpcy5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWwiLHQpKX0sX19zZXRBcmlhSGlkZGVuOmZ1bmN0aW9uKHQpe3ZhciBlPSJhcmlhLWhpZGRlbiI7dD90aGlzLnNldEF0dHJpYnV0ZShlLCJ0cnVlIik6dGhpcy5yZW1vdmVBdHRyaWJ1dGUoZSl9LF9fcmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLmFjdGl2ZT0hMSx0aGlzLl9fY29vbGluZ0Rvd249ITF9fSx2cz14ZWAKICA8c3R5bGUgaW5jbHVkZT0icGFwZXItc3Bpbm5lci1zdHlsZXMiPjwvc3R5bGU+CgogIDxkaXYgaWQ9InNwaW5uZXJDb250YWluZXIiIGNsYXNzLW5hbWU9IltbX19jb21wdXRlQ29udGFpbmVyQ2xhc3NlcyhhY3RpdmUsIF9fY29vbGluZ0Rvd24pXV0iIG9uLWFuaW1hdGlvbmVuZD0iX19yZXNldCIgb24td2Via2l0LWFuaW1hdGlvbi1lbmQ9Il9fcmVzZXQiPgogICAgPGRpdiBjbGFzcz0ic3Bpbm5lci1sYXllciBsYXllci0xIj4KICAgICAgPGRpdiBjbGFzcz0iY2lyY2xlLWNsaXBwZXIgbGVmdCI+CiAgICAgICAgPGRpdiBjbGFzcz0iY2lyY2xlIj48L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImNpcmNsZS1jbGlwcGVyIHJpZ2h0Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJjaXJjbGUiPjwvZGl2PgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9InNwaW5uZXItbGF5ZXIgbGF5ZXItMiI+CiAgICAgIDxkaXYgY2xhc3M9ImNpcmNsZS1jbGlwcGVyIGxlZnQiPgogICAgICAgIDxkaXYgY2xhc3M9ImNpcmNsZSI+PC9kaXY+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJjaXJjbGUtY2xpcHBlciByaWdodCI+CiAgICAgICAgPGRpdiBjbGFzcz0iY2lyY2xlIj48L2Rpdj4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJzcGlubmVyLWxheWVyIGxheWVyLTMiPgogICAgICA8ZGl2IGNsYXNzPSJjaXJjbGUtY2xpcHBlciBsZWZ0Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJjaXJjbGUiPjwvZGl2PgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iY2lyY2xlLWNsaXBwZXIgcmlnaHQiPgogICAgICAgIDxkaXYgY2xhc3M9ImNpcmNsZSI+PC9kaXY+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0ic3Bpbm5lci1sYXllciBsYXllci00Ij4KICAgICAgPGRpdiBjbGFzcz0iY2lyY2xlLWNsaXBwZXIgbGVmdCI+CiAgICAgICAgPGRpdiBjbGFzcz0iY2lyY2xlIj48L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImNpcmNsZS1jbGlwcGVyIHJpZ2h0Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJjaXJjbGUiPjwvZGl2PgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIDwvZGl2PgpgOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi92cy5zZXRBdHRyaWJ1dGUoInN0cmlwLXdoaXRlc3BhY2UiLCIiKSxqcih7X3RlbXBsYXRlOnZzLGlzOiJwYXBlci1zcGlubmVyIixiZWhhdmlvcnM6W3lzXX0pOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KY29uc3QgYnM9eGVgCiAgPHN0eWxlIGluY2x1ZGU9InBhcGVyLXNwaW5uZXItc3R5bGVzIj48L3N0eWxlPgoKICA8ZGl2IGlkPSJzcGlubmVyQ29udGFpbmVyIiBjbGFzcy1uYW1lPSJbW19fY29tcHV0ZUNvbnRhaW5lckNsYXNzZXMoYWN0aXZlLCBfX2Nvb2xpbmdEb3duKV1dIiBvbi1hbmltYXRpb25lbmQ9Il9fcmVzZXQiIG9uLXdlYmtpdC1hbmltYXRpb24tZW5kPSJfX3Jlc2V0Ij4KICAgIDxkaXYgY2xhc3M9InNwaW5uZXItbGF5ZXIiPgogICAgICA8ZGl2IGNsYXNzPSJjaXJjbGUtY2xpcHBlciBsZWZ0Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJjaXJjbGUiPjwvZGl2PgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iY2lyY2xlLWNsaXBwZXIgcmlnaHQiPgogICAgICAgIDxkaXYgY2xhc3M9ImNpcmNsZSI+PC9kaXY+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgPC9kaXY+CmA7YnMuc2V0QXR0cmlidXRlKCJzdHJpcC13aGl0ZXNwYWNlIiwiIiksanIoe190ZW1wbGF0ZTpicyxpczoicGFwZXItc3Bpbm5lci1saXRlIixiZWhhdmlvcnM6W3lzXX0pOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCB4cz14ZWA8aXJvbi1pY29uc2V0LXN2ZyBuYW1lPSJwYXBlci10YWJzIiBzaXplPSIyNCI+Cjxzdmc+PGRlZnM+CjxnIGlkPSJjaGV2cm9uLWxlZnQiPjxwYXRoIGQ9Ik0xNS40MSA3LjQxTDE0IDZsLTYgNiA2IDYgMS40MS0xLjQxTDEwLjgzIDEyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNoZXZyb24tcmlnaHQiPjxwYXRoIGQ9Ik0xMCA2TDguNTkgNy40MSAxMy4xNyAxMmwtNC41OCA0LjU5TDEwIDE4bDYtNnoiPjwvcGF0aD48L2c+CjwvZGVmcz48L3N2Zz4KPC9pcm9uLWljb25zZXQtc3ZnPmA7ZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZCh4cy5jb250ZW50KSwKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KanIoe190ZW1wbGF0ZTp4ZWAKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIEBhcHBseSAtLWxheW91dC1pbmxpbmU7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWNlbnRlcjsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtY2VudGVyLWp1c3RpZmllZDsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtZmxleC1hdXRvOwoKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgcGFkZGluZzogMCAxMnB4OwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CgogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY29tbW9uLWJhc2U7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItdGFiOwogICAgICB9CgogICAgICA6aG9zdCg6Zm9jdXMpIHsKICAgICAgICBvdXRsaW5lOiBub25lOwogICAgICB9CgogICAgICA6aG9zdChbbGlua10pIHsKICAgICAgICBwYWRkaW5nOiAwOwogICAgICB9CgogICAgICAudGFiLWNvbnRlbnQgewogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7CiAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWigwKTsKICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMXMgY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAxLCAxKTsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtaG9yaXpvbnRhbDsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtY2VudGVyLWNlbnRlcjsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtZmxleC1hdXRvOwogICAgICAgIEBhcHBseSAtLXBhcGVyLXRhYi1jb250ZW50OwogICAgICB9CgogICAgICA6aG9zdCg6bm90KC5pcm9uLXNlbGVjdGVkKSkgPiAudGFiLWNvbnRlbnQgewogICAgICAgIG9wYWNpdHk6IDAuODsKCiAgICAgICAgQGFwcGx5IC0tcGFwZXItdGFiLWNvbnRlbnQtdW5zZWxlY3RlZDsKICAgICAgfQoKICAgICAgOmhvc3QoOmZvY3VzKSAudGFiLWNvbnRlbnQgewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDsKCiAgICAgICAgQGFwcGx5IC0tcGFwZXItdGFiLWNvbnRlbnQtZm9jdXNlZDsKICAgICAgfQoKICAgICAgcGFwZXItcmlwcGxlIHsKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItdGFiLWluaywgdmFyKC0tcGFwZXIteWVsbG93LWExMDApKTsKICAgICAgfQoKICAgICAgLnRhYi1jb250ZW50ID4gOjpzbG90dGVkKGEpIHsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtZmxleC1hdXRvOwoKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIH0KICAgIDwvc3R5bGU+CgogICAgPGRpdiBjbGFzcz0idGFiLWNvbnRlbnQiPgogICAgICA8c2xvdD48L3Nsb3Q+CiAgICA8L2Rpdj4KYCxpczoicGFwZXItdGFiIixiZWhhdmlvcnM6W3JhLGFhLHVhXSxwcm9wZXJ0aWVzOntsaW5rOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITEscmVmbGVjdFRvQXR0cmlidXRlOiEwfX0saG9zdEF0dHJpYnV0ZXM6e3JvbGU6InRhYiJ9LGxpc3RlbmVyczp7ZG93bjoiX3VwZGF0ZU5vaW5rIix0YXA6Il9vblRhcCJ9LGF0dGFjaGVkOmZ1bmN0aW9uKCl7dGhpcy5fdXBkYXRlTm9pbmsoKX0sZ2V0IF9wYXJlbnROb2luaygpe3ZhciB0PWVyKHRoaXMpLnBhcmVudE5vZGU7cmV0dXJuISF0JiYhIXQubm9pbmt9LF91cGRhdGVOb2luazpmdW5jdGlvbigpe3RoaXMubm9pbms9ISF0aGlzLm5vaW5rfHwhIXRoaXMuX3BhcmVudE5vaW5rfSxfb25UYXA6ZnVuY3Rpb24odCl7aWYodGhpcy5saW5rKXt2YXIgZT10aGlzLnF1ZXJ5RWZmZWN0aXZlQ2hpbGRyZW4oImEiKTtpZighZSlyZXR1cm47aWYodC50YXJnZXQ9PT1lKXJldHVybjtlLmNsaWNrKCl9fX0pLAovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpqcih7X3RlbXBsYXRlOnhlYAogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0OwogICAgICAgIEBhcHBseSAtLWxheW91dC1jZW50ZXI7CgogICAgICAgIGhlaWdodDogNDhweDsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgLW1zLXVzZXItc2VsZWN0OiBub25lOwogICAgICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7CgogICAgICAgIC8qIE5PVEU6IEJvdGggdmFsdWVzIGFyZSBuZWVkZWQsIHNpbmNlIHNvbWUgcGhvbmVzIHJlcXVpcmUgdGhlIHZhbHVlIHRvIGJlIFxgdHJhbnNwYXJlbnRcYC4gKi8KICAgICAgICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMCk7CiAgICAgICAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDsKCiAgICAgICAgQGFwcGx5IC0tcGFwZXItdGFiczsKICAgICAgfQoKICAgICAgOmhvc3QoOmRpcihydGwpKSB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWhvcml6b250YWwtcmV2ZXJzZTsKICAgICAgfQoKICAgICAgI3RhYnNDb250YWluZXIgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIEBhcHBseSAtLWxheW91dC1mbGV4LWF1dG87CiAgICAgICAgQGFwcGx5IC0tcGFwZXItdGFicy1jb250YWluZXI7CiAgICAgIH0KCiAgICAgICN0YWJzQ29udGVudCB7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIC1tb3otZmxleC1iYXNpczogYXV0bzsKICAgICAgICAtbXMtZmxleC1iYXNpczogYXV0bzsKICAgICAgICBmbGV4LWJhc2lzOiBhdXRvOwogICAgICAgIEBhcHBseSAtLXBhcGVyLXRhYnMtY29udGVudDsKICAgICAgfQoKICAgICAgI3RhYnNDb250ZW50LnNjcm9sbGFibGUgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICB9CgogICAgICAjdGFic0NvbnRlbnQ6bm90KC5zY3JvbGxhYmxlKSwKICAgICAgI3RhYnNDb250ZW50LnNjcm9sbGFibGUuZml0LWNvbnRhaW5lciB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWhvcml6b250YWw7CiAgICAgIH0KCiAgICAgICN0YWJzQ29udGVudC5zY3JvbGxhYmxlLmZpdC1jb250YWluZXIgewogICAgICAgIG1pbi13aWR0aDogMTAwJTsKICAgICAgfQoKICAgICAgI3RhYnNDb250ZW50LnNjcm9sbGFibGUuZml0LWNvbnRhaW5lciA+IDo6c2xvdHRlZCgqKSB7CiAgICAgICAgLyogSUUgLSBwcmV2ZW50IHRhYnMgZnJvbSBjb21wcmVzc2luZyB3aGVuIHRoZXkgc2hvdWxkIHNjcm9sbC4gKi8KICAgICAgICAtbXMtZmxleDogMSAwIGF1dG87CiAgICAgICAgLXdlYmtpdC1mbGV4OiAxIDAgYXV0bzsKICAgICAgICBmbGV4OiAxIDAgYXV0bzsKICAgICAgfQoKICAgICAgLmhpZGRlbiB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgfQoKICAgICAgLm5vdC12aXNpYmxlIHsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIGN1cnNvcjogZGVmYXVsdDsKICAgICAgfQoKICAgICAgcGFwZXItaWNvbi1idXR0b24gewogICAgICAgIHdpZHRoOiA0OHB4OwogICAgICAgIGhlaWdodDogNDhweDsKICAgICAgICBwYWRkaW5nOiAxMnB4OwogICAgICAgIG1hcmdpbjogMCA0cHg7CiAgICAgIH0KCiAgICAgICNzZWxlY3Rpb25CYXIgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICBoZWlnaHQ6IDA7CiAgICAgICAgYm90dG9tOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIHZhcigtLXBhcGVyLXRhYnMtc2VsZWN0aW9uLWJhci1jb2xvciwgdmFyKC0tcGFwZXIteWVsbG93LWExMDApKTsKICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgwKTsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDApOwogICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IGNlbnRlcjsKICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IGNlbnRlcjsKICAgICAgICAgIHRyYW5zaXRpb246IC13ZWJraXQtdHJhbnNmb3JtOwogICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybTsKCiAgICAgICAgQGFwcGx5IC0tcGFwZXItdGFicy1zZWxlY3Rpb24tYmFyOwogICAgICB9CgogICAgICAjc2VsZWN0aW9uQmFyLmFsaWduLWJvdHRvbSB7CiAgICAgICAgdG9wOiAwOwogICAgICAgIGJvdHRvbTogYXV0bzsKICAgICAgfQoKICAgICAgI3NlbGVjdGlvbkJhci5leHBhbmQgewogICAgICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDAuMTVzOwogICAgICAgIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC40LCAwLjAsIDEsIDEpOwogICAgICB9CgogICAgICAjc2VsZWN0aW9uQmFyLmNvbnRyYWN0IHsKICAgICAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjE4czsKICAgICAgICB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMCwgMC4wLCAwLjIsIDEpOwogICAgICB9CgogICAgICAjdGFic0NvbnRlbnQgPiA6OnNsb3R0ZWQoOm5vdCgjc2VsZWN0aW9uQmFyKSkgewogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8cGFwZXItaWNvbi1idXR0b24gaWNvbj0icGFwZXItdGFiczpjaGV2cm9uLWxlZnQiIGNsYXNzJD0iW1tfY29tcHV0ZVNjcm9sbEJ1dHRvbkNsYXNzKF9sZWZ0SGlkZGVuLCBzY3JvbGxhYmxlLCBoaWRlU2Nyb2xsQnV0dG9ucyldXSIgb24tdXA9Il9vblNjcm9sbEJ1dHRvblVwIiBvbi1kb3duPSJfb25MZWZ0U2Nyb2xsQnV0dG9uRG93biIgdGFiaW5kZXg9Ii0xIj48L3BhcGVyLWljb24tYnV0dG9uPgoKICAgIDxkaXYgaWQ9InRhYnNDb250YWluZXIiIG9uLXRyYWNrPSJfc2Nyb2xsIiBvbi1kb3duPSJfZG93biI+CiAgICAgIDxkaXYgaWQ9InRhYnNDb250ZW50IiBjbGFzcyQ9IltbX2NvbXB1dGVUYWJzQ29udGVudENsYXNzKHNjcm9sbGFibGUsIGZpdENvbnRhaW5lcildXSI+CiAgICAgICAgPGRpdiBpZD0ic2VsZWN0aW9uQmFyIiBjbGFzcyQ9IltbX2NvbXB1dGVTZWxlY3Rpb25CYXJDbGFzcyhub0JhciwgYWxpZ25Cb3R0b20pXV0iIG9uLXRyYW5zaXRpb25lbmQ9Il9vbkJhclRyYW5zaXRpb25FbmQiPjwvZGl2PgogICAgICAgIDxzbG90Pjwvc2xvdD4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8cGFwZXItaWNvbi1idXR0b24gaWNvbj0icGFwZXItdGFiczpjaGV2cm9uLXJpZ2h0IiBjbGFzcyQ9IltbX2NvbXB1dGVTY3JvbGxCdXR0b25DbGFzcyhfcmlnaHRIaWRkZW4sIHNjcm9sbGFibGUsIGhpZGVTY3JvbGxCdXR0b25zKV1dIiBvbi11cD0iX29uU2Nyb2xsQnV0dG9uVXAiIG9uLWRvd249Il9vblJpZ2h0U2Nyb2xsQnV0dG9uRG93biIgdGFiaW5kZXg9Ii0xIj48L3BhcGVyLWljb24tYnV0dG9uPgpgLGlzOiJwYXBlci10YWJzIixiZWhhdmlvcnM6W0NvLG1zXSxwcm9wZXJ0aWVzOntub2luazp7dHlwZTpCb29sZWFuLHZhbHVlOiExLG9ic2VydmVyOiJfbm9pbmtDaGFuZ2VkIn0sbm9CYXI6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sbm9TbGlkZTp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxzY3JvbGxhYmxlOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LGZpdENvbnRhaW5lcjp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxkaXNhYmxlRHJhZzp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxoaWRlU2Nyb2xsQnV0dG9uczp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxhbGlnbkJvdHRvbTp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxzZWxlY3RhYmxlOnt0eXBlOlN0cmluZyx2YWx1ZToicGFwZXItdGFiIn0sYXV0b3NlbGVjdDp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxhdXRvc2VsZWN0RGVsYXk6e3R5cGU6TnVtYmVyLHZhbHVlOjB9LF9zdGVwOnt0eXBlOk51bWJlcix2YWx1ZToxMH0sX2hvbGREZWxheTp7dHlwZTpOdW1iZXIsdmFsdWU6MX0sX2xlZnRIaWRkZW46e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sX3JpZ2h0SGlkZGVuOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LF9wcmV2aW91c1RhYjp7dHlwZTpPYmplY3R9fSxob3N0QXR0cmlidXRlczp7cm9sZToidGFibGlzdCJ9LGxpc3RlbmVyczp7Imlyb24tcmVzaXplIjoiX29uVGFiU2l6aW5nQ2hhbmdlZCIsImlyb24taXRlbXMtY2hhbmdlZCI6Il9vblRhYlNpemluZ0NoYW5nZWQiLCJpcm9uLXNlbGVjdCI6Il9vbklyb25TZWxlY3QiLCJpcm9uLWRlc2VsZWN0IjoiX29uSXJvbkRlc2VsZWN0In0sa2V5QmluZGluZ3M6eyJsZWZ0OmtleXVwIHJpZ2h0OmtleXVwIjoiX29uQXJyb3dLZXl1cCJ9LGNyZWF0ZWQ6ZnVuY3Rpb24oKXt0aGlzLl9ob2xkSm9iPW51bGwsdGhpcy5fcGVuZGluZ0FjdGl2YXRpb25JdGVtPXZvaWQgMCx0aGlzLl9wZW5kaW5nQWN0aXZhdGlvblRpbWVvdXQ9dm9pZCAwLHRoaXMuX2JpbmREZWxheWVkQWN0aXZhdGlvbkhhbmRsZXI9dGhpcy5fZGVsYXllZEFjdGl2YXRpb25IYW5kbGVyLmJpbmQodGhpcyksdGhpcy5hZGRFdmVudExpc3RlbmVyKCJibHVyIix0aGlzLl9vbkJsdXJDYXB0dXJlLmJpbmQodGhpcyksITApfSxyZWFkeTpmdW5jdGlvbigpe3RoaXMuc2V0U2Nyb2xsRGlyZWN0aW9uKCJ5Iix0aGlzLiQudGFic0NvbnRhaW5lcil9LGRldGFjaGVkOmZ1bmN0aW9uKCl7dGhpcy5fY2FuY2VsUGVuZGluZ0FjdGl2YXRpb24oKX0sX25vaW5rQ2hhbmdlZDpmdW5jdGlvbih0KXtlcih0aGlzKS5xdWVyeVNlbGVjdG9yQWxsKCJwYXBlci10YWIiKS5mb3JFYWNoKHQ/dGhpcy5fc2V0Tm9pbmtBdHRyaWJ1dGU6dGhpcy5fcmVtb3ZlTm9pbmtBdHRyaWJ1dGUpfSxfc2V0Tm9pbmtBdHRyaWJ1dGU6ZnVuY3Rpb24odCl7dC5zZXRBdHRyaWJ1dGUoIm5vaW5rIiwiIil9LF9yZW1vdmVOb2lua0F0dHJpYnV0ZTpmdW5jdGlvbih0KXt0LnJlbW92ZUF0dHJpYnV0ZSgibm9pbmsiKX0sX2NvbXB1dGVTY3JvbGxCdXR0b25DbGFzczpmdW5jdGlvbih0LGUsbil7cmV0dXJuIWV8fG4/ImhpZGRlbiI6dD8ibm90LXZpc2libGUiOiIifSxfY29tcHV0ZVRhYnNDb250ZW50Q2xhc3M6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD8ic2Nyb2xsYWJsZSIrKGU/IiBmaXQtY29udGFpbmVyIjoiIik6IiBmaXQtY29udGFpbmVyIn0sX2NvbXB1dGVTZWxlY3Rpb25CYXJDbGFzczpmdW5jdGlvbih0LGUpe3JldHVybiB0PyJoaWRkZW4iOmU/ImFsaWduLWJvdHRvbSI6IiJ9LF9vblRhYlNpemluZ0NoYW5nZWQ6ZnVuY3Rpb24oKXt0aGlzLmRlYm91bmNlKCJfb25UYWJTaXppbmdDaGFuZ2VkIiwoZnVuY3Rpb24oKXt0aGlzLl9zY3JvbGwoKSx0aGlzLl90YWJDaGFuZ2VkKHRoaXMuc2VsZWN0ZWRJdGVtKX0pLDEwKX0sX29uSXJvblNlbGVjdDpmdW5jdGlvbih0KXt0aGlzLl90YWJDaGFuZ2VkKHQuZGV0YWlsLml0ZW0sdGhpcy5fcHJldmlvdXNUYWIpLHRoaXMuX3ByZXZpb3VzVGFiPXQuZGV0YWlsLml0ZW0sdGhpcy5jYW5jZWxEZWJvdW5jZXIoInRhYi1jaGFuZ2VkIil9LF9vbklyb25EZXNlbGVjdDpmdW5jdGlvbih0KXt0aGlzLmRlYm91bmNlKCJ0YWItY2hhbmdlZCIsKGZ1bmN0aW9uKCl7dGhpcy5fdGFiQ2hhbmdlZChudWxsLHRoaXMuX3ByZXZpb3VzVGFiKSx0aGlzLl9wcmV2aW91c1RhYj1udWxsfSksMSl9LF9hY3RpdmF0ZUhhbmRsZXI6ZnVuY3Rpb24oKXt0aGlzLl9jYW5jZWxQZW5kaW5nQWN0aXZhdGlvbigpLGNzLl9hY3RpdmF0ZUhhbmRsZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxfc2NoZWR1bGVBY3RpdmF0aW9uOmZ1bmN0aW9uKHQsZSl7dGhpcy5fcGVuZGluZ0FjdGl2YXRpb25JdGVtPXQsdGhpcy5fcGVuZGluZ0FjdGl2YXRpb25UaW1lb3V0PXRoaXMuYXN5bmModGhpcy5fYmluZERlbGF5ZWRBY3RpdmF0aW9uSGFuZGxlcixlKX0sX2RlbGF5ZWRBY3RpdmF0aW9uSGFuZGxlcjpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX3BlbmRpbmdBY3RpdmF0aW9uSXRlbTt0aGlzLl9wZW5kaW5nQWN0aXZhdGlvbkl0ZW09dm9pZCAwLHRoaXMuX3BlbmRpbmdBY3RpdmF0aW9uVGltZW91dD12b2lkIDAsdC5maXJlKHRoaXMuYWN0aXZhdGVFdmVudCxudWxsLHtidWJibGVzOiEwLGNhbmNlbGFibGU6ITB9KX0sX2NhbmNlbFBlbmRpbmdBY3RpdmF0aW9uOmZ1bmN0aW9uKCl7dm9pZCAwIT09dGhpcy5fcGVuZGluZ0FjdGl2YXRpb25UaW1lb3V0JiYodGhpcy5jYW5jZWxBc3luYyh0aGlzLl9wZW5kaW5nQWN0aXZhdGlvblRpbWVvdXQpLHRoaXMuX3BlbmRpbmdBY3RpdmF0aW9uSXRlbT12b2lkIDAsdGhpcy5fcGVuZGluZ0FjdGl2YXRpb25UaW1lb3V0PXZvaWQgMCl9LF9vbkFycm93S2V5dXA6ZnVuY3Rpb24odCl7dGhpcy5hdXRvc2VsZWN0JiZ0aGlzLl9zY2hlZHVsZUFjdGl2YXRpb24odGhpcy5mb2N1c2VkSXRlbSx0aGlzLmF1dG9zZWxlY3REZWxheSl9LF9vbkJsdXJDYXB0dXJlOmZ1bmN0aW9uKHQpe3QudGFyZ2V0PT09dGhpcy5fcGVuZGluZ0FjdGl2YXRpb25JdGVtJiZ0aGlzLl9jYW5jZWxQZW5kaW5nQWN0aXZhdGlvbigpfSxnZXQgX3RhYkNvbnRhaW5lclNjcm9sbFNpemUoKXtyZXR1cm4gTWF0aC5tYXgoMCx0aGlzLiQudGFic0NvbnRhaW5lci5zY3JvbGxXaWR0aC10aGlzLiQudGFic0NvbnRhaW5lci5vZmZzZXRXaWR0aCl9LF9zY3JvbGw6ZnVuY3Rpb24odCxlKXt0aGlzLnNjcm9sbGFibGUmJnRoaXMuX2FmZmVjdFNjcm9sbChlJiYtZS5kZHh8fDApfSxfZG93bjpmdW5jdGlvbih0KXt0aGlzLmFzeW5jKChmdW5jdGlvbigpe3RoaXMuX2RlZmF1bHRGb2N1c0FzeW5jJiYodGhpcy5jYW5jZWxBc3luYyh0aGlzLl9kZWZhdWx0Rm9jdXNBc3luYyksdGhpcy5fZGVmYXVsdEZvY3VzQXN5bmM9bnVsbCl9KSwxKX0sX2FmZmVjdFNjcm9sbDpmdW5jdGlvbih0KXt0aGlzLiQudGFic0NvbnRhaW5lci5zY3JvbGxMZWZ0Kz10O3ZhciBlPXRoaXMuJC50YWJzQ29udGFpbmVyLnNjcm9sbExlZnQ7dGhpcy5fbGVmdEhpZGRlbj0wPT09ZSx0aGlzLl9yaWdodEhpZGRlbj1lPT09dGhpcy5fdGFiQ29udGFpbmVyU2Nyb2xsU2l6ZX0sX29uTGVmdFNjcm9sbEJ1dHRvbkRvd246ZnVuY3Rpb24oKXt0aGlzLl9zY3JvbGxUb0xlZnQoKSx0aGlzLl9ob2xkSm9iPXNldEludGVydmFsKHRoaXMuX3Njcm9sbFRvTGVmdC5iaW5kKHRoaXMpLHRoaXMuX2hvbGREZWxheSl9LF9vblJpZ2h0U2Nyb2xsQnV0dG9uRG93bjpmdW5jdGlvbigpe3RoaXMuX3Njcm9sbFRvUmlnaHQoKSx0aGlzLl9ob2xkSm9iPXNldEludGVydmFsKHRoaXMuX3Njcm9sbFRvUmlnaHQuYmluZCh0aGlzKSx0aGlzLl9ob2xkRGVsYXkpfSxfb25TY3JvbGxCdXR0b25VcDpmdW5jdGlvbigpe2NsZWFySW50ZXJ2YWwodGhpcy5faG9sZEpvYiksdGhpcy5faG9sZEpvYj1udWxsfSxfc2Nyb2xsVG9MZWZ0OmZ1bmN0aW9uKCl7dGhpcy5fYWZmZWN0U2Nyb2xsKC10aGlzLl9zdGVwKX0sX3Njcm9sbFRvUmlnaHQ6ZnVuY3Rpb24oKXt0aGlzLl9hZmZlY3RTY3JvbGwodGhpcy5fc3RlcCl9LF90YWJDaGFuZ2VkOmZ1bmN0aW9uKHQsZSl7aWYoIXQpcmV0dXJuIHRoaXMuJC5zZWxlY3Rpb25CYXIuY2xhc3NMaXN0LnJlbW92ZSgiZXhwYW5kIiksdGhpcy4kLnNlbGVjdGlvbkJhci5jbGFzc0xpc3QucmVtb3ZlKCJjb250cmFjdCIpLHZvaWQgdGhpcy5fcG9zaXRpb25CYXIoMCwwKTt2YXIgbj10aGlzLiQudGFic0NvbnRlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksaT1uLndpZHRoLHI9dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxvPXIubGVmdC1uLmxlZnQ7aWYodGhpcy5fcG9zPXt3aWR0aDp0aGlzLl9jYWxjUGVyY2VudChyLndpZHRoLGkpLGxlZnQ6dGhpcy5fY2FsY1BlcmNlbnQobyxpKX0sdGhpcy5ub1NsaWRlfHxudWxsPT1lKXJldHVybiB0aGlzLiQuc2VsZWN0aW9uQmFyLmNsYXNzTGlzdC5yZW1vdmUoImV4cGFuZCIpLHRoaXMuJC5zZWxlY3Rpb25CYXIuY2xhc3NMaXN0LnJlbW92ZSgiY29udHJhY3QiKSx2b2lkIHRoaXMuX3Bvc2l0aW9uQmFyKHRoaXMuX3Bvcy53aWR0aCx0aGlzLl9wb3MubGVmdCk7dmFyIGE9ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxzPXRoaXMuaXRlbXMuaW5kZXhPZihlKSxsPXRoaXMuaXRlbXMuaW5kZXhPZih0KTt0aGlzLiQuc2VsZWN0aW9uQmFyLmNsYXNzTGlzdC5hZGQoImV4cGFuZCIpO3ZhciBjPXM8bDt0aGlzLl9pc1JUTCYmKGM9IWMpLGM/dGhpcy5fcG9zaXRpb25CYXIodGhpcy5fY2FsY1BlcmNlbnQoci5sZWZ0K3Iud2lkdGgtYS5sZWZ0LGkpLTUsdGhpcy5fbGVmdCk6dGhpcy5fcG9zaXRpb25CYXIodGhpcy5fY2FsY1BlcmNlbnQoYS5sZWZ0K2Eud2lkdGgtci5sZWZ0LGkpLTUsdGhpcy5fY2FsY1BlcmNlbnQobyxpKSs1KSx0aGlzLnNjcm9sbGFibGUmJnRoaXMuX3Njcm9sbFRvU2VsZWN0ZWRJZk5lZWRlZChyLndpZHRoLG8pfSxfc2Nyb2xsVG9TZWxlY3RlZElmTmVlZGVkOmZ1bmN0aW9uKHQsZSl7dmFyIG49ZS10aGlzLiQudGFic0NvbnRhaW5lci5zY3JvbGxMZWZ0OyhuPDB8fChuKz10LXRoaXMuJC50YWJzQ29udGFpbmVyLm9mZnNldFdpZHRoKT4wKSYmKHRoaXMuJC50YWJzQ29udGFpbmVyLnNjcm9sbExlZnQrPW4pfSxfY2FsY1BlcmNlbnQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gMTAwKnQvZX0sX3Bvc2l0aW9uQmFyOmZ1bmN0aW9uKHQsZSl7ZT1lfHwwLHRoaXMuX3dpZHRoPXQ9dHx8MCx0aGlzLl9sZWZ0PWUsdGhpcy50cmFuc2Zvcm0oInRyYW5zbGF0ZVgoIitlKyIlKSBzY2FsZVgoIit0LzEwMCsiKSIsdGhpcy4kLnNlbGVjdGlvbkJhcil9LF9vbkJhclRyYW5zaXRpb25FbmQ6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy4kLnNlbGVjdGlvbkJhci5jbGFzc0xpc3Q7ZS5jb250YWlucygiZXhwYW5kIik/KGUucmVtb3ZlKCJleHBhbmQiKSxlLmFkZCgiY29udHJhY3QiKSx0aGlzLl9wb3NpdGlvbkJhcih0aGlzLl9wb3Mud2lkdGgsdGhpcy5fcG9zLmxlZnQpKTplLmNvbnRhaW5zKCJjb250cmFjdCIpJiZlLnJlbW92ZSgiY29udHJhY3QiKX19KTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCnZhciB3cz1udWxsO2pyKHtfdGVtcGxhdGU6eGVgCiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcGFwZXItdG9hc3QtYmFja2dyb3VuZC1jb2xvciwgIzMyMzIzMik7CiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLXRvYXN0LWNvbG9yLCAjZjFmMWYxKTsKICAgICAgICBtaW4taGVpZ2h0OiA0OHB4OwogICAgICAgIG1pbi13aWR0aDogMjg4cHg7CiAgICAgICAgcGFkZGluZzogMTZweCAyNHB4OwogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgICAgYm94LXNoYWRvdzogMCAycHggNXB4IDAgcmdiYSgwLCAwLCAwLCAwLjI2KTsKICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7CiAgICAgICAgbWFyZ2luOiAxMnB4OwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7CiAgICAgICAgLXdlYmtpdC10cmFuc2l0aW9uOiAtd2Via2l0LXRyYW5zZm9ybSAwLjNzLCBvcGFjaXR5IDAuM3M7CiAgICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuM3MsIG9wYWNpdHkgMC4zczsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMHB4KTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwcHgpOwogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY29tbW9uLWJhc2U7CiAgICAgIH0KCiAgICAgIDpob3N0KC5jYXBzdWxlKSB7CiAgICAgICAgYm9yZGVyLXJhZGl1czogMjRweDsKICAgICAgfQoKICAgICAgOmhvc3QoLmZpdC1ib3R0b20pIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBtaW4td2lkdGg6IDA7CiAgICAgICAgYm9yZGVyLXJhZGl1czogMDsKICAgICAgICBtYXJnaW46IDA7CiAgICAgIH0KCiAgICAgIDpob3N0KC5wYXBlci10b2FzdC1vcGVuKSB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwcHgpOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwcHgpOwogICAgICB9CiAgICA8L3N0eWxlPgoKICAgIDxzcGFuIGlkPSJsYWJlbCI+e3t0ZXh0fX08L3NwYW4+CiAgICA8c2xvdD48L3Nsb3Q+CmAsaXM6InBhcGVyLXRvYXN0IixiZWhhdmlvcnM6W1dhXSxwcm9wZXJ0aWVzOntmaXRJbnRvOnt0eXBlOk9iamVjdCx2YWx1ZTp3aW5kb3csb2JzZXJ2ZXI6Il9vbkZpdEludG9DaGFuZ2VkIn0saG9yaXpvbnRhbEFsaWduOnt0eXBlOlN0cmluZyx2YWx1ZToibGVmdCJ9LHZlcnRpY2FsQWxpZ246e3R5cGU6U3RyaW5nLHZhbHVlOiJib3R0b20ifSxkdXJhdGlvbjp7dHlwZTpOdW1iZXIsdmFsdWU6M2UzfSx0ZXh0Ont0eXBlOlN0cmluZyx2YWx1ZToiIn0sbm9DYW5jZWxPbk91dHNpZGVDbGljazp7dHlwZTpCb29sZWFuLHZhbHVlOiEwfSxub0F1dG9Gb2N1czp7dHlwZTpCb29sZWFuLHZhbHVlOiEwfX0sbGlzdGVuZXJzOnt0cmFuc2l0aW9uZW5kOiJfX29uVHJhbnNpdGlvbkVuZCJ9LGdldCB2aXNpYmxlKCl7cmV0dXJuIEVvLl93YXJuKCJgdmlzaWJsZWAgaXMgZGVwcmVjYXRlZCwgdXNlIGBvcGVuZWRgIGluc3RlYWQiKSx0aGlzLm9wZW5lZH0sZ2V0IF9jYW5BdXRvQ2xvc2UoKXtyZXR1cm4gdGhpcy5kdXJhdGlvbj4wJiZ0aGlzLmR1cmF0aW9uIT09MS8wfSxjcmVhdGVkOmZ1bmN0aW9uKCl7dGhpcy5fYXV0b0Nsb3NlPW51bGwsWWEucmVxdWVzdEF2YWlsYWJpbGl0eSgpfSxzaG93OmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSBpbiJzdHJpbmciPT10eXBlb2YgdCYmKHQ9e3RleHQ6dH0pLHQpMD09PWUuaW5kZXhPZigiXyIpP0VvLl93YXJuKCdUaGUgcHJvcGVydHkgIicrZSsnIiBpcyBwcml2YXRlIGFuZCB3YXMgbm90IHNldC4nKTplIGluIHRoaXM/dGhpc1tlXT10W2VdOkVvLl93YXJuKCdUaGUgcHJvcGVydHkgIicrZSsnIiBpcyBub3QgdmFsaWQuJyk7dGhpcy5vcGVuKCl9LGhpZGU6ZnVuY3Rpb24oKXt0aGlzLmNsb3NlKCl9LF9fb25UcmFuc2l0aW9uRW5kOmZ1bmN0aW9uKHQpe3QmJnQudGFyZ2V0PT09dGhpcyYmIm9wYWNpdHkiPT09dC5wcm9wZXJ0eU5hbWUmJih0aGlzLm9wZW5lZD90aGlzLl9maW5pc2hSZW5kZXJPcGVuZWQoKTp0aGlzLl9maW5pc2hSZW5kZXJDbG9zZWQoKSl9LF9vcGVuZWRDaGFuZ2VkOmZ1bmN0aW9uKCl7bnVsbCE9PXRoaXMuX2F1dG9DbG9zZSYmKHRoaXMuY2FuY2VsQXN5bmModGhpcy5fYXV0b0Nsb3NlKSx0aGlzLl9hdXRvQ2xvc2U9bnVsbCksdGhpcy5vcGVuZWQ/KHdzJiZ3cyE9PXRoaXMmJndzLmNsb3NlKCksd3M9dGhpcyx0aGlzLmZpcmUoImlyb24tYW5ub3VuY2UiLHt0ZXh0OnRoaXMudGV4dH0pLHRoaXMuX2NhbkF1dG9DbG9zZSYmKHRoaXMuX2F1dG9DbG9zZT10aGlzLmFzeW5jKHRoaXMuY2xvc2UsdGhpcy5kdXJhdGlvbikpKTp3cz09PXRoaXMmJih3cz1udWxsKSxqYS5fb3BlbmVkQ2hhbmdlZC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LF9yZW5kZXJPcGVuZWQ6ZnVuY3Rpb24oKXt0aGlzLmNsYXNzTGlzdC5hZGQoInBhcGVyLXRvYXN0LW9wZW4iKX0sX3JlbmRlckNsb3NlZDpmdW5jdGlvbigpe3RoaXMuY2xhc3NMaXN0LnJlbW92ZSgicGFwZXItdG9hc3Qtb3BlbiIpfSxfb25GaXRJbnRvQ2hhbmdlZDpmdW5jdGlvbih0KXt0aGlzLnBvc2l0aW9uVGFyZ2V0PXR9fSk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNvbnN0IFNzPXhlYAoKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtaG9yaXpvbnRhbDsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtY2VudGVyOwogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY29tbW9uLWJhc2U7CiAgICAgIH0KCiAgICAgIDpob3N0KFtkaXNhYmxlZF0pIHsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgfQoKICAgICAgOmhvc3QoOmZvY3VzKSB7CiAgICAgICAgb3V0bGluZTpub25lOwogICAgICB9CgogICAgICAudG9nZ2xlLWJhciB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgb3BhY2l0eTogMC40OwogICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgbGluZWFyIC4wOHM7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcGFwZXItdG9nZ2xlLWJ1dHRvbi11bmNoZWNrZWQtYmFyLWNvbG9yLCAjMDAwMDAwKTsKCiAgICAgICAgQGFwcGx5IC0tcGFwZXItdG9nZ2xlLWJ1dHRvbi11bmNoZWNrZWQtYmFyOwogICAgICB9CgogICAgICAudG9nZ2xlLWJ1dHRvbiB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogLTNweDsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIGhlaWdodDogMjBweDsKICAgICAgICB3aWR0aDogMjBweDsKICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgICAgYm94LXNoYWRvdzogMCAxcHggNXB4IDAgcmdiYSgwLCAwLCAwLCAwLjYpOwogICAgICAgIHRyYW5zaXRpb246IC13ZWJraXQtdHJhbnNmb3JtIGxpbmVhciAuMDhzLCBiYWNrZ3JvdW5kLWNvbG9yIGxpbmVhciAuMDhzOwogICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSBsaW5lYXIgLjA4cywgYmFja2dyb3VuZC1jb2xvciBsaW5lYXIgLjA4czsKICAgICAgICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtOwogICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXBhcGVyLXRvZ2dsZS1idXR0b24tdW5jaGVja2VkLWJ1dHRvbi1jb2xvciwgdmFyKC0tcGFwZXItZ3JleS01MCkpOwoKICAgICAgICBAYXBwbHkgLS1wYXBlci10b2dnbGUtYnV0dG9uLXVuY2hlY2tlZC1idXR0b247CiAgICAgIH0KCiAgICAgIC50b2dnbGUtYnV0dG9uLmRyYWdnaW5nIHsKICAgICAgICAtd2Via2l0LXRyYW5zaXRpb246IG5vbmU7CiAgICAgICAgdHJhbnNpdGlvbjogbm9uZTsKICAgICAgfQoKICAgICAgOmhvc3QoW2NoZWNrZWRdOm5vdChbZGlzYWJsZWRdKSkgLnRvZ2dsZS1iYXIgewogICAgICAgIG9wYWNpdHk6IDAuNTsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wYXBlci10b2dnbGUtYnV0dG9uLWNoZWNrZWQtYmFyLWNvbG9yLCB2YXIoLS1wcmltYXJ5LWNvbG9yKSk7CgogICAgICAgIEBhcHBseSAtLXBhcGVyLXRvZ2dsZS1idXR0b24tY2hlY2tlZC1iYXI7CiAgICAgIH0KCiAgICAgIDpob3N0KFtkaXNhYmxlZF0pIC50b2dnbGUtYmFyIHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwOwogICAgICAgIG9wYWNpdHk6IDAuMTI7CiAgICAgIH0KCiAgICAgIDpob3N0KFtjaGVja2VkXSkgLnRvZ2dsZS1idXR0b24gewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMTZweCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMTZweCwgMCk7CiAgICAgIH0KCiAgICAgIDpob3N0KFtjaGVja2VkXTpub3QoW2Rpc2FibGVkXSkpIC50b2dnbGUtYnV0dG9uIHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wYXBlci10b2dnbGUtYnV0dG9uLWNoZWNrZWQtYnV0dG9uLWNvbG9yLCB2YXIoLS1wcmltYXJ5LWNvbG9yKSk7CgogICAgICAgIEBhcHBseSAtLXBhcGVyLXRvZ2dsZS1idXR0b24tY2hlY2tlZC1idXR0b247CiAgICAgIH0KCiAgICAgIDpob3N0KFtkaXNhYmxlZF0pIC50b2dnbGUtYnV0dG9uIHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYmRiZGJkOwogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgIH0KCiAgICAgIC50b2dnbGUtaW5rIHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgdG9wOiAtMTRweDsKICAgICAgICBsZWZ0OiAtMTRweDsKICAgICAgICByaWdodDogYXV0bzsKICAgICAgICBib3R0b206IGF1dG87CiAgICAgICAgd2lkdGg6IDQ4cHg7CiAgICAgICAgaGVpZ2h0OiA0OHB4OwogICAgICAgIG9wYWNpdHk6IDAuNTsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItdG9nZ2xlLWJ1dHRvbi11bmNoZWNrZWQtaW5rLWNvbG9yLCB2YXIoLS1wcmltYXJ5LXRleHQtY29sb3IpKTsKCiAgICAgICAgQGFwcGx5IC0tcGFwZXItdG9nZ2xlLWJ1dHRvbi11bmNoZWNrZWQtaW5rOwogICAgICB9CgogICAgICA6aG9zdChbY2hlY2tlZF0pIC50b2dnbGUtaW5rIHsKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItdG9nZ2xlLWJ1dHRvbi1jaGVja2VkLWluay1jb2xvciwgdmFyKC0tcHJpbWFyeS1jb2xvcikpOwoKICAgICAgICBAYXBwbHkgLS1wYXBlci10b2dnbGUtYnV0dG9uLWNoZWNrZWQtaW5rOwogICAgICB9CgogICAgICAudG9nZ2xlLWNvbnRhaW5lciB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICB3aWR0aDogMzZweDsKICAgICAgICBoZWlnaHQ6IDE0cHg7CiAgICAgICAgLyogVGhlIHRvZ2dsZSBidXR0b24gaGFzIGFuIGFic29sdXRlIHBvc2l0aW9uIG9mIC0zcHg7IFRoZSBleHRyYSAxcHgKICAgICAgICAvKiBhY2NvdW50cyBmb3IgdGhlIHRvZ2dsZSBidXR0b24gc2hhZG93IGJveC4gKi8KICAgICAgICBtYXJnaW46IDRweCAxcHg7CiAgICAgIH0KCiAgICAgIC50b2dnbGUtbGFiZWwgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICAgICAgICBwYWRkaW5nLWxlZnQ6IHZhcigtLXBhcGVyLXRvZ2dsZS1idXR0b24tbGFiZWwtc3BhY2luZywgOHB4KTsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItdG9nZ2xlLWJ1dHRvbi1sYWJlbC1jb2xvciwgdmFyKC0tcHJpbWFyeS10ZXh0LWNvbG9yKSk7CiAgICAgIH0KCiAgICAgIC8qIGludmFsaWQgc3RhdGUgKi8KICAgICAgOmhvc3QoW2ludmFsaWRdKSAudG9nZ2xlLWJhciB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcGFwZXItdG9nZ2xlLWJ1dHRvbi1pbnZhbGlkLWJhci1jb2xvciwgdmFyKC0tZXJyb3ItY29sb3IpKTsKICAgICAgfQoKICAgICAgOmhvc3QoW2ludmFsaWRdKSAudG9nZ2xlLWJ1dHRvbiB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcGFwZXItdG9nZ2xlLWJ1dHRvbi1pbnZhbGlkLWJ1dHRvbi1jb2xvciwgdmFyKC0tZXJyb3ItY29sb3IpKTsKICAgICAgfQoKICAgICAgOmhvc3QoW2ludmFsaWRdKSAudG9nZ2xlLWluayB7CiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLXRvZ2dsZS1idXR0b24taW52YWxpZC1pbmstY29sb3IsIHZhcigtLWVycm9yLWNvbG9yKSk7CiAgICAgIH0KICAgIDwvc3R5bGU+CgogICAgPGRpdiBjbGFzcz0idG9nZ2xlLWNvbnRhaW5lciI+CiAgICAgIDxkaXYgaWQ9InRvZ2dsZUJhciIgY2xhc3M9InRvZ2dsZS1iYXIiPjwvZGl2PgogICAgICA8ZGl2IGlkPSJ0b2dnbGVCdXR0b24iIGNsYXNzPSJ0b2dnbGUtYnV0dG9uIj48L2Rpdj4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9InRvZ2dsZS1sYWJlbCI+PHNsb3Q+PC9zbG90PjwvZGl2PgoKICBgO1NzLnNldEF0dHJpYnV0ZSgic3RyaXAtd2hpdGVzcGFjZSIsIiIpLGpyKHtfdGVtcGxhdGU6U3MsaXM6InBhcGVyLXRvZ2dsZS1idXR0b24iLGJlaGF2aW9yczpbd2FdLGhvc3RBdHRyaWJ1dGVzOntyb2xlOiJidXR0b24iLCJhcmlhLXByZXNzZWQiOiJmYWxzZSIsdGFiaW5kZXg6MH0scHJvcGVydGllczp7fSxsaXN0ZW5lcnM6e3RyYWNrOiJfb250cmFjayJ9LGF0dGFjaGVkOmZ1bmN0aW9uKCl7RGkodGhpcywoZnVuY3Rpb24oKXtkaSh0aGlzLCJwYW4teSIpfSkpfSxfb250cmFjazpmdW5jdGlvbih0KXt2YXIgZT10LmRldGFpbDsic3RhcnQiPT09ZS5zdGF0ZT90aGlzLl90cmFja1N0YXJ0KGUpOiJ0cmFjayI9PT1lLnN0YXRlP3RoaXMuX3RyYWNrTW92ZShlKToiZW5kIj09PWUuc3RhdGUmJnRoaXMuX3RyYWNrRW5kKGUpfSxfdHJhY2tTdGFydDpmdW5jdGlvbih0KXt0aGlzLl93aWR0aD10aGlzLiQudG9nZ2xlQmFyLm9mZnNldFdpZHRoLzIsdGhpcy5fdHJhY2tDaGVja2VkPXRoaXMuY2hlY2tlZCx0aGlzLiQudG9nZ2xlQnV0dG9uLmNsYXNzTGlzdC5hZGQoImRyYWdnaW5nIil9LF90cmFja01vdmU6ZnVuY3Rpb24odCl7dmFyIGU9dC5keDt0aGlzLl94PU1hdGgubWluKHRoaXMuX3dpZHRoLE1hdGgubWF4KDAsdGhpcy5fdHJhY2tDaGVja2VkP3RoaXMuX3dpZHRoK2U6ZSkpLHRoaXMudHJhbnNsYXRlM2QodGhpcy5feCsicHgiLDAsMCx0aGlzLiQudG9nZ2xlQnV0dG9uKSx0aGlzLl91c2VyQWN0aXZhdGUodGhpcy5feD50aGlzLl93aWR0aC8yKX0sX3RyYWNrRW5kOmZ1bmN0aW9uKHQpe3RoaXMuJC50b2dnbGVCdXR0b24uY2xhc3NMaXN0LnJlbW92ZSgiZHJhZ2dpbmciKSx0aGlzLnRyYW5zZm9ybSgiIix0aGlzLiQudG9nZ2xlQnV0dG9uKX0sX2NyZWF0ZVJpcHBsZTpmdW5jdGlvbigpe3RoaXMuX3JpcHBsZUNvbnRhaW5lcj10aGlzLiQudG9nZ2xlQnV0dG9uO3ZhciB0PXVhLl9jcmVhdGVSaXBwbGUoKTtyZXR1cm4gdC5pZD0iaW5rIix0LnNldEF0dHJpYnV0ZSgicmVjZW50ZXJzIiwiIiksdC5jbGFzc0xpc3QuYWRkKCJjaXJjbGUiLCJ0b2dnbGUtaW5rIiksdH19KSwKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmpyKHtfdGVtcGxhdGU6eGVgCiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICAtLWNhbGN1bGF0ZWQtcGFwZXItdG9vbGJhci1oZWlnaHQ6IHZhcigtLXBhcGVyLXRvb2xiYXItaGVpZ2h0LCA2NHB4KTsKICAgICAgICAtLWNhbGN1bGF0ZWQtcGFwZXItdG9vbGJhci1zbS1oZWlnaHQ6IHZhcigtLXBhcGVyLXRvb2xiYXItc20taGVpZ2h0LCA1NnB4KTsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgICAtbW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgICAgaGVpZ2h0OiB2YXIoLS1jYWxjdWxhdGVkLXBhcGVyLXRvb2xiYXItaGVpZ2h0KTsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1wYXBlci10b29sYmFyLWJhY2tncm91bmQsIHZhcigtLXByaW1hcnktY29sb3IpKTsKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItdG9vbGJhci1jb2xvciwgdmFyKC0tZGFyay10aGVtZS10ZXh0LWNvbG9yKSk7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItdG9vbGJhcjsKICAgICAgfQoKICAgICAgOmhvc3QoLmFuaW1hdGUpIHsKICAgICAgICB0cmFuc2l0aW9uOiB2YXIoLS1wYXBlci10b29sYmFyLXRyYW5zaXRpb24sIGhlaWdodCAwLjE4cyBlYXNlLWluKTsKICAgICAgfQoKICAgICAgOmhvc3QoLm1lZGl1bS10YWxsKSB7CiAgICAgICAgaGVpZ2h0OiBjYWxjKHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItdG9vbGJhci1oZWlnaHQpICogMik7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItdG9vbGJhci1tZWRpdW07CiAgICAgIH0KCiAgICAgIDpob3N0KC50YWxsKSB7CiAgICAgICAgaGVpZ2h0OiBjYWxjKHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItdG9vbGJhci1oZWlnaHQpICogMyk7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItdG9vbGJhci10YWxsOwogICAgICB9CgogICAgICAudG9vbGJhci10b29scyB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIGhlaWdodDogdmFyKC0tY2FsY3VsYXRlZC1wYXBlci10b29sYmFyLWhlaWdodCk7CiAgICAgICAgcGFkZGluZzogMCAxNnB4OwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICAgIEBhcHBseSAtLWxheW91dC1ob3Jpem9udGFsOwogICAgICAgIEBhcHBseSAtLWxheW91dC1jZW50ZXI7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItdG9vbGJhci1jb250ZW50OwogICAgICB9CgogICAgICAvKgogICAgICAgKiBUT0RPOiBXaGVyZSBzaG91bGQgbWVkaWEgcXVlcnkgYnJlYWtwb2ludHMgbGl2ZSBzbyB0aGV5IGNhbiBiZSBzaGFyZWQgYmV0d2VlbiBlbGVtZW50cz8KICAgICAgICovCgogICAgICBAbWVkaWEgKG1heC13aWR0aDogNjAwcHgpIHsKICAgICAgICA6aG9zdCB7CiAgICAgICAgICBoZWlnaHQ6IHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItdG9vbGJhci1zbS1oZWlnaHQpOwogICAgICAgIH0KCiAgICAgICAgOmhvc3QoLm1lZGl1bS10YWxsKSB7CiAgICAgICAgICBoZWlnaHQ6IGNhbGModmFyKC0tY2FsY3VsYXRlZC1wYXBlci10b29sYmFyLXNtLWhlaWdodCkgKiAyKTsKICAgICAgICB9CgogICAgICAgIDpob3N0KC50YWxsKSB7CiAgICAgICAgICBoZWlnaHQ6IGNhbGModmFyKC0tY2FsY3VsYXRlZC1wYXBlci10b29sYmFyLXNtLWhlaWdodCkgKiAzKTsKICAgICAgICB9CgogICAgICAgIC50b29sYmFyLXRvb2xzIHsKICAgICAgICAgIGhlaWdodDogdmFyKC0tY2FsY3VsYXRlZC1wYXBlci10b29sYmFyLXNtLWhlaWdodCk7CiAgICAgICAgfQogICAgICB9CgogICAgICAjdG9wQmFyIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgIH0KCiAgICAgIC8qIG1pZGRsZSBiYXIgKi8KICAgICAgI21pZGRsZUJhciB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogMDsKICAgICAgICByaWdodDogMDsKICAgICAgICBsZWZ0OiAwOwogICAgICB9CgogICAgICA6aG9zdCgudGFsbCkgI21pZGRsZUJhciwKICAgICAgOmhvc3QoLm1lZGl1bS10YWxsKSAjbWlkZGxlQmFyIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7CiAgICAgIH0KCiAgICAgIC8qIGJvdHRvbSBiYXIgKi8KICAgICAgI2JvdHRvbUJhciB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHJpZ2h0OiAwOwogICAgICAgIGJvdHRvbTogMDsKICAgICAgICBsZWZ0OiAwOwogICAgICB9CgogICAgICAvKgogICAgICAgKiBtYWtlIGVsZW1lbnRzIChlLmcuIGJ1dHRvbnMpIHJlc3BvbmQgdG8gbW91c2UvdG91Y2ggZXZlbnRzCiAgICAgICAqCiAgICAgICAqIFxgLnRvb2xiYXItdG9vbHNcYCBkaXNhYmxlcyB0b3VjaCBldmVudHMgc28gbXVsdGlwbGUgdG9vbGJhcnMgY2FuIHN0YWNrIGFuZCBub3QKICAgICAgICogYWJzb3JiIGV2ZW50cy4gQWxsIGNoaWxkcmVuIG11c3QgaGF2ZSBwb2ludGVyIGV2ZW50cyByZS1lbmFibGVkIHRvIHdvcmsgYXMKICAgICAgICogZXhwZWN0ZWQuCiAgICAgICAqLwogICAgICAudG9vbGJhci10b29scyA+IDo6c2xvdHRlZCgqOm5vdChbZGlzYWJsZWRdKSkgewogICAgICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvOwogICAgICB9CgogICAgICAudG9vbGJhci10b29scyA+IDo6c2xvdHRlZCgudGl0bGUpIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LWNvbW1vbi1iYXNlOwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICAgICAgICBmb250LXNpemU6IDIwcHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgICAgICBsaW5lLWhlaWdodDogMTsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtZmxleDsKICAgICAgfQoKICAgICAgLnRvb2xiYXItdG9vbHMgPiA6OnNsb3R0ZWQoLnRpdGxlKSB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDU2cHg7CiAgICAgIH0KCiAgICAgIC50b29sYmFyLXRvb2xzID4gOjpzbG90dGVkKHBhcGVyLWljb24tYnV0dG9uICsgLnRpdGxlKSB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDA7CiAgICAgIH0KCiAgICAgIC8qKgogICAgICAgKiBUaGUgLS1wYXBlci10b29sYmFyLXRpdGxlIG1peGluIGlzIGFwcGxpZWQgaGVyZSBpbnN0ZWFkIG9mIGFib3ZlIHRvCiAgICAgICAqIGZpeCB0aGUgaXNzdWUgd2l0aCBtYXJnaW4tbGVmdCBiZWluZyBpZ25vcmVkIGR1ZSB0byBjc3Mgb3JkZXJpbmcuCiAgICAgICAqLwogICAgICAudG9vbGJhci10b29scyA+IDo6c2xvdHRlZCgudGl0bGUpIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci10b29sYmFyLXRpdGxlOwogICAgICB9CgogICAgICAudG9vbGJhci10b29scyA+IDo6c2xvdHRlZChwYXBlci1pY29uLWJ1dHRvbltpY29uPW1lbnVdKSB7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAyNHB4OwogICAgICB9CgogICAgICAudG9vbGJhci10b29scyA+IDo6c2xvdHRlZCguZml0KSB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogYXV0bzsKICAgICAgICByaWdodDogMDsKICAgICAgICBib3R0b206IDA7CiAgICAgICAgbGVmdDogMDsKICAgICAgICB3aWR0aDogYXV0bzsKICAgICAgICBtYXJnaW46IDA7CiAgICAgIH0KCiAgICAgIC8qIFRPRE8obm9tcyk6IFVudGlsIHdlIGhhdmUgYSBiZXR0ZXIgc29sdXRpb24gZm9yIGNsYXNzZXMgdGhhdCBkb24ndCB1c2UKICAgICAgICogL2RlZXAvIGNyZWF0ZSBvdXIgb3duLgogICAgICAgKi8KICAgICAgLnN0YXJ0LWp1c3RpZmllZCB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LXN0YXJ0LWp1c3RpZmllZDsKICAgICAgfQoKICAgICAgLmNlbnRlci1qdXN0aWZpZWQgewogICAgICAgIEBhcHBseSAtLWxheW91dC1jZW50ZXItanVzdGlmaWVkOwogICAgICB9CgogICAgICAuZW5kLWp1c3RpZmllZCB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWVuZC1qdXN0aWZpZWQ7CiAgICAgIH0KCiAgICAgIC5hcm91bmQtanVzdGlmaWVkIHsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtYXJvdW5kLWp1c3RpZmllZDsKICAgICAgfQoKICAgICAgLmp1c3RpZmllZCB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWp1c3RpZmllZDsKICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8ZGl2IGlkPSJ0b3BCYXIiIGNsYXNzXCQ9InRvb2xiYXItdG9vbHMgW1tfY29tcHV0ZUJhckV4dHJhQ2xhc3NlcyhqdXN0aWZ5KV1dIj4KICAgICAgPHNsb3QgbmFtZT0idG9wIj48L3Nsb3Q+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGlkPSJtaWRkbGVCYXIiIGNsYXNzXCQ9InRvb2xiYXItdG9vbHMgW1tfY29tcHV0ZUJhckV4dHJhQ2xhc3NlcyhtaWRkbGVKdXN0aWZ5KV1dIj4KICAgICAgPHNsb3QgbmFtZT0ibWlkZGxlIj48L3Nsb3Q+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGlkPSJib3R0b21CYXIiIGNsYXNzXCQ9InRvb2xiYXItdG9vbHMgW1tfY29tcHV0ZUJhckV4dHJhQ2xhc3Nlcyhib3R0b21KdXN0aWZ5KV1dIj4KICAgICAgPHNsb3QgbmFtZT0iYm90dG9tIj48L3Nsb3Q+CiAgICA8L2Rpdj4KYCxpczoicGFwZXItdG9vbGJhciIsaG9zdEF0dHJpYnV0ZXM6e3JvbGU6InRvb2xiYXIifSxwcm9wZXJ0aWVzOntib3R0b21KdXN0aWZ5Ont0eXBlOlN0cmluZyx2YWx1ZToiIn0sanVzdGlmeTp7dHlwZTpTdHJpbmcsdmFsdWU6IiJ9LG1pZGRsZUp1c3RpZnk6e3R5cGU6U3RyaW5nLHZhbHVlOiIifX0scmVhZHk6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4odGhpcy5pcywiaXMgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSBhcHAtbGF5b3V0IGluc3RlYWQhIil9LGF0dGFjaGVkOmZ1bmN0aW9uKCl7dGhpcy5fb2JzZXJ2ZXI9dGhpcy5fb2JzZXJ2ZSh0aGlzKSx0aGlzLl91cGRhdGVBcmlhTGFiZWxsZWRCeSgpfSxkZXRhY2hlZDpmdW5jdGlvbigpe3RoaXMuX29ic2VydmVyJiZ0aGlzLl9vYnNlcnZlci5kaXNjb25uZWN0KCl9LF9vYnNlcnZlOmZ1bmN0aW9uKHQpe3ZhciBlPW5ldyBNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKCl7dGhpcy5fdXBkYXRlQXJpYUxhYmVsbGVkQnkoKX0uYmluZCh0aGlzKSk7cmV0dXJuIGUub2JzZXJ2ZSh0LHtjaGlsZExpc3Q6ITAsc3VidHJlZTohMH0pLGV9LF91cGRhdGVBcmlhTGFiZWxsZWRCeTpmdW5jdGlvbigpe1dpKCk7Zm9yKHZhciB0LGU9W10sbj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChlcih0aGlzLnJvb3QpLnF1ZXJ5U2VsZWN0b3JBbGwoInNsb3QiKSkuY29uY2F0KEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGVyKHRoaXMucm9vdCkucXVlcnlTZWxlY3RvckFsbCgiY29udGVudCIpKSksaT0wO3Q9bltpXTtpKyspZm9yKHZhciByLG89ZXIodCkuZ2V0RGlzdHJpYnV0ZWROb2RlcygpLGE9MDtyPW9bYV07YSsrKWlmKHIuY2xhc3NMaXN0JiZyLmNsYXNzTGlzdC5jb250YWlucygidGl0bGUiKSlpZihyLmlkKWUucHVzaChyLmlkKTtlbHNle3ZhciBzPSJwYXBlci10b29sYmFyLWxhYmVsLSIrTWF0aC5mbG9vcigxZTQqTWF0aC5yYW5kb20oKSk7ci5pZD1zLGUucHVzaChzKX1lLmxlbmd0aD4wJiZ0aGlzLnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbGxlZGJ5IixlLmpvaW4oIiAiKSl9LF9jb21wdXRlQmFyRXh0cmFDbGFzc2VzOmZ1bmN0aW9uKHQpe3JldHVybiB0P3QrKCJqdXN0aWZpZWQiPT09dD8iIjoiLWp1c3RpZmllZCIpOiIifX0pLAovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KanIoe190ZW1wbGF0ZTp4ZWAKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICBvdXRsaW5lOiBub25lOwogICAgICAgIHotaW5kZXg6IDEwMDI7CiAgICAgICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7CiAgICAgIH0KCiAgICAgICN0b29sdGlwIHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBvdXRsaW5lOiBub25lOwogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY29tbW9uLWJhc2U7CiAgICAgICAgZm9udC1zaXplOiAxMHB4OwogICAgICAgIGxpbmUtaGVpZ2h0OiAxOwogICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXBhcGVyLXRvb2x0aXAtYmFja2dyb3VuZCwgIzYxNjE2MSk7CiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLXRvb2x0aXAtdGV4dC1jb2xvciwgd2hpdGUpOwogICAgICAgIHBhZGRpbmc6IDhweDsKICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItdG9vbHRpcDsKICAgICAgfQoKICAgICAgQGtleWZyYW1lcyBrZXlGcmFtZVNjYWxlVXAgewogICAgICAgIDAlIHsKICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC4wKTsKICAgICAgICB9CiAgICAgICAgMTAwJSB7CiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMCk7CiAgICAgICAgfQogICAgICB9CgogICAgICBAa2V5ZnJhbWVzIGtleUZyYW1lU2NhbGVEb3duIHsKICAgICAgICAwJSB7CiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMCk7CiAgICAgICAgfQogICAgICAgIDEwMCUgewogICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwLjApOwogICAgICAgIH0KICAgICAgfQoKICAgICAgQGtleWZyYW1lcyBrZXlGcmFtZUZhZGVJbk9wYWNpdHkgewogICAgICAgIDAlIHsKICAgICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgfQogICAgICAgIDEwMCUgewogICAgICAgICAgb3BhY2l0eTogdmFyKC0tcGFwZXItdG9vbHRpcC1vcGFjaXR5LCAwLjkpOwogICAgICAgIH0KICAgICAgfQoKICAgICAgQGtleWZyYW1lcyBrZXlGcmFtZUZhZGVPdXRPcGFjaXR5IHsKICAgICAgICAwJSB7CiAgICAgICAgICBvcGFjaXR5OiB2YXIoLS1wYXBlci10b29sdGlwLW9wYWNpdHksIDAuOSk7CiAgICAgICAgfQogICAgICAgIDEwMCUgewogICAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIEBrZXlmcmFtZXMga2V5RnJhbWVTbGlkZURvd25JbiB7CiAgICAgICAgMCUgewogICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0yMDAwcHgpOwogICAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICB9CiAgICAgICAgMTAlIHsKICAgICAgICAgIG9wYWNpdHk6IDAuMjsKICAgICAgICB9CiAgICAgICAgMTAwJSB7CiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgICAgICAgICBvcGFjaXR5OiB2YXIoLS1wYXBlci10b29sdGlwLW9wYWNpdHksIDAuOSk7CiAgICAgICAgfQogICAgICB9CgogICAgICBAa2V5ZnJhbWVzIGtleUZyYW1lU2xpZGVEb3duT3V0IHsKICAgICAgICAwJSB7CiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgICAgICAgICBvcGFjaXR5OiB2YXIoLS1wYXBlci10b29sdGlwLW9wYWNpdHksIDAuOSk7CiAgICAgICAgfQogICAgICAgIDEwJSB7CiAgICAgICAgICBvcGFjaXR5OiAwLjI7CiAgICAgICAgfQogICAgICAgIDEwMCUgewogICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0yMDAwcHgpOwogICAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIC5mYWRlLWluLWFuaW1hdGlvbiB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICBhbmltYXRpb24tZGVsYXk6IHZhcigtLXBhcGVyLXRvb2x0aXAtZGVsYXktaW4sIDUwMG1zKTsKICAgICAgICBhbmltYXRpb24tbmFtZToga2V5RnJhbWVGYWRlSW5PcGFjaXR5OwogICAgICAgIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IDE7CiAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1pbjsKICAgICAgICBhbmltYXRpb24tZHVyYXRpb246IHZhcigtLXBhcGVyLXRvb2x0aXAtZHVyYXRpb24taW4sIDUwMG1zKTsKICAgICAgICBhbmltYXRpb24tZmlsbC1tb2RlOiBmb3J3YXJkczsKICAgICAgICBAYXBwbHkgLS1wYXBlci10b29sdGlwLWFuaW1hdGlvbjsKICAgICAgfQoKICAgICAgLmZhZGUtb3V0LWFuaW1hdGlvbiB7CiAgICAgICAgb3BhY2l0eTogdmFyKC0tcGFwZXItdG9vbHRpcC1vcGFjaXR5LCAwLjkpOwogICAgICAgIGFuaW1hdGlvbi1kZWxheTogdmFyKC0tcGFwZXItdG9vbHRpcC1kZWxheS1vdXQsIDBtcyk7CiAgICAgICAgYW5pbWF0aW9uLW5hbWU6IGtleUZyYW1lRmFkZU91dE9wYWNpdHk7CiAgICAgICAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogMTsKICAgICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLWluOwogICAgICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogdmFyKC0tcGFwZXItdG9vbHRpcC1kdXJhdGlvbi1vdXQsIDUwMG1zKTsKICAgICAgICBhbmltYXRpb24tZmlsbC1tb2RlOiBmb3J3YXJkczsKICAgICAgICBAYXBwbHkgLS1wYXBlci10b29sdGlwLWFuaW1hdGlvbjsKICAgICAgfQoKICAgICAgLnNjYWxlLXVwLWFuaW1hdGlvbiB7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwKTsKICAgICAgICBvcGFjaXR5OiB2YXIoLS1wYXBlci10b29sdGlwLW9wYWNpdHksIDAuOSk7CiAgICAgICAgYW5pbWF0aW9uLWRlbGF5OiB2YXIoLS1wYXBlci10b29sdGlwLWRlbGF5LWluLCA1MDBtcyk7CiAgICAgICAgYW5pbWF0aW9uLW5hbWU6IGtleUZyYW1lU2NhbGVVcDsKICAgICAgICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiAxOwogICAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2UtaW47CiAgICAgICAgYW5pbWF0aW9uLWR1cmF0aW9uOiB2YXIoLS1wYXBlci10b29sdGlwLWR1cmF0aW9uLWluLCA1MDBtcyk7CiAgICAgICAgYW5pbWF0aW9uLWZpbGwtbW9kZTogZm9yd2FyZHM7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItdG9vbHRpcC1hbmltYXRpb247CiAgICAgIH0KCiAgICAgIC5zY2FsZS1kb3duLWFuaW1hdGlvbiB7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgICAgICBvcGFjaXR5OiB2YXIoLS1wYXBlci10b29sdGlwLW9wYWNpdHksIDAuOSk7CiAgICAgICAgYW5pbWF0aW9uLWRlbGF5OiB2YXIoLS1wYXBlci10b29sdGlwLWRlbGF5LW91dCwgNTAwbXMpOwogICAgICAgIGFuaW1hdGlvbi1uYW1lOiBrZXlGcmFtZVNjYWxlRG93bjsKICAgICAgICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiAxOwogICAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2UtaW47CiAgICAgICAgYW5pbWF0aW9uLWR1cmF0aW9uOiB2YXIoLS1wYXBlci10b29sdGlwLWR1cmF0aW9uLW91dCwgNTAwbXMpOwogICAgICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGZvcndhcmRzOwogICAgICAgIEBhcHBseSAtLXBhcGVyLXRvb2x0aXAtYW5pbWF0aW9uOwogICAgICB9CgogICAgICAuc2xpZGUtZG93bi1hbmltYXRpb24gewogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMjAwMHB4KTsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIGFuaW1hdGlvbi1kZWxheTogdmFyKC0tcGFwZXItdG9vbHRpcC1kZWxheS1vdXQsIDUwMG1zKTsKICAgICAgICBhbmltYXRpb24tbmFtZToga2V5RnJhbWVTbGlkZURvd25JbjsKICAgICAgICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiAxOwogICAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjAsIDAuMCwgMC4yLCAxKTsKICAgICAgICBhbmltYXRpb24tZHVyYXRpb246IHZhcigtLXBhcGVyLXRvb2x0aXAtZHVyYXRpb24tb3V0LCA1MDBtcyk7CiAgICAgICAgYW5pbWF0aW9uLWZpbGwtbW9kZTogZm9yd2FyZHM7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItdG9vbHRpcC1hbmltYXRpb247CiAgICAgIH0KCiAgICAgIC5zbGlkZS1kb3duLWFuaW1hdGlvbi1vdXQgewogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgICAgICBvcGFjaXR5OiB2YXIoLS1wYXBlci10b29sdGlwLW9wYWNpdHksIDAuOSk7CiAgICAgICAgYW5pbWF0aW9uLWRlbGF5OiB2YXIoLS1wYXBlci10b29sdGlwLWRlbGF5LW91dCwgNTAwbXMpOwogICAgICAgIGFuaW1hdGlvbi1uYW1lOiBrZXlGcmFtZVNsaWRlRG93bk91dDsKICAgICAgICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiAxOwogICAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjQsIDAuMCwgMSwgMSk7CiAgICAgICAgYW5pbWF0aW9uLWR1cmF0aW9uOiB2YXIoLS1wYXBlci10b29sdGlwLWR1cmF0aW9uLW91dCwgNTAwbXMpOwogICAgICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGZvcndhcmRzOwogICAgICAgIEBhcHBseSAtLXBhcGVyLXRvb2x0aXAtYW5pbWF0aW9uOwogICAgICB9CgogICAgICAuY2FuY2VsLWFuaW1hdGlvbiB7CiAgICAgICAgYW5pbWF0aW9uLWRlbGF5OiAtMzBzICFpbXBvcnRhbnQ7CiAgICAgIH0KCiAgICAgIC8qIFRoYW5rcyBJRSAxMC4gKi8KCiAgICAgIC5oaWRkZW4gewogICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8ZGl2IGlkPSJ0b29sdGlwIiBjbGFzcz0iaGlkZGVuIj4KICAgICAgPHNsb3Q+PC9zbG90PgogICAgPC9kaXY+CmAsaXM6InBhcGVyLXRvb2x0aXAiLGhvc3RBdHRyaWJ1dGVzOntyb2xlOiJ0b29sdGlwIix0YWJpbmRleDotMX0scHJvcGVydGllczp7Zm9yOnt0eXBlOlN0cmluZyxvYnNlcnZlcjoiX2ZpbmRUYXJnZXQifSxtYW51YWxNb2RlOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITEsb2JzZXJ2ZXI6Il9tYW51YWxNb2RlQ2hhbmdlZCJ9LHBvc2l0aW9uOnt0eXBlOlN0cmluZyx2YWx1ZToiYm90dG9tIn0sZml0VG9WaXNpYmxlQm91bmRzOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LG9mZnNldDp7dHlwZTpOdW1iZXIsdmFsdWU6MTR9LG1hcmdpblRvcDp7dHlwZTpOdW1iZXIsdmFsdWU6MTR9LGFuaW1hdGlvbkRlbGF5Ont0eXBlOk51bWJlcix2YWx1ZTo1MDAsb2JzZXJ2ZXI6Il9kZWxheUNoYW5nZSJ9LGFuaW1hdGlvbkVudHJ5Ont0eXBlOlN0cmluZyx2YWx1ZToiIn0sYW5pbWF0aW9uRXhpdDp7dHlwZTpTdHJpbmcsdmFsdWU6IiJ9LGFuaW1hdGlvbkNvbmZpZzp7dHlwZTpPYmplY3QsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57ZW50cnk6W3tuYW1lOiJmYWRlLWluLWFuaW1hdGlvbiIsbm9kZTp0aGlzLHRpbWluZzp7ZGVsYXk6MH19XSxleGl0Olt7bmFtZToiZmFkZS1vdXQtYW5pbWF0aW9uIixub2RlOnRoaXN9XX19fSxfc2hvd2luZzp7dHlwZTpCb29sZWFuLHZhbHVlOiExfX0sbGlzdGVuZXJzOnt3ZWJraXRBbmltYXRpb25FbmQ6Il9vbkFuaW1hdGlvbkVuZCJ9LGdldCB0YXJnZXQoKXt2YXIgdD1lcih0aGlzKS5wYXJlbnROb2RlLGU9ZXIodGhpcykuZ2V0T3duZXJSb290KCk7cmV0dXJuIHRoaXMuZm9yP2VyKGUpLnF1ZXJ5U2VsZWN0b3IoIiMiK3RoaXMuZm9yKTp0Lm5vZGVUeXBlPT1Ob2RlLkRPQ1VNRU5UX0ZSQUdNRU5UX05PREU/ZS5ob3N0OnR9LGF0dGFjaGVkOmZ1bmN0aW9uKCl7dGhpcy5fZmluZFRhcmdldCgpfSxkZXRhY2hlZDpmdW5jdGlvbigpe3RoaXMubWFudWFsTW9kZXx8dGhpcy5fcmVtb3ZlTGlzdGVuZXJzKCl9LHBsYXlBbmltYXRpb246ZnVuY3Rpb24odCl7ImVudHJ5Ij09PXQ/dGhpcy5zaG93KCk6ImV4aXQiPT09dCYmdGhpcy5oaWRlKCl9LGNhbmNlbEFuaW1hdGlvbjpmdW5jdGlvbigpe3RoaXMuJC50b29sdGlwLmNsYXNzTGlzdC5hZGQoImNhbmNlbC1hbmltYXRpb24iKX0sc2hvdzpmdW5jdGlvbigpe2lmKCF0aGlzLl9zaG93aW5nKXtpZigiIj09PWVyKHRoaXMpLnRleHRDb250ZW50LnRyaW0oKSl7Zm9yKHZhciB0PSEwLGU9ZXIodGhpcykuZ2V0RWZmZWN0aXZlQ2hpbGROb2RlcygpLG49MDtuPGUubGVuZ3RoO24rKylpZigiIiE9PWVbbl0udGV4dENvbnRlbnQudHJpbSgpKXt0PSExO2JyZWFrfWlmKHQpcmV0dXJufXRoaXMuX3Nob3dpbmc9ITAsdGhpcy4kLnRvb2x0aXAuY2xhc3NMaXN0LnJlbW92ZSgiaGlkZGVuIiksdGhpcy4kLnRvb2x0aXAuY2xhc3NMaXN0LnJlbW92ZSgiY2FuY2VsLWFuaW1hdGlvbiIpLHRoaXMuJC50b29sdGlwLmNsYXNzTGlzdC5yZW1vdmUodGhpcy5fZ2V0QW5pbWF0aW9uVHlwZSgiZXhpdCIpKSx0aGlzLnVwZGF0ZVBvc2l0aW9uKCksdGhpcy5fYW5pbWF0aW9uUGxheWluZz0hMCx0aGlzLiQudG9vbHRpcC5jbGFzc0xpc3QuYWRkKHRoaXMuX2dldEFuaW1hdGlvblR5cGUoImVudHJ5IikpfX0saGlkZTpmdW5jdGlvbigpe2lmKHRoaXMuX3Nob3dpbmcpe2lmKHRoaXMuX2FuaW1hdGlvblBsYXlpbmcpcmV0dXJuIHRoaXMuX3Nob3dpbmc9ITEsdm9pZCB0aGlzLl9jYW5jZWxBbmltYXRpb24oKTt0aGlzLl9vbkFuaW1hdGlvbkZpbmlzaCgpLHRoaXMuX3Nob3dpbmc9ITEsdGhpcy5fYW5pbWF0aW9uUGxheWluZz0hMH19LHVwZGF0ZVBvc2l0aW9uOmZ1bmN0aW9uKCl7aWYodGhpcy5fdGFyZ2V0JiZ0aGlzLm9mZnNldFBhcmVudCl7dmFyIHQ9dGhpcy5vZmZzZXQ7MTQhPXRoaXMubWFyZ2luVG9wJiYxND09dGhpcy5vZmZzZXQmJih0PXRoaXMubWFyZ2luVG9wKTt2YXIgZSxuLGk9dGhpcy5vZmZzZXRQYXJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkscj10aGlzLl90YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbz10aGlzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGE9KHIud2lkdGgtby53aWR0aCkvMixzPShyLmhlaWdodC1vLmhlaWdodCkvMixsPXIubGVmdC1pLmxlZnQsYz1yLnRvcC1pLnRvcDtzd2l0Y2godGhpcy5wb3NpdGlvbil7Y2FzZSJ0b3AiOmU9bCthLG49Yy1vLmhlaWdodC10O2JyZWFrO2Nhc2UiYm90dG9tIjplPWwrYSxuPWMrci5oZWlnaHQrdDticmVhaztjYXNlImxlZnQiOmU9bC1vLndpZHRoLXQsbj1jK3M7YnJlYWs7Y2FzZSJyaWdodCI6ZT1sK3Iud2lkdGgrdCxuPWMrc310aGlzLmZpdFRvVmlzaWJsZUJvdW5kcz8oaS5sZWZ0K2Urby53aWR0aD53aW5kb3cuaW5uZXJXaWR0aD8odGhpcy5zdHlsZS5yaWdodD0iMHB4Iix0aGlzLnN0eWxlLmxlZnQ9ImF1dG8iKToodGhpcy5zdHlsZS5sZWZ0PU1hdGgubWF4KDAsZSkrInB4Iix0aGlzLnN0eWxlLnJpZ2h0PSJhdXRvIiksaS50b3ArbitvLmhlaWdodD53aW5kb3cuaW5uZXJIZWlnaHQ/KHRoaXMuc3R5bGUuYm90dG9tPWkuaGVpZ2h0LWMrdCsicHgiLHRoaXMuc3R5bGUudG9wPSJhdXRvIik6KHRoaXMuc3R5bGUudG9wPU1hdGgubWF4KC1pLnRvcCxuKSsicHgiLHRoaXMuc3R5bGUuYm90dG9tPSJhdXRvIikpOih0aGlzLnN0eWxlLmxlZnQ9ZSsicHgiLHRoaXMuc3R5bGUudG9wPW4rInB4Iil9fSxfYWRkTGlzdGVuZXJzOmZ1bmN0aW9uKCl7dGhpcy5fdGFyZ2V0JiYodGhpcy5saXN0ZW4odGhpcy5fdGFyZ2V0LCJtb3VzZWVudGVyIiwic2hvdyIpLHRoaXMubGlzdGVuKHRoaXMuX3RhcmdldCwiZm9jdXMiLCJzaG93IiksdGhpcy5saXN0ZW4odGhpcy5fdGFyZ2V0LCJtb3VzZWxlYXZlIiwiaGlkZSIpLHRoaXMubGlzdGVuKHRoaXMuX3RhcmdldCwiYmx1ciIsImhpZGUiKSx0aGlzLmxpc3Rlbih0aGlzLl90YXJnZXQsInRhcCIsImhpZGUiKSksdGhpcy5saXN0ZW4odGhpcy4kLnRvb2x0aXAsImFuaW1hdGlvbmVuZCIsIl9vbkFuaW1hdGlvbkVuZCIpLHRoaXMubGlzdGVuKHRoaXMsIm1vdXNlZW50ZXIiLCJoaWRlIil9LF9maW5kVGFyZ2V0OmZ1bmN0aW9uKCl7dGhpcy5tYW51YWxNb2RlfHx0aGlzLl9yZW1vdmVMaXN0ZW5lcnMoKSx0aGlzLl90YXJnZXQ9dGhpcy50YXJnZXQsdGhpcy5tYW51YWxNb2RlfHx0aGlzLl9hZGRMaXN0ZW5lcnMoKX0sX2RlbGF5Q2hhbmdlOmZ1bmN0aW9uKHQpezUwMCE9PXQmJnRoaXMudXBkYXRlU3R5bGVzKHsiLS1wYXBlci10b29sdGlwLWRlbGF5LWluIjp0KyJtcyJ9KX0sX21hbnVhbE1vZGVDaGFuZ2VkOmZ1bmN0aW9uKCl7dGhpcy5tYW51YWxNb2RlP3RoaXMuX3JlbW92ZUxpc3RlbmVycygpOnRoaXMuX2FkZExpc3RlbmVycygpfSxfY2FuY2VsQW5pbWF0aW9uOmZ1bmN0aW9uKCl7dGhpcy4kLnRvb2x0aXAuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLl9nZXRBbmltYXRpb25UeXBlKCJlbnRyeSIpKSx0aGlzLiQudG9vbHRpcC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuX2dldEFuaW1hdGlvblR5cGUoImV4aXQiKSksdGhpcy4kLnRvb2x0aXAuY2xhc3NMaXN0LnJlbW92ZSgiY2FuY2VsLWFuaW1hdGlvbiIpLHRoaXMuJC50b29sdGlwLmNsYXNzTGlzdC5hZGQoImhpZGRlbiIpfSxfb25BbmltYXRpb25GaW5pc2g6ZnVuY3Rpb24oKXt0aGlzLl9zaG93aW5nJiYodGhpcy4kLnRvb2x0aXAuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLl9nZXRBbmltYXRpb25UeXBlKCJlbnRyeSIpKSx0aGlzLiQudG9vbHRpcC5jbGFzc0xpc3QucmVtb3ZlKCJjYW5jZWwtYW5pbWF0aW9uIiksdGhpcy4kLnRvb2x0aXAuY2xhc3NMaXN0LmFkZCh0aGlzLl9nZXRBbmltYXRpb25UeXBlKCJleGl0IikpKX0sX29uQW5pbWF0aW9uRW5kOmZ1bmN0aW9uKCl7dGhpcy5fYW5pbWF0aW9uUGxheWluZz0hMSx0aGlzLl9zaG93aW5nfHwodGhpcy4kLnRvb2x0aXAuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLl9nZXRBbmltYXRpb25UeXBlKCJleGl0IikpLHRoaXMuJC50b29sdGlwLmNsYXNzTGlzdC5hZGQoImhpZGRlbiIpKX0sX2dldEFuaW1hdGlvblR5cGU6ZnVuY3Rpb24odCl7aWYoImVudHJ5Ij09PXQmJiIiIT09dGhpcy5hbmltYXRpb25FbnRyeSlyZXR1cm4gdGhpcy5hbmltYXRpb25FbnRyeTtpZigiZXhpdCI9PT10JiYiIiE9PXRoaXMuYW5pbWF0aW9uRXhpdClyZXR1cm4gdGhpcy5hbmltYXRpb25FeGl0O2lmKHRoaXMuYW5pbWF0aW9uQ29uZmlnW3RdJiYic3RyaW5nIj09dHlwZW9mIHRoaXMuYW5pbWF0aW9uQ29uZmlnW3RdWzBdLm5hbWUpe2lmKHRoaXMuYW5pbWF0aW9uQ29uZmlnW3RdWzBdLnRpbWluZyYmdGhpcy5hbmltYXRpb25Db25maWdbdF1bMF0udGltaW5nLmRlbGF5JiYwIT09dGhpcy5hbmltYXRpb25Db25maWdbdF1bMF0udGltaW5nLmRlbGF5KXt2YXIgZT10aGlzLmFuaW1hdGlvbkNvbmZpZ1t0XVswXS50aW1pbmcuZGVsYXk7ImVudHJ5Ij09PXQ/dGhpcy51cGRhdGVTdHlsZXMoeyItLXBhcGVyLXRvb2x0aXAtZGVsYXktaW4iOmUrIm1zIn0pOiJleGl0Ij09PXQmJnRoaXMudXBkYXRlU3R5bGVzKHsiLS1wYXBlci10b29sdGlwLWRlbGF5LW91dCI6ZSsibXMifSl9cmV0dXJuIHRoaXMuYW5pbWF0aW9uQ29uZmlnW3RdWzBdLm5hbWV9fSxfcmVtb3ZlTGlzdGVuZXJzOmZ1bmN0aW9uKCl7dGhpcy5fdGFyZ2V0JiYodGhpcy51bmxpc3Rlbih0aGlzLl90YXJnZXQsIm1vdXNlZW50ZXIiLCJzaG93IiksdGhpcy51bmxpc3Rlbih0aGlzLl90YXJnZXQsImZvY3VzIiwic2hvdyIpLHRoaXMudW5saXN0ZW4odGhpcy5fdGFyZ2V0LCJtb3VzZWxlYXZlIiwiaGlkZSIpLHRoaXMudW5saXN0ZW4odGhpcy5fdGFyZ2V0LCJibHVyIiwiaGlkZSIpLHRoaXMudW5saXN0ZW4odGhpcy5fdGFyZ2V0LCJ0YXAiLCJoaWRlIikpLHRoaXMudW5saXN0ZW4odGhpcy4kLnRvb2x0aXAsImFuaW1hdGlvbmVuZCIsIl9vbkFuaW1hdGlvbkVuZCIpLHRoaXMudW5saXN0ZW4odGhpcywibW91c2VlbnRlciIsImhpZGUiKX19KTtjbGFzcyBNc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLmxpc3RlbmVyPXR9fWNvbnN0IEVzPW5ldyBTZXQsVHM9bmV3IFNldDtmdW5jdGlvbiBDcyh0KXtjb25zdCBlPW5ldyBNcyh0KTtyZXR1cm4gRXMuYWRkKGUpLGV9ZnVuY3Rpb24gQXModCl7Y29uc3QgZT1uZXcgTXModCk7cmV0dXJuIFRzLmFkZChlKSxlfWZ1bmN0aW9uIGtzKCl7VHMuZm9yRWFjaCgodD0+dC5saXN0ZW5lcigpKSl9ZnVuY3Rpb24gTHModCl7RXMuZGVsZXRlKHQpfWZ1bmN0aW9uIFBzKHQpe1RzLmRlbGV0ZSh0KX13aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiaGFzaGNoYW5nZSIsKCgpPT57RXMuZm9yRWFjaCgodD0+dC5saXN0ZW5lcigpKSl9KSksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInN0b3JhZ2UiLCgoKT0+e1RzLmZvckVhY2goKHQ9PnQubGlzdGVuZXIoKSkpfSkpO2xldCBOcz0hMTtmdW5jdGlvbiBJcygpe3JldHVybiBOc31sZXQgUnM9IiI7ZnVuY3Rpb24gT3ModCl7UnM9dH1mdW5jdGlvbiB6cygpe3JldHVybiBSc312YXIgRHM9T2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsc2V0VXNlSGFzaDpmdW5jdGlvbiBCcyh0KXtOcz10fSx1c2VIYXNoOklzLHNldEZha2VIYXNoOk9zLGdldEZha2VIYXNoOnpzfSk7Y29uc3QgSHM9Il9fdGFiX18iO2xldCBGcz17fTtmdW5jdGlvbiBWcygpe3JldHVybiBJcygpP3dpbmRvdy5sb2NhdGlvbi5oYXNoLnNsaWNlKDEpOnpzKCl9ZnVuY3Rpb24gVXModCl7Y29uc3QgZT17fTtyZXR1cm4gdC5zcGxpdCgiJiIpLmZvckVhY2goKHQ9Pntjb25zdCBuPXQuc3BsaXQoIj0iKTsxPT09bi5sZW5ndGg/ZS5fX3RhYl9fPW5bMF06Mj09PW4ubGVuZ3RoJiYoZVtkZWNvZGVVUklDb21wb25lbnQoblswXSldPWRlY29kZVVSSUNvbXBvbmVudChuWzFdKSl9KSksZX1mdW5jdGlvbiBqcyh0LGU9ITEpe2lmKElzKCkpaWYoZSl7Y29uc3QgZT1uZXcgVVJMKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTtlLmhhc2g9dCx3aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUod2luZG93Lmhpc3Rvcnkuc3RhdGUsIiIsZS50b1N0cmluZygpKX1lbHNlIHdpbmRvdy5sb2NhdGlvbi5oYXNoPXQ7ZWxzZSBPcyh0KX1mdW5jdGlvbiBHcyh0KXtsZXQgZT0iIjt2b2lkIDAhPT10Ll9fdGFiX18mJihlKz10Ll9fdGFiX18pO2NvbnN0IG49T2JqZWN0LmtleXModCkubWFwKChlPT5bZSx0W2VdXSkpLmZpbHRlcigodD0+dFswXSE9PUhzKSkubWFwKCh0PT5lbmNvZGVVUklDb21wb25lbnQodFswXSkrIj0iK2VuY29kZVVSSUNvbXBvbmVudCh0WzFdKSkpLmpvaW4oIiYiKTtyZXR1cm4gbi5sZW5ndGg+MD9lKyImIituOmV9Q3MoKCgpPT57RnM9VXMoVnMoKSl9KSk7Y29uc3QgV3M9ImRpc2FtYmlndWF0b3IiLHtnZXQ6cXMsc2V0OllzLGdldEluaXRpYWxpemVyOlhzLGdldE9ic2VydmVyOiRzLGRpc3Bvc2VCaW5kaW5nOktzfT1kbCgodD0+dCksKHQ9PnQpKSx7Z2V0OlpzLHNldDpKcyxnZXRJbml0aWFsaXplcjpRcyxnZXRPYnNlcnZlcjp0bCxkaXNwb3NlQmluZGluZzplbH09ZGwoKHQ9PiJ0cnVlIj09PXR8fCJmYWxzZSIhPT10JiZ2b2lkIDApLCh0PT50LnRvU3RyaW5nKCkpKSx7Z2V0Om5sLHNldDppbCxnZXRJbml0aWFsaXplcjpybCxnZXRPYnNlcnZlcjpvbCxkaXNwb3NlQmluZGluZzphbH09ZGwoKHQ9Pit0KSwodD0+dC50b1N0cmluZygpKSkse2dldDpzbCxzZXQ6bGwsZ2V0SW5pdGlhbGl6ZXI6Y2wsZ2V0T2JzZXJ2ZXI6dWwsZGlzcG9zZUJpbmRpbmc6aGx9PWRsKCh0PT5KU09OLnBhcnNlKGF0b2IodCkpKSwodD0+YnRvYShKU09OLnN0cmluZ2lmeSh0KSkpKTtmdW5jdGlvbiBkbCh0LGUpe2NvbnN0IG49W10saT1bXTtmdW5jdGlvbiByKGUsbj17fSl7Y29uc3R7ZGVmYXVsdFZhbHVlOmksdXNlTG9jYWxTdG9yYWdlOnI9ITF9PW4sbz1yP3dpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShlKTpVcyhWcygpKVtlXTtyZXR1cm4gbnVsbD09bz9DZS5leHBvcnRzLmNsb25lRGVlcChpKTp0KG8pfWZ1bmN0aW9uIG8odCxuLGk9e30pe2NvbnN0e2RlZmF1bHRWYWx1ZTpvLHVzZUxvY2FsU3RvcmFnZTphPSExLHVzZUxvY2F0aW9uUmVwbGFjZTpzPSExfT1pLGw9ZShuKTtpZihhKXdpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0LGwpLGtzKCk7ZWxzZSBpZighQ2UuZXhwb3J0cy5pc0VxdWFsKG4scih0LHt1c2VMb2NhbFN0b3JhZ2U6YX0pKSlpZihDZS5leHBvcnRzLmlzRXF1YWwobixvKSkhKGZ1bmN0aW9uIGModCl7Y29uc3QgZT1VcyhWcygpKTtkZWxldGUgZVt0XSxqcyhHcyhlKSl9KSh0KTtlbHNle2NvbnN0IGU9VXMoVnMoKSk7ZVt0XT1sLGpzKEdzKGUpLHMpfX1yZXR1cm57Z2V0OnIsc2V0Om8sZ2V0SW5pdGlhbGl6ZXI6ZnVuY3Rpb24gYSh0LGUpe2NvbnN0IG89T2JqZWN0LmFzc2lnbih7ZGVmYXVsdFZhbHVlOmUuZGVmYXVsdFZhbHVlLHBvbHltZXJQcm9wZXJ0eTp0LHVzZUxvY2FsU3RvcmFnZTohMX0sZSk7cmV0dXJuIGZ1bmN0aW9uKCl7Y29uc3QgZT1wbCh0aGlzLHQpLGE9KCk9Pntjb25zdCB0PXIoZSxvKTtDZS5leHBvcnRzLmlzRXF1YWwodCx0aGlzW28ucG9seW1lclByb3BlcnR5XSl8fCh0aGlzW28ucG9seW1lclByb3BlcnR5XT10KX0scz0oby51c2VMb2NhbFN0b3JhZ2U/QXM6Q3MpKCgoKT0+YSgpKSk7cmV0dXJuIG8udXNlTG9jYWxTdG9yYWdlP2kucHVzaChzKTpuLnB1c2gocyksYSgpLHRoaXNbby5wb2x5bWVyUHJvcGVydHldfX0sZ2V0T2JzZXJ2ZXI6ZnVuY3Rpb24gcyh0LGUpe2NvbnN0IG49T2JqZWN0LmFzc2lnbih7ZGVmYXVsdFZhbHVlOmUuZGVmYXVsdFZhbHVlLHBvbHltZXJQcm9wZXJ0eTp0LHVzZUxvY2FsU3RvcmFnZTohMX0sZSk7cmV0dXJuIGZ1bmN0aW9uKCl7byhwbCh0aGlzLHQpLHRoaXNbbi5wb2x5bWVyUHJvcGVydHldLG4pfX0sZGlzcG9zZUJpbmRpbmc6ZnVuY3Rpb24gbCgpe24uZm9yRWFjaCgodD0+THModCkpKSxpLmZvckVhY2goKHQ9PlBzKHQpKSl9fX1mdW5jdGlvbiBwbCh0LGUpe2NvbnN0IG49dC5kaXNhbWJpZ3VhdG9yO3JldHVybihudWxsPT1uP1tlXTpbbixlXSkuam9pbigiLiIpfWxldCBmbD1jbGFzcyBleHRlbmRzIHdle2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl90YWdGaWx0ZXI9WHMoInRhZ0ZpbHRlciIse2RlZmF1bHRWYWx1ZToiIix1c2VMb2NhbFN0b3JhZ2U6ITEscG9seW1lclByb3BlcnR5OiJfdGFnRmlsdGVyIn0pLmNhbGwodGhpcyksdGhpcy5fdGFnRmlsdGVyT2JzZXJ2ZXI9JHMoInRhZ0ZpbHRlciIse2RlZmF1bHRWYWx1ZToiIix1c2VMb2NhbFN0b3JhZ2U6ITEscG9seW1lclByb3BlcnR5OiJfdGFnRmlsdGVyIn0pfV9jb21wdXRlVGFnRmlsdGVyKCl7cmV0dXJuIHRoaXMuX3RhZ0ZpbHRlcn19O2Z1bmN0aW9uIG1sKHQpe2NvbnN0e21vZHVsZU5hbWU6ZSxzdHlsZUNvbnRlbnQ6bn09dCxpPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRvbS1tb2R1bGUiKSxyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRlbXBsYXRlIiksbz1bXTt0LnN0eWxlRGVwZW5kZW5jaWVzJiZ0LnN0eWxlRGVwZW5kZW5jaWVzLmZvckVhY2goKHQ9Pntjb25zdCBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7ZS5zZXRBdHRyaWJ1dGUoImluY2x1ZGUiLHQpLG8ucHVzaChlKX0pKTtjb25zdCBhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7T2JqZWN0LmFzc2lnbihhLHt0ZXh0Q29udGVudDpufSksby5mb3JFYWNoKCh0PT57ci5jb250ZW50LmFwcGVuZENoaWxkKHQpfSkpLHIuY29udGVudC5hcHBlbmRDaGlsZChhKSxpLmFwcGVuZENoaWxkKHIpLGkucmVnaXN0ZXIoZSl9ZnVuY3Rpb24gZ2wodCl7cmV0dXJuIGNsYXNzIGV4dGVuZHMgdHtjb25uZWN0ZWRDYWxsYmFjaygpe3N1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCksdGhpcy5fbWF5YmVTZXREYXJrTW9kZSgpLHRoaXMub2JzZXJ2ZXI9bmV3IE11dGF0aW9uT2JzZXJ2ZXIoKHQ9Pnt0LnNvbWUoKHQ9PiJjbGFzcyI9PT10LmF0dHJpYnV0ZU5hbWUpKSYmdGhpcy5fbWF5YmVTZXREYXJrTW9kZSgpfSkpLHRoaXMub2JzZXJ2ZXIub2JzZXJ2ZShkb2N1bWVudC5ib2R5LHthdHRyaWJ1dGVzOiEwfSl9ZGlzY29ubmVjdGVkQ2FsbGJhY2soKXt2YXIgdDtzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpLG51bGw9PT0odD10aGlzLm9ic2VydmVyKXx8dm9pZCAwPT09dHx8dC5kaXNjb25uZWN0KCl9X21heWJlU2V0RGFya01vZGUoKXt0aGlzLmNsYXNzTGlzdC50b2dnbGUoImRhcmstbW9kZSIsZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuY29udGFpbnMoImRhcmstbW9kZSIpKX19fWZsLnRlbXBsYXRlPXhlYAogICAgPHBhcGVyLWlucHV0CiAgICAgIG5vLWxhYmVsLWZsb2F0PSIiCiAgICAgIGxhYmVsPSJGaWx0ZXIgdGFncyAocmVndWxhciBleHByZXNzaW9ucyBzdXBwb3J0ZWQpIgogICAgICB2YWx1ZT0ie3tfdGFnRmlsdGVyfX0iCiAgICAgIGNsYXNzPSJzZWFyY2gtaW5wdXQiCiAgICA+CiAgICAgIDxpcm9uLWljb24gcHJlZml4PSIiIGljb249InNlYXJjaCIgc2xvdD0icHJlZml4Ij48L2lyb24taWNvbj4KICAgIDwvcGFwZXItaW5wdXQ+CiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBtYXJnaW46IDEwcHggNXB4IDEwcHggMTBweDsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6U3RyaW5nLG5vdGlmeTohMCxjb21wdXRlZDoiX2NvbXB1dGVUYWdGaWx0ZXIoX3RhZ0ZpbHRlcikifSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLGZsLnByb3RvdHlwZSwidGFnRmlsdGVyIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nLG9ic2VydmVyOiJfdGFnRmlsdGVyT2JzZXJ2ZXIifSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLGZsLnByb3RvdHlwZSwiX3RhZ0ZpbHRlciIsdm9pZCAwKSxmbD10KFtpKCJ0Zi10YWctZmlsdGVyZXIiKV0sZmwpLG1sKHttb2R1bGVOYW1lOiJkYXNoYm9hcmQtc3R5bGUiLHN0eWxlRGVwZW5kZW5jaWVzOlsiaXJvbi1mbGV4Il0sc3R5bGVDb250ZW50OiJcbiAgICAgIDpob3N0IHtcbiAgICAgICAgLS1zaWRlYmFyLXZlcnRpY2FsLXBhZGRpbmc6IDE1cHg7XG4gICAgICAgIC0tc2lkZWJhci1sZWZ0LXBhZGRpbmc6IDMwcHg7XG4gICAgICB9XG5cbiAgICAgIFtzbG90PSdzaWRlYmFyJ10ge1xuICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMTBweDtcbiAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICAgICAgICBwYWRkaW5nOiA1cHggMDtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICB9XG5cbiAgICAgIC5zZXR0aW5ncyB7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDUwcHg7XG4gICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjtcbiAgICAgICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICAgICAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTtcbiAgICAgIH1cblxuICAgICAgLnJ1bnMtc2VsZWN0b3Ige1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDIwMHB4O1xuICAgICAgfVxuXG4gICAgICB0Zi1ydW5zLXNlbGVjdG9yIHtcbiAgICAgICAgZmxleC1ncm93OiAxO1xuICAgICAgICBmbGV4LXNocmluazogMTtcbiAgICAgICAgbGVmdDogdmFyKC0tc2lkZWJhci1sZWZ0LXBhZGRpbmcpO1xuICAgICAgICBtYXgtaGVpZ2h0OiBjYWxjKDEwMCUgLSB2YXIoLS1zaWRlYmFyLXZlcnRpY2FsLXBhZGRpbmcpICogMik7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgcmlnaHQ6IDA7XG4gICAgICB9XG5cbiAgICAgIC5zZWFyY2gtaW5wdXQge1xuICAgICAgICBtYXJnaW46IDEwcHggNXB4IDAgMTBweDtcbiAgICAgIH1cblxuICAgICAgLnNpZGViYXItc2VjdGlvbiB7XG4gICAgICAgIGJvcmRlci10b3A6IHNvbGlkIDFweCB2YXIoLS10Yi11aS1ib3JkZXIpO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXNpZGViYXItdmVydGljYWwtcGFkZGluZykgMFxuICAgICAgICAgIHZhcigtLXNpZGViYXItdmVydGljYWwtcGFkZGluZykgdmFyKC0tc2lkZWJhci1sZWZ0LXBhZGRpbmcpO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICB9XG5cbiAgICAgIC5zaWRlYmFyLXNlY3Rpb246Zmlyc3Qtb2YtdHlwZSB7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgIH1cblxuICAgICAgLnNpZGViYXItc2VjdGlvbiBwYXBlci1idXR0b24ge1xuICAgICAgICBtYXJnaW46IDVweDtcbiAgICAgIH1cblxuICAgICAgLnNpZGViYXItc2VjdGlvbiBwYXBlci1idXR0b246Zmlyc3Qtb2YtdHlwZSB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7XG4gICAgICB9XG5cbiAgICAgIC5zaWRlYmFyLXNlY3Rpb24gcGFwZXItYnV0dG9uOmxhc3Qtb2YtdHlwZSB7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMCAhaW1wb3J0YW50O1xuICAgICAgfVxuXG4gICAgICAuc2lkZWJhci1zZWN0aW9uID4gOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICAgICAgcGFkZGluZy10b3A6IDA7XG4gICAgICB9XG5cbiAgICAgIC5zaWRlYmFyLXNlY3Rpb24gPiA6bGFzdC1jaGlsZCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAwO1xuICAgICAgfVxuXG4gICAgICAuc2lkZWJhci1zZWN0aW9uIGgzIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXRiLXNlY29uZGFyeS10ZXh0LWNvbG9yKTtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICAgICAgbWFyZ2luOiAxMHB4IDAgNXB4O1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgIH1cblxuICAgICAgcGFwZXItY2hlY2tib3gge1xuICAgICAgICAtLXBhcGVyLWNoZWNrYm94LWNoZWNrZWQtY29sb3I6IHZhcigtLXRiLXVpLWRhcmstYWNjZW50KTtcbiAgICAgICAgLS1wYXBlci1jaGVja2JveC11bmNoZWNrZWQtY29sb3I6IHZhcigtLXRiLXVpLWRhcmstYWNjZW50KTtcbiAgICAgICAgZm9udC1zaXplOiAxNXB4O1xuICAgICAgICBtYXJnaW4tdG9wOiA1cHg7XG4gICAgICB9XG5cbiAgICAgIGEge1xuICAgICAgICBjb2xvcjogdmFyKC0tdGItbGluayk7XG4gICAgICB9XG5cbiAgICAgIGE6dmlzaXRlZCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS10Yi1saW5rLXZpc2l0ZWQpO1xuICAgICAgfVxuICAifSksbWwoe21vZHVsZU5hbWU6InNjcm9sbGJhci1zdHlsZSIsc3R5bGVDb250ZW50OiJcbiAgICAuc2Nyb2xsYmFyOjotd2Via2l0LXNjcm9sbGJhci10cmFjayB7XG4gICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgfVxuXG4gICAgLnNjcm9sbGJhcjo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAgICAgd2lkdGg6IDEwcHg7XG4gICAgfVxuXG4gICAgLnNjcm9sbGJhcjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuICAgICAgYm9yZGVyLXJhZGl1czogMTBweDtcbiAgICAgIC13ZWJraXQtYm94LXNoYWRvdzogaW5zZXQgMCAwIDJweCByZ2JhKDAsIDAsIDAsIDAuMyk7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wYXBlci1ncmV5LTUwMCk7XG4gICAgICBjb2xvcjogdmFyKC0tcGFwZXItZ3JleS05MDApO1xuICAgIH1cbiAgICAuc2Nyb2xsYmFyIHtcbiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgfVxuICAifSk7Y29uc3QgX2w9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTtfbC5zZXRBdHRyaWJ1dGUoImlzIiwiY3VzdG9tLXN0eWxlIiksX2wudGV4dENvbnRlbnQ9IlxuICA6cm9vdCB7XG4gICAgLS10Yi1vcmFuZ2Utd2VhazogI2ZmYTcyNjtcbiAgICAtLXRiLW9yYW5nZS1zdHJvbmc6ICNmNTdjMDA7XG4gICAgLS10Yi1vcmFuZ2UtZGFyazogI2RjNzMyMDtcbiAgICAtLXRiLWdyZXktZGFya2VyOiAjZTJlMmUyO1xuICAgIC0tdGItZ3JleS1saWdodGVyOiAjZjNmM2YzO1xuICAgIC0tdGItdWktZGFyay1hY2NlbnQ6ICM3NTc1NzU7XG4gICAgLS10Yi11aS1saWdodC1hY2NlbnQ6ICNlMGUwZTA7XG4gICAgLS10Yi11aS1ib3JkZXI6IHZhcigtLXBhcGVyLWdyZXktMzAwKTtcbiAgICAtLXRiLWdyYXBoLWZhZGVkOiAjZTBkNGIzO1xuICAgIC0tdGItc2Vjb25kYXJ5LXRleHQtY29sb3I6IHZhcigtLXBhcGVyLWdyZXktODAwKTtcbiAgICAtLXRiLXJhaXNlZC1idXR0b24tc2hhZG93LWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMik7XG4gICAgLS1wcmltYXJ5LWJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gICAgLS1zZWNvbmRhcnktYmFja2dyb3VuZC1jb2xvcjogI2U5ZTllOTtcbiAgICAtLXRiLWxheW91dC1iYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1O1xuICAgIC0tdGItbGluazogIzE5NzZkMjsgLyogbWF0ZXJpYWwgYmx1ZSA3MDAuICovXG4gICAgLS10Yi1saW5rLXZpc2l0ZWQ6ICM3YjFmYTI7IC8qIG1hdGVyaWFsIHB1cnBsZSA3MDAuICovXG4gIH1cblxuICA6cm9vdCAuZGFyay1tb2RlIHtcbiAgICAtLXRiLXVpLWJvcmRlcjogdmFyKC0tcGFwZXItZ3JleS03MDApO1xuICAgIC0tdGItdWktZGFyay1hY2NlbnQ6IHZhcigtLXBhcGVyLWdyZXktNDAwKTtcbiAgICAtLXRiLXVpLWxpZ2h0LWFjY2VudDogdmFyKC0tcGFwZXItZ3JleS02MDApO1xuICAgIC0tdGItc2Vjb25kYXJ5LXRleHQtY29sb3I6IHZhcigtLXBhcGVyLWdyZXktNDAwKTtcbiAgICAtLXRiLXJhaXNlZC1idXR0b24tc2hhZG93LWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSk7XG4gICAgLS1wcmltYXJ5LXRleHQtY29sb3I6ICNmZmY7XG4gICAgLS1zZWNvbmRhcnktdGV4dC1jb2xvcjogdmFyKC0tcGFwZXItZ3JleS00MDApO1xuICAgIC0tcHJpbWFyeS1iYWNrZ3JvdW5kLWNvbG9yOiAjMzAzMDMwOyAgLyogbWF0ZXJpYWwgZ3JleSBBNDAwLiAqL1xuICAgIC0tc2Vjb25kYXJ5LWJhY2tncm91bmQtY29sb3I6ICMzYTNhM2E7XG4gICAgLS10Yi1sYXlvdXQtYmFja2dyb3VuZC1jb2xvcjogIzNhM2EzYTtcbiAgICAtLXRiLWxpbms6ICM0MmE1ZjU7IC8qIG1hdGVyaWFsIGJsdWUgNDAwLiAqL1xuICAgIC0tdGItbGluay12aXNpdGVkOiAjYmE2OGM4OyAvKiBtYXRlcmlhbCBwdXJwbGUgMzAwLiAqL1xuICAgIC8qIE92ZXJyaWRlcyBwYXBlci1tYXRlcmlhbCAqL1xuICAgIC0tc2hhZG93LWVsZXZhdGlvbi0yZHBfLV9ib3gtc2hhZG93OiAwIDJweCAycHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTQpLFxuICAgICAgMCAxcHggNXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEyKSxcbiAgICAgIDAgM3B4IDFweCAtMnB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTtcbiAgfVxuIixkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKF9sKTtsZXQgeWw9Y2xhc3MgZXh0ZW5kcyhnbCh3ZSkpe307eWwudGVtcGxhdGU9eGVgCiAgICA8ZGl2IGlkPSJzaWRlYmFyIj4KICAgICAgPHNsb3QgbmFtZT0ic2lkZWJhciI+PC9zbG90PgogICAgPC9kaXY+CgogICAgPGRpdiBpZD0iY2VudGVyIj4KICAgICAgPHNsb3QgbmFtZT0iY2VudGVyIiBjbGFzcz0ic2NvbGxiYXIiPjwvc2xvdD4KICAgIDwvZGl2PgogICAgPHN0eWxlIGluY2x1ZGU9InNjcm9sbGJhci1zdHlsZSI+PC9zdHlsZT4KICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjU7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93OwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgfQoKICAgICAgOmhvc3QoLmRhcmstbW9kZSkgewogICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXNlY29uZGFyeS1iYWNrZ3JvdW5kLWNvbG9yKTsKICAgICAgfQoKICAgICAgI3NpZGViYXIgewogICAgICAgIGZsZXg6IDAgMCB2YXIoLS10Zi1kYXNoYm9hcmQtbGF5b3V0LXNpZGViYXItYmFzaXMsIDI1JSk7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIG1heC13aWR0aDogdmFyKC0tdGYtZGFzaGJvYXJkLWxheW91dC1zaWRlYmFyLW1heC13aWR0aCwgMzUwcHgpOwogICAgICAgIG1pbi13aWR0aDogdmFyKC0tdGYtZGFzaGJvYXJkLWxheW91dC1zaWRlYmFyLW1pbi13aWR0aCwgMjcwcHgpOwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICAgIH0KCiAgICAgICNjZW50ZXIgewogICAgICAgIGZsZXgtZ3JvdzogMTsKICAgICAgICBmbGV4LXNocmluazogMTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgfQoKICAgICAgOjpzbG90dGVkKFtzbG90PSdjZW50ZXInXSkgewogICAgICAgIGNvbnRhaW46IHN0cmljdDsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTsKICAgICAgfQoKICAgICAgLnRmLWdyYXBoLWRhc2hib2FyZCAjY2VudGVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmOwogICAgICB9CiAgICA8L3N0eWxlPgogIGAseWw9dChbaSgidGYtZGFzaGJvYXJkLWxheW91dCIpXSx5bCk7Y29uc3Qgdmw9IlRGLlRlbnNvckJvYXJkLlBhZ2luYXRlZFZpZXcubGltaXQiO2xldCBibD1udWxsO2NvbnN0IHhsPW5ldyBTZXQ7ZnVuY3Rpb24gd2wodCl7eGwuYWRkKHQpfWZ1bmN0aW9uIFNsKHQpe3hsLmRlbGV0ZSh0KX1mdW5jdGlvbiBNbCgpe3JldHVybiBudWxsPT1ibCYmKGJsPW5sKHZsLHt1c2VMb2NhbFN0b3JhZ2U6ITB9KSwobnVsbD09Ymx8fCFpc0Zpbml0ZShibCl8fGJsPD0wKSYmKGJsPTEyKSksYmx9Y2xhc3MgRWwgZXh0ZW5kcyB3ZXt1cGRhdGVBcnJheVByb3AodCxlLG4pe2xldCBpPXRoaXMuZ2V0KHQpO2NvbnN0IHI9ZTtpZighQXJyYXkuaXNBcnJheShyKSl0aHJvdyBSYW5nZUVycm9yKGBFeHBlY3RlZCBuZXcgdmFsdWUgdG8gJyR7dH0nIHRvIGJlIGFuIGFycmF5LmApO0FycmF5LmlzQXJyYXkoaSl8fChpPVtdLHRoaXMuc2V0KHQsaSkpO2NvbnN0IG89bmV3IFNldChyLm1hcCgoKHQsZSk9Pm4odCxlKSkpKTtsZXQgYT0wLHM9MDtmb3IoO2E8aS5sZW5ndGgmJnM8ci5sZW5ndGg7KW8uaGFzKG4oaVthXSxhKSk/KG4oaVthXSxhKT09bihyW3NdLHMpP3RoaXMuc2V0KGAke3R9LiR7YX1gLHJbc10pOnRoaXMuc3BsaWNlKHQsYSwwLHJbc10pLHMrKyxhKyspOnRoaXMuc3BsaWNlKHQsYSwxKTthPGkubGVuZ3RoJiZ0aGlzLnNwbGljZSh0LGEpLHM8ci5sZW5ndGgmJnRoaXMucHVzaCh0LC4uLnIuc2xpY2UocykpfX1jbGFzcyBUbCBleHRlbmRzIEVse2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLmFzPSJpdGVtIix0aGlzLl9jb250ZW50QWN0aXZlPSEwLHRoaXMuX2RvbUJvb3RzdHJhcHBlZD0hMSx0aGlzLl9jdG9yPW51bGwsdGhpcy5fcmVuZGVyZWRJdGVtcz1bXSx0aGlzLl9yZW5kZXJlZFRlbXBsYXRlSW5zdD1uZXcgTWFwLHRoaXMuX2xydUNhY2hlZEl0ZW1zPW5ldyBNYXAsdGhpcy5fY2FjaGVTaXplPTEwLHRoaXMuX2dldEl0ZW1LZXk9dD0+SlNPTi5zdHJpbmdpZnkodCksdGhpcy5faXNDb25uZWN0ZWQ9ITF9Y29ubmVjdGVkQ2FsbGJhY2soKXtzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpLHRoaXMuX2lzQ29ubmVjdGVkPSEwfXNldENhY2hlU2l6ZSh0KXt0aGlzLl9jYWNoZVNpemU9dH1zZXRHZXRJdGVtS2V5KHQpe3RoaXMuX2dldEl0ZW1LZXk9dH11cGRhdGVEb20odCl7dGhpcy51cGRhdGVBcnJheVByb3AoIl9yZW5kZXJlZEl0ZW1zIix0LHRoaXMuX2dldEl0ZW1LZXkpfV9lbnN1cmVUZW1wbGF0aXplZCgpe2lmKCF0aGlzLmlzQ29ubmVjdGVkKXJldHVybiExO2lmKCF0aGlzLl9jdG9yKXtjb25zdCB0PXRoaXMucXVlcnlTZWxlY3RvcigidGVtcGxhdGUiKTt0aGlzLl9jdG9yPWFvKHQsdGhpcyx7cGFyZW50TW9kZWw6ITAsaW5zdGFuY2VQcm9wczp7W3RoaXMuYXNdOiEwLGFjdGl2ZTp0aGlzLl9jb250ZW50QWN0aXZlfSxmb3J3YXJkSG9zdFByb3A6ZnVuY3Rpb24odCxlKXt0aGlzLl9yZW5kZXJlZFRlbXBsYXRlSW5zdC5mb3JFYWNoKChuPT57bi5mb3J3YXJkSG9zdFByb3AodCxlKX0pKX19KX1yZXR1cm4hMH1fYm9vdHN0cmFwRG9tKCl7aWYoIXRoaXMuX2Vuc3VyZVRlbXBsYXRpemVkKCl8fHRoaXMuX2RvbUJvb3RzdHJhcHBlZClyZXR1cm47bmV3IE11dGF0aW9uT2JzZXJ2ZXIoKHQ9Pntmb3IoY29uc3QgZSBvZiB0KWlmKCJjaGlsZExpc3QiPT09ZS50eXBlKWZvcihjb25zdCB0IG9mIEFycmF5LmZyb20oZS5hZGRlZE5vZGVzKSl0IGluc3RhbmNlb2YgRWxlbWVudCYmdC5zZXRBdHRyaWJ1dGUoInNsb3QiLCJpdGVtcyIpfSkpLm9ic2VydmUodGhpcyx7Y2hpbGRMaXN0OiEwfSksQXJyYXkuZnJvbSh0aGlzLmNoaWxkcmVuKS5mb3JFYWNoKCh0PT57dGhpcy5yZW1vdmVDaGlsZCh0KX0pKSx0aGlzLl9scnVDYWNoZWRJdGVtcy5jbGVhcigpLHRoaXMuX3JlbmRlcmVkSXRlbXMuZm9yRWFjaCgoKHQsZSk9PnRoaXMuX2luc2VydEl0ZW0odCxlKSkpLHRoaXMuX2RvbUJvb3RzdHJhcHBlZD0hMH1fdXBkYXRlQWN0aXZlKCl7dGhpcy5fZG9tQm9vdHN0cmFwcGVkJiZBcnJheS5mcm9tKHRoaXMuX3JlbmRlcmVkVGVtcGxhdGVJbnN0LnZhbHVlcygpKS5mb3JFYWNoKCh0PT57dC5ub3RpZnlQYXRoKCJhY3RpdmUiLHRoaXMuX2NvbnRlbnRBY3RpdmUpfSkpfV91cGRhdGVEb20odCl7aWYodGhpcy5fZG9tQm9vdHN0cmFwcGVkJiYiX3JlbmRlcmVkSXRlbXMiIT10LnBhdGgmJiJfcmVuZGVyZWRJdGVtcy5sZW5ndGgiIT10LnBhdGgpaWYoIl9yZW5kZXJlZEl0ZW1zLnNwbGljZXMiPT09dC5wYXRoKXt0LnZhbHVlLmluZGV4U3BsaWNlcy5mb3JFYWNoKCh0PT57Y29uc3R7aW5kZXg6ZSxhZGRlZENvdW50Om4sb2JqZWN0OmkscmVtb3ZlZDpyfT10O3IuZm9yRWFjaCgodD0+e3RoaXMuX3JlbW92ZUl0ZW0odCx0aGlzLmNoaWxkcmVuW2VdKX0pKSxpLnNsaWNlKGUsZStuKS5mb3JFYWNoKCgodCxuKT0+dGhpcy5faW5zZXJ0SXRlbSh0LGUrbikpKSx0aGlzLl90cmltQ2FjaGUoKX0pKX1lbHNle2NvbnN0IGU9dGhpcy5fZ2V0SXRlbUtleSh0LnZhbHVlKTt0aGlzLl9yZW5kZXJlZFRlbXBsYXRlSW5zdC5oYXMoZSk/dGhpcy5fcmVuZGVyZWRUZW1wbGF0ZUluc3QuZ2V0KGUpLm5vdGlmeVBhdGgodGhpcy5hcyx0LnZhbHVlKTpjb25zb2xlLndhcm4oYEV4cGVjdGVkICcke2V9JyB0byBleGlzdCBpbiB0aGUgRE9NIGJ1dCBjb3VsZCBub3QgZmluZCBvbmUuYCl9fV9pbnNlcnRJdGVtKHQsZSl7aWYoIXRoaXMuX2Vuc3VyZVRlbXBsYXRpemVkKCkpdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0ZW1wbGF0aXplZCBiZWZvcmUgaW5zZXJ0aW5nIGFuIGl0ZW0iKTtsZXQgbjtjb25zdCBpPXRoaXMuX2dldEl0ZW1LZXkodCk7aWYodGhpcy5fbHJ1Q2FjaGVkSXRlbXMuaGFzKGkpKW49dGhpcy5fbHJ1Q2FjaGVkSXRlbXMuZ2V0KGkpLHRoaXMuX2xydUNhY2hlZEl0ZW1zLmRlbGV0ZShpKSx0aGlzLl9yZW5kZXJlZFRlbXBsYXRlSW5zdC5nZXQoaSkubm90aWZ5UGF0aCgiYWN0aXZlIix0aGlzLl9jb250ZW50QWN0aXZlKTtlbHNle2NvbnN0IGU9bmV3IHRoaXMuX2N0b3Ioe1t0aGlzLmFzXTp0LGFjdGl2ZTp0aGlzLl9jb250ZW50QWN0aXZlfSk7bj1lLnJvb3QsdGhpcy5fcmVuZGVyZWRUZW1wbGF0ZUluc3Quc2V0KGksZSl9aWYodGhpcy5jaGlsZHJlbltlXSl0aGlzLmluc2VydEJlZm9yZShuLHRoaXMuY2hpbGRyZW5bZV0pO2Vsc2V7KG4ubm9kZVR5cGU9PU5vZGUuRE9DVU1FTlRfRlJBR01FTlRfTk9ERT9BcnJheS5mcm9tKG4uY2hpbGRyZW4pOltuXSkuZm9yRWFjaCgodD0+dC5zZXRBdHRyaWJ1dGUoInNsb3QiLCJpdGVtcyIpKSksdGhpcy5hcHBlbmRDaGlsZChuKX19X3JlbW92ZUl0ZW0odCxlKXtlLnBhcmVudE5vZGUmJmUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlKTtjb25zdCBuPXRoaXMuX2dldEl0ZW1LZXkodCk7dGhpcy5fbHJ1Q2FjaGVkSXRlbXMuc2V0KG4sZSksdGhpcy5fcmVuZGVyZWRUZW1wbGF0ZUluc3QuZ2V0KG4pLm5vdGlmeVBhdGgoImFjdGl2ZSIsITEpfV90cmltQ2FjaGUoKXtmb3IoO3RoaXMuX2xydUNhY2hlZEl0ZW1zLnNpemU+dGhpcy5fY2FjaGVTaXplOyl7Y29uc3RbdF09dGhpcy5fbHJ1Q2FjaGVkSXRlbXMua2V5cygpO3RoaXMuX2xydUNhY2hlZEl0ZW1zLmRlbGV0ZSh0KSx0aGlzLl9yZW5kZXJlZFRlbXBsYXRlSW5zdC5kZWxldGUodCl9fX10KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxUbC5wcm90b3R5cGUsImFzIix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxUbC5wcm90b3R5cGUsIml0ZW1zIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sVGwucHJvdG90eXBlLCJfY29udGVudEFjdGl2ZSIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sVGwucHJvdG90eXBlLCJfZG9tQm9vdHN0cmFwcGVkIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLFRsLnByb3RvdHlwZSwiX2N0b3IiLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheX0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLFRsLnByb3RvdHlwZSwiX3JlbmRlcmVkSXRlbXMiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sVGwucHJvdG90eXBlLCJfcmVuZGVyZWRUZW1wbGF0ZUluc3QiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sVGwucHJvdG90eXBlLCJfbHJ1Q2FjaGVkSXRlbXMiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sVGwucHJvdG90eXBlLCJfY2FjaGVTaXplIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLFRsLnByb3RvdHlwZSwiX2dldEl0ZW1LZXkiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLFRsLnByb3RvdHlwZSwiX2lzQ29ubmVjdGVkIix2b2lkIDApLHQoW2EoIl9pc0Nvbm5lY3RlZCIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sVGwucHJvdG90eXBlLCJfYm9vdHN0cmFwRG9tIixudWxsKSx0KFthKCJfY29udGVudEFjdGl2ZSIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sVGwucHJvdG90eXBlLCJfdXBkYXRlQWN0aXZlIixudWxsKSx0KFthKCJfcmVuZGVyZWRJdGVtcy4qIiwiX2RvbUJvb3RzdHJhcHBlZCIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtPYmplY3RdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sVGwucHJvdG90eXBlLCJfdXBkYXRlRG9tIixudWxsKSx0KFthKCJfY2FjaGVTaXplIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxUbC5wcm90b3R5cGUsIl90cmltQ2FjaGUiLG51bGwpO2xldCBDbD1jbGFzcyBleHRlbmRzIFRse2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLmRpc2FibGVQYWdpbmF0aW9uPSExLHRoaXMuZ2V0Q2F0ZWdvcnlJdGVtS2V5PXQ9PkpTT04uc3RyaW5naWZ5KHQpLHRoaXMuX2xpbWl0PTEyLHRoaXMuX2FjdGl2ZUluZGV4PTAsdGhpcy5fcGFnZUlucHV0UmF3VmFsdWU9IiIsdGhpcy5fcGFnZUlucHV0Rm9jdXNlZD0hMX1fY29tcHV0ZUNvdW50KCl7cmV0dXJuIHRoaXMuY2F0ZWdvcnkuaXRlbXMubGVuZ3RofWdldCBfaGFzTXVsdGlwbGUoKXtyZXR1cm4gdGhpcy5fY291bnQ+MX1fdG9nZ2xlUGFuZSgpe3RoaXMub3BlbmVkPSF0aGlzLm9wZW5lZH1fY2hhbmdlQ29udGVudEFjdGl2ZSh0KXt0aGlzLl9jb250ZW50QWN0aXZlPXR9X29uUGFuZVJlbmRlcmVkQ2hhbmdlZCh0LGUpe3QmJnQhPT1lJiZ0aGlzLiQuaWZSZW5kZXJlZC5yZW5kZXIoKX1fY29tcHV0ZVBhbmVSZW5kZXJlZCh0KXtyZXR1cm4hKHQubWV0YWRhdGEudHlwZT09PUFyLlNFQVJDSF9SRVNVTFRTJiYiIj09PXQubmFtZSl9Z2V0IF9pdGVtc1JlbmRlcmVkKCl7cmV0dXJuIHRoaXMuX3BhbmVSZW5kZXJlZCYmdGhpcy5vcGVuZWR9X2NvbXB1dGVJc1NlYXJjaFJlc3VsdHModCl7cmV0dXJuIHQ9PT1Bci5TRUFSQ0hfUkVTVUxUU31fY29tcHV0ZUlzSW52YWxpZFNlYXJjaFJlc3VsdHModCl7cmV0dXJuIHQudHlwZT09PUFyLlNFQVJDSF9SRVNVTFRTJiYhdC52YWxpZFJlZ2V4fV9jb21wdXRlSXNVbml2ZXJzYWxTZWFyY2hRdWVyeSh0KXtyZXR1cm4gdC50eXBlPT09QXIuU0VBUkNIX1JFU1VMVFMmJnQudW5pdmVyc2FsUmVnZXh9X2lzQ29tcG9zaXRlU2VhcmNoKCl7Y29uc3R7dHlwZTp0LGNvbXBvc2l0ZVNlYXJjaDplfT10aGlzLmNhdGVnb3J5Lm1ldGFkYXRhO3JldHVybiBlJiZ0PT09QXIuU0VBUkNIX1JFU1VMVFN9cmVhZHkoKXtzdXBlci5yZWFkeSgpLHRoaXMub3BlbmVkPW51bGw9PXRoaXMuaW5pdGlhbE9wZW5lZHx8dGhpcy5pbml0aWFsT3BlbmVkLHRoaXMuX2xpbWl0TGlzdGVuZXI9KCk9Pnt0aGlzLnNldCgiX2xpbWl0IixNbCgpKX0sd2wodGhpcy5fbGltaXRMaXN0ZW5lciksdGhpcy5fbGltaXRMaXN0ZW5lcigpfWRldGFjaGVkKCl7U2wodGhpcy5fbGltaXRMaXN0ZW5lcil9X3VwZGF0ZVJlbmRlcmVkSXRlbXMoKXt2YXIgdD10aGlzLl9saW1pdCxlPXRoaXMuZGlzYWJsZVBhZ2luYXRpb247aWYoIXRoaXMuX2l0ZW1zUmVuZGVyZWQpcmV0dXJuO2NvbnN0IG49TWF0aC5mbG9vcih0aGlzLl9hY3RpdmVJbmRleC90KSxpPXRoaXMuY2F0ZWdvcnkuaXRlbXN8fFtdLHI9ZT9pOmkuc2xpY2Uobip0LChuKzEpKnQpO3RoaXMudXBkYXRlRG9tKHIpfV9saW1pdENoYW5nZWQodCl7dGhpcy5zZXRDYWNoZVNpemUoMip0KX1fZ2V0Q2F0ZWdvcnlJdGVtS2V5Q2hhbmdlZCgpe3RoaXMuc2V0R2V0SXRlbUtleSh0aGlzLmdldENhdGVnb3J5SXRlbUtleSl9Z2V0IF9jdXJyZW50UGFnZSgpe3JldHVybiBNYXRoLmZsb29yKHRoaXMuX2FjdGl2ZUluZGV4L3RoaXMuX2xpbWl0KSsxfV9jb21wdXRlUGFnZUNvdW50KHQsZSl7cmV0dXJuIHRoaXMuY2F0ZWdvcnk/TWF0aC5jZWlsKHRoaXMuY2F0ZWdvcnkuaXRlbXMubGVuZ3RoL2UpOjB9Z2V0IF9tdWx0aXBsZVBhZ2VzRXhpc3QoKXtyZXR1cm4hdGhpcy5kaXNhYmxlUGFnaW5hdGlvbiYmdGhpcy5fcGFnZUNvdW50PjF9Z2V0IF9oYXNQcmV2aW91c1BhZ2UoKXtyZXR1cm4gdGhpcy5fY3VycmVudFBhZ2U+MX1nZXQgX2hhc05leHRQYWdlKCl7cmV0dXJuIHRoaXMuX2N1cnJlbnRQYWdlPHRoaXMuX3BhZ2VDb3VudH1fY29tcHV0ZUlucHV0V2lkdGgodCl7cmV0dXJuYGNhbGMoJHt0LnRvU3RyaW5nKCkubGVuZ3RofWVtICsgMjBweClgfV9zZXRBY3RpdmVJbmRleCh0KXtjb25zdCBlPSh0aGlzLmNhdGVnb3J5Lml0ZW1zfHxbXSkubGVuZ3RoLTE7dD5lJiYodD1lKSx0PDAmJih0PTApLHRoaXMuc2V0KCJfYWN0aXZlSW5kZXgiLHQpfV9jbGFtcEFjdGl2ZUluZGV4KCl7dGhpcy5fc2V0QWN0aXZlSW5kZXgodGhpcy5fYWN0aXZlSW5kZXgpfV9wZXJmb3JtUHJldmlvdXNQYWdlKCl7dGhpcy5fc2V0QWN0aXZlSW5kZXgodGhpcy5fYWN0aXZlSW5kZXgtdGhpcy5fbGltaXQpfV9wZXJmb3JtTmV4dFBhZ2UoKXt0aGlzLl9zZXRBY3RpdmVJbmRleCh0aGlzLl9hY3RpdmVJbmRleCt0aGlzLl9saW1pdCl9X2NvbXB1dGVQYWdlSW5wdXRWYWx1ZSh0LGUsbil7cmV0dXJuIHQ/ZTpuLnRvU3RyaW5nKCl9X2hhbmRsZVBhZ2VJbnB1dEV2ZW50KHQpe3RoaXMuc2V0KCJfcGFnZUlucHV0UmF3VmFsdWUiLHQudGFyZ2V0LnZhbHVlKTtjb25zdCBlPU51bWJlcih0LnRhcmdldC52YWx1ZXx8TmFOKTtpZihpc05hTihlKSlyZXR1cm47Y29uc3Qgbj1NYXRoLm1heCgxLE1hdGgubWluKGUsdGhpcy5fcGFnZUNvdW50KSktMTt0aGlzLl9zZXRBY3RpdmVJbmRleCh0aGlzLl9saW1pdCpuKX1faGFuZGxlUGFnZUNoYW5nZUV2ZW50KCl7dGhpcy5zZXQoIl9wYWdlSW5wdXRSYXdWYWx1ZSIsdGhpcy5fY3VycmVudFBhZ2UudG9TdHJpbmcoKSl9X2hhbmRsZVBhZ2VGb2N1c0V2ZW50KCl7dGhpcy5zZXQoIl9wYWdlSW5wdXRSYXdWYWx1ZSIsdGhpcy5fcGFnZUlucHV0VmFsdWUpLHRoaXMuc2V0KCJfcGFnZUlucHV0Rm9jdXNlZCIsITApfV9oYW5kbGVQYWdlQmx1ckV2ZW50KCl7dGhpcy5zZXQoIl9wYWdlSW5wdXRGb2N1c2VkIiwhMSl9X3VwZGF0ZVBhZ2VJbnB1dFZhbHVlKHQpe2NvbnN0IGU9dGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoIiNwYWdlLWlucHV0IGlucHV0Iik7ZSYmKGUudmFsdWU9dCl9X3VwZGF0ZUlucHV0V2lkdGgoKXt0aGlzLnVwZGF0ZVN0eWxlcyh7Ii0tdGYtY2F0ZWdvcnktcGFnaW5hdGVkLXZpZXctcGFnZS1pbnB1dC13aWR0aCI6dGhpcy5faW5wdXRXaWR0aH0pfX07Q2wudGVtcGxhdGU9eGVgCiAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX3BhbmVSZW5kZXJlZF1dIiBpZD0iaWZSZW5kZXJlZCI+CiAgICAgIDxidXR0b24gY2xhc3M9ImhlYWRpbmciIG9uLXRhcD0iX3RvZ2dsZVBhbmUiIG9wZW4tYnV0dG9uJD0iW1tvcGVuZWRdXSI+CiAgICAgICAgPHNwYW4gY2xhc3M9Im5hbWUiPgogICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19pc1NlYXJjaFJlc3VsdHNdXSI+CiAgICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfaXNDb21wb3NpdGVTZWFyY2goY2F0ZWdvcnkpXV0iPgogICAgICAgICAgICAgIDxzcGFuPlRhZ3MgbWF0Y2hpbmcgbXVsdGlwbGUgZXhwZXJpbWVudHM8L3NwYW4+CiAgICAgICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19pc0ludmFsaWRTZWFyY2hSZXN1bHRzXV0iPgogICAgICAgICAgICAgICAgPHNwYW4KICAgICAgICAgICAgICAgICAgPiZuYnNwOzxzdHJvbmc+KG1hbGZvcm1lZCByZWd1bGFyIGV4cHJlc3Npb24pPC9zdHJvbmc+PC9zcGFuCiAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbWyFfaXNDb21wb3NpdGVTZWFyY2goY2F0ZWdvcnkpXV0iPgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaWdodCI+VGFncyBtYXRjaGluZyAvPC9zcGFuPgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjYXRlZ29yeS1uYW1lIiB0aXRsZSQ9IltbY2F0ZWdvcnkubmFtZV1dIgogICAgICAgICAgICAgICAgPltbY2F0ZWdvcnkubmFtZV1dPC9zcGFuCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaWdodCI+Lzwvc3Bhbj4KICAgICAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2lzVW5pdmVyc2FsU2VhcmNoUXVlcnldXSI+CiAgICAgICAgICAgICAgICA8c3Bhbj4gKGFsbCB0YWdzKTwvc3Bhbj4KICAgICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfaXNJbnZhbGlkU2VhcmNoUmVzdWx0c11dIj4KICAgICAgICAgICAgICAgIDxzcGFuPiA8c3Ryb25nPihtYWxmb3JtZWQgcmVndWxhciBleHByZXNzaW9uKTwvc3Ryb25nPjwvc3Bhbj4KICAgICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1shX2lzU2VhcmNoUmVzdWx0c11dIj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNhdGVnb3J5LW5hbWUiIHRpdGxlJD0iW1tjYXRlZ29yeS5uYW1lXV0iCiAgICAgICAgICAgICAgPltbY2F0ZWdvcnkubmFtZV1dPC9zcGFuCiAgICAgICAgICAgID4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJjb3VudCI+CiAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2hhc011bHRpcGxlXV0iPgogICAgICAgICAgICA8c3Bhbj5bW19jb3VudF1dPC9zcGFuPgogICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgIDxpcm9uLWljb24gaWNvbj0iZXhwYW5kLW1vcmUiIGNsYXNzPSJleHBhbmQtYXJyb3ciPjwvaXJvbi1pY29uPgogICAgICAgIDwvc3Bhbj4KICAgICAgPC9idXR0b24+CiAgICAgIDwhLS0gVE9ETyhzdGVwaGFud2xlZSk6IGludmVzdGlnYXRlIGZ1cnRoZXIuIEZvciBzb21lIHJlYXNvbiwKICAgICAgICB0cmFuc2l0aW9uZW5kIHRoYXQgdGhlIGlyb24tY29sbGFwc2UgcmVsaWVzIG9uIHNvbWV0aW1lcyBkb2VzIG5vdAogICAgICAgIHRyaWdnZXIgd2hlbiByZW5kZXJpbmcgYSBjaGFydCB3aXRoIGEgc3Bpbm5lci4gQSB0b3kgZXhhbXBsZSBjYW5ub3QKICAgICAgICByZXByb2R1Y2UgdGhpcyBidWcuIC0tPgogICAgICA8aXJvbi1jb2xsYXBzZSBvcGVuZWQ9Iltbb3BlbmVkXV0iIG5vLWFuaW1hdGlvbj0iIj4KICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KICAgICAgICAgIDxzcGFuIGlkPSJ0b3Atb2YtY29udGFpbmVyIj48L3NwYW4+CiAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX211bHRpcGxlUGFnZXNFeGlzdF1dIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iYmlnLXBhZ2UtYnV0dG9ucyIgc3R5bGU9Im1hcmdpbi1ib3R0b206IDEwcHg7Ij4KICAgICAgICAgICAgICA8cGFwZXItYnV0dG9uCiAgICAgICAgICAgICAgICBvbi10YXA9Il9wZXJmb3JtUHJldmlvdXNQYWdlIgogICAgICAgICAgICAgICAgZGlzYWJsZWQkPSJbWyFfaGFzUHJldmlvdXNQYWdlXV0iCiAgICAgICAgICAgICAgICA+UHJldmlvdXMgcGFnZTwvcGFwZXItYnV0dG9uCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgIDxwYXBlci1idXR0b24KICAgICAgICAgICAgICAgIG9uLXRhcD0iX3BlcmZvcm1OZXh0UGFnZSIKICAgICAgICAgICAgICAgIGRpc2FibGVkJD0iW1shX2hhc05leHRQYWdlXV0iCiAgICAgICAgICAgICAgICA+TmV4dCBwYWdlPC9wYXBlci1idXR0b24KICAgICAgICAgICAgICA+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC90ZW1wbGF0ZT4KCiAgICAgICAgICA8ZGl2IGlkPSJpdGVtcyI+CiAgICAgICAgICAgIDxzbG90IG5hbWU9Iml0ZW1zIj48L3Nsb3Q+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfbXVsdGlwbGVQYWdlc0V4aXN0XV0iPgogICAgICAgICAgICA8ZGl2IGlkPSJjb250cm9scy1jb250YWluZXIiPgogICAgICAgICAgICAgIDxkaXYgc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jazsgcGFkZGluZzogMCA1cHgiPgogICAgICAgICAgICAgICAgUGFnZQogICAgICAgICAgICAgICAgPHBhcGVyLWlucHV0CiAgICAgICAgICAgICAgICAgIGlkPSJwYWdlLWlucHV0IgogICAgICAgICAgICAgICAgICB0eXBlPSJudW1iZXIiCiAgICAgICAgICAgICAgICAgIG5vLWxhYmVsLWZsb2F0PSIiCiAgICAgICAgICAgICAgICAgIG1pbj0iMSIKICAgICAgICAgICAgICAgICAgbWF4PSJbW19wYWdlQ291bnRdXSIKICAgICAgICAgICAgICAgICAgdmFsdWU9IltbX3BhZ2VJbnB1dFZhbHVlXV0iCiAgICAgICAgICAgICAgICAgIG9uLWlucHV0PSJfaGFuZGxlUGFnZUlucHV0RXZlbnQiCiAgICAgICAgICAgICAgICAgIG9uLWNoYW5nZT0iX2hhbmRsZVBhZ2VDaGFuZ2VFdmVudCIKICAgICAgICAgICAgICAgICAgb24tZm9jdXM9Il9oYW5kbGVQYWdlRm9jdXNFdmVudCIKICAgICAgICAgICAgICAgICAgb24tYmx1cj0iX2hhbmRsZVBhZ2VCbHVyRXZlbnQiCiAgICAgICAgICAgICAgICA+PC9wYXBlci1pbnB1dD4KICAgICAgICAgICAgICAgIG9mIFtbX3BhZ2VDb3VudF1dCiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0iYmlnLXBhZ2UtYnV0dG9ucyIgc3R5bGU9Im1hcmdpbi10b3A6IDEwcHg7Ij4KICAgICAgICAgICAgICA8cGFwZXItYnV0dG9uCiAgICAgICAgICAgICAgICBvbi10YXA9Il9wZXJmb3JtUHJldmlvdXNQYWdlIgogICAgICAgICAgICAgICAgZGlzYWJsZWQkPSJbWyFfaGFzUHJldmlvdXNQYWdlXV0iCiAgICAgICAgICAgICAgICA+UHJldmlvdXMgcGFnZTwvcGFwZXItYnV0dG9uCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgIDxwYXBlci1idXR0b24KICAgICAgICAgICAgICAgIG9uLXRhcD0iX3BlcmZvcm1OZXh0UGFnZSIKICAgICAgICAgICAgICAgIGRpc2FibGVkJD0iW1shX2hhc05leHRQYWdlXV0iCiAgICAgICAgICAgICAgICA+TmV4dCBwYWdlPC9wYXBlci1idXR0b24KICAgICAgICAgICAgICA+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8L2Rpdj4KICAgICAgPC9pcm9uLWNvbGxhcHNlPgogICAgPC90ZW1wbGF0ZT4KICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIG1hcmdpbjogMCA1cHggMXB4IDEwcHg7CiAgICAgIH0KCiAgICAgIDpob3N0KDpmaXJzdC1vZi10eXBlKSB7CiAgICAgICAgbWFyZ2luLXRvcDogMTBweDsKICAgICAgfQoKICAgICAgOmhvc3QoOmxhc3Qtb2YtdHlwZSkgewogICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgICAgIH0KCiAgICAgIC5oZWFkaW5nIHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wcmltYXJ5LWJhY2tncm91bmQtY29sb3IpOwogICAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgICBjb2xvcjogaW5oZXJpdDsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgZm9udC1zaXplOiAxNXB4OwogICAgICAgIGxpbmUtaGVpZ2h0OiAxOwogICAgICAgIGJveC1zaGFkb3c6IDAgMXB4IDVweCB2YXIoLS10Yi1yYWlzZWQtYnV0dG9uLXNoYWRvdy1jb2xvcik7CiAgICAgICAgcGFkZGluZzogMTBweCAxNXB4OwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAgIH0KCiAgICAgIC5oZWFkaW5nOjotbW96LWZvY3VzLWlubmVyIHsKICAgICAgICBwYWRkaW5nOiAxMHB4IDE1cHg7CiAgICAgIH0KCiAgICAgIFtvcGVuLWJ1dHRvbl0gewogICAgICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDAgIWltcG9ydGFudDsKICAgICAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMCAhaW1wb3J0YW50OwogICAgICB9CgogICAgICBbb3Blbi1idXR0b25dIC5leHBhbmQtYXJyb3cgewogICAgICAgIHRyYW5zZm9ybTogcm90YXRlWigxODBkZWcpOwogICAgICB9CgogICAgICAubmFtZSB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgfQoKICAgICAgLmxpZ2h0IHsKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItZ3JleS01MDApOwogICAgICB9CgogICAgICAuY2F0ZWdvcnktbmFtZSB7CiAgICAgICAgd2hpdGUtc3BhY2U6IHByZTsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwogICAgICAgIHBhZGRpbmc6IDJweCAwOwogICAgICB9CgogICAgICAuY291bnQgewogICAgICAgIG1hcmdpbjogMCA1cHg7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci1ncmV5LTUwMCk7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGZsZXg6IG5vbmU7CiAgICAgIH0KCiAgICAgIC5oZWFkaW5nOjotbW96LWZvY3VzLWlubmVyIHsKICAgICAgICBwYWRkaW5nOiAxMHB4IDE1cHg7CiAgICAgIH0KCiAgICAgIC5jb250ZW50IHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcHJpbWFyeS1iYWNrZ3JvdW5kLWNvbG9yKTsKICAgICAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAycHg7CiAgICAgICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDJweDsKICAgICAgICBib3JkZXItdG9wOiBub25lOwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZWRlZGU7CiAgICAgICAgcGFkZGluZzogMTVweDsKICAgICAgfQoKICAgICAgLmxpZ2h0IHsKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItZ3JleS01MDApOwogICAgICB9CgogICAgICAjY29udHJvbHMtY29udGFpbmVyIHsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAgICAgZmxleC1ncm93OiAwOwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICB9CgogICAgICAjY29udHJvbHMtY29udGFpbmVyIHBhcGVyLWJ1dHRvbiB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICB9CgogICAgICAuYmlnLXBhZ2UtYnV0dG9ucyB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgfQoKICAgICAgLmJpZy1wYWdlLWJ1dHRvbnMgcGFwZXItYnV0dG9uIHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10Yi11aS1saWdodC1hY2NlbnQpOwogICAgICAgIGNvbG9yOiB2YXIoLS10Yi11aS1kYXJrLWFjY2VudCk7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIGZsZXgtYmFzaXM6IDA7CiAgICAgICAgZmxleC1ncm93OiAxOwogICAgICAgIGZsZXgtc2hyaW5rOiAxOwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgfQoKICAgICAgLmJpZy1wYWdlLWJ1dHRvbnMgcGFwZXItYnV0dG9uW2Rpc2FibGVkXSB7CiAgICAgICAgYmFja2dyb3VuZDogbm9uZTsKICAgICAgfQoKICAgICAgc2xvdCB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93OwogICAgICAgIGZsZXgtd3JhcDogd3JhcDsKICAgICAgfQoKICAgICAgOjpzbG90dGVkKFtzbG90PSdpdGVtcyddKSB7CiAgICAgICAgLyogVG9vbHRpcCBmb3IgZGVzY3JpcHRpb25zIGFuZCBvdGhlcnMgYnJlYWsgd2l0aCBtb3JlIHN0cmljdCBvbmVzLiAqLwogICAgICAgIGNvbnRhaW46IHN0eWxlOwogICAgICB9CgogICAgICAjcGFnZS1pbnB1dCB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIHdpZHRoOiB2YXIoLS10Zi1jYXRlZ29yeS1wYWdpbmF0ZWQtdmlldy1wYWdlLWlucHV0LXdpZHRoLCAxMDAlKTsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLENsLnByb3RvdHlwZSwiY2F0ZWdvcnkiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxDbC5wcm90b3R5cGUsImluaXRpYWxPcGVuZWQiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFuLG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sQ2wucHJvdG90eXBlLCJvcGVuZWQiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxDbC5wcm90b3R5cGUsImRpc2FibGVQYWdpbmF0aW9uIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyLGNvbXB1dGVkOiJfY29tcHV0ZUNvdW50KGNhdGVnb3J5Lml0ZW1zLiopIn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxDbC5wcm90b3R5cGUsIl9jb3VudCIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW4sY29tcHV0ZWQ6Il9jb21wdXRlUGFuZVJlbmRlcmVkKGNhdGVnb3J5KSIsb2JzZXJ2ZXI6Il9vblBhbmVSZW5kZXJlZENoYW5nZWQifSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxDbC5wcm90b3R5cGUsIl9wYW5lUmVuZGVyZWQiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFuLGNvbXB1dGVkOiJfY29tcHV0ZUlzU2VhcmNoUmVzdWx0cyhjYXRlZ29yeS5tZXRhZGF0YS50eXBlKSJ9KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLENsLnByb3RvdHlwZSwiX2lzU2VhcmNoUmVzdWx0cyIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW4sY29tcHV0ZWQ6Il9jb21wdXRlSXNJbnZhbGlkU2VhcmNoUmVzdWx0cyhjYXRlZ29yeS5tZXRhZGF0YSkifSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxDbC5wcm90b3R5cGUsIl9pc0ludmFsaWRTZWFyY2hSZXN1bHRzIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbixjb21wdXRlZDoiX2NvbXB1dGVJc1VuaXZlcnNhbFNlYXJjaFF1ZXJ5KGNhdGVnb3J5Lm1ldGFkYXRhKSJ9KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLENsLnByb3RvdHlwZSwiX2lzVW5pdmVyc2FsU2VhcmNoUXVlcnkiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3Qsb2JzZXJ2ZXI6Il9nZXRDYXRlZ29yeUl0ZW1LZXlDaGFuZ2VkIn0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxDbC5wcm90b3R5cGUsImdldENhdGVnb3J5SXRlbUtleSIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcixvYnNlcnZlcjoiX2xpbWl0Q2hhbmdlZCJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sQ2wucHJvdG90eXBlLCJfbGltaXQiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sQ2wucHJvdG90eXBlLCJfYWN0aXZlSW5kZXgiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXIsY29tcHV0ZWQ6Il9jb21wdXRlUGFnZUNvdW50KGNhdGVnb3J5Lml0ZW1zLiosIF9saW1pdCkifSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLENsLnByb3RvdHlwZSwiX3BhZ2VDb3VudCIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZyxjb21wdXRlZDoiX2NvbXB1dGVJbnB1dFdpZHRoKF9wYWdlQ291bnQpIixvYnNlcnZlcjoiX3VwZGF0ZUlucHV0V2lkdGgifSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLENsLnByb3RvdHlwZSwiX2lucHV0V2lkdGgiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmcsY29tcHV0ZWQ6Il9jb21wdXRlUGFnZUlucHV0VmFsdWUoX3BhZ2VJbnB1dEZvY3VzZWQsIF9wYWdlSW5wdXRSYXdWYWx1ZSwgX2N1cnJlbnRQYWdlKSIsb2JzZXJ2ZXI6Il91cGRhdGVQYWdlSW5wdXRWYWx1ZSJ9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sQ2wucHJvdG90eXBlLCJfcGFnZUlucHV0VmFsdWUiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sQ2wucHJvdG90eXBlLCJfcGFnZUlucHV0UmF3VmFsdWUiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxDbC5wcm90b3R5cGUsIl9wYWdlSW5wdXRGb2N1c2VkIix2b2lkIDApLHQoW3MoIl9jb3VudCIpLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxDbC5wcm90b3R5cGUsIl9oYXNNdWx0aXBsZSIsbnVsbCksdChbYSgib3BlbmVkIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW0Jvb2xlYW5dKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sQ2wucHJvdG90eXBlLCJfY2hhbmdlQ29udGVudEFjdGl2ZSIsbnVsbCksdChbcygib3BlbmVkIiwiX3BhbmVSZW5kZXJlZCIpLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxDbC5wcm90b3R5cGUsIl9pdGVtc1JlbmRlcmVkIixudWxsKSx0KFthKCJfaXRlbXNSZW5kZXJlZCIsImNhdGVnb3J5Lml0ZW1zLioiLCJfbGltaXQiLCJfYWN0aXZlSW5kZXgiLCJfcGFnZUNvdW50IiwiZGlzYWJsZVBhZ2luYXRpb24iKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLENsLnByb3RvdHlwZSwiX3VwZGF0ZVJlbmRlcmVkSXRlbXMiLG51bGwpLHQoW3MoIl9saW1pdCIsIl9hY3RpdmVJbmRleCIpLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLENsLnByb3RvdHlwZSwiX2N1cnJlbnRQYWdlIixudWxsKSx0KFtzKCJfcGFnZUNvdW50IiwiZGlzYWJsZVBhZ2luYXRpb24iKSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sQ2wucHJvdG90eXBlLCJfbXVsdGlwbGVQYWdlc0V4aXN0IixudWxsKSx0KFtzKCJfY3VycmVudFBhZ2UiKSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sQ2wucHJvdG90eXBlLCJfaGFzUHJldmlvdXNQYWdlIixudWxsKSx0KFtzKCJfY3VycmVudFBhZ2UiLCJfcGFnZUNvdW50IiksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLENsLnByb3RvdHlwZSwiX2hhc05leHRQYWdlIixudWxsKSx0KFthKCJjYXRlZ29yeS5pdGVtcy4qIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxDbC5wcm90b3R5cGUsIl9jbGFtcEFjdGl2ZUluZGV4IixudWxsKSxDbD10KFtpKCJ0Zi1jYXRlZ29yeS1wYWdpbmF0ZWQtdmlldyIpXSxDbCk7Y2xhc3MgQWx7Y29uc3RydWN0b3IodCl7dGhpcy5saXN0ZW5lcj10fX1jbGFzcyBrbHtjb25zdHJ1Y3Rvcigpe3RoaXMucmVxdWVzdE1hbmFnZXI9bmV3IGJyKDEpLHRoaXMuX2xpc3RlbmVycz1uZXcgU2V0LHRoaXMuaW5pdGlhbGl6ZWQ9ITF9cmVmcmVzaCgpe3JldHVybiB0aGlzLmxvYWQoKS50aGVuKCgoKT0+e3RoaXMuaW5pdGlhbGl6ZWQ9ITB9KSl9YWRkTGlzdGVuZXIodCl7Y29uc3QgZT1uZXcgQWwodCk7cmV0dXJuIHRoaXMuX2xpc3RlbmVycy5hZGQoZSksZX1yZW1vdmVMaXN0ZW5lckJ5S2V5KHQpe3RoaXMuX2xpc3RlbmVycy5kZWxldGUodCl9ZW1pdENoYW5nZSgpe3RoaXMuX2xpc3RlbmVycy5mb3JFYWNoKCh0PT57dHJ5e3QubGlzdGVuZXIoKX1jYXRjaCh0KXt9fSkpfX1jbGFzcyBMbCBleHRlbmRzIGtse2xvYWQoKXtjb25zdCB0PUVyKCkuZW52aXJvbm1lbnQoKTtyZXR1cm4gdGhpcy5yZXF1ZXN0TWFuYWdlci5yZXF1ZXN0KHQpLnRoZW4oKHQ9Pntjb25zdCBlPXtkYXRhTG9jYXRpb246dC5kYXRhX2xvY2F0aW9uLHdpbmRvd1RpdGxlOnQud2luZG93X3RpdGxlfTt2b2lkIDAhPT10LmV4cGVyaW1lbnRfbmFtZSYmKGUuZXhwZXJpbWVudE5hbWU9dC5leHBlcmltZW50X25hbWUpLHZvaWQgMCE9PXQuZXhwZXJpbWVudF9kZXNjcmlwdGlvbiYmKGUuZXhwZXJpbWVudERlc2NyaXB0aW9uPXQuZXhwZXJpbWVudF9kZXNjcmlwdGlvbiksdm9pZCAwIT09dC5jcmVhdGlvbl90aW1lJiYoZS5jcmVhdGlvblRpbWU9dC5jcmVhdGlvbl90aW1lKSxDZS5leHBvcnRzLmlzRXF1YWwodGhpcy5lbnZpcm9ubWVudCxlKXx8KHRoaXMuZW52aXJvbm1lbnQ9ZSx0aGlzLmVtaXRDaGFuZ2UoKSl9KSl9Z2V0RGF0YUxvY2F0aW9uKCl7cmV0dXJuIHRoaXMuZW52aXJvbm1lbnQ/dGhpcy5lbnZpcm9ubWVudC5kYXRhTG9jYXRpb246IiJ9Z2V0V2luZG93VGl0bGUoKXtyZXR1cm4gdGhpcy5lbnZpcm9ubWVudD90aGlzLmVudmlyb25tZW50LndpbmRvd1RpdGxlOiIifWdldEV4cGVyaW1lbnROYW1lKCl7cmV0dXJuIHRoaXMuZW52aXJvbm1lbnQ/dGhpcy5lbnZpcm9ubWVudC5leHBlcmltZW50TmFtZToiIn1nZXRFeHBlcmltZW50RGVzY3JpcHRpb24oKXtyZXR1cm4gdGhpcy5lbnZpcm9ubWVudD90aGlzLmVudmlyb25tZW50LmV4cGVyaW1lbnREZXNjcmlwdGlvbjoiIn1nZXRDcmVhdGlvblRpbWUoKXtyZXR1cm4gdGhpcy5lbnZpcm9ubWVudD90aGlzLmVudmlyb25tZW50LmNyZWF0aW9uVGltZTpudWxsfX1jb25zdCBQbD1uZXcgTGw7Y2xhc3MgTmwgZXh0ZW5kcyBrbHtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5fcnVucz1bXX1sb2FkKCl7Y29uc3QgdD1FcigpLnJ1bnMoKTtyZXR1cm4gdGhpcy5yZXF1ZXN0TWFuYWdlci5yZXF1ZXN0KHQpLnRoZW4oKHQ9PntDZS5leHBvcnRzLmlzRXF1YWwodGhpcy5fcnVucyx0KXx8KHRoaXMuX3J1bnM9dCx0aGlzLmVtaXRDaGFuZ2UoKSl9KSl9Z2V0UnVucygpe3JldHVybiB0aGlzLl9ydW5zLnNsaWNlKCl9fWNvbnN0IElsPW5ldyBObDtmdW5jdGlvbiBSbCh0LGUpe3JldHVybiB0PGU/LTE6dD5lPzE6dD49ZT8wOk5hTn1mdW5jdGlvbiBPbCh0KXtyZXR1cm4gMT09PXQubGVuZ3RoJiYodD0oZnVuY3Rpb24gZSh0KXtyZXR1cm4gZnVuY3Rpb24oZSxuKXtyZXR1cm4gUmwodChlKSxuKX19KSh0KSkse2xlZnQ6ZnVuY3Rpb24oZSxuLGkscil7Zm9yKG51bGw9PWkmJihpPTApLG51bGw9PXImJihyPWUubGVuZ3RoKTtpPHI7KXt2YXIgbz1pK3I+Pj4xO3QoZVtvXSxuKTwwP2k9bysxOnI9b31yZXR1cm4gaX0scmlnaHQ6ZnVuY3Rpb24oZSxuLGkscil7Zm9yKG51bGw9PWkmJihpPTApLG51bGw9PXImJihyPWUubGVuZ3RoKTtpPHI7KXt2YXIgbz1pK3I+Pj4xO3QoZVtvXSxuKT4wP3I9bzppPW8rMX1yZXR1cm4gaX19fXZhciB6bD1PbChSbCksRGw9emwucmlnaHQsQmw9emwubGVmdDtmdW5jdGlvbiBIbCh0LGUpe3JldHVyblt0LGVdfWZ1bmN0aW9uIEZsKHQsZSxuKXt2YXIgaSxyLG8sYSxzPXQubGVuZ3RoLGw9ZS5sZW5ndGgsYz1uZXcgQXJyYXkocypsKTtmb3IobnVsbD09biYmKG49SGwpLGk9bz0wO2k8czsrK2kpZm9yKGE9dFtpXSxyPTA7cjxsOysrciwrK28pY1tvXT1uKGEsZVtyXSk7cmV0dXJuIGN9ZnVuY3Rpb24gVmwodCl7cmV0dXJuIG51bGw9PT10P05hTjordH1mdW5jdGlvbiBVbCh0LGUpe3ZhciBuLGkscj10Lmxlbmd0aCxvPTAsYT0tMSxzPTAsbD0wO2lmKG51bGw9PWUpZm9yKDsrK2E8cjspaXNOYU4obj1WbCh0W2FdKSl8fChsKz0oaT1uLXMpKihuLShzKz1pLysrbykpKTtlbHNlIGZvcig7KythPHI7KWlzTmFOKG49VmwoZSh0W2FdLGEsdCkpKXx8KGwrPShpPW4tcykqKG4tKHMrPWkvKytvKSkpO2lmKG8+MSlyZXR1cm4gbC8oby0xKX1mdW5jdGlvbiBqbCh0LGUpe3ZhciBuPVVsKHQsZSk7cmV0dXJuIG4/TWF0aC5zcXJ0KG4pOm59ZnVuY3Rpb24gR2wodCxlKXt2YXIgbixpLHIsbz10Lmxlbmd0aCxhPS0xO2lmKG51bGw9PWUpe2Zvcig7KythPG87KWlmKG51bGwhPShuPXRbYV0pJiZuPj1uKWZvcihpPXI9bjsrK2E8bzspbnVsbCE9KG49dFthXSkmJihpPm4mJihpPW4pLHI8biYmKHI9bikpfWVsc2UgZm9yKDsrK2E8bzspaWYobnVsbCE9KG49ZSh0W2FdLGEsdCkpJiZuPj1uKWZvcihpPXI9bjsrK2E8bzspbnVsbCE9KG49ZSh0W2FdLGEsdCkpJiYoaT5uJiYoaT1uKSxyPG4mJihyPW4pKTtyZXR1cm5baSxyXX12YXIgV2w9QXJyYXkucHJvdG90eXBlLHFsPVdsLnNsaWNlLFlsPVdsLm1hcDtmdW5jdGlvbiBYbCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gJGwodCl7cmV0dXJuIHR9ZnVuY3Rpb24gS2wodCxlLG4pe3Q9K3QsZT0rZSxuPShyPWFyZ3VtZW50cy5sZW5ndGgpPDI/KGU9dCx0PTAsMSk6cjwzPzE6K247Zm9yKHZhciBpPS0xLHI9MHxNYXRoLm1heCgwLE1hdGguY2VpbCgoZS10KS9uKSksbz1uZXcgQXJyYXkocik7KytpPHI7KW9baV09dCtpKm47cmV0dXJuIG99dmFyIFpsPU1hdGguc3FydCg1MCksSmw9TWF0aC5zcXJ0KDEwKSxRbD1NYXRoLnNxcnQoMik7ZnVuY3Rpb24gdGModCxlLG4pe3ZhciBpLHIsbyxhLHM9LTE7aWYobj0rbiwodD0rdCk9PT0oZT0rZSkmJm4+MClyZXR1cm5bdF07aWYoKGk9ZTx0KSYmKHI9dCx0PWUsZT1yKSwwPT09KGE9ZWModCxlLG4pKXx8IWlzRmluaXRlKGEpKXJldHVybltdO2lmKGE+MClmb3IodD1NYXRoLmNlaWwodC9hKSxlPU1hdGguZmxvb3IoZS9hKSxvPW5ldyBBcnJheShyPU1hdGguY2VpbChlLXQrMSkpOysrczxyOylvW3NdPSh0K3MpKmE7ZWxzZSBmb3IodD1NYXRoLmZsb29yKHQqYSksZT1NYXRoLmNlaWwoZSphKSxvPW5ldyBBcnJheShyPU1hdGguY2VpbCh0LWUrMSkpOysrczxyOylvW3NdPSh0LXMpL2E7cmV0dXJuIGkmJm8ucmV2ZXJzZSgpLG99ZnVuY3Rpb24gZWModCxlLG4pe3ZhciBpPShlLXQpL01hdGgubWF4KDAsbikscj1NYXRoLmZsb29yKE1hdGgubG9nKGkpL01hdGguTE4xMCksbz1pL01hdGgucG93KDEwLHIpO3JldHVybiByPj0wPyhvPj1abD8xMDpvPj1KbD81Om8+PVFsPzI6MSkqTWF0aC5wb3coMTAscik6LU1hdGgucG93KDEwLC1yKS8obz49Wmw/MTA6bz49Smw/NTpvPj1RbD8yOjEpfWZ1bmN0aW9uIG5jKHQsZSxuKXt2YXIgaT1NYXRoLmFicyhlLXQpL01hdGgubWF4KDAsbikscj1NYXRoLnBvdygxMCxNYXRoLmZsb29yKE1hdGgubG9nKGkpL01hdGguTE4xMCkpLG89aS9yO3JldHVybiBvPj1abD9yKj0xMDpvPj1KbD9yKj01Om8+PVFsJiYocio9MiksZTx0Py1yOnJ9ZnVuY3Rpb24gaWModCl7cmV0dXJuIE1hdGguY2VpbChNYXRoLmxvZyh0Lmxlbmd0aCkvTWF0aC5MTjIpKzF9ZnVuY3Rpb24gcmModCxlLG4pe2lmKG51bGw9PW4mJihuPVZsKSxpPXQubGVuZ3RoKXtpZigoZT0rZSk8PTB8fGk8MilyZXR1cm4rbih0WzBdLDAsdCk7aWYoZT49MSlyZXR1cm4rbih0W2ktMV0saS0xLHQpO3ZhciBpLHI9KGktMSkqZSxvPU1hdGguZmxvb3IociksYT0rbih0W29dLG8sdCk7cmV0dXJuIGErKCtuKHRbbysxXSxvKzEsdCktYSkqKHItbyl9fWZ1bmN0aW9uIG9jKHQsZSl7dmFyIG4saSxyPXQubGVuZ3RoLG89LTE7aWYobnVsbD09ZSl7Zm9yKDsrK288cjspaWYobnVsbCE9KG49dFtvXSkmJm4+PW4pZm9yKGk9bjsrK288cjspbnVsbCE9KG49dFtvXSkmJm4+aSYmKGk9bil9ZWxzZSBmb3IoOysrbzxyOylpZihudWxsIT0obj1lKHRbb10sbyx0KSkmJm4+PW4pZm9yKGk9bjsrK288cjspbnVsbCE9KG49ZSh0W29dLG8sdCkpJiZuPmkmJihpPW4pO3JldHVybiBpfWZ1bmN0aW9uIGFjKHQpe2Zvcih2YXIgZSxuLGkscj10Lmxlbmd0aCxvPS0xLGE9MDsrK288cjspYSs9dFtvXS5sZW5ndGg7Zm9yKG49bmV3IEFycmF5KGEpOy0tcj49MDspZm9yKGU9KGk9dFtyXSkubGVuZ3RoOy0tZT49MDspblstLWFdPWlbZV07cmV0dXJuIG59ZnVuY3Rpb24gc2ModCxlKXt2YXIgbixpLHI9dC5sZW5ndGgsbz0tMTtpZihudWxsPT1lKXtmb3IoOysrbzxyOylpZihudWxsIT0obj10W29dKSYmbj49bilmb3IoaT1uOysrbzxyOyludWxsIT0obj10W29dKSYmaT5uJiYoaT1uKX1lbHNlIGZvcig7KytvPHI7KWlmKG51bGwhPShuPWUodFtvXSxvLHQpKSYmbj49bilmb3IoaT1uOysrbzxyOyludWxsIT0obj1lKHRbb10sbyx0KSkmJmk+biYmKGk9bik7cmV0dXJuIGl9ZnVuY3Rpb24gbGModCl7aWYoIShyPXQubGVuZ3RoKSlyZXR1cm5bXTtmb3IodmFyIGU9LTEsbj1zYyh0LGNjKSxpPW5ldyBBcnJheShuKTsrK2U8bjspZm9yKHZhciByLG89LTEsYT1pW2VdPW5ldyBBcnJheShyKTsrK288cjspYVtvXT10W29dW2VdO3JldHVybiBpfWZ1bmN0aW9uIGNjKHQpe3JldHVybiB0Lmxlbmd0aH12YXIgdWM9QXJyYXkucHJvdG90eXBlLnNsaWNlO2Z1bmN0aW9uIGhjKHQpe3JldHVybiB0fXZhciBkYz0xZS02O2Z1bmN0aW9uIHBjKHQpe3JldHVybiJ0cmFuc2xhdGUoIisodCsuNSkrIiwwKSJ9ZnVuY3Rpb24gZmModCl7cmV0dXJuInRyYW5zbGF0ZSgwLCIrKHQrLjUpKyIpIn1mdW5jdGlvbiBtYyh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuK3QoZSl9fWZ1bmN0aW9uIGdjKHQpe3ZhciBlPU1hdGgubWF4KDAsdC5iYW5kd2lkdGgoKS0xKS8yO3JldHVybiB0LnJvdW5kKCkmJihlPU1hdGgucm91bmQoZSkpLGZ1bmN0aW9uKG4pe3JldHVybit0KG4pK2V9fWZ1bmN0aW9uIF9jKCl7cmV0dXJuIXRoaXMuX19heGlzfWZ1bmN0aW9uIHljKHQsZSl7dmFyIG49W10saT1udWxsLHI9bnVsbCxvPTYsYT02LHM9MyxsPTE9PT10fHw0PT09dD8tMToxLGM9ND09PXR8fDI9PT10PyJ4IjoieSIsdT0xPT09dHx8Mz09PXQ/cGM6ZmM7ZnVuY3Rpb24gaChoKXt2YXIgZD1udWxsPT1pP2UudGlja3M/ZS50aWNrcy5hcHBseShlLG4pOmUuZG9tYWluKCk6aSxwPW51bGw9PXI/ZS50aWNrRm9ybWF0P2UudGlja0Zvcm1hdC5hcHBseShlLG4pOmhjOnIsZj1NYXRoLm1heChvLDApK3MsbT1lLnJhbmdlKCksZz0rbVswXSsuNSxfPSttW20ubGVuZ3RoLTFdKy41LHk9KGUuYmFuZHdpZHRoP2djOm1jKShlLmNvcHkoKSksdj1oLnNlbGVjdGlvbj9oLnNlbGVjdGlvbigpOmgsYj12LnNlbGVjdEFsbCgiLmRvbWFpbiIpLmRhdGEoW251bGxdKSx4PXYuc2VsZWN0QWxsKCIudGljayIpLmRhdGEoZCxlKS5vcmRlcigpLHc9eC5leGl0KCksUz14LmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJ0aWNrIiksTT14LnNlbGVjdCgibGluZSIpLEU9eC5zZWxlY3QoInRleHQiKTtiPWIubWVyZ2UoYi5lbnRlcigpLmluc2VydCgicGF0aCIsIi50aWNrIikuYXR0cigiY2xhc3MiLCJkb21haW4iKS5hdHRyKCJzdHJva2UiLCJjdXJyZW50Q29sb3IiKSkseD14Lm1lcmdlKFMpLE09TS5tZXJnZShTLmFwcGVuZCgibGluZSIpLmF0dHIoInN0cm9rZSIsImN1cnJlbnRDb2xvciIpLmF0dHIoYysiMiIsbCpvKSksRT1FLm1lcmdlKFMuYXBwZW5kKCJ0ZXh0IikuYXR0cigiZmlsbCIsImN1cnJlbnRDb2xvciIpLmF0dHIoYyxsKmYpLmF0dHIoImR5IiwxPT09dD8iMGVtIjozPT09dD8iMC43MWVtIjoiMC4zMmVtIikpLGghPT12JiYoYj1iLnRyYW5zaXRpb24oaCkseD14LnRyYW5zaXRpb24oaCksTT1NLnRyYW5zaXRpb24oaCksRT1FLnRyYW5zaXRpb24oaCksdz13LnRyYW5zaXRpb24oaCkuYXR0cigib3BhY2l0eSIsZGMpLmF0dHIoInRyYW5zZm9ybSIsKGZ1bmN0aW9uKHQpe3JldHVybiBpc0Zpbml0ZSh0PXkodCkpP3UodCk6dGhpcy5nZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIpfSkpLFMuYXR0cigib3BhY2l0eSIsZGMpLmF0dHIoInRyYW5zZm9ybSIsKGZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMucGFyZW50Tm9kZS5fX2F4aXM7cmV0dXJuIHUoZSYmaXNGaW5pdGUoZT1lKHQpKT9lOnkodCkpfSkpKSx3LnJlbW92ZSgpLGIuYXR0cigiZCIsND09PXR8fDI9PXQ/YT8iTSIrbCphKyIsIitnKyJIMC41ViIrXysiSCIrbCphOiJNMC41LCIrZysiViIrXzphPyJNIitnKyIsIitsKmErIlYwLjVIIitfKyJWIitsKmE6Ik0iK2crIiwwLjVIIitfKSx4LmF0dHIoIm9wYWNpdHkiLDEpLmF0dHIoInRyYW5zZm9ybSIsKGZ1bmN0aW9uKHQpe3JldHVybiB1KHkodCkpfSkpLE0uYXR0cihjKyIyIixsKm8pLEUuYXR0cihjLGwqZikudGV4dChwKSx2LmZpbHRlcihfYykuYXR0cigiZmlsbCIsIm5vbmUiKS5hdHRyKCJmb250LXNpemUiLDEwKS5hdHRyKCJmb250LWZhbWlseSIsInNhbnMtc2VyaWYiKS5hdHRyKCJ0ZXh0LWFuY2hvciIsMj09PXQ/InN0YXJ0Ijo0PT09dD8iZW5kIjoibWlkZGxlIiksdi5lYWNoKChmdW5jdGlvbigpe3RoaXMuX19heGlzPXl9KSl9cmV0dXJuIGguc2NhbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dCxoKTplfSxoLnRpY2tzPWZ1bmN0aW9uKCl7cmV0dXJuIG49dWMuY2FsbChhcmd1bWVudHMpLGh9LGgudGlja0FyZ3VtZW50cz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1udWxsPT10P1tdOnVjLmNhbGwodCksaCk6bi5zbGljZSgpfSxoLnRpY2tWYWx1ZXM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9bnVsbD09dD9udWxsOnVjLmNhbGwodCksaCk6aSYmaS5zbGljZSgpfSxoLnRpY2tGb3JtYXQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9dCxoKTpyfSxoLnRpY2tTaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPWE9K3QsaCk6b30saC50aWNrU2l6ZUlubmVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPSt0LGgpOm99LGgudGlja1NpemVPdXRlcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0rdCxoKTphfSxoLnRpY2tQYWRkaW5nPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPSt0LGgpOnN9LGh9ZnVuY3Rpb24gdmModCl7cmV0dXJuIHljKDMsdCl9ZnVuY3Rpb24gYmModCl7cmV0dXJuIHljKDQsdCl9dmFyIHhjPXt2YWx1ZTpmdW5jdGlvbigpe319O2Z1bmN0aW9uIHdjKCl7Zm9yKHZhciB0LGU9MCxuPWFyZ3VtZW50cy5sZW5ndGgsaT17fTtlPG47KytlKXtpZighKHQ9YXJndW1lbnRzW2VdKyIiKXx8dCBpbiBpfHwvW1xzLl0vLnRlc3QodCkpdGhyb3cgbmV3IEVycm9yKCJpbGxlZ2FsIHR5cGU6ICIrdCk7aVt0XT1bXX1yZXR1cm4gbmV3IFNjKGkpfWZ1bmN0aW9uIFNjKHQpe3RoaXMuXz10fWZ1bmN0aW9uIE1jKHQsZSl7cmV0dXJuIHQudHJpbSgpLnNwbGl0KC9efFxzKy8pLm1hcCgoZnVuY3Rpb24odCl7dmFyIG49IiIsaT10LmluZGV4T2YoIi4iKTtpZihpPj0wJiYobj10LnNsaWNlKGkrMSksdD10LnNsaWNlKDAsaSkpLHQmJiFlLmhhc093blByb3BlcnR5KHQpKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0eXBlOiAiK3QpO3JldHVybnt0eXBlOnQsbmFtZTpufX0pKX1mdW5jdGlvbiBFYyh0LGUpe2Zvcih2YXIgbixpPTAscj10Lmxlbmd0aDtpPHI7KytpKWlmKChuPXRbaV0pLm5hbWU9PT1lKXJldHVybiBuLnZhbHVlfWZ1bmN0aW9uIFRjKHQsZSxuKXtmb3IodmFyIGk9MCxyPXQubGVuZ3RoO2k8cjsrK2kpaWYodFtpXS5uYW1lPT09ZSl7dFtpXT14Yyx0PXQuc2xpY2UoMCxpKS5jb25jYXQodC5zbGljZShpKzEpKTticmVha31yZXR1cm4gbnVsbCE9biYmdC5wdXNoKHtuYW1lOmUsdmFsdWU6bn0pLHR9U2MucHJvdG90eXBlPXdjLnByb3RvdHlwZT17Y29uc3RydWN0b3I6U2Msb246ZnVuY3Rpb24odCxlKXt2YXIgbixpPXRoaXMuXyxyPU1jKHQrIiIsaSksbz0tMSxhPXIubGVuZ3RoO2lmKCEoYXJndW1lbnRzLmxlbmd0aDwyKSl7aWYobnVsbCE9ZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGNhbGxiYWNrOiAiK2UpO2Zvcig7KytvPGE7KWlmKG49KHQ9cltvXSkudHlwZSlpW25dPVRjKGlbbl0sdC5uYW1lLGUpO2Vsc2UgaWYobnVsbD09ZSlmb3IobiBpbiBpKWlbbl09VGMoaVtuXSx0Lm5hbWUsbnVsbCk7cmV0dXJuIHRoaXN9Zm9yKDsrK288YTspaWYoKG49KHQ9cltvXSkudHlwZSkmJihuPUVjKGlbbl0sdC5uYW1lKSkpcmV0dXJuIG59LGNvcHk6ZnVuY3Rpb24oKXt2YXIgdD17fSxlPXRoaXMuXztmb3IodmFyIG4gaW4gZSl0W25dPWVbbl0uc2xpY2UoKTtyZXR1cm4gbmV3IFNjKHQpfSxjYWxsOmZ1bmN0aW9uKHQsZSl7aWYoKG49YXJndW1lbnRzLmxlbmd0aC0yKT4wKWZvcih2YXIgbixpLHI9bmV3IEFycmF5KG4pLG89MDtvPG47KytvKXJbb109YXJndW1lbnRzW28rMl07aWYoIXRoaXMuXy5oYXNPd25Qcm9wZXJ0eSh0KSl0aHJvdyBuZXcgRXJyb3IoInVua25vd24gdHlwZTogIit0KTtmb3Iobz0wLG49KGk9dGhpcy5fW3RdKS5sZW5ndGg7bzxuOysrbylpW29dLnZhbHVlLmFwcGx5KGUscil9LGFwcGx5OmZ1bmN0aW9uKHQsZSxuKXtpZighdGhpcy5fLmhhc093blByb3BlcnR5KHQpKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0eXBlOiAiK3QpO2Zvcih2YXIgaT10aGlzLl9bdF0scj0wLG89aS5sZW5ndGg7cjxvOysrcilpW3JdLnZhbHVlLmFwcGx5KGUsbil9fTt2YXIgQ2M9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiLEFjPXtzdmc6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix4aHRtbDpDYyx4bGluazoiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIseG1sOiJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLyJ9O2Z1bmN0aW9uIGtjKHQpe3ZhciBlPXQrPSIiLG49ZS5pbmRleE9mKCI6Iik7cmV0dXJuIG4+PTAmJiJ4bWxucyIhPT0oZT10LnNsaWNlKDAsbikpJiYodD10LnNsaWNlKG4rMSkpLEFjLmhhc093blByb3BlcnR5KGUpP3tzcGFjZTpBY1tlXSxsb2NhbDp0fTp0fWZ1bmN0aW9uIExjKHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXRoaXMub3duZXJEb2N1bWVudCxuPXRoaXMubmFtZXNwYWNlVVJJO3JldHVybiBuPT09Q2MmJmUuZG9jdW1lbnRFbGVtZW50Lm5hbWVzcGFjZVVSST09PUNjP2UuY3JlYXRlRWxlbWVudCh0KTplLmNyZWF0ZUVsZW1lbnROUyhuLHQpfX1mdW5jdGlvbiBQYyh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyh0LnNwYWNlLHQubG9jYWwpfX1mdW5jdGlvbiBOYyh0KXt2YXIgZT1rYyh0KTtyZXR1cm4oZS5sb2NhbD9QYzpMYykoZSl9ZnVuY3Rpb24gSWMoKXt9ZnVuY3Rpb24gUmModCl7cmV0dXJuIG51bGw9PXQ/SWM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5xdWVyeVNlbGVjdG9yKHQpfX1mdW5jdGlvbiBPYygpe3JldHVybltdfWZ1bmN0aW9uIHpjKHQpe3JldHVybiBudWxsPT10P09jOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucXVlcnlTZWxlY3RvckFsbCh0KX19ZnVuY3Rpb24gRGModCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWF0Y2hlcyh0KX19ZnVuY3Rpb24gQmModCl7cmV0dXJuIG5ldyBBcnJheSh0Lmxlbmd0aCl9ZnVuY3Rpb24gSGModCxlKXt0aGlzLm93bmVyRG9jdW1lbnQ9dC5vd25lckRvY3VtZW50LHRoaXMubmFtZXNwYWNlVVJJPXQubmFtZXNwYWNlVVJJLHRoaXMuX25leHQ9bnVsbCx0aGlzLl9wYXJlbnQ9dCx0aGlzLl9fZGF0YV9fPWV9SGMucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpIYyxhcHBlbmRDaGlsZDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcGFyZW50Lmluc2VydEJlZm9yZSh0LHRoaXMuX25leHQpfSxpbnNlcnRCZWZvcmU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5fcGFyZW50Lmluc2VydEJlZm9yZSh0LGUpfSxxdWVyeVNlbGVjdG9yOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYXJlbnQucXVlcnlTZWxlY3Rvcih0KX0scXVlcnlTZWxlY3RvckFsbDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcGFyZW50LnF1ZXJ5U2VsZWN0b3JBbGwodCl9fTtmdW5jdGlvbiBGYyh0LGUsbixpLHIsbyl7Zm9yKHZhciBhLHM9MCxsPWUubGVuZ3RoLGM9by5sZW5ndGg7czxjOysrcykoYT1lW3NdKT8oYS5fX2RhdGFfXz1vW3NdLGlbc109YSk6bltzXT1uZXcgSGModCxvW3NdKTtmb3IoO3M8bDsrK3MpKGE9ZVtzXSkmJihyW3NdPWEpfWZ1bmN0aW9uIFZjKHQsZSxuLGkscixvLGEpe3ZhciBzLGwsYyx1PXt9LGg9ZS5sZW5ndGgsZD1vLmxlbmd0aCxwPW5ldyBBcnJheShoKTtmb3Iocz0wO3M8aDsrK3MpKGw9ZVtzXSkmJihwW3NdPWM9IiQiK2EuY2FsbChsLGwuX19kYXRhX18scyxlKSxjIGluIHU/cltzXT1sOnVbY109bCk7Zm9yKHM9MDtzPGQ7KytzKShsPXVbYz0iJCIrYS5jYWxsKHQsb1tzXSxzLG8pXSk/KGlbc109bCxsLl9fZGF0YV9fPW9bc10sdVtjXT1udWxsKTpuW3NdPW5ldyBIYyh0LG9bc10pO2ZvcihzPTA7czxoOysrcykobD1lW3NdKSYmdVtwW3NdXT09PWwmJihyW3NdPWwpfWZ1bmN0aW9uIFVjKHQsZSl7cmV0dXJuIHQ8ZT8tMTp0PmU/MTp0Pj1lPzA6TmFOfWZ1bmN0aW9uIGpjKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMucmVtb3ZlQXR0cmlidXRlKHQpfX1mdW5jdGlvbiBHYyh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCl9fWZ1bmN0aW9uIFdjKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zZXRBdHRyaWJ1dGUodCxlKX19ZnVuY3Rpb24gcWModCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnNldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCxlKX19ZnVuY3Rpb24gWWModCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1uP3RoaXMucmVtb3ZlQXR0cmlidXRlKHQpOnRoaXMuc2V0QXR0cmlidXRlKHQsbil9fWZ1bmN0aW9uIFhjKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7bnVsbD09bj90aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCk6dGhpcy5zZXRBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwsbil9fWZ1bmN0aW9uICRjKHQpe3JldHVybiB0Lm93bmVyRG9jdW1lbnQmJnQub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlld3x8dC5kb2N1bWVudCYmdHx8dC5kZWZhdWx0Vmlld31mdW5jdGlvbiBLYyh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpfX1mdW5jdGlvbiBaYyh0LGUsbil7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zdHlsZS5zZXRQcm9wZXJ0eSh0LGUsbil9fWZ1bmN0aW9uIEpjKHQsZSxuKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgaT1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1pP3RoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkodCk6dGhpcy5zdHlsZS5zZXRQcm9wZXJ0eSh0LGksbil9fWZ1bmN0aW9uIFFjKHQsZSl7cmV0dXJuIHQuc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShlKXx8JGModCkuZ2V0Q29tcHV0ZWRTdHlsZSh0LG51bGwpLmdldFByb3BlcnR5VmFsdWUoZSl9ZnVuY3Rpb24gdHUodCl7cmV0dXJuIGZ1bmN0aW9uKCl7ZGVsZXRlIHRoaXNbdF19fWZ1bmN0aW9uIGV1KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpc1t0XT1lfX1mdW5jdGlvbiBudSh0LGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciBuPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PW4/ZGVsZXRlIHRoaXNbdF06dGhpc1t0XT1ufX1mdW5jdGlvbiBpdSh0KXtyZXR1cm4gdC50cmltKCkuc3BsaXQoL158XHMrLyl9ZnVuY3Rpb24gcnUodCl7cmV0dXJuIHQuY2xhc3NMaXN0fHxuZXcgb3UodCl9ZnVuY3Rpb24gb3UodCl7dGhpcy5fbm9kZT10LHRoaXMuX25hbWVzPWl1KHQuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIil9ZnVuY3Rpb24gYXUodCxlKXtmb3IodmFyIG49cnUodCksaT0tMSxyPWUubGVuZ3RoOysraTxyOyluLmFkZChlW2ldKX1mdW5jdGlvbiBzdSh0LGUpe2Zvcih2YXIgbj1ydSh0KSxpPS0xLHI9ZS5sZW5ndGg7KytpPHI7KW4ucmVtb3ZlKGVbaV0pfWZ1bmN0aW9uIGx1KHQpe3JldHVybiBmdW5jdGlvbigpe2F1KHRoaXMsdCl9fWZ1bmN0aW9uIGN1KHQpe3JldHVybiBmdW5jdGlvbigpe3N1KHRoaXMsdCl9fWZ1bmN0aW9uIHV1KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7KGUuYXBwbHkodGhpcyxhcmd1bWVudHMpP2F1OnN1KSh0aGlzLHQpfX1mdW5jdGlvbiBodSgpe3RoaXMudGV4dENvbnRlbnQ9IiJ9ZnVuY3Rpb24gZHUodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy50ZXh0Q29udGVudD10fX1mdW5jdGlvbiBwdSh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLnRleHRDb250ZW50PW51bGw9PWU/IiI6ZX19ZnVuY3Rpb24gZnUoKXt0aGlzLmlubmVySFRNTD0iIn1mdW5jdGlvbiBtdSh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLmlubmVySFRNTD10fX1mdW5jdGlvbiBndSh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLmlubmVySFRNTD1udWxsPT1lPyIiOmV9fWZ1bmN0aW9uIF91KCl7dGhpcy5uZXh0U2libGluZyYmdGhpcy5wYXJlbnROb2RlLmFwcGVuZENoaWxkKHRoaXMpfWZ1bmN0aW9uIHl1KCl7dGhpcy5wcmV2aW91c1NpYmxpbmcmJnRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodGhpcyx0aGlzLnBhcmVudE5vZGUuZmlyc3RDaGlsZCl9ZnVuY3Rpb24gdnUoKXtyZXR1cm4gbnVsbH1mdW5jdGlvbiBidSgpe3ZhciB0PXRoaXMucGFyZW50Tm9kZTt0JiZ0LnJlbW92ZUNoaWxkKHRoaXMpfWZ1bmN0aW9uIHh1KCl7dmFyIHQ9dGhpcy5jbG9uZU5vZGUoITEpLGU9dGhpcy5wYXJlbnROb2RlO3JldHVybiBlP2UuaW5zZXJ0QmVmb3JlKHQsdGhpcy5uZXh0U2libGluZyk6dH1mdW5jdGlvbiB3dSgpe3ZhciB0PXRoaXMuY2xvbmVOb2RlKCEwKSxlPXRoaXMucGFyZW50Tm9kZTtyZXR1cm4gZT9lLmluc2VydEJlZm9yZSh0LHRoaXMubmV4dFNpYmxpbmcpOnR9b3UucHJvdG90eXBlPXthZGQ6ZnVuY3Rpb24odCl7dGhpcy5fbmFtZXMuaW5kZXhPZih0KTwwJiYodGhpcy5fbmFtZXMucHVzaCh0KSx0aGlzLl9ub2RlLnNldEF0dHJpYnV0ZSgiY2xhc3MiLHRoaXMuX25hbWVzLmpvaW4oIiAiKSkpfSxyZW1vdmU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fbmFtZXMuaW5kZXhPZih0KTtlPj0wJiYodGhpcy5fbmFtZXMuc3BsaWNlKGUsMSksdGhpcy5fbm9kZS5zZXRBdHRyaWJ1dGUoImNsYXNzIix0aGlzLl9uYW1lcy5qb2luKCIgIikpKX0sY29udGFpbnM6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX25hbWVzLmluZGV4T2YodCk+PTB9fTt2YXIgU3U9e30sTXU9bnVsbDsidW5kZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50JiYoIm9ubW91c2VlbnRlciJpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnR8fChTdT17bW91c2VlbnRlcjoibW91c2VvdmVyIixtb3VzZWxlYXZlOiJtb3VzZW91dCJ9KSk7ZnVuY3Rpb24gRXUodCxlLG4pe3JldHVybiB0PVR1KHQsZSxuKSxmdW5jdGlvbihlKXt2YXIgbj1lLnJlbGF0ZWRUYXJnZXQ7biYmKG49PT10aGlzfHw4Jm4uY29tcGFyZURvY3VtZW50UG9zaXRpb24odGhpcykpfHx0LmNhbGwodGhpcyxlKX19ZnVuY3Rpb24gVHUodCxlLG4pe3JldHVybiBmdW5jdGlvbihpKXt2YXIgcj1NdTtNdT1pO3RyeXt0LmNhbGwodGhpcyx0aGlzLl9fZGF0YV9fLGUsbil9ZmluYWxseXtNdT1yfX19ZnVuY3Rpb24gQ3UodCl7cmV0dXJuIHQudHJpbSgpLnNwbGl0KC9efFxzKy8pLm1hcCgoZnVuY3Rpb24odCl7dmFyIGU9IiIsbj10LmluZGV4T2YoIi4iKTtyZXR1cm4gbj49MCYmKGU9dC5zbGljZShuKzEpLHQ9dC5zbGljZSgwLG4pKSx7dHlwZTp0LG5hbWU6ZX19KSl9ZnVuY3Rpb24gQXUodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fX29uO2lmKGUpe2Zvcih2YXIgbixpPTAscj0tMSxvPWUubGVuZ3RoO2k8bzsrK2kpbj1lW2ldLHQudHlwZSYmbi50eXBlIT09dC50eXBlfHxuLm5hbWUhPT10Lm5hbWU/ZVsrK3JdPW46dGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKG4udHlwZSxuLmxpc3RlbmVyLG4uY2FwdHVyZSk7KytyP2UubGVuZ3RoPXI6ZGVsZXRlIHRoaXMuX19vbn19fWZ1bmN0aW9uIGt1KHQsZSxuKXt2YXIgaT1TdS5oYXNPd25Qcm9wZXJ0eSh0LnR5cGUpP0V1OlR1O3JldHVybiBmdW5jdGlvbihyLG8sYSl7dmFyIHMsbD10aGlzLl9fb24sYz1pKGUsbyxhKTtpZihsKWZvcih2YXIgdT0wLGg9bC5sZW5ndGg7dTxoOysrdSlpZigocz1sW3VdKS50eXBlPT09dC50eXBlJiZzLm5hbWU9PT10Lm5hbWUpcmV0dXJuIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihzLnR5cGUscy5saXN0ZW5lcixzLmNhcHR1cmUpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihzLnR5cGUscy5saXN0ZW5lcj1jLHMuY2FwdHVyZT1uKSx2b2lkKHMudmFsdWU9ZSk7dGhpcy5hZGRFdmVudExpc3RlbmVyKHQudHlwZSxjLG4pLHM9e3R5cGU6dC50eXBlLG5hbWU6dC5uYW1lLHZhbHVlOmUsbGlzdGVuZXI6YyxjYXB0dXJlOm59LGw/bC5wdXNoKHMpOnRoaXMuX19vbj1bc119fWZ1bmN0aW9uIEx1KHQsZSxuLGkpe3ZhciByPU11O3Quc291cmNlRXZlbnQ9TXUsTXU9dDt0cnl7cmV0dXJuIGUuYXBwbHkobixpKX1maW5hbGx5e011PXJ9fWZ1bmN0aW9uIFB1KHQsZSxuKXt2YXIgaT0kYyh0KSxyPWkuQ3VzdG9tRXZlbnQ7ImZ1bmN0aW9uIj09dHlwZW9mIHI/cj1uZXcgcihlLG4pOihyPWkuZG9jdW1lbnQuY3JlYXRlRXZlbnQoIkV2ZW50Iiksbj8oci5pbml0RXZlbnQoZSxuLmJ1YmJsZXMsbi5jYW5jZWxhYmxlKSxyLmRldGFpbD1uLmRldGFpbCk6ci5pbml0RXZlbnQoZSwhMSwhMSkpLHQuZGlzcGF0Y2hFdmVudChyKX1mdW5jdGlvbiBOdSh0LGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBQdSh0aGlzLHQsZSl9fWZ1bmN0aW9uIEl1KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIFB1KHRoaXMsdCxlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9fXZhciBSdT1bbnVsbF07ZnVuY3Rpb24gT3UodCxlKXt0aGlzLl9ncm91cHM9dCx0aGlzLl9wYXJlbnRzPWV9ZnVuY3Rpb24genUoKXtyZXR1cm4gbmV3IE91KFtbZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50XV0sUnUpfWZ1bmN0aW9uIER1KHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdD9uZXcgT3UoW1tkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHQpXV0sW2RvY3VtZW50LmRvY3VtZW50RWxlbWVudF0pOm5ldyBPdShbW3RdXSxSdSl9T3UucHJvdG90eXBlPXp1LnByb3RvdHlwZT17Y29uc3RydWN0b3I6T3Usc2VsZWN0OmZ1bmN0aW9uIEJ1KHQpeyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD1SYyh0KSk7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPWUubGVuZ3RoLGk9bmV3IEFycmF5KG4pLHI9MDtyPG47KytyKWZvcih2YXIgbyxhLHM9ZVtyXSxsPXMubGVuZ3RoLGM9aVtyXT1uZXcgQXJyYXkobCksdT0wO3U8bDsrK3UpKG89c1t1XSkmJihhPXQuY2FsbChvLG8uX19kYXRhX18sdSxzKSkmJigiX19kYXRhX18iaW4gbyYmKGEuX19kYXRhX189by5fX2RhdGFfXyksY1t1XT1hKTtyZXR1cm4gbmV3IE91KGksdGhpcy5fcGFyZW50cyl9LHNlbGVjdEFsbDpmdW5jdGlvbiBIdSh0KXsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9emModCkpO2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj1lLmxlbmd0aCxpPVtdLHI9W10sbz0wO288bjsrK28pZm9yKHZhciBhLHM9ZVtvXSxsPXMubGVuZ3RoLGM9MDtjPGw7KytjKShhPXNbY10pJiYoaS5wdXNoKHQuY2FsbChhLGEuX19kYXRhX18sYyxzKSksci5wdXNoKGEpKTtyZXR1cm4gbmV3IE91KGkscil9LGZpbHRlcjpmdW5jdGlvbiBGdSh0KXsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9RGModCkpO2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj1lLmxlbmd0aCxpPW5ldyBBcnJheShuKSxyPTA7cjxuOysrcilmb3IodmFyIG8sYT1lW3JdLHM9YS5sZW5ndGgsbD1pW3JdPVtdLGM9MDtjPHM7KytjKShvPWFbY10pJiZ0LmNhbGwobyxvLl9fZGF0YV9fLGMsYSkmJmwucHVzaChvKTtyZXR1cm4gbmV3IE91KGksdGhpcy5fcGFyZW50cyl9LGRhdGE6ZnVuY3Rpb24gVnUodCxlKXtpZighdClyZXR1cm4gZj1uZXcgQXJyYXkodGhpcy5zaXplKCkpLHU9LTEsdGhpcy5lYWNoKChmdW5jdGlvbih0KXtmWysrdV09dH0pKSxmO3ZhciBuPWU/VmM6RmMsaT10aGlzLl9wYXJlbnRzLHI9dGhpcy5fZ3JvdXBzOyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD0oZnVuY3Rpb24gbyh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19KSh0KSk7Zm9yKHZhciBhPXIubGVuZ3RoLHM9bmV3IEFycmF5KGEpLGw9bmV3IEFycmF5KGEpLGM9bmV3IEFycmF5KGEpLHU9MDt1PGE7Kyt1KXt2YXIgaD1pW3VdLGQ9clt1XSxwPWQubGVuZ3RoLGY9dC5jYWxsKGgsaCYmaC5fX2RhdGFfXyx1LGkpLG09Zi5sZW5ndGgsZz1sW3VdPW5ldyBBcnJheShtKSxfPXNbdV09bmV3IEFycmF5KG0pO24oaCxkLGcsXyxjW3VdPW5ldyBBcnJheShwKSxmLGUpO2Zvcih2YXIgeSx2LGI9MCx4PTA7YjxtOysrYilpZih5PWdbYl0pe2ZvcihiPj14JiYoeD1iKzEpOyEodj1fW3hdKSYmKyt4PG07KTt5Ll9uZXh0PXZ8fG51bGx9fXJldHVybihzPW5ldyBPdShzLGkpKS5fZW50ZXI9bCxzLl9leGl0PWMsc30sZW50ZXI6ZnVuY3Rpb24gVXUoKXtyZXR1cm4gbmV3IE91KHRoaXMuX2VudGVyfHx0aGlzLl9ncm91cHMubWFwKEJjKSx0aGlzLl9wYXJlbnRzKX0sZXhpdDpmdW5jdGlvbiBqdSgpe3JldHVybiBuZXcgT3UodGhpcy5fZXhpdHx8dGhpcy5fZ3JvdXBzLm1hcChCYyksdGhpcy5fcGFyZW50cyl9LGpvaW46ZnVuY3Rpb24gR3UodCxlLG4pe3ZhciBpPXRoaXMuZW50ZXIoKSxyPXRoaXMsbz10aGlzLmV4aXQoKTtyZXR1cm4gaT0iZnVuY3Rpb24iPT10eXBlb2YgdD90KGkpOmkuYXBwZW5kKHQrIiIpLG51bGwhPWUmJihyPWUocikpLG51bGw9PW4/by5yZW1vdmUoKTpuKG8pLGkmJnI/aS5tZXJnZShyKS5vcmRlcigpOnJ9LG1lcmdlOmZ1bmN0aW9uIFd1KHQpe2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj10Ll9ncm91cHMsaT1lLmxlbmd0aCxyPU1hdGgubWluKGksbi5sZW5ndGgpLG89bmV3IEFycmF5KGkpLGE9MDthPHI7KythKWZvcih2YXIgcyxsPWVbYV0sYz1uW2FdLHU9bC5sZW5ndGgsaD1vW2FdPW5ldyBBcnJheSh1KSxkPTA7ZDx1OysrZCkocz1sW2RdfHxjW2RdKSYmKGhbZF09cyk7Zm9yKDthPGk7KythKW9bYV09ZVthXTtyZXR1cm4gbmV3IE91KG8sdGhpcy5fcGFyZW50cyl9LG9yZGVyOmZ1bmN0aW9uIHF1KCl7Zm9yKHZhciB0PXRoaXMuX2dyb3VwcyxlPS0xLG49dC5sZW5ndGg7KytlPG47KWZvcih2YXIgaSxyPXRbZV0sbz1yLmxlbmd0aC0xLGE9cltvXTstLW8+PTA7KShpPXJbb10pJiYoYSYmNF5pLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGEpJiZhLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGksYSksYT1pKTtyZXR1cm4gdGhpc30sc29ydDpmdW5jdGlvbiBZdSh0KXtmdW5jdGlvbiBlKGUsbil7cmV0dXJuIGUmJm4/dChlLl9fZGF0YV9fLG4uX19kYXRhX18pOiFlLSFufXR8fCh0PVVjKTtmb3IodmFyIG49dGhpcy5fZ3JvdXBzLGk9bi5sZW5ndGgscj1uZXcgQXJyYXkoaSksbz0wO288aTsrK28pe2Zvcih2YXIgYSxzPW5bb10sbD1zLmxlbmd0aCxjPXJbb109bmV3IEFycmF5KGwpLHU9MDt1PGw7Kyt1KShhPXNbdV0pJiYoY1t1XT1hKTtjLnNvcnQoZSl9cmV0dXJuIG5ldyBPdShyLHRoaXMuX3BhcmVudHMpLm9yZGVyKCl9LGNhbGw6ZnVuY3Rpb24gWHUoKXt2YXIgdD1hcmd1bWVudHNbMF07cmV0dXJuIGFyZ3VtZW50c1swXT10aGlzLHQuYXBwbHkobnVsbCxhcmd1bWVudHMpLHRoaXN9LG5vZGVzOmZ1bmN0aW9uICR1KCl7dmFyIHQ9bmV3IEFycmF5KHRoaXMuc2l6ZSgpKSxlPS0xO3JldHVybiB0aGlzLmVhY2goKGZ1bmN0aW9uKCl7dFsrK2VdPXRoaXN9KSksdH0sbm9kZTpmdW5jdGlvbiBLdSgpe2Zvcih2YXIgdD10aGlzLl9ncm91cHMsZT0wLG49dC5sZW5ndGg7ZTxuOysrZSlmb3IodmFyIGk9dFtlXSxyPTAsbz1pLmxlbmd0aDtyPG87KytyKXt2YXIgYT1pW3JdO2lmKGEpcmV0dXJuIGF9cmV0dXJuIG51bGx9LHNpemU6ZnVuY3Rpb24gWnUoKXt2YXIgdD0wO3JldHVybiB0aGlzLmVhY2goKGZ1bmN0aW9uKCl7Kyt0fSkpLHR9LGVtcHR5OmZ1bmN0aW9uIEp1KCl7cmV0dXJuIXRoaXMubm9kZSgpfSxlYWNoOmZ1bmN0aW9uIFF1KHQpe2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj0wLGk9ZS5sZW5ndGg7bjxpOysrbilmb3IodmFyIHIsbz1lW25dLGE9MCxzPW8ubGVuZ3RoO2E8czsrK2EpKHI9b1thXSkmJnQuY2FsbChyLHIuX19kYXRhX18sYSxvKTtyZXR1cm4gdGhpc30sYXR0cjpmdW5jdGlvbiB0aCh0LGUpe3ZhciBuPWtjKHQpO2lmKGFyZ3VtZW50cy5sZW5ndGg8Mil7dmFyIGk9dGhpcy5ub2RlKCk7cmV0dXJuIG4ubG9jYWw/aS5nZXRBdHRyaWJ1dGVOUyhuLnNwYWNlLG4ubG9jYWwpOmkuZ2V0QXR0cmlidXRlKG4pfXJldHVybiB0aGlzLmVhY2goKG51bGw9PWU/bi5sb2NhbD9HYzpqYzoiZnVuY3Rpb24iPT10eXBlb2YgZT9uLmxvY2FsP1hjOlljOm4ubG9jYWw/cWM6V2MpKG4sZSkpfSxzdHlsZTpmdW5jdGlvbiBlaCh0LGUsbil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MT90aGlzLmVhY2goKG51bGw9PWU/S2M6ImZ1bmN0aW9uIj09dHlwZW9mIGU/SmM6WmMpKHQsZSxudWxsPT1uPyIiOm4pKTpRYyh0aGlzLm5vZGUoKSx0KX0scHJvcGVydHk6ZnVuY3Rpb24gbmgodCxlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4xP3RoaXMuZWFjaCgobnVsbD09ZT90dToiZnVuY3Rpb24iPT10eXBlb2YgZT9udTpldSkodCxlKSk6dGhpcy5ub2RlKClbdF19LGNsYXNzZWQ6ZnVuY3Rpb24gaWgodCxlKXt2YXIgbj1pdSh0KyIiKTtpZihhcmd1bWVudHMubGVuZ3RoPDIpe2Zvcih2YXIgaT1ydSh0aGlzLm5vZGUoKSkscj0tMSxvPW4ubGVuZ3RoOysrcjxvOylpZighaS5jb250YWlucyhuW3JdKSlyZXR1cm4hMTtyZXR1cm4hMH1yZXR1cm4gdGhpcy5lYWNoKCgiZnVuY3Rpb24iPT10eXBlb2YgZT91dTplP2x1OmN1KShuLGUpKX0sdGV4dDpmdW5jdGlvbiByaCh0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2gobnVsbD09dD9odTooImZ1bmN0aW9uIj09dHlwZW9mIHQ/cHU6ZHUpKHQpKTp0aGlzLm5vZGUoKS50ZXh0Q29udGVudH0saHRtbDpmdW5jdGlvbiBvaCh0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2gobnVsbD09dD9mdTooImZ1bmN0aW9uIj09dHlwZW9mIHQ/Z3U6bXUpKHQpKTp0aGlzLm5vZGUoKS5pbm5lckhUTUx9LHJhaXNlOmZ1bmN0aW9uIGFoKCl7cmV0dXJuIHRoaXMuZWFjaChfdSl9LGxvd2VyOmZ1bmN0aW9uIHNoKCl7cmV0dXJuIHRoaXMuZWFjaCh5dSl9LGFwcGVuZDpmdW5jdGlvbiBsaCh0KXt2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgdD90Ok5jKHQpO3JldHVybiB0aGlzLnNlbGVjdCgoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hcHBlbmRDaGlsZChlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9KSl9LGluc2VydDpmdW5jdGlvbiBjaCh0LGUpe3ZhciBuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6TmModCksaT1udWxsPT1lP3Z1OiJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6UmMoZSk7cmV0dXJuIHRoaXMuc2VsZWN0KChmdW5jdGlvbigpe3JldHVybiB0aGlzLmluc2VydEJlZm9yZShuLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxpLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8bnVsbCl9KSl9LHJlbW92ZTpmdW5jdGlvbiB1aCgpe3JldHVybiB0aGlzLmVhY2goYnUpfSxjbG9uZTpmdW5jdGlvbiBoaCh0KXtyZXR1cm4gdGhpcy5zZWxlY3QodD93dTp4dSl9LGRhdHVtOmZ1bmN0aW9uIGRoKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMucHJvcGVydHkoIl9fZGF0YV9fIix0KTp0aGlzLm5vZGUoKS5fX2RhdGFfX30sb246ZnVuY3Rpb24gcGgodCxlLG4pe3ZhciBpLHIsbz1DdSh0KyIiKSxhPW8ubGVuZ3RoO2lmKCEoYXJndW1lbnRzLmxlbmd0aDwyKSl7Zm9yKHM9ZT9rdTpBdSxudWxsPT1uJiYobj0hMSksaT0wO2k8YTsrK2kpdGhpcy5lYWNoKHMob1tpXSxlLG4pKTtyZXR1cm4gdGhpc312YXIgcz10aGlzLm5vZGUoKS5fX29uO2lmKHMpZm9yKHZhciBsLGM9MCx1PXMubGVuZ3RoO2M8dTsrK2MpZm9yKGk9MCxsPXNbY107aTxhOysraSlpZigocj1vW2ldKS50eXBlPT09bC50eXBlJiZyLm5hbWU9PT1sLm5hbWUpcmV0dXJuIGwudmFsdWV9LGRpc3BhdGNoOmZ1bmN0aW9uIGZoKHQsZSl7cmV0dXJuIHRoaXMuZWFjaCgoImZ1bmN0aW9uIj09dHlwZW9mIGU/SXU6TnUpKHQsZSkpfX07dmFyIG1oPTA7ZnVuY3Rpb24gZ2goKXtyZXR1cm4gbmV3IF9ofWZ1bmN0aW9uIF9oKCl7dGhpcy5fPSJAIisoKyttaCkudG9TdHJpbmcoMzYpfWZ1bmN0aW9uIHloKCl7Zm9yKHZhciB0LGU9TXU7dD1lLnNvdXJjZUV2ZW50OyllPXQ7cmV0dXJuIGV9ZnVuY3Rpb24gdmgodCxlKXt2YXIgbj10Lm93bmVyU1ZHRWxlbWVudHx8dDtpZihuLmNyZWF0ZVNWR1BvaW50KXt2YXIgaT1uLmNyZWF0ZVNWR1BvaW50KCk7cmV0dXJuIGkueD1lLmNsaWVudFgsaS55PWUuY2xpZW50WSxbKGk9aS5tYXRyaXhUcmFuc2Zvcm0odC5nZXRTY3JlZW5DVE0oKS5pbnZlcnNlKCkpKS54LGkueV19dmFyIHI9dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm5bZS5jbGllbnRYLXIubGVmdC10LmNsaWVudExlZnQsZS5jbGllbnRZLXIudG9wLXQuY2xpZW50VG9wXX1mdW5jdGlvbiBiaCh0KXt2YXIgZT15aCgpO3JldHVybiBlLmNoYW5nZWRUb3VjaGVzJiYoZT1lLmNoYW5nZWRUb3VjaGVzWzBdKSx2aCh0LGUpfWZ1bmN0aW9uIHhoKHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdD9uZXcgT3UoW2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwodCldLFtkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRdKTpuZXcgT3UoW251bGw9PXQ/W106dF0sUnUpfWZ1bmN0aW9uIHdoKHQsZSxuKXthcmd1bWVudHMubGVuZ3RoPDMmJihuPWUsZT15aCgpLmNoYW5nZWRUb3VjaGVzKTtmb3IodmFyIGkscj0wLG89ZT9lLmxlbmd0aDowO3I8bzsrK3IpaWYoKGk9ZVtyXSkuaWRlbnRpZmllcj09PW4pcmV0dXJuIHZoKHQsaSk7cmV0dXJuIG51bGx9ZnVuY3Rpb24gU2goKXtNdS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKX1mdW5jdGlvbiBNaCgpe011LnByZXZlbnREZWZhdWx0KCksTXUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCl9ZnVuY3Rpb24gRWgodCl7dmFyIGU9dC5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsbj1EdSh0KS5vbigiZHJhZ3N0YXJ0LmRyYWciLE1oLCEwKTsib25zZWxlY3RzdGFydCJpbiBlP24ub24oInNlbGVjdHN0YXJ0LmRyYWciLE1oLCEwKTooZS5fX25vc2VsZWN0PWUuc3R5bGUuTW96VXNlclNlbGVjdCxlLnN0eWxlLk1velVzZXJTZWxlY3Q9Im5vbmUiKX1mdW5jdGlvbiBUaCh0LGUpe3ZhciBuPXQuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LGk9RHUodCkub24oImRyYWdzdGFydC5kcmFnIixudWxsKTtlJiYoaS5vbigiY2xpY2suZHJhZyIsTWgsITApLHNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7aS5vbigiY2xpY2suZHJhZyIsbnVsbCl9KSwwKSksIm9uc2VsZWN0c3RhcnQiaW4gbj9pLm9uKCJzZWxlY3RzdGFydC5kcmFnIixudWxsKToobi5zdHlsZS5Nb3pVc2VyU2VsZWN0PW4uX19ub3NlbGVjdCxkZWxldGUgbi5fX25vc2VsZWN0KX1mdW5jdGlvbiBDaCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gQWgodCxlLG4saSxyLG8sYSxzLGwsYyl7dGhpcy50YXJnZXQ9dCx0aGlzLnR5cGU9ZSx0aGlzLnN1YmplY3Q9bix0aGlzLmlkZW50aWZpZXI9aSx0aGlzLmFjdGl2ZT1yLHRoaXMueD1vLHRoaXMueT1hLHRoaXMuZHg9cyx0aGlzLmR5PWwsdGhpcy5fPWN9ZnVuY3Rpb24ga2goKXtyZXR1cm4hTXUuY3RybEtleSYmIU11LmJ1dHRvbn1mdW5jdGlvbiBMaCgpe3JldHVybiB0aGlzLnBhcmVudE5vZGV9ZnVuY3Rpb24gUGgodCl7cmV0dXJuIG51bGw9PXQ/e3g6TXUueCx5Ok11Lnl9OnR9ZnVuY3Rpb24gTmgoKXtyZXR1cm4gbmF2aWdhdG9yLm1heFRvdWNoUG9pbnRzfHwib250b3VjaHN0YXJ0ImluIHRoaXN9ZnVuY3Rpb24gSWgoKXt2YXIgdCxlLG4saSxyPWtoLG89TGgsYT1QaCxzPU5oLGw9e30sYz13Yygic3RhcnQiLCJkcmFnIiwiZW5kIiksdT0wLGg9MDtmdW5jdGlvbiBkKHQpe3Qub24oIm1vdXNlZG93bi5kcmFnIixwKS5maWx0ZXIocykub24oInRvdWNoc3RhcnQuZHJhZyIsZykub24oInRvdWNobW92ZS5kcmFnIixfKS5vbigidG91Y2hlbmQuZHJhZyB0b3VjaGNhbmNlbC5kcmFnIix5KS5zdHlsZSgidG91Y2gtYWN0aW9uIiwibm9uZSIpLnN0eWxlKCItd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3IiLCJyZ2JhKDAsMCwwLDApIil9ZnVuY3Rpb24gcCgpe2lmKCFpJiZyLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl7dmFyIGE9digibW91c2UiLG8uYXBwbHkodGhpcyxhcmd1bWVudHMpLGJoLHRoaXMsYXJndW1lbnRzKTthJiYoRHUoTXUudmlldykub24oIm1vdXNlbW92ZS5kcmFnIixmLCEwKS5vbigibW91c2V1cC5kcmFnIixtLCEwKSxFaChNdS52aWV3KSxTaCgpLG49ITEsdD1NdS5jbGllbnRYLGU9TXUuY2xpZW50WSxhKCJzdGFydCIpKX19ZnVuY3Rpb24gZigpe2lmKE1oKCksIW4pe3ZhciBpPU11LmNsaWVudFgtdCxyPU11LmNsaWVudFktZTtuPWkqaStyKnI+aH1sLm1vdXNlKCJkcmFnIil9ZnVuY3Rpb24gbSgpe0R1KE11LnZpZXcpLm9uKCJtb3VzZW1vdmUuZHJhZyBtb3VzZXVwLmRyYWciLG51bGwpLFRoKE11LnZpZXcsbiksTWgoKSxsLm1vdXNlKCJlbmQiKX1mdW5jdGlvbiBnKCl7aWYoci5hcHBseSh0aGlzLGFyZ3VtZW50cykpe3ZhciB0LGUsbj1NdS5jaGFuZ2VkVG91Y2hlcyxpPW8uYXBwbHkodGhpcyxhcmd1bWVudHMpLGE9bi5sZW5ndGg7Zm9yKHQ9MDt0PGE7Kyt0KShlPXYoblt0XS5pZGVudGlmaWVyLGksd2gsdGhpcyxhcmd1bWVudHMpKSYmKFNoKCksZSgic3RhcnQiKSl9fWZ1bmN0aW9uIF8oKXt2YXIgdCxlLG49TXUuY2hhbmdlZFRvdWNoZXMsaT1uLmxlbmd0aDtmb3IodD0wO3Q8aTsrK3QpKGU9bFtuW3RdLmlkZW50aWZpZXJdKSYmKE1oKCksZSgiZHJhZyIpKX1mdW5jdGlvbiB5KCl7dmFyIHQsZSxuPU11LmNoYW5nZWRUb3VjaGVzLHI9bi5sZW5ndGg7Zm9yKGkmJmNsZWFyVGltZW91dChpKSxpPXNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7aT1udWxsfSksNTAwKSx0PTA7dDxyOysrdCkoZT1sW25bdF0uaWRlbnRpZmllcl0pJiYoU2goKSxlKCJlbmQiKSl9ZnVuY3Rpb24gdih0LGUsbixpLHIpe3ZhciBvLHMsaCxwPW4oZSx0KSxmPWMuY29weSgpO2lmKEx1KG5ldyBBaChkLCJiZWZvcmVzdGFydCIsbyx0LHUscFswXSxwWzFdLDAsMCxmKSwoZnVuY3Rpb24oKXtyZXR1cm4gbnVsbCE9KE11LnN1YmplY3Q9bz1hLmFwcGx5KGkscikpJiYocz1vLngtcFswXXx8MCxoPW8ueS1wWzFdfHwwLCEwKX0pKSlyZXR1cm4gZnVuY3Rpb24gYShjKXt2YXIgbSxnPXA7c3dpdGNoKGMpe2Nhc2Uic3RhcnQiOmxbdF09YSxtPXUrKzticmVhaztjYXNlImVuZCI6ZGVsZXRlIGxbdF0sLS11O2Nhc2UiZHJhZyI6cD1uKGUsdCksbT11fUx1KG5ldyBBaChkLGMsbyx0LG0scFswXStzLHBbMV0raCxwWzBdLWdbMF0scFsxXS1nWzFdLGYpLGYuYXBwbHksZixbYyxpLHJdKX19cmV0dXJuIGQuZmlsdGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6Q2goISF0KSxkKTpyfSxkLmNvbnRhaW5lcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkNoKHQpLGQpOm99LGQuc3ViamVjdD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkNoKHQpLGQpOmF9LGQudG91Y2hhYmxlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6Q2goISF0KSxkKTpzfSxkLm9uPWZ1bmN0aW9uKCl7dmFyIHQ9Yy5vbi5hcHBseShjLGFyZ3VtZW50cyk7cmV0dXJuIHQ9PT1jP2Q6dH0sZC5jbGlja0Rpc3RhbmNlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPSh0PSt0KSp0LGQpOk1hdGguc3FydChoKX0sZH1mdW5jdGlvbiBSaCh0LGUsbil7dC5wcm90b3R5cGU9ZS5wcm90b3R5cGU9bixuLmNvbnN0cnVjdG9yPXR9ZnVuY3Rpb24gT2godCxlKXt2YXIgbj1PYmplY3QuY3JlYXRlKHQucHJvdG90eXBlKTtmb3IodmFyIGkgaW4gZSluW2ldPWVbaV07cmV0dXJuIG59ZnVuY3Rpb24gemgoKXt9X2gucHJvdG90eXBlPWdoLnByb3RvdHlwZT17Y29uc3RydWN0b3I6X2gsZ2V0OmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLl87IShlIGluIHQpOylpZighKHQ9dC5wYXJlbnROb2RlKSlyZXR1cm47cmV0dXJuIHRbZV19LHNldDpmdW5jdGlvbih0LGUpe3JldHVybiB0W3RoaXMuX109ZX0scmVtb3ZlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl8gaW4gdCYmZGVsZXRlIHRbdGhpcy5fXX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ffX0sQWgucHJvdG90eXBlLm9uPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fLm9uLmFwcGx5KHRoaXMuXyxhcmd1bWVudHMpO3JldHVybiB0PT09dGhpcy5fP3RoaXM6dH07dmFyIERoPS43LEJoPTEvRGgsSGg9IlxccyooWystXT9cXGQrKVxccyoiLEZoPSJcXHMqKFsrLV0/XFxkKlxcLj9cXGQrKD86W2VFXVsrLV0/XFxkKyk/KVxccyoiLFZoPSJcXHMqKFsrLV0/XFxkKlxcLj9cXGQrKD86W2VFXVsrLV0/XFxkKyk/KSVcXHMqIixVaD0vXiMoWzAtOWEtZl17Myw4fSkkLyxqaD1uZXcgUmVnRXhwKCJecmdiXFwoIitbSGgsSGgsSGhdKyJcXCkkIiksR2g9bmV3IFJlZ0V4cCgiXnJnYlxcKCIrW1ZoLFZoLFZoXSsiXFwpJCIpLFdoPW5ldyBSZWdFeHAoIl5yZ2JhXFwoIitbSGgsSGgsSGgsRmhdKyJcXCkkIikscWg9bmV3IFJlZ0V4cCgiXnJnYmFcXCgiK1tWaCxWaCxWaCxGaF0rIlxcKSQiKSxZaD1uZXcgUmVnRXhwKCJeaHNsXFwoIitbRmgsVmgsVmhdKyJcXCkkIiksWGg9bmV3IFJlZ0V4cCgiXmhzbGFcXCgiK1tGaCxWaCxWaCxGaF0rIlxcKSQiKSwkaD17YWxpY2VibHVlOjE1NzkyMzgzLGFudGlxdWV3aGl0ZToxNjQ0NDM3NSxhcXVhOjY1NTM1LGFxdWFtYXJpbmU6ODM4ODU2NCxhenVyZToxNTc5NDE3NSxiZWlnZToxNjExOTI2MCxiaXNxdWU6MTY3NzAyNDQsYmxhY2s6MCxibGFuY2hlZGFsbW9uZDoxNjc3MjA0NSxibHVlOjI1NSxibHVldmlvbGV0OjkwNTUyMDIsYnJvd246MTA4MjQyMzQsYnVybHl3b29kOjE0NTk2MjMxLGNhZGV0Ymx1ZTo2MjY2NTI4LGNoYXJ0cmV1c2U6ODM4ODM1MixjaG9jb2xhdGU6MTM3ODk0NzAsY29yYWw6MTY3NDQyNzIsY29ybmZsb3dlcmJsdWU6NjU5MTk4MSxjb3Juc2lsazoxNjc3NTM4OCxjcmltc29uOjE0NDIzMTAwLGN5YW46NjU1MzUsZGFya2JsdWU6MTM5LGRhcmtjeWFuOjM1NzIzLGRhcmtnb2xkZW5yb2Q6MTIwOTI5MzksZGFya2dyYXk6MTExMTkwMTcsZGFya2dyZWVuOjI1NjAwLGRhcmtncmV5OjExMTE5MDE3LGRhcmtraGFraToxMjQzMzI1OSxkYXJrbWFnZW50YTo5MTA5NjQzLGRhcmtvbGl2ZWdyZWVuOjU1OTc5OTksZGFya29yYW5nZToxNjc0NzUyMCxkYXJrb3JjaGlkOjEwMDQwMDEyLGRhcmtyZWQ6OTEwOTUwNCxkYXJrc2FsbW9uOjE1MzA4NDEwLGRhcmtzZWFncmVlbjo5NDE5OTE5LGRhcmtzbGF0ZWJsdWU6NDczNDM0NyxkYXJrc2xhdGVncmF5OjMxMDA0OTUsZGFya3NsYXRlZ3JleTozMTAwNDk1LGRhcmt0dXJxdW9pc2U6NTI5NDUsZGFya3Zpb2xldDo5Njk5NTM5LGRlZXBwaW5rOjE2NzE2OTQ3LGRlZXBza3libHVlOjQ5MTUxLGRpbWdyYXk6NjkwODI2NSxkaW1ncmV5OjY5MDgyNjUsZG9kZ2VyYmx1ZToyMDAzMTk5LGZpcmVicmljazoxMTY3NDE0NixmbG9yYWx3aGl0ZToxNjc3NTkyMCxmb3Jlc3RncmVlbjoyMjYzODQyLGZ1Y2hzaWE6MTY3MTE5MzUsZ2FpbnNib3JvOjE0NDc0NDYwLGdob3N0d2hpdGU6MTYzMTY2NzEsZ29sZDoxNjc2NjcyMCxnb2xkZW5yb2Q6MTQzMjkxMjAsZ3JheTo4NDIxNTA0LGdyZWVuOjMyNzY4LGdyZWVueWVsbG93OjExNDAzMDU1LGdyZXk6ODQyMTUwNCxob25leWRldzoxNTc5NDE2MCxob3RwaW5rOjE2NzM4NzQwLGluZGlhbnJlZDoxMzQ1ODUyNCxpbmRpZ286NDkxNTMzMCxpdm9yeToxNjc3NzIwMCxraGFraToxNTc4NzY2MCxsYXZlbmRlcjoxNTEzMjQxMCxsYXZlbmRlcmJsdXNoOjE2NzczMzY1LGxhd25ncmVlbjo4MTkwOTc2LGxlbW9uY2hpZmZvbjoxNjc3NTg4NSxsaWdodGJsdWU6MTEzOTMyNTQsbGlnaHRjb3JhbDoxNTc2MTUzNixsaWdodGN5YW46MTQ3NDU1OTksbGlnaHRnb2xkZW5yb2R5ZWxsb3c6MTY0NDgyMTAsbGlnaHRncmF5OjEzODgyMzIzLGxpZ2h0Z3JlZW46OTQ5ODI1NixsaWdodGdyZXk6MTM4ODIzMjMsbGlnaHRwaW5rOjE2NzU4NDY1LGxpZ2h0c2FsbW9uOjE2NzUyNzYyLGxpZ2h0c2VhZ3JlZW46MjE0Mjg5MCxsaWdodHNreWJsdWU6ODkwMDM0NixsaWdodHNsYXRlZ3JheTo3ODMzNzUzLGxpZ2h0c2xhdGVncmV5Ojc4MzM3NTMsbGlnaHRzdGVlbGJsdWU6MTE1ODQ3MzQsbGlnaHR5ZWxsb3c6MTY3NzcxODQsbGltZTo2NTI4MCxsaW1lZ3JlZW46MzMyOTMzMCxsaW5lbjoxNjQ0NTY3MCxtYWdlbnRhOjE2NzExOTM1LG1hcm9vbjo4Mzg4NjA4LG1lZGl1bWFxdWFtYXJpbmU6NjczNzMyMixtZWRpdW1ibHVlOjIwNSxtZWRpdW1vcmNoaWQ6MTIyMTE2NjcsbWVkaXVtcHVycGxlOjk2NjI2ODMsbWVkaXVtc2VhZ3JlZW46Mzk3ODA5NyxtZWRpdW1zbGF0ZWJsdWU6ODA4Nzc5MCxtZWRpdW1zcHJpbmdncmVlbjo2NDE1NCxtZWRpdW10dXJxdW9pc2U6NDc3MjMwMCxtZWRpdW12aW9sZXRyZWQ6MTMwNDcxNzMsbWlkbmlnaHRibHVlOjE2NDQ5MTIsbWludGNyZWFtOjE2MTIxODUwLG1pc3R5cm9zZToxNjc3MDI3Myxtb2NjYXNpbjoxNjc3MDIyOSxuYXZham93aGl0ZToxNjc2ODY4NSxuYXZ5OjEyOCxvbGRsYWNlOjE2NjQzNTU4LG9saXZlOjg0MjEzNzYsb2xpdmVkcmFiOjcwNDg3Mzksb3JhbmdlOjE2NzUzOTIwLG9yYW5nZXJlZDoxNjcyOTM0NCxvcmNoaWQ6MTQzMTU3MzQscGFsZWdvbGRlbnJvZDoxNTY1NzEzMCxwYWxlZ3JlZW46MTAwMjU4ODAscGFsZXR1cnF1b2lzZToxMTUyOTk2NixwYWxldmlvbGV0cmVkOjE0MzgxMjAzLHBhcGF5YXdoaXA6MTY3NzMwNzcscGVhY2hwdWZmOjE2NzY3NjczLHBlcnU6MTM0Njg5OTEscGluazoxNjc2MTAzNSxwbHVtOjE0NTI0NjM3LHBvd2RlcmJsdWU6MTE1OTE5MTAscHVycGxlOjgzODg3MzYscmViZWNjYXB1cnBsZTo2Njk3ODgxLHJlZDoxNjcxMTY4MCxyb3N5YnJvd246MTIzNTc1MTkscm95YWxibHVlOjQyODY5NDUsc2FkZGxlYnJvd246OTEyNzE4NyxzYWxtb246MTY0MTY4ODIsc2FuZHlicm93bjoxNjAzMjg2NCxzZWFncmVlbjozMDUwMzI3LHNlYXNoZWxsOjE2Nzc0NjM4LHNpZW5uYToxMDUwNjc5NyxzaWx2ZXI6MTI2MzIyNTYsc2t5Ymx1ZTo4OTAwMzMxLHNsYXRlYmx1ZTo2OTcwMDYxLHNsYXRlZ3JheTo3MzcyOTQ0LHNsYXRlZ3JleTo3MzcyOTQ0LHNub3c6MTY3NzU5MzAsc3ByaW5nZ3JlZW46NjU0MDcsc3RlZWxibHVlOjQ2MjA5ODAsdGFuOjEzODA4NzgwLHRlYWw6MzI4OTYsdGhpc3RsZToxNDIwNDg4OCx0b21hdG86MTY3MzcwOTUsdHVycXVvaXNlOjQyNTE4NTYsdmlvbGV0OjE1NjMxMDg2LHdoZWF0OjE2MTEzMzMxLHdoaXRlOjE2Nzc3MjE1LHdoaXRlc21va2U6MTYxMTkyODUseWVsbG93OjE2Nzc2OTYwLHllbGxvd2dyZWVuOjEwMTQ1MDc0fTtmdW5jdGlvbiBLaCgpe3JldHVybiB0aGlzLnJnYigpLmZvcm1hdEhleCgpfWZ1bmN0aW9uIFpoKCl7cmV0dXJuIHRoaXMucmdiKCkuZm9ybWF0UmdiKCl9ZnVuY3Rpb24gSmgodCl7dmFyIGUsbjtyZXR1cm4gdD0odCsiIikudHJpbSgpLnRvTG93ZXJDYXNlKCksKGU9VWguZXhlYyh0KSk/KG49ZVsxXS5sZW5ndGgsZT1wYXJzZUludChlWzFdLDE2KSw2PT09bj9RaChlKTozPT09bj9uZXcgaWQoZT4+OCYxNXxlPj40JjI0MCxlPj40JjE1fDI0MCZlLCgxNSZlKTw8NHwxNSZlLDEpOjg9PT1uP3RkKGU+PjI0JjI1NSxlPj4xNiYyNTUsZT4+OCYyNTUsKDI1NSZlKS8yNTUpOjQ9PT1uP3RkKGU+PjEyJjE1fGU+PjgmMjQwLGU+PjgmMTV8ZT4+NCYyNDAsZT4+NCYxNXwyNDAmZSwoKDE1JmUpPDw0fDE1JmUpLzI1NSk6bnVsbCk6KGU9amguZXhlYyh0KSk/bmV3IGlkKGVbMV0sZVsyXSxlWzNdLDEpOihlPUdoLmV4ZWModCkpP25ldyBpZCgyNTUqZVsxXS8xMDAsMjU1KmVbMl0vMTAwLDI1NSplWzNdLzEwMCwxKTooZT1XaC5leGVjKHQpKT90ZChlWzFdLGVbMl0sZVszXSxlWzRdKTooZT1xaC5leGVjKHQpKT90ZCgyNTUqZVsxXS8xMDAsMjU1KmVbMl0vMTAwLDI1NSplWzNdLzEwMCxlWzRdKTooZT1ZaC5leGVjKHQpKT9zZChlWzFdLGVbMl0vMTAwLGVbM10vMTAwLDEpOihlPVhoLmV4ZWModCkpP3NkKGVbMV0sZVsyXS8xMDAsZVszXS8xMDAsZVs0XSk6JGguaGFzT3duUHJvcGVydHkodCk/UWgoJGhbdF0pOiJ0cmFuc3BhcmVudCI9PT10P25ldyBpZChOYU4sTmFOLE5hTiwwKTpudWxsfWZ1bmN0aW9uIFFoKHQpe3JldHVybiBuZXcgaWQodD4+MTYmMjU1LHQ+PjgmMjU1LDI1NSZ0LDEpfWZ1bmN0aW9uIHRkKHQsZSxuLGkpe3JldHVybiBpPD0wJiYodD1lPW49TmFOKSxuZXcgaWQodCxlLG4saSl9ZnVuY3Rpb24gZWQodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiB6aHx8KHQ9SmgodCkpLHQ/bmV3IGlkKCh0PXQucmdiKCkpLnIsdC5nLHQuYix0Lm9wYWNpdHkpOm5ldyBpZH1mdW5jdGlvbiBuZCh0LGUsbixpKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/ZWQodCk6bmV3IGlkKHQsZSxuLG51bGw9PWk/MTppKX1mdW5jdGlvbiBpZCh0LGUsbixpKXt0aGlzLnI9K3QsdGhpcy5nPStlLHRoaXMuYj0rbix0aGlzLm9wYWNpdHk9K2l9ZnVuY3Rpb24gcmQoKXtyZXR1cm4iIyIrYWQodGhpcy5yKSthZCh0aGlzLmcpK2FkKHRoaXMuYil9ZnVuY3Rpb24gb2QoKXt2YXIgdD10aGlzLm9wYWNpdHk7cmV0dXJuKDE9PT0odD1pc05hTih0KT8xOk1hdGgubWF4KDAsTWF0aC5taW4oMSx0KSkpPyJyZ2IoIjoicmdiYSgiKStNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKHRoaXMucil8fDApKSsiLCAiK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodGhpcy5nKXx8MCkpKyIsICIrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0aGlzLmIpfHwwKSkrKDE9PT10PyIpIjoiLCAiK3QrIikiKX1mdW5jdGlvbiBhZCh0KXtyZXR1cm4oKHQ9TWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0KXx8MCkpKTwxNj8iMCI6IiIpK3QudG9TdHJpbmcoMTYpfWZ1bmN0aW9uIHNkKHQsZSxuLGkpe3JldHVybiBpPD0wP3Q9ZT1uPU5hTjpuPD0wfHxuPj0xP3Q9ZT1OYU46ZTw9MCYmKHQ9TmFOKSxuZXcgdWQodCxlLG4saSl9ZnVuY3Rpb24gbGQodCl7aWYodCBpbnN0YW5jZW9mIHVkKXJldHVybiBuZXcgdWQodC5oLHQucyx0LmwsdC5vcGFjaXR5KTtpZih0IGluc3RhbmNlb2Ygemh8fCh0PUpoKHQpKSwhdClyZXR1cm4gbmV3IHVkO2lmKHQgaW5zdGFuY2VvZiB1ZClyZXR1cm4gdDt2YXIgZT0odD10LnJnYigpKS5yLzI1NSxuPXQuZy8yNTUsaT10LmIvMjU1LHI9TWF0aC5taW4oZSxuLGkpLG89TWF0aC5tYXgoZSxuLGkpLGE9TmFOLHM9by1yLGw9KG8rcikvMjtyZXR1cm4gcz8oYT1lPT09bz8obi1pKS9zKzYqKG48aSk6bj09PW8/KGktZSkvcysyOihlLW4pL3MrNCxzLz1sPC41P28rcjoyLW8tcixhKj02MCk6cz1sPjAmJmw8MT8wOmEsbmV3IHVkKGEscyxsLHQub3BhY2l0eSl9ZnVuY3Rpb24gY2QodCxlLG4saSl7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2xkKHQpOm5ldyB1ZCh0LGUsbixudWxsPT1pPzE6aSl9ZnVuY3Rpb24gdWQodCxlLG4saSl7dGhpcy5oPSt0LHRoaXMucz0rZSx0aGlzLmw9K24sdGhpcy5vcGFjaXR5PStpfWZ1bmN0aW9uIGhkKHQsZSxuKXtyZXR1cm4gMjU1Kih0PDYwP2UrKG4tZSkqdC82MDp0PDE4MD9uOnQ8MjQwP2UrKG4tZSkqKDI0MC10KS82MDplKX1SaCh6aCxKaCx7Y29weTpmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmFzc2lnbihuZXcgdGhpcy5jb25zdHJ1Y3Rvcix0aGlzLHQpfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJnYigpLmRpc3BsYXlhYmxlKCl9LGhleDpLaCxmb3JtYXRIZXg6S2gsZm9ybWF0SHNsOmZ1bmN0aW9uIGRkKCl7cmV0dXJuIGxkKHRoaXMpLmZvcm1hdEhzbCgpfSxmb3JtYXRSZ2I6WmgsdG9TdHJpbmc6Wmh9KSxSaChpZCxuZCxPaCh6aCx7YnJpZ2h0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD9CaDpNYXRoLnBvdyhCaCx0KSxuZXcgaWQodGhpcy5yKnQsdGhpcy5nKnQsdGhpcy5iKnQsdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/RGg6TWF0aC5wb3coRGgsdCksbmV3IGlkKHRoaXMucip0LHRoaXMuZyp0LHRoaXMuYip0LHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3JldHVybiB0aGlzfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybi0uNTw9dGhpcy5yJiZ0aGlzLnI8MjU1LjUmJi0uNTw9dGhpcy5nJiZ0aGlzLmc8MjU1LjUmJi0uNTw9dGhpcy5iJiZ0aGlzLmI8MjU1LjUmJjA8PXRoaXMub3BhY2l0eSYmdGhpcy5vcGFjaXR5PD0xfSxoZXg6cmQsZm9ybWF0SGV4OnJkLGZvcm1hdFJnYjpvZCx0b1N0cmluZzpvZH0pKSxSaCh1ZCxjZCxPaCh6aCx7YnJpZ2h0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD9CaDpNYXRoLnBvdyhCaCx0KSxuZXcgdWQodGhpcy5oLHRoaXMucyx0aGlzLmwqdCx0aGlzLm9wYWNpdHkpfSxkYXJrZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD9EaDpNYXRoLnBvdyhEaCx0KSxuZXcgdWQodGhpcy5oLHRoaXMucyx0aGlzLmwqdCx0aGlzLm9wYWNpdHkpfSxyZ2I6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmglMzYwKzM2MCoodGhpcy5oPDApLGU9aXNOYU4odCl8fGlzTmFOKHRoaXMucyk/MDp0aGlzLnMsbj10aGlzLmwsaT1uKyhuPC41P246MS1uKSplLHI9MipuLWk7cmV0dXJuIG5ldyBpZChoZCh0Pj0yNDA/dC0yNDA6dCsxMjAscixpKSxoZCh0LHIsaSksaGQodDwxMjA/dCsyNDA6dC0xMjAscixpKSx0aGlzLm9wYWNpdHkpfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybigwPD10aGlzLnMmJnRoaXMuczw9MXx8aXNOYU4odGhpcy5zKSkmJjA8PXRoaXMubCYmdGhpcy5sPD0xJiYwPD10aGlzLm9wYWNpdHkmJnRoaXMub3BhY2l0eTw9MX0sZm9ybWF0SHNsOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcGFjaXR5O3JldHVybigxPT09KHQ9aXNOYU4odCk/MTpNYXRoLm1heCgwLE1hdGgubWluKDEsdCkpKT8iaHNsKCI6ImhzbGEoIikrKHRoaXMuaHx8MCkrIiwgIisxMDAqKHRoaXMuc3x8MCkrIiUsICIrMTAwKih0aGlzLmx8fDApKyIlIisoMT09PXQ/IikiOiIsICIrdCsiKSIpfX0pKTt2YXIgcGQ9TWF0aC5QSS8xODAsZmQ9MTgwL01hdGguUEksbWQ9Ljk2NDIyLGdkPS44MjUyMSxfZD00LzI5LHlkPTYvMjksdmQ9Myp5ZCp5ZDtmdW5jdGlvbiBiZCh0KXtpZih0IGluc3RhbmNlb2Ygd2QpcmV0dXJuIG5ldyB3ZCh0LmwsdC5hLHQuYix0Lm9wYWNpdHkpO2lmKHQgaW5zdGFuY2VvZiBrZClyZXR1cm4gTGQodCk7dCBpbnN0YW5jZW9mIGlkfHwodD1lZCh0KSk7dmFyIGUsbixpPVRkKHQucikscj1UZCh0LmcpLG89VGQodC5iKSxhPVNkKCguMjIyNTA0NSppKy43MTY4Nzg2KnIrLjA2MDYxNjkqbykvMSk7cmV0dXJuIGk9PT1yJiZyPT09bz9lPW49YTooZT1TZCgoLjQzNjA3NDcqaSsuMzg1MDY0OSpyKy4xNDMwODA0Km8pL21kKSxuPVNkKCguMDEzOTMyMippKy4wOTcxMDQ1KnIrLjcxNDE3MzMqbykvZ2QpKSxuZXcgd2QoMTE2KmEtMTYsNTAwKihlLWEpLDIwMCooYS1uKSx0Lm9wYWNpdHkpfWZ1bmN0aW9uIHhkKHQsZSxuLGkpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9iZCh0KTpuZXcgd2QodCxlLG4sbnVsbD09aT8xOmkpfWZ1bmN0aW9uIHdkKHQsZSxuLGkpe3RoaXMubD0rdCx0aGlzLmE9K2UsdGhpcy5iPStuLHRoaXMub3BhY2l0eT0raX1mdW5jdGlvbiBTZCh0KXtyZXR1cm4gdD4uMDA4ODU2NDUxNjc5MDM1NjMxP01hdGgucG93KHQsMS8zKTp0L3ZkK19kfWZ1bmN0aW9uIE1kKHQpe3JldHVybiB0PnlkP3QqdCp0OnZkKih0LV9kKX1mdW5jdGlvbiBFZCh0KXtyZXR1cm4gMjU1Kih0PD0uMDAzMTMwOD8xMi45Mip0OjEuMDU1Kk1hdGgucG93KHQsMS8yLjQpLS4wNTUpfWZ1bmN0aW9uIFRkKHQpe3JldHVybih0Lz0yNTUpPD0uMDQwNDU/dC8xMi45MjpNYXRoLnBvdygodCsuMDU1KS8xLjA1NSwyLjQpfWZ1bmN0aW9uIENkKHQpe2lmKHQgaW5zdGFuY2VvZiBrZClyZXR1cm4gbmV3IGtkKHQuaCx0LmMsdC5sLHQub3BhY2l0eSk7aWYodCBpbnN0YW5jZW9mIHdkfHwodD1iZCh0KSksMD09PXQuYSYmMD09PXQuYilyZXR1cm4gbmV3IGtkKE5hTiwwPHQubCYmdC5sPDEwMD8wOk5hTix0LmwsdC5vcGFjaXR5KTt2YXIgZT1NYXRoLmF0YW4yKHQuYix0LmEpKmZkO3JldHVybiBuZXcga2QoZTwwP2UrMzYwOmUsTWF0aC5zcXJ0KHQuYSp0LmErdC5iKnQuYiksdC5sLHQub3BhY2l0eSl9ZnVuY3Rpb24gQWQodCxlLG4saSl7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP0NkKHQpOm5ldyBrZCh0LGUsbixudWxsPT1pPzE6aSl9ZnVuY3Rpb24ga2QodCxlLG4saSl7dGhpcy5oPSt0LHRoaXMuYz0rZSx0aGlzLmw9K24sdGhpcy5vcGFjaXR5PStpfWZ1bmN0aW9uIExkKHQpe2lmKGlzTmFOKHQuaCkpcmV0dXJuIG5ldyB3ZCh0LmwsMCwwLHQub3BhY2l0eSk7dmFyIGU9dC5oKnBkO3JldHVybiBuZXcgd2QodC5sLE1hdGguY29zKGUpKnQuYyxNYXRoLnNpbihlKSp0LmMsdC5vcGFjaXR5KX1SaCh3ZCx4ZCxPaCh6aCx7YnJpZ2h0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyB3ZCh0aGlzLmwrMTgqKG51bGw9PXQ/MTp0KSx0aGlzLmEsdGhpcy5iLHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IHdkKHRoaXMubC0xOCoobnVsbD09dD8xOnQpLHRoaXMuYSx0aGlzLmIsdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7dmFyIHQ9KHRoaXMubCsxNikvMTE2LGU9aXNOYU4odGhpcy5hKT90OnQrdGhpcy5hLzUwMCxuPWlzTmFOKHRoaXMuYik/dDp0LXRoaXMuYi8yMDA7cmV0dXJuIG5ldyBpZChFZCgzLjEzMzg1NjEqKGU9bWQqTWQoZSkpLTEuNjE2ODY2NyoodD0xKk1kKHQpKS0uNDkwNjE0Nioobj1nZCpNZChuKSkpLEVkKC0uOTc4NzY4NCplKzEuOTE2MTQxNSp0Ky4wMzM0NTQqbiksRWQoLjA3MTk0NTMqZS0uMjI4OTkxNCp0KzEuNDA1MjQyNypuKSx0aGlzLm9wYWNpdHkpfX0pKSxSaChrZCxBZCxPaCh6aCx7YnJpZ2h0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBrZCh0aGlzLmgsdGhpcy5jLHRoaXMubCsxOCoobnVsbD09dD8xOnQpLHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IGtkKHRoaXMuaCx0aGlzLmMsdGhpcy5sLTE4KihudWxsPT10PzE6dCksdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7cmV0dXJuIExkKHRoaXMpLnJnYigpfX0pKTt2YXIgUGQ9LS4xNDg2MSxOZD0xLjc4Mjc3LElkPS0uMjkyMjcsUmQ9LS45MDY0OSxPZD0xLjk3Mjk0LHpkPU9kKlJkLERkPU9kKk5kLEJkPU5kKklkLVJkKlBkO2Z1bmN0aW9uIEhkKHQpe2lmKHQgaW5zdGFuY2VvZiBWZClyZXR1cm4gbmV3IFZkKHQuaCx0LnMsdC5sLHQub3BhY2l0eSk7dCBpbnN0YW5jZW9mIGlkfHwodD1lZCh0KSk7dmFyIGU9dC5nLzI1NSxuPXQuYi8yNTUsaT0oQmQqbit6ZCoodC5yLzI1NSktRGQqZSkvLTUuOTYxNTEyMjkxMixyPW4taSxvPShPZCooZS1pKS1JZCpyKS9SZCxhPU1hdGguc3FydChvKm8rcipyKS8oT2QqaSooMS1pKSkscz1hP01hdGguYXRhbjIobyxyKSpmZC0xMjA6TmFOO3JldHVybiBuZXcgVmQoczwwP3MrMzYwOnMsYSxpLHQub3BhY2l0eSl9ZnVuY3Rpb24gRmQodCxlLG4saSl7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP0hkKHQpOm5ldyBWZCh0LGUsbixudWxsPT1pPzE6aSl9ZnVuY3Rpb24gVmQodCxlLG4saSl7dGhpcy5oPSt0LHRoaXMucz0rZSx0aGlzLmw9K24sdGhpcy5vcGFjaXR5PStpfWZ1bmN0aW9uIFVkKHQsZSxuLGkscil7dmFyIG89dCp0LGE9byp0O3JldHVybigoMS0zKnQrMypvLWEpKmUrKDQtNipvKzMqYSkqbisoMSszKnQrMypvLTMqYSkqaSthKnIpLzZ9ZnVuY3Rpb24gamQodCl7dmFyIGU9dC5sZW5ndGgtMTtyZXR1cm4gZnVuY3Rpb24obil7dmFyIGk9bjw9MD9uPTA6bj49MT8obj0xLGUtMSk6TWF0aC5mbG9vcihuKmUpLHI9dFtpXSxvPXRbaSsxXTtyZXR1cm4gVWQoKG4taS9lKSplLGk+MD90W2ktMV06MipyLW8scixvLGk8ZS0xP3RbaSsyXToyKm8tcil9fWZ1bmN0aW9uIEdkKHQpe3ZhciBlPXQubGVuZ3RoO3JldHVybiBmdW5jdGlvbihuKXt2YXIgaT1NYXRoLmZsb29yKCgobiU9MSk8MD8rK246bikqZSk7cmV0dXJuIFVkKChuLWkvZSkqZSx0WyhpK2UtMSklZV0sdFtpJWVdLHRbKGkrMSklZV0sdFsoaSsyKSVlXSl9fWZ1bmN0aW9uIFdkKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX1mdW5jdGlvbiBxZCh0LGUpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gdCtuKmV9fWZ1bmN0aW9uIFlkKHQsZSl7dmFyIG49ZS10O3JldHVybiBuP3FkKHQsbj4xODB8fG48LTE4MD9uLTM2MCpNYXRoLnJvdW5kKG4vMzYwKTpuKTpXZChpc05hTih0KT9lOnQpfWZ1bmN0aW9uIFhkKHQpe3JldHVybiAxPT0odD0rdCk/JGQ6ZnVuY3Rpb24oZSxuKXtyZXR1cm4gbi1lPyhmdW5jdGlvbiBpKHQsZSxuKXtyZXR1cm4gdD1NYXRoLnBvdyh0LG4pLGU9TWF0aC5wb3coZSxuKS10LG49MS9uLGZ1bmN0aW9uKGkpe3JldHVybiBNYXRoLnBvdyh0K2kqZSxuKX19KShlLG4sdCk6V2QoaXNOYU4oZSk/bjplKX19ZnVuY3Rpb24gJGQodCxlKXt2YXIgbj1lLXQ7cmV0dXJuIG4/cWQodCxuKTpXZChpc05hTih0KT9lOnQpfVJoKFZkLEZkLE9oKHpoLHticmlnaHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10P0JoOk1hdGgucG93KEJoLHQpLG5ldyBWZCh0aGlzLmgsdGhpcy5zLHRoaXMubCp0LHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10P0RoOk1hdGgucG93KERoLHQpLG5ldyBWZCh0aGlzLmgsdGhpcy5zLHRoaXMubCp0LHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3ZhciB0PWlzTmFOKHRoaXMuaCk/MDoodGhpcy5oKzEyMCkqcGQsZT0rdGhpcy5sLG49aXNOYU4odGhpcy5zKT8wOnRoaXMucyplKigxLWUpLGk9TWF0aC5jb3ModCkscj1NYXRoLnNpbih0KTtyZXR1cm4gbmV3IGlkKDI1NSooZStuKihQZCppK05kKnIpKSwyNTUqKGUrbiooSWQqaStSZCpyKSksMjU1KihlK24qKE9kKmkpKSx0aGlzLm9wYWNpdHkpfX0pKTt2YXIgS2Q9KGZ1bmN0aW9uIHQoZSl7dmFyIG49WGQoZSk7ZnVuY3Rpb24gaSh0LGUpe3ZhciBpPW4oKHQ9bmQodCkpLnIsKGU9bmQoZSkpLnIpLHI9bih0LmcsZS5nKSxvPW4odC5iLGUuYiksYT0kZCh0Lm9wYWNpdHksZS5vcGFjaXR5KTtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHQucj1pKGUpLHQuZz1yKGUpLHQuYj1vKGUpLHQub3BhY2l0eT1hKGUpLHQrIiJ9fXJldHVybiBpLmdhbW1hPXQsaX0pKDEpO2Z1bmN0aW9uIFpkKHQpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgbixpLHI9ZS5sZW5ndGgsbz1uZXcgQXJyYXkociksYT1uZXcgQXJyYXkocikscz1uZXcgQXJyYXkocik7Zm9yKG49MDtuPHI7KytuKWk9bmQoZVtuXSksb1tuXT1pLnJ8fDAsYVtuXT1pLmd8fDAsc1tuXT1pLmJ8fDA7cmV0dXJuIG89dChvKSxhPXQoYSkscz10KHMpLGkub3BhY2l0eT0xLGZ1bmN0aW9uKHQpe3JldHVybiBpLnI9byh0KSxpLmc9YSh0KSxpLmI9cyh0KSxpKyIifX19dmFyIEpkPVpkKGpkKSxRZD1aZChHZCk7ZnVuY3Rpb24gdHAodCxlKXtlfHwoZT1bXSk7dmFyIG4saT10P01hdGgubWluKGUubGVuZ3RoLHQubGVuZ3RoKTowLHI9ZS5zbGljZSgpO3JldHVybiBmdW5jdGlvbihvKXtmb3Iobj0wO248aTsrK24pcltuXT10W25dKigxLW8pK2Vbbl0qbztyZXR1cm4gcn19ZnVuY3Rpb24gZXAodCl7cmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh0KSYmISh0IGluc3RhbmNlb2YgRGF0YVZpZXcpfWZ1bmN0aW9uIG5wKHQsZSl7dmFyIG4saT1lP2UubGVuZ3RoOjAscj10P01hdGgubWluKGksdC5sZW5ndGgpOjAsbz1uZXcgQXJyYXkociksYT1uZXcgQXJyYXkoaSk7Zm9yKG49MDtuPHI7KytuKW9bbl09Y3AodFtuXSxlW25dKTtmb3IoO248aTsrK24pYVtuXT1lW25dO3JldHVybiBmdW5jdGlvbih0KXtmb3Iobj0wO248cjsrK24pYVtuXT1vW25dKHQpO3JldHVybiBhfX1mdW5jdGlvbiBpcCh0LGUpe3ZhciBuPW5ldyBEYXRlO3JldHVybiB0PSt0LGU9K2UsZnVuY3Rpb24oaSl7cmV0dXJuIG4uc2V0VGltZSh0KigxLWkpK2UqaSksbn19ZnVuY3Rpb24gcnAodCxlKXtyZXR1cm4gdD0rdCxlPStlLGZ1bmN0aW9uKG4pe3JldHVybiB0KigxLW4pK2Uqbn19ZnVuY3Rpb24gb3AodCxlKXt2YXIgbixpPXt9LHI9e307Zm9yKG4gaW4gbnVsbCE9PXQmJiJvYmplY3QiPT10eXBlb2YgdHx8KHQ9e30pLG51bGwhPT1lJiYib2JqZWN0Ij09dHlwZW9mIGV8fChlPXt9KSxlKW4gaW4gdD9pW25dPWNwKHRbbl0sZVtuXSk6cltuXT1lW25dO3JldHVybiBmdW5jdGlvbih0KXtmb3IobiBpbiBpKXJbbl09aVtuXSh0KTtyZXR1cm4gcn19dmFyIGFwPS9bLStdPyg/OlxkK1wuP1xkKnxcLj9cZCspKD86W2VFXVstK10/XGQrKT8vZyxzcD1uZXcgUmVnRXhwKGFwLnNvdXJjZSwiZyIpO2Z1bmN0aW9uIGxwKHQsZSl7dmFyIG4saSxyLG89YXAubGFzdEluZGV4PXNwLmxhc3RJbmRleD0wLGE9LTEscz1bXSxsPVtdO2Zvcih0Kz0iIixlKz0iIjsobj1hcC5leGVjKHQpKSYmKGk9c3AuZXhlYyhlKSk7KShyPWkuaW5kZXgpPm8mJihyPWUuc2xpY2UobyxyKSxzW2FdP3NbYV0rPXI6c1srK2FdPXIpLChuPW5bMF0pPT09KGk9aVswXSk/c1thXT9zW2FdKz1pOnNbKythXT1pOihzWysrYV09bnVsbCxsLnB1c2goe2k6YSx4OnJwKG4saSl9KSksbz1zcC5sYXN0SW5kZXg7cmV0dXJuIG88ZS5sZW5ndGgmJihyPWUuc2xpY2Uobyksc1thXT9zW2FdKz1yOnNbKythXT1yKSxzLmxlbmd0aDwyP2xbMF0/KGZ1bmN0aW9uIGModCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0KGUpKyIifX0pKGxbMF0ueCk6KGZ1bmN0aW9uIHUodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fSkoZSk6KGU9bC5sZW5ndGgsZnVuY3Rpb24odCl7Zm9yKHZhciBuLGk9MDtpPGU7KytpKXNbKG49bFtpXSkuaV09bi54KHQpO3JldHVybiBzLmpvaW4oIiIpfSl9ZnVuY3Rpb24gY3AodCxlKXt2YXIgbixpPXR5cGVvZiBlO3JldHVybiBudWxsPT1lfHwiYm9vbGVhbiI9PT1pP1dkKGUpOigibnVtYmVyIj09PWk/cnA6InN0cmluZyI9PT1pPyhuPUpoKGUpKT8oZT1uLEtkKTpscDplIGluc3RhbmNlb2YgSmg/S2Q6ZSBpbnN0YW5jZW9mIERhdGU/aXA6ZXAoZSk/dHA6QXJyYXkuaXNBcnJheShlKT9ucDoiZnVuY3Rpb24iIT10eXBlb2YgZS52YWx1ZU9mJiYiZnVuY3Rpb24iIT10eXBlb2YgZS50b1N0cmluZ3x8aXNOYU4oZSk/b3A6cnApKHQsZSl9ZnVuY3Rpb24gdXAodCxlKXtyZXR1cm4gdD0rdCxlPStlLGZ1bmN0aW9uKG4pe3JldHVybiBNYXRoLnJvdW5kKHQqKDEtbikrZSpuKX19dmFyIGhwLGRwLHBwLGZwLG1wPTE4MC9NYXRoLlBJLGdwPXt0cmFuc2xhdGVYOjAsdHJhbnNsYXRlWTowLHJvdGF0ZTowLHNrZXdYOjAsc2NhbGVYOjEsc2NhbGVZOjF9O2Z1bmN0aW9uIF9wKHQsZSxuLGkscixvKXt2YXIgYSxzLGw7cmV0dXJuKGE9TWF0aC5zcXJ0KHQqdCtlKmUpKSYmKHQvPWEsZS89YSksKGw9dCpuK2UqaSkmJihuLT10KmwsaS09ZSpsKSwocz1NYXRoLnNxcnQobipuK2kqaSkpJiYobi89cyxpLz1zLGwvPXMpLHQqaTxlKm4mJih0PS10LGU9LWUsbD0tbCxhPS1hKSx7dHJhbnNsYXRlWDpyLHRyYW5zbGF0ZVk6byxyb3RhdGU6TWF0aC5hdGFuMihlLHQpKm1wLHNrZXdYOk1hdGguYXRhbihsKSptcCxzY2FsZVg6YSxzY2FsZVk6c319ZnVuY3Rpb24geXAodCxlLG4saSl7ZnVuY3Rpb24gcih0KXtyZXR1cm4gdC5sZW5ndGg/dC5wb3AoKSsiICI6IiJ9cmV0dXJuIGZ1bmN0aW9uKG8sYSl7dmFyIHM9W10sbD1bXTtyZXR1cm4gbz10KG8pLGE9dChhKSwoZnVuY3Rpb24gYyh0LGkscixvLGEscyl7aWYodCE9PXJ8fGkhPT1vKXt2YXIgbD1hLnB1c2goInRyYW5zbGF0ZSgiLG51bGwsZSxudWxsLG4pO3MucHVzaCh7aTpsLTQseDpycCh0LHIpfSx7aTpsLTIseDpycChpLG8pfSl9ZWxzZShyfHxvKSYmYS5wdXNoKCJ0cmFuc2xhdGUoIityK2UrbytuKX0pKG8udHJhbnNsYXRlWCxvLnRyYW5zbGF0ZVksYS50cmFuc2xhdGVYLGEudHJhbnNsYXRlWSxzLGwpLChmdW5jdGlvbiB1KHQsZSxuLG8pe3QhPT1lPyh0LWU+MTgwP2UrPTM2MDplLXQ+MTgwJiYodCs9MzYwKSxvLnB1c2goe2k6bi5wdXNoKHIobikrInJvdGF0ZSgiLG51bGwsaSktMix4OnJwKHQsZSl9KSk6ZSYmbi5wdXNoKHIobikrInJvdGF0ZSgiK2UraSl9KShvLnJvdGF0ZSxhLnJvdGF0ZSxzLGwpLChmdW5jdGlvbiBoKHQsZSxuLG8pe3QhPT1lP28ucHVzaCh7aTpuLnB1c2gocihuKSsic2tld1goIixudWxsLGkpLTIseDpycCh0LGUpfSk6ZSYmbi5wdXNoKHIobikrInNrZXdYKCIrZStpKX0pKG8uc2tld1gsYS5za2V3WCxzLGwpLChmdW5jdGlvbiBkKHQsZSxuLGksbyxhKXtpZih0IT09bnx8ZSE9PWkpe3ZhciBzPW8ucHVzaChyKG8pKyJzY2FsZSgiLG51bGwsIiwiLG51bGwsIikiKTthLnB1c2goe2k6cy00LHg6cnAodCxuKX0se2k6cy0yLHg6cnAoZSxpKX0pfWVsc2UgMT09PW4mJjE9PT1pfHxvLnB1c2gocihvKSsic2NhbGUoIituKyIsIitpKyIpIil9KShvLnNjYWxlWCxvLnNjYWxlWSxhLnNjYWxlWCxhLnNjYWxlWSxzLGwpLG89YT1udWxsLGZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxuPS0xLGk9bC5sZW5ndGg7KytuPGk7KXNbKGU9bFtuXSkuaV09ZS54KHQpO3JldHVybiBzLmpvaW4oIiIpfX19dmFyIHZwPXlwKChmdW5jdGlvbiBicCh0KXtyZXR1cm4ibm9uZSI9PT10P2dwOihocHx8KGhwPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIkRJViIpLGRwPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxwcD1kb2N1bWVudC5kZWZhdWx0VmlldyksaHAuc3R5bGUudHJhbnNmb3JtPXQsdD1wcC5nZXRDb21wdXRlZFN0eWxlKGRwLmFwcGVuZENoaWxkKGhwKSxudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCJ0cmFuc2Zvcm0iKSxkcC5yZW1vdmVDaGlsZChocCksX3AoKyh0PXQuc2xpY2UoNywtMSkuc3BsaXQoIiwiKSlbMF0sK3RbMV0sK3RbMl0sK3RbM10sK3RbNF0sK3RbNV0pKX0pLCJweCwgIiwicHgpIiwiZGVnKSIpLHhwPXlwKChmdW5jdGlvbiB3cCh0KXtyZXR1cm4gbnVsbD09dD9ncDooZnB8fChmcD1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwiZyIpKSxmcC5zZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIsdCksKHQ9ZnAudHJhbnNmb3JtLmJhc2VWYWwuY29uc29saWRhdGUoKSk/X3AoKHQ9dC5tYXRyaXgpLmEsdC5iLHQuYyx0LmQsdC5lLHQuZik6Z3ApfSksIiwgIiwiKSIsIikiKSxTcD1NYXRoLlNRUlQyO2Z1bmN0aW9uIE1wKHQpe3JldHVybigodD1NYXRoLmV4cCh0KSkrMS90KS8yfWZ1bmN0aW9uIEVwKHQsZSl7dmFyIG4saSxyPXRbMF0sbz10WzFdLGE9dFsyXSxzPWVbMl0sbD1lWzBdLXIsYz1lWzFdLW8sdT1sKmwrYypjO2lmKHU8MWUtMTIpaT1NYXRoLmxvZyhzL2EpL1NwLG49ZnVuY3Rpb24odCl7cmV0dXJuW3IrdCpsLG8rdCpjLGEqTWF0aC5leHAoU3AqdCppKV19O2Vsc2V7dmFyIGg9TWF0aC5zcXJ0KHUpLGQ9KHMqcy1hKmErNCp1KS8oMiphKjIqaCkscD0ocypzLWEqYS00KnUpLygyKnMqMipoKSxmPU1hdGgubG9nKE1hdGguc3FydChkKmQrMSktZCksbT1NYXRoLmxvZyhNYXRoLnNxcnQocCpwKzEpLXApO2k9KG0tZikvU3Asbj1mdW5jdGlvbih0KXt2YXIgZT10Kmksbj1NcChmKSxzPWEvKDIqaCkqKG4qKGZ1bmN0aW9uIHUodCl7cmV0dXJuKCh0PU1hdGguZXhwKDIqdCkpLTEpLyh0KzEpfSkoU3AqZStmKS0oZnVuY3Rpb24gZCh0KXtyZXR1cm4oKHQ9TWF0aC5leHAodCkpLTEvdCkvMn0pKGYpKTtyZXR1cm5bcitzKmwsbytzKmMsYSpuL01wKFNwKmUrZildfX1yZXR1cm4gbi5kdXJhdGlvbj0xZTMqaSxufWZ1bmN0aW9uIFRwKHQpe3JldHVybiBmdW5jdGlvbihlLG4pe3ZhciBpPXQoKGU9Y2QoZSkpLmgsKG49Y2QobikpLmgpLHI9JGQoZS5zLG4ucyksbz0kZChlLmwsbi5sKSxhPSRkKGUub3BhY2l0eSxuLm9wYWNpdHkpO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZS5oPWkodCksZS5zPXIodCksZS5sPW8odCksZS5vcGFjaXR5PWEodCksZSsiIn19fXZhciBDcD1UcChZZCksQXA9VHAoJGQpO2Z1bmN0aW9uIGtwKHQsZSl7dmFyIG49JGQoKHQ9eGQodCkpLmwsKGU9eGQoZSkpLmwpLGk9JGQodC5hLGUuYSkscj0kZCh0LmIsZS5iKSxvPSRkKHQub3BhY2l0eSxlLm9wYWNpdHkpO3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gdC5sPW4oZSksdC5hPWkoZSksdC5iPXIoZSksdC5vcGFjaXR5PW8oZSksdCsiIn19ZnVuY3Rpb24gTHAodCl7cmV0dXJuIGZ1bmN0aW9uKGUsbil7dmFyIGk9dCgoZT1BZChlKSkuaCwobj1BZChuKSkuaCkscj0kZChlLmMsbi5jKSxvPSRkKGUubCxuLmwpLGE9JGQoZS5vcGFjaXR5LG4ub3BhY2l0eSk7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBlLmg9aSh0KSxlLmM9cih0KSxlLmw9byh0KSxlLm9wYWNpdHk9YSh0KSxlKyIifX19dmFyIFBwPUxwKFlkKSxOcD1McCgkZCk7ZnVuY3Rpb24gSXAodCl7cmV0dXJuKGZ1bmN0aW9uIGUobil7ZnVuY3Rpb24gaShlLGkpe3ZhciByPXQoKGU9RmQoZSkpLmgsKGk9RmQoaSkpLmgpLG89JGQoZS5zLGkucyksYT0kZChlLmwsaS5sKSxzPSRkKGUub3BhY2l0eSxpLm9wYWNpdHkpO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZS5oPXIodCksZS5zPW8odCksZS5sPWEoTWF0aC5wb3codCxuKSksZS5vcGFjaXR5PXModCksZSsiIn19cmV0dXJuIG49K24saS5nYW1tYT1lLGl9KSgxKX12YXIgUnA9SXAoWWQpLE9wPUlwKCRkKTt2YXIgenAsRHAsQnA9MCxIcD0wLEZwPTAsVnA9MCxVcD0wLGpwPTAsR3A9Im9iamVjdCI9PXR5cGVvZiBwZXJmb3JtYW5jZSYmcGVyZm9ybWFuY2Uubm93P3BlcmZvcm1hbmNlOkRhdGUsV3A9Im9iamVjdCI9PXR5cGVvZiB3aW5kb3cmJndpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWU/d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZS5iaW5kKHdpbmRvdyk6ZnVuY3Rpb24odCl7c2V0VGltZW91dCh0LDE3KX07ZnVuY3Rpb24gcXAoKXtyZXR1cm4gVXB8fChXcChZcCksVXA9R3Aubm93KCkranApfWZ1bmN0aW9uIFlwKCl7VXA9MH1mdW5jdGlvbiBYcCgpe3RoaXMuX2NhbGw9dGhpcy5fdGltZT10aGlzLl9uZXh0PW51bGx9ZnVuY3Rpb24gJHAodCxlLG4pe3ZhciBpPW5ldyBYcDtyZXR1cm4gaS5yZXN0YXJ0KHQsZSxuKSxpfWZ1bmN0aW9uIEtwKCl7cXAoKSwrK0JwO2Zvcih2YXIgdCxlPXpwO2U7KSh0PVVwLWUuX3RpbWUpPj0wJiZlLl9jYWxsLmNhbGwobnVsbCx0KSxlPWUuX25leHQ7LS1CcH1mdW5jdGlvbiBacCgpe1VwPShWcD1HcC5ub3coKSkranAsQnA9SHA9MDt0cnl7S3AoKX1maW5hbGx5e0JwPTAsKGZ1bmN0aW9uIHQoKXt2YXIgdCxlLG49enAsaT0xLzA7Zm9yKDtuOyluLl9jYWxsPyhpPm4uX3RpbWUmJihpPW4uX3RpbWUpLHQ9bixuPW4uX25leHQpOihlPW4uX25leHQsbi5fbmV4dD1udWxsLG49dD90Ll9uZXh0PWU6enA9ZSk7RHA9dCxRcChpKX0pKCksVXA9MH19ZnVuY3Rpb24gSnAoKXt2YXIgdD1HcC5ub3coKSxlPXQtVnA7ZT4xZTMmJihqcC09ZSxWcD10KX1mdW5jdGlvbiBRcCh0KXtCcHx8KEhwJiYoSHA9Y2xlYXJUaW1lb3V0KEhwKSksdC1VcD4yND8odDwxLzAmJihIcD1zZXRUaW1lb3V0KFpwLHQtR3Aubm93KCktanApKSxGcCYmKEZwPWNsZWFySW50ZXJ2YWwoRnApKSk6KEZwfHwoVnA9R3Aubm93KCksRnA9c2V0SW50ZXJ2YWwoSnAsMWUzKSksQnA9MSxXcChacCkpKX1mdW5jdGlvbiB0Zih0LGUsbil7dmFyIGk9bmV3IFhwO3JldHVybiBpLnJlc3RhcnQoKGZ1bmN0aW9uKG4pe2kuc3RvcCgpLHQobitlKX0pLGU9bnVsbD09ZT8wOitlLG4pLGl9WHAucHJvdG90eXBlPSRwLnByb3RvdHlwZT17Y29uc3RydWN0b3I6WHAscmVzdGFydDpmdW5jdGlvbih0LGUsbil7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcigiY2FsbGJhY2sgaXMgbm90IGEgZnVuY3Rpb24iKTtuPShudWxsPT1uP3FwKCk6K24pKyhudWxsPT1lPzA6K2UpLHRoaXMuX25leHR8fERwPT09dGhpc3x8KERwP0RwLl9uZXh0PXRoaXM6enA9dGhpcyxEcD10aGlzKSx0aGlzLl9jYWxsPXQsdGhpcy5fdGltZT1uLFFwKCl9LHN0b3A6ZnVuY3Rpb24oKXt0aGlzLl9jYWxsJiYodGhpcy5fY2FsbD1udWxsLHRoaXMuX3RpbWU9MS8wLFFwKCkpfX07dmFyIGVmPXdjKCJzdGFydCIsImVuZCIsImNhbmNlbCIsImludGVycnVwdCIpLG5mPVtdO2Z1bmN0aW9uIHJmKHQsZSxuLGkscixvKXt2YXIgYT10Ll9fdHJhbnNpdGlvbjtpZihhKXtpZihuIGluIGEpcmV0dXJufWVsc2UgdC5fX3RyYW5zaXRpb249e307IShmdW5jdGlvbiBzKHQsZSxuKXt2YXIgaSxyPXQuX190cmFuc2l0aW9uO2Z1bmN0aW9uIG8odCl7bi5zdGF0ZT0xLG4udGltZXIucmVzdGFydChhLG4uZGVsYXksbi50aW1lKSxuLmRlbGF5PD10JiZhKHQtbi5kZWxheSl9ZnVuY3Rpb24gYShvKXt2YXIgYyx1LGgsZDtpZigxIT09bi5zdGF0ZSlyZXR1cm4gbCgpO2ZvcihjIGluIHIpaWYoKGQ9cltjXSkubmFtZT09PW4ubmFtZSl7aWYoMz09PWQuc3RhdGUpcmV0dXJuIHRmKGEpOzQ9PT1kLnN0YXRlPyhkLnN0YXRlPTYsZC50aW1lci5zdG9wKCksZC5vbi5jYWxsKCJpbnRlcnJ1cHQiLHQsdC5fX2RhdGFfXyxkLmluZGV4LGQuZ3JvdXApLGRlbGV0ZSByW2NdKTorYzxlJiYoZC5zdGF0ZT02LGQudGltZXIuc3RvcCgpLGQub24uY2FsbCgiY2FuY2VsIix0LHQuX19kYXRhX18sZC5pbmRleCxkLmdyb3VwKSxkZWxldGUgcltjXSl9aWYodGYoKGZ1bmN0aW9uKCl7Mz09PW4uc3RhdGUmJihuLnN0YXRlPTQsbi50aW1lci5yZXN0YXJ0KHMsbi5kZWxheSxuLnRpbWUpLHMobykpfSkpLG4uc3RhdGU9MixuLm9uLmNhbGwoInN0YXJ0Iix0LHQuX19kYXRhX18sbi5pbmRleCxuLmdyb3VwKSwyPT09bi5zdGF0ZSl7Zm9yKG4uc3RhdGU9MyxpPW5ldyBBcnJheShoPW4udHdlZW4ubGVuZ3RoKSxjPTAsdT0tMTtjPGg7KytjKShkPW4udHdlZW5bY10udmFsdWUuY2FsbCh0LHQuX19kYXRhX18sbi5pbmRleCxuLmdyb3VwKSkmJihpWysrdV09ZCk7aS5sZW5ndGg9dSsxfX1mdW5jdGlvbiBzKGUpe2Zvcih2YXIgcj1lPG4uZHVyYXRpb24/bi5lYXNlLmNhbGwobnVsbCxlL24uZHVyYXRpb24pOihuLnRpbWVyLnJlc3RhcnQobCksbi5zdGF0ZT01LDEpLG89LTEsYT1pLmxlbmd0aDsrK288YTspaVtvXS5jYWxsKHQscik7NT09PW4uc3RhdGUmJihuLm9uLmNhbGwoImVuZCIsdCx0Ll9fZGF0YV9fLG4uaW5kZXgsbi5ncm91cCksbCgpKX1mdW5jdGlvbiBsKCl7Zm9yKHZhciBpIGluIG4uc3RhdGU9NixuLnRpbWVyLnN0b3AoKSxkZWxldGUgcltlXSxyKXJldHVybjtkZWxldGUgdC5fX3RyYW5zaXRpb259cltlXT1uLG4udGltZXI9JHAobywwLG4udGltZSl9KSh0LG4se25hbWU6ZSxpbmRleDppLGdyb3VwOnIsb246ZWYsdHdlZW46bmYsdGltZTpvLnRpbWUsZGVsYXk6by5kZWxheSxkdXJhdGlvbjpvLmR1cmF0aW9uLGVhc2U6by5lYXNlLHRpbWVyOm51bGwsc3RhdGU6MH0pfWZ1bmN0aW9uIG9mKHQsZSl7dmFyIG49c2YodCxlKTtpZihuLnN0YXRlPjApdGhyb3cgbmV3IEVycm9yKCJ0b28gbGF0ZTsgYWxyZWFkeSBzY2hlZHVsZWQiKTtyZXR1cm4gbn1mdW5jdGlvbiBhZih0LGUpe3ZhciBuPXNmKHQsZSk7aWYobi5zdGF0ZT4zKXRocm93IG5ldyBFcnJvcigidG9vIGxhdGU7IGFscmVhZHkgcnVubmluZyIpO3JldHVybiBufWZ1bmN0aW9uIHNmKHQsZSl7dmFyIG49dC5fX3RyYW5zaXRpb247aWYoIW58fCEobj1uW2VdKSl0aHJvdyBuZXcgRXJyb3IoInRyYW5zaXRpb24gbm90IGZvdW5kIik7cmV0dXJuIG59ZnVuY3Rpb24gbGYodCxlKXt2YXIgbixpLHIsbz10Ll9fdHJhbnNpdGlvbixhPSEwO2lmKG8pe2ZvcihyIGluIGU9bnVsbD09ZT9udWxsOmUrIiIsbykobj1vW3JdKS5uYW1lPT09ZT8oaT1uLnN0YXRlPjImJm4uc3RhdGU8NSxuLnN0YXRlPTYsbi50aW1lci5zdG9wKCksbi5vbi5jYWxsKGk/ImludGVycnVwdCI6ImNhbmNlbCIsdCx0Ll9fZGF0YV9fLG4uaW5kZXgsbi5ncm91cCksZGVsZXRlIG9bcl0pOmE9ITE7YSYmZGVsZXRlIHQuX190cmFuc2l0aW9ufX1mdW5jdGlvbiBjZih0LGUpe3ZhciBuLGk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHI9YWYodGhpcyx0KSxvPXIudHdlZW47aWYobyE9PW4pZm9yKHZhciBhPTAscz0oaT1uPW8pLmxlbmd0aDthPHM7KythKWlmKGlbYV0ubmFtZT09PWUpeyhpPWkuc2xpY2UoKSkuc3BsaWNlKGEsMSk7YnJlYWt9ci50d2Vlbj1pfX1mdW5jdGlvbiB1Zih0LGUsbil7dmFyIGkscjtpZigiZnVuY3Rpb24iIT10eXBlb2Ygbil0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG89YWYodGhpcyx0KSxhPW8udHdlZW47aWYoYSE9PWkpe3I9KGk9YSkuc2xpY2UoKTtmb3IodmFyIHM9e25hbWU6ZSx2YWx1ZTpufSxsPTAsYz1yLmxlbmd0aDtsPGM7KytsKWlmKHJbbF0ubmFtZT09PWUpe3JbbF09czticmVha31sPT09YyYmci5wdXNoKHMpfW8udHdlZW49cn19ZnVuY3Rpb24gaGYodCxlLG4pe3ZhciBpPXQuX2lkO3JldHVybiB0LmVhY2goKGZ1bmN0aW9uKCl7dmFyIHQ9YWYodGhpcyxpKTsodC52YWx1ZXx8KHQudmFsdWU9e30pKVtlXT1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pKSxmdW5jdGlvbih0KXtyZXR1cm4gc2YodCxpKS52YWx1ZVtlXX19ZnVuY3Rpb24gZGYodCxlKXt2YXIgbjtyZXR1cm4oIm51bWJlciI9PXR5cGVvZiBlP3JwOmUgaW5zdGFuY2VvZiBKaD9LZDoobj1KaChlKSk/KGU9bixLZCk6bHApKHQsZSl9ZnVuY3Rpb24gcGYodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGUodCl9fWZ1bmN0aW9uIGZmKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMucmVtb3ZlQXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKX19ZnVuY3Rpb24gbWYodCxlLG4pe3ZhciBpLHIsbz1uKyIiO3JldHVybiBmdW5jdGlvbigpe3ZhciBhPXRoaXMuZ2V0QXR0cmlidXRlKHQpO3JldHVybiBhPT09bz9udWxsOmE9PT1pP3I6cj1lKGk9YSxuKX19ZnVuY3Rpb24gZ2YodCxlLG4pe3ZhciBpLHIsbz1uKyIiO3JldHVybiBmdW5jdGlvbigpe3ZhciBhPXRoaXMuZ2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKTtyZXR1cm4gYT09PW8/bnVsbDphPT09aT9yOnI9ZShpPWEsbil9fWZ1bmN0aW9uIF9mKHQsZSxuKXt2YXIgaSxyLG87cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGEscyxsPW4odGhpcyk7aWYobnVsbCE9bClyZXR1cm4oYT10aGlzLmdldEF0dHJpYnV0ZSh0KSk9PT0ocz1sKyIiKT9udWxsOmE9PT1pJiZzPT09cj9vOihyPXMsbz1lKGk9YSxsKSk7dGhpcy5yZW1vdmVBdHRyaWJ1dGUodCl9fWZ1bmN0aW9uIHlmKHQsZSxuKXt2YXIgaSxyLG87cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGEscyxsPW4odGhpcyk7aWYobnVsbCE9bClyZXR1cm4oYT10aGlzLmdldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCkpPT09KHM9bCsiIik/bnVsbDphPT09aSYmcz09PXI/bzoocj1zLG89ZShpPWEsbCkpO3RoaXMucmVtb3ZlQXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKX19ZnVuY3Rpb24gdmYodCxlKXtyZXR1cm4gZnVuY3Rpb24obil7dGhpcy5zZXRBdHRyaWJ1dGUodCxlLmNhbGwodGhpcyxuKSl9fWZ1bmN0aW9uIGJmKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3RoaXMuc2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsLGUuY2FsbCh0aGlzLG4pKX19ZnVuY3Rpb24geGYodCxlKXt2YXIgbixpO2Z1bmN0aW9uIHIoKXt2YXIgcj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gciE9PWkmJihuPShpPXIpJiZiZih0LHIpKSxufXJldHVybiByLl92YWx1ZT1lLHJ9ZnVuY3Rpb24gd2YodCxlKXt2YXIgbixpO2Z1bmN0aW9uIHIoKXt2YXIgcj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gciE9PWkmJihuPShpPXIpJiZ2Zih0LHIpKSxufXJldHVybiByLl92YWx1ZT1lLHJ9ZnVuY3Rpb24gU2YodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXtvZih0aGlzLHQpLmRlbGF5PStlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19ZnVuY3Rpb24gTWYodCxlKXtyZXR1cm4gZT0rZSxmdW5jdGlvbigpe29mKHRoaXMsdCkuZGVsYXk9ZX19ZnVuY3Rpb24gRWYodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXthZih0aGlzLHQpLmR1cmF0aW9uPStlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19ZnVuY3Rpb24gVGYodCxlKXtyZXR1cm4gZT0rZSxmdW5jdGlvbigpe2FmKHRoaXMsdCkuZHVyYXRpb249ZX19ZnVuY3Rpb24gQ2YodCxlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIGZ1bmN0aW9uKCl7YWYodGhpcyx0KS5lYXNlPWV9fWZ1bmN0aW9uIEFmKHQsZSxuKXt2YXIgaSxyLG89KGZ1bmN0aW9uIGEodCl7cmV0dXJuKHQrIiIpLnRyaW0oKS5zcGxpdCgvXnxccysvKS5ldmVyeSgoZnVuY3Rpb24odCl7dmFyIGU9dC5pbmRleE9mKCIuIik7cmV0dXJuIGU+PTAmJih0PXQuc2xpY2UoMCxlKSksIXR8fCJzdGFydCI9PT10fSkpfSkoZSk/b2Y6YWY7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGE9byh0aGlzLHQpLHM9YS5vbjtzIT09aSYmKHI9KGk9cykuY29weSgpKS5vbihlLG4pLGEub249cn19dmFyIGtmPXp1LnByb3RvdHlwZS5jb25zdHJ1Y3RvcjtmdW5jdGlvbiBMZih0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpfX1mdW5jdGlvbiBQZih0LGUsbil7cmV0dXJuIGZ1bmN0aW9uKGkpe3RoaXMuc3R5bGUuc2V0UHJvcGVydHkodCxlLmNhbGwodGhpcyxpKSxuKX19ZnVuY3Rpb24gTmYodCxlLG4pe3ZhciBpLHI7ZnVuY3Rpb24gbygpe3ZhciBvPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBvIT09ciYmKGk9KHI9bykmJlBmKHQsbyxuKSksaX1yZXR1cm4gby5fdmFsdWU9ZSxvfWZ1bmN0aW9uIElmKHQpe3JldHVybiBmdW5jdGlvbihlKXt0aGlzLnRleHRDb250ZW50PXQuY2FsbCh0aGlzLGUpfX1mdW5jdGlvbiBSZih0KXt2YXIgZSxuO2Z1bmN0aW9uIGkoKXt2YXIgaT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gaSE9PW4mJihlPShuPWkpJiZJZihpKSksZX1yZXR1cm4gaS5fdmFsdWU9dCxpfXZhciBPZj0wO2Z1bmN0aW9uIHpmKHQsZSxuLGkpe3RoaXMuX2dyb3Vwcz10LHRoaXMuX3BhcmVudHM9ZSx0aGlzLl9uYW1lPW4sdGhpcy5faWQ9aX1mdW5jdGlvbiBEZih0KXtyZXR1cm4genUoKS50cmFuc2l0aW9uKHQpfWZ1bmN0aW9uIEJmKCl7cmV0dXJuKytPZn12YXIgSGY9enUucHJvdG90eXBlO2Z1bmN0aW9uIEZmKHQpe3JldHVybit0fWZ1bmN0aW9uIFZmKHQpe3JldHVybiB0KnR9ZnVuY3Rpb24gVWYodCl7cmV0dXJuIHQqKDItdCl9ZnVuY3Rpb24gamYodCl7cmV0dXJuKCh0Kj0yKTw9MT90KnQ6LS10KigyLXQpKzEpLzJ9ZnVuY3Rpb24gR2YodCl7cmV0dXJuIHQqdCp0fWZ1bmN0aW9uIFdmKHQpe3JldHVybi0tdCp0KnQrMX1mdW5jdGlvbiBxZih0KXtyZXR1cm4oKHQqPTIpPD0xP3QqdCp0Oih0LT0yKSp0KnQrMikvMn16Zi5wcm90b3R5cGU9RGYucHJvdG90eXBlPXtjb25zdHJ1Y3Rvcjp6ZixzZWxlY3Q6ZnVuY3Rpb24gWWYodCl7dmFyIGU9dGhpcy5fbmFtZSxuPXRoaXMuX2lkOyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD1SYyh0KSk7Zm9yKHZhciBpPXRoaXMuX2dyb3VwcyxyPWkubGVuZ3RoLG89bmV3IEFycmF5KHIpLGE9MDthPHI7KythKWZvcih2YXIgcyxsLGM9aVthXSx1PWMubGVuZ3RoLGg9b1thXT1uZXcgQXJyYXkodSksZD0wO2Q8dTsrK2QpKHM9Y1tkXSkmJihsPXQuY2FsbChzLHMuX19kYXRhX18sZCxjKSkmJigiX19kYXRhX18iaW4gcyYmKGwuX19kYXRhX189cy5fX2RhdGFfXyksaFtkXT1sLHJmKGhbZF0sZSxuLGQsaCxzZihzLG4pKSk7cmV0dXJuIG5ldyB6ZihvLHRoaXMuX3BhcmVudHMsZSxuKX0sc2VsZWN0QWxsOmZ1bmN0aW9uIFhmKHQpe3ZhciBlPXRoaXMuX25hbWUsbj10aGlzLl9pZDsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9emModCkpO2Zvcih2YXIgaT10aGlzLl9ncm91cHMscj1pLmxlbmd0aCxvPVtdLGE9W10scz0wO3M8cjsrK3MpZm9yKHZhciBsLGM9aVtzXSx1PWMubGVuZ3RoLGg9MDtoPHU7KytoKWlmKGw9Y1toXSl7Zm9yKHZhciBkLHA9dC5jYWxsKGwsbC5fX2RhdGFfXyxoLGMpLGY9c2YobCxuKSxtPTAsZz1wLmxlbmd0aDttPGc7KyttKShkPXBbbV0pJiZyZihkLGUsbixtLHAsZik7by5wdXNoKHApLGEucHVzaChsKX1yZXR1cm4gbmV3IHpmKG8sYSxlLG4pfSxmaWx0ZXI6ZnVuY3Rpb24gJGYodCl7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PURjKHQpKTtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLG49ZS5sZW5ndGgsaT1uZXcgQXJyYXkobikscj0wO3I8bjsrK3IpZm9yKHZhciBvLGE9ZVtyXSxzPWEubGVuZ3RoLGw9aVtyXT1bXSxjPTA7YzxzOysrYykobz1hW2NdKSYmdC5jYWxsKG8sby5fX2RhdGFfXyxjLGEpJiZsLnB1c2gobyk7cmV0dXJuIG5ldyB6ZihpLHRoaXMuX3BhcmVudHMsdGhpcy5fbmFtZSx0aGlzLl9pZCl9LG1lcmdlOmZ1bmN0aW9uIEtmKHQpe2lmKHQuX2lkIT09dGhpcy5faWQpdGhyb3cgbmV3IEVycm9yO2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj10Ll9ncm91cHMsaT1lLmxlbmd0aCxyPU1hdGgubWluKGksbi5sZW5ndGgpLG89bmV3IEFycmF5KGkpLGE9MDthPHI7KythKWZvcih2YXIgcyxsPWVbYV0sYz1uW2FdLHU9bC5sZW5ndGgsaD1vW2FdPW5ldyBBcnJheSh1KSxkPTA7ZDx1OysrZCkocz1sW2RdfHxjW2RdKSYmKGhbZF09cyk7Zm9yKDthPGk7KythKW9bYV09ZVthXTtyZXR1cm4gbmV3IHpmKG8sdGhpcy5fcGFyZW50cyx0aGlzLl9uYW1lLHRoaXMuX2lkKX0sc2VsZWN0aW9uOmZ1bmN0aW9uIFpmKCl7cmV0dXJuIG5ldyBrZih0aGlzLl9ncm91cHMsdGhpcy5fcGFyZW50cyl9LHRyYW5zaXRpb246ZnVuY3Rpb24gSmYoKXtmb3IodmFyIHQ9dGhpcy5fbmFtZSxlPXRoaXMuX2lkLG49QmYoKSxpPXRoaXMuX2dyb3VwcyxyPWkubGVuZ3RoLG89MDtvPHI7KytvKWZvcih2YXIgYSxzPWlbb10sbD1zLmxlbmd0aCxjPTA7YzxsOysrYylpZihhPXNbY10pe3ZhciB1PXNmKGEsZSk7cmYoYSx0LG4sYyxzLHt0aW1lOnUudGltZSt1LmRlbGF5K3UuZHVyYXRpb24sZGVsYXk6MCxkdXJhdGlvbjp1LmR1cmF0aW9uLGVhc2U6dS5lYXNlfSl9cmV0dXJuIG5ldyB6ZihpLHRoaXMuX3BhcmVudHMsdCxuKX0sY2FsbDpIZi5jYWxsLG5vZGVzOkhmLm5vZGVzLG5vZGU6SGYubm9kZSxzaXplOkhmLnNpemUsZW1wdHk6SGYuZW1wdHksZWFjaDpIZi5lYWNoLG9uOmZ1bmN0aW9uIFFmKHQsZSl7dmFyIG49dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8Mj9zZih0aGlzLm5vZGUoKSxuKS5vbi5vbih0KTp0aGlzLmVhY2goQWYobix0LGUpKX0sYXR0cjpmdW5jdGlvbiB0bSh0LGUpe3ZhciBuPWtjKHQpLGk9InRyYW5zZm9ybSI9PT1uP3hwOmRmO3JldHVybiB0aGlzLmF0dHJUd2Vlbih0LCJmdW5jdGlvbiI9PXR5cGVvZiBlPyhuLmxvY2FsP3lmOl9mKShuLGksaGYodGhpcywiYXR0ci4iK3QsZSkpOm51bGw9PWU/KG4ubG9jYWw/ZmY6cGYpKG4pOihuLmxvY2FsP2dmOm1mKShuLGksZSkpfSxhdHRyVHdlZW46ZnVuY3Rpb24gZW0odCxlKXt2YXIgbj0iYXR0ci4iK3Q7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXJldHVybihuPXRoaXMudHdlZW4obikpJiZuLl92YWx1ZTtpZihudWxsPT1lKXJldHVybiB0aGlzLnR3ZWVuKG4sbnVsbCk7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yO3ZhciBpPWtjKHQpO3JldHVybiB0aGlzLnR3ZWVuKG4sKGkubG9jYWw/eGY6d2YpKGksZSkpfSxzdHlsZTpmdW5jdGlvbiBubSh0LGUsbil7dmFyIGk9InRyYW5zZm9ybSI9PSh0Kz0iIik/dnA6ZGY7cmV0dXJuIG51bGw9PWU/dGhpcy5zdHlsZVR3ZWVuKHQsKGZ1bmN0aW9uIHIodCxlKXt2YXIgbixpLHI7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG89UWModGhpcyx0KSxhPSh0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpLFFjKHRoaXMsdCkpO3JldHVybiBvPT09YT9udWxsOm89PT1uJiZhPT09aT9yOnI9ZShuPW8saT1hKX19KSh0LGkpKS5vbigiZW5kLnN0eWxlLiIrdCxMZih0KSk6ImZ1bmN0aW9uIj09dHlwZW9mIGU/dGhpcy5zdHlsZVR3ZWVuKHQsKGZ1bmN0aW9uIGEodCxlLG4pe3ZhciBpLHIsbztyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYT1RYyh0aGlzLHQpLHM9bih0aGlzKSxsPXMrIiI7cmV0dXJuIG51bGw9PXMmJih0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpLGw9cz1RYyh0aGlzLHQpKSxhPT09bD9udWxsOmE9PT1pJiZsPT09cj9vOihyPWwsbz1lKGk9YSxzKSl9fSkodCxpLGhmKHRoaXMsInN0eWxlLiIrdCxlKSkpLmVhY2goKGZ1bmN0aW9uIG8odCxlKXt2YXIgbixpLHIsbyxhPSJzdHlsZS4iK2Uscz0iZW5kLiIrYTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbD1hZih0aGlzLHQpLGM9bC5vbix1PW51bGw9PWwudmFsdWVbYV0/b3x8KG89TGYoZSkpOnZvaWQgMDtjPT09biYmcj09PXV8fChpPShuPWMpLmNvcHkoKSkub24ocyxyPXUpLGwub249aX19KSh0aGlzLl9pZCx0KSk6dGhpcy5zdHlsZVR3ZWVuKHQsKGZ1bmN0aW9uIHModCxlLG4pe3ZhciBpLHIsbz1uKyIiO3JldHVybiBmdW5jdGlvbigpe3ZhciBhPVFjKHRoaXMsdCk7cmV0dXJuIGE9PT1vP251bGw6YT09PWk/cjpyPWUoaT1hLG4pfX0pKHQsaSxlKSxuKS5vbigiZW5kLnN0eWxlLiIrdCxudWxsKX0sc3R5bGVUd2VlbjpmdW5jdGlvbiBpbSh0LGUsbil7dmFyIGk9InN0eWxlLiIrKHQrPSIiKTtpZihhcmd1bWVudHMubGVuZ3RoPDIpcmV0dXJuKGk9dGhpcy50d2VlbihpKSkmJmkuX3ZhbHVlO2lmKG51bGw9PWUpcmV0dXJuIHRoaXMudHdlZW4oaSxudWxsKTtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIHRoaXMudHdlZW4oaSxOZih0LGUsbnVsbD09bj8iIjpuKSl9LHRleHQ6ZnVuY3Rpb24gcm0odCl7cmV0dXJuIHRoaXMudHdlZW4oInRleHQiLCJmdW5jdGlvbiI9PXR5cGVvZiB0PyhmdW5jdGlvbiBlKHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXQodGhpcyk7dGhpcy50ZXh0Q29udGVudD1udWxsPT1lPyIiOmV9fSkoaGYodGhpcywidGV4dCIsdCkpOihmdW5jdGlvbiBuKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMudGV4dENvbnRlbnQ9dH19KShudWxsPT10PyIiOnQrIiIpKX0sdGV4dFR3ZWVuOmZ1bmN0aW9uIG9tKHQpe3ZhciBlPSJ0ZXh0IjtpZihhcmd1bWVudHMubGVuZ3RoPDEpcmV0dXJuKGU9dGhpcy50d2VlbihlKSkmJmUuX3ZhbHVlO2lmKG51bGw9PXQpcmV0dXJuIHRoaXMudHdlZW4oZSxudWxsKTtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIHRoaXMudHdlZW4oZSxSZih0KSl9LHJlbW92ZTpmdW5jdGlvbiBhbSgpe3JldHVybiB0aGlzLm9uKCJlbmQucmVtb3ZlIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdD10aGlzLnBhcmVudE5vZGU7Zm9yKHZhciBuIGluIHRoaXMuX190cmFuc2l0aW9uKWlmKCtuIT09ZSlyZXR1cm47dCYmdC5yZW1vdmVDaGlsZCh0aGlzKX19KSh0aGlzLl9pZCkpfSx0d2VlbjpmdW5jdGlvbiBzbSh0LGUpe3ZhciBuPXRoaXMuX2lkO2lmKHQrPSIiLGFyZ3VtZW50cy5sZW5ndGg8Mil7Zm9yKHZhciBpLHI9c2YodGhpcy5ub2RlKCksbikudHdlZW4sbz0wLGE9ci5sZW5ndGg7bzxhOysrbylpZigoaT1yW29dKS5uYW1lPT09dClyZXR1cm4gaS52YWx1ZTtyZXR1cm4gbnVsbH1yZXR1cm4gdGhpcy5lYWNoKChudWxsPT1lP2NmOnVmKShuLHQsZSkpfSxkZWxheTpmdW5jdGlvbiBsbSh0KXt2YXIgZT10aGlzLl9pZDtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2goKCJmdW5jdGlvbiI9PXR5cGVvZiB0P1NmOk1mKShlLHQpKTpzZih0aGlzLm5vZGUoKSxlKS5kZWxheX0sZHVyYXRpb246ZnVuY3Rpb24gY20odCl7dmFyIGU9dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKCgiZnVuY3Rpb24iPT10eXBlb2YgdD9FZjpUZikoZSx0KSk6c2YodGhpcy5ub2RlKCksZSkuZHVyYXRpb259LGVhc2U6ZnVuY3Rpb24gdW0odCl7dmFyIGU9dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKENmKGUsdCkpOnNmKHRoaXMubm9kZSgpLGUpLmVhc2V9LGVuZDpmdW5jdGlvbiBobSgpe3ZhciB0LGUsbj10aGlzLGk9bi5faWQscj1uLnNpemUoKTtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKG8sYSl7dmFyIHM9e3ZhbHVlOmF9LGw9e3ZhbHVlOmZ1bmN0aW9uKCl7MD09LS1yJiZvKCl9fTtuLmVhY2goKGZ1bmN0aW9uKCl7dmFyIG49YWYodGhpcyxpKSxyPW4ub247ciE9PXQmJigoZT0odD1yKS5jb3B5KCkpLl8uY2FuY2VsLnB1c2gocyksZS5fLmludGVycnVwdC5wdXNoKHMpLGUuXy5lbmQucHVzaChsKSksbi5vbj1lfSkpfSkpfX07dmFyIGRtPShmdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCl7cmV0dXJuIE1hdGgucG93KHQsZSl9cmV0dXJuIGU9K2Usbi5leHBvbmVudD10LG59KSgzKSxwbT0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQpe3JldHVybiAxLU1hdGgucG93KDEtdCxlKX1yZXR1cm4gZT0rZSxuLmV4cG9uZW50PXQsbn0pKDMpLGZtPShmdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCl7cmV0dXJuKCh0Kj0yKTw9MT9NYXRoLnBvdyh0LGUpOjItTWF0aC5wb3coMi10LGUpKS8yfXJldHVybiBlPStlLG4uZXhwb25lbnQ9dCxufSkoMyksbW09TWF0aC5QSSxnbT1tbS8yO2Z1bmN0aW9uIF9tKHQpe3JldHVybiAxPT0rdD8xOjEtTWF0aC5jb3ModCpnbSl9ZnVuY3Rpb24geW0odCl7cmV0dXJuIE1hdGguc2luKHQqZ20pfWZ1bmN0aW9uIHZtKHQpe3JldHVybigxLU1hdGguY29zKG1tKnQpKS8yfWZ1bmN0aW9uIGJtKHQpe3JldHVybiAxLjAwMDk3NzUxNzEwNjU0OTQqKE1hdGgucG93KDIsLTEwKnQpLS4wMDA5NzY1NjI1KX1mdW5jdGlvbiB4bSh0KXtyZXR1cm4gYm0oMS0rdCl9ZnVuY3Rpb24gd20odCl7cmV0dXJuIDEtYm0odCl9ZnVuY3Rpb24gU20odCl7cmV0dXJuKCh0Kj0yKTw9MT9ibSgxLXQpOjItYm0odC0xKSkvMn1mdW5jdGlvbiBNbSh0KXtyZXR1cm4gMS1NYXRoLnNxcnQoMS10KnQpfWZ1bmN0aW9uIEVtKHQpe3JldHVybiBNYXRoLnNxcnQoMS0gLS10KnQpfWZ1bmN0aW9uIFRtKHQpe3JldHVybigodCo9Mik8PTE/MS1NYXRoLnNxcnQoMS10KnQpOk1hdGguc3FydCgxLSh0LT0yKSp0KSsxKS8yfXZhciBDbT00LzExLEFtPTcuNTYyNTtmdW5jdGlvbiBrbSh0KXtyZXR1cm4gMS1MbSgxLXQpfWZ1bmN0aW9uIExtKHQpe3JldHVybih0PSt0KTxDbT9BbSp0KnQ6dDwuNzI3MjcyNzI3MjcyNzI3Mz9BbSoodC09LjU0NTQ1NDU0NTQ1NDU0NTQpKnQrLjc1OnQ8LjkwOTA5MDkwOTA5MDkwOTE/QW0qKHQtPS44MTgxODE4MTgxODE4MTgyKSp0Ky45Mzc1OkFtKih0LT0uOTU0NTQ1NDU0NTQ1NDU0NikqdCsuOTg0Mzc1fWZ1bmN0aW9uIFBtKHQpe3JldHVybigodCo9Mik8PTE/MS1MbSgxLXQpOkxtKHQtMSkrMSkvMn12YXIgTm09MS43MDE1OCxJbT0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQpe3JldHVybih0PSt0KSp0KihlKih0LTEpK3QpfXJldHVybiBlPStlLG4ub3ZlcnNob290PXQsbn0pKE5tKSxSbT0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQpe3JldHVybi0tdCp0KigodCsxKSplK3QpKzF9cmV0dXJuIGU9K2Usbi5vdmVyc2hvb3Q9dCxufSkoTm0pLE9tPShmdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCl7cmV0dXJuKCh0Kj0yKTwxP3QqdCooKGUrMSkqdC1lKToodC09MikqdCooKGUrMSkqdCtlKSsyKS8yfXJldHVybiBlPStlLG4ub3ZlcnNob290PXQsbn0pKE5tKSx6bT0yKk1hdGguUEksRG09KGZ1bmN0aW9uIHQoZSxuKXt2YXIgaT1NYXRoLmFzaW4oMS8oZT1NYXRoLm1heCgxLGUpKSkqKG4vPXptKTtmdW5jdGlvbiByKHQpe3JldHVybiBlKmJtKC0gLS10KSpNYXRoLnNpbigoaS10KS9uKX1yZXR1cm4gci5hbXBsaXR1ZGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHQoZSxuKnptKX0sci5wZXJpb2Q9ZnVuY3Rpb24obil7cmV0dXJuIHQoZSxuKX0scn0pKDEsLjMpLEJtPShmdW5jdGlvbiB0KGUsbil7dmFyIGk9TWF0aC5hc2luKDEvKGU9TWF0aC5tYXgoMSxlKSkpKihuLz16bSk7ZnVuY3Rpb24gcih0KXtyZXR1cm4gMS1lKmJtKHQ9K3QpKk1hdGguc2luKCh0K2kpL24pfXJldHVybiByLmFtcGxpdHVkZT1mdW5jdGlvbihlKXtyZXR1cm4gdChlLG4qem0pfSxyLnBlcmlvZD1mdW5jdGlvbihuKXtyZXR1cm4gdChlLG4pfSxyfSkoMSwuMyksSG09KGZ1bmN0aW9uIHQoZSxuKXt2YXIgaT1NYXRoLmFzaW4oMS8oZT1NYXRoLm1heCgxLGUpKSkqKG4vPXptKTtmdW5jdGlvbiByKHQpe3JldHVybigodD0yKnQtMSk8MD9lKmJtKC10KSpNYXRoLnNpbigoaS10KS9uKToyLWUqYm0odCkqTWF0aC5zaW4oKGkrdCkvbikpLzJ9cmV0dXJuIHIuYW1wbGl0dWRlPWZ1bmN0aW9uKGUpe3JldHVybiB0KGUsbip6bSl9LHIucGVyaW9kPWZ1bmN0aW9uKG4pe3JldHVybiB0KGUsbil9LHJ9KSgxLC4zKSxGbT1PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxlYXNlTGluZWFyOkZmLGVhc2VRdWFkOmpmLGVhc2VRdWFkSW46VmYsZWFzZVF1YWRPdXQ6VWYsZWFzZVF1YWRJbk91dDpqZixlYXNlQ3ViaWM6cWYsZWFzZUN1YmljSW46R2YsZWFzZUN1YmljT3V0OldmLGVhc2VDdWJpY0luT3V0OnFmLGVhc2VQb2x5OmZtLGVhc2VQb2x5SW46ZG0sZWFzZVBvbHlPdXQ6cG0sZWFzZVBvbHlJbk91dDpmbSxlYXNlU2luOnZtLGVhc2VTaW5JbjpfbSxlYXNlU2luT3V0OnltLGVhc2VTaW5Jbk91dDp2bSxlYXNlRXhwOlNtLGVhc2VFeHBJbjp4bSxlYXNlRXhwT3V0OndtLGVhc2VFeHBJbk91dDpTbSxlYXNlQ2lyY2xlOlRtLGVhc2VDaXJjbGVJbjpNbSxlYXNlQ2lyY2xlT3V0OkVtLGVhc2VDaXJjbGVJbk91dDpUbSxlYXNlQm91bmNlOkxtLGVhc2VCb3VuY2VJbjprbSxlYXNlQm91bmNlT3V0OkxtLGVhc2VCb3VuY2VJbk91dDpQbSxlYXNlQmFjazpPbSxlYXNlQmFja0luOkltLGVhc2VCYWNrT3V0OlJtLGVhc2VCYWNrSW5PdXQ6T20sZWFzZUVsYXN0aWM6Qm0sZWFzZUVsYXN0aWNJbjpEbSxlYXNlRWxhc3RpY091dDpCbSxlYXNlRWxhc3RpY0luT3V0OkhtfSksVm09e3RpbWU6bnVsbCxkZWxheTowLGR1cmF0aW9uOjI1MCxlYXNlOnFmfTtmdW5jdGlvbiBVbSh0LGUpe2Zvcih2YXIgbjshKG49dC5fX3RyYW5zaXRpb24pfHwhKG49bltlXSk7KWlmKCEodD10LnBhcmVudE5vZGUpKXJldHVybiBWbS50aW1lPXFwKCksVm07cmV0dXJuIG59enUucHJvdG90eXBlLmludGVycnVwdD1mdW5jdGlvbiBqbSh0KXtyZXR1cm4gdGhpcy5lYWNoKChmdW5jdGlvbigpe2xmKHRoaXMsdCl9KSl9LHp1LnByb3RvdHlwZS50cmFuc2l0aW9uPWZ1bmN0aW9uIEdtKHQpe3ZhciBlLG47dCBpbnN0YW5jZW9mIHpmPyhlPXQuX2lkLHQ9dC5fbmFtZSk6KGU9QmYoKSwobj1WbSkudGltZT1xcCgpLHQ9bnVsbD09dD9udWxsOnQrIiIpO2Zvcih2YXIgaT10aGlzLl9ncm91cHMscj1pLmxlbmd0aCxvPTA7bzxyOysrbylmb3IodmFyIGEscz1pW29dLGw9cy5sZW5ndGgsYz0wO2M8bDsrK2MpKGE9c1tjXSkmJnJmKGEsdCxlLGMscyxufHxVbShhLGUpKTtyZXR1cm4gbmV3IHpmKGksdGhpcy5fcGFyZW50cyx0LGUpfTt2YXIgV209W251bGxdO2Z1bmN0aW9uIHFtKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX1mdW5jdGlvbiBZbSh0LGUsbil7dGhpcy50YXJnZXQ9dCx0aGlzLnR5cGU9ZSx0aGlzLnNlbGVjdGlvbj1ufWZ1bmN0aW9uIFhtKCl7TXUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCl9ZnVuY3Rpb24gJG0oKXtNdS5wcmV2ZW50RGVmYXVsdCgpLE11LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpfXZhciBLbT17bmFtZToiZHJhZyJ9LFptPXtuYW1lOiJzcGFjZSJ9LEptPXtuYW1lOiJoYW5kbGUifSxRbT17bmFtZToiY2VudGVyIn07ZnVuY3Rpb24gdGcodCl7cmV0dXJuWyt0WzBdLCt0WzFdXX1mdW5jdGlvbiBlZyh0KXtyZXR1cm5bdGcodFswXSksdGcodFsxXSldfWZ1bmN0aW9uIG5nKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gd2goZSxNdS50b3VjaGVzLHQpfX12YXIgaWc9e25hbWU6IngiLGhhbmRsZXM6WyJ3IiwiZSJdLm1hcChoZyksaW5wdXQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbD09dD9udWxsOltbK3RbMF0sZVswXVsxXV0sWyt0WzFdLGVbMV1bMV1dXX0sb3V0cHV0OmZ1bmN0aW9uKHQpe3JldHVybiB0JiZbdFswXVswXSx0WzFdWzBdXX19LHJnPXtuYW1lOiJ5IixoYW5kbGVzOlsibiIsInMiXS5tYXAoaGcpLGlucHV0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIG51bGw9PXQ/bnVsbDpbW2VbMF1bMF0sK3RbMF1dLFtlWzFdWzBdLCt0WzFdXV19LG91dHB1dDpmdW5jdGlvbih0KXtyZXR1cm4gdCYmW3RbMF1bMV0sdFsxXVsxXV19fSxvZz17bmFtZToieHkiLGhhbmRsZXM6WyJuIiwidyIsImUiLCJzIiwibnciLCJuZSIsInN3Iiwic2UiXS5tYXAoaGcpLGlucHV0OmZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P251bGw6ZWcodCl9LG91dHB1dDpmdW5jdGlvbih0KXtyZXR1cm4gdH19LGFnPXtvdmVybGF5OiJjcm9zc2hhaXIiLHNlbGVjdGlvbjoibW92ZSIsbjoibnMtcmVzaXplIixlOiJldy1yZXNpemUiLHM6Im5zLXJlc2l6ZSIsdzoiZXctcmVzaXplIixudzoibndzZS1yZXNpemUiLG5lOiJuZXN3LXJlc2l6ZSIsc2U6Im53c2UtcmVzaXplIixzdzoibmVzdy1yZXNpemUifSxzZz17ZToidyIsdzoiZSIsbnc6Im5lIixuZToibnciLHNlOiJzdyIsc3c6InNlIn0sbGc9e246InMiLHM6Im4iLG53OiJzdyIsbmU6InNlIixzZToibmUiLHN3OiJudyJ9LGNnPXtvdmVybGF5OjEsc2VsZWN0aW9uOjEsbjpudWxsLGU6MSxzOm51bGwsdzotMSxudzotMSxuZToxLHNlOjEsc3c6LTF9LHVnPXtvdmVybGF5OjEsc2VsZWN0aW9uOjEsbjotMSxlOm51bGwsczoxLHc6bnVsbCxudzotMSxuZTotMSxzZToxLHN3OjF9O2Z1bmN0aW9uIGhnKHQpe3JldHVybnt0eXBlOnR9fWZ1bmN0aW9uIGRnKCl7cmV0dXJuIU11LmN0cmxLZXkmJiFNdS5idXR0b259ZnVuY3Rpb24gcGcoKXt2YXIgdD10aGlzLm93bmVyU1ZHRWxlbWVudHx8dGhpcztyZXR1cm4gdC5oYXNBdHRyaWJ1dGUoInZpZXdCb3giKT9bWyh0PXQudmlld0JveC5iYXNlVmFsKS54LHQueV0sW3QueCt0LndpZHRoLHQueSt0LmhlaWdodF1dOltbMCwwXSxbdC53aWR0aC5iYXNlVmFsLnZhbHVlLHQuaGVpZ2h0LmJhc2VWYWwudmFsdWVdXX1mdW5jdGlvbiBmZygpe3JldHVybiBuYXZpZ2F0b3IubWF4VG91Y2hQb2ludHN8fCJvbnRvdWNoc3RhcnQiaW4gdGhpc31mdW5jdGlvbiBtZyh0KXtmb3IoOyF0Ll9fYnJ1c2g7KWlmKCEodD10LnBhcmVudE5vZGUpKXJldHVybjtyZXR1cm4gdC5fX2JydXNofWZ1bmN0aW9uIGdnKHQpe3JldHVybiB0WzBdWzBdPT09dFsxXVswXXx8dFswXVsxXT09PXRbMV1bMV19ZnVuY3Rpb24gX2codCl7dmFyIGU9dC5fX2JydXNoO3JldHVybiBlP2UuZGltLm91dHB1dChlLnNlbGVjdGlvbik6bnVsbH1mdW5jdGlvbiB5Zygpe3JldHVybiBiZyhyZyl9ZnVuY3Rpb24gdmcoKXtyZXR1cm4gYmcob2cpfWZ1bmN0aW9uIGJnKHQpe3ZhciBlLG49cGcsaT1kZyxyPWZnLG89ITAsYT13Yygic3RhcnQiLCJicnVzaCIsImVuZCIpLHM9NjtmdW5jdGlvbiBsKGUpe3ZhciBuPWUucHJvcGVydHkoIl9fYnJ1c2giLG0pLnNlbGVjdEFsbCgiLm92ZXJsYXkiKS5kYXRhKFtoZygib3ZlcmxheSIpXSk7bi5lbnRlcigpLmFwcGVuZCgicmVjdCIpLmF0dHIoImNsYXNzIiwib3ZlcmxheSIpLmF0dHIoInBvaW50ZXItZXZlbnRzIiwiYWxsIikuYXR0cigiY3Vyc29yIixhZy5vdmVybGF5KS5tZXJnZShuKS5lYWNoKChmdW5jdGlvbigpe3ZhciB0PW1nKHRoaXMpLmV4dGVudDtEdSh0aGlzKS5hdHRyKCJ4Iix0WzBdWzBdKS5hdHRyKCJ5Iix0WzBdWzFdKS5hdHRyKCJ3aWR0aCIsdFsxXVswXS10WzBdWzBdKS5hdHRyKCJoZWlnaHQiLHRbMV1bMV0tdFswXVsxXSl9KSksZS5zZWxlY3RBbGwoIi5zZWxlY3Rpb24iKS5kYXRhKFtoZygic2VsZWN0aW9uIildKS5lbnRlcigpLmFwcGVuZCgicmVjdCIpLmF0dHIoImNsYXNzIiwic2VsZWN0aW9uIikuYXR0cigiY3Vyc29yIixhZy5zZWxlY3Rpb24pLmF0dHIoImZpbGwiLCIjNzc3IikuYXR0cigiZmlsbC1vcGFjaXR5IiwuMykuYXR0cigic3Ryb2tlIiwiI2ZmZiIpLmF0dHIoInNoYXBlLXJlbmRlcmluZyIsImNyaXNwRWRnZXMiKTt2YXIgaT1lLnNlbGVjdEFsbCgiLmhhbmRsZSIpLmRhdGEodC5oYW5kbGVzLChmdW5jdGlvbih0KXtyZXR1cm4gdC50eXBlfSkpO2kuZXhpdCgpLnJlbW92ZSgpLGkuZW50ZXIoKS5hcHBlbmQoInJlY3QiKS5hdHRyKCJjbGFzcyIsKGZ1bmN0aW9uKHQpe3JldHVybiJoYW5kbGUgaGFuZGxlLS0iK3QudHlwZX0pKS5hdHRyKCJjdXJzb3IiLChmdW5jdGlvbih0KXtyZXR1cm4gYWdbdC50eXBlXX0pKSxlLmVhY2goYykuYXR0cigiZmlsbCIsIm5vbmUiKS5hdHRyKCJwb2ludGVyLWV2ZW50cyIsImFsbCIpLm9uKCJtb3VzZWRvd24uYnJ1c2giLGQpLmZpbHRlcihyKS5vbigidG91Y2hzdGFydC5icnVzaCIsZCkub24oInRvdWNobW92ZS5icnVzaCIscCkub24oInRvdWNoZW5kLmJydXNoIHRvdWNoY2FuY2VsLmJydXNoIixmKS5zdHlsZSgidG91Y2gtYWN0aW9uIiwibm9uZSIpLnN0eWxlKCItd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3IiLCJyZ2JhKDAsMCwwLDApIil9ZnVuY3Rpb24gYygpe3ZhciB0PUR1KHRoaXMpLGU9bWcodGhpcykuc2VsZWN0aW9uO2U/KHQuc2VsZWN0QWxsKCIuc2VsZWN0aW9uIikuc3R5bGUoImRpc3BsYXkiLG51bGwpLmF0dHIoIngiLGVbMF1bMF0pLmF0dHIoInkiLGVbMF1bMV0pLmF0dHIoIndpZHRoIixlWzFdWzBdLWVbMF1bMF0pLmF0dHIoImhlaWdodCIsZVsxXVsxXS1lWzBdWzFdKSx0LnNlbGVjdEFsbCgiLmhhbmRsZSIpLnN0eWxlKCJkaXNwbGF5IixudWxsKS5hdHRyKCJ4IiwoZnVuY3Rpb24odCl7cmV0dXJuImUiPT09dC50eXBlW3QudHlwZS5sZW5ndGgtMV0/ZVsxXVswXS1zLzI6ZVswXVswXS1zLzJ9KSkuYXR0cigieSIsKGZ1bmN0aW9uKHQpe3JldHVybiJzIj09PXQudHlwZVswXT9lWzFdWzFdLXMvMjplWzBdWzFdLXMvMn0pKS5hdHRyKCJ3aWR0aCIsKGZ1bmN0aW9uKHQpe3JldHVybiJuIj09PXQudHlwZXx8InMiPT09dC50eXBlP2VbMV1bMF0tZVswXVswXStzOnN9KSkuYXR0cigiaGVpZ2h0IiwoZnVuY3Rpb24odCl7cmV0dXJuImUiPT09dC50eXBlfHwidyI9PT10LnR5cGU/ZVsxXVsxXS1lWzBdWzFdK3M6c30pKSk6dC5zZWxlY3RBbGwoIi5zZWxlY3Rpb24sLmhhbmRsZSIpLnN0eWxlKCJkaXNwbGF5Iiwibm9uZSIpLmF0dHIoIngiLG51bGwpLmF0dHIoInkiLG51bGwpLmF0dHIoIndpZHRoIixudWxsKS5hdHRyKCJoZWlnaHQiLG51bGwpfWZ1bmN0aW9uIHUodCxlLG4pe3ZhciBpPXQuX19icnVzaC5lbWl0dGVyO3JldHVybiFpfHxuJiZpLmNsZWFuP25ldyBoKHQsZSxuKTppfWZ1bmN0aW9uIGgodCxlLG4pe3RoaXMudGhhdD10LHRoaXMuYXJncz1lLHRoaXMuc3RhdGU9dC5fX2JydXNoLHRoaXMuYWN0aXZlPTAsdGhpcy5jbGVhbj1ufWZ1bmN0aW9uIGQoKXtpZigoIWV8fE11LnRvdWNoZXMpJiZpLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl7dmFyIG4scixhLHMsbCxoLGQscCxmLG0sZyxfPXRoaXMseT1NdS50YXJnZXQuX19kYXRhX18udHlwZSx2PSJzZWxlY3Rpb24iPT09KG8mJk11Lm1ldGFLZXk/eT0ib3ZlcmxheSI6eSk/S206byYmTXUuYWx0S2V5P1FtOkptLGI9dD09PXJnP251bGw6Y2dbeV0seD10PT09aWc/bnVsbDp1Z1t5XSx3PW1nKF8pLFM9dy5leHRlbnQsTT13LnNlbGVjdGlvbixFPVNbMF1bMF0sVD1TWzBdWzFdLEM9U1sxXVswXSxBPVNbMV1bMV0saz0wLEw9MCxQPWImJngmJm8mJk11LnNoaWZ0S2V5LE49TXUudG91Y2hlcz9uZyhNdS5jaGFuZ2VkVG91Y2hlc1swXS5pZGVudGlmaWVyKTpiaCxJPU4oXyksUj1JLE89dShfLGFyZ3VtZW50cywhMCkuYmVmb3Jlc3RhcnQoKTsib3ZlcmxheSI9PT15PyhNJiYoZj0hMCksdy5zZWxlY3Rpb249TT1bW249dD09PXJnP0U6SVswXSxhPXQ9PT1pZz9UOklbMV1dLFtsPXQ9PT1yZz9DOm4sZD10PT09aWc/QTphXV0pOihuPU1bMF1bMF0sYT1NWzBdWzFdLGw9TVsxXVswXSxkPU1bMV1bMV0pLHI9bixzPWEsaD1sLHA9ZDt2YXIgej1EdShfKS5hdHRyKCJwb2ludGVyLWV2ZW50cyIsIm5vbmUiKSxEPXouc2VsZWN0QWxsKCIub3ZlcmxheSIpLmF0dHIoImN1cnNvciIsYWdbeV0pO2lmKE11LnRvdWNoZXMpTy5tb3ZlZD1ILE8uZW5kZWQ9VjtlbHNle3ZhciBCPUR1KE11LnZpZXcpLm9uKCJtb3VzZW1vdmUuYnJ1c2giLEgsITApLm9uKCJtb3VzZXVwLmJydXNoIixWLCEwKTtvJiZCLm9uKCJrZXlkb3duLmJydXNoIixVLCEwKS5vbigia2V5dXAuYnJ1c2giLGosITApLEVoKE11LnZpZXcpfVhtKCksbGYoXyksYy5jYWxsKF8pLE8uc3RhcnQoKX1mdW5jdGlvbiBIKCl7dmFyIHQ9TihfKTshUHx8bXx8Z3x8KE1hdGguYWJzKHRbMF0tUlswXSk+TWF0aC5hYnModFsxXS1SWzFdKT9nPSEwOm09ITApLFI9dCxmPSEwLCRtKCksRigpfWZ1bmN0aW9uIEYoKXt2YXIgdDtzd2l0Y2goaz1SWzBdLUlbMF0sTD1SWzFdLUlbMV0sdil7Y2FzZSBabTpjYXNlIEttOmImJihrPU1hdGgubWF4KEUtbixNYXRoLm1pbihDLWwsaykpLHI9bitrLGg9bCtrKSx4JiYoTD1NYXRoLm1heChULWEsTWF0aC5taW4oQS1kLEwpKSxzPWErTCxwPWQrTCk7YnJlYWs7Y2FzZSBKbTpiPDA/KGs9TWF0aC5tYXgoRS1uLE1hdGgubWluKEMtbixrKSkscj1uK2ssaD1sKTpiPjAmJihrPU1hdGgubWF4KEUtbCxNYXRoLm1pbihDLWwsaykpLHI9bixoPWwraykseDwwPyhMPU1hdGgubWF4KFQtYSxNYXRoLm1pbihBLWEsTCkpLHM9YStMLHA9ZCk6eD4wJiYoTD1NYXRoLm1heChULWQsTWF0aC5taW4oQS1kLEwpKSxzPWEscD1kK0wpO2JyZWFrO2Nhc2UgUW06YiYmKHI9TWF0aC5tYXgoRSxNYXRoLm1pbihDLG4taypiKSksaD1NYXRoLm1heChFLE1hdGgubWluKEMsbCtrKmIpKSkseCYmKHM9TWF0aC5tYXgoVCxNYXRoLm1pbihBLGEtTCp4KSkscD1NYXRoLm1heChULE1hdGgubWluKEEsZCtMKngpKSl9aDxyJiYoYio9LTEsdD1uLG49bCxsPXQsdD1yLHI9aCxoPXQseSBpbiBzZyYmRC5hdHRyKCJjdXJzb3IiLGFnW3k9c2dbeV1dKSkscDxzJiYoeCo9LTEsdD1hLGE9ZCxkPXQsdD1zLHM9cCxwPXQseSBpbiBsZyYmRC5hdHRyKCJjdXJzb3IiLGFnW3k9bGdbeV1dKSksdy5zZWxlY3Rpb24mJihNPXcuc2VsZWN0aW9uKSxtJiYocj1NWzBdWzBdLGg9TVsxXVswXSksZyYmKHM9TVswXVsxXSxwPU1bMV1bMV0pLE1bMF1bMF09PT1yJiZNWzBdWzFdPT09cyYmTVsxXVswXT09PWgmJk1bMV1bMV09PT1wfHwody5zZWxlY3Rpb249W1tyLHNdLFtoLHBdXSxjLmNhbGwoXyksTy5icnVzaCgpKX1mdW5jdGlvbiBWKCl7aWYoWG0oKSxNdS50b3VjaGVzKXtpZihNdS50b3VjaGVzLmxlbmd0aClyZXR1cm47ZSYmY2xlYXJUaW1lb3V0KGUpLGU9c2V0VGltZW91dCgoZnVuY3Rpb24oKXtlPW51bGx9KSw1MDApfWVsc2UgVGgoTXUudmlldyxmKSxCLm9uKCJrZXlkb3duLmJydXNoIGtleXVwLmJydXNoIG1vdXNlbW92ZS5icnVzaCBtb3VzZXVwLmJydXNoIixudWxsKTt6LmF0dHIoInBvaW50ZXItZXZlbnRzIiwiYWxsIiksRC5hdHRyKCJjdXJzb3IiLGFnLm92ZXJsYXkpLHcuc2VsZWN0aW9uJiYoTT13LnNlbGVjdGlvbiksZ2coTSkmJih3LnNlbGVjdGlvbj1udWxsLGMuY2FsbChfKSksTy5lbmQoKX1mdW5jdGlvbiBVKCl7c3dpdGNoKE11LmtleUNvZGUpe2Nhc2UgMTY6UD1iJiZ4O2JyZWFrO2Nhc2UgMTg6dj09PUptJiYoYiYmKGw9aC1rKmIsbj1yK2sqYikseCYmKGQ9cC1MKngsYT1zK0wqeCksdj1RbSxGKCkpO2JyZWFrO2Nhc2UgMzI6diE9PUptJiZ2IT09UW18fChiPDA/bD1oLWs6Yj4wJiYobj1yLWspLHg8MD9kPXAtTDp4PjAmJihhPXMtTCksdj1abSxELmF0dHIoImN1cnNvciIsYWcuc2VsZWN0aW9uKSxGKCkpO2JyZWFrO2RlZmF1bHQ6cmV0dXJufSRtKCl9ZnVuY3Rpb24gaigpe3N3aXRjaChNdS5rZXlDb2RlKXtjYXNlIDE2OlAmJihtPWc9UD0hMSxGKCkpO2JyZWFrO2Nhc2UgMTg6dj09PVFtJiYoYjwwP2w9aDpiPjAmJihuPXIpLHg8MD9kPXA6eD4wJiYoYT1zKSx2PUptLEYoKSk7YnJlYWs7Y2FzZSAzMjp2PT09Wm0mJihNdS5hbHRLZXk/KGImJihsPWgtaypiLG49citrKmIpLHgmJihkPXAtTCp4LGE9cytMKngpLHY9UW0pOihiPDA/bD1oOmI+MCYmKG49cikseDwwP2Q9cDp4PjAmJihhPXMpLHY9Sm0pLEQuYXR0cigiY3Vyc29yIixhZ1t5XSksRigpKTticmVhaztkZWZhdWx0OnJldHVybn0kbSgpfX1mdW5jdGlvbiBwKCl7dSh0aGlzLGFyZ3VtZW50cykubW92ZWQoKX1mdW5jdGlvbiBmKCl7dSh0aGlzLGFyZ3VtZW50cykuZW5kZWQoKX1mdW5jdGlvbiBtKCl7dmFyIGU9dGhpcy5fX2JydXNofHx7c2VsZWN0aW9uOm51bGx9O3JldHVybiBlLmV4dGVudD1lZyhuLmFwcGx5KHRoaXMsYXJndW1lbnRzKSksZS5kaW09dCxlfXJldHVybiBsLm1vdmU9ZnVuY3Rpb24oZSxuKXtlLnNlbGVjdGlvbj9lLm9uKCJzdGFydC5icnVzaCIsKGZ1bmN0aW9uKCl7dSh0aGlzLGFyZ3VtZW50cykuYmVmb3Jlc3RhcnQoKS5zdGFydCgpfSkpLm9uKCJpbnRlcnJ1cHQuYnJ1c2ggZW5kLmJydXNoIiwoZnVuY3Rpb24oKXt1KHRoaXMsYXJndW1lbnRzKS5lbmQoKX0pKS50d2VlbigiYnJ1c2giLChmdW5jdGlvbigpe3ZhciBlPXRoaXMsaT1lLl9fYnJ1c2gscj11KGUsYXJndW1lbnRzKSxvPWkuc2VsZWN0aW9uLGE9dC5pbnB1dCgiZnVuY3Rpb24iPT10eXBlb2Ygbj9uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTpuLGkuZXh0ZW50KSxzPWNwKG8sYSk7ZnVuY3Rpb24gbCh0KXtpLnNlbGVjdGlvbj0xPT09dCYmbnVsbD09PWE/bnVsbDpzKHQpLGMuY2FsbChlKSxyLmJydXNoKCl9cmV0dXJuIG51bGwhPT1vJiZudWxsIT09YT9sOmwoMSl9KSk6ZS5lYWNoKChmdW5jdGlvbigpe3ZhciBlPXRoaXMsaT1hcmd1bWVudHMscj1lLl9fYnJ1c2gsbz10LmlucHV0KCJmdW5jdGlvbiI9PXR5cGVvZiBuP24uYXBwbHkoZSxpKTpuLHIuZXh0ZW50KSxhPXUoZSxpKS5iZWZvcmVzdGFydCgpO2xmKGUpLHIuc2VsZWN0aW9uPW51bGw9PT1vP251bGw6byxjLmNhbGwoZSksYS5zdGFydCgpLmJydXNoKCkuZW5kKCl9KSl9LGwuY2xlYXI9ZnVuY3Rpb24odCl7bC5tb3ZlKHQsbnVsbCl9LGgucHJvdG90eXBlPXtiZWZvcmVzdGFydDpmdW5jdGlvbigpe3JldHVybiAxPT0rK3RoaXMuYWN0aXZlJiYodGhpcy5zdGF0ZS5lbWl0dGVyPXRoaXMsdGhpcy5zdGFydGluZz0hMCksdGhpc30sc3RhcnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdGFydGluZz8odGhpcy5zdGFydGluZz0hMSx0aGlzLmVtaXQoInN0YXJ0IikpOnRoaXMuZW1pdCgiYnJ1c2giKSx0aGlzfSxicnVzaDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVtaXQoImJydXNoIiksdGhpc30sZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIDA9PS0tdGhpcy5hY3RpdmUmJihkZWxldGUgdGhpcy5zdGF0ZS5lbWl0dGVyLHRoaXMuZW1pdCgiZW5kIikpLHRoaXN9LGVtaXQ6ZnVuY3Rpb24oZSl7THUobmV3IFltKGwsZSx0Lm91dHB1dCh0aGlzLnN0YXRlLnNlbGVjdGlvbikpLGEuYXBwbHksYSxbZSx0aGlzLnRoYXQsdGhpcy5hcmdzXSl9fSxsLmV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OnFtKGVnKHQpKSxsKTpufSxsLmZpbHRlcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OnFtKCEhdCksbCk6aX0sbC50b3VjaGFibGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpxbSghIXQpLGwpOnJ9LGwuaGFuZGxlU2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz0rdCxsKTpzfSxsLmtleU1vZGlmaWVycz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0hIXQsbCk6b30sbC5vbj1mdW5jdGlvbigpe3ZhciB0PWEub24uYXBwbHkoYSxhcmd1bWVudHMpO3JldHVybiB0PT09YT9sOnR9LGx9dmFyIHhnPU1hdGguY29zLHdnPU1hdGguc2luLFNnPU1hdGguUEksTWc9U2cvMixFZz0yKlNnLFRnPU1hdGgubWF4O2Z1bmN0aW9uIENnKHQpe3JldHVybiBmdW5jdGlvbihlLG4pe3JldHVybiB0KGUuc291cmNlLnZhbHVlK2UudGFyZ2V0LnZhbHVlLG4uc291cmNlLnZhbHVlK24udGFyZ2V0LnZhbHVlKX19dmFyIEFnPUFycmF5LnByb3RvdHlwZS5zbGljZTtmdW5jdGlvbiBrZyh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19dmFyIExnPU1hdGguUEksUGc9MipMZyxOZz0xZS02LElnPVBnLU5nO2Z1bmN0aW9uIFJnKCl7dGhpcy5feDA9dGhpcy5feTA9dGhpcy5feDE9dGhpcy5feTE9bnVsbCx0aGlzLl89IiJ9ZnVuY3Rpb24gT2coKXtyZXR1cm4gbmV3IFJnfWZ1bmN0aW9uIHpnKHQpe3JldHVybiB0LnNvdXJjZX1mdW5jdGlvbiBEZyh0KXtyZXR1cm4gdC50YXJnZXR9ZnVuY3Rpb24gQmcodCl7cmV0dXJuIHQucmFkaXVzfWZ1bmN0aW9uIEhnKHQpe3JldHVybiB0LnN0YXJ0QW5nbGV9ZnVuY3Rpb24gRmcodCl7cmV0dXJuIHQuZW5kQW5nbGV9UmcucHJvdG90eXBlPU9nLnByb3RvdHlwZT17Y29uc3RydWN0b3I6UmcsbW92ZVRvOmZ1bmN0aW9uKHQsZSl7dGhpcy5fKz0iTSIrKHRoaXMuX3gwPXRoaXMuX3gxPSt0KSsiLCIrKHRoaXMuX3kwPXRoaXMuX3kxPStlKX0sY2xvc2VQYXRoOmZ1bmN0aW9uKCl7bnVsbCE9PXRoaXMuX3gxJiYodGhpcy5feDE9dGhpcy5feDAsdGhpcy5feTE9dGhpcy5feTAsdGhpcy5fKz0iWiIpfSxsaW5lVG86ZnVuY3Rpb24odCxlKXt0aGlzLl8rPSJMIisodGhpcy5feDE9K3QpKyIsIisodGhpcy5feTE9K2UpfSxxdWFkcmF0aWNDdXJ2ZVRvOmZ1bmN0aW9uKHQsZSxuLGkpe3RoaXMuXys9IlEiKyArdCsiLCIrICtlKyIsIisodGhpcy5feDE9K24pKyIsIisodGhpcy5feTE9K2kpfSxiZXppZXJDdXJ2ZVRvOmZ1bmN0aW9uKHQsZSxuLGkscixvKXt0aGlzLl8rPSJDIisgK3QrIiwiKyArZSsiLCIrICtuKyIsIisgK2krIiwiKyh0aGlzLl94MT0rcikrIiwiKyh0aGlzLl95MT0rbyl9LGFyY1RvOmZ1bmN0aW9uKHQsZSxuLGkscil7dmFyIG89dGhpcy5feDEsYT10aGlzLl95MSxzPShuPStuKS0odD0rdCksbD0oaT0raSktKGU9K2UpLGM9by10LHU9YS1lLGg9YypjK3UqdTtpZigocj0rcik8MCl0aHJvdyBuZXcgRXJyb3IoIm5lZ2F0aXZlIHJhZGl1czogIityKTtpZihudWxsPT09dGhpcy5feDEpdGhpcy5fKz0iTSIrKHRoaXMuX3gxPXQpKyIsIisodGhpcy5feTE9ZSk7ZWxzZSBpZihoPk5nKWlmKE1hdGguYWJzKHUqcy1sKmMpPk5nJiZyKXt2YXIgZD1uLW8scD1pLWEsZj1zKnMrbCpsLG09ZCpkK3AqcCxnPU1hdGguc3FydChmKSxfPU1hdGguc3FydChoKSx5PXIqTWF0aC50YW4oKExnLU1hdGguYWNvcygoZitoLW0pLygyKmcqXykpKS8yKSx2PXkvXyxiPXkvZztNYXRoLmFicyh2LTEpPk5nJiYodGhpcy5fKz0iTCIrKHQrdipjKSsiLCIrKGUrdip1KSksdGhpcy5fKz0iQSIrcisiLCIrcisiLDAsMCwiKyArKHUqZD5jKnApKyIsIisodGhpcy5feDE9dCtiKnMpKyIsIisodGhpcy5feTE9ZStiKmwpfWVsc2UgdGhpcy5fKz0iTCIrKHRoaXMuX3gxPXQpKyIsIisodGhpcy5feTE9ZSk7ZWxzZTt9LGFyYzpmdW5jdGlvbih0LGUsbixpLHIsbyl7dD0rdCxlPStlLG89ISFvO3ZhciBhPShuPStuKSpNYXRoLmNvcyhpKSxzPW4qTWF0aC5zaW4oaSksbD10K2EsYz1lK3MsdT0xXm8saD1vP2ktcjpyLWk7aWYobjwwKXRocm93IG5ldyBFcnJvcigibmVnYXRpdmUgcmFkaXVzOiAiK24pO251bGw9PT10aGlzLl94MT90aGlzLl8rPSJNIitsKyIsIitjOihNYXRoLmFicyh0aGlzLl94MS1sKT5OZ3x8TWF0aC5hYnModGhpcy5feTEtYyk+TmcpJiYodGhpcy5fKz0iTCIrbCsiLCIrYyksbiYmKGg8MCYmKGg9aCVQZytQZyksaD5JZz90aGlzLl8rPSJBIituKyIsIituKyIsMCwxLCIrdSsiLCIrKHQtYSkrIiwiKyhlLXMpKyJBIituKyIsIituKyIsMCwxLCIrdSsiLCIrKHRoaXMuX3gxPWwpKyIsIisodGhpcy5feTE9Yyk6aD5OZyYmKHRoaXMuXys9IkEiK24rIiwiK24rIiwwLCIrICsoaD49TGcpKyIsIit1KyIsIisodGhpcy5feDE9dCtuKk1hdGguY29zKHIpKSsiLCIrKHRoaXMuX3kxPWUrbipNYXRoLnNpbihyKSkpKX0scmVjdDpmdW5jdGlvbih0LGUsbixpKXt0aGlzLl8rPSJNIisodGhpcy5feDA9dGhpcy5feDE9K3QpKyIsIisodGhpcy5feTA9dGhpcy5feTE9K2UpKyJoIisgK24rInYiKyAraSsiaCIrLW4rIloifSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiB0aGlzLl99fTt2YXIgVmc9IiQiO2Z1bmN0aW9uIFVnKCl7fWZ1bmN0aW9uIGpnKHQsZSl7dmFyIG49bmV3IFVnO2lmKHQgaW5zdGFuY2VvZiBVZyl0LmVhY2goKGZ1bmN0aW9uKHQsZSl7bi5zZXQoZSx0KX0pKTtlbHNlIGlmKEFycmF5LmlzQXJyYXkodCkpe3ZhciBpLHI9LTEsbz10Lmxlbmd0aDtpZihudWxsPT1lKWZvcig7KytyPG87KW4uc2V0KHIsdFtyXSk7ZWxzZSBmb3IoOysrcjxvOyluLnNldChlKGk9dFtyXSxyLHQpLGkpfWVsc2UgaWYodClmb3IodmFyIGEgaW4gdCluLnNldChhLHRbYV0pO3JldHVybiBufWZ1bmN0aW9uIEdnKCl7cmV0dXJue319ZnVuY3Rpb24gV2codCxlLG4pe3RbZV09bn1mdW5jdGlvbiBxZygpe3JldHVybiBqZygpfWZ1bmN0aW9uIFlnKHQsZSxuKXt0LnNldChlLG4pfWZ1bmN0aW9uIFhnKCl7fVVnLnByb3RvdHlwZT1qZy5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOlVnLGhhczpmdW5jdGlvbih0KXtyZXR1cm4gVmcrdCBpbiB0aGlzfSxnZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXNbVmcrdF19LHNldDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzW1ZnK3RdPWUsdGhpc30scmVtb3ZlOmZ1bmN0aW9uKHQpe3ZhciBlPVZnK3Q7cmV0dXJuIGUgaW4gdGhpcyYmZGVsZXRlIHRoaXNbZV19LGNsZWFyOmZ1bmN0aW9uKCl7Zm9yKHZhciB0IGluIHRoaXMpdFswXT09PVZnJiZkZWxldGUgdGhpc1t0XX0sa2V5czpmdW5jdGlvbigpe3ZhciB0PVtdO2Zvcih2YXIgZSBpbiB0aGlzKWVbMF09PT1WZyYmdC5wdXNoKGUuc2xpY2UoMSkpO3JldHVybiB0fSx2YWx1ZXM6ZnVuY3Rpb24oKXt2YXIgdD1bXTtmb3IodmFyIGUgaW4gdGhpcyllWzBdPT09VmcmJnQucHVzaCh0aGlzW2VdKTtyZXR1cm4gdH0sZW50cmllczpmdW5jdGlvbigpe3ZhciB0PVtdO2Zvcih2YXIgZSBpbiB0aGlzKWVbMF09PT1WZyYmdC5wdXNoKHtrZXk6ZS5zbGljZSgxKSx2YWx1ZTp0aGlzW2VdfSk7cmV0dXJuIHR9LHNpemU6ZnVuY3Rpb24oKXt2YXIgdD0wO2Zvcih2YXIgZSBpbiB0aGlzKWVbMF09PT1WZyYmKyt0O3JldHVybiB0fSxlbXB0eTpmdW5jdGlvbigpe2Zvcih2YXIgdCBpbiB0aGlzKWlmKHRbMF09PT1WZylyZXR1cm4hMTtyZXR1cm4hMH0sZWFjaDpmdW5jdGlvbih0KXtmb3IodmFyIGUgaW4gdGhpcyllWzBdPT09VmcmJnQodGhpc1tlXSxlLnNsaWNlKDEpLHRoaXMpfX07dmFyICRnPWpnLnByb3RvdHlwZTtmdW5jdGlvbiBLZyh0LGUpe3ZhciBuPW5ldyBYZztpZih0IGluc3RhbmNlb2YgWGcpdC5lYWNoKChmdW5jdGlvbih0KXtuLmFkZCh0KX0pKTtlbHNlIGlmKHQpe3ZhciBpPS0xLHI9dC5sZW5ndGg7aWYobnVsbD09ZSlmb3IoOysraTxyOyluLmFkZCh0W2ldKTtlbHNlIGZvcig7KytpPHI7KW4uYWRkKGUodFtpXSxpLHQpKX1yZXR1cm4gbn1mdW5jdGlvbiBaZyh0KXt2YXIgZT1bXTtmb3IodmFyIG4gaW4gdCllLnB1c2gobik7cmV0dXJuIGV9WGcucHJvdG90eXBlPUtnLnByb3RvdHlwZT17Y29uc3RydWN0b3I6WGcsaGFzOiRnLmhhcyxhZGQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXNbVmcrKHQrPSIiKV09dCx0aGlzfSxyZW1vdmU6JGcucmVtb3ZlLGNsZWFyOiRnLmNsZWFyLHZhbHVlczokZy5rZXlzLHNpemU6JGcuc2l6ZSxlbXB0eTokZy5lbXB0eSxlYWNoOiRnLmVhY2h9O3ZhciBKZz1BcnJheS5wcm90b3R5cGUuc2xpY2U7ZnVuY3Rpb24gUWcodCxlKXtyZXR1cm4gdC1lfWZ1bmN0aW9uIHRfKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX1mdW5jdGlvbiBlXyh0LGUpe2Zvcih2YXIgbixpPS0xLHI9ZS5sZW5ndGg7KytpPHI7KWlmKG49bl8odCxlW2ldKSlyZXR1cm4gbjtyZXR1cm4gMH1mdW5jdGlvbiBuXyh0LGUpe2Zvcih2YXIgbj1lWzBdLGk9ZVsxXSxyPS0xLG89MCxhPXQubGVuZ3RoLHM9YS0xO288YTtzPW8rKyl7dmFyIGw9dFtvXSxjPWxbMF0sdT1sWzFdLGg9dFtzXSxkPWhbMF0scD1oWzFdO2lmKGlfKGwsaCxlKSlyZXR1cm4gMDt1PmkhPXA+aSYmbjwoZC1jKSooaS11KS8ocC11KStjJiYocj0tcil9cmV0dXJuIHJ9ZnVuY3Rpb24gaV8odCxlLG4pe3ZhciBpO3JldHVybihmdW5jdGlvbiByKHQsZSxuKXtyZXR1cm4oZVswXS10WzBdKSooblsxXS10WzFdKT09KG5bMF0tdFswXSkqKGVbMV0tdFsxXSl9KSh0LGUsbikmJihmdW5jdGlvbiBvKHQsZSxuKXtyZXR1cm4gdDw9ZSYmZTw9bnx8bjw9ZSYmZTw9dH0pKHRbaT0rKHRbMF09PT1lWzBdKV0sbltpXSxlW2ldKX1mdW5jdGlvbiByXygpe312YXIgb189W1tdLFtbWzEsMS41XSxbLjUsMV1dXSxbW1sxLjUsMV0sWzEsMS41XV1dLFtbWzEuNSwxXSxbLjUsMV1dXSxbW1sxLC41XSxbMS41LDFdXV0sW1tbMSwxLjVdLFsuNSwxXV0sW1sxLC41XSxbMS41LDFdXV0sW1tbMSwuNV0sWzEsMS41XV1dLFtbWzEsLjVdLFsuNSwxXV1dLFtbWy41LDFdLFsxLC41XV1dLFtbWzEsMS41XSxbMSwuNV1dXSxbW1suNSwxXSxbMSwuNV1dLFtbMS41LDFdLFsxLDEuNV1dXSxbW1sxLjUsMV0sWzEsLjVdXV0sW1tbLjUsMV0sWzEuNSwxXV1dLFtbWzEsMS41XSxbMS41LDFdXV0sW1tbLjUsMV0sWzEsMS41XV1dLFtdXTtmdW5jdGlvbiBhXygpe3ZhciB0PTEsZT0xLG49aWMsaT1zO2Z1bmN0aW9uIHIodCl7dmFyIGU9bih0KTtpZihBcnJheS5pc0FycmF5KGUpKWU9ZS5zbGljZSgpLnNvcnQoUWcpO2Vsc2V7dmFyIGk9R2wodCkscj1pWzBdLGE9aVsxXTtlPW5jKHIsYSxlKSxlPUtsKE1hdGguZmxvb3Ioci9lKSplLE1hdGguZmxvb3IoYS9lKSplLGUpfXJldHVybiBlLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIG8odCxlKX0pKX1mdW5jdGlvbiBvKG4scil7dmFyIG89W10scz1bXTtyZXR1cm4oZnVuY3Rpb24gbChuLGkscil7dmFyIG8scyxsLGMsdSxoPW5ldyBBcnJheSxkPW5ldyBBcnJheTtvPXM9LTEsb19bKGw9blswXT49aSk8PDFdLmZvckVhY2gocCk7Zm9yKDsrK288dC0xOylvX1tsfChsPW5bbysxXT49aSk8PDFdLmZvckVhY2gocCk7b19bbDw8MF0uZm9yRWFjaChwKTtmb3IoOysrczxlLTE7KXtmb3Iobz0tMSxvX1sobD1uW3MqdCt0XT49aSk8PDF8KGM9bltzKnRdPj1pKTw8Ml0uZm9yRWFjaChwKTsrK288dC0xOyl1PWMsb19bbHwobD1uW3MqdCt0K28rMV0+PWkpPDwxfChjPW5bcyp0K28rMV0+PWkpPDwyfHU8PDNdLmZvckVhY2gocCk7b19bbHxjPDwzXS5mb3JFYWNoKHApfW89LTEsb19bKGM9bltzKnRdPj1pKTw8Ml0uZm9yRWFjaChwKTtmb3IoOysrbzx0LTE7KXU9YyxvX1soYz1uW3MqdCtvKzFdPj1pKTw8Mnx1PDwzXS5mb3JFYWNoKHApO2Z1bmN0aW9uIHAodCl7dmFyIGUsbixpPVt0WzBdWzBdK28sdFswXVsxXStzXSxsPVt0WzFdWzBdK28sdFsxXVsxXStzXSxjPWEoaSksdT1hKGwpOyhlPWRbY10pPyhuPWhbdV0pPyhkZWxldGUgZFtlLmVuZF0sZGVsZXRlIGhbbi5zdGFydF0sZT09PW4/KGUucmluZy5wdXNoKGwpLHIoZS5yaW5nKSk6aFtlLnN0YXJ0XT1kW24uZW5kXT17c3RhcnQ6ZS5zdGFydCxlbmQ6bi5lbmQscmluZzplLnJpbmcuY29uY2F0KG4ucmluZyl9KTooZGVsZXRlIGRbZS5lbmRdLGUucmluZy5wdXNoKGwpLGRbZS5lbmQ9dV09ZSk6KGU9aFt1XSk/KG49ZFtjXSk/KGRlbGV0ZSBoW2Uuc3RhcnRdLGRlbGV0ZSBkW24uZW5kXSxlPT09bj8oZS5yaW5nLnB1c2gobCkscihlLnJpbmcpKTpoW24uc3RhcnRdPWRbZS5lbmRdPXtzdGFydDpuLnN0YXJ0LGVuZDplLmVuZCxyaW5nOm4ucmluZy5jb25jYXQoZS5yaW5nKX0pOihkZWxldGUgaFtlLnN0YXJ0XSxlLnJpbmcudW5zaGlmdChpKSxoW2Uuc3RhcnQ9Y109ZSk6aFtjXT1kW3VdPXtzdGFydDpjLGVuZDp1LHJpbmc6W2ksbF19fW9fW2M8PDNdLmZvckVhY2gocCl9KShuLHIsKGZ1bmN0aW9uKHQpe2kodCxuLHIpLChmdW5jdGlvbiBlKHQpe2Zvcih2YXIgZT0wLG49dC5sZW5ndGgsaT10W24tMV1bMV0qdFswXVswXS10W24tMV1bMF0qdFswXVsxXTsrK2U8bjspaSs9dFtlLTFdWzFdKnRbZV1bMF0tdFtlLTFdWzBdKnRbZV1bMV07cmV0dXJuIGl9KSh0KT4wP28ucHVzaChbdF0pOnMucHVzaCh0KX0pKSxzLmZvckVhY2goKGZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxuPTAsaT1vLmxlbmd0aDtuPGk7KytuKWlmKC0xIT09ZV8oKGU9b1tuXSlbMF0sdCkpcmV0dXJuIHZvaWQgZS5wdXNoKHQpfSkpLHt0eXBlOiJNdWx0aVBvbHlnb24iLHZhbHVlOnIsY29vcmRpbmF0ZXM6b319ZnVuY3Rpb24gYShlKXtyZXR1cm4gMiplWzBdK2VbMV0qKHQrMSkqNH1mdW5jdGlvbiBzKG4saSxyKXtuLmZvckVhY2goKGZ1bmN0aW9uKG4pe3ZhciBvLGE9blswXSxzPW5bMV0sbD0wfGEsYz0wfHMsdT1pW2MqdCtsXTthPjAmJmE8dCYmbD09PWEmJihuWzBdPWErKHItKG89aVtjKnQrbC0xXSkpLyh1LW8pLS41KSxzPjAmJnM8ZSYmYz09PXMmJihuWzFdPXMrKHItKG89aVsoYy0xKSp0K2xdKSkvKHUtbyktLjUpfSkpfXJldHVybiByLmNvbnRvdXI9byxyLnNpemU9ZnVuY3Rpb24obil7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuW3QsZV07dmFyIGk9TWF0aC5jZWlsKG5bMF0pLG89TWF0aC5jZWlsKG5bMV0pO2lmKCEoaT4wJiZvPjApKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBzaXplIik7cmV0dXJuIHQ9aSxlPW8scn0sci50aHJlc2hvbGRzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6QXJyYXkuaXNBcnJheSh0KT90XyhKZy5jYWxsKHQpKTp0Xyh0KSxyKTpufSxyLnNtb290aD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT10P3M6cl8scik6aT09PXN9LHJ9ZnVuY3Rpb24gc18odCxlLG4pe2Zvcih2YXIgaT10LndpZHRoLHI9dC5oZWlnaHQsbz0xKyhuPDwxKSxhPTA7YTxyOysrYSlmb3IodmFyIHM9MCxsPTA7czxpK247KytzKXM8aSYmKGwrPXQuZGF0YVtzK2EqaV0pLHM+PW4mJihzPj1vJiYobC09dC5kYXRhW3MtbythKmldKSxlLmRhdGFbcy1uK2EqaV09bC9NYXRoLm1pbihzKzEsaS0xK28tcyxvKSl9ZnVuY3Rpb24gbF8odCxlLG4pe2Zvcih2YXIgaT10LndpZHRoLHI9dC5oZWlnaHQsbz0xKyhuPDwxKSxhPTA7YTxpOysrYSlmb3IodmFyIHM9MCxsPTA7czxyK247KytzKXM8ciYmKGwrPXQuZGF0YVthK3MqaV0pLHM+PW4mJihzPj1vJiYobC09dC5kYXRhW2ErKHMtbykqaV0pLGUuZGF0YVthKyhzLW4pKmldPWwvTWF0aC5taW4ocysxLHItMStvLXMsbykpfWZ1bmN0aW9uIGNfKHQpe3JldHVybiB0WzBdfWZ1bmN0aW9uIHVfKHQpe3JldHVybiB0WzFdfWZ1bmN0aW9uIGhfKCl7cmV0dXJuIDF9dmFyIGRfPXt9LHBfPXt9O2Z1bmN0aW9uIGZfKHQpe3JldHVybiBuZXcgRnVuY3Rpb24oImQiLCJyZXR1cm4geyIrdC5tYXAoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KHQpKyI6IGRbIitlKyddIHx8ICIiJ30pKS5qb2luKCIsIikrIn0iKX1mdW5jdGlvbiBtXyh0KXt2YXIgZT1PYmplY3QuY3JlYXRlKG51bGwpLG49W107cmV0dXJuIHQuZm9yRWFjaCgoZnVuY3Rpb24odCl7Zm9yKHZhciBpIGluIHQpaSBpbiBlfHxuLnB1c2goZVtpXT1pKX0pKSxufWZ1bmN0aW9uIGdfKHQsZSl7dmFyIG49dCsiIixpPW4ubGVuZ3RoO3JldHVybiBpPGU/bmV3IEFycmF5KGUtaSsxKS5qb2luKDApK246bn1mdW5jdGlvbiBfXyh0KXt2YXIgZT10LmdldFVUQ0hvdXJzKCksbj10LmdldFVUQ01pbnV0ZXMoKSxpPXQuZ2V0VVRDU2Vjb25kcygpLHI9dC5nZXRVVENNaWxsaXNlY29uZHMoKTtyZXR1cm4gaXNOYU4odCk/IkludmFsaWQgRGF0ZSI6KGZ1bmN0aW9uIG8odCl7cmV0dXJuIHQ8MD8iLSIrZ18oLXQsNik6dD45OTk5PyIrIitnXyh0LDYpOmdfKHQsNCl9KSh0LmdldFVUQ0Z1bGxZZWFyKCkpKyItIitnXyh0LmdldFVUQ01vbnRoKCkrMSwyKSsiLSIrZ18odC5nZXRVVENEYXRlKCksMikrKHI/IlQiK2dfKGUsMikrIjoiK2dfKG4sMikrIjoiK2dfKGksMikrIi4iK2dfKHIsMykrIloiOmk/IlQiK2dfKGUsMikrIjoiK2dfKG4sMikrIjoiK2dfKGksMikrIloiOm58fGU/IlQiK2dfKGUsMikrIjoiK2dfKG4sMikrIloiOiIiKX1mdW5jdGlvbiB5Xyh0KXt2YXIgZT1uZXcgUmVnRXhwKCdbIicrdCsiXG5ccl0iKSxuPXQuY2hhckNvZGVBdCgwKTtmdW5jdGlvbiBpKHQsZSl7dmFyIGkscj1bXSxvPXQubGVuZ3RoLGE9MCxzPTAsbD1vPD0wLGM9ITE7ZnVuY3Rpb24gdSgpe2lmKGwpcmV0dXJuIHBfO2lmKGMpcmV0dXJuIGM9ITEsZF87dmFyIGUsaSxyPWE7aWYoMzQ9PT10LmNoYXJDb2RlQXQocikpe2Zvcig7YSsrPG8mJjM0IT09dC5jaGFyQ29kZUF0KGEpfHwzND09PXQuY2hhckNvZGVBdCgrK2EpOyk7cmV0dXJuKGU9YSk+PW8/bD0hMDoxMD09PShpPXQuY2hhckNvZGVBdChhKyspKT9jPSEwOjEzPT09aSYmKGM9ITAsMTA9PT10LmNoYXJDb2RlQXQoYSkmJisrYSksdC5zbGljZShyKzEsZS0xKS5yZXBsYWNlKC8iIi9nLCciJyl9Zm9yKDthPG87KXtpZigxMD09PShpPXQuY2hhckNvZGVBdChlPWErKykpKWM9ITA7ZWxzZSBpZigxMz09PWkpYz0hMCwxMD09PXQuY2hhckNvZGVBdChhKSYmKythO2Vsc2UgaWYoaSE9PW4pY29udGludWU7cmV0dXJuIHQuc2xpY2UocixlKX1yZXR1cm4gbD0hMCx0LnNsaWNlKHIsbyl9Zm9yKDEwPT09dC5jaGFyQ29kZUF0KG8tMSkmJi0tbywxMz09PXQuY2hhckNvZGVBdChvLTEpJiYtLW87KGk9dSgpKSE9PXBfOyl7Zm9yKHZhciBoPVtdO2khPT1kXyYmaSE9PXBfOyloLnB1c2goaSksaT11KCk7ZSYmbnVsbD09KGg9ZShoLHMrKykpfHxyLnB1c2goaCl9cmV0dXJuIHJ9ZnVuY3Rpb24gcihlLG4pe3JldHVybiBlLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIG4ubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gYShlW3RdKX0pKS5qb2luKHQpfSkpfWZ1bmN0aW9uIG8oZSl7cmV0dXJuIGUubWFwKGEpLmpvaW4odCl9ZnVuY3Rpb24gYSh0KXtyZXR1cm4gbnVsbD09dD8iIjp0IGluc3RhbmNlb2YgRGF0ZT9fXyh0KTplLnRlc3QodCs9IiIpPyciJyt0LnJlcGxhY2UoLyIvZywnIiInKSsnIic6dH1yZXR1cm57cGFyc2U6ZnVuY3Rpb24gcyh0LGUpe3ZhciBuLHIsbz1pKHQsKGZ1bmN0aW9uKHQsaSl7aWYobilyZXR1cm4gbih0LGktMSk7cj10LG49ZT8oZnVuY3Rpb24gbyh0LGUpe3ZhciBuPWZfKHQpO3JldHVybiBmdW5jdGlvbihpLHIpe3JldHVybiBlKG4oaSkscix0KX19KSh0LGUpOmZfKHQpfSkpO3JldHVybiBvLmNvbHVtbnM9cnx8W10sb30scGFyc2VSb3dzOmksZm9ybWF0OmZ1bmN0aW9uIGwoZSxuKXtyZXR1cm4gbnVsbD09biYmKG49bV8oZSkpLFtuLm1hcChhKS5qb2luKHQpXS5jb25jYXQocihlLG4pKS5qb2luKCJcbiIpfSxmb3JtYXRCb2R5OmZ1bmN0aW9uIGModCxlKXtyZXR1cm4gbnVsbD09ZSYmKGU9bV8odCkpLHIodCxlKS5qb2luKCJcbiIpfSxmb3JtYXRSb3dzOmZ1bmN0aW9uIHUodCl7cmV0dXJuIHQubWFwKG8pLmpvaW4oIlxuIil9LGZvcm1hdFJvdzpvLGZvcm1hdFZhbHVlOmF9fXZhciB2Xz15XygiLCIpLGJfPXZfLnBhcnNlLHhfPXZfLnBhcnNlUm93cyx3Xz12Xy5mb3JtYXQsU189dl8uZm9ybWF0Qm9keSxNXz12Xy5mb3JtYXRSb3dzLEVfPXZfLmZvcm1hdFJvdyxUXz12Xy5mb3JtYXRWYWx1ZSxDXz15XygiXHQiKSxBXz1DXy5wYXJzZSxrXz1DXy5wYXJzZVJvd3MsTF89Q18uZm9ybWF0LFBfPUNfLmZvcm1hdEJvZHksTl89Q18uZm9ybWF0Um93cyxJXz1DXy5mb3JtYXRSb3csUl89Q18uZm9ybWF0VmFsdWU7dmFyIE9fPW5ldyBEYXRlKCIyMDE5LTAxLTAxVDAwOjAwIikuZ2V0SG91cnMoKXx8bmV3IERhdGUoIjIwMTktMDctMDFUMDA6MDAiKS5nZXRIb3VycygpO2Z1bmN0aW9uIHpfKHQpe2lmKCF0Lm9rKXRocm93IG5ldyBFcnJvcih0LnN0YXR1cysiICIrdC5zdGF0dXNUZXh0KTtyZXR1cm4gdC5ibG9iKCl9ZnVuY3Rpb24gRF8odCl7aWYoIXQub2spdGhyb3cgbmV3IEVycm9yKHQuc3RhdHVzKyIgIit0LnN0YXR1c1RleHQpO3JldHVybiB0LmFycmF5QnVmZmVyKCl9ZnVuY3Rpb24gQl8odCl7aWYoIXQub2spdGhyb3cgbmV3IEVycm9yKHQuc3RhdHVzKyIgIit0LnN0YXR1c1RleHQpO3JldHVybiB0LnRleHQoKX1mdW5jdGlvbiBIXyh0LGUpe3JldHVybiBmZXRjaCh0LGUpLnRoZW4oQl8pfWZ1bmN0aW9uIEZfKHQpe3JldHVybiBmdW5jdGlvbihlLG4saSl7cmV0dXJuIDI9PT1hcmd1bWVudHMubGVuZ3RoJiYiZnVuY3Rpb24iPT10eXBlb2YgbiYmKGk9bixuPXZvaWQgMCksSF8oZSxuKS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gdChlLGkpfSkpfX12YXIgVl89Rl8oYl8pLFVfPUZfKEFfKTtmdW5jdGlvbiBqXyh0KXtpZighdC5vayl0aHJvdyBuZXcgRXJyb3IodC5zdGF0dXMrIiAiK3Quc3RhdHVzVGV4dCk7aWYoMjA0IT09dC5zdGF0dXMmJjIwNSE9PXQuc3RhdHVzKXJldHVybiB0Lmpzb24oKX1mdW5jdGlvbiBHXyh0KXtyZXR1cm4gZnVuY3Rpb24oZSxuKXtyZXR1cm4gSF8oZSxuKS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4obmV3IERPTVBhcnNlcikucGFyc2VGcm9tU3RyaW5nKGUsdCl9KSl9fXZhciBXXz1HXygiYXBwbGljYXRpb24veG1sIikscV89R18oInRleHQvaHRtbCIpLFlfPUdfKCJpbWFnZS9zdmcreG1sIik7ZnVuY3Rpb24gWF8odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fWZ1bmN0aW9uICRfKCl7cmV0dXJuIDFlLTYqKE1hdGgucmFuZG9tKCktLjUpfWZ1bmN0aW9uIEtfKHQsZSxuLGkpe2lmKGlzTmFOKGUpfHxpc05hTihuKSlyZXR1cm4gdDt2YXIgcixvLGEscyxsLGMsdSxoLGQscD10Ll9yb290LGY9e2RhdGE6aX0sbT10Ll94MCxnPXQuX3kwLF89dC5feDEseT10Ll95MTtpZighcClyZXR1cm4gdC5fcm9vdD1mLHQ7Zm9yKDtwLmxlbmd0aDspaWYoKGM9ZT49KG89KG0rXykvMikpP209bzpfPW8sKHU9bj49KGE9KGcreSkvMikpP2c9YTp5PWEscj1wLCEocD1wW2g9dTw8MXxjXSkpcmV0dXJuIHJbaF09Zix0O2lmKHM9K3QuX3guY2FsbChudWxsLHAuZGF0YSksbD0rdC5feS5jYWxsKG51bGwscC5kYXRhKSxlPT09cyYmbj09PWwpcmV0dXJuIGYubmV4dD1wLHI/cltoXT1mOnQuX3Jvb3Q9Zix0O2Rve3I9cj9yW2hdPW5ldyBBcnJheSg0KTp0Ll9yb290PW5ldyBBcnJheSg0KSwoYz1lPj0obz0obStfKS8yKSk/bT1vOl89bywodT1uPj0oYT0oZyt5KS8yKSk/Zz1hOnk9YX13aGlsZSgoaD11PDwxfGMpPT0oZD0obD49YSk8PDF8cz49bykpO3JldHVybiByW2RdPXAscltoXT1mLHR9ZnVuY3Rpb24gWl8odCxlLG4saSxyKXt0aGlzLm5vZGU9dCx0aGlzLngwPWUsdGhpcy55MD1uLHRoaXMueDE9aSx0aGlzLnkxPXJ9ZnVuY3Rpb24gSl8odCl7cmV0dXJuIHRbMF19ZnVuY3Rpb24gUV8odCl7cmV0dXJuIHRbMV19ZnVuY3Rpb24gdHkodCxlLG4pe3ZhciBpPW5ldyBleShudWxsPT1lP0pfOmUsbnVsbD09bj9RXzpuLE5hTixOYU4sTmFOLE5hTik7cmV0dXJuIG51bGw9PXQ/aTppLmFkZEFsbCh0KX1mdW5jdGlvbiBleSh0LGUsbixpLHIsbyl7dGhpcy5feD10LHRoaXMuX3k9ZSx0aGlzLl94MD1uLHRoaXMuX3kwPWksdGhpcy5feDE9cix0aGlzLl95MT1vLHRoaXMuX3Jvb3Q9dm9pZCAwfWZ1bmN0aW9uIG55KHQpe2Zvcih2YXIgZT17ZGF0YTp0LmRhdGF9LG49ZTt0PXQubmV4dDspbj1uLm5leHQ9e2RhdGE6dC5kYXRhfTtyZXR1cm4gZX12YXIgaXk9dHkucHJvdG90eXBlPWV5LnByb3RvdHlwZTtmdW5jdGlvbiByeSh0KXtyZXR1cm4gdC54K3Qudnh9ZnVuY3Rpb24gb3kodCl7cmV0dXJuIHQueSt0LnZ5fWZ1bmN0aW9uIGF5KHQpe3JldHVybiB0LmluZGV4fWZ1bmN0aW9uIHN5KHQsZSl7dmFyIG49dC5nZXQoZSk7aWYoIW4pdGhyb3cgbmV3IEVycm9yKCJtaXNzaW5nOiAiK2UpO3JldHVybiBufWZ1bmN0aW9uIGx5KHQpe3JldHVybiB0Lnh9ZnVuY3Rpb24gY3kodCl7cmV0dXJuIHQueX1peS5jb3B5PWZ1bmN0aW9uKCl7dmFyIHQsZSxuPW5ldyBleSh0aGlzLl94LHRoaXMuX3ksdGhpcy5feDAsdGhpcy5feTAsdGhpcy5feDEsdGhpcy5feTEpLGk9dGhpcy5fcm9vdDtpZighaSlyZXR1cm4gbjtpZighaS5sZW5ndGgpcmV0dXJuIG4uX3Jvb3Q9bnkoaSksbjtmb3IodD1be3NvdXJjZTppLHRhcmdldDpuLl9yb290PW5ldyBBcnJheSg0KX1dO2k9dC5wb3AoKTspZm9yKHZhciByPTA7cjw0OysrcikoZT1pLnNvdXJjZVtyXSkmJihlLmxlbmd0aD90LnB1c2goe3NvdXJjZTplLHRhcmdldDppLnRhcmdldFtyXT1uZXcgQXJyYXkoNCl9KTppLnRhcmdldFtyXT1ueShlKSk7cmV0dXJuIG59LGl5LmFkZD1mdW5jdGlvbiB1eSh0KXt2YXIgZT0rdGhpcy5feC5jYWxsKG51bGwsdCksbj0rdGhpcy5feS5jYWxsKG51bGwsdCk7cmV0dXJuIEtfKHRoaXMuY292ZXIoZSxuKSxlLG4sdCl9LGl5LmFkZEFsbD1mdW5jdGlvbiBoeSh0KXt2YXIgZSxuLGkscixvPXQubGVuZ3RoLGE9bmV3IEFycmF5KG8pLHM9bmV3IEFycmF5KG8pLGw9MS8wLGM9MS8wLHU9LTEvMCxoPS0xLzA7Zm9yKG49MDtuPG87KytuKWlzTmFOKGk9K3RoaXMuX3guY2FsbChudWxsLGU9dFtuXSkpfHxpc05hTihyPSt0aGlzLl95LmNhbGwobnVsbCxlKSl8fChhW25dPWksc1tuXT1yLGk8bCYmKGw9aSksaT51JiYodT1pKSxyPGMmJihjPXIpLHI+aCYmKGg9cikpO2lmKGw+dXx8Yz5oKXJldHVybiB0aGlzO2Zvcih0aGlzLmNvdmVyKGwsYykuY292ZXIodSxoKSxuPTA7bjxvOysrbilLXyh0aGlzLGFbbl0sc1tuXSx0W25dKTtyZXR1cm4gdGhpc30saXkuY292ZXI9ZnVuY3Rpb24gZHkodCxlKXtpZihpc05hTih0PSt0KXx8aXNOYU4oZT0rZSkpcmV0dXJuIHRoaXM7dmFyIG49dGhpcy5feDAsaT10aGlzLl95MCxyPXRoaXMuX3gxLG89dGhpcy5feTE7aWYoaXNOYU4obikpcj0obj1NYXRoLmZsb29yKHQpKSsxLG89KGk9TWF0aC5mbG9vcihlKSkrMTtlbHNle2Zvcih2YXIgYSxzLGw9ci1uLGM9dGhpcy5fcm9vdDtuPnR8fHQ+PXJ8fGk+ZXx8ZT49bzspc3dpdGNoKHM9KGU8aSk8PDF8dDxuLChhPW5ldyBBcnJheSg0KSlbc109YyxjPWEsbCo9MixzKXtjYXNlIDA6cj1uK2wsbz1pK2w7YnJlYWs7Y2FzZSAxOm49ci1sLG89aStsO2JyZWFrO2Nhc2UgMjpyPW4rbCxpPW8tbDticmVhaztjYXNlIDM6bj1yLWwsaT1vLWx9dGhpcy5fcm9vdCYmdGhpcy5fcm9vdC5sZW5ndGgmJih0aGlzLl9yb290PWMpfXJldHVybiB0aGlzLl94MD1uLHRoaXMuX3kwPWksdGhpcy5feDE9cix0aGlzLl95MT1vLHRoaXN9LGl5LmRhdGE9ZnVuY3Rpb24gcHkoKXt2YXIgdD1bXTtyZXR1cm4gdGhpcy52aXNpdCgoZnVuY3Rpb24oZSl7aWYoIWUubGVuZ3RoKWRve3QucHVzaChlLmRhdGEpfXdoaWxlKGU9ZS5uZXh0KX0pKSx0fSxpeS5leHRlbnQ9ZnVuY3Rpb24gZnkodCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5jb3ZlcigrdFswXVswXSwrdFswXVsxXSkuY292ZXIoK3RbMV1bMF0sK3RbMV1bMV0pOmlzTmFOKHRoaXMuX3gwKT92b2lkIDA6W1t0aGlzLl94MCx0aGlzLl95MF0sW3RoaXMuX3gxLHRoaXMuX3kxXV19LGl5LmZpbmQ9ZnVuY3Rpb24gbXkodCxlLG4pe3ZhciBpLHIsbyxhLHMsbCxjLHU9dGhpcy5feDAsaD10aGlzLl95MCxkPXRoaXMuX3gxLHA9dGhpcy5feTEsZj1bXSxtPXRoaXMuX3Jvb3Q7Zm9yKG0mJmYucHVzaChuZXcgWl8obSx1LGgsZCxwKSksbnVsbD09bj9uPTEvMDoodT10LW4saD1lLW4sZD10K24scD1lK24sbio9bik7bD1mLnBvcCgpOylpZighKCEobT1sLm5vZGUpfHwocj1sLngwKT5kfHwobz1sLnkwKT5wfHwoYT1sLngxKTx1fHwocz1sLnkxKTxoKSlpZihtLmxlbmd0aCl7dmFyIGc9KHIrYSkvMixfPShvK3MpLzI7Zi5wdXNoKG5ldyBaXyhtWzNdLGcsXyxhLHMpLG5ldyBaXyhtWzJdLHIsXyxnLHMpLG5ldyBaXyhtWzFdLGcsbyxhLF8pLG5ldyBaXyhtWzBdLHIsbyxnLF8pKSwoYz0oZT49Xyk8PDF8dD49ZykmJihsPWZbZi5sZW5ndGgtMV0sZltmLmxlbmd0aC0xXT1mW2YubGVuZ3RoLTEtY10sZltmLmxlbmd0aC0xLWNdPWwpfWVsc2V7dmFyIHk9dC0rdGhpcy5feC5jYWxsKG51bGwsbS5kYXRhKSx2PWUtK3RoaXMuX3kuY2FsbChudWxsLG0uZGF0YSksYj15Knkrdip2O2lmKGI8bil7dmFyIHg9TWF0aC5zcXJ0KG49Yik7dT10LXgsaD1lLXgsZD10K3gscD1lK3gsaT1tLmRhdGF9fXJldHVybiBpfSxpeS5yZW1vdmU9ZnVuY3Rpb24gZ3kodCl7aWYoaXNOYU4obz0rdGhpcy5feC5jYWxsKG51bGwsdCkpfHxpc05hTihhPSt0aGlzLl95LmNhbGwobnVsbCx0KSkpcmV0dXJuIHRoaXM7dmFyIGUsbixpLHIsbyxhLHMsbCxjLHUsaCxkLHA9dGhpcy5fcm9vdCxmPXRoaXMuX3gwLG09dGhpcy5feTAsZz10aGlzLl94MSxfPXRoaXMuX3kxO2lmKCFwKXJldHVybiB0aGlzO2lmKHAubGVuZ3RoKWZvcig7Oyl7aWYoKGM9bz49KHM9KGYrZykvMikpP2Y9czpnPXMsKHU9YT49KGw9KG0rXykvMikpP209bDpfPWwsZT1wLCEocD1wW2g9dTw8MXxjXSkpcmV0dXJuIHRoaXM7aWYoIXAubGVuZ3RoKWJyZWFrOyhlW2grMSYzXXx8ZVtoKzImM118fGVbaCszJjNdKSYmKG49ZSxkPWgpfWZvcig7cC5kYXRhIT09dDspaWYoaT1wLCEocD1wLm5leHQpKXJldHVybiB0aGlzO3JldHVybihyPXAubmV4dCkmJmRlbGV0ZSBwLm5leHQsaT8ocj9pLm5leHQ9cjpkZWxldGUgaS5uZXh0LHRoaXMpOmU/KHI/ZVtoXT1yOmRlbGV0ZSBlW2hdLChwPWVbMF18fGVbMV18fGVbMl18fGVbM10pJiZwPT09KGVbM118fGVbMl18fGVbMV18fGVbMF0pJiYhcC5sZW5ndGgmJihuP25bZF09cDp0aGlzLl9yb290PXApLHRoaXMpOih0aGlzLl9yb290PXIsdGhpcyl9LGl5LnJlbW92ZUFsbD1mdW5jdGlvbiBfeSh0KXtmb3IodmFyIGU9MCxuPXQubGVuZ3RoO2U8bjsrK2UpdGhpcy5yZW1vdmUodFtlXSk7cmV0dXJuIHRoaXN9LGl5LnJvb3Q9ZnVuY3Rpb24geXkoKXtyZXR1cm4gdGhpcy5fcm9vdH0saXkuc2l6ZT1mdW5jdGlvbiB2eSgpe3ZhciB0PTA7cmV0dXJuIHRoaXMudmlzaXQoKGZ1bmN0aW9uKGUpe2lmKCFlLmxlbmd0aClkb3srK3R9d2hpbGUoZT1lLm5leHQpfSkpLHR9LGl5LnZpc2l0PWZ1bmN0aW9uIGJ5KHQpe3ZhciBlLG4saSxyLG8sYSxzPVtdLGw9dGhpcy5fcm9vdDtmb3IobCYmcy5wdXNoKG5ldyBaXyhsLHRoaXMuX3gwLHRoaXMuX3kwLHRoaXMuX3gxLHRoaXMuX3kxKSk7ZT1zLnBvcCgpOylpZighdChsPWUubm9kZSxpPWUueDAscj1lLnkwLG89ZS54MSxhPWUueTEpJiZsLmxlbmd0aCl7dmFyIGM9KGkrbykvMix1PShyK2EpLzI7KG49bFszXSkmJnMucHVzaChuZXcgWl8obixjLHUsbyxhKSksKG49bFsyXSkmJnMucHVzaChuZXcgWl8obixpLHUsYyxhKSksKG49bFsxXSkmJnMucHVzaChuZXcgWl8obixjLHIsbyx1KSksKG49bFswXSkmJnMucHVzaChuZXcgWl8obixpLHIsYyx1KSl9cmV0dXJuIHRoaXN9LGl5LnZpc2l0QWZ0ZXI9ZnVuY3Rpb24geHkodCl7dmFyIGUsbj1bXSxpPVtdO2Zvcih0aGlzLl9yb290JiZuLnB1c2gobmV3IFpfKHRoaXMuX3Jvb3QsdGhpcy5feDAsdGhpcy5feTAsdGhpcy5feDEsdGhpcy5feTEpKTtlPW4ucG9wKCk7KXt2YXIgcj1lLm5vZGU7aWYoci5sZW5ndGgpe3ZhciBvLGE9ZS54MCxzPWUueTAsbD1lLngxLGM9ZS55MSx1PShhK2wpLzIsaD0ocytjKS8yOyhvPXJbMF0pJiZuLnB1c2gobmV3IFpfKG8sYSxzLHUsaCkpLChvPXJbMV0pJiZuLnB1c2gobmV3IFpfKG8sdSxzLGwsaCkpLChvPXJbMl0pJiZuLnB1c2gobmV3IFpfKG8sYSxoLHUsYykpLChvPXJbM10pJiZuLnB1c2gobmV3IFpfKG8sdSxoLGwsYykpfWkucHVzaChlKX1mb3IoO2U9aS5wb3AoKTspdChlLm5vZGUsZS54MCxlLnkwLGUueDEsZS55MSk7cmV0dXJuIHRoaXN9LGl5Lng9ZnVuY3Rpb24gd3kodCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHRoaXMuX3g9dCx0aGlzKTp0aGlzLl94fSxpeS55PWZ1bmN0aW9uIFN5KHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0aGlzLl95PXQsdGhpcyk6dGhpcy5feX07dmFyIE15PU1hdGguUEkqKDMtTWF0aC5zcXJ0KDUpKTtmdW5jdGlvbiBFeSh0LGUpe2lmKChuPSh0PWU/dC50b0V4cG9uZW50aWFsKGUtMSk6dC50b0V4cG9uZW50aWFsKCkpLmluZGV4T2YoImUiKSk8MClyZXR1cm4gbnVsbDt2YXIgbixpPXQuc2xpY2UoMCxuKTtyZXR1cm5baS5sZW5ndGg+MT9pWzBdK2kuc2xpY2UoMik6aSwrdC5zbGljZShuKzEpXX1mdW5jdGlvbiBUeSh0KXtyZXR1cm4odD1FeShNYXRoLmFicyh0KSkpP3RbMV06TmFOfXZhciBDeSxBeT0vXig/OiguKT8oWzw+PV5dKSk/KFsrXC0oIF0pPyhbJCNdKT8oMCk/KFxkKyk/KCwpPyhcLlxkKyk/KH4pPyhbYS16JV0pPyQvaTtmdW5jdGlvbiBreSh0KXtpZighKGU9QXkuZXhlYyh0KSkpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGZvcm1hdDogIit0KTt2YXIgZTtyZXR1cm4gbmV3IEx5KHtmaWxsOmVbMV0sYWxpZ246ZVsyXSxzaWduOmVbM10sc3ltYm9sOmVbNF0semVybzplWzVdLHdpZHRoOmVbNl0sY29tbWE6ZVs3XSxwcmVjaXNpb246ZVs4XSYmZVs4XS5zbGljZSgxKSx0cmltOmVbOV0sdHlwZTplWzEwXX0pfWZ1bmN0aW9uIEx5KHQpe3RoaXMuZmlsbD12b2lkIDA9PT10LmZpbGw/IiAiOnQuZmlsbCsiIix0aGlzLmFsaWduPXZvaWQgMD09PXQuYWxpZ24/Ij4iOnQuYWxpZ24rIiIsdGhpcy5zaWduPXZvaWQgMD09PXQuc2lnbj8iLSI6dC5zaWduKyIiLHRoaXMuc3ltYm9sPXZvaWQgMD09PXQuc3ltYm9sPyIiOnQuc3ltYm9sKyIiLHRoaXMuemVybz0hIXQuemVybyx0aGlzLndpZHRoPXZvaWQgMD09PXQud2lkdGg/dm9pZCAwOit0LndpZHRoLHRoaXMuY29tbWE9ISF0LmNvbW1hLHRoaXMucHJlY2lzaW9uPXZvaWQgMD09PXQucHJlY2lzaW9uP3ZvaWQgMDordC5wcmVjaXNpb24sdGhpcy50cmltPSEhdC50cmltLHRoaXMudHlwZT12b2lkIDA9PT10LnR5cGU/IiI6dC50eXBlKyIifWZ1bmN0aW9uIFB5KHQsZSl7dmFyIG49RXkodCxlKTtpZighbilyZXR1cm4gdCsiIjt2YXIgaT1uWzBdLHI9blsxXTtyZXR1cm4gcjwwPyIwLiIrbmV3IEFycmF5KC1yKS5qb2luKCIwIikraTppLmxlbmd0aD5yKzE/aS5zbGljZSgwLHIrMSkrIi4iK2kuc2xpY2UocisxKTppK25ldyBBcnJheShyLWkubGVuZ3RoKzIpLmpvaW4oIjAiKX1reS5wcm90b3R5cGU9THkucHJvdG90eXBlLEx5LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmZpbGwrdGhpcy5hbGlnbit0aGlzLnNpZ24rdGhpcy5zeW1ib2wrKHRoaXMuemVybz8iMCI6IiIpKyh2b2lkIDA9PT10aGlzLndpZHRoPyIiOk1hdGgubWF4KDEsMHx0aGlzLndpZHRoKSkrKHRoaXMuY29tbWE/IiwiOiIiKSsodm9pZCAwPT09dGhpcy5wcmVjaXNpb24/IiI6Ii4iK01hdGgubWF4KDAsMHx0aGlzLnByZWNpc2lvbikpKyh0aGlzLnRyaW0/In4iOiIiKSt0aGlzLnR5cGV9O3ZhciBOeT17IiUiOmZ1bmN0aW9uKHQsZSl7cmV0dXJuKDEwMCp0KS50b0ZpeGVkKGUpfSxiOmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnJvdW5kKHQpLnRvU3RyaW5nKDIpfSxjOmZ1bmN0aW9uKHQpe3JldHVybiB0KyIifSxkOmZ1bmN0aW9uIEl5KHQpe3JldHVybiBNYXRoLmFicyh0PU1hdGgucm91bmQodCkpPj0xZTIxP3QudG9Mb2NhbGVTdHJpbmcoImVuIikucmVwbGFjZSgvLC9nLCIiKTp0LnRvU3RyaW5nKDEwKX0sZTpmdW5jdGlvbih0LGUpe3JldHVybiB0LnRvRXhwb25lbnRpYWwoZSl9LGY6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC50b0ZpeGVkKGUpfSxnOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQudG9QcmVjaXNpb24oZSl9LG86ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgucm91bmQodCkudG9TdHJpbmcoOCl9LHA6ZnVuY3Rpb24odCxlKXtyZXR1cm4gUHkoMTAwKnQsZSl9LHI6UHksczpmdW5jdGlvbiBSeSh0LGUpe3ZhciBuPUV5KHQsZSk7aWYoIW4pcmV0dXJuIHQrIiI7dmFyIGk9blswXSxyPW5bMV0sbz1yLShDeT0zKk1hdGgubWF4KC04LE1hdGgubWluKDgsTWF0aC5mbG9vcihyLzMpKSkpKzEsYT1pLmxlbmd0aDtyZXR1cm4gbz09PWE/aTpvPmE/aStuZXcgQXJyYXkoby1hKzEpLmpvaW4oIjAiKTpvPjA/aS5zbGljZSgwLG8pKyIuIitpLnNsaWNlKG8pOiIwLiIrbmV3IEFycmF5KDEtbykuam9pbigiMCIpK0V5KHQsTWF0aC5tYXgoMCxlK28tMSkpWzBdfSxYOmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnJvdW5kKHQpLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpfSx4OmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnJvdW5kKHQpLnRvU3RyaW5nKDE2KX19O2Z1bmN0aW9uIE95KHQpe3JldHVybiB0fXZhciB6eSxEeSxCeSxIeT1BcnJheS5wcm90b3R5cGUubWFwLEZ5PVsieSIsInoiLCJhIiwiZiIsInAiLCJuIiwiwrUiLCJtIiwiIiwiayIsIk0iLCJHIiwiVCIsIlAiLCJFIiwiWiIsIlkiXTtmdW5jdGlvbiBWeSh0KXt2YXIgZT12b2lkIDA9PT10Lmdyb3VwaW5nfHx2b2lkIDA9PT10LnRob3VzYW5kcz9PeTooZnVuY3Rpb24gbih0LGUpe3JldHVybiBmdW5jdGlvbihuLGkpe2Zvcih2YXIgcj1uLmxlbmd0aCxvPVtdLGE9MCxzPXRbMF0sbD0wO3I+MCYmcz4wJiYobCtzKzE+aSYmKHM9TWF0aC5tYXgoMSxpLWwpKSxvLnB1c2gobi5zdWJzdHJpbmcoci09cyxyK3MpKSwhKChsKz1zKzEpPmkpKTspcz10W2E9KGErMSkldC5sZW5ndGhdO3JldHVybiBvLnJldmVyc2UoKS5qb2luKGUpfX0pKEh5LmNhbGwodC5ncm91cGluZyxOdW1iZXIpLHQudGhvdXNhbmRzKyIiKSxpPXZvaWQgMD09PXQuY3VycmVuY3k/IiI6dC5jdXJyZW5jeVswXSsiIixyPXZvaWQgMD09PXQuY3VycmVuY3k/IiI6dC5jdXJyZW5jeVsxXSsiIixvPXZvaWQgMD09PXQuZGVjaW1hbD8iLiI6dC5kZWNpbWFsKyIiLGE9dm9pZCAwPT09dC5udW1lcmFscz9PeTooZnVuY3Rpb24gcyh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZSgvWzAtOV0vZywoZnVuY3Rpb24oZSl7cmV0dXJuIHRbK2VdfSkpfX0pKEh5LmNhbGwodC5udW1lcmFscyxTdHJpbmcpKSxsPXZvaWQgMD09PXQucGVyY2VudD8iJSI6dC5wZXJjZW50KyIiLGM9dm9pZCAwPT09dC5taW51cz8iLSI6dC5taW51cysiIix1PXZvaWQgMD09PXQubmFuPyJOYU4iOnQubmFuKyIiO2Z1bmN0aW9uIGgodCl7dmFyIG49KHQ9a3kodCkpLmZpbGwscz10LmFsaWduLGg9dC5zaWduLGQ9dC5zeW1ib2wscD10Lnplcm8sZj10LndpZHRoLG09dC5jb21tYSxnPXQucHJlY2lzaW9uLF89dC50cmltLHk9dC50eXBlOyJuIj09PXk/KG09ITAseT0iZyIpOk55W3ldfHwodm9pZCAwPT09ZyYmKGc9MTIpLF89ITAseT0iZyIpLChwfHwiMCI9PT1uJiYiPSI9PT1zKSYmKHA9ITAsbj0iMCIscz0iPSIpO3ZhciB2PSIkIj09PWQ/aToiIyI9PT1kJiYvW2JveFhdLy50ZXN0KHkpPyIwIit5LnRvTG93ZXJDYXNlKCk6IiIsYj0iJCI9PT1kP3I6L1slcF0vLnRlc3QoeSk/bDoiIix4PU55W3ldLHc9L1tkZWZncHJzJV0vLnRlc3QoeSk7ZnVuY3Rpb24gUyh0KXt2YXIgaSxyLGwsZD12LFM9YjtpZigiYyI9PT15KVM9eCh0KStTLHQ9IiI7ZWxzZXt2YXIgTT0odD0rdCk8MHx8MS90PDA7aWYodD1pc05hTih0KT91OngoTWF0aC5hYnModCksZyksXyYmKHQ9KGZ1bmN0aW9uIEUodCl7dDpmb3IodmFyIGUsbj10Lmxlbmd0aCxpPTEscj0tMTtpPG47KytpKXN3aXRjaCh0W2ldKXtjYXNlIi4iOnI9ZT1pO2JyZWFrO2Nhc2UiMCI6MD09PXImJihyPWkpLGU9aTticmVhaztkZWZhdWx0OmlmKCErdFtpXSlicmVhayB0O3I+MCYmKHI9MCl9cmV0dXJuIHI+MD90LnNsaWNlKDAscikrdC5zbGljZShlKzEpOnR9KSh0KSksTSYmMD09K3QmJiIrIiE9PWgmJihNPSExKSxkPShNPyIoIj09PWg/aDpjOiItIj09PWh8fCIoIj09PWg/IiI6aCkrZCxTPSgicyI9PT15P0Z5WzgrQ3kvM106IiIpK1MrKE0mJiIoIj09PWg/IikiOiIiKSx3KWZvcihpPS0xLHI9dC5sZW5ndGg7KytpPHI7KWlmKDQ4PihsPXQuY2hhckNvZGVBdChpKSl8fGw+NTcpe1M9KDQ2PT09bD9vK3Quc2xpY2UoaSsxKTp0LnNsaWNlKGkpKStTLHQ9dC5zbGljZSgwLGkpO2JyZWFrfX1tJiYhcCYmKHQ9ZSh0LDEvMCkpO3ZhciBUPWQubGVuZ3RoK3QubGVuZ3RoK1MubGVuZ3RoLEM9VDxmP25ldyBBcnJheShmLVQrMSkuam9pbihuKToiIjtzd2l0Y2gobSYmcCYmKHQ9ZShDK3QsQy5sZW5ndGg/Zi1TLmxlbmd0aDoxLzApLEM9IiIpLHMpe2Nhc2UiPCI6dD1kK3QrUytDO2JyZWFrO2Nhc2UiPSI6dD1kK0MrdCtTO2JyZWFrO2Nhc2UiXiI6dD1DLnNsaWNlKDAsVD1DLmxlbmd0aD4+MSkrZCt0K1MrQy5zbGljZShUKTticmVhaztkZWZhdWx0OnQ9QytkK3QrU31yZXR1cm4gYSh0KX1yZXR1cm4gZz12b2lkIDA9PT1nPzY6L1tncHJzXS8udGVzdCh5KT9NYXRoLm1heCgxLE1hdGgubWluKDIxLGcpKTpNYXRoLm1heCgwLE1hdGgubWluKDIwLGcpKSxTLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHQrIiJ9LFN9cmV0dXJue2Zvcm1hdDpoLGZvcm1hdFByZWZpeDpmdW5jdGlvbiBkKHQsZSl7dmFyIG49aCgoKHQ9a3kodCkpLnR5cGU9ImYiLHQpKSxpPTMqTWF0aC5tYXgoLTgsTWF0aC5taW4oOCxNYXRoLmZsb29yKFR5KGUpLzMpKSkscj1NYXRoLnBvdygxMCwtaSksbz1GeVs4K2kvM107cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBuKHIqdCkrb319fX1mdW5jdGlvbiBVeSh0KXtyZXR1cm4genk9VnkodCksRHk9enkuZm9ybWF0LEJ5PXp5LmZvcm1hdFByZWZpeCx6eX1mdW5jdGlvbiBqeSh0KXtyZXR1cm4gTWF0aC5tYXgoMCwtVHkoTWF0aC5hYnModCkpKX1mdW5jdGlvbiBHeSh0LGUpe3JldHVybiBNYXRoLm1heCgwLDMqTWF0aC5tYXgoLTgsTWF0aC5taW4oOCxNYXRoLmZsb29yKFR5KGUpLzMpKSktVHkoTWF0aC5hYnModCkpKX1mdW5jdGlvbiBXeSh0LGUpe3JldHVybiB0PU1hdGguYWJzKHQpLGU9TWF0aC5hYnMoZSktdCxNYXRoLm1heCgwLFR5KGUpLVR5KHQpKSsxfWZ1bmN0aW9uIHF5KCl7cmV0dXJuIG5ldyBZeX1mdW5jdGlvbiBZeSgpe3RoaXMucmVzZXQoKX1VeSh7ZGVjaW1hbDoiLiIsdGhvdXNhbmRzOiIsIixncm91cGluZzpbM10sY3VycmVuY3k6WyIkIiwiIl0sbWludXM6Ii0ifSksWXkucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpZeSxyZXNldDpmdW5jdGlvbigpe3RoaXMucz10aGlzLnQ9MH0sYWRkOmZ1bmN0aW9uKHQpeyR5KFh5LHQsdGhpcy50KSwkeSh0aGlzLFh5LnMsdGhpcy5zKSx0aGlzLnM/dGhpcy50Kz1YeS50OnRoaXMucz1YeS50fSx2YWx1ZU9mOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc319O3ZhciBYeT1uZXcgWXk7ZnVuY3Rpb24gJHkodCxlLG4pe3ZhciBpPXQucz1lK24scj1pLWU7dC50PWUtKGktcikrKG4tcil9dmFyIEt5PTFlLTYsWnk9MWUtMTIsSnk9TWF0aC5QSSxReT1KeS8yLHR2PUp5LzQsZXY9MipKeSxudj0xODAvSnksaXY9SnkvMTgwLHJ2PU1hdGguYWJzLG92PU1hdGguYXRhbixhdj1NYXRoLmF0YW4yLHN2PU1hdGguY29zLGx2PU1hdGguY2VpbCxjdj1NYXRoLmV4cCx1dj1NYXRoLmxvZyxodj1NYXRoLnBvdyxkdj1NYXRoLnNpbixwdj1NYXRoLnNpZ258fGZ1bmN0aW9uKHQpe3JldHVybiB0PjA/MTp0PDA/LTE6MH0sZnY9TWF0aC5zcXJ0LG12PU1hdGgudGFuO2Z1bmN0aW9uIGd2KHQpe3JldHVybiB0PjE/MDp0PC0xP0p5Ok1hdGguYWNvcyh0KX1mdW5jdGlvbiBfdih0KXtyZXR1cm4gdD4xP1F5OnQ8LTE/LVF5Ok1hdGguYXNpbih0KX1mdW5jdGlvbiB5dih0KXtyZXR1cm4odD1kdih0LzIpKSp0fWZ1bmN0aW9uIHZ2KCl7fWZ1bmN0aW9uIGJ2KHQsZSl7dCYmd3YuaGFzT3duUHJvcGVydHkodC50eXBlKSYmd3ZbdC50eXBlXSh0LGUpfXZhciB4dj17RmVhdHVyZTpmdW5jdGlvbih0LGUpe2J2KHQuZ2VvbWV0cnksZSl9LEZlYXR1cmVDb2xsZWN0aW9uOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPXQuZmVhdHVyZXMsaT0tMSxyPW4ubGVuZ3RoOysraTxyOylidihuW2ldLmdlb21ldHJ5LGUpfX0sd3Y9e1NwaGVyZTpmdW5jdGlvbih0LGUpe2Uuc3BoZXJlKCl9LFBvaW50OmZ1bmN0aW9uKHQsZSl7ZS5wb2ludCgodD10LmNvb3JkaW5hdGVzKVswXSx0WzFdLHRbMl0pfSxNdWx0aVBvaW50OmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPXQuY29vcmRpbmF0ZXMsaT0tMSxyPW4ubGVuZ3RoOysraTxyOyllLnBvaW50KCh0PW5baV0pWzBdLHRbMV0sdFsyXSl9LExpbmVTdHJpbmc6ZnVuY3Rpb24odCxlKXtTdih0LmNvb3JkaW5hdGVzLGUsMCl9LE11bHRpTGluZVN0cmluZzpmdW5jdGlvbih0LGUpe2Zvcih2YXIgbj10LmNvb3JkaW5hdGVzLGk9LTEscj1uLmxlbmd0aDsrK2k8cjspU3YobltpXSxlLDApfSxQb2x5Z29uOmZ1bmN0aW9uKHQsZSl7TXYodC5jb29yZGluYXRlcyxlKX0sTXVsdGlQb2x5Z29uOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPXQuY29vcmRpbmF0ZXMsaT0tMSxyPW4ubGVuZ3RoOysraTxyOylNdihuW2ldLGUpfSxHZW9tZXRyeUNvbGxlY3Rpb246ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dC5nZW9tZXRyaWVzLGk9LTEscj1uLmxlbmd0aDsrK2k8cjspYnYobltpXSxlKX19O2Z1bmN0aW9uIFN2KHQsZSxuKXt2YXIgaSxyPS0xLG89dC5sZW5ndGgtbjtmb3IoZS5saW5lU3RhcnQoKTsrK3I8bzspZS5wb2ludCgoaT10W3JdKVswXSxpWzFdLGlbMl0pO2UubGluZUVuZCgpfWZ1bmN0aW9uIE12KHQsZSl7dmFyIG49LTEsaT10Lmxlbmd0aDtmb3IoZS5wb2x5Z29uU3RhcnQoKTsrK248aTspU3YodFtuXSxlLDEpO2UucG9seWdvbkVuZCgpfWZ1bmN0aW9uIEV2KHQsZSl7dCYmeHYuaGFzT3duUHJvcGVydHkodC50eXBlKT94dlt0LnR5cGVdKHQsZSk6YnYodCxlKX12YXIgVHYsQ3YsQXYsa3YsTHYsUHY9cXkoKSxOdj1xeSgpLEl2PXtwb2ludDp2dixsaW5lU3RhcnQ6dnYsbGluZUVuZDp2dixwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXtQdi5yZXNldCgpLEl2LmxpbmVTdGFydD1SdixJdi5saW5lRW5kPU92fSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7dmFyIHQ9K1B2O052LmFkZCh0PDA/ZXYrdDp0KSx0aGlzLmxpbmVTdGFydD10aGlzLmxpbmVFbmQ9dGhpcy5wb2ludD12dn0sc3BoZXJlOmZ1bmN0aW9uKCl7TnYuYWRkKGV2KX19O2Z1bmN0aW9uIFJ2KCl7SXYucG9pbnQ9enZ9ZnVuY3Rpb24gT3YoKXtEdihUdixDdil9ZnVuY3Rpb24genYodCxlKXtJdi5wb2ludD1EdixUdj10LEN2PWUsQXY9dCo9aXYsa3Y9c3YoZT0oZSo9aXYpLzIrdHYpLEx2PWR2KGUpfWZ1bmN0aW9uIER2KHQsZSl7dmFyIG49KHQqPWl2KS1BdixpPW4+PTA/MTotMSxyPWkqbixvPXN2KGU9KGUqPWl2KS8yK3R2KSxhPWR2KGUpLHM9THYqYSxsPWt2Km8rcypzdihyKSxjPXMqaSpkdihyKTtQdi5hZGQoYXYoYyxsKSksQXY9dCxrdj1vLEx2PWF9ZnVuY3Rpb24gQnYodCl7cmV0dXJuW2F2KHRbMV0sdFswXSksX3YodFsyXSldfWZ1bmN0aW9uIEh2KHQpe3ZhciBlPXRbMF0sbj10WzFdLGk9c3Yobik7cmV0dXJuW2kqc3YoZSksaSpkdihlKSxkdihuKV19ZnVuY3Rpb24gRnYodCxlKXtyZXR1cm4gdFswXSplWzBdK3RbMV0qZVsxXSt0WzJdKmVbMl19ZnVuY3Rpb24gVnYodCxlKXtyZXR1cm5bdFsxXSplWzJdLXRbMl0qZVsxXSx0WzJdKmVbMF0tdFswXSplWzJdLHRbMF0qZVsxXS10WzFdKmVbMF1dfWZ1bmN0aW9uIFV2KHQsZSl7dFswXSs9ZVswXSx0WzFdKz1lWzFdLHRbMl0rPWVbMl19ZnVuY3Rpb24ganYodCxlKXtyZXR1cm5bdFswXSplLHRbMV0qZSx0WzJdKmVdfWZ1bmN0aW9uIEd2KHQpe3ZhciBlPWZ2KHRbMF0qdFswXSt0WzFdKnRbMV0rdFsyXSp0WzJdKTt0WzBdLz1lLHRbMV0vPWUsdFsyXS89ZX12YXIgV3YscXYsWXYsWHYsJHYsS3YsWnYsSnYsUXYsdGIsZWIsbmIsaWIscmIsb2IsYWIsc2IsbGIsY2IsdWIsaGIsZGIscGIsZmIsbWIsZ2IsX2I9cXkoKSx5Yj17cG9pbnQ6dmIsbGluZVN0YXJ0OnhiLGxpbmVFbmQ6d2IscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7eWIucG9pbnQ9U2IseWIubGluZVN0YXJ0PU1iLHliLmxpbmVFbmQ9RWIsX2IucmVzZXQoKSxJdi5wb2x5Z29uU3RhcnQoKX0scG9seWdvbkVuZDpmdW5jdGlvbigpe0l2LnBvbHlnb25FbmQoKSx5Yi5wb2ludD12Yix5Yi5saW5lU3RhcnQ9eGIseWIubGluZUVuZD13YixQdjwwPyhXdj0tKFl2PTE4MCkscXY9LShYdj05MCkpOl9iPkt5P1h2PTkwOl9iPC0xZS02JiYocXY9LTkwKSx0YlswXT1Xdix0YlsxXT1Zdn0sc3BoZXJlOmZ1bmN0aW9uKCl7V3Y9LShZdj0xODApLHF2PS0oWHY9OTApfX07ZnVuY3Rpb24gdmIodCxlKXtRdi5wdXNoKHRiPVtXdj10LFl2PXRdKSxlPHF2JiYocXY9ZSksZT5YdiYmKFh2PWUpfWZ1bmN0aW9uIGJiKHQsZSl7dmFyIG49SHYoW3QqaXYsZSppdl0pO2lmKEp2KXt2YXIgaT1WdihKdixuKSxyPVZ2KFtpWzFdLC1pWzBdLDBdLGkpO0d2KHIpLHI9QnYocik7dmFyIG8sYT10LSR2LHM9YT4wPzE6LTEsbD1yWzBdKm52KnMsYz1ydihhKT4xODA7Y14ocyokdjxsJiZsPHMqdCk/KG89clsxXSpudik+WHYmJihYdj1vKTpjXihzKiR2PChsPShsKzM2MCklMzYwLTE4MCkmJmw8cyp0KT8obz0tclsxXSpudik8cXYmJihxdj1vKTooZTxxdiYmKHF2PWUpLGU+WHYmJihYdj1lKSksYz90PCR2P1RiKFd2LHQpPlRiKFd2LFl2KSYmKFl2PXQpOlRiKHQsWXYpPlRiKFd2LFl2KSYmKFd2PXQpOll2Pj1Xdj8odDxXdiYmKFd2PXQpLHQ+WXYmJihZdj10KSk6dD4kdj9UYihXdix0KT5UYihXdixZdikmJihZdj10KTpUYih0LFl2KT5UYihXdixZdikmJihXdj10KX1lbHNlIFF2LnB1c2godGI9W1d2PXQsWXY9dF0pO2U8cXYmJihxdj1lKSxlPlh2JiYoWHY9ZSksSnY9biwkdj10fWZ1bmN0aW9uIHhiKCl7eWIucG9pbnQ9YmJ9ZnVuY3Rpb24gd2IoKXt0YlswXT1Xdix0YlsxXT1Zdix5Yi5wb2ludD12YixKdj1udWxsfWZ1bmN0aW9uIFNiKHQsZSl7aWYoSnYpe3ZhciBuPXQtJHY7X2IuYWRkKHJ2KG4pPjE4MD9uKyhuPjA/MzYwOi0zNjApOm4pfWVsc2UgS3Y9dCxadj1lO0l2LnBvaW50KHQsZSksYmIodCxlKX1mdW5jdGlvbiBNYigpe0l2LmxpbmVTdGFydCgpfWZ1bmN0aW9uIEViKCl7U2IoS3YsWnYpLEl2LmxpbmVFbmQoKSxydihfYik+S3kmJihXdj0tKFl2PTE4MCkpLHRiWzBdPVd2LHRiWzFdPVl2LEp2PW51bGx9ZnVuY3Rpb24gVGIodCxlKXtyZXR1cm4oZS09dCk8MD9lKzM2MDplfWZ1bmN0aW9uIENiKHQsZSl7cmV0dXJuIHRbMF0tZVswXX1mdW5jdGlvbiBBYih0LGUpe3JldHVybiB0WzBdPD10WzFdP3RbMF08PWUmJmU8PXRbMV06ZTx0WzBdfHx0WzFdPGV9dmFyIGtiPXtzcGhlcmU6dnYscG9pbnQ6TGIsbGluZVN0YXJ0Ok5iLGxpbmVFbmQ6T2IscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7a2IubGluZVN0YXJ0PXpiLGtiLmxpbmVFbmQ9RGJ9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtrYi5saW5lU3RhcnQ9TmIsa2IubGluZUVuZD1PYn19O2Z1bmN0aW9uIExiKHQsZSl7dCo9aXY7dmFyIG49c3YoZSo9aXYpO1BiKG4qc3YodCksbipkdih0KSxkdihlKSl9ZnVuY3Rpb24gUGIodCxlLG4peysrZWIsaWIrPSh0LWliKS9lYixyYis9KGUtcmIpL2ViLG9iKz0obi1vYikvZWJ9ZnVuY3Rpb24gTmIoKXtrYi5wb2ludD1JYn1mdW5jdGlvbiBJYih0LGUpe3QqPWl2O3ZhciBuPXN2KGUqPWl2KTtmYj1uKnN2KHQpLG1iPW4qZHYodCksZ2I9ZHYoZSksa2IucG9pbnQ9UmIsUGIoZmIsbWIsZ2IpfWZ1bmN0aW9uIFJiKHQsZSl7dCo9aXY7dmFyIG49c3YoZSo9aXYpLGk9bipzdih0KSxyPW4qZHYodCksbz1kdihlKSxhPWF2KGZ2KChhPW1iKm8tZ2IqcikqYSsoYT1nYippLWZiKm8pKmErKGE9ZmIqci1tYippKSphKSxmYippK21iKnIrZ2Iqbyk7bmIrPWEsYWIrPWEqKGZiKyhmYj1pKSksc2IrPWEqKG1iKyhtYj1yKSksbGIrPWEqKGdiKyhnYj1vKSksUGIoZmIsbWIsZ2IpfWZ1bmN0aW9uIE9iKCl7a2IucG9pbnQ9TGJ9ZnVuY3Rpb24gemIoKXtrYi5wb2ludD1CYn1mdW5jdGlvbiBEYigpe0hiKGRiLHBiKSxrYi5wb2ludD1MYn1mdW5jdGlvbiBCYih0LGUpe2RiPXQscGI9ZSx0Kj1pdixlKj1pdixrYi5wb2ludD1IYjt2YXIgbj1zdihlKTtmYj1uKnN2KHQpLG1iPW4qZHYodCksZ2I9ZHYoZSksUGIoZmIsbWIsZ2IpfWZ1bmN0aW9uIEhiKHQsZSl7dCo9aXY7dmFyIG49c3YoZSo9aXYpLGk9bipzdih0KSxyPW4qZHYodCksbz1kdihlKSxhPW1iKm8tZ2IqcixzPWdiKmktZmIqbyxsPWZiKnItbWIqaSxjPWZ2KGEqYStzKnMrbCpsKSx1PV92KGMpLGg9YyYmLXUvYztjYis9aCphLHViKz1oKnMsaGIrPWgqbCxuYis9dSxhYis9dSooZmIrKGZiPWkpKSxzYis9dSoobWIrKG1iPXIpKSxsYis9dSooZ2IrKGdiPW8pKSxQYihmYixtYixnYil9ZnVuY3Rpb24gRmIodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fWZ1bmN0aW9uIFZiKHQsZSl7ZnVuY3Rpb24gbihuLGkpe3JldHVybiBuPXQobixpKSxlKG5bMF0sblsxXSl9cmV0dXJuIHQuaW52ZXJ0JiZlLmludmVydCYmKG4uaW52ZXJ0PWZ1bmN0aW9uKG4saSl7cmV0dXJuKG49ZS5pbnZlcnQobixpKSkmJnQuaW52ZXJ0KG5bMF0sblsxXSl9KSxufWZ1bmN0aW9uIFViKHQsZSl7cmV0dXJuW3J2KHQpPkp5P3QrTWF0aC5yb3VuZCgtdC9ldikqZXY6dCxlXX1mdW5jdGlvbiBqYih0LGUsbil7cmV0dXJuKHQlPWV2KT9lfHxuP1ZiKFdiKHQpLHFiKGUsbikpOldiKHQpOmV8fG4/cWIoZSxuKTpVYn1mdW5jdGlvbiBHYih0KXtyZXR1cm4gZnVuY3Rpb24oZSxuKXtyZXR1cm5bKGUrPXQpPkp5P2UtZXY6ZTwtSnk/ZStldjplLG5dfX1mdW5jdGlvbiBXYih0KXt2YXIgZT1HYih0KTtyZXR1cm4gZS5pbnZlcnQ9R2IoLXQpLGV9ZnVuY3Rpb24gcWIodCxlKXt2YXIgbj1zdih0KSxpPWR2KHQpLHI9c3YoZSksbz1kdihlKTtmdW5jdGlvbiBhKHQsZSl7dmFyIGE9c3YoZSkscz1zdih0KSphLGw9ZHYodCkqYSxjPWR2KGUpLHU9YypuK3MqaTtyZXR1cm5bYXYobCpyLXUqbyxzKm4tYyppKSxfdih1KnIrbCpvKV19cmV0dXJuIGEuaW52ZXJ0PWZ1bmN0aW9uKHQsZSl7dmFyIGE9c3YoZSkscz1zdih0KSphLGw9ZHYodCkqYSxjPWR2KGUpLHU9YypyLWwqbztyZXR1cm5bYXYobCpyK2MqbyxzKm4rdSppKSxfdih1Km4tcyppKV19LGF9ZnVuY3Rpb24gWWIodCl7ZnVuY3Rpb24gZShlKXtyZXR1cm4oZT10KGVbMF0qaXYsZVsxXSppdikpWzBdKj1udixlWzFdKj1udixlfXJldHVybiB0PWpiKHRbMF0qaXYsdFsxXSppdix0Lmxlbmd0aD4yP3RbMl0qaXY6MCksZS5pbnZlcnQ9ZnVuY3Rpb24oZSl7cmV0dXJuKGU9dC5pbnZlcnQoZVswXSppdixlWzFdKml2KSlbMF0qPW52LGVbMV0qPW52LGV9LGV9ZnVuY3Rpb24gWGIodCxlLG4saSxyLG8pe2lmKG4pe3ZhciBhPXN2KGUpLHM9ZHYoZSksbD1pKm47bnVsbD09cj8ocj1lK2kqZXYsbz1lLWwvMik6KHI9JGIoYSxyKSxvPSRiKGEsbyksKGk+MD9yPG86cj5vKSYmKHIrPWkqZXYpKTtmb3IodmFyIGMsdT1yO2k+MD91Pm86dTxvO3UtPWwpYz1CdihbYSwtcypzdih1KSwtcypkdih1KV0pLHQucG9pbnQoY1swXSxjWzFdKX19ZnVuY3Rpb24gJGIodCxlKXsoZT1IdihlKSlbMF0tPXQsR3YoZSk7dmFyIG49Z3YoLWVbMV0pO3JldHVybigoLWVbMl08MD8tbjpuKStldi1LeSklZXZ9ZnVuY3Rpb24gS2IoKXt2YXIgdCxlPVtdO3JldHVybntwb2ludDpmdW5jdGlvbihlLG4saSl7dC5wdXNoKFtlLG4saV0pfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXtlLnB1c2godD1bXSl9LGxpbmVFbmQ6dnYscmVqb2luOmZ1bmN0aW9uKCl7ZS5sZW5ndGg+MSYmZS5wdXNoKGUucG9wKCkuY29uY2F0KGUuc2hpZnQoKSkpfSxyZXN1bHQ6ZnVuY3Rpb24oKXt2YXIgbj1lO3JldHVybiBlPVtdLHQ9bnVsbCxufX19ZnVuY3Rpb24gWmIodCxlKXtyZXR1cm4gcnYodFswXS1lWzBdKTxLeSYmcnYodFsxXS1lWzFdKTxLeX1mdW5jdGlvbiBKYih0LGUsbixpKXt0aGlzLng9dCx0aGlzLno9ZSx0aGlzLm89bix0aGlzLmU9aSx0aGlzLnY9ITEsdGhpcy5uPXRoaXMucD1udWxsfWZ1bmN0aW9uIFFiKHQsZSxuLGkscil7dmFyIG8sYSxzPVtdLGw9W107aWYodC5mb3JFYWNoKChmdW5jdGlvbih0KXtpZighKChlPXQubGVuZ3RoLTEpPD0wKSl7dmFyIGUsbixpPXRbMF0sYT10W2VdO2lmKFpiKGksYSkpe2lmKCFpWzJdJiYhYVsyXSl7Zm9yKHIubGluZVN0YXJ0KCksbz0wO288ZTsrK28pci5wb2ludCgoaT10W29dKVswXSxpWzFdKTtyZXR1cm4gdm9pZCByLmxpbmVFbmQoKX1hWzBdKz0yZS02fXMucHVzaChuPW5ldyBKYihpLHQsbnVsbCwhMCkpLGwucHVzaChuLm89bmV3IEpiKGksbnVsbCxuLCExKSkscy5wdXNoKG49bmV3IEpiKGEsdCxudWxsLCExKSksbC5wdXNoKG4ubz1uZXcgSmIoYSxudWxsLG4sITApKX19KSkscy5sZW5ndGgpe2ZvcihsLnNvcnQoZSksdHgocyksdHgobCksbz0wLGE9bC5sZW5ndGg7bzxhOysrbylsW29dLmU9bj0hbjtmb3IodmFyIGMsdSxoPXNbMF07Oyl7Zm9yKHZhciBkPWgscD0hMDtkLnY7KWlmKChkPWQubik9PT1oKXJldHVybjtjPWQueixyLmxpbmVTdGFydCgpO2Rve2lmKGQudj1kLm8udj0hMCxkLmUpe2lmKHApZm9yKG89MCxhPWMubGVuZ3RoO288YTsrK28pci5wb2ludCgodT1jW29dKVswXSx1WzFdKTtlbHNlIGkoZC54LGQubi54LDEscik7ZD1kLm59ZWxzZXtpZihwKWZvcihvPShjPWQucC56KS5sZW5ndGgtMTtvPj0wOy0tbylyLnBvaW50KCh1PWNbb10pWzBdLHVbMV0pO2Vsc2UgaShkLngsZC5wLngsLTEscik7ZD1kLnB9Yz0oZD1kLm8pLnoscD0hcH13aGlsZSghZC52KTtyLmxpbmVFbmQoKX19fWZ1bmN0aW9uIHR4KHQpe2lmKGU9dC5sZW5ndGgpe2Zvcih2YXIgZSxuLGk9MCxyPXRbMF07KytpPGU7KXIubj1uPXRbaV0sbi5wPXIscj1uO3Iubj1uPXRbMF0sbi5wPXJ9fVViLmludmVydD1VYjt2YXIgZXg9cXkoKTtmdW5jdGlvbiBueCh0KXtyZXR1cm4gcnYodFswXSk8PUp5P3RbMF06cHYodFswXSkqKChydih0WzBdKStKeSklZXYtSnkpfWZ1bmN0aW9uIGl4KHQsZSl7dmFyIG49bngoZSksaT1lWzFdLHI9ZHYoaSksbz1bZHYobiksLXN2KG4pLDBdLGE9MCxzPTA7ZXgucmVzZXQoKSwxPT09cj9pPVF5K0t5Oi0xPT09ciYmKGk9LVF5LUt5KTtmb3IodmFyIGw9MCxjPXQubGVuZ3RoO2w8YzsrK2wpaWYoaD0odT10W2xdKS5sZW5ndGgpZm9yKHZhciB1LGgsZD11W2gtMV0scD1ueChkKSxmPWRbMV0vMit0dixtPWR2KGYpLGc9c3YoZiksXz0wO188aDsrK18scD12LG09eCxnPXcsZD15KXt2YXIgeT11W19dLHY9bngoeSksYj15WzFdLzIrdHYseD1kdihiKSx3PXN2KGIpLFM9di1wLE09Uz49MD8xOi0xLEU9TSpTLFQ9RT5KeSxDPW0qeDtpZihleC5hZGQoYXYoQypNKmR2KEUpLGcqdytDKnN2KEUpKSksYSs9VD9TK00qZXY6UyxUXnA+PW5edj49bil7dmFyIEE9VnYoSHYoZCksSHYoeSkpO0d2KEEpO3ZhciBrPVZ2KG8sQSk7R3Yoayk7dmFyIEw9KFReUz49MD8tMToxKSpfdihrWzJdKTsoaT5MfHxpPT09TCYmKEFbMF18fEFbMV0pKSYmKHMrPVReUz49MD8xOi0xKX19cmV0dXJuKGE8LTFlLTZ8fGE8S3kmJmV4PC0xZS02KV4xJnN9ZnVuY3Rpb24gcngodCxlLG4saSl7cmV0dXJuIGZ1bmN0aW9uKHIpe3ZhciBvLGEscyxsPWUociksYz1LYigpLHU9ZShjKSxoPSExLGQ9e3BvaW50OnAsbGluZVN0YXJ0Om0sbGluZUVuZDpnLHBvbHlnb25TdGFydDpmdW5jdGlvbigpe2QucG9pbnQ9XyxkLmxpbmVTdGFydD15LGQubGluZUVuZD12LGE9W10sbz1bXX0scG9seWdvbkVuZDpmdW5jdGlvbigpe2QucG9pbnQ9cCxkLmxpbmVTdGFydD1tLGQubGluZUVuZD1nLGE9YWMoYSk7dmFyIHQ9aXgobyxpKTthLmxlbmd0aD8oaHx8KHIucG9seWdvblN0YXJ0KCksaD0hMCksUWIoYSxheCx0LG4scikpOnQmJihofHwoci5wb2x5Z29uU3RhcnQoKSxoPSEwKSxyLmxpbmVTdGFydCgpLG4obnVsbCxudWxsLDEsciksci5saW5lRW5kKCkpLGgmJihyLnBvbHlnb25FbmQoKSxoPSExKSxhPW89bnVsbH0sc3BoZXJlOmZ1bmN0aW9uKCl7ci5wb2x5Z29uU3RhcnQoKSxyLmxpbmVTdGFydCgpLG4obnVsbCxudWxsLDEsciksci5saW5lRW5kKCksci5wb2x5Z29uRW5kKCl9fTtmdW5jdGlvbiBwKGUsbil7dChlLG4pJiZyLnBvaW50KGUsbil9ZnVuY3Rpb24gZih0LGUpe2wucG9pbnQodCxlKX1mdW5jdGlvbiBtKCl7ZC5wb2ludD1mLGwubGluZVN0YXJ0KCl9ZnVuY3Rpb24gZygpe2QucG9pbnQ9cCxsLmxpbmVFbmQoKX1mdW5jdGlvbiBfKHQsZSl7cy5wdXNoKFt0LGVdKSx1LnBvaW50KHQsZSl9ZnVuY3Rpb24geSgpe3UubGluZVN0YXJ0KCkscz1bXX1mdW5jdGlvbiB2KCl7XyhzWzBdWzBdLHNbMF1bMV0pLHUubGluZUVuZCgpO3ZhciB0LGUsbixpLGw9dS5jbGVhbigpLGQ9Yy5yZXN1bHQoKSxwPWQubGVuZ3RoO2lmKHMucG9wKCksby5wdXNoKHMpLHM9bnVsbCxwKWlmKDEmbCl7aWYoKGU9KG49ZFswXSkubGVuZ3RoLTEpPjApe2ZvcihofHwoci5wb2x5Z29uU3RhcnQoKSxoPSEwKSxyLmxpbmVTdGFydCgpLHQ9MDt0PGU7Kyt0KXIucG9pbnQoKGk9blt0XSlbMF0saVsxXSk7ci5saW5lRW5kKCl9fWVsc2UgcD4xJiYyJmwmJmQucHVzaChkLnBvcCgpLmNvbmNhdChkLnNoaWZ0KCkpKSxhLnB1c2goZC5maWx0ZXIob3gpKX1yZXR1cm4gZH19ZnVuY3Rpb24gb3godCl7cmV0dXJuIHQubGVuZ3RoPjF9ZnVuY3Rpb24gYXgodCxlKXtyZXR1cm4oKHQ9dC54KVswXTwwP3RbMV0tUXktS3k6UXktdFsxXSktKChlPWUueClbMF08MD9lWzFdLVF5LUt5OlF5LWVbMV0pfXZhciBzeD1yeCgoZnVuY3Rpb24oKXtyZXR1cm4hMH0pLChmdW5jdGlvbiBseCh0KXt2YXIgZSxuPU5hTixpPU5hTixyPU5hTjtyZXR1cm57bGluZVN0YXJ0OmZ1bmN0aW9uKCl7dC5saW5lU3RhcnQoKSxlPTF9LHBvaW50OmZ1bmN0aW9uKG8sYSl7dmFyIHM9bz4wP0p5Oi1KeSxsPXJ2KG8tbik7cnYobC1KeSk8S3k/KHQucG9pbnQobixpPShpK2EpLzI+MD9ReTotUXkpLHQucG9pbnQocixpKSx0LmxpbmVFbmQoKSx0LmxpbmVTdGFydCgpLHQucG9pbnQocyxpKSx0LnBvaW50KG8saSksZT0wKTpyIT09cyYmbD49SnkmJihydihuLXIpPEt5JiYobi09cipLeSkscnYoby1zKTxLeSYmKG8tPXMqS3kpLGk9KGZ1bmN0aW9uIGModCxlLG4saSl7dmFyIHIsbyxhPWR2KHQtbik7cmV0dXJuIHJ2KGEpPkt5P292KChkdihlKSoobz1zdihpKSkqZHYobiktZHYoaSkqKHI9c3YoZSkpKmR2KHQpKS8ocipvKmEpKTooZStpKS8yfSkobixpLG8sYSksdC5wb2ludChyLGkpLHQubGluZUVuZCgpLHQubGluZVN0YXJ0KCksdC5wb2ludChzLGkpLGU9MCksdC5wb2ludChuPW8saT1hKSxyPXN9LGxpbmVFbmQ6ZnVuY3Rpb24oKXt0LmxpbmVFbmQoKSxuPWk9TmFOfSxjbGVhbjpmdW5jdGlvbigpe3JldHVybiAyLWV9fX0pLChmdW5jdGlvbiBjeCh0LGUsbixpKXt2YXIgcjtpZihudWxsPT10KWkucG9pbnQoLUp5LHI9bipReSksaS5wb2ludCgwLHIpLGkucG9pbnQoSnksciksaS5wb2ludChKeSwwKSxpLnBvaW50KEp5LC1yKSxpLnBvaW50KDAsLXIpLGkucG9pbnQoLUp5LC1yKSxpLnBvaW50KC1KeSwwKSxpLnBvaW50KC1KeSxyKTtlbHNlIGlmKHJ2KHRbMF0tZVswXSk+S3kpe3ZhciBvPXRbMF08ZVswXT9KeTotSnk7aS5wb2ludCgtbyxyPW4qby8yKSxpLnBvaW50KDAsciksaS5wb2ludChvLHIpfWVsc2UgaS5wb2ludChlWzBdLGVbMV0pfSksWy1KeSwtUXldKTtmdW5jdGlvbiB1eCh0KXt2YXIgZT1zdih0KSxuPTYqaXYsaT1lPjAscj1ydihlKT5LeTtmdW5jdGlvbiBvKHQsbil7cmV0dXJuIHN2KHQpKnN2KG4pPmV9ZnVuY3Rpb24gYSh0LG4saSl7dmFyIHI9WzEsMCwwXSxvPVZ2KEh2KHQpLEh2KG4pKSxhPUZ2KG8sbykscz1vWzBdLGw9YS1zKnM7aWYoIWwpcmV0dXJuIWkmJnQ7dmFyIGM9ZSphL2wsdT0tZSpzL2wsaD1WdihyLG8pLGQ9anYocixjKTtVdihkLGp2KG8sdSkpO3ZhciBwPWgsZj1GdihkLHApLG09RnYocCxwKSxnPWYqZi1tKihGdihkLGQpLTEpO2lmKCEoZzwwKSl7dmFyIF89ZnYoZykseT1qdihwLCgtZi1fKS9tKTtpZihVdih5LGQpLHk9QnYoeSksIWkpcmV0dXJuIHk7dmFyIHYsYj10WzBdLHg9blswXSx3PXRbMV0sUz1uWzFdO3g8YiYmKHY9YixiPXgseD12KTt2YXIgTT14LWIsRT1ydihNLUp5KTxLeTtpZighRSYmUzx3JiYodj13LHc9UyxTPXYpLEV8fE08S3k/RT93K1M+MF55WzFdPChydih5WzBdLWIpPEt5P3c6Uyk6dzw9eVsxXSYmeVsxXTw9UzpNPkp5XihiPD15WzBdJiZ5WzBdPD14KSl7dmFyIFQ9anYocCwoLWYrXykvbSk7cmV0dXJuIFV2KFQsZCksW3ksQnYoVCldfX19ZnVuY3Rpb24gcyhlLG4pe3ZhciByPWk/dDpKeS10LG89MDtyZXR1cm4gZTwtcj9vfD0xOmU+ciYmKG98PTIpLG48LXI/b3w9NDpuPnImJihvfD04KSxvfXJldHVybiByeChvLChmdW5jdGlvbiBsKHQpe3ZhciBlLG4sbCxjLHU7cmV0dXJue2xpbmVTdGFydDpmdW5jdGlvbigpe2M9bD0hMSx1PTF9LHBvaW50OmZ1bmN0aW9uKGgsZCl7dmFyIHAsZj1baCxkXSxtPW8oaCxkKSxnPWk/bT8wOnMoaCxkKTptP3MoaCsoaDwwP0p5Oi1KeSksZCk6MDtpZighZSYmKGM9bD1tKSYmdC5saW5lU3RhcnQoKSxtIT09bCYmKCEocD1hKGUsZikpfHxaYihlLHApfHxaYihmLHApKSYmKGZbMl09MSksbSE9PWwpdT0wLG0/KHQubGluZVN0YXJ0KCkscD1hKGYsZSksdC5wb2ludChwWzBdLHBbMV0pKToocD1hKGUsZiksdC5wb2ludChwWzBdLHBbMV0sMiksdC5saW5lRW5kKCkpLGU9cDtlbHNlIGlmKHImJmUmJmlebSl7dmFyIF87ZyZufHwhKF89YShmLGUsITApKXx8KHU9MCxpPyh0LmxpbmVTdGFydCgpLHQucG9pbnQoX1swXVswXSxfWzBdWzFdKSx0LnBvaW50KF9bMV1bMF0sX1sxXVsxXSksdC5saW5lRW5kKCkpOih0LnBvaW50KF9bMV1bMF0sX1sxXVsxXSksdC5saW5lRW5kKCksdC5saW5lU3RhcnQoKSx0LnBvaW50KF9bMF1bMF0sX1swXVsxXSwzKSkpfSFtfHxlJiZaYihlLGYpfHx0LnBvaW50KGZbMF0sZlsxXSksZT1mLGw9bSxuPWd9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtsJiZ0LmxpbmVFbmQoKSxlPW51bGx9LGNsZWFuOmZ1bmN0aW9uKCl7cmV0dXJuIHV8KGMmJmwpPDwxfX19KSwoZnVuY3Rpb24gYyhlLGkscixvKXtYYihvLHQsbixyLGUsaSl9KSxpP1swLC10XTpbLUp5LHQtSnldKX12YXIgaHg9MWU5LGR4PS1oeDtmdW5jdGlvbiBweCh0LGUsbixpKXtmdW5jdGlvbiByKHIsbyl7cmV0dXJuIHQ8PXImJnI8PW4mJmU8PW8mJm88PWl9ZnVuY3Rpb24gbyhyLG8scyxjKXt2YXIgdT0wLGg9MDtpZihudWxsPT1yfHwodT1hKHIscykpIT09KGg9YShvLHMpKXx8bChyLG8pPDBecz4wKWRve2MucG9pbnQoMD09PXV8fDM9PT11P3Q6bix1PjE/aTplKX13aGlsZSgodT0odStzKzQpJTQpIT09aCk7ZWxzZSBjLnBvaW50KG9bMF0sb1sxXSl9ZnVuY3Rpb24gYShpLHIpe3JldHVybiBydihpWzBdLXQpPEt5P3I+MD8wOjM6cnYoaVswXS1uKTxLeT9yPjA/MjoxOnJ2KGlbMV0tZSk8S3k/cj4wPzE6MDpyPjA/MzoyfWZ1bmN0aW9uIHModCxlKXtyZXR1cm4gbCh0LngsZS54KX1mdW5jdGlvbiBsKHQsZSl7dmFyIG49YSh0LDEpLGk9YShlLDEpO3JldHVybiBuIT09aT9uLWk6MD09PW4/ZVsxXS10WzFdOjE9PT1uP3RbMF0tZVswXToyPT09bj90WzFdLWVbMV06ZVswXS10WzBdfXJldHVybiBmdW5jdGlvbihhKXt2YXIgbCxjLHUsaCxkLHAsZixtLGcsXyx5LHY9YSxiPUtiKCkseD17cG9pbnQ6VCxsaW5lU3RhcnQ6ZnVuY3Rpb24gdygpe3gucG9pbnQ9QyxjJiZjLnB1c2godT1bXSk7Xz0hMCxnPSExLGY9bT1OYU59LGxpbmVFbmQ6ZnVuY3Rpb24gUygpe2wmJihDKGgsZCkscCYmZyYmYi5yZWpvaW4oKSxsLnB1c2goYi5yZXN1bHQoKSkpO3gucG9pbnQ9VCxnJiZ2LmxpbmVFbmQoKX0scG9seWdvblN0YXJ0OmZ1bmN0aW9uIE0oKXt2PWIsbD1bXSxjPVtdLHk9ITB9LHBvbHlnb25FbmQ6ZnVuY3Rpb24gRSgpe3ZhciBlPShmdW5jdGlvbiBuKCl7Zm9yKHZhciBlPTAsbj0wLHI9Yy5sZW5ndGg7bjxyOysrbilmb3IodmFyIG8sYSxzPWNbbl0sbD0xLHU9cy5sZW5ndGgsaD1zWzBdLGQ9aFswXSxwPWhbMV07bDx1OysrbClvPWQsYT1wLGQ9KGg9c1tsXSlbMF0scD1oWzFdLGE8PWk/cD5pJiYoZC1vKSooaS1hKT4ocC1hKSoodC1vKSYmKytlOnA8PWkmJihkLW8pKihpLWEpPChwLWEpKih0LW8pJiYtLWU7cmV0dXJuIGV9KSgpLHI9eSYmZSxoPShsPWFjKGwpKS5sZW5ndGg7KHJ8fGgpJiYoYS5wb2x5Z29uU3RhcnQoKSxyJiYoYS5saW5lU3RhcnQoKSxvKG51bGwsbnVsbCwxLGEpLGEubGluZUVuZCgpKSxoJiZRYihsLHMsZSxvLGEpLGEucG9seWdvbkVuZCgpKTt2PWEsbD1jPXU9bnVsbH19O2Z1bmN0aW9uIFQodCxlKXtyKHQsZSkmJnYucG9pbnQodCxlKX1mdW5jdGlvbiBDKG8sYSl7dmFyIHM9cihvLGEpO2lmKGMmJnUucHVzaChbbyxhXSksXyloPW8sZD1hLHA9cyxfPSExLHMmJih2LmxpbmVTdGFydCgpLHYucG9pbnQobyxhKSk7ZWxzZSBpZihzJiZnKXYucG9pbnQobyxhKTtlbHNle3ZhciBsPVtmPU1hdGgubWF4KGR4LE1hdGgubWluKGh4LGYpKSxtPU1hdGgubWF4KGR4LE1hdGgubWluKGh4LG0pKV0sYj1bbz1NYXRoLm1heChkeCxNYXRoLm1pbihoeCxvKSksYT1NYXRoLm1heChkeCxNYXRoLm1pbihoeCxhKSldOyEoZnVuY3Rpb24geCh0LGUsbixpLHIsbyl7dmFyIGEscz10WzBdLGw9dFsxXSxjPTAsdT0xLGg9ZVswXS1zLGQ9ZVsxXS1sO2lmKGE9bi1zLGh8fCEoYT4wKSl7aWYoYS89aCxoPDApe2lmKGE8YylyZXR1cm47YTx1JiYodT1hKX1lbHNlIGlmKGg+MCl7aWYoYT51KXJldHVybjthPmMmJihjPWEpfWlmKGE9ci1zLGh8fCEoYTwwKSl7aWYoYS89aCxoPDApe2lmKGE+dSlyZXR1cm47YT5jJiYoYz1hKX1lbHNlIGlmKGg+MCl7aWYoYTxjKXJldHVybjthPHUmJih1PWEpfWlmKGE9aS1sLGR8fCEoYT4wKSl7aWYoYS89ZCxkPDApe2lmKGE8YylyZXR1cm47YTx1JiYodT1hKX1lbHNlIGlmKGQ+MCl7aWYoYT51KXJldHVybjthPmMmJihjPWEpfWlmKGE9by1sLGR8fCEoYTwwKSl7aWYoYS89ZCxkPDApe2lmKGE+dSlyZXR1cm47YT5jJiYoYz1hKX1lbHNlIGlmKGQ+MCl7aWYoYTxjKXJldHVybjthPHUmJih1PWEpfXJldHVybiBjPjAmJih0WzBdPXMrYypoLHRbMV09bCtjKmQpLHU8MSYmKGVbMF09cyt1KmgsZVsxXT1sK3UqZCksITB9fX19fSkobCxiLHQsZSxuLGkpP3MmJih2LmxpbmVTdGFydCgpLHYucG9pbnQobyxhKSx5PSExKTooZ3x8KHYubGluZVN0YXJ0KCksdi5wb2ludChsWzBdLGxbMV0pKSx2LnBvaW50KGJbMF0sYlsxXSksc3x8di5saW5lRW5kKCkseT0hMSl9Zj1vLG09YSxnPXN9cmV0dXJuIHh9fXZhciBmeCxteCxneCxfeD1xeSgpLHl4PXtzcGhlcmU6dnYscG9pbnQ6dnYsbGluZVN0YXJ0OmZ1bmN0aW9uIHZ4KCl7eXgucG9pbnQ9eHgseXgubGluZUVuZD1ieH0sbGluZUVuZDp2dixwb2x5Z29uU3RhcnQ6dnYscG9seWdvbkVuZDp2dn07ZnVuY3Rpb24gYngoKXt5eC5wb2ludD15eC5saW5lRW5kPXZ2fWZ1bmN0aW9uIHh4KHQsZSl7Zng9dCo9aXYsbXg9ZHYoZSo9aXYpLGd4PXN2KGUpLHl4LnBvaW50PXd4fWZ1bmN0aW9uIHd4KHQsZSl7dCo9aXY7dmFyIG49ZHYoZSo9aXYpLGk9c3YoZSkscj1ydih0LWZ4KSxvPXN2KHIpLGE9aSpkdihyKSxzPWd4Km4tbXgqaSpvLGw9bXgqbitneCppKm87X3guYWRkKGF2KGZ2KGEqYStzKnMpLGwpKSxmeD10LG14PW4sZ3g9aX1mdW5jdGlvbiBTeCh0KXtyZXR1cm4gX3gucmVzZXQoKSxFdih0LHl4KSwrX3h9dmFyIE14PVtudWxsLG51bGxdLEV4PXt0eXBlOiJMaW5lU3RyaW5nIixjb29yZGluYXRlczpNeH07ZnVuY3Rpb24gVHgodCxlKXtyZXR1cm4gTXhbMF09dCxNeFsxXT1lLFN4KEV4KX12YXIgQ3g9e0ZlYXR1cmU6ZnVuY3Rpb24odCxlKXtyZXR1cm4ga3godC5nZW9tZXRyeSxlKX0sRmVhdHVyZUNvbGxlY3Rpb246ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dC5mZWF0dXJlcyxpPS0xLHI9bi5sZW5ndGg7KytpPHI7KWlmKGt4KG5baV0uZ2VvbWV0cnksZSkpcmV0dXJuITA7cmV0dXJuITF9fSxBeD17U3BoZXJlOmZ1bmN0aW9uKCl7cmV0dXJuITB9LFBvaW50OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIEx4KHQuY29vcmRpbmF0ZXMsZSl9LE11bHRpUG9pbnQ6ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dC5jb29yZGluYXRlcyxpPS0xLHI9bi5sZW5ndGg7KytpPHI7KWlmKEx4KG5baV0sZSkpcmV0dXJuITA7cmV0dXJuITF9LExpbmVTdHJpbmc6ZnVuY3Rpb24odCxlKXtyZXR1cm4gUHgodC5jb29yZGluYXRlcyxlKX0sTXVsdGlMaW5lU3RyaW5nOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPXQuY29vcmRpbmF0ZXMsaT0tMSxyPW4ubGVuZ3RoOysraTxyOylpZihQeChuW2ldLGUpKXJldHVybiEwO3JldHVybiExfSxQb2x5Z29uOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIE54KHQuY29vcmRpbmF0ZXMsZSl9LE11bHRpUG9seWdvbjpmdW5jdGlvbih0LGUpe2Zvcih2YXIgbj10LmNvb3JkaW5hdGVzLGk9LTEscj1uLmxlbmd0aDsrK2k8cjspaWYoTngobltpXSxlKSlyZXR1cm4hMDtyZXR1cm4hMX0sR2VvbWV0cnlDb2xsZWN0aW9uOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPXQuZ2VvbWV0cmllcyxpPS0xLHI9bi5sZW5ndGg7KytpPHI7KWlmKGt4KG5baV0sZSkpcmV0dXJuITA7cmV0dXJuITF9fTtmdW5jdGlvbiBreCh0LGUpe3JldHVybiEoIXR8fCFBeC5oYXNPd25Qcm9wZXJ0eSh0LnR5cGUpKSYmQXhbdC50eXBlXSh0LGUpfWZ1bmN0aW9uIEx4KHQsZSl7cmV0dXJuIDA9PT1UeCh0LGUpfWZ1bmN0aW9uIFB4KHQsZSl7Zm9yKHZhciBuLGkscixvPTAsYT10Lmxlbmd0aDtvPGE7bysrKXtpZigwPT09KGk9VHgodFtvXSxlKSkpcmV0dXJuITA7aWYobz4wJiYocj1UeCh0W29dLHRbby0xXSkpPjAmJm48PXImJmk8PXImJihuK2ktcikqKDEtTWF0aC5wb3coKG4taSkvciwyKSk8WnkqcilyZXR1cm4hMDtuPWl9cmV0dXJuITF9ZnVuY3Rpb24gTngodCxlKXtyZXR1cm4hIWl4KHQubWFwKEl4KSxSeChlKSl9ZnVuY3Rpb24gSXgodCl7cmV0dXJuKHQ9dC5tYXAoUngpKS5wb3AoKSx0fWZ1bmN0aW9uIFJ4KHQpe3JldHVyblt0WzBdKml2LHRbMV0qaXZdfWZ1bmN0aW9uIE94KHQsZSxuKXt2YXIgaT1LbCh0LGUtS3ksbikuY29uY2F0KGUpO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gaS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVyblt0LGVdfSkpfX1mdW5jdGlvbiB6eCh0LGUsbil7dmFyIGk9S2wodCxlLUt5LG4pLmNvbmNhdChlKTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGkubWFwKChmdW5jdGlvbihlKXtyZXR1cm5bZSx0XX0pKX19ZnVuY3Rpb24gRHgoKXt2YXIgdCxlLG4saSxyLG8sYSxzLGwsYyx1LGgsZD0xMCxwPWQsZj05MCxtPTM2MCxnPTIuNTtmdW5jdGlvbiBfKCl7cmV0dXJue3R5cGU6Ik11bHRpTGluZVN0cmluZyIsY29vcmRpbmF0ZXM6eSgpfX1mdW5jdGlvbiB5KCl7cmV0dXJuIEtsKGx2KGkvZikqZixuLGYpLm1hcCh1KS5jb25jYXQoS2wobHYocy9tKSptLGEsbSkubWFwKGgpKS5jb25jYXQoS2wobHYoZS9kKSpkLHQsZCkuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gcnYodCVmKT5LeX0pKS5tYXAobCkpLmNvbmNhdChLbChsdihvL3ApKnAscixwKS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBydih0JW0pPkt5fSkpLm1hcChjKSl9cmV0dXJuIF8ubGluZXM9ZnVuY3Rpb24oKXtyZXR1cm4geSgpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJue3R5cGU6IkxpbmVTdHJpbmciLGNvb3JkaW5hdGVzOnR9fSkpfSxfLm91dGxpbmU9ZnVuY3Rpb24oKXtyZXR1cm57dHlwZToiUG9seWdvbiIsY29vcmRpbmF0ZXM6W3UoaSkuY29uY2F0KGgoYSkuc2xpY2UoMSksdShuKS5yZXZlcnNlKCkuc2xpY2UoMSksaChzKS5yZXZlcnNlKCkuc2xpY2UoMSkpXX19LF8uZXh0ZW50PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP18uZXh0ZW50TWFqb3IodCkuZXh0ZW50TWlub3IodCk6Xy5leHRlbnRNaW5vcigpfSxfLmV4dGVudE1ham9yPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPSt0WzBdWzFdLGE9K3RbMV1bMV0sKGk9K3RbMF1bMF0pPihuPSt0WzFdWzBdKSYmKHQ9aSxpPW4sbj10KSxzPmEmJih0PXMscz1hLGE9dCksXy5wcmVjaXNpb24oZykpOltbaSxzXSxbbixhXV19LF8uZXh0ZW50TWlub3I9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89K25bMF1bMV0scj0rblsxXVsxXSwoZT0rblswXVswXSk+KHQ9K25bMV1bMF0pJiYobj1lLGU9dCx0PW4pLG8+ciYmKG49byxvPXIscj1uKSxfLnByZWNpc2lvbihnKSk6W1tlLG9dLFt0LHJdXX0sXy5zdGVwPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP18uc3RlcE1ham9yKHQpLnN0ZXBNaW5vcih0KTpfLnN0ZXBNaW5vcigpfSxfLnN0ZXBNYWpvcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZj0rdFswXSxtPSt0WzFdLF8pOltmLG1dfSxfLnN0ZXBNaW5vcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZD0rdFswXSxwPSt0WzFdLF8pOltkLHBdfSxfLnByZWNpc2lvbj1mdW5jdGlvbihkKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZz0rZCxsPU94KG8sciw5MCksYz16eChlLHQsZyksdT1PeChzLGEsOTApLGg9engoaSxuLGcpLF8pOmd9LF8uZXh0ZW50TWFqb3IoW1stMTgwLC04OS45OTk5OTldLFsxODAsODkuOTk5OTk5XV0pLmV4dGVudE1pbm9yKFtbLTE4MCwtODAuMDAwMDAxXSxbMTgwLDgwLjAwMDAwMV1dKX1mdW5jdGlvbiBCeCh0KXtyZXR1cm4gdH12YXIgSHgsRngsVngsVXgsang9cXkoKSxHeD1xeSgpLFd4PXtwb2ludDp2dixsaW5lU3RhcnQ6dnYsbGluZUVuZDp2dixwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXtXeC5saW5lU3RhcnQ9cXgsV3gubGluZUVuZD0keH0scG9seWdvbkVuZDpmdW5jdGlvbigpe1d4LmxpbmVTdGFydD1XeC5saW5lRW5kPVd4LnBvaW50PXZ2LGp4LmFkZChydihHeCkpLEd4LnJlc2V0KCl9LHJlc3VsdDpmdW5jdGlvbigpe3ZhciB0PWp4LzI7cmV0dXJuIGp4LnJlc2V0KCksdH19O2Z1bmN0aW9uIHF4KCl7V3gucG9pbnQ9WXh9ZnVuY3Rpb24gWXgodCxlKXtXeC5wb2ludD1YeCxIeD1WeD10LEZ4PVV4PWV9ZnVuY3Rpb24gWHgodCxlKXtHeC5hZGQoVXgqdC1WeCplKSxWeD10LFV4PWV9ZnVuY3Rpb24gJHgoKXtYeChIeCxGeCl9dmFyIEt4PVd4LFp4PTEvMCxKeD1aeCxReD0tWngsdHc9UXg7dmFyIGV3LG53LGl3LHJ3LG93PXtwb2ludDpmdW5jdGlvbiBhdyh0LGUpe3Q8WngmJihaeD10KTt0PlF4JiYoUXg9dCk7ZTxKeCYmKEp4PWUpO2U+dHcmJih0dz1lKX0sbGluZVN0YXJ0OnZ2LGxpbmVFbmQ6dnYscG9seWdvblN0YXJ0OnZ2LHBvbHlnb25FbmQ6dnYscmVzdWx0OmZ1bmN0aW9uKCl7dmFyIHQ9W1taeCxKeF0sW1F4LHR3XV07cmV0dXJuIFF4PXR3PS0oSng9Wng9MS8wKSx0fX0sc3c9MCxsdz0wLGN3PTAsdXc9MCxodz0wLGR3PTAscHc9MCxmdz0wLG13PTAsZ3c9e3BvaW50Ol93LGxpbmVTdGFydDp5dyxsaW5lRW5kOnh3LHBvbHlnb25TdGFydDpmdW5jdGlvbigpe2d3LmxpbmVTdGFydD13dyxndy5saW5lRW5kPVN3fSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7Z3cucG9pbnQ9X3csZ3cubGluZVN0YXJ0PXl3LGd3LmxpbmVFbmQ9eHd9LHJlc3VsdDpmdW5jdGlvbigpe3ZhciB0PW13P1twdy9tdyxmdy9td106ZHc/W3V3L2R3LGh3L2R3XTpjdz9bc3cvY3csbHcvY3ddOltOYU4sTmFOXTtyZXR1cm4gc3c9bHc9Y3c9dXc9aHc9ZHc9cHc9Znc9bXc9MCx0fX07ZnVuY3Rpb24gX3codCxlKXtzdys9dCxsdys9ZSwrK2N3fWZ1bmN0aW9uIHl3KCl7Z3cucG9pbnQ9dnd9ZnVuY3Rpb24gdncodCxlKXtndy5wb2ludD1idyxfdyhpdz10LHJ3PWUpfWZ1bmN0aW9uIGJ3KHQsZSl7dmFyIG49dC1pdyxpPWUtcncscj1mdihuKm4raSppKTt1dys9ciooaXcrdCkvMixodys9cioocncrZSkvMixkdys9cixfdyhpdz10LHJ3PWUpfWZ1bmN0aW9uIHh3KCl7Z3cucG9pbnQ9X3d9ZnVuY3Rpb24gd3coKXtndy5wb2ludD1Nd31mdW5jdGlvbiBTdygpe0V3KGV3LG53KX1mdW5jdGlvbiBNdyh0LGUpe2d3LnBvaW50PUV3LF93KGV3PWl3PXQsbnc9cnc9ZSl9ZnVuY3Rpb24gRXcodCxlKXt2YXIgbj10LWl3LGk9ZS1ydyxyPWZ2KG4qbitpKmkpO3V3Kz1yKihpdyt0KS8yLGh3Kz1yKihydytlKS8yLGR3Kz1yLHB3Kz0ocj1ydyp0LWl3KmUpKihpdyt0KSxmdys9cioocncrZSksbXcrPTMqcixfdyhpdz10LHJ3PWUpfXZhciBUdz1ndztmdW5jdGlvbiBDdyh0KXt0aGlzLl9jb250ZXh0PXR9Q3cucHJvdG90eXBlPXtfcmFkaXVzOjQuNSxwb2ludFJhZGl1czpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcmFkaXVzPXQsdGhpc30scG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXswPT09dGhpcy5fbGluZSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9wb2ludD1OYU59LHBvaW50OmZ1bmN0aW9uKHQsZSl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fY29udGV4dC5tb3ZlVG8odCxlKSx0aGlzLl9wb2ludD0xO2JyZWFrO2Nhc2UgMTp0aGlzLl9jb250ZXh0LmxpbmVUbyh0LGUpO2JyZWFrO2RlZmF1bHQ6dGhpcy5fY29udGV4dC5tb3ZlVG8odCt0aGlzLl9yYWRpdXMsZSksdGhpcy5fY29udGV4dC5hcmModCxlLHRoaXMuX3JhZGl1cywwLGV2KX19LHJlc3VsdDp2dn07dmFyIEF3LGt3LEx3LFB3LE53LEl3PXF5KCksUnc9e3BvaW50OnZ2LGxpbmVTdGFydDpmdW5jdGlvbigpe1J3LnBvaW50PU93fSxsaW5lRW5kOmZ1bmN0aW9uKCl7QXcmJnp3KGt3LEx3KSxSdy5wb2ludD12dn0scG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7QXc9ITB9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtBdz1udWxsfSxyZXN1bHQ6ZnVuY3Rpb24oKXt2YXIgdD0rSXc7cmV0dXJuIEl3LnJlc2V0KCksdH19O2Z1bmN0aW9uIE93KHQsZSl7UncucG9pbnQ9encsa3c9UHc9dCxMdz1Odz1lfWZ1bmN0aW9uIHp3KHQsZSl7SXcuYWRkKGZ2KChQdy09dCkqUHcrKE53LT1lKSpOdykpLFB3PXQsTnc9ZX12YXIgRHc9Unc7ZnVuY3Rpb24gQncoKXt0aGlzLl9zdHJpbmc9W119ZnVuY3Rpb24gSHcodCl7cmV0dXJuIm0wLCIrdCsiYSIrdCsiLCIrdCsiIDAgMSwxIDAsIistMip0KyJhIit0KyIsIit0KyIgMCAxLDEgMCwiKzIqdCsieiJ9ZnVuY3Rpb24gRncodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBuPW5ldyBWdztmb3IodmFyIGkgaW4gdCluW2ldPXRbaV07cmV0dXJuIG4uc3RyZWFtPWUsbn19ZnVuY3Rpb24gVncoKXt9ZnVuY3Rpb24gVXcodCxlLG4pe3ZhciBpPXQuY2xpcEV4dGVudCYmdC5jbGlwRXh0ZW50KCk7cmV0dXJuIHQuc2NhbGUoMTUwKS50cmFuc2xhdGUoWzAsMF0pLG51bGwhPWkmJnQuY2xpcEV4dGVudChudWxsKSxFdihuLHQuc3RyZWFtKG93KSksZShvdy5yZXN1bHQoKSksbnVsbCE9aSYmdC5jbGlwRXh0ZW50KGkpLHR9ZnVuY3Rpb24gancodCxlLG4pe3JldHVybiBVdyh0LChmdW5jdGlvbihuKXt2YXIgaT1lWzFdWzBdLWVbMF1bMF0scj1lWzFdWzFdLWVbMF1bMV0sbz1NYXRoLm1pbihpLyhuWzFdWzBdLW5bMF1bMF0pLHIvKG5bMV1bMV0tblswXVsxXSkpLGE9K2VbMF1bMF0rKGktbyooblsxXVswXStuWzBdWzBdKSkvMixzPStlWzBdWzFdKyhyLW8qKG5bMV1bMV0rblswXVsxXSkpLzI7dC5zY2FsZSgxNTAqbykudHJhbnNsYXRlKFthLHNdKX0pLG4pfWZ1bmN0aW9uIEd3KHQsZSxuKXtyZXR1cm4gancodCxbWzAsMF0sZV0sbil9ZnVuY3Rpb24gV3codCxlLG4pe3JldHVybiBVdyh0LChmdW5jdGlvbihuKXt2YXIgaT0rZSxyPWkvKG5bMV1bMF0tblswXVswXSksbz0oaS1yKihuWzFdWzBdK25bMF1bMF0pKS8yLGE9LXIqblswXVsxXTt0LnNjYWxlKDE1MCpyKS50cmFuc2xhdGUoW28sYV0pfSksbil9ZnVuY3Rpb24gcXcodCxlLG4pe3JldHVybiBVdyh0LChmdW5jdGlvbihuKXt2YXIgaT0rZSxyPWkvKG5bMV1bMV0tblswXVsxXSksbz0tcipuWzBdWzBdLGE9KGktciooblsxXVsxXStuWzBdWzFdKSkvMjt0LnNjYWxlKDE1MCpyKS50cmFuc2xhdGUoW28sYV0pfSksbil9QncucHJvdG90eXBlPXtfcmFkaXVzOjQuNSxfY2lyY2xlOkh3KDQuNSkscG9pbnRSYWRpdXM6ZnVuY3Rpb24odCl7cmV0dXJuKHQ9K3QpIT09dGhpcy5fcmFkaXVzJiYodGhpcy5fcmFkaXVzPXQsdGhpcy5fY2lyY2xlPW51bGwpLHRoaXN9LHBvbHlnb25TdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0scG9seWdvbkVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7MD09PXRoaXMuX2xpbmUmJnRoaXMuX3N0cmluZy5wdXNoKCJaIiksdGhpcy5fcG9pbnQ9TmFOfSxwb2ludDpmdW5jdGlvbih0LGUpe3N3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3N0cmluZy5wdXNoKCJNIix0LCIsIixlKSx0aGlzLl9wb2ludD0xO2JyZWFrO2Nhc2UgMTp0aGlzLl9zdHJpbmcucHVzaCgiTCIsdCwiLCIsZSk7YnJlYWs7ZGVmYXVsdDpudWxsPT10aGlzLl9jaXJjbGUmJih0aGlzLl9jaXJjbGU9SHcodGhpcy5fcmFkaXVzKSksdGhpcy5fc3RyaW5nLnB1c2goIk0iLHQsIiwiLGUsdGhpcy5fY2lyY2xlKX19LHJlc3VsdDpmdW5jdGlvbigpe2lmKHRoaXMuX3N0cmluZy5sZW5ndGgpe3ZhciB0PXRoaXMuX3N0cmluZy5qb2luKCIiKTtyZXR1cm4gdGhpcy5fc3RyaW5nPVtdLHR9cmV0dXJuIG51bGx9fSxWdy5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOlZ3LHBvaW50OmZ1bmN0aW9uKHQsZSl7dGhpcy5zdHJlYW0ucG9pbnQodCxlKX0sc3BoZXJlOmZ1bmN0aW9uKCl7dGhpcy5zdHJlYW0uc3BoZXJlKCl9LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuc3RyZWFtLmxpbmVTdGFydCgpfSxsaW5lRW5kOmZ1bmN0aW9uKCl7dGhpcy5zdHJlYW0ubGluZUVuZCgpfSxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLnN0cmVhbS5wb2x5Z29uU3RhcnQoKX0scG9seWdvbkVuZDpmdW5jdGlvbigpe3RoaXMuc3RyZWFtLnBvbHlnb25FbmQoKX19O3ZhciBZdz1zdigzMCppdik7ZnVuY3Rpb24gWHcodCxlKXtyZXR1cm4rZT8oZnVuY3Rpb24gbih0LGUpe2Z1bmN0aW9uIG4oaSxyLG8sYSxzLGwsYyx1LGgsZCxwLGYsbSxnKXt2YXIgXz1jLWkseT11LXIsdj1fKl8reSp5O2lmKHY+NCplJiZtLS0pe3ZhciBiPWErZCx4PXMrcCx3PWwrZixTPWZ2KGIqYit4Kngrdyp3KSxNPV92KHcvPVMpLEU9cnYocnYodyktMSk8S3l8fHJ2KG8taCk8S3k/KG8raCkvMjphdih4LGIpLFQ9dChFLE0pLEM9VFswXSxBPVRbMV0saz1DLWksTD1BLXIsUD15KmstXypMOyhQKlAvdj5lfHxydigoXyprK3kqTCkvdi0uNSk+LjN8fGEqZCtzKnArbCpmPFl3KSYmKG4oaSxyLG8sYSxzLGwsQyxBLEUsYi89Uyx4Lz1TLHcsbSxnKSxnLnBvaW50KEMsQSksbihDLEEsRSxiLHgsdyxjLHUsaCxkLHAsZixtLGcpKX19cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBpLHIsbyxhLHMsbCxjLHUsaCxkLHAsZixtPXtwb2ludDpnLGxpbmVTdGFydDpfLGxpbmVFbmQ6dixwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXtlLnBvbHlnb25TdGFydCgpLG0ubGluZVN0YXJ0PWJ9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtlLnBvbHlnb25FbmQoKSxtLmxpbmVTdGFydD1ffX07ZnVuY3Rpb24gZyhuLGkpe249dChuLGkpLGUucG9pbnQoblswXSxuWzFdKX1mdW5jdGlvbiBfKCl7dT1OYU4sbS5wb2ludD15LGUubGluZVN0YXJ0KCl9ZnVuY3Rpb24geShpLHIpe3ZhciBvPUh2KFtpLHJdKSxhPXQoaSxyKTtuKHUsaCxjLGQscCxmLHU9YVswXSxoPWFbMV0sYz1pLGQ9b1swXSxwPW9bMV0sZj1vWzJdLDE2LGUpLGUucG9pbnQodSxoKX1mdW5jdGlvbiB2KCl7bS5wb2ludD1nLGUubGluZUVuZCgpfWZ1bmN0aW9uIGIoKXtfKCksbS5wb2ludD14LG0ubGluZUVuZD13fWZ1bmN0aW9uIHgodCxlKXt5KGk9dCxlKSxyPXUsbz1oLGE9ZCxzPXAsbD1mLG0ucG9pbnQ9eX1mdW5jdGlvbiB3KCl7bih1LGgsYyxkLHAsZixyLG8saSxhLHMsbCwxNixlKSxtLmxpbmVFbmQ9dix2KCl9cmV0dXJuIG19fSkodCxlKTooZnVuY3Rpb24gaSh0KXtyZXR1cm4gRncoe3BvaW50OmZ1bmN0aW9uKGUsbil7ZT10KGUsbiksdGhpcy5zdHJlYW0ucG9pbnQoZVswXSxlWzFdKX19KX0pKHQpfXZhciAkdz1Gdyh7cG9pbnQ6ZnVuY3Rpb24odCxlKXt0aGlzLnN0cmVhbS5wb2ludCh0Kml2LGUqaXYpfX0pO2Z1bmN0aW9uIEt3KHQsZSxuLGkscil7ZnVuY3Rpb24gbyhvLGEpe3JldHVybltlK3QqKG8qPWkpLG4tdCooYSo9cildfXJldHVybiBvLmludmVydD1mdW5jdGlvbihvLGEpe3JldHVyblsoby1lKS90KmksKG4tYSkvdCpyXX0sb31mdW5jdGlvbiBadyh0LGUsbixpLHIsbyl7dmFyIGE9c3Yobykscz1kdihvKSxsPWEqdCxjPXMqdCx1PWEvdCxoPXMvdCxkPShzKm4tYSplKS90LHA9KHMqZSthKm4pL3Q7ZnVuY3Rpb24gZih0LG8pe3JldHVybltsKih0Kj1pKS1jKihvKj1yKStlLG4tYyp0LWwqb119cmV0dXJuIGYuaW52ZXJ0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuW2kqKHUqdC1oKmUrZCkscioocC1oKnQtdSplKV19LGZ9ZnVuY3Rpb24gSncodCl7cmV0dXJuIFF3KChmdW5jdGlvbigpe3JldHVybiB0fSkpKCl9ZnVuY3Rpb24gUXcodCl7dmFyIGUsbixpLHIsbyxhLHMsbCxjLHUsaD0xNTAsZD00ODAscD0yNTAsZj0wLG09MCxnPTAsXz0wLHk9MCx2PTAsYj0xLHg9MSx3PW51bGwsUz1zeCxNPW51bGwsRT1CeCxUPS41O2Z1bmN0aW9uIEModCl7cmV0dXJuIGwodFswXSppdix0WzFdKml2KX1mdW5jdGlvbiBBKHQpe3JldHVybih0PWwuaW52ZXJ0KHRbMF0sdFsxXSkpJiZbdFswXSpudix0WzFdKm52XX1mdW5jdGlvbiBrKCl7dmFyIHQ9WncoaCwwLDAsYix4LHYpLmFwcGx5KG51bGwsZShmLG0pKSxpPSh2P1p3Okt3KShoLGQtdFswXSxwLXRbMV0sYix4LHYpO3JldHVybiBuPWpiKGcsXyx5KSxzPVZiKGUsaSksbD1WYihuLHMpLGE9WHcocyxUKSxMKCl9ZnVuY3Rpb24gTCgpe3JldHVybiBjPXU9bnVsbCxDfXJldHVybiBDLnN0cmVhbT1mdW5jdGlvbih0KXtyZXR1cm4gYyYmdT09PXQ/YzpjPSR3KChmdW5jdGlvbiBlKHQpe3JldHVybiBGdyh7cG9pbnQ6ZnVuY3Rpb24oZSxuKXt2YXIgaT10KGUsbik7cmV0dXJuIHRoaXMuc3RyZWFtLnBvaW50KGlbMF0saVsxXSl9fSl9KShuKShTKGEoRSh1PXQpKSkpKX0sQy5wcmVjbGlwPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhTPXQsdz12b2lkIDAsTCgpKTpTfSxDLnBvc3RjbGlwPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhFPXQsTT1pPXI9bz1udWxsLEwoKSk6RX0sQy5jbGlwQW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KFM9K3Q/dXgodz10Kml2KToodz1udWxsLHN4KSxMKCkpOncqbnZ9LEMuY2xpcEV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oRT1udWxsPT10PyhNPWk9cj1vPW51bGwsQngpOnB4KE09K3RbMF1bMF0saT0rdFswXVsxXSxyPSt0WzFdWzBdLG89K3RbMV1bMV0pLEwoKSk6bnVsbD09TT9udWxsOltbTSxpXSxbcixvXV19LEMuc2NhbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGg9K3QsaygpKTpofSxDLnRyYW5zbGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZD0rdFswXSxwPSt0WzFdLGsoKSk6W2QscF19LEMuY2VudGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhmPXRbMF0lMzYwKml2LG09dFsxXSUzNjAqaXYsaygpKTpbZipudixtKm52XX0sQy5yb3RhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGc9dFswXSUzNjAqaXYsXz10WzFdJTM2MCppdix5PXQubGVuZ3RoPjI/dFsyXSUzNjAqaXY6MCxrKCkpOltnKm52LF8qbnYseSpudl19LEMuYW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHY9dCUzNjAqaXYsaygpKTp2Km52fSxDLnJlZmxlY3RYPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhiPXQ/LTE6MSxrKCkpOmI8MH0sQy5yZWZsZWN0WT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oeD10Py0xOjEsaygpKTp4PDB9LEMucHJlY2lzaW9uPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPVh3KHMsVD10KnQpLEwoKSk6ZnYoVCl9LEMuZml0RXh0ZW50PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGp3KEMsdCxlKX0sQy5maXRTaXplPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIEd3KEMsdCxlKX0sQy5maXRXaWR0aD1mdW5jdGlvbih0LGUpe3JldHVybiBXdyhDLHQsZSl9LEMuZml0SGVpZ2h0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHF3KEMsdCxlKX0sZnVuY3Rpb24oKXtyZXR1cm4gZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKSxDLmludmVydD1lLmludmVydCYmQSxrKCl9fWZ1bmN0aW9uIHRTKHQpe3ZhciBlPTAsbj1KeS8zLGk9UXcodCkscj1pKGUsbik7cmV0dXJuIHIucGFyYWxsZWxzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP2koZT10WzBdKml2LG49dFsxXSppdik6W2UqbnYsbipudl19LHJ9ZnVuY3Rpb24gZVModCxlKXt2YXIgbj1kdih0KSxpPShuK2R2KGUpKS8yO2lmKHJ2KGkpPEt5KXJldHVybihmdW5jdGlvbiByKHQpe3ZhciBlPXN2KHQpO2Z1bmN0aW9uIG4odCxuKXtyZXR1cm5bdCplLGR2KG4pL2VdfXJldHVybiBuLmludmVydD1mdW5jdGlvbih0LG4pe3JldHVyblt0L2UsX3YobiplKV19LG59KSh0KTt2YXIgbz0xK24qKDIqaS1uKSxhPWZ2KG8pL2k7ZnVuY3Rpb24gcyh0LGUpe3ZhciBuPWZ2KG8tMippKmR2KGUpKS9pO3JldHVybltuKmR2KHQqPWkpLGEtbipzdih0KV19cmV0dXJuIHMuaW52ZXJ0PWZ1bmN0aW9uKHQsZSl7dmFyIG49YS1lLHI9YXYodCxydihuKSkqcHYobik7cmV0dXJuIG4qaTwwJiYoci09SnkqcHYodCkqcHYobikpLFtyL2ksX3YoKG8tKHQqdCtuKm4pKmkqaSkvKDIqaSkpXX0sc31mdW5jdGlvbiBuUygpe3JldHVybiB0UyhlUykuc2NhbGUoMTU1LjQyNCkuY2VudGVyKFswLDMzLjY0NDJdKX1mdW5jdGlvbiBpUygpe3JldHVybiBuUygpLnBhcmFsbGVscyhbMjkuNSw0NS41XSkuc2NhbGUoMTA3MCkudHJhbnNsYXRlKFs0ODAsMjUwXSkucm90YXRlKFs5NiwwXSkuY2VudGVyKFstLjYsMzguN10pfWZ1bmN0aW9uIHJTKHQpe3JldHVybiBmdW5jdGlvbihlLG4pe3ZhciBpPXN2KGUpLHI9c3Yobiksbz10KGkqcik7cmV0dXJuW28qcipkdihlKSxvKmR2KG4pXX19ZnVuY3Rpb24gb1ModCl7cmV0dXJuIGZ1bmN0aW9uKGUsbil7dmFyIGk9ZnYoZSplK24qbikscj10KGkpLG89ZHYociksYT1zdihyKTtyZXR1cm5bYXYoZSpvLGkqYSksX3YoaSYmbipvL2kpXX19dmFyIGFTPXJTKChmdW5jdGlvbih0KXtyZXR1cm4gZnYoMi8oMSt0KSl9KSk7YVMuaW52ZXJ0PW9TKChmdW5jdGlvbih0KXtyZXR1cm4gMipfdih0LzIpfSkpO3ZhciBzUz1yUygoZnVuY3Rpb24odCl7cmV0dXJuKHQ9Z3YodCkpJiZ0L2R2KHQpfSkpO2Z1bmN0aW9uIGxTKHQsZSl7cmV0dXJuW3QsdXYobXYoKFF5K2UpLzIpKV19ZnVuY3Rpb24gY1ModCl7dmFyIGUsbixpLHI9SncodCksbz1yLmNlbnRlcixhPXIuc2NhbGUscz1yLnRyYW5zbGF0ZSxsPXIuY2xpcEV4dGVudCxjPW51bGw7ZnVuY3Rpb24gdSgpe3ZhciBvPUp5KmEoKSxzPXIoWWIoci5yb3RhdGUoKSkuaW52ZXJ0KFswLDBdKSk7cmV0dXJuIGwobnVsbD09Yz9bW3NbMF0tbyxzWzFdLW9dLFtzWzBdK28sc1sxXStvXV06dD09PWxTP1tbTWF0aC5tYXgoc1swXS1vLGMpLGVdLFtNYXRoLm1pbihzWzBdK28sbiksaV1dOltbYyxNYXRoLm1heChzWzFdLW8sZSldLFtuLE1hdGgubWluKHNbMV0rbyxpKV1dKX1yZXR1cm4gci5zY2FsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYSh0KSx1KCkpOmEoKX0sci50cmFuc2xhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHModCksdSgpKTpzKCl9LHIuY2VudGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvKHQpLHUoKSk6bygpfSxyLmNsaXBFeHRlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG51bGw9PXQ/Yz1lPW49aT1udWxsOihjPSt0WzBdWzBdLGU9K3RbMF1bMV0sbj0rdFsxXVswXSxpPSt0WzFdWzFdKSx1KCkpOm51bGw9PWM/bnVsbDpbW2MsZV0sW24saV1dfSx1KCl9ZnVuY3Rpb24gdVModCl7cmV0dXJuIG12KChReSt0KS8yKX1mdW5jdGlvbiBoUyh0LGUpe3ZhciBuPXN2KHQpLGk9dD09PWU/ZHYodCk6dXYobi9zdihlKSkvdXYodVMoZSkvdVModCkpLHI9bipodih1Uyh0KSxpKS9pO2lmKCFpKXJldHVybiBsUztmdW5jdGlvbiBvKHQsZSl7cj4wP2U8LVF5K0t5JiYoZT0tUXkrS3kpOmU+UXktS3kmJihlPVF5LUt5KTt2YXIgbj1yL2h2KHVTKGUpLGkpO3JldHVybltuKmR2KGkqdCksci1uKnN2KGkqdCldfXJldHVybiBvLmludmVydD1mdW5jdGlvbih0LGUpe3ZhciBuPXItZSxvPXB2KGkpKmZ2KHQqdCtuKm4pLGE9YXYodCxydihuKSkqcHYobik7cmV0dXJuIG4qaTwwJiYoYS09SnkqcHYodCkqcHYobikpLFthL2ksMipvdihodihyL28sMS9pKSktUXldfSxvfWZ1bmN0aW9uIGRTKHQsZSl7cmV0dXJuW3QsZV19ZnVuY3Rpb24gcFModCxlKXt2YXIgbj1zdih0KSxpPXQ9PT1lP2R2KHQpOihuLXN2KGUpKS8oZS10KSxyPW4vaSt0O2lmKHJ2KGkpPEt5KXJldHVybiBkUztmdW5jdGlvbiBvKHQsZSl7dmFyIG49ci1lLG89aSp0O3JldHVybltuKmR2KG8pLHItbipzdihvKV19cmV0dXJuIG8uaW52ZXJ0PWZ1bmN0aW9uKHQsZSl7dmFyIG49ci1lLG89YXYodCxydihuKSkqcHYobik7cmV0dXJuIG4qaTwwJiYoby09SnkqcHYodCkqcHYobikpLFtvL2ksci1wdihpKSpmdih0KnQrbipuKV19LG99c1MuaW52ZXJ0PW9TKChmdW5jdGlvbih0KXtyZXR1cm4gdH0pKSxsUy5pbnZlcnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm5bdCwyKm92KGN2KGUpKS1ReV19LGRTLmludmVydD1kUzt2YXIgZlM9MS4zNDAyNjQsbVM9LS4wODExMDYsZ1M9ODkzZS02LF9TPS4wMDM3OTYseVM9ZnYoMykvMjtmdW5jdGlvbiB2Uyh0LGUpe3ZhciBuPV92KHlTKmR2KGUpKSxpPW4qbixyPWkqaSppO3JldHVyblt0KnN2KG4pLyh5UyooZlMrMyptUyppK3IqKDcqZ1MrOSpfUyppKSkpLG4qKGZTK21TKmkrciooZ1MrX1MqaSkpXX1mdW5jdGlvbiBiUyh0LGUpe3ZhciBuPXN2KGUpLGk9c3YodCkqbjtyZXR1cm5bbipkdih0KS9pLGR2KGUpL2ldfWZ1bmN0aW9uIHhTKHQsZSl7dmFyIG49ZSplLGk9bipuO3JldHVyblt0KiguODcwNy0uMTMxOTc5Km4raSooaSooLjAwMzk3MSpuLS4wMDE1MjkqaSktLjAxMzc5MSkpLGUqKDEuMDA3MjI2K24qKC4wMTUwODUraSooLjAyODg3NCpuLS4wNDQ0NzUtLjAwNTkxNippKSkpXX1mdW5jdGlvbiB3Uyh0LGUpe3JldHVybltzdihlKSpkdih0KSxkdihlKV19ZnVuY3Rpb24gU1ModCxlKXt2YXIgbj1zdihlKSxpPTErc3YodCkqbjtyZXR1cm5bbipkdih0KS9pLGR2KGUpL2ldfWZ1bmN0aW9uIE1TKHQsZSl7cmV0dXJuW3V2KG12KChReStlKS8yKSksLXRdfWZ1bmN0aW9uIEVTKHQsZSl7cmV0dXJuIHQucGFyZW50PT09ZS5wYXJlbnQ/MToyfWZ1bmN0aW9uIFRTKHQsZSl7cmV0dXJuIHQrZS54fWZ1bmN0aW9uIENTKHQsZSl7cmV0dXJuIE1hdGgubWF4KHQsZS55KX1mdW5jdGlvbiBBUyh0KXt2YXIgZT0wLG49dC5jaGlsZHJlbixpPW4mJm4ubGVuZ3RoO2lmKGkpZm9yKDstLWk+PTA7KWUrPW5baV0udmFsdWU7ZWxzZSBlPTE7dC52YWx1ZT1lfWZ1bmN0aW9uIGtTKHQsZSl7dmFyIG4saSxyLG8sYSxzPW5ldyBJUyh0KSxsPSt0LnZhbHVlJiYocy52YWx1ZT10LnZhbHVlKSxjPVtzXTtmb3IobnVsbD09ZSYmKGU9TFMpO249Yy5wb3AoKTspaWYobCYmKG4udmFsdWU9K24uZGF0YS52YWx1ZSksKHI9ZShuLmRhdGEpKSYmKGE9ci5sZW5ndGgpKWZvcihuLmNoaWxkcmVuPW5ldyBBcnJheShhKSxvPWEtMTtvPj0wOy0tbyljLnB1c2goaT1uLmNoaWxkcmVuW29dPW5ldyBJUyhyW29dKSksaS5wYXJlbnQ9bixpLmRlcHRoPW4uZGVwdGgrMTtyZXR1cm4gcy5lYWNoQmVmb3JlKE5TKX1mdW5jdGlvbiBMUyh0KXtyZXR1cm4gdC5jaGlsZHJlbn1mdW5jdGlvbiBQUyh0KXt0LmRhdGE9dC5kYXRhLmRhdGF9ZnVuY3Rpb24gTlModCl7dmFyIGU9MDtkb3t0LmhlaWdodD1lfXdoaWxlKCh0PXQucGFyZW50KSYmdC5oZWlnaHQ8KytlKX1mdW5jdGlvbiBJUyh0KXt0aGlzLmRhdGE9dCx0aGlzLmRlcHRoPXRoaXMuaGVpZ2h0PTAsdGhpcy5wYXJlbnQ9bnVsbH12Uy5pbnZlcnQ9ZnVuY3Rpb24odCxlKXtmb3IodmFyIG4saT1lLHI9aSppLG89cipyKnIsYT0wO2E8MTImJihvPShyPShpLT1uPShpKihmUyttUypyK28qKGdTK19TKnIpKS1lKS8oZlMrMyptUypyK28qKDcqZ1MrOSpfUypyKSkpKmkpKnIqciwhKHJ2KG4pPFp5KSk7KythKTtyZXR1cm5beVMqdCooZlMrMyptUypyK28qKDcqZ1MrOSpfUypyKSkvc3YoaSksX3YoZHYoaSkveVMpXX0sYlMuaW52ZXJ0PW9TKG92KSx4Uy5pbnZlcnQ9ZnVuY3Rpb24odCxlKXt2YXIgbixpPWUscj0yNTtkb3t2YXIgbz1pKmksYT1vKm87aS09bj0oaSooMS4wMDcyMjYrbyooLjAxNTA4NSthKiguMDI4ODc0Km8tLjA0NDQ3NS0uMDA1OTE2KmEpKSktZSkvKDEuMDA3MjI2K28qKC4wNDUyNTUrYSooLjI1OTg2NipvLS4zMTEzMjUtLjAwNTkxNioxMSphKSkpfXdoaWxlKHJ2KG4pPkt5JiYtLXI+MCk7cmV0dXJuW3QvKC44NzA3KyhvPWkqaSkqKG8qKG8qbypvKiguMDAzOTcxLS4wMDE1MjkqbyktLjAxMzc5MSktLjEzMTk3OSkpLGldfSx3Uy5pbnZlcnQ9b1MoX3YpLFNTLmludmVydD1vUygoZnVuY3Rpb24odCl7cmV0dXJuIDIqb3YodCl9KSksTVMuaW52ZXJ0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuWy1lLDIqb3YoY3YodCkpLVF5XX0sSVMucHJvdG90eXBlPWtTLnByb3RvdHlwZT17Y29uc3RydWN0b3I6SVMsY291bnQ6ZnVuY3Rpb24gUlMoKXtyZXR1cm4gdGhpcy5lYWNoQWZ0ZXIoQVMpfSxlYWNoOmZ1bmN0aW9uIE9TKHQpe3ZhciBlLG4saSxyLG89dGhpcyxhPVtvXTtkb3tmb3IoZT1hLnJldmVyc2UoKSxhPVtdO289ZS5wb3AoKTspaWYodChvKSxuPW8uY2hpbGRyZW4pZm9yKGk9MCxyPW4ubGVuZ3RoO2k8cjsrK2kpYS5wdXNoKG5baV0pfXdoaWxlKGEubGVuZ3RoKTtyZXR1cm4gdGhpc30sZWFjaEFmdGVyOmZ1bmN0aW9uIHpTKHQpe2Zvcih2YXIgZSxuLGkscj10aGlzLG89W3JdLGE9W107cj1vLnBvcCgpOylpZihhLnB1c2gociksZT1yLmNoaWxkcmVuKWZvcihuPTAsaT1lLmxlbmd0aDtuPGk7KytuKW8ucHVzaChlW25dKTtmb3IoO3I9YS5wb3AoKTspdChyKTtyZXR1cm4gdGhpc30sZWFjaEJlZm9yZTpmdW5jdGlvbiBEUyh0KXtmb3IodmFyIGUsbixpPXRoaXMscj1baV07aT1yLnBvcCgpOylpZih0KGkpLGU9aS5jaGlsZHJlbilmb3Iobj1lLmxlbmd0aC0xO24+PTA7LS1uKXIucHVzaChlW25dKTtyZXR1cm4gdGhpc30sc3VtOmZ1bmN0aW9uIEJTKHQpe3JldHVybiB0aGlzLmVhY2hBZnRlcigoZnVuY3Rpb24oZSl7Zm9yKHZhciBuPSt0KGUuZGF0YSl8fDAsaT1lLmNoaWxkcmVuLHI9aSYmaS5sZW5ndGg7LS1yPj0wOyluKz1pW3JdLnZhbHVlO2UudmFsdWU9bn0pKX0sc29ydDpmdW5jdGlvbiBIUyh0KXtyZXR1cm4gdGhpcy5lYWNoQmVmb3JlKChmdW5jdGlvbihlKXtlLmNoaWxkcmVuJiZlLmNoaWxkcmVuLnNvcnQodCl9KSl9LHBhdGg6ZnVuY3Rpb24gRlModCl7Zm9yKHZhciBlPXRoaXMsbj0oZnVuY3Rpb24gaSh0LGUpe2lmKHQ9PT1lKXJldHVybiB0O3ZhciBuPXQuYW5jZXN0b3JzKCksaT1lLmFuY2VzdG9ycygpLHI9bnVsbDt0PW4ucG9wKCksZT1pLnBvcCgpO2Zvcig7dD09PWU7KXI9dCx0PW4ucG9wKCksZT1pLnBvcCgpO3JldHVybiByfSkoZSx0KSxyPVtlXTtlIT09bjspci5wdXNoKGU9ZS5wYXJlbnQpO2Zvcih2YXIgbz1yLmxlbmd0aDt0IT09bjspci5zcGxpY2UobywwLHQpLHQ9dC5wYXJlbnQ7cmV0dXJuIHJ9LGFuY2VzdG9yczpmdW5jdGlvbiBWUygpe2Zvcih2YXIgdD10aGlzLGU9W3RdO3Q9dC5wYXJlbnQ7KWUucHVzaCh0KTtyZXR1cm4gZX0sZGVzY2VuZGFudHM6ZnVuY3Rpb24gVVMoKXt2YXIgdD1bXTtyZXR1cm4gdGhpcy5lYWNoKChmdW5jdGlvbihlKXt0LnB1c2goZSl9KSksdH0sbGVhdmVzOmZ1bmN0aW9uIGpTKCl7dmFyIHQ9W107cmV0dXJuIHRoaXMuZWFjaEJlZm9yZSgoZnVuY3Rpb24oZSl7ZS5jaGlsZHJlbnx8dC5wdXNoKGUpfSkpLHR9LGxpbmtzOmZ1bmN0aW9uIEdTKCl7dmFyIHQ9dGhpcyxlPVtdO3JldHVybiB0LmVhY2goKGZ1bmN0aW9uKG4pe24hPT10JiZlLnB1c2goe3NvdXJjZTpuLnBhcmVudCx0YXJnZXQ6bn0pfSkpLGV9LGNvcHk6ZnVuY3Rpb24gV1MoKXtyZXR1cm4ga1ModGhpcykuZWFjaEJlZm9yZShQUyl9fTt2YXIgcVM9QXJyYXkucHJvdG90eXBlLnNsaWNlO2Z1bmN0aW9uIFlTKHQpe2Zvcih2YXIgZSxuLGk9MCxyPSh0PShmdW5jdGlvbiBvKHQpe2Zvcih2YXIgZSxuLGk9dC5sZW5ndGg7aTspbj1NYXRoLnJhbmRvbSgpKmktLXwwLGU9dFtpXSx0W2ldPXRbbl0sdFtuXT1lO3JldHVybiB0fSkocVMuY2FsbCh0KSkpLmxlbmd0aCxhPVtdO2k8cjspZT10W2ldLG4mJktTKG4sZSk/KytpOihuPUpTKGE9WFMoYSxlKSksaT0wKTtyZXR1cm4gbn1mdW5jdGlvbiBYUyh0LGUpe3ZhciBuLGk7aWYoWlMoZSx0KSlyZXR1cm5bZV07Zm9yKG49MDtuPHQubGVuZ3RoOysrbilpZigkUyhlLHRbbl0pJiZaUyhRUyh0W25dLGUpLHQpKXJldHVyblt0W25dLGVdO2ZvcihuPTA7bjx0Lmxlbmd0aC0xOysrbilmb3IoaT1uKzE7aTx0Lmxlbmd0aDsrK2kpaWYoJFMoUVModFtuXSx0W2ldKSxlKSYmJFMoUVModFtuXSxlKSx0W2ldKSYmJFMoUVModFtpXSxlKSx0W25dKSYmWlModE0odFtuXSx0W2ldLGUpLHQpKXJldHVyblt0W25dLHRbaV0sZV07dGhyb3cgbmV3IEVycm9yfWZ1bmN0aW9uICRTKHQsZSl7dmFyIG49dC5yLWUucixpPWUueC10Lngscj1lLnktdC55O3JldHVybiBuPDB8fG4qbjxpKmkrcipyfWZ1bmN0aW9uIEtTKHQsZSl7dmFyIG49dC5yLWUucisxZS02LGk9ZS54LXQueCxyPWUueS10Lnk7cmV0dXJuIG4+MCYmbipuPmkqaStyKnJ9ZnVuY3Rpb24gWlModCxlKXtmb3IodmFyIG49MDtuPGUubGVuZ3RoOysrbilpZighS1ModCxlW25dKSlyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiBKUyh0KXtzd2l0Y2godC5sZW5ndGgpe2Nhc2UgMTpyZXR1cm4oZnVuY3Rpb24gZSh0KXtyZXR1cm57eDp0LngseTp0Lnkscjp0LnJ9fSkodFswXSk7Y2FzZSAyOnJldHVybiBRUyh0WzBdLHRbMV0pO2Nhc2UgMzpyZXR1cm4gdE0odFswXSx0WzFdLHRbMl0pfX1mdW5jdGlvbiBRUyh0LGUpe3ZhciBuPXQueCxpPXQueSxyPXQucixvPWUueCxhPWUueSxzPWUucixsPW8tbixjPWEtaSx1PXMtcixoPU1hdGguc3FydChsKmwrYypjKTtyZXR1cm57eDoobitvK2wvaCp1KS8yLHk6KGkrYStjL2gqdSkvMixyOihoK3IrcykvMn19ZnVuY3Rpb24gdE0odCxlLG4pe3ZhciBpPXQueCxyPXQueSxvPXQucixhPWUueCxzPWUueSxsPWUucixjPW4ueCx1PW4ueSxoPW4ucixkPWktYSxwPWktYyxmPXItcyxtPXItdSxnPWwtbyxfPWgtbyx5PWkqaStyKnItbypvLHY9eS1hKmEtcypzK2wqbCxiPXktYypjLXUqdStoKmgseD1wKmYtZCptLHc9KGYqYi1tKnYpLygyKngpLWksUz0obSpnLWYqXykveCxNPShwKnYtZCpiKS8oMip4KS1yLEU9KGQqXy1wKmcpL3gsVD1TKlMrRSpFLTEsQz0yKihvK3cqUytNKkUpLEE9dyp3K00qTS1vKm8saz0tKFQ/KEMrTWF0aC5zcXJ0KEMqQy00KlQqQSkpLygyKlQpOkEvQyk7cmV0dXJue3g6aSt3K1Mqayx5OnIrTStFKmsscjprfX1mdW5jdGlvbiBlTSh0LGUsbil7dmFyIGkscixvLGEscz10LngtZS54LGw9dC55LWUueSxjPXMqcytsKmw7Yz8ocj1lLnIrbi5yLGE9dC5yK24uciwocio9cik+KGEqPWEpPyhpPShjK2EtcikvKDIqYyksbz1NYXRoLnNxcnQoTWF0aC5tYXgoMCxhL2MtaSppKSksbi54PXQueC1pKnMtbypsLG4ueT10LnktaSpsK28qcyk6KGk9KGMrci1hKS8oMipjKSxvPU1hdGguc3FydChNYXRoLm1heCgwLHIvYy1pKmkpKSxuLng9ZS54K2kqcy1vKmwsbi55PWUueStpKmwrbypzKSk6KG4ueD1lLngrbi5yLG4ueT1lLnkpfWZ1bmN0aW9uIG5NKHQsZSl7dmFyIG49dC5yK2Uuci0xZS02LGk9ZS54LXQueCxyPWUueS10Lnk7cmV0dXJuIG4+MCYmbipuPmkqaStyKnJ9ZnVuY3Rpb24gaU0odCl7dmFyIGU9dC5fLG49dC5uZXh0Ll8saT1lLnIrbi5yLHI9KGUueCpuLnIrbi54KmUucikvaSxvPShlLnkqbi5yK24ueSplLnIpL2k7cmV0dXJuIHIqcitvKm99ZnVuY3Rpb24gck0odCl7dGhpcy5fPXQsdGhpcy5uZXh0PW51bGwsdGhpcy5wcmV2aW91cz1udWxsfWZ1bmN0aW9uIG9NKHQpe2lmKCEocj10Lmxlbmd0aCkpcmV0dXJuIDA7dmFyIGUsbixpLHIsbyxhLHMsbCxjLHUsaDtpZigoZT10WzBdKS54PTAsZS55PTAsIShyPjEpKXJldHVybiBlLnI7aWYoZS54PS0obj10WzFdKS5yLG4ueD1lLnIsbi55PTAsIShyPjIpKXJldHVybiBlLnIrbi5yO2VNKG4sZSxpPXRbMl0pLGU9bmV3IHJNKGUpLG49bmV3IHJNKG4pLGk9bmV3IHJNKGkpLGUubmV4dD1pLnByZXZpb3VzPW4sbi5uZXh0PWUucHJldmlvdXM9aSxpLm5leHQ9bi5wcmV2aW91cz1lO3Q6Zm9yKHM9MztzPHI7KytzKXtlTShlLl8sbi5fLGk9dFtzXSksaT1uZXcgck0oaSksbD1uLm5leHQsYz1lLnByZXZpb3VzLHU9bi5fLnIsaD1lLl8ucjtkb3tpZih1PD1oKXtpZihuTShsLl8saS5fKSl7ZS5uZXh0PW49bCxuLnByZXZpb3VzPWUsLS1zO2NvbnRpbnVlIHR9dSs9bC5fLnIsbD1sLm5leHR9ZWxzZXtpZihuTShjLl8saS5fKSl7KGU9YykubmV4dD1uLG4ucHJldmlvdXM9ZSwtLXM7Y29udGludWUgdH1oKz1jLl8ucixjPWMucHJldmlvdXN9fXdoaWxlKGwhPT1jLm5leHQpO2ZvcihpLnByZXZpb3VzPWUsaS5uZXh0PW4sZS5uZXh0PW4ucHJldmlvdXM9bj1pLG89aU0oZSk7KGk9aS5uZXh0KSE9PW47KShhPWlNKGkpKTxvJiYoZT1pLG89YSk7bj1lLm5leHR9Zm9yKGU9W24uX10saT1uOyhpPWkubmV4dCkhPT1uOyllLnB1c2goaS5fKTtmb3IoaT1ZUyhlKSxzPTA7czxyOysrcykoZT10W3NdKS54LT1pLngsZS55LT1pLnk7cmV0dXJuIGkucn1mdW5jdGlvbiBhTSh0KXtyZXR1cm4gbnVsbD09dD9udWxsOnNNKHQpfWZ1bmN0aW9uIHNNKHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBFcnJvcjtyZXR1cm4gdH1mdW5jdGlvbiBsTSgpe3JldHVybiAwfWZ1bmN0aW9uIGNNKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX1mdW5jdGlvbiB1TSh0KXtyZXR1cm4gTWF0aC5zcXJ0KHQudmFsdWUpfWZ1bmN0aW9uIGhNKHQpe3JldHVybiBmdW5jdGlvbihlKXtlLmNoaWxkcmVufHwoZS5yPU1hdGgubWF4KDAsK3QoZSl8fDApKX19ZnVuY3Rpb24gZE0odCxlKXtyZXR1cm4gZnVuY3Rpb24obil7aWYoaT1uLmNoaWxkcmVuKXt2YXIgaSxyLG8sYT1pLmxlbmd0aCxzPXQobikqZXx8MDtpZihzKWZvcihyPTA7cjxhOysrcilpW3JdLnIrPXM7aWYobz1vTShpKSxzKWZvcihyPTA7cjxhOysrcilpW3JdLnItPXM7bi5yPW8rc319fWZ1bmN0aW9uIHBNKHQpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgbj1lLnBhcmVudDtlLnIqPXQsbiYmKGUueD1uLngrdCplLngsZS55PW4ueSt0KmUueSl9fWZ1bmN0aW9uIGZNKHQpe3QueDA9TWF0aC5yb3VuZCh0LngwKSx0LnkwPU1hdGgucm91bmQodC55MCksdC54MT1NYXRoLnJvdW5kKHQueDEpLHQueTE9TWF0aC5yb3VuZCh0LnkxKX1mdW5jdGlvbiBtTSh0LGUsbixpLHIpe2Zvcih2YXIgbyxhPXQuY2hpbGRyZW4scz0tMSxsPWEubGVuZ3RoLGM9dC52YWx1ZSYmKGktZSkvdC52YWx1ZTsrK3M8bDspKG89YVtzXSkueTA9bixvLnkxPXIsby54MD1lLG8ueDE9ZSs9by52YWx1ZSpjfXZhciBnTT17ZGVwdGg6LTF9LF9NPXt9O2Z1bmN0aW9uIHlNKHQpe3JldHVybiB0LmlkfWZ1bmN0aW9uIHZNKHQpe3JldHVybiB0LnBhcmVudElkfWZ1bmN0aW9uIGJNKHQsZSl7cmV0dXJuIHQucGFyZW50PT09ZS5wYXJlbnQ/MToyfWZ1bmN0aW9uIHhNKHQpe3ZhciBlPXQuY2hpbGRyZW47cmV0dXJuIGU/ZVswXTp0LnR9ZnVuY3Rpb24gd00odCl7dmFyIGU9dC5jaGlsZHJlbjtyZXR1cm4gZT9lW2UubGVuZ3RoLTFdOnQudH1mdW5jdGlvbiBTTSh0LGUsbil7dmFyIGk9bi8oZS5pLXQuaSk7ZS5jLT1pLGUucys9bix0LmMrPWksZS56Kz1uLGUubSs9bn1mdW5jdGlvbiBNTSh0LGUsbil7cmV0dXJuIHQuYS5wYXJlbnQ9PT1lLnBhcmVudD90LmE6bn1mdW5jdGlvbiBFTSh0LGUpe3RoaXMuXz10LHRoaXMucGFyZW50PW51bGwsdGhpcy5jaGlsZHJlbj1udWxsLHRoaXMuQT1udWxsLHRoaXMuYT10aGlzLHRoaXMuej0wLHRoaXMubT0wLHRoaXMuYz0wLHRoaXMucz0wLHRoaXMudD1udWxsLHRoaXMuaT1lfWZ1bmN0aW9uIFRNKHQsZSxuLGkscil7Zm9yKHZhciBvLGE9dC5jaGlsZHJlbixzPS0xLGw9YS5sZW5ndGgsYz10LnZhbHVlJiYoci1uKS90LnZhbHVlOysrczxsOykobz1hW3NdKS54MD1lLG8ueDE9aSxvLnkwPW4sby55MT1uKz1vLnZhbHVlKmN9RU0ucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoSVMucHJvdG90eXBlKTt2YXIgQ009KDErTWF0aC5zcXJ0KDUpKS8yO2Z1bmN0aW9uIEFNKHQsZSxuLGkscixvKXtmb3IodmFyIGEscyxsLGMsdSxoLGQscCxmLG0sZyxfPVtdLHk9ZS5jaGlsZHJlbix2PTAsYj0wLHg9eS5sZW5ndGgsdz1lLnZhbHVlO3Y8eDspe2w9ci1uLGM9by1pO2Rve3U9eVtiKytdLnZhbHVlfXdoaWxlKCF1JiZiPHgpO2ZvcihoPWQ9dSxnPXUqdSoobT1NYXRoLm1heChjL2wsbC9jKS8odyp0KSksZj1NYXRoLm1heChkL2csZy9oKTtiPHg7KytiKXtpZih1Kz1zPXlbYl0udmFsdWUsczxoJiYoaD1zKSxzPmQmJihkPXMpLGc9dSp1Km0sKHA9TWF0aC5tYXgoZC9nLGcvaCkpPmYpe3UtPXM7YnJlYWt9Zj1wfV8ucHVzaChhPXt2YWx1ZTp1LGRpY2U6bDxjLGNoaWxkcmVuOnkuc2xpY2UodixiKX0pLGEuZGljZT9tTShhLG4saSxyLHc/aSs9Yyp1L3c6byk6VE0oYSxuLGksdz9uKz1sKnUvdzpyLG8pLHctPXUsdj1ifXJldHVybiBffXZhciBrTT0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQsbixpLHIsbyl7QU0oZSx0LG4saSxyLG8pfXJldHVybiBuLnJhdGlvPWZ1bmN0aW9uKGUpe3JldHVybiB0KChlPStlKT4xP2U6MSl9LG59KShDTSk7dmFyIExNPShmdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCxuLGkscixvKXtpZigoYT10Ll9zcXVhcmlmeSkmJmEucmF0aW89PT1lKWZvcih2YXIgYSxzLGwsYyx1LGg9LTEsZD1hLmxlbmd0aCxwPXQudmFsdWU7KytoPGQ7KXtmb3IobD0ocz1hW2hdKS5jaGlsZHJlbixjPXMudmFsdWU9MCx1PWwubGVuZ3RoO2M8dTsrK2Mpcy52YWx1ZSs9bFtjXS52YWx1ZTtzLmRpY2U/bU0ocyxuLGkscixpKz0oby1pKSpzLnZhbHVlL3ApOlRNKHMsbixpLG4rPShyLW4pKnMudmFsdWUvcCxvKSxwLT1zLnZhbHVlfWVsc2UgdC5fc3F1YXJpZnk9YT1BTShlLHQsbixpLHIsbyksYS5yYXRpbz1lfXJldHVybiBuLnJhdGlvPWZ1bmN0aW9uKGUpe3JldHVybiB0KChlPStlKT4xP2U6MSl9LG59KShDTSk7ZnVuY3Rpb24gUE0odCxlLG4pe3JldHVybihlWzBdLXRbMF0pKihuWzFdLXRbMV0pLShlWzFdLXRbMV0pKihuWzBdLXRbMF0pfWZ1bmN0aW9uIE5NKHQsZSl7cmV0dXJuIHRbMF0tZVswXXx8dFsxXS1lWzFdfWZ1bmN0aW9uIElNKHQpe2Zvcih2YXIgZT10Lmxlbmd0aCxuPVswLDFdLGk9MixyPTI7cjxlOysrcil7Zm9yKDtpPjEmJlBNKHRbbltpLTJdXSx0W25baS0xXV0sdFtyXSk8PTA7KS0taTtuW2krK109cn1yZXR1cm4gbi5zbGljZSgwLGkpfWZ1bmN0aW9uIFJNKCl7cmV0dXJuIE1hdGgucmFuZG9tKCl9dmFyIE9NPShmdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCxuKXtyZXR1cm4gdD1udWxsPT10PzA6K3Qsbj1udWxsPT1uPzE6K24sMT09PWFyZ3VtZW50cy5sZW5ndGg/KG49dCx0PTApOm4tPXQsZnVuY3Rpb24oKXtyZXR1cm4gZSgpKm4rdH19cmV0dXJuIG4uc291cmNlPXQsbn0pKFJNKSx6TT0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQsbil7dmFyIGkscjtyZXR1cm4gdD1udWxsPT10PzA6K3Qsbj1udWxsPT1uPzE6K24sZnVuY3Rpb24oKXt2YXIgbztpZihudWxsIT1pKW89aSxpPW51bGw7ZWxzZSBkb3tpPTIqZSgpLTEsbz0yKmUoKS0xLHI9aSppK28qb313aGlsZSghcnx8cj4xKTtyZXR1cm4gdCtuKm8qTWF0aC5zcXJ0KC0yKk1hdGgubG9nKHIpL3IpfX1yZXR1cm4gbi5zb3VyY2U9dCxufSkoUk0pLERNPShmdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4oKXt2YXIgdD16TS5zb3VyY2UoZSkuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBNYXRoLmV4cCh0KCkpfX1yZXR1cm4gbi5zb3VyY2U9dCxufSkoUk0pLEJNPShmdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCl7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciBuPTAsaT0wO2k8dDsrK2kpbis9ZSgpO3JldHVybiBufX1yZXR1cm4gbi5zb3VyY2U9dCxufSkoUk0pLEhNPShmdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCl7dmFyIG49Qk0uc291cmNlKGUpKHQpO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBuKCkvdH19cmV0dXJuIG4uc291cmNlPXQsbn0pKFJNKSxGTT0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybi1NYXRoLmxvZygxLWUoKSkvdH19cmV0dXJuIG4uc291cmNlPXQsbn0pKFJNKTtmdW5jdGlvbiBWTSh0LGUpe3N3aXRjaChhcmd1bWVudHMubGVuZ3RoKXtjYXNlIDA6YnJlYWs7Y2FzZSAxOnRoaXMucmFuZ2UodCk7YnJlYWs7ZGVmYXVsdDp0aGlzLnJhbmdlKGUpLmRvbWFpbih0KX1yZXR1cm4gdGhpc31mdW5jdGlvbiBVTSh0LGUpe3N3aXRjaChhcmd1bWVudHMubGVuZ3RoKXtjYXNlIDA6YnJlYWs7Y2FzZSAxOnRoaXMuaW50ZXJwb2xhdG9yKHQpO2JyZWFrO2RlZmF1bHQ6dGhpcy5pbnRlcnBvbGF0b3IoZSkuZG9tYWluKHQpfXJldHVybiB0aGlzfXZhciBqTT1BcnJheS5wcm90b3R5cGUsR009ak0ubWFwLFdNPWpNLnNsaWNlLHFNPXtuYW1lOiJpbXBsaWNpdCJ9O2Z1bmN0aW9uIFlNKCl7dmFyIHQ9amcoKSxlPVtdLG49W10saT1xTTtmdW5jdGlvbiByKHIpe3ZhciBvPXIrIiIsYT10LmdldChvKTtpZighYSl7aWYoaSE9PXFNKXJldHVybiBpO3Quc2V0KG8sYT1lLnB1c2gocikpfXJldHVybiBuWyhhLTEpJW4ubGVuZ3RoXX1yZXR1cm4gci5kb21haW49ZnVuY3Rpb24obil7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGUuc2xpY2UoKTtlPVtdLHQ9amcoKTtmb3IodmFyIGksbyxhPS0xLHM9bi5sZW5ndGg7KythPHM7KXQuaGFzKG89KGk9blthXSkrIiIpfHx0LnNldChvLGUucHVzaChpKSk7cmV0dXJuIHJ9LHIucmFuZ2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49V00uY2FsbCh0KSxyKTpuLnNsaWNlKCl9LHIudW5rbm93bj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT10LHIpOml9LHIuY29weT1mdW5jdGlvbigpe3JldHVybiBZTShlLG4pLnVua25vd24oaSl9LFZNLmFwcGx5KHIsYXJndW1lbnRzKSxyfWZ1bmN0aW9uIFhNKCl7dmFyIHQsZSxuPVlNKCkudW5rbm93bih2b2lkIDApLGk9bi5kb21haW4scj1uLnJhbmdlLG89WzAsMV0sYT0hMSxzPTAsbD0wLGM9LjU7ZnVuY3Rpb24gdSgpe3ZhciBuPWkoKS5sZW5ndGgsdT1vWzFdPG9bMF0saD1vW3UtMF0sZD1vWzEtdV07dD0oZC1oKS9NYXRoLm1heCgxLG4tcysyKmwpLGEmJih0PU1hdGguZmxvb3IodCkpLGgrPShkLWgtdCoobi1zKSkqYyxlPXQqKDEtcyksYSYmKGg9TWF0aC5yb3VuZChoKSxlPU1hdGgucm91bmQoZSkpO3ZhciBwPUtsKG4pLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGgrdCplfSkpO3JldHVybiByKHU/cC5yZXZlcnNlKCk6cCl9cmV0dXJuIGRlbGV0ZSBuLnVua25vd24sbi5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGkodCksdSgpKTppKCl9LG4ucmFuZ2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89Wyt0WzBdLCt0WzFdXSx1KCkpOm8uc2xpY2UoKX0sbi5yYW5nZVJvdW5kPWZ1bmN0aW9uKHQpe3JldHVybiBvPVsrdFswXSwrdFsxXV0sYT0hMCx1KCl9LG4uYmFuZHdpZHRoPWZ1bmN0aW9uKCl7cmV0dXJuIGV9LG4uc3RlcD1mdW5jdGlvbigpe3JldHVybiB0fSxuLnJvdW5kPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPSEhdCx1KCkpOmF9LG4ucGFkZGluZz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz1NYXRoLm1pbigxLGw9K3QpLHUoKSk6c30sbi5wYWRkaW5nSW5uZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9TWF0aC5taW4oMSx0KSx1KCkpOnN9LG4ucGFkZGluZ091dGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPSt0LHUoKSk6bH0sbi5hbGlnbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz1NYXRoLm1heCgwLE1hdGgubWluKDEsdCkpLHUoKSk6Y30sbi5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIFhNKGkoKSxvKS5yb3VuZChhKS5wYWRkaW5nSW5uZXIocykucGFkZGluZ091dGVyKGwpLmFsaWduKGMpfSxWTS5hcHBseSh1KCksYXJndW1lbnRzKX1mdW5jdGlvbiAkTSh0KXt2YXIgZT10LmNvcHk7cmV0dXJuIHQucGFkZGluZz10LnBhZGRpbmdPdXRlcixkZWxldGUgdC5wYWRkaW5nSW5uZXIsZGVsZXRlIHQucGFkZGluZ091dGVyLHQuY29weT1mdW5jdGlvbigpe3JldHVybiAkTShlKCkpfSx0fWZ1bmN0aW9uIEtNKCl7cmV0dXJuICRNKFhNLmFwcGx5KG51bGwsYXJndW1lbnRzKS5wYWRkaW5nSW5uZXIoMSkpfWZ1bmN0aW9uIFpNKHQpe3JldHVybit0fXZhciBKTT1bMCwxXTtmdW5jdGlvbiBRTSh0KXtyZXR1cm4gdH1mdW5jdGlvbiB0RSh0LGUpe3JldHVybihlLT10PSt0KT9mdW5jdGlvbihuKXtyZXR1cm4obi10KS9lfTooZnVuY3Rpb24gbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19KShpc05hTihlKT9OYU46LjUpfWZ1bmN0aW9uIGVFKHQpe3ZhciBlLG49dFswXSxpPXRbdC5sZW5ndGgtMV07cmV0dXJuIG4+aSYmKGU9bixuPWksaT1lKSxmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5tYXgobixNYXRoLm1pbihpLHQpKX19ZnVuY3Rpb24gbkUodCxlLG4pe3ZhciBpPXRbMF0scj10WzFdLG89ZVswXSxhPWVbMV07cmV0dXJuIHI8aT8oaT10RShyLGkpLG89bihhLG8pKTooaT10RShpLHIpLG89bihvLGEpKSxmdW5jdGlvbih0KXtyZXR1cm4gbyhpKHQpKX19ZnVuY3Rpb24gaUUodCxlLG4pe3ZhciBpPU1hdGgubWluKHQubGVuZ3RoLGUubGVuZ3RoKS0xLHI9bmV3IEFycmF5KGkpLG89bmV3IEFycmF5KGkpLGE9LTE7Zm9yKHRbaV08dFswXSYmKHQ9dC5zbGljZSgpLnJldmVyc2UoKSxlPWUuc2xpY2UoKS5yZXZlcnNlKCkpOysrYTxpOylyW2FdPXRFKHRbYV0sdFthKzFdKSxvW2FdPW4oZVthXSxlW2ErMV0pO3JldHVybiBmdW5jdGlvbihlKXt2YXIgbj1EbCh0LGUsMSxpKS0xO3JldHVybiBvW25dKHJbbl0oZSkpfX1mdW5jdGlvbiByRSh0LGUpe3JldHVybiBlLmRvbWFpbih0LmRvbWFpbigpKS5yYW5nZSh0LnJhbmdlKCkpLmludGVycG9sYXRlKHQuaW50ZXJwb2xhdGUoKSkuY2xhbXAodC5jbGFtcCgpKS51bmtub3duKHQudW5rbm93bigpKX1mdW5jdGlvbiBvRSgpe3ZhciB0LGUsbixpLHIsbyxhPUpNLHM9Sk0sbD1jcCxjPVFNO2Z1bmN0aW9uIHUoKXtyZXR1cm4gaT1NYXRoLm1pbihhLmxlbmd0aCxzLmxlbmd0aCk+Mj9pRTpuRSxyPW89bnVsbCxofWZ1bmN0aW9uIGgoZSl7cmV0dXJuIGlzTmFOKGU9K2UpP246KHJ8fChyPWkoYS5tYXAodCkscyxsKSkpKHQoYyhlKSkpfXJldHVybiBoLmludmVydD1mdW5jdGlvbihuKXtyZXR1cm4gYyhlKChvfHwobz1pKHMsYS5tYXAodCkscnApKSkobikpKX0saC5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9R00uY2FsbCh0LFpNKSxjPT09UU18fChjPWVFKGEpKSx1KCkpOmEuc2xpY2UoKX0saC5yYW5nZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz1XTS5jYWxsKHQpLHUoKSk6cy5zbGljZSgpfSxoLnJhbmdlUm91bmQ9ZnVuY3Rpb24odCl7cmV0dXJuIHM9V00uY2FsbCh0KSxsPXVwLHUoKX0saC5jbGFtcD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz10P2VFKGEpOlFNLGgpOmMhPT1RTX0saC5pbnRlcnBvbGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obD10LHUoKSk6bH0saC51bmtub3duPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPXQsaCk6bn0sZnVuY3Rpb24obixpKXtyZXR1cm4gdD1uLGU9aSx1KCl9fWZ1bmN0aW9uIGFFKHQsZSl7cmV0dXJuIG9FKCkodCxlKX1mdW5jdGlvbiBzRSh0LGUsbixpKXt2YXIgcixvPW5jKHQsZSxuKTtzd2l0Y2goKGk9a3kobnVsbD09aT8iLGYiOmkpKS50eXBlKXtjYXNlInMiOnZhciBhPU1hdGgubWF4KE1hdGguYWJzKHQpLE1hdGguYWJzKGUpKTtyZXR1cm4gbnVsbCE9aS5wcmVjaXNpb258fGlzTmFOKHI9R3kobyxhKSl8fChpLnByZWNpc2lvbj1yKSxCeShpLGEpO2Nhc2UiIjpjYXNlImUiOmNhc2UiZyI6Y2FzZSJwIjpjYXNlInIiOm51bGwhPWkucHJlY2lzaW9ufHxpc05hTihyPVd5KG8sTWF0aC5tYXgoTWF0aC5hYnModCksTWF0aC5hYnMoZSkpKSl8fChpLnByZWNpc2lvbj1yLSgiZSI9PT1pLnR5cGUpKTticmVhaztjYXNlImYiOmNhc2UiJSI6bnVsbCE9aS5wcmVjaXNpb258fGlzTmFOKHI9ankobykpfHwoaS5wcmVjaXNpb249ci0yKigiJSI9PT1pLnR5cGUpKX1yZXR1cm4gRHkoaSl9ZnVuY3Rpb24gbEUodCl7dmFyIGU9dC5kb21haW47cmV0dXJuIHQudGlja3M9ZnVuY3Rpb24odCl7dmFyIG49ZSgpO3JldHVybiB0YyhuWzBdLG5bbi5sZW5ndGgtMV0sbnVsbD09dD8xMDp0KX0sdC50aWNrRm9ybWF0PWZ1bmN0aW9uKHQsbil7dmFyIGk9ZSgpO3JldHVybiBzRShpWzBdLGlbaS5sZW5ndGgtMV0sbnVsbD09dD8xMDp0LG4pfSx0Lm5pY2U9ZnVuY3Rpb24obil7bnVsbD09biYmKG49MTApO3ZhciBpLHI9ZSgpLG89MCxhPXIubGVuZ3RoLTEscz1yW29dLGw9clthXTtyZXR1cm4gbDxzJiYoaT1zLHM9bCxsPWksaT1vLG89YSxhPWkpLChpPWVjKHMsbCxuKSk+MD9pPWVjKHM9TWF0aC5mbG9vcihzL2kpKmksbD1NYXRoLmNlaWwobC9pKSppLG4pOmk8MCYmKGk9ZWMocz1NYXRoLmNlaWwocyppKS9pLGw9TWF0aC5mbG9vcihsKmkpL2ksbikpLGk+MD8ocltvXT1NYXRoLmZsb29yKHMvaSkqaSxyW2FdPU1hdGguY2VpbChsL2kpKmksZShyKSk6aTwwJiYocltvXT1NYXRoLmNlaWwocyppKS9pLHJbYV09TWF0aC5mbG9vcihsKmkpL2ksZShyKSksdH0sdH1mdW5jdGlvbiBjRSgpe3ZhciB0PWFFKFFNLFFNKTtyZXR1cm4gdC5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIHJFKHQsY0UoKSl9LFZNLmFwcGx5KHQsYXJndW1lbnRzKSxsRSh0KX1mdW5jdGlvbiB1RSh0LGUpe3ZhciBuLGk9MCxyPSh0PXQuc2xpY2UoKSkubGVuZ3RoLTEsbz10W2ldLGE9dFtyXTtyZXR1cm4gYTxvJiYobj1pLGk9cixyPW4sbj1vLG89YSxhPW4pLHRbaV09ZS5mbG9vcihvKSx0W3JdPWUuY2VpbChhKSx0fWZ1bmN0aW9uIGhFKHQpe3JldHVybiBNYXRoLmxvZyh0KX1mdW5jdGlvbiBkRSh0KXtyZXR1cm4gTWF0aC5leHAodCl9ZnVuY3Rpb24gcEUodCl7cmV0dXJuLU1hdGgubG9nKC10KX1mdW5jdGlvbiBmRSh0KXtyZXR1cm4tTWF0aC5leHAoLXQpfWZ1bmN0aW9uIG1FKHQpe3JldHVybiBpc0Zpbml0ZSh0KT8rKCIxZSIrdCk6dDwwPzA6dH1mdW5jdGlvbiBnRSh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuLXQoLWUpfX1mdW5jdGlvbiBfRSh0KXt2YXIgZSxuLGk9dChoRSxkRSkscj1pLmRvbWFpbixvPTEwO2Z1bmN0aW9uIGEoKXtyZXR1cm4gZT0oZnVuY3Rpb24gYSh0KXtyZXR1cm4gdD09PU1hdGguRT9NYXRoLmxvZzoxMD09PXQmJk1hdGgubG9nMTB8fDI9PT10JiZNYXRoLmxvZzJ8fCh0PU1hdGgubG9nKHQpLGZ1bmN0aW9uKGUpe3JldHVybiBNYXRoLmxvZyhlKS90fSl9KShvKSxuPShmdW5jdGlvbiBzKHQpe3JldHVybiAxMD09PXQ/bUU6dD09PU1hdGguRT9NYXRoLmV4cDpmdW5jdGlvbihlKXtyZXR1cm4gTWF0aC5wb3codCxlKX19KShvKSxyKClbMF08MD8oZT1nRShlKSxuPWdFKG4pLHQocEUsZkUpKTp0KGhFLGRFKSxpfXJldHVybiBpLmJhc2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89K3QsYSgpKTpvfSxpLmRvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocih0KSxhKCkpOnIoKX0saS50aWNrcz1mdW5jdGlvbih0KXt2YXIgaSxhPXIoKSxzPWFbMF0sbD1hW2EubGVuZ3RoLTFdOyhpPWw8cykmJihkPXMscz1sLGw9ZCk7dmFyIGMsdSxoLGQ9ZShzKSxwPWUobCksZj1udWxsPT10PzEwOit0LG09W107aWYoIShvJTEpJiZwLWQ8Zil7aWYoZD1NYXRoLnJvdW5kKGQpLTEscD1NYXRoLnJvdW5kKHApKzEscz4wKXtmb3IoO2Q8cDsrK2QpZm9yKHU9MSxjPW4oZCk7dTxvOysrdSlpZighKChoPWMqdSk8cykpe2lmKGg+bClicmVhazttLnB1c2goaCl9fWVsc2UgZm9yKDtkPHA7KytkKWZvcih1PW8tMSxjPW4oZCk7dT49MTstLXUpaWYoISgoaD1jKnUpPHMpKXtpZihoPmwpYnJlYWs7bS5wdXNoKGgpfX1lbHNlIG09dGMoZCxwLE1hdGgubWluKHAtZCxmKSkubWFwKG4pO3JldHVybiBpP20ucmV2ZXJzZSgpOm19LGkudGlja0Zvcm1hdD1mdW5jdGlvbih0LHIpe2lmKG51bGw9PXImJihyPTEwPT09bz8iLjBlIjoiLCIpLCJmdW5jdGlvbiIhPXR5cGVvZiByJiYocj1EeShyKSksdD09PTEvMClyZXR1cm4gcjtudWxsPT10JiYodD0xMCk7dmFyIGE9TWF0aC5tYXgoMSxvKnQvaS50aWNrcygpLmxlbmd0aCk7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBpPXQvbihNYXRoLnJvdW5kKGUodCkpKTtyZXR1cm4gaSpvPG8tLjUmJihpKj1vKSxpPD1hP3IodCk6IiJ9fSxpLm5pY2U9ZnVuY3Rpb24oKXtyZXR1cm4gcih1RShyKCkse2Zsb29yOmZ1bmN0aW9uKHQpe3JldHVybiBuKE1hdGguZmxvb3IoZSh0KSkpfSxjZWlsOmZ1bmN0aW9uKHQpe3JldHVybiBuKE1hdGguY2VpbChlKHQpKSl9fSkpfSxpfWZ1bmN0aW9uIHlFKCl7dmFyIHQ9X0Uob0UoKSkuZG9tYWluKFsxLDEwXSk7cmV0dXJuIHQuY29weT1mdW5jdGlvbigpe3JldHVybiByRSh0LHlFKCkpLmJhc2UodC5iYXNlKCkpfSxWTS5hcHBseSh0LGFyZ3VtZW50cyksdH1mdW5jdGlvbiB2RSh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGguc2lnbihlKSpNYXRoLmxvZzFwKE1hdGguYWJzKGUvdCkpfX1mdW5jdGlvbiBiRSh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGguc2lnbihlKSpNYXRoLmV4cG0xKE1hdGguYWJzKGUpKSp0fX1mdW5jdGlvbiB4RSh0KXt2YXIgZT0xLG49dCh2RShlKSxiRShlKSk7cmV0dXJuIG4uY29uc3RhbnQ9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dCh2RShlPStuKSxiRShlKSk6ZX0sbEUobil9ZnVuY3Rpb24gd0UodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBlPDA/LU1hdGgucG93KC1lLHQpOk1hdGgucG93KGUsdCl9fWZ1bmN0aW9uIFNFKHQpe3JldHVybiB0PDA/LU1hdGguc3FydCgtdCk6TWF0aC5zcXJ0KHQpfWZ1bmN0aW9uIE1FKHQpe3JldHVybiB0PDA/LXQqdDp0KnR9ZnVuY3Rpb24gRUUodCl7dmFyIGU9dChRTSxRTSksbj0xO2Z1bmN0aW9uIGkoKXtyZXR1cm4gMT09PW4/dChRTSxRTSk6LjU9PT1uP3QoU0UsTUUpOnQod0Uobiksd0UoMS9uKSl9cmV0dXJuIGUuZXhwb25lbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49K3QsaSgpKTpufSxsRShlKX1mdW5jdGlvbiBURSgpe3ZhciB0PUVFKG9FKCkpO3JldHVybiB0LmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gckUodCxURSgpKS5leHBvbmVudCh0LmV4cG9uZW50KCkpfSxWTS5hcHBseSh0LGFyZ3VtZW50cyksdH1mdW5jdGlvbiBDRSgpe3ZhciB0LGU9W10sbj1bXSxpPVtdO2Z1bmN0aW9uIHIoKXt2YXIgdD0wLHI9TWF0aC5tYXgoMSxuLmxlbmd0aCk7Zm9yKGk9bmV3IEFycmF5KHItMSk7Kyt0PHI7KWlbdC0xXT1yYyhlLHQvcik7cmV0dXJuIG99ZnVuY3Rpb24gbyhlKXtyZXR1cm4gaXNOYU4oZT0rZSk/dDpuW0RsKGksZSldfXJldHVybiBvLmludmVydEV4dGVudD1mdW5jdGlvbih0KXt2YXIgcj1uLmluZGV4T2YodCk7cmV0dXJuIHI8MD9bTmFOLE5hTl06W3I+MD9pW3ItMV06ZVswXSxyPGkubGVuZ3RoP2lbcl06ZVtlLmxlbmd0aC0xXV19LG8uZG9tYWluPWZ1bmN0aW9uKHQpe2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiBlLnNsaWNlKCk7ZT1bXTtmb3IodmFyIG4saT0wLG89dC5sZW5ndGg7aTxvOysraSludWxsPT0obj10W2ldKXx8aXNOYU4obj0rbil8fGUucHVzaChuKTtyZXR1cm4gZS5zb3J0KFJsKSxyKCl9LG8ucmFuZ2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49V00uY2FsbCh0KSxyKCkpOm4uc2xpY2UoKX0sby51bmtub3duPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PWUsbyk6dH0sby5xdWFudGlsZXM9ZnVuY3Rpb24oKXtyZXR1cm4gaS5zbGljZSgpfSxvLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gQ0UoKS5kb21haW4oZSkucmFuZ2UobikudW5rbm93bih0KX0sVk0uYXBwbHkobyxhcmd1bWVudHMpfWZ1bmN0aW9uIEFFKCl7dmFyIHQsZT0wLG49MSxpPTEscj1bLjVdLG89WzAsMV07ZnVuY3Rpb24gYShlKXtyZXR1cm4gZTw9ZT9vW0RsKHIsZSwwLGkpXTp0fWZ1bmN0aW9uIHMoKXt2YXIgdD0tMTtmb3Iocj1uZXcgQXJyYXkoaSk7Kyt0PGk7KXJbdF09KCh0KzEpKm4tKHQtaSkqZSkvKGkrMSk7cmV0dXJuIGF9cmV0dXJuIGEuZG9tYWluPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPSt0WzBdLG49K3RbMV0scygpKTpbZSxuXX0sYS5yYW5nZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0obz1XTS5jYWxsKHQpKS5sZW5ndGgtMSxzKCkpOm8uc2xpY2UoKX0sYS5pbnZlcnRFeHRlbnQ9ZnVuY3Rpb24odCl7dmFyIGE9by5pbmRleE9mKHQpO3JldHVybiBhPDA/W05hTixOYU5dOmE8MT9bZSxyWzBdXTphPj1pP1tyW2ktMV0sbl06W3JbYS0xXSxyW2FdXX0sYS51bmtub3duPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PWUsYSk6YX0sYS50aHJlc2hvbGRzPWZ1bmN0aW9uKCl7cmV0dXJuIHIuc2xpY2UoKX0sYS5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIEFFKCkuZG9tYWluKFtlLG5dKS5yYW5nZShvKS51bmtub3duKHQpfSxWTS5hcHBseShsRShhKSxhcmd1bWVudHMpfXZhciBrRT1uZXcgRGF0ZSxMRT1uZXcgRGF0ZTtmdW5jdGlvbiBQRSh0LGUsbixpKXtmdW5jdGlvbiByKGUpe3JldHVybiB0KGU9MD09PWFyZ3VtZW50cy5sZW5ndGg/bmV3IERhdGU6bmV3IERhdGUoK2UpKSxlfXJldHVybiByLmZsb29yPWZ1bmN0aW9uKGUpe3JldHVybiB0KGU9bmV3IERhdGUoK2UpKSxlfSxyLmNlaWw9ZnVuY3Rpb24obil7cmV0dXJuIHQobj1uZXcgRGF0ZShuLTEpKSxlKG4sMSksdChuKSxufSxyLnJvdW5kPWZ1bmN0aW9uKHQpe3ZhciBlPXIodCksbj1yLmNlaWwodCk7cmV0dXJuIHQtZTxuLXQ/ZTpufSxyLm9mZnNldD1mdW5jdGlvbih0LG4pe3JldHVybiBlKHQ9bmV3IERhdGUoK3QpLG51bGw9PW4/MTpNYXRoLmZsb29yKG4pKSx0fSxyLnJhbmdlPWZ1bmN0aW9uKG4saSxvKXt2YXIgYSxzPVtdO2lmKG49ci5jZWlsKG4pLG89bnVsbD09bz8xOk1hdGguZmxvb3IobyksIShuPGkmJm8+MCkpcmV0dXJuIHM7ZG97cy5wdXNoKGE9bmV3IERhdGUoK24pKSxlKG4sbyksdChuKX13aGlsZShhPG4mJm48aSk7cmV0dXJuIHN9LHIuZmlsdGVyPWZ1bmN0aW9uKG4pe3JldHVybiBQRSgoZnVuY3Rpb24oZSl7aWYoZT49ZSlmb3IoO3QoZSksIW4oZSk7KWUuc2V0VGltZShlLTEpfSksKGZ1bmN0aW9uKHQsaSl7aWYodD49dClpZihpPDApZm9yKDsrK2k8PTA7KWZvcig7ZSh0LC0xKSwhbih0KTspO2Vsc2UgZm9yKDstLWk+PTA7KWZvcig7ZSh0LDEpLCFuKHQpOyk7fSkpfSxuJiYoci5jb3VudD1mdW5jdGlvbihlLGkpe3JldHVybiBrRS5zZXRUaW1lKCtlKSxMRS5zZXRUaW1lKCtpKSx0KGtFKSx0KExFKSxNYXRoLmZsb29yKG4oa0UsTEUpKX0sci5ldmVyeT1mdW5jdGlvbih0KXtyZXR1cm4gdD1NYXRoLmZsb29yKHQpLGlzRmluaXRlKHQpJiZ0PjA/dD4xP3IuZmlsdGVyKGk/ZnVuY3Rpb24oZSl7cmV0dXJuIGkoZSkldD09MH06ZnVuY3Rpb24oZSl7cmV0dXJuIHIuY291bnQoMCxlKSV0PT0wfSk6cjpudWxsfSkscn12YXIgTkU9UEUoKGZ1bmN0aW9uKCl7fSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRUaW1lKCt0K2UpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUtdH0pKTtORS5ldmVyeT1mdW5jdGlvbih0KXtyZXR1cm4gdD1NYXRoLmZsb29yKHQpLGlzRmluaXRlKHQpJiZ0PjA/dD4xP1BFKChmdW5jdGlvbihlKXtlLnNldFRpbWUoTWF0aC5mbG9vcihlL3QpKnQpfSksKGZ1bmN0aW9uKGUsbil7ZS5zZXRUaW1lKCtlK24qdCl9KSwoZnVuY3Rpb24oZSxuKXtyZXR1cm4obi1lKS90fSkpOk5FOm51bGx9O3ZhciBJRT1ORSxSRT1ORS5yYW5nZSxPRT0xZTMsekU9NmU0LERFPTM2ZTUsQkU9ODY0ZTUsSEU9NjA0OGU1LEZFPVBFKChmdW5jdGlvbih0KXt0LnNldFRpbWUodC10LmdldE1pbGxpc2Vjb25kcygpKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0VGltZSgrdCtlKk9FKX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQpL09FfSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFVUQ1NlY29uZHMoKX0pKSxWRT1GRSxVRT1GRS5yYW5nZSxqRT1QRSgoZnVuY3Rpb24odCl7dC5zZXRUaW1lKHQtdC5nZXRNaWxsaXNlY29uZHMoKS10LmdldFNlY29uZHMoKSpPRSl9KSwoZnVuY3Rpb24odCxlKXt0LnNldFRpbWUoK3QrZSp6RSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4oZS10KS96RX0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRNaW51dGVzKCl9KSksR0U9akUsV0U9akUucmFuZ2UscUU9UEUoKGZ1bmN0aW9uKHQpe3Quc2V0VGltZSh0LXQuZ2V0TWlsbGlzZWNvbmRzKCktdC5nZXRTZWNvbmRzKCkqT0UtdC5nZXRNaW51dGVzKCkqekUpfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRUaW1lKCt0K2UqREUpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdCkvREV9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0SG91cnMoKX0pKSxZRT1xRSxYRT1xRS5yYW5nZSwkRT1QRSgoZnVuY3Rpb24odCl7dC5zZXRIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0RGF0ZSh0LmdldERhdGUoKStlKX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQtKGUuZ2V0VGltZXpvbmVPZmZzZXQoKS10LmdldFRpbWV6b25lT2Zmc2V0KCkpKnpFKS9CRX0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXREYXRlKCktMX0pKSxLRT0kRSxaRT0kRS5yYW5nZTtmdW5jdGlvbiBKRSh0KXtyZXR1cm4gUEUoKGZ1bmN0aW9uKGUpe2Uuc2V0RGF0ZShlLmdldERhdGUoKS0oZS5nZXREYXkoKSs3LXQpJTcpLGUuc2V0SG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldERhdGUodC5nZXREYXRlKCkrNyplKX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQtKGUuZ2V0VGltZXpvbmVPZmZzZXQoKS10LmdldFRpbWV6b25lT2Zmc2V0KCkpKnpFKS9IRX0pKX12YXIgUUU9SkUoMCksdFQ9SkUoMSksZVQ9SkUoMiksblQ9SkUoMyksaVQ9SkUoNCksclQ9SkUoNSksb1Q9SkUoNiksYVQ9UUUucmFuZ2Usc1Q9dFQucmFuZ2UsbFQ9ZVQucmFuZ2UsY1Q9blQucmFuZ2UsdVQ9aVQucmFuZ2UsaFQ9clQucmFuZ2UsZFQ9b1QucmFuZ2UscFQ9UEUoKGZ1bmN0aW9uKHQpe3Quc2V0RGF0ZSgxKSx0LnNldEhvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRNb250aCh0LmdldE1vbnRoKCkrZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5nZXRNb250aCgpLXQuZ2V0TW9udGgoKSsxMiooZS5nZXRGdWxsWWVhcigpLXQuZ2V0RnVsbFllYXIoKSl9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0TW9udGgoKX0pKSxmVD1wVCxtVD1wVC5yYW5nZSxnVD1QRSgoZnVuY3Rpb24odCl7dC5zZXRNb250aCgwLDEpLHQuc2V0SG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldEZ1bGxZZWFyKHQuZ2V0RnVsbFllYXIoKStlKX0pLChmdW5jdGlvbih0LGUpe3JldHVybiBlLmdldEZ1bGxZZWFyKCktdC5nZXRGdWxsWWVhcigpfSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldEZ1bGxZZWFyKCl9KSk7Z1QuZXZlcnk9ZnVuY3Rpb24odCl7cmV0dXJuIGlzRmluaXRlKHQ9TWF0aC5mbG9vcih0KSkmJnQ+MD9QRSgoZnVuY3Rpb24oZSl7ZS5zZXRGdWxsWWVhcihNYXRoLmZsb29yKGUuZ2V0RnVsbFllYXIoKS90KSp0KSxlLnNldE1vbnRoKDAsMSksZS5zZXRIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbihlLG4pe2Uuc2V0RnVsbFllYXIoZS5nZXRGdWxsWWVhcigpK24qdCl9KSk6bnVsbH07dmFyIF9UPWdULHlUPWdULnJhbmdlLHZUPVBFKChmdW5jdGlvbih0KXt0LnNldFVUQ1NlY29uZHMoMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0VGltZSgrdCtlKnpFKX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQpL3pFfSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFVUQ01pbnV0ZXMoKX0pKSxiVD12VCx4VD12VC5yYW5nZSx3VD1QRSgoZnVuY3Rpb24odCl7dC5zZXRVVENNaW51dGVzKDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0VGltZSgrdCtlKkRFKX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQpL0RFfSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFVUQ0hvdXJzKCl9KSksU1Q9d1QsTVQ9d1QucmFuZ2UsRVQ9UEUoKGZ1bmN0aW9uKHQpe3Quc2V0VVRDSG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldFVUQ0RhdGUodC5nZXRVVENEYXRlKCkrZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4oZS10KS9CRX0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRVVENEYXRlKCktMX0pKSxUVD1FVCxDVD1FVC5yYW5nZTtmdW5jdGlvbiBBVCh0KXtyZXR1cm4gUEUoKGZ1bmN0aW9uKGUpe2Uuc2V0VVRDRGF0ZShlLmdldFVUQ0RhdGUoKS0oZS5nZXRVVENEYXkoKSs3LXQpJTcpLGUuc2V0VVRDSG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldFVUQ0RhdGUodC5nZXRVVENEYXRlKCkrNyplKX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQpL0hFfSkpfXZhciBrVD1BVCgwKSxMVD1BVCgxKSxQVD1BVCgyKSxOVD1BVCgzKSxJVD1BVCg0KSxSVD1BVCg1KSxPVD1BVCg2KSx6VD1rVC5yYW5nZSxEVD1MVC5yYW5nZSxCVD1QVC5yYW5nZSxIVD1OVC5yYW5nZSxGVD1JVC5yYW5nZSxWVD1SVC5yYW5nZSxVVD1PVC5yYW5nZSxqVD1QRSgoZnVuY3Rpb24odCl7dC5zZXRVVENEYXRlKDEpLHQuc2V0VVRDSG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldFVUQ01vbnRoKHQuZ2V0VVRDTW9udGgoKStlKX0pLChmdW5jdGlvbih0LGUpe3JldHVybiBlLmdldFVUQ01vbnRoKCktdC5nZXRVVENNb250aCgpKzEyKihlLmdldFVUQ0Z1bGxZZWFyKCktdC5nZXRVVENGdWxsWWVhcigpKX0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRVVENNb250aCgpfSkpLEdUPWpULFdUPWpULnJhbmdlLHFUPVBFKChmdW5jdGlvbih0KXt0LnNldFVUQ01vbnRoKDAsMSksdC5zZXRVVENIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0VVRDRnVsbFllYXIodC5nZXRVVENGdWxsWWVhcigpK2UpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUuZ2V0VVRDRnVsbFllYXIoKS10LmdldFVUQ0Z1bGxZZWFyKCl9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0VVRDRnVsbFllYXIoKX0pKTtxVC5ldmVyeT1mdW5jdGlvbih0KXtyZXR1cm4gaXNGaW5pdGUodD1NYXRoLmZsb29yKHQpKSYmdD4wP1BFKChmdW5jdGlvbihlKXtlLnNldFVUQ0Z1bGxZZWFyKE1hdGguZmxvb3IoZS5nZXRVVENGdWxsWWVhcigpL3QpKnQpLGUuc2V0VVRDTW9udGgoMCwxKSxlLnNldFVUQ0hvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKGUsbil7ZS5zZXRVVENGdWxsWWVhcihlLmdldFVUQ0Z1bGxZZWFyKCkrbip0KX0pKTpudWxsfTt2YXIgWVQ9cVQsWFQ9cVQucmFuZ2U7ZnVuY3Rpb24gJFQodCl7aWYoMDw9dC55JiZ0Lnk8MTAwKXt2YXIgZT1uZXcgRGF0ZSgtMSx0Lm0sdC5kLHQuSCx0Lk0sdC5TLHQuTCk7cmV0dXJuIGUuc2V0RnVsbFllYXIodC55KSxlfXJldHVybiBuZXcgRGF0ZSh0LnksdC5tLHQuZCx0LkgsdC5NLHQuUyx0LkwpfWZ1bmN0aW9uIEtUKHQpe2lmKDA8PXQueSYmdC55PDEwMCl7dmFyIGU9bmV3IERhdGUoRGF0ZS5VVEMoLTEsdC5tLHQuZCx0LkgsdC5NLHQuUyx0LkwpKTtyZXR1cm4gZS5zZXRVVENGdWxsWWVhcih0LnkpLGV9cmV0dXJuIG5ldyBEYXRlKERhdGUuVVRDKHQueSx0Lm0sdC5kLHQuSCx0Lk0sdC5TLHQuTCkpfWZ1bmN0aW9uIFpUKHQsZSxuKXtyZXR1cm57eTp0LG06ZSxkOm4sSDowLE06MCxTOjAsTDowfX1mdW5jdGlvbiBKVCh0KXt2YXIgZT10LmRhdGVUaW1lLG49dC5kYXRlLGk9dC50aW1lLHI9dC5wZXJpb2RzLG89dC5kYXlzLGE9dC5zaG9ydERheXMscz10Lm1vbnRocyxsPXQuc2hvcnRNb250aHMsYz11QyhyKSx1PWhDKHIpLGg9dUMobyksZD1oQyhvKSxwPXVDKGEpLGY9aEMoYSksbT11QyhzKSxnPWhDKHMpLF89dUMobCkseT1oQyhsKSx2PXthOmZ1bmN0aW9uIGIodCl7cmV0dXJuIGFbdC5nZXREYXkoKV19LEE6ZnVuY3Rpb24geCh0KXtyZXR1cm4gb1t0LmdldERheSgpXX0sYjpmdW5jdGlvbiB3KHQpe3JldHVybiBsW3QuZ2V0TW9udGgoKV19LEI6ZnVuY3Rpb24gUyh0KXtyZXR1cm4gc1t0LmdldE1vbnRoKCldfSxjOm51bGwsZDpOQyxlOk5DLGY6REMsZzpYQyxHOktDLEg6SUMsSTpSQyxqOk9DLEw6ekMsbTpCQyxNOkhDLHA6ZnVuY3Rpb24gTSh0KXtyZXR1cm4gclsrKHQuZ2V0SG91cnMoKT49MTIpXX0scTpmdW5jdGlvbiBFKHQpe3JldHVybiAxK35+KHQuZ2V0TW9udGgoKS8zKX0sUTp2QSxzOmJBLFM6RkMsdTpWQyxVOlVDLFY6R0MsdzpXQyxXOnFDLHg6bnVsbCxYOm51bGwseTpZQyxZOiRDLFo6WkMsIiUiOnlBfSxUPXthOmZ1bmN0aW9uIEModCl7cmV0dXJuIGFbdC5nZXRVVENEYXkoKV19LEE6ZnVuY3Rpb24gQSh0KXtyZXR1cm4gb1t0LmdldFVUQ0RheSgpXX0sYjpmdW5jdGlvbiBrKHQpe3JldHVybiBsW3QuZ2V0VVRDTW9udGgoKV19LEI6ZnVuY3Rpb24gTCh0KXtyZXR1cm4gc1t0LmdldFVUQ01vbnRoKCldfSxjOm51bGwsZDpKQyxlOkpDLGY6aUEsZzpmQSxHOmdBLEg6UUMsSTp0QSxqOmVBLEw6bkEsbTpyQSxNOm9BLHA6ZnVuY3Rpb24gUCh0KXtyZXR1cm4gclsrKHQuZ2V0VVRDSG91cnMoKT49MTIpXX0scTpmdW5jdGlvbiBOKHQpe3JldHVybiAxK35+KHQuZ2V0VVRDTW9udGgoKS8zKX0sUTp2QSxzOmJBLFM6YUEsdTpzQSxVOmxBLFY6dUEsdzpoQSxXOmRBLHg6bnVsbCxYOm51bGwseTpwQSxZOm1BLFo6X0EsIiUiOnlBfSxJPXthOmZ1bmN0aW9uIFIodCxlLG4pe3ZhciBpPXAuZXhlYyhlLnNsaWNlKG4pKTtyZXR1cm4gaT8odC53PWZbaVswXS50b0xvd2VyQ2FzZSgpXSxuK2lbMF0ubGVuZ3RoKTotMX0sQTpmdW5jdGlvbiBPKHQsZSxuKXt2YXIgaT1oLmV4ZWMoZS5zbGljZShuKSk7cmV0dXJuIGk/KHQudz1kW2lbMF0udG9Mb3dlckNhc2UoKV0sbitpWzBdLmxlbmd0aCk6LTF9LGI6ZnVuY3Rpb24geih0LGUsbil7dmFyIGk9Xy5leGVjKGUuc2xpY2UobikpO3JldHVybiBpPyh0Lm09eVtpWzBdLnRvTG93ZXJDYXNlKCldLG4raVswXS5sZW5ndGgpOi0xfSxCOmZ1bmN0aW9uIEQodCxlLG4pe3ZhciBpPW0uZXhlYyhlLnNsaWNlKG4pKTtyZXR1cm4gaT8odC5tPWdbaVswXS50b0xvd2VyQ2FzZSgpXSxuK2lbMF0ubGVuZ3RoKTotMX0sYzpmdW5jdGlvbiBCKHQsbixpKXtyZXR1cm4gRyh0LGUsbixpKX0sZDp3QyxlOndDLGY6QUMsZzp5QyxHOl9DLEg6TUMsSTpNQyxqOlNDLEw6Q0MsbTp4QyxNOkVDLHA6ZnVuY3Rpb24gSCh0LGUsbil7dmFyIGk9Yy5leGVjKGUuc2xpY2UobikpO3JldHVybiBpPyh0LnA9dVtpWzBdLnRvTG93ZXJDYXNlKCldLG4raVswXS5sZW5ndGgpOi0xfSxxOmJDLFE6TEMsczpQQyxTOlRDLHU6cEMsVTpmQyxWOm1DLHc6ZEMsVzpnQyx4OmZ1bmN0aW9uIEYodCxlLGkpe3JldHVybiBHKHQsbixlLGkpfSxYOmZ1bmN0aW9uIFYodCxlLG4pe3JldHVybiBHKHQsaSxlLG4pfSx5OnlDLFk6X0MsWjp2QywiJSI6a0N9O2Z1bmN0aW9uIFUodCxlKXtyZXR1cm4gZnVuY3Rpb24obil7dmFyIGkscixvLGE9W10scz0tMSxsPTAsYz10Lmxlbmd0aDtmb3IobiBpbnN0YW5jZW9mIERhdGV8fChuPW5ldyBEYXRlKCtuKSk7KytzPGM7KTM3PT09dC5jaGFyQ29kZUF0KHMpJiYoYS5wdXNoKHQuc2xpY2UobCxzKSksbnVsbCE9KHI9ckNbaT10LmNoYXJBdCgrK3MpXSk/aT10LmNoYXJBdCgrK3MpOnI9ImUiPT09aT8iICI6IjAiLChvPWVbaV0pJiYoaT1vKG4scikpLGEucHVzaChpKSxsPXMrMSk7cmV0dXJuIGEucHVzaCh0LnNsaWNlKGwscykpLGEuam9pbigiIil9fWZ1bmN0aW9uIGoodCxlKXtyZXR1cm4gZnVuY3Rpb24obil7dmFyIGkscixvPVpUKDE5MDAsdm9pZCAwLDEpO2lmKEcobyx0LG4rPSIiLDApIT1uLmxlbmd0aClyZXR1cm4gbnVsbDtpZigiUSJpbiBvKXJldHVybiBuZXcgRGF0ZShvLlEpO2lmKCJzImluIG8pcmV0dXJuIG5ldyBEYXRlKDFlMypvLnMrKCJMImluIG8/by5MOjApKTtpZihlJiYhKCJaImluIG8pJiYoby5aPTApLCJwImluIG8mJihvLkg9by5IJTEyKzEyKm8ucCksdm9pZCAwPT09by5tJiYoby5tPSJxImluIG8/by5xOjApLCJWImluIG8pe2lmKG8uVjwxfHxvLlY+NTMpcmV0dXJuIG51bGw7InciaW4gb3x8KG8udz0xKSwiWiJpbiBvPyhyPShpPUtUKFpUKG8ueSwwLDEpKSkuZ2V0VVRDRGF5KCksaT1yPjR8fDA9PT1yP0xULmNlaWwoaSk6TFQoaSksaT1UVC5vZmZzZXQoaSw3KihvLlYtMSkpLG8ueT1pLmdldFVUQ0Z1bGxZZWFyKCksby5tPWkuZ2V0VVRDTW9udGgoKSxvLmQ9aS5nZXRVVENEYXRlKCkrKG8udys2KSU3KToocj0oaT0kVChaVChvLnksMCwxKSkpLmdldERheSgpLGk9cj40fHwwPT09cj90VC5jZWlsKGkpOnRUKGkpLGk9S0Uub2Zmc2V0KGksNyooby5WLTEpKSxvLnk9aS5nZXRGdWxsWWVhcigpLG8ubT1pLmdldE1vbnRoKCksby5kPWkuZ2V0RGF0ZSgpKyhvLncrNiklNyl9ZWxzZSgiVyJpbiBvfHwiVSJpbiBvKSYmKCJ3ImluIG98fChvLnc9InUiaW4gbz9vLnUlNzoiVyJpbiBvPzE6MCkscj0iWiJpbiBvP0tUKFpUKG8ueSwwLDEpKS5nZXRVVENEYXkoKTokVChaVChvLnksMCwxKSkuZ2V0RGF5KCksby5tPTAsby5kPSJXImluIG8/KG8udys2KSU3Kzcqby5XLShyKzUpJTc6by53Kzcqby5VLShyKzYpJTcpO3JldHVybiJaImluIG8/KG8uSCs9by5aLzEwMHwwLG8uTSs9by5aJTEwMCxLVChvKSk6JFQobyl9fWZ1bmN0aW9uIEcodCxlLG4saSl7Zm9yKHZhciByLG8sYT0wLHM9ZS5sZW5ndGgsbD1uLmxlbmd0aDthPHM7KXtpZihpPj1sKXJldHVybi0xO2lmKDM3PT09KHI9ZS5jaGFyQ29kZUF0KGErKykpKXtpZihyPWUuY2hhckF0KGErKyksIShvPUlbciBpbiByQz9lLmNoYXJBdChhKyspOnJdKXx8KGk9byh0LG4saSkpPDApcmV0dXJuLTF9ZWxzZSBpZihyIT1uLmNoYXJDb2RlQXQoaSsrKSlyZXR1cm4tMX1yZXR1cm4gaX1yZXR1cm4gdi54PVUobix2KSx2Llg9VShpLHYpLHYuYz1VKGUsdiksVC54PVUobixUKSxULlg9VShpLFQpLFQuYz1VKGUsVCkse2Zvcm1hdDpmdW5jdGlvbih0KXt2YXIgZT1VKHQrPSIiLHYpO3JldHVybiBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHR9LGV9LHBhcnNlOmZ1bmN0aW9uKHQpe3ZhciBlPWoodCs9IiIsITEpO3JldHVybiBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHR9LGV9LHV0Y0Zvcm1hdDpmdW5jdGlvbih0KXt2YXIgZT1VKHQrPSIiLFQpO3JldHVybiBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHR9LGV9LHV0Y1BhcnNlOmZ1bmN0aW9uKHQpe3ZhciBlPWoodCs9IiIsITApO3JldHVybiBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHR9LGV9fX12YXIgUVQsdEMsZUMsbkMsaUMsckM9eyItIjoiIixfOiIgIiwwOiIwIn0sb0M9L15ccypcZCsvLGFDPS9eJS8sc0M9L1tcXF4kKis/fFtcXSgpLnt9XS9nO2Z1bmN0aW9uIGxDKHQsZSxuKXt2YXIgaT10PDA/Ii0iOiIiLHI9KGk/LXQ6dCkrIiIsbz1yLmxlbmd0aDtyZXR1cm4gaSsobzxuP25ldyBBcnJheShuLW8rMSkuam9pbihlKStyOnIpfWZ1bmN0aW9uIGNDKHQpe3JldHVybiB0LnJlcGxhY2Uoc0MsIlxcJCYiKX1mdW5jdGlvbiB1Qyh0KXtyZXR1cm4gbmV3IFJlZ0V4cCgiXig/OiIrdC5tYXAoY0MpLmpvaW4oInwiKSsiKSIsImkiKX1mdW5jdGlvbiBoQyh0KXtmb3IodmFyIGU9e30sbj0tMSxpPXQubGVuZ3RoOysrbjxpOyllW3Rbbl0udG9Mb3dlckNhc2UoKV09bjtyZXR1cm4gZX1mdW5jdGlvbiBkQyh0LGUsbil7dmFyIGk9b0MuZXhlYyhlLnNsaWNlKG4sbisxKSk7cmV0dXJuIGk/KHQudz0raVswXSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBwQyh0LGUsbil7dmFyIGk9b0MuZXhlYyhlLnNsaWNlKG4sbisxKSk7cmV0dXJuIGk/KHQudT0raVswXSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBmQyh0LGUsbil7dmFyIGk9b0MuZXhlYyhlLnNsaWNlKG4sbisyKSk7cmV0dXJuIGk/KHQuVT0raVswXSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBtQyh0LGUsbil7dmFyIGk9b0MuZXhlYyhlLnNsaWNlKG4sbisyKSk7cmV0dXJuIGk/KHQuVj0raVswXSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBnQyh0LGUsbil7dmFyIGk9b0MuZXhlYyhlLnNsaWNlKG4sbisyKSk7cmV0dXJuIGk/KHQuVz0raVswXSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBfQyh0LGUsbil7dmFyIGk9b0MuZXhlYyhlLnNsaWNlKG4sbis0KSk7cmV0dXJuIGk/KHQueT0raVswXSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiB5Qyh0LGUsbil7dmFyIGk9b0MuZXhlYyhlLnNsaWNlKG4sbisyKSk7cmV0dXJuIGk/KHQueT0raVswXSsoK2lbMF0+Njg/MTkwMDoyZTMpLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIHZDKHQsZSxuKXt2YXIgaT0vXihaKXwoWystXVxkXGQpKD86Oj8oXGRcZCkpPy8uZXhlYyhlLnNsaWNlKG4sbis2KSk7cmV0dXJuIGk/KHQuWj1pWzFdPzA6LShpWzJdKyhpWzNdfHwiMDAiKSksbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gYkModCxlLG4pe3ZhciBpPW9DLmV4ZWMoZS5zbGljZShuLG4rMSkpO3JldHVybiBpPyh0LnE9MyppWzBdLTMsbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24geEModCxlLG4pe3ZhciBpPW9DLmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiBpPyh0Lm09aVswXS0xLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIHdDKHQsZSxuKXt2YXIgaT1vQy5leGVjKGUuc2xpY2UobixuKzIpKTtyZXR1cm4gaT8odC5kPStpWzBdLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIFNDKHQsZSxuKXt2YXIgaT1vQy5leGVjKGUuc2xpY2UobixuKzMpKTtyZXR1cm4gaT8odC5tPTAsdC5kPStpWzBdLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIE1DKHQsZSxuKXt2YXIgaT1vQy5leGVjKGUuc2xpY2UobixuKzIpKTtyZXR1cm4gaT8odC5IPStpWzBdLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIEVDKHQsZSxuKXt2YXIgaT1vQy5leGVjKGUuc2xpY2UobixuKzIpKTtyZXR1cm4gaT8odC5NPStpWzBdLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIFRDKHQsZSxuKXt2YXIgaT1vQy5leGVjKGUuc2xpY2UobixuKzIpKTtyZXR1cm4gaT8odC5TPStpWzBdLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIENDKHQsZSxuKXt2YXIgaT1vQy5leGVjKGUuc2xpY2UobixuKzMpKTtyZXR1cm4gaT8odC5MPStpWzBdLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIEFDKHQsZSxuKXt2YXIgaT1vQy5leGVjKGUuc2xpY2UobixuKzYpKTtyZXR1cm4gaT8odC5MPU1hdGguZmxvb3IoaVswXS8xZTMpLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIGtDKHQsZSxuKXt2YXIgaT1hQy5leGVjKGUuc2xpY2UobixuKzEpKTtyZXR1cm4gaT9uK2lbMF0ubGVuZ3RoOi0xfWZ1bmN0aW9uIExDKHQsZSxuKXt2YXIgaT1vQy5leGVjKGUuc2xpY2UobikpO3JldHVybiBpPyh0LlE9K2lbMF0sbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gUEModCxlLG4pe3ZhciBpPW9DLmV4ZWMoZS5zbGljZShuKSk7cmV0dXJuIGk/KHQucz0raVswXSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBOQyh0LGUpe3JldHVybiBsQyh0LmdldERhdGUoKSxlLDIpfWZ1bmN0aW9uIElDKHQsZSl7cmV0dXJuIGxDKHQuZ2V0SG91cnMoKSxlLDIpfWZ1bmN0aW9uIFJDKHQsZSl7cmV0dXJuIGxDKHQuZ2V0SG91cnMoKSUxMnx8MTIsZSwyKX1mdW5jdGlvbiBPQyh0LGUpe3JldHVybiBsQygxK0tFLmNvdW50KF9UKHQpLHQpLGUsMyl9ZnVuY3Rpb24gekModCxlKXtyZXR1cm4gbEModC5nZXRNaWxsaXNlY29uZHMoKSxlLDMpfWZ1bmN0aW9uIERDKHQsZSl7cmV0dXJuIHpDKHQsZSkrIjAwMCJ9ZnVuY3Rpb24gQkModCxlKXtyZXR1cm4gbEModC5nZXRNb250aCgpKzEsZSwyKX1mdW5jdGlvbiBIQyh0LGUpe3JldHVybiBsQyh0LmdldE1pbnV0ZXMoKSxlLDIpfWZ1bmN0aW9uIEZDKHQsZSl7cmV0dXJuIGxDKHQuZ2V0U2Vjb25kcygpLGUsMil9ZnVuY3Rpb24gVkModCl7dmFyIGU9dC5nZXREYXkoKTtyZXR1cm4gMD09PWU/NzplfWZ1bmN0aW9uIFVDKHQsZSl7cmV0dXJuIGxDKFFFLmNvdW50KF9UKHQpLTEsdCksZSwyKX1mdW5jdGlvbiBqQyh0KXt2YXIgZT10LmdldERheSgpO3JldHVybiBlPj00fHwwPT09ZT9pVCh0KTppVC5jZWlsKHQpfWZ1bmN0aW9uIEdDKHQsZSl7cmV0dXJuIHQ9akModCksbEMoaVQuY291bnQoX1QodCksdCkrKDQ9PT1fVCh0KS5nZXREYXkoKSksZSwyKX1mdW5jdGlvbiBXQyh0KXtyZXR1cm4gdC5nZXREYXkoKX1mdW5jdGlvbiBxQyh0LGUpe3JldHVybiBsQyh0VC5jb3VudChfVCh0KS0xLHQpLGUsMil9ZnVuY3Rpb24gWUModCxlKXtyZXR1cm4gbEModC5nZXRGdWxsWWVhcigpJTEwMCxlLDIpfWZ1bmN0aW9uIFhDKHQsZSl7cmV0dXJuIGxDKCh0PWpDKHQpKS5nZXRGdWxsWWVhcigpJTEwMCxlLDIpfWZ1bmN0aW9uICRDKHQsZSl7cmV0dXJuIGxDKHQuZ2V0RnVsbFllYXIoKSUxZTQsZSw0KX1mdW5jdGlvbiBLQyh0LGUpe3ZhciBuPXQuZ2V0RGF5KCk7cmV0dXJuIGxDKCh0PW4+PTR8fDA9PT1uP2lUKHQpOmlULmNlaWwodCkpLmdldEZ1bGxZZWFyKCklMWU0LGUsNCl9ZnVuY3Rpb24gWkModCl7dmFyIGU9dC5nZXRUaW1lem9uZU9mZnNldCgpO3JldHVybihlPjA/Ii0iOihlKj0tMSwiKyIpKStsQyhlLzYwfDAsIjAiLDIpK2xDKGUlNjAsIjAiLDIpfWZ1bmN0aW9uIEpDKHQsZSl7cmV0dXJuIGxDKHQuZ2V0VVRDRGF0ZSgpLGUsMil9ZnVuY3Rpb24gUUModCxlKXtyZXR1cm4gbEModC5nZXRVVENIb3VycygpLGUsMil9ZnVuY3Rpb24gdEEodCxlKXtyZXR1cm4gbEModC5nZXRVVENIb3VycygpJTEyfHwxMixlLDIpfWZ1bmN0aW9uIGVBKHQsZSl7cmV0dXJuIGxDKDErVFQuY291bnQoWVQodCksdCksZSwzKX1mdW5jdGlvbiBuQSh0LGUpe3JldHVybiBsQyh0LmdldFVUQ01pbGxpc2Vjb25kcygpLGUsMyl9ZnVuY3Rpb24gaUEodCxlKXtyZXR1cm4gbkEodCxlKSsiMDAwIn1mdW5jdGlvbiByQSh0LGUpe3JldHVybiBsQyh0LmdldFVUQ01vbnRoKCkrMSxlLDIpfWZ1bmN0aW9uIG9BKHQsZSl7cmV0dXJuIGxDKHQuZ2V0VVRDTWludXRlcygpLGUsMil9ZnVuY3Rpb24gYUEodCxlKXtyZXR1cm4gbEModC5nZXRVVENTZWNvbmRzKCksZSwyKX1mdW5jdGlvbiBzQSh0KXt2YXIgZT10LmdldFVUQ0RheSgpO3JldHVybiAwPT09ZT83OmV9ZnVuY3Rpb24gbEEodCxlKXtyZXR1cm4gbEMoa1QuY291bnQoWVQodCktMSx0KSxlLDIpfWZ1bmN0aW9uIGNBKHQpe3ZhciBlPXQuZ2V0VVRDRGF5KCk7cmV0dXJuIGU+PTR8fDA9PT1lP0lUKHQpOklULmNlaWwodCl9ZnVuY3Rpb24gdUEodCxlKXtyZXR1cm4gdD1jQSh0KSxsQyhJVC5jb3VudChZVCh0KSx0KSsoND09PVlUKHQpLmdldFVUQ0RheSgpKSxlLDIpfWZ1bmN0aW9uIGhBKHQpe3JldHVybiB0LmdldFVUQ0RheSgpfWZ1bmN0aW9uIGRBKHQsZSl7cmV0dXJuIGxDKExULmNvdW50KFlUKHQpLTEsdCksZSwyKX1mdW5jdGlvbiBwQSh0LGUpe3JldHVybiBsQyh0LmdldFVUQ0Z1bGxZZWFyKCklMTAwLGUsMil9ZnVuY3Rpb24gZkEodCxlKXtyZXR1cm4gbEMoKHQ9Y0EodCkpLmdldFVUQ0Z1bGxZZWFyKCklMTAwLGUsMil9ZnVuY3Rpb24gbUEodCxlKXtyZXR1cm4gbEModC5nZXRVVENGdWxsWWVhcigpJTFlNCxlLDQpfWZ1bmN0aW9uIGdBKHQsZSl7dmFyIG49dC5nZXRVVENEYXkoKTtyZXR1cm4gbEMoKHQ9bj49NHx8MD09PW4/SVQodCk6SVQuY2VpbCh0KSkuZ2V0VVRDRnVsbFllYXIoKSUxZTQsZSw0KX1mdW5jdGlvbiBfQSgpe3JldHVybiIrMDAwMCJ9ZnVuY3Rpb24geUEoKXtyZXR1cm4iJSJ9ZnVuY3Rpb24gdkEodCl7cmV0dXJuK3R9ZnVuY3Rpb24gYkEodCl7cmV0dXJuIE1hdGguZmxvb3IoK3QvMWUzKX1mdW5jdGlvbiB4QSh0KXtyZXR1cm4gUVQ9SlQodCksdEM9UVQuZm9ybWF0LGVDPVFULnBhcnNlLG5DPVFULnV0Y0Zvcm1hdCxpQz1RVC51dGNQYXJzZSxRVH14QSh7ZGF0ZVRpbWU6IiV4LCAlWCIsZGF0ZToiJS1tLyUtZC8lWSIsdGltZToiJS1JOiVNOiVTICVwIixwZXJpb2RzOlsiQU0iLCJQTSJdLGRheXM6WyJTdW5kYXkiLCJNb25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRheSJdLHNob3J0RGF5czpbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLG1vbnRoczpbIkphbnVhcnkiLCJGZWJydWFyeSIsIk1hcmNoIiwiQXByaWwiLCJNYXkiLCJKdW5lIiwiSnVseSIsIkF1Z3VzdCIsIlNlcHRlbWJlciIsIk9jdG9iZXIiLCJOb3ZlbWJlciIsIkRlY2VtYmVyIl0sc2hvcnRNb250aHM6WyJKYW4iLCJGZWIiLCJNYXIiLCJBcHIiLCJNYXkiLCJKdW4iLCJKdWwiLCJBdWciLCJTZXAiLCJPY3QiLCJOb3YiLCJEZWMiXX0pO3ZhciB3QT0iJVktJW0tJWRUJUg6JU06JVMuJUxaIjt2YXIgU0E9RGF0ZS5wcm90b3R5cGUudG9JU09TdHJpbmc/ZnVuY3Rpb24gTUEodCl7cmV0dXJuIHQudG9JU09TdHJpbmcoKX06bkMod0EpO3ZhciBFQT0rbmV3IERhdGUoIjIwMDAtMDEtMDFUMDA6MDA6MDAuMDAwWiIpP2Z1bmN0aW9uIFRBKHQpe3ZhciBlPW5ldyBEYXRlKHQpO3JldHVybiBpc05hTihlKT9udWxsOmV9OmlDKHdBKSxDQT0xZTMsQUE9NmU0LGtBPTM2ZTUsTEE9ODY0ZTUsUEE9MjU5MmU2LE5BPTMxNTM2ZTY7ZnVuY3Rpb24gSUEodCl7cmV0dXJuIG5ldyBEYXRlKHQpfWZ1bmN0aW9uIFJBKHQpe3JldHVybiB0IGluc3RhbmNlb2YgRGF0ZT8rdDorbmV3IERhdGUoK3QpfWZ1bmN0aW9uIE9BKHQsZSxuLGkscixvLGEscyxsKXt2YXIgYz1hRShRTSxRTSksdT1jLmludmVydCxoPWMuZG9tYWluLGQ9bCgiLiVMIikscD1sKCI6JVMiKSxmPWwoIiVJOiVNIiksbT1sKCIlSSAlcCIpLGc9bCgiJWEgJWQiKSxfPWwoIiViICVkIikseT1sKCIlQiIpLHY9bCgiJVkiKSxiPVtbYSwxLENBXSxbYSw1LDVlM10sW2EsMTUsMTVlM10sW2EsMzAsM2U0XSxbbywxLEFBXSxbbyw1LDNlNV0sW28sMTUsOWU1XSxbbywzMCwxOGU1XSxbciwxLGtBXSxbciwzLDEwOGU1XSxbciw2LDIxNmU1XSxbciwxMiw0MzJlNV0sW2ksMSxMQV0sW2ksMiwxNzI4ZTVdLFtuLDEsNjA0OGU1XSxbZSwxLFBBXSxbZSwzLDc3NzZlNl0sW3QsMSxOQV1dO2Z1bmN0aW9uIHgocyl7cmV0dXJuKGEocyk8cz9kOm8ocyk8cz9wOnIocyk8cz9mOmkocyk8cz9tOmUocyk8cz9uKHMpPHM/ZzpfOnQocyk8cz95OnYpKHMpfWZ1bmN0aW9uIHcoZSxuLGkscil7aWYobnVsbD09ZSYmKGU9MTApLCJudW1iZXIiPT10eXBlb2YgZSl7dmFyIG89TWF0aC5hYnMoaS1uKS9lLGE9T2woKGZ1bmN0aW9uKHQpe3JldHVybiB0WzJdfSkpLnJpZ2h0KGIsbyk7YT09PWIubGVuZ3RoPyhyPW5jKG4vTkEsaS9OQSxlKSxlPXQpOmE/KHI9KGE9YltvL2JbYS0xXVsyXTxiW2FdWzJdL28/YS0xOmFdKVsxXSxlPWFbMF0pOihyPU1hdGgubWF4KG5jKG4saSxlKSwxKSxlPXMpfXJldHVybiBudWxsPT1yP2U6ZS5ldmVyeShyKX1yZXR1cm4gYy5pbnZlcnQ9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBEYXRlKHUodCkpfSxjLmRvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9oKEdNLmNhbGwodCxSQSkpOmgoKS5tYXAoSUEpfSxjLnRpY2tzPWZ1bmN0aW9uKHQsZSl7dmFyIG4saT1oKCkscj1pWzBdLG89aVtpLmxlbmd0aC0xXSxhPW88cjtyZXR1cm4gYSYmKG49cixyPW8sbz1uKSxuPShuPXcodCxyLG8sZSkpP24ucmFuZ2UocixvKzEpOltdLGE/bi5yZXZlcnNlKCk6bn0sYy50aWNrRm9ybWF0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG51bGw9PWU/eDpsKGUpfSxjLm5pY2U9ZnVuY3Rpb24odCxlKXt2YXIgbj1oKCk7cmV0dXJuKHQ9dyh0LG5bMF0sbltuLmxlbmd0aC0xXSxlKSk/aCh1RShuLHQpKTpjfSxjLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gckUoYyxPQSh0LGUsbixpLHIsbyxhLHMsbCkpfSxjfWZ1bmN0aW9uIHpBKCl7cmV0dXJuIFZNLmFwcGx5KE9BKF9ULGZULFFFLEtFLFlFLEdFLFZFLElFLHRDKS5kb21haW4oW25ldyBEYXRlKDJlMywwLDEpLG5ldyBEYXRlKDJlMywwLDIpXSksYXJndW1lbnRzKX1mdW5jdGlvbiBEQSgpe3ZhciB0LGUsbixpLHIsbz0wLGE9MSxzPVFNLGw9ITE7ZnVuY3Rpb24gYyhlKXtyZXR1cm4gaXNOYU4oZT0rZSk/cjpzKDA9PT1uPy41OihlPShpKGUpLXQpKm4sbD9NYXRoLm1heCgwLE1hdGgubWluKDEsZSkpOmUpKX1yZXR1cm4gYy5kb21haW49ZnVuY3Rpb24ocil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9aShvPStyWzBdKSxlPWkoYT0rclsxXSksbj10PT09ZT8wOjEvKGUtdCksYyk6W28sYV19LGMuY2xhbXA9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9ISF0LGMpOmx9LGMuaW50ZXJwb2xhdG9yPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPXQsYyk6c30sYy51bmtub3duPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPXQsYyk6cn0sZnVuY3Rpb24ocil7cmV0dXJuIGk9cix0PXIobyksZT1yKGEpLG49dD09PWU/MDoxLyhlLXQpLGN9fWZ1bmN0aW9uIEJBKHQsZSl7cmV0dXJuIGUuZG9tYWluKHQuZG9tYWluKCkpLmludGVycG9sYXRvcih0LmludGVycG9sYXRvcigpKS5jbGFtcCh0LmNsYW1wKCkpLnVua25vd24odC51bmtub3duKCkpfWZ1bmN0aW9uIEhBKCl7dmFyIHQ9RUUoREEoKSk7cmV0dXJuIHQuY29weT1mdW5jdGlvbigpe3JldHVybiBCQSh0LEhBKCkpLmV4cG9uZW50KHQuZXhwb25lbnQoKSl9LFVNLmFwcGx5KHQsYXJndW1lbnRzKX1mdW5jdGlvbiBGQSgpe3ZhciB0LGUsbixpLHIsbyxhLHM9MCxsPS41LGM9MSx1PVFNLGg9ITE7ZnVuY3Rpb24gZCh0KXtyZXR1cm4gaXNOYU4odD0rdCk/YToodD0uNSsoKHQ9K28odCkpLWUpKih0PGU/aTpyKSx1KGg/TWF0aC5tYXgoMCxNYXRoLm1pbigxLHQpKTp0KSl9cmV0dXJuIGQuZG9tYWluPWZ1bmN0aW9uKGEpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PW8ocz0rYVswXSksZT1vKGw9K2FbMV0pLG49byhjPSthWzJdKSxpPXQ9PT1lPzA6LjUvKGUtdCkscj1lPT09bj8wOi41LyhuLWUpLGQpOltzLGwsY119LGQuY2xhbXA9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGg9ISF0LGQpOmh9LGQuaW50ZXJwb2xhdG9yPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PXQsZCk6dX0sZC51bmtub3duPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPXQsZCk6YX0sZnVuY3Rpb24oYSl7cmV0dXJuIG89YSx0PWEocyksZT1hKGwpLG49YShjKSxpPXQ9PT1lPzA6LjUvKGUtdCkscj1lPT09bj8wOi41LyhuLWUpLGR9fWZ1bmN0aW9uIFZBKCl7dmFyIHQ9RUUoRkEoKSk7cmV0dXJuIHQuY29weT1mdW5jdGlvbigpe3JldHVybiBCQSh0LFZBKCkpLmV4cG9uZW50KHQuZXhwb25lbnQoKSl9LFVNLmFwcGx5KHQsYXJndW1lbnRzKX1mdW5jdGlvbiBVQSh0KXtmb3IodmFyIGU9dC5sZW5ndGgvNnwwLG49bmV3IEFycmF5KGUpLGk9MDtpPGU7KW5baV09IiMiK3Quc2xpY2UoNippLDYqKytpKTtyZXR1cm4gbn12YXIgakE9VUEoIjFmNzdiNGZmN2YwZTJjYTAyY2Q2MjcyODk0NjdiZDhjNTY0YmUzNzdjMjdmN2Y3ZmJjYmQyMjE3YmVjZiIpLEdBPVVBKCI3ZmM5N2ZiZWFlZDRmZGMwODZmZmZmOTkzODZjYjBmMDAyN2ZiZjViMTc2NjY2NjYiKSxXQT1VQSgiMWI5ZTc3ZDk1ZjAyNzU3MGIzZTcyOThhNjZhNjFlZTZhYjAyYTY3NjFkNjY2NjY2IikscUE9VUEoImE2Y2VlMzFmNzhiNGIyZGY4YTMzYTAyY2ZiOWE5OWUzMWExY2ZkYmY2ZmZmN2YwMGNhYjJkNjZhM2Q5YWZmZmY5OWIxNTkyOCIpLFlBPVVBKCJmYmI0YWViM2NkZTNjY2ViYzVkZWNiZTRmZWQ5YTZmZmZmY2NlNWQ4YmRmZGRhZWNmMmYyZjIiKSxYQT1VQSgiYjNlMmNkZmRjZGFjY2JkNWU4ZjRjYWU0ZTZmNWM5ZmZmMmFlZjFlMmNjY2NjY2NjIiksJEE9VUEoImU0MWExYzM3N2ViODRkYWY0YTk4NGVhM2ZmN2YwMGZmZmYzM2E2NTYyOGY3ODFiZjk5OTk5OSIpLEtBPVVBKCI2NmMyYTVmYzhkNjI4ZGEwY2JlNzhhYzNhNmQ4NTRmZmQ5MmZlNWM0OTRiM2IzYjMiKSxaQT1VQSgiOGRkM2M3ZmZmZmIzYmViYWRhZmI4MDcyODBiMWQzZmRiNDYyYjNkZTY5ZmNjZGU1ZDlkOWQ5YmM4MGJkY2NlYmM1ZmZlZDZmIiksSkE9VUEoIjRlNzlhN2YyOGUyY2UxNTc1OTc2YjdiMjU5YTE0ZmVkYzk0OWFmN2FhMWZmOWRhNzljNzU1ZmJhYjBhYiIpO2Z1bmN0aW9uIFFBKHQpe3JldHVybiBKZCh0W3QubGVuZ3RoLTFdKX12YXIgdGs9bmV3IEFycmF5KDMpLmNvbmNhdCgiZDhiMzY1ZjVmNWY1NWFiNGFjIiwiYTY2MTFhZGZjMjdkODBjZGMxMDE4NTcxIiwiYTY2MTFhZGZjMjdkZjVmNWY1ODBjZGMxMDE4NTcxIiwiOGM1MTBhZDhiMzY1ZjZlOGMzYzdlYWU1NWFiNGFjMDE2NjVlIiwiOGM1MTBhZDhiMzY1ZjZlOGMzZjVmNWY1YzdlYWU1NWFiNGFjMDE2NjVlIiwiOGM1MTBhYmY4MTJkZGZjMjdkZjZlOGMzYzdlYWU1ODBjZGMxMzU5NzhmMDE2NjVlIiwiOGM1MTBhYmY4MTJkZGZjMjdkZjZlOGMzZjVmNWY1YzdlYWU1ODBjZGMxMzU5NzhmMDE2NjVlIiwiNTQzMDA1OGM1MTBhYmY4MTJkZGZjMjdkZjZlOGMzYzdlYWU1ODBjZGMxMzU5NzhmMDE2NjVlMDAzYzMwIiwiNTQzMDA1OGM1MTBhYmY4MTJkZGZjMjdkZjZlOGMzZjVmNWY1YzdlYWU1ODBjZGMxMzU5NzhmMDE2NjVlMDAzYzMwIikubWFwKFVBKSxlaz1RQSh0ayksbms9bmV3IEFycmF5KDMpLmNvbmNhdCgiYWY4ZGMzZjdmN2Y3N2ZiZjdiIiwiN2IzMjk0YzJhNWNmYTZkYmEwMDA4ODM3IiwiN2IzMjk0YzJhNWNmZjdmN2Y3YTZkYmEwMDA4ODM3IiwiNzYyYTgzYWY4ZGMzZTdkNGU4ZDlmMGQzN2ZiZjdiMWI3ODM3IiwiNzYyYTgzYWY4ZGMzZTdkNGU4ZjdmN2Y3ZDlmMGQzN2ZiZjdiMWI3ODM3IiwiNzYyYTgzOTk3MGFiYzJhNWNmZTdkNGU4ZDlmMGQzYTZkYmEwNWFhZTYxMWI3ODM3IiwiNzYyYTgzOTk3MGFiYzJhNWNmZTdkNGU4ZjdmN2Y3ZDlmMGQzYTZkYmEwNWFhZTYxMWI3ODM3IiwiNDAwMDRiNzYyYTgzOTk3MGFiYzJhNWNmZTdkNGU4ZDlmMGQzYTZkYmEwNWFhZTYxMWI3ODM3MDA0NDFiIiwiNDAwMDRiNzYyYTgzOTk3MGFiYzJhNWNmZTdkNGU4ZjdmN2Y3ZDlmMGQzYTZkYmEwNWFhZTYxMWI3ODM3MDA0NDFiIikubWFwKFVBKSxpaz1RQShuaykscms9bmV3IEFycmF5KDMpLmNvbmNhdCgiZTlhM2M5ZjdmN2Y3YTFkNzZhIiwiZDAxYzhiZjFiNmRhYjhlMTg2NGRhYzI2IiwiZDAxYzhiZjFiNmRhZjdmN2Y3YjhlMTg2NGRhYzI2IiwiYzUxYjdkZTlhM2M5ZmRlMGVmZTZmNWQwYTFkNzZhNGQ5MjIxIiwiYzUxYjdkZTlhM2M5ZmRlMGVmZjdmN2Y3ZTZmNWQwYTFkNzZhNGQ5MjIxIiwiYzUxYjdkZGU3N2FlZjFiNmRhZmRlMGVmZTZmNWQwYjhlMTg2N2ZiYzQxNGQ5MjIxIiwiYzUxYjdkZGU3N2FlZjFiNmRhZmRlMGVmZjdmN2Y3ZTZmNWQwYjhlMTg2N2ZiYzQxNGQ5MjIxIiwiOGUwMTUyYzUxYjdkZGU3N2FlZjFiNmRhZmRlMGVmZTZmNWQwYjhlMTg2N2ZiYzQxNGQ5MjIxMjc2NDE5IiwiOGUwMTUyYzUxYjdkZGU3N2FlZjFiNmRhZmRlMGVmZjdmN2Y3ZTZmNWQwYjhlMTg2N2ZiYzQxNGQ5MjIxMjc2NDE5IikubWFwKFVBKSxvaz1RQShyayksYWs9bmV3IEFycmF5KDMpLmNvbmNhdCgiOTk4ZWMzZjdmN2Y3ZjFhMzQwIiwiNWUzYzk5YjJhYmQyZmRiODYzZTY2MTAxIiwiNWUzYzk5YjJhYmQyZjdmN2Y3ZmRiODYzZTY2MTAxIiwiNTQyNzg4OTk4ZWMzZDhkYWViZmVlMGI2ZjFhMzQwYjM1ODA2IiwiNTQyNzg4OTk4ZWMzZDhkYWViZjdmN2Y3ZmVlMGI2ZjFhMzQwYjM1ODA2IiwiNTQyNzg4ODA3M2FjYjJhYmQyZDhkYWViZmVlMGI2ZmRiODYzZTA4MjE0YjM1ODA2IiwiNTQyNzg4ODA3M2FjYjJhYmQyZDhkYWViZjdmN2Y3ZmVlMGI2ZmRiODYzZTA4MjE0YjM1ODA2IiwiMmQwMDRiNTQyNzg4ODA3M2FjYjJhYmQyZDhkYWViZmVlMGI2ZmRiODYzZTA4MjE0YjM1ODA2N2YzYjA4IiwiMmQwMDRiNTQyNzg4ODA3M2FjYjJhYmQyZDhkYWViZjdmN2Y3ZmVlMGI2ZmRiODYzZTA4MjE0YjM1ODA2N2YzYjA4IikubWFwKFVBKSxzaz1RQShhayksbGs9bmV3IEFycmF5KDMpLmNvbmNhdCgiZWY4YTYyZjdmN2Y3NjdhOWNmIiwiY2EwMDIwZjRhNTgyOTJjNWRlMDU3MWIwIiwiY2EwMDIwZjRhNTgyZjdmN2Y3OTJjNWRlMDU3MWIwIiwiYjIxODJiZWY4YTYyZmRkYmM3ZDFlNWYwNjdhOWNmMjE2NmFjIiwiYjIxODJiZWY4YTYyZmRkYmM3ZjdmN2Y3ZDFlNWYwNjdhOWNmMjE2NmFjIiwiYjIxODJiZDY2MDRkZjRhNTgyZmRkYmM3ZDFlNWYwOTJjNWRlNDM5M2MzMjE2NmFjIiwiYjIxODJiZDY2MDRkZjRhNTgyZmRkYmM3ZjdmN2Y3ZDFlNWYwOTJjNWRlNDM5M2MzMjE2NmFjIiwiNjcwMDFmYjIxODJiZDY2MDRkZjRhNTgyZmRkYmM3ZDFlNWYwOTJjNWRlNDM5M2MzMjE2NmFjMDUzMDYxIiwiNjcwMDFmYjIxODJiZDY2MDRkZjRhNTgyZmRkYmM3ZjdmN2Y3ZDFlNWYwOTJjNWRlNDM5M2MzMjE2NmFjMDUzMDYxIikubWFwKFVBKSxjaz1RQShsayksdWs9bmV3IEFycmF5KDMpLmNvbmNhdCgiZWY4YTYyZmZmZmZmOTk5OTk5IiwiY2EwMDIwZjRhNTgyYmFiYWJhNDA0MDQwIiwiY2EwMDIwZjRhNTgyZmZmZmZmYmFiYWJhNDA0MDQwIiwiYjIxODJiZWY4YTYyZmRkYmM3ZTBlMGUwOTk5OTk5NGQ0ZDRkIiwiYjIxODJiZWY4YTYyZmRkYmM3ZmZmZmZmZTBlMGUwOTk5OTk5NGQ0ZDRkIiwiYjIxODJiZDY2MDRkZjRhNTgyZmRkYmM3ZTBlMGUwYmFiYWJhODc4Nzg3NGQ0ZDRkIiwiYjIxODJiZDY2MDRkZjRhNTgyZmRkYmM3ZmZmZmZmZTBlMGUwYmFiYWJhODc4Nzg3NGQ0ZDRkIiwiNjcwMDFmYjIxODJiZDY2MDRkZjRhNTgyZmRkYmM3ZTBlMGUwYmFiYWJhODc4Nzg3NGQ0ZDRkMWExYTFhIiwiNjcwMDFmYjIxODJiZDY2MDRkZjRhNTgyZmRkYmM3ZmZmZmZmZTBlMGUwYmFiYWJhODc4Nzg3NGQ0ZDRkMWExYTFhIikubWFwKFVBKSxoaz1RQSh1ayksZGs9bmV3IEFycmF5KDMpLmNvbmNhdCgiZmM4ZDU5ZmZmZmJmOTFiZmRiIiwiZDcxOTFjZmRhZTYxYWJkOWU5MmM3YmI2IiwiZDcxOTFjZmRhZTYxZmZmZmJmYWJkOWU5MmM3YmI2IiwiZDczMDI3ZmM4ZDU5ZmVlMDkwZTBmM2Y4OTFiZmRiNDU3NWI0IiwiZDczMDI3ZmM4ZDU5ZmVlMDkwZmZmZmJmZTBmM2Y4OTFiZmRiNDU3NWI0IiwiZDczMDI3ZjQ2ZDQzZmRhZTYxZmVlMDkwZTBmM2Y4YWJkOWU5NzRhZGQxNDU3NWI0IiwiZDczMDI3ZjQ2ZDQzZmRhZTYxZmVlMDkwZmZmZmJmZTBmM2Y4YWJkOWU5NzRhZGQxNDU3NWI0IiwiYTUwMDI2ZDczMDI3ZjQ2ZDQzZmRhZTYxZmVlMDkwZTBmM2Y4YWJkOWU5NzRhZGQxNDU3NWI0MzEzNjk1IiwiYTUwMDI2ZDczMDI3ZjQ2ZDQzZmRhZTYxZmVlMDkwZmZmZmJmZTBmM2Y4YWJkOWU5NzRhZGQxNDU3NWI0MzEzNjk1IikubWFwKFVBKSxwaz1RQShkayksZms9bmV3IEFycmF5KDMpLmNvbmNhdCgiZmM4ZDU5ZmZmZmJmOTFjZjYwIiwiZDcxOTFjZmRhZTYxYTZkOTZhMWE5NjQxIiwiZDcxOTFjZmRhZTYxZmZmZmJmYTZkOTZhMWE5NjQxIiwiZDczMDI3ZmM4ZDU5ZmVlMDhiZDllZjhiOTFjZjYwMWE5ODUwIiwiZDczMDI3ZmM4ZDU5ZmVlMDhiZmZmZmJmZDllZjhiOTFjZjYwMWE5ODUwIiwiZDczMDI3ZjQ2ZDQzZmRhZTYxZmVlMDhiZDllZjhiYTZkOTZhNjZiZDYzMWE5ODUwIiwiZDczMDI3ZjQ2ZDQzZmRhZTYxZmVlMDhiZmZmZmJmZDllZjhiYTZkOTZhNjZiZDYzMWE5ODUwIiwiYTUwMDI2ZDczMDI3ZjQ2ZDQzZmRhZTYxZmVlMDhiZDllZjhiYTZkOTZhNjZiZDYzMWE5ODUwMDA2ODM3IiwiYTUwMDI2ZDczMDI3ZjQ2ZDQzZmRhZTYxZmVlMDhiZmZmZmJmZDllZjhiYTZkOTZhNjZiZDYzMWE5ODUwMDA2ODM3IikubWFwKFVBKSxtaz1RQShmayksZ2s9bmV3IEFycmF5KDMpLmNvbmNhdCgiZmM4ZDU5ZmZmZmJmOTlkNTk0IiwiZDcxOTFjZmRhZTYxYWJkZGE0MmI4M2JhIiwiZDcxOTFjZmRhZTYxZmZmZmJmYWJkZGE0MmI4M2JhIiwiZDUzZTRmZmM4ZDU5ZmVlMDhiZTZmNTk4OTlkNTk0MzI4OGJkIiwiZDUzZTRmZmM4ZDU5ZmVlMDhiZmZmZmJmZTZmNTk4OTlkNTk0MzI4OGJkIiwiZDUzZTRmZjQ2ZDQzZmRhZTYxZmVlMDhiZTZmNTk4YWJkZGE0NjZjMmE1MzI4OGJkIiwiZDUzZTRmZjQ2ZDQzZmRhZTYxZmVlMDhiZmZmZmJmZTZmNTk4YWJkZGE0NjZjMmE1MzI4OGJkIiwiOWUwMTQyZDUzZTRmZjQ2ZDQzZmRhZTYxZmVlMDhiZTZmNTk4YWJkZGE0NjZjMmE1MzI4OGJkNWU0ZmEyIiwiOWUwMTQyZDUzZTRmZjQ2ZDQzZmRhZTYxZmVlMDhiZmZmZmJmZTZmNTk4YWJkZGE0NjZjMmE1MzI4OGJkNWU0ZmEyIikubWFwKFVBKSxfaz1RQShnaykseWs9bmV3IEFycmF5KDMpLmNvbmNhdCgiZTVmNWY5OTlkOGM5MmNhMjVmIiwiZWRmOGZiYjJlMmUyNjZjMmE0MjM4YjQ1IiwiZWRmOGZiYjJlMmUyNjZjMmE0MmNhMjVmMDA2ZDJjIiwiZWRmOGZiY2NlY2U2OTlkOGM5NjZjMmE0MmNhMjVmMDA2ZDJjIiwiZWRmOGZiY2NlY2U2OTlkOGM5NjZjMmE0NDFhZTc2MjM4YjQ1MDA1ODI0IiwiZjdmY2ZkZTVmNWY5Y2NlY2U2OTlkOGM5NjZjMmE0NDFhZTc2MjM4YjQ1MDA1ODI0IiwiZjdmY2ZkZTVmNWY5Y2NlY2U2OTlkOGM5NjZjMmE0NDFhZTc2MjM4YjQ1MDA2ZDJjMDA0NDFiIikubWFwKFVBKSx2az1RQSh5ayksYms9bmV3IEFycmF5KDMpLmNvbmNhdCgiZTBlY2Y0OWViY2RhODg1NmE3IiwiZWRmOGZiYjNjZGUzOGM5NmM2ODg0MTlkIiwiZWRmOGZiYjNjZGUzOGM5NmM2ODg1NmE3ODEwZjdjIiwiZWRmOGZiYmZkM2U2OWViY2RhOGM5NmM2ODg1NmE3ODEwZjdjIiwiZWRmOGZiYmZkM2U2OWViY2RhOGM5NmM2OGM2YmIxODg0MTlkNmUwMTZiIiwiZjdmY2ZkZTBlY2Y0YmZkM2U2OWViY2RhOGM5NmM2OGM2YmIxODg0MTlkNmUwMTZiIiwiZjdmY2ZkZTBlY2Y0YmZkM2U2OWViY2RhOGM5NmM2OGM2YmIxODg0MTlkODEwZjdjNGQwMDRiIikubWFwKFVBKSx4az1RQShiayksd2s9bmV3IEFycmF5KDMpLmNvbmNhdCgiZTBmM2RiYThkZGI1NDNhMmNhIiwiZjBmOWU4YmFlNGJjN2JjY2M0MmI4Y2JlIiwiZjBmOWU4YmFlNGJjN2JjY2M0NDNhMmNhMDg2OGFjIiwiZjBmOWU4Y2NlYmM1YThkZGI1N2JjY2M0NDNhMmNhMDg2OGFjIiwiZjBmOWU4Y2NlYmM1YThkZGI1N2JjY2M0NGViM2QzMmI4Y2JlMDg1ODllIiwiZjdmY2YwZTBmM2RiY2NlYmM1YThkZGI1N2JjY2M0NGViM2QzMmI4Y2JlMDg1ODllIiwiZjdmY2YwZTBmM2RiY2NlYmM1YThkZGI1N2JjY2M0NGViM2QzMmI4Y2JlMDg2OGFjMDg0MDgxIikubWFwKFVBKSxTaz1RQSh3ayksTWs9bmV3IEFycmF5KDMpLmNvbmNhdCgiZmVlOGM4ZmRiYjg0ZTM0YTMzIiwiZmVmMGQ5ZmRjYzhhZmM4ZDU5ZDczMDFmIiwiZmVmMGQ5ZmRjYzhhZmM4ZDU5ZTM0YTMzYjMwMDAwIiwiZmVmMGQ5ZmRkNDllZmRiYjg0ZmM4ZDU5ZTM0YTMzYjMwMDAwIiwiZmVmMGQ5ZmRkNDllZmRiYjg0ZmM4ZDU5ZWY2NTQ4ZDczMDFmOTkwMDAwIiwiZmZmN2VjZmVlOGM4ZmRkNDllZmRiYjg0ZmM4ZDU5ZWY2NTQ4ZDczMDFmOTkwMDAwIiwiZmZmN2VjZmVlOGM4ZmRkNDllZmRiYjg0ZmM4ZDU5ZWY2NTQ4ZDczMDFmYjMwMDAwN2YwMDAwIikubWFwKFVBKSxFaz1RQShNayksVGs9bmV3IEFycmF5KDMpLmNvbmNhdCgiZWNlMmYwYTZiZGRiMWM5MDk5IiwiZjZlZmY3YmRjOWUxNjdhOWNmMDI4MThhIiwiZjZlZmY3YmRjOWUxNjdhOWNmMWM5MDk5MDE2YzU5IiwiZjZlZmY3ZDBkMWU2YTZiZGRiNjdhOWNmMWM5MDk5MDE2YzU5IiwiZjZlZmY3ZDBkMWU2YTZiZGRiNjdhOWNmMzY5MGMwMDI4MThhMDE2NDUwIiwiZmZmN2ZiZWNlMmYwZDBkMWU2YTZiZGRiNjdhOWNmMzY5MGMwMDI4MThhMDE2NDUwIiwiZmZmN2ZiZWNlMmYwZDBkMWU2YTZiZGRiNjdhOWNmMzY5MGMwMDI4MThhMDE2YzU5MDE0NjM2IikubWFwKFVBKSxDaz1RQShUayksQWs9bmV3IEFycmF5KDMpLmNvbmNhdCgiZWNlN2YyYTZiZGRiMmI4Y2JlIiwiZjFlZWY2YmRjOWUxNzRhOWNmMDU3MGIwIiwiZjFlZWY2YmRjOWUxNzRhOWNmMmI4Y2JlMDQ1YThkIiwiZjFlZWY2ZDBkMWU2YTZiZGRiNzRhOWNmMmI4Y2JlMDQ1YThkIiwiZjFlZWY2ZDBkMWU2YTZiZGRiNzRhOWNmMzY5MGMwMDU3MGIwMDM0ZTdiIiwiZmZmN2ZiZWNlN2YyZDBkMWU2YTZiZGRiNzRhOWNmMzY5MGMwMDU3MGIwMDM0ZTdiIiwiZmZmN2ZiZWNlN2YyZDBkMWU2YTZiZGRiNzRhOWNmMzY5MGMwMDU3MGIwMDQ1YThkMDIzODU4IikubWFwKFVBKSxraz1RQShBayksTGs9bmV3IEFycmF5KDMpLmNvbmNhdCgiZTdlMWVmYzk5NGM3ZGQxYzc3IiwiZjFlZWY2ZDdiNWQ4ZGY2NWIwY2UxMjU2IiwiZjFlZWY2ZDdiNWQ4ZGY2NWIwZGQxYzc3OTgwMDQzIiwiZjFlZWY2ZDRiOWRhYzk5NGM3ZGY2NWIwZGQxYzc3OTgwMDQzIiwiZjFlZWY2ZDRiOWRhYzk5NGM3ZGY2NWIwZTcyOThhY2UxMjU2OTEwMDNmIiwiZjdmNGY5ZTdlMWVmZDRiOWRhYzk5NGM3ZGY2NWIwZTcyOThhY2UxMjU2OTEwMDNmIiwiZjdmNGY5ZTdlMWVmZDRiOWRhYzk5NGM3ZGY2NWIwZTcyOThhY2UxMjU2OTgwMDQzNjcwMDFmIikubWFwKFVBKSxQaz1RQShMayksTms9bmV3IEFycmF5KDMpLmNvbmNhdCgiZmRlMGRkZmE5ZmI1YzUxYjhhIiwiZmVlYmUyZmJiNGI5Zjc2OGExYWUwMTdlIiwiZmVlYmUyZmJiNGI5Zjc2OGExYzUxYjhhN2EwMTc3IiwiZmVlYmUyZmNjNWMwZmE5ZmI1Zjc2OGExYzUxYjhhN2EwMTc3IiwiZmVlYmUyZmNjNWMwZmE5ZmI1Zjc2OGExZGQzNDk3YWUwMTdlN2EwMTc3IiwiZmZmN2YzZmRlMGRkZmNjNWMwZmE5ZmI1Zjc2OGExZGQzNDk3YWUwMTdlN2EwMTc3IiwiZmZmN2YzZmRlMGRkZmNjNWMwZmE5ZmI1Zjc2OGExZGQzNDk3YWUwMTdlN2EwMTc3NDkwMDZhIikubWFwKFVBKSxJaz1RQShOayksUms9bmV3IEFycmF5KDMpLmNvbmNhdCgiZWRmOGIxN2ZjZGJiMmM3ZmI4IiwiZmZmZmNjYTFkYWI0NDFiNmM0MjI1ZWE4IiwiZmZmZmNjYTFkYWI0NDFiNmM0MmM3ZmI4MjUzNDk0IiwiZmZmZmNjYzdlOWI0N2ZjZGJiNDFiNmM0MmM3ZmI4MjUzNDk0IiwiZmZmZmNjYzdlOWI0N2ZjZGJiNDFiNmM0MWQ5MWMwMjI1ZWE4MGMyYzg0IiwiZmZmZmQ5ZWRmOGIxYzdlOWI0N2ZjZGJiNDFiNmM0MWQ5MWMwMjI1ZWE4MGMyYzg0IiwiZmZmZmQ5ZWRmOGIxYzdlOWI0N2ZjZGJiNDFiNmM0MWQ5MWMwMjI1ZWE4MjUzNDk0MDgxZDU4IikubWFwKFVBKSxPaz1RQShSayksems9bmV3IEFycmF5KDMpLmNvbmNhdCgiZjdmY2I5YWRkZDhlMzFhMzU0IiwiZmZmZmNjYzJlNjk5NzhjNjc5MjM4NDQzIiwiZmZmZmNjYzJlNjk5NzhjNjc5MzFhMzU0MDA2ODM3IiwiZmZmZmNjZDlmMGEzYWRkZDhlNzhjNjc5MzFhMzU0MDA2ODM3IiwiZmZmZmNjZDlmMGEzYWRkZDhlNzhjNjc5NDFhYjVkMjM4NDQzMDA1YTMyIiwiZmZmZmU1ZjdmY2I5ZDlmMGEzYWRkZDhlNzhjNjc5NDFhYjVkMjM4NDQzMDA1YTMyIiwiZmZmZmU1ZjdmY2I5ZDlmMGEzYWRkZDhlNzhjNjc5NDFhYjVkMjM4NDQzMDA2ODM3MDA0NTI5IikubWFwKFVBKSxEaz1RQSh6ayksQms9bmV3IEFycmF5KDMpLmNvbmNhdCgiZmZmN2JjZmVjNDRmZDk1ZjBlIiwiZmZmZmQ0ZmVkOThlZmU5OTI5Y2M0YzAyIiwiZmZmZmQ0ZmVkOThlZmU5OTI5ZDk1ZjBlOTkzNDA0IiwiZmZmZmQ0ZmVlMzkxZmVjNDRmZmU5OTI5ZDk1ZjBlOTkzNDA0IiwiZmZmZmQ0ZmVlMzkxZmVjNDRmZmU5OTI5ZWM3MDE0Y2M0YzAyOGMyZDA0IiwiZmZmZmU1ZmZmN2JjZmVlMzkxZmVjNDRmZmU5OTI5ZWM3MDE0Y2M0YzAyOGMyZDA0IiwiZmZmZmU1ZmZmN2JjZmVlMzkxZmVjNDRmZmU5OTI5ZWM3MDE0Y2M0YzAyOTkzNDA0NjYyNTA2IikubWFwKFVBKSxIaz1RQShCayksRms9bmV3IEFycmF5KDMpLmNvbmNhdCgiZmZlZGEwZmViMjRjZjAzYjIwIiwiZmZmZmIyZmVjYzVjZmQ4ZDNjZTMxYTFjIiwiZmZmZmIyZmVjYzVjZmQ4ZDNjZjAzYjIwYmQwMDI2IiwiZmZmZmIyZmVkOTc2ZmViMjRjZmQ4ZDNjZjAzYjIwYmQwMDI2IiwiZmZmZmIyZmVkOTc2ZmViMjRjZmQ4ZDNjZmM0ZTJhZTMxYTFjYjEwMDI2IiwiZmZmZmNjZmZlZGEwZmVkOTc2ZmViMjRjZmQ4ZDNjZmM0ZTJhZTMxYTFjYjEwMDI2IiwiZmZmZmNjZmZlZGEwZmVkOTc2ZmViMjRjZmQ4ZDNjZmM0ZTJhZTMxYTFjYmQwMDI2ODAwMDI2IikubWFwKFVBKSxWaz1RQShGayksVWs9bmV3IEFycmF5KDMpLmNvbmNhdCgiZGVlYmY3OWVjYWUxMzE4MmJkIiwiZWZmM2ZmYmRkN2U3NmJhZWQ2MjE3MWI1IiwiZWZmM2ZmYmRkN2U3NmJhZWQ2MzE4MmJkMDg1MTljIiwiZWZmM2ZmYzZkYmVmOWVjYWUxNmJhZWQ2MzE4MmJkMDg1MTljIiwiZWZmM2ZmYzZkYmVmOWVjYWUxNmJhZWQ2NDI5MmM2MjE3MWI1MDg0NTk0IiwiZjdmYmZmZGVlYmY3YzZkYmVmOWVjYWUxNmJhZWQ2NDI5MmM2MjE3MWI1MDg0NTk0IiwiZjdmYmZmZGVlYmY3YzZkYmVmOWVjYWUxNmJhZWQ2NDI5MmM2MjE3MWI1MDg1MTljMDgzMDZiIikubWFwKFVBKSxqaz1RQShVayksR2s9bmV3IEFycmF5KDMpLmNvbmNhdCgiZTVmNWUwYTFkOTliMzFhMzU0IiwiZWRmOGU5YmFlNGIzNzRjNDc2MjM4YjQ1IiwiZWRmOGU5YmFlNGIzNzRjNDc2MzFhMzU0MDA2ZDJjIiwiZWRmOGU5YzdlOWMwYTFkOTliNzRjNDc2MzFhMzU0MDA2ZDJjIiwiZWRmOGU5YzdlOWMwYTFkOTliNzRjNDc2NDFhYjVkMjM4YjQ1MDA1YTMyIiwiZjdmY2Y1ZTVmNWUwYzdlOWMwYTFkOTliNzRjNDc2NDFhYjVkMjM4YjQ1MDA1YTMyIiwiZjdmY2Y1ZTVmNWUwYzdlOWMwYTFkOTliNzRjNDc2NDFhYjVkMjM4YjQ1MDA2ZDJjMDA0NDFiIikubWFwKFVBKSxXaz1RQShHaykscWs9bmV3IEFycmF5KDMpLmNvbmNhdCgiZjBmMGYwYmRiZGJkNjM2MzYzIiwiZjdmN2Y3Y2NjY2NjOTY5Njk2NTI1MjUyIiwiZjdmN2Y3Y2NjY2NjOTY5Njk2NjM2MzYzMjUyNTI1IiwiZjdmN2Y3ZDlkOWQ5YmRiZGJkOTY5Njk2NjM2MzYzMjUyNTI1IiwiZjdmN2Y3ZDlkOWQ5YmRiZGJkOTY5Njk2NzM3MzczNTI1MjUyMjUyNTI1IiwiZmZmZmZmZjBmMGYwZDlkOWQ5YmRiZGJkOTY5Njk2NzM3MzczNTI1MjUyMjUyNTI1IiwiZmZmZmZmZjBmMGYwZDlkOWQ5YmRiZGJkOTY5Njk2NzM3MzczNTI1MjUyMjUyNTI1MDAwMDAwIikubWFwKFVBKSxZaz1RQShxayksWGs9bmV3IEFycmF5KDMpLmNvbmNhdCgiZWZlZGY1YmNiZGRjNzU2YmIxIiwiZjJmMGY3Y2JjOWUyOWU5YWM4NmE1MWEzIiwiZjJmMGY3Y2JjOWUyOWU5YWM4NzU2YmIxNTQyNzhmIiwiZjJmMGY3ZGFkYWViYmNiZGRjOWU5YWM4NzU2YmIxNTQyNzhmIiwiZjJmMGY3ZGFkYWViYmNiZGRjOWU5YWM4ODA3ZGJhNmE1MWEzNGExNDg2IiwiZmNmYmZkZWZlZGY1ZGFkYWViYmNiZGRjOWU5YWM4ODA3ZGJhNmE1MWEzNGExNDg2IiwiZmNmYmZkZWZlZGY1ZGFkYWViYmNiZGRjOWU5YWM4ODA3ZGJhNmE1MWEzNTQyNzhmM2YwMDdkIikubWFwKFVBKSwkaz1RQShYayksS2s9bmV3IEFycmF5KDMpLmNvbmNhdCgiZmVlMGQyZmM5MjcyZGUyZDI2IiwiZmVlNWQ5ZmNhZTkxZmI2YTRhY2IxODFkIiwiZmVlNWQ5ZmNhZTkxZmI2YTRhZGUyZDI2YTUwZjE1IiwiZmVlNWQ5ZmNiYmExZmM5MjcyZmI2YTRhZGUyZDI2YTUwZjE1IiwiZmVlNWQ5ZmNiYmExZmM5MjcyZmI2YTRhZWYzYjJjY2IxODFkOTkwMDBkIiwiZmZmNWYwZmVlMGQyZmNiYmExZmM5MjcyZmI2YTRhZWYzYjJjY2IxODFkOTkwMDBkIiwiZmZmNWYwZmVlMGQyZmNiYmExZmM5MjcyZmI2YTRhZWYzYjJjY2IxODFkYTUwZjE1NjcwMDBkIikubWFwKFVBKSxaaz1RQShLayksSms9bmV3IEFycmF5KDMpLmNvbmNhdCgiZmVlNmNlZmRhZTZiZTY1NTBkIiwiZmVlZGRlZmRiZTg1ZmQ4ZDNjZDk0NzAxIiwiZmVlZGRlZmRiZTg1ZmQ4ZDNjZTY1NTBkYTYzNjAzIiwiZmVlZGRlZmRkMGEyZmRhZTZiZmQ4ZDNjZTY1NTBkYTYzNjAzIiwiZmVlZGRlZmRkMGEyZmRhZTZiZmQ4ZDNjZjE2OTEzZDk0ODAxOGMyZDA0IiwiZmZmNWViZmVlNmNlZmRkMGEyZmRhZTZiZmQ4ZDNjZjE2OTEzZDk0ODAxOGMyZDA0IiwiZmZmNWViZmVlNmNlZmRkMGEyZmRhZTZiZmQ4ZDNjZjE2OTEzZDk0ODAxYTYzNjAzN2YyNzA0IikubWFwKFVBKSxRaz1RQShKayk7dmFyIHRMPU9wKEZkKDMwMCwuNSwwKSxGZCgtMjQwLC41LDEpKSxlTD1PcChGZCgtMTAwLC43NSwuMzUpLEZkKDgwLDEuNSwuOCkpLG5MPU9wKEZkKDI2MCwuNzUsLjM1KSxGZCg4MCwxLjUsLjgpKSxpTD1GZCgpO3ZhciByTD1uZCgpLG9MPU1hdGguUEkvMyxhTD0yKk1hdGguUEkvMztmdW5jdGlvbiBzTCh0KXt2YXIgZT10Lmxlbmd0aDtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIHRbTWF0aC5tYXgoMCxNYXRoLm1pbihlLTEsTWF0aC5mbG9vcihuKmUpKSldfX12YXIgbEw9c0woVUEoIjQ0MDE1NDQ0MDI1NjQ1MDQ1NzQ1MDU1OTQ2MDc1YTQ2MDg1YzQ2MGE1ZDQ2MGI1ZTQ3MGQ2MDQ3MGU2MTQ3MTA2MzQ3MTE2NDQ3MTM2NTQ4MTQ2NzQ4MTY2ODQ4MTc2OTQ4MTg2YTQ4MWE2YzQ4MWI2ZDQ4MWM2ZTQ4MWQ2ZjQ4MWY3MDQ4MjA3MTQ4MjE3MzQ4MjM3NDQ4MjQ3NTQ4MjU3NjQ4MjY3NzQ4Mjg3ODQ4Mjk3OTQ3MmE3YTQ3MmM3YTQ3MmQ3YjQ3MmU3YzQ3MmY3ZDQ2MzA3ZTQ2MzI3ZTQ2MzM3ZjQ2MzQ4MDQ1MzU4MTQ1Mzc4MTQ1Mzg4MjQ0Mzk4MzQ0M2E4MzQ0M2I4NDQzM2Q4NDQzM2U4NTQyM2Y4NTQyNDA4NjQyNDE4NjQxNDI4NzQxNDQ4NzQwNDU4ODQwNDY4ODNmNDc4ODNmNDg4OTNlNDk4OTNlNGE4OTNlNGM4YTNkNGQ4YTNkNGU4YTNjNGY4YTNjNTA4YjNiNTE4YjNiNTI4YjNhNTM4YjNhNTQ4YzM5NTU4YzM5NTY4YzM4NTg4YzM4NTk4YzM3NWE4YzM3NWI4ZDM2NWM4ZDM2NWQ4ZDM1NWU4ZDM1NWY4ZDM0NjA4ZDM0NjE4ZDMzNjI4ZDMzNjM4ZDMyNjQ4ZTMyNjU4ZTMxNjY4ZTMxNjc4ZTMxNjg4ZTMwNjk4ZTMwNmE4ZTJmNmI4ZTJmNmM4ZTJlNmQ4ZTJlNmU4ZTJlNmY4ZTJkNzA4ZTJkNzE4ZTJjNzE4ZTJjNzI4ZTJjNzM4ZTJiNzQ4ZTJiNzU4ZTJhNzY4ZTJhNzc4ZTJhNzg4ZTI5Nzk4ZTI5N2E4ZTI5N2I4ZTI4N2M4ZTI4N2Q4ZTI3N2U4ZTI3N2Y4ZTI3ODA4ZTI2ODE4ZTI2ODI4ZTI2ODI4ZTI1ODM4ZTI1ODQ4ZTI1ODU4ZTI0ODY4ZTI0ODc4ZTIzODg4ZTIzODk4ZTIzOGE4ZDIyOGI4ZDIyOGM4ZDIyOGQ4ZDIxOGU4ZDIxOGY4ZDIxOTA4ZDIxOTE4YzIwOTI4YzIwOTI4YzIwOTM4YzFmOTQ4YzFmOTU4YjFmOTY4YjFmOTc4YjFmOTg4YjFmOTk4YTFmOWE4YTFlOWI4YTFlOWM4OTFlOWQ4OTFmOWU4OTFmOWY4ODFmYTA4ODFmYTE4ODFmYTE4NzFmYTI4NzIwYTM4NjIwYTQ4NjIxYTU4NTIxYTY4NTIyYTc4NTIyYTg4NDIzYTk4MzI0YWE4MzI1YWI4MjI1YWM4MjI2YWQ4MTI3YWQ4MTI4YWU4MDI5YWY3ZjJhYjA3ZjJjYjE3ZTJkYjI3ZDJlYjM3YzJmYjQ3YzMxYjU3YjMyYjY3YTM0YjY3OTM1Yjc3OTM3Yjg3ODM4Yjk3NzNhYmE3NjNiYmI3NTNkYmM3NDNmYmM3MzQwYmQ3MjQyYmU3MTQ0YmY3MDQ2YzA2ZjQ4YzE2ZTRhYzE2ZDRjYzI2YzRlYzM2YjUwYzQ2YTUyYzU2OTU0YzU2ODU2YzY2NzU4Yzc2NTVhYzg2NDVjYzg2MzVlYzk2MjYwY2E2MDYzY2I1ZjY1Y2I1ZTY3Y2M1YzY5Y2Q1YjZjY2Q1YTZlY2U1ODcwY2Y1NzczZDA1Njc1ZDA1NDc3ZDE1MzdhZDE1MTdjZDI1MDdmZDM0ZTgxZDM0ZDg0ZDQ0Yjg2ZDU0OTg5ZDU0ODhiZDY0NjhlZDY0NTkwZDc0MzkzZDc0MTk1ZDg0MDk4ZDgzZTliZDkzYzlkZDkzYmEwZGEzOWEyZGEzN2E1ZGIzNmE4ZGIzNGFhZGMzMmFkZGMzMGIwZGQyZmIyZGQyZGI1ZGUyYmI4ZGUyOWJhZGUyOGJkZGYyNmMwZGYyNWMyZGYyM2M1ZTAyMWM4ZTAyMGNhZTExZmNkZTExZGQwZTExY2QyZTIxYmQ1ZTIxYWQ4ZTIxOWRhZTMxOWRkZTMxOGRmZTMxOGUyZTQxOGU1ZTQxOWU3ZTQxOWVhZTUxYWVjZTUxYmVmZTUxY2YxZTUxZGY0ZTYxZWY2ZTYyMGY4ZTYyMWZiZTcyM2ZkZTcyNSIpKSxjTD1zTChVQSgiMDAwMDA0MDEwMDA1MDEwMTA2MDEwMTA4MDIwMTA5MDIwMjBiMDIwMjBkMDMwMzBmMDMwMzEyMDQwNDE0MDUwNDE2MDYwNTE4MDYwNTFhMDcwNjFjMDgwNzFlMDkwNzIwMGEwODIyMGIwOTI0MGMwOTI2MGQwYTI5MGUwYjJiMTAwYjJkMTEwYzJmMTIwZDMxMTMwZDM0MTQwZTM2MTUwZTM4MTYwZjNiMTgwZjNkMTkxMDNmMWExMDQyMWMxMDQ0MWQxMTQ3MWUxMTQ5MjAxMTRiMjExMTRlMjIxMTUwMjQxMjUzMjUxMjU1MjcxMjU4MjkxMTVhMmExMTVjMmMxMTVmMmQxMTYxMmYxMTYzMzExMTY1MzMxMDY3MzQxMDY5MzYxMDZiMzgxMDZjMzkwZjZlM2IwZjcwM2QwZjcxM2YwZjcyNDAwZjc0NDIwZjc1NDQwZjc2NDUxMDc3NDcxMDc4NDkxMDc4NGExMDc5NGMxMTdhNGUxMTdiNGYxMjdiNTExMjdjNTIxMzdjNTQxMzdkNTYxNDdkNTcxNTdlNTkxNTdlNWExNjdlNWMxNjdmNWQxNzdmNWYxODdmNjAxODgwNjIxOTgwNjQxYTgwNjUxYTgwNjcxYjgwNjgxYzgxNmExYzgxNmIxZDgxNmQxZDgxNmUxZTgxNzAxZjgxNzIxZjgxNzMyMDgxNzUyMTgxNzYyMTgxNzgyMjgxNzkyMjgyN2IyMzgyN2MyMzgyN2UyNDgyODAyNTgyODEyNTgxODMyNjgxODQyNjgxODYyNzgxODgyNzgxODkyODgxOGIyOTgxOGMyOTgxOGUyYTgxOTAyYTgxOTEyYjgxOTMyYjgwOTQyYzgwOTYyYzgwOTgyZDgwOTkyZDgwOWIyZTdmOWMyZTdmOWUyZjdmYTAyZjdmYTEzMDdlYTMzMDdlYTUzMTdlYTYzMTdkYTgzMjdkYWEzMzdkYWIzMzdjYWQzNDdjYWUzNDdiYjAzNTdiYjIzNTdiYjMzNjdhYjUzNjdhYjczNzc5YjgzNzc5YmEzODc4YmMzOTc4YmQzOTc3YmYzYTc3YzAzYTc2YzIzYjc1YzQzYzc1YzUzYzc0YzczZDczYzgzZTczY2EzZTcyY2MzZjcxY2Q0MDcxY2Y0MDcwZDA0MTZmZDI0MjZmZDM0MzZlZDU0NDZkZDY0NTZjZDg0NTZjZDk0NjZiZGI0NzZhZGM0ODY5ZGU0OTY4ZGY0YTY4ZTA0YzY3ZTI0ZDY2ZTM0ZTY1ZTQ0ZjY0ZTU1MDY0ZTc1MjYzZTg1MzYyZTk1NDYyZWE1NjYxZWI1NzYwZWM1ODYwZWQ1YTVmZWU1YjVlZWY1ZDVlZjA1ZjVlZjE2MDVkZjI2MjVkZjI2NDVjZjM2NTVjZjQ2NzVjZjQ2OTVjZjU2YjVjZjY2YzVjZjY2ZTVjZjc3MDVjZjc3MjVjZjg3NDVjZjg3NjVjZjk3ODVkZjk3OTVkZjk3YjVkZmE3ZDVlZmE3ZjVlZmE4MTVmZmI4MzVmZmI4NTYwZmI4NzYxZmM4OTYxZmM4YTYyZmM4YzYzZmM4ZTY0ZmM5MDY1ZmQ5MjY2ZmQ5NDY3ZmQ5NjY4ZmQ5ODY5ZmQ5YTZhZmQ5YjZiZmU5ZDZjZmU5ZjZkZmVhMTZlZmVhMzZmZmVhNTcxZmVhNzcyZmVhOTczZmVhYTc0ZmVhYzc2ZmVhZTc3ZmViMDc4ZmViMjdhZmViNDdiZmViNjdjZmViNzdlZmViOTdmZmViYjgxZmViZDgyZmViZjg0ZmVjMTg1ZmVjMjg3ZmVjNDg4ZmVjNjhhZmVjODhjZmVjYThkZmVjYzhmZmVjZDkwZmVjZjkyZmVkMTk0ZmVkMzk1ZmVkNTk3ZmVkNzk5ZmVkODlhZmRkYTljZmRkYzllZmRkZWEwZmRlMGExZmRlMmEzZmRlM2E1ZmRlNWE3ZmRlN2E5ZmRlOWFhZmRlYmFjZmNlY2FlZmNlZWIwZmNmMGIyZmNmMmI0ZmNmNGI2ZmNmNmI4ZmNmN2I5ZmNmOWJiZmNmYmJkZmNmZGJmIikpLHVMPXNMKFVBKCIwMDAwMDQwMTAwMDUwMTAxMDYwMTAxMDgwMjAxMGEwMjAyMGMwMjAyMGUwMzAyMTAwNDAzMTIwNDAzMTQwNTA0MTcwNjA0MTkwNzA1MWIwODA1MWQwOTA2MWYwYTA3MjIwYjA3MjQwYzA4MjYwZDA4MjkwZTA5MmIxMDA5MmQxMTBhMzAxMjBhMzIxNDBiMzQxNTBiMzcxNjBiMzkxODBjM2MxOTBjM2UxYjBjNDExYzBjNDMxZTBjNDUxZjBjNDgyMTBjNGEyMzBjNGMyNDBjNGYyNjBjNTEyODBiNTMyOTBiNTUyYjBiNTcyZDBiNTkyZjBhNWIzMTBhNWMzMjBhNWUzNDBhNWYzNjA5NjEzODA5NjIzOTA5NjMzYjA5NjQzZDA5NjUzZTA5NjY0MDBhNjc0MjBhNjg0NDBhNjg0NTBhNjk0NzBiNmE0OTBiNmE0YTBjNmI0YzBjNmI0ZDBkNmM0ZjBkNmM1MTBlNmM1MjBlNmQ1NDBmNmQ1NTBmNmQ1NzEwNmU1OTEwNmU1YTExNmU1YzEyNmU1ZDEyNmU1ZjEzNmU2MTEzNmU2MjE0NmU2NDE1NmU2NTE1NmU2NzE2NmU2OTE2NmU2YTE3NmU2YzE4NmU2ZDE4NmU2ZjE5NmU3MTE5NmU3MjFhNmU3NDFhNmU3NTFiNmU3NzFjNmQ3ODFjNmQ3YTFkNmQ3YzFkNmQ3ZDFlNmQ3ZjFlNmM4MDFmNmM4MjIwNmM4NDIwNmI4NTIxNmI4NzIxNmI4ODIyNmE4YTIyNmE4YzIzNjk4ZDIzNjk4ZjI0Njk5MDI1Njg5MjI1Njg5MzI2Njc5NTI2Njc5NzI3NjY5ODI3NjY5YTI4NjU5YjI5NjQ5ZDI5NjQ5ZjJhNjNhMDJhNjNhMjJiNjJhMzJjNjFhNTJjNjBhNjJkNjBhODJlNWZhOTJlNWVhYjJmNWVhZDMwNWRhZTMwNWNiMDMxNWJiMTMyNWFiMzMyNWFiNDMzNTliNjM0NThiNzM1NTdiOTM1NTZiYTM2NTViYzM3NTRiZDM4NTNiZjM5NTJjMDNhNTFjMTNhNTBjMzNiNGZjNDNjNGVjNjNkNGRjNzNlNGNjODNmNGJjYTQwNGFjYjQxNDljYzQyNDhjZTQzNDdjZjQ0NDZkMDQ1NDVkMjQ2NDRkMzQ3NDNkNDQ4NDJkNTRhNDFkNzRiM2ZkODRjM2VkOTRkM2RkYTRlM2NkYjUwM2JkZDUxM2FkZTUyMzhkZjUzMzdlMDU1MzZlMTU2MzVlMjU3MzRlMzU5MzNlNDVhMzFlNTVjMzBlNjVkMmZlNzVlMmVlODYwMmRlOTYxMmJlYTYzMmFlYjY0MjllYjY2MjhlYzY3MjZlZDY5MjVlZTZhMjRlZjZjMjNlZjZlMjFmMDZmMjBmMTcxMWZmMTczMWRmMjc0MWNmMzc2MWJmMzc4MTlmNDc5MThmNTdiMTdmNTdkMTVmNjdlMTRmNjgwMTNmNzgyMTJmNzg0MTBmODg1MGZmODg3MGVmODg5MGNmOThiMGJmOThjMGFmOThlMDlmYTkwMDhmYTkyMDdmYTk0MDdmYjk2MDZmYjk3MDZmYjk5MDZmYjliMDZmYjlkMDdmYzlmMDdmY2ExMDhmY2EzMDlmY2E1MGFmY2E2MGNmY2E4MGRmY2FhMGZmY2FjMTFmY2FlMTJmY2IwMTRmY2IyMTZmY2I0MThmYmI2MWFmYmI4MWRmYmJhMWZmYmJjMjFmYmJlMjNmYWMwMjZmYWMyMjhmYWM0MmFmYWM2MmRmOWM3MmZmOWM5MzJmOWNiMzVmOGNkMzdmOGNmM2FmN2QxM2RmN2QzNDBmNmQ1NDNmNmQ3NDZmNWQ5NDlmNWRiNGNmNGRkNGZmNGRmNTNmNGUxNTZmM2UzNWFmM2U1NWRmMmU2NjFmMmU4NjVmMmVhNjlmMWVjNmRmMWVkNzFmMWVmNzVmMWYxNzlmMmYyN2RmMmY0ODJmM2Y1ODZmM2Y2OGFmNGY4OGVmNWY5OTJmNmZhOTZmOGZiOWFmOWZjOWRmYWZkYTFmY2ZmYTQiKSksaEw9c0woVUEoIjBkMDg4NzEwMDc4ODEzMDc4OTE2MDc4YTE5MDY4YzFiMDY4ZDFkMDY4ZTIwMDY4ZjIyMDY5MDI0MDY5MTI2MDU5MTI4MDU5MjJhMDU5MzJjMDU5NDJlMDU5NTJmMDU5NjMxMDU5NzMzMDU5NzM1MDQ5ODM3MDQ5OTM4MDQ5YTNhMDQ5YTNjMDQ5YjNlMDQ5YzNmMDQ5YzQxMDQ5ZDQzMDM5ZTQ0MDM5ZTQ2MDM5ZjQ4MDM5ZjQ5MDNhMDRiMDNhMTRjMDJhMTRlMDJhMjUwMDJhMjUxMDJhMzUzMDJhMzU1MDJhNDU2MDFhNDU4MDFhNDU5MDFhNTViMDFhNTVjMDFhNjVlMDFhNjYwMDFhNjYxMDBhNzYzMDBhNzY0MDBhNzY2MDBhNzY3MDBhODY5MDBhODZhMDBhODZjMDBhODZlMDBhODZmMDBhODcxMDBhODcyMDFhODc0MDFhODc1MDFhODc3MDFhODc4MDFhODdhMDJhODdiMDJhODdkMDNhODdlMDNhODgwMDRhODgxMDRhNzgzMDVhNzg0MDVhNzg2MDZhNjg3MDdhNjg4MDhhNjhhMDlhNThiMGFhNThkMGJhNThlMGNhNDhmMGRhNDkxMGVhMzkyMGZhMzk0MTBhMjk1MTFhMTk2MTNhMTk4MTRhMDk5MTU5ZjlhMTY5ZjljMTc5ZTlkMTg5ZDllMTk5ZGEwMWE5Y2ExMWI5YmEyMWQ5YWEzMWU5YWE1MWY5OWE2MjA5OGE3MjE5N2E4MjI5NmFhMjM5NWFiMjQ5NGFjMjY5NGFkMjc5M2FlMjg5MmIwMjk5MWIxMmE5MGIyMmI4ZmIzMmM4ZWI0MmU4ZGI1MmY4Y2I2MzA4YmI3MzE4YWI4MzI4OWJhMzM4OGJiMzQ4OGJjMzU4N2JkMzc4NmJlMzg4NWJmMzk4NGMwM2E4M2MxM2I4MmMyM2M4MWMzM2Q4MGM0M2U3ZmM1NDA3ZWM2NDE3ZGM3NDI3Y2M4NDM3YmM5NDQ3YWNhNDU3YWNiNDY3OWNjNDc3OGNjNDk3N2NkNGE3NmNlNGI3NWNmNGM3NGQwNGQ3M2QxNGU3MmQyNGY3MWQzNTE3MWQ0NTI3MGQ1NTM2ZmQ1NTQ2ZWQ2NTU2ZGQ3NTY2Y2Q4NTc2YmQ5NTg2YWRhNWE2YWRhNWI2OWRiNWM2OGRjNWQ2N2RkNWU2NmRlNWY2NWRlNjE2NGRmNjI2M2UwNjM2M2UxNjQ2MmUyNjU2MWUyNjY2MGUzNjg1ZmU0Njk1ZWU1NmE1ZGU1NmI1ZGU2NmM1Y2U3NmU1YmU3NmY1YWU4NzA1OWU5NzE1OGU5NzI1N2VhNzQ1N2ViNzU1NmViNzY1NWVjNzc1NGVkNzk1M2VkN2E1MmVlN2I1MWVmN2M1MWVmN2U1MGYwN2Y0ZmYwODA0ZWYxODE0ZGYxODM0Y2YyODQ0YmYzODU0YmYzODc0YWY0ODg0OWY0ODk0OGY1OGI0N2Y1OGM0NmY2OGQ0NWY2OGY0NGY3OTA0NGY3OTE0M2Y3OTM0MmY4OTQ0MWY4OTU0MGY5OTczZmY5OTgzZWY5OWEzZWZhOWIzZGZhOWMzY2ZhOWUzYmZiOWYzYWZiYTEzOWZiYTIzOGZjYTMzOGZjYTUzN2ZjYTYzNmZjYTgzNWZjYTkzNGZkYWIzM2ZkYWMzM2ZkYWUzMmZkYWYzMWZkYjEzMGZkYjIyZmZkYjQyZmZkYjUyZWZlYjcyZGZlYjgyY2ZlYmEyY2ZlYmIyYmZlYmQyYWZlYmUyYWZlYzAyOWZkYzIyOWZkYzMyOGZkYzUyN2ZkYzYyN2ZkYzgyN2ZkY2EyNmZkY2IyNmZjY2QyNWZjY2UyNWZjZDAyNWZjZDIyNWZiZDMyNGZiZDUyNGZiZDcyNGZhZDgyNGZhZGEyNGY5ZGMyNGY5ZGQyNWY4ZGYyNWY4ZTEyNWY3ZTIyNWY3ZTQyNWY2ZTYyNmY2ZTgyNmY1ZTkyNmY1ZWIyN2Y0ZWQyN2YzZWUyN2YzZjAyN2YyZjIyN2YxZjQyNmYxZjUyNWYwZjcyNGYwZjkyMSIpKTtmdW5jdGlvbiBkTCh0KXtyZXR1cm4gZnVuY3Rpb24gZSgpe3JldHVybiB0fX12YXIgcEw9TWF0aC5hYnMsZkw9TWF0aC5hdGFuMixtTD1NYXRoLmNvcyxnTD1NYXRoLm1heCxfTD1NYXRoLm1pbix5TD1NYXRoLnNpbix2TD1NYXRoLnNxcnQsYkw9MWUtMTIseEw9TWF0aC5QSSx3TD14TC8yLFNMPTIqeEw7ZnVuY3Rpb24gTUwodCl7cmV0dXJuIHQ+MT8wOnQ8LTE/eEw6TWF0aC5hY29zKHQpfWZ1bmN0aW9uIEVMKHQpe3JldHVybiB0Pj0xP3dMOnQ8PS0xPy13TDpNYXRoLmFzaW4odCl9ZnVuY3Rpb24gVEwodCl7cmV0dXJuIHQuaW5uZXJSYWRpdXN9ZnVuY3Rpb24gQ0wodCl7cmV0dXJuIHQub3V0ZXJSYWRpdXN9ZnVuY3Rpb24gQUwodCl7cmV0dXJuIHQuc3RhcnRBbmdsZX1mdW5jdGlvbiBrTCh0KXtyZXR1cm4gdC5lbmRBbmdsZX1mdW5jdGlvbiBMTCh0KXtyZXR1cm4gdCYmdC5wYWRBbmdsZX1mdW5jdGlvbiBQTCh0LGUsbixpLHIsbyxhLHMpe3ZhciBsPW4tdCxjPWktZSx1PWEtcixoPXMtbyxkPWgqbC11KmM7aWYoIShkKmQ8YkwpKXJldHVyblt0KyhkPSh1KihlLW8pLWgqKHQtcikpL2QpKmwsZStkKmNdfWZ1bmN0aW9uIE5MKHQsZSxuLGkscixvLGEpe3ZhciBzPXQtbixsPWUtaSxjPShhP286LW8pL3ZMKHMqcytsKmwpLHU9YypsLGg9LWMqcyxkPXQrdSxwPWUraCxmPW4rdSxtPWkraCxnPShkK2YpLzIsXz0ocCttKS8yLHk9Zi1kLHY9bS1wLGI9eSp5K3Yqdix4PXItbyx3PWQqbS1mKnAsUz0odjwwPy0xOjEpKnZMKGdMKDAseCp4KmItdyp3KSksTT0odyp2LXkqUykvYixFPSgtdyp5LXYqUykvYixUPSh3KnYreSpTKS9iLEM9KC13KnkrdipTKS9iLEE9TS1nLGs9RS1fLEw9VC1nLFA9Qy1fO3JldHVybiBBKkErayprPkwqTCtQKlAmJihNPVQsRT1DKSx7Y3g6TSxjeTpFLHgwMTotdSx5MDE6LWgseDExOk0qKHIveC0xKSx5MTE6RSooci94LTEpfX1mdW5jdGlvbiBJTCh0KXt0aGlzLl9jb250ZXh0PXR9ZnVuY3Rpb24gUkwodCl7cmV0dXJuIG5ldyBJTCh0KX1mdW5jdGlvbiBPTCh0KXtyZXR1cm4gdFswXX1mdW5jdGlvbiB6TCh0KXtyZXR1cm4gdFsxXX1mdW5jdGlvbiBETCgpe3ZhciB0PU9MLGU9ekwsbj1kTCghMCksaT1udWxsLHI9Ukwsbz1udWxsO2Z1bmN0aW9uIGEoYSl7dmFyIHMsbCxjLHU9YS5sZW5ndGgsaD0hMTtmb3IobnVsbD09aSYmKG89cihjPU9nKCkpKSxzPTA7czw9dTsrK3MpIShzPHUmJm4obD1hW3NdLHMsYSkpPT09aCYmKChoPSFoKT9vLmxpbmVTdGFydCgpOm8ubGluZUVuZCgpKSxoJiZvLnBvaW50KCt0KGwscyxhKSwrZShsLHMsYSkpO2lmKGMpcmV0dXJuIG89bnVsbCxjKyIifHxudWxsfXJldHVybiBhLng9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpkTCgrZSksYSk6dH0sYS55PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6ZEwoK3QpLGEpOmV9LGEuZGVmaW5lZD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OmRMKCEhdCksYSk6bn0sYS5jdXJ2ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj10LG51bGwhPWkmJihvPXIoaSkpLGEpOnJ9LGEuY29udGV4dD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obnVsbD09dD9pPW89bnVsbDpvPXIoaT10KSxhKTppfSxhfWZ1bmN0aW9uIEJMKCl7dmFyIHQ9T0wsZT1udWxsLG49ZEwoMCksaT16TCxyPWRMKCEwKSxvPW51bGwsYT1STCxzPW51bGw7ZnVuY3Rpb24gbChsKXt2YXIgYyx1LGgsZCxwLGY9bC5sZW5ndGgsbT0hMSxnPW5ldyBBcnJheShmKSxfPW5ldyBBcnJheShmKTtmb3IobnVsbD09byYmKHM9YShwPU9nKCkpKSxjPTA7Yzw9ZjsrK2Mpe2lmKCEoYzxmJiZyKGQ9bFtjXSxjLGwpKT09PW0paWYobT0hbSl1PWMscy5hcmVhU3RhcnQoKSxzLmxpbmVTdGFydCgpO2Vsc2V7Zm9yKHMubGluZUVuZCgpLHMubGluZVN0YXJ0KCksaD1jLTE7aD49dTstLWgpcy5wb2ludChnW2hdLF9baF0pO3MubGluZUVuZCgpLHMuYXJlYUVuZCgpfW0mJihnW2NdPSt0KGQsYyxsKSxfW2NdPStuKGQsYyxsKSxzLnBvaW50KGU/K2UoZCxjLGwpOmdbY10saT8raShkLGMsbCk6X1tjXSkpfWlmKHApcmV0dXJuIHM9bnVsbCxwKyIifHxudWxsfWZ1bmN0aW9uIGMoKXtyZXR1cm4gREwoKS5kZWZpbmVkKHIpLmN1cnZlKGEpLmNvbnRleHQobyl9cmV0dXJuIGwueD1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uOmRMKCtuKSxlPW51bGwsbCk6dH0sbC54MD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOmRMKCtlKSxsKTp0fSxsLngxPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPW51bGw9PXQ/bnVsbDoiZnVuY3Rpb24iPT10eXBlb2YgdD90OmRMKCt0KSxsKTplfSxsLnk9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpkTCgrdCksaT1udWxsLGwpOm59LGwueTA9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpkTCgrdCksbCk6bn0sbC55MT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT1udWxsPT10P251bGw6ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpkTCgrdCksbCk6aX0sbC5saW5lWDA9bC5saW5lWTA9ZnVuY3Rpb24oKXtyZXR1cm4gYygpLngodCkueShuKX0sbC5saW5lWTE9ZnVuY3Rpb24oKXtyZXR1cm4gYygpLngodCkueShpKX0sbC5saW5lWDE9ZnVuY3Rpb24oKXtyZXR1cm4gYygpLngoZSkueShuKX0sbC5kZWZpbmVkPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6ZEwoISF0KSxsKTpyfSxsLmN1cnZlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPXQsbnVsbCE9byYmKHM9YShvKSksbCk6YX0sbC5jb250ZXh0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhudWxsPT10P289cz1udWxsOnM9YShvPXQpLGwpOm99LGx9ZnVuY3Rpb24gSEwodCxlKXtyZXR1cm4gZTx0Py0xOmU+dD8xOmU+PXQ/MDpOYU59ZnVuY3Rpb24gRkwodCl7cmV0dXJuIHR9SUwucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpeyh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMT09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rpb24odCxlKXtzd2l0Y2godD0rdCxlPStlLHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKHQsZSk6dGhpcy5fY29udGV4dC5tb3ZlVG8odCxlKTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9MjtkZWZhdWx0OnRoaXMuX2NvbnRleHQubGluZVRvKHQsZSl9fX07dmFyIFZMPWpMKFJMKTtmdW5jdGlvbiBVTCh0KXt0aGlzLl9jdXJ2ZT10fWZ1bmN0aW9uIGpMKHQpe2Z1bmN0aW9uIGUoZSl7cmV0dXJuIG5ldyBVTCh0KGUpKX1yZXR1cm4gZS5fY3VydmU9dCxlfWZ1bmN0aW9uIEdMKHQpe3ZhciBlPXQuY3VydmU7cmV0dXJuIHQuYW5nbGU9dC54LGRlbGV0ZSB0LngsdC5yYWRpdXM9dC55LGRlbGV0ZSB0LnksdC5jdXJ2ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9lKGpMKHQpKTplKCkuX2N1cnZlfSx0fWZ1bmN0aW9uIFdMKCl7cmV0dXJuIEdMKERMKCkuY3VydmUoVkwpKX1mdW5jdGlvbiBxTCgpe3ZhciB0PUJMKCkuY3VydmUoVkwpLGU9dC5jdXJ2ZSxuPXQubGluZVgwLGk9dC5saW5lWDEscj10LmxpbmVZMCxvPXQubGluZVkxO3JldHVybiB0LmFuZ2xlPXQueCxkZWxldGUgdC54LHQuc3RhcnRBbmdsZT10LngwLGRlbGV0ZSB0LngwLHQuZW5kQW5nbGU9dC54MSxkZWxldGUgdC54MSx0LnJhZGl1cz10LnksZGVsZXRlIHQueSx0LmlubmVyUmFkaXVzPXQueTAsZGVsZXRlIHQueTAsdC5vdXRlclJhZGl1cz10LnkxLGRlbGV0ZSB0LnkxLHQubGluZVN0YXJ0QW5nbGU9ZnVuY3Rpb24oKXtyZXR1cm4gR0wobigpKX0sZGVsZXRlIHQubGluZVgwLHQubGluZUVuZEFuZ2xlPWZ1bmN0aW9uKCl7cmV0dXJuIEdMKGkoKSl9LGRlbGV0ZSB0LmxpbmVYMSx0LmxpbmVJbm5lclJhZGl1cz1mdW5jdGlvbigpe3JldHVybiBHTChyKCkpfSxkZWxldGUgdC5saW5lWTAsdC5saW5lT3V0ZXJSYWRpdXM9ZnVuY3Rpb24oKXtyZXR1cm4gR0wobygpKX0sZGVsZXRlIHQubGluZVkxLHQuY3VydmU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/ZShqTCh0KSk6ZSgpLl9jdXJ2ZX0sdH1mdW5jdGlvbiBZTCh0LGUpe3JldHVyblsoZT0rZSkqTWF0aC5jb3ModC09TWF0aC5QSS8yKSxlKk1hdGguc2luKHQpXX1VTC5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2N1cnZlLmFyZWFTdGFydCgpfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fY3VydmUuYXJlYUVuZCgpfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9jdXJ2ZS5saW5lU3RhcnQoKX0sbGluZUVuZDpmdW5jdGlvbigpe3RoaXMuX2N1cnZlLmxpbmVFbmQoKX0scG9pbnQ6ZnVuY3Rpb24odCxlKXt0aGlzLl9jdXJ2ZS5wb2ludChlKk1hdGguc2luKHQpLGUqLU1hdGguY29zKHQpKX19O3ZhciBYTD1BcnJheS5wcm90b3R5cGUuc2xpY2U7ZnVuY3Rpb24gJEwodCl7cmV0dXJuIHQuc291cmNlfWZ1bmN0aW9uIEtMKHQpe3JldHVybiB0LnRhcmdldH1mdW5jdGlvbiBaTCh0KXt2YXIgZT0kTCxuPUtMLGk9T0wscj16TCxvPW51bGw7ZnVuY3Rpb24gYSgpe3ZhciBhLHM9WEwuY2FsbChhcmd1bWVudHMpLGw9ZS5hcHBseSh0aGlzLHMpLGM9bi5hcHBseSh0aGlzLHMpO2lmKG98fChvPWE9T2coKSksdChvLCtpLmFwcGx5KHRoaXMsKHNbMF09bCxzKSksK3IuYXBwbHkodGhpcyxzKSwraS5hcHBseSh0aGlzLChzWzBdPWMscykpLCtyLmFwcGx5KHRoaXMscykpLGEpcmV0dXJuIG89bnVsbCxhKyIifHxudWxsfXJldHVybiBhLnNvdXJjZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10LGEpOmV9LGEudGFyZ2V0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPXQsYSk6bn0sYS54PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6ZEwoK3QpLGEpOml9LGEueT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OmRMKCt0KSxhKTpyfSxhLmNvbnRleHQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89bnVsbD09dD9udWxsOnQsYSk6b30sYX1mdW5jdGlvbiBKTCh0LGUsbixpLHIpe3QubW92ZVRvKGUsbiksdC5iZXppZXJDdXJ2ZVRvKGU9KGUraSkvMixuLGUscixpLHIpfWZ1bmN0aW9uIFFMKHQsZSxuLGkscil7dC5tb3ZlVG8oZSxuKSx0LmJlemllckN1cnZlVG8oZSxuPShuK3IpLzIsaSxuLGkscil9ZnVuY3Rpb24gdFAodCxlLG4saSxyKXt2YXIgbz1ZTChlLG4pLGE9WUwoZSxuPShuK3IpLzIpLHM9WUwoaSxuKSxsPVlMKGkscik7dC5tb3ZlVG8ob1swXSxvWzFdKSx0LmJlemllckN1cnZlVG8oYVswXSxhWzFdLHNbMF0sc1sxXSxsWzBdLGxbMV0pfXZhciBlUD17ZHJhdzpmdW5jdGlvbih0LGUpe3ZhciBuPU1hdGguc3FydChlL3hMKTt0Lm1vdmVUbyhuLDApLHQuYXJjKDAsMCxuLDAsU0wpfX0sblA9e2RyYXc6ZnVuY3Rpb24odCxlKXt2YXIgbj1NYXRoLnNxcnQoZS81KS8yO3QubW92ZVRvKC0zKm4sLW4pLHQubGluZVRvKC1uLC1uKSx0LmxpbmVUbygtbiwtMypuKSx0LmxpbmVUbyhuLC0zKm4pLHQubGluZVRvKG4sLW4pLHQubGluZVRvKDMqbiwtbiksdC5saW5lVG8oMypuLG4pLHQubGluZVRvKG4sbiksdC5saW5lVG8obiwzKm4pLHQubGluZVRvKC1uLDMqbiksdC5saW5lVG8oLW4sbiksdC5saW5lVG8oLTMqbixuKSx0LmNsb3NlUGF0aCgpfX0saVA9TWF0aC5zcXJ0KDEvMyksclA9MippUCxvUD17ZHJhdzpmdW5jdGlvbih0LGUpe3ZhciBuPU1hdGguc3FydChlL3JQKSxpPW4qaVA7dC5tb3ZlVG8oMCwtbiksdC5saW5lVG8oaSwwKSx0LmxpbmVUbygwLG4pLHQubGluZVRvKC1pLDApLHQuY2xvc2VQYXRoKCl9fSxhUD1NYXRoLnNpbih4TC8xMCkvTWF0aC5zaW4oNyp4TC8xMCksc1A9TWF0aC5zaW4oU0wvMTApKmFQLGxQPS1NYXRoLmNvcyhTTC8xMCkqYVAsY1A9e2RyYXc6ZnVuY3Rpb24odCxlKXt2YXIgbj1NYXRoLnNxcnQoLjg5MDgxMzA5MTUyOTI4NTIqZSksaT1zUCpuLHI9bFAqbjt0Lm1vdmVUbygwLC1uKSx0LmxpbmVUbyhpLHIpO2Zvcih2YXIgbz0xO288NTsrK28pe3ZhciBhPVNMKm8vNSxzPU1hdGguY29zKGEpLGw9TWF0aC5zaW4oYSk7dC5saW5lVG8obCpuLC1zKm4pLHQubGluZVRvKHMqaS1sKnIsbCppK3Mqcil9dC5jbG9zZVBhdGgoKX19LHVQPXtkcmF3OmZ1bmN0aW9uKHQsZSl7dmFyIG49TWF0aC5zcXJ0KGUpLGk9LW4vMjt0LnJlY3QoaSxpLG4sbil9fSxoUD1NYXRoLnNxcnQoMyksZFA9e2RyYXc6ZnVuY3Rpb24odCxlKXt2YXIgbj0tTWF0aC5zcXJ0KGUvKDMqaFApKTt0Lm1vdmVUbygwLDIqbiksdC5saW5lVG8oLWhQKm4sLW4pLHQubGluZVRvKGhQKm4sLW4pLHQuY2xvc2VQYXRoKCl9fSxwUD0tLjUsZlA9TWF0aC5zcXJ0KDMpLzIsbVA9MS9NYXRoLnNxcnQoMTIpLGdQPTMqKG1QLzIrMSksX1A9e2RyYXc6ZnVuY3Rpb24odCxlKXt2YXIgbj1NYXRoLnNxcnQoZS9nUCksaT1uLzIscj1uKm1QLG89aSxhPW4qbVArbixzPS1vLGw9YTt0Lm1vdmVUbyhpLHIpLHQubGluZVRvKG8sYSksdC5saW5lVG8ocyxsKSx0LmxpbmVUbyhwUCppLWZQKnIsZlAqaStwUCpyKSx0LmxpbmVUbyhwUCpvLWZQKmEsZlAqbytwUCphKSx0LmxpbmVUbyhwUCpzLWZQKmwsZlAqcytwUCpsKSx0LmxpbmVUbyhwUCppK2ZQKnIscFAqci1mUCppKSx0LmxpbmVUbyhwUCpvK2ZQKmEscFAqYS1mUCpvKSx0LmxpbmVUbyhwUCpzK2ZQKmwscFAqbC1mUCpzKSx0LmNsb3NlUGF0aCgpfX0seVA9W2VQLG5QLG9QLHVQLGNQLGRQLF9QXTtmdW5jdGlvbiB2UCgpe31mdW5jdGlvbiBiUCh0LGUsbil7dC5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKCgyKnQuX3gwK3QuX3gxKS8zLCgyKnQuX3kwK3QuX3kxKS8zLCh0Ll94MCsyKnQuX3gxKS8zLCh0Ll95MCsyKnQuX3kxKS8zLCh0Ll94MCs0KnQuX3gxK2UpLzYsKHQuX3kwKzQqdC5feTErbikvNil9ZnVuY3Rpb24geFAodCl7dGhpcy5fY29udGV4dD10fWZ1bmN0aW9uIHdQKHQpe3JldHVybiBuZXcgeFAodCl9ZnVuY3Rpb24gU1AodCl7dGhpcy5fY29udGV4dD10fWZ1bmN0aW9uIE1QKHQpe3RoaXMuX2NvbnRleHQ9dH1mdW5jdGlvbiBFUCh0LGUpe3RoaXMuX2Jhc2lzPW5ldyB4UCh0KSx0aGlzLl9iZXRhPWV9eFAucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feDA9dGhpcy5feDE9dGhpcy5feTA9dGhpcy5feTE9TmFOLHRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMzpiUCh0aGlzLHRoaXMuX3gxLHRoaXMuX3kxKTtjYXNlIDI6dGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDEsdGhpcy5feTEpfSh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMT09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rpb24odCxlKXtzd2l0Y2godD0rdCxlPStlLHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKHQsZSk6dGhpcy5fY29udGV4dC5tb3ZlVG8odCxlKTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9MjticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9Myx0aGlzLl9jb250ZXh0LmxpbmVUbygoNSp0aGlzLl94MCt0aGlzLl94MSkvNiwoNSp0aGlzLl95MCt0aGlzLl95MSkvNik7ZGVmYXVsdDpiUCh0aGlzLHQsZSl9dGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dCx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT1lfX0sU1AucHJvdG90eXBlPXthcmVhU3RhcnQ6dlAsYXJlYUVuZDp2UCxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94MD10aGlzLl94MT10aGlzLl94Mj10aGlzLl94Mz10aGlzLl94ND10aGlzLl95MD10aGlzLl95MT10aGlzLl95Mj10aGlzLl95Mz10aGlzLl95ND1OYU4sdGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAxOnRoaXMuX2NvbnRleHQubW92ZVRvKHRoaXMuX3gyLHRoaXMuX3kyKSx0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpO2JyZWFrO2Nhc2UgMjp0aGlzLl9jb250ZXh0Lm1vdmVUbygodGhpcy5feDIrMip0aGlzLl94MykvMywodGhpcy5feTIrMip0aGlzLl95MykvMyksdGhpcy5fY29udGV4dC5saW5lVG8oKHRoaXMuX3gzKzIqdGhpcy5feDIpLzMsKHRoaXMuX3kzKzIqdGhpcy5feTIpLzMpLHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7YnJlYWs7Y2FzZSAzOnRoaXMucG9pbnQodGhpcy5feDIsdGhpcy5feTIpLHRoaXMucG9pbnQodGhpcy5feDMsdGhpcy5feTMpLHRoaXMucG9pbnQodGhpcy5feDQsdGhpcy5feTQpfX0scG9pbnQ6ZnVuY3Rpb24odCxlKXtzd2l0Y2godD0rdCxlPStlLHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl94Mj10LHRoaXMuX3kyPWU7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTIsdGhpcy5feDM9dCx0aGlzLl95Mz1lO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zLHRoaXMuX3g0PXQsdGhpcy5feTQ9ZSx0aGlzLl9jb250ZXh0Lm1vdmVUbygodGhpcy5feDArNCp0aGlzLl94MSt0KS82LCh0aGlzLl95MCs0KnRoaXMuX3kxK2UpLzYpO2JyZWFrO2RlZmF1bHQ6YlAodGhpcyx0LGUpfXRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXQsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9ZX19LE1QLnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3kwPXRoaXMuX3kxPU5hTix0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7KHRoaXMuX2xpbmV8fDAhPT10aGlzLl9saW5lJiYzPT09dGhpcy5fcG9pbnQpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9saW5lfSxwb2ludDpmdW5jdGlvbih0LGUpe3N3aXRjaCh0PSt0LGU9K2UsdGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zO3ZhciBuPSh0aGlzLl94MCs0KnRoaXMuX3gxK3QpLzYsaT0odGhpcy5feTArNCp0aGlzLl95MStlKS82O3RoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8obixpKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyhuLGkpO2JyZWFrO2Nhc2UgMzp0aGlzLl9wb2ludD00O2RlZmF1bHQ6YlAodGhpcyx0LGUpfXRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXQsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9ZX19LEVQLnByb3RvdHlwZT17bGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feD1bXSx0aGlzLl95PVtdLHRoaXMuX2Jhc2lzLmxpbmVTdGFydCgpfSxsaW5lRW5kOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5feCxlPXRoaXMuX3ksbj10Lmxlbmd0aC0xO2lmKG4+MClmb3IodmFyIGkscj10WzBdLG89ZVswXSxhPXRbbl0tcixzPWVbbl0tbyxsPS0xOysrbDw9bjspdGhpcy5fYmFzaXMucG9pbnQodGhpcy5fYmV0YSp0W2xdKygxLXRoaXMuX2JldGEpKihyKyhpPWwvbikqYSksdGhpcy5fYmV0YSplW2xdKygxLXRoaXMuX2JldGEpKihvK2kqcykpO3RoaXMuX3g9dGhpcy5feT1udWxsLHRoaXMuX2Jhc2lzLmxpbmVFbmQoKX0scG9pbnQ6ZnVuY3Rpb24odCxlKXt0aGlzLl94LnB1c2goK3QpLHRoaXMuX3kucHVzaCgrZSl9fTt2YXIgVFA9KGZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gbih0KXtyZXR1cm4gMT09PWU/bmV3IHhQKHQpOm5ldyBFUCh0LGUpfXJldHVybiBuLmJldGE9ZnVuY3Rpb24oZSl7cmV0dXJuIHQoK2UpfSxufSkoLjg1KTtmdW5jdGlvbiBDUCh0LGUsbil7dC5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKHQuX3gxK3QuX2sqKHQuX3gyLXQuX3gwKSx0Ll95MSt0Ll9rKih0Ll95Mi10Ll95MCksdC5feDIrdC5fayoodC5feDEtZSksdC5feTIrdC5fayoodC5feTEtbiksdC5feDIsdC5feTIpfWZ1bmN0aW9uIEFQKHQsZSl7dGhpcy5fY29udGV4dD10LHRoaXMuX2s9KDEtZSkvNn1BUC5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94MD10aGlzLl94MT10aGlzLl94Mj10aGlzLl95MD10aGlzLl95MT10aGlzLl95Mj1OYU4sdGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAyOnRoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gyLHRoaXMuX3kyKTticmVhaztjYXNlIDM6Q1AodGhpcyx0aGlzLl94MSx0aGlzLl95MSl9KHRoaXMuX2xpbmV8fDAhPT10aGlzLl9saW5lJiYxPT09dGhpcy5fcG9pbnQpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9saW5lfSxwb2ludDpmdW5jdGlvbih0LGUpe3N3aXRjaCh0PSt0LGU9K2UsdGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8odCxlKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0LGUpO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yLHRoaXMuX3gxPXQsdGhpcy5feTE9ZTticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9MztkZWZhdWx0OkNQKHRoaXMsdCxlKX10aGlzLl94MD10aGlzLl94MSx0aGlzLl94MT10aGlzLl94Mix0aGlzLl94Mj10LHRoaXMuX3kwPXRoaXMuX3kxLHRoaXMuX3kxPXRoaXMuX3kyLHRoaXMuX3kyPWV9fTt2YXIga1A9KGZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gbih0KXtyZXR1cm4gbmV3IEFQKHQsZSl9cmV0dXJuIG4udGVuc2lvbj1mdW5jdGlvbihlKXtyZXR1cm4gdCgrZSl9LG59KSgwKTtmdW5jdGlvbiBMUCh0LGUpe3RoaXMuX2NvbnRleHQ9dCx0aGlzLl9rPSgxLWUpLzZ9TFAucHJvdG90eXBlPXthcmVhU3RhcnQ6dlAsYXJlYUVuZDp2UCxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94MD10aGlzLl94MT10aGlzLl94Mj10aGlzLl94Mz10aGlzLl94ND10aGlzLl94NT10aGlzLl95MD10aGlzLl95MT10aGlzLl95Mj10aGlzLl95Mz10aGlzLl95ND10aGlzLl95NT1OYU4sdGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAxOnRoaXMuX2NvbnRleHQubW92ZVRvKHRoaXMuX3gzLHRoaXMuX3kzKSx0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpO2JyZWFrO2Nhc2UgMjp0aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94Myx0aGlzLl95MyksdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTticmVhaztjYXNlIDM6dGhpcy5wb2ludCh0aGlzLl94Myx0aGlzLl95MyksdGhpcy5wb2ludCh0aGlzLl94NCx0aGlzLl95NCksdGhpcy5wb2ludCh0aGlzLl94NSx0aGlzLl95NSl9fSxwb2ludDpmdW5jdGlvbih0LGUpe3N3aXRjaCh0PSt0LGU9K2UsdGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX3gzPXQsdGhpcy5feTM9ZTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9Mix0aGlzLl9jb250ZXh0Lm1vdmVUbyh0aGlzLl94ND10LHRoaXMuX3k0PWUpO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zLHRoaXMuX3g1PXQsdGhpcy5feTU9ZTticmVhaztkZWZhdWx0OkNQKHRoaXMsdCxlKX10aGlzLl94MD10aGlzLl94MSx0aGlzLl94MT10aGlzLl94Mix0aGlzLl94Mj10LHRoaXMuX3kwPXRoaXMuX3kxLHRoaXMuX3kxPXRoaXMuX3kyLHRoaXMuX3kyPWV9fTt2YXIgUFA9KGZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gbih0KXtyZXR1cm4gbmV3IExQKHQsZSl9cmV0dXJuIG4udGVuc2lvbj1mdW5jdGlvbihlKXtyZXR1cm4gdCgrZSl9LG59KSgwKTtmdW5jdGlvbiBOUCh0LGUpe3RoaXMuX2NvbnRleHQ9dCx0aGlzLl9rPSgxLWUpLzZ9TlAucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feDA9dGhpcy5feDE9dGhpcy5feDI9dGhpcy5feTA9dGhpcy5feTE9dGhpcy5feTI9TmFOLHRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXsodGhpcy5fbGluZXx8MCE9PXRoaXMuX2xpbmUmJjM9PT10aGlzLl9wb2ludCkmJnRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCksdGhpcy5fbGluZT0xLXRoaXMuX2xpbmV9LHBvaW50OmZ1bmN0aW9uKHQsZSl7c3dpdGNoKHQ9K3QsZT0rZSx0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTE7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTI7YnJlYWs7Y2FzZSAyOnRoaXMuX3BvaW50PTMsdGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94Mix0aGlzLl95Mik6dGhpcy5fY29udGV4dC5tb3ZlVG8odGhpcy5feDIsdGhpcy5feTIpO2JyZWFrO2Nhc2UgMzp0aGlzLl9wb2ludD00O2RlZmF1bHQ6Q1AodGhpcyx0LGUpfXRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXRoaXMuX3gyLHRoaXMuX3gyPXQsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9dGhpcy5feTIsdGhpcy5feTI9ZX19O3ZhciBJUD0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQpe3JldHVybiBuZXcgTlAodCxlKX1yZXR1cm4gbi50ZW5zaW9uPWZ1bmN0aW9uKGUpe3JldHVybiB0KCtlKX0sbn0pKDApO2Z1bmN0aW9uIFJQKHQsZSxuKXt2YXIgaT10Ll94MSxyPXQuX3kxLG89dC5feDIsYT10Ll95MjtpZih0Ll9sMDFfYT5iTCl7dmFyIHM9Mip0Ll9sMDFfMmErMyp0Ll9sMDFfYSp0Ll9sMTJfYSt0Ll9sMTJfMmEsbD0zKnQuX2wwMV9hKih0Ll9sMDFfYSt0Ll9sMTJfYSk7aT0oaSpzLXQuX3gwKnQuX2wxMl8yYSt0Ll94Mip0Ll9sMDFfMmEpL2wscj0ocipzLXQuX3kwKnQuX2wxMl8yYSt0Ll95Mip0Ll9sMDFfMmEpL2x9aWYodC5fbDIzX2E+Ykwpe3ZhciBjPTIqdC5fbDIzXzJhKzMqdC5fbDIzX2EqdC5fbDEyX2ErdC5fbDEyXzJhLHU9Myp0Ll9sMjNfYSoodC5fbDIzX2ErdC5fbDEyX2EpO289KG8qYyt0Ll94MSp0Ll9sMjNfMmEtZSp0Ll9sMTJfMmEpL3UsYT0oYSpjK3QuX3kxKnQuX2wyM18yYS1uKnQuX2wxMl8yYSkvdX10Ll9jb250ZXh0LmJlemllckN1cnZlVG8oaSxyLG8sYSx0Ll94Mix0Ll95Mil9ZnVuY3Rpb24gT1AodCxlKXt0aGlzLl9jb250ZXh0PXQsdGhpcy5fYWxwaGE9ZX1PUC5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94MD10aGlzLl94MT10aGlzLl94Mj10aGlzLl95MD10aGlzLl95MT10aGlzLl95Mj1OYU4sdGhpcy5fbDAxX2E9dGhpcy5fbDEyX2E9dGhpcy5fbDIzX2E9dGhpcy5fbDAxXzJhPXRoaXMuX2wxMl8yYT10aGlzLl9sMjNfMmE9dGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAyOnRoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gyLHRoaXMuX3kyKTticmVhaztjYXNlIDM6dGhpcy5wb2ludCh0aGlzLl94Mix0aGlzLl95Mil9KHRoaXMuX2xpbmV8fDAhPT10aGlzLl9saW5lJiYxPT09dGhpcy5fcG9pbnQpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9saW5lfSxwb2ludDpmdW5jdGlvbih0LGUpe2lmKHQ9K3QsZT0rZSx0aGlzLl9wb2ludCl7dmFyIG49dGhpcy5feDItdCxpPXRoaXMuX3kyLWU7dGhpcy5fbDIzX2E9TWF0aC5zcXJ0KHRoaXMuX2wyM18yYT1NYXRoLnBvdyhuKm4raSppLHRoaXMuX2FscGhhKSl9c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKHQsZSk6dGhpcy5fY29udGV4dC5tb3ZlVG8odCxlKTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9MjticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9MztkZWZhdWx0OlJQKHRoaXMsdCxlKX10aGlzLl9sMDFfYT10aGlzLl9sMTJfYSx0aGlzLl9sMTJfYT10aGlzLl9sMjNfYSx0aGlzLl9sMDFfMmE9dGhpcy5fbDEyXzJhLHRoaXMuX2wxMl8yYT10aGlzLl9sMjNfMmEsdGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dGhpcy5feDIsdGhpcy5feDI9dCx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT10aGlzLl95Mix0aGlzLl95Mj1lfX07dmFyIHpQPShmdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCl7cmV0dXJuIGU/bmV3IE9QKHQsZSk6bmV3IEFQKHQsMCl9cmV0dXJuIG4uYWxwaGE9ZnVuY3Rpb24oZSl7cmV0dXJuIHQoK2UpfSxufSkoLjUpO2Z1bmN0aW9uIERQKHQsZSl7dGhpcy5fY29udGV4dD10LHRoaXMuX2FscGhhPWV9RFAucHJvdG90eXBlPXthcmVhU3RhcnQ6dlAsYXJlYUVuZDp2UCxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94MD10aGlzLl94MT10aGlzLl94Mj10aGlzLl94Mz10aGlzLl94ND10aGlzLl94NT10aGlzLl95MD10aGlzLl95MT10aGlzLl95Mj10aGlzLl95Mz10aGlzLl95ND10aGlzLl95NT1OYU4sdGhpcy5fbDAxX2E9dGhpcy5fbDEyX2E9dGhpcy5fbDIzX2E9dGhpcy5fbDAxXzJhPXRoaXMuX2wxMl8yYT10aGlzLl9sMjNfMmE9dGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAxOnRoaXMuX2NvbnRleHQubW92ZVRvKHRoaXMuX3gzLHRoaXMuX3kzKSx0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpO2JyZWFrO2Nhc2UgMjp0aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94Myx0aGlzLl95MyksdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTticmVhaztjYXNlIDM6dGhpcy5wb2ludCh0aGlzLl94Myx0aGlzLl95MyksdGhpcy5wb2ludCh0aGlzLl94NCx0aGlzLl95NCksdGhpcy5wb2ludCh0aGlzLl94NSx0aGlzLl95NSl9fSxwb2ludDpmdW5jdGlvbih0LGUpe2lmKHQ9K3QsZT0rZSx0aGlzLl9wb2ludCl7dmFyIG49dGhpcy5feDItdCxpPXRoaXMuX3kyLWU7dGhpcy5fbDIzX2E9TWF0aC5zcXJ0KHRoaXMuX2wyM18yYT1NYXRoLnBvdyhuKm4raSppLHRoaXMuX2FscGhhKSl9c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl94Mz10LHRoaXMuX3kzPWU7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTIsdGhpcy5fY29udGV4dC5tb3ZlVG8odGhpcy5feDQ9dCx0aGlzLl95ND1lKTticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9Myx0aGlzLl94NT10LHRoaXMuX3k1PWU7YnJlYWs7ZGVmYXVsdDpSUCh0aGlzLHQsZSl9dGhpcy5fbDAxX2E9dGhpcy5fbDEyX2EsdGhpcy5fbDEyX2E9dGhpcy5fbDIzX2EsdGhpcy5fbDAxXzJhPXRoaXMuX2wxMl8yYSx0aGlzLl9sMTJfMmE9dGhpcy5fbDIzXzJhLHRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXRoaXMuX3gyLHRoaXMuX3gyPXQsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9dGhpcy5feTIsdGhpcy5feTI9ZX19O3ZhciBCUD0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQpe3JldHVybiBlP25ldyBEUCh0LGUpOm5ldyBMUCh0LDApfXJldHVybiBuLmFscGhhPWZ1bmN0aW9uKGUpe3JldHVybiB0KCtlKX0sbn0pKC41KTtmdW5jdGlvbiBIUCh0LGUpe3RoaXMuX2NvbnRleHQ9dCx0aGlzLl9hbHBoYT1lfUhQLnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3gyPXRoaXMuX3kwPXRoaXMuX3kxPXRoaXMuX3kyPU5hTix0aGlzLl9sMDFfYT10aGlzLl9sMTJfYT10aGlzLl9sMjNfYT10aGlzLl9sMDFfMmE9dGhpcy5fbDEyXzJhPXRoaXMuX2wyM18yYT10aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7KHRoaXMuX2xpbmV8fDAhPT10aGlzLl9saW5lJiYzPT09dGhpcy5fcG9pbnQpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9saW5lfSxwb2ludDpmdW5jdGlvbih0LGUpe2lmKHQ9K3QsZT0rZSx0aGlzLl9wb2ludCl7dmFyIG49dGhpcy5feDItdCxpPXRoaXMuX3kyLWU7dGhpcy5fbDIzX2E9TWF0aC5zcXJ0KHRoaXMuX2wyM18yYT1NYXRoLnBvdyhuKm4raSppLHRoaXMuX2FscGhhKSl9c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9MjticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9Myx0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gyLHRoaXMuX3kyKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0aGlzLl94Mix0aGlzLl95Mik7YnJlYWs7Y2FzZSAzOnRoaXMuX3BvaW50PTQ7ZGVmYXVsdDpSUCh0aGlzLHQsZSl9dGhpcy5fbDAxX2E9dGhpcy5fbDEyX2EsdGhpcy5fbDEyX2E9dGhpcy5fbDIzX2EsdGhpcy5fbDAxXzJhPXRoaXMuX2wxMl8yYSx0aGlzLl9sMTJfMmE9dGhpcy5fbDIzXzJhLHRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXRoaXMuX3gyLHRoaXMuX3gyPXQsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9dGhpcy5feTIsdGhpcy5feTI9ZX19O3ZhciBGUD0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQpe3JldHVybiBlP25ldyBIUCh0LGUpOm5ldyBOUCh0LDApfXJldHVybiBuLmFscGhhPWZ1bmN0aW9uKGUpe3JldHVybiB0KCtlKX0sbn0pKC41KTtmdW5jdGlvbiBWUCh0KXt0aGlzLl9jb250ZXh0PXR9ZnVuY3Rpb24gVVAodCl7cmV0dXJuIHQ8MD8tMToxfWZ1bmN0aW9uIGpQKHQsZSxuKXt2YXIgaT10Ll94MS10Ll94MCxyPWUtdC5feDEsbz0odC5feTEtdC5feTApLyhpfHxyPDAmJi0wKSxhPShuLXQuX3kxKS8ocnx8aTwwJiYtMCkscz0obypyK2EqaSkvKGkrcik7cmV0dXJuKFVQKG8pK1VQKGEpKSpNYXRoLm1pbihNYXRoLmFicyhvKSxNYXRoLmFicyhhKSwuNSpNYXRoLmFicyhzKSl8fDB9ZnVuY3Rpb24gR1AodCxlKXt2YXIgbj10Ll94MS10Ll94MDtyZXR1cm4gbj8oMyoodC5feTEtdC5feTApL24tZSkvMjplfWZ1bmN0aW9uIFdQKHQsZSxuKXt2YXIgaT10Ll94MCxyPXQuX3gxLG89dC5feTEsYT0oci1pKS8zO3QuX2NvbnRleHQuYmV6aWVyQ3VydmVUbyhpK2EsdC5feTArYSplLHItYSxvLWEqbixyLG8pfWZ1bmN0aW9uIHFQKHQpe3RoaXMuX2NvbnRleHQ9dH1mdW5jdGlvbiBZUCh0KXt0aGlzLl9jb250ZXh0PW5ldyBYUCh0KX1mdW5jdGlvbiBYUCh0KXt0aGlzLl9jb250ZXh0PXR9ZnVuY3Rpb24gJFAodCl7dGhpcy5fY29udGV4dD10fWZ1bmN0aW9uIEtQKHQpe3ZhciBlLG4saT10Lmxlbmd0aC0xLHI9bmV3IEFycmF5KGkpLG89bmV3IEFycmF5KGkpLGE9bmV3IEFycmF5KGkpO2ZvcihyWzBdPTAsb1swXT0yLGFbMF09dFswXSsyKnRbMV0sZT0xO2U8aS0xOysrZSlyW2VdPTEsb1tlXT00LGFbZV09NCp0W2VdKzIqdFtlKzFdO2ZvcihyW2ktMV09MixvW2ktMV09NyxhW2ktMV09OCp0W2ktMV0rdFtpXSxlPTE7ZTxpOysrZSlvW2VdLT1uPXJbZV0vb1tlLTFdLGFbZV0tPW4qYVtlLTFdO2ZvcihyW2ktMV09YVtpLTFdL29baS0xXSxlPWktMjtlPj0wOy0tZSlyW2VdPShhW2VdLXJbZSsxXSkvb1tlXTtmb3Iob1tpLTFdPSh0W2ldK3JbaS0xXSkvMixlPTA7ZTxpLTE7KytlKW9bZV09Mip0W2UrMV0tcltlKzFdO3JldHVybltyLG9dfWZ1bmN0aW9uIFpQKHQsZSl7dGhpcy5fY29udGV4dD10LHRoaXMuX3Q9ZX1mdW5jdGlvbiBKUCh0LGUpe2lmKChyPXQubGVuZ3RoKT4xKWZvcih2YXIgbixpLHIsbz0xLGE9dFtlWzBdXSxzPWEubGVuZ3RoO288cjsrK28pZm9yKGk9YSxhPXRbZVtvXV0sbj0wO248czsrK24pYVtuXVsxXSs9YVtuXVswXT1pc05hTihpW25dWzFdKT9pW25dWzBdOmlbbl1bMV19ZnVuY3Rpb24gUVAodCl7Zm9yKHZhciBlPXQubGVuZ3RoLG49bmV3IEFycmF5KGUpOy0tZT49MDspbltlXT1lO3JldHVybiBufWZ1bmN0aW9uIHROKHQsZSl7cmV0dXJuIHRbZV19ZnVuY3Rpb24gZU4odCl7dmFyIGU9dC5tYXAobk4pO3JldHVybiBRUCh0KS5zb3J0KChmdW5jdGlvbih0LG4pe3JldHVybiBlW3RdLWVbbl19KSl9ZnVuY3Rpb24gbk4odCl7Zm9yKHZhciBlLG49LTEsaT0wLHI9dC5sZW5ndGgsbz0tMS8wOysrbjxyOykoZT0rdFtuXVsxXSk+byYmKG89ZSxpPW4pO3JldHVybiBpfWZ1bmN0aW9uIGlOKHQpe3ZhciBlPXQubWFwKHJOKTtyZXR1cm4gUVAodCkuc29ydCgoZnVuY3Rpb24odCxuKXtyZXR1cm4gZVt0XS1lW25dfSkpfWZ1bmN0aW9uIHJOKHQpe2Zvcih2YXIgZSxuPTAsaT0tMSxyPXQubGVuZ3RoOysraTxyOykoZT0rdFtpXVsxXSkmJihuKz1lKTtyZXR1cm4gbn1mdW5jdGlvbiBvTih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gYU4odCl7cmV0dXJuIHRbMF19ZnVuY3Rpb24gc04odCl7cmV0dXJuIHRbMV19ZnVuY3Rpb24gbE4oKXt0aGlzLl89bnVsbH1mdW5jdGlvbiBjTih0KXt0LlU9dC5DPXQuTD10LlI9dC5QPXQuTj1udWxsfWZ1bmN0aW9uIHVOKHQsZSl7dmFyIG49ZSxpPWUuUixyPW4uVTtyP3IuTD09PW4/ci5MPWk6ci5SPWk6dC5fPWksaS5VPXIsbi5VPWksbi5SPWkuTCxuLlImJihuLlIuVT1uKSxpLkw9bn1mdW5jdGlvbiBoTih0LGUpe3ZhciBuPWUsaT1lLkwscj1uLlU7cj9yLkw9PT1uP3IuTD1pOnIuUj1pOnQuXz1pLGkuVT1yLG4uVT1pLG4uTD1pLlIsbi5MJiYobi5MLlU9biksaS5SPW59ZnVuY3Rpb24gZE4odCl7Zm9yKDt0Lkw7KXQ9dC5MO3JldHVybiB0fWZ1bmN0aW9uIHBOKHQsZSxuLGkpe3ZhciByPVtudWxsLG51bGxdLG89RE4ucHVzaChyKS0xO3JldHVybiByLmxlZnQ9dCxyLnJpZ2h0PWUsbiYmbU4ocix0LGUsbiksaSYmbU4ocixlLHQsaSksT05bdC5pbmRleF0uaGFsZmVkZ2VzLnB1c2gobyksT05bZS5pbmRleF0uaGFsZmVkZ2VzLnB1c2gobykscn1mdW5jdGlvbiBmTih0LGUsbil7dmFyIGk9W2Usbl07cmV0dXJuIGkubGVmdD10LGl9ZnVuY3Rpb24gbU4odCxlLG4saSl7dFswXXx8dFsxXT90LmxlZnQ9PT1uP3RbMV09aTp0WzBdPWk6KHRbMF09aSx0LmxlZnQ9ZSx0LnJpZ2h0PW4pfWZ1bmN0aW9uIGdOKHQsZSxuLGkscil7dmFyIG8sYT10WzBdLHM9dFsxXSxsPWFbMF0sYz1hWzFdLHU9MCxoPTEsZD1zWzBdLWwscD1zWzFdLWM7aWYobz1lLWwsZHx8IShvPjApKXtpZihvLz1kLGQ8MCl7aWYobzx1KXJldHVybjtvPGgmJihoPW8pfWVsc2UgaWYoZD4wKXtpZihvPmgpcmV0dXJuO28+dSYmKHU9byl9aWYobz1pLWwsZHx8IShvPDApKXtpZihvLz1kLGQ8MCl7aWYobz5oKXJldHVybjtvPnUmJih1PW8pfWVsc2UgaWYoZD4wKXtpZihvPHUpcmV0dXJuO288aCYmKGg9byl9aWYobz1uLWMscHx8IShvPjApKXtpZihvLz1wLHA8MCl7aWYobzx1KXJldHVybjtvPGgmJihoPW8pfWVsc2UgaWYocD4wKXtpZihvPmgpcmV0dXJuO28+dSYmKHU9byl9aWYobz1yLWMscHx8IShvPDApKXtpZihvLz1wLHA8MCl7aWYobz5oKXJldHVybjtvPnUmJih1PW8pfWVsc2UgaWYocD4wKXtpZihvPHUpcmV0dXJuO288aCYmKGg9byl9cmV0dXJuISh1PjB8fGg8MSl8fCh1PjAmJih0WzBdPVtsK3UqZCxjK3UqcF0pLGg8MSYmKHRbMV09W2wraCpkLGMraCpwXSksITApfX19fX1mdW5jdGlvbiBfTih0LGUsbixpLHIpe3ZhciBvPXRbMV07aWYobylyZXR1cm4hMDt2YXIgYSxzLGw9dFswXSxjPXQubGVmdCx1PXQucmlnaHQsaD1jWzBdLGQ9Y1sxXSxwPXVbMF0sZj11WzFdLG09KGgrcCkvMjtpZihmPT09ZCl7aWYobTxlfHxtPj1pKXJldHVybjtpZihoPnApe2lmKGwpe2lmKGxbMV0+PXIpcmV0dXJufWVsc2UgbD1bbSxuXTtvPVttLHJdfWVsc2V7aWYobCl7aWYobFsxXTxuKXJldHVybn1lbHNlIGw9W20scl07bz1bbSxuXX19ZWxzZSBpZihzPShkK2YpLzItKGE9KGgtcCkvKGYtZCkpKm0sYTwtMXx8YT4xKWlmKGg+cCl7aWYobCl7aWYobFsxXT49cilyZXR1cm59ZWxzZSBsPVsobi1zKS9hLG5dO289WyhyLXMpL2Escl19ZWxzZXtpZihsKXtpZihsWzFdPG4pcmV0dXJufWVsc2UgbD1bKHItcykvYSxyXTtvPVsobi1zKS9hLG5dfWVsc2UgaWYoZDxmKXtpZihsKXtpZihsWzBdPj1pKXJldHVybn1lbHNlIGw9W2UsYSplK3NdO289W2ksYSppK3NdfWVsc2V7aWYobCl7aWYobFswXTxlKXJldHVybn1lbHNlIGw9W2ksYSppK3NdO289W2UsYSplK3NdfXJldHVybiB0WzBdPWwsdFsxXT1vLCEwfWZ1bmN0aW9uIHlOKHQsZSl7dmFyIG49dC5zaXRlLGk9ZS5sZWZ0LHI9ZS5yaWdodDtyZXR1cm4gbj09PXImJihyPWksaT1uKSxyP01hdGguYXRhbjIoclsxXS1pWzFdLHJbMF0taVswXSk6KG49PT1pPyhpPWVbMV0scj1lWzBdKTooaT1lWzBdLHI9ZVsxXSksTWF0aC5hdGFuMihpWzBdLXJbMF0sclsxXS1pWzFdKSl9ZnVuY3Rpb24gdk4odCxlKXtyZXR1cm4gZVsrKGUubGVmdCE9PXQuc2l0ZSldfWZ1bmN0aW9uIGJOKHQsZSl7cmV0dXJuIGVbKyhlLmxlZnQ9PT10LnNpdGUpXX1WUC5wcm90b3R5cGU9e2FyZWFTdGFydDp2UCxhcmVhRW5kOnZQLGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9wb2ludCYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKX0scG9pbnQ6ZnVuY3Rpb24odCxlKXt0PSt0LGU9K2UsdGhpcy5fcG9pbnQ/dGhpcy5fY29udGV4dC5saW5lVG8odCxlKToodGhpcy5fcG9pbnQ9MSx0aGlzLl9jb250ZXh0Lm1vdmVUbyh0LGUpKX19LHFQLnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3kwPXRoaXMuX3kxPXRoaXMuX3QwPU5hTix0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDI6dGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDEsdGhpcy5feTEpO2JyZWFrO2Nhc2UgMzpXUCh0aGlzLHRoaXMuX3QwLEdQKHRoaXMsdGhpcy5fdDApKX0odGhpcy5fbGluZXx8MCE9PXRoaXMuX2xpbmUmJjE9PT10aGlzLl9wb2ludCkmJnRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCksdGhpcy5fbGluZT0xLXRoaXMuX2xpbmV9LHBvaW50OmZ1bmN0aW9uKHQsZSl7dmFyIG49TmFOO2lmKGU9K2UsKHQ9K3QpIT09dGhpcy5feDF8fGUhPT10aGlzLl95MSl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKHQsZSk6dGhpcy5fY29udGV4dC5tb3ZlVG8odCxlKTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9MjticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9MyxXUCh0aGlzLEdQKHRoaXMsbj1qUCh0aGlzLHQsZSkpLG4pO2JyZWFrO2RlZmF1bHQ6V1AodGhpcyx0aGlzLl90MCxuPWpQKHRoaXMsdCxlKSl9dGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dCx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT1lLHRoaXMuX3QwPW59fX0sKFlQLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHFQLnByb3RvdHlwZSkpLnBvaW50PWZ1bmN0aW9uKHQsZSl7cVAucHJvdG90eXBlLnBvaW50LmNhbGwodGhpcyxlLHQpfSxYUC5wcm90b3R5cGU9e21vdmVUbzpmdW5jdGlvbih0LGUpe3RoaXMuX2NvbnRleHQubW92ZVRvKGUsdCl9LGNsb3NlUGF0aDpmdW5jdGlvbigpe3RoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCl9LGxpbmVUbzpmdW5jdGlvbih0LGUpe3RoaXMuX2NvbnRleHQubGluZVRvKGUsdCl9LGJlemllckN1cnZlVG86ZnVuY3Rpb24odCxlLG4saSxyLG8pe3RoaXMuX2NvbnRleHQuYmV6aWVyQ3VydmVUbyhlLHQsaSxuLG8scil9fSwkUC5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94PVtdLHRoaXMuX3k9W119LGxpbmVFbmQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl94LGU9dGhpcy5feSxuPXQubGVuZ3RoO2lmKG4paWYodGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVUbyh0WzBdLGVbMF0pOnRoaXMuX2NvbnRleHQubW92ZVRvKHRbMF0sZVswXSksMj09PW4pdGhpcy5fY29udGV4dC5saW5lVG8odFsxXSxlWzFdKTtlbHNlIGZvcih2YXIgaT1LUCh0KSxyPUtQKGUpLG89MCxhPTE7YTxuOysrbywrK2EpdGhpcy5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKGlbMF1bb10sclswXVtvXSxpWzFdW29dLHJbMV1bb10sdFthXSxlW2FdKTsodGhpcy5fbGluZXx8MCE9PXRoaXMuX2xpbmUmJjE9PT1uKSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZSx0aGlzLl94PXRoaXMuX3k9bnVsbH0scG9pbnQ6ZnVuY3Rpb24odCxlKXt0aGlzLl94LnB1c2goK3QpLHRoaXMuX3kucHVzaCgrZSl9fSxaUC5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94PXRoaXMuX3k9TmFOLHRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXswPHRoaXMuX3QmJnRoaXMuX3Q8MSYmMj09PXRoaXMuX3BvaW50JiZ0aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94LHRoaXMuX3kpLCh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMT09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPj0wJiYodGhpcy5fdD0xLXRoaXMuX3QsdGhpcy5fbGluZT0xLXRoaXMuX2xpbmUpfSxwb2ludDpmdW5jdGlvbih0LGUpe3N3aXRjaCh0PSt0LGU9K2UsdGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8odCxlKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0LGUpO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yO2RlZmF1bHQ6aWYodGhpcy5fdDw9MCl0aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94LGUpLHRoaXMuX2NvbnRleHQubGluZVRvKHQsZSk7ZWxzZXt2YXIgbj10aGlzLl94KigxLXRoaXMuX3QpK3QqdGhpcy5fdDt0aGlzLl9jb250ZXh0LmxpbmVUbyhuLHRoaXMuX3kpLHRoaXMuX2NvbnRleHQubGluZVRvKG4sZSl9fXRoaXMuX3g9dCx0aGlzLl95PWV9fSxsTi5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmxOLGluc2VydDpmdW5jdGlvbih0LGUpe3ZhciBuLGkscjtpZih0KXtpZihlLlA9dCxlLk49dC5OLHQuTiYmKHQuTi5QPWUpLHQuTj1lLHQuUil7Zm9yKHQ9dC5SO3QuTDspdD10Lkw7dC5MPWV9ZWxzZSB0LlI9ZTtuPXR9ZWxzZSB0aGlzLl8/KHQ9ZE4odGhpcy5fKSxlLlA9bnVsbCxlLk49dCx0LlA9dC5MPWUsbj10KTooZS5QPWUuTj1udWxsLHRoaXMuXz1lLG49bnVsbCk7Zm9yKGUuTD1lLlI9bnVsbCxlLlU9bixlLkM9ITAsdD1lO24mJm4uQzspbj09PShpPW4uVSkuTD8ocj1pLlIpJiZyLkM/KG4uQz1yLkM9ITEsaS5DPSEwLHQ9aSk6KHQ9PT1uLlImJih1Tih0aGlzLG4pLG49KHQ9bikuVSksbi5DPSExLGkuQz0hMCxoTih0aGlzLGkpKToocj1pLkwpJiZyLkM/KG4uQz1yLkM9ITEsaS5DPSEwLHQ9aSk6KHQ9PT1uLkwmJihoTih0aGlzLG4pLG49KHQ9bikuVSksbi5DPSExLGkuQz0hMCx1Tih0aGlzLGkpKSxuPXQuVTt0aGlzLl8uQz0hMX0scmVtb3ZlOmZ1bmN0aW9uKHQpe3QuTiYmKHQuTi5QPXQuUCksdC5QJiYodC5QLk49dC5OKSx0Lk49dC5QPW51bGw7dmFyIGUsbixpLHI9dC5VLG89dC5MLGE9dC5SO2lmKG49bz9hP2ROKGEpOm86YSxyP3IuTD09PXQ/ci5MPW46ci5SPW46dGhpcy5fPW4sbyYmYT8oaT1uLkMsbi5DPXQuQyxuLkw9byxvLlU9bixuIT09YT8ocj1uLlUsbi5VPXQuVSxyLkw9dD1uLlIsbi5SPWEsYS5VPW4pOihuLlU9cixyPW4sdD1uLlIpKTooaT10LkMsdD1uKSx0JiYodC5VPXIpLCFpKWlmKHQmJnQuQyl0LkM9ITE7ZWxzZXtkb3tpZih0PT09dGhpcy5fKWJyZWFrO2lmKHQ9PT1yLkwpe2lmKChlPXIuUikuQyYmKGUuQz0hMSxyLkM9ITAsdU4odGhpcyxyKSxlPXIuUiksZS5MJiZlLkwuQ3x8ZS5SJiZlLlIuQyl7ZS5SJiZlLlIuQ3x8KGUuTC5DPSExLGUuQz0hMCxoTih0aGlzLGUpLGU9ci5SKSxlLkM9ci5DLHIuQz1lLlIuQz0hMSx1Tih0aGlzLHIpLHQ9dGhpcy5fO2JyZWFrfX1lbHNlIGlmKChlPXIuTCkuQyYmKGUuQz0hMSxyLkM9ITAsaE4odGhpcyxyKSxlPXIuTCksZS5MJiZlLkwuQ3x8ZS5SJiZlLlIuQyl7ZS5MJiZlLkwuQ3x8KGUuUi5DPSExLGUuQz0hMCx1Tih0aGlzLGUpLGU9ci5MKSxlLkM9ci5DLHIuQz1lLkwuQz0hMSxoTih0aGlzLHIpLHQ9dGhpcy5fO2JyZWFrfWUuQz0hMCx0PXIscj1yLlV9d2hpbGUoIXQuQyk7dCYmKHQuQz0hMSl9fX07dmFyIHhOLHdOPVtdO2Z1bmN0aW9uIFNOKCl7Y04odGhpcyksdGhpcy54PXRoaXMueT10aGlzLmFyYz10aGlzLnNpdGU9dGhpcy5jeT1udWxsfWZ1bmN0aW9uIE1OKHQpe3ZhciBlPXQuUCxuPXQuTjtpZihlJiZuKXt2YXIgaT1lLnNpdGUscj10LnNpdGUsbz1uLnNpdGU7aWYoaSE9PW8pe3ZhciBhPXJbMF0scz1yWzFdLGw9aVswXS1hLGM9aVsxXS1zLHU9b1swXS1hLGg9b1sxXS1zLGQ9MioobCpoLWMqdSk7aWYoIShkPj0tSE4pKXt2YXIgcD1sKmwrYypjLGY9dSp1K2gqaCxtPShoKnAtYypmKS9kLGc9KGwqZi11KnApL2QsXz13Ti5wb3AoKXx8bmV3IFNOO18uYXJjPXQsXy5zaXRlPXIsXy54PW0rYSxfLnk9KF8uY3k9ZytzKStNYXRoLnNxcnQobSptK2cqZyksdC5jaXJjbGU9Xztmb3IodmFyIHk9bnVsbCx2PXpOLl87djspaWYoXy55PHYueXx8Xy55PT09di55JiZfLng8PXYueCl7aWYoIXYuTCl7eT12LlA7YnJlYWt9dj12Lkx9ZWxzZXtpZighdi5SKXt5PXY7YnJlYWt9dj12LlJ9ek4uaW5zZXJ0KHksXykseXx8KHhOPV8pfX19fWZ1bmN0aW9uIEVOKHQpe3ZhciBlPXQuY2lyY2xlO2UmJihlLlB8fCh4Tj1lLk4pLHpOLnJlbW92ZShlKSx3Ti5wdXNoKGUpLGNOKGUpLHQuY2lyY2xlPW51bGwpfXZhciBUTj1bXTtmdW5jdGlvbiBDTigpe2NOKHRoaXMpLHRoaXMuZWRnZT10aGlzLnNpdGU9dGhpcy5jaXJjbGU9bnVsbH1mdW5jdGlvbiBBTih0KXt2YXIgZT1UTi5wb3AoKXx8bmV3IENOO3JldHVybiBlLnNpdGU9dCxlfWZ1bmN0aW9uIGtOKHQpe0VOKHQpLFJOLnJlbW92ZSh0KSxUTi5wdXNoKHQpLGNOKHQpfWZ1bmN0aW9uIExOKHQpe3ZhciBlPXQuY2lyY2xlLG49ZS54LGk9ZS5jeSxyPVtuLGldLG89dC5QLGE9dC5OLHM9W3RdO2tOKHQpO2Zvcih2YXIgbD1vO2wuY2lyY2xlJiZNYXRoLmFicyhuLWwuY2lyY2xlLngpPEJOJiZNYXRoLmFicyhpLWwuY2lyY2xlLmN5KTxCTjspbz1sLlAscy51bnNoaWZ0KGwpLGtOKGwpLGw9bztzLnVuc2hpZnQobCksRU4obCk7Zm9yKHZhciBjPWE7Yy5jaXJjbGUmJk1hdGguYWJzKG4tYy5jaXJjbGUueCk8Qk4mJk1hdGguYWJzKGktYy5jaXJjbGUuY3kpPEJOOylhPWMuTixzLnB1c2goYyksa04oYyksYz1hO3MucHVzaChjKSxFTihjKTt2YXIgdSxoPXMubGVuZ3RoO2Zvcih1PTE7dTxoOysrdSltTigoYz1zW3VdKS5lZGdlLChsPXNbdS0xXSkuc2l0ZSxjLnNpdGUscik7KGM9c1toLTFdKS5lZGdlPXBOKChsPXNbMF0pLnNpdGUsYy5zaXRlLG51bGwsciksTU4obCksTU4oYyl9ZnVuY3Rpb24gUE4odCl7Zm9yKHZhciBlLG4saSxyLG89dFswXSxhPXRbMV0scz1STi5fO3M7KWlmKChpPU5OKHMsYSktbyk+Qk4pcz1zLkw7ZWxzZXtpZighKChyPW8tSU4ocyxhKSk+Qk4pKXtpPi1CTj8oZT1zLlAsbj1zKTpyPi1CTj8oZT1zLG49cy5OKTplPW49czticmVha31pZighcy5SKXtlPXM7YnJlYWt9cz1zLlJ9IShmdW5jdGlvbiBsKHQpe3JldHVybiBPTlt0LmluZGV4XT17c2l0ZTp0LGhhbGZlZGdlczpbXX19KSh0KTt2YXIgYz1BTih0KTtpZihSTi5pbnNlcnQoZSxjKSxlfHxuKXtpZihlPT09bilyZXR1cm4gRU4oZSksbj1BTihlLnNpdGUpLFJOLmluc2VydChjLG4pLGMuZWRnZT1uLmVkZ2U9cE4oZS5zaXRlLGMuc2l0ZSksTU4oZSksdm9pZCBNTihuKTtpZihuKXtFTihlKSxFTihuKTt2YXIgdT1lLnNpdGUsaD11WzBdLGQ9dVsxXSxwPXRbMF0taCxmPXRbMV0tZCxtPW4uc2l0ZSxnPW1bMF0taCxfPW1bMV0tZCx5PTIqKHAqXy1mKmcpLHY9cCpwK2YqZixiPWcqZytfKl8seD1bKF8qdi1mKmIpL3kraCwocCpiLWcqdikveStkXTttTihuLmVkZ2UsdSxtLHgpLGMuZWRnZT1wTih1LHQsbnVsbCx4KSxuLmVkZ2U9cE4odCxtLG51bGwseCksTU4oZSksTU4obil9ZWxzZSBjLmVkZ2U9cE4oZS5zaXRlLGMuc2l0ZSl9fWZ1bmN0aW9uIE5OKHQsZSl7dmFyIG49dC5zaXRlLGk9blswXSxyPW5bMV0sbz1yLWU7aWYoIW8pcmV0dXJuIGk7dmFyIGE9dC5QO2lmKCFhKXJldHVybi0xLzA7dmFyIHM9KG49YS5zaXRlKVswXSxsPW5bMV0sYz1sLWU7aWYoIWMpcmV0dXJuIHM7dmFyIHU9cy1pLGg9MS9vLTEvYyxkPXUvYztyZXR1cm4gaD8oLWQrTWF0aC5zcXJ0KGQqZC0yKmgqKHUqdS8oLTIqYyktbCtjLzIrci1vLzIpKSkvaCtpOihpK3MpLzJ9ZnVuY3Rpb24gSU4odCxlKXt2YXIgbj10Lk47aWYobilyZXR1cm4gTk4obixlKTt2YXIgaT10LnNpdGU7cmV0dXJuIGlbMV09PT1lP2lbMF06MS8wfXZhciBSTixPTix6TixETixCTj0xZS02LEhOPTFlLTEyO2Z1bmN0aW9uIEZOKHQsZSxuKXtyZXR1cm4odFswXS1uWzBdKSooZVsxXS10WzFdKS0odFswXS1lWzBdKSooblsxXS10WzFdKX1mdW5jdGlvbiBWTih0LGUpe3JldHVybiBlWzFdLXRbMV18fGVbMF0tdFswXX1mdW5jdGlvbiBVTih0LGUpe3ZhciBuLGkscixvPXQuc29ydChWTikucG9wKCk7Zm9yKEROPVtdLE9OPW5ldyBBcnJheSh0Lmxlbmd0aCksUk49bmV3IGxOLHpOPW5ldyBsTjs7KWlmKHI9eE4sbyYmKCFyfHxvWzFdPHIueXx8b1sxXT09PXIueSYmb1swXTxyLngpKW9bMF09PT1uJiZvWzFdPT09aXx8KFBOKG8pLG49b1swXSxpPW9bMV0pLG89dC5wb3AoKTtlbHNle2lmKCFyKWJyZWFrO0xOKHIuYXJjKX1pZigoZnVuY3Rpb24gYSgpe2Zvcih2YXIgdCxlLG4saSxyPTAsbz1PTi5sZW5ndGg7cjxvOysrcilpZigodD1PTltyXSkmJihpPShlPXQuaGFsZmVkZ2VzKS5sZW5ndGgpKXt2YXIgYT1uZXcgQXJyYXkoaSkscz1uZXcgQXJyYXkoaSk7Zm9yKG49MDtuPGk7KytuKWFbbl09bixzW25dPXlOKHQsRE5bZVtuXV0pO2ZvcihhLnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHNbZV0tc1t0XX0pKSxuPTA7bjxpOysrbilzW25dPWVbYVtuXV07Zm9yKG49MDtuPGk7KytuKWVbbl09c1tuXX19KSgpLGUpe3ZhciBzPStlWzBdWzBdLGw9K2VbMF1bMV0sYz0rZVsxXVswXSx1PStlWzFdWzFdOyEoZnVuY3Rpb24gaCh0LGUsbixpKXtmb3IodmFyIHIsbz1ETi5sZW5ndGg7by0tOylfTihyPUROW29dLHQsZSxuLGkpJiZnTihyLHQsZSxuLGkpJiYoTWF0aC5hYnMoclswXVswXS1yWzFdWzBdKT5CTnx8TWF0aC5hYnMoclswXVsxXS1yWzFdWzFdKT5CTil8fGRlbGV0ZSBETltvXX0pKHMsbCxjLHUpLChmdW5jdGlvbiBkKHQsZSxuLGkpe3ZhciByLG8sYSxzLGwsYyx1LGgsZCxwLGYsbSxnPU9OLmxlbmd0aCxfPSEwO2ZvcihyPTA7cjxnOysrcilpZihvPU9OW3JdKXtmb3IoYT1vLnNpdGUscz0obD1vLmhhbGZlZGdlcykubGVuZ3RoO3MtLTspRE5bbFtzXV18fGwuc3BsaWNlKHMsMSk7Zm9yKHM9MCxjPWwubGVuZ3RoO3M8YzspZj0ocD1iTihvLEROW2xbc11dKSlbMF0sbT1wWzFdLGg9KHU9dk4obyxETltsWysrcyVjXV0pKVswXSxkPXVbMV0sKE1hdGguYWJzKGYtaCk+Qk58fE1hdGguYWJzKG0tZCk+Qk4pJiYobC5zcGxpY2UocywwLEROLnB1c2goZk4oYSxwLE1hdGguYWJzKGYtdCk8Qk4mJmktbT5CTj9bdCxNYXRoLmFicyhoLXQpPEJOP2Q6aV06TWF0aC5hYnMobS1pKTxCTiYmbi1mPkJOP1tNYXRoLmFicyhkLWkpPEJOP2g6bixpXTpNYXRoLmFicyhmLW4pPEJOJiZtLWU+Qk4/W24sTWF0aC5hYnMoaC1uKTxCTj9kOmVdOk1hdGguYWJzKG0tZSk8Qk4mJmYtdD5CTj9bTWF0aC5hYnMoZC1lKTxCTj9oOnQsZV06bnVsbCkpLTEpLCsrYyk7YyYmKF89ITEpfWlmKF8pe3ZhciB5LHYsYix4PTEvMDtmb3Iocj0wLF89bnVsbDtyPGc7KytyKShvPU9OW3JdKSYmKGI9KHk9KGE9by5zaXRlKVswXS10KSp5Kyh2PWFbMV0tZSkqdik8eCYmKHg9YixfPW8pO2lmKF8pe3ZhciB3PVt0LGVdLFM9W3QsaV0sTT1bbixpXSxFPVtuLGVdO18uaGFsZmVkZ2VzLnB1c2goRE4ucHVzaChmTihhPV8uc2l0ZSx3LFMpKS0xLEROLnB1c2goZk4oYSxTLE0pKS0xLEROLnB1c2goZk4oYSxNLEUpKS0xLEROLnB1c2goZk4oYSxFLHcpKS0xKX19Zm9yKHI9MDtyPGc7KytyKShvPU9OW3JdKSYmKG8uaGFsZmVkZ2VzLmxlbmd0aHx8ZGVsZXRlIE9OW3JdKX0pKHMsbCxjLHUpfXRoaXMuZWRnZXM9RE4sdGhpcy5jZWxscz1PTixSTj16Tj1ETj1PTj1udWxsfWZ1bmN0aW9uIGpOKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX1mdW5jdGlvbiBHTih0LGUsbil7dGhpcy50YXJnZXQ9dCx0aGlzLnR5cGU9ZSx0aGlzLnRyYW5zZm9ybT1ufWZ1bmN0aW9uIFdOKHQsZSxuKXt0aGlzLms9dCx0aGlzLng9ZSx0aGlzLnk9bn1VTi5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOlVOLHBvbHlnb25zOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5lZGdlcztyZXR1cm4gdGhpcy5jZWxscy5tYXAoKGZ1bmN0aW9uKGUpe3ZhciBuPWUuaGFsZmVkZ2VzLm1hcCgoZnVuY3Rpb24obil7cmV0dXJuIHZOKGUsdFtuXSl9KSk7cmV0dXJuIG4uZGF0YT1lLnNpdGUuZGF0YSxufSkpfSx0cmlhbmdsZXM6ZnVuY3Rpb24oKXt2YXIgdD1bXSxlPXRoaXMuZWRnZXM7cmV0dXJuIHRoaXMuY2VsbHMuZm9yRWFjaCgoZnVuY3Rpb24obixpKXtpZihvPShyPW4uaGFsZmVkZ2VzKS5sZW5ndGgpZm9yKHZhciByLG8sYSxzPW4uc2l0ZSxsPS0xLGM9ZVtyW28tMV1dLHU9Yy5sZWZ0PT09cz9jLnJpZ2h0OmMubGVmdDsrK2w8bzspYT11LHU9KGM9ZVtyW2xdXSkubGVmdD09PXM/Yy5yaWdodDpjLmxlZnQsYSYmdSYmaTxhLmluZGV4JiZpPHUuaW5kZXgmJkZOKHMsYSx1KTwwJiZ0LnB1c2goW3MuZGF0YSxhLmRhdGEsdS5kYXRhXSl9KSksdH0sbGlua3M6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lZGdlcy5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnJpZ2h0fSkpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJue3NvdXJjZTp0LmxlZnQuZGF0YSx0YXJnZXQ6dC5yaWdodC5kYXRhfX0pKX0sZmluZDpmdW5jdGlvbih0LGUsbil7Zm9yKHZhciBpLHIsbz10aGlzLGE9by5fZm91bmR8fDAscz1vLmNlbGxzLmxlbmd0aDshKHI9by5jZWxsc1thXSk7KWlmKCsrYT49cylyZXR1cm4gbnVsbDt2YXIgbD10LXIuc2l0ZVswXSxjPWUtci5zaXRlWzFdLHU9bCpsK2MqYztkb3tyPW8uY2VsbHNbaT1hXSxhPW51bGwsci5oYWxmZWRnZXMuZm9yRWFjaCgoZnVuY3Rpb24obil7dmFyIGk9by5lZGdlc1tuXSxzPWkubGVmdDtpZihzIT09ci5zaXRlJiZzfHwocz1pLnJpZ2h0KSl7dmFyIGw9dC1zWzBdLGM9ZS1zWzFdLGg9bCpsK2MqYztoPHUmJih1PWgsYT1zLmluZGV4KX19KSl9d2hpbGUobnVsbCE9PWEpO3JldHVybiBvLl9mb3VuZD1pLG51bGw9PW58fHU8PW4qbj9yLnNpdGU6bnVsbH19LFdOLnByb3RvdHlwZT17Y29uc3RydWN0b3I6V04sc2NhbGU6ZnVuY3Rpb24odCl7cmV0dXJuIDE9PT10P3RoaXM6bmV3IFdOKHRoaXMuayp0LHRoaXMueCx0aGlzLnkpfSx0cmFuc2xhdGU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gMD09PXQmMD09PWU/dGhpczpuZXcgV04odGhpcy5rLHRoaXMueCt0aGlzLmsqdCx0aGlzLnkrdGhpcy5rKmUpfSxhcHBseTpmdW5jdGlvbih0KXtyZXR1cm5bdFswXSp0aGlzLmsrdGhpcy54LHRbMV0qdGhpcy5rK3RoaXMueV19LGFwcGx5WDpmdW5jdGlvbih0KXtyZXR1cm4gdCp0aGlzLmsrdGhpcy54fSxhcHBseVk6ZnVuY3Rpb24odCl7cmV0dXJuIHQqdGhpcy5rK3RoaXMueX0saW52ZXJ0OmZ1bmN0aW9uKHQpe3JldHVyblsodFswXS10aGlzLngpL3RoaXMuaywodFsxXS10aGlzLnkpL3RoaXMua119LGludmVydFg6ZnVuY3Rpb24odCl7cmV0dXJuKHQtdGhpcy54KS90aGlzLmt9LGludmVydFk6ZnVuY3Rpb24odCl7cmV0dXJuKHQtdGhpcy55KS90aGlzLmt9LHJlc2NhbGVYOmZ1bmN0aW9uKHQpe3JldHVybiB0LmNvcHkoKS5kb21haW4odC5yYW5nZSgpLm1hcCh0aGlzLmludmVydFgsdGhpcykubWFwKHQuaW52ZXJ0LHQpKX0scmVzY2FsZVk6ZnVuY3Rpb24odCl7cmV0dXJuIHQuY29weSgpLmRvbWFpbih0LnJhbmdlKCkubWFwKHRoaXMuaW52ZXJ0WSx0aGlzKS5tYXAodC5pbnZlcnQsdCkpfSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiJ0cmFuc2xhdGUoIit0aGlzLngrIiwiK3RoaXMueSsiKSBzY2FsZSgiK3RoaXMuaysiKSJ9fTt2YXIgcU49bmV3IFdOKDEsMCwwKTtmdW5jdGlvbiBZTih0KXtmb3IoOyF0Ll9fem9vbTspaWYoISh0PXQucGFyZW50Tm9kZSkpcmV0dXJuIHFOO3JldHVybiB0Ll9fem9vbX1mdW5jdGlvbiBYTigpe011LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpfWZ1bmN0aW9uICROKCl7TXUucHJldmVudERlZmF1bHQoKSxNdS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKX1mdW5jdGlvbiBLTigpe3JldHVybiFNdS5jdHJsS2V5JiYhTXUuYnV0dG9ufWZ1bmN0aW9uIFpOKCl7dmFyIHQ9dGhpcztyZXR1cm4gdCBpbnN0YW5jZW9mIFNWR0VsZW1lbnQ/KHQ9dC5vd25lclNWR0VsZW1lbnR8fHQpLmhhc0F0dHJpYnV0ZSgidmlld0JveCIpP1tbKHQ9dC52aWV3Qm94LmJhc2VWYWwpLngsdC55XSxbdC54K3Qud2lkdGgsdC55K3QuaGVpZ2h0XV06W1swLDBdLFt0LndpZHRoLmJhc2VWYWwudmFsdWUsdC5oZWlnaHQuYmFzZVZhbC52YWx1ZV1dOltbMCwwXSxbdC5jbGllbnRXaWR0aCx0LmNsaWVudEhlaWdodF1dfWZ1bmN0aW9uIEpOKCl7cmV0dXJuIHRoaXMuX196b29tfHxxTn1mdW5jdGlvbiBRTigpe3JldHVybi1NdS5kZWx0YVkqKDE9PT1NdS5kZWx0YU1vZGU/LjA1Ok11LmRlbHRhTW9kZT8xOi4wMDIpfWZ1bmN0aW9uIHRJKCl7cmV0dXJuIG5hdmlnYXRvci5tYXhUb3VjaFBvaW50c3x8Im9udG91Y2hzdGFydCJpbiB0aGlzfWZ1bmN0aW9uIGVJKHQsZSxuKXt2YXIgaT10LmludmVydFgoZVswXVswXSktblswXVswXSxyPXQuaW52ZXJ0WChlWzFdWzBdKS1uWzFdWzBdLG89dC5pbnZlcnRZKGVbMF1bMV0pLW5bMF1bMV0sYT10LmludmVydFkoZVsxXVsxXSktblsxXVsxXTtyZXR1cm4gdC50cmFuc2xhdGUocj5pPyhpK3IpLzI6TWF0aC5taW4oMCxpKXx8TWF0aC5tYXgoMCxyKSxhPm8/KG8rYSkvMjpNYXRoLm1pbigwLG8pfHxNYXRoLm1heCgwLGEpKX1mdW5jdGlvbiBuSSgpe3ZhciB0LGUsbj1LTixpPVpOLHI9ZUksbz1RTixhPXRJLHM9WzAsMS8wXSxsPVtbLTEvMCwtMS8wXSxbMS8wLDEvMF1dLGM9MjUwLHU9RXAsaD13Yygic3RhcnQiLCJ6b29tIiwiZW5kIiksZD01MDAscD0wO2Z1bmN0aW9uIGYodCl7dC5wcm9wZXJ0eSgiX196b29tIixKTikub24oIndoZWVsLnpvb20iLHgpLm9uKCJtb3VzZWRvd24uem9vbSIsdykub24oImRibGNsaWNrLnpvb20iLFMpLmZpbHRlcihhKS5vbigidG91Y2hzdGFydC56b29tIixNKS5vbigidG91Y2htb3ZlLnpvb20iLEUpLm9uKCJ0b3VjaGVuZC56b29tIHRvdWNoY2FuY2VsLnpvb20iLFQpLnN0eWxlKCJ0b3VjaC1hY3Rpb24iLCJub25lIikuc3R5bGUoIi13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvciIsInJnYmEoMCwwLDAsMCkiKX1mdW5jdGlvbiBtKHQsZSl7cmV0dXJuKGU9TWF0aC5tYXgoc1swXSxNYXRoLm1pbihzWzFdLGUpKSk9PT10Lms/dDpuZXcgV04oZSx0LngsdC55KX1mdW5jdGlvbiBnKHQsZSxuKXt2YXIgaT1lWzBdLW5bMF0qdC5rLHI9ZVsxXS1uWzFdKnQuaztyZXR1cm4gaT09PXQueCYmcj09PXQueT90Om5ldyBXTih0LmssaSxyKX1mdW5jdGlvbiBfKHQpe3JldHVyblsoK3RbMF1bMF0rICt0WzFdWzBdKS8yLCgrdFswXVsxXSsgK3RbMV1bMV0pLzJdfWZ1bmN0aW9uIHkodCxlLG4pe3Qub24oInN0YXJ0Lnpvb20iLChmdW5jdGlvbigpe3YodGhpcyxhcmd1bWVudHMpLnN0YXJ0KCl9KSkub24oImludGVycnVwdC56b29tIGVuZC56b29tIiwoZnVuY3Rpb24oKXt2KHRoaXMsYXJndW1lbnRzKS5lbmQoKX0pKS50d2Vlbigiem9vbSIsKGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxyPWFyZ3VtZW50cyxvPXYodCxyKSxhPWkuYXBwbHkodCxyKSxzPW51bGw9PW4/XyhhKToiZnVuY3Rpb24iPT10eXBlb2Ygbj9uLmFwcGx5KHQscik6bixsPU1hdGgubWF4KGFbMV1bMF0tYVswXVswXSxhWzFdWzFdLWFbMF1bMV0pLGM9dC5fX3pvb20saD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lLmFwcGx5KHQscik6ZSxkPXUoYy5pbnZlcnQocykuY29uY2F0KGwvYy5rKSxoLmludmVydChzKS5jb25jYXQobC9oLmspKTtyZXR1cm4gZnVuY3Rpb24odCl7aWYoMT09PXQpdD1oO2Vsc2V7dmFyIGU9ZCh0KSxuPWwvZVsyXTt0PW5ldyBXTihuLHNbMF0tZVswXSpuLHNbMV0tZVsxXSpuKX1vLnpvb20obnVsbCx0KX19KSl9ZnVuY3Rpb24gdih0LGUsbil7cmV0dXJuIW4mJnQuX196b29taW5nfHxuZXcgYih0LGUpfWZ1bmN0aW9uIGIodCxlKXt0aGlzLnRoYXQ9dCx0aGlzLmFyZ3M9ZSx0aGlzLmFjdGl2ZT0wLHRoaXMuZXh0ZW50PWkuYXBwbHkodCxlKSx0aGlzLnRhcHM9MH1mdW5jdGlvbiB4KCl7aWYobi5hcHBseSh0aGlzLGFyZ3VtZW50cykpe3ZhciB0PXYodGhpcyxhcmd1bWVudHMpLGU9dGhpcy5fX3pvb20saT1NYXRoLm1heChzWzBdLE1hdGgubWluKHNbMV0sZS5rKk1hdGgucG93KDIsby5hcHBseSh0aGlzLGFyZ3VtZW50cykpKSksYT1iaCh0aGlzKTtpZih0LndoZWVsKXQubW91c2VbMF1bMF09PT1hWzBdJiZ0Lm1vdXNlWzBdWzFdPT09YVsxXXx8KHQubW91c2VbMV09ZS5pbnZlcnQodC5tb3VzZVswXT1hKSksY2xlYXJUaW1lb3V0KHQud2hlZWwpO2Vsc2V7aWYoZS5rPT09aSlyZXR1cm47dC5tb3VzZT1bYSxlLmludmVydChhKV0sbGYodGhpcyksdC5zdGFydCgpfSROKCksdC53aGVlbD1zZXRUaW1lb3V0KGMsMTUwKSx0Lnpvb20oIm1vdXNlIixyKGcobShlLGkpLHQubW91c2VbMF0sdC5tb3VzZVsxXSksdC5leHRlbnQsbCkpfWZ1bmN0aW9uIGMoKXt0LndoZWVsPW51bGwsdC5lbmQoKX19ZnVuY3Rpb24gdygpe2lmKCFlJiZuLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl7dmFyIHQ9dih0aGlzLGFyZ3VtZW50cywhMCksaT1EdShNdS52aWV3KS5vbigibW91c2Vtb3ZlLnpvb20iLGMsITApLm9uKCJtb3VzZXVwLnpvb20iLHUsITApLG89YmgodGhpcyksYT1NdS5jbGllbnRYLHM9TXUuY2xpZW50WTtFaChNdS52aWV3KSxYTigpLHQubW91c2U9W28sdGhpcy5fX3pvb20uaW52ZXJ0KG8pXSxsZih0aGlzKSx0LnN0YXJ0KCl9ZnVuY3Rpb24gYygpe2lmKCROKCksIXQubW92ZWQpe3ZhciBlPU11LmNsaWVudFgtYSxuPU11LmNsaWVudFktczt0Lm1vdmVkPWUqZStuKm4+cH10Lnpvb20oIm1vdXNlIixyKGcodC50aGF0Ll9fem9vbSx0Lm1vdXNlWzBdPWJoKHQudGhhdCksdC5tb3VzZVsxXSksdC5leHRlbnQsbCkpfWZ1bmN0aW9uIHUoKXtpLm9uKCJtb3VzZW1vdmUuem9vbSBtb3VzZXVwLnpvb20iLG51bGwpLFRoKE11LnZpZXcsdC5tb3ZlZCksJE4oKSx0LmVuZCgpfX1mdW5jdGlvbiBTKCl7aWYobi5hcHBseSh0aGlzLGFyZ3VtZW50cykpe3ZhciB0PXRoaXMuX196b29tLGU9YmgodGhpcyksbz10LmludmVydChlKSxhPXQuayooTXUuc2hpZnRLZXk/LjU6Mikscz1yKGcobSh0LGEpLGUsbyksaS5hcHBseSh0aGlzLGFyZ3VtZW50cyksbCk7JE4oKSxjPjA/RHUodGhpcykudHJhbnNpdGlvbigpLmR1cmF0aW9uKGMpLmNhbGwoeSxzLGUpOkR1KHRoaXMpLmNhbGwoZi50cmFuc2Zvcm0scyl9fWZ1bmN0aW9uIE0oKXtpZihuLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl7dmFyIGUsaSxyLG8sYT1NdS50b3VjaGVzLHM9YS5sZW5ndGgsbD12KHRoaXMsYXJndW1lbnRzLE11LmNoYW5nZWRUb3VjaGVzLmxlbmd0aD09PXMpO2ZvcihYTigpLGk9MDtpPHM7KytpKW89W289d2godGhpcyxhLChyPWFbaV0pLmlkZW50aWZpZXIpLHRoaXMuX196b29tLmludmVydChvKSxyLmlkZW50aWZpZXJdLGwudG91Y2gwP2wudG91Y2gxfHxsLnRvdWNoMFsyXT09PW9bMl18fChsLnRvdWNoMT1vLGwudGFwcz0wKToobC50b3VjaDA9byxlPSEwLGwudGFwcz0xKyEhdCk7dCYmKHQ9Y2xlYXJUaW1lb3V0KHQpKSxlJiYobC50YXBzPDImJih0PXNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7dD1udWxsfSksZCkpLGxmKHRoaXMpLGwuc3RhcnQoKSl9fWZ1bmN0aW9uIEUoKXtpZih0aGlzLl9fem9vbWluZyl7dmFyIGUsbixpLG8sYT12KHRoaXMsYXJndW1lbnRzKSxzPU11LmNoYW5nZWRUb3VjaGVzLGM9cy5sZW5ndGg7Zm9yKCROKCksdCYmKHQ9Y2xlYXJUaW1lb3V0KHQpKSxhLnRhcHM9MCxlPTA7ZTxjOysrZSlpPXdoKHRoaXMscywobj1zW2VdKS5pZGVudGlmaWVyKSxhLnRvdWNoMCYmYS50b3VjaDBbMl09PT1uLmlkZW50aWZpZXI/YS50b3VjaDBbMF09aTphLnRvdWNoMSYmYS50b3VjaDFbMl09PT1uLmlkZW50aWZpZXImJihhLnRvdWNoMVswXT1pKTtpZihuPWEudGhhdC5fX3pvb20sYS50b3VjaDEpe3ZhciB1PWEudG91Y2gwWzBdLGg9YS50b3VjaDBbMV0sZD1hLnRvdWNoMVswXSxwPWEudG91Y2gxWzFdLGY9KGY9ZFswXS11WzBdKSpmKyhmPWRbMV0tdVsxXSkqZixfPShfPXBbMF0taFswXSkqXysoXz1wWzFdLWhbMV0pKl87bj1tKG4sTWF0aC5zcXJ0KGYvXykpLGk9Wyh1WzBdK2RbMF0pLzIsKHVbMV0rZFsxXSkvMl0sbz1bKGhbMF0rcFswXSkvMiwoaFsxXStwWzFdKS8yXX1lbHNle2lmKCFhLnRvdWNoMClyZXR1cm47aT1hLnRvdWNoMFswXSxvPWEudG91Y2gwWzFdfWEuem9vbSgidG91Y2giLHIoZyhuLGksbyksYS5leHRlbnQsbCkpfX1mdW5jdGlvbiBUKCl7aWYodGhpcy5fX3pvb21pbmcpe3ZhciB0LG4saT12KHRoaXMsYXJndW1lbnRzKSxyPU11LmNoYW5nZWRUb3VjaGVzLG89ci5sZW5ndGg7Zm9yKFhOKCksZSYmY2xlYXJUaW1lb3V0KGUpLGU9c2V0VGltZW91dCgoZnVuY3Rpb24oKXtlPW51bGx9KSxkKSx0PTA7dDxvOysrdCluPXJbdF0saS50b3VjaDAmJmkudG91Y2gwWzJdPT09bi5pZGVudGlmaWVyP2RlbGV0ZSBpLnRvdWNoMDppLnRvdWNoMSYmaS50b3VjaDFbMl09PT1uLmlkZW50aWZpZXImJmRlbGV0ZSBpLnRvdWNoMTtpZihpLnRvdWNoMSYmIWkudG91Y2gwJiYoaS50b3VjaDA9aS50b3VjaDEsZGVsZXRlIGkudG91Y2gxKSxpLnRvdWNoMClpLnRvdWNoMFsxXT10aGlzLl9fem9vbS5pbnZlcnQoaS50b3VjaDBbMF0pO2Vsc2UgaWYoaS5lbmQoKSwyPT09aS50YXBzKXt2YXIgYT1EdSh0aGlzKS5vbigiZGJsY2xpY2suem9vbSIpO2EmJmEuYXBwbHkodGhpcyxhcmd1bWVudHMpfX19cmV0dXJuIGYudHJhbnNmb3JtPWZ1bmN0aW9uKHQsZSxuKXt2YXIgaT10LnNlbGVjdGlvbj90LnNlbGVjdGlvbigpOnQ7aS5wcm9wZXJ0eSgiX196b29tIixKTiksdCE9PWk/eSh0LGUsbik6aS5pbnRlcnJ1cHQoKS5lYWNoKChmdW5jdGlvbigpe3YodGhpcyxhcmd1bWVudHMpLnN0YXJ0KCkuem9vbShudWxsLCJmdW5jdGlvbiI9PXR5cGVvZiBlP2UuYXBwbHkodGhpcyxhcmd1bWVudHMpOmUpLmVuZCgpfSkpfSxmLnNjYWxlQnk9ZnVuY3Rpb24odCxlLG4pe2Yuc2NhbGVUbyh0LChmdW5jdGlvbigpe3ZhciB0PXRoaXMuX196b29tLmssbj0iZnVuY3Rpb24iPT10eXBlb2YgZT9lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTplO3JldHVybiB0Km59KSxuKX0sZi5zY2FsZVRvPWZ1bmN0aW9uKHQsZSxuKXtmLnRyYW5zZm9ybSh0LChmdW5jdGlvbigpe3ZhciB0PWkuYXBwbHkodGhpcyxhcmd1bWVudHMpLG89dGhpcy5fX3pvb20sYT1udWxsPT1uP18odCk6ImZ1bmN0aW9uIj09dHlwZW9mIG4/bi5hcHBseSh0aGlzLGFyZ3VtZW50cyk6bixzPW8uaW52ZXJ0KGEpLGM9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk6ZTtyZXR1cm4gcihnKG0obyxjKSxhLHMpLHQsbCl9KSxuKX0sZi50cmFuc2xhdGVCeT1mdW5jdGlvbih0LGUsbil7Zi50cmFuc2Zvcm0odCwoZnVuY3Rpb24oKXtyZXR1cm4gcih0aGlzLl9fem9vbS50cmFuc2xhdGUoImZ1bmN0aW9uIj09dHlwZW9mIGU/ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk6ZSwiZnVuY3Rpb24iPT10eXBlb2Ygbj9uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTpuKSxpLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxsKX0pKX0sZi50cmFuc2xhdGVUbz1mdW5jdGlvbih0LGUsbixvKXtmLnRyYW5zZm9ybSh0LChmdW5jdGlvbigpe3ZhciB0PWkuYXBwbHkodGhpcyxhcmd1bWVudHMpLGE9dGhpcy5fX3pvb20scz1udWxsPT1vP18odCk6ImZ1bmN0aW9uIj09dHlwZW9mIG8/by5hcHBseSh0aGlzLGFyZ3VtZW50cyk6bztyZXR1cm4gcihxTi50cmFuc2xhdGUoc1swXSxzWzFdKS5zY2FsZShhLmspLnRyYW5zbGF0ZSgiZnVuY3Rpb24iPT10eXBlb2YgZT8tZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk6LWUsImZ1bmN0aW9uIj09dHlwZW9mIG4/LW4uYXBwbHkodGhpcyxhcmd1bWVudHMpOi1uKSx0LGwpfSksbyl9LGIucHJvdG90eXBlPXtzdGFydDpmdW5jdGlvbigpe3JldHVybiAxPT0rK3RoaXMuYWN0aXZlJiYodGhpcy50aGF0Ll9fem9vbWluZz10aGlzLHRoaXMuZW1pdCgic3RhcnQiKSksdGhpc30sem9vbTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLm1vdXNlJiYibW91c2UiIT09dCYmKHRoaXMubW91c2VbMV09ZS5pbnZlcnQodGhpcy5tb3VzZVswXSkpLHRoaXMudG91Y2gwJiYidG91Y2giIT09dCYmKHRoaXMudG91Y2gwWzFdPWUuaW52ZXJ0KHRoaXMudG91Y2gwWzBdKSksdGhpcy50b3VjaDEmJiJ0b3VjaCIhPT10JiYodGhpcy50b3VjaDFbMV09ZS5pbnZlcnQodGhpcy50b3VjaDFbMF0pKSx0aGlzLnRoYXQuX196b29tPWUsdGhpcy5lbWl0KCJ6b29tIiksdGhpc30sZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIDA9PS0tdGhpcy5hY3RpdmUmJihkZWxldGUgdGhpcy50aGF0Ll9fem9vbWluZyx0aGlzLmVtaXQoImVuZCIpKSx0aGlzfSxlbWl0OmZ1bmN0aW9uKHQpe0x1KG5ldyBHTihmLHQsdGhpcy50aGF0Ll9fem9vbSksaC5hcHBseSxoLFt0LHRoaXMudGhhdCx0aGlzLmFyZ3NdKX19LGYud2hlZWxEZWx0YT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0iZnVuY3Rpb24iPT10eXBlb2YgdD90OmpOKCt0KSxmKTpvfSxmLmZpbHRlcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OmpOKCEhdCksZik6bn0sZi50b3VjaGFibGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpqTighIXQpLGYpOmF9LGYuZXh0ZW50PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6ak4oW1srdFswXVswXSwrdFswXVsxXV0sWyt0WzFdWzBdLCt0WzFdWzFdXV0pLGYpOml9LGYuc2NhbGVFeHRlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHNbMF09K3RbMF0sc1sxXT0rdFsxXSxmKTpbc1swXSxzWzFdXX0sZi50cmFuc2xhdGVFeHRlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGxbMF1bMF09K3RbMF1bMF0sbFsxXVswXT0rdFsxXVswXSxsWzBdWzFdPSt0WzBdWzFdLGxbMV1bMV09K3RbMV1bMV0sZik6W1tsWzBdWzBdLGxbMF1bMV1dLFtsWzFdWzBdLGxbMV1bMV1dXX0sZi5jb25zdHJhaW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9dCxmKTpyfSxmLmR1cmF0aW9uPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPSt0LGYpOmN9LGYuaW50ZXJwb2xhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9dCxmKTp1fSxmLm9uPWZ1bmN0aW9uKCl7dmFyIHQ9aC5vbi5hcHBseShoLGFyZ3VtZW50cyk7cmV0dXJuIHQ9PT1oP2Y6dH0sZi5jbGlja0Rpc3RhbmNlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhwPSh0PSt0KSp0LGYpOk1hdGguc3FydChwKX0sZn1ZTi5wcm90b3R5cGU9V04ucHJvdG90eXBlO3ZhciBpST1PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCx2ZXJzaW9uOiI1LjcuMCIsYmlzZWN0OkRsLGJpc2VjdFJpZ2h0OkRsLGJpc2VjdExlZnQ6QmwsYXNjZW5kaW5nOlJsLGJpc2VjdG9yOk9sLGNyb3NzOkZsLGRlc2NlbmRpbmc6ZnVuY3Rpb24gckkodCxlKXtyZXR1cm4gZTx0Py0xOmU+dD8xOmU+PXQ/MDpOYU59LGRldmlhdGlvbjpqbCxleHRlbnQ6R2wsaGlzdG9ncmFtOmZ1bmN0aW9uIG9JKCl7dmFyIHQ9JGwsZT1HbCxuPWljO2Z1bmN0aW9uIGkoaSl7dmFyIHIsbyxhPWkubGVuZ3RoLHM9bmV3IEFycmF5KGEpO2ZvcihyPTA7cjxhOysrcilzW3JdPXQoaVtyXSxyLGkpO3ZhciBsPWUocyksYz1sWzBdLHU9bFsxXSxoPW4ocyxjLHUpO0FycmF5LmlzQXJyYXkoaCl8fChoPW5jKGMsdSxoKSxoPUtsKE1hdGguY2VpbChjL2gpKmgsdSxoKSk7Zm9yKHZhciBkPWgubGVuZ3RoO2hbMF08PWM7KWguc2hpZnQoKSwtLWQ7Zm9yKDtoW2QtMV0+dTspaC5wb3AoKSwtLWQ7dmFyIHAsZj1uZXcgQXJyYXkoZCsxKTtmb3Iocj0wO3I8PWQ7KytyKShwPWZbcl09W10pLngwPXI+MD9oW3ItMV06YyxwLngxPXI8ZD9oW3JdOnU7Zm9yKHI9MDtyPGE7KytyKWM8PShvPXNbcl0pJiZvPD11JiZmW0RsKGgsbywwLGQpXS5wdXNoKGlbcl0pO3JldHVybiBmfXJldHVybiBpLnZhbHVlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6WGwoZSksaSk6dH0saS5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpYbChbdFswXSx0WzFdXSksaSk6ZX0saS50aHJlc2hvbGRzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6QXJyYXkuaXNBcnJheSh0KT9YbChxbC5jYWxsKHQpKTpYbCh0KSxpKTpufSxpfSx0aHJlc2hvbGRGcmVlZG1hbkRpYWNvbmlzOmZ1bmN0aW9uIGFJKHQsZSxuKXtyZXR1cm4gdD1ZbC5jYWxsKHQsVmwpLnNvcnQoUmwpLE1hdGguY2VpbCgobi1lKS8oMioocmModCwuNzUpLXJjKHQsLjI1KSkqTWF0aC5wb3codC5sZW5ndGgsLTEvMykpKX0sdGhyZXNob2xkU2NvdHQ6ZnVuY3Rpb24gc0kodCxlLG4pe3JldHVybiBNYXRoLmNlaWwoKG4tZSkvKDMuNSpqbCh0KSpNYXRoLnBvdyh0Lmxlbmd0aCwtMS8zKSkpfSx0aHJlc2hvbGRTdHVyZ2VzOmljLG1heDpvYyxtZWFuOmZ1bmN0aW9uIGxJKHQsZSl7dmFyIG4saT10Lmxlbmd0aCxyPWksbz0tMSxhPTA7aWYobnVsbD09ZSlmb3IoOysrbzxpOylpc05hTihuPVZsKHRbb10pKT8tLXI6YSs9bjtlbHNlIGZvcig7KytvPGk7KWlzTmFOKG49VmwoZSh0W29dLG8sdCkpKT8tLXI6YSs9bjtpZihyKXJldHVybiBhL3J9LG1lZGlhbjpmdW5jdGlvbiBjSSh0LGUpe3ZhciBuLGk9dC5sZW5ndGgscj0tMSxvPVtdO2lmKG51bGw9PWUpZm9yKDsrK3I8aTspaXNOYU4obj1WbCh0W3JdKSl8fG8ucHVzaChuKTtlbHNlIGZvcig7KytyPGk7KWlzTmFOKG49VmwoZSh0W3JdLHIsdCkpKXx8by5wdXNoKG4pO3JldHVybiByYyhvLnNvcnQoUmwpLC41KX0sbWVyZ2U6YWMsbWluOnNjLHBhaXJzOmZ1bmN0aW9uIHVJKHQsZSl7bnVsbD09ZSYmKGU9SGwpO2Zvcih2YXIgbj0wLGk9dC5sZW5ndGgtMSxyPXRbMF0sbz1uZXcgQXJyYXkoaTwwPzA6aSk7bjxpOylvW25dPWUocixyPXRbKytuXSk7cmV0dXJuIG99LHBlcm11dGU6ZnVuY3Rpb24gaEkodCxlKXtmb3IodmFyIG49ZS5sZW5ndGgsaT1uZXcgQXJyYXkobik7bi0tOylpW25dPXRbZVtuXV07cmV0dXJuIGl9LHF1YW50aWxlOnJjLHJhbmdlOktsLHNjYW46ZnVuY3Rpb24gZEkodCxlKXtpZihuPXQubGVuZ3RoKXt2YXIgbixpLHI9MCxvPTAsYT10W29dO2ZvcihudWxsPT1lJiYoZT1SbCk7KytyPG47KShlKGk9dFtyXSxhKTwwfHwwIT09ZShhLGEpKSYmKGE9aSxvPXIpO3JldHVybiAwPT09ZShhLGEpP286dm9pZCAwfX0sc2h1ZmZsZTpmdW5jdGlvbiBwSSh0LGUsbil7Zm9yKHZhciBpLHIsbz0obnVsbD09bj90Lmxlbmd0aDpuKS0oZT1udWxsPT1lPzA6K2UpO287KXI9TWF0aC5yYW5kb20oKSpvLS18MCxpPXRbbytlXSx0W28rZV09dFtyK2VdLHRbcitlXT1pO3JldHVybiB0fSxzdW06ZnVuY3Rpb24gZkkodCxlKXt2YXIgbixpPXQubGVuZ3RoLHI9LTEsbz0wO2lmKG51bGw9PWUpZm9yKDsrK3I8aTspKG49K3Rbcl0pJiYobys9bik7ZWxzZSBmb3IoOysrcjxpOykobj0rZSh0W3JdLHIsdCkpJiYobys9bik7cmV0dXJuIG99LHRpY2tzOnRjLHRpY2tJbmNyZW1lbnQ6ZWMsdGlja1N0ZXA6bmMsdHJhbnNwb3NlOmxjLHZhcmlhbmNlOlVsLHppcDpmdW5jdGlvbiBtSSgpe3JldHVybiBsYyhhcmd1bWVudHMpfSxheGlzVG9wOmZ1bmN0aW9uIGdJKHQpe3JldHVybiB5YygxLHQpfSxheGlzUmlnaHQ6ZnVuY3Rpb24gX0kodCl7cmV0dXJuIHljKDIsdCl9LGF4aXNCb3R0b206dmMsYXhpc0xlZnQ6YmMsYnJ1c2g6dmcsYnJ1c2hYOmZ1bmN0aW9uIHlJKCl7cmV0dXJuIGJnKGlnKX0sYnJ1c2hZOnlnLGJydXNoU2VsZWN0aW9uOl9nLGNob3JkOmZ1bmN0aW9uIHZJKCl7dmFyIHQ9MCxlPW51bGwsbj1udWxsLGk9bnVsbDtmdW5jdGlvbiByKHIpe3ZhciBvLGEscyxsLGMsdSxoPXIubGVuZ3RoLGQ9W10scD1LbChoKSxmPVtdLG09W10sZz1tLmdyb3Vwcz1uZXcgQXJyYXkoaCksXz1uZXcgQXJyYXkoaCpoKTtmb3Iobz0wLGM9LTE7KytjPGg7KXtmb3IoYT0wLHU9LTE7Kyt1PGg7KWErPXJbY11bdV07ZC5wdXNoKGEpLGYucHVzaChLbChoKSksbys9YX1mb3IoZSYmcC5zb3J0KChmdW5jdGlvbih0LG4pe3JldHVybiBlKGRbdF0sZFtuXSl9KSksbiYmZi5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3Quc29ydCgoZnVuY3Rpb24odCxpKXtyZXR1cm4gbihyW2VdW3RdLHJbZV1baV0pfSkpfSkpLGw9KG89VGcoMCxFZy10KmgpL28pP3Q6RWcvaCxhPTAsYz0tMTsrK2M8aDspe2ZvcihzPWEsdT0tMTsrK3U8aDspe3ZhciB5PXBbY10sdj1mW3ldW3VdLGI9clt5XVt2XSx4PWEsdz1hKz1iKm87X1t2KmgreV09e2luZGV4Onksc3ViaW5kZXg6dixzdGFydEFuZ2xlOngsZW5kQW5nbGU6dyx2YWx1ZTpifX1nW3ldPXtpbmRleDp5LHN0YXJ0QW5nbGU6cyxlbmRBbmdsZTphLHZhbHVlOmRbeV19LGErPWx9Zm9yKGM9LTE7KytjPGg7KWZvcih1PWMtMTsrK3U8aDspe3ZhciBTPV9bdSpoK2NdLE09X1tjKmgrdV07KFMudmFsdWV8fE0udmFsdWUpJiZtLnB1c2goUy52YWx1ZTxNLnZhbHVlP3tzb3VyY2U6TSx0YXJnZXQ6U306e3NvdXJjZTpTLHRhcmdldDpNfSl9cmV0dXJuIGk/bS5zb3J0KGkpOm19cmV0dXJuIHIucGFkQW5nbGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9VGcoMCxlKSxyKTp0fSxyLnNvcnRHcm91cHM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dCxyKTplfSxyLnNvcnRTdWJncm91cHM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49dCxyKTpufSxyLnNvcnRDaG9yZHM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG51bGw9PXQ/aT1udWxsOihpPUNnKHQpKS5fPXQscik6aSYmaS5ffSxyfSxyaWJib246ZnVuY3Rpb24gYkkoKXt2YXIgdD16ZyxlPURnLG49QmcsaT1IZyxyPUZnLG89bnVsbDtmdW5jdGlvbiBhKCl7dmFyIGEscz1BZy5jYWxsKGFyZ3VtZW50cyksbD10LmFwcGx5KHRoaXMscyksYz1lLmFwcGx5KHRoaXMscyksdT0rbi5hcHBseSh0aGlzLChzWzBdPWwscykpLGg9aS5hcHBseSh0aGlzLHMpLU1nLGQ9ci5hcHBseSh0aGlzLHMpLU1nLHA9dSp4ZyhoKSxmPXUqd2coaCksbT0rbi5hcHBseSh0aGlzLChzWzBdPWMscykpLGc9aS5hcHBseSh0aGlzLHMpLU1nLF89ci5hcHBseSh0aGlzLHMpLU1nO2lmKG98fChvPWE9T2coKSksby5tb3ZlVG8ocCxmKSxvLmFyYygwLDAsdSxoLGQpLGg9PT1nJiZkPT09X3x8KG8ucXVhZHJhdGljQ3VydmVUbygwLDAsbSp4ZyhnKSxtKndnKGcpKSxvLmFyYygwLDAsbSxnLF8pKSxvLnF1YWRyYXRpY0N1cnZlVG8oMCwwLHAsZiksby5jbG9zZVBhdGgoKSxhKXJldHVybiBvPW51bGwsYSsiInx8bnVsbH1yZXR1cm4gYS5yYWRpdXM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDprZygrdCksYSk6bn0sYS5zdGFydEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6a2coK3QpLGEpOml9LGEuZW5kQW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDprZygrdCksYSk6cn0sYS5zb3VyY2U9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ZSxhKTp0fSxhLnRhcmdldD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10LGEpOmV9LGEuY29udGV4dD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz1udWxsPT10P251bGw6dCxhKTpvfSxhfSxuZXN0OmZ1bmN0aW9uIHhJKCl7dmFyIHQsZSxuLGk9W10scj1bXTtmdW5jdGlvbiBvKG4scixhLHMpe2lmKHI+PWkubGVuZ3RoKXJldHVybiBudWxsIT10JiZuLnNvcnQodCksbnVsbCE9ZT9lKG4pOm47Zm9yKHZhciBsLGMsdSxoPS0xLGQ9bi5sZW5ndGgscD1pW3IrK10sZj1qZygpLG09YSgpOysraDxkOykodT1mLmdldChsPXAoYz1uW2hdKSsiIikpP3UucHVzaChjKTpmLnNldChsLFtjXSk7cmV0dXJuIGYuZWFjaCgoZnVuY3Rpb24odCxlKXtzKG0sZSxvKHQscixhLHMpKX0pKSxtfWZ1bmN0aW9uIGEodCxuKXtpZigrK24+aS5sZW5ndGgpcmV0dXJuIHQ7dmFyIG8scz1yW24tMV07cmV0dXJuIG51bGwhPWUmJm4+PWkubGVuZ3RoP289dC5lbnRyaWVzKCk6KG89W10sdC5lYWNoKChmdW5jdGlvbih0LGUpe28ucHVzaCh7a2V5OmUsdmFsdWVzOmEodCxuKX0pfSkpKSxudWxsIT1zP28uc29ydCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gcyh0LmtleSxlLmtleSl9KSk6b31yZXR1cm4gbj17b2JqZWN0OmZ1bmN0aW9uKHQpe3JldHVybiBvKHQsMCxHZyxXZyl9LG1hcDpmdW5jdGlvbih0KXtyZXR1cm4gbyh0LDAscWcsWWcpfSxlbnRyaWVzOmZ1bmN0aW9uKHQpe3JldHVybiBhKG8odCwwLHFnLFlnKSwwKX0sa2V5OmZ1bmN0aW9uKHQpe3JldHVybiBpLnB1c2godCksbn0sc29ydEtleXM6ZnVuY3Rpb24odCl7cmV0dXJuIHJbaS5sZW5ndGgtMV09dCxufSxzb3J0VmFsdWVzOmZ1bmN0aW9uKGUpe3JldHVybiB0PWUsbn0scm9sbHVwOmZ1bmN0aW9uKHQpe3JldHVybiBlPXQsbn19fSxzZXQ6S2csbWFwOmpnLGtleXM6WmcsdmFsdWVzOmZ1bmN0aW9uIHdJKHQpe3ZhciBlPVtdO2Zvcih2YXIgbiBpbiB0KWUucHVzaCh0W25dKTtyZXR1cm4gZX0sZW50cmllczpmdW5jdGlvbiBTSSh0KXt2YXIgZT1bXTtmb3IodmFyIG4gaW4gdCllLnB1c2goe2tleTpuLHZhbHVlOnRbbl19KTtyZXR1cm4gZX0sY29sb3I6SmgscmdiOm5kLGhzbDpjZCxsYWI6eGQsaGNsOkFkLGxjaDpmdW5jdGlvbiBNSSh0LGUsbixpKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Q2QodCk6bmV3IGtkKG4sZSx0LG51bGw9PWk/MTppKX0sZ3JheTpmdW5jdGlvbiBFSSh0LGUpe3JldHVybiBuZXcgd2QodCwwLDAsbnVsbD09ZT8xOmUpfSxjdWJlaGVsaXg6RmQsY29udG91cnM6YV8sY29udG91ckRlbnNpdHk6ZnVuY3Rpb24gVEkoKXt2YXIgdD1jXyxlPXVfLG49aF8saT05NjAscj01MDAsbz0yMCxhPTIscz0zKm8sbD1pKzIqcz4+YSxjPXIrMipzPj5hLHU9dF8oMjApO2Z1bmN0aW9uIGgoaSl7dmFyIHI9bmV3IEZsb2F0MzJBcnJheShsKmMpLGg9bmV3IEZsb2F0MzJBcnJheShsKmMpO2kuZm9yRWFjaCgoZnVuY3Rpb24oaSxvLHUpe3ZhciBoPSt0KGksbyx1KStzPj5hLGQ9K2UoaSxvLHUpK3M+PmEscD0rbihpLG8sdSk7aD49MCYmaDxsJiZkPj0wJiZkPGMmJihyW2grZCpsXSs9cCl9KSksc18oe3dpZHRoOmwsaGVpZ2h0OmMsZGF0YTpyfSx7d2lkdGg6bCxoZWlnaHQ6YyxkYXRhOmh9LG8+PmEpLGxfKHt3aWR0aDpsLGhlaWdodDpjLGRhdGE6aH0se3dpZHRoOmwsaGVpZ2h0OmMsZGF0YTpyfSxvPj5hKSxzXyh7d2lkdGg6bCxoZWlnaHQ6YyxkYXRhOnJ9LHt3aWR0aDpsLGhlaWdodDpjLGRhdGE6aH0sbz4+YSksbF8oe3dpZHRoOmwsaGVpZ2h0OmMsZGF0YTpofSx7d2lkdGg6bCxoZWlnaHQ6YyxkYXRhOnJ9LG8+PmEpLHNfKHt3aWR0aDpsLGhlaWdodDpjLGRhdGE6cn0se3dpZHRoOmwsaGVpZ2h0OmMsZGF0YTpofSxvPj5hKSxsXyh7d2lkdGg6bCxoZWlnaHQ6YyxkYXRhOmh9LHt3aWR0aDpsLGhlaWdodDpjLGRhdGE6cn0sbz4+YSk7dmFyIHA9dShyKTtpZighQXJyYXkuaXNBcnJheShwKSl7dmFyIGY9b2Mocik7cD1uYygwLGYscCksKHA9S2woMCxNYXRoLmZsb29yKGYvcCkqcCxwKSkuc2hpZnQoKX1yZXR1cm4gYV8oKS50aHJlc2hvbGRzKHApLnNpemUoW2wsY10pKHIpLm1hcChkKX1mdW5jdGlvbiBkKHQpe3JldHVybiB0LnZhbHVlKj1NYXRoLnBvdygyLC0yKmEpLHQuY29vcmRpbmF0ZXMuZm9yRWFjaChwKSx0fWZ1bmN0aW9uIHAodCl7dC5mb3JFYWNoKGYpfWZ1bmN0aW9uIGYodCl7dC5mb3JFYWNoKG0pfWZ1bmN0aW9uIG0odCl7dFswXT10WzBdKk1hdGgucG93KDIsYSktcyx0WzFdPXRbMV0qTWF0aC5wb3coMixhKS1zfWZ1bmN0aW9uIGcoKXtyZXR1cm4gbD1pKzIqKHM9MypvKT4+YSxjPXIrMipzPj5hLGh9cmV0dXJuIGgueD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOnRfKCtlKSxoKTp0fSxoLnk9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDp0XygrdCksaCk6ZX0saC53ZWlnaHQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDp0XygrdCksaCk6bn0saC5zaXplPWZ1bmN0aW9uKHQpe2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybltpLHJdO3ZhciBlPU1hdGguY2VpbCh0WzBdKSxuPU1hdGguY2VpbCh0WzFdKTtpZighKGU+PTB8fGU+PTApKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBzaXplIik7cmV0dXJuIGk9ZSxyPW4sZygpfSxoLmNlbGxTaXplPWZ1bmN0aW9uKHQpe2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiAxPDxhO2lmKCEoKHQ9K3QpPj0xKSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgY2VsbCBzaXplIik7cmV0dXJuIGE9TWF0aC5mbG9vcihNYXRoLmxvZyh0KS9NYXRoLkxOMiksZygpfSxoLnRocmVzaG9sZHM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpBcnJheS5pc0FycmF5KHQpP3RfKEpnLmNhbGwodCkpOnRfKHQpLGgpOnV9LGguYmFuZHdpZHRoPWZ1bmN0aW9uKHQpe2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiBNYXRoLnNxcnQobyoobysxKSk7aWYoISgodD0rdCk+PTApKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBiYW5kd2lkdGgiKTtyZXR1cm4gbz1NYXRoLnJvdW5kKChNYXRoLnNxcnQoNCp0KnQrMSktMSkvMiksZygpfSxofSxkaXNwYXRjaDp3YyxkcmFnOkloLGRyYWdEaXNhYmxlOkVoLGRyYWdFbmFibGU6VGgsZHN2Rm9ybWF0OnlfLGNzdlBhcnNlOmJfLGNzdlBhcnNlUm93czp4Xyxjc3ZGb3JtYXQ6d18sY3N2Rm9ybWF0Qm9keTpTXyxjc3ZGb3JtYXRSb3dzOk1fLGNzdkZvcm1hdFJvdzpFXyxjc3ZGb3JtYXRWYWx1ZTpUXyx0c3ZQYXJzZTpBXyx0c3ZQYXJzZVJvd3M6a18sdHN2Rm9ybWF0OkxfLHRzdkZvcm1hdEJvZHk6UF8sdHN2Rm9ybWF0Um93czpOXyx0c3ZGb3JtYXRSb3c6SV8sdHN2Rm9ybWF0VmFsdWU6Ul8sYXV0b1R5cGU6ZnVuY3Rpb24gQ0kodCl7Zm9yKHZhciBlIGluIHQpe3ZhciBuLGkscj10W2VdLnRyaW0oKTtpZihyKWlmKCJ0cnVlIj09PXIpcj0hMDtlbHNlIGlmKCJmYWxzZSI9PT1yKXI9ITE7ZWxzZSBpZigiTmFOIj09PXIpcj1OYU47ZWxzZSBpZihpc05hTihuPStyKSl7aWYoIShpPXIubWF0Y2goL14oWy0rXVxkezJ9KT9cZHs0fSgtXGR7Mn0oLVxkezJ9KT8pPyhUXGR7Mn06XGR7Mn0oOlxkezJ9KFwuXGR7M30pPyk/KFp8Wy0rXVxkezJ9OlxkezJ9KT8pPyQvKSkpY29udGludWU7T18mJmlbNF0mJiFpWzddJiYocj1yLnJlcGxhY2UoLy0vZywiLyIpLnJlcGxhY2UoL1QvLCIgIikpLHI9bmV3IERhdGUocil9ZWxzZSByPW47ZWxzZSByPW51bGw7dFtlXT1yfXJldHVybiB0fSxlYXNlTGluZWFyOkZmLGVhc2VRdWFkOmpmLGVhc2VRdWFkSW46VmYsZWFzZVF1YWRPdXQ6VWYsZWFzZVF1YWRJbk91dDpqZixlYXNlQ3ViaWM6cWYsZWFzZUN1YmljSW46R2YsZWFzZUN1YmljT3V0OldmLGVhc2VDdWJpY0luT3V0OnFmLGVhc2VQb2x5OmZtLGVhc2VQb2x5SW46ZG0sZWFzZVBvbHlPdXQ6cG0sZWFzZVBvbHlJbk91dDpmbSxlYXNlU2luOnZtLGVhc2VTaW5JbjpfbSxlYXNlU2luT3V0OnltLGVhc2VTaW5Jbk91dDp2bSxlYXNlRXhwOlNtLGVhc2VFeHBJbjp4bSxlYXNlRXhwT3V0OndtLGVhc2VFeHBJbk91dDpTbSxlYXNlQ2lyY2xlOlRtLGVhc2VDaXJjbGVJbjpNbSxlYXNlQ2lyY2xlT3V0OkVtLGVhc2VDaXJjbGVJbk91dDpUbSxlYXNlQm91bmNlOkxtLGVhc2VCb3VuY2VJbjprbSxlYXNlQm91bmNlT3V0OkxtLGVhc2VCb3VuY2VJbk91dDpQbSxlYXNlQmFjazpPbSxlYXNlQmFja0luOkltLGVhc2VCYWNrT3V0OlJtLGVhc2VCYWNrSW5PdXQ6T20sZWFzZUVsYXN0aWM6Qm0sZWFzZUVsYXN0aWNJbjpEbSxlYXNlRWxhc3RpY091dDpCbSxlYXNlRWxhc3RpY0luT3V0OkhtLGJsb2I6ZnVuY3Rpb24gQUkodCxlKXtyZXR1cm4gZmV0Y2godCxlKS50aGVuKHpfKX0sYnVmZmVyOmZ1bmN0aW9uIGtJKHQsZSl7cmV0dXJuIGZldGNoKHQsZSkudGhlbihEXyl9LGRzdjpmdW5jdGlvbiBMSSh0LGUsbixpKXszPT09YXJndW1lbnRzLmxlbmd0aCYmImZ1bmN0aW9uIj09dHlwZW9mIG4mJihpPW4sbj12b2lkIDApO3ZhciByPXlfKHQpO3JldHVybiBIXyhlLG4pLnRoZW4oKGZ1bmN0aW9uKHQpe3JldHVybiByLnBhcnNlKHQsaSl9KSl9LGNzdjpWXyx0c3Y6VV8saW1hZ2U6ZnVuY3Rpb24gUEkodCxlKXtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKG4saSl7dmFyIHI9bmV3IEltYWdlO2Zvcih2YXIgbyBpbiBlKXJbb109ZVtvXTtyLm9uZXJyb3I9aSxyLm9ubG9hZD1mdW5jdGlvbigpe24ocil9LHIuc3JjPXR9KSl9LGpzb246ZnVuY3Rpb24gTkkodCxlKXtyZXR1cm4gZmV0Y2godCxlKS50aGVuKGpfKX0sdGV4dDpIXyx4bWw6V18saHRtbDpxXyxzdmc6WV8sZm9yY2VDZW50ZXI6ZnVuY3Rpb24gSUkodCxlKXt2YXIgbjtmdW5jdGlvbiBpKCl7dmFyIGkscixvPW4ubGVuZ3RoLGE9MCxzPTA7Zm9yKGk9MDtpPG87KytpKWErPShyPW5baV0pLngscys9ci55O2ZvcihhPWEvby10LHM9cy9vLWUsaT0wO2k8bzsrK2kpKHI9bltpXSkueC09YSxyLnktPXN9cmV0dXJuIG51bGw9PXQmJih0PTApLG51bGw9PWUmJihlPTApLGkuaW5pdGlhbGl6ZT1mdW5jdGlvbih0KXtuPXR9LGkueD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0rZSxpKTp0fSxpLnk9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9K3QsaSk6ZX0saX0sZm9yY2VDb2xsaWRlOmZ1bmN0aW9uIFJJKHQpe3ZhciBlLG4saT0xLHI9MTtmdW5jdGlvbiBvKCl7Zm9yKHZhciB0LG8scyxsLGMsdSxoLGQ9ZS5sZW5ndGgscD0wO3A8cjsrK3ApZm9yKG89dHkoZSxyeSxveSkudmlzaXRBZnRlcihhKSx0PTA7dDxkOysrdCloPSh1PW5bKHM9ZVt0XSkuaW5kZXhdKSp1LGw9cy54K3MudngsYz1zLnkrcy52eSxvLnZpc2l0KGYpO2Z1bmN0aW9uIGYodCxlLG4scixvKXt2YXIgYT10LmRhdGEsZD10LnIscD11K2Q7aWYoIWEpcmV0dXJuIGU+bCtwfHxyPGwtcHx8bj5jK3B8fG88Yy1wO2lmKGEuaW5kZXg+cy5pbmRleCl7dmFyIGY9bC1hLngtYS52eCxtPWMtYS55LWEudnksZz1mKmYrbSptO2c8cCpwJiYoMD09PWYmJihnKz0oZj0kXygpKSpmKSwwPT09bSYmKGcrPShtPSRfKCkpKm0pLGc9KHAtKGc9TWF0aC5zcXJ0KGcpKSkvZyppLHMudngrPShmKj1nKSoocD0oZCo9ZCkvKGgrZCkpLHMudnkrPShtKj1nKSpwLGEudngtPWYqKHA9MS1wKSxhLnZ5LT1tKnApfX19ZnVuY3Rpb24gYSh0KXtpZih0LmRhdGEpcmV0dXJuIHQucj1uW3QuZGF0YS5pbmRleF07Zm9yKHZhciBlPXQucj0wO2U8NDsrK2UpdFtlXSYmdFtlXS5yPnQuciYmKHQucj10W2VdLnIpfWZ1bmN0aW9uIHMoKXtpZihlKXt2YXIgaSxyLG89ZS5sZW5ndGg7Zm9yKG49bmV3IEFycmF5KG8pLGk9MDtpPG87KytpKW5bKHI9ZVtpXSkuaW5kZXhdPSt0KHIsaSxlKX19cmV0dXJuImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PVhfKG51bGw9PXQ/MTordCkpLG8uaW5pdGlhbGl6ZT1mdW5jdGlvbih0KXtlPXQscygpfSxvLml0ZXJhdGlvbnM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9K3Qsbyk6cn0sby5zdHJlbmd0aD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0rdCxvKTppfSxvLnJhZGl1cz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOlhfKCtlKSxzKCksbyk6dH0sb30sZm9yY2VMaW5rOmZ1bmN0aW9uIE9JKHQpe3ZhciBlLG4saSxyLG8sYT1heSxzPWZ1bmN0aW9uIGwodCl7cmV0dXJuIDEvTWF0aC5taW4oclt0LnNvdXJjZS5pbmRleF0sclt0LnRhcmdldC5pbmRleF0pfSxjPVhfKDMwKSx1PTE7ZnVuY3Rpb24gaChpKXtmb3IodmFyIHI9MCxhPXQubGVuZ3RoO3I8dTsrK3IpZm9yKHZhciBzLGwsYyxoLGQscCxmLG09MDttPGE7KyttKWg9KGM9KHM9dFttXSkudGFyZ2V0KS54K2MudngtKGw9cy5zb3VyY2UpLngtbC52eHx8JF8oKSxkPWMueStjLnZ5LWwueS1sLnZ5fHwkXygpLGQqPXA9KChwPU1hdGguc3FydChoKmgrZCpkKSktblttXSkvcCppKmVbbV0sYy52eC09KGgqPXApKihmPW9bbV0pLGMudnktPWQqZixsLnZ4Kz1oKihmPTEtZiksbC52eSs9ZCpmfWZ1bmN0aW9uIGQoKXtpZihpKXt2YXIgcyxsLGM9aS5sZW5ndGgsdT10Lmxlbmd0aCxoPWpnKGksYSk7Zm9yKHM9MCxyPW5ldyBBcnJheShjKTtzPHU7KytzKShsPXRbc10pLmluZGV4PXMsIm9iamVjdCIhPXR5cGVvZiBsLnNvdXJjZSYmKGwuc291cmNlPXN5KGgsbC5zb3VyY2UpKSwib2JqZWN0IiE9dHlwZW9mIGwudGFyZ2V0JiYobC50YXJnZXQ9c3koaCxsLnRhcmdldCkpLHJbbC5zb3VyY2UuaW5kZXhdPShyW2wuc291cmNlLmluZGV4XXx8MCkrMSxyW2wudGFyZ2V0LmluZGV4XT0ocltsLnRhcmdldC5pbmRleF18fDApKzE7Zm9yKHM9MCxvPW5ldyBBcnJheSh1KTtzPHU7KytzKW9bc109clsobD10W3NdKS5zb3VyY2UuaW5kZXhdLyhyW2wuc291cmNlLmluZGV4XStyW2wudGFyZ2V0LmluZGV4XSk7ZT1uZXcgQXJyYXkodSkscCgpLG49bmV3IEFycmF5KHUpLGYoKX19ZnVuY3Rpb24gcCgpe2lmKGkpZm9yKHZhciBuPTAscj10Lmxlbmd0aDtuPHI7KytuKWVbbl09K3ModFtuXSxuLHQpfWZ1bmN0aW9uIGYoKXtpZihpKWZvcih2YXIgZT0wLHI9dC5sZW5ndGg7ZTxyOysrZSluW2VdPStjKHRbZV0sZSx0KX1yZXR1cm4gbnVsbD09dCYmKHQ9W10pLGguaW5pdGlhbGl6ZT1mdW5jdGlvbih0KXtpPXQsZCgpfSxoLmxpbmtzPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PWUsZCgpLGgpOnR9LGguaWQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9dCxoKTphfSxoLml0ZXJhdGlvbnM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9K3QsaCk6dX0saC5zdHJlbmd0aD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz0iZnVuY3Rpb24iPT10eXBlb2YgdD90OlhfKCt0KSxwKCksaCk6c30saC5kaXN0YW5jZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz0iZnVuY3Rpb24iPT10eXBlb2YgdD90OlhfKCt0KSxmKCksaCk6Y30saH0sZm9yY2VNYW55Qm9keTpmdW5jdGlvbiB6SSgpe3ZhciB0LGUsbixpLHI9WF8oLTMwKSxvPTEsYT0xLzAscz0uODE7ZnVuY3Rpb24gbChpKXt2YXIgcixvPXQubGVuZ3RoLGE9dHkodCxseSxjeSkudmlzaXRBZnRlcih1KTtmb3Iobj1pLHI9MDtyPG87KytyKWU9dFtyXSxhLnZpc2l0KGgpfWZ1bmN0aW9uIGMoKXtpZih0KXt2YXIgZSxuLG89dC5sZW5ndGg7Zm9yKGk9bmV3IEFycmF5KG8pLGU9MDtlPG87KytlKWlbKG49dFtlXSkuaW5kZXhdPStyKG4sZSx0KX19ZnVuY3Rpb24gdSh0KXt2YXIgZSxuLHIsbyxhLHM9MCxsPTA7aWYodC5sZW5ndGgpe2ZvcihyPW89YT0wO2E8NDsrK2EpKGU9dFthXSkmJihuPU1hdGguYWJzKGUudmFsdWUpKSYmKHMrPWUudmFsdWUsbCs9bixyKz1uKmUueCxvKz1uKmUueSk7dC54PXIvbCx0Lnk9by9sfWVsc2V7KGU9dCkueD1lLmRhdGEueCxlLnk9ZS5kYXRhLnk7ZG97cys9aVtlLmRhdGEuaW5kZXhdfXdoaWxlKGU9ZS5uZXh0KX10LnZhbHVlPXN9ZnVuY3Rpb24gaCh0LHIsbCxjKXtpZighdC52YWx1ZSlyZXR1cm4hMDt2YXIgdT10LngtZS54LGg9dC55LWUueSxkPWMtcixwPXUqdStoKmg7aWYoZCpkL3M8cClyZXR1cm4gcDxhJiYoMD09PXUmJihwKz0odT0kXygpKSp1KSwwPT09aCYmKHArPShoPSRfKCkpKmgpLHA8byYmKHA9TWF0aC5zcXJ0KG8qcCkpLGUudngrPXUqdC52YWx1ZSpuL3AsZS52eSs9aCp0LnZhbHVlKm4vcCksITA7aWYoISh0Lmxlbmd0aHx8cD49YSkpeyh0LmRhdGEhPT1lfHx0Lm5leHQpJiYoMD09PXUmJihwKz0odT0kXygpKSp1KSwwPT09aCYmKHArPShoPSRfKCkpKmgpLHA8byYmKHA9TWF0aC5zcXJ0KG8qcCkpKTtkb3t0LmRhdGEhPT1lJiYoZS52eCs9dSooZD1pW3QuZGF0YS5pbmRleF0qbi9wKSxlLnZ5Kz1oKmQpfXdoaWxlKHQ9dC5uZXh0KX19cmV0dXJuIGwuaW5pdGlhbGl6ZT1mdW5jdGlvbihlKXt0PWUsYygpfSxsLnN0cmVuZ3RoPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6WF8oK3QpLGMoKSxsKTpyfSxsLmRpc3RhbmNlTWluPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPXQqdCxsKTpNYXRoLnNxcnQobyl9LGwuZGlzdGFuY2VNYXg9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9dCp0LGwpOk1hdGguc3FydChhKX0sbC50aGV0YT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz10KnQsbCk6TWF0aC5zcXJ0KHMpfSxsfSxmb3JjZVJhZGlhbDpmdW5jdGlvbiBESSh0LGUsbil7dmFyIGkscixvLGE9WF8oLjEpO2Z1bmN0aW9uIHModCl7Zm9yKHZhciBhPTAscz1pLmxlbmd0aDthPHM7KythKXt2YXIgbD1pW2FdLGM9bC54LWV8fDFlLTYsdT1sLnktbnx8MWUtNixoPU1hdGguc3FydChjKmMrdSp1KSxkPShvW2FdLWgpKnJbYV0qdC9oO2wudngrPWMqZCxsLnZ5Kz11KmR9fWZ1bmN0aW9uIGwoKXtpZihpKXt2YXIgZSxuPWkubGVuZ3RoO2ZvcihyPW5ldyBBcnJheShuKSxvPW5ldyBBcnJheShuKSxlPTA7ZTxuOysrZSlvW2VdPSt0KGlbZV0sZSxpKSxyW2VdPWlzTmFOKG9bZV0pPzA6K2EoaVtlXSxlLGkpfX1yZXR1cm4iZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9WF8oK3QpKSxudWxsPT1lJiYoZT0wKSxudWxsPT1uJiYobj0wKSxzLmluaXRpYWxpemU9ZnVuY3Rpb24odCl7aT10LGwoKX0scy5zdHJlbmd0aD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OlhfKCt0KSxsKCkscyk6YX0scy5yYWRpdXM9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpYXygrZSksbCgpLHMpOnR9LHMueD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT0rdCxzKTplfSxzLnk9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49K3Qscyk6bn0sc30sZm9yY2VTaW11bGF0aW9uOmZ1bmN0aW9uIEJJKHQpe3ZhciBlLG49MSxpPS4wMDEscj0xLU1hdGgucG93KGksMS8zMDApLG89MCxhPS42LHM9amcoKSxsPSRwKHUpLGM9d2MoInRpY2siLCJlbmQiKTtmdW5jdGlvbiB1KCl7aCgpLGMuY2FsbCgidGljayIsZSksbjxpJiYobC5zdG9wKCksYy5jYWxsKCJlbmQiLGUpKX1mdW5jdGlvbiBoKGkpe3ZhciBsLGMsdT10Lmxlbmd0aDt2b2lkIDA9PT1pJiYoaT0xKTtmb3IodmFyIGg9MDtoPGk7KytoKWZvcihuKz0oby1uKSpyLHMuZWFjaCgoZnVuY3Rpb24odCl7dChuKX0pKSxsPTA7bDx1OysrbCludWxsPT0oYz10W2xdKS5meD9jLngrPWMudngqPWE6KGMueD1jLmZ4LGMudng9MCksbnVsbD09Yy5meT9jLnkrPWMudnkqPWE6KGMueT1jLmZ5LGMudnk9MCk7cmV0dXJuIGV9ZnVuY3Rpb24gZCgpe2Zvcih2YXIgZSxuPTAsaT10Lmxlbmd0aDtuPGk7KytuKXtpZigoZT10W25dKS5pbmRleD1uLG51bGwhPWUuZngmJihlLng9ZS5meCksbnVsbCE9ZS5meSYmKGUueT1lLmZ5KSxpc05hTihlLngpfHxpc05hTihlLnkpKXt2YXIgcj0xMCpNYXRoLnNxcnQobiksbz1uKk15O2UueD1yKk1hdGguY29zKG8pLGUueT1yKk1hdGguc2luKG8pfShpc05hTihlLnZ4KXx8aXNOYU4oZS52eSkpJiYoZS52eD1lLnZ5PTApfX1mdW5jdGlvbiBwKGUpe3JldHVybiBlLmluaXRpYWxpemUmJmUuaW5pdGlhbGl6ZSh0KSxlfXJldHVybiBudWxsPT10JiYodD1bXSksZCgpLGU9e3RpY2s6aCxyZXN0YXJ0OmZ1bmN0aW9uKCl7cmV0dXJuIGwucmVzdGFydCh1KSxlfSxzdG9wOmZ1bmN0aW9uKCl7cmV0dXJuIGwuc3RvcCgpLGV9LG5vZGVzOmZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PW4sZCgpLHMuZWFjaChwKSxlKTp0fSxhbHBoYTpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0rdCxlKTpufSxhbHBoYU1pbjpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0rdCxlKTppfSxhbHBoYURlY2F5OmZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSt0LGUpOityfSxhbHBoYVRhcmdldDpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0rdCxlKTpvfSx2ZWxvY2l0eURlY2F5OmZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPTEtdCxlKToxLWF9LGZvcmNlOmZ1bmN0aW9uKHQsbil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MT8obnVsbD09bj9zLnJlbW92ZSh0KTpzLnNldCh0LHAobikpLGUpOnMuZ2V0KHQpfSxmaW5kOmZ1bmN0aW9uKGUsbixpKXt2YXIgcixvLGEscyxsLGM9MCx1PXQubGVuZ3RoO2ZvcihudWxsPT1pP2k9MS8wOmkqPWksYz0wO2M8dTsrK2MpKGE9KHI9ZS0ocz10W2NdKS54KSpyKyhvPW4tcy55KSpvKTxpJiYobD1zLGk9YSk7cmV0dXJuIGx9LG9uOmZ1bmN0aW9uKHQsbil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MT8oYy5vbih0LG4pLGUpOmMub24odCl9fX0sZm9yY2VYOmZ1bmN0aW9uIEhJKHQpe3ZhciBlLG4saSxyPVhfKC4xKTtmdW5jdGlvbiBvKHQpe2Zvcih2YXIgcixvPTAsYT1lLmxlbmd0aDtvPGE7KytvKShyPWVbb10pLnZ4Kz0oaVtvXS1yLngpKm5bb10qdH1mdW5jdGlvbiBhKCl7aWYoZSl7dmFyIG8sYT1lLmxlbmd0aDtmb3Iobj1uZXcgQXJyYXkoYSksaT1uZXcgQXJyYXkoYSksbz0wO288YTsrK28pbltvXT1pc05hTihpW29dPSt0KGVbb10sbyxlKSk/MDorcihlW29dLG8sZSl9fXJldHVybiJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD1YXyhudWxsPT10PzA6K3QpKSxvLmluaXRpYWxpemU9ZnVuY3Rpb24odCl7ZT10LGEoKX0sby5zdHJlbmd0aD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OlhfKCt0KSxhKCksbyk6cn0sby54PWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6WF8oK2UpLGEoKSxvKTp0fSxvfSxmb3JjZVk6ZnVuY3Rpb24gRkkodCl7dmFyIGUsbixpLHI9WF8oLjEpO2Z1bmN0aW9uIG8odCl7Zm9yKHZhciByLG89MCxhPWUubGVuZ3RoO288YTsrK28pKHI9ZVtvXSkudnkrPShpW29dLXIueSkqbltvXSp0fWZ1bmN0aW9uIGEoKXtpZihlKXt2YXIgbyxhPWUubGVuZ3RoO2ZvcihuPW5ldyBBcnJheShhKSxpPW5ldyBBcnJheShhKSxvPTA7bzxhOysrbyluW29dPWlzTmFOKGlbb109K3QoZVtvXSxvLGUpKT8wOityKGVbb10sbyxlKX19cmV0dXJuImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PVhfKG51bGw9PXQ/MDordCkpLG8uaW5pdGlhbGl6ZT1mdW5jdGlvbih0KXtlPXQsYSgpfSxvLnN0cmVuZ3RoPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6WF8oK3QpLGEoKSxvKTpyfSxvLnk9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpYXygrZSksYSgpLG8pOnR9LG99LGZvcm1hdERlZmF1bHRMb2NhbGU6VXksZ2V0IGZvcm1hdCgpe3JldHVybiBEeX0sZ2V0IGZvcm1hdFByZWZpeCgpe3JldHVybiBCeX0sZm9ybWF0TG9jYWxlOlZ5LGZvcm1hdFNwZWNpZmllcjpreSxGb3JtYXRTcGVjaWZpZXI6THkscHJlY2lzaW9uRml4ZWQ6ankscHJlY2lzaW9uUHJlZml4Okd5LHByZWNpc2lvblJvdW5kOld5LGdlb0FyZWE6ZnVuY3Rpb24gVkkodCl7cmV0dXJuIE52LnJlc2V0KCksRXYodCxJdiksMipOdn0sZ2VvQm91bmRzOmZ1bmN0aW9uIFVJKHQpe3ZhciBlLG4saSxyLG8sYSxzO2lmKFh2PVl2PS0oV3Y9cXY9MS8wKSxRdj1bXSxFdih0LHliKSxuPVF2Lmxlbmd0aCl7Zm9yKFF2LnNvcnQoQ2IpLGU9MSxvPVtpPVF2WzBdXTtlPG47KytlKUFiKGksKHI9UXZbZV0pWzBdKXx8QWIoaSxyWzFdKT8oVGIoaVswXSxyWzFdKT5UYihpWzBdLGlbMV0pJiYoaVsxXT1yWzFdKSxUYihyWzBdLGlbMV0pPlRiKGlbMF0saVsxXSkmJihpWzBdPXJbMF0pKTpvLnB1c2goaT1yKTtmb3IoYT0tMS8wLGU9MCxpPW9bbj1vLmxlbmd0aC0xXTtlPD1uO2k9ciwrK2UpKHM9VGIoaVsxXSwocj1vW2VdKVswXSkpPmEmJihhPXMsV3Y9clswXSxZdj1pWzFdKX1yZXR1cm4gUXY9dGI9bnVsbCxXdj09PTEvMHx8cXY9PT0xLzA/W1tOYU4sTmFOXSxbTmFOLE5hTl1dOltbV3YscXZdLFtZdixYdl1dfSxnZW9DZW50cm9pZDpmdW5jdGlvbiBqSSh0KXtlYj1uYj1pYj1yYj1vYj1hYj1zYj1sYj1jYj11Yj1oYj0wLEV2KHQsa2IpO3ZhciBlPWNiLG49dWIsaT1oYixyPWUqZStuKm4raSppO3JldHVybiByPFp5JiYoZT1hYixuPXNiLGk9bGIsbmI8S3kmJihlPWliLG49cmIsaT1vYiksKHI9ZSplK24qbitpKmkpPFp5KT9bTmFOLE5hTl06W2F2KG4sZSkqbnYsX3YoaS9mdihyKSkqbnZdfSxnZW9DaXJjbGU6ZnVuY3Rpb24gR0koKXt2YXIgdCxlLG49RmIoWzAsMF0pLGk9RmIoOTApLHI9RmIoNiksbz17cG9pbnQ6ZnVuY3Rpb24gYShuLGkpe3QucHVzaChuPWUobixpKSksblswXSo9bnYsblsxXSo9bnZ9fTtmdW5jdGlvbiBzKCl7dmFyIGE9bi5hcHBseSh0aGlzLGFyZ3VtZW50cykscz1pLmFwcGx5KHRoaXMsYXJndW1lbnRzKSppdixsPXIuYXBwbHkodGhpcyxhcmd1bWVudHMpKml2O3JldHVybiB0PVtdLGU9amIoLWFbMF0qaXYsLWFbMV0qaXYsMCkuaW52ZXJ0LFhiKG8scyxsLDEpLGE9e3R5cGU6IlBvbHlnb24iLGNvb3JkaW5hdGVzOlt0XX0sdD1lPW51bGwsYX1yZXR1cm4gcy5jZW50ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpGYihbK3RbMF0sK3RbMV1dKSxzKTpufSxzLnJhZGl1cz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkZiKCt0KSxzKTppfSxzLnByZWNpc2lvbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkZiKCt0KSxzKTpyfSxzfSxnZW9DbGlwQW50aW1lcmlkaWFuOnN4LGdlb0NsaXBDaXJjbGU6dXgsZ2VvQ2xpcEV4dGVudDpmdW5jdGlvbiBXSSgpe3ZhciB0LGUsbixpPTAscj0wLG89OTYwLGE9NTAwO3JldHVybiBuPXtzdHJlYW06ZnVuY3Rpb24obil7cmV0dXJuIHQmJmU9PT1uP3Q6dD1weChpLHIsbyxhKShlPW4pfSxleHRlbnQ6ZnVuY3Rpb24ocyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9K3NbMF1bMF0scj0rc1swXVsxXSxvPStzWzFdWzBdLGE9K3NbMV1bMV0sdD1lPW51bGwsbik6W1tpLHJdLFtvLGFdXX19fSxnZW9DbGlwUmVjdGFuZ2xlOnB4LGdlb0NvbnRhaW5zOmZ1bmN0aW9uIHFJKHQsZSl7cmV0dXJuKHQmJkN4Lmhhc093blByb3BlcnR5KHQudHlwZSk/Q3hbdC50eXBlXTpreCkodCxlKX0sZ2VvRGlzdGFuY2U6VHgsZ2VvR3JhdGljdWxlOkR4LGdlb0dyYXRpY3VsZTEwOmZ1bmN0aW9uIFlJKCl7cmV0dXJuIER4KCkoKX0sZ2VvSW50ZXJwb2xhdGU6ZnVuY3Rpb24gWEkodCxlKXt2YXIgbj10WzBdKml2LGk9dFsxXSppdixyPWVbMF0qaXYsbz1lWzFdKml2LGE9c3YoaSkscz1kdihpKSxsPXN2KG8pLGM9ZHYobyksdT1hKnN2KG4pLGg9YSpkdihuKSxkPWwqc3YocikscD1sKmR2KHIpLGY9Mipfdihmdih5dihvLWkpK2EqbCp5dihyLW4pKSksbT1kdihmKSxnPWY/ZnVuY3Rpb24odCl7dmFyIGU9ZHYodCo9ZikvbSxuPWR2KGYtdCkvbSxpPW4qdStlKmQscj1uKmgrZSpwLG89bipzK2UqYztyZXR1cm5bYXYocixpKSpudixhdihvLGZ2KGkqaStyKnIpKSpudl19OmZ1bmN0aW9uKCl7cmV0dXJuW24qbnYsaSpudl19O3JldHVybiBnLmRpc3RhbmNlPWYsZ30sZ2VvTGVuZ3RoOlN4LGdlb1BhdGg6ZnVuY3Rpb24gJEkodCxlKXt2YXIgbixpLHI9NC41O2Z1bmN0aW9uIG8odCl7cmV0dXJuIHQmJigiZnVuY3Rpb24iPT10eXBlb2YgciYmaS5wb2ludFJhZGl1cygrci5hcHBseSh0aGlzLGFyZ3VtZW50cykpLEV2KHQsbihpKSkpLGkucmVzdWx0KCl9cmV0dXJuIG8uYXJlYT1mdW5jdGlvbih0KXtyZXR1cm4gRXYodCxuKEt4KSksS3gucmVzdWx0KCl9LG8ubWVhc3VyZT1mdW5jdGlvbih0KXtyZXR1cm4gRXYodCxuKER3KSksRHcucmVzdWx0KCl9LG8uYm91bmRzPWZ1bmN0aW9uKHQpe3JldHVybiBFdih0LG4ob3cpKSxvdy5yZXN1bHQoKX0sby5jZW50cm9pZD1mdW5jdGlvbih0KXtyZXR1cm4gRXYodCxuKFR3KSksVHcucmVzdWx0KCl9LG8ucHJvamVjdGlvbj1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1udWxsPT1lPyh0PW51bGwsQngpOih0PWUpLnN0cmVhbSxvKTp0fSxvLmNvbnRleHQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9bnVsbD09dD8oZT1udWxsLG5ldyBCdyk6bmV3IEN3KGU9dCksImZ1bmN0aW9uIiE9dHlwZW9mIHImJmkucG9pbnRSYWRpdXMociksbyk6ZX0sby5wb2ludFJhZGl1cz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OihpLnBvaW50UmFkaXVzKCt0KSwrdCksbyk6cn0sby5wcm9qZWN0aW9uKHQpLmNvbnRleHQoZSl9LGdlb0FsYmVyczppUyxnZW9BbGJlcnNVc2E6ZnVuY3Rpb24gS0koKXt2YXIgdCxlLG4saSxyLG8sYT1pUygpLHM9blMoKS5yb3RhdGUoWzE1NCwwXSkuY2VudGVyKFstMiw1OC41XSkucGFyYWxsZWxzKFs1NSw2NV0pLGw9blMoKS5yb3RhdGUoWzE1NywwXSkuY2VudGVyKFstMywxOS45XSkucGFyYWxsZWxzKFs4LDE4XSksYz17cG9pbnQ6ZnVuY3Rpb24odCxlKXtvPVt0LGVdfX07ZnVuY3Rpb24gdSh0KXt2YXIgZT10WzBdLGE9dFsxXTtyZXR1cm4gbz1udWxsLG4ucG9pbnQoZSxhKSxvfHwoaS5wb2ludChlLGEpLG8pfHwoci5wb2ludChlLGEpLG8pfWZ1bmN0aW9uIGgoKXtyZXR1cm4gdD1lPW51bGwsdX1yZXR1cm4gdS5pbnZlcnQ9ZnVuY3Rpb24odCl7dmFyIGU9YS5zY2FsZSgpLG49YS50cmFuc2xhdGUoKSxpPSh0WzBdLW5bMF0pL2Uscj0odFsxXS1uWzFdKS9lO3JldHVybihyPj0uMTImJnI8LjIzNCYmaT49LS40MjUmJmk8LS4yMTQ/czpyPj0uMTY2JiZyPC4yMzQmJmk+PS0uMjE0JiZpPC0uMTE1P2w6YSkuaW52ZXJ0KHQpfSx1LnN0cmVhbT1mdW5jdGlvbihuKXtyZXR1cm4gdCYmZT09PW4/dDp0PShmdW5jdGlvbiBpKHQpe3ZhciBlPXQubGVuZ3RoO3JldHVybntwb2ludDpmdW5jdGlvbihuLGkpe2Zvcih2YXIgcj0tMTsrK3I8ZTspdFtyXS5wb2ludChuLGkpfSxzcGhlcmU6ZnVuY3Rpb24oKXtmb3IodmFyIG49LTE7KytuPGU7KXRbbl0uc3BoZXJlKCl9LGxpbmVTdGFydDpmdW5jdGlvbigpe2Zvcih2YXIgbj0tMTsrK248ZTspdFtuXS5saW5lU3RhcnQoKX0sbGluZUVuZDpmdW5jdGlvbigpe2Zvcih2YXIgbj0tMTsrK248ZTspdFtuXS5saW5lRW5kKCl9LHBvbHlnb25TdGFydDpmdW5jdGlvbigpe2Zvcih2YXIgbj0tMTsrK248ZTspdFtuXS5wb2x5Z29uU3RhcnQoKX0scG9seWdvbkVuZDpmdW5jdGlvbigpe2Zvcih2YXIgbj0tMTsrK248ZTspdFtuXS5wb2x5Z29uRW5kKCl9fX0pKFthLnN0cmVhbShlPW4pLHMuc3RyZWFtKG4pLGwuc3RyZWFtKG4pXSl9LHUucHJlY2lzaW9uPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhLnByZWNpc2lvbih0KSxzLnByZWNpc2lvbih0KSxsLnByZWNpc2lvbih0KSxoKCkpOmEucHJlY2lzaW9uKCl9LHUuc2NhbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGEuc2NhbGUodCkscy5zY2FsZSguMzUqdCksbC5zY2FsZSh0KSx1LnRyYW5zbGF0ZShhLnRyYW5zbGF0ZSgpKSk6YS5zY2FsZSgpfSx1LnRyYW5zbGF0ZT1mdW5jdGlvbih0KXtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gYS50cmFuc2xhdGUoKTt2YXIgZT1hLnNjYWxlKCksbz0rdFswXSx1PSt0WzFdO3JldHVybiBuPWEudHJhbnNsYXRlKHQpLmNsaXBFeHRlbnQoW1tvLS40NTUqZSx1LS4yMzgqZV0sW28rLjQ1NSplLHUrLjIzOCplXV0pLnN0cmVhbShjKSxpPXMudHJhbnNsYXRlKFtvLS4zMDcqZSx1Ky4yMDEqZV0pLmNsaXBFeHRlbnQoW1tvLS40MjUqZStLeSx1Ky4xMiplK0t5XSxbby0uMjE0KmUtS3ksdSsuMjM0KmUtS3ldXSkuc3RyZWFtKGMpLHI9bC50cmFuc2xhdGUoW28tLjIwNSplLHUrLjIxMiplXSkuY2xpcEV4dGVudChbW28tLjIxNCplK0t5LHUrLjE2NiplK0t5XSxbby0uMTE1KmUtS3ksdSsuMjM0KmUtS3ldXSkuc3RyZWFtKGMpLGgoKX0sdS5maXRFeHRlbnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gancodSx0LGUpfSx1LmZpdFNpemU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gR3codSx0LGUpfSx1LmZpdFdpZHRoPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIFd3KHUsdCxlKX0sdS5maXRIZWlnaHQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gcXcodSx0LGUpfSx1LnNjYWxlKDEwNzApfSxnZW9BemltdXRoYWxFcXVhbEFyZWE6ZnVuY3Rpb24gWkkoKXtyZXR1cm4gSncoYVMpLnNjYWxlKDEyNC43NSkuY2xpcEFuZ2xlKDE3OS45OTkpfSxnZW9BemltdXRoYWxFcXVhbEFyZWFSYXc6YVMsZ2VvQXppbXV0aGFsRXF1aWRpc3RhbnQ6ZnVuY3Rpb24gSkkoKXtyZXR1cm4gSncoc1MpLnNjYWxlKDc5LjQxODgpLmNsaXBBbmdsZSgxNzkuOTk5KX0sZ2VvQXppbXV0aGFsRXF1aWRpc3RhbnRSYXc6c1MsZ2VvQ29uaWNDb25mb3JtYWw6ZnVuY3Rpb24gUUkoKXtyZXR1cm4gdFMoaFMpLnNjYWxlKDEwOS41KS5wYXJhbGxlbHMoWzMwLDMwXSl9LGdlb0NvbmljQ29uZm9ybWFsUmF3OmhTLGdlb0NvbmljRXF1YWxBcmVhOm5TLGdlb0NvbmljRXF1YWxBcmVhUmF3OmVTLGdlb0NvbmljRXF1aWRpc3RhbnQ6ZnVuY3Rpb24gdFIoKXtyZXR1cm4gdFMocFMpLnNjYWxlKDEzMS4xNTQpLmNlbnRlcihbMCwxMy45Mzg5XSl9LGdlb0NvbmljRXF1aWRpc3RhbnRSYXc6cFMsZ2VvRXF1YWxFYXJ0aDpmdW5jdGlvbiBlUigpe3JldHVybiBKdyh2Uykuc2NhbGUoMTc3LjE1OCl9LGdlb0VxdWFsRWFydGhSYXc6dlMsZ2VvRXF1aXJlY3Rhbmd1bGFyOmZ1bmN0aW9uIG5SKCl7cmV0dXJuIEp3KGRTKS5zY2FsZSgxNTIuNjMpfSxnZW9FcXVpcmVjdGFuZ3VsYXJSYXc6ZFMsZ2VvR25vbW9uaWM6ZnVuY3Rpb24gaVIoKXtyZXR1cm4gSncoYlMpLnNjYWxlKDE0NC4wNDkpLmNsaXBBbmdsZSg2MCl9LGdlb0dub21vbmljUmF3OmJTLGdlb0lkZW50aXR5OmZ1bmN0aW9uIHJSKCl7dmFyIHQsZSxuLGkscixvLGEscz0xLGw9MCxjPTAsdT0xLGg9MSxkPTAscD1udWxsLGY9MSxtPTEsZz1Gdyh7cG9pbnQ6ZnVuY3Rpb24odCxlKXt2YXIgbj12KFt0LGVdKTt0aGlzLnN0cmVhbS5wb2ludChuWzBdLG5bMV0pfX0pLF89Qng7ZnVuY3Rpb24geSgpe3JldHVybiBmPXMqdSxtPXMqaCxvPWE9bnVsbCx2fWZ1bmN0aW9uIHYobil7dmFyIGk9blswXSpmLHI9blsxXSptO2lmKGQpe3ZhciBvPXIqdC1pKmU7aT1pKnQrciplLHI9b31yZXR1cm5baStsLHIrY119cmV0dXJuIHYuaW52ZXJ0PWZ1bmN0aW9uKG4pe3ZhciBpPW5bMF0tbCxyPW5bMV0tYztpZihkKXt2YXIgbz1yKnQraSplO2k9aSp0LXIqZSxyPW99cmV0dXJuW2kvZixyL21dfSx2LnN0cmVhbT1mdW5jdGlvbih0KXtyZXR1cm4gbyYmYT09PXQ/bzpvPWcoXyhhPXQpKX0sdi5wb3N0Y2xpcD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oXz10LHA9bj1pPXI9bnVsbCx5KCkpOl99LHYuY2xpcEV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oXz1udWxsPT10PyhwPW49aT1yPW51bGwsQngpOnB4KHA9K3RbMF1bMF0sbj0rdFswXVsxXSxpPSt0WzFdWzBdLHI9K3RbMV1bMV0pLHkoKSk6bnVsbD09cD9udWxsOltbcCxuXSxbaSxyXV19LHYuc2NhbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9K3QseSgpKTpzfSx2LnRyYW5zbGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obD0rdFswXSxjPSt0WzFdLHkoKSk6W2wsY119LHYuYW5nbGU9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9ZHYoZD1uJTM2MCppdiksdD1zdihkKSx5KCkpOmQqbnZ9LHYucmVmbGVjdFg9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9dD8tMToxLHkoKSk6dTwwfSx2LnJlZmxlY3RZPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPXQ/LTE6MSx5KCkpOmg8MH0sdi5maXRFeHRlbnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gancodix0LGUpfSx2LmZpdFNpemU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gR3codix0LGUpfSx2LmZpdFdpZHRoPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIFd3KHYsdCxlKX0sdi5maXRIZWlnaHQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gcXcodix0LGUpfSx2fSxnZW9Qcm9qZWN0aW9uOkp3LGdlb1Byb2plY3Rpb25NdXRhdG9yOlF3LGdlb01lcmNhdG9yOmZ1bmN0aW9uIG9SKCl7cmV0dXJuIGNTKGxTKS5zY2FsZSg5NjEvZXYpfSxnZW9NZXJjYXRvclJhdzpsUyxnZW9OYXR1cmFsRWFydGgxOmZ1bmN0aW9uIGFSKCl7cmV0dXJuIEp3KHhTKS5zY2FsZSgxNzUuMjk1KX0sZ2VvTmF0dXJhbEVhcnRoMVJhdzp4UyxnZW9PcnRob2dyYXBoaWM6ZnVuY3Rpb24gc1IoKXtyZXR1cm4gSncod1MpLnNjYWxlKDI0OS41KS5jbGlwQW5nbGUoOTAuMDAwMDAxKX0sZ2VvT3J0aG9ncmFwaGljUmF3OndTLGdlb1N0ZXJlb2dyYXBoaWM6ZnVuY3Rpb24gbFIoKXtyZXR1cm4gSncoU1MpLnNjYWxlKDI1MCkuY2xpcEFuZ2xlKDE0Mil9LGdlb1N0ZXJlb2dyYXBoaWNSYXc6U1MsZ2VvVHJhbnN2ZXJzZU1lcmNhdG9yOmZ1bmN0aW9uIGNSKCl7dmFyIHQ9Y1MoTVMpLGU9dC5jZW50ZXIsbj10LnJvdGF0ZTtyZXR1cm4gdC5jZW50ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/ZShbLXRbMV0sdFswXV0pOlsodD1lKCkpWzFdLC10WzBdXX0sdC5yb3RhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/bihbdFswXSx0WzFdLHQubGVuZ3RoPjI/dFsyXSs5MDo5MF0pOlsodD1uKCkpWzBdLHRbMV0sdFsyXS05MF19LG4oWzAsMCw5MF0pLnNjYWxlKDE1OS4xNTUpfSxnZW9UcmFuc3ZlcnNlTWVyY2F0b3JSYXc6TVMsZ2VvUm90YXRpb246WWIsZ2VvU3RyZWFtOkV2LGdlb1RyYW5zZm9ybTpmdW5jdGlvbiB1Uih0KXtyZXR1cm57c3RyZWFtOkZ3KHQpfX0sY2x1c3RlcjpmdW5jdGlvbiBoUigpe3ZhciB0PUVTLGU9MSxuPTEsaT0hMTtmdW5jdGlvbiByKHIpe3ZhciBvLGE9MDtyLmVhY2hBZnRlcigoZnVuY3Rpb24oZSl7dmFyIG49ZS5jaGlsZHJlbjtuPyhlLng9KGZ1bmN0aW9uIGkodCl7cmV0dXJuIHQucmVkdWNlKFRTLDApL3QubGVuZ3RofSkobiksZS55PShmdW5jdGlvbiByKHQpe3JldHVybiAxK3QucmVkdWNlKENTLDApfSkobikpOihlLng9bz9hKz10KGUsbyk6MCxlLnk9MCxvPWUpfSkpO3ZhciBzPShmdW5jdGlvbiBsKHQpe2Zvcih2YXIgZTtlPXQuY2hpbGRyZW47KXQ9ZVswXTtyZXR1cm4gdH0pKHIpLGM9KGZ1bmN0aW9uIHUodCl7Zm9yKHZhciBlO2U9dC5jaGlsZHJlbjspdD1lW2UubGVuZ3RoLTFdO3JldHVybiB0fSkociksaD1zLngtdChzLGMpLzIsZD1jLngrdChjLHMpLzI7cmV0dXJuIHIuZWFjaEFmdGVyKGk/ZnVuY3Rpb24odCl7dC54PSh0Lngtci54KSplLHQueT0oci55LXQueSkqbn06ZnVuY3Rpb24odCl7dC54PSh0LngtaCkvKGQtaCkqZSx0Lnk9KDEtKHIueT90Lnkvci55OjEpKSpufSl9cmV0dXJuIHIuc2VwYXJhdGlvbj1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1lLHIpOnR9LHIuc2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0hMSxlPSt0WzBdLG49K3RbMV0scik6aT9udWxsOltlLG5dfSxyLm5vZGVTaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSEwLGU9K3RbMF0sbj0rdFsxXSxyKTppP1tlLG5dOm51bGx9LHJ9LGhpZXJhcmNoeTprUyxwYWNrOmZ1bmN0aW9uIGRSKCl7dmFyIHQ9bnVsbCxlPTEsbj0xLGk9bE07ZnVuY3Rpb24gcihyKXtyZXR1cm4gci54PWUvMixyLnk9bi8yLHQ/ci5lYWNoQmVmb3JlKGhNKHQpKS5lYWNoQWZ0ZXIoZE0oaSwuNSkpLmVhY2hCZWZvcmUocE0oMSkpOnIuZWFjaEJlZm9yZShoTSh1TSkpLmVhY2hBZnRlcihkTShsTSwxKSkuZWFjaEFmdGVyKGRNKGksci5yL01hdGgubWluKGUsbikpKS5lYWNoQmVmb3JlKHBNKE1hdGgubWluKGUsbikvKDIqci5yKSkpLHJ9cmV0dXJuIHIucmFkaXVzPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PWFNKGUpLHIpOnR9LHIuc2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT0rdFswXSxuPSt0WzFdLHIpOltlLG5dfSxyLnBhZGRpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpjTSgrdCkscik6aX0scn0scGFja1NpYmxpbmdzOmZ1bmN0aW9uIHBSKHQpe3JldHVybiBvTSh0KSx0fSxwYWNrRW5jbG9zZTpZUyxwYXJ0aXRpb246ZnVuY3Rpb24gZlIoKXt2YXIgdD0xLGU9MSxuPTAsaT0hMTtmdW5jdGlvbiByKHIpe3ZhciBvPXIuaGVpZ2h0KzE7cmV0dXJuIHIueDA9ci55MD1uLHIueDE9dCxyLnkxPWUvbyxyLmVhY2hCZWZvcmUoKGZ1bmN0aW9uIGEodCxlKXtyZXR1cm4gZnVuY3Rpb24oaSl7aS5jaGlsZHJlbiYmbU0oaSxpLngwLHQqKGkuZGVwdGgrMSkvZSxpLngxLHQqKGkuZGVwdGgrMikvZSk7dmFyIHI9aS54MCxvPWkueTAsYT1pLngxLW4scz1pLnkxLW47YTxyJiYocj1hPShyK2EpLzIpLHM8byYmKG89cz0obytzKS8yKSxpLngwPXIsaS55MD1vLGkueDE9YSxpLnkxPXN9fSkoZSxvKSksaSYmci5lYWNoQmVmb3JlKGZNKSxyfXJldHVybiByLnJvdW5kPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSEhdCxyKTppfSxyLnNpemU9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9K25bMF0sZT0rblsxXSxyKTpbdCxlXX0sci5wYWRkaW5nPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSt0LHIpOm59LHJ9LHN0cmF0aWZ5OmZ1bmN0aW9uIG1SKCl7dmFyIHQ9eU0sZT12TTtmdW5jdGlvbiBuKG4pe3ZhciBpLHIsbyxhLHMsbCxjLHU9bi5sZW5ndGgsaD1uZXcgQXJyYXkodSksZD17fTtmb3Iocj0wO3I8dTsrK3Ipcz1oW3JdPW5ldyBJUyhpPW5bcl0pLG51bGwhPShsPXQoaSxyLG4pKSYmKGwrPSIiKSYmKGRbYz0iJCIrKHMuaWQ9bCldPWMgaW4gZD9fTTpzKTtmb3Iocj0wO3I8dTsrK3IpaWYocz1oW3JdLG51bGwhPShsPWUobltyXSxyLG4pKSYmKGwrPSIiKSl7aWYoIShhPWRbIiQiK2xdKSl0aHJvdyBuZXcgRXJyb3IoIm1pc3Npbmc6ICIrbCk7aWYoYT09PV9NKXRocm93IG5ldyBFcnJvcigiYW1iaWd1b3VzOiAiK2wpO2EuY2hpbGRyZW4/YS5jaGlsZHJlbi5wdXNoKHMpOmEuY2hpbGRyZW49W3NdLHMucGFyZW50PWF9ZWxzZXtpZihvKXRocm93IG5ldyBFcnJvcigibXVsdGlwbGUgcm9vdHMiKTtvPXN9aWYoIW8pdGhyb3cgbmV3IEVycm9yKCJubyByb290Iik7aWYoby5wYXJlbnQ9Z00sby5lYWNoQmVmb3JlKChmdW5jdGlvbih0KXt0LmRlcHRoPXQucGFyZW50LmRlcHRoKzEsLS11fSkpLmVhY2hCZWZvcmUoTlMpLG8ucGFyZW50PW51bGwsdT4wKXRocm93IG5ldyBFcnJvcigiY3ljbGUiKTtyZXR1cm4gb31yZXR1cm4gbi5pZD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1zTShlKSxuKTp0fSxuLnBhcmVudElkPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXNNKHQpLG4pOmV9LG59LHRyZWU6ZnVuY3Rpb24gZ1IoKXt2YXIgdD1iTSxlPTEsbj0xLGk9bnVsbDtmdW5jdGlvbiByKHIpe3ZhciBsPShmdW5jdGlvbiBjKHQpe2Zvcih2YXIgZSxuLGkscixvLGE9bmV3IEVNKHQsMCkscz1bYV07ZT1zLnBvcCgpOylpZihpPWUuXy5jaGlsZHJlbilmb3IoZS5jaGlsZHJlbj1uZXcgQXJyYXkobz1pLmxlbmd0aCkscj1vLTE7cj49MDstLXIpcy5wdXNoKG49ZS5jaGlsZHJlbltyXT1uZXcgRU0oaVtyXSxyKSksbi5wYXJlbnQ9ZTtyZXR1cm4oYS5wYXJlbnQ9bmV3IEVNKG51bGwsMCkpLmNoaWxkcmVuPVthXSxhfSkocik7aWYobC5lYWNoQWZ0ZXIobyksbC5wYXJlbnQubT0tbC56LGwuZWFjaEJlZm9yZShhKSxpKXIuZWFjaEJlZm9yZShzKTtlbHNle3ZhciB1PXIsaD1yLGQ9cjtyLmVhY2hCZWZvcmUoKGZ1bmN0aW9uKHQpe3QueDx1LngmJih1PXQpLHQueD5oLngmJihoPXQpLHQuZGVwdGg+ZC5kZXB0aCYmKGQ9dCl9KSk7dmFyIHA9dT09PWg/MTp0KHUsaCkvMixmPXAtdS54LG09ZS8oaC54K3ArZiksZz1uLyhkLmRlcHRofHwxKTtyLmVhY2hCZWZvcmUoKGZ1bmN0aW9uKHQpe3QueD0odC54K2YpKm0sdC55PXQuZGVwdGgqZ30pKX1yZXR1cm4gcn1mdW5jdGlvbiBvKGUpe3ZhciBuPWUuY2hpbGRyZW4saT1lLnBhcmVudC5jaGlsZHJlbixyPWUuaT9pW2UuaS0xXTpudWxsO2lmKG4peyEoZnVuY3Rpb24gbyh0KXtmb3IodmFyIGUsbj0wLGk9MCxyPXQuY2hpbGRyZW4sbz1yLmxlbmd0aDstLW8+PTA7KShlPXJbb10pLnorPW4sZS5tKz1uLG4rPWUucysoaSs9ZS5jKX0pKGUpO3ZhciBhPShuWzBdLnorbltuLmxlbmd0aC0xXS56KS8yO3I/KGUuej1yLnordChlLl8sci5fKSxlLm09ZS56LWEpOmUuej1hfWVsc2UgciYmKGUuej1yLnordChlLl8sci5fKSk7ZS5wYXJlbnQuQT0oZnVuY3Rpb24gcyhlLG4saSl7aWYobil7Zm9yKHZhciByLG89ZSxhPWUscz1uLGw9by5wYXJlbnQuY2hpbGRyZW5bMF0sYz1vLm0sdT1hLm0saD1zLm0sZD1sLm07cz13TShzKSxvPXhNKG8pLHMmJm87KWw9eE0obCksKGE9d00oYSkpLmE9ZSwocj1zLnoraC1vLnotYyt0KHMuXyxvLl8pKT4wJiYoU00oTU0ocyxlLGkpLGUsciksYys9cix1Kz1yKSxoKz1zLm0sYys9by5tLGQrPWwubSx1Kz1hLm07cyYmIXdNKGEpJiYoYS50PXMsYS5tKz1oLXUpLG8mJiF4TShsKSYmKGwudD1vLGwubSs9Yy1kLGk9ZSl9cmV0dXJuIGl9KShlLHIsZS5wYXJlbnQuQXx8aVswXSl9ZnVuY3Rpb24gYSh0KXt0Ll8ueD10LnordC5wYXJlbnQubSx0Lm0rPXQucGFyZW50Lm19ZnVuY3Rpb24gcyh0KXt0LngqPWUsdC55PXQuZGVwdGgqbn1yZXR1cm4gci5zZXBhcmF0aW9uPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PWUscik6dH0sci5zaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSExLGU9K3RbMF0sbj0rdFsxXSxyKTppP251bGw6W2Usbl19LHIubm9kZVNpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ITAsZT0rdFswXSxuPSt0WzFdLHIpOmk/W2Usbl06bnVsbH0scn0sdHJlZW1hcDpmdW5jdGlvbiBfUigpe3ZhciB0PWtNLGU9ITEsbj0xLGk9MSxyPVswXSxvPWxNLGE9bE0scz1sTSxsPWxNLGM9bE07ZnVuY3Rpb24gdSh0KXtyZXR1cm4gdC54MD10LnkwPTAsdC54MT1uLHQueTE9aSx0LmVhY2hCZWZvcmUoaCkscj1bMF0sZSYmdC5lYWNoQmVmb3JlKGZNKSx0fWZ1bmN0aW9uIGgoZSl7dmFyIG49cltlLmRlcHRoXSxpPWUueDArbix1PWUueTArbixoPWUueDEtbixkPWUueTEtbjtoPGkmJihpPWg9KGkraCkvMiksZDx1JiYodT1kPSh1K2QpLzIpLGUueDA9aSxlLnkwPXUsZS54MT1oLGUueTE9ZCxlLmNoaWxkcmVuJiYobj1yW2UuZGVwdGgrMV09byhlKS8yLGkrPWMoZSktbix1Kz1hKGUpLW4sKGgtPXMoZSktbik8aSYmKGk9aD0oaStoKS8yKSwoZC09bChlKS1uKTx1JiYodT1kPSh1K2QpLzIpLHQoZSxpLHUsaCxkKSl9cmV0dXJuIHUucm91bmQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9ISF0LHUpOmV9LHUuc2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0rdFswXSxpPSt0WzFdLHUpOltuLGldfSx1LnRpbGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9c00oZSksdSk6dH0sdS5wYWRkaW5nPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3UucGFkZGluZ0lubmVyKHQpLnBhZGRpbmdPdXRlcih0KTp1LnBhZGRpbmdJbm5lcigpfSx1LnBhZGRpbmdJbm5lcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0iZnVuY3Rpb24iPT10eXBlb2YgdD90OmNNKCt0KSx1KTpvfSx1LnBhZGRpbmdPdXRlcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD91LnBhZGRpbmdUb3AodCkucGFkZGluZ1JpZ2h0KHQpLnBhZGRpbmdCb3R0b20odCkucGFkZGluZ0xlZnQodCk6dS5wYWRkaW5nVG9wKCl9LHUucGFkZGluZ1RvcD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OmNNKCt0KSx1KTphfSx1LnBhZGRpbmdSaWdodD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz0iZnVuY3Rpb24iPT10eXBlb2YgdD90OmNNKCt0KSx1KTpzfSx1LnBhZGRpbmdCb3R0b209ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpjTSgrdCksdSk6bH0sdS5wYWRkaW5nTGVmdD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz0iZnVuY3Rpb24iPT10eXBlb2YgdD90OmNNKCt0KSx1KTpjfSx1fSx0cmVlbWFwQmluYXJ5OmZ1bmN0aW9uIHlSKHQsZSxuLGkscil7dmFyIG8sYSxzPXQuY2hpbGRyZW4sbD1zLmxlbmd0aCxjPW5ldyBBcnJheShsKzEpO2ZvcihjWzBdPWE9bz0wO288bDsrK28pY1tvKzFdPWErPXNbb10udmFsdWU7IShmdW5jdGlvbiB0KGUsbixpLHIsbyxhLGwpe2lmKGU+PW4tMSl7dmFyIHU9c1tlXTtyZXR1cm4gdS54MD1yLHUueTA9byx1LngxPWEsdm9pZCh1LnkxPWwpfXZhciBoPWNbZV0sZD1pLzIraCxwPWUrMSxmPW4tMTtmb3IoO3A8Zjspe3ZhciBtPXArZj4+PjE7Y1ttXTxkP3A9bSsxOmY9bX1kLWNbcC0xXTxjW3BdLWQmJmUrMTxwJiYtLXA7dmFyIGc9Y1twXS1oLF89aS1nO2lmKGEtcj5sLW8pe3ZhciB5PShyKl8rYSpnKS9pO3QoZSxwLGcscixvLHksbCksdChwLG4sXyx5LG8sYSxsKX1lbHNle3ZhciB2PShvKl8rbCpnKS9pO3QoZSxwLGcscixvLGEsdiksdChwLG4sXyxyLHYsYSxsKX19KSgwLGwsdC52YWx1ZSxlLG4saSxyKX0sdHJlZW1hcERpY2U6bU0sdHJlZW1hcFNsaWNlOlRNLHRyZWVtYXBTbGljZURpY2U6ZnVuY3Rpb24gdlIodCxlLG4saSxyKXsoMSZ0LmRlcHRoP1RNOm1NKSh0LGUsbixpLHIpfSx0cmVlbWFwU3F1YXJpZnk6a00sdHJlZW1hcFJlc3F1YXJpZnk6TE0saW50ZXJwb2xhdGU6Y3AsaW50ZXJwb2xhdGVBcnJheTpmdW5jdGlvbiBiUih0LGUpe3JldHVybihlcChlKT90cDpucCkodCxlKX0saW50ZXJwb2xhdGVCYXNpczpqZCxpbnRlcnBvbGF0ZUJhc2lzQ2xvc2VkOkdkLGludGVycG9sYXRlRGF0ZTppcCxpbnRlcnBvbGF0ZURpc2NyZXRlOmZ1bmN0aW9uIHhSKHQpe3ZhciBlPXQubGVuZ3RoO3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gdFtNYXRoLm1heCgwLE1hdGgubWluKGUtMSxNYXRoLmZsb29yKG4qZSkpKV19fSxpbnRlcnBvbGF0ZUh1ZTpmdW5jdGlvbiB3Uih0LGUpe3ZhciBuPVlkKCt0LCtlKTtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIGU9bih0KTtyZXR1cm4gZS0zNjAqTWF0aC5mbG9vcihlLzM2MCl9fSxpbnRlcnBvbGF0ZU51bWJlcjpycCxpbnRlcnBvbGF0ZU51bWJlckFycmF5OnRwLGludGVycG9sYXRlT2JqZWN0Om9wLGludGVycG9sYXRlUm91bmQ6dXAsaW50ZXJwb2xhdGVTdHJpbmc6bHAsaW50ZXJwb2xhdGVUcmFuc2Zvcm1Dc3M6dnAsaW50ZXJwb2xhdGVUcmFuc2Zvcm1Tdmc6eHAsaW50ZXJwb2xhdGVab29tOkVwLGludGVycG9sYXRlUmdiOktkLGludGVycG9sYXRlUmdiQmFzaXM6SmQsaW50ZXJwb2xhdGVSZ2JCYXNpc0Nsb3NlZDpRZCxpbnRlcnBvbGF0ZUhzbDpDcCxpbnRlcnBvbGF0ZUhzbExvbmc6QXAsaW50ZXJwb2xhdGVMYWI6a3AsaW50ZXJwb2xhdGVIY2w6UHAsaW50ZXJwb2xhdGVIY2xMb25nOk5wLGludGVycG9sYXRlQ3ViZWhlbGl4OlJwLGludGVycG9sYXRlQ3ViZWhlbGl4TG9uZzpPcCxwaWVjZXdpc2U6ZnVuY3Rpb24gU1IodCxlKXtmb3IodmFyIG49MCxpPWUubGVuZ3RoLTEscj1lWzBdLG89bmV3IEFycmF5KGk8MD8wOmkpO248aTspb1tuXT10KHIscj1lWysrbl0pO3JldHVybiBmdW5jdGlvbih0KXt2YXIgZT1NYXRoLm1heCgwLE1hdGgubWluKGktMSxNYXRoLmZsb29yKHQqPWkpKSk7cmV0dXJuIG9bZV0odC1lKX19LHF1YW50aXplOmZ1bmN0aW9uIE1SKHQsZSl7Zm9yKHZhciBuPW5ldyBBcnJheShlKSxpPTA7aTxlOysraSluW2ldPXQoaS8oZS0xKSk7cmV0dXJuIG59LHBhdGg6T2cscG9seWdvbkFyZWE6ZnVuY3Rpb24gRVIodCl7Zm9yKHZhciBlLG49LTEsaT10Lmxlbmd0aCxyPXRbaS0xXSxvPTA7KytuPGk7KW8rPShlPXIpWzFdKihyPXRbbl0pWzBdLWVbMF0qclsxXTtyZXR1cm4gby8yfSxwb2x5Z29uQ2VudHJvaWQ6ZnVuY3Rpb24gVFIodCl7Zm9yKHZhciBlLG4saT0tMSxyPXQubGVuZ3RoLG89MCxhPTAscz10W3ItMV0sbD0wOysraTxyOylsKz1uPShlPXMpWzBdKihzPXRbaV0pWzFdLXNbMF0qZVsxXSxvKz0oZVswXStzWzBdKSpuLGErPShlWzFdK3NbMV0pKm47cmV0dXJuW28vKGwqPTMpLGEvbF19LHBvbHlnb25IdWxsOmZ1bmN0aW9uIENSKHQpe2lmKChuPXQubGVuZ3RoKTwzKXJldHVybiBudWxsO3ZhciBlLG4saT1uZXcgQXJyYXkobikscj1uZXcgQXJyYXkobik7Zm9yKGU9MDtlPG47KytlKWlbZV09Wyt0W2VdWzBdLCt0W2VdWzFdLGVdO2ZvcihpLnNvcnQoTk0pLGU9MDtlPG47KytlKXJbZV09W2lbZV1bMF0sLWlbZV1bMV1dO3ZhciBvPUlNKGkpLGE9SU0ocikscz1hWzBdPT09b1swXSxsPWFbYS5sZW5ndGgtMV09PT1vW28ubGVuZ3RoLTFdLGM9W107Zm9yKGU9by5sZW5ndGgtMTtlPj0wOy0tZSljLnB1c2godFtpW29bZV1dWzJdXSk7Zm9yKGU9K3M7ZTxhLmxlbmd0aC1sOysrZSljLnB1c2godFtpW2FbZV1dWzJdXSk7cmV0dXJuIGN9LHBvbHlnb25Db250YWluczpmdW5jdGlvbiBBUih0LGUpe2Zvcih2YXIgbixpLHI9dC5sZW5ndGgsbz10W3ItMV0sYT1lWzBdLHM9ZVsxXSxsPW9bMF0sYz1vWzFdLHU9ITEsaD0wO2g8cjsrK2gpbj0obz10W2hdKVswXSwoaT1vWzFdKT5zIT1jPnMmJmE8KGwtbikqKHMtaSkvKGMtaSkrbiYmKHU9IXUpLGw9bixjPWk7cmV0dXJuIHV9LHBvbHlnb25MZW5ndGg6ZnVuY3Rpb24ga1IodCl7Zm9yKHZhciBlLG4saT0tMSxyPXQubGVuZ3RoLG89dFtyLTFdLGE9b1swXSxzPW9bMV0sbD0wOysraTxyOyllPWEsbj1zLGUtPWE9KG89dFtpXSlbMF0sbi09cz1vWzFdLGwrPU1hdGguc3FydChlKmUrbipuKTtyZXR1cm4gbH0scXVhZHRyZWU6dHkscmFuZG9tVW5pZm9ybTpPTSxyYW5kb21Ob3JtYWw6ek0scmFuZG9tTG9nTm9ybWFsOkRNLHJhbmRvbUJhdGVzOkhNLHJhbmRvbUlyd2luSGFsbDpCTSxyYW5kb21FeHBvbmVudGlhbDpGTSxzY2FsZUJhbmQ6WE0sc2NhbGVQb2ludDpLTSxzY2FsZUlkZW50aXR5OmZ1bmN0aW9uIHQoZSl7dmFyIG47ZnVuY3Rpb24gaSh0KXtyZXR1cm4gaXNOYU4odD0rdCk/bjp0fXJldHVybiBpLmludmVydD1pLGkuZG9tYWluPWkucmFuZ2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9R00uY2FsbCh0LFpNKSxpKTplLnNsaWNlKCl9LGkudW5rbm93bj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj10LGkpOm59LGkuY29weT1mdW5jdGlvbigpe3JldHVybiB0KGUpLnVua25vd24obil9LGU9YXJndW1lbnRzLmxlbmd0aD9HTS5jYWxsKGUsWk0pOlswLDFdLGxFKGkpfSxzY2FsZUxpbmVhcjpjRSxzY2FsZUxvZzp5RSxzY2FsZVN5bWxvZzpmdW5jdGlvbiB0KCl7dmFyIGU9eEUob0UoKSk7cmV0dXJuIGUuY29weT1mdW5jdGlvbigpe3JldHVybiByRShlLHQoKSkuY29uc3RhbnQoZS5jb25zdGFudCgpKX0sVk0uYXBwbHkoZSxhcmd1bWVudHMpfSxzY2FsZU9yZGluYWw6WU0sc2NhbGVJbXBsaWNpdDpxTSxzY2FsZVBvdzpURSxzY2FsZVNxcnQ6ZnVuY3Rpb24gTFIoKXtyZXR1cm4gVEUuYXBwbHkobnVsbCxhcmd1bWVudHMpLmV4cG9uZW50KC41KX0sc2NhbGVRdWFudGlsZTpDRSxzY2FsZVF1YW50aXplOkFFLHNjYWxlVGhyZXNob2xkOmZ1bmN0aW9uIHQoKXt2YXIgZSxuPVsuNV0saT1bMCwxXSxyPTE7ZnVuY3Rpb24gbyh0KXtyZXR1cm4gdDw9dD9pW0RsKG4sdCwwLHIpXTplfXJldHVybiBvLmRvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1XTS5jYWxsKHQpLHI9TWF0aC5taW4obi5sZW5ndGgsaS5sZW5ndGgtMSksbyk6bi5zbGljZSgpfSxvLnJhbmdlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPVdNLmNhbGwodCkscj1NYXRoLm1pbihuLmxlbmd0aCxpLmxlbmd0aC0xKSxvKTppLnNsaWNlKCl9LG8uaW52ZXJ0RXh0ZW50PWZ1bmN0aW9uKHQpe3ZhciBlPWkuaW5kZXhPZih0KTtyZXR1cm5bbltlLTFdLG5bZV1dfSxvLnVua25vd249ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dCxvKTplfSxvLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gdCgpLmRvbWFpbihuKS5yYW5nZShpKS51bmtub3duKGUpfSxWTS5hcHBseShvLGFyZ3VtZW50cyl9LHNjYWxlVGltZTp6QSxzY2FsZVV0YzpmdW5jdGlvbiBQUigpe3JldHVybiBWTS5hcHBseShPQShZVCxHVCxrVCxUVCxTVCxiVCxWRSxJRSxuQykuZG9tYWluKFtEYXRlLlVUQygyZTMsMCwxKSxEYXRlLlVUQygyZTMsMCwyKV0pLGFyZ3VtZW50cyl9LHNjYWxlU2VxdWVudGlhbDpmdW5jdGlvbiB0KCl7dmFyIGU9bEUoREEoKShRTSkpO3JldHVybiBlLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gQkEoZSx0KCkpfSxVTS5hcHBseShlLGFyZ3VtZW50cyl9LHNjYWxlU2VxdWVudGlhbExvZzpmdW5jdGlvbiB0KCl7dmFyIGU9X0UoREEoKSkuZG9tYWluKFsxLDEwXSk7cmV0dXJuIGUuY29weT1mdW5jdGlvbigpe3JldHVybiBCQShlLHQoKSkuYmFzZShlLmJhc2UoKSl9LFVNLmFwcGx5KGUsYXJndW1lbnRzKX0sc2NhbGVTZXF1ZW50aWFsUG93OkhBLHNjYWxlU2VxdWVudGlhbFNxcnQ6ZnVuY3Rpb24gTlIoKXtyZXR1cm4gSEEuYXBwbHkobnVsbCxhcmd1bWVudHMpLmV4cG9uZW50KC41KX0sc2NhbGVTZXF1ZW50aWFsU3ltbG9nOmZ1bmN0aW9uIHQoKXt2YXIgZT14RShEQSgpKTtyZXR1cm4gZS5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIEJBKGUsdCgpKS5jb25zdGFudChlLmNvbnN0YW50KCkpfSxVTS5hcHBseShlLGFyZ3VtZW50cyl9LHNjYWxlU2VxdWVudGlhbFF1YW50aWxlOmZ1bmN0aW9uIHQoKXt2YXIgZT1bXSxuPVFNO2Z1bmN0aW9uIGkodCl7aWYoIWlzTmFOKHQ9K3QpKXJldHVybiBuKChEbChlLHQpLTEpLyhlLmxlbmd0aC0xKSl9cmV0dXJuIGkuZG9tYWluPWZ1bmN0aW9uKHQpe2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiBlLnNsaWNlKCk7ZT1bXTtmb3IodmFyIG4scj0wLG89dC5sZW5ndGg7cjxvOysrciludWxsPT0obj10W3JdKXx8aXNOYU4obj0rbil8fGUucHVzaChuKTtyZXR1cm4gZS5zb3J0KFJsKSxpfSxpLmludGVycG9sYXRvcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj10LGkpOm59LGkuY29weT1mdW5jdGlvbigpe3JldHVybiB0KG4pLmRvbWFpbihlKX0sVU0uYXBwbHkoaSxhcmd1bWVudHMpfSxzY2FsZURpdmVyZ2luZzpmdW5jdGlvbiB0KCl7dmFyIGU9bEUoRkEoKShRTSkpO3JldHVybiBlLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gQkEoZSx0KCkpfSxVTS5hcHBseShlLGFyZ3VtZW50cyl9LHNjYWxlRGl2ZXJnaW5nTG9nOmZ1bmN0aW9uIHQoKXt2YXIgZT1fRShGQSgpKS5kb21haW4oWy4xLDEsMTBdKTtyZXR1cm4gZS5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIEJBKGUsdCgpKS5iYXNlKGUuYmFzZSgpKX0sVU0uYXBwbHkoZSxhcmd1bWVudHMpfSxzY2FsZURpdmVyZ2luZ1BvdzpWQSxzY2FsZURpdmVyZ2luZ1NxcnQ6ZnVuY3Rpb24gSVIoKXtyZXR1cm4gVkEuYXBwbHkobnVsbCxhcmd1bWVudHMpLmV4cG9uZW50KC41KX0sc2NhbGVEaXZlcmdpbmdTeW1sb2c6ZnVuY3Rpb24gdCgpe3ZhciBlPXhFKEZBKCkpO3JldHVybiBlLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gQkEoZSx0KCkpLmNvbnN0YW50KGUuY29uc3RhbnQoKSl9LFVNLmFwcGx5KGUsYXJndW1lbnRzKX0sdGlja0Zvcm1hdDpzRSxzY2hlbWVDYXRlZ29yeTEwOmpBLHNjaGVtZUFjY2VudDpHQSxzY2hlbWVEYXJrMjpXQSxzY2hlbWVQYWlyZWQ6cUEsc2NoZW1lUGFzdGVsMTpZQSxzY2hlbWVQYXN0ZWwyOlhBLHNjaGVtZVNldDE6JEEsc2NoZW1lU2V0MjpLQSxzY2hlbWVTZXQzOlpBLHNjaGVtZVRhYmxlYXUxMDpKQSxpbnRlcnBvbGF0ZUJyQkc6ZWssc2NoZW1lQnJCRzp0ayxpbnRlcnBvbGF0ZVBSR246aWssc2NoZW1lUFJHbjpuayxpbnRlcnBvbGF0ZVBpWUc6b2ssc2NoZW1lUGlZRzpyayxpbnRlcnBvbGF0ZVB1T3I6c2ssc2NoZW1lUHVPcjphayxpbnRlcnBvbGF0ZVJkQnU6Y2ssc2NoZW1lUmRCdTpsayxpbnRlcnBvbGF0ZVJkR3k6aGssc2NoZW1lUmRHeTp1ayxpbnRlcnBvbGF0ZVJkWWxCdTpwayxzY2hlbWVSZFlsQnU6ZGssaW50ZXJwb2xhdGVSZFlsR246bWssc2NoZW1lUmRZbEduOmZrLGludGVycG9sYXRlU3BlY3RyYWw6X2ssc2NoZW1lU3BlY3RyYWw6Z2ssaW50ZXJwb2xhdGVCdUduOnZrLHNjaGVtZUJ1R246eWssaW50ZXJwb2xhdGVCdVB1OnhrLHNjaGVtZUJ1UHU6YmssaW50ZXJwb2xhdGVHbkJ1OlNrLHNjaGVtZUduQnU6d2ssaW50ZXJwb2xhdGVPclJkOkVrLHNjaGVtZU9yUmQ6TWssaW50ZXJwb2xhdGVQdUJ1R246Q2ssc2NoZW1lUHVCdUduOlRrLGludGVycG9sYXRlUHVCdTprayxzY2hlbWVQdUJ1OkFrLGludGVycG9sYXRlUHVSZDpQayxzY2hlbWVQdVJkOkxrLGludGVycG9sYXRlUmRQdTpJayxzY2hlbWVSZFB1Ok5rLGludGVycG9sYXRlWWxHbkJ1Ok9rLHNjaGVtZVlsR25CdTpSayxpbnRlcnBvbGF0ZVlsR246RGssc2NoZW1lWWxHbjp6ayxpbnRlcnBvbGF0ZVlsT3JCcjpIayxzY2hlbWVZbE9yQnI6QmssaW50ZXJwb2xhdGVZbE9yUmQ6Vmssc2NoZW1lWWxPclJkOkZrLGludGVycG9sYXRlQmx1ZXM6amssc2NoZW1lQmx1ZXM6VWssaW50ZXJwb2xhdGVHcmVlbnM6V2ssc2NoZW1lR3JlZW5zOkdrLGludGVycG9sYXRlR3JleXM6WWssc2NoZW1lR3JleXM6cWssaW50ZXJwb2xhdGVQdXJwbGVzOiRrLHNjaGVtZVB1cnBsZXM6WGssaW50ZXJwb2xhdGVSZWRzOlprLHNjaGVtZVJlZHM6S2ssaW50ZXJwb2xhdGVPcmFuZ2VzOlFrLHNjaGVtZU9yYW5nZXM6SmssaW50ZXJwb2xhdGVDaXZpZGlzOmZ1bmN0aW9uIFJSKHQpe3JldHVybiB0PU1hdGgubWF4KDAsTWF0aC5taW4oMSx0KSksInJnYigiK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQoLTQuNTQtdCooMzUuMzQtdCooMjM4MS43My10Kig2NDAyLjctdCooNzAyNC43Mi0yNzEwLjU3KnQpKSkpKSkpKyIsICIrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCgzMi40OSt0KigxNzAuNzMrdCooNTIuODItdCooMTMxLjQ2LXQqKDE3Ni41OC02Ny4zNyp0KSkpKSkpKSsiLCAiK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQoODEuMjQrdCooNDQyLjM2LXQqKDI0ODIuNDMtdCooNjE2Ny4yNC10Kig2NjE0Ljk0LTI0NzUuNjcqdCkpKSkpKSkrIikifSxpbnRlcnBvbGF0ZUN1YmVoZWxpeERlZmF1bHQ6dEwsaW50ZXJwb2xhdGVSYWluYm93OmZ1bmN0aW9uIE9SKHQpeyh0PDB8fHQ+MSkmJih0LT1NYXRoLmZsb29yKHQpKTt2YXIgZT1NYXRoLmFicyh0LS41KTtyZXR1cm4gaUwuaD0zNjAqdC0xMDAsaUwucz0xLjUtMS41KmUsaUwubD0uOC0uOSplLGlMKyIifSxpbnRlcnBvbGF0ZVdhcm06ZUwsaW50ZXJwb2xhdGVDb29sOm5MLGludGVycG9sYXRlU2luZWJvdzpmdW5jdGlvbiB6Uih0KXt2YXIgZTtyZXR1cm4gdD0oLjUtdCkqTWF0aC5QSSxyTC5yPTI1NSooZT1NYXRoLnNpbih0KSkqZSxyTC5nPTI1NSooZT1NYXRoLnNpbih0K29MKSkqZSxyTC5iPTI1NSooZT1NYXRoLnNpbih0K2FMKSkqZSxyTCsiIn0saW50ZXJwb2xhdGVUdXJibzpmdW5jdGlvbiBEUih0KXtyZXR1cm4gdD1NYXRoLm1heCgwLE1hdGgubWluKDEsdCkpLCJyZ2IoIitNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKDM0LjYxK3QqKDExNzIuMzMtdCooMTA3OTMuNTYtdCooMzMzMDAuMTItdCooMzgzOTQuNDktMTQ4MjUuMDUqdCkpKSkpKSkrIiwgIitNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKDIzLjMxK3QqKDU1Ny4zMyt0KigxMjI1LjMzLXQqKDM1NzQuOTYtdCooMTA3My43Nys3MDcuNTYqdCkpKSkpKSkrIiwgIitNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKDI3LjIrdCooMzIxMS4xLXQqKDE1MzI3Ljk3LXQqKDI3ODE0LXQqKDIyNTY5LjE4LTY4MzguNjYqdCkpKSkpKSkrIikifSxpbnRlcnBvbGF0ZVZpcmlkaXM6bEwsaW50ZXJwb2xhdGVNYWdtYTpjTCxpbnRlcnBvbGF0ZUluZmVybm86dUwsaW50ZXJwb2xhdGVQbGFzbWE6aEwsY3JlYXRlOmZ1bmN0aW9uIEJSKHQpe3JldHVybiBEdShOYyh0KS5jYWxsKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkpfSxjcmVhdG9yOk5jLGxvY2FsOmdoLG1hdGNoZXI6RGMsbW91c2U6YmgsbmFtZXNwYWNlOmtjLG5hbWVzcGFjZXM6QWMsY2xpZW50UG9pbnQ6dmgsc2VsZWN0OkR1LHNlbGVjdEFsbDp4aCxzZWxlY3Rpb246enUsc2VsZWN0b3I6UmMsc2VsZWN0b3JBbGw6emMsc3R5bGU6UWMsdG91Y2g6d2gsdG91Y2hlczpmdW5jdGlvbiBIUih0LGUpe251bGw9PWUmJihlPXloKCkudG91Y2hlcyk7Zm9yKHZhciBuPTAsaT1lP2UubGVuZ3RoOjAscj1uZXcgQXJyYXkoaSk7bjxpOysrbilyW25dPXZoKHQsZVtuXSk7cmV0dXJuIHJ9LHdpbmRvdzokYyxnZXQgZXZlbnQoKXtyZXR1cm4gTXV9LGN1c3RvbUV2ZW50Okx1LGFyYzpmdW5jdGlvbiBGUigpe3ZhciB0PVRMLGU9Q0wsbj1kTCgwKSxpPW51bGwscj1BTCxvPWtMLGE9TEwscz1udWxsO2Z1bmN0aW9uIGwoKXt2YXIgbCxjLHU9K3QuYXBwbHkodGhpcyxhcmd1bWVudHMpLGg9K2UuYXBwbHkodGhpcyxhcmd1bWVudHMpLGQ9ci5hcHBseSh0aGlzLGFyZ3VtZW50cyktd0wscD1vLmFwcGx5KHRoaXMsYXJndW1lbnRzKS13TCxmPXBMKHAtZCksbT1wPmQ7aWYoc3x8KHM9bD1PZygpKSxoPHUmJihjPWgsaD11LHU9YyksaD5iTClpZihmPlNMLWJMKXMubW92ZVRvKGgqbUwoZCksaCp5TChkKSkscy5hcmMoMCwwLGgsZCxwLCFtKSx1PmJMJiYocy5tb3ZlVG8odSptTChwKSx1KnlMKHApKSxzLmFyYygwLDAsdSxwLGQsbSkpO2Vsc2V7dmFyIGcsXyx5PWQsdj1wLGI9ZCx4PXAsdz1mLFM9ZixNPWEuYXBwbHkodGhpcyxhcmd1bWVudHMpLzIsRT1NPmJMJiYoaT8raS5hcHBseSh0aGlzLGFyZ3VtZW50cyk6dkwodSp1K2gqaCkpLFQ9X0wocEwoaC11KS8yLCtuLmFwcGx5KHRoaXMsYXJndW1lbnRzKSksQz1ULEE9VDtpZihFPmJMKXt2YXIgaz1FTChFL3UqeUwoTSkpLEw9RUwoRS9oKnlMKE0pKTsody09MiprKT5iTD8oYis9ayo9bT8xOi0xLHgtPWspOih3PTAsYj14PShkK3ApLzIpLChTLT0yKkwpPmJMPyh5Kz1MKj1tPzE6LTEsdi09TCk6KFM9MCx5PXY9KGQrcCkvMil9dmFyIFA9aCptTCh5KSxOPWgqeUwoeSksST11Km1MKHgpLFI9dSp5TCh4KTtpZihUPmJMKXt2YXIgTyx6PWgqbUwodiksRD1oKnlMKHYpLEI9dSptTChiKSxIPXUqeUwoYik7aWYoZjx4TCYmKE89UEwoUCxOLEIsSCx6LEQsSSxSKSkpe3ZhciBGPVAtT1swXSxWPU4tT1sxXSxVPXotT1swXSxqPUQtT1sxXSxHPTEveUwoTUwoKEYqVStWKmopLyh2TChGKkYrVipWKSp2TChVKlUraipqKSkpLzIpLFc9dkwoT1swXSpPWzBdK09bMV0qT1sxXSk7Qz1fTChULCh1LVcpLyhHLTEpKSxBPV9MKFQsKGgtVykvKEcrMSkpfX1TPmJMP0E+Ykw/KGc9TkwoQixILFAsTixoLEEsbSksXz1OTCh6LEQsSSxSLGgsQSxtKSxzLm1vdmVUbyhnLmN4K2cueDAxLGcuY3krZy55MDEpLEE8VD9zLmFyYyhnLmN4LGcuY3ksQSxmTChnLnkwMSxnLngwMSksZkwoXy55MDEsXy54MDEpLCFtKToocy5hcmMoZy5jeCxnLmN5LEEsZkwoZy55MDEsZy54MDEpLGZMKGcueTExLGcueDExKSwhbSkscy5hcmMoMCwwLGgsZkwoZy5jeStnLnkxMSxnLmN4K2cueDExKSxmTChfLmN5K18ueTExLF8uY3grXy54MTEpLCFtKSxzLmFyYyhfLmN4LF8uY3ksQSxmTChfLnkxMSxfLngxMSksZkwoXy55MDEsXy54MDEpLCFtKSkpOihzLm1vdmVUbyhQLE4pLHMuYXJjKDAsMCxoLHksdiwhbSkpOnMubW92ZVRvKFAsTiksdT5iTCYmdz5iTD9DPmJMPyhnPU5MKEksUix6LEQsdSwtQyxtKSxfPU5MKFAsTixCLEgsdSwtQyxtKSxzLmxpbmVUbyhnLmN4K2cueDAxLGcuY3krZy55MDEpLEM8VD9zLmFyYyhnLmN4LGcuY3ksQyxmTChnLnkwMSxnLngwMSksZkwoXy55MDEsXy54MDEpLCFtKToocy5hcmMoZy5jeCxnLmN5LEMsZkwoZy55MDEsZy54MDEpLGZMKGcueTExLGcueDExKSwhbSkscy5hcmMoMCwwLHUsZkwoZy5jeStnLnkxMSxnLmN4K2cueDExKSxmTChfLmN5K18ueTExLF8uY3grXy54MTEpLG0pLHMuYXJjKF8uY3gsXy5jeSxDLGZMKF8ueTExLF8ueDExKSxmTChfLnkwMSxfLngwMSksIW0pKSk6cy5hcmMoMCwwLHUseCxiLG0pOnMubGluZVRvKEksUil9ZWxzZSBzLm1vdmVUbygwLDApO2lmKHMuY2xvc2VQYXRoKCksbClyZXR1cm4gcz1udWxsLGwrIiJ8fG51bGx9cmV0dXJuIGwuY2VudHJvaWQ9ZnVuY3Rpb24oKXt2YXIgbj0oK3QuYXBwbHkodGhpcyxhcmd1bWVudHMpKyArZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpLzIsaT0oK3IuYXBwbHkodGhpcyxhcmd1bWVudHMpKyArby5hcHBseSh0aGlzLGFyZ3VtZW50cykpLzIteEwvMjtyZXR1cm5bbUwoaSkqbix5TChpKSpuXX0sbC5pbm5lclJhZGl1cz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOmRMKCtlKSxsKTp0fSxsLm91dGVyUmFkaXVzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6ZEwoK3QpLGwpOmV9LGwuY29ybmVyUmFkaXVzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6ZEwoK3QpLGwpOm59LGwucGFkUmFkaXVzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPW51bGw9PXQ/bnVsbDoiZnVuY3Rpb24iPT10eXBlb2YgdD90OmRMKCt0KSxsKTppfSxsLnN0YXJ0QW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpkTCgrdCksbCk6cn0sbC5lbmRBbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0iZnVuY3Rpb24iPT10eXBlb2YgdD90OmRMKCt0KSxsKTpvfSxsLnBhZEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6ZEwoK3QpLGwpOmF9LGwuY29udGV4dD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz1udWxsPT10P251bGw6dCxsKTpzfSxsfSxhcmVhOkJMLGxpbmU6REwscGllOmZ1bmN0aW9uIFZSKCl7dmFyIHQ9RkwsZT1ITCxuPW51bGwsaT1kTCgwKSxyPWRMKFNMKSxvPWRMKDApO2Z1bmN0aW9uIGEoYSl7dmFyIHMsbCxjLHUsaCxkPWEubGVuZ3RoLHA9MCxmPW5ldyBBcnJheShkKSxtPW5ldyBBcnJheShkKSxnPStpLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxfPU1hdGgubWluKFNMLE1hdGgubWF4KC1TTCxyLmFwcGx5KHRoaXMsYXJndW1lbnRzKS1nKSkseT1NYXRoLm1pbihNYXRoLmFicyhfKS9kLG8uYXBwbHkodGhpcyxhcmd1bWVudHMpKSx2PXkqKF88MD8tMToxKTtmb3Iocz0wO3M8ZDsrK3MpKGg9bVtmW3NdPXNdPSt0KGFbc10scyxhKSk+MCYmKHArPWgpO2ZvcihudWxsIT1lP2Yuc29ydCgoZnVuY3Rpb24odCxuKXtyZXR1cm4gZShtW3RdLG1bbl0pfSkpOm51bGwhPW4mJmYuc29ydCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gbihhW3RdLGFbZV0pfSkpLHM9MCxjPXA/KF8tZCp2KS9wOjA7czxkOysrcyxnPXUpbVtsPWZbc11dPXtkYXRhOmFbbF0saW5kZXg6cyx2YWx1ZTpoPW1bbF0sc3RhcnRBbmdsZTpnLGVuZEFuZ2xlOnU9ZysoaD4wP2gqYzowKSt2LHBhZEFuZ2xlOnl9O3JldHVybiBtfXJldHVybiBhLnZhbHVlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6ZEwoK2UpLGEpOnR9LGEuc29ydFZhbHVlcz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10LG49bnVsbCxhKTplfSxhLnNvcnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49dCxlPW51bGwsYSk6bn0sYS5zdGFydEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6ZEwoK3QpLGEpOml9LGEuZW5kQW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpkTCgrdCksYSk6cn0sYS5wYWRBbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0iZnVuY3Rpb24iPT10eXBlb2YgdD90OmRMKCt0KSxhKTpvfSxhfSxhcmVhUmFkaWFsOnFMLHJhZGlhbEFyZWE6cUwsbGluZVJhZGlhbDpXTCxyYWRpYWxMaW5lOldMLHBvaW50UmFkaWFsOllMLGxpbmtIb3Jpem9udGFsOmZ1bmN0aW9uIFVSKCl7cmV0dXJuIFpMKEpMKX0sbGlua1ZlcnRpY2FsOmZ1bmN0aW9uIGpSKCl7cmV0dXJuIFpMKFFMKX0sbGlua1JhZGlhbDpmdW5jdGlvbiBHUigpe3ZhciB0PVpMKHRQKTtyZXR1cm4gdC5hbmdsZT10LngsZGVsZXRlIHQueCx0LnJhZGl1cz10LnksZGVsZXRlIHQueSx0fSxzeW1ib2w6ZnVuY3Rpb24gV1IoKXt2YXIgdD1kTChlUCksZT1kTCg2NCksbj1udWxsO2Z1bmN0aW9uIGkoKXt2YXIgaTtpZihufHwobj1pPU9nKCkpLHQuYXBwbHkodGhpcyxhcmd1bWVudHMpLmRyYXcobiwrZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpLGkpcmV0dXJuIG49bnVsbCxpKyIifHxudWxsfXJldHVybiBpLnR5cGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpkTChlKSxpKTp0fSxpLnNpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpkTCgrdCksaSk6ZX0saS5jb250ZXh0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPW51bGw9PXQ/bnVsbDp0LGkpOm59LGl9LHN5bWJvbHM6eVAsc3ltYm9sQ2lyY2xlOmVQLHN5bWJvbENyb3NzOm5QLHN5bWJvbERpYW1vbmQ6b1Asc3ltYm9sU3F1YXJlOnVQLHN5bWJvbFN0YXI6Y1Asc3ltYm9sVHJpYW5nbGU6ZFAsc3ltYm9sV3llOl9QLGN1cnZlQmFzaXNDbG9zZWQ6ZnVuY3Rpb24gcVIodCl7cmV0dXJuIG5ldyBTUCh0KX0sY3VydmVCYXNpc09wZW46ZnVuY3Rpb24gWVIodCl7cmV0dXJuIG5ldyBNUCh0KX0sY3VydmVCYXNpczp3UCxjdXJ2ZUJ1bmRsZTpUUCxjdXJ2ZUNhcmRpbmFsQ2xvc2VkOlBQLGN1cnZlQ2FyZGluYWxPcGVuOklQLGN1cnZlQ2FyZGluYWw6a1AsY3VydmVDYXRtdWxsUm9tQ2xvc2VkOkJQLGN1cnZlQ2F0bXVsbFJvbU9wZW46RlAsY3VydmVDYXRtdWxsUm9tOnpQLGN1cnZlTGluZWFyQ2xvc2VkOmZ1bmN0aW9uIFhSKHQpe3JldHVybiBuZXcgVlAodCl9LGN1cnZlTGluZWFyOlJMLGN1cnZlTW9ub3RvbmVYOmZ1bmN0aW9uICRSKHQpe3JldHVybiBuZXcgcVAodCl9LGN1cnZlTW9ub3RvbmVZOmZ1bmN0aW9uIEtSKHQpe3JldHVybiBuZXcgWVAodCl9LGN1cnZlTmF0dXJhbDpmdW5jdGlvbiBaUih0KXtyZXR1cm4gbmV3ICRQKHQpfSxjdXJ2ZVN0ZXA6ZnVuY3Rpb24gSlIodCl7cmV0dXJuIG5ldyBaUCh0LC41KX0sY3VydmVTdGVwQWZ0ZXI6ZnVuY3Rpb24gUVIodCl7cmV0dXJuIG5ldyBaUCh0LDEpfSxjdXJ2ZVN0ZXBCZWZvcmU6ZnVuY3Rpb24gdE8odCl7cmV0dXJuIG5ldyBaUCh0LDApfSxzdGFjazpmdW5jdGlvbiBlTygpe3ZhciB0PWRMKFtdKSxlPVFQLG49SlAsaT10TjtmdW5jdGlvbiByKHIpe3ZhciBvLGEscz10LmFwcGx5KHRoaXMsYXJndW1lbnRzKSxsPXIubGVuZ3RoLGM9cy5sZW5ndGgsdT1uZXcgQXJyYXkoYyk7Zm9yKG89MDtvPGM7KytvKXtmb3IodmFyIGgsZD1zW29dLHA9dVtvXT1uZXcgQXJyYXkobCksZj0wO2Y8bDsrK2YpcFtmXT1oPVswLCtpKHJbZl0sZCxmLHIpXSxoLmRhdGE9cltmXTtwLmtleT1kfWZvcihvPTAsYT1lKHUpO288YzsrK28pdVthW29dXS5pbmRleD1vO3JldHVybiBuKHUsYSksdX1yZXR1cm4gci5rZXlzPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6ZEwoWEwuY2FsbChlKSkscik6dH0sci52YWx1ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OmRMKCt0KSxyKTppfSxyLm9yZGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPW51bGw9PXQ/UVA6ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpkTChYTC5jYWxsKHQpKSxyKTplfSxyLm9mZnNldD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1udWxsPT10P0pQOnQscik6bn0scn0sc3RhY2tPZmZzZXRFeHBhbmQ6ZnVuY3Rpb24gbk8odCxlKXtpZigoaT10Lmxlbmd0aCk+MCl7Zm9yKHZhciBuLGkscixvPTAsYT10WzBdLmxlbmd0aDtvPGE7KytvKXtmb3Iocj1uPTA7bjxpOysrbilyKz10W25dW29dWzFdfHwwO2lmKHIpZm9yKG49MDtuPGk7KytuKXRbbl1bb11bMV0vPXJ9SlAodCxlKX19LHN0YWNrT2Zmc2V0RGl2ZXJnaW5nOmZ1bmN0aW9uIGlPKHQsZSl7aWYoKHM9dC5sZW5ndGgpPjApZm9yKHZhciBuLGkscixvLGEscyxsPTAsYz10W2VbMF1dLmxlbmd0aDtsPGM7KytsKWZvcihvPWE9MCxuPTA7bjxzOysrbikocj0oaT10W2Vbbl1dW2xdKVsxXS1pWzBdKT4wPyhpWzBdPW8saVsxXT1vKz1yKTpyPDA/KGlbMV09YSxpWzBdPWErPXIpOihpWzBdPTAsaVsxXT1yKX0sc3RhY2tPZmZzZXROb25lOkpQLHN0YWNrT2Zmc2V0U2lsaG91ZXR0ZTpmdW5jdGlvbiByTyh0LGUpe2lmKChuPXQubGVuZ3RoKT4wKXtmb3IodmFyIG4saT0wLHI9dFtlWzBdXSxvPXIubGVuZ3RoO2k8bzsrK2kpe2Zvcih2YXIgYT0wLHM9MDthPG47KythKXMrPXRbYV1baV1bMV18fDA7cltpXVsxXSs9cltpXVswXT0tcy8yfUpQKHQsZSl9fSxzdGFja09mZnNldFdpZ2dsZTpmdW5jdGlvbiBvTyh0LGUpe2lmKChyPXQubGVuZ3RoKT4wJiYoaT0obj10W2VbMF1dKS5sZW5ndGgpPjApe2Zvcih2YXIgbixpLHIsbz0wLGE9MTthPGk7KythKXtmb3IodmFyIHM9MCxsPTAsYz0wO3M8cjsrK3Mpe2Zvcih2YXIgdT10W2Vbc11dLGg9dVthXVsxXXx8MCxkPShoLSh1W2EtMV1bMV18fDApKS8yLHA9MDtwPHM7KytwKXt2YXIgZj10W2VbcF1dO2QrPShmW2FdWzFdfHwwKS0oZlthLTFdWzFdfHwwKX1sKz1oLGMrPWQqaH1uW2EtMV1bMV0rPW5bYS0xXVswXT1vLGwmJihvLT1jL2wpfW5bYS0xXVsxXSs9blthLTFdWzBdPW8sSlAodCxlKX19LHN0YWNrT3JkZXJBcHBlYXJhbmNlOmVOLHN0YWNrT3JkZXJBc2NlbmRpbmc6aU4sc3RhY2tPcmRlckRlc2NlbmRpbmc6ZnVuY3Rpb24gYU8odCl7cmV0dXJuIGlOKHQpLnJldmVyc2UoKX0sc3RhY2tPcmRlckluc2lkZU91dDpmdW5jdGlvbiBzTyh0KXt2YXIgZSxuLGk9dC5sZW5ndGgscj10Lm1hcChyTiksbz1lTih0KSxhPTAscz0wLGw9W10sYz1bXTtmb3IoZT0wO2U8aTsrK2Upbj1vW2VdLGE8cz8oYSs9cltuXSxsLnB1c2gobikpOihzKz1yW25dLGMucHVzaChuKSk7cmV0dXJuIGMucmV2ZXJzZSgpLmNvbmNhdChsKX0sc3RhY2tPcmRlck5vbmU6UVAsc3RhY2tPcmRlclJldmVyc2U6ZnVuY3Rpb24gbE8odCl7cmV0dXJuIFFQKHQpLnJldmVyc2UoKX0sdGltZUludGVydmFsOlBFLHRpbWVNaWxsaXNlY29uZDpJRSx0aW1lTWlsbGlzZWNvbmRzOlJFLHV0Y01pbGxpc2Vjb25kOklFLHV0Y01pbGxpc2Vjb25kczpSRSx0aW1lU2Vjb25kOlZFLHRpbWVTZWNvbmRzOlVFLHV0Y1NlY29uZDpWRSx1dGNTZWNvbmRzOlVFLHRpbWVNaW51dGU6R0UsdGltZU1pbnV0ZXM6V0UsdGltZUhvdXI6WUUsdGltZUhvdXJzOlhFLHRpbWVEYXk6S0UsdGltZURheXM6WkUsdGltZVdlZWs6UUUsdGltZVdlZWtzOmFULHRpbWVTdW5kYXk6UUUsdGltZVN1bmRheXM6YVQsdGltZU1vbmRheTp0VCx0aW1lTW9uZGF5czpzVCx0aW1lVHVlc2RheTplVCx0aW1lVHVlc2RheXM6bFQsdGltZVdlZG5lc2RheTpuVCx0aW1lV2VkbmVzZGF5czpjVCx0aW1lVGh1cnNkYXk6aVQsdGltZVRodXJzZGF5czp1VCx0aW1lRnJpZGF5OnJULHRpbWVGcmlkYXlzOmhULHRpbWVTYXR1cmRheTpvVCx0aW1lU2F0dXJkYXlzOmRULHRpbWVNb250aDpmVCx0aW1lTW9udGhzOm1ULHRpbWVZZWFyOl9ULHRpbWVZZWFyczp5VCx1dGNNaW51dGU6YlQsdXRjTWludXRlczp4VCx1dGNIb3VyOlNULHV0Y0hvdXJzOk1ULHV0Y0RheTpUVCx1dGNEYXlzOkNULHV0Y1dlZWs6a1QsdXRjV2Vla3M6elQsdXRjU3VuZGF5OmtULHV0Y1N1bmRheXM6elQsdXRjTW9uZGF5OkxULHV0Y01vbmRheXM6RFQsdXRjVHVlc2RheTpQVCx1dGNUdWVzZGF5czpCVCx1dGNXZWRuZXNkYXk6TlQsdXRjV2VkbmVzZGF5czpIVCx1dGNUaHVyc2RheTpJVCx1dGNUaHVyc2RheXM6RlQsdXRjRnJpZGF5OlJULHV0Y0ZyaWRheXM6VlQsdXRjU2F0dXJkYXk6T1QsdXRjU2F0dXJkYXlzOlVULHV0Y01vbnRoOkdULHV0Y01vbnRoczpXVCx1dGNZZWFyOllULHV0Y1llYXJzOlhULHRpbWVGb3JtYXREZWZhdWx0TG9jYWxlOnhBLGdldCB0aW1lRm9ybWF0KCl7cmV0dXJuIHRDfSxnZXQgdGltZVBhcnNlKCl7cmV0dXJuIGVDfSxnZXQgdXRjRm9ybWF0KCl7cmV0dXJuIG5DfSxnZXQgdXRjUGFyc2UoKXtyZXR1cm4gaUN9LHRpbWVGb3JtYXRMb2NhbGU6SlQsaXNvRm9ybWF0OlNBLGlzb1BhcnNlOkVBLG5vdzpxcCx0aW1lcjokcCx0aW1lckZsdXNoOktwLHRpbWVvdXQ6dGYsaW50ZXJ2YWw6ZnVuY3Rpb24gY08odCxlLG4pe3ZhciBpPW5ldyBYcCxyPWU7cmV0dXJuIG51bGw9PWU/KGkucmVzdGFydCh0LGUsbiksaSk6KGU9K2Usbj1udWxsPT1uP3FwKCk6K24saS5yZXN0YXJ0KChmdW5jdGlvbiBvKGEpe2ErPXIsaS5yZXN0YXJ0KG8scis9ZSxuKSx0KGEpfSksZSxuKSxpKX0sdHJhbnNpdGlvbjpEZixhY3RpdmU6ZnVuY3Rpb24gdU8odCxlKXt2YXIgbixpLHI9dC5fX3RyYW5zaXRpb247aWYocilmb3IoaSBpbiBlPW51bGw9PWU/bnVsbDplKyIiLHIpaWYoKG49cltpXSkuc3RhdGU+MSYmbi5uYW1lPT09ZSlyZXR1cm4gbmV3IHpmKFtbdF1dLFdtLGUsK2kpO3JldHVybiBudWxsfSxpbnRlcnJ1cHQ6bGYsdm9yb25vaTpmdW5jdGlvbiBoTygpe3ZhciB0PWFOLGU9c04sbj1udWxsO2Z1bmN0aW9uIGkoaSl7cmV0dXJuIG5ldyBVTihpLm1hcCgoZnVuY3Rpb24obixyKXt2YXIgbz1bTWF0aC5yb3VuZCh0KG4scixpKS9CTikqQk4sTWF0aC5yb3VuZChlKG4scixpKS9CTikqQk5dO3JldHVybiBvLmluZGV4PXIsby5kYXRhPW4sb30pKSxuKX1yZXR1cm4gaS5wb2x5Z29ucz1mdW5jdGlvbih0KXtyZXR1cm4gaSh0KS5wb2x5Z29ucygpfSxpLmxpbmtzPWZ1bmN0aW9uKHQpe3JldHVybiBpKHQpLmxpbmtzKCl9LGkudHJpYW5nbGVzPWZ1bmN0aW9uKHQpe3JldHVybiBpKHQpLnRyaWFuZ2xlcygpfSxpLng9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpvTigrZSksaSk6dH0saS55PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6b04oK3QpLGkpOmV9LGkuZXh0ZW50PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPW51bGw9PXQ/bnVsbDpbWyt0WzBdWzBdLCt0WzBdWzFdXSxbK3RbMV1bMF0sK3RbMV1bMV1dXSxpKTpuJiZbW25bMF1bMF0sblswXVsxXV0sW25bMV1bMF0sblsxXVsxXV1dfSxpLnNpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49bnVsbD09dD9udWxsOltbMCwwXSxbK3RbMF0sK3RbMV1dXSxpKTpuJiZbblsxXVswXS1uWzBdWzBdLG5bMV1bMV0tblswXVsxXV19LGl9LHpvb206bkksem9vbVRyYW5zZm9ybTpZTix6b29tSWRlbnRpdHk6cU59KTtjbGFzcyBkTyBleHRlbmRzIGtse2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9leHBlcmltZW50cz1bXX1sb2FkKCl7Y29uc3QgdD1FcigpLmV4cGVyaW1lbnRzKCk7cmV0dXJuIHRoaXMucmVxdWVzdE1hbmFnZXIucmVxdWVzdCh0KS50aGVuKCh0PT57Q2UuZXhwb3J0cy5pc0VxdWFsKHRoaXMuX2V4cGVyaW1lbnRzLHQpfHwodGhpcy5fZXhwZXJpbWVudHM9dCx0aGlzLmVtaXRDaGFuZ2UoKSl9KSl9Z2V0RXhwZXJpbWVudHMoKXtyZXR1cm4gdGhpcy5fZXhwZXJpbWVudHMuc2xpY2UoKX19Y29uc3QgcE89bmV3IGRPLGZPPVsiI2ZmNzA0MyIsIiMwMDc3YmIiLCIjY2MzMzExIiwiIzMzYmJlZSIsIiNlZTMzNzciLCIjMDA5OTg4IiwiI2JiYmJiYiJdO2NsYXNzIG1Pe2NvbnN0cnVjdG9yKHQ9Zk8pe3RoaXMucGFsZXR0ZT10LHRoaXMuaWRlbnRpZmllcnM9amcoKX1zZXREb21haW4odCl7cmV0dXJuIHRoaXMuaWRlbnRpZmllcnM9amcoKSx0LmZvckVhY2goKCh0LGUpPT57dGhpcy5pZGVudGlmaWVycy5zZXQodCx0aGlzLnBhbGV0dGVbZSV0aGlzLnBhbGV0dGUubGVuZ3RoXSl9KSksdGhpc31nZXRDb2xvcih0KXtpZighdGhpcy5pZGVudGlmaWVycy5oYXModCkpdGhyb3cgbmV3IEVycm9yKGBTdHJpbmcgJHt0fSB3YXMgbm90IGluIHRoZSBkb21haW4uYCk7cmV0dXJuIHRoaXMuaWRlbnRpZmllcnMuZ2V0KHQpfX1mdW5jdGlvbiBnTyh0LGUpe2NvbnN0IG49bmV3IG1PO2Z1bmN0aW9uIGkoKXtuLnNldERvbWFpbihlKCkpfXJldHVybiB0LmFkZExpc3RlbmVyKGkpLGkoKSx0PT5uLmdldENvbG9yKHQpfWNvbnN0IF9PPWdPKElsLCgoKT0+SWwuZ2V0UnVucygpKSk7Z08ocE8sKCgpPT5wTy5nZXRFeHBlcmltZW50cygpLm1hcCgoKHtuYW1lOnR9KT0+dCkpKSksbWwoe21vZHVsZU5hbWU6InJ1bi1jb2xvci1zdHlsZSIsc3R5bGVDb250ZW50OiJcbiAgICBbY29sb3ItY2xhc3M9J2xpZ2h0LWJsdWUnXSBwYXBlci1jaGVja2JveCB7XG4gICAgICAtLXBhcGVyLWNoZWNrYm94LWNoZWNrZWQtY29sb3I6IHZhcigtLXBhcGVyLWxpZ2h0LWJsdWUtNTAwKTtcbiAgICAgIC0tcGFwZXItY2hlY2tib3gtY2hlY2tlZC1pbmstY29sb3I6IHZhcigtLXBhcGVyLWxpZ2h0LWJsdWUtNTAwKTtcbiAgICAgIC0tcGFwZXItY2hlY2tib3gtdW5jaGVja2VkLWNvbG9yOiB2YXIoLS1wYXBlci1saWdodC1ibHVlLTkwMCk7XG4gICAgICAtLXBhcGVyLWNoZWNrYm94LXVuY2hlY2tlZC1pbmstY29sb3I6IHZhcigtLXBhcGVyLWxpZ2h0LWJsdWUtOTAwKTtcbiAgICB9XG4gICAgW2NvbG9yLWNsYXNzPSdyZWQnXSBwYXBlci1jaGVja2JveCB7XG4gICAgICAtLXBhcGVyLWNoZWNrYm94LWNoZWNrZWQtY29sb3I6IHZhcigtLXBhcGVyLXJlZC01MDApO1xuICAgICAgLS1wYXBlci1jaGVja2JveC1jaGVja2VkLWluay1jb2xvcjogdmFyKC0tcGFwZXItcmVkLTUwMCk7XG4gICAgICAtLXBhcGVyLWNoZWNrYm94LXVuY2hlY2tlZC1jb2xvcjogdmFyKC0tcGFwZXItcmVkLTkwMCk7XG4gICAgICAtLXBhcGVyLWNoZWNrYm94LXVuY2hlY2tlZC1pbmstY29sb3I6IHZhcigtLXBhcGVyLXJlZC05MDApO1xuICAgIH1cbiAgICBbY29sb3ItY2xhc3M9J2dyZWVuJ10gcGFwZXItY2hlY2tib3gge1xuICAgICAgLS1wYXBlci1jaGVja2JveC1jaGVja2VkLWNvbG9yOiB2YXIoLS1wYXBlci1ncmVlbi01MDApO1xuICAgICAgLS1wYXBlci1jaGVja2JveC1jaGVja2VkLWluay1jb2xvcjogdmFyKC0tcGFwZXItZ3JlZW4tNTAwKTtcbiAgICAgIC0tcGFwZXItY2hlY2tib3gtdW5jaGVja2VkLWNvbG9yOiB2YXIoLS1wYXBlci1ncmVlbi05MDApO1xuICAgICAgLS1wYXBlci1jaGVja2JveC11bmNoZWNrZWQtaW5rLWNvbG9yOiB2YXIoLS1wYXBlci1ncmVlbi05MDApO1xuICAgIH1cbiAgICBbY29sb3ItY2xhc3M9J3B1cnBsZSddIHBhcGVyLWNoZWNrYm94IHtcbiAgICAgIC0tcGFwZXItY2hlY2tib3gtY2hlY2tlZC1jb2xvcjogdmFyKC0tcGFwZXItcHVycGxlLTUwMCk7XG4gICAgICAtLXBhcGVyLWNoZWNrYm94LWNoZWNrZWQtaW5rLWNvbG9yOiB2YXIoLS1wYXBlci1wdXJwbGUtNTAwKTtcbiAgICAgIC0tcGFwZXItY2hlY2tib3gtdW5jaGVja2VkLWNvbG9yOiB2YXIoLS1wYXBlci1wdXJwbGUtOTAwKTtcbiAgICAgIC0tcGFwZXItY2hlY2tib3gtdW5jaGVja2VkLWluay1jb2xvcjogdmFyKC0tcGFwZXItcHVycGxlLTkwMCk7XG4gICAgfVxuICAgIFtjb2xvci1jbGFzcz0ndGVhbCddIHBhcGVyLWNoZWNrYm94IHtcbiAgICAgIC0tcGFwZXItY2hlY2tib3gtY2hlY2tlZC1jb2xvcjogdmFyKC0tcGFwZXItdGVhbC01MDApO1xuICAgICAgLS1wYXBlci1jaGVja2JveC1jaGVja2VkLWluay1jb2xvcjogdmFyKC0tcGFwZXItdGVhbC01MDApO1xuICAgICAgLS1wYXBlci1jaGVja2JveC11bmNoZWNrZWQtY29sb3I6IHZhcigtLXBhcGVyLXRlYWwtOTAwKTtcbiAgICAgIC0tcGFwZXItY2hlY2tib3gtdW5jaGVja2VkLWluay1jb2xvcjogdmFyKC0tcGFwZXItdGVhbC05MDApO1xuICAgIH1cbiAgICBbY29sb3ItY2xhc3M9J3BpbmsnXSBwYXBlci1jaGVja2JveCB7XG4gICAgICAtLXBhcGVyLWNoZWNrYm94LWNoZWNrZWQtY29sb3I6IHZhcigtLXBhcGVyLXBpbmstNTAwKTtcbiAgICAgIC0tcGFwZXItY2hlY2tib3gtY2hlY2tlZC1pbmstY29sb3I6IHZhcigtLXBhcGVyLXBpbmstNTAwKTtcbiAgICAgIC0tcGFwZXItY2hlY2tib3gtdW5jaGVja2VkLWNvbG9yOiB2YXIoLS1wYXBlci1waW5rLTkwMCk7XG4gICAgICAtLXBhcGVyLWNoZWNrYm94LXVuY2hlY2tlZC1pbmstY29sb3I6IHZhcigtLXBhcGVyLXBpbmstOTAwKTtcbiAgICB9XG4gICAgW2NvbG9yLWNsYXNzPSdvcmFuZ2UnXSBwYXBlci1jaGVja2JveCB7XG4gICAgICAtLXBhcGVyLWNoZWNrYm94LWNoZWNrZWQtY29sb3I6IHZhcigtLXBhcGVyLW9yYW5nZS01MDApO1xuICAgICAgLS1wYXBlci1jaGVja2JveC1jaGVja2VkLWluay1jb2xvcjogdmFyKC0tcGFwZXItb3JhbmdlLTUwMCk7XG4gICAgICAtLXBhcGVyLWNoZWNrYm94LXVuY2hlY2tlZC1jb2xvcjogdmFyKC0tcGFwZXItb3JhbmdlLTkwMCk7XG4gICAgICAtLXBhcGVyLWNoZWNrYm94LXVuY2hlY2tlZC1pbmstY29sb3I6IHZhcigtLXBhcGVyLW9yYW5nZS05MDApO1xuICAgIH1cbiAgICBbY29sb3ItY2xhc3M9J2Jyb3duJ10gcGFwZXItY2hlY2tib3gge1xuICAgICAgLS1wYXBlci1jaGVja2JveC1jaGVja2VkLWNvbG9yOiB2YXIoLS1wYXBlci1icm93bi01MDApO1xuICAgICAgLS1wYXBlci1jaGVja2JveC1jaGVja2VkLWluay1jb2xvcjogdmFyKC0tcGFwZXItYnJvd24tNTAwKTtcbiAgICAgIC0tcGFwZXItY2hlY2tib3gtdW5jaGVja2VkLWNvbG9yOiB2YXIoLS1wYXBlci1icm93bi05MDApO1xuICAgICAgLS1wYXBlci1jaGVja2JveC11bmNoZWNrZWQtaW5rLWNvbG9yOiB2YXIoLS1wYXBlci1icm93bi05MDApO1xuICAgIH1cbiAgICBbY29sb3ItY2xhc3M9J2luZGlnbyddIHBhcGVyLWNoZWNrYm94IHtcbiAgICAgIC0tcGFwZXItY2hlY2tib3gtY2hlY2tlZC1jb2xvcjogdmFyKC0tcGFwZXItaW5kaWdvLTUwMCk7XG4gICAgICAtLXBhcGVyLWNoZWNrYm94LWNoZWNrZWQtaW5rLWNvbG9yOiB2YXIoLS1wYXBlci1pbmRpZ28tNTAwKTtcbiAgICAgIC0tcGFwZXItY2hlY2tib3gtdW5jaGVja2VkLWNvbG9yOiB2YXIoLS1wYXBlci1pbmRpZ28tOTAwKTtcbiAgICAgIC0tcGFwZXItY2hlY2tib3gtdW5jaGVja2VkLWluay1jb2xvcjogdmFyKC0tcGFwZXItaW5kaWdvLTkwMCk7XG4gICAgfVxuICAifSk7bGV0IHlPPWNsYXNzIGV4dGVuZHMoY3Iod2UpKXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5uYW1lcz1bXSx0aGlzLmNvbG9yaW5nPXtnZXRDb2xvcjooKT0+IiJ9LHRoaXMucmVnZXg9IiIsdGhpcy5zZWxlY3Rpb25TdGF0ZT17fSx0aGlzLm1heE5hbWVzVG9FbmFibGVCeURlZmF1bHQ9NDAsdGhpcy5fZGVib3VuY2VkUmVnZXhDaGFuZ2U9dGhpcy5fZGVib3VuY2VkUmVnZXhDaGFuZ2VJbXBsKCl9X2RlYm91bmNlZFJlZ2V4Q2hhbmdlSW1wbCgpe3ZhciB0PUNlLmV4cG9ydHMuZGVib3VuY2UoKHQ9Pnt0aGlzLnJlZ2V4PXR9KSwxNTAse2xlYWRpbmc6ITF9KTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10aGlzLiQkKCIjbmFtZXMtcmVnZXgiKS52YWx1ZTsiIj09ZT90aGlzLmFzeW5jKCgoKT0+e3RoaXMucmVnZXg9ZX0pLDMwKTp0KGUpfX1nZXQgX3JlZ2V4KCl7dmFyIHQ9dGhpcy5yZWdleDt0cnl7cmV0dXJuIG5ldyBSZWdFeHAodCl9Y2F0Y2godCl7cmV0dXJuIG51bGx9fV9zZXRJc29sYXRvckljb24oKXt2YXIgdD10aGlzLnNlbGVjdGlvblN0YXRlLGU9Q2UuZXhwb3J0cy5maWx0ZXIoQ2UuZXhwb3J0cy52YWx1ZXModCkpLmxlbmd0aDtBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0aGlzLnJvb3QucXVlcnlTZWxlY3RvckFsbCgiLmlzb2xhdG9yIikpLmZvckVhY2goKGZ1bmN0aW9uKG4pe24uaWNvbj0xPT09ZSYmdFtuLm5hbWVdPyJyYWRpby1idXR0b24tY2hlY2tlZCI6InJhZGlvLWJ1dHRvbi11bmNoZWNrZWQifSkpfWNvbXB1dGVOYW1lc01hdGNoaW5nUmVnZXgodCxlKXtjb25zdCBuPXRoaXMuX3JlZ2V4O3JldHVybiBuP3RoaXMubmFtZXMuZmlsdGVyKCh0PT5uLnRlc3QodCkpKTp0aGlzLm5hbWVzfWNvbXB1dGVPdXRTZWxlY3RlZCh0LGUpe3ZhciBuPXRoaXMuc2VsZWN0aW9uU3RhdGUsaT10aGlzLm5hbWVzTWF0Y2hpbmdSZWdleC5sZW5ndGg8PXRoaXMubWF4TmFtZXNUb0VuYWJsZUJ5RGVmYXVsdDtyZXR1cm4gdGhpcy5uYW1lc01hdGNoaW5nUmVnZXguZmlsdGVyKCh0PT5udWxsPT1uW3RdP2k6blt0XSkpfXN5bmNocm9uaXplQ29sb3JzKHQpe3RoaXMuX3NldElzb2xhdG9ySWNvbigpO3RoaXMucm9vdC5xdWVyeVNlbGVjdG9yQWxsKCJwYXBlci1jaGVja2JveCIpLmZvckVhY2goKHQ9Pntjb25zdCBlPXRoaXMuY29sb3JpbmcuZ2V0Q29sb3IodC5uYW1lKTt0LnVwZGF0ZVN0eWxlcyh7Ii0tcGFwZXItY2hlY2tib3gtY2hlY2tlZC1jb2xvciI6ZSwiLS1wYXBlci1jaGVja2JveC1jaGVja2VkLWluay1jb2xvciI6ZSwiLS1wYXBlci1jaGVja2JveC11bmNoZWNrZWQtY29sb3IiOmUsIi0tcGFwZXItY2hlY2tib3gtdW5jaGVja2VkLWluay1jb2xvciI6ZX0pfSkpO3RoaXMucm9vdC5xdWVyeVNlbGVjdG9yQWxsKCIuaXNvbGF0b3IiKS5mb3JFYWNoKCh0PT57Y29uc3QgZT10aGlzLmNvbG9yaW5nLmdldENvbG9yKHQubmFtZSk7dC5zdHlsZS5jb2xvcj1lfSkpLHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCgpPT57dGhpcy51cGRhdGVTdHlsZXMoKX0pKX1faXNvbGF0ZU5hbWUodCl7dmFyIGU9dC50YXJnZXQubmFtZSxuPXt9O3RoaXMubmFtZXMuZm9yRWFjaCgoZnVuY3Rpb24odCl7blt0XT10PT1lfSkpLHRoaXMuc2VsZWN0aW9uU3RhdGU9bn1fY2hlY2tib3hDaGFuZ2UodCl7dmFyIGU9dC50YXJnZXQ7Y29uc3Qgbj1DZS5leHBvcnRzLmNsb25lKHRoaXMuc2VsZWN0aW9uU3RhdGUpO25bZS5uYW1lXT1lLmNoZWNrZWQsdGhpcy5zZWxlY3Rpb25TdGF0ZT1ufV9pc0NoZWNrZWQodCxlKXtyZXR1cm4tMSE9dGhpcy5vdXRTZWxlY3RlZC5pbmRleE9mKHQpfXRvZ2dsZUFsbCgpe2NvbnN0IHQ9dGhpcy5uYW1lc01hdGNoaW5nUmVnZXguc29tZSgodD0+dGhpcy5vdXRTZWxlY3RlZC5pbmNsdWRlcyh0KSkpLGU9e307dGhpcy5uYW1lcy5mb3JFYWNoKChuPT57ZVtuXT0hdH0pKSx0aGlzLnNlbGVjdGlvblN0YXRlPWV9fTt5Ty50ZW1wbGF0ZT14ZWAKICAgIDxzdHlsZSBpbmNsdWRlPSJzY3JvbGxiYXItc3R5bGUiPjwvc3R5bGU+CiAgICA8c3R5bGUgaW5jbHVkZT0icnVuLWNvbG9yLXN0eWxlIj48L3N0eWxlPgoKICAgIDxwYXBlci1pbnB1dAogICAgICBpZD0ibmFtZXMtcmVnZXgiCiAgICAgIG5vLWxhYmVsLWZsb2F0PSIiCiAgICAgIGxhYmVsPSJXcml0ZSBhIHJlZ2V4IHRvIGZpbHRlciBydW5zIgogICAgICB2YWx1ZT0iW1tyZWdleF1dIgogICAgICBvbi1iaW5kLXZhbHVlLWNoYW5nZWQ9Il9kZWJvdW5jZWRSZWdleENoYW5nZSIKICAgID48L3BhcGVyLWlucHV0PgogICAgPGRpdiBpZD0ib3V0ZXItY29udGFpbmVyIiBjbGFzcz0ic2Nyb2xsYmFyIj4KICAgICAgPHRlbXBsYXRlCiAgICAgICAgaXM9ImRvbS1yZXBlYXQiCiAgICAgICAgaXRlbXM9IltbbmFtZXNNYXRjaGluZ1JlZ2V4XV0iCiAgICAgICAgb24tZG9tLWNoYW5nZT0ic3luY2hyb25pemVDb2xvcnMiCiAgICAgID4KICAgICAgICA8ZGl2IGNsYXNzPSJuYW1lLXJvdyI+CiAgICAgICAgICA8ZGl2CiAgICAgICAgICAgIGNsYXNzPSJpY29uLWNvbnRhaW5lciBjaGVja2JveC1jb250YWluZXIgdmVydGljYWwtYWxpZ24tY29udGFpbmVyIgogICAgICAgICAgPgogICAgICAgICAgICA8cGFwZXItY2hlY2tib3gKICAgICAgICAgICAgICBjbGFzcz0iY2hlY2tib3ggdmVydGljYWwtYWxpZ24tY2VudGVyIgogICAgICAgICAgICAgIGlkJD0iY2hlY2tib3gtW1tpdGVtXV0iCiAgICAgICAgICAgICAgbmFtZT0iW1tpdGVtXV0iCiAgICAgICAgICAgICAgY2hlY2tlZCQ9IltbX2lzQ2hlY2tlZChpdGVtLCBzZWxlY3Rpb25TdGF0ZS4qKV1dIgogICAgICAgICAgICAgIG9uLWNoYW5nZT0iX2NoZWNrYm94Q2hhbmdlIgogICAgICAgICAgICA+PC9wYXBlci1jaGVja2JveD4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdgogICAgICAgICAgICBjbGFzcz0iaWNvbi1jb250YWluZXIgaXNvbGF0b3ItY29udGFpbmVyIHZlcnRpY2FsLWFsaWduLWNvbnRhaW5lciIKICAgICAgICAgID4KICAgICAgICAgICAgPHBhcGVyLWljb24tYnV0dG9uCiAgICAgICAgICAgICAgaWNvbj0icmFkaW8tYnV0dG9uLXVuY2hlY2tlZCIKICAgICAgICAgICAgICBjbGFzcz0iaXNvbGF0b3IgdmVydGljYWwtYWxpZ24tY2VudGVyIgogICAgICAgICAgICAgIG9uLXRhcD0iX2lzb2xhdGVOYW1lIgogICAgICAgICAgICAgIG5hbWU9IltbaXRlbV1dIgogICAgICAgICAgICA+PC9wYXBlci1pY29uLWJ1dHRvbj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbS1sYWJlbC1jb250YWluZXIiPgogICAgICAgICAgICA8c3Bhbj5bW2l0ZW1dXTwvc3Bhbj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L3RlbXBsYXRlPgogICAgPC9kaXY+CiAgICA8c3R5bGU+CiAgICAgIHBhcGVyLWlucHV0IHsKICAgICAgICAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1mb2N1cy1jb2xvcjogdmFyKC0tdGItb3JhbmdlLXN0cm9uZyk7CiAgICAgICAgLS1wYXBlci1pbnB1dC1jb250YWluZXItaW5wdXQ6IHsKICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICB9CiAgICAgICAgLS1wYXBlci1pbnB1dC1jb250YWluZXItbGFiZWw6IHsKICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICB9CiAgICAgIH0KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgfQogICAgICAjb3V0ZXItY29udGFpbmVyIHsKICAgICAgICBjb250YWluOiBjb250ZW50OwogICAgICAgIGZsZXgtZ3JvdzogMTsKICAgICAgICBmbGV4LXNocmluazogMTsKICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CiAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtOwogICAgICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDsKICAgICAgfQogICAgICAubmFtZS1yb3cgewogICAgICAgIGNvbnRhaW46IGNvbnRlbnQ7CiAgICAgICAgcGFkZGluZy10b3A6IDVweDsKICAgICAgICBwYWRkaW5nLWJvdHRvbTogNXB4OwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgd29yZC1icmVhazogYnJlYWstYWxsOyAvKiBtYWtlcyB3cmFwcGluZyBvZiBoeXBlcnBhcmFtIHN0cmluZ3MgYmV0dGVyICovCiAgICAgIH0KICAgICAgLmljb24tY29udGFpbmVyIHsKICAgICAgICBmbGV4LWdyb3c6IDA7CiAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgICAgcGFkZGluZy1sZWZ0OiAycHg7CiAgICAgIH0KICAgICAgLmNoZWNrYm94IHsKICAgICAgICBwYWRkaW5nLWxlZnQ6IDJweDsKICAgICAgICB3aWR0aDogMThweDsKICAgICAgICBoZWlnaHQ6IDE4cHg7CiAgICAgIH0KICAgICAgLmlzb2xhdG9yIHsKICAgICAgICB3aWR0aDogMThweDsKICAgICAgICBoZWlnaHQ6IDE4cHg7CiAgICAgICAgcGFkZGluZzogMHB4OwogICAgICB9CiAgICAgIC5pc29sYXRvci1jb250YWluZXIgewogICAgICAgIHBhZGRpbmctbGVmdDogNnB4OwogICAgICAgIHBhZGRpbmctcmlnaHQ6IDNweDsKICAgICAgfQogICAgICAuY2hlY2tib3gtY29udGFpbmVyIHsKICAgICAgICBwYWRkaW5nLWxlZnQ6IDJweDsKICAgICAgfQogICAgICAuaXRlbS1sYWJlbC1jb250YWluZXIgewogICAgICAgIHBhZGRpbmctbGVmdDogNXB4OwogICAgICAgIGZsZXgtZ3JvdzogMTsKICAgICAgICBmbGV4LXNocmluazogMTsKICAgICAgICB3aWR0aDogMHB4OyAvKiBoYWNrIHRvIGdldCB0aGUgZmxleC1ncm93IHRvIHdvcmsgcHJvcGVybHkgKi8KICAgICAgfQogICAgICAudG9vbHRpcC12YWx1ZS1jb250YWluZXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgZmxleC1ncm93OiAwOwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICAgIHRleHQtYWxpZ246IHJpZ2h0OwogICAgICAgIHBhZGRpbmctbGVmdDogMnB4OwogICAgICB9CiAgICAgIC52ZXJ0aWNhbC1hbGlnbi1jb250YWluZXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgIH0KICAgICAgLnZlcnRpY2FsLWFsaWduLWNvbnRhaW5lciAudmVydGljYWwtYWxpZ24tY2VudGVyIHsKICAgICAgICBhbGlnbi1zZWxmOiBjZW50ZXI7CiAgICAgIH0KICAgICAgLnZlcnRpY2FsLWFsaWduLWNvbnRhaW5lciAudmVydGljYWwtYWxpZ24tdG9wIHsKICAgICAgICBhbGlnbi1zZWxmOiBzdGFydDsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSx5Ty5wcm90b3R5cGUsIm5hbWVzIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLHlPLnByb3RvdHlwZSwiY29sb3JpbmciLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmcsbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLHlPLnByb3RvdHlwZSwicmVnZXgiLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheSxjb21wdXRlZDoiY29tcHV0ZU5hbWVzTWF0Y2hpbmdSZWdleChuYW1lcy4qLCBfcmVnZXgpIn0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLHlPLnByb3RvdHlwZSwibmFtZXNNYXRjaGluZ1JlZ2V4Iix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0LG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSx5Ty5wcm90b3R5cGUsInNlbGVjdGlvblN0YXRlIix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXksbm90aWZ5OiEwLGNvbXB1dGVkOiJjb21wdXRlT3V0U2VsZWN0ZWQobmFtZXNNYXRjaGluZ1JlZ2V4LiosIHNlbGVjdGlvblN0YXRlLiopIn0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLHlPLnByb3RvdHlwZSwib3V0U2VsZWN0ZWQiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0seU8ucHJvdG90eXBlLCJtYXhOYW1lc1RvRW5hYmxlQnlEZWZhdWx0Iix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLHlPLnByb3RvdHlwZSwiX2RlYm91bmNlZFJlZ2V4Q2hhbmdlIix2b2lkIDApLHQoW3MoInJlZ2V4IiksZSgiZGVzaWduOnR5cGUiLFJlZ0V4cCksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0seU8ucHJvdG90eXBlLCJfcmVnZXgiLG51bGwpLHQoW2EoInNlbGVjdGlvblN0YXRlIiwibmFtZXMiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLHlPLnByb3RvdHlwZSwiX3NldElzb2xhdG9ySWNvbiIsbnVsbCkseU89dChbaSgidGYtbXVsdGktY2hlY2tib3giKV0seU8pO2xldCB2Tz1jbGFzcyBleHRlbmRzIHdle2dldCBfcGFydHMoKXt2YXIgdD10aGlzLnZhbHVlLGU9dGhpcy5kZWxpbWl0ZXJQYXR0ZXJuO2NvbnN0IG49W107Zm9yKDs7KXtjb25zdCBpPW5ldyBSZWdFeHAoZSwiZyIpO2lmKGkudGVzdCh0KSwwPT09aS5sYXN0SW5kZXgpe24ucHVzaCh0KTticmVha31uLnB1c2godC5zbGljZSgwLGkubGFzdEluZGV4KSksdD10LnNsaWNlKGkubGFzdEluZGV4KX1yZXR1cm4gbn19O3ZPLnRlbXBsYXRlPXhlYAogICAgPCEtLQogICAgICBUaGlzIHVnbHkgZm9ybWF0dGluZyBpcyByZXF1aXJlZCB0byBwcmV2ZW50IHNwYWNlcyBmcm9tIHNsaXBwaW5nCiAgICAgIGludG8gdGhlIEhUTUwuCiAgICAtLT4KICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLXJlcGVhdCIgaXRlbXM9IltbX3BhcnRzXV0iIGFzPSJwYXJ0IgogICAgICA+W1twYXJ0XV08d2JyCiAgICAvPjwvdGVtcGxhdGU+CiAgYCx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSx2Ty5wcm90b3R5cGUsInZhbHVlIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLHZPLnByb3RvdHlwZSwiZGVsaW1pdGVyUGF0dGVybiIsdm9pZCAwKSx0KFtzKCJ2YWx1ZSIsImRlbGltaXRlclBhdHRlcm4iKSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLHZPLnByb3RvdHlwZSwiX3BhcnRzIixudWxsKSx2Tz10KFtpKCJ0Zi13YnItc3RyaW5nIildLHZPKTtsZXQgYk89Y2xhc3MgZXh0ZW5kcyhjcih3ZSkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLnJ1blNlbGVjdGlvblN0YXRlPWNsKCJydW5TZWxlY3Rpb25TdGF0ZSIse2RlZmF1bHRWYWx1ZTp7fX0pLmNhbGwodGhpcyksdGhpcy5yZWdleElucHV0PVhzKCJyZWdleElucHV0Iix7ZGVmYXVsdFZhbHVlOiIifSkuY2FsbCh0aGlzKSx0aGlzLl9kYXRhTG9jYXRpb25DbGlwTGVuZ3RoPTI1MCx0aGlzLl9kYXRhTG9jYXRpb25EZWxpbWl0ZXJQYXR0ZXJuPSJbLz1fLC1dIix0aGlzLmNvbG9yaW5nPXtnZXRDb2xvcjpfT30sdGhpcy5fc3RvcmVSdW5TZWxlY3Rpb25TdGF0ZT11bCgicnVuU2VsZWN0aW9uU3RhdGUiLHtkZWZhdWx0VmFsdWU6e319KSx0aGlzLl9yZWdleE9ic2VydmVyPSRzKCJyZWdleElucHV0Iix7ZGVmYXVsdFZhbHVlOiIifSl9YXR0YWNoZWQoKXt0aGlzLl9ydW5TdG9yZUxpc3RlbmVyPUlsLmFkZExpc3RlbmVyKCgoKT0+e3RoaXMuc2V0KCJydW5zIixJbC5nZXRSdW5zKCkpfSkpLHRoaXMuc2V0KCJydW5zIixJbC5nZXRSdW5zKCkpLHRoaXMuX2VudlN0b3JlTGlzdGVuZXI9UGwuYWRkTGlzdGVuZXIoKCgpPT57dGhpcy5zZXQoImRhdGFMb2NhdGlvbiIsUGwuZ2V0RGF0YUxvY2F0aW9uKCkpfSkpLHRoaXMuc2V0KCJkYXRhTG9jYXRpb24iLFBsLmdldERhdGFMb2NhdGlvbigpKX1kZXRhY2hlZCgpe0lsLnJlbW92ZUxpc3RlbmVyQnlLZXkodGhpcy5fcnVuU3RvcmVMaXN0ZW5lciksUGwucmVtb3ZlTGlzdGVuZXJCeUtleSh0aGlzLl9lbnZTdG9yZUxpc3RlbmVyKX1fdG9nZ2xlQWxsKCl7dGhpcy4kLm11bHRpQ2hlY2tib3gudG9nZ2xlQWxsKCl9Z2V0IF9jbGlwcGVkRGF0YUxvY2F0aW9uKCl7dmFyIHQ9dGhpcy5kYXRhTG9jYXRpb24sZT10aGlzLl9kYXRhTG9jYXRpb25DbGlwTGVuZ3RoO2lmKHZvaWQgMCE9PXQpcmV0dXJuIHQubGVuZ3RoPmU/dC5zdWJzdHJpbmcoMCxlKTp0fV9vcGVuRGF0YUxvY2F0aW9uRGlhbG9nKHQpe3QucHJldmVudERlZmF1bHQoKSx0aGlzLiQkKCIjZGF0YS1sb2NhdGlvbi1kaWFsb2ciKS5vcGVuKCl9X3Nob3VsZFNob3dFeHBhbmREYXRhTG9jYXRpb25CdXR0b24odCxlKXtyZXR1cm4gdCYmdC5sZW5ndGg+ZX19O2JPLnRlbXBsYXRlPXhlYAogICAgPHBhcGVyLWRpYWxvZyB3aXRoLWJhY2tkcm9wPSIiIGlkPSJkYXRhLWxvY2F0aW9uLWRpYWxvZyI+CiAgICAgIDxoMj5EYXRhIExvY2F0aW9uPC9oMj4KICAgICAgPHRmLXdici1zdHJpbmcKICAgICAgICB2YWx1ZT0iW1tkYXRhTG9jYXRpb25dXSIKICAgICAgICBkZWxpbWl0ZXItcGF0dGVybj0iW1tfZGF0YUxvY2F0aW9uRGVsaW1pdGVyUGF0dGVybl1dIgogICAgICA+CiAgICAgIDwvdGYtd2JyLXN0cmluZwogICAgPjwvcGFwZXItZGlhbG9nPgogICAgPGRpdiBpZD0idG9wLXRleHQiPgogICAgICA8aDMgaWQ9InRvb2x0aXAtaGVscCIgY2xhc3M9InRvb2x0aXAtY29udGFpbmVyIj5SdW5zPC9oMz4KICAgIDwvZGl2PgogICAgPHRmLW11bHRpLWNoZWNrYm94CiAgICAgIGlkPSJtdWx0aUNoZWNrYm94IgogICAgICBuYW1lcz0iW1tydW5zXV0iCiAgICAgIHNlbGVjdGlvbi1zdGF0ZT0ie3tydW5TZWxlY3Rpb25TdGF0ZX19IgogICAgICBvdXQtc2VsZWN0ZWQ9Int7c2VsZWN0ZWRSdW5zfX0iCiAgICAgIHJlZ2V4PSJ7e3JlZ2V4SW5wdXR9fSIKICAgICAgY29sb3Jpbmc9IltbY29sb3JpbmddXSIKICAgID48L3RmLW11bHRpLWNoZWNrYm94PgogICAgPHBhcGVyLWJ1dHRvbiBjbGFzcz0ieC1idXR0b24iIGlkPSJ0b2dnbGUtYWxsIiBvbi10YXA9Il90b2dnbGVBbGwiPgogICAgICBUb2dnbGUgQWxsIFJ1bnMKICAgIDwvcGFwZXItYnV0dG9uPgogICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW2RhdGFMb2NhdGlvbl1dIj4KICAgICAgPGRpdiBpZD0iZGF0YS1sb2NhdGlvbiI+CiAgICAgICAgPHRmLXdici1zdHJpbmcKICAgICAgICAgIHZhbHVlPSJbW19jbGlwcGVkRGF0YUxvY2F0aW9uXV0iCiAgICAgICAgICBkZWxpbWl0ZXItcGF0dGVybj0iW1tfZGF0YUxvY2F0aW9uRGVsaW1pdGVyUGF0dGVybl1dIgogICAgICAgID48L3RmLXdici1zdHJpbmcKICAgICAgICA+PCEtLQogICAgICAgICAgV2UgdXNlIEhUTUwgY29tbWVudHMgdG8gcmVtb3ZlIHNwYWNlcyBiZWZvcmUgdGhlIGVsbGlwc2lzLgogICAgICAgIC0tPjx0ZW1wbGF0ZQogICAgICAgICAgaXM9ImRvbS1pZiIKICAgICAgICAgIGlmPSJbW19zaG91bGRTaG93RXhwYW5kRGF0YUxvY2F0aW9uQnV0dG9uKGRhdGFMb2NhdGlvbiwgX2RhdGFMb2NhdGlvbkNsaXBMZW5ndGgpXV0iCiAgICAgICAgICA+PCEtLQogICAgICAgICAgLS0+PGEgaHJlZj0iIiBvbi1jbGljaz0iX29wZW5EYXRhTG9jYXRpb25EaWFsb2ciPuKApjwvYT4KICAgICAgICA8L3RlbXBsYXRlPgogICAgICA8L2Rpdj4KICAgIDwvdGVtcGxhdGU+CiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBwYWRkaW5nLWJvdHRvbTogMTBweDsKICAgICAgfQogICAgICAjdG9wLXRleHQgewogICAgICAgIGNvbG9yOiB2YXIoLS10Yi1zZWNvbmRhcnktdGV4dC1jb2xvcik7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgZmxleC1ncm93OiAwOwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICAgIHBhZGRpbmctcmlnaHQ6IDE2cHg7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgfQogICAgICB0Zi13YnItc3RyaW5nIHsKICAgICAgICBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkOwogICAgICB9CiAgICAgIHRmLW11bHRpLWNoZWNrYm94IHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZ3JvdzogMTsKICAgICAgICBmbGV4LXNocmluazogMTsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICB9CiAgICAgIC54LWJ1dHRvbiB7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRiLXVpLWxpZ2h0LWFjY2VudCk7CiAgICAgICAgY29sb3I6IHZhcigtLXRiLXVpLWRhcmstYWNjZW50KTsKICAgICAgfQogICAgICAjdG9vbHRpcC1oZWxwIHsKICAgICAgICBjb2xvcjogdmFyKC0tdGItc2Vjb25kYXJ5LXRleHQtY29sb3IpOwogICAgICAgIG1hcmdpbjogMDsKICAgICAgICBmb250LXdlaWdodDogbm9ybWFsOwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiA1cHg7CiAgICAgIH0KICAgICAgcGFwZXItYnV0dG9uIHsKICAgICAgICBtYXJnaW4tbGVmdDogMDsKICAgICAgfQogICAgICAjZGF0YS1sb2NhdGlvbiB7CiAgICAgICAgY29sb3I6IHZhcigtLXRiLXVpLWRhcmstYWNjZW50KTsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgbWFyZ2luOiA1cHggMCAwIDA7CiAgICAgICAgbWF4LXdpZHRoOiAyODhweDsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6T2JqZWN0LG9ic2VydmVyOiJfc3RvcmVSdW5TZWxlY3Rpb25TdGF0ZSJ9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sYk8ucHJvdG90eXBlLCJydW5TZWxlY3Rpb25TdGF0ZSIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZyxvYnNlcnZlcjoiX3JlZ2V4T2JzZXJ2ZXIifSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLGJPLnByb3RvdHlwZSwicmVnZXhJbnB1dCIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5LG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLGJPLnByb3RvdHlwZSwic2VsZWN0ZWRSdW5zIix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxiTy5wcm90b3R5cGUsInJ1bnMiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmcsbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLGJPLnByb3RvdHlwZSwiZGF0YUxvY2F0aW9uIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLGJPLnByb3RvdHlwZSwiX2RhdGFMb2NhdGlvbkNsaXBMZW5ndGgiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sYk8ucHJvdG90eXBlLCJfZGF0YUxvY2F0aW9uRGVsaW1pdGVyUGF0dGVybiIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxiTy5wcm90b3R5cGUsImNvbG9yaW5nIix2b2lkIDApLHQoW3MoImRhdGFMb2NhdGlvbiIsIl9kYXRhTG9jYXRpb25DbGlwTGVuZ3RoIiksZSgiZGVzaWduOnR5cGUiLFN0cmluZyksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sYk8ucHJvdG90eXBlLCJfY2xpcHBlZERhdGFMb2NhdGlvbiIsbnVsbCksYk89dChbaSgidGYtcnVucy1zZWxlY3RvciIpXSxiTyk7Y2xhc3MgeE97Y29uc3RydWN0b3IoKXt0aGlzLmNhbmNlbGxhdGlvbkNvdW50PTB9Y2FuY2VsbGFibGUodCl7Y29uc3QgZT10aGlzLmNhbmNlbGxhdGlvbkNvdW50O3JldHVybiBuPT50KHt2YWx1ZTpuLGNhbmNlbGxlZDp0aGlzLmNhbmNlbGxhdGlvbkNvdW50IT09ZX0pfWNhbmNlbEFsbCgpe3RoaXMuY2FuY2VsbGF0aW9uQ291bnQrK319bGV0IHdPPWNsYXNzIGV4dGVuZHMoY3Iod2UpKXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5odG1sPSIifWdldCBzYW5pdGl6ZWRIdG1sKCl7cmV0dXJuIHRoaXMuaHRtbH1hdHRhY2hlZCgpe3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCgpPT57dGhpcy5zY29wZVN1YnRyZWUodGhpcy4kLm1hcmtkb3duLCEwKX0pKX19O2Z1bmN0aW9uIFNPKHQpe3JldHVybiB0P3QudG9TdHJpbmcoKS5yZXBsYWNlKC9HTVQtXGQrIFwoKFteKV0rKVwpLywiJDEiKToiIn1mdW5jdGlvbiBNTyh0KXtjb25zdCBlPShmdW5jdGlvbiBuKHQpe2lmKCF0KXJldHVybiBudWxsO2xldCBlPXQubWF0Y2goL14jKFswLTlhLWZdezEsMn0pKFswLTlhLWZdezEsMn0pKFswLTlhLWZdezEsMn0pJC8pO2lmKCFlKXJldHVybiBudWxsO2lmKDQ9PXQubGVuZ3RoKWZvcih2YXIgbj0xO248PTM7bisrKWVbbl09ZVtuXStlW25dO3JldHVybltwYXJzZUludChlWzFdLDE2KSxwYXJzZUludChlWzJdLDE2KSxwYXJzZUludChlWzNdLDE2KV19KSh0KTtpZighZSlyZXR1cm4iaW5oZXJpdCI7cmV0dXJuIE1hdGgucm91bmQoKDI5OSplWzBdKzU4NyplWzFdKzExNCplWzJdKS8xZTMpPjEyNT8iaW5oZXJpdCI6IiNlZWUifXdPLnRlbXBsYXRlPXhlYAogICAgPGRpdiBpZD0ibWFya2Rvd24iIGlubmVyLWgtdC1tLWw9Iltbc2FuaXRpemVkSHRtbF1dIj48L2Rpdj4KICAgIDxzdHlsZT4KICAgICAgLyoKICAgICAgICogUmVkdWNlIHRvcG1vc3QgYW5kIGJvdHRvbW1vc3QgbWFyZ2lucyBmcm9tIDE2cHggdG8gMC4zZW0gKHJlbmRlcnMKICAgICAgICogYXQgYWJvdXQgNC44cHgpIHRvIGtlZXAgdGhlIGxheW91dCBjb21wYWN0LiBUaGlzIGltcHJvdmVzIHRoZQogICAgICAgKiBhcHBlYXJhbmNlIHdoZW4gdGhlcmUgaXMgb25seSBvbmUgbGluZSBvZiB0ZXh0OyBzdGFuZGFyZCBNYXJrZG93bgogICAgICAgKiByZW5kZXJlcnMgd2lsbCBzdGlsbCBpbmNsdWRlIGEgXGA8cD5cYCBlbGVtZW50LgogICAgICAgKgogICAgICAgKiBCeSB0YXJnZXRpbmcgb25seSB0aGUgdG9wLWxldmVsLCBleHRyZW1hbCBlbGVtZW50cywgd2UgcHJlc2VydmUgYW55CiAgICAgICAqIGFjdHVhbCBwYXJhZ3JhcGggYnJlYWtzIGFuZCBvbmx5IGNoYW5nZSB0aGUgcGFkZGluZyBhZ2FpbnN0IHRoZQogICAgICAgKiBjb21wb25lbnQgZWRnZXMuCiAgICAgICAqLwogICAgICAjbWFya2Rvd24gPiBwOmZpcnN0LWNoaWxkIHsKICAgICAgICBtYXJnaW4tdG9wOiAwLjNlbTsKICAgICAgfQogICAgICAjbWFya2Rvd24gPiBwOmxhc3QtY2hpbGQgewogICAgICAgIG1hcmdpbi1ib3R0b206IDAuM2VtOwogICAgICB9CgogICAgICAvKiBQbGVhc2FudCBzdHlsZXMgZm9yIE1hcmtkb3duIHRhYmxlcy4gKi8KICAgICAgI21hcmtkb3duIHRhYmxlIHsKICAgICAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwogICAgICB9CiAgICAgICNtYXJrZG93biB0YWJsZSB0aCB7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgfQogICAgICAjbWFya2Rvd24gdGFibGUgdGgsCiAgICAgICNtYXJrZG93biB0YWJsZSB0ZCB7CiAgICAgICAgcGFkZGluZzogNnB4IDEzcHg7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tdGItdWktYm9yZGVyLCAjZGZlMmU1KTsKICAgICAgfQogICAgICAjbWFya2Rvd24gdGFibGUgdHIgewogICAgICAgIGJhY2tncm91bmQtY29sb3I6IGluaGVyaXQ7CiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLXRiLXVpLWJvcmRlciwgI2M2Y2JkMSk7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYCx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSx3Ty5wcm90b3R5cGUsImh0bWwiLHZvaWQgMCksdChbcygiaHRtbCIpLGUoImRlc2lnbjp0eXBlIixPYmplY3QpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLHdPLnByb3RvdHlwZSwic2FuaXRpemVkSHRtbCIsbnVsbCksd089dChbaSgidGYtbWFya2Rvd24tdmlldyIpXSx3TyksbWwoe21vZHVsZU5hbWU6InRmLWNhcmQtaGVhZGluZy1zdHlsZSIsc3R5bGVDb250ZW50OiJcbiAgICBmaWdjYXB0aW9uIHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cblxuICAgIC8qKiBIb3Jpem9udGFsIGxpbmUgb2YgbGFiZWxzLiAqL1xuICAgIC5oZWFkaW5nLXJvdyB7XG4gICAgICBtYXJnaW4tdG9wOiAtNHB4O1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgfVxuXG4gICAgLyoqIFBpZWNlIG9mIHRleHQgaW4gdGhlIGZpZ3VyZSBjYXB0aW9uLiAqL1xuICAgIC5oZWFkaW5nLWxhYmVsIHtcbiAgICAgIGZsZXgtZ3JvdzogMTtcbiAgICAgIG1hcmdpbi10b3A6IDRweDtcbiAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDtcbiAgICB9XG5cbiAgICAvKiogTWFrZXMgbGFiZWwgc2hvdyBvbiB0aGUgcmlnaHQuICovXG4gICAgLmhlYWRpbmctcmlnaHQge1xuICAgICAgZmxleC1ncm93OiAwO1xuICAgIH1cbiAgIn0pO2xldCBFTz1jbGFzcyBleHRlbmRzIHdle2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLmRpc3BsYXlOYW1lPW51bGwsdGhpcy50YWc9bnVsbCx0aGlzLnJ1bj1udWxsLHRoaXMuZGVzY3JpcHRpb249bnVsbCx0aGlzLmNvbG9yPW51bGx9X3VwZGF0ZUhlYWRpbmdTdHlsZSgpe3RoaXMudXBkYXRlU3R5bGVzKHsiLS10Zi1jYXJkLWhlYWRpbmctYmFja2dyb3VuZC1jb2xvciI6dGhpcy5fcnVuQmFja2dyb3VuZCwiLS10Zi1jYXJkLWhlYWRpbmctY29sb3IiOnRoaXMuX3J1bkNvbG9yfSl9X2NvbXB1dGVSdW5CYWNrZ3JvdW5kKHQpe3JldHVybiB0fHwibm9uZSJ9X2NvbXB1dGVSdW5Db2xvcih0KXtyZXR1cm4gTU8odCl9Z2V0IF9uYW1lTGFiZWwoKXtyZXR1cm4gdGhpcy5kaXNwbGF5TmFtZXx8dGhpcy50YWd8fCIifWdldCBfdGFnTGFiZWwoKXt2YXIgdD10aGlzLnRhZztyZXR1cm4gdCYmdCE9PXRoaXMuZGlzcGxheU5hbWU/dDoiIn1fdG9nZ2xlRGVzY3JpcHRpb25EaWFsb2codCl7Y29uc3QgZT10aGlzLiQuZGVzY3JpcHRpb25EaWFsb2c7ZS5wb3NpdGlvblRhcmdldD10LnRhcmdldCxlLnRvZ2dsZSgpfX07RU8udGVtcGxhdGU9eGVgCiAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgICA8ZmlnY2FwdGlvbiBjbGFzcz0iY29udGVudCI+CiAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGluZy1yb3ciPgogICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19uYW1lTGFiZWxdXSI+CiAgICAgICAgICAgIDxkaXYgaXRlbXByb3A9Im5hbWUiIGNsYXNzPSJoZWFkaW5nLWxhYmVsIG5hbWUiPltbX25hbWVMYWJlbF1dPC9kaXY+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW3J1bl1dIj4KICAgICAgICAgICAgPCEtLSBFeHRyYSB3cmFwcGluZyBzcGFuIG5lZWRlZCB0byBhdm9pZCBmbGV4Ym94IGJsb2NraWZpY2F0aW9uLiAtLT4KICAgICAgICAgICAgPCEtLSAoc2VlIGZsZXhib3ggc3BlYywgc2VjdGlvbiA0ICJGbGV4IEl0ZW1zIikgLS0+CiAgICAgICAgICAgIDxzcGFuPgogICAgICAgICAgICAgIDxzcGFuCiAgICAgICAgICAgICAgICBpdGVtcHJvcD0icnVuIgogICAgICAgICAgICAgICAgaWQ9ImhlYWRpbmctcnVuIgogICAgICAgICAgICAgICAgY2xhc3M9ImhlYWRpbmctbGFiZWwgaGVhZGluZy1yaWdodCBydW4iCiAgICAgICAgICAgICAgICA+W1tydW5dXTwvc3BhbgogICAgICAgICAgICAgID4KICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX3RhZ0xhYmVsXV0iPgogICAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGluZy1yb3ciPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkaW5nLWxhYmVsIj4KICAgICAgICAgICAgICB0YWc6IDxzcGFuIGl0ZW1wcm9wPSJ0YWciPltbX3RhZ0xhYmVsXV08L3NwYW4+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8c2xvdD48L3Nsb3Q+CiAgICAgIDwvZmlnY2FwdGlvbj4KICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW2Rlc2NyaXB0aW9uXV0iPgogICAgICAgIDxwYXBlci1pY29uLWJ1dHRvbgogICAgICAgICAgaWNvbj0iaW5mbyIKICAgICAgICAgIG9uLXRhcD0iX3RvZ2dsZURlc2NyaXB0aW9uRGlhbG9nIgogICAgICAgICAgdGl0bGU9IlNob3cgc3VtbWFyeSBkZXNjcmlwdGlvbiIKICAgICAgICA+PC9wYXBlci1pY29uLWJ1dHRvbj4KICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPHBhcGVyLWRpYWxvZwogICAgICAgIGlkPSJkZXNjcmlwdGlvbkRpYWxvZyIKICAgICAgICBuby1vdmVybGFwPSIiCiAgICAgICAgaG9yaXpvbnRhbC1hbGlnbj0iYXV0byIKICAgICAgICB2ZXJ0aWNhbC1hbGlnbj0iYXV0byIKICAgICAgPgogICAgICAgIDxwYXBlci1kaWFsb2ctc2Nyb2xsYWJsZT4KICAgICAgICAgIDx0Zi1tYXJrZG93bi12aWV3IGh0bWw9IltbZGVzY3JpcHRpb25dXSI+PC90Zi1tYXJrZG93bi12aWV3PgogICAgICAgIDwvcGFwZXItZGlhbG9nLXNjcm9sbGFibGU+CiAgICAgIDwvcGFwZXItZGlhbG9nPgogICAgPC9kaXY+CiAgICA8c3R5bGUgaW5jbHVkZT0idGYtY2FyZC1oZWFkaW5nLXN0eWxlIj4KICAgICAgLmNvbnRhaW5lciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgfQogICAgICAuY29udGVudCB7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGZsZXgtZ3JvdzogMTsKICAgICAgfQogICAgICAubmFtZSB7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICB9CiAgICAgIC5ydW4gewogICAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgICB3aWR0aDogYXV0bzsKICAgICAgICBib3JkZXItcmFkaXVzOiAzcHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICAgICAgcGFkZGluZzogMXB4IDRweCAycHg7CiAgICAgIH0KICAgICAgcGFwZXItaWNvbi1idXR0b24gewogICAgICAgIGZsZXgtZ3JvdzogMDsKICAgICAgfQogICAgICBwYXBlci1kaWFsb2ctc2Nyb2xsYWJsZSB7CiAgICAgICAgbWF4LXdpZHRoOiA2NDBweDsKICAgICAgfQogICAgICAjaGVhZGluZy1ydW4gewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXRmLWNhcmQtaGVhZGluZy1iYWNrZ3JvdW5kLWNvbG9yKTsKICAgICAgICBjb2xvcjogdmFyKC0tdGYtY2FyZC1oZWFkaW5nLWNvbG9yKTsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLEVPLnByb3RvdHlwZSwiZGlzcGxheU5hbWUiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sRU8ucHJvdG90eXBlLCJ0YWciLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sRU8ucHJvdG90eXBlLCJydW4iLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sRU8ucHJvdG90eXBlLCJkZXNjcmlwdGlvbiIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxFTy5wcm90b3R5cGUsImNvbG9yIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nLGNvbXB1dGVkOiJfY29tcHV0ZVJ1bkJhY2tncm91bmQoY29sb3IpIixyZWFkT25seTohMCxvYnNlcnZlcjoiX3VwZGF0ZUhlYWRpbmdTdHlsZSJ9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sRU8ucHJvdG90eXBlLCJfcnVuQmFja2dyb3VuZCIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZyxjb21wdXRlZDoiX2NvbXB1dGVSdW5Db2xvcihjb2xvcikiLHJlYWRPbmx5OiEwLG9ic2VydmVyOiJfdXBkYXRlSGVhZGluZ1N0eWxlIn0pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxFTy5wcm90b3R5cGUsIl9ydW5Db2xvciIsdm9pZCAwKSx0KFtzKCJkaXNwbGF5TmFtZSIsInRhZyIpLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLEVPLnByb3RvdHlwZSwiX25hbWVMYWJlbCIsbnVsbCksdChbcygiZGlzcGxheU5hbWUiLCJ0YWciKSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxFTy5wcm90b3R5cGUsIl90YWdMYWJlbCIsbnVsbCksRU89dChbaSgidGYtY2FyZC1oZWFkaW5nIildLEVPKTtsZXQgVE89Y2xhc3MgZXh0ZW5kcyhjcih3ZSkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9tZXRhZGF0YUNhbmNlbGxlcj1uZXcgeE8sdGhpcy5fc3RlcHM9W10sdGhpcy5fYXR0YWNoZWQ9ITF9Z2V0IF9ydW5Db2xvcigpe3JldHVybiBfTyh0aGlzLnJ1bil9Z2V0IF9oYXNBdExlYXN0T25lU3RlcCgpe3ZhciB0PXRoaXMuX3N0ZXBzO3JldHVybiEhdCYmdC5sZW5ndGg+MH1nZXQgX2hhc011bHRpcGxlU3RlcHMoKXt2YXIgdD10aGlzLl9zdGVwcztyZXR1cm4hIXQmJnQubGVuZ3RoPjF9Z2V0IF9tYXhTdGVwSW5kZXgoKXtyZXR1cm4gdGhpcy5fc3RlcHMubGVuZ3RoLTF9Z2V0IF9jdXJyZW50RGF0dW0oKXtyZXR1cm4gdGhpcy5fc3RlcHNbdGhpcy5fc3RlcEluZGV4XX1nZXQgX3NhbXBsZVRleHQoKXtyZXR1cm5gJHt0aGlzLnNhbXBsZSsxfWB9Z2V0IF9oYXNNdWx0aXBsZVNhbXBsZXMoKXtyZXR1cm4gdGhpcy50b3RhbFNhbXBsZXM+MX1hdHRhY2hlZCgpe3RoaXMuX2F0dGFjaGVkPSEwLHRoaXMucmVsb2FkKCl9X3JlbG9hZE9uUnVuVGFnQ2hhbmdlKCl7dGhpcy5yZWxvYWQoKX1yZWxvYWQoKXtpZighdGhpcy5fYXR0YWNoZWQpcmV0dXJuO3RoaXMuX21ldGFkYXRhQ2FuY2VsbGVyLmNhbmNlbEFsbCgpO2NvbnN0IHQ9RXIoKS5wbHVnaW5Sb3V0ZSgiYXVkaW8iLCIvYXVkaW8iLG5ldyBVUkxTZWFyY2hQYXJhbXMoe3RhZzp0aGlzLnRhZyxydW46dGhpcy5ydW4sc2FtcGxlOlN0cmluZyh0aGlzLnNhbXBsZSl9KSksZT10aGlzLl9tZXRhZGF0YUNhbmNlbGxlci5jYW5jZWxsYWJsZSgodD0+e2lmKHQuY2FuY2VsbGVkKXJldHVybjtjb25zdCBlPXQudmFsdWUubWFwKHRoaXMuX2NyZWF0ZVN0ZXBEYXR1bS5iaW5kKHRoaXMpKTt0aGlzLnNldCgiX3N0ZXBzIixlKSx0aGlzLnNldCgiX3N0ZXBJbmRleCIsZS5sZW5ndGgtMSl9KSk7dGhpcy5yZXF1ZXN0TWFuYWdlci5yZXF1ZXN0KHQpLnRoZW4oZSl9X2NyZWF0ZVN0ZXBEYXR1bSh0KXtjb25zdCBlPW5ldyBVUkxTZWFyY2hQYXJhbXModC5xdWVyeSk7ZS5hcHBlbmQoInRzIixTdHJpbmcodC53YWxsX3RpbWUpKTtjb25zdCBuPUVyKCkucGx1Z2luUm91dGUoImF1ZGlvIiwiL2luZGl2aWR1YWxBdWRpbyIsZSk7cmV0dXJue3dhbGxfdGltZTpTTyhuZXcgRGF0ZSgxZTMqdC53YWxsX3RpbWUpKSxzdGVwOnQuc3RlcCxsYWJlbDp0LmxhYmVsLGNvbnRlbnRUeXBlOnQuY29udGVudFR5cGUsdXJsOm59fX07VE8udGVtcGxhdGU9eGVgCiAgICA8dGYtY2FyZC1oZWFkaW5nCiAgICAgIHRhZz0iW1t0YWddXSIKICAgICAgcnVuPSJbW3J1bl1dIgogICAgICBkaXNwbGF5LW5hbWU9IltbdGFnTWV0YWRhdGEuZGlzcGxheU5hbWVdXSIKICAgICAgZGVzY3JpcHRpb249IltbdGFnTWV0YWRhdGEuZGVzY3JpcHRpb25dXSIKICAgICAgY29sb3I9IltbX3J1bkNvbG9yXV0iCiAgICA+CiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfaGFzTXVsdGlwbGVTYW1wbGVzXV0iPgogICAgICAgIDxkaXYgY2xhc3M9ImhlYWRpbmctcm93Ij4KICAgICAgICAgIDxkaXYgY2xhc3M9ImhlYWRpbmctbGFiZWwiPgogICAgICAgICAgICBzYW1wbGU6IFtbX3NhbXBsZVRleHRdXSBvZiBbW3RvdGFsU2FtcGxlc11dCiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19oYXNBdExlYXN0T25lU3RlcF1dIj4KICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkaW5nLXJvdyI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkaW5nLWxhYmVsIj4KICAgICAgICAgICAgc3RlcCA8c3Ryb25nPltbX2N1cnJlbnREYXR1bS5zdGVwXV08L3N0cm9uZz4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19jdXJyZW50RGF0dW0ud2FsbF90aW1lXV0iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkaW5nLWxhYmVsIGhlYWRpbmctcmlnaHQiPgogICAgICAgICAgICAgIFtbX2N1cnJlbnREYXR1bS53YWxsX3RpbWVdXQogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfaGFzTXVsdGlwbGVTdGVwc11dIj4KICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkaW5nLXJvdyI+CiAgICAgICAgICA8cGFwZXItc2xpZGVyCiAgICAgICAgICAgIGlkPSJzdGVwcyIKICAgICAgICAgICAgaW1tZWRpYXRlLXZhbHVlPSJ7e19zdGVwSW5kZXh9fSIKICAgICAgICAgICAgbWF4PSJbW19tYXhTdGVwSW5kZXhdXSIKICAgICAgICAgICAgbWF4LW1hcmtlcnM9IltbX21heFN0ZXBJbmRleF1dIgogICAgICAgICAgICBzbmFwcz0iIgogICAgICAgICAgICBzdGVwPSIxIgogICAgICAgICAgICB2YWx1ZT0ie3tfc3RlcEluZGV4fX0iCiAgICAgICAgICA+PC9wYXBlci1zbGlkZXI+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvdGVtcGxhdGU+CiAgICA8L3RmLWNhcmQtaGVhZGluZz4KICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfaGFzQXRMZWFzdE9uZVN0ZXBdXSI+CiAgICAgIDxhdWRpbwogICAgICAgIGNvbnRyb2xzPSIiCiAgICAgICAgc3JjJD0iW1tfY3VycmVudERhdHVtLnVybF1dIgogICAgICAgIHR5cGUkPSJbW19jdXJyZW50RGF0dW0uY29udGVudFR5cGVdXSIKICAgICAgPjwvYXVkaW8+CiAgICAgIDx0Zi1tYXJrZG93bi12aWV3IGh0bWw9IltbX2N1cnJlbnREYXR1bS5sYWJlbF1dIj48L3RmLW1hcmtkb3duLXZpZXc+CiAgICA8L3RlbXBsYXRlPgogICAgPGRpdiBpZD0ibWFpbi1hdWRpby1jb250YWluZXIiPjwvZGl2PgoKICAgIDxzdHlsZSBpbmNsdWRlPSJ0Zi1jYXJkLWhlYWRpbmctc3R5bGUiPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgd2lkdGg6IDM1MHB4OwogICAgICAgIGhlaWdodDogYXV0bzsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgLS1zdGVwLXNsaWRlci1rbm9iLWNvbG9yOiAjNDI0MjQyOwogICAgICAgIG1hcmdpbi1yaWdodDogMTVweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxNXB4OwogICAgICB9CgogICAgICAjc3RlcHMgewogICAgICAgIGhlaWdodDogMTVweDsKICAgICAgICBtYXJnaW46IDAgMCAwIC0xNXB4OwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgICAgcGFkZGluZzogMCA1cHg7IC8qIHNvIHRoZSBzbGlkZXIga25vYiBkb2Vzbid0IGJ1dHQgb3V0ICovCiAgICAgICAgbWFyZ2luLXRvcDogNXB4OwogICAgICAgIC0tcGFwZXItc2xpZGVyLWFjdGl2ZS1jb2xvcjogdmFyKC0tc3RlcC1zbGlkZXIta25vYi1jb2xvcik7CiAgICAgICAgLS1wYXBlci1zbGlkZXIta25vYi1jb2xvcjogdmFyKC0tc3RlcC1zbGlkZXIta25vYi1jb2xvcik7CiAgICAgICAgLS1wYXBlci1zbGlkZXItcGluLWNvbG9yOiB2YXIoLS1zdGVwLXNsaWRlci1rbm9iLWNvbG9yKTsKICAgICAgICAtLXBhcGVyLXNsaWRlci1rbm9iLXN0YXJ0LWNvbG9yOiB2YXIoLS1zdGVwLXNsaWRlci1rbm9iLWNvbG9yKTsKICAgICAgICAtLXBhcGVyLXNsaWRlci1rbm9iLXN0YXJ0LWJvcmRlci1jb2xvcjogdmFyKC0tc3RlcC1zbGlkZXIta25vYi1jb2xvcik7CiAgICAgICAgLS1wYXBlci1zbGlkZXItcGluLXN0YXJ0LWNvbG9yOiB2YXIoLS1zdGVwLXNsaWRlci1rbm9iLWNvbG9yKTsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLFRPLnByb3RvdHlwZSwicnVuIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLFRPLnByb3RvdHlwZSwidGFnIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLFRPLnByb3RvdHlwZSwic2FtcGxlIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLFRPLnByb3RvdHlwZSwidG90YWxTYW1wbGVzIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLFRPLnByb3RvdHlwZSwidGFnTWV0YWRhdGEiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsYnIpXSxUTy5wcm90b3R5cGUsInJlcXVlc3RNYW5hZ2VyIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLHhPKV0sVE8ucHJvdG90eXBlLCJfbWV0YWRhdGFDYW5jZWxsZXIiLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheX0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLFRPLnByb3RvdHlwZSwiX3N0ZXBzIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLFRPLnByb3RvdHlwZSwiX3N0ZXBJbmRleCIsdm9pZCAwKSx0KFtzKCJydW4iKSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxUTy5wcm90b3R5cGUsIl9ydW5Db2xvciIsbnVsbCksdChbcygiX3N0ZXBzIiksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLFRPLnByb3RvdHlwZSwiX2hhc0F0TGVhc3RPbmVTdGVwIixudWxsKSx0KFtzKCJfc3RlcHMiKSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sVE8ucHJvdG90eXBlLCJfaGFzTXVsdGlwbGVTdGVwcyIsbnVsbCksdChbcygiX3N0ZXBzIiksZSgiZGVzaWduOnR5cGUiLE51bWJlciksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sVE8ucHJvdG90eXBlLCJfbWF4U3RlcEluZGV4IixudWxsKSx0KFtzKCJfc3RlcHMiLCJfc3RlcEluZGV4IiksZSgiZGVzaWduOnR5cGUiLE9iamVjdCksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sVE8ucHJvdG90eXBlLCJfY3VycmVudERhdHVtIixudWxsKSx0KFtzKCJzYW1wbGUiKSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxUTy5wcm90b3R5cGUsIl9zYW1wbGVUZXh0IixudWxsKSx0KFtzKCJ0b3RhbFNhbXBsZXMiKSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sVE8ucHJvdG90eXBlLCJfaGFzTXVsdGlwbGVTYW1wbGVzIixudWxsKSx0KFthKCJydW4iLCJ0YWciKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLFRPLnByb3RvdHlwZSwiX3JlbG9hZE9uUnVuVGFnQ2hhbmdlIixudWxsKSxUTz10KFtpKCJ0Zi1hdWRpby1sb2FkZXIiKV0sVE8pO2xldCBDTz1jbGFzcyBleHRlbmRzKGNyKHdlKSl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMucmVsb2FkT25SZWFkeT0hMCx0aGlzLl90YWdGaWx0ZXI9IiIsdGhpcy5fcmVxdWVzdE1hbmFnZXI9bmV3IGJyfXJlYWR5KCl7c3VwZXIucmVhZHkoKSx0aGlzLnJlbG9hZE9uUmVhZHkmJnRoaXMucmVsb2FkKCl9cmVsb2FkKCl7dGhpcy5fZmV0Y2hUYWdzKCkudGhlbigoKCk9Pnt0aGlzLl9yZWxvYWRBdWRpbygpfSkpfV9mZXRjaFRhZ3MoKXtjb25zdCB0PUVyKCkucGx1Z2luUm91dGUoImF1ZGlvIiwiL3RhZ3MiKTtyZXR1cm4gdGhpcy5fcmVxdWVzdE1hbmFnZXIucmVxdWVzdCh0KS50aGVuKCh0PT57aWYoQ2UuZXhwb3J0cy5pc0VxdWFsKHQsdGhpcy5fcnVuVG9UYWdJbmZvKSlyZXR1cm47Y29uc3QgZT1mcihDZS5leHBvcnRzLm1hcFZhbHVlcyh0LCh0PT5PYmplY3Qua2V5cyh0KSkpKTt0aGlzLnNldCgiX2RhdGFOb3RGb3VuZCIsMD09PWUubGVuZ3RoKSx0aGlzLnNldCgiX3J1blRvVGFnSW5mbyIsdCl9KSl9X3JlbG9hZEF1ZGlvKCl7dGhpcy5yb290LnF1ZXJ5U2VsZWN0b3JBbGwoInRmLWF1ZGlvLWxvYWRlciIpLmZvckVhY2goKHQ9Pnt0LnJlbG9hZCgpfSkpfV9zaG91bGRPcGVuKHQpe3JldHVybiB0PD0yfWdldCBfY2F0ZWdvcmllcygpe3ZhciB0PXRoaXMuX3J1blRvVGFnSW5mbyxlPXRoaXMuX3NlbGVjdGVkUnVucyxuPXRoaXMuX3RhZ0ZpbHRlcjtmdW5jdGlvbiBpKGUpe2NvbnN0IG49dFtlLnJ1bl1bZS50YWddLnNhbXBsZXM7cmV0dXJuIENlLmV4cG9ydHMucmFuZ2UobikubWFwKCh0PT5PYmplY3QuYXNzaWduKHt9LGUse3NhbXBsZTp0LHRvdGFsU2FtcGxlczpufSkpKX1yZXR1cm4gSXIoQ2UuZXhwb3J0cy5tYXBWYWx1ZXModCwodD0+T2JqZWN0LmtleXModCkpKSxlLG4pLm1hcCgodD0+T2JqZWN0LmFzc2lnbih7fSx0LHtpdGVtczpbXS5jb25jYXQuYXBwbHkoW10sdC5pdGVtcy5tYXAoaSkpfSkpKX1fdGFnTWV0YWRhdGEodCxlLG4pe3JldHVybiB0W2VdW25dfX07Q08udGVtcGxhdGU9eGVgCiAgICA8dGYtZGFzaGJvYXJkLWxheW91dD4KICAgICAgPGRpdiBjbGFzcz0ic2lkZWJhciIgc2xvdD0ic2lkZWJhciI+CiAgICAgICAgPGRpdiBjbGFzcz0ic2lkZWJhci1zZWN0aW9uIHJ1bnMtc2VsZWN0b3IiPgogICAgICAgICAgPHRmLXJ1bnMtc2VsZWN0b3IKICAgICAgICAgICAgaWQ9InJ1bnMtc2VsZWN0b3IiCiAgICAgICAgICAgIHNlbGVjdGVkLXJ1bnM9Int7X3NlbGVjdGVkUnVuc319IgogICAgICAgICAgPjwvdGYtcnVucy1zZWxlY3Rvcj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImNlbnRlciIgc2xvdD0iY2VudGVyIj4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2RhdGFOb3RGb3VuZF1dIj4KICAgICAgICAgIDxkaXYgY2xhc3M9Im5vLWRhdGEtd2FybmluZyI+CiAgICAgICAgICAgIDxoMz5ObyBhdWRpbyBkYXRhIHdhcyBmb3VuZC48L2gzPgogICAgICAgICAgICA8cD5Qcm9iYWJsZSBjYXVzZXM6PC9wPgogICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgPGxpPllvdSBoYXZlbuKAmXQgd3JpdHRlbiBhbnkgYXVkaW8gZGF0YSB0byB5b3VyIGV2ZW50IGZpbGVzLjwvbGk+CiAgICAgICAgICAgICAgPGxpPlRlbnNvckJvYXJkIGNhbuKAmXQgZmluZCB5b3VyIGV2ZW50IGZpbGVzLjwvbGk+CiAgICAgICAgICAgIDwvdWw+CgogICAgICAgICAgICA8cD4KICAgICAgICAgICAgICBJZiB5b3XigJlyZSBuZXcgdG8gdXNpbmcgVGVuc29yQm9hcmQsIGFuZCB3YW50IHRvIGZpbmQgb3V0IGhvdyB0bwogICAgICAgICAgICAgIGFkZCBkYXRhIGFuZCBzZXQgdXAgeW91ciBldmVudCBmaWxlcywgY2hlY2sgb3V0IHRoZQogICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vdGVuc29yZmxvdy90ZW5zb3Jib2FyZC9ibG9iL21hc3Rlci9SRUFETUUubWQiCiAgICAgICAgICAgICAgICA+UkVBRE1FPC9hCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgIGFuZCBwZXJoYXBzIHRoZQogICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICBocmVmPSJodHRwczovL3d3dy50ZW5zb3JmbG93Lm9yZy9nZXRfc3RhcnRlZC9zdW1tYXJpZXNfYW5kX3RlbnNvcmJvYXJkIgogICAgICAgICAgICAgICAgPlRlbnNvckJvYXJkIHR1dG9yaWFsPC9hCiAgICAgICAgICAgICAgPi4KICAgICAgICAgICAgPC9wPgoKICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgSWYgeW91IHRoaW5rIFRlbnNvckJvYXJkIGlzIGNvbmZpZ3VyZWQgcHJvcGVybHksIHBsZWFzZSBzZWUKICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29yYm9hcmQvYmxvYi9tYXN0ZXIvUkVBRE1FLm1kI215LXRlbnNvcmJvYXJkLWlzbnQtc2hvd2luZy1hbnktZGF0YS13aGF0cy13cm9uZyIKICAgICAgICAgICAgICAgID50aGUgc2VjdGlvbiBvZiB0aGUgUkVBRE1FIGRldm90ZWQgdG8gbWlzc2luZyBkYXRhIHByb2JsZW1zPC9hCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgIGFuZCBjb25zaWRlciBmaWxpbmcgYW4gaXNzdWUgb24gR2l0SHViLgogICAgICAgICAgICA8L3A+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1shX2RhdGFOb3RGb3VuZF1dIj4KICAgICAgICAgIDx0Zi10YWctZmlsdGVyZXIgdGFnLWZpbHRlcj0ie3tfdGFnRmlsdGVyfX0iPjwvdGYtdGFnLWZpbHRlcmVyPgogICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20tcmVwZWF0IiBpdGVtcz0iW1tfY2F0ZWdvcmllc11dIiBhcz0iY2F0ZWdvcnkiPgogICAgICAgICAgICA8dGYtY2F0ZWdvcnktcGFnaW5hdGVkLXZpZXcKICAgICAgICAgICAgICBjYXRlZ29yeT0iW1tjYXRlZ29yeV1dIgogICAgICAgICAgICAgIGluaXRpYWwtb3BlbmVkPSJbW19zaG91bGRPcGVuKGluZGV4KV1dIgogICAgICAgICAgICA+CiAgICAgICAgICAgICAgPHRlbXBsYXRlPgogICAgICAgICAgICAgICAgPHRmLWF1ZGlvLWxvYWRlcgogICAgICAgICAgICAgICAgICBhY3RpdmU9IltbYWN0aXZlXV0iCiAgICAgICAgICAgICAgICAgIHJ1bj0iW1tpdGVtLnJ1bl1dIgogICAgICAgICAgICAgICAgICB0YWc9IltbaXRlbS50YWddXSIKICAgICAgICAgICAgICAgICAgc2FtcGxlPSJbW2l0ZW0uc2FtcGxlXV0iCiAgICAgICAgICAgICAgICAgIHRvdGFsLXNhbXBsZXM9IltbaXRlbS50b3RhbFNhbXBsZXNdXSIKICAgICAgICAgICAgICAgICAgdGFnLW1ldGFkYXRhPSJbW190YWdNZXRhZGF0YShfcnVuVG9UYWdJbmZvLCBpdGVtLnJ1biwgaXRlbS50YWcpXV0iCiAgICAgICAgICAgICAgICAgIHJlcXVlc3QtbWFuYWdlcj0iW1tfcmVxdWVzdE1hbmFnZXJdXSIKICAgICAgICAgICAgICAgID48L3RmLWF1ZGlvLWxvYWRlcj4KICAgICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICA8L3RmLWNhdGVnb3J5LXBhZ2luYXRlZC12aWV3PgogICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8L3RlbXBsYXRlPgogICAgICA8L2Rpdj4KICAgIDwvdGYtZGFzaGJvYXJkLWxheW91dD4KICAgIDxzdHlsZSBpbmNsdWRlPSJkYXNoYm9hcmQtc3R5bGUiPjwvc3R5bGU+CiAgICA8c3R5bGU+CiAgICAgIC5uby1kYXRhLXdhcm5pbmcgewogICAgICAgIG1heC13aWR0aDogNTQwcHg7CiAgICAgICAgbWFyZ2luOiA4MHB4IGF1dG8gMCBhdXRvOwogICAgICB9CiAgICA8L3N0eWxlPgogIGAsdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxDTy5wcm90b3R5cGUsInJlbG9hZE9uUmVhZHkiLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheX0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLENPLnByb3RvdHlwZSwiX3NlbGVjdGVkUnVucyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxDTy5wcm90b3R5cGUsIl9ydW5Ub1RhZ0luZm8iLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxDTy5wcm90b3R5cGUsIl9kYXRhTm90Rm91bmQiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sQ08ucHJvdG90eXBlLCJfdGFnRmlsdGVyIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLGJyKV0sQ08ucHJvdG90eXBlLCJfcmVxdWVzdE1hbmFnZXIiLHZvaWQgMCksdChbcygiX3J1blRvVGFnSW5mbyIsIl9zZWxlY3RlZFJ1bnMiLCJfdGFnRmlsdGVyIiksZSgiZGVzaWduOnR5cGUiLEFycmF5KSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxDTy5wcm90b3R5cGUsIl9jYXRlZ29yaWVzIixudWxsKSxDTz10KFtpKCJ0Zi1hdWRpby1kYXNoYm9hcmQiKV0sQ08pO2xldCBBTz1jbGFzcyBleHRlbmRzKGNyKHdlKSl7YXR0YWNoZWQoKXt0aGlzLmFzeW5jKChmdW5jdGlvbigpe3RoaXMuZ2V0RWZmZWN0aXZlQ2hpbGRyZW4oKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3RoaXMubGlzdGVuKHQsInRhcCIsIl9zZWxlY3RUYXJnZXQiKX0uYmluZCh0aGlzKSl9KSl9X3NlbGVjdFRhcmdldCh0KXt0aGlzLnNlbGVjdGVkSWQ9dC5jdXJyZW50VGFyZ2V0LmlkfV9zZWxlY3RlZElkQ2hhbmdlZCgpe3ZhciB0PXRoaXMucXVlcnlFZmZlY3RpdmVDaGlsZHJlbigiIyIrdGhpcy5zZWxlY3RlZElkKTt0JiYodGhpcy5nZXRFZmZlY3RpdmVDaGlsZHJlbigpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3QuY2xhc3NMaXN0LnJlbW92ZSgic2VsZWN0ZWQiKX0pKSx0LmNsYXNzTGlzdC5hZGQoInNlbGVjdGVkIikpfX07ZnVuY3Rpb24ga08odCxlKXtsZXQgbjtjb25zdCBpPXt9O09iamVjdC5rZXlzKHQpLmZvckVhY2goKGU9Pntjb25zdCByPXRbZV07dm9pZCAwPT09biYmKG49ci5kaXNwbGF5TmFtZSksbiE9PXIuZGlzcGxheU5hbWUmJihuPW51bGwpLHZvaWQgMD09PWlbci5kZXNjcmlwdGlvbl0mJihpW3IuZGVzY3JpcHRpb25dPVtdKSxpW3IuZGVzY3JpcHRpb25dLnB1c2goZSl9KSk7cmV0dXJue2Rpc3BsYXlOYW1lOm51bGwhPW4/bjplLGRlc2NyaXB0aW9uOigoKT0+e2NvbnN0IHQ9T2JqZWN0LmtleXMoaSk7aWYoMD09PXQubGVuZ3RoKXJldHVybiIiO2lmKDE9PT10Lmxlbmd0aClyZXR1cm4gdFswXTtyZXR1cm5gJHsiPHA+PHN0cm9uZz5NdWx0aXBsZSBkZXNjcmlwdGlvbnM6PC9zdHJvbmc+PC9wPiJ9PHVsPiR7dC5tYXAoKHQ9Pntjb25zdCBlPWlbdF0ubWFwKCh0PT5gPGNvZGU+JHt0LnJlcGxhY2UoLzwvZywiJmx0OyIpLnJlcGxhY2UoLz4vZywiJmd0OyIpLnJlcGxhY2UoLyYvZywiJmFtcDsiKX08L2NvZGU+YCkpLG49ZS5sZW5ndGg+Mj9lLnNsaWNlKDAsZS5sZW5ndGgtMSkuam9pbigiLCAiKSsiLCBhbmQgIitlW2UubGVuZ3RoLTFdOmUuam9pbigiIGFuZCAiKTtyZXR1cm5gPGxpPjxwPkZvciAkeyhmdW5jdGlvbiByKHQsZSxuKXtyZXR1cm4gMT09PXQ/ZTpufSkoZS5sZW5ndGgsInJ1biIsInJ1bnMiKX0gJHtufTo8L3A+JHt0fTwvbGk+YH0pKS5qb2luKCIiKX08L3VsPmB9KSgpfX1BTy50ZW1wbGF0ZT14ZWAKICAgIDxkaXYgaWQ9IndyYXAiPgogICAgICA8aDM+W1tuYW1lXV08L2gzPgogICAgICA8ZGl2IGNsYXNzPSJjb250ZW50LXdyYXBwZXIiPjxzbG90Pjwvc2xvdD48L2Rpdj4KICAgIDwvZGl2PgogICAgPHN0eWxlPgogICAgICAuY29udGVudC13cmFwcGVyIDo6c2xvdHRlZCgqKSB7CiAgICAgICAgYmFja2dyb3VuZDogbm9uZTsKICAgICAgICBjb2xvcjogdmFyKC0tdGItdWktZGFyay1hY2NlbnQpOwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBtYXJnaW4tdG9wOiAxMHB4OwogICAgICB9CgogICAgICAuY29udGVudC13cmFwcGVyIDo6c2xvdHRlZCgqKSB7CiAgICAgICAgYmFja2dyb3VuZDogbm9uZTsKICAgICAgICBjb2xvcjogdmFyKC0tdGItdWktZGFyay1hY2NlbnQpOwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBtYXJnaW4tdG9wOiAxMHB4OwogICAgICB9CgogICAgICAuY29udGVudC13cmFwcGVyIDo6c2xvdHRlZCguc2VsZWN0ZWQpIHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10Yi11aS1kYXJrLWFjY2VudCk7CiAgICAgICAgY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7CiAgICAgIH0KCiAgICAgIGgzIHsKICAgICAgICBjb2xvcjogdmFyKC0tdGItc2Vjb25kYXJ5LXRleHQtY29sb3IpOwogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBmb250LXdlaWdodDogbm9ybWFsOwogICAgICAgIG1hcmdpbjogMCAwIDVweDsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLEFPLnByb3RvdHlwZSwibmFtZSIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZyxub3RpZnk6ITAsb2JzZXJ2ZXI6Il9zZWxlY3RlZElkQ2hhbmdlZCJ9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sQU8ucHJvdG90eXBlLCJzZWxlY3RlZElkIix2b2lkIDApLEFPPXQoW2koInRmLW9wdGlvbi1zZWxlY3RvciIpXSxBTyk7bGV0IExPPWNsYXNzIGV4dGVuZHMgd2V7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMud2VpZ2h0PS42LHRoaXMuX3VwZGF0ZVdlaWdodD1DZS5leHBvcnRzLmRlYm91bmNlKChmdW5jdGlvbih0KXt0aGlzLndlaWdodD10fSksMjUwKX1faW1tZWRpYXRlV2VpZ2h0TnVtYmVyRm9yUGFwZXJTbGlkZXJDaGFuZ2VkKCl7dGhpcy5faW5wdXRXZWlnaHRTdHJpbmdGb3JQYXBlcklucHV0PXRoaXMuX2ltbWVkaWF0ZVdlaWdodE51bWJlckZvclBhcGVyU2xpZGVyLnRvU3RyaW5nKCksdGhpcy5fdXBkYXRlV2VpZ2h0LmNhbGwodGhpcyx0aGlzLl9pbW1lZGlhdGVXZWlnaHROdW1iZXJGb3JQYXBlclNsaWRlcil9X2lucHV0V2VpZ2h0U3RyaW5nRm9yUGFwZXJJbnB1dENoYW5nZWQoKXsrdGhpcy5faW5wdXRXZWlnaHRTdHJpbmdGb3JQYXBlcklucHV0PDA/dGhpcy5faW5wdXRXZWlnaHRTdHJpbmdGb3JQYXBlcklucHV0PSIwIjordGhpcy5faW5wdXRXZWlnaHRTdHJpbmdGb3JQYXBlcklucHV0PjEmJih0aGlzLl9pbnB1dFdlaWdodFN0cmluZ0ZvclBhcGVySW5wdXQ9IjEiKTt2YXIgdD0rdGhpcy5faW5wdXRXZWlnaHRTdHJpbmdGb3JQYXBlcklucHV0O2lzTmFOKHQpfHx0aGlzLl91cGRhdGVXZWlnaHQuY2FsbCh0aGlzLHQpfX07ZnVuY3Rpb24gUE8odCxlKXtjb25zdCBuPU9iamVjdC5rZXlzKGUpLnNvcnQoKS5maWx0ZXIoKHQ9PnZvaWQgMCE9PWVbdF0pKTtpZighbi5sZW5ndGgpcmV0dXJuIHQ7Y29uc3QgaT0tMSE9PXQuaW5kZXhPZigiPyIpPyImIjoiPyI7cmV0dXJuIHQraStbXS5jb25jYXQoLi4ubi5tYXAoKHQ9Pntjb25zdCBuPWVbdF07cmV0dXJuKEFycmF5LmlzQXJyYXkobik/bjpbbl0pLm1hcCgoZT0+YCR7dH09JHsoZnVuY3Rpb24gbih0KXtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KHQpLnJlcGxhY2UoL1woL2csIiUyOCIpLnJlcGxhY2UoL1wpL2csIiUyOSIpfSkoZSl9YCkpfSkpKS5qb2luKCImIil9TE8udGVtcGxhdGU9eGVgCiAgICA8aDMgY2xhc3M9InRpdGxlIj5TbW9vdGhpbmc8L2gzPgogICAgPGRpdiBjbGFzcz0ic21vb3RoaW5nLWJsb2NrIj4KICAgICAgPHBhcGVyLXNsaWRlcgogICAgICAgIGlkPSJzbGlkZXIiCiAgICAgICAgaW1tZWRpYXRlLXZhbHVlPSJ7e19pbW1lZGlhdGVXZWlnaHROdW1iZXJGb3JQYXBlclNsaWRlcn19IgogICAgICAgIG1heD0iW1ttYXhdXSIKICAgICAgICBtaW49IltbbWluXV0iCiAgICAgICAgcGluCiAgICAgICAgc3RlcD0iW1tzdGVwXV0iCiAgICAgICAgdHlwZT0ibnVtYmVyIgogICAgICAgIHZhbHVlPSJ7e3dlaWdodH19IgogICAgICA+PC9wYXBlci1zbGlkZXI+CiAgICAgIDxwYXBlci1pbnB1dAogICAgICAgIGlkPSJpbnB1dCIKICAgICAgICBsYWJlbD0id2VpZ2h0IgogICAgICAgIG5vLWxhYmVsLWZsb2F0CiAgICAgICAgdmFsdWU9Int7X2lucHV0V2VpZ2h0U3RyaW5nRm9yUGFwZXJJbnB1dH19IgogICAgICAgIHR5cGU9Im51bWJlciIKICAgICAgICBzdGVwPSJbW3N0ZXBdXSIKICAgICAgICBtaW49IltbbWluXV0iCiAgICAgICAgbWF4PSJbW21heF1dIgogICAgICA+PC9wYXBlci1pbnB1dD4KICAgIDwvZGl2PgogICAgPHN0eWxlPgogICAgICAudGl0bGUgewogICAgICAgIGNvbG9yOiB2YXIoLS10Yi1zZWNvbmRhcnktdGV4dC1jb2xvcik7CiAgICAgICAgbWFyZ2luOiAwOwogICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIG1hcmdpbi1ib3R0b206IDVweDsKICAgICAgfQoKICAgICAgLnNtb290aGluZy1ibG9jayB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgfQoKICAgICAgcGFwZXItc2xpZGVyIHsKICAgICAgICAtLXBhcGVyLXNsaWRlci1hY3RpdmUtY29sb3I6IHZhcigtLXRiLW9yYW5nZS1zdHJvbmcpOwogICAgICAgIC0tcGFwZXItc2xpZGVyLWtub2ItY29sb3I6IHZhcigtLXRiLW9yYW5nZS1zdHJvbmcpOwogICAgICAgIC0tcGFwZXItc2xpZGVyLWtub2Itc3RhcnQtYm9yZGVyLWNvbG9yOiB2YXIoLS10Yi1vcmFuZ2Utc3Ryb25nKTsKICAgICAgICAtLXBhcGVyLXNsaWRlci1rbm9iLXN0YXJ0LWNvbG9yOiB2YXIoLS10Yi1vcmFuZ2Utc3Ryb25nKTsKICAgICAgICAtLXBhcGVyLXNsaWRlci1tYXJrZXJzLWNvbG9yOiB2YXIoLS10Yi1vcmFuZ2Utc3Ryb25nKTsKICAgICAgICAtLXBhcGVyLXNsaWRlci1waW4tY29sb3I6IHZhcigtLXRiLW9yYW5nZS1zdHJvbmcpOwogICAgICAgIC0tcGFwZXItc2xpZGVyLXBpbi1zdGFydC1jb2xvcjogdmFyKC0tdGItb3JhbmdlLXN0cm9uZyk7CiAgICAgICAgZmxleC1ncm93OiAyOwogICAgICB9CgogICAgICBwYXBlci1pbnB1dCB7CiAgICAgICAgLS1wYXBlci1pbnB1dC1jb250YWluZXItZm9jdXMtY29sb3I6IHZhcigtLXRiLW9yYW5nZS1zdHJvbmcpOwogICAgICAgIC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWlucHV0OiB7CiAgICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgfQogICAgICAgIC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWxhYmVsOiB7CiAgICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgfQogICAgICAgIHdpZHRoOiA2MHB4OwogICAgICB9CiAgICA8L3N0eWxlPgogIGAsdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sTE8ucHJvdG90eXBlLCJzdGVwIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLExPLnByb3RvdHlwZSwibWF4Iix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLExPLnByb3RvdHlwZSwibWluIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyLG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxMTy5wcm90b3R5cGUsIndlaWdodCIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcixub3RpZnk6ITAsb2JzZXJ2ZXI6Il9pbW1lZGlhdGVXZWlnaHROdW1iZXJGb3JQYXBlclNsaWRlckNoYW5nZWQifSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLExPLnByb3RvdHlwZSwiX2ltbWVkaWF0ZVdlaWdodE51bWJlckZvclBhcGVyU2xpZGVyIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nLG5vdGlmeTohMCxvYnNlcnZlcjoiX2lucHV0V2VpZ2h0U3RyaW5nRm9yUGFwZXJJbnB1dENoYW5nZWQifSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLExPLnByb3RvdHlwZSwiX2lucHV0V2VpZ2h0U3RyaW5nRm9yUGFwZXJJbnB1dCIsdm9pZCAwKSxMTz10KFtpKCJ0Zi1zbW9vdGhpbmctaW5wdXQiKV0sTE8pO3ZhciBOTz17fSxJTz1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24odCxlKXt0Ll9fcHJvdG9fXz1lfXx8ZnVuY3Rpb24odCxlKXtmb3IodmFyIG4gaW4gZSllLmhhc093blByb3BlcnR5KG4pJiYodFtuXT1lW25dKX07Ci8qISAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAgQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlCiAgICB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZQogICAgTGljZW5zZSBhdCBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCiAgICBUSElTIENPREUgSVMgUFJPVklERUQgT04gQU4gKkFTIElTKiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCiAgICBLSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgV0lUSE9VVCBMSU1JVEFUSU9OIEFOWSBJTVBMSUVECiAgICBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgVElUTEUsIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLAogICAgTUVSQ0hBTlRBQkxJVFkgT1IgTk9OLUlORlJJTkdFTUVOVC4KCiAgICBTZWUgdGhlIEFwYWNoZSBWZXJzaW9uIDIuMCBMaWNlbnNlIGZvciBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMKICAgIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovdmFyIFJPPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uIHQoZSl7Zm9yKHZhciBuLGk9MSxyPWFyZ3VtZW50cy5sZW5ndGg7aTxyO2krKylmb3IodmFyIG8gaW4gbj1hcmd1bWVudHNbaV0pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4sbykmJihlW29dPW5bb10pO3JldHVybiBlfTtmdW5jdGlvbiBPTyh0KXt2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0W1N5bWJvbC5pdGVyYXRvcl0sbj0wO3JldHVybiBlP2UuY2FsbCh0KTp7bmV4dDpmdW5jdGlvbigpe3JldHVybiB0JiZuPj10Lmxlbmd0aCYmKHQ9dm9pZCAwKSx7dmFsdWU6dCYmdFtuKytdLGRvbmU6IXR9fX19ZnVuY3Rpb24gek8odCxlKXt2YXIgbj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0W1N5bWJvbC5pdGVyYXRvcl07aWYoIW4pcmV0dXJuIHQ7dmFyIGkscixvPW4uY2FsbCh0KSxhPVtdO3RyeXtmb3IoOyh2b2lkIDA9PT1lfHxlLS0gPjApJiYhKGk9by5uZXh0KCkpLmRvbmU7KWEucHVzaChpLnZhbHVlKX1jYXRjaCh0KXtyPXtlcnJvcjp0fX1maW5hbGx5e3RyeXtpJiYhaS5kb25lJiYobj1vLnJldHVybikmJm4uY2FsbChvKX1maW5hbGx5e2lmKHIpdGhyb3cgci5lcnJvcn19cmV0dXJuIGF9ZnVuY3Rpb24gRE8odCl7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBETz8odGhpcy52PXQsdGhpcyk6bmV3IERPKHQpfXZhciBCTz1NZShPYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxfX2V4dGVuZHM6ZnVuY3Rpb24gSE8odCxlKXtmdW5jdGlvbiBuKCl7dGhpcy5jb25zdHJ1Y3Rvcj10fUlPKHQsZSksdC5wcm90b3R5cGU9bnVsbD09PWU/T2JqZWN0LmNyZWF0ZShlKToobi5wcm90b3R5cGU9ZS5wcm90b3R5cGUsbmV3IG4pfSxfX2Fzc2lnbjpSTyxfX3Jlc3Q6ZnVuY3Rpb24gRk8odCxlKXt2YXIgbj17fTtmb3IodmFyIGkgaW4gdClPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxpKSYmZS5pbmRleE9mKGkpPDAmJihuW2ldPXRbaV0pO2lmKG51bGwhPXQmJiJmdW5jdGlvbiI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj0wO2ZvcihpPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHModCk7cjxpLmxlbmd0aDtyKyspZS5pbmRleE9mKGlbcl0pPDAmJihuW2lbcl1dPXRbaVtyXV0pfXJldHVybiBufSxfX2RlY29yYXRlOmZ1bmN0aW9uIFZPKHQsZSxuLGkpe3ZhciByLG89YXJndW1lbnRzLmxlbmd0aCxhPW88Mz9lOm51bGw9PT1pP2k9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLG4pOmk7aWYoIm9iamVjdCI9PXR5cGVvZiBSZWZsZWN0JiYiZnVuY3Rpb24iPT10eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSlhPVJlZmxlY3QuZGVjb3JhdGUodCxlLG4saSk7ZWxzZSBmb3IodmFyIHM9dC5sZW5ndGgtMTtzPj0wO3MtLSkocj10W3NdKSYmKGE9KG88Mz9yKGEpOm8+Mz9yKGUsbixhKTpyKGUsbikpfHxhKTtyZXR1cm4gbz4zJiZhJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLGEpLGF9LF9fcGFyYW06ZnVuY3Rpb24gVU8odCxlKXtyZXR1cm4gZnVuY3Rpb24obixpKXtlKG4saSx0KX19LF9fbWV0YWRhdGE6ZnVuY3Rpb24gak8odCxlKXtpZigib2JqZWN0Ij09dHlwZW9mIFJlZmxlY3QmJiJmdW5jdGlvbiI9PXR5cGVvZiBSZWZsZWN0Lm1ldGFkYXRhKXJldHVybiBSZWZsZWN0Lm1ldGFkYXRhKHQsZSl9LF9fYXdhaXRlcjpmdW5jdGlvbiBHTyh0LGUsbixpKXtyZXR1cm4gbmV3KG58fChuPVByb21pc2UpKSgoZnVuY3Rpb24ocixvKXtmdW5jdGlvbiBhKHQpe3RyeXtsKGkubmV4dCh0KSl9Y2F0Y2godCl7byh0KX19ZnVuY3Rpb24gcyh0KXt0cnl7bChpLnRocm93KHQpKX1jYXRjaCh0KXtvKHQpfX1mdW5jdGlvbiBsKHQpe3QuZG9uZT9yKHQudmFsdWUpOm5ldyBuKChmdW5jdGlvbihlKXtlKHQudmFsdWUpfSkpLnRoZW4oYSxzKX1sKChpPWkuYXBwbHkodCxlfHxbXSkpLm5leHQoKSl9KSl9LF9fZ2VuZXJhdG9yOmZ1bmN0aW9uIFdPKHQsZSl7dmFyIG4saSxyLG8sYT17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZyWzBdKXRocm93IHJbMV07cmV0dXJuIHJbMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gbz17bmV4dDpzKDApLHRocm93OnMoMSkscmV0dXJuOnMoMil9LCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihvW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLG87ZnVuY3Rpb24gcyhvKXtyZXR1cm4gZnVuY3Rpb24ocyl7cmV0dXJuKGZ1bmN0aW9uIGwobyl7aWYobil0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7Zm9yKDthOyl0cnl7aWYobj0xLGkmJihyPWlbMiZvWzBdPyJyZXR1cm4iOm9bMF0/InRocm93IjoibmV4dCJdKSYmIShyPXIuY2FsbChpLG9bMV0pKS5kb25lKXJldHVybiByO3N3aXRjaChpPTAsciYmKG89WzAsci52YWx1ZV0pLG9bMF0pe2Nhc2UgMDpjYXNlIDE6cj1vO2JyZWFrO2Nhc2UgNDpyZXR1cm4gYS5sYWJlbCsrLHt2YWx1ZTpvWzFdLGRvbmU6ITF9O2Nhc2UgNTphLmxhYmVsKyssaT1vWzFdLG89WzBdO2NvbnRpbnVlO2Nhc2UgNzpvPWEub3BzLnBvcCgpLGEudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEocj1hLnRyeXMsKHI9ci5sZW5ndGg+MCYmcltyLmxlbmd0aC0xXSl8fDYhPT1vWzBdJiYyIT09b1swXSkpe2E9MDtjb250aW51ZX1pZigzPT09b1swXSYmKCFyfHxvWzFdPnJbMF0mJm9bMV08clszXSkpe2EubGFiZWw9b1sxXTticmVha31pZig2PT09b1swXSYmYS5sYWJlbDxyWzFdKXthLmxhYmVsPXJbMV0scj1vO2JyZWFrfWlmKHImJmEubGFiZWw8clsyXSl7YS5sYWJlbD1yWzJdLGEub3BzLnB1c2gobyk7YnJlYWt9clsyXSYmYS5vcHMucG9wKCksYS50cnlzLnBvcCgpO2NvbnRpbnVlfW89ZS5jYWxsKHQsYSl9Y2F0Y2godCl7bz1bNix0XSxpPTB9ZmluYWxseXtuPXI9MH1pZig1Jm9bMF0pdGhyb3cgb1sxXTtyZXR1cm57dmFsdWU6b1swXT9vWzFdOnZvaWQgMCxkb25lOiEwfX0pKFtvLHNdKX19fSxfX2V4cG9ydFN0YXI6ZnVuY3Rpb24gcU8odCxlKXtmb3IodmFyIG4gaW4gdCllLmhhc093blByb3BlcnR5KG4pfHwoZVtuXT10W25dKX0sX192YWx1ZXM6T08sX19yZWFkOnpPLF9fc3ByZWFkOmZ1bmN0aW9uIFlPKCl7Zm9yKHZhciB0PVtdLGU9MDtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXQ9dC5jb25jYXQoek8oYXJndW1lbnRzW2VdKSk7cmV0dXJuIHR9LF9fYXdhaXQ6RE8sX19hc3luY0dlbmVyYXRvcjpmdW5jdGlvbiBYTyh0LGUsbil7aWYoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKXRocm93IG5ldyBUeXBlRXJyb3IoIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLiIpO3ZhciBpLHI9bi5hcHBseSh0LGV8fFtdKSxvPVtdO3JldHVybiBpPXt9LGEoIm5leHQiKSxhKCJ0aHJvdyIpLGEoInJldHVybiIpLGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LGk7ZnVuY3Rpb24gYSh0KXtyW3RdJiYoaVt0XT1mdW5jdGlvbihlKXtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKG4saSl7by5wdXNoKFt0LGUsbixpXSk+MXx8cyh0LGUpfSkpfSl9ZnVuY3Rpb24gcyh0LGUpe3RyeXshKGZ1bmN0aW9uIG4odCl7dC52YWx1ZSBpbnN0YW5jZW9mIERPP1Byb21pc2UucmVzb2x2ZSh0LnZhbHVlLnYpLnRoZW4obCxjKTp1KG9bMF1bMl0sdCl9KShyW3RdKGUpKX1jYXRjaCh0KXt1KG9bMF1bM10sdCl9fWZ1bmN0aW9uIGwodCl7cygibmV4dCIsdCl9ZnVuY3Rpb24gYyh0KXtzKCJ0aHJvdyIsdCl9ZnVuY3Rpb24gdSh0LGUpe3QoZSksby5zaGlmdCgpLG8ubGVuZ3RoJiZzKG9bMF1bMF0sb1swXVsxXSl9fSxfX2FzeW5jRGVsZWdhdG9yOmZ1bmN0aW9uICRPKHQpe3ZhciBlLG47cmV0dXJuIGU9e30saSgibmV4dCIpLGkoInRocm93IiwoZnVuY3Rpb24odCl7dGhyb3cgdH0pKSxpKCJyZXR1cm4iKSxlW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sZTtmdW5jdGlvbiBpKGkscil7dFtpXSYmKGVbaV09ZnVuY3Rpb24oZSl7cmV0dXJuKG49IW4pP3t2YWx1ZTpETyh0W2ldKGUpKSxkb25lOiJyZXR1cm4iPT09aX06cj9yKGUpOmV9KX19LF9fYXN5bmNWYWx1ZXM6ZnVuY3Rpb24gS08odCl7aWYoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKXRocm93IG5ldyBUeXBlRXJyb3IoIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLiIpO3ZhciBlPXRbU3ltYm9sLmFzeW5jSXRlcmF0b3JdO3JldHVybiBlP2UuY2FsbCh0KTpPTyh0KX0sX19tYWtlVGVtcGxhdGVPYmplY3Q6ZnVuY3Rpb24gWk8odCxlKXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5P09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJyYXciLHt2YWx1ZTplfSk6dC5yYXc9ZSx0fX0pKTtmdW5jdGlvbiBKTyh0LGUpe3JldHVybiB0PGU/LTE6dD5lPzE6dD49ZT8wOk5hTn1mdW5jdGlvbiBRTyh0KXtyZXR1cm4gMT09PXQubGVuZ3RoJiYodD0oZnVuY3Rpb24gZSh0KXtyZXR1cm4gZnVuY3Rpb24oZSxuKXtyZXR1cm4gSk8odChlKSxuKX19KSh0KSkse2xlZnQ6ZnVuY3Rpb24oZSxuLGkscil7Zm9yKG51bGw9PWkmJihpPTApLG51bGw9PXImJihyPWUubGVuZ3RoKTtpPHI7KXt2YXIgbz1pK3I+Pj4xO3QoZVtvXSxuKTwwP2k9bysxOnI9b31yZXR1cm4gaX0scmlnaHQ6ZnVuY3Rpb24oZSxuLGkscil7Zm9yKG51bGw9PWkmJihpPTApLG51bGw9PXImJihyPWUubGVuZ3RoKTtpPHI7KXt2YXIgbz1pK3I+Pj4xO3QoZVtvXSxuKT4wP3I9bzppPW8rMX1yZXR1cm4gaX19fXZhciB0ej1RTyhKTyksZXo9dHoucmlnaHQsbno9dHoubGVmdDtmdW5jdGlvbiBpeih0LGUpe3JldHVyblt0LGVdfWZ1bmN0aW9uIHJ6KHQpe3JldHVybiBudWxsPT09dD9OYU46K3R9ZnVuY3Rpb24gb3oodCxlKXt2YXIgbixpLHI9dC5sZW5ndGgsbz0wLGE9LTEscz0wLGw9MDtpZihudWxsPT1lKWZvcig7KythPHI7KWlzTmFOKG49cnoodFthXSkpfHwobCs9KGk9bi1zKSoobi0ocys9aS8rK28pKSk7ZWxzZSBmb3IoOysrYTxyOylpc05hTihuPXJ6KGUodFthXSxhLHQpKSl8fChsKz0oaT1uLXMpKihuLShzKz1pLysrbykpKTtpZihvPjEpcmV0dXJuIGwvKG8tMSl9ZnVuY3Rpb24gYXoodCxlKXt2YXIgbj1veih0LGUpO3JldHVybiBuP01hdGguc3FydChuKTpufWZ1bmN0aW9uIHN6KHQsZSl7dmFyIG4saSxyLG89dC5sZW5ndGgsYT0tMTtpZihudWxsPT1lKXtmb3IoOysrYTxvOylpZihudWxsIT0obj10W2FdKSYmbj49bilmb3IoaT1yPW47KythPG87KW51bGwhPShuPXRbYV0pJiYoaT5uJiYoaT1uKSxyPG4mJihyPW4pKX1lbHNlIGZvcig7KythPG87KWlmKG51bGwhPShuPWUodFthXSxhLHQpKSYmbj49bilmb3IoaT1yPW47KythPG87KW51bGwhPShuPWUodFthXSxhLHQpKSYmKGk+biYmKGk9bikscjxuJiYocj1uKSk7cmV0dXJuW2kscl19dmFyIGx6PUFycmF5LnByb3RvdHlwZSxjej1sei5zbGljZSx1ej1sei5tYXA7ZnVuY3Rpb24gaHoodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fWZ1bmN0aW9uIGR6KHQpe3JldHVybiB0fWZ1bmN0aW9uIHB6KHQsZSxuKXt0PSt0LGU9K2Usbj0ocj1hcmd1bWVudHMubGVuZ3RoKTwyPyhlPXQsdD0wLDEpOnI8Mz8xOituO2Zvcih2YXIgaT0tMSxyPTB8TWF0aC5tYXgoMCxNYXRoLmNlaWwoKGUtdCkvbikpLG89bmV3IEFycmF5KHIpOysraTxyOylvW2ldPXQraSpuO3JldHVybiBvfXZhciBmej1NYXRoLnNxcnQoNTApLG16PU1hdGguc3FydCgxMCksZ3o9TWF0aC5zcXJ0KDIpO2Z1bmN0aW9uIF96KHQsZSxuKXt2YXIgaT0oZS10KS9NYXRoLm1heCgwLG4pLHI9TWF0aC5mbG9vcihNYXRoLmxvZyhpKS9NYXRoLkxOMTApLG89aS9NYXRoLnBvdygxMCxyKTtyZXR1cm4gcj49MD8obz49Zno/MTA6bz49bXo/NTpvPj1nej8yOjEpKk1hdGgucG93KDEwLHIpOi1NYXRoLnBvdygxMCwtcikvKG8+PWZ6PzEwOm8+PW16PzU6bz49Z3o/MjoxKX1mdW5jdGlvbiB5eih0LGUsbil7dmFyIGk9TWF0aC5hYnMoZS10KS9NYXRoLm1heCgwLG4pLHI9TWF0aC5wb3coMTAsTWF0aC5mbG9vcihNYXRoLmxvZyhpKS9NYXRoLkxOMTApKSxvPWkvcjtyZXR1cm4gbz49Zno/cio9MTA6bz49bXo/cio9NTpvPj1neiYmKHIqPTIpLGU8dD8tcjpyfWZ1bmN0aW9uIHZ6KHQpe3JldHVybiBNYXRoLmNlaWwoTWF0aC5sb2codC5sZW5ndGgpL01hdGguTE4yKSsxfWZ1bmN0aW9uIGJ6KHQsZSxuKXtpZihudWxsPT1uJiYobj1yeiksaT10Lmxlbmd0aCl7aWYoKGU9K2UpPD0wfHxpPDIpcmV0dXJuK24odFswXSwwLHQpO2lmKGU+PTEpcmV0dXJuK24odFtpLTFdLGktMSx0KTt2YXIgaSxyPShpLTEpKmUsbz1NYXRoLmZsb29yKHIpLGE9K24odFtvXSxvLHQpO3JldHVybiBhKygrbih0W28rMV0sbysxLHQpLWEpKihyLW8pfX1mdW5jdGlvbiB4eih0LGUpe3ZhciBuLGkscj10Lmxlbmd0aCxvPS0xO2lmKG51bGw9PWUpe2Zvcig7KytvPHI7KWlmKG51bGwhPShuPXRbb10pJiZuPj1uKWZvcihpPW47KytvPHI7KW51bGwhPShuPXRbb10pJiZpPm4mJihpPW4pfWVsc2UgZm9yKDsrK288cjspaWYobnVsbCE9KG49ZSh0W29dLG8sdCkpJiZuPj1uKWZvcihpPW47KytvPHI7KW51bGwhPShuPWUodFtvXSxvLHQpKSYmaT5uJiYoaT1uKTtyZXR1cm4gaX1mdW5jdGlvbiB3eih0KXtpZighKHI9dC5sZW5ndGgpKXJldHVybltdO2Zvcih2YXIgZT0tMSxuPXh6KHQsU3opLGk9bmV3IEFycmF5KG4pOysrZTxuOylmb3IodmFyIHIsbz0tMSxhPWlbZV09bmV3IEFycmF5KHIpOysrbzxyOylhW29dPXRbb11bZV07cmV0dXJuIGl9ZnVuY3Rpb24gU3oodCl7cmV0dXJuIHQubGVuZ3RofXZhciBNej1BcnJheS5wcm90b3R5cGUuc2xpY2U7ZnVuY3Rpb24gRXoodCl7cmV0dXJuIHR9dmFyIFR6PTFlLTY7ZnVuY3Rpb24gQ3oodCl7cmV0dXJuInRyYW5zbGF0ZSgiKyh0Ky41KSsiLDApIn1mdW5jdGlvbiBBeih0KXtyZXR1cm4idHJhbnNsYXRlKDAsIisodCsuNSkrIikifWZ1bmN0aW9uIGt6KHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4rdChlKX19ZnVuY3Rpb24gTHoodCl7dmFyIGU9TWF0aC5tYXgoMCx0LmJhbmR3aWR0aCgpLTEpLzI7cmV0dXJuIHQucm91bmQoKSYmKGU9TWF0aC5yb3VuZChlKSksZnVuY3Rpb24obil7cmV0dXJuK3QobikrZX19ZnVuY3Rpb24gUHooKXtyZXR1cm4hdGhpcy5fX2F4aXN9ZnVuY3Rpb24gTnoodCxlKXt2YXIgbj1bXSxpPW51bGwscj1udWxsLG89NixhPTYscz0zLGw9MT09PXR8fDQ9PT10Py0xOjEsYz00PT09dHx8Mj09PXQ/IngiOiJ5Iix1PTE9PT10fHwzPT09dD9DejpBejtmdW5jdGlvbiBoKGgpe3ZhciBkPW51bGw9PWk/ZS50aWNrcz9lLnRpY2tzLmFwcGx5KGUsbik6ZS5kb21haW4oKTppLHA9bnVsbD09cj9lLnRpY2tGb3JtYXQ/ZS50aWNrRm9ybWF0LmFwcGx5KGUsbik6RXo6cixmPU1hdGgubWF4KG8sMCkrcyxtPWUucmFuZ2UoKSxnPSttWzBdKy41LF89K21bbS5sZW5ndGgtMV0rLjUseT0oZS5iYW5kd2lkdGg/THo6a3opKGUuY29weSgpKSx2PWguc2VsZWN0aW9uP2guc2VsZWN0aW9uKCk6aCxiPXYuc2VsZWN0QWxsKCIuZG9tYWluIikuZGF0YShbbnVsbF0pLHg9di5zZWxlY3RBbGwoIi50aWNrIikuZGF0YShkLGUpLm9yZGVyKCksdz14LmV4aXQoKSxTPXguZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsInRpY2siKSxNPXguc2VsZWN0KCJsaW5lIiksRT14LnNlbGVjdCgidGV4dCIpO2I9Yi5tZXJnZShiLmVudGVyKCkuaW5zZXJ0KCJwYXRoIiwiLnRpY2siKS5hdHRyKCJjbGFzcyIsImRvbWFpbiIpLmF0dHIoInN0cm9rZSIsIiMwMDAiKSkseD14Lm1lcmdlKFMpLE09TS5tZXJnZShTLmFwcGVuZCgibGluZSIpLmF0dHIoInN0cm9rZSIsIiMwMDAiKS5hdHRyKGMrIjIiLGwqbykpLEU9RS5tZXJnZShTLmFwcGVuZCgidGV4dCIpLmF0dHIoImZpbGwiLCIjMDAwIikuYXR0cihjLGwqZikuYXR0cigiZHkiLDE9PT10PyIwZW0iOjM9PT10PyIwLjcxZW0iOiIwLjMyZW0iKSksaCE9PXYmJihiPWIudHJhbnNpdGlvbihoKSx4PXgudHJhbnNpdGlvbihoKSxNPU0udHJhbnNpdGlvbihoKSxFPUUudHJhbnNpdGlvbihoKSx3PXcudHJhbnNpdGlvbihoKS5hdHRyKCJvcGFjaXR5IixUeikuYXR0cigidHJhbnNmb3JtIiwoZnVuY3Rpb24odCl7cmV0dXJuIGlzRmluaXRlKHQ9eSh0KSk/dSh0KTp0aGlzLmdldEF0dHJpYnV0ZSgidHJhbnNmb3JtIil9KSksUy5hdHRyKCJvcGFjaXR5IixUeikuYXR0cigidHJhbnNmb3JtIiwoZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5wYXJlbnROb2RlLl9fYXhpcztyZXR1cm4gdShlJiZpc0Zpbml0ZShlPWUodCkpP2U6eSh0KSl9KSkpLHcucmVtb3ZlKCksYi5hdHRyKCJkIiw0PT09dHx8Mj09dD8iTSIrbCphKyIsIitnKyJIMC41ViIrXysiSCIrbCphOiJNIitnKyIsIitsKmErIlYwLjVIIitfKyJWIitsKmEpLHguYXR0cigib3BhY2l0eSIsMSkuYXR0cigidHJhbnNmb3JtIiwoZnVuY3Rpb24odCl7cmV0dXJuIHUoeSh0KSl9KSksTS5hdHRyKGMrIjIiLGwqbyksRS5hdHRyKGMsbCpmKS50ZXh0KHApLHYuZmlsdGVyKFB6KS5hdHRyKCJmaWxsIiwibm9uZSIpLmF0dHIoImZvbnQtc2l6ZSIsMTApLmF0dHIoImZvbnQtZmFtaWx5Iiwic2Fucy1zZXJpZiIpLmF0dHIoInRleHQtYW5jaG9yIiwyPT09dD8ic3RhcnQiOjQ9PT10PyJlbmQiOiJtaWRkbGUiKSx2LmVhY2goKGZ1bmN0aW9uKCl7dGhpcy5fX2F4aXM9eX0pKX1yZXR1cm4gaC5zY2FsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10LGgpOmV9LGgudGlja3M9ZnVuY3Rpb24oKXtyZXR1cm4gbj1Nei5jYWxsKGFyZ3VtZW50cyksaH0saC50aWNrQXJndW1lbnRzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPW51bGw9PXQ/W106TXouY2FsbCh0KSxoKTpuLnNsaWNlKCl9LGgudGlja1ZhbHVlcz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT1udWxsPT10P251bGw6TXouY2FsbCh0KSxoKTppJiZpLnNsaWNlKCl9LGgudGlja0Zvcm1hdD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj10LGgpOnJ9LGgudGlja1NpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89YT0rdCxoKTpvfSxoLnRpY2tTaXplSW5uZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89K3QsaCk6b30saC50aWNrU2l6ZU91dGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPSt0LGgpOmF9LGgudGlja1BhZGRpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9K3QsaCk6c30saH12YXIgSXo9e3ZhbHVlOmZ1bmN0aW9uKCl7fX07ZnVuY3Rpb24gUnooKXtmb3IodmFyIHQsZT0wLG49YXJndW1lbnRzLmxlbmd0aCxpPXt9O2U8bjsrK2Upe2lmKCEodD1hcmd1bWVudHNbZV0rIiIpfHx0IGluIGl8fC9bXHMuXS8udGVzdCh0KSl0aHJvdyBuZXcgRXJyb3IoImlsbGVnYWwgdHlwZTogIit0KTtpW3RdPVtdfXJldHVybiBuZXcgT3ooaSl9ZnVuY3Rpb24gT3oodCl7dGhpcy5fPXR9ZnVuY3Rpb24genoodCxlKXtyZXR1cm4gdC50cmltKCkuc3BsaXQoL158XHMrLykubWFwKChmdW5jdGlvbih0KXt2YXIgbj0iIixpPXQuaW5kZXhPZigiLiIpO2lmKGk+PTAmJihuPXQuc2xpY2UoaSsxKSx0PXQuc2xpY2UoMCxpKSksdCYmIWUuaGFzT3duUHJvcGVydHkodCkpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHR5cGU6ICIrdCk7cmV0dXJue3R5cGU6dCxuYW1lOm59fSkpfWZ1bmN0aW9uIER6KHQsZSl7Zm9yKHZhciBuLGk9MCxyPXQubGVuZ3RoO2k8cjsrK2kpaWYoKG49dFtpXSkubmFtZT09PWUpcmV0dXJuIG4udmFsdWV9ZnVuY3Rpb24gQnoodCxlLG4pe2Zvcih2YXIgaT0wLHI9dC5sZW5ndGg7aTxyOysraSlpZih0W2ldLm5hbWU9PT1lKXt0W2ldPUl6LHQ9dC5zbGljZSgwLGkpLmNvbmNhdCh0LnNsaWNlKGkrMSkpO2JyZWFrfXJldHVybiBudWxsIT1uJiZ0LnB1c2goe25hbWU6ZSx2YWx1ZTpufSksdH1Pei5wcm90b3R5cGU9UnoucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpPeixvbjpmdW5jdGlvbih0LGUpe3ZhciBuLGk9dGhpcy5fLHI9enoodCsiIixpKSxvPS0xLGE9ci5sZW5ndGg7aWYoIShhcmd1bWVudHMubGVuZ3RoPDIpKXtpZihudWxsIT1lJiYiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgY2FsbGJhY2s6ICIrZSk7Zm9yKDsrK288YTspaWYobj0odD1yW29dKS50eXBlKWlbbl09QnooaVtuXSx0Lm5hbWUsZSk7ZWxzZSBpZihudWxsPT1lKWZvcihuIGluIGkpaVtuXT1CeihpW25dLHQubmFtZSxudWxsKTtyZXR1cm4gdGhpc31mb3IoOysrbzxhOylpZigobj0odD1yW29dKS50eXBlKSYmKG49RHooaVtuXSx0Lm5hbWUpKSlyZXR1cm4gbn0sY29weTpmdW5jdGlvbigpe3ZhciB0PXt9LGU9dGhpcy5fO2Zvcih2YXIgbiBpbiBlKXRbbl09ZVtuXS5zbGljZSgpO3JldHVybiBuZXcgT3oodCl9LGNhbGw6ZnVuY3Rpb24odCxlKXtpZigobj1hcmd1bWVudHMubGVuZ3RoLTIpPjApZm9yKHZhciBuLGkscj1uZXcgQXJyYXkobiksbz0wO288bjsrK28pcltvXT1hcmd1bWVudHNbbysyXTtpZighdGhpcy5fLmhhc093blByb3BlcnR5KHQpKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0eXBlOiAiK3QpO2ZvcihvPTAsbj0oaT10aGlzLl9bdF0pLmxlbmd0aDtvPG47KytvKWlbb10udmFsdWUuYXBwbHkoZSxyKX0sYXBwbHk6ZnVuY3Rpb24odCxlLG4pe2lmKCF0aGlzLl8uaGFzT3duUHJvcGVydHkodCkpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHR5cGU6ICIrdCk7Zm9yKHZhciBpPXRoaXMuX1t0XSxyPTAsbz1pLmxlbmd0aDtyPG87KytyKWlbcl0udmFsdWUuYXBwbHkoZSxuKX19O3ZhciBIej0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIsRno9e3N2ZzoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHhodG1sOkh6LHhsaW5rOiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIix4bWw6Imh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvIn07ZnVuY3Rpb24gVnoodCl7dmFyIGU9dCs9IiIsbj1lLmluZGV4T2YoIjoiKTtyZXR1cm4gbj49MCYmInhtbG5zIiE9PShlPXQuc2xpY2UoMCxuKSkmJih0PXQuc2xpY2UobisxKSksRnouaGFzT3duUHJvcGVydHkoZSk/e3NwYWNlOkZ6W2VdLGxvY2FsOnR9OnR9ZnVuY3Rpb24gVXoodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vd25lckRvY3VtZW50LG49dGhpcy5uYW1lc3BhY2VVUkk7cmV0dXJuIG49PT1IeiYmZS5kb2N1bWVudEVsZW1lbnQubmFtZXNwYWNlVVJJPT09SHo/ZS5jcmVhdGVFbGVtZW50KHQpOmUuY3JlYXRlRWxlbWVudE5TKG4sdCl9fWZ1bmN0aW9uIGp6KHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0aGlzLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHQuc3BhY2UsdC5sb2NhbCl9fWZ1bmN0aW9uIEd6KHQpe3ZhciBlPVZ6KHQpO3JldHVybihlLmxvY2FsP2p6OlV6KShlKX1mdW5jdGlvbiBXeigpe31mdW5jdGlvbiBxeih0KXtyZXR1cm4gbnVsbD09dD9XejpmdW5jdGlvbigpe3JldHVybiB0aGlzLnF1ZXJ5U2VsZWN0b3IodCl9fWZ1bmN0aW9uIFl6KCl7cmV0dXJuW119ZnVuY3Rpb24gWHoodCl7cmV0dXJuIG51bGw9PXQ/WXo6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5xdWVyeVNlbGVjdG9yQWxsKHQpfX1mdW5jdGlvbiAkeih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXRjaGVzKHQpfX1mdW5jdGlvbiBLeih0KXtyZXR1cm4gbmV3IEFycmF5KHQubGVuZ3RoKX1mdW5jdGlvbiBaeih0LGUpe3RoaXMub3duZXJEb2N1bWVudD10Lm93bmVyRG9jdW1lbnQsdGhpcy5uYW1lc3BhY2VVUkk9dC5uYW1lc3BhY2VVUkksdGhpcy5fbmV4dD1udWxsLHRoaXMuX3BhcmVudD10LHRoaXMuX19kYXRhX189ZX1aei5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOlp6LGFwcGVuZENoaWxkOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYXJlbnQuaW5zZXJ0QmVmb3JlKHQsdGhpcy5fbmV4dCl9LGluc2VydEJlZm9yZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9wYXJlbnQuaW5zZXJ0QmVmb3JlKHQsZSl9LHF1ZXJ5U2VsZWN0b3I6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3BhcmVudC5xdWVyeVNlbGVjdG9yKHQpfSxxdWVyeVNlbGVjdG9yQWxsOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYXJlbnQucXVlcnlTZWxlY3RvckFsbCh0KX19O2Z1bmN0aW9uIEp6KHQsZSxuLGkscixvKXtmb3IodmFyIGEscz0wLGw9ZS5sZW5ndGgsYz1vLmxlbmd0aDtzPGM7KytzKShhPWVbc10pPyhhLl9fZGF0YV9fPW9bc10saVtzXT1hKTpuW3NdPW5ldyBaeih0LG9bc10pO2Zvcig7czxsOysrcykoYT1lW3NdKSYmKHJbc109YSl9ZnVuY3Rpb24gUXoodCxlLG4saSxyLG8sYSl7dmFyIHMsbCxjLHU9e30saD1lLmxlbmd0aCxkPW8ubGVuZ3RoLHA9bmV3IEFycmF5KGgpO2ZvcihzPTA7czxoOysrcykobD1lW3NdKSYmKHBbc109Yz0iJCIrYS5jYWxsKGwsbC5fX2RhdGFfXyxzLGUpLGMgaW4gdT9yW3NdPWw6dVtjXT1sKTtmb3Iocz0wO3M8ZDsrK3MpKGw9dVtjPSIkIithLmNhbGwodCxvW3NdLHMsbyldKT8oaVtzXT1sLGwuX19kYXRhX189b1tzXSx1W2NdPW51bGwpOm5bc109bmV3IFp6KHQsb1tzXSk7Zm9yKHM9MDtzPGg7KytzKShsPWVbc10pJiZ1W3Bbc11dPT09bCYmKHJbc109bCl9ZnVuY3Rpb24gdEQodCxlKXtyZXR1cm4gdDxlPy0xOnQ+ZT8xOnQ+PWU/MDpOYU59ZnVuY3Rpb24gZUQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGUodCl9fWZ1bmN0aW9uIG5EKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMucmVtb3ZlQXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKX19ZnVuY3Rpb24gaUQodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnNldEF0dHJpYnV0ZSh0LGUpfX1mdW5jdGlvbiByRCh0LGUpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsLGUpfX1mdW5jdGlvbiBvRCh0LGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciBuPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PW4/dGhpcy5yZW1vdmVBdHRyaWJ1dGUodCk6dGhpcy5zZXRBdHRyaWJ1dGUodCxuKX19ZnVuY3Rpb24gYUQodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1uP3RoaXMucmVtb3ZlQXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKTp0aGlzLnNldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCxuKX19ZnVuY3Rpb24gc0QodCl7cmV0dXJuIHQub3duZXJEb2N1bWVudCYmdC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3fHx0LmRvY3VtZW50JiZ0fHx0LmRlZmF1bHRWaWV3fWZ1bmN0aW9uIGxEKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkodCl9fWZ1bmN0aW9uIGNEKHQsZSxuKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnN0eWxlLnNldFByb3BlcnR5KHQsZSxuKX19ZnVuY3Rpb24gdUQodCxlLG4pe3JldHVybiBmdW5jdGlvbigpe3ZhciBpPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PWk/dGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0KTp0aGlzLnN0eWxlLnNldFByb3BlcnR5KHQsaSxuKX19ZnVuY3Rpb24gaEQodCxlKXtyZXR1cm4gdC5zdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKGUpfHxzRCh0KS5nZXRDb21wdXRlZFN0eWxlKHQsbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZShlKX1mdW5jdGlvbiBkRCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtkZWxldGUgdGhpc1t0XX19ZnVuY3Rpb24gcEQodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzW3RdPWV9fWZ1bmN0aW9uIGZEKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7bnVsbD09bj9kZWxldGUgdGhpc1t0XTp0aGlzW3RdPW59fWZ1bmN0aW9uIG1EKHQpe3JldHVybiB0LnRyaW0oKS5zcGxpdCgvXnxccysvKX1mdW5jdGlvbiBnRCh0KXtyZXR1cm4gdC5jbGFzc0xpc3R8fG5ldyBfRCh0KX1mdW5jdGlvbiBfRCh0KXt0aGlzLl9ub2RlPXQsdGhpcy5fbmFtZXM9bUQodC5nZXRBdHRyaWJ1dGUoImNsYXNzIil8fCIiKX1mdW5jdGlvbiB5RCh0LGUpe2Zvcih2YXIgbj1nRCh0KSxpPS0xLHI9ZS5sZW5ndGg7KytpPHI7KW4uYWRkKGVbaV0pfWZ1bmN0aW9uIHZEKHQsZSl7Zm9yKHZhciBuPWdEKHQpLGk9LTEscj1lLmxlbmd0aDsrK2k8cjspbi5yZW1vdmUoZVtpXSl9ZnVuY3Rpb24gYkQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7eUQodGhpcyx0KX19ZnVuY3Rpb24geEQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dkQodGhpcyx0KX19ZnVuY3Rpb24gd0QodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXsoZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk/eUQ6dkQpKHRoaXMsdCl9fWZ1bmN0aW9uIFNEKCl7dGhpcy50ZXh0Q29udGVudD0iIn1mdW5jdGlvbiBNRCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnRleHRDb250ZW50PXR9fWZ1bmN0aW9uIEVEKHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMudGV4dENvbnRlbnQ9bnVsbD09ZT8iIjplfX1mdW5jdGlvbiBURCgpe3RoaXMuaW5uZXJIVE1MPSIifWZ1bmN0aW9uIENEKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuaW5uZXJIVE1MPXR9fWZ1bmN0aW9uIEFEKHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMuaW5uZXJIVE1MPW51bGw9PWU/IiI6ZX19ZnVuY3Rpb24ga0QoKXt0aGlzLm5leHRTaWJsaW5nJiZ0aGlzLnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQodGhpcyl9ZnVuY3Rpb24gTEQoKXt0aGlzLnByZXZpb3VzU2libGluZyYmdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0aGlzLHRoaXMucGFyZW50Tm9kZS5maXJzdENoaWxkKX1mdW5jdGlvbiBQRCgpe3JldHVybiBudWxsfWZ1bmN0aW9uIE5EKCl7dmFyIHQ9dGhpcy5wYXJlbnROb2RlO3QmJnQucmVtb3ZlQ2hpbGQodGhpcyl9ZnVuY3Rpb24gSUQoKXt2YXIgdD10aGlzLmNsb25lTm9kZSghMSksZT10aGlzLnBhcmVudE5vZGU7cmV0dXJuIGU/ZS5pbnNlcnRCZWZvcmUodCx0aGlzLm5leHRTaWJsaW5nKTp0fWZ1bmN0aW9uIFJEKCl7dmFyIHQ9dGhpcy5jbG9uZU5vZGUoITApLGU9dGhpcy5wYXJlbnROb2RlO3JldHVybiBlP2UuaW5zZXJ0QmVmb3JlKHQsdGhpcy5uZXh0U2libGluZyk6dH1fRC5wcm90b3R5cGU9e2FkZDpmdW5jdGlvbih0KXt0aGlzLl9uYW1lcy5pbmRleE9mKHQpPDAmJih0aGlzLl9uYW1lcy5wdXNoKHQpLHRoaXMuX25vZGUuc2V0QXR0cmlidXRlKCJjbGFzcyIsdGhpcy5fbmFtZXMuam9pbigiICIpKSl9LHJlbW92ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9uYW1lcy5pbmRleE9mKHQpO2U+PTAmJih0aGlzLl9uYW1lcy5zcGxpY2UoZSwxKSx0aGlzLl9ub2RlLnNldEF0dHJpYnV0ZSgiY2xhc3MiLHRoaXMuX25hbWVzLmpvaW4oIiAiKSkpfSxjb250YWluczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fbmFtZXMuaW5kZXhPZih0KT49MH19O3ZhciBPRD17fSx6RD1udWxsOyJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQmJigib25tb3VzZWVudGVyImluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudHx8KE9EPXttb3VzZWVudGVyOiJtb3VzZW92ZXIiLG1vdXNlbGVhdmU6Im1vdXNlb3V0In0pKTtmdW5jdGlvbiBERCh0LGUsbil7cmV0dXJuIHQ9QkQodCxlLG4pLGZ1bmN0aW9uKGUpe3ZhciBuPWUucmVsYXRlZFRhcmdldDtuJiYobj09PXRoaXN8fDgmbi5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbih0aGlzKSl8fHQuY2FsbCh0aGlzLGUpfX1mdW5jdGlvbiBCRCh0LGUsbil7cmV0dXJuIGZ1bmN0aW9uKGkpe3ZhciByPXpEO3pEPWk7dHJ5e3QuY2FsbCh0aGlzLHRoaXMuX19kYXRhX18sZSxuKX1maW5hbGx5e3pEPXJ9fX1mdW5jdGlvbiBIRCh0KXtyZXR1cm4gdC50cmltKCkuc3BsaXQoL158XHMrLykubWFwKChmdW5jdGlvbih0KXt2YXIgZT0iIixuPXQuaW5kZXhPZigiLiIpO3JldHVybiBuPj0wJiYoZT10LnNsaWNlKG4rMSksdD10LnNsaWNlKDAsbikpLHt0eXBlOnQsbmFtZTplfX0pKX1mdW5jdGlvbiBGRCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9fb247aWYoZSl7Zm9yKHZhciBuLGk9MCxyPS0xLG89ZS5sZW5ndGg7aTxvOysraSluPWVbaV0sdC50eXBlJiZuLnR5cGUhPT10LnR5cGV8fG4ubmFtZSE9PXQubmFtZT9lWysrcl09bjp0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIobi50eXBlLG4ubGlzdGVuZXIsbi5jYXB0dXJlKTsrK3I/ZS5sZW5ndGg9cjpkZWxldGUgdGhpcy5fX29ufX19ZnVuY3Rpb24gVkQodCxlLG4pe3ZhciBpPU9ELmhhc093blByb3BlcnR5KHQudHlwZSk/REQ6QkQ7cmV0dXJuIGZ1bmN0aW9uKHIsbyxhKXt2YXIgcyxsPXRoaXMuX19vbixjPWkoZSxvLGEpO2lmKGwpZm9yKHZhciB1PTAsaD1sLmxlbmd0aDt1PGg7Kyt1KWlmKChzPWxbdV0pLnR5cGU9PT10LnR5cGUmJnMubmFtZT09PXQubmFtZSlyZXR1cm4gdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKHMudHlwZSxzLmxpc3RlbmVyLHMuY2FwdHVyZSksdGhpcy5hZGRFdmVudExpc3RlbmVyKHMudHlwZSxzLmxpc3RlbmVyPWMscy5jYXB0dXJlPW4pLHZvaWQocy52YWx1ZT1lKTt0aGlzLmFkZEV2ZW50TGlzdGVuZXIodC50eXBlLGMsbikscz17dHlwZTp0LnR5cGUsbmFtZTp0Lm5hbWUsdmFsdWU6ZSxsaXN0ZW5lcjpjLGNhcHR1cmU6bn0sbD9sLnB1c2gocyk6dGhpcy5fX29uPVtzXX19ZnVuY3Rpb24gVUQodCxlLG4pe3ZhciBpPXNEKHQpLHI9aS5DdXN0b21FdmVudDsiZnVuY3Rpb24iPT10eXBlb2Ygcj9yPW5ldyByKGUsbik6KHI9aS5kb2N1bWVudC5jcmVhdGVFdmVudCgiRXZlbnQiKSxuPyhyLmluaXRFdmVudChlLG4uYnViYmxlcyxuLmNhbmNlbGFibGUpLHIuZGV0YWlsPW4uZGV0YWlsKTpyLmluaXRFdmVudChlLCExLCExKSksdC5kaXNwYXRjaEV2ZW50KHIpfWZ1bmN0aW9uIGpEKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIFVEKHRoaXMsdCxlKX19ZnVuY3Rpb24gR0QodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gVUQodGhpcyx0LGUuYXBwbHkodGhpcyxhcmd1bWVudHMpKX19dmFyIFdEPVtudWxsXTtmdW5jdGlvbiBxRCh0LGUpe3RoaXMuX2dyb3Vwcz10LHRoaXMuX3BhcmVudHM9ZX1mdW5jdGlvbiBZRCgpe3JldHVybiBuZXcgcUQoW1tkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRdXSxXRCl9ZnVuY3Rpb24gWEQodCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0P25ldyBxRChbW2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodCldXSxbZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50XSk6bmV3IHFEKFtbdF1dLFdEKX1mdW5jdGlvbiAkRCh0KXt2YXIgZT0oZnVuY3Rpb24gbigpe2Zvcih2YXIgdCxlPXpEO3Q9ZS5zb3VyY2VFdmVudDspZT10O3JldHVybiBlfSkoKTtyZXR1cm4gZS5jaGFuZ2VkVG91Y2hlcyYmKGU9ZS5jaGFuZ2VkVG91Y2hlc1swXSksKGZ1bmN0aW9uIGkodCxlKXt2YXIgbj10Lm93bmVyU1ZHRWxlbWVudHx8dDtpZihuLmNyZWF0ZVNWR1BvaW50KXt2YXIgaT1uLmNyZWF0ZVNWR1BvaW50KCk7cmV0dXJuIGkueD1lLmNsaWVudFgsaS55PWUuY2xpZW50WSxbKGk9aS5tYXRyaXhUcmFuc2Zvcm0odC5nZXRTY3JlZW5DVE0oKS5pbnZlcnNlKCkpKS54LGkueV19dmFyIHI9dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm5bZS5jbGllbnRYLXIubGVmdC10LmNsaWVudExlZnQsZS5jbGllbnRZLXIudG9wLXQuY2xpZW50VG9wXX0pKHQsZSl9ZnVuY3Rpb24gS0QoKXt6RC5wcmV2ZW50RGVmYXVsdCgpLHpELnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpfWZ1bmN0aW9uIFpEKHQpe3ZhciBlPXQuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LG49WEQodCkub24oImRyYWdzdGFydC5kcmFnIixLRCwhMCk7Im9uc2VsZWN0c3RhcnQiaW4gZT9uLm9uKCJzZWxlY3RzdGFydC5kcmFnIixLRCwhMCk6KGUuX19ub3NlbGVjdD1lLnN0eWxlLk1velVzZXJTZWxlY3QsZS5zdHlsZS5Nb3pVc2VyU2VsZWN0PSJub25lIil9ZnVuY3Rpb24gSkQodCxlKXt2YXIgbj10LmRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxpPVhEKHQpLm9uKCJkcmFnc3RhcnQuZHJhZyIsbnVsbCk7ZSYmKGkub24oImNsaWNrLmRyYWciLEtELCEwKSxzZXRUaW1lb3V0KChmdW5jdGlvbigpe2kub24oImNsaWNrLmRyYWciLG51bGwpfSksMCkpLCJvbnNlbGVjdHN0YXJ0ImluIG4/aS5vbigic2VsZWN0c3RhcnQuZHJhZyIsbnVsbCk6KG4uc3R5bGUuTW96VXNlclNlbGVjdD1uLl9fbm9zZWxlY3QsZGVsZXRlIG4uX19ub3NlbGVjdCl9ZnVuY3Rpb24gUUQodCxlLG4pe3QucHJvdG90eXBlPWUucHJvdG90eXBlPW4sbi5jb25zdHJ1Y3Rvcj10fWZ1bmN0aW9uIHRCKHQsZSl7dmFyIG49T2JqZWN0LmNyZWF0ZSh0LnByb3RvdHlwZSk7Zm9yKHZhciBpIGluIGUpbltpXT1lW2ldO3JldHVybiBufWZ1bmN0aW9uIGVCKCl7fXFELnByb3RvdHlwZT1ZRC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOnFELHNlbGVjdDpmdW5jdGlvbiBuQih0KXsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9cXoodCkpO2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj1lLmxlbmd0aCxpPW5ldyBBcnJheShuKSxyPTA7cjxuOysrcilmb3IodmFyIG8sYSxzPWVbcl0sbD1zLmxlbmd0aCxjPWlbcl09bmV3IEFycmF5KGwpLHU9MDt1PGw7Kyt1KShvPXNbdV0pJiYoYT10LmNhbGwobyxvLl9fZGF0YV9fLHUscykpJiYoIl9fZGF0YV9fImluIG8mJihhLl9fZGF0YV9fPW8uX19kYXRhX18pLGNbdV09YSk7cmV0dXJuIG5ldyBxRChpLHRoaXMuX3BhcmVudHMpfSxzZWxlY3RBbGw6ZnVuY3Rpb24gaUIodCl7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PVh6KHQpKTtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLG49ZS5sZW5ndGgsaT1bXSxyPVtdLG89MDtvPG47KytvKWZvcih2YXIgYSxzPWVbb10sbD1zLmxlbmd0aCxjPTA7YzxsOysrYykoYT1zW2NdKSYmKGkucHVzaCh0LmNhbGwoYSxhLl9fZGF0YV9fLGMscykpLHIucHVzaChhKSk7cmV0dXJuIG5ldyBxRChpLHIpfSxmaWx0ZXI6ZnVuY3Rpb24gckIodCl7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PSR6KHQpKTtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLG49ZS5sZW5ndGgsaT1uZXcgQXJyYXkobikscj0wO3I8bjsrK3IpZm9yKHZhciBvLGE9ZVtyXSxzPWEubGVuZ3RoLGw9aVtyXT1bXSxjPTA7YzxzOysrYykobz1hW2NdKSYmdC5jYWxsKG8sby5fX2RhdGFfXyxjLGEpJiZsLnB1c2gobyk7cmV0dXJuIG5ldyBxRChpLHRoaXMuX3BhcmVudHMpfSxkYXRhOmZ1bmN0aW9uIG9CKHQsZSl7aWYoIXQpcmV0dXJuIGY9bmV3IEFycmF5KHRoaXMuc2l6ZSgpKSx1PS0xLHRoaXMuZWFjaCgoZnVuY3Rpb24odCl7ZlsrK3VdPXR9KSksZjt2YXIgbj1lP1F6Okp6LGk9dGhpcy5fcGFyZW50cyxyPXRoaXMuX2dyb3VwczsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9KGZ1bmN0aW9uIG8odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fSkodCkpO2Zvcih2YXIgYT1yLmxlbmd0aCxzPW5ldyBBcnJheShhKSxsPW5ldyBBcnJheShhKSxjPW5ldyBBcnJheShhKSx1PTA7dTxhOysrdSl7dmFyIGg9aVt1XSxkPXJbdV0scD1kLmxlbmd0aCxmPXQuY2FsbChoLGgmJmguX19kYXRhX18sdSxpKSxtPWYubGVuZ3RoLGc9bFt1XT1uZXcgQXJyYXkobSksXz1zW3VdPW5ldyBBcnJheShtKTtuKGgsZCxnLF8sY1t1XT1uZXcgQXJyYXkocCksZixlKTtmb3IodmFyIHksdixiPTAseD0wO2I8bTsrK2IpaWYoeT1nW2JdKXtmb3IoYj49eCYmKHg9YisxKTshKHY9X1t4XSkmJisreDxtOyk7eS5fbmV4dD12fHxudWxsfX1yZXR1cm4ocz1uZXcgcUQocyxpKSkuX2VudGVyPWwscy5fZXhpdD1jLHN9LGVudGVyOmZ1bmN0aW9uIGFCKCl7cmV0dXJuIG5ldyBxRCh0aGlzLl9lbnRlcnx8dGhpcy5fZ3JvdXBzLm1hcChLeiksdGhpcy5fcGFyZW50cyl9LGV4aXQ6ZnVuY3Rpb24gc0IoKXtyZXR1cm4gbmV3IHFEKHRoaXMuX2V4aXR8fHRoaXMuX2dyb3Vwcy5tYXAoS3opLHRoaXMuX3BhcmVudHMpfSxqb2luOmZ1bmN0aW9uIGxCKHQsZSxuKXt2YXIgaT10aGlzLmVudGVyKCkscj10aGlzLG89dGhpcy5leGl0KCk7cmV0dXJuIGk9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dChpKTppLmFwcGVuZCh0KyIiKSxudWxsIT1lJiYocj1lKHIpKSxudWxsPT1uP28ucmVtb3ZlKCk6bihvKSxpJiZyP2kubWVyZ2Uocikub3JkZXIoKTpyfSxtZXJnZTpmdW5jdGlvbiBjQih0KXtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLG49dC5fZ3JvdXBzLGk9ZS5sZW5ndGgscj1NYXRoLm1pbihpLG4ubGVuZ3RoKSxvPW5ldyBBcnJheShpKSxhPTA7YTxyOysrYSlmb3IodmFyIHMsbD1lW2FdLGM9blthXSx1PWwubGVuZ3RoLGg9b1thXT1uZXcgQXJyYXkodSksZD0wO2Q8dTsrK2QpKHM9bFtkXXx8Y1tkXSkmJihoW2RdPXMpO2Zvcig7YTxpOysrYSlvW2FdPWVbYV07cmV0dXJuIG5ldyBxRChvLHRoaXMuX3BhcmVudHMpfSxvcmRlcjpmdW5jdGlvbiB1Qigpe2Zvcih2YXIgdD10aGlzLl9ncm91cHMsZT0tMSxuPXQubGVuZ3RoOysrZTxuOylmb3IodmFyIGkscj10W2VdLG89ci5sZW5ndGgtMSxhPXJbb107LS1vPj0wOykoaT1yW29dKSYmKGEmJjReaS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihhKSYmYS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShpLGEpLGE9aSk7cmV0dXJuIHRoaXN9LHNvcnQ6ZnVuY3Rpb24gaEIodCl7ZnVuY3Rpb24gZShlLG4pe3JldHVybiBlJiZuP3QoZS5fX2RhdGFfXyxuLl9fZGF0YV9fKTohZS0hbn10fHwodD10RCk7Zm9yKHZhciBuPXRoaXMuX2dyb3VwcyxpPW4ubGVuZ3RoLHI9bmV3IEFycmF5KGkpLG89MDtvPGk7KytvKXtmb3IodmFyIGEscz1uW29dLGw9cy5sZW5ndGgsYz1yW29dPW5ldyBBcnJheShsKSx1PTA7dTxsOysrdSkoYT1zW3VdKSYmKGNbdV09YSk7Yy5zb3J0KGUpfXJldHVybiBuZXcgcUQocix0aGlzLl9wYXJlbnRzKS5vcmRlcigpfSxjYWxsOmZ1bmN0aW9uIGRCKCl7dmFyIHQ9YXJndW1lbnRzWzBdO3JldHVybiBhcmd1bWVudHNbMF09dGhpcyx0LmFwcGx5KG51bGwsYXJndW1lbnRzKSx0aGlzfSxub2RlczpmdW5jdGlvbiBwQigpe3ZhciB0PW5ldyBBcnJheSh0aGlzLnNpemUoKSksZT0tMTtyZXR1cm4gdGhpcy5lYWNoKChmdW5jdGlvbigpe3RbKytlXT10aGlzfSkpLHR9LG5vZGU6ZnVuY3Rpb24gZkIoKXtmb3IodmFyIHQ9dGhpcy5fZ3JvdXBzLGU9MCxuPXQubGVuZ3RoO2U8bjsrK2UpZm9yKHZhciBpPXRbZV0scj0wLG89aS5sZW5ndGg7cjxvOysrcil7dmFyIGE9aVtyXTtpZihhKXJldHVybiBhfXJldHVybiBudWxsfSxzaXplOmZ1bmN0aW9uIG1CKCl7dmFyIHQ9MDtyZXR1cm4gdGhpcy5lYWNoKChmdW5jdGlvbigpeysrdH0pKSx0fSxlbXB0eTpmdW5jdGlvbiBnQigpe3JldHVybiF0aGlzLm5vZGUoKX0sZWFjaDpmdW5jdGlvbiBfQih0KXtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLG49MCxpPWUubGVuZ3RoO248aTsrK24pZm9yKHZhciByLG89ZVtuXSxhPTAscz1vLmxlbmd0aDthPHM7KythKShyPW9bYV0pJiZ0LmNhbGwocixyLl9fZGF0YV9fLGEsbyk7cmV0dXJuIHRoaXN9LGF0dHI6ZnVuY3Rpb24geUIodCxlKXt2YXIgbj1Weih0KTtpZihhcmd1bWVudHMubGVuZ3RoPDIpe3ZhciBpPXRoaXMubm9kZSgpO3JldHVybiBuLmxvY2FsP2kuZ2V0QXR0cmlidXRlTlMobi5zcGFjZSxuLmxvY2FsKTppLmdldEF0dHJpYnV0ZShuKX1yZXR1cm4gdGhpcy5lYWNoKChudWxsPT1lP24ubG9jYWw/bkQ6ZUQ6ImZ1bmN0aW9uIj09dHlwZW9mIGU/bi5sb2NhbD9hRDpvRDpuLmxvY2FsP3JEOmlEKShuLGUpKX0sc3R5bGU6ZnVuY3Rpb24gdkIodCxlLG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPjE/dGhpcy5lYWNoKChudWxsPT1lP2xEOiJmdW5jdGlvbiI9PXR5cGVvZiBlP3VEOmNEKSh0LGUsbnVsbD09bj8iIjpuKSk6aEQodGhpcy5ub2RlKCksdCl9LHByb3BlcnR5OmZ1bmN0aW9uIGJCKHQsZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MT90aGlzLmVhY2goKG51bGw9PWU/ZEQ6ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZkQ6cEQpKHQsZSkpOnRoaXMubm9kZSgpW3RdfSxjbGFzc2VkOmZ1bmN0aW9uIHhCKHQsZSl7dmFyIG49bUQodCsiIik7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXtmb3IodmFyIGk9Z0QodGhpcy5ub2RlKCkpLHI9LTEsbz1uLmxlbmd0aDsrK3I8bzspaWYoIWkuY29udGFpbnMobltyXSkpcmV0dXJuITE7cmV0dXJuITB9cmV0dXJuIHRoaXMuZWFjaCgoImZ1bmN0aW9uIj09dHlwZW9mIGU/d0Q6ZT9iRDp4RCkobixlKSl9LHRleHQ6ZnVuY3Rpb24gd0IodCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKG51bGw9PXQ/U0Q6KCJmdW5jdGlvbiI9PXR5cGVvZiB0P0VEOk1EKSh0KSk6dGhpcy5ub2RlKCkudGV4dENvbnRlbnR9LGh0bWw6ZnVuY3Rpb24gU0IodCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKG51bGw9PXQ/VEQ6KCJmdW5jdGlvbiI9PXR5cGVvZiB0P0FEOkNEKSh0KSk6dGhpcy5ub2RlKCkuaW5uZXJIVE1MfSxyYWlzZTpmdW5jdGlvbiBNQigpe3JldHVybiB0aGlzLmVhY2goa0QpfSxsb3dlcjpmdW5jdGlvbiBFQigpe3JldHVybiB0aGlzLmVhY2goTEQpfSxhcHBlbmQ6ZnVuY3Rpb24gVEIodCl7dmFyIGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpHeih0KTtyZXR1cm4gdGhpcy5zZWxlY3QoKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXBwZW5kQ2hpbGQoZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfSkpfSxpbnNlcnQ6ZnVuY3Rpb24gQ0IodCxlKXt2YXIgbj0iZnVuY3Rpb24iPT10eXBlb2YgdD90Okd6KHQpLGk9bnVsbD09ZT9QRDoiZnVuY3Rpb24iPT10eXBlb2YgZT9lOnF6KGUpO3JldHVybiB0aGlzLnNlbGVjdCgoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbnNlcnRCZWZvcmUobi5hcHBseSh0aGlzLGFyZ3VtZW50cyksaS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fG51bGwpfSkpfSxyZW1vdmU6ZnVuY3Rpb24gQUIoKXtyZXR1cm4gdGhpcy5lYWNoKE5EKX0sY2xvbmU6ZnVuY3Rpb24ga0IodCl7cmV0dXJuIHRoaXMuc2VsZWN0KHQ/UkQ6SUQpfSxkYXR1bTpmdW5jdGlvbiBMQih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLnByb3BlcnR5KCJfX2RhdGFfXyIsdCk6dGhpcy5ub2RlKCkuX19kYXRhX199LG9uOmZ1bmN0aW9uIFBCKHQsZSxuKXt2YXIgaSxyLG89SEQodCsiIiksYT1vLmxlbmd0aDtpZighKGFyZ3VtZW50cy5sZW5ndGg8Mikpe2ZvcihzPWU/VkQ6RkQsbnVsbD09biYmKG49ITEpLGk9MDtpPGE7KytpKXRoaXMuZWFjaChzKG9baV0sZSxuKSk7cmV0dXJuIHRoaXN9dmFyIHM9dGhpcy5ub2RlKCkuX19vbjtpZihzKWZvcih2YXIgbCxjPTAsdT1zLmxlbmd0aDtjPHU7KytjKWZvcihpPTAsbD1zW2NdO2k8YTsrK2kpaWYoKHI9b1tpXSkudHlwZT09PWwudHlwZSYmci5uYW1lPT09bC5uYW1lKXJldHVybiBsLnZhbHVlfSxkaXNwYXRjaDpmdW5jdGlvbiBOQih0LGUpe3JldHVybiB0aGlzLmVhY2goKCJmdW5jdGlvbiI9PXR5cGVvZiBlP0dEOmpEKSh0LGUpKX19O3ZhciBJQj0uNyxSQj0xL0lCLE9CPSJcXHMqKFsrLV0/XFxkKylcXHMqIix6Qj0iXFxzKihbKy1dP1xcZCpcXC4/XFxkKyg/OltlRV1bKy1dP1xcZCspPylcXHMqIixEQj0iXFxzKihbKy1dP1xcZCpcXC4/XFxkKyg/OltlRV1bKy1dP1xcZCspPyklXFxzKiIsQkI9L14jKFswLTlhLWZdezMsOH0pJC8sSEI9bmV3IFJlZ0V4cCgiXnJnYlxcKCIrW09CLE9CLE9CXSsiXFwpJCIpLEZCPW5ldyBSZWdFeHAoIl5yZ2JcXCgiK1tEQixEQixEQl0rIlxcKSQiKSxWQj1uZXcgUmVnRXhwKCJecmdiYVxcKCIrW09CLE9CLE9CLHpCXSsiXFwpJCIpLFVCPW5ldyBSZWdFeHAoIl5yZ2JhXFwoIitbREIsREIsREIsekJdKyJcXCkkIiksakI9bmV3IFJlZ0V4cCgiXmhzbFxcKCIrW3pCLERCLERCXSsiXFwpJCIpLEdCPW5ldyBSZWdFeHAoIl5oc2xhXFwoIitbekIsREIsREIsekJdKyJcXCkkIiksV0I9e2FsaWNlYmx1ZToxNTc5MjM4MyxhbnRpcXVld2hpdGU6MTY0NDQzNzUsYXF1YTo2NTUzNSxhcXVhbWFyaW5lOjgzODg1NjQsYXp1cmU6MTU3OTQxNzUsYmVpZ2U6MTYxMTkyNjAsYmlzcXVlOjE2NzcwMjQ0LGJsYWNrOjAsYmxhbmNoZWRhbG1vbmQ6MTY3NzIwNDUsYmx1ZToyNTUsYmx1ZXZpb2xldDo5MDU1MjAyLGJyb3duOjEwODI0MjM0LGJ1cmx5d29vZDoxNDU5NjIzMSxjYWRldGJsdWU6NjI2NjUyOCxjaGFydHJldXNlOjgzODgzNTIsY2hvY29sYXRlOjEzNzg5NDcwLGNvcmFsOjE2NzQ0MjcyLGNvcm5mbG93ZXJibHVlOjY1OTE5ODEsY29ybnNpbGs6MTY3NzUzODgsY3JpbXNvbjoxNDQyMzEwMCxjeWFuOjY1NTM1LGRhcmtibHVlOjEzOSxkYXJrY3lhbjozNTcyMyxkYXJrZ29sZGVucm9kOjEyMDkyOTM5LGRhcmtncmF5OjExMTE5MDE3LGRhcmtncmVlbjoyNTYwMCxkYXJrZ3JleToxMTExOTAxNyxkYXJra2hha2k6MTI0MzMyNTksZGFya21hZ2VudGE6OTEwOTY0MyxkYXJrb2xpdmVncmVlbjo1NTk3OTk5LGRhcmtvcmFuZ2U6MTY3NDc1MjAsZGFya29yY2hpZDoxMDA0MDAxMixkYXJrcmVkOjkxMDk1MDQsZGFya3NhbG1vbjoxNTMwODQxMCxkYXJrc2VhZ3JlZW46OTQxOTkxOSxkYXJrc2xhdGVibHVlOjQ3MzQzNDcsZGFya3NsYXRlZ3JheTozMTAwNDk1LGRhcmtzbGF0ZWdyZXk6MzEwMDQ5NSxkYXJrdHVycXVvaXNlOjUyOTQ1LGRhcmt2aW9sZXQ6OTY5OTUzOSxkZWVwcGluazoxNjcxNjk0NyxkZWVwc2t5Ymx1ZTo0OTE1MSxkaW1ncmF5OjY5MDgyNjUsZGltZ3JleTo2OTA4MjY1LGRvZGdlcmJsdWU6MjAwMzE5OSxmaXJlYnJpY2s6MTE2NzQxNDYsZmxvcmFsd2hpdGU6MTY3NzU5MjAsZm9yZXN0Z3JlZW46MjI2Mzg0MixmdWNoc2lhOjE2NzExOTM1LGdhaW5zYm9ybzoxNDQ3NDQ2MCxnaG9zdHdoaXRlOjE2MzE2NjcxLGdvbGQ6MTY3NjY3MjAsZ29sZGVucm9kOjE0MzI5MTIwLGdyYXk6ODQyMTUwNCxncmVlbjozMjc2OCxncmVlbnllbGxvdzoxMTQwMzA1NSxncmV5Ojg0MjE1MDQsaG9uZXlkZXc6MTU3OTQxNjAsaG90cGluazoxNjczODc0MCxpbmRpYW5yZWQ6MTM0NTg1MjQsaW5kaWdvOjQ5MTUzMzAsaXZvcnk6MTY3NzcyMDAsa2hha2k6MTU3ODc2NjAsbGF2ZW5kZXI6MTUxMzI0MTAsbGF2ZW5kZXJibHVzaDoxNjc3MzM2NSxsYXduZ3JlZW46ODE5MDk3NixsZW1vbmNoaWZmb246MTY3NzU4ODUsbGlnaHRibHVlOjExMzkzMjU0LGxpZ2h0Y29yYWw6MTU3NjE1MzYsbGlnaHRjeWFuOjE0NzQ1NTk5LGxpZ2h0Z29sZGVucm9keWVsbG93OjE2NDQ4MjEwLGxpZ2h0Z3JheToxMzg4MjMyMyxsaWdodGdyZWVuOjk0OTgyNTYsbGlnaHRncmV5OjEzODgyMzIzLGxpZ2h0cGluazoxNjc1ODQ2NSxsaWdodHNhbG1vbjoxNjc1Mjc2MixsaWdodHNlYWdyZWVuOjIxNDI4OTAsbGlnaHRza3libHVlOjg5MDAzNDYsbGlnaHRzbGF0ZWdyYXk6NzgzMzc1MyxsaWdodHNsYXRlZ3JleTo3ODMzNzUzLGxpZ2h0c3RlZWxibHVlOjExNTg0NzM0LGxpZ2h0eWVsbG93OjE2Nzc3MTg0LGxpbWU6NjUyODAsbGltZWdyZWVuOjMzMjkzMzAsbGluZW46MTY0NDU2NzAsbWFnZW50YToxNjcxMTkzNSxtYXJvb246ODM4ODYwOCxtZWRpdW1hcXVhbWFyaW5lOjY3MzczMjIsbWVkaXVtYmx1ZToyMDUsbWVkaXVtb3JjaGlkOjEyMjExNjY3LG1lZGl1bXB1cnBsZTo5NjYyNjgzLG1lZGl1bXNlYWdyZWVuOjM5NzgwOTcsbWVkaXVtc2xhdGVibHVlOjgwODc3OTAsbWVkaXVtc3ByaW5nZ3JlZW46NjQxNTQsbWVkaXVtdHVycXVvaXNlOjQ3NzIzMDAsbWVkaXVtdmlvbGV0cmVkOjEzMDQ3MTczLG1pZG5pZ2h0Ymx1ZToxNjQ0OTEyLG1pbnRjcmVhbToxNjEyMTg1MCxtaXN0eXJvc2U6MTY3NzAyNzMsbW9jY2FzaW46MTY3NzAyMjksbmF2YWpvd2hpdGU6MTY3Njg2ODUsbmF2eToxMjgsb2xkbGFjZToxNjY0MzU1OCxvbGl2ZTo4NDIxMzc2LG9saXZlZHJhYjo3MDQ4NzM5LG9yYW5nZToxNjc1MzkyMCxvcmFuZ2VyZWQ6MTY3MjkzNDQsb3JjaGlkOjE0MzE1NzM0LHBhbGVnb2xkZW5yb2Q6MTU2NTcxMzAscGFsZWdyZWVuOjEwMDI1ODgwLHBhbGV0dXJxdW9pc2U6MTE1Mjk5NjYscGFsZXZpb2xldHJlZDoxNDM4MTIwMyxwYXBheWF3aGlwOjE2NzczMDc3LHBlYWNocHVmZjoxNjc2NzY3MyxwZXJ1OjEzNDY4OTkxLHBpbms6MTY3NjEwMzUscGx1bToxNDUyNDYzNyxwb3dkZXJibHVlOjExNTkxOTEwLHB1cnBsZTo4Mzg4NzM2LHJlYmVjY2FwdXJwbGU6NjY5Nzg4MSxyZWQ6MTY3MTE2ODAscm9zeWJyb3duOjEyMzU3NTE5LHJveWFsYmx1ZTo0Mjg2OTQ1LHNhZGRsZWJyb3duOjkxMjcxODcsc2FsbW9uOjE2NDE2ODgyLHNhbmR5YnJvd246MTYwMzI4NjQsc2VhZ3JlZW46MzA1MDMyNyxzZWFzaGVsbDoxNjc3NDYzOCxzaWVubmE6MTA1MDY3OTcsc2lsdmVyOjEyNjMyMjU2LHNreWJsdWU6ODkwMDMzMSxzbGF0ZWJsdWU6Njk3MDA2MSxzbGF0ZWdyYXk6NzM3Mjk0NCxzbGF0ZWdyZXk6NzM3Mjk0NCxzbm93OjE2Nzc1OTMwLHNwcmluZ2dyZWVuOjY1NDA3LHN0ZWVsYmx1ZTo0NjIwOTgwLHRhbjoxMzgwODc4MCx0ZWFsOjMyODk2LHRoaXN0bGU6MTQyMDQ4ODgsdG9tYXRvOjE2NzM3MDk1LHR1cnF1b2lzZTo0MjUxODU2LHZpb2xldDoxNTYzMTA4Nix3aGVhdDoxNjExMzMzMSx3aGl0ZToxNjc3NzIxNSx3aGl0ZXNtb2tlOjE2MTE5Mjg1LHllbGxvdzoxNjc3Njk2MCx5ZWxsb3dncmVlbjoxMDE0NTA3NH07ZnVuY3Rpb24gcUIoKXtyZXR1cm4gdGhpcy5yZ2IoKS5mb3JtYXRIZXgoKX1mdW5jdGlvbiBZQigpe3JldHVybiB0aGlzLnJnYigpLmZvcm1hdFJnYigpfWZ1bmN0aW9uIFhCKHQpe3ZhciBlLG47cmV0dXJuIHQ9KHQrIiIpLnRyaW0oKS50b0xvd2VyQ2FzZSgpLChlPUJCLmV4ZWModCkpPyhuPWVbMV0ubGVuZ3RoLGU9cGFyc2VJbnQoZVsxXSwxNiksNj09PW4/JEIoZSk6Mz09PW4/bmV3IFFCKGU+PjgmMTV8ZT4+NCYyNDAsZT4+NCYxNXwyNDAmZSwoMTUmZSk8PDR8MTUmZSwxKTo4PT09bj9LQihlPj4yNCYyNTUsZT4+MTYmMjU1LGU+PjgmMjU1LCgyNTUmZSkvMjU1KTo0PT09bj9LQihlPj4xMiYxNXxlPj44JjI0MCxlPj44JjE1fGU+PjQmMjQwLGU+PjQmMTV8MjQwJmUsKCgxNSZlKTw8NHwxNSZlKS8yNTUpOm51bGwpOihlPUhCLmV4ZWModCkpP25ldyBRQihlWzFdLGVbMl0sZVszXSwxKTooZT1GQi5leGVjKHQpKT9uZXcgUUIoMjU1KmVbMV0vMTAwLDI1NSplWzJdLzEwMCwyNTUqZVszXS8xMDAsMSk6KGU9VkIuZXhlYyh0KSk/S0IoZVsxXSxlWzJdLGVbM10sZVs0XSk6KGU9VUIuZXhlYyh0KSk/S0IoMjU1KmVbMV0vMTAwLDI1NSplWzJdLzEwMCwyNTUqZVszXS8xMDAsZVs0XSk6KGU9akIuZXhlYyh0KSk/aUgoZVsxXSxlWzJdLzEwMCxlWzNdLzEwMCwxKTooZT1HQi5leGVjKHQpKT9pSChlWzFdLGVbMl0vMTAwLGVbM10vMTAwLGVbNF0pOldCLmhhc093blByb3BlcnR5KHQpPyRCKFdCW3RdKToidHJhbnNwYXJlbnQiPT09dD9uZXcgUUIoTmFOLE5hTixOYU4sMCk6bnVsbH1mdW5jdGlvbiAkQih0KXtyZXR1cm4gbmV3IFFCKHQ+PjE2JjI1NSx0Pj44JjI1NSwyNTUmdCwxKX1mdW5jdGlvbiBLQih0LGUsbixpKXtyZXR1cm4gaTw9MCYmKHQ9ZT1uPU5hTiksbmV3IFFCKHQsZSxuLGkpfWZ1bmN0aW9uIFpCKHQpe3JldHVybiB0IGluc3RhbmNlb2YgZUJ8fCh0PVhCKHQpKSx0P25ldyBRQigodD10LnJnYigpKS5yLHQuZyx0LmIsdC5vcGFjaXR5KTpuZXcgUUJ9ZnVuY3Rpb24gSkIodCxlLG4saSl7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP1pCKHQpOm5ldyBRQih0LGUsbixudWxsPT1pPzE6aSl9ZnVuY3Rpb24gUUIodCxlLG4saSl7dGhpcy5yPSt0LHRoaXMuZz0rZSx0aGlzLmI9K24sdGhpcy5vcGFjaXR5PStpfWZ1bmN0aW9uIHRIKCl7cmV0dXJuIiMiK25IKHRoaXMucikrbkgodGhpcy5nKStuSCh0aGlzLmIpfWZ1bmN0aW9uIGVIKCl7dmFyIHQ9dGhpcy5vcGFjaXR5O3JldHVybigxPT09KHQ9aXNOYU4odCk/MTpNYXRoLm1heCgwLE1hdGgubWluKDEsdCkpKT8icmdiKCI6InJnYmEoIikrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0aGlzLnIpfHwwKSkrIiwgIitNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKHRoaXMuZyl8fDApKSsiLCAiK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodGhpcy5iKXx8MCkpKygxPT09dD8iKSI6IiwgIit0KyIpIil9ZnVuY3Rpb24gbkgodCl7cmV0dXJuKCh0PU1hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodCl8fDApKSk8MTY/IjAiOiIiKSt0LnRvU3RyaW5nKDE2KX1mdW5jdGlvbiBpSCh0LGUsbixpKXtyZXR1cm4gaTw9MD90PWU9bj1OYU46bjw9MHx8bj49MT90PWU9TmFOOmU8PTAmJih0PU5hTiksbmV3IG9IKHQsZSxuLGkpfWZ1bmN0aW9uIHJIKHQpe2lmKHQgaW5zdGFuY2VvZiBvSClyZXR1cm4gbmV3IG9IKHQuaCx0LnMsdC5sLHQub3BhY2l0eSk7aWYodCBpbnN0YW5jZW9mIGVCfHwodD1YQih0KSksIXQpcmV0dXJuIG5ldyBvSDtpZih0IGluc3RhbmNlb2Ygb0gpcmV0dXJuIHQ7dmFyIGU9KHQ9dC5yZ2IoKSkuci8yNTUsbj10LmcvMjU1LGk9dC5iLzI1NSxyPU1hdGgubWluKGUsbixpKSxvPU1hdGgubWF4KGUsbixpKSxhPU5hTixzPW8tcixsPShvK3IpLzI7cmV0dXJuIHM/KGE9ZT09PW8/KG4taSkvcys2KihuPGkpOm49PT1vPyhpLWUpL3MrMjooZS1uKS9zKzQscy89bDwuNT9vK3I6Mi1vLXIsYSo9NjApOnM9bD4wJiZsPDE/MDphLG5ldyBvSChhLHMsbCx0Lm9wYWNpdHkpfWZ1bmN0aW9uIG9IKHQsZSxuLGkpe3RoaXMuaD0rdCx0aGlzLnM9K2UsdGhpcy5sPStuLHRoaXMub3BhY2l0eT0raX1mdW5jdGlvbiBhSCh0LGUsbil7cmV0dXJuIDI1NSoodDw2MD9lKyhuLWUpKnQvNjA6dDwxODA/bjp0PDI0MD9lKyhuLWUpKigyNDAtdCkvNjA6ZSl9ZnVuY3Rpb24gc0godCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fWZ1bmN0aW9uIGxIKHQpe3JldHVybiAxPT0odD0rdCk/Y0g6ZnVuY3Rpb24oZSxuKXtyZXR1cm4gbi1lPyhmdW5jdGlvbiBpKHQsZSxuKXtyZXR1cm4gdD1NYXRoLnBvdyh0LG4pLGU9TWF0aC5wb3coZSxuKS10LG49MS9uLGZ1bmN0aW9uKGkpe3JldHVybiBNYXRoLnBvdyh0K2kqZSxuKX19KShlLG4sdCk6c0goaXNOYU4oZSk/bjplKX19ZnVuY3Rpb24gY0godCxlKXt2YXIgbj1lLXQ7cmV0dXJuIG4/KGZ1bmN0aW9uIGkodCxlKXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIHQrbiplfX0pKHQsbik6c0goaXNOYU4odCk/ZTp0KX1RRChlQixYQix7Y29weTpmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmFzc2lnbihuZXcgdGhpcy5jb25zdHJ1Y3Rvcix0aGlzLHQpfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJnYigpLmRpc3BsYXlhYmxlKCl9LGhleDpxQixmb3JtYXRIZXg6cUIsZm9ybWF0SHNsOmZ1bmN0aW9uIHVIKCl7cmV0dXJuIHJIKHRoaXMpLmZvcm1hdEhzbCgpfSxmb3JtYXRSZ2I6WUIsdG9TdHJpbmc6WUJ9KSxRRChRQixKQix0QihlQix7YnJpZ2h0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD9SQjpNYXRoLnBvdyhSQix0KSxuZXcgUUIodGhpcy5yKnQsdGhpcy5nKnQsdGhpcy5iKnQsdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/SUI6TWF0aC5wb3coSUIsdCksbmV3IFFCKHRoaXMucip0LHRoaXMuZyp0LHRoaXMuYip0LHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3JldHVybiB0aGlzfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybi0uNTw9dGhpcy5yJiZ0aGlzLnI8MjU1LjUmJi0uNTw9dGhpcy5nJiZ0aGlzLmc8MjU1LjUmJi0uNTw9dGhpcy5iJiZ0aGlzLmI8MjU1LjUmJjA8PXRoaXMub3BhY2l0eSYmdGhpcy5vcGFjaXR5PD0xfSxoZXg6dEgsZm9ybWF0SGV4OnRILGZvcm1hdFJnYjplSCx0b1N0cmluZzplSH0pKSxRRChvSCwoZnVuY3Rpb24gaEgodCxlLG4saSl7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP3JIKHQpOm5ldyBvSCh0LGUsbixudWxsPT1pPzE6aSl9KSx0QihlQix7YnJpZ2h0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD9SQjpNYXRoLnBvdyhSQix0KSxuZXcgb0godGhpcy5oLHRoaXMucyx0aGlzLmwqdCx0aGlzLm9wYWNpdHkpfSxkYXJrZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD9JQjpNYXRoLnBvdyhJQix0KSxuZXcgb0godGhpcy5oLHRoaXMucyx0aGlzLmwqdCx0aGlzLm9wYWNpdHkpfSxyZ2I6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmglMzYwKzM2MCoodGhpcy5oPDApLGU9aXNOYU4odCl8fGlzTmFOKHRoaXMucyk/MDp0aGlzLnMsbj10aGlzLmwsaT1uKyhuPC41P246MS1uKSplLHI9MipuLWk7cmV0dXJuIG5ldyBRQihhSCh0Pj0yNDA/dC0yNDA6dCsxMjAscixpKSxhSCh0LHIsaSksYUgodDwxMjA/dCsyNDA6dC0xMjAscixpKSx0aGlzLm9wYWNpdHkpfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybigwPD10aGlzLnMmJnRoaXMuczw9MXx8aXNOYU4odGhpcy5zKSkmJjA8PXRoaXMubCYmdGhpcy5sPD0xJiYwPD10aGlzLm9wYWNpdHkmJnRoaXMub3BhY2l0eTw9MX0sZm9ybWF0SHNsOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcGFjaXR5O3JldHVybigxPT09KHQ9aXNOYU4odCk/MTpNYXRoLm1heCgwLE1hdGgubWluKDEsdCkpKT8iaHNsKCI6ImhzbGEoIikrKHRoaXMuaHx8MCkrIiwgIisxMDAqKHRoaXMuc3x8MCkrIiUsICIrMTAwKih0aGlzLmx8fDApKyIlIisoMT09PXQ/IikiOiIsICIrdCsiKSIpfX0pKTt2YXIgZEg9KGZ1bmN0aW9uIHQoZSl7dmFyIG49bEgoZSk7ZnVuY3Rpb24gaSh0LGUpe3ZhciBpPW4oKHQ9SkIodCkpLnIsKGU9SkIoZSkpLnIpLHI9bih0LmcsZS5nKSxvPW4odC5iLGUuYiksYT1jSCh0Lm9wYWNpdHksZS5vcGFjaXR5KTtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHQucj1pKGUpLHQuZz1yKGUpLHQuYj1vKGUpLHQub3BhY2l0eT1hKGUpLHQrIiJ9fXJldHVybiBpLmdhbW1hPXQsaX0pKDEpO2Z1bmN0aW9uIHBIKHQsZSl7ZXx8KGU9W10pO3ZhciBuLGk9dD9NYXRoLm1pbihlLmxlbmd0aCx0Lmxlbmd0aCk6MCxyPWUuc2xpY2UoKTtyZXR1cm4gZnVuY3Rpb24obyl7Zm9yKG49MDtuPGk7KytuKXJbbl09dFtuXSooMS1vKStlW25dKm87cmV0dXJuIHJ9fWZ1bmN0aW9uIGZIKHQsZSl7dmFyIG4saT1lP2UubGVuZ3RoOjAscj10P01hdGgubWluKGksdC5sZW5ndGgpOjAsbz1uZXcgQXJyYXkociksYT1uZXcgQXJyYXkoaSk7Zm9yKG49MDtuPHI7KytuKW9bbl09eEgodFtuXSxlW25dKTtmb3IoO248aTsrK24pYVtuXT1lW25dO3JldHVybiBmdW5jdGlvbih0KXtmb3Iobj0wO248cjsrK24pYVtuXT1vW25dKHQpO3JldHVybiBhfX1mdW5jdGlvbiBtSCh0LGUpe3ZhciBuPW5ldyBEYXRlO3JldHVybiB0PSt0LGU9K2UsZnVuY3Rpb24oaSl7cmV0dXJuIG4uc2V0VGltZSh0KigxLWkpK2UqaSksbn19ZnVuY3Rpb24gZ0godCxlKXtyZXR1cm4gdD0rdCxlPStlLGZ1bmN0aW9uKG4pe3JldHVybiB0KigxLW4pK2Uqbn19ZnVuY3Rpb24gX0godCxlKXt2YXIgbixpPXt9LHI9e307Zm9yKG4gaW4gbnVsbCE9PXQmJiJvYmplY3QiPT10eXBlb2YgdHx8KHQ9e30pLG51bGwhPT1lJiYib2JqZWN0Ij09dHlwZW9mIGV8fChlPXt9KSxlKW4gaW4gdD9pW25dPXhIKHRbbl0sZVtuXSk6cltuXT1lW25dO3JldHVybiBmdW5jdGlvbih0KXtmb3IobiBpbiBpKXJbbl09aVtuXSh0KTtyZXR1cm4gcn19dmFyIHlIPS9bLStdPyg/OlxkK1wuP1xkKnxcLj9cZCspKD86W2VFXVstK10/XGQrKT8vZyx2SD1uZXcgUmVnRXhwKHlILnNvdXJjZSwiZyIpO2Z1bmN0aW9uIGJIKHQsZSl7dmFyIG4saSxyLG89eUgubGFzdEluZGV4PXZILmxhc3RJbmRleD0wLGE9LTEscz1bXSxsPVtdO2Zvcih0Kz0iIixlKz0iIjsobj15SC5leGVjKHQpKSYmKGk9dkguZXhlYyhlKSk7KShyPWkuaW5kZXgpPm8mJihyPWUuc2xpY2UobyxyKSxzW2FdP3NbYV0rPXI6c1srK2FdPXIpLChuPW5bMF0pPT09KGk9aVswXSk/c1thXT9zW2FdKz1pOnNbKythXT1pOihzWysrYV09bnVsbCxsLnB1c2goe2k6YSx4OmdIKG4saSl9KSksbz12SC5sYXN0SW5kZXg7cmV0dXJuIG88ZS5sZW5ndGgmJihyPWUuc2xpY2Uobyksc1thXT9zW2FdKz1yOnNbKythXT1yKSxzLmxlbmd0aDwyP2xbMF0/KGZ1bmN0aW9uIGModCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0KGUpKyIifX0pKGxbMF0ueCk6KGZ1bmN0aW9uIHUodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fSkoZSk6KGU9bC5sZW5ndGgsZnVuY3Rpb24odCl7Zm9yKHZhciBuLGk9MDtpPGU7KytpKXNbKG49bFtpXSkuaV09bi54KHQpO3JldHVybiBzLmpvaW4oIiIpfSl9ZnVuY3Rpb24geEgodCxlKXt2YXIgbixpPXR5cGVvZiBlO3JldHVybiBudWxsPT1lfHwiYm9vbGVhbiI9PT1pP3NIKGUpOigibnVtYmVyIj09PWk/Z0g6InN0cmluZyI9PT1pPyhuPVhCKGUpKT8oZT1uLGRIKTpiSDplIGluc3RhbmNlb2YgWEI/ZEg6ZSBpbnN0YW5jZW9mIERhdGU/bUg6KGZ1bmN0aW9uIHIodCl7cmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh0KSYmISh0IGluc3RhbmNlb2YgRGF0YVZpZXcpfSkoZSk/cEg6QXJyYXkuaXNBcnJheShlKT9mSDoiZnVuY3Rpb24iIT10eXBlb2YgZS52YWx1ZU9mJiYiZnVuY3Rpb24iIT10eXBlb2YgZS50b1N0cmluZ3x8aXNOYU4oZSk/X0g6Z0gpKHQsZSl9dmFyIHdILFNILE1ILEVILFRIPTE4MC9NYXRoLlBJLENIPXt0cmFuc2xhdGVYOjAsdHJhbnNsYXRlWTowLHJvdGF0ZTowLHNrZXdYOjAsc2NhbGVYOjEsc2NhbGVZOjF9O2Z1bmN0aW9uIEFIKHQsZSxuLGkscixvKXt2YXIgYSxzLGw7cmV0dXJuKGE9TWF0aC5zcXJ0KHQqdCtlKmUpKSYmKHQvPWEsZS89YSksKGw9dCpuK2UqaSkmJihuLT10KmwsaS09ZSpsKSwocz1NYXRoLnNxcnQobipuK2kqaSkpJiYobi89cyxpLz1zLGwvPXMpLHQqaTxlKm4mJih0PS10LGU9LWUsbD0tbCxhPS1hKSx7dHJhbnNsYXRlWDpyLHRyYW5zbGF0ZVk6byxyb3RhdGU6TWF0aC5hdGFuMihlLHQpKlRILHNrZXdYOk1hdGguYXRhbihsKSpUSCxzY2FsZVg6YSxzY2FsZVk6c319ZnVuY3Rpb24ga0godCxlLG4saSl7ZnVuY3Rpb24gcih0KXtyZXR1cm4gdC5sZW5ndGg/dC5wb3AoKSsiICI6IiJ9cmV0dXJuIGZ1bmN0aW9uKG8sYSl7dmFyIHM9W10sbD1bXTtyZXR1cm4gbz10KG8pLGE9dChhKSwoZnVuY3Rpb24gYyh0LGkscixvLGEscyl7aWYodCE9PXJ8fGkhPT1vKXt2YXIgbD1hLnB1c2goInRyYW5zbGF0ZSgiLG51bGwsZSxudWxsLG4pO3MucHVzaCh7aTpsLTQseDpnSCh0LHIpfSx7aTpsLTIseDpnSChpLG8pfSl9ZWxzZShyfHxvKSYmYS5wdXNoKCJ0cmFuc2xhdGUoIityK2UrbytuKX0pKG8udHJhbnNsYXRlWCxvLnRyYW5zbGF0ZVksYS50cmFuc2xhdGVYLGEudHJhbnNsYXRlWSxzLGwpLChmdW5jdGlvbiB1KHQsZSxuLG8pe3QhPT1lPyh0LWU+MTgwP2UrPTM2MDplLXQ+MTgwJiYodCs9MzYwKSxvLnB1c2goe2k6bi5wdXNoKHIobikrInJvdGF0ZSgiLG51bGwsaSktMix4OmdIKHQsZSl9KSk6ZSYmbi5wdXNoKHIobikrInJvdGF0ZSgiK2UraSl9KShvLnJvdGF0ZSxhLnJvdGF0ZSxzLGwpLChmdW5jdGlvbiBoKHQsZSxuLG8pe3QhPT1lP28ucHVzaCh7aTpuLnB1c2gocihuKSsic2tld1goIixudWxsLGkpLTIseDpnSCh0LGUpfSk6ZSYmbi5wdXNoKHIobikrInNrZXdYKCIrZStpKX0pKG8uc2tld1gsYS5za2V3WCxzLGwpLChmdW5jdGlvbiBkKHQsZSxuLGksbyxhKXtpZih0IT09bnx8ZSE9PWkpe3ZhciBzPW8ucHVzaChyKG8pKyJzY2FsZSgiLG51bGwsIiwiLG51bGwsIikiKTthLnB1c2goe2k6cy00LHg6Z0godCxuKX0se2k6cy0yLHg6Z0goZSxpKX0pfWVsc2UgMT09PW4mJjE9PT1pfHxvLnB1c2gocihvKSsic2NhbGUoIituKyIsIitpKyIpIil9KShvLnNjYWxlWCxvLnNjYWxlWSxhLnNjYWxlWCxhLnNjYWxlWSxzLGwpLG89YT1udWxsLGZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxuPS0xLGk9bC5sZW5ndGg7KytuPGk7KXNbKGU9bFtuXSkuaV09ZS54KHQpO3JldHVybiBzLmpvaW4oIiIpfX19dmFyIExILFBILE5IPWtIKChmdW5jdGlvbiBJSCh0KXtyZXR1cm4ibm9uZSI9PT10P0NIOih3SHx8KHdIPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIkRJViIpLFNIPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxNSD1kb2N1bWVudC5kZWZhdWx0Vmlldyksd0guc3R5bGUudHJhbnNmb3JtPXQsdD1NSC5nZXRDb21wdXRlZFN0eWxlKFNILmFwcGVuZENoaWxkKHdIKSxudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCJ0cmFuc2Zvcm0iKSxTSC5yZW1vdmVDaGlsZCh3SCksQUgoKyh0PXQuc2xpY2UoNywtMSkuc3BsaXQoIiwiKSlbMF0sK3RbMV0sK3RbMl0sK3RbM10sK3RbNF0sK3RbNV0pKX0pLCJweCwgIiwicHgpIiwiZGVnKSIpLFJIPWtIKChmdW5jdGlvbiBPSCh0KXtyZXR1cm4gbnVsbD09dD9DSDooRUh8fChFSD1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwiZyIpKSxFSC5zZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIsdCksKHQ9RUgudHJhbnNmb3JtLmJhc2VWYWwuY29uc29saWRhdGUoKSk/QUgoKHQ9dC5tYXRyaXgpLmEsdC5iLHQuYyx0LmQsdC5lLHQuZik6Q0gpfSksIiwgIiwiKSIsIikiKSx6SD0wLERIPTAsQkg9MCxISD0wLEZIPTAsVkg9MCxVSD0ib2JqZWN0Ij09dHlwZW9mIHBlcmZvcm1hbmNlJiZwZXJmb3JtYW5jZS5ub3c/cGVyZm9ybWFuY2U6RGF0ZSxqSD0ib2JqZWN0Ij09dHlwZW9mIHdpbmRvdyYmd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZT93aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lLmJpbmQod2luZG93KTpmdW5jdGlvbih0KXtzZXRUaW1lb3V0KHQsMTcpfTtmdW5jdGlvbiBHSCgpe3JldHVybiBGSHx8KGpIKFdIKSxGSD1VSC5ub3coKStWSCl9ZnVuY3Rpb24gV0goKXtGSD0wfWZ1bmN0aW9uIHFIKCl7dGhpcy5fY2FsbD10aGlzLl90aW1lPXRoaXMuX25leHQ9bnVsbH1mdW5jdGlvbiBZSCh0LGUsbil7dmFyIGk9bmV3IHFIO3JldHVybiBpLnJlc3RhcnQodCxlLG4pLGl9ZnVuY3Rpb24gWEgoKXtGSD0oSEg9VUgubm93KCkpK1ZILHpIPURIPTA7dHJ5eyEoZnVuY3Rpb24gdCgpe0dIKCksKyt6SDtmb3IodmFyIHQsZT1MSDtlOykodD1GSC1lLl90aW1lKT49MCYmZS5fY2FsbC5jYWxsKG51bGwsdCksZT1lLl9uZXh0Oy0tekh9KSgpfWZpbmFsbHl7ekg9MCwoZnVuY3Rpb24gZSgpe3ZhciB0LGUsbj1MSCxpPTEvMDtmb3IoO247KW4uX2NhbGw/KGk+bi5fdGltZSYmKGk9bi5fdGltZSksdD1uLG49bi5fbmV4dCk6KGU9bi5fbmV4dCxuLl9uZXh0PW51bGwsbj10P3QuX25leHQ9ZTpMSD1lKTtQSD10LEtIKGkpfSkoKSxGSD0wfX1mdW5jdGlvbiAkSCgpe3ZhciB0PVVILm5vdygpLGU9dC1ISDtlPjFlMyYmKFZILT1lLEhIPXQpfWZ1bmN0aW9uIEtIKHQpe3pIfHwoREgmJihESD1jbGVhclRpbWVvdXQoREgpKSx0LUZIPjI0Pyh0PDEvMCYmKERIPXNldFRpbWVvdXQoWEgsdC1VSC5ub3coKS1WSCkpLEJIJiYoQkg9Y2xlYXJJbnRlcnZhbChCSCkpKTooQkh8fChISD1VSC5ub3coKSxCSD1zZXRJbnRlcnZhbCgkSCwxZTMpKSx6SD0xLGpIKFhIKSkpfWZ1bmN0aW9uIFpIKHQsZSxuKXt2YXIgaT1uZXcgcUg7cmV0dXJuIGkucmVzdGFydCgoZnVuY3Rpb24obil7aS5zdG9wKCksdChuK2UpfSksZT1udWxsPT1lPzA6K2UsbiksaX1xSC5wcm90b3R5cGU9WUgucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpxSCxyZXN0YXJ0OmZ1bmN0aW9uKHQsZSxuKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKCJjYWxsYmFjayBpcyBub3QgYSBmdW5jdGlvbiIpO249KG51bGw9PW4/R0goKTorbikrKG51bGw9PWU/MDorZSksdGhpcy5fbmV4dHx8UEg9PT10aGlzfHwoUEg/UEguX25leHQ9dGhpczpMSD10aGlzLFBIPXRoaXMpLHRoaXMuX2NhbGw9dCx0aGlzLl90aW1lPW4sS0goKX0sc3RvcDpmdW5jdGlvbigpe3RoaXMuX2NhbGwmJih0aGlzLl9jYWxsPW51bGwsdGhpcy5fdGltZT0xLzAsS0goKSl9fTt2YXIgSkg9UnooInN0YXJ0IiwiZW5kIiwiY2FuY2VsIiwiaW50ZXJydXB0IiksUUg9W107ZnVuY3Rpb24gdEYodCxlLG4saSxyLG8pe3ZhciBhPXQuX190cmFuc2l0aW9uO2lmKGEpe2lmKG4gaW4gYSlyZXR1cm59ZWxzZSB0Ll9fdHJhbnNpdGlvbj17fTshKGZ1bmN0aW9uIHModCxlLG4pe3ZhciBpLHI9dC5fX3RyYW5zaXRpb247ZnVuY3Rpb24gbyh0KXtuLnN0YXRlPTEsbi50aW1lci5yZXN0YXJ0KGEsbi5kZWxheSxuLnRpbWUpLG4uZGVsYXk8PXQmJmEodC1uLmRlbGF5KX1mdW5jdGlvbiBhKG8pe3ZhciBjLHUsaCxkO2lmKDEhPT1uLnN0YXRlKXJldHVybiBsKCk7Zm9yKGMgaW4gcilpZigoZD1yW2NdKS5uYW1lPT09bi5uYW1lKXtpZigzPT09ZC5zdGF0ZSlyZXR1cm4gWkgoYSk7ND09PWQuc3RhdGU/KGQuc3RhdGU9NixkLnRpbWVyLnN0b3AoKSxkLm9uLmNhbGwoImludGVycnVwdCIsdCx0Ll9fZGF0YV9fLGQuaW5kZXgsZC5ncm91cCksZGVsZXRlIHJbY10pOitjPGUmJihkLnN0YXRlPTYsZC50aW1lci5zdG9wKCksZC5vbi5jYWxsKCJjYW5jZWwiLHQsdC5fX2RhdGFfXyxkLmluZGV4LGQuZ3JvdXApLGRlbGV0ZSByW2NdKX1pZihaSCgoZnVuY3Rpb24oKXszPT09bi5zdGF0ZSYmKG4uc3RhdGU9NCxuLnRpbWVyLnJlc3RhcnQocyxuLmRlbGF5LG4udGltZSkscyhvKSl9KSksbi5zdGF0ZT0yLG4ub24uY2FsbCgic3RhcnQiLHQsdC5fX2RhdGFfXyxuLmluZGV4LG4uZ3JvdXApLDI9PT1uLnN0YXRlKXtmb3Iobi5zdGF0ZT0zLGk9bmV3IEFycmF5KGg9bi50d2Vlbi5sZW5ndGgpLGM9MCx1PS0xO2M8aDsrK2MpKGQ9bi50d2VlbltjXS52YWx1ZS5jYWxsKHQsdC5fX2RhdGFfXyxuLmluZGV4LG4uZ3JvdXApKSYmKGlbKyt1XT1kKTtpLmxlbmd0aD11KzF9fWZ1bmN0aW9uIHMoZSl7Zm9yKHZhciByPWU8bi5kdXJhdGlvbj9uLmVhc2UuY2FsbChudWxsLGUvbi5kdXJhdGlvbik6KG4udGltZXIucmVzdGFydChsKSxuLnN0YXRlPTUsMSksbz0tMSxhPWkubGVuZ3RoOysrbzxhOylpW29dLmNhbGwodCxyKTs1PT09bi5zdGF0ZSYmKG4ub24uY2FsbCgiZW5kIix0LHQuX19kYXRhX18sbi5pbmRleCxuLmdyb3VwKSxsKCkpfWZ1bmN0aW9uIGwoKXtmb3IodmFyIGkgaW4gbi5zdGF0ZT02LG4udGltZXIuc3RvcCgpLGRlbGV0ZSByW2VdLHIpcmV0dXJuO2RlbGV0ZSB0Ll9fdHJhbnNpdGlvbn1yW2VdPW4sbi50aW1lcj1ZSChvLDAsbi50aW1lKX0pKHQsbix7bmFtZTplLGluZGV4OmksZ3JvdXA6cixvbjpKSCx0d2VlbjpRSCx0aW1lOm8udGltZSxkZWxheTpvLmRlbGF5LGR1cmF0aW9uOm8uZHVyYXRpb24sZWFzZTpvLmVhc2UsdGltZXI6bnVsbCxzdGF0ZTowfSl9ZnVuY3Rpb24gZUYodCxlKXt2YXIgbj1pRih0LGUpO2lmKG4uc3RhdGU+MCl0aHJvdyBuZXcgRXJyb3IoInRvbyBsYXRlOyBhbHJlYWR5IHNjaGVkdWxlZCIpO3JldHVybiBufWZ1bmN0aW9uIG5GKHQsZSl7dmFyIG49aUYodCxlKTtpZihuLnN0YXRlPjMpdGhyb3cgbmV3IEVycm9yKCJ0b28gbGF0ZTsgYWxyZWFkeSBydW5uaW5nIik7cmV0dXJuIG59ZnVuY3Rpb24gaUYodCxlKXt2YXIgbj10Ll9fdHJhbnNpdGlvbjtpZighbnx8IShuPW5bZV0pKXRocm93IG5ldyBFcnJvcigidHJhbnNpdGlvbiBub3QgZm91bmQiKTtyZXR1cm4gbn1mdW5jdGlvbiByRih0LGUpe3ZhciBuLGkscixvPXQuX190cmFuc2l0aW9uLGE9ITA7aWYobyl7Zm9yKHIgaW4gZT1udWxsPT1lP251bGw6ZSsiIixvKShuPW9bcl0pLm5hbWU9PT1lPyhpPW4uc3RhdGU+MiYmbi5zdGF0ZTw1LG4uc3RhdGU9NixuLnRpbWVyLnN0b3AoKSxuLm9uLmNhbGwoaT8iaW50ZXJydXB0IjoiY2FuY2VsIix0LHQuX19kYXRhX18sbi5pbmRleCxuLmdyb3VwKSxkZWxldGUgb1tyXSk6YT0hMTthJiZkZWxldGUgdC5fX3RyYW5zaXRpb259fWZ1bmN0aW9uIG9GKHQsZSl7dmFyIG4saTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcj1uRih0aGlzLHQpLG89ci50d2VlbjtpZihvIT09bilmb3IodmFyIGE9MCxzPShpPW49bykubGVuZ3RoO2E8czsrK2EpaWYoaVthXS5uYW1lPT09ZSl7KGk9aS5zbGljZSgpKS5zcGxpY2UoYSwxKTticmVha31yLnR3ZWVuPWl9fWZ1bmN0aW9uIGFGKHQsZSxuKXt2YXIgaSxyO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBuKXRocm93IG5ldyBFcnJvcjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbz1uRih0aGlzLHQpLGE9by50d2VlbjtpZihhIT09aSl7cj0oaT1hKS5zbGljZSgpO2Zvcih2YXIgcz17bmFtZTplLHZhbHVlOm59LGw9MCxjPXIubGVuZ3RoO2w8YzsrK2wpaWYocltsXS5uYW1lPT09ZSl7cltsXT1zO2JyZWFrfWw9PT1jJiZyLnB1c2gocyl9by50d2Vlbj1yfX1mdW5jdGlvbiBzRih0LGUsbil7dmFyIGk9dC5faWQ7cmV0dXJuIHQuZWFjaCgoZnVuY3Rpb24oKXt2YXIgdD1uRih0aGlzLGkpOyh0LnZhbHVlfHwodC52YWx1ZT17fSkpW2VdPW4uYXBwbHkodGhpcyxhcmd1bWVudHMpfSkpLGZ1bmN0aW9uKHQpe3JldHVybiBpRih0LGkpLnZhbHVlW2VdfX1mdW5jdGlvbiBsRih0LGUpe3ZhciBuO3JldHVybigibnVtYmVyIj09dHlwZW9mIGU/Z0g6ZSBpbnN0YW5jZW9mIFhCP2RIOihuPVhCKGUpKT8oZT1uLGRIKTpiSCkodCxlKX1mdW5jdGlvbiBjRih0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZSh0KX19ZnVuY3Rpb24gdUYodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwpfX1mdW5jdGlvbiBoRih0LGUsbil7dmFyIGkscixvPW4rIiI7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5nZXRBdHRyaWJ1dGUodCk7cmV0dXJuIGE9PT1vP251bGw6YT09PWk/cjpyPWUoaT1hLG4pfX1mdW5jdGlvbiBkRih0LGUsbil7dmFyIGkscixvPW4rIiI7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5nZXRBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwpO3JldHVybiBhPT09bz9udWxsOmE9PT1pP3I6cj1lKGk9YSxuKX19ZnVuY3Rpb24gcEYodCxlLG4pe3ZhciBpLHIsbztyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYSxzLGw9bih0aGlzKTtpZihudWxsIT1sKXJldHVybihhPXRoaXMuZ2V0QXR0cmlidXRlKHQpKT09PShzPWwrIiIpP251bGw6YT09PWkmJnM9PT1yP286KHI9cyxvPWUoaT1hLGwpKTt0aGlzLnJlbW92ZUF0dHJpYnV0ZSh0KX19ZnVuY3Rpb24gZkYodCxlLG4pe3ZhciBpLHIsbztyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYSxzLGw9bih0aGlzKTtpZihudWxsIT1sKXJldHVybihhPXRoaXMuZ2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKSk9PT0ocz1sKyIiKT9udWxsOmE9PT1pJiZzPT09cj9vOihyPXMsbz1lKGk9YSxsKSk7dGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwpfX1mdW5jdGlvbiBtRih0LGUpe3JldHVybiBmdW5jdGlvbihuKXt0aGlzLnNldEF0dHJpYnV0ZSh0LGUuY2FsbCh0aGlzLG4pKX19ZnVuY3Rpb24gZ0YodCxlKXtyZXR1cm4gZnVuY3Rpb24obil7dGhpcy5zZXRBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwsZS5jYWxsKHRoaXMsbikpfX1mdW5jdGlvbiBfRih0LGUpe3ZhciBuLGk7ZnVuY3Rpb24gcigpe3ZhciByPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiByIT09aSYmKG49KGk9cikmJmdGKHQscikpLG59cmV0dXJuIHIuX3ZhbHVlPWUscn1mdW5jdGlvbiB5Rih0LGUpe3ZhciBuLGk7ZnVuY3Rpb24gcigpe3ZhciByPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiByIT09aSYmKG49KGk9cikmJm1GKHQscikpLG59cmV0dXJuIHIuX3ZhbHVlPWUscn1mdW5jdGlvbiB2Rih0LGUpe3JldHVybiBmdW5jdGlvbigpe2VGKHRoaXMsdCkuZGVsYXk9K2UuYXBwbHkodGhpcyxhcmd1bWVudHMpfX1mdW5jdGlvbiBiRih0LGUpe3JldHVybiBlPStlLGZ1bmN0aW9uKCl7ZUYodGhpcyx0KS5kZWxheT1lfX1mdW5jdGlvbiB4Rih0LGUpe3JldHVybiBmdW5jdGlvbigpe25GKHRoaXMsdCkuZHVyYXRpb249K2UuYXBwbHkodGhpcyxhcmd1bWVudHMpfX1mdW5jdGlvbiB3Rih0LGUpe3JldHVybiBlPStlLGZ1bmN0aW9uKCl7bkYodGhpcyx0KS5kdXJhdGlvbj1lfX1mdW5jdGlvbiBTRih0LGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcjtyZXR1cm4gZnVuY3Rpb24oKXtuRih0aGlzLHQpLmVhc2U9ZX19ZnVuY3Rpb24gTUYodCxlLG4pe3ZhciBpLHIsbz0oZnVuY3Rpb24gYSh0KXtyZXR1cm4odCsiIikudHJpbSgpLnNwbGl0KC9efFxzKy8pLmV2ZXJ5KChmdW5jdGlvbih0KXt2YXIgZT10LmluZGV4T2YoIi4iKTtyZXR1cm4gZT49MCYmKHQ9dC5zbGljZSgwLGUpKSwhdHx8InN0YXJ0Ij09PXR9KSl9KShlKT9lRjpuRjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYT1vKHRoaXMsdCkscz1hLm9uO3MhPT1pJiYocj0oaT1zKS5jb3B5KCkpLm9uKGUsbiksYS5vbj1yfX12YXIgRUY9WUQucHJvdG90eXBlLmNvbnN0cnVjdG9yO2Z1bmN0aW9uIFRGKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkodCl9fWZ1bmN0aW9uIENGKHQsZSxuKXtyZXR1cm4gZnVuY3Rpb24oaSl7dGhpcy5zdHlsZS5zZXRQcm9wZXJ0eSh0LGUuY2FsbCh0aGlzLGkpLG4pfX1mdW5jdGlvbiBBRih0LGUsbil7dmFyIGkscjtmdW5jdGlvbiBvKCl7dmFyIG89ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIG8hPT1yJiYoaT0ocj1vKSYmQ0YodCxvLG4pKSxpfXJldHVybiBvLl92YWx1ZT1lLG99ZnVuY3Rpb24ga0YodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3RoaXMudGV4dENvbnRlbnQ9dC5jYWxsKHRoaXMsZSl9fWZ1bmN0aW9uIExGKHQpe3ZhciBlLG47ZnVuY3Rpb24gaSgpe3ZhciBpPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBpIT09biYmKGU9KG49aSkmJmtGKGkpKSxlfXJldHVybiBpLl92YWx1ZT10LGl9dmFyIFBGPTA7ZnVuY3Rpb24gTkYodCxlLG4saSl7dGhpcy5fZ3JvdXBzPXQsdGhpcy5fcGFyZW50cz1lLHRoaXMuX25hbWU9bix0aGlzLl9pZD1pfWZ1bmN0aW9uIElGKCl7cmV0dXJuKytQRn12YXIgUkY9WUQucHJvdG90eXBlO05GLnByb3RvdHlwZT17Y29uc3RydWN0b3I6TkYsc2VsZWN0OmZ1bmN0aW9uIE9GKHQpe3ZhciBlPXRoaXMuX25hbWUsbj10aGlzLl9pZDsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9cXoodCkpO2Zvcih2YXIgaT10aGlzLl9ncm91cHMscj1pLmxlbmd0aCxvPW5ldyBBcnJheShyKSxhPTA7YTxyOysrYSlmb3IodmFyIHMsbCxjPWlbYV0sdT1jLmxlbmd0aCxoPW9bYV09bmV3IEFycmF5KHUpLGQ9MDtkPHU7KytkKShzPWNbZF0pJiYobD10LmNhbGwocyxzLl9fZGF0YV9fLGQsYykpJiYoIl9fZGF0YV9fImluIHMmJihsLl9fZGF0YV9fPXMuX19kYXRhX18pLGhbZF09bCx0RihoW2RdLGUsbixkLGgsaUYocyxuKSkpO3JldHVybiBuZXcgTkYobyx0aGlzLl9wYXJlbnRzLGUsbil9LHNlbGVjdEFsbDpmdW5jdGlvbiB6Rih0KXt2YXIgZT10aGlzLl9uYW1lLG49dGhpcy5faWQ7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PVh6KHQpKTtmb3IodmFyIGk9dGhpcy5fZ3JvdXBzLHI9aS5sZW5ndGgsbz1bXSxhPVtdLHM9MDtzPHI7KytzKWZvcih2YXIgbCxjPWlbc10sdT1jLmxlbmd0aCxoPTA7aDx1OysraClpZihsPWNbaF0pe2Zvcih2YXIgZCxwPXQuY2FsbChsLGwuX19kYXRhX18saCxjKSxmPWlGKGwsbiksbT0wLGc9cC5sZW5ndGg7bTxnOysrbSkoZD1wW21dKSYmdEYoZCxlLG4sbSxwLGYpO28ucHVzaChwKSxhLnB1c2gobCl9cmV0dXJuIG5ldyBORihvLGEsZSxuKX0sZmlsdGVyOmZ1bmN0aW9uIERGKHQpeyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD0keih0KSk7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPWUubGVuZ3RoLGk9bmV3IEFycmF5KG4pLHI9MDtyPG47KytyKWZvcih2YXIgbyxhPWVbcl0scz1hLmxlbmd0aCxsPWlbcl09W10sYz0wO2M8czsrK2MpKG89YVtjXSkmJnQuY2FsbChvLG8uX19kYXRhX18sYyxhKSYmbC5wdXNoKG8pO3JldHVybiBuZXcgTkYoaSx0aGlzLl9wYXJlbnRzLHRoaXMuX25hbWUsdGhpcy5faWQpfSxtZXJnZTpmdW5jdGlvbiBCRih0KXtpZih0Ll9pZCE9PXRoaXMuX2lkKXRocm93IG5ldyBFcnJvcjtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLG49dC5fZ3JvdXBzLGk9ZS5sZW5ndGgscj1NYXRoLm1pbihpLG4ubGVuZ3RoKSxvPW5ldyBBcnJheShpKSxhPTA7YTxyOysrYSlmb3IodmFyIHMsbD1lW2FdLGM9blthXSx1PWwubGVuZ3RoLGg9b1thXT1uZXcgQXJyYXkodSksZD0wO2Q8dTsrK2QpKHM9bFtkXXx8Y1tkXSkmJihoW2RdPXMpO2Zvcig7YTxpOysrYSlvW2FdPWVbYV07cmV0dXJuIG5ldyBORihvLHRoaXMuX3BhcmVudHMsdGhpcy5fbmFtZSx0aGlzLl9pZCl9LHNlbGVjdGlvbjpmdW5jdGlvbiBIRigpe3JldHVybiBuZXcgRUYodGhpcy5fZ3JvdXBzLHRoaXMuX3BhcmVudHMpfSx0cmFuc2l0aW9uOmZ1bmN0aW9uIEZGKCl7Zm9yKHZhciB0PXRoaXMuX25hbWUsZT10aGlzLl9pZCxuPUlGKCksaT10aGlzLl9ncm91cHMscj1pLmxlbmd0aCxvPTA7bzxyOysrbylmb3IodmFyIGEscz1pW29dLGw9cy5sZW5ndGgsYz0wO2M8bDsrK2MpaWYoYT1zW2NdKXt2YXIgdT1pRihhLGUpO3RGKGEsdCxuLGMscyx7dGltZTp1LnRpbWUrdS5kZWxheSt1LmR1cmF0aW9uLGRlbGF5OjAsZHVyYXRpb246dS5kdXJhdGlvbixlYXNlOnUuZWFzZX0pfXJldHVybiBuZXcgTkYoaSx0aGlzLl9wYXJlbnRzLHQsbil9LGNhbGw6UkYuY2FsbCxub2RlczpSRi5ub2Rlcyxub2RlOlJGLm5vZGUsc2l6ZTpSRi5zaXplLGVtcHR5OlJGLmVtcHR5LGVhY2g6UkYuZWFjaCxvbjpmdW5jdGlvbiBWRih0LGUpe3ZhciBuPXRoaXMuX2lkO3JldHVybiBhcmd1bWVudHMubGVuZ3RoPDI/aUYodGhpcy5ub2RlKCksbikub24ub24odCk6dGhpcy5lYWNoKE1GKG4sdCxlKSl9LGF0dHI6ZnVuY3Rpb24gVUYodCxlKXt2YXIgbj1Weih0KSxpPSJ0cmFuc2Zvcm0iPT09bj9SSDpsRjtyZXR1cm4gdGhpcy5hdHRyVHdlZW4odCwiZnVuY3Rpb24iPT10eXBlb2YgZT8obi5sb2NhbD9mRjpwRikobixpLHNGKHRoaXMsImF0dHIuIit0LGUpKTpudWxsPT1lPyhuLmxvY2FsP3VGOmNGKShuKToobi5sb2NhbD9kRjpoRikobixpLGUpKX0sYXR0clR3ZWVuOmZ1bmN0aW9uIGpGKHQsZSl7dmFyIG49ImF0dHIuIit0O2lmKGFyZ3VtZW50cy5sZW5ndGg8MilyZXR1cm4obj10aGlzLnR3ZWVuKG4pKSYmbi5fdmFsdWU7aWYobnVsbD09ZSlyZXR1cm4gdGhpcy50d2VlbihuLG51bGwpO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcjt2YXIgaT1Weih0KTtyZXR1cm4gdGhpcy50d2VlbihuLChpLmxvY2FsP19GOnlGKShpLGUpKX0sc3R5bGU6ZnVuY3Rpb24gR0YodCxlLG4pe3ZhciBpPSJ0cmFuc2Zvcm0iPT0odCs9IiIpP05IOmxGO3JldHVybiBudWxsPT1lP3RoaXMuc3R5bGVUd2Vlbih0LChmdW5jdGlvbiByKHQsZSl7dmFyIG4saSxyO3JldHVybiBmdW5jdGlvbigpe3ZhciBvPWhEKHRoaXMsdCksYT0odGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0KSxoRCh0aGlzLHQpKTtyZXR1cm4gbz09PWE/bnVsbDpvPT09biYmYT09PWk/cjpyPWUobj1vLGk9YSl9fSkodCxpKSkub24oImVuZC5zdHlsZS4iK3QsVEYodCkpOiJmdW5jdGlvbiI9PXR5cGVvZiBlP3RoaXMuc3R5bGVUd2Vlbih0LChmdW5jdGlvbiBhKHQsZSxuKXt2YXIgaSxyLG87cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGE9aEQodGhpcyx0KSxzPW4odGhpcyksbD1zKyIiO3JldHVybiBudWxsPT1zJiYodGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0KSxsPXM9aEQodGhpcyx0KSksYT09PWw/bnVsbDphPT09aSYmbD09PXI/bzoocj1sLG89ZShpPWEscykpfX0pKHQsaSxzRih0aGlzLCJzdHlsZS4iK3QsZSkpKS5lYWNoKChmdW5jdGlvbiBvKHQsZSl7dmFyIG4saSxyLG8sYT0ic3R5bGUuIitlLHM9ImVuZC4iK2E7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGw9bkYodGhpcyx0KSxjPWwub24sdT1udWxsPT1sLnZhbHVlW2FdP298fChvPVRGKGUpKTp2b2lkIDA7Yz09PW4mJnI9PT11fHwoaT0obj1jKS5jb3B5KCkpLm9uKHMscj11KSxsLm9uPWl9fSkodGhpcy5faWQsdCkpOnRoaXMuc3R5bGVUd2Vlbih0LChmdW5jdGlvbiBzKHQsZSxuKXt2YXIgaSxyLG89bisiIjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYT1oRCh0aGlzLHQpO3JldHVybiBhPT09bz9udWxsOmE9PT1pP3I6cj1lKGk9YSxuKX19KSh0LGksZSksbikub24oImVuZC5zdHlsZS4iK3QsbnVsbCl9LHN0eWxlVHdlZW46ZnVuY3Rpb24gV0YodCxlLG4pe3ZhciBpPSJzdHlsZS4iKyh0Kz0iIik7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXJldHVybihpPXRoaXMudHdlZW4oaSkpJiZpLl92YWx1ZTtpZihudWxsPT1lKXJldHVybiB0aGlzLnR3ZWVuKGksbnVsbCk7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yO3JldHVybiB0aGlzLnR3ZWVuKGksQUYodCxlLG51bGw9PW4/IiI6bikpfSx0ZXh0OmZ1bmN0aW9uIHFGKHQpe3JldHVybiB0aGlzLnR3ZWVuKCJ0ZXh0IiwiZnVuY3Rpb24iPT10eXBlb2YgdD8oZnVuY3Rpb24gZSh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10KHRoaXMpO3RoaXMudGV4dENvbnRlbnQ9bnVsbD09ZT8iIjplfX0pKHNGKHRoaXMsInRleHQiLHQpKTooZnVuY3Rpb24gbih0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnRleHRDb250ZW50PXR9fSkobnVsbD09dD8iIjp0KyIiKSl9LHRleHRUd2VlbjpmdW5jdGlvbiBZRih0KXt2YXIgZT0idGV4dCI7aWYoYXJndW1lbnRzLmxlbmd0aDwxKXJldHVybihlPXRoaXMudHdlZW4oZSkpJiZlLl92YWx1ZTtpZihudWxsPT10KXJldHVybiB0aGlzLnR3ZWVuKGUsbnVsbCk7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IEVycm9yO3JldHVybiB0aGlzLnR3ZWVuKGUsTEYodCkpfSxyZW1vdmU6ZnVuY3Rpb24gWEYoKXtyZXR1cm4gdGhpcy5vbigiZW5kLnJlbW92ZSIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5wYXJlbnROb2RlO2Zvcih2YXIgbiBpbiB0aGlzLl9fdHJhbnNpdGlvbilpZigrbiE9PWUpcmV0dXJuO3QmJnQucmVtb3ZlQ2hpbGQodGhpcyl9fSkodGhpcy5faWQpKX0sdHdlZW46ZnVuY3Rpb24gJEYodCxlKXt2YXIgbj10aGlzLl9pZDtpZih0Kz0iIixhcmd1bWVudHMubGVuZ3RoPDIpe2Zvcih2YXIgaSxyPWlGKHRoaXMubm9kZSgpLG4pLnR3ZWVuLG89MCxhPXIubGVuZ3RoO288YTsrK28paWYoKGk9cltvXSkubmFtZT09PXQpcmV0dXJuIGkudmFsdWU7cmV0dXJuIG51bGx9cmV0dXJuIHRoaXMuZWFjaCgobnVsbD09ZT9vRjphRikobix0LGUpKX0sZGVsYXk6ZnVuY3Rpb24gS0YodCl7dmFyIGU9dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKCgiZnVuY3Rpb24iPT10eXBlb2YgdD92RjpiRikoZSx0KSk6aUYodGhpcy5ub2RlKCksZSkuZGVsYXl9LGR1cmF0aW9uOmZ1bmN0aW9uIFpGKHQpe3ZhciBlPXRoaXMuX2lkO3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaCgoImZ1bmN0aW9uIj09dHlwZW9mIHQ/eEY6d0YpKGUsdCkpOmlGKHRoaXMubm9kZSgpLGUpLmR1cmF0aW9ufSxlYXNlOmZ1bmN0aW9uIEpGKHQpe3ZhciBlPXRoaXMuX2lkO3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaChTRihlLHQpKTppRih0aGlzLm5vZGUoKSxlKS5lYXNlfSxlbmQ6ZnVuY3Rpb24gUUYoKXt2YXIgdCxlLG49dGhpcyxpPW4uX2lkLHI9bi5zaXplKCk7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihvLGEpe3ZhciBzPXt2YWx1ZTphfSxsPXt2YWx1ZTpmdW5jdGlvbigpezA9PS0tciYmbygpfX07bi5lYWNoKChmdW5jdGlvbigpe3ZhciBuPW5GKHRoaXMsaSkscj1uLm9uO3IhPT10JiYoKGU9KHQ9cikuY29weSgpKS5fLmNhbmNlbC5wdXNoKHMpLGUuXy5pbnRlcnJ1cHQucHVzaChzKSxlLl8uZW5kLnB1c2gobCkpLG4ub249ZX0pKX0pKX19O3ZhciB0Vj17dGltZTpudWxsLGRlbGF5OjAsZHVyYXRpb246MjUwLGVhc2U6cWZ9O2Z1bmN0aW9uIGVWKHQsZSl7Zm9yKHZhciBuOyEobj10Ll9fdHJhbnNpdGlvbil8fCEobj1uW2VdKTspaWYoISh0PXQucGFyZW50Tm9kZSkpcmV0dXJuIHRWLnRpbWU9R0goKSx0VjtyZXR1cm4gbn1mdW5jdGlvbiBuVih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gaVYodCxlLG4pe3RoaXMudGFyZ2V0PXQsdGhpcy50eXBlPWUsdGhpcy5zZWxlY3Rpb249bn1mdW5jdGlvbiByVigpe3pELnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpfWZ1bmN0aW9uIG9WKCl7ekQucHJldmVudERlZmF1bHQoKSx6RC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKX1ZRC5wcm90b3R5cGUuaW50ZXJydXB0PWZ1bmN0aW9uIGFWKHQpe3JldHVybiB0aGlzLmVhY2goKGZ1bmN0aW9uKCl7ckYodGhpcyx0KX0pKX0sWUQucHJvdG90eXBlLnRyYW5zaXRpb249ZnVuY3Rpb24gc1YodCl7dmFyIGUsbjt0IGluc3RhbmNlb2YgTkY/KGU9dC5faWQsdD10Ll9uYW1lKTooZT1JRigpLChuPXRWKS50aW1lPUdIKCksdD1udWxsPT10P251bGw6dCsiIik7Zm9yKHZhciBpPXRoaXMuX2dyb3VwcyxyPWkubGVuZ3RoLG89MDtvPHI7KytvKWZvcih2YXIgYSxzPWlbb10sbD1zLmxlbmd0aCxjPTA7YzxsOysrYykoYT1zW2NdKSYmdEYoYSx0LGUsYyxzLG58fGVWKGEsZSkpO3JldHVybiBuZXcgTkYoaSx0aGlzLl9wYXJlbnRzLHQsZSl9O3ZhciBsVj17bmFtZToiZHJhZyJ9LGNWPXtuYW1lOiJzcGFjZSJ9LHVWPXtuYW1lOiJoYW5kbGUifSxoVj17bmFtZToiY2VudGVyIn0sZFY9e25hbWU6IngiLGhhbmRsZXM6WyJlIiwidyJdLm1hcChiViksaW5wdXQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdCYmW1t0WzBdLGVbMF1bMV1dLFt0WzFdLGVbMV1bMV1dXX0sb3V0cHV0OmZ1bmN0aW9uKHQpe3JldHVybiB0JiZbdFswXVswXSx0WzFdWzBdXX19LHBWPXtuYW1lOiJ5IixoYW5kbGVzOlsibiIsInMiXS5tYXAoYlYpLGlucHV0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQmJltbZVswXVswXSx0WzBdXSxbZVsxXVswXSx0WzFdXV19LG91dHB1dDpmdW5jdGlvbih0KXtyZXR1cm4gdCYmW3RbMF1bMV0sdFsxXVsxXV19fSxmVj17bmFtZToieHkiLGhhbmRsZXM6WyJuIiwiZSIsInMiLCJ3IiwibnciLCJuZSIsInNlIiwic3ciXS5tYXAoYlYpLGlucHV0OmZ1bmN0aW9uKHQpe3JldHVybiB0fSxvdXRwdXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHR9fSxtVj17b3ZlcmxheToiY3Jvc3NoYWlyIixzZWxlY3Rpb246Im1vdmUiLG46Im5zLXJlc2l6ZSIsZToiZXctcmVzaXplIixzOiJucy1yZXNpemUiLHc6ImV3LXJlc2l6ZSIsbnc6Im53c2UtcmVzaXplIixuZToibmVzdy1yZXNpemUiLHNlOiJud3NlLXJlc2l6ZSIsc3c6Im5lc3ctcmVzaXplIn0sZ1Y9e2U6InciLHc6ImUiLG53OiJuZSIsbmU6Im53IixzZToic3ciLHN3OiJzZSJ9LF9WPXtuOiJzIixzOiJuIixudzoic3ciLG5lOiJzZSIsc2U6Im5lIixzdzoibncifSx5Vj17b3ZlcmxheToxLHNlbGVjdGlvbjoxLG46bnVsbCxlOjEsczpudWxsLHc6LTEsbnc6LTEsbmU6MSxzZToxLHN3Oi0xfSx2Vj17b3ZlcmxheToxLHNlbGVjdGlvbjoxLG46LTEsZTpudWxsLHM6MSx3Om51bGwsbnc6LTEsbmU6LTEsc2U6MSxzdzoxfTtmdW5jdGlvbiBiVih0KXtyZXR1cm57dHlwZTp0fX1mdW5jdGlvbiB4Vigpe3JldHVybiF6RC5idXR0b259ZnVuY3Rpb24gd1YoKXt2YXIgdD10aGlzLm93bmVyU1ZHRWxlbWVudHx8dGhpcztyZXR1cm5bWzAsMF0sW3Qud2lkdGguYmFzZVZhbC52YWx1ZSx0LmhlaWdodC5iYXNlVmFsLnZhbHVlXV19ZnVuY3Rpb24gU1YodCl7Zm9yKDshdC5fX2JydXNoOylpZighKHQ9dC5wYXJlbnROb2RlKSlyZXR1cm47cmV0dXJuIHQuX19icnVzaH1mdW5jdGlvbiBNVih0KXtyZXR1cm4gdFswXVswXT09PXRbMV1bMF18fHRbMF1bMV09PT10WzFdWzFdfWZ1bmN0aW9uIEVWKHQpe3ZhciBlLG49d1YsaT14VixyPVJ6KGEsInN0YXJ0IiwiYnJ1c2giLCJlbmQiKSxvPTY7ZnVuY3Rpb24gYShlKXt2YXIgbj1lLnByb3BlcnR5KCJfX2JydXNoIixoKS5zZWxlY3RBbGwoIi5vdmVybGF5IikuZGF0YShbYlYoIm92ZXJsYXkiKV0pO24uZW50ZXIoKS5hcHBlbmQoInJlY3QiKS5hdHRyKCJjbGFzcyIsIm92ZXJsYXkiKS5hdHRyKCJwb2ludGVyLWV2ZW50cyIsImFsbCIpLmF0dHIoImN1cnNvciIsbVYub3ZlcmxheSkubWVyZ2UobikuZWFjaCgoZnVuY3Rpb24oKXt2YXIgdD1TVih0aGlzKS5leHRlbnQ7WEQodGhpcykuYXR0cigieCIsdFswXVswXSkuYXR0cigieSIsdFswXVsxXSkuYXR0cigid2lkdGgiLHRbMV1bMF0tdFswXVswXSkuYXR0cigiaGVpZ2h0Iix0WzFdWzFdLXRbMF1bMV0pfSkpLGUuc2VsZWN0QWxsKCIuc2VsZWN0aW9uIikuZGF0YShbYlYoInNlbGVjdGlvbiIpXSkuZW50ZXIoKS5hcHBlbmQoInJlY3QiKS5hdHRyKCJjbGFzcyIsInNlbGVjdGlvbiIpLmF0dHIoImN1cnNvciIsbVYuc2VsZWN0aW9uKS5hdHRyKCJmaWxsIiwiIzc3NyIpLmF0dHIoImZpbGwtb3BhY2l0eSIsLjMpLmF0dHIoInN0cm9rZSIsIiNmZmYiKS5hdHRyKCJzaGFwZS1yZW5kZXJpbmciLCJjcmlzcEVkZ2VzIik7dmFyIGk9ZS5zZWxlY3RBbGwoIi5oYW5kbGUiKS5kYXRhKHQuaGFuZGxlcywoZnVuY3Rpb24odCl7cmV0dXJuIHQudHlwZX0pKTtpLmV4aXQoKS5yZW1vdmUoKSxpLmVudGVyKCkuYXBwZW5kKCJyZWN0IikuYXR0cigiY2xhc3MiLChmdW5jdGlvbih0KXtyZXR1cm4iaGFuZGxlIGhhbmRsZS0tIit0LnR5cGV9KSkuYXR0cigiY3Vyc29yIiwoZnVuY3Rpb24odCl7cmV0dXJuIG1WW3QudHlwZV19KSksZS5lYWNoKHMpLmF0dHIoImZpbGwiLCJub25lIikuYXR0cigicG9pbnRlci1ldmVudHMiLCJhbGwiKS5zdHlsZSgiLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yIiwicmdiYSgwLDAsMCwwKSIpLm9uKCJtb3VzZWRvd24uYnJ1c2ggdG91Y2hzdGFydC5icnVzaCIsdSl9ZnVuY3Rpb24gcygpe3ZhciB0PVhEKHRoaXMpLGU9U1YodGhpcykuc2VsZWN0aW9uO2U/KHQuc2VsZWN0QWxsKCIuc2VsZWN0aW9uIikuc3R5bGUoImRpc3BsYXkiLG51bGwpLmF0dHIoIngiLGVbMF1bMF0pLmF0dHIoInkiLGVbMF1bMV0pLmF0dHIoIndpZHRoIixlWzFdWzBdLWVbMF1bMF0pLmF0dHIoImhlaWdodCIsZVsxXVsxXS1lWzBdWzFdKSx0LnNlbGVjdEFsbCgiLmhhbmRsZSIpLnN0eWxlKCJkaXNwbGF5IixudWxsKS5hdHRyKCJ4IiwoZnVuY3Rpb24odCl7cmV0dXJuImUiPT09dC50eXBlW3QudHlwZS5sZW5ndGgtMV0/ZVsxXVswXS1vLzI6ZVswXVswXS1vLzJ9KSkuYXR0cigieSIsKGZ1bmN0aW9uKHQpe3JldHVybiJzIj09PXQudHlwZVswXT9lWzFdWzFdLW8vMjplWzBdWzFdLW8vMn0pKS5hdHRyKCJ3aWR0aCIsKGZ1bmN0aW9uKHQpe3JldHVybiJuIj09PXQudHlwZXx8InMiPT09dC50eXBlP2VbMV1bMF0tZVswXVswXStvOm99KSkuYXR0cigiaGVpZ2h0IiwoZnVuY3Rpb24odCl7cmV0dXJuImUiPT09dC50eXBlfHwidyI9PT10LnR5cGU/ZVsxXVsxXS1lWzBdWzFdK286b30pKSk6dC5zZWxlY3RBbGwoIi5zZWxlY3Rpb24sLmhhbmRsZSIpLnN0eWxlKCJkaXNwbGF5Iiwibm9uZSIpLmF0dHIoIngiLG51bGwpLmF0dHIoInkiLG51bGwpLmF0dHIoIndpZHRoIixudWxsKS5hdHRyKCJoZWlnaHQiLG51bGwpfWZ1bmN0aW9uIGwodCxlKXtyZXR1cm4gdC5fX2JydXNoLmVtaXR0ZXJ8fG5ldyBjKHQsZSl9ZnVuY3Rpb24gYyh0LGUpe3RoaXMudGhhdD10LHRoaXMuYXJncz1lLHRoaXMuc3RhdGU9dC5fX2JydXNoLHRoaXMuYWN0aXZlPTB9ZnVuY3Rpb24gdSgpe2lmKHpELnRvdWNoZXMpe2lmKHpELmNoYW5nZWRUb3VjaGVzLmxlbmd0aDx6RC50b3VjaGVzLmxlbmd0aClyZXR1cm4gb1YoKX1lbHNlIGlmKGUpcmV0dXJuO2lmKGkuYXBwbHkodGhpcyxhcmd1bWVudHMpKXt2YXIgbixyLG8sYSxjLHUsaCxkLHAsZixtLGcsXyx5PXRoaXMsdj16RC50YXJnZXQuX19kYXRhX18udHlwZSxiPSJzZWxlY3Rpb24iPT09KHpELm1ldGFLZXk/dj0ib3ZlcmxheSI6dik/bFY6ekQuYWx0S2V5P2hWOnVWLHg9dD09PXBWP251bGw6eVZbdl0sdz10PT09ZFY/bnVsbDp2Vlt2XSxTPVNWKHkpLE09Uy5leHRlbnQsRT1TLnNlbGVjdGlvbixUPU1bMF1bMF0sQz1NWzBdWzFdLEE9TVsxXVswXSxrPU1bMV1bMV0sTD14JiZ3JiZ6RC5zaGlmdEtleSxQPSREKHkpLE49UCxJPWwoeSxhcmd1bWVudHMpLmJlZm9yZXN0YXJ0KCk7Im92ZXJsYXkiPT09dj9TLnNlbGVjdGlvbj1FPVtbbj10PT09cFY/VDpQWzBdLG89dD09PWRWP0M6UFsxXV0sW2M9dD09PXBWP0E6bixoPXQ9PT1kVj9rOm9dXToobj1FWzBdWzBdLG89RVswXVsxXSxjPUVbMV1bMF0saD1FWzFdWzFdKSxyPW4sYT1vLHU9YyxkPWg7dmFyIFI9WEQoeSkuYXR0cigicG9pbnRlci1ldmVudHMiLCJub25lIiksTz1SLnNlbGVjdEFsbCgiLm92ZXJsYXkiKS5hdHRyKCJjdXJzb3IiLG1WW3ZdKTtpZih6RC50b3VjaGVzKVIub24oInRvdWNobW92ZS5icnVzaCIsRCwhMCkub24oInRvdWNoZW5kLmJydXNoIHRvdWNoY2FuY2VsLmJydXNoIixILCEwKTtlbHNle3ZhciB6PVhEKHpELnZpZXcpLm9uKCJrZXlkb3duLmJydXNoIixGLCEwKS5vbigia2V5dXAuYnJ1c2giLFYsITApLm9uKCJtb3VzZW1vdmUuYnJ1c2giLEQsITApLm9uKCJtb3VzZXVwLmJydXNoIixILCEwKTtaRCh6RC52aWV3KX1yVigpLHJGKHkpLHMuY2FsbCh5KSxJLnN0YXJ0KCl9ZnVuY3Rpb24gRCgpe3ZhciB0PSREKHkpOyFMfHxnfHxffHwoTWF0aC5hYnModFswXS1OWzBdKT5NYXRoLmFicyh0WzFdLU5bMV0pP189ITA6Zz0hMCksTj10LG09ITAsb1YoKSxCKCl9ZnVuY3Rpb24gQigpe3ZhciB0O3N3aXRjaChwPU5bMF0tUFswXSxmPU5bMV0tUFsxXSxiKXtjYXNlIGNWOmNhc2UgbFY6eCYmKHA9TWF0aC5tYXgoVC1uLE1hdGgubWluKEEtYyxwKSkscj1uK3AsdT1jK3ApLHcmJihmPU1hdGgubWF4KEMtbyxNYXRoLm1pbihrLWgsZikpLGE9bytmLGQ9aCtmKTticmVhaztjYXNlIHVWOng8MD8ocD1NYXRoLm1heChULW4sTWF0aC5taW4oQS1uLHApKSxyPW4rcCx1PWMpOng+MCYmKHA9TWF0aC5tYXgoVC1jLE1hdGgubWluKEEtYyxwKSkscj1uLHU9YytwKSx3PDA/KGY9TWF0aC5tYXgoQy1vLE1hdGgubWluKGstbyxmKSksYT1vK2YsZD1oKTp3PjAmJihmPU1hdGgubWF4KEMtaCxNYXRoLm1pbihrLWgsZikpLGE9byxkPWgrZik7YnJlYWs7Y2FzZSBoVjp4JiYocj1NYXRoLm1heChULE1hdGgubWluKEEsbi1wKngpKSx1PU1hdGgubWF4KFQsTWF0aC5taW4oQSxjK3AqeCkpKSx3JiYoYT1NYXRoLm1heChDLE1hdGgubWluKGssby1mKncpKSxkPU1hdGgubWF4KEMsTWF0aC5taW4oayxoK2YqdykpKX11PHImJih4Kj0tMSx0PW4sbj1jLGM9dCx0PXIscj11LHU9dCx2IGluIGdWJiZPLmF0dHIoImN1cnNvciIsbVZbdj1nVlt2XV0pKSxkPGEmJih3Kj0tMSx0PW8sbz1oLGg9dCx0PWEsYT1kLGQ9dCx2IGluIF9WJiZPLmF0dHIoImN1cnNvciIsbVZbdj1fVlt2XV0pKSxTLnNlbGVjdGlvbiYmKEU9Uy5zZWxlY3Rpb24pLGcmJihyPUVbMF1bMF0sdT1FWzFdWzBdKSxfJiYoYT1FWzBdWzFdLGQ9RVsxXVsxXSksRVswXVswXT09PXImJkVbMF1bMV09PT1hJiZFWzFdWzBdPT09dSYmRVsxXVsxXT09PWR8fChTLnNlbGVjdGlvbj1bW3IsYV0sW3UsZF1dLHMuY2FsbCh5KSxJLmJydXNoKCkpfWZ1bmN0aW9uIEgoKXtpZihyVigpLHpELnRvdWNoZXMpe2lmKHpELnRvdWNoZXMubGVuZ3RoKXJldHVybjtlJiZjbGVhclRpbWVvdXQoZSksZT1zZXRUaW1lb3V0KChmdW5jdGlvbigpe2U9bnVsbH0pLDUwMCksUi5vbigidG91Y2htb3ZlLmJydXNoIHRvdWNoZW5kLmJydXNoIHRvdWNoY2FuY2VsLmJydXNoIixudWxsKX1lbHNlIEpEKHpELnZpZXcsbSksei5vbigia2V5ZG93bi5icnVzaCBrZXl1cC5icnVzaCBtb3VzZW1vdmUuYnJ1c2ggbW91c2V1cC5icnVzaCIsbnVsbCk7Ui5hdHRyKCJwb2ludGVyLWV2ZW50cyIsImFsbCIpLE8uYXR0cigiY3Vyc29yIixtVi5vdmVybGF5KSxTLnNlbGVjdGlvbiYmKEU9Uy5zZWxlY3Rpb24pLE1WKEUpJiYoUy5zZWxlY3Rpb249bnVsbCxzLmNhbGwoeSkpLEkuZW5kKCl9ZnVuY3Rpb24gRigpe3N3aXRjaCh6RC5rZXlDb2RlKXtjYXNlIDE2Okw9eCYmdzticmVhaztjYXNlIDE4OmI9PT11ViYmKHgmJihjPXUtcCp4LG49citwKngpLHcmJihoPWQtZip3LG89YStmKncpLGI9aFYsQigpKTticmVhaztjYXNlIDMyOmIhPT11ViYmYiE9PWhWfHwoeDwwP2M9dS1wOng+MCYmKG49ci1wKSx3PDA/aD1kLWY6dz4wJiYobz1hLWYpLGI9Y1YsTy5hdHRyKCJjdXJzb3IiLG1WLnNlbGVjdGlvbiksQigpKTticmVhaztkZWZhdWx0OnJldHVybn1vVigpfWZ1bmN0aW9uIFYoKXtzd2l0Y2goekQua2V5Q29kZSl7Y2FzZSAxNjpMJiYoZz1fPUw9ITEsQigpKTticmVhaztjYXNlIDE4OmI9PT1oViYmKHg8MD9jPXU6eD4wJiYobj1yKSx3PDA/aD1kOnc+MCYmKG89YSksYj11VixCKCkpO2JyZWFrO2Nhc2UgMzI6Yj09PWNWJiYoekQuYWx0S2V5Pyh4JiYoYz11LXAqeCxuPXIrcCp4KSx3JiYoaD1kLWYqdyxvPWErZip3KSxiPWhWKTooeDwwP2M9dTp4PjAmJihuPXIpLHc8MD9oPWQ6dz4wJiYobz1hKSxiPXVWKSxPLmF0dHIoImN1cnNvciIsbVZbdl0pLEIoKSk7YnJlYWs7ZGVmYXVsdDpyZXR1cm59b1YoKX19ZnVuY3Rpb24gaCgpe3ZhciBlPXRoaXMuX19icnVzaHx8e3NlbGVjdGlvbjpudWxsfTtyZXR1cm4gZS5leHRlbnQ9bi5hcHBseSh0aGlzLGFyZ3VtZW50cyksZS5kaW09dCxlfXJldHVybiBhLm1vdmU9ZnVuY3Rpb24oZSxuKXtlLnNlbGVjdGlvbj9lLm9uKCJzdGFydC5icnVzaCIsKGZ1bmN0aW9uKCl7bCh0aGlzLGFyZ3VtZW50cykuYmVmb3Jlc3RhcnQoKS5zdGFydCgpfSkpLm9uKCJpbnRlcnJ1cHQuYnJ1c2ggZW5kLmJydXNoIiwoZnVuY3Rpb24oKXtsKHRoaXMsYXJndW1lbnRzKS5lbmQoKX0pKS50d2VlbigiYnJ1c2giLChmdW5jdGlvbigpe3ZhciBlPXRoaXMsaT1lLl9fYnJ1c2gscj1sKGUsYXJndW1lbnRzKSxvPWkuc2VsZWN0aW9uLGE9dC5pbnB1dCgiZnVuY3Rpb24iPT10eXBlb2Ygbj9uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTpuLGkuZXh0ZW50KSxjPXhIKG8sYSk7ZnVuY3Rpb24gdSh0KXtpLnNlbGVjdGlvbj0xPT09dCYmTVYoYSk/bnVsbDpjKHQpLHMuY2FsbChlKSxyLmJydXNoKCl9cmV0dXJuIG8mJmE/dTp1KDEpfSkpOmUuZWFjaCgoZnVuY3Rpb24oKXt2YXIgZT10aGlzLGk9YXJndW1lbnRzLHI9ZS5fX2JydXNoLG89dC5pbnB1dCgiZnVuY3Rpb24iPT10eXBlb2Ygbj9uLmFwcGx5KGUsaSk6bixyLmV4dGVudCksYT1sKGUsaSkuYmVmb3Jlc3RhcnQoKTtyRihlKSxyLnNlbGVjdGlvbj1udWxsPT1vfHxNVihvKT9udWxsOm8scy5jYWxsKGUpLGEuc3RhcnQoKS5icnVzaCgpLmVuZCgpfSkpfSxjLnByb3RvdHlwZT17YmVmb3Jlc3RhcnQ6ZnVuY3Rpb24oKXtyZXR1cm4gMT09Kyt0aGlzLmFjdGl2ZSYmKHRoaXMuc3RhdGUuZW1pdHRlcj10aGlzLHRoaXMuc3RhcnRpbmc9ITApLHRoaXN9LHN0YXJ0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3RhcnRpbmcmJih0aGlzLnN0YXJ0aW5nPSExLHRoaXMuZW1pdCgic3RhcnQiKSksdGhpc30sYnJ1c2g6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbWl0KCJicnVzaCIpLHRoaXN9LGVuZDpmdW5jdGlvbigpe3JldHVybiAwPT0tLXRoaXMuYWN0aXZlJiYoZGVsZXRlIHRoaXMuc3RhdGUuZW1pdHRlcix0aGlzLmVtaXQoImVuZCIpKSx0aGlzfSxlbWl0OmZ1bmN0aW9uKGUpeyEoZnVuY3Rpb24gbih0LGUsaSxyKXt2YXIgbz16RDt0LnNvdXJjZUV2ZW50PXpELHpEPXQ7dHJ5e3JldHVybiBlLmFwcGx5KGkscil9ZmluYWxseXt6RD1vfX0pKG5ldyBpVihhLGUsdC5vdXRwdXQodGhpcy5zdGF0ZS5zZWxlY3Rpb24pKSxyLmFwcGx5LHIsW2UsdGhpcy50aGF0LHRoaXMuYXJnc10pfX0sYS5leHRlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpuVihbWyt0WzBdWzBdLCt0WzBdWzFdXSxbK3RbMV1bMF0sK3RbMV1bMV1dXSksYSk6bn0sYS5maWx0ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpuVighIXQpLGEpOml9LGEuaGFuZGxlU2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0rdCxhKTpvfSxhLm9uPWZ1bmN0aW9uKCl7dmFyIHQ9ci5vbi5hcHBseShyLGFyZ3VtZW50cyk7cmV0dXJuIHQ9PT1yP2E6dH0sYX1mdW5jdGlvbiBUVih0LGUpe3JldHVybiB0PGU/LTE6dD5lPzE6dD49ZT8wOk5hTn1mdW5jdGlvbiBDVih0LGUsbil7dD0rdCxlPStlLG49KHI9YXJndW1lbnRzLmxlbmd0aCk8Mj8oZT10LHQ9MCwxKTpyPDM/MTorbjtmb3IodmFyIGk9LTEscj0wfE1hdGgubWF4KDAsTWF0aC5jZWlsKChlLXQpL24pKSxvPW5ldyBBcnJheShyKTsrK2k8cjspb1tpXT10K2kqbjtyZXR1cm4gb30hKGZ1bmN0aW9uIEFWKHQpe3JldHVybiAxPT09dC5sZW5ndGgmJih0PShmdW5jdGlvbiBlKHQpe3JldHVybiBmdW5jdGlvbihlLG4pe3JldHVybiBUVih0KGUpLG4pfX0pKHQpKSx7bGVmdDpmdW5jdGlvbihlLG4saSxyKXtmb3IobnVsbD09aSYmKGk9MCksbnVsbD09ciYmKHI9ZS5sZW5ndGgpO2k8cjspe3ZhciBvPWkrcj4+PjE7dChlW29dLG4pPDA/aT1vKzE6cj1vfXJldHVybiBpfSxyaWdodDpmdW5jdGlvbihlLG4saSxyKXtmb3IobnVsbD09aSYmKGk9MCksbnVsbD09ciYmKHI9ZS5sZW5ndGgpO2k8cjspe3ZhciBvPWkrcj4+PjE7dChlW29dLG4pPjA/cj1vOmk9bysxfXJldHVybiBpfX19KShUVik7dmFyIGtWPU1hdGguY29zLExWPU1hdGguc2luLFBWPU1hdGguUEksTlY9UFYvMixJVj0yKlBWLFJWPU1hdGgubWF4O2Z1bmN0aW9uIE9WKHQpe3JldHVybiBmdW5jdGlvbihlLG4pe3JldHVybiB0KGUuc291cmNlLnZhbHVlK2UudGFyZ2V0LnZhbHVlLG4uc291cmNlLnZhbHVlK24udGFyZ2V0LnZhbHVlKX19dmFyIHpWPUFycmF5LnByb3RvdHlwZS5zbGljZTtmdW5jdGlvbiBEVih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19dmFyIEJWPU1hdGguUEksSFY9MipCVixGVj0xZS02LFZWPUhWLUZWO2Z1bmN0aW9uIFVWKCl7dGhpcy5feDA9dGhpcy5feTA9dGhpcy5feDE9dGhpcy5feTE9bnVsbCx0aGlzLl89IiJ9ZnVuY3Rpb24galYoKXtyZXR1cm4gbmV3IFVWfWZ1bmN0aW9uIEdWKHQpe3JldHVybiB0LnNvdXJjZX1mdW5jdGlvbiBXVih0KXtyZXR1cm4gdC50YXJnZXR9ZnVuY3Rpb24gcVYodCl7cmV0dXJuIHQucmFkaXVzfWZ1bmN0aW9uIFlWKHQpe3JldHVybiB0LnN0YXJ0QW5nbGV9ZnVuY3Rpb24gWFYodCl7cmV0dXJuIHQuZW5kQW5nbGV9VVYucHJvdG90eXBlPWpWLnByb3RvdHlwZT17Y29uc3RydWN0b3I6VVYsbW92ZVRvOmZ1bmN0aW9uKHQsZSl7dGhpcy5fKz0iTSIrKHRoaXMuX3gwPXRoaXMuX3gxPSt0KSsiLCIrKHRoaXMuX3kwPXRoaXMuX3kxPStlKX0sY2xvc2VQYXRoOmZ1bmN0aW9uKCl7bnVsbCE9PXRoaXMuX3gxJiYodGhpcy5feDE9dGhpcy5feDAsdGhpcy5feTE9dGhpcy5feTAsdGhpcy5fKz0iWiIpfSxsaW5lVG86ZnVuY3Rpb24odCxlKXt0aGlzLl8rPSJMIisodGhpcy5feDE9K3QpKyIsIisodGhpcy5feTE9K2UpfSxxdWFkcmF0aWNDdXJ2ZVRvOmZ1bmN0aW9uKHQsZSxuLGkpe3RoaXMuXys9IlEiKyArdCsiLCIrICtlKyIsIisodGhpcy5feDE9K24pKyIsIisodGhpcy5feTE9K2kpfSxiZXppZXJDdXJ2ZVRvOmZ1bmN0aW9uKHQsZSxuLGkscixvKXt0aGlzLl8rPSJDIisgK3QrIiwiKyArZSsiLCIrICtuKyIsIisgK2krIiwiKyh0aGlzLl94MT0rcikrIiwiKyh0aGlzLl95MT0rbyl9LGFyY1RvOmZ1bmN0aW9uKHQsZSxuLGkscil7dmFyIG89dGhpcy5feDEsYT10aGlzLl95MSxzPShuPStuKS0odD0rdCksbD0oaT0raSktKGU9K2UpLGM9by10LHU9YS1lLGg9YypjK3UqdTtpZigocj0rcik8MCl0aHJvdyBuZXcgRXJyb3IoIm5lZ2F0aXZlIHJhZGl1czogIityKTtpZihudWxsPT09dGhpcy5feDEpdGhpcy5fKz0iTSIrKHRoaXMuX3gxPXQpKyIsIisodGhpcy5feTE9ZSk7ZWxzZSBpZihoPkZWKWlmKE1hdGguYWJzKHUqcy1sKmMpPkZWJiZyKXt2YXIgZD1uLW8scD1pLWEsZj1zKnMrbCpsLG09ZCpkK3AqcCxnPU1hdGguc3FydChmKSxfPU1hdGguc3FydChoKSx5PXIqTWF0aC50YW4oKEJWLU1hdGguYWNvcygoZitoLW0pLygyKmcqXykpKS8yKSx2PXkvXyxiPXkvZztNYXRoLmFicyh2LTEpPkZWJiYodGhpcy5fKz0iTCIrKHQrdipjKSsiLCIrKGUrdip1KSksdGhpcy5fKz0iQSIrcisiLCIrcisiLDAsMCwiKyArKHUqZD5jKnApKyIsIisodGhpcy5feDE9dCtiKnMpKyIsIisodGhpcy5feTE9ZStiKmwpfWVsc2UgdGhpcy5fKz0iTCIrKHRoaXMuX3gxPXQpKyIsIisodGhpcy5feTE9ZSk7ZWxzZTt9LGFyYzpmdW5jdGlvbih0LGUsbixpLHIsbyl7dD0rdCxlPStlLG89ISFvO3ZhciBhPShuPStuKSpNYXRoLmNvcyhpKSxzPW4qTWF0aC5zaW4oaSksbD10K2EsYz1lK3MsdT0xXm8saD1vP2ktcjpyLWk7aWYobjwwKXRocm93IG5ldyBFcnJvcigibmVnYXRpdmUgcmFkaXVzOiAiK24pO251bGw9PT10aGlzLl94MT90aGlzLl8rPSJNIitsKyIsIitjOihNYXRoLmFicyh0aGlzLl94MS1sKT5GVnx8TWF0aC5hYnModGhpcy5feTEtYyk+RlYpJiYodGhpcy5fKz0iTCIrbCsiLCIrYyksbiYmKGg8MCYmKGg9aCVIVitIViksaD5WVj90aGlzLl8rPSJBIituKyIsIituKyIsMCwxLCIrdSsiLCIrKHQtYSkrIiwiKyhlLXMpKyJBIituKyIsIituKyIsMCwxLCIrdSsiLCIrKHRoaXMuX3gxPWwpKyIsIisodGhpcy5feTE9Yyk6aD5GViYmKHRoaXMuXys9IkEiK24rIiwiK24rIiwwLCIrICsoaD49QlYpKyIsIit1KyIsIisodGhpcy5feDE9dCtuKk1hdGguY29zKHIpKSsiLCIrKHRoaXMuX3kxPWUrbipNYXRoLnNpbihyKSkpKX0scmVjdDpmdW5jdGlvbih0LGUsbixpKXt0aGlzLl8rPSJNIisodGhpcy5feDA9dGhpcy5feDE9K3QpKyIsIisodGhpcy5feTA9dGhpcy5feTE9K2UpKyJoIisgK24rInYiKyAraSsiaCIrLW4rIloifSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiB0aGlzLl99fTt2YXIgJFY9IiQiO2Z1bmN0aW9uIEtWKCl7fWZ1bmN0aW9uIFpWKHQsZSl7dmFyIG49bmV3IEtWO2lmKHQgaW5zdGFuY2VvZiBLVil0LmVhY2goKGZ1bmN0aW9uKHQsZSl7bi5zZXQoZSx0KX0pKTtlbHNlIGlmKEFycmF5LmlzQXJyYXkodCkpe3ZhciBpLHI9LTEsbz10Lmxlbmd0aDtpZihudWxsPT1lKWZvcig7KytyPG87KW4uc2V0KHIsdFtyXSk7ZWxzZSBmb3IoOysrcjxvOyluLnNldChlKGk9dFtyXSxyLHQpLGkpfWVsc2UgaWYodClmb3IodmFyIGEgaW4gdCluLnNldChhLHRbYV0pO3JldHVybiBufWZ1bmN0aW9uIEpWKCl7cmV0dXJue319ZnVuY3Rpb24gUVYodCxlLG4pe3RbZV09bn1mdW5jdGlvbiB0VSgpe3JldHVybiBaVigpfWZ1bmN0aW9uIGVVKHQsZSxuKXt0LnNldChlLG4pfWZ1bmN0aW9uIG5VKCl7fUtWLnByb3RvdHlwZT1aVi5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOktWLGhhczpmdW5jdGlvbih0KXtyZXR1cm4gJFYrdCBpbiB0aGlzfSxnZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXNbJFYrdF19LHNldDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzWyRWK3RdPWUsdGhpc30scmVtb3ZlOmZ1bmN0aW9uKHQpe3ZhciBlPSRWK3Q7cmV0dXJuIGUgaW4gdGhpcyYmZGVsZXRlIHRoaXNbZV19LGNsZWFyOmZ1bmN0aW9uKCl7Zm9yKHZhciB0IGluIHRoaXMpdFswXT09PSRWJiZkZWxldGUgdGhpc1t0XX0sa2V5czpmdW5jdGlvbigpe3ZhciB0PVtdO2Zvcih2YXIgZSBpbiB0aGlzKWVbMF09PT0kViYmdC5wdXNoKGUuc2xpY2UoMSkpO3JldHVybiB0fSx2YWx1ZXM6ZnVuY3Rpb24oKXt2YXIgdD1bXTtmb3IodmFyIGUgaW4gdGhpcyllWzBdPT09JFYmJnQucHVzaCh0aGlzW2VdKTtyZXR1cm4gdH0sZW50cmllczpmdW5jdGlvbigpe3ZhciB0PVtdO2Zvcih2YXIgZSBpbiB0aGlzKWVbMF09PT0kViYmdC5wdXNoKHtrZXk6ZS5zbGljZSgxKSx2YWx1ZTp0aGlzW2VdfSk7cmV0dXJuIHR9LHNpemU6ZnVuY3Rpb24oKXt2YXIgdD0wO2Zvcih2YXIgZSBpbiB0aGlzKWVbMF09PT0kViYmKyt0O3JldHVybiB0fSxlbXB0eTpmdW5jdGlvbigpe2Zvcih2YXIgdCBpbiB0aGlzKWlmKHRbMF09PT0kVilyZXR1cm4hMTtyZXR1cm4hMH0sZWFjaDpmdW5jdGlvbih0KXtmb3IodmFyIGUgaW4gdGhpcyllWzBdPT09JFYmJnQodGhpc1tlXSxlLnNsaWNlKDEpLHRoaXMpfX07dmFyIGlVPVpWLnByb3RvdHlwZTtmdW5jdGlvbiByVSh0LGUpe3ZhciBuPW5ldyBuVTtpZih0IGluc3RhbmNlb2YgblUpdC5lYWNoKChmdW5jdGlvbih0KXtuLmFkZCh0KX0pKTtlbHNlIGlmKHQpe3ZhciBpPS0xLHI9dC5sZW5ndGg7aWYobnVsbD09ZSlmb3IoOysraTxyOyluLmFkZCh0W2ldKTtlbHNlIGZvcig7KytpPHI7KW4uYWRkKGUodFtpXSxpLHQpKX1yZXR1cm4gbn1mdW5jdGlvbiBvVSh0LGUsbil7dC5wcm90b3R5cGU9ZS5wcm90b3R5cGU9bixuLmNvbnN0cnVjdG9yPXR9ZnVuY3Rpb24gYVUodCxlKXt2YXIgbj1PYmplY3QuY3JlYXRlKHQucHJvdG90eXBlKTtmb3IodmFyIGkgaW4gZSluW2ldPWVbaV07cmV0dXJuIG59ZnVuY3Rpb24gc1UoKXt9blUucHJvdG90eXBlPXJVLnByb3RvdHlwZT17Y29uc3RydWN0b3I6blUsaGFzOmlVLmhhcyxhZGQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXNbJFYrKHQrPSIiKV09dCx0aGlzfSxyZW1vdmU6aVUucmVtb3ZlLGNsZWFyOmlVLmNsZWFyLHZhbHVlczppVS5rZXlzLHNpemU6aVUuc2l6ZSxlbXB0eTppVS5lbXB0eSxlYWNoOmlVLmVhY2h9O3ZhciBsVT0uNyxjVT0xL2xVLHVVPSJcXHMqKFsrLV0/XFxkKylcXHMqIixoVT0iXFxzKihbKy1dP1xcZCpcXC4/XFxkKyg/OltlRV1bKy1dP1xcZCspPylcXHMqIixkVT0iXFxzKihbKy1dP1xcZCpcXC4/XFxkKyg/OltlRV1bKy1dP1xcZCspPyklXFxzKiIscFU9L14jKFswLTlhLWZdezN9KSQvLGZVPS9eIyhbMC05YS1mXXs2fSkkLyxtVT1uZXcgUmVnRXhwKCJecmdiXFwoIitbdVUsdVUsdVVdKyJcXCkkIiksZ1U9bmV3IFJlZ0V4cCgiXnJnYlxcKCIrW2RVLGRVLGRVXSsiXFwpJCIpLF9VPW5ldyBSZWdFeHAoIl5yZ2JhXFwoIitbdVUsdVUsdVUsaFVdKyJcXCkkIikseVU9bmV3IFJlZ0V4cCgiXnJnYmFcXCgiK1tkVSxkVSxkVSxoVV0rIlxcKSQiKSx2VT1uZXcgUmVnRXhwKCJeaHNsXFwoIitbaFUsZFUsZFVdKyJcXCkkIiksYlU9bmV3IFJlZ0V4cCgiXmhzbGFcXCgiK1toVSxkVSxkVSxoVV0rIlxcKSQiKSx4VT17YWxpY2VibHVlOjE1NzkyMzgzLGFudGlxdWV3aGl0ZToxNjQ0NDM3NSxhcXVhOjY1NTM1LGFxdWFtYXJpbmU6ODM4ODU2NCxhenVyZToxNTc5NDE3NSxiZWlnZToxNjExOTI2MCxiaXNxdWU6MTY3NzAyNDQsYmxhY2s6MCxibGFuY2hlZGFsbW9uZDoxNjc3MjA0NSxibHVlOjI1NSxibHVldmlvbGV0OjkwNTUyMDIsYnJvd246MTA4MjQyMzQsYnVybHl3b29kOjE0NTk2MjMxLGNhZGV0Ymx1ZTo2MjY2NTI4LGNoYXJ0cmV1c2U6ODM4ODM1MixjaG9jb2xhdGU6MTM3ODk0NzAsY29yYWw6MTY3NDQyNzIsY29ybmZsb3dlcmJsdWU6NjU5MTk4MSxjb3Juc2lsazoxNjc3NTM4OCxjcmltc29uOjE0NDIzMTAwLGN5YW46NjU1MzUsZGFya2JsdWU6MTM5LGRhcmtjeWFuOjM1NzIzLGRhcmtnb2xkZW5yb2Q6MTIwOTI5MzksZGFya2dyYXk6MTExMTkwMTcsZGFya2dyZWVuOjI1NjAwLGRhcmtncmV5OjExMTE5MDE3LGRhcmtraGFraToxMjQzMzI1OSxkYXJrbWFnZW50YTo5MTA5NjQzLGRhcmtvbGl2ZWdyZWVuOjU1OTc5OTksZGFya29yYW5nZToxNjc0NzUyMCxkYXJrb3JjaGlkOjEwMDQwMDEyLGRhcmtyZWQ6OTEwOTUwNCxkYXJrc2FsbW9uOjE1MzA4NDEwLGRhcmtzZWFncmVlbjo5NDE5OTE5LGRhcmtzbGF0ZWJsdWU6NDczNDM0NyxkYXJrc2xhdGVncmF5OjMxMDA0OTUsZGFya3NsYXRlZ3JleTozMTAwNDk1LGRhcmt0dXJxdW9pc2U6NTI5NDUsZGFya3Zpb2xldDo5Njk5NTM5LGRlZXBwaW5rOjE2NzE2OTQ3LGRlZXBza3libHVlOjQ5MTUxLGRpbWdyYXk6NjkwODI2NSxkaW1ncmV5OjY5MDgyNjUsZG9kZ2VyYmx1ZToyMDAzMTk5LGZpcmVicmljazoxMTY3NDE0NixmbG9yYWx3aGl0ZToxNjc3NTkyMCxmb3Jlc3RncmVlbjoyMjYzODQyLGZ1Y2hzaWE6MTY3MTE5MzUsZ2FpbnNib3JvOjE0NDc0NDYwLGdob3N0d2hpdGU6MTYzMTY2NzEsZ29sZDoxNjc2NjcyMCxnb2xkZW5yb2Q6MTQzMjkxMjAsZ3JheTo4NDIxNTA0LGdyZWVuOjMyNzY4LGdyZWVueWVsbG93OjExNDAzMDU1LGdyZXk6ODQyMTUwNCxob25leWRldzoxNTc5NDE2MCxob3RwaW5rOjE2NzM4NzQwLGluZGlhbnJlZDoxMzQ1ODUyNCxpbmRpZ286NDkxNTMzMCxpdm9yeToxNjc3NzIwMCxraGFraToxNTc4NzY2MCxsYXZlbmRlcjoxNTEzMjQxMCxsYXZlbmRlcmJsdXNoOjE2NzczMzY1LGxhd25ncmVlbjo4MTkwOTc2LGxlbW9uY2hpZmZvbjoxNjc3NTg4NSxsaWdodGJsdWU6MTEzOTMyNTQsbGlnaHRjb3JhbDoxNTc2MTUzNixsaWdodGN5YW46MTQ3NDU1OTksbGlnaHRnb2xkZW5yb2R5ZWxsb3c6MTY0NDgyMTAsbGlnaHRncmF5OjEzODgyMzIzLGxpZ2h0Z3JlZW46OTQ5ODI1NixsaWdodGdyZXk6MTM4ODIzMjMsbGlnaHRwaW5rOjE2NzU4NDY1LGxpZ2h0c2FsbW9uOjE2NzUyNzYyLGxpZ2h0c2VhZ3JlZW46MjE0Mjg5MCxsaWdodHNreWJsdWU6ODkwMDM0NixsaWdodHNsYXRlZ3JheTo3ODMzNzUzLGxpZ2h0c2xhdGVncmV5Ojc4MzM3NTMsbGlnaHRzdGVlbGJsdWU6MTE1ODQ3MzQsbGlnaHR5ZWxsb3c6MTY3NzcxODQsbGltZTo2NTI4MCxsaW1lZ3JlZW46MzMyOTMzMCxsaW5lbjoxNjQ0NTY3MCxtYWdlbnRhOjE2NzExOTM1LG1hcm9vbjo4Mzg4NjA4LG1lZGl1bWFxdWFtYXJpbmU6NjczNzMyMixtZWRpdW1ibHVlOjIwNSxtZWRpdW1vcmNoaWQ6MTIyMTE2NjcsbWVkaXVtcHVycGxlOjk2NjI2ODMsbWVkaXVtc2VhZ3JlZW46Mzk3ODA5NyxtZWRpdW1zbGF0ZWJsdWU6ODA4Nzc5MCxtZWRpdW1zcHJpbmdncmVlbjo2NDE1NCxtZWRpdW10dXJxdW9pc2U6NDc3MjMwMCxtZWRpdW12aW9sZXRyZWQ6MTMwNDcxNzMsbWlkbmlnaHRibHVlOjE2NDQ5MTIsbWludGNyZWFtOjE2MTIxODUwLG1pc3R5cm9zZToxNjc3MDI3Myxtb2NjYXNpbjoxNjc3MDIyOSxuYXZham93aGl0ZToxNjc2ODY4NSxuYXZ5OjEyOCxvbGRsYWNlOjE2NjQzNTU4LG9saXZlOjg0MjEzNzYsb2xpdmVkcmFiOjcwNDg3Mzksb3JhbmdlOjE2NzUzOTIwLG9yYW5nZXJlZDoxNjcyOTM0NCxvcmNoaWQ6MTQzMTU3MzQscGFsZWdvbGRlbnJvZDoxNTY1NzEzMCxwYWxlZ3JlZW46MTAwMjU4ODAscGFsZXR1cnF1b2lzZToxMTUyOTk2NixwYWxldmlvbGV0cmVkOjE0MzgxMjAzLHBhcGF5YXdoaXA6MTY3NzMwNzcscGVhY2hwdWZmOjE2NzY3NjczLHBlcnU6MTM0Njg5OTEscGluazoxNjc2MTAzNSxwbHVtOjE0NTI0NjM3LHBvd2RlcmJsdWU6MTE1OTE5MTAscHVycGxlOjgzODg3MzYscmViZWNjYXB1cnBsZTo2Njk3ODgxLHJlZDoxNjcxMTY4MCxyb3N5YnJvd246MTIzNTc1MTkscm95YWxibHVlOjQyODY5NDUsc2FkZGxlYnJvd246OTEyNzE4NyxzYWxtb246MTY0MTY4ODIsc2FuZHlicm93bjoxNjAzMjg2NCxzZWFncmVlbjozMDUwMzI3LHNlYXNoZWxsOjE2Nzc0NjM4LHNpZW5uYToxMDUwNjc5NyxzaWx2ZXI6MTI2MzIyNTYsc2t5Ymx1ZTo4OTAwMzMxLHNsYXRlYmx1ZTo2OTcwMDYxLHNsYXRlZ3JheTo3MzcyOTQ0LHNsYXRlZ3JleTo3MzcyOTQ0LHNub3c6MTY3NzU5MzAsc3ByaW5nZ3JlZW46NjU0MDcsc3RlZWxibHVlOjQ2MjA5ODAsdGFuOjEzODA4NzgwLHRlYWw6MzI4OTYsdGhpc3RsZToxNDIwNDg4OCx0b21hdG86MTY3MzcwOTUsdHVycXVvaXNlOjQyNTE4NTYsdmlvbGV0OjE1NjMxMDg2LHdoZWF0OjE2MTEzMzMxLHdoaXRlOjE2Nzc3MjE1LHdoaXRlc21va2U6MTYxMTkyODUseWVsbG93OjE2Nzc2OTYwLHllbGxvd2dyZWVuOjEwMTQ1MDc0fTtmdW5jdGlvbiB3VSh0KXt2YXIgZTtyZXR1cm4gdD0odCsiIikudHJpbSgpLnRvTG93ZXJDYXNlKCksKGU9cFUuZXhlYyh0KSk/bmV3IENVKChlPXBhcnNlSW50KGVbMV0sMTYpKT4+OCYxNXxlPj40JjI0MCxlPj40JjE1fDI0MCZlLCgxNSZlKTw8NHwxNSZlLDEpOihlPWZVLmV4ZWModCkpP1NVKHBhcnNlSW50KGVbMV0sMTYpKTooZT1tVS5leGVjKHQpKT9uZXcgQ1UoZVsxXSxlWzJdLGVbM10sMSk6KGU9Z1UuZXhlYyh0KSk/bmV3IENVKDI1NSplWzFdLzEwMCwyNTUqZVsyXS8xMDAsMjU1KmVbM10vMTAwLDEpOihlPV9VLmV4ZWModCkpP01VKGVbMV0sZVsyXSxlWzNdLGVbNF0pOihlPXlVLmV4ZWModCkpP01VKDI1NSplWzFdLzEwMCwyNTUqZVsyXS8xMDAsMjU1KmVbM10vMTAwLGVbNF0pOihlPXZVLmV4ZWModCkpP0FVKGVbMV0sZVsyXS8xMDAsZVszXS8xMDAsMSk6KGU9YlUuZXhlYyh0KSk/QVUoZVsxXSxlWzJdLzEwMCxlWzNdLzEwMCxlWzRdKTp4VS5oYXNPd25Qcm9wZXJ0eSh0KT9TVSh4VVt0XSk6InRyYW5zcGFyZW50Ij09PXQ/bmV3IENVKE5hTixOYU4sTmFOLDApOm51bGx9ZnVuY3Rpb24gU1UodCl7cmV0dXJuIG5ldyBDVSh0Pj4xNiYyNTUsdD4+OCYyNTUsMjU1JnQsMSl9ZnVuY3Rpb24gTVUodCxlLG4saSl7cmV0dXJuIGk8PTAmJih0PWU9bj1OYU4pLG5ldyBDVSh0LGUsbixpKX1mdW5jdGlvbiBFVSh0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIHNVfHwodD13VSh0KSksdD9uZXcgQ1UoKHQ9dC5yZ2IoKSkucix0LmcsdC5iLHQub3BhY2l0eSk6bmV3IENVfWZ1bmN0aW9uIFRVKHQsZSxuLGkpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9FVSh0KTpuZXcgQ1UodCxlLG4sbnVsbD09aT8xOmkpfWZ1bmN0aW9uIENVKHQsZSxuLGkpe3RoaXMucj0rdCx0aGlzLmc9K2UsdGhpcy5iPStuLHRoaXMub3BhY2l0eT0raX1mdW5jdGlvbiBBVSh0LGUsbixpKXtyZXR1cm4gaTw9MD90PWU9bj1OYU46bjw9MHx8bj49MT90PWU9TmFOOmU8PTAmJih0PU5hTiksbmV3IFBVKHQsZSxuLGkpfWZ1bmN0aW9uIGtVKHQpe2lmKHQgaW5zdGFuY2VvZiBQVSlyZXR1cm4gbmV3IFBVKHQuaCx0LnMsdC5sLHQub3BhY2l0eSk7aWYodCBpbnN0YW5jZW9mIHNVfHwodD13VSh0KSksIXQpcmV0dXJuIG5ldyBQVTtpZih0IGluc3RhbmNlb2YgUFUpcmV0dXJuIHQ7dmFyIGU9KHQ9dC5yZ2IoKSkuci8yNTUsbj10LmcvMjU1LGk9dC5iLzI1NSxyPU1hdGgubWluKGUsbixpKSxvPU1hdGgubWF4KGUsbixpKSxhPU5hTixzPW8tcixsPShvK3IpLzI7cmV0dXJuIHM/KGE9ZT09PW8/KG4taSkvcys2KihuPGkpOm49PT1vPyhpLWUpL3MrMjooZS1uKS9zKzQscy89bDwuNT9vK3I6Mi1vLXIsYSo9NjApOnM9bD4wJiZsPDE/MDphLG5ldyBQVShhLHMsbCx0Lm9wYWNpdHkpfWZ1bmN0aW9uIExVKHQsZSxuLGkpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9rVSh0KTpuZXcgUFUodCxlLG4sbnVsbD09aT8xOmkpfWZ1bmN0aW9uIFBVKHQsZSxuLGkpe3RoaXMuaD0rdCx0aGlzLnM9K2UsdGhpcy5sPStuLHRoaXMub3BhY2l0eT0raX1mdW5jdGlvbiBOVSh0LGUsbil7cmV0dXJuIDI1NSoodDw2MD9lKyhuLWUpKnQvNjA6dDwxODA/bjp0PDI0MD9lKyhuLWUpKigyNDAtdCkvNjA6ZSl9b1Uoc1Usd1Use2Rpc3BsYXlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmdiKCkuZGlzcGxheWFibGUoKX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZ2IoKSsiIn19KSxvVShDVSxUVSxhVShzVSx7YnJpZ2h0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD9jVTpNYXRoLnBvdyhjVSx0KSxuZXcgQ1UodGhpcy5yKnQsdGhpcy5nKnQsdGhpcy5iKnQsdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/bFU6TWF0aC5wb3cobFUsdCksbmV3IENVKHRoaXMucip0LHRoaXMuZyp0LHRoaXMuYip0LHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3JldHVybiB0aGlzfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybiAwPD10aGlzLnImJnRoaXMucjw9MjU1JiYwPD10aGlzLmcmJnRoaXMuZzw9MjU1JiYwPD10aGlzLmImJnRoaXMuYjw9MjU1JiYwPD10aGlzLm9wYWNpdHkmJnRoaXMub3BhY2l0eTw9MX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm9wYWNpdHk7cmV0dXJuKDE9PT0odD1pc05hTih0KT8xOk1hdGgubWF4KDAsTWF0aC5taW4oMSx0KSkpPyJyZ2IoIjoicmdiYSgiKStNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKHRoaXMucil8fDApKSsiLCAiK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodGhpcy5nKXx8MCkpKyIsICIrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0aGlzLmIpfHwwKSkrKDE9PT10PyIpIjoiLCAiK3QrIikiKX19KSksb1UoUFUsTFUsYVUoc1Use2JyaWdodGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/Y1U6TWF0aC5wb3coY1UsdCksbmV3IFBVKHRoaXMuaCx0aGlzLnMsdGhpcy5sKnQsdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/bFU6TWF0aC5wb3cobFUsdCksbmV3IFBVKHRoaXMuaCx0aGlzLnMsdGhpcy5sKnQsdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5oJTM2MCszNjAqKHRoaXMuaDwwKSxlPWlzTmFOKHQpfHxpc05hTih0aGlzLnMpPzA6dGhpcy5zLG49dGhpcy5sLGk9bisobjwuNT9uOjEtbikqZSxyPTIqbi1pO3JldHVybiBuZXcgQ1UoTlUodD49MjQwP3QtMjQwOnQrMTIwLHIsaSksTlUodCxyLGkpLE5VKHQ8MTIwP3QrMjQwOnQtMTIwLHIsaSksdGhpcy5vcGFjaXR5KX0sZGlzcGxheWFibGU6ZnVuY3Rpb24oKXtyZXR1cm4oMDw9dGhpcy5zJiZ0aGlzLnM8PTF8fGlzTmFOKHRoaXMucykpJiYwPD10aGlzLmwmJnRoaXMubDw9MSYmMDw9dGhpcy5vcGFjaXR5JiZ0aGlzLm9wYWNpdHk8PTF9fSkpO3ZhciBJVT1NYXRoLlBJLzE4MCxSVT0xODAvTWF0aC5QSSxPVT0uOTUwNDcselU9MS4wODg4MyxEVT00LzI5LEJVPTYvMjksSFU9MypCVSpCVTtmdW5jdGlvbiBGVSh0KXtpZih0IGluc3RhbmNlb2YgVVUpcmV0dXJuIG5ldyBVVSh0LmwsdC5hLHQuYix0Lm9wYWNpdHkpO2lmKHQgaW5zdGFuY2VvZiAkVSl7dmFyIGU9dC5oKklVO3JldHVybiBuZXcgVVUodC5sLE1hdGguY29zKGUpKnQuYyxNYXRoLnNpbihlKSp0LmMsdC5vcGFjaXR5KX10IGluc3RhbmNlb2YgQ1V8fCh0PUVVKHQpKTt2YXIgbj1xVSh0LnIpLGk9cVUodC5nKSxyPXFVKHQuYiksbz1qVSgoLjQxMjQ1NjQqbisuMzU3NTc2MSppKy4xODA0Mzc1KnIpL09VKSxhPWpVKCguMjEyNjcyOSpuKy43MTUxNTIyKmkrLjA3MjE3NSpyKS8xKTtyZXR1cm4gbmV3IFVVKDExNiphLTE2LDUwMCooby1hKSwyMDAqKGEtalUoKC4wMTkzMzM5Km4rLjExOTE5MippKy45NTAzMDQxKnIpL3pVKSksdC5vcGFjaXR5KX1mdW5jdGlvbiBWVSh0LGUsbixpKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/RlUodCk6bmV3IFVVKHQsZSxuLG51bGw9PWk/MTppKX1mdW5jdGlvbiBVVSh0LGUsbixpKXt0aGlzLmw9K3QsdGhpcy5hPStlLHRoaXMuYj0rbix0aGlzLm9wYWNpdHk9K2l9ZnVuY3Rpb24galUodCl7cmV0dXJuIHQ+LjAwODg1NjQ1MTY3OTAzNTYzMT9NYXRoLnBvdyh0LDEvMyk6dC9IVStEVX1mdW5jdGlvbiBHVSh0KXtyZXR1cm4gdD5CVT90KnQqdDpIVSoodC1EVSl9ZnVuY3Rpb24gV1UodCl7cmV0dXJuIDI1NSoodDw9LjAwMzEzMDg/MTIuOTIqdDoxLjA1NSpNYXRoLnBvdyh0LDEvMi40KS0uMDU1KX1mdW5jdGlvbiBxVSh0KXtyZXR1cm4odC89MjU1KTw9LjA0MDQ1P3QvMTIuOTI6TWF0aC5wb3coKHQrLjA1NSkvMS4wNTUsMi40KX1mdW5jdGlvbiBZVSh0KXtpZih0IGluc3RhbmNlb2YgJFUpcmV0dXJuIG5ldyAkVSh0LmgsdC5jLHQubCx0Lm9wYWNpdHkpO3QgaW5zdGFuY2VvZiBVVXx8KHQ9RlUodCkpO3ZhciBlPU1hdGguYXRhbjIodC5iLHQuYSkqUlU7cmV0dXJuIG5ldyAkVShlPDA/ZSszNjA6ZSxNYXRoLnNxcnQodC5hKnQuYSt0LmIqdC5iKSx0LmwsdC5vcGFjaXR5KX1mdW5jdGlvbiBYVSh0LGUsbixpKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/WVUodCk6bmV3ICRVKHQsZSxuLG51bGw9PWk/MTppKX1mdW5jdGlvbiAkVSh0LGUsbixpKXt0aGlzLmg9K3QsdGhpcy5jPStlLHRoaXMubD0rbix0aGlzLm9wYWNpdHk9K2l9b1UoVVUsVlUsYVUoc1Use2JyaWdodGVyOmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgVVUodGhpcy5sKzE4KihudWxsPT10PzE6dCksdGhpcy5hLHRoaXMuYix0aGlzLm9wYWNpdHkpfSxkYXJrZXI6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBVVSh0aGlzLmwtMTgqKG51bGw9PXQ/MTp0KSx0aGlzLmEsdGhpcy5iLHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3ZhciB0PSh0aGlzLmwrMTYpLzExNixlPWlzTmFOKHRoaXMuYSk/dDp0K3RoaXMuYS81MDAsbj1pc05hTih0aGlzLmIpP3Q6dC10aGlzLmIvMjAwO3JldHVybiB0PTEqR1UodCksbmV3IENVKFdVKDMuMjQwNDU0MiooZT1PVSpHVShlKSktMS41MzcxMzg1KnQtLjQ5ODUzMTQqKG49elUqR1UobikpKSxXVSgtLjk2OTI2NiplKzEuODc2MDEwOCp0Ky4wNDE1NTYqbiksV1UoLjA1NTY0MzQqZS0uMjA0MDI1OSp0KzEuMDU3MjI1MipuKSx0aGlzLm9wYWNpdHkpfX0pKSxvVSgkVSxYVSxhVShzVSx7YnJpZ2h0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyAkVSh0aGlzLmgsdGhpcy5jLHRoaXMubCsxOCoobnVsbD09dD8xOnQpLHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbih0KXtyZXR1cm4gbmV3ICRVKHRoaXMuaCx0aGlzLmMsdGhpcy5sLTE4KihudWxsPT10PzE6dCksdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7cmV0dXJuIEZVKHRoaXMpLnJnYigpfX0pKTt2YXIgS1U9LS4xNDg2MSxaVT0xLjc4Mjc3LEpVPS0uMjkyMjcsUVU9LS45MDY0OSx0aj0xLjk3Mjk0LGVqPXRqKlFVLG5qPXRqKlpVLGlqPVpVKkpVLVFVKktVO2Z1bmN0aW9uIHJqKHQpe2lmKHQgaW5zdGFuY2VvZiBhailyZXR1cm4gbmV3IGFqKHQuaCx0LnMsdC5sLHQub3BhY2l0eSk7dCBpbnN0YW5jZW9mIENVfHwodD1FVSh0KSk7dmFyIGU9dC5nLzI1NSxuPXQuYi8yNTUsaT0oaWoqbitlaioodC5yLzI1NSktbmoqZSkvLTUuOTYxNTEyMjkxMixyPW4taSxvPSh0aiooZS1pKS1KVSpyKS9RVSxhPU1hdGguc3FydChvKm8rcipyKS8odGoqaSooMS1pKSkscz1hP01hdGguYXRhbjIobyxyKSpSVS0xMjA6TmFOO3JldHVybiBuZXcgYWooczwwP3MrMzYwOnMsYSxpLHQub3BhY2l0eSl9ZnVuY3Rpb24gb2oodCxlLG4saSl7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP3JqKHQpOm5ldyBhaih0LGUsbixudWxsPT1pPzE6aSl9ZnVuY3Rpb24gYWoodCxlLG4saSl7dGhpcy5oPSt0LHRoaXMucz0rZSx0aGlzLmw9K24sdGhpcy5vcGFjaXR5PStpfW9VKGFqLG9qLGFVKHNVLHticmlnaHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10P2NVOk1hdGgucG93KGNVLHQpLG5ldyBhaih0aGlzLmgsdGhpcy5zLHRoaXMubCp0LHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10P2xVOk1hdGgucG93KGxVLHQpLG5ldyBhaih0aGlzLmgsdGhpcy5zLHRoaXMubCp0LHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3ZhciB0PWlzTmFOKHRoaXMuaCk/MDoodGhpcy5oKzEyMCkqSVUsZT0rdGhpcy5sLG49aXNOYU4odGhpcy5zKT8wOnRoaXMucyplKigxLWUpLGk9TWF0aC5jb3ModCkscj1NYXRoLnNpbih0KTtyZXR1cm4gbmV3IENVKDI1NSooZStuKihLVSppK1pVKnIpKSwyNTUqKGUrbiooSlUqaStRVSpyKSksMjU1KihlK24qKHRqKmkpKSx0aGlzLm9wYWNpdHkpfX0pKTt2YXIgc2o9e3ZhbHVlOmZ1bmN0aW9uKCl7fX07ZnVuY3Rpb24gbGooKXtmb3IodmFyIHQsZT0wLG49YXJndW1lbnRzLmxlbmd0aCxpPXt9O2U8bjsrK2Upe2lmKCEodD1hcmd1bWVudHNbZV0rIiIpfHx0IGluIGkpdGhyb3cgbmV3IEVycm9yKCJpbGxlZ2FsIHR5cGU6ICIrdCk7aVt0XT1bXX1yZXR1cm4gbmV3IGNqKGkpfWZ1bmN0aW9uIGNqKHQpe3RoaXMuXz10fWZ1bmN0aW9uIHVqKHQsZSl7cmV0dXJuIHQudHJpbSgpLnNwbGl0KC9efFxzKy8pLm1hcCgoZnVuY3Rpb24odCl7dmFyIG49IiIsaT10LmluZGV4T2YoIi4iKTtpZihpPj0wJiYobj10LnNsaWNlKGkrMSksdD10LnNsaWNlKDAsaSkpLHQmJiFlLmhhc093blByb3BlcnR5KHQpKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0eXBlOiAiK3QpO3JldHVybnt0eXBlOnQsbmFtZTpufX0pKX1mdW5jdGlvbiBoaih0LGUpe2Zvcih2YXIgbixpPTAscj10Lmxlbmd0aDtpPHI7KytpKWlmKChuPXRbaV0pLm5hbWU9PT1lKXJldHVybiBuLnZhbHVlfWZ1bmN0aW9uIGRqKHQsZSxuKXtmb3IodmFyIGk9MCxyPXQubGVuZ3RoO2k8cjsrK2kpaWYodFtpXS5uYW1lPT09ZSl7dFtpXT1zaix0PXQuc2xpY2UoMCxpKS5jb25jYXQodC5zbGljZShpKzEpKTticmVha31yZXR1cm4gbnVsbCE9biYmdC5wdXNoKHtuYW1lOmUsdmFsdWU6bn0pLHR9Y2oucHJvdG90eXBlPWxqLnByb3RvdHlwZT17Y29uc3RydWN0b3I6Y2osb246ZnVuY3Rpb24odCxlKXt2YXIgbixpPXRoaXMuXyxyPXVqKHQrIiIsaSksbz0tMSxhPXIubGVuZ3RoO2lmKCEoYXJndW1lbnRzLmxlbmd0aDwyKSl7aWYobnVsbCE9ZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGNhbGxiYWNrOiAiK2UpO2Zvcig7KytvPGE7KWlmKG49KHQ9cltvXSkudHlwZSlpW25dPWRqKGlbbl0sdC5uYW1lLGUpO2Vsc2UgaWYobnVsbD09ZSlmb3IobiBpbiBpKWlbbl09ZGooaVtuXSx0Lm5hbWUsbnVsbCk7cmV0dXJuIHRoaXN9Zm9yKDsrK288YTspaWYoKG49KHQ9cltvXSkudHlwZSkmJihuPWhqKGlbbl0sdC5uYW1lKSkpcmV0dXJuIG59LGNvcHk6ZnVuY3Rpb24oKXt2YXIgdD17fSxlPXRoaXMuXztmb3IodmFyIG4gaW4gZSl0W25dPWVbbl0uc2xpY2UoKTtyZXR1cm4gbmV3IGNqKHQpfSxjYWxsOmZ1bmN0aW9uKHQsZSl7aWYoKG49YXJndW1lbnRzLmxlbmd0aC0yKT4wKWZvcih2YXIgbixpLHI9bmV3IEFycmF5KG4pLG89MDtvPG47KytvKXJbb109YXJndW1lbnRzW28rMl07aWYoIXRoaXMuXy5oYXNPd25Qcm9wZXJ0eSh0KSl0aHJvdyBuZXcgRXJyb3IoInVua25vd24gdHlwZTogIit0KTtmb3Iobz0wLG49KGk9dGhpcy5fW3RdKS5sZW5ndGg7bzxuOysrbylpW29dLnZhbHVlLmFwcGx5KGUscil9LGFwcGx5OmZ1bmN0aW9uKHQsZSxuKXtpZighdGhpcy5fLmhhc093blByb3BlcnR5KHQpKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0eXBlOiAiK3QpO2Zvcih2YXIgaT10aGlzLl9bdF0scj0wLG89aS5sZW5ndGg7cjxvOysrcilpW3JdLnZhbHVlLmFwcGx5KGUsbil9fTt2YXIgcGo9e3ZhbHVlOmZ1bmN0aW9uKCl7fX07ZnVuY3Rpb24gZmooKXtmb3IodmFyIHQsZT0wLG49YXJndW1lbnRzLmxlbmd0aCxpPXt9O2U8bjsrK2Upe2lmKCEodD1hcmd1bWVudHNbZV0rIiIpfHx0IGluIGl8fC9bXHMuXS8udGVzdCh0KSl0aHJvdyBuZXcgRXJyb3IoImlsbGVnYWwgdHlwZTogIit0KTtpW3RdPVtdfXJldHVybiBuZXcgbWooaSl9ZnVuY3Rpb24gbWoodCl7dGhpcy5fPXR9ZnVuY3Rpb24gZ2oodCxlKXtyZXR1cm4gdC50cmltKCkuc3BsaXQoL158XHMrLykubWFwKChmdW5jdGlvbih0KXt2YXIgbj0iIixpPXQuaW5kZXhPZigiLiIpO2lmKGk+PTAmJihuPXQuc2xpY2UoaSsxKSx0PXQuc2xpY2UoMCxpKSksdCYmIWUuaGFzT3duUHJvcGVydHkodCkpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHR5cGU6ICIrdCk7cmV0dXJue3R5cGU6dCxuYW1lOm59fSkpfWZ1bmN0aW9uIF9qKHQsZSl7Zm9yKHZhciBuLGk9MCxyPXQubGVuZ3RoO2k8cjsrK2kpaWYoKG49dFtpXSkubmFtZT09PWUpcmV0dXJuIG4udmFsdWV9ZnVuY3Rpb24geWoodCxlLG4pe2Zvcih2YXIgaT0wLHI9dC5sZW5ndGg7aTxyOysraSlpZih0W2ldLm5hbWU9PT1lKXt0W2ldPXBqLHQ9dC5zbGljZSgwLGkpLmNvbmNhdCh0LnNsaWNlKGkrMSkpO2JyZWFrfXJldHVybiBudWxsIT1uJiZ0LnB1c2goe25hbWU6ZSx2YWx1ZTpufSksdH1tai5wcm90b3R5cGU9ZmoucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjptaixvbjpmdW5jdGlvbih0LGUpe3ZhciBuLGk9dGhpcy5fLHI9Z2oodCsiIixpKSxvPS0xLGE9ci5sZW5ndGg7aWYoIShhcmd1bWVudHMubGVuZ3RoPDIpKXtpZihudWxsIT1lJiYiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgY2FsbGJhY2s6ICIrZSk7Zm9yKDsrK288YTspaWYobj0odD1yW29dKS50eXBlKWlbbl09eWooaVtuXSx0Lm5hbWUsZSk7ZWxzZSBpZihudWxsPT1lKWZvcihuIGluIGkpaVtuXT15aihpW25dLHQubmFtZSxudWxsKTtyZXR1cm4gdGhpc31mb3IoOysrbzxhOylpZigobj0odD1yW29dKS50eXBlKSYmKG49X2ooaVtuXSx0Lm5hbWUpKSlyZXR1cm4gbn0sY29weTpmdW5jdGlvbigpe3ZhciB0PXt9LGU9dGhpcy5fO2Zvcih2YXIgbiBpbiBlKXRbbl09ZVtuXS5zbGljZSgpO3JldHVybiBuZXcgbWoodCl9LGNhbGw6ZnVuY3Rpb24odCxlKXtpZigobj1hcmd1bWVudHMubGVuZ3RoLTIpPjApZm9yKHZhciBuLGkscj1uZXcgQXJyYXkobiksbz0wO288bjsrK28pcltvXT1hcmd1bWVudHNbbysyXTtpZighdGhpcy5fLmhhc093blByb3BlcnR5KHQpKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0eXBlOiAiK3QpO2ZvcihvPTAsbj0oaT10aGlzLl9bdF0pLmxlbmd0aDtvPG47KytvKWlbb10udmFsdWUuYXBwbHkoZSxyKX0sYXBwbHk6ZnVuY3Rpb24odCxlLG4pe2lmKCF0aGlzLl8uaGFzT3duUHJvcGVydHkodCkpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHR5cGU6ICIrdCk7Zm9yKHZhciBpPXRoaXMuX1t0XSxyPTAsbz1pLmxlbmd0aDtyPG87KytyKWlbcl0udmFsdWUuYXBwbHkoZSxuKX19O3ZhciB2aj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIsYmo9e3N2ZzoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHhodG1sOnZqLHhsaW5rOiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIix4bWw6Imh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvIn07ZnVuY3Rpb24geGoodCl7dmFyIGU9dCs9IiIsbj1lLmluZGV4T2YoIjoiKTtyZXR1cm4gbj49MCYmInhtbG5zIiE9PShlPXQuc2xpY2UoMCxuKSkmJih0PXQuc2xpY2UobisxKSksYmouaGFzT3duUHJvcGVydHkoZSk/e3NwYWNlOmJqW2VdLGxvY2FsOnR9OnR9ZnVuY3Rpb24gd2oodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vd25lckRvY3VtZW50LG49dGhpcy5uYW1lc3BhY2VVUkk7cmV0dXJuIG49PT12aiYmZS5kb2N1bWVudEVsZW1lbnQubmFtZXNwYWNlVVJJPT09dmo/ZS5jcmVhdGVFbGVtZW50KHQpOmUuY3JlYXRlRWxlbWVudE5TKG4sdCl9fWZ1bmN0aW9uIFNqKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0aGlzLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHQuc3BhY2UsdC5sb2NhbCl9fWZ1bmN0aW9uIE1qKHQpe3ZhciBlPXhqKHQpO3JldHVybihlLmxvY2FsP1NqOndqKShlKX1mdW5jdGlvbiBFaigpe31mdW5jdGlvbiBUaih0KXtyZXR1cm4gbnVsbD09dD9FajpmdW5jdGlvbigpe3JldHVybiB0aGlzLnF1ZXJ5U2VsZWN0b3IodCl9fWZ1bmN0aW9uIENqKCl7cmV0dXJuW119ZnVuY3Rpb24gQWoodCl7cmV0dXJuIG5ldyBBcnJheSh0Lmxlbmd0aCl9ZnVuY3Rpb24ga2oodCxlKXt0aGlzLm93bmVyRG9jdW1lbnQ9dC5vd25lckRvY3VtZW50LHRoaXMubmFtZXNwYWNlVVJJPXQubmFtZXNwYWNlVVJJLHRoaXMuX25leHQ9bnVsbCx0aGlzLl9wYXJlbnQ9dCx0aGlzLl9fZGF0YV9fPWV9a2oucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpraixhcHBlbmRDaGlsZDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcGFyZW50Lmluc2VydEJlZm9yZSh0LHRoaXMuX25leHQpfSxpbnNlcnRCZWZvcmU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5fcGFyZW50Lmluc2VydEJlZm9yZSh0LGUpfSxxdWVyeVNlbGVjdG9yOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYXJlbnQucXVlcnlTZWxlY3Rvcih0KX0scXVlcnlTZWxlY3RvckFsbDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcGFyZW50LnF1ZXJ5U2VsZWN0b3JBbGwodCl9fTtmdW5jdGlvbiBMaih0LGUsbixpLHIsbyl7Zm9yKHZhciBhLHM9MCxsPWUubGVuZ3RoLGM9by5sZW5ndGg7czxjOysrcykoYT1lW3NdKT8oYS5fX2RhdGFfXz1vW3NdLGlbc109YSk6bltzXT1uZXcga2oodCxvW3NdKTtmb3IoO3M8bDsrK3MpKGE9ZVtzXSkmJihyW3NdPWEpfWZ1bmN0aW9uIFBqKHQsZSxuLGkscixvLGEpe3ZhciBzLGwsYyx1PXt9LGg9ZS5sZW5ndGgsZD1vLmxlbmd0aCxwPW5ldyBBcnJheShoKTtmb3Iocz0wO3M8aDsrK3MpKGw9ZVtzXSkmJihwW3NdPWM9IiQiK2EuY2FsbChsLGwuX19kYXRhX18scyxlKSxjIGluIHU/cltzXT1sOnVbY109bCk7Zm9yKHM9MDtzPGQ7KytzKShsPXVbYz0iJCIrYS5jYWxsKHQsb1tzXSxzLG8pXSk/KGlbc109bCxsLl9fZGF0YV9fPW9bc10sdVtjXT1udWxsKTpuW3NdPW5ldyBraih0LG9bc10pO2ZvcihzPTA7czxoOysrcykobD1lW3NdKSYmdVtwW3NdXT09PWwmJihyW3NdPWwpfWZ1bmN0aW9uIE5qKHQsZSl7cmV0dXJuIHQ8ZT8tMTp0PmU/MTp0Pj1lPzA6TmFOfWZ1bmN0aW9uIElqKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMucmVtb3ZlQXR0cmlidXRlKHQpfX1mdW5jdGlvbiBSaih0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCl9fWZ1bmN0aW9uIE9qKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zZXRBdHRyaWJ1dGUodCxlKX19ZnVuY3Rpb24gemoodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnNldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCxlKX19ZnVuY3Rpb24gRGoodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1uP3RoaXMucmVtb3ZlQXR0cmlidXRlKHQpOnRoaXMuc2V0QXR0cmlidXRlKHQsbil9fWZ1bmN0aW9uIEJqKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7bnVsbD09bj90aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCk6dGhpcy5zZXRBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwsbil9fWZ1bmN0aW9uIEhqKHQpe3JldHVybiB0Lm93bmVyRG9jdW1lbnQmJnQub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlld3x8dC5kb2N1bWVudCYmdHx8dC5kZWZhdWx0Vmlld31mdW5jdGlvbiBGaih0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpfX1mdW5jdGlvbiBWaih0LGUsbil7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zdHlsZS5zZXRQcm9wZXJ0eSh0LGUsbil9fWZ1bmN0aW9uIFVqKHQsZSxuKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgaT1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1pP3RoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkodCk6dGhpcy5zdHlsZS5zZXRQcm9wZXJ0eSh0LGksbil9fWZ1bmN0aW9uIGpqKHQsZSl7cmV0dXJuIHQuc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShlKXx8SGoodCkuZ2V0Q29tcHV0ZWRTdHlsZSh0LG51bGwpLmdldFByb3BlcnR5VmFsdWUoZSl9ZnVuY3Rpb24gR2oodCl7cmV0dXJuIGZ1bmN0aW9uKCl7ZGVsZXRlIHRoaXNbdF19fWZ1bmN0aW9uIFdqKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpc1t0XT1lfX1mdW5jdGlvbiBxaih0LGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciBuPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PW4/ZGVsZXRlIHRoaXNbdF06dGhpc1t0XT1ufX1mdW5jdGlvbiBZaih0KXtyZXR1cm4gdC50cmltKCkuc3BsaXQoL158XHMrLyl9ZnVuY3Rpb24gWGoodCl7cmV0dXJuIHQuY2xhc3NMaXN0fHxuZXcgJGoodCl9ZnVuY3Rpb24gJGoodCl7dGhpcy5fbm9kZT10LHRoaXMuX25hbWVzPVlqKHQuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIil9ZnVuY3Rpb24gS2oodCxlKXtmb3IodmFyIG49WGoodCksaT0tMSxyPWUubGVuZ3RoOysraTxyOyluLmFkZChlW2ldKX1mdW5jdGlvbiBaaih0LGUpe2Zvcih2YXIgbj1Yaih0KSxpPS0xLHI9ZS5sZW5ndGg7KytpPHI7KW4ucmVtb3ZlKGVbaV0pfWZ1bmN0aW9uIEpqKHQpe3JldHVybiBmdW5jdGlvbigpe0tqKHRoaXMsdCl9fWZ1bmN0aW9uIFFqKHQpe3JldHVybiBmdW5jdGlvbigpe1pqKHRoaXMsdCl9fWZ1bmN0aW9uIHRHKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7KGUuYXBwbHkodGhpcyxhcmd1bWVudHMpP0tqOlpqKSh0aGlzLHQpfX1mdW5jdGlvbiBlRygpe3RoaXMudGV4dENvbnRlbnQ9IiJ9ZnVuY3Rpb24gbkcodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy50ZXh0Q29udGVudD10fX1mdW5jdGlvbiBpRyh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLnRleHRDb250ZW50PW51bGw9PWU/IiI6ZX19ZnVuY3Rpb24gckcoKXt0aGlzLmlubmVySFRNTD0iIn1mdW5jdGlvbiBvRyh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLmlubmVySFRNTD10fX1mdW5jdGlvbiBhRyh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLmlubmVySFRNTD1udWxsPT1lPyIiOmV9fWZ1bmN0aW9uIHNHKCl7dGhpcy5uZXh0U2libGluZyYmdGhpcy5wYXJlbnROb2RlLmFwcGVuZENoaWxkKHRoaXMpfWZ1bmN0aW9uIGxHKCl7dGhpcy5wcmV2aW91c1NpYmxpbmcmJnRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodGhpcyx0aGlzLnBhcmVudE5vZGUuZmlyc3RDaGlsZCl9ZnVuY3Rpb24gY0coKXtyZXR1cm4gbnVsbH1mdW5jdGlvbiB1Rygpe3ZhciB0PXRoaXMucGFyZW50Tm9kZTt0JiZ0LnJlbW92ZUNoaWxkKHRoaXMpfWZ1bmN0aW9uIGhHKCl7dmFyIHQ9dGhpcy5jbG9uZU5vZGUoITEpLGU9dGhpcy5wYXJlbnROb2RlO3JldHVybiBlP2UuaW5zZXJ0QmVmb3JlKHQsdGhpcy5uZXh0U2libGluZyk6dH1mdW5jdGlvbiBkRygpe3ZhciB0PXRoaXMuY2xvbmVOb2RlKCEwKSxlPXRoaXMucGFyZW50Tm9kZTtyZXR1cm4gZT9lLmluc2VydEJlZm9yZSh0LHRoaXMubmV4dFNpYmxpbmcpOnR9JGoucHJvdG90eXBlPXthZGQ6ZnVuY3Rpb24odCl7dGhpcy5fbmFtZXMuaW5kZXhPZih0KTwwJiYodGhpcy5fbmFtZXMucHVzaCh0KSx0aGlzLl9ub2RlLnNldEF0dHJpYnV0ZSgiY2xhc3MiLHRoaXMuX25hbWVzLmpvaW4oIiAiKSkpfSxyZW1vdmU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fbmFtZXMuaW5kZXhPZih0KTtlPj0wJiYodGhpcy5fbmFtZXMuc3BsaWNlKGUsMSksdGhpcy5fbm9kZS5zZXRBdHRyaWJ1dGUoImNsYXNzIix0aGlzLl9uYW1lcy5qb2luKCIgIikpKX0sY29udGFpbnM6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX25hbWVzLmluZGV4T2YodCk+PTB9fTt2YXIgcEc9e30sZkc9bnVsbDsidW5kZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50JiYoIm9ubW91c2VlbnRlciJpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnR8fChwRz17bW91c2VlbnRlcjoibW91c2VvdmVyIixtb3VzZWxlYXZlOiJtb3VzZW91dCJ9KSk7ZnVuY3Rpb24gbUcodCxlLG4pe3JldHVybiB0PWdHKHQsZSxuKSxmdW5jdGlvbihlKXt2YXIgbj1lLnJlbGF0ZWRUYXJnZXQ7biYmKG49PT10aGlzfHw4Jm4uY29tcGFyZURvY3VtZW50UG9zaXRpb24odGhpcykpfHx0LmNhbGwodGhpcyxlKX19ZnVuY3Rpb24gZ0codCxlLG4pe3JldHVybiBmdW5jdGlvbihpKXt2YXIgcj1mRztmRz1pO3RyeXt0LmNhbGwodGhpcyx0aGlzLl9fZGF0YV9fLGUsbil9ZmluYWxseXtmRz1yfX19ZnVuY3Rpb24gX0codCl7cmV0dXJuIHQudHJpbSgpLnNwbGl0KC9efFxzKy8pLm1hcCgoZnVuY3Rpb24odCl7dmFyIGU9IiIsbj10LmluZGV4T2YoIi4iKTtyZXR1cm4gbj49MCYmKGU9dC5zbGljZShuKzEpLHQ9dC5zbGljZSgwLG4pKSx7dHlwZTp0LG5hbWU6ZX19KSl9ZnVuY3Rpb24geUcodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fX29uO2lmKGUpe2Zvcih2YXIgbixpPTAscj0tMSxvPWUubGVuZ3RoO2k8bzsrK2kpbj1lW2ldLHQudHlwZSYmbi50eXBlIT09dC50eXBlfHxuLm5hbWUhPT10Lm5hbWU/ZVsrK3JdPW46dGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKG4udHlwZSxuLmxpc3RlbmVyLG4uY2FwdHVyZSk7KytyP2UubGVuZ3RoPXI6ZGVsZXRlIHRoaXMuX19vbn19fWZ1bmN0aW9uIHZHKHQsZSxuKXt2YXIgaT1wRy5oYXNPd25Qcm9wZXJ0eSh0LnR5cGUpP21HOmdHO3JldHVybiBmdW5jdGlvbihyLG8sYSl7dmFyIHMsbD10aGlzLl9fb24sYz1pKGUsbyxhKTtpZihsKWZvcih2YXIgdT0wLGg9bC5sZW5ndGg7dTxoOysrdSlpZigocz1sW3VdKS50eXBlPT09dC50eXBlJiZzLm5hbWU9PT10Lm5hbWUpcmV0dXJuIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihzLnR5cGUscy5saXN0ZW5lcixzLmNhcHR1cmUpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihzLnR5cGUscy5saXN0ZW5lcj1jLHMuY2FwdHVyZT1uKSx2b2lkKHMudmFsdWU9ZSk7dGhpcy5hZGRFdmVudExpc3RlbmVyKHQudHlwZSxjLG4pLHM9e3R5cGU6dC50eXBlLG5hbWU6dC5uYW1lLHZhbHVlOmUsbGlzdGVuZXI6YyxjYXB0dXJlOm59LGw/bC5wdXNoKHMpOnRoaXMuX19vbj1bc119fWZ1bmN0aW9uIGJHKHQsZSxuLGkpe3ZhciByPWZHO3Quc291cmNlRXZlbnQ9ZkcsZkc9dDt0cnl7cmV0dXJuIGUuYXBwbHkobixpKX1maW5hbGx5e2ZHPXJ9fWZ1bmN0aW9uIHhHKHQsZSxuKXt2YXIgaT1Iaih0KSxyPWkuQ3VzdG9tRXZlbnQ7ImZ1bmN0aW9uIj09dHlwZW9mIHI/cj1uZXcgcihlLG4pOihyPWkuZG9jdW1lbnQuY3JlYXRlRXZlbnQoIkV2ZW50Iiksbj8oci5pbml0RXZlbnQoZSxuLmJ1YmJsZXMsbi5jYW5jZWxhYmxlKSxyLmRldGFpbD1uLmRldGFpbCk6ci5pbml0RXZlbnQoZSwhMSwhMSkpLHQuZGlzcGF0Y2hFdmVudChyKX1mdW5jdGlvbiB3Ryh0LGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB4Ryh0aGlzLHQsZSl9fWZ1bmN0aW9uIFNHKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHhHKHRoaXMsdCxlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9fXZhciBNRz1bbnVsbF07ZnVuY3Rpb24gRUcodCxlKXt0aGlzLl9ncm91cHM9dCx0aGlzLl9wYXJlbnRzPWV9ZnVuY3Rpb24gVEcodCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0P25ldyBFRyhbW2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodCldXSxbZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50XSk6bmV3IEVHKFtbdF1dLE1HKX1mdW5jdGlvbiBDRygpe2Zvcih2YXIgdCxlPWZHO3Q9ZS5zb3VyY2VFdmVudDspZT10O3JldHVybiBlfWZ1bmN0aW9uIEFHKHQsZSl7dmFyIG49dC5vd25lclNWR0VsZW1lbnR8fHQ7aWYobi5jcmVhdGVTVkdQb2ludCl7dmFyIGk9bi5jcmVhdGVTVkdQb2ludCgpO3JldHVybiBpLng9ZS5jbGllbnRYLGkueT1lLmNsaWVudFksWyhpPWkubWF0cml4VHJhbnNmb3JtKHQuZ2V0U2NyZWVuQ1RNKCkuaW52ZXJzZSgpKSkueCxpLnldfXZhciByPXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJuW2UuY2xpZW50WC1yLmxlZnQtdC5jbGllbnRMZWZ0LGUuY2xpZW50WS1yLnRvcC10LmNsaWVudFRvcF19ZnVuY3Rpb24ga0codCl7dmFyIGU9Q0coKTtyZXR1cm4gZS5jaGFuZ2VkVG91Y2hlcyYmKGU9ZS5jaGFuZ2VkVG91Y2hlc1swXSksQUcodCxlKX1mdW5jdGlvbiBMRyh0LGUsbil7YXJndW1lbnRzLmxlbmd0aDwzJiYobj1lLGU9Q0coKS5jaGFuZ2VkVG91Y2hlcyk7Zm9yKHZhciBpLHI9MCxvPWU/ZS5sZW5ndGg6MDtyPG87KytyKWlmKChpPWVbcl0pLmlkZW50aWZpZXI9PT1uKXJldHVybiBBRyh0LGkpO3JldHVybiBudWxsfWZ1bmN0aW9uIFBHKCl7Zkcuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCl9ZnVuY3Rpb24gTkcoKXtmRy5wcmV2ZW50RGVmYXVsdCgpLGZHLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpfWZ1bmN0aW9uIElHKHQpe3ZhciBlPXQuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LG49VEcodCkub24oImRyYWdzdGFydC5kcmFnIixORywhMCk7Im9uc2VsZWN0c3RhcnQiaW4gZT9uLm9uKCJzZWxlY3RzdGFydC5kcmFnIixORywhMCk6KGUuX19ub3NlbGVjdD1lLnN0eWxlLk1velVzZXJTZWxlY3QsZS5zdHlsZS5Nb3pVc2VyU2VsZWN0PSJub25lIil9ZnVuY3Rpb24gUkcodCxlKXt2YXIgbj10LmRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxpPVRHKHQpLm9uKCJkcmFnc3RhcnQuZHJhZyIsbnVsbCk7ZSYmKGkub24oImNsaWNrLmRyYWciLE5HLCEwKSxzZXRUaW1lb3V0KChmdW5jdGlvbigpe2kub24oImNsaWNrLmRyYWciLG51bGwpfSksMCkpLCJvbnNlbGVjdHN0YXJ0ImluIG4/aS5vbigic2VsZWN0c3RhcnQuZHJhZyIsbnVsbCk6KG4uc3R5bGUuTW96VXNlclNlbGVjdD1uLl9fbm9zZWxlY3QsZGVsZXRlIG4uX19ub3NlbGVjdCl9ZnVuY3Rpb24gT0codCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fWZ1bmN0aW9uIHpHKHQsZSxuLGkscixvLGEscyxsLGMpe3RoaXMudGFyZ2V0PXQsdGhpcy50eXBlPWUsdGhpcy5zdWJqZWN0PW4sdGhpcy5pZGVudGlmaWVyPWksdGhpcy5hY3RpdmU9cix0aGlzLng9byx0aGlzLnk9YSx0aGlzLmR4PXMsdGhpcy5keT1sLHRoaXMuXz1jfWZ1bmN0aW9uIERHKCl7cmV0dXJuIWZHLmJ1dHRvbn1mdW5jdGlvbiBCRygpe3JldHVybiB0aGlzLnBhcmVudE5vZGV9ZnVuY3Rpb24gSEcodCl7cmV0dXJuIG51bGw9PXQ/e3g6ZkcueCx5OmZHLnl9OnR9ZnVuY3Rpb24gRkcoKXtyZXR1cm4ib250b3VjaHN0YXJ0ImluIHRoaXN9RUcucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpFRyxzZWxlY3Q6ZnVuY3Rpb24gVkcodCl7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PVRqKHQpKTtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLG49ZS5sZW5ndGgsaT1uZXcgQXJyYXkobikscj0wO3I8bjsrK3IpZm9yKHZhciBvLGEscz1lW3JdLGw9cy5sZW5ndGgsYz1pW3JdPW5ldyBBcnJheShsKSx1PTA7dTxsOysrdSkobz1zW3VdKSYmKGE9dC5jYWxsKG8sby5fX2RhdGFfXyx1LHMpKSYmKCJfX2RhdGFfXyJpbiBvJiYoYS5fX2RhdGFfXz1vLl9fZGF0YV9fKSxjW3VdPWEpO3JldHVybiBuZXcgRUcoaSx0aGlzLl9wYXJlbnRzKX0sc2VsZWN0QWxsOmZ1bmN0aW9uIFVHKHQpeyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD0oZnVuY3Rpb24gZSh0KXtyZXR1cm4gbnVsbD09dD9DajpmdW5jdGlvbigpe3JldHVybiB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGwodCl9fSkodCkpO2Zvcih2YXIgbj10aGlzLl9ncm91cHMsaT1uLmxlbmd0aCxyPVtdLG89W10sYT0wO2E8aTsrK2EpZm9yKHZhciBzLGw9blthXSxjPWwubGVuZ3RoLHU9MDt1PGM7Kyt1KShzPWxbdV0pJiYoci5wdXNoKHQuY2FsbChzLHMuX19kYXRhX18sdSxsKSksby5wdXNoKHMpKTtyZXR1cm4gbmV3IEVHKHIsbyl9LGZpbHRlcjpmdW5jdGlvbiBqRyh0KXsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9KGZ1bmN0aW9uIGUodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWF0Y2hlcyh0KX19KSh0KSk7Zm9yKHZhciBuPXRoaXMuX2dyb3VwcyxpPW4ubGVuZ3RoLHI9bmV3IEFycmF5KGkpLG89MDtvPGk7KytvKWZvcih2YXIgYSxzPW5bb10sbD1zLmxlbmd0aCxjPXJbb109W10sdT0wO3U8bDsrK3UpKGE9c1t1XSkmJnQuY2FsbChhLGEuX19kYXRhX18sdSxzKSYmYy5wdXNoKGEpO3JldHVybiBuZXcgRUcocix0aGlzLl9wYXJlbnRzKX0sZGF0YTpmdW5jdGlvbiBHRyh0LGUpe2lmKCF0KXJldHVybiBmPW5ldyBBcnJheSh0aGlzLnNpemUoKSksdT0tMSx0aGlzLmVhY2goKGZ1bmN0aW9uKHQpe2ZbKyt1XT10fSkpLGY7dmFyIG49ZT9QajpMaixpPXRoaXMuX3BhcmVudHMscj10aGlzLl9ncm91cHM7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PShmdW5jdGlvbiBvKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX0pKHQpKTtmb3IodmFyIGE9ci5sZW5ndGgscz1uZXcgQXJyYXkoYSksbD1uZXcgQXJyYXkoYSksYz1uZXcgQXJyYXkoYSksdT0wO3U8YTsrK3Upe3ZhciBoPWlbdV0sZD1yW3VdLHA9ZC5sZW5ndGgsZj10LmNhbGwoaCxoJiZoLl9fZGF0YV9fLHUsaSksbT1mLmxlbmd0aCxnPWxbdV09bmV3IEFycmF5KG0pLF89c1t1XT1uZXcgQXJyYXkobSk7bihoLGQsZyxfLGNbdV09bmV3IEFycmF5KHApLGYsZSk7Zm9yKHZhciB5LHYsYj0wLHg9MDtiPG07KytiKWlmKHk9Z1tiXSl7Zm9yKGI+PXgmJih4PWIrMSk7ISh2PV9beF0pJiYrK3g8bTspO3kuX25leHQ9dnx8bnVsbH19cmV0dXJuKHM9bmV3IEVHKHMsaSkpLl9lbnRlcj1sLHMuX2V4aXQ9YyxzfSxlbnRlcjpmdW5jdGlvbiBXRygpe3JldHVybiBuZXcgRUcodGhpcy5fZW50ZXJ8fHRoaXMuX2dyb3Vwcy5tYXAoQWopLHRoaXMuX3BhcmVudHMpfSxleGl0OmZ1bmN0aW9uIHFHKCl7cmV0dXJuIG5ldyBFRyh0aGlzLl9leGl0fHx0aGlzLl9ncm91cHMubWFwKEFqKSx0aGlzLl9wYXJlbnRzKX0sam9pbjpmdW5jdGlvbiBZRyh0LGUsbil7dmFyIGk9dGhpcy5lbnRlcigpLHI9dGhpcyxvPXRoaXMuZXhpdCgpO3JldHVybiBpPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3QoaSk6aS5hcHBlbmQodCsiIiksbnVsbCE9ZSYmKHI9ZShyKSksbnVsbD09bj9vLnJlbW92ZSgpOm4obyksaSYmcj9pLm1lcmdlKHIpLm9yZGVyKCk6cn0sbWVyZ2U6ZnVuY3Rpb24gWEcodCl7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPXQuX2dyb3VwcyxpPWUubGVuZ3RoLHI9TWF0aC5taW4oaSxuLmxlbmd0aCksbz1uZXcgQXJyYXkoaSksYT0wO2E8cjsrK2EpZm9yKHZhciBzLGw9ZVthXSxjPW5bYV0sdT1sLmxlbmd0aCxoPW9bYV09bmV3IEFycmF5KHUpLGQ9MDtkPHU7KytkKShzPWxbZF18fGNbZF0pJiYoaFtkXT1zKTtmb3IoO2E8aTsrK2Epb1thXT1lW2FdO3JldHVybiBuZXcgRUcobyx0aGlzLl9wYXJlbnRzKX0sb3JkZXI6ZnVuY3Rpb24gJEcoKXtmb3IodmFyIHQ9dGhpcy5fZ3JvdXBzLGU9LTEsbj10Lmxlbmd0aDsrK2U8bjspZm9yKHZhciBpLHI9dFtlXSxvPXIubGVuZ3RoLTEsYT1yW29dOy0tbz49MDspKGk9cltvXSkmJihhJiY0XmkuY29tcGFyZURvY3VtZW50UG9zaXRpb24oYSkmJmEucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoaSxhKSxhPWkpO3JldHVybiB0aGlzfSxzb3J0OmZ1bmN0aW9uIEtHKHQpe2Z1bmN0aW9uIGUoZSxuKXtyZXR1cm4gZSYmbj90KGUuX19kYXRhX18sbi5fX2RhdGFfXyk6IWUtIW59dHx8KHQ9TmopO2Zvcih2YXIgbj10aGlzLl9ncm91cHMsaT1uLmxlbmd0aCxyPW5ldyBBcnJheShpKSxvPTA7bzxpOysrbyl7Zm9yKHZhciBhLHM9bltvXSxsPXMubGVuZ3RoLGM9cltvXT1uZXcgQXJyYXkobCksdT0wO3U8bDsrK3UpKGE9c1t1XSkmJihjW3VdPWEpO2Muc29ydChlKX1yZXR1cm4gbmV3IEVHKHIsdGhpcy5fcGFyZW50cykub3JkZXIoKX0sY2FsbDpmdW5jdGlvbiBaRygpe3ZhciB0PWFyZ3VtZW50c1swXTtyZXR1cm4gYXJndW1lbnRzWzBdPXRoaXMsdC5hcHBseShudWxsLGFyZ3VtZW50cyksdGhpc30sbm9kZXM6ZnVuY3Rpb24gSkcoKXt2YXIgdD1uZXcgQXJyYXkodGhpcy5zaXplKCkpLGU9LTE7cmV0dXJuIHRoaXMuZWFjaCgoZnVuY3Rpb24oKXt0WysrZV09dGhpc30pKSx0fSxub2RlOmZ1bmN0aW9uIFFHKCl7Zm9yKHZhciB0PXRoaXMuX2dyb3VwcyxlPTAsbj10Lmxlbmd0aDtlPG47KytlKWZvcih2YXIgaT10W2VdLHI9MCxvPWkubGVuZ3RoO3I8bzsrK3Ipe3ZhciBhPWlbcl07aWYoYSlyZXR1cm4gYX1yZXR1cm4gbnVsbH0sc2l6ZTpmdW5jdGlvbiB0Vygpe3ZhciB0PTA7cmV0dXJuIHRoaXMuZWFjaCgoZnVuY3Rpb24oKXsrK3R9KSksdH0sZW1wdHk6ZnVuY3Rpb24gZVcoKXtyZXR1cm4hdGhpcy5ub2RlKCl9LGVhY2g6ZnVuY3Rpb24gblcodCl7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPTAsaT1lLmxlbmd0aDtuPGk7KytuKWZvcih2YXIgcixvPWVbbl0sYT0wLHM9by5sZW5ndGg7YTxzOysrYSkocj1vW2FdKSYmdC5jYWxsKHIsci5fX2RhdGFfXyxhLG8pO3JldHVybiB0aGlzfSxhdHRyOmZ1bmN0aW9uIGlXKHQsZSl7dmFyIG49eGoodCk7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXt2YXIgaT10aGlzLm5vZGUoKTtyZXR1cm4gbi5sb2NhbD9pLmdldEF0dHJpYnV0ZU5TKG4uc3BhY2Usbi5sb2NhbCk6aS5nZXRBdHRyaWJ1dGUobil9cmV0dXJuIHRoaXMuZWFjaCgobnVsbD09ZT9uLmxvY2FsP1JqOklqOiJmdW5jdGlvbiI9PXR5cGVvZiBlP24ubG9jYWw/Qmo6RGo6bi5sb2NhbD96ajpPaikobixlKSl9LHN0eWxlOmZ1bmN0aW9uIHJXKHQsZSxuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4xP3RoaXMuZWFjaCgobnVsbD09ZT9GajoiZnVuY3Rpb24iPT10eXBlb2YgZT9VajpWaikodCxlLG51bGw9PW4/IiI6bikpOmpqKHRoaXMubm9kZSgpLHQpfSxwcm9wZXJ0eTpmdW5jdGlvbiBvVyh0LGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPjE/dGhpcy5lYWNoKChudWxsPT1lP0dqOiJmdW5jdGlvbiI9PXR5cGVvZiBlP3FqOldqKSh0LGUpKTp0aGlzLm5vZGUoKVt0XX0sY2xhc3NlZDpmdW5jdGlvbiBhVyh0LGUpe3ZhciBuPVlqKHQrIiIpO2lmKGFyZ3VtZW50cy5sZW5ndGg8Mil7Zm9yKHZhciBpPVhqKHRoaXMubm9kZSgpKSxyPS0xLG89bi5sZW5ndGg7KytyPG87KWlmKCFpLmNvbnRhaW5zKG5bcl0pKXJldHVybiExO3JldHVybiEwfXJldHVybiB0aGlzLmVhY2goKCJmdW5jdGlvbiI9PXR5cGVvZiBlP3RHOmU/Smo6UWopKG4sZSkpfSx0ZXh0OmZ1bmN0aW9uIHNXKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaChudWxsPT10P2VHOigiZnVuY3Rpb24iPT10eXBlb2YgdD9pRzpuRykodCkpOnRoaXMubm9kZSgpLnRleHRDb250ZW50fSxodG1sOmZ1bmN0aW9uIGxXKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaChudWxsPT10P3JHOigiZnVuY3Rpb24iPT10eXBlb2YgdD9hRzpvRykodCkpOnRoaXMubm9kZSgpLmlubmVySFRNTH0scmFpc2U6ZnVuY3Rpb24gY1coKXtyZXR1cm4gdGhpcy5lYWNoKHNHKX0sbG93ZXI6ZnVuY3Rpb24gdVcoKXtyZXR1cm4gdGhpcy5lYWNoKGxHKX0sYXBwZW5kOmZ1bmN0aW9uIGhXKHQpe3ZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6TWoodCk7cmV0dXJuIHRoaXMuc2VsZWN0KChmdW5jdGlvbigpe3JldHVybiB0aGlzLmFwcGVuZENoaWxkKGUuYXBwbHkodGhpcyxhcmd1bWVudHMpKX0pKX0saW5zZXJ0OmZ1bmN0aW9uIGRXKHQsZSl7dmFyIG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpNaih0KSxpPW51bGw9PWU/Y0c6ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpUaihlKTtyZXR1cm4gdGhpcy5zZWxlY3QoKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5zZXJ0QmVmb3JlKG4uYXBwbHkodGhpcyxhcmd1bWVudHMpLGkuYXBwbHkodGhpcyxhcmd1bWVudHMpfHxudWxsKX0pKX0scmVtb3ZlOmZ1bmN0aW9uIHBXKCl7cmV0dXJuIHRoaXMuZWFjaCh1Ryl9LGNsb25lOmZ1bmN0aW9uIGZXKHQpe3JldHVybiB0aGlzLnNlbGVjdCh0P2RHOmhHKX0sZGF0dW06ZnVuY3Rpb24gbVcodCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5wcm9wZXJ0eSgiX19kYXRhX18iLHQpOnRoaXMubm9kZSgpLl9fZGF0YV9ffSxvbjpmdW5jdGlvbiBnVyh0LGUsbil7dmFyIGkscixvPV9HKHQrIiIpLGE9by5sZW5ndGg7aWYoIShhcmd1bWVudHMubGVuZ3RoPDIpKXtmb3Iocz1lP3ZHOnlHLG51bGw9PW4mJihuPSExKSxpPTA7aTxhOysraSl0aGlzLmVhY2gocyhvW2ldLGUsbikpO3JldHVybiB0aGlzfXZhciBzPXRoaXMubm9kZSgpLl9fb247aWYocylmb3IodmFyIGwsYz0wLHU9cy5sZW5ndGg7Yzx1OysrYylmb3IoaT0wLGw9c1tjXTtpPGE7KytpKWlmKChyPW9baV0pLnR5cGU9PT1sLnR5cGUmJnIubmFtZT09PWwubmFtZSlyZXR1cm4gbC52YWx1ZX0sZGlzcGF0Y2g6ZnVuY3Rpb24gX1codCxlKXtyZXR1cm4gdGhpcy5lYWNoKCgiZnVuY3Rpb24iPT10eXBlb2YgZT9TRzp3RykodCxlKSl9fSx6Ry5wcm90b3R5cGUub249ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl8ub24uYXBwbHkodGhpcy5fLGFyZ3VtZW50cyk7cmV0dXJuIHQ9PT10aGlzLl8/dGhpczp0fTt2YXIgeVc9e30sdlc9e307ZnVuY3Rpb24gYlcodCl7cmV0dXJuIG5ldyBGdW5jdGlvbigiZCIsInJldHVybiB7Iit0Lm1hcCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkodCkrIjogZFsiK2UrIl0ifSkpLmpvaW4oIiwiKSsifSIpfWZ1bmN0aW9uIHhXKHQpe3ZhciBlPW5ldyBSZWdFeHAoJ1siJyt0KyJcblxyXSIpLG49dC5jaGFyQ29kZUF0KDApO2Z1bmN0aW9uIGkodCxlKXt2YXIgaSxyPVtdLG89dC5sZW5ndGgsYT0wLHM9MCxsPW88PTAsYz0hMTtmdW5jdGlvbiB1KCl7aWYobClyZXR1cm4gdlc7aWYoYylyZXR1cm4gYz0hMSx5Vzt2YXIgZSxpLHI9YTtpZigzND09PXQuY2hhckNvZGVBdChyKSl7Zm9yKDthKys8byYmMzQhPT10LmNoYXJDb2RlQXQoYSl8fDM0PT09dC5jaGFyQ29kZUF0KCsrYSk7KTtyZXR1cm4oZT1hKT49bz9sPSEwOjEwPT09KGk9dC5jaGFyQ29kZUF0KGErKykpP2M9ITA6MTM9PT1pJiYoYz0hMCwxMD09PXQuY2hhckNvZGVBdChhKSYmKythKSx0LnNsaWNlKHIrMSxlLTEpLnJlcGxhY2UoLyIiL2csJyInKX1mb3IoO2E8bzspe2lmKDEwPT09KGk9dC5jaGFyQ29kZUF0KGU9YSsrKSkpYz0hMDtlbHNlIGlmKDEzPT09aSljPSEwLDEwPT09dC5jaGFyQ29kZUF0KGEpJiYrK2E7ZWxzZSBpZihpIT09biljb250aW51ZTtyZXR1cm4gdC5zbGljZShyLGUpfXJldHVybiBsPSEwLHQuc2xpY2UocixvKX1mb3IoMTA9PT10LmNoYXJDb2RlQXQoby0xKSYmLS1vLDEzPT09dC5jaGFyQ29kZUF0KG8tMSkmJi0tbzsoaT11KCkpIT09dlc7KXtmb3IodmFyIGg9W107aSE9PXlXJiZpIT09dlc7KWgucHVzaChpKSxpPXUoKTtlJiZudWxsPT0oaD1lKGgscysrKSl8fHIucHVzaChoKX1yZXR1cm4gcn1mdW5jdGlvbiByKGUpe3JldHVybiBlLm1hcChvKS5qb2luKHQpfWZ1bmN0aW9uIG8odCl7cmV0dXJuIG51bGw9PXQ/IiI6ZS50ZXN0KHQrPSIiKT8nIicrdC5yZXBsYWNlKC8iL2csJyIiJykrJyInOnR9cmV0dXJue3BhcnNlOmZ1bmN0aW9uIGEodCxlKXt2YXIgbixyLG89aSh0LChmdW5jdGlvbih0LGkpe2lmKG4pcmV0dXJuIG4odCxpLTEpO3I9dCxuPWU/KGZ1bmN0aW9uIG8odCxlKXt2YXIgbj1iVyh0KTtyZXR1cm4gZnVuY3Rpb24oaSxyKXtyZXR1cm4gZShuKGkpLHIsdCl9fSkodCxlKTpiVyh0KX0pKTtyZXR1cm4gby5jb2x1bW5zPXJ8fFtdLG99LHBhcnNlUm93czppLGZvcm1hdDpmdW5jdGlvbiBzKGUsbil7cmV0dXJuIG51bGw9PW4mJihuPShmdW5jdGlvbiBpKHQpe3ZhciBlPU9iamVjdC5jcmVhdGUobnVsbCksbj1bXTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0KXtmb3IodmFyIGkgaW4gdClpIGluIGV8fG4ucHVzaChlW2ldPWkpfSkpLG59KShlKSksW24ubWFwKG8pLmpvaW4odCldLmNvbmNhdChlLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIG4ubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gbyhlW3RdKX0pKS5qb2luKHQpfSkpKS5qb2luKCJcbiIpfSxmb3JtYXRSb3dzOmZ1bmN0aW9uIGwodCl7cmV0dXJuIHQubWFwKHIpLmpvaW4oIlxuIil9fX12YXIgd1c9eFcoIiwiKSxTVz13Vy5wYXJzZSxNVz13Vy5wYXJzZVJvd3MsRVc9d1cuZm9ybWF0LFRXPXdXLmZvcm1hdFJvd3MsQ1c9eFcoIlx0IiksQVc9Q1cucGFyc2Usa1c9Q1cucGFyc2VSb3dzLExXPUNXLmZvcm1hdCxQVz1DVy5mb3JtYXRSb3dzO2Z1bmN0aW9uIE5XKHQpe3JldHVybigodCo9Mik8PTE/dCp0Oi0tdCooMi10KSsxKS8yfWZ1bmN0aW9uIElXKHQpe3JldHVybigodCo9Mik8PTE/dCp0KnQ6KHQtPTIpKnQqdCsyKS8yfXZhciBSVz0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQpe3JldHVybiBNYXRoLnBvdyh0LGUpfXJldHVybiBlPStlLG4uZXhwb25lbnQ9dCxufSkoMyksT1c9KGZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gbih0KXtyZXR1cm4gMS1NYXRoLnBvdygxLXQsZSl9cmV0dXJuIGU9K2Usbi5leHBvbmVudD10LG59KSgzKSx6Vz0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQpe3JldHVybigodCo9Mik8PTE/TWF0aC5wb3codCxlKToyLU1hdGgucG93KDItdCxlKSkvMn1yZXR1cm4gZT0rZSxuLmV4cG9uZW50PXQsbn0pKDMpLERXPU1hdGguUEksQlc9RFcvMjtmdW5jdGlvbiBIVyh0KXtyZXR1cm4oMS1NYXRoLmNvcyhEVyp0KSkvMn1mdW5jdGlvbiBGVyh0KXtyZXR1cm4oKHQqPTIpPD0xP01hdGgucG93KDIsMTAqdC0xMCk6Mi1NYXRoLnBvdygyLDEwLTEwKnQpKS8yfWZ1bmN0aW9uIFZXKHQpe3JldHVybigodCo9Mik8PTE/MS1NYXRoLnNxcnQoMS10KnQpOk1hdGguc3FydCgxLSh0LT0yKSp0KSsxKS8yfXZhciBVVz00LzExLGpXPTcuNTYyNTtmdW5jdGlvbiBHVyh0KXtyZXR1cm4odD0rdCk8VVc/alcqdCp0OnQ8LjcyNzI3MjcyNzI3MjcyNzM/alcqKHQtPS41NDU0NTQ1NDU0NTQ1NDU0KSp0Ky43NTp0PC45MDkwOTA5MDkwOTA5MDkxP2pXKih0LT0uODE4MTgxODE4MTgxODE4MikqdCsuOTM3NTpqVyoodC09Ljk1NDU0NTQ1NDU0NTQ1NDYpKnQrLjk4NDM3NX12YXIgV1c9MS43MDE1OCxxVz0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQpe3JldHVybiB0KnQqKChlKzEpKnQtZSl9cmV0dXJuIGU9K2Usbi5vdmVyc2hvb3Q9dCxufSkoV1cpLFlXPShmdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCl7cmV0dXJuLS10KnQqKChlKzEpKnQrZSkrMX1yZXR1cm4gZT0rZSxuLm92ZXJzaG9vdD10LG59KShXVyksWFc9KGZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gbih0KXtyZXR1cm4oKHQqPTIpPDE/dCp0KigoZSsxKSp0LWUpOih0LT0yKSp0KigoZSsxKSp0K2UpKzIpLzJ9cmV0dXJuIGU9K2Usbi5vdmVyc2hvb3Q9dCxufSkoV1cpLCRXPTIqTWF0aC5QSSxLVz0oZnVuY3Rpb24gdChlLG4pe3ZhciBpPU1hdGguYXNpbigxLyhlPU1hdGgubWF4KDEsZSkpKSoobi89JFcpO2Z1bmN0aW9uIHIodCl7cmV0dXJuIGUqTWF0aC5wb3coMiwxMCotLXQpKk1hdGguc2luKChpLXQpL24pfXJldHVybiByLmFtcGxpdHVkZT1mdW5jdGlvbihlKXtyZXR1cm4gdChlLG4qJFcpfSxyLnBlcmlvZD1mdW5jdGlvbihuKXtyZXR1cm4gdChlLG4pfSxyfSkoMSwuMyksWlc9KGZ1bmN0aW9uIHQoZSxuKXt2YXIgaT1NYXRoLmFzaW4oMS8oZT1NYXRoLm1heCgxLGUpKSkqKG4vPSRXKTtmdW5jdGlvbiByKHQpe3JldHVybiAxLWUqTWF0aC5wb3coMiwtMTAqKHQ9K3QpKSpNYXRoLnNpbigodCtpKS9uKX1yZXR1cm4gci5hbXBsaXR1ZGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHQoZSxuKiRXKX0sci5wZXJpb2Q9ZnVuY3Rpb24obil7cmV0dXJuIHQoZSxuKX0scn0pKDEsLjMpLEpXPShmdW5jdGlvbiB0KGUsbil7dmFyIGk9TWF0aC5hc2luKDEvKGU9TWF0aC5tYXgoMSxlKSkpKihuLz0kVyk7ZnVuY3Rpb24gcih0KXtyZXR1cm4oKHQ9Mip0LTEpPDA/ZSpNYXRoLnBvdygyLDEwKnQpKk1hdGguc2luKChpLXQpL24pOjItZSpNYXRoLnBvdygyLC0xMCp0KSpNYXRoLnNpbigoaSt0KS9uKSkvMn1yZXR1cm4gci5hbXBsaXR1ZGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHQoZSxuKiRXKX0sci5wZXJpb2Q9ZnVuY3Rpb24obil7cmV0dXJuIHQoZSxuKX0scn0pKDEsLjMpO2Z1bmN0aW9uIFFXKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX1mdW5jdGlvbiB0cSgpe3JldHVybiAxZS02KihNYXRoLnJhbmRvbSgpLS41KX1mdW5jdGlvbiBlcSh0LGUsbixpKXtpZihpc05hTihlKXx8aXNOYU4obikpcmV0dXJuIHQ7dmFyIHIsbyxhLHMsbCxjLHUsaCxkLHA9dC5fcm9vdCxmPXtkYXRhOml9LG09dC5feDAsZz10Ll95MCxfPXQuX3gxLHk9dC5feTE7aWYoIXApcmV0dXJuIHQuX3Jvb3Q9Zix0O2Zvcig7cC5sZW5ndGg7KWlmKChjPWU+PShvPShtK18pLzIpKT9tPW86Xz1vLCh1PW4+PShhPShnK3kpLzIpKT9nPWE6eT1hLHI9cCwhKHA9cFtoPXU8PDF8Y10pKXJldHVybiByW2hdPWYsdDtpZihzPSt0Ll94LmNhbGwobnVsbCxwLmRhdGEpLGw9K3QuX3kuY2FsbChudWxsLHAuZGF0YSksZT09PXMmJm49PT1sKXJldHVybiBmLm5leHQ9cCxyP3JbaF09Zjp0Ll9yb290PWYsdDtkb3tyPXI/cltoXT1uZXcgQXJyYXkoNCk6dC5fcm9vdD1uZXcgQXJyYXkoNCksKGM9ZT49KG89KG0rXykvMikpP209bzpfPW8sKHU9bj49KGE9KGcreSkvMikpP2c9YTp5PWF9d2hpbGUoKGg9dTw8MXxjKT09KGQ9KGw+PWEpPDwxfHM+PW8pKTtyZXR1cm4gcltkXT1wLHJbaF09Zix0fWZ1bmN0aW9uIG5xKHQsZSxuLGkscil7dGhpcy5ub2RlPXQsdGhpcy54MD1lLHRoaXMueTA9bix0aGlzLngxPWksdGhpcy55MT1yfWZ1bmN0aW9uIGlxKHQpe3JldHVybiB0WzBdfWZ1bmN0aW9uIHJxKHQpe3JldHVybiB0WzFdfWZ1bmN0aW9uIG9xKHQsZSxuKXt2YXIgaT1uZXcgYXEobnVsbD09ZT9pcTplLG51bGw9PW4/cnE6bixOYU4sTmFOLE5hTixOYU4pO3JldHVybiBudWxsPT10P2k6aS5hZGRBbGwodCl9ZnVuY3Rpb24gYXEodCxlLG4saSxyLG8pe3RoaXMuX3g9dCx0aGlzLl95PWUsdGhpcy5feDA9bix0aGlzLl95MD1pLHRoaXMuX3gxPXIsdGhpcy5feTE9byx0aGlzLl9yb290PXZvaWQgMH1mdW5jdGlvbiBzcSh0KXtmb3IodmFyIGU9e2RhdGE6dC5kYXRhfSxuPWU7dD10Lm5leHQ7KW49bi5uZXh0PXtkYXRhOnQuZGF0YX07cmV0dXJuIGV9dmFyIGxxPW9xLnByb3RvdHlwZT1hcS5wcm90b3R5cGU7ZnVuY3Rpb24gY3EodCl7cmV0dXJuIHQueCt0LnZ4fWZ1bmN0aW9uIHVxKHQpe3JldHVybiB0LnkrdC52eX1scS5jb3B5PWZ1bmN0aW9uKCl7dmFyIHQsZSxuPW5ldyBhcSh0aGlzLl94LHRoaXMuX3ksdGhpcy5feDAsdGhpcy5feTAsdGhpcy5feDEsdGhpcy5feTEpLGk9dGhpcy5fcm9vdDtpZighaSlyZXR1cm4gbjtpZighaS5sZW5ndGgpcmV0dXJuIG4uX3Jvb3Q9c3EoaSksbjtmb3IodD1be3NvdXJjZTppLHRhcmdldDpuLl9yb290PW5ldyBBcnJheSg0KX1dO2k9dC5wb3AoKTspZm9yKHZhciByPTA7cjw0OysrcikoZT1pLnNvdXJjZVtyXSkmJihlLmxlbmd0aD90LnB1c2goe3NvdXJjZTplLHRhcmdldDppLnRhcmdldFtyXT1uZXcgQXJyYXkoNCl9KTppLnRhcmdldFtyXT1zcShlKSk7cmV0dXJuIG59LGxxLmFkZD1mdW5jdGlvbiBocSh0KXt2YXIgZT0rdGhpcy5feC5jYWxsKG51bGwsdCksbj0rdGhpcy5feS5jYWxsKG51bGwsdCk7cmV0dXJuIGVxKHRoaXMuY292ZXIoZSxuKSxlLG4sdCl9LGxxLmFkZEFsbD1mdW5jdGlvbiBkcSh0KXt2YXIgZSxuLGkscixvPXQubGVuZ3RoLGE9bmV3IEFycmF5KG8pLHM9bmV3IEFycmF5KG8pLGw9MS8wLGM9MS8wLHU9LTEvMCxoPS0xLzA7Zm9yKG49MDtuPG87KytuKWlzTmFOKGk9K3RoaXMuX3guY2FsbChudWxsLGU9dFtuXSkpfHxpc05hTihyPSt0aGlzLl95LmNhbGwobnVsbCxlKSl8fChhW25dPWksc1tuXT1yLGk8bCYmKGw9aSksaT51JiYodT1pKSxyPGMmJihjPXIpLHI+aCYmKGg9cikpO2lmKGw+dXx8Yz5oKXJldHVybiB0aGlzO2Zvcih0aGlzLmNvdmVyKGwsYykuY292ZXIodSxoKSxuPTA7bjxvOysrbillcSh0aGlzLGFbbl0sc1tuXSx0W25dKTtyZXR1cm4gdGhpc30sbHEuY292ZXI9ZnVuY3Rpb24gcHEodCxlKXtpZihpc05hTih0PSt0KXx8aXNOYU4oZT0rZSkpcmV0dXJuIHRoaXM7dmFyIG49dGhpcy5feDAsaT10aGlzLl95MCxyPXRoaXMuX3gxLG89dGhpcy5feTE7aWYoaXNOYU4obikpcj0obj1NYXRoLmZsb29yKHQpKSsxLG89KGk9TWF0aC5mbG9vcihlKSkrMTtlbHNle2Zvcih2YXIgYSxzLGw9ci1uLGM9dGhpcy5fcm9vdDtuPnR8fHQ+PXJ8fGk+ZXx8ZT49bzspc3dpdGNoKHM9KGU8aSk8PDF8dDxuLChhPW5ldyBBcnJheSg0KSlbc109YyxjPWEsbCo9MixzKXtjYXNlIDA6cj1uK2wsbz1pK2w7YnJlYWs7Y2FzZSAxOm49ci1sLG89aStsO2JyZWFrO2Nhc2UgMjpyPW4rbCxpPW8tbDticmVhaztjYXNlIDM6bj1yLWwsaT1vLWx9dGhpcy5fcm9vdCYmdGhpcy5fcm9vdC5sZW5ndGgmJih0aGlzLl9yb290PWMpfXJldHVybiB0aGlzLl94MD1uLHRoaXMuX3kwPWksdGhpcy5feDE9cix0aGlzLl95MT1vLHRoaXN9LGxxLmRhdGE9ZnVuY3Rpb24gZnEoKXt2YXIgdD1bXTtyZXR1cm4gdGhpcy52aXNpdCgoZnVuY3Rpb24oZSl7aWYoIWUubGVuZ3RoKWRve3QucHVzaChlLmRhdGEpfXdoaWxlKGU9ZS5uZXh0KX0pKSx0fSxscS5leHRlbnQ9ZnVuY3Rpb24gbXEodCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5jb3ZlcigrdFswXVswXSwrdFswXVsxXSkuY292ZXIoK3RbMV1bMF0sK3RbMV1bMV0pOmlzTmFOKHRoaXMuX3gwKT92b2lkIDA6W1t0aGlzLl94MCx0aGlzLl95MF0sW3RoaXMuX3gxLHRoaXMuX3kxXV19LGxxLmZpbmQ9ZnVuY3Rpb24gZ3EodCxlLG4pe3ZhciBpLHIsbyxhLHMsbCxjLHU9dGhpcy5feDAsaD10aGlzLl95MCxkPXRoaXMuX3gxLHA9dGhpcy5feTEsZj1bXSxtPXRoaXMuX3Jvb3Q7Zm9yKG0mJmYucHVzaChuZXcgbnEobSx1LGgsZCxwKSksbnVsbD09bj9uPTEvMDoodT10LW4saD1lLW4sZD10K24scD1lK24sbio9bik7bD1mLnBvcCgpOylpZighKCEobT1sLm5vZGUpfHwocj1sLngwKT5kfHwobz1sLnkwKT5wfHwoYT1sLngxKTx1fHwocz1sLnkxKTxoKSlpZihtLmxlbmd0aCl7dmFyIGc9KHIrYSkvMixfPShvK3MpLzI7Zi5wdXNoKG5ldyBucShtWzNdLGcsXyxhLHMpLG5ldyBucShtWzJdLHIsXyxnLHMpLG5ldyBucShtWzFdLGcsbyxhLF8pLG5ldyBucShtWzBdLHIsbyxnLF8pKSwoYz0oZT49Xyk8PDF8dD49ZykmJihsPWZbZi5sZW5ndGgtMV0sZltmLmxlbmd0aC0xXT1mW2YubGVuZ3RoLTEtY10sZltmLmxlbmd0aC0xLWNdPWwpfWVsc2V7dmFyIHk9dC0rdGhpcy5feC5jYWxsKG51bGwsbS5kYXRhKSx2PWUtK3RoaXMuX3kuY2FsbChudWxsLG0uZGF0YSksYj15Knkrdip2O2lmKGI8bil7dmFyIHg9TWF0aC5zcXJ0KG49Yik7dT10LXgsaD1lLXgsZD10K3gscD1lK3gsaT1tLmRhdGF9fXJldHVybiBpfSxscS5yZW1vdmU9ZnVuY3Rpb24gX3EodCl7aWYoaXNOYU4obz0rdGhpcy5feC5jYWxsKG51bGwsdCkpfHxpc05hTihhPSt0aGlzLl95LmNhbGwobnVsbCx0KSkpcmV0dXJuIHRoaXM7dmFyIGUsbixpLHIsbyxhLHMsbCxjLHUsaCxkLHA9dGhpcy5fcm9vdCxmPXRoaXMuX3gwLG09dGhpcy5feTAsZz10aGlzLl94MSxfPXRoaXMuX3kxO2lmKCFwKXJldHVybiB0aGlzO2lmKHAubGVuZ3RoKWZvcig7Oyl7aWYoKGM9bz49KHM9KGYrZykvMikpP2Y9czpnPXMsKHU9YT49KGw9KG0rXykvMikpP209bDpfPWwsZT1wLCEocD1wW2g9dTw8MXxjXSkpcmV0dXJuIHRoaXM7aWYoIXAubGVuZ3RoKWJyZWFrOyhlW2grMSYzXXx8ZVtoKzImM118fGVbaCszJjNdKSYmKG49ZSxkPWgpfWZvcig7cC5kYXRhIT09dDspaWYoaT1wLCEocD1wLm5leHQpKXJldHVybiB0aGlzO3JldHVybihyPXAubmV4dCkmJmRlbGV0ZSBwLm5leHQsaT8ocj9pLm5leHQ9cjpkZWxldGUgaS5uZXh0LHRoaXMpOmU/KHI/ZVtoXT1yOmRlbGV0ZSBlW2hdLChwPWVbMF18fGVbMV18fGVbMl18fGVbM10pJiZwPT09KGVbM118fGVbMl18fGVbMV18fGVbMF0pJiYhcC5sZW5ndGgmJihuP25bZF09cDp0aGlzLl9yb290PXApLHRoaXMpOih0aGlzLl9yb290PXIsdGhpcyl9LGxxLnJlbW92ZUFsbD1mdW5jdGlvbiB5cSh0KXtmb3IodmFyIGU9MCxuPXQubGVuZ3RoO2U8bjsrK2UpdGhpcy5yZW1vdmUodFtlXSk7cmV0dXJuIHRoaXN9LGxxLnJvb3Q9ZnVuY3Rpb24gdnEoKXtyZXR1cm4gdGhpcy5fcm9vdH0sbHEuc2l6ZT1mdW5jdGlvbiBicSgpe3ZhciB0PTA7cmV0dXJuIHRoaXMudmlzaXQoKGZ1bmN0aW9uKGUpe2lmKCFlLmxlbmd0aClkb3srK3R9d2hpbGUoZT1lLm5leHQpfSkpLHR9LGxxLnZpc2l0PWZ1bmN0aW9uIHhxKHQpe3ZhciBlLG4saSxyLG8sYSxzPVtdLGw9dGhpcy5fcm9vdDtmb3IobCYmcy5wdXNoKG5ldyBucShsLHRoaXMuX3gwLHRoaXMuX3kwLHRoaXMuX3gxLHRoaXMuX3kxKSk7ZT1zLnBvcCgpOylpZighdChsPWUubm9kZSxpPWUueDAscj1lLnkwLG89ZS54MSxhPWUueTEpJiZsLmxlbmd0aCl7dmFyIGM9KGkrbykvMix1PShyK2EpLzI7KG49bFszXSkmJnMucHVzaChuZXcgbnEobixjLHUsbyxhKSksKG49bFsyXSkmJnMucHVzaChuZXcgbnEobixpLHUsYyxhKSksKG49bFsxXSkmJnMucHVzaChuZXcgbnEobixjLHIsbyx1KSksKG49bFswXSkmJnMucHVzaChuZXcgbnEobixpLHIsYyx1KSl9cmV0dXJuIHRoaXN9LGxxLnZpc2l0QWZ0ZXI9ZnVuY3Rpb24gd3EodCl7dmFyIGUsbj1bXSxpPVtdO2Zvcih0aGlzLl9yb290JiZuLnB1c2gobmV3IG5xKHRoaXMuX3Jvb3QsdGhpcy5feDAsdGhpcy5feTAsdGhpcy5feDEsdGhpcy5feTEpKTtlPW4ucG9wKCk7KXt2YXIgcj1lLm5vZGU7aWYoci5sZW5ndGgpe3ZhciBvLGE9ZS54MCxzPWUueTAsbD1lLngxLGM9ZS55MSx1PShhK2wpLzIsaD0ocytjKS8yOyhvPXJbMF0pJiZuLnB1c2gobmV3IG5xKG8sYSxzLHUsaCkpLChvPXJbMV0pJiZuLnB1c2gobmV3IG5xKG8sdSxzLGwsaCkpLChvPXJbMl0pJiZuLnB1c2gobmV3IG5xKG8sYSxoLHUsYykpLChvPXJbM10pJiZuLnB1c2gobmV3IG5xKG8sdSxoLGwsYykpfWkucHVzaChlKX1mb3IoO2U9aS5wb3AoKTspdChlLm5vZGUsZS54MCxlLnkwLGUueDEsZS55MSk7cmV0dXJuIHRoaXN9LGxxLng9ZnVuY3Rpb24gU3EodCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHRoaXMuX3g9dCx0aGlzKTp0aGlzLl94fSxscS55PWZ1bmN0aW9uIE1xKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0aGlzLl95PXQsdGhpcyk6dGhpcy5feX07dmFyIEVxPSIkIjtmdW5jdGlvbiBUcSgpe31mdW5jdGlvbiBDcSh0LGUpe3ZhciBuPW5ldyBUcTtpZih0IGluc3RhbmNlb2YgVHEpdC5lYWNoKChmdW5jdGlvbih0LGUpe24uc2V0KGUsdCl9KSk7ZWxzZSBpZihBcnJheS5pc0FycmF5KHQpKXt2YXIgaSxyPS0xLG89dC5sZW5ndGg7aWYobnVsbD09ZSlmb3IoOysrcjxvOyluLnNldChyLHRbcl0pO2Vsc2UgZm9yKDsrK3I8bzspbi5zZXQoZShpPXRbcl0scix0KSxpKX1lbHNlIGlmKHQpZm9yKHZhciBhIGluIHQpbi5zZXQoYSx0W2FdKTtyZXR1cm4gbn1mdW5jdGlvbiBBcSgpe31UcS5wcm90b3R5cGU9Q3EucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpUcSxoYXM6ZnVuY3Rpb24odCl7cmV0dXJuIEVxK3QgaW4gdGhpc30sZ2V0OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzW0VxK3RdfSxzZXQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpc1tFcSt0XT1lLHRoaXN9LHJlbW92ZTpmdW5jdGlvbih0KXt2YXIgZT1FcSt0O3JldHVybiBlIGluIHRoaXMmJmRlbGV0ZSB0aGlzW2VdfSxjbGVhcjpmdW5jdGlvbigpe2Zvcih2YXIgdCBpbiB0aGlzKXRbMF09PT1FcSYmZGVsZXRlIHRoaXNbdF19LGtleXM6ZnVuY3Rpb24oKXt2YXIgdD1bXTtmb3IodmFyIGUgaW4gdGhpcyllWzBdPT09RXEmJnQucHVzaChlLnNsaWNlKDEpKTtyZXR1cm4gdH0sdmFsdWVzOmZ1bmN0aW9uKCl7dmFyIHQ9W107Zm9yKHZhciBlIGluIHRoaXMpZVswXT09PUVxJiZ0LnB1c2godGhpc1tlXSk7cmV0dXJuIHR9LGVudHJpZXM6ZnVuY3Rpb24oKXt2YXIgdD1bXTtmb3IodmFyIGUgaW4gdGhpcyllWzBdPT09RXEmJnQucHVzaCh7a2V5OmUuc2xpY2UoMSksdmFsdWU6dGhpc1tlXX0pO3JldHVybiB0fSxzaXplOmZ1bmN0aW9uKCl7dmFyIHQ9MDtmb3IodmFyIGUgaW4gdGhpcyllWzBdPT09RXEmJisrdDtyZXR1cm4gdH0sZW1wdHk6ZnVuY3Rpb24oKXtmb3IodmFyIHQgaW4gdGhpcylpZih0WzBdPT09RXEpcmV0dXJuITE7cmV0dXJuITB9LGVhY2g6ZnVuY3Rpb24odCl7Zm9yKHZhciBlIGluIHRoaXMpZVswXT09PUVxJiZ0KHRoaXNbZV0sZS5zbGljZSgxKSx0aGlzKX19O3ZhciBrcT1DcS5wcm90b3R5cGU7ZnVuY3Rpb24gTHEodCl7cmV0dXJuIHQuaW5kZXh9ZnVuY3Rpb24gUHEodCxlKXt2YXIgbj10LmdldChlKTtpZighbil0aHJvdyBuZXcgRXJyb3IoIm1pc3Npbmc6ICIrZSk7cmV0dXJuIG59QXEucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpBcSxoYXM6a3EuaGFzLGFkZDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpc1tFcSsodCs9IiIpXT10LHRoaXN9LHJlbW92ZTprcS5yZW1vdmUsY2xlYXI6a3EuY2xlYXIsdmFsdWVzOmtxLmtleXMsc2l6ZTprcS5zaXplLGVtcHR5OmtxLmVtcHR5LGVhY2g6a3EuZWFjaH07dmFyIE5xPXt2YWx1ZTpmdW5jdGlvbigpe319O2Z1bmN0aW9uIElxKCl7Zm9yKHZhciB0LGU9MCxuPWFyZ3VtZW50cy5sZW5ndGgsaT17fTtlPG47KytlKXtpZighKHQ9YXJndW1lbnRzW2VdKyIiKXx8dCBpbiBpfHwvW1xzLl0vLnRlc3QodCkpdGhyb3cgbmV3IEVycm9yKCJpbGxlZ2FsIHR5cGU6ICIrdCk7aVt0XT1bXX1yZXR1cm4gbmV3IFJxKGkpfWZ1bmN0aW9uIFJxKHQpe3RoaXMuXz10fWZ1bmN0aW9uIE9xKHQsZSl7cmV0dXJuIHQudHJpbSgpLnNwbGl0KC9efFxzKy8pLm1hcCgoZnVuY3Rpb24odCl7dmFyIG49IiIsaT10LmluZGV4T2YoIi4iKTtpZihpPj0wJiYobj10LnNsaWNlKGkrMSksdD10LnNsaWNlKDAsaSkpLHQmJiFlLmhhc093blByb3BlcnR5KHQpKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0eXBlOiAiK3QpO3JldHVybnt0eXBlOnQsbmFtZTpufX0pKX1mdW5jdGlvbiB6cSh0LGUpe2Zvcih2YXIgbixpPTAscj10Lmxlbmd0aDtpPHI7KytpKWlmKChuPXRbaV0pLm5hbWU9PT1lKXJldHVybiBuLnZhbHVlfWZ1bmN0aW9uIERxKHQsZSxuKXtmb3IodmFyIGk9MCxyPXQubGVuZ3RoO2k8cjsrK2kpaWYodFtpXS5uYW1lPT09ZSl7dFtpXT1OcSx0PXQuc2xpY2UoMCxpKS5jb25jYXQodC5zbGljZShpKzEpKTticmVha31yZXR1cm4gbnVsbCE9biYmdC5wdXNoKHtuYW1lOmUsdmFsdWU6bn0pLHR9UnEucHJvdG90eXBlPUlxLnByb3RvdHlwZT17Y29uc3RydWN0b3I6UnEsb246ZnVuY3Rpb24odCxlKXt2YXIgbixpPXRoaXMuXyxyPU9xKHQrIiIsaSksbz0tMSxhPXIubGVuZ3RoO2lmKCEoYXJndW1lbnRzLmxlbmd0aDwyKSl7aWYobnVsbCE9ZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGNhbGxiYWNrOiAiK2UpO2Zvcig7KytvPGE7KWlmKG49KHQ9cltvXSkudHlwZSlpW25dPURxKGlbbl0sdC5uYW1lLGUpO2Vsc2UgaWYobnVsbD09ZSlmb3IobiBpbiBpKWlbbl09RHEoaVtuXSx0Lm5hbWUsbnVsbCk7cmV0dXJuIHRoaXN9Zm9yKDsrK288YTspaWYoKG49KHQ9cltvXSkudHlwZSkmJihuPXpxKGlbbl0sdC5uYW1lKSkpcmV0dXJuIG59LGNvcHk6ZnVuY3Rpb24oKXt2YXIgdD17fSxlPXRoaXMuXztmb3IodmFyIG4gaW4gZSl0W25dPWVbbl0uc2xpY2UoKTtyZXR1cm4gbmV3IFJxKHQpfSxjYWxsOmZ1bmN0aW9uKHQsZSl7aWYoKG49YXJndW1lbnRzLmxlbmd0aC0yKT4wKWZvcih2YXIgbixpLHI9bmV3IEFycmF5KG4pLG89MDtvPG47KytvKXJbb109YXJndW1lbnRzW28rMl07aWYoIXRoaXMuXy5oYXNPd25Qcm9wZXJ0eSh0KSl0aHJvdyBuZXcgRXJyb3IoInVua25vd24gdHlwZTogIit0KTtmb3Iobz0wLG49KGk9dGhpcy5fW3RdKS5sZW5ndGg7bzxuOysrbylpW29dLnZhbHVlLmFwcGx5KGUscil9LGFwcGx5OmZ1bmN0aW9uKHQsZSxuKXtpZighdGhpcy5fLmhhc093blByb3BlcnR5KHQpKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0eXBlOiAiK3QpO2Zvcih2YXIgaT10aGlzLl9bdF0scj0wLG89aS5sZW5ndGg7cjxvOysrcilpW3JdLnZhbHVlLmFwcGx5KGUsbil9fTt2YXIgQnEsSHEsRnE9MCxWcT0wLFVxPTAsanE9MCxHcT0wLFdxPTAscXE9Im9iamVjdCI9PXR5cGVvZiBwZXJmb3JtYW5jZSYmcGVyZm9ybWFuY2Uubm93P3BlcmZvcm1hbmNlOkRhdGUsWXE9Im9iamVjdCI9PXR5cGVvZiB3aW5kb3cmJndpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWU/d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZS5iaW5kKHdpbmRvdyk6ZnVuY3Rpb24odCl7c2V0VGltZW91dCh0LDE3KX07ZnVuY3Rpb24gWHEoKXtyZXR1cm4gR3F8fChZcSgkcSksR3E9cXEubm93KCkrV3EpfWZ1bmN0aW9uICRxKCl7R3E9MH1mdW5jdGlvbiBLcSgpe3RoaXMuX2NhbGw9dGhpcy5fdGltZT10aGlzLl9uZXh0PW51bGx9ZnVuY3Rpb24gWnEodCxlLG4pe3ZhciBpPW5ldyBLcTtyZXR1cm4gaS5yZXN0YXJ0KHQsZSxuKSxpfWZ1bmN0aW9uIEpxKCl7R3E9KGpxPXFxLm5vdygpKStXcSxGcT1WcT0wO3RyeXshKGZ1bmN0aW9uIHQoKXtYcSgpLCsrRnE7Zm9yKHZhciB0LGU9QnE7ZTspKHQ9R3EtZS5fdGltZSk+PTAmJmUuX2NhbGwuY2FsbChudWxsLHQpLGU9ZS5fbmV4dDstLUZxfSkoKX1maW5hbGx5e0ZxPTAsKGZ1bmN0aW9uIGUoKXt2YXIgdCxlLG49QnEsaT0xLzA7Zm9yKDtuOyluLl9jYWxsPyhpPm4uX3RpbWUmJihpPW4uX3RpbWUpLHQ9bixuPW4uX25leHQpOihlPW4uX25leHQsbi5fbmV4dD1udWxsLG49dD90Ll9uZXh0PWU6QnE9ZSk7SHE9dCx0WShpKX0pKCksR3E9MH19ZnVuY3Rpb24gUXEoKXt2YXIgdD1xcS5ub3coKSxlPXQtanE7ZT4xZTMmJihXcS09ZSxqcT10KX1mdW5jdGlvbiB0WSh0KXtGcXx8KFZxJiYoVnE9Y2xlYXJUaW1lb3V0KFZxKSksdC1HcT4yND8odDwxLzAmJihWcT1zZXRUaW1lb3V0KEpxLHQtcXEubm93KCktV3EpKSxVcSYmKFVxPWNsZWFySW50ZXJ2YWwoVXEpKSk6KFVxfHwoanE9cXEubm93KCksVXE9c2V0SW50ZXJ2YWwoUXEsMWUzKSksRnE9MSxZcShKcSkpKX1mdW5jdGlvbiBlWSh0KXtyZXR1cm4gdC54fWZ1bmN0aW9uIG5ZKHQpe3JldHVybiB0Lnl9S3EucHJvdG90eXBlPVpxLnByb3RvdHlwZT17Y29uc3RydWN0b3I6S3EscmVzdGFydDpmdW5jdGlvbih0LGUsbil7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcigiY2FsbGJhY2sgaXMgbm90IGEgZnVuY3Rpb24iKTtuPShudWxsPT1uP1hxKCk6K24pKyhudWxsPT1lPzA6K2UpLHRoaXMuX25leHR8fEhxPT09dGhpc3x8KEhxP0hxLl9uZXh0PXRoaXM6QnE9dGhpcyxIcT10aGlzKSx0aGlzLl9jYWxsPXQsdGhpcy5fdGltZT1uLHRZKCl9LHN0b3A6ZnVuY3Rpb24oKXt0aGlzLl9jYWxsJiYodGhpcy5fY2FsbD1udWxsLHRoaXMuX3RpbWU9MS8wLHRZKCkpfX07dmFyIGlZLHJZPU1hdGguUEkqKDMtTWF0aC5zcXJ0KDUpKTtmdW5jdGlvbiBvWSh0LGUpe2lmKChuPSh0PWU/dC50b0V4cG9uZW50aWFsKGUtMSk6dC50b0V4cG9uZW50aWFsKCkpLmluZGV4T2YoImUiKSk8MClyZXR1cm4gbnVsbDt2YXIgbixpPXQuc2xpY2UoMCxuKTtyZXR1cm5baS5sZW5ndGg+MT9pWzBdK2kuc2xpY2UoMik6aSwrdC5zbGljZShuKzEpXX1mdW5jdGlvbiBhWSh0KXtyZXR1cm4odD1vWShNYXRoLmFicyh0KSkpP3RbMV06TmFOfWZ1bmN0aW9uIHNZKHQsZSl7dmFyIG49b1kodCxlKTtpZighbilyZXR1cm4gdCsiIjt2YXIgaT1uWzBdLHI9blsxXTtyZXR1cm4gcjwwPyIwLiIrbmV3IEFycmF5KC1yKS5qb2luKCIwIikraTppLmxlbmd0aD5yKzE/aS5zbGljZSgwLHIrMSkrIi4iK2kuc2xpY2UocisxKTppK25ldyBBcnJheShyLWkubGVuZ3RoKzIpLmpvaW4oIjAiKX12YXIgbFk9eyIiOmZ1bmN0aW9uIGNZKHQsZSl7dDpmb3IodmFyIG4saT0odD10LnRvUHJlY2lzaW9uKGUpKS5sZW5ndGgscj0xLG89LTE7cjxpOysrcilzd2l0Y2godFtyXSl7Y2FzZSIuIjpvPW49cjticmVhaztjYXNlIjAiOjA9PT1vJiYobz1yKSxuPXI7YnJlYWs7Y2FzZSJlIjpicmVhayB0O2RlZmF1bHQ6bz4wJiYobz0wKX1yZXR1cm4gbz4wP3Quc2xpY2UoMCxvKSt0LnNsaWNlKG4rMSk6dH0sIiUiOmZ1bmN0aW9uKHQsZSl7cmV0dXJuKDEwMCp0KS50b0ZpeGVkKGUpfSxiOmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnJvdW5kKHQpLnRvU3RyaW5nKDIpfSxjOmZ1bmN0aW9uKHQpe3JldHVybiB0KyIifSxkOmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnJvdW5kKHQpLnRvU3RyaW5nKDEwKX0sZTpmdW5jdGlvbih0LGUpe3JldHVybiB0LnRvRXhwb25lbnRpYWwoZSl9LGY6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC50b0ZpeGVkKGUpfSxnOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQudG9QcmVjaXNpb24oZSl9LG86ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgucm91bmQodCkudG9TdHJpbmcoOCl9LHA6ZnVuY3Rpb24odCxlKXtyZXR1cm4gc1koMTAwKnQsZSl9LHI6c1ksczpmdW5jdGlvbiB1WSh0LGUpe3ZhciBuPW9ZKHQsZSk7aWYoIW4pcmV0dXJuIHQrIiI7dmFyIGk9blswXSxyPW5bMV0sbz1yLShpWT0zKk1hdGgubWF4KC04LE1hdGgubWluKDgsTWF0aC5mbG9vcihyLzMpKSkpKzEsYT1pLmxlbmd0aDtyZXR1cm4gbz09PWE/aTpvPmE/aStuZXcgQXJyYXkoby1hKzEpLmpvaW4oIjAiKTpvPjA/aS5zbGljZSgwLG8pKyIuIitpLnNsaWNlKG8pOiIwLiIrbmV3IEFycmF5KDEtbykuam9pbigiMCIpK29ZKHQsTWF0aC5tYXgoMCxlK28tMSkpWzBdfSxYOmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnJvdW5kKHQpLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpfSx4OmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnJvdW5kKHQpLnRvU3RyaW5nKDE2KX19LGhZPS9eKD86KC4pPyhbPD49Xl0pKT8oWytcLVwoIF0pPyhbJCNdKT8oMCk/KFxkKyk/KCwpPyhcLlxkKyk/KFthLXolXSk/JC9pO2Z1bmN0aW9uIGRZKHQpe3JldHVybiBuZXcgcFkodCl9ZnVuY3Rpb24gcFkodCl7aWYoIShlPWhZLmV4ZWModCkpKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBmb3JtYXQ6ICIrdCk7dmFyIGUsbj1lWzFdfHwiICIsaT1lWzJdfHwiPiIscj1lWzNdfHwiLSIsbz1lWzRdfHwiIixhPSEhZVs1XSxzPWVbNl0mJitlWzZdLGw9ISFlWzddLGM9ZVs4XSYmK2VbOF0uc2xpY2UoMSksdT1lWzldfHwiIjsibiI9PT11PyhsPSEwLHU9ImciKTpsWVt1XXx8KHU9IiIpLChhfHwiMCI9PT1uJiYiPSI9PT1pKSYmKGE9ITAsbj0iMCIsaT0iPSIpLHRoaXMuZmlsbD1uLHRoaXMuYWxpZ249aSx0aGlzLnNpZ249cix0aGlzLnN5bWJvbD1vLHRoaXMuemVybz1hLHRoaXMud2lkdGg9cyx0aGlzLmNvbW1hPWwsdGhpcy5wcmVjaXNpb249Yyx0aGlzLnR5cGU9dX1mdW5jdGlvbiBmWSh0KXtyZXR1cm4gdH1kWS5wcm90b3R5cGU9cFkucHJvdG90eXBlLHBZLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmZpbGwrdGhpcy5hbGlnbit0aGlzLnNpZ24rdGhpcy5zeW1ib2wrKHRoaXMuemVybz8iMCI6IiIpKyhudWxsPT10aGlzLndpZHRoPyIiOk1hdGgubWF4KDEsMHx0aGlzLndpZHRoKSkrKHRoaXMuY29tbWE/IiwiOiIiKSsobnVsbD09dGhpcy5wcmVjaXNpb24/IiI6Ii4iK01hdGgubWF4KDAsMHx0aGlzLnByZWNpc2lvbikpK3RoaXMudHlwZX07dmFyIG1ZLGdZLF9ZLHlZPVsieSIsInoiLCJhIiwiZiIsInAiLCJuIiwiwrUiLCJtIiwiIiwiayIsIk0iLCJHIiwiVCIsIlAiLCJFIiwiWiIsIlkiXTtmdW5jdGlvbiB2WSh0KXt2YXIgZT10Lmdyb3VwaW5nJiZ0LnRob3VzYW5kcz8oZnVuY3Rpb24gbih0LGUpe3JldHVybiBmdW5jdGlvbihuLGkpe2Zvcih2YXIgcj1uLmxlbmd0aCxvPVtdLGE9MCxzPXRbMF0sbD0wO3I+MCYmcz4wJiYobCtzKzE+aSYmKHM9TWF0aC5tYXgoMSxpLWwpKSxvLnB1c2gobi5zdWJzdHJpbmcoci09cyxyK3MpKSwhKChsKz1zKzEpPmkpKTspcz10W2E9KGErMSkldC5sZW5ndGhdO3JldHVybiBvLnJldmVyc2UoKS5qb2luKGUpfX0pKHQuZ3JvdXBpbmcsdC50aG91c2FuZHMpOmZZLGk9dC5jdXJyZW5jeSxyPXQuZGVjaW1hbCxvPXQubnVtZXJhbHM/KGZ1bmN0aW9uIGEodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoL1swLTldL2csKGZ1bmN0aW9uKGUpe3JldHVybiB0WytlXX0pKX19KSh0Lm51bWVyYWxzKTpmWSxzPXQucGVyY2VudHx8IiUiO2Z1bmN0aW9uIGwodCl7dmFyIG49KHQ9ZFkodCkpLmZpbGwsYT10LmFsaWduLGw9dC5zaWduLGM9dC5zeW1ib2wsdT10Lnplcm8saD10LndpZHRoLGQ9dC5jb21tYSxwPXQucHJlY2lzaW9uLGY9dC50eXBlLG09IiQiPT09Yz9pWzBdOiIjIj09PWMmJi9bYm94WF0vLnRlc3QoZik/IjAiK2YudG9Mb3dlckNhc2UoKToiIixnPSIkIj09PWM/aVsxXTovWyVwXS8udGVzdChmKT9zOiIiLF89bFlbZl0seT0hZnx8L1tkZWZncHJzJV0vLnRlc3QoZik7ZnVuY3Rpb24gdih0KXt2YXIgaSxzLGMsdj1tLGI9ZztpZigiYyI9PT1mKWI9Xyh0KStiLHQ9IiI7ZWxzZXt2YXIgeD0odD0rdCk8MDtpZih0PV8oTWF0aC5hYnModCkscCkseCYmMD09K3QmJih4PSExKSx2PSh4PyIoIj09PWw/bDoiLSI6Ii0iPT09bHx8IigiPT09bD8iIjpsKSt2LGI9KCJzIj09PWY/eVlbOCtpWS8zXToiIikrYisoeCYmIigiPT09bD8iKSI6IiIpLHkpZm9yKGk9LTEscz10Lmxlbmd0aDsrK2k8czspaWYoNDg+KGM9dC5jaGFyQ29kZUF0KGkpKXx8Yz41Nyl7Yj0oNDY9PT1jP3IrdC5zbGljZShpKzEpOnQuc2xpY2UoaSkpK2IsdD10LnNsaWNlKDAsaSk7YnJlYWt9fWQmJiF1JiYodD1lKHQsMS8wKSk7dmFyIHc9di5sZW5ndGgrdC5sZW5ndGgrYi5sZW5ndGgsUz13PGg/bmV3IEFycmF5KGgtdysxKS5qb2luKG4pOiIiO3N3aXRjaChkJiZ1JiYodD1lKFMrdCxTLmxlbmd0aD9oLWIubGVuZ3RoOjEvMCksUz0iIiksYSl7Y2FzZSI8Ijp0PXYrdCtiK1M7YnJlYWs7Y2FzZSI9Ijp0PXYrUyt0K2I7YnJlYWs7Y2FzZSJeIjp0PVMuc2xpY2UoMCx3PVMubGVuZ3RoPj4xKSt2K3QrYitTLnNsaWNlKHcpO2JyZWFrO2RlZmF1bHQ6dD1TK3YrdCtifXJldHVybiBvKHQpfXJldHVybiBwPW51bGw9PXA/Zj82OjEyOi9bZ3Byc10vLnRlc3QoZik/TWF0aC5tYXgoMSxNYXRoLm1pbigyMSxwKSk6TWF0aC5tYXgoMCxNYXRoLm1pbigyMCxwKSksdi50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0KyIifSx2fXJldHVybntmb3JtYXQ6bCxmb3JtYXRQcmVmaXg6ZnVuY3Rpb24gYyh0LGUpe3ZhciBuPWwoKCh0PWRZKHQpKS50eXBlPSJmIix0KSksaT0zKk1hdGgubWF4KC04LE1hdGgubWluKDgsTWF0aC5mbG9vcihhWShlKS8zKSkpLHI9TWF0aC5wb3coMTAsLWkpLG89eVlbOCtpLzNdO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gbihyKnQpK299fX19ZnVuY3Rpb24gYlkodCl7cmV0dXJuIG1ZPXZZKHQpLGdZPW1ZLmZvcm1hdCxfWT1tWS5mb3JtYXRQcmVmaXgsbVl9ZnVuY3Rpb24geFkoKXtyZXR1cm4gbmV3IHdZfWZ1bmN0aW9uIHdZKCl7dGhpcy5yZXNldCgpfWJZKHtkZWNpbWFsOiIuIix0aG91c2FuZHM6IiwiLGdyb3VwaW5nOlszXSxjdXJyZW5jeTpbIiQiLCIiXX0pLHdZLnByb3RvdHlwZT17Y29uc3RydWN0b3I6d1kscmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLnM9dGhpcy50PTB9LGFkZDpmdW5jdGlvbih0KXtNWShTWSx0LHRoaXMudCksTVkodGhpcyxTWS5zLHRoaXMucyksdGhpcy5zP3RoaXMudCs9U1kudDp0aGlzLnM9U1kudH0sdmFsdWVPZjpmdW5jdGlvbigpe3JldHVybiB0aGlzLnN9fTt2YXIgU1k9bmV3IHdZO2Z1bmN0aW9uIE1ZKHQsZSxuKXt2YXIgaT10LnM9ZStuLHI9aS1lO3QudD1lLShpLXIpKyhuLXIpfXZhciBFWT0xZS02LFRZPU1hdGguUEksQ1k9VFkvMixBWT1UWS80LGtZPTIqVFksTFk9MTgwL1RZLFBZPVRZLzE4MCxOWT1NYXRoLmFicyxJWT1NYXRoLmF0YW4sUlk9TWF0aC5hdGFuMixPWT1NYXRoLmNvcyx6WT1NYXRoLmNlaWwsRFk9TWF0aC5leHAsQlk9TWF0aC5sb2csSFk9TWF0aC5wb3csRlk9TWF0aC5zaW4sVlk9TWF0aC5zaWdufHxmdW5jdGlvbih0KXtyZXR1cm4gdD4wPzE6dDwwPy0xOjB9LFVZPU1hdGguc3FydCxqWT1NYXRoLnRhbjtmdW5jdGlvbiBHWSh0KXtyZXR1cm4gdD4xPzA6dDwtMT9UWTpNYXRoLmFjb3ModCl9ZnVuY3Rpb24gV1kodCl7cmV0dXJuIHQ+MT9DWTp0PC0xPy1DWTpNYXRoLmFzaW4odCl9ZnVuY3Rpb24gcVkodCl7cmV0dXJuKHQ9RlkodC8yKSkqdH1mdW5jdGlvbiBZWSgpe31mdW5jdGlvbiBYWSh0LGUpe3QmJktZLmhhc093blByb3BlcnR5KHQudHlwZSkmJktZW3QudHlwZV0odCxlKX12YXIgJFk9e0ZlYXR1cmU6ZnVuY3Rpb24odCxlKXtYWSh0Lmdlb21ldHJ5LGUpfSxGZWF0dXJlQ29sbGVjdGlvbjpmdW5jdGlvbih0LGUpe2Zvcih2YXIgbj10LmZlYXR1cmVzLGk9LTEscj1uLmxlbmd0aDsrK2k8cjspWFkobltpXS5nZW9tZXRyeSxlKX19LEtZPXtTcGhlcmU6ZnVuY3Rpb24odCxlKXtlLnNwaGVyZSgpfSxQb2ludDpmdW5jdGlvbih0LGUpe2UucG9pbnQoKHQ9dC5jb29yZGluYXRlcylbMF0sdFsxXSx0WzJdKX0sTXVsdGlQb2ludDpmdW5jdGlvbih0LGUpe2Zvcih2YXIgbj10LmNvb3JkaW5hdGVzLGk9LTEscj1uLmxlbmd0aDsrK2k8cjspZS5wb2ludCgodD1uW2ldKVswXSx0WzFdLHRbMl0pfSxMaW5lU3RyaW5nOmZ1bmN0aW9uKHQsZSl7WlkodC5jb29yZGluYXRlcyxlLDApfSxNdWx0aUxpbmVTdHJpbmc6ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dC5jb29yZGluYXRlcyxpPS0xLHI9bi5sZW5ndGg7KytpPHI7KVpZKG5baV0sZSwwKX0sUG9seWdvbjpmdW5jdGlvbih0LGUpe0pZKHQuY29vcmRpbmF0ZXMsZSl9LE11bHRpUG9seWdvbjpmdW5jdGlvbih0LGUpe2Zvcih2YXIgbj10LmNvb3JkaW5hdGVzLGk9LTEscj1uLmxlbmd0aDsrK2k8cjspSlkobltpXSxlKX0sR2VvbWV0cnlDb2xsZWN0aW9uOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPXQuZ2VvbWV0cmllcyxpPS0xLHI9bi5sZW5ndGg7KytpPHI7KVhZKG5baV0sZSl9fTtmdW5jdGlvbiBaWSh0LGUsbil7dmFyIGkscj0tMSxvPXQubGVuZ3RoLW47Zm9yKGUubGluZVN0YXJ0KCk7KytyPG87KWUucG9pbnQoKGk9dFtyXSlbMF0saVsxXSxpWzJdKTtlLmxpbmVFbmQoKX1mdW5jdGlvbiBKWSh0LGUpe3ZhciBuPS0xLGk9dC5sZW5ndGg7Zm9yKGUucG9seWdvblN0YXJ0KCk7KytuPGk7KVpZKHRbbl0sZSwxKTtlLnBvbHlnb25FbmQoKX1mdW5jdGlvbiBRWSh0LGUpe3QmJiRZLmhhc093blByb3BlcnR5KHQudHlwZSk/JFlbdC50eXBlXSh0LGUpOlhZKHQsZSl9dmFyIHRYLGVYLG5YLGlYLHJYLG9YPXhZKCksYVg9eFkoKSxzWD17cG9pbnQ6WVksbGluZVN0YXJ0OllZLGxpbmVFbmQ6WVkscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7b1gucmVzZXQoKSxzWC5saW5lU3RhcnQ9bFgsc1gubGluZUVuZD1jWH0scG9seWdvbkVuZDpmdW5jdGlvbigpe3ZhciB0PStvWDthWC5hZGQodDwwP2tZK3Q6dCksdGhpcy5saW5lU3RhcnQ9dGhpcy5saW5lRW5kPXRoaXMucG9pbnQ9WVl9LHNwaGVyZTpmdW5jdGlvbigpe2FYLmFkZChrWSl9fTtmdW5jdGlvbiBsWCgpe3NYLnBvaW50PXVYfWZ1bmN0aW9uIGNYKCl7aFgodFgsZVgpfWZ1bmN0aW9uIHVYKHQsZSl7c1gucG9pbnQ9aFgsdFg9dCxlWD1lLG5YPXQqPVBZLGlYPU9ZKGU9KGUqPVBZKS8yK0FZKSxyWD1GWShlKX1mdW5jdGlvbiBoWCh0LGUpe3ZhciBuPSh0Kj1QWSktblgsaT1uPj0wPzE6LTEscj1pKm4sbz1PWShlPShlKj1QWSkvMitBWSksYT1GWShlKSxzPXJYKmEsbD1pWCpvK3MqT1kociksYz1zKmkqRlkocik7b1guYWRkKFJZKGMsbCkpLG5YPXQsaVg9byxyWD1hfWZ1bmN0aW9uIGRYKHQpe3JldHVybltSWSh0WzFdLHRbMF0pLFdZKHRbMl0pXX1mdW5jdGlvbiBwWCh0KXt2YXIgZT10WzBdLG49dFsxXSxpPU9ZKG4pO3JldHVybltpKk9ZKGUpLGkqRlkoZSksRlkobildfWZ1bmN0aW9uIGZYKHQsZSl7cmV0dXJuIHRbMF0qZVswXSt0WzFdKmVbMV0rdFsyXSplWzJdfWZ1bmN0aW9uIG1YKHQsZSl7cmV0dXJuW3RbMV0qZVsyXS10WzJdKmVbMV0sdFsyXSplWzBdLXRbMF0qZVsyXSx0WzBdKmVbMV0tdFsxXSplWzBdXX1mdW5jdGlvbiBnWCh0LGUpe3RbMF0rPWVbMF0sdFsxXSs9ZVsxXSx0WzJdKz1lWzJdfWZ1bmN0aW9uIF9YKHQsZSl7cmV0dXJuW3RbMF0qZSx0WzFdKmUsdFsyXSplXX1mdW5jdGlvbiB5WCh0KXt2YXIgZT1VWSh0WzBdKnRbMF0rdFsxXSp0WzFdK3RbMl0qdFsyXSk7dFswXS89ZSx0WzFdLz1lLHRbMl0vPWV9dmFyIHZYLGJYLHhYLHdYLFNYLE1YLEVYLFRYLENYLEFYLGtYLExYLFBYLE5YLElYLFJYLE9YLHpYLERYLEJYLEhYLEZYLFZYLFVYLGpYLEdYLFdYPXhZKCkscVg9e3BvaW50OllYLGxpbmVTdGFydDokWCxsaW5lRW5kOktYLHBvbHlnb25TdGFydDpmdW5jdGlvbigpe3FYLnBvaW50PVpYLHFYLmxpbmVTdGFydD1KWCxxWC5saW5lRW5kPVFYLFdYLnJlc2V0KCksc1gucG9seWdvblN0YXJ0KCl9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtzWC5wb2x5Z29uRW5kKCkscVgucG9pbnQ9WVgscVgubGluZVN0YXJ0PSRYLHFYLmxpbmVFbmQ9S1gsb1g8MD8odlg9LSh4WD0xODApLGJYPS0od1g9OTApKTpXWD5FWT93WD05MDpXWDwtMWUtNiYmKGJYPS05MCksQVhbMF09dlgsQVhbMV09eFh9fTtmdW5jdGlvbiBZWCh0LGUpe0NYLnB1c2goQVg9W3ZYPXQseFg9dF0pLGU8YlgmJihiWD1lKSxlPndYJiYod1g9ZSl9ZnVuY3Rpb24gWFgodCxlKXt2YXIgbj1wWChbdCpQWSxlKlBZXSk7aWYoVFgpe3ZhciBpPW1YKFRYLG4pLHI9bVgoW2lbMV0sLWlbMF0sMF0saSk7eVgocikscj1kWChyKTt2YXIgbyxhPXQtU1gscz1hPjA/MTotMSxsPXJbMF0qTFkqcyxjPU5ZKGEpPjE4MDtjXihzKlNYPGwmJmw8cyp0KT8obz1yWzFdKkxZKT53WCYmKHdYPW8pOmNeKHMqU1g8KGw9KGwrMzYwKSUzNjAtMTgwKSYmbDxzKnQpPyhvPS1yWzFdKkxZKTxiWCYmKGJYPW8pOihlPGJYJiYoYlg9ZSksZT53WCYmKHdYPWUpKSxjP3Q8U1g/dCQodlgsdCk+dCQodlgseFgpJiYoeFg9dCk6dCQodCx4WCk+dCQodlgseFgpJiYodlg9dCk6eFg+PXZYPyh0PHZYJiYodlg9dCksdD54WCYmKHhYPXQpKTp0PlNYP3QkKHZYLHQpPnQkKHZYLHhYKSYmKHhYPXQpOnQkKHQseFgpPnQkKHZYLHhYKSYmKHZYPXQpfWVsc2UgQ1gucHVzaChBWD1bdlg9dCx4WD10XSk7ZTxiWCYmKGJYPWUpLGU+d1gmJih3WD1lKSxUWD1uLFNYPXR9ZnVuY3Rpb24gJFgoKXtxWC5wb2ludD1YWH1mdW5jdGlvbiBLWCgpe0FYWzBdPXZYLEFYWzFdPXhYLHFYLnBvaW50PVlYLFRYPW51bGx9ZnVuY3Rpb24gWlgodCxlKXtpZihUWCl7dmFyIG49dC1TWDtXWC5hZGQoTlkobik+MTgwP24rKG4+MD8zNjA6LTM2MCk6bil9ZWxzZSBNWD10LEVYPWU7c1gucG9pbnQodCxlKSxYWCh0LGUpfWZ1bmN0aW9uIEpYKCl7c1gubGluZVN0YXJ0KCl9ZnVuY3Rpb24gUVgoKXtaWChNWCxFWCksc1gubGluZUVuZCgpLE5ZKFdYKT5FWSYmKHZYPS0oeFg9MTgwKSksQVhbMF09dlgsQVhbMV09eFgsVFg9bnVsbH1mdW5jdGlvbiB0JCh0LGUpe3JldHVybihlLT10KTwwP2UrMzYwOmV9ZnVuY3Rpb24gZSQodCxlKXtyZXR1cm4gdFswXS1lWzBdfWZ1bmN0aW9uIG4kKHQsZSl7cmV0dXJuIHRbMF08PXRbMV0/dFswXTw9ZSYmZTw9dFsxXTplPHRbMF18fHRbMV08ZX12YXIgaSQ9e3NwaGVyZTpZWSxwb2ludDpyJCxsaW5lU3RhcnQ6YSQsbGluZUVuZDpjJCxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXtpJC5saW5lU3RhcnQ9dSQsaSQubGluZUVuZD1oJH0scG9seWdvbkVuZDpmdW5jdGlvbigpe2kkLmxpbmVTdGFydD1hJCxpJC5saW5lRW5kPWMkfX07ZnVuY3Rpb24gciQodCxlKXt0Kj1QWTt2YXIgbj1PWShlKj1QWSk7byQobipPWSh0KSxuKkZZKHQpLEZZKGUpKX1mdW5jdGlvbiBvJCh0LGUsbil7KytrWCxQWCs9KHQtUFgpL2tYLE5YKz0oZS1OWCkva1gsSVgrPShuLUlYKS9rWH1mdW5jdGlvbiBhJCgpe2kkLnBvaW50PXMkfWZ1bmN0aW9uIHMkKHQsZSl7dCo9UFk7dmFyIG49T1koZSo9UFkpO1VYPW4qT1kodCksalg9bipGWSh0KSxHWD1GWShlKSxpJC5wb2ludD1sJCxvJChVWCxqWCxHWCl9ZnVuY3Rpb24gbCQodCxlKXt0Kj1QWTt2YXIgbj1PWShlKj1QWSksaT1uKk9ZKHQpLHI9bipGWSh0KSxvPUZZKGUpLGE9UlkoVVkoKGE9algqby1HWCpyKSphKyhhPUdYKmktVVgqbykqYSsoYT1VWCpyLWpYKmkpKmEpLFVYKmkralgqcitHWCpvKTtMWCs9YSxSWCs9YSooVVgrKFVYPWkpKSxPWCs9YSooalgrKGpYPXIpKSx6WCs9YSooR1grKEdYPW8pKSxvJChVWCxqWCxHWCl9ZnVuY3Rpb24gYyQoKXtpJC5wb2ludD1yJH1mdW5jdGlvbiB1JCgpe2kkLnBvaW50PWQkfWZ1bmN0aW9uIGgkKCl7cCQoRlgsVlgpLGkkLnBvaW50PXIkfWZ1bmN0aW9uIGQkKHQsZSl7Rlg9dCxWWD1lLHQqPVBZLGUqPVBZLGkkLnBvaW50PXAkO3ZhciBuPU9ZKGUpO1VYPW4qT1kodCksalg9bipGWSh0KSxHWD1GWShlKSxvJChVWCxqWCxHWCl9ZnVuY3Rpb24gcCQodCxlKXt0Kj1QWTt2YXIgbj1PWShlKj1QWSksaT1uKk9ZKHQpLHI9bipGWSh0KSxvPUZZKGUpLGE9algqby1HWCpyLHM9R1gqaS1VWCpvLGw9VVgqci1qWCppLGM9VVkoYSphK3MqcytsKmwpLHU9V1koYyksaD1jJiYtdS9jO0RYKz1oKmEsQlgrPWgqcyxIWCs9aCpsLExYKz11LFJYKz11KihVWCsoVVg9aSkpLE9YKz11KihqWCsoalg9cikpLHpYKz11KihHWCsoR1g9bykpLG8kKFVYLGpYLEdYKX1mdW5jdGlvbiBmJCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gbSQodCxlKXtmdW5jdGlvbiBuKG4saSl7cmV0dXJuIG49dChuLGkpLGUoblswXSxuWzFdKX1yZXR1cm4gdC5pbnZlcnQmJmUuaW52ZXJ0JiYobi5pbnZlcnQ9ZnVuY3Rpb24obixpKXtyZXR1cm4obj1lLmludmVydChuLGkpKSYmdC5pbnZlcnQoblswXSxuWzFdKX0pLG59ZnVuY3Rpb24gZyQodCxlKXtyZXR1cm5bdD5UWT90LWtZOnQ8LVRZP3Qra1k6dCxlXX1mdW5jdGlvbiBfJCh0LGUsbil7cmV0dXJuKHQlPWtZKT9lfHxuP20kKHYkKHQpLGIkKGUsbikpOnYkKHQpOmV8fG4/YiQoZSxuKTpnJH1mdW5jdGlvbiB5JCh0KXtyZXR1cm4gZnVuY3Rpb24oZSxuKXtyZXR1cm5bKGUrPXQpPlRZP2Uta1k6ZTwtVFk/ZStrWTplLG5dfX1mdW5jdGlvbiB2JCh0KXt2YXIgZT15JCh0KTtyZXR1cm4gZS5pbnZlcnQ9eSQoLXQpLGV9ZnVuY3Rpb24gYiQodCxlKXt2YXIgbj1PWSh0KSxpPUZZKHQpLHI9T1koZSksbz1GWShlKTtmdW5jdGlvbiBhKHQsZSl7dmFyIGE9T1koZSkscz1PWSh0KSphLGw9RlkodCkqYSxjPUZZKGUpLHU9YypuK3MqaTtyZXR1cm5bUlkobCpyLXUqbyxzKm4tYyppKSxXWSh1KnIrbCpvKV19cmV0dXJuIGEuaW52ZXJ0PWZ1bmN0aW9uKHQsZSl7dmFyIGE9T1koZSkscz1PWSh0KSphLGw9RlkodCkqYSxjPUZZKGUpLHU9YypyLWwqbztyZXR1cm5bUlkobCpyK2MqbyxzKm4rdSppKSxXWSh1Km4tcyppKV19LGF9ZnVuY3Rpb24geCQodCl7ZnVuY3Rpb24gZShlKXtyZXR1cm4oZT10KGVbMF0qUFksZVsxXSpQWSkpWzBdKj1MWSxlWzFdKj1MWSxlfXJldHVybiB0PV8kKHRbMF0qUFksdFsxXSpQWSx0Lmxlbmd0aD4yP3RbMl0qUFk6MCksZS5pbnZlcnQ9ZnVuY3Rpb24oZSl7cmV0dXJuKGU9dC5pbnZlcnQoZVswXSpQWSxlWzFdKlBZKSlbMF0qPUxZLGVbMV0qPUxZLGV9LGV9ZnVuY3Rpb24gdyQodCxlLG4saSxyLG8pe2lmKG4pe3ZhciBhPU9ZKGUpLHM9RlkoZSksbD1pKm47bnVsbD09cj8ocj1lK2kqa1ksbz1lLWwvMik6KHI9UyQoYSxyKSxvPVMkKGEsbyksKGk+MD9yPG86cj5vKSYmKHIrPWkqa1kpKTtmb3IodmFyIGMsdT1yO2k+MD91Pm86dTxvO3UtPWwpYz1kWChbYSwtcypPWSh1KSwtcypGWSh1KV0pLHQucG9pbnQoY1swXSxjWzFdKX19ZnVuY3Rpb24gUyQodCxlKXsoZT1wWChlKSlbMF0tPXQseVgoZSk7dmFyIG49R1koLWVbMV0pO3JldHVybigoLWVbMl08MD8tbjpuKStrWS1FWSkla1l9ZnVuY3Rpb24gTSQoKXt2YXIgdCxlPVtdO3JldHVybntwb2ludDpmdW5jdGlvbihlLG4pe3QucHVzaChbZSxuXSl9LGxpbmVTdGFydDpmdW5jdGlvbigpe2UucHVzaCh0PVtdKX0sbGluZUVuZDpZWSxyZWpvaW46ZnVuY3Rpb24oKXtlLmxlbmd0aD4xJiZlLnB1c2goZS5wb3AoKS5jb25jYXQoZS5zaGlmdCgpKSl9LHJlc3VsdDpmdW5jdGlvbigpe3ZhciBuPWU7cmV0dXJuIGU9W10sdD1udWxsLG59fX1mdW5jdGlvbiBFJCh0LGUpe3JldHVybiBOWSh0WzBdLWVbMF0pPEVZJiZOWSh0WzFdLWVbMV0pPEVZfWZ1bmN0aW9uIFQkKHQsZSxuLGkpe3RoaXMueD10LHRoaXMuej1lLHRoaXMubz1uLHRoaXMuZT1pLHRoaXMudj0hMSx0aGlzLm49dGhpcy5wPW51bGx9ZnVuY3Rpb24gQyQodCxlLG4saSxyKXt2YXIgbyxhLHM9W10sbD1bXTtpZih0LmZvckVhY2goKGZ1bmN0aW9uKHQpe2lmKCEoKGU9dC5sZW5ndGgtMSk8PTApKXt2YXIgZSxuLGk9dFswXSxhPXRbZV07aWYoRSQoaSxhKSl7Zm9yKHIubGluZVN0YXJ0KCksbz0wO288ZTsrK28pci5wb2ludCgoaT10W29dKVswXSxpWzFdKTtyLmxpbmVFbmQoKX1lbHNlIHMucHVzaChuPW5ldyBUJChpLHQsbnVsbCwhMCkpLGwucHVzaChuLm89bmV3IFQkKGksbnVsbCxuLCExKSkscy5wdXNoKG49bmV3IFQkKGEsdCxudWxsLCExKSksbC5wdXNoKG4ubz1uZXcgVCQoYSxudWxsLG4sITApKX19KSkscy5sZW5ndGgpe2ZvcihsLnNvcnQoZSksQSQocyksQSQobCksbz0wLGE9bC5sZW5ndGg7bzxhOysrbylsW29dLmU9bj0hbjtmb3IodmFyIGMsdSxoPXNbMF07Oyl7Zm9yKHZhciBkPWgscD0hMDtkLnY7KWlmKChkPWQubik9PT1oKXJldHVybjtjPWQueixyLmxpbmVTdGFydCgpO2Rve2lmKGQudj1kLm8udj0hMCxkLmUpe2lmKHApZm9yKG89MCxhPWMubGVuZ3RoO288YTsrK28pci5wb2ludCgodT1jW29dKVswXSx1WzFdKTtlbHNlIGkoZC54LGQubi54LDEscik7ZD1kLm59ZWxzZXtpZihwKWZvcihvPShjPWQucC56KS5sZW5ndGgtMTtvPj0wOy0tbylyLnBvaW50KCh1PWNbb10pWzBdLHVbMV0pO2Vsc2UgaShkLngsZC5wLngsLTEscik7ZD1kLnB9Yz0oZD1kLm8pLnoscD0hcH13aGlsZSghZC52KTtyLmxpbmVFbmQoKX19fWZ1bmN0aW9uIEEkKHQpe2lmKGU9dC5sZW5ndGgpe2Zvcih2YXIgZSxuLGk9MCxyPXRbMF07KytpPGU7KXIubj1uPXRbaV0sbi5wPXIscj1uO3Iubj1uPXRbMF0sbi5wPXJ9fWckLmludmVydD1nJDt2YXIgayQ9eFkoKTtmdW5jdGlvbiBMJCh0LGUpe3ZhciBuPWVbMF0saT1lWzFdLHI9W0ZZKG4pLC1PWShuKSwwXSxvPTAsYT0wO2skLnJlc2V0KCk7Zm9yKHZhciBzPTAsbD10Lmxlbmd0aDtzPGw7KytzKWlmKHU9KGM9dFtzXSkubGVuZ3RoKWZvcih2YXIgYyx1LGg9Y1t1LTFdLGQ9aFswXSxwPWhbMV0vMitBWSxmPUZZKHApLG09T1kocCksZz0wO2c8dTsrK2csZD15LGY9YixtPXgsaD1fKXt2YXIgXz1jW2ddLHk9X1swXSx2PV9bMV0vMitBWSxiPUZZKHYpLHg9T1kodiksdz15LWQsUz13Pj0wPzE6LTEsTT1TKncsRT1NPlRZLFQ9ZipiO2lmKGskLmFkZChSWShUKlMqRlkoTSksbSp4K1QqT1koTSkpKSxvKz1FP3crUyprWTp3LEVeZD49bl55Pj1uKXt2YXIgQz1tWChwWChoKSxwWChfKSk7eVgoQyk7dmFyIEE9bVgocixDKTt5WChBKTt2YXIgaz0oRV53Pj0wPy0xOjEpKldZKEFbMl0pOyhpPmt8fGk9PT1rJiYoQ1swXXx8Q1sxXSkpJiYoYSs9RV53Pj0wPzE6LTEpfX1yZXR1cm4obzwtMWUtNnx8bzxFWSYmayQ8LTFlLTYpXjEmYX1mdW5jdGlvbiBQJCh0LGUpe3JldHVybiB0PGU/LTE6dD5lPzE6dD49ZT8wOk5hTn1mdW5jdGlvbiBOJCh0LGUsbil7dD0rdCxlPStlLG49KHI9YXJndW1lbnRzLmxlbmd0aCk8Mj8oZT10LHQ9MCwxKTpyPDM/MTorbjtmb3IodmFyIGk9LTEscj0wfE1hdGgubWF4KDAsTWF0aC5jZWlsKChlLXQpL24pKSxvPW5ldyBBcnJheShyKTsrK2k8cjspb1tpXT10K2kqbjtyZXR1cm4gb31mdW5jdGlvbiBJJCh0KXtmb3IodmFyIGUsbixpLHI9dC5sZW5ndGgsbz0tMSxhPTA7KytvPHI7KWErPXRbb10ubGVuZ3RoO2ZvcihuPW5ldyBBcnJheShhKTstLXI+PTA7KWZvcihlPShpPXRbcl0pLmxlbmd0aDstLWU+PTA7KW5bLS1hXT1pW2VdO3JldHVybiBufWZ1bmN0aW9uIFIkKHQsZSxuLGkpe3JldHVybiBmdW5jdGlvbihyKXt2YXIgbyxhLHMsbD1lKHIpLGM9TSQoKSx1PWUoYyksaD0hMSxkPXtwb2ludDpwLGxpbmVTdGFydDptLGxpbmVFbmQ6Zyxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXtkLnBvaW50PV8sZC5saW5lU3RhcnQ9eSxkLmxpbmVFbmQ9dixhPVtdLG89W119LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtkLnBvaW50PXAsZC5saW5lU3RhcnQ9bSxkLmxpbmVFbmQ9ZyxhPUkkKGEpO3ZhciB0PUwkKG8saSk7YS5sZW5ndGg/KGh8fChyLnBvbHlnb25TdGFydCgpLGg9ITApLEMkKGEseiQsdCxuLHIpKTp0JiYoaHx8KHIucG9seWdvblN0YXJ0KCksaD0hMCksci5saW5lU3RhcnQoKSxuKG51bGwsbnVsbCwxLHIpLHIubGluZUVuZCgpKSxoJiYoci5wb2x5Z29uRW5kKCksaD0hMSksYT1vPW51bGx9LHNwaGVyZTpmdW5jdGlvbigpe3IucG9seWdvblN0YXJ0KCksci5saW5lU3RhcnQoKSxuKG51bGwsbnVsbCwxLHIpLHIubGluZUVuZCgpLHIucG9seWdvbkVuZCgpfX07ZnVuY3Rpb24gcChlLG4pe3QoZSxuKSYmci5wb2ludChlLG4pfWZ1bmN0aW9uIGYodCxlKXtsLnBvaW50KHQsZSl9ZnVuY3Rpb24gbSgpe2QucG9pbnQ9ZixsLmxpbmVTdGFydCgpfWZ1bmN0aW9uIGcoKXtkLnBvaW50PXAsbC5saW5lRW5kKCl9ZnVuY3Rpb24gXyh0LGUpe3MucHVzaChbdCxlXSksdS5wb2ludCh0LGUpfWZ1bmN0aW9uIHkoKXt1LmxpbmVTdGFydCgpLHM9W119ZnVuY3Rpb24gdigpe18oc1swXVswXSxzWzBdWzFdKSx1LmxpbmVFbmQoKTt2YXIgdCxlLG4saSxsPXUuY2xlYW4oKSxkPWMucmVzdWx0KCkscD1kLmxlbmd0aDtpZihzLnBvcCgpLG8ucHVzaChzKSxzPW51bGwscClpZigxJmwpe2lmKChlPShuPWRbMF0pLmxlbmd0aC0xKT4wKXtmb3IoaHx8KHIucG9seWdvblN0YXJ0KCksaD0hMCksci5saW5lU3RhcnQoKSx0PTA7dDxlOysrdClyLnBvaW50KChpPW5bdF0pWzBdLGlbMV0pO3IubGluZUVuZCgpfX1lbHNlIHA+MSYmMiZsJiZkLnB1c2goZC5wb3AoKS5jb25jYXQoZC5zaGlmdCgpKSksYS5wdXNoKGQuZmlsdGVyKE8kKSl9cmV0dXJuIGR9fWZ1bmN0aW9uIE8kKHQpe3JldHVybiB0Lmxlbmd0aD4xfWZ1bmN0aW9uIHokKHQsZSl7cmV0dXJuKCh0PXQueClbMF08MD90WzFdLUNZLUVZOkNZLXRbMV0pLSgoZT1lLngpWzBdPDA/ZVsxXS1DWS1FWTpDWS1lWzFdKX0hKGZ1bmN0aW9uIEQkKHQpe3JldHVybiAxPT09dC5sZW5ndGgmJih0PShmdW5jdGlvbiBlKHQpe3JldHVybiBmdW5jdGlvbihlLG4pe3JldHVybiBQJCh0KGUpLG4pfX0pKHQpKSx7bGVmdDpmdW5jdGlvbihlLG4saSxyKXtmb3IobnVsbD09aSYmKGk9MCksbnVsbD09ciYmKHI9ZS5sZW5ndGgpO2k8cjspe3ZhciBvPWkrcj4+PjE7dChlW29dLG4pPDA/aT1vKzE6cj1vfXJldHVybiBpfSxyaWdodDpmdW5jdGlvbihlLG4saSxyKXtmb3IobnVsbD09aSYmKGk9MCksbnVsbD09ciYmKHI9ZS5sZW5ndGgpO2k8cjspe3ZhciBvPWkrcj4+PjE7dChlW29dLG4pPjA/cj1vOmk9bysxfXJldHVybiBpfX19KShQJCk7dmFyIEIkPVIkKChmdW5jdGlvbigpe3JldHVybiEwfSksKGZ1bmN0aW9uIEgkKHQpe3ZhciBlLG49TmFOLGk9TmFOLHI9TmFOO3JldHVybntsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0LmxpbmVTdGFydCgpLGU9MX0scG9pbnQ6ZnVuY3Rpb24obyxhKXt2YXIgcz1vPjA/VFk6LVRZLGw9Tlkoby1uKTtOWShsLVRZKTxFWT8odC5wb2ludChuLGk9KGkrYSkvMj4wP0NZOi1DWSksdC5wb2ludChyLGkpLHQubGluZUVuZCgpLHQubGluZVN0YXJ0KCksdC5wb2ludChzLGkpLHQucG9pbnQobyxpKSxlPTApOnIhPT1zJiZsPj1UWSYmKE5ZKG4tcik8RVkmJihuLT1yKkVZKSxOWShvLXMpPEVZJiYoby09cypFWSksaT0oZnVuY3Rpb24gYyh0LGUsbixpKXt2YXIgcixvLGE9RlkodC1uKTtyZXR1cm4gTlkoYSk+RVk/SVkoKEZZKGUpKihvPU9ZKGkpKSpGWShuKS1GWShpKSoocj1PWShlKSkqRlkodCkpLyhyKm8qYSkpOihlK2kpLzJ9KShuLGksbyxhKSx0LnBvaW50KHIsaSksdC5saW5lRW5kKCksdC5saW5lU3RhcnQoKSx0LnBvaW50KHMsaSksZT0wKSx0LnBvaW50KG49byxpPWEpLHI9c30sbGluZUVuZDpmdW5jdGlvbigpe3QubGluZUVuZCgpLG49aT1OYU59LGNsZWFuOmZ1bmN0aW9uKCl7cmV0dXJuIDItZX19fSksKGZ1bmN0aW9uIEYkKHQsZSxuLGkpe3ZhciByO2lmKG51bGw9PXQpaS5wb2ludCgtVFkscj1uKkNZKSxpLnBvaW50KDAsciksaS5wb2ludChUWSxyKSxpLnBvaW50KFRZLDApLGkucG9pbnQoVFksLXIpLGkucG9pbnQoMCwtciksaS5wb2ludCgtVFksLXIpLGkucG9pbnQoLVRZLDApLGkucG9pbnQoLVRZLHIpO2Vsc2UgaWYoTlkodFswXS1lWzBdKT5FWSl7dmFyIG89dFswXTxlWzBdP1RZOi1UWTtpLnBvaW50KC1vLHI9bipvLzIpLGkucG9pbnQoMCxyKSxpLnBvaW50KG8scil9ZWxzZSBpLnBvaW50KGVbMF0sZVsxXSl9KSxbLVRZLC1DWV0pO2Z1bmN0aW9uIFYkKHQpe3ZhciBlPU9ZKHQpLG49NipQWSxpPWU+MCxyPU5ZKGUpPkVZO2Z1bmN0aW9uIG8odCxuKXtyZXR1cm4gT1kodCkqT1kobik+ZX1mdW5jdGlvbiBhKHQsbixpKXt2YXIgcj1bMSwwLDBdLG89bVgocFgodCkscFgobikpLGE9ZlgobyxvKSxzPW9bMF0sbD1hLXMqcztpZighbClyZXR1cm4haSYmdDt2YXIgYz1lKmEvbCx1PS1lKnMvbCxoPW1YKHIsbyksZD1fWChyLGMpO2dYKGQsX1gobyx1KSk7dmFyIHA9aCxmPWZYKGQscCksbT1mWChwLHApLGc9ZipmLW0qKGZYKGQsZCktMSk7aWYoIShnPDApKXt2YXIgXz1VWShnKSx5PV9YKHAsKC1mLV8pL20pO2lmKGdYKHksZCkseT1kWCh5KSwhaSlyZXR1cm4geTt2YXIgdixiPXRbMF0seD1uWzBdLHc9dFsxXSxTPW5bMV07eDxiJiYodj1iLGI9eCx4PXYpO3ZhciBNPXgtYixFPU5ZKE0tVFkpPEVZO2lmKCFFJiZTPHcmJih2PXcsdz1TLFM9diksRXx8TTxFWT9FP3crUz4wXnlbMV08KE5ZKHlbMF0tYik8RVk/dzpTKTp3PD15WzFdJiZ5WzFdPD1TOk0+VFleKGI8PXlbMF0mJnlbMF08PXgpKXt2YXIgVD1fWChwLCgtZitfKS9tKTtyZXR1cm4gZ1goVCxkKSxbeSxkWChUKV19fX1mdW5jdGlvbiBzKGUsbil7dmFyIHI9aT90OlRZLXQsbz0wO3JldHVybiBlPC1yP298PTE6ZT5yJiYob3w9Miksbjwtcj9vfD00Om4+ciYmKG98PTgpLG99cmV0dXJuIFIkKG8sKGZ1bmN0aW9uIGwodCl7dmFyIGUsbixsLGMsdTtyZXR1cm57bGluZVN0YXJ0OmZ1bmN0aW9uKCl7Yz1sPSExLHU9MX0scG9pbnQ6ZnVuY3Rpb24oaCxkKXt2YXIgcCxmPVtoLGRdLG09byhoLGQpLGc9aT9tPzA6cyhoLGQpOm0/cyhoKyhoPDA/VFk6LVRZKSxkKTowO2lmKCFlJiYoYz1sPW0pJiZ0LmxpbmVTdGFydCgpLG0hPT1sJiYoIShwPWEoZSxmKSl8fEUkKGUscCl8fEUkKGYscCkpJiYoZlswXSs9RVksZlsxXSs9RVksbT1vKGZbMF0sZlsxXSkpLG0hPT1sKXU9MCxtPyh0LmxpbmVTdGFydCgpLHA9YShmLGUpLHQucG9pbnQocFswXSxwWzFdKSk6KHA9YShlLGYpLHQucG9pbnQocFswXSxwWzFdKSx0LmxpbmVFbmQoKSksZT1wO2Vsc2UgaWYociYmZSYmaV5tKXt2YXIgXztnJm58fCEoXz1hKGYsZSwhMCkpfHwodT0wLGk/KHQubGluZVN0YXJ0KCksdC5wb2ludChfWzBdWzBdLF9bMF1bMV0pLHQucG9pbnQoX1sxXVswXSxfWzFdWzFdKSx0LmxpbmVFbmQoKSk6KHQucG9pbnQoX1sxXVswXSxfWzFdWzFdKSx0LmxpbmVFbmQoKSx0LmxpbmVTdGFydCgpLHQucG9pbnQoX1swXVswXSxfWzBdWzFdKSkpfSFtfHxlJiZFJChlLGYpfHx0LnBvaW50KGZbMF0sZlsxXSksZT1mLGw9bSxuPWd9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtsJiZ0LmxpbmVFbmQoKSxlPW51bGx9LGNsZWFuOmZ1bmN0aW9uKCl7cmV0dXJuIHV8KGMmJmwpPDwxfX19KSwoZnVuY3Rpb24gYyhlLGkscixvKXt3JChvLHQsbixyLGUsaSl9KSxpP1swLC10XTpbLVRZLHQtVFldKX12YXIgVSQ9MWU5LGokPS1VJDtmdW5jdGlvbiBHJCh0LGUsbixpKXtmdW5jdGlvbiByKHIsbyl7cmV0dXJuIHQ8PXImJnI8PW4mJmU8PW8mJm88PWl9ZnVuY3Rpb24gbyhyLG8scyxjKXt2YXIgdT0wLGg9MDtpZihudWxsPT1yfHwodT1hKHIscykpIT09KGg9YShvLHMpKXx8bChyLG8pPDBecz4wKWRve2MucG9pbnQoMD09PXV8fDM9PT11P3Q6bix1PjE/aTplKX13aGlsZSgodT0odStzKzQpJTQpIT09aCk7ZWxzZSBjLnBvaW50KG9bMF0sb1sxXSl9ZnVuY3Rpb24gYShpLHIpe3JldHVybiBOWShpWzBdLXQpPEVZP3I+MD8wOjM6TlkoaVswXS1uKTxFWT9yPjA/MjoxOk5ZKGlbMV0tZSk8RVk/cj4wPzE6MDpyPjA/MzoyfWZ1bmN0aW9uIHModCxlKXtyZXR1cm4gbCh0LngsZS54KX1mdW5jdGlvbiBsKHQsZSl7dmFyIG49YSh0LDEpLGk9YShlLDEpO3JldHVybiBuIT09aT9uLWk6MD09PW4/ZVsxXS10WzFdOjE9PT1uP3RbMF0tZVswXToyPT09bj90WzFdLWVbMV06ZVswXS10WzBdfXJldHVybiBmdW5jdGlvbihhKXt2YXIgbCxjLHUsaCxkLHAsZixtLGcsXyx5LHY9YSxiPU0kKCkseD17cG9pbnQ6VCxsaW5lU3RhcnQ6ZnVuY3Rpb24gdygpe3gucG9pbnQ9QyxjJiZjLnB1c2godT1bXSk7Xz0hMCxnPSExLGY9bT1OYU59LGxpbmVFbmQ6ZnVuY3Rpb24gUygpe2wmJihDKGgsZCkscCYmZyYmYi5yZWpvaW4oKSxsLnB1c2goYi5yZXN1bHQoKSkpO3gucG9pbnQ9VCxnJiZ2LmxpbmVFbmQoKX0scG9seWdvblN0YXJ0OmZ1bmN0aW9uIE0oKXt2PWIsbD1bXSxjPVtdLHk9ITB9LHBvbHlnb25FbmQ6ZnVuY3Rpb24gRSgpe3ZhciBlPShmdW5jdGlvbiBuKCl7Zm9yKHZhciBlPTAsbj0wLHI9Yy5sZW5ndGg7bjxyOysrbilmb3IodmFyIG8sYSxzPWNbbl0sbD0xLHU9cy5sZW5ndGgsaD1zWzBdLGQ9aFswXSxwPWhbMV07bDx1OysrbClvPWQsYT1wLGQ9KGg9c1tsXSlbMF0scD1oWzFdLGE8PWk/cD5pJiYoZC1vKSooaS1hKT4ocC1hKSoodC1vKSYmKytlOnA8PWkmJihkLW8pKihpLWEpPChwLWEpKih0LW8pJiYtLWU7cmV0dXJuIGV9KSgpLHI9eSYmZSxoPShsPUkkKGwpKS5sZW5ndGg7KHJ8fGgpJiYoYS5wb2x5Z29uU3RhcnQoKSxyJiYoYS5saW5lU3RhcnQoKSxvKG51bGwsbnVsbCwxLGEpLGEubGluZUVuZCgpKSxoJiZDJChsLHMsZSxvLGEpLGEucG9seWdvbkVuZCgpKTt2PWEsbD1jPXU9bnVsbH19O2Z1bmN0aW9uIFQodCxlKXtyKHQsZSkmJnYucG9pbnQodCxlKX1mdW5jdGlvbiBDKG8sYSl7dmFyIHM9cihvLGEpO2lmKGMmJnUucHVzaChbbyxhXSksXyloPW8sZD1hLHA9cyxfPSExLHMmJih2LmxpbmVTdGFydCgpLHYucG9pbnQobyxhKSk7ZWxzZSBpZihzJiZnKXYucG9pbnQobyxhKTtlbHNle3ZhciBsPVtmPU1hdGgubWF4KGokLE1hdGgubWluKFUkLGYpKSxtPU1hdGgubWF4KGokLE1hdGgubWluKFUkLG0pKV0sYj1bbz1NYXRoLm1heChqJCxNYXRoLm1pbihVJCxvKSksYT1NYXRoLm1heChqJCxNYXRoLm1pbihVJCxhKSldOyEoZnVuY3Rpb24geCh0LGUsbixpLHIsbyl7dmFyIGEscz10WzBdLGw9dFsxXSxjPTAsdT0xLGg9ZVswXS1zLGQ9ZVsxXS1sO2lmKGE9bi1zLGh8fCEoYT4wKSl7aWYoYS89aCxoPDApe2lmKGE8YylyZXR1cm47YTx1JiYodT1hKX1lbHNlIGlmKGg+MCl7aWYoYT51KXJldHVybjthPmMmJihjPWEpfWlmKGE9ci1zLGh8fCEoYTwwKSl7aWYoYS89aCxoPDApe2lmKGE+dSlyZXR1cm47YT5jJiYoYz1hKX1lbHNlIGlmKGg+MCl7aWYoYTxjKXJldHVybjthPHUmJih1PWEpfWlmKGE9aS1sLGR8fCEoYT4wKSl7aWYoYS89ZCxkPDApe2lmKGE8YylyZXR1cm47YTx1JiYodT1hKX1lbHNlIGlmKGQ+MCl7aWYoYT51KXJldHVybjthPmMmJihjPWEpfWlmKGE9by1sLGR8fCEoYTwwKSl7aWYoYS89ZCxkPDApe2lmKGE+dSlyZXR1cm47YT5jJiYoYz1hKX1lbHNlIGlmKGQ+MCl7aWYoYTxjKXJldHVybjthPHUmJih1PWEpfXJldHVybiBjPjAmJih0WzBdPXMrYypoLHRbMV09bCtjKmQpLHU8MSYmKGVbMF09cyt1KmgsZVsxXT1sK3UqZCksITB9fX19fSkobCxiLHQsZSxuLGkpP3MmJih2LmxpbmVTdGFydCgpLHYucG9pbnQobyxhKSx5PSExKTooZ3x8KHYubGluZVN0YXJ0KCksdi5wb2ludChsWzBdLGxbMV0pKSx2LnBvaW50KGJbMF0sYlsxXSksc3x8di5saW5lRW5kKCkseT0hMSl9Zj1vLG09YSxnPXN9cmV0dXJuIHh9fXZhciBXJCxxJCxZJCxYJD14WSgpLCQkPXtzcGhlcmU6WVkscG9pbnQ6WVksbGluZVN0YXJ0OmZ1bmN0aW9uIEskKCl7JCQucG9pbnQ9SiQsJCQubGluZUVuZD1aJH0sbGluZUVuZDpZWSxwb2x5Z29uU3RhcnQ6WVkscG9seWdvbkVuZDpZWX07ZnVuY3Rpb24gWiQoKXskJC5wb2ludD0kJC5saW5lRW5kPVlZfWZ1bmN0aW9uIEokKHQsZSl7VyQ9dCo9UFkscSQ9RlkoZSo9UFkpLFkkPU9ZKGUpLCQkLnBvaW50PVEkfWZ1bmN0aW9uIFEkKHQsZSl7dCo9UFk7dmFyIG49RlkoZSo9UFkpLGk9T1koZSkscj1OWSh0LVckKSxvPU9ZKHIpLGE9aSpGWShyKSxzPVkkKm4tcSQqaSpvLGw9cSQqbitZJCppKm87WCQuYWRkKFJZKFVZKGEqYStzKnMpLGwpKSxXJD10LHEkPW4sWSQ9aX1mdW5jdGlvbiB0Syh0KXtyZXR1cm4gWCQucmVzZXQoKSxRWSh0LCQkKSwrWCR9dmFyIGVLPVtudWxsLG51bGxdLG5LPXt0eXBlOiJMaW5lU3RyaW5nIixjb29yZGluYXRlczplS307ZnVuY3Rpb24gaUsodCxlKXtyZXR1cm4gZUtbMF09dCxlS1sxXT1lLHRLKG5LKX12YXIgcks9e0ZlYXR1cmU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gYUsodC5nZW9tZXRyeSxlKX0sRmVhdHVyZUNvbGxlY3Rpb246ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dC5mZWF0dXJlcyxpPS0xLHI9bi5sZW5ndGg7KytpPHI7KWlmKGFLKG5baV0uZ2VvbWV0cnksZSkpcmV0dXJuITA7cmV0dXJuITF9fSxvSz17U3BoZXJlOmZ1bmN0aW9uKCl7cmV0dXJuITB9LFBvaW50OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHNLKHQuY29vcmRpbmF0ZXMsZSl9LE11bHRpUG9pbnQ6ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dC5jb29yZGluYXRlcyxpPS0xLHI9bi5sZW5ndGg7KytpPHI7KWlmKHNLKG5baV0sZSkpcmV0dXJuITA7cmV0dXJuITF9LExpbmVTdHJpbmc6ZnVuY3Rpb24odCxlKXtyZXR1cm4gbEsodC5jb29yZGluYXRlcyxlKX0sTXVsdGlMaW5lU3RyaW5nOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPXQuY29vcmRpbmF0ZXMsaT0tMSxyPW4ubGVuZ3RoOysraTxyOylpZihsSyhuW2ldLGUpKXJldHVybiEwO3JldHVybiExfSxQb2x5Z29uOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGNLKHQuY29vcmRpbmF0ZXMsZSl9LE11bHRpUG9seWdvbjpmdW5jdGlvbih0LGUpe2Zvcih2YXIgbj10LmNvb3JkaW5hdGVzLGk9LTEscj1uLmxlbmd0aDsrK2k8cjspaWYoY0sobltpXSxlKSlyZXR1cm4hMDtyZXR1cm4hMX0sR2VvbWV0cnlDb2xsZWN0aW9uOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPXQuZ2VvbWV0cmllcyxpPS0xLHI9bi5sZW5ndGg7KytpPHI7KWlmKGFLKG5baV0sZSkpcmV0dXJuITA7cmV0dXJuITF9fTtmdW5jdGlvbiBhSyh0LGUpe3JldHVybiEoIXR8fCFvSy5oYXNPd25Qcm9wZXJ0eSh0LnR5cGUpKSYmb0tbdC50eXBlXSh0LGUpfWZ1bmN0aW9uIHNLKHQsZSl7cmV0dXJuIDA9PT1pSyh0LGUpfWZ1bmN0aW9uIGxLKHQsZSl7dmFyIG49aUsodFswXSx0WzFdKTtyZXR1cm4gaUsodFswXSxlKStpSyhlLHRbMV0pPD1uK0VZfWZ1bmN0aW9uIGNLKHQsZSl7cmV0dXJuISFMJCh0Lm1hcCh1SyksaEsoZSkpfWZ1bmN0aW9uIHVLKHQpe3JldHVybih0PXQubWFwKGhLKSkucG9wKCksdH1mdW5jdGlvbiBoSyh0KXtyZXR1cm5bdFswXSpQWSx0WzFdKlBZXX1mdW5jdGlvbiBkSyh0LGUsbil7dmFyIGk9TiQodCxlLUVZLG4pLmNvbmNhdChlKTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGkubWFwKChmdW5jdGlvbihlKXtyZXR1cm5bdCxlXX0pKX19ZnVuY3Rpb24gcEsodCxlLG4pe3ZhciBpPU4kKHQsZS1FWSxuKS5jb25jYXQoZSk7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBpLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuW2UsdF19KSl9fWZ1bmN0aW9uIGZLKCl7dmFyIHQsZSxuLGkscixvLGEscyxsLGMsdSxoLGQ9MTAscD1kLGY9OTAsbT0zNjAsZz0yLjU7ZnVuY3Rpb24gXygpe3JldHVybnt0eXBlOiJNdWx0aUxpbmVTdHJpbmciLGNvb3JkaW5hdGVzOnkoKX19ZnVuY3Rpb24geSgpe3JldHVybiBOJCh6WShpL2YpKmYsbixmKS5tYXAodSkuY29uY2F0KE4kKHpZKHMvbSkqbSxhLG0pLm1hcChoKSkuY29uY2F0KE4kKHpZKGUvZCkqZCx0LGQpLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE5ZKHQlZik+RVl9KSkubWFwKGwpKS5jb25jYXQoTiQoelkoby9wKSpwLHIscCkuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gTlkodCVtKT5FWX0pKS5tYXAoYykpfXJldHVybiBfLmxpbmVzPWZ1bmN0aW9uKCl7cmV0dXJuIHkoKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybnt0eXBlOiJMaW5lU3RyaW5nIixjb29yZGluYXRlczp0fX0pKX0sXy5vdXRsaW5lPWZ1bmN0aW9uKCl7cmV0dXJue3R5cGU6IlBvbHlnb24iLGNvb3JkaW5hdGVzOlt1KGkpLmNvbmNhdChoKGEpLnNsaWNlKDEpLHUobikucmV2ZXJzZSgpLnNsaWNlKDEpLGgocykucmV2ZXJzZSgpLnNsaWNlKDEpKV19fSxfLmV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9fLmV4dGVudE1ham9yKHQpLmV4dGVudE1pbm9yKHQpOl8uZXh0ZW50TWlub3IoKX0sXy5leHRlbnRNYWpvcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz0rdFswXVsxXSxhPSt0WzFdWzFdLChpPSt0WzBdWzBdKT4obj0rdFsxXVswXSkmJih0PWksaT1uLG49dCkscz5hJiYodD1zLHM9YSxhPXQpLF8ucHJlY2lzaW9uKGcpKTpbW2ksc10sW24sYV1dfSxfLmV4dGVudE1pbm9yPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPStuWzBdWzFdLHI9K25bMV1bMV0sKGU9K25bMF1bMF0pPih0PStuWzFdWzBdKSYmKG49ZSxlPXQsdD1uKSxvPnImJihuPW8sbz1yLHI9biksXy5wcmVjaXNpb24oZykpOltbZSxvXSxbdCxyXV19LF8uc3RlcD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9fLnN0ZXBNYWpvcih0KS5zdGVwTWlub3IodCk6Xy5zdGVwTWlub3IoKX0sXy5zdGVwTWFqb3I9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGY9K3RbMF0sbT0rdFsxXSxfKTpbZixtXX0sXy5zdGVwTWlub3I9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGQ9K3RbMF0scD0rdFsxXSxfKTpbZCxwXX0sXy5wcmVjaXNpb249ZnVuY3Rpb24oZCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGc9K2QsbD1kSyhvLHIsOTApLGM9cEsoZSx0LGcpLHU9ZEsocyxhLDkwKSxoPXBLKGksbixnKSxfKTpnfSxfLmV4dGVudE1ham9yKFtbLTE4MCwtODkuOTk5OTk5XSxbMTgwLDg5Ljk5OTk5OV1dKS5leHRlbnRNaW5vcihbWy0xODAsLTgwLjAwMDAwMV0sWzE4MCw4MC4wMDAwMDFdXSl9ZnVuY3Rpb24gbUsodCl7cmV0dXJuIHR9dmFyIGdLLF9LLHlLLHZLLGJLPXhZKCkseEs9eFkoKSx3Sz17cG9pbnQ6WVksbGluZVN0YXJ0OllZLGxpbmVFbmQ6WVkscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7d0subGluZVN0YXJ0PVNLLHdLLmxpbmVFbmQ9VEt9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXt3Sy5saW5lU3RhcnQ9d0subGluZUVuZD13Sy5wb2ludD1ZWSxiSy5hZGQoTlkoeEspKSx4Sy5yZXNldCgpfSxyZXN1bHQ6ZnVuY3Rpb24oKXt2YXIgdD1iSy8yO3JldHVybiBiSy5yZXNldCgpLHR9fTtmdW5jdGlvbiBTSygpe3dLLnBvaW50PU1LfWZ1bmN0aW9uIE1LKHQsZSl7d0sucG9pbnQ9RUssZ0s9eUs9dCxfSz12Sz1lfWZ1bmN0aW9uIEVLKHQsZSl7eEsuYWRkKHZLKnQteUsqZSkseUs9dCx2Sz1lfWZ1bmN0aW9uIFRLKCl7RUsoZ0ssX0spfXZhciBDSz0xLzAsQUs9Q0ssa0s9LUNLLExLPWtLLFBLPXtwb2ludDpmdW5jdGlvbiBOSyh0LGUpe3Q8Q0smJihDSz10KTt0PmtLJiYoa0s9dCk7ZTxBSyYmKEFLPWUpO2U+TEsmJihMSz1lKX0sbGluZVN0YXJ0OllZLGxpbmVFbmQ6WVkscG9seWdvblN0YXJ0OllZLHBvbHlnb25FbmQ6WVkscmVzdWx0OmZ1bmN0aW9uKCl7dmFyIHQ9W1tDSyxBS10sW2tLLExLXV07cmV0dXJuIGtLPUxLPS0oQUs9Q0s9MS8wKSx0fX07dmFyIElLLFJLLE9LLHpLLERLPTAsQks9MCxISz0wLEZLPTAsVks9MCxVSz0wLGpLPTAsR0s9MCxXSz0wLHFLPXtwb2ludDpZSyxsaW5lU3RhcnQ6WEssbGluZUVuZDpaSyxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXtxSy5saW5lU3RhcnQ9SksscUsubGluZUVuZD1RS30scG9seWdvbkVuZDpmdW5jdGlvbigpe3FLLnBvaW50PVlLLHFLLmxpbmVTdGFydD1YSyxxSy5saW5lRW5kPVpLfSxyZXN1bHQ6ZnVuY3Rpb24oKXt2YXIgdD1XSz9baksvV0ssR0svV0tdOlVLP1tGSy9VSyxWSy9VS106SEs/W0RLL0hLLEJLL0hLXTpbTmFOLE5hTl07cmV0dXJuIERLPUJLPUhLPUZLPVZLPVVLPWpLPUdLPVdLPTAsdH19O2Z1bmN0aW9uIFlLKHQsZSl7REsrPXQsQksrPWUsKytIS31mdW5jdGlvbiBYSygpe3FLLnBvaW50PSRLfWZ1bmN0aW9uICRLKHQsZSl7cUsucG9pbnQ9S0ssWUsoT0s9dCx6Sz1lKX1mdW5jdGlvbiBLSyh0LGUpe3ZhciBuPXQtT0ssaT1lLXpLLHI9VVkobipuK2kqaSk7RksrPXIqKE9LK3QpLzIsVksrPXIqKHpLK2UpLzIsVUsrPXIsWUsoT0s9dCx6Sz1lKX1mdW5jdGlvbiBaSygpe3FLLnBvaW50PVlLfWZ1bmN0aW9uIEpLKCl7cUsucG9pbnQ9dFp9ZnVuY3Rpb24gUUsoKXtlWihJSyxSSyl9ZnVuY3Rpb24gdFoodCxlKXtxSy5wb2ludD1lWixZSyhJSz1PSz10LFJLPXpLPWUpfWZ1bmN0aW9uIGVaKHQsZSl7dmFyIG49dC1PSyxpPWUteksscj1VWShuKm4raSppKTtGSys9ciooT0srdCkvMixWSys9ciooeksrZSkvMixVSys9cixqSys9KHI9eksqdC1PSyplKSooT0srdCksR0srPXIqKHpLK2UpLFdLKz0zKnIsWUsoT0s9dCx6Sz1lKX1mdW5jdGlvbiBuWih0KXt0aGlzLl9jb250ZXh0PXR9bloucHJvdG90eXBlPXtfcmFkaXVzOjQuNSxwb2ludFJhZGl1czpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcmFkaXVzPXQsdGhpc30scG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXswPT09dGhpcy5fbGluZSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9wb2ludD1OYU59LHBvaW50OmZ1bmN0aW9uKHQsZSl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fY29udGV4dC5tb3ZlVG8odCxlKSx0aGlzLl9wb2ludD0xO2JyZWFrO2Nhc2UgMTp0aGlzLl9jb250ZXh0LmxpbmVUbyh0LGUpO2JyZWFrO2RlZmF1bHQ6dGhpcy5fY29udGV4dC5tb3ZlVG8odCt0aGlzLl9yYWRpdXMsZSksdGhpcy5fY29udGV4dC5hcmModCxlLHRoaXMuX3JhZGl1cywwLGtZKX19LHJlc3VsdDpZWX07dmFyIGlaLHJaLG9aLGFaLHNaLGxaPXhZKCksY1o9e3BvaW50OllZLGxpbmVTdGFydDpmdW5jdGlvbigpe2NaLnBvaW50PXVafSxsaW5lRW5kOmZ1bmN0aW9uKCl7aVomJmhaKHJaLG9aKSxjWi5wb2ludD1ZWX0scG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7aVo9ITB9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtpWj1udWxsfSxyZXN1bHQ6ZnVuY3Rpb24oKXt2YXIgdD0rbFo7cmV0dXJuIGxaLnJlc2V0KCksdH19O2Z1bmN0aW9uIHVaKHQsZSl7Y1oucG9pbnQ9aFosclo9YVo9dCxvWj1zWj1lfWZ1bmN0aW9uIGhaKHQsZSl7bFouYWRkKFVZKChhWi09dCkqYVorKHNaLT1lKSpzWikpLGFaPXQsc1o9ZX1mdW5jdGlvbiBkWigpe3RoaXMuX3N0cmluZz1bXX1mdW5jdGlvbiBwWih0KXtyZXR1cm4ibTAsIit0KyJhIit0KyIsIit0KyIgMCAxLDEgMCwiKy0yKnQrImEiK3QrIiwiK3QrIiAwIDEsMSAwLCIrMip0KyJ6In1mdW5jdGlvbiBmWih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIG49bmV3IG1aO2Zvcih2YXIgaSBpbiB0KW5baV09dFtpXTtyZXR1cm4gbi5zdHJlYW09ZSxufX1mdW5jdGlvbiBtWigpe31mdW5jdGlvbiBnWih0LGUsbil7dmFyIGk9dC5jbGlwRXh0ZW50JiZ0LmNsaXBFeHRlbnQoKTtyZXR1cm4gdC5zY2FsZSgxNTApLnRyYW5zbGF0ZShbMCwwXSksbnVsbCE9aSYmdC5jbGlwRXh0ZW50KG51bGwpLFFZKG4sdC5zdHJlYW0oUEspKSxlKFBLLnJlc3VsdCgpKSxudWxsIT1pJiZ0LmNsaXBFeHRlbnQoaSksdH1mdW5jdGlvbiBfWih0LGUsbil7cmV0dXJuIGdaKHQsKGZ1bmN0aW9uKG4pe3ZhciBpPWVbMV1bMF0tZVswXVswXSxyPWVbMV1bMV0tZVswXVsxXSxvPU1hdGgubWluKGkvKG5bMV1bMF0tblswXVswXSksci8oblsxXVsxXS1uWzBdWzFdKSksYT0rZVswXVswXSsoaS1vKihuWzFdWzBdK25bMF1bMF0pKS8yLHM9K2VbMF1bMV0rKHItbyooblsxXVsxXStuWzBdWzFdKSkvMjt0LnNjYWxlKDE1MCpvKS50cmFuc2xhdGUoW2Esc10pfSksbil9ZnVuY3Rpb24geVoodCxlLG4pe3JldHVybiBfWih0LFtbMCwwXSxlXSxuKX1mdW5jdGlvbiB2Wih0LGUsbil7cmV0dXJuIGdaKHQsKGZ1bmN0aW9uKG4pe3ZhciBpPStlLHI9aS8oblsxXVswXS1uWzBdWzBdKSxvPShpLXIqKG5bMV1bMF0rblswXVswXSkpLzIsYT0tcipuWzBdWzFdO3Quc2NhbGUoMTUwKnIpLnRyYW5zbGF0ZShbbyxhXSl9KSxuKX1mdW5jdGlvbiBiWih0LGUsbil7cmV0dXJuIGdaKHQsKGZ1bmN0aW9uKG4pe3ZhciBpPStlLHI9aS8oblsxXVsxXS1uWzBdWzFdKSxvPS1yKm5bMF1bMF0sYT0oaS1yKihuWzFdWzFdK25bMF1bMV0pKS8yO3Quc2NhbGUoMTUwKnIpLnRyYW5zbGF0ZShbbyxhXSl9KSxuKX1kWi5wcm90b3R5cGU9e19yYWRpdXM6NC41LF9jaXJjbGU6cFooNC41KSxwb2ludFJhZGl1czpmdW5jdGlvbih0KXtyZXR1cm4odD0rdCkhPT10aGlzLl9yYWRpdXMmJih0aGlzLl9yYWRpdXM9dCx0aGlzLl9jaXJjbGU9bnVsbCksdGhpc30scG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXswPT09dGhpcy5fbGluZSYmdGhpcy5fc3RyaW5nLnB1c2goIloiKSx0aGlzLl9wb2ludD1OYU59LHBvaW50OmZ1bmN0aW9uKHQsZSl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fc3RyaW5nLnB1c2goIk0iLHQsIiwiLGUpLHRoaXMuX3BvaW50PTE7YnJlYWs7Y2FzZSAxOnRoaXMuX3N0cmluZy5wdXNoKCJMIix0LCIsIixlKTticmVhaztkZWZhdWx0Om51bGw9PXRoaXMuX2NpcmNsZSYmKHRoaXMuX2NpcmNsZT1wWih0aGlzLl9yYWRpdXMpKSx0aGlzLl9zdHJpbmcucHVzaCgiTSIsdCwiLCIsZSx0aGlzLl9jaXJjbGUpfX0scmVzdWx0OmZ1bmN0aW9uKCl7aWYodGhpcy5fc3RyaW5nLmxlbmd0aCl7dmFyIHQ9dGhpcy5fc3RyaW5nLmpvaW4oIiIpO3JldHVybiB0aGlzLl9zdHJpbmc9W10sdH1yZXR1cm4gbnVsbH19LG1aLnByb3RvdHlwZT17Y29uc3RydWN0b3I6bVoscG9pbnQ6ZnVuY3Rpb24odCxlKXt0aGlzLnN0cmVhbS5wb2ludCh0LGUpfSxzcGhlcmU6ZnVuY3Rpb24oKXt0aGlzLnN0cmVhbS5zcGhlcmUoKX0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5zdHJlYW0ubGluZVN0YXJ0KCl9LGxpbmVFbmQ6ZnVuY3Rpb24oKXt0aGlzLnN0cmVhbS5saW5lRW5kKCl9LHBvbHlnb25TdGFydDpmdW5jdGlvbigpe3RoaXMuc3RyZWFtLnBvbHlnb25TdGFydCgpfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7dGhpcy5zdHJlYW0ucG9seWdvbkVuZCgpfX07dmFyIHhaPU9ZKDMwKlBZKTtmdW5jdGlvbiB3Wih0LGUpe3JldHVybitlPyhmdW5jdGlvbiBuKHQsZSl7ZnVuY3Rpb24gbihpLHIsbyxhLHMsbCxjLHUsaCxkLHAsZixtLGcpe3ZhciBfPWMtaSx5PXUtcix2PV8qXyt5Knk7aWYodj40KmUmJm0tLSl7dmFyIGI9YStkLHg9cytwLHc9bCtmLFM9VVkoYipiK3gqeCt3KncpLE09V1kody89UyksRT1OWShOWSh3KS0xKTxFWXx8Tlkoby1oKTxFWT8obytoKS8yOlJZKHgsYiksVD10KEUsTSksQz1UWzBdLEE9VFsxXSxrPUMtaSxMPUEtcixQPXkqay1fKkw7KFAqUC92PmV8fE5ZKChfKmsreSpMKS92LS41KT4uM3x8YSpkK3MqcCtsKmY8eFopJiYobihpLHIsbyxhLHMsbCxDLEEsRSxiLz1TLHgvPVMsdyxtLGcpLGcucG9pbnQoQyxBKSxuKEMsQSxFLGIseCx3LGMsdSxoLGQscCxmLG0sZykpfX1yZXR1cm4gZnVuY3Rpb24oZSl7dmFyIGkscixvLGEscyxsLGMsdSxoLGQscCxmLG09e3BvaW50OmcsbGluZVN0YXJ0Ol8sbGluZUVuZDp2LHBvbHlnb25TdGFydDpmdW5jdGlvbigpe2UucG9seWdvblN0YXJ0KCksbS5saW5lU3RhcnQ9Yn0scG9seWdvbkVuZDpmdW5jdGlvbigpe2UucG9seWdvbkVuZCgpLG0ubGluZVN0YXJ0PV99fTtmdW5jdGlvbiBnKG4saSl7bj10KG4saSksZS5wb2ludChuWzBdLG5bMV0pfWZ1bmN0aW9uIF8oKXt1PU5hTixtLnBvaW50PXksZS5saW5lU3RhcnQoKX1mdW5jdGlvbiB5KGkscil7dmFyIG89cFgoW2kscl0pLGE9dChpLHIpO24odSxoLGMsZCxwLGYsdT1hWzBdLGg9YVsxXSxjPWksZD1vWzBdLHA9b1sxXSxmPW9bMl0sMTYsZSksZS5wb2ludCh1LGgpfWZ1bmN0aW9uIHYoKXttLnBvaW50PWcsZS5saW5lRW5kKCl9ZnVuY3Rpb24gYigpe18oKSxtLnBvaW50PXgsbS5saW5lRW5kPXd9ZnVuY3Rpb24geCh0LGUpe3koaT10LGUpLHI9dSxvPWgsYT1kLHM9cCxsPWYsbS5wb2ludD15fWZ1bmN0aW9uIHcoKXtuKHUsaCxjLGQscCxmLHIsbyxpLGEscyxsLDE2LGUpLG0ubGluZUVuZD12LHYoKX1yZXR1cm4gbX19KSh0LGUpOihmdW5jdGlvbiBpKHQpe3JldHVybiBmWih7cG9pbnQ6ZnVuY3Rpb24oZSxuKXtlPXQoZSxuKSx0aGlzLnN0cmVhbS5wb2ludChlWzBdLGVbMV0pfX0pfSkodCl9dmFyIFNaPWZaKHtwb2ludDpmdW5jdGlvbih0LGUpe3RoaXMuc3RyZWFtLnBvaW50KHQqUFksZSpQWSl9fSk7ZnVuY3Rpb24gTVoodCl7cmV0dXJuIEVaKChmdW5jdGlvbigpe3JldHVybiB0fSkpKCl9ZnVuY3Rpb24gRVoodCl7dmFyIGUsbixpLHIsbyxhLHMsbCxjLHUsaD0xNTAsZD00ODAscD0yNTAsZj0wLG09MCxnPTAsXz0wLHk9MCx2PW51bGwsYj1CJCx4PW51bGwsdz1tSyxTPS41LE09d1ooQyxTKTtmdW5jdGlvbiBFKHQpe3JldHVyblsodD1vKHRbMF0qUFksdFsxXSpQWSkpWzBdKmgrbixpLXRbMV0qaF19ZnVuY3Rpb24gVCh0KXtyZXR1cm4odD1vLmludmVydCgodFswXS1uKS9oLChpLXRbMV0pL2gpKSYmW3RbMF0qTFksdFsxXSpMWV19ZnVuY3Rpb24gQyh0LHIpe3JldHVyblsodD1lKHQscikpWzBdKmgrbixpLXRbMV0qaF19ZnVuY3Rpb24gQSgpe289bSQocj1fJChnLF8seSksZSk7dmFyIHQ9ZShmLG0pO3JldHVybiBuPWQtdFswXSpoLGk9cCt0WzFdKmgsaygpfWZ1bmN0aW9uIGsoKXtyZXR1cm4gYz11PW51bGwsRX1yZXR1cm4gRS5zdHJlYW09ZnVuY3Rpb24odCl7cmV0dXJuIGMmJnU9PT10P2M6Yz1TWigoZnVuY3Rpb24gZSh0KXtyZXR1cm4gZlooe3BvaW50OmZ1bmN0aW9uKGUsbil7dmFyIGk9dChlLG4pO3JldHVybiB0aGlzLnN0cmVhbS5wb2ludChpWzBdLGlbMV0pfX0pfSkocikoYihNKHcodT10KSkpKSl9LEUucHJlY2xpcD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYj10LHY9dm9pZCAwLGsoKSk6Yn0sRS5wb3N0Y2xpcD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odz10LHg9YT1zPWw9bnVsbCxrKCkpOnd9LEUuY2xpcEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhiPSt0P1YkKHY9dCpQWSk6KHY9bnVsbCxCJCksaygpKTp2KkxZfSxFLmNsaXBFeHRlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHc9bnVsbD09dD8oeD1hPXM9bD1udWxsLG1LKTpHJCh4PSt0WzBdWzBdLGE9K3RbMF1bMV0scz0rdFsxXVswXSxsPSt0WzFdWzFdKSxrKCkpOm51bGw9PXg/bnVsbDpbW3gsYV0sW3MsbF1dfSxFLnNjYWxlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPSt0LEEoKSk6aH0sRS50cmFuc2xhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGQ9K3RbMF0scD0rdFsxXSxBKCkpOltkLHBdfSxFLmNlbnRlcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZj10WzBdJTM2MCpQWSxtPXRbMV0lMzYwKlBZLEEoKSk6W2YqTFksbSpMWV19LEUucm90YXRlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhnPXRbMF0lMzYwKlBZLF89dFsxXSUzNjAqUFkseT10Lmxlbmd0aD4yP3RbMl0lMzYwKlBZOjAsQSgpKTpbZypMWSxfKkxZLHkqTFldfSxFLnByZWNpc2lvbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oTT13WihDLFM9dCp0KSxrKCkpOlVZKFMpfSxFLmZpdEV4dGVudD1mdW5jdGlvbih0LGUpe3JldHVybiBfWihFLHQsZSl9LEUuZml0U2l6ZT1mdW5jdGlvbih0LGUpe3JldHVybiB5WihFLHQsZSl9LEUuZml0V2lkdGg9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdlooRSx0LGUpfSxFLmZpdEhlaWdodD1mdW5jdGlvbih0LGUpe3JldHVybiBiWihFLHQsZSl9LGZ1bmN0aW9uKCl7cmV0dXJuIGU9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyksRS5pbnZlcnQ9ZS5pbnZlcnQmJlQsQSgpfX1mdW5jdGlvbiBUWih0KXt2YXIgZT0wLG49VFkvMyxpPUVaKHQpLHI9aShlLG4pO3JldHVybiByLnBhcmFsbGVscz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9pKGU9dFswXSpQWSxuPXRbMV0qUFkpOltlKkxZLG4qTFldfSxyfWZ1bmN0aW9uIENaKHQsZSl7dmFyIG49RlkodCksaT0obitGWShlKSkvMjtpZihOWShpKTxFWSlyZXR1cm4oZnVuY3Rpb24gcih0KXt2YXIgZT1PWSh0KTtmdW5jdGlvbiBuKHQsbil7cmV0dXJuW3QqZSxGWShuKS9lXX1yZXR1cm4gbi5pbnZlcnQ9ZnVuY3Rpb24odCxuKXtyZXR1cm5bdC9lLFdZKG4qZSldfSxufSkodCk7dmFyIG89MStuKigyKmktbiksYT1VWShvKS9pO2Z1bmN0aW9uIHModCxlKXt2YXIgbj1VWShvLTIqaSpGWShlKSkvaTtyZXR1cm5bbipGWSh0Kj1pKSxhLW4qT1kodCldfXJldHVybiBzLmludmVydD1mdW5jdGlvbih0LGUpe3ZhciBuPWEtZTtyZXR1cm5bUlkodCxOWShuKSkvaSpWWShuKSxXWSgoby0odCp0K24qbikqaSppKS8oMippKSldfSxzfWZ1bmN0aW9uIEFaKCl7cmV0dXJuIFRaKENaKS5zY2FsZSgxNTUuNDI0KS5jZW50ZXIoWzAsMzMuNjQ0Ml0pfWZ1bmN0aW9uIGtaKCl7cmV0dXJuIEFaKCkucGFyYWxsZWxzKFsyOS41LDQ1LjVdKS5zY2FsZSgxMDcwKS50cmFuc2xhdGUoWzQ4MCwyNTBdKS5yb3RhdGUoWzk2LDBdKS5jZW50ZXIoWy0uNiwzOC43XSl9ZnVuY3Rpb24gTFoodCl7cmV0dXJuIGZ1bmN0aW9uKGUsbil7dmFyIGk9T1koZSkscj1PWShuKSxvPXQoaSpyKTtyZXR1cm5bbypyKkZZKGUpLG8qRlkobildfX1mdW5jdGlvbiBQWih0KXtyZXR1cm4gZnVuY3Rpb24oZSxuKXt2YXIgaT1VWShlKmUrbipuKSxyPXQoaSksbz1GWShyKSxhPU9ZKHIpO3JldHVybltSWShlKm8saSphKSxXWShpJiZuKm8vaSldfX12YXIgTlo9TFooKGZ1bmN0aW9uKHQpe3JldHVybiBVWSgyLygxK3QpKX0pKTtOWi5pbnZlcnQ9UFooKGZ1bmN0aW9uKHQpe3JldHVybiAyKldZKHQvMil9KSk7dmFyIElaPUxaKChmdW5jdGlvbih0KXtyZXR1cm4odD1HWSh0KSkmJnQvRlkodCl9KSk7ZnVuY3Rpb24gUloodCxlKXtyZXR1cm5bdCxCWShqWSgoQ1krZSkvMikpXX1mdW5jdGlvbiBPWih0KXt2YXIgZSxuLGkscj1NWih0KSxvPXIuY2VudGVyLGE9ci5zY2FsZSxzPXIudHJhbnNsYXRlLGw9ci5jbGlwRXh0ZW50LGM9bnVsbDtmdW5jdGlvbiB1KCl7dmFyIG89VFkqYSgpLHM9cih4JChyLnJvdGF0ZSgpKS5pbnZlcnQoWzAsMF0pKTtyZXR1cm4gbChudWxsPT1jP1tbc1swXS1vLHNbMV0tb10sW3NbMF0rbyxzWzFdK29dXTp0PT09Ulo/W1tNYXRoLm1heChzWzBdLW8sYyksZV0sW01hdGgubWluKHNbMF0rbyxuKSxpXV06W1tjLE1hdGgubWF4KHNbMV0tbyxlKV0sW24sTWF0aC5taW4oc1sxXStvLGkpXV0pfXJldHVybiByLnNjYWxlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhKHQpLHUoKSk6YSgpfSxyLnRyYW5zbGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocyh0KSx1KCkpOnMoKX0sci5jZW50ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG8odCksdSgpKTpvKCl9LHIuY2xpcEV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obnVsbD09dD9jPWU9bj1pPW51bGw6KGM9K3RbMF1bMF0sZT0rdFswXVsxXSxuPSt0WzFdWzBdLGk9K3RbMV1bMV0pLHUoKSk6bnVsbD09Yz9udWxsOltbYyxlXSxbbixpXV19LHUoKX1mdW5jdGlvbiB6Wih0KXtyZXR1cm4galkoKENZK3QpLzIpfWZ1bmN0aW9uIERaKHQsZSl7dmFyIG49T1kodCksaT10PT09ZT9GWSh0KTpCWShuL09ZKGUpKS9CWSh6WihlKS96Wih0KSkscj1uKkhZKHpaKHQpLGkpL2k7aWYoIWkpcmV0dXJuIFJaO2Z1bmN0aW9uIG8odCxlKXtyPjA/ZTwtQ1krRVkmJihlPS1DWStFWSk6ZT5DWS1FWSYmKGU9Q1ktRVkpO3ZhciBuPXIvSFkoelooZSksaSk7cmV0dXJuW24qRlkoaSp0KSxyLW4qT1koaSp0KV19cmV0dXJuIG8uaW52ZXJ0PWZ1bmN0aW9uKHQsZSl7dmFyIG49ci1lLG89VlkoaSkqVVkodCp0K24qbik7cmV0dXJuW1JZKHQsTlkobikpL2kqVlkobiksMipJWShIWShyL28sMS9pKSktQ1ldfSxvfWZ1bmN0aW9uIEJaKHQsZSl7cmV0dXJuW3QsZV19ZnVuY3Rpb24gSFoodCxlKXt2YXIgbj1PWSh0KSxpPXQ9PT1lP0ZZKHQpOihuLU9ZKGUpKS8oZS10KSxyPW4vaSt0O2lmKE5ZKGkpPEVZKXJldHVybiBCWjtmdW5jdGlvbiBvKHQsZSl7dmFyIG49ci1lLG89aSp0O3JldHVybltuKkZZKG8pLHItbipPWShvKV19cmV0dXJuIG8uaW52ZXJ0PWZ1bmN0aW9uKHQsZSl7dmFyIG49ci1lO3JldHVybltSWSh0LE5ZKG4pKS9pKlZZKG4pLHItVlkoaSkqVVkodCp0K24qbildfSxvfWZ1bmN0aW9uIEZaKHQsZSl7dmFyIG49T1koZSksaT1PWSh0KSpuO3JldHVybltuKkZZKHQpL2ksRlkoZSkvaV19ZnVuY3Rpb24gVloodCxlLG4saSl7cmV0dXJuIDE9PT10JiYxPT09ZSYmMD09PW4mJjA9PT1pP21LOmZaKHtwb2ludDpmdW5jdGlvbihyLG8pe3RoaXMuc3RyZWFtLnBvaW50KHIqdCtuLG8qZStpKX19KX1mdW5jdGlvbiBVWih0LGUpe3ZhciBuPWUqZSxpPW4qbjtyZXR1cm5bdCooLjg3MDctLjEzMTk3OSpuK2kqKGkqKC4wMDM5NzEqbi0uMDAxNTI5KmkpLS4wMTM3OTEpKSxlKigxLjAwNzIyNituKiguMDE1MDg1K2kqKC4wMjg4NzQqbi0uMDQ0NDc1LS4wMDU5MTYqaSkpKV19ZnVuY3Rpb24galoodCxlKXtyZXR1cm5bT1koZSkqRlkodCksRlkoZSldfWZ1bmN0aW9uIEdaKHQsZSl7dmFyIG49T1koZSksaT0xK09ZKHQpKm47cmV0dXJuW24qRlkodCkvaSxGWShlKS9pXX1mdW5jdGlvbiBXWih0LGUpe3JldHVybltCWShqWSgoQ1krZSkvMikpLC10XX1mdW5jdGlvbiBxWih0LGUpe3JldHVybiB0LnBhcmVudD09PWUucGFyZW50PzE6Mn1mdW5jdGlvbiBZWih0LGUpe3JldHVybiB0K2UueH1mdW5jdGlvbiBYWih0LGUpe3JldHVybiBNYXRoLm1heCh0LGUueSl9ZnVuY3Rpb24gJFoodCl7dmFyIGU9MCxuPXQuY2hpbGRyZW4saT1uJiZuLmxlbmd0aDtpZihpKWZvcig7LS1pPj0wOyllKz1uW2ldLnZhbHVlO2Vsc2UgZT0xO3QudmFsdWU9ZX1mdW5jdGlvbiBLWih0LGUpe3ZhciBuLGkscixvLGEscz1uZXcgdEoodCksbD0rdC52YWx1ZSYmKHMudmFsdWU9dC52YWx1ZSksYz1bc107Zm9yKG51bGw9PWUmJihlPVpaKTtuPWMucG9wKCk7KWlmKGwmJihuLnZhbHVlPStuLmRhdGEudmFsdWUpLChyPWUobi5kYXRhKSkmJihhPXIubGVuZ3RoKSlmb3Iobi5jaGlsZHJlbj1uZXcgQXJyYXkoYSksbz1hLTE7bz49MDstLW8pYy5wdXNoKGk9bi5jaGlsZHJlbltvXT1uZXcgdEoocltvXSkpLGkucGFyZW50PW4saS5kZXB0aD1uLmRlcHRoKzE7cmV0dXJuIHMuZWFjaEJlZm9yZShRWil9ZnVuY3Rpb24gWloodCl7cmV0dXJuIHQuY2hpbGRyZW59ZnVuY3Rpb24gSloodCl7dC5kYXRhPXQuZGF0YS5kYXRhfWZ1bmN0aW9uIFFaKHQpe3ZhciBlPTA7ZG97dC5oZWlnaHQ9ZX13aGlsZSgodD10LnBhcmVudCkmJnQuaGVpZ2h0PCsrZSl9ZnVuY3Rpb24gdEoodCl7dGhpcy5kYXRhPXQsdGhpcy5kZXB0aD10aGlzLmhlaWdodD0wLHRoaXMucGFyZW50PW51bGx9SVouaW52ZXJ0PVBaKChmdW5jdGlvbih0KXtyZXR1cm4gdH0pKSxSWi5pbnZlcnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm5bdCwyKklZKERZKGUpKS1DWV19LEJaLmludmVydD1CWixGWi5pbnZlcnQ9UFooSVkpLFVaLmludmVydD1mdW5jdGlvbih0LGUpe3ZhciBuLGk9ZSxyPTI1O2Rve3ZhciBvPWkqaSxhPW8qbztpLT1uPShpKigxLjAwNzIyNitvKiguMDE1MDg1K2EqKC4wMjg4NzQqby0uMDQ0NDc1LS4wMDU5MTYqYSkpKS1lKS8oMS4wMDcyMjYrbyooLjA0NTI1NSthKiguMjU5ODY2Km8tLjMxMTMyNS0uMDA1OTE2KjExKmEpKSl9d2hpbGUoTlkobik+RVkmJi0tcj4wKTtyZXR1cm5bdC8oLjg3MDcrKG89aSppKSoobyoobypvKm8qKC4wMDM5NzEtLjAwMTUyOSpvKS0uMDEzNzkxKS0uMTMxOTc5KSksaV19LGpaLmludmVydD1QWihXWSksR1ouaW52ZXJ0PVBaKChmdW5jdGlvbih0KXtyZXR1cm4gMipJWSh0KX0pKSxXWi5pbnZlcnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm5bLWUsMipJWShEWSh0KSktQ1ldfSx0Si5wcm90b3R5cGU9S1oucHJvdG90eXBlPXtjb25zdHJ1Y3Rvcjp0Sixjb3VudDpmdW5jdGlvbiBlSigpe3JldHVybiB0aGlzLmVhY2hBZnRlcigkWil9LGVhY2g6ZnVuY3Rpb24gbkoodCl7dmFyIGUsbixpLHIsbz10aGlzLGE9W29dO2Rve2ZvcihlPWEucmV2ZXJzZSgpLGE9W107bz1lLnBvcCgpOylpZih0KG8pLG49by5jaGlsZHJlbilmb3IoaT0wLHI9bi5sZW5ndGg7aTxyOysraSlhLnB1c2gobltpXSl9d2hpbGUoYS5sZW5ndGgpO3JldHVybiB0aGlzfSxlYWNoQWZ0ZXI6ZnVuY3Rpb24gaUoodCl7Zm9yKHZhciBlLG4saSxyPXRoaXMsbz1bcl0sYT1bXTtyPW8ucG9wKCk7KWlmKGEucHVzaChyKSxlPXIuY2hpbGRyZW4pZm9yKG49MCxpPWUubGVuZ3RoO248aTsrK24pby5wdXNoKGVbbl0pO2Zvcig7cj1hLnBvcCgpOyl0KHIpO3JldHVybiB0aGlzfSxlYWNoQmVmb3JlOmZ1bmN0aW9uIHJKKHQpe2Zvcih2YXIgZSxuLGk9dGhpcyxyPVtpXTtpPXIucG9wKCk7KWlmKHQoaSksZT1pLmNoaWxkcmVuKWZvcihuPWUubGVuZ3RoLTE7bj49MDstLW4pci5wdXNoKGVbbl0pO3JldHVybiB0aGlzfSxzdW06ZnVuY3Rpb24gb0oodCl7cmV0dXJuIHRoaXMuZWFjaEFmdGVyKChmdW5jdGlvbihlKXtmb3IodmFyIG49K3QoZS5kYXRhKXx8MCxpPWUuY2hpbGRyZW4scj1pJiZpLmxlbmd0aDstLXI+PTA7KW4rPWlbcl0udmFsdWU7ZS52YWx1ZT1ufSkpfSxzb3J0OmZ1bmN0aW9uIGFKKHQpe3JldHVybiB0aGlzLmVhY2hCZWZvcmUoKGZ1bmN0aW9uKGUpe2UuY2hpbGRyZW4mJmUuY2hpbGRyZW4uc29ydCh0KX0pKX0scGF0aDpmdW5jdGlvbiBzSih0KXtmb3IodmFyIGU9dGhpcyxuPShmdW5jdGlvbiBpKHQsZSl7aWYodD09PWUpcmV0dXJuIHQ7dmFyIG49dC5hbmNlc3RvcnMoKSxpPWUuYW5jZXN0b3JzKCkscj1udWxsO3Q9bi5wb3AoKSxlPWkucG9wKCk7Zm9yKDt0PT09ZTspcj10LHQ9bi5wb3AoKSxlPWkucG9wKCk7cmV0dXJuIHJ9KShlLHQpLHI9W2VdO2UhPT1uOylyLnB1c2goZT1lLnBhcmVudCk7Zm9yKHZhciBvPXIubGVuZ3RoO3QhPT1uOylyLnNwbGljZShvLDAsdCksdD10LnBhcmVudDtyZXR1cm4gcn0sYW5jZXN0b3JzOmZ1bmN0aW9uIGxKKCl7Zm9yKHZhciB0PXRoaXMsZT1bdF07dD10LnBhcmVudDspZS5wdXNoKHQpO3JldHVybiBlfSxkZXNjZW5kYW50czpmdW5jdGlvbiBjSigpe3ZhciB0PVtdO3JldHVybiB0aGlzLmVhY2goKGZ1bmN0aW9uKGUpe3QucHVzaChlKX0pKSx0fSxsZWF2ZXM6ZnVuY3Rpb24gdUooKXt2YXIgdD1bXTtyZXR1cm4gdGhpcy5lYWNoQmVmb3JlKChmdW5jdGlvbihlKXtlLmNoaWxkcmVufHx0LnB1c2goZSl9KSksdH0sbGlua3M6ZnVuY3Rpb24gaEooKXt2YXIgdD10aGlzLGU9W107cmV0dXJuIHQuZWFjaCgoZnVuY3Rpb24obil7biE9PXQmJmUucHVzaCh7c291cmNlOm4ucGFyZW50LHRhcmdldDpufSl9KSksZX0sY29weTpmdW5jdGlvbiBkSigpe3JldHVybiBLWih0aGlzKS5lYWNoQmVmb3JlKEpaKX19O3ZhciBwSj1BcnJheS5wcm90b3R5cGUuc2xpY2U7ZnVuY3Rpb24gZkoodCl7Zm9yKHZhciBlLG4saT0wLHI9KHQ9KGZ1bmN0aW9uIG8odCl7Zm9yKHZhciBlLG4saT10Lmxlbmd0aDtpOyluPU1hdGgucmFuZG9tKCkqaS0tfDAsZT10W2ldLHRbaV09dFtuXSx0W25dPWU7cmV0dXJuIHR9KShwSi5jYWxsKHQpKSkubGVuZ3RoLGE9W107aTxyOyllPXRbaV0sbiYmX0oobixlKT8rK2k6KG49dkooYT1tSihhLGUpKSxpPTApO3JldHVybiBufWZ1bmN0aW9uIG1KKHQsZSl7dmFyIG4saTtpZih5SihlLHQpKXJldHVybltlXTtmb3Iobj0wO248dC5sZW5ndGg7KytuKWlmKGdKKGUsdFtuXSkmJnlKKGJKKHRbbl0sZSksdCkpcmV0dXJuW3Rbbl0sZV07Zm9yKG49MDtuPHQubGVuZ3RoLTE7KytuKWZvcihpPW4rMTtpPHQubGVuZ3RoOysraSlpZihnSihiSih0W25dLHRbaV0pLGUpJiZnSihiSih0W25dLGUpLHRbaV0pJiZnSihiSih0W2ldLGUpLHRbbl0pJiZ5Sih4Sih0W25dLHRbaV0sZSksdCkpcmV0dXJuW3Rbbl0sdFtpXSxlXTt0aHJvdyBuZXcgRXJyb3J9ZnVuY3Rpb24gZ0oodCxlKXt2YXIgbj10LnItZS5yLGk9ZS54LXQueCxyPWUueS10Lnk7cmV0dXJuIG48MHx8bipuPGkqaStyKnJ9ZnVuY3Rpb24gX0oodCxlKXt2YXIgbj10LnItZS5yKzFlLTYsaT1lLngtdC54LHI9ZS55LXQueTtyZXR1cm4gbj4wJiZuKm4+aSppK3Iqcn1mdW5jdGlvbiB5Sih0LGUpe2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7KytuKWlmKCFfSih0LGVbbl0pKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIHZKKHQpe3N3aXRjaCh0Lmxlbmd0aCl7Y2FzZSAxOnJldHVybihmdW5jdGlvbiBlKHQpe3JldHVybnt4OnQueCx5OnQueSxyOnQucn19KSh0WzBdKTtjYXNlIDI6cmV0dXJuIGJKKHRbMF0sdFsxXSk7Y2FzZSAzOnJldHVybiB4Sih0WzBdLHRbMV0sdFsyXSl9fWZ1bmN0aW9uIGJKKHQsZSl7dmFyIG49dC54LGk9dC55LHI9dC5yLG89ZS54LGE9ZS55LHM9ZS5yLGw9by1uLGM9YS1pLHU9cy1yLGg9TWF0aC5zcXJ0KGwqbCtjKmMpO3JldHVybnt4OihuK28rbC9oKnUpLzIseTooaSthK2MvaCp1KS8yLHI6KGgrcitzKS8yfX1mdW5jdGlvbiB4Sih0LGUsbil7dmFyIGk9dC54LHI9dC55LG89dC5yLGE9ZS54LHM9ZS55LGw9ZS5yLGM9bi54LHU9bi55LGg9bi5yLGQ9aS1hLHA9aS1jLGY9ci1zLG09ci11LGc9bC1vLF89aC1vLHk9aSppK3Iqci1vKm8sdj15LWEqYS1zKnMrbCpsLGI9eS1jKmMtdSp1K2gqaCx4PXAqZi1kKm0sdz0oZipiLW0qdikvKDIqeCktaSxTPShtKmctZipfKS94LE09KHAqdi1kKmIpLygyKngpLXIsRT0oZCpfLXAqZykveCxUPVMqUytFKkUtMSxDPTIqKG8rdypTK00qRSksQT13KncrTSpNLW8qbyxrPS0oVD8oQytNYXRoLnNxcnQoQypDLTQqVCpBKSkvKDIqVCk6QS9DKTtyZXR1cm57eDppK3crUyprLHk6citNK0UqayxyOmt9fWZ1bmN0aW9uIHdKKHQsZSxuKXt2YXIgaT10Lngscj10Lnksbz1lLnIrbi5yLGE9dC5yK24ucixzPWUueC1pLGw9ZS55LXIsYz1zKnMrbCpsO2lmKGMpe3ZhciB1PS41KygoYSo9YSktKG8qPW8pKS8oMipjKSxoPU1hdGguc3FydChNYXRoLm1heCgwLDIqbyooYStjKS0oYS09YykqYS1vKm8pKS8oMipjKTtuLng9aSt1KnMraCpsLG4ueT1yK3UqbC1oKnN9ZWxzZSBuLng9aSthLG4ueT1yfWZ1bmN0aW9uIFNKKHQsZSl7dmFyIG49ZS54LXQueCxpPWUueS10Lnkscj10LnIrZS5yO3JldHVybiByKnItMWUtNj5uKm4raSppfWZ1bmN0aW9uIE1KKHQpe3ZhciBlPXQuXyxuPXQubmV4dC5fLGk9ZS5yK24ucixyPShlLngqbi5yK24ueCplLnIpL2ksbz0oZS55Km4ucituLnkqZS5yKS9pO3JldHVybiByKnIrbypvfWZ1bmN0aW9uIEVKKHQpe3RoaXMuXz10LHRoaXMubmV4dD1udWxsLHRoaXMucHJldmlvdXM9bnVsbH1mdW5jdGlvbiBUSih0KXtpZighKHI9dC5sZW5ndGgpKXJldHVybiAwO3ZhciBlLG4saSxyLG8sYSxzLGwsYyx1LGg7aWYoKGU9dFswXSkueD0wLGUueT0wLCEocj4xKSlyZXR1cm4gZS5yO2lmKGUueD0tKG49dFsxXSkucixuLng9ZS5yLG4ueT0wLCEocj4yKSlyZXR1cm4gZS5yK24ucjt3SihuLGUsaT10WzJdKSxlPW5ldyBFSihlKSxuPW5ldyBFSihuKSxpPW5ldyBFSihpKSxlLm5leHQ9aS5wcmV2aW91cz1uLG4ubmV4dD1lLnByZXZpb3VzPWksaS5uZXh0PW4ucHJldmlvdXM9ZTt0OmZvcihzPTM7czxyOysrcyl7d0ooZS5fLG4uXyxpPXRbc10pLGk9bmV3IEVKKGkpLGw9bi5uZXh0LGM9ZS5wcmV2aW91cyx1PW4uXy5yLGg9ZS5fLnI7ZG97aWYodTw9aCl7aWYoU0oobC5fLGkuXykpe2UubmV4dD1uPWwsbi5wcmV2aW91cz1lLC0tcztjb250aW51ZSB0fXUrPWwuXy5yLGw9bC5uZXh0fWVsc2V7aWYoU0ooYy5fLGkuXykpeyhlPWMpLm5leHQ9bixuLnByZXZpb3VzPWUsLS1zO2NvbnRpbnVlIHR9aCs9Yy5fLnIsYz1jLnByZXZpb3VzfX13aGlsZShsIT09Yy5uZXh0KTtmb3IoaS5wcmV2aW91cz1lLGkubmV4dD1uLGUubmV4dD1uLnByZXZpb3VzPW49aSxvPU1KKGUpOyhpPWkubmV4dCkhPT1uOykoYT1NSihpKSk8byYmKGU9aSxvPWEpO249ZS5uZXh0fWZvcihlPVtuLl9dLGk9bjsoaT1pLm5leHQpIT09bjspZS5wdXNoKGkuXyk7Zm9yKGk9ZkooZSkscz0wO3M8cjsrK3MpKGU9dFtzXSkueC09aS54LGUueS09aS55O3JldHVybiBpLnJ9ZnVuY3Rpb24gQ0oodCl7cmV0dXJuIG51bGw9PXQ/bnVsbDpBSih0KX1mdW5jdGlvbiBBSih0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIHR9ZnVuY3Rpb24ga0ooKXtyZXR1cm4gMH1mdW5jdGlvbiBMSih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gUEoodCl7cmV0dXJuIE1hdGguc3FydCh0LnZhbHVlKX1mdW5jdGlvbiBOSih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7ZS5jaGlsZHJlbnx8KGUucj1NYXRoLm1heCgwLCt0KGUpfHwwKSl9fWZ1bmN0aW9uIElKKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe2lmKGk9bi5jaGlsZHJlbil7dmFyIGkscixvLGE9aS5sZW5ndGgscz10KG4pKmV8fDA7aWYocylmb3Iocj0wO3I8YTsrK3IpaVtyXS5yKz1zO2lmKG89VEooaSkscylmb3Iocj0wO3I8YTsrK3IpaVtyXS5yLT1zO24ucj1vK3N9fX1mdW5jdGlvbiBSSih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIG49ZS5wYXJlbnQ7ZS5yKj10LG4mJihlLng9bi54K3QqZS54LGUueT1uLnkrdCplLnkpfX1mdW5jdGlvbiBPSih0KXt0LngwPU1hdGgucm91bmQodC54MCksdC55MD1NYXRoLnJvdW5kKHQueTApLHQueDE9TWF0aC5yb3VuZCh0LngxKSx0LnkxPU1hdGgucm91bmQodC55MSl9ZnVuY3Rpb24gekoodCxlLG4saSxyKXtmb3IodmFyIG8sYT10LmNoaWxkcmVuLHM9LTEsbD1hLmxlbmd0aCxjPXQudmFsdWUmJihpLWUpL3QudmFsdWU7KytzPGw7KShvPWFbc10pLnkwPW4sby55MT1yLG8ueDA9ZSxvLngxPWUrPW8udmFsdWUqY312YXIgREo9e2RlcHRoOi0xfSxCSj17fTtmdW5jdGlvbiBISih0KXtyZXR1cm4gdC5pZH1mdW5jdGlvbiBGSih0KXtyZXR1cm4gdC5wYXJlbnRJZH1mdW5jdGlvbiBWSih0LGUpe3JldHVybiB0LnBhcmVudD09PWUucGFyZW50PzE6Mn1mdW5jdGlvbiBVSih0KXt2YXIgZT10LmNoaWxkcmVuO3JldHVybiBlP2VbMF06dC50fWZ1bmN0aW9uIGpKKHQpe3ZhciBlPXQuY2hpbGRyZW47cmV0dXJuIGU/ZVtlLmxlbmd0aC0xXTp0LnR9ZnVuY3Rpb24gR0oodCxlLG4pe3ZhciBpPW4vKGUuaS10LmkpO2UuYy09aSxlLnMrPW4sdC5jKz1pLGUueis9bixlLm0rPW59ZnVuY3Rpb24gV0oodCxlLG4pe3JldHVybiB0LmEucGFyZW50PT09ZS5wYXJlbnQ/dC5hOm59ZnVuY3Rpb24gcUoodCxlKXt0aGlzLl89dCx0aGlzLnBhcmVudD1udWxsLHRoaXMuY2hpbGRyZW49bnVsbCx0aGlzLkE9bnVsbCx0aGlzLmE9dGhpcyx0aGlzLno9MCx0aGlzLm09MCx0aGlzLmM9MCx0aGlzLnM9MCx0aGlzLnQ9bnVsbCx0aGlzLmk9ZX1mdW5jdGlvbiBZSih0LGUsbixpLHIpe2Zvcih2YXIgbyxhPXQuY2hpbGRyZW4scz0tMSxsPWEubGVuZ3RoLGM9dC52YWx1ZSYmKHItbikvdC52YWx1ZTsrK3M8bDspKG89YVtzXSkueDA9ZSxvLngxPWksby55MD1uLG8ueTE9bis9by52YWx1ZSpjfXFKLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHRKLnByb3RvdHlwZSk7dmFyIFhKPSgxK01hdGguc3FydCg1KSkvMjtmdW5jdGlvbiAkSih0LGUsbixpLHIsbyl7Zm9yKHZhciBhLHMsbCxjLHUsaCxkLHAsZixtLGcsXz1bXSx5PWUuY2hpbGRyZW4sdj0wLGI9MCx4PXkubGVuZ3RoLHc9ZS52YWx1ZTt2PHg7KXtsPXItbixjPW8taTtkb3t1PXlbYisrXS52YWx1ZX13aGlsZSghdSYmYjx4KTtmb3IoaD1kPXUsZz11KnUqKG09TWF0aC5tYXgoYy9sLGwvYykvKHcqdCkpLGY9TWF0aC5tYXgoZC9nLGcvaCk7Yjx4OysrYil7aWYodSs9cz15W2JdLnZhbHVlLHM8aCYmKGg9cykscz5kJiYoZD1zKSxnPXUqdSptLChwPU1hdGgubWF4KGQvZyxnL2gpKT5mKXt1LT1zO2JyZWFrfWY9cH1fLnB1c2goYT17dmFsdWU6dSxkaWNlOmw8YyxjaGlsZHJlbjp5LnNsaWNlKHYsYil9KSxhLmRpY2U/ekooYSxuLGkscix3P2krPWMqdS93Om8pOllKKGEsbixpLHc/bis9bCp1L3c6cixvKSx3LT11LHY9Yn1yZXR1cm4gX312YXIgS0o9KGZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gbih0LG4saSxyLG8peyRKKGUsdCxuLGkscixvKX1yZXR1cm4gbi5yYXRpbz1mdW5jdGlvbihlKXtyZXR1cm4gdCgoZT0rZSk+MT9lOjEpfSxufSkoWEopO3ZhciBaSj0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQsbixpLHIsbyl7aWYoKGE9dC5fc3F1YXJpZnkpJiZhLnJhdGlvPT09ZSlmb3IodmFyIGEscyxsLGMsdSxoPS0xLGQ9YS5sZW5ndGgscD10LnZhbHVlOysraDxkOyl7Zm9yKGw9KHM9YVtoXSkuY2hpbGRyZW4sYz1zLnZhbHVlPTAsdT1sLmxlbmd0aDtjPHU7KytjKXMudmFsdWUrPWxbY10udmFsdWU7cy5kaWNlP3pKKHMsbixpLHIsaSs9KG8taSkqcy52YWx1ZS9wKTpZSihzLG4saSxuKz0oci1uKSpzLnZhbHVlL3AsbykscC09cy52YWx1ZX1lbHNlIHQuX3NxdWFyaWZ5PWE9JEooZSx0LG4saSxyLG8pLGEucmF0aW89ZX1yZXR1cm4gbi5yYXRpbz1mdW5jdGlvbihlKXtyZXR1cm4gdCgoZT0rZSk+MT9lOjEpfSxufSkoWEopO2Z1bmN0aW9uIEpKKHQsZSxuKXt0LnByb3RvdHlwZT1lLnByb3RvdHlwZT1uLG4uY29uc3RydWN0b3I9dH1mdW5jdGlvbiBRSih0LGUpe3ZhciBuPU9iamVjdC5jcmVhdGUodC5wcm90b3R5cGUpO2Zvcih2YXIgaSBpbiBlKW5baV09ZVtpXTtyZXR1cm4gbn1mdW5jdGlvbiB0USgpe312YXIgZVE9LjcsblE9MS9lUSxpUT0iXFxzKihbKy1dP1xcZCspXFxzKiIsclE9IlxccyooWystXT9cXGQqXFwuP1xcZCsoPzpbZUVdWystXT9cXGQrKT8pXFxzKiIsb1E9IlxccyooWystXT9cXGQqXFwuP1xcZCsoPzpbZUVdWystXT9cXGQrKT8pJVxccyoiLGFRPS9eIyhbMC05YS1mXXszLDh9KSQvLHNRPW5ldyBSZWdFeHAoIl5yZ2JcXCgiK1tpUSxpUSxpUV0rIlxcKSQiKSxsUT1uZXcgUmVnRXhwKCJecmdiXFwoIitbb1Esb1Esb1FdKyJcXCkkIiksY1E9bmV3IFJlZ0V4cCgiXnJnYmFcXCgiK1tpUSxpUSxpUSxyUV0rIlxcKSQiKSx1UT1uZXcgUmVnRXhwKCJecmdiYVxcKCIrW29RLG9RLG9RLHJRXSsiXFwpJCIpLGhRPW5ldyBSZWdFeHAoIl5oc2xcXCgiK1tyUSxvUSxvUV0rIlxcKSQiKSxkUT1uZXcgUmVnRXhwKCJeaHNsYVxcKCIrW3JRLG9RLG9RLHJRXSsiXFwpJCIpLHBRPXthbGljZWJsdWU6MTU3OTIzODMsYW50aXF1ZXdoaXRlOjE2NDQ0Mzc1LGFxdWE6NjU1MzUsYXF1YW1hcmluZTo4Mzg4NTY0LGF6dXJlOjE1Nzk0MTc1LGJlaWdlOjE2MTE5MjYwLGJpc3F1ZToxNjc3MDI0NCxibGFjazowLGJsYW5jaGVkYWxtb25kOjE2NzcyMDQ1LGJsdWU6MjU1LGJsdWV2aW9sZXQ6OTA1NTIwMixicm93bjoxMDgyNDIzNCxidXJseXdvb2Q6MTQ1OTYyMzEsY2FkZXRibHVlOjYyNjY1MjgsY2hhcnRyZXVzZTo4Mzg4MzUyLGNob2NvbGF0ZToxMzc4OTQ3MCxjb3JhbDoxNjc0NDI3Mixjb3JuZmxvd2VyYmx1ZTo2NTkxOTgxLGNvcm5zaWxrOjE2Nzc1Mzg4LGNyaW1zb246MTQ0MjMxMDAsY3lhbjo2NTUzNSxkYXJrYmx1ZToxMzksZGFya2N5YW46MzU3MjMsZGFya2dvbGRlbnJvZDoxMjA5MjkzOSxkYXJrZ3JheToxMTExOTAxNyxkYXJrZ3JlZW46MjU2MDAsZGFya2dyZXk6MTExMTkwMTcsZGFya2toYWtpOjEyNDMzMjU5LGRhcmttYWdlbnRhOjkxMDk2NDMsZGFya29saXZlZ3JlZW46NTU5Nzk5OSxkYXJrb3JhbmdlOjE2NzQ3NTIwLGRhcmtvcmNoaWQ6MTAwNDAwMTIsZGFya3JlZDo5MTA5NTA0LGRhcmtzYWxtb246MTUzMDg0MTAsZGFya3NlYWdyZWVuOjk0MTk5MTksZGFya3NsYXRlYmx1ZTo0NzM0MzQ3LGRhcmtzbGF0ZWdyYXk6MzEwMDQ5NSxkYXJrc2xhdGVncmV5OjMxMDA0OTUsZGFya3R1cnF1b2lzZTo1Mjk0NSxkYXJrdmlvbGV0Ojk2OTk1MzksZGVlcHBpbms6MTY3MTY5NDcsZGVlcHNreWJsdWU6NDkxNTEsZGltZ3JheTo2OTA4MjY1LGRpbWdyZXk6NjkwODI2NSxkb2RnZXJibHVlOjIwMDMxOTksZmlyZWJyaWNrOjExNjc0MTQ2LGZsb3JhbHdoaXRlOjE2Nzc1OTIwLGZvcmVzdGdyZWVuOjIyNjM4NDIsZnVjaHNpYToxNjcxMTkzNSxnYWluc2Jvcm86MTQ0NzQ0NjAsZ2hvc3R3aGl0ZToxNjMxNjY3MSxnb2xkOjE2NzY2NzIwLGdvbGRlbnJvZDoxNDMyOTEyMCxncmF5Ojg0MjE1MDQsZ3JlZW46MzI3NjgsZ3JlZW55ZWxsb3c6MTE0MDMwNTUsZ3JleTo4NDIxNTA0LGhvbmV5ZGV3OjE1Nzk0MTYwLGhvdHBpbms6MTY3Mzg3NDAsaW5kaWFucmVkOjEzNDU4NTI0LGluZGlnbzo0OTE1MzMwLGl2b3J5OjE2Nzc3MjAwLGtoYWtpOjE1Nzg3NjYwLGxhdmVuZGVyOjE1MTMyNDEwLGxhdmVuZGVyYmx1c2g6MTY3NzMzNjUsbGF3bmdyZWVuOjgxOTA5NzYsbGVtb25jaGlmZm9uOjE2Nzc1ODg1LGxpZ2h0Ymx1ZToxMTM5MzI1NCxsaWdodGNvcmFsOjE1NzYxNTM2LGxpZ2h0Y3lhbjoxNDc0NTU5OSxsaWdodGdvbGRlbnJvZHllbGxvdzoxNjQ0ODIxMCxsaWdodGdyYXk6MTM4ODIzMjMsbGlnaHRncmVlbjo5NDk4MjU2LGxpZ2h0Z3JleToxMzg4MjMyMyxsaWdodHBpbms6MTY3NTg0NjUsbGlnaHRzYWxtb246MTY3NTI3NjIsbGlnaHRzZWFncmVlbjoyMTQyODkwLGxpZ2h0c2t5Ymx1ZTo4OTAwMzQ2LGxpZ2h0c2xhdGVncmF5Ojc4MzM3NTMsbGlnaHRzbGF0ZWdyZXk6NzgzMzc1MyxsaWdodHN0ZWVsYmx1ZToxMTU4NDczNCxsaWdodHllbGxvdzoxNjc3NzE4NCxsaW1lOjY1MjgwLGxpbWVncmVlbjozMzI5MzMwLGxpbmVuOjE2NDQ1NjcwLG1hZ2VudGE6MTY3MTE5MzUsbWFyb29uOjgzODg2MDgsbWVkaXVtYXF1YW1hcmluZTo2NzM3MzIyLG1lZGl1bWJsdWU6MjA1LG1lZGl1bW9yY2hpZDoxMjIxMTY2NyxtZWRpdW1wdXJwbGU6OTY2MjY4MyxtZWRpdW1zZWFncmVlbjozOTc4MDk3LG1lZGl1bXNsYXRlYmx1ZTo4MDg3NzkwLG1lZGl1bXNwcmluZ2dyZWVuOjY0MTU0LG1lZGl1bXR1cnF1b2lzZTo0NzcyMzAwLG1lZGl1bXZpb2xldHJlZDoxMzA0NzE3MyxtaWRuaWdodGJsdWU6MTY0NDkxMixtaW50Y3JlYW06MTYxMjE4NTAsbWlzdHlyb3NlOjE2NzcwMjczLG1vY2Nhc2luOjE2NzcwMjI5LG5hdmFqb3doaXRlOjE2NzY4Njg1LG5hdnk6MTI4LG9sZGxhY2U6MTY2NDM1NTgsb2xpdmU6ODQyMTM3NixvbGl2ZWRyYWI6NzA0ODczOSxvcmFuZ2U6MTY3NTM5MjAsb3JhbmdlcmVkOjE2NzI5MzQ0LG9yY2hpZDoxNDMxNTczNCxwYWxlZ29sZGVucm9kOjE1NjU3MTMwLHBhbGVncmVlbjoxMDAyNTg4MCxwYWxldHVycXVvaXNlOjExNTI5OTY2LHBhbGV2aW9sZXRyZWQ6MTQzODEyMDMscGFwYXlhd2hpcDoxNjc3MzA3NyxwZWFjaHB1ZmY6MTY3Njc2NzMscGVydToxMzQ2ODk5MSxwaW5rOjE2NzYxMDM1LHBsdW06MTQ1MjQ2MzcscG93ZGVyYmx1ZToxMTU5MTkxMCxwdXJwbGU6ODM4ODczNixyZWJlY2NhcHVycGxlOjY2OTc4ODEscmVkOjE2NzExNjgwLHJvc3licm93bjoxMjM1NzUxOSxyb3lhbGJsdWU6NDI4Njk0NSxzYWRkbGVicm93bjo5MTI3MTg3LHNhbG1vbjoxNjQxNjg4MixzYW5keWJyb3duOjE2MDMyODY0LHNlYWdyZWVuOjMwNTAzMjcsc2Vhc2hlbGw6MTY3NzQ2Mzgsc2llbm5hOjEwNTA2Nzk3LHNpbHZlcjoxMjYzMjI1Nixza3libHVlOjg5MDAzMzEsc2xhdGVibHVlOjY5NzAwNjEsc2xhdGVncmF5OjczNzI5NDQsc2xhdGVncmV5OjczNzI5NDQsc25vdzoxNjc3NTkzMCxzcHJpbmdncmVlbjo2NTQwNyxzdGVlbGJsdWU6NDYyMDk4MCx0YW46MTM4MDg3ODAsdGVhbDozMjg5Nix0aGlzdGxlOjE0MjA0ODg4LHRvbWF0bzoxNjczNzA5NSx0dXJxdW9pc2U6NDI1MTg1Nix2aW9sZXQ6MTU2MzEwODYsd2hlYXQ6MTYxMTMzMzEsd2hpdGU6MTY3NzcyMTUsd2hpdGVzbW9rZToxNjExOTI4NSx5ZWxsb3c6MTY3NzY5NjAseWVsbG93Z3JlZW46MTAxNDUwNzR9O2Z1bmN0aW9uIGZRKCl7cmV0dXJuIHRoaXMucmdiKCkuZm9ybWF0SGV4KCl9ZnVuY3Rpb24gbVEoKXtyZXR1cm4gdGhpcy5yZ2IoKS5mb3JtYXRSZ2IoKX1mdW5jdGlvbiBnUSh0KXt2YXIgZSxuO3JldHVybiB0PSh0KyIiKS50cmltKCkudG9Mb3dlckNhc2UoKSwoZT1hUS5leGVjKHQpKT8obj1lWzFdLmxlbmd0aCxlPXBhcnNlSW50KGVbMV0sMTYpLDY9PT1uP19RKGUpOjM9PT1uP25ldyB4UShlPj44JjE1fGU+PjQmMjQwLGU+PjQmMTV8MjQwJmUsKDE1JmUpPDw0fDE1JmUsMSk6OD09PW4/eVEoZT4+MjQmMjU1LGU+PjE2JjI1NSxlPj44JjI1NSwoMjU1JmUpLzI1NSk6ND09PW4/eVEoZT4+MTImMTV8ZT4+OCYyNDAsZT4+OCYxNXxlPj40JjI0MCxlPj40JjE1fDI0MCZlLCgoMTUmZSk8PDR8MTUmZSkvMjU1KTpudWxsKTooZT1zUS5leGVjKHQpKT9uZXcgeFEoZVsxXSxlWzJdLGVbM10sMSk6KGU9bFEuZXhlYyh0KSk/bmV3IHhRKDI1NSplWzFdLzEwMCwyNTUqZVsyXS8xMDAsMjU1KmVbM10vMTAwLDEpOihlPWNRLmV4ZWModCkpP3lRKGVbMV0sZVsyXSxlWzNdLGVbNF0pOihlPXVRLmV4ZWModCkpP3lRKDI1NSplWzFdLzEwMCwyNTUqZVsyXS8xMDAsMjU1KmVbM10vMTAwLGVbNF0pOihlPWhRLmV4ZWModCkpP0VRKGVbMV0sZVsyXS8xMDAsZVszXS8xMDAsMSk6KGU9ZFEuZXhlYyh0KSk/RVEoZVsxXSxlWzJdLzEwMCxlWzNdLzEwMCxlWzRdKTpwUS5oYXNPd25Qcm9wZXJ0eSh0KT9fUShwUVt0XSk6InRyYW5zcGFyZW50Ij09PXQ/bmV3IHhRKE5hTixOYU4sTmFOLDApOm51bGx9ZnVuY3Rpb24gX1EodCl7cmV0dXJuIG5ldyB4USh0Pj4xNiYyNTUsdD4+OCYyNTUsMjU1JnQsMSl9ZnVuY3Rpb24geVEodCxlLG4saSl7cmV0dXJuIGk8PTAmJih0PWU9bj1OYU4pLG5ldyB4USh0LGUsbixpKX1mdW5jdGlvbiB2USh0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIHRRfHwodD1nUSh0KSksdD9uZXcgeFEoKHQ9dC5yZ2IoKSkucix0LmcsdC5iLHQub3BhY2l0eSk6bmV3IHhRfWZ1bmN0aW9uIGJRKHQsZSxuLGkpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD92USh0KTpuZXcgeFEodCxlLG4sbnVsbD09aT8xOmkpfWZ1bmN0aW9uIHhRKHQsZSxuLGkpe3RoaXMucj0rdCx0aGlzLmc9K2UsdGhpcy5iPStuLHRoaXMub3BhY2l0eT0raX1mdW5jdGlvbiB3USgpe3JldHVybiIjIitNUSh0aGlzLnIpK01RKHRoaXMuZykrTVEodGhpcy5iKX1mdW5jdGlvbiBTUSgpe3ZhciB0PXRoaXMub3BhY2l0eTtyZXR1cm4oMT09PSh0PWlzTmFOKHQpPzE6TWF0aC5tYXgoMCxNYXRoLm1pbigxLHQpKSk/InJnYigiOiJyZ2JhKCIpK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodGhpcy5yKXx8MCkpKyIsICIrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0aGlzLmcpfHwwKSkrIiwgIitNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKHRoaXMuYil8fDApKSsoMT09PXQ/IikiOiIsICIrdCsiKSIpfWZ1bmN0aW9uIE1RKHQpe3JldHVybigodD1NYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKHQpfHwwKSkpPDE2PyIwIjoiIikrdC50b1N0cmluZygxNil9ZnVuY3Rpb24gRVEodCxlLG4saSl7cmV0dXJuIGk8PTA/dD1lPW49TmFOOm48PTB8fG4+PTE/dD1lPU5hTjplPD0wJiYodD1OYU4pLG5ldyBBUSh0LGUsbixpKX1mdW5jdGlvbiBUUSh0KXtpZih0IGluc3RhbmNlb2YgQVEpcmV0dXJuIG5ldyBBUSh0LmgsdC5zLHQubCx0Lm9wYWNpdHkpO2lmKHQgaW5zdGFuY2VvZiB0UXx8KHQ9Z1EodCkpLCF0KXJldHVybiBuZXcgQVE7aWYodCBpbnN0YW5jZW9mIEFRKXJldHVybiB0O3ZhciBlPSh0PXQucmdiKCkpLnIvMjU1LG49dC5nLzI1NSxpPXQuYi8yNTUscj1NYXRoLm1pbihlLG4saSksbz1NYXRoLm1heChlLG4saSksYT1OYU4scz1vLXIsbD0obytyKS8yO3JldHVybiBzPyhhPWU9PT1vPyhuLWkpL3MrNioobjxpKTpuPT09bz8oaS1lKS9zKzI6KGUtbikvcys0LHMvPWw8LjU/bytyOjItby1yLGEqPTYwKTpzPWw+MCYmbDwxPzA6YSxuZXcgQVEoYSxzLGwsdC5vcGFjaXR5KX1mdW5jdGlvbiBDUSh0LGUsbixpKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/VFEodCk6bmV3IEFRKHQsZSxuLG51bGw9PWk/MTppKX1mdW5jdGlvbiBBUSh0LGUsbixpKXt0aGlzLmg9K3QsdGhpcy5zPStlLHRoaXMubD0rbix0aGlzLm9wYWNpdHk9K2l9ZnVuY3Rpb24ga1EodCxlLG4pe3JldHVybiAyNTUqKHQ8NjA/ZSsobi1lKSp0LzYwOnQ8MTgwP246dDwyNDA/ZSsobi1lKSooMjQwLXQpLzYwOmUpfUpKKHRRLGdRLHtjb3B5OmZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuYXNzaWduKG5ldyB0aGlzLmNvbnN0cnVjdG9yLHRoaXMsdCl9LGRpc3BsYXlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmdiKCkuZGlzcGxheWFibGUoKX0saGV4OmZRLGZvcm1hdEhleDpmUSxmb3JtYXRIc2w6ZnVuY3Rpb24gTFEoKXtyZXR1cm4gVFEodGhpcykuZm9ybWF0SHNsKCl9LGZvcm1hdFJnYjptUSx0b1N0cmluZzptUX0pLEpKKHhRLGJRLFFKKHRRLHticmlnaHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10P25ROk1hdGgucG93KG5RLHQpLG5ldyB4USh0aGlzLnIqdCx0aGlzLmcqdCx0aGlzLmIqdCx0aGlzLm9wYWNpdHkpfSxkYXJrZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD9lUTpNYXRoLnBvdyhlUSx0KSxuZXcgeFEodGhpcy5yKnQsdGhpcy5nKnQsdGhpcy5iKnQsdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LGRpc3BsYXlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuLS41PD10aGlzLnImJnRoaXMucjwyNTUuNSYmLS41PD10aGlzLmcmJnRoaXMuZzwyNTUuNSYmLS41PD10aGlzLmImJnRoaXMuYjwyNTUuNSYmMDw9dGhpcy5vcGFjaXR5JiZ0aGlzLm9wYWNpdHk8PTF9LGhleDp3USxmb3JtYXRIZXg6d1EsZm9ybWF0UmdiOlNRLHRvU3RyaW5nOlNRfSkpLEpKKEFRLENRLFFKKHRRLHticmlnaHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10P25ROk1hdGgucG93KG5RLHQpLG5ldyBBUSh0aGlzLmgsdGhpcy5zLHRoaXMubCp0LHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10P2VROk1hdGgucG93KGVRLHQpLG5ldyBBUSh0aGlzLmgsdGhpcy5zLHRoaXMubCp0LHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3ZhciB0PXRoaXMuaCUzNjArMzYwKih0aGlzLmg8MCksZT1pc05hTih0KXx8aXNOYU4odGhpcy5zKT8wOnRoaXMucyxuPXRoaXMubCxpPW4rKG48LjU/bjoxLW4pKmUscj0yKm4taTtyZXR1cm4gbmV3IHhRKGtRKHQ+PTI0MD90LTI0MDp0KzEyMCxyLGkpLGtRKHQscixpKSxrUSh0PDEyMD90KzI0MDp0LTEyMCxyLGkpLHRoaXMub3BhY2l0eSl9LGRpc3BsYXlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuKDA8PXRoaXMucyYmdGhpcy5zPD0xfHxpc05hTih0aGlzLnMpKSYmMDw9dGhpcy5sJiZ0aGlzLmw8PTEmJjA8PXRoaXMub3BhY2l0eSYmdGhpcy5vcGFjaXR5PD0xfSxmb3JtYXRIc2w6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm9wYWNpdHk7cmV0dXJuKDE9PT0odD1pc05hTih0KT8xOk1hdGgubWF4KDAsTWF0aC5taW4oMSx0KSkpPyJoc2woIjoiaHNsYSgiKSsodGhpcy5ofHwwKSsiLCAiKzEwMCoodGhpcy5zfHwwKSsiJSwgIisxMDAqKHRoaXMubHx8MCkrIiUiKygxPT09dD8iKSI6IiwgIit0KyIpIil9fSkpO3ZhciBQUT1NYXRoLlBJLzE4MCxOUT0xODAvTWF0aC5QSSxJUT0uOTY0MjIsUlE9LjgyNTIxLE9RPTQvMjkselE9Ni8yOSxEUT0zKnpRKnpRO2Z1bmN0aW9uIEJRKHQpe2lmKHQgaW5zdGFuY2VvZiBGUSlyZXR1cm4gbmV3IEZRKHQubCx0LmEsdC5iLHQub3BhY2l0eSk7aWYodCBpbnN0YW5jZW9mIFlRKXJldHVybiBYUSh0KTt0IGluc3RhbmNlb2YgeFF8fCh0PXZRKHQpKTt2YXIgZSxuLGk9R1EodC5yKSxyPUdRKHQuZyksbz1HUSh0LmIpLGE9VlEoKC4yMjI1MDQ1KmkrLjcxNjg3ODYqcisuMDYwNjE2OSpvKS8xKTtyZXR1cm4gaT09PXImJnI9PT1vP2U9bj1hOihlPVZRKCguNDM2MDc0NyppKy4zODUwNjQ5KnIrLjE0MzA4MDQqbykvSVEpLG49VlEoKC4wMTM5MzIyKmkrLjA5NzEwNDUqcisuNzE0MTczMypvKS9SUSkpLG5ldyBGUSgxMTYqYS0xNiw1MDAqKGUtYSksMjAwKihhLW4pLHQub3BhY2l0eSl9ZnVuY3Rpb24gSFEodCxlLG4saSl7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP0JRKHQpOm5ldyBGUSh0LGUsbixudWxsPT1pPzE6aSl9ZnVuY3Rpb24gRlEodCxlLG4saSl7dGhpcy5sPSt0LHRoaXMuYT0rZSx0aGlzLmI9K24sdGhpcy5vcGFjaXR5PStpfWZ1bmN0aW9uIFZRKHQpe3JldHVybiB0Pi4wMDg4NTY0NTE2NzkwMzU2MzE/TWF0aC5wb3codCwxLzMpOnQvRFErT1F9ZnVuY3Rpb24gVVEodCl7cmV0dXJuIHQ+elE/dCp0KnQ6RFEqKHQtT1EpfWZ1bmN0aW9uIGpRKHQpe3JldHVybiAyNTUqKHQ8PS4wMDMxMzA4PzEyLjkyKnQ6MS4wNTUqTWF0aC5wb3codCwxLzIuNCktLjA1NSl9ZnVuY3Rpb24gR1EodCl7cmV0dXJuKHQvPTI1NSk8PS4wNDA0NT90LzEyLjkyOk1hdGgucG93KCh0Ky4wNTUpLzEuMDU1LDIuNCl9ZnVuY3Rpb24gV1EodCl7aWYodCBpbnN0YW5jZW9mIFlRKXJldHVybiBuZXcgWVEodC5oLHQuYyx0LmwsdC5vcGFjaXR5KTtpZih0IGluc3RhbmNlb2YgRlF8fCh0PUJRKHQpKSwwPT09dC5hJiYwPT09dC5iKXJldHVybiBuZXcgWVEoTmFOLDA8dC5sJiZ0Lmw8MTAwPzA6TmFOLHQubCx0Lm9wYWNpdHkpO3ZhciBlPU1hdGguYXRhbjIodC5iLHQuYSkqTlE7cmV0dXJuIG5ldyBZUShlPDA/ZSszNjA6ZSxNYXRoLnNxcnQodC5hKnQuYSt0LmIqdC5iKSx0LmwsdC5vcGFjaXR5KX1mdW5jdGlvbiBxUSh0LGUsbixpKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/V1EodCk6bmV3IFlRKHQsZSxuLG51bGw9PWk/MTppKX1mdW5jdGlvbiBZUSh0LGUsbixpKXt0aGlzLmg9K3QsdGhpcy5jPStlLHRoaXMubD0rbix0aGlzLm9wYWNpdHk9K2l9ZnVuY3Rpb24gWFEodCl7aWYoaXNOYU4odC5oKSlyZXR1cm4gbmV3IEZRKHQubCwwLDAsdC5vcGFjaXR5KTt2YXIgZT10LmgqUFE7cmV0dXJuIG5ldyBGUSh0LmwsTWF0aC5jb3MoZSkqdC5jLE1hdGguc2luKGUpKnQuYyx0Lm9wYWNpdHkpfUpKKEZRLEhRLFFKKHRRLHticmlnaHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IEZRKHRoaXMubCsxOCoobnVsbD09dD8xOnQpLHRoaXMuYSx0aGlzLmIsdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgRlEodGhpcy5sLTE4KihudWxsPT10PzE6dCksdGhpcy5hLHRoaXMuYix0aGlzLm9wYWNpdHkpfSxyZ2I6ZnVuY3Rpb24oKXt2YXIgdD0odGhpcy5sKzE2KS8xMTYsZT1pc05hTih0aGlzLmEpP3Q6dCt0aGlzLmEvNTAwLG49aXNOYU4odGhpcy5iKT90OnQtdGhpcy5iLzIwMDtyZXR1cm4gbmV3IHhRKGpRKDMuMTMzODU2MSooZT1JUSpVUShlKSktMS42MTY4NjY3Kih0PTEqVVEodCkpLS40OTA2MTQ2KihuPVJRKlVRKG4pKSksalEoLS45Nzg3Njg0KmUrMS45MTYxNDE1KnQrLjAzMzQ1NCpuKSxqUSguMDcxOTQ1MyplLS4yMjg5OTE0KnQrMS40MDUyNDI3Km4pLHRoaXMub3BhY2l0eSl9fSkpLEpKKFlRLHFRLFFKKHRRLHticmlnaHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IFlRKHRoaXMuaCx0aGlzLmMsdGhpcy5sKzE4KihudWxsPT10PzE6dCksdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgWVEodGhpcy5oLHRoaXMuYyx0aGlzLmwtMTgqKG51bGw9PXQ/MTp0KSx0aGlzLm9wYWNpdHkpfSxyZ2I6ZnVuY3Rpb24oKXtyZXR1cm4gWFEodGhpcykucmdiKCl9fSkpO3ZhciAkUT0tLjE0ODYxLEtRPTEuNzgyNzcsWlE9LS4yOTIyNyxKUT0tLjkwNjQ5LFFRPTEuOTcyOTQsdDE9UVEqSlEsZTE9UVEqS1EsbjE9S1EqWlEtSlEqJFE7ZnVuY3Rpb24gaTEodCl7aWYodCBpbnN0YW5jZW9mIG8xKXJldHVybiBuZXcgbzEodC5oLHQucyx0LmwsdC5vcGFjaXR5KTt0IGluc3RhbmNlb2YgeFF8fCh0PXZRKHQpKTt2YXIgZT10LmcvMjU1LG49dC5iLzI1NSxpPShuMSpuK3QxKih0LnIvMjU1KS1lMSplKS8tNS45NjE1MTIyOTEyLHI9bi1pLG89KFFRKihlLWkpLVpRKnIpL0pRLGE9TWF0aC5zcXJ0KG8qbytyKnIpLyhRUSppKigxLWkpKSxzPWE/TWF0aC5hdGFuMihvLHIpKk5RLTEyMDpOYU47cmV0dXJuIG5ldyBvMShzPDA/cyszNjA6cyxhLGksdC5vcGFjaXR5KX1mdW5jdGlvbiByMSh0LGUsbixpKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/aTEodCk6bmV3IG8xKHQsZSxuLG51bGw9PWk/MTppKX1mdW5jdGlvbiBvMSh0LGUsbixpKXt0aGlzLmg9K3QsdGhpcy5zPStlLHRoaXMubD0rbix0aGlzLm9wYWNpdHk9K2l9ZnVuY3Rpb24gYTEodCxlLG4saSxyKXt2YXIgbz10KnQsYT1vKnQ7cmV0dXJuKCgxLTMqdCszKm8tYSkqZSsoNC02Km8rMyphKSpuKygxKzMqdCszKm8tMyphKSppK2EqcikvNn1mdW5jdGlvbiBzMSh0KXt2YXIgZT10Lmxlbmd0aC0xO3JldHVybiBmdW5jdGlvbihuKXt2YXIgaT1uPD0wP249MDpuPj0xPyhuPTEsZS0xKTpNYXRoLmZsb29yKG4qZSkscj10W2ldLG89dFtpKzFdO3JldHVybiBhMSgobi1pL2UpKmUsaT4wP3RbaS0xXToyKnItbyxyLG8saTxlLTE/dFtpKzJdOjIqby1yKX19ZnVuY3Rpb24gbDEodCl7dmFyIGU9dC5sZW5ndGg7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciBpPU1hdGguZmxvb3IoKChuJT0xKTwwPysrbjpuKSplKTtyZXR1cm4gYTEoKG4taS9lKSplLHRbKGkrZS0xKSVlXSx0W2klZV0sdFsoaSsxKSVlXSx0WyhpKzIpJWVdKX19ZnVuY3Rpb24gYzEodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fWZ1bmN0aW9uIHUxKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiB0K24qZX19ZnVuY3Rpb24gaDEodCxlKXt2YXIgbj1lLXQ7cmV0dXJuIG4/dTEodCxuPjE4MHx8bjwtMTgwP24tMzYwKk1hdGgucm91bmQobi8zNjApOm4pOmMxKGlzTmFOKHQpP2U6dCl9ZnVuY3Rpb24gZDEodCl7cmV0dXJuIDE9PSh0PSt0KT9wMTpmdW5jdGlvbihlLG4pe3JldHVybiBuLWU/KGZ1bmN0aW9uIGkodCxlLG4pe3JldHVybiB0PU1hdGgucG93KHQsbiksZT1NYXRoLnBvdyhlLG4pLXQsbj0xL24sZnVuY3Rpb24oaSl7cmV0dXJuIE1hdGgucG93KHQraSplLG4pfX0pKGUsbix0KTpjMShpc05hTihlKT9uOmUpfX1mdW5jdGlvbiBwMSh0LGUpe3ZhciBuPWUtdDtyZXR1cm4gbj91MSh0LG4pOmMxKGlzTmFOKHQpP2U6dCl9SkoobzEscjEsUUoodFEse2JyaWdodGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/blE6TWF0aC5wb3coblEsdCksbmV3IG8xKHRoaXMuaCx0aGlzLnMsdGhpcy5sKnQsdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/ZVE6TWF0aC5wb3coZVEsdCksbmV3IG8xKHRoaXMuaCx0aGlzLnMsdGhpcy5sKnQsdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7dmFyIHQ9aXNOYU4odGhpcy5oKT8wOih0aGlzLmgrMTIwKSpQUSxlPSt0aGlzLmwsbj1pc05hTih0aGlzLnMpPzA6dGhpcy5zKmUqKDEtZSksaT1NYXRoLmNvcyh0KSxyPU1hdGguc2luKHQpO3JldHVybiBuZXcgeFEoMjU1KihlK24qKCRRKmkrS1EqcikpLDI1NSooZStuKihaUSppK0pRKnIpKSwyNTUqKGUrbiooUVEqaSkpLHRoaXMub3BhY2l0eSl9fSkpO3ZhciBmMT0oZnVuY3Rpb24gdChlKXt2YXIgbj1kMShlKTtmdW5jdGlvbiBpKHQsZSl7dmFyIGk9bigodD1iUSh0KSkuciwoZT1iUShlKSkucikscj1uKHQuZyxlLmcpLG89bih0LmIsZS5iKSxhPXAxKHQub3BhY2l0eSxlLm9wYWNpdHkpO3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gdC5yPWkoZSksdC5nPXIoZSksdC5iPW8oZSksdC5vcGFjaXR5PWEoZSksdCsiIn19cmV0dXJuIGkuZ2FtbWE9dCxpfSkoMSk7ZnVuY3Rpb24gbTEodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBuLGkscj1lLmxlbmd0aCxvPW5ldyBBcnJheShyKSxhPW5ldyBBcnJheShyKSxzPW5ldyBBcnJheShyKTtmb3Iobj0wO248cjsrK24paT1iUShlW25dKSxvW25dPWkucnx8MCxhW25dPWkuZ3x8MCxzW25dPWkuYnx8MDtyZXR1cm4gbz10KG8pLGE9dChhKSxzPXQocyksaS5vcGFjaXR5PTEsZnVuY3Rpb24odCl7cmV0dXJuIGkucj1vKHQpLGkuZz1hKHQpLGkuYj1zKHQpLGkrIiJ9fX12YXIgZzE9bTEoczEpLF8xPW0xKGwxKTtmdW5jdGlvbiB5MSh0LGUpe3ZhciBuLGk9ZT9lLmxlbmd0aDowLHI9dD9NYXRoLm1pbihpLHQubGVuZ3RoKTowLG89bmV3IEFycmF5KHIpLGE9bmV3IEFycmF5KGkpO2ZvcihuPTA7bjxyOysrbilvW25dPUUxKHRbbl0sZVtuXSk7Zm9yKDtuPGk7KytuKWFbbl09ZVtuXTtyZXR1cm4gZnVuY3Rpb24odCl7Zm9yKG49MDtuPHI7KytuKWFbbl09b1tuXSh0KTtyZXR1cm4gYX19ZnVuY3Rpb24gdjEodCxlKXt2YXIgbj1uZXcgRGF0ZTtyZXR1cm4gZS09dD0rdCxmdW5jdGlvbihpKXtyZXR1cm4gbi5zZXRUaW1lKHQrZSppKSxufX1mdW5jdGlvbiBiMSh0LGUpe3JldHVybiBlLT10PSt0LGZ1bmN0aW9uKG4pe3JldHVybiB0K2Uqbn19ZnVuY3Rpb24geDEodCxlKXt2YXIgbixpPXt9LHI9e307Zm9yKG4gaW4gbnVsbCE9PXQmJiJvYmplY3QiPT10eXBlb2YgdHx8KHQ9e30pLG51bGwhPT1lJiYib2JqZWN0Ij09dHlwZW9mIGV8fChlPXt9KSxlKW4gaW4gdD9pW25dPUUxKHRbbl0sZVtuXSk6cltuXT1lW25dO3JldHVybiBmdW5jdGlvbih0KXtmb3IobiBpbiBpKXJbbl09aVtuXSh0KTtyZXR1cm4gcn19dmFyIHcxPS9bLStdPyg/OlxkK1wuP1xkKnxcLj9cZCspKD86W2VFXVstK10/XGQrKT8vZyxTMT1uZXcgUmVnRXhwKHcxLnNvdXJjZSwiZyIpO2Z1bmN0aW9uIE0xKHQsZSl7dmFyIG4saSxyLG89dzEubGFzdEluZGV4PVMxLmxhc3RJbmRleD0wLGE9LTEscz1bXSxsPVtdO2Zvcih0Kz0iIixlKz0iIjsobj13MS5leGVjKHQpKSYmKGk9UzEuZXhlYyhlKSk7KShyPWkuaW5kZXgpPm8mJihyPWUuc2xpY2UobyxyKSxzW2FdP3NbYV0rPXI6c1srK2FdPXIpLChuPW5bMF0pPT09KGk9aVswXSk/c1thXT9zW2FdKz1pOnNbKythXT1pOihzWysrYV09bnVsbCxsLnB1c2goe2k6YSx4OmIxKG4saSl9KSksbz1TMS5sYXN0SW5kZXg7cmV0dXJuIG88ZS5sZW5ndGgmJihyPWUuc2xpY2Uobyksc1thXT9zW2FdKz1yOnNbKythXT1yKSxzLmxlbmd0aDwyP2xbMF0/KGZ1bmN0aW9uIGModCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0KGUpKyIifX0pKGxbMF0ueCk6KGZ1bmN0aW9uIHUodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fSkoZSk6KGU9bC5sZW5ndGgsZnVuY3Rpb24odCl7Zm9yKHZhciBuLGk9MDtpPGU7KytpKXNbKG49bFtpXSkuaV09bi54KHQpO3JldHVybiBzLmpvaW4oIiIpfSl9ZnVuY3Rpb24gRTEodCxlKXt2YXIgbixpPXR5cGVvZiBlO3JldHVybiBudWxsPT1lfHwiYm9vbGVhbiI9PT1pP2MxKGUpOigibnVtYmVyIj09PWk/YjE6InN0cmluZyI9PT1pPyhuPWdRKGUpKT8oZT1uLGYxKTpNMTplIGluc3RhbmNlb2YgZ1E/ZjE6ZSBpbnN0YW5jZW9mIERhdGU/djE6QXJyYXkuaXNBcnJheShlKT95MToiZnVuY3Rpb24iIT10eXBlb2YgZS52YWx1ZU9mJiYiZnVuY3Rpb24iIT10eXBlb2YgZS50b1N0cmluZ3x8aXNOYU4oZSk/eDE6YjEpKHQsZSl9dmFyIFQxLEMxLEExLGsxLEwxPTE4MC9NYXRoLlBJLFAxPXt0cmFuc2xhdGVYOjAsdHJhbnNsYXRlWTowLHJvdGF0ZTowLHNrZXdYOjAsc2NhbGVYOjEsc2NhbGVZOjF9O2Z1bmN0aW9uIE4xKHQsZSxuLGkscixvKXt2YXIgYSxzLGw7cmV0dXJuKGE9TWF0aC5zcXJ0KHQqdCtlKmUpKSYmKHQvPWEsZS89YSksKGw9dCpuK2UqaSkmJihuLT10KmwsaS09ZSpsKSwocz1NYXRoLnNxcnQobipuK2kqaSkpJiYobi89cyxpLz1zLGwvPXMpLHQqaTxlKm4mJih0PS10LGU9LWUsbD0tbCxhPS1hKSx7dHJhbnNsYXRlWDpyLHRyYW5zbGF0ZVk6byxyb3RhdGU6TWF0aC5hdGFuMihlLHQpKkwxLHNrZXdYOk1hdGguYXRhbihsKSpMMSxzY2FsZVg6YSxzY2FsZVk6c319ZnVuY3Rpb24gSTEodCxlLG4saSl7ZnVuY3Rpb24gcih0KXtyZXR1cm4gdC5sZW5ndGg/dC5wb3AoKSsiICI6IiJ9cmV0dXJuIGZ1bmN0aW9uKG8sYSl7dmFyIHM9W10sbD1bXTtyZXR1cm4gbz10KG8pLGE9dChhKSwoZnVuY3Rpb24gYyh0LGkscixvLGEscyl7aWYodCE9PXJ8fGkhPT1vKXt2YXIgbD1hLnB1c2goInRyYW5zbGF0ZSgiLG51bGwsZSxudWxsLG4pO3MucHVzaCh7aTpsLTQseDpiMSh0LHIpfSx7aTpsLTIseDpiMShpLG8pfSl9ZWxzZShyfHxvKSYmYS5wdXNoKCJ0cmFuc2xhdGUoIityK2UrbytuKX0pKG8udHJhbnNsYXRlWCxvLnRyYW5zbGF0ZVksYS50cmFuc2xhdGVYLGEudHJhbnNsYXRlWSxzLGwpLChmdW5jdGlvbiB1KHQsZSxuLG8pe3QhPT1lPyh0LWU+MTgwP2UrPTM2MDplLXQ+MTgwJiYodCs9MzYwKSxvLnB1c2goe2k6bi5wdXNoKHIobikrInJvdGF0ZSgiLG51bGwsaSktMix4OmIxKHQsZSl9KSk6ZSYmbi5wdXNoKHIobikrInJvdGF0ZSgiK2UraSl9KShvLnJvdGF0ZSxhLnJvdGF0ZSxzLGwpLChmdW5jdGlvbiBoKHQsZSxuLG8pe3QhPT1lP28ucHVzaCh7aTpuLnB1c2gocihuKSsic2tld1goIixudWxsLGkpLTIseDpiMSh0LGUpfSk6ZSYmbi5wdXNoKHIobikrInNrZXdYKCIrZStpKX0pKG8uc2tld1gsYS5za2V3WCxzLGwpLChmdW5jdGlvbiBkKHQsZSxuLGksbyxhKXtpZih0IT09bnx8ZSE9PWkpe3ZhciBzPW8ucHVzaChyKG8pKyJzY2FsZSgiLG51bGwsIiwiLG51bGwsIikiKTthLnB1c2goe2k6cy00LHg6YjEodCxuKX0se2k6cy0yLHg6YjEoZSxpKX0pfWVsc2UgMT09PW4mJjE9PT1pfHxvLnB1c2gocihvKSsic2NhbGUoIituKyIsIitpKyIpIil9KShvLnNjYWxlWCxvLnNjYWxlWSxhLnNjYWxlWCxhLnNjYWxlWSxzLGwpLG89YT1udWxsLGZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxuPS0xLGk9bC5sZW5ndGg7KytuPGk7KXNbKGU9bFtuXSkuaV09ZS54KHQpO3JldHVybiBzLmpvaW4oIiIpfX19dmFyIFIxPUkxKChmdW5jdGlvbiBPMSh0KXtyZXR1cm4ibm9uZSI9PT10P1AxOihUMXx8KFQxPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIkRJViIpLEMxPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxBMT1kb2N1bWVudC5kZWZhdWx0VmlldyksVDEuc3R5bGUudHJhbnNmb3JtPXQsdD1BMS5nZXRDb21wdXRlZFN0eWxlKEMxLmFwcGVuZENoaWxkKFQxKSxudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCJ0cmFuc2Zvcm0iKSxDMS5yZW1vdmVDaGlsZChUMSksTjEoKyh0PXQuc2xpY2UoNywtMSkuc3BsaXQoIiwiKSlbMF0sK3RbMV0sK3RbMl0sK3RbM10sK3RbNF0sK3RbNV0pKX0pLCJweCwgIiwicHgpIiwiZGVnKSIpLHoxPUkxKChmdW5jdGlvbiBEMSh0KXtyZXR1cm4gbnVsbD09dD9QMTooazF8fChrMT1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwiZyIpKSxrMS5zZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIsdCksKHQ9azEudHJhbnNmb3JtLmJhc2VWYWwuY29uc29saWRhdGUoKSk/TjEoKHQ9dC5tYXRyaXgpLmEsdC5iLHQuYyx0LmQsdC5lLHQuZik6UDEpfSksIiwgIiwiKSIsIikiKSxCMT1NYXRoLlNRUlQyO2Z1bmN0aW9uIEgxKHQpe3JldHVybigodD1NYXRoLmV4cCh0KSkrMS90KS8yfWZ1bmN0aW9uIEYxKHQpe3JldHVybiBmdW5jdGlvbihlLG4pe3ZhciBpPXQoKGU9Q1EoZSkpLmgsKG49Q1EobikpLmgpLHI9cDEoZS5zLG4ucyksbz1wMShlLmwsbi5sKSxhPXAxKGUub3BhY2l0eSxuLm9wYWNpdHkpO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZS5oPWkodCksZS5zPXIodCksZS5sPW8odCksZS5vcGFjaXR5PWEodCksZSsiIn19fXZhciBWMT1GMShoMSksVTE9RjEocDEpO2Z1bmN0aW9uIGoxKHQpe3JldHVybiBmdW5jdGlvbihlLG4pe3ZhciBpPXQoKGU9cVEoZSkpLmgsKG49cVEobikpLmgpLHI9cDEoZS5jLG4uYyksbz1wMShlLmwsbi5sKSxhPXAxKGUub3BhY2l0eSxuLm9wYWNpdHkpO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZS5oPWkodCksZS5jPXIodCksZS5sPW8odCksZS5vcGFjaXR5PWEodCksZSsiIn19fXZhciBHMT1qMShoMSksVzE9ajEocDEpO2Z1bmN0aW9uIHExKHQpe3JldHVybihmdW5jdGlvbiBlKG4pe2Z1bmN0aW9uIGkoZSxpKXt2YXIgcj10KChlPXIxKGUpKS5oLChpPXIxKGkpKS5oKSxvPXAxKGUucyxpLnMpLGE9cDEoZS5sLGkubCkscz1wMShlLm9wYWNpdHksaS5vcGFjaXR5KTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGUuaD1yKHQpLGUucz1vKHQpLGUubD1hKE1hdGgucG93KHQsbikpLGUub3BhY2l0eT1zKHQpLGUrIiJ9fXJldHVybiBuPStuLGkuZ2FtbWE9ZSxpfSkoMSl9dmFyIFkxPXExKGgxKSxYMT1xMShwMSk7dmFyICQxPU1hdGguUEksSzE9MiokMSxaMT0xZS02LEoxPUsxLVoxO2Z1bmN0aW9uIFExKCl7dGhpcy5feDA9dGhpcy5feTA9dGhpcy5feDE9dGhpcy5feTE9bnVsbCx0aGlzLl89IiJ9ZnVuY3Rpb24gdDAoKXtyZXR1cm4gbmV3IFExfWZ1bmN0aW9uIGUwKHQsZSxuKXtyZXR1cm4oZVswXS10WzBdKSooblsxXS10WzFdKS0oZVsxXS10WzFdKSooblswXS10WzBdKX1mdW5jdGlvbiBuMCh0LGUpe3JldHVybiB0WzBdLWVbMF18fHRbMV0tZVsxXX1mdW5jdGlvbiBpMCh0KXtmb3IodmFyIGU9dC5sZW5ndGgsbj1bMCwxXSxpPTIscj0yO3I8ZTsrK3Ipe2Zvcig7aT4xJiZlMCh0W25baS0yXV0sdFtuW2ktMV1dLHRbcl0pPD0wOyktLWk7bltpKytdPXJ9cmV0dXJuIG4uc2xpY2UoMCxpKX1mdW5jdGlvbiByMCh0LGUsbixpKXtpZihpc05hTihlKXx8aXNOYU4obikpcmV0dXJuIHQ7dmFyIHIsbyxhLHMsbCxjLHUsaCxkLHA9dC5fcm9vdCxmPXtkYXRhOml9LG09dC5feDAsZz10Ll95MCxfPXQuX3gxLHk9dC5feTE7aWYoIXApcmV0dXJuIHQuX3Jvb3Q9Zix0O2Zvcig7cC5sZW5ndGg7KWlmKChjPWU+PShvPShtK18pLzIpKT9tPW86Xz1vLCh1PW4+PShhPShnK3kpLzIpKT9nPWE6eT1hLHI9cCwhKHA9cFtoPXU8PDF8Y10pKXJldHVybiByW2hdPWYsdDtpZihzPSt0Ll94LmNhbGwobnVsbCxwLmRhdGEpLGw9K3QuX3kuY2FsbChudWxsLHAuZGF0YSksZT09PXMmJm49PT1sKXJldHVybiBmLm5leHQ9cCxyP3JbaF09Zjp0Ll9yb290PWYsdDtkb3tyPXI/cltoXT1uZXcgQXJyYXkoNCk6dC5fcm9vdD1uZXcgQXJyYXkoNCksKGM9ZT49KG89KG0rXykvMikpP209bzpfPW8sKHU9bj49KGE9KGcreSkvMikpP2c9YTp5PWF9d2hpbGUoKGg9dTw8MXxjKT09KGQ9KGw+PWEpPDwxfHM+PW8pKTtyZXR1cm4gcltkXT1wLHJbaF09Zix0fWZ1bmN0aW9uIG8wKHQsZSxuLGkscil7dGhpcy5ub2RlPXQsdGhpcy54MD1lLHRoaXMueTA9bix0aGlzLngxPWksdGhpcy55MT1yfWZ1bmN0aW9uIGEwKHQpe3JldHVybiB0WzBdfWZ1bmN0aW9uIHMwKHQpe3JldHVybiB0WzFdfWZ1bmN0aW9uIGwwKHQsZSxuKXt2YXIgaT1uZXcgYzAobnVsbD09ZT9hMDplLG51bGw9PW4/czA6bixOYU4sTmFOLE5hTixOYU4pO3JldHVybiBudWxsPT10P2k6aS5hZGRBbGwodCl9ZnVuY3Rpb24gYzAodCxlLG4saSxyLG8pe3RoaXMuX3g9dCx0aGlzLl95PWUsdGhpcy5feDA9bix0aGlzLl95MD1pLHRoaXMuX3gxPXIsdGhpcy5feTE9byx0aGlzLl9yb290PXZvaWQgMH1mdW5jdGlvbiB1MCh0KXtmb3IodmFyIGU9e2RhdGE6dC5kYXRhfSxuPWU7dD10Lm5leHQ7KW49bi5uZXh0PXtkYXRhOnQuZGF0YX07cmV0dXJuIGV9UTEucHJvdG90eXBlPXQwLnByb3RvdHlwZT17Y29uc3RydWN0b3I6UTEsbW92ZVRvOmZ1bmN0aW9uKHQsZSl7dGhpcy5fKz0iTSIrKHRoaXMuX3gwPXRoaXMuX3gxPSt0KSsiLCIrKHRoaXMuX3kwPXRoaXMuX3kxPStlKX0sY2xvc2VQYXRoOmZ1bmN0aW9uKCl7bnVsbCE9PXRoaXMuX3gxJiYodGhpcy5feDE9dGhpcy5feDAsdGhpcy5feTE9dGhpcy5feTAsdGhpcy5fKz0iWiIpfSxsaW5lVG86ZnVuY3Rpb24odCxlKXt0aGlzLl8rPSJMIisodGhpcy5feDE9K3QpKyIsIisodGhpcy5feTE9K2UpfSxxdWFkcmF0aWNDdXJ2ZVRvOmZ1bmN0aW9uKHQsZSxuLGkpe3RoaXMuXys9IlEiKyArdCsiLCIrICtlKyIsIisodGhpcy5feDE9K24pKyIsIisodGhpcy5feTE9K2kpfSxiZXppZXJDdXJ2ZVRvOmZ1bmN0aW9uKHQsZSxuLGkscixvKXt0aGlzLl8rPSJDIisgK3QrIiwiKyArZSsiLCIrICtuKyIsIisgK2krIiwiKyh0aGlzLl94MT0rcikrIiwiKyh0aGlzLl95MT0rbyl9LGFyY1RvOmZ1bmN0aW9uKHQsZSxuLGkscil7dmFyIG89dGhpcy5feDEsYT10aGlzLl95MSxzPShuPStuKS0odD0rdCksbD0oaT0raSktKGU9K2UpLGM9by10LHU9YS1lLGg9YypjK3UqdTtpZigocj0rcik8MCl0aHJvdyBuZXcgRXJyb3IoIm5lZ2F0aXZlIHJhZGl1czogIityKTtpZihudWxsPT09dGhpcy5feDEpdGhpcy5fKz0iTSIrKHRoaXMuX3gxPXQpKyIsIisodGhpcy5feTE9ZSk7ZWxzZSBpZihoPloxKWlmKE1hdGguYWJzKHUqcy1sKmMpPloxJiZyKXt2YXIgZD1uLW8scD1pLWEsZj1zKnMrbCpsLG09ZCpkK3AqcCxnPU1hdGguc3FydChmKSxfPU1hdGguc3FydChoKSx5PXIqTWF0aC50YW4oKCQxLU1hdGguYWNvcygoZitoLW0pLygyKmcqXykpKS8yKSx2PXkvXyxiPXkvZztNYXRoLmFicyh2LTEpPloxJiYodGhpcy5fKz0iTCIrKHQrdipjKSsiLCIrKGUrdip1KSksdGhpcy5fKz0iQSIrcisiLCIrcisiLDAsMCwiKyArKHUqZD5jKnApKyIsIisodGhpcy5feDE9dCtiKnMpKyIsIisodGhpcy5feTE9ZStiKmwpfWVsc2UgdGhpcy5fKz0iTCIrKHRoaXMuX3gxPXQpKyIsIisodGhpcy5feTE9ZSk7ZWxzZTt9LGFyYzpmdW5jdGlvbih0LGUsbixpLHIsbyl7dD0rdCxlPStlO3ZhciBhPShuPStuKSpNYXRoLmNvcyhpKSxzPW4qTWF0aC5zaW4oaSksbD10K2EsYz1lK3MsdT0xXm8saD1vP2ktcjpyLWk7aWYobjwwKXRocm93IG5ldyBFcnJvcigibmVnYXRpdmUgcmFkaXVzOiAiK24pO251bGw9PT10aGlzLl94MT90aGlzLl8rPSJNIitsKyIsIitjOihNYXRoLmFicyh0aGlzLl94MS1sKT5aMXx8TWF0aC5hYnModGhpcy5feTEtYyk+WjEpJiYodGhpcy5fKz0iTCIrbCsiLCIrYyksbiYmKGg8MCYmKGg9aCVLMStLMSksaD5KMT90aGlzLl8rPSJBIituKyIsIituKyIsMCwxLCIrdSsiLCIrKHQtYSkrIiwiKyhlLXMpKyJBIituKyIsIituKyIsMCwxLCIrdSsiLCIrKHRoaXMuX3gxPWwpKyIsIisodGhpcy5feTE9Yyk6aD5aMSYmKHRoaXMuXys9IkEiK24rIiwiK24rIiwwLCIrICsoaD49JDEpKyIsIit1KyIsIisodGhpcy5feDE9dCtuKk1hdGguY29zKHIpKSsiLCIrKHRoaXMuX3kxPWUrbipNYXRoLnNpbihyKSkpKX0scmVjdDpmdW5jdGlvbih0LGUsbixpKXt0aGlzLl8rPSJNIisodGhpcy5feDA9dGhpcy5feDE9K3QpKyIsIisodGhpcy5feTA9dGhpcy5feTE9K2UpKyJoIisgK24rInYiKyAraSsiaCIrLW4rIloifSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiB0aGlzLl99fTt2YXIgaDA9bDAucHJvdG90eXBlPWMwLnByb3RvdHlwZTtoMC5jb3B5PWZ1bmN0aW9uKCl7dmFyIHQsZSxuPW5ldyBjMCh0aGlzLl94LHRoaXMuX3ksdGhpcy5feDAsdGhpcy5feTAsdGhpcy5feDEsdGhpcy5feTEpLGk9dGhpcy5fcm9vdDtpZighaSlyZXR1cm4gbjtpZighaS5sZW5ndGgpcmV0dXJuIG4uX3Jvb3Q9dTAoaSksbjtmb3IodD1be3NvdXJjZTppLHRhcmdldDpuLl9yb290PW5ldyBBcnJheSg0KX1dO2k9dC5wb3AoKTspZm9yKHZhciByPTA7cjw0OysrcikoZT1pLnNvdXJjZVtyXSkmJihlLmxlbmd0aD90LnB1c2goe3NvdXJjZTplLHRhcmdldDppLnRhcmdldFtyXT1uZXcgQXJyYXkoNCl9KTppLnRhcmdldFtyXT11MChlKSk7cmV0dXJuIG59LGgwLmFkZD1mdW5jdGlvbiBkMCh0KXt2YXIgZT0rdGhpcy5feC5jYWxsKG51bGwsdCksbj0rdGhpcy5feS5jYWxsKG51bGwsdCk7cmV0dXJuIHIwKHRoaXMuY292ZXIoZSxuKSxlLG4sdCl9LGgwLmFkZEFsbD1mdW5jdGlvbiBwMCh0KXt2YXIgZSxuLGkscixvPXQubGVuZ3RoLGE9bmV3IEFycmF5KG8pLHM9bmV3IEFycmF5KG8pLGw9MS8wLGM9MS8wLHU9LTEvMCxoPS0xLzA7Zm9yKG49MDtuPG87KytuKWlzTmFOKGk9K3RoaXMuX3guY2FsbChudWxsLGU9dFtuXSkpfHxpc05hTihyPSt0aGlzLl95LmNhbGwobnVsbCxlKSl8fChhW25dPWksc1tuXT1yLGk8bCYmKGw9aSksaT51JiYodT1pKSxyPGMmJihjPXIpLHI+aCYmKGg9cikpO2Zvcih1PGwmJihsPXRoaXMuX3gwLHU9dGhpcy5feDEpLGg8YyYmKGM9dGhpcy5feTAsaD10aGlzLl95MSksdGhpcy5jb3ZlcihsLGMpLmNvdmVyKHUsaCksbj0wO248bzsrK24pcjAodGhpcyxhW25dLHNbbl0sdFtuXSk7cmV0dXJuIHRoaXN9LGgwLmNvdmVyPWZ1bmN0aW9uIGYwKHQsZSl7aWYoaXNOYU4odD0rdCl8fGlzTmFOKGU9K2UpKXJldHVybiB0aGlzO3ZhciBuPXRoaXMuX3gwLGk9dGhpcy5feTAscj10aGlzLl94MSxvPXRoaXMuX3kxO2lmKGlzTmFOKG4pKXI9KG49TWF0aC5mbG9vcih0KSkrMSxvPShpPU1hdGguZmxvb3IoZSkpKzE7ZWxzZXtpZighKG4+dHx8dD5yfHxpPmV8fGU+bykpcmV0dXJuIHRoaXM7dmFyIGEscyxsPXItbixjPXRoaXMuX3Jvb3Q7c3dpdGNoKHM9KGU8KGkrbykvMik8PDF8dDwobityKS8yKXtjYXNlIDA6ZG97KGE9bmV3IEFycmF5KDQpKVtzXT1jLGM9YX13aGlsZShvPWkrKGwqPTIpLHQ+KHI9bitsKXx8ZT5vKTticmVhaztjYXNlIDE6ZG97KGE9bmV3IEFycmF5KDQpKVtzXT1jLGM9YX13aGlsZShvPWkrKGwqPTIpLChuPXItbCk+dHx8ZT5vKTticmVhaztjYXNlIDI6ZG97KGE9bmV3IEFycmF5KDQpKVtzXT1jLGM9YX13aGlsZShpPW8tKGwqPTIpLHQ+KHI9bitsKXx8aT5lKTticmVhaztjYXNlIDM6ZG97KGE9bmV3IEFycmF5KDQpKVtzXT1jLGM9YX13aGlsZShpPW8tKGwqPTIpLChuPXItbCk+dHx8aT5lKX10aGlzLl9yb290JiZ0aGlzLl9yb290Lmxlbmd0aCYmKHRoaXMuX3Jvb3Q9Yyl9cmV0dXJuIHRoaXMuX3gwPW4sdGhpcy5feTA9aSx0aGlzLl94MT1yLHRoaXMuX3kxPW8sdGhpc30saDAuZGF0YT1mdW5jdGlvbiBtMCgpe3ZhciB0PVtdO3JldHVybiB0aGlzLnZpc2l0KChmdW5jdGlvbihlKXtpZighZS5sZW5ndGgpZG97dC5wdXNoKGUuZGF0YSl9d2hpbGUoZT1lLm5leHQpfSkpLHR9LGgwLmV4dGVudD1mdW5jdGlvbiBnMCh0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmNvdmVyKCt0WzBdWzBdLCt0WzBdWzFdKS5jb3ZlcigrdFsxXVswXSwrdFsxXVsxXSk6aXNOYU4odGhpcy5feDApP3ZvaWQgMDpbW3RoaXMuX3gwLHRoaXMuX3kwXSxbdGhpcy5feDEsdGhpcy5feTFdXX0saDAuZmluZD1mdW5jdGlvbiBfMCh0LGUsbil7dmFyIGkscixvLGEscyxsLGMsdT10aGlzLl94MCxoPXRoaXMuX3kwLGQ9dGhpcy5feDEscD10aGlzLl95MSxmPVtdLG09dGhpcy5fcm9vdDtmb3IobSYmZi5wdXNoKG5ldyBvMChtLHUsaCxkLHApKSxudWxsPT1uP249MS8wOih1PXQtbixoPWUtbixkPXQrbixwPWUrbixuKj1uKTtsPWYucG9wKCk7KWlmKCEoIShtPWwubm9kZSl8fChyPWwueDApPmR8fChvPWwueTApPnB8fChhPWwueDEpPHV8fChzPWwueTEpPGgpKWlmKG0ubGVuZ3RoKXt2YXIgZz0ocithKS8yLF89KG8rcykvMjtmLnB1c2gobmV3IG8wKG1bM10sZyxfLGEscyksbmV3IG8wKG1bMl0scixfLGcscyksbmV3IG8wKG1bMV0sZyxvLGEsXyksbmV3IG8wKG1bMF0scixvLGcsXykpLChjPShlPj1fKTw8MXx0Pj1nKSYmKGw9ZltmLmxlbmd0aC0xXSxmW2YubGVuZ3RoLTFdPWZbZi5sZW5ndGgtMS1jXSxmW2YubGVuZ3RoLTEtY109bCl9ZWxzZXt2YXIgeT10LSt0aGlzLl94LmNhbGwobnVsbCxtLmRhdGEpLHY9ZS0rdGhpcy5feS5jYWxsKG51bGwsbS5kYXRhKSxiPXkqeSt2KnY7aWYoYjxuKXt2YXIgeD1NYXRoLnNxcnQobj1iKTt1PXQteCxoPWUteCxkPXQreCxwPWUreCxpPW0uZGF0YX19cmV0dXJuIGl9LGgwLnJlbW92ZT1mdW5jdGlvbiB5MCh0KXtpZihpc05hTihvPSt0aGlzLl94LmNhbGwobnVsbCx0KSl8fGlzTmFOKGE9K3RoaXMuX3kuY2FsbChudWxsLHQpKSlyZXR1cm4gdGhpczt2YXIgZSxuLGkscixvLGEscyxsLGMsdSxoLGQscD10aGlzLl9yb290LGY9dGhpcy5feDAsbT10aGlzLl95MCxnPXRoaXMuX3gxLF89dGhpcy5feTE7aWYoIXApcmV0dXJuIHRoaXM7aWYocC5sZW5ndGgpZm9yKDs7KXtpZigoYz1vPj0ocz0oZitnKS8yKSk/Zj1zOmc9cywodT1hPj0obD0obStfKS8yKSk/bT1sOl89bCxlPXAsIShwPXBbaD11PDwxfGNdKSlyZXR1cm4gdGhpcztpZighcC5sZW5ndGgpYnJlYWs7KGVbaCsxJjNdfHxlW2grMiYzXXx8ZVtoKzMmM10pJiYobj1lLGQ9aCl9Zm9yKDtwLmRhdGEhPT10OylpZihpPXAsIShwPXAubmV4dCkpcmV0dXJuIHRoaXM7cmV0dXJuKHI9cC5uZXh0KSYmZGVsZXRlIHAubmV4dCxpPyhyP2kubmV4dD1yOmRlbGV0ZSBpLm5leHQsdGhpcyk6ZT8ocj9lW2hdPXI6ZGVsZXRlIGVbaF0sKHA9ZVswXXx8ZVsxXXx8ZVsyXXx8ZVszXSkmJnA9PT0oZVszXXx8ZVsyXXx8ZVsxXXx8ZVswXSkmJiFwLmxlbmd0aCYmKG4/bltkXT1wOnRoaXMuX3Jvb3Q9cCksdGhpcyk6KHRoaXMuX3Jvb3Q9cix0aGlzKX0saDAucmVtb3ZlQWxsPWZ1bmN0aW9uIHYwKHQpe2Zvcih2YXIgZT0wLG49dC5sZW5ndGg7ZTxuOysrZSl0aGlzLnJlbW92ZSh0W2VdKTtyZXR1cm4gdGhpc30saDAucm9vdD1mdW5jdGlvbiBiMCgpe3JldHVybiB0aGlzLl9yb290fSxoMC5zaXplPWZ1bmN0aW9uIHgwKCl7dmFyIHQ9MDtyZXR1cm4gdGhpcy52aXNpdCgoZnVuY3Rpb24oZSl7aWYoIWUubGVuZ3RoKWRveysrdH13aGlsZShlPWUubmV4dCl9KSksdH0saDAudmlzaXQ9ZnVuY3Rpb24gdzAodCl7dmFyIGUsbixpLHIsbyxhLHM9W10sbD10aGlzLl9yb290O2ZvcihsJiZzLnB1c2gobmV3IG8wKGwsdGhpcy5feDAsdGhpcy5feTAsdGhpcy5feDEsdGhpcy5feTEpKTtlPXMucG9wKCk7KWlmKCF0KGw9ZS5ub2RlLGk9ZS54MCxyPWUueTAsbz1lLngxLGE9ZS55MSkmJmwubGVuZ3RoKXt2YXIgYz0oaStvKS8yLHU9KHIrYSkvMjsobj1sWzNdKSYmcy5wdXNoKG5ldyBvMChuLGMsdSxvLGEpKSwobj1sWzJdKSYmcy5wdXNoKG5ldyBvMChuLGksdSxjLGEpKSwobj1sWzFdKSYmcy5wdXNoKG5ldyBvMChuLGMscixvLHUpKSwobj1sWzBdKSYmcy5wdXNoKG5ldyBvMChuLGkscixjLHUpKX1yZXR1cm4gdGhpc30saDAudmlzaXRBZnRlcj1mdW5jdGlvbiBTMCh0KXt2YXIgZSxuPVtdLGk9W107Zm9yKHRoaXMuX3Jvb3QmJm4ucHVzaChuZXcgbzAodGhpcy5fcm9vdCx0aGlzLl94MCx0aGlzLl95MCx0aGlzLl94MSx0aGlzLl95MSkpO2U9bi5wb3AoKTspe3ZhciByPWUubm9kZTtpZihyLmxlbmd0aCl7dmFyIG8sYT1lLngwLHM9ZS55MCxsPWUueDEsYz1lLnkxLHU9KGErbCkvMixoPShzK2MpLzI7KG89clswXSkmJm4ucHVzaChuZXcgbzAobyxhLHMsdSxoKSksKG89clsxXSkmJm4ucHVzaChuZXcgbzAobyx1LHMsbCxoKSksKG89clsyXSkmJm4ucHVzaChuZXcgbzAobyxhLGgsdSxjKSksKG89clszXSkmJm4ucHVzaChuZXcgbzAobyx1LGgsbCxjKSl9aS5wdXNoKGUpfWZvcig7ZT1pLnBvcCgpOyl0KGUubm9kZSxlLngwLGUueTAsZS54MSxlLnkxKTtyZXR1cm4gdGhpc30saDAueD1mdW5jdGlvbiBNMCh0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odGhpcy5feD10LHRoaXMpOnRoaXMuX3h9LGgwLnk9ZnVuY3Rpb24gRTAodCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHRoaXMuX3k9dCx0aGlzKTp0aGlzLl95fTt2YXIgVDA9W10uc2xpY2UsQzA9e307ZnVuY3Rpb24gQTAodCl7dGhpcy5fc2l6ZT10LHRoaXMuX2NhbGw9dGhpcy5fZXJyb3I9bnVsbCx0aGlzLl90YXNrcz1bXSx0aGlzLl9kYXRhPVtdLHRoaXMuX3dhaXRpbmc9dGhpcy5fYWN0aXZlPXRoaXMuX2VuZGVkPXRoaXMuX3N0YXJ0PTB9ZnVuY3Rpb24gazAodCl7aWYoIXQuX3N0YXJ0KXRyeXshKGZ1bmN0aW9uIGUodCl7Zm9yKDt0Ll9zdGFydD10Ll93YWl0aW5nJiZ0Ll9hY3RpdmU8dC5fc2l6ZTspe3ZhciBlPXQuX2VuZGVkK3QuX2FjdGl2ZSxuPXQuX3Rhc2tzW2VdLGk9bi5sZW5ndGgtMSxyPW5baV07bltpXT1MMCh0LGUpLC0tdC5fd2FpdGluZywrK3QuX2FjdGl2ZSxuPXIuYXBwbHkobnVsbCxuKSx0Ll90YXNrc1tlXSYmKHQuX3Rhc2tzW2VdPW58fEMwKX19KSh0KX1jYXRjaChlKXtpZih0Ll90YXNrc1t0Ll9lbmRlZCt0Ll9hY3RpdmUtMV0pUDAodCxlKTtlbHNlIGlmKCF0Ll9kYXRhKXRocm93IGV9fWZ1bmN0aW9uIEwwKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4saSl7dC5fdGFza3NbZV0mJigtLXQuX2FjdGl2ZSwrK3QuX2VuZGVkLHQuX3Rhc2tzW2VdPW51bGwsbnVsbD09dC5fZXJyb3ImJihudWxsIT1uP1AwKHQsbik6KHQuX2RhdGFbZV09aSx0Ll93YWl0aW5nP2swKHQpOk4wKHQpKSkpfX1mdW5jdGlvbiBQMCh0LGUpe3ZhciBuLGk9dC5fdGFza3MubGVuZ3RoO2Zvcih0Ll9lcnJvcj1lLHQuX2RhdGE9dm9pZCAwLHQuX3dhaXRpbmc9TmFOOy0taT49MDspaWYoKG49dC5fdGFza3NbaV0pJiYodC5fdGFza3NbaV09bnVsbCxuLmFib3J0KSl0cnl7bi5hYm9ydCgpfWNhdGNoKGUpe310Ll9hY3RpdmU9TmFOLE4wKHQpfWZ1bmN0aW9uIE4wKHQpe2lmKCF0Ll9hY3RpdmUmJnQuX2NhbGwpe3ZhciBlPXQuX2RhdGE7dC5fZGF0YT12b2lkIDAsdC5fY2FsbCh0Ll9lcnJvcixlKX19ZnVuY3Rpb24gSTAodCl7aWYobnVsbD09dCl0PTEvMDtlbHNlIGlmKCEoKHQ9K3QpPj0xKSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgY29uY3VycmVuY3kiKTtyZXR1cm4gbmV3IEEwKHQpfWZ1bmN0aW9uIFIwKCl7cmV0dXJuIE1hdGgucmFuZG9tKCl9QTAucHJvdG90eXBlPUkwLnByb3RvdHlwZT17Y29uc3RydWN0b3I6QTAsZGVmZXI6ZnVuY3Rpb24odCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGNhbGxiYWNrIik7aWYodGhpcy5fY2FsbCl0aHJvdyBuZXcgRXJyb3IoImRlZmVyIGFmdGVyIGF3YWl0Iik7aWYobnVsbCE9dGhpcy5fZXJyb3IpcmV0dXJuIHRoaXM7dmFyIGU9VDAuY2FsbChhcmd1bWVudHMsMSk7cmV0dXJuIGUucHVzaCh0KSwrK3RoaXMuX3dhaXRpbmcsdGhpcy5fdGFza3MucHVzaChlKSxrMCh0aGlzKSx0aGlzfSxhYm9ydDpmdW5jdGlvbigpe3JldHVybiBudWxsPT10aGlzLl9lcnJvciYmUDAodGhpcyxuZXcgRXJyb3IoImFib3J0IikpLHRoaXN9LGF3YWl0OmZ1bmN0aW9uKHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBjYWxsYmFjayIpO2lmKHRoaXMuX2NhbGwpdGhyb3cgbmV3IEVycm9yKCJtdWx0aXBsZSBhd2FpdCIpO3JldHVybiB0aGlzLl9jYWxsPWZ1bmN0aW9uKGUsbil7dC5hcHBseShudWxsLFtlXS5jb25jYXQobikpfSxOMCh0aGlzKSx0aGlzfSxhd2FpdEFsbDpmdW5jdGlvbih0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgY2FsbGJhY2siKTtpZih0aGlzLl9jYWxsKXRocm93IG5ldyBFcnJvcigibXVsdGlwbGUgYXdhaXQiKTtyZXR1cm4gdGhpcy5fY2FsbD10LE4wKHRoaXMpLHRoaXN9fTt2YXIgTzA9KGZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gbih0LG4pe3JldHVybiB0PW51bGw9PXQ/MDordCxuPW51bGw9PW4/MTorbiwxPT09YXJndW1lbnRzLmxlbmd0aD8obj10LHQ9MCk6bi09dCxmdW5jdGlvbigpe3JldHVybiBlKCkqbit0fX1yZXR1cm4gbi5zb3VyY2U9dCxufSkoUjApLHowPShmdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCxuKXt2YXIgaSxyO3JldHVybiB0PW51bGw9PXQ/MDordCxuPW51bGw9PW4/MTorbixmdW5jdGlvbigpe3ZhciBvO2lmKG51bGwhPWkpbz1pLGk9bnVsbDtlbHNlIGRve2k9MiplKCktMSxvPTIqZSgpLTEscj1pKmkrbypvfXdoaWxlKCFyfHxyPjEpO3JldHVybiB0K24qbypNYXRoLnNxcnQoLTIqTWF0aC5sb2cocikvcil9fXJldHVybiBuLnNvdXJjZT10LG59KShSMCksRDA9KGZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gbigpe3ZhciB0PXowLnNvdXJjZShlKS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIE1hdGguZXhwKHQoKSl9fXJldHVybiBuLnNvdXJjZT10LG59KShSMCksQjA9KGZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtmb3IodmFyIG49MCxpPTA7aTx0OysraSluKz1lKCk7cmV0dXJuIG59fXJldHVybiBuLnNvdXJjZT10LG59KShSMCksSDA9KGZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gbih0KXt2YXIgbj1CMC5zb3VyY2UoZSkodCk7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG4oKS90fX1yZXR1cm4gbi5zb3VyY2U9dCxufSkoUjApLEYwPShmdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuLU1hdGgubG9nKDEtZSgpKS90fX1yZXR1cm4gbi5zb3VyY2U9dCxufSkoUjApO2Z1bmN0aW9uIFYwKHQsZSl7dmFyIG4saSxyLG8sYT13YygiYmVmb3Jlc2VuZCIsInByb2dyZXNzIiwibG9hZCIsImVycm9yIikscz1qZygpLGw9bmV3IFhNTEh0dHBSZXF1ZXN0LGM9bnVsbCx1PW51bGwsaD0wO2Z1bmN0aW9uIGQodCl7dmFyIGUsaT1sLnN0YXR1cztpZighaSYmKGZ1bmN0aW9uIG8odCl7dmFyIGU9dC5yZXNwb25zZVR5cGU7cmV0dXJuIGUmJiJ0ZXh0IiE9PWU/dC5yZXNwb25zZTp0LnJlc3BvbnNlVGV4dH0pKGwpfHxpPj0yMDAmJmk8MzAwfHwzMDQ9PT1pKXtpZihyKXRyeXtlPXIuY2FsbChuLGwpfWNhdGNoKHQpe3JldHVybiB2b2lkIGEuY2FsbCgiZXJyb3IiLG4sdCl9ZWxzZSBlPWw7YS5jYWxsKCJsb2FkIixuLGUpfWVsc2UgYS5jYWxsKCJlcnJvciIsbix0KX1pZigidW5kZWZpbmVkIiE9dHlwZW9mIFhEb21haW5SZXF1ZXN0JiYhKCJ3aXRoQ3JlZGVudGlhbHMiaW4gbCkmJi9eKGh0dHAocyk/Oik/XC9cLy8udGVzdCh0KSYmKGw9bmV3IFhEb21haW5SZXF1ZXN0KSwib25sb2FkImluIGw/bC5vbmxvYWQ9bC5vbmVycm9yPWwub250aW1lb3V0PWQ6bC5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24odCl7bC5yZWFkeVN0YXRlPjMmJmQodCl9LGwub25wcm9ncmVzcz1mdW5jdGlvbih0KXthLmNhbGwoInByb2dyZXNzIixuLHQpfSxuPXtoZWFkZXI6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD0odCsiIikudG9Mb3dlckNhc2UoKSxhcmd1bWVudHMubGVuZ3RoPDI/cy5nZXQodCk6KG51bGw9PWU/cy5yZW1vdmUodCk6cy5zZXQodCxlKyIiKSxuKX0sbWltZVR5cGU6ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9bnVsbD09dD9udWxsOnQrIiIsbik6aX0scmVzcG9uc2VUeXBlOmZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPXQsbik6b30sdGltZW91dDpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD0rdCxuKTpofSx1c2VyOmZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPDE/YzooYz1udWxsPT10P251bGw6dCsiIixuKX0scGFzc3dvcmQ6ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8MT91Oih1PW51bGw9PXQ/bnVsbDp0KyIiLG4pfSxyZXNwb25zZTpmdW5jdGlvbih0KXtyZXR1cm4gcj10LG59LGdldDpmdW5jdGlvbih0LGUpe3JldHVybiBuLnNlbmQoIkdFVCIsdCxlKX0scG9zdDpmdW5jdGlvbih0LGUpe3JldHVybiBuLnNlbmQoIlBPU1QiLHQsZSl9LHNlbmQ6ZnVuY3Rpb24oZSxyLGQpe3JldHVybiBsLm9wZW4oZSx0LCEwLGMsdSksbnVsbD09aXx8cy5oYXMoImFjY2VwdCIpfHxzLnNldCgiYWNjZXB0IixpKyIsKi8qIiksbC5zZXRSZXF1ZXN0SGVhZGVyJiZzLmVhY2goKGZ1bmN0aW9uKHQsZSl7bC5zZXRSZXF1ZXN0SGVhZGVyKGUsdCl9KSksbnVsbCE9aSYmbC5vdmVycmlkZU1pbWVUeXBlJiZsLm92ZXJyaWRlTWltZVR5cGUoaSksbnVsbCE9byYmKGwucmVzcG9uc2VUeXBlPW8pLGg+MCYmKGwudGltZW91dD1oKSxudWxsPT1kJiYiZnVuY3Rpb24iPT10eXBlb2YgciYmKGQ9cixyPW51bGwpLG51bGwhPWQmJjE9PT1kLmxlbmd0aCYmKGQ9KGZ1bmN0aW9uIHAodCl7cmV0dXJuIGZ1bmN0aW9uKGUsbil7dChudWxsPT1lP246bnVsbCl9fSkoZCkpLG51bGwhPWQmJm4ub24oImVycm9yIixkKS5vbigibG9hZCIsKGZ1bmN0aW9uKHQpe2QobnVsbCx0KX0pKSxhLmNhbGwoImJlZm9yZXNlbmQiLG4sbCksbC5zZW5kKG51bGw9PXI/bnVsbDpyKSxufSxhYm9ydDpmdW5jdGlvbigpe3JldHVybiBsLmFib3J0KCksbn0sb246ZnVuY3Rpb24oKXt2YXIgdD1hLm9uLmFwcGx5KGEsYXJndW1lbnRzKTtyZXR1cm4gdD09PWE/bjp0fX0sbnVsbCE9ZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGNhbGxiYWNrOiAiK2UpO3JldHVybiBuLmdldChlKX1yZXR1cm4gbn1mdW5jdGlvbiBVMCh0LGUpe3JldHVybiBmdW5jdGlvbihuLGkpe3ZhciByPVYwKG4pLm1pbWVUeXBlKHQpLnJlc3BvbnNlKGUpO2lmKG51bGwhPWkpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBpKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBjYWxsYmFjazogIitpKTtyZXR1cm4gci5nZXQoaSl9cmV0dXJuIHJ9fXZhciBqMD1VMCgidGV4dC9odG1sIiwoZnVuY3Rpb24odCl7cmV0dXJuIGRvY3VtZW50LmNyZWF0ZVJhbmdlKCkuY3JlYXRlQ29udGV4dHVhbEZyYWdtZW50KHQucmVzcG9uc2VUZXh0KX0pKSxHMD1VMCgiYXBwbGljYXRpb24vanNvbiIsKGZ1bmN0aW9uKHQpe3JldHVybiBKU09OLnBhcnNlKHQucmVzcG9uc2VUZXh0KX0pKSxXMD1VMCgidGV4dC9wbGFpbiIsKGZ1bmN0aW9uKHQpe3JldHVybiB0LnJlc3BvbnNlVGV4dH0pKSxxMD1VMCgiYXBwbGljYXRpb24veG1sIiwoZnVuY3Rpb24odCl7dmFyIGU9dC5yZXNwb25zZVhNTDtpZighZSl0aHJvdyBuZXcgRXJyb3IoInBhcnNlIGVycm9yIik7cmV0dXJuIGV9KSk7ZnVuY3Rpb24gWTAodCxlKXtyZXR1cm4gZnVuY3Rpb24obixpLHIpe2FyZ3VtZW50cy5sZW5ndGg8MyYmKHI9aSxpPW51bGwpO3ZhciBvPVYwKG4pLm1pbWVUeXBlKHQpO3JldHVybiBvLnJvdz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9vLnJlc3BvbnNlKFgwKGUsaT10KSk6aX0sby5yb3coaSkscj9vLmdldChyKTpvfX1mdW5jdGlvbiBYMCh0LGUpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gdChuLnJlc3BvbnNlVGV4dCxlKX19dmFyICQwPVkwKCJ0ZXh0L2NzdiIsYl8pLEswPVkwKCJ0ZXh0L3RhYi1zZXBhcmF0ZWQtdmFsdWVzIixBXyk7ZnVuY3Rpb24gWjAodCxlKXtyZXR1cm4gdDxlPy0xOnQ+ZT8xOnQ+PWU/MDpOYU59ZnVuY3Rpb24gSjAodCl7cmV0dXJuIDE9PT10Lmxlbmd0aCYmKHQ9KGZ1bmN0aW9uIGUodCl7cmV0dXJuIGZ1bmN0aW9uKGUsbil7cmV0dXJuIFowKHQoZSksbil9fSkodCkpLHtsZWZ0OmZ1bmN0aW9uKGUsbixpLHIpe2ZvcihudWxsPT1pJiYoaT0wKSxudWxsPT1yJiYocj1lLmxlbmd0aCk7aTxyOyl7dmFyIG89aStyPj4+MTt0KGVbb10sbik8MD9pPW8rMTpyPW99cmV0dXJuIGl9LHJpZ2h0OmZ1bmN0aW9uKGUsbixpLHIpe2ZvcihudWxsPT1pJiYoaT0wKSxudWxsPT1yJiYocj1lLmxlbmd0aCk7aTxyOyl7dmFyIG89aStyPj4+MTt0KGVbb10sbik+MD9yPW86aT1vKzF9cmV0dXJuIGl9fX12YXIgUTA9SjAoWjApLnJpZ2h0O2Z1bmN0aW9uIHQyKHQpe3JldHVybiBudWxsPT09dD9OYU46K3R9dmFyIGUyPU1hdGguc3FydCg1MCksbjI9TWF0aC5zcXJ0KDEwKSxpMj1NYXRoLnNxcnQoMik7ZnVuY3Rpb24gcjIodCxlLG4pe3ZhciBpLHIsbyxhLHM9LTE7aWYobj0rbiwodD0rdCk9PT0oZT0rZSkmJm4+MClyZXR1cm5bdF07aWYoKGk9ZTx0KSYmKHI9dCx0PWUsZT1yKSwwPT09KGE9bzIodCxlLG4pKXx8IWlzRmluaXRlKGEpKXJldHVybltdO2lmKGE+MClmb3IodD1NYXRoLmNlaWwodC9hKSxlPU1hdGguZmxvb3IoZS9hKSxvPW5ldyBBcnJheShyPU1hdGguY2VpbChlLXQrMSkpOysrczxyOylvW3NdPSh0K3MpKmE7ZWxzZSBmb3IodD1NYXRoLmZsb29yKHQqYSksZT1NYXRoLmNlaWwoZSphKSxvPW5ldyBBcnJheShyPU1hdGguY2VpbCh0LWUrMSkpOysrczxyOylvW3NdPSh0LXMpL2E7cmV0dXJuIGkmJm8ucmV2ZXJzZSgpLG99ZnVuY3Rpb24gbzIodCxlLG4pe3ZhciBpPShlLXQpL01hdGgubWF4KDAsbikscj1NYXRoLmZsb29yKE1hdGgubG9nKGkpL01hdGguTE4xMCksbz1pL01hdGgucG93KDEwLHIpO3JldHVybiByPj0wPyhvPj1lMj8xMDpvPj1uMj81Om8+PWkyPzI6MSkqTWF0aC5wb3coMTAscik6LU1hdGgucG93KDEwLC1yKS8obz49ZTI/MTA6bz49bjI/NTpvPj1pMj8yOjEpfWZ1bmN0aW9uIGEyKHQsZSxuKXt2YXIgaT1NYXRoLmFicyhlLXQpL01hdGgubWF4KDAsbikscj1NYXRoLnBvdygxMCxNYXRoLmZsb29yKE1hdGgubG9nKGkpL01hdGguTE4xMCkpLG89aS9yO3JldHVybiBvPj1lMj9yKj0xMDpvPj1uMj9yKj01Om8+PWkyJiYocio9MiksZTx0Py1yOnJ9ZnVuY3Rpb24gczIodCxlLG4pe2lmKG51bGw9PW4mJihuPXQyKSxpPXQubGVuZ3RoKXtpZigoZT0rZSk8PTB8fGk8MilyZXR1cm4rbih0WzBdLDAsdCk7aWYoZT49MSlyZXR1cm4rbih0W2ktMV0saS0xLHQpO3ZhciBpLHI9KGktMSkqZSxvPU1hdGguZmxvb3IociksYT0rbih0W29dLG8sdCk7cmV0dXJuIGErKCtuKHRbbysxXSxvKzEsdCktYSkqKHItbyl9fXZhciBsMj0iJCI7ZnVuY3Rpb24gYzIoKXt9ZnVuY3Rpb24gdTIodCxlKXt2YXIgbj1uZXcgYzI7aWYodCBpbnN0YW5jZW9mIGMyKXQuZWFjaCgoZnVuY3Rpb24odCxlKXtuLnNldChlLHQpfSkpO2Vsc2UgaWYoQXJyYXkuaXNBcnJheSh0KSl7dmFyIGkscj0tMSxvPXQubGVuZ3RoO2lmKG51bGw9PWUpZm9yKDsrK3I8bzspbi5zZXQocix0W3JdKTtlbHNlIGZvcig7KytyPG87KW4uc2V0KGUoaT10W3JdLHIsdCksaSl9ZWxzZSBpZih0KWZvcih2YXIgYSBpbiB0KW4uc2V0KGEsdFthXSk7cmV0dXJuIG59ZnVuY3Rpb24gaDIoKXt9YzIucHJvdG90eXBlPXUyLnByb3RvdHlwZT17Y29uc3RydWN0b3I6YzIsaGFzOmZ1bmN0aW9uKHQpe3JldHVybiBsMit0IGluIHRoaXN9LGdldDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpc1tsMit0XX0sc2V0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXNbbDIrdF09ZSx0aGlzfSxyZW1vdmU6ZnVuY3Rpb24odCl7dmFyIGU9bDIrdDtyZXR1cm4gZSBpbiB0aGlzJiZkZWxldGUgdGhpc1tlXX0sY2xlYXI6ZnVuY3Rpb24oKXtmb3IodmFyIHQgaW4gdGhpcyl0WzBdPT09bDImJmRlbGV0ZSB0aGlzW3RdfSxrZXlzOmZ1bmN0aW9uKCl7dmFyIHQ9W107Zm9yKHZhciBlIGluIHRoaXMpZVswXT09PWwyJiZ0LnB1c2goZS5zbGljZSgxKSk7cmV0dXJuIHR9LHZhbHVlczpmdW5jdGlvbigpe3ZhciB0PVtdO2Zvcih2YXIgZSBpbiB0aGlzKWVbMF09PT1sMiYmdC5wdXNoKHRoaXNbZV0pO3JldHVybiB0fSxlbnRyaWVzOmZ1bmN0aW9uKCl7dmFyIHQ9W107Zm9yKHZhciBlIGluIHRoaXMpZVswXT09PWwyJiZ0LnB1c2goe2tleTplLnNsaWNlKDEpLHZhbHVlOnRoaXNbZV19KTtyZXR1cm4gdH0sc2l6ZTpmdW5jdGlvbigpe3ZhciB0PTA7Zm9yKHZhciBlIGluIHRoaXMpZVswXT09PWwyJiYrK3Q7cmV0dXJuIHR9LGVtcHR5OmZ1bmN0aW9uKCl7Zm9yKHZhciB0IGluIHRoaXMpaWYodFswXT09PWwyKXJldHVybiExO3JldHVybiEwfSxlYWNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSBpbiB0aGlzKWVbMF09PT1sMiYmdCh0aGlzW2VdLGUuc2xpY2UoMSksdGhpcyl9fTt2YXIgZDI9dTIucHJvdG90eXBlO2gyLnByb3RvdHlwZT17Y29uc3RydWN0b3I6aDIsaGFzOmQyLmhhcyxhZGQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXNbbDIrKHQrPSIiKV09dCx0aGlzfSxyZW1vdmU6ZDIucmVtb3ZlLGNsZWFyOmQyLmNsZWFyLHZhbHVlczpkMi5rZXlzLHNpemU6ZDIuc2l6ZSxlbXB0eTpkMi5lbXB0eSxlYWNoOmQyLmVhY2h9O3ZhciBwMj1BcnJheS5wcm90b3R5cGUsZjI9cDIubWFwLG0yPXAyLnNsaWNlLGcyPXtuYW1lOiJpbXBsaWNpdCJ9O2Z1bmN0aW9uIF8yKHQpe3ZhciBlPXUyKCksbj1bXSxpPWcyO2Z1bmN0aW9uIHIocil7dmFyIG89cisiIixhPWUuZ2V0KG8pO2lmKCFhKXtpZihpIT09ZzIpcmV0dXJuIGk7ZS5zZXQobyxhPW4ucHVzaChyKSl9cmV0dXJuIHRbKGEtMSkldC5sZW5ndGhdfXJldHVybiB0PW51bGw9PXQ/W106bTIuY2FsbCh0KSxyLmRvbWFpbj1mdW5jdGlvbih0KXtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gbi5zbGljZSgpO249W10sZT11MigpO2Zvcih2YXIgaSxvLGE9LTEscz10Lmxlbmd0aDsrK2E8czspZS5oYXMobz0oaT10W2FdKSsiIil8fGUuc2V0KG8sbi5wdXNoKGkpKTtyZXR1cm4gcn0sci5yYW5nZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1tMi5jYWxsKGUpLHIpOnQuc2xpY2UoKX0sci51bmtub3duPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPXQscik6aX0sci5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIF8yKCkuZG9tYWluKG4pLnJhbmdlKHQpLnVua25vd24oaSl9LHJ9ZnVuY3Rpb24geTIoKXt2YXIgdCxlLG49XzIoKS51bmtub3duKHZvaWQgMCksaT1uLmRvbWFpbixyPW4ucmFuZ2Usbz1bMCwxXSxhPSExLHM9MCxsPTAsYz0uNTtmdW5jdGlvbiB1KCl7dmFyIG49aSgpLmxlbmd0aCx1PW9bMV08b1swXSxoPW9bdS0wXSxkPW9bMS11XTt0PShkLWgpL01hdGgubWF4KDEsbi1zKzIqbCksYSYmKHQ9TWF0aC5mbG9vcih0KSksaCs9KGQtaC10KihuLXMpKSpjLGU9dCooMS1zKSxhJiYoaD1NYXRoLnJvdW5kKGgpLGU9TWF0aC5yb3VuZChlKSk7dmFyIHA9KGZ1bmN0aW9uIGYodCxlLG4pe3Q9K3QsZT0rZSxuPShyPWFyZ3VtZW50cy5sZW5ndGgpPDI/KGU9dCx0PTAsMSk6cjwzPzE6K247Zm9yKHZhciBpPS0xLHI9MHxNYXRoLm1heCgwLE1hdGguY2VpbCgoZS10KS9uKSksbz1uZXcgQXJyYXkocik7KytpPHI7KW9baV09dCtpKm47cmV0dXJuIG99KShuKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBoK3QqZX0pKTtyZXR1cm4gcih1P3AucmV2ZXJzZSgpOnApfXJldHVybiBkZWxldGUgbi51bmtub3duLG4uZG9tYWluPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpKHQpLHUoKSk6aSgpfSxuLnJhbmdlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPVsrdFswXSwrdFsxXV0sdSgpKTpvLnNsaWNlKCl9LG4ucmFuZ2VSb3VuZD1mdW5jdGlvbih0KXtyZXR1cm4gbz1bK3RbMF0sK3RbMV1dLGE9ITAsdSgpfSxuLmJhbmR3aWR0aD1mdW5jdGlvbigpe3JldHVybiBlfSxuLnN0ZXA9ZnVuY3Rpb24oKXtyZXR1cm4gdH0sbi5yb3VuZD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0hIXQsdSgpKTphfSxuLnBhZGRpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9bD1NYXRoLm1heCgwLE1hdGgubWluKDEsdCkpLHUoKSk6c30sbi5wYWRkaW5nSW5uZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9TWF0aC5tYXgoMCxNYXRoLm1pbigxLHQpKSx1KCkpOnN9LG4ucGFkZGluZ091dGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPU1hdGgubWF4KDAsTWF0aC5taW4oMSx0KSksdSgpKTpsfSxuLmFsaWduPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPU1hdGgubWF4KDAsTWF0aC5taW4oMSx0KSksdSgpKTpjfSxuLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4geTIoKS5kb21haW4oaSgpKS5yYW5nZShvKS5yb3VuZChhKS5wYWRkaW5nSW5uZXIocykucGFkZGluZ091dGVyKGwpLmFsaWduKGMpfSx1KCl9ZnVuY3Rpb24gdjIodCl7dmFyIGU9dC5jb3B5O3JldHVybiB0LnBhZGRpbmc9dC5wYWRkaW5nT3V0ZXIsZGVsZXRlIHQucGFkZGluZ0lubmVyLGRlbGV0ZSB0LnBhZGRpbmdPdXRlcix0LmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gdjIoZSgpKX0sdH1mdW5jdGlvbiBiMih0LGUsbil7dC5wcm90b3R5cGU9ZS5wcm90b3R5cGU9bixuLmNvbnN0cnVjdG9yPXR9ZnVuY3Rpb24geDIodCxlKXt2YXIgbj1PYmplY3QuY3JlYXRlKHQucHJvdG90eXBlKTtmb3IodmFyIGkgaW4gZSluW2ldPWVbaV07cmV0dXJuIG59ZnVuY3Rpb24gdzIoKXt9dmFyIFMyPS43LE0yPTEvUzIsRTI9IlxccyooWystXT9cXGQrKVxccyoiLFQyPSJcXHMqKFsrLV0/XFxkKlxcLj9cXGQrKD86W2VFXVsrLV0/XFxkKyk/KVxccyoiLEMyPSJcXHMqKFsrLV0/XFxkKlxcLj9cXGQrKD86W2VFXVsrLV0/XFxkKyk/KSVcXHMqIixBMj0vXiMoWzAtOWEtZl17Myw4fSkkLyxrMj1uZXcgUmVnRXhwKCJecmdiXFwoIitbRTIsRTIsRTJdKyJcXCkkIiksTDI9bmV3IFJlZ0V4cCgiXnJnYlxcKCIrW0MyLEMyLEMyXSsiXFwpJCIpLFAyPW5ldyBSZWdFeHAoIl5yZ2JhXFwoIitbRTIsRTIsRTIsVDJdKyJcXCkkIiksTjI9bmV3IFJlZ0V4cCgiXnJnYmFcXCgiK1tDMixDMixDMixUMl0rIlxcKSQiKSxJMj1uZXcgUmVnRXhwKCJeaHNsXFwoIitbVDIsQzIsQzJdKyJcXCkkIiksUjI9bmV3IFJlZ0V4cCgiXmhzbGFcXCgiK1tUMixDMixDMixUMl0rIlxcKSQiKSxPMj17YWxpY2VibHVlOjE1NzkyMzgzLGFudGlxdWV3aGl0ZToxNjQ0NDM3NSxhcXVhOjY1NTM1LGFxdWFtYXJpbmU6ODM4ODU2NCxhenVyZToxNTc5NDE3NSxiZWlnZToxNjExOTI2MCxiaXNxdWU6MTY3NzAyNDQsYmxhY2s6MCxibGFuY2hlZGFsbW9uZDoxNjc3MjA0NSxibHVlOjI1NSxibHVldmlvbGV0OjkwNTUyMDIsYnJvd246MTA4MjQyMzQsYnVybHl3b29kOjE0NTk2MjMxLGNhZGV0Ymx1ZTo2MjY2NTI4LGNoYXJ0cmV1c2U6ODM4ODM1MixjaG9jb2xhdGU6MTM3ODk0NzAsY29yYWw6MTY3NDQyNzIsY29ybmZsb3dlcmJsdWU6NjU5MTk4MSxjb3Juc2lsazoxNjc3NTM4OCxjcmltc29uOjE0NDIzMTAwLGN5YW46NjU1MzUsZGFya2JsdWU6MTM5LGRhcmtjeWFuOjM1NzIzLGRhcmtnb2xkZW5yb2Q6MTIwOTI5MzksZGFya2dyYXk6MTExMTkwMTcsZGFya2dyZWVuOjI1NjAwLGRhcmtncmV5OjExMTE5MDE3LGRhcmtraGFraToxMjQzMzI1OSxkYXJrbWFnZW50YTo5MTA5NjQzLGRhcmtvbGl2ZWdyZWVuOjU1OTc5OTksZGFya29yYW5nZToxNjc0NzUyMCxkYXJrb3JjaGlkOjEwMDQwMDEyLGRhcmtyZWQ6OTEwOTUwNCxkYXJrc2FsbW9uOjE1MzA4NDEwLGRhcmtzZWFncmVlbjo5NDE5OTE5LGRhcmtzbGF0ZWJsdWU6NDczNDM0NyxkYXJrc2xhdGVncmF5OjMxMDA0OTUsZGFya3NsYXRlZ3JleTozMTAwNDk1LGRhcmt0dXJxdW9pc2U6NTI5NDUsZGFya3Zpb2xldDo5Njk5NTM5LGRlZXBwaW5rOjE2NzE2OTQ3LGRlZXBza3libHVlOjQ5MTUxLGRpbWdyYXk6NjkwODI2NSxkaW1ncmV5OjY5MDgyNjUsZG9kZ2VyYmx1ZToyMDAzMTk5LGZpcmVicmljazoxMTY3NDE0NixmbG9yYWx3aGl0ZToxNjc3NTkyMCxmb3Jlc3RncmVlbjoyMjYzODQyLGZ1Y2hzaWE6MTY3MTE5MzUsZ2FpbnNib3JvOjE0NDc0NDYwLGdob3N0d2hpdGU6MTYzMTY2NzEsZ29sZDoxNjc2NjcyMCxnb2xkZW5yb2Q6MTQzMjkxMjAsZ3JheTo4NDIxNTA0LGdyZWVuOjMyNzY4LGdyZWVueWVsbG93OjExNDAzMDU1LGdyZXk6ODQyMTUwNCxob25leWRldzoxNTc5NDE2MCxob3RwaW5rOjE2NzM4NzQwLGluZGlhbnJlZDoxMzQ1ODUyNCxpbmRpZ286NDkxNTMzMCxpdm9yeToxNjc3NzIwMCxraGFraToxNTc4NzY2MCxsYXZlbmRlcjoxNTEzMjQxMCxsYXZlbmRlcmJsdXNoOjE2NzczMzY1LGxhd25ncmVlbjo4MTkwOTc2LGxlbW9uY2hpZmZvbjoxNjc3NTg4NSxsaWdodGJsdWU6MTEzOTMyNTQsbGlnaHRjb3JhbDoxNTc2MTUzNixsaWdodGN5YW46MTQ3NDU1OTksbGlnaHRnb2xkZW5yb2R5ZWxsb3c6MTY0NDgyMTAsbGlnaHRncmF5OjEzODgyMzIzLGxpZ2h0Z3JlZW46OTQ5ODI1NixsaWdodGdyZXk6MTM4ODIzMjMsbGlnaHRwaW5rOjE2NzU4NDY1LGxpZ2h0c2FsbW9uOjE2NzUyNzYyLGxpZ2h0c2VhZ3JlZW46MjE0Mjg5MCxsaWdodHNreWJsdWU6ODkwMDM0NixsaWdodHNsYXRlZ3JheTo3ODMzNzUzLGxpZ2h0c2xhdGVncmV5Ojc4MzM3NTMsbGlnaHRzdGVlbGJsdWU6MTE1ODQ3MzQsbGlnaHR5ZWxsb3c6MTY3NzcxODQsbGltZTo2NTI4MCxsaW1lZ3JlZW46MzMyOTMzMCxsaW5lbjoxNjQ0NTY3MCxtYWdlbnRhOjE2NzExOTM1LG1hcm9vbjo4Mzg4NjA4LG1lZGl1bWFxdWFtYXJpbmU6NjczNzMyMixtZWRpdW1ibHVlOjIwNSxtZWRpdW1vcmNoaWQ6MTIyMTE2NjcsbWVkaXVtcHVycGxlOjk2NjI2ODMsbWVkaXVtc2VhZ3JlZW46Mzk3ODA5NyxtZWRpdW1zbGF0ZWJsdWU6ODA4Nzc5MCxtZWRpdW1zcHJpbmdncmVlbjo2NDE1NCxtZWRpdW10dXJxdW9pc2U6NDc3MjMwMCxtZWRpdW12aW9sZXRyZWQ6MTMwNDcxNzMsbWlkbmlnaHRibHVlOjE2NDQ5MTIsbWludGNyZWFtOjE2MTIxODUwLG1pc3R5cm9zZToxNjc3MDI3Myxtb2NjYXNpbjoxNjc3MDIyOSxuYXZham93aGl0ZToxNjc2ODY4NSxuYXZ5OjEyOCxvbGRsYWNlOjE2NjQzNTU4LG9saXZlOjg0MjEzNzYsb2xpdmVkcmFiOjcwNDg3Mzksb3JhbmdlOjE2NzUzOTIwLG9yYW5nZXJlZDoxNjcyOTM0NCxvcmNoaWQ6MTQzMTU3MzQscGFsZWdvbGRlbnJvZDoxNTY1NzEzMCxwYWxlZ3JlZW46MTAwMjU4ODAscGFsZXR1cnF1b2lzZToxMTUyOTk2NixwYWxldmlvbGV0cmVkOjE0MzgxMjAzLHBhcGF5YXdoaXA6MTY3NzMwNzcscGVhY2hwdWZmOjE2NzY3NjczLHBlcnU6MTM0Njg5OTEscGluazoxNjc2MTAzNSxwbHVtOjE0NTI0NjM3LHBvd2RlcmJsdWU6MTE1OTE5MTAscHVycGxlOjgzODg3MzYscmViZWNjYXB1cnBsZTo2Njk3ODgxLHJlZDoxNjcxMTY4MCxyb3N5YnJvd246MTIzNTc1MTkscm95YWxibHVlOjQyODY5NDUsc2FkZGxlYnJvd246OTEyNzE4NyxzYWxtb246MTY0MTY4ODIsc2FuZHlicm93bjoxNjAzMjg2NCxzZWFncmVlbjozMDUwMzI3LHNlYXNoZWxsOjE2Nzc0NjM4LHNpZW5uYToxMDUwNjc5NyxzaWx2ZXI6MTI2MzIyNTYsc2t5Ymx1ZTo4OTAwMzMxLHNsYXRlYmx1ZTo2OTcwMDYxLHNsYXRlZ3JheTo3MzcyOTQ0LHNsYXRlZ3JleTo3MzcyOTQ0LHNub3c6MTY3NzU5MzAsc3ByaW5nZ3JlZW46NjU0MDcsc3RlZWxibHVlOjQ2MjA5ODAsdGFuOjEzODA4NzgwLHRlYWw6MzI4OTYsdGhpc3RsZToxNDIwNDg4OCx0b21hdG86MTY3MzcwOTUsdHVycXVvaXNlOjQyNTE4NTYsdmlvbGV0OjE1NjMxMDg2LHdoZWF0OjE2MTEzMzMxLHdoaXRlOjE2Nzc3MjE1LHdoaXRlc21va2U6MTYxMTkyODUseWVsbG93OjE2Nzc2OTYwLHllbGxvd2dyZWVuOjEwMTQ1MDc0fTtmdW5jdGlvbiB6Migpe3JldHVybiB0aGlzLnJnYigpLmZvcm1hdEhleCgpfWZ1bmN0aW9uIEQyKCl7cmV0dXJuIHRoaXMucmdiKCkuZm9ybWF0UmdiKCl9ZnVuY3Rpb24gQjIodCl7dmFyIGUsbjtyZXR1cm4gdD0odCsiIikudHJpbSgpLnRvTG93ZXJDYXNlKCksKGU9QTIuZXhlYyh0KSk/KG49ZVsxXS5sZW5ndGgsZT1wYXJzZUludChlWzFdLDE2KSw2PT09bj9IMihlKTozPT09bj9uZXcgajIoZT4+OCYxNXxlPj40JjI0MCxlPj40JjE1fDI0MCZlLCgxNSZlKTw8NHwxNSZlLDEpOjg9PT1uP0YyKGU+PjI0JjI1NSxlPj4xNiYyNTUsZT4+OCYyNTUsKDI1NSZlKS8yNTUpOjQ9PT1uP0YyKGU+PjEyJjE1fGU+PjgmMjQwLGU+PjgmMTV8ZT4+NCYyNDAsZT4+NCYxNXwyNDAmZSwoKDE1JmUpPDw0fDE1JmUpLzI1NSk6bnVsbCk6KGU9azIuZXhlYyh0KSk/bmV3IGoyKGVbMV0sZVsyXSxlWzNdLDEpOihlPUwyLmV4ZWModCkpP25ldyBqMigyNTUqZVsxXS8xMDAsMjU1KmVbMl0vMTAwLDI1NSplWzNdLzEwMCwxKTooZT1QMi5leGVjKHQpKT9GMihlWzFdLGVbMl0sZVszXSxlWzRdKTooZT1OMi5leGVjKHQpKT9GMigyNTUqZVsxXS8xMDAsMjU1KmVbMl0vMTAwLDI1NSplWzNdLzEwMCxlWzRdKTooZT1JMi5leGVjKHQpKT9ZMihlWzFdLGVbMl0vMTAwLGVbM10vMTAwLDEpOihlPVIyLmV4ZWModCkpP1kyKGVbMV0sZVsyXS8xMDAsZVszXS8xMDAsZVs0XSk6TzIuaGFzT3duUHJvcGVydHkodCk/SDIoTzJbdF0pOiJ0cmFuc3BhcmVudCI9PT10P25ldyBqMihOYU4sTmFOLE5hTiwwKTpudWxsfWZ1bmN0aW9uIEgyKHQpe3JldHVybiBuZXcgajIodD4+MTYmMjU1LHQ+PjgmMjU1LDI1NSZ0LDEpfWZ1bmN0aW9uIEYyKHQsZSxuLGkpe3JldHVybiBpPD0wJiYodD1lPW49TmFOKSxuZXcgajIodCxlLG4saSl9ZnVuY3Rpb24gVjIodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiB3Mnx8KHQ9QjIodCkpLHQ/bmV3IGoyKCh0PXQucmdiKCkpLnIsdC5nLHQuYix0Lm9wYWNpdHkpOm5ldyBqMn1mdW5jdGlvbiBVMih0LGUsbixpKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/VjIodCk6bmV3IGoyKHQsZSxuLG51bGw9PWk/MTppKX1mdW5jdGlvbiBqMih0LGUsbixpKXt0aGlzLnI9K3QsdGhpcy5nPStlLHRoaXMuYj0rbix0aGlzLm9wYWNpdHk9K2l9ZnVuY3Rpb24gRzIoKXtyZXR1cm4iIyIrcTIodGhpcy5yKStxMih0aGlzLmcpK3EyKHRoaXMuYil9ZnVuY3Rpb24gVzIoKXt2YXIgdD10aGlzLm9wYWNpdHk7cmV0dXJuKDE9PT0odD1pc05hTih0KT8xOk1hdGgubWF4KDAsTWF0aC5taW4oMSx0KSkpPyJyZ2IoIjoicmdiYSgiKStNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKHRoaXMucil8fDApKSsiLCAiK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodGhpcy5nKXx8MCkpKyIsICIrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0aGlzLmIpfHwwKSkrKDE9PT10PyIpIjoiLCAiK3QrIikiKX1mdW5jdGlvbiBxMih0KXtyZXR1cm4oKHQ9TWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0KXx8MCkpKTwxNj8iMCI6IiIpK3QudG9TdHJpbmcoMTYpfWZ1bmN0aW9uIFkyKHQsZSxuLGkpe3JldHVybiBpPD0wP3Q9ZT1uPU5hTjpuPD0wfHxuPj0xP3Q9ZT1OYU46ZTw9MCYmKHQ9TmFOKSxuZXcgJDIodCxlLG4saSl9ZnVuY3Rpb24gWDIodCl7aWYodCBpbnN0YW5jZW9mICQyKXJldHVybiBuZXcgJDIodC5oLHQucyx0LmwsdC5vcGFjaXR5KTtpZih0IGluc3RhbmNlb2YgdzJ8fCh0PUIyKHQpKSwhdClyZXR1cm4gbmV3ICQyO2lmKHQgaW5zdGFuY2VvZiAkMilyZXR1cm4gdDt2YXIgZT0odD10LnJnYigpKS5yLzI1NSxuPXQuZy8yNTUsaT10LmIvMjU1LHI9TWF0aC5taW4oZSxuLGkpLG89TWF0aC5tYXgoZSxuLGkpLGE9TmFOLHM9by1yLGw9KG8rcikvMjtyZXR1cm4gcz8oYT1lPT09bz8obi1pKS9zKzYqKG48aSk6bj09PW8/KGktZSkvcysyOihlLW4pL3MrNCxzLz1sPC41P28rcjoyLW8tcixhKj02MCk6cz1sPjAmJmw8MT8wOmEsbmV3ICQyKGEscyxsLHQub3BhY2l0eSl9ZnVuY3Rpb24gJDIodCxlLG4saSl7dGhpcy5oPSt0LHRoaXMucz0rZSx0aGlzLmw9K24sdGhpcy5vcGFjaXR5PStpfWZ1bmN0aW9uIEsyKHQsZSxuKXtyZXR1cm4gMjU1Kih0PDYwP2UrKG4tZSkqdC82MDp0PDE4MD9uOnQ8MjQwP2UrKG4tZSkqKDI0MC10KS82MDplKX1iMih3MixCMix7Y29weTpmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmFzc2lnbihuZXcgdGhpcy5jb25zdHJ1Y3Rvcix0aGlzLHQpfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJnYigpLmRpc3BsYXlhYmxlKCl9LGhleDp6Mixmb3JtYXRIZXg6ejIsZm9ybWF0SHNsOmZ1bmN0aW9uIFoyKCl7cmV0dXJuIFgyKHRoaXMpLmZvcm1hdEhzbCgpfSxmb3JtYXRSZ2I6RDIsdG9TdHJpbmc6RDJ9KSxiMihqMixVMix4Mih3Mix7YnJpZ2h0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD9NMjpNYXRoLnBvdyhNMix0KSxuZXcgajIodGhpcy5yKnQsdGhpcy5nKnQsdGhpcy5iKnQsdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/UzI6TWF0aC5wb3coUzIsdCksbmV3IGoyKHRoaXMucip0LHRoaXMuZyp0LHRoaXMuYip0LHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3JldHVybiB0aGlzfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybi0uNTw9dGhpcy5yJiZ0aGlzLnI8MjU1LjUmJi0uNTw9dGhpcy5nJiZ0aGlzLmc8MjU1LjUmJi0uNTw9dGhpcy5iJiZ0aGlzLmI8MjU1LjUmJjA8PXRoaXMub3BhY2l0eSYmdGhpcy5vcGFjaXR5PD0xfSxoZXg6RzIsZm9ybWF0SGV4OkcyLGZvcm1hdFJnYjpXMix0b1N0cmluZzpXMn0pKSxiMigkMiwoZnVuY3Rpb24gSjIodCxlLG4saSl7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP1gyKHQpOm5ldyAkMih0LGUsbixudWxsPT1pPzE6aSl9KSx4Mih3Mix7YnJpZ2h0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD9NMjpNYXRoLnBvdyhNMix0KSxuZXcgJDIodGhpcy5oLHRoaXMucyx0aGlzLmwqdCx0aGlzLm9wYWNpdHkpfSxkYXJrZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD9TMjpNYXRoLnBvdyhTMix0KSxuZXcgJDIodGhpcy5oLHRoaXMucyx0aGlzLmwqdCx0aGlzLm9wYWNpdHkpfSxyZ2I6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmglMzYwKzM2MCoodGhpcy5oPDApLGU9aXNOYU4odCl8fGlzTmFOKHRoaXMucyk/MDp0aGlzLnMsbj10aGlzLmwsaT1uKyhuPC41P246MS1uKSplLHI9MipuLWk7cmV0dXJuIG5ldyBqMihLMih0Pj0yNDA/dC0yNDA6dCsxMjAscixpKSxLMih0LHIsaSksSzIodDwxMjA/dCsyNDA6dC0xMjAscixpKSx0aGlzLm9wYWNpdHkpfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybigwPD10aGlzLnMmJnRoaXMuczw9MXx8aXNOYU4odGhpcy5zKSkmJjA8PXRoaXMubCYmdGhpcy5sPD0xJiYwPD10aGlzLm9wYWNpdHkmJnRoaXMub3BhY2l0eTw9MX0sZm9ybWF0SHNsOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcGFjaXR5O3JldHVybigxPT09KHQ9aXNOYU4odCk/MTpNYXRoLm1heCgwLE1hdGgubWluKDEsdCkpKT8iaHNsKCI6ImhzbGEoIikrKHRoaXMuaHx8MCkrIiwgIisxMDAqKHRoaXMuc3x8MCkrIiUsICIrMTAwKih0aGlzLmx8fDApKyIlIisoMT09PXQ/IikiOiIsICIrdCsiKSIpfX0pKTt2YXIgUTI9TWF0aC5QSS8xODAsdDU9MTgwL01hdGguUEksZTU9LS4xNDg2MSxuNT0xLjc4Mjc3LGk1PS0uMjkyMjcscjU9LS45MDY0OSxvNT0xLjk3Mjk0LGE1PW81KnI1LHM1PW81Km41LGw1PW41Kmk1LXI1KmU1O2Z1bmN0aW9uIGM1KHQpe2lmKHQgaW5zdGFuY2VvZiBoNSlyZXR1cm4gbmV3IGg1KHQuaCx0LnMsdC5sLHQub3BhY2l0eSk7dCBpbnN0YW5jZW9mIGoyfHwodD1WMih0KSk7dmFyIGU9dC5nLzI1NSxuPXQuYi8yNTUsaT0obDUqbithNSoodC5yLzI1NSktczUqZSkvKGw1K2E1LXM1KSxyPW4taSxvPShvNSooZS1pKS1pNSpyKS9yNSxhPU1hdGguc3FydChvKm8rcipyKS8obzUqaSooMS1pKSkscz1hP01hdGguYXRhbjIobyxyKSp0NS0xMjA6TmFOO3JldHVybiBuZXcgaDUoczwwP3MrMzYwOnMsYSxpLHQub3BhY2l0eSl9ZnVuY3Rpb24gdTUodCxlLG4saSl7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2M1KHQpOm5ldyBoNSh0LGUsbixudWxsPT1pPzE6aSl9ZnVuY3Rpb24gaDUodCxlLG4saSl7dGhpcy5oPSt0LHRoaXMucz0rZSx0aGlzLmw9K24sdGhpcy5vcGFjaXR5PStpfWZ1bmN0aW9uIGQ1KHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX1mdW5jdGlvbiBwNSh0LGUpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gdCtuKmV9fWZ1bmN0aW9uIGY1KHQpe3JldHVybiAxPT0odD0rdCk/bTU6ZnVuY3Rpb24oZSxuKXtyZXR1cm4gbi1lPyhmdW5jdGlvbiBpKHQsZSxuKXtyZXR1cm4gdD1NYXRoLnBvdyh0LG4pLGU9TWF0aC5wb3coZSxuKS10LG49MS9uLGZ1bmN0aW9uKGkpe3JldHVybiBNYXRoLnBvdyh0K2kqZSxuKX19KShlLG4sdCk6ZDUoaXNOYU4oZSk/bjplKX19ZnVuY3Rpb24gbTUodCxlKXt2YXIgbj1lLXQ7cmV0dXJuIG4/cDUodCxuKTpkNShpc05hTih0KT9lOnQpfWIyKGg1LHU1LHgyKHcyLHticmlnaHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10P00yOk1hdGgucG93KE0yLHQpLG5ldyBoNSh0aGlzLmgsdGhpcy5zLHRoaXMubCp0LHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10P1MyOk1hdGgucG93KFMyLHQpLG5ldyBoNSh0aGlzLmgsdGhpcy5zLHRoaXMubCp0LHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3ZhciB0PWlzTmFOKHRoaXMuaCk/MDoodGhpcy5oKzEyMCkqUTIsZT0rdGhpcy5sLG49aXNOYU4odGhpcy5zKT8wOnRoaXMucyplKigxLWUpLGk9TWF0aC5jb3ModCkscj1NYXRoLnNpbih0KTtyZXR1cm4gbmV3IGoyKDI1NSooZStuKihlNSppK241KnIpKSwyNTUqKGUrbiooaTUqaStyNSpyKSksMjU1KihlK24qKG81KmkpKSx0aGlzLm9wYWNpdHkpfX0pKTt2YXIgZzU9KGZ1bmN0aW9uIHQoZSl7dmFyIG49ZjUoZSk7ZnVuY3Rpb24gaSh0LGUpe3ZhciBpPW4oKHQ9VTIodCkpLnIsKGU9VTIoZSkpLnIpLHI9bih0LmcsZS5nKSxvPW4odC5iLGUuYiksYT1tNSh0Lm9wYWNpdHksZS5vcGFjaXR5KTtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHQucj1pKGUpLHQuZz1yKGUpLHQuYj1vKGUpLHQub3BhY2l0eT1hKGUpLHQrIiJ9fXJldHVybiBpLmdhbW1hPXQsaX0pKDEpO2Z1bmN0aW9uIF81KHQsZSl7ZXx8KGU9W10pO3ZhciBuLGk9dD9NYXRoLm1pbihlLmxlbmd0aCx0Lmxlbmd0aCk6MCxyPWUuc2xpY2UoKTtyZXR1cm4gZnVuY3Rpb24obyl7Zm9yKG49MDtuPGk7KytuKXJbbl09dFtuXSooMS1vKStlW25dKm87cmV0dXJuIHJ9fWZ1bmN0aW9uIHk1KHQsZSl7dmFyIG4saT1lP2UubGVuZ3RoOjAscj10P01hdGgubWluKGksdC5sZW5ndGgpOjAsbz1uZXcgQXJyYXkociksYT1uZXcgQXJyYXkoaSk7Zm9yKG49MDtuPHI7KytuKW9bbl09RTUodFtuXSxlW25dKTtmb3IoO248aTsrK24pYVtuXT1lW25dO3JldHVybiBmdW5jdGlvbih0KXtmb3Iobj0wO248cjsrK24pYVtuXT1vW25dKHQpO3JldHVybiBhfX1mdW5jdGlvbiB2NSh0LGUpe3ZhciBuPW5ldyBEYXRlO3JldHVybiB0PSt0LGU9K2UsZnVuY3Rpb24oaSl7cmV0dXJuIG4uc2V0VGltZSh0KigxLWkpK2UqaSksbn19ZnVuY3Rpb24gYjUodCxlKXtyZXR1cm4gdD0rdCxlPStlLGZ1bmN0aW9uKG4pe3JldHVybiB0KigxLW4pK2Uqbn19ZnVuY3Rpb24geDUodCxlKXt2YXIgbixpPXt9LHI9e307Zm9yKG4gaW4gbnVsbCE9PXQmJiJvYmplY3QiPT10eXBlb2YgdHx8KHQ9e30pLG51bGwhPT1lJiYib2JqZWN0Ij09dHlwZW9mIGV8fChlPXt9KSxlKW4gaW4gdD9pW25dPUU1KHRbbl0sZVtuXSk6cltuXT1lW25dO3JldHVybiBmdW5jdGlvbih0KXtmb3IobiBpbiBpKXJbbl09aVtuXSh0KTtyZXR1cm4gcn19dmFyIHc1PS9bLStdPyg/OlxkK1wuP1xkKnxcLj9cZCspKD86W2VFXVstK10/XGQrKT8vZyxTNT1uZXcgUmVnRXhwKHc1LnNvdXJjZSwiZyIpO2Z1bmN0aW9uIE01KHQsZSl7dmFyIG4saSxyLG89dzUubGFzdEluZGV4PVM1Lmxhc3RJbmRleD0wLGE9LTEscz1bXSxsPVtdO2Zvcih0Kz0iIixlKz0iIjsobj13NS5leGVjKHQpKSYmKGk9UzUuZXhlYyhlKSk7KShyPWkuaW5kZXgpPm8mJihyPWUuc2xpY2UobyxyKSxzW2FdP3NbYV0rPXI6c1srK2FdPXIpLChuPW5bMF0pPT09KGk9aVswXSk/c1thXT9zW2FdKz1pOnNbKythXT1pOihzWysrYV09bnVsbCxsLnB1c2goe2k6YSx4OmI1KG4saSl9KSksbz1TNS5sYXN0SW5kZXg7cmV0dXJuIG88ZS5sZW5ndGgmJihyPWUuc2xpY2Uobyksc1thXT9zW2FdKz1yOnNbKythXT1yKSxzLmxlbmd0aDwyP2xbMF0/KGZ1bmN0aW9uIGModCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0KGUpKyIifX0pKGxbMF0ueCk6KGZ1bmN0aW9uIHUodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fSkoZSk6KGU9bC5sZW5ndGgsZnVuY3Rpb24odCl7Zm9yKHZhciBuLGk9MDtpPGU7KytpKXNbKG49bFtpXSkuaV09bi54KHQpO3JldHVybiBzLmpvaW4oIiIpfSl9ZnVuY3Rpb24gRTUodCxlKXt2YXIgbixpPXR5cGVvZiBlO3JldHVybiBudWxsPT1lfHwiYm9vbGVhbiI9PT1pP2Q1KGUpOigibnVtYmVyIj09PWk/YjU6InN0cmluZyI9PT1pPyhuPUIyKGUpKT8oZT1uLGc1KTpNNTplIGluc3RhbmNlb2YgQjI/ZzU6ZSBpbnN0YW5jZW9mIERhdGU/djU6KGZ1bmN0aW9uIHIodCl7cmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh0KSYmISh0IGluc3RhbmNlb2YgRGF0YVZpZXcpfSkoZSk/XzU6QXJyYXkuaXNBcnJheShlKT95NToiZnVuY3Rpb24iIT10eXBlb2YgZS52YWx1ZU9mJiYiZnVuY3Rpb24iIT10eXBlb2YgZS50b1N0cmluZ3x8aXNOYU4oZSk/eDU6YjUpKHQsZSl9ZnVuY3Rpb24gVDUodCxlKXtyZXR1cm4gdD0rdCxlPStlLGZ1bmN0aW9uKG4pe3JldHVybiBNYXRoLnJvdW5kKHQqKDEtbikrZSpuKX19ZnVuY3Rpb24gQzUodCl7cmV0dXJuKGZ1bmN0aW9uIGUobil7ZnVuY3Rpb24gaShlLGkpe3ZhciByPXQoKGU9dTUoZSkpLmgsKGk9dTUoaSkpLmgpLG89bTUoZS5zLGkucyksYT1tNShlLmwsaS5sKSxzPW01KGUub3BhY2l0eSxpLm9wYWNpdHkpO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZS5oPXIodCksZS5zPW8odCksZS5sPWEoTWF0aC5wb3codCxuKSksZS5vcGFjaXR5PXModCksZSsiIn19cmV0dXJuIG49K24saS5nYW1tYT1lLGl9KSgxKX1DNSgoZnVuY3Rpb24gQTUodCxlKXt2YXIgbj1lLXQ7cmV0dXJuIG4/cDUodCxuPjE4MHx8bjwtMTgwP24tMzYwKk1hdGgucm91bmQobi8zNjApOm4pOmQ1KGlzTmFOKHQpP2U6dCl9KSk7dmFyIGs1PUM1KG01KTtmdW5jdGlvbiBMNSh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gUDUodCl7cmV0dXJuK3R9dmFyIE41PVswLDFdO2Z1bmN0aW9uIEk1KHQsZSl7cmV0dXJuKGUtPXQ9K3QpP2Z1bmN0aW9uKG4pe3JldHVybihuLXQpL2V9Okw1KGUpfWZ1bmN0aW9uIFI1KHQsZSxuLGkpe3ZhciByPXRbMF0sbz10WzFdLGE9ZVswXSxzPWVbMV07cmV0dXJuIG88cj8ocj1uKG8sciksYT1pKHMsYSkpOihyPW4ocixvKSxhPWkoYSxzKSksZnVuY3Rpb24odCl7cmV0dXJuIGEocih0KSl9fWZ1bmN0aW9uIE81KHQsZSxuLGkpe3ZhciByPU1hdGgubWluKHQubGVuZ3RoLGUubGVuZ3RoKS0xLG89bmV3IEFycmF5KHIpLGE9bmV3IEFycmF5KHIpLHM9LTE7Zm9yKHRbcl08dFswXSYmKHQ9dC5zbGljZSgpLnJldmVyc2UoKSxlPWUuc2xpY2UoKS5yZXZlcnNlKCkpOysrczxyOylvW3NdPW4odFtzXSx0W3MrMV0pLGFbc109aShlW3NdLGVbcysxXSk7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBuPVEwKHQsZSwxLHIpLTE7cmV0dXJuIGFbbl0ob1tuXShlKSl9fWZ1bmN0aW9uIHo1KHQsZSl7cmV0dXJuIGUuZG9tYWluKHQuZG9tYWluKCkpLnJhbmdlKHQucmFuZ2UoKSkuaW50ZXJwb2xhdGUodC5pbnRlcnBvbGF0ZSgpKS5jbGFtcCh0LmNsYW1wKCkpfWZ1bmN0aW9uIEQ1KHQsZSl7dmFyIG4saSxyLG89TjUsYT1ONSxzPUU1LGw9ITE7ZnVuY3Rpb24gYygpe3JldHVybiBuPU1hdGgubWluKG8ubGVuZ3RoLGEubGVuZ3RoKT4yP081OlI1LGk9cj1udWxsLHV9ZnVuY3Rpb24gdShlKXtyZXR1cm4oaXx8KGk9bihvLGEsbD8oZnVuY3Rpb24gcih0KXtyZXR1cm4gZnVuY3Rpb24oZSxuKXt2YXIgaT10KGU9K2Usbj0rbik7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiB0PD1lPzA6dD49bj8xOmkodCl9fX0pKHQpOnQscykpKSgrZSl9cmV0dXJuIHUuaW52ZXJ0PWZ1bmN0aW9uKHQpe3JldHVybihyfHwocj1uKGEsbyxJNSxsPyhmdW5jdGlvbiBpKHQpe3JldHVybiBmdW5jdGlvbihlLG4pe3ZhciBpPXQoZT0rZSxuPStuKTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIHQ8PTA/ZTp0Pj0xP246aSh0KX19fSkoZSk6ZSkpKSgrdCl9LHUuZG9tYWluPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPWYyLmNhbGwodCxQNSksYygpKTpvLnNsaWNlKCl9LHUucmFuZ2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9bTIuY2FsbCh0KSxjKCkpOmEuc2xpY2UoKX0sdS5yYW5nZVJvdW5kPWZ1bmN0aW9uKHQpe3JldHVybiBhPW0yLmNhbGwodCkscz1UNSxjKCl9LHUuY2xhbXA9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9ISF0LGMoKSk6bH0sdS5pbnRlcnBvbGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz10LGMoKSk6c30sYygpfWZ1bmN0aW9uIEI1KHQsZSl7aWYoKG49KHQ9ZT90LnRvRXhwb25lbnRpYWwoZS0xKTp0LnRvRXhwb25lbnRpYWwoKSkuaW5kZXhPZigiZSIpKTwwKXJldHVybiBudWxsO3ZhciBuLGk9dC5zbGljZSgwLG4pO3JldHVybltpLmxlbmd0aD4xP2lbMF0raS5zbGljZSgyKTppLCt0LnNsaWNlKG4rMSldfWZ1bmN0aW9uIEg1KHQpe3JldHVybih0PUI1KE1hdGguYWJzKHQpKSk/dFsxXTpOYU59dmFyIEY1LFY1PS9eKD86KC4pPyhbPD49Xl0pKT8oWytcLSggXSk/KFskI10pPygwKT8oXGQrKT8oLCk/KFwuXGQrKT8ofik/KFthLXolXSk/JC9pO2Z1bmN0aW9uIFU1KHQpe2lmKCEoZT1WNS5leGVjKHQpKSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgZm9ybWF0OiAiK3QpO3ZhciBlO3JldHVybiBuZXcgajUoe2ZpbGw6ZVsxXSxhbGlnbjplWzJdLHNpZ246ZVszXSxzeW1ib2w6ZVs0XSx6ZXJvOmVbNV0sd2lkdGg6ZVs2XSxjb21tYTplWzddLHByZWNpc2lvbjplWzhdJiZlWzhdLnNsaWNlKDEpLHRyaW06ZVs5XSx0eXBlOmVbMTBdfSl9ZnVuY3Rpb24gajUodCl7dGhpcy5maWxsPXZvaWQgMD09PXQuZmlsbD8iICI6dC5maWxsKyIiLHRoaXMuYWxpZ249dm9pZCAwPT09dC5hbGlnbj8iPiI6dC5hbGlnbisiIix0aGlzLnNpZ249dm9pZCAwPT09dC5zaWduPyItIjp0LnNpZ24rIiIsdGhpcy5zeW1ib2w9dm9pZCAwPT09dC5zeW1ib2w/IiI6dC5zeW1ib2wrIiIsdGhpcy56ZXJvPSEhdC56ZXJvLHRoaXMud2lkdGg9dm9pZCAwPT09dC53aWR0aD92b2lkIDA6K3Qud2lkdGgsdGhpcy5jb21tYT0hIXQuY29tbWEsdGhpcy5wcmVjaXNpb249dm9pZCAwPT09dC5wcmVjaXNpb24/dm9pZCAwOit0LnByZWNpc2lvbix0aGlzLnRyaW09ISF0LnRyaW0sdGhpcy50eXBlPXZvaWQgMD09PXQudHlwZT8iIjp0LnR5cGUrIiJ9ZnVuY3Rpb24gRzUodCxlKXt2YXIgbj1CNSh0LGUpO2lmKCFuKXJldHVybiB0KyIiO3ZhciBpPW5bMF0scj1uWzFdO3JldHVybiByPDA/IjAuIituZXcgQXJyYXkoLXIpLmpvaW4oIjAiKStpOmkubGVuZ3RoPnIrMT9pLnNsaWNlKDAscisxKSsiLiIraS5zbGljZShyKzEpOmkrbmV3IEFycmF5KHItaS5sZW5ndGgrMikuam9pbigiMCIpfVU1LnByb3RvdHlwZT1qNS5wcm90b3R5cGUsajUucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmlsbCt0aGlzLmFsaWduK3RoaXMuc2lnbit0aGlzLnN5bWJvbCsodGhpcy56ZXJvPyIwIjoiIikrKHZvaWQgMD09PXRoaXMud2lkdGg/IiI6TWF0aC5tYXgoMSwwfHRoaXMud2lkdGgpKSsodGhpcy5jb21tYT8iLCI6IiIpKyh2b2lkIDA9PT10aGlzLnByZWNpc2lvbj8iIjoiLiIrTWF0aC5tYXgoMCwwfHRoaXMucHJlY2lzaW9uKSkrKHRoaXMudHJpbT8ifiI6IiIpK3RoaXMudHlwZX07dmFyIFc1PXsiJSI6ZnVuY3Rpb24odCxlKXtyZXR1cm4oMTAwKnQpLnRvRml4ZWQoZSl9LGI6ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgucm91bmQodCkudG9TdHJpbmcoMil9LGM6ZnVuY3Rpb24odCl7cmV0dXJuIHQrIiJ9LGQ6ZnVuY3Rpb24gcTUodCl7cmV0dXJuIE1hdGguYWJzKHQ9TWF0aC5yb3VuZCh0KSk+PTFlMjE/dC50b0xvY2FsZVN0cmluZygiZW4iKS5yZXBsYWNlKC8sL2csIiIpOnQudG9TdHJpbmcoMTApfSxlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQudG9FeHBvbmVudGlhbChlKX0sZjpmdW5jdGlvbih0LGUpe3JldHVybiB0LnRvRml4ZWQoZSl9LGc6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC50b1ByZWNpc2lvbihlKX0sbzpmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5yb3VuZCh0KS50b1N0cmluZyg4KX0scDpmdW5jdGlvbih0LGUpe3JldHVybiBHNSgxMDAqdCxlKX0scjpHNSxzOmZ1bmN0aW9uIFk1KHQsZSl7dmFyIG49QjUodCxlKTtpZighbilyZXR1cm4gdCsiIjt2YXIgaT1uWzBdLHI9blsxXSxvPXItKEY1PTMqTWF0aC5tYXgoLTgsTWF0aC5taW4oOCxNYXRoLmZsb29yKHIvMykpKSkrMSxhPWkubGVuZ3RoO3JldHVybiBvPT09YT9pOm8+YT9pK25ldyBBcnJheShvLWErMSkuam9pbigiMCIpOm8+MD9pLnNsaWNlKDAsbykrIi4iK2kuc2xpY2Uobyk6IjAuIituZXcgQXJyYXkoMS1vKS5qb2luKCIwIikrQjUodCxNYXRoLm1heCgwLGUrby0xKSlbMF19LFg6ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgucm91bmQodCkudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCl9LHg6ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgucm91bmQodCkudG9TdHJpbmcoMTYpfX07ZnVuY3Rpb24gWDUodCl7cmV0dXJuIHR9dmFyICQ1LEs1LFo1LEo1PUFycmF5LnByb3RvdHlwZS5tYXAsUTU9WyJ5IiwieiIsImEiLCJmIiwicCIsIm4iLCLCtSIsIm0iLCIiLCJrIiwiTSIsIkciLCJUIiwiUCIsIkUiLCJaIiwiWSJdO2Z1bmN0aW9uIHQzKHQpe3ZhciBlPXZvaWQgMD09PXQuZ3JvdXBpbmd8fHZvaWQgMD09PXQudGhvdXNhbmRzP1g1OihmdW5jdGlvbiBuKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4saSl7Zm9yKHZhciByPW4ubGVuZ3RoLG89W10sYT0wLHM9dFswXSxsPTA7cj4wJiZzPjAmJihsK3MrMT5pJiYocz1NYXRoLm1heCgxLGktbCkpLG8ucHVzaChuLnN1YnN0cmluZyhyLT1zLHIrcykpLCEoKGwrPXMrMSk+aSkpOylzPXRbYT0oYSsxKSV0Lmxlbmd0aF07cmV0dXJuIG8ucmV2ZXJzZSgpLmpvaW4oZSl9fSkoSjUuY2FsbCh0Lmdyb3VwaW5nLE51bWJlciksdC50aG91c2FuZHMrIiIpLGk9dm9pZCAwPT09dC5jdXJyZW5jeT8iIjp0LmN1cnJlbmN5WzBdKyIiLHI9dm9pZCAwPT09dC5jdXJyZW5jeT8iIjp0LmN1cnJlbmN5WzFdKyIiLG89dm9pZCAwPT09dC5kZWNpbWFsPyIuIjp0LmRlY2ltYWwrIiIsYT12b2lkIDA9PT10Lm51bWVyYWxzP1g1OihmdW5jdGlvbiBzKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKC9bMC05XS9nLChmdW5jdGlvbihlKXtyZXR1cm4gdFsrZV19KSl9fSkoSjUuY2FsbCh0Lm51bWVyYWxzLFN0cmluZykpLGw9dm9pZCAwPT09dC5wZXJjZW50PyIlIjp0LnBlcmNlbnQrIiIsYz12b2lkIDA9PT10Lm1pbnVzPyItIjp0Lm1pbnVzKyIiLHU9dm9pZCAwPT09dC5uYW4/Ik5hTiI6dC5uYW4rIiI7ZnVuY3Rpb24gaCh0KXt2YXIgbj0odD1VNSh0KSkuZmlsbCxzPXQuYWxpZ24saD10LnNpZ24sZD10LnN5bWJvbCxwPXQuemVybyxmPXQud2lkdGgsbT10LmNvbW1hLGc9dC5wcmVjaXNpb24sXz10LnRyaW0seT10LnR5cGU7Im4iPT09eT8obT0hMCx5PSJnIik6VzVbeV18fCh2b2lkIDA9PT1nJiYoZz0xMiksXz0hMCx5PSJnIiksKHB8fCIwIj09PW4mJiI9Ij09PXMpJiYocD0hMCxuPSIwIixzPSI9Iik7dmFyIHY9IiQiPT09ZD9pOiIjIj09PWQmJi9bYm94WF0vLnRlc3QoeSk/IjAiK3kudG9Mb3dlckNhc2UoKToiIixiPSIkIj09PWQ/cjovWyVwXS8udGVzdCh5KT9sOiIiLHg9VzVbeV0sdz0vW2RlZmdwcnMlXS8udGVzdCh5KTtmdW5jdGlvbiBTKHQpe3ZhciBpLHIsbCxkPXYsUz1iO2lmKCJjIj09PXkpUz14KHQpK1MsdD0iIjtlbHNle3ZhciBNPSh0PSt0KTwwfHwxL3Q8MDtpZih0PWlzTmFOKHQpP3U6eChNYXRoLmFicyh0KSxnKSxfJiYodD0oZnVuY3Rpb24gRSh0KXt0OmZvcih2YXIgZSxuPXQubGVuZ3RoLGk9MSxyPS0xO2k8bjsrK2kpc3dpdGNoKHRbaV0pe2Nhc2UiLiI6cj1lPWk7YnJlYWs7Y2FzZSIwIjowPT09ciYmKHI9aSksZT1pO2JyZWFrO2RlZmF1bHQ6aWYoISt0W2ldKWJyZWFrIHQ7cj4wJiYocj0wKX1yZXR1cm4gcj4wP3Quc2xpY2UoMCxyKSt0LnNsaWNlKGUrMSk6dH0pKHQpKSxNJiYwPT0rdCYmIisiIT09aCYmKE09ITEpLGQ9KE0/IigiPT09aD9oOmM6Ii0iPT09aHx8IigiPT09aD8iIjpoKStkLFM9KCJzIj09PXk/UTVbOCtGNS8zXToiIikrUysoTSYmIigiPT09aD8iKSI6IiIpLHcpZm9yKGk9LTEscj10Lmxlbmd0aDsrK2k8cjspaWYoNDg+KGw9dC5jaGFyQ29kZUF0KGkpKXx8bD41Nyl7Uz0oNDY9PT1sP28rdC5zbGljZShpKzEpOnQuc2xpY2UoaSkpK1MsdD10LnNsaWNlKDAsaSk7YnJlYWt9fW0mJiFwJiYodD1lKHQsMS8wKSk7dmFyIFQ9ZC5sZW5ndGgrdC5sZW5ndGgrUy5sZW5ndGgsQz1UPGY/bmV3IEFycmF5KGYtVCsxKS5qb2luKG4pOiIiO3N3aXRjaChtJiZwJiYodD1lKEMrdCxDLmxlbmd0aD9mLVMubGVuZ3RoOjEvMCksQz0iIikscyl7Y2FzZSI8Ijp0PWQrdCtTK0M7YnJlYWs7Y2FzZSI9Ijp0PWQrQyt0K1M7YnJlYWs7Y2FzZSJeIjp0PUMuc2xpY2UoMCxUPUMubGVuZ3RoPj4xKStkK3QrUytDLnNsaWNlKFQpO2JyZWFrO2RlZmF1bHQ6dD1DK2QrdCtTfXJldHVybiBhKHQpfXJldHVybiBnPXZvaWQgMD09PWc/NjovW2dwcnNdLy50ZXN0KHkpP01hdGgubWF4KDEsTWF0aC5taW4oMjEsZykpOk1hdGgubWF4KDAsTWF0aC5taW4oMjAsZykpLFMudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdCsiIn0sU31yZXR1cm57Zm9ybWF0OmgsZm9ybWF0UHJlZml4OmZ1bmN0aW9uIGQodCxlKXt2YXIgbj1oKCgodD1VNSh0KSkudHlwZT0iZiIsdCkpLGk9MypNYXRoLm1heCgtOCxNYXRoLm1pbig4LE1hdGguZmxvb3IoSDUoZSkvMykpKSxyPU1hdGgucG93KDEwLC1pKSxvPVE1WzgraS8zXTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIG4ocip0KStvfX19fWZ1bmN0aW9uIGUzKHQsZSxuKXt2YXIgaSxyPXRbMF0sbz10W3QubGVuZ3RoLTFdLGE9YTIocixvLG51bGw9PWU/MTA6ZSk7c3dpdGNoKChuPVU1KG51bGw9PW4/IixmIjpuKSkudHlwZSl7Y2FzZSJzIjp2YXIgcz1NYXRoLm1heChNYXRoLmFicyhyKSxNYXRoLmFicyhvKSk7cmV0dXJuIG51bGwhPW4ucHJlY2lzaW9ufHxpc05hTihpPShmdW5jdGlvbiBsKHQsZSl7cmV0dXJuIE1hdGgubWF4KDAsMypNYXRoLm1heCgtOCxNYXRoLm1pbig4LE1hdGguZmxvb3IoSDUoZSkvMykpKS1INShNYXRoLmFicyh0KSkpfSkoYSxzKSl8fChuLnByZWNpc2lvbj1pKSxaNShuLHMpO2Nhc2UiIjpjYXNlImUiOmNhc2UiZyI6Y2FzZSJwIjpjYXNlInIiOm51bGwhPW4ucHJlY2lzaW9ufHxpc05hTihpPShmdW5jdGlvbiBjKHQsZSl7cmV0dXJuIHQ9TWF0aC5hYnModCksZT1NYXRoLmFicyhlKS10LE1hdGgubWF4KDAsSDUoZSktSDUodCkpKzF9KShhLE1hdGgubWF4KE1hdGguYWJzKHIpLE1hdGguYWJzKG8pKSkpfHwobi5wcmVjaXNpb249aS0oImUiPT09bi50eXBlKSk7YnJlYWs7Y2FzZSJmIjpjYXNlIiUiOm51bGwhPW4ucHJlY2lzaW9ufHxpc05hTihpPShmdW5jdGlvbiB1KHQpe3JldHVybiBNYXRoLm1heCgwLC1INShNYXRoLmFicyh0KSkpfSkoYSkpfHwobi5wcmVjaXNpb249aS0yKigiJSI9PT1uLnR5cGUpKX1yZXR1cm4gSzUobil9ZnVuY3Rpb24gbjModCl7dmFyIGU9dC5kb21haW47cmV0dXJuIHQudGlja3M9ZnVuY3Rpb24odCl7dmFyIG49ZSgpO3JldHVybiByMihuWzBdLG5bbi5sZW5ndGgtMV0sbnVsbD09dD8xMDp0KX0sdC50aWNrRm9ybWF0PWZ1bmN0aW9uKHQsbil7cmV0dXJuIGUzKGUoKSx0LG4pfSx0Lm5pY2U9ZnVuY3Rpb24obil7bnVsbD09biYmKG49MTApO3ZhciBpLHI9ZSgpLG89MCxhPXIubGVuZ3RoLTEscz1yW29dLGw9clthXTtyZXR1cm4gbDxzJiYoaT1zLHM9bCxsPWksaT1vLG89YSxhPWkpLChpPW8yKHMsbCxuKSk+MD9pPW8yKHM9TWF0aC5mbG9vcihzL2kpKmksbD1NYXRoLmNlaWwobC9pKSppLG4pOmk8MCYmKGk9bzIocz1NYXRoLmNlaWwocyppKS9pLGw9TWF0aC5mbG9vcihsKmkpL2ksbikpLGk+MD8ocltvXT1NYXRoLmZsb29yKHMvaSkqaSxyW2FdPU1hdGguY2VpbChsL2kpKmksZShyKSk6aTwwJiYocltvXT1NYXRoLmNlaWwocyppKS9pLHJbYV09TWF0aC5mbG9vcihsKmkpL2ksZShyKSksdH0sdH1mdW5jdGlvbiBpMyh0LGUpe3ZhciBuLGk9MCxyPSh0PXQuc2xpY2UoKSkubGVuZ3RoLTEsbz10W2ldLGE9dFtyXTtyZXR1cm4gYTxvJiYobj1pLGk9cixyPW4sbj1vLG89YSxhPW4pLHRbaV09ZS5mbG9vcihvKSx0W3JdPWUuY2VpbChhKSx0fWZ1bmN0aW9uIHIzKHQsZSl7cmV0dXJuKGU9TWF0aC5sb2coZS90KSk/ZnVuY3Rpb24obil7cmV0dXJuIE1hdGgubG9nKG4vdCkvZX06TDUoZSl9ZnVuY3Rpb24gbzModCxlKXtyZXR1cm4gdDwwP2Z1bmN0aW9uKG4pe3JldHVybi1NYXRoLnBvdygtZSxuKSpNYXRoLnBvdygtdCwxLW4pfTpmdW5jdGlvbihuKXtyZXR1cm4gTWF0aC5wb3coZSxuKSpNYXRoLnBvdyh0LDEtbil9fWZ1bmN0aW9uIGEzKHQpe3JldHVybiBpc0Zpbml0ZSh0KT8rKCIxZSIrdCk6dDwwPzA6dH1mdW5jdGlvbiBzMyh0KXtyZXR1cm4gMTA9PT10P2EzOnQ9PT1NYXRoLkU/TWF0aC5leHA6ZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGgucG93KHQsZSl9fWZ1bmN0aW9uIGwzKHQpe3JldHVybiB0PT09TWF0aC5FP01hdGgubG9nOjEwPT09dCYmTWF0aC5sb2cxMHx8Mj09PXQmJk1hdGgubG9nMnx8KHQ9TWF0aC5sb2codCksZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGgubG9nKGUpL3R9KX1mdW5jdGlvbiBjMyh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuLXQoLWUpfX1mdW5jdGlvbiB1Myh0LGUpe3JldHVybiB0PDA/LU1hdGgucG93KC10LGUpOk1hdGgucG93KHQsZSl9ZnVuY3Rpb24gaDMoKXt2YXIgdD0xLGU9RDUoKGZ1bmN0aW9uIG4oZSxpKXtyZXR1cm4oaT11MyhpLHQpLShlPXUzKGUsdCkpKT9mdW5jdGlvbihuKXtyZXR1cm4odTMobix0KS1lKS9pfTpMNShpKX0pLChmdW5jdGlvbiBpKGUsbil7cmV0dXJuIG49dTMobix0KS0oZT11MyhlLHQpKSxmdW5jdGlvbihpKXtyZXR1cm4gdTMoZStuKmksMS90KX19KSkscj1lLmRvbWFpbjtyZXR1cm4gZS5leHBvbmVudD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0rZSxyKHIoKSkpOnR9LGUuY29weT1mdW5jdGlvbigpe3JldHVybiB6NShlLGgzKCkuZXhwb25lbnQodCkpfSxuMyhlKX0hKGZ1bmN0aW9uIGQzKHQpe3JldHVybiAkNT10Myh0KSxLNT0kNS5mb3JtYXQsWjU9JDUuZm9ybWF0UHJlZml4LCQ1fSkoe2RlY2ltYWw6Ii4iLHRob3VzYW5kczoiLCIsZ3JvdXBpbmc6WzNdLGN1cnJlbmN5OlsiJCIsIiJdLG1pbnVzOiItIn0pO3ZhciBwMz1uZXcgRGF0ZSxmMz1uZXcgRGF0ZTtmdW5jdGlvbiBtMyh0LGUsbixpKXtmdW5jdGlvbiByKGUpe3JldHVybiB0KGU9MD09PWFyZ3VtZW50cy5sZW5ndGg/bmV3IERhdGU6bmV3IERhdGUoK2UpKSxlfXJldHVybiByLmZsb29yPWZ1bmN0aW9uKGUpe3JldHVybiB0KGU9bmV3IERhdGUoK2UpKSxlfSxyLmNlaWw9ZnVuY3Rpb24obil7cmV0dXJuIHQobj1uZXcgRGF0ZShuLTEpKSxlKG4sMSksdChuKSxufSxyLnJvdW5kPWZ1bmN0aW9uKHQpe3ZhciBlPXIodCksbj1yLmNlaWwodCk7cmV0dXJuIHQtZTxuLXQ/ZTpufSxyLm9mZnNldD1mdW5jdGlvbih0LG4pe3JldHVybiBlKHQ9bmV3IERhdGUoK3QpLG51bGw9PW4/MTpNYXRoLmZsb29yKG4pKSx0fSxyLnJhbmdlPWZ1bmN0aW9uKG4saSxvKXt2YXIgYSxzPVtdO2lmKG49ci5jZWlsKG4pLG89bnVsbD09bz8xOk1hdGguZmxvb3IobyksIShuPGkmJm8+MCkpcmV0dXJuIHM7ZG97cy5wdXNoKGE9bmV3IERhdGUoK24pKSxlKG4sbyksdChuKX13aGlsZShhPG4mJm48aSk7cmV0dXJuIHN9LHIuZmlsdGVyPWZ1bmN0aW9uKG4pe3JldHVybiBtMygoZnVuY3Rpb24oZSl7aWYoZT49ZSlmb3IoO3QoZSksIW4oZSk7KWUuc2V0VGltZShlLTEpfSksKGZ1bmN0aW9uKHQsaSl7aWYodD49dClpZihpPDApZm9yKDsrK2k8PTA7KWZvcig7ZSh0LC0xKSwhbih0KTspO2Vsc2UgZm9yKDstLWk+PTA7KWZvcig7ZSh0LDEpLCFuKHQpOyk7fSkpfSxuJiYoci5jb3VudD1mdW5jdGlvbihlLGkpe3JldHVybiBwMy5zZXRUaW1lKCtlKSxmMy5zZXRUaW1lKCtpKSx0KHAzKSx0KGYzKSxNYXRoLmZsb29yKG4ocDMsZjMpKX0sci5ldmVyeT1mdW5jdGlvbih0KXtyZXR1cm4gdD1NYXRoLmZsb29yKHQpLGlzRmluaXRlKHQpJiZ0PjA/dD4xP3IuZmlsdGVyKGk/ZnVuY3Rpb24oZSl7cmV0dXJuIGkoZSkldD09MH06ZnVuY3Rpb24oZSl7cmV0dXJuIHIuY291bnQoMCxlKSV0PT0wfSk6cjpudWxsfSkscn12YXIgZzM9bTMoKGZ1bmN0aW9uKCl7fSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRUaW1lKCt0K2UpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUtdH0pKTtnMy5ldmVyeT1mdW5jdGlvbih0KXtyZXR1cm4gdD1NYXRoLmZsb29yKHQpLGlzRmluaXRlKHQpJiZ0PjA/dD4xP20zKChmdW5jdGlvbihlKXtlLnNldFRpbWUoTWF0aC5mbG9vcihlL3QpKnQpfSksKGZ1bmN0aW9uKGUsbil7ZS5zZXRUaW1lKCtlK24qdCl9KSwoZnVuY3Rpb24oZSxuKXtyZXR1cm4obi1lKS90fSkpOmczOm51bGx9O3ZhciBfMz1nMyx5Mz0xZTMsdjM9NmU0LGIzPTM2ZTUseDM9ODY0ZTUsdzM9NjA0OGU1LFMzPW0zKChmdW5jdGlvbih0KXt0LnNldFRpbWUodC10LmdldE1pbGxpc2Vjb25kcygpKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0VGltZSgrdCtlKnkzKX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQpL3kzfSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFVUQ1NlY29uZHMoKX0pKSxNMz1tMygoZnVuY3Rpb24odCl7dC5zZXRUaW1lKHQtdC5nZXRNaWxsaXNlY29uZHMoKS10LmdldFNlY29uZHMoKSp5Myl9KSwoZnVuY3Rpb24odCxlKXt0LnNldFRpbWUoK3QrZSp2Myl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4oZS10KS92M30pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRNaW51dGVzKCl9KSksRTM9bTMoKGZ1bmN0aW9uKHQpe3Quc2V0VGltZSh0LXQuZ2V0TWlsbGlzZWNvbmRzKCktdC5nZXRTZWNvbmRzKCkqeTMtdC5nZXRNaW51dGVzKCkqdjMpfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRUaW1lKCt0K2UqYjMpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdCkvYjN9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0SG91cnMoKX0pKSxUMz1tMygoZnVuY3Rpb24odCl7dC5zZXRIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0RGF0ZSh0LmdldERhdGUoKStlKX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQtKGUuZ2V0VGltZXpvbmVPZmZzZXQoKS10LmdldFRpbWV6b25lT2Zmc2V0KCkpKnYzKS94M30pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXREYXRlKCktMX0pKTtmdW5jdGlvbiBDMyh0KXtyZXR1cm4gbTMoKGZ1bmN0aW9uKGUpe2Uuc2V0RGF0ZShlLmdldERhdGUoKS0oZS5nZXREYXkoKSs3LXQpJTcpLGUuc2V0SG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldERhdGUodC5nZXREYXRlKCkrNyplKX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQtKGUuZ2V0VGltZXpvbmVPZmZzZXQoKS10LmdldFRpbWV6b25lT2Zmc2V0KCkpKnYzKS93M30pKX12YXIgQTM9QzMoMCksazM9QzMoMSk7QzMoMiksQzMoMyk7dmFyIEwzPUMzKDQpO0MzKDUpLEMzKDYpO3ZhciBQMz1tMygoZnVuY3Rpb24odCl7dC5zZXREYXRlKDEpLHQuc2V0SG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldE1vbnRoKHQuZ2V0TW9udGgoKStlKX0pLChmdW5jdGlvbih0LGUpe3JldHVybiBlLmdldE1vbnRoKCktdC5nZXRNb250aCgpKzEyKihlLmdldEZ1bGxZZWFyKCktdC5nZXRGdWxsWWVhcigpKX0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRNb250aCgpfSkpLE4zPW0zKChmdW5jdGlvbih0KXt0LnNldE1vbnRoKDAsMSksdC5zZXRIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0RnVsbFllYXIodC5nZXRGdWxsWWVhcigpK2UpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUuZ2V0RnVsbFllYXIoKS10LmdldEZ1bGxZZWFyKCl9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0RnVsbFllYXIoKX0pKTtOMy5ldmVyeT1mdW5jdGlvbih0KXtyZXR1cm4gaXNGaW5pdGUodD1NYXRoLmZsb29yKHQpKSYmdD4wP20zKChmdW5jdGlvbihlKXtlLnNldEZ1bGxZZWFyKE1hdGguZmxvb3IoZS5nZXRGdWxsWWVhcigpL3QpKnQpLGUuc2V0TW9udGgoMCwxKSxlLnNldEhvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKGUsbil7ZS5zZXRGdWxsWWVhcihlLmdldEZ1bGxZZWFyKCkrbip0KX0pKTpudWxsfTt2YXIgSTM9TjMsUjM9bTMoKGZ1bmN0aW9uKHQpe3Quc2V0VVRDU2Vjb25kcygwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRUaW1lKCt0K2UqdjMpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdCkvdjN9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0VVRDTWludXRlcygpfSkpLE8zPW0zKChmdW5jdGlvbih0KXt0LnNldFVUQ01pbnV0ZXMoMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRUaW1lKCt0K2UqYjMpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdCkvYjN9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0VVRDSG91cnMoKX0pKSx6Mz1tMygoZnVuY3Rpb24odCl7dC5zZXRVVENIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0VVRDRGF0ZSh0LmdldFVUQ0RhdGUoKStlKX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQpL3gzfSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFVUQ0RhdGUoKS0xfSkpO2Z1bmN0aW9uIEQzKHQpe3JldHVybiBtMygoZnVuY3Rpb24oZSl7ZS5zZXRVVENEYXRlKGUuZ2V0VVRDRGF0ZSgpLShlLmdldFVUQ0RheSgpKzctdCklNyksZS5zZXRVVENIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0VVRDRGF0ZSh0LmdldFVUQ0RhdGUoKSs3KmUpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdCkvdzN9KSl9dmFyIEIzPUQzKDApLEgzPUQzKDEpO0QzKDIpLEQzKDMpO3ZhciBGMz1EMyg0KTtEMyg1KSxEMyg2KTt2YXIgVjM9bTMoKGZ1bmN0aW9uKHQpe3Quc2V0VVRDRGF0ZSgxKSx0LnNldFVUQ0hvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRVVENNb250aCh0LmdldFVUQ01vbnRoKCkrZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5nZXRVVENNb250aCgpLXQuZ2V0VVRDTW9udGgoKSsxMiooZS5nZXRVVENGdWxsWWVhcigpLXQuZ2V0VVRDRnVsbFllYXIoKSl9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0VVRDTW9udGgoKX0pKSxVMz1tMygoZnVuY3Rpb24odCl7dC5zZXRVVENNb250aCgwLDEpLHQuc2V0VVRDSG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldFVUQ0Z1bGxZZWFyKHQuZ2V0VVRDRnVsbFllYXIoKStlKX0pLChmdW5jdGlvbih0LGUpe3JldHVybiBlLmdldFVUQ0Z1bGxZZWFyKCktdC5nZXRVVENGdWxsWWVhcigpfSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFVUQ0Z1bGxZZWFyKCl9KSk7VTMuZXZlcnk9ZnVuY3Rpb24odCl7cmV0dXJuIGlzRmluaXRlKHQ9TWF0aC5mbG9vcih0KSkmJnQ+MD9tMygoZnVuY3Rpb24oZSl7ZS5zZXRVVENGdWxsWWVhcihNYXRoLmZsb29yKGUuZ2V0VVRDRnVsbFllYXIoKS90KSp0KSxlLnNldFVUQ01vbnRoKDAsMSksZS5zZXRVVENIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbihlLG4pe2Uuc2V0VVRDRnVsbFllYXIoZS5nZXRVVENGdWxsWWVhcigpK24qdCl9KSk6bnVsbH07dmFyIGozPVUzO2Z1bmN0aW9uIEczKHQpe2lmKDA8PXQueSYmdC55PDEwMCl7dmFyIGU9bmV3IERhdGUoLTEsdC5tLHQuZCx0LkgsdC5NLHQuUyx0LkwpO3JldHVybiBlLnNldEZ1bGxZZWFyKHQueSksZX1yZXR1cm4gbmV3IERhdGUodC55LHQubSx0LmQsdC5ILHQuTSx0LlMsdC5MKX1mdW5jdGlvbiBXMyh0KXtpZigwPD10LnkmJnQueTwxMDApe3ZhciBlPW5ldyBEYXRlKERhdGUuVVRDKC0xLHQubSx0LmQsdC5ILHQuTSx0LlMsdC5MKSk7cmV0dXJuIGUuc2V0VVRDRnVsbFllYXIodC55KSxlfXJldHVybiBuZXcgRGF0ZShEYXRlLlVUQyh0LnksdC5tLHQuZCx0LkgsdC5NLHQuUyx0LkwpKX1mdW5jdGlvbiBxMyh0LGUsbil7cmV0dXJue3k6dCxtOmUsZDpuLEg6MCxNOjAsUzowLEw6MH19dmFyIFkzLFgzLCQzLEszPXsiLSI6IiIsXzoiICIsMDoiMCJ9LFozPS9eXHMqXGQrLyxKMz0vXiUvLFEzPS9bXFxeJCorP3xbXF0oKS57fV0vZztmdW5jdGlvbiB0NCh0LGUsbil7dmFyIGk9dDwwPyItIjoiIixyPShpPy10OnQpKyIiLG89ci5sZW5ndGg7cmV0dXJuIGkrKG88bj9uZXcgQXJyYXkobi1vKzEpLmpvaW4oZSkrcjpyKX1mdW5jdGlvbiBlNCh0KXtyZXR1cm4gdC5yZXBsYWNlKFEzLCJcXCQmIil9ZnVuY3Rpb24gbjQodCl7cmV0dXJuIG5ldyBSZWdFeHAoIl4oPzoiK3QubWFwKGU0KS5qb2luKCJ8IikrIikiLCJpIil9ZnVuY3Rpb24gaTQodCl7Zm9yKHZhciBlPXt9LG49LTEsaT10Lmxlbmd0aDsrK248aTspZVt0W25dLnRvTG93ZXJDYXNlKCldPW47cmV0dXJuIGV9ZnVuY3Rpb24gcjQodCxlLG4pe3ZhciBpPVozLmV4ZWMoZS5zbGljZShuLG4rMSkpO3JldHVybiBpPyh0Lnc9K2lbMF0sbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gbzQodCxlLG4pe3ZhciBpPVozLmV4ZWMoZS5zbGljZShuLG4rMSkpO3JldHVybiBpPyh0LnU9K2lbMF0sbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gYTQodCxlLG4pe3ZhciBpPVozLmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiBpPyh0LlU9K2lbMF0sbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gczQodCxlLG4pe3ZhciBpPVozLmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiBpPyh0LlY9K2lbMF0sbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gbDQodCxlLG4pe3ZhciBpPVozLmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiBpPyh0Llc9K2lbMF0sbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gYzQodCxlLG4pe3ZhciBpPVozLmV4ZWMoZS5zbGljZShuLG4rNCkpO3JldHVybiBpPyh0Lnk9K2lbMF0sbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gdTQodCxlLG4pe3ZhciBpPVozLmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiBpPyh0Lnk9K2lbMF0rKCtpWzBdPjY4PzE5MDA6MmUzKSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBoNCh0LGUsbil7dmFyIGk9L14oWil8KFsrLV1cZFxkKSg/Ojo/KFxkXGQpKT8vLmV4ZWMoZS5zbGljZShuLG4rNikpO3JldHVybiBpPyh0Llo9aVsxXT8wOi0oaVsyXSsoaVszXXx8IjAwIikpLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIGQ0KHQsZSxuKXt2YXIgaT1aMy5leGVjKGUuc2xpY2UobixuKzEpKTtyZXR1cm4gaT8odC5xPTMqaVswXS0zLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIHA0KHQsZSxuKXt2YXIgaT1aMy5leGVjKGUuc2xpY2UobixuKzIpKTtyZXR1cm4gaT8odC5tPWlbMF0tMSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBmNCh0LGUsbil7dmFyIGk9WjMuZXhlYyhlLnNsaWNlKG4sbisyKSk7cmV0dXJuIGk/KHQuZD0raVswXSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBtNCh0LGUsbil7dmFyIGk9WjMuZXhlYyhlLnNsaWNlKG4sbiszKSk7cmV0dXJuIGk/KHQubT0wLHQuZD0raVswXSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBnNCh0LGUsbil7dmFyIGk9WjMuZXhlYyhlLnNsaWNlKG4sbisyKSk7cmV0dXJuIGk/KHQuSD0raVswXSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBfNCh0LGUsbil7dmFyIGk9WjMuZXhlYyhlLnNsaWNlKG4sbisyKSk7cmV0dXJuIGk/KHQuTT0raVswXSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiB5NCh0LGUsbil7dmFyIGk9WjMuZXhlYyhlLnNsaWNlKG4sbisyKSk7cmV0dXJuIGk/KHQuUz0raVswXSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiB2NCh0LGUsbil7dmFyIGk9WjMuZXhlYyhlLnNsaWNlKG4sbiszKSk7cmV0dXJuIGk/KHQuTD0raVswXSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBiNCh0LGUsbil7dmFyIGk9WjMuZXhlYyhlLnNsaWNlKG4sbis2KSk7cmV0dXJuIGk/KHQuTD1NYXRoLmZsb29yKGlbMF0vMWUzKSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiB4NCh0LGUsbil7dmFyIGk9SjMuZXhlYyhlLnNsaWNlKG4sbisxKSk7cmV0dXJuIGk/bitpWzBdLmxlbmd0aDotMX1mdW5jdGlvbiB3NCh0LGUsbil7dmFyIGk9WjMuZXhlYyhlLnNsaWNlKG4pKTtyZXR1cm4gaT8odC5RPStpWzBdLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIFM0KHQsZSxuKXt2YXIgaT1aMy5leGVjKGUuc2xpY2UobikpO3JldHVybiBpPyh0LnM9K2lbMF0sbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gTTQodCxlKXtyZXR1cm4gdDQodC5nZXREYXRlKCksZSwyKX1mdW5jdGlvbiBFNCh0LGUpe3JldHVybiB0NCh0LmdldEhvdXJzKCksZSwyKX1mdW5jdGlvbiBUNCh0LGUpe3JldHVybiB0NCh0LmdldEhvdXJzKCklMTJ8fDEyLGUsMil9ZnVuY3Rpb24gQzQodCxlKXtyZXR1cm4gdDQoMStUMy5jb3VudChJMyh0KSx0KSxlLDMpfWZ1bmN0aW9uIEE0KHQsZSl7cmV0dXJuIHQ0KHQuZ2V0TWlsbGlzZWNvbmRzKCksZSwzKX1mdW5jdGlvbiBrNCh0LGUpe3JldHVybiBBNCh0LGUpKyIwMDAifWZ1bmN0aW9uIEw0KHQsZSl7cmV0dXJuIHQ0KHQuZ2V0TW9udGgoKSsxLGUsMil9ZnVuY3Rpb24gUDQodCxlKXtyZXR1cm4gdDQodC5nZXRNaW51dGVzKCksZSwyKX1mdW5jdGlvbiBONCh0LGUpe3JldHVybiB0NCh0LmdldFNlY29uZHMoKSxlLDIpfWZ1bmN0aW9uIEk0KHQpe3ZhciBlPXQuZ2V0RGF5KCk7cmV0dXJuIDA9PT1lPzc6ZX1mdW5jdGlvbiBSNCh0LGUpe3JldHVybiB0NChBMy5jb3VudChJMyh0KS0xLHQpLGUsMil9ZnVuY3Rpb24gTzQodCl7dmFyIGU9dC5nZXREYXkoKTtyZXR1cm4gZT49NHx8MD09PWU/TDModCk6TDMuY2VpbCh0KX1mdW5jdGlvbiB6NCh0LGUpe3JldHVybiB0PU80KHQpLHQ0KEwzLmNvdW50KEkzKHQpLHQpKyg0PT09STModCkuZ2V0RGF5KCkpLGUsMil9ZnVuY3Rpb24gRDQodCl7cmV0dXJuIHQuZ2V0RGF5KCl9ZnVuY3Rpb24gQjQodCxlKXtyZXR1cm4gdDQoazMuY291bnQoSTModCktMSx0KSxlLDIpfWZ1bmN0aW9uIEg0KHQsZSl7cmV0dXJuIHQ0KHQuZ2V0RnVsbFllYXIoKSUxMDAsZSwyKX1mdW5jdGlvbiBGNCh0LGUpe3JldHVybiB0NCgodD1PNCh0KSkuZ2V0RnVsbFllYXIoKSUxMDAsZSwyKX1mdW5jdGlvbiBWNCh0LGUpe3JldHVybiB0NCh0LmdldEZ1bGxZZWFyKCklMWU0LGUsNCl9ZnVuY3Rpb24gVTQodCxlKXt2YXIgbj10LmdldERheSgpO3JldHVybiB0NCgodD1uPj00fHwwPT09bj9MMyh0KTpMMy5jZWlsKHQpKS5nZXRGdWxsWWVhcigpJTFlNCxlLDQpfWZ1bmN0aW9uIGo0KHQpe3ZhciBlPXQuZ2V0VGltZXpvbmVPZmZzZXQoKTtyZXR1cm4oZT4wPyItIjooZSo9LTEsIisiKSkrdDQoZS82MHwwLCIwIiwyKSt0NChlJTYwLCIwIiwyKX1mdW5jdGlvbiBHNCh0LGUpe3JldHVybiB0NCh0LmdldFVUQ0RhdGUoKSxlLDIpfWZ1bmN0aW9uIFc0KHQsZSl7cmV0dXJuIHQ0KHQuZ2V0VVRDSG91cnMoKSxlLDIpfWZ1bmN0aW9uIHE0KHQsZSl7cmV0dXJuIHQ0KHQuZ2V0VVRDSG91cnMoKSUxMnx8MTIsZSwyKX1mdW5jdGlvbiBZNCh0LGUpe3JldHVybiB0NCgxK3ozLmNvdW50KGozKHQpLHQpLGUsMyl9ZnVuY3Rpb24gWDQodCxlKXtyZXR1cm4gdDQodC5nZXRVVENNaWxsaXNlY29uZHMoKSxlLDMpfWZ1bmN0aW9uICQ0KHQsZSl7cmV0dXJuIFg0KHQsZSkrIjAwMCJ9ZnVuY3Rpb24gSzQodCxlKXtyZXR1cm4gdDQodC5nZXRVVENNb250aCgpKzEsZSwyKX1mdW5jdGlvbiBaNCh0LGUpe3JldHVybiB0NCh0LmdldFVUQ01pbnV0ZXMoKSxlLDIpfWZ1bmN0aW9uIEo0KHQsZSl7cmV0dXJuIHQ0KHQuZ2V0VVRDU2Vjb25kcygpLGUsMil9ZnVuY3Rpb24gUTQodCl7dmFyIGU9dC5nZXRVVENEYXkoKTtyZXR1cm4gMD09PWU/NzplfWZ1bmN0aW9uIHQ2KHQsZSl7cmV0dXJuIHQ0KEIzLmNvdW50KGozKHQpLTEsdCksZSwyKX1mdW5jdGlvbiBlNih0KXt2YXIgZT10LmdldFVUQ0RheSgpO3JldHVybiBlPj00fHwwPT09ZT9GMyh0KTpGMy5jZWlsKHQpfWZ1bmN0aW9uIG42KHQsZSl7cmV0dXJuIHQ9ZTYodCksdDQoRjMuY291bnQoajModCksdCkrKDQ9PT1qMyh0KS5nZXRVVENEYXkoKSksZSwyKX1mdW5jdGlvbiBpNih0KXtyZXR1cm4gdC5nZXRVVENEYXkoKX1mdW5jdGlvbiByNih0LGUpe3JldHVybiB0NChIMy5jb3VudChqMyh0KS0xLHQpLGUsMil9ZnVuY3Rpb24gbzYodCxlKXtyZXR1cm4gdDQodC5nZXRVVENGdWxsWWVhcigpJTEwMCxlLDIpfWZ1bmN0aW9uIGE2KHQsZSl7cmV0dXJuIHQ0KCh0PWU2KHQpKS5nZXRVVENGdWxsWWVhcigpJTEwMCxlLDIpfWZ1bmN0aW9uIHM2KHQsZSl7cmV0dXJuIHQ0KHQuZ2V0VVRDRnVsbFllYXIoKSUxZTQsZSw0KX1mdW5jdGlvbiBsNih0LGUpe3ZhciBuPXQuZ2V0VVRDRGF5KCk7cmV0dXJuIHQ0KCh0PW4+PTR8fDA9PT1uP0YzKHQpOkYzLmNlaWwodCkpLmdldFVUQ0Z1bGxZZWFyKCklMWU0LGUsNCl9ZnVuY3Rpb24gYzYoKXtyZXR1cm4iKzAwMDAifWZ1bmN0aW9uIHU2KCl7cmV0dXJuIiUifWZ1bmN0aW9uIGg2KHQpe3JldHVybit0fWZ1bmN0aW9uIGQ2KHQpe3JldHVybiBNYXRoLmZsb29yKCt0LzFlMyl9IShmdW5jdGlvbiBwNih0KXtyZXR1cm4gWTM9KGZ1bmN0aW9uIGUodCl7dmFyIGU9dC5kYXRlVGltZSxuPXQuZGF0ZSxpPXQudGltZSxyPXQucGVyaW9kcyxvPXQuZGF5cyxhPXQuc2hvcnREYXlzLHM9dC5tb250aHMsbD10LnNob3J0TW9udGhzLGM9bjQociksdT1pNChyKSxoPW40KG8pLGQ9aTQobykscD1uNChhKSxmPWk0KGEpLG09bjQocyksZz1pNChzKSxfPW40KGwpLHk9aTQobCksdj17YTpmdW5jdGlvbiBiKHQpe3JldHVybiBhW3QuZ2V0RGF5KCldfSxBOmZ1bmN0aW9uIHgodCl7cmV0dXJuIG9bdC5nZXREYXkoKV19LGI6ZnVuY3Rpb24gdyh0KXtyZXR1cm4gbFt0LmdldE1vbnRoKCldfSxCOmZ1bmN0aW9uIFModCl7cmV0dXJuIHNbdC5nZXRNb250aCgpXX0sYzpudWxsLGQ6TTQsZTpNNCxmOms0LGc6RjQsRzpVNCxIOkU0LEk6VDQsajpDNCxMOkE0LG06TDQsTTpQNCxwOmZ1bmN0aW9uIE0odCl7cmV0dXJuIHJbKyh0LmdldEhvdXJzKCk+PTEyKV19LHE6ZnVuY3Rpb24gRSh0KXtyZXR1cm4gMSt+fih0LmdldE1vbnRoKCkvMyl9LFE6aDYsczpkNixTOk40LHU6STQsVTpSNCxWOno0LHc6RDQsVzpCNCx4Om51bGwsWDpudWxsLHk6SDQsWTpWNCxaOmo0LCIlIjp1Nn0sVD17YTpmdW5jdGlvbiBDKHQpe3JldHVybiBhW3QuZ2V0VVRDRGF5KCldfSxBOmZ1bmN0aW9uIEEodCl7cmV0dXJuIG9bdC5nZXRVVENEYXkoKV19LGI6ZnVuY3Rpb24gayh0KXtyZXR1cm4gbFt0LmdldFVUQ01vbnRoKCldfSxCOmZ1bmN0aW9uIEwodCl7cmV0dXJuIHNbdC5nZXRVVENNb250aCgpXX0sYzpudWxsLGQ6RzQsZTpHNCxmOiQ0LGc6YTYsRzpsNixIOlc0LEk6cTQsajpZNCxMOlg0LG06SzQsTTpaNCxwOmZ1bmN0aW9uIFAodCl7cmV0dXJuIHJbKyh0LmdldFVUQ0hvdXJzKCk+PTEyKV19LHE6ZnVuY3Rpb24gTih0KXtyZXR1cm4gMSt+fih0LmdldFVUQ01vbnRoKCkvMyl9LFE6aDYsczpkNixTOko0LHU6UTQsVTp0NixWOm42LHc6aTYsVzpyNix4Om51bGwsWDpudWxsLHk6bzYsWTpzNixaOmM2LCIlIjp1Nn0sST17YTpmdW5jdGlvbiBSKHQsZSxuKXt2YXIgaT1wLmV4ZWMoZS5zbGljZShuKSk7cmV0dXJuIGk/KHQudz1mW2lbMF0udG9Mb3dlckNhc2UoKV0sbitpWzBdLmxlbmd0aCk6LTF9LEE6ZnVuY3Rpb24gTyh0LGUsbil7dmFyIGk9aC5leGVjKGUuc2xpY2UobikpO3JldHVybiBpPyh0Lnc9ZFtpWzBdLnRvTG93ZXJDYXNlKCldLG4raVswXS5sZW5ndGgpOi0xfSxiOmZ1bmN0aW9uIHoodCxlLG4pe3ZhciBpPV8uZXhlYyhlLnNsaWNlKG4pKTtyZXR1cm4gaT8odC5tPXlbaVswXS50b0xvd2VyQ2FzZSgpXSxuK2lbMF0ubGVuZ3RoKTotMX0sQjpmdW5jdGlvbiBEKHQsZSxuKXt2YXIgaT1tLmV4ZWMoZS5zbGljZShuKSk7cmV0dXJuIGk/KHQubT1nW2lbMF0udG9Mb3dlckNhc2UoKV0sbitpWzBdLmxlbmd0aCk6LTF9LGM6ZnVuY3Rpb24gQih0LG4saSl7cmV0dXJuIEcodCxlLG4saSl9LGQ6ZjQsZTpmNCxmOmI0LGc6dTQsRzpjNCxIOmc0LEk6ZzQsajptNCxMOnY0LG06cDQsTTpfNCxwOmZ1bmN0aW9uIEgodCxlLG4pe3ZhciBpPWMuZXhlYyhlLnNsaWNlKG4pKTtyZXR1cm4gaT8odC5wPXVbaVswXS50b0xvd2VyQ2FzZSgpXSxuK2lbMF0ubGVuZ3RoKTotMX0scTpkNCxROnc0LHM6UzQsUzp5NCx1Om80LFU6YTQsVjpzNCx3OnI0LFc6bDQseDpmdW5jdGlvbiBGKHQsZSxpKXtyZXR1cm4gRyh0LG4sZSxpKX0sWDpmdW5jdGlvbiBWKHQsZSxuKXtyZXR1cm4gRyh0LGksZSxuKX0seTp1NCxZOmM0LFo6aDQsIiUiOng0fTtmdW5jdGlvbiBVKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciBpLHIsbyxhPVtdLHM9LTEsbD0wLGM9dC5sZW5ndGg7Zm9yKG4gaW5zdGFuY2VvZiBEYXRlfHwobj1uZXcgRGF0ZSgrbikpOysrczxjOykzNz09PXQuY2hhckNvZGVBdChzKSYmKGEucHVzaCh0LnNsaWNlKGwscykpLG51bGwhPShyPUszW2k9dC5jaGFyQXQoKytzKV0pP2k9dC5jaGFyQXQoKytzKTpyPSJlIj09PWk/IiAiOiIwIiwobz1lW2ldKSYmKGk9byhuLHIpKSxhLnB1c2goaSksbD1zKzEpO3JldHVybiBhLnB1c2godC5zbGljZShsLHMpKSxhLmpvaW4oIiIpfX1mdW5jdGlvbiBqKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciBpLHIsbz1xMygxOTAwLHZvaWQgMCwxKTtpZihHKG8sdCxuKz0iIiwwKSE9bi5sZW5ndGgpcmV0dXJuIG51bGw7aWYoIlEiaW4gbylyZXR1cm4gbmV3IERhdGUoby5RKTtpZigicyJpbiBvKXJldHVybiBuZXcgRGF0ZSgxZTMqby5zKygiTCJpbiBvP28uTDowKSk7aWYoZSYmISgiWiJpbiBvKSYmKG8uWj0wKSwicCJpbiBvJiYoby5IPW8uSCUxMisxMipvLnApLHZvaWQgMD09PW8ubSYmKG8ubT0icSJpbiBvP28ucTowKSwiViJpbiBvKXtpZihvLlY8MXx8by5WPjUzKXJldHVybiBudWxsOyJ3ImluIG98fChvLnc9MSksIloiaW4gbz8ocj0oaT1XMyhxMyhvLnksMCwxKSkpLmdldFVUQ0RheSgpLGk9cj40fHwwPT09cj9IMy5jZWlsKGkpOkgzKGkpLGk9ejMub2Zmc2V0KGksNyooby5WLTEpKSxvLnk9aS5nZXRVVENGdWxsWWVhcigpLG8ubT1pLmdldFVUQ01vbnRoKCksby5kPWkuZ2V0VVRDRGF0ZSgpKyhvLncrNiklNyk6KHI9KGk9RzMocTMoby55LDAsMSkpKS5nZXREYXkoKSxpPXI+NHx8MD09PXI/azMuY2VpbChpKTprMyhpKSxpPVQzLm9mZnNldChpLDcqKG8uVi0xKSksby55PWkuZ2V0RnVsbFllYXIoKSxvLm09aS5nZXRNb250aCgpLG8uZD1pLmdldERhdGUoKSsoby53KzYpJTcpfWVsc2UoIlciaW4gb3x8IlUiaW4gbykmJigidyJpbiBvfHwoby53PSJ1ImluIG8/by51JTc6IlciaW4gbz8xOjApLHI9IloiaW4gbz9XMyhxMyhvLnksMCwxKSkuZ2V0VVRDRGF5KCk6RzMocTMoby55LDAsMSkpLmdldERheSgpLG8ubT0wLG8uZD0iVyJpbiBvPyhvLncrNiklNys3Km8uVy0ocis1KSU3Om8udys3Km8uVS0ocis2KSU3KTtyZXR1cm4iWiJpbiBvPyhvLkgrPW8uWi8xMDB8MCxvLk0rPW8uWiUxMDAsVzMobykpOkczKG8pfX1mdW5jdGlvbiBHKHQsZSxuLGkpe2Zvcih2YXIgcixvLGE9MCxzPWUubGVuZ3RoLGw9bi5sZW5ndGg7YTxzOyl7aWYoaT49bClyZXR1cm4tMTtpZigzNz09PShyPWUuY2hhckNvZGVBdChhKyspKSl7aWYocj1lLmNoYXJBdChhKyspLCEobz1JW3IgaW4gSzM/ZS5jaGFyQXQoYSsrKTpyXSl8fChpPW8odCxuLGkpKTwwKXJldHVybi0xfWVsc2UgaWYociE9bi5jaGFyQ29kZUF0KGkrKykpcmV0dXJuLTF9cmV0dXJuIGl9cmV0dXJuIHYueD1VKG4sdiksdi5YPVUoaSx2KSx2LmM9VShlLHYpLFQueD1VKG4sVCksVC5YPVUoaSxUKSxULmM9VShlLFQpLHtmb3JtYXQ6ZnVuY3Rpb24odCl7dmFyIGU9VSh0Kz0iIix2KTtyZXR1cm4gZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0fSxlfSxwYXJzZTpmdW5jdGlvbih0KXt2YXIgZT1qKHQrPSIiLCExKTtyZXR1cm4gZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0fSxlfSx1dGNGb3JtYXQ6ZnVuY3Rpb24odCl7dmFyIGU9VSh0Kz0iIixUKTtyZXR1cm4gZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0fSxlfSx1dGNQYXJzZTpmdW5jdGlvbih0KXt2YXIgZT1qKHQrPSIiLCEwKTtyZXR1cm4gZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0fSxlfX19KSh0KSxYMz1ZMy5mb3JtYXQsJDM9WTMudXRjRm9ybWF0LFkzfSkoe2RhdGVUaW1lOiIleCwgJVgiLGRhdGU6IiUtbS8lLWQvJVkiLHRpbWU6IiUtSTolTTolUyAlcCIscGVyaW9kczpbIkFNIiwiUE0iXSxkYXlzOlsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXSxzaG9ydERheXM6WyJTdW4iLCJNb24iLCJUdWUiLCJXZWQiLCJUaHUiLCJGcmkiLCJTYXQiXSxtb250aHM6WyJKYW51YXJ5IiwiRmVicnVhcnkiLCJNYXJjaCIsIkFwcmlsIiwiTWF5IiwiSnVuZSIsIkp1bHkiLCJBdWd1c3QiLCJTZXB0ZW1iZXIiLCJPY3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdLHNob3J0TW9udGhzOlsiSmFuIiwiRmViIiwiTWFyIiwiQXByIiwiTWF5IiwiSnVuIiwiSnVsIiwiQXVnIiwiU2VwIiwiT2N0IiwiTm92IiwiRGVjIl19KTt2YXIgZjY9MWUzLG02PTZlNCxnNj0zNmU1LF82PTg2NGU1LHk2PTI1OTJlNix2Nj0zMTUzNmU2O2Z1bmN0aW9uIGI2KHQpe3JldHVybiBuZXcgRGF0ZSh0KX1mdW5jdGlvbiB4Nih0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIERhdGU/K3Q6K25ldyBEYXRlKCt0KX1mdW5jdGlvbiB3Nih0LGUsbixpLHIsbyxhLHMsbCl7dmFyIGM9RDUoSTUsYjUpLHU9Yy5pbnZlcnQsaD1jLmRvbWFpbixkPWwoIi4lTCIpLHA9bCgiOiVTIiksZj1sKCIlSTolTSIpLG09bCgiJUkgJXAiKSxnPWwoIiVhICVkIiksXz1sKCIlYiAlZCIpLHk9bCgiJUIiKSx2PWwoIiVZIiksYj1bW2EsMSxmNl0sW2EsNSw1ZTNdLFthLDE1LDE1ZTNdLFthLDMwLDNlNF0sW28sMSxtNl0sW28sNSwzZTVdLFtvLDE1LDllNV0sW28sMzAsMThlNV0sW3IsMSxnNl0sW3IsMywxMDhlNV0sW3IsNiwyMTZlNV0sW3IsMTIsNDMyZTVdLFtpLDEsXzZdLFtpLDIsMTcyOGU1XSxbbiwxLDYwNDhlNV0sW2UsMSx5Nl0sW2UsMyw3Nzc2ZTZdLFt0LDEsdjZdXTtmdW5jdGlvbiB4KHMpe3JldHVybihhKHMpPHM/ZDpvKHMpPHM/cDpyKHMpPHM/ZjppKHMpPHM/bTplKHMpPHM/bihzKTxzP2c6Xzp0KHMpPHM/eTp2KShzKX1mdW5jdGlvbiB3KGUsbixpLHIpe2lmKG51bGw9PWUmJihlPTEwKSwibnVtYmVyIj09dHlwZW9mIGUpe3ZhciBvPU1hdGguYWJzKGktbikvZSxhPUowKChmdW5jdGlvbih0KXtyZXR1cm4gdFsyXX0pKS5yaWdodChiLG8pO2E9PT1iLmxlbmd0aD8ocj1hMihuL3Y2LGkvdjYsZSksZT10KTphPyhyPShhPWJbby9iW2EtMV1bMl08YlthXVsyXS9vP2EtMTphXSlbMV0sZT1hWzBdKToocj1NYXRoLm1heChhMihuLGksZSksMSksZT1zKX1yZXR1cm4gbnVsbD09cj9lOmUuZXZlcnkocil9cmV0dXJuIGMuaW52ZXJ0PWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgRGF0ZSh1KHQpKX0sYy5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/aChmMi5jYWxsKHQseDYpKTpoKCkubWFwKGI2KX0sYy50aWNrcz1mdW5jdGlvbih0LGUpe3ZhciBuLGk9aCgpLHI9aVswXSxvPWlbaS5sZW5ndGgtMV0sYT1vPHI7cmV0dXJuIGEmJihuPXIscj1vLG89biksbj0obj13KHQscixvLGUpKT9uLnJhbmdlKHIsbysxKTpbXSxhP24ucmV2ZXJzZSgpOm59LGMudGlja0Zvcm1hdD1mdW5jdGlvbih0LGUpe3JldHVybiBudWxsPT1lP3g6bChlKX0sYy5uaWNlPWZ1bmN0aW9uKHQsZSl7dmFyIG49aCgpO3JldHVybih0PXcodCxuWzBdLG5bbi5sZW5ndGgtMV0sZSkpP2goaTMobix0KSk6Y30sYy5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIHo1KGMsdzYodCxlLG4saSxyLG8sYSxzLGwpKX0sY31mdW5jdGlvbiBTNih0KXtyZXR1cm4gdC5tYXRjaCgvLns2fS9nKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiIjIit0fSkpfXZhciBNNj1TNigiMWY3N2I0ZmY3ZjBlMmNhMDJjZDYyNzI4OTQ2N2JkOGM1NjRiZTM3N2MyN2Y3ZjdmYmNiZDIyMTdiZWNmIiksRTY9UzYoIjM5M2I3OTUyNTRhMzZiNmVjZjljOWVkZTYzNzkzOThjYTI1MmI1Y2Y2YmNlZGI5YzhjNmQzMWJkOWUzOWU3YmE1MmU3Y2I5NDg0M2MzOWFkNDk0YWQ2NjE2YmU3OTY5YzdiNDE3M2E1NTE5NGNlNmRiZGRlOWVkNiIpLFQ2PVM2KCIzMTgyYmQ2YmFlZDY5ZWNhZTFjNmRiZWZlNjU1MGRmZDhkM2NmZGFlNmJmZGQwYTIzMWEzNTQ3NGM0NzZhMWQ5OWJjN2U5YzA3NTZiYjE5ZTlhYzhiY2JkZGNkYWRhZWI2MzYzNjM5Njk2OTZiZGJkYmRkOWQ5ZDkiKSxDNj1TNigiMWY3N2I0YWVjN2U4ZmY3ZjBlZmZiYjc4MmNhMDJjOThkZjhhZDYyNzI4ZmY5ODk2OTQ2N2JkYzViMGQ1OGM1NjRiYzQ5Yzk0ZTM3N2MyZjdiNmQyN2Y3ZjdmYzdjN2M3YmNiZDIyZGJkYjhkMTdiZWNmOWVkYWU1IiksQTY9azUodTUoMzAwLC41LDApLHU1KC0yNDAsLjUsMSkpLGs2PWs1KHU1KC0xMDAsLjc1LC4zNSksdTUoODAsMS41LC44KSksTDY9azUodTUoMjYwLC43NSwuMzUpLHU1KDgwLDEuNSwuOCkpLFA2PXU1KCk7ZnVuY3Rpb24gTjYodCl7dmFyIGU9dC5sZW5ndGg7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiB0W01hdGgubWF4KDAsTWF0aC5taW4oZS0xLE1hdGguZmxvb3IobiplKSkpXX19dmFyIEk2PU42KFM2KCI0NDAxNTQ0NDAyNTY0NTA0NTc0NTA1NTk0NjA3NWE0NjA4NWM0NjBhNWQ0NjBiNWU0NzBkNjA0NzBlNjE0NzEwNjM0NzExNjQ0NzEzNjU0ODE0Njc0ODE2Njg0ODE3Njk0ODE4NmE0ODFhNmM0ODFiNmQ0ODFjNmU0ODFkNmY0ODFmNzA0ODIwNzE0ODIxNzM0ODIzNzQ0ODI0NzU0ODI1NzY0ODI2Nzc0ODI4Nzg0ODI5Nzk0NzJhN2E0NzJjN2E0NzJkN2I0NzJlN2M0NzJmN2Q0NjMwN2U0NjMyN2U0NjMzN2Y0NjM0ODA0NTM1ODE0NTM3ODE0NTM4ODI0NDM5ODM0NDNhODM0NDNiODQ0MzNkODQ0MzNlODU0MjNmODU0MjQwODY0MjQxODY0MTQyODc0MTQ0ODc0MDQ1ODg0MDQ2ODgzZjQ3ODgzZjQ4ODkzZTQ5ODkzZTRhODkzZTRjOGEzZDRkOGEzZDRlOGEzYzRmOGEzYzUwOGIzYjUxOGIzYjUyOGIzYTUzOGIzYTU0OGMzOTU1OGMzOTU2OGMzODU4OGMzODU5OGMzNzVhOGMzNzViOGQzNjVjOGQzNjVkOGQzNTVlOGQzNTVmOGQzNDYwOGQzNDYxOGQzMzYyOGQzMzYzOGQzMjY0OGUzMjY1OGUzMTY2OGUzMTY3OGUzMTY4OGUzMDY5OGUzMDZhOGUyZjZiOGUyZjZjOGUyZTZkOGUyZTZlOGUyZTZmOGUyZDcwOGUyZDcxOGUyYzcxOGUyYzcyOGUyYzczOGUyYjc0OGUyYjc1OGUyYTc2OGUyYTc3OGUyYTc4OGUyOTc5OGUyOTdhOGUyOTdiOGUyODdjOGUyODdkOGUyNzdlOGUyNzdmOGUyNzgwOGUyNjgxOGUyNjgyOGUyNjgyOGUyNTgzOGUyNTg0OGUyNTg1OGUyNDg2OGUyNDg3OGUyMzg4OGUyMzg5OGUyMzhhOGQyMjhiOGQyMjhjOGQyMjhkOGQyMThlOGQyMThmOGQyMTkwOGQyMTkxOGMyMDkyOGMyMDkyOGMyMDkzOGMxZjk0OGMxZjk1OGIxZjk2OGIxZjk3OGIxZjk4OGIxZjk5OGExZjlhOGExZTliOGExZTljODkxZTlkODkxZjllODkxZjlmODgxZmEwODgxZmExODgxZmExODcxZmEyODcyMGEzODYyMGE0ODYyMWE1ODUyMWE2ODUyMmE3ODUyMmE4ODQyM2E5ODMyNGFhODMyNWFiODIyNWFjODIyNmFkODEyN2FkODEyOGFlODAyOWFmN2YyYWIwN2YyY2IxN2UyZGIyN2QyZWIzN2MyZmI0N2MzMWI1N2IzMmI2N2EzNGI2NzkzNWI3NzkzN2I4NzgzOGI5NzczYWJhNzYzYmJiNzUzZGJjNzQzZmJjNzM0MGJkNzI0MmJlNzE0NGJmNzA0NmMwNmY0OGMxNmU0YWMxNmQ0Y2MyNmM0ZWMzNmI1MGM0NmE1MmM1Njk1NGM1Njg1NmM2Njc1OGM3NjU1YWM4NjQ1Y2M4NjM1ZWM5NjI2MGNhNjA2M2NiNWY2NWNiNWU2N2NjNWM2OWNkNWI2Y2NkNWE2ZWNlNTg3MGNmNTc3M2QwNTY3NWQwNTQ3N2QxNTM3YWQxNTE3Y2QyNTA3ZmQzNGU4MWQzNGQ4NGQ0NGI4NmQ1NDk4OWQ1NDg4YmQ2NDY4ZWQ2NDU5MGQ3NDM5M2Q3NDE5NWQ4NDA5OGQ4M2U5YmQ5M2M5ZGQ5M2JhMGRhMzlhMmRhMzdhNWRiMzZhOGRiMzRhYWRjMzJhZGRjMzBiMGRkMmZiMmRkMmRiNWRlMmJiOGRlMjliYWRlMjhiZGRmMjZjMGRmMjVjMmRmMjNjNWUwMjFjOGUwMjBjYWUxMWZjZGUxMWRkMGUxMWNkMmUyMWJkNWUyMWFkOGUyMTlkYWUzMTlkZGUzMThkZmUzMThlMmU0MThlNWU0MTllN2U0MTllYWU1MWFlY2U1MWJlZmU1MWNmMWU1MWRmNGU2MWVmNmU2MjBmOGU2MjFmYmU3MjNmZGU3MjUiKSksUjY9TjYoUzYoIjAwMDAwNDAxMDAwNTAxMDEwNjAxMDEwODAyMDEwOTAyMDIwYjAyMDIwZDAzMDMwZjAzMDMxMjA0MDQxNDA1MDQxNjA2MDUxODA2MDUxYTA3MDYxYzA4MDcxZTA5MDcyMDBhMDgyMjBiMDkyNDBjMDkyNjBkMGEyOTBlMGIyYjEwMGIyZDExMGMyZjEyMGQzMTEzMGQzNDE0MGUzNjE1MGUzODE2MGYzYjE4MGYzZDE5MTAzZjFhMTA0MjFjMTA0NDFkMTE0NzFlMTE0OTIwMTE0YjIxMTE0ZTIyMTE1MDI0MTI1MzI1MTI1NTI3MTI1ODI5MTE1YTJhMTE1YzJjMTE1ZjJkMTE2MTJmMTE2MzMxMTE2NTMzMTA2NzM0MTA2OTM2MTA2YjM4MTA2YzM5MGY2ZTNiMGY3MDNkMGY3MTNmMGY3MjQwMGY3NDQyMGY3NTQ0MGY3NjQ1MTA3NzQ3MTA3ODQ5MTA3ODRhMTA3OTRjMTE3YTRlMTE3YjRmMTI3YjUxMTI3YzUyMTM3YzU0MTM3ZDU2MTQ3ZDU3MTU3ZTU5MTU3ZTVhMTY3ZTVjMTY3ZjVkMTc3ZjVmMTg3ZjYwMTg4MDYyMTk4MDY0MWE4MDY1MWE4MDY3MWI4MDY4MWM4MTZhMWM4MTZiMWQ4MTZkMWQ4MTZlMWU4MTcwMWY4MTcyMWY4MTczMjA4MTc1MjE4MTc2MjE4MTc4MjI4MTc5MjI4MjdiMjM4MjdjMjM4MjdlMjQ4MjgwMjU4MjgxMjU4MTgzMjY4MTg0MjY4MTg2Mjc4MTg4Mjc4MTg5Mjg4MThiMjk4MThjMjk4MThlMmE4MTkwMmE4MTkxMmI4MTkzMmI4MDk0MmM4MDk2MmM4MDk4MmQ4MDk5MmQ4MDliMmU3ZjljMmU3ZjllMmY3ZmEwMmY3ZmExMzA3ZWEzMzA3ZWE1MzE3ZWE2MzE3ZGE4MzI3ZGFhMzM3ZGFiMzM3Y2FkMzQ3Y2FlMzQ3YmIwMzU3YmIyMzU3YmIzMzY3YWI1MzY3YWI3Mzc3OWI4Mzc3OWJhMzg3OGJjMzk3OGJkMzk3N2JmM2E3N2MwM2E3NmMyM2I3NWM0M2M3NWM1M2M3NGM3M2Q3M2M4M2U3M2NhM2U3MmNjM2Y3MWNkNDA3MWNmNDA3MGQwNDE2ZmQyNDI2ZmQzNDM2ZWQ1NDQ2ZGQ2NDU2Y2Q4NDU2Y2Q5NDY2YmRiNDc2YWRjNDg2OWRlNDk2OGRmNGE2OGUwNGM2N2UyNGQ2NmUzNGU2NWU0NGY2NGU1NTA2NGU3NTI2M2U4NTM2MmU5NTQ2MmVhNTY2MWViNTc2MGVjNTg2MGVkNWE1ZmVlNWI1ZWVmNWQ1ZWYwNWY1ZWYxNjA1ZGYyNjI1ZGYyNjQ1Y2YzNjU1Y2Y0Njc1Y2Y0Njk1Y2Y1NmI1Y2Y2NmM1Y2Y2NmU1Y2Y3NzA1Y2Y3NzI1Y2Y4NzQ1Y2Y4NzY1Y2Y5Nzg1ZGY5Nzk1ZGY5N2I1ZGZhN2Q1ZWZhN2Y1ZWZhODE1ZmZiODM1ZmZiODU2MGZiODc2MWZjODk2MWZjOGE2MmZjOGM2M2ZjOGU2NGZjOTA2NWZkOTI2NmZkOTQ2N2ZkOTY2OGZkOTg2OWZkOWE2YWZkOWI2YmZlOWQ2Y2ZlOWY2ZGZlYTE2ZWZlYTM2ZmZlYTU3MWZlYTc3MmZlYTk3M2ZlYWE3NGZlYWM3NmZlYWU3N2ZlYjA3OGZlYjI3YWZlYjQ3YmZlYjY3Y2ZlYjc3ZWZlYjk3ZmZlYmI4MWZlYmQ4MmZlYmY4NGZlYzE4NWZlYzI4N2ZlYzQ4OGZlYzY4YWZlYzg4Y2ZlY2E4ZGZlY2M4ZmZlY2Q5MGZlY2Y5MmZlZDE5NGZlZDM5NWZlZDU5N2ZlZDc5OWZlZDg5YWZkZGE5Y2ZkZGM5ZWZkZGVhMGZkZTBhMWZkZTJhM2ZkZTNhNWZkZTVhN2ZkZTdhOWZkZTlhYWZkZWJhY2ZjZWNhZWZjZWViMGZjZjBiMmZjZjJiNGZjZjRiNmZjZjZiOGZjZjdiOWZjZjliYmZjZmJiZGZjZmRiZiIpKSxPNj1ONihTNigiMDAwMDA0MDEwMDA1MDEwMTA2MDEwMTA4MDIwMTBhMDIwMjBjMDIwMjBlMDMwMjEwMDQwMzEyMDQwMzE0MDUwNDE3MDYwNDE5MDcwNTFiMDgwNTFkMDkwNjFmMGEwNzIyMGIwNzI0MGMwODI2MGQwODI5MGUwOTJiMTAwOTJkMTEwYTMwMTIwYTMyMTQwYjM0MTUwYjM3MTYwYjM5MTgwYzNjMTkwYzNlMWIwYzQxMWMwYzQzMWUwYzQ1MWYwYzQ4MjEwYzRhMjMwYzRjMjQwYzRmMjYwYzUxMjgwYjUzMjkwYjU1MmIwYjU3MmQwYjU5MmYwYTViMzEwYTVjMzIwYTVlMzQwYTVmMzYwOTYxMzgwOTYyMzkwOTYzM2IwOTY0M2QwOTY1M2UwOTY2NDAwYTY3NDIwYTY4NDQwYTY4NDUwYTY5NDcwYjZhNDkwYjZhNGEwYzZiNGMwYzZiNGQwZDZjNGYwZDZjNTEwZTZjNTIwZTZkNTQwZjZkNTUwZjZkNTcxMDZlNTkxMDZlNWExMTZlNWMxMjZlNWQxMjZlNWYxMzZlNjExMzZlNjIxNDZlNjQxNTZlNjUxNTZlNjcxNjZlNjkxNjZlNmExNzZlNmMxODZlNmQxODZlNmYxOTZlNzExOTZlNzIxYTZlNzQxYTZlNzUxYjZlNzcxYzZkNzgxYzZkN2ExZDZkN2MxZDZkN2QxZTZkN2YxZTZjODAxZjZjODIyMDZjODQyMDZiODUyMTZiODcyMTZiODgyMjZhOGEyMjZhOGMyMzY5OGQyMzY5OGYyNDY5OTAyNTY4OTIyNTY4OTMyNjY3OTUyNjY3OTcyNzY2OTgyNzY2OWEyODY1OWIyOTY0OWQyOTY0OWYyYTYzYTAyYTYzYTIyYjYyYTMyYzYxYTUyYzYwYTYyZDYwYTgyZTVmYTkyZTVlYWIyZjVlYWQzMDVkYWUzMDVjYjAzMTViYjEzMjVhYjMzMjVhYjQzMzU5YjYzNDU4YjczNTU3YjkzNTU2YmEzNjU1YmMzNzU0YmQzODUzYmYzOTUyYzAzYTUxYzEzYTUwYzMzYjRmYzQzYzRlYzYzZDRkYzczZTRjYzgzZjRiY2E0MDRhY2I0MTQ5Y2M0MjQ4Y2U0MzQ3Y2Y0NDQ2ZDA0NTQ1ZDI0NjQ0ZDM0NzQzZDQ0ODQyZDU0YTQxZDc0YjNmZDg0YzNlZDk0ZDNkZGE0ZTNjZGI1MDNiZGQ1MTNhZGU1MjM4ZGY1MzM3ZTA1NTM2ZTE1NjM1ZTI1NzM0ZTM1OTMzZTQ1YTMxZTU1YzMwZTY1ZDJmZTc1ZTJlZTg2MDJkZTk2MTJiZWE2MzJhZWI2NDI5ZWI2NjI4ZWM2NzI2ZWQ2OTI1ZWU2YTI0ZWY2YzIzZWY2ZTIxZjA2ZjIwZjE3MTFmZjE3MzFkZjI3NDFjZjM3NjFiZjM3ODE5ZjQ3OTE4ZjU3YjE3ZjU3ZDE1ZjY3ZTE0ZjY4MDEzZjc4MjEyZjc4NDEwZjg4NTBmZjg4NzBlZjg4OTBjZjk4YjBiZjk4YzBhZjk4ZTA5ZmE5MDA4ZmE5MjA3ZmE5NDA3ZmI5NjA2ZmI5NzA2ZmI5OTA2ZmI5YjA2ZmI5ZDA3ZmM5ZjA3ZmNhMTA4ZmNhMzA5ZmNhNTBhZmNhNjBjZmNhODBkZmNhYTBmZmNhYzExZmNhZTEyZmNiMDE0ZmNiMjE2ZmNiNDE4ZmJiNjFhZmJiODFkZmJiYTFmZmJiYzIxZmJiZTIzZmFjMDI2ZmFjMjI4ZmFjNDJhZmFjNjJkZjljNzJmZjljOTMyZjljYjM1ZjhjZDM3ZjhjZjNhZjdkMTNkZjdkMzQwZjZkNTQzZjZkNzQ2ZjVkOTQ5ZjVkYjRjZjRkZDRmZjRkZjUzZjRlMTU2ZjNlMzVhZjNlNTVkZjJlNjYxZjJlODY1ZjJlYTY5ZjFlYzZkZjFlZDcxZjFlZjc1ZjFmMTc5ZjJmMjdkZjJmNDgyZjNmNTg2ZjNmNjhhZjRmODhlZjVmOTkyZjZmYTk2ZjhmYjlhZjlmYzlkZmFmZGExZmNmZmE0IikpLHo2PU42KFM2KCIwZDA4ODcxMDA3ODgxMzA3ODkxNjA3OGExOTA2OGMxYjA2OGQxZDA2OGUyMDA2OGYyMjA2OTAyNDA2OTEyNjA1OTEyODA1OTIyYTA1OTMyYzA1OTQyZTA1OTUyZjA1OTYzMTA1OTczMzA1OTczNTA0OTgzNzA0OTkzODA0OWEzYTA0OWEzYzA0OWIzZTA0OWMzZjA0OWM0MTA0OWQ0MzAzOWU0NDAzOWU0NjAzOWY0ODAzOWY0OTAzYTA0YjAzYTE0YzAyYTE0ZTAyYTI1MDAyYTI1MTAyYTM1MzAyYTM1NTAyYTQ1NjAxYTQ1ODAxYTQ1OTAxYTU1YjAxYTU1YzAxYTY1ZTAxYTY2MDAxYTY2MTAwYTc2MzAwYTc2NDAwYTc2NjAwYTc2NzAwYTg2OTAwYTg2YTAwYTg2YzAwYTg2ZTAwYTg2ZjAwYTg3MTAwYTg3MjAxYTg3NDAxYTg3NTAxYTg3NzAxYTg3ODAxYTg3YTAyYTg3YjAyYTg3ZDAzYTg3ZTAzYTg4MDA0YTg4MTA0YTc4MzA1YTc4NDA1YTc4NjA2YTY4NzA3YTY4ODA4YTY4YTA5YTU4YjBhYTU4ZDBiYTU4ZTBjYTQ4ZjBkYTQ5MTBlYTM5MjBmYTM5NDEwYTI5NTExYTE5NjEzYTE5ODE0YTA5OTE1OWY5YTE2OWY5YzE3OWU5ZDE4OWQ5ZTE5OWRhMDFhOWNhMTFiOWJhMjFkOWFhMzFlOWFhNTFmOTlhNjIwOThhNzIxOTdhODIyOTZhYTIzOTVhYjI0OTRhYzI2OTRhZDI3OTNhZTI4OTJiMDI5OTFiMTJhOTBiMjJiOGZiMzJjOGViNDJlOGRiNTJmOGNiNjMwOGJiNzMxOGFiODMyODliYTMzODhiYjM0ODhiYzM1ODdiZDM3ODZiZTM4ODViZjM5ODRjMDNhODNjMTNiODJjMjNjODFjMzNkODBjNDNlN2ZjNTQwN2VjNjQxN2RjNzQyN2NjODQzN2JjOTQ0N2FjYTQ1N2FjYjQ2NzljYzQ3NzhjYzQ5NzdjZDRhNzZjZTRiNzVjZjRjNzRkMDRkNzNkMTRlNzJkMjRmNzFkMzUxNzFkNDUyNzBkNTUzNmZkNTU0NmVkNjU1NmRkNzU2NmNkODU3NmJkOTU4NmFkYTVhNmFkYTViNjlkYjVjNjhkYzVkNjdkZDVlNjZkZTVmNjVkZTYxNjRkZjYyNjNlMDYzNjNlMTY0NjJlMjY1NjFlMjY2NjBlMzY4NWZlNDY5NWVlNTZhNWRlNTZiNWRlNjZjNWNlNzZlNWJlNzZmNWFlODcwNTllOTcxNThlOTcyNTdlYTc0NTdlYjc1NTZlYjc2NTVlYzc3NTRlZDc5NTNlZDdhNTJlZTdiNTFlZjdjNTFlZjdlNTBmMDdmNGZmMDgwNGVmMTgxNGRmMTgzNGNmMjg0NGJmMzg1NGJmMzg3NGFmNDg4NDlmNDg5NDhmNThiNDdmNThjNDZmNjhkNDVmNjhmNDRmNzkwNDRmNzkxNDNmNzkzNDJmODk0NDFmODk1NDBmOTk3M2ZmOTk4M2VmOTlhM2VmYTliM2RmYTljM2NmYTllM2JmYjlmM2FmYmExMzlmYmEyMzhmY2EzMzhmY2E1MzdmY2E2MzZmY2E4MzVmY2E5MzRmZGFiMzNmZGFjMzNmZGFlMzJmZGFmMzFmZGIxMzBmZGIyMmZmZGI0MmZmZGI1MmVmZWI3MmRmZWI4MmNmZWJhMmNmZWJiMmJmZWJkMmFmZWJlMmFmZWMwMjlmZGMyMjlmZGMzMjhmZGM1MjdmZGM2MjdmZGM4MjdmZGNhMjZmZGNiMjZmY2NkMjVmY2NlMjVmY2QwMjVmY2QyMjVmYmQzMjRmYmQ1MjRmYmQ3MjRmYWQ4MjRmYWRhMjRmOWRjMjRmOWRkMjVmOGRmMjVmOGUxMjVmN2UyMjVmN2U0MjVmNmU2MjZmNmU4MjZmNWU5MjZmNWViMjdmNGVkMjdmM2VlMjdmM2YwMjdmMmYyMjdmMWY0MjZmMWY1MjVmMGY3MjRmMGY5MjEiKSk7dmFyIEQ2PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIixCNj17c3ZnOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIseGh0bWw6RDYseGxpbms6Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLHhtbDoiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8ifTtmdW5jdGlvbiBINih0KXt2YXIgZT10Kz0iIixuPWUuaW5kZXhPZigiOiIpO3JldHVybiBuPj0wJiYieG1sbnMiIT09KGU9dC5zbGljZSgwLG4pKSYmKHQ9dC5zbGljZShuKzEpKSxCNi5oYXNPd25Qcm9wZXJ0eShlKT97c3BhY2U6QjZbZV0sbG9jYWw6dH06dH1mdW5jdGlvbiBGNih0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10aGlzLm93bmVyRG9jdW1lbnQsbj10aGlzLm5hbWVzcGFjZVVSSTtyZXR1cm4gbj09PUQ2JiZlLmRvY3VtZW50RWxlbWVudC5uYW1lc3BhY2VVUkk9PT1ENj9lLmNyZWF0ZUVsZW1lbnQodCk6ZS5jcmVhdGVFbGVtZW50TlMobix0KX19ZnVuY3Rpb24gVjYodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50TlModC5zcGFjZSx0LmxvY2FsKX19ZnVuY3Rpb24gVTYodCl7dmFyIGU9SDYodCk7cmV0dXJuKGUubG9jYWw/VjY6RjYpKGUpfWZ1bmN0aW9uIGo2KCl7fWZ1bmN0aW9uIEc2KHQpe3JldHVybiBudWxsPT10P2o2OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucXVlcnlTZWxlY3Rvcih0KX19ZnVuY3Rpb24gVzYoKXtyZXR1cm5bXX1mdW5jdGlvbiBxNih0KXtyZXR1cm4gbnVsbD09dD9XNjpmdW5jdGlvbigpe3JldHVybiB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGwodCl9fXZhciBZNj1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXRjaGVzKHQpfX07aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudCl7dmFyIFg2PWRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtpZighWDYubWF0Y2hlcyl7dmFyICQ2PVg2LndlYmtpdE1hdGNoZXNTZWxlY3Rvcnx8WDYubXNNYXRjaGVzU2VsZWN0b3J8fFg2Lm1vek1hdGNoZXNTZWxlY3Rvcnx8WDYub01hdGNoZXNTZWxlY3RvcjtZNj1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gJDYuY2FsbCh0aGlzLHQpfX19fXZhciBLNj1ZNjtmdW5jdGlvbiBaNih0KXtyZXR1cm4gbmV3IEFycmF5KHQubGVuZ3RoKX1mdW5jdGlvbiBKNih0LGUpe3RoaXMub3duZXJEb2N1bWVudD10Lm93bmVyRG9jdW1lbnQsdGhpcy5uYW1lc3BhY2VVUkk9dC5uYW1lc3BhY2VVUkksdGhpcy5fbmV4dD1udWxsLHRoaXMuX3BhcmVudD10LHRoaXMuX19kYXRhX189ZX1KNi5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOko2LGFwcGVuZENoaWxkOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYXJlbnQuaW5zZXJ0QmVmb3JlKHQsdGhpcy5fbmV4dCl9LGluc2VydEJlZm9yZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9wYXJlbnQuaW5zZXJ0QmVmb3JlKHQsZSl9LHF1ZXJ5U2VsZWN0b3I6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3BhcmVudC5xdWVyeVNlbGVjdG9yKHQpfSxxdWVyeVNlbGVjdG9yQWxsOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYXJlbnQucXVlcnlTZWxlY3RvckFsbCh0KX19O2Z1bmN0aW9uIFE2KHQsZSxuLGkscixvKXtmb3IodmFyIGEscz0wLGw9ZS5sZW5ndGgsYz1vLmxlbmd0aDtzPGM7KytzKShhPWVbc10pPyhhLl9fZGF0YV9fPW9bc10saVtzXT1hKTpuW3NdPW5ldyBKNih0LG9bc10pO2Zvcig7czxsOysrcykoYT1lW3NdKSYmKHJbc109YSl9ZnVuY3Rpb24gdDkodCxlLG4saSxyLG8sYSl7dmFyIHMsbCxjLHU9e30saD1lLmxlbmd0aCxkPW8ubGVuZ3RoLHA9bmV3IEFycmF5KGgpO2ZvcihzPTA7czxoOysrcykobD1lW3NdKSYmKHBbc109Yz0iJCIrYS5jYWxsKGwsbC5fX2RhdGFfXyxzLGUpLGMgaW4gdT9yW3NdPWw6dVtjXT1sKTtmb3Iocz0wO3M8ZDsrK3MpKGw9dVtjPSIkIithLmNhbGwodCxvW3NdLHMsbyldKT8oaVtzXT1sLGwuX19kYXRhX189b1tzXSx1W2NdPW51bGwpOm5bc109bmV3IEo2KHQsb1tzXSk7Zm9yKHM9MDtzPGg7KytzKShsPWVbc10pJiZ1W3Bbc11dPT09bCYmKHJbc109bCl9ZnVuY3Rpb24gZTkodCxlKXtyZXR1cm4gdDxlPy0xOnQ+ZT8xOnQ+PWU/MDpOYU59ZnVuY3Rpb24gbjkodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGUodCl9fWZ1bmN0aW9uIGk5KHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMucmVtb3ZlQXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKX19ZnVuY3Rpb24gcjkodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnNldEF0dHJpYnV0ZSh0LGUpfX1mdW5jdGlvbiBvOSh0LGUpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsLGUpfX1mdW5jdGlvbiBhOSh0LGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciBuPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PW4/dGhpcy5yZW1vdmVBdHRyaWJ1dGUodCk6dGhpcy5zZXRBdHRyaWJ1dGUodCxuKX19ZnVuY3Rpb24gczkodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1uP3RoaXMucmVtb3ZlQXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKTp0aGlzLnNldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCxuKX19ZnVuY3Rpb24gbDkodCl7cmV0dXJuIHQub3duZXJEb2N1bWVudCYmdC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3fHx0LmRvY3VtZW50JiZ0fHx0LmRlZmF1bHRWaWV3fWZ1bmN0aW9uIGM5KHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkodCl9fWZ1bmN0aW9uIHU5KHQsZSxuKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnN0eWxlLnNldFByb3BlcnR5KHQsZSxuKX19ZnVuY3Rpb24gaDkodCxlLG4pe3JldHVybiBmdW5jdGlvbigpe3ZhciBpPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PWk/dGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0KTp0aGlzLnN0eWxlLnNldFByb3BlcnR5KHQsaSxuKX19ZnVuY3Rpb24gZDkodCxlKXtyZXR1cm4gdC5zdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKGUpfHxsOSh0KS5nZXRDb21wdXRlZFN0eWxlKHQsbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZShlKX1mdW5jdGlvbiBwOSh0KXtyZXR1cm4gZnVuY3Rpb24oKXtkZWxldGUgdGhpc1t0XX19ZnVuY3Rpb24gZjkodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzW3RdPWV9fWZ1bmN0aW9uIG05KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7bnVsbD09bj9kZWxldGUgdGhpc1t0XTp0aGlzW3RdPW59fWZ1bmN0aW9uIGc5KHQpe3JldHVybiB0LnRyaW0oKS5zcGxpdCgvXnxccysvKX1mdW5jdGlvbiBfOSh0KXtyZXR1cm4gdC5jbGFzc0xpc3R8fG5ldyB5OSh0KX1mdW5jdGlvbiB5OSh0KXt0aGlzLl9ub2RlPXQsdGhpcy5fbmFtZXM9ZzkodC5nZXRBdHRyaWJ1dGUoImNsYXNzIil8fCIiKX1mdW5jdGlvbiB2OSh0LGUpe2Zvcih2YXIgbj1fOSh0KSxpPS0xLHI9ZS5sZW5ndGg7KytpPHI7KW4uYWRkKGVbaV0pfWZ1bmN0aW9uIGI5KHQsZSl7Zm9yKHZhciBuPV85KHQpLGk9LTEscj1lLmxlbmd0aDsrK2k8cjspbi5yZW1vdmUoZVtpXSl9ZnVuY3Rpb24geDkodCl7cmV0dXJuIGZ1bmN0aW9uKCl7djkodGhpcyx0KX19ZnVuY3Rpb24gdzkodCl7cmV0dXJuIGZ1bmN0aW9uKCl7YjkodGhpcyx0KX19ZnVuY3Rpb24gUzkodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXsoZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk/djk6YjkpKHRoaXMsdCl9fWZ1bmN0aW9uIE05KCl7dGhpcy50ZXh0Q29udGVudD0iIn1mdW5jdGlvbiBFOSh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnRleHRDb250ZW50PXR9fWZ1bmN0aW9uIFQ5KHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMudGV4dENvbnRlbnQ9bnVsbD09ZT8iIjplfX1mdW5jdGlvbiBDOSgpe3RoaXMuaW5uZXJIVE1MPSIifWZ1bmN0aW9uIEE5KHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuaW5uZXJIVE1MPXR9fWZ1bmN0aW9uIGs5KHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMuaW5uZXJIVE1MPW51bGw9PWU/IiI6ZX19ZnVuY3Rpb24gTDkoKXt0aGlzLm5leHRTaWJsaW5nJiZ0aGlzLnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQodGhpcyl9ZnVuY3Rpb24gUDkoKXt0aGlzLnByZXZpb3VzU2libGluZyYmdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0aGlzLHRoaXMucGFyZW50Tm9kZS5maXJzdENoaWxkKX1mdW5jdGlvbiBOOSgpe3JldHVybiBudWxsfWZ1bmN0aW9uIEk5KCl7dmFyIHQ9dGhpcy5wYXJlbnROb2RlO3QmJnQucmVtb3ZlQ2hpbGQodGhpcyl9ZnVuY3Rpb24gUjkoKXtyZXR1cm4gdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0aGlzLmNsb25lTm9kZSghMSksdGhpcy5uZXh0U2libGluZyl9ZnVuY3Rpb24gTzkoKXtyZXR1cm4gdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0aGlzLmNsb25lTm9kZSghMCksdGhpcy5uZXh0U2libGluZyl9eTkucHJvdG90eXBlPXthZGQ6ZnVuY3Rpb24odCl7dGhpcy5fbmFtZXMuaW5kZXhPZih0KTwwJiYodGhpcy5fbmFtZXMucHVzaCh0KSx0aGlzLl9ub2RlLnNldEF0dHJpYnV0ZSgiY2xhc3MiLHRoaXMuX25hbWVzLmpvaW4oIiAiKSkpfSxyZW1vdmU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fbmFtZXMuaW5kZXhPZih0KTtlPj0wJiYodGhpcy5fbmFtZXMuc3BsaWNlKGUsMSksdGhpcy5fbm9kZS5zZXRBdHRyaWJ1dGUoImNsYXNzIix0aGlzLl9uYW1lcy5qb2luKCIgIikpKX0sY29udGFpbnM6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX25hbWVzLmluZGV4T2YodCk+PTB9fTt2YXIgejk9e30sRDk9bnVsbDsidW5kZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50JiYoIm9ubW91c2VlbnRlciJpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnR8fCh6OT17bW91c2VlbnRlcjoibW91c2VvdmVyIixtb3VzZWxlYXZlOiJtb3VzZW91dCJ9KSk7ZnVuY3Rpb24gQjkodCxlLG4pe3JldHVybiB0PUg5KHQsZSxuKSxmdW5jdGlvbihlKXt2YXIgbj1lLnJlbGF0ZWRUYXJnZXQ7biYmKG49PT10aGlzfHw4Jm4uY29tcGFyZURvY3VtZW50UG9zaXRpb24odGhpcykpfHx0LmNhbGwodGhpcyxlKX19ZnVuY3Rpb24gSDkodCxlLG4pe3JldHVybiBmdW5jdGlvbihpKXt2YXIgcj1EOTtEOT1pO3RyeXt0LmNhbGwodGhpcyx0aGlzLl9fZGF0YV9fLGUsbil9ZmluYWxseXtEOT1yfX19ZnVuY3Rpb24gRjkodCl7cmV0dXJuIHQudHJpbSgpLnNwbGl0KC9efFxzKy8pLm1hcCgoZnVuY3Rpb24odCl7dmFyIGU9IiIsbj10LmluZGV4T2YoIi4iKTtyZXR1cm4gbj49MCYmKGU9dC5zbGljZShuKzEpLHQ9dC5zbGljZSgwLG4pKSx7dHlwZTp0LG5hbWU6ZX19KSl9ZnVuY3Rpb24gVjkodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fX29uO2lmKGUpe2Zvcih2YXIgbixpPTAscj0tMSxvPWUubGVuZ3RoO2k8bzsrK2kpbj1lW2ldLHQudHlwZSYmbi50eXBlIT09dC50eXBlfHxuLm5hbWUhPT10Lm5hbWU/ZVsrK3JdPW46dGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKG4udHlwZSxuLmxpc3RlbmVyLG4uY2FwdHVyZSk7KytyP2UubGVuZ3RoPXI6ZGVsZXRlIHRoaXMuX19vbn19fWZ1bmN0aW9uIFU5KHQsZSxuKXt2YXIgaT16OS5oYXNPd25Qcm9wZXJ0eSh0LnR5cGUpP0I5Okg5O3JldHVybiBmdW5jdGlvbihyLG8sYSl7dmFyIHMsbD10aGlzLl9fb24sYz1pKGUsbyxhKTtpZihsKWZvcih2YXIgdT0wLGg9bC5sZW5ndGg7dTxoOysrdSlpZigocz1sW3VdKS50eXBlPT09dC50eXBlJiZzLm5hbWU9PT10Lm5hbWUpcmV0dXJuIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihzLnR5cGUscy5saXN0ZW5lcixzLmNhcHR1cmUpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihzLnR5cGUscy5saXN0ZW5lcj1jLHMuY2FwdHVyZT1uKSx2b2lkKHMudmFsdWU9ZSk7dGhpcy5hZGRFdmVudExpc3RlbmVyKHQudHlwZSxjLG4pLHM9e3R5cGU6dC50eXBlLG5hbWU6dC5uYW1lLHZhbHVlOmUsbGlzdGVuZXI6YyxjYXB0dXJlOm59LGw/bC5wdXNoKHMpOnRoaXMuX19vbj1bc119fWZ1bmN0aW9uIGo5KHQsZSxuKXt2YXIgaT1sOSh0KSxyPWkuQ3VzdG9tRXZlbnQ7ImZ1bmN0aW9uIj09dHlwZW9mIHI/cj1uZXcgcihlLG4pOihyPWkuZG9jdW1lbnQuY3JlYXRlRXZlbnQoIkV2ZW50Iiksbj8oci5pbml0RXZlbnQoZSxuLmJ1YmJsZXMsbi5jYW5jZWxhYmxlKSxyLmRldGFpbD1uLmRldGFpbCk6ci5pbml0RXZlbnQoZSwhMSwhMSkpLHQuZGlzcGF0Y2hFdmVudChyKX1mdW5jdGlvbiBHOSh0LGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBqOSh0aGlzLHQsZSl9fWZ1bmN0aW9uIFc5KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGo5KHRoaXMsdCxlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9fXZhciBxOT1bbnVsbF07ZnVuY3Rpb24gWTkodCxlKXt0aGlzLl9ncm91cHM9dCx0aGlzLl9wYXJlbnRzPWV9ZnVuY3Rpb24gWDkoKXtyZXR1cm4gbmV3IFk5KFtbZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50XV0scTkpfWZ1bmN0aW9uICQ5KHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdD9uZXcgWTkoW1tkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHQpXV0sW2RvY3VtZW50LmRvY3VtZW50RWxlbWVudF0pOm5ldyBZOShbW3RdXSxxOSl9WTkucHJvdG90eXBlPVg5LnByb3RvdHlwZT17Y29uc3RydWN0b3I6WTksc2VsZWN0OmZ1bmN0aW9uIEs5KHQpeyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD1HNih0KSk7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPWUubGVuZ3RoLGk9bmV3IEFycmF5KG4pLHI9MDtyPG47KytyKWZvcih2YXIgbyxhLHM9ZVtyXSxsPXMubGVuZ3RoLGM9aVtyXT1uZXcgQXJyYXkobCksdT0wO3U8bDsrK3UpKG89c1t1XSkmJihhPXQuY2FsbChvLG8uX19kYXRhX18sdSxzKSkmJigiX19kYXRhX18iaW4gbyYmKGEuX19kYXRhX189by5fX2RhdGFfXyksY1t1XT1hKTtyZXR1cm4gbmV3IFk5KGksdGhpcy5fcGFyZW50cyl9LHNlbGVjdEFsbDpmdW5jdGlvbiBaOSh0KXsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9cTYodCkpO2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj1lLmxlbmd0aCxpPVtdLHI9W10sbz0wO288bjsrK28pZm9yKHZhciBhLHM9ZVtvXSxsPXMubGVuZ3RoLGM9MDtjPGw7KytjKShhPXNbY10pJiYoaS5wdXNoKHQuY2FsbChhLGEuX19kYXRhX18sYyxzKSksci5wdXNoKGEpKTtyZXR1cm4gbmV3IFk5KGkscil9LGZpbHRlcjpmdW5jdGlvbiBKOSh0KXsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9SzYodCkpO2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj1lLmxlbmd0aCxpPW5ldyBBcnJheShuKSxyPTA7cjxuOysrcilmb3IodmFyIG8sYT1lW3JdLHM9YS5sZW5ndGgsbD1pW3JdPVtdLGM9MDtjPHM7KytjKShvPWFbY10pJiZ0LmNhbGwobyxvLl9fZGF0YV9fLGMsYSkmJmwucHVzaChvKTtyZXR1cm4gbmV3IFk5KGksdGhpcy5fcGFyZW50cyl9LGRhdGE6ZnVuY3Rpb24gUTkodCxlKXtpZighdClyZXR1cm4gZj1uZXcgQXJyYXkodGhpcy5zaXplKCkpLHU9LTEsdGhpcy5lYWNoKChmdW5jdGlvbih0KXtmWysrdV09dH0pKSxmO3ZhciBuPWU/dDk6UTYsaT10aGlzLl9wYXJlbnRzLHI9dGhpcy5fZ3JvdXBzOyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD0oZnVuY3Rpb24gbyh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19KSh0KSk7Zm9yKHZhciBhPXIubGVuZ3RoLHM9bmV3IEFycmF5KGEpLGw9bmV3IEFycmF5KGEpLGM9bmV3IEFycmF5KGEpLHU9MDt1PGE7Kyt1KXt2YXIgaD1pW3VdLGQ9clt1XSxwPWQubGVuZ3RoLGY9dC5jYWxsKGgsaCYmaC5fX2RhdGFfXyx1LGkpLG09Zi5sZW5ndGgsZz1sW3VdPW5ldyBBcnJheShtKSxfPXNbdV09bmV3IEFycmF5KG0pO24oaCxkLGcsXyxjW3VdPW5ldyBBcnJheShwKSxmLGUpO2Zvcih2YXIgeSx2LGI9MCx4PTA7YjxtOysrYilpZih5PWdbYl0pe2ZvcihiPj14JiYoeD1iKzEpOyEodj1fW3hdKSYmKyt4PG07KTt5Ll9uZXh0PXZ8fG51bGx9fXJldHVybihzPW5ldyBZOShzLGkpKS5fZW50ZXI9bCxzLl9leGl0PWMsc30sZW50ZXI6ZnVuY3Rpb24gdDgoKXtyZXR1cm4gbmV3IFk5KHRoaXMuX2VudGVyfHx0aGlzLl9ncm91cHMubWFwKFo2KSx0aGlzLl9wYXJlbnRzKX0sZXhpdDpmdW5jdGlvbiBlOCgpe3JldHVybiBuZXcgWTkodGhpcy5fZXhpdHx8dGhpcy5fZ3JvdXBzLm1hcChaNiksdGhpcy5fcGFyZW50cyl9LG1lcmdlOmZ1bmN0aW9uIG44KHQpe2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj10Ll9ncm91cHMsaT1lLmxlbmd0aCxyPU1hdGgubWluKGksbi5sZW5ndGgpLG89bmV3IEFycmF5KGkpLGE9MDthPHI7KythKWZvcih2YXIgcyxsPWVbYV0sYz1uW2FdLHU9bC5sZW5ndGgsaD1vW2FdPW5ldyBBcnJheSh1KSxkPTA7ZDx1OysrZCkocz1sW2RdfHxjW2RdKSYmKGhbZF09cyk7Zm9yKDthPGk7KythKW9bYV09ZVthXTtyZXR1cm4gbmV3IFk5KG8sdGhpcy5fcGFyZW50cyl9LG9yZGVyOmZ1bmN0aW9uIGk4KCl7Zm9yKHZhciB0PXRoaXMuX2dyb3VwcyxlPS0xLG49dC5sZW5ndGg7KytlPG47KWZvcih2YXIgaSxyPXRbZV0sbz1yLmxlbmd0aC0xLGE9cltvXTstLW8+PTA7KShpPXJbb10pJiYoYSYmYSE9PWkubmV4dFNpYmxpbmcmJmEucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoaSxhKSxhPWkpO3JldHVybiB0aGlzfSxzb3J0OmZ1bmN0aW9uIHI4KHQpe2Z1bmN0aW9uIGUoZSxuKXtyZXR1cm4gZSYmbj90KGUuX19kYXRhX18sbi5fX2RhdGFfXyk6IWUtIW59dHx8KHQ9ZTkpO2Zvcih2YXIgbj10aGlzLl9ncm91cHMsaT1uLmxlbmd0aCxyPW5ldyBBcnJheShpKSxvPTA7bzxpOysrbyl7Zm9yKHZhciBhLHM9bltvXSxsPXMubGVuZ3RoLGM9cltvXT1uZXcgQXJyYXkobCksdT0wO3U8bDsrK3UpKGE9c1t1XSkmJihjW3VdPWEpO2Muc29ydChlKX1yZXR1cm4gbmV3IFk5KHIsdGhpcy5fcGFyZW50cykub3JkZXIoKX0sY2FsbDpmdW5jdGlvbiBvOCgpe3ZhciB0PWFyZ3VtZW50c1swXTtyZXR1cm4gYXJndW1lbnRzWzBdPXRoaXMsdC5hcHBseShudWxsLGFyZ3VtZW50cyksdGhpc30sbm9kZXM6ZnVuY3Rpb24gYTgoKXt2YXIgdD1uZXcgQXJyYXkodGhpcy5zaXplKCkpLGU9LTE7cmV0dXJuIHRoaXMuZWFjaCgoZnVuY3Rpb24oKXt0WysrZV09dGhpc30pKSx0fSxub2RlOmZ1bmN0aW9uIHM4KCl7Zm9yKHZhciB0PXRoaXMuX2dyb3VwcyxlPTAsbj10Lmxlbmd0aDtlPG47KytlKWZvcih2YXIgaT10W2VdLHI9MCxvPWkubGVuZ3RoO3I8bzsrK3Ipe3ZhciBhPWlbcl07aWYoYSlyZXR1cm4gYX1yZXR1cm4gbnVsbH0sc2l6ZTpmdW5jdGlvbiBsOCgpe3ZhciB0PTA7cmV0dXJuIHRoaXMuZWFjaCgoZnVuY3Rpb24oKXsrK3R9KSksdH0sZW1wdHk6ZnVuY3Rpb24gYzgoKXtyZXR1cm4hdGhpcy5ub2RlKCl9LGVhY2g6ZnVuY3Rpb24gdTgodCl7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPTAsaT1lLmxlbmd0aDtuPGk7KytuKWZvcih2YXIgcixvPWVbbl0sYT0wLHM9by5sZW5ndGg7YTxzOysrYSkocj1vW2FdKSYmdC5jYWxsKHIsci5fX2RhdGFfXyxhLG8pO3JldHVybiB0aGlzfSxhdHRyOmZ1bmN0aW9uIGg4KHQsZSl7dmFyIG49SDYodCk7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXt2YXIgaT10aGlzLm5vZGUoKTtyZXR1cm4gbi5sb2NhbD9pLmdldEF0dHJpYnV0ZU5TKG4uc3BhY2Usbi5sb2NhbCk6aS5nZXRBdHRyaWJ1dGUobil9cmV0dXJuIHRoaXMuZWFjaCgobnVsbD09ZT9uLmxvY2FsP2k5Om45OiJmdW5jdGlvbiI9PXR5cGVvZiBlP24ubG9jYWw/czk6YTk6bi5sb2NhbD9vOTpyOSkobixlKSl9LHN0eWxlOmZ1bmN0aW9uIGQ4KHQsZSxuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4xP3RoaXMuZWFjaCgobnVsbD09ZT9jOToiZnVuY3Rpb24iPT10eXBlb2YgZT9oOTp1OSkodCxlLG51bGw9PW4/IiI6bikpOmQ5KHRoaXMubm9kZSgpLHQpfSxwcm9wZXJ0eTpmdW5jdGlvbiBwOCh0LGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPjE/dGhpcy5lYWNoKChudWxsPT1lP3A5OiJmdW5jdGlvbiI9PXR5cGVvZiBlP205OmY5KSh0LGUpKTp0aGlzLm5vZGUoKVt0XX0sY2xhc3NlZDpmdW5jdGlvbiBmOCh0LGUpe3ZhciBuPWc5KHQrIiIpO2lmKGFyZ3VtZW50cy5sZW5ndGg8Mil7Zm9yKHZhciBpPV85KHRoaXMubm9kZSgpKSxyPS0xLG89bi5sZW5ndGg7KytyPG87KWlmKCFpLmNvbnRhaW5zKG5bcl0pKXJldHVybiExO3JldHVybiEwfXJldHVybiB0aGlzLmVhY2goKCJmdW5jdGlvbiI9PXR5cGVvZiBlP1M5OmU/eDk6dzkpKG4sZSkpfSx0ZXh0OmZ1bmN0aW9uIG04KHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaChudWxsPT10P005OigiZnVuY3Rpb24iPT10eXBlb2YgdD9UOTpFOSkodCkpOnRoaXMubm9kZSgpLnRleHRDb250ZW50fSxodG1sOmZ1bmN0aW9uIGc4KHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaChudWxsPT10P0M5OigiZnVuY3Rpb24iPT10eXBlb2YgdD9rOTpBOSkodCkpOnRoaXMubm9kZSgpLmlubmVySFRNTH0scmFpc2U6ZnVuY3Rpb24gXzgoKXtyZXR1cm4gdGhpcy5lYWNoKEw5KX0sbG93ZXI6ZnVuY3Rpb24geTgoKXtyZXR1cm4gdGhpcy5lYWNoKFA5KX0sYXBwZW5kOmZ1bmN0aW9uIHY4KHQpe3ZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6VTYodCk7cmV0dXJuIHRoaXMuc2VsZWN0KChmdW5jdGlvbigpe3JldHVybiB0aGlzLmFwcGVuZENoaWxkKGUuYXBwbHkodGhpcyxhcmd1bWVudHMpKX0pKX0saW5zZXJ0OmZ1bmN0aW9uIGI4KHQsZSl7dmFyIG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpVNih0KSxpPW51bGw9PWU/Tjk6ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpHNihlKTtyZXR1cm4gdGhpcy5zZWxlY3QoKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5zZXJ0QmVmb3JlKG4uYXBwbHkodGhpcyxhcmd1bWVudHMpLGkuYXBwbHkodGhpcyxhcmd1bWVudHMpfHxudWxsKX0pKX0scmVtb3ZlOmZ1bmN0aW9uIHg4KCl7cmV0dXJuIHRoaXMuZWFjaChJOSl9LGNsb25lOmZ1bmN0aW9uIHc4KHQpe3JldHVybiB0aGlzLnNlbGVjdCh0P085OlI5KX0sZGF0dW06ZnVuY3Rpb24gUzgodCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5wcm9wZXJ0eSgiX19kYXRhX18iLHQpOnRoaXMubm9kZSgpLl9fZGF0YV9ffSxvbjpmdW5jdGlvbiBNOCh0LGUsbil7dmFyIGkscixvPUY5KHQrIiIpLGE9by5sZW5ndGg7aWYoIShhcmd1bWVudHMubGVuZ3RoPDIpKXtmb3Iocz1lP1U5OlY5LG51bGw9PW4mJihuPSExKSxpPTA7aTxhOysraSl0aGlzLmVhY2gocyhvW2ldLGUsbikpO3JldHVybiB0aGlzfXZhciBzPXRoaXMubm9kZSgpLl9fb247aWYocylmb3IodmFyIGwsYz0wLHU9cy5sZW5ndGg7Yzx1OysrYylmb3IoaT0wLGw9c1tjXTtpPGE7KytpKWlmKChyPW9baV0pLnR5cGU9PT1sLnR5cGUmJnIubmFtZT09PWwubmFtZSlyZXR1cm4gbC52YWx1ZX0sZGlzcGF0Y2g6ZnVuY3Rpb24gRTgodCxlKXtyZXR1cm4gdGhpcy5lYWNoKCgiZnVuY3Rpb24iPT10eXBlb2YgZT9XOTpHOSkodCxlKSl9fTt2YXIgVDg9MDtmdW5jdGlvbiBDOCgpe3JldHVybiBuZXcgQTh9ZnVuY3Rpb24gQTgoKXt0aGlzLl89IkAiKygrK1Q4KS50b1N0cmluZygzNil9ZnVuY3Rpb24gazgoKXtmb3IodmFyIHQsZT1EOTt0PWUuc291cmNlRXZlbnQ7KWU9dDtyZXR1cm4gZX1mdW5jdGlvbiBMOCh0LGUpe3ZhciBuPXQub3duZXJTVkdFbGVtZW50fHx0O2lmKG4uY3JlYXRlU1ZHUG9pbnQpe3ZhciBpPW4uY3JlYXRlU1ZHUG9pbnQoKTtyZXR1cm4gaS54PWUuY2xpZW50WCxpLnk9ZS5jbGllbnRZLFsoaT1pLm1hdHJpeFRyYW5zZm9ybSh0LmdldFNjcmVlbkNUTSgpLmludmVyc2UoKSkpLngsaS55XX12YXIgcj10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3JldHVybltlLmNsaWVudFgtci5sZWZ0LXQuY2xpZW50TGVmdCxlLmNsaWVudFktci50b3AtdC5jbGllbnRUb3BdfUE4LnByb3RvdHlwZT1DOC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOkE4LGdldDpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy5fOyEoZSBpbiB0KTspaWYoISh0PXQucGFyZW50Tm9kZSkpcmV0dXJuO3JldHVybiB0W2VdfSxzZXQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdFt0aGlzLl9dPWV9LHJlbW92ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fIGluIHQmJmRlbGV0ZSB0W3RoaXMuX119LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX319O3ZhciBQOD1NYXRoLlBJLE44PTIqUDgsSTg9MWUtNixSOD1OOC1JODtmdW5jdGlvbiBPOCgpe3RoaXMuX3gwPXRoaXMuX3kwPXRoaXMuX3gxPXRoaXMuX3kxPW51bGwsdGhpcy5fPSIifWZ1bmN0aW9uIHo4KCl7cmV0dXJuIG5ldyBPOH1mdW5jdGlvbiBEOCh0KXtyZXR1cm4gZnVuY3Rpb24gZSgpe3JldHVybiB0fX1POC5wcm90b3R5cGU9ejgucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpPOCxtb3ZlVG86ZnVuY3Rpb24odCxlKXt0aGlzLl8rPSJNIisodGhpcy5feDA9dGhpcy5feDE9K3QpKyIsIisodGhpcy5feTA9dGhpcy5feTE9K2UpfSxjbG9zZVBhdGg6ZnVuY3Rpb24oKXtudWxsIT09dGhpcy5feDEmJih0aGlzLl94MT10aGlzLl94MCx0aGlzLl95MT10aGlzLl95MCx0aGlzLl8rPSJaIil9LGxpbmVUbzpmdW5jdGlvbih0LGUpe3RoaXMuXys9IkwiKyh0aGlzLl94MT0rdCkrIiwiKyh0aGlzLl95MT0rZSl9LHF1YWRyYXRpY0N1cnZlVG86ZnVuY3Rpb24odCxlLG4saSl7dGhpcy5fKz0iUSIrICt0KyIsIisgK2UrIiwiKyh0aGlzLl94MT0rbikrIiwiKyh0aGlzLl95MT0raSl9LGJlemllckN1cnZlVG86ZnVuY3Rpb24odCxlLG4saSxyLG8pe3RoaXMuXys9IkMiKyArdCsiLCIrICtlKyIsIisgK24rIiwiKyAraSsiLCIrKHRoaXMuX3gxPStyKSsiLCIrKHRoaXMuX3kxPStvKX0sYXJjVG86ZnVuY3Rpb24odCxlLG4saSxyKXt2YXIgbz10aGlzLl94MSxhPXRoaXMuX3kxLHM9KG49K24pLSh0PSt0KSxsPShpPStpKS0oZT0rZSksYz1vLXQsdT1hLWUsaD1jKmMrdSp1O2lmKChyPStyKTwwKXRocm93IG5ldyBFcnJvcigibmVnYXRpdmUgcmFkaXVzOiAiK3IpO2lmKG51bGw9PT10aGlzLl94MSl0aGlzLl8rPSJNIisodGhpcy5feDE9dCkrIiwiKyh0aGlzLl95MT1lKTtlbHNlIGlmKGg+STgpaWYoTWF0aC5hYnModSpzLWwqYyk+STgmJnIpe3ZhciBkPW4tbyxwPWktYSxmPXMqcytsKmwsbT1kKmQrcCpwLGc9TWF0aC5zcXJ0KGYpLF89TWF0aC5zcXJ0KGgpLHk9cipNYXRoLnRhbigoUDgtTWF0aC5hY29zKChmK2gtbSkvKDIqZypfKSkpLzIpLHY9eS9fLGI9eS9nO01hdGguYWJzKHYtMSk+STgmJih0aGlzLl8rPSJMIisodCt2KmMpKyIsIisoZSt2KnUpKSx0aGlzLl8rPSJBIityKyIsIityKyIsMCwwLCIrICsodSpkPmMqcCkrIiwiKyh0aGlzLl94MT10K2IqcykrIiwiKyh0aGlzLl95MT1lK2IqbCl9ZWxzZSB0aGlzLl8rPSJMIisodGhpcy5feDE9dCkrIiwiKyh0aGlzLl95MT1lKTtlbHNlO30sYXJjOmZ1bmN0aW9uKHQsZSxuLGkscixvKXt0PSt0LGU9K2Usbz0hIW87dmFyIGE9KG49K24pKk1hdGguY29zKGkpLHM9bipNYXRoLnNpbihpKSxsPXQrYSxjPWUrcyx1PTFebyxoPW8/aS1yOnItaTtpZihuPDApdGhyb3cgbmV3IEVycm9yKCJuZWdhdGl2ZSByYWRpdXM6ICIrbik7bnVsbD09PXRoaXMuX3gxP3RoaXMuXys9Ik0iK2wrIiwiK2M6KE1hdGguYWJzKHRoaXMuX3gxLWwpPkk4fHxNYXRoLmFicyh0aGlzLl95MS1jKT5JOCkmJih0aGlzLl8rPSJMIitsKyIsIitjKSxuJiYoaDwwJiYoaD1oJU44K044KSxoPlI4P3RoaXMuXys9IkEiK24rIiwiK24rIiwwLDEsIit1KyIsIisodC1hKSsiLCIrKGUtcykrIkEiK24rIiwiK24rIiwwLDEsIit1KyIsIisodGhpcy5feDE9bCkrIiwiKyh0aGlzLl95MT1jKTpoPkk4JiYodGhpcy5fKz0iQSIrbisiLCIrbisiLDAsIisgKyhoPj1QOCkrIiwiK3UrIiwiKyh0aGlzLl94MT10K24qTWF0aC5jb3MocikpKyIsIisodGhpcy5feTE9ZStuKk1hdGguc2luKHIpKSkpfSxyZWN0OmZ1bmN0aW9uKHQsZSxuLGkpe3RoaXMuXys9Ik0iKyh0aGlzLl94MD10aGlzLl94MT0rdCkrIiwiKyh0aGlzLl95MD10aGlzLl95MT0rZSkrImgiKyArbisidiIrICtpKyJoIistbisiWiJ9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX319O3ZhciBCOD1NYXRoLmFicyxIOD1NYXRoLmF0YW4yLEY4PU1hdGguY29zLFY4PU1hdGgubWF4LFU4PU1hdGgubWluLGo4PU1hdGguc2luLEc4PU1hdGguc3FydCxXOD0xZS0xMixxOD1NYXRoLlBJLFk4PXE4LzIsWDg9MipxODtmdW5jdGlvbiAkOCh0KXtyZXR1cm4gdD4xPzA6dDwtMT9xODpNYXRoLmFjb3ModCl9ZnVuY3Rpb24gSzgodCl7cmV0dXJuIHQ+PTE/WTg6dDw9LTE/LVk4Ok1hdGguYXNpbih0KX1mdW5jdGlvbiBaOCh0KXtyZXR1cm4gdC5pbm5lclJhZGl1c31mdW5jdGlvbiBKOCh0KXtyZXR1cm4gdC5vdXRlclJhZGl1c31mdW5jdGlvbiBROCh0KXtyZXR1cm4gdC5zdGFydEFuZ2xlfWZ1bmN0aW9uIHQ3KHQpe3JldHVybiB0LmVuZEFuZ2xlfWZ1bmN0aW9uIGU3KHQpe3JldHVybiB0JiZ0LnBhZEFuZ2xlfWZ1bmN0aW9uIG43KHQsZSxuLGkscixvLGEscyl7dmFyIGw9bi10LGM9aS1lLHU9YS1yLGg9cy1vLGQ9KHUqKGUtbyktaCoodC1yKSkvKGgqbC11KmMpO3JldHVyblt0K2QqbCxlK2QqY119ZnVuY3Rpb24gaTcodCxlLG4saSxyLG8sYSl7dmFyIHM9dC1uLGw9ZS1pLGM9KGE/bzotbykvRzgocypzK2wqbCksdT1jKmwsaD0tYypzLGQ9dCt1LHA9ZStoLGY9bit1LG09aStoLGc9KGQrZikvMixfPShwK20pLzIseT1mLWQsdj1tLXAsYj15Knkrdip2LHg9ci1vLHc9ZCptLWYqcCxTPSh2PDA/LTE6MSkqRzgoVjgoMCx4KngqYi13KncpKSxNPSh3KnYteSpTKS9iLEU9KC13KnktdipTKS9iLFQ9KHcqdit5KlMpL2IsQz0oLXcqeSt2KlMpL2IsQT1NLWcsaz1FLV8sTD1ULWcsUD1DLV87cmV0dXJuIEEqQStrKms+TCpMK1AqUCYmKE09VCxFPUMpLHtjeDpNLGN5OkUseDAxOi11LHkwMTotaCx4MTE6TSooci94LTEpLHkxMTpFKihyL3gtMSl9fWZ1bmN0aW9uIHI3KHQpe3RoaXMuX2NvbnRleHQ9dH1mdW5jdGlvbiBvNyh0KXtyZXR1cm4gbmV3IHI3KHQpfWZ1bmN0aW9uIGE3KHQpe3JldHVybiB0WzBdfWZ1bmN0aW9uIHM3KHQpe3JldHVybiB0WzFdfWZ1bmN0aW9uIGw3KCl7dmFyIHQ9YTcsZT1zNyxuPUQ4KCEwKSxpPW51bGwscj1vNyxvPW51bGw7ZnVuY3Rpb24gYShhKXt2YXIgcyxsLGMsdT1hLmxlbmd0aCxoPSExO2ZvcihudWxsPT1pJiYobz1yKGM9ejgoKSkpLHM9MDtzPD11OysrcykhKHM8dSYmbihsPWFbc10scyxhKSk9PT1oJiYoKGg9IWgpP28ubGluZVN0YXJ0KCk6by5saW5lRW5kKCkpLGgmJm8ucG9pbnQoK3QobCxzLGEpLCtlKGwscyxhKSk7aWYoYylyZXR1cm4gbz1udWxsLGMrIiJ8fG51bGx9cmV0dXJuIGEueD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOkQ4KCtlKSxhKTp0fSxhLnk9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpEOCgrdCksYSk6ZX0sYS5kZWZpbmVkPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6RDgoISF0KSxhKTpufSxhLmN1cnZlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPXQsbnVsbCE9aSYmKG89cihpKSksYSk6cn0sYS5jb250ZXh0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhudWxsPT10P2k9bz1udWxsOm89cihpPXQpLGEpOml9LGF9ZnVuY3Rpb24gYzcoKXt2YXIgdD1hNyxlPW51bGwsbj1EOCgwKSxpPXM3LHI9RDgoITApLG89bnVsbCxhPW83LHM9bnVsbDtmdW5jdGlvbiBsKGwpe3ZhciBjLHUsaCxkLHAsZj1sLmxlbmd0aCxtPSExLGc9bmV3IEFycmF5KGYpLF89bmV3IEFycmF5KGYpO2ZvcihudWxsPT1vJiYocz1hKHA9ejgoKSkpLGM9MDtjPD1mOysrYyl7aWYoIShjPGYmJnIoZD1sW2NdLGMsbCkpPT09bSlpZihtPSFtKXU9YyxzLmFyZWFTdGFydCgpLHMubGluZVN0YXJ0KCk7ZWxzZXtmb3Iocy5saW5lRW5kKCkscy5saW5lU3RhcnQoKSxoPWMtMTtoPj11Oy0taClzLnBvaW50KGdbaF0sX1toXSk7cy5saW5lRW5kKCkscy5hcmVhRW5kKCl9bSYmKGdbY109K3QoZCxjLGwpLF9bY109K24oZCxjLGwpLHMucG9pbnQoZT8rZShkLGMsbCk6Z1tjXSxpPytpKGQsYyxsKTpfW2NdKSl9aWYocClyZXR1cm4gcz1udWxsLHArIiJ8fG51bGx9ZnVuY3Rpb24gYygpe3JldHVybiBsNygpLmRlZmluZWQocikuY3VydmUoYSkuY29udGV4dChvKX1yZXR1cm4gbC54PWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiBuP246RDgoK24pLGU9bnVsbCxsKTp0fSxsLngwPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6RDgoK2UpLGwpOnR9LGwueDE9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9bnVsbD09dD9udWxsOiJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6RDgoK3QpLGwpOmV9LGwueT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkQ4KCt0KSxpPW51bGwsbCk6bn0sbC55MD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkQ4KCt0KSxsKTpufSxsLnkxPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPW51bGw9PXQ/bnVsbDoiZnVuY3Rpb24iPT10eXBlb2YgdD90OkQ4KCt0KSxsKTppfSxsLmxpbmVYMD1sLmxpbmVZMD1mdW5jdGlvbigpe3JldHVybiBjKCkueCh0KS55KG4pfSxsLmxpbmVZMT1mdW5jdGlvbigpe3JldHVybiBjKCkueCh0KS55KGkpfSxsLmxpbmVYMT1mdW5jdGlvbigpe3JldHVybiBjKCkueChlKS55KG4pfSxsLmRlZmluZWQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpEOCghIXQpLGwpOnJ9LGwuY3VydmU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9dCxudWxsIT1vJiYocz1hKG8pKSxsKTphfSxsLmNvbnRleHQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG51bGw9PXQ/bz1zPW51bGw6cz1hKG89dCksbCk6b30sbH1mdW5jdGlvbiB1Nyh0LGUpe3JldHVybiBlPHQ/LTE6ZT50PzE6ZT49dD8wOk5hTn1mdW5jdGlvbiBoNyh0KXtyZXR1cm4gdH1yNy5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7KHRoaXMuX2xpbmV8fDAhPT10aGlzLl9saW5lJiYxPT09dGhpcy5fcG9pbnQpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9saW5lfSxwb2ludDpmdW5jdGlvbih0LGUpe3N3aXRjaCh0PSt0LGU9K2UsdGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8odCxlKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0LGUpO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yO2RlZmF1bHQ6dGhpcy5fY29udGV4dC5saW5lVG8odCxlKX19fTt2YXIgZDc9ZjcobzcpO2Z1bmN0aW9uIHA3KHQpe3RoaXMuX2N1cnZlPXR9ZnVuY3Rpb24gZjcodCl7ZnVuY3Rpb24gZShlKXtyZXR1cm4gbmV3IHA3KHQoZSkpfXJldHVybiBlLl9jdXJ2ZT10LGV9ZnVuY3Rpb24gbTcodCl7dmFyIGU9dC5jdXJ2ZTtyZXR1cm4gdC5hbmdsZT10LngsZGVsZXRlIHQueCx0LnJhZGl1cz10LnksZGVsZXRlIHQueSx0LmN1cnZlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP2UoZjcodCkpOmUoKS5fY3VydmV9LHR9ZnVuY3Rpb24gZzcoKXtyZXR1cm4gbTcobDcoKS5jdXJ2ZShkNykpfWZ1bmN0aW9uIF83KCl7dmFyIHQ9YzcoKS5jdXJ2ZShkNyksZT10LmN1cnZlLG49dC5saW5lWDAsaT10LmxpbmVYMSxyPXQubGluZVkwLG89dC5saW5lWTE7cmV0dXJuIHQuYW5nbGU9dC54LGRlbGV0ZSB0LngsdC5zdGFydEFuZ2xlPXQueDAsZGVsZXRlIHQueDAsdC5lbmRBbmdsZT10LngxLGRlbGV0ZSB0LngxLHQucmFkaXVzPXQueSxkZWxldGUgdC55LHQuaW5uZXJSYWRpdXM9dC55MCxkZWxldGUgdC55MCx0Lm91dGVyUmFkaXVzPXQueTEsZGVsZXRlIHQueTEsdC5saW5lU3RhcnRBbmdsZT1mdW5jdGlvbigpe3JldHVybiBtNyhuKCkpfSxkZWxldGUgdC5saW5lWDAsdC5saW5lRW5kQW5nbGU9ZnVuY3Rpb24oKXtyZXR1cm4gbTcoaSgpKX0sZGVsZXRlIHQubGluZVgxLHQubGluZUlubmVyUmFkaXVzPWZ1bmN0aW9uKCl7cmV0dXJuIG03KHIoKSl9LGRlbGV0ZSB0LmxpbmVZMCx0LmxpbmVPdXRlclJhZGl1cz1mdW5jdGlvbigpe3JldHVybiBtNyhvKCkpfSxkZWxldGUgdC5saW5lWTEsdC5jdXJ2ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9lKGY3KHQpKTplKCkuX2N1cnZlfSx0fWZ1bmN0aW9uIHk3KHQsZSl7cmV0dXJuWyhlPStlKSpNYXRoLmNvcyh0LT1NYXRoLlBJLzIpLGUqTWF0aC5zaW4odCldfXA3LnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fY3VydmUuYXJlYVN0YXJ0KCl9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9jdXJ2ZS5hcmVhRW5kKCl9LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX2N1cnZlLmxpbmVTdGFydCgpfSxsaW5lRW5kOmZ1bmN0aW9uKCl7dGhpcy5fY3VydmUubGluZUVuZCgpfSxwb2ludDpmdW5jdGlvbih0LGUpe3RoaXMuX2N1cnZlLnBvaW50KGUqTWF0aC5zaW4odCksZSotTWF0aC5jb3ModCkpfX07dmFyIHY3PUFycmF5LnByb3RvdHlwZS5zbGljZTtmdW5jdGlvbiBiNyh0KXtyZXR1cm4gdC5zb3VyY2V9ZnVuY3Rpb24geDcodCl7cmV0dXJuIHQudGFyZ2V0fWZ1bmN0aW9uIHc3KHQpe3ZhciBlPWI3LG49eDcsaT1hNyxyPXM3LG89bnVsbDtmdW5jdGlvbiBhKCl7dmFyIGEscz12Ny5jYWxsKGFyZ3VtZW50cyksbD1lLmFwcGx5KHRoaXMscyksYz1uLmFwcGx5KHRoaXMscyk7aWYob3x8KG89YT16OCgpKSx0KG8sK2kuYXBwbHkodGhpcywoc1swXT1sLHMpKSwrci5hcHBseSh0aGlzLHMpLCtpLmFwcGx5KHRoaXMsKHNbMF09YyxzKSksK3IuYXBwbHkodGhpcyxzKSksYSlyZXR1cm4gbz1udWxsLGErIiJ8fG51bGx9cmV0dXJuIGEuc291cmNlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXQsYSk6ZX0sYS50YXJnZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49dCxhKTpufSxhLng9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpEOCgrdCksYSk6aX0sYS55PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6RDgoK3QpLGEpOnJ9LGEuY29udGV4dD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz1udWxsPT10P251bGw6dCxhKTpvfSxhfWZ1bmN0aW9uIFM3KHQsZSxuLGkscil7dC5tb3ZlVG8oZSxuKSx0LmJlemllckN1cnZlVG8oZT0oZStpKS8yLG4sZSxyLGkscil9ZnVuY3Rpb24gTTcodCxlLG4saSxyKXt0Lm1vdmVUbyhlLG4pLHQuYmV6aWVyQ3VydmVUbyhlLG49KG4rcikvMixpLG4saSxyKX1mdW5jdGlvbiBFNyh0LGUsbixpLHIpe3ZhciBvPXk3KGUsbiksYT15NyhlLG49KG4rcikvMikscz15NyhpLG4pLGw9eTcoaSxyKTt0Lm1vdmVUbyhvWzBdLG9bMV0pLHQuYmV6aWVyQ3VydmVUbyhhWzBdLGFbMV0sc1swXSxzWzFdLGxbMF0sbFsxXSl9dmFyIFQ3PXtkcmF3OmZ1bmN0aW9uKHQsZSl7dmFyIG49TWF0aC5zcXJ0KGUvcTgpO3QubW92ZVRvKG4sMCksdC5hcmMoMCwwLG4sMCxYOCl9fSxDNz17ZHJhdzpmdW5jdGlvbih0LGUpe3ZhciBuPU1hdGguc3FydChlLzUpLzI7dC5tb3ZlVG8oLTMqbiwtbiksdC5saW5lVG8oLW4sLW4pLHQubGluZVRvKC1uLC0zKm4pLHQubGluZVRvKG4sLTMqbiksdC5saW5lVG8obiwtbiksdC5saW5lVG8oMypuLC1uKSx0LmxpbmVUbygzKm4sbiksdC5saW5lVG8obixuKSx0LmxpbmVUbyhuLDMqbiksdC5saW5lVG8oLW4sMypuKSx0LmxpbmVUbygtbixuKSx0LmxpbmVUbygtMypuLG4pLHQuY2xvc2VQYXRoKCl9fSxBNz1NYXRoLnNxcnQoMS8zKSxrNz0yKkE3LEw3PXtkcmF3OmZ1bmN0aW9uKHQsZSl7dmFyIG49TWF0aC5zcXJ0KGUvazcpLGk9bipBNzt0Lm1vdmVUbygwLC1uKSx0LmxpbmVUbyhpLDApLHQubGluZVRvKDAsbiksdC5saW5lVG8oLWksMCksdC5jbG9zZVBhdGgoKX19LFA3PU1hdGguc2luKHE4LzEwKS9NYXRoLnNpbig3KnE4LzEwKSxONz1NYXRoLnNpbihYOC8xMCkqUDcsSTc9LU1hdGguY29zKFg4LzEwKSpQNyxSNz17ZHJhdzpmdW5jdGlvbih0LGUpe3ZhciBuPU1hdGguc3FydCguODkwODEzMDkxNTI5Mjg1MiplKSxpPU43Km4scj1JNypuO3QubW92ZVRvKDAsLW4pLHQubGluZVRvKGkscik7Zm9yKHZhciBvPTE7bzw1Oysrbyl7dmFyIGE9WDgqby81LHM9TWF0aC5jb3MoYSksbD1NYXRoLnNpbihhKTt0LmxpbmVUbyhsKm4sLXMqbiksdC5saW5lVG8ocyppLWwqcixsKmkrcypyKX10LmNsb3NlUGF0aCgpfX0sTzc9e2RyYXc6ZnVuY3Rpb24odCxlKXt2YXIgbj1NYXRoLnNxcnQoZSksaT0tbi8yO3QucmVjdChpLGksbixuKX19LHo3PU1hdGguc3FydCgzKSxENz17ZHJhdzpmdW5jdGlvbih0LGUpe3ZhciBuPS1NYXRoLnNxcnQoZS8oMyp6NykpO3QubW92ZVRvKDAsMipuKSx0LmxpbmVUbygtejcqbiwtbiksdC5saW5lVG8oejcqbiwtbiksdC5jbG9zZVBhdGgoKX19LEI3PS0uNSxINz1NYXRoLnNxcnQoMykvMixGNz0xL01hdGguc3FydCgxMiksVjc9MyooRjcvMisxKSxVNz17ZHJhdzpmdW5jdGlvbih0LGUpe3ZhciBuPU1hdGguc3FydChlL1Y3KSxpPW4vMixyPW4qRjcsbz1pLGE9bipGNytuLHM9LW8sbD1hO3QubW92ZVRvKGksciksdC5saW5lVG8obyxhKSx0LmxpbmVUbyhzLGwpLHQubGluZVRvKEI3KmktSDcqcixINyppK0I3KnIpLHQubGluZVRvKEI3Km8tSDcqYSxINypvK0I3KmEpLHQubGluZVRvKEI3KnMtSDcqbCxINypzK0I3KmwpLHQubGluZVRvKEI3KmkrSDcqcixCNypyLUg3KmkpLHQubGluZVRvKEI3Km8rSDcqYSxCNyphLUg3Km8pLHQubGluZVRvKEI3KnMrSDcqbCxCNypsLUg3KnMpLHQuY2xvc2VQYXRoKCl9fSxqNz1bVDcsQzcsTDcsTzcsUjcsRDcsVTddO2Z1bmN0aW9uIEc3KCl7fWZ1bmN0aW9uIFc3KHQsZSxuKXt0Ll9jb250ZXh0LmJlemllckN1cnZlVG8oKDIqdC5feDArdC5feDEpLzMsKDIqdC5feTArdC5feTEpLzMsKHQuX3gwKzIqdC5feDEpLzMsKHQuX3kwKzIqdC5feTEpLzMsKHQuX3gwKzQqdC5feDErZSkvNiwodC5feTArNCp0Ll95MStuKS82KX1mdW5jdGlvbiBxNyh0KXt0aGlzLl9jb250ZXh0PXR9ZnVuY3Rpb24gWTcodCl7dGhpcy5fY29udGV4dD10fWZ1bmN0aW9uIFg3KHQpe3RoaXMuX2NvbnRleHQ9dH1mdW5jdGlvbiAkNyh0LGUpe3RoaXMuX2Jhc2lzPW5ldyBxNyh0KSx0aGlzLl9iZXRhPWV9cTcucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feDA9dGhpcy5feDE9dGhpcy5feTA9dGhpcy5feTE9TmFOLHRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMzpXNyh0aGlzLHRoaXMuX3gxLHRoaXMuX3kxKTtjYXNlIDI6dGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDEsdGhpcy5feTEpfSh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMT09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rpb24odCxlKXtzd2l0Y2godD0rdCxlPStlLHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKHQsZSk6dGhpcy5fY29udGV4dC5tb3ZlVG8odCxlKTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9MjticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9Myx0aGlzLl9jb250ZXh0LmxpbmVUbygoNSp0aGlzLl94MCt0aGlzLl94MSkvNiwoNSp0aGlzLl95MCt0aGlzLl95MSkvNik7ZGVmYXVsdDpXNyh0aGlzLHQsZSl9dGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dCx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT1lfX0sWTcucHJvdG90eXBlPXthcmVhU3RhcnQ6RzcsYXJlYUVuZDpHNyxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94MD10aGlzLl94MT10aGlzLl94Mj10aGlzLl94Mz10aGlzLl94ND10aGlzLl95MD10aGlzLl95MT10aGlzLl95Mj10aGlzLl95Mz10aGlzLl95ND1OYU4sdGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAxOnRoaXMuX2NvbnRleHQubW92ZVRvKHRoaXMuX3gyLHRoaXMuX3kyKSx0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpO2JyZWFrO2Nhc2UgMjp0aGlzLl9jb250ZXh0Lm1vdmVUbygodGhpcy5feDIrMip0aGlzLl94MykvMywodGhpcy5feTIrMip0aGlzLl95MykvMyksdGhpcy5fY29udGV4dC5saW5lVG8oKHRoaXMuX3gzKzIqdGhpcy5feDIpLzMsKHRoaXMuX3kzKzIqdGhpcy5feTIpLzMpLHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7YnJlYWs7Y2FzZSAzOnRoaXMucG9pbnQodGhpcy5feDIsdGhpcy5feTIpLHRoaXMucG9pbnQodGhpcy5feDMsdGhpcy5feTMpLHRoaXMucG9pbnQodGhpcy5feDQsdGhpcy5feTQpfX0scG9pbnQ6ZnVuY3Rpb24odCxlKXtzd2l0Y2godD0rdCxlPStlLHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl94Mj10LHRoaXMuX3kyPWU7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTIsdGhpcy5feDM9dCx0aGlzLl95Mz1lO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zLHRoaXMuX3g0PXQsdGhpcy5feTQ9ZSx0aGlzLl9jb250ZXh0Lm1vdmVUbygodGhpcy5feDArNCp0aGlzLl94MSt0KS82LCh0aGlzLl95MCs0KnRoaXMuX3kxK2UpLzYpO2JyZWFrO2RlZmF1bHQ6VzcodGhpcyx0LGUpfXRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXQsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9ZX19LFg3LnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3kwPXRoaXMuX3kxPU5hTix0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7KHRoaXMuX2xpbmV8fDAhPT10aGlzLl9saW5lJiYzPT09dGhpcy5fcG9pbnQpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9saW5lfSxwb2ludDpmdW5jdGlvbih0LGUpe3N3aXRjaCh0PSt0LGU9K2UsdGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zO3ZhciBuPSh0aGlzLl94MCs0KnRoaXMuX3gxK3QpLzYsaT0odGhpcy5feTArNCp0aGlzLl95MStlKS82O3RoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8obixpKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyhuLGkpO2JyZWFrO2Nhc2UgMzp0aGlzLl9wb2ludD00O2RlZmF1bHQ6VzcodGhpcyx0LGUpfXRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXQsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9ZX19LCQ3LnByb3RvdHlwZT17bGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feD1bXSx0aGlzLl95PVtdLHRoaXMuX2Jhc2lzLmxpbmVTdGFydCgpfSxsaW5lRW5kOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5feCxlPXRoaXMuX3ksbj10Lmxlbmd0aC0xO2lmKG4+MClmb3IodmFyIGkscj10WzBdLG89ZVswXSxhPXRbbl0tcixzPWVbbl0tbyxsPS0xOysrbDw9bjspdGhpcy5fYmFzaXMucG9pbnQodGhpcy5fYmV0YSp0W2xdKygxLXRoaXMuX2JldGEpKihyKyhpPWwvbikqYSksdGhpcy5fYmV0YSplW2xdKygxLXRoaXMuX2JldGEpKihvK2kqcykpO3RoaXMuX3g9dGhpcy5feT1udWxsLHRoaXMuX2Jhc2lzLmxpbmVFbmQoKX0scG9pbnQ6ZnVuY3Rpb24odCxlKXt0aGlzLl94LnB1c2goK3QpLHRoaXMuX3kucHVzaCgrZSl9fTt2YXIgSzc9KGZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gbih0KXtyZXR1cm4gMT09PWU/bmV3IHE3KHQpOm5ldyAkNyh0LGUpfXJldHVybiBuLmJldGE9ZnVuY3Rpb24oZSl7cmV0dXJuIHQoK2UpfSxufSkoLjg1KTtmdW5jdGlvbiBaNyh0LGUsbil7dC5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKHQuX3gxK3QuX2sqKHQuX3gyLXQuX3gwKSx0Ll95MSt0Ll9rKih0Ll95Mi10Ll95MCksdC5feDIrdC5fayoodC5feDEtZSksdC5feTIrdC5fayoodC5feTEtbiksdC5feDIsdC5feTIpfWZ1bmN0aW9uIEo3KHQsZSl7dGhpcy5fY29udGV4dD10LHRoaXMuX2s9KDEtZSkvNn1KNy5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94MD10aGlzLl94MT10aGlzLl94Mj10aGlzLl95MD10aGlzLl95MT10aGlzLl95Mj1OYU4sdGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAyOnRoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gyLHRoaXMuX3kyKTticmVhaztjYXNlIDM6WjcodGhpcyx0aGlzLl94MSx0aGlzLl95MSl9KHRoaXMuX2xpbmV8fDAhPT10aGlzLl9saW5lJiYxPT09dGhpcy5fcG9pbnQpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9saW5lfSxwb2ludDpmdW5jdGlvbih0LGUpe3N3aXRjaCh0PSt0LGU9K2UsdGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8odCxlKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0LGUpO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yLHRoaXMuX3gxPXQsdGhpcy5feTE9ZTticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9MztkZWZhdWx0Olo3KHRoaXMsdCxlKX10aGlzLl94MD10aGlzLl94MSx0aGlzLl94MT10aGlzLl94Mix0aGlzLl94Mj10LHRoaXMuX3kwPXRoaXMuX3kxLHRoaXMuX3kxPXRoaXMuX3kyLHRoaXMuX3kyPWV9fTt2YXIgUTc9KGZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gbih0KXtyZXR1cm4gbmV3IEo3KHQsZSl9cmV0dXJuIG4udGVuc2lvbj1mdW5jdGlvbihlKXtyZXR1cm4gdCgrZSl9LG59KSgwKTtmdW5jdGlvbiB0dHQodCxlKXt0aGlzLl9jb250ZXh0PXQsdGhpcy5faz0oMS1lKS82fXR0dC5wcm90b3R5cGU9e2FyZWFTdGFydDpHNyxhcmVhRW5kOkc3LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3gyPXRoaXMuX3gzPXRoaXMuX3g0PXRoaXMuX3g1PXRoaXMuX3kwPXRoaXMuX3kxPXRoaXMuX3kyPXRoaXMuX3kzPXRoaXMuX3k0PXRoaXMuX3k1PU5hTix0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDE6dGhpcy5fY29udGV4dC5tb3ZlVG8odGhpcy5feDMsdGhpcy5feTMpLHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7YnJlYWs7Y2FzZSAyOnRoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gzLHRoaXMuX3kzKSx0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpO2JyZWFrO2Nhc2UgMzp0aGlzLnBvaW50KHRoaXMuX3gzLHRoaXMuX3kzKSx0aGlzLnBvaW50KHRoaXMuX3g0LHRoaXMuX3k0KSx0aGlzLnBvaW50KHRoaXMuX3g1LHRoaXMuX3k1KX19LHBvaW50OmZ1bmN0aW9uKHQsZSl7c3dpdGNoKHQ9K3QsZT0rZSx0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTEsdGhpcy5feDM9dCx0aGlzLl95Mz1lO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yLHRoaXMuX2NvbnRleHQubW92ZVRvKHRoaXMuX3g0PXQsdGhpcy5feTQ9ZSk7YnJlYWs7Y2FzZSAyOnRoaXMuX3BvaW50PTMsdGhpcy5feDU9dCx0aGlzLl95NT1lO2JyZWFrO2RlZmF1bHQ6WjcodGhpcyx0LGUpfXRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXRoaXMuX3gyLHRoaXMuX3gyPXQsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9dGhpcy5feTIsdGhpcy5feTI9ZX19O3ZhciBldHQ9KGZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gbih0KXtyZXR1cm4gbmV3IHR0dCh0LGUpfXJldHVybiBuLnRlbnNpb249ZnVuY3Rpb24oZSl7cmV0dXJuIHQoK2UpfSxufSkoMCk7ZnVuY3Rpb24gbnR0KHQsZSl7dGhpcy5fY29udGV4dD10LHRoaXMuX2s9KDEtZSkvNn1udHQucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feDA9dGhpcy5feDE9dGhpcy5feDI9dGhpcy5feTA9dGhpcy5feTE9dGhpcy5feTI9TmFOLHRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXsodGhpcy5fbGluZXx8MCE9PXRoaXMuX2xpbmUmJjM9PT10aGlzLl9wb2ludCkmJnRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCksdGhpcy5fbGluZT0xLXRoaXMuX2xpbmV9LHBvaW50OmZ1bmN0aW9uKHQsZSl7c3dpdGNoKHQ9K3QsZT0rZSx0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTE7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTI7YnJlYWs7Y2FzZSAyOnRoaXMuX3BvaW50PTMsdGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94Mix0aGlzLl95Mik6dGhpcy5fY29udGV4dC5tb3ZlVG8odGhpcy5feDIsdGhpcy5feTIpO2JyZWFrO2Nhc2UgMzp0aGlzLl9wb2ludD00O2RlZmF1bHQ6WjcodGhpcyx0LGUpfXRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXRoaXMuX3gyLHRoaXMuX3gyPXQsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9dGhpcy5feTIsdGhpcy5feTI9ZX19O3ZhciBpdHQ9KGZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gbih0KXtyZXR1cm4gbmV3IG50dCh0LGUpfXJldHVybiBuLnRlbnNpb249ZnVuY3Rpb24oZSl7cmV0dXJuIHQoK2UpfSxufSkoMCk7ZnVuY3Rpb24gcnR0KHQsZSxuKXt2YXIgaT10Ll94MSxyPXQuX3kxLG89dC5feDIsYT10Ll95MjtpZih0Ll9sMDFfYT5XOCl7dmFyIHM9Mip0Ll9sMDFfMmErMyp0Ll9sMDFfYSp0Ll9sMTJfYSt0Ll9sMTJfMmEsbD0zKnQuX2wwMV9hKih0Ll9sMDFfYSt0Ll9sMTJfYSk7aT0oaSpzLXQuX3gwKnQuX2wxMl8yYSt0Ll94Mip0Ll9sMDFfMmEpL2wscj0ocipzLXQuX3kwKnQuX2wxMl8yYSt0Ll95Mip0Ll9sMDFfMmEpL2x9aWYodC5fbDIzX2E+Vzgpe3ZhciBjPTIqdC5fbDIzXzJhKzMqdC5fbDIzX2EqdC5fbDEyX2ErdC5fbDEyXzJhLHU9Myp0Ll9sMjNfYSoodC5fbDIzX2ErdC5fbDEyX2EpO289KG8qYyt0Ll94MSp0Ll9sMjNfMmEtZSp0Ll9sMTJfMmEpL3UsYT0oYSpjK3QuX3kxKnQuX2wyM18yYS1uKnQuX2wxMl8yYSkvdX10Ll9jb250ZXh0LmJlemllckN1cnZlVG8oaSxyLG8sYSx0Ll94Mix0Ll95Mil9ZnVuY3Rpb24gb3R0KHQsZSl7dGhpcy5fY29udGV4dD10LHRoaXMuX2FscGhhPWV9b3R0LnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3gyPXRoaXMuX3kwPXRoaXMuX3kxPXRoaXMuX3kyPU5hTix0aGlzLl9sMDFfYT10aGlzLl9sMTJfYT10aGlzLl9sMjNfYT10aGlzLl9sMDFfMmE9dGhpcy5fbDEyXzJhPXRoaXMuX2wyM18yYT10aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDI6dGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDIsdGhpcy5feTIpO2JyZWFrO2Nhc2UgMzp0aGlzLnBvaW50KHRoaXMuX3gyLHRoaXMuX3kyKX0odGhpcy5fbGluZXx8MCE9PXRoaXMuX2xpbmUmJjE9PT10aGlzLl9wb2ludCkmJnRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCksdGhpcy5fbGluZT0xLXRoaXMuX2xpbmV9LHBvaW50OmZ1bmN0aW9uKHQsZSl7aWYodD0rdCxlPStlLHRoaXMuX3BvaW50KXt2YXIgbj10aGlzLl94Mi10LGk9dGhpcy5feTItZTt0aGlzLl9sMjNfYT1NYXRoLnNxcnQodGhpcy5fbDIzXzJhPU1hdGgucG93KG4qbitpKmksdGhpcy5fYWxwaGEpKX1zd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8odCxlKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0LGUpO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zO2RlZmF1bHQ6cnR0KHRoaXMsdCxlKX10aGlzLl9sMDFfYT10aGlzLl9sMTJfYSx0aGlzLl9sMTJfYT10aGlzLl9sMjNfYSx0aGlzLl9sMDFfMmE9dGhpcy5fbDEyXzJhLHRoaXMuX2wxMl8yYT10aGlzLl9sMjNfMmEsdGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dGhpcy5feDIsdGhpcy5feDI9dCx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT10aGlzLl95Mix0aGlzLl95Mj1lfX07dmFyIGF0dD0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQpe3JldHVybiBlP25ldyBvdHQodCxlKTpuZXcgSjcodCwwKX1yZXR1cm4gbi5hbHBoYT1mdW5jdGlvbihlKXtyZXR1cm4gdCgrZSl9LG59KSguNSk7ZnVuY3Rpb24gc3R0KHQsZSl7dGhpcy5fY29udGV4dD10LHRoaXMuX2FscGhhPWV9c3R0LnByb3RvdHlwZT17YXJlYVN0YXJ0Okc3LGFyZWFFbmQ6RzcsbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feDA9dGhpcy5feDE9dGhpcy5feDI9dGhpcy5feDM9dGhpcy5feDQ9dGhpcy5feDU9dGhpcy5feTA9dGhpcy5feTE9dGhpcy5feTI9dGhpcy5feTM9dGhpcy5feTQ9dGhpcy5feTU9TmFOLHRoaXMuX2wwMV9hPXRoaXMuX2wxMl9hPXRoaXMuX2wyM19hPXRoaXMuX2wwMV8yYT10aGlzLl9sMTJfMmE9dGhpcy5fbDIzXzJhPXRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0aGlzLl94Myx0aGlzLl95MyksdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTticmVhaztjYXNlIDI6dGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDMsdGhpcy5feTMpLHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7YnJlYWs7Y2FzZSAzOnRoaXMucG9pbnQodGhpcy5feDMsdGhpcy5feTMpLHRoaXMucG9pbnQodGhpcy5feDQsdGhpcy5feTQpLHRoaXMucG9pbnQodGhpcy5feDUsdGhpcy5feTUpfX0scG9pbnQ6ZnVuY3Rpb24odCxlKXtpZih0PSt0LGU9K2UsdGhpcy5fcG9pbnQpe3ZhciBuPXRoaXMuX3gyLXQsaT10aGlzLl95Mi1lO3RoaXMuX2wyM19hPU1hdGguc3FydCh0aGlzLl9sMjNfMmE9TWF0aC5wb3cobipuK2kqaSx0aGlzLl9hbHBoYSkpfXN3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTEsdGhpcy5feDM9dCx0aGlzLl95Mz1lO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yLHRoaXMuX2NvbnRleHQubW92ZVRvKHRoaXMuX3g0PXQsdGhpcy5feTQ9ZSk7YnJlYWs7Y2FzZSAyOnRoaXMuX3BvaW50PTMsdGhpcy5feDU9dCx0aGlzLl95NT1lO2JyZWFrO2RlZmF1bHQ6cnR0KHRoaXMsdCxlKX10aGlzLl9sMDFfYT10aGlzLl9sMTJfYSx0aGlzLl9sMTJfYT10aGlzLl9sMjNfYSx0aGlzLl9sMDFfMmE9dGhpcy5fbDEyXzJhLHRoaXMuX2wxMl8yYT10aGlzLl9sMjNfMmEsdGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dGhpcy5feDIsdGhpcy5feDI9dCx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT10aGlzLl95Mix0aGlzLl95Mj1lfX07dmFyIGx0dD0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQpe3JldHVybiBlP25ldyBzdHQodCxlKTpuZXcgdHR0KHQsMCl9cmV0dXJuIG4uYWxwaGE9ZnVuY3Rpb24oZSl7cmV0dXJuIHQoK2UpfSxufSkoLjUpO2Z1bmN0aW9uIGN0dCh0LGUpe3RoaXMuX2NvbnRleHQ9dCx0aGlzLl9hbHBoYT1lfWN0dC5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94MD10aGlzLl94MT10aGlzLl94Mj10aGlzLl95MD10aGlzLl95MT10aGlzLl95Mj1OYU4sdGhpcy5fbDAxX2E9dGhpcy5fbDEyX2E9dGhpcy5fbDIzX2E9dGhpcy5fbDAxXzJhPXRoaXMuX2wxMl8yYT10aGlzLl9sMjNfMmE9dGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpeyh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMz09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rpb24odCxlKXtpZih0PSt0LGU9K2UsdGhpcy5fcG9pbnQpe3ZhciBuPXRoaXMuX3gyLXQsaT10aGlzLl95Mi1lO3RoaXMuX2wyM19hPU1hdGguc3FydCh0aGlzLl9sMjNfMmE9TWF0aC5wb3cobipuK2kqaSx0aGlzLl9hbHBoYSkpfXN3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTE7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTI7YnJlYWs7Y2FzZSAyOnRoaXMuX3BvaW50PTMsdGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94Mix0aGlzLl95Mik6dGhpcy5fY29udGV4dC5tb3ZlVG8odGhpcy5feDIsdGhpcy5feTIpO2JyZWFrO2Nhc2UgMzp0aGlzLl9wb2ludD00O2RlZmF1bHQ6cnR0KHRoaXMsdCxlKX10aGlzLl9sMDFfYT10aGlzLl9sMTJfYSx0aGlzLl9sMTJfYT10aGlzLl9sMjNfYSx0aGlzLl9sMDFfMmE9dGhpcy5fbDEyXzJhLHRoaXMuX2wxMl8yYT10aGlzLl9sMjNfMmEsdGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dGhpcy5feDIsdGhpcy5feDI9dCx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT10aGlzLl95Mix0aGlzLl95Mj1lfX07dmFyIHV0dD0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQpe3JldHVybiBlP25ldyBjdHQodCxlKTpuZXcgbnR0KHQsMCl9cmV0dXJuIG4uYWxwaGE9ZnVuY3Rpb24oZSl7cmV0dXJuIHQoK2UpfSxufSkoLjUpO2Z1bmN0aW9uIGh0dCh0KXt0aGlzLl9jb250ZXh0PXR9ZnVuY3Rpb24gZHR0KHQpe3JldHVybiB0PDA/LTE6MX1mdW5jdGlvbiBwdHQodCxlLG4pe3ZhciBpPXQuX3gxLXQuX3gwLHI9ZS10Ll94MSxvPSh0Ll95MS10Ll95MCkvKGl8fHI8MCYmLTApLGE9KG4tdC5feTEpLyhyfHxpPDAmJi0wKSxzPShvKnIrYSppKS8oaStyKTtyZXR1cm4oZHR0KG8pK2R0dChhKSkqTWF0aC5taW4oTWF0aC5hYnMobyksTWF0aC5hYnMoYSksLjUqTWF0aC5hYnMocykpfHwwfWZ1bmN0aW9uIGZ0dCh0LGUpe3ZhciBuPXQuX3gxLXQuX3gwO3JldHVybiBuPygzKih0Ll95MS10Ll95MCkvbi1lKS8yOmV9ZnVuY3Rpb24gbXR0KHQsZSxuKXt2YXIgaT10Ll94MCxyPXQuX3gxLG89dC5feTEsYT0oci1pKS8zO3QuX2NvbnRleHQuYmV6aWVyQ3VydmVUbyhpK2EsdC5feTArYSplLHItYSxvLWEqbixyLG8pfWZ1bmN0aW9uIGd0dCh0KXt0aGlzLl9jb250ZXh0PXR9ZnVuY3Rpb24gX3R0KHQpe3RoaXMuX2NvbnRleHQ9bmV3IHl0dCh0KX1mdW5jdGlvbiB5dHQodCl7dGhpcy5fY29udGV4dD10fWZ1bmN0aW9uIHZ0dCh0KXt0aGlzLl9jb250ZXh0PXR9ZnVuY3Rpb24gYnR0KHQpe3ZhciBlLG4saT10Lmxlbmd0aC0xLHI9bmV3IEFycmF5KGkpLG89bmV3IEFycmF5KGkpLGE9bmV3IEFycmF5KGkpO2ZvcihyWzBdPTAsb1swXT0yLGFbMF09dFswXSsyKnRbMV0sZT0xO2U8aS0xOysrZSlyW2VdPTEsb1tlXT00LGFbZV09NCp0W2VdKzIqdFtlKzFdO2ZvcihyW2ktMV09MixvW2ktMV09NyxhW2ktMV09OCp0W2ktMV0rdFtpXSxlPTE7ZTxpOysrZSlvW2VdLT1uPXJbZV0vb1tlLTFdLGFbZV0tPW4qYVtlLTFdO2ZvcihyW2ktMV09YVtpLTFdL29baS0xXSxlPWktMjtlPj0wOy0tZSlyW2VdPShhW2VdLXJbZSsxXSkvb1tlXTtmb3Iob1tpLTFdPSh0W2ldK3JbaS0xXSkvMixlPTA7ZTxpLTE7KytlKW9bZV09Mip0W2UrMV0tcltlKzFdO3JldHVybltyLG9dfWZ1bmN0aW9uIHh0dCh0LGUpe3RoaXMuX2NvbnRleHQ9dCx0aGlzLl90PWV9ZnVuY3Rpb24gd3R0KHQsZSl7aWYoKHI9dC5sZW5ndGgpPjEpZm9yKHZhciBuLGkscixvPTEsYT10W2VbMF1dLHM9YS5sZW5ndGg7bzxyOysrbylmb3IoaT1hLGE9dFtlW29dXSxuPTA7bjxzOysrbilhW25dWzFdKz1hW25dWzBdPWlzTmFOKGlbbl1bMV0pP2lbbl1bMF06aVtuXVsxXX1mdW5jdGlvbiBTdHQodCl7Zm9yKHZhciBlPXQubGVuZ3RoLG49bmV3IEFycmF5KGUpOy0tZT49MDspbltlXT1lO3JldHVybiBufWZ1bmN0aW9uIE10dCh0LGUpe3JldHVybiB0W2VdfWZ1bmN0aW9uIEV0dCh0KXt2YXIgZT10Lm1hcChUdHQpO3JldHVybiBTdHQodCkuc29ydCgoZnVuY3Rpb24odCxuKXtyZXR1cm4gZVt0XS1lW25dfSkpfWZ1bmN0aW9uIFR0dCh0KXtmb3IodmFyIGUsbj0wLGk9LTEscj10Lmxlbmd0aDsrK2k8cjspKGU9K3RbaV1bMV0pJiYobis9ZSk7cmV0dXJuIG59aHR0LnByb3RvdHlwZT17YXJlYVN0YXJ0Okc3LGFyZWFFbmQ6RzcsbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpe3RoaXMuX3BvaW50JiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpfSxwb2ludDpmdW5jdGlvbih0LGUpe3Q9K3QsZT0rZSx0aGlzLl9wb2ludD90aGlzLl9jb250ZXh0LmxpbmVUbyh0LGUpOih0aGlzLl9wb2ludD0xLHRoaXMuX2NvbnRleHQubW92ZVRvKHQsZSkpfX0sZ3R0LnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3kwPXRoaXMuX3kxPXRoaXMuX3QwPU5hTix0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDI6dGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDEsdGhpcy5feTEpO2JyZWFrO2Nhc2UgMzptdHQodGhpcyx0aGlzLl90MCxmdHQodGhpcyx0aGlzLl90MCkpfSh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMT09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rpb24odCxlKXt2YXIgbj1OYU47aWYoZT0rZSwodD0rdCkhPT10aGlzLl94MXx8ZSE9PXRoaXMuX3kxKXtzd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8odCxlKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0LGUpO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zLG10dCh0aGlzLGZ0dCh0aGlzLG49cHR0KHRoaXMsdCxlKSksbik7YnJlYWs7ZGVmYXVsdDptdHQodGhpcyx0aGlzLl90MCxuPXB0dCh0aGlzLHQsZSkpfXRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXQsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9ZSx0aGlzLl90MD1ufX19LChfdHQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZ3R0LnByb3RvdHlwZSkpLnBvaW50PWZ1bmN0aW9uKHQsZSl7Z3R0LnByb3RvdHlwZS5wb2ludC5jYWxsKHRoaXMsZSx0KX0seXR0LnByb3RvdHlwZT17bW92ZVRvOmZ1bmN0aW9uKHQsZSl7dGhpcy5fY29udGV4dC5tb3ZlVG8oZSx0KX0sY2xvc2VQYXRoOmZ1bmN0aW9uKCl7dGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKX0sbGluZVRvOmZ1bmN0aW9uKHQsZSl7dGhpcy5fY29udGV4dC5saW5lVG8oZSx0KX0sYmV6aWVyQ3VydmVUbzpmdW5jdGlvbih0LGUsbixpLHIsbyl7dGhpcy5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKGUsdCxpLG4sbyxyKX19LHZ0dC5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94PVtdLHRoaXMuX3k9W119LGxpbmVFbmQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl94LGU9dGhpcy5feSxuPXQubGVuZ3RoO2lmKG4paWYodGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVUbyh0WzBdLGVbMF0pOnRoaXMuX2NvbnRleHQubW92ZVRvKHRbMF0sZVswXSksMj09PW4pdGhpcy5fY29udGV4dC5saW5lVG8odFsxXSxlWzFdKTtlbHNlIGZvcih2YXIgaT1idHQodCkscj1idHQoZSksbz0wLGE9MTthPG47KytvLCsrYSl0aGlzLl9jb250ZXh0LmJlemllckN1cnZlVG8oaVswXVtvXSxyWzBdW29dLGlbMV1bb10sclsxXVtvXSx0W2FdLGVbYV0pOyh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMT09PW4pJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9saW5lLHRoaXMuX3g9dGhpcy5feT1udWxsfSxwb2ludDpmdW5jdGlvbih0LGUpe3RoaXMuX3gucHVzaCgrdCksdGhpcy5feS5wdXNoKCtlKX19LHh0dC5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94PXRoaXMuX3k9TmFOLHRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXswPHRoaXMuX3QmJnRoaXMuX3Q8MSYmMj09PXRoaXMuX3BvaW50JiZ0aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94LHRoaXMuX3kpLCh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMT09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPj0wJiYodGhpcy5fdD0xLXRoaXMuX3QsdGhpcy5fbGluZT0xLXRoaXMuX2xpbmUpfSxwb2ludDpmdW5jdGlvbih0LGUpe3N3aXRjaCh0PSt0LGU9K2UsdGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8odCxlKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0LGUpO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yO2RlZmF1bHQ6aWYodGhpcy5fdDw9MCl0aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94LGUpLHRoaXMuX2NvbnRleHQubGluZVRvKHQsZSk7ZWxzZXt2YXIgbj10aGlzLl94KigxLXRoaXMuX3QpK3QqdGhpcy5fdDt0aGlzLl9jb250ZXh0LmxpbmVUbyhuLHRoaXMuX3kpLHRoaXMuX2NvbnRleHQubGluZVRvKG4sZSl9fXRoaXMuX3g9dCx0aGlzLl95PWV9fTt2YXIgQ3R0PW5ldyBEYXRlLEF0dD1uZXcgRGF0ZTtmdW5jdGlvbiBrdHQodCxlLG4saSl7ZnVuY3Rpb24gcihlKXtyZXR1cm4gdChlPW5ldyBEYXRlKCtlKSksZX1yZXR1cm4gci5mbG9vcj1yLHIuY2VpbD1mdW5jdGlvbihuKXtyZXR1cm4gdChuPW5ldyBEYXRlKG4tMSkpLGUobiwxKSx0KG4pLG59LHIucm91bmQ9ZnVuY3Rpb24odCl7dmFyIGU9cih0KSxuPXIuY2VpbCh0KTtyZXR1cm4gdC1lPG4tdD9lOm59LHIub2Zmc2V0PWZ1bmN0aW9uKHQsbil7cmV0dXJuIGUodD1uZXcgRGF0ZSgrdCksbnVsbD09bj8xOk1hdGguZmxvb3IobikpLHR9LHIucmFuZ2U9ZnVuY3Rpb24obixpLG8pe3ZhciBhLHM9W107aWYobj1yLmNlaWwobiksbz1udWxsPT1vPzE6TWF0aC5mbG9vcihvKSwhKG48aSYmbz4wKSlyZXR1cm4gcztkb3tzLnB1c2goYT1uZXcgRGF0ZSgrbikpLGUobixvKSx0KG4pfXdoaWxlKGE8biYmbjxpKTtyZXR1cm4gc30sci5maWx0ZXI9ZnVuY3Rpb24obil7cmV0dXJuIGt0dCgoZnVuY3Rpb24oZSl7aWYoZT49ZSlmb3IoO3QoZSksIW4oZSk7KWUuc2V0VGltZShlLTEpfSksKGZ1bmN0aW9uKHQsaSl7aWYodD49dClpZihpPDApZm9yKDsrK2k8PTA7KWZvcig7ZSh0LC0xKSwhbih0KTspO2Vsc2UgZm9yKDstLWk+PTA7KWZvcig7ZSh0LDEpLCFuKHQpOyk7fSkpfSxuJiYoci5jb3VudD1mdW5jdGlvbihlLGkpe3JldHVybiBDdHQuc2V0VGltZSgrZSksQXR0LnNldFRpbWUoK2kpLHQoQ3R0KSx0KEF0dCksTWF0aC5mbG9vcihuKEN0dCxBdHQpKX0sci5ldmVyeT1mdW5jdGlvbih0KXtyZXR1cm4gdD1NYXRoLmZsb29yKHQpLGlzRmluaXRlKHQpJiZ0PjA/dD4xP3IuZmlsdGVyKGk/ZnVuY3Rpb24oZSl7cmV0dXJuIGkoZSkldD09MH06ZnVuY3Rpb24oZSl7cmV0dXJuIHIuY291bnQoMCxlKSV0PT0wfSk6cjpudWxsfSkscn12YXIgTHR0PWt0dCgoZnVuY3Rpb24oKXt9KSwoZnVuY3Rpb24odCxlKXt0LnNldFRpbWUoK3QrZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4gZS10fSkpO0x0dC5ldmVyeT1mdW5jdGlvbih0KXtyZXR1cm4gdD1NYXRoLmZsb29yKHQpLGlzRmluaXRlKHQpJiZ0PjA/dD4xP2t0dCgoZnVuY3Rpb24oZSl7ZS5zZXRUaW1lKE1hdGguZmxvb3IoZS90KSp0KX0pLChmdW5jdGlvbihlLG4pe2Uuc2V0VGltZSgrZStuKnQpfSksKGZ1bmN0aW9uKGUsbil7cmV0dXJuKG4tZSkvdH0pKTpMdHQ6bnVsbH07dmFyIFB0dD1MdHQucmFuZ2UsTnR0PTFlMyxJdHQ9NmU0LFJ0dD0zNmU1LE90dD04NjRlNSx6dHQ9NjA0OGU1LER0dD1rdHQoKGZ1bmN0aW9uKHQpe3Quc2V0VGltZShNYXRoLmZsb29yKHQvTnR0KSpOdHQpfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRUaW1lKCt0K2UqTnR0KX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQpL050dH0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRVVENTZWNvbmRzKCl9KSksQnR0PUR0dC5yYW5nZSxIdHQ9a3R0KChmdW5jdGlvbih0KXt0LnNldFRpbWUoTWF0aC5mbG9vcih0L0l0dCkqSXR0KX0pLChmdW5jdGlvbih0LGUpe3Quc2V0VGltZSgrdCtlKkl0dCl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4oZS10KS9JdHR9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0TWludXRlcygpfSkpLEZ0dD1IdHQucmFuZ2UsVnR0PWt0dCgoZnVuY3Rpb24odCl7dmFyIGU9dC5nZXRUaW1lem9uZU9mZnNldCgpKkl0dCVSdHQ7ZTwwJiYoZSs9UnR0KSx0LnNldFRpbWUoTWF0aC5mbG9vcigoK3QtZSkvUnR0KSpSdHQrZSl9KSwoZnVuY3Rpb24odCxlKXt0LnNldFRpbWUoK3QrZSpSdHQpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdCkvUnR0fSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldEhvdXJzKCl9KSksVXR0PVZ0dC5yYW5nZSxqdHQ9a3R0KChmdW5jdGlvbih0KXt0LnNldEhvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXREYXRlKHQuZ2V0RGF0ZSgpK2UpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdC0oZS5nZXRUaW1lem9uZU9mZnNldCgpLXQuZ2V0VGltZXpvbmVPZmZzZXQoKSkqSXR0KS9PdHR9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0RGF0ZSgpLTF9KSksR3R0PWp0dC5yYW5nZTtmdW5jdGlvbiBXdHQodCl7cmV0dXJuIGt0dCgoZnVuY3Rpb24oZSl7ZS5zZXREYXRlKGUuZ2V0RGF0ZSgpLShlLmdldERheSgpKzctdCklNyksZS5zZXRIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0RGF0ZSh0LmdldERhdGUoKSs3KmUpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdC0oZS5nZXRUaW1lem9uZU9mZnNldCgpLXQuZ2V0VGltZXpvbmVPZmZzZXQoKSkqSXR0KS96dHR9KSl9dmFyIHF0dD1XdHQoMCksWXR0PVd0dCgxKSxYdHQ9V3R0KDIpLCR0dD1XdHQoMyksS3R0PVd0dCg0KSxadHQ9V3R0KDUpLEp0dD1XdHQoNiksUXR0PXF0dC5yYW5nZSx0ZXQ9WXR0LnJhbmdlLGVldD1YdHQucmFuZ2UsbmV0PSR0dC5yYW5nZSxpZXQ9S3R0LnJhbmdlLHJldD1adHQucmFuZ2Usb2V0PUp0dC5yYW5nZSxhZXQ9a3R0KChmdW5jdGlvbih0KXt0LnNldERhdGUoMSksdC5zZXRIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0TW9udGgodC5nZXRNb250aCgpK2UpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUuZ2V0TW9udGgoKS10LmdldE1vbnRoKCkrMTIqKGUuZ2V0RnVsbFllYXIoKS10LmdldEZ1bGxZZWFyKCkpfSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldE1vbnRoKCl9KSksc2V0PWFldC5yYW5nZSxjZXQ9a3R0KChmdW5jdGlvbih0KXt0LnNldE1vbnRoKDAsMSksdC5zZXRIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0RnVsbFllYXIodC5nZXRGdWxsWWVhcigpK2UpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUuZ2V0RnVsbFllYXIoKS10LmdldEZ1bGxZZWFyKCl9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0RnVsbFllYXIoKX0pKTtjZXQuZXZlcnk9ZnVuY3Rpb24odCl7cmV0dXJuIGlzRmluaXRlKHQ9TWF0aC5mbG9vcih0KSkmJnQ+MD9rdHQoKGZ1bmN0aW9uKGUpe2Uuc2V0RnVsbFllYXIoTWF0aC5mbG9vcihlLmdldEZ1bGxZZWFyKCkvdCkqdCksZS5zZXRNb250aCgwLDEpLGUuc2V0SG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24oZSxuKXtlLnNldEZ1bGxZZWFyKGUuZ2V0RnVsbFllYXIoKStuKnQpfSkpOm51bGx9O3ZhciB1ZXQ9Y2V0LnJhbmdlLGhldD1rdHQoKGZ1bmN0aW9uKHQpe3Quc2V0VVRDU2Vjb25kcygwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRUaW1lKCt0K2UqSXR0KX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQpL0l0dH0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRVVENNaW51dGVzKCl9KSksZGV0PWhldC5yYW5nZSxwZXQ9a3R0KChmdW5jdGlvbih0KXt0LnNldFVUQ01pbnV0ZXMoMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRUaW1lKCt0K2UqUnR0KX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQpL1J0dH0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRVVENIb3VycygpfSkpLGZldD1wZXQucmFuZ2UsbWV0PWt0dCgoZnVuY3Rpb24odCl7dC5zZXRVVENIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0VVRDRGF0ZSh0LmdldFVUQ0RhdGUoKStlKX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQpL090dH0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRVVENEYXRlKCktMX0pKSxnZXQ9bWV0LnJhbmdlO2Z1bmN0aW9uIF9ldCh0KXtyZXR1cm4ga3R0KChmdW5jdGlvbihlKXtlLnNldFVUQ0RhdGUoZS5nZXRVVENEYXRlKCktKGUuZ2V0VVRDRGF5KCkrNy10KSU3KSxlLnNldFVUQ0hvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRVVENEYXRlKHQuZ2V0VVRDRGF0ZSgpKzcqZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4oZS10KS96dHR9KSl9dmFyIHlldD1fZXQoMCksdmV0PV9ldCgxKSxiZXQ9X2V0KDIpLHhldD1fZXQoMyksd2V0PV9ldCg0KSxNZXQ9X2V0KDUpLEVldD1fZXQoNiksVGV0PXlldC5yYW5nZSxDZXQ9dmV0LnJhbmdlLEFldD1iZXQucmFuZ2Usa2V0PXhldC5yYW5nZSxMZXQ9d2V0LnJhbmdlLFBldD1NZXQucmFuZ2UsTmV0PUVldC5yYW5nZSxJZXQ9a3R0KChmdW5jdGlvbih0KXt0LnNldFVUQ0RhdGUoMSksdC5zZXRVVENIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0VVRDTW9udGgodC5nZXRVVENNb250aCgpK2UpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUuZ2V0VVRDTW9udGgoKS10LmdldFVUQ01vbnRoKCkrMTIqKGUuZ2V0VVRDRnVsbFllYXIoKS10LmdldFVUQ0Z1bGxZZWFyKCkpfSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFVUQ01vbnRoKCl9KSksUmV0PUlldC5yYW5nZSxPZXQ9a3R0KChmdW5jdGlvbih0KXt0LnNldFVUQ01vbnRoKDAsMSksdC5zZXRVVENIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0VVRDRnVsbFllYXIodC5nZXRVVENGdWxsWWVhcigpK2UpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUuZ2V0VVRDRnVsbFllYXIoKS10LmdldFVUQ0Z1bGxZZWFyKCl9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0VVRDRnVsbFllYXIoKX0pKTtPZXQuZXZlcnk9ZnVuY3Rpb24odCl7cmV0dXJuIGlzRmluaXRlKHQ9TWF0aC5mbG9vcih0KSkmJnQ+MD9rdHQoKGZ1bmN0aW9uKGUpe2Uuc2V0VVRDRnVsbFllYXIoTWF0aC5mbG9vcihlLmdldFVUQ0Z1bGxZZWFyKCkvdCkqdCksZS5zZXRVVENNb250aCgwLDEpLGUuc2V0VVRDSG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24oZSxuKXtlLnNldFVUQ0Z1bGxZZWFyKGUuZ2V0VVRDRnVsbFllYXIoKStuKnQpfSkpOm51bGx9O3ZhciB6ZXQ9T2V0LnJhbmdlLERldD1uZXcgRGF0ZSxCZXQ9bmV3IERhdGU7ZnVuY3Rpb24gSGV0KHQsZSxuLGkpe2Z1bmN0aW9uIHIoZSl7cmV0dXJuIHQoZT0wPT09YXJndW1lbnRzLmxlbmd0aD9uZXcgRGF0ZTpuZXcgRGF0ZSgrZSkpLGV9cmV0dXJuIHIuZmxvb3I9ZnVuY3Rpb24oZSl7cmV0dXJuIHQoZT1uZXcgRGF0ZSgrZSkpLGV9LHIuY2VpbD1mdW5jdGlvbihuKXtyZXR1cm4gdChuPW5ldyBEYXRlKG4tMSkpLGUobiwxKSx0KG4pLG59LHIucm91bmQ9ZnVuY3Rpb24odCl7dmFyIGU9cih0KSxuPXIuY2VpbCh0KTtyZXR1cm4gdC1lPG4tdD9lOm59LHIub2Zmc2V0PWZ1bmN0aW9uKHQsbil7cmV0dXJuIGUodD1uZXcgRGF0ZSgrdCksbnVsbD09bj8xOk1hdGguZmxvb3IobikpLHR9LHIucmFuZ2U9ZnVuY3Rpb24obixpLG8pe3ZhciBhLHM9W107aWYobj1yLmNlaWwobiksbz1udWxsPT1vPzE6TWF0aC5mbG9vcihvKSwhKG48aSYmbz4wKSlyZXR1cm4gcztkb3tzLnB1c2goYT1uZXcgRGF0ZSgrbikpLGUobixvKSx0KG4pfXdoaWxlKGE8biYmbjxpKTtyZXR1cm4gc30sci5maWx0ZXI9ZnVuY3Rpb24obil7cmV0dXJuIEhldCgoZnVuY3Rpb24oZSl7aWYoZT49ZSlmb3IoO3QoZSksIW4oZSk7KWUuc2V0VGltZShlLTEpfSksKGZ1bmN0aW9uKHQsaSl7aWYodD49dClpZihpPDApZm9yKDsrK2k8PTA7KWZvcig7ZSh0LC0xKSwhbih0KTspO2Vsc2UgZm9yKDstLWk+PTA7KWZvcig7ZSh0LDEpLCFuKHQpOyk7fSkpfSxuJiYoci5jb3VudD1mdW5jdGlvbihlLGkpe3JldHVybiBEZXQuc2V0VGltZSgrZSksQmV0LnNldFRpbWUoK2kpLHQoRGV0KSx0KEJldCksTWF0aC5mbG9vcihuKERldCxCZXQpKX0sci5ldmVyeT1mdW5jdGlvbih0KXtyZXR1cm4gdD1NYXRoLmZsb29yKHQpLGlzRmluaXRlKHQpJiZ0PjA/dD4xP3IuZmlsdGVyKGk/ZnVuY3Rpb24oZSl7cmV0dXJuIGkoZSkldD09MH06ZnVuY3Rpb24oZSl7cmV0dXJuIHIuY291bnQoMCxlKSV0PT0wfSk6cjpudWxsfSkscn12YXIgRmV0PTg2NGU1LFZldD02MDQ4ZTUsVWV0PUhldCgoZnVuY3Rpb24odCl7dC5zZXRIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0RGF0ZSh0LmdldERhdGUoKStlKX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQtNmU0KihlLmdldFRpbWV6b25lT2Zmc2V0KCktdC5nZXRUaW1lem9uZU9mZnNldCgpKSkvRmV0fSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldERhdGUoKS0xfSkpO2Z1bmN0aW9uIGpldCh0KXtyZXR1cm4gSGV0KChmdW5jdGlvbihlKXtlLnNldERhdGUoZS5nZXREYXRlKCktKGUuZ2V0RGF5KCkrNy10KSU3KSxlLnNldEhvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXREYXRlKHQuZ2V0RGF0ZSgpKzcqZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4oZS10LTZlNCooZS5nZXRUaW1lem9uZU9mZnNldCgpLXQuZ2V0VGltZXpvbmVPZmZzZXQoKSkpL1ZldH0pKX12YXIgR2V0PWpldCgwKSxXZXQ9amV0KDEpO2pldCgyKSxqZXQoMyk7dmFyIHFldD1qZXQoNCk7amV0KDUpLGpldCg2KTt2YXIgWWV0PUhldCgoZnVuY3Rpb24odCl7dC5zZXRNb250aCgwLDEpLHQuc2V0SG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldEZ1bGxZZWFyKHQuZ2V0RnVsbFllYXIoKStlKX0pLChmdW5jdGlvbih0LGUpe3JldHVybiBlLmdldEZ1bGxZZWFyKCktdC5nZXRGdWxsWWVhcigpfSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldEZ1bGxZZWFyKCl9KSk7WWV0LmV2ZXJ5PWZ1bmN0aW9uKHQpe3JldHVybiBpc0Zpbml0ZSh0PU1hdGguZmxvb3IodCkpJiZ0PjA/SGV0KChmdW5jdGlvbihlKXtlLnNldEZ1bGxZZWFyKE1hdGguZmxvb3IoZS5nZXRGdWxsWWVhcigpL3QpKnQpLGUuc2V0TW9udGgoMCwxKSxlLnNldEhvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKGUsbil7ZS5zZXRGdWxsWWVhcihlLmdldEZ1bGxZZWFyKCkrbip0KX0pKTpudWxsfTt2YXIgWGV0PVlldCwkZXQ9SGV0KChmdW5jdGlvbih0KXt0LnNldFVUQ0hvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRVVENEYXRlKHQuZ2V0VVRDRGF0ZSgpK2UpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdCkvRmV0fSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFVUQ0RhdGUoKS0xfSkpO2Z1bmN0aW9uIEtldCh0KXtyZXR1cm4gSGV0KChmdW5jdGlvbihlKXtlLnNldFVUQ0RhdGUoZS5nZXRVVENEYXRlKCktKGUuZ2V0VVRDRGF5KCkrNy10KSU3KSxlLnNldFVUQ0hvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRVVENEYXRlKHQuZ2V0VVRDRGF0ZSgpKzcqZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4oZS10KS9WZXR9KSl9dmFyIFpldD1LZXQoMCksSmV0PUtldCgxKTtLZXQoMiksS2V0KDMpO3ZhciBRZXQ9S2V0KDQpO0tldCg1KSxLZXQoNik7dmFyIHRudD1IZXQoKGZ1bmN0aW9uKHQpe3Quc2V0VVRDTW9udGgoMCwxKSx0LnNldFVUQ0hvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRVVENGdWxsWWVhcih0LmdldFVUQ0Z1bGxZZWFyKCkrZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5nZXRVVENGdWxsWWVhcigpLXQuZ2V0VVRDRnVsbFllYXIoKX0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRVVENGdWxsWWVhcigpfSkpO3RudC5ldmVyeT1mdW5jdGlvbih0KXtyZXR1cm4gaXNGaW5pdGUodD1NYXRoLmZsb29yKHQpKSYmdD4wP0hldCgoZnVuY3Rpb24oZSl7ZS5zZXRVVENGdWxsWWVhcihNYXRoLmZsb29yKGUuZ2V0VVRDRnVsbFllYXIoKS90KSp0KSxlLnNldFVUQ01vbnRoKDAsMSksZS5zZXRVVENIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbihlLG4pe2Uuc2V0VVRDRnVsbFllYXIoZS5nZXRVVENGdWxsWWVhcigpK24qdCl9KSk6bnVsbH07dmFyIGVudD10bnQ7ZnVuY3Rpb24gbm50KHQpe2lmKDA8PXQueSYmdC55PDEwMCl7dmFyIGU9bmV3IERhdGUoLTEsdC5tLHQuZCx0LkgsdC5NLHQuUyx0LkwpO3JldHVybiBlLnNldEZ1bGxZZWFyKHQueSksZX1yZXR1cm4gbmV3IERhdGUodC55LHQubSx0LmQsdC5ILHQuTSx0LlMsdC5MKX1mdW5jdGlvbiBpbnQodCl7aWYoMDw9dC55JiZ0Lnk8MTAwKXt2YXIgZT1uZXcgRGF0ZShEYXRlLlVUQygtMSx0Lm0sdC5kLHQuSCx0Lk0sdC5TLHQuTCkpO3JldHVybiBlLnNldFVUQ0Z1bGxZZWFyKHQueSksZX1yZXR1cm4gbmV3IERhdGUoRGF0ZS5VVEModC55LHQubSx0LmQsdC5ILHQuTSx0LlMsdC5MKSl9ZnVuY3Rpb24gcm50KHQpe3JldHVybnt5OnQsbTowLGQ6MSxIOjAsTTowLFM6MCxMOjB9fWZ1bmN0aW9uIG9udCh0KXt2YXIgZT10LmRhdGVUaW1lLG49dC5kYXRlLGk9dC50aW1lLHI9dC5wZXJpb2RzLG89dC5kYXlzLGE9dC5zaG9ydERheXMscz10Lm1vbnRocyxsPXQuc2hvcnRNb250aHMsYz1fbnQociksdT15bnQociksaD1fbnQobyksZD15bnQobykscD1fbnQoYSksZj15bnQoYSksbT1fbnQocyksZz15bnQocyksXz1fbnQobCkseT15bnQobCksdj17YTpmdW5jdGlvbiBiKHQpe3JldHVybiBhW3QuZ2V0RGF5KCldfSxBOmZ1bmN0aW9uIHgodCl7cmV0dXJuIG9bdC5nZXREYXkoKV19LGI6ZnVuY3Rpb24gdyh0KXtyZXR1cm4gbFt0LmdldE1vbnRoKCldfSxCOmZ1bmN0aW9uIFModCl7cmV0dXJuIHNbdC5nZXRNb250aCgpXX0sYzpudWxsLGQ6Qm50LGU6Qm50LGY6am50LEg6SG50LEk6Rm50LGo6Vm50LEw6VW50LG06R250LE06V250LHA6ZnVuY3Rpb24gTSh0KXtyZXR1cm4gclsrKHQuZ2V0SG91cnMoKT49MTIpXX0sUTp2aXQsczpiaXQsUzpxbnQsdTpZbnQsVTpYbnQsVjokbnQsdzpLbnQsVzpabnQseDpudWxsLFg6bnVsbCx5OkpudCxZOlFudCxaOnRpdCwiJSI6eWl0fSxFPXthOmZ1bmN0aW9uIFQodCl7cmV0dXJuIGFbdC5nZXRVVENEYXkoKV19LEE6ZnVuY3Rpb24gQyh0KXtyZXR1cm4gb1t0LmdldFVUQ0RheSgpXX0sYjpmdW5jdGlvbiBBKHQpe3JldHVybiBsW3QuZ2V0VVRDTW9udGgoKV19LEI6ZnVuY3Rpb24gayh0KXtyZXR1cm4gc1t0LmdldFVUQ01vbnRoKCldfSxjOm51bGwsZDplaXQsZTplaXQsZjphaXQsSDpuaXQsSTppaXQsajpyaXQsTDpvaXQsbTpzaXQsTTpsaXQscDpmdW5jdGlvbiBMKHQpe3JldHVybiByWysodC5nZXRVVENIb3VycygpPj0xMildfSxROnZpdCxzOmJpdCxTOmNpdCx1OnVpdCxVOmhpdCxWOmRpdCx3OnBpdCxXOmZpdCx4Om51bGwsWDpudWxsLHk6bWl0LFk6Z2l0LFo6X2l0LCIlIjp5aXR9LFA9e2E6ZnVuY3Rpb24gTih0LGUsbil7dmFyIGk9cC5leGVjKGUuc2xpY2UobikpO3JldHVybiBpPyh0Lnc9ZltpWzBdLnRvTG93ZXJDYXNlKCldLG4raVswXS5sZW5ndGgpOi0xfSxBOmZ1bmN0aW9uIEkodCxlLG4pe3ZhciBpPWguZXhlYyhlLnNsaWNlKG4pKTtyZXR1cm4gaT8odC53PWRbaVswXS50b0xvd2VyQ2FzZSgpXSxuK2lbMF0ubGVuZ3RoKTotMX0sYjpmdW5jdGlvbiBSKHQsZSxuKXt2YXIgaT1fLmV4ZWMoZS5zbGljZShuKSk7cmV0dXJuIGk/KHQubT15W2lbMF0udG9Mb3dlckNhc2UoKV0sbitpWzBdLmxlbmd0aCk6LTF9LEI6ZnVuY3Rpb24gTyh0LGUsbil7dmFyIGk9bS5leGVjKGUuc2xpY2UobikpO3JldHVybiBpPyh0Lm09Z1tpWzBdLnRvTG93ZXJDYXNlKCldLG4raVswXS5sZW5ndGgpOi0xfSxjOmZ1bmN0aW9uIHoodCxuLGkpe3JldHVybiBVKHQsZSxuLGkpfSxkOkFudCxlOkFudCxmOlJudCxIOkxudCxJOkxudCxqOmtudCxMOkludCxtOkNudCxNOlBudCxwOmZ1bmN0aW9uIEQodCxlLG4pe3ZhciBpPWMuZXhlYyhlLnNsaWNlKG4pKTtyZXR1cm4gaT8odC5wPXVbaVswXS50b0xvd2VyQ2FzZSgpXSxuK2lbMF0ubGVuZ3RoKTotMX0sUTp6bnQsczpEbnQsUzpObnQsdTpibnQsVTp4bnQsVjp3bnQsdzp2bnQsVzpTbnQseDpmdW5jdGlvbiBCKHQsZSxpKXtyZXR1cm4gVSh0LG4sZSxpKX0sWDpmdW5jdGlvbiBIKHQsZSxuKXtyZXR1cm4gVSh0LGksZSxuKX0seTpFbnQsWTpNbnQsWjpUbnQsIiUiOk9udH07ZnVuY3Rpb24gRih0LGUpe3JldHVybiBmdW5jdGlvbihuKXt2YXIgaSxyLG8sYT1bXSxzPS0xLGw9MCxjPXQubGVuZ3RoO2ZvcihuIGluc3RhbmNlb2YgRGF0ZXx8KG49bmV3IERhdGUoK24pKTsrK3M8YzspMzc9PT10LmNoYXJDb2RlQXQocykmJihhLnB1c2godC5zbGljZShsLHMpKSxudWxsIT0ocj1obnRbaT10LmNoYXJBdCgrK3MpXSk/aT10LmNoYXJBdCgrK3MpOnI9ImUiPT09aT8iICI6IjAiLChvPWVbaV0pJiYoaT1vKG4scikpLGEucHVzaChpKSxsPXMrMSk7cmV0dXJuIGEucHVzaCh0LnNsaWNlKGwscykpLGEuam9pbigiIil9fWZ1bmN0aW9uIFYodCxlKXtyZXR1cm4gZnVuY3Rpb24obil7dmFyIGkscixvPXJudCgxOTAwKTtpZihVKG8sdCxuKz0iIiwwKSE9bi5sZW5ndGgpcmV0dXJuIG51bGw7aWYoIlEiaW4gbylyZXR1cm4gbmV3IERhdGUoby5RKTtpZigicCJpbiBvJiYoby5IPW8uSCUxMisxMipvLnApLCJWImluIG8pe2lmKG8uVjwxfHxvLlY+NTMpcmV0dXJuIG51bGw7InciaW4gb3x8KG8udz0xKSwiWiJpbiBvPyhyPShpPWludChybnQoby55KSkpLmdldFVUQ0RheSgpLGk9cj40fHwwPT09cj9KZXQuY2VpbChpKTpKZXQoaSksaT0kZXQub2Zmc2V0KGksNyooby5WLTEpKSxvLnk9aS5nZXRVVENGdWxsWWVhcigpLG8ubT1pLmdldFVUQ01vbnRoKCksby5kPWkuZ2V0VVRDRGF0ZSgpKyhvLncrNiklNyk6KHI9KGk9ZShybnQoby55KSkpLmdldERheSgpLGk9cj40fHwwPT09cj9XZXQuY2VpbChpKTpXZXQoaSksaT1VZXQub2Zmc2V0KGksNyooby5WLTEpKSxvLnk9aS5nZXRGdWxsWWVhcigpLG8ubT1pLmdldE1vbnRoKCksby5kPWkuZ2V0RGF0ZSgpKyhvLncrNiklNyl9ZWxzZSgiVyJpbiBvfHwiVSJpbiBvKSYmKCJ3ImluIG98fChvLnc9InUiaW4gbz9vLnUlNzoiVyJpbiBvPzE6MCkscj0iWiJpbiBvP2ludChybnQoby55KSkuZ2V0VVRDRGF5KCk6ZShybnQoby55KSkuZ2V0RGF5KCksby5tPTAsby5kPSJXImluIG8/KG8udys2KSU3Kzcqby5XLShyKzUpJTc6by53Kzcqby5VLShyKzYpJTcpO3JldHVybiJaImluIG8/KG8uSCs9by5aLzEwMHwwLG8uTSs9by5aJTEwMCxpbnQobykpOmUobyl9fWZ1bmN0aW9uIFUodCxlLG4saSl7Zm9yKHZhciByLG8sYT0wLHM9ZS5sZW5ndGgsbD1uLmxlbmd0aDthPHM7KXtpZihpPj1sKXJldHVybi0xO2lmKDM3PT09KHI9ZS5jaGFyQ29kZUF0KGErKykpKXtpZihyPWUuY2hhckF0KGErKyksIShvPVBbciBpbiBobnQ/ZS5jaGFyQXQoYSsrKTpyXSl8fChpPW8odCxuLGkpKTwwKXJldHVybi0xfWVsc2UgaWYociE9bi5jaGFyQ29kZUF0KGkrKykpcmV0dXJuLTF9cmV0dXJuIGl9cmV0dXJuIHYueD1GKG4sdiksdi5YPUYoaSx2KSx2LmM9RihlLHYpLEUueD1GKG4sRSksRS5YPUYoaSxFKSxFLmM9RihlLEUpLHtmb3JtYXQ6ZnVuY3Rpb24odCl7dmFyIGU9Rih0Kz0iIix2KTtyZXR1cm4gZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0fSxlfSxwYXJzZTpmdW5jdGlvbih0KXt2YXIgZT1WKHQrPSIiLG5udCk7cmV0dXJuIGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdH0sZX0sdXRjRm9ybWF0OmZ1bmN0aW9uKHQpe3ZhciBlPUYodCs9IiIsRSk7cmV0dXJuIGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdH0sZX0sdXRjUGFyc2U6ZnVuY3Rpb24odCl7dmFyIGU9Vih0LGludCk7cmV0dXJuIGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdH0sZX19fXZhciBhbnQsc250LGxudCxjbnQsdW50LGhudD17Ii0iOiIiLF86IiAiLDA6IjAifSxkbnQ9L15ccypcZCsvLHBudD0vXiUvLGZudD0vW1xcXiQqKz98W1xdKCkue31dL2c7ZnVuY3Rpb24gbW50KHQsZSxuKXt2YXIgaT10PDA/Ii0iOiIiLHI9KGk/LXQ6dCkrIiIsbz1yLmxlbmd0aDtyZXR1cm4gaSsobzxuP25ldyBBcnJheShuLW8rMSkuam9pbihlKStyOnIpfWZ1bmN0aW9uIGdudCh0KXtyZXR1cm4gdC5yZXBsYWNlKGZudCwiXFwkJiIpfWZ1bmN0aW9uIF9udCh0KXtyZXR1cm4gbmV3IFJlZ0V4cCgiXig/OiIrdC5tYXAoZ250KS5qb2luKCJ8IikrIikiLCJpIil9ZnVuY3Rpb24geW50KHQpe2Zvcih2YXIgZT17fSxuPS0xLGk9dC5sZW5ndGg7KytuPGk7KWVbdFtuXS50b0xvd2VyQ2FzZSgpXT1uO3JldHVybiBlfWZ1bmN0aW9uIHZudCh0LGUsbil7dmFyIGk9ZG50LmV4ZWMoZS5zbGljZShuLG4rMSkpO3JldHVybiBpPyh0Lnc9K2lbMF0sbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gYm50KHQsZSxuKXt2YXIgaT1kbnQuZXhlYyhlLnNsaWNlKG4sbisxKSk7cmV0dXJuIGk/KHQudT0raVswXSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiB4bnQodCxlLG4pe3ZhciBpPWRudC5leGVjKGUuc2xpY2UobixuKzIpKTtyZXR1cm4gaT8odC5VPStpWzBdLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIHdudCh0LGUsbil7dmFyIGk9ZG50LmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiBpPyh0LlY9K2lbMF0sbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gU250KHQsZSxuKXt2YXIgaT1kbnQuZXhlYyhlLnNsaWNlKG4sbisyKSk7cmV0dXJuIGk/KHQuVz0raVswXSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBNbnQodCxlLG4pe3ZhciBpPWRudC5leGVjKGUuc2xpY2UobixuKzQpKTtyZXR1cm4gaT8odC55PStpWzBdLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIEVudCh0LGUsbil7dmFyIGk9ZG50LmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiBpPyh0Lnk9K2lbMF0rKCtpWzBdPjY4PzE5MDA6MmUzKSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBUbnQodCxlLG4pe3ZhciBpPS9eKFopfChbKy1dXGRcZCkoPzo6PyhcZFxkKSk/Ly5leGVjKGUuc2xpY2UobixuKzYpKTtyZXR1cm4gaT8odC5aPWlbMV0/MDotKGlbMl0rKGlbM118fCIwMCIpKSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBDbnQodCxlLG4pe3ZhciBpPWRudC5leGVjKGUuc2xpY2UobixuKzIpKTtyZXR1cm4gaT8odC5tPWlbMF0tMSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBBbnQodCxlLG4pe3ZhciBpPWRudC5leGVjKGUuc2xpY2UobixuKzIpKTtyZXR1cm4gaT8odC5kPStpWzBdLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIGtudCh0LGUsbil7dmFyIGk9ZG50LmV4ZWMoZS5zbGljZShuLG4rMykpO3JldHVybiBpPyh0Lm09MCx0LmQ9K2lbMF0sbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gTG50KHQsZSxuKXt2YXIgaT1kbnQuZXhlYyhlLnNsaWNlKG4sbisyKSk7cmV0dXJuIGk/KHQuSD0raVswXSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBQbnQodCxlLG4pe3ZhciBpPWRudC5leGVjKGUuc2xpY2UobixuKzIpKTtyZXR1cm4gaT8odC5NPStpWzBdLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIE5udCh0LGUsbil7dmFyIGk9ZG50LmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiBpPyh0LlM9K2lbMF0sbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gSW50KHQsZSxuKXt2YXIgaT1kbnQuZXhlYyhlLnNsaWNlKG4sbiszKSk7cmV0dXJuIGk/KHQuTD0raVswXSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBSbnQodCxlLG4pe3ZhciBpPWRudC5leGVjKGUuc2xpY2UobixuKzYpKTtyZXR1cm4gaT8odC5MPU1hdGguZmxvb3IoaVswXS8xZTMpLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIE9udCh0LGUsbil7dmFyIGk9cG50LmV4ZWMoZS5zbGljZShuLG4rMSkpO3JldHVybiBpP24raVswXS5sZW5ndGg6LTF9ZnVuY3Rpb24gem50KHQsZSxuKXt2YXIgaT1kbnQuZXhlYyhlLnNsaWNlKG4pKTtyZXR1cm4gaT8odC5RPStpWzBdLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIERudCh0LGUsbil7dmFyIGk9ZG50LmV4ZWMoZS5zbGljZShuKSk7cmV0dXJuIGk/KHQuUT0xZTMqK2lbMF0sbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gQm50KHQsZSl7cmV0dXJuIG1udCh0LmdldERhdGUoKSxlLDIpfWZ1bmN0aW9uIEhudCh0LGUpe3JldHVybiBtbnQodC5nZXRIb3VycygpLGUsMil9ZnVuY3Rpb24gRm50KHQsZSl7cmV0dXJuIG1udCh0LmdldEhvdXJzKCklMTJ8fDEyLGUsMil9ZnVuY3Rpb24gVm50KHQsZSl7cmV0dXJuIG1udCgxK1VldC5jb3VudChYZXQodCksdCksZSwzKX1mdW5jdGlvbiBVbnQodCxlKXtyZXR1cm4gbW50KHQuZ2V0TWlsbGlzZWNvbmRzKCksZSwzKX1mdW5jdGlvbiBqbnQodCxlKXtyZXR1cm4gVW50KHQsZSkrIjAwMCJ9ZnVuY3Rpb24gR250KHQsZSl7cmV0dXJuIG1udCh0LmdldE1vbnRoKCkrMSxlLDIpfWZ1bmN0aW9uIFdudCh0LGUpe3JldHVybiBtbnQodC5nZXRNaW51dGVzKCksZSwyKX1mdW5jdGlvbiBxbnQodCxlKXtyZXR1cm4gbW50KHQuZ2V0U2Vjb25kcygpLGUsMil9ZnVuY3Rpb24gWW50KHQpe3ZhciBlPXQuZ2V0RGF5KCk7cmV0dXJuIDA9PT1lPzc6ZX1mdW5jdGlvbiBYbnQodCxlKXtyZXR1cm4gbW50KEdldC5jb3VudChYZXQodCksdCksZSwyKX1mdW5jdGlvbiAkbnQodCxlKXt2YXIgbj10LmdldERheSgpO3JldHVybiB0PW4+PTR8fDA9PT1uP3FldCh0KTpxZXQuY2VpbCh0KSxtbnQocWV0LmNvdW50KFhldCh0KSx0KSsoND09PVhldCh0KS5nZXREYXkoKSksZSwyKX1mdW5jdGlvbiBLbnQodCl7cmV0dXJuIHQuZ2V0RGF5KCl9ZnVuY3Rpb24gWm50KHQsZSl7cmV0dXJuIG1udChXZXQuY291bnQoWGV0KHQpLHQpLGUsMil9ZnVuY3Rpb24gSm50KHQsZSl7cmV0dXJuIG1udCh0LmdldEZ1bGxZZWFyKCklMTAwLGUsMil9ZnVuY3Rpb24gUW50KHQsZSl7cmV0dXJuIG1udCh0LmdldEZ1bGxZZWFyKCklMWU0LGUsNCl9ZnVuY3Rpb24gdGl0KHQpe3ZhciBlPXQuZ2V0VGltZXpvbmVPZmZzZXQoKTtyZXR1cm4oZT4wPyItIjooZSo9LTEsIisiKSkrbW50KGUvNjB8MCwiMCIsMikrbW50KGUlNjAsIjAiLDIpfWZ1bmN0aW9uIGVpdCh0LGUpe3JldHVybiBtbnQodC5nZXRVVENEYXRlKCksZSwyKX1mdW5jdGlvbiBuaXQodCxlKXtyZXR1cm4gbW50KHQuZ2V0VVRDSG91cnMoKSxlLDIpfWZ1bmN0aW9uIGlpdCh0LGUpe3JldHVybiBtbnQodC5nZXRVVENIb3VycygpJTEyfHwxMixlLDIpfWZ1bmN0aW9uIHJpdCh0LGUpe3JldHVybiBtbnQoMSskZXQuY291bnQoZW50KHQpLHQpLGUsMyl9ZnVuY3Rpb24gb2l0KHQsZSl7cmV0dXJuIG1udCh0LmdldFVUQ01pbGxpc2Vjb25kcygpLGUsMyl9ZnVuY3Rpb24gYWl0KHQsZSl7cmV0dXJuIG9pdCh0LGUpKyIwMDAifWZ1bmN0aW9uIHNpdCh0LGUpe3JldHVybiBtbnQodC5nZXRVVENNb250aCgpKzEsZSwyKX1mdW5jdGlvbiBsaXQodCxlKXtyZXR1cm4gbW50KHQuZ2V0VVRDTWludXRlcygpLGUsMil9ZnVuY3Rpb24gY2l0KHQsZSl7cmV0dXJuIG1udCh0LmdldFVUQ1NlY29uZHMoKSxlLDIpfWZ1bmN0aW9uIHVpdCh0KXt2YXIgZT10LmdldFVUQ0RheSgpO3JldHVybiAwPT09ZT83OmV9ZnVuY3Rpb24gaGl0KHQsZSl7cmV0dXJuIG1udChaZXQuY291bnQoZW50KHQpLHQpLGUsMil9ZnVuY3Rpb24gZGl0KHQsZSl7dmFyIG49dC5nZXRVVENEYXkoKTtyZXR1cm4gdD1uPj00fHwwPT09bj9RZXQodCk6UWV0LmNlaWwodCksbW50KFFldC5jb3VudChlbnQodCksdCkrKDQ9PT1lbnQodCkuZ2V0VVRDRGF5KCkpLGUsMil9ZnVuY3Rpb24gcGl0KHQpe3JldHVybiB0LmdldFVUQ0RheSgpfWZ1bmN0aW9uIGZpdCh0LGUpe3JldHVybiBtbnQoSmV0LmNvdW50KGVudCh0KSx0KSxlLDIpfWZ1bmN0aW9uIG1pdCh0LGUpe3JldHVybiBtbnQodC5nZXRVVENGdWxsWWVhcigpJTEwMCxlLDIpfWZ1bmN0aW9uIGdpdCh0LGUpe3JldHVybiBtbnQodC5nZXRVVENGdWxsWWVhcigpJTFlNCxlLDQpfWZ1bmN0aW9uIF9pdCgpe3JldHVybiIrMDAwMCJ9ZnVuY3Rpb24geWl0KCl7cmV0dXJuIiUifWZ1bmN0aW9uIHZpdCh0KXtyZXR1cm4rdH1mdW5jdGlvbiBiaXQodCl7cmV0dXJuIE1hdGguZmxvb3IoK3QvMWUzKX1mdW5jdGlvbiB4aXQodCl7cmV0dXJuIGFudD1vbnQodCksc250PWFudC5mb3JtYXQsbG50PWFudC5wYXJzZSxjbnQ9YW50LnV0Y0Zvcm1hdCx1bnQ9YW50LnV0Y1BhcnNlLGFudH14aXQoe2RhdGVUaW1lOiIleCwgJVgiLGRhdGU6IiUtbS8lLWQvJVkiLHRpbWU6IiUtSTolTTolUyAlcCIscGVyaW9kczpbIkFNIiwiUE0iXSxkYXlzOlsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXSxzaG9ydERheXM6WyJTdW4iLCJNb24iLCJUdWUiLCJXZWQiLCJUaHUiLCJGcmkiLCJTYXQiXSxtb250aHM6WyJKYW51YXJ5IiwiRmVicnVhcnkiLCJNYXJjaCIsIkFwcmlsIiwiTWF5IiwiSnVuZSIsIkp1bHkiLCJBdWd1c3QiLCJTZXB0ZW1iZXIiLCJPY3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdLHNob3J0TW9udGhzOlsiSmFuIiwiRmViIiwiTWFyIiwiQXByIiwiTWF5IiwiSnVuIiwiSnVsIiwiQXVnIiwiU2VwIiwiT2N0IiwiTm92IiwiRGVjIl19KTt2YXIgd2l0PSIlWS0lbS0lZFQlSDolTTolUy4lTFoiO3ZhciBTaXQ9RGF0ZS5wcm90b3R5cGUudG9JU09TdHJpbmc/ZnVuY3Rpb24gTWl0KHQpe3JldHVybiB0LnRvSVNPU3RyaW5nKCl9OmNudCh3aXQpO3ZhciBFaXQsVGl0LENpdD0rbmV3IERhdGUoIjIwMDAtMDEtMDFUMDA6MDA6MDAuMDAwWiIpP2Z1bmN0aW9uIEFpdCh0KXt2YXIgZT1uZXcgRGF0ZSh0KTtyZXR1cm4gaXNOYU4oZSk/bnVsbDplfTp1bnQod2l0KSxraXQ9MCxMaXQ9MCxQaXQ9MCxOaXQ9MCxJaXQ9MCxSaXQ9MCxPaXQ9Im9iamVjdCI9PXR5cGVvZiBwZXJmb3JtYW5jZSYmcGVyZm9ybWFuY2Uubm93P3BlcmZvcm1hbmNlOkRhdGUseml0PSJvYmplY3QiPT10eXBlb2Ygd2luZG93JiZ3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lP3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUuYmluZCh3aW5kb3cpOmZ1bmN0aW9uKHQpe3NldFRpbWVvdXQodCwxNyl9O2Z1bmN0aW9uIERpdCgpe3JldHVybiBJaXR8fCh6aXQoQml0KSxJaXQ9T2l0Lm5vdygpK1JpdCl9ZnVuY3Rpb24gQml0KCl7SWl0PTB9ZnVuY3Rpb24gSGl0KCl7dGhpcy5fY2FsbD10aGlzLl90aW1lPXRoaXMuX25leHQ9bnVsbH1mdW5jdGlvbiBGaXQodCxlLG4pe3ZhciBpPW5ldyBIaXQ7cmV0dXJuIGkucmVzdGFydCh0LGUsbiksaX1mdW5jdGlvbiBWaXQoKXtEaXQoKSwrK2tpdDtmb3IodmFyIHQsZT1FaXQ7ZTspKHQ9SWl0LWUuX3RpbWUpPj0wJiZlLl9jYWxsLmNhbGwobnVsbCx0KSxlPWUuX25leHQ7LS1raXR9ZnVuY3Rpb24gVWl0KCl7SWl0PShOaXQ9T2l0Lm5vdygpKStSaXQsa2l0PUxpdD0wO3RyeXtWaXQoKX1maW5hbGx5e2tpdD0wLChmdW5jdGlvbiB0KCl7dmFyIHQsZSxuPUVpdCxpPTEvMDtmb3IoO247KW4uX2NhbGw/KGk+bi5fdGltZSYmKGk9bi5fdGltZSksdD1uLG49bi5fbmV4dCk6KGU9bi5fbmV4dCxuLl9uZXh0PW51bGwsbj10P3QuX25leHQ9ZTpFaXQ9ZSk7VGl0PXQsR2l0KGkpfSkoKSxJaXQ9MH19ZnVuY3Rpb24gaml0KCl7dmFyIHQ9T2l0Lm5vdygpLGU9dC1OaXQ7ZT4xZTMmJihSaXQtPWUsTml0PXQpfWZ1bmN0aW9uIEdpdCh0KXtraXR8fChMaXQmJihMaXQ9Y2xlYXJUaW1lb3V0KExpdCkpLHQtSWl0PjI0Pyh0PDEvMCYmKExpdD1zZXRUaW1lb3V0KFVpdCx0LU9pdC5ub3coKS1SaXQpKSxQaXQmJihQaXQ9Y2xlYXJJbnRlcnZhbChQaXQpKSk6KFBpdHx8KE5pdD1PaXQubm93KCksUGl0PXNldEludGVydmFsKGppdCwxZTMpKSxraXQ9MSx6aXQoVWl0KSkpfUhpdC5wcm90b3R5cGU9Rml0LnByb3RvdHlwZT17Y29uc3RydWN0b3I6SGl0LHJlc3RhcnQ6ZnVuY3Rpb24odCxlLG4pe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoImNhbGxiYWNrIGlzIG5vdCBhIGZ1bmN0aW9uIik7bj0obnVsbD09bj9EaXQoKTorbikrKG51bGw9PWU/MDorZSksdGhpcy5fbmV4dHx8VGl0PT09dGhpc3x8KFRpdD9UaXQuX25leHQ9dGhpczpFaXQ9dGhpcyxUaXQ9dGhpcyksdGhpcy5fY2FsbD10LHRoaXMuX3RpbWU9bixHaXQoKX0sc3RvcDpmdW5jdGlvbigpe3RoaXMuX2NhbGwmJih0aGlzLl9jYWxsPW51bGwsdGhpcy5fdGltZT0xLzAsR2l0KCkpfX07dmFyIFdpdD0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIscWl0PXtzdmc6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix4aHRtbDpXaXQseGxpbms6Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLHhtbDoiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8ifTtmdW5jdGlvbiBZaXQodCl7dmFyIGU9dCs9IiIsbj1lLmluZGV4T2YoIjoiKTtyZXR1cm4gbj49MCYmInhtbG5zIiE9PShlPXQuc2xpY2UoMCxuKSkmJih0PXQuc2xpY2UobisxKSkscWl0Lmhhc093blByb3BlcnR5KGUpP3tzcGFjZTpxaXRbZV0sbG9jYWw6dH06dH1mdW5jdGlvbiBYaXQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vd25lckRvY3VtZW50LG49dGhpcy5uYW1lc3BhY2VVUkk7cmV0dXJuIG49PT1XaXQmJmUuZG9jdW1lbnRFbGVtZW50Lm5hbWVzcGFjZVVSST09PVdpdD9lLmNyZWF0ZUVsZW1lbnQodCk6ZS5jcmVhdGVFbGVtZW50TlMobix0KX19ZnVuY3Rpb24gJGl0KHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0aGlzLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHQuc3BhY2UsdC5sb2NhbCl9fWZ1bmN0aW9uIEtpdCh0KXt2YXIgZT1ZaXQodCk7cmV0dXJuKGUubG9jYWw/JGl0OlhpdCkoZSl9ZnVuY3Rpb24gWml0KCl7fWZ1bmN0aW9uIEppdCh0KXtyZXR1cm4gbnVsbD09dD9aaXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5xdWVyeVNlbGVjdG9yKHQpfX1mdW5jdGlvbiBRaXQoKXtyZXR1cm5bXX1mdW5jdGlvbiB0cnQodCl7cmV0dXJuIG51bGw9PXQ/UWl0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucXVlcnlTZWxlY3RvckFsbCh0KX19ZnVuY3Rpb24gZXJ0KHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hdGNoZXModCl9fWZ1bmN0aW9uIG5ydCh0KXtyZXR1cm4gbmV3IEFycmF5KHQubGVuZ3RoKX1mdW5jdGlvbiBpcnQodCxlKXt0aGlzLm93bmVyRG9jdW1lbnQ9dC5vd25lckRvY3VtZW50LHRoaXMubmFtZXNwYWNlVVJJPXQubmFtZXNwYWNlVVJJLHRoaXMuX25leHQ9bnVsbCx0aGlzLl9wYXJlbnQ9dCx0aGlzLl9fZGF0YV9fPWV9aXJ0LnByb3RvdHlwZT17Y29uc3RydWN0b3I6aXJ0LGFwcGVuZENoaWxkOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYXJlbnQuaW5zZXJ0QmVmb3JlKHQsdGhpcy5fbmV4dCl9LGluc2VydEJlZm9yZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9wYXJlbnQuaW5zZXJ0QmVmb3JlKHQsZSl9LHF1ZXJ5U2VsZWN0b3I6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3BhcmVudC5xdWVyeVNlbGVjdG9yKHQpfSxxdWVyeVNlbGVjdG9yQWxsOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYXJlbnQucXVlcnlTZWxlY3RvckFsbCh0KX19O2Z1bmN0aW9uIHJydCh0LGUsbixpLHIsbyl7Zm9yKHZhciBhLHM9MCxsPWUubGVuZ3RoLGM9by5sZW5ndGg7czxjOysrcykoYT1lW3NdKT8oYS5fX2RhdGFfXz1vW3NdLGlbc109YSk6bltzXT1uZXcgaXJ0KHQsb1tzXSk7Zm9yKDtzPGw7KytzKShhPWVbc10pJiYocltzXT1hKX1mdW5jdGlvbiBvcnQodCxlLG4saSxyLG8sYSl7dmFyIHMsbCxjLHU9e30saD1lLmxlbmd0aCxkPW8ubGVuZ3RoLHA9bmV3IEFycmF5KGgpO2ZvcihzPTA7czxoOysrcykobD1lW3NdKSYmKHBbc109Yz0iJCIrYS5jYWxsKGwsbC5fX2RhdGFfXyxzLGUpLGMgaW4gdT9yW3NdPWw6dVtjXT1sKTtmb3Iocz0wO3M8ZDsrK3MpKGw9dVtjPSIkIithLmNhbGwodCxvW3NdLHMsbyldKT8oaVtzXT1sLGwuX19kYXRhX189b1tzXSx1W2NdPW51bGwpOm5bc109bmV3IGlydCh0LG9bc10pO2ZvcihzPTA7czxoOysrcykobD1lW3NdKSYmdVtwW3NdXT09PWwmJihyW3NdPWwpfWZ1bmN0aW9uIGFydCh0LGUpe3JldHVybiB0PGU/LTE6dD5lPzE6dD49ZT8wOk5hTn1mdW5jdGlvbiBzcnQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGUodCl9fWZ1bmN0aW9uIGxydCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCl9fWZ1bmN0aW9uIGNydCh0LGUpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc2V0QXR0cmlidXRlKHQsZSl9fWZ1bmN0aW9uIHVydCh0LGUpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsLGUpfX1mdW5jdGlvbiBocnQodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1uP3RoaXMucmVtb3ZlQXR0cmlidXRlKHQpOnRoaXMuc2V0QXR0cmlidXRlKHQsbil9fWZ1bmN0aW9uIGRydCh0LGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciBuPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PW4/dGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwpOnRoaXMuc2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsLG4pfX1mdW5jdGlvbiBwcnQodCl7cmV0dXJuIHQub3duZXJEb2N1bWVudCYmdC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3fHx0LmRvY3VtZW50JiZ0fHx0LmRlZmF1bHRWaWV3fWZ1bmN0aW9uIGZydCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpfX1mdW5jdGlvbiBtcnQodCxlLG4pe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc3R5bGUuc2V0UHJvcGVydHkodCxlLG4pfX1mdW5jdGlvbiBncnQodCxlLG4pe3JldHVybiBmdW5jdGlvbigpe3ZhciBpPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PWk/dGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0KTp0aGlzLnN0eWxlLnNldFByb3BlcnR5KHQsaSxuKX19ZnVuY3Rpb24gX3J0KHQsZSl7cmV0dXJuIHQuc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShlKXx8cHJ0KHQpLmdldENvbXB1dGVkU3R5bGUodCxudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKGUpfWZ1bmN0aW9uIHlydCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtkZWxldGUgdGhpc1t0XX19ZnVuY3Rpb24gdnJ0KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpc1t0XT1lfX1mdW5jdGlvbiBicnQodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1uP2RlbGV0ZSB0aGlzW3RdOnRoaXNbdF09bn19ZnVuY3Rpb24geHJ0KHQpe3JldHVybiB0LnRyaW0oKS5zcGxpdCgvXnxccysvKX1mdW5jdGlvbiB3cnQodCl7cmV0dXJuIHQuY2xhc3NMaXN0fHxuZXcgU3J0KHQpfWZ1bmN0aW9uIFNydCh0KXt0aGlzLl9ub2RlPXQsdGhpcy5fbmFtZXM9eHJ0KHQuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIil9ZnVuY3Rpb24gTXJ0KHQsZSl7Zm9yKHZhciBuPXdydCh0KSxpPS0xLHI9ZS5sZW5ndGg7KytpPHI7KW4uYWRkKGVbaV0pfWZ1bmN0aW9uIEVydCh0LGUpe2Zvcih2YXIgbj13cnQodCksaT0tMSxyPWUubGVuZ3RoOysraTxyOyluLnJlbW92ZShlW2ldKX1mdW5jdGlvbiBUcnQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7TXJ0KHRoaXMsdCl9fWZ1bmN0aW9uIENydCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtFcnQodGhpcyx0KX19ZnVuY3Rpb24gQXJ0KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7KGUuYXBwbHkodGhpcyxhcmd1bWVudHMpP01ydDpFcnQpKHRoaXMsdCl9fWZ1bmN0aW9uIGtydCgpe3RoaXMudGV4dENvbnRlbnQ9IiJ9ZnVuY3Rpb24gTHJ0KHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMudGV4dENvbnRlbnQ9dH19ZnVuY3Rpb24gUHJ0KHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMudGV4dENvbnRlbnQ9bnVsbD09ZT8iIjplfX1mdW5jdGlvbiBOcnQoKXt0aGlzLmlubmVySFRNTD0iIn1mdW5jdGlvbiBJcnQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5pbm5lckhUTUw9dH19ZnVuY3Rpb24gUnJ0KHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMuaW5uZXJIVE1MPW51bGw9PWU/IiI6ZX19ZnVuY3Rpb24gT3J0KCl7dGhpcy5uZXh0U2libGluZyYmdGhpcy5wYXJlbnROb2RlLmFwcGVuZENoaWxkKHRoaXMpfWZ1bmN0aW9uIHpydCgpe3RoaXMucHJldmlvdXNTaWJsaW5nJiZ0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRoaXMsdGhpcy5wYXJlbnROb2RlLmZpcnN0Q2hpbGQpfWZ1bmN0aW9uIERydCgpe3JldHVybiBudWxsfWZ1bmN0aW9uIEJydCgpe3ZhciB0PXRoaXMucGFyZW50Tm9kZTt0JiZ0LnJlbW92ZUNoaWxkKHRoaXMpfWZ1bmN0aW9uIEhydCgpe3ZhciB0PXRoaXMuY2xvbmVOb2RlKCExKSxlPXRoaXMucGFyZW50Tm9kZTtyZXR1cm4gZT9lLmluc2VydEJlZm9yZSh0LHRoaXMubmV4dFNpYmxpbmcpOnR9ZnVuY3Rpb24gRnJ0KCl7dmFyIHQ9dGhpcy5jbG9uZU5vZGUoITApLGU9dGhpcy5wYXJlbnROb2RlO3JldHVybiBlP2UuaW5zZXJ0QmVmb3JlKHQsdGhpcy5uZXh0U2libGluZyk6dH1TcnQucHJvdG90eXBlPXthZGQ6ZnVuY3Rpb24odCl7dGhpcy5fbmFtZXMuaW5kZXhPZih0KTwwJiYodGhpcy5fbmFtZXMucHVzaCh0KSx0aGlzLl9ub2RlLnNldEF0dHJpYnV0ZSgiY2xhc3MiLHRoaXMuX25hbWVzLmpvaW4oIiAiKSkpfSxyZW1vdmU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fbmFtZXMuaW5kZXhPZih0KTtlPj0wJiYodGhpcy5fbmFtZXMuc3BsaWNlKGUsMSksdGhpcy5fbm9kZS5zZXRBdHRyaWJ1dGUoImNsYXNzIix0aGlzLl9uYW1lcy5qb2luKCIgIikpKX0sY29udGFpbnM6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX25hbWVzLmluZGV4T2YodCk+PTB9fTt2YXIgVnJ0PXt9OyJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQmJigib25tb3VzZWVudGVyImluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudHx8KFZydD17bW91c2VlbnRlcjoibW91c2VvdmVyIixtb3VzZWxlYXZlOiJtb3VzZW91dCJ9KSk7ZnVuY3Rpb24gVXJ0KHQsZSxuKXtyZXR1cm4gdD1qcnQodCxlLG4pLGZ1bmN0aW9uKGUpe3ZhciBuPWUucmVsYXRlZFRhcmdldDtuJiYobj09PXRoaXN8fDgmbi5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbih0aGlzKSl8fHQuY2FsbCh0aGlzLGUpfX1mdW5jdGlvbiBqcnQodCxlLG4pe3JldHVybiBmdW5jdGlvbihpKXt0cnl7dC5jYWxsKHRoaXMsdGhpcy5fX2RhdGFfXyxlLG4pfWZpbmFsbHl7fX19ZnVuY3Rpb24gR3J0KHQpe3JldHVybiB0LnRyaW0oKS5zcGxpdCgvXnxccysvKS5tYXAoKGZ1bmN0aW9uKHQpe3ZhciBlPSIiLG49dC5pbmRleE9mKCIuIik7cmV0dXJuIG4+PTAmJihlPXQuc2xpY2UobisxKSx0PXQuc2xpY2UoMCxuKSkse3R5cGU6dCxuYW1lOmV9fSkpfWZ1bmN0aW9uIFdydCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9fb247aWYoZSl7Zm9yKHZhciBuLGk9MCxyPS0xLG89ZS5sZW5ndGg7aTxvOysraSluPWVbaV0sdC50eXBlJiZuLnR5cGUhPT10LnR5cGV8fG4ubmFtZSE9PXQubmFtZT9lWysrcl09bjp0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIobi50eXBlLG4ubGlzdGVuZXIsbi5jYXB0dXJlKTsrK3I/ZS5sZW5ndGg9cjpkZWxldGUgdGhpcy5fX29ufX19ZnVuY3Rpb24gcXJ0KHQsZSxuKXt2YXIgaT1WcnQuaGFzT3duUHJvcGVydHkodC50eXBlKT9VcnQ6anJ0O3JldHVybiBmdW5jdGlvbihyLG8sYSl7dmFyIHMsbD10aGlzLl9fb24sYz1pKGUsbyxhKTtpZihsKWZvcih2YXIgdT0wLGg9bC5sZW5ndGg7dTxoOysrdSlpZigocz1sW3VdKS50eXBlPT09dC50eXBlJiZzLm5hbWU9PT10Lm5hbWUpcmV0dXJuIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihzLnR5cGUscy5saXN0ZW5lcixzLmNhcHR1cmUpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihzLnR5cGUscy5saXN0ZW5lcj1jLHMuY2FwdHVyZT1uKSx2b2lkKHMudmFsdWU9ZSk7dGhpcy5hZGRFdmVudExpc3RlbmVyKHQudHlwZSxjLG4pLHM9e3R5cGU6dC50eXBlLG5hbWU6dC5uYW1lLHZhbHVlOmUsbGlzdGVuZXI6YyxjYXB0dXJlOm59LGw/bC5wdXNoKHMpOnRoaXMuX19vbj1bc119fWZ1bmN0aW9uIFlydCh0LGUsbil7dmFyIGk9cHJ0KHQpLHI9aS5DdXN0b21FdmVudDsiZnVuY3Rpb24iPT10eXBlb2Ygcj9yPW5ldyByKGUsbik6KHI9aS5kb2N1bWVudC5jcmVhdGVFdmVudCgiRXZlbnQiKSxuPyhyLmluaXRFdmVudChlLG4uYnViYmxlcyxuLmNhbmNlbGFibGUpLHIuZGV0YWlsPW4uZGV0YWlsKTpyLmluaXRFdmVudChlLCExLCExKSksdC5kaXNwYXRjaEV2ZW50KHIpfWZ1bmN0aW9uIFhydCh0LGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBZcnQodGhpcyx0LGUpfX1mdW5jdGlvbiAkcnQodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gWXJ0KHRoaXMsdCxlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9fXZhciBLcnQ9W251bGxdO2Z1bmN0aW9uIFpydCh0LGUpe3RoaXMuX2dyb3Vwcz10LHRoaXMuX3BhcmVudHM9ZX1mdW5jdGlvbiBKcnQoKXtyZXR1cm4gbmV3IFpydChbW2RvY3VtZW50LmRvY3VtZW50RWxlbWVudF1dLEtydCl9WnJ0LnByb3RvdHlwZT1KcnQucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpacnQsc2VsZWN0OmZ1bmN0aW9uIFFydCh0KXsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9Sml0KHQpKTtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLG49ZS5sZW5ndGgsaT1uZXcgQXJyYXkobikscj0wO3I8bjsrK3IpZm9yKHZhciBvLGEscz1lW3JdLGw9cy5sZW5ndGgsYz1pW3JdPW5ldyBBcnJheShsKSx1PTA7dTxsOysrdSkobz1zW3VdKSYmKGE9dC5jYWxsKG8sby5fX2RhdGFfXyx1LHMpKSYmKCJfX2RhdGFfXyJpbiBvJiYoYS5fX2RhdGFfXz1vLl9fZGF0YV9fKSxjW3VdPWEpO3JldHVybiBuZXcgWnJ0KGksdGhpcy5fcGFyZW50cyl9LHNlbGVjdEFsbDpmdW5jdGlvbiB0b3QodCl7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PXRydCh0KSk7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPWUubGVuZ3RoLGk9W10scj1bXSxvPTA7bzxuOysrbylmb3IodmFyIGEscz1lW29dLGw9cy5sZW5ndGgsYz0wO2M8bDsrK2MpKGE9c1tjXSkmJihpLnB1c2godC5jYWxsKGEsYS5fX2RhdGFfXyxjLHMpKSxyLnB1c2goYSkpO3JldHVybiBuZXcgWnJ0KGkscil9LGZpbHRlcjpmdW5jdGlvbiBlb3QodCl7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PWVydCh0KSk7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPWUubGVuZ3RoLGk9bmV3IEFycmF5KG4pLHI9MDtyPG47KytyKWZvcih2YXIgbyxhPWVbcl0scz1hLmxlbmd0aCxsPWlbcl09W10sYz0wO2M8czsrK2MpKG89YVtjXSkmJnQuY2FsbChvLG8uX19kYXRhX18sYyxhKSYmbC5wdXNoKG8pO3JldHVybiBuZXcgWnJ0KGksdGhpcy5fcGFyZW50cyl9LGRhdGE6ZnVuY3Rpb24gbm90KHQsZSl7aWYoIXQpcmV0dXJuIGY9bmV3IEFycmF5KHRoaXMuc2l6ZSgpKSx1PS0xLHRoaXMuZWFjaCgoZnVuY3Rpb24odCl7ZlsrK3VdPXR9KSksZjt2YXIgbj1lP29ydDpycnQsaT10aGlzLl9wYXJlbnRzLHI9dGhpcy5fZ3JvdXBzOyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD0oZnVuY3Rpb24gbyh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19KSh0KSk7Zm9yKHZhciBhPXIubGVuZ3RoLHM9bmV3IEFycmF5KGEpLGw9bmV3IEFycmF5KGEpLGM9bmV3IEFycmF5KGEpLHU9MDt1PGE7Kyt1KXt2YXIgaD1pW3VdLGQ9clt1XSxwPWQubGVuZ3RoLGY9dC5jYWxsKGgsaCYmaC5fX2RhdGFfXyx1LGkpLG09Zi5sZW5ndGgsZz1sW3VdPW5ldyBBcnJheShtKSxfPXNbdV09bmV3IEFycmF5KG0pO24oaCxkLGcsXyxjW3VdPW5ldyBBcnJheShwKSxmLGUpO2Zvcih2YXIgeSx2LGI9MCx4PTA7YjxtOysrYilpZih5PWdbYl0pe2ZvcihiPj14JiYoeD1iKzEpOyEodj1fW3hdKSYmKyt4PG07KTt5Ll9uZXh0PXZ8fG51bGx9fXJldHVybihzPW5ldyBacnQocyxpKSkuX2VudGVyPWwscy5fZXhpdD1jLHN9LGVudGVyOmZ1bmN0aW9uIGlvdCgpe3JldHVybiBuZXcgWnJ0KHRoaXMuX2VudGVyfHx0aGlzLl9ncm91cHMubWFwKG5ydCksdGhpcy5fcGFyZW50cyl9LGV4aXQ6ZnVuY3Rpb24gcm90KCl7cmV0dXJuIG5ldyBacnQodGhpcy5fZXhpdHx8dGhpcy5fZ3JvdXBzLm1hcChucnQpLHRoaXMuX3BhcmVudHMpfSxqb2luOmZ1bmN0aW9uIG9vdCh0LGUsbil7dmFyIGk9dGhpcy5lbnRlcigpLHI9dGhpcyxvPXRoaXMuZXhpdCgpO3JldHVybiBpPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3QoaSk6aS5hcHBlbmQodCsiIiksbnVsbCE9ZSYmKHI9ZShyKSksbnVsbD09bj9vLnJlbW92ZSgpOm4obyksaSYmcj9pLm1lcmdlKHIpLm9yZGVyKCk6cn0sbWVyZ2U6ZnVuY3Rpb24gYW90KHQpe2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj10Ll9ncm91cHMsaT1lLmxlbmd0aCxyPU1hdGgubWluKGksbi5sZW5ndGgpLG89bmV3IEFycmF5KGkpLGE9MDthPHI7KythKWZvcih2YXIgcyxsPWVbYV0sYz1uW2FdLHU9bC5sZW5ndGgsaD1vW2FdPW5ldyBBcnJheSh1KSxkPTA7ZDx1OysrZCkocz1sW2RdfHxjW2RdKSYmKGhbZF09cyk7Zm9yKDthPGk7KythKW9bYV09ZVthXTtyZXR1cm4gbmV3IFpydChvLHRoaXMuX3BhcmVudHMpfSxvcmRlcjpmdW5jdGlvbiBzb3QoKXtmb3IodmFyIHQ9dGhpcy5fZ3JvdXBzLGU9LTEsbj10Lmxlbmd0aDsrK2U8bjspZm9yKHZhciBpLHI9dFtlXSxvPXIubGVuZ3RoLTEsYT1yW29dOy0tbz49MDspKGk9cltvXSkmJihhJiY0XmkuY29tcGFyZURvY3VtZW50UG9zaXRpb24oYSkmJmEucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoaSxhKSxhPWkpO3JldHVybiB0aGlzfSxzb3J0OmZ1bmN0aW9uIGxvdCh0KXtmdW5jdGlvbiBlKGUsbil7cmV0dXJuIGUmJm4/dChlLl9fZGF0YV9fLG4uX19kYXRhX18pOiFlLSFufXR8fCh0PWFydCk7Zm9yKHZhciBuPXRoaXMuX2dyb3VwcyxpPW4ubGVuZ3RoLHI9bmV3IEFycmF5KGkpLG89MDtvPGk7KytvKXtmb3IodmFyIGEscz1uW29dLGw9cy5sZW5ndGgsYz1yW29dPW5ldyBBcnJheShsKSx1PTA7dTxsOysrdSkoYT1zW3VdKSYmKGNbdV09YSk7Yy5zb3J0KGUpfXJldHVybiBuZXcgWnJ0KHIsdGhpcy5fcGFyZW50cykub3JkZXIoKX0sY2FsbDpmdW5jdGlvbiBjb3QoKXt2YXIgdD1hcmd1bWVudHNbMF07cmV0dXJuIGFyZ3VtZW50c1swXT10aGlzLHQuYXBwbHkobnVsbCxhcmd1bWVudHMpLHRoaXN9LG5vZGVzOmZ1bmN0aW9uIHVvdCgpe3ZhciB0PW5ldyBBcnJheSh0aGlzLnNpemUoKSksZT0tMTtyZXR1cm4gdGhpcy5lYWNoKChmdW5jdGlvbigpe3RbKytlXT10aGlzfSkpLHR9LG5vZGU6ZnVuY3Rpb24gaG90KCl7Zm9yKHZhciB0PXRoaXMuX2dyb3VwcyxlPTAsbj10Lmxlbmd0aDtlPG47KytlKWZvcih2YXIgaT10W2VdLHI9MCxvPWkubGVuZ3RoO3I8bzsrK3Ipe3ZhciBhPWlbcl07aWYoYSlyZXR1cm4gYX1yZXR1cm4gbnVsbH0sc2l6ZTpmdW5jdGlvbiBkb3QoKXt2YXIgdD0wO3JldHVybiB0aGlzLmVhY2goKGZ1bmN0aW9uKCl7Kyt0fSkpLHR9LGVtcHR5OmZ1bmN0aW9uIHBvdCgpe3JldHVybiF0aGlzLm5vZGUoKX0sZWFjaDpmdW5jdGlvbiBmb3QodCl7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPTAsaT1lLmxlbmd0aDtuPGk7KytuKWZvcih2YXIgcixvPWVbbl0sYT0wLHM9by5sZW5ndGg7YTxzOysrYSkocj1vW2FdKSYmdC5jYWxsKHIsci5fX2RhdGFfXyxhLG8pO3JldHVybiB0aGlzfSxhdHRyOmZ1bmN0aW9uIG1vdCh0LGUpe3ZhciBuPVlpdCh0KTtpZihhcmd1bWVudHMubGVuZ3RoPDIpe3ZhciBpPXRoaXMubm9kZSgpO3JldHVybiBuLmxvY2FsP2kuZ2V0QXR0cmlidXRlTlMobi5zcGFjZSxuLmxvY2FsKTppLmdldEF0dHJpYnV0ZShuKX1yZXR1cm4gdGhpcy5lYWNoKChudWxsPT1lP24ubG9jYWw/bHJ0OnNydDoiZnVuY3Rpb24iPT10eXBlb2YgZT9uLmxvY2FsP2RydDpocnQ6bi5sb2NhbD91cnQ6Y3J0KShuLGUpKX0sc3R5bGU6ZnVuY3Rpb24gZ290KHQsZSxuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4xP3RoaXMuZWFjaCgobnVsbD09ZT9mcnQ6ImZ1bmN0aW9uIj09dHlwZW9mIGU/Z3J0Om1ydCkodCxlLG51bGw9PW4/IiI6bikpOl9ydCh0aGlzLm5vZGUoKSx0KX0scHJvcGVydHk6ZnVuY3Rpb24gX290KHQsZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MT90aGlzLmVhY2goKG51bGw9PWU/eXJ0OiJmdW5jdGlvbiI9PXR5cGVvZiBlP2JydDp2cnQpKHQsZSkpOnRoaXMubm9kZSgpW3RdfSxjbGFzc2VkOmZ1bmN0aW9uIHlvdCh0LGUpe3ZhciBuPXhydCh0KyIiKTtpZihhcmd1bWVudHMubGVuZ3RoPDIpe2Zvcih2YXIgaT13cnQodGhpcy5ub2RlKCkpLHI9LTEsbz1uLmxlbmd0aDsrK3I8bzspaWYoIWkuY29udGFpbnMobltyXSkpcmV0dXJuITE7cmV0dXJuITB9cmV0dXJuIHRoaXMuZWFjaCgoImZ1bmN0aW9uIj09dHlwZW9mIGU/QXJ0OmU/VHJ0OkNydCkobixlKSl9LHRleHQ6ZnVuY3Rpb24gdm90KHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaChudWxsPT10P2tydDooImZ1bmN0aW9uIj09dHlwZW9mIHQ/UHJ0OkxydCkodCkpOnRoaXMubm9kZSgpLnRleHRDb250ZW50fSxodG1sOmZ1bmN0aW9uIGJvdCh0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2gobnVsbD09dD9OcnQ6KCJmdW5jdGlvbiI9PXR5cGVvZiB0P1JydDpJcnQpKHQpKTp0aGlzLm5vZGUoKS5pbm5lckhUTUx9LHJhaXNlOmZ1bmN0aW9uIHhvdCgpe3JldHVybiB0aGlzLmVhY2goT3J0KX0sbG93ZXI6ZnVuY3Rpb24gd290KCl7cmV0dXJuIHRoaXMuZWFjaCh6cnQpfSxhcHBlbmQ6ZnVuY3Rpb24gU290KHQpe3ZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6S2l0KHQpO3JldHVybiB0aGlzLnNlbGVjdCgoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hcHBlbmRDaGlsZChlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9KSl9LGluc2VydDpmdW5jdGlvbiBNb3QodCxlKXt2YXIgbj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OktpdCh0KSxpPW51bGw9PWU/RHJ0OiJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6Sml0KGUpO3JldHVybiB0aGlzLnNlbGVjdCgoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbnNlcnRCZWZvcmUobi5hcHBseSh0aGlzLGFyZ3VtZW50cyksaS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fG51bGwpfSkpfSxyZW1vdmU6ZnVuY3Rpb24gRW90KCl7cmV0dXJuIHRoaXMuZWFjaChCcnQpfSxjbG9uZTpmdW5jdGlvbiBUb3QodCl7cmV0dXJuIHRoaXMuc2VsZWN0KHQ/RnJ0OkhydCl9LGRhdHVtOmZ1bmN0aW9uIENvdCh0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLnByb3BlcnR5KCJfX2RhdGFfXyIsdCk6dGhpcy5ub2RlKCkuX19kYXRhX199LG9uOmZ1bmN0aW9uIEFvdCh0LGUsbil7dmFyIGkscixvPUdydCh0KyIiKSxhPW8ubGVuZ3RoO2lmKCEoYXJndW1lbnRzLmxlbmd0aDwyKSl7Zm9yKHM9ZT9xcnQ6V3J0LG51bGw9PW4mJihuPSExKSxpPTA7aTxhOysraSl0aGlzLmVhY2gocyhvW2ldLGUsbikpO3JldHVybiB0aGlzfXZhciBzPXRoaXMubm9kZSgpLl9fb247aWYocylmb3IodmFyIGwsYz0wLHU9cy5sZW5ndGg7Yzx1OysrYylmb3IoaT0wLGw9c1tjXTtpPGE7KytpKWlmKChyPW9baV0pLnR5cGU9PT1sLnR5cGUmJnIubmFtZT09PWwubmFtZSlyZXR1cm4gbC52YWx1ZX0sZGlzcGF0Y2g6ZnVuY3Rpb24ga290KHQsZSl7cmV0dXJuIHRoaXMuZWFjaCgoImZ1bmN0aW9uIj09dHlwZW9mIGU/JHJ0OlhydCkodCxlKSl9fTt2YXIgTG90PXt2YWx1ZTpmdW5jdGlvbigpe319O2Z1bmN0aW9uIFBvdCgpe2Zvcih2YXIgdCxlPTAsbj1hcmd1bWVudHMubGVuZ3RoLGk9e307ZTxuOysrZSl7aWYoISh0PWFyZ3VtZW50c1tlXSsiIil8fHQgaW4gaXx8L1tccy5dLy50ZXN0KHQpKXRocm93IG5ldyBFcnJvcigiaWxsZWdhbCB0eXBlOiAiK3QpO2lbdF09W119cmV0dXJuIG5ldyBOb3QoaSl9ZnVuY3Rpb24gTm90KHQpe3RoaXMuXz10fWZ1bmN0aW9uIElvdCh0LGUpe3JldHVybiB0LnRyaW0oKS5zcGxpdCgvXnxccysvKS5tYXAoKGZ1bmN0aW9uKHQpe3ZhciBuPSIiLGk9dC5pbmRleE9mKCIuIik7aWYoaT49MCYmKG49dC5zbGljZShpKzEpLHQ9dC5zbGljZSgwLGkpKSx0JiYhZS5oYXNPd25Qcm9wZXJ0eSh0KSl0aHJvdyBuZXcgRXJyb3IoInVua25vd24gdHlwZTogIit0KTtyZXR1cm57dHlwZTp0LG5hbWU6bn19KSl9ZnVuY3Rpb24gUm90KHQsZSl7Zm9yKHZhciBuLGk9MCxyPXQubGVuZ3RoO2k8cjsrK2kpaWYoKG49dFtpXSkubmFtZT09PWUpcmV0dXJuIG4udmFsdWV9ZnVuY3Rpb24gT290KHQsZSxuKXtmb3IodmFyIGk9MCxyPXQubGVuZ3RoO2k8cjsrK2kpaWYodFtpXS5uYW1lPT09ZSl7dFtpXT1Mb3QsdD10LnNsaWNlKDAsaSkuY29uY2F0KHQuc2xpY2UoaSsxKSk7YnJlYWt9cmV0dXJuIG51bGwhPW4mJnQucHVzaCh7bmFtZTplLHZhbHVlOm59KSx0fU5vdC5wcm90b3R5cGU9UG90LnByb3RvdHlwZT17Y29uc3RydWN0b3I6Tm90LG9uOmZ1bmN0aW9uKHQsZSl7dmFyIG4saT10aGlzLl8scj1Jb3QodCsiIixpKSxvPS0xLGE9ci5sZW5ndGg7aWYoIShhcmd1bWVudHMubGVuZ3RoPDIpKXtpZihudWxsIT1lJiYiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgY2FsbGJhY2s6ICIrZSk7Zm9yKDsrK288YTspaWYobj0odD1yW29dKS50eXBlKWlbbl09T290KGlbbl0sdC5uYW1lLGUpO2Vsc2UgaWYobnVsbD09ZSlmb3IobiBpbiBpKWlbbl09T290KGlbbl0sdC5uYW1lLG51bGwpO3JldHVybiB0aGlzfWZvcig7KytvPGE7KWlmKChuPSh0PXJbb10pLnR5cGUpJiYobj1Sb3QoaVtuXSx0Lm5hbWUpKSlyZXR1cm4gbn0sY29weTpmdW5jdGlvbigpe3ZhciB0PXt9LGU9dGhpcy5fO2Zvcih2YXIgbiBpbiBlKXRbbl09ZVtuXS5zbGljZSgpO3JldHVybiBuZXcgTm90KHQpfSxjYWxsOmZ1bmN0aW9uKHQsZSl7aWYoKG49YXJndW1lbnRzLmxlbmd0aC0yKT4wKWZvcih2YXIgbixpLHI9bmV3IEFycmF5KG4pLG89MDtvPG47KytvKXJbb109YXJndW1lbnRzW28rMl07aWYoIXRoaXMuXy5oYXNPd25Qcm9wZXJ0eSh0KSl0aHJvdyBuZXcgRXJyb3IoInVua25vd24gdHlwZTogIit0KTtmb3Iobz0wLG49KGk9dGhpcy5fW3RdKS5sZW5ndGg7bzxuOysrbylpW29dLnZhbHVlLmFwcGx5KGUscil9LGFwcGx5OmZ1bmN0aW9uKHQsZSxuKXtpZighdGhpcy5fLmhhc093blByb3BlcnR5KHQpKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0eXBlOiAiK3QpO2Zvcih2YXIgaT10aGlzLl9bdF0scj0wLG89aS5sZW5ndGg7cjxvOysrcilpW3JdLnZhbHVlLmFwcGx5KGUsbil9fTt2YXIgem90LERvdCxCb3Q9MCxIb3Q9MCxGb3Q9MCxWb3Q9MCxVb3Q9MCxqb3Q9MCxHb3Q9Im9iamVjdCI9PXR5cGVvZiBwZXJmb3JtYW5jZSYmcGVyZm9ybWFuY2Uubm93P3BlcmZvcm1hbmNlOkRhdGUsV290PSJvYmplY3QiPT10eXBlb2Ygd2luZG93JiZ3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lP3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUuYmluZCh3aW5kb3cpOmZ1bmN0aW9uKHQpe3NldFRpbWVvdXQodCwxNyl9O2Z1bmN0aW9uIHFvdCgpe3JldHVybiBVb3R8fChXb3QoWW90KSxVb3Q9R290Lm5vdygpK2pvdCl9ZnVuY3Rpb24gWW90KCl7VW90PTB9ZnVuY3Rpb24gWG90KCl7dGhpcy5fY2FsbD10aGlzLl90aW1lPXRoaXMuX25leHQ9bnVsbH1mdW5jdGlvbiAkb3QodCxlLG4pe3ZhciBpPW5ldyBYb3Q7cmV0dXJuIGkucmVzdGFydCh0LGUsbiksaX1mdW5jdGlvbiBLb3QoKXtVb3Q9KFZvdD1Hb3Qubm93KCkpK2pvdCxCb3Q9SG90PTA7dHJ5eyEoZnVuY3Rpb24gdCgpe3FvdCgpLCsrQm90O2Zvcih2YXIgdCxlPXpvdDtlOykodD1Vb3QtZS5fdGltZSk+PTAmJmUuX2NhbGwuY2FsbChudWxsLHQpLGU9ZS5fbmV4dDstLUJvdH0pKCl9ZmluYWxseXtCb3Q9MCwoZnVuY3Rpb24gZSgpe3ZhciB0LGUsbj16b3QsaT0xLzA7Zm9yKDtuOyluLl9jYWxsPyhpPm4uX3RpbWUmJihpPW4uX3RpbWUpLHQ9bixuPW4uX25leHQpOihlPW4uX25leHQsbi5fbmV4dD1udWxsLG49dD90Ll9uZXh0PWU6em90PWUpO0RvdD10LEpvdChpKX0pKCksVW90PTB9fWZ1bmN0aW9uIFpvdCgpe3ZhciB0PUdvdC5ub3coKSxlPXQtVm90O2U+MWUzJiYoam90LT1lLFZvdD10KX1mdW5jdGlvbiBKb3QodCl7Qm90fHwoSG90JiYoSG90PWNsZWFyVGltZW91dChIb3QpKSx0LVVvdD4yND8odDwxLzAmJihIb3Q9c2V0VGltZW91dChLb3QsdC1Hb3Qubm93KCktam90KSksRm90JiYoRm90PWNsZWFySW50ZXJ2YWwoRm90KSkpOihGb3R8fChWb3Q9R290Lm5vdygpLEZvdD1zZXRJbnRlcnZhbChab3QsMWUzKSksQm90PTEsV290KEtvdCkpKX1mdW5jdGlvbiBRb3QodCxlLG4pe3ZhciBpPW5ldyBYb3Q7cmV0dXJuIGkucmVzdGFydCgoZnVuY3Rpb24obil7aS5zdG9wKCksdChuK2UpfSksZT1udWxsPT1lPzA6K2UsbiksaX1Yb3QucHJvdG90eXBlPSRvdC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOlhvdCxyZXN0YXJ0OmZ1bmN0aW9uKHQsZSxuKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKCJjYWxsYmFjayBpcyBub3QgYSBmdW5jdGlvbiIpO249KG51bGw9PW4/cW90KCk6K24pKyhudWxsPT1lPzA6K2UpLHRoaXMuX25leHR8fERvdD09PXRoaXN8fChEb3Q/RG90Ll9uZXh0PXRoaXM6em90PXRoaXMsRG90PXRoaXMpLHRoaXMuX2NhbGw9dCx0aGlzLl90aW1lPW4sSm90KCl9LHN0b3A6ZnVuY3Rpb24oKXt0aGlzLl9jYWxsJiYodGhpcy5fY2FsbD1udWxsLHRoaXMuX3RpbWU9MS8wLEpvdCgpKX19O3ZhciB0YXQ9UG90KCJzdGFydCIsImVuZCIsImludGVycnVwdCIpLGVhdD1bXTtmdW5jdGlvbiBuYXQodCxlLG4saSxyLG8pe3ZhciBhPXQuX190cmFuc2l0aW9uO2lmKGEpe2lmKG4gaW4gYSlyZXR1cm59ZWxzZSB0Ll9fdHJhbnNpdGlvbj17fTshKGZ1bmN0aW9uIHModCxlLG4pe3ZhciBpLHI9dC5fX3RyYW5zaXRpb247ZnVuY3Rpb24gbyh0KXtuLnN0YXRlPTEsbi50aW1lci5yZXN0YXJ0KGEsbi5kZWxheSxuLnRpbWUpLG4uZGVsYXk8PXQmJmEodC1uLmRlbGF5KX1mdW5jdGlvbiBhKG8pe3ZhciBjLHUsaCxkO2lmKDEhPT1uLnN0YXRlKXJldHVybiBsKCk7Zm9yKGMgaW4gcilpZigoZD1yW2NdKS5uYW1lPT09bi5uYW1lKXtpZigzPT09ZC5zdGF0ZSlyZXR1cm4gUW90KGEpOzQ9PT1kLnN0YXRlPyhkLnN0YXRlPTYsZC50aW1lci5zdG9wKCksZC5vbi5jYWxsKCJpbnRlcnJ1cHQiLHQsdC5fX2RhdGFfXyxkLmluZGV4LGQuZ3JvdXApLGRlbGV0ZSByW2NdKTorYzxlJiYoZC5zdGF0ZT02LGQudGltZXIuc3RvcCgpLGRlbGV0ZSByW2NdKX1pZihRb3QoKGZ1bmN0aW9uKCl7Mz09PW4uc3RhdGUmJihuLnN0YXRlPTQsbi50aW1lci5yZXN0YXJ0KHMsbi5kZWxheSxuLnRpbWUpLHMobykpfSkpLG4uc3RhdGU9MixuLm9uLmNhbGwoInN0YXJ0Iix0LHQuX19kYXRhX18sbi5pbmRleCxuLmdyb3VwKSwyPT09bi5zdGF0ZSl7Zm9yKG4uc3RhdGU9MyxpPW5ldyBBcnJheShoPW4udHdlZW4ubGVuZ3RoKSxjPTAsdT0tMTtjPGg7KytjKShkPW4udHdlZW5bY10udmFsdWUuY2FsbCh0LHQuX19kYXRhX18sbi5pbmRleCxuLmdyb3VwKSkmJihpWysrdV09ZCk7aS5sZW5ndGg9dSsxfX1mdW5jdGlvbiBzKGUpe2Zvcih2YXIgcj1lPG4uZHVyYXRpb24/bi5lYXNlLmNhbGwobnVsbCxlL24uZHVyYXRpb24pOihuLnRpbWVyLnJlc3RhcnQobCksbi5zdGF0ZT01LDEpLG89LTEsYT1pLmxlbmd0aDsrK288YTspaVtvXS5jYWxsKG51bGwscik7NT09PW4uc3RhdGUmJihuLm9uLmNhbGwoImVuZCIsdCx0Ll9fZGF0YV9fLG4uaW5kZXgsbi5ncm91cCksbCgpKX1mdW5jdGlvbiBsKCl7Zm9yKHZhciBpIGluIG4uc3RhdGU9NixuLnRpbWVyLnN0b3AoKSxkZWxldGUgcltlXSxyKXJldHVybjtkZWxldGUgdC5fX3RyYW5zaXRpb259cltlXT1uLG4udGltZXI9JG90KG8sMCxuLnRpbWUpfSkodCxuLHtuYW1lOmUsaW5kZXg6aSxncm91cDpyLG9uOnRhdCx0d2VlbjplYXQsdGltZTpvLnRpbWUsZGVsYXk6by5kZWxheSxkdXJhdGlvbjpvLmR1cmF0aW9uLGVhc2U6by5lYXNlLHRpbWVyOm51bGwsc3RhdGU6MH0pfWZ1bmN0aW9uIGlhdCh0LGUpe3ZhciBuPW9hdCh0LGUpO2lmKG4uc3RhdGU+MCl0aHJvdyBuZXcgRXJyb3IoInRvbyBsYXRlOyBhbHJlYWR5IHNjaGVkdWxlZCIpO3JldHVybiBufWZ1bmN0aW9uIHJhdCh0LGUpe3ZhciBuPW9hdCh0LGUpO2lmKG4uc3RhdGU+Mil0aHJvdyBuZXcgRXJyb3IoInRvbyBsYXRlOyBhbHJlYWR5IHN0YXJ0ZWQiKTtyZXR1cm4gbn1mdW5jdGlvbiBvYXQodCxlKXt2YXIgbj10Ll9fdHJhbnNpdGlvbjtpZighbnx8IShuPW5bZV0pKXRocm93IG5ldyBFcnJvcigidHJhbnNpdGlvbiBub3QgZm91bmQiKTtyZXR1cm4gbn1mdW5jdGlvbiBhYXQodCxlKXt2YXIgbixpLHIsbz10Ll9fdHJhbnNpdGlvbixhPSEwO2lmKG8pe2ZvcihyIGluIGU9bnVsbD09ZT9udWxsOmUrIiIsbykobj1vW3JdKS5uYW1lPT09ZT8oaT1uLnN0YXRlPjImJm4uc3RhdGU8NSxuLnN0YXRlPTYsbi50aW1lci5zdG9wKCksaSYmbi5vbi5jYWxsKCJpbnRlcnJ1cHQiLHQsdC5fX2RhdGFfXyxuLmluZGV4LG4uZ3JvdXApLGRlbGV0ZSBvW3JdKTphPSExO2EmJmRlbGV0ZSB0Ll9fdHJhbnNpdGlvbn19ZnVuY3Rpb24gc2F0KHQsZSxuKXt0LnByb3RvdHlwZT1lLnByb3RvdHlwZT1uLG4uY29uc3RydWN0b3I9dH1mdW5jdGlvbiBsYXQodCxlKXt2YXIgbj1PYmplY3QuY3JlYXRlKHQucHJvdG90eXBlKTtmb3IodmFyIGkgaW4gZSluW2ldPWVbaV07cmV0dXJuIG59ZnVuY3Rpb24gY2F0KCl7fXZhciB1YXQ9LjcsaGF0PTEvdWF0LGRhdD0iXFxzKihbKy1dP1xcZCspXFxzKiIscGF0PSJcXHMqKFsrLV0/XFxkKlxcLj9cXGQrKD86W2VFXVsrLV0/XFxkKyk/KVxccyoiLGZhdD0iXFxzKihbKy1dP1xcZCpcXC4/XFxkKyg/OltlRV1bKy1dP1xcZCspPyklXFxzKiIsbWF0PS9eIyhbMC05YS1mXXszLDh9KSQvLGdhdD1uZXcgUmVnRXhwKCJecmdiXFwoIitbZGF0LGRhdCxkYXRdKyJcXCkkIiksX2F0PW5ldyBSZWdFeHAoIl5yZ2JcXCgiK1tmYXQsZmF0LGZhdF0rIlxcKSQiKSx5YXQ9bmV3IFJlZ0V4cCgiXnJnYmFcXCgiK1tkYXQsZGF0LGRhdCxwYXRdKyJcXCkkIiksdmF0PW5ldyBSZWdFeHAoIl5yZ2JhXFwoIitbZmF0LGZhdCxmYXQscGF0XSsiXFwpJCIpLGJhdD1uZXcgUmVnRXhwKCJeaHNsXFwoIitbcGF0LGZhdCxmYXRdKyJcXCkkIikseGF0PW5ldyBSZWdFeHAoIl5oc2xhXFwoIitbcGF0LGZhdCxmYXQscGF0XSsiXFwpJCIpLHdhdD17YWxpY2VibHVlOjE1NzkyMzgzLGFudGlxdWV3aGl0ZToxNjQ0NDM3NSxhcXVhOjY1NTM1LGFxdWFtYXJpbmU6ODM4ODU2NCxhenVyZToxNTc5NDE3NSxiZWlnZToxNjExOTI2MCxiaXNxdWU6MTY3NzAyNDQsYmxhY2s6MCxibGFuY2hlZGFsbW9uZDoxNjc3MjA0NSxibHVlOjI1NSxibHVldmlvbGV0OjkwNTUyMDIsYnJvd246MTA4MjQyMzQsYnVybHl3b29kOjE0NTk2MjMxLGNhZGV0Ymx1ZTo2MjY2NTI4LGNoYXJ0cmV1c2U6ODM4ODM1MixjaG9jb2xhdGU6MTM3ODk0NzAsY29yYWw6MTY3NDQyNzIsY29ybmZsb3dlcmJsdWU6NjU5MTk4MSxjb3Juc2lsazoxNjc3NTM4OCxjcmltc29uOjE0NDIzMTAwLGN5YW46NjU1MzUsZGFya2JsdWU6MTM5LGRhcmtjeWFuOjM1NzIzLGRhcmtnb2xkZW5yb2Q6MTIwOTI5MzksZGFya2dyYXk6MTExMTkwMTcsZGFya2dyZWVuOjI1NjAwLGRhcmtncmV5OjExMTE5MDE3LGRhcmtraGFraToxMjQzMzI1OSxkYXJrbWFnZW50YTo5MTA5NjQzLGRhcmtvbGl2ZWdyZWVuOjU1OTc5OTksZGFya29yYW5nZToxNjc0NzUyMCxkYXJrb3JjaGlkOjEwMDQwMDEyLGRhcmtyZWQ6OTEwOTUwNCxkYXJrc2FsbW9uOjE1MzA4NDEwLGRhcmtzZWFncmVlbjo5NDE5OTE5LGRhcmtzbGF0ZWJsdWU6NDczNDM0NyxkYXJrc2xhdGVncmF5OjMxMDA0OTUsZGFya3NsYXRlZ3JleTozMTAwNDk1LGRhcmt0dXJxdW9pc2U6NTI5NDUsZGFya3Zpb2xldDo5Njk5NTM5LGRlZXBwaW5rOjE2NzE2OTQ3LGRlZXBza3libHVlOjQ5MTUxLGRpbWdyYXk6NjkwODI2NSxkaW1ncmV5OjY5MDgyNjUsZG9kZ2VyYmx1ZToyMDAzMTk5LGZpcmVicmljazoxMTY3NDE0NixmbG9yYWx3aGl0ZToxNjc3NTkyMCxmb3Jlc3RncmVlbjoyMjYzODQyLGZ1Y2hzaWE6MTY3MTE5MzUsZ2FpbnNib3JvOjE0NDc0NDYwLGdob3N0d2hpdGU6MTYzMTY2NzEsZ29sZDoxNjc2NjcyMCxnb2xkZW5yb2Q6MTQzMjkxMjAsZ3JheTo4NDIxNTA0LGdyZWVuOjMyNzY4LGdyZWVueWVsbG93OjExNDAzMDU1LGdyZXk6ODQyMTUwNCxob25leWRldzoxNTc5NDE2MCxob3RwaW5rOjE2NzM4NzQwLGluZGlhbnJlZDoxMzQ1ODUyNCxpbmRpZ286NDkxNTMzMCxpdm9yeToxNjc3NzIwMCxraGFraToxNTc4NzY2MCxsYXZlbmRlcjoxNTEzMjQxMCxsYXZlbmRlcmJsdXNoOjE2NzczMzY1LGxhd25ncmVlbjo4MTkwOTc2LGxlbW9uY2hpZmZvbjoxNjc3NTg4NSxsaWdodGJsdWU6MTEzOTMyNTQsbGlnaHRjb3JhbDoxNTc2MTUzNixsaWdodGN5YW46MTQ3NDU1OTksbGlnaHRnb2xkZW5yb2R5ZWxsb3c6MTY0NDgyMTAsbGlnaHRncmF5OjEzODgyMzIzLGxpZ2h0Z3JlZW46OTQ5ODI1NixsaWdodGdyZXk6MTM4ODIzMjMsbGlnaHRwaW5rOjE2NzU4NDY1LGxpZ2h0c2FsbW9uOjE2NzUyNzYyLGxpZ2h0c2VhZ3JlZW46MjE0Mjg5MCxsaWdodHNreWJsdWU6ODkwMDM0NixsaWdodHNsYXRlZ3JheTo3ODMzNzUzLGxpZ2h0c2xhdGVncmV5Ojc4MzM3NTMsbGlnaHRzdGVlbGJsdWU6MTE1ODQ3MzQsbGlnaHR5ZWxsb3c6MTY3NzcxODQsbGltZTo2NTI4MCxsaW1lZ3JlZW46MzMyOTMzMCxsaW5lbjoxNjQ0NTY3MCxtYWdlbnRhOjE2NzExOTM1LG1hcm9vbjo4Mzg4NjA4LG1lZGl1bWFxdWFtYXJpbmU6NjczNzMyMixtZWRpdW1ibHVlOjIwNSxtZWRpdW1vcmNoaWQ6MTIyMTE2NjcsbWVkaXVtcHVycGxlOjk2NjI2ODMsbWVkaXVtc2VhZ3JlZW46Mzk3ODA5NyxtZWRpdW1zbGF0ZWJsdWU6ODA4Nzc5MCxtZWRpdW1zcHJpbmdncmVlbjo2NDE1NCxtZWRpdW10dXJxdW9pc2U6NDc3MjMwMCxtZWRpdW12aW9sZXRyZWQ6MTMwNDcxNzMsbWlkbmlnaHRibHVlOjE2NDQ5MTIsbWludGNyZWFtOjE2MTIxODUwLG1pc3R5cm9zZToxNjc3MDI3Myxtb2NjYXNpbjoxNjc3MDIyOSxuYXZham93aGl0ZToxNjc2ODY4NSxuYXZ5OjEyOCxvbGRsYWNlOjE2NjQzNTU4LG9saXZlOjg0MjEzNzYsb2xpdmVkcmFiOjcwNDg3Mzksb3JhbmdlOjE2NzUzOTIwLG9yYW5nZXJlZDoxNjcyOTM0NCxvcmNoaWQ6MTQzMTU3MzQscGFsZWdvbGRlbnJvZDoxNTY1NzEzMCxwYWxlZ3JlZW46MTAwMjU4ODAscGFsZXR1cnF1b2lzZToxMTUyOTk2NixwYWxldmlvbGV0cmVkOjE0MzgxMjAzLHBhcGF5YXdoaXA6MTY3NzMwNzcscGVhY2hwdWZmOjE2NzY3NjczLHBlcnU6MTM0Njg5OTEscGluazoxNjc2MTAzNSxwbHVtOjE0NTI0NjM3LHBvd2RlcmJsdWU6MTE1OTE5MTAscHVycGxlOjgzODg3MzYscmViZWNjYXB1cnBsZTo2Njk3ODgxLHJlZDoxNjcxMTY4MCxyb3N5YnJvd246MTIzNTc1MTkscm95YWxibHVlOjQyODY5NDUsc2FkZGxlYnJvd246OTEyNzE4NyxzYWxtb246MTY0MTY4ODIsc2FuZHlicm93bjoxNjAzMjg2NCxzZWFncmVlbjozMDUwMzI3LHNlYXNoZWxsOjE2Nzc0NjM4LHNpZW5uYToxMDUwNjc5NyxzaWx2ZXI6MTI2MzIyNTYsc2t5Ymx1ZTo4OTAwMzMxLHNsYXRlYmx1ZTo2OTcwMDYxLHNsYXRlZ3JheTo3MzcyOTQ0LHNsYXRlZ3JleTo3MzcyOTQ0LHNub3c6MTY3NzU5MzAsc3ByaW5nZ3JlZW46NjU0MDcsc3RlZWxibHVlOjQ2MjA5ODAsdGFuOjEzODA4NzgwLHRlYWw6MzI4OTYsdGhpc3RsZToxNDIwNDg4OCx0b21hdG86MTY3MzcwOTUsdHVycXVvaXNlOjQyNTE4NTYsdmlvbGV0OjE1NjMxMDg2LHdoZWF0OjE2MTEzMzMxLHdoaXRlOjE2Nzc3MjE1LHdoaXRlc21va2U6MTYxMTkyODUseWVsbG93OjE2Nzc2OTYwLHllbGxvd2dyZWVuOjEwMTQ1MDc0fTtmdW5jdGlvbiBTYXQoKXtyZXR1cm4gdGhpcy5yZ2IoKS5mb3JtYXRIZXgoKX1mdW5jdGlvbiBNYXQoKXtyZXR1cm4gdGhpcy5yZ2IoKS5mb3JtYXRSZ2IoKX1mdW5jdGlvbiBFYXQodCl7dmFyIGUsbjtyZXR1cm4gdD0odCsiIikudHJpbSgpLnRvTG93ZXJDYXNlKCksKGU9bWF0LmV4ZWModCkpPyhuPWVbMV0ubGVuZ3RoLGU9cGFyc2VJbnQoZVsxXSwxNiksNj09PW4/VGF0KGUpOjM9PT1uP25ldyBMYXQoZT4+OCYxNXxlPj40JjI0MCxlPj40JjE1fDI0MCZlLCgxNSZlKTw8NHwxNSZlLDEpOjg9PT1uP0NhdChlPj4yNCYyNTUsZT4+MTYmMjU1LGU+PjgmMjU1LCgyNTUmZSkvMjU1KTo0PT09bj9DYXQoZT4+MTImMTV8ZT4+OCYyNDAsZT4+OCYxNXxlPj40JjI0MCxlPj40JjE1fDI0MCZlLCgoMTUmZSk8PDR8MTUmZSkvMjU1KTpudWxsKTooZT1nYXQuZXhlYyh0KSk/bmV3IExhdChlWzFdLGVbMl0sZVszXSwxKTooZT1fYXQuZXhlYyh0KSk/bmV3IExhdCgyNTUqZVsxXS8xMDAsMjU1KmVbMl0vMTAwLDI1NSplWzNdLzEwMCwxKTooZT15YXQuZXhlYyh0KSk/Q2F0KGVbMV0sZVsyXSxlWzNdLGVbNF0pOihlPXZhdC5leGVjKHQpKT9DYXQoMjU1KmVbMV0vMTAwLDI1NSplWzJdLzEwMCwyNTUqZVszXS8xMDAsZVs0XSk6KGU9YmF0LmV4ZWModCkpP1JhdChlWzFdLGVbMl0vMTAwLGVbM10vMTAwLDEpOihlPXhhdC5leGVjKHQpKT9SYXQoZVsxXSxlWzJdLzEwMCxlWzNdLzEwMCxlWzRdKTp3YXQuaGFzT3duUHJvcGVydHkodCk/VGF0KHdhdFt0XSk6InRyYW5zcGFyZW50Ij09PXQ/bmV3IExhdChOYU4sTmFOLE5hTiwwKTpudWxsfWZ1bmN0aW9uIFRhdCh0KXtyZXR1cm4gbmV3IExhdCh0Pj4xNiYyNTUsdD4+OCYyNTUsMjU1JnQsMSl9ZnVuY3Rpb24gQ2F0KHQsZSxuLGkpe3JldHVybiBpPD0wJiYodD1lPW49TmFOKSxuZXcgTGF0KHQsZSxuLGkpfWZ1bmN0aW9uIEFhdCh0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIGNhdHx8KHQ9RWF0KHQpKSx0P25ldyBMYXQoKHQ9dC5yZ2IoKSkucix0LmcsdC5iLHQub3BhY2l0eSk6bmV3IExhdH1mdW5jdGlvbiBrYXQodCxlLG4saSl7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP0FhdCh0KTpuZXcgTGF0KHQsZSxuLG51bGw9PWk/MTppKX1mdW5jdGlvbiBMYXQodCxlLG4saSl7dGhpcy5yPSt0LHRoaXMuZz0rZSx0aGlzLmI9K24sdGhpcy5vcGFjaXR5PStpfWZ1bmN0aW9uIFBhdCgpe3JldHVybiIjIitJYXQodGhpcy5yKStJYXQodGhpcy5nKStJYXQodGhpcy5iKX1mdW5jdGlvbiBOYXQoKXt2YXIgdD10aGlzLm9wYWNpdHk7cmV0dXJuKDE9PT0odD1pc05hTih0KT8xOk1hdGgubWF4KDAsTWF0aC5taW4oMSx0KSkpPyJyZ2IoIjoicmdiYSgiKStNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKHRoaXMucil8fDApKSsiLCAiK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodGhpcy5nKXx8MCkpKyIsICIrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0aGlzLmIpfHwwKSkrKDE9PT10PyIpIjoiLCAiK3QrIikiKX1mdW5jdGlvbiBJYXQodCl7cmV0dXJuKCh0PU1hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodCl8fDApKSk8MTY/IjAiOiIiKSt0LnRvU3RyaW5nKDE2KX1mdW5jdGlvbiBSYXQodCxlLG4saSl7cmV0dXJuIGk8PTA/dD1lPW49TmFOOm48PTB8fG4+PTE/dD1lPU5hTjplPD0wJiYodD1OYU4pLG5ldyB6YXQodCxlLG4saSl9ZnVuY3Rpb24gT2F0KHQpe2lmKHQgaW5zdGFuY2VvZiB6YXQpcmV0dXJuIG5ldyB6YXQodC5oLHQucyx0LmwsdC5vcGFjaXR5KTtpZih0IGluc3RhbmNlb2YgY2F0fHwodD1FYXQodCkpLCF0KXJldHVybiBuZXcgemF0O2lmKHQgaW5zdGFuY2VvZiB6YXQpcmV0dXJuIHQ7dmFyIGU9KHQ9dC5yZ2IoKSkuci8yNTUsbj10LmcvMjU1LGk9dC5iLzI1NSxyPU1hdGgubWluKGUsbixpKSxvPU1hdGgubWF4KGUsbixpKSxhPU5hTixzPW8tcixsPShvK3IpLzI7cmV0dXJuIHM/KGE9ZT09PW8/KG4taSkvcys2KihuPGkpOm49PT1vPyhpLWUpL3MrMjooZS1uKS9zKzQscy89bDwuNT9vK3I6Mi1vLXIsYSo9NjApOnM9bD4wJiZsPDE/MDphLG5ldyB6YXQoYSxzLGwsdC5vcGFjaXR5KX1mdW5jdGlvbiB6YXQodCxlLG4saSl7dGhpcy5oPSt0LHRoaXMucz0rZSx0aGlzLmw9K24sdGhpcy5vcGFjaXR5PStpfWZ1bmN0aW9uIERhdCh0LGUsbil7cmV0dXJuIDI1NSoodDw2MD9lKyhuLWUpKnQvNjA6dDwxODA/bjp0PDI0MD9lKyhuLWUpKigyNDAtdCkvNjA6ZSl9ZnVuY3Rpb24gQmF0KHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX1mdW5jdGlvbiBIYXQodCl7cmV0dXJuIDE9PSh0PSt0KT9GYXQ6ZnVuY3Rpb24oZSxuKXtyZXR1cm4gbi1lPyhmdW5jdGlvbiBpKHQsZSxuKXtyZXR1cm4gdD1NYXRoLnBvdyh0LG4pLGU9TWF0aC5wb3coZSxuKS10LG49MS9uLGZ1bmN0aW9uKGkpe3JldHVybiBNYXRoLnBvdyh0K2kqZSxuKX19KShlLG4sdCk6QmF0KGlzTmFOKGUpP246ZSl9fWZ1bmN0aW9uIEZhdCh0LGUpe3ZhciBuPWUtdDtyZXR1cm4gbj8oZnVuY3Rpb24gaSh0LGUpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gdCtuKmV9fSkodCxuKTpCYXQoaXNOYU4odCk/ZTp0KX1zYXQoY2F0LEVhdCx7Y29weTpmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmFzc2lnbihuZXcgdGhpcy5jb25zdHJ1Y3Rvcix0aGlzLHQpfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJnYigpLmRpc3BsYXlhYmxlKCl9LGhleDpTYXQsZm9ybWF0SGV4OlNhdCxmb3JtYXRIc2w6ZnVuY3Rpb24gVmF0KCl7cmV0dXJuIE9hdCh0aGlzKS5mb3JtYXRIc2woKX0sZm9ybWF0UmdiOk1hdCx0b1N0cmluZzpNYXR9KSxzYXQoTGF0LGthdCxsYXQoY2F0LHticmlnaHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10P2hhdDpNYXRoLnBvdyhoYXQsdCksbmV3IExhdCh0aGlzLnIqdCx0aGlzLmcqdCx0aGlzLmIqdCx0aGlzLm9wYWNpdHkpfSxkYXJrZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD91YXQ6TWF0aC5wb3codWF0LHQpLG5ldyBMYXQodGhpcy5yKnQsdGhpcy5nKnQsdGhpcy5iKnQsdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LGRpc3BsYXlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuLS41PD10aGlzLnImJnRoaXMucjwyNTUuNSYmLS41PD10aGlzLmcmJnRoaXMuZzwyNTUuNSYmLS41PD10aGlzLmImJnRoaXMuYjwyNTUuNSYmMDw9dGhpcy5vcGFjaXR5JiZ0aGlzLm9wYWNpdHk8PTF9LGhleDpQYXQsZm9ybWF0SGV4OlBhdCxmb3JtYXRSZ2I6TmF0LHRvU3RyaW5nOk5hdH0pKSxzYXQoemF0LChmdW5jdGlvbiBVYXQodCxlLG4saSl7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP09hdCh0KTpuZXcgemF0KHQsZSxuLG51bGw9PWk/MTppKX0pLGxhdChjYXQse2JyaWdodGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/aGF0Ok1hdGgucG93KGhhdCx0KSxuZXcgemF0KHRoaXMuaCx0aGlzLnMsdGhpcy5sKnQsdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/dWF0Ok1hdGgucG93KHVhdCx0KSxuZXcgemF0KHRoaXMuaCx0aGlzLnMsdGhpcy5sKnQsdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5oJTM2MCszNjAqKHRoaXMuaDwwKSxlPWlzTmFOKHQpfHxpc05hTih0aGlzLnMpPzA6dGhpcy5zLG49dGhpcy5sLGk9bisobjwuNT9uOjEtbikqZSxyPTIqbi1pO3JldHVybiBuZXcgTGF0KERhdCh0Pj0yNDA/dC0yNDA6dCsxMjAscixpKSxEYXQodCxyLGkpLERhdCh0PDEyMD90KzI0MDp0LTEyMCxyLGkpLHRoaXMub3BhY2l0eSl9LGRpc3BsYXlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuKDA8PXRoaXMucyYmdGhpcy5zPD0xfHxpc05hTih0aGlzLnMpKSYmMDw9dGhpcy5sJiZ0aGlzLmw8PTEmJjA8PXRoaXMub3BhY2l0eSYmdGhpcy5vcGFjaXR5PD0xfSxmb3JtYXRIc2w6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm9wYWNpdHk7cmV0dXJuKDE9PT0odD1pc05hTih0KT8xOk1hdGgubWF4KDAsTWF0aC5taW4oMSx0KSkpPyJoc2woIjoiaHNsYSgiKSsodGhpcy5ofHwwKSsiLCAiKzEwMCoodGhpcy5zfHwwKSsiJSwgIisxMDAqKHRoaXMubHx8MCkrIiUiKygxPT09dD8iKSI6IiwgIit0KyIpIil9fSkpO3ZhciBqYXQ9KGZ1bmN0aW9uIHQoZSl7dmFyIG49SGF0KGUpO2Z1bmN0aW9uIGkodCxlKXt2YXIgaT1uKCh0PWthdCh0KSkuciwoZT1rYXQoZSkpLnIpLHI9bih0LmcsZS5nKSxvPW4odC5iLGUuYiksYT1GYXQodC5vcGFjaXR5LGUub3BhY2l0eSk7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0LnI9aShlKSx0Lmc9cihlKSx0LmI9byhlKSx0Lm9wYWNpdHk9YShlKSx0KyIifX1yZXR1cm4gaS5nYW1tYT10LGl9KSgxKTtmdW5jdGlvbiBHYXQodCxlKXtyZXR1cm4gdD0rdCxlPStlLGZ1bmN0aW9uKG4pe3JldHVybiB0KigxLW4pK2Uqbn19dmFyIFdhdD0vWy0rXT8oPzpcZCtcLj9cZCp8XC4/XGQrKSg/OltlRV1bLStdP1xkKyk/L2cscWF0PW5ldyBSZWdFeHAoV2F0LnNvdXJjZSwiZyIpO2Z1bmN0aW9uIFlhdCh0LGUpe3ZhciBuLGkscixvPVdhdC5sYXN0SW5kZXg9cWF0Lmxhc3RJbmRleD0wLGE9LTEscz1bXSxsPVtdO2Zvcih0Kz0iIixlKz0iIjsobj1XYXQuZXhlYyh0KSkmJihpPXFhdC5leGVjKGUpKTspKHI9aS5pbmRleCk+byYmKHI9ZS5zbGljZShvLHIpLHNbYV0/c1thXSs9cjpzWysrYV09ciksKG49blswXSk9PT0oaT1pWzBdKT9zW2FdP3NbYV0rPWk6c1srK2FdPWk6KHNbKythXT1udWxsLGwucHVzaCh7aTphLHg6R2F0KG4saSl9KSksbz1xYXQubGFzdEluZGV4O3JldHVybiBvPGUubGVuZ3RoJiYocj1lLnNsaWNlKG8pLHNbYV0/c1thXSs9cjpzWysrYV09cikscy5sZW5ndGg8Mj9sWzBdPyhmdW5jdGlvbiBjKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gdChlKSsiIn19KShsWzBdLngpOihmdW5jdGlvbiB1KHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX0pKGUpOihlPWwubGVuZ3RoLGZ1bmN0aW9uKHQpe2Zvcih2YXIgbixpPTA7aTxlOysraSlzWyhuPWxbaV0pLmldPW4ueCh0KTtyZXR1cm4gcy5qb2luKCIiKX0pfXZhciBYYXQsJGF0LEthdCxaYXQsSmF0PTE4MC9NYXRoLlBJLFFhdD17dHJhbnNsYXRlWDowLHRyYW5zbGF0ZVk6MCxyb3RhdGU6MCxza2V3WDowLHNjYWxlWDoxLHNjYWxlWToxfTtmdW5jdGlvbiB0c3QodCxlLG4saSxyLG8pe3ZhciBhLHMsbDtyZXR1cm4oYT1NYXRoLnNxcnQodCp0K2UqZSkpJiYodC89YSxlLz1hKSwobD10Km4rZSppKSYmKG4tPXQqbCxpLT1lKmwpLChzPU1hdGguc3FydChuKm4raSppKSkmJihuLz1zLGkvPXMsbC89cyksdCppPGUqbiYmKHQ9LXQsZT0tZSxsPS1sLGE9LWEpLHt0cmFuc2xhdGVYOnIsdHJhbnNsYXRlWTpvLHJvdGF0ZTpNYXRoLmF0YW4yKGUsdCkqSmF0LHNrZXdYOk1hdGguYXRhbihsKSpKYXQsc2NhbGVYOmEsc2NhbGVZOnN9fWZ1bmN0aW9uIGVzdCh0LGUsbixpKXtmdW5jdGlvbiByKHQpe3JldHVybiB0Lmxlbmd0aD90LnBvcCgpKyIgIjoiIn1yZXR1cm4gZnVuY3Rpb24obyxhKXt2YXIgcz1bXSxsPVtdO3JldHVybiBvPXQobyksYT10KGEpLChmdW5jdGlvbiBjKHQsaSxyLG8sYSxzKXtpZih0IT09cnx8aSE9PW8pe3ZhciBsPWEucHVzaCgidHJhbnNsYXRlKCIsbnVsbCxlLG51bGwsbik7cy5wdXNoKHtpOmwtNCx4OkdhdCh0LHIpfSx7aTpsLTIseDpHYXQoaSxvKX0pfWVsc2Uocnx8bykmJmEucHVzaCgidHJhbnNsYXRlKCIrcitlK28rbil9KShvLnRyYW5zbGF0ZVgsby50cmFuc2xhdGVZLGEudHJhbnNsYXRlWCxhLnRyYW5zbGF0ZVkscyxsKSwoZnVuY3Rpb24gdSh0LGUsbixvKXt0IT09ZT8odC1lPjE4MD9lKz0zNjA6ZS10PjE4MCYmKHQrPTM2MCksby5wdXNoKHtpOm4ucHVzaChyKG4pKyJyb3RhdGUoIixudWxsLGkpLTIseDpHYXQodCxlKX0pKTplJiZuLnB1c2gocihuKSsicm90YXRlKCIrZStpKX0pKG8ucm90YXRlLGEucm90YXRlLHMsbCksKGZ1bmN0aW9uIGgodCxlLG4sbyl7dCE9PWU/by5wdXNoKHtpOm4ucHVzaChyKG4pKyJza2V3WCgiLG51bGwsaSktMix4OkdhdCh0LGUpfSk6ZSYmbi5wdXNoKHIobikrInNrZXdYKCIrZStpKX0pKG8uc2tld1gsYS5za2V3WCxzLGwpLChmdW5jdGlvbiBkKHQsZSxuLGksbyxhKXtpZih0IT09bnx8ZSE9PWkpe3ZhciBzPW8ucHVzaChyKG8pKyJzY2FsZSgiLG51bGwsIiwiLG51bGwsIikiKTthLnB1c2goe2k6cy00LHg6R2F0KHQsbil9LHtpOnMtMix4OkdhdChlLGkpfSl9ZWxzZSAxPT09biYmMT09PWl8fG8ucHVzaChyKG8pKyJzY2FsZSgiK24rIiwiK2krIikiKX0pKG8uc2NhbGVYLG8uc2NhbGVZLGEuc2NhbGVYLGEuc2NhbGVZLHMsbCksbz1hPW51bGwsZnVuY3Rpb24odCl7Zm9yKHZhciBlLG49LTEsaT1sLmxlbmd0aDsrK248aTspc1soZT1sW25dKS5pXT1lLngodCk7cmV0dXJuIHMuam9pbigiIil9fX12YXIgbnN0PWVzdCgoZnVuY3Rpb24gaXN0KHQpe3JldHVybiJub25lIj09PXQ/UWF0OihYYXR8fChYYXQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiRElWIiksJGF0PWRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxLYXQ9ZG9jdW1lbnQuZGVmYXVsdFZpZXcpLFhhdC5zdHlsZS50cmFuc2Zvcm09dCx0PUthdC5nZXRDb21wdXRlZFN0eWxlKCRhdC5hcHBlbmRDaGlsZChYYXQpLG51bGwpLmdldFByb3BlcnR5VmFsdWUoInRyYW5zZm9ybSIpLCRhdC5yZW1vdmVDaGlsZChYYXQpLHRzdCgrKHQ9dC5zbGljZSg3LC0xKS5zcGxpdCgiLCIpKVswXSwrdFsxXSwrdFsyXSwrdFszXSwrdFs0XSwrdFs1XSkpfSksInB4LCAiLCJweCkiLCJkZWcpIikscnN0PWVzdCgoZnVuY3Rpb24gb3N0KHQpe3JldHVybiBudWxsPT10P1FhdDooWmF0fHwoWmF0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJnIikpLFphdC5zZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIsdCksKHQ9WmF0LnRyYW5zZm9ybS5iYXNlVmFsLmNvbnNvbGlkYXRlKCkpP3RzdCgodD10Lm1hdHJpeCkuYSx0LmIsdC5jLHQuZCx0LmUsdC5mKTpRYXQpfSksIiwgIiwiKSIsIikiKTtmdW5jdGlvbiBhc3QodCxlKXt2YXIgbixpO3JldHVybiBmdW5jdGlvbigpe3ZhciByPXJhdCh0aGlzLHQpLG89ci50d2VlbjtpZihvIT09bilmb3IodmFyIGE9MCxzPShpPW49bykubGVuZ3RoO2E8czsrK2EpaWYoaVthXS5uYW1lPT09ZSl7KGk9aS5zbGljZSgpKS5zcGxpY2UoYSwxKTticmVha31yLnR3ZWVuPWl9fWZ1bmN0aW9uIHNzdCh0LGUsbil7dmFyIGkscjtpZigiZnVuY3Rpb24iIT10eXBlb2Ygbil0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG89cmF0KHRoaXMsdCksYT1vLnR3ZWVuO2lmKGEhPT1pKXtyPShpPWEpLnNsaWNlKCk7Zm9yKHZhciBzPXtuYW1lOmUsdmFsdWU6bn0sbD0wLGM9ci5sZW5ndGg7bDxjOysrbClpZihyW2xdLm5hbWU9PT1lKXtyW2xdPXM7YnJlYWt9bD09PWMmJnIucHVzaChzKX1vLnR3ZWVuPXJ9fWZ1bmN0aW9uIGxzdCh0LGUsbil7dmFyIGk9dC5faWQ7cmV0dXJuIHQuZWFjaCgoZnVuY3Rpb24oKXt2YXIgdD1yYXQodGhpcyxpKTsodC52YWx1ZXx8KHQudmFsdWU9e30pKVtlXT1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pKSxmdW5jdGlvbih0KXtyZXR1cm4gb2F0KHQsaSkudmFsdWVbZV19fWZ1bmN0aW9uIGNzdCh0LGUpe3ZhciBuO3JldHVybigibnVtYmVyIj09dHlwZW9mIGU/R2F0OmUgaW5zdGFuY2VvZiBFYXQ/amF0OihuPUVhdChlKSk/KGU9bixqYXQpOllhdCkodCxlKX1mdW5jdGlvbiB1c3QodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGUodCl9fWZ1bmN0aW9uIGhzdCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCl9fWZ1bmN0aW9uIGRzdCh0LGUsbil7dmFyIGkscjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbz10aGlzLmdldEF0dHJpYnV0ZSh0KTtyZXR1cm4gbz09PW4/bnVsbDpvPT09aT9yOnI9ZShpPW8sbil9fWZ1bmN0aW9uIHBzdCh0LGUsbil7dmFyIGkscjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbz10aGlzLmdldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCk7cmV0dXJuIG89PT1uP251bGw6bz09PWk/cjpyPWUoaT1vLG4pfX1mdW5jdGlvbiBmc3QodCxlLG4pe3ZhciBpLHIsbztyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYSxzPW4odGhpcyk7aWYobnVsbCE9cylyZXR1cm4oYT10aGlzLmdldEF0dHJpYnV0ZSh0KSk9PT1zP251bGw6YT09PWkmJnM9PT1yP286bz1lKGk9YSxyPXMpO3RoaXMucmVtb3ZlQXR0cmlidXRlKHQpfX1mdW5jdGlvbiBtc3QodCxlLG4pe3ZhciBpLHIsbztyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYSxzPW4odGhpcyk7aWYobnVsbCE9cylyZXR1cm4oYT10aGlzLmdldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCkpPT09cz9udWxsOmE9PT1pJiZzPT09cj9vOm89ZShpPWEscj1zKTt0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCl9fWZ1bmN0aW9uIGdzdCh0LGUpe2Z1bmN0aW9uIG4oKXt2YXIgbj10aGlzLGk9ZS5hcHBseShuLGFyZ3VtZW50cyk7cmV0dXJuIGkmJmZ1bmN0aW9uKGUpe24uc2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsLGkoZSkpfX1yZXR1cm4gbi5fdmFsdWU9ZSxufWZ1bmN0aW9uIF9zdCh0LGUpe2Z1bmN0aW9uIG4oKXt2YXIgbj10aGlzLGk9ZS5hcHBseShuLGFyZ3VtZW50cyk7cmV0dXJuIGkmJmZ1bmN0aW9uKGUpe24uc2V0QXR0cmlidXRlKHQsaShlKSl9fXJldHVybiBuLl92YWx1ZT1lLG59ZnVuY3Rpb24geXN0KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7aWF0KHRoaXMsdCkuZGVsYXk9K2UuYXBwbHkodGhpcyxhcmd1bWVudHMpfX1mdW5jdGlvbiB2c3QodCxlKXtyZXR1cm4gZT0rZSxmdW5jdGlvbigpe2lhdCh0aGlzLHQpLmRlbGF5PWV9fWZ1bmN0aW9uIGJzdCh0LGUpe3JldHVybiBmdW5jdGlvbigpe3JhdCh0aGlzLHQpLmR1cmF0aW9uPStlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19ZnVuY3Rpb24geHN0KHQsZSl7cmV0dXJuIGU9K2UsZnVuY3Rpb24oKXtyYXQodGhpcyx0KS5kdXJhdGlvbj1lfX1mdW5jdGlvbiB3c3QodCxlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIGZ1bmN0aW9uKCl7cmF0KHRoaXMsdCkuZWFzZT1lfX1mdW5jdGlvbiBTc3QodCxlLG4pe3ZhciBpLHIsbz0oZnVuY3Rpb24gYSh0KXtyZXR1cm4odCsiIikudHJpbSgpLnNwbGl0KC9efFxzKy8pLmV2ZXJ5KChmdW5jdGlvbih0KXt2YXIgZT10LmluZGV4T2YoIi4iKTtyZXR1cm4gZT49MCYmKHQ9dC5zbGljZSgwLGUpKSwhdHx8InN0YXJ0Ij09PXR9KSl9KShlKT9pYXQ6cmF0O3JldHVybiBmdW5jdGlvbigpe3ZhciBhPW8odGhpcyx0KSxzPWEub247cyE9PWkmJihyPShpPXMpLmNvcHkoKSkub24oZSxuKSxhLm9uPXJ9fXZhciBNc3Q9SnJ0LnByb3RvdHlwZS5jb25zdHJ1Y3RvcjtmdW5jdGlvbiBFc3QodCxlLG4pe2Z1bmN0aW9uIGkoKXt2YXIgaT10aGlzLHI9ZS5hcHBseShpLGFyZ3VtZW50cyk7cmV0dXJuIHImJmZ1bmN0aW9uKGUpe2kuc3R5bGUuc2V0UHJvcGVydHkodCxyKGUpLG4pfX1yZXR1cm4gaS5fdmFsdWU9ZSxpfXZhciBUc3Q9MDtmdW5jdGlvbiBDc3QodCxlLG4saSl7dGhpcy5fZ3JvdXBzPXQsdGhpcy5fcGFyZW50cz1lLHRoaXMuX25hbWU9bix0aGlzLl9pZD1pfWZ1bmN0aW9uIEFzdCh0KXtyZXR1cm4gSnJ0KCkudHJhbnNpdGlvbih0KX1mdW5jdGlvbiBrc3QoKXtyZXR1cm4rK1RzdH12YXIgTHN0PUpydC5wcm90b3R5cGU7Q3N0LnByb3RvdHlwZT1Bc3QucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpDc3Qsc2VsZWN0OmZ1bmN0aW9uIFBzdCh0KXt2YXIgZT10aGlzLl9uYW1lLG49dGhpcy5faWQ7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PUppdCh0KSk7Zm9yKHZhciBpPXRoaXMuX2dyb3VwcyxyPWkubGVuZ3RoLG89bmV3IEFycmF5KHIpLGE9MDthPHI7KythKWZvcih2YXIgcyxsLGM9aVthXSx1PWMubGVuZ3RoLGg9b1thXT1uZXcgQXJyYXkodSksZD0wO2Q8dTsrK2QpKHM9Y1tkXSkmJihsPXQuY2FsbChzLHMuX19kYXRhX18sZCxjKSkmJigiX19kYXRhX18iaW4gcyYmKGwuX19kYXRhX189cy5fX2RhdGFfXyksaFtkXT1sLG5hdChoW2RdLGUsbixkLGgsb2F0KHMsbikpKTtyZXR1cm4gbmV3IENzdChvLHRoaXMuX3BhcmVudHMsZSxuKX0sc2VsZWN0QWxsOmZ1bmN0aW9uIE5zdCh0KXt2YXIgZT10aGlzLl9uYW1lLG49dGhpcy5faWQ7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PXRydCh0KSk7Zm9yKHZhciBpPXRoaXMuX2dyb3VwcyxyPWkubGVuZ3RoLG89W10sYT1bXSxzPTA7czxyOysrcylmb3IodmFyIGwsYz1pW3NdLHU9Yy5sZW5ndGgsaD0wO2g8dTsrK2gpaWYobD1jW2hdKXtmb3IodmFyIGQscD10LmNhbGwobCxsLl9fZGF0YV9fLGgsYyksZj1vYXQobCxuKSxtPTAsZz1wLmxlbmd0aDttPGc7KyttKShkPXBbbV0pJiZuYXQoZCxlLG4sbSxwLGYpO28ucHVzaChwKSxhLnB1c2gobCl9cmV0dXJuIG5ldyBDc3QobyxhLGUsbil9LGZpbHRlcjpmdW5jdGlvbiBJc3QodCl7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PWVydCh0KSk7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPWUubGVuZ3RoLGk9bmV3IEFycmF5KG4pLHI9MDtyPG47KytyKWZvcih2YXIgbyxhPWVbcl0scz1hLmxlbmd0aCxsPWlbcl09W10sYz0wO2M8czsrK2MpKG89YVtjXSkmJnQuY2FsbChvLG8uX19kYXRhX18sYyxhKSYmbC5wdXNoKG8pO3JldHVybiBuZXcgQ3N0KGksdGhpcy5fcGFyZW50cyx0aGlzLl9uYW1lLHRoaXMuX2lkKX0sbWVyZ2U6ZnVuY3Rpb24gUnN0KHQpe2lmKHQuX2lkIT09dGhpcy5faWQpdGhyb3cgbmV3IEVycm9yO2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj10Ll9ncm91cHMsaT1lLmxlbmd0aCxyPU1hdGgubWluKGksbi5sZW5ndGgpLG89bmV3IEFycmF5KGkpLGE9MDthPHI7KythKWZvcih2YXIgcyxsPWVbYV0sYz1uW2FdLHU9bC5sZW5ndGgsaD1vW2FdPW5ldyBBcnJheSh1KSxkPTA7ZDx1OysrZCkocz1sW2RdfHxjW2RdKSYmKGhbZF09cyk7Zm9yKDthPGk7KythKW9bYV09ZVthXTtyZXR1cm4gbmV3IENzdChvLHRoaXMuX3BhcmVudHMsdGhpcy5fbmFtZSx0aGlzLl9pZCl9LHNlbGVjdGlvbjpmdW5jdGlvbiBPc3QoKXtyZXR1cm4gbmV3IE1zdCh0aGlzLl9ncm91cHMsdGhpcy5fcGFyZW50cyl9LHRyYW5zaXRpb246ZnVuY3Rpb24genN0KCl7Zm9yKHZhciB0PXRoaXMuX25hbWUsZT10aGlzLl9pZCxuPWtzdCgpLGk9dGhpcy5fZ3JvdXBzLHI9aS5sZW5ndGgsbz0wO288cjsrK28pZm9yKHZhciBhLHM9aVtvXSxsPXMubGVuZ3RoLGM9MDtjPGw7KytjKWlmKGE9c1tjXSl7dmFyIHU9b2F0KGEsZSk7bmF0KGEsdCxuLGMscyx7dGltZTp1LnRpbWUrdS5kZWxheSt1LmR1cmF0aW9uLGRlbGF5OjAsZHVyYXRpb246dS5kdXJhdGlvbixlYXNlOnUuZWFzZX0pfXJldHVybiBuZXcgQ3N0KGksdGhpcy5fcGFyZW50cyx0LG4pfSxjYWxsOkxzdC5jYWxsLG5vZGVzOkxzdC5ub2Rlcyxub2RlOkxzdC5ub2RlLHNpemU6THN0LnNpemUsZW1wdHk6THN0LmVtcHR5LGVhY2g6THN0LmVhY2gsb246ZnVuY3Rpb24gRHN0KHQsZSl7dmFyIG49dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8Mj9vYXQodGhpcy5ub2RlKCksbikub24ub24odCk6dGhpcy5lYWNoKFNzdChuLHQsZSkpfSxhdHRyOmZ1bmN0aW9uIEJzdCh0LGUpe3ZhciBuPVlpdCh0KSxpPSJ0cmFuc2Zvcm0iPT09bj9yc3Q6Y3N0O3JldHVybiB0aGlzLmF0dHJUd2Vlbih0LCJmdW5jdGlvbiI9PXR5cGVvZiBlPyhuLmxvY2FsP21zdDpmc3QpKG4saSxsc3QodGhpcywiYXR0ci4iK3QsZSkpOm51bGw9PWU/KG4ubG9jYWw/aHN0OnVzdCkobik6KG4ubG9jYWw/cHN0OmRzdCkobixpLGUrIiIpKX0sYXR0clR3ZWVuOmZ1bmN0aW9uIEhzdCh0LGUpe3ZhciBuPSJhdHRyLiIrdDtpZihhcmd1bWVudHMubGVuZ3RoPDIpcmV0dXJuKG49dGhpcy50d2VlbihuKSkmJm4uX3ZhbHVlO2lmKG51bGw9PWUpcmV0dXJuIHRoaXMudHdlZW4obixudWxsKTtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3I7dmFyIGk9WWl0KHQpO3JldHVybiB0aGlzLnR3ZWVuKG4sKGkubG9jYWw/Z3N0Ol9zdCkoaSxlKSl9LHN0eWxlOmZ1bmN0aW9uIEZzdCh0LGUsbil7dmFyIGk9InRyYW5zZm9ybSI9PSh0Kz0iIik/bnN0OmNzdDtyZXR1cm4gbnVsbD09ZT90aGlzLnN0eWxlVHdlZW4odCwoZnVuY3Rpb24gbyh0LGUpe3ZhciBuLGkscjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbz1fcnQodGhpcyx0KSxhPSh0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpLF9ydCh0aGlzLHQpKTtyZXR1cm4gbz09PWE/bnVsbDpvPT09biYmYT09PWk/cjpyPWUobj1vLGk9YSl9fSkodCxpKSkub24oImVuZC5zdHlsZS4iK3QsKGZ1bmN0aW9uIHIodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0KX19KSh0KSk6dGhpcy5zdHlsZVR3ZWVuKHQsImZ1bmN0aW9uIj09dHlwZW9mIGU/KGZ1bmN0aW9uIGEodCxlLG4pe3ZhciBpLHIsbztyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYT1fcnQodGhpcyx0KSxzPW4odGhpcyk7cmV0dXJuIG51bGw9PXMmJih0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpLHM9X3J0KHRoaXMsdCkpLGE9PT1zP251bGw6YT09PWkmJnM9PT1yP286bz1lKGk9YSxyPXMpfX0pKHQsaSxsc3QodGhpcywic3R5bGUuIit0LGUpKTooZnVuY3Rpb24gcyh0LGUsbil7dmFyIGkscjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbz1fcnQodGhpcyx0KTtyZXR1cm4gbz09PW4/bnVsbDpvPT09aT9yOnI9ZShpPW8sbil9fSkodCxpLGUrIiIpLG4pfSxzdHlsZVR3ZWVuOmZ1bmN0aW9uIFZzdCh0LGUsbil7dmFyIGk9InN0eWxlLiIrKHQrPSIiKTtpZihhcmd1bWVudHMubGVuZ3RoPDIpcmV0dXJuKGk9dGhpcy50d2VlbihpKSkmJmkuX3ZhbHVlO2lmKG51bGw9PWUpcmV0dXJuIHRoaXMudHdlZW4oaSxudWxsKTtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIHRoaXMudHdlZW4oaSxFc3QodCxlLG51bGw9PW4/IiI6bikpfSx0ZXh0OmZ1bmN0aW9uIFVzdCh0KXtyZXR1cm4gdGhpcy50d2VlbigidGV4dCIsImZ1bmN0aW9uIj09dHlwZW9mIHQ/KGZ1bmN0aW9uIGUodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dCh0aGlzKTt0aGlzLnRleHRDb250ZW50PW51bGw9PWU/IiI6ZX19KShsc3QodGhpcywidGV4dCIsdCkpOihmdW5jdGlvbiBuKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMudGV4dENvbnRlbnQ9dH19KShudWxsPT10PyIiOnQrIiIpKX0scmVtb3ZlOmZ1bmN0aW9uIGpzdCgpe3JldHVybiB0aGlzLm9uKCJlbmQucmVtb3ZlIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdD10aGlzLnBhcmVudE5vZGU7Zm9yKHZhciBuIGluIHRoaXMuX190cmFuc2l0aW9uKWlmKCtuIT09ZSlyZXR1cm47dCYmdC5yZW1vdmVDaGlsZCh0aGlzKX19KSh0aGlzLl9pZCkpfSx0d2VlbjpmdW5jdGlvbiBHc3QodCxlKXt2YXIgbj10aGlzLl9pZDtpZih0Kz0iIixhcmd1bWVudHMubGVuZ3RoPDIpe2Zvcih2YXIgaSxyPW9hdCh0aGlzLm5vZGUoKSxuKS50d2VlbixvPTAsYT1yLmxlbmd0aDtvPGE7KytvKWlmKChpPXJbb10pLm5hbWU9PT10KXJldHVybiBpLnZhbHVlO3JldHVybiBudWxsfXJldHVybiB0aGlzLmVhY2goKG51bGw9PWU/YXN0OnNzdCkobix0LGUpKX0sZGVsYXk6ZnVuY3Rpb24gV3N0KHQpe3ZhciBlPXRoaXMuX2lkO3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaCgoImZ1bmN0aW9uIj09dHlwZW9mIHQ/eXN0OnZzdCkoZSx0KSk6b2F0KHRoaXMubm9kZSgpLGUpLmRlbGF5fSxkdXJhdGlvbjpmdW5jdGlvbiBxc3QodCl7dmFyIGU9dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKCgiZnVuY3Rpb24iPT10eXBlb2YgdD9ic3Q6eHN0KShlLHQpKTpvYXQodGhpcy5ub2RlKCksZSkuZHVyYXRpb259LGVhc2U6ZnVuY3Rpb24gWXN0KHQpe3ZhciBlPXRoaXMuX2lkO3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaCh3c3QoZSx0KSk6b2F0KHRoaXMubm9kZSgpLGUpLmVhc2V9fTt2YXIgWHN0PXt0aW1lOm51bGwsZGVsYXk6MCxkdXJhdGlvbjoyNTAsZWFzZTpxZn07ZnVuY3Rpb24gJHN0KHQsZSl7Zm9yKHZhciBuOyEobj10Ll9fdHJhbnNpdGlvbil8fCEobj1uW2VdKTspaWYoISh0PXQucGFyZW50Tm9kZSkpcmV0dXJuIFhzdC50aW1lPXFvdCgpLFhzdDtyZXR1cm4gbn1KcnQucHJvdG90eXBlLmludGVycnVwdD1mdW5jdGlvbiBLc3QodCl7cmV0dXJuIHRoaXMuZWFjaCgoZnVuY3Rpb24oKXthYXQodGhpcyx0KX0pKX0sSnJ0LnByb3RvdHlwZS50cmFuc2l0aW9uPWZ1bmN0aW9uIFpzdCh0KXt2YXIgZSxuO3QgaW5zdGFuY2VvZiBDc3Q/KGU9dC5faWQsdD10Ll9uYW1lKTooZT1rc3QoKSwobj1Yc3QpLnRpbWU9cW90KCksdD1udWxsPT10P251bGw6dCsiIik7Zm9yKHZhciBpPXRoaXMuX2dyb3VwcyxyPWkubGVuZ3RoLG89MDtvPHI7KytvKWZvcih2YXIgYSxzPWlbb10sbD1zLmxlbmd0aCxjPTA7YzxsOysrYykoYT1zW2NdKSYmbmF0KGEsdCxlLGMscyxufHwkc3QoYSxlKSk7cmV0dXJuIG5ldyBDc3QoaSx0aGlzLl9wYXJlbnRzLHQsZSl9O3ZhciBKc3Q9W251bGxdO2Z1bmN0aW9uIFFzdCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gdGx0KHQpe3JldHVybiB0WzBdfWZ1bmN0aW9uIGVsdCh0KXtyZXR1cm4gdFsxXX1mdW5jdGlvbiBubHQoKXt0aGlzLl89bnVsbH1mdW5jdGlvbiBpbHQodCl7dC5VPXQuQz10Lkw9dC5SPXQuUD10Lk49bnVsbH1mdW5jdGlvbiBybHQodCxlKXt2YXIgbj1lLGk9ZS5SLHI9bi5VO3I/ci5MPT09bj9yLkw9aTpyLlI9aTp0Ll89aSxpLlU9cixuLlU9aSxuLlI9aS5MLG4uUiYmKG4uUi5VPW4pLGkuTD1ufWZ1bmN0aW9uIG9sdCh0LGUpe3ZhciBuPWUsaT1lLkwscj1uLlU7cj9yLkw9PT1uP3IuTD1pOnIuUj1pOnQuXz1pLGkuVT1yLG4uVT1pLG4uTD1pLlIsbi5MJiYobi5MLlU9biksaS5SPW59ZnVuY3Rpb24gYWx0KHQpe2Zvcig7dC5MOyl0PXQuTDtyZXR1cm4gdH1mdW5jdGlvbiBzbHQodCxlLG4saSl7dmFyIHI9W251bGwsbnVsbF0sbz1QbHQucHVzaChyKS0xO3JldHVybiByLmxlZnQ9dCxyLnJpZ2h0PWUsbiYmY2x0KHIsdCxlLG4pLGkmJmNsdChyLGUsdCxpKSxrbHRbdC5pbmRleF0uaGFsZmVkZ2VzLnB1c2gobyksa2x0W2UuaW5kZXhdLmhhbGZlZGdlcy5wdXNoKG8pLHJ9ZnVuY3Rpb24gbGx0KHQsZSxuKXt2YXIgaT1bZSxuXTtyZXR1cm4gaS5sZWZ0PXQsaX1mdW5jdGlvbiBjbHQodCxlLG4saSl7dFswXXx8dFsxXT90LmxlZnQ9PT1uP3RbMV09aTp0WzBdPWk6KHRbMF09aSx0LmxlZnQ9ZSx0LnJpZ2h0PW4pfWZ1bmN0aW9uIHVsdCh0LGUsbixpLHIpe3ZhciBvLGE9dFswXSxzPXRbMV0sbD1hWzBdLGM9YVsxXSx1PTAsaD0xLGQ9c1swXS1sLHA9c1sxXS1jO2lmKG89ZS1sLGR8fCEobz4wKSl7aWYoby89ZCxkPDApe2lmKG88dSlyZXR1cm47bzxoJiYoaD1vKX1lbHNlIGlmKGQ+MCl7aWYobz5oKXJldHVybjtvPnUmJih1PW8pfWlmKG89aS1sLGR8fCEobzwwKSl7aWYoby89ZCxkPDApe2lmKG8+aClyZXR1cm47bz51JiYodT1vKX1lbHNlIGlmKGQ+MCl7aWYobzx1KXJldHVybjtvPGgmJihoPW8pfWlmKG89bi1jLHB8fCEobz4wKSl7aWYoby89cCxwPDApe2lmKG88dSlyZXR1cm47bzxoJiYoaD1vKX1lbHNlIGlmKHA+MCl7aWYobz5oKXJldHVybjtvPnUmJih1PW8pfWlmKG89ci1jLHB8fCEobzwwKSl7aWYoby89cCxwPDApe2lmKG8+aClyZXR1cm47bz51JiYodT1vKX1lbHNlIGlmKHA+MCl7aWYobzx1KXJldHVybjtvPGgmJihoPW8pfXJldHVybiEodT4wfHxoPDEpfHwodT4wJiYodFswXT1bbCt1KmQsYyt1KnBdKSxoPDEmJih0WzFdPVtsK2gqZCxjK2gqcF0pLCEwKX19fX19ZnVuY3Rpb24gaGx0KHQsZSxuLGkscil7dmFyIG89dFsxXTtpZihvKXJldHVybiEwO3ZhciBhLHMsbD10WzBdLGM9dC5sZWZ0LHU9dC5yaWdodCxoPWNbMF0sZD1jWzFdLHA9dVswXSxmPXVbMV0sbT0oaCtwKS8yO2lmKGY9PT1kKXtpZihtPGV8fG0+PWkpcmV0dXJuO2lmKGg+cCl7aWYobCl7aWYobFsxXT49cilyZXR1cm59ZWxzZSBsPVttLG5dO289W20scl19ZWxzZXtpZihsKXtpZihsWzFdPG4pcmV0dXJufWVsc2UgbD1bbSxyXTtvPVttLG5dfX1lbHNlIGlmKHM9KGQrZikvMi0oYT0oaC1wKS8oZi1kKSkqbSxhPC0xfHxhPjEpaWYoaD5wKXtpZihsKXtpZihsWzFdPj1yKXJldHVybn1lbHNlIGw9WyhuLXMpL2Esbl07bz1bKHItcykvYSxyXX1lbHNle2lmKGwpe2lmKGxbMV08bilyZXR1cm59ZWxzZSBsPVsoci1zKS9hLHJdO289WyhuLXMpL2Esbl19ZWxzZSBpZihkPGYpe2lmKGwpe2lmKGxbMF0+PWkpcmV0dXJufWVsc2UgbD1bZSxhKmUrc107bz1baSxhKmkrc119ZWxzZXtpZihsKXtpZihsWzBdPGUpcmV0dXJufWVsc2UgbD1baSxhKmkrc107bz1bZSxhKmUrc119cmV0dXJuIHRbMF09bCx0WzFdPW8sITB9ZnVuY3Rpb24gZGx0KHQsZSl7dmFyIG49dC5zaXRlLGk9ZS5sZWZ0LHI9ZS5yaWdodDtyZXR1cm4gbj09PXImJihyPWksaT1uKSxyP01hdGguYXRhbjIoclsxXS1pWzFdLHJbMF0taVswXSk6KG49PT1pPyhpPWVbMV0scj1lWzBdKTooaT1lWzBdLHI9ZVsxXSksTWF0aC5hdGFuMihpWzBdLXJbMF0sclsxXS1pWzFdKSl9ZnVuY3Rpb24gcGx0KHQsZSl7cmV0dXJuIGVbKyhlLmxlZnQhPT10LnNpdGUpXX1mdW5jdGlvbiBmbHQodCxlKXtyZXR1cm4gZVsrKGUubGVmdD09PXQuc2l0ZSldfW5sdC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOm5sdCxpbnNlcnQ6ZnVuY3Rpb24odCxlKXt2YXIgbixpLHI7aWYodCl7aWYoZS5QPXQsZS5OPXQuTix0Lk4mJih0Lk4uUD1lKSx0Lk49ZSx0LlIpe2Zvcih0PXQuUjt0Lkw7KXQ9dC5MO3QuTD1lfWVsc2UgdC5SPWU7bj10fWVsc2UgdGhpcy5fPyh0PWFsdCh0aGlzLl8pLGUuUD1udWxsLGUuTj10LHQuUD10Lkw9ZSxuPXQpOihlLlA9ZS5OPW51bGwsdGhpcy5fPWUsbj1udWxsKTtmb3IoZS5MPWUuUj1udWxsLGUuVT1uLGUuQz0hMCx0PWU7biYmbi5DOyluPT09KGk9bi5VKS5MPyhyPWkuUikmJnIuQz8obi5DPXIuQz0hMSxpLkM9ITAsdD1pKToodD09PW4uUiYmKHJsdCh0aGlzLG4pLG49KHQ9bikuVSksbi5DPSExLGkuQz0hMCxvbHQodGhpcyxpKSk6KHI9aS5MKSYmci5DPyhuLkM9ci5DPSExLGkuQz0hMCx0PWkpOih0PT09bi5MJiYob2x0KHRoaXMsbiksbj0odD1uKS5VKSxuLkM9ITEsaS5DPSEwLHJsdCh0aGlzLGkpKSxuPXQuVTt0aGlzLl8uQz0hMX0scmVtb3ZlOmZ1bmN0aW9uKHQpe3QuTiYmKHQuTi5QPXQuUCksdC5QJiYodC5QLk49dC5OKSx0Lk49dC5QPW51bGw7dmFyIGUsbixpLHI9dC5VLG89dC5MLGE9dC5SO2lmKG49bz9hP2FsdChhKTpvOmEscj9yLkw9PT10P3IuTD1uOnIuUj1uOnRoaXMuXz1uLG8mJmE/KGk9bi5DLG4uQz10LkMsbi5MPW8sby5VPW4sbiE9PWE/KHI9bi5VLG4uVT10LlUsci5MPXQ9bi5SLG4uUj1hLGEuVT1uKToobi5VPXIscj1uLHQ9bi5SKSk6KGk9dC5DLHQ9biksdCYmKHQuVT1yKSwhaSlpZih0JiZ0LkMpdC5DPSExO2Vsc2V7ZG97aWYodD09PXRoaXMuXylicmVhaztpZih0PT09ci5MKXtpZigoZT1yLlIpLkMmJihlLkM9ITEsci5DPSEwLHJsdCh0aGlzLHIpLGU9ci5SKSxlLkwmJmUuTC5DfHxlLlImJmUuUi5DKXtlLlImJmUuUi5DfHwoZS5MLkM9ITEsZS5DPSEwLG9sdCh0aGlzLGUpLGU9ci5SKSxlLkM9ci5DLHIuQz1lLlIuQz0hMSxybHQodGhpcyxyKSx0PXRoaXMuXzticmVha319ZWxzZSBpZigoZT1yLkwpLkMmJihlLkM9ITEsci5DPSEwLG9sdCh0aGlzLHIpLGU9ci5MKSxlLkwmJmUuTC5DfHxlLlImJmUuUi5DKXtlLkwmJmUuTC5DfHwoZS5SLkM9ITEsZS5DPSEwLHJsdCh0aGlzLGUpLGU9ci5MKSxlLkM9ci5DLHIuQz1lLkwuQz0hMSxvbHQodGhpcyxyKSx0PXRoaXMuXzticmVha31lLkM9ITAsdD1yLHI9ci5VfXdoaWxlKCF0LkMpO3QmJih0LkM9ITEpfX19O3ZhciBtbHQsZ2x0PVtdO2Z1bmN0aW9uIF9sdCgpe2lsdCh0aGlzKSx0aGlzLng9dGhpcy55PXRoaXMuYXJjPXRoaXMuc2l0ZT10aGlzLmN5PW51bGx9ZnVuY3Rpb24geWx0KHQpe3ZhciBlPXQuUCxuPXQuTjtpZihlJiZuKXt2YXIgaT1lLnNpdGUscj10LnNpdGUsbz1uLnNpdGU7aWYoaSE9PW8pe3ZhciBhPXJbMF0scz1yWzFdLGw9aVswXS1hLGM9aVsxXS1zLHU9b1swXS1hLGg9b1sxXS1zLGQ9MioobCpoLWMqdSk7aWYoIShkPj0tSWx0KSl7dmFyIHA9bCpsK2MqYyxmPXUqdStoKmgsbT0oaCpwLWMqZikvZCxnPShsKmYtdSpwKS9kLF89Z2x0LnBvcCgpfHxuZXcgX2x0O18uYXJjPXQsXy5zaXRlPXIsXy54PW0rYSxfLnk9KF8uY3k9ZytzKStNYXRoLnNxcnQobSptK2cqZyksdC5jaXJjbGU9Xztmb3IodmFyIHk9bnVsbCx2PUxsdC5fO3Y7KWlmKF8ueTx2Lnl8fF8ueT09PXYueSYmXy54PD12Lngpe2lmKCF2Lkwpe3k9di5QO2JyZWFrfXY9di5MfWVsc2V7aWYoIXYuUil7eT12O2JyZWFrfXY9di5SfUxsdC5pbnNlcnQoeSxfKSx5fHwobWx0PV8pfX19fWZ1bmN0aW9uIHZsdCh0KXt2YXIgZT10LmNpcmNsZTtlJiYoZS5QfHwobWx0PWUuTiksTGx0LnJlbW92ZShlKSxnbHQucHVzaChlKSxpbHQoZSksdC5jaXJjbGU9bnVsbCl9dmFyIGJsdD1bXTtmdW5jdGlvbiB4bHQoKXtpbHQodGhpcyksdGhpcy5lZGdlPXRoaXMuc2l0ZT10aGlzLmNpcmNsZT1udWxsfWZ1bmN0aW9uIHdsdCh0KXt2YXIgZT1ibHQucG9wKCl8fG5ldyB4bHQ7cmV0dXJuIGUuc2l0ZT10LGV9ZnVuY3Rpb24gU2x0KHQpe3ZsdCh0KSxBbHQucmVtb3ZlKHQpLGJsdC5wdXNoKHQpLGlsdCh0KX1mdW5jdGlvbiBNbHQodCl7dmFyIGU9dC5jaXJjbGUsbj1lLngsaT1lLmN5LHI9W24saV0sbz10LlAsYT10Lk4scz1bdF07U2x0KHQpO2Zvcih2YXIgbD1vO2wuY2lyY2xlJiZNYXRoLmFicyhuLWwuY2lyY2xlLngpPE5sdCYmTWF0aC5hYnMoaS1sLmNpcmNsZS5jeSk8Tmx0OylvPWwuUCxzLnVuc2hpZnQobCksU2x0KGwpLGw9bztzLnVuc2hpZnQobCksdmx0KGwpO2Zvcih2YXIgYz1hO2MuY2lyY2xlJiZNYXRoLmFicyhuLWMuY2lyY2xlLngpPE5sdCYmTWF0aC5hYnMoaS1jLmNpcmNsZS5jeSk8Tmx0OylhPWMuTixzLnB1c2goYyksU2x0KGMpLGM9YTtzLnB1c2goYyksdmx0KGMpO3ZhciB1LGg9cy5sZW5ndGg7Zm9yKHU9MTt1PGg7Kyt1KWNsdCgoYz1zW3VdKS5lZGdlLChsPXNbdS0xXSkuc2l0ZSxjLnNpdGUscik7KGM9c1toLTFdKS5lZGdlPXNsdCgobD1zWzBdKS5zaXRlLGMuc2l0ZSxudWxsLHIpLHlsdChsKSx5bHQoYyl9ZnVuY3Rpb24gRWx0KHQpe2Zvcih2YXIgZSxuLGkscixvPXRbMF0sYT10WzFdLHM9QWx0Ll87czspaWYoKGk9VGx0KHMsYSktbyk+Tmx0KXM9cy5MO2Vsc2V7aWYoISgocj1vLUNsdChzLGEpKT5ObHQpKXtpPi1ObHQ/KGU9cy5QLG49cyk6cj4tTmx0PyhlPXMsbj1zLk4pOmU9bj1zO2JyZWFrfWlmKCFzLlIpe2U9czticmVha31zPXMuUn0hKGZ1bmN0aW9uIGwodCl7cmV0dXJuIGtsdFt0LmluZGV4XT17c2l0ZTp0LGhhbGZlZGdlczpbXX19KSh0KTt2YXIgYz13bHQodCk7aWYoQWx0Lmluc2VydChlLGMpLGV8fG4pe2lmKGU9PT1uKXJldHVybiB2bHQoZSksbj13bHQoZS5zaXRlKSxBbHQuaW5zZXJ0KGMsbiksYy5lZGdlPW4uZWRnZT1zbHQoZS5zaXRlLGMuc2l0ZSkseWx0KGUpLHZvaWQgeWx0KG4pO2lmKG4pe3ZsdChlKSx2bHQobik7dmFyIHU9ZS5zaXRlLGg9dVswXSxkPXVbMV0scD10WzBdLWgsZj10WzFdLWQsbT1uLnNpdGUsZz1tWzBdLWgsXz1tWzFdLWQseT0yKihwKl8tZipnKSx2PXAqcCtmKmYsYj1nKmcrXypfLHg9WyhfKnYtZipiKS95K2gsKHAqYi1nKnYpL3krZF07Y2x0KG4uZWRnZSx1LG0seCksYy5lZGdlPXNsdCh1LHQsbnVsbCx4KSxuLmVkZ2U9c2x0KHQsbSxudWxsLHgpLHlsdChlKSx5bHQobil9ZWxzZSBjLmVkZ2U9c2x0KGUuc2l0ZSxjLnNpdGUpfX1mdW5jdGlvbiBUbHQodCxlKXt2YXIgbj10LnNpdGUsaT1uWzBdLHI9blsxXSxvPXItZTtpZighbylyZXR1cm4gaTt2YXIgYT10LlA7aWYoIWEpcmV0dXJuLTEvMDt2YXIgcz0obj1hLnNpdGUpWzBdLGw9blsxXSxjPWwtZTtpZighYylyZXR1cm4gczt2YXIgdT1zLWksaD0xL28tMS9jLGQ9dS9jO3JldHVybiBoPygtZCtNYXRoLnNxcnQoZCpkLTIqaCoodSp1LygtMipjKS1sK2MvMityLW8vMikpKS9oK2k6KGkrcykvMn1mdW5jdGlvbiBDbHQodCxlKXt2YXIgbj10Lk47aWYobilyZXR1cm4gVGx0KG4sZSk7dmFyIGk9dC5zaXRlO3JldHVybiBpWzFdPT09ZT9pWzBdOjEvMH12YXIgQWx0LGtsdCxMbHQsUGx0LE5sdD0xZS02LElsdD0xZS0xMjtmdW5jdGlvbiBSbHQodCxlLG4pe3JldHVybih0WzBdLW5bMF0pKihlWzFdLXRbMV0pLSh0WzBdLWVbMF0pKihuWzFdLXRbMV0pfWZ1bmN0aW9uIE9sdCh0LGUpe3JldHVybiBlWzFdLXRbMV18fGVbMF0tdFswXX1mdW5jdGlvbiB6bHQodCxlKXt2YXIgbixpLHIsbz10LnNvcnQoT2x0KS5wb3AoKTtmb3IoUGx0PVtdLGtsdD1uZXcgQXJyYXkodC5sZW5ndGgpLEFsdD1uZXcgbmx0LExsdD1uZXcgbmx0OzspaWYocj1tbHQsbyYmKCFyfHxvWzFdPHIueXx8b1sxXT09PXIueSYmb1swXTxyLngpKW9bMF09PT1uJiZvWzFdPT09aXx8KEVsdChvKSxuPW9bMF0saT1vWzFdKSxvPXQucG9wKCk7ZWxzZXtpZighcilicmVhaztNbHQoci5hcmMpfWlmKChmdW5jdGlvbiBhKCl7Zm9yKHZhciB0LGUsbixpLHI9MCxvPWtsdC5sZW5ndGg7cjxvOysrcilpZigodD1rbHRbcl0pJiYoaT0oZT10LmhhbGZlZGdlcykubGVuZ3RoKSl7dmFyIGE9bmV3IEFycmF5KGkpLHM9bmV3IEFycmF5KGkpO2ZvcihuPTA7bjxpOysrbilhW25dPW4sc1tuXT1kbHQodCxQbHRbZVtuXV0pO2ZvcihhLnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHNbZV0tc1t0XX0pKSxuPTA7bjxpOysrbilzW25dPWVbYVtuXV07Zm9yKG49MDtuPGk7KytuKWVbbl09c1tuXX19KSgpLGUpe3ZhciBzPStlWzBdWzBdLGw9K2VbMF1bMV0sYz0rZVsxXVswXSx1PStlWzFdWzFdOyEoZnVuY3Rpb24gaCh0LGUsbixpKXtmb3IodmFyIHIsbz1QbHQubGVuZ3RoO28tLTspaGx0KHI9UGx0W29dLHQsZSxuLGkpJiZ1bHQocix0LGUsbixpKSYmKE1hdGguYWJzKHJbMF1bMF0tclsxXVswXSk+Tmx0fHxNYXRoLmFicyhyWzBdWzFdLXJbMV1bMV0pPk5sdCl8fGRlbGV0ZSBQbHRbb119KShzLGwsYyx1KSwoZnVuY3Rpb24gZCh0LGUsbixpKXt2YXIgcixvLGEscyxsLGMsdSxoLGQscCxmLG0sZz1rbHQubGVuZ3RoLF89ITA7Zm9yKHI9MDtyPGc7KytyKWlmKG89a2x0W3JdKXtmb3IoYT1vLnNpdGUscz0obD1vLmhhbGZlZGdlcykubGVuZ3RoO3MtLTspUGx0W2xbc11dfHxsLnNwbGljZShzLDEpO2ZvcihzPTAsYz1sLmxlbmd0aDtzPGM7KWY9KHA9Zmx0KG8sUGx0W2xbc11dKSlbMF0sbT1wWzFdLGg9KHU9cGx0KG8sUGx0W2xbKytzJWNdXSkpWzBdLGQ9dVsxXSwoTWF0aC5hYnMoZi1oKT5ObHR8fE1hdGguYWJzKG0tZCk+Tmx0KSYmKGwuc3BsaWNlKHMsMCxQbHQucHVzaChsbHQoYSxwLE1hdGguYWJzKGYtdCk8Tmx0JiZpLW0+Tmx0P1t0LE1hdGguYWJzKGgtdCk8Tmx0P2Q6aV06TWF0aC5hYnMobS1pKTxObHQmJm4tZj5ObHQ/W01hdGguYWJzKGQtaSk8Tmx0P2g6bixpXTpNYXRoLmFicyhmLW4pPE5sdCYmbS1lPk5sdD9bbixNYXRoLmFicyhoLW4pPE5sdD9kOmVdOk1hdGguYWJzKG0tZSk8Tmx0JiZmLXQ+Tmx0P1tNYXRoLmFicyhkLWUpPE5sdD9oOnQsZV06bnVsbCkpLTEpLCsrYyk7YyYmKF89ITEpfWlmKF8pe3ZhciB5LHYsYix4PTEvMDtmb3Iocj0wLF89bnVsbDtyPGc7KytyKShvPWtsdFtyXSkmJihiPSh5PShhPW8uc2l0ZSlbMF0tdCkqeSsodj1hWzFdLWUpKnYpPHgmJih4PWIsXz1vKTtpZihfKXt2YXIgdz1bdCxlXSxTPVt0LGldLE09W24saV0sRT1bbixlXTtfLmhhbGZlZGdlcy5wdXNoKFBsdC5wdXNoKGxsdChhPV8uc2l0ZSx3LFMpKS0xLFBsdC5wdXNoKGxsdChhLFMsTSkpLTEsUGx0LnB1c2gobGx0KGEsTSxFKSktMSxQbHQucHVzaChsbHQoYSxFLHcpKS0xKX19Zm9yKHI9MDtyPGc7KytyKShvPWtsdFtyXSkmJihvLmhhbGZlZGdlcy5sZW5ndGh8fGRlbGV0ZSBrbHRbcl0pfSkocyxsLGMsdSl9dGhpcy5lZGdlcz1QbHQsdGhpcy5jZWxscz1rbHQsQWx0PUxsdD1QbHQ9a2x0PW51bGx9emx0LnByb3RvdHlwZT17Y29uc3RydWN0b3I6emx0LHBvbHlnb25zOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5lZGdlcztyZXR1cm4gdGhpcy5jZWxscy5tYXAoKGZ1bmN0aW9uKGUpe3ZhciBuPWUuaGFsZmVkZ2VzLm1hcCgoZnVuY3Rpb24obil7cmV0dXJuIHBsdChlLHRbbl0pfSkpO3JldHVybiBuLmRhdGE9ZS5zaXRlLmRhdGEsbn0pKX0sdHJpYW5nbGVzOmZ1bmN0aW9uKCl7dmFyIHQ9W10sZT10aGlzLmVkZ2VzO3JldHVybiB0aGlzLmNlbGxzLmZvckVhY2goKGZ1bmN0aW9uKG4saSl7aWYobz0ocj1uLmhhbGZlZGdlcykubGVuZ3RoKWZvcih2YXIgcixvLGEscz1uLnNpdGUsbD0tMSxjPWVbcltvLTFdXSx1PWMubGVmdD09PXM/Yy5yaWdodDpjLmxlZnQ7KytsPG87KWE9dSx1PShjPWVbcltsXV0pLmxlZnQ9PT1zP2MucmlnaHQ6Yy5sZWZ0LGEmJnUmJmk8YS5pbmRleCYmaTx1LmluZGV4JiZSbHQocyxhLHUpPDAmJnQucHVzaChbcy5kYXRhLGEuZGF0YSx1LmRhdGFdKX0pKSx0fSxsaW5rczpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVkZ2VzLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIHQucmlnaHR9KSkubWFwKChmdW5jdGlvbih0KXtyZXR1cm57c291cmNlOnQubGVmdC5kYXRhLHRhcmdldDp0LnJpZ2h0LmRhdGF9fSkpfSxmaW5kOmZ1bmN0aW9uKHQsZSxuKXtmb3IodmFyIGkscixvPXRoaXMsYT1vLl9mb3VuZHx8MCxzPW8uY2VsbHMubGVuZ3RoOyEocj1vLmNlbGxzW2FdKTspaWYoKythPj1zKXJldHVybiBudWxsO3ZhciBsPXQtci5zaXRlWzBdLGM9ZS1yLnNpdGVbMV0sdT1sKmwrYypjO2Rve3I9by5jZWxsc1tpPWFdLGE9bnVsbCxyLmhhbGZlZGdlcy5mb3JFYWNoKChmdW5jdGlvbihuKXt2YXIgaT1vLmVkZ2VzW25dLHM9aS5sZWZ0O2lmKHMhPT1yLnNpdGUmJnN8fChzPWkucmlnaHQpKXt2YXIgbD10LXNbMF0sYz1lLXNbMV0saD1sKmwrYypjO2g8dSYmKHU9aCxhPXMuaW5kZXgpfX0pKX13aGlsZShudWxsIT09YSk7cmV0dXJuIG8uX2ZvdW5kPWksbnVsbD09bnx8dTw9bipuP3Iuc2l0ZTpudWxsfX07dmFyIERsdD17dmFsdWU6ZnVuY3Rpb24oKXt9fTtmdW5jdGlvbiBCbHQoKXtmb3IodmFyIHQsZT0wLG49YXJndW1lbnRzLmxlbmd0aCxpPXt9O2U8bjsrK2Upe2lmKCEodD1hcmd1bWVudHNbZV0rIiIpfHx0IGluIGl8fC9bXHMuXS8udGVzdCh0KSl0aHJvdyBuZXcgRXJyb3IoImlsbGVnYWwgdHlwZTogIit0KTtpW3RdPVtdfXJldHVybiBuZXcgSGx0KGkpfWZ1bmN0aW9uIEhsdCh0KXt0aGlzLl89dH1mdW5jdGlvbiBGbHQodCxlKXtyZXR1cm4gdC50cmltKCkuc3BsaXQoL158XHMrLykubWFwKChmdW5jdGlvbih0KXt2YXIgbj0iIixpPXQuaW5kZXhPZigiLiIpO2lmKGk+PTAmJihuPXQuc2xpY2UoaSsxKSx0PXQuc2xpY2UoMCxpKSksdCYmIWUuaGFzT3duUHJvcGVydHkodCkpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHR5cGU6ICIrdCk7cmV0dXJue3R5cGU6dCxuYW1lOm59fSkpfWZ1bmN0aW9uIFZsdCh0LGUpe2Zvcih2YXIgbixpPTAscj10Lmxlbmd0aDtpPHI7KytpKWlmKChuPXRbaV0pLm5hbWU9PT1lKXJldHVybiBuLnZhbHVlfWZ1bmN0aW9uIFVsdCh0LGUsbil7Zm9yKHZhciBpPTAscj10Lmxlbmd0aDtpPHI7KytpKWlmKHRbaV0ubmFtZT09PWUpe3RbaV09RGx0LHQ9dC5zbGljZSgwLGkpLmNvbmNhdCh0LnNsaWNlKGkrMSkpO2JyZWFrfXJldHVybiBudWxsIT1uJiZ0LnB1c2goe25hbWU6ZSx2YWx1ZTpufSksdH1IbHQucHJvdG90eXBlPUJsdC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOkhsdCxvbjpmdW5jdGlvbih0LGUpe3ZhciBuLGk9dGhpcy5fLHI9Rmx0KHQrIiIsaSksbz0tMSxhPXIubGVuZ3RoO2lmKCEoYXJndW1lbnRzLmxlbmd0aDwyKSl7aWYobnVsbCE9ZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGNhbGxiYWNrOiAiK2UpO2Zvcig7KytvPGE7KWlmKG49KHQ9cltvXSkudHlwZSlpW25dPVVsdChpW25dLHQubmFtZSxlKTtlbHNlIGlmKG51bGw9PWUpZm9yKG4gaW4gaSlpW25dPVVsdChpW25dLHQubmFtZSxudWxsKTtyZXR1cm4gdGhpc31mb3IoOysrbzxhOylpZigobj0odD1yW29dKS50eXBlKSYmKG49Vmx0KGlbbl0sdC5uYW1lKSkpcmV0dXJuIG59LGNvcHk6ZnVuY3Rpb24oKXt2YXIgdD17fSxlPXRoaXMuXztmb3IodmFyIG4gaW4gZSl0W25dPWVbbl0uc2xpY2UoKTtyZXR1cm4gbmV3IEhsdCh0KX0sY2FsbDpmdW5jdGlvbih0LGUpe2lmKChuPWFyZ3VtZW50cy5sZW5ndGgtMik+MClmb3IodmFyIG4saSxyPW5ldyBBcnJheShuKSxvPTA7bzxuOysrbylyW29dPWFyZ3VtZW50c1tvKzJdO2lmKCF0aGlzLl8uaGFzT3duUHJvcGVydHkodCkpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHR5cGU6ICIrdCk7Zm9yKG89MCxuPShpPXRoaXMuX1t0XSkubGVuZ3RoO288bjsrK28paVtvXS52YWx1ZS5hcHBseShlLHIpfSxhcHBseTpmdW5jdGlvbih0LGUsbil7aWYoIXRoaXMuXy5oYXNPd25Qcm9wZXJ0eSh0KSl0aHJvdyBuZXcgRXJyb3IoInVua25vd24gdHlwZTogIit0KTtmb3IodmFyIGk9dGhpcy5fW3RdLHI9MCxvPWkubGVuZ3RoO3I8bzsrK3IpaVtyXS52YWx1ZS5hcHBseShlLG4pfX07dmFyIGpsdD0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIsR2x0PXtzdmc6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix4aHRtbDpqbHQseGxpbms6Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLHhtbDoiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8ifTtmdW5jdGlvbiBXbHQodCl7dmFyIGU9dCs9IiIsbj1lLmluZGV4T2YoIjoiKTtyZXR1cm4gbj49MCYmInhtbG5zIiE9PShlPXQuc2xpY2UoMCxuKSkmJih0PXQuc2xpY2UobisxKSksR2x0Lmhhc093blByb3BlcnR5KGUpP3tzcGFjZTpHbHRbZV0sbG9jYWw6dH06dH1mdW5jdGlvbiBxbHQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vd25lckRvY3VtZW50LG49dGhpcy5uYW1lc3BhY2VVUkk7cmV0dXJuIG49PT1qbHQmJmUuZG9jdW1lbnRFbGVtZW50Lm5hbWVzcGFjZVVSST09PWpsdD9lLmNyZWF0ZUVsZW1lbnQodCk6ZS5jcmVhdGVFbGVtZW50TlMobix0KX19ZnVuY3Rpb24gWWx0KHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0aGlzLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHQuc3BhY2UsdC5sb2NhbCl9fWZ1bmN0aW9uIFhsdCh0KXt2YXIgZT1XbHQodCk7cmV0dXJuKGUubG9jYWw/WWx0OnFsdCkoZSl9ZnVuY3Rpb24gJGx0KCl7fWZ1bmN0aW9uIEtsdCh0KXtyZXR1cm4gbnVsbD09dD8kbHQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5xdWVyeVNlbGVjdG9yKHQpfX1mdW5jdGlvbiBabHQoKXtyZXR1cm5bXX1mdW5jdGlvbiBKbHQodCl7cmV0dXJuIG51bGw9PXQ/Wmx0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucXVlcnlTZWxlY3RvckFsbCh0KX19ZnVuY3Rpb24gUWx0KHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hdGNoZXModCl9fWZ1bmN0aW9uIHRjdCh0KXtyZXR1cm4gbmV3IEFycmF5KHQubGVuZ3RoKX1mdW5jdGlvbiBlY3QodCxlKXt0aGlzLm93bmVyRG9jdW1lbnQ9dC5vd25lckRvY3VtZW50LHRoaXMubmFtZXNwYWNlVVJJPXQubmFtZXNwYWNlVVJJLHRoaXMuX25leHQ9bnVsbCx0aGlzLl9wYXJlbnQ9dCx0aGlzLl9fZGF0YV9fPWV9ZWN0LnByb3RvdHlwZT17Y29uc3RydWN0b3I6ZWN0LGFwcGVuZENoaWxkOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYXJlbnQuaW5zZXJ0QmVmb3JlKHQsdGhpcy5fbmV4dCl9LGluc2VydEJlZm9yZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9wYXJlbnQuaW5zZXJ0QmVmb3JlKHQsZSl9LHF1ZXJ5U2VsZWN0b3I6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3BhcmVudC5xdWVyeVNlbGVjdG9yKHQpfSxxdWVyeVNlbGVjdG9yQWxsOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYXJlbnQucXVlcnlTZWxlY3RvckFsbCh0KX19O2Z1bmN0aW9uIG5jdCh0LGUsbixpLHIsbyl7Zm9yKHZhciBhLHM9MCxsPWUubGVuZ3RoLGM9by5sZW5ndGg7czxjOysrcykoYT1lW3NdKT8oYS5fX2RhdGFfXz1vW3NdLGlbc109YSk6bltzXT1uZXcgZWN0KHQsb1tzXSk7Zm9yKDtzPGw7KytzKShhPWVbc10pJiYocltzXT1hKX1mdW5jdGlvbiBpY3QodCxlLG4saSxyLG8sYSl7dmFyIHMsbCxjLHU9e30saD1lLmxlbmd0aCxkPW8ubGVuZ3RoLHA9bmV3IEFycmF5KGgpO2ZvcihzPTA7czxoOysrcykobD1lW3NdKSYmKHBbc109Yz0iJCIrYS5jYWxsKGwsbC5fX2RhdGFfXyxzLGUpLGMgaW4gdT9yW3NdPWw6dVtjXT1sKTtmb3Iocz0wO3M8ZDsrK3MpKGw9dVtjPSIkIithLmNhbGwodCxvW3NdLHMsbyldKT8oaVtzXT1sLGwuX19kYXRhX189b1tzXSx1W2NdPW51bGwpOm5bc109bmV3IGVjdCh0LG9bc10pO2ZvcihzPTA7czxoOysrcykobD1lW3NdKSYmdVtwW3NdXT09PWwmJihyW3NdPWwpfWZ1bmN0aW9uIHJjdCh0LGUpe3JldHVybiB0PGU/LTE6dD5lPzE6dD49ZT8wOk5hTn1mdW5jdGlvbiBvY3QodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGUodCl9fWZ1bmN0aW9uIGFjdCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCl9fWZ1bmN0aW9uIHNjdCh0LGUpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc2V0QXR0cmlidXRlKHQsZSl9fWZ1bmN0aW9uIGxjdCh0LGUpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsLGUpfX1mdW5jdGlvbiBjY3QodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1uP3RoaXMucmVtb3ZlQXR0cmlidXRlKHQpOnRoaXMuc2V0QXR0cmlidXRlKHQsbil9fWZ1bmN0aW9uIHVjdCh0LGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciBuPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PW4/dGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwpOnRoaXMuc2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsLG4pfX1mdW5jdGlvbiBoY3QodCl7cmV0dXJuIHQub3duZXJEb2N1bWVudCYmdC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3fHx0LmRvY3VtZW50JiZ0fHx0LmRlZmF1bHRWaWV3fWZ1bmN0aW9uIGRjdCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpfX1mdW5jdGlvbiBwY3QodCxlLG4pe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc3R5bGUuc2V0UHJvcGVydHkodCxlLG4pfX1mdW5jdGlvbiBmY3QodCxlLG4pe3JldHVybiBmdW5jdGlvbigpe3ZhciBpPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PWk/dGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0KTp0aGlzLnN0eWxlLnNldFByb3BlcnR5KHQsaSxuKX19ZnVuY3Rpb24gbWN0KHQsZSl7cmV0dXJuIHQuc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShlKXx8aGN0KHQpLmdldENvbXB1dGVkU3R5bGUodCxudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKGUpfWZ1bmN0aW9uIGdjdCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtkZWxldGUgdGhpc1t0XX19ZnVuY3Rpb24gX2N0KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpc1t0XT1lfX1mdW5jdGlvbiB5Y3QodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1uP2RlbGV0ZSB0aGlzW3RdOnRoaXNbdF09bn19ZnVuY3Rpb24gdmN0KHQpe3JldHVybiB0LnRyaW0oKS5zcGxpdCgvXnxccysvKX1mdW5jdGlvbiBiY3QodCl7cmV0dXJuIHQuY2xhc3NMaXN0fHxuZXcgeGN0KHQpfWZ1bmN0aW9uIHhjdCh0KXt0aGlzLl9ub2RlPXQsdGhpcy5fbmFtZXM9dmN0KHQuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIil9ZnVuY3Rpb24gd2N0KHQsZSl7Zm9yKHZhciBuPWJjdCh0KSxpPS0xLHI9ZS5sZW5ndGg7KytpPHI7KW4uYWRkKGVbaV0pfWZ1bmN0aW9uIFNjdCh0LGUpe2Zvcih2YXIgbj1iY3QodCksaT0tMSxyPWUubGVuZ3RoOysraTxyOyluLnJlbW92ZShlW2ldKX1mdW5jdGlvbiBNY3QodCl7cmV0dXJuIGZ1bmN0aW9uKCl7d2N0KHRoaXMsdCl9fWZ1bmN0aW9uIEVjdCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtTY3QodGhpcyx0KX19ZnVuY3Rpb24gVGN0KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7KGUuYXBwbHkodGhpcyxhcmd1bWVudHMpP3djdDpTY3QpKHRoaXMsdCl9fWZ1bmN0aW9uIENjdCgpe3RoaXMudGV4dENvbnRlbnQ9IiJ9ZnVuY3Rpb24gQWN0KHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMudGV4dENvbnRlbnQ9dH19ZnVuY3Rpb24ga2N0KHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMudGV4dENvbnRlbnQ9bnVsbD09ZT8iIjplfX1mdW5jdGlvbiBMY3QoKXt0aGlzLmlubmVySFRNTD0iIn1mdW5jdGlvbiBQY3QodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5pbm5lckhUTUw9dH19ZnVuY3Rpb24gTmN0KHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMuaW5uZXJIVE1MPW51bGw9PWU/IiI6ZX19ZnVuY3Rpb24gSWN0KCl7dGhpcy5uZXh0U2libGluZyYmdGhpcy5wYXJlbnROb2RlLmFwcGVuZENoaWxkKHRoaXMpfWZ1bmN0aW9uIFJjdCgpe3RoaXMucHJldmlvdXNTaWJsaW5nJiZ0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRoaXMsdGhpcy5wYXJlbnROb2RlLmZpcnN0Q2hpbGQpfWZ1bmN0aW9uIE9jdCgpe3JldHVybiBudWxsfWZ1bmN0aW9uIHpjdCgpe3ZhciB0PXRoaXMucGFyZW50Tm9kZTt0JiZ0LnJlbW92ZUNoaWxkKHRoaXMpfWZ1bmN0aW9uIERjdCgpe3ZhciB0PXRoaXMuY2xvbmVOb2RlKCExKSxlPXRoaXMucGFyZW50Tm9kZTtyZXR1cm4gZT9lLmluc2VydEJlZm9yZSh0LHRoaXMubmV4dFNpYmxpbmcpOnR9ZnVuY3Rpb24gQmN0KCl7dmFyIHQ9dGhpcy5jbG9uZU5vZGUoITApLGU9dGhpcy5wYXJlbnROb2RlO3JldHVybiBlP2UuaW5zZXJ0QmVmb3JlKHQsdGhpcy5uZXh0U2libGluZyk6dH14Y3QucHJvdG90eXBlPXthZGQ6ZnVuY3Rpb24odCl7dGhpcy5fbmFtZXMuaW5kZXhPZih0KTwwJiYodGhpcy5fbmFtZXMucHVzaCh0KSx0aGlzLl9ub2RlLnNldEF0dHJpYnV0ZSgiY2xhc3MiLHRoaXMuX25hbWVzLmpvaW4oIiAiKSkpfSxyZW1vdmU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fbmFtZXMuaW5kZXhPZih0KTtlPj0wJiYodGhpcy5fbmFtZXMuc3BsaWNlKGUsMSksdGhpcy5fbm9kZS5zZXRBdHRyaWJ1dGUoImNsYXNzIix0aGlzLl9uYW1lcy5qb2luKCIgIikpKX0sY29udGFpbnM6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX25hbWVzLmluZGV4T2YodCk+PTB9fTt2YXIgSGN0PXt9LEZjdD1udWxsOyJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQmJigib25tb3VzZWVudGVyImluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudHx8KEhjdD17bW91c2VlbnRlcjoibW91c2VvdmVyIixtb3VzZWxlYXZlOiJtb3VzZW91dCJ9KSk7ZnVuY3Rpb24gVmN0KHQsZSxuKXtyZXR1cm4gdD1VY3QodCxlLG4pLGZ1bmN0aW9uKGUpe3ZhciBuPWUucmVsYXRlZFRhcmdldDtuJiYobj09PXRoaXN8fDgmbi5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbih0aGlzKSl8fHQuY2FsbCh0aGlzLGUpfX1mdW5jdGlvbiBVY3QodCxlLG4pe3JldHVybiBmdW5jdGlvbihpKXt2YXIgcj1GY3Q7RmN0PWk7dHJ5e3QuY2FsbCh0aGlzLHRoaXMuX19kYXRhX18sZSxuKX1maW5hbGx5e0ZjdD1yfX19ZnVuY3Rpb24gamN0KHQpe3JldHVybiB0LnRyaW0oKS5zcGxpdCgvXnxccysvKS5tYXAoKGZ1bmN0aW9uKHQpe3ZhciBlPSIiLG49dC5pbmRleE9mKCIuIik7cmV0dXJuIG4+PTAmJihlPXQuc2xpY2UobisxKSx0PXQuc2xpY2UoMCxuKSkse3R5cGU6dCxuYW1lOmV9fSkpfWZ1bmN0aW9uIEdjdCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9fb247aWYoZSl7Zm9yKHZhciBuLGk9MCxyPS0xLG89ZS5sZW5ndGg7aTxvOysraSluPWVbaV0sdC50eXBlJiZuLnR5cGUhPT10LnR5cGV8fG4ubmFtZSE9PXQubmFtZT9lWysrcl09bjp0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIobi50eXBlLG4ubGlzdGVuZXIsbi5jYXB0dXJlKTsrK3I/ZS5sZW5ndGg9cjpkZWxldGUgdGhpcy5fX29ufX19ZnVuY3Rpb24gV2N0KHQsZSxuKXt2YXIgaT1IY3QuaGFzT3duUHJvcGVydHkodC50eXBlKT9WY3Q6VWN0O3JldHVybiBmdW5jdGlvbihyLG8sYSl7dmFyIHMsbD10aGlzLl9fb24sYz1pKGUsbyxhKTtpZihsKWZvcih2YXIgdT0wLGg9bC5sZW5ndGg7dTxoOysrdSlpZigocz1sW3VdKS50eXBlPT09dC50eXBlJiZzLm5hbWU9PT10Lm5hbWUpcmV0dXJuIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihzLnR5cGUscy5saXN0ZW5lcixzLmNhcHR1cmUpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihzLnR5cGUscy5saXN0ZW5lcj1jLHMuY2FwdHVyZT1uKSx2b2lkKHMudmFsdWU9ZSk7dGhpcy5hZGRFdmVudExpc3RlbmVyKHQudHlwZSxjLG4pLHM9e3R5cGU6dC50eXBlLG5hbWU6dC5uYW1lLHZhbHVlOmUsbGlzdGVuZXI6YyxjYXB0dXJlOm59LGw/bC5wdXNoKHMpOnRoaXMuX19vbj1bc119fWZ1bmN0aW9uIHFjdCh0LGUsbil7dmFyIGk9aGN0KHQpLHI9aS5DdXN0b21FdmVudDsiZnVuY3Rpb24iPT10eXBlb2Ygcj9yPW5ldyByKGUsbik6KHI9aS5kb2N1bWVudC5jcmVhdGVFdmVudCgiRXZlbnQiKSxuPyhyLmluaXRFdmVudChlLG4uYnViYmxlcyxuLmNhbmNlbGFibGUpLHIuZGV0YWlsPW4uZGV0YWlsKTpyLmluaXRFdmVudChlLCExLCExKSksdC5kaXNwYXRjaEV2ZW50KHIpfWZ1bmN0aW9uIFljdCh0LGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBxY3QodGhpcyx0LGUpfX1mdW5jdGlvbiBYY3QodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gcWN0KHRoaXMsdCxlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9fXZhciAkY3Q9W251bGxdO2Z1bmN0aW9uIEtjdCh0LGUpe3RoaXMuX2dyb3Vwcz10LHRoaXMuX3BhcmVudHM9ZX1mdW5jdGlvbiBaY3QoKXtyZXR1cm4gbmV3IEtjdChbW2RvY3VtZW50LmRvY3VtZW50RWxlbWVudF1dLCRjdCl9ZnVuY3Rpb24gSmN0KHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdD9uZXcgS2N0KFtbZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0KV1dLFtkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRdKTpuZXcgS2N0KFtbdF1dLCRjdCl9ZnVuY3Rpb24gUWN0KCl7Zm9yKHZhciB0LGU9RmN0O3Q9ZS5zb3VyY2VFdmVudDspZT10O3JldHVybiBlfWZ1bmN0aW9uIHR1dCh0LGUpe3ZhciBuPXQub3duZXJTVkdFbGVtZW50fHx0O2lmKG4uY3JlYXRlU1ZHUG9pbnQpe3ZhciBpPW4uY3JlYXRlU1ZHUG9pbnQoKTtyZXR1cm4gaS54PWUuY2xpZW50WCxpLnk9ZS5jbGllbnRZLFsoaT1pLm1hdHJpeFRyYW5zZm9ybSh0LmdldFNjcmVlbkNUTSgpLmludmVyc2UoKSkpLngsaS55XX12YXIgcj10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3JldHVybltlLmNsaWVudFgtci5sZWZ0LXQuY2xpZW50TGVmdCxlLmNsaWVudFktci50b3AtdC5jbGllbnRUb3BdfWZ1bmN0aW9uIGV1dCh0KXt2YXIgZT1RY3QoKTtyZXR1cm4gZS5jaGFuZ2VkVG91Y2hlcyYmKGU9ZS5jaGFuZ2VkVG91Y2hlc1swXSksdHV0KHQsZSl9ZnVuY3Rpb24gbnV0KHQsZSxuKXthcmd1bWVudHMubGVuZ3RoPDMmJihuPWUsZT1RY3QoKS5jaGFuZ2VkVG91Y2hlcyk7Zm9yKHZhciBpLHI9MCxvPWU/ZS5sZW5ndGg6MDtyPG87KytyKWlmKChpPWVbcl0pLmlkZW50aWZpZXI9PT1uKXJldHVybiB0dXQodCxpKTtyZXR1cm4gbnVsbH1mdW5jdGlvbiBpdXQoKXtGY3QucHJldmVudERlZmF1bHQoKSxGY3Quc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCl9ZnVuY3Rpb24gcnV0KHQpe3ZhciBlPXQuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LG49SmN0KHQpLm9uKCJkcmFnc3RhcnQuZHJhZyIsaXV0LCEwKTsib25zZWxlY3RzdGFydCJpbiBlP24ub24oInNlbGVjdHN0YXJ0LmRyYWciLGl1dCwhMCk6KGUuX19ub3NlbGVjdD1lLnN0eWxlLk1velVzZXJTZWxlY3QsZS5zdHlsZS5Nb3pVc2VyU2VsZWN0PSJub25lIil9ZnVuY3Rpb24gb3V0KHQsZSl7dmFyIG49dC5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsaT1KY3QodCkub24oImRyYWdzdGFydC5kcmFnIixudWxsKTtlJiYoaS5vbigiY2xpY2suZHJhZyIsaXV0LCEwKSxzZXRUaW1lb3V0KChmdW5jdGlvbigpe2kub24oImNsaWNrLmRyYWciLG51bGwpfSksMCkpLCJvbnNlbGVjdHN0YXJ0ImluIG4/aS5vbigic2VsZWN0c3RhcnQuZHJhZyIsbnVsbCk6KG4uc3R5bGUuTW96VXNlclNlbGVjdD1uLl9fbm9zZWxlY3QsZGVsZXRlIG4uX19ub3NlbGVjdCl9ZnVuY3Rpb24gYXV0KHQsZSxuKXt0LnByb3RvdHlwZT1lLnByb3RvdHlwZT1uLG4uY29uc3RydWN0b3I9dH1mdW5jdGlvbiBzdXQodCxlKXt2YXIgbj1PYmplY3QuY3JlYXRlKHQucHJvdG90eXBlKTtmb3IodmFyIGkgaW4gZSluW2ldPWVbaV07cmV0dXJuIG59ZnVuY3Rpb24gbHV0KCl7fUtjdC5wcm90b3R5cGU9WmN0LnByb3RvdHlwZT17Y29uc3RydWN0b3I6S2N0LHNlbGVjdDpmdW5jdGlvbiBjdXQodCl7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PUtsdCh0KSk7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPWUubGVuZ3RoLGk9bmV3IEFycmF5KG4pLHI9MDtyPG47KytyKWZvcih2YXIgbyxhLHM9ZVtyXSxsPXMubGVuZ3RoLGM9aVtyXT1uZXcgQXJyYXkobCksdT0wO3U8bDsrK3UpKG89c1t1XSkmJihhPXQuY2FsbChvLG8uX19kYXRhX18sdSxzKSkmJigiX19kYXRhX18iaW4gbyYmKGEuX19kYXRhX189by5fX2RhdGFfXyksY1t1XT1hKTtyZXR1cm4gbmV3IEtjdChpLHRoaXMuX3BhcmVudHMpfSxzZWxlY3RBbGw6ZnVuY3Rpb24gdXV0KHQpeyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD1KbHQodCkpO2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj1lLmxlbmd0aCxpPVtdLHI9W10sbz0wO288bjsrK28pZm9yKHZhciBhLHM9ZVtvXSxsPXMubGVuZ3RoLGM9MDtjPGw7KytjKShhPXNbY10pJiYoaS5wdXNoKHQuY2FsbChhLGEuX19kYXRhX18sYyxzKSksci5wdXNoKGEpKTtyZXR1cm4gbmV3IEtjdChpLHIpfSxmaWx0ZXI6ZnVuY3Rpb24gaHV0KHQpeyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD1RbHQodCkpO2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj1lLmxlbmd0aCxpPW5ldyBBcnJheShuKSxyPTA7cjxuOysrcilmb3IodmFyIG8sYT1lW3JdLHM9YS5sZW5ndGgsbD1pW3JdPVtdLGM9MDtjPHM7KytjKShvPWFbY10pJiZ0LmNhbGwobyxvLl9fZGF0YV9fLGMsYSkmJmwucHVzaChvKTtyZXR1cm4gbmV3IEtjdChpLHRoaXMuX3BhcmVudHMpfSxkYXRhOmZ1bmN0aW9uIGR1dCh0LGUpe2lmKCF0KXJldHVybiBmPW5ldyBBcnJheSh0aGlzLnNpemUoKSksdT0tMSx0aGlzLmVhY2goKGZ1bmN0aW9uKHQpe2ZbKyt1XT10fSkpLGY7dmFyIG49ZT9pY3Q6bmN0LGk9dGhpcy5fcGFyZW50cyxyPXRoaXMuX2dyb3VwczsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9KGZ1bmN0aW9uIG8odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fSkodCkpO2Zvcih2YXIgYT1yLmxlbmd0aCxzPW5ldyBBcnJheShhKSxsPW5ldyBBcnJheShhKSxjPW5ldyBBcnJheShhKSx1PTA7dTxhOysrdSl7dmFyIGg9aVt1XSxkPXJbdV0scD1kLmxlbmd0aCxmPXQuY2FsbChoLGgmJmguX19kYXRhX18sdSxpKSxtPWYubGVuZ3RoLGc9bFt1XT1uZXcgQXJyYXkobSksXz1zW3VdPW5ldyBBcnJheShtKTtuKGgsZCxnLF8sY1t1XT1uZXcgQXJyYXkocCksZixlKTtmb3IodmFyIHksdixiPTAseD0wO2I8bTsrK2IpaWYoeT1nW2JdKXtmb3IoYj49eCYmKHg9YisxKTshKHY9X1t4XSkmJisreDxtOyk7eS5fbmV4dD12fHxudWxsfX1yZXR1cm4ocz1uZXcgS2N0KHMsaSkpLl9lbnRlcj1sLHMuX2V4aXQ9YyxzfSxlbnRlcjpmdW5jdGlvbiBwdXQoKXtyZXR1cm4gbmV3IEtjdCh0aGlzLl9lbnRlcnx8dGhpcy5fZ3JvdXBzLm1hcCh0Y3QpLHRoaXMuX3BhcmVudHMpfSxleGl0OmZ1bmN0aW9uIGZ1dCgpe3JldHVybiBuZXcgS2N0KHRoaXMuX2V4aXR8fHRoaXMuX2dyb3Vwcy5tYXAodGN0KSx0aGlzLl9wYXJlbnRzKX0sam9pbjpmdW5jdGlvbiBtdXQodCxlLG4pe3ZhciBpPXRoaXMuZW50ZXIoKSxyPXRoaXMsbz10aGlzLmV4aXQoKTtyZXR1cm4gaT0iZnVuY3Rpb24iPT10eXBlb2YgdD90KGkpOmkuYXBwZW5kKHQrIiIpLG51bGwhPWUmJihyPWUocikpLG51bGw9PW4/by5yZW1vdmUoKTpuKG8pLGkmJnI/aS5tZXJnZShyKS5vcmRlcigpOnJ9LG1lcmdlOmZ1bmN0aW9uIGd1dCh0KXtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLG49dC5fZ3JvdXBzLGk9ZS5sZW5ndGgscj1NYXRoLm1pbihpLG4ubGVuZ3RoKSxvPW5ldyBBcnJheShpKSxhPTA7YTxyOysrYSlmb3IodmFyIHMsbD1lW2FdLGM9blthXSx1PWwubGVuZ3RoLGg9b1thXT1uZXcgQXJyYXkodSksZD0wO2Q8dTsrK2QpKHM9bFtkXXx8Y1tkXSkmJihoW2RdPXMpO2Zvcig7YTxpOysrYSlvW2FdPWVbYV07cmV0dXJuIG5ldyBLY3Qobyx0aGlzLl9wYXJlbnRzKX0sb3JkZXI6ZnVuY3Rpb24gX3V0KCl7Zm9yKHZhciB0PXRoaXMuX2dyb3VwcyxlPS0xLG49dC5sZW5ndGg7KytlPG47KWZvcih2YXIgaSxyPXRbZV0sbz1yLmxlbmd0aC0xLGE9cltvXTstLW8+PTA7KShpPXJbb10pJiYoYSYmNF5pLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGEpJiZhLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGksYSksYT1pKTtyZXR1cm4gdGhpc30sc29ydDpmdW5jdGlvbiB5dXQodCl7ZnVuY3Rpb24gZShlLG4pe3JldHVybiBlJiZuP3QoZS5fX2RhdGFfXyxuLl9fZGF0YV9fKTohZS0hbn10fHwodD1yY3QpO2Zvcih2YXIgbj10aGlzLl9ncm91cHMsaT1uLmxlbmd0aCxyPW5ldyBBcnJheShpKSxvPTA7bzxpOysrbyl7Zm9yKHZhciBhLHM9bltvXSxsPXMubGVuZ3RoLGM9cltvXT1uZXcgQXJyYXkobCksdT0wO3U8bDsrK3UpKGE9c1t1XSkmJihjW3VdPWEpO2Muc29ydChlKX1yZXR1cm4gbmV3IEtjdChyLHRoaXMuX3BhcmVudHMpLm9yZGVyKCl9LGNhbGw6ZnVuY3Rpb24gdnV0KCl7dmFyIHQ9YXJndW1lbnRzWzBdO3JldHVybiBhcmd1bWVudHNbMF09dGhpcyx0LmFwcGx5KG51bGwsYXJndW1lbnRzKSx0aGlzfSxub2RlczpmdW5jdGlvbiBidXQoKXt2YXIgdD1uZXcgQXJyYXkodGhpcy5zaXplKCkpLGU9LTE7cmV0dXJuIHRoaXMuZWFjaCgoZnVuY3Rpb24oKXt0WysrZV09dGhpc30pKSx0fSxub2RlOmZ1bmN0aW9uIHh1dCgpe2Zvcih2YXIgdD10aGlzLl9ncm91cHMsZT0wLG49dC5sZW5ndGg7ZTxuOysrZSlmb3IodmFyIGk9dFtlXSxyPTAsbz1pLmxlbmd0aDtyPG87KytyKXt2YXIgYT1pW3JdO2lmKGEpcmV0dXJuIGF9cmV0dXJuIG51bGx9LHNpemU6ZnVuY3Rpb24gd3V0KCl7dmFyIHQ9MDtyZXR1cm4gdGhpcy5lYWNoKChmdW5jdGlvbigpeysrdH0pKSx0fSxlbXB0eTpmdW5jdGlvbiBTdXQoKXtyZXR1cm4hdGhpcy5ub2RlKCl9LGVhY2g6ZnVuY3Rpb24gTXV0KHQpe2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj0wLGk9ZS5sZW5ndGg7bjxpOysrbilmb3IodmFyIHIsbz1lW25dLGE9MCxzPW8ubGVuZ3RoO2E8czsrK2EpKHI9b1thXSkmJnQuY2FsbChyLHIuX19kYXRhX18sYSxvKTtyZXR1cm4gdGhpc30sYXR0cjpmdW5jdGlvbiBFdXQodCxlKXt2YXIgbj1XbHQodCk7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXt2YXIgaT10aGlzLm5vZGUoKTtyZXR1cm4gbi5sb2NhbD9pLmdldEF0dHJpYnV0ZU5TKG4uc3BhY2Usbi5sb2NhbCk6aS5nZXRBdHRyaWJ1dGUobil9cmV0dXJuIHRoaXMuZWFjaCgobnVsbD09ZT9uLmxvY2FsP2FjdDpvY3Q6ImZ1bmN0aW9uIj09dHlwZW9mIGU/bi5sb2NhbD91Y3Q6Y2N0Om4ubG9jYWw/bGN0OnNjdCkobixlKSl9LHN0eWxlOmZ1bmN0aW9uIFR1dCh0LGUsbil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MT90aGlzLmVhY2goKG51bGw9PWU/ZGN0OiJmdW5jdGlvbiI9PXR5cGVvZiBlP2ZjdDpwY3QpKHQsZSxudWxsPT1uPyIiOm4pKTptY3QodGhpcy5ub2RlKCksdCl9LHByb3BlcnR5OmZ1bmN0aW9uIEN1dCh0LGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPjE/dGhpcy5lYWNoKChudWxsPT1lP2djdDoiZnVuY3Rpb24iPT10eXBlb2YgZT95Y3Q6X2N0KSh0LGUpKTp0aGlzLm5vZGUoKVt0XX0sY2xhc3NlZDpmdW5jdGlvbiBBdXQodCxlKXt2YXIgbj12Y3QodCsiIik7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXtmb3IodmFyIGk9YmN0KHRoaXMubm9kZSgpKSxyPS0xLG89bi5sZW5ndGg7KytyPG87KWlmKCFpLmNvbnRhaW5zKG5bcl0pKXJldHVybiExO3JldHVybiEwfXJldHVybiB0aGlzLmVhY2goKCJmdW5jdGlvbiI9PXR5cGVvZiBlP1RjdDplP01jdDpFY3QpKG4sZSkpfSx0ZXh0OmZ1bmN0aW9uIGt1dCh0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2gobnVsbD09dD9DY3Q6KCJmdW5jdGlvbiI9PXR5cGVvZiB0P2tjdDpBY3QpKHQpKTp0aGlzLm5vZGUoKS50ZXh0Q29udGVudH0saHRtbDpmdW5jdGlvbiBMdXQodCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKG51bGw9PXQ/TGN0OigiZnVuY3Rpb24iPT10eXBlb2YgdD9OY3Q6UGN0KSh0KSk6dGhpcy5ub2RlKCkuaW5uZXJIVE1MfSxyYWlzZTpmdW5jdGlvbiBQdXQoKXtyZXR1cm4gdGhpcy5lYWNoKEljdCl9LGxvd2VyOmZ1bmN0aW9uIE51dCgpe3JldHVybiB0aGlzLmVhY2goUmN0KX0sYXBwZW5kOmZ1bmN0aW9uIEl1dCh0KXt2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OlhsdCh0KTtyZXR1cm4gdGhpcy5zZWxlY3QoKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXBwZW5kQ2hpbGQoZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfSkpfSxpbnNlcnQ6ZnVuY3Rpb24gUnV0KHQsZSl7dmFyIG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpYbHQodCksaT1udWxsPT1lP09jdDoiZnVuY3Rpb24iPT10eXBlb2YgZT9lOktsdChlKTtyZXR1cm4gdGhpcy5zZWxlY3QoKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5zZXJ0QmVmb3JlKG4uYXBwbHkodGhpcyxhcmd1bWVudHMpLGkuYXBwbHkodGhpcyxhcmd1bWVudHMpfHxudWxsKX0pKX0scmVtb3ZlOmZ1bmN0aW9uIE91dCgpe3JldHVybiB0aGlzLmVhY2goemN0KX0sY2xvbmU6ZnVuY3Rpb24genV0KHQpe3JldHVybiB0aGlzLnNlbGVjdCh0P0JjdDpEY3QpfSxkYXR1bTpmdW5jdGlvbiBEdXQodCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5wcm9wZXJ0eSgiX19kYXRhX18iLHQpOnRoaXMubm9kZSgpLl9fZGF0YV9ffSxvbjpmdW5jdGlvbiBCdXQodCxlLG4pe3ZhciBpLHIsbz1qY3QodCsiIiksYT1vLmxlbmd0aDtpZighKGFyZ3VtZW50cy5sZW5ndGg8Mikpe2ZvcihzPWU/V2N0OkdjdCxudWxsPT1uJiYobj0hMSksaT0wO2k8YTsrK2kpdGhpcy5lYWNoKHMob1tpXSxlLG4pKTtyZXR1cm4gdGhpc312YXIgcz10aGlzLm5vZGUoKS5fX29uO2lmKHMpZm9yKHZhciBsLGM9MCx1PXMubGVuZ3RoO2M8dTsrK2MpZm9yKGk9MCxsPXNbY107aTxhOysraSlpZigocj1vW2ldKS50eXBlPT09bC50eXBlJiZyLm5hbWU9PT1sLm5hbWUpcmV0dXJuIGwudmFsdWV9LGRpc3BhdGNoOmZ1bmN0aW9uIEh1dCh0LGUpe3JldHVybiB0aGlzLmVhY2goKCJmdW5jdGlvbiI9PXR5cGVvZiBlP1hjdDpZY3QpKHQsZSkpfX07dmFyIEZ1dD0uNyxWdXQ9MS9GdXQsVXV0PSJcXHMqKFsrLV0/XFxkKylcXHMqIixqdXQ9IlxccyooWystXT9cXGQqXFwuP1xcZCsoPzpbZUVdWystXT9cXGQrKT8pXFxzKiIsR3V0PSJcXHMqKFsrLV0/XFxkKlxcLj9cXGQrKD86W2VFXVsrLV0/XFxkKyk/KSVcXHMqIixXdXQ9L14jKFswLTlhLWZdezMsOH0pJC8scXV0PW5ldyBSZWdFeHAoIl5yZ2JcXCgiK1tVdXQsVXV0LFV1dF0rIlxcKSQiKSxZdXQ9bmV3IFJlZ0V4cCgiXnJnYlxcKCIrW0d1dCxHdXQsR3V0XSsiXFwpJCIpLFh1dD1uZXcgUmVnRXhwKCJecmdiYVxcKCIrW1V1dCxVdXQsVXV0LGp1dF0rIlxcKSQiKSwkdXQ9bmV3IFJlZ0V4cCgiXnJnYmFcXCgiK1tHdXQsR3V0LEd1dCxqdXRdKyJcXCkkIiksS3V0PW5ldyBSZWdFeHAoIl5oc2xcXCgiK1tqdXQsR3V0LEd1dF0rIlxcKSQiKSxadXQ9bmV3IFJlZ0V4cCgiXmhzbGFcXCgiK1tqdXQsR3V0LEd1dCxqdXRdKyJcXCkkIiksSnV0PXthbGljZWJsdWU6MTU3OTIzODMsYW50aXF1ZXdoaXRlOjE2NDQ0Mzc1LGFxdWE6NjU1MzUsYXF1YW1hcmluZTo4Mzg4NTY0LGF6dXJlOjE1Nzk0MTc1LGJlaWdlOjE2MTE5MjYwLGJpc3F1ZToxNjc3MDI0NCxibGFjazowLGJsYW5jaGVkYWxtb25kOjE2NzcyMDQ1LGJsdWU6MjU1LGJsdWV2aW9sZXQ6OTA1NTIwMixicm93bjoxMDgyNDIzNCxidXJseXdvb2Q6MTQ1OTYyMzEsY2FkZXRibHVlOjYyNjY1MjgsY2hhcnRyZXVzZTo4Mzg4MzUyLGNob2NvbGF0ZToxMzc4OTQ3MCxjb3JhbDoxNjc0NDI3Mixjb3JuZmxvd2VyYmx1ZTo2NTkxOTgxLGNvcm5zaWxrOjE2Nzc1Mzg4LGNyaW1zb246MTQ0MjMxMDAsY3lhbjo2NTUzNSxkYXJrYmx1ZToxMzksZGFya2N5YW46MzU3MjMsZGFya2dvbGRlbnJvZDoxMjA5MjkzOSxkYXJrZ3JheToxMTExOTAxNyxkYXJrZ3JlZW46MjU2MDAsZGFya2dyZXk6MTExMTkwMTcsZGFya2toYWtpOjEyNDMzMjU5LGRhcmttYWdlbnRhOjkxMDk2NDMsZGFya29saXZlZ3JlZW46NTU5Nzk5OSxkYXJrb3JhbmdlOjE2NzQ3NTIwLGRhcmtvcmNoaWQ6MTAwNDAwMTIsZGFya3JlZDo5MTA5NTA0LGRhcmtzYWxtb246MTUzMDg0MTAsZGFya3NlYWdyZWVuOjk0MTk5MTksZGFya3NsYXRlYmx1ZTo0NzM0MzQ3LGRhcmtzbGF0ZWdyYXk6MzEwMDQ5NSxkYXJrc2xhdGVncmV5OjMxMDA0OTUsZGFya3R1cnF1b2lzZTo1Mjk0NSxkYXJrdmlvbGV0Ojk2OTk1MzksZGVlcHBpbms6MTY3MTY5NDcsZGVlcHNreWJsdWU6NDkxNTEsZGltZ3JheTo2OTA4MjY1LGRpbWdyZXk6NjkwODI2NSxkb2RnZXJibHVlOjIwMDMxOTksZmlyZWJyaWNrOjExNjc0MTQ2LGZsb3JhbHdoaXRlOjE2Nzc1OTIwLGZvcmVzdGdyZWVuOjIyNjM4NDIsZnVjaHNpYToxNjcxMTkzNSxnYWluc2Jvcm86MTQ0NzQ0NjAsZ2hvc3R3aGl0ZToxNjMxNjY3MSxnb2xkOjE2NzY2NzIwLGdvbGRlbnJvZDoxNDMyOTEyMCxncmF5Ojg0MjE1MDQsZ3JlZW46MzI3NjgsZ3JlZW55ZWxsb3c6MTE0MDMwNTUsZ3JleTo4NDIxNTA0LGhvbmV5ZGV3OjE1Nzk0MTYwLGhvdHBpbms6MTY3Mzg3NDAsaW5kaWFucmVkOjEzNDU4NTI0LGluZGlnbzo0OTE1MzMwLGl2b3J5OjE2Nzc3MjAwLGtoYWtpOjE1Nzg3NjYwLGxhdmVuZGVyOjE1MTMyNDEwLGxhdmVuZGVyYmx1c2g6MTY3NzMzNjUsbGF3bmdyZWVuOjgxOTA5NzYsbGVtb25jaGlmZm9uOjE2Nzc1ODg1LGxpZ2h0Ymx1ZToxMTM5MzI1NCxsaWdodGNvcmFsOjE1NzYxNTM2LGxpZ2h0Y3lhbjoxNDc0NTU5OSxsaWdodGdvbGRlbnJvZHllbGxvdzoxNjQ0ODIxMCxsaWdodGdyYXk6MTM4ODIzMjMsbGlnaHRncmVlbjo5NDk4MjU2LGxpZ2h0Z3JleToxMzg4MjMyMyxsaWdodHBpbms6MTY3NTg0NjUsbGlnaHRzYWxtb246MTY3NTI3NjIsbGlnaHRzZWFncmVlbjoyMTQyODkwLGxpZ2h0c2t5Ymx1ZTo4OTAwMzQ2LGxpZ2h0c2xhdGVncmF5Ojc4MzM3NTMsbGlnaHRzbGF0ZWdyZXk6NzgzMzc1MyxsaWdodHN0ZWVsYmx1ZToxMTU4NDczNCxsaWdodHllbGxvdzoxNjc3NzE4NCxsaW1lOjY1MjgwLGxpbWVncmVlbjozMzI5MzMwLGxpbmVuOjE2NDQ1NjcwLG1hZ2VudGE6MTY3MTE5MzUsbWFyb29uOjgzODg2MDgsbWVkaXVtYXF1YW1hcmluZTo2NzM3MzIyLG1lZGl1bWJsdWU6MjA1LG1lZGl1bW9yY2hpZDoxMjIxMTY2NyxtZWRpdW1wdXJwbGU6OTY2MjY4MyxtZWRpdW1zZWFncmVlbjozOTc4MDk3LG1lZGl1bXNsYXRlYmx1ZTo4MDg3NzkwLG1lZGl1bXNwcmluZ2dyZWVuOjY0MTU0LG1lZGl1bXR1cnF1b2lzZTo0NzcyMzAwLG1lZGl1bXZpb2xldHJlZDoxMzA0NzE3MyxtaWRuaWdodGJsdWU6MTY0NDkxMixtaW50Y3JlYW06MTYxMjE4NTAsbWlzdHlyb3NlOjE2NzcwMjczLG1vY2Nhc2luOjE2NzcwMjI5LG5hdmFqb3doaXRlOjE2NzY4Njg1LG5hdnk6MTI4LG9sZGxhY2U6MTY2NDM1NTgsb2xpdmU6ODQyMTM3NixvbGl2ZWRyYWI6NzA0ODczOSxvcmFuZ2U6MTY3NTM5MjAsb3JhbmdlcmVkOjE2NzI5MzQ0LG9yY2hpZDoxNDMxNTczNCxwYWxlZ29sZGVucm9kOjE1NjU3MTMwLHBhbGVncmVlbjoxMDAyNTg4MCxwYWxldHVycXVvaXNlOjExNTI5OTY2LHBhbGV2aW9sZXRyZWQ6MTQzODEyMDMscGFwYXlhd2hpcDoxNjc3MzA3NyxwZWFjaHB1ZmY6MTY3Njc2NzMscGVydToxMzQ2ODk5MSxwaW5rOjE2NzYxMDM1LHBsdW06MTQ1MjQ2MzcscG93ZGVyYmx1ZToxMTU5MTkxMCxwdXJwbGU6ODM4ODczNixyZWJlY2NhcHVycGxlOjY2OTc4ODEscmVkOjE2NzExNjgwLHJvc3licm93bjoxMjM1NzUxOSxyb3lhbGJsdWU6NDI4Njk0NSxzYWRkbGVicm93bjo5MTI3MTg3LHNhbG1vbjoxNjQxNjg4MixzYW5keWJyb3duOjE2MDMyODY0LHNlYWdyZWVuOjMwNTAzMjcsc2Vhc2hlbGw6MTY3NzQ2Mzgsc2llbm5hOjEwNTA2Nzk3LHNpbHZlcjoxMjYzMjI1Nixza3libHVlOjg5MDAzMzEsc2xhdGVibHVlOjY5NzAwNjEsc2xhdGVncmF5OjczNzI5NDQsc2xhdGVncmV5OjczNzI5NDQsc25vdzoxNjc3NTkzMCxzcHJpbmdncmVlbjo2NTQwNyxzdGVlbGJsdWU6NDYyMDk4MCx0YW46MTM4MDg3ODAsdGVhbDozMjg5Nix0aGlzdGxlOjE0MjA0ODg4LHRvbWF0bzoxNjczNzA5NSx0dXJxdW9pc2U6NDI1MTg1Nix2aW9sZXQ6MTU2MzEwODYsd2hlYXQ6MTYxMTMzMzEsd2hpdGU6MTY3NzcyMTUsd2hpdGVzbW9rZToxNjExOTI4NSx5ZWxsb3c6MTY3NzY5NjAseWVsbG93Z3JlZW46MTAxNDUwNzR9O2Z1bmN0aW9uIFF1dCgpe3JldHVybiB0aGlzLnJnYigpLmZvcm1hdEhleCgpfWZ1bmN0aW9uIHRodCgpe3JldHVybiB0aGlzLnJnYigpLmZvcm1hdFJnYigpfWZ1bmN0aW9uIGVodCh0KXt2YXIgZSxuO3JldHVybiB0PSh0KyIiKS50cmltKCkudG9Mb3dlckNhc2UoKSwoZT1XdXQuZXhlYyh0KSk/KG49ZVsxXS5sZW5ndGgsZT1wYXJzZUludChlWzFdLDE2KSw2PT09bj9uaHQoZSk6Mz09PW4/bmV3IGFodChlPj44JjE1fGU+PjQmMjQwLGU+PjQmMTV8MjQwJmUsKDE1JmUpPDw0fDE1JmUsMSk6OD09PW4/aWh0KGU+PjI0JjI1NSxlPj4xNiYyNTUsZT4+OCYyNTUsKDI1NSZlKS8yNTUpOjQ9PT1uP2lodChlPj4xMiYxNXxlPj44JjI0MCxlPj44JjE1fGU+PjQmMjQwLGU+PjQmMTV8MjQwJmUsKCgxNSZlKTw8NHwxNSZlKS8yNTUpOm51bGwpOihlPXF1dC5leGVjKHQpKT9uZXcgYWh0KGVbMV0sZVsyXSxlWzNdLDEpOihlPVl1dC5leGVjKHQpKT9uZXcgYWh0KDI1NSplWzFdLzEwMCwyNTUqZVsyXS8xMDAsMjU1KmVbM10vMTAwLDEpOihlPVh1dC5leGVjKHQpKT9paHQoZVsxXSxlWzJdLGVbM10sZVs0XSk6KGU9JHV0LmV4ZWModCkpP2lodCgyNTUqZVsxXS8xMDAsMjU1KmVbMl0vMTAwLDI1NSplWzNdLzEwMCxlWzRdKTooZT1LdXQuZXhlYyh0KSk/dWh0KGVbMV0sZVsyXS8xMDAsZVszXS8xMDAsMSk6KGU9WnV0LmV4ZWModCkpP3VodChlWzFdLGVbMl0vMTAwLGVbM10vMTAwLGVbNF0pOkp1dC5oYXNPd25Qcm9wZXJ0eSh0KT9uaHQoSnV0W3RdKToidHJhbnNwYXJlbnQiPT09dD9uZXcgYWh0KE5hTixOYU4sTmFOLDApOm51bGx9ZnVuY3Rpb24gbmh0KHQpe3JldHVybiBuZXcgYWh0KHQ+PjE2JjI1NSx0Pj44JjI1NSwyNTUmdCwxKX1mdW5jdGlvbiBpaHQodCxlLG4saSl7cmV0dXJuIGk8PTAmJih0PWU9bj1OYU4pLG5ldyBhaHQodCxlLG4saSl9ZnVuY3Rpb24gcmh0KHQpe3JldHVybiB0IGluc3RhbmNlb2YgbHV0fHwodD1laHQodCkpLHQ/bmV3IGFodCgodD10LnJnYigpKS5yLHQuZyx0LmIsdC5vcGFjaXR5KTpuZXcgYWh0fWZ1bmN0aW9uIG9odCh0LGUsbixpKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/cmh0KHQpOm5ldyBhaHQodCxlLG4sbnVsbD09aT8xOmkpfWZ1bmN0aW9uIGFodCh0LGUsbixpKXt0aGlzLnI9K3QsdGhpcy5nPStlLHRoaXMuYj0rbix0aGlzLm9wYWNpdHk9K2l9ZnVuY3Rpb24gc2h0KCl7cmV0dXJuIiMiK2NodCh0aGlzLnIpK2NodCh0aGlzLmcpK2NodCh0aGlzLmIpfWZ1bmN0aW9uIGxodCgpe3ZhciB0PXRoaXMub3BhY2l0eTtyZXR1cm4oMT09PSh0PWlzTmFOKHQpPzE6TWF0aC5tYXgoMCxNYXRoLm1pbigxLHQpKSk/InJnYigiOiJyZ2JhKCIpK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodGhpcy5yKXx8MCkpKyIsICIrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0aGlzLmcpfHwwKSkrIiwgIitNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKHRoaXMuYil8fDApKSsoMT09PXQ/IikiOiIsICIrdCsiKSIpfWZ1bmN0aW9uIGNodCh0KXtyZXR1cm4oKHQ9TWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0KXx8MCkpKTwxNj8iMCI6IiIpK3QudG9TdHJpbmcoMTYpfWZ1bmN0aW9uIHVodCh0LGUsbixpKXtyZXR1cm4gaTw9MD90PWU9bj1OYU46bjw9MHx8bj49MT90PWU9TmFOOmU8PTAmJih0PU5hTiksbmV3IGRodCh0LGUsbixpKX1mdW5jdGlvbiBoaHQodCl7aWYodCBpbnN0YW5jZW9mIGRodClyZXR1cm4gbmV3IGRodCh0LmgsdC5zLHQubCx0Lm9wYWNpdHkpO2lmKHQgaW5zdGFuY2VvZiBsdXR8fCh0PWVodCh0KSksIXQpcmV0dXJuIG5ldyBkaHQ7aWYodCBpbnN0YW5jZW9mIGRodClyZXR1cm4gdDt2YXIgZT0odD10LnJnYigpKS5yLzI1NSxuPXQuZy8yNTUsaT10LmIvMjU1LHI9TWF0aC5taW4oZSxuLGkpLG89TWF0aC5tYXgoZSxuLGkpLGE9TmFOLHM9by1yLGw9KG8rcikvMjtyZXR1cm4gcz8oYT1lPT09bz8obi1pKS9zKzYqKG48aSk6bj09PW8/KGktZSkvcysyOihlLW4pL3MrNCxzLz1sPC41P28rcjoyLW8tcixhKj02MCk6cz1sPjAmJmw8MT8wOmEsbmV3IGRodChhLHMsbCx0Lm9wYWNpdHkpfWZ1bmN0aW9uIGRodCh0LGUsbixpKXt0aGlzLmg9K3QsdGhpcy5zPStlLHRoaXMubD0rbix0aGlzLm9wYWNpdHk9K2l9ZnVuY3Rpb24gcGh0KHQsZSxuKXtyZXR1cm4gMjU1Kih0PDYwP2UrKG4tZSkqdC82MDp0PDE4MD9uOnQ8MjQwP2UrKG4tZSkqKDI0MC10KS82MDplKX1mdW5jdGlvbiBmaHQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fWZ1bmN0aW9uIG1odCh0KXtyZXR1cm4gMT09KHQ9K3QpP2dodDpmdW5jdGlvbihlLG4pe3JldHVybiBuLWU/KGZ1bmN0aW9uIGkodCxlLG4pe3JldHVybiB0PU1hdGgucG93KHQsbiksZT1NYXRoLnBvdyhlLG4pLXQsbj0xL24sZnVuY3Rpb24oaSl7cmV0dXJuIE1hdGgucG93KHQraSplLG4pfX0pKGUsbix0KTpmaHQoaXNOYU4oZSk/bjplKX19ZnVuY3Rpb24gZ2h0KHQsZSl7dmFyIG49ZS10O3JldHVybiBuPyhmdW5jdGlvbiBpKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiB0K24qZX19KSh0LG4pOmZodChpc05hTih0KT9lOnQpfWF1dChsdXQsZWh0LHtjb3B5OmZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuYXNzaWduKG5ldyB0aGlzLmNvbnN0cnVjdG9yLHRoaXMsdCl9LGRpc3BsYXlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmdiKCkuZGlzcGxheWFibGUoKX0saGV4OlF1dCxmb3JtYXRIZXg6UXV0LGZvcm1hdEhzbDpmdW5jdGlvbiBfaHQoKXtyZXR1cm4gaGh0KHRoaXMpLmZvcm1hdEhzbCgpfSxmb3JtYXRSZ2I6dGh0LHRvU3RyaW5nOnRodH0pLGF1dChhaHQsb2h0LHN1dChsdXQse2JyaWdodGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/VnV0Ok1hdGgucG93KFZ1dCx0KSxuZXcgYWh0KHRoaXMucip0LHRoaXMuZyp0LHRoaXMuYip0LHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10P0Z1dDpNYXRoLnBvdyhGdXQsdCksbmV3IGFodCh0aGlzLnIqdCx0aGlzLmcqdCx0aGlzLmIqdCx0aGlzLm9wYWNpdHkpfSxyZ2I6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sZGlzcGxheWFibGU6ZnVuY3Rpb24oKXtyZXR1cm4tLjU8PXRoaXMuciYmdGhpcy5yPDI1NS41JiYtLjU8PXRoaXMuZyYmdGhpcy5nPDI1NS41JiYtLjU8PXRoaXMuYiYmdGhpcy5iPDI1NS41JiYwPD10aGlzLm9wYWNpdHkmJnRoaXMub3BhY2l0eTw9MX0saGV4OnNodCxmb3JtYXRIZXg6c2h0LGZvcm1hdFJnYjpsaHQsdG9TdHJpbmc6bGh0fSkpLGF1dChkaHQsKGZ1bmN0aW9uIHlodCh0LGUsbixpKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/aGh0KHQpOm5ldyBkaHQodCxlLG4sbnVsbD09aT8xOmkpfSksc3V0KGx1dCx7YnJpZ2h0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD9WdXQ6TWF0aC5wb3coVnV0LHQpLG5ldyBkaHQodGhpcy5oLHRoaXMucyx0aGlzLmwqdCx0aGlzLm9wYWNpdHkpfSxkYXJrZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD9GdXQ6TWF0aC5wb3coRnV0LHQpLG5ldyBkaHQodGhpcy5oLHRoaXMucyx0aGlzLmwqdCx0aGlzLm9wYWNpdHkpfSxyZ2I6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmglMzYwKzM2MCoodGhpcy5oPDApLGU9aXNOYU4odCl8fGlzTmFOKHRoaXMucyk/MDp0aGlzLnMsbj10aGlzLmwsaT1uKyhuPC41P246MS1uKSplLHI9MipuLWk7cmV0dXJuIG5ldyBhaHQocGh0KHQ+PTI0MD90LTI0MDp0KzEyMCxyLGkpLHBodCh0LHIsaSkscGh0KHQ8MTIwP3QrMjQwOnQtMTIwLHIsaSksdGhpcy5vcGFjaXR5KX0sZGlzcGxheWFibGU6ZnVuY3Rpb24oKXtyZXR1cm4oMDw9dGhpcy5zJiZ0aGlzLnM8PTF8fGlzTmFOKHRoaXMucykpJiYwPD10aGlzLmwmJnRoaXMubDw9MSYmMDw9dGhpcy5vcGFjaXR5JiZ0aGlzLm9wYWNpdHk8PTF9LGZvcm1hdEhzbDpmdW5jdGlvbigpe3ZhciB0PXRoaXMub3BhY2l0eTtyZXR1cm4oMT09PSh0PWlzTmFOKHQpPzE6TWF0aC5tYXgoMCxNYXRoLm1pbigxLHQpKSk/ImhzbCgiOiJoc2xhKCIpKyh0aGlzLmh8fDApKyIsICIrMTAwKih0aGlzLnN8fDApKyIlLCAiKzEwMCoodGhpcy5sfHwwKSsiJSIrKDE9PT10PyIpIjoiLCAiK3QrIikiKX19KSk7dmFyIHZodD0oZnVuY3Rpb24gdChlKXt2YXIgbj1taHQoZSk7ZnVuY3Rpb24gaSh0LGUpe3ZhciBpPW4oKHQ9b2h0KHQpKS5yLChlPW9odChlKSkucikscj1uKHQuZyxlLmcpLG89bih0LmIsZS5iKSxhPWdodCh0Lm9wYWNpdHksZS5vcGFjaXR5KTtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHQucj1pKGUpLHQuZz1yKGUpLHQuYj1vKGUpLHQub3BhY2l0eT1hKGUpLHQrIiJ9fXJldHVybiBpLmdhbW1hPXQsaX0pKDEpO2Z1bmN0aW9uIGJodCh0LGUpe3JldHVybiB0PSt0LGU9K2UsZnVuY3Rpb24obil7cmV0dXJuIHQqKDEtbikrZSpufX12YXIgeGh0PS9bLStdPyg/OlxkK1wuP1xkKnxcLj9cZCspKD86W2VFXVstK10/XGQrKT8vZyx3aHQ9bmV3IFJlZ0V4cCh4aHQuc291cmNlLCJnIik7ZnVuY3Rpb24gU2h0KHQsZSl7dmFyIG4saSxyLG89eGh0Lmxhc3RJbmRleD13aHQubGFzdEluZGV4PTAsYT0tMSxzPVtdLGw9W107Zm9yKHQrPSIiLGUrPSIiOyhuPXhodC5leGVjKHQpKSYmKGk9d2h0LmV4ZWMoZSkpOykocj1pLmluZGV4KT5vJiYocj1lLnNsaWNlKG8sciksc1thXT9zW2FdKz1yOnNbKythXT1yKSwobj1uWzBdKT09PShpPWlbMF0pP3NbYV0/c1thXSs9aTpzWysrYV09aTooc1srK2FdPW51bGwsbC5wdXNoKHtpOmEseDpiaHQobixpKX0pKSxvPXdodC5sYXN0SW5kZXg7cmV0dXJuIG88ZS5sZW5ndGgmJihyPWUuc2xpY2Uobyksc1thXT9zW2FdKz1yOnNbKythXT1yKSxzLmxlbmd0aDwyP2xbMF0/KGZ1bmN0aW9uIGModCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0KGUpKyIifX0pKGxbMF0ueCk6KGZ1bmN0aW9uIHUodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fSkoZSk6KGU9bC5sZW5ndGgsZnVuY3Rpb24odCl7Zm9yKHZhciBuLGk9MDtpPGU7KytpKXNbKG49bFtpXSkuaV09bi54KHQpO3JldHVybiBzLmpvaW4oIiIpfSl9dmFyIE1odCxFaHQsVGh0LENodCxBaHQ9MTgwL01hdGguUEksa2h0PXt0cmFuc2xhdGVYOjAsdHJhbnNsYXRlWTowLHJvdGF0ZTowLHNrZXdYOjAsc2NhbGVYOjEsc2NhbGVZOjF9O2Z1bmN0aW9uIExodCh0LGUsbixpLHIsbyl7dmFyIGEscyxsO3JldHVybihhPU1hdGguc3FydCh0KnQrZSplKSkmJih0Lz1hLGUvPWEpLChsPXQqbitlKmkpJiYobi09dCpsLGktPWUqbCksKHM9TWF0aC5zcXJ0KG4qbitpKmkpKSYmKG4vPXMsaS89cyxsLz1zKSx0Kmk8ZSpuJiYodD0tdCxlPS1lLGw9LWwsYT0tYSkse3RyYW5zbGF0ZVg6cix0cmFuc2xhdGVZOm8scm90YXRlOk1hdGguYXRhbjIoZSx0KSpBaHQsc2tld1g6TWF0aC5hdGFuKGwpKkFodCxzY2FsZVg6YSxzY2FsZVk6c319ZnVuY3Rpb24gUGh0KHQsZSxuLGkpe2Z1bmN0aW9uIHIodCl7cmV0dXJuIHQubGVuZ3RoP3QucG9wKCkrIiAiOiIifXJldHVybiBmdW5jdGlvbihvLGEpe3ZhciBzPVtdLGw9W107cmV0dXJuIG89dChvKSxhPXQoYSksKGZ1bmN0aW9uIGModCxpLHIsbyxhLHMpe2lmKHQhPT1yfHxpIT09byl7dmFyIGw9YS5wdXNoKCJ0cmFuc2xhdGUoIixudWxsLGUsbnVsbCxuKTtzLnB1c2goe2k6bC00LHg6Ymh0KHQscil9LHtpOmwtMix4OmJodChpLG8pfSl9ZWxzZShyfHxvKSYmYS5wdXNoKCJ0cmFuc2xhdGUoIityK2UrbytuKX0pKG8udHJhbnNsYXRlWCxvLnRyYW5zbGF0ZVksYS50cmFuc2xhdGVYLGEudHJhbnNsYXRlWSxzLGwpLChmdW5jdGlvbiB1KHQsZSxuLG8pe3QhPT1lPyh0LWU+MTgwP2UrPTM2MDplLXQ+MTgwJiYodCs9MzYwKSxvLnB1c2goe2k6bi5wdXNoKHIobikrInJvdGF0ZSgiLG51bGwsaSktMix4OmJodCh0LGUpfSkpOmUmJm4ucHVzaChyKG4pKyJyb3RhdGUoIitlK2kpfSkoby5yb3RhdGUsYS5yb3RhdGUscyxsKSwoZnVuY3Rpb24gaCh0LGUsbixvKXt0IT09ZT9vLnB1c2goe2k6bi5wdXNoKHIobikrInNrZXdYKCIsbnVsbCxpKS0yLHg6Ymh0KHQsZSl9KTplJiZuLnB1c2gocihuKSsic2tld1goIitlK2kpfSkoby5za2V3WCxhLnNrZXdYLHMsbCksKGZ1bmN0aW9uIGQodCxlLG4saSxvLGEpe2lmKHQhPT1ufHxlIT09aSl7dmFyIHM9by5wdXNoKHIobykrInNjYWxlKCIsbnVsbCwiLCIsbnVsbCwiKSIpO2EucHVzaCh7aTpzLTQseDpiaHQodCxuKX0se2k6cy0yLHg6Ymh0KGUsaSl9KX1lbHNlIDE9PT1uJiYxPT09aXx8by5wdXNoKHIobykrInNjYWxlKCIrbisiLCIraSsiKSIpfSkoby5zY2FsZVgsby5zY2FsZVksYS5zY2FsZVgsYS5zY2FsZVkscyxsKSxvPWE9bnVsbCxmdW5jdGlvbih0KXtmb3IodmFyIGUsbj0tMSxpPWwubGVuZ3RoOysrbjxpOylzWyhlPWxbbl0pLmldPWUueCh0KTtyZXR1cm4gcy5qb2luKCIiKX19fXZhciBOaHQ9UGh0KChmdW5jdGlvbiBJaHQodCl7cmV0dXJuIm5vbmUiPT09dD9raHQ6KE1odHx8KE1odD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJESVYiKSxFaHQ9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LFRodD1kb2N1bWVudC5kZWZhdWx0VmlldyksTWh0LnN0eWxlLnRyYW5zZm9ybT10LHQ9VGh0LmdldENvbXB1dGVkU3R5bGUoRWh0LmFwcGVuZENoaWxkKE1odCksbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgidHJhbnNmb3JtIiksRWh0LnJlbW92ZUNoaWxkKE1odCksTGh0KCsodD10LnNsaWNlKDcsLTEpLnNwbGl0KCIsIikpWzBdLCt0WzFdLCt0WzJdLCt0WzNdLCt0WzRdLCt0WzVdKSl9KSwicHgsICIsInB4KSIsImRlZykiKSxSaHQ9UGh0KChmdW5jdGlvbiBPaHQodCl7cmV0dXJuIG51bGw9PXQ/a2h0OihDaHR8fChDaHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsImciKSksQ2h0LnNldEF0dHJpYnV0ZSgidHJhbnNmb3JtIix0KSwodD1DaHQudHJhbnNmb3JtLmJhc2VWYWwuY29uc29saWRhdGUoKSk/TGh0KCh0PXQubWF0cml4KS5hLHQuYix0LmMsdC5kLHQuZSx0LmYpOmtodCl9KSwiLCAiLCIpIiwiKSIpLHpodD1NYXRoLlNRUlQyO2Z1bmN0aW9uIERodCh0KXtyZXR1cm4oKHQ9TWF0aC5leHAodCkpKzEvdCkvMn1mdW5jdGlvbiBCaHQodCxlKXt2YXIgbixpLHI9dFswXSxvPXRbMV0sYT10WzJdLHM9ZVsyXSxsPWVbMF0tcixjPWVbMV0tbyx1PWwqbCtjKmM7aWYodTwxZS0xMilpPU1hdGgubG9nKHMvYSkvemh0LG49ZnVuY3Rpb24odCl7cmV0dXJuW3IrdCpsLG8rdCpjLGEqTWF0aC5leHAoemh0KnQqaSldfTtlbHNle3ZhciBoPU1hdGguc3FydCh1KSxkPShzKnMtYSphKzQqdSkvKDIqYSoyKmgpLHA9KHMqcy1hKmEtNCp1KS8oMipzKjIqaCksZj1NYXRoLmxvZyhNYXRoLnNxcnQoZCpkKzEpLWQpLG09TWF0aC5sb2coTWF0aC5zcXJ0KHAqcCsxKS1wKTtpPShtLWYpL3podCxuPWZ1bmN0aW9uKHQpe3ZhciBlPXQqaSxuPURodChmKSxzPWEvKDIqaCkqKG4qKGZ1bmN0aW9uIHUodCl7cmV0dXJuKCh0PU1hdGguZXhwKDIqdCkpLTEpLyh0KzEpfSkoemh0KmUrZiktKGZ1bmN0aW9uIGQodCl7cmV0dXJuKCh0PU1hdGguZXhwKHQpKS0xL3QpLzJ9KShmKSk7cmV0dXJuW3IrcypsLG8rcypjLGEqbi9EaHQoemh0KmUrZildfX1yZXR1cm4gbi5kdXJhdGlvbj0xZTMqaSxufXZhciBIaHQsRmh0LFZodD0wLFVodD0wLGpodD0wLEdodD0wLFdodD0wLHFodD0wLFlodD0ib2JqZWN0Ij09dHlwZW9mIHBlcmZvcm1hbmNlJiZwZXJmb3JtYW5jZS5ub3c/cGVyZm9ybWFuY2U6RGF0ZSxYaHQ9Im9iamVjdCI9PXR5cGVvZiB3aW5kb3cmJndpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWU/d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZS5iaW5kKHdpbmRvdyk6ZnVuY3Rpb24odCl7c2V0VGltZW91dCh0LDE3KX07ZnVuY3Rpb24gJGh0KCl7cmV0dXJuIFdodHx8KFhodChLaHQpLFdodD1ZaHQubm93KCkrcWh0KX1mdW5jdGlvbiBLaHQoKXtXaHQ9MH1mdW5jdGlvbiBaaHQoKXt0aGlzLl9jYWxsPXRoaXMuX3RpbWU9dGhpcy5fbmV4dD1udWxsfWZ1bmN0aW9uIEpodCh0LGUsbil7dmFyIGk9bmV3IFpodDtyZXR1cm4gaS5yZXN0YXJ0KHQsZSxuKSxpfWZ1bmN0aW9uIFFodCgpe1dodD0oR2h0PVlodC5ub3coKSkrcWh0LFZodD1VaHQ9MDt0cnl7IShmdW5jdGlvbiB0KCl7JGh0KCksKytWaHQ7Zm9yKHZhciB0LGU9SGh0O2U7KSh0PVdodC1lLl90aW1lKT49MCYmZS5fY2FsbC5jYWxsKG51bGwsdCksZT1lLl9uZXh0Oy0tVmh0fSkoKX1maW5hbGx5e1ZodD0wLChmdW5jdGlvbiBlKCl7dmFyIHQsZSxuPUhodCxpPTEvMDtmb3IoO247KW4uX2NhbGw/KGk+bi5fdGltZSYmKGk9bi5fdGltZSksdD1uLG49bi5fbmV4dCk6KGU9bi5fbmV4dCxuLl9uZXh0PW51bGwsbj10P3QuX25leHQ9ZTpIaHQ9ZSk7Rmh0PXQsZWR0KGkpfSkoKSxXaHQ9MH19ZnVuY3Rpb24gdGR0KCl7dmFyIHQ9WWh0Lm5vdygpLGU9dC1HaHQ7ZT4xZTMmJihxaHQtPWUsR2h0PXQpfWZ1bmN0aW9uIGVkdCh0KXtWaHR8fChVaHQmJihVaHQ9Y2xlYXJUaW1lb3V0KFVodCkpLHQtV2h0PjI0Pyh0PDEvMCYmKFVodD1zZXRUaW1lb3V0KFFodCx0LVlodC5ub3coKS1xaHQpKSxqaHQmJihqaHQ9Y2xlYXJJbnRlcnZhbChqaHQpKSk6KGpodHx8KEdodD1ZaHQubm93KCksamh0PXNldEludGVydmFsKHRkdCwxZTMpKSxWaHQ9MSxYaHQoUWh0KSkpfWZ1bmN0aW9uIG5kdCh0LGUsbil7dmFyIGk9bmV3IFpodDtyZXR1cm4gaS5yZXN0YXJ0KChmdW5jdGlvbihuKXtpLnN0b3AoKSx0KG4rZSl9KSxlPW51bGw9PWU/MDorZSxuKSxpfVpodC5wcm90b3R5cGU9Smh0LnByb3RvdHlwZT17Y29uc3RydWN0b3I6Wmh0LHJlc3RhcnQ6ZnVuY3Rpb24odCxlLG4pe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoImNhbGxiYWNrIGlzIG5vdCBhIGZ1bmN0aW9uIik7bj0obnVsbD09bj8kaHQoKTorbikrKG51bGw9PWU/MDorZSksdGhpcy5fbmV4dHx8Rmh0PT09dGhpc3x8KEZodD9GaHQuX25leHQ9dGhpczpIaHQ9dGhpcyxGaHQ9dGhpcyksdGhpcy5fY2FsbD10LHRoaXMuX3RpbWU9bixlZHQoKX0sc3RvcDpmdW5jdGlvbigpe3RoaXMuX2NhbGwmJih0aGlzLl9jYWxsPW51bGwsdGhpcy5fdGltZT0xLzAsZWR0KCkpfX07dmFyIGlkdD1CbHQoInN0YXJ0IiwiZW5kIiwiY2FuY2VsIiwiaW50ZXJydXB0IikscmR0PVtdO2Z1bmN0aW9uIG9kdCh0LGUsbixpLHIsbyl7dmFyIGE9dC5fX3RyYW5zaXRpb247aWYoYSl7aWYobiBpbiBhKXJldHVybn1lbHNlIHQuX190cmFuc2l0aW9uPXt9OyEoZnVuY3Rpb24gcyh0LGUsbil7dmFyIGkscj10Ll9fdHJhbnNpdGlvbjtmdW5jdGlvbiBvKHQpe24uc3RhdGU9MSxuLnRpbWVyLnJlc3RhcnQoYSxuLmRlbGF5LG4udGltZSksbi5kZWxheTw9dCYmYSh0LW4uZGVsYXkpfWZ1bmN0aW9uIGEobyl7dmFyIGMsdSxoLGQ7aWYoMSE9PW4uc3RhdGUpcmV0dXJuIGwoKTtmb3IoYyBpbiByKWlmKChkPXJbY10pLm5hbWU9PT1uLm5hbWUpe2lmKDM9PT1kLnN0YXRlKXJldHVybiBuZHQoYSk7ND09PWQuc3RhdGU/KGQuc3RhdGU9NixkLnRpbWVyLnN0b3AoKSxkLm9uLmNhbGwoImludGVycnVwdCIsdCx0Ll9fZGF0YV9fLGQuaW5kZXgsZC5ncm91cCksZGVsZXRlIHJbY10pOitjPGUmJihkLnN0YXRlPTYsZC50aW1lci5zdG9wKCksZC5vbi5jYWxsKCJjYW5jZWwiLHQsdC5fX2RhdGFfXyxkLmluZGV4LGQuZ3JvdXApLGRlbGV0ZSByW2NdKX1pZihuZHQoKGZ1bmN0aW9uKCl7Mz09PW4uc3RhdGUmJihuLnN0YXRlPTQsbi50aW1lci5yZXN0YXJ0KHMsbi5kZWxheSxuLnRpbWUpLHMobykpfSkpLG4uc3RhdGU9MixuLm9uLmNhbGwoInN0YXJ0Iix0LHQuX19kYXRhX18sbi5pbmRleCxuLmdyb3VwKSwyPT09bi5zdGF0ZSl7Zm9yKG4uc3RhdGU9MyxpPW5ldyBBcnJheShoPW4udHdlZW4ubGVuZ3RoKSxjPTAsdT0tMTtjPGg7KytjKShkPW4udHdlZW5bY10udmFsdWUuY2FsbCh0LHQuX19kYXRhX18sbi5pbmRleCxuLmdyb3VwKSkmJihpWysrdV09ZCk7aS5sZW5ndGg9dSsxfX1mdW5jdGlvbiBzKGUpe2Zvcih2YXIgcj1lPG4uZHVyYXRpb24/bi5lYXNlLmNhbGwobnVsbCxlL24uZHVyYXRpb24pOihuLnRpbWVyLnJlc3RhcnQobCksbi5zdGF0ZT01LDEpLG89LTEsYT1pLmxlbmd0aDsrK288YTspaVtvXS5jYWxsKHQscik7NT09PW4uc3RhdGUmJihuLm9uLmNhbGwoImVuZCIsdCx0Ll9fZGF0YV9fLG4uaW5kZXgsbi5ncm91cCksbCgpKX1mdW5jdGlvbiBsKCl7Zm9yKHZhciBpIGluIG4uc3RhdGU9NixuLnRpbWVyLnN0b3AoKSxkZWxldGUgcltlXSxyKXJldHVybjtkZWxldGUgdC5fX3RyYW5zaXRpb259cltlXT1uLG4udGltZXI9Smh0KG8sMCxuLnRpbWUpfSkodCxuLHtuYW1lOmUsaW5kZXg6aSxncm91cDpyLG9uOmlkdCx0d2VlbjpyZHQsdGltZTpvLnRpbWUsZGVsYXk6by5kZWxheSxkdXJhdGlvbjpvLmR1cmF0aW9uLGVhc2U6by5lYXNlLHRpbWVyOm51bGwsc3RhdGU6MH0pfWZ1bmN0aW9uIGFkdCh0LGUpe3ZhciBuPWxkdCh0LGUpO2lmKG4uc3RhdGU+MCl0aHJvdyBuZXcgRXJyb3IoInRvbyBsYXRlOyBhbHJlYWR5IHNjaGVkdWxlZCIpO3JldHVybiBufWZ1bmN0aW9uIHNkdCh0LGUpe3ZhciBuPWxkdCh0LGUpO2lmKG4uc3RhdGU+Myl0aHJvdyBuZXcgRXJyb3IoInRvbyBsYXRlOyBhbHJlYWR5IHJ1bm5pbmciKTtyZXR1cm4gbn1mdW5jdGlvbiBsZHQodCxlKXt2YXIgbj10Ll9fdHJhbnNpdGlvbjtpZighbnx8IShuPW5bZV0pKXRocm93IG5ldyBFcnJvcigidHJhbnNpdGlvbiBub3QgZm91bmQiKTtyZXR1cm4gbn1mdW5jdGlvbiBjZHQodCxlKXt2YXIgbixpLHIsbz10Ll9fdHJhbnNpdGlvbixhPSEwO2lmKG8pe2ZvcihyIGluIGU9bnVsbD09ZT9udWxsOmUrIiIsbykobj1vW3JdKS5uYW1lPT09ZT8oaT1uLnN0YXRlPjImJm4uc3RhdGU8NSxuLnN0YXRlPTYsbi50aW1lci5zdG9wKCksbi5vbi5jYWxsKGk/ImludGVycnVwdCI6ImNhbmNlbCIsdCx0Ll9fZGF0YV9fLG4uaW5kZXgsbi5ncm91cCksZGVsZXRlIG9bcl0pOmE9ITE7YSYmZGVsZXRlIHQuX190cmFuc2l0aW9ufX1mdW5jdGlvbiB1ZHQodCxlKXt2YXIgbixpO3JldHVybiBmdW5jdGlvbigpe3ZhciByPXNkdCh0aGlzLHQpLG89ci50d2VlbjtpZihvIT09bilmb3IodmFyIGE9MCxzPShpPW49bykubGVuZ3RoO2E8czsrK2EpaWYoaVthXS5uYW1lPT09ZSl7KGk9aS5zbGljZSgpKS5zcGxpY2UoYSwxKTticmVha31yLnR3ZWVuPWl9fWZ1bmN0aW9uIGhkdCh0LGUsbil7dmFyIGkscjtpZigiZnVuY3Rpb24iIT10eXBlb2Ygbil0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG89c2R0KHRoaXMsdCksYT1vLnR3ZWVuO2lmKGEhPT1pKXtyPShpPWEpLnNsaWNlKCk7Zm9yKHZhciBzPXtuYW1lOmUsdmFsdWU6bn0sbD0wLGM9ci5sZW5ndGg7bDxjOysrbClpZihyW2xdLm5hbWU9PT1lKXtyW2xdPXM7YnJlYWt9bD09PWMmJnIucHVzaChzKX1vLnR3ZWVuPXJ9fWZ1bmN0aW9uIGRkdCh0LGUsbil7dmFyIGk9dC5faWQ7cmV0dXJuIHQuZWFjaCgoZnVuY3Rpb24oKXt2YXIgdD1zZHQodGhpcyxpKTsodC52YWx1ZXx8KHQudmFsdWU9e30pKVtlXT1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pKSxmdW5jdGlvbih0KXtyZXR1cm4gbGR0KHQsaSkudmFsdWVbZV19fWZ1bmN0aW9uIHBkdCh0LGUpe3ZhciBuO3JldHVybigibnVtYmVyIj09dHlwZW9mIGU/Ymh0OmUgaW5zdGFuY2VvZiBlaHQ/dmh0OihuPWVodChlKSk/KGU9bix2aHQpOlNodCkodCxlKX1mdW5jdGlvbiBmZHQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGUodCl9fWZ1bmN0aW9uIG1kdCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCl9fWZ1bmN0aW9uIGdkdCh0LGUsbil7dmFyIGkscixvPW4rIiI7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5nZXRBdHRyaWJ1dGUodCk7cmV0dXJuIGE9PT1vP251bGw6YT09PWk/cjpyPWUoaT1hLG4pfX1mdW5jdGlvbiBfZHQodCxlLG4pe3ZhciBpLHIsbz1uKyIiO3JldHVybiBmdW5jdGlvbigpe3ZhciBhPXRoaXMuZ2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKTtyZXR1cm4gYT09PW8/bnVsbDphPT09aT9yOnI9ZShpPWEsbil9fWZ1bmN0aW9uIHlkdCh0LGUsbil7dmFyIGkscixvO3JldHVybiBmdW5jdGlvbigpe3ZhciBhLHMsbD1uKHRoaXMpO2lmKG51bGwhPWwpcmV0dXJuKGE9dGhpcy5nZXRBdHRyaWJ1dGUodCkpPT09KHM9bCsiIik/bnVsbDphPT09aSYmcz09PXI/bzoocj1zLG89ZShpPWEsbCkpO3RoaXMucmVtb3ZlQXR0cmlidXRlKHQpfX1mdW5jdGlvbiB2ZHQodCxlLG4pe3ZhciBpLHIsbztyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYSxzLGw9bih0aGlzKTtpZihudWxsIT1sKXJldHVybihhPXRoaXMuZ2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKSk9PT0ocz1sKyIiKT9udWxsOmE9PT1pJiZzPT09cj9vOihyPXMsbz1lKGk9YSxsKSk7dGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwpfX1mdW5jdGlvbiBiZHQodCxlKXtyZXR1cm4gZnVuY3Rpb24obil7dGhpcy5zZXRBdHRyaWJ1dGUodCxlLmNhbGwodGhpcyxuKSl9fWZ1bmN0aW9uIHhkdCh0LGUpe3JldHVybiBmdW5jdGlvbihuKXt0aGlzLnNldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCxlLmNhbGwodGhpcyxuKSl9fWZ1bmN0aW9uIHdkdCh0LGUpe3ZhciBuLGk7ZnVuY3Rpb24gcigpe3ZhciByPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiByIT09aSYmKG49KGk9cikmJnhkdCh0LHIpKSxufXJldHVybiByLl92YWx1ZT1lLHJ9ZnVuY3Rpb24gU2R0KHQsZSl7dmFyIG4saTtmdW5jdGlvbiByKCl7dmFyIHI9ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIHIhPT1pJiYobj0oaT1yKSYmYmR0KHQscikpLG59cmV0dXJuIHIuX3ZhbHVlPWUscn1mdW5jdGlvbiBNZHQodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXthZHQodGhpcyx0KS5kZWxheT0rZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fWZ1bmN0aW9uIEVkdCh0LGUpe3JldHVybiBlPStlLGZ1bmN0aW9uKCl7YWR0KHRoaXMsdCkuZGVsYXk9ZX19ZnVuY3Rpb24gVGR0KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7c2R0KHRoaXMsdCkuZHVyYXRpb249K2UuYXBwbHkodGhpcyxhcmd1bWVudHMpfX1mdW5jdGlvbiBDZHQodCxlKXtyZXR1cm4gZT0rZSxmdW5jdGlvbigpe3NkdCh0aGlzLHQpLmR1cmF0aW9uPWV9fWZ1bmN0aW9uIEFkdCh0LGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcjtyZXR1cm4gZnVuY3Rpb24oKXtzZHQodGhpcyx0KS5lYXNlPWV9fWZ1bmN0aW9uIGtkdCh0LGUsbil7dmFyIGkscixvPShmdW5jdGlvbiBhKHQpe3JldHVybih0KyIiKS50cmltKCkuc3BsaXQoL158XHMrLykuZXZlcnkoKGZ1bmN0aW9uKHQpe3ZhciBlPXQuaW5kZXhPZigiLiIpO3JldHVybiBlPj0wJiYodD10LnNsaWNlKDAsZSkpLCF0fHwic3RhcnQiPT09dH0pKX0pKGUpP2FkdDpzZHQ7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGE9byh0aGlzLHQpLHM9YS5vbjtzIT09aSYmKHI9KGk9cykuY29weSgpKS5vbihlLG4pLGEub249cn19dmFyIExkdD1aY3QucHJvdG90eXBlLmNvbnN0cnVjdG9yO2Z1bmN0aW9uIFBkdCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpfX1mdW5jdGlvbiBOZHQodCxlLG4pe3JldHVybiBmdW5jdGlvbihpKXt0aGlzLnN0eWxlLnNldFByb3BlcnR5KHQsZS5jYWxsKHRoaXMsaSksbil9fWZ1bmN0aW9uIElkdCh0LGUsbil7dmFyIGkscjtmdW5jdGlvbiBvKCl7dmFyIG89ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIG8hPT1yJiYoaT0ocj1vKSYmTmR0KHQsbyxuKSksaX1yZXR1cm4gby5fdmFsdWU9ZSxvfWZ1bmN0aW9uIFJkdCh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7dGhpcy50ZXh0Q29udGVudD10LmNhbGwodGhpcyxlKX19ZnVuY3Rpb24gT2R0KHQpe3ZhciBlLG47ZnVuY3Rpb24gaSgpe3ZhciBpPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBpIT09biYmKGU9KG49aSkmJlJkdChpKSksZX1yZXR1cm4gaS5fdmFsdWU9dCxpfXZhciB6ZHQ9MDtmdW5jdGlvbiBEZHQodCxlLG4saSl7dGhpcy5fZ3JvdXBzPXQsdGhpcy5fcGFyZW50cz1lLHRoaXMuX25hbWU9bix0aGlzLl9pZD1pfWZ1bmN0aW9uIEJkdCgpe3JldHVybisremR0fXZhciBIZHQ9WmN0LnByb3RvdHlwZTtEZHQucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpEZHQsc2VsZWN0OmZ1bmN0aW9uIEZkdCh0KXt2YXIgZT10aGlzLl9uYW1lLG49dGhpcy5faWQ7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PUtsdCh0KSk7Zm9yKHZhciBpPXRoaXMuX2dyb3VwcyxyPWkubGVuZ3RoLG89bmV3IEFycmF5KHIpLGE9MDthPHI7KythKWZvcih2YXIgcyxsLGM9aVthXSx1PWMubGVuZ3RoLGg9b1thXT1uZXcgQXJyYXkodSksZD0wO2Q8dTsrK2QpKHM9Y1tkXSkmJihsPXQuY2FsbChzLHMuX19kYXRhX18sZCxjKSkmJigiX19kYXRhX18iaW4gcyYmKGwuX19kYXRhX189cy5fX2RhdGFfXyksaFtkXT1sLG9kdChoW2RdLGUsbixkLGgsbGR0KHMsbikpKTtyZXR1cm4gbmV3IERkdChvLHRoaXMuX3BhcmVudHMsZSxuKX0sc2VsZWN0QWxsOmZ1bmN0aW9uIFZkdCh0KXt2YXIgZT10aGlzLl9uYW1lLG49dGhpcy5faWQ7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PUpsdCh0KSk7Zm9yKHZhciBpPXRoaXMuX2dyb3VwcyxyPWkubGVuZ3RoLG89W10sYT1bXSxzPTA7czxyOysrcylmb3IodmFyIGwsYz1pW3NdLHU9Yy5sZW5ndGgsaD0wO2g8dTsrK2gpaWYobD1jW2hdKXtmb3IodmFyIGQscD10LmNhbGwobCxsLl9fZGF0YV9fLGgsYyksZj1sZHQobCxuKSxtPTAsZz1wLmxlbmd0aDttPGc7KyttKShkPXBbbV0pJiZvZHQoZCxlLG4sbSxwLGYpO28ucHVzaChwKSxhLnB1c2gobCl9cmV0dXJuIG5ldyBEZHQobyxhLGUsbil9LGZpbHRlcjpmdW5jdGlvbiBVZHQodCl7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PVFsdCh0KSk7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPWUubGVuZ3RoLGk9bmV3IEFycmF5KG4pLHI9MDtyPG47KytyKWZvcih2YXIgbyxhPWVbcl0scz1hLmxlbmd0aCxsPWlbcl09W10sYz0wO2M8czsrK2MpKG89YVtjXSkmJnQuY2FsbChvLG8uX19kYXRhX18sYyxhKSYmbC5wdXNoKG8pO3JldHVybiBuZXcgRGR0KGksdGhpcy5fcGFyZW50cyx0aGlzLl9uYW1lLHRoaXMuX2lkKX0sbWVyZ2U6ZnVuY3Rpb24gamR0KHQpe2lmKHQuX2lkIT09dGhpcy5faWQpdGhyb3cgbmV3IEVycm9yO2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj10Ll9ncm91cHMsaT1lLmxlbmd0aCxyPU1hdGgubWluKGksbi5sZW5ndGgpLG89bmV3IEFycmF5KGkpLGE9MDthPHI7KythKWZvcih2YXIgcyxsPWVbYV0sYz1uW2FdLHU9bC5sZW5ndGgsaD1vW2FdPW5ldyBBcnJheSh1KSxkPTA7ZDx1OysrZCkocz1sW2RdfHxjW2RdKSYmKGhbZF09cyk7Zm9yKDthPGk7KythKW9bYV09ZVthXTtyZXR1cm4gbmV3IERkdChvLHRoaXMuX3BhcmVudHMsdGhpcy5fbmFtZSx0aGlzLl9pZCl9LHNlbGVjdGlvbjpmdW5jdGlvbiBHZHQoKXtyZXR1cm4gbmV3IExkdCh0aGlzLl9ncm91cHMsdGhpcy5fcGFyZW50cyl9LHRyYW5zaXRpb246ZnVuY3Rpb24gV2R0KCl7Zm9yKHZhciB0PXRoaXMuX25hbWUsZT10aGlzLl9pZCxuPUJkdCgpLGk9dGhpcy5fZ3JvdXBzLHI9aS5sZW5ndGgsbz0wO288cjsrK28pZm9yKHZhciBhLHM9aVtvXSxsPXMubGVuZ3RoLGM9MDtjPGw7KytjKWlmKGE9c1tjXSl7dmFyIHU9bGR0KGEsZSk7b2R0KGEsdCxuLGMscyx7dGltZTp1LnRpbWUrdS5kZWxheSt1LmR1cmF0aW9uLGRlbGF5OjAsZHVyYXRpb246dS5kdXJhdGlvbixlYXNlOnUuZWFzZX0pfXJldHVybiBuZXcgRGR0KGksdGhpcy5fcGFyZW50cyx0LG4pfSxjYWxsOkhkdC5jYWxsLG5vZGVzOkhkdC5ub2Rlcyxub2RlOkhkdC5ub2RlLHNpemU6SGR0LnNpemUsZW1wdHk6SGR0LmVtcHR5LGVhY2g6SGR0LmVhY2gsb246ZnVuY3Rpb24gcWR0KHQsZSl7dmFyIG49dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8Mj9sZHQodGhpcy5ub2RlKCksbikub24ub24odCk6dGhpcy5lYWNoKGtkdChuLHQsZSkpfSxhdHRyOmZ1bmN0aW9uIFlkdCh0LGUpe3ZhciBuPVdsdCh0KSxpPSJ0cmFuc2Zvcm0iPT09bj9SaHQ6cGR0O3JldHVybiB0aGlzLmF0dHJUd2Vlbih0LCJmdW5jdGlvbiI9PXR5cGVvZiBlPyhuLmxvY2FsP3ZkdDp5ZHQpKG4saSxkZHQodGhpcywiYXR0ci4iK3QsZSkpOm51bGw9PWU/KG4ubG9jYWw/bWR0OmZkdCkobik6KG4ubG9jYWw/X2R0OmdkdCkobixpLGUpKX0sYXR0clR3ZWVuOmZ1bmN0aW9uIFhkdCh0LGUpe3ZhciBuPSJhdHRyLiIrdDtpZihhcmd1bWVudHMubGVuZ3RoPDIpcmV0dXJuKG49dGhpcy50d2VlbihuKSkmJm4uX3ZhbHVlO2lmKG51bGw9PWUpcmV0dXJuIHRoaXMudHdlZW4obixudWxsKTtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3I7dmFyIGk9V2x0KHQpO3JldHVybiB0aGlzLnR3ZWVuKG4sKGkubG9jYWw/d2R0OlNkdCkoaSxlKSl9LHN0eWxlOmZ1bmN0aW9uICRkdCh0LGUsbil7dmFyIGk9InRyYW5zZm9ybSI9PSh0Kz0iIik/Tmh0OnBkdDtyZXR1cm4gbnVsbD09ZT90aGlzLnN0eWxlVHdlZW4odCwoZnVuY3Rpb24gcih0LGUpe3ZhciBuLGkscjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbz1tY3QodGhpcyx0KSxhPSh0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpLG1jdCh0aGlzLHQpKTtyZXR1cm4gbz09PWE/bnVsbDpvPT09biYmYT09PWk/cjpyPWUobj1vLGk9YSl9fSkodCxpKSkub24oImVuZC5zdHlsZS4iK3QsUGR0KHQpKToiZnVuY3Rpb24iPT10eXBlb2YgZT90aGlzLnN0eWxlVHdlZW4odCwoZnVuY3Rpb24gYSh0LGUsbil7dmFyIGkscixvO3JldHVybiBmdW5jdGlvbigpe3ZhciBhPW1jdCh0aGlzLHQpLHM9bih0aGlzKSxsPXMrIiI7cmV0dXJuIG51bGw9PXMmJih0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpLGw9cz1tY3QodGhpcyx0KSksYT09PWw/bnVsbDphPT09aSYmbD09PXI/bzoocj1sLG89ZShpPWEscykpfX0pKHQsaSxkZHQodGhpcywic3R5bGUuIit0LGUpKSkuZWFjaCgoZnVuY3Rpb24gbyh0LGUpe3ZhciBuLGkscixvLGE9InN0eWxlLiIrZSxzPSJlbmQuIithO3JldHVybiBmdW5jdGlvbigpe3ZhciBsPXNkdCh0aGlzLHQpLGM9bC5vbix1PW51bGw9PWwudmFsdWVbYV0/b3x8KG89UGR0KGUpKTp2b2lkIDA7Yz09PW4mJnI9PT11fHwoaT0obj1jKS5jb3B5KCkpLm9uKHMscj11KSxsLm9uPWl9fSkodGhpcy5faWQsdCkpOnRoaXMuc3R5bGVUd2Vlbih0LChmdW5jdGlvbiBzKHQsZSxuKXt2YXIgaSxyLG89bisiIjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYT1tY3QodGhpcyx0KTtyZXR1cm4gYT09PW8/bnVsbDphPT09aT9yOnI9ZShpPWEsbil9fSkodCxpLGUpLG4pLm9uKCJlbmQuc3R5bGUuIit0LG51bGwpfSxzdHlsZVR3ZWVuOmZ1bmN0aW9uIEtkdCh0LGUsbil7dmFyIGk9InN0eWxlLiIrKHQrPSIiKTtpZihhcmd1bWVudHMubGVuZ3RoPDIpcmV0dXJuKGk9dGhpcy50d2VlbihpKSkmJmkuX3ZhbHVlO2lmKG51bGw9PWUpcmV0dXJuIHRoaXMudHdlZW4oaSxudWxsKTtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIHRoaXMudHdlZW4oaSxJZHQodCxlLG51bGw9PW4/IiI6bikpfSx0ZXh0OmZ1bmN0aW9uIFpkdCh0KXtyZXR1cm4gdGhpcy50d2VlbigidGV4dCIsImZ1bmN0aW9uIj09dHlwZW9mIHQ/KGZ1bmN0aW9uIGUodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dCh0aGlzKTt0aGlzLnRleHRDb250ZW50PW51bGw9PWU/IiI6ZX19KShkZHQodGhpcywidGV4dCIsdCkpOihmdW5jdGlvbiBuKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMudGV4dENvbnRlbnQ9dH19KShudWxsPT10PyIiOnQrIiIpKX0sdGV4dFR3ZWVuOmZ1bmN0aW9uIEpkdCh0KXt2YXIgZT0idGV4dCI7aWYoYXJndW1lbnRzLmxlbmd0aDwxKXJldHVybihlPXRoaXMudHdlZW4oZSkpJiZlLl92YWx1ZTtpZihudWxsPT10KXJldHVybiB0aGlzLnR3ZWVuKGUsbnVsbCk7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IEVycm9yO3JldHVybiB0aGlzLnR3ZWVuKGUsT2R0KHQpKX0scmVtb3ZlOmZ1bmN0aW9uIFFkdCgpe3JldHVybiB0aGlzLm9uKCJlbmQucmVtb3ZlIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdD10aGlzLnBhcmVudE5vZGU7Zm9yKHZhciBuIGluIHRoaXMuX190cmFuc2l0aW9uKWlmKCtuIT09ZSlyZXR1cm47dCYmdC5yZW1vdmVDaGlsZCh0aGlzKX19KSh0aGlzLl9pZCkpfSx0d2VlbjpmdW5jdGlvbiB0cHQodCxlKXt2YXIgbj10aGlzLl9pZDtpZih0Kz0iIixhcmd1bWVudHMubGVuZ3RoPDIpe2Zvcih2YXIgaSxyPWxkdCh0aGlzLm5vZGUoKSxuKS50d2VlbixvPTAsYT1yLmxlbmd0aDtvPGE7KytvKWlmKChpPXJbb10pLm5hbWU9PT10KXJldHVybiBpLnZhbHVlO3JldHVybiBudWxsfXJldHVybiB0aGlzLmVhY2goKG51bGw9PWU/dWR0OmhkdCkobix0LGUpKX0sZGVsYXk6ZnVuY3Rpb24gZXB0KHQpe3ZhciBlPXRoaXMuX2lkO3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaCgoImZ1bmN0aW9uIj09dHlwZW9mIHQ/TWR0OkVkdCkoZSx0KSk6bGR0KHRoaXMubm9kZSgpLGUpLmRlbGF5fSxkdXJhdGlvbjpmdW5jdGlvbiBucHQodCl7dmFyIGU9dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKCgiZnVuY3Rpb24iPT10eXBlb2YgdD9UZHQ6Q2R0KShlLHQpKTpsZHQodGhpcy5ub2RlKCksZSkuZHVyYXRpb259LGVhc2U6ZnVuY3Rpb24gaXB0KHQpe3ZhciBlPXRoaXMuX2lkO3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaChBZHQoZSx0KSk6bGR0KHRoaXMubm9kZSgpLGUpLmVhc2V9LGVuZDpmdW5jdGlvbiBycHQoKXt2YXIgdCxlLG49dGhpcyxpPW4uX2lkLHI9bi5zaXplKCk7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihvLGEpe3ZhciBzPXt2YWx1ZTphfSxsPXt2YWx1ZTpmdW5jdGlvbigpezA9PS0tciYmbygpfX07bi5lYWNoKChmdW5jdGlvbigpe3ZhciBuPXNkdCh0aGlzLGkpLHI9bi5vbjtyIT09dCYmKChlPSh0PXIpLmNvcHkoKSkuXy5jYW5jZWwucHVzaChzKSxlLl8uaW50ZXJydXB0LnB1c2gocyksZS5fLmVuZC5wdXNoKGwpKSxuLm9uPWV9KSl9KSl9fTt2YXIgb3B0PXt0aW1lOm51bGwsZGVsYXk6MCxkdXJhdGlvbjoyNTAsZWFzZTpxZn07ZnVuY3Rpb24gYXB0KHQsZSl7Zm9yKHZhciBuOyEobj10Ll9fdHJhbnNpdGlvbil8fCEobj1uW2VdKTspaWYoISh0PXQucGFyZW50Tm9kZSkpcmV0dXJuIG9wdC50aW1lPSRodCgpLG9wdDtyZXR1cm4gbn1mdW5jdGlvbiBzcHQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fWZ1bmN0aW9uIGxwdCh0LGUsbil7dGhpcy50YXJnZXQ9dCx0aGlzLnR5cGU9ZSx0aGlzLnRyYW5zZm9ybT1ufWZ1bmN0aW9uIGNwdCh0LGUsbil7dGhpcy5rPXQsdGhpcy54PWUsdGhpcy55PW59WmN0LnByb3RvdHlwZS5pbnRlcnJ1cHQ9ZnVuY3Rpb24gdXB0KHQpe3JldHVybiB0aGlzLmVhY2goKGZ1bmN0aW9uKCl7Y2R0KHRoaXMsdCl9KSl9LFpjdC5wcm90b3R5cGUudHJhbnNpdGlvbj1mdW5jdGlvbiBocHQodCl7dmFyIGUsbjt0IGluc3RhbmNlb2YgRGR0PyhlPXQuX2lkLHQ9dC5fbmFtZSk6KGU9QmR0KCksKG49b3B0KS50aW1lPSRodCgpLHQ9bnVsbD09dD9udWxsOnQrIiIpO2Zvcih2YXIgaT10aGlzLl9ncm91cHMscj1pLmxlbmd0aCxvPTA7bzxyOysrbylmb3IodmFyIGEscz1pW29dLGw9cy5sZW5ndGgsYz0wO2M8bDsrK2MpKGE9c1tjXSkmJm9kdChhLHQsZSxjLHMsbnx8YXB0KGEsZSkpO3JldHVybiBuZXcgRGR0KGksdGhpcy5fcGFyZW50cyx0LGUpfSxjcHQucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpjcHQsc2NhbGU6ZnVuY3Rpb24odCl7cmV0dXJuIDE9PT10P3RoaXM6bmV3IGNwdCh0aGlzLmsqdCx0aGlzLngsdGhpcy55KX0sdHJhbnNsYXRlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIDA9PT10JjA9PT1lP3RoaXM6bmV3IGNwdCh0aGlzLmssdGhpcy54K3RoaXMuayp0LHRoaXMueSt0aGlzLmsqZSl9LGFwcGx5OmZ1bmN0aW9uKHQpe3JldHVyblt0WzBdKnRoaXMuayt0aGlzLngsdFsxXSp0aGlzLmsrdGhpcy55XX0sYXBwbHlYOmZ1bmN0aW9uKHQpe3JldHVybiB0KnRoaXMuayt0aGlzLnh9LGFwcGx5WTpmdW5jdGlvbih0KXtyZXR1cm4gdCp0aGlzLmsrdGhpcy55fSxpbnZlcnQ6ZnVuY3Rpb24odCl7cmV0dXJuWyh0WzBdLXRoaXMueCkvdGhpcy5rLCh0WzFdLXRoaXMueSkvdGhpcy5rXX0saW52ZXJ0WDpmdW5jdGlvbih0KXtyZXR1cm4odC10aGlzLngpL3RoaXMua30saW52ZXJ0WTpmdW5jdGlvbih0KXtyZXR1cm4odC10aGlzLnkpL3RoaXMua30scmVzY2FsZVg6ZnVuY3Rpb24odCl7cmV0dXJuIHQuY29weSgpLmRvbWFpbih0LnJhbmdlKCkubWFwKHRoaXMuaW52ZXJ0WCx0aGlzKS5tYXAodC5pbnZlcnQsdCkpfSxyZXNjYWxlWTpmdW5jdGlvbih0KXtyZXR1cm4gdC5jb3B5KCkuZG9tYWluKHQucmFuZ2UoKS5tYXAodGhpcy5pbnZlcnRZLHRoaXMpLm1hcCh0LmludmVydCx0KSl9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuInRyYW5zbGF0ZSgiK3RoaXMueCsiLCIrdGhpcy55KyIpIHNjYWxlKCIrdGhpcy5rKyIpIn19O3ZhciBkcHQ9bmV3IGNwdCgxLDAsMCk7ZnVuY3Rpb24gcHB0KHQpe3JldHVybiB0Ll9fem9vbXx8ZHB0fWZ1bmN0aW9uIGZwdCgpe0ZjdC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKX1mdW5jdGlvbiBtcHQoKXtGY3QucHJldmVudERlZmF1bHQoKSxGY3Quc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCl9ZnVuY3Rpb24gZ3B0KCl7cmV0dXJuIUZjdC5idXR0b259ZnVuY3Rpb24gX3B0KCl7dmFyIHQsZSxuPXRoaXM7cmV0dXJuIG4gaW5zdGFuY2VvZiBTVkdFbGVtZW50Pyh0PShuPW4ub3duZXJTVkdFbGVtZW50fHxuKS53aWR0aC5iYXNlVmFsLnZhbHVlLGU9bi5oZWlnaHQuYmFzZVZhbC52YWx1ZSk6KHQ9bi5jbGllbnRXaWR0aCxlPW4uY2xpZW50SGVpZ2h0KSxbWzAsMF0sW3QsZV1dfWZ1bmN0aW9uIHlwdCgpe3JldHVybiB0aGlzLl9fem9vbXx8ZHB0fWZ1bmN0aW9uIHZwdCgpe3JldHVybi1GY3QuZGVsdGFZKihGY3QuZGVsdGFNb2RlPzEyMDoxKS81MDB9ZnVuY3Rpb24gYnB0KCl7cmV0dXJuIm9udG91Y2hzdGFydCJpbiB0aGlzfWZ1bmN0aW9uIHhwdCh0LGUsbil7dmFyIGk9dC5pbnZlcnRYKGVbMF1bMF0pLW5bMF1bMF0scj10LmludmVydFgoZVsxXVswXSktblsxXVswXSxvPXQuaW52ZXJ0WShlWzBdWzFdKS1uWzBdWzFdLGE9dC5pbnZlcnRZKGVbMV1bMV0pLW5bMV1bMV07cmV0dXJuIHQudHJhbnNsYXRlKHI+aT8oaStyKS8yOk1hdGgubWluKDAsaSl8fE1hdGgubWF4KDAsciksYT5vPyhvK2EpLzI6TWF0aC5taW4oMCxvKXx8TWF0aC5tYXgoMCxhKSl9cHB0LnByb3RvdHlwZT1jcHQucHJvdG90eXBlO3ZhciB3cHQ9TWUoT2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsdmVyc2lvbjoiNC4xMy4wIixiaXNlY3Q6ZXosYmlzZWN0UmlnaHQ6ZXosYmlzZWN0TGVmdDpueixhc2NlbmRpbmc6Sk8sYmlzZWN0b3I6UU8sY3Jvc3M6ZnVuY3Rpb24gU3B0KHQsZSxuKXt2YXIgaSxyLG8sYSxzPXQubGVuZ3RoLGw9ZS5sZW5ndGgsYz1uZXcgQXJyYXkocypsKTtmb3IobnVsbD09biYmKG49aXopLGk9bz0wO2k8czsrK2kpZm9yKGE9dFtpXSxyPTA7cjxsOysrciwrK28pY1tvXT1uKGEsZVtyXSk7cmV0dXJuIGN9LGRlc2NlbmRpbmc6ZnVuY3Rpb24gTXB0KHQsZSl7cmV0dXJuIGU8dD8tMTplPnQ/MTplPj10PzA6TmFOfSxkZXZpYXRpb246YXosZXh0ZW50OnN6LGhpc3RvZ3JhbTpmdW5jdGlvbiBFcHQoKXt2YXIgdD1keixlPXN6LG49dno7ZnVuY3Rpb24gaShpKXt2YXIgcixvLGE9aS5sZW5ndGgscz1uZXcgQXJyYXkoYSk7Zm9yKHI9MDtyPGE7KytyKXNbcl09dChpW3JdLHIsaSk7dmFyIGw9ZShzKSxjPWxbMF0sdT1sWzFdLGg9bihzLGMsdSk7QXJyYXkuaXNBcnJheShoKXx8KGg9eXooYyx1LGgpLGg9cHooTWF0aC5jZWlsKGMvaCkqaCxNYXRoLmZsb29yKHUvaCkqaCxoKSk7Zm9yKHZhciBkPWgubGVuZ3RoO2hbMF08PWM7KWguc2hpZnQoKSwtLWQ7Zm9yKDtoW2QtMV0+dTspaC5wb3AoKSwtLWQ7dmFyIHAsZj1uZXcgQXJyYXkoZCsxKTtmb3Iocj0wO3I8PWQ7KytyKShwPWZbcl09W10pLngwPXI+MD9oW3ItMV06YyxwLngxPXI8ZD9oW3JdOnU7Zm9yKHI9MDtyPGE7KytyKWM8PShvPXNbcl0pJiZvPD11JiZmW2V6KGgsbywwLGQpXS5wdXNoKGlbcl0pO3JldHVybiBmfXJldHVybiBpLnZhbHVlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6aHooZSksaSk6dH0saS5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpoeihbdFswXSx0WzFdXSksaSk6ZX0saS50aHJlc2hvbGRzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6QXJyYXkuaXNBcnJheSh0KT9oeihjei5jYWxsKHQpKTpoeih0KSxpKTpufSxpfSx0aHJlc2hvbGRGcmVlZG1hbkRpYWNvbmlzOmZ1bmN0aW9uIFRwdCh0LGUsbil7cmV0dXJuIHQ9dXouY2FsbCh0LHJ6KS5zb3J0KEpPKSxNYXRoLmNlaWwoKG4tZSkvKDIqKGJ6KHQsLjc1KS1ieih0LC4yNSkpKk1hdGgucG93KHQubGVuZ3RoLC0xLzMpKSl9LHRocmVzaG9sZFNjb3R0OmZ1bmN0aW9uIENwdCh0LGUsbil7cmV0dXJuIE1hdGguY2VpbCgobi1lKS8oMy41KmF6KHQpKk1hdGgucG93KHQubGVuZ3RoLC0xLzMpKSl9LHRocmVzaG9sZFN0dXJnZXM6dnosbWF4OmZ1bmN0aW9uIEFwdCh0LGUpe3ZhciBuLGkscj10Lmxlbmd0aCxvPS0xO2lmKG51bGw9PWUpe2Zvcig7KytvPHI7KWlmKG51bGwhPShuPXRbb10pJiZuPj1uKWZvcihpPW47KytvPHI7KW51bGwhPShuPXRbb10pJiZuPmkmJihpPW4pfWVsc2UgZm9yKDsrK288cjspaWYobnVsbCE9KG49ZSh0W29dLG8sdCkpJiZuPj1uKWZvcihpPW47KytvPHI7KW51bGwhPShuPWUodFtvXSxvLHQpKSYmbj5pJiYoaT1uKTtyZXR1cm4gaX0sbWVhbjpmdW5jdGlvbiBrcHQodCxlKXt2YXIgbixpPXQubGVuZ3RoLHI9aSxvPS0xLGE9MDtpZihudWxsPT1lKWZvcig7KytvPGk7KWlzTmFOKG49cnoodFtvXSkpPy0tcjphKz1uO2Vsc2UgZm9yKDsrK288aTspaXNOYU4obj1yeihlKHRbb10sbyx0KSkpPy0tcjphKz1uO2lmKHIpcmV0dXJuIGEvcn0sbWVkaWFuOmZ1bmN0aW9uIExwdCh0LGUpe3ZhciBuLGk9dC5sZW5ndGgscj0tMSxvPVtdO2lmKG51bGw9PWUpZm9yKDsrK3I8aTspaXNOYU4obj1yeih0W3JdKSl8fG8ucHVzaChuKTtlbHNlIGZvcig7KytyPGk7KWlzTmFOKG49cnooZSh0W3JdLHIsdCkpKXx8by5wdXNoKG4pO3JldHVybiBieihvLnNvcnQoSk8pLC41KX0sbWVyZ2U6ZnVuY3Rpb24gUHB0KHQpe2Zvcih2YXIgZSxuLGkscj10Lmxlbmd0aCxvPS0xLGE9MDsrK288cjspYSs9dFtvXS5sZW5ndGg7Zm9yKG49bmV3IEFycmF5KGEpOy0tcj49MDspZm9yKGU9KGk9dFtyXSkubGVuZ3RoOy0tZT49MDspblstLWFdPWlbZV07cmV0dXJuIG59LG1pbjp4eixwYWlyczpmdW5jdGlvbiBOcHQodCxlKXtudWxsPT1lJiYoZT1peik7Zm9yKHZhciBuPTAsaT10Lmxlbmd0aC0xLHI9dFswXSxvPW5ldyBBcnJheShpPDA/MDppKTtuPGk7KW9bbl09ZShyLHI9dFsrK25dKTtyZXR1cm4gb30scGVybXV0ZTpmdW5jdGlvbiBJcHQodCxlKXtmb3IodmFyIG49ZS5sZW5ndGgsaT1uZXcgQXJyYXkobik7bi0tOylpW25dPXRbZVtuXV07cmV0dXJuIGl9LHF1YW50aWxlOmJ6LHJhbmdlOnB6LHNjYW46ZnVuY3Rpb24gUnB0KHQsZSl7aWYobj10Lmxlbmd0aCl7dmFyIG4saSxyPTAsbz0wLGE9dFtvXTtmb3IobnVsbD09ZSYmKGU9Sk8pOysrcjxuOykoZShpPXRbcl0sYSk8MHx8MCE9PWUoYSxhKSkmJihhPWksbz1yKTtyZXR1cm4gMD09PWUoYSxhKT9vOnZvaWQgMH19LHNodWZmbGU6ZnVuY3Rpb24gT3B0KHQsZSxuKXtmb3IodmFyIGkscixvPShudWxsPT1uP3QubGVuZ3RoOm4pLShlPW51bGw9PWU/MDorZSk7bzspcj1NYXRoLnJhbmRvbSgpKm8tLXwwLGk9dFtvK2VdLHRbbytlXT10W3IrZV0sdFtyK2VdPWk7cmV0dXJuIHR9LHN1bTpmdW5jdGlvbiB6cHQodCxlKXt2YXIgbixpPXQubGVuZ3RoLHI9LTEsbz0wO2lmKG51bGw9PWUpZm9yKDsrK3I8aTspKG49K3Rbcl0pJiYobys9bik7ZWxzZSBmb3IoOysrcjxpOykobj0rZSh0W3JdLHIsdCkpJiYobys9bik7cmV0dXJuIG99LHRpY2tzOmZ1bmN0aW9uIERwdCh0LGUsbil7dmFyIGkscixvLGEscz0tMTtpZihuPStuLCh0PSt0KT09PShlPStlKSYmbj4wKXJldHVyblt0XTtpZigoaT1lPHQpJiYocj10LHQ9ZSxlPXIpLDA9PT0oYT1feih0LGUsbikpfHwhaXNGaW5pdGUoYSkpcmV0dXJuW107aWYoYT4wKWZvcih0PU1hdGguY2VpbCh0L2EpLGU9TWF0aC5mbG9vcihlL2EpLG89bmV3IEFycmF5KHI9TWF0aC5jZWlsKGUtdCsxKSk7KytzPHI7KW9bc109KHQrcykqYTtlbHNlIGZvcih0PU1hdGguZmxvb3IodCphKSxlPU1hdGguY2VpbChlKmEpLG89bmV3IEFycmF5KHI9TWF0aC5jZWlsKHQtZSsxKSk7KytzPHI7KW9bc109KHQtcykvYTtyZXR1cm4gaSYmby5yZXZlcnNlKCksb30sdGlja0luY3JlbWVudDpfeix0aWNrU3RlcDp5eix0cmFuc3Bvc2U6d3osdmFyaWFuY2U6b3osemlwOmZ1bmN0aW9uIEJwdCgpe3JldHVybiB3eihhcmd1bWVudHMpfSxheGlzVG9wOmZ1bmN0aW9uIEhwdCh0KXtyZXR1cm4gTnooMSx0KX0sYXhpc1JpZ2h0OmZ1bmN0aW9uIEZwdCh0KXtyZXR1cm4gTnooMix0KX0sYXhpc0JvdHRvbTpmdW5jdGlvbiBWcHQodCl7cmV0dXJuIE56KDMsdCl9LGF4aXNMZWZ0OmZ1bmN0aW9uIFVwdCh0KXtyZXR1cm4gTnooNCx0KX0sYnJ1c2g6ZnVuY3Rpb24ganB0KCl7cmV0dXJuIEVWKGZWKX0sYnJ1c2hYOmZ1bmN0aW9uIEdwdCgpe3JldHVybiBFVihkVil9LGJydXNoWTpmdW5jdGlvbiBXcHQoKXtyZXR1cm4gRVYocFYpfSxicnVzaFNlbGVjdGlvbjpmdW5jdGlvbiBxcHQodCl7dmFyIGU9dC5fX2JydXNoO3JldHVybiBlP2UuZGltLm91dHB1dChlLnNlbGVjdGlvbik6bnVsbH0sY2hvcmQ6ZnVuY3Rpb24gWXB0KCl7dmFyIHQ9MCxlPW51bGwsbj1udWxsLGk9bnVsbDtmdW5jdGlvbiByKHIpe3ZhciBvLGEscyxsLGMsdSxoPXIubGVuZ3RoLGQ9W10scD1DVihoKSxmPVtdLG09W10sZz1tLmdyb3Vwcz1uZXcgQXJyYXkoaCksXz1uZXcgQXJyYXkoaCpoKTtmb3Iobz0wLGM9LTE7KytjPGg7KXtmb3IoYT0wLHU9LTE7Kyt1PGg7KWErPXJbY11bdV07ZC5wdXNoKGEpLGYucHVzaChDVihoKSksbys9YX1mb3IoZSYmcC5zb3J0KChmdW5jdGlvbih0LG4pe3JldHVybiBlKGRbdF0sZFtuXSl9KSksbiYmZi5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3Quc29ydCgoZnVuY3Rpb24odCxpKXtyZXR1cm4gbihyW2VdW3RdLHJbZV1baV0pfSkpfSkpLGw9KG89UlYoMCxJVi10KmgpL28pP3Q6SVYvaCxhPTAsYz0tMTsrK2M8aDspe2ZvcihzPWEsdT0tMTsrK3U8aDspe3ZhciB5PXBbY10sdj1mW3ldW3VdLGI9clt5XVt2XSx4PWEsdz1hKz1iKm87X1t2KmgreV09e2luZGV4Onksc3ViaW5kZXg6dixzdGFydEFuZ2xlOngsZW5kQW5nbGU6dyx2YWx1ZTpifX1nW3ldPXtpbmRleDp5LHN0YXJ0QW5nbGU6cyxlbmRBbmdsZTphLHZhbHVlOmRbeV19LGErPWx9Zm9yKGM9LTE7KytjPGg7KWZvcih1PWMtMTsrK3U8aDspe3ZhciBTPV9bdSpoK2NdLE09X1tjKmgrdV07KFMudmFsdWV8fE0udmFsdWUpJiZtLnB1c2goUy52YWx1ZTxNLnZhbHVlP3tzb3VyY2U6TSx0YXJnZXQ6U306e3NvdXJjZTpTLHRhcmdldDpNfSl9cmV0dXJuIGk/bS5zb3J0KGkpOm19cmV0dXJuIHIucGFkQW5nbGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9UlYoMCxlKSxyKTp0fSxyLnNvcnRHcm91cHM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dCxyKTplfSxyLnNvcnRTdWJncm91cHM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49dCxyKTpufSxyLnNvcnRDaG9yZHM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG51bGw9PXQ/aT1udWxsOihpPU9WKHQpKS5fPXQscik6aSYmaS5ffSxyfSxyaWJib246ZnVuY3Rpb24gWHB0KCl7dmFyIHQ9R1YsZT1XVixuPXFWLGk9WVYscj1YVixvPW51bGw7ZnVuY3Rpb24gYSgpe3ZhciBhLHM9elYuY2FsbChhcmd1bWVudHMpLGw9dC5hcHBseSh0aGlzLHMpLGM9ZS5hcHBseSh0aGlzLHMpLHU9K24uYXBwbHkodGhpcywoc1swXT1sLHMpKSxoPWkuYXBwbHkodGhpcyxzKS1OVixkPXIuYXBwbHkodGhpcyxzKS1OVixwPXUqa1YoaCksZj11KkxWKGgpLG09K24uYXBwbHkodGhpcywoc1swXT1jLHMpKSxnPWkuYXBwbHkodGhpcyxzKS1OVixfPXIuYXBwbHkodGhpcyxzKS1OVjtpZihvfHwobz1hPWpWKCkpLG8ubW92ZVRvKHAsZiksby5hcmMoMCwwLHUsaCxkKSxoPT09ZyYmZD09PV98fChvLnF1YWRyYXRpY0N1cnZlVG8oMCwwLG0qa1YoZyksbSpMVihnKSksby5hcmMoMCwwLG0sZyxfKSksby5xdWFkcmF0aWNDdXJ2ZVRvKDAsMCxwLGYpLG8uY2xvc2VQYXRoKCksYSlyZXR1cm4gbz1udWxsLGErIiJ8fG51bGx9cmV0dXJuIGEucmFkaXVzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6RFYoK3QpLGEpOm59LGEuc3RhcnRBbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkRWKCt0KSxhKTppfSxhLmVuZEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6RFYoK3QpLGEpOnJ9LGEuc291cmNlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PWUsYSk6dH0sYS50YXJnZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dCxhKTplfSxhLmNvbnRleHQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89bnVsbD09dD9udWxsOnQsYSk6b30sYX0sbmVzdDpmdW5jdGlvbiAkcHQoKXt2YXIgdCxlLG4saT1bXSxyPVtdO2Z1bmN0aW9uIG8obixyLGEscyl7aWYocj49aS5sZW5ndGgpcmV0dXJuIG51bGwhPXQmJm4uc29ydCh0KSxudWxsIT1lP2Uobik6bjtmb3IodmFyIGwsYyx1LGg9LTEsZD1uLmxlbmd0aCxwPWlbcisrXSxmPVpWKCksbT1hKCk7KytoPGQ7KSh1PWYuZ2V0KGw9cChjPW5baF0pKyIiKSk/dS5wdXNoKGMpOmYuc2V0KGwsW2NdKTtyZXR1cm4gZi5lYWNoKChmdW5jdGlvbih0LGUpe3MobSxlLG8odCxyLGEscykpfSkpLG19ZnVuY3Rpb24gYSh0LG4pe2lmKCsrbj5pLmxlbmd0aClyZXR1cm4gdDt2YXIgbyxzPXJbbi0xXTtyZXR1cm4gbnVsbCE9ZSYmbj49aS5sZW5ndGg/bz10LmVudHJpZXMoKToobz1bXSx0LmVhY2goKGZ1bmN0aW9uKHQsZSl7by5wdXNoKHtrZXk6ZSx2YWx1ZXM6YSh0LG4pfSl9KSkpLG51bGwhPXM/by5zb3J0KChmdW5jdGlvbih0LGUpe3JldHVybiBzKHQua2V5LGUua2V5KX0pKTpvfXJldHVybiBuPXtvYmplY3Q6ZnVuY3Rpb24odCl7cmV0dXJuIG8odCwwLEpWLFFWKX0sbWFwOmZ1bmN0aW9uKHQpe3JldHVybiBvKHQsMCx0VSxlVSl9LGVudHJpZXM6ZnVuY3Rpb24odCl7cmV0dXJuIGEobyh0LDAsdFUsZVUpLDApfSxrZXk6ZnVuY3Rpb24odCl7cmV0dXJuIGkucHVzaCh0KSxufSxzb3J0S2V5czpmdW5jdGlvbih0KXtyZXR1cm4gcltpLmxlbmd0aC0xXT10LG59LHNvcnRWYWx1ZXM6ZnVuY3Rpb24oZSl7cmV0dXJuIHQ9ZSxufSxyb2xsdXA6ZnVuY3Rpb24odCl7cmV0dXJuIGU9dCxufX19LHNldDpyVSxtYXA6WlYsa2V5czpmdW5jdGlvbiBLcHQodCl7dmFyIGU9W107Zm9yKHZhciBuIGluIHQpZS5wdXNoKG4pO3JldHVybiBlfSx2YWx1ZXM6ZnVuY3Rpb24gWnB0KHQpe3ZhciBlPVtdO2Zvcih2YXIgbiBpbiB0KWUucHVzaCh0W25dKTtyZXR1cm4gZX0sZW50cmllczpmdW5jdGlvbiBKcHQodCl7dmFyIGU9W107Zm9yKHZhciBuIGluIHQpZS5wdXNoKHtrZXk6bix2YWx1ZTp0W25dfSk7cmV0dXJuIGV9LGNvbG9yOndVLHJnYjpUVSxoc2w6TFUsbGFiOlZVLGhjbDpYVSxjdWJlaGVsaXg6b2osZGlzcGF0Y2g6bGosZHJhZzpmdW5jdGlvbiBRcHQoKXt2YXIgdCxlLG4saSxyPURHLG89QkcsYT1IRyxzPUZHLGw9e30sYz1maigic3RhcnQiLCJkcmFnIiwiZW5kIiksdT0wLGg9MDtmdW5jdGlvbiBkKHQpe3Qub24oIm1vdXNlZG93bi5kcmFnIixwKS5maWx0ZXIocykub24oInRvdWNoc3RhcnQuZHJhZyIsZykub24oInRvdWNobW92ZS5kcmFnIixfKS5vbigidG91Y2hlbmQuZHJhZyB0b3VjaGNhbmNlbC5kcmFnIix5KS5zdHlsZSgidG91Y2gtYWN0aW9uIiwibm9uZSIpLnN0eWxlKCItd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3IiLCJyZ2JhKDAsMCwwLDApIil9ZnVuY3Rpb24gcCgpe2lmKCFpJiZyLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl7dmFyIGE9digibW91c2UiLG8uYXBwbHkodGhpcyxhcmd1bWVudHMpLGtHLHRoaXMsYXJndW1lbnRzKTthJiYoVEcoZkcudmlldykub24oIm1vdXNlbW92ZS5kcmFnIixmLCEwKS5vbigibW91c2V1cC5kcmFnIixtLCEwKSxJRyhmRy52aWV3KSxQRygpLG49ITEsdD1mRy5jbGllbnRYLGU9ZkcuY2xpZW50WSxhKCJzdGFydCIpKX19ZnVuY3Rpb24gZigpe2lmKE5HKCksIW4pe3ZhciBpPWZHLmNsaWVudFgtdCxyPWZHLmNsaWVudFktZTtuPWkqaStyKnI+aH1sLm1vdXNlKCJkcmFnIil9ZnVuY3Rpb24gbSgpe1RHKGZHLnZpZXcpLm9uKCJtb3VzZW1vdmUuZHJhZyBtb3VzZXVwLmRyYWciLG51bGwpLFJHKGZHLnZpZXcsbiksTkcoKSxsLm1vdXNlKCJlbmQiKX1mdW5jdGlvbiBnKCl7aWYoci5hcHBseSh0aGlzLGFyZ3VtZW50cykpe3ZhciB0LGUsbj1mRy5jaGFuZ2VkVG91Y2hlcyxpPW8uYXBwbHkodGhpcyxhcmd1bWVudHMpLGE9bi5sZW5ndGg7Zm9yKHQ9MDt0PGE7Kyt0KShlPXYoblt0XS5pZGVudGlmaWVyLGksTEcsdGhpcyxhcmd1bWVudHMpKSYmKFBHKCksZSgic3RhcnQiKSl9fWZ1bmN0aW9uIF8oKXt2YXIgdCxlLG49ZkcuY2hhbmdlZFRvdWNoZXMsaT1uLmxlbmd0aDtmb3IodD0wO3Q8aTsrK3QpKGU9bFtuW3RdLmlkZW50aWZpZXJdKSYmKE5HKCksZSgiZHJhZyIpKX1mdW5jdGlvbiB5KCl7dmFyIHQsZSxuPWZHLmNoYW5nZWRUb3VjaGVzLHI9bi5sZW5ndGg7Zm9yKGkmJmNsZWFyVGltZW91dChpKSxpPXNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7aT1udWxsfSksNTAwKSx0PTA7dDxyOysrdCkoZT1sW25bdF0uaWRlbnRpZmllcl0pJiYoUEcoKSxlKCJlbmQiKSl9ZnVuY3Rpb24gdih0LGUsbixpLHIpe3ZhciBvLHMsaCxwPW4oZSx0KSxmPWMuY29weSgpO2lmKGJHKG5ldyB6RyhkLCJiZWZvcmVzdGFydCIsbyx0LHUscFswXSxwWzFdLDAsMCxmKSwoZnVuY3Rpb24oKXtyZXR1cm4gbnVsbCE9KGZHLnN1YmplY3Q9bz1hLmFwcGx5KGkscikpJiYocz1vLngtcFswXXx8MCxoPW8ueS1wWzFdfHwwLCEwKX0pKSlyZXR1cm4gZnVuY3Rpb24gYShjKXt2YXIgbSxnPXA7c3dpdGNoKGMpe2Nhc2Uic3RhcnQiOmxbdF09YSxtPXUrKzticmVhaztjYXNlImVuZCI6ZGVsZXRlIGxbdF0sLS11O2Nhc2UiZHJhZyI6cD1uKGUsdCksbT11fWJHKG5ldyB6RyhkLGMsbyx0LG0scFswXStzLHBbMV0raCxwWzBdLWdbMF0scFsxXS1nWzFdLGYpLGYuYXBwbHksZixbYyxpLHJdKX19cmV0dXJuIGQuZmlsdGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6T0coISF0KSxkKTpyfSxkLmNvbnRhaW5lcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0iZnVuY3Rpb24iPT10eXBlb2YgdD90Ok9HKHQpLGQpOm99LGQuc3ViamVjdD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0iZnVuY3Rpb24iPT10eXBlb2YgdD90Ok9HKHQpLGQpOmF9LGQudG91Y2hhYmxlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6T0coISF0KSxkKTpzfSxkLm9uPWZ1bmN0aW9uKCl7dmFyIHQ9Yy5vbi5hcHBseShjLGFyZ3VtZW50cyk7cmV0dXJuIHQ9PT1jP2Q6dH0sZC5jbGlja0Rpc3RhbmNlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPSh0PSt0KSp0LGQpOk1hdGguc3FydChoKX0sZH0sZHJhZ0Rpc2FibGU6SUcsZHJhZ0VuYWJsZTpSRyxkc3ZGb3JtYXQ6eFcsY3N2UGFyc2U6U1csY3N2UGFyc2VSb3dzOk1XLGNzdkZvcm1hdDpFVyxjc3ZGb3JtYXRSb3dzOlRXLHRzdlBhcnNlOkFXLHRzdlBhcnNlUm93czprVyx0c3ZGb3JtYXQ6TFcsdHN2Rm9ybWF0Um93czpQVyxlYXNlTGluZWFyOmZ1bmN0aW9uIHRmdCh0KXtyZXR1cm4rdH0sZWFzZVF1YWQ6TlcsZWFzZVF1YWRJbjpmdW5jdGlvbiBlZnQodCl7cmV0dXJuIHQqdH0sZWFzZVF1YWRPdXQ6ZnVuY3Rpb24gbmZ0KHQpe3JldHVybiB0KigyLXQpfSxlYXNlUXVhZEluT3V0Ok5XLGVhc2VDdWJpYzpJVyxlYXNlQ3ViaWNJbjpmdW5jdGlvbiBpZnQodCl7cmV0dXJuIHQqdCp0fSxlYXNlQ3ViaWNPdXQ6ZnVuY3Rpb24gcmZ0KHQpe3JldHVybi0tdCp0KnQrMX0sZWFzZUN1YmljSW5PdXQ6SVcsZWFzZVBvbHk6elcsZWFzZVBvbHlJbjpSVyxlYXNlUG9seU91dDpPVyxlYXNlUG9seUluT3V0OnpXLGVhc2VTaW46SFcsZWFzZVNpbkluOmZ1bmN0aW9uIG9mdCh0KXtyZXR1cm4gMS1NYXRoLmNvcyh0KkJXKX0sZWFzZVNpbk91dDpmdW5jdGlvbiBhZnQodCl7cmV0dXJuIE1hdGguc2luKHQqQlcpfSxlYXNlU2luSW5PdXQ6SFcsZWFzZUV4cDpGVyxlYXNlRXhwSW46ZnVuY3Rpb24gc2Z0KHQpe3JldHVybiBNYXRoLnBvdygyLDEwKnQtMTApfSxlYXNlRXhwT3V0OmZ1bmN0aW9uIGxmdCh0KXtyZXR1cm4gMS1NYXRoLnBvdygyLC0xMCp0KX0sZWFzZUV4cEluT3V0OkZXLGVhc2VDaXJjbGU6VlcsZWFzZUNpcmNsZUluOmZ1bmN0aW9uIGNmdCh0KXtyZXR1cm4gMS1NYXRoLnNxcnQoMS10KnQpfSxlYXNlQ2lyY2xlT3V0OmZ1bmN0aW9uIHVmdCh0KXtyZXR1cm4gTWF0aC5zcXJ0KDEtIC0tdCp0KX0sZWFzZUNpcmNsZUluT3V0OlZXLGVhc2VCb3VuY2U6R1csZWFzZUJvdW5jZUluOmZ1bmN0aW9uIGhmdCh0KXtyZXR1cm4gMS1HVygxLXQpfSxlYXNlQm91bmNlT3V0OkdXLGVhc2VCb3VuY2VJbk91dDpmdW5jdGlvbiBkZnQodCl7cmV0dXJuKCh0Kj0yKTw9MT8xLUdXKDEtdCk6R1codC0xKSsxKS8yfSxlYXNlQmFjazpYVyxlYXNlQmFja0luOnFXLGVhc2VCYWNrT3V0OllXLGVhc2VCYWNrSW5PdXQ6WFcsZWFzZUVsYXN0aWM6WlcsZWFzZUVsYXN0aWNJbjpLVyxlYXNlRWxhc3RpY091dDpaVyxlYXNlRWxhc3RpY0luT3V0OkpXLGZvcmNlQ2VudGVyOmZ1bmN0aW9uIHBmdCh0LGUpe3ZhciBuO2Z1bmN0aW9uIGkoKXt2YXIgaSxyLG89bi5sZW5ndGgsYT0wLHM9MDtmb3IoaT0wO2k8bzsrK2kpYSs9KHI9bltpXSkueCxzKz1yLnk7Zm9yKGE9YS9vLXQscz1zL28tZSxpPTA7aTxvOysraSkocj1uW2ldKS54LT1hLHIueS09c31yZXR1cm4gbnVsbD09dCYmKHQ9MCksbnVsbD09ZSYmKGU9MCksaS5pbml0aWFsaXplPWZ1bmN0aW9uKHQpe249dH0saS54PWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PStlLGkpOnR9LGkueT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT0rdCxpKTplfSxpfSxmb3JjZUNvbGxpZGU6ZnVuY3Rpb24gZmZ0KHQpe3ZhciBlLG4saT0xLHI9MTtmdW5jdGlvbiBvKCl7Zm9yKHZhciB0LG8scyxsLGMsdSxoLGQ9ZS5sZW5ndGgscD0wO3A8cjsrK3ApZm9yKG89b3EoZSxjcSx1cSkudmlzaXRBZnRlcihhKSx0PTA7dDxkOysrdCloPSh1PW5bKHM9ZVt0XSkuaW5kZXhdKSp1LGw9cy54K3MudngsYz1zLnkrcy52eSxvLnZpc2l0KGYpO2Z1bmN0aW9uIGYodCxlLG4scixvKXt2YXIgYT10LmRhdGEsZD10LnIscD11K2Q7aWYoIWEpcmV0dXJuIGU+bCtwfHxyPGwtcHx8bj5jK3B8fG88Yy1wO2lmKGEuaW5kZXg+cy5pbmRleCl7dmFyIGY9bC1hLngtYS52eCxtPWMtYS55LWEudnksZz1mKmYrbSptO2c8cCpwJiYoMD09PWYmJihnKz0oZj10cSgpKSpmKSwwPT09bSYmKGcrPShtPXRxKCkpKm0pLGc9KHAtKGc9TWF0aC5zcXJ0KGcpKSkvZyppLHMudngrPShmKj1nKSoocD0oZCo9ZCkvKGgrZCkpLHMudnkrPShtKj1nKSpwLGEudngtPWYqKHA9MS1wKSxhLnZ5LT1tKnApfX19ZnVuY3Rpb24gYSh0KXtpZih0LmRhdGEpcmV0dXJuIHQucj1uW3QuZGF0YS5pbmRleF07Zm9yKHZhciBlPXQucj0wO2U8NDsrK2UpdFtlXSYmdFtlXS5yPnQuciYmKHQucj10W2VdLnIpfWZ1bmN0aW9uIHMoKXtpZihlKXt2YXIgaSxyLG89ZS5sZW5ndGg7Zm9yKG49bmV3IEFycmF5KG8pLGk9MDtpPG87KytpKW5bKHI9ZVtpXSkuaW5kZXhdPSt0KHIsaSxlKX19cmV0dXJuImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PVFXKG51bGw9PXQ/MTordCkpLG8uaW5pdGlhbGl6ZT1mdW5jdGlvbih0KXtlPXQscygpfSxvLml0ZXJhdGlvbnM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9K3Qsbyk6cn0sby5zdHJlbmd0aD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0rdCxvKTppfSxvLnJhZGl1cz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOlFXKCtlKSxzKCksbyk6dH0sb30sZm9yY2VMaW5rOmZ1bmN0aW9uIG1mdCh0KXt2YXIgZSxuLGkscixvLGE9THEscz1mdW5jdGlvbiBsKHQpe3JldHVybiAxL01hdGgubWluKHJbdC5zb3VyY2UuaW5kZXhdLHJbdC50YXJnZXQuaW5kZXhdKX0sYz1RVygzMCksdT0xO2Z1bmN0aW9uIGgoaSl7Zm9yKHZhciByPTAsYT10Lmxlbmd0aDtyPHU7KytyKWZvcih2YXIgcyxsLGMsaCxkLHAsZixtPTA7bTxhOysrbSloPShjPShzPXRbbV0pLnRhcmdldCkueCtjLnZ4LShsPXMuc291cmNlKS54LWwudnh8fHRxKCksZD1jLnkrYy52eS1sLnktbC52eXx8dHEoKSxkKj1wPSgocD1NYXRoLnNxcnQoaCpoK2QqZCkpLW5bbV0pL3AqaSplW21dLGMudngtPShoKj1wKSooZj1vW21dKSxjLnZ5LT1kKmYsbC52eCs9aCooZj0xLWYpLGwudnkrPWQqZn1mdW5jdGlvbiBkKCl7aWYoaSl7dmFyIHMsbCxjPWkubGVuZ3RoLHU9dC5sZW5ndGgsaD1DcShpLGEpO2ZvcihzPTAscj1uZXcgQXJyYXkoYyk7czx1OysrcykobD10W3NdKS5pbmRleD1zLCJvYmplY3QiIT10eXBlb2YgbC5zb3VyY2UmJihsLnNvdXJjZT1QcShoLGwuc291cmNlKSksIm9iamVjdCIhPXR5cGVvZiBsLnRhcmdldCYmKGwudGFyZ2V0PVBxKGgsbC50YXJnZXQpKSxyW2wuc291cmNlLmluZGV4XT0ocltsLnNvdXJjZS5pbmRleF18fDApKzEscltsLnRhcmdldC5pbmRleF09KHJbbC50YXJnZXQuaW5kZXhdfHwwKSsxO2ZvcihzPTAsbz1uZXcgQXJyYXkodSk7czx1OysrcylvW3NdPXJbKGw9dFtzXSkuc291cmNlLmluZGV4XS8ocltsLnNvdXJjZS5pbmRleF0rcltsLnRhcmdldC5pbmRleF0pO2U9bmV3IEFycmF5KHUpLHAoKSxuPW5ldyBBcnJheSh1KSxmKCl9fWZ1bmN0aW9uIHAoKXtpZihpKWZvcih2YXIgbj0wLHI9dC5sZW5ndGg7bjxyOysrbillW25dPStzKHRbbl0sbix0KX1mdW5jdGlvbiBmKCl7aWYoaSlmb3IodmFyIGU9MCxyPXQubGVuZ3RoO2U8cjsrK2UpbltlXT0rYyh0W2VdLGUsdCl9cmV0dXJuIG51bGw9PXQmJih0PVtdKSxoLmluaXRpYWxpemU9ZnVuY3Rpb24odCl7aT10LGQoKX0saC5saW5rcz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1lLGQoKSxoKTp0fSxoLmlkPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPXQsaCk6YX0saC5pdGVyYXRpb25zPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PSt0LGgpOnV9LGguc3RyZW5ndGg9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpRVygrdCkscCgpLGgpOnN9LGguZGlzdGFuY2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpRVygrdCksZigpLGgpOmN9LGh9LGZvcmNlTWFueUJvZHk6ZnVuY3Rpb24gZ2Z0KCl7dmFyIHQsZSxuLGkscj1RVygtMzApLG89MSxhPTEvMCxzPS44MTtmdW5jdGlvbiBsKGkpe3ZhciByLG89dC5sZW5ndGgsYT1vcSh0LGVZLG5ZKS52aXNpdEFmdGVyKHUpO2ZvcihuPWkscj0wO3I8bzsrK3IpZT10W3JdLGEudmlzaXQoaCl9ZnVuY3Rpb24gYygpe2lmKHQpe3ZhciBlLG4sbz10Lmxlbmd0aDtmb3IoaT1uZXcgQXJyYXkobyksZT0wO2U8bzsrK2UpaVsobj10W2VdKS5pbmRleF09K3IobixlLHQpfX1mdW5jdGlvbiB1KHQpe3ZhciBlLG4scixvLGEscz0wLGw9MDtpZih0Lmxlbmd0aCl7Zm9yKHI9bz1hPTA7YTw0OysrYSkoZT10W2FdKSYmKG49TWF0aC5hYnMoZS52YWx1ZSkpJiYocys9ZS52YWx1ZSxsKz1uLHIrPW4qZS54LG8rPW4qZS55KTt0Lng9ci9sLHQueT1vL2x9ZWxzZXsoZT10KS54PWUuZGF0YS54LGUueT1lLmRhdGEueTtkb3tzKz1pW2UuZGF0YS5pbmRleF19d2hpbGUoZT1lLm5leHQpfXQudmFsdWU9c31mdW5jdGlvbiBoKHQscixsLGMpe2lmKCF0LnZhbHVlKXJldHVybiEwO3ZhciB1PXQueC1lLngsaD10LnktZS55LGQ9Yy1yLHA9dSp1K2gqaDtpZihkKmQvczxwKXJldHVybiBwPGEmJigwPT09dSYmKHArPSh1PXRxKCkpKnUpLDA9PT1oJiYocCs9KGg9dHEoKSkqaCkscDxvJiYocD1NYXRoLnNxcnQobypwKSksZS52eCs9dSp0LnZhbHVlKm4vcCxlLnZ5Kz1oKnQudmFsdWUqbi9wKSwhMDtpZighKHQubGVuZ3RofHxwPj1hKSl7KHQuZGF0YSE9PWV8fHQubmV4dCkmJigwPT09dSYmKHArPSh1PXRxKCkpKnUpLDA9PT1oJiYocCs9KGg9dHEoKSkqaCkscDxvJiYocD1NYXRoLnNxcnQobypwKSkpO2Rve3QuZGF0YSE9PWUmJihlLnZ4Kz11KihkPWlbdC5kYXRhLmluZGV4XSpuL3ApLGUudnkrPWgqZCl9d2hpbGUodD10Lm5leHQpfX1yZXR1cm4gbC5pbml0aWFsaXplPWZ1bmN0aW9uKGUpe3Q9ZSxjKCl9LGwuc3RyZW5ndGg9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpRVygrdCksYygpLGwpOnJ9LGwuZGlzdGFuY2VNaW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89dCp0LGwpOk1hdGguc3FydChvKX0sbC5kaXN0YW5jZU1heD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT10KnQsbCk6TWF0aC5zcXJ0KGEpfSxsLnRoZXRhPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPXQqdCxsKTpNYXRoLnNxcnQocyl9LGx9LGZvcmNlUmFkaWFsOmZ1bmN0aW9uIF9mdCh0LGUsbil7dmFyIGkscixvLGE9UVcoLjEpO2Z1bmN0aW9uIHModCl7Zm9yKHZhciBhPTAscz1pLmxlbmd0aDthPHM7KythKXt2YXIgbD1pW2FdLGM9bC54LWV8fDFlLTYsdT1sLnktbnx8MWUtNixoPU1hdGguc3FydChjKmMrdSp1KSxkPShvW2FdLWgpKnJbYV0qdC9oO2wudngrPWMqZCxsLnZ5Kz11KmR9fWZ1bmN0aW9uIGwoKXtpZihpKXt2YXIgZSxuPWkubGVuZ3RoO2ZvcihyPW5ldyBBcnJheShuKSxvPW5ldyBBcnJheShuKSxlPTA7ZTxuOysrZSlvW2VdPSt0KGlbZV0sZSxpKSxyW2VdPWlzTmFOKG9bZV0pPzA6K2EoaVtlXSxlLGkpfX1yZXR1cm4iZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9UVcoK3QpKSxudWxsPT1lJiYoZT0wKSxudWxsPT1uJiYobj0wKSxzLmluaXRpYWxpemU9ZnVuY3Rpb24odCl7aT10LGwoKX0scy5zdHJlbmd0aD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OlFXKCt0KSxsKCkscyk6YX0scy5yYWRpdXM9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpRVygrZSksbCgpLHMpOnR9LHMueD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT0rdCxzKTplfSxzLnk9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49K3Qscyk6bn0sc30sZm9yY2VTaW11bGF0aW9uOmZ1bmN0aW9uIHlmdCh0KXt2YXIgZSxuPTEsaT0uMDAxLHI9MS1NYXRoLnBvdyhpLDEvMzAwKSxvPTAsYT0uNixzPUNxKCksbD1acSh1KSxjPUlxKCJ0aWNrIiwiZW5kIik7ZnVuY3Rpb24gdSgpe2goKSxjLmNhbGwoInRpY2siLGUpLG48aSYmKGwuc3RvcCgpLGMuY2FsbCgiZW5kIixlKSl9ZnVuY3Rpb24gaCgpe3ZhciBlLGksbD10Lmxlbmd0aDtmb3Iobis9KG8tbikqcixzLmVhY2goKGZ1bmN0aW9uKHQpe3Qobil9KSksZT0wO2U8bDsrK2UpbnVsbD09KGk9dFtlXSkuZng/aS54Kz1pLnZ4Kj1hOihpLng9aS5meCxpLnZ4PTApLG51bGw9PWkuZnk/aS55Kz1pLnZ5Kj1hOihpLnk9aS5meSxpLnZ5PTApfWZ1bmN0aW9uIGQoKXtmb3IodmFyIGUsbj0wLGk9dC5sZW5ndGg7bjxpOysrbil7aWYoKGU9dFtuXSkuaW5kZXg9bixpc05hTihlLngpfHxpc05hTihlLnkpKXt2YXIgcj0xMCpNYXRoLnNxcnQobiksbz1uKnJZO2UueD1yKk1hdGguY29zKG8pLGUueT1yKk1hdGguc2luKG8pfShpc05hTihlLnZ4KXx8aXNOYU4oZS52eSkpJiYoZS52eD1lLnZ5PTApfX1mdW5jdGlvbiBwKGUpe3JldHVybiBlLmluaXRpYWxpemUmJmUuaW5pdGlhbGl6ZSh0KSxlfXJldHVybiBudWxsPT10JiYodD1bXSksZCgpLGU9e3RpY2s6aCxyZXN0YXJ0OmZ1bmN0aW9uKCl7cmV0dXJuIGwucmVzdGFydCh1KSxlfSxzdG9wOmZ1bmN0aW9uKCl7cmV0dXJuIGwuc3RvcCgpLGV9LG5vZGVzOmZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PW4sZCgpLHMuZWFjaChwKSxlKTp0fSxhbHBoYTpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0rdCxlKTpufSxhbHBoYU1pbjpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0rdCxlKTppfSxhbHBoYURlY2F5OmZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSt0LGUpOityfSxhbHBoYVRhcmdldDpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0rdCxlKTpvfSx2ZWxvY2l0eURlY2F5OmZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPTEtdCxlKToxLWF9LGZvcmNlOmZ1bmN0aW9uKHQsbil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MT8obnVsbD09bj9zLnJlbW92ZSh0KTpzLnNldCh0LHAobikpLGUpOnMuZ2V0KHQpfSxmaW5kOmZ1bmN0aW9uKGUsbixpKXt2YXIgcixvLGEscyxsLGM9MCx1PXQubGVuZ3RoO2ZvcihudWxsPT1pP2k9MS8wOmkqPWksYz0wO2M8dTsrK2MpKGE9KHI9ZS0ocz10W2NdKS54KSpyKyhvPW4tcy55KSpvKTxpJiYobD1zLGk9YSk7cmV0dXJuIGx9LG9uOmZ1bmN0aW9uKHQsbil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MT8oYy5vbih0LG4pLGUpOmMub24odCl9fX0sZm9yY2VYOmZ1bmN0aW9uIHZmdCh0KXt2YXIgZSxuLGkscj1RVyguMSk7ZnVuY3Rpb24gbyh0KXtmb3IodmFyIHIsbz0wLGE9ZS5sZW5ndGg7bzxhOysrbykocj1lW29dKS52eCs9KGlbb10tci54KSpuW29dKnR9ZnVuY3Rpb24gYSgpe2lmKGUpe3ZhciBvLGE9ZS5sZW5ndGg7Zm9yKG49bmV3IEFycmF5KGEpLGk9bmV3IEFycmF5KGEpLG89MDtvPGE7KytvKW5bb109aXNOYU4oaVtvXT0rdChlW29dLG8sZSkpPzA6K3IoZVtvXSxvLGUpfX1yZXR1cm4iZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9UVcobnVsbD09dD8wOit0KSksby5pbml0aWFsaXplPWZ1bmN0aW9uKHQpe2U9dCxhKCl9LG8uc3RyZW5ndGg9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpRVygrdCksYSgpLG8pOnJ9LG8ueD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOlFXKCtlKSxhKCksbyk6dH0sb30sZm9yY2VZOmZ1bmN0aW9uIGJmdCh0KXt2YXIgZSxuLGkscj1RVyguMSk7ZnVuY3Rpb24gbyh0KXtmb3IodmFyIHIsbz0wLGE9ZS5sZW5ndGg7bzxhOysrbykocj1lW29dKS52eSs9KGlbb10tci55KSpuW29dKnR9ZnVuY3Rpb24gYSgpe2lmKGUpe3ZhciBvLGE9ZS5sZW5ndGg7Zm9yKG49bmV3IEFycmF5KGEpLGk9bmV3IEFycmF5KGEpLG89MDtvPGE7KytvKW5bb109aXNOYU4oaVtvXT0rdChlW29dLG8sZSkpPzA6K3IoZVtvXSxvLGUpfX1yZXR1cm4iZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9UVcobnVsbD09dD8wOit0KSksby5pbml0aWFsaXplPWZ1bmN0aW9uKHQpe2U9dCxhKCl9LG8uc3RyZW5ndGg9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpRVygrdCksYSgpLG8pOnJ9LG8ueT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOlFXKCtlKSxhKCksbyk6dH0sb30sZm9ybWF0RGVmYXVsdExvY2FsZTpiWSxnZXQgZm9ybWF0KCl7cmV0dXJuIGdZfSxnZXQgZm9ybWF0UHJlZml4KCl7cmV0dXJuIF9ZfSxmb3JtYXRMb2NhbGU6dlksZm9ybWF0U3BlY2lmaWVyOmRZLHByZWNpc2lvbkZpeGVkOmZ1bmN0aW9uIHhmdCh0KXtyZXR1cm4gTWF0aC5tYXgoMCwtYVkoTWF0aC5hYnModCkpKX0scHJlY2lzaW9uUHJlZml4OmZ1bmN0aW9uIHdmdCh0LGUpe3JldHVybiBNYXRoLm1heCgwLDMqTWF0aC5tYXgoLTgsTWF0aC5taW4oOCxNYXRoLmZsb29yKGFZKGUpLzMpKSktYVkoTWF0aC5hYnModCkpKX0scHJlY2lzaW9uUm91bmQ6ZnVuY3Rpb24gU2Z0KHQsZSl7cmV0dXJuIHQ9TWF0aC5hYnModCksZT1NYXRoLmFicyhlKS10LE1hdGgubWF4KDAsYVkoZSktYVkodCkpKzF9LGdlb0FyZWE6ZnVuY3Rpb24gTWZ0KHQpe3JldHVybiBhWC5yZXNldCgpLFFZKHQsc1gpLDIqYVh9LGdlb0JvdW5kczpmdW5jdGlvbiBFZnQodCl7dmFyIGUsbixpLHIsbyxhLHM7aWYod1g9eFg9LSh2WD1iWD0xLzApLENYPVtdLFFZKHQscVgpLG49Q1gubGVuZ3RoKXtmb3IoQ1guc29ydChlJCksZT0xLG89W2k9Q1hbMF1dO2U8bjsrK2UpbiQoaSwocj1DWFtlXSlbMF0pfHxuJChpLHJbMV0pPyh0JChpWzBdLHJbMV0pPnQkKGlbMF0saVsxXSkmJihpWzFdPXJbMV0pLHQkKHJbMF0saVsxXSk+dCQoaVswXSxpWzFdKSYmKGlbMF09clswXSkpOm8ucHVzaChpPXIpO2ZvcihhPS0xLzAsZT0wLGk9b1tuPW8ubGVuZ3RoLTFdO2U8PW47aT1yLCsrZSkocz10JChpWzFdLChyPW9bZV0pWzBdKSk+YSYmKGE9cyx2WD1yWzBdLHhYPWlbMV0pfXJldHVybiBDWD1BWD1udWxsLHZYPT09MS8wfHxiWD09PTEvMD9bW05hTixOYU5dLFtOYU4sTmFOXV06W1t2WCxiWF0sW3hYLHdYXV19LGdlb0NlbnRyb2lkOmZ1bmN0aW9uIFRmdCh0KXtrWD1MWD1QWD1OWD1JWD1SWD1PWD16WD1EWD1CWD1IWD0wLFFZKHQsaSQpO3ZhciBlPURYLG49QlgsaT1IWCxyPWUqZStuKm4raSppO3JldHVybiByPDFlLTEyJiYoZT1SWCxuPU9YLGk9elgsTFg8RVkmJihlPVBYLG49TlgsaT1JWCksKHI9ZSplK24qbitpKmkpPDFlLTEyKT9bTmFOLE5hTl06W1JZKG4sZSkqTFksV1koaS9VWShyKSkqTFldfSxnZW9DaXJjbGU6ZnVuY3Rpb24gQ2Z0KCl7dmFyIHQsZSxuPWYkKFswLDBdKSxpPWYkKDkwKSxyPWYkKDYpLG89e3BvaW50OmZ1bmN0aW9uIGEobixpKXt0LnB1c2gobj1lKG4saSkpLG5bMF0qPUxZLG5bMV0qPUxZfX07ZnVuY3Rpb24gcygpe3ZhciBhPW4uYXBwbHkodGhpcyxhcmd1bWVudHMpLHM9aS5hcHBseSh0aGlzLGFyZ3VtZW50cykqUFksbD1yLmFwcGx5KHRoaXMsYXJndW1lbnRzKSpQWTtyZXR1cm4gdD1bXSxlPV8kKC1hWzBdKlBZLC1hWzFdKlBZLDApLmludmVydCx3JChvLHMsbCwxKSxhPXt0eXBlOiJQb2x5Z29uIixjb29yZGluYXRlczpbdF19LHQ9ZT1udWxsLGF9cmV0dXJuIHMuY2VudGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6ZiQoWyt0WzBdLCt0WzFdXSkscyk6bn0scy5yYWRpdXM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpmJCgrdCkscyk6aX0scy5wcmVjaXNpb249ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpmJCgrdCkscyk6cn0sc30sZ2VvQ2xpcEFudGltZXJpZGlhbjpCJCxnZW9DbGlwQ2lyY2xlOlYkLGdlb0NsaXBFeHRlbnQ6ZnVuY3Rpb24gQWZ0KCl7dmFyIHQsZSxuLGk9MCxyPTAsbz05NjAsYT01MDA7cmV0dXJuIG49e3N0cmVhbTpmdW5jdGlvbihuKXtyZXR1cm4gdCYmZT09PW4/dDp0PUckKGkscixvLGEpKGU9bil9LGV4dGVudDpmdW5jdGlvbihzKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0rc1swXVswXSxyPStzWzBdWzFdLG89K3NbMV1bMF0sYT0rc1sxXVsxXSx0PWU9bnVsbCxuKTpbW2kscl0sW28sYV1dfX19LGdlb0NsaXBSZWN0YW5nbGU6RyQsZ2VvQ29udGFpbnM6ZnVuY3Rpb24ga2Z0KHQsZSl7cmV0dXJuKHQmJnJLLmhhc093blByb3BlcnR5KHQudHlwZSk/cktbdC50eXBlXTphSykodCxlKX0sZ2VvRGlzdGFuY2U6aUssZ2VvR3JhdGljdWxlOmZLLGdlb0dyYXRpY3VsZTEwOmZ1bmN0aW9uIExmdCgpe3JldHVybiBmSygpKCl9LGdlb0ludGVycG9sYXRlOmZ1bmN0aW9uIFBmdCh0LGUpe3ZhciBuPXRbMF0qUFksaT10WzFdKlBZLHI9ZVswXSpQWSxvPWVbMV0qUFksYT1PWShpKSxzPUZZKGkpLGw9T1kobyksYz1GWShvKSx1PWEqT1kobiksaD1hKkZZKG4pLGQ9bCpPWShyKSxwPWwqRlkociksZj0yKldZKFVZKHFZKG8taSkrYSpsKnFZKHItbikpKSxtPUZZKGYpLGc9Zj9mdW5jdGlvbih0KXt2YXIgZT1GWSh0Kj1mKS9tLG49RlkoZi10KS9tLGk9bip1K2UqZCxyPW4qaCtlKnAsbz1uKnMrZSpjO3JldHVybltSWShyLGkpKkxZLFJZKG8sVVkoaSppK3IqcikpKkxZXX06ZnVuY3Rpb24oKXtyZXR1cm5bbipMWSxpKkxZXX07cmV0dXJuIGcuZGlzdGFuY2U9ZixnfSxnZW9MZW5ndGg6dEssZ2VvUGF0aDpmdW5jdGlvbiBOZnQodCxlKXt2YXIgbixpLHI9NC41O2Z1bmN0aW9uIG8odCl7cmV0dXJuIHQmJigiZnVuY3Rpb24iPT10eXBlb2YgciYmaS5wb2ludFJhZGl1cygrci5hcHBseSh0aGlzLGFyZ3VtZW50cykpLFFZKHQsbihpKSkpLGkucmVzdWx0KCl9cmV0dXJuIG8uYXJlYT1mdW5jdGlvbih0KXtyZXR1cm4gUVkodCxuKHdLKSksd0sucmVzdWx0KCl9LG8ubWVhc3VyZT1mdW5jdGlvbih0KXtyZXR1cm4gUVkodCxuKGNaKSksY1oucmVzdWx0KCl9LG8uYm91bmRzPWZ1bmN0aW9uKHQpe3JldHVybiBRWSh0LG4oUEspKSxQSy5yZXN1bHQoKX0sby5jZW50cm9pZD1mdW5jdGlvbih0KXtyZXR1cm4gUVkodCxuKHFLKSkscUsucmVzdWx0KCl9LG8ucHJvamVjdGlvbj1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1udWxsPT1lPyh0PW51bGwsbUspOih0PWUpLnN0cmVhbSxvKTp0fSxvLmNvbnRleHQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9bnVsbD09dD8oZT1udWxsLG5ldyBkWik6bmV3IG5aKGU9dCksImZ1bmN0aW9uIiE9dHlwZW9mIHImJmkucG9pbnRSYWRpdXMociksbyk6ZX0sby5wb2ludFJhZGl1cz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OihpLnBvaW50UmFkaXVzKCt0KSwrdCksbyk6cn0sby5wcm9qZWN0aW9uKHQpLmNvbnRleHQoZSl9LGdlb0FsYmVyczprWixnZW9BbGJlcnNVc2E6ZnVuY3Rpb24gSWZ0KCl7dmFyIHQsZSxuLGkscixvLGE9a1ooKSxzPUFaKCkucm90YXRlKFsxNTQsMF0pLmNlbnRlcihbLTIsNTguNV0pLnBhcmFsbGVscyhbNTUsNjVdKSxsPUFaKCkucm90YXRlKFsxNTcsMF0pLmNlbnRlcihbLTMsMTkuOV0pLnBhcmFsbGVscyhbOCwxOF0pLGM9e3BvaW50OmZ1bmN0aW9uKHQsZSl7bz1bdCxlXX19O2Z1bmN0aW9uIHUodCl7dmFyIGU9dFswXSxhPXRbMV07cmV0dXJuIG89bnVsbCxuLnBvaW50KGUsYSksb3x8KGkucG9pbnQoZSxhKSxvKXx8KHIucG9pbnQoZSxhKSxvKX1mdW5jdGlvbiBoKCl7cmV0dXJuIHQ9ZT1udWxsLHV9cmV0dXJuIHUuaW52ZXJ0PWZ1bmN0aW9uKHQpe3ZhciBlPWEuc2NhbGUoKSxuPWEudHJhbnNsYXRlKCksaT0odFswXS1uWzBdKS9lLHI9KHRbMV0tblsxXSkvZTtyZXR1cm4ocj49LjEyJiZyPC4yMzQmJmk+PS0uNDI1JiZpPC0uMjE0P3M6cj49LjE2NiYmcjwuMjM0JiZpPj0tLjIxNCYmaTwtLjExNT9sOmEpLmludmVydCh0KX0sdS5zdHJlYW09ZnVuY3Rpb24obil7cmV0dXJuIHQmJmU9PT1uP3Q6dD0oZnVuY3Rpb24gaSh0KXt2YXIgZT10Lmxlbmd0aDtyZXR1cm57cG9pbnQ6ZnVuY3Rpb24obixpKXtmb3IodmFyIHI9LTE7KytyPGU7KXRbcl0ucG9pbnQobixpKX0sc3BoZXJlOmZ1bmN0aW9uKCl7Zm9yKHZhciBuPS0xOysrbjxlOyl0W25dLnNwaGVyZSgpfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXtmb3IodmFyIG49LTE7KytuPGU7KXRbbl0ubGluZVN0YXJ0KCl9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtmb3IodmFyIG49LTE7KytuPGU7KXRbbl0ubGluZUVuZCgpfSxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXtmb3IodmFyIG49LTE7KytuPGU7KXRbbl0ucG9seWdvblN0YXJ0KCl9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtmb3IodmFyIG49LTE7KytuPGU7KXRbbl0ucG9seWdvbkVuZCgpfX19KShbYS5zdHJlYW0oZT1uKSxzLnN0cmVhbShuKSxsLnN0cmVhbShuKV0pfSx1LnByZWNpc2lvbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYS5wcmVjaXNpb24odCkscy5wcmVjaXNpb24odCksbC5wcmVjaXNpb24odCksaCgpKTphLnByZWNpc2lvbigpfSx1LnNjYWxlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhLnNjYWxlKHQpLHMuc2NhbGUoLjM1KnQpLGwuc2NhbGUodCksdS50cmFuc2xhdGUoYS50cmFuc2xhdGUoKSkpOmEuc2NhbGUoKX0sdS50cmFuc2xhdGU9ZnVuY3Rpb24odCl7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGEudHJhbnNsYXRlKCk7dmFyIGU9YS5zY2FsZSgpLG89K3RbMF0sdT0rdFsxXTtyZXR1cm4gbj1hLnRyYW5zbGF0ZSh0KS5jbGlwRXh0ZW50KFtbby0uNDU1KmUsdS0uMjM4KmVdLFtvKy40NTUqZSx1Ky4yMzgqZV1dKS5zdHJlYW0oYyksaT1zLnRyYW5zbGF0ZShbby0uMzA3KmUsdSsuMjAxKmVdKS5jbGlwRXh0ZW50KFtbby0uNDI1KmUrRVksdSsuMTIqZStFWV0sW28tLjIxNCplLUVZLHUrLjIzNCplLUVZXV0pLnN0cmVhbShjKSxyPWwudHJhbnNsYXRlKFtvLS4yMDUqZSx1Ky4yMTIqZV0pLmNsaXBFeHRlbnQoW1tvLS4yMTQqZStFWSx1Ky4xNjYqZStFWV0sW28tLjExNSplLUVZLHUrLjIzNCplLUVZXV0pLnN0cmVhbShjKSxoKCl9LHUuZml0RXh0ZW50PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIF9aKHUsdCxlKX0sdS5maXRTaXplPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHlaKHUsdCxlKX0sdS5maXRXaWR0aD1mdW5jdGlvbih0LGUpe3JldHVybiB2Wih1LHQsZSl9LHUuZml0SGVpZ2h0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGJaKHUsdCxlKX0sdS5zY2FsZSgxMDcwKX0sZ2VvQXppbXV0aGFsRXF1YWxBcmVhOmZ1bmN0aW9uIFJmdCgpe3JldHVybiBNWihOWikuc2NhbGUoMTI0Ljc1KS5jbGlwQW5nbGUoMTc5Ljk5OSl9LGdlb0F6aW11dGhhbEVxdWFsQXJlYVJhdzpOWixnZW9BemltdXRoYWxFcXVpZGlzdGFudDpmdW5jdGlvbiBPZnQoKXtyZXR1cm4gTVooSVopLnNjYWxlKDc5LjQxODgpLmNsaXBBbmdsZSgxNzkuOTk5KX0sZ2VvQXppbXV0aGFsRXF1aWRpc3RhbnRSYXc6SVosZ2VvQ29uaWNDb25mb3JtYWw6ZnVuY3Rpb24gemZ0KCl7cmV0dXJuIFRaKERaKS5zY2FsZSgxMDkuNSkucGFyYWxsZWxzKFszMCwzMF0pfSxnZW9Db25pY0NvbmZvcm1hbFJhdzpEWixnZW9Db25pY0VxdWFsQXJlYTpBWixnZW9Db25pY0VxdWFsQXJlYVJhdzpDWixnZW9Db25pY0VxdWlkaXN0YW50OmZ1bmN0aW9uIERmdCgpe3JldHVybiBUWihIWikuc2NhbGUoMTMxLjE1NCkuY2VudGVyKFswLDEzLjkzODldKX0sZ2VvQ29uaWNFcXVpZGlzdGFudFJhdzpIWixnZW9FcXVpcmVjdGFuZ3VsYXI6ZnVuY3Rpb24gQmZ0KCl7cmV0dXJuIE1aKEJaKS5zY2FsZSgxNTIuNjMpfSxnZW9FcXVpcmVjdGFuZ3VsYXJSYXc6QlosZ2VvR25vbW9uaWM6ZnVuY3Rpb24gSGZ0KCl7cmV0dXJuIE1aKEZaKS5zY2FsZSgxNDQuMDQ5KS5jbGlwQW5nbGUoNjApfSxnZW9Hbm9tb25pY1JhdzpGWixnZW9JZGVudGl0eTpmdW5jdGlvbiBGZnQoKXt2YXIgdCxlLG4saSxyLG8sYT0xLHM9MCxsPTAsYz0xLHU9MSxoPW1LLGQ9bnVsbCxwPW1LO2Z1bmN0aW9uIGYoKXtyZXR1cm4gaT1yPW51bGwsb31yZXR1cm4gbz17c3RyZWFtOmZ1bmN0aW9uKHQpe3JldHVybiBpJiZyPT09dD9pOmk9aChwKHI9dCkpfSxwb3N0Y2xpcDpmdW5jdGlvbihpKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocD1pLGQ9dD1lPW49bnVsbCxmKCkpOnB9LGNsaXBFeHRlbnQ6ZnVuY3Rpb24oaSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHA9bnVsbD09aT8oZD10PWU9bj1udWxsLG1LKTpHJChkPStpWzBdWzBdLHQ9K2lbMF1bMV0sZT0raVsxXVswXSxuPStpWzFdWzFdKSxmKCkpOm51bGw9PWQ/bnVsbDpbW2QsdF0sW2Usbl1dfSxzY2FsZTpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD1WWigoYT0rdCkqYyxhKnUscyxsKSxmKCkpOmF9LHRyYW5zbGF0ZTpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD1WWihhKmMsYSp1LHM9K3RbMF0sbD0rdFsxXSksZigpKTpbcyxsXX0scmVmbGVjdFg6ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGg9VlooYSooYz10Py0xOjEpLGEqdSxzLGwpLGYoKSk6YzwwfSxyZWZsZWN0WTpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD1WWihhKmMsYSoodT10Py0xOjEpLHMsbCksZigpKTp1PDB9LGZpdEV4dGVudDpmdW5jdGlvbih0LGUpe3JldHVybiBfWihvLHQsZSl9LGZpdFNpemU6ZnVuY3Rpb24odCxlKXtyZXR1cm4geVoobyx0LGUpfSxmaXRXaWR0aDpmdW5jdGlvbih0LGUpe3JldHVybiB2WihvLHQsZSl9LGZpdEhlaWdodDpmdW5jdGlvbih0LGUpe3JldHVybiBiWihvLHQsZSl9fX0sZ2VvUHJvamVjdGlvbjpNWixnZW9Qcm9qZWN0aW9uTXV0YXRvcjpFWixnZW9NZXJjYXRvcjpmdW5jdGlvbiBWZnQoKXtyZXR1cm4gT1ooUlopLnNjYWxlKDk2MS9rWSl9LGdlb01lcmNhdG9yUmF3OlJaLGdlb05hdHVyYWxFYXJ0aDE6ZnVuY3Rpb24gVWZ0KCl7cmV0dXJuIE1aKFVaKS5zY2FsZSgxNzUuMjk1KX0sZ2VvTmF0dXJhbEVhcnRoMVJhdzpVWixnZW9PcnRob2dyYXBoaWM6ZnVuY3Rpb24gamZ0KCl7cmV0dXJuIE1aKGpaKS5zY2FsZSgyNDkuNSkuY2xpcEFuZ2xlKDkwLjAwMDAwMSl9LGdlb09ydGhvZ3JhcGhpY1JhdzpqWixnZW9TdGVyZW9ncmFwaGljOmZ1bmN0aW9uIEdmdCgpe3JldHVybiBNWihHWikuc2NhbGUoMjUwKS5jbGlwQW5nbGUoMTQyKX0sZ2VvU3RlcmVvZ3JhcGhpY1JhdzpHWixnZW9UcmFuc3ZlcnNlTWVyY2F0b3I6ZnVuY3Rpb24gV2Z0KCl7dmFyIHQ9T1ooV1opLGU9dC5jZW50ZXIsbj10LnJvdGF0ZTtyZXR1cm4gdC5jZW50ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/ZShbLXRbMV0sdFswXV0pOlsodD1lKCkpWzFdLC10WzBdXX0sdC5yb3RhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/bihbdFswXSx0WzFdLHQubGVuZ3RoPjI/dFsyXSs5MDo5MF0pOlsodD1uKCkpWzBdLHRbMV0sdFsyXS05MF19LG4oWzAsMCw5MF0pLnNjYWxlKDE1OS4xNTUpfSxnZW9UcmFuc3ZlcnNlTWVyY2F0b3JSYXc6V1osZ2VvUm90YXRpb246eCQsZ2VvU3RyZWFtOlFZLGdlb1RyYW5zZm9ybTpmdW5jdGlvbiBxZnQodCl7cmV0dXJue3N0cmVhbTpmWih0KX19LGNsdXN0ZXI6ZnVuY3Rpb24gWWZ0KCl7dmFyIHQ9cVosZT0xLG49MSxpPSExO2Z1bmN0aW9uIHIocil7dmFyIG8sYT0wO3IuZWFjaEFmdGVyKChmdW5jdGlvbihlKXt2YXIgbj1lLmNoaWxkcmVuO24/KGUueD0oZnVuY3Rpb24gaSh0KXtyZXR1cm4gdC5yZWR1Y2UoWVosMCkvdC5sZW5ndGh9KShuKSxlLnk9KGZ1bmN0aW9uIHIodCl7cmV0dXJuIDErdC5yZWR1Y2UoWFosMCl9KShuKSk6KGUueD1vP2ErPXQoZSxvKTowLGUueT0wLG89ZSl9KSk7dmFyIHM9KGZ1bmN0aW9uIGwodCl7Zm9yKHZhciBlO2U9dC5jaGlsZHJlbjspdD1lWzBdO3JldHVybiB0fSkociksYz0oZnVuY3Rpb24gdSh0KXtmb3IodmFyIGU7ZT10LmNoaWxkcmVuOyl0PWVbZS5sZW5ndGgtMV07cmV0dXJuIHR9KShyKSxoPXMueC10KHMsYykvMixkPWMueCt0KGMscykvMjtyZXR1cm4gci5lYWNoQWZ0ZXIoaT9mdW5jdGlvbih0KXt0Lng9KHQueC1yLngpKmUsdC55PShyLnktdC55KSpufTpmdW5jdGlvbih0KXt0Lng9KHQueC1oKS8oZC1oKSplLHQueT0oMS0oci55P3QueS9yLnk6MSkpKm59KX1yZXR1cm4gci5zZXBhcmF0aW9uPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PWUscik6dH0sci5zaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSExLGU9K3RbMF0sbj0rdFsxXSxyKTppP251bGw6W2Usbl19LHIubm9kZVNpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ITAsZT0rdFswXSxuPSt0WzFdLHIpOmk/W2Usbl06bnVsbH0scn0saGllcmFyY2h5OktaLHBhY2s6ZnVuY3Rpb24gWGZ0KCl7dmFyIHQ9bnVsbCxlPTEsbj0xLGk9a0o7ZnVuY3Rpb24gcihyKXtyZXR1cm4gci54PWUvMixyLnk9bi8yLHQ/ci5lYWNoQmVmb3JlKE5KKHQpKS5lYWNoQWZ0ZXIoSUooaSwuNSkpLmVhY2hCZWZvcmUoUkooMSkpOnIuZWFjaEJlZm9yZShOSihQSikpLmVhY2hBZnRlcihJSihrSiwxKSkuZWFjaEFmdGVyKElKKGksci5yL01hdGgubWluKGUsbikpKS5lYWNoQmVmb3JlKFJKKE1hdGgubWluKGUsbikvKDIqci5yKSkpLHJ9cmV0dXJuIHIucmFkaXVzPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PUNKKGUpLHIpOnR9LHIuc2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT0rdFswXSxuPSt0WzFdLHIpOltlLG5dfSxyLnBhZGRpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpMSigrdCkscik6aX0scn0scGFja1NpYmxpbmdzOmZ1bmN0aW9uICRmdCh0KXtyZXR1cm4gVEoodCksdH0scGFja0VuY2xvc2U6ZkoscGFydGl0aW9uOmZ1bmN0aW9uIEtmdCgpe3ZhciB0PTEsZT0xLG49MCxpPSExO2Z1bmN0aW9uIHIocil7dmFyIG89ci5oZWlnaHQrMTtyZXR1cm4gci54MD1yLnkwPW4sci54MT10LHIueTE9ZS9vLHIuZWFjaEJlZm9yZSgoZnVuY3Rpb24gYSh0LGUpe3JldHVybiBmdW5jdGlvbihpKXtpLmNoaWxkcmVuJiZ6SihpLGkueDAsdCooaS5kZXB0aCsxKS9lLGkueDEsdCooaS5kZXB0aCsyKS9lKTt2YXIgcj1pLngwLG89aS55MCxhPWkueDEtbixzPWkueTEtbjthPHImJihyPWE9KHIrYSkvMiksczxvJiYobz1zPShvK3MpLzIpLGkueDA9cixpLnkwPW8saS54MT1hLGkueTE9c319KShlLG8pKSxpJiZyLmVhY2hCZWZvcmUoT0opLHJ9cmV0dXJuIHIucm91bmQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ISF0LHIpOml9LHIuc2l6ZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0rblswXSxlPStuWzFdLHIpOlt0LGVdfSxyLnBhZGRpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49K3Qscik6bn0scn0sc3RyYXRpZnk6ZnVuY3Rpb24gWmZ0KCl7dmFyIHQ9SEosZT1GSjtmdW5jdGlvbiBuKG4pe3ZhciBpLHIsbyxhLHMsbCxjLHU9bi5sZW5ndGgsaD1uZXcgQXJyYXkodSksZD17fTtmb3Iocj0wO3I8dTsrK3Ipcz1oW3JdPW5ldyB0SihpPW5bcl0pLG51bGwhPShsPXQoaSxyLG4pKSYmKGwrPSIiKSYmKGRbYz0iJCIrKHMuaWQ9bCldPWMgaW4gZD9CSjpzKTtmb3Iocj0wO3I8dTsrK3IpaWYocz1oW3JdLG51bGwhPShsPWUobltyXSxyLG4pKSYmKGwrPSIiKSl7aWYoIShhPWRbIiQiK2xdKSl0aHJvdyBuZXcgRXJyb3IoIm1pc3Npbmc6ICIrbCk7aWYoYT09PUJKKXRocm93IG5ldyBFcnJvcigiYW1iaWd1b3VzOiAiK2wpO2EuY2hpbGRyZW4/YS5jaGlsZHJlbi5wdXNoKHMpOmEuY2hpbGRyZW49W3NdLHMucGFyZW50PWF9ZWxzZXtpZihvKXRocm93IG5ldyBFcnJvcigibXVsdGlwbGUgcm9vdHMiKTtvPXN9aWYoIW8pdGhyb3cgbmV3IEVycm9yKCJubyByb290Iik7aWYoby5wYXJlbnQ9REosby5lYWNoQmVmb3JlKChmdW5jdGlvbih0KXt0LmRlcHRoPXQucGFyZW50LmRlcHRoKzEsLS11fSkpLmVhY2hCZWZvcmUoUVopLG8ucGFyZW50PW51bGwsdT4wKXRocm93IG5ldyBFcnJvcigiY3ljbGUiKTtyZXR1cm4gb31yZXR1cm4gbi5pZD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1BSihlKSxuKTp0fSxuLnBhcmVudElkPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPUFKKHQpLG4pOmV9LG59LHRyZWU6ZnVuY3Rpb24gSmZ0KCl7dmFyIHQ9VkosZT0xLG49MSxpPW51bGw7ZnVuY3Rpb24gcihyKXt2YXIgbD0oZnVuY3Rpb24gYyh0KXtmb3IodmFyIGUsbixpLHIsbyxhPW5ldyBxSih0LDApLHM9W2FdO2U9cy5wb3AoKTspaWYoaT1lLl8uY2hpbGRyZW4pZm9yKGUuY2hpbGRyZW49bmV3IEFycmF5KG89aS5sZW5ndGgpLHI9by0xO3I+PTA7LS1yKXMucHVzaChuPWUuY2hpbGRyZW5bcl09bmV3IHFKKGlbcl0scikpLG4ucGFyZW50PWU7cmV0dXJuKGEucGFyZW50PW5ldyBxSihudWxsLDApKS5jaGlsZHJlbj1bYV0sYX0pKHIpO2lmKGwuZWFjaEFmdGVyKG8pLGwucGFyZW50Lm09LWwueixsLmVhY2hCZWZvcmUoYSksaSlyLmVhY2hCZWZvcmUocyk7ZWxzZXt2YXIgdT1yLGg9cixkPXI7ci5lYWNoQmVmb3JlKChmdW5jdGlvbih0KXt0Lng8dS54JiYodT10KSx0Lng+aC54JiYoaD10KSx0LmRlcHRoPmQuZGVwdGgmJihkPXQpfSkpO3ZhciBwPXU9PT1oPzE6dCh1LGgpLzIsZj1wLXUueCxtPWUvKGgueCtwK2YpLGc9bi8oZC5kZXB0aHx8MSk7ci5lYWNoQmVmb3JlKChmdW5jdGlvbih0KXt0Lng9KHQueCtmKSptLHQueT10LmRlcHRoKmd9KSl9cmV0dXJuIHJ9ZnVuY3Rpb24gbyhlKXt2YXIgbj1lLmNoaWxkcmVuLGk9ZS5wYXJlbnQuY2hpbGRyZW4scj1lLmk/aVtlLmktMV06bnVsbDtpZihuKXshKGZ1bmN0aW9uIG8odCl7Zm9yKHZhciBlLG49MCxpPTAscj10LmNoaWxkcmVuLG89ci5sZW5ndGg7LS1vPj0wOykoZT1yW29dKS56Kz1uLGUubSs9bixuKz1lLnMrKGkrPWUuYyl9KShlKTt2YXIgYT0oblswXS56K25bbi5sZW5ndGgtMV0ueikvMjtyPyhlLno9ci56K3QoZS5fLHIuXyksZS5tPWUuei1hKTplLno9YX1lbHNlIHImJihlLno9ci56K3QoZS5fLHIuXykpO2UucGFyZW50LkE9KGZ1bmN0aW9uIHMoZSxuLGkpe2lmKG4pe2Zvcih2YXIgcixvPWUsYT1lLHM9bixsPW8ucGFyZW50LmNoaWxkcmVuWzBdLGM9by5tLHU9YS5tLGg9cy5tLGQ9bC5tO3M9akoocyksbz1VSihvKSxzJiZvOylsPVVKKGwpLChhPWpKKGEpKS5hPWUsKHI9cy56K2gtby56LWMrdChzLl8sby5fKSk+MCYmKEdKKFdKKHMsZSxpKSxlLHIpLGMrPXIsdSs9ciksaCs9cy5tLGMrPW8ubSxkKz1sLm0sdSs9YS5tO3MmJiFqSihhKSYmKGEudD1zLGEubSs9aC11KSxvJiYhVUoobCkmJihsLnQ9byxsLm0rPWMtZCxpPWUpfXJldHVybiBpfSkoZSxyLGUucGFyZW50LkF8fGlbMF0pfWZ1bmN0aW9uIGEodCl7dC5fLng9dC56K3QucGFyZW50Lm0sdC5tKz10LnBhcmVudC5tfWZ1bmN0aW9uIHModCl7dC54Kj1lLHQueT10LmRlcHRoKm59cmV0dXJuIHIuc2VwYXJhdGlvbj1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1lLHIpOnR9LHIuc2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0hMSxlPSt0WzBdLG49K3RbMV0scik6aT9udWxsOltlLG5dfSxyLm5vZGVTaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSEwLGU9K3RbMF0sbj0rdFsxXSxyKTppP1tlLG5dOm51bGx9LHJ9LHRyZWVtYXA6ZnVuY3Rpb24gUWZ0KCl7dmFyIHQ9S0osZT0hMSxuPTEsaT0xLHI9WzBdLG89a0osYT1rSixzPWtKLGw9a0osYz1rSjtmdW5jdGlvbiB1KHQpe3JldHVybiB0LngwPXQueTA9MCx0LngxPW4sdC55MT1pLHQuZWFjaEJlZm9yZShoKSxyPVswXSxlJiZ0LmVhY2hCZWZvcmUoT0opLHR9ZnVuY3Rpb24gaChlKXt2YXIgbj1yW2UuZGVwdGhdLGk9ZS54MCtuLHU9ZS55MCtuLGg9ZS54MS1uLGQ9ZS55MS1uO2g8aSYmKGk9aD0oaStoKS8yKSxkPHUmJih1PWQ9KHUrZCkvMiksZS54MD1pLGUueTA9dSxlLngxPWgsZS55MT1kLGUuY2hpbGRyZW4mJihuPXJbZS5kZXB0aCsxXT1vKGUpLzIsaSs9YyhlKS1uLHUrPWEoZSktbiwoaC09cyhlKS1uKTxpJiYoaT1oPShpK2gpLzIpLChkLT1sKGUpLW4pPHUmJih1PWQ9KHUrZCkvMiksdChlLGksdSxoLGQpKX1yZXR1cm4gdS5yb3VuZD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT0hIXQsdSk6ZX0sdS5zaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSt0WzBdLGk9K3RbMV0sdSk6W24saV19LHUudGlsZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1BSihlKSx1KTp0fSx1LnBhZGRpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dS5wYWRkaW5nSW5uZXIodCkucGFkZGluZ091dGVyKHQpOnUucGFkZGluZ0lubmVyKCl9LHUucGFkZGluZ0lubmVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6TEooK3QpLHUpOm99LHUucGFkZGluZ091dGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3UucGFkZGluZ1RvcCh0KS5wYWRkaW5nUmlnaHQodCkucGFkZGluZ0JvdHRvbSh0KS5wYWRkaW5nTGVmdCh0KTp1LnBhZGRpbmdUb3AoKX0sdS5wYWRkaW5nVG9wPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6TEooK3QpLHUpOmF9LHUucGFkZGluZ1JpZ2h0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6TEooK3QpLHUpOnN9LHUucGFkZGluZ0JvdHRvbT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obD0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkxKKCt0KSx1KTpsfSx1LnBhZGRpbmdMZWZ0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6TEooK3QpLHUpOmN9LHV9LHRyZWVtYXBCaW5hcnk6ZnVuY3Rpb24gdG10KHQsZSxuLGkscil7dmFyIG8sYSxzPXQuY2hpbGRyZW4sbD1zLmxlbmd0aCxjPW5ldyBBcnJheShsKzEpO2ZvcihjWzBdPWE9bz0wO288bDsrK28pY1tvKzFdPWErPXNbb10udmFsdWU7IShmdW5jdGlvbiB0KGUsbixpLHIsbyxhLGwpe2lmKGU+PW4tMSl7dmFyIHU9c1tlXTtyZXR1cm4gdS54MD1yLHUueTA9byx1LngxPWEsdm9pZCh1LnkxPWwpfXZhciBoPWNbZV0sZD1pLzIraCxwPWUrMSxmPW4tMTtmb3IoO3A8Zjspe3ZhciBtPXArZj4+PjE7Y1ttXTxkP3A9bSsxOmY9bX1kLWNbcC0xXTxjW3BdLWQmJmUrMTxwJiYtLXA7dmFyIGc9Y1twXS1oLF89aS1nO2lmKGEtcj5sLW8pe3ZhciB5PShyKl8rYSpnKS9pO3QoZSxwLGcscixvLHksbCksdChwLG4sXyx5LG8sYSxsKX1lbHNle3ZhciB2PShvKl8rbCpnKS9pO3QoZSxwLGcscixvLGEsdiksdChwLG4sXyxyLHYsYSxsKX19KSgwLGwsdC52YWx1ZSxlLG4saSxyKX0sdHJlZW1hcERpY2U6ekosdHJlZW1hcFNsaWNlOllKLHRyZWVtYXBTbGljZURpY2U6ZnVuY3Rpb24gZW10KHQsZSxuLGkscil7KDEmdC5kZXB0aD9ZSjp6SikodCxlLG4saSxyKX0sdHJlZW1hcFNxdWFyaWZ5OktKLHRyZWVtYXBSZXNxdWFyaWZ5OlpKLGludGVycG9sYXRlOkUxLGludGVycG9sYXRlQXJyYXk6eTEsaW50ZXJwb2xhdGVCYXNpczpzMSxpbnRlcnBvbGF0ZUJhc2lzQ2xvc2VkOmwxLGludGVycG9sYXRlRGF0ZTp2MSxpbnRlcnBvbGF0ZU51bWJlcjpiMSxpbnRlcnBvbGF0ZU9iamVjdDp4MSxpbnRlcnBvbGF0ZVJvdW5kOmZ1bmN0aW9uIG5tdCh0LGUpe3JldHVybiBlLT10PSt0LGZ1bmN0aW9uKG4pe3JldHVybiBNYXRoLnJvdW5kKHQrZSpuKX19LGludGVycG9sYXRlU3RyaW5nOk0xLGludGVycG9sYXRlVHJhbnNmb3JtQ3NzOlIxLGludGVycG9sYXRlVHJhbnNmb3JtU3ZnOnoxLGludGVycG9sYXRlWm9vbTpmdW5jdGlvbiBpbXQodCxlKXt2YXIgbixpLHI9dFswXSxvPXRbMV0sYT10WzJdLHM9ZVsyXSxsPWVbMF0tcixjPWVbMV0tbyx1PWwqbCtjKmM7aWYodTwxZS0xMilpPU1hdGgubG9nKHMvYSkvQjEsbj1mdW5jdGlvbih0KXtyZXR1cm5bcit0Kmwsbyt0KmMsYSpNYXRoLmV4cChCMSp0KmkpXX07ZWxzZXt2YXIgaD1NYXRoLnNxcnQodSksZD0ocypzLWEqYSs0KnUpLygyKmEqMipoKSxwPShzKnMtYSphLTQqdSkvKDIqcyoyKmgpLGY9TWF0aC5sb2coTWF0aC5zcXJ0KGQqZCsxKS1kKSxtPU1hdGgubG9nKE1hdGguc3FydChwKnArMSktcCk7aT0obS1mKS9CMSxuPWZ1bmN0aW9uKHQpe3ZhciBlPXQqaSxuPUgxKGYpLHM9YS8oMipoKSoobiooZnVuY3Rpb24gdSh0KXtyZXR1cm4oKHQ9TWF0aC5leHAoMip0KSktMSkvKHQrMSl9KShCMSplK2YpLShmdW5jdGlvbiBkKHQpe3JldHVybigodD1NYXRoLmV4cCh0KSktMS90KS8yfSkoZikpO3JldHVybltyK3MqbCxvK3MqYyxhKm4vSDEoQjEqZStmKV19fXJldHVybiBuLmR1cmF0aW9uPTFlMyppLG59LGludGVycG9sYXRlUmdiOmYxLGludGVycG9sYXRlUmdiQmFzaXM6ZzEsaW50ZXJwb2xhdGVSZ2JCYXNpc0Nsb3NlZDpfMSxpbnRlcnBvbGF0ZUhzbDpWMSxpbnRlcnBvbGF0ZUhzbExvbmc6VTEsaW50ZXJwb2xhdGVMYWI6ZnVuY3Rpb24gcm10KHQsZSl7dmFyIG49cDEoKHQ9SFEodCkpLmwsKGU9SFEoZSkpLmwpLGk9cDEodC5hLGUuYSkscj1wMSh0LmIsZS5iKSxvPXAxKHQub3BhY2l0eSxlLm9wYWNpdHkpO3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gdC5sPW4oZSksdC5hPWkoZSksdC5iPXIoZSksdC5vcGFjaXR5PW8oZSksdCsiIn19LGludGVycG9sYXRlSGNsOkcxLGludGVycG9sYXRlSGNsTG9uZzpXMSxpbnRlcnBvbGF0ZUN1YmVoZWxpeDpZMSxpbnRlcnBvbGF0ZUN1YmVoZWxpeExvbmc6WDEscXVhbnRpemU6ZnVuY3Rpb24gb210KHQsZSl7Zm9yKHZhciBuPW5ldyBBcnJheShlKSxpPTA7aTxlOysraSluW2ldPXQoaS8oZS0xKSk7cmV0dXJuIG59LHBhdGg6dDAscG9seWdvbkFyZWE6ZnVuY3Rpb24gYW10KHQpe2Zvcih2YXIgZSxuPS0xLGk9dC5sZW5ndGgscj10W2ktMV0sbz0wOysrbjxpOylvKz0oZT1yKVsxXSoocj10W25dKVswXS1lWzBdKnJbMV07cmV0dXJuIG8vMn0scG9seWdvbkNlbnRyb2lkOmZ1bmN0aW9uIHNtdCh0KXtmb3IodmFyIGUsbixpPS0xLHI9dC5sZW5ndGgsbz0wLGE9MCxzPXRbci0xXSxsPTA7KytpPHI7KWwrPW49KGU9cylbMF0qKHM9dFtpXSlbMV0tc1swXSplWzFdLG8rPShlWzBdK3NbMF0pKm4sYSs9KGVbMV0rc1sxXSkqbjtyZXR1cm5bby8obCo9MyksYS9sXX0scG9seWdvbkh1bGw6ZnVuY3Rpb24gbG10KHQpe2lmKChuPXQubGVuZ3RoKTwzKXJldHVybiBudWxsO3ZhciBlLG4saT1uZXcgQXJyYXkobikscj1uZXcgQXJyYXkobik7Zm9yKGU9MDtlPG47KytlKWlbZV09Wyt0W2VdWzBdLCt0W2VdWzFdLGVdO2ZvcihpLnNvcnQobjApLGU9MDtlPG47KytlKXJbZV09W2lbZV1bMF0sLWlbZV1bMV1dO3ZhciBvPWkwKGkpLGE9aTAocikscz1hWzBdPT09b1swXSxsPWFbYS5sZW5ndGgtMV09PT1vW28ubGVuZ3RoLTFdLGM9W107Zm9yKGU9by5sZW5ndGgtMTtlPj0wOy0tZSljLnB1c2godFtpW29bZV1dWzJdXSk7Zm9yKGU9K3M7ZTxhLmxlbmd0aC1sOysrZSljLnB1c2godFtpW2FbZV1dWzJdXSk7cmV0dXJuIGN9LHBvbHlnb25Db250YWluczpmdW5jdGlvbiBjbXQodCxlKXtmb3IodmFyIG4saSxyPXQubGVuZ3RoLG89dFtyLTFdLGE9ZVswXSxzPWVbMV0sbD1vWzBdLGM9b1sxXSx1PSExLGg9MDtoPHI7KytoKW49KG89dFtoXSlbMF0sKGk9b1sxXSk+cyE9Yz5zJiZhPChsLW4pKihzLWkpLyhjLWkpK24mJih1PSF1KSxsPW4sYz1pO3JldHVybiB1fSxwb2x5Z29uTGVuZ3RoOmZ1bmN0aW9uIHVtdCh0KXtmb3IodmFyIGUsbixpPS0xLHI9dC5sZW5ndGgsbz10W3ItMV0sYT1vWzBdLHM9b1sxXSxsPTA7KytpPHI7KWU9YSxuPXMsZS09YT0obz10W2ldKVswXSxuLT1zPW9bMV0sbCs9TWF0aC5zcXJ0KGUqZStuKm4pO3JldHVybiBsfSxxdWFkdHJlZTpsMCxxdWV1ZTpJMCxyYW5kb21Vbmlmb3JtOk8wLHJhbmRvbU5vcm1hbDp6MCxyYW5kb21Mb2dOb3JtYWw6RDAscmFuZG9tQmF0ZXM6SDAscmFuZG9tSXJ3aW5IYWxsOkIwLHJhbmRvbUV4cG9uZW50aWFsOkYwLHJlcXVlc3Q6VjAsaHRtbDpqMCxqc29uOkcwLHRleHQ6VzAseG1sOnEwLGNzdjokMCx0c3Y6SzAsc2NhbGVCYW5kOnkyLHNjYWxlUG9pbnQ6ZnVuY3Rpb24gaG10KCl7cmV0dXJuIHYyKHkyKCkucGFkZGluZ0lubmVyKDEpKX0sc2NhbGVJZGVudGl0eTpmdW5jdGlvbiB0KCl7dmFyIGU9WzAsMV07ZnVuY3Rpb24gbih0KXtyZXR1cm4rdH1yZXR1cm4gbi5pbnZlcnQ9bixuLmRvbWFpbj1uLnJhbmdlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPWYyLmNhbGwodCxQNSksbik6ZS5zbGljZSgpfSxuLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gdCgpLmRvbWFpbihlKX0sbjMobil9LHNjYWxlTGluZWFyOmZ1bmN0aW9uIHQoKXt2YXIgZT1ENShJNSxiNSk7cmV0dXJuIGUuY29weT1mdW5jdGlvbigpe3JldHVybiB6NShlLHQoKSl9LG4zKGUpfSxzY2FsZUxvZzpmdW5jdGlvbiB0KCl7dmFyIGU9RDUocjMsbzMpLmRvbWFpbihbMSwxMF0pLG49ZS5kb21haW4saT0xMCxyPWwzKDEwKSxvPXMzKDEwKTtmdW5jdGlvbiBhKCl7cmV0dXJuIHI9bDMoaSksbz1zMyhpKSxuKClbMF08MCYmKHI9YzMociksbz1jMyhvKSksZX1yZXR1cm4gZS5iYXNlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSt0LGEoKSk6aX0sZS5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG4odCksYSgpKTpuKCl9LGUudGlja3M9ZnVuY3Rpb24odCl7dmFyIGUsYT1uKCkscz1hWzBdLGw9YVthLmxlbmd0aC0xXTsoZT1sPHMpJiYoZD1zLHM9bCxsPWQpO3ZhciBjLHUsaCxkPXIocykscD1yKGwpLGY9bnVsbD09dD8xMDordCxtPVtdO2lmKCEoaSUxKSYmcC1kPGYpe2lmKGQ9TWF0aC5yb3VuZChkKS0xLHA9TWF0aC5yb3VuZChwKSsxLHM+MCl7Zm9yKDtkPHA7KytkKWZvcih1PTEsYz1vKGQpO3U8aTsrK3UpaWYoISgoaD1jKnUpPHMpKXtpZihoPmwpYnJlYWs7bS5wdXNoKGgpfX1lbHNlIGZvcig7ZDxwOysrZClmb3IodT1pLTEsYz1vKGQpO3U+PTE7LS11KWlmKCEoKGg9Yyp1KTxzKSl7aWYoaD5sKWJyZWFrO20ucHVzaChoKX19ZWxzZSBtPXIyKGQscCxNYXRoLm1pbihwLWQsZikpLm1hcChvKTtyZXR1cm4gZT9tLnJldmVyc2UoKTptfSxlLnRpY2tGb3JtYXQ9ZnVuY3Rpb24odCxuKXtpZihudWxsPT1uJiYobj0xMD09PWk/Ii4wZSI6IiwiKSwiZnVuY3Rpb24iIT10eXBlb2YgbiYmKG49SzUobikpLHQ9PT0xLzApcmV0dXJuIG47bnVsbD09dCYmKHQ9MTApO3ZhciBhPU1hdGgubWF4KDEsaSp0L2UudGlja3MoKS5sZW5ndGgpO3JldHVybiBmdW5jdGlvbih0KXt2YXIgZT10L28oTWF0aC5yb3VuZChyKHQpKSk7cmV0dXJuIGUqaTxpLS41JiYoZSo9aSksZTw9YT9uKHQpOiIifX0sZS5uaWNlPWZ1bmN0aW9uKCl7cmV0dXJuIG4oaTMobigpLHtmbG9vcjpmdW5jdGlvbih0KXtyZXR1cm4gbyhNYXRoLmZsb29yKHIodCkpKX0sY2VpbDpmdW5jdGlvbih0KXtyZXR1cm4gbyhNYXRoLmNlaWwocih0KSkpfX0pKX0sZS5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIHo1KGUsdCgpLmJhc2UoaSkpfSxlfSxzY2FsZU9yZGluYWw6XzIsc2NhbGVJbXBsaWNpdDpnMixzY2FsZVBvdzpoMyxzY2FsZVNxcnQ6ZnVuY3Rpb24gZG10KCl7cmV0dXJuIGgzKCkuZXhwb25lbnQoLjUpfSxzY2FsZVF1YW50aWxlOmZ1bmN0aW9uIHQoKXt2YXIgZT1bXSxuPVtdLGk9W107ZnVuY3Rpb24gcigpe3ZhciB0PTAscj1NYXRoLm1heCgxLG4ubGVuZ3RoKTtmb3IoaT1uZXcgQXJyYXkoci0xKTsrK3Q8cjspaVt0LTFdPXMyKGUsdC9yKTtyZXR1cm4gb31mdW5jdGlvbiBvKHQpe2lmKCFpc05hTih0PSt0KSlyZXR1cm4gbltRMChpLHQpXX1yZXR1cm4gby5pbnZlcnRFeHRlbnQ9ZnVuY3Rpb24odCl7dmFyIHI9bi5pbmRleE9mKHQpO3JldHVybiByPDA/W05hTixOYU5dOltyPjA/aVtyLTFdOmVbMF0scjxpLmxlbmd0aD9pW3JdOmVbZS5sZW5ndGgtMV1dfSxvLmRvbWFpbj1mdW5jdGlvbih0KXtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZS5zbGljZSgpO2U9W107Zm9yKHZhciBuLGk9MCxvPXQubGVuZ3RoO2k8bzsrK2kpbnVsbD09KG49dFtpXSl8fGlzTmFOKG49K24pfHxlLnB1c2gobik7cmV0dXJuIGUuc29ydChaMCkscigpfSxvLnJhbmdlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPW0yLmNhbGwodCkscigpKTpuLnNsaWNlKCl9LG8ucXVhbnRpbGVzPWZ1bmN0aW9uKCl7cmV0dXJuIGkuc2xpY2UoKX0sby5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIHQoKS5kb21haW4oZSkucmFuZ2Uobil9LG99LHNjYWxlUXVhbnRpemU6ZnVuY3Rpb24gdCgpe3ZhciBlPTAsbj0xLGk9MSxyPVsuNV0sbz1bMCwxXTtmdW5jdGlvbiBhKHQpe2lmKHQ8PXQpcmV0dXJuIG9bUTAocix0LDAsaSldfWZ1bmN0aW9uIHMoKXt2YXIgdD0tMTtmb3Iocj1uZXcgQXJyYXkoaSk7Kyt0PGk7KXJbdF09KCh0KzEpKm4tKHQtaSkqZSkvKGkrMSk7cmV0dXJuIGF9cmV0dXJuIGEuZG9tYWluPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPSt0WzBdLG49K3RbMV0scygpKTpbZSxuXX0sYS5yYW5nZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0obz1tMi5jYWxsKHQpKS5sZW5ndGgtMSxzKCkpOm8uc2xpY2UoKX0sYS5pbnZlcnRFeHRlbnQ9ZnVuY3Rpb24odCl7dmFyIGE9by5pbmRleE9mKHQpO3JldHVybiBhPDA/W05hTixOYU5dOmE8MT9bZSxyWzBdXTphPj1pP1tyW2ktMV0sbl06W3JbYS0xXSxyW2FdXX0sYS5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIHQoKS5kb21haW4oW2Usbl0pLnJhbmdlKG8pfSxuMyhhKX0sc2NhbGVUaHJlc2hvbGQ6ZnVuY3Rpb24gdCgpe3ZhciBlPVsuNV0sbj1bMCwxXSxpPTE7ZnVuY3Rpb24gcih0KXtpZih0PD10KXJldHVybiBuW1EwKGUsdCwwLGkpXX1yZXR1cm4gci5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9bTIuY2FsbCh0KSxpPU1hdGgubWluKGUubGVuZ3RoLG4ubGVuZ3RoLTEpLHIpOmUuc2xpY2UoKX0sci5yYW5nZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1tMi5jYWxsKHQpLGk9TWF0aC5taW4oZS5sZW5ndGgsbi5sZW5ndGgtMSkscik6bi5zbGljZSgpfSxyLmludmVydEV4dGVudD1mdW5jdGlvbih0KXt2YXIgaT1uLmluZGV4T2YodCk7cmV0dXJuW2VbaS0xXSxlW2ldXX0sci5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIHQoKS5kb21haW4oZSkucmFuZ2Uobil9LHJ9LHNjYWxlVGltZTpmdW5jdGlvbiBwbXQoKXtyZXR1cm4gdzYoSTMsUDMsQTMsVDMsRTMsTTMsUzMsXzMsWDMpLmRvbWFpbihbbmV3IERhdGUoMmUzLDAsMSksbmV3IERhdGUoMmUzLDAsMildKX0sc2NhbGVVdGM6ZnVuY3Rpb24gZm10KCl7cmV0dXJuIHc2KGozLFYzLEIzLHozLE8zLFIzLFMzLF8zLCQzKS5kb21haW4oW0RhdGUuVVRDKDJlMywwLDEpLERhdGUuVVRDKDJlMywwLDIpXSl9LHNjaGVtZUNhdGVnb3J5MTA6TTYsc2NoZW1lQ2F0ZWdvcnkyMGI6RTYsc2NoZW1lQ2F0ZWdvcnkyMGM6VDYsc2NoZW1lQ2F0ZWdvcnkyMDpDNixpbnRlcnBvbGF0ZUN1YmVoZWxpeERlZmF1bHQ6QTYsaW50ZXJwb2xhdGVSYWluYm93OmZ1bmN0aW9uIG1tdCh0KXsodDwwfHx0PjEpJiYodC09TWF0aC5mbG9vcih0KSk7dmFyIGU9TWF0aC5hYnModC0uNSk7cmV0dXJuIFA2Lmg9MzYwKnQtMTAwLFA2LnM9MS41LTEuNSplLFA2Lmw9LjgtLjkqZSxQNisiIn0saW50ZXJwb2xhdGVXYXJtOms2LGludGVycG9sYXRlQ29vbDpMNixpbnRlcnBvbGF0ZVZpcmlkaXM6STYsaW50ZXJwb2xhdGVNYWdtYTpSNixpbnRlcnBvbGF0ZUluZmVybm86TzYsaW50ZXJwb2xhdGVQbGFzbWE6ejYsc2NhbGVTZXF1ZW50aWFsOmZ1bmN0aW9uIHQoZSl7dmFyIG49MCxpPTEscj0hMTtmdW5jdGlvbiBvKHQpe3ZhciBvPSh0LW4pLyhpLW4pO3JldHVybiBlKHI/TWF0aC5tYXgoMCxNYXRoLm1pbigxLG8pKTpvKX1yZXR1cm4gby5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49K3RbMF0saT0rdFsxXSxvKTpbbixpXX0sby5jbGFtcD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0hIXQsbyk6cn0sby5pbnRlcnBvbGF0b3I9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dCxvKTplfSxvLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gdChlKS5kb21haW4oW24saV0pLmNsYW1wKHIpfSxuMyhvKX0sY3JlYXRlOmZ1bmN0aW9uIGdtdCh0KXtyZXR1cm4gJDkoVTYodCkuY2FsbChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpKX0sY3JlYXRvcjpVNixsb2NhbDpDOCxtYXRjaGVyOks2LG1vdXNlOmZ1bmN0aW9uIF9tdCh0KXt2YXIgZT1rOCgpO3JldHVybiBlLmNoYW5nZWRUb3VjaGVzJiYoZT1lLmNoYW5nZWRUb3VjaGVzWzBdKSxMOCh0LGUpfSxuYW1lc3BhY2U6SDYsbmFtZXNwYWNlczpCNixjbGllbnRQb2ludDpMOCxzZWxlY3Q6JDksc2VsZWN0QWxsOmZ1bmN0aW9uIHltdCh0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQ/bmV3IFk5KFtkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHQpXSxbZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50XSk6bmV3IFk5KFtudWxsPT10P1tdOnRdLHE5KX0sc2VsZWN0aW9uOlg5LHNlbGVjdG9yOkc2LHNlbGVjdG9yQWxsOnE2LHN0eWxlOmQ5LHRvdWNoOmZ1bmN0aW9uIHZtdCh0LGUsbil7YXJndW1lbnRzLmxlbmd0aDwzJiYobj1lLGU9azgoKS5jaGFuZ2VkVG91Y2hlcyk7Zm9yKHZhciBpLHI9MCxvPWU/ZS5sZW5ndGg6MDtyPG87KytyKWlmKChpPWVbcl0pLmlkZW50aWZpZXI9PT1uKXJldHVybiBMOCh0LGkpO3JldHVybiBudWxsfSx0b3VjaGVzOmZ1bmN0aW9uIGJtdCh0LGUpe251bGw9PWUmJihlPWs4KCkudG91Y2hlcyk7Zm9yKHZhciBuPTAsaT1lP2UubGVuZ3RoOjAscj1uZXcgQXJyYXkoaSk7bjxpOysrbilyW25dPUw4KHQsZVtuXSk7cmV0dXJuIHJ9LHdpbmRvdzpsOSxnZXQgZXZlbnQoKXtyZXR1cm4gRDl9LGN1c3RvbUV2ZW50OmZ1bmN0aW9uIHhtdCh0LGUsbixpKXt2YXIgcj1EOTt0LnNvdXJjZUV2ZW50PUQ5LEQ5PXQ7dHJ5e3JldHVybiBlLmFwcGx5KG4saSl9ZmluYWxseXtEOT1yfX0sYXJjOmZ1bmN0aW9uIHdtdCgpe3ZhciB0PVo4LGU9Sjgsbj1EOCgwKSxpPW51bGwscj1ROCxvPXQ3LGE9ZTcscz1udWxsO2Z1bmN0aW9uIGwoKXt2YXIgbCxjLHU9K3QuYXBwbHkodGhpcyxhcmd1bWVudHMpLGg9K2UuYXBwbHkodGhpcyxhcmd1bWVudHMpLGQ9ci5hcHBseSh0aGlzLGFyZ3VtZW50cyktWTgscD1vLmFwcGx5KHRoaXMsYXJndW1lbnRzKS1ZOCxmPUI4KHAtZCksbT1wPmQ7aWYoc3x8KHM9bD16OCgpKSxoPHUmJihjPWgsaD11LHU9YyksaD5XOClpZihmPlg4LVc4KXMubW92ZVRvKGgqRjgoZCksaCpqOChkKSkscy5hcmMoMCwwLGgsZCxwLCFtKSx1Plc4JiYocy5tb3ZlVG8odSpGOChwKSx1Kmo4KHApKSxzLmFyYygwLDAsdSxwLGQsbSkpO2Vsc2V7dmFyIGcsXyx5PWQsdj1wLGI9ZCx4PXAsdz1mLFM9ZixNPWEuYXBwbHkodGhpcyxhcmd1bWVudHMpLzIsRT1NPlc4JiYoaT8raS5hcHBseSh0aGlzLGFyZ3VtZW50cyk6RzgodSp1K2gqaCkpLFQ9VTgoQjgoaC11KS8yLCtuLmFwcGx5KHRoaXMsYXJndW1lbnRzKSksQz1ULEE9VDtpZihFPlc4KXt2YXIgaz1LOChFL3UqajgoTSkpLEw9SzgoRS9oKmo4KE0pKTsody09MiprKT5XOD8oYis9ayo9bT8xOi0xLHgtPWspOih3PTAsYj14PShkK3ApLzIpLChTLT0yKkwpPlc4Pyh5Kz1MKj1tPzE6LTEsdi09TCk6KFM9MCx5PXY9KGQrcCkvMil9dmFyIFA9aCpGOCh5KSxOPWgqajgoeSksST11KkY4KHgpLFI9dSpqOCh4KTtpZihUPlc4KXt2YXIgTz1oKkY4KHYpLHo9aCpqOCh2KSxEPXUqRjgoYiksQj11Kmo4KGIpO2lmKGY8cTgpe3ZhciBIPXc+Vzg/bjcoUCxOLEQsQixPLHosSSxSKTpbSSxSXSxGPVAtSFswXSxWPU4tSFsxXSxVPU8tSFswXSxqPXotSFsxXSxHPTEvajgoJDgoKEYqVStWKmopLyhHOChGKkYrVipWKSpHOChVKlUraipqKSkpLzIpLFc9RzgoSFswXSpIWzBdK0hbMV0qSFsxXSk7Qz1VOChULCh1LVcpLyhHLTEpKSxBPVU4KFQsKGgtVykvKEcrMSkpfX1TPlc4P0E+Vzg/KGc9aTcoRCxCLFAsTixoLEEsbSksXz1pNyhPLHosSSxSLGgsQSxtKSxzLm1vdmVUbyhnLmN4K2cueDAxLGcuY3krZy55MDEpLEE8VD9zLmFyYyhnLmN4LGcuY3ksQSxIOChnLnkwMSxnLngwMSksSDgoXy55MDEsXy54MDEpLCFtKToocy5hcmMoZy5jeCxnLmN5LEEsSDgoZy55MDEsZy54MDEpLEg4KGcueTExLGcueDExKSwhbSkscy5hcmMoMCwwLGgsSDgoZy5jeStnLnkxMSxnLmN4K2cueDExKSxIOChfLmN5K18ueTExLF8uY3grXy54MTEpLCFtKSxzLmFyYyhfLmN4LF8uY3ksQSxIOChfLnkxMSxfLngxMSksSDgoXy55MDEsXy54MDEpLCFtKSkpOihzLm1vdmVUbyhQLE4pLHMuYXJjKDAsMCxoLHksdiwhbSkpOnMubW92ZVRvKFAsTiksdT5XOCYmdz5XOD9DPlc4PyhnPWk3KEksUixPLHosdSwtQyxtKSxfPWk3KFAsTixELEIsdSwtQyxtKSxzLmxpbmVUbyhnLmN4K2cueDAxLGcuY3krZy55MDEpLEM8VD9zLmFyYyhnLmN4LGcuY3ksQyxIOChnLnkwMSxnLngwMSksSDgoXy55MDEsXy54MDEpLCFtKToocy5hcmMoZy5jeCxnLmN5LEMsSDgoZy55MDEsZy54MDEpLEg4KGcueTExLGcueDExKSwhbSkscy5hcmMoMCwwLHUsSDgoZy5jeStnLnkxMSxnLmN4K2cueDExKSxIOChfLmN5K18ueTExLF8uY3grXy54MTEpLG0pLHMuYXJjKF8uY3gsXy5jeSxDLEg4KF8ueTExLF8ueDExKSxIOChfLnkwMSxfLngwMSksIW0pKSk6cy5hcmMoMCwwLHUseCxiLG0pOnMubGluZVRvKEksUil9ZWxzZSBzLm1vdmVUbygwLDApO2lmKHMuY2xvc2VQYXRoKCksbClyZXR1cm4gcz1udWxsLGwrIiJ8fG51bGx9cmV0dXJuIGwuY2VudHJvaWQ9ZnVuY3Rpb24oKXt2YXIgbj0oK3QuYXBwbHkodGhpcyxhcmd1bWVudHMpKyArZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpLzIsaT0oK3IuYXBwbHkodGhpcyxhcmd1bWVudHMpKyArby5hcHBseSh0aGlzLGFyZ3VtZW50cykpLzItcTgvMjtyZXR1cm5bRjgoaSkqbixqOChpKSpuXX0sbC5pbm5lclJhZGl1cz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOkQ4KCtlKSxsKTp0fSxsLm91dGVyUmFkaXVzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6RDgoK3QpLGwpOmV9LGwuY29ybmVyUmFkaXVzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6RDgoK3QpLGwpOm59LGwucGFkUmFkaXVzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPW51bGw9PXQ/bnVsbDoiZnVuY3Rpb24iPT10eXBlb2YgdD90OkQ4KCt0KSxsKTppfSxsLnN0YXJ0QW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpEOCgrdCksbCk6cn0sbC5lbmRBbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkQ4KCt0KSxsKTpvfSxsLnBhZEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6RDgoK3QpLGwpOmF9LGwuY29udGV4dD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz1udWxsPT10P251bGw6dCxsKTpzfSxsfSxhcmVhOmM3LGxpbmU6bDcscGllOmZ1bmN0aW9uIFNtdCgpe3ZhciB0PWg3LGU9dTcsbj1udWxsLGk9RDgoMCkscj1EOChYOCksbz1EOCgwKTtmdW5jdGlvbiBhKGEpe3ZhciBzLGwsYyx1LGgsZD1hLmxlbmd0aCxwPTAsZj1uZXcgQXJyYXkoZCksbT1uZXcgQXJyYXkoZCksZz0raS5hcHBseSh0aGlzLGFyZ3VtZW50cyksXz1NYXRoLm1pbihYOCxNYXRoLm1heCgtWDgsci5hcHBseSh0aGlzLGFyZ3VtZW50cyktZykpLHk9TWF0aC5taW4oTWF0aC5hYnMoXykvZCxvLmFwcGx5KHRoaXMsYXJndW1lbnRzKSksdj15KihfPDA/LTE6MSk7Zm9yKHM9MDtzPGQ7KytzKShoPW1bZltzXT1zXT0rdChhW3NdLHMsYSkpPjAmJihwKz1oKTtmb3IobnVsbCE9ZT9mLnNvcnQoKGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUobVt0XSxtW25dKX0pKTpudWxsIT1uJiZmLnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIG4oYVt0XSxhW2VdKX0pKSxzPTAsYz1wPyhfLWQqdikvcDowO3M8ZDsrK3MsZz11KW1bbD1mW3NdXT17ZGF0YTphW2xdLGluZGV4OnMsdmFsdWU6aD1tW2xdLHN0YXJ0QW5nbGU6ZyxlbmRBbmdsZTp1PWcrKGg+MD9oKmM6MCkrdixwYWRBbmdsZTp5fTtyZXR1cm4gbX1yZXR1cm4gYS52YWx1ZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOkQ4KCtlKSxhKTp0fSxhLnNvcnRWYWx1ZXM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dCxuPW51bGwsYSk6ZX0sYS5zb3J0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPXQsZT1udWxsLGEpOm59LGEuc3RhcnRBbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkQ4KCt0KSxhKTppfSxhLmVuZEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6RDgoK3QpLGEpOnJ9LGEucGFkQW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpEOCgrdCksYSk6b30sYX0sYXJlYVJhZGlhbDpfNyxyYWRpYWxBcmVhOl83LGxpbmVSYWRpYWw6ZzcscmFkaWFsTGluZTpnNyxwb2ludFJhZGlhbDp5NyxsaW5rSG9yaXpvbnRhbDpmdW5jdGlvbiBNbXQoKXtyZXR1cm4gdzcoUzcpfSxsaW5rVmVydGljYWw6ZnVuY3Rpb24gRW10KCl7cmV0dXJuIHc3KE03KX0sbGlua1JhZGlhbDpmdW5jdGlvbiBUbXQoKXt2YXIgdD13NyhFNyk7cmV0dXJuIHQuYW5nbGU9dC54LGRlbGV0ZSB0LngsdC5yYWRpdXM9dC55LGRlbGV0ZSB0LnksdH0sc3ltYm9sOmZ1bmN0aW9uIENtdCgpe3ZhciB0PUQ4KFQ3KSxlPUQ4KDY0KSxuPW51bGw7ZnVuY3Rpb24gaSgpe3ZhciBpO2lmKG58fChuPWk9ejgoKSksdC5hcHBseSh0aGlzLGFyZ3VtZW50cykuZHJhdyhuLCtlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSksaSlyZXR1cm4gbj1udWxsLGkrIiJ8fG51bGx9cmV0dXJuIGkudHlwZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOkQ4KGUpLGkpOnR9LGkuc2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkQ4KCt0KSxpKTplfSxpLmNvbnRleHQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49bnVsbD09dD9udWxsOnQsaSk6bn0saX0sc3ltYm9sczpqNyxzeW1ib2xDaXJjbGU6VDcsc3ltYm9sQ3Jvc3M6Qzcsc3ltYm9sRGlhbW9uZDpMNyxzeW1ib2xTcXVhcmU6Tzcsc3ltYm9sU3RhcjpSNyxzeW1ib2xUcmlhbmdsZTpENyxzeW1ib2xXeWU6VTcsY3VydmVCYXNpc0Nsb3NlZDpmdW5jdGlvbiBBbXQodCl7cmV0dXJuIG5ldyBZNyh0KX0sY3VydmVCYXNpc09wZW46ZnVuY3Rpb24ga210KHQpe3JldHVybiBuZXcgWDcodCl9LGN1cnZlQmFzaXM6ZnVuY3Rpb24gTG10KHQpe3JldHVybiBuZXcgcTcodCl9LGN1cnZlQnVuZGxlOks3LGN1cnZlQ2FyZGluYWxDbG9zZWQ6ZXR0LGN1cnZlQ2FyZGluYWxPcGVuOml0dCxjdXJ2ZUNhcmRpbmFsOlE3LGN1cnZlQ2F0bXVsbFJvbUNsb3NlZDpsdHQsY3VydmVDYXRtdWxsUm9tT3Blbjp1dHQsY3VydmVDYXRtdWxsUm9tOmF0dCxjdXJ2ZUxpbmVhckNsb3NlZDpmdW5jdGlvbiBQbXQodCl7cmV0dXJuIG5ldyBodHQodCl9LGN1cnZlTGluZWFyOm83LGN1cnZlTW9ub3RvbmVYOmZ1bmN0aW9uIE5tdCh0KXtyZXR1cm4gbmV3IGd0dCh0KX0sY3VydmVNb25vdG9uZVk6ZnVuY3Rpb24gSW10KHQpe3JldHVybiBuZXcgX3R0KHQpfSxjdXJ2ZU5hdHVyYWw6ZnVuY3Rpb24gUm10KHQpe3JldHVybiBuZXcgdnR0KHQpfSxjdXJ2ZVN0ZXA6ZnVuY3Rpb24gT210KHQpe3JldHVybiBuZXcgeHR0KHQsLjUpfSxjdXJ2ZVN0ZXBBZnRlcjpmdW5jdGlvbiB6bXQodCl7cmV0dXJuIG5ldyB4dHQodCwxKX0sY3VydmVTdGVwQmVmb3JlOmZ1bmN0aW9uIERtdCh0KXtyZXR1cm4gbmV3IHh0dCh0LDApfSxzdGFjazpmdW5jdGlvbiBCbXQoKXt2YXIgdD1EOChbXSksZT1TdHQsbj13dHQsaT1NdHQ7ZnVuY3Rpb24gcihyKXt2YXIgbyxhLHM9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyksbD1yLmxlbmd0aCxjPXMubGVuZ3RoLHU9bmV3IEFycmF5KGMpO2ZvcihvPTA7bzxjOysrbyl7Zm9yKHZhciBoLGQ9c1tvXSxwPXVbb109bmV3IEFycmF5KGwpLGY9MDtmPGw7KytmKXBbZl09aD1bMCwraShyW2ZdLGQsZixyKV0saC5kYXRhPXJbZl07cC5rZXk9ZH1mb3Iobz0wLGE9ZSh1KTtvPGM7KytvKXVbYVtvXV0uaW5kZXg9bztyZXR1cm4gbih1LGEpLHV9cmV0dXJuIHIua2V5cz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOkQ4KHY3LmNhbGwoZSkpLHIpOnR9LHIudmFsdWU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpEOCgrdCkscik6aX0sci5vcmRlcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT1udWxsPT10P1N0dDoiZnVuY3Rpb24iPT10eXBlb2YgdD90OkQ4KHY3LmNhbGwodCkpLHIpOmV9LHIub2Zmc2V0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPW51bGw9PXQ/d3R0OnQscik6bn0scn0sc3RhY2tPZmZzZXRFeHBhbmQ6ZnVuY3Rpb24gSG10KHQsZSl7aWYoKGk9dC5sZW5ndGgpPjApe2Zvcih2YXIgbixpLHIsbz0wLGE9dFswXS5sZW5ndGg7bzxhOysrbyl7Zm9yKHI9bj0wO248aTsrK24pcis9dFtuXVtvXVsxXXx8MDtpZihyKWZvcihuPTA7bjxpOysrbil0W25dW29dWzFdLz1yfXd0dCh0LGUpfX0sc3RhY2tPZmZzZXREaXZlcmdpbmc6ZnVuY3Rpb24gRm10KHQsZSl7aWYoKHM9dC5sZW5ndGgpPjEpZm9yKHZhciBuLGkscixvLGEscyxsPTAsYz10W2VbMF1dLmxlbmd0aDtsPGM7KytsKWZvcihvPWE9MCxuPTA7bjxzOysrbikocj0oaT10W2Vbbl1dW2xdKVsxXS1pWzBdKT49MD8oaVswXT1vLGlbMV09bys9cik6cjwwPyhpWzFdPWEsaVswXT1hKz1yKTppWzBdPW99LHN0YWNrT2Zmc2V0Tm9uZTp3dHQsc3RhY2tPZmZzZXRTaWxob3VldHRlOmZ1bmN0aW9uIFZtdCh0LGUpe2lmKChuPXQubGVuZ3RoKT4wKXtmb3IodmFyIG4saT0wLHI9dFtlWzBdXSxvPXIubGVuZ3RoO2k8bzsrK2kpe2Zvcih2YXIgYT0wLHM9MDthPG47KythKXMrPXRbYV1baV1bMV18fDA7cltpXVsxXSs9cltpXVswXT0tcy8yfXd0dCh0LGUpfX0sc3RhY2tPZmZzZXRXaWdnbGU6ZnVuY3Rpb24gVW10KHQsZSl7aWYoKHI9dC5sZW5ndGgpPjAmJihpPShuPXRbZVswXV0pLmxlbmd0aCk+MCl7Zm9yKHZhciBuLGkscixvPTAsYT0xO2E8aTsrK2Epe2Zvcih2YXIgcz0wLGw9MCxjPTA7czxyOysrcyl7Zm9yKHZhciB1PXRbZVtzXV0saD11W2FdWzFdfHwwLGQ9KGgtKHVbYS0xXVsxXXx8MCkpLzIscD0wO3A8czsrK3Ape3ZhciBmPXRbZVtwXV07ZCs9KGZbYV1bMV18fDApLShmW2EtMV1bMV18fDApfWwrPWgsYys9ZCpofW5bYS0xXVsxXSs9blthLTFdWzBdPW8sbCYmKG8tPWMvbCl9blthLTFdWzFdKz1uW2EtMV1bMF09byx3dHQodCxlKX19LHN0YWNrT3JkZXJBc2NlbmRpbmc6RXR0LHN0YWNrT3JkZXJEZXNjZW5kaW5nOmZ1bmN0aW9uIGptdCh0KXtyZXR1cm4gRXR0KHQpLnJldmVyc2UoKX0sc3RhY2tPcmRlckluc2lkZU91dDpmdW5jdGlvbiBHbXQodCl7dmFyIGUsbixpPXQubGVuZ3RoLHI9dC5tYXAoVHR0KSxvPVN0dCh0KS5zb3J0KChmdW5jdGlvbih0LGUpe3JldHVybiByW2VdLXJbdF19KSksYT0wLHM9MCxsPVtdLGM9W107Zm9yKGU9MDtlPGk7KytlKW49b1tlXSxhPHM/KGErPXJbbl0sbC5wdXNoKG4pKToocys9cltuXSxjLnB1c2gobikpO3JldHVybiBjLnJldmVyc2UoKS5jb25jYXQobCl9LHN0YWNrT3JkZXJOb25lOlN0dCxzdGFja09yZGVyUmV2ZXJzZTpmdW5jdGlvbiBXbXQodCl7cmV0dXJuIFN0dCh0KS5yZXZlcnNlKCl9LHRpbWVJbnRlcnZhbDprdHQsdGltZU1pbGxpc2Vjb25kOkx0dCx0aW1lTWlsbGlzZWNvbmRzOlB0dCx1dGNNaWxsaXNlY29uZDpMdHQsdXRjTWlsbGlzZWNvbmRzOlB0dCx0aW1lU2Vjb25kOkR0dCx0aW1lU2Vjb25kczpCdHQsdXRjU2Vjb25kOkR0dCx1dGNTZWNvbmRzOkJ0dCx0aW1lTWludXRlOkh0dCx0aW1lTWludXRlczpGdHQsdGltZUhvdXI6VnR0LHRpbWVIb3VyczpVdHQsdGltZURheTpqdHQsdGltZURheXM6R3R0LHRpbWVXZWVrOnF0dCx0aW1lV2Vla3M6UXR0LHRpbWVTdW5kYXk6cXR0LHRpbWVTdW5kYXlzOlF0dCx0aW1lTW9uZGF5Oll0dCx0aW1lTW9uZGF5czp0ZXQsdGltZVR1ZXNkYXk6WHR0LHRpbWVUdWVzZGF5czplZXQsdGltZVdlZG5lc2RheTokdHQsdGltZVdlZG5lc2RheXM6bmV0LHRpbWVUaHVyc2RheTpLdHQsdGltZVRodXJzZGF5czppZXQsdGltZUZyaWRheTpadHQsdGltZUZyaWRheXM6cmV0LHRpbWVTYXR1cmRheTpKdHQsdGltZVNhdHVyZGF5czpvZXQsdGltZU1vbnRoOmFldCx0aW1lTW9udGhzOnNldCx0aW1lWWVhcjpjZXQsdGltZVllYXJzOnVldCx1dGNNaW51dGU6aGV0LHV0Y01pbnV0ZXM6ZGV0LHV0Y0hvdXI6cGV0LHV0Y0hvdXJzOmZldCx1dGNEYXk6bWV0LHV0Y0RheXM6Z2V0LHV0Y1dlZWs6eWV0LHV0Y1dlZWtzOlRldCx1dGNTdW5kYXk6eWV0LHV0Y1N1bmRheXM6VGV0LHV0Y01vbmRheTp2ZXQsdXRjTW9uZGF5czpDZXQsdXRjVHVlc2RheTpiZXQsdXRjVHVlc2RheXM6QWV0LHV0Y1dlZG5lc2RheTp4ZXQsdXRjV2VkbmVzZGF5czprZXQsdXRjVGh1cnNkYXk6d2V0LHV0Y1RodXJzZGF5czpMZXQsdXRjRnJpZGF5Ok1ldCx1dGNGcmlkYXlzOlBldCx1dGNTYXR1cmRheTpFZXQsdXRjU2F0dXJkYXlzOk5ldCx1dGNNb250aDpJZXQsdXRjTW9udGhzOlJldCx1dGNZZWFyOk9ldCx1dGNZZWFyczp6ZXQsdGltZUZvcm1hdERlZmF1bHRMb2NhbGU6eGl0LGdldCB0aW1lRm9ybWF0KCl7cmV0dXJuIHNudH0sZ2V0IHRpbWVQYXJzZSgpe3JldHVybiBsbnR9LGdldCB1dGNGb3JtYXQoKXtyZXR1cm4gY250fSxnZXQgdXRjUGFyc2UoKXtyZXR1cm4gdW50fSx0aW1lRm9ybWF0TG9jYWxlOm9udCxpc29Gb3JtYXQ6U2l0LGlzb1BhcnNlOkNpdCxub3c6RGl0LHRpbWVyOkZpdCx0aW1lckZsdXNoOlZpdCx0aW1lb3V0OmZ1bmN0aW9uIHFtdCh0LGUsbil7dmFyIGk9bmV3IEhpdDtyZXR1cm4gaS5yZXN0YXJ0KChmdW5jdGlvbihuKXtpLnN0b3AoKSx0KG4rZSl9KSxlPW51bGw9PWU/MDorZSxuKSxpfSxpbnRlcnZhbDpmdW5jdGlvbiBZbXQodCxlLG4pe3ZhciBpPW5ldyBIaXQscj1lO3JldHVybiBudWxsPT1lPyhpLnJlc3RhcnQodCxlLG4pLGkpOihlPStlLG49bnVsbD09bj9EaXQoKTorbixpLnJlc3RhcnQoKGZ1bmN0aW9uIG8oYSl7YSs9cixpLnJlc3RhcnQobyxyKz1lLG4pLHQoYSl9KSxlLG4pLGkpfSx0cmFuc2l0aW9uOkFzdCxhY3RpdmU6ZnVuY3Rpb24gWG10KHQsZSl7dmFyIG4saSxyPXQuX190cmFuc2l0aW9uO2lmKHIpZm9yKGkgaW4gZT1udWxsPT1lP251bGw6ZSsiIixyKWlmKChuPXJbaV0pLnN0YXRlPjEmJm4ubmFtZT09PWUpcmV0dXJuIG5ldyBDc3QoW1t0XV0sSnN0LGUsK2kpO3JldHVybiBudWxsfSxpbnRlcnJ1cHQ6YWF0LHZvcm9ub2k6ZnVuY3Rpb24gJG10KCl7dmFyIHQ9dGx0LGU9ZWx0LG49bnVsbDtmdW5jdGlvbiBpKGkpe3JldHVybiBuZXcgemx0KGkubWFwKChmdW5jdGlvbihuLHIpe3ZhciBvPVtNYXRoLnJvdW5kKHQobixyLGkpL05sdCkqTmx0LE1hdGgucm91bmQoZShuLHIsaSkvTmx0KSpObHRdO3JldHVybiBvLmluZGV4PXIsby5kYXRhPW4sb30pKSxuKX1yZXR1cm4gaS5wb2x5Z29ucz1mdW5jdGlvbih0KXtyZXR1cm4gaSh0KS5wb2x5Z29ucygpfSxpLmxpbmtzPWZ1bmN0aW9uKHQpe3JldHVybiBpKHQpLmxpbmtzKCl9LGkudHJpYW5nbGVzPWZ1bmN0aW9uKHQpe3JldHVybiBpKHQpLnRyaWFuZ2xlcygpfSxpLng9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpRc3QoK2UpLGkpOnR9LGkueT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OlFzdCgrdCksaSk6ZX0saS5leHRlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49bnVsbD09dD9udWxsOltbK3RbMF1bMF0sK3RbMF1bMV1dLFsrdFsxXVswXSwrdFsxXVsxXV1dLGkpOm4mJltbblswXVswXSxuWzBdWzFdXSxbblsxXVswXSxuWzFdWzFdXV19LGkuc2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1udWxsPT10P251bGw6W1swLDBdLFsrdFswXSwrdFsxXV1dLGkpOm4mJltuWzFdWzBdLW5bMF1bMF0sblsxXVsxXS1uWzBdWzFdXX0saX0sem9vbTpmdW5jdGlvbiBLbXQoKXt2YXIgdCxlLG49Z3B0LGk9X3B0LHI9eHB0LG89dnB0LGE9YnB0LHM9WzAsMS8wXSxsPVtbLTEvMCwtMS8wXSxbMS8wLDEvMF1dLGM9MjUwLHU9Qmh0LGg9W10sZD1CbHQoInN0YXJ0Iiwiem9vbSIsImVuZCIpLHA9NTAwLGY9MDtmdW5jdGlvbiBtKHQpe3QucHJvcGVydHkoIl9fem9vbSIseXB0KS5vbigid2hlZWwuem9vbSIsdykub24oIm1vdXNlZG93bi56b29tIixTKS5vbigiZGJsY2xpY2suem9vbSIsTSkuZmlsdGVyKGEpLm9uKCJ0b3VjaHN0YXJ0Lnpvb20iLEUpLm9uKCJ0b3VjaG1vdmUuem9vbSIsVCkub24oInRvdWNoZW5kLnpvb20gdG91Y2hjYW5jZWwuem9vbSIsQykuc3R5bGUoInRvdWNoLWFjdGlvbiIsIm5vbmUiKS5zdHlsZSgiLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yIiwicmdiYSgwLDAsMCwwKSIpfWZ1bmN0aW9uIGcodCxlKXtyZXR1cm4oZT1NYXRoLm1heChzWzBdLE1hdGgubWluKHNbMV0sZSkpKT09PXQuaz90Om5ldyBjcHQoZSx0LngsdC55KX1mdW5jdGlvbiBfKHQsZSxuKXt2YXIgaT1lWzBdLW5bMF0qdC5rLHI9ZVsxXS1uWzFdKnQuaztyZXR1cm4gaT09PXQueCYmcj09PXQueT90Om5ldyBjcHQodC5rLGkscil9ZnVuY3Rpb24geSh0KXtyZXR1cm5bKCt0WzBdWzBdKyArdFsxXVswXSkvMiwoK3RbMF1bMV0rICt0WzFdWzFdKS8yXX1mdW5jdGlvbiB2KHQsZSxuKXt0Lm9uKCJzdGFydC56b29tIiwoZnVuY3Rpb24oKXtiKHRoaXMsYXJndW1lbnRzKS5zdGFydCgpfSkpLm9uKCJpbnRlcnJ1cHQuem9vbSBlbmQuem9vbSIsKGZ1bmN0aW9uKCl7Yih0aGlzLGFyZ3VtZW50cykuZW5kKCl9KSkudHdlZW4oInpvb20iLChmdW5jdGlvbigpe3ZhciB0PXRoaXMscj1hcmd1bWVudHMsbz1iKHQsciksYT1pLmFwcGx5KHQscikscz1ufHx5KGEpLGw9TWF0aC5tYXgoYVsxXVswXS1hWzBdWzBdLGFbMV1bMV0tYVswXVsxXSksYz10Ll9fem9vbSxoPSJmdW5jdGlvbiI9PXR5cGVvZiBlP2UuYXBwbHkodCxyKTplLGQ9dShjLmludmVydChzKS5jb25jYXQobC9jLmspLGguaW52ZXJ0KHMpLmNvbmNhdChsL2guaykpO3JldHVybiBmdW5jdGlvbih0KXtpZigxPT09dCl0PWg7ZWxzZXt2YXIgZT1kKHQpLG49bC9lWzJdO3Q9bmV3IGNwdChuLHNbMF0tZVswXSpuLHNbMV0tZVsxXSpuKX1vLnpvb20obnVsbCx0KX19KSl9ZnVuY3Rpb24gYih0LGUpe2Zvcih2YXIgbixpPTAscj1oLmxlbmd0aDtpPHI7KytpKWlmKChuPWhbaV0pLnRoYXQ9PT10KXJldHVybiBuO3JldHVybiBuZXcgeCh0LGUpfWZ1bmN0aW9uIHgodCxlKXt0aGlzLnRoYXQ9dCx0aGlzLmFyZ3M9ZSx0aGlzLmluZGV4PS0xLHRoaXMuYWN0aXZlPTAsdGhpcy5leHRlbnQ9aS5hcHBseSh0LGUpfWZ1bmN0aW9uIHcoKXtpZihuLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl7dmFyIHQ9Yih0aGlzLGFyZ3VtZW50cyksZT10aGlzLl9fem9vbSxpPU1hdGgubWF4KHNbMF0sTWF0aC5taW4oc1sxXSxlLmsqTWF0aC5wb3coMixvLmFwcGx5KHRoaXMsYXJndW1lbnRzKSkpKSxhPWV1dCh0aGlzKTtpZih0LndoZWVsKXQubW91c2VbMF1bMF09PT1hWzBdJiZ0Lm1vdXNlWzBdWzFdPT09YVsxXXx8KHQubW91c2VbMV09ZS5pbnZlcnQodC5tb3VzZVswXT1hKSksY2xlYXJUaW1lb3V0KHQud2hlZWwpO2Vsc2V7aWYoZS5rPT09aSlyZXR1cm47dC5tb3VzZT1bYSxlLmludmVydChhKV0sY2R0KHRoaXMpLHQuc3RhcnQoKX1tcHQoKSx0LndoZWVsPXNldFRpbWVvdXQoYywxNTApLHQuem9vbSgibW91c2UiLHIoXyhnKGUsaSksdC5tb3VzZVswXSx0Lm1vdXNlWzFdKSx0LmV4dGVudCxsKSl9ZnVuY3Rpb24gYygpe3Qud2hlZWw9bnVsbCx0LmVuZCgpfX1mdW5jdGlvbiBTKCl7aWYoIWUmJm4uYXBwbHkodGhpcyxhcmd1bWVudHMpKXt2YXIgdD1iKHRoaXMsYXJndW1lbnRzKSxpPUpjdChGY3Qudmlldykub24oIm1vdXNlbW92ZS56b29tIixjLCEwKS5vbigibW91c2V1cC56b29tIix1LCEwKSxvPWV1dCh0aGlzKSxhPUZjdC5jbGllbnRYLHM9RmN0LmNsaWVudFk7cnV0KEZjdC52aWV3KSxmcHQoKSx0Lm1vdXNlPVtvLHRoaXMuX196b29tLmludmVydChvKV0sY2R0KHRoaXMpLHQuc3RhcnQoKX1mdW5jdGlvbiBjKCl7aWYobXB0KCksIXQubW92ZWQpe3ZhciBlPUZjdC5jbGllbnRYLWEsbj1GY3QuY2xpZW50WS1zO3QubW92ZWQ9ZSplK24qbj5mfXQuem9vbSgibW91c2UiLHIoXyh0LnRoYXQuX196b29tLHQubW91c2VbMF09ZXV0KHQudGhhdCksdC5tb3VzZVsxXSksdC5leHRlbnQsbCkpfWZ1bmN0aW9uIHUoKXtpLm9uKCJtb3VzZW1vdmUuem9vbSBtb3VzZXVwLnpvb20iLG51bGwpLG91dChGY3Qudmlldyx0Lm1vdmVkKSxtcHQoKSx0LmVuZCgpfX1mdW5jdGlvbiBNKCl7aWYobi5hcHBseSh0aGlzLGFyZ3VtZW50cykpe3ZhciB0PXRoaXMuX196b29tLGU9ZXV0KHRoaXMpLG89dC5pbnZlcnQoZSksYT10LmsqKEZjdC5zaGlmdEtleT8uNToyKSxzPXIoXyhnKHQsYSksZSxvKSxpLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxsKTttcHQoKSxjPjA/SmN0KHRoaXMpLnRyYW5zaXRpb24oKS5kdXJhdGlvbihjKS5jYWxsKHYscyxlKTpKY3QodGhpcykuY2FsbChtLnRyYW5zZm9ybSxzKX19ZnVuY3Rpb24gRSgpe2lmKG4uYXBwbHkodGhpcyxhcmd1bWVudHMpKXt2YXIgZSxpLHIsbyxhPWIodGhpcyxhcmd1bWVudHMpLHM9RmN0LmNoYW5nZWRUb3VjaGVzLGw9cy5sZW5ndGg7Zm9yKGZwdCgpLGk9MDtpPGw7KytpKW89W289bnV0KHRoaXMscywocj1zW2ldKS5pZGVudGlmaWVyKSx0aGlzLl9fem9vbS5pbnZlcnQobyksci5pZGVudGlmaWVyXSxhLnRvdWNoMD9hLnRvdWNoMXx8KGEudG91Y2gxPW8pOihhLnRvdWNoMD1vLGU9ITApO2lmKHQmJih0PWNsZWFyVGltZW91dCh0KSwhYS50b3VjaDEpKXJldHVybiBhLmVuZCgpLHZvaWQoKG89SmN0KHRoaXMpLm9uKCJkYmxjbGljay56b29tIikpJiZvLmFwcGx5KHRoaXMsYXJndW1lbnRzKSk7ZSYmKHQ9c2V0VGltZW91dCgoZnVuY3Rpb24oKXt0PW51bGx9KSxwKSxjZHQodGhpcyksYS5zdGFydCgpKX19ZnVuY3Rpb24gVCgpe3ZhciBlLG4saSxvLGE9Yih0aGlzLGFyZ3VtZW50cykscz1GY3QuY2hhbmdlZFRvdWNoZXMsYz1zLmxlbmd0aDtmb3IobXB0KCksdCYmKHQ9Y2xlYXJUaW1lb3V0KHQpKSxlPTA7ZTxjOysrZSlpPW51dCh0aGlzLHMsKG49c1tlXSkuaWRlbnRpZmllciksYS50b3VjaDAmJmEudG91Y2gwWzJdPT09bi5pZGVudGlmaWVyP2EudG91Y2gwWzBdPWk6YS50b3VjaDEmJmEudG91Y2gxWzJdPT09bi5pZGVudGlmaWVyJiYoYS50b3VjaDFbMF09aSk7aWYobj1hLnRoYXQuX196b29tLGEudG91Y2gxKXt2YXIgdT1hLnRvdWNoMFswXSxoPWEudG91Y2gwWzFdLGQ9YS50b3VjaDFbMF0scD1hLnRvdWNoMVsxXSxmPShmPWRbMF0tdVswXSkqZisoZj1kWzFdLXVbMV0pKmYsbT0obT1wWzBdLWhbMF0pKm0rKG09cFsxXS1oWzFdKSptO249ZyhuLE1hdGguc3FydChmL20pKSxpPVsodVswXStkWzBdKS8yLCh1WzFdK2RbMV0pLzJdLG89WyhoWzBdK3BbMF0pLzIsKGhbMV0rcFsxXSkvMl19ZWxzZXtpZighYS50b3VjaDApcmV0dXJuO2k9YS50b3VjaDBbMF0sbz1hLnRvdWNoMFsxXX1hLnpvb20oInRvdWNoIixyKF8obixpLG8pLGEuZXh0ZW50LGwpKX1mdW5jdGlvbiBDKCl7dmFyIHQsbixpPWIodGhpcyxhcmd1bWVudHMpLHI9RmN0LmNoYW5nZWRUb3VjaGVzLG89ci5sZW5ndGg7Zm9yKGZwdCgpLGUmJmNsZWFyVGltZW91dChlKSxlPXNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7ZT1udWxsfSkscCksdD0wO3Q8bzsrK3Qpbj1yW3RdLGkudG91Y2gwJiZpLnRvdWNoMFsyXT09PW4uaWRlbnRpZmllcj9kZWxldGUgaS50b3VjaDA6aS50b3VjaDEmJmkudG91Y2gxWzJdPT09bi5pZGVudGlmaWVyJiZkZWxldGUgaS50b3VjaDE7aS50b3VjaDEmJiFpLnRvdWNoMCYmKGkudG91Y2gwPWkudG91Y2gxLGRlbGV0ZSBpLnRvdWNoMSksaS50b3VjaDA/aS50b3VjaDBbMV09dGhpcy5fX3pvb20uaW52ZXJ0KGkudG91Y2gwWzBdKTppLmVuZCgpfXJldHVybiBtLnRyYW5zZm9ybT1mdW5jdGlvbih0LGUpe3ZhciBuPXQuc2VsZWN0aW9uP3Quc2VsZWN0aW9uKCk6dDtuLnByb3BlcnR5KCJfX3pvb20iLHlwdCksdCE9PW4/dih0LGUpOm4uaW50ZXJydXB0KCkuZWFjaCgoZnVuY3Rpb24oKXtiKHRoaXMsYXJndW1lbnRzKS5zdGFydCgpLnpvb20obnVsbCwiZnVuY3Rpb24iPT10eXBlb2YgZT9lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTplKS5lbmQoKX0pKX0sbS5zY2FsZUJ5PWZ1bmN0aW9uKHQsZSl7bS5zY2FsZVRvKHQsKGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fX3pvb20uayxuPSJmdW5jdGlvbiI9PXR5cGVvZiBlP2UuYXBwbHkodGhpcyxhcmd1bWVudHMpOmU7cmV0dXJuIHQqbn0pKX0sbS5zY2FsZVRvPWZ1bmN0aW9uKHQsZSl7bS50cmFuc2Zvcm0odCwoZnVuY3Rpb24oKXt2YXIgdD1pLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxuPXRoaXMuX196b29tLG89eSh0KSxhPW4uaW52ZXJ0KG8pLHM9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk6ZTtyZXR1cm4gcihfKGcobixzKSxvLGEpLHQsbCl9KSl9LG0udHJhbnNsYXRlQnk9ZnVuY3Rpb24odCxlLG4pe20udHJhbnNmb3JtKHQsKGZ1bmN0aW9uKCl7cmV0dXJuIHIodGhpcy5fX3pvb20udHJhbnNsYXRlKCJmdW5jdGlvbiI9PXR5cGVvZiBlP2UuYXBwbHkodGhpcyxhcmd1bWVudHMpOmUsImZ1bmN0aW9uIj09dHlwZW9mIG4/bi5hcHBseSh0aGlzLGFyZ3VtZW50cyk6biksaS5hcHBseSh0aGlzLGFyZ3VtZW50cyksbCl9KSl9LG0udHJhbnNsYXRlVG89ZnVuY3Rpb24odCxlLG4pe20udHJhbnNmb3JtKHQsKGZ1bmN0aW9uKCl7dmFyIHQ9aS5hcHBseSh0aGlzLGFyZ3VtZW50cyksbz10aGlzLl9fem9vbSxhPXkodCk7cmV0dXJuIHIoZHB0LnRyYW5zbGF0ZShhWzBdLGFbMV0pLnNjYWxlKG8uaykudHJhbnNsYXRlKCJmdW5jdGlvbiI9PXR5cGVvZiBlPy1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTotZSwiZnVuY3Rpb24iPT10eXBlb2Ygbj8tbi5hcHBseSh0aGlzLGFyZ3VtZW50cyk6LW4pLHQsbCl9KSl9LHgucHJvdG90eXBlPXtzdGFydDpmdW5jdGlvbigpe3JldHVybiAxPT0rK3RoaXMuYWN0aXZlJiYodGhpcy5pbmRleD1oLnB1c2godGhpcyktMSx0aGlzLmVtaXQoInN0YXJ0IikpLHRoaXN9LHpvb206ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5tb3VzZSYmIm1vdXNlIiE9PXQmJih0aGlzLm1vdXNlWzFdPWUuaW52ZXJ0KHRoaXMubW91c2VbMF0pKSx0aGlzLnRvdWNoMCYmInRvdWNoIiE9PXQmJih0aGlzLnRvdWNoMFsxXT1lLmludmVydCh0aGlzLnRvdWNoMFswXSkpLHRoaXMudG91Y2gxJiYidG91Y2giIT09dCYmKHRoaXMudG91Y2gxWzFdPWUuaW52ZXJ0KHRoaXMudG91Y2gxWzBdKSksdGhpcy50aGF0Ll9fem9vbT1lLHRoaXMuZW1pdCgiem9vbSIpLHRoaXN9LGVuZDpmdW5jdGlvbigpe3JldHVybiAwPT0tLXRoaXMuYWN0aXZlJiYoaC5zcGxpY2UodGhpcy5pbmRleCwxKSx0aGlzLmluZGV4PS0xLHRoaXMuZW1pdCgiZW5kIikpLHRoaXN9LGVtaXQ6ZnVuY3Rpb24odCl7IShmdW5jdGlvbiBlKHQsbixpLHIpe3ZhciBvPUZjdDt0LnNvdXJjZUV2ZW50PUZjdCxGY3Q9dDt0cnl7cmV0dXJuIG4uYXBwbHkoaSxyKX1maW5hbGx5e0ZjdD1vfX0pKG5ldyBscHQobSx0LHRoaXMudGhhdC5fX3pvb20pLGQuYXBwbHksZCxbdCx0aGlzLnRoYXQsdGhpcy5hcmdzXSl9fSxtLndoZWVsRGVsdGE9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpzcHQoK3QpLG0pOm99LG0uZmlsdGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6c3B0KCEhdCksbSk6bn0sbS50b3VjaGFibGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpzcHQoISF0KSxtKTphfSxtLmV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OnNwdChbWyt0WzBdWzBdLCt0WzBdWzFdXSxbK3RbMV1bMF0sK3RbMV1bMV1dXSksbSk6aX0sbS5zY2FsZUV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oc1swXT0rdFswXSxzWzFdPSt0WzFdLG0pOltzWzBdLHNbMV1dfSxtLnRyYW5zbGF0ZUV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obFswXVswXT0rdFswXVswXSxsWzFdWzBdPSt0WzFdWzBdLGxbMF1bMV09K3RbMF1bMV0sbFsxXVsxXT0rdFsxXVsxXSxtKTpbW2xbMF1bMF0sbFswXVsxXV0sW2xbMV1bMF0sbFsxXVsxXV1dfSxtLmNvbnN0cmFpbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj10LG0pOnJ9LG0uZHVyYXRpb249ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9K3QsbSk6Y30sbS5pbnRlcnBvbGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT10LG0pOnV9LG0ub249ZnVuY3Rpb24oKXt2YXIgdD1kLm9uLmFwcGx5KGQsYXJndW1lbnRzKTtyZXR1cm4gdD09PWQ/bTp0fSxtLmNsaWNrRGlzdGFuY2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGY9KHQ9K3QpKnQsbSk6TWF0aC5zcXJ0KGYpfSxtfSx6b29tVHJhbnNmb3JtOnBwdCx6b29tSWRlbnRpdHk6ZHB0fSkpOwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqCiAgICAgKiBAZmlsZW92ZXJ2aWV3IG1hbnVhbGx5IGFkZCBkMy1zZWxlY3Rpb24tbXVsdGkgdG8gZDMgZGVmYXVsdCBidW5kbGUuIE1vc3Qgb2YgdGhpcyBjb2RlIGlzCiAgICAgKiBjb3BpZWQgZnJvbSBkMy1zZWxlY3Rpb24tbXVsdGlAMS4wLjAuCiAgICAgKiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2QzL2QzLXNlbGVjdGlvbi1tdWx0aS9pc3N1ZXMvMTEgZm9yIHdoeSB3ZSBoYXZlIHRvIGRvIHRoaXMKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBabXQ9d3B0LEptdD13cHQ7ZnVuY3Rpb24gUW10KHQsZSl7cmV0dXJuIHQuZWFjaCgoZnVuY3Rpb24oKXt2YXIgdD1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxuPVptdC5zZWxlY3QodGhpcyk7Zm9yKHZhciBpIGluIHQpbi5hdHRyKGksdFtpXSl9KSl9ZnVuY3Rpb24gdGd0KHQsZSl7Zm9yKHZhciBuIGluIGUpdC5hdHRyKG4sZVtuXSk7cmV0dXJuIHR9ZnVuY3Rpb24gZWd0KHQsZSxuKXtyZXR1cm4gdC5lYWNoKChmdW5jdGlvbigpe3ZhciB0PWUuYXBwbHkodGhpcyxhcmd1bWVudHMpLGk9Wm10LnNlbGVjdCh0aGlzKTtmb3IodmFyIHIgaW4gdClpLnN0eWxlKHIsdFtyXSxuKX0pKX1mdW5jdGlvbiBuZ3QodCxlLG4pe2Zvcih2YXIgaSBpbiBlKXQuc3R5bGUoaSxlW2ldLG4pO3JldHVybiB0fWZ1bmN0aW9uIGlndCh0LGUpe3JldHVybiB0LmVhY2goKGZ1bmN0aW9uKCl7dmFyIHQ9ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyksbj1abXQuc2VsZWN0KHRoaXMpO2Zvcih2YXIgaSBpbiB0KW4ucHJvcGVydHkoaSx0W2ldKX0pKX1mdW5jdGlvbiByZ3QodCxlKXtmb3IodmFyIG4gaW4gZSl0LnByb3BlcnR5KG4sZVtuXSk7cmV0dXJuIHR9ZnVuY3Rpb24gb2d0KHQsZSl7cmV0dXJuIHQuZWFjaCgoZnVuY3Rpb24oKXt2YXIgbj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxpPVptdC5zZWxlY3QodGhpcykudHJhbnNpdGlvbih0KTtmb3IodmFyIHIgaW4gbilpLmF0dHIocixuW3JdKX0pKX1mdW5jdGlvbiBhZ3QodCxlKXtmb3IodmFyIG4gaW4gZSl0LmF0dHIobixlW25dKTtyZXR1cm4gdH1mdW5jdGlvbiBzZ3QodCxlLG4pe3JldHVybiB0LmVhY2goKGZ1bmN0aW9uKCl7dmFyIGk9ZS5hcHBseSh0aGlzLGFyZ3VtZW50cykscj1abXQuc2VsZWN0KHRoaXMpLnRyYW5zaXRpb24odCk7Zm9yKHZhciBvIGluIGkpci5zdHlsZShvLGlbb10sbil9KSl9ZnVuY3Rpb24gbGd0KHQsZSxuKXtmb3IodmFyIGkgaW4gZSl0LnN0eWxlKGksZVtpXSxuKTtyZXR1cm4gdH1abXQuc2VsZWN0aW9uLnByb3RvdHlwZS5hdHRycz1mdW5jdGlvbiBjZ3QodCl7cmV0dXJuKCJmdW5jdGlvbiI9PXR5cGVvZiB0P1FtdDp0Z3QpKHRoaXMsdCl9LFptdC5zZWxlY3Rpb24ucHJvdG90eXBlLnN0eWxlcz1mdW5jdGlvbiB1Z3QodCxlKXtyZXR1cm4oImZ1bmN0aW9uIj09dHlwZW9mIHQ/ZWd0Om5ndCkodGhpcyx0LG51bGw9PWU/IiI6ZSl9LFptdC5zZWxlY3Rpb24ucHJvdG90eXBlLnByb3BlcnRpZXM9ZnVuY3Rpb24gaGd0KHQpe3JldHVybigiZnVuY3Rpb24iPT10eXBlb2YgdD9pZ3Q6cmd0KSh0aGlzLHQpfSxKbXQudHJhbnNpdGlvbi5wcm90b3R5cGUuYXR0cnM9ZnVuY3Rpb24gZGd0KHQpe3JldHVybigiZnVuY3Rpb24iPT10eXBlb2YgdD9vZ3Q6YWd0KSh0aGlzLHQpfSxKbXQudHJhbnNpdGlvbi5wcm90b3R5cGUuc3R5bGVzPWZ1bmN0aW9uIHBndCh0LGUpe3JldHVybigiZnVuY3Rpb24iPT10eXBlb2YgdD9zZ3Q6bGd0KSh0aGlzLHQsbnVsbD09ZT8iIjplKX07dmFyIGZndD17fSxtZ3Q9e30sZ2d0PU1lKEZtKSxfZ3Q9e307T2JqZWN0LmRlZmluZVByb3BlcnR5KF9ndCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHlndD13cHQ7X2d0LmNvZXJjZUV4dGVybmFsRDM9ZnVuY3Rpb24gdmd0KHQpe2lmKG51bGw9PXQuYXR0cnMpe2lmKG51bGw9PXQubm9kZXMpe3ZhciBlPVtdO3JldHVybiB0LmVhY2goKGZ1bmN0aW9uKCl7ZS5wdXNoKHRoaXMpfSkpLHlndC5zZWxlY3RBbGwoZSl9cmV0dXJuIHlndC5zZWxlY3RBbGwodC5ub2RlcygpKX1yZXR1cm4gdH07dmFyIGJndD17fTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi9PYmplY3QuZGVmaW5lUHJvcGVydHkoYmd0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxiZ3QubWFrZUVudW09ZnVuY3Rpb24geGd0KHQpe3JldHVybiB0LnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdFtlXT1lLHR9KSx7fSl9LAovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkobWd0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgd2d0PV9ndCxTZ3Q9e2xpbmVhcjpnZ3QuZWFzZUxpbmVhcixxdWFkOmdndC5lYXNlUXVhZCxxdWFkSW46Z2d0LmVhc2VRdWFkSW4scXVhZE91dDpnZ3QuZWFzZVF1YWRPdXQscXVhZEluT3V0OmdndC5lYXNlUXVhZEluT3V0LGN1YmljOmdndC5lYXNlQ3ViaWMsY3ViaWNJbjpnZ3QuZWFzZUN1YmljSW4sY3ViaWNPdXQ6Z2d0LmVhc2VDdWJpY091dCxjdWJpY0luT3V0OmdndC5lYXNlQ3ViaWNJbk91dCxwb2x5OmdndC5lYXNlUG9seSxwb2x5SW46Z2d0LmVhc2VQb2x5SW4scG9seU91dDpnZ3QuZWFzZVBvbHlPdXQscG9seUluT3V0OmdndC5lYXNlUG9seUluT3V0LHNpbjpnZ3QuZWFzZVNpbixzaW5JbjpnZ3QuZWFzZVNpbkluLHNpbk91dDpnZ3QuZWFzZVNpbk91dCxzaW5Jbk91dDpnZ3QuZWFzZVNpbkluT3V0LGV4cDpnZ3QuZWFzZUV4cCxleHBJbjpnZ3QuZWFzZUV4cEluLGV4cE91dDpnZ3QuZWFzZUV4cE91dCxleHBJbk91dDpnZ3QuZWFzZUV4cEluT3V0LGNpcmNsZTpnZ3QuZWFzZUNpcmNsZSxjaXJjbGVJbjpnZ3QuZWFzZUNpcmNsZUluLGNpcmNsZU91dDpnZ3QuZWFzZUNpcmNsZU91dCxjaXJjbGVJbk91dDpnZ3QuZWFzZUNpcmNsZUluT3V0LGJvdW5jZTpnZ3QuZWFzZUJvdW5jZSxib3VuY2VJbjpnZ3QuZWFzZUJvdW5jZUluLGJvdW5jZU91dDpnZ3QuZWFzZUJvdW5jZU91dCxib3VuY2VJbk91dDpnZ3QuZWFzZUJvdW5jZUluT3V0LGJhY2s6Z2d0LmVhc2VCYWNrLGJhY2tJbjpnZ3QuZWFzZUJhY2tJbixiYWNrT3V0OmdndC5lYXNlQmFja091dCxiYWNrSW5PdXQ6Z2d0LmVhc2VCYWNrSW5PdXQsZWxhc3RpYzpnZ3QuZWFzZUVsYXN0aWMsZWxhc3RpY0luOmdndC5lYXNlRWxhc3RpY0luLGVsYXN0aWNPdXQ6Z2d0LmVhc2VFbGFzdGljT3V0LGVsYXN0aWNJbk91dDpnZ3QuZWFzZUVsYXN0aWNJbk91dH07bWd0LkVhc2VOYW1lPWJndC5tYWtlRW51bShbImxpbmVhciIsInF1YWQiLCJxdWFkSW4iLCJxdWFkT3V0IiwicXVhZEluT3V0IiwiY3ViaWMiLCJjdWJpY0luIiwiY3ViaWNPdXQiLCJjdWJpY0luT3V0IiwicG9seSIsInBvbHlJbiIsInBvbHlPdXQiLCJwb2x5SW5PdXQiLCJzaW4iLCJzaW5JbiIsInNpbk91dCIsInNpbkluT3V0IiwiZXhwIiwiZXhwSW4iLCJleHBPdXQiLCJleHBJbk91dCIsImNpcmNsZSIsImNpcmNsZUluIiwiY2lyY2xlT3V0IiwiY2lyY2xlSW5PdXQiLCJib3VuY2UiLCJib3VuY2VJbiIsImJvdW5jZU91dCIsImJvdW5jZUluT3V0IiwiYmFjayIsImJhY2tJbiIsImJhY2tPdXQiLCJiYWNrSW5PdXQiLCJlbGFzdGljIiwiZWxhc3RpY0luIiwiZWxhc3RpY091dCIsImVsYXN0aWNJbk91dCJdKTt2YXIgTWd0PShmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLl9zdGFydERlbGF5PXQuX0RFRkFVTFRfU1RBUlRfREVMQVlfTUlMTElTRUNPTkRTLHRoaXMuX3N0ZXBEdXJhdGlvbj10Ll9ERUZBVUxUX1NURVBfRFVSQVRJT05fTUlMTElTRUNPTkRTLHRoaXMuX3N0ZXBEZWxheT10Ll9ERUZBVUxUX0lURVJBVElWRV9ERUxBWV9NSUxMSVNFQ09ORFMsdGhpcy5fbWF4VG90YWxEdXJhdGlvbj10Ll9ERUZBVUxUX01BWF9UT1RBTF9EVVJBVElPTl9NSUxMSVNFQ09ORFMsdGhpcy5fZWFzaW5nTW9kZT10Ll9ERUZBVUxUX0VBU0lOR19NT0RFfXJldHVybiB0LnByb3RvdHlwZS50b3RhbFRpbWU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fZ2V0QWRqdXN0ZWRJdGVyYXRpdmVEZWxheSh0KTtyZXR1cm4gdGhpcy5zdGFydERlbGF5KCkrZSpNYXRoLm1heCh0LTEsMCkrdGhpcy5zdGVwRHVyYXRpb24oKX0sdC5wcm90b3R5cGUuYW5pbWF0ZT1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMsaT0odD13Z3QuY29lcmNlRXh0ZXJuYWxEMyh0KSkuc2l6ZSgpLHI9dGhpcy5fZ2V0QWRqdXN0ZWRJdGVyYXRpdmVEZWxheShpKTtyZXR1cm4gdC50cmFuc2l0aW9uKCkuZWFzZSh0aGlzLl9nZXRFYXNlRmFjdG9yeSgpKS5kdXJhdGlvbih0aGlzLnN0ZXBEdXJhdGlvbigpKS5kZWxheSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gbi5zdGFydERlbGF5KCkrciplfSkpLmF0dHJzKGUpfSx0LnByb3RvdHlwZS5zdGFydERlbGF5PWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX3N0YXJ0RGVsYXk6KHRoaXMuX3N0YXJ0RGVsYXk9dCx0aGlzKX0sdC5wcm90b3R5cGUuc3RlcER1cmF0aW9uPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P01hdGgubWluKHRoaXMuX3N0ZXBEdXJhdGlvbix0aGlzLl9tYXhUb3RhbER1cmF0aW9uKToodGhpcy5fc3RlcER1cmF0aW9uPXQsdGhpcyl9LHQucHJvdG90eXBlLnN0ZXBEZWxheT1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9zdGVwRGVsYXk6KHRoaXMuX3N0ZXBEZWxheT10LHRoaXMpfSx0LnByb3RvdHlwZS5tYXhUb3RhbER1cmF0aW9uPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX21heFRvdGFsRHVyYXRpb246KHRoaXMuX21heFRvdGFsRHVyYXRpb249dCx0aGlzKX0sdC5wcm90b3R5cGUuZWFzaW5nTW9kZT1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9lYXNpbmdNb2RlOih0aGlzLl9lYXNpbmdNb2RlPXQsdGhpcyl9LHQucHJvdG90eXBlLl9nZXRFYXNlRmFjdG9yeT1mdW5jdGlvbigpe3ZhciB0PXRoaXMuZWFzaW5nTW9kZSgpO2lmKCJzdHJpbmciPT10eXBlb2YgdCl7dmFyIGU9U2d0W3RdO3JldHVybiBudWxsPT1lP1NndC5saW5lYXI6ZX1yZXR1cm4gdH0sdC5wcm90b3R5cGUuX2dldEFkanVzdGVkSXRlcmF0aXZlRGVsYXk9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5tYXhUb3RhbER1cmF0aW9uKCktdGhpcy5zdGVwRHVyYXRpb24oKSxuPShlPU1hdGgubWF4KGUsMCkpL01hdGgubWF4KHQtMSwxKTtyZXR1cm4gTWF0aC5taW4odGhpcy5zdGVwRGVsYXkoKSxuKX0sdC5fREVGQVVMVF9TVEFSVF9ERUxBWV9NSUxMSVNFQ09ORFM9MCx0Ll9ERUZBVUxUX1NURVBfRFVSQVRJT05fTUlMTElTRUNPTkRTPTMwMCx0Ll9ERUZBVUxUX0lURVJBVElWRV9ERUxBWV9NSUxMSVNFQ09ORFM9MTUsdC5fREVGQVVMVF9NQVhfVE9UQUxfRFVSQVRJT05fTUlMTElTRUNPTkRTPTEvMCx0Ll9ERUZBVUxUX0VBU0lOR19NT0RFPSJleHBPdXQiLHR9KSgpO21ndC5FYXNpbmc9TWd0O3ZhciBFZ3Q9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovT2JqZWN0LmRlZmluZVByb3BlcnR5KEVndCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIFRndD1fZ3QsQ2d0PShmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLnRvdGFsVGltZT1mdW5jdGlvbih0KXtyZXR1cm4gMH0sdC5wcm90b3R5cGUuYW5pbWF0ZT1mdW5jdGlvbih0LGUpe3JldHVybih0PVRndC5jb2VyY2VFeHRlcm5hbEQzKHQpKS5hdHRycyhlKX0sdH0pKCk7RWd0Lk51bGw9Q2d0LChmdW5jdGlvbih0KXsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBlPUJPO2UuX19leHBvcnRTdGFyKG1ndCx0KSxlLl9fZXhwb3J0U3RhcihFZ3QsdCl9KShmZ3QpO3ZhciBBZ3Q9e30sa2d0PXt9LExndD17fSxQZ3Q9e30sTmd0PXt9LElndD17fSxSZ3Q9e30sT2d0PXt9LHpndD17fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoemd0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgRGd0PShmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5jYWNoZT17fSx0aGlzLmNvbXB1dGU9dH1yZXR1cm4gdC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNhY2hlLmhhc093blByb3BlcnR5KHQpfHwodGhpcy5jYWNoZVt0XT10aGlzLmNvbXB1dGUodCkpLHRoaXMuY2FjaGVbdF19LHQucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2FjaGU9e30sdGhpc30sdH0pKCk7emd0LkNhY2hlPURndDt2YXIgQmd0PXt9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShCZ3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBIZ3Q9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5hcnJheUVxPWZ1bmN0aW9uKHQsZSl7aWYobnVsbD09dHx8bnVsbD09ZSlyZXR1cm4gdD09PWU7aWYodC5sZW5ndGghPT1lLmxlbmd0aClyZXR1cm4hMTtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKylpZih0W25dIT09ZVtuXSlyZXR1cm4hMTtyZXR1cm4hMH0sdC5vYmpFcT1mdW5jdGlvbihlLG4pe2lmKG51bGw9PWV8fG51bGw9PW4pcmV0dXJuIGU9PT1uO3ZhciBpPU9iamVjdC5rZXlzKGUpLnNvcnQoKSxyPU9iamVjdC5rZXlzKG4pLnNvcnQoKSxvPWkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gZVt0XX0pKSxhPXIubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gblt0XX0pKTtyZXR1cm4gdC5hcnJheUVxKGkscikmJnQuYXJyYXlFcShvLGEpfSx0LnN0cmljdEVxPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ9PT1lfSx0LmRlZmF1bHRzPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1bXSxuPTE7bjxhcmd1bWVudHMubGVuZ3RoO24rKyllW24tMV09YXJndW1lbnRzW25dO2lmKG51bGw9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNvbnZlcnQgdW5kZWZpbmVkIG9yIG51bGwgdG8gb2JqZWN0Iik7dmFyIGk9T2JqZWN0KHQpO3JldHVybiBlLmZvckVhY2goKGZ1bmN0aW9uKHQpe2lmKG51bGwhPXQpZm9yKHZhciBlIGluIHQpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsZSkmJihpW2VdPXRbZV0pfSkpLGl9LHR9KSgpO0JndC5NZXRob2RzPUhndDt2YXIgRmd0PXt9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShGZ3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBWZ3Q9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5jb21iaW5lV2hpdGVzcGFjZT1mdW5jdGlvbih0KXtyZXR1cm4gdC5yZXBsYWNlKC9bIFx0XSsvZywiICIpfSx0LmlzTm90RW1wdHlTdHJpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiIiIT09dC50cmltKCl9LHQudHJpbVN0YXJ0PWZ1bmN0aW9uKGUsbil7aWYoIWUpcmV0dXJuIGU7dmFyIGk9ZS5zcGxpdCgiIikscj1uP2Z1bmN0aW9uKGUpe3JldHVybiBlLnNwbGl0KG4pLnNvbWUodC5pc05vdEVtcHR5U3RyaW5nKX06dC5pc05vdEVtcHR5U3RyaW5nO3JldHVybiBpLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gcih0K2UpP3QrZTp0fSksIiIpfSx0LnRyaW1FbmQ9ZnVuY3Rpb24oZSxuKXtpZighZSlyZXR1cm4gZTt2YXIgaT1lLnNwbGl0KCIiKTtyZXR1cm4gaS5yZXZlcnNlKCksKGk9dC50cmltU3RhcnQoaS5qb2luKCIiKSxuKS5zcGxpdCgiIikpLnJldmVyc2UoKSxpLmpvaW4oIiIpfSx0fSkoKTtGZ3QuU3RyaW5nTWV0aG9kcz1WZ3Q7dmFyIFVndD17fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoVWd0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgamd0PShmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLldvcmREaXZpZGVyUmVnRXhwPW5ldyBSZWdFeHAoIlxcVyIpLHRoaXMuV2hpdGVzcGFjZVJlZ0V4cD1uZXcgUmVnRXhwKCJcXHMiKX1yZXR1cm4gdC5wcm90b3R5cGUudG9rZW5pemU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztyZXR1cm4gdC5zcGxpdCgiIikucmVkdWNlKChmdW5jdGlvbih0LG4pe3JldHVybiB0LnNsaWNlKDAsLTEpLmNvbmNhdChlLnNob3VsZENyZWF0ZU5ld1Rva2VuKHRbdC5sZW5ndGgtMV0sbikpfSksWyIiXSl9LHQucHJvdG90eXBlLnNob3VsZENyZWF0ZU5ld1Rva2VuPWZ1bmN0aW9uKHQsZSl7aWYoIXQpcmV0dXJuW2VdO3ZhciBuPXRbdC5sZW5ndGgtMV07cmV0dXJuIHRoaXMuV2hpdGVzcGFjZVJlZ0V4cC50ZXN0KG4pJiZ0aGlzLldoaXRlc3BhY2VSZWdFeHAudGVzdChlKT9bdCtlXTp0aGlzLldoaXRlc3BhY2VSZWdFeHAudGVzdChuKXx8dGhpcy5XaGl0ZXNwYWNlUmVnRXhwLnRlc3QoZSk/W3QsZV06dGhpcy5Xb3JkRGl2aWRlclJlZ0V4cC50ZXN0KG4pP249PT1lP1t0K2VdOlt0LGVdOlt0K2VdfSx0fSkoKTtVZ3QuVG9rZW5pemVyPWpndCwoZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlKXtmb3IodmFyIG4gaW4gZSl0Lmhhc093blByb3BlcnR5KG4pfHwodFtuXT1lW25dKX1PYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksZSh6Z3QpLGUoQmd0KSxlKEZndCksZShVZ3QpfSkoT2d0KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoUmd0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgR2d0PU9ndCxXZ3Q9e3RleHRSb3RhdGlvbjowLHRleHRTaGVhcjowLHhBbGlnbjoibGVmdCIseUFsaWduOiJ0b3AifSxxZ3Q9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUsbil7dGhpcy5fbWVhc3VyZXI9dCx0aGlzLl9wZW5GYWN0b3J5PWUsdGhpcy5fd3JhcHBlcj1ufXJldHVybiB0LnByb3RvdHlwZS5tZWFzdXJlcj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fbWVhc3VyZXI9dCx0aGlzfSx0LnByb3RvdHlwZS53cmFwcGVyPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl93cmFwcGVyPXQsdGhpc30sdC5wcm90b3R5cGUucGVuRmFjdG9yeT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcGVuRmFjdG9yeT10LHRoaXN9LHQucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKGUsbixpLHIsbyl7aWYodm9pZCAwPT09ciYmKHI9e30pLHI9R2d0Lk1ldGhvZHMuZGVmYXVsdHMoe30sV2d0LHIpLC0xPT09dC5TdXBwb3J0ZWRSb3RhdGlvbi5pbmRleE9mKHIudGV4dFJvdGF0aW9uKSl0aHJvdyBuZXcgRXJyb3IoInVuc3VwcG9ydGVkIHJvdGF0aW9uIC0gIityLnRleHRSb3RhdGlvbisiLiBTdXBwb3J0ZWQgcm90YXRpb25zIGFyZSAiK3QuU3VwcG9ydGVkUm90YXRpb24uam9pbigiLCAiKSk7aWYobnVsbCE9ci50ZXh0U2hlYXImJnIudGV4dFNoZWFyPC04MHx8ci50ZXh0U2hlYXI+ODApdGhyb3cgbmV3IEVycm9yKCJ1bnN1cHBvcnRlZCBzaGVhciBhbmdsZSAtICIrci50ZXh0U2hlYXIrIi4gTXVzdCBiZSBiZXR3ZWVuIC04MCBhbmQgODAiKTt2YXIgYT1NYXRoLmFicyhNYXRoLmFicyhyLnRleHRSb3RhdGlvbiktOTApPjQ1LHM9YT9uOmksbD1hP2k6bixjPXIudGV4dFNoZWFyLHU9YypNYXRoLlBJLzE4MCxoPXRoaXMuX21lYXN1cmVyLm1lYXN1cmUoKS5oZWlnaHQsZD1oKk1hdGgudGFuKHUpLHA9cy9NYXRoLmNvcyh1KS1NYXRoLmFicyhkKSxmPWwqTWF0aC5jb3ModSksbT1HZ3QuU3RyaW5nTWV0aG9kcy5jb21iaW5lV2hpdGVzcGFjZShlKSxnPSh0aGlzLl93cmFwcGVyP3RoaXMuX3dyYXBwZXIud3JhcChtLHRoaXMuX21lYXN1cmVyLHAsZikud3JhcHBlZFRleHQ6bSkuc3BsaXQoIlxuIiksXz10LlhPZmZzZXRGYWN0b3Jbci54QWxpZ25dKnAqTWF0aC5zaW4odSktdC5ZT2Zmc2V0RmFjdG9yW3IueUFsaWduXSooZi1nLmxlbmd0aCpoKSx5PVswLDBdLHY9ci50ZXh0Um90YXRpb24rYztzd2l0Y2goci50ZXh0Um90YXRpb24pe2Nhc2UgOTA6eT1bbitfLDBdO2JyZWFrO2Nhc2UtOTA6eT1bLV8saV07YnJlYWs7Y2FzZSAxODA6eT1bbixpK19dO2JyZWFrO2RlZmF1bHQ6eT1bMCwtX119dmFyIGI9dGhpcy5fcGVuRmFjdG9yeS5jcmVhdGVQZW4oZSx7dHJhbnNsYXRlOnkscm90YXRlOnZ9LG8pO3RoaXMud3JpdGVMaW5lcyhnLGIscCxoLGQsci54QWxpZ24pLG51bGwhPWIuZGVzdHJveSYmYi5kZXN0cm95KCl9LHQucHJvdG90eXBlLndyaXRlTGluZXM9ZnVuY3Rpb24odCxlLG4saSxyLG8pe3QuZm9yRWFjaCgoZnVuY3Rpb24odCxhKXtlLndyaXRlKHQsbixvLHI+MD8oYSsxKSpyOmEqciwoYSsxKSppKX0pKX0sdH0pKCk7cWd0LlhPZmZzZXRGYWN0b3I9e2NlbnRlcjouNSxsZWZ0OjAscmlnaHQ6MX0scWd0LllPZmZzZXRGYWN0b3I9e2JvdHRvbToxLGNlbnRlcjouNSx0b3A6MH0scWd0LlN1cHBvcnRlZFJvdGF0aW9uPVstOTAsMCwxODAsOTBdLFJndC5Xcml0ZXI9cWd0LChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksKGZ1bmN0aW9uIGUobil7Zm9yKHZhciBpIGluIG4pdC5oYXNPd25Qcm9wZXJ0eShpKXx8KHRbaV09bltpXSl9KShSZ3QpfSkoSWd0KTt2YXIgWWd0PXt9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShZZ3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBYZ3Q9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5hcHBlbmQ9ZnVuY3Rpb24oZSxuKXtmb3IodmFyIGk9W10scj0yO3I8YXJndW1lbnRzLmxlbmd0aDtyKyspaVtyLTJdPWFyZ3VtZW50c1tyXTt2YXIgbz10LmNyZWF0ZS5hcHBseSh0LFtuXS5jb25jYXQoaSkpO3JldHVybiBlLmFwcGVuZENoaWxkKG8pLG99LHQuY3JlYXRlPWZ1bmN0aW9uKGUpe2Zvcih2YXIgbj1bXSxpPTE7aTxhcmd1bWVudHMubGVuZ3RoO2krKyluW2ktMV09YXJndW1lbnRzW2ldO3ZhciByPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoZSk7cmV0dXJuIHQuYWRkQ2xhc3Nlcy5hcHBseSh0LFtyXS5jb25jYXQobikpLHJ9LHQuYWRkQ2xhc3Nlcz1mdW5jdGlvbih0KXtmb3IodmFyIGU9W10sbj0xO248YXJndW1lbnRzLmxlbmd0aDtuKyspZVtuLTFdPWFyZ3VtZW50c1tuXTtlPWUuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9dH0pKSxudWxsIT10LmNsYXNzTGlzdD9lLmZvckVhY2goKGZ1bmN0aW9uKGUpe3QuY2xhc3NMaXN0LmFkZChlKX0pKTp0LnNldEF0dHJpYnV0ZSgiY2xhc3MiLGUuam9pbigiICIpKX0sdC5nZXREaW1lbnNpb25zPWZ1bmN0aW9uKHQpe2lmKHQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KXRyeXt2YXIgZT10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3JldHVybnt3aWR0aDplLndpZHRoLGhlaWdodDplLmhlaWdodH19Y2F0Y2godCl7fXJldHVybntoZWlnaHQ6MCx3aWR0aDowfX0sdH0pKCk7WWd0Lkh0bWxVdGlscz1YZ3Q7dmFyICRndD0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuKXt2b2lkIDA9PT1uJiYobj0hMSk7dmFyIGk9dGhpczt0aGlzLmVsZW1lbnQ9dCx0aGlzLmNsYXNzTmFtZT1lLHRoaXMuYWRkVGl0bGU9bix0aGlzLmNyZWF0ZVJ1bGVyPWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBlPVhndC5hcHBlbmQoaS5lbGVtZW50LCJzcGFuIiwidGV4dC10bXAiLGkuY2xhc3NOYW1lKTtlLnRleHRDb250ZW50PXQ7dmFyIG49WGd0LmdldERpbWVuc2lvbnMoZSk7cmV0dXJuIGkuZWxlbWVudC5yZW1vdmVDaGlsZChlKSxufX0sdGhpcy5jcmVhdGVQZW49ZnVuY3Rpb24odCxlLG4pe251bGw9PW4mJihuPWkuZWxlbWVudCk7dmFyIHI9WGd0LmFwcGVuZChuLCJkaXYiLCJ0ZXh0LWJsb2NrIixpLmNsYXNzTmFtZSk7cmV0dXJuIHIuc3R5bGUucG9zaXRpb249InJlbGF0aXZlIixyLnN0eWxlLnRyYW5zZm9ybT0idHJhbnNsYXRlKDAsIC0xZW0pIHRyYW5zbGF0ZSgiK2UudHJhbnNsYXRlWzBdKyJweCwgIitlLnRyYW5zbGF0ZVsxXSsicHgpIHJvdGF0ZSgiK2Uucm90YXRlKyJkZWcpIixyLnN0eWxlLnRyYW5zZm9ybU9yaWdpbj0iMCAxLjJlbSIsaS5hZGRUaXRsZSYmci5zZXRBdHRyaWJ1dGUoInRpdGxlIix0KSxpLmNyZWF0ZUh0bWxMaW5lUGVuKHIpfX1yZXR1cm4gdC5wcm90b3R5cGUuc2V0QWRkVGl0bGU9ZnVuY3Rpb24odCl7dGhpcy5hZGRUaXRsZT10fSx0LnByb3RvdHlwZS5jcmVhdGVIdG1sTGluZVBlbj1mdW5jdGlvbih0KXtyZXR1cm57d3JpdGU6ZnVuY3Rpb24oZSxuLGkscixvKXt2YXIgYT1YZ3QuYXBwZW5kKHQsImRpdiIsInRleHQtbGluZSIpO2EudGV4dENvbnRlbnQ9ZSxhLnN0eWxlLndpZHRoPW4rInB4IixhLnN0eWxlLnRleHRBbGlnbj1pLGEuc3R5bGUucG9zaXRpb249ImFic29sdXRlIixhLnN0eWxlLndoaXRlU3BhY2U9Im5vd3JhcCIsYS5zdHlsZS50b3A9bysicHgiLGEuc3R5bGUubGVmdD1yKyJweCJ9fX0sdH0pKCk7WWd0Lkh0bWxDb250ZXh0PSRndCxPYmplY3QuZGVmaW5lUHJvcGVydHkoTmd0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgS2d0PUlndCxaZ3Q9WWd0LEpndD0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LmFwcGVuZD1mdW5jdGlvbihlLG4pe2Zvcih2YXIgaT1bXSxyPTI7cjxhcmd1bWVudHMubGVuZ3RoO3IrKylpW3ItMl09YXJndW1lbnRzW3JdO3ZhciBvPXQuY3JlYXRlLmFwcGx5KHQsW25dLmNvbmNhdChpKSk7cmV0dXJuIGUuYXBwZW5kQ2hpbGQobyksb30sdC5jcmVhdGU9ZnVuY3Rpb24oZSl7Zm9yKHZhciBuPVtdLGk9MTtpPGFyZ3VtZW50cy5sZW5ndGg7aSsrKW5baS0xXT1hcmd1bWVudHNbaV07dmFyIHI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHQuU1ZHX05TLGUpO3JldHVybiBaZ3QuSHRtbFV0aWxzLmFkZENsYXNzZXMuYXBwbHkoWmd0Lkh0bWxVdGlscyxbcl0uY29uY2F0KG4pKSxyfSx0LmdldERpbWVuc2lvbnM9ZnVuY3Rpb24odCl7aWYodC5nZXRCQm94KXRyeXt2YXIgZT10LmdldEJCb3goKTtyZXR1cm57d2lkdGg6ZS53aWR0aCxoZWlnaHQ6ZS5oZWlnaHR9fWNhdGNoKHQpe31yZXR1cm57aGVpZ2h0OjAsd2lkdGg6MH19LHR9KSgpO0pndC5TVkdfTlM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIixOZ3QuU3ZnVXRpbHM9Smd0O3ZhciBRZ3Q9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUsbil7dm9pZCAwPT09biYmKG49ITEpO3ZhciBpPXRoaXM7dGhpcy5lbGVtZW50PXQsdGhpcy5jbGFzc05hbWU9ZSx0aGlzLmFkZFRpdGxlRWxlbWVudD1uLHRoaXMuY3JlYXRlUnVsZXI9ZnVuY3Rpb24oKXt2YXIgdD1pLmdldFRleHRFbGVtZW50cyhpLmVsZW1lbnQpLGU9dC5wYXJlbnRFbGVtZW50LG49dC5jb250YWluZXJFbGVtZW50LHI9dC50ZXh0RWxlbWVudDtyZXR1cm4gZnVuY3Rpb24odCl7ZS5hcHBlbmRDaGlsZChuKSxyLnRleHRDb250ZW50PXQ7dmFyIGk9Smd0LmdldERpbWVuc2lvbnMocik7cmV0dXJuIGUucmVtb3ZlQ2hpbGQobiksaX19LHRoaXMuY3JlYXRlUGVuPWZ1bmN0aW9uKHQsZSxuKXtudWxsPT1uJiYobj1pLmVsZW1lbnQpO3ZhciByPUpndC5hcHBlbmQobiwiZyIsInRleHQtY29udGFpbmVyIixpLmNsYXNzTmFtZSk7aS5hZGRUaXRsZUVsZW1lbnQmJihKZ3QuYXBwZW5kKHIsInRpdGxlIikudGV4dENvbnRlbnQ9dCxyLnNldEF0dHJpYnV0ZSgidGl0bGUiLHQpKTt2YXIgbz1KZ3QuYXBwZW5kKHIsImciLCJ0ZXh0LWFyZWEiKTtyZXR1cm4gby5zZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK2UudHJhbnNsYXRlWzBdKyIsIitlLnRyYW5zbGF0ZVsxXSsiKXJvdGF0ZSgiK2Uucm90YXRlKyIpIiksaS5jcmVhdGVTdmdMaW5lUGVuKG8pfX1yZXR1cm4gdC5wcm90b3R5cGUuc2V0QWRkVGl0bGVFbGVtZW50PWZ1bmN0aW9uKHQpe3RoaXMuYWRkVGl0bGVFbGVtZW50PXR9LHQucHJvdG90eXBlLmNyZWF0ZVN2Z0xpbmVQZW49ZnVuY3Rpb24oZSl7cmV0dXJue3dyaXRlOmZ1bmN0aW9uKG4saSxyLG8sYSl7bys9aSpLZ3QuV3JpdGVyLlhPZmZzZXRGYWN0b3Jbcl07dmFyIHM9Smd0LmFwcGVuZChlLCJ0ZXh0IiwidGV4dC1saW5lIik7cy50ZXh0Q29udGVudD1uLHMuc2V0QXR0cmlidXRlKCJ0ZXh0LWFuY2hvciIsdC5BbmNob3JNYXBbcl0pLHMuc2V0QXR0cmlidXRlKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitvKyIsIithKyIpIikscy5zZXRBdHRyaWJ1dGUoInkiLCItMC4yNWVtIil9fX0sdC5wcm90b3R5cGUuZ2V0VGV4dEVsZW1lbnRzPWZ1bmN0aW9uKHQpe2lmKCJ0ZXh0Ij09PXQudGFnTmFtZSlyZXR1cm4gbnVsbD09KGU9dC5wYXJlbnRFbGVtZW50KSYmKGU9dC5wYXJlbnROb2RlKSxlLnJlbW92ZUNoaWxkKHQpLHtjb250YWluZXJFbGVtZW50OnQscGFyZW50RWxlbWVudDplLHRleHRFbGVtZW50OnR9O3ZhciBlLG49dC5xdWVyeVNlbGVjdG9yKCJ0ZXh0Iik7aWYobnVsbCE9bilyZXR1cm4gbnVsbD09KGU9bi5wYXJlbnRFbGVtZW50KSYmKGU9bi5wYXJlbnROb2RlKSxlLnJlbW92ZUNoaWxkKG4pLHtjb250YWluZXJFbGVtZW50Om4scGFyZW50RWxlbWVudDplLHRleHRFbGVtZW50Om59O3ZhciBpPUpndC5jcmVhdGUoInRleHQiLHRoaXMuY2xhc3NOYW1lKTtyZXR1cm57Y29udGFpbmVyRWxlbWVudDppLHBhcmVudEVsZW1lbnQ6dCx0ZXh0RWxlbWVudDppfX0sdH0pKCk7UWd0LkFuY2hvck1hcD17Y2VudGVyOiJtaWRkbGUiLGxlZnQ6InN0YXJ0IixyaWdodDoiZW5kIn0sTmd0LlN2Z0NvbnRleHQ9UWd0O3ZhciB0X3Q9e307T2JqZWN0LmRlZmluZVByb3BlcnR5KHRfdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGVfdD1JZ3Qsbl90PShmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLG4pe3ZvaWQgMD09PWUmJihlPTEwKSx2b2lkIDA9PT1uJiYobj17fSk7dmFyIGk9dGhpczt0aGlzLmN0eD10LHRoaXMubGluZUhlaWdodD1lLHRoaXMuc3R5bGU9bix0aGlzLmNyZWF0ZVJ1bGVyPWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBpLmN0eC5mb250PWkuc3R5bGUuZm9udCx7d2lkdGg6aS5jdHgubWVhc3VyZVRleHQodCkud2lkdGgsaGVpZ2h0OmkubGluZUhlaWdodH19fSx0aGlzLmNyZWF0ZVBlbj1mdW5jdGlvbih0LGUsbil7cmV0dXJuIG51bGw9PW4mJihuPWkuY3R4KSxuLnNhdmUoKSxuLnRyYW5zbGF0ZShlLnRyYW5zbGF0ZVswXSxlLnRyYW5zbGF0ZVsxXSksbi5yb3RhdGUoZS5yb3RhdGUqTWF0aC5QSS8xODApLGkuY3JlYXRlQ2FudmFzUGVuKG4pfSx2b2lkIDA9PT10aGlzLnN0eWxlLmZpbGwmJih0aGlzLnN0eWxlLmZpbGw9IiM0NDQiKX1yZXR1cm4gdC5wcm90b3R5cGUuY3JlYXRlQ2FudmFzUGVuPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7cmV0dXJue2Rlc3Ryb3k6ZnVuY3Rpb24oKXt0LnJlc3RvcmUoKX0sd3JpdGU6ZnVuY3Rpb24obixpLHIsbyxhKXtvKz1pKmVfdC5Xcml0ZXIuWE9mZnNldEZhY3RvcltyXSx0LnRleHRBbGlnbj1yLG51bGwhPWUuc3R5bGUuZm9udCYmKHQuZm9udD1lLnN0eWxlLmZvbnQpLG51bGwhPWUuc3R5bGUuZmlsbCYmKHQuZmlsbFN0eWxlPWUuc3R5bGUuZmlsbCx0LmZpbGxUZXh0KG4sbyxhKSksbnVsbCE9ZS5zdHlsZS5zdHJva2UmJih0LnN0cm9rZVN0eWxlPWUuc3R5bGUuZmlsbCx0LnN0cm9rZVRleHQobixvLGEpKX19fSx0fSkoKTt0X3QuQ2FudmFzQ29udGV4dD1uX3QsKGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7Zm9yKHZhciBuIGluIGUpdC5oYXNPd25Qcm9wZXJ0eShuKXx8KHRbbl09ZVtuXSl9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGUoTmd0KSxlKHRfdCksZShZZ3QpfSkoUGd0KTt2YXIgaV90PXt9LHJfdD17fTtPYmplY3QuZGVmaW5lUHJvcGVydHkocl90LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgb190PShmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5ydWxlcj1udWxsIT10LmNyZWF0ZVJ1bGVyP3QuY3JlYXRlUnVsZXIoKTp0fXJldHVybiB0LnByb3RvdHlwZS5tZWFzdXJlPWZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT10LkhFSUdIVF9URVhUKSx0aGlzLnJ1bGVyKGUpfSx0fSkoKTtvX3QuSEVJR0hUX1RFWFQ9ImJkcHFsIixyX3QuQWJzdHJhY3RNZWFzdXJlcj1vX3Q7dmFyIGFfdD17fSxzX3Q9e30sbF90PXt9LGNfdD1TZSYmU2UuX19leHRlbmRzfHwoZnVuY3Rpb24oKXt2YXIgdD1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24odCxlKXt0Ll9fcHJvdG9fXz1lfXx8ZnVuY3Rpb24odCxlKXtmb3IodmFyIG4gaW4gZSllLmhhc093blByb3BlcnR5KG4pJiYodFtuXT1lW25dKX07cmV0dXJuIGZ1bmN0aW9uKGUsbil7ZnVuY3Rpb24gaSgpe3RoaXMuY29uc3RydWN0b3I9ZX10KGUsbiksZS5wcm90b3R5cGU9bnVsbD09PW4/T2JqZWN0LmNyZWF0ZShuKTooaS5wcm90b3R5cGU9bi5wcm90b3R5cGUsbmV3IGkpfX0pKCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGxfdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHVfdD1yX3QsaF90PShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbil7dm9pZCAwPT09biYmKG49ITEpO3ZhciBpPXQuY2FsbCh0aGlzLGUpfHx0aGlzO3JldHVybiBpLnVzZUd1YXJkcz1uLGl9cmV0dXJuIGNfdChlLHQpLGUucHJvdG90eXBlLl9hZGRHdWFyZHM9ZnVuY3Rpb24odCl7cmV0dXJuIHVfdC5BYnN0cmFjdE1lYXN1cmVyLkhFSUdIVF9URVhUK3QrdV90LkFic3RyYWN0TWVhc3VyZXIuSEVJR0hUX1RFWFR9LGUucHJvdG90eXBlLl9tZWFzdXJlTGluZT1mdW5jdGlvbihlLG4pe3ZvaWQgMD09PW4mJihuPSExKTt2YXIgaT10aGlzLnVzZUd1YXJkc3x8bnx8L15bXHQgXSQvLnRlc3QoZSkscj1pP3RoaXMuX2FkZEd1YXJkcyhlKTplLG89dC5wcm90b3R5cGUubWVhc3VyZS5jYWxsKHRoaXMscik7cmV0dXJuIG8ud2lkdGgtPWk/Mip0aGlzLmdldEd1YXJkV2lkdGgoKTowLG99LGUucHJvdG90eXBlLm1lYXN1cmU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztpZih2b2lkIDA9PT10JiYodD11X3QuQWJzdHJhY3RNZWFzdXJlci5IRUlHSFRfVEVYVCksIiI9PT10LnRyaW0oKSlyZXR1cm57d2lkdGg6MCxoZWlnaHQ6MH07dmFyIG49dC50cmltKCkuc3BsaXQoIlxuIikubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gZS5fbWVhc3VyZUxpbmUodCl9KSk7cmV0dXJue2hlaWdodDpuLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCtlLmhlaWdodH0pLDApLHdpZHRoOm4ucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiBNYXRoLm1heCh0LGUud2lkdGgpfSksMCl9fSxlLnByb3RvdHlwZS5nZXRHdWFyZFdpZHRoPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PXRoaXMuZ3VhcmRXaWR0aCYmKHRoaXMuZ3VhcmRXaWR0aD10LnByb3RvdHlwZS5tZWFzdXJlLmNhbGwodGhpcykud2lkdGgpLHRoaXMuZ3VhcmRXaWR0aH0sZX0pKHVfdC5BYnN0cmFjdE1lYXN1cmVyKTtsX3QuTWVhc3VyZXI9aF90O3ZhciBkX3Q9U2UmJlNlLl9fZXh0ZW5kc3x8KGZ1bmN0aW9uKCl7dmFyIHQ9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKHQsZSl7dC5fX3Byb3RvX189ZX18fGZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShuKSYmKHRbbl09ZVtuXSl9O3JldHVybiBmdW5jdGlvbihlLG4pe2Z1bmN0aW9uIGkoKXt0aGlzLmNvbnN0cnVjdG9yPWV9dChlLG4pLGUucHJvdG90eXBlPW51bGw9PT1uP09iamVjdC5jcmVhdGUobik6KGkucHJvdG90eXBlPW4ucHJvdG90eXBlLG5ldyBpKX19KSgpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShzX3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBwX3Q9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXtyZXR1cm4gbnVsbCE9PXQmJnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfXJldHVybiBkX3QoZSx0KSxlLnByb3RvdHlwZS5fbWVhc3VyZUNoYXJhY3Rlcj1mdW5jdGlvbihlKXtyZXR1cm4gdC5wcm90b3R5cGUuX21lYXN1cmVMaW5lLmNhbGwodGhpcyxlKX0sZS5wcm90b3R5cGUuX21lYXN1cmVMaW5lPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj10LnNwbGl0KCIiKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBlLl9tZWFzdXJlQ2hhcmFjdGVyKHQpfSkpO3JldHVybntoZWlnaHQ6bi5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIE1hdGgubWF4KHQsZS5oZWlnaHQpfSksMCksd2lkdGg6bi5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQrZS53aWR0aH0pLDApfX0sZX0pKGxfdC5NZWFzdXJlcik7c190LkNoYXJhY3Rlck1lYXN1cmVyPXBfdDt2YXIgZl90PVNlJiZTZS5fX2V4dGVuZHN8fChmdW5jdGlvbigpe3ZhciB0PU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbih0LGUpe3QuX19wcm90b19fPWV9fHxmdW5jdGlvbih0LGUpe2Zvcih2YXIgbiBpbiBlKWUuaGFzT3duUHJvcGVydHkobikmJih0W25dPWVbbl0pfTtyZXR1cm4gZnVuY3Rpb24oZSxuKXtmdW5jdGlvbiBpKCl7dGhpcy5jb25zdHJ1Y3Rvcj1lfXQoZSxuKSxlLnByb3RvdHlwZT1udWxsPT09bj9PYmplY3QuY3JlYXRlKG4pOihpLnByb3RvdHlwZT1uLnByb3RvdHlwZSxuZXcgaSl9fSkoKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoYV90LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbV90PU9ndCxnX3Q9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuKXt2YXIgaT10LmNhbGwodGhpcyxlLG4pfHx0aGlzO3JldHVybiBpLmNhY2hlPW5ldyBtX3QuQ2FjaGUoKGZ1bmN0aW9uKHQpe3JldHVybiBpLl9tZWFzdXJlQ2hhcmFjdGVyTm90RnJvbUNhY2hlKHQpfSkpLGl9cmV0dXJuIGZfdChlLHQpLGUucHJvdG90eXBlLl9tZWFzdXJlQ2hhcmFjdGVyTm90RnJvbUNhY2hlPWZ1bmN0aW9uKGUpe3JldHVybiB0LnByb3RvdHlwZS5fbWVhc3VyZUNoYXJhY3Rlci5jYWxsKHRoaXMsZSl9LGUucHJvdG90eXBlLl9tZWFzdXJlQ2hhcmFjdGVyPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNhY2hlLmdldCh0KX0sZS5wcm90b3R5cGUucmVzZXQ9ZnVuY3Rpb24oKXt0aGlzLmNhY2hlLmNsZWFyKCl9LGV9KShzX3QuQ2hhcmFjdGVyTWVhc3VyZXIpO2FfdC5DYWNoZUNoYXJhY3Rlck1lYXN1cmVyPWdfdDt2YXIgX190PXt9LHlfdD1TZSYmU2UuX19leHRlbmRzfHwoZnVuY3Rpb24oKXt2YXIgdD1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24odCxlKXt0Ll9fcHJvdG9fXz1lfXx8ZnVuY3Rpb24odCxlKXtmb3IodmFyIG4gaW4gZSllLmhhc093blByb3BlcnR5KG4pJiYodFtuXT1lW25dKX07cmV0dXJuIGZ1bmN0aW9uKGUsbil7ZnVuY3Rpb24gaSgpe3RoaXMuY29uc3RydWN0b3I9ZX10KGUsbiksZS5wcm90b3R5cGU9bnVsbD09PW4/T2JqZWN0LmNyZWF0ZShuKTooaS5wcm90b3R5cGU9bi5wcm90b3R5cGUsbmV3IGkpfX0pKCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KF9fdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHZfdD1PZ3QsYl90PXJfdCx4X3Q9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7dmFyIG49dC5jYWxsKHRoaXMsZSl8fHRoaXM7cmV0dXJuIG4uZGltQ2FjaGU9bmV3IHZfdC5DYWNoZSgoZnVuY3Rpb24odCl7cmV0dXJuIG4uX21lYXN1cmVOb3RGcm9tQ2FjaGUodCl9KSksbn1yZXR1cm4geV90KGUsdCksZS5wcm90b3R5cGUuX21lYXN1cmVOb3RGcm9tQ2FjaGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHQucHJvdG90eXBlLm1lYXN1cmUuY2FsbCh0aGlzLGUpfSxlLnByb3RvdHlwZS5tZWFzdXJlPWZ1bmN0aW9uKHQpe3JldHVybiB2b2lkIDA9PT10JiYodD1iX3QuQWJzdHJhY3RNZWFzdXJlci5IRUlHSFRfVEVYVCksdGhpcy5kaW1DYWNoZS5nZXQodCl9LGUucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKCl7dGhpcy5kaW1DYWNoZS5jbGVhcigpLHQucHJvdG90eXBlLnJlc2V0LmNhbGwodGhpcyl9LGV9KShhX3QuQ2FjaGVDaGFyYWN0ZXJNZWFzdXJlcik7X190LkNhY2hlTWVhc3VyZXI9eF90LChmdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUpe2Zvcih2YXIgbiBpbiBlKXQuaGFzT3duUHJvcGVydHkobil8fCh0W25dPWVbbl0pfU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxlKHJfdCksZShhX3QpLGUoX190KSxlKHNfdCksZShsX3QpfSkoaV90KTt2YXIgd190PXt9LFNfdD17fSxNX3Q9e30sRV90PXt9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShFX3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBUX3Q9T2d0LENfdD0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dGhpcy5tYXhMaW5lcygxLzApLHRoaXMudGV4dFRyaW1taW5nKCJlbGxpcHNpcyIpLHRoaXMuYWxsb3dCcmVha2luZ1dvcmRzKCExKSx0aGlzLl90b2tlbml6ZXI9bmV3IFRfdC5Ub2tlbml6ZXIsdGhpcy5fYnJlYWtpbmdDaGFyYWN0ZXI9Ii0ifXJldHVybiB0LnByb3RvdHlwZS5tYXhMaW5lcz1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9tYXhMaW5lczoodGhpcy5fbWF4TGluZXM9dCx0aGlzKX0sdC5wcm90b3R5cGUudGV4dFRyaW1taW5nPWZ1bmN0aW9uKHQpe2lmKG51bGw9PXQpcmV0dXJuIHRoaXMuX3RleHRUcmltbWluZztpZigiZWxsaXBzaXMiIT09dCYmIm5vbmUiIT09dCl0aHJvdyBuZXcgRXJyb3IodCsiIC0gdW5zdXBwb3J0ZWQgdGV4dCB0cmltbWluZyBvcHRpb24uIik7cmV0dXJuIHRoaXMuX3RleHRUcmltbWluZz10LHRoaXN9LHQucHJvdG90eXBlLmFsbG93QnJlYWtpbmdXb3Jkcz1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9hbGxvd0JyZWFraW5nV29yZHM6KHRoaXMuX2FsbG93QnJlYWtpbmdXb3Jkcz10LHRoaXMpfSx0LnByb3RvdHlwZS53cmFwPWZ1bmN0aW9uKHQsZSxuLGkpe3ZhciByPXRoaXM7dm9pZCAwPT09aSYmKGk9MS8wKTt2YXIgbz17bm9Ccm9rZVdvcmRzOjAsbm9MaW5lczowLG9yaWdpbmFsVGV4dDp0LHRydW5jYXRlZFRleHQ6IiIsd3JhcHBlZFRleHQ6IiJ9LGE9e2F2YWlsYWJsZUxpbmVzOk1hdGgubWluKE1hdGguZmxvb3IoaS9lLm1lYXN1cmUoKS5oZWlnaHQpLHRoaXMuX21heExpbmVzKSxhdmFpbGFibGVXaWR0aDpuLGNhbkZpdFRleHQ6ITAsY3VycmVudExpbmU6IiIsd3JhcHBpbmc6b30scz10LnNwbGl0KCJcbiIpO3JldHVybiBzLnJlZHVjZSgoZnVuY3Rpb24odCxuLGkpe3JldHVybiByLmJyZWFrTGluZVRvRml0V2lkdGgodCxuLGkhPT1zLmxlbmd0aC0xLGUpfSksYSkud3JhcHBpbmd9LHQucHJvdG90eXBlLmJyZWFrTGluZVRvRml0V2lkdGg9ZnVuY3Rpb24odCxlLG4saSl7dmFyIHI9dGhpczt0LmNhbkZpdFRleHR8fCIiPT09dC53cmFwcGluZy50cnVuY2F0ZWRUZXh0fHwodC53cmFwcGluZy50cnVuY2F0ZWRUZXh0Kz0iXG4iKSx0PXRoaXMuX3Rva2VuaXplci50b2tlbml6ZShlKS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHIud3JhcE5leHRUb2tlbihlLHQsaSl9KSx0KTt2YXIgbz1UX3QuU3RyaW5nTWV0aG9kcy50cmltRW5kKHQuY3VycmVudExpbmUpO3JldHVybiB0LndyYXBwaW5nLm5vTGluZXMrPSsoIiIhPT1vKSx0LndyYXBwaW5nLm5vTGluZXM9PT10LmF2YWlsYWJsZUxpbmVzJiYibm9uZSIhPT10aGlzLl90ZXh0VHJpbW1pbmcmJm4/dC5jYW5GaXRUZXh0PSExOnQud3JhcHBpbmcud3JhcHBlZFRleHQrPW8sdC5jdXJyZW50TGluZT0iXG4iLHR9LHQucHJvdG90eXBlLmNhbkZpdFRva2VuPWZ1bmN0aW9uKHQsZSxuKXt2YXIgaT10aGlzLHI9dC5zcGxpdCgiIikubWFwKChmdW5jdGlvbihlLG4pe3JldHVybiBuIT09dC5sZW5ndGgtMT9lK2kuX2JyZWFraW5nQ2hhcmFjdGVyOmV9KSk7cmV0dXJuIG4ubWVhc3VyZSh0KS53aWR0aDw9ZXx8ci5ldmVyeSgoZnVuY3Rpb24odCl7cmV0dXJuIG4ubWVhc3VyZSh0KS53aWR0aDw9ZX0pKX0sdC5wcm90b3R5cGUuYWRkRWxsaXBzaXM9ZnVuY3Rpb24odCxlLG4pe2lmKCJub25lIj09PXRoaXMuX3RleHRUcmltbWluZylyZXR1cm57cmVtYWluaW5nVG9rZW46IiIsd3JhcHBlZFRva2VuOnR9O3ZhciBpPXQuc3Vic3RyaW5nKDApLnRyaW0oKSxyPW4ubWVhc3VyZShpKS53aWR0aCxvPW4ubWVhc3VyZSgiLi4uIikud2lkdGgsYT10Lmxlbmd0aD4wJiYiXG4iPT09dFswXT8iXG4iOiIiO2lmKGU8PW8pe3ZhciBzPU1hdGguZmxvb3IoZS8oby8zKSk7cmV0dXJue3JlbWFpbmluZ1Rva2VuOnQsd3JhcHBlZFRva2VuOmErIi4uLiIuc3Vic3RyKDAscyl9fWZvcig7citvPmU7KWk9VF90LlN0cmluZ01ldGhvZHMudHJpbUVuZChpLnN1YnN0cigwLGkubGVuZ3RoLTEpKSxyPW4ubWVhc3VyZShpKS53aWR0aDtyZXR1cm57cmVtYWluaW5nVG9rZW46VF90LlN0cmluZ01ldGhvZHMudHJpbUVuZCh0LnN1YnN0cmluZyhpLmxlbmd0aCksIi0iKS50cmltKCksd3JhcHBlZFRva2VuOmEraSsiLi4uIn19LHQucHJvdG90eXBlLndyYXBOZXh0VG9rZW49ZnVuY3Rpb24odCxlLG4pe2lmKCFlLmNhbkZpdFRleHR8fGUuYXZhaWxhYmxlTGluZXM9PT1lLndyYXBwaW5nLm5vTGluZXN8fCF0aGlzLmNhbkZpdFRva2VuKHQsZS5hdmFpbGFibGVXaWR0aCxuKSlyZXR1cm4gdGhpcy5maW5pc2hXcmFwcGluZyh0LGUsbik7Zm9yKHZhciBpPXQ7aTspe3ZhciByPXRoaXMuYnJlYWtUb2tlblRvRml0SW5XaWR0aChpLGUuY3VycmVudExpbmUsZS5hdmFpbGFibGVXaWR0aCxuKTtpZihlLmN1cnJlbnRMaW5lPXIubGluZSxudWxsIT0oaT1yLnJlbWFpbmluZ1Rva2VuKSl7aWYoZS53cmFwcGluZy5ub0Jyb2tlV29yZHMrPStyLmJyZWFrV29yZCwrK2Uud3JhcHBpbmcubm9MaW5lcyxlLmF2YWlsYWJsZUxpbmVzPT09ZS53cmFwcGluZy5ub0xpbmVzKXt2YXIgbz10aGlzLmFkZEVsbGlwc2lzKGUuY3VycmVudExpbmUsZS5hdmFpbGFibGVXaWR0aCxuKTtyZXR1cm4gZS53cmFwcGluZy53cmFwcGVkVGV4dCs9by53cmFwcGVkVG9rZW4sZS53cmFwcGluZy50cnVuY2F0ZWRUZXh0Kz1vLnJlbWFpbmluZ1Rva2VuK2ksZS5jdXJyZW50TGluZT0iXG4iLGV9ZS53cmFwcGluZy53cmFwcGVkVGV4dCs9VF90LlN0cmluZ01ldGhvZHMudHJpbUVuZChlLmN1cnJlbnRMaW5lKSxlLmN1cnJlbnRMaW5lPSJcbiJ9fXJldHVybiBlfSx0LnByb3RvdHlwZS5maW5pc2hXcmFwcGluZz1mdW5jdGlvbih0LGUsbil7aWYoZS5jYW5GaXRUZXh0JiZlLmF2YWlsYWJsZUxpbmVzIT09ZS53cmFwcGluZy5ub0xpbmVzJiYibm9uZSIhPT10aGlzLl90ZXh0VHJpbW1pbmcpe3ZhciBpPXRoaXMuYWRkRWxsaXBzaXMoZS5jdXJyZW50TGluZSt0LGUuYXZhaWxhYmxlV2lkdGgsbik7ZS53cmFwcGluZy53cmFwcGVkVGV4dCs9aS53cmFwcGVkVG9rZW4sZS53cmFwcGluZy50cnVuY2F0ZWRUZXh0Kz1pLnJlbWFpbmluZ1Rva2VuLGUud3JhcHBpbmcubm9Ccm9rZVdvcmRzKz0rKGkucmVtYWluaW5nVG9rZW4ubGVuZ3RoPHQubGVuZ3RoKSxlLndyYXBwaW5nLm5vTGluZXMrPSsoaS53cmFwcGVkVG9rZW4ubGVuZ3RoPjApLGUuY3VycmVudExpbmU9IiJ9ZWxzZSBlLndyYXBwaW5nLnRydW5jYXRlZFRleHQrPXQ7cmV0dXJuIGUuY2FuRml0VGV4dD0hMSxlfSx0LnByb3RvdHlwZS5icmVha1Rva2VuVG9GaXRJbldpZHRoPWZ1bmN0aW9uKHQsZSxuLGkscil7aWYodm9pZCAwPT09ciYmKHI9dGhpcy5fYnJlYWtpbmdDaGFyYWN0ZXIpLGkubWVhc3VyZShlK3QpLndpZHRoPD1uKXJldHVybnticmVha1dvcmQ6ITEsbGluZTplK3QscmVtYWluaW5nVG9rZW46bnVsbH07aWYoIiI9PT10LnRyaW0oKSlyZXR1cm57YnJlYWtXb3JkOiExLGxpbmU6ZSxyZW1haW5pbmdUb2tlbjoiIn07aWYoIXRoaXMuX2FsbG93QnJlYWtpbmdXb3JkcyYmIiIhPT1lLnRyaW0oKSlyZXR1cm57YnJlYWtXb3JkOiExLGxpbmU6ZSxyZW1haW5pbmdUb2tlbjp0fTtmb3IodmFyIG89MDtvPHQubGVuZ3RoJiZpLm1lYXN1cmUoZSt0LnN1YnN0cmluZygwLG8rMSkrcikud2lkdGg8PW47KSsrbzt2YXIgYT0iIjtyZXR1cm4gbz4wJiYoYT1yKSx7YnJlYWtXb3JkOm8+MCxsaW5lOmUrdC5zdWJzdHJpbmcoMCxvKSthLHJlbWFpbmluZ1Rva2VuOnQuc3Vic3RyaW5nKG8pfX0sdH0pKCk7RV90LldyYXBwZXI9Q190O3ZhciBBX3Q9U2UmJlNlLl9fZXh0ZW5kc3x8KGZ1bmN0aW9uKCl7dmFyIHQ9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKHQsZSl7dC5fX3Byb3RvX189ZX18fGZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShuKSYmKHRbbl09ZVtuXSl9O3JldHVybiBmdW5jdGlvbihlLG4pe2Z1bmN0aW9uIGkoKXt0aGlzLmNvbnN0cnVjdG9yPWV9dChlLG4pLGUucHJvdG90eXBlPW51bGw9PT1uP09iamVjdC5jcmVhdGUobik6KGkucHJvdG90eXBlPW4ucHJvdG90eXBlLG5ldyBpKX19KSgpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShNX3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBrX3Q9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXtyZXR1cm4gbnVsbCE9PXQmJnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfXJldHVybiBBX3QoZSx0KSxlLnByb3RvdHlwZS53cmFwPWZ1bmN0aW9uKG4saSxyLG8pe3ZhciBhPXRoaXM7aWYodm9pZCAwPT09byYmKG89MS8wKSxuLnNwbGl0KCJcbiIpLmxlbmd0aD4xKXRocm93IG5ldyBFcnJvcigiU2luZ2xlTGluZVdyYXBwZXIgaXMgZGVzaWduZWQgdG8gd29yayBvbmx5IG9uIHNpbmdsZSBsaW5lIik7dmFyIHM9ZnVuY3Rpb24oZSl7cmV0dXJuIHQucHJvdG90eXBlLndyYXAuY2FsbChhLG4saSxlLG8pfSxsPXMocik7aWYobC5ub0xpbmVzPDIpcmV0dXJuIGw7Zm9yKHZhciBjPTAsdT1yLGg9MDtoPGUuTk9fV1JBUF9JVEVSQVRJT05TJiZ1PmM7KytoKXt2YXIgZD0odStjKS8yLHA9cyhkKTt0aGlzLmFyZVNhbWVSZXN1bHRzKGwscCk/KHU9ZCxsPXApOmM9ZH1yZXR1cm4gbH0sZS5wcm90b3R5cGUuYXJlU2FtZVJlc3VsdHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5ub0xpbmVzPT09ZS5ub0xpbmVzJiZ0LnRydW5jYXRlZFRleHQ9PT1lLnRydW5jYXRlZFRleHR9LGV9KShFX3QuV3JhcHBlcik7a190Lk5PX1dSQVBfSVRFUkFUSU9OUz01LE1fdC5TaW5nbGVMaW5lV3JhcHBlcj1rX3QsKGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7Zm9yKHZhciBuIGluIGUpdC5oYXNPd25Qcm9wZXJ0eShuKXx8KHRbbl09ZVtuXSl9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGUoTV90KSxlKEVfdCl9KShTX3QpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh3X3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBMX3Q9UGd0LFBfdD1pX3QsTl90PVNfdCxJX3Q9SWd0LFJfdD0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMuY29udGV4dD10LHRoaXMubWVhc3VyZXI9bmV3IFBfdC5DYWNoZU1lYXN1cmVyKHRoaXMuY29udGV4dCksdGhpcy53cmFwcGVyPW5ldyBOX3QuV3JhcHBlcix0aGlzLndyaXRlcj1uZXcgSV90LldyaXRlcih0aGlzLm1lYXN1cmVyLHRoaXMuY29udGV4dCx0aGlzLndyYXBwZXIpfXJldHVybiB0LnN2Zz1mdW5jdGlvbihlLG4saSl7cmV0dXJuIG5ldyB0KG5ldyBMX3QuU3ZnQ29udGV4dChlLG4saSkpfSx0LmNhbnZhcz1mdW5jdGlvbihlLG4saSl7cmV0dXJuIG5ldyB0KG5ldyBMX3QuQ2FudmFzQ29udGV4dChlLG4saSkpfSx0Lmh0bWw9ZnVuY3Rpb24oZSxuLGkpe3JldHVybiBuZXcgdChuZXcgTF90Lkh0bWxDb250ZXh0KGUsbixpKSl9LHQucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKHQsZSxuLGkscil7dGhpcy53cml0ZXIud3JpdGUodCxlLG4saSxyKX0sdC5wcm90b3R5cGUuY2xlYXJNZWFzdXJlckNhY2hlPWZ1bmN0aW9uKCl7dGhpcy5tZWFzdXJlci5yZXNldCgpfSx0fSkoKTt3X3QuVHlwZXNldHRlcj1SX3QsKGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7Zm9yKHZhciBuIGluIGUpdC5oYXNPd25Qcm9wZXJ0eShuKXx8KHRbbl09ZVtuXSl9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGUoUGd0KSxlKGlfdCksZSh3X3QpLGUoT2d0KSxlKFNfdCksZShJZ3QpfSkoTGd0KTt2YXIgT190PXt9LHpfdD17fSxEX3Q9e30sQl90PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoQl90LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgSF90PXdwdCxGX3Q9d2luZG93LkFycmF5O0JfdC5hZGQ9ZnVuY3Rpb24gVl90KHQsZSl7aWYodC5sZW5ndGghPT1lLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoImF0dGVtcHRlZCB0byBhZGQgYXJyYXlzIG9mIHVuZXF1YWwgbGVuZ3RoIik7cmV0dXJuIHQubWFwKChmdW5jdGlvbihuLGkpe3JldHVybiB0W2ldK2VbaV19KSl9LEJfdC51bmlxPWZ1bmN0aW9uIFVfdCh0KXt2YXIgZT1IX3Quc2V0KCksbj1bXTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0KXtlLmhhcyhTdHJpbmcodCkpfHwoZS5hZGQoU3RyaW5nKHQpKSxuLnB1c2godCkpfSkpLG59LEJfdC5mbGF0dGVuPWZ1bmN0aW9uIGpfdCh0KXtyZXR1cm4gRl90LnByb3RvdHlwZS5jb25jYXQuYXBwbHkoW10sdCl9LEJfdC5jcmVhdGVGaWxsZWRBcnJheT1mdW5jdGlvbiBHX3QodCxlKXtmb3IodmFyIG49W10saT0wO2k8ZTtpKyspbltpXT0iZnVuY3Rpb24iPT10eXBlb2YgdD90KGkpOnQ7cmV0dXJuIG59O3ZhciBXX3Q9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovT2JqZWN0LmRlZmluZVByb3BlcnR5KFdfdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHFfdD13cHQsWV90PXdpbmRvdy5NYXRoO2Z1bmN0aW9uIFhfdCh0KXt2YXIgZT1xX3QucmdiKHQpLG49ZnVuY3Rpb24odCl7cmV0dXJuKHQvPTI1NSk8PS4wMzkyOD90LzEyLjkyOllfdC5wb3coKHQrLjA1NSkvMS4wNTUsMi40KX07cmV0dXJuLjIxMjYqbihlLnIpKy43MTUyKm4oZS5nKSsuMDcyMipuKGUuYil9V190LmNvbnRyYXN0PWZ1bmN0aW9uICRfdCh0LGUpe3ZhciBuPVhfdCh0KSsuMDUsaT1YX3QoZSkrLjA1O3JldHVybiBuPmk/bi9pOmkvbn0sV190LmxpZ2h0ZW5Db2xvcj1mdW5jdGlvbiBLX3QodCxlKXtyZXR1cm4gcV90LmNvbG9yKHQpLmJyaWdodGVyKGUpLnJnYigpLnRvU3RyaW5nKCl9LFdfdC5jb2xvclRlc3Q9ZnVuY3Rpb24gWl90KHQsZSl7dC5jbGFzc2VkKGUsITApO3ZhciBuPXQuc3R5bGUoImJhY2tncm91bmQtY29sb3IiKTtpZigidHJhbnNwYXJlbnQiPT09bilyZXR1cm4gbnVsbDt2YXIgaT0vXCgoLispXCkvLmV4ZWMobik7aWYoIWkpcmV0dXJuIG51bGw7dmFyIHI9aVsxXS5zcGxpdCgiLCIpLm1hcCgoZnVuY3Rpb24odCl7dmFyIGU9K3Qsbj1lLnRvU3RyaW5nKDE2KTtyZXR1cm4gZTwxNj8iMCIrbjpufSkpO2lmKDQ9PT1yLmxlbmd0aCYmIjAwIj09PXJbM10pcmV0dXJuIG51bGw7dmFyIG89IiMiK3Iuam9pbigiIik7cmV0dXJuIHQuY2xhc3NlZChlLCExKSxvfTt2YXIgSl90PXt9OyEoZnVuY3Rpb24odCl7Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgZT13cHQsbj13aW5kb3cuTWF0aDtmdW5jdGlvbiBpKHQpe3ZhciBlO3RyeXtlPXQubm9kZSgpLmdldEJCb3goKX1jYXRjaCh0KXtlPXt4OjAseTowLHdpZHRoOjAsaGVpZ2h0OjB9fXJldHVybiBlfXQuY29udGFpbnM9ZnVuY3Rpb24gcih0LGUpe2Zvcih2YXIgbj1lO251bGwhPW4mJm4hPT10OyluPW4ucGFyZW50Tm9kZTtyZXR1cm4gbj09PXR9LHQuZWxlbWVudEJCb3g9aSx0LmVudGl0eUJvdW5kcz1mdW5jdGlvbiBvKHQpe2lmKHQgaW5zdGFuY2VvZiBTVkdFbGVtZW50KXJldHVybiBpKGUuc2VsZWN0KHQpKTtpZih0IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpe3ZhciBuPXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJue3g6bi5sZWZ0LHk6bi50b3Asd2lkdGg6bi53aWR0aCxoZWlnaHQ6bi5oZWlnaHR9fXJldHVybnt4OjAseTowLHdpZHRoOjAsaGVpZ2h0OjB9fSx0LlNDUkVFTl9SRUZSRVNIX1JBVEVfTUlMTElTRUNPTkRTPTFlMy82MCx0LnJlcXVlc3RBbmltYXRpb25GcmFtZVBvbHlmaWxsPWZ1bmN0aW9uIGEoZSl7bnVsbCE9d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZT93aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGUpOnNldFRpbWVvdXQoZSx0LlNDUkVFTl9SRUZSRVNIX1JBVEVfTUlMTElTRUNPTkRTKX0sdC5lbGVtZW50V2lkdGg9ZnVuY3Rpb24gcyh0KXt2YXIgbj10IGluc3RhbmNlb2YgZS5zZWxlY3Rpb24/dC5ub2RlKCk6dCxpPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKG4pO3JldHVybiBtKGksIndpZHRoIikrbShpLCJwYWRkaW5nLWxlZnQiKSttKGksInBhZGRpbmctcmlnaHQiKSttKGksImJvcmRlci1sZWZ0LXdpZHRoIikrbShpLCJib3JkZXItcmlnaHQtd2lkdGgiKX0sdC5lbGVtZW50SGVpZ2h0PWZ1bmN0aW9uIGwodCl7dmFyIG49dCBpbnN0YW5jZW9mIGUuc2VsZWN0aW9uP3Qubm9kZSgpOnQsaT13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShuKTtyZXR1cm4gbShpLCJoZWlnaHQiKSttKGksInBhZGRpbmctdG9wIikrbShpLCJwYWRkaW5nLWJvdHRvbSIpK20oaSwiYm9yZGVyLXRvcC13aWR0aCIpK20oaSwiYm9yZGVyLWJvdHRvbS13aWR0aCIpfTt2YXIgYz0iKD86Wy0rXT9bMC05XSpcXC4/WzAtOV0rKSIsdT0iKD86KD86XFxzKyw/XFxzKil8KD86LFxccyopKSIsaD1uZXcgUmVnRXhwKCJ0cmFuc2xhdGVcXHMqXFwoXFxzKigiK2MrIikoPzoiK3UrIigiK2MrIikpPyIrIlxccypcXCkiKSxkPW5ldyBSZWdFeHAoInJvdGF0ZVxccypcXChcXHMqKCIrYysiKSIrIlxccypcXCkiKSxwPW5ldyBSZWdFeHAoInNjYWxlXFxzKlxcKFxccyooIitjKyIpKD86Iit1KyIoIitjKyIpKT8iKyJcXHMqXFwpIik7ZnVuY3Rpb24gZih0KXtpZigibnVtYmVyIj09dHlwZW9mIHQpe3JldHVybnttaW46dCxtYXg6dH19aWYodCBpbnN0YW5jZW9mIE9iamVjdCYmIm1pbiJpbiB0JiYibWF4ImluIHQpcmV0dXJuIHQ7dGhyb3cgbmV3IEVycm9yKCJpbnB1dCAnIit0KyInIGNhbid0IGJlIHBhcnNlZCBhcyBhbiBSYW5nZSIpfWZ1bmN0aW9uIG0odCxlKXt2YXIgbj10LmdldFByb3BlcnR5VmFsdWUoZSk7cmV0dXJuIHBhcnNlRmxvYXQobil8fDB9dC5nZXRUcmFuc2xhdGVWYWx1ZXM9ZnVuY3Rpb24gZyh0KXt2YXIgZT1oLmV4ZWModC5hdHRyKCJ0cmFuc2Zvcm0iKSk7aWYobnVsbCE9ZSl7dmFyIG49ZVsyXTtyZXR1cm5bK2VbMV0sKyh2b2lkIDA9PT1uPzA6bildfXJldHVyblswLDBdfSx0LmdldFJvdGF0ZT1mdW5jdGlvbiBfKHQpe3ZhciBlPWQuZXhlYyh0LmF0dHIoInRyYW5zZm9ybSIpKTtyZXR1cm4gbnVsbCE9ZT8rZVsxXTowfSx0LmdldFNjYWxlVmFsdWVzPWZ1bmN0aW9uIHkodCl7dmFyIGU9cC5leGVjKHQuYXR0cigidHJhbnNmb3JtIikpO2lmKG51bGwhPWUpe3ZhciBuPWVbMV0saT1lWzJdO3JldHVyblsrbixudWxsPT1pPytuOitpXX1yZXR1cm5bMCwwXX0sdC5jbGllbnRSZWN0c092ZXJsYXA9ZnVuY3Rpb24gdih0LGUpe3JldHVybiEobi5mbG9vcih0LnJpZ2h0KTw9bi5jZWlsKGUubGVmdCkpJiYoIShuLmNlaWwodC5sZWZ0KT49bi5mbG9vcihlLnJpZ2h0KSkmJighKG4uZmxvb3IodC5ib3R0b20pPD1uLmNlaWwoZS50b3ApKSYmIShuLmNlaWwodC50b3ApPj1uLmZsb29yKGUuYm90dG9tKSkpKX0sdC5leHBhbmRSZWN0PWZ1bmN0aW9uIGIodCxlKXtyZXR1cm57bGVmdDp0LmxlZnQtZSx0b3A6dC50b3AtZSxyaWdodDp0LnJpZ2h0K2UsYm90dG9tOnQuYm90dG9tK2Usd2lkdGg6dC53aWR0aCsyKmUsaGVpZ2h0OnQuaGVpZ2h0KzIqZX19LHQuY2xpZW50UmVjdEluc2lkZT1mdW5jdGlvbiB4KHQsZSl7cmV0dXJuIG4uZmxvb3IoZS5sZWZ0KTw9bi5jZWlsKHQubGVmdCkmJm4uZmxvb3IoZS50b3ApPD1uLmNlaWwodC50b3ApJiZuLmZsb29yKHQucmlnaHQpPD1uLmNlaWwoZS5yaWdodCkmJm4uZmxvb3IodC5ib3R0b20pPD1uLmNlaWwoZS5ib3R0b20pfSx0LmludGVyc2VjdHNCQm94PWZ1bmN0aW9uIHcodCxlLG4saSl7dm9pZCAwPT09aSYmKGk9LjUpO3ZhciByPWYodCksbz1mKGUpO3JldHVybiBuLngrbi53aWR0aD49ci5taW4taSYmbi54PD1yLm1heCtpJiZuLnkrbi5oZWlnaHQ+PW8ubWluLWkmJm4ueTw9by5tYXgraX0sdC5nZXRIdG1sRWxlbWVudEFuY2VzdG9ycz1mdW5jdGlvbiBTKHQpe2Zvcih2YXIgZT1bXTt0JiZ0IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQ7KWUucHVzaCh0KSx0PXQucGFyZW50RWxlbWVudDtyZXR1cm4gZX0sdC5nZXRFbGVtZW50VHJhbnNmb3JtPWZ1bmN0aW9uIE0odCl7dmFyIGU9d2luZG93LmdldENvbXB1dGVkU3R5bGUodCxudWxsKTtyZXR1cm4oZnVuY3Rpb24gbih0KXtpZihudWxsPT10fHwibm9uZSI9PT10KXJldHVybiBudWxsO3ZhciBlPXQubWF0Y2goRSk7aWYobnVsbD09ZXx8ZS5sZW5ndGg8MilyZXR1cm4gbnVsbDt2YXIgbj1lWzFdLnNwbGl0KFQpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHBhcnNlRmxvYXQodCl9KSk7aWYoNiE9bi5sZW5ndGgpcmV0dXJuIG51bGw7cmV0dXJuIG59KShlLmdldFByb3BlcnR5VmFsdWUoIi13ZWJraXQtdHJhbnNmb3JtIil8fGUuZ2V0UHJvcGVydHlWYWx1ZSgiLW1vei10cmFuc2Zvcm0iKXx8ZS5nZXRQcm9wZXJ0eVZhbHVlKCItbXMtdHJhbnNmb3JtIil8fGUuZ2V0UHJvcGVydHlWYWx1ZSgiLW8tdHJhbnNmb3JtIil8fGUuZ2V0UHJvcGVydHlWYWx1ZSgidHJhbnNmb3JtIikpfTt2YXIgRT0vXm1hdHJpeFwoKFteKV0rKVwpJC8sVD0vWywgXSsvfSkoSl90KTt2YXIgUV90PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqL09iamVjdC5kZWZpbmVQcm9wZXJ0eShRX3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciB0eXQ9d3B0LGV5dD1KX3Qsbnl0PXdpbmRvdy5NYXRoLGl5dD1bMSwwLDAsMSwwLDBdO2Z1bmN0aW9uIHJ5dCh0LGUpe3JldHVyblt0WzBdKmVbMF0rdFsyXSplWzFdLHRbMV0qZVswXSt0WzNdKmVbMV0sdFswXSplWzJdK3RbMl0qZVszXSx0WzFdKmVbMl0rdFszXSplWzNdLHRbMF0qZVs0XSt0WzJdKmVbNV0rdFs0XSx0WzFdKmVbNF0rdFszXSplWzVdK3RbNV1dfWZ1bmN0aW9uIG95dCh0LGUpe3JldHVyblt0WzBdLHRbMV0sdFsyXSx0WzNdLHRbMF0qZVswXSt0WzJdKmVbMV0rdFs0XSx0WzFdKmVbMF0rdFszXSplWzFdK3RbNV1dfWZ1bmN0aW9uIGF5dCh0KXt2YXIgZT10WzBdKnRbM10tdFsxXSp0WzJdO2lmKDA9PT1lKXRocm93IG5ldyBFcnJvcigic2luZ3VsYXIgbWF0cml4Iik7dmFyIG49MS9lO3JldHVybltuKnRbM10sbiotdFsxXSxuKi10WzJdLG4qdFswXSxuKigtdFszXSp0WzRdK3RbMl0qdFs1XSksbioodFsxXSp0WzRdKy10WzBdKnRbNV0pXX1RX3QuaW5SYW5nZT1mdW5jdGlvbiBzeXQodCxlLG4pe3JldHVybiBueXQubWluKGUsbik8PXQmJnQ8PW55dC5tYXgoZSxuKX0sUV90LmNsYW1wPWZ1bmN0aW9uIGx5dCh0LGUsbil7cmV0dXJuIG55dC5taW4obnl0Lm1heChlLHQpLG4pfSxRX3QubWF4PWZ1bmN0aW9uIGN5dCh0LGUsbil7dmFyIGk9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpudWxsLHI9bnVsbD09aT9lOm4sbz1udWxsPT1pP3R5dC5tYXgodCk6dHl0Lm1heCh0LGkpO3JldHVybiB2b2lkIDAhPT1vP286cn0sUV90Lm1pbj1mdW5jdGlvbiB1eXQodCxlLG4pe3ZhciBpPSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6bnVsbCxyPW51bGw9PWk/ZTpuLG89bnVsbD09aT90eXQubWluKHQpOnR5dC5taW4odCxpKTtyZXR1cm4gdm9pZCAwIT09bz9vOnJ9LFFfdC5pc05hTj1mdW5jdGlvbiBoeXQodCl7cmV0dXJuIHQhPXR9LFFfdC5pc1ZhbGlkTnVtYmVyPWZ1bmN0aW9uIGR5dCh0KXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIHQmJnQtdDwxfSxRX3QucmFuZ2U9ZnVuY3Rpb24gcHl0KHQsZSxuKXtpZih2b2lkIDA9PT1uJiYobj0xKSwwPT09bil0aHJvdyBuZXcgRXJyb3IoInN0ZXAgY2Fubm90IGJlIDAiKTtmb3IodmFyIGk9bnl0Lm1heChueXQuY2VpbCgoZS10KS9uKSwwKSxyPVtdLG89MDtvPGk7KytvKXJbb109dCtuKm87cmV0dXJuIHJ9LFFfdC5kaXN0YW5jZVNxdWFyZWQ9ZnVuY3Rpb24gZnl0KHQsZSl7cmV0dXJuIG55dC5wb3coZS55LXQueSwyKStueXQucG93KGUueC10LngsMil9LFFfdC5kZWdyZWVzVG9SYWRpYW5zPWZ1bmN0aW9uIG15dCh0KXtyZXR1cm4gdC8zNjAqbnl0LlBJKjJ9LFFfdC53aXRoaW49ZnVuY3Rpb24gZ3l0KHQsZSl7cmV0dXJuIGUudG9wTGVmdC54PD10LngmJmUuYm90dG9tUmlnaHQueD49dC54JiZlLnRvcExlZnQueTw9dC55JiZlLmJvdHRvbVJpZ2h0Lnk+PXQueX0sUV90LmJvdW5kc0ludGVyc2VjdHM9ZnVuY3Rpb24gX3l0KHQsZSxuLGkscixvLGEscyl7cmV0dXJuIHQ8PXIrYSYmcjw9dCtuJiZlPD1vK3MmJm88PWUraX0sUV90LmdldEN1bXVsYXRpdmVUcmFuc2Zvcm09ZnVuY3Rpb24geXl0KHQpe2Zvcih2YXIgZT1leXQuZ2V0SHRtbEVsZW1lbnRBbmNlc3RvcnModCksbj1peXQsaT1udWxsLHI9MCxvPWU7cjxvLmxlbmd0aDtyKyspe3ZhciBhPW9bcl0scz1leXQuZ2V0RWxlbWVudFRyYW5zZm9ybShhKTtpZihudWxsIT1zKXt2YXIgbD1hLmNsaWVudFdpZHRoLzIsYz1hLmNsaWVudEhlaWdodC8yO249b3l0KG4sW2wsY10pLG49b3l0KG49cnl0KG4sYXl0KHMpKSxbLWwsLWNdKX12YXIgdT1hLnNjcm9sbExlZnQsaD1hLnNjcm9sbFRvcDtudWxsIT09aSYmYSE9PWl8fCh1LT1hLm9mZnNldExlZnQrYS5jbGllbnRMZWZ0LGgtPWEub2Zmc2V0VG9wK2EuY2xpZW50VG9wLGk9YS5vZmZzZXRQYXJlbnQpLG49b3l0KG4sW3UsaF0pfXJldHVybiBufSxRX3QubXVsdGlwbHlNYXRyaXg9cnl0LFFfdC5wcmVtdWx0aXBseVRyYW5zbGF0ZT1mdW5jdGlvbiB2eXQodCxlKXtyZXR1cm5bZVswXSxlWzFdLGVbMl0sZVszXSxlWzRdK3RbMF0sZVs1XSt0WzFdXX0sUV90Lm11bHRpcGx5VHJhbnNsYXRlPW95dCxRX3QuaW52ZXJ0TWF0cml4PWF5dCxRX3QuYXBwbHlUcmFuc2Zvcm09ZnVuY3Rpb24gYnl0KHQsZSl7cmV0dXJue3g6dFswXSplLngrdFsyXSplLnkrdFs0XSx5OnRbMV0qZS54K3RbM10qZS55K3RbNV19fTt2YXIgeHl0PXt9LHd5dD17fTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNy1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KHd5dCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIFN5dD0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlwZS5zcGxpdD1mdW5jdGlvbih0LGUpe2Zvcih2YXIgbj1NYXRoLmNlaWwodC5sZW5ndGgvMiksaT0wO2k8bjtpKyspZVswXS5pbnNlcnQodFtpXSk7Zm9yKGk9bjtpPHQubGVuZ3RoO2krKyllWzFdLmluc2VydCh0W2ldKX0sdH0pKCk7d3l0LlNwbGl0U3RyYXRlZ3lUcml2aWFsPVN5dDt2YXIgTXl0PShmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLnNwbGl0PWZ1bmN0aW9uKHQsZSl7Zm9yKHQ9dC5zbGljZSgpLHRoaXMuY2hvb3NlRmlyc3RTcGxpdCh0LGUpO3QubGVuZ3RoPjA7KXRoaXMuYWRkTmV4dCh0LGUpfSx0LnByb3RvdHlwZS5jaG9vc2VGaXJzdFNwbGl0PWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPTAsaT0wLHI9dC5sZW5ndGgtMSxvPXQubGVuZ3RoLTEsYT0xO2E8dC5sZW5ndGgtMTthKyspe3ZhciBzPXRbYV07cy5ib3VuZHMueGw+dFtyXS5ib3VuZHMueGw/cj1hOnMuYm91bmRzLnhoPHRbbl0uYm91bmRzLnhoJiYobj1hKSxzLmJvdW5kcy55bD50W29dLmJvdW5kcy55bD9vPWE6cy5ib3VuZHMueWg8dFtpXS5ib3VuZHMueWgmJihpPWEpfXZhciBsPU1hdGguYWJzKHRbbl0uYm91bmRzLnhoLXRbcl0uYm91bmRzLnhsKT5NYXRoLmFicyh0W2ldLmJvdW5kcy55aC10W29dLmJvdW5kcy55bCk/W24scl06W2ksb10sYz1sWzBdLHU9bFsxXTtjPT09dSYmKGM9MCx1PXQubGVuZ3RoLTEpLGVbMF0uaW5zZXJ0KHQuc3BsaWNlKE1hdGgubWF4KGMsdSksMSlbMF0pLGVbMV0uaW5zZXJ0KHQuc3BsaWNlKE1hdGgubWluKGMsdSksMSlbMF0pfSx0LnByb3RvdHlwZS5hZGROZXh0PWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPW51bGwsaT1udWxsLHI9bnVsbCxvPTA7bzx0Lmxlbmd0aDtvKyspe3ZhciBhPXRbb10scz1lWzBdLnVuaW9uQXJlYURpZmZlcmVuY2UoYS5ib3VuZHMpLGw9ZVsxXS51bmlvbkFyZWFEaWZmZXJlbmNlKGEuYm91bmRzKTsoczxpfHxudWxsPT1uKSYmKG49byxpPXMscj1lWzBdKSxsPGkmJihuPW8saT1sLHI9ZVsxXSl9ci5pbnNlcnQodC5zcGxpY2UobiwxKVswXSl9LHR9KSgpO3d5dC5TcGxpdFN0cmF0ZWd5TGluZWFyPU15dCwoZnVuY3Rpb24odCl7Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTctcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgZSxuPW5ldyB3eXQuU3BsaXRTdHJhdGVneUxpbmVhcjtmdW5jdGlvbiBpKHQsbixpKXt2YXIgcj0xLzAsbz0xLzA7cmV0dXJuIGZ1bmN0aW9uKGEpe3ZhciBzPW4oYS5ib3VuZHMsdCksbD1pKGEuYm91bmRzLHQpO3JldHVybiBudWxsIT1hLnZhbHVlP3M8cj8ocj1zLG89bCxlLlBBU1NfQU5EX09WRVJXUklURSk6cz09PXI/ZS5QQVNTOmUuRkFJTDpzPm8/ZS5GQUlMOihvPU1hdGgubWF4KGwsbyksZS5QQVNTKX19ZnVuY3Rpb24gcih0LGUpe3JldHVybiBmdW5jdGlvbihuLGkpe3JldHVybiBlKGkuYm91bmRzLHQpLWUobi5ib3VuZHMsdCl9fSEoZnVuY3Rpb24odCl7dFt0LlBBU1M9MF09IlBBU1MiLHRbdC5GQUlMPTFdPSJGQUlMIix0W3QuUEFTU19BTkRfT1ZFUldSSVRFPTJdPSJQQVNTX0FORF9PVkVSV1JJVEUifSkoZT10LlF1ZXJ5UHJlZGljYXRlUmVzdWx0fHwodC5RdWVyeVByZWRpY2F0ZVJlc3VsdD17fSkpLHQuY3JlYXRlTWluaW1pemluZ05vZGVQcmVkaWNhdGU9aSx0LmNyZWF0ZU5vZGVTb3J0PXI7dmFyIG89KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe3ZvaWQgMD09PXQmJih0PTUpLHZvaWQgMD09PWUmJihlPW4pLHRoaXMubWF4Tm9kZUNoaWxkcmVuPXQsdGhpcy5zcGxpdFN0cmF0ZWd5PWUsdGhpcy5yb290PW5ldyBhKCEwKSx0aGlzLnNpemU9MH1yZXR1cm4gdC5wcm90b3R5cGUuZ2V0Um9vdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJvb3R9LHQucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5yb290PW5ldyBhKCEwKSx0aGlzLnNpemU9MH0sdC5wcm90b3R5cGUuaW5zZXJ0PWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPXRoaXMucm9vdDshbi5sZWFmOyluPW4uc3VidHJlZSh0KTt2YXIgaT1hLnZhbHVlTm9kZSh0LGUpO2ZvcihuLmluc2VydChpKSx0aGlzLnNpemUrPTE7bi5vdmVyZmxvdyh0aGlzLm1heE5vZGVDaGlsZHJlbik7KW51bGw9PShuPW4uc3BsaXQodGhpcy5zcGxpdFN0cmF0ZWd5KSkucGFyZW50JiYodGhpcy5yb290PW4pO3JldHVybiBpfSx0LnByb3RvdHlwZS5sb2NhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucXVlcnkoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmNvbnRhaW5zKHQpfSkpfSx0LnByb3RvdHlwZS5sb2NhdGVOZWFyZXN0PWZ1bmN0aW9uKHQpe3ZhciBlPWkodCxzLmRpc3RhbmNlU3F1YXJlZFRvTmVhckVkZ2Uscy5kaXN0YW5jZVNxdWFyZWRUb0ZhckVkZ2UpO3JldHVybiB0aGlzLnF1ZXJ5Tm9kZXMoZSkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC52YWx1ZX0pKX0sdC5wcm90b3R5cGUubG9jYXRlTmVhcmVzdFg9ZnVuY3Rpb24odCl7dmFyIGU9aSh0LHMuYWJzb2x1dGVEaXN0YW5jZVRvTmVhckVkZ2VYLHMuYWJzb2x1dGVEaXN0YW5jZVRvRmFyRWRnZVgpLG49dGhpcy5xdWVyeU5vZGVzKGUpO3JldHVybiBuLnNvcnQocih0LHMuYWJzb2x1dGVEaXN0YW5jZVRvTmVhckVkZ2VZKSksbi5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnZhbHVlfSkpfSx0LnByb3RvdHlwZS5sb2NhdGVOZWFyZXN0WT1mdW5jdGlvbih0KXt2YXIgZT1pKHQscy5hYnNvbHV0ZURpc3RhbmNlVG9OZWFyRWRnZVkscy5hYnNvbHV0ZURpc3RhbmNlVG9GYXJFZGdlWSksbj10aGlzLnF1ZXJ5Tm9kZXMoZSk7cmV0dXJuIG4uc29ydChyKHQscy5hYnNvbHV0ZURpc3RhbmNlVG9OZWFyRWRnZVgpKSxuLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQudmFsdWV9KSl9LHQucHJvdG90eXBlLmludGVyc2VjdD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5xdWVyeSgoZnVuY3Rpb24oZSl7cmV0dXJuIHMuaXNCb3VuZHNPdmVybGFwQm91bmRzKGUsdCl9KSl9LHQucHJvdG90eXBlLmludGVyc2VjdFg9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucXVlcnkoKGZ1bmN0aW9uKGUpe3JldHVybiBzLmlzQm91bmRzT3ZlcmxhcFgoZSx0KX0pKX0sdC5wcm90b3R5cGUuaW50ZXJzZWN0WT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5xdWVyeSgoZnVuY3Rpb24oZSl7cmV0dXJuIHMuaXNCb3VuZHNPdmVybGFwWShlLHQpfSkpfSx0LnByb3RvdHlwZS5xdWVyeT1mdW5jdGlvbih0KXt2YXIgZT1bXTtpZihudWxsIT10aGlzLnJvb3QuYm91bmRzJiYhdCh0aGlzLnJvb3QuYm91bmRzKSlyZXR1cm4gZTtmb3IodmFyIG49W3RoaXMucm9vdF07bi5sZW5ndGg+MDspZm9yKHZhciBpPW4uc2hpZnQoKSxyPTA7cjxpLmVudHJpZXMubGVuZ3RoO3IrKyl7dmFyIG89aS5lbnRyaWVzW3JdO3Qoby5ib3VuZHMpJiYoaS5sZWFmP2UucHVzaChvLnZhbHVlKTpuLnB1c2gobykpfXJldHVybiBlfSx0LnByb3RvdHlwZS5xdWVyeU5vZGVzPWZ1bmN0aW9uKHQpe3ZhciBuPVtdO2lmKG51bGwhPXRoaXMucm9vdC5ib3VuZHMmJnQodGhpcy5yb290KT09PWUuRkFJTClyZXR1cm4gbjtmb3IodmFyIGk9W3RoaXMucm9vdF07aS5sZW5ndGg+MDspZm9yKHZhciByPWkuc2hpZnQoKSxvPTA7bzxyLmVudHJpZXMubGVuZ3RoO28rKyl7dmFyIGE9ci5lbnRyaWVzW29dLHM9dChhKTtzPT09ZS5QQVNTX0FORF9PVkVSV1JJVEUmJihuPVtdKSxzIT09ZS5QQVNTJiZzIT09ZS5QQVNTX0FORF9PVkVSV1JJVEV8fChyLmxlYWY/bi5wdXNoKGEpOmkucHVzaChhKSl9cmV0dXJuIG59LHR9KSgpO3QuUlRyZWU9bzt2YXIgYT0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMubGVhZj10LHRoaXMuYm91bmRzPW51bGwsdGhpcy5lbnRyaWVzPVtdLHRoaXMucGFyZW50PW51bGwsdGhpcy52YWx1ZT1udWxsfXJldHVybiB0LnZhbHVlTm9kZT1mdW5jdGlvbihlLG4pe3ZhciBpPW5ldyB0KCEwKTtyZXR1cm4gaS5ib3VuZHM9ZSxpLnZhbHVlPW4saX0sdC5wcm90b3R5cGUub3ZlcmZsb3c9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZW50cmllcy5sZW5ndGg+dH0sdC5wcm90b3R5cGUuaW5zZXJ0PWZ1bmN0aW9uKHQpe3RoaXMuZW50cmllcy5wdXNoKHQpLHQucGFyZW50PXRoaXM7Zm9yKHZhciBlPXRoaXM7bnVsbCE9ZTspZS5ib3VuZHM9cy51bmlvbkFsbChbZS5ib3VuZHMsdC5ib3VuZHNdKSxlPWUucGFyZW50O3JldHVybiB0aGlzfSx0LnByb3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5lbnRyaWVzLmluZGV4T2YodCk7aWYoZT49MCl7dGhpcy5lbnRyaWVzLnNwbGljZShlLDEpO2Zvcih2YXIgbj10aGlzO251bGwhPW47KW4uYm91bmRzPXMudW5pb25BbGwobi5lbnRyaWVzLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuYm91bmRzfSkpKSxuPW4ucGFyZW50fXJldHVybiB0aGlzfSx0LnByb3RvdHlwZS5zdWJ0cmVlPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0xLzAsbj1udWxsLGk9MDtpPHRoaXMuZW50cmllcy5sZW5ndGg7aSsrKXt2YXIgcj10aGlzLmVudHJpZXNbaV0sbz1yLnVuaW9uQXJlYURpZmZlcmVuY2UodCk7KG88ZXx8bz09PWUmJm51bGwhPW4mJnIuZW50cmllcy5sZW5ndGg8bi5lbnRyaWVzLmxlbmd0aCkmJihuPXIpfXJldHVybiBufSx0LnByb3RvdHlwZS5zcGxpdD1mdW5jdGlvbihlKXtudWxsIT10aGlzLnBhcmVudCYmdGhpcy5wYXJlbnQucmVtb3ZlKHRoaXMpO3ZhciBuPVtuZXcgdCh0aGlzLmxlYWYpLG5ldyB0KHRoaXMubGVhZildO2Uuc3BsaXQodGhpcy5lbnRyaWVzLG4pO3ZhciBpPW51bGwhPXRoaXMucGFyZW50P3RoaXMucGFyZW50Om5ldyB0KCExKTtyZXR1cm4gaS5pbnNlcnQoblswXSksaS5pbnNlcnQoblsxXSksaS5sZWFmPSExLGl9LHQucHJvdG90eXBlLnVuaW9uQXJlYURpZmZlcmVuY2U9ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGguYWJzKHMudW5pb24odGhpcy5ib3VuZHMsdCkuYXJlYSgpLXRoaXMuYm91bmRzLmFyZWEoKSl9LHQucHJvdG90eXBlLm1heERlcHRoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGVhZj8xOjErdGhpcy5lbnRyaWVzLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQubWF4RGVwdGgoKX0pKS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIE1hdGgubWF4KHQsZSl9KSl9LHR9KSgpO3QuUlRyZWVOb2RlPWE7dmFyIHM9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUsbixpKXt0aGlzLnhsPXQsdGhpcy55bD1lLHRoaXMueGg9bix0aGlzLnloPWksdGhpcy53aWR0aD10aGlzLnhoLXRoaXMueGwsdGhpcy5oZWlnaHQ9dGhpcy55aC10aGlzLnlsfXJldHVybiB0Lnh5d2g9ZnVuY3Rpb24oZSxuLGkscil7cmV0dXJuIG5ldyB0KGUsbixlK2ksbityKX0sdC5lbnRpdHlCb3VuZHM9ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyB0KGUueCxlLnksZS54K2Uud2lkdGgsZS55K2UuaGVpZ2h0KX0sdC5ib3VuZHM9ZnVuY3Rpb24oZSl7cmV0dXJuIHQucG9pbnRQYWlyKGUudG9wTGVmdCxlLmJvdHRvbVJpZ2h0KX0sdC5wb2ludFBhaXI9ZnVuY3Rpb24oZSxuKXtyZXR1cm4gbmV3IHQoTWF0aC5taW4oZS54LG4ueCksTWF0aC5taW4oZS55LG4ueSksTWF0aC5tYXgoZS54LG4ueCksTWF0aC5tYXgoZS55LG4ueSkpfSx0LnBvaW50cz1mdW5jdGlvbihlKXtpZihlLmxlbmd0aDwyKXRocm93IG5ldyBFcnJvcigibmVlZCBhdCBsZWFzdCAyIHBvaW50cyB0byBjcmVhdGUgYm91bmRzIik7dmFyIG49ZS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0Lnh9KSksaT1lLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQueX0pKTtyZXR1cm4gbmV3IHQobi5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIE1hdGgubWluKHQsZSl9KSksaS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIE1hdGgubWluKHQsZSl9KSksbi5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIE1hdGgubWF4KHQsZSl9KSksaS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIE1hdGgubWF4KHQsZSl9KSkpfSx0LnVuaW9uPWZ1bmN0aW9uKGUsbil7cmV0dXJuIG5ldyB0KE1hdGgubWluKGUueGwsbi54bCksTWF0aC5taW4oZS55bCxuLnlsKSxNYXRoLm1heChlLnhoLG4ueGgpLE1hdGgubWF4KGUueWgsbi55aCkpfSx0LnVuaW9uQWxsPWZ1bmN0aW9uKGUpe3JldHVybiAwPT09KGU9ZS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBudWxsIT10fSkpKS5sZW5ndGg/bnVsbDplLnJlZHVjZSgoZnVuY3Rpb24oZSxuKXtyZXR1cm4gdC51bmlvbihlLG4pfSkpfSx0LmlzQm91bmRzT3ZlcmxhcEJvdW5kcz1mdW5jdGlvbihlLG4pe3JldHVybiB0LmlzQm91bmRzT3ZlcmxhcFgoZSxuKSYmdC5pc0JvdW5kc092ZXJsYXBZKGUsbil9LHQuaXNCb3VuZHNPdmVybGFwWD1mdW5jdGlvbih0LGUpe3JldHVybiEodC54aDxlLnhsfHx0LnhsPmUueGgpfSx0LmlzQm91bmRzT3ZlcmxhcFk9ZnVuY3Rpb24odCxlKXtyZXR1cm4hKHQueWg8ZS55bHx8dC55bD5lLnloKX0sdC5hYnNvbHV0ZURpc3RhbmNlVG9OZWFyRWRnZVg9ZnVuY3Rpb24odCxlKXt2YXIgbj10LndpZHRoLzI7cmV0dXJuIE1hdGgubWF4KE1hdGguYWJzKGUueC0odC54bCtuKSktbiwwKX0sdC5hYnNvbHV0ZURpc3RhbmNlVG9OZWFyRWRnZVk9ZnVuY3Rpb24odCxlKXt2YXIgbj10LmhlaWdodC8yO3JldHVybiBNYXRoLm1heChNYXRoLmFicyhlLnktKHQueWwrbikpLW4sMCl9LHQuYWJzb2x1dGVEaXN0YW5jZVRvRmFyRWRnZVg9ZnVuY3Rpb24oZSxuKXt2YXIgaT10LmFic29sdXRlRGlzdGFuY2VUb05lYXJFZGdlWChlLG4pO3JldHVybiAwPT09aT8wOmkrZS53aWR0aH0sdC5hYnNvbHV0ZURpc3RhbmNlVG9GYXJFZGdlWT1mdW5jdGlvbihlLG4pe3ZhciBpPXQuYWJzb2x1dGVEaXN0YW5jZVRvTmVhckVkZ2VZKGUsbik7cmV0dXJuIDA9PT1pPzA6aStlLmhlaWdodH0sdC5kaXN0YW5jZVNxdWFyZWRUb05lYXJFZGdlPWZ1bmN0aW9uKGUsbil7dmFyIGk9dC5hYnNvbHV0ZURpc3RhbmNlVG9OZWFyRWRnZVgoZSxuKSxyPXQuYWJzb2x1dGVEaXN0YW5jZVRvTmVhckVkZ2VZKGUsbik7cmV0dXJuIGkqaStyKnJ9LHQuZGlzdGFuY2VTcXVhcmVkVG9GYXJFZGdlPWZ1bmN0aW9uKGUsbil7dmFyIGk9dC5hYnNvbHV0ZURpc3RhbmNlVG9GYXJFZGdlWChlLG4pLHI9dC5hYnNvbHV0ZURpc3RhbmNlVG9GYXJFZGdlWShlLG4pO3JldHVybiBpKmkrcipyfSx0LnByb3RvdHlwZS5hcmVhPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PXRoaXMuYXJlYUNhY2hlZCYmKHRoaXMuYXJlYUNhY2hlZD0odGhpcy54aC10aGlzLnhsKSoodGhpcy55aC10aGlzLnlsKSksdGhpcy5hcmVhQ2FjaGVkfSx0LnByb3RvdHlwZS5jb250YWlucz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy54bDw9dC54JiZ0aGlzLnhoPj10LngmJnRoaXMueWw8PXQueSYmdGhpcy55aD49dC55fSx0fSkoKTt0LlJUcmVlQm91bmRzPXN9KSh4eXQpO3ZhciBFeXQ9e307IShmdW5jdGlvbih0KXsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBlPXdwdCxuPUNlLmV4cG9ydHMsaT1EX3Q7dC5JU3RhY2tpbmdPcmRlcj1iZ3QubWFrZUVudW0oWyJ0b3Bkb3duIiwiYm90dG9tdXAiXSk7dmFyIHI9d2luZG93Lk1hdGg7dC5zdGFjaz1mdW5jdGlvbiBvKG4scixhLHMpe3ZvaWQgMD09PXMmJihzPSJib3R0b211cCIpO3ZhciBsPWUubWFwKCksYz1lLm1hcCgpLHU9bmV3IGkuTWFwOyJ0b3Bkb3duIj09PXMmJihuPW4uc2xpY2UoKSkucmV2ZXJzZSgpO2Zvcih2YXIgaD0wLGQ9bjtoPGQubGVuZ3RoO2grKyl7Zm9yKHZhciBwPWRbaF0sZj1uZXcgaS5NYXAsbT1wLmRhdGEoKSxnPW0ubGVuZ3RoLF89MDtfPGc7XysrKXt2YXIgeT1tW19dLHY9cih5LF8scCksYj10Lm5vcm1hbGl6ZUtleSh2KSx4PSthKHksXyxwKSx3PXZvaWQgMCxTPXg+PTA/bDpjO1MuaGFzKGIpPyh3PVMuZ2V0KGIpLFMuc2V0KGIsdyt4KSk6KHc9MCxTLnNldChiLHgpKSxmLnNldChiLHtvZmZzZXQ6dyx2YWx1ZTp4LGF4aXNWYWx1ZTp2LG9yaWdpbmFsRGF0dW06eSxvcmlnaW5hbERhdGFzZXQ6cCxvcmlnaW5hbEluZGV4Ol99KX11LnNldChwLGYpfXJldHVybiB1fSx0LnN0YWNrZWRFeHRlbnRzPWZ1bmN0aW9uIGEodCl7dmFyIGU9bmV3IGkuTWFwLG49bmV3IGkuTWFwO3JldHVybiB0LmZvckVhY2goKGZ1bmN0aW9uKHQpe3QuZm9yRWFjaCgoZnVuY3Rpb24odCxyKXt2YXIgbz10Lm9mZnNldCt0LnZhbHVlLGE9aS5NYXRoLm1heChbbyx0Lm9mZnNldF0sdC5vZmZzZXQpLHM9aS5NYXRoLm1pbihbbyx0Lm9mZnNldF0sdC5vZmZzZXQpLGw9dC5heGlzVmFsdWU7ZS5oYXMocik/ZS5nZXQocikuZXh0ZW50PGEmJmUuc2V0KHIse2V4dGVudDphLGF4aXNWYWx1ZTpsLHN0YWNrZWREYXR1bTp0fSk6ZS5zZXQocix7ZXh0ZW50OmEsYXhpc1ZhbHVlOmwsc3RhY2tlZERhdHVtOnR9KSxuLmhhcyhyKT9uLmdldChyKS5leHRlbnQ+cyYmbi5zZXQocix7ZXh0ZW50OnMsYXhpc1ZhbHVlOmwsc3RhY2tlZERhdHVtOnR9KTpuLnNldChyLHtleHRlbnQ6cyxheGlzVmFsdWU6bCxzdGFja2VkRGF0dW06dH0pfSkpfSkpLHttYXhpbXVtRXh0ZW50czplLG1pbmltdW1FeHRlbnRzOm59fSx0LnN0YWNrZWRFeHRlbnQ9ZnVuY3Rpb24gcyhlLG4sbyl7dmFyIGE9W107ZS5mb3JFYWNoKChmdW5jdGlvbihlLGkpe2Zvcih2YXIgcj1pLmRhdGEoKSxzPXIubGVuZ3RoLGw9MDtsPHM7bCsrKXt2YXIgYz1yW2xdO2lmKG51bGw9PW98fG8oYyxsLGkpKXt2YXIgdT1lLmdldCh0Lm5vcm1hbGl6ZUtleShuKGMsbCxpKSkpO2EucHVzaCh1LnZhbHVlK3Uub2Zmc2V0KX19fSkpO3ZhciBzPWkuTWF0aC5tYXgoYSwwKSxsPWkuTWF0aC5taW4oYSwwKTtyZXR1cm5bci5taW4obCwwKSxyLm1heCgwLHMpXX0sdC5ub3JtYWxpemVLZXk9bi5tZW1vaXplKChmdW5jdGlvbih0KXtyZXR1cm4gU3RyaW5nKHQpfSkpfSkoRXl0KTt2YXIgVHl0PXt9LEN5dD17fTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KEN5dCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksQ3l0LlNIT1dfV0FSTklOR1M9ITAsQ3l0LkFERF9USVRMRV9FTEVNRU5UUz0hMCwKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KFR5dCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIEF5dD1DeXQ7ZnVuY3Rpb24ga3l0KHQpe0F5dC5TSE9XX1dBUk5JTkdTJiZjb25zb2xlLndhcm4odCl9ZnVuY3Rpb24gTHl0KHQsZSl7Zm9yKHZhciBuPVtdLGk9MjtpPGFyZ3VtZW50cy5sZW5ndGg7aSsrKW5baS0yXT1hcmd1bWVudHNbaV07cmV0dXJuIDA9PT1lPyh0KG4pLC0xKTp3aW5kb3cuc2V0VGltZW91dCh0LGUsbil9VHl0Lndhcm49a3l0LFR5dC5zZXRUaW1lb3V0PUx5dCxUeXQuZGVib3VuY2U9ZnVuY3Rpb24gUHl0KHQsZSxuKXt2YXIgaT1udWxsLHI9W10sbz1mdW5jdGlvbigpe2UuYXBwbHkobixyKX07cmV0dXJuIGZ1bmN0aW9uKCl7cj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpLGNsZWFyVGltZW91dChpKSxpPUx5dChvLHQpfX0sVHl0LmRlcHJlY2F0ZWQ9ZnVuY3Rpb24gTnl0KHQsZSxuKXt2b2lkIDA9PT1uJiYobj0iIiksa3l0KCJNZXRob2QgIit0KyIgaGFzIGJlZW4gZGVwcmVjYXRlZCBpbiB2ZXJzaW9uICIrZSsiLiBQbGVhc2UgcmVmZXIgdG8gdGhlIHJlbGVhc2Ugbm90ZXMuICIrbil9O3ZhciBJeXQ9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTctcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovT2JqZWN0LmRlZmluZVByb3BlcnR5KEl5dCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIFJ5dD0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuKXt0aGlzLmVudHJ5SW5kZXg9dCx0aGlzLmV4aXRJbmRleD10LHRoaXMubWluSW5kZXg9dCx0aGlzLm1heEluZGV4PXQsdGhpcy5idWNrZXRWYWx1ZT1lLHRoaXMubWluVmFsdWU9bix0aGlzLm1heFZhbHVlPW59cmV0dXJuIHQucHJvdG90eXBlLmlzSW5CdWNrZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9PXRoaXMuYnVja2V0VmFsdWV9LHQucHJvdG90eXBlLmFkZFRvQnVja2V0PWZ1bmN0aW9uKHQsZSl7dDx0aGlzLm1pblZhbHVlJiYodGhpcy5taW5WYWx1ZT10LHRoaXMubWluSW5kZXg9ZSksdD50aGlzLm1heFZhbHVlJiYodGhpcy5tYXhWYWx1ZT10LHRoaXMubWF4SW5kZXg9ZSksdGhpcy5leGl0SW5kZXg9ZX0sdC5wcm90b3R5cGUuZ2V0VW5pcXVlSW5kaWNlcz1mdW5jdGlvbigpe3ZhciB0PVt0aGlzLmVudHJ5SW5kZXgsdGhpcy5tYXhJbmRleCx0aGlzLm1pbkluZGV4LHRoaXMuZXhpdEluZGV4XTtyZXR1cm4gdC5maWx0ZXIoKGZ1bmN0aW9uKGUsbil7cmV0dXJuIDA9PW58fGUhPXRbbi0xXX0pKX0sdH0pKCk7SXl0LkJ1Y2tldD1SeXQ7dmFyIE95dD17fSx6eXQ9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh6eXQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBEeXQ9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpeyJmdW5jdGlvbiI9PXR5cGVvZiB3aW5kb3cuU2V0P3RoaXMuX2VzNlNldD1uZXcgd2luZG93LlNldDp0aGlzLl92YWx1ZXM9W10sdGhpcy5zaXplPTB9cmV0dXJuIHQucHJvdG90eXBlLmFkZD1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9dGhpcy5fZXM2U2V0Pyh0aGlzLl9lczZTZXQuYWRkKHQpLHRoaXMuc2l6ZT10aGlzLl9lczZTZXQuc2l6ZSx0aGlzKToodGhpcy5oYXModCl8fCh0aGlzLl92YWx1ZXMucHVzaCh0KSx0aGlzLnNpemU9dGhpcy5fdmFsdWVzLmxlbmd0aCksdGhpcyl9LHQucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXtpZihudWxsIT10aGlzLl9lczZTZXQpe3ZhciBlPXRoaXMuX2VzNlNldC5kZWxldGUodCk7cmV0dXJuIHRoaXMuc2l6ZT10aGlzLl9lczZTZXQuc2l6ZSxlfXZhciBuPXRoaXMuX3ZhbHVlcy5pbmRleE9mKHQpO3JldHVybi0xIT09biYmKHRoaXMuX3ZhbHVlcy5zcGxpY2UobiwxKSx0aGlzLnNpemU9dGhpcy5fdmFsdWVzLmxlbmd0aCwhMCl9LHQucHJvdG90eXBlLmhhcz1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9dGhpcy5fZXM2U2V0P3RoaXMuX2VzNlNldC5oYXModCk6LTEhPT10aGlzLl92YWx1ZXMuaW5kZXhPZih0KX0sdC5wcm90b3R5cGUuZm9yRWFjaD1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXM7aWYobnVsbD09dGhpcy5fZXM2U2V0KXRoaXMuX3ZhbHVlcy5mb3JFYWNoKChmdW5jdGlvbihpKXt0LmNhbGwoZSxpLGksbil9KSk7ZWxzZXt0aGlzLl9lczZTZXQuZm9yRWFjaCgoZnVuY3Rpb24oaSxyKXtyZXR1cm4gdC5jYWxsKGUsaSxyLG4pfSksZSl9fSx0fSkoKTt6eXQuU2V0PUR5dCwKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KE95dCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIEJ5dD1CTyxIeXQ9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXtyZXR1cm4gbnVsbCE9PXQmJnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfXJldHVybiBCeXQuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUuY2FsbENhbGxiYWNrcz1mdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLGU9W10sbj0wO248YXJndW1lbnRzLmxlbmd0aDtuKyspZVtuXT1hcmd1bWVudHNbbl07cmV0dXJuIHRoaXMuZm9yRWFjaCgoZnVuY3Rpb24obil7bi5hcHBseSh0LGUpfSkpLHRoaXN9LGV9KSh6eXQuU2V0KTtPeXQuQ2FsbGJhY2tTZXQ9SHl0O3ZhciBGeXQ9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovT2JqZWN0LmRlZmluZVByb3BlcnR5KEZ5dCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIFZ5dD14eXQsVXl0PShmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLl9lbnRpdGllcz1bXSx0aGlzLl9ydHJlZT1uZXcgVnl0LlJUcmVlfXJldHVybiB0LnByb3RvdHlwZS5hZGRBbGw9ZnVuY3Rpb24odCxlLG4pe2lmKHRoaXMuX2VudGl0aWVzPXRoaXMuX2VudGl0aWVzLmNvbmNhdCh0KSx2b2lkIDAhPT1uKWZvcih2YXIgaT1WeXQuUlRyZWVCb3VuZHMuYm91bmRzKG4pLHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIG89Vnl0LlJUcmVlQm91bmRzLmVudGl0eUJvdW5kcyhlKGE9dFtyXSkpO1Z5dC5SVHJlZUJvdW5kcy5pc0JvdW5kc092ZXJsYXBCb3VuZHMoaSxvKSYmdGhpcy5fcnRyZWUuaW5zZXJ0KG8sYSl9ZWxzZSBmb3Iocj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgYTtvPVZ5dC5SVHJlZUJvdW5kcy5lbnRpdHlCb3VuZHMoZShhPXRbcl0pKTt0aGlzLl9ydHJlZS5pbnNlcnQobyxhKX19LHQucHJvdG90eXBlLmVudGl0eU5lYXJlc3Q9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3J0cmVlLmxvY2F0ZU5lYXJlc3QodCkucG9wKCl9LHQucHJvdG90eXBlLmVudGl0eU5lYXJlc3RYPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9ydHJlZS5sb2NhdGVOZWFyZXN0WCh0KS5wb3AoKX0sdC5wcm90b3R5cGUuZW50aXR5TmVhcmVzdFk9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3J0cmVlLmxvY2F0ZU5lYXJlc3RZKHQpLnBvcCgpfSx0LnByb3RvdHlwZS5lbnRpdGllc0luQm91bmRzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9ydHJlZS5pbnRlcnNlY3QoVnl0LlJUcmVlQm91bmRzLmVudGl0eUJvdW5kcyh0KSl9LHQucHJvdG90eXBlLmVudGl0aWVzSW5YQm91bmRzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9ydHJlZS5pbnRlcnNlY3RYKFZ5dC5SVHJlZUJvdW5kcy5lbnRpdHlCb3VuZHModCkpfSx0LnByb3RvdHlwZS5lbnRpdGllc0luWUJvdW5kcz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcnRyZWUuaW50ZXJzZWN0WShWeXQuUlRyZWVCb3VuZHMuZW50aXR5Qm91bmRzKHQpKX0sdC5wcm90b3R5cGUuZW50aXRpZXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZW50aXRpZXN9LHR9KSgpO0Z5dC5FbnRpdHlTdG9yZT1VeXQ7dmFyIGp5dD17fTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi9PYmplY3QuZGVmaW5lUHJvcGVydHkoanl0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgR3l0PVFfdCxXeXQ9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpeyJmdW5jdGlvbiI9PXR5cGVvZiB3aW5kb3cuTWFwP3RoaXMuX2VzNk1hcD1uZXcgd2luZG93Lk1hcDp0aGlzLl9rZXlWYWx1ZVBhaXJzPVtdfXJldHVybiB0LnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxlKXtpZihHeXQuaXNOYU4odCkpdGhyb3cgbmV3IEVycm9yKCJOYU4gbWF5IG5vdCBiZSB1c2VkIGFzIGEga2V5IHRvIHRoZSBNYXAiKTtpZihudWxsIT10aGlzLl9lczZNYXApcmV0dXJuIHRoaXMuX2VzNk1hcC5zZXQodCxlKSx0aGlzO2Zvcih2YXIgbj0wO248dGhpcy5fa2V5VmFsdWVQYWlycy5sZW5ndGg7bisrKWlmKHRoaXMuX2tleVZhbHVlUGFpcnNbbl0ua2V5PT09dClyZXR1cm4gdGhpcy5fa2V5VmFsdWVQYWlyc1tuXS52YWx1ZT1lLHRoaXM7cmV0dXJuIHRoaXMuX2tleVZhbHVlUGFpcnMucHVzaCh7a2V5OnQsdmFsdWU6ZX0pLHRoaXN9LHQucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXtpZihudWxsIT10aGlzLl9lczZNYXApcmV0dXJuIHRoaXMuX2VzNk1hcC5nZXQodCk7Zm9yKHZhciBlPTA7ZTx0aGlzLl9rZXlWYWx1ZVBhaXJzLmxlbmd0aDtlKyspaWYodGhpcy5fa2V5VmFsdWVQYWlyc1tlXS5rZXk9PT10KXJldHVybiB0aGlzLl9rZXlWYWx1ZVBhaXJzW2VdLnZhbHVlfSx0LnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7aWYobnVsbCE9dGhpcy5fZXM2TWFwKXJldHVybiB0aGlzLl9lczZNYXAuaGFzKHQpO2Zvcih2YXIgZT0wO2U8dGhpcy5fa2V5VmFsdWVQYWlycy5sZW5ndGg7ZSsrKWlmKHRoaXMuX2tleVZhbHVlUGFpcnNbZV0ua2V5PT09dClyZXR1cm4hMDtyZXR1cm4hMX0sdC5wcm90b3R5cGUuZm9yRWFjaD1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXM7aWYobnVsbD09dGhpcy5fZXM2TWFwKXRoaXMuX2tleVZhbHVlUGFpcnMuZm9yRWFjaCgoZnVuY3Rpb24oaSl7dC5jYWxsKGUsaS52YWx1ZSxpLmtleSxuKX0pKTtlbHNle3RoaXMuX2VzNk1hcC5mb3JFYWNoKChmdW5jdGlvbihpLHIpe3JldHVybiB0LmNhbGwoZSxpLHIsbil9KSxlKX19LHQucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXtpZihudWxsIT10aGlzLl9lczZNYXApcmV0dXJuIHRoaXMuX2VzNk1hcC5kZWxldGUodCk7Zm9yKHZhciBlPTA7ZTx0aGlzLl9rZXlWYWx1ZVBhaXJzLmxlbmd0aDtlKyspaWYodGhpcy5fa2V5VmFsdWVQYWlyc1tlXS5rZXk9PT10KXJldHVybiB0aGlzLl9rZXlWYWx1ZVBhaXJzLnNwbGljZShlLDEpLCEwO3JldHVybiExfSx0fSkoKTtqeXQuTWFwPVd5dDt2YXIgcXl0PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE3LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqL09iamVjdC5kZWZpbmVQcm9wZXJ0eShxeXQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHF5dC5hc3NpZ249ZnVuY3Rpb24gWXl0KCl7Zm9yKHZhciB0PVtdLGU9MDtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXRbZV09YXJndW1lbnRzW2VdO2Zvcih2YXIgbj17fSxpPTAscj10O2k8ci5sZW5ndGg7aSsrKWZvcih2YXIgbz1yW2ldLGE9T2JqZWN0LmtleXMobykscz0wLGw9YTtzPGwubGVuZ3RoO3MrKyl7dmFyIGM9bFtzXTtuW2NdPW9bY119cmV0dXJuIG59O3ZhciBYeXQ9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTctcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovT2JqZWN0LmRlZmluZVByb3BlcnR5KFh5dCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyICR5dD1EX3QsS3l0PSJfX1Bsb3R0YWJsZV9DbGllbnRUcmFuc2xhdG9yIjtYeXQuZ2V0VHJhbnNsYXRvcj1mdW5jdGlvbiBaeXQodCl7dmFyIGU9dC5yb290KCkucm9vdEVsZW1lbnQoKS5ub2RlKCksbj1lW0t5dF07cmV0dXJuIG51bGw9PW4mJihuPW5ldyBKeXQoZSksZVtLeXRdPW4pLG59O3ZhciBKeXQ9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLl9yb290RWxlbWVudD10fXJldHVybiB0LnByb3RvdHlwZS5jb21wdXRlUG9zaXRpb249ZnVuY3Rpb24odCxlKXt2YXIgbj17eDp0LHk6ZX0saT0keXQuTWF0aC5nZXRDdW11bGF0aXZlVHJhbnNmb3JtKHRoaXMuX3Jvb3RFbGVtZW50KTtyZXR1cm4gbnVsbD09aT9uOiR5dC5NYXRoLmFwcGx5VHJhbnNmb3JtKGksbil9LHQuaXNFdmVudEluc2lkZT1mdW5jdGlvbih0LGUpe3JldHVybiAkeXQuRE9NLmNvbnRhaW5zKHQucm9vdCgpLnJvb3RFbGVtZW50KCkubm9kZSgpLGUudGFyZ2V0KX0sdH0pKCk7WHl0LlRyYW5zbGF0b3I9Snl0LChmdW5jdGlvbih0KXsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBlPUJPO3QuQXJyYXk9Ql90LHQuQ29sb3I9V190LHQuRE9NPUpfdCx0Lk1hdGg9UV90LHQuUlRyZWU9eHl0LHQuU3RhY2tpbmc9RXl0LHQuV2luZG93PVR5dCxlLl9fZXhwb3J0U3RhcihJeXQsdCksZS5fX2V4cG9ydFN0YXIoT3l0LHQpLGUuX19leHBvcnRTdGFyKF9ndCx0KSxlLl9fZXhwb3J0U3RhcihGeXQsdCksZS5fX2V4cG9ydFN0YXIoanl0LHQpLGUuX19leHBvcnRTdGFyKHF5dCx0KSxlLl9fZXhwb3J0U3Rhcih6eXQsdCksZS5fX2V4cG9ydFN0YXIoWHl0LHQpfSkoRF90KTt2YXIgUXl0PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqL09iamVjdC5kZWZpbmVQcm9wZXJ0eShReXQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciB0dnQ9RF90LGV2dD16X3QsbnZ0PShmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe2V2dC5mbHVzaCgpfSx0fSkoKTtReXQuSW1tZWRpYXRlPW52dDt2YXIgaXZ0PShmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe3R2dC5ET00ucmVxdWVzdEFuaW1hdGlvbkZyYW1lUG9seWZpbGwoZXZ0LmZsdXNoKX0sdH0pKCk7UXl0LkFuaW1hdGlvbkZyYW1lPWl2dDt2YXIgcnZ0PShmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLl90aW1lb3V0TXNlYz10dnQuRE9NLlNDUkVFTl9SRUZSRVNIX1JBVEVfTUlMTElTRUNPTkRTfXJldHVybiB0LnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oKXtzZXRUaW1lb3V0KGV2dC5mbHVzaCx0aGlzLl90aW1lb3V0TXNlYyl9LHR9KSgpO1F5dC5UaW1lb3V0PXJ2dCwoZnVuY3Rpb24odCl7Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgZT1EX3Qsbj1iZ3QsaT1ReXQscj1uZXcgZS5TZXQsbz1uZXcgZS5TZXQsYT0hMSxzPSExO3QuUG9saWN5PW4ubWFrZUVudW0oWyJpbW1lZGlhdGUiLCJhbmltYXRpb25GcmFtZSIsInRpbWVvdXQiXSk7dmFyIGw9bmV3IGkuQW5pbWF0aW9uRnJhbWU7ZnVuY3Rpb24gYyh0KXtvLmFkZCh0KSxyLmFkZCh0KSx1KCl9ZnVuY3Rpb24gdSgpe2F8fChhPSEwLGwucmVuZGVyKCkpfXQucmVuZGVyUG9saWN5PWZ1bmN0aW9uIGgobil7aWYobnVsbD09bilyZXR1cm4gbDtzd2l0Y2gobil7Y2FzZSB0LlBvbGljeS5pbW1lZGlhdGU6bD1uZXcgaS5JbW1lZGlhdGU7YnJlYWs7Y2FzZSB0LlBvbGljeS5hbmltYXRpb25GcmFtZTpsPW5ldyBpLkFuaW1hdGlvbkZyYW1lO2JyZWFrO2Nhc2UgdC5Qb2xpY3kudGltZW91dDpsPW5ldyBpLlRpbWVvdXQ7YnJlYWs7ZGVmYXVsdDplLldpbmRvdy53YXJuKCJVbnJlY29nbml6ZWQgcmVuZGVyUG9saWN5OiAiK24pfX0sdC5yZWdpc3RlclRvUmVuZGVyPWZ1bmN0aW9uIGQodCl7cyYmZS5XaW5kb3cud2FybigiUmVnaXN0ZXJlZCB0byByZW5kZXIgd2hpbGUgb3RoZXIgY29tcG9uZW50cyBhcmUgZmx1c2hpbmc6IHJlcXVlc3QgbWF5IGJlIGlnbm9yZWQiKSxyLmFkZCh0KSx1KCl9LHQucmVnaXN0ZXJUb0NvbXB1dGVMYXlvdXRBbmRSZW5kZXI9Yyx0LnJlZ2lzdGVyVG9Db21wdXRlTGF5b3V0PWZ1bmN0aW9uIHAodCl7Yyh0KX0sdC5mbHVzaD1mdW5jdGlvbiBmKCl7aWYoYSl7by5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gdC5jb21wdXRlTGF5b3V0KCl9KSksci5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gdC5yZW5kZXIoKX0pKSxzPSEwO3ZhciB0PW5ldyBlLlNldDtyLmZvckVhY2goKGZ1bmN0aW9uKGUpe3RyeXtlLnJlbmRlckltbWVkaWF0ZWx5KCl9Y2F0Y2gobil7d2luZG93LnNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7dGhyb3cgbn0pLDApLHQuYWRkKGUpfX0pKSxvPW5ldyBlLlNldCxyPXQsYT0hMSxzPSExfX19KSh6X3QpLAovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoT190LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgb3Z0PXdwdCxhdnQ9el90LHN2dD1EX3QsbHZ0PUNlLmV4cG9ydHMsY3Z0PV9ndCx1dnQ9Ymd0O09fdC5YQWxpZ25tZW50PXV2dC5tYWtlRW51bShbImxlZnQiLCJjZW50ZXIiLCJyaWdodCJdKSxPX3QuWUFsaWdubWVudD11dnQubWFrZUVudW0oWyJ0b3AiLCJjZW50ZXIiLCJib3R0b20iXSk7dmFyIGh2dD0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dGhpcy5fb3ZlcmZsb3dIaWRkZW49ITEsdGhpcy5fb3JpZ2luPXt4OjAseTowfSx0aGlzLl94QWxpZ25tZW50PSJsZWZ0Iix0aGlzLl95QWxpZ25tZW50PSJ0b3AiLHRoaXMuX2lzU2V0dXA9ITEsdGhpcy5faXNBbmNob3JlZD0hMSx0aGlzLl9jc3NDbGFzc2VzPW5ldyBzdnQuU2V0LHRoaXMuX2Rlc3Ryb3llZD0hMSx0aGlzLl9vbkFuY2hvckNhbGxiYWNrcz1uZXcgc3Z0LkNhbGxiYWNrU2V0LHRoaXMuX29uRGV0YWNoQ2FsbGJhY2tzPW5ldyBzdnQuQ2FsbGJhY2tTZXQsdGhpcy5fY3NzQ2xhc3Nlcy5hZGQoImNvbXBvbmVudCIpfXJldHVybiB0LnByb3RvdHlwZS5hbmNob3I9ZnVuY3Rpb24odCl7aWYodD1jdnQuY29lcmNlRXh0ZXJuYWxEMyh0KSx0aGlzLl9kZXN0cm95ZWQpdGhyb3cgbmV3IEVycm9yKCJDYW4ndCByZXVzZSBkZXN0cm95KCktZWQgQ29tcG9uZW50cyEiKTtyZXR1cm4gdGhpcy5pc1Jvb3QoKSYmKHRoaXMuX3Jvb3RFbGVtZW50PXQsdGhpcy5fcm9vdEVsZW1lbnQuY2xhc3NlZCgicGxvdHRhYmxlIiwhMCkpLG51bGwhPXRoaXMuX2VsZW1lbnQ/dC5ub2RlKCkuYXBwZW5kQ2hpbGQodGhpcy5fZWxlbWVudC5ub2RlKCkpOih0aGlzLl9lbGVtZW50PXQuYXBwZW5kKCJkaXYiKSx0aGlzLl9zZXR1cCgpKSx0aGlzLl9pc0FuY2hvcmVkPSEwLHRoaXMuX29uQW5jaG9yQ2FsbGJhY2tzLmNhbGxDYWxsYmFja3ModGhpcyksdGhpc30sdC5wcm90b3R5cGUub25BbmNob3I9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2lzQW5jaG9yZWQmJnQodGhpcyksdGhpcy5fb25BbmNob3JDYWxsYmFja3MuYWRkKHQpLHRoaXN9LHQucHJvdG90eXBlLm9mZkFuY2hvcj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fb25BbmNob3JDYWxsYmFja3MuZGVsZXRlKHQpLHRoaXN9LHQucHJvdG90eXBlLl9zZXR1cD1mdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5faXNTZXR1cHx8KHRoaXMuX2Nzc0NsYXNzZXMuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dC5fZWxlbWVudC5jbGFzc2VkKGUsITApfSkpLHRoaXMuX2Nzc0NsYXNzZXM9bmV3IHN2dC5TZXQsdGhpcy5fYmFja2dyb3VuZENvbnRhaW5lcj10aGlzLl9lbGVtZW50LmFwcGVuZCgic3ZnIikuY2xhc3NlZCgiYmFja2dyb3VuZC1jb250YWluZXIiLCEwKSx0aGlzLl9jb250ZW50PXRoaXMuX2VsZW1lbnQuYXBwZW5kKCJzdmciKS5jbGFzc2VkKCJjb250ZW50IiwhMCksdGhpcy5fZm9yZWdyb3VuZENvbnRhaW5lcj10aGlzLl9lbGVtZW50LmFwcGVuZCgic3ZnIikuY2xhc3NlZCgiZm9yZWdyb3VuZC1jb250YWluZXIiLCEwKSx0aGlzLl9jb250ZW50LmNsYXNzZWQodGhpcy5fb3ZlcmZsb3dIaWRkZW4/ImNvbXBvbmVudC1vdmVyZmxvdy1oaWRkZW4iOiJjb21wb25lbnQtb3ZlcmZsb3ctdmlzaWJsZSIsITApLHRoaXMuX2lzU2V0dXA9ITApfSx0LnByb3RvdHlwZS5yZXF1ZXN0ZWRTcGFjZT1mdW5jdGlvbih0LGUpe3JldHVybnttaW5XaWR0aDowLG1pbkhlaWdodDowfX0sdC5wcm90b3R5cGUuY29tcHV0ZUxheW91dD1mdW5jdGlvbihlLG4saSl7aWYobnVsbD09ZXx8bnVsbD09bnx8bnVsbD09aSl7aWYobnVsbD09dGhpcy5fZWxlbWVudCl0aHJvdyBuZXcgRXJyb3IoImFuY2hvcigpIG11c3QgYmUgY2FsbGVkIGJlZm9yZSBjb21wdXRlTGF5b3V0KCkiKTtpZihudWxsPT10aGlzLl9yb290RWxlbWVudCl0aHJvdyBuZXcgRXJyb3IoIm51bGwgYXJndW1lbnRzIGNhbm5vdCBiZSBwYXNzZWQgdG8gY29tcHV0ZUxheW91dCgpIG9uIGEgbm9uLXJvb3QsIHVuYW5jaG9yZWQgbm9kZSIpO2U9e3g6MCx5OjB9O3ZhciByPXRoaXMuX3Jvb3RFbGVtZW50Lm5vZGUoKTtuPXN2dC5ET00uZWxlbWVudFdpZHRoKHIpLGk9c3Z0LkRPTS5lbGVtZW50SGVpZ2h0KHIpfXZhciBvPXRoaXMuX3NpemVGcm9tT2ZmZXIobixpKSxhPW8uaGVpZ2h0LHM9by53aWR0aDtyZXR1cm4gdGhpcy5zZXRCb3VuZHMocyxhLGUueCsobi1zKSp0Ll94QWxpZ25Ub1Byb3BvcnRpb25bdGhpcy5feEFsaWdubWVudF0sZS55KyhpLWEpKnQuX3lBbGlnblRvUHJvcG9ydGlvblt0aGlzLl95QWxpZ25tZW50XSksdGhpc30sdC5wcm90b3R5cGUuc2V0Qm91bmRzPWZ1bmN0aW9uKHQsZSxuLGkpe3JldHVybiB2b2lkIDA9PT1uJiYobj0wKSx2b2lkIDA9PT1pJiYoaT0wKSx0aGlzLl93aWR0aD10LHRoaXMuX2hlaWdodD1lLHRoaXMuX29yaWdpbj17eDpuLHk6aX0sbnVsbCE9dGhpcy5fZWxlbWVudCYmdGhpcy5fZWxlbWVudC5zdHlsZXMoe2xlZnQ6bisicHgiLGhlaWdodDplKyJweCIsdG9wOmkrInB4Iix3aWR0aDp0KyJweCJ9KSxudWxsIT10aGlzLl9yZXNpemVIYW5kbGVyJiZ0aGlzLl9yZXNpemVIYW5kbGVyKHt3aWR0aDp0LGhlaWdodDplfSksdGhpc30sdC5wcm90b3R5cGUuX3NpemVGcm9tT2ZmZXI9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLnJlcXVlc3RlZFNwYWNlKHQsZSk7cmV0dXJue3dpZHRoOnRoaXMuZml4ZWRXaWR0aCgpP01hdGgubWluKHQsbi5taW5XaWR0aCk6dCxoZWlnaHQ6dGhpcy5maXhlZEhlaWdodCgpP01hdGgubWluKGUsbi5taW5IZWlnaHQpOmV9fSx0LnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faXNBbmNob3JlZCYmdGhpcy5faXNTZXR1cCYmdGhpcy53aWR0aCgpPj0wJiZ0aGlzLmhlaWdodCgpPj0wJiZhdnQucmVnaXN0ZXJUb1JlbmRlcih0aGlzKSx0aGlzfSx0LnByb3RvdHlwZS5yZW5kZXJMb3dQcmlvcml0eT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJlbmRlcigpfSx0LnByb3RvdHlwZS5fc2NoZWR1bGVDb21wdXRlTGF5b3V0PWZ1bmN0aW9uKCl7dGhpcy5faXNBbmNob3JlZCYmdGhpcy5faXNTZXR1cCYmYXZ0LnJlZ2lzdGVyVG9Db21wdXRlTGF5b3V0QW5kUmVuZGVyKHRoaXMpfSx0LnByb3RvdHlwZS5vblJlc2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcmVzaXplSGFuZGxlcj10LHRoaXN9LHQucHJvdG90eXBlLnJlbmRlckltbWVkaWF0ZWx5PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LHQucHJvdG90eXBlLnJlZHJhdz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9pc0FuY2hvcmVkJiZ0aGlzLl9pc1NldHVwJiYodGhpcy5pc1Jvb3QoKT90aGlzLl9zY2hlZHVsZUNvbXB1dGVMYXlvdXQoKTp0aGlzLnBhcmVudCgpLnJlZHJhdygpKSx0aGlzfSx0LnByb3RvdHlwZS5pbnZhbGlkYXRlQ2FjaGU9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLnJlbmRlclRvPWZ1bmN0aW9uKHQpe2lmKHRoaXMuZGV0YWNoKCksbnVsbCE9dCl7dmFyIGU9dm9pZCAwO2lmKCEoZT0ic3RyaW5nIj09dHlwZW9mIHR8fGx2dC5pc0VsZW1lbnQodCk/b3Z0LnNlbGVjdCh0KTpjdnQuY29lcmNlRXh0ZXJuYWxEMyh0KSkubm9kZSgpfHxudWxsPT1lLm5vZGUoKS5ub2RlTmFtZSl0aHJvdyBuZXcgRXJyb3IoIlBsb3R0YWJsZSByZXF1aXJlcyBhIHZhbGlkIEVsZW1lbnQgdG8gcmVuZGVyVG8iKTtpZigic3ZnIj09PWUubm9kZSgpLm5vZGVOYW1lKXRocm93IG5ldyBFcnJvcigiUGxvdHRhYmxlIDMueCBhbmQgbGF0ZXIgY2FuIG9ubHkgcmVuZGVyVG8gYW4gSFRNTCBjb21wb25lbnQ7IHBhc3MgYSBkaXYgaW5zdGVhZCEiKTt0aGlzLmFuY2hvcihlKX1pZihudWxsPT10aGlzLl9lbGVtZW50KXRocm93IG5ldyBFcnJvcigiSWYgYSBDb21wb25lbnQgaGFzIG5ldmVyIGJlZW4gcmVuZGVyZWQgYmVmb3JlLCB0aGVuIHJlbmRlclRvIG11c3QgYmUgZ2l2ZW4gYSBub2RlIHRvIHJlbmRlciB0bywgb3IgYSBkMy5TZWxlY3Rpb24sIG9yIGEgc2VsZWN0b3Igc3RyaW5nIik7cmV0dXJuIGF2dC5yZWdpc3RlclRvQ29tcHV0ZUxheW91dEFuZFJlbmRlcih0aGlzKSxhdnQuZmx1c2goKSx0aGlzfSx0LnByb3RvdHlwZS54QWxpZ25tZW50PWZ1bmN0aW9uKGUpe2lmKG51bGw9PWUpcmV0dXJuIHRoaXMuX3hBbGlnbm1lbnQ7aWYoZT1lLnRvTG93ZXJDYXNlKCksbnVsbD09dC5feEFsaWduVG9Qcm9wb3J0aW9uW2VdKXRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgYWxpZ25tZW50OiAiK2UpO3JldHVybiB0aGlzLl94QWxpZ25tZW50PWUsdGhpcy5yZWRyYXcoKSx0aGlzfSx0LnByb3RvdHlwZS55QWxpZ25tZW50PWZ1bmN0aW9uKGUpe2lmKG51bGw9PWUpcmV0dXJuIHRoaXMuX3lBbGlnbm1lbnQ7aWYoZT1lLnRvTG93ZXJDYXNlKCksbnVsbD09dC5feUFsaWduVG9Qcm9wb3J0aW9uW2VdKXRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgYWxpZ25tZW50OiAiK2UpO3JldHVybiB0aGlzLl95QWxpZ25tZW50PWUsdGhpcy5yZWRyYXcoKSx0aGlzfSx0LnByb3RvdHlwZS5oYXNDbGFzcz1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9dCYmKG51bGw9PXRoaXMuX2VsZW1lbnQ/dGhpcy5fY3NzQ2xhc3Nlcy5oYXModCk6dGhpcy5fZWxlbWVudC5jbGFzc2VkKHQpKX0sdC5wcm90b3R5cGUuYWRkQ2xhc3M9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXR8fChudWxsPT10aGlzLl9lbGVtZW50P3RoaXMuX2Nzc0NsYXNzZXMuYWRkKHQpOnRoaXMuX2VsZW1lbnQuY2xhc3NlZCh0LCEwKSksdGhpc30sdC5wcm90b3R5cGUucmVtb3ZlQ2xhc3M9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXR8fChudWxsPT10aGlzLl9lbGVtZW50P3RoaXMuX2Nzc0NsYXNzZXMuZGVsZXRlKHQpOnRoaXMuX2VsZW1lbnQuY2xhc3NlZCh0LCExKSksdGhpc30sdC5wcm90b3R5cGUuZml4ZWRXaWR0aD1mdW5jdGlvbigpe3JldHVybiExfSx0LnByb3RvdHlwZS5maXhlZEhlaWdodD1mdW5jdGlvbigpe3JldHVybiExfSx0LnByb3RvdHlwZS5kZXRhY2g9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wYXJlbnQobnVsbCksdGhpcy5faXNBbmNob3JlZCYmdGhpcy5fZWxlbWVudC5yZW1vdmUoKSx0aGlzLl9pc0FuY2hvcmVkPSExLHRoaXMuX29uRGV0YWNoQ2FsbGJhY2tzLmNhbGxDYWxsYmFja3ModGhpcyksdGhpc30sdC5wcm90b3R5cGUub25EZXRhY2g9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX29uRGV0YWNoQ2FsbGJhY2tzLmFkZCh0KSx0aGlzfSx0LnByb3RvdHlwZS5vZmZEZXRhY2g9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX29uRGV0YWNoQ2FsbGJhY2tzLmRlbGV0ZSh0KSx0aGlzfSx0LnByb3RvdHlwZS5wYXJlbnQ9ZnVuY3Rpb24odCl7aWYodm9pZCAwPT09dClyZXR1cm4gdGhpcy5fcGFyZW50O2lmKG51bGwhPT10JiYhdC5oYXModGhpcykpdGhyb3cgbmV3IEVycm9yKCJQYXNzZWQgaW52YWxpZCBwYXJlbnQiKTtyZXR1cm4gdGhpcy5fcGFyZW50PXQsdGhpc30sdC5wcm90b3R5cGUuYm91bmRzPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcmlnaW4oKTtyZXR1cm57dG9wTGVmdDp0LGJvdHRvbVJpZ2h0Ont4OnQueCt0aGlzLndpZHRoKCkseTp0LnkrdGhpcy5oZWlnaHQoKX19fSx0LnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy5fZGVzdHJveWVkPSEwLHRoaXMuZGV0YWNoKCl9LHQucHJvdG90eXBlLndpZHRoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3dpZHRofSx0LnByb3RvdHlwZS5oZWlnaHQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faGVpZ2h0fSx0LnByb3RvdHlwZS5vcmlnaW49ZnVuY3Rpb24oKXtyZXR1cm57eDp0aGlzLl9vcmlnaW4ueCx5OnRoaXMuX29yaWdpbi55fX0sdC5wcm90b3R5cGUub3JpZ2luVG9Sb290PWZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMub3JpZ2luKCksZT10aGlzLnBhcmVudCgpO251bGwhPWU7KXt2YXIgbj1lLm9yaWdpbigpO3QueCs9bi54LHQueSs9bi55LGU9ZS5wYXJlbnQoKX1yZXR1cm4gdH0sdC5wcm90b3R5cGUucm9vdD1mdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzOyF0LmlzUm9vdCgpOyl0PXQucGFyZW50KCk7cmV0dXJuIHR9LHQucHJvdG90eXBlLmlzUm9vdD1mdW5jdGlvbigpe3JldHVybiBudWxsPT10aGlzLnBhcmVudCgpfSx0LnByb3RvdHlwZS5mb3JlZ3JvdW5kPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2ZvcmVncm91bmRDb250YWluZXJ9LHQucHJvdG90eXBlLmNvbnRlbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY29udGVudH0sdC5wcm90b3R5cGUuZWxlbWVudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9lbGVtZW50fSx0LnByb3RvdHlwZS5yb290RWxlbWVudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJvb3QoKS5fcm9vdEVsZW1lbnR9LHQucHJvdG90eXBlLmJhY2tncm91bmQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYmFja2dyb3VuZENvbnRhaW5lcn0sdC5feEFsaWduVG9Qcm9wb3J0aW9uPXtsZWZ0OjAsY2VudGVyOi41LHJpZ2h0OjF9LHQuX3lBbGlnblRvUHJvcG9ydGlvbj17dG9wOjAsY2VudGVyOi41LGJvdHRvbToxfSx0fSkoKTtPX3QuQ29tcG9uZW50PWh2dDt2YXIgZHZ0PXt9LHB2dD17fTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KHB2dCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGZ2dD13cHQ7ZnVuY3Rpb24gbXZ0KHQpe3JldHVybiB2b2lkIDA9PT10JiYodD0zKSxndnQodCksZnVuY3Rpb24oZSl7cmV0dXJuIGUudG9GaXhlZCh0KX19ZnVuY3Rpb24gZ3Z0KHQpe2lmKHQ8MHx8dD4yMCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiRm9ybWF0dGVyIHByZWNpc2lvbiBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMjAiKTtpZih0IT09TWF0aC5mbG9vcih0KSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiRm9ybWF0dGVyIHByZWNpc2lvbiBtdXN0IGJlIGFuIGludGVnZXIiKX0KLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi9wdnQuY3VycmVuY3k9ZnVuY3Rpb24gX3Z0KHQsZSxuKXt2b2lkIDA9PT10JiYodD0yKSx2b2lkIDA9PT1lJiYoZT0iJCIpLHZvaWQgMD09PW4mJihuPSEwKTt2YXIgaT1tdnQodCk7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciByPWkoTWF0aC5hYnModCkpO3JldHVybiIiIT09ciYmKG4/cj1lK3I6cis9ZSx0PDAmJihyPSItIityKSkscn19LHB2dC5maXhlZD1tdnQscHZ0LmdlbmVyYWw9ZnVuY3Rpb24geXZ0KHQpe3JldHVybiB2b2lkIDA9PT10JiYodD0zKSxndnQodCksZnVuY3Rpb24oZSl7aWYoIm51bWJlciI9PXR5cGVvZiBlKXt2YXIgbj1NYXRoLnBvdygxMCx0KTtyZXR1cm4gU3RyaW5nKE1hdGgucm91bmQoZSpuKS9uKX1yZXR1cm4gU3RyaW5nKGUpfX0scHZ0LmlkZW50aXR5PWZ1bmN0aW9uIHZ2dCgpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gU3RyaW5nKHQpfX0scHZ0LnBlcmNlbnRhZ2U9ZnVuY3Rpb24gYnZ0KHQpe3ZvaWQgMD09PXQmJih0PTApO3ZhciBlPW12dCh0KTtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIG49MTAwKnQsaT10LnRvU3RyaW5nKCkscj1NYXRoLnBvdygxMCxpLmxlbmd0aC0oaS5pbmRleE9mKCIuIikrMSkpO3JldHVybiBuPXBhcnNlSW50KChuKnIpLnRvU3RyaW5nKCksMTApL3IsZShuKSsiJSJ9fSxwdnQuc2lTdWZmaXg9ZnVuY3Rpb24geHZ0KHQpe3JldHVybiB2b2lkIDA9PT10JiYodD0zKSxndnQodCksZnVuY3Rpb24oZSl7cmV0dXJuIGZ2dC5mb3JtYXQoIi4iK3QrInMiKShlKX19LHB2dC5zaG9ydFNjYWxlPWZ1bmN0aW9uIHd2dCh0KXt2b2lkIDA9PT10JiYodD0zKSxndnQodCk7dmFyIGU9IktNQlRRIixuPWZ2dC5mb3JtYXQoIi4iK3QrImUiKSxpPWZ2dC5mb3JtYXQoIi4iK3QrImYiKSxyPU1hdGgucG93KDEwLDMqKGUubGVuZ3RoKzEpKSxvPU1hdGgucG93KDEwLC10KTtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIGE9TWF0aC5hYnModCk7aWYoKGE8b3x8YT49cikmJjAhPT1hKXJldHVybiBuKHQpO2Zvcih2YXIgcz0tMTthPj1NYXRoLnBvdygxZTMscysyKSYmczxlLmxlbmd0aC0xOylzKys7dmFyIGw9IiI7cmV0dXJuIGw9LTE9PT1zP2kodCk6aSh0L01hdGgucG93KDFlMyxzKzEpKStlW3NdLCh0PjAmJiIxMDAwIj09PWwuc3Vic3RyKDAsNCl8fHQ8MCYmIi0xMDAwIj09PWwuc3Vic3RyKDAsNSkpJiYoczxlLmxlbmd0aC0xPyhzKyssbD1pKHQvTWF0aC5wb3coMWUzLHMrMSkpK2Vbc10pOmw9bih0KSksbH19LHB2dC5tdWx0aVRpbWU9ZnVuY3Rpb24gU3Z0KCl7dmFyIHQ9W3tzcGVjaWZpZXI6Ii4lTCIscHJlZGljYXRlOmZ1bmN0aW9uKHQpe3JldHVybiAwIT09dC5nZXRNaWxsaXNlY29uZHMoKX19LHtzcGVjaWZpZXI6IjolUyIscHJlZGljYXRlOmZ1bmN0aW9uKHQpe3JldHVybiAwIT09dC5nZXRTZWNvbmRzKCl9fSx7c3BlY2lmaWVyOiIlSTolTSIscHJlZGljYXRlOmZ1bmN0aW9uKHQpe3JldHVybiAwIT09dC5nZXRNaW51dGVzKCl9fSx7c3BlY2lmaWVyOiIlSSAlcCIscHJlZGljYXRlOmZ1bmN0aW9uKHQpe3JldHVybiAwIT09dC5nZXRIb3VycygpfX0se3NwZWNpZmllcjoiJWEgJWQiLHByZWRpY2F0ZTpmdW5jdGlvbih0KXtyZXR1cm4gMCE9PXQuZ2V0RGF5KCkmJjEhPT10LmdldERhdGUoKX19LHtzcGVjaWZpZXI6IiViICVkIixwcmVkaWNhdGU6ZnVuY3Rpb24odCl7cmV0dXJuIDEhPT10LmdldERhdGUoKX19LHtzcGVjaWZpZXI6IiViIixwcmVkaWNhdGU6ZnVuY3Rpb24odCl7cmV0dXJuIDAhPT10LmdldE1vbnRoKCl9fV07cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBuPXQuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gdC5wcmVkaWNhdGUoZSl9KSk7cmV0dXJuIGZ2dC50aW1lRm9ybWF0KG4ubGVuZ3RoPjA/blswXS5zcGVjaWZpZXI6IiVZIikoZSl9fSxwdnQudGltZT1mdW5jdGlvbiBNdnQodCxlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9ZmFsc2UpLGU/ZnZ0LnV0Y0Zvcm1hdCh0KTpmdnQudGltZUZvcm1hdCh0KX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGR2dCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIEV2dD1CTyxUdnQ9d3B0LEN2dD1MZ3QsQXZ0PU9fdCxrdnQ9cHZ0LEx2dD1EX3Q7ZHZ0LkF4aXNPcmllbnRhdGlvbj1iZ3QubWFrZUVudW0oWyJib3R0b20iLCJsZWZ0IiwicmlnaHQiLCJ0b3AiXSk7dmFyIFB2dD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4pe3ZhciBpPXQuY2FsbCh0aGlzKXx8dGhpcztpZihpLl9lbmRUaWNrTGVuZ3RoPTUsaS5faW5uZXJUaWNrTGVuZ3RoPTUsaS5fdGlja0xhYmVsUGFkZGluZz0xMCxpLl9tYXJnaW49MTUsaS5fc2hvd0VuZFRpY2tMYWJlbHM9ITEsaS5fYW5ub3RhdGlvbnNFbmFibGVkPSExLGkuX2Fubm90YXRpb25UaWVyQ291bnQ9MSxudWxsPT1lfHxudWxsPT1uKXRocm93IG5ldyBFcnJvcigiQXhpcyByZXF1aXJlcyBhIHNjYWxlIGFuZCBvcmllbnRhdGlvbiIpO3JldHVybiBpLl9zY2FsZT1lLGkub3JpZW50YXRpb24obiksaS5fc2V0RGVmYXVsdEFsaWdubWVudCgpLGkuYWRkQ2xhc3MoImF4aXMiKSxpLmlzSG9yaXpvbnRhbCgpP2kuYWRkQ2xhc3MoIngtYXhpcyIpOmkuYWRkQ2xhc3MoInktYXhpcyIpLGkuZm9ybWF0dGVyKGt2dC5pZGVudGl0eSgpKSxpLl9yZXNjYWxlQ2FsbGJhY2s9ZnVuY3Rpb24odCl7cmV0dXJuIGkuX3Jlc2NhbGUoKX0saS5fc2NhbGUub25VcGRhdGUoaS5fcmVzY2FsZUNhbGxiYWNrKSxpLl9hbm5vdGF0ZWRUaWNrcz1bXSxpLl9hbm5vdGF0aW9uRm9ybWF0dGVyPWt2dC5pZGVudGl0eSgpLGl9cmV0dXJuIEV2dC5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dC5wcm90b3R5cGUuZGVzdHJveS5jYWxsKHRoaXMpLHRoaXMuX3NjYWxlLm9mZlVwZGF0ZSh0aGlzLl9yZXNjYWxlQ2FsbGJhY2spfSxlLnByb3RvdHlwZS50aWNrTGFiZWxEYXRhT25FbGVtZW50PWZ1bmN0aW9uKHQpe2lmKG51bGwhPXQpe2Zvcih2YXIgbjtudWxsIT10JiZ0LmNsYXNzTGlzdCYmdm9pZCAwPT09bjspdC5jbGFzc0xpc3QuY29udGFpbnMoZS5USUNLX0xBQkVMX0NMQVNTKT9uPXQ6dD10LnBhcmVudE5vZGU7cmV0dXJuIHZvaWQgMD09PXQ/dm9pZCAwOlR2dC5zZWxlY3QodCkuZGF0dW0oKX19LGUucHJvdG90eXBlLl9jb21wdXRlV2lkdGg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbWF4TGFiZWxUaWNrTGVuZ3RoKCl9LGUucHJvdG90eXBlLl9jb21wdXRlSGVpZ2h0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21heExhYmVsVGlja0xlbmd0aCgpfSxlLnByb3RvdHlwZS5yZXF1ZXN0ZWRTcGFjZT1mdW5jdGlvbih0LG4pe3ZhciBpPTAscj0wO3RoaXMuaXNIb3Jpem9udGFsKCk/KHI9dGhpcy5fY29tcHV0ZUhlaWdodCgpK3RoaXMuX21hcmdpbix0aGlzLmFubm90YXRpb25zRW5hYmxlZCgpJiYocis9KHRoaXMuX2Fubm90YXRpb25NZWFzdXJlci5tZWFzdXJlKCkuaGVpZ2h0KzIqZS5fQU5OT1RBVElPTl9MQUJFTF9QQURESU5HKSp0aGlzLmFubm90YXRpb25UaWVyQ291bnQoKSkpOihpPXRoaXMuX2NvbXB1dGVXaWR0aCgpK3RoaXMuX21hcmdpbix0aGlzLmFubm90YXRpb25zRW5hYmxlZCgpJiYoaSs9KHRoaXMuX2Fubm90YXRpb25NZWFzdXJlci5tZWFzdXJlKCkuaGVpZ2h0KzIqZS5fQU5OT1RBVElPTl9MQUJFTF9QQURESU5HKSp0aGlzLmFubm90YXRpb25UaWVyQ291bnQoKSkpO3JldHVybnttaW5XaWR0aDppLG1pbkhlaWdodDpyfX0sZS5wcm90b3R5cGUuZml4ZWRIZWlnaHQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc0hvcml6b250YWwoKX0sZS5wcm90b3R5cGUuZml4ZWRXaWR0aD1mdW5jdGlvbigpe3JldHVybiF0aGlzLmlzSG9yaXpvbnRhbCgpfSxlLnByb3RvdHlwZS5fcmVzY2FsZT1mdW5jdGlvbigpe3RoaXMucmVuZGVyKCl9LGUucHJvdG90eXBlLmNvbXB1dGVMYXlvdXQ9ZnVuY3Rpb24oZSxuLGkpe3JldHVybiB0LnByb3RvdHlwZS5jb21wdXRlTGF5b3V0LmNhbGwodGhpcyxlLG4saSksdGhpcy5pc0hvcml6b250YWwoKT90aGlzLl9zY2FsZS5yYW5nZShbMCx0aGlzLndpZHRoKCldKTp0aGlzLl9zY2FsZS5yYW5nZShbdGhpcy5oZWlnaHQoKSwwXSksdGhpc30sZS5wcm90b3R5cGUuX3NpemVGcm9tT2ZmZXI9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLnJlcXVlc3RlZFNwYWNlKHQsZSk7cmV0dXJuIHRoaXMuaXNIb3Jpem9udGFsKCk/e3dpZHRoOnQsaGVpZ2h0Om4ubWluSGVpZ2h0fTp7aGVpZ2h0OmUsd2lkdGg6bi5taW5XaWR0aH19LGUucHJvdG90eXBlLl9zZXR1cD1mdW5jdGlvbigpe3QucHJvdG90eXBlLl9zZXR1cC5jYWxsKHRoaXMpLHRoaXMuX3RpY2tNYXJrQ29udGFpbmVyPXRoaXMuY29udGVudCgpLmFwcGVuZCgiZyIpLmNsYXNzZWQoZS5USUNLX01BUktfQ0xBU1MrIi1jb250YWluZXIiLCEwKSx0aGlzLl90aWNrTGFiZWxDb250YWluZXI9dGhpcy5jb250ZW50KCkuYXBwZW5kKCJnIikuY2xhc3NlZChlLlRJQ0tfTEFCRUxfQ0xBU1MrIi1jb250YWluZXIiLCEwKSx0aGlzLl9iYXNlbGluZT10aGlzLmNvbnRlbnQoKS5hcHBlbmQoImxpbmUiKS5jbGFzc2VkKCJiYXNlbGluZSIsITApLHRoaXMuX2Fubm90YXRpb25Db250YWluZXI9dGhpcy5jb250ZW50KCkuYXBwZW5kKCJnIikuY2xhc3NlZCgiYW5ub3RhdGlvbi1jb250YWluZXIiLCEwKSx0aGlzLl9hbm5vdGF0aW9uQ29udGFpbmVyLmFwcGVuZCgiZyIpLmNsYXNzZWQoImFubm90YXRpb24tbGluZS1jb250YWluZXIiLCEwKSx0aGlzLl9hbm5vdGF0aW9uQ29udGFpbmVyLmFwcGVuZCgiZyIpLmNsYXNzZWQoImFubm90YXRpb24tY2lyY2xlLWNvbnRhaW5lciIsITApLHRoaXMuX2Fubm90YXRpb25Db250YWluZXIuYXBwZW5kKCJnIikuY2xhc3NlZCgiYW5ub3RhdGlvbi1yZWN0LWNvbnRhaW5lciIsITApO3ZhciBuPXRoaXMuX2Fubm90YXRpb25Db250YWluZXIuYXBwZW5kKCJnIikuY2xhc3NlZCgiYW5ub3RhdGlvbi1sYWJlbC1jb250YWluZXIiLCEwKSxpPW5ldyBDdnQuU3ZnQ29udGV4dChuLm5vZGUoKSk7dGhpcy5fYW5ub3RhdGlvbk1lYXN1cmVyPW5ldyBDdnQuQ2FjaGVNZWFzdXJlcihpKSx0aGlzLl9hbm5vdGF0aW9uV3JpdGVyPW5ldyBDdnQuV3JpdGVyKHRoaXMuX2Fubm90YXRpb25NZWFzdXJlcixpKX0sZS5wcm90b3R5cGUuX2dldFRpY2tWYWx1ZXM9ZnVuY3Rpb24oKXtyZXR1cm5bXX0sZS5wcm90b3R5cGUucmVuZGVySW1tZWRpYXRlbHk9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9nZXRUaWNrVmFsdWVzKCksbj10aGlzLl90aWNrTWFya0NvbnRhaW5lci5zZWxlY3RBbGwoIi4iK2UuVElDS19NQVJLX0NMQVNTKS5kYXRhKHQpLGk9bi5lbnRlcigpLmFwcGVuZCgibGluZSIpLmNsYXNzZWQoZS5USUNLX01BUktfQ0xBU1MsITApLm1lcmdlKG4pO3JldHVybiBpLmF0dHJzKHRoaXMuX2dlbmVyYXRlVGlja01hcmtBdHRySGFzaCgpKSxUdnQuc2VsZWN0KGkubm9kZXMoKVswXSkuY2xhc3NlZChlLkVORF9USUNLX01BUktfQ0xBU1MsITApLmF0dHJzKHRoaXMuX2dlbmVyYXRlVGlja01hcmtBdHRySGFzaCghMCkpLFR2dC5zZWxlY3QoaS5ub2RlcygpW3QubGVuZ3RoLTFdKS5jbGFzc2VkKGUuRU5EX1RJQ0tfTUFSS19DTEFTUywhMCkuYXR0cnModGhpcy5fZ2VuZXJhdGVUaWNrTWFya0F0dHJIYXNoKCEwKSksbi5leGl0KCkucmVtb3ZlKCksdGhpcy5fYmFzZWxpbmUuYXR0cnModGhpcy5fZ2VuZXJhdGVCYXNlbGluZUF0dHJIYXNoKCkpLHRoaXMuYW5ub3RhdGlvbnNFbmFibGVkKCk/dGhpcy5fZHJhd0Fubm90YXRpb25zKCk6dGhpcy5fcmVtb3ZlQW5ub3RhdGlvbnMoKSx0aGlzfSxlLnByb3RvdHlwZS5hbm5vdGF0ZWRUaWNrcz1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9hbm5vdGF0ZWRUaWNrczoodGhpcy5fYW5ub3RhdGVkVGlja3M9dCx0aGlzLnJlbmRlcigpLHRoaXMpfSxlLnByb3RvdHlwZS5hbm5vdGF0aW9uRm9ybWF0dGVyPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX2Fubm90YXRpb25Gb3JtYXR0ZXI6KHRoaXMuX2Fubm90YXRpb25Gb3JtYXR0ZXI9dCx0aGlzLnJlbmRlcigpLHRoaXMpfSxlLnByb3RvdHlwZS5hbm5vdGF0aW9uc0VuYWJsZWQ9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fYW5ub3RhdGlvbnNFbmFibGVkOih0aGlzLl9hbm5vdGF0aW9uc0VuYWJsZWQ9dCx0aGlzLnJlZHJhdygpLHRoaXMpfSxlLnByb3RvdHlwZS5hbm5vdGF0aW9uVGllckNvdW50PWZ1bmN0aW9uKHQpe2lmKG51bGw9PXQpcmV0dXJuIHRoaXMuX2Fubm90YXRpb25UaWVyQ291bnQ7aWYodDwwKXRocm93IG5ldyBFcnJvcigiYW5ub3RhdGlvblRpZXJDb3VudCBjYW5ub3QgYmUgbmVnYXRpdmUiKTtyZXR1cm4gdGhpcy5fYW5ub3RhdGlvblRpZXJDb3VudD10LHRoaXMucmVkcmF3KCksdGhpc30sZS5wcm90b3R5cGUuX2RyYXdBbm5vdGF0aW9ucz1mdW5jdGlvbigpe3ZhciB0PXRoaXMsbj1lLl9BTk5PVEFUSU9OX0xBQkVMX1BBRERJTkcsaT1uZXcgTHZ0Lk1hcCxyPXRoaXMuX2Fubm90YXRlZFRpY2tzVG9SZW5kZXIoKTtyLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciByPXQuX2Fubm90YXRpb25NZWFzdXJlci5tZWFzdXJlKHQuYW5ub3RhdGlvbkZvcm1hdHRlcigpKGUpKTtpLnNldChlLHt3aWR0aDpyLndpZHRoKzIqbixoZWlnaHQ6ci5oZWlnaHQrMipufSl9KSk7dmFyIG89dGhpcy5fYW5ub3RhdGlvbk1lYXN1cmVyLm1lYXN1cmUoKS5oZWlnaHQrMipuLGE9dGhpcy5fYW5ub3RhdGlvblRvVGllcihpKSxzPW5ldyBMdnQuU2V0LGw9dGhpcy5pc0hvcml6b250YWwoKT90aGlzLmhlaWdodCgpOnRoaXMud2lkdGgoKSxjPXRoaXMuX2NvcmVTaXplKCksdT1NYXRoLm1pbih0aGlzLmFubm90YXRpb25UaWVyQ291bnQoKSxNYXRoLmZsb29yKChsLWMpL28pKTthLmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7KC0xPT09dHx8dD49dSkmJnMuYWRkKGUpfSkpO3ZhciBoLGQ9ZnVuY3Rpb24odCxlLG4pe3ZhciBpPXQuc2VsZWN0QWxsKCIuIituKS5kYXRhKHIpLG89aS5lbnRlcigpLmFwcGVuZChlKS5jbGFzc2VkKG4sITApLm1lcmdlKGkpO3JldHVybiBpLmV4aXQoKS5yZW1vdmUoKSxvfSxwPWZ1bmN0aW9uKGUpe3N3aXRjaCh0Lm9yaWVudGF0aW9uKCkpe2Nhc2UiYm90dG9tIjpjYXNlInJpZ2h0IjpyZXR1cm4gYS5nZXQoZSkqbytjO2Nhc2UidG9wIjpjYXNlImxlZnQiOnJldHVybiBsLWMtYS5nZXQoZSkqb319LGY9ZnVuY3Rpb24oZSl7cmV0dXJuIHQuX3NjYWxlLnNjYWxlKGUpfSxtPWZ1bmN0aW9uKHQpe3JldHVybiBzLmhhcyh0KT8iaGlkZGVuIjoidmlzaWJsZSJ9O3N3aXRjaCh0aGlzLm9yaWVudGF0aW9uKCkpe2Nhc2UiYm90dG9tIjpjYXNlInJpZ2h0IjpoPTA7YnJlYWs7Y2FzZSJ0b3AiOmg9dGhpcy5oZWlnaHQoKTticmVhaztjYXNlImxlZnQiOmg9dGhpcy53aWR0aCgpfXZhciBnPXRoaXMuaXNIb3Jpem9udGFsKCk7ZCh0aGlzLl9hbm5vdGF0aW9uQ29udGFpbmVyLnNlbGVjdCgiLmFubm90YXRpb24tbGluZS1jb250YWluZXIiKSwibGluZSIsZS5BTk5PVEFUSU9OX0xJTkVfQ0xBU1MpLmF0dHJzKHt4MTpnP2Y6aCx4MjpnP2Y6cCx5MTpnP2g6Zix5MjpnP3A6Zix2aXNpYmlsaXR5Om19KSxkKHRoaXMuX2Fubm90YXRpb25Db250YWluZXIuc2VsZWN0KCIuYW5ub3RhdGlvbi1jaXJjbGUtY29udGFpbmVyIiksImNpcmNsZSIsZS5BTk5PVEFUSU9OX0NJUkNMRV9DTEFTUykuYXR0cnMoe2N4Omc/ZjpoLGN5Omc/aDpmLHI6M30pO3ZhciBfPWZ1bmN0aW9uKGUpe3N3aXRjaCh0Lm9yaWVudGF0aW9uKCkpe2Nhc2UiYm90dG9tIjpjYXNlInJpZ2h0IjpyZXR1cm4gcChlKTtjYXNlInRvcCI6Y2FzZSJsZWZ0IjpyZXR1cm4gcChlKS1pLmdldChlKS5oZWlnaHR9fTtkKHRoaXMuX2Fubm90YXRpb25Db250YWluZXIuc2VsZWN0KCIuYW5ub3RhdGlvbi1yZWN0LWNvbnRhaW5lciIpLCJyZWN0IixlLkFOTk9UQVRJT05fUkVDVF9DTEFTUykuYXR0cnMoe3g6Zz9mOl8seTpnP186Zix3aWR0aDpnP2Z1bmN0aW9uKHQpe3JldHVybiBpLmdldCh0KS53aWR0aH06ZnVuY3Rpb24odCl7cmV0dXJuIGkuZ2V0KHQpLmhlaWdodH0saGVpZ2h0Omc/ZnVuY3Rpb24odCl7cmV0dXJuIGkuZ2V0KHQpLmhlaWdodH06ZnVuY3Rpb24odCl7cmV0dXJuIGkuZ2V0KHQpLndpZHRofSx2aXNpYmlsaXR5Om19KTt2YXIgeT10aGlzLl9hbm5vdGF0aW9uV3JpdGVyLHY9dGhpcy5hbm5vdGF0aW9uRm9ybWF0dGVyKCksYj1kKHRoaXMuX2Fubm90YXRpb25Db250YWluZXIuc2VsZWN0KCIuYW5ub3RhdGlvbi1sYWJlbC1jb250YWluZXIiKSwiZyIsZS5BTk5PVEFUSU9OX0xBQkVMX0NMQVNTKTtiLnNlbGVjdEFsbCgiLnRleHQtY29udGFpbmVyIikucmVtb3ZlKCksYi5hdHRycyh7dHJhbnNmb3JtOmZ1bmN0aW9uKHQpe3JldHVybiJ0cmFuc2xhdGUoIisoZz9mKHQpOl8odCkpKyIsIisoZz9fKHQpOmYodCkpKyIpIn0sdmlzaWJpbGl0eTptfSkuZWFjaCgoZnVuY3Rpb24odCl7eS53cml0ZSh2KHQpLGc/aS5nZXQodCkud2lkdGg6aS5nZXQodCkuaGVpZ2h0LGc/aS5nZXQodCkuaGVpZ2h0OmkuZ2V0KHQpLndpZHRoLHt4QWxpZ246ImNlbnRlciIseUFsaWduOiJjZW50ZXIiLHRleHRSb3RhdGlvbjpnPzA6OTB9LFR2dC5zZWxlY3QodGhpcykubm9kZSgpKX0pKX0sZS5wcm90b3R5cGUuX2Fubm90YXRlZFRpY2tzVG9SZW5kZXI9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy5fc2NhbGUucmFuZ2UoKTtyZXR1cm4gTHZ0LkFycmF5LnVuaXEodGhpcy5hbm5vdGF0ZWRUaWNrcygpLmZpbHRlcigoZnVuY3Rpb24obil7cmV0dXJuIG51bGwhPW4mJkx2dC5NYXRoLmluUmFuZ2UodC5fc2NhbGUuc2NhbGUobiksZVswXSxlWzFdKX0pKSl9LGUucHJvdG90eXBlLl9jb3JlU2l6ZT1mdW5jdGlvbigpe3ZhciB0PXRoaXMuaXNIb3Jpem9udGFsKCk/dGhpcy5oZWlnaHQoKTp0aGlzLndpZHRoKCksZT10aGlzLmlzSG9yaXpvbnRhbCgpP3RoaXMuX2NvbXB1dGVIZWlnaHQoKTp0aGlzLl9jb21wdXRlV2lkdGgoKTtyZXR1cm4gTWF0aC5taW4oZSx0KX0sZS5wcm90b3R5cGUuX2Fubm90YXRpb25UaWVySGVpZ2h0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Fubm90YXRpb25NZWFzdXJlci5tZWFzdXJlKCkuaGVpZ2h0KzIqZS5fQU5OT1RBVElPTl9MQUJFTF9QQURESU5HfSxlLnByb3RvdHlwZS5fYW5ub3RhdGlvblRvVGllcj1mdW5jdGlvbih0KXt2YXIgZT10aGlzLG49W1tdXSxpPW5ldyBMdnQuTWFwLHI9dGhpcy5pc0hvcml6b250YWwoKT90aGlzLndpZHRoKCk6dGhpcy5oZWlnaHQoKTtyZXR1cm4gdGhpcy5fYW5ub3RhdGVkVGlja3NUb1JlbmRlcigpLmZvckVhY2goKGZ1bmN0aW9uKG8pe3ZhciBhPWUuX3NjYWxlLnNjYWxlKG8pLHM9dC5nZXQobykud2lkdGg7aWYoYTwwfHxhK3M+cilpLnNldChvLC0xKTtlbHNle2Zvcih2YXIgbD0wO25bbF0uc29tZSgoZnVuY3Rpb24obil7dmFyIGk9ZS5fc2NhbGUuc2NhbGUobikscj10LmdldChuKS53aWR0aDtyZXR1cm4gYStzPj1pJiZhPD1pK3J9KSk7KWwrKyxuLmxlbmd0aD09PWwmJm4ucHVzaChbXSk7bltsXS5wdXNoKG8pLGkuc2V0KG8sbCl9fSkpLGl9LGUucHJvdG90eXBlLl9yZW1vdmVBbm5vdGF0aW9ucz1mdW5jdGlvbigpe3RoaXMuX2Fubm90YXRpb25Db250YWluZXIuc2VsZWN0QWxsKCIuYW5ub3RhdGlvbi1saW5lIikucmVtb3ZlKCksdGhpcy5fYW5ub3RhdGlvbkNvbnRhaW5lci5zZWxlY3RBbGwoIi5hbm5vdGF0aW9uLWNpcmNsZSIpLnJlbW92ZSgpLHRoaXMuX2Fubm90YXRpb25Db250YWluZXIuc2VsZWN0QWxsKCIuYW5ub3RhdGlvbi1yZWN0IikucmVtb3ZlKCksdGhpcy5fYW5ub3RhdGlvbkNvbnRhaW5lci5zZWxlY3RBbGwoIi5hbm5vdGF0aW9uLWxhYmVsIikucmVtb3ZlKCl9LGUucHJvdG90eXBlLl9nZW5lcmF0ZUJhc2VsaW5lQXR0ckhhc2g9ZnVuY3Rpb24oKXt2YXIgdD17eDE6MCx5MTowLHgyOjAseTI6MH07c3dpdGNoKHRoaXMuX29yaWVudGF0aW9uKXtjYXNlImJvdHRvbSI6dC54Mj10aGlzLndpZHRoKCk7YnJlYWs7Y2FzZSJ0b3AiOnQueDI9dGhpcy53aWR0aCgpLHQueTE9dGhpcy5oZWlnaHQoKSx0LnkyPXRoaXMuaGVpZ2h0KCk7YnJlYWs7Y2FzZSJsZWZ0Ijp0LngxPXRoaXMud2lkdGgoKSx0LngyPXRoaXMud2lkdGgoKSx0LnkyPXRoaXMuaGVpZ2h0KCk7YnJlYWs7Y2FzZSJyaWdodCI6dC55Mj10aGlzLmhlaWdodCgpfXJldHVybiB0fSxlLnByb3RvdHlwZS5fZ2VuZXJhdGVUaWNrTWFya0F0dHJIYXNoPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7dm9pZCAwPT09dCYmKHQ9ITEpO3ZhciBuPXt4MTowLHkxOjAseDI6MCx5MjowfSxpPWZ1bmN0aW9uKHQpe3JldHVybiBlLl9zY2FsZS5zY2FsZSh0KX07dGhpcy5pc0hvcml6b250YWwoKT8obi54MT1pLG4ueDI9aSk6KG4ueTE9aSxuLnkyPWkpO3ZhciByPXQ/dGhpcy5fZW5kVGlja0xlbmd0aDp0aGlzLl9pbm5lclRpY2tMZW5ndGg7c3dpdGNoKHRoaXMuX29yaWVudGF0aW9uKXtjYXNlImJvdHRvbSI6bi55Mj1yO2JyZWFrO2Nhc2UidG9wIjpuLnkxPXRoaXMuaGVpZ2h0KCksbi55Mj10aGlzLmhlaWdodCgpLXI7YnJlYWs7Y2FzZSJsZWZ0IjpuLngxPXRoaXMud2lkdGgoKSxuLngyPXRoaXMud2lkdGgoKS1yO2JyZWFrO2Nhc2UicmlnaHQiOm4ueDI9cn1yZXR1cm4gbn0sZS5wcm90b3R5cGUuX3NldERlZmF1bHRBbGlnbm1lbnQ9ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5fb3JpZW50YXRpb24pe2Nhc2UiYm90dG9tIjp0aGlzLnlBbGlnbm1lbnQoInRvcCIpO2JyZWFrO2Nhc2UidG9wIjp0aGlzLnlBbGlnbm1lbnQoImJvdHRvbSIpO2JyZWFrO2Nhc2UibGVmdCI6dGhpcy54QWxpZ25tZW50KCJyaWdodCIpO2JyZWFrO2Nhc2UicmlnaHQiOnRoaXMueEFsaWdubWVudCgibGVmdCIpfX0sZS5wcm90b3R5cGUuaXNIb3Jpem9udGFsPWZ1bmN0aW9uKCl7cmV0dXJuInRvcCI9PT10aGlzLl9vcmllbnRhdGlvbnx8ImJvdHRvbSI9PT10aGlzLl9vcmllbnRhdGlvbn0sZS5wcm90b3R5cGUuZ2V0U2NhbGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc2NhbGV9LGUucHJvdG90eXBlLmZvcm1hdHRlcj1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9mb3JtYXR0ZXI6KHRoaXMuX2Zvcm1hdHRlcj10LHRoaXMucmVkcmF3KCksdGhpcyl9LGUucHJvdG90eXBlLmlubmVyVGlja0xlbmd0aD1mdW5jdGlvbih0KXtpZihudWxsPT10KXJldHVybiB0aGlzLl9pbm5lclRpY2tMZW5ndGg7aWYodDwwKXRocm93IG5ldyBFcnJvcigiaW5uZXIgdGljayBsZW5ndGggbXVzdCBiZSBwb3NpdGl2ZSIpO3JldHVybiB0aGlzLl9pbm5lclRpY2tMZW5ndGg9dCx0aGlzLnJlZHJhdygpLHRoaXN9LGUucHJvdG90eXBlLmVuZFRpY2tMZW5ndGg9ZnVuY3Rpb24odCl7aWYobnVsbD09dClyZXR1cm4gdGhpcy5fZW5kVGlja0xlbmd0aDtpZih0PDApdGhyb3cgbmV3IEVycm9yKCJlbmQgdGljayBsZW5ndGggbXVzdCBiZSBwb3NpdGl2ZSIpO3JldHVybiB0aGlzLl9lbmRUaWNrTGVuZ3RoPXQsdGhpcy5yZWRyYXcoKSx0aGlzfSxlLnByb3RvdHlwZS5fbWF4TGFiZWxUaWNrTGVuZ3RoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2hvd0VuZFRpY2tMYWJlbHMoKT9NYXRoLm1heCh0aGlzLmlubmVyVGlja0xlbmd0aCgpLHRoaXMuZW5kVGlja0xlbmd0aCgpKTp0aGlzLmlubmVyVGlja0xlbmd0aCgpfSxlLnByb3RvdHlwZS50aWNrTGFiZWxQYWRkaW5nPWZ1bmN0aW9uKHQpe2lmKG51bGw9PXQpcmV0dXJuIHRoaXMuX3RpY2tMYWJlbFBhZGRpbmc7aWYodDwwKXRocm93IG5ldyBFcnJvcigidGljayBsYWJlbCBwYWRkaW5nIG11c3QgYmUgcG9zaXRpdmUiKTtyZXR1cm4gdGhpcy5fdGlja0xhYmVsUGFkZGluZz10LHRoaXMucmVkcmF3KCksdGhpc30sZS5wcm90b3R5cGUubWFyZ2luPWZ1bmN0aW9uKHQpe2lmKG51bGw9PXQpcmV0dXJuIHRoaXMuX21hcmdpbjtpZih0PDApdGhyb3cgbmV3IEVycm9yKCJtYXJnaW4gc2l6ZSBtdXN0IGJlIHBvc2l0aXZlIik7cmV0dXJuIHRoaXMuX21hcmdpbj10LHRoaXMucmVkcmF3KCksdGhpc30sZS5wcm90b3R5cGUub3JpZW50YXRpb249ZnVuY3Rpb24odCl7aWYobnVsbD09dClyZXR1cm4gdGhpcy5fb3JpZW50YXRpb247dmFyIGU9dC50b0xvd2VyQ2FzZSgpO2lmKCJ0b3AiIT09ZSYmImJvdHRvbSIhPT1lJiYibGVmdCIhPT1lJiYicmlnaHQiIT09ZSl0aHJvdyBuZXcgRXJyb3IoInVuc3VwcG9ydGVkIG9yaWVudGF0aW9uIik7cmV0dXJuIHRoaXMuX29yaWVudGF0aW9uPWUsdGhpcy5yZWRyYXcoKSx0aGlzfSxlLnByb3RvdHlwZS5zaG93RW5kVGlja0xhYmVscz1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9zaG93RW5kVGlja0xhYmVsczoodGhpcy5fc2hvd0VuZFRpY2tMYWJlbHM9dCx0aGlzLnJlbmRlcigpLHRoaXMpfSxlLnByb3RvdHlwZS5fc2hvd0FsbFRpY2tNYXJrcz1mdW5jdGlvbigpe3RoaXMuX3RpY2tNYXJrQ29udGFpbmVyLnNlbGVjdEFsbCgiLiIrZS5USUNLX01BUktfQ0xBU1MpLmVhY2goKGZ1bmN0aW9uKCl7VHZ0LnNlbGVjdCh0aGlzKS5zdHlsZSgidmlzaWJpbGl0eSIsImluaGVyaXQiKX0pKX0sZS5wcm90b3R5cGUuX3Nob3dBbGxUaWNrTGFiZWxzPWZ1bmN0aW9uKCl7dGhpcy5fdGlja0xhYmVsQ29udGFpbmVyLnNlbGVjdEFsbCgiLiIrZS5USUNLX0xBQkVMX0NMQVNTKS5lYWNoKChmdW5jdGlvbigpe1R2dC5zZWxlY3QodGhpcykuc3R5bGUoInZpc2liaWxpdHkiLCJpbmhlcml0Iil9KSl9LGUucHJvdG90eXBlLl9oaWRlT3ZlcmZsb3dpbmdUaWNrTGFiZWxzPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5lbGVtZW50KCkubm9kZSgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG49dGhpcy5fdGlja0xhYmVsQ29udGFpbmVyLnNlbGVjdEFsbCgiLiIrZS5USUNLX0xBQkVMX0NMQVNTKTtuLmVtcHR5KCl8fG4uZWFjaCgoZnVuY3Rpb24oZSxuKXtMdnQuRE9NLmNsaWVudFJlY3RJbnNpZGUodGhpcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx0KXx8VHZ0LnNlbGVjdCh0aGlzKS5zdHlsZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpfSkpfSxlLnByb3RvdHlwZS5faGlkZVRpY2tNYXJrc1dpdGhvdXRMYWJlbD1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX3RpY2tNYXJrQ29udGFpbmVyLnNlbGVjdEFsbCgiLiIrZS5USUNLX01BUktfQ0xBU1MpLG49dGhpcy5fdGlja0xhYmVsQ29udGFpbmVyLnNlbGVjdEFsbCgiLiIrZS5USUNLX0xBQkVMX0NMQVNTKS5maWx0ZXIoKGZ1bmN0aW9uKHQsZSl7dmFyIG49VHZ0LnNlbGVjdCh0aGlzKS5zdHlsZSgidmlzaWJpbGl0eSIpO3JldHVybiJpbmhlcml0Ij09PW58fCJ2aXNpYmxlIj09PW59KSkuZGF0YSgpO3QuZWFjaCgoZnVuY3Rpb24odCxlKXstMT09PW4uaW5kZXhPZih0KSYmVHZ0LnNlbGVjdCh0aGlzKS5zdHlsZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpfSkpfSxlLnByb3RvdHlwZS5pbnZhbGlkYXRlQ2FjaGU9ZnVuY3Rpb24oKXt0LnByb3RvdHlwZS5pbnZhbGlkYXRlQ2FjaGUuY2FsbCh0aGlzKSx0aGlzLl9hbm5vdGF0aW9uTWVhc3VyZXIucmVzZXQoKX0sZS5FTkRfVElDS19NQVJLX0NMQVNTPSJlbmQtdGljay1tYXJrIixlLlRJQ0tfTUFSS19DTEFTUz0idGljay1tYXJrIixlLlRJQ0tfTEFCRUxfQ0xBU1M9InRpY2stbGFiZWwiLGUuQU5OT1RBVElPTl9MSU5FX0NMQVNTPSJhbm5vdGF0aW9uLWxpbmUiLGUuQU5OT1RBVElPTl9SRUNUX0NMQVNTPSJhbm5vdGF0aW9uLXJlY3QiLGUuQU5OT1RBVElPTl9DSVJDTEVfQ0xBU1M9ImFubm90YXRpb24tY2lyY2xlIixlLkFOTk9UQVRJT05fTEFCRUxfQ0xBU1M9ImFubm90YXRpb24tbGFiZWwiLGUuX0FOTk9UQVRJT05fTEFCRUxfUEFERElORz00LGV9KShBdnQuQ29tcG9uZW50KTtkdnQuQXhpcz1QdnQsCi8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShrZ3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBOdnQ9Qk8sSXZ0PXdwdCxSdnQ9TGd0LE92dD1PX3QsenZ0PURfdCxEdnQ9ZHZ0LEJ2dD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4pe3ZvaWQgMD09PW4mJihuPSJib3R0b20iKTt2YXIgaT10LmNhbGwodGhpcyxlLG4pfHx0aGlzO3JldHVybiBpLl90aWNrTGFiZWxBbmdsZT0wLGkuX3RpY2tMYWJlbFNoZWFyQW5nbGU9MCxpLmFkZENsYXNzKCJjYXRlZ29yeS1heGlzIiksaX1yZXR1cm4gTnZ0Ll9fZXh0ZW5kcyhlLHQpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiX3dyYXBwZXIiLHtnZXQ6ZnVuY3Rpb24oKXt2YXIgdD1uZXcgUnZ0LldyYXBwZXI7cmV0dXJuIG51bGwhPXRoaXMuX3RpY2tMYWJlbE1heExpbmVzJiZ0Lm1heExpbmVzKHRoaXMuX3RpY2tMYWJlbE1heExpbmVzKSx0fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiX3dyaXRlciIse2dldDpmdW5jdGlvbigpe3JldHVybiBuZXcgUnZ0LldyaXRlcih0aGlzLl9tZWFzdXJlcix0aGlzLl90eXBlc2V0dGVyQ29udGV4dCx0aGlzLl93cmFwcGVyKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS5fc2V0dXA9ZnVuY3Rpb24oKXt0LnByb3RvdHlwZS5fc2V0dXAuY2FsbCh0aGlzKSx0aGlzLl90eXBlc2V0dGVyQ29udGV4dD1uZXcgUnZ0LlN2Z0NvbnRleHQodGhpcy5fdGlja0xhYmVsQ29udGFpbmVyLm5vZGUoKSksdGhpcy5fbWVhc3VyZXI9bmV3IFJ2dC5DYWNoZU1lYXN1cmVyKHRoaXMuX3R5cGVzZXR0ZXJDb250ZXh0KX0sZS5wcm90b3R5cGUuX3Jlc2NhbGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZWRyYXcoKX0sZS5wcm90b3R5cGUucmVxdWVzdGVkU3BhY2U9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLmlzSG9yaXpvbnRhbCgpPzA6dGhpcy5fdGlja1NwYWNlUmVxdWlyZWQoKSt0aGlzLm1hcmdpbigpLGk9dGhpcy5pc0hvcml6b250YWwoKT90aGlzLl90aWNrU3BhY2VSZXF1aXJlZCgpK3RoaXMubWFyZ2luKCk6MDtpZigwPT09dGhpcy5fc2NhbGUuZG9tYWluKCkubGVuZ3RoKXJldHVybnttaW5XaWR0aDowLG1pbkhlaWdodDowfTtpZih0aGlzLmFubm90YXRpb25zRW5hYmxlZCgpKXt2YXIgcj10aGlzLl9hbm5vdGF0aW9uVGllckhlaWdodCgpKnRoaXMuYW5ub3RhdGlvblRpZXJDb3VudCgpO3RoaXMuaXNIb3Jpem9udGFsKCk/aSs9cjpuKz1yfXZhciBvPXRoaXMuX21lYXN1cmVUaWNrTGFiZWxzKHQsZSk7cmV0dXJue21pbldpZHRoOm8udXNlZFdpZHRoK24sbWluSGVpZ2h0Om8udXNlZEhlaWdodCtpfX0sZS5wcm90b3R5cGUuX2NvcmVTaXplPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5pc0hvcml6b250YWwoKT90aGlzLmhlaWdodCgpOnRoaXMud2lkdGgoKSxlPXRoaXMuaXNIb3Jpem9udGFsKCk/dGhpcy5yZXF1ZXN0ZWRTcGFjZSh0aGlzLndpZHRoKCksdGhpcy5oZWlnaHQoKSkubWluSGVpZ2h0OnRoaXMucmVxdWVzdGVkU3BhY2UodGhpcy53aWR0aCgpLHRoaXMuaGVpZ2h0KCkpLm1pbldpZHRoLG49dGhpcy5tYXJnaW4oKSt0aGlzLl9hbm5vdGF0aW9uVGllckhlaWdodCgpO3JldHVybiBNYXRoLm1pbihlLW4sdCl9LGUucHJvdG90eXBlLl9nZXRUaWNrVmFsdWVzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0RG93bnNhbXBsZUluZm8oKS5kb21haW59LGUucHJvdG90eXBlLl9zaXplRnJvbU9mZmVyPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIE92dC5Db21wb25lbnQucHJvdG90eXBlLl9zaXplRnJvbU9mZmVyLmNhbGwodGhpcyx0LGUpfSxlLnByb3RvdHlwZS5nZXREb3duc2FtcGxlSW5mbz1mdW5jdGlvbih0LG4pe3ZvaWQgMD09PXQmJih0PXRoaXMuX3NjYWxlKSx2b2lkIDA9PT1uJiYobj10LmludmVydFJhbmdlKCkpO3ZhciBpPTA9PT10aGlzLl90aWNrTGFiZWxBbmdsZT8xOjEvTWF0aC5jb3ModGhpcy5fdGlja0xhYmVsU2hlYXJBbmdsZS8xODAqTWF0aC5QSSkscj1NYXRoLmNlaWwoZS5fTUlOSU1VTV9XSURUSF9QRVJfTEFCRUxfUFgqaS90LnN0ZXBXaWR0aCgpKTtyZXR1cm57ZG9tYWluOm4uZmlsdGVyKChmdW5jdGlvbih0LGUpe3JldHVybiBlJXI9PTB9KSksc3RlcFdpZHRoOnIqdC5zdGVwV2lkdGgoKX19LGUucHJvdG90eXBlLnRpY2tMYWJlbEFuZ2xlPWZ1bmN0aW9uKHQpe2lmKG51bGw9PXQpcmV0dXJuIHRoaXMuX3RpY2tMYWJlbEFuZ2xlO2lmKDAhPT10JiY5MCE9PXQmJi05MCE9PXQpdGhyb3cgbmV3IEVycm9yKCJBbmdsZSAiK3QrIiBub3Qgc3VwcG9ydGVkOyBvbmx5IDAsIDkwLCBhbmQgLTkwIGFyZSB2YWxpZCB2YWx1ZXMiKTtyZXR1cm4gdGhpcy5fdGlja0xhYmVsQW5nbGU9dCx0aGlzLnJlZHJhdygpLHRoaXN9LGUucHJvdG90eXBlLnRpY2tMYWJlbFNoZWFyQW5nbGU9ZnVuY3Rpb24odCl7aWYobnVsbD09dClyZXR1cm4gdGhpcy5fdGlja0xhYmVsU2hlYXJBbmdsZTtpZih0PC04MHx8dD44MCl0aHJvdyBuZXcgRXJyb3IoIkFuZ2xlICIrdCsiIG5vdCBzdXBwb3J0ZWQ7IE11c3QgYmUgYmV0d2VlbiBbLTgwLCA4MF0iKTtyZXR1cm4gdGhpcy5fdGlja0xhYmVsU2hlYXJBbmdsZT10LHRoaXMucmVkcmF3KCksdGhpc30sZS5wcm90b3R5cGUudGlja0xhYmVsTWF4V2lkdGg9ZnVuY3Rpb24odCl7cmV0dXJuIDA9PT1hcmd1bWVudHMubGVuZ3RoP3RoaXMuX3RpY2tMYWJlbE1heFdpZHRoOih0aGlzLl90aWNrTGFiZWxNYXhXaWR0aD10LHRoaXMucmVkcmF3KCksdGhpcyl9LGUucHJvdG90eXBlLnRpY2tMYWJlbE1heExpbmVzPWZ1bmN0aW9uKHQpe3JldHVybiAwPT09YXJndW1lbnRzLmxlbmd0aD90aGlzLl90aWNrTGFiZWxNYXhMaW5lczoodGhpcy5fdGlja0xhYmVsTWF4TGluZXM9dCx0aGlzLnJlZHJhdygpLHRoaXMpfSxlLnByb3RvdHlwZS5fdGlja1NwYWNlUmVxdWlyZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbWF4TGFiZWxUaWNrTGVuZ3RoKCkrdGhpcy50aWNrTGFiZWxQYWRkaW5nKCl9LGUucHJvdG90eXBlLl9kcmF3VGlja3M9ZnVuY3Rpb24odCxlKXt2YXIgbixpLHI9dGhpcztzd2l0Y2godGhpcy50aWNrTGFiZWxBbmdsZSgpKXtjYXNlIDA6bj17bGVmdDoicmlnaHQiLHJpZ2h0OiJsZWZ0Iix0b3A6ImNlbnRlciIsYm90dG9tOiJjZW50ZXIifSxpPXtsZWZ0OiJjZW50ZXIiLHJpZ2h0OiJjZW50ZXIiLHRvcDoiYm90dG9tIixib3R0b206InRvcCJ9O2JyZWFrO2Nhc2UgOTA6bj17bGVmdDoiY2VudGVyIixyaWdodDoiY2VudGVyIix0b3A6InJpZ2h0Iixib3R0b206ImxlZnQifSxpPXtsZWZ0OiJ0b3AiLHJpZ2h0OiJib3R0b20iLHRvcDoiY2VudGVyIixib3R0b206ImNlbnRlciJ9O2JyZWFrO2Nhc2UtOTA6bj17bGVmdDoiY2VudGVyIixyaWdodDoiY2VudGVyIix0b3A6ImxlZnQiLGJvdHRvbToicmlnaHQifSxpPXtsZWZ0OiJib3R0b20iLHJpZ2h0OiJ0b3AiLHRvcDoiY2VudGVyIixib3R0b206ImNlbnRlciJ9fWUuZWFjaCgoZnVuY3Rpb24oZSl7dmFyIG89SXZ0LnNlbGVjdCh0aGlzKSxhPXIuaXNIb3Jpem9udGFsKCk/dDpyLndpZHRoKCktci5fdGlja1NwYWNlUmVxdWlyZWQoKSxzPXIuaXNIb3Jpem9udGFsKCk/ci5oZWlnaHQoKS1yLl90aWNrU3BhY2VSZXF1aXJlZCgpOnQsbD17eEFsaWduOm5bci5vcmllbnRhdGlvbigpXSx5QWxpZ246aVtyLm9yaWVudGF0aW9uKCldLHRleHRSb3RhdGlvbjpyLnRpY2tMYWJlbEFuZ2xlKCksdGV4dFNoZWFyOnIudGlja0xhYmVsU2hlYXJBbmdsZSgpfTtpZihudWxsIT1yLl90aWNrTGFiZWxNYXhXaWR0aCl7aWYoImxlZnQiPT09ci5vcmllbnRhdGlvbigpJiZhPnIuX3RpY2tMYWJlbE1heFdpZHRoKXt2YXIgYz1hLXIuX3RpY2tMYWJlbE1heFdpZHRoLHU9by5hdHRyKCJ0cmFuc2Zvcm0iKSsiIHRyYW5zbGF0ZSgiK2MrIiwgMCkiO28uYXR0cigidHJhbnNmb3JtIix1KX1hPU1hdGgubWluKGEsci5fdGlja0xhYmVsTWF4V2lkdGgpfXIuX3dyaXRlci53cml0ZShyLmZvcm1hdHRlcigpKGUpLGEscyxsLG8ubm9kZSgpKX0pKX0sZS5wcm90b3R5cGUuX21lYXN1cmVUaWNrTGFiZWxzPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcyxpPXRoaXMuX3NjYWxlLmNsb25lV2l0aG91dFByb3ZpZGVycygpLnJhbmdlKFswLHRoaXMuaXNIb3Jpem9udGFsKCk/dDplXSkscj10aGlzLmdldERvd25zYW1wbGVJbmZvKGkpLG89ci5kb21haW4sYT1yLnN0ZXBXaWR0aCxzPXQtdGhpcy5fdGlja1NwYWNlUmVxdWlyZWQoKTt0aGlzLmlzSG9yaXpvbnRhbCgpJiYocz1hLDAhPT10aGlzLl90aWNrTGFiZWxBbmdsZSYmKHM9ZS10aGlzLl90aWNrU3BhY2VSZXF1aXJlZCgpKSxzPU1hdGgubWF4KHMsMCkpO3ZhciBsPWE7dGhpcy5pc0hvcml6b250YWwoKSYmKGw9ZS10aGlzLl90aWNrU3BhY2VSZXF1aXJlZCgpLDAhPT10aGlzLl90aWNrTGFiZWxBbmdsZSYmKGw9dC10aGlzLl90aWNrU3BhY2VSZXF1aXJlZCgpKSxsPU1hdGgubWF4KGwsMCkpLG51bGwhPXRoaXMuX3RpY2tMYWJlbE1heFdpZHRoJiYocz1NYXRoLm1pbihzLHRoaXMuX3RpY2tMYWJlbE1heFdpZHRoKSk7dmFyIGMsdT1vLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIG4uX3dyYXBwZXIud3JhcChuLmZvcm1hdHRlcigpKHQpLG4uX21lYXN1cmVyLHMsbCl9KSksaD10aGlzLmlzSG9yaXpvbnRhbCgpJiYwPT09dGhpcy5fdGlja0xhYmVsQW5nbGU/SXZ0LnN1bTp6dnQuTWF0aC5tYXgsZD10aGlzLmlzSG9yaXpvbnRhbCgpJiYwPT09dGhpcy5fdGlja0xhYmVsQW5nbGU/enZ0Lk1hdGgubWF4Okl2dC5zdW0scD1oKHUsKGZ1bmN0aW9uKHQpe3JldHVybiBuLl9tZWFzdXJlci5tZWFzdXJlKHQud3JhcHBlZFRleHQpLndpZHRofSksMCksZj1kKHUsKGZ1bmN0aW9uKHQpe3JldHVybiBuLl9tZWFzdXJlci5tZWFzdXJlKHQud3JhcHBlZFRleHQpLmhlaWdodH0pLDApO3JldHVybiAwIT09dGhpcy5fdGlja0xhYmVsQW5nbGUmJihwPShjPVtmLHBdKVswXSxmPWNbMV0pLHt1c2VkV2lkdGg6cCx1c2VkSGVpZ2h0OmZ9fSxlLnByb3RvdHlwZS5yZW5kZXJJbW1lZGlhdGVseT1mdW5jdGlvbigpe3ZhciBlPXRoaXM7dC5wcm90b3R5cGUucmVuZGVySW1tZWRpYXRlbHkuY2FsbCh0aGlzKTt2YXIgbj10aGlzLl9zY2FsZSxpPXRoaXMuZ2V0RG93bnNhbXBsZUluZm8obikscj1pLmRvbWFpbixvPWkuc3RlcFdpZHRoLGE9bzt0aGlzLmlzSG9yaXpvbnRhbCgpJiZudWxsIT10aGlzLl90aWNrTGFiZWxNYXhXaWR0aCYmKGE9TWF0aC5taW4oYSx0aGlzLl90aWNrTGFiZWxNYXhXaWR0aCkpO3ZhciBzPXRoaXMuX3RpY2tMYWJlbENvbnRhaW5lci5zZWxlY3RBbGwoIi4iK0R2dC5BeGlzLlRJQ0tfTEFCRUxfQ0xBU1MpLmRhdGEociksbD1zLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZChEdnQuQXhpcy5USUNLX0xBQkVMX0NMQVNTLCEwKS5tZXJnZShzKTtzLmV4aXQoKS5yZW1vdmUoKSxsLmF0dHIoInRyYW5zZm9ybSIsKGZ1bmN0aW9uKHQsaSl7dmFyIHI9bi5zY2FsZSh0KS1hLzI7cmV0dXJuInRyYW5zbGF0ZSgiKyhlLmlzSG9yaXpvbnRhbCgpP3I6MCkrIiwiKyhlLmlzSG9yaXpvbnRhbCgpPzA6cikrIikifSkpLGwudGV4dCgiIiksdGhpcy5fZHJhd1RpY2tzKG8sbCk7dmFyIGM9InJpZ2h0Ij09PXRoaXMub3JpZW50YXRpb24oKT90aGlzLl90aWNrU3BhY2VSZXF1aXJlZCgpOjAsdT0iYm90dG9tIj09PXRoaXMub3JpZW50YXRpb24oKT90aGlzLl90aWNrU3BhY2VSZXF1aXJlZCgpOjA7cmV0dXJuIHRoaXMuX3RpY2tMYWJlbENvbnRhaW5lci5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitjKyIsIit1KyIpIiksdGhpcy5fc2hvd0FsbFRpY2tNYXJrcygpLHRoaXMuX3Nob3dBbGxUaWNrTGFiZWxzKCksdGhpcy5faGlkZVRpY2tNYXJrc1dpdGhvdXRMYWJlbCgpLHRoaXN9LGUucHJvdG90eXBlLmNvbXB1dGVMYXlvdXQ9ZnVuY3Rpb24oZSxuLGkpe3JldHVybiB0LnByb3RvdHlwZS5jb21wdXRlTGF5b3V0LmNhbGwodGhpcyxlLG4saSksdGhpcy5pc0hvcml6b250YWwoKXx8dGhpcy5fc2NhbGUucmFuZ2UoWzAsdGhpcy5oZWlnaHQoKV0pLHRoaXN9LGUucHJvdG90eXBlLmludmFsaWRhdGVDYWNoZT1mdW5jdGlvbigpe3QucHJvdG90eXBlLmludmFsaWRhdGVDYWNoZS5jYWxsKHRoaXMpLHRoaXMuX21lYXN1cmVyLnJlc2V0KCl9LGUuX01JTklNVU1fV0lEVEhfUEVSX0xBQkVMX1BYPTE1LGV9KShEdnQuQXhpcyk7a2d0LkNhdGVnb3J5PUJ2dDt2YXIgSHZ0PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqL09iamVjdC5kZWZpbmVQcm9wZXJ0eShIdnQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBGdnQ9Qk8sVnZ0PXdwdCxVdnQ9TGd0LGp2dD1wdnQsR3Z0PURfdCxXdnQ9ZHZ0LHF2dD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4pe3ZhciBpPXQuY2FsbCh0aGlzLGUsbil8fHRoaXM7cmV0dXJuIGkuX3RpY2tMYWJlbFBvc2l0aW9uaW5nPSJjZW50ZXIiLGkuX3VzZXNUZXh0V2lkdGhBcHByb3hpbWF0aW9uPSExLGkuZm9ybWF0dGVyKGp2dC5nZW5lcmFsKCkpLGl9cmV0dXJuIEZ2dC5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5fc2V0dXA9ZnVuY3Rpb24oKXt0LnByb3RvdHlwZS5fc2V0dXAuY2FsbCh0aGlzKTt2YXIgZT1uZXcgVXZ0LlN2Z0NvbnRleHQodGhpcy5fdGlja0xhYmVsQ29udGFpbmVyLm5vZGUoKSxXdnQuQXhpcy5USUNLX0xBQkVMX0NMQVNTKTt0aGlzLl9tZWFzdXJlcj1uZXcgVXZ0LkNhY2hlTWVhc3VyZXIoZSksdGhpcy5fd3JhcHBlcj0obmV3IFV2dC5XcmFwcGVyKS5tYXhMaW5lcygxKX0sZS5wcm90b3R5cGUuX2NvbXB1dGVXaWR0aD1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX3VzZXNUZXh0V2lkdGhBcHByb3hpbWF0aW9uP3RoaXMuX2NvbXB1dGVBcHByb3hpbWF0ZVRleHRXaWR0aCgpOnRoaXMuX2NvbXB1dGVFeGFjdFRleHRXaWR0aCgpO3JldHVybiJjZW50ZXIiPT09dGhpcy5fdGlja0xhYmVsUG9zaXRpb25pbmc/dGhpcy5fbWF4TGFiZWxUaWNrTGVuZ3RoKCkrdGhpcy50aWNrTGFiZWxQYWRkaW5nKCkrdDpNYXRoLm1heCh0aGlzLl9tYXhMYWJlbFRpY2tMZW5ndGgoKSx0aGlzLnRpY2tMYWJlbFBhZGRpbmcoKSt0KX0sZS5wcm90b3R5cGUuX2NvbXB1dGVFeGFjdFRleHRXaWR0aD1mdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLl9nZXRUaWNrVmFsdWVzKCkubWFwKChmdW5jdGlvbihlKXt2YXIgbj10LmZvcm1hdHRlcigpKGUpO3JldHVybiB0Ll9tZWFzdXJlci5tZWFzdXJlKG4pLndpZHRofSkpO3JldHVybiBHdnQuTWF0aC5tYXgoZSwwKX0sZS5wcm90b3R5cGUuX2NvbXB1dGVBcHByb3hpbWF0ZVRleHRXaWR0aD1mdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLl9nZXRUaWNrVmFsdWVzKCksbj10aGlzLl9tZWFzdXJlci5tZWFzdXJlKCJNIikud2lkdGgsaT1lLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIHQuZm9ybWF0dGVyKCkoZSkubGVuZ3RoKm59KSk7cmV0dXJuIEd2dC5NYXRoLm1heChpLDApfSxlLnByb3RvdHlwZS5fY29tcHV0ZUhlaWdodD1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX21lYXN1cmVyLm1lYXN1cmUoKS5oZWlnaHQ7cmV0dXJuImNlbnRlciI9PT10aGlzLl90aWNrTGFiZWxQb3NpdGlvbmluZz90aGlzLl9tYXhMYWJlbFRpY2tMZW5ndGgoKSt0aGlzLnRpY2tMYWJlbFBhZGRpbmcoKSt0Ok1hdGgubWF4KHRoaXMuX21heExhYmVsVGlja0xlbmd0aCgpLHRoaXMudGlja0xhYmVsUGFkZGluZygpK3QpfSxlLnByb3RvdHlwZS5fZ2V0VGlja1ZhbHVlcz1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX3NjYWxlLGU9dC5kb21haW4oKSxuPWVbMF08PWVbMV0/ZVswXTplWzFdLGk9ZVswXT49ZVsxXT9lWzBdOmVbMV07cmV0dXJuIHQudGlja3MoKS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiB0Pj1uJiZ0PD1pfSkpfSxlLnByb3RvdHlwZS5fcmVzY2FsZT1mdW5jdGlvbigpe2lmKHRoaXMuX2lzU2V0dXApe2lmKCF0aGlzLmlzSG9yaXpvbnRhbCgpKXt2YXIgdD10aGlzLl9jb21wdXRlV2lkdGgoKTtpZih0PnRoaXMud2lkdGgoKXx8dDx0aGlzLndpZHRoKCktdGhpcy5tYXJnaW4oKSlyZXR1cm4gdm9pZCB0aGlzLnJlZHJhdygpfXRoaXMucmVuZGVyKCl9fSxlLnByb3RvdHlwZS5yZW5kZXJJbW1lZGlhdGVseT1mdW5jdGlvbigpe3ZhciBlPXRoaXM7dC5wcm90b3R5cGUucmVuZGVySW1tZWRpYXRlbHkuY2FsbCh0aGlzKTt2YXIgbj17eDowLHk6MCxkeDoiMGVtIixkeToiMC4zZW0ifSxpPXRoaXMuX21heExhYmVsVGlja0xlbmd0aCgpLHI9dGhpcy50aWNrTGFiZWxQYWRkaW5nKCksbz0ibWlkZGxlIixhPTAscz0wLGw9MCxjPTA7aWYodGhpcy5pc0hvcml6b250YWwoKSlzd2l0Y2godGhpcy5fdGlja0xhYmVsUG9zaXRpb25pbmcpe2Nhc2UibGVmdCI6bz0iZW5kIixhPS1yLGM9cjticmVhaztjYXNlImNlbnRlciI6Yz1pK3I7YnJlYWs7Y2FzZSJyaWdodCI6bz0ic3RhcnQiLGE9cixjPXJ9ZWxzZSBzd2l0Y2godGhpcy5fdGlja0xhYmVsUG9zaXRpb25pbmcpe2Nhc2UidG9wIjpuLmR5PSItMC4zZW0iLGw9cixzPS1yO2JyZWFrO2Nhc2UiY2VudGVyIjpsPWkrcjticmVhaztjYXNlImJvdHRvbSI6bi5keT0iMWVtIixsPXIscz1yfXZhciB1PXRoaXMuX2dlbmVyYXRlVGlja01hcmtBdHRySGFzaCgpO3N3aXRjaCh0aGlzLm9yaWVudGF0aW9uKCkpe2Nhc2UiYm90dG9tIjpuLng9dS54MSxuLmR5PSIwLjk1ZW0iLHM9dS55MStjO2JyZWFrO2Nhc2UidG9wIjpuLng9dS54MSxuLmR5PSItLjI1ZW0iLHM9dS55MS1jO2JyZWFrO2Nhc2UibGVmdCI6bz0iZW5kIixhPXUueDEtbCxuLnk9dS55MTticmVhaztjYXNlInJpZ2h0IjpvPSJzdGFydCIsYT11LngxK2wsbi55PXUueTF9dmFyIGg9dGhpcy5fZ2V0VGlja1ZhbHVlcygpLGQ9dGhpcy5fdGlja0xhYmVsQ29udGFpbmVyLnNlbGVjdEFsbCgiLiIrV3Z0LkF4aXMuVElDS19MQUJFTF9DTEFTUykuZGF0YShoKTtyZXR1cm4gZC5leGl0KCkucmVtb3ZlKCksZC5lbnRlcigpLmFwcGVuZCgidGV4dCIpLmNsYXNzZWQoV3Z0LkF4aXMuVElDS19MQUJFTF9DTEFTUywhMCkubWVyZ2UoZCkuc3R5bGUoInRleHQtYW5jaG9yIixvKS5zdHlsZSgidmlzaWJpbGl0eSIsImluaGVyaXQiKS5hdHRycyhuKS50ZXh0KChmdW5jdGlvbih0KXtyZXR1cm4gZS5mb3JtYXR0ZXIoKSh0KX0pKSx0aGlzLl90aWNrTGFiZWxDb250YWluZXIuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrYSsiLCAiK3MrIikiKSx0aGlzLl9zaG93QWxsVGlja01hcmtzKCksdGhpcy5zaG93RW5kVGlja0xhYmVscygpfHx0aGlzLl9oaWRlRW5kVGlja0xhYmVscygpLHRoaXMuX2hpZGVPdmVyZmxvd2luZ1RpY2tMYWJlbHMoKSx0aGlzLl9oaWRlT3ZlcmxhcHBpbmdUaWNrTGFiZWxzKCksImNlbnRlciIhPT10aGlzLl90aWNrTGFiZWxQb3NpdGlvbmluZyYmdGhpcy5faGlkZVRpY2tNYXJrc1dpdGhvdXRMYWJlbCgpLHRoaXN9LGUucHJvdG90eXBlLnRpY2tMYWJlbFBvc2l0aW9uPWZ1bmN0aW9uKHQpe2lmKG51bGw9PXQpcmV0dXJuIHRoaXMuX3RpY2tMYWJlbFBvc2l0aW9uaW5nO3ZhciBlPXQudG9Mb3dlckNhc2UoKTtpZih0aGlzLmlzSG9yaXpvbnRhbCgpKXtpZigibGVmdCIhPT1lJiYiY2VudGVyIiE9PWUmJiJyaWdodCIhPT1lKXRocm93IG5ldyBFcnJvcihlKyIgaXMgbm90IGEgdmFsaWQgdGljayBsYWJlbCBwb3NpdGlvbiBmb3IgYSBob3Jpem9udGFsIE51bWVyaWNBeGlzIil9ZWxzZSBpZigidG9wIiE9PWUmJiJjZW50ZXIiIT09ZSYmImJvdHRvbSIhPT1lKXRocm93IG5ldyBFcnJvcihlKyIgaXMgbm90IGEgdmFsaWQgdGljayBsYWJlbCBwb3NpdGlvbiBmb3IgYSB2ZXJ0aWNhbCBOdW1lcmljQXhpcyIpO3JldHVybiB0aGlzLl90aWNrTGFiZWxQb3NpdGlvbmluZz1lLHRoaXMucmVkcmF3KCksdGhpc30sZS5wcm90b3R5cGUudXNlc1RleHRXaWR0aEFwcHJveGltYXRpb249ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fdXNlc1RleHRXaWR0aEFwcHJveGltYXRpb246KHRoaXMuX3VzZXNUZXh0V2lkdGhBcHByb3hpbWF0aW9uPXQsdGhpcyl9LGUucHJvdG90eXBlLl9oaWRlRW5kVGlja0xhYmVscz1mdW5jdGlvbigpe3ZhciB0PXRoaXMuZWxlbWVudCgpLm5vZGUoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxlPXRoaXMuX3RpY2tMYWJlbENvbnRhaW5lci5zZWxlY3RBbGwoIi4iK1d2dC5BeGlzLlRJQ0tfTEFCRUxfQ0xBU1MpO2lmKDAhPT1lLnNpemUoKSl7dmFyIG49ZS5ub2RlcygpWzBdO0d2dC5ET00uY2xpZW50UmVjdEluc2lkZShuLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHQpfHxWdnQuc2VsZWN0KG4pLnN0eWxlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7dmFyIGk9ZS5ub2RlcygpW2Uuc2l6ZSgpLTFdO0d2dC5ET00uY2xpZW50UmVjdEluc2lkZShpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHQpfHxWdnQuc2VsZWN0KGkpLnN0eWxlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIil9fSxlLnByb3RvdHlwZS5faGlkZU92ZXJsYXBwaW5nVGlja0xhYmVscz1mdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLl90aWNrTGFiZWxDb250YWluZXIuc2VsZWN0QWxsKCIuIitXdnQuQXhpcy5USUNLX0xBQkVMX0NMQVNTKS5maWx0ZXIoKGZ1bmN0aW9uKHQsZSl7dmFyIG49VnZ0LnNlbGVjdCh0aGlzKS5zdHlsZSgidmlzaWJpbGl0eSIpO3JldHVybiJpbmhlcml0Ij09PW58fCJ2aXNpYmxlIj09PW59KSksZT10Lm5vZGVzKCkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKX0pKSxuPTE7IXRoaXMuX2hhc092ZXJsYXBXaXRoSW50ZXJ2YWwobixlKSYmbjxlLmxlbmd0aDspbis9MTt0LmVhY2goKGZ1bmN0aW9uKHQsZSl7dmFyIGk9VnZ0LnNlbGVjdCh0aGlzKTtlJW4hPTAmJmkuc3R5bGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKX0pKX0sZS5wcm90b3R5cGUuX2hhc092ZXJsYXBXaXRoSW50ZXJ2YWw9ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49ImNlbnRlciI9PT10aGlzLl90aWNrTGFiZWxQb3NpdGlvbmluZz90aGlzLnRpY2tMYWJlbFBhZGRpbmcoKTozKnRoaXMudGlja0xhYmVsUGFkZGluZygpLGk9ZS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBHdnQuRE9NLmV4cGFuZFJlY3QodCxuKX0pKSxyPTA7cjxpLmxlbmd0aC10O3IrPXQpe2lmKEd2dC5ET00uY2xpZW50UmVjdHNPdmVybGFwKGlbcl0saVtyK3RdKSlyZXR1cm4hMX1yZXR1cm4hMH0sZS5wcm90b3R5cGUuaW52YWxpZGF0ZUNhY2hlPWZ1bmN0aW9uKCl7dC5wcm90b3R5cGUuaW52YWxpZGF0ZUNhY2hlLmNhbGwodGhpcyksdGhpcy5fbWVhc3VyZXIucmVzZXQoKX0sZX0pKFd2dC5BeGlzKTtIdnQuTnVtZXJpYz1xdnQ7dmFyIFl2dD17fSxYdnQ9e30sJHZ0PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoJHZ0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgS3Z0PURfdDskdnQuaW50ZXJ2YWxUaWNrR2VuZXJhdG9yPWZ1bmN0aW9uIFp2dCh0KXtpZih0PD0wKXRocm93IG5ldyBFcnJvcigiaW50ZXJ2YWwgbXVzdCBiZSBwb3NpdGl2ZSBudW1iZXIiKTtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIG49ZS5kb21haW4oKSxpPU1hdGgubWluKG5bMF0sblsxXSkscj1NYXRoLm1heChuWzBdLG5bMV0pLG89TWF0aC5jZWlsKGkvdCkqdCxhPU1hdGguZmxvb3IoKHItbykvdCkrMSxzPWkldD09MD9bXTpbaV0sbD1LdnQuTWF0aC5yYW5nZSgwLGEpLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIG8rZSp0fSkpLGM9ciV0PT0wP1tdOltyXTtyZXR1cm4gcy5jb25jYXQobCkuY29uY2F0KGMpfX0sJHZ0LmludGVnZXJUaWNrR2VuZXJhdG9yPWZ1bmN0aW9uIEp2dCgpe3JldHVybiBmdW5jdGlvbih0KXt2YXIgZT10LmRlZmF1bHRUaWNrcygpO3JldHVybiBlLmZpbHRlcigoZnVuY3Rpb24odCxuKXtyZXR1cm4gdCUxPT0wfHwwPT09bnx8bj09PWUubGVuZ3RoLTF9KSl9fTt2YXIgUXZ0PXt9LHRidD17fTtmdW5jdGlvbiBlYnQodCxlLG4pe3JldHVybiBuLShuLXQpKmV9ZnVuY3Rpb24gbmJ0KHQsZSxuKXtyZXR1cm4odCplLW4pLyhlLTEpfWZ1bmN0aW9uIGlidCh0LGUsbixpKXt2YXIgcj1lPjEsbz1yP2k6bjtpZihudWxsPT1vKXJldHVybiBlO3ZhciBhPXQuZ2V0VHJhbnNmb3JtYXRpb25Eb21haW4oKSxzPU1hdGguYWJzKGFbMV0tYVswXSk7cmV0dXJuKHI/TWF0aC5taW46TWF0aC5tYXgpKGUsby9zKX1mdW5jdGlvbiByYnQodCxlLG4saSxyKXtpZihlPD0xKXJldHVybntjZW50ZXJQb2ludDpuLHpvb21BbW91bnQ6ZX07aWYobnVsbD09aSYmbnVsbD09cilyZXR1cm57Y2VudGVyUG9pbnQ6bix6b29tQW1vdW50OmV9O3ZhciBvPW9idCh0KSxhPShmdW5jdGlvbiBzKHQpe3ZhciBlPXQuZ2V0VHJhbnNmb3JtYXRpb25Eb21haW4oKTtyZXR1cm4gZVsxXTxlWzBdfSkodCk7aT1udWxsPT1pP2E/MS8wOi0xLzA6aSxyPW51bGw9PXI/YT8tMS8wOjEvMDpyO3ZhciBsPXQuZ2V0VHJhbnNmb3JtYXRpb25Eb21haW4oKSxjPWxbMF0sdT1sWzFdLGg9dC5zY2FsZVRyYW5zZm9ybWF0aW9uKHIpLGQ9dC5zY2FsZVRyYW5zZm9ybWF0aW9uKHUpLHA9ZWJ0KGQsZSxuKSxmPXQuc2NhbGVUcmFuc2Zvcm1hdGlvbihpKSxtPXQuc2NhbGVUcmFuc2Zvcm1hdGlvbihjKSxnPWVidChtLGUsbiksXz1NYXRoLmFicyhoLWYpO2lmKE1hdGguYWJzKHAtZyk+Xyl7dmFyIHk9KGgtZikvKGQtbSk7cmV0dXJuIDEhPT15P3tjZW50ZXJQb2ludDpuYnQoZCx5LGgpLHpvb21BbW91bnQ6eX06e2NlbnRlclBvaW50Om4sem9vbUFtb3VudDp5fX1yZXR1cm4gcD5oIT1vP3tjZW50ZXJQb2ludDpuYnQoZCxlLGgpLHpvb21BbW91bnQ6ZX06ZzxmIT1vP3tjZW50ZXJQb2ludDpuYnQobSxlLGYpLHpvb21BbW91bnQ6ZX06e2NlbnRlclBvaW50Om4sem9vbUFtb3VudDplfX1mdW5jdGlvbiBvYnQodCl7dmFyIGU9dC5yYW5nZSgpO3JldHVybiBlWzFdPGVbMF19Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTctcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YnQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHRidC56b29tT3V0PWVidCx0YnQuY29uc3RyYWluZWRab29tPWZ1bmN0aW9uIGFidCh0LGUsbixpLHIsbyxhKXtyZXR1cm4gcmJ0KHQsZT1pYnQodCxlLGksciksbixvLGEpfSx0YnQuY29uc3RyYWluWm9vbUV4dGVudHM9aWJ0LHRidC5jb25zdHJhaW5ab29tVmFsdWVzPXJidCx0YnQuY29uc3RyYWluZWRUcmFuc2xhdGlvbj1mdW5jdGlvbiBzYnQodCxlLG4saSl7dmFyIHIsbz10LmdldFRyYW5zZm9ybWF0aW9uRG9tYWluKCksYT1vWzBdLHM9b1sxXSxsPW9idCh0KTtpZihlPjAhPT1sKXtpZihudWxsIT0ocj1pKSl7dmFyIGM9dC5zY2FsZVRyYW5zZm9ybWF0aW9uKHMpLHU9dC5zY2FsZVRyYW5zZm9ybWF0aW9uKHIpO2U9KGw/TWF0aC5tYXg6TWF0aC5taW4pKGMrZSx1KS1jfX1lbHNlIGlmKG51bGwhPShyPW4pKXt2YXIgaD10LnNjYWxlVHJhbnNmb3JtYXRpb24oYSksZD10LnNjYWxlVHJhbnNmb3JtYXRpb24ocik7ZT0obD9NYXRoLm1pbjpNYXRoLm1heCkoaCtlLGQpLWh9cmV0dXJuIGV9O3ZhciBsYnQ9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovT2JqZWN0LmRlZmluZVByb3BlcnR5KGxidCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGNidD1EX3QsdWJ0PShmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLl9hdXRvRG9tYWluQXV0b21hdGljYWxseT0hMCx0aGlzLl9kb21haW5Nb2RpZmljYXRpb25JblByb2dyZXNzPSExLHRoaXMuX3VwZGF0ZUlkPTAsdGhpcy5fY2FsbGJhY2tzPW5ldyBjYnQuQ2FsbGJhY2tTZXQsdGhpcy5faW5jbHVkZWRWYWx1ZXNQcm92aWRlcnM9bmV3IGNidC5TZXR9cmV0dXJuIHQucHJvdG90eXBlLmV4dGVudE9mVmFsdWVzPWZ1bmN0aW9uKHQpe3JldHVybltdfSx0LnByb3RvdHlwZS5fZ2V0QWxsSW5jbHVkZWRWYWx1ZXM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt2b2lkIDA9PT10JiYodD0hMSk7dmFyIG49W107cmV0dXJuIHRoaXMuX2luY2x1ZGVkVmFsdWVzUHJvdmlkZXJzLmZvckVhY2goKGZ1bmN0aW9uKGkpe3ZhciByPWkoZSx0KTtuPW4uY29uY2F0KHIpfSkpLG59LHQucHJvdG90eXBlLl9nZXRFeHRlbnQ9ZnVuY3Rpb24oKXtyZXR1cm5bXX0sdC5wcm90b3R5cGUub25VcGRhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2NhbGxiYWNrcy5hZGQodCksdGhpc30sdC5wcm90b3R5cGUub2ZmVXBkYXRlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9jYWxsYmFja3MuZGVsZXRlKHQpLHRoaXN9LHQucHJvdG90eXBlLl9kaXNwYXRjaFVwZGF0ZT1mdW5jdGlvbigpe3RoaXMuX3VwZGF0ZUlkKyssdGhpcy5fY2FsbGJhY2tzLmNhbGxDYWxsYmFja3ModGhpcyl9LHQucHJvdG90eXBlLmF1dG9Eb21haW49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXV0b0RvbWFpbkF1dG9tYXRpY2FsbHk9ITAsdGhpcy5fc2V0RG9tYWluKHRoaXMuX2dldEV4dGVudCgpKSx0aGlzfSx0LnByb3RvdHlwZS5hdXRvRG9tYWluSWZBdXRvbWF0aWNNb2RlPWZ1bmN0aW9uKCl7dGhpcy5fYXV0b0RvbWFpbkF1dG9tYXRpY2FsbHkmJnRoaXMuYXV0b0RvbWFpbigpfSx0LnByb3RvdHlwZS5zY2FsZT1mdW5jdGlvbih0KXt0aHJvdyBuZXcgRXJyb3IoIlN1YmNsYXNzZXMgc2hvdWxkIG92ZXJyaWRlIHNjYWxlIil9LHQucHJvdG90eXBlLnRpY2tzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tYWluKCl9LHQucHJvdG90eXBlLmRvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9nZXREb21haW4oKToodGhpcy5fYXV0b0RvbWFpbkF1dG9tYXRpY2FsbHk9ITEsdGhpcy5fc2V0RG9tYWluKHQpLHRoaXMpfSx0LnByb3RvdHlwZS5fZ2V0RG9tYWluPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJTdWJjbGFzc2VzIHNob3VsZCBvdmVycmlkZSBfZ2V0RG9tYWluIil9LHQucHJvdG90eXBlLl9zZXREb21haW49ZnVuY3Rpb24odCl7dGhpcy5fZG9tYWluTW9kaWZpY2F0aW9uSW5Qcm9ncmVzc3x8KHRoaXMuX2RvbWFpbk1vZGlmaWNhdGlvbkluUHJvZ3Jlc3M9ITAsdGhpcy5fYmFja2luZ1NjYWxlRG9tYWluKHQpLHRoaXMuX2Rpc3BhdGNoVXBkYXRlKCksdGhpcy5fZG9tYWluTW9kaWZpY2F0aW9uSW5Qcm9ncmVzcz0hMSl9LHQucHJvdG90eXBlLl9iYWNraW5nU2NhbGVEb21haW49ZnVuY3Rpb24odCl7dGhyb3cgbmV3IEVycm9yKCJTdWJjbGFzc2VzIHNob3VsZCBvdmVycmlkZSBfYmFja2luZ0RvbWFpbiIpfSx0LnByb3RvdHlwZS5yYW5nZT1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9nZXRSYW5nZSgpOih0aGlzLl9zZXRSYW5nZSh0KSx0aGlzKX0sdC5wcm90b3R5cGUuX2dldFJhbmdlPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJTdWJjbGFzc2VzIHNob3VsZCBvdmVycmlkZSBfZ2V0UmFuZ2UiKX0sdC5wcm90b3R5cGUuX3NldFJhbmdlPWZ1bmN0aW9uKHQpe3Rocm93IG5ldyBFcnJvcigiU3ViY2xhc3NlcyBzaG91bGQgb3ZlcnJpZGUgX3NldFJhbmdlIil9LHQucHJvdG90eXBlLmFkZEluY2x1ZGVkVmFsdWVzUHJvdmlkZXI9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2luY2x1ZGVkVmFsdWVzUHJvdmlkZXJzLmFkZCh0KSx0aGlzLmF1dG9Eb21haW5JZkF1dG9tYXRpY01vZGUoKSx0aGlzfSx0LnByb3RvdHlwZS5yZW1vdmVJbmNsdWRlZFZhbHVlc1Byb3ZpZGVyPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9pbmNsdWRlZFZhbHVlc1Byb3ZpZGVycy5kZWxldGUodCksdGhpcy5hdXRvRG9tYWluSWZBdXRvbWF0aWNNb2RlKCksdGhpc30sdC5wcm90b3R5cGUudXBkYXRlSWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdXBkYXRlSWR9LHR9KSgpO2xidC5TY2FsZT11YnQsCi8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShRdnQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBoYnQ9Qk8sZGJ0PXdwdCxwYnQ9dGJ0LGZidD1EX3QsbWJ0PVswLDFdLGdidD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3ZhciBuPXQuY2FsbCh0aGlzKXx8dGhpcztuLl9yYW5nZT1bMCwxXSxuLl9kM1NjYWxlPWRidC5zY2FsZUJhbmQoKSxuLl9kM1NjYWxlLnJhbmdlKG1idCksbi5fZDNUcmFuc2Zvcm1hdGlvblNjYWxlPWRidC5zY2FsZUxpbmVhcigpLG4uX2QzVHJhbnNmb3JtYXRpb25TY2FsZS5kb21haW4obWJ0KTtyZXR1cm4gbi5faW5uZXJQYWRkaW5nPWUuX2NvbnZlcnRUb1Bsb3R0YWJsZUlubmVyUGFkZGluZyguMyksbi5fb3V0ZXJQYWRkaW5nPWUuX2NvbnZlcnRUb1Bsb3R0YWJsZU91dGVyUGFkZGluZyguNSwuMyksbn1yZXR1cm4gaGJ0Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLmNsb25lV2l0aG91dFByb3ZpZGVycz1mdW5jdGlvbigpe3ZhciB0PShuZXcgZSkuZG9tYWluKHRoaXMuZG9tYWluKCkpLnJhbmdlKHRoaXMucmFuZ2UoKSkuaW5uZXJQYWRkaW5nKHRoaXMuaW5uZXJQYWRkaW5nKCkpLm91dGVyUGFkZGluZyh0aGlzLm91dGVyUGFkZGluZygpKTtyZXR1cm4gdC5fZDNUcmFuc2Zvcm1hdGlvblNjYWxlLmRvbWFpbih0aGlzLl9kM1RyYW5zZm9ybWF0aW9uU2NhbGUuZG9tYWluKCkpLHR9LGUucHJvdG90eXBlLmV4dGVudE9mVmFsdWVzPWZ1bmN0aW9uKHQpe3JldHVybiBmYnQuQXJyYXkudW5pcSh0KX0sZS5wcm90b3R5cGUuX2dldEV4dGVudD1mdW5jdGlvbigpe3JldHVybiBmYnQuQXJyYXkudW5pcSh0aGlzLl9nZXRBbGxJbmNsdWRlZFZhbHVlcygpKX0sZS5wcm90b3R5cGUuZG9tYWluPWZ1bmN0aW9uKGUpe3JldHVybiB0LnByb3RvdHlwZS5kb21haW4uY2FsbCh0aGlzLGUpfSxlLnByb3RvdHlwZS5pbnZlcnRSYW5nZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3ZvaWQgMD09PXQmJih0PXRoaXMucmFuZ2UoKSk7dmFyIG49dGhpcy5fZDNTY2FsZS5iYW5kd2lkdGgoKSxpPXRoaXMuaW52ZXJ0ZWRUcmFuc2Zvcm1hdGlvbih0WzBdKSxyPXRoaXMuaW52ZXJ0ZWRUcmFuc2Zvcm1hdGlvbih0WzFdKSxvPXRoaXMuX2QzU2NhbGUuZG9tYWluKCksYT1vLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIGUuX2QzU2NhbGUodCkrbi8yfSkpLHM9ZGJ0LmJpc2VjdChhLGkpLGw9ZGJ0LmJpc2VjdChhLHIpO3JldHVybiBvLnNsaWNlKHMsbCl9LGUucHJvdG90eXBlLnJhbmdlPWZ1bmN0aW9uKGUpe3JldHVybiB0LnByb3RvdHlwZS5yYW5nZS5jYWxsKHRoaXMsZSl9LGUuX2NvbnZlcnRUb1Bsb3R0YWJsZUlubmVyUGFkZGluZz1mdW5jdGlvbih0KXtyZXR1cm4gMS8oMS10KS0xfSxlLl9jb252ZXJ0VG9QbG90dGFibGVPdXRlclBhZGRpbmc9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC8oMS1lKX0sZS5wcm90b3R5cGUuX3NldEJhbmRzPWZ1bmN0aW9uKCl7dmFyIHQ9MS0xLygxK3RoaXMuaW5uZXJQYWRkaW5nKCkpLGU9dGhpcy5vdXRlclBhZGRpbmcoKS8oMSt0aGlzLmlubmVyUGFkZGluZygpKTt0aGlzLl9kM1NjYWxlLnBhZGRpbmdJbm5lcih0KSx0aGlzLl9kM1NjYWxlLnBhZGRpbmdPdXRlcihlKX0sZS5wcm90b3R5cGUucmFuZ2VCYW5kPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Jlc2NhbGVCYW5kKHRoaXMuX2QzU2NhbGUuYmFuZHdpZHRoKCkpfSxlLnByb3RvdHlwZS5zdGVwV2lkdGg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVzY2FsZUJhbmQodGhpcy5fZDNTY2FsZS5iYW5kd2lkdGgoKSooMSt0aGlzLmlubmVyUGFkZGluZygpKSl9LGUucHJvdG90eXBlLnRpY2tzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tYWluKCl9LGUucHJvdG90eXBlLmlubmVyUGFkZGluZz1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9pbm5lclBhZGRpbmc6KHRoaXMuX2lubmVyUGFkZGluZz10LHRoaXMucmFuZ2UodGhpcy5yYW5nZSgpKSx0aGlzLl9kaXNwYXRjaFVwZGF0ZSgpLHRoaXMpfSxlLnByb3RvdHlwZS5vdXRlclBhZGRpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fb3V0ZXJQYWRkaW5nOih0aGlzLl9vdXRlclBhZGRpbmc9dCx0aGlzLnJhbmdlKHRoaXMucmFuZ2UoKSksdGhpcy5fZGlzcGF0Y2hVcGRhdGUoKSx0aGlzKX0sZS5wcm90b3R5cGUuc2NhbGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fZDNTY2FsZSh0KSt0aGlzLl9kM1NjYWxlLmJhbmR3aWR0aCgpLzI7cmV0dXJuIHRoaXMuX2QzVHJhbnNmb3JtYXRpb25TY2FsZShlKX0sZS5wcm90b3R5cGUuem9vbT1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXM7dGhpcy5fZDNUcmFuc2Zvcm1hdGlvblNjYWxlLmRvbWFpbih0aGlzLl9kM1RyYW5zZm9ybWF0aW9uU2NhbGUucmFuZ2UoKS5tYXAoKGZ1bmN0aW9uKGkpe3JldHVybiBuLl9kM1RyYW5zZm9ybWF0aW9uU2NhbGUuaW52ZXJ0KHBidC56b29tT3V0KGksdCxlKSl9KSkpLHRoaXMuX2Rpc3BhdGNoVXBkYXRlKCl9LGUucHJvdG90eXBlLnBhbj1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3RoaXMuX2QzVHJhbnNmb3JtYXRpb25TY2FsZS5kb21haW4odGhpcy5fZDNUcmFuc2Zvcm1hdGlvblNjYWxlLnJhbmdlKCkubWFwKChmdW5jdGlvbihuKXtyZXR1cm4gZS5fZDNUcmFuc2Zvcm1hdGlvblNjYWxlLmludmVydChuK3QpfSkpKSx0aGlzLl9kaXNwYXRjaFVwZGF0ZSgpfSxlLnByb3RvdHlwZS5zY2FsZVRyYW5zZm9ybWF0aW9uPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9kM1RyYW5zZm9ybWF0aW9uU2NhbGUodCl9LGUucHJvdG90eXBlLmludmVydGVkVHJhbnNmb3JtYXRpb249ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2QzVHJhbnNmb3JtYXRpb25TY2FsZS5pbnZlcnQodCl9LGUucHJvdG90eXBlLmdldFRyYW5zZm9ybWF0aW9uRXh0ZW50PWZ1bmN0aW9uKCl7cmV0dXJuIG1idH0sZS5wcm90b3R5cGUuZ2V0VHJhbnNmb3JtYXRpb25Eb21haW49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZDNUcmFuc2Zvcm1hdGlvblNjYWxlLmRvbWFpbigpfSxlLnByb3RvdHlwZS5zZXRUcmFuc2Zvcm1hdGlvbkRvbWFpbj1mdW5jdGlvbih0KXt0aGlzLl9kM1RyYW5zZm9ybWF0aW9uU2NhbGUuZG9tYWluKHQpLHRoaXMuX2Rpc3BhdGNoVXBkYXRlKCl9LGUucHJvdG90eXBlLl9nZXREb21haW49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYmFja2luZ1NjYWxlRG9tYWluKCl9LGUucHJvdG90eXBlLl9iYWNraW5nU2NhbGVEb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fZDNTY2FsZS5kb21haW4oKToodGhpcy5fZDNTY2FsZS5kb21haW4odCksdGhpcy5fc2V0QmFuZHMoKSx0aGlzKX0sZS5wcm90b3R5cGUuX2dldFJhbmdlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JhbmdlfSxlLnByb3RvdHlwZS5fc2V0UmFuZ2U9ZnVuY3Rpb24odCl7dGhpcy5fcmFuZ2U9dCx0aGlzLl9kM1RyYW5zZm9ybWF0aW9uU2NhbGUucmFuZ2UodCksdGhpcy5fc2V0QmFuZHMoKX0sZS5wcm90b3R5cGUuX3Jlc2NhbGVCYW5kPWZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLmFicyh0aGlzLl9kM1RyYW5zZm9ybWF0aW9uU2NhbGUodCktdGhpcy5fZDNUcmFuc2Zvcm1hdGlvblNjYWxlKDApKX0sZX0pKGxidC5TY2FsZSk7UXZ0LkNhdGVnb3J5PWdidDt2YXIgX2J0PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqL09iamVjdC5kZWZpbmVQcm9wZXJ0eShfYnQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciB5YnQ9Qk8sdmJ0PXdwdCxiYnQ9RF90LHhidD1sYnQsd2J0PShmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLmNvdW50PTAsdGhpcy50cmFja2VyPXt9fXJldHVybiB0LnByb3RvdHlwZS5nZXRJbmRleD1mdW5jdGlvbih0KXtpZihudWxsIT10aGlzLnRyYWNrZXJbdF0pcmV0dXJuIHRoaXMudHJhY2tlclt0XTt2YXIgZT10aGlzLmNvdW50O3JldHVybiB0aGlzLnRyYWNrZXJbdF09ZSx0aGlzLmNvdW50Kz0xLGV9LHQucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5jb3VudD0wLHRoaXMudHJhY2tlcj17fX0sdH0pKCksU2J0PShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKG4pe3ZhciBpLHI9dC5jYWxsKHRoaXMpfHx0aGlzO3N3aXRjaChyLl9yYW5nZUxlbmd0aD0xLHIuX3RyYWNrZXI9bmV3IHdidCxuKXtjYXNlIG51bGw6Y2FzZSB2b2lkIDA6bnVsbD09ZS5fcGxvdHRhYmxlQ29sb3JDYWNoZSYmKGUuX3Bsb3R0YWJsZUNvbG9yQ2FjaGU9ZS5fZ2V0UGxvdHRhYmxlQ29sb3JzKCkpLGk9dmJ0LnNjYWxlT3JkaW5hbCgpLnJhbmdlKGUuX3Bsb3R0YWJsZUNvbG9yQ2FjaGUpO2JyZWFrO2Nhc2UiQ2F0ZWdvcnkxMCI6Y2FzZSJjYXRlZ29yeTEwIjpjYXNlIjEwIjppPXZidC5zY2FsZU9yZGluYWwodmJ0LnNjaGVtZUNhdGVnb3J5MTApO2JyZWFrO2Nhc2UiQ2F0ZWdvcnkyMCI6Y2FzZSJjYXRlZ29yeTIwIjpjYXNlIjIwIjppPXZidC5zY2FsZU9yZGluYWwodmJ0LnNjaGVtZUNhdGVnb3J5MjApO2JyZWFrO2Nhc2UiQ2F0ZWdvcnkyMGIiOmNhc2UiY2F0ZWdvcnkyMGIiOmNhc2UiMjBiIjppPXZidC5zY2FsZU9yZGluYWwodmJ0LnNjaGVtZUNhdGVnb3J5MjBiKTticmVhaztjYXNlIkNhdGVnb3J5MjBjIjpjYXNlImNhdGVnb3J5MjBjIjpjYXNlIjIwYyI6aT12YnQuc2NhbGVPcmRpbmFsKHZidC5zY2hlbWVDYXRlZ29yeTIwYyk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIENvbG9yU2NhbGUgdHlwZSIpfXJldHVybiByLl9kM1NjYWxlPWksci5fcmFuZ2VMZW5ndGg9ci5fZDNTY2FsZS5yYW5nZSgpLmxlbmd0aCxyfXJldHVybiB5YnQuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUuZXh0ZW50T2ZWYWx1ZXM9ZnVuY3Rpb24odCl7cmV0dXJuIGJidC5BcnJheS51bmlxKHQpfSxlLnByb3RvdHlwZS5fZ2V0RXh0ZW50PWZ1bmN0aW9uKCl7cmV0dXJuIGJidC5BcnJheS51bmlxKHRoaXMuX2dldEFsbEluY2x1ZGVkVmFsdWVzKCkpfSxlLmludmFsaWRhdGVDb2xvckNhY2hlPWZ1bmN0aW9uKCl7ZS5fcGxvdHRhYmxlQ29sb3JDYWNoZT1udWxsfSxlLl9nZXRQbG90dGFibGVDb2xvcnM9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9W10sZT12YnQuc2VsZWN0KCJib2R5IikuYXBwZW5kKCJwbG90dGFibGUtY29sb3ItdGVzdGVyIiksbj1iYnQuQ29sb3IuY29sb3JUZXN0KGUsIiIpLGk9MCxyPWJidC5Db2xvci5jb2xvclRlc3QoZSwicGxvdHRhYmxlLWNvbG9ycy0wIik7bnVsbCE9ciYmaTx0aGlzLl9NQVhJTVVNX0NPTE9SU19GUk9NX0NTUyYmKHIhPT1ufHxyIT09dFt0Lmxlbmd0aC0xXSk7KXQucHVzaChyKSxpKysscj1iYnQuQ29sb3IuY29sb3JUZXN0KGUsInBsb3R0YWJsZS1jb2xvcnMtIitpKTtyZXR1cm4gZS5yZW1vdmUoKSx0fSxlLnByb3RvdHlwZS5zY2FsZT1mdW5jdGlvbih0KXt2YXIgbj10aGlzLl9kM1NjYWxlKHQpLGk9dGhpcy5fdHJhY2tlci5nZXRJbmRleCh0KSxyPU1hdGguZmxvb3IoaS90aGlzLl9yYW5nZUxlbmd0aCk7aWYoMD09PXIpcmV0dXJuIG47dmFyIG89TWF0aC5sb2cociplLl9MT09QX0xJR0hURU5fRkFDVE9SKzEpO3JldHVybiBiYnQuQ29sb3IubGlnaHRlbkNvbG9yKG4sbyl9LGUucHJvdG90eXBlLl9nZXREb21haW49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYmFja2luZ1NjYWxlRG9tYWluKCl9LGUucHJvdG90eXBlLl9iYWNraW5nU2NhbGVEb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fZDNTY2FsZS5kb21haW4oKToodGhpcy5fZDNTY2FsZS5kb21haW4odCksdGhpcy5fdHJhY2tlci5jbGVhcigpLHRoaXMpfSxlLnByb3RvdHlwZS5fZ2V0UmFuZ2U9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZDNTY2FsZS5yYW5nZSgpfSxlLnByb3RvdHlwZS5fc2V0UmFuZ2U9ZnVuY3Rpb24odCl7dGhpcy5fZDNTY2FsZS5yYW5nZSh0KSx0aGlzLl9yYW5nZUxlbmd0aD10Lmxlbmd0aH0sZS5fTE9PUF9MSUdIVEVOX0ZBQ1RPUj0xLjYsZS5fTUFYSU1VTV9DT0xPUlNfRlJPTV9DU1M9MjU2LGV9KSh4YnQuU2NhbGUpO19idC5Db2xvcj1TYnQ7dmFyIE1idD17fTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi9PYmplY3QuZGVmaW5lUHJvcGVydHkoTWJ0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgRWJ0PUJPLFRidD13cHQsQ2J0PURfdCxBYnQ9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUobil7dm9pZCAwPT09biYmKG49ImxpbmVhciIpO3ZhciBpPXQuY2FsbCh0aGlzKXx8dGhpcztzd2l0Y2gobil7Y2FzZSJsaW5lYXIiOmkuX2NvbG9yU2NhbGU9VGJ0LnNjYWxlTGluZWFyKCk7YnJlYWs7Y2FzZSJsb2ciOmkuX2NvbG9yU2NhbGU9VGJ0LnNjYWxlTG9nKCk7YnJlYWs7Y2FzZSJzcXJ0IjppLl9jb2xvclNjYWxlPVRidC5zY2FsZVNxcnQoKTticmVhaztjYXNlInBvdyI6aS5fY29sb3JTY2FsZT1UYnQuc2NhbGVQb3coKX1pZihudWxsPT1pLl9jb2xvclNjYWxlKXRocm93IG5ldyBFcnJvcigidW5rbm93biBRdWFudGl0YXRpdmVTY2FsZSBzY2FsZSB0eXBlICIrbik7cmV0dXJuIGkucmFuZ2UoZS5SRURTKSxpfXJldHVybiBFYnQuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUuZXh0ZW50T2ZWYWx1ZXM9ZnVuY3Rpb24odCl7dmFyIGU9VGJ0LmV4dGVudCh0KTtyZXR1cm4gbnVsbD09ZVswXXx8bnVsbD09ZVsxXT9bXTplfSxlLnByb3RvdHlwZS5fZDNJbnRlcnBvbGF0ZWRTY2FsZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9jb2xvclNjYWxlLnJhbmdlKFswLDFdKS5pbnRlcnBvbGF0ZSh0aGlzLl9pbnRlcnBvbGF0ZUNvbG9ycygpKX0sZS5wcm90b3R5cGUuX2ludGVycG9sYXRlQ29sb3JzPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fY29sb3JSYW5nZTtpZih0Lmxlbmd0aDwyKXRocm93IG5ldyBFcnJvcigiQ29sb3Igc2NhbGUgYXJyYXlzIG11c3QgaGF2ZSBhdCBsZWFzdCB0d28gZWxlbWVudHMuIik7cmV0dXJuIGZ1bmN0aW9uKGUsbil7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBuPShlPU1hdGgubWF4KDAsTWF0aC5taW4oMSxlKSkpKih0Lmxlbmd0aC0xKSxpPU1hdGguZmxvb3Iobikscj1NYXRoLmNlaWwobiksbz1uLWk7cmV0dXJuIFRidC5pbnRlcnBvbGF0ZUxhYih0W2ldLHRbcl0pKG8pfX19LGUucHJvdG90eXBlLl9yZXNldFNjYWxlPWZ1bmN0aW9uKCl7dGhpcy5fZDNTY2FsZT10aGlzLl9kM0ludGVycG9sYXRlZFNjYWxlKCksdGhpcy5hdXRvRG9tYWluSWZBdXRvbWF0aWNNb2RlKCksdGhpcy5fZGlzcGF0Y2hVcGRhdGUoKX0sZS5wcm90b3R5cGUuYXV0b0RvbWFpbj1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX2dldEFsbEluY2x1ZGVkVmFsdWVzKCk7cmV0dXJuIHQubGVuZ3RoPjAmJnRoaXMuX3NldERvbWFpbihbQ2J0Lk1hdGgubWluKHQsMCksQ2J0Lk1hdGgubWF4KHQsMCldKSx0aGlzfSxlLnByb3RvdHlwZS5zY2FsZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZDNTY2FsZSh0KX0sZS5wcm90b3R5cGUuX2dldERvbWFpbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9iYWNraW5nU2NhbGVEb21haW4oKX0sZS5wcm90b3R5cGUuX2JhY2tpbmdTY2FsZURvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9kM1NjYWxlLmRvbWFpbigpOih0aGlzLl9kM1NjYWxlLmRvbWFpbih0KSx0aGlzKX0sZS5wcm90b3R5cGUuX2dldFJhbmdlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NvbG9yUmFuZ2V9LGUucHJvdG90eXBlLl9zZXRSYW5nZT1mdW5jdGlvbih0KXt0aGlzLl9jb2xvclJhbmdlPXQsdGhpcy5fcmVzZXRTY2FsZSgpfSxlLlJFRFM9WyIjRkZGRkZGIiwiI0ZGRjZFMSIsIiNGRUY0QzAiLCIjRkVEOTc2IiwiI0ZFQjI0QyIsIiNGRDhEM0MiLCIjRkM0RTJBIiwiI0UzMUExQyIsIiNCMTAwMjYiXSxlLkJMVUVTPVsiI0ZGRkZGRiIsIiNDQ0ZGRkYiLCIjQTVGRkZEIiwiIzg1RjdGQiIsIiM2RUQzRUYiLCIjNTVBN0UwIiwiIzQxN0ZEMCIsIiMyNTQ1RDMiLCIjMEIwMkUxIl0sZS5QT1NORUc9WyIjMEIwMkUxIiwiIzI1NDVEMyIsIiM0MTdGRDAiLCIjNTVBN0UwIiwiIzZFRDNFRiIsIiM4NUY3RkIiLCIjQTVGRkZEIiwiI0NDRkZGRiIsIiNGRkZGRkYiLCIjRkZGNkUxIiwiI0ZFRjRDMCIsIiNGRUQ5NzYiLCIjRkVCMjRDIiwiI0ZEOEQzQyIsIiNGQzRFMkEiLCIjRTMxQTFDIiwiI0IxMDAyNiJdLGV9KShsYnQuU2NhbGUpO01idC5JbnRlcnBvbGF0ZWRDb2xvcj1BYnQ7dmFyIGtidD17fSxMYnQ9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShMYnQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBQYnQ9Qk8sTmJ0PXdwdCxJYnQ9dGJ0LFJidD1EX3QsT2J0PShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7dmFyIGU9dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBlLl90aWNrR2VuZXJhdG9yPWZ1bmN0aW9uKHQpe3JldHVybiB0LmRlZmF1bHRUaWNrcygpfSxlLl9wYWRQcm9wb3J0aW9uPS4wNSxlLl9zbmFwcGluZ0RvbWFpbkVuYWJsZWQ9ITAsZS5fcGFkZGluZ0V4Y2VwdGlvbnNQcm92aWRlcnM9bmV3IFJidC5TZXQsZX1yZXR1cm4gUGJ0Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLmF1dG9Eb21haW49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZG9tYWluTWluPW51bGwsdGhpcy5fZG9tYWluTWF4PW51bGwsdC5wcm90b3R5cGUuYXV0b0RvbWFpbi5jYWxsKHRoaXMpLHRoaXN9LGUucHJvdG90eXBlLmF1dG9Eb21haW5JZkF1dG9tYXRpY01vZGU9ZnVuY3Rpb24oKXtpZihudWxsPT10aGlzLl9kb21haW5NaW58fG51bGw9PXRoaXMuX2RvbWFpbk1heCl7dmFyIGU9dGhpcy5fZ2V0RXh0ZW50KCk7aWYobnVsbCE9dGhpcy5fZG9tYWluTWluKXt2YXIgbj1lWzFdO3JldHVybiB0aGlzLl9kb21haW5NaW4+PW4mJihuPXRoaXMuX2V4cGFuZFNpbmdsZVZhbHVlRG9tYWluKFt0aGlzLl9kb21haW5NaW4sdGhpcy5fZG9tYWluTWluXSlbMV0pLHZvaWQgdGhpcy5fc2V0RG9tYWluKFt0aGlzLl9kb21haW5NaW4sbl0pfWlmKG51bGwhPXRoaXMuX2RvbWFpbk1heCl7dmFyIGk9ZVswXTtyZXR1cm4gdGhpcy5fZG9tYWluTWF4PD1pJiYoaT10aGlzLl9leHBhbmRTaW5nbGVWYWx1ZURvbWFpbihbdGhpcy5fZG9tYWluTWF4LHRoaXMuX2RvbWFpbk1heF0pWzBdKSx2b2lkIHRoaXMuX3NldERvbWFpbihbaSx0aGlzLl9kb21haW5NYXhdKX10LnByb3RvdHlwZS5hdXRvRG9tYWluSWZBdXRvbWF0aWNNb2RlLmNhbGwodGhpcyl9ZWxzZSB0aGlzLl9zZXREb21haW4oW3RoaXMuX2RvbWFpbk1pbix0aGlzLl9kb21haW5NYXhdKX0sZS5wcm90b3R5cGUuX2dldFVuYm91bmRlZEV4dGVudD1mdW5jdGlvbih0KXt2b2lkIDA9PT10JiYodD0hMSk7dmFyIGU9dGhpcy5fZ2V0QWxsSW5jbHVkZWRWYWx1ZXModCksbj10aGlzLl9kZWZhdWx0RXh0ZW50KCk7aWYoMCE9PWUubGVuZ3RoKXt2YXIgaT1bUmJ0Lk1hdGgubWluKGUsblswXSksUmJ0Lk1hdGgubWF4KGUsblsxXSldO249dGhpcy5fcGFkRG9tYWluKGkpfXJldHVybiBufSxlLnByb3RvdHlwZS5fZ2V0RXh0ZW50PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fZ2V0VW5ib3VuZGVkRXh0ZW50KCk7cmV0dXJuIG51bGwhPXRoaXMuX2RvbWFpbk1pbiYmKHRbMF09dGhpcy5fZG9tYWluTWluKSxudWxsIT10aGlzLl9kb21haW5NYXgmJih0WzFdPXRoaXMuX2RvbWFpbk1heCksdH0sZS5wcm90b3R5cGUuYWRkUGFkZGluZ0V4Y2VwdGlvbnNQcm92aWRlcj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcGFkZGluZ0V4Y2VwdGlvbnNQcm92aWRlcnMuYWRkKHQpLHRoaXMuYXV0b0RvbWFpbklmQXV0b21hdGljTW9kZSgpLHRoaXN9LGUucHJvdG90eXBlLnJlbW92ZVBhZGRpbmdFeGNlcHRpb25zUHJvdmlkZXI9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3BhZGRpbmdFeGNlcHRpb25zUHJvdmlkZXJzLmRlbGV0ZSh0KSx0aGlzLmF1dG9Eb21haW5JZkF1dG9tYXRpY01vZGUoKSx0aGlzfSxlLnByb3RvdHlwZS5wYWRQcm9wb3J0aW9uPWZ1bmN0aW9uKHQpe2lmKG51bGw9PXQpcmV0dXJuIHRoaXMuX3BhZFByb3BvcnRpb247aWYodDwwKXRocm93IG5ldyBFcnJvcigicGFkUHJvcG9ydGlvbiBtdXN0IGJlIG5vbi1uZWdhdGl2ZSIpO3JldHVybiB0aGlzLl9wYWRQcm9wb3J0aW9uPXQsdGhpcy5hdXRvRG9tYWluSWZBdXRvbWF0aWNNb2RlKCksdGhpc30sZS5wcm90b3R5cGUuX3BhZERvbWFpbj1mdW5jdGlvbih0KXt2YXIgZT10aGlzO2lmKHRbMF0udmFsdWVPZigpPT09dFsxXS52YWx1ZU9mKCkpcmV0dXJuIHRoaXMuX2V4cGFuZFNpbmdsZVZhbHVlRG9tYWluKHQpO2lmKDA9PT10aGlzLl9wYWRQcm9wb3J0aW9uKXJldHVybiB0O3ZhciBuPXRoaXMuX3BhZFByb3BvcnRpb24vMixpPXRbMF0scj10WzFdLG89ITEsYT0hMTt0aGlzLl9wYWRkaW5nRXhjZXB0aW9uc1Byb3ZpZGVycy5mb3JFYWNoKChmdW5jdGlvbih0KXt0KGUpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3QudmFsdWVPZigpPT09aS52YWx1ZU9mKCkmJihvPSEwKSx0LnZhbHVlT2YoKT09PXIudmFsdWVPZigpJiYoYT0hMCl9KSl9KSk7dmFyIHM9dGhpcy5fYmFja2luZ1NjYWxlRG9tYWluKCk7dGhpcy5fYmFja2luZ1NjYWxlRG9tYWluKHQpO3ZhciBsPW8/aTp0aGlzLmludmVydCh0aGlzLnNjYWxlKGkpLSh0aGlzLnNjYWxlKHIpLXRoaXMuc2NhbGUoaSkpKm4pLGM9YT9yOnRoaXMuaW52ZXJ0KHRoaXMuc2NhbGUocikrKHRoaXMuc2NhbGUociktdGhpcy5zY2FsZShpKSkqbik7cmV0dXJuIHRoaXMuX2JhY2tpbmdTY2FsZURvbWFpbihzKSx0aGlzLl9zbmFwcGluZ0RvbWFpbkVuYWJsZWQ/dGhpcy5fbmljZURvbWFpbihbbCxjXSk6W2wsY119LGUucHJvdG90eXBlLnNuYXBwaW5nRG9tYWluRW5hYmxlZD1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9zbmFwcGluZ0RvbWFpbkVuYWJsZWQ6KHRoaXMuX3NuYXBwaW5nRG9tYWluRW5hYmxlZD10LHRoaXMuYXV0b0RvbWFpbklmQXV0b21hdGljTW9kZSgpLHRoaXMpfSxlLnByb3RvdHlwZS5fZXhwYW5kU2luZ2xlVmFsdWVEb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIHR9LGUucHJvdG90eXBlLmludmVydD1mdW5jdGlvbih0KXt0aHJvdyBuZXcgRXJyb3IoIlN1YmNsYXNzZXMgc2hvdWxkIG92ZXJyaWRlIGludmVydCIpfSxlLnByb3RvdHlwZS5kb21haW49ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPWUmJih0aGlzLl9kb21haW5NaW49ZVswXSx0aGlzLl9kb21haW5NYXg9ZVsxXSksdC5wcm90b3R5cGUuZG9tYWluLmNhbGwodGhpcyxlKX0sZS5wcm90b3R5cGUuZG9tYWluTWluPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuZG9tYWluKClbMF06KHRoaXMuX2RvbWFpbk1pbj10LHRoaXMuYXV0b0RvbWFpbklmQXV0b21hdGljTW9kZSgpLHRoaXMpfSxlLnByb3RvdHlwZS5kb21haW5NYXg9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5kb21haW4oKVsxXToodGhpcy5fZG9tYWluTWF4PXQsdGhpcy5hdXRvRG9tYWluSWZBdXRvbWF0aWNNb2RlKCksdGhpcyl9LGUucHJvdG90eXBlLmV4dGVudE9mVmFsdWVzPWZ1bmN0aW9uKHQpe3ZhciBlPU5idC5leHRlbnQodC5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBSYnQuTWF0aC5pc1ZhbGlkTnVtYmVyKCt0KX0pKSk7cmV0dXJuIG51bGw9PWVbMF18fG51bGw9PWVbMV0/W106ZX0sZS5wcm90b3R5cGUuem9vbT1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXM7dGhpcy5kb21haW4odGhpcy5yYW5nZSgpLm1hcCgoZnVuY3Rpb24oaSl7cmV0dXJuIG4uaW52ZXJ0KElidC56b29tT3V0KGksdCxlKSl9KSkpfSxlLnByb3RvdHlwZS5wYW49ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0aGlzLmRvbWFpbih0aGlzLnJhbmdlKCkubWFwKChmdW5jdGlvbihuKXtyZXR1cm4gZS5pbnZlcnQobit0KX0pKSl9LGUucHJvdG90eXBlLnNjYWxlVHJhbnNmb3JtYXRpb249ZnVuY3Rpb24odCl7dGhyb3cgbmV3IEVycm9yKCJTdWJjbGFzc2VzIHNob3VsZCBvdmVycmlkZSBzY2FsZVRyYW5zZm9ybWF0aW9uIil9LGUucHJvdG90eXBlLmludmVydGVkVHJhbnNmb3JtYXRpb249ZnVuY3Rpb24odCl7dGhyb3cgbmV3IEVycm9yKCJTdWJjbGFzc2VzIHNob3VsZCBvdmVycmlkZSBpbnZlcnRlZFRyYW5zZm9ybWF0aW9uIil9LGUucHJvdG90eXBlLmdldFRyYW5zZm9ybWF0aW9uRXh0ZW50PWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJTdWJjbGFzc2VzIHNob3VsZCBvdmVycmlkZSBnZXRUcmFuc2Zvcm1hdGlvbkV4dGVudCIpfSxlLnByb3RvdHlwZS5nZXRUcmFuc2Zvcm1hdGlvbkRvbWFpbj1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiU3ViY2xhc3NlcyBzaG91bGQgb3ZlcnJpZGUgZ2V0VHJhbnNmb3JtYXRpb25Eb21haW4iKX0sZS5wcm90b3R5cGUuc2V0VHJhbnNmb3JtYXRpb25Eb21haW49ZnVuY3Rpb24odCl7dGhyb3cgbmV3IEVycm9yKCJTdWJjbGFzc2VzIHNob3VsZCBvdmVycmlkZSBzZXRUcmFuc2Zvcm1hdGlvbkRvbWFpbiIpfSxlLnByb3RvdHlwZS5fc2V0RG9tYWluPWZ1bmN0aW9uKGUpe3ZhciBuPWZ1bmN0aW9uKHQpe3JldHVybiBSYnQuTWF0aC5pc05hTih0KXx8dD09PTEvMHx8dD09PS0xLzB9O24oZVswXSl8fG4oZVsxXSk/UmJ0LldpbmRvdy53YXJuKCJXYXJuaW5nOiBRdWFudGl0YXRpdmVTY2FsZXMgY2Fubm90IHRha2UgTmFOIG9yIEluZmluaXR5IGFzIGEgZG9tYWluIHZhbHVlLiBJZ25vcmluZy4iKTp0LnByb3RvdHlwZS5fc2V0RG9tYWluLmNhbGwodGhpcyxlKX0sZS5wcm90b3R5cGUuZGVmYXVsdFRpY2tzPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJTdWJjbGFzc2VzIHNob3VsZCBvdmVycmlkZSBfZ2V0RGVmYXVsdFRpY2tzIil9LGUucHJvdG90eXBlLnRpY2tzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3RpY2tHZW5lcmF0b3IodGhpcyl9LGUucHJvdG90eXBlLl9uaWNlRG9tYWluPWZ1bmN0aW9uKHQsZSl7dGhyb3cgbmV3IEVycm9yKCJTdWJjbGFzc2VzIHNob3VsZCBvdmVycmlkZSBfbmljZURvbWFpbiIpfSxlLnByb3RvdHlwZS5fZGVmYXVsdEV4dGVudD1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiU3ViY2xhc3NlcyBzaG91bGQgb3ZlcnJpZGUgX2RlZmF1bHRFeHRlbnQiKX0sZS5wcm90b3R5cGUudGlja0dlbmVyYXRvcj1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl90aWNrR2VuZXJhdG9yOih0aGlzLl90aWNrR2VuZXJhdG9yPXQsdGhpcyl9LGUuX0RFRkFVTFRfTlVNX1RJQ0tTPTEwLGV9KShsYnQuU2NhbGUpO0xidC5RdWFudGl0YXRpdmVTY2FsZT1PYnQsCi8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShrYnQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciB6YnQ9Qk8sRGJ0PXdwdCxCYnQ9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt2YXIgZT10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIGUuX2QzU2NhbGU9RGJ0LnNjYWxlTGluZWFyKCksZX1yZXR1cm4gemJ0Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLl9kZWZhdWx0RXh0ZW50PWZ1bmN0aW9uKCl7cmV0dXJuWzAsMV19LGUucHJvdG90eXBlLl9leHBhbmRTaW5nbGVWYWx1ZURvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gdFswXT09PXRbMV0/W3RbMF0tMSx0WzFdKzFdOnR9LGUucHJvdG90eXBlLnNjYWxlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9kM1NjYWxlKHQpfSxlLnByb3RvdHlwZS5zY2FsZVRyYW5zZm9ybWF0aW9uPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnNjYWxlKHQpfSxlLnByb3RvdHlwZS5pbnZlcnRlZFRyYW5zZm9ybWF0aW9uPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmludmVydCh0KX0sZS5wcm90b3R5cGUuZ2V0VHJhbnNmb3JtYXRpb25FeHRlbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZ2V0VW5ib3VuZGVkRXh0ZW50KCEwKX0sZS5wcm90b3R5cGUuZ2V0VHJhbnNmb3JtYXRpb25Eb21haW49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21haW4oKX0sZS5wcm90b3R5cGUuc2V0VHJhbnNmb3JtYXRpb25Eb21haW49ZnVuY3Rpb24odCl7dGhpcy5kb21haW4odCl9LGUucHJvdG90eXBlLl9nZXREb21haW49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYmFja2luZ1NjYWxlRG9tYWluKCl9LGUucHJvdG90eXBlLl9iYWNraW5nU2NhbGVEb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fZDNTY2FsZS5kb21haW4oKToodGhpcy5fZDNTY2FsZS5kb21haW4odCksdGhpcyl9LGUucHJvdG90eXBlLl9nZXRSYW5nZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9kM1NjYWxlLnJhbmdlKCl9LGUucHJvdG90eXBlLl9zZXRSYW5nZT1mdW5jdGlvbih0KXt0aGlzLl9kM1NjYWxlLnJhbmdlKHQpfSxlLnByb3RvdHlwZS5pbnZlcnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2QzU2NhbGUuaW52ZXJ0KHQpfSxlLnByb3RvdHlwZS5kZWZhdWx0VGlja3M9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZDNTY2FsZS50aWNrcyhlLl9ERUZBVUxUX05VTV9USUNLUyl9LGUucHJvdG90eXBlLl9uaWNlRG9tYWluPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuX2QzU2NhbGUuY29weSgpLmRvbWFpbih0KS5uaWNlKGUpLmRvbWFpbigpfSxlfSkoTGJ0LlF1YW50aXRhdGl2ZVNjYWxlKTtrYnQuTGluZWFyPUJidDt2YXIgSGJ0PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqL09iamVjdC5kZWZpbmVQcm9wZXJ0eShIYnQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBGYnQ9Qk8sVmJ0PXdwdCxVYnQ9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7dm9pZCAwPT09ZSYmKGU9MTApO3ZhciBuPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gbi5fZDNTY2FsZT1WYnQuc2NhbGVMb2coKS5iYXNlKGUpLG4uX3NldERvbWFpbihuLl9kZWZhdWx0RXh0ZW50KCkpLG59cmV0dXJuIEZidC5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5fZGVmYXVsdEV4dGVudD1mdW5jdGlvbigpe3JldHVyblsxLHRoaXMuX2QzU2NhbGUuYmFzZSgpXX0sZS5wcm90b3R5cGUuX2V4cGFuZFNpbmdsZVZhbHVlRG9tYWluPWZ1bmN0aW9uKHQpe3JldHVybiB0WzBdPT09dFsxXT9bdFswXS90aGlzLl9kM1NjYWxlLmJhc2UoKSx0WzFdKnRoaXMuX2QzU2NhbGUuYmFzZSgpXTp0fSxlLnByb3RvdHlwZS5zY2FsZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZDNTY2FsZSh0KX0sZS5wcm90b3R5cGUuc2NhbGVUcmFuc2Zvcm1hdGlvbj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5zY2FsZSh0KX0sZS5wcm90b3R5cGUuaW52ZXJ0ZWRUcmFuc2Zvcm1hdGlvbj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5pbnZlcnQodCl9LGUucHJvdG90eXBlLmdldFRyYW5zZm9ybWF0aW9uRXh0ZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2dldFVuYm91bmRlZEV4dGVudCghMCl9LGUucHJvdG90eXBlLmdldFRyYW5zZm9ybWF0aW9uRG9tYWluPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tYWluKCl9LGUucHJvdG90eXBlLnNldFRyYW5zZm9ybWF0aW9uRG9tYWluPWZ1bmN0aW9uKHQpe3RoaXMuZG9tYWluKHQpfSxlLnByb3RvdHlwZS5fZ2V0RG9tYWluPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2JhY2tpbmdTY2FsZURvbWFpbigpfSxlLnByb3RvdHlwZS5fYmFja2luZ1NjYWxlRG9tYWluPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX2QzU2NhbGUuZG9tYWluKCk6KHRoaXMuX2QzU2NhbGUuZG9tYWluKHQpLHRoaXMpfSxlLnByb3RvdHlwZS5fZ2V0UmFuZ2U9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZDNTY2FsZS5yYW5nZSgpfSxlLnByb3RvdHlwZS5fc2V0UmFuZ2U9ZnVuY3Rpb24odCl7dGhpcy5fZDNTY2FsZS5yYW5nZSh0KX0sZS5wcm90b3R5cGUuaW52ZXJ0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9kM1NjYWxlLmludmVydCh0KX0sZS5wcm90b3R5cGUuZGVmYXVsdFRpY2tzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2QzU2NhbGUudGlja3MoZS5fREVGQVVMVF9OVU1fVElDS1MpfSxlLnByb3RvdHlwZS5fbmljZURvbWFpbj1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9kM1NjYWxlLmNvcHkoKS5kb21haW4odCkubmljZSgpLmRvbWFpbigpfSxlfSkoTGJ0LlF1YW50aXRhdGl2ZVNjYWxlKTtIYnQuTG9nPVVidDt2YXIgamJ0PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqL09iamVjdC5kZWZpbmVQcm9wZXJ0eShqYnQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBHYnQ9Qk8sV2J0PXdwdCxxYnQ9RF90LFlidD1YdnQsWGJ0PShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUpe3ZvaWQgMD09PWUmJihlPTEwKTt2YXIgbj10LmNhbGwodGhpcyl8fHRoaXM7aWYobi5fbG9nVGlja0dlbmVyYXRvcj1mdW5jdGlvbih0KXt2YXIgZT1mdW5jdGlvbih0LGUsbil7cmV0dXJuW3QsZSxuXS5zb3J0KChmdW5jdGlvbih0LGUpe3JldHVybiB0LWV9KSlbMV19LGk9cWJ0Lk1hdGgubWluKG4uX3VudHJhbnNmb3JtZWREb21haW4sMCkscj1xYnQuTWF0aC5tYXgobi5fdW50cmFuc2Zvcm1lZERvbWFpbiwwKSxvPWksYT1lKGksciwtbi5fcGl2b3QpLHM9ZShpLHIsbi5fcGl2b3QpLGw9cixjPW4uX2xvZ1RpY2tzKC1hLC1vKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybi10fSkpLnJldmVyc2UoKSx1PW4uX2xvZ1RpY2tzKHMsbCksaD1NYXRoLm1heChpLC1uLl9waXZvdCksZD1NYXRoLm1pbihyLG4uX3Bpdm90KSxwPVdidC5zY2FsZUxpbmVhcigpLmRvbWFpbihbaCxkXSkudGlja3Mobi5faG93TWFueVRpY2tzKGgsZCkpLGY9Yy5jb25jYXQocCkuY29uY2F0KHUpO3JldHVybiBmLmxlbmd0aDw9MSYmKGY9V2J0LnNjYWxlTGluZWFyKCkuZG9tYWluKFtpLHJdKS50aWNrcyhZYnQuTW9kaWZpZWRMb2cuX0RFRkFVTFRfTlVNX1RJQ0tTKSksZn0sbi5fZDNTY2FsZT1XYnQuc2NhbGVMaW5lYXIoKSxuLl9iYXNlPWUsbi5fcGl2b3Q9bi5fYmFzZSxuLl9zZXREb21haW4obi5fZGVmYXVsdEV4dGVudCgpKSxuLnRpY2tHZW5lcmF0b3Iobi5fbG9nVGlja0dlbmVyYXRvciksZTw9MSl0aHJvdyBuZXcgRXJyb3IoIk1vZGlmaWVkTG9nU2NhbGU6IFRoZSBiYXNlIG11c3QgYmUgPiAxIik7cmV0dXJuIG59cmV0dXJuIEdidC5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5fYWRqdXN0ZWRMb2c9ZnVuY3Rpb24odCl7dmFyIGU9dDwwPy0xOjE7cmV0dXJuKHQqPWUpPHRoaXMuX3Bpdm90JiYodCs9KHRoaXMuX3Bpdm90LXQpL3RoaXMuX3Bpdm90KSx0PU1hdGgubG9nKHQpL01hdGgubG9nKHRoaXMuX2Jhc2UpLHQqPWV9LGUucHJvdG90eXBlLl9pbnZlcnRlZEFkanVzdGVkTG9nPWZ1bmN0aW9uKHQpe3ZhciBlPXQ8MD8tMToxO3JldHVybiB0Kj1lLCh0PU1hdGgucG93KHRoaXMuX2Jhc2UsdCkpPHRoaXMuX3Bpdm90JiYodD10aGlzLl9waXZvdCoodC0xKS8odGhpcy5fcGl2b3QtMSkpLHQqPWV9LGUucHJvdG90eXBlLnNjYWxlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9kM1NjYWxlKHRoaXMuX2FkanVzdGVkTG9nKHQpKX0sZS5wcm90b3R5cGUuaW52ZXJ0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9pbnZlcnRlZEFkanVzdGVkTG9nKHRoaXMuX2QzU2NhbGUuaW52ZXJ0KHQpKX0sZS5wcm90b3R5cGUuc2NhbGVUcmFuc2Zvcm1hdGlvbj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5zY2FsZSh0KX0sZS5wcm90b3R5cGUuaW52ZXJ0ZWRUcmFuc2Zvcm1hdGlvbj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5pbnZlcnQodCl9LGUucHJvdG90eXBlLmdldFRyYW5zZm9ybWF0aW9uRXh0ZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2dldFVuYm91bmRlZEV4dGVudCghMCl9LGUucHJvdG90eXBlLmdldFRyYW5zZm9ybWF0aW9uRG9tYWluPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tYWluKCl9LGUucHJvdG90eXBlLnNldFRyYW5zZm9ybWF0aW9uRG9tYWluPWZ1bmN0aW9uKHQpe3RoaXMuZG9tYWluKHQpfSxlLnByb3RvdHlwZS5fZ2V0RG9tYWluPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3VudHJhbnNmb3JtZWREb21haW59LGUucHJvdG90eXBlLl9zZXREb21haW49ZnVuY3Rpb24oZSl7dGhpcy5fdW50cmFuc2Zvcm1lZERvbWFpbj1lO3ZhciBuPVt0aGlzLl9hZGp1c3RlZExvZyhlWzBdKSx0aGlzLl9hZGp1c3RlZExvZyhlWzFdKV07dC5wcm90b3R5cGUuX3NldERvbWFpbi5jYWxsKHRoaXMsbil9LGUucHJvdG90eXBlLl9iYWNraW5nU2NhbGVEb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fZDNTY2FsZS5kb21haW4oKToodGhpcy5fZDNTY2FsZS5kb21haW4odCksdGhpcyl9LGUucHJvdG90eXBlLl9sb2dUaWNrcz1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMsaT10aGlzLl9ob3dNYW55VGlja3ModCxlKTtpZigwPT09aSlyZXR1cm5bXTt2YXIgcj1NYXRoLmZsb29yKE1hdGgubG9nKHQpL01hdGgubG9nKHRoaXMuX2Jhc2UpKSxvPU1hdGguY2VpbChNYXRoLmxvZyhlKS9NYXRoLmxvZyh0aGlzLl9iYXNlKSksYT1XYnQucmFuZ2UobyxyLC1NYXRoLmNlaWwoKG8tcikvaSkpLHM9V2J0LnJhbmdlKHRoaXMuX2Jhc2UsMSwtKHRoaXMuX2Jhc2UtMSkpLm1hcChNYXRoLmZsb29yKSxsPXFidC5BcnJheS51bmlxKHMpLGM9YS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBsLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGgucG93KG4uX2Jhc2UsdC0xKSplfSkpfSkpO3JldHVybiBxYnQuQXJyYXkuZmxhdHRlbihjKS5maWx0ZXIoKGZ1bmN0aW9uKG4pe3JldHVybiB0PD1uJiZuPD1lfSkpLnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQtZX0pKX0sZS5wcm90b3R5cGUuX2hvd01hbnlUaWNrcz1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuX2FkanVzdGVkTG9nKHFidC5NYXRoLm1pbih0aGlzLl91bnRyYW5zZm9ybWVkRG9tYWluLDApKSxpPXRoaXMuX2FkanVzdGVkTG9nKHFidC5NYXRoLm1heCh0aGlzLl91bnRyYW5zZm9ybWVkRG9tYWluLDApKSxyPXRoaXMuX2FkanVzdGVkTG9nKHQpLG89dGhpcy5fYWRqdXN0ZWRMb2coZSk7cmV0dXJuIE1hdGguY2VpbCgoby1yKS8oaS1uKSpZYnQuTW9kaWZpZWRMb2cuX0RFRkFVTFRfTlVNX1RJQ0tTKX0sZS5wcm90b3R5cGUuX25pY2VEb21haW49ZnVuY3Rpb24odCxlKXtyZXR1cm4gdH0sZS5wcm90b3R5cGUuX2RlZmF1bHRFeHRlbnQ9ZnVuY3Rpb24oKXtyZXR1cm5bMCx0aGlzLl9iYXNlXX0sZS5wcm90b3R5cGUuX2V4cGFuZFNpbmdsZVZhbHVlRG9tYWluPWZ1bmN0aW9uKHQpe2lmKHRbMF09PT10WzFdKXt2YXIgZT10WzBdO3JldHVybiBlPjA/W2UvdGhpcy5fYmFzZSxlKnRoaXMuX2Jhc2VdOjA9PT1lP1stdGhpcy5fYmFzZSx0aGlzLl9iYXNlXTpbZSp0aGlzLl9iYXNlLGUvdGhpcy5fYmFzZV19cmV0dXJuIHR9LGUucHJvdG90eXBlLl9nZXRSYW5nZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9kM1NjYWxlLnJhbmdlKCl9LGUucHJvdG90eXBlLl9zZXRSYW5nZT1mdW5jdGlvbih0KXt0aGlzLl9kM1NjYWxlLnJhbmdlKHQpfSxlLnByb3RvdHlwZS5kZWZhdWx0VGlja3M9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZDNTY2FsZS50aWNrcyhZYnQuTW9kaWZpZWRMb2cuX0RFRkFVTFRfTlVNX1RJQ0tTKX0sZX0pKExidC5RdWFudGl0YXRpdmVTY2FsZSk7amJ0Lk1vZGlmaWVkTG9nPVhidDt2YXIgJGJ0PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqL09iamVjdC5kZWZpbmVQcm9wZXJ0eSgkYnQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBLYnQ9Qk8sWmJ0PXdwdCxKYnQ9WXZ0LFFidD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3ZhciBlPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gZS5fZDNTY2FsZT1aYnQuc2NhbGVUaW1lKCksZS5hdXRvRG9tYWluKCksZX1yZXR1cm4gS2J0Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLnRpY2tJbnRlcnZhbD1mdW5jdGlvbih0LG4saSl7dm9pZCAwPT09biYmKG49MSksdm9pZCAwPT09aSYmKGk9ITEpO3ZhciByPVpidC5zY2FsZVRpbWUoKSxvPWUudGltZUludGVydmFsVG9EM1RpbWUodCxpKS5ldmVyeShuKTtyZXR1cm4gci5kb21haW4odGhpcy5kb21haW4oKSksci5yYW5nZSh0aGlzLnJhbmdlKCkpLHIudGlja3Mobyl9LGUucHJvdG90eXBlLl9zZXREb21haW49ZnVuY3Rpb24oZSl7aWYoZVsxXTxlWzBdKXRocm93IG5ldyBFcnJvcigiU2NhbGUuVGltZSBkb21haW4gdmFsdWVzIG11c3QgYmUgaW4gY2hyb25vbG9naWNhbCBvcmRlciIpO3JldHVybiB0LnByb3RvdHlwZS5fc2V0RG9tYWluLmNhbGwodGhpcyxlKX0sZS5wcm90b3R5cGUuX2RlZmF1bHRFeHRlbnQ9ZnVuY3Rpb24oKXtyZXR1cm5bbmV3IERhdGUoIjE5NzAtMDEtMDEiKSxuZXcgRGF0ZSgiMTk3MC0wMS0wMiIpXX0sZS5wcm90b3R5cGUuX2V4cGFuZFNpbmdsZVZhbHVlRG9tYWluPWZ1bmN0aW9uKHQpe3ZhciBlPXRbMF0uZ2V0VGltZSgpLG49dFsxXS5nZXRUaW1lKCk7aWYoZT09PW4pe3ZhciBpPW5ldyBEYXRlKGUpO2kuc2V0RGF0ZShpLmdldERhdGUoKS0xKTt2YXIgcj1uZXcgRGF0ZShuKTtyZXR1cm4gci5zZXREYXRlKHIuZ2V0RGF0ZSgpKzEpLFtpLHJdfXJldHVybiB0fSxlLnByb3RvdHlwZS5zY2FsZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZDNTY2FsZSh0KX0sZS5wcm90b3R5cGUuc2NhbGVUcmFuc2Zvcm1hdGlvbj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5zY2FsZShuZXcgRGF0ZSh0KSl9LGUucHJvdG90eXBlLmludmVydGVkVHJhbnNmb3JtYXRpb249ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuaW52ZXJ0KHQpLmdldFRpbWUoKX0sZS5wcm90b3R5cGUuZ2V0VHJhbnNmb3JtYXRpb25FeHRlbnQ9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9nZXRVbmJvdW5kZWRFeHRlbnQoITApO3JldHVyblt0WzBdLnZhbHVlT2YoKSx0WzFdLnZhbHVlT2YoKV19LGUucHJvdG90eXBlLmdldFRyYW5zZm9ybWF0aW9uRG9tYWluPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5kb21haW4oKTtyZXR1cm5bdFswXS52YWx1ZU9mKCksdFsxXS52YWx1ZU9mKCldfSxlLnByb3RvdHlwZS5zZXRUcmFuc2Zvcm1hdGlvbkRvbWFpbj1mdW5jdGlvbih0KXt2YXIgZT10WzFdO3RoaXMuZG9tYWluKFtuZXcgRGF0ZSh0WzBdKSxuZXcgRGF0ZShlKV0pfSxlLnByb3RvdHlwZS5fZ2V0RG9tYWluPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2JhY2tpbmdTY2FsZURvbWFpbigpfSxlLnByb3RvdHlwZS5fYmFja2luZ1NjYWxlRG9tYWluPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX2QzU2NhbGUuZG9tYWluKCk6KHRoaXMuX2QzU2NhbGUuZG9tYWluKHQpLHRoaXMpfSxlLnByb3RvdHlwZS5fZ2V0UmFuZ2U9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZDNTY2FsZS5yYW5nZSgpfSxlLnByb3RvdHlwZS5fc2V0UmFuZ2U9ZnVuY3Rpb24odCl7dGhpcy5fZDNTY2FsZS5yYW5nZSh0KX0sZS5wcm90b3R5cGUuaW52ZXJ0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9kM1NjYWxlLmludmVydCh0KX0sZS5wcm90b3R5cGUuZGVmYXVsdFRpY2tzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2QzU2NhbGUudGlja3MoZS5fREVGQVVMVF9OVU1fVElDS1MpfSxlLnByb3RvdHlwZS5fbmljZURvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZDNTY2FsZS5jb3B5KCkuZG9tYWluKHQpLm5pY2UoKS5kb21haW4oKX0sZS50aW1lSW50ZXJ2YWxUb0QzVGltZT1mdW5jdGlvbih0LGUpe3N3aXRjaCh0KXtjYXNlIEpidC5UaW1lSW50ZXJ2YWwuc2Vjb25kOnJldHVybiBlP1pidC51dGNTZWNvbmQ6WmJ0LnRpbWVTZWNvbmQ7Y2FzZSBKYnQuVGltZUludGVydmFsLm1pbnV0ZTpyZXR1cm4gZT9aYnQudXRjTWludXRlOlpidC50aW1lTWludXRlO2Nhc2UgSmJ0LlRpbWVJbnRlcnZhbC5ob3VyOnJldHVybiBlP1pidC51dGNIb3VyOlpidC50aW1lSG91cjtjYXNlIEpidC5UaW1lSW50ZXJ2YWwuZGF5OnJldHVybiBlP1pidC51dGNEYXk6WmJ0LnRpbWVEYXk7Y2FzZSBKYnQuVGltZUludGVydmFsLndlZWs6cmV0dXJuIGU/WmJ0LnV0Y1dlZWs6WmJ0LnRpbWVXZWVrO2Nhc2UgSmJ0LlRpbWVJbnRlcnZhbC5tb250aDpyZXR1cm4gZT9aYnQudXRjTW9udGg6WmJ0LnRpbWVNb250aDtjYXNlIEpidC5UaW1lSW50ZXJ2YWwueWVhcjpyZXR1cm4gZT9aYnQudXRjWWVhcjpaYnQudGltZVllYXI7ZGVmYXVsdDp0aHJvdyBFcnJvcigiVGltZUludGVydmFsIHNwZWNpZmllZCBkb2VzIG5vdCBleGlzdDogIit0KX19LGV9KShMYnQuUXVhbnRpdGF0aXZlU2NhbGUpOyRidC5UaW1lPVFidCwoZnVuY3Rpb24odCl7Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgZT1CTzt0LlRpY2tHZW5lcmF0b3JzPSR2dCxlLl9fZXhwb3J0U3RhcihRdnQsdCksZS5fX2V4cG9ydFN0YXIoX2J0LHQpLGUuX19leHBvcnRTdGFyKE1idCx0KSxlLl9fZXhwb3J0U3RhcihrYnQsdCksZS5fX2V4cG9ydFN0YXIoSGJ0LHQpLGUuX19leHBvcnRTdGFyKGpidCx0KSxlLl9fZXhwb3J0U3RhcigkYnQsdCk7dmFyIG49UXZ0LGk9TGJ0O3QuaXNUcmFuc2Zvcm1hYmxlPWZ1bmN0aW9uIHIodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBpLlF1YW50aXRhdGl2ZVNjYWxlfHx0IGluc3RhbmNlb2Ygbi5DYXRlZ29yeX19KShYdnQpLChmdW5jdGlvbih0KXsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBlPUJPLG49d3B0LGk9TGd0LHI9cHZ0LG89WHZ0LGE9RF90LHM9Ymd0LGw9ZHZ0O3QuVGltZUludGVydmFsPXMubWFrZUVudW0oWyJzZWNvbmQiLCJtaW51dGUiLCJob3VyIiwiZGF5Iiwid2VlayIsIm1vbnRoIiwieWVhciJdKSx0LlRpbWVBeGlzT3JpZW50YXRpb249cy5tYWtlRW51bShbInRvcCIsImJvdHRvbSJdKSx0LlRpZXJMYWJlbFBvc2l0aW9uPXMubWFrZUVudW0oWyJiZXR3ZWVuIiwiY2VudGVyIl0pO3ZhciBjLHU9KGZ1bmN0aW9uKHMpe2Z1bmN0aW9uIHUodCxlLG4pe3ZhciBpPXMuY2FsbCh0aGlzLHQsZSl8fHRoaXM7cmV0dXJuIGkuX21heFRpbWVJbnRlcnZhbFByZWNpc2lvbj1udWxsLGkuX3RpZXJMYWJlbFBvc2l0aW9ucz1bXSxpLl91c2VVVEM9bixpLmFkZENsYXNzKCJ0aW1lLWF4aXMiKSxpLnRpY2tMYWJlbFBhZGRpbmcoNSksaS5heGlzQ29uZmlndXJhdGlvbnModS5fREVGQVVMVF9USU1FX0FYSVNfQ09ORklHVVJBVElPTlMoaS5fdXNlVVRDKSksaS5hbm5vdGF0aW9uRm9ybWF0dGVyKHIudGltZSgiJWEgJWIgJWQsICVZIixpLl91c2VVVEMpKSxpfXJldHVybiBlLl9fZXh0ZW5kcyh1LHMpLHUucHJvdG90eXBlLnRpZXJMYWJlbFBvc2l0aW9ucz1mdW5jdGlvbih0KXtpZihudWxsPT10KXJldHVybiB0aGlzLl90aWVyTGFiZWxQb3NpdGlvbnM7aWYoIXQuZXZlcnkoKGZ1bmN0aW9uKHQpe3JldHVybiJiZXR3ZWVuIj09PXQudG9Mb3dlckNhc2UoKXx8ImNlbnRlciI9PT10LnRvTG93ZXJDYXNlKCl9KSkpdGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBwb3NpdGlvbiBmb3IgdGllciBsYWJlbHMiKTtyZXR1cm4gdGhpcy5fdGllckxhYmVsUG9zaXRpb25zPXQsdGhpcy5yZWRyYXcoKSx0aGlzfSx1LnByb3RvdHlwZS5tYXhUaW1lSW50ZXJ2YWxQcmVjaXNpb249ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fbWF4VGltZUludGVydmFsUHJlY2lzaW9uOih0aGlzLl9tYXhUaW1lSW50ZXJ2YWxQcmVjaXNpb249dCx0aGlzLnJlZHJhdygpLHRoaXMpfSx1LnByb3RvdHlwZS5jdXJyZW50QXhpc0NvbmZpZ3VyYXRpb249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcG9zc2libGVUaW1lQXhpc0NvbmZpZ3VyYXRpb25zW3RoaXMuX21vc3RQcmVjaXNlQ29uZmlnSW5kZXhdfSx1LnByb3RvdHlwZS5heGlzQ29uZmlndXJhdGlvbnM9ZnVuY3Rpb24odCl7aWYobnVsbD09dClyZXR1cm4gdGhpcy5fcG9zc2libGVUaW1lQXhpc0NvbmZpZ3VyYXRpb25zO3RoaXMuX3Bvc3NpYmxlVGltZUF4aXNDb25maWd1cmF0aW9ucz10LHRoaXMuX251bVRpZXJzPWEuTWF0aC5tYXgodGhpcy5fcG9zc2libGVUaW1lQXhpc0NvbmZpZ3VyYXRpb25zLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQubGVuZ3RofSkpLDApLHRoaXMuX2lzQW5jaG9yZWQmJnRoaXMuX3NldHVwRG9tRWxlbWVudHMoKTtmb3IodmFyIGU9dGhpcy50aWVyTGFiZWxQb3NpdGlvbnMoKSxuPVtdLGk9MDtpPHRoaXMuX251bVRpZXJzO2krKyluLnB1c2goZVtpXXx8ImJldHdlZW4iKTtyZXR1cm4gdGhpcy50aWVyTGFiZWxQb3NpdGlvbnMobiksdGhpcy5yZWRyYXcoKSx0aGlzfSx1LnByb3RvdHlwZS5fZ2V0TW9zdFByZWNpc2VDb25maWd1cmF0aW9uSW5kZXg9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy5fcG9zc2libGVUaW1lQXhpc0NvbmZpZ3VyYXRpb25zLmxlbmd0aDtyZXR1cm4gdGhpcy5fcG9zc2libGVUaW1lQXhpc0NvbmZpZ3VyYXRpb25zLmZvckVhY2goKGZ1bmN0aW9uKG4saSl7aTxlJiZuLmV2ZXJ5KChmdW5jdGlvbihlKXtyZXR1cm4gdC5fY2hlY2tUaW1lQXhpc1RpZXJDb25maWd1cmF0aW9uKGUpfSkpJiYoZT1pKX0pKSxlPT09dGhpcy5fcG9zc2libGVUaW1lQXhpc0NvbmZpZ3VyYXRpb25zLmxlbmd0aCYmKGEuV2luZG93Lndhcm4oInpvb21lZCBvdXQgdG9vIGZhcjogY291bGQgbm90IGZpbmQgc3VpdGFibGUgaW50ZXJ2YWwgdG8gZGlzcGxheSBsYWJlbHMiKSwtLWUpLGV9LHUucHJvdG90eXBlLm9yaWVudGF0aW9uPWZ1bmN0aW9uKHQpe2lmKHQmJigicmlnaHQiPT09dC50b0xvd2VyQ2FzZSgpfHwibGVmdCI9PT10LnRvTG93ZXJDYXNlKCkpKXRocm93IG5ldyBFcnJvcih0KyIgaXMgbm90IGEgc3VwcG9ydGVkIG9yaWVudGF0aW9uIGZvciBUaW1lQXhpcyAtIG9ubHkgaG9yaXpvbnRhbCBvcmllbnRhdGlvbnMgYXJlIHN1cHBvcnRlZCIpO3JldHVybiBzLnByb3RvdHlwZS5vcmllbnRhdGlvbi5jYWxsKHRoaXMsdCl9LHUucHJvdG90eXBlLl9jb21wdXRlSGVpZ2h0PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fbWVhc3VyZXIubWVhc3VyZSgpLmhlaWdodDt0aGlzLl90aWVySGVpZ2h0cz1bXTtmb3IodmFyIGU9MDtlPHRoaXMuX251bVRpZXJzO2UrKyl0aGlzLl90aWVySGVpZ2h0cy5wdXNoKHQrdGhpcy50aWNrTGFiZWxQYWRkaW5nKCkrKCJiZXR3ZWVuIj09PXRoaXMuX3RpZXJMYWJlbFBvc2l0aW9uc1tlXT8wOnRoaXMuX21heExhYmVsVGlja0xlbmd0aCgpKSk7cmV0dXJuIG4uc3VtKHRoaXMuX3RpZXJIZWlnaHRzKX0sdS5wcm90b3R5cGUuX2dldEludGVydmFsTGVuZ3RoPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3NjYWxlLmRvbWFpbigpWzBdLG49by5UaW1lLnRpbWVJbnRlcnZhbFRvRDNUaW1lKHQuaW50ZXJ2YWwsdGhpcy5fdXNlVVRDKS5vZmZzZXQoZSx0LnN0ZXApO3JldHVybiBuPnRoaXMuX3NjYWxlLmRvbWFpbigpWzFdP3RoaXMud2lkdGgoKTpNYXRoLmFicyh0aGlzLl9zY2FsZS5zY2FsZShuKS10aGlzLl9zY2FsZS5zY2FsZShlKSl9LHUucHJvdG90eXBlLl9tYXhXaWR0aEZvckludGVydmFsPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9tZWFzdXJlci5tZWFzdXJlKHQuZm9ybWF0dGVyKHUuX0xPTkdfREFURSkpLndpZHRofSx1LnByb3RvdHlwZS5fY2hlY2tUaW1lQXhpc1RpZXJDb25maWd1cmF0aW9uPWZ1bmN0aW9uKHQpe2lmKG51bGwhPXRoaXMuX21heFRpbWVJbnRlcnZhbFByZWNpc2lvbil7dmFyIGU9dS5fU09SVEVEX1RJTUVfSU5URVJWQUxfSU5ERVhbdGhpcy5fbWF4VGltZUludGVydmFsUHJlY2lzaW9uXSxuPXUuX1NPUlRFRF9USU1FX0lOVEVSVkFMX0lOREVYW3QuaW50ZXJ2YWxdO2lmKG51bGwhPWUmJm51bGwhPW4mJm48ZSlyZXR1cm4hMX12YXIgaT10aGlzLl9tYXhXaWR0aEZvckludGVydmFsKHQpKzIqdGhpcy50aWNrTGFiZWxQYWRkaW5nKCk7cmV0dXJuIE1hdGgubWluKHRoaXMuX2dldEludGVydmFsTGVuZ3RoKHQpLHRoaXMud2lkdGgoKSk+PWl9LHUucHJvdG90eXBlLl9zaXplRnJvbU9mZmVyPWZ1bmN0aW9uKHQsZSl7dmFyIG49cy5wcm90b3R5cGUuX3NpemVGcm9tT2ZmZXIuY2FsbCh0aGlzLHQsZSksaT10aGlzLl90aWVySGVpZ2h0cy5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSxpLHIpe3JldHVybiB0K2U+bi5oZWlnaHQ/dDp0K2V9KSkscj10aGlzLm1hcmdpbigpKyh0aGlzLmFubm90YXRpb25zRW5hYmxlZCgpP3RoaXMuYW5ub3RhdGlvblRpZXJDb3VudCgpKnRoaXMuX2Fubm90YXRpb25UaWVySGVpZ2h0KCk6MCk7cmV0dXJuIG4uaGVpZ2h0PU1hdGgubWluKG4uaGVpZ2h0LGkrciksbn0sdS5wcm90b3R5cGUuX3NldHVwPWZ1bmN0aW9uKCl7cy5wcm90b3R5cGUuX3NldHVwLmNhbGwodGhpcyksdGhpcy5fc2V0dXBEb21FbGVtZW50cygpfSx1LnByb3RvdHlwZS5fc2V0dXBEb21FbGVtZW50cz1mdW5jdGlvbigpe3RoaXMuY29udGVudCgpLnNlbGVjdEFsbCgiLiIrdS5USU1FX0FYSVNfVElFUl9DTEFTUykucmVtb3ZlKCksdGhpcy5fdGllckxhYmVsQ29udGFpbmVycz1bXSx0aGlzLl90aWVyTWFya0NvbnRhaW5lcnM9W10sdGhpcy5fdGllckJhc2VsaW5lcz1bXSx0aGlzLl90aWNrTGFiZWxDb250YWluZXIucmVtb3ZlKCksdGhpcy5fYmFzZWxpbmUucmVtb3ZlKCk7Zm9yKHZhciB0PTA7dDx0aGlzLl9udW1UaWVyczsrK3Qpe3ZhciBlPXRoaXMuY29udGVudCgpLmFwcGVuZCgiZyIpLmNsYXNzZWQodS5USU1FX0FYSVNfVElFUl9DTEFTUywhMCk7dGhpcy5fdGllckxhYmVsQ29udGFpbmVycy5wdXNoKGUuYXBwZW5kKCJnIikuY2xhc3NlZChsLkF4aXMuVElDS19MQUJFTF9DTEFTUysiLWNvbnRhaW5lciIsITApKSx0aGlzLl90aWVyTWFya0NvbnRhaW5lcnMucHVzaChlLmFwcGVuZCgiZyIpLmNsYXNzZWQobC5BeGlzLlRJQ0tfTUFSS19DTEFTUysiLWNvbnRhaW5lciIsITApKSx0aGlzLl90aWVyQmFzZWxpbmVzLnB1c2goZS5hcHBlbmQoImxpbmUiKS5jbGFzc2VkKCJiYXNlbGluZSIsITApKX12YXIgbj1uZXcgaS5TdmdDb250ZXh0KHRoaXMuX3RpZXJMYWJlbENvbnRhaW5lcnNbMF0ubm9kZSgpKTt0aGlzLl9tZWFzdXJlcj1uZXcgaS5DYWNoZU1lYXN1cmVyKG4pfSx1LnByb3RvdHlwZS5fZ2V0VGlja0ludGVydmFsVmFsdWVzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9zY2FsZS50aWNrSW50ZXJ2YWwodC5pbnRlcnZhbCx0LnN0ZXAsdGhpcy5fdXNlVVRDKX0sdS5wcm90b3R5cGUuX2dldFRpY2tWYWx1ZXM9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3JldHVybiB0aGlzLl9wb3NzaWJsZVRpbWVBeGlzQ29uZmlndXJhdGlvbnNbdGhpcy5fbW9zdFByZWNpc2VDb25maWdJbmRleF0ucmVkdWNlKChmdW5jdGlvbihlLG4pe3JldHVybiBlLmNvbmNhdCh0Ll9nZXRUaWNrSW50ZXJ2YWxWYWx1ZXMobikpfSksW10pfSx1LnByb3RvdHlwZS5fY2xlYW5UaWVycz1mdW5jdGlvbigpe2Zvcih2YXIgdD0wO3Q8dGhpcy5fdGllckxhYmVsQ29udGFpbmVycy5sZW5ndGg7dCsrKXRoaXMuX3RpZXJMYWJlbENvbnRhaW5lcnNbdF0uc2VsZWN0QWxsKCIuIitsLkF4aXMuVElDS19MQUJFTF9DTEFTUykucmVtb3ZlKCksdGhpcy5fdGllck1hcmtDb250YWluZXJzW3RdLnNlbGVjdEFsbCgiLiIrbC5BeGlzLlRJQ0tfTUFSS19DTEFTUykucmVtb3ZlKCksdGhpcy5fdGllckJhc2VsaW5lc1t0XS5zdHlsZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpfSx1LnByb3RvdHlwZS5fZ2V0VGlja1ZhbHVlc0ZvckNvbmZpZ3VyYXRpb249ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fc2NhbGUudGlja0ludGVydmFsKHQuaW50ZXJ2YWwsdC5zdGVwLHRoaXMuX3VzZVVUQyksbj10aGlzLl9zY2FsZS5kb21haW4oKSxpPWUubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC52YWx1ZU9mKCl9KSk7cmV0dXJuLTE9PT1pLmluZGV4T2YoblswXS52YWx1ZU9mKCkpJiZlLnVuc2hpZnQoblswXSksLTE9PT1pLmluZGV4T2YoblsxXS52YWx1ZU9mKCkpJiZlLnB1c2goblsxXSksZX0sdS5wcm90b3R5cGUuX3JlbmRlclRpZXJMYWJlbHM9ZnVuY3Rpb24odCxlLGkpe3ZhciByPXRoaXMsbz10aGlzLl9nZXRUaWNrVmFsdWVzRm9yQ29uZmlndXJhdGlvbihlKSxhPVtdOyJiZXR3ZWVuIj09PXRoaXMuX3RpZXJMYWJlbFBvc2l0aW9uc1tpXSYmMT09PWUuc3RlcD9vLm1hcCgoZnVuY3Rpb24odCxlKXtlKzE+PW8ubGVuZ3RofHxhLnB1c2gobmV3IERhdGUoKG9bZSsxXS52YWx1ZU9mKCktb1tlXS52YWx1ZU9mKCkpLzIrb1tlXS52YWx1ZU9mKCkpKX0pKTphPW87dmFyIHM9dC5zZWxlY3RBbGwoIi4iK2wuQXhpcy5USUNLX0xBQkVMX0NMQVNTKS5kYXRhKGEsKGZ1bmN0aW9uKHQpe3JldHVybiBTdHJpbmcodC52YWx1ZU9mKCkpfSkpLGM9cy5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQobC5BeGlzLlRJQ0tfTEFCRUxfQ0xBU1MsITApO2MuYXBwZW5kKCJ0ZXh0Iik7dmFyIHUsaD0iY2VudGVyIj09PXRoaXMuX3RpZXJMYWJlbFBvc2l0aW9uc1tpXXx8MT09PWUuc3RlcD8wOnRoaXMudGlja0xhYmVsUGFkZGluZygpO3U9ImJvdHRvbSI9PT10aGlzLm9yaWVudGF0aW9uKCk/bi5zdW0odGhpcy5fdGllckhlaWdodHMuc2xpY2UoMCxpKzEpKS10aGlzLnRpY2tMYWJlbFBhZGRpbmcoKToiY2VudGVyIj09PXRoaXMuX3RpZXJMYWJlbFBvc2l0aW9uc1tpXT90aGlzLmhlaWdodCgpLW4uc3VtKHRoaXMuX3RpZXJIZWlnaHRzLnNsaWNlKDAsaSkpLXRoaXMudGlja0xhYmVsUGFkZGluZygpLXRoaXMuX21heExhYmVsVGlja0xlbmd0aCgpOnRoaXMuaGVpZ2h0KCktbi5zdW0odGhpcy5fdGllckhlaWdodHMuc2xpY2UoMCxpKSktdGhpcy50aWNrTGFiZWxQYWRkaW5nKCk7dmFyIGQ9cy5tZXJnZShjKSxwPWQuc2VsZWN0QWxsKCJ0ZXh0Iik7cC5zaXplKCk+MCYmcC5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitoKyIsIit1KyIpIikscy5leGl0KCkucmVtb3ZlKCksZC5hdHRyKCJ0cmFuc2Zvcm0iLChmdW5jdGlvbih0KXtyZXR1cm4idHJhbnNsYXRlKCIrci5fc2NhbGUuc2NhbGUodCkrIiwwKSJ9KSk7dmFyIGY9ImNlbnRlciI9PT10aGlzLl90aWVyTGFiZWxQb3NpdGlvbnNbaV18fDE9PT1lLnN0ZXA/Im1pZGRsZSI6InN0YXJ0IjtkLnNlbGVjdEFsbCgidGV4dCIpLnRleHQoZS5mb3JtYXR0ZXIpLnN0eWxlKCJ0ZXh0LWFuY2hvciIsZil9LHUucHJvdG90eXBlLl9yZW5kZXJUaWNrTWFya3M9ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLl90aWVyTWFya0NvbnRhaW5lcnNbZV0uc2VsZWN0QWxsKCIuIitsLkF4aXMuVElDS19NQVJLX0NMQVNTKS5kYXRhKHQpLHI9aS5lbnRlcigpLmFwcGVuZCgibGluZSIpLmNsYXNzZWQobC5BeGlzLlRJQ0tfTUFSS19DTEFTUywhMCkubWVyZ2UoaSksbz10aGlzLl9nZW5lcmF0ZVRpY2tNYXJrQXR0ckhhc2goKSxhPXRoaXMuX3RpZXJIZWlnaHRzLnNsaWNlKDAsZSkucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0K2V9KSwwKTsiYm90dG9tIj09PXRoaXMub3JpZW50YXRpb24oKT8oby55MT1hLG8ueTI9YSsoImNlbnRlciI9PT10aGlzLl90aWVyTGFiZWxQb3NpdGlvbnNbZV0/dGhpcy5pbm5lclRpY2tMZW5ndGgoKTp0aGlzLl90aWVySGVpZ2h0c1tlXSkpOihvLnkxPXRoaXMuaGVpZ2h0KCktYSxvLnkyPXRoaXMuaGVpZ2h0KCktKGErKCJjZW50ZXIiPT09dGhpcy5fdGllckxhYmVsUG9zaXRpb25zW2VdP3RoaXMuaW5uZXJUaWNrTGVuZ3RoKCk6dGhpcy5fdGllckhlaWdodHNbZV0pKSksci5hdHRycyhvKSwiYm90dG9tIj09PXRoaXMub3JpZW50YXRpb24oKT8oby55MT1hLG8ueTI9YSsoImNlbnRlciI9PT10aGlzLl90aWVyTGFiZWxQb3NpdGlvbnNbZV0/dGhpcy5lbmRUaWNrTGVuZ3RoKCk6dGhpcy5fdGllckhlaWdodHNbZV0pKTooby55MT10aGlzLmhlaWdodCgpLWEsby55Mj10aGlzLmhlaWdodCgpLShhKygiY2VudGVyIj09PXRoaXMuX3RpZXJMYWJlbFBvc2l0aW9uc1tlXT90aGlzLmVuZFRpY2tMZW5ndGgoKTp0aGlzLl90aWVySGVpZ2h0c1tlXSkpKSxuLnNlbGVjdChyLm5vZGVzKClbMF0pLmF0dHJzKG8pLG4uc2VsZWN0KHIubm9kZXMoKVtyLnNpemUoKS0xXSkuYXR0cnMobyksbi5zZWxlY3Qoci5ub2RlcygpWzBdKS5jbGFzc2VkKGwuQXhpcy5FTkRfVElDS19NQVJLX0NMQVNTLCEwKSxuLnNlbGVjdChyLm5vZGVzKClbci5zaXplKCktMV0pLmNsYXNzZWQobC5BeGlzLkVORF9USUNLX01BUktfQ0xBU1MsITApLGkuZXhpdCgpLnJlbW92ZSgpfSx1LnByb3RvdHlwZS5fcmVuZGVyTGFiZWxsZXNzVGlja01hcmtzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3RpY2tNYXJrQ29udGFpbmVyLnNlbGVjdEFsbCgiLiIrbC5BeGlzLlRJQ0tfTUFSS19DTEFTUykuZGF0YSh0KSxuPWUuZW50ZXIoKS5hcHBlbmQoImxpbmUiKS5jbGFzc2VkKGwuQXhpcy5USUNLX01BUktfQ0xBU1MsITApLm1lcmdlKGUpLGk9dGhpcy5fZ2VuZXJhdGVUaWNrTWFya0F0dHJIYXNoKCk7aS55Mj0iYm90dG9tIj09PXRoaXMub3JpZW50YXRpb24oKT90aGlzLnRpY2tMYWJlbFBhZGRpbmcoKTp0aGlzLmhlaWdodCgpLXRoaXMudGlja0xhYmVsUGFkZGluZygpLG4uYXR0cnMoaSksZS5leGl0KCkucmVtb3ZlKCl9LHUucHJvdG90eXBlLl9nZW5lcmF0ZUxhYmVsbGVzc1RpY2tzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21vc3RQcmVjaXNlQ29uZmlnSW5kZXg8MT9bXTp0aGlzLl9nZXRUaWNrSW50ZXJ2YWxWYWx1ZXModGhpcy5fcG9zc2libGVUaW1lQXhpc0NvbmZpZ3VyYXRpb25zW3RoaXMuX21vc3RQcmVjaXNlQ29uZmlnSW5kZXgtMV1bMF0pfSx1LnByb3RvdHlwZS5yZW5kZXJJbW1lZGlhdGVseT1mdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5fbW9zdFByZWNpc2VDb25maWdJbmRleD10aGlzLl9nZXRNb3N0UHJlY2lzZUNvbmZpZ3VyYXRpb25JbmRleCgpO3ZhciBlPXRoaXMuX3Bvc3NpYmxlVGltZUF4aXNDb25maWd1cmF0aW9uc1t0aGlzLl9tb3N0UHJlY2lzZUNvbmZpZ0luZGV4XTt0aGlzLl9jbGVhblRpZXJzKCksZS5mb3JFYWNoKChmdW5jdGlvbihlLG4pe3JldHVybiB0Ll9yZW5kZXJUaWVyTGFiZWxzKHQuX3RpZXJMYWJlbENvbnRhaW5lcnNbbl0sZSxuKX0pKTtmb3IodmFyIG49ZS5tYXAoKGZ1bmN0aW9uKGUsbil7cmV0dXJuIHQuX2dldFRpY2tWYWx1ZXNGb3JDb25maWd1cmF0aW9uKGUpfSkpLGk9MCxyPTA7cjxNYXRoLm1heChlLmxlbmd0aCwxKTsrK3Ipe3ZhciBvPXRoaXMuX2dlbmVyYXRlQmFzZWxpbmVBdHRySGFzaCgpO28ueTErPSJib3R0b20iPT09dGhpcy5vcmllbnRhdGlvbigpP2k6LWksby55Mj1vLnkxLHRoaXMuX3RpZXJCYXNlbGluZXNbcl0uYXR0cnMobykuc3R5bGUoInZpc2liaWxpdHkiLCJpbmhlcml0IiksaSs9dGhpcy5fdGllckhlaWdodHNbcl19dmFyIGE9W10scz10aGlzLl9zY2FsZS5kb21haW4oKSxsPXRoaXMuX3NjYWxlLnNjYWxlKHNbMV0pLXRoaXMuX3NjYWxlLnNjYWxlKHNbMF0pOzEuNSp0aGlzLl9nZXRJbnRlcnZhbExlbmd0aChlWzBdKT49bCYmKGE9dGhpcy5fZ2VuZXJhdGVMYWJlbGxlc3NUaWNrcygpKSx0aGlzLl9yZW5kZXJMYWJlbGxlc3NUaWNrTWFya3MoYSksdGhpcy5faGlkZU92ZXJmbG93aW5nVGllcnMoKTtmb3Iocj0wO3I8ZS5sZW5ndGg7KytyKXRoaXMuX3JlbmRlclRpY2tNYXJrcyhuW3JdLHIpLHRoaXMuX2hpZGVPdmVybGFwcGluZ0FuZEN1dE9mZkxhYmVscyhyKTtyZXR1cm4gdGhpcy5hbm5vdGF0aW9uc0VuYWJsZWQoKT90aGlzLl9kcmF3QW5ub3RhdGlvbnMoKTp0aGlzLl9yZW1vdmVBbm5vdGF0aW9ucygpLHRoaXN9LHUucHJvdG90eXBlLl9oaWRlT3ZlcmZsb3dpbmdUaWVycz1mdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLmhlaWdodCgpLG49MDt0aGlzLmNvbnRlbnQoKS5zZWxlY3RBbGwoIi4iK3UuVElNRV9BWElTX1RJRVJfQ0xBU1MpLmF0dHIoInZpc2liaWxpdHkiLChmdW5jdGlvbihpLHIpe3JldHVybihuKz10Ll90aWVySGVpZ2h0c1tyXSk8PWU/ImluaGVyaXQiOiJoaWRkZW4ifSkpfSx1LnByb3RvdHlwZS5faGlkZU92ZXJsYXBwaW5nQW5kQ3V0T2ZmTGFiZWxzPWZ1bmN0aW9uKHQpe3ZhciBlLGk9dGhpcyxyPXRoaXMuZWxlbWVudCgpLm5vZGUoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxvPXRoaXMuX3RpZXJNYXJrQ29udGFpbmVyc1t0XS5zZWxlY3RBbGwoIi4iK2wuQXhpcy5USUNLX01BUktfQ0xBU1MpLmZpbHRlcigoZnVuY3Rpb24odCxlKXt2YXIgaT1uLnNlbGVjdCh0aGlzKS5zdHlsZSgidmlzaWJpbGl0eSIpO3JldHVybiJ2aXNpYmxlIj09PWl8fCJpbmhlcml0Ij09PWl9KSkubm9kZXMoKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpfSkpO3RoaXMuX3RpZXJMYWJlbENvbnRhaW5lcnNbdF0uc2VsZWN0QWxsKCIuIitsLkF4aXMuVElDS19MQUJFTF9DTEFTUykuZmlsdGVyKChmdW5jdGlvbih0LGUpe3ZhciBpPW4uc2VsZWN0KHRoaXMpLnN0eWxlKCJ2aXNpYmlsaXR5Iik7cmV0dXJuInZpc2libGUiPT09aXx8ImluaGVyaXQiPT09aX0pKS5lYWNoKChmdW5jdGlvbih0LHMpe3ZhciBsLGM9dGhpcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx1PW4uc2VsZWN0KHRoaXMpLGg9b1tzXSxkPW9bcysxXSxwPW51bGwhPWUmJmEuRE9NLmNsaWVudFJlY3RzT3ZlcmxhcChjLGUpLGY9bnVsbCE9aCYmYS5ET00uY2xpZW50UmVjdHNPdmVybGFwKGMsaCksbT1udWxsIT1kJiZhLkRPTS5jbGllbnRSZWN0c092ZXJsYXAoYyxkKTtsPWMsIShNYXRoLmZsb29yKHIubGVmdCk8PU1hdGguY2VpbChsLmxlZnQpJiZNYXRoLmZsb29yKHIudG9wKTw9TWF0aC5jZWlsKGwudG9wKSYmTWF0aC5mbG9vcihsLnJpZ2h0KTw9TWF0aC5jZWlsKHIubGVmdCtpLndpZHRoKCkpJiZNYXRoLmZsb29yKGwuYm90dG9tKTw9TWF0aC5jZWlsKHIudG9wK2kuaGVpZ2h0KCkpKXx8cHx8Znx8bT91LnN0eWxlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik6KGU9Yyx1LnN0eWxlKCJ2aXNpYmlsaXR5IiwiaW5oZXJpdCIpKX0pKX0sdS5wcm90b3R5cGUuaW52YWxpZGF0ZUNhY2hlPWZ1bmN0aW9uKCl7cy5wcm90b3R5cGUuaW52YWxpZGF0ZUNhY2hlLmNhbGwodGhpcyksdGhpcy5fbWVhc3VyZXIucmVzZXQoKX0sdS5USU1FX0FYSVNfVElFUl9DTEFTUz0idGltZS1heGlzLXRpZXIiLHUuX1NPUlRFRF9USU1FX0lOVEVSVkFMX0lOREVYPSgoYz17fSlbdC5UaW1lSW50ZXJ2YWwuc2Vjb25kXT0wLGNbdC5UaW1lSW50ZXJ2YWwubWludXRlXT0xLGNbdC5UaW1lSW50ZXJ2YWwuaG91cl09MixjW3QuVGltZUludGVydmFsLmRheV09MyxjW3QuVGltZUludGVydmFsLndlZWtdPTQsY1t0LlRpbWVJbnRlcnZhbC5tb250aF09NSxjW3QuVGltZUludGVydmFsLnllYXJdPTYsYyksdS5fREVGQVVMVF9USU1FX0FYSVNfQ09ORklHVVJBVElPTlM9ZnVuY3Rpb24oZSl7dmFyIG49ZnVuY3Rpb24odCl7cmV0dXJuIHIudGltZSh0LGUpfTtyZXR1cm5bW3tpbnRlcnZhbDp0LlRpbWVJbnRlcnZhbC5zZWNvbmQsc3RlcDoxLGZvcm1hdHRlcjpuKCIlSTolTTolUyAlcCIpfSx7aW50ZXJ2YWw6dC5UaW1lSW50ZXJ2YWwuZGF5LHN0ZXA6MSxmb3JtYXR0ZXI6bigiJUIgJWUsICVZIil9XSxbe2ludGVydmFsOnQuVGltZUludGVydmFsLnNlY29uZCxzdGVwOjUsZm9ybWF0dGVyOm4oIiVJOiVNOiVTICVwIil9LHtpbnRlcnZhbDp0LlRpbWVJbnRlcnZhbC5kYXksc3RlcDoxLGZvcm1hdHRlcjpuKCIlQiAlZSwgJVkiKX1dLFt7aW50ZXJ2YWw6dC5UaW1lSW50ZXJ2YWwuc2Vjb25kLHN0ZXA6MTAsZm9ybWF0dGVyOm4oIiVJOiVNOiVTICVwIil9LHtpbnRlcnZhbDp0LlRpbWVJbnRlcnZhbC5kYXksc3RlcDoxLGZvcm1hdHRlcjpuKCIlQiAlZSwgJVkiKX1dLFt7aW50ZXJ2YWw6dC5UaW1lSW50ZXJ2YWwuc2Vjb25kLHN0ZXA6MTUsZm9ybWF0dGVyOm4oIiVJOiVNOiVTICVwIil9LHtpbnRlcnZhbDp0LlRpbWVJbnRlcnZhbC5kYXksc3RlcDoxLGZvcm1hdHRlcjpuKCIlQiAlZSwgJVkiKX1dLFt7aW50ZXJ2YWw6dC5UaW1lSW50ZXJ2YWwuc2Vjb25kLHN0ZXA6MzAsZm9ybWF0dGVyOm4oIiVJOiVNOiVTICVwIil9LHtpbnRlcnZhbDp0LlRpbWVJbnRlcnZhbC5kYXksc3RlcDoxLGZvcm1hdHRlcjpuKCIlQiAlZSwgJVkiKX1dLFt7aW50ZXJ2YWw6dC5UaW1lSW50ZXJ2YWwubWludXRlLHN0ZXA6MSxmb3JtYXR0ZXI6bigiJUk6JU0gJXAiKX0se2ludGVydmFsOnQuVGltZUludGVydmFsLmRheSxzdGVwOjEsZm9ybWF0dGVyOm4oIiVCICVlLCAlWSIpfV0sW3tpbnRlcnZhbDp0LlRpbWVJbnRlcnZhbC5taW51dGUsc3RlcDo1LGZvcm1hdHRlcjpuKCIlSTolTSAlcCIpfSx7aW50ZXJ2YWw6dC5UaW1lSW50ZXJ2YWwuZGF5LHN0ZXA6MSxmb3JtYXR0ZXI6bigiJUIgJWUsICVZIil9XSxbe2ludGVydmFsOnQuVGltZUludGVydmFsLm1pbnV0ZSxzdGVwOjEwLGZvcm1hdHRlcjpuKCIlSTolTSAlcCIpfSx7aW50ZXJ2YWw6dC5UaW1lSW50ZXJ2YWwuZGF5LHN0ZXA6MSxmb3JtYXR0ZXI6bigiJUIgJWUsICVZIil9XSxbe2ludGVydmFsOnQuVGltZUludGVydmFsLm1pbnV0ZSxzdGVwOjE1LGZvcm1hdHRlcjpuKCIlSTolTSAlcCIpfSx7aW50ZXJ2YWw6dC5UaW1lSW50ZXJ2YWwuZGF5LHN0ZXA6MSxmb3JtYXR0ZXI6bigiJUIgJWUsICVZIil9XSxbe2ludGVydmFsOnQuVGltZUludGVydmFsLm1pbnV0ZSxzdGVwOjMwLGZvcm1hdHRlcjpuKCIlSTolTSAlcCIpfSx7aW50ZXJ2YWw6dC5UaW1lSW50ZXJ2YWwuZGF5LHN0ZXA6MSxmb3JtYXR0ZXI6bigiJUIgJWUsICVZIil9XSxbe2ludGVydmFsOnQuVGltZUludGVydmFsLmhvdXIsc3RlcDoxLGZvcm1hdHRlcjpuKCIlSSAlcCIpfSx7aW50ZXJ2YWw6dC5UaW1lSW50ZXJ2YWwuZGF5LHN0ZXA6MSxmb3JtYXR0ZXI6bigiJUIgJWUsICVZIil9XSxbe2ludGVydmFsOnQuVGltZUludGVydmFsLmhvdXIsc3RlcDozLGZvcm1hdHRlcjpuKCIlSSAlcCIpfSx7aW50ZXJ2YWw6dC5UaW1lSW50ZXJ2YWwuZGF5LHN0ZXA6MSxmb3JtYXR0ZXI6bigiJUIgJWUsICVZIil9XSxbe2ludGVydmFsOnQuVGltZUludGVydmFsLmhvdXIsc3RlcDo2LGZvcm1hdHRlcjpuKCIlSSAlcCIpfSx7aW50ZXJ2YWw6dC5UaW1lSW50ZXJ2YWwuZGF5LHN0ZXA6MSxmb3JtYXR0ZXI6bigiJUIgJWUsICVZIil9XSxbe2ludGVydmFsOnQuVGltZUludGVydmFsLmhvdXIsc3RlcDoxMixmb3JtYXR0ZXI6bigiJUkgJXAiKX0se2ludGVydmFsOnQuVGltZUludGVydmFsLmRheSxzdGVwOjEsZm9ybWF0dGVyOm4oIiVCICVlLCAlWSIpfV0sW3tpbnRlcnZhbDp0LlRpbWVJbnRlcnZhbC5kYXksc3RlcDoxLGZvcm1hdHRlcjpuKCIlYSAlZSIpfSx7aW50ZXJ2YWw6dC5UaW1lSW50ZXJ2YWwubW9udGgsc3RlcDoxLGZvcm1hdHRlcjpuKCIlQiAlWSIpfV0sW3tpbnRlcnZhbDp0LlRpbWVJbnRlcnZhbC5kYXksc3RlcDoxLGZvcm1hdHRlcjpuKCIlZSIpfSx7aW50ZXJ2YWw6dC5UaW1lSW50ZXJ2YWwubW9udGgsc3RlcDoxLGZvcm1hdHRlcjpuKCIlQiAlWSIpfV0sW3tpbnRlcnZhbDp0LlRpbWVJbnRlcnZhbC5tb250aCxzdGVwOjEsZm9ybWF0dGVyOm4oIiVCIil9LHtpbnRlcnZhbDp0LlRpbWVJbnRlcnZhbC55ZWFyLHN0ZXA6MSxmb3JtYXR0ZXI6bigiJVkiKX1dLFt7aW50ZXJ2YWw6dC5UaW1lSW50ZXJ2YWwubW9udGgsc3RlcDoxLGZvcm1hdHRlcjpuKCIlYiIpfSx7aW50ZXJ2YWw6dC5UaW1lSW50ZXJ2YWwueWVhcixzdGVwOjEsZm9ybWF0dGVyOm4oIiVZIil9XSxbe2ludGVydmFsOnQuVGltZUludGVydmFsLm1vbnRoLHN0ZXA6Myxmb3JtYXR0ZXI6bigiJWIiKX0se2ludGVydmFsOnQuVGltZUludGVydmFsLnllYXIsc3RlcDoxLGZvcm1hdHRlcjpuKCIlWSIpfV0sW3tpbnRlcnZhbDp0LlRpbWVJbnRlcnZhbC5tb250aCxzdGVwOjYsZm9ybWF0dGVyOm4oIiViIil9LHtpbnRlcnZhbDp0LlRpbWVJbnRlcnZhbC55ZWFyLHN0ZXA6MSxmb3JtYXR0ZXI6bigiJVkiKX1dLFt7aW50ZXJ2YWw6dC5UaW1lSW50ZXJ2YWwueWVhcixzdGVwOjEsZm9ybWF0dGVyOm4oIiVZIil9XSxbe2ludGVydmFsOnQuVGltZUludGVydmFsLnllYXIsc3RlcDoxLGZvcm1hdHRlcjpuKCIleSIpfV0sW3tpbnRlcnZhbDp0LlRpbWVJbnRlcnZhbC55ZWFyLHN0ZXA6NSxmb3JtYXR0ZXI6bigiJVkiKX1dLFt7aW50ZXJ2YWw6dC5UaW1lSW50ZXJ2YWwueWVhcixzdGVwOjI1LGZvcm1hdHRlcjpuKCIlWSIpfV0sW3tpbnRlcnZhbDp0LlRpbWVJbnRlcnZhbC55ZWFyLHN0ZXA6NTAsZm9ybWF0dGVyOm4oIiVZIil9XSxbe2ludGVydmFsOnQuVGltZUludGVydmFsLnllYXIsc3RlcDoxMDAsZm9ybWF0dGVyOm4oIiVZIil9XSxbe2ludGVydmFsOnQuVGltZUludGVydmFsLnllYXIsc3RlcDoyMDAsZm9ybWF0dGVyOm4oIiVZIil9XSxbe2ludGVydmFsOnQuVGltZUludGVydmFsLnllYXIsc3RlcDo1MDAsZm9ybWF0dGVyOm4oIiVZIil9XSxbe2ludGVydmFsOnQuVGltZUludGVydmFsLnllYXIsc3RlcDoxZTMsZm9ybWF0dGVyOm4oIiVZIil9XV19LHUuX0xPTkdfREFURT1uZXcgRGF0ZSg5OTk5LDgsMjksMTIsNTksOTk5OSksdX0pKGwuQXhpcyk7dC5UaW1lPXV9KShZdnQpLChmdW5jdGlvbih0KXsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBlPUJPO2UuX19leHBvcnRTdGFyKGtndCx0KSxlLl9fZXhwb3J0U3RhcihIdnQsdCksZS5fX2V4cG9ydFN0YXIoWXZ0LHQpfSkoQWd0KTt2YXIgdHh0PXt9LGV4dD17fSxueHQ9e30saXh0PXt9LHJ4dD17fSxveHQ9e30sYXh0PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoYXh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgc3h0PURfdCxseHQ9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3RoaXMuX2V2ZW50VG9Qcm9jZXNzaW5nRnVuY3Rpb249e30sdGhpcy5fZXZlbnRUYXJnZXQ9ZG9jdW1lbnQsdGhpcy5fZXZlbnROYW1lVG9DYWxsYmFja1NldD17fSx0aGlzLl9jb25uZWN0ZWQ9ITF9cmV0dXJuIHQucHJvdG90eXBlLl9oYXNOb0NhbGxiYWNrcz1mdW5jdGlvbigpe2Zvcih2YXIgdD1PYmplY3Qua2V5cyh0aGlzLl9ldmVudE5hbWVUb0NhbGxiYWNrU2V0KSxlPTA7ZTx0Lmxlbmd0aDtlKyspaWYoMCE9PXRoaXMuX2V2ZW50TmFtZVRvQ2FsbGJhY2tTZXRbdFtlXV0uc2l6ZSlyZXR1cm4hMTtyZXR1cm4hMH0sdC5wcm90b3R5cGUuX2Nvbm5lY3Q9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3RoaXMuX2Nvbm5lY3RlZHx8KE9iamVjdC5rZXlzKHRoaXMuX2V2ZW50VG9Qcm9jZXNzaW5nRnVuY3Rpb24pLmZvckVhY2goKGZ1bmN0aW9uKGUpe3QuX2V2ZW50VGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoZSx0Ll9ldmVudFRvUHJvY2Vzc2luZ0Z1bmN0aW9uW2VdLCJ3aGVlbCI9PT1lP3twYXNzaXZlOiExfTp2b2lkIDApfSkpLHRoaXMuX2Nvbm5lY3RlZD0hMCl9LHQucHJvdG90eXBlLl9kaXNjb25uZWN0PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0aGlzLl9jb25uZWN0ZWQmJnRoaXMuX2hhc05vQ2FsbGJhY2tzKCkmJihPYmplY3Qua2V5cyh0aGlzLl9ldmVudFRvUHJvY2Vzc2luZ0Z1bmN0aW9uKS5mb3JFYWNoKChmdW5jdGlvbihlKXt0Ll9ldmVudFRhcmdldC5yZW1vdmVFdmVudExpc3RlbmVyKGUsdC5fZXZlbnRUb1Byb2Nlc3NpbmdGdW5jdGlvbltlXSl9KSksdGhpcy5fY29ubmVjdGVkPSExKX0sdC5wcm90b3R5cGUuX2FkZENhbGxiYWNrRm9yRXZlbnQ9ZnVuY3Rpb24odCxlKXtudWxsPT10aGlzLl9ldmVudE5hbWVUb0NhbGxiYWNrU2V0W3RdJiYodGhpcy5fZXZlbnROYW1lVG9DYWxsYmFja1NldFt0XT1uZXcgc3h0LkNhbGxiYWNrU2V0KSx0aGlzLl9ldmVudE5hbWVUb0NhbGxiYWNrU2V0W3RdLmFkZChlKSx0aGlzLl9jb25uZWN0KCl9LHQucHJvdG90eXBlLl9yZW1vdmVDYWxsYmFja0ZvckV2ZW50PWZ1bmN0aW9uKHQsZSl7bnVsbCE9dGhpcy5fZXZlbnROYW1lVG9DYWxsYmFja1NldFt0XSYmdGhpcy5fZXZlbnROYW1lVG9DYWxsYmFja1NldFt0XS5kZWxldGUoZSksdGhpcy5fZGlzY29ubmVjdCgpfSx0LnByb3RvdHlwZS5fY2FsbENhbGxiYWNrc0ZvckV2ZW50PWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1bXSxuPTE7bjxhcmd1bWVudHMubGVuZ3RoO24rKyllW24tMV09YXJndW1lbnRzW25dO3ZhciBpPXRoaXMuX2V2ZW50TmFtZVRvQ2FsbGJhY2tTZXRbdF07bnVsbCE9aSYmaS5jYWxsQ2FsbGJhY2tzLmFwcGx5KGksZSl9LHR9KSgpO2F4dC5EaXNwYXRjaGVyPWx4dCwKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KG94dCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGN4dD1CTyx1eHQ9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt2YXIgbj10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIG4uX2V2ZW50VG9Qcm9jZXNzaW5nRnVuY3Rpb25bZS5fS0VZRE9XTl9FVkVOVF9OQU1FXT1mdW5jdGlvbih0KXtyZXR1cm4gbi5fcHJvY2Vzc0tleWRvd24odCl9LG4uX2V2ZW50VG9Qcm9jZXNzaW5nRnVuY3Rpb25bZS5fS0VZVVBfRVZFTlRfTkFNRV09ZnVuY3Rpb24odCl7cmV0dXJuIG4uX3Byb2Nlc3NLZXl1cCh0KX0sbn1yZXR1cm4gY3h0Ll9fZXh0ZW5kcyhlLHQpLGUuZ2V0RGlzcGF0Y2hlcj1mdW5jdGlvbigpe3ZhciB0PWRvY3VtZW50W2UuX0RJU1BBVENIRVJfS0VZXTtyZXR1cm4gbnVsbD09dCYmKHQ9bmV3IGUsZG9jdW1lbnRbZS5fRElTUEFUQ0hFUl9LRVldPXQpLHR9LGUucHJvdG90eXBlLl9wcm9jZXNzS2V5ZG93bj1mdW5jdGlvbih0KXt0aGlzLl9jYWxsQ2FsbGJhY2tzRm9yRXZlbnQoZS5fS0VZRE9XTl9FVkVOVF9OQU1FLHQua2V5Q29kZSx0KX0sZS5wcm90b3R5cGUuX3Byb2Nlc3NLZXl1cD1mdW5jdGlvbih0KXt0aGlzLl9jYWxsQ2FsbGJhY2tzRm9yRXZlbnQoZS5fS0VZVVBfRVZFTlRfTkFNRSx0LmtleUNvZGUsdCl9LGUucHJvdG90eXBlLm9uS2V5RG93bj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fYWRkQ2FsbGJhY2tGb3JFdmVudChlLl9LRVlET1dOX0VWRU5UX05BTUUsdCksdGhpc30sZS5wcm90b3R5cGUub2ZmS2V5RG93bj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcmVtb3ZlQ2FsbGJhY2tGb3JFdmVudChlLl9LRVlET1dOX0VWRU5UX05BTUUsdCksdGhpc30sZS5wcm90b3R5cGUub25LZXlVcD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fYWRkQ2FsbGJhY2tGb3JFdmVudChlLl9LRVlVUF9FVkVOVF9OQU1FLHQpLHRoaXN9LGUucHJvdG90eXBlLm9mZktleVVwPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9yZW1vdmVDYWxsYmFja0ZvckV2ZW50KGUuX0tFWVVQX0VWRU5UX05BTUUsdCksdGhpc30sZS5fRElTUEFUQ0hFUl9LRVk9Il9fUGxvdHRhYmxlX0Rpc3BhdGNoZXJfS2V5IixlLl9LRVlET1dOX0VWRU5UX05BTUU9ImtleWRvd24iLGUuX0tFWVVQX0VWRU5UX05BTUU9ImtleXVwIixlfSkoYXh0LkRpc3BhdGNoZXIpO294dC5LZXk9dXh0O3ZhciBoeHQ9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovT2JqZWN0LmRlZmluZVByb3BlcnR5KGh4dCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGR4dD1CTyxweHQ9RF90LGZ4dD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShuKXt2YXIgaT10LmNhbGwodGhpcyl8fHRoaXM7aS5fbGFzdE1vdXNlUG9zaXRpb249e3g6LTEseTotMX0saS5fdHJhbnNsYXRvcj1weHQuZ2V0VHJhbnNsYXRvcihuKTt2YXIgcj1mdW5jdGlvbih0KXtyZXR1cm4gaS5fbWVhc3VyZUFuZERpc3BhdGNoKG4sdCxlLl9NT1VTRU1PVkVfRVZFTlRfTkFNRSwicGFnZSIpfTtyZXR1cm4gaS5fZXZlbnRUb1Byb2Nlc3NpbmdGdW5jdGlvbltlLl9NT1VTRU9WRVJfRVZFTlRfTkFNRV09cixpLl9ldmVudFRvUHJvY2Vzc2luZ0Z1bmN0aW9uW2UuX01PVVNFTU9WRV9FVkVOVF9OQU1FXT1yLGkuX2V2ZW50VG9Qcm9jZXNzaW5nRnVuY3Rpb25bZS5fTU9VU0VPVVRfRVZFTlRfTkFNRV09cixpLl9ldmVudFRvUHJvY2Vzc2luZ0Z1bmN0aW9uW2UuX01PVVNFRE9XTl9FVkVOVF9OQU1FXT1mdW5jdGlvbih0KXtyZXR1cm4gaS5fbWVhc3VyZUFuZERpc3BhdGNoKG4sdCxlLl9NT1VTRURPV05fRVZFTlRfTkFNRSl9LGkuX2V2ZW50VG9Qcm9jZXNzaW5nRnVuY3Rpb25bZS5fTU9VU0VVUF9FVkVOVF9OQU1FXT1mdW5jdGlvbih0KXtyZXR1cm4gaS5fbWVhc3VyZUFuZERpc3BhdGNoKG4sdCxlLl9NT1VTRVVQX0VWRU5UX05BTUUsInBhZ2UiKX0saS5fZXZlbnRUb1Byb2Nlc3NpbmdGdW5jdGlvbltlLl9XSEVFTF9FVkVOVF9OQU1FXT1mdW5jdGlvbih0KXtyZXR1cm4gaS5fbWVhc3VyZUFuZERpc3BhdGNoKG4sdCxlLl9XSEVFTF9FVkVOVF9OQU1FKX0saS5fZXZlbnRUb1Byb2Nlc3NpbmdGdW5jdGlvbltlLl9EQkxDTElDS19FVkVOVF9OQU1FXT1mdW5jdGlvbih0KXtyZXR1cm4gaS5fbWVhc3VyZUFuZERpc3BhdGNoKG4sdCxlLl9EQkxDTElDS19FVkVOVF9OQU1FKX0saX1yZXR1cm4gZHh0Ll9fZXh0ZW5kcyhlLHQpLGUuZ2V0RGlzcGF0Y2hlcj1mdW5jdGlvbih0KXt2YXIgbj10LnJvb3QoKS5yb290RWxlbWVudCgpLGk9bltlLl9ESVNQQVRDSEVSX0tFWV07cmV0dXJuIG51bGw9PWkmJihpPW5ldyBlKHQpLG5bZS5fRElTUEFUQ0hFUl9LRVldPWkpLGl9LGUucHJvdG90eXBlLm9uTW91c2VNb3ZlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9hZGRDYWxsYmFja0ZvckV2ZW50KGUuX01PVVNFTU9WRV9FVkVOVF9OQU1FLHQpLHRoaXN9LGUucHJvdG90eXBlLm9mZk1vdXNlTW92ZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcmVtb3ZlQ2FsbGJhY2tGb3JFdmVudChlLl9NT1VTRU1PVkVfRVZFTlRfTkFNRSx0KSx0aGlzfSxlLnByb3RvdHlwZS5vbk1vdXNlRG93bj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fYWRkQ2FsbGJhY2tGb3JFdmVudChlLl9NT1VTRURPV05fRVZFTlRfTkFNRSx0KSx0aGlzfSxlLnByb3RvdHlwZS5vZmZNb3VzZURvd249ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3JlbW92ZUNhbGxiYWNrRm9yRXZlbnQoZS5fTU9VU0VET1dOX0VWRU5UX05BTUUsdCksdGhpc30sZS5wcm90b3R5cGUub25Nb3VzZVVwPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9hZGRDYWxsYmFja0ZvckV2ZW50KGUuX01PVVNFVVBfRVZFTlRfTkFNRSx0KSx0aGlzfSxlLnByb3RvdHlwZS5vZmZNb3VzZVVwPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9yZW1vdmVDYWxsYmFja0ZvckV2ZW50KGUuX01PVVNFVVBfRVZFTlRfTkFNRSx0KSx0aGlzfSxlLnByb3RvdHlwZS5vbldoZWVsPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9hZGRDYWxsYmFja0ZvckV2ZW50KGUuX1dIRUVMX0VWRU5UX05BTUUsdCksdGhpc30sZS5wcm90b3R5cGUub2ZmV2hlZWw9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3JlbW92ZUNhbGxiYWNrRm9yRXZlbnQoZS5fV0hFRUxfRVZFTlRfTkFNRSx0KSx0aGlzfSxlLnByb3RvdHlwZS5vbkRibENsaWNrPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9hZGRDYWxsYmFja0ZvckV2ZW50KGUuX0RCTENMSUNLX0VWRU5UX05BTUUsdCksdGhpc30sZS5wcm90b3R5cGUub2ZmRGJsQ2xpY2s9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3JlbW92ZUNhbGxiYWNrRm9yRXZlbnQoZS5fREJMQ0xJQ0tfRVZFTlRfTkFNRSx0KSx0aGlzfSxlLnByb3RvdHlwZS5fbWVhc3VyZUFuZERpc3BhdGNoPWZ1bmN0aW9uKHQsZSxuLGkpe2lmKHZvaWQgMD09PWkmJihpPSJlbGVtZW50IiksInBhZ2UiIT09aSYmImVsZW1lbnQiIT09aSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgc2NvcGUgJyIraSsiJywgbXVzdCBiZSAnZWxlbWVudCcgb3IgJ3BhZ2UnIik7aWYoInBhZ2UiPT09aXx8dGhpcy5ldmVudEluc2lkZSh0LGUpKXt2YXIgcj10aGlzLl90cmFuc2xhdG9yLmNvbXB1dGVQb3NpdGlvbihlLmNsaWVudFgsZS5jbGllbnRZKTt0aGlzLl9sYXN0TW91c2VQb3NpdGlvbj1yLHRoaXMuX2NhbGxDYWxsYmFja3NGb3JFdmVudChuLHRoaXMubGFzdE1vdXNlUG9zaXRpb24oKSxlKX19LGUucHJvdG90eXBlLmV2ZW50SW5zaWRlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHB4dC5UcmFuc2xhdG9yLmlzRXZlbnRJbnNpZGUodCxlKX0sZS5wcm90b3R5cGUubGFzdE1vdXNlUG9zaXRpb249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbGFzdE1vdXNlUG9zaXRpb259LGUuX0RJU1BBVENIRVJfS0VZPSJfX1Bsb3R0YWJsZV9EaXNwYXRjaGVyX01vdXNlIixlLl9NT1VTRU9WRVJfRVZFTlRfTkFNRT0ibW91c2VvdmVyIixlLl9NT1VTRU1PVkVfRVZFTlRfTkFNRT0ibW91c2Vtb3ZlIixlLl9NT1VTRU9VVF9FVkVOVF9OQU1FPSJtb3VzZW91dCIsZS5fTU9VU0VET1dOX0VWRU5UX05BTUU9Im1vdXNlZG93biIsZS5fTU9VU0VVUF9FVkVOVF9OQU1FPSJtb3VzZXVwIixlLl9XSEVFTF9FVkVOVF9OQU1FPSJ3aGVlbCIsZS5fREJMQ0xJQ0tfRVZFTlRfTkFNRT0iZGJsY2xpY2siLGV9KShheHQuRGlzcGF0Y2hlcik7aHh0Lk1vdXNlPWZ4dDt2YXIgbXh0PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqL09iamVjdC5kZWZpbmVQcm9wZXJ0eShteHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBneHQ9Qk8sX3h0PURfdCx5eHQ9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUobil7dmFyIGk9dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBpLl90cmFuc2xhdG9yPV94dC5nZXRUcmFuc2xhdG9yKG4pLGkuX2V2ZW50VG9Qcm9jZXNzaW5nRnVuY3Rpb25bZS5fVE9VQ0hTVEFSVF9FVkVOVF9OQU1FXT1mdW5jdGlvbih0KXtyZXR1cm4gaS5fbWVhc3VyZUFuZERpc3BhdGNoKG4sdCxlLl9UT1VDSFNUQVJUX0VWRU5UX05BTUUsInBhZ2UiKX0saS5fZXZlbnRUb1Byb2Nlc3NpbmdGdW5jdGlvbltlLl9UT1VDSE1PVkVfRVZFTlRfTkFNRV09ZnVuY3Rpb24odCl7cmV0dXJuIGkuX21lYXN1cmVBbmREaXNwYXRjaChuLHQsZS5fVE9VQ0hNT1ZFX0VWRU5UX05BTUUsInBhZ2UiKX0saS5fZXZlbnRUb1Byb2Nlc3NpbmdGdW5jdGlvbltlLl9UT1VDSEVORF9FVkVOVF9OQU1FXT1mdW5jdGlvbih0KXtyZXR1cm4gaS5fbWVhc3VyZUFuZERpc3BhdGNoKG4sdCxlLl9UT1VDSEVORF9FVkVOVF9OQU1FLCJwYWdlIil9LGkuX2V2ZW50VG9Qcm9jZXNzaW5nRnVuY3Rpb25bZS5fVE9VQ0hDQU5DRUxfRVZFTlRfTkFNRV09ZnVuY3Rpb24odCl7cmV0dXJuIGkuX21lYXN1cmVBbmREaXNwYXRjaChuLHQsZS5fVE9VQ0hDQU5DRUxfRVZFTlRfTkFNRSwicGFnZSIpfSxpfXJldHVybiBneHQuX19leHRlbmRzKGUsdCksZS5nZXREaXNwYXRjaGVyPWZ1bmN0aW9uKHQpe3ZhciBuPXQucm9vdCgpLnJvb3RFbGVtZW50KCksaT1uW2UuX0RJU1BBVENIRVJfS0VZXTtyZXR1cm4gbnVsbD09aSYmKGk9bmV3IGUodCksbltlLl9ESVNQQVRDSEVSX0tFWV09aSksaX0sZS5wcm90b3R5cGUub25Ub3VjaFN0YXJ0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9hZGRDYWxsYmFja0ZvckV2ZW50KGUuX1RPVUNIU1RBUlRfRVZFTlRfTkFNRSx0KSx0aGlzfSxlLnByb3RvdHlwZS5vZmZUb3VjaFN0YXJ0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9yZW1vdmVDYWxsYmFja0ZvckV2ZW50KGUuX1RPVUNIU1RBUlRfRVZFTlRfTkFNRSx0KSx0aGlzfSxlLnByb3RvdHlwZS5vblRvdWNoTW92ZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fYWRkQ2FsbGJhY2tGb3JFdmVudChlLl9UT1VDSE1PVkVfRVZFTlRfTkFNRSx0KSx0aGlzfSxlLnByb3RvdHlwZS5vZmZUb3VjaE1vdmU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3JlbW92ZUNhbGxiYWNrRm9yRXZlbnQoZS5fVE9VQ0hNT1ZFX0VWRU5UX05BTUUsdCksdGhpc30sZS5wcm90b3R5cGUub25Ub3VjaEVuZD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fYWRkQ2FsbGJhY2tGb3JFdmVudChlLl9UT1VDSEVORF9FVkVOVF9OQU1FLHQpLHRoaXN9LGUucHJvdG90eXBlLm9mZlRvdWNoRW5kPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9yZW1vdmVDYWxsYmFja0ZvckV2ZW50KGUuX1RPVUNIRU5EX0VWRU5UX05BTUUsdCksdGhpc30sZS5wcm90b3R5cGUub25Ub3VjaENhbmNlbD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fYWRkQ2FsbGJhY2tGb3JFdmVudChlLl9UT1VDSENBTkNFTF9FVkVOVF9OQU1FLHQpLHRoaXN9LGUucHJvdG90eXBlLm9mZlRvdWNoQ2FuY2VsPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9yZW1vdmVDYWxsYmFja0ZvckV2ZW50KGUuX1RPVUNIQ0FOQ0VMX0VWRU5UX05BTUUsdCksdGhpc30sZS5wcm90b3R5cGUuX21lYXN1cmVBbmREaXNwYXRjaD1mdW5jdGlvbih0LGUsbixpKXtpZih2b2lkIDA9PT1pJiYoaT0iZWxlbWVudCIpLCJwYWdlIiE9PWkmJiJlbGVtZW50IiE9PWkpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHNjb3BlICciK2krIicsIG11c3QgYmUgJ2VsZW1lbnQnIG9yICdwYWdlJyIpO2lmKCJlbGVtZW50IiE9PWl8fHRoaXMuZXZlbnRJbnNpZGUodCxlKSl7Zm9yKHZhciByPWUuY2hhbmdlZFRvdWNoZXMsbz17fSxhPVtdLHM9MDtzPHIubGVuZ3RoO3MrKyl7dmFyIGw9cltzXSxjPWwuaWRlbnRpZmllcix1PXRoaXMuX3RyYW5zbGF0b3IuY29tcHV0ZVBvc2l0aW9uKGwuY2xpZW50WCxsLmNsaWVudFkpO251bGwhPXUmJihvW2NdPXUsYS5wdXNoKGMpKX1hLmxlbmd0aD4wJiZ0aGlzLl9jYWxsQ2FsbGJhY2tzRm9yRXZlbnQobixhLG8sZSl9fSxlLnByb3RvdHlwZS5ldmVudEluc2lkZT1mdW5jdGlvbih0LGUpe3JldHVybiBfeHQuVHJhbnNsYXRvci5pc0V2ZW50SW5zaWRlKHQsZSl9LGUuX0RJU1BBVENIRVJfS0VZPSJfX1Bsb3R0YWJsZV9EaXNwYXRjaGVyX1RvdWNoIixlLl9UT1VDSFNUQVJUX0VWRU5UX05BTUU9InRvdWNoc3RhcnQiLGUuX1RPVUNITU9WRV9FVkVOVF9OQU1FPSJ0b3VjaG1vdmUiLGUuX1RPVUNIRU5EX0VWRU5UX05BTUU9InRvdWNoZW5kIixlLl9UT1VDSENBTkNFTF9FVkVOVF9OQU1FPSJ0b3VjaGNhbmNlbCIsZX0pKGF4dC5EaXNwYXRjaGVyKTtteHQuVG91Y2g9eXh0LChmdW5jdGlvbih0KXsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBlPUJPO2UuX19leHBvcnRTdGFyKG94dCx0KSxlLl9fZXhwb3J0U3RhcihoeHQsdCksZS5fX2V4cG9ydFN0YXIobXh0LHQpfSkocnh0KTt2YXIgdnh0PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqL09iamVjdC5kZWZpbmVQcm9wZXJ0eSh2eHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBieHQ9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3ZhciB0PXRoaXM7dGhpcy5fYW5jaG9yQ2FsbGJhY2s9ZnVuY3Rpb24oZSl7cmV0dXJuIHQuX2FuY2hvcihlKX0sdGhpcy5fZW5hYmxlZD0hMH1yZXR1cm4gdC5wcm90b3R5cGUuYXR0YWNoVG89ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2Rpc2Nvbm5lY3QoKSx0aGlzLl9jb21wb25lbnRBdHRhY2hlZFRvPXQsdGhpcy5fY29ubmVjdCgpLHRoaXN9LHQucHJvdG90eXBlLmRldGFjaEZyb209ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZGV0YWNoKCl9LHQucHJvdG90eXBlLmRldGFjaD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9kaXNjb25uZWN0KCksdGhpcy5fY29tcG9uZW50QXR0YWNoZWRUbz1udWxsLHRoaXN9LHQucHJvdG90eXBlLmVuYWJsZWQ9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fZW5hYmxlZDoodGhpcy5fZW5hYmxlZD10LHRoaXMuX2VuYWJsZWQ/dGhpcy5fY29ubmVjdCgpOnRoaXMuX2Rpc2Nvbm5lY3QoKSx0aGlzKX0sdC5wcm90b3R5cGUuX2FuY2hvcj1mdW5jdGlvbih0KXt0aGlzLl9pc0FuY2hvcmVkPSEwfSx0LnByb3RvdHlwZS5fdW5hbmNob3I9ZnVuY3Rpb24oKXt0aGlzLl9pc0FuY2hvcmVkPSExfSx0LnByb3RvdHlwZS5fdHJhbnNsYXRlVG9Db21wb25lbnRTcGFjZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9jb21wb25lbnRBdHRhY2hlZFRvLm9yaWdpblRvUm9vdCgpO3JldHVybnt4OnQueC1lLngseTp0LnktZS55fX0sdC5wcm90b3R5cGUuX2lzSW5zaWRlQ29tcG9uZW50PWZ1bmN0aW9uKHQpe3JldHVybiAwPD10LngmJjA8PXQueSYmdC54PD10aGlzLl9jb21wb25lbnRBdHRhY2hlZFRvLndpZHRoKCkmJnQueTw9dGhpcy5fY29tcG9uZW50QXR0YWNoZWRUby5oZWlnaHQoKX0sdC5wcm90b3R5cGUuX2Nvbm5lY3Q9ZnVuY3Rpb24oKXt0aGlzLmVuYWJsZWQoKSYmbnVsbCE9dGhpcy5fY29tcG9uZW50QXR0YWNoZWRUbyYmIXRoaXMuX2lzQW5jaG9yZWQmJnRoaXMuX2NvbXBvbmVudEF0dGFjaGVkVG8ub25BbmNob3IodGhpcy5fYW5jaG9yQ2FsbGJhY2spfSx0LnByb3RvdHlwZS5fZGlzY29ubmVjdD1mdW5jdGlvbigpe3RoaXMuX2lzQW5jaG9yZWQmJnRoaXMuX3VuYW5jaG9yKCksbnVsbCE9dGhpcy5fY29tcG9uZW50QXR0YWNoZWRUbyYmdGhpcy5fY29tcG9uZW50QXR0YWNoZWRUby5vZmZBbmNob3IodGhpcy5fYW5jaG9yQ2FsbGJhY2spfSx0fSkoKTt2eHQuSW50ZXJhY3Rpb249Ynh0LAovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoaXh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgeHh0PUJPLHd4dD1yeHQsU3h0PURfdCxNeHQ9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt2YXIgZT1udWxsIT09dCYmdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXM7cmV0dXJuIGUuX2NsaWNrZWREb3duPSExLGUuX2RvdWJsZUNsaWNraW5nPSExLGUuX29uQ2xpY2tDYWxsYmFja3M9bmV3IFN4dC5DYWxsYmFja1NldCxlLl9vbkRvdWJsZUNsaWNrQ2FsbGJhY2tzPW5ldyBTeHQuQ2FsbGJhY2tTZXQsZS5fbW91c2VEb3duQ2FsbGJhY2s9ZnVuY3Rpb24odCxuKXtyZXR1cm4gZS5faGFuZGxlQ2xpY2tEb3duKHQsbil9LGUuX21vdXNlVXBDYWxsYmFjaz1mdW5jdGlvbih0LG4pe3JldHVybiBlLl9oYW5kbGVDbGlja1VwKHQsbil9LGUuX2RibENsaWNrQ2FsbGJhY2s9ZnVuY3Rpb24odCxuKXtyZXR1cm4gZS5faGFuZGxlRGJsQ2xpY2sodCxuKX0sZS5fdG91Y2hTdGFydENhbGxiYWNrPWZ1bmN0aW9uKHQsbixpKXtyZXR1cm4gZS5faGFuZGxlQ2xpY2tEb3duKG5bdFswXV0saSl9LGUuX3RvdWNoRW5kQ2FsbGJhY2s9ZnVuY3Rpb24odCxuLGkpe3JldHVybiBlLl9oYW5kbGVDbGlja1VwKG5bdFswXV0saSl9LGUuX3RvdWNoQ2FuY2VsQ2FsbGJhY2s9ZnVuY3Rpb24odCxuKXtyZXR1cm4gZS5fY2xpY2tlZERvd249ITF9LGV9cmV0dXJuIHh4dC5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5fYW5jaG9yPWZ1bmN0aW9uKGUpe3QucHJvdG90eXBlLl9hbmNob3IuY2FsbCh0aGlzLGUpLHRoaXMuX21vdXNlRGlzcGF0Y2hlcj13eHQuTW91c2UuZ2V0RGlzcGF0Y2hlcihlKSx0aGlzLl9tb3VzZURpc3BhdGNoZXIub25Nb3VzZURvd24odGhpcy5fbW91c2VEb3duQ2FsbGJhY2spLHRoaXMuX21vdXNlRGlzcGF0Y2hlci5vbk1vdXNlVXAodGhpcy5fbW91c2VVcENhbGxiYWNrKSx0aGlzLl9tb3VzZURpc3BhdGNoZXIub25EYmxDbGljayh0aGlzLl9kYmxDbGlja0NhbGxiYWNrKSx0aGlzLl90b3VjaERpc3BhdGNoZXI9d3h0LlRvdWNoLmdldERpc3BhdGNoZXIoZSksdGhpcy5fdG91Y2hEaXNwYXRjaGVyLm9uVG91Y2hTdGFydCh0aGlzLl90b3VjaFN0YXJ0Q2FsbGJhY2spLHRoaXMuX3RvdWNoRGlzcGF0Y2hlci5vblRvdWNoRW5kKHRoaXMuX3RvdWNoRW5kQ2FsbGJhY2spLHRoaXMuX3RvdWNoRGlzcGF0Y2hlci5vblRvdWNoQ2FuY2VsKHRoaXMuX3RvdWNoQ2FuY2VsQ2FsbGJhY2spfSxlLnByb3RvdHlwZS5fdW5hbmNob3I9ZnVuY3Rpb24oKXt0LnByb3RvdHlwZS5fdW5hbmNob3IuY2FsbCh0aGlzKSx0aGlzLl9tb3VzZURpc3BhdGNoZXIub2ZmTW91c2VEb3duKHRoaXMuX21vdXNlRG93bkNhbGxiYWNrKSx0aGlzLl9tb3VzZURpc3BhdGNoZXIub2ZmTW91c2VVcCh0aGlzLl9tb3VzZVVwQ2FsbGJhY2spLHRoaXMuX21vdXNlRGlzcGF0Y2hlci5vZmZEYmxDbGljayh0aGlzLl9kYmxDbGlja0NhbGxiYWNrKSx0aGlzLl9tb3VzZURpc3BhdGNoZXI9bnVsbCx0aGlzLl90b3VjaERpc3BhdGNoZXIub2ZmVG91Y2hTdGFydCh0aGlzLl90b3VjaFN0YXJ0Q2FsbGJhY2spLHRoaXMuX3RvdWNoRGlzcGF0Y2hlci5vZmZUb3VjaEVuZCh0aGlzLl90b3VjaEVuZENhbGxiYWNrKSx0aGlzLl90b3VjaERpc3BhdGNoZXIub2ZmVG91Y2hDYW5jZWwodGhpcy5fdG91Y2hDYW5jZWxDYWxsYmFjayksdGhpcy5fdG91Y2hEaXNwYXRjaGVyPW51bGx9LGUucHJvdG90eXBlLl9oYW5kbGVDbGlja0Rvd249ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLl90cmFuc2xhdGVUb0NvbXBvbmVudFNwYWNlKHQpO3RoaXMuX2lzSW5zaWRlQ29tcG9uZW50KG4pJiYodGhpcy5fY2xpY2tlZERvd249ITAsdGhpcy5fY2xpY2tlZFBvaW50PW4pfSxlLnByb3RvdHlwZS5faGFuZGxlQ2xpY2tVcD1mdW5jdGlvbih0LG4pe3ZhciBpPXRoaXMscj10aGlzLl90cmFuc2xhdGVUb0NvbXBvbmVudFNwYWNlKHQpO3RoaXMuX2NsaWNrZWREb3duJiZlLl9wb2ludHNFcXVhbChyLHRoaXMuX2NsaWNrZWRQb2ludCkmJnNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7aS5fZG91YmxlQ2xpY2tpbmd8fGkuX29uQ2xpY2tDYWxsYmFja3MuY2FsbENhbGxiYWNrcyhyLG4pfSksMCksdGhpcy5fY2xpY2tlZERvd249ITF9LGUucHJvdG90eXBlLl9oYW5kbGVEYmxDbGljaz1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMsaT10aGlzLl90cmFuc2xhdGVUb0NvbXBvbmVudFNwYWNlKHQpO3RoaXMuX2RvdWJsZUNsaWNraW5nPSEwLHRoaXMuX29uRG91YmxlQ2xpY2tDYWxsYmFja3MuY2FsbENhbGxiYWNrcyhpLGUpLHNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7cmV0dXJuIG4uX2RvdWJsZUNsaWNraW5nPSExfSksMCl9LGUuX3BvaW50c0VxdWFsPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQueD09PWUueCYmdC55PT09ZS55fSxlLnByb3RvdHlwZS5vbkNsaWNrPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9vbkNsaWNrQ2FsbGJhY2tzLmFkZCh0KSx0aGlzfSxlLnByb3RvdHlwZS5vZmZDbGljaz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fb25DbGlja0NhbGxiYWNrcy5kZWxldGUodCksdGhpc30sZS5wcm90b3R5cGUub25Eb3VibGVDbGljaz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fb25Eb3VibGVDbGlja0NhbGxiYWNrcy5hZGQodCksdGhpc30sZS5wcm90b3R5cGUub2ZmRG91YmxlQ2xpY2s9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX29uRG91YmxlQ2xpY2tDYWxsYmFja3MuZGVsZXRlKHQpLHRoaXN9LGV9KSh2eHQuSW50ZXJhY3Rpb24pO2l4dC5DbGljaz1NeHQ7dmFyIEV4dD17fTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi9PYmplY3QuZGVmaW5lUHJvcGVydHkoRXh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgVHh0PUJPLEN4dD1yeHQsQXh0PURfdCxreHQ9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUobil7dmFyIGk9dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBpLl9kcmFnZ2luZz0hMSxpLl9jb25zdHJhaW5lZFRvQ29tcG9uZW50PSEwLGkuX21vdXNlRmlsdGVyPWUuX0RFRkFVTFRfTU9VU0VfRklMVEVSLGkuX2RyYWdTdGFydENhbGxiYWNrcz1uZXcgQXh0LkNhbGxiYWNrU2V0LGkuX2RyYWdDYWxsYmFja3M9bmV3IEF4dC5DYWxsYmFja1NldCxpLl9kcmFnRW5kQ2FsbGJhY2tzPW5ldyBBeHQuQ2FsbGJhY2tTZXQsaS5fbW91c2VEb3duQ2FsbGJhY2s9ZnVuY3Rpb24odCxlKXtyZXR1cm4gaS5fc3RhcnREcmFnKHQsZSl9LGkuX21vdXNlTW92ZUNhbGxiYWNrPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGkuX2RvRHJhZyh0LGUpfSxpLl9tb3VzZVVwQ2FsbGJhY2s9ZnVuY3Rpb24odCxlKXtyZXR1cm4gaS5fZW5kRHJhZyh0LGUpfSxpLl90b3VjaFN0YXJ0Q2FsbGJhY2s9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBpLl9zdGFydERyYWcoZVt0WzBdXSxuKX0saS5fdG91Y2hNb3ZlQ2FsbGJhY2s9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBpLl9kb0RyYWcoZVt0WzBdXSxuKX0saS5fdG91Y2hFbmRDYWxsYmFjaz1mdW5jdGlvbih0LGUsbil7cmV0dXJuIGkuX2VuZERyYWcoZVt0WzBdXSxuKX0saS5fbW91c2VCdXR0b249dm9pZCAwIT09bj9uOjAsaX1yZXR1cm4gVHh0Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLl9hbmNob3I9ZnVuY3Rpb24oZSl7dC5wcm90b3R5cGUuX2FuY2hvci5jYWxsKHRoaXMsZSksdGhpcy5fbW91c2VEaXNwYXRjaGVyPUN4dC5Nb3VzZS5nZXREaXNwYXRjaGVyKHRoaXMuX2NvbXBvbmVudEF0dGFjaGVkVG8pLHRoaXMuX21vdXNlRGlzcGF0Y2hlci5vbk1vdXNlRG93bih0aGlzLl9tb3VzZURvd25DYWxsYmFjayksdGhpcy5fbW91c2VEaXNwYXRjaGVyLm9uTW91c2VNb3ZlKHRoaXMuX21vdXNlTW92ZUNhbGxiYWNrKSx0aGlzLl9tb3VzZURpc3BhdGNoZXIub25Nb3VzZVVwKHRoaXMuX21vdXNlVXBDYWxsYmFjayksdGhpcy5fdG91Y2hEaXNwYXRjaGVyPUN4dC5Ub3VjaC5nZXREaXNwYXRjaGVyKHRoaXMuX2NvbXBvbmVudEF0dGFjaGVkVG8pLHRoaXMuX3RvdWNoRGlzcGF0Y2hlci5vblRvdWNoU3RhcnQodGhpcy5fdG91Y2hTdGFydENhbGxiYWNrKSx0aGlzLl90b3VjaERpc3BhdGNoZXIub25Ub3VjaE1vdmUodGhpcy5fdG91Y2hNb3ZlQ2FsbGJhY2spLHRoaXMuX3RvdWNoRGlzcGF0Y2hlci5vblRvdWNoRW5kKHRoaXMuX3RvdWNoRW5kQ2FsbGJhY2spfSxlLnByb3RvdHlwZS5fdW5hbmNob3I9ZnVuY3Rpb24oKXt0LnByb3RvdHlwZS5fdW5hbmNob3IuY2FsbCh0aGlzKSx0aGlzLl9tb3VzZURpc3BhdGNoZXIub2ZmTW91c2VEb3duKHRoaXMuX21vdXNlRG93bkNhbGxiYWNrKSx0aGlzLl9tb3VzZURpc3BhdGNoZXIub2ZmTW91c2VNb3ZlKHRoaXMuX21vdXNlTW92ZUNhbGxiYWNrKSx0aGlzLl9tb3VzZURpc3BhdGNoZXIub2ZmTW91c2VVcCh0aGlzLl9tb3VzZVVwQ2FsbGJhY2spLHRoaXMuX21vdXNlRGlzcGF0Y2hlcj1udWxsLHRoaXMuX3RvdWNoRGlzcGF0Y2hlci5vZmZUb3VjaFN0YXJ0KHRoaXMuX3RvdWNoU3RhcnRDYWxsYmFjayksdGhpcy5fdG91Y2hEaXNwYXRjaGVyLm9mZlRvdWNoTW92ZSh0aGlzLl90b3VjaE1vdmVDYWxsYmFjayksdGhpcy5fdG91Y2hEaXNwYXRjaGVyLm9mZlRvdWNoRW5kKHRoaXMuX3RvdWNoRW5kQ2FsbGJhY2spLHRoaXMuX3RvdWNoRGlzcGF0Y2hlcj1udWxsfSxlLnByb3RvdHlwZS5fdHJhbnNsYXRlQW5kQ29uc3RyYWluPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3RyYW5zbGF0ZVRvQ29tcG9uZW50U3BhY2UodCk7cmV0dXJuIHRoaXMuX2NvbnN0cmFpbmVkVG9Db21wb25lbnQ/e3g6QXh0Lk1hdGguY2xhbXAoZS54LDAsdGhpcy5fY29tcG9uZW50QXR0YWNoZWRUby53aWR0aCgpKSx5OkF4dC5NYXRoLmNsYW1wKGUueSwwLHRoaXMuX2NvbXBvbmVudEF0dGFjaGVkVG8uaGVpZ2h0KCkpfTplfSxlLnByb3RvdHlwZS5fc3RhcnREcmFnPWZ1bmN0aW9uKHQsZSl7aWYoIShlIGluc3RhbmNlb2YgTW91c2VFdmVudCl8fHRoaXMuX21vdXNlRmlsdGVyKGUpKXt2YXIgbj10aGlzLl90cmFuc2xhdGVUb0NvbXBvbmVudFNwYWNlKHQpO3RoaXMuX2lzSW5zaWRlQ29tcG9uZW50KG4pJiYoZS5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuX2RyYWdnaW5nPSEwLHRoaXMuX2RyYWdPcmlnaW49bix0aGlzLl9kcmFnU3RhcnRDYWxsYmFja3MuY2FsbENhbGxiYWNrcyh0aGlzLl9kcmFnT3JpZ2luKSl9fSxlLnByb3RvdHlwZS5fZG9EcmFnPWZ1bmN0aW9uKHQsZSl7dGhpcy5fZHJhZ2dpbmcmJnRoaXMuX2RyYWdDYWxsYmFja3MuY2FsbENhbGxiYWNrcyh0aGlzLl9kcmFnT3JpZ2luLHRoaXMuX3RyYW5zbGF0ZUFuZENvbnN0cmFpbih0KSl9LGUucHJvdG90eXBlLl9lbmREcmFnPWZ1bmN0aW9uKHQsZSl7ZSBpbnN0YW5jZW9mIE1vdXNlRXZlbnQmJmUuYnV0dG9uIT09dGhpcy5fbW91c2VCdXR0b258fHRoaXMuX2RyYWdnaW5nJiYodGhpcy5fZHJhZ2dpbmc9ITEsdGhpcy5fZHJhZ0VuZENhbGxiYWNrcy5jYWxsQ2FsbGJhY2tzKHRoaXMuX2RyYWdPcmlnaW4sdGhpcy5fdHJhbnNsYXRlQW5kQ29uc3RyYWluKHQpKSl9LGUucHJvdG90eXBlLmNvbnN0cmFpbmVkVG9Db21wb25lbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fY29uc3RyYWluZWRUb0NvbXBvbmVudDoodGhpcy5fY29uc3RyYWluZWRUb0NvbXBvbmVudD10LHRoaXMpfSxlLnByb3RvdHlwZS5tb3VzZUZpbHRlcj1mdW5jdGlvbih0KXtyZXR1cm4gMD09PWFyZ3VtZW50cy5sZW5ndGg/dGhpcy5fbW91c2VGaWx0ZXI6KHRoaXMuX21vdXNlRmlsdGVyPXQsdGhpcyl9LGUucHJvdG90eXBlLm9uRHJhZ1N0YXJ0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9kcmFnU3RhcnRDYWxsYmFja3MuYWRkKHQpLHRoaXN9LGUucHJvdG90eXBlLm9mZkRyYWdTdGFydD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZHJhZ1N0YXJ0Q2FsbGJhY2tzLmRlbGV0ZSh0KSx0aGlzfSxlLnByb3RvdHlwZS5vbkRyYWc9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2RyYWdDYWxsYmFja3MuYWRkKHQpLHRoaXN9LGUucHJvdG90eXBlLm9mZkRyYWc9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2RyYWdDYWxsYmFja3MuZGVsZXRlKHQpLHRoaXN9LGUucHJvdG90eXBlLm9uRHJhZ0VuZD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZHJhZ0VuZENhbGxiYWNrcy5hZGQodCksdGhpc30sZS5wcm90b3R5cGUub2ZmRHJhZ0VuZD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZHJhZ0VuZENhbGxiYWNrcy5kZWxldGUodCksdGhpc30sZS5fREVGQVVMVF9NT1VTRV9GSUxURVI9ZnVuY3Rpb24odCl7cmV0dXJuIDA9PT10LmJ1dHRvbn0sZX0pKHZ4dC5JbnRlcmFjdGlvbik7RXh0LkRyYWc9a3h0O3ZhciBMeHQ9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovT2JqZWN0LmRlZmluZVByb3BlcnR5KEx4dCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIFB4dD1CTyxOeHQ9cnh0LEl4dD1EX3QsUnh0PShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7dmFyIGU9bnVsbCE9PXQmJnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzO3JldHVybiBlLl9rZXlQcmVzc0NhbGxiYWNrcz17fSxlLl9rZXlSZWxlYXNlQ2FsbGJhY2tzPXt9LGUuX21vdXNlTW92ZUNhbGxiYWNrPWZ1bmN0aW9uKHQpe3JldHVybiExfSxlLl9kb3duZWRLZXlzPW5ldyBJeHQuU2V0LGUuX2tleURvd25DYWxsYmFjaz1mdW5jdGlvbih0LG4pe3JldHVybiBlLl9oYW5kbGVLZXlEb3duRXZlbnQodCxuKX0sZS5fa2V5VXBDYWxsYmFjaz1mdW5jdGlvbih0KXtyZXR1cm4gZS5faGFuZGxlS2V5VXBFdmVudCh0KX0sZX1yZXR1cm4gUHh0Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLl9hbmNob3I9ZnVuY3Rpb24oZSl7dC5wcm90b3R5cGUuX2FuY2hvci5jYWxsKHRoaXMsZSksdGhpcy5fcG9zaXRpb25EaXNwYXRjaGVyPU54dC5Nb3VzZS5nZXREaXNwYXRjaGVyKHRoaXMuX2NvbXBvbmVudEF0dGFjaGVkVG8pLHRoaXMuX3Bvc2l0aW9uRGlzcGF0Y2hlci5vbk1vdXNlTW92ZSh0aGlzLl9tb3VzZU1vdmVDYWxsYmFjayksdGhpcy5fa2V5RGlzcGF0Y2hlcj1OeHQuS2V5LmdldERpc3BhdGNoZXIoKSx0aGlzLl9rZXlEaXNwYXRjaGVyLm9uS2V5RG93bih0aGlzLl9rZXlEb3duQ2FsbGJhY2spLHRoaXMuX2tleURpc3BhdGNoZXIub25LZXlVcCh0aGlzLl9rZXlVcENhbGxiYWNrKX0sZS5wcm90b3R5cGUuX3VuYW5jaG9yPWZ1bmN0aW9uKCl7dC5wcm90b3R5cGUuX3VuYW5jaG9yLmNhbGwodGhpcyksdGhpcy5fcG9zaXRpb25EaXNwYXRjaGVyLm9mZk1vdXNlTW92ZSh0aGlzLl9tb3VzZU1vdmVDYWxsYmFjayksdGhpcy5fcG9zaXRpb25EaXNwYXRjaGVyPW51bGwsdGhpcy5fa2V5RGlzcGF0Y2hlci5vZmZLZXlEb3duKHRoaXMuX2tleURvd25DYWxsYmFjayksdGhpcy5fa2V5RGlzcGF0Y2hlci5vZmZLZXlVcCh0aGlzLl9rZXlVcENhbGxiYWNrKSx0aGlzLl9rZXlEaXNwYXRjaGVyPW51bGx9LGUucHJvdG90eXBlLl9oYW5kbGVLZXlEb3duRXZlbnQ9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLl90cmFuc2xhdGVUb0NvbXBvbmVudFNwYWNlKHRoaXMuX3Bvc2l0aW9uRGlzcGF0Y2hlci5sYXN0TW91c2VQb3NpdGlvbigpKTt0aGlzLl9pc0luc2lkZUNvbXBvbmVudChuKSYmIWUucmVwZWF0JiYodGhpcy5fa2V5UHJlc3NDYWxsYmFja3NbdF0mJnRoaXMuX2tleVByZXNzQ2FsbGJhY2tzW3RdLmNhbGxDYWxsYmFja3ModCksdGhpcy5fZG93bmVkS2V5cy5hZGQodCkpfSxlLnByb3RvdHlwZS5faGFuZGxlS2V5VXBFdmVudD1mdW5jdGlvbih0KXt0aGlzLl9kb3duZWRLZXlzLmhhcyh0KSYmdGhpcy5fa2V5UmVsZWFzZUNhbGxiYWNrc1t0XSYmdGhpcy5fa2V5UmVsZWFzZUNhbGxiYWNrc1t0XS5jYWxsQ2FsbGJhY2tzKHQpLHRoaXMuX2Rvd25lZEtleXMuZGVsZXRlKHQpfSxlLnByb3RvdHlwZS5vbktleVByZXNzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuX2tleVByZXNzQ2FsbGJhY2tzW3RdfHwodGhpcy5fa2V5UHJlc3NDYWxsYmFja3NbdF09bmV3IEl4dC5DYWxsYmFja1NldCksdGhpcy5fa2V5UHJlc3NDYWxsYmFja3NbdF0uYWRkKGUpLHRoaXN9LGUucHJvdG90eXBlLm9mZktleVByZXNzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuX2tleVByZXNzQ2FsbGJhY2tzW3RdLmRlbGV0ZShlKSwwPT09dGhpcy5fa2V5UHJlc3NDYWxsYmFja3NbdF0uc2l6ZSYmZGVsZXRlIHRoaXMuX2tleVByZXNzQ2FsbGJhY2tzW3RdLHRoaXN9LGUucHJvdG90eXBlLm9uS2V5UmVsZWFzZT1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9rZXlSZWxlYXNlQ2FsbGJhY2tzW3RdfHwodGhpcy5fa2V5UmVsZWFzZUNhbGxiYWNrc1t0XT1uZXcgSXh0LkNhbGxiYWNrU2V0KSx0aGlzLl9rZXlSZWxlYXNlQ2FsbGJhY2tzW3RdLmFkZChlKSx0aGlzfSxlLnByb3RvdHlwZS5vZmZLZXlSZWxlYXNlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuX2tleVJlbGVhc2VDYWxsYmFja3NbdF0uZGVsZXRlKGUpLDA9PT10aGlzLl9rZXlSZWxlYXNlQ2FsbGJhY2tzW3RdLnNpemUmJmRlbGV0ZSB0aGlzLl9rZXlSZWxlYXNlQ2FsbGJhY2tzW3RdLHRoaXN9LGV9KSh2eHQuSW50ZXJhY3Rpb24pO0x4dC5LZXk9Unh0O3ZhciBPeHQ9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovT2JqZWN0LmRlZmluZVByb3BlcnR5KE94dCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHp4dD1CTyxEeHQ9d3B0LEJ4dD1yeHQsSHh0PVh2dCxGeHQ9RF90LFZ4dD1ueHQsVXh0PXRidCxqeHQ9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuKXt2YXIgaT10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIGkuX3doZWVsRmlsdGVyPWZ1bmN0aW9uKHQpe3JldHVybiEwfSxpLl93aGVlbENhbGxiYWNrPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGkuX2hhbmRsZVdoZWVsRXZlbnQodCxlKX0saS5fdG91Y2hTdGFydENhbGxiYWNrPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gaS5faGFuZGxlVG91Y2hTdGFydCh0LGUsbil9LGkuX3RvdWNoTW92ZUNhbGxiYWNrPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gaS5faGFuZGxlUGluY2godCxlLG4pfSxpLl90b3VjaEVuZENhbGxiYWNrPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gaS5faGFuZGxlVG91Y2hFbmQodCxlLG4pfSxpLl90b3VjaENhbmNlbENhbGxiYWNrPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gaS5faGFuZGxlVG91Y2hFbmQodCxlLG4pfSxpLl9wYW5FbmRDYWxsYmFja3M9bmV3IEZ4dC5DYWxsYmFja1NldCxpLl96b29tRW5kQ2FsbGJhY2tzPW5ldyBGeHQuQ2FsbGJhY2tTZXQsaS5fcGFuWm9vbVVwZGF0ZUNhbGxiYWNrcz1uZXcgRnh0LkNhbGxiYWNrU2V0LGkuX3hTY2FsZXM9bmV3IEZ4dC5TZXQsaS5feVNjYWxlcz1uZXcgRnh0LlNldCxpLl9kcmFnSW50ZXJhY3Rpb249bmV3IFZ4dC5EcmFnLGkuX3NldHVwRHJhZ0ludGVyYWN0aW9uKCksaS5fdG91Y2hJZHM9RHh0Lm1hcCgpLGkuX21pbkRvbWFpbkV4dGVudHM9bmV3IEZ4dC5NYXAsaS5fbWF4RG9tYWluRXh0ZW50cz1uZXcgRnh0Lk1hcCxpLl9taW5Eb21haW5WYWx1ZXM9bmV3IEZ4dC5NYXAsaS5fbWF4RG9tYWluVmFsdWVzPW5ldyBGeHQuTWFwLG51bGwhPWUmJmkuYWRkWFNjYWxlKGUpLG51bGwhPW4mJmkuYWRkWVNjYWxlKG4pLGl9cmV0dXJuIHp4dC5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5kcmFnSW50ZXJhY3Rpb249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZHJhZ0ludGVyYWN0aW9ufSxlLnByb3RvdHlwZS53aGVlbEZpbHRlcj1mdW5jdGlvbih0KXtyZXR1cm4gMD09PWFyZ3VtZW50cy5sZW5ndGg/dGhpcy5fd2hlZWxGaWx0ZXI6KHRoaXMuX3doZWVsRmlsdGVyPXQsdGhpcyl9LGUucHJvdG90eXBlLnBhbj1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3RoaXMueFNjYWxlcygpLmZvckVhY2goKGZ1bmN0aW9uKG4pe24ucGFuKGUuX2NvbnN0cmFpbmVkVHJhbnNsYXRpb24obix0LngpKX0pKSx0aGlzLnlTY2FsZXMoKS5mb3JFYWNoKChmdW5jdGlvbihuKXtuLnBhbihlLl9jb25zdHJhaW5lZFRyYW5zbGF0aW9uKG4sdC55KSl9KSksdGhpcy5fcGFuWm9vbVVwZGF0ZUNhbGxiYWNrcy5jYWxsQ2FsbGJhY2tzKCl9LGUucHJvdG90eXBlLnpvb209ZnVuY3Rpb24odCxlLG4pe3ZhciBpLHIsbz10aGlzO3JldHVybiB2b2lkIDA9PT1uJiYobj0hMCksbnVsbCE9ZSYmKGk9ZS54LHI9ZS55LG4mJih0aGlzLnhTY2FsZXMoKS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgbj1vLl9jb25zdHJhaW5lZFpvb20oZSx0LGkpO2k9bi5jZW50ZXJQb2ludCx0PW4uem9vbUFtb3VudH0pKSx0aGlzLnlTY2FsZXMoKS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgbj1vLl9jb25zdHJhaW5lZFpvb20oZSx0LHIpO3I9bi5jZW50ZXJQb2ludCx0PW4uem9vbUFtb3VudH0pKSkpLHRoaXMueFNjYWxlcygpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciBuPWUucmFuZ2UoKTtlLnpvb20odCxudWxsPT1pPyhuWzFdK25bMF0pLzI6aSl9KSksdGhpcy55U2NhbGVzKCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIG49ZS5yYW5nZSgpO2Uuem9vbSh0LG51bGw9PXI/KG5bMV0rblswXSkvMjpyKX0pKSx0aGlzLl9wYW5ab29tVXBkYXRlQ2FsbGJhY2tzLmNhbGxDYWxsYmFja3MoKSx7em9vbUFtb3VudDp0LGNlbnRlclZhbHVlOntjZW50ZXJYOmksY2VudGVyWTpyfX19LGUucHJvdG90eXBlLl9hbmNob3I9ZnVuY3Rpb24oZSl7dC5wcm90b3R5cGUuX2FuY2hvci5jYWxsKHRoaXMsZSksdGhpcy5fZHJhZ0ludGVyYWN0aW9uLmF0dGFjaFRvKGUpLHRoaXMuX21vdXNlRGlzcGF0Y2hlcj1CeHQuTW91c2UuZ2V0RGlzcGF0Y2hlcih0aGlzLl9jb21wb25lbnRBdHRhY2hlZFRvKSx0aGlzLl9tb3VzZURpc3BhdGNoZXIub25XaGVlbCh0aGlzLl93aGVlbENhbGxiYWNrKSx0aGlzLl90b3VjaERpc3BhdGNoZXI9Qnh0LlRvdWNoLmdldERpc3BhdGNoZXIodGhpcy5fY29tcG9uZW50QXR0YWNoZWRUbyksdGhpcy5fdG91Y2hEaXNwYXRjaGVyLm9uVG91Y2hTdGFydCh0aGlzLl90b3VjaFN0YXJ0Q2FsbGJhY2spLHRoaXMuX3RvdWNoRGlzcGF0Y2hlci5vblRvdWNoTW92ZSh0aGlzLl90b3VjaE1vdmVDYWxsYmFjayksdGhpcy5fdG91Y2hEaXNwYXRjaGVyLm9uVG91Y2hFbmQodGhpcy5fdG91Y2hFbmRDYWxsYmFjayksdGhpcy5fdG91Y2hEaXNwYXRjaGVyLm9uVG91Y2hDYW5jZWwodGhpcy5fdG91Y2hDYW5jZWxDYWxsYmFjayl9LGUucHJvdG90eXBlLl91bmFuY2hvcj1mdW5jdGlvbigpe3QucHJvdG90eXBlLl91bmFuY2hvci5jYWxsKHRoaXMpLHRoaXMuX21vdXNlRGlzcGF0Y2hlci5vZmZXaGVlbCh0aGlzLl93aGVlbENhbGxiYWNrKSx0aGlzLl9tb3VzZURpc3BhdGNoZXI9bnVsbCx0aGlzLl90b3VjaERpc3BhdGNoZXIub2ZmVG91Y2hTdGFydCh0aGlzLl90b3VjaFN0YXJ0Q2FsbGJhY2spLHRoaXMuX3RvdWNoRGlzcGF0Y2hlci5vZmZUb3VjaE1vdmUodGhpcy5fdG91Y2hNb3ZlQ2FsbGJhY2spLHRoaXMuX3RvdWNoRGlzcGF0Y2hlci5vZmZUb3VjaEVuZCh0aGlzLl90b3VjaEVuZENhbGxiYWNrKSx0aGlzLl90b3VjaERpc3BhdGNoZXIub2ZmVG91Y2hDYW5jZWwodGhpcy5fdG91Y2hDYW5jZWxDYWxsYmFjayksdGhpcy5fdG91Y2hEaXNwYXRjaGVyPW51bGwsdGhpcy5fZHJhZ0ludGVyYWN0aW9uLmRldGFjaCgpfSxlLnByb3RvdHlwZS5faGFuZGxlVG91Y2hTdGFydD1mdW5jdGlvbih0LGUsbil7Zm9yKHZhciBpPTA7aTx0Lmxlbmd0aCYmdGhpcy5fdG91Y2hJZHMuc2l6ZSgpPDI7aSsrKXt2YXIgcj10W2ldO3RoaXMuX3RvdWNoSWRzLnNldChyLnRvU3RyaW5nKCksdGhpcy5fdHJhbnNsYXRlVG9Db21wb25lbnRTcGFjZShlW3JdKSl9fSxlLnByb3RvdHlwZS5faGFuZGxlUGluY2g9ZnVuY3Rpb24odCxuLGkpe3ZhciByPXRoaXM7aWYoISh0aGlzLl90b3VjaElkcy5zaXplKCk8Mikpe3ZhciBvPXRoaXMuX3RvdWNoSWRzLnZhbHVlcygpO2lmKHRoaXMuX2lzSW5zaWRlQ29tcG9uZW50KHRoaXMuX3RyYW5zbGF0ZVRvQ29tcG9uZW50U3BhY2Uob1swXSkpJiZ0aGlzLl9pc0luc2lkZUNvbXBvbmVudCh0aGlzLl90cmFuc2xhdGVUb0NvbXBvbmVudFNwYWNlKG9bMV0pKSl7dmFyIGE9ZS5fcG9pbnREaXN0YW5jZShvWzBdLG9bMV0pO2lmKDAhPT1hKXt0LmZvckVhY2goKGZ1bmN0aW9uKHQpe3IuX3RvdWNoSWRzLmhhcyh0LnRvU3RyaW5nKCkpJiZyLl90b3VjaElkcy5zZXQodC50b1N0cmluZygpLHIuX3RyYW5zbGF0ZVRvQ29tcG9uZW50U3BhY2Uoblt0XSkpfSkpO3ZhciBzPXRoaXMuX3RvdWNoSWRzLnZhbHVlcygpLGw9ZS5fcG9pbnREaXN0YW5jZShzWzBdLHNbMV0pO2lmKDAhPT1sKXt2YXIgYz1hL2wsdT1zLm1hcCgoZnVuY3Rpb24odCxlKXtyZXR1cm57eDoodC54LW9bZV0ueCkvYyx5Oih0Lnktb1tlXS55KS9jfX0pKSxoPWUuY2VudGVyUG9pbnQob1swXSxvWzFdKSxkPXRoaXMuem9vbShjLGgpLHA9ZC5jZW50ZXJWYWx1ZSxmPWQuem9vbUFtb3VudCxtPXAuY2VudGVyWCxnPXAuY2VudGVyWSxfPW8ubWFwKChmdW5jdGlvbih0LGUpe3JldHVybnt4OnVbZV0ueCpmK3QueCx5OnVbZV0ueSpmK3QueX19KSk7dGhpcy5wYW4oe3g6bS0oX1swXS54K19bMV0ueCkvMix5OmctKF9bMF0ueStfWzFdLnkpLzJ9KX19fX19LGUuY2VudGVyUG9pbnQ9ZnVuY3Rpb24odCxlKXt2YXIgbj1NYXRoLm1pbih0LngsZS54KSxpPU1hdGgubWF4KHQueCxlLngpLHI9TWF0aC5taW4odC55LGUueSk7cmV0dXJue3g6KG4raSkvMix5OihNYXRoLm1heCh0LnksZS55KStyKS8yfX0sZS5fcG9pbnREaXN0YW5jZT1mdW5jdGlvbih0LGUpe3ZhciBuPU1hdGgubWluKHQueCxlLngpLGk9TWF0aC5tYXgodC54LGUueCkscj1NYXRoLm1pbih0LnksZS55KSxvPU1hdGgubWF4KHQueSxlLnkpO3JldHVybiBNYXRoLnNxcnQoTWF0aC5wb3coaS1uLDIpK01hdGgucG93KG8tciwyKSl9LGUucHJvdG90eXBlLl9oYW5kbGVUb3VjaEVuZD1mdW5jdGlvbih0LGUsbil7dmFyIGk9dGhpczt0LmZvckVhY2goKGZ1bmN0aW9uKHQpe2kuX3RvdWNoSWRzLnJlbW92ZSh0LnRvU3RyaW5nKCkpfSkpLHRoaXMuX3RvdWNoSWRzLnNpemUoKT4wJiZ0aGlzLl96b29tRW5kQ2FsbGJhY2tzLmNhbGxDYWxsYmFja3MoKX0sZS5wcm90b3R5cGUuX2hhbmRsZVdoZWVsRXZlbnQ9ZnVuY3Rpb24odCxuKXtpZih0aGlzLl93aGVlbEZpbHRlcihuKSl7dmFyIGk9dGhpcy5fdHJhbnNsYXRlVG9Db21wb25lbnRTcGFjZSh0KTtpZih0aGlzLl9pc0luc2lkZUNvbXBvbmVudChpKSl7bi5wcmV2ZW50RGVmYXVsdCgpO3ZhciByPU1hdGgucG93KDIsLjAwMiooKDAhPT1uLmRlbHRhWT9uLmRlbHRhWTpuLmRlbHRhWCkqKG4uZGVsdGFNb2RlP2UuX1BJWEVMU19QRVJfTElORToxKSkpO3RoaXMuem9vbShyLGkpLHRoaXMuX3pvb21FbmRDYWxsYmFja3MuY2FsbENhbGxiYWNrcygpfX19LGUucHJvdG90eXBlLl9jb25zdHJhaW5lZFpvb209ZnVuY3Rpb24odCxlLG4pe3JldHVybiBVeHQuY29uc3RyYWluZWRab29tKHQsZSxuLHRoaXMubWluRG9tYWluRXh0ZW50KHQpLHRoaXMubWF4RG9tYWluRXh0ZW50KHQpLHRoaXMubWluRG9tYWluVmFsdWUodCksdGhpcy5tYXhEb21haW5WYWx1ZSh0KSl9LGUucHJvdG90eXBlLl9jb25zdHJhaW5lZFRyYW5zbGF0aW9uPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIFV4dC5jb25zdHJhaW5lZFRyYW5zbGF0aW9uKHQsZSx0aGlzLm1pbkRvbWFpblZhbHVlKHQpLHRoaXMubWF4RG9tYWluVmFsdWUodCkpfSxlLnByb3RvdHlwZS5fc2V0dXBEcmFnSW50ZXJhY3Rpb249ZnVuY3Rpb24oKXt2YXIgdCxlPXRoaXM7dGhpcy5fZHJhZ0ludGVyYWN0aW9uLmNvbnN0cmFpbmVkVG9Db21wb25lbnQoITEpLHRoaXMuX2RyYWdJbnRlcmFjdGlvbi5vbkRyYWdTdGFydCgoZnVuY3Rpb24oKXtyZXR1cm4gdD1udWxsfSkpLHRoaXMuX2RyYWdJbnRlcmFjdGlvbi5vbkRyYWcoKGZ1bmN0aW9uKG4saSl7ZS5fdG91Y2hJZHMuc2l6ZSgpPj0yfHwoZS5wYW4oe3g6KG51bGw9PXQ/bi54OnQueCktaS54LHk6KG51bGw9PXQ/bi55OnQueSktaS55fSksdD1pKX0pKSx0aGlzLl9kcmFnSW50ZXJhY3Rpb24ub25EcmFnRW5kKChmdW5jdGlvbigpe3JldHVybiBlLl9wYW5FbmRDYWxsYmFja3MuY2FsbENhbGxiYWNrcygpfSkpfSxlLnByb3RvdHlwZS5fbm9uTGluZWFyU2NhbGVXaXRoRXh0ZW50cz1mdW5jdGlvbih0KXtyZXR1cm4hKG51bGw9PXRoaXMubWluRG9tYWluRXh0ZW50KHQpfHxudWxsPT10aGlzLm1heERvbWFpbkV4dGVudCh0KXx8dCBpbnN0YW5jZW9mIEh4dC5MaW5lYXJ8fHQgaW5zdGFuY2VvZiBIeHQuVGltZSl9LGUucHJvdG90eXBlLnhTY2FsZXM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztpZihudWxsPT10KXt2YXIgbj1bXTtyZXR1cm4gdGhpcy5feFNjYWxlcy5mb3JFYWNoKChmdW5jdGlvbih0KXtuLnB1c2godCl9KSksbn1yZXR1cm4gdGhpcy5feFNjYWxlcz1uZXcgRnh0LlNldCx0LmZvckVhY2goKGZ1bmN0aW9uKHQpe2UuYWRkWFNjYWxlKHQpfSkpLHRoaXN9LGUucHJvdG90eXBlLnlTY2FsZXM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztpZihudWxsPT10KXt2YXIgbj1bXTtyZXR1cm4gdGhpcy5feVNjYWxlcy5mb3JFYWNoKChmdW5jdGlvbih0KXtuLnB1c2godCl9KSksbn1yZXR1cm4gdGhpcy5feVNjYWxlcz1uZXcgRnh0LlNldCx0LmZvckVhY2goKGZ1bmN0aW9uKHQpe2UuYWRkWVNjYWxlKHQpfSkpLHRoaXN9LGUucHJvdG90eXBlLmFkZFhTY2FsZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5feFNjYWxlcy5hZGQodCksdGhpc30sZS5wcm90b3R5cGUucmVtb3ZlWFNjYWxlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl94U2NhbGVzLmRlbGV0ZSh0KSx0aGlzLl9taW5Eb21haW5FeHRlbnRzLmRlbGV0ZSh0KSx0aGlzLl9tYXhEb21haW5FeHRlbnRzLmRlbGV0ZSh0KSx0aGlzLl9taW5Eb21haW5WYWx1ZXMuZGVsZXRlKHQpLHRoaXMuX21heERvbWFpblZhbHVlcy5kZWxldGUodCksdGhpc30sZS5wcm90b3R5cGUuYWRkWVNjYWxlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl95U2NhbGVzLmFkZCh0KSx0aGlzfSxlLnByb3RvdHlwZS5yZW1vdmVZU2NhbGU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3lTY2FsZXMuZGVsZXRlKHQpLHRoaXMuX21pbkRvbWFpbkV4dGVudHMuZGVsZXRlKHQpLHRoaXMuX21heERvbWFpbkV4dGVudHMuZGVsZXRlKHQpLHRoaXMuX21pbkRvbWFpblZhbHVlcy5kZWxldGUodCksdGhpcy5fbWF4RG9tYWluVmFsdWVzLmRlbGV0ZSh0KSx0aGlzfSxlLnByb3RvdHlwZS5taW5Eb21haW5FeHRlbnQ9ZnVuY3Rpb24odCxlKXtpZihudWxsPT1lKXJldHVybiB0aGlzLl9taW5Eb21haW5FeHRlbnRzLmdldCh0KTtpZihlLnZhbHVlT2YoKTwwKXRocm93IG5ldyBFcnJvcigiZXh0ZW50IG11c3QgYmUgbm9uLW5lZ2F0aXZlIik7dmFyIG49dGhpcy5tYXhEb21haW5FeHRlbnQodCk7aWYobnVsbCE9biYmbi52YWx1ZU9mKCk8ZS52YWx1ZU9mKCkpdGhyb3cgbmV3IEVycm9yKCJtaW5Eb21haW5FeHRlbnQgbXVzdCBiZSBzbWFsbGVyIHRoYW4gbWF4RG9tYWluRXh0ZW50IGZvciB0aGUgc2FtZSBTY2FsZSIpO3JldHVybiB0aGlzLl9ub25MaW5lYXJTY2FsZVdpdGhFeHRlbnRzKHQpJiZGeHQuV2luZG93Lndhcm4oIlBhbm5pbmcgYW5kIHpvb21pbmcgd2l0aCBleHRlbnRzIG9uIGEgbm9ubGluZWFyIHNjYWxlIG1heSBoYXZlIHVuaW50ZW5kZWQgYmVoYXZpb3IuIiksdGhpcy5fbWluRG9tYWluRXh0ZW50cy5zZXQodCxlKSx0aGlzfSxlLnByb3RvdHlwZS5tYXhEb21haW5FeHRlbnQ9ZnVuY3Rpb24odCxlKXtpZihudWxsPT1lKXJldHVybiB0aGlzLl9tYXhEb21haW5FeHRlbnRzLmdldCh0KTtpZihlLnZhbHVlT2YoKTw9MCl0aHJvdyBuZXcgRXJyb3IoImV4dGVudCBtdXN0IGJlIHBvc2l0aXZlIik7dmFyIG49dGhpcy5taW5Eb21haW5FeHRlbnQodCk7aWYobnVsbCE9biYmZS52YWx1ZU9mKCk8bi52YWx1ZU9mKCkpdGhyb3cgbmV3IEVycm9yKCJtYXhEb21haW5FeHRlbnQgbXVzdCBiZSBsYXJnZXIgdGhhbiBtaW5Eb21haW5FeHRlbnQgZm9yIHRoZSBzYW1lIFNjYWxlIik7cmV0dXJuIHRoaXMuX25vbkxpbmVhclNjYWxlV2l0aEV4dGVudHModCkmJkZ4dC5XaW5kb3cud2FybigiUGFubmluZyBhbmQgem9vbWluZyB3aXRoIGV4dGVudHMgb24gYSBub25saW5lYXIgc2NhbGUgbWF5IGhhdmUgdW5pbnRlbmRlZCBiZWhhdmlvci4iKSx0aGlzLl9tYXhEb21haW5FeHRlbnRzLnNldCh0LGUpLHRoaXN9LGUucHJvdG90eXBlLm1pbkRvbWFpblZhbHVlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG51bGw9PWU/dGhpcy5fbWluRG9tYWluVmFsdWVzLmdldCh0KToodGhpcy5fbWluRG9tYWluVmFsdWVzLnNldCh0LGUpLHRoaXMpfSxlLnByb3RvdHlwZS5tYXhEb21haW5WYWx1ZT1mdW5jdGlvbih0LGUpe3JldHVybiBudWxsPT1lP3RoaXMuX21heERvbWFpblZhbHVlcy5nZXQodCk6KHRoaXMuX21heERvbWFpblZhbHVlcy5zZXQodCxlKSx0aGlzKX0sZS5wcm90b3R5cGUuc2V0TWluTWF4RG9tYWluVmFsdWVzVG89ZnVuY3Rpb24odCl7dGhpcy5fbWluRG9tYWluVmFsdWVzLmRlbGV0ZSh0KSx0aGlzLl9tYXhEb21haW5WYWx1ZXMuZGVsZXRlKHQpO3ZhciBlPXQuZ2V0VHJhbnNmb3JtYXRpb25Eb21haW4oKSxuPWVbMV07cmV0dXJuIHRoaXMubWluRG9tYWluVmFsdWUodCxlWzBdKSx0aGlzLm1heERvbWFpblZhbHVlKHQsbiksdGhpc30sZS5wcm90b3R5cGUub25QYW5FbmQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3BhbkVuZENhbGxiYWNrcy5hZGQodCksdGhpc30sZS5wcm90b3R5cGUub2ZmUGFuRW5kPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYW5FbmRDYWxsYmFja3MuZGVsZXRlKHQpLHRoaXN9LGUucHJvdG90eXBlLm9uWm9vbUVuZD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fem9vbUVuZENhbGxiYWNrcy5hZGQodCksdGhpc30sZS5wcm90b3R5cGUub2ZmWm9vbUVuZD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fem9vbUVuZENhbGxiYWNrcy5kZWxldGUodCksdGhpc30sZS5wcm90b3R5cGUub25QYW5ab29tVXBkYXRlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYW5ab29tVXBkYXRlQ2FsbGJhY2tzLmFkZCh0KSx0aGlzfSxlLnByb3RvdHlwZS5vZmZQYW5ab29tVXBkYXRlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYW5ab29tVXBkYXRlQ2FsbGJhY2tzLmRlbGV0ZSh0KSx0aGlzfSxlLl9QSVhFTFNfUEVSX0xJTkU9MTIwLGV9KSh2eHQuSW50ZXJhY3Rpb24pO094dC5QYW5ab29tPWp4dDt2YXIgR3h0PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqL09iamVjdC5kZWZpbmVQcm9wZXJ0eShHeHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBXeHQ9Qk8scXh0PXJ4dCxZeHQ9RF90LFh4dD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3ZhciBlPW51bGwhPT10JiZ0LmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpcztyZXR1cm4gZS5fb3ZlckNvbXBvbmVudD0hMSxlLl9wb2ludGVyRW50ZXJDYWxsYmFja3M9bmV3IFl4dC5DYWxsYmFja1NldCxlLl9wb2ludGVyTW92ZUNhbGxiYWNrcz1uZXcgWXh0LkNhbGxiYWNrU2V0LGUuX3BvaW50ZXJFeGl0Q2FsbGJhY2tzPW5ldyBZeHQuQ2FsbGJhY2tTZXQsZS5fbW91c2VNb3ZlQ2FsbGJhY2s9ZnVuY3Rpb24odCxuKXtyZXR1cm4gZS5faGFuZGxlTW91c2VFdmVudCh0LG4pfSxlLl90b3VjaFN0YXJ0Q2FsbGJhY2s9ZnVuY3Rpb24odCxuLGkpe3JldHVybiBlLl9oYW5kbGVUb3VjaEV2ZW50KG5bdFswXV0saSl9LGV9cmV0dXJuIFd4dC5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5fYW5jaG9yPWZ1bmN0aW9uKGUpe3QucHJvdG90eXBlLl9hbmNob3IuY2FsbCh0aGlzLGUpLHRoaXMuX21vdXNlRGlzcGF0Y2hlcj1xeHQuTW91c2UuZ2V0RGlzcGF0Y2hlcih0aGlzLl9jb21wb25lbnRBdHRhY2hlZFRvKSx0aGlzLl9tb3VzZURpc3BhdGNoZXIub25Nb3VzZU1vdmUodGhpcy5fbW91c2VNb3ZlQ2FsbGJhY2spLHRoaXMuX3RvdWNoRGlzcGF0Y2hlcj1xeHQuVG91Y2guZ2V0RGlzcGF0Y2hlcih0aGlzLl9jb21wb25lbnRBdHRhY2hlZFRvKSx0aGlzLl90b3VjaERpc3BhdGNoZXIub25Ub3VjaFN0YXJ0KHRoaXMuX3RvdWNoU3RhcnRDYWxsYmFjayl9LGUucHJvdG90eXBlLl91bmFuY2hvcj1mdW5jdGlvbigpe3QucHJvdG90eXBlLl91bmFuY2hvci5jYWxsKHRoaXMpLHRoaXMuX21vdXNlRGlzcGF0Y2hlci5vZmZNb3VzZU1vdmUodGhpcy5fbW91c2VNb3ZlQ2FsbGJhY2spLHRoaXMuX21vdXNlRGlzcGF0Y2hlcj1udWxsLHRoaXMuX3RvdWNoRGlzcGF0Y2hlci5vZmZUb3VjaFN0YXJ0KHRoaXMuX3RvdWNoU3RhcnRDYWxsYmFjayksdGhpcy5fdG91Y2hEaXNwYXRjaGVyPW51bGx9LGUucHJvdG90eXBlLl9oYW5kbGVNb3VzZUV2ZW50PWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5fbW91c2VEaXNwYXRjaGVyLmV2ZW50SW5zaWRlKHRoaXMuX2NvbXBvbmVudEF0dGFjaGVkVG8sZSk7dGhpcy5faGFuZGxlUG9pbnRlckV2ZW50KHQsbil9LGUucHJvdG90eXBlLl9oYW5kbGVUb3VjaEV2ZW50PWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5fdG91Y2hEaXNwYXRjaGVyLmV2ZW50SW5zaWRlKHRoaXMuX2NvbXBvbmVudEF0dGFjaGVkVG8sZSk7dGhpcy5faGFuZGxlUG9pbnRlckV2ZW50KHQsbil9LGUucHJvdG90eXBlLl9oYW5kbGVQb2ludGVyRXZlbnQ9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLl90cmFuc2xhdGVUb0NvbXBvbmVudFNwYWNlKHQpLGk9dGhpcy5faXNJbnNpZGVDb21wb25lbnQobik7aSYmZT8odGhpcy5fb3ZlckNvbXBvbmVudHx8dGhpcy5fcG9pbnRlckVudGVyQ2FsbGJhY2tzLmNhbGxDYWxsYmFja3MobiksdGhpcy5fcG9pbnRlck1vdmVDYWxsYmFja3MuY2FsbENhbGxiYWNrcyhuKSk6dGhpcy5fb3ZlckNvbXBvbmVudCYmdGhpcy5fcG9pbnRlckV4aXRDYWxsYmFja3MuY2FsbENhbGxiYWNrcyhuKSx0aGlzLl9vdmVyQ29tcG9uZW50PWkmJmV9LGUucHJvdG90eXBlLm9uUG9pbnRlckVudGVyPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wb2ludGVyRW50ZXJDYWxsYmFja3MuYWRkKHQpLHRoaXN9LGUucHJvdG90eXBlLm9mZlBvaW50ZXJFbnRlcj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcG9pbnRlckVudGVyQ2FsbGJhY2tzLmRlbGV0ZSh0KSx0aGlzfSxlLnByb3RvdHlwZS5vblBvaW50ZXJNb3ZlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wb2ludGVyTW92ZUNhbGxiYWNrcy5hZGQodCksdGhpc30sZS5wcm90b3R5cGUub2ZmUG9pbnRlck1vdmU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3BvaW50ZXJNb3ZlQ2FsbGJhY2tzLmRlbGV0ZSh0KSx0aGlzfSxlLnByb3RvdHlwZS5vblBvaW50ZXJFeGl0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wb2ludGVyRXhpdENhbGxiYWNrcy5hZGQodCksdGhpc30sZS5wcm90b3R5cGUub2ZmUG9pbnRlckV4aXQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3BvaW50ZXJFeGl0Q2FsbGJhY2tzLmRlbGV0ZSh0KSx0aGlzfSxlfSkodnh0LkludGVyYWN0aW9uKTtHeHQuUG9pbnRlcj1YeHQsKGZ1bmN0aW9uKHQpewovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGU9Qk87ZS5fX2V4cG9ydFN0YXIoaXh0LHQpLGUuX19leHBvcnRTdGFyKEV4dCx0KSxlLl9fZXhwb3J0U3RhcihMeHQsdCksZS5fX2V4cG9ydFN0YXIoT3h0LHQpLGUuX19leHBvcnRTdGFyKEd4dCx0KSx0Lnpvb21PdXQ9dGJ0Lnpvb21PdXR9KShueHQpO3ZhciAkeHQ9e307IShmdW5jdGlvbih0KXsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBlLG49Qk8saT1EX3Qscj1PX3Q7IShmdW5jdGlvbih0KXt0W3QuVkFMVUU9MF09IlZBTFVFIix0W3QuUElYRUw9MV09IlBJWEVMIn0pKGU9dC5Qcm9wZXJ0eU1vZGV8fCh0LlByb3BlcnR5TW9kZT17fSkpO3ZhciBvPShmdW5jdGlvbih0KXtmdW5jdGlvbiByKCl7dmFyIG49dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBuLl9ib3hWaXNpYmxlPSExLG4uX2JveEJvdW5kcz17dG9wTGVmdDp7eDowLHk6MH0sYm90dG9tUmlnaHQ6e3g6MCx5OjB9fSxuLl94Qm91bmRzTW9kZT1lLlBJWEVMLG4uX3lCb3VuZHNNb2RlPWUuUElYRUwsbi5hZGRDbGFzcygic2VsZWN0aW9uLWJveC1sYXllciIpLG4uX2FkanVzdEJvdW5kc0NhbGxiYWNrPWZ1bmN0aW9uKCl7bi5yZW5kZXIoKX0sbi5fb3ZlcmZsb3dIaWRkZW49ITAsbi5feEV4dGVudD1bdm9pZCAwLHZvaWQgMF0sbi5feUV4dGVudD1bdm9pZCAwLHZvaWQgMF0sbn1yZXR1cm4gbi5fX2V4dGVuZHMocix0KSxyLnByb3RvdHlwZS5fc2V0dXA9ZnVuY3Rpb24oKXt0LnByb3RvdHlwZS5fc2V0dXAuY2FsbCh0aGlzKSx0aGlzLl9ib3g9dGhpcy5jb250ZW50KCkuYXBwZW5kKCJnIikuY2xhc3NlZCgic2VsZWN0aW9uLWJveCIsITApLnJlbW92ZSgpLHRoaXMuX2JveEFyZWE9dGhpcy5fYm94LmFwcGVuZCgicmVjdCIpLmNsYXNzZWQoInNlbGVjdGlvbi1hcmVhIiwhMCl9LHIucHJvdG90eXBlLl9zaXplRnJvbU9mZmVyPWZ1bmN0aW9uKHQsZSl7cmV0dXJue3dpZHRoOnQsaGVpZ2h0OmV9fSxyLnByb3RvdHlwZS5ib3VuZHM9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fZ2V0Qm91bmRzKCk6KHRoaXMuX3NldEJvdW5kcyh0KSx0aGlzLl94Qm91bmRzTW9kZT1lLlBJWEVMLHRoaXMuX3lCb3VuZHNNb2RlPWUuUElYRUwsdGhpcy5yZW5kZXIoKSx0aGlzKX0sci5wcm90b3R5cGUuX3NldEJvdW5kcz1mdW5jdGlvbih0KXt2YXIgZT17eDpNYXRoLm1pbih0LnRvcExlZnQueCx0LmJvdHRvbVJpZ2h0LngpLHk6TWF0aC5taW4odC50b3BMZWZ0LnksdC5ib3R0b21SaWdodC55KX0sbj17eDpNYXRoLm1heCh0LnRvcExlZnQueCx0LmJvdHRvbVJpZ2h0LngpLHk6TWF0aC5tYXgodC50b3BMZWZ0LnksdC5ib3R0b21SaWdodC55KX07dGhpcy5fYm94Qm91bmRzPXt0b3BMZWZ0OmUsYm90dG9tUmlnaHQ6bn19LHIucHJvdG90eXBlLl9nZXRCb3VuZHM9ZnVuY3Rpb24oKXtyZXR1cm57dG9wTGVmdDp7eDp0aGlzLl94Qm91bmRzTW9kZT09PWUuUElYRUw/dGhpcy5fYm94Qm91bmRzLnRvcExlZnQueDpudWxsPT10aGlzLl94U2NhbGU/MDpNYXRoLm1pbih0aGlzLnhTY2FsZSgpLnNjYWxlKHRoaXMueEV4dGVudCgpWzBdKSx0aGlzLnhTY2FsZSgpLnNjYWxlKHRoaXMueEV4dGVudCgpWzFdKSkseTp0aGlzLl95Qm91bmRzTW9kZT09PWUuUElYRUw/dGhpcy5fYm94Qm91bmRzLnRvcExlZnQueTpudWxsPT10aGlzLl95U2NhbGU/MDpNYXRoLm1pbih0aGlzLnlTY2FsZSgpLnNjYWxlKHRoaXMueUV4dGVudCgpWzBdKSx0aGlzLnlTY2FsZSgpLnNjYWxlKHRoaXMueUV4dGVudCgpWzFdKSl9LGJvdHRvbVJpZ2h0Ont4OnRoaXMuX3hCb3VuZHNNb2RlPT09ZS5QSVhFTD90aGlzLl9ib3hCb3VuZHMuYm90dG9tUmlnaHQueDpudWxsPT10aGlzLl94U2NhbGU/MDpNYXRoLm1heCh0aGlzLnhTY2FsZSgpLnNjYWxlKHRoaXMueEV4dGVudCgpWzBdKSx0aGlzLnhTY2FsZSgpLnNjYWxlKHRoaXMueEV4dGVudCgpWzFdKSkseTp0aGlzLl95Qm91bmRzTW9kZT09PWUuUElYRUw/dGhpcy5fYm94Qm91bmRzLmJvdHRvbVJpZ2h0Lnk6bnVsbD09dGhpcy5feVNjYWxlPzA6TWF0aC5tYXgodGhpcy55U2NhbGUoKS5zY2FsZSh0aGlzLnlFeHRlbnQoKVswXSksdGhpcy55U2NhbGUoKS5zY2FsZSh0aGlzLnlFeHRlbnQoKVsxXSkpfX19LHIucHJvdG90eXBlLnJlbmRlckltbWVkaWF0ZWx5PWZ1bmN0aW9uKCl7aWYodC5wcm90b3R5cGUucmVuZGVySW1tZWRpYXRlbHkuY2FsbCh0aGlzKSx0aGlzLl9ib3hWaXNpYmxlKXt2YXIgZT10aGlzLmJvdW5kcygpLG49ZS50b3BMZWZ0Lnkscj1lLmJvdHRvbVJpZ2h0Lnksbz1lLnRvcExlZnQueCxhPWUuYm90dG9tUmlnaHQueDtpZighKGkuTWF0aC5pc1ZhbGlkTnVtYmVyKG4pJiZpLk1hdGguaXNWYWxpZE51bWJlcihyKSYmaS5NYXRoLmlzVmFsaWROdW1iZXIobykmJmkuTWF0aC5pc1ZhbGlkTnVtYmVyKGEpKSl0aHJvdyBuZXcgRXJyb3IoImJvdW5kcyBoYXZlIG5vdCBiZWVuIHByb3Blcmx5IHNldCIpO3RoaXMuX2JveEFyZWEuYXR0cnMoe3g6byx5Om4sd2lkdGg6YS1vLGhlaWdodDpyLW59KSx0aGlzLmNvbnRlbnQoKS5ub2RlKCkuYXBwZW5kQ2hpbGQodGhpcy5fYm94Lm5vZGUoKSl9ZWxzZSB0aGlzLl9ib3gucmVtb3ZlKCk7cmV0dXJuIHRoaXN9LHIucHJvdG90eXBlLmJveFZpc2libGU9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fYm94VmlzaWJsZToodGhpcy5fYm94VmlzaWJsZT10LHRoaXMucmVuZGVyKCksdGhpcyl9LHIucHJvdG90eXBlLmZpeGVkV2lkdGg9ZnVuY3Rpb24oKXtyZXR1cm4hMH0sci5wcm90b3R5cGUuZml4ZWRIZWlnaHQ9ZnVuY3Rpb24oKXtyZXR1cm4hMH0sci5wcm90b3R5cGUueFNjYWxlPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX3hTY2FsZToobnVsbCE9dGhpcy5feFNjYWxlJiZ0aGlzLl94U2NhbGUub2ZmVXBkYXRlKHRoaXMuX2FkanVzdEJvdW5kc0NhbGxiYWNrKSx0aGlzLl94U2NhbGU9dCx0aGlzLl94Qm91bmRzTW9kZT1lLlZBTFVFLHRoaXMuX3hTY2FsZS5vblVwZGF0ZSh0aGlzLl9hZGp1c3RCb3VuZHNDYWxsYmFjayksdGhpcy5yZW5kZXIoKSx0aGlzKX0sci5wcm90b3R5cGUueVNjYWxlPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX3lTY2FsZToobnVsbCE9dGhpcy5feVNjYWxlJiZ0aGlzLl95U2NhbGUub2ZmVXBkYXRlKHRoaXMuX2FkanVzdEJvdW5kc0NhbGxiYWNrKSx0aGlzLl95U2NhbGU9dCx0aGlzLl95Qm91bmRzTW9kZT1lLlZBTFVFLHRoaXMuX3lTY2FsZS5vblVwZGF0ZSh0aGlzLl9hZGp1c3RCb3VuZHNDYWxsYmFjayksdGhpcy5yZW5kZXIoKSx0aGlzKX0sci5wcm90b3R5cGUueEV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9nZXRYRXh0ZW50KCk6KHRoaXMuX3NldFhFeHRlbnQodCksdGhpcy5feEJvdW5kc01vZGU9ZS5WQUxVRSx0aGlzLnJlbmRlcigpLHRoaXMpfSxyLnByb3RvdHlwZS5fZ2V0WEV4dGVudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl94Qm91bmRzTW9kZT09PWUuVkFMVUU/dGhpcy5feEV4dGVudDpudWxsPT10aGlzLl94U2NhbGU/W3ZvaWQgMCx2b2lkIDBdOlt0aGlzLl94U2NhbGUuaW52ZXJ0KHRoaXMuX2JveEJvdW5kcy50b3BMZWZ0LngpLHRoaXMuX3hTY2FsZS5pbnZlcnQodGhpcy5fYm94Qm91bmRzLmJvdHRvbVJpZ2h0LngpXX0sci5wcm90b3R5cGUuX3NldFhFeHRlbnQ9ZnVuY3Rpb24odCl7dGhpcy5feEV4dGVudD10fSxyLnByb3RvdHlwZS55RXh0ZW50PWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX2dldFlFeHRlbnQoKToodGhpcy5fc2V0WUV4dGVudCh0KSx0aGlzLl95Qm91bmRzTW9kZT1lLlZBTFVFLHRoaXMucmVuZGVyKCksdGhpcyl9LHIucHJvdG90eXBlLl9nZXRZRXh0ZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3lCb3VuZHNNb2RlPT09ZS5WQUxVRT90aGlzLl95RXh0ZW50Om51bGw9PXRoaXMuX3lTY2FsZT9bdm9pZCAwLHZvaWQgMF06W3RoaXMuX3lTY2FsZS5pbnZlcnQodGhpcy5fYm94Qm91bmRzLnRvcExlZnQueSksdGhpcy5feVNjYWxlLmludmVydCh0aGlzLl9ib3hCb3VuZHMuYm90dG9tUmlnaHQueSldfSxyLnByb3RvdHlwZS5fc2V0WUV4dGVudD1mdW5jdGlvbih0KXt0aGlzLl95RXh0ZW50PXR9LHIucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt0LnByb3RvdHlwZS5kZXN0cm95LmNhbGwodGhpcyksbnVsbCE9dGhpcy5feFNjYWxlJiZ0aGlzLnhTY2FsZSgpLm9mZlVwZGF0ZSh0aGlzLl9hZGp1c3RCb3VuZHNDYWxsYmFjayksbnVsbCE9dGhpcy5feVNjYWxlJiZ0aGlzLnlTY2FsZSgpLm9mZlVwZGF0ZSh0aGlzLl9hZGp1c3RCb3VuZHNDYWxsYmFjayl9LHJ9KShyLkNvbXBvbmVudCk7dC5TZWxlY3Rpb25Cb3hMYXllcj1vfSkoJHh0KSwKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4dCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIEt4dD1CTyxaeHQ9bnh0LEp4dD1EX3QsUXh0PV9ndCx0d3Q9dHh0LGV3dD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3ZhciBlPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gZS5fZGV0ZWN0aW9uUmFkaXVzPTMsZS5fcmVzaXphYmxlPSExLGUuX21vdmFibGU9ITEsZS5faGFzQ29ybmVycz0hMCxlLmFkZENsYXNzKCJkcmFnLWJveC1sYXllciIpLGUuX2RyYWdJbnRlcmFjdGlvbj1uZXcgWnh0LkRyYWcsZS5fc2V0VXBDYWxsYmFja3MoKSxlLl9kcmFnSW50ZXJhY3Rpb24uYXR0YWNoVG8oZSksZS5fZHJhZ1N0YXJ0Q2FsbGJhY2tzPW5ldyBKeHQuQ2FsbGJhY2tTZXQsZS5fZHJhZ0NhbGxiYWNrcz1uZXcgSnh0LkNhbGxiYWNrU2V0LGUuX2RyYWdFbmRDYWxsYmFja3M9bmV3IEp4dC5DYWxsYmFja1NldCxlfXJldHVybiBLeHQuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUuX3NldFVwQ2FsbGJhY2tzPWZ1bmN0aW9uKCl7dmFyIHQsZSxuLGkscj10aGlzLG89MCxhPTEscz0yLGw9byxjPWZ1bmN0aW9uKGMpe3Q9ci5fZ2V0UmVzaXppbmdFZGdlcyhjKTt2YXIgdT1yLmJvdW5kcygpLGg9dS50b3BMZWZ0Lng8PWMueCYmYy54PD11LmJvdHRvbVJpZ2h0LngmJnUudG9wTGVmdC55PD1jLnkmJmMueTw9dS5ib3R0b21SaWdodC55O3IuYm94VmlzaWJsZSgpJiYodC50b3B8fHQuYm90dG9tfHx0LmxlZnR8fHQucmlnaHQpP2w9YTpyLmJveFZpc2libGUoKSYmci5tb3ZhYmxlKCkmJmg/bD1zOihsPW8sci5fc2V0Qm91bmRzKHt0b3BMZWZ0OmMsYm90dG9tUmlnaHQ6Y30pLHIuX3hCb3VuZHNNb2RlPT09dHd0LlByb3BlcnR5TW9kZS5WQUxVRSYmbnVsbCE9ci54U2NhbGUoKSYmci5fc2V0WEV4dGVudChbci54U2NhbGUoKS5pbnZlcnQoYy54KSxyLnhTY2FsZSgpLmludmVydChjLngpXSksci5feUJvdW5kc01vZGU9PT10d3QuUHJvcGVydHlNb2RlLlZBTFVFJiZudWxsIT1yLnlTY2FsZSgpJiZyLl9zZXRZRXh0ZW50KFtyLnlTY2FsZSgpLmludmVydChjLnkpLHIueVNjYWxlKCkuaW52ZXJ0KGMueSldKSxyLnJlbmRlcigpKSxyLmJveFZpc2libGUoITApLHU9ci5ib3VuZHMoKSxlPXt4OnUudG9wTGVmdC54LHk6dS50b3BMZWZ0Lnl9LG49e3g6dS5ib3R0b21SaWdodC54LHk6dS5ib3R0b21SaWdodC55fSxpPWMsci5fZHJhZ1N0YXJ0Q2FsbGJhY2tzLmNhbGxDYWxsYmFja3ModSl9LHU9ZnVuY3Rpb24oYyx1KXtzd2l0Y2gobCl7Y2FzZSBvOm4ueD11Lngsbi55PXUueTticmVhaztjYXNlIGE6dC5ib3R0b20/bi55PXUueTp0LnRvcCYmKGUueT11LnkpLHQucmlnaHQ/bi54PXUueDp0LmxlZnQmJihlLng9dS54KTticmVhaztjYXNlIHM6dmFyIGg9dS54LWkueCxkPXUueS1pLnk7ZS54Kz1oLGUueSs9ZCxuLngrPWgsbi55Kz1kLGk9dX1yLl9zZXRCb3VuZHMoe3RvcExlZnQ6ZSxib3R0b21SaWdodDpufSksci5feEJvdW5kc01vZGU9PT10d3QuUHJvcGVydHlNb2RlLlZBTFVFJiZudWxsIT1yLnhTY2FsZSgpJiZyLl9zZXRYRXh0ZW50KFtyLnhTY2FsZSgpLmludmVydChlLngpLHIueFNjYWxlKCkuaW52ZXJ0KG4ueCldKSxyLl95Qm91bmRzTW9kZT09PXR3dC5Qcm9wZXJ0eU1vZGUuVkFMVUUmJm51bGwhPXIueVNjYWxlKCkmJnIuX3NldFlFeHRlbnQoW3IueVNjYWxlKCkuaW52ZXJ0KGUueSksci55U2NhbGUoKS5pbnZlcnQobi55KV0pLHIucmVuZGVyKCksci5fZHJhZ0NhbGxiYWNrcy5jYWxsQ2FsbGJhY2tzKHIuYm91bmRzKCkpfSxoPWZ1bmN0aW9uKHQsZSl7bD09PW8mJnQueD09PWUueCYmdC55PT09ZS55JiZyLmJveFZpc2libGUoITEpLHIuX2RyYWdFbmRDYWxsYmFja3MuY2FsbENhbGxiYWNrcyhyLmJvdW5kcygpKX07dGhpcy5fZHJhZ0ludGVyYWN0aW9uLm9uRHJhZ1N0YXJ0KGMpLHRoaXMuX2RyYWdJbnRlcmFjdGlvbi5vbkRyYWcodSksdGhpcy5fZHJhZ0ludGVyYWN0aW9uLm9uRHJhZ0VuZChoKSx0aGlzLl9kaXNjb25uZWN0SW50ZXJhY3Rpb249ZnVuY3Rpb24oKXtyLl9kcmFnSW50ZXJhY3Rpb24ub2ZmRHJhZ1N0YXJ0KGMpLHIuX2RyYWdJbnRlcmFjdGlvbi5vZmZEcmFnKHUpLHIuX2RyYWdJbnRlcmFjdGlvbi5vZmZEcmFnRW5kKGgpLHIuX2RyYWdJbnRlcmFjdGlvbi5kZXRhY2goKX19LGUucHJvdG90eXBlLl9zZXR1cD1mdW5jdGlvbigpe3ZhciBlPXRoaXM7dC5wcm90b3R5cGUuX3NldHVwLmNhbGwodGhpcyk7dmFyIG49ZnVuY3Rpb24oKXtyZXR1cm4gZS5fYm94LmFwcGVuZCgibGluZSIpLnN0eWxlcyh7b3BhY2l0eTowLHN0cm9rZToicGluayIsInBvaW50ZXItZXZlbnRzIjoidmlzaWJsZVN0cm9rZSJ9KX07aWYodGhpcy5fZGV0ZWN0aW9uRWRnZVQ9bigpLmNsYXNzZWQoImRyYWctZWRnZS10YiIsITApLHRoaXMuX2RldGVjdGlvbkVkZ2VCPW4oKS5jbGFzc2VkKCJkcmFnLWVkZ2UtdGIiLCEwKSx0aGlzLl9kZXRlY3Rpb25FZGdlTD1uKCkuY2xhc3NlZCgiZHJhZy1lZGdlLWxyIiwhMCksdGhpcy5fZGV0ZWN0aW9uRWRnZVI9bigpLmNsYXNzZWQoImRyYWctZWRnZS1sciIsITApLHRoaXMuX2hhc0Nvcm5lcnMpe3ZhciBpPWZ1bmN0aW9uKCl7cmV0dXJuIGUuX2JveC5hcHBlbmQoImNpcmNsZSIpLnN0eWxlcyh7b3BhY2l0eTowLGZpbGw6InBpbmsiLCJwb2ludGVyLWV2ZW50cyI6InZpc2libGVGaWxsIn0pfTt0aGlzLl9kZXRlY3Rpb25Db3JuZXJUTD1pKCkuY2xhc3NlZCgiZHJhZy1jb3JuZXItdGwiLCEwKSx0aGlzLl9kZXRlY3Rpb25Db3JuZXJUUj1pKCkuY2xhc3NlZCgiZHJhZy1jb3JuZXItdHIiLCEwKSx0aGlzLl9kZXRlY3Rpb25Db3JuZXJCTD1pKCkuY2xhc3NlZCgiZHJhZy1jb3JuZXItYmwiLCEwKSx0aGlzLl9kZXRlY3Rpb25Db3JuZXJCUj1pKCkuY2xhc3NlZCgiZHJhZy1jb3JuZXItYnIiLCEwKX19LGUucHJvdG90eXBlLl9nZXRSZXNpemluZ0VkZ2VzPWZ1bmN0aW9uKHQpe3ZhciBlPXt0b3A6ITEsYm90dG9tOiExLGxlZnQ6ITEscmlnaHQ6ITF9O2lmKCF0aGlzLnJlc2l6YWJsZSgpKXJldHVybiBlO3ZhciBuPXRoaXMuYm91bmRzKCksaT1uLnRvcExlZnQueSxyPW4uYm90dG9tUmlnaHQueSxvPW4udG9wTGVmdC54LGE9bi5ib3R0b21SaWdodC54LHM9dGhpcy5fZGV0ZWN0aW9uUmFkaXVzO3JldHVybiBvLXM8PXQueCYmdC54PD1hK3MmJihlLnRvcD1pLXM8PXQueSYmdC55PD1pK3MsZS5ib3R0b209ci1zPD10LnkmJnQueTw9citzKSxpLXM8PXQueSYmdC55PD1yK3MmJihlLmxlZnQ9by1zPD10LngmJnQueDw9bytzLGUucmlnaHQ9YS1zPD10LngmJnQueDw9YStzKSxlfSxlLnByb3RvdHlwZS5yZW5kZXJJbW1lZGlhdGVseT1mdW5jdGlvbigpe2lmKHQucHJvdG90eXBlLnJlbmRlckltbWVkaWF0ZWx5LmNhbGwodGhpcyksdGhpcy5ib3hWaXNpYmxlKCkpe3ZhciBlPXRoaXMuYm91bmRzKCksbj1lLnRvcExlZnQueSxpPWUuYm90dG9tUmlnaHQueSxyPWUudG9wTGVmdC54LG89ZS5ib3R0b21SaWdodC54O3RoaXMuX2RldGVjdGlvbkVkZ2VULmF0dHJzKHt4MTpyLHkxOm4seDI6byx5MjpuLCJzdHJva2Utd2lkdGgiOjIqdGhpcy5fZGV0ZWN0aW9uUmFkaXVzfSksdGhpcy5fZGV0ZWN0aW9uRWRnZUIuYXR0cnMoe3gxOnIseTE6aSx4MjpvLHkyOmksInN0cm9rZS13aWR0aCI6Mip0aGlzLl9kZXRlY3Rpb25SYWRpdXN9KSx0aGlzLl9kZXRlY3Rpb25FZGdlTC5hdHRycyh7eDE6cix5MTpuLHgyOnIseTI6aSwic3Ryb2tlLXdpZHRoIjoyKnRoaXMuX2RldGVjdGlvblJhZGl1c30pLHRoaXMuX2RldGVjdGlvbkVkZ2VSLmF0dHJzKHt4MTpvLHkxOm4seDI6byx5MjppLCJzdHJva2Utd2lkdGgiOjIqdGhpcy5fZGV0ZWN0aW9uUmFkaXVzfSksdGhpcy5faGFzQ29ybmVycyYmKHRoaXMuX2RldGVjdGlvbkNvcm5lclRMLmF0dHJzKHtjeDpyLGN5Om4scjp0aGlzLl9kZXRlY3Rpb25SYWRpdXN9KSx0aGlzLl9kZXRlY3Rpb25Db3JuZXJUUi5hdHRycyh7Y3g6byxjeTpuLHI6dGhpcy5fZGV0ZWN0aW9uUmFkaXVzfSksdGhpcy5fZGV0ZWN0aW9uQ29ybmVyQkwuYXR0cnMoe2N4OnIsY3k6aSxyOnRoaXMuX2RldGVjdGlvblJhZGl1c30pLHRoaXMuX2RldGVjdGlvbkNvcm5lckJSLmF0dHJzKHtjeDpvLGN5Omkscjp0aGlzLl9kZXRlY3Rpb25SYWRpdXN9KSl9cmV0dXJuIHRoaXN9LGUucHJvdG90eXBlLmRldGVjdGlvblJhZGl1cz1mdW5jdGlvbih0KXtpZihudWxsPT10KXJldHVybiB0aGlzLl9kZXRlY3Rpb25SYWRpdXM7aWYodDwwKXRocm93IG5ldyBFcnJvcigiZGV0ZWN0aW9uIHJhZGl1cyBjYW5ub3QgYmUgbmVnYXRpdmUuIik7cmV0dXJuIHRoaXMuX2RldGVjdGlvblJhZGl1cz10LHRoaXMucmVuZGVyKCksdGhpc30sZS5wcm90b3R5cGUucmVzaXphYmxlPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX3Jlc2l6YWJsZToodGhpcy5fcmVzaXphYmxlPXQsdGhpcy5fc2V0UmVzaXphYmxlQ2xhc3Nlcyh0KSx0aGlzKX0sZS5wcm90b3R5cGUuX3NldFJlc2l6YWJsZUNsYXNzZXM9ZnVuY3Rpb24odCl7dCYmdGhpcy5lbmFibGVkKCk/KHRoaXMuYWRkQ2xhc3MoIngtcmVzaXphYmxlIiksdGhpcy5hZGRDbGFzcygieS1yZXNpemFibGUiKSk6KHRoaXMucmVtb3ZlQ2xhc3MoIngtcmVzaXphYmxlIiksdGhpcy5yZW1vdmVDbGFzcygieS1yZXNpemFibGUiKSl9LGUucHJvdG90eXBlLm1vdmFibGU9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fbW92YWJsZToodGhpcy5fbW92YWJsZT10LHRoaXMuX3NldE1vdmFibGVDbGFzcygpLHRoaXMpfSxlLnByb3RvdHlwZS5fc2V0TW92YWJsZUNsYXNzPWZ1bmN0aW9uKCl7dGhpcy5tb3ZhYmxlKCkmJnRoaXMuZW5hYmxlZCgpP3RoaXMuYWRkQ2xhc3MoIm1vdmFibGUiKTp0aGlzLnJlbW92ZUNsYXNzKCJtb3ZhYmxlIil9LGUucHJvdG90eXBlLm9uRHJhZ1N0YXJ0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9kcmFnU3RhcnRDYWxsYmFja3MuYWRkKHQpLHRoaXN9LGUucHJvdG90eXBlLm9mZkRyYWdTdGFydD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZHJhZ1N0YXJ0Q2FsbGJhY2tzLmRlbGV0ZSh0KSx0aGlzfSxlLnByb3RvdHlwZS5vbkRyYWc9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2RyYWdDYWxsYmFja3MuYWRkKHQpLHRoaXN9LGUucHJvdG90eXBlLm9mZkRyYWc9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2RyYWdDYWxsYmFja3MuZGVsZXRlKHQpLHRoaXN9LGUucHJvdG90eXBlLm9uRHJhZ0VuZD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZHJhZ0VuZENhbGxiYWNrcy5hZGQodCksdGhpc30sZS5wcm90b3R5cGUub2ZmRHJhZ0VuZD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZHJhZ0VuZENhbGxiYWNrcy5kZWxldGUodCksdGhpc30sZS5wcm90b3R5cGUuZHJhZ0ludGVyYWN0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RyYWdJbnRlcmFjdGlvbn0sZS5wcm90b3R5cGUuZW5hYmxlZD1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9kcmFnSW50ZXJhY3Rpb24uZW5hYmxlZCgpOih0aGlzLl9kcmFnSW50ZXJhY3Rpb24uZW5hYmxlZCh0KSx0aGlzLl9zZXRSZXNpemFibGVDbGFzc2VzKHRoaXMucmVzaXphYmxlKCkpLHRoaXMuX3NldE1vdmFibGVDbGFzcygpLHRoaXMpfSxlLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dmFyIGU9dGhpczt0LnByb3RvdHlwZS5kZXN0cm95LmNhbGwodGhpcyksdGhpcy5fZHJhZ1N0YXJ0Q2FsbGJhY2tzLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiBlLl9kcmFnQ2FsbGJhY2tzLmRlbGV0ZSh0KX0pKSx0aGlzLl9kcmFnQ2FsbGJhY2tzLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiBlLl9kcmFnQ2FsbGJhY2tzLmRlbGV0ZSh0KX0pKSx0aGlzLl9kcmFnRW5kQ2FsbGJhY2tzLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiBlLl9kcmFnRW5kQ2FsbGJhY2tzLmRlbGV0ZSh0KX0pKSx0aGlzLl9kaXNjb25uZWN0SW50ZXJhY3Rpb24oKX0sZS5wcm90b3R5cGUuZGV0YWNoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Jlc2V0U3RhdGUoKSx0aGlzLl9kcmFnSW50ZXJhY3Rpb24uZGV0YWNoKCksdC5wcm90b3R5cGUuZGV0YWNoLmNhbGwodGhpcyksdGhpc30sZS5wcm90b3R5cGUuYW5jaG9yPWZ1bmN0aW9uKGUpe3JldHVybiBlPVF4dC5jb2VyY2VFeHRlcm5hbEQzKGUpLHRoaXMuX2RyYWdJbnRlcmFjdGlvbi5hdHRhY2hUbyh0aGlzKSx0LnByb3RvdHlwZS5hbmNob3IuY2FsbCh0aGlzLGUpLHRoaXN9LGUucHJvdG90eXBlLl9yZXNldFN0YXRlPWZ1bmN0aW9uKCl7dGhpcy5ib3VuZHMoe3RvcExlZnQ6e3g6MCx5OjB9LGJvdHRvbVJpZ2h0Ont4OjAseTowfX0pfSxlfSkoJHh0LlNlbGVjdGlvbkJveExheWVyKTtleHQuRHJhZ0JveExheWVyPWV3dDt2YXIgbnd0PXt9LGl3dD17fTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KGl3dCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHJ3dCxvd3Q9Qk8sYXd0PURfdCxzd3Q9T190OyEoZnVuY3Rpb24odCl7dFt0LlZBTFVFPTBdPSJWQUxVRSIsdFt0LlBJWEVMPTFdPSJQSVhFTCJ9KShyd3R8fChyd3Q9e30pKTt2YXIgbHd0PShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKG4pe3ZhciBpPXQuY2FsbCh0aGlzKXx8dGhpcztpZihpLl9tb2RlPXJ3dC5WQUxVRSxuIT09ZS5PUklFTlRBVElPTl9WRVJUSUNBTCYmbiE9PWUuT1JJRU5UQVRJT05fSE9SSVpPTlRBTCl0aHJvdyBuZXcgRXJyb3IobisiIGlzIG5vdCBhIHZhbGlkIG9yaWVudGF0aW9uIGZvciBHdWlkZUxpbmVMYXllciIpO3JldHVybiBpLl9vcmllbnRhdGlvbj1uLGkuX292ZXJmbG93SGlkZGVuPSEwLGkuYWRkQ2xhc3MoImd1aWRlLWxpbmUtbGF5ZXIiKSxpLl9pc1ZlcnRpY2FsKCk/aS5hZGRDbGFzcygidmVydGljYWwiKTppLmFkZENsYXNzKCJob3Jpem9udGFsIiksaS5fc2NhbGVVcGRhdGVDYWxsYmFjaz1mdW5jdGlvbigpe2kuX3N5bmNQaXhlbFBvc2l0aW9uQW5kVmFsdWUoKSxpLnJlbmRlcigpfSxpfXJldHVybiBvd3QuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUuX3NldHVwPWZ1bmN0aW9uKCl7dC5wcm90b3R5cGUuX3NldHVwLmNhbGwodGhpcyksdGhpcy5fZ3VpZGVMaW5lPXRoaXMuY29udGVudCgpLmFwcGVuZCgibGluZSIpLmNsYXNzZWQoImd1aWRlLWxpbmUiLCEwKX0sZS5wcm90b3R5cGUuX3NpemVGcm9tT2ZmZXI9ZnVuY3Rpb24odCxlKXtyZXR1cm57d2lkdGg6dCxoZWlnaHQ6ZX19LGUucHJvdG90eXBlLl9pc1ZlcnRpY2FsPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX29yaWVudGF0aW9uPT09ZS5PUklFTlRBVElPTl9WRVJUSUNBTH0sZS5wcm90b3R5cGUuZml4ZWRXaWR0aD1mdW5jdGlvbigpe3JldHVybiEwfSxlLnByb3RvdHlwZS5maXhlZEhlaWdodD1mdW5jdGlvbigpe3JldHVybiEwfSxlLnByb3RvdHlwZS5jb21wdXRlTGF5b3V0PWZ1bmN0aW9uKGUsbixpKXtyZXR1cm4gdC5wcm90b3R5cGUuY29tcHV0ZUxheW91dC5jYWxsKHRoaXMsZSxuLGkpLG51bGwhPXRoaXMuc2NhbGUoKSYmKHRoaXMuX2lzVmVydGljYWwoKT90aGlzLnNjYWxlKCkucmFuZ2UoWzAsdGhpcy53aWR0aCgpXSk6dGhpcy5zY2FsZSgpLnJhbmdlKFt0aGlzLmhlaWdodCgpLDBdKSksdGhpc30sZS5wcm90b3R5cGUucmVuZGVySW1tZWRpYXRlbHk9ZnVuY3Rpb24oKXtyZXR1cm4gdC5wcm90b3R5cGUucmVuZGVySW1tZWRpYXRlbHkuY2FsbCh0aGlzKSx0aGlzLl9zeW5jUGl4ZWxQb3NpdGlvbkFuZFZhbHVlKCksdGhpcy5fZ3VpZGVMaW5lLmF0dHJzKHt4MTp0aGlzLl9pc1ZlcnRpY2FsKCk/dGhpcy5waXhlbFBvc2l0aW9uKCk6MCx5MTp0aGlzLl9pc1ZlcnRpY2FsKCk/MDp0aGlzLnBpeGVsUG9zaXRpb24oKSx4Mjp0aGlzLl9pc1ZlcnRpY2FsKCk/dGhpcy5waXhlbFBvc2l0aW9uKCk6dGhpcy53aWR0aCgpLHkyOnRoaXMuX2lzVmVydGljYWwoKT90aGlzLmhlaWdodCgpOnRoaXMucGl4ZWxQb3NpdGlvbigpfSksdGhpc30sZS5wcm90b3R5cGUuX3N5bmNQaXhlbFBvc2l0aW9uQW5kVmFsdWU9ZnVuY3Rpb24oKXtudWxsIT10aGlzLnNjYWxlKCkmJih0aGlzLl9tb2RlPT09cnd0LlZBTFVFJiZudWxsIT10aGlzLnZhbHVlKCk/dGhpcy5fcGl4ZWxQb3NpdGlvbj10aGlzLnNjYWxlKCkuc2NhbGUodGhpcy52YWx1ZSgpKTp0aGlzLl9tb2RlPT09cnd0LlBJWEVMJiZudWxsIT10aGlzLnBpeGVsUG9zaXRpb24oKSYmKHRoaXMuX3ZhbHVlPXRoaXMuc2NhbGUoKS5pbnZlcnQodGhpcy5waXhlbFBvc2l0aW9uKCkpKSl9LGUucHJvdG90eXBlLl9zZXRQaXhlbFBvc2l0aW9uV2l0aG91dENoYW5naW5nTW9kZT1mdW5jdGlvbih0KXt0aGlzLl9waXhlbFBvc2l0aW9uPXQsbnVsbCE9dGhpcy5zY2FsZSgpJiYodGhpcy5fdmFsdWU9dGhpcy5zY2FsZSgpLmludmVydCh0aGlzLnBpeGVsUG9zaXRpb24oKSkpLHRoaXMucmVuZGVyKCl9LGUucHJvdG90eXBlLnNjYWxlPWZ1bmN0aW9uKHQpe2lmKG51bGw9PXQpcmV0dXJuIHRoaXMuX3NjYWxlO3ZhciBlPXRoaXMuX3NjYWxlO3JldHVybiBudWxsIT1lJiZlLm9mZlVwZGF0ZSh0aGlzLl9zY2FsZVVwZGF0ZUNhbGxiYWNrKSx0aGlzLl9zY2FsZT10LHRoaXMuX3NjYWxlLm9uVXBkYXRlKHRoaXMuX3NjYWxlVXBkYXRlQ2FsbGJhY2spLHRoaXMuX3N5bmNQaXhlbFBvc2l0aW9uQW5kVmFsdWUoKSx0aGlzLnJlZHJhdygpLHRoaXN9LGUucHJvdG90eXBlLnZhbHVlPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX3ZhbHVlOih0aGlzLl92YWx1ZT10LHRoaXMuX21vZGU9cnd0LlZBTFVFLHRoaXMuX3N5bmNQaXhlbFBvc2l0aW9uQW5kVmFsdWUoKSx0aGlzLnJlbmRlcigpLHRoaXMpfSxlLnByb3RvdHlwZS5waXhlbFBvc2l0aW9uPWZ1bmN0aW9uKHQpe2lmKG51bGw9PXQpcmV0dXJuIHRoaXMuX3BpeGVsUG9zaXRpb247aWYoIWF3dC5NYXRoLmlzVmFsaWROdW1iZXIodCkpdGhyb3cgbmV3IEVycm9yKCJwaXhlbFBvc2l0aW9uIG11c3QgYmUgYSBmaW5pdGUgbnVtYmVyIik7cmV0dXJuIHRoaXMuX3BpeGVsUG9zaXRpb249dCx0aGlzLl9tb2RlPXJ3dC5QSVhFTCx0aGlzLl9zeW5jUGl4ZWxQb3NpdGlvbkFuZFZhbHVlKCksdGhpcy5yZW5kZXIoKSx0aGlzfSxlLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dC5wcm90b3R5cGUuZGVzdHJveS5jYWxsKHRoaXMpLG51bGwhPXRoaXMuc2NhbGUoKSYmdGhpcy5zY2FsZSgpLm9mZlVwZGF0ZSh0aGlzLl9zY2FsZVVwZGF0ZUNhbGxiYWNrKX0sZS5PUklFTlRBVElPTl9WRVJUSUNBTD0idmVydGljYWwiLGUuT1JJRU5UQVRJT05fSE9SSVpPTlRBTD0iaG9yaXpvbnRhbCIsZX0pKHN3dC5Db21wb25lbnQpO2l3dC5HdWlkZUxpbmVMYXllcj1sd3QsCi8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShud3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBjd3Q9Qk8sdXd0PW54dCxod3Q9RF90LGR3dD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlKXt2YXIgbj10LmNhbGwodGhpcyxlKXx8dGhpcztuLl9kZXRlY3Rpb25SYWRpdXM9MyxuLl9lbmFibGVkPSEwLG4uYWRkQ2xhc3MoImRyYWctbGluZS1sYXllciIpLG4uYWRkQ2xhc3MoImVuYWJsZWQiKSxuLl9kcmFnSW50ZXJhY3Rpb249bmV3IHV3dC5EcmFnLG4uX2RyYWdJbnRlcmFjdGlvbi5hdHRhY2hUbyhuKTt2YXIgaT0hMSxyPWZ1bmN0aW9uKHQpeyhmdW5jdGlvbih0KXtyZXR1cm4gbi5faXNWZXJ0aWNhbCgpJiZuLnBpeGVsUG9zaXRpb24oKS1uLmRldGVjdGlvblJhZGl1cygpPD10LngmJnQueDw9bi5waXhlbFBvc2l0aW9uKCkrbi5kZXRlY3Rpb25SYWRpdXMoKXx8IW4uX2lzVmVydGljYWwoKSYmbi5waXhlbFBvc2l0aW9uKCktbi5kZXRlY3Rpb25SYWRpdXMoKTw9dC55JiZ0Lnk8PW4ucGl4ZWxQb3NpdGlvbigpK24uZGV0ZWN0aW9uUmFkaXVzKCl9KSh0KSYmKGk9ITAsbi5fZHJhZ1N0YXJ0Q2FsbGJhY2tzLmNhbGxDYWxsYmFja3MobikpfTtuLl9kcmFnSW50ZXJhY3Rpb24ub25EcmFnU3RhcnQocik7dmFyIG89ZnVuY3Rpb24odCxlKXtpJiYobi5fc2V0UGl4ZWxQb3NpdGlvbldpdGhvdXRDaGFuZ2luZ01vZGUobi5faXNWZXJ0aWNhbCgpP2UueDplLnkpLG4uX2RyYWdDYWxsYmFja3MuY2FsbENhbGxiYWNrcyhuKSl9O24uX2RyYWdJbnRlcmFjdGlvbi5vbkRyYWcobyk7dmFyIGE9ZnVuY3Rpb24odCxlKXtpJiYoaT0hMSxuLl9kcmFnRW5kQ2FsbGJhY2tzLmNhbGxDYWxsYmFja3MobikpfTtyZXR1cm4gbi5fZHJhZ0ludGVyYWN0aW9uLm9uRHJhZ0VuZChhKSxuLl9kaXNjb25uZWN0SW50ZXJhY3Rpb249ZnVuY3Rpb24oKXtuLl9kcmFnSW50ZXJhY3Rpb24ub2ZmRHJhZ1N0YXJ0KHIpLG4uX2RyYWdJbnRlcmFjdGlvbi5vZmZEcmFnKG8pLG4uX2RyYWdJbnRlcmFjdGlvbi5vZmZEcmFnRW5kKGEpLG4uX2RyYWdJbnRlcmFjdGlvbi5kZXRhY2goKX0sbi5fZHJhZ1N0YXJ0Q2FsbGJhY2tzPW5ldyBod3QuQ2FsbGJhY2tTZXQsbi5fZHJhZ0NhbGxiYWNrcz1uZXcgaHd0LkNhbGxiYWNrU2V0LG4uX2RyYWdFbmRDYWxsYmFja3M9bmV3IGh3dC5DYWxsYmFja1NldCxufXJldHVybiBjd3QuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUuX3NldHVwPWZ1bmN0aW9uKCl7dC5wcm90b3R5cGUuX3NldHVwLmNhbGwodGhpcyksdGhpcy5fZGV0ZWN0aW9uRWRnZT10aGlzLmNvbnRlbnQoKS5hcHBlbmQoImxpbmUiKS5zdHlsZXMoe29wYWNpdHk6MCxzdHJva2U6InBpbmsiLCJwb2ludGVyLWV2ZW50cyI6InZpc2libGVTdHJva2UifSkuY2xhc3NlZCgiZHJhZy1lZGdlIiwhMCl9LGUucHJvdG90eXBlLnJlbmRlckltbWVkaWF0ZWx5PWZ1bmN0aW9uKCl7cmV0dXJuIHQucHJvdG90eXBlLnJlbmRlckltbWVkaWF0ZWx5LmNhbGwodGhpcyksdGhpcy5fZGV0ZWN0aW9uRWRnZS5hdHRycyh7eDE6dGhpcy5faXNWZXJ0aWNhbCgpP3RoaXMucGl4ZWxQb3NpdGlvbigpOjAseTE6dGhpcy5faXNWZXJ0aWNhbCgpPzA6dGhpcy5waXhlbFBvc2l0aW9uKCkseDI6dGhpcy5faXNWZXJ0aWNhbCgpP3RoaXMucGl4ZWxQb3NpdGlvbigpOnRoaXMud2lkdGgoKSx5Mjp0aGlzLl9pc1ZlcnRpY2FsKCk/dGhpcy5oZWlnaHQoKTp0aGlzLnBpeGVsUG9zaXRpb24oKSwic3Ryb2tlLXdpZHRoIjoyKnRoaXMuX2RldGVjdGlvblJhZGl1c30pLHRoaXN9LGUucHJvdG90eXBlLmRldGVjdGlvblJhZGl1cz1mdW5jdGlvbih0KXtpZihudWxsPT10KXJldHVybiB0aGlzLl9kZXRlY3Rpb25SYWRpdXM7aWYodDwwKXRocm93IG5ldyBFcnJvcigiZGV0ZWN0aW9uIHJhZGl1cyBjYW5ub3QgYmUgbmVnYXRpdmUuIik7cmV0dXJuIHRoaXMuX2RldGVjdGlvblJhZGl1cz10LHRoaXMucmVuZGVyKCksdGhpc30sZS5wcm90b3R5cGUuZW5hYmxlZD1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9lbmFibGVkOih0aGlzLl9lbmFibGVkPXQsdD90aGlzLmFkZENsYXNzKCJlbmFibGVkIik6dGhpcy5yZW1vdmVDbGFzcygiZW5hYmxlZCIpLHRoaXMuX2RyYWdJbnRlcmFjdGlvbi5lbmFibGVkKHQpLHRoaXMpfSxlLnByb3RvdHlwZS5vbkRyYWdTdGFydD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZHJhZ1N0YXJ0Q2FsbGJhY2tzLmFkZCh0KSx0aGlzfSxlLnByb3RvdHlwZS5vZmZEcmFnU3RhcnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2RyYWdTdGFydENhbGxiYWNrcy5kZWxldGUodCksdGhpc30sZS5wcm90b3R5cGUub25EcmFnPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9kcmFnQ2FsbGJhY2tzLmFkZCh0KSx0aGlzfSxlLnByb3RvdHlwZS5vZmZEcmFnPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9kcmFnQ2FsbGJhY2tzLmRlbGV0ZSh0KSx0aGlzfSxlLnByb3RvdHlwZS5vbkRyYWdFbmQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2RyYWdFbmRDYWxsYmFja3MuYWRkKHQpLHRoaXN9LGUucHJvdG90eXBlLm9mZkRyYWdFbmQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2RyYWdFbmRDYWxsYmFja3MuZGVsZXRlKHQpLHRoaXN9LGUucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3QucHJvdG90eXBlLmRlc3Ryb3kuY2FsbCh0aGlzKSx0aGlzLl9kcmFnU3RhcnRDYWxsYmFja3MuZm9yRWFjaCgoZnVuY3Rpb24odCl7cmV0dXJuIGUuX2RyYWdTdGFydENhbGxiYWNrcy5kZWxldGUodCl9KSksdGhpcy5fZHJhZ0NhbGxiYWNrcy5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gZS5fZHJhZ0NhbGxiYWNrcy5kZWxldGUodCl9KSksdGhpcy5fZHJhZ0VuZENhbGxiYWNrcy5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gZS5fZHJhZ0VuZENhbGxiYWNrcy5kZWxldGUodCl9KSksdGhpcy5fZGlzY29ubmVjdEludGVyYWN0aW9uKCl9LGV9KShpd3QuR3VpZGVMaW5lTGF5ZXIpO253dC5EcmFnTGluZUxheWVyPWR3dDt2YXIgcHd0PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqL09iamVjdC5kZWZpbmVQcm9wZXJ0eShwd3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBmd3Q9Qk87ZnVuY3Rpb24gbXd0KHQsZSxuKXt2YXIgaT17fTtpZih2b2lkIDAhPT1uKWZvcih2YXIgcj0wO3I8bi5sZW5ndGg7cisrKXtpW25bcl1dPW5bci0xXX1yZXR1cm4gZnVuY3Rpb24obil7dmFyIHIsbz10LnNjYWxlKG4pO2lmKCFlKXJldHVybiBvO3ZhciBhPXZvaWQgMD09PWlbbl0/dm9pZCAwOnQuc2NhbGUoaVtuXSk7cmV0dXJuIHZvaWQgMCE9PWEmJihyPWErKG8tYSkvMikscn19dmFyIGd3dD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4pe3ZhciBpPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gaS5hZGRDbGFzcygiZ3JpZGxpbmVzIiksaS5feFNjYWxlPWUsaS5feVNjYWxlPW4saS5fcmVuZGVyQ2FsbGJhY2s9ZnVuY3Rpb24odCl7cmV0dXJuIGkucmVuZGVyKCl9LGkuX3hTY2FsZSYmaS5feFNjYWxlLm9uVXBkYXRlKGkuX3JlbmRlckNhbGxiYWNrKSxpLl95U2NhbGUmJmkuX3lTY2FsZS5vblVwZGF0ZShpLl9yZW5kZXJDYWxsYmFjayksaX1yZXR1cm4gZnd0Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLmJldHdlZW5YPWZ1bmN0aW9uKHQpe3JldHVybiB2b2lkIDA9PT10P3RoaXMuX2JldHdlZW5YOih0IT09dGhpcy5fYmV0d2VlblgmJih0aGlzLl9iZXR3ZWVuWD10LHRoaXMucmVuZGVyKCkpLHRoaXMpfSxlLnByb3RvdHlwZS5iZXR3ZWVuWT1mdW5jdGlvbih0KXtyZXR1cm4gdm9pZCAwPT09dD90aGlzLl9iZXR3ZWVuWToodCE9PXRoaXMuX2JldHdlZW5ZJiYodGhpcy5fYmV0d2Vlblk9dCx0aGlzLnJlbmRlcigpKSx0aGlzKX0sZS5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3JldHVybiB0LnByb3RvdHlwZS5kZXN0cm95LmNhbGwodGhpcyksdGhpcy5feFNjYWxlJiZ0aGlzLl94U2NhbGUub2ZmVXBkYXRlKHRoaXMuX3JlbmRlckNhbGxiYWNrKSx0aGlzLl95U2NhbGUmJnRoaXMuX3lTY2FsZS5vZmZVcGRhdGUodGhpcy5fcmVuZGVyQ2FsbGJhY2spLHRoaXN9LGUucHJvdG90eXBlLl9zZXR1cD1mdW5jdGlvbigpe3QucHJvdG90eXBlLl9zZXR1cC5jYWxsKHRoaXMpLHRoaXMuX3hMaW5lc0NvbnRhaW5lcj10aGlzLmNvbnRlbnQoKS5hcHBlbmQoImciKS5jbGFzc2VkKCJ4LWdyaWRsaW5lcyIsITApLHRoaXMuX3lMaW5lc0NvbnRhaW5lcj10aGlzLmNvbnRlbnQoKS5hcHBlbmQoImciKS5jbGFzc2VkKCJ5LWdyaWRsaW5lcyIsITApfSxlLnByb3RvdHlwZS5yZW5kZXJJbW1lZGlhdGVseT1mdW5jdGlvbigpe3JldHVybiB0LnByb3RvdHlwZS5yZW5kZXJJbW1lZGlhdGVseS5jYWxsKHRoaXMpLHRoaXMuX3JlZHJhd1hMaW5lcygpLHRoaXMuX3JlZHJhd1lMaW5lcygpLHRoaXN9LGUucHJvdG90eXBlLmNvbXB1dGVMYXlvdXQ9ZnVuY3Rpb24oZSxuLGkpe3JldHVybiB0LnByb3RvdHlwZS5jb21wdXRlTGF5b3V0LmNhbGwodGhpcyxlLG4saSksbnVsbCE9dGhpcy5feFNjYWxlJiZ0aGlzLl94U2NhbGUucmFuZ2UoWzAsdGhpcy53aWR0aCgpXSksbnVsbCE9dGhpcy5feVNjYWxlJiZ0aGlzLl95U2NhbGUucmFuZ2UoW3RoaXMuaGVpZ2h0KCksMF0pLHRoaXN9LGUucHJvdG90eXBlLl9yZWRyYXdYTGluZXM9ZnVuY3Rpb24oKXtpZih0aGlzLl94U2NhbGUpe3ZhciB0PXRoaXMuYmV0d2VlblgoKSxlPXRoaXMuX3hTY2FsZS50aWNrcygpLnNsaWNlKHQ/MTowKSxuPXRoaXMuX3hMaW5lc0NvbnRhaW5lci5zZWxlY3RBbGwoImxpbmUiKS5kYXRhKGUpO24uZW50ZXIoKS5hcHBlbmQoImxpbmUiKS5tZXJnZShuKS5hdHRyKCJ4MSIsbXd0KHRoaXMuX3hTY2FsZSx0LHRoaXMuX3hTY2FsZS50aWNrcygpKSkuYXR0cigieTEiLDApLmF0dHIoIngyIixtd3QodGhpcy5feFNjYWxlLHQsdGhpcy5feFNjYWxlLnRpY2tzKCkpKS5hdHRyKCJ5MiIsdGhpcy5oZWlnaHQoKSkuY2xhc3NlZCgiYmV0d2VlbmxpbmUiLHQpLmNsYXNzZWQoInplcm9saW5lIiwoZnVuY3Rpb24odCl7cmV0dXJuIDA9PT10fSkpLG4uZXhpdCgpLnJlbW92ZSgpfX0sZS5wcm90b3R5cGUuX3JlZHJhd1lMaW5lcz1mdW5jdGlvbigpe2lmKHRoaXMuX3lTY2FsZSl7dmFyIHQ9dGhpcy5iZXR3ZWVuWSgpLGU9dGhpcy5feVNjYWxlLnRpY2tzKCkuc2xpY2UodD8xOjApLG49dGhpcy5feUxpbmVzQ29udGFpbmVyLnNlbGVjdEFsbCgibGluZSIpLmRhdGEoZSk7bi5lbnRlcigpLmFwcGVuZCgibGluZSIpLm1lcmdlKG4pLmF0dHIoIngxIiwwKS5hdHRyKCJ5MSIsbXd0KHRoaXMuX3lTY2FsZSx0LHRoaXMuX3lTY2FsZS50aWNrcygpKSkuYXR0cigieDIiLHRoaXMud2lkdGgoKSkuYXR0cigieTIiLG13dCh0aGlzLl95U2NhbGUsdCx0aGlzLl95U2NhbGUudGlja3MoKSkpLmNsYXNzZWQoImJldHdlZW5saW5lIix0KS5jbGFzc2VkKCJ6ZXJvbGluZSIsKGZ1bmN0aW9uKHQpe3JldHVybiAwPT09dH0pKSxuLmV4aXQoKS5yZW1vdmUoKX19LGV9KShPX3QuQ29tcG9uZW50KTtwd3QuR3JpZGxpbmVzPWd3dDt2YXIgX3d0PXt9LHl3dD17fTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KHl3dCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHZ3dD1CTyxid3Q9X2d0LHh3dD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3ZhciBlPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gZS5fZGV0YWNoQ2FsbGJhY2s9ZnVuY3Rpb24odCl7cmV0dXJuIGUucmVtb3ZlKHQpfSxlfXJldHVybiB2d3QuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUuYW5jaG9yPWZ1bmN0aW9uKGUpe3ZhciBuPXRoaXM7cmV0dXJuIGU9Ynd0LmNvZXJjZUV4dGVybmFsRDMoZSksdC5wcm90b3R5cGUuYW5jaG9yLmNhbGwodGhpcyxlKSx0aGlzLl9mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gdC5hbmNob3Iobi5lbGVtZW50KCkpfSkpLHRoaXN9LGUucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gdC5yZW5kZXIoKX0pKSx0aGlzfSxlLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7dGhyb3cgbmV3IEVycm9yKCJoYXMoKSBpcyBub3QgaW1wbGVtZW50ZWQgb24gQ29tcG9uZW50Q29udGFpbmVyIil9LGUucHJvdG90eXBlLl9hZG9wdEFuZEFuY2hvcj1mdW5jdGlvbih0KXt0LnBhcmVudCh0aGlzKSx0Lm9uRGV0YWNoKHRoaXMuX2RldGFjaENhbGxiYWNrKSx0aGlzLl9pc0FuY2hvcmVkJiZ0LmFuY2hvcih0aGlzLmVsZW1lbnQoKSl9LGUucHJvdG90eXBlLnJlbW92ZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5oYXModCkmJih0Lm9mZkRldGFjaCh0aGlzLl9kZXRhY2hDYWxsYmFjayksdGhpcy5fcmVtb3ZlKHQpLHQuZGV0YWNoKCksdGhpcy5yZWRyYXcoKSksdGhpc30sZS5wcm90b3R5cGUuX3JlbW92ZT1mdW5jdGlvbih0KXtyZXR1cm4hMX0sZS5wcm90b3R5cGUuX2ZvckVhY2g9ZnVuY3Rpb24odCl7dGhyb3cgbmV3IEVycm9yKCJfZm9yRWFjaCgpIGlzIG5vdCBpbXBsZW1lbnRlZCBvbiBDb21wb25lbnRDb250YWluZXIiKX0sZS5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3QucHJvdG90eXBlLmRlc3Ryb3kuY2FsbCh0aGlzKSx0aGlzLl9mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gdC5kZXN0cm95KCl9KSl9LGUucHJvdG90eXBlLmludmFsaWRhdGVDYWNoZT1mdW5jdGlvbigpe3RoaXMuX2ZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiB0LmludmFsaWRhdGVDYWNoZSgpfSkpfSxlfSkoT190LkNvbXBvbmVudCk7eXd0LkNvbXBvbmVudENvbnRhaW5lcj14d3QsCi8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShfd3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciB3d3Q9Qk8sU3d0PURfdCxNd3Q9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7dm9pZCAwPT09ZSYmKGU9W10pO3ZhciBuPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gbi5fY29tcG9uZW50cz1bXSxuLmFkZENsYXNzKCJjb21wb25lbnQtZ3JvdXAiKSxlLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiBuLmFwcGVuZCh0KX0pKSxufXJldHVybiB3d3QuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUuX2ZvckVhY2g9ZnVuY3Rpb24odCl7dGhpcy5jb21wb25lbnRzKCkuZm9yRWFjaCh0KX0sZS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9jb21wb25lbnRzLmluZGV4T2YodCk+PTB9LGUucHJvdG90eXBlLnJlcXVlc3RlZFNwYWNlPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5fY29tcG9uZW50cy5tYXAoKGZ1bmN0aW9uKG4pe3JldHVybiBuLnJlcXVlc3RlZFNwYWNlKHQsZSl9KSk7cmV0dXJue21pbldpZHRoOlN3dC5NYXRoLm1heChuLChmdW5jdGlvbih0KXtyZXR1cm4gdC5taW5XaWR0aH0pLDApLG1pbkhlaWdodDpTd3QuTWF0aC5tYXgobiwoZnVuY3Rpb24odCl7cmV0dXJuIHQubWluSGVpZ2h0fSksMCl9fSxlLnByb3RvdHlwZS5jb21wdXRlTGF5b3V0PWZ1bmN0aW9uKGUsbixpKXt2YXIgcj10aGlzO3JldHVybiB0LnByb3RvdHlwZS5jb21wdXRlTGF5b3V0LmNhbGwodGhpcyxlLG4saSksdGhpcy5fZm9yRWFjaCgoZnVuY3Rpb24odCl7dC5jb21wdXRlTGF5b3V0KHt4OjAseTowfSxyLndpZHRoKCksci5oZWlnaHQoKSl9KSksdGhpc30sZS5wcm90b3R5cGUuX3NpemVGcm9tT2ZmZXI9ZnVuY3Rpb24odCxlKXtyZXR1cm57d2lkdGg6dCxoZWlnaHQ6ZX19LGUucHJvdG90eXBlLmZpeGVkV2lkdGg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY29tcG9uZW50cy5ldmVyeSgoZnVuY3Rpb24odCl7cmV0dXJuIHQuZml4ZWRXaWR0aCgpfSkpfSxlLnByb3RvdHlwZS5maXhlZEhlaWdodD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9jb21wb25lbnRzLmV2ZXJ5KChmdW5jdGlvbih0KXtyZXR1cm4gdC5maXhlZEhlaWdodCgpfSkpfSxlLnByb3RvdHlwZS5jb21wb25lbnRzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NvbXBvbmVudHMuc2xpY2UoKX0sZS5wcm90b3R5cGUuYXBwZW5kPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10fHx0aGlzLmhhcyh0KXx8KHQuZGV0YWNoKCksdGhpcy5fY29tcG9uZW50cy5wdXNoKHQpLHRoaXMuX2Fkb3B0QW5kQW5jaG9yKHQpLHRoaXMucmVkcmF3KCkpLHRoaXN9LGUucHJvdG90eXBlLl9yZW1vdmU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fY29tcG9uZW50cy5pbmRleE9mKHQpO3JldHVybiBlPj0wJiYodGhpcy5fY29tcG9uZW50cy5zcGxpY2UoZSwxKSwhMCl9LGV9KSh5d3QuQ29tcG9uZW50Q29udGFpbmVyKTtfd3QuR3JvdXA9TXd0O3ZhciBFd3Q9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovT2JqZWN0LmRlZmluZVByb3BlcnR5KEV3dCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIFR3dD1CTyxDd3Q9TGd0LEF3dD1DeXQsa3d0PXB2dCxMd3Q9RF90LFB3dD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlKXt2YXIgbj10LmNhbGwodGhpcyl8fHRoaXM7aWYobi5fdGV4dFBhZGRpbmc9NSxudWxsPT1lKXRocm93IG5ldyBFcnJvcigiSW50ZXJwb2xhdGVkQ29sb3JMZWdlbmQgcmVxdWlyZXMgYSBpbnRlcnBvbGF0ZWRDb2xvclNjYWxlIik7cmV0dXJuIG4uX3NjYWxlPWUsbi5fcmVkcmF3Q2FsbGJhY2s9ZnVuY3Rpb24odCl7cmV0dXJuIG4ucmVkcmF3KCl9LG4uX3NjYWxlLm9uVXBkYXRlKG4uX3JlZHJhd0NhbGxiYWNrKSxuLl9mb3JtYXR0ZXI9a3d0LmdlbmVyYWwoKSxuLl9vcmllbnRhdGlvbj0iaG9yaXpvbnRhbCIsbi5fZXhwYW5kcz0hMSxuLmFkZENsYXNzKCJsZWdlbmQiKSxuLmFkZENsYXNzKCJpbnRlcnBvbGF0ZWQtY29sb3ItbGVnZW5kIiksbn1yZXR1cm4gVHd0Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt0LnByb3RvdHlwZS5kZXN0cm95LmNhbGwodGhpcyksdGhpcy5fc2NhbGUub2ZmVXBkYXRlKHRoaXMuX3JlZHJhd0NhbGxiYWNrKX0sZS5wcm90b3R5cGUuZm9ybWF0dGVyPWZ1bmN0aW9uKHQpe3JldHVybiB2b2lkIDA9PT10P3RoaXMuX2Zvcm1hdHRlcjoodGhpcy5fZm9ybWF0dGVyPXQsdGhpcy5yZWRyYXcoKSx0aGlzKX0sZS5wcm90b3R5cGUuZXhwYW5kcz1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9leHBhbmRzOih0aGlzLl9leHBhbmRzPXQsdGhpcy5yZWRyYXcoKSx0aGlzKX0sZS5fZW5zdXJlT3JpZW50YXRpb249ZnVuY3Rpb24odCl7aWYoImhvcml6b250YWwiPT09KHQ9dC50b0xvd2VyQ2FzZSgpKXx8ImxlZnQiPT09dHx8InJpZ2h0Ij09PXQpcmV0dXJuIHQ7dGhyb3cgbmV3IEVycm9yKCciJyt0KyciIGlzIG5vdCBhIHZhbGlkIG9yaWVudGF0aW9uIGZvciBJbnRlcnBvbGF0ZWRDb2xvckxlZ2VuZCcpfSxlLnByb3RvdHlwZS5vcmllbnRhdGlvbj1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9vcmllbnRhdGlvbjoodGhpcy5fb3JpZW50YXRpb249ZS5fZW5zdXJlT3JpZW50YXRpb24odCksdGhpcy5yZWRyYXcoKSx0aGlzKX0sZS5wcm90b3R5cGUuZml4ZWRXaWR0aD1mdW5jdGlvbigpe3JldHVybiF0aGlzLmV4cGFuZHMoKXx8dGhpcy5faXNWZXJ0aWNhbCgpfSxlLnByb3RvdHlwZS5maXhlZEhlaWdodD1mdW5jdGlvbigpe3JldHVybiF0aGlzLmV4cGFuZHMoKXx8IXRoaXMuX2lzVmVydGljYWwoKX0sZS5wcm90b3R5cGUuX2dlbmVyYXRlVGlja3M9ZnVuY3Rpb24odCl7dm9pZCAwPT09dCYmKHQ9ZS5fREVGQVVMVF9OVU1fU1dBVENIRVMpO3ZhciBuPXRoaXMuX3NjYWxlLmRvbWFpbigpO2lmKDE9PT10KXJldHVybltuWzBdXTtmb3IodmFyIGk9KG5bMV0tblswXSkvKHQtMSkscj1bXSxvPTA7bzx0O28rKylyLnB1c2goblswXStpKm8pO3JldHVybiByfSxlLnByb3RvdHlwZS5fc2V0dXA9ZnVuY3Rpb24oKXt0LnByb3RvdHlwZS5fc2V0dXAuY2FsbCh0aGlzKSx0aGlzLl9zd2F0Y2hDb250YWluZXI9dGhpcy5jb250ZW50KCkuYXBwZW5kKCJnIikuY2xhc3NlZCgic3dhdGNoLWNvbnRhaW5lciIsITApLHRoaXMuX3N3YXRjaEJvdW5kaW5nQm94PXRoaXMuY29udGVudCgpLmFwcGVuZCgicmVjdCIpLmNsYXNzZWQoInN3YXRjaC1ib3VuZGluZy1ib3giLCEwKSx0aGlzLl9sb3dlckxhYmVsPXRoaXMuY29udGVudCgpLmFwcGVuZCgiZyIpLmNsYXNzZWQoZS5MRUdFTkRfTEFCRUxfQ0xBU1MsITApLHRoaXMuX3VwcGVyTGFiZWw9dGhpcy5jb250ZW50KCkuYXBwZW5kKCJnIikuY2xhc3NlZChlLkxFR0VORF9MQUJFTF9DTEFTUywhMCk7dmFyIG49bmV3IEN3dC5TdmdDb250ZXh0KHRoaXMuY29udGVudCgpLm5vZGUoKSk7dGhpcy5fbWVhc3VyZXI9bmV3IEN3dC5NZWFzdXJlcihuKSx0aGlzLl93cmFwcGVyPW5ldyBDd3QuV3JhcHBlcix0aGlzLl93cml0ZXI9bmV3IEN3dC5Xcml0ZXIodGhpcy5fbWVhc3VyZXIsbix0aGlzLl93cmFwcGVyKX0sZS5wcm90b3R5cGUucmVxdWVzdGVkU3BhY2U9ZnVuY3Rpb24odCxuKXt2YXIgaSxyLG89dGhpcyxhPXRoaXMuX21lYXN1cmVyLm1lYXN1cmUoKS5oZWlnaHQscz1hLGw9dGhpcy5fc2NhbGUuZG9tYWluKCkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gby5fbWVhc3VyZXIubWVhc3VyZShvLl9mb3JtYXR0ZXIodCkpLndpZHRofSkpLGM9ZS5fREVGQVVMVF9OVU1fU1dBVENIRVM7aWYodGhpcy5faXNWZXJ0aWNhbCgpKXt2YXIgdT1Md3QuTWF0aC5tYXgobCwwKTtyPXMrYSt0aGlzLl90ZXh0UGFkZGluZyt1K3RoaXMuX3RleHRQYWRkaW5nLGk9YyphfWVsc2UgaT1zK2ErcyxyPXRoaXMuX3RleHRQYWRkaW5nK2xbMF0rYyphK2xbMV0rdGhpcy5fdGV4dFBhZGRpbmc7cmV0dXJue21pbldpZHRoOnIsbWluSGVpZ2h0Oml9fSxlLnByb3RvdHlwZS5faXNWZXJ0aWNhbD1mdW5jdGlvbigpe3JldHVybiJob3Jpem9udGFsIiE9PXRoaXMuX29yaWVudGF0aW9ufSxlLnByb3RvdHlwZS5yZW5kZXJJbW1lZGlhdGVseT1mdW5jdGlvbigpe3ZhciBlPXRoaXM7dC5wcm90b3R5cGUucmVuZGVySW1tZWRpYXRlbHkuY2FsbCh0aGlzKTt2YXIgbixpLHIsbyxhLHMsbD10aGlzLl9zY2FsZS5kb21haW4oKSxjPXRoaXMuX2Zvcm1hdHRlcihsWzBdKSx1PXRoaXMuX21lYXN1cmVyLm1lYXN1cmUoYykud2lkdGgsaD10aGlzLl9mb3JtYXR0ZXIobFsxXSksZD10aGlzLl9tZWFzdXJlci5tZWFzdXJlKGgpLndpZHRoLHA9dGhpcy5fbWVhc3VyZXIubWVhc3VyZSgpLmhlaWdodCxmPXRoaXMuX3RleHRQYWRkaW5nLG09e3g6MCx5OjB9LGc9e3g6MCx5OjB9LF89e3hBbGlnbjoiY2VudGVyIix5QWxpZ246ImNlbnRlciIsdGV4dFJvdGF0aW9uOjB9LHk9e3hBbGlnbjoiY2VudGVyIix5QWxpZ246ImNlbnRlciIsdGV4dFJvdGF0aW9uOjB9LHY9e3g6MCx5OjAsd2lkdGg6MCxoZWlnaHQ6MH07aWYodGhpcy5faXNWZXJ0aWNhbCgpKXtzPU1hdGguZmxvb3IodGhpcy5oZWlnaHQoKSk7dmFyIGI9TWF0aC5tYXgodSxkKTthPSh0aGlzLndpZHRoKCktYi0yKnRoaXMuX3RleHRQYWRkaW5nKS8yLG49TWF0aC5tYXgodGhpcy53aWR0aCgpLWEtMipmLWIsMCksaT0xLG89ZnVuY3Rpb24odCxuKXtyZXR1cm4gZS5oZWlnaHQoKS0obisxKX0seS55QWxpZ249InRvcCIsbS55PTAsXy55QWxpZ249ImJvdHRvbSIsZy55PTAsImxlZnQiPT09dGhpcy5fb3JpZW50YXRpb24/KHI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZitiK2Z9LHkueEFsaWduPSJyaWdodCIsbS54PS0oYStuK2YpLF8ueEFsaWduPSJyaWdodCIsZy54PS0oYStuK2YpKToocj1mdW5jdGlvbih0LGUpe3JldHVybiBhfSx5LnhBbGlnbj0ibGVmdCIsbS54PWErbitmLF8ueEFsaWduPSJsZWZ0IixnLng9YStuK2YpLHYud2lkdGg9bix2LmhlaWdodD1zKml9ZWxzZSBhPU1hdGgubWF4KGYsKHRoaXMuaGVpZ2h0KCktcCkvMikscz1NYXRoLm1heChNYXRoLmZsb29yKHRoaXMud2lkdGgoKS00KmYtdS1kKSwwKSxuPTEsaT1NYXRoLm1heCh0aGlzLmhlaWdodCgpLTIqYSwwKSxyPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIE1hdGguZmxvb3IodSsyKmYpK2V9LG89ZnVuY3Rpb24odCxlKXtyZXR1cm4gYX0seS54QWxpZ249InJpZ2h0IixtLng9LWYsXy54QWxpZ249ImxlZnQiLGcueD1mLHYueT1hLHYud2lkdGg9cypuLHYuaGVpZ2h0PWk7di54PXIobnVsbCwwKSx0aGlzLl91cHBlckxhYmVsLnRleHQoIiIpLHRoaXMuX3dyaXRlci53cml0ZShoLHRoaXMud2lkdGgoKSx0aGlzLmhlaWdodCgpLHksdGhpcy5fdXBwZXJMYWJlbC5ub2RlKCkpLHRoaXMuX3VwcGVyTGFiZWwuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrbS54KyIsICIrbS55KyIpIiksdGhpcy5fbG93ZXJMYWJlbC50ZXh0KCIiKSx0aGlzLl93cml0ZXIud3JpdGUoYyx0aGlzLndpZHRoKCksdGhpcy5oZWlnaHQoKSxfLHRoaXMuX2xvd2VyTGFiZWwubm9kZSgpKSx0aGlzLl9sb3dlckxhYmVsLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK2cueCsiLCAiK2cueSsiKSIpLHRoaXMuX3N3YXRjaEJvdW5kaW5nQm94LmF0dHJzKHYpO3ZhciB4PXRoaXMuX2dlbmVyYXRlVGlja3Mocyksdz10aGlzLl9zd2F0Y2hDb250YWluZXIuc2VsZWN0QWxsKCJyZWN0LnN3YXRjaCIpLmRhdGEoeCksUz13LmVudGVyKCkuYXBwZW5kKCJyZWN0IikuY2xhc3NlZCgic3dhdGNoIiwhMCksTT13Lm1lcmdlKFMpO3JldHVybiB3LmV4aXQoKS5yZW1vdmUoKSxNLmF0dHJzKHtmaWxsOmZ1bmN0aW9uKHQsbil7cmV0dXJuIGUuX3NjYWxlLnNjYWxlKHQpfSx3aWR0aDpuLGhlaWdodDppLHg6cix5Om8sInNoYXBlLXJlbmRlcmluZyI6ImNyaXNwRWRnZXMifSksQXd0LkFERF9USVRMRV9FTEVNRU5UUyYmUy5hcHBlbmQoInRpdGxlIikudGV4dCgoZnVuY3Rpb24odCl7cmV0dXJuIGUuX2Zvcm1hdHRlcih0KX0pKSx0aGlzfSxlLl9ERUZBVUxUX05VTV9TV0FUQ0hFUz0xMSxlLkxFR0VORF9MQUJFTF9DTEFTUz0ibGVnZW5kLWxhYmVsIixlfSkoT190LkNvbXBvbmVudCk7RXd0LkludGVycG9sYXRlZENvbG9yTGVnZW5kPVB3dDt2YXIgTnd0PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqL09iamVjdC5kZWZpbmVQcm9wZXJ0eShOd3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBJd3Q9Qk8sUnd0PUxndCxPd3Q9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuKXt2b2lkIDA9PT1lJiYoZT0iIiksdm9pZCAwPT09biYmKG49MCk7dmFyIGk9dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBpLmFkZENsYXNzKCJsYWJlbCIpLGkudGV4dChlKSxpLmFuZ2xlKG4pLGkueEFsaWdubWVudCgiY2VudGVyIikueUFsaWdubWVudCgiY2VudGVyIiksaS5fcGFkZGluZz0wLGl9cmV0dXJuIEl3dC5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5yZXF1ZXN0ZWRTcGFjZT1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuX21lYXN1cmVyLm1lYXN1cmUodGhpcy5fdGV4dCk7cmV0dXJue21pbldpZHRoOigwPT09dGhpcy5hbmdsZSgpP24ud2lkdGg6bi5oZWlnaHQpKzIqdGhpcy5wYWRkaW5nKCksbWluSGVpZ2h0OigwPT09dGhpcy5hbmdsZSgpP24uaGVpZ2h0Om4ud2lkdGgpKzIqdGhpcy5wYWRkaW5nKCl9fSxlLnByb3RvdHlwZS5fc2V0dXA9ZnVuY3Rpb24oKXt0LnByb3RvdHlwZS5fc2V0dXAuY2FsbCh0aGlzKSx0aGlzLl90ZXh0Q29udGFpbmVyPXRoaXMuY29udGVudCgpLmFwcGVuZCgiZyIpO3ZhciBlPW5ldyBSd3QuU3ZnQ29udGV4dCh0aGlzLl90ZXh0Q29udGFpbmVyLm5vZGUoKSk7dGhpcy5fbWVhc3VyZXI9bmV3IFJ3dC5DYWNoZU1lYXN1cmVyKGUpLHRoaXMuX3dyYXBwZXI9bmV3IFJ3dC5XcmFwcGVyLHRoaXMuX3dyaXRlcj1uZXcgUnd0LldyaXRlcih0aGlzLl9tZWFzdXJlcixlLHRoaXMuX3dyYXBwZXIpLHRoaXMudGV4dCh0aGlzLl90ZXh0KX0sZS5wcm90b3R5cGUudGV4dD1mdW5jdGlvbih0KXtpZihudWxsPT10KXJldHVybiB0aGlzLl90ZXh0O2lmKCJzdHJpbmciIT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3IoIkxhYmVsLnRleHQoKSBvbmx5IHRha2VzIHN0cmluZ3MgYXMgaW5wdXQiKTtyZXR1cm4gdGhpcy5fdGV4dD10LHRoaXMucmVkcmF3KCksdGhpc30sZS5wcm90b3R5cGUuYW5nbGU9ZnVuY3Rpb24odCl7aWYobnVsbD09dClyZXR1cm4gdGhpcy5fYW5nbGU7aWYoKHQlPTM2MCk+MTgwP3QtPTM2MDp0PC0xODAmJih0Kz0zNjApLC05MCE9PXQmJjAhPT10JiY5MCE9PXQpdGhyb3cgbmV3IEVycm9yKHQrIiBpcyBub3QgYSB2YWxpZCBhbmdsZSBmb3IgTGFiZWwiKTtyZXR1cm4gdGhpcy5fYW5nbGU9dCx0aGlzLnJlZHJhdygpLHRoaXN9LGUucHJvdG90eXBlLnBhZGRpbmc9ZnVuY3Rpb24odCl7aWYobnVsbD09dClyZXR1cm4gdGhpcy5fcGFkZGluZztpZigodD0rdCk8MCl0aHJvdyBuZXcgRXJyb3IodCsiIGlzIG5vdCBhIHZhbGlkIHBhZGRpbmcgdmFsdWUuIENhbm5vdCBiZSBsZXNzIHRoYW4gMC4iKTtyZXR1cm4gdGhpcy5fcGFkZGluZz10LHRoaXMucmVkcmF3KCksdGhpc30sZS5wcm90b3R5cGUuZml4ZWRXaWR0aD1mdW5jdGlvbigpe3JldHVybiEwfSxlLnByb3RvdHlwZS5maXhlZEhlaWdodD1mdW5jdGlvbigpe3JldHVybiEwfSxlLnByb3RvdHlwZS5yZW5kZXJJbW1lZGlhdGVseT1mdW5jdGlvbigpe3QucHJvdG90eXBlLnJlbmRlckltbWVkaWF0ZWx5LmNhbGwodGhpcyksdGhpcy5fdGV4dENvbnRhaW5lci5zZWxlY3RBbGwoImciKS5yZW1vdmUoKTt2YXIgZT10aGlzLl9tZWFzdXJlci5tZWFzdXJlKHRoaXMuX3RleHQpLG49TWF0aC5tYXgoTWF0aC5taW4oKHRoaXMuaGVpZ2h0KCktZS5oZWlnaHQpLzIsdGhpcy5wYWRkaW5nKCkpLDApLGk9TWF0aC5tYXgoTWF0aC5taW4oKHRoaXMud2lkdGgoKS1lLndpZHRoKS8yLHRoaXMucGFkZGluZygpKSwwKTt0aGlzLl90ZXh0Q29udGFpbmVyLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK2krIiwiK24rIikiKTt2YXIgcj10aGlzLndpZHRoKCktMippLG89dGhpcy5oZWlnaHQoKS0yKm4sYT17eEFsaWduOnRoaXMueEFsaWdubWVudCgpLHlBbGlnbjp0aGlzLnlBbGlnbm1lbnQoKSx0ZXh0Um90YXRpb246dGhpcy5hbmdsZSgpfTtyZXR1cm4gdGhpcy5fd3JpdGVyLndyaXRlKHRoaXMuX3RleHQscixvLGEpLHRoaXN9LGUucHJvdG90eXBlLmludmFsaWRhdGVDYWNoZT1mdW5jdGlvbigpe3QucHJvdG90eXBlLmludmFsaWRhdGVDYWNoZS5jYWxsKHRoaXMpLHRoaXMuX21lYXN1cmVyLnJlc2V0KCl9LGV9KShPX3QuQ29tcG9uZW50KTtOd3QuTGFiZWw9T3d0O3ZhciB6d3Q9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUobixpKXt2YXIgcj10LmNhbGwodGhpcyxuLGkpfHx0aGlzO3JldHVybiByLmFkZENsYXNzKGUuVElUTEVfTEFCRUxfQ0xBU1MpLHJ9cmV0dXJuIEl3dC5fX2V4dGVuZHMoZSx0KSxlLlRJVExFX0xBQkVMX0NMQVNTPSJ0aXRsZS1sYWJlbCIsZX0pKE93dCk7Tnd0LlRpdGxlTGFiZWw9end0O3ZhciBEd3Q9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUobixpKXt2YXIgcj10LmNhbGwodGhpcyxuLGkpfHx0aGlzO3JldHVybiByLmFkZENsYXNzKGUuQVhJU19MQUJFTF9DTEFTUykscn1yZXR1cm4gSXd0Ll9fZXh0ZW5kcyhlLHQpLGUuQVhJU19MQUJFTF9DTEFTUz0iYXhpcy1sYWJlbCIsZX0pKE93dCk7Tnd0LkF4aXNMYWJlbD1Ed3Q7dmFyIEJ3dD17fSxId3Q9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShId3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBGd3Q9d3B0O0h3dC5jaXJjbGU9ZnVuY3Rpb24gVnd0KCl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBGd3Quc3ltYm9sKCkudHlwZShGd3Quc3ltYm9sQ2lyY2xlKS5zaXplKE1hdGguUEkqTWF0aC5wb3codC8yLDIpKX19LEh3dC5zcXVhcmU9ZnVuY3Rpb24gVXd0KCl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBGd3Quc3ltYm9sKCkudHlwZShGd3Quc3ltYm9sU3F1YXJlKS5zaXplKE1hdGgucG93KHQsMikpfX0sSHd0LmNyb3NzPWZ1bmN0aW9uIGp3dCgpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gRnd0LnN5bWJvbCgpLnR5cGUoRnd0LnN5bWJvbENyb3NzKS5zaXplKDUvOSpNYXRoLnBvdyh0LDIpKX19LEh3dC5kaWFtb25kPWZ1bmN0aW9uIEd3dCgpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gRnd0LnN5bWJvbCgpLnR5cGUoRnd0LnN5bWJvbERpYW1vbmQpLnNpemUoTWF0aC50YW4oTWF0aC5QSS82KSpNYXRoLnBvdyh0LDIpLzIpfX0sSHd0LnRyaWFuZ2xlPWZ1bmN0aW9uIFd3dCgpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gRnd0LnN5bWJvbCgpLnR5cGUoRnd0LnN5bWJvbFRyaWFuZ2xlKS5zaXplKE1hdGguc3FydCgzKSpNYXRoLnBvdyh0LzIsMikpfX07SHd0LnN0YXI9ZnVuY3Rpb24gcXd0KCl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBGd3Quc3ltYm9sKCkudHlwZShGd3Quc3ltYm9sU3Rhcikuc2l6ZSguODkwODEzMDkxNTI5Mjg1MipNYXRoLnBvdyh0LzIsMikpfX07dmFyIFl3dD0zKigxL01hdGguc3FydCgxMikvMisxKTtId3Qud3llPWZ1bmN0aW9uIFh3dCgpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gRnd0LnN5bWJvbCgpLnR5cGUoRnd0LnN5bWJvbFd5ZSkuc2l6ZShZd3QqTWF0aC5wb3codC8yLjQsMikpfX0sCi8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShCd3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciAkd3Q9Qk8sS3d0PXdwdCxad3Q9TGd0LEp3dD1DeXQsUXd0PXB2dCx0U3Q9SHd0LGVTdD1EX3QsblN0PU9fdCxpU3Q9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUsbil7dm9pZCAwPT09dCYmKHQ9W10pLHZvaWQgMD09PWUmJihlPTApLHZvaWQgMD09PW4mJihuPTEvMCksdGhpcy5jb2x1bW5zPXQsdGhpcy5ib3R0b21QYWRkaW5nPWUsdGhpcy5tYXhXaWR0aD1ufXJldHVybiB0LnByb3RvdHlwZS5hZGRDb2x1bW49ZnVuY3Rpb24odCl7dmFyIGU9dC53aWR0aCxuPXRoaXMuZ2V0V2lkdGhBdmFpbGFibGUoKTt0LndpZHRoPU1hdGgubWluKG4sZSksdGhpcy5jb2x1bW5zLnB1c2godCl9LHQucHJvdG90eXBlLmdldEJvdW5kcz1mdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy5jb2x1bW5zW3RdLG49MCxpPTA7aTx0O2krKyluKz10aGlzLmNvbHVtbnNbaV0ud2lkdGg7cmV0dXJue3RvcExlZnQ6e3g6bix5OjB9LGJvdHRvbVJpZ2h0Ont4Om4rZS53aWR0aCx5OmUuaGVpZ2h0fX19LHQucHJvdG90eXBlLmdldEhlaWdodD1mdW5jdGlvbigpe3JldHVybiBlU3QuTWF0aC5tYXgodGhpcy5jb2x1bW5zLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuaGVpZ2h0fSkpLDApK3RoaXMuYm90dG9tUGFkZGluZ30sdC5wcm90b3R5cGUuZ2V0V2lkdGg9ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5taW4odGhpcy5jb2x1bW5zLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCtlLndpZHRofSksMCksdGhpcy5tYXhXaWR0aCl9LHQucHJvdG90eXBlLmdldFdpZHRoQXZhaWxhYmxlPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5nZXRXaWR0aCgpO3JldHVybiBNYXRoLm1heCh0aGlzLm1heFdpZHRoLXQsMCl9LHR9KSgpLHJTdD0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuLGkpe3ZvaWQgMD09PXQmJih0PTEvMCksdm9pZCAwPT09ZSYmKGU9MS8wKSx2b2lkIDA9PT1uJiYobj0wKSx2b2lkIDA9PT1pJiYoaT1bXSksdGhpcy5tYXhXaWR0aD10LHRoaXMubWF4SGVpZ2h0PWUsdGhpcy5wYWRkaW5nPW4sdGhpcy5yb3dzPWl9cmV0dXJuIHQucHJvdG90eXBlLmFkZFJvdz1mdW5jdGlvbih0KXt0Lm1heFdpZHRoPXRoaXMubWF4V2lkdGgtMip0aGlzLnBhZGRpbmcsdGhpcy5yb3dzLnB1c2godCl9LHQucHJvdG90eXBlLmdldENvbHVtbkJvdW5kcz1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuZ2V0Um93Qm91bmRzKHQpLGk9dGhpcy5yb3dzW3RdLmdldEJvdW5kcyhlKTtyZXR1cm4gaS50b3BMZWZ0LngrPW4udG9wTGVmdC54LGkuYm90dG9tUmlnaHQueCs9bi50b3BMZWZ0LngsaS50b3BMZWZ0LnkrPW4udG9wTGVmdC55LGkuYm90dG9tUmlnaHQueSs9bi50b3BMZWZ0LnksaX0sdC5wcm90b3R5cGUuZ2V0Um93Qm91bmRzPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLnBhZGRpbmcsbj10aGlzLnBhZGRpbmcsaT0wO2k8dDtpKyspbis9dGhpcy5yb3dzW2ldLmdldEhlaWdodCgpO3JldHVybnt0b3BMZWZ0Ont4OmUseTpufSxib3R0b21SaWdodDp7eDplK3RoaXMucm93c1t0XS5nZXRXaWR0aCgpLHk6bit0aGlzLnJvd3NbdF0uZ2V0SGVpZ2h0KCl9fX0sdC5wcm90b3R5cGUuZ2V0SGVpZ2h0PWZ1bmN0aW9uKCl7cmV0dXJuIE1hdGgubWluKHRoaXMucm93cy5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQrZS5nZXRIZWlnaHQoKX0pLDApKzIqdGhpcy5wYWRkaW5nLHRoaXMubWF4SGVpZ2h0KX0sdC5wcm90b3R5cGUuZ2V0V2lkdGg9ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5taW4oZVN0Lk1hdGgubWF4KHRoaXMucm93cy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFdpZHRoKCl9KSksMCkrMip0aGlzLnBhZGRpbmcsdGhpcy5tYXhXaWR0aCl9LHR9KSgpLG9TdD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlKXt2YXIgbj10LmNhbGwodGhpcyl8fHRoaXM7aWYobi5fcGFkZGluZz01LG4uX3Jvd0JvdHRvbVBhZGRpbmc9MyxuLmFkZENsYXNzKCJsZWdlbmQiKSxuLm1heEVudHJpZXNQZXJSb3coMSksbnVsbD09ZSl0aHJvdyBuZXcgRXJyb3IoIkxlZ2VuZCByZXF1aXJlcyBhIGNvbG9yU2NhbGUiKTtyZXR1cm4gbi5fY29sb3JTY2FsZT1lLG4uX3JlZHJhd0NhbGxiYWNrPWZ1bmN0aW9uKHQpe3JldHVybiBuLnJlZHJhdygpfSxuLl9jb2xvclNjYWxlLm9uVXBkYXRlKG4uX3JlZHJhd0NhbGxiYWNrKSxuLl9mb3JtYXR0ZXI9UXd0LmlkZW50aXR5KCksbi5tYXhMaW5lc1BlckVudHJ5KDEpLG4ueEFsaWdubWVudCgicmlnaHQiKS55QWxpZ25tZW50KCJ0b3AiKSxuLmNvbXBhcmF0b3IoKGZ1bmN0aW9uKHQsZSl7dmFyIGk9bi5fY29sb3JTY2FsZS5kb21haW4oKS5zbGljZSgpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIG4uX2Zvcm1hdHRlcih0KX0pKTtyZXR1cm4gaS5pbmRleE9mKHQpLWkuaW5kZXhPZihlKX0pKSxuLl9zeW1ib2xGYWN0b3J5QWNjZXNzb3I9ZnVuY3Rpb24oKXtyZXR1cm4gdFN0LmNpcmNsZSgpfSxuLl9zeW1ib2xPcGFjaXR5QWNjZXNzb3I9ZnVuY3Rpb24oKXtyZXR1cm4gMX0sbn1yZXR1cm4gJHd0Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLl9zZXR1cD1mdW5jdGlvbigpe3QucHJvdG90eXBlLl9zZXR1cC5jYWxsKHRoaXMpO3ZhciBuPXRoaXMuY29udGVudCgpLmFwcGVuZCgiZyIpLmNsYXNzZWQoZS5MRUdFTkRfUk9XX0NMQVNTLCEwKTtuLmFwcGVuZCgiZyIpLmNsYXNzZWQoZS5MRUdFTkRfRU5UUllfQ0xBU1MsITApLmFwcGVuZCgidGV4dCIpO3ZhciBpPW5ldyBad3QuU3ZnQ29udGV4dChuLm5vZGUoKSxudWxsLEp3dC5BRERfVElUTEVfRUxFTUVOVFMpO3RoaXMuX21lYXN1cmVyPW5ldyBad3QuQ2FjaGVNZWFzdXJlcihpKSx0aGlzLl93cmFwcGVyPShuZXcgWnd0LldyYXBwZXIpLm1heExpbmVzKHRoaXMubWF4TGluZXNQZXJFbnRyeSgpKSx0aGlzLl93cml0ZXI9bmV3IFp3dC5Xcml0ZXIodGhpcy5fbWVhc3VyZXIsaSx0aGlzLl93cmFwcGVyKX0sZS5wcm90b3R5cGUuZm9ybWF0dGVyPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX2Zvcm1hdHRlcjoodGhpcy5fZm9ybWF0dGVyPXQsdGhpcy5yZWRyYXcoKSx0aGlzKX0sZS5wcm90b3R5cGUubWF4RW50cmllc1BlclJvdz1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9tYXhFbnRyaWVzUGVyUm93Oih0aGlzLl9tYXhFbnRyaWVzUGVyUm93PXQsdGhpcy5yZWRyYXcoKSx0aGlzKX0sZS5wcm90b3R5cGUubWF4TGluZXNQZXJFbnRyeT1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9tYXhMaW5lc1BlckVudHJ5Oih0aGlzLl9tYXhMaW5lc1BlckVudHJ5PXQsdGhpcy5yZWRyYXcoKSx0aGlzKX0sZS5wcm90b3R5cGUubWF4V2lkdGg9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fbWF4V2lkdGg6KHRoaXMuX21heFdpZHRoPXQsdGhpcy5yZWRyYXcoKSx0aGlzKX0sZS5wcm90b3R5cGUuY29tcGFyYXRvcj1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9jb21wYXJhdG9yOih0aGlzLl9jb21wYXJhdG9yPXQsdGhpcy5yZWRyYXcoKSx0aGlzKX0sZS5wcm90b3R5cGUuY29sb3JTY2FsZT1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9dD8odGhpcy5fY29sb3JTY2FsZS5vZmZVcGRhdGUodGhpcy5fcmVkcmF3Q2FsbGJhY2spLHRoaXMuX2NvbG9yU2NhbGU9dCx0aGlzLl9jb2xvclNjYWxlLm9uVXBkYXRlKHRoaXMuX3JlZHJhd0NhbGxiYWNrKSx0aGlzLnJlZHJhdygpLHRoaXMpOnRoaXMuX2NvbG9yU2NhbGV9LGUucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt0LnByb3RvdHlwZS5kZXN0cm95LmNhbGwodGhpcyksdGhpcy5fY29sb3JTY2FsZS5vZmZVcGRhdGUodGhpcy5fcmVkcmF3Q2FsbGJhY2spfSxlLnByb3RvdHlwZS5fYnVpbGRMZWdlbmRUYWJsZT1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMsaT10aGlzLl9tZWFzdXJlci5tZWFzdXJlKCkuaGVpZ2h0LHI9bmV3IHJTdCh0LGUsdGhpcy5fcGFkZGluZyksbz10aGlzLl9jb2xvclNjYWxlLmRvbWFpbigpLnNsaWNlKCkuc29ydCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gbi5fY29tcGFyYXRvcihuLl9mb3JtYXR0ZXIodCksbi5fZm9ybWF0dGVyKGUpKX0pKSxhPW5ldyBpU3Q7cmV0dXJuIHIuYWRkUm93KGEpLGEuYm90dG9tUGFkZGluZz10aGlzLl9yb3dCb3R0b21QYWRkaW5nLG8uZm9yRWFjaCgoZnVuY3Rpb24odCxlKXthLmNvbHVtbnMubGVuZ3RoLzI9PT1uLm1heEVudHJpZXNQZXJSb3coKSYmKChhPW5ldyBpU3QpLmJvdHRvbVBhZGRpbmc9bi5fcm93Qm90dG9tUGFkZGluZyxyLmFkZFJvdyhhKSk7dmFyIG89YS5nZXRXaWR0aEF2YWlsYWJsZSgpLHM9bi5fZm9ybWF0dGVyKHQpLGw9bi5fbWVhc3VyZXIubWVhc3VyZShzKS53aWR0aDtvLWktbDwwJiZhLmNvbHVtbnMubGVuZ3RoPjEmJigoYT1uZXcgaVN0KS5ib3R0b21QYWRkaW5nPW4uX3Jvd0JvdHRvbVBhZGRpbmcsci5hZGRSb3coYSkpLGEuYWRkQ29sdW1uKHt3aWR0aDppLGhlaWdodDppLGRhdGE6e25hbWU6dCx0eXBlOiJzeW1ib2wifX0pLG89YS5nZXRXaWR0aEF2YWlsYWJsZSgpO3ZhciBjPU1hdGgubWluKG8sbCk7bi5fd3JhcHBlci5tYXhMaW5lcyhuLm1heExpbmVzUGVyRW50cnkoKSk7dmFyIHU9bi5fd3JhcHBlci53cmFwKHMsbi5fbWVhc3VyZXIsYykubm9MaW5lczthLmFkZENvbHVtbih7d2lkdGg6YyxoZWlnaHQ6dSppLGRhdGE6e25hbWU6dCx0eXBlOiJ0ZXh0In19KX0pKSxyfSxlLnByb3RvdHlwZS5yZXF1ZXN0ZWRTcGFjZT1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuX2J1aWxkTGVnZW5kVGFibGUoZVN0Lk1hdGgubWluKFt0aGlzLm1heFdpZHRoKCksdF0sdCksZSk7cmV0dXJue21pbkhlaWdodDpuLmdldEhlaWdodCgpLG1pbldpZHRoOm4uZ2V0V2lkdGgoKX19LGUucHJvdG90eXBlLmVudGl0aWVzQXQ9ZnVuY3Rpb24odCl7dmFyIG49dGhpcztpZighdGhpcy5faXNTZXR1cClyZXR1cm5bXTt2YXIgaT10aGlzLl9idWlsZExlZ2VuZFRhYmxlKHRoaXMud2lkdGgoKSx0aGlzLmhlaWdodCgpKTtyZXR1cm4gaS5yb3dzLnJlZHVjZSgoZnVuY3Rpb24ocixvLGEpe2lmKDAhPT1yLmxlbmd0aClyZXR1cm4gcjt2YXIgcz1pLmdldFJvd0JvdW5kcyhhKTtyZXR1cm4gZVN0Lk1hdGgud2l0aGluKHQscyk/by5jb2x1bW5zLnJlZHVjZSgoZnVuY3Rpb24ocixvLHMpe3ZhciBsPWkuZ2V0Q29sdW1uQm91bmRzKGEscyk7aWYoZVN0Lk1hdGgud2l0aGluKHQsbCkpe3ZhciBjPW4uY29udGVudCgpLnNlbGVjdEFsbCgiLiIrZS5MRUdFTkRfUk9XX0NMQVNTKS5ub2RlcygpW2FdLHU9S3d0LnNlbGVjdChjKS5zZWxlY3RBbGwoIi4iK2UuTEVHRU5EX0VOVFJZX0NMQVNTKS5ub2RlcygpW01hdGguZmxvb3Iocy8yKV0saD1Ld3Quc2VsZWN0KHUpLnNlbGVjdCgiLiIrZS5MRUdFTkRfU1lNQk9MX0NMQVNTKSxkPWVTdC5ET00uZ2V0VHJhbnNsYXRlVmFsdWVzKEt3dC5zZWxlY3QoYykpLHA9ZVN0LkRPTS5nZXRUcmFuc2xhdGVWYWx1ZXMoaCk7cmV0dXJuW3tib3VuZHM6ZVN0LkRPTS5lbGVtZW50QkJveChLd3Quc2VsZWN0KGMpKSxkYXR1bTpvLmRhdGEubmFtZSxwb3NpdGlvbjp7eDpkWzBdK3BbMF0seTpkWzFdK3BbMV19LHNlbGVjdGlvbjpLd3Quc2VsZWN0KHUpLGNvbXBvbmVudDpufV19cmV0dXJuIHJ9KSxyKTpyfSksW10pfSxlLnByb3RvdHlwZS5yZW5kZXJJbW1lZGlhdGVseT1mdW5jdGlvbigpe3QucHJvdG90eXBlLnJlbmRlckltbWVkaWF0ZWx5LmNhbGwodGhpcyk7dmFyIG49dGhpcy5fYnVpbGRMZWdlbmRUYWJsZSh0aGlzLndpZHRoKCksdGhpcy5oZWlnaHQoKSk7dGhpcy5jb250ZW50KCkuc2VsZWN0QWxsKCIqIikucmVtb3ZlKCk7dmFyIGk9dGhpcy5jb250ZW50KCkuc2VsZWN0QWxsKCJnLiIrZS5MRUdFTkRfUk9XX0NMQVNTKS5kYXRhKG4ucm93cykscj1pLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZChlLkxFR0VORF9ST1dfQ0xBU1MsITApLm1lcmdlKGkpO2kuZXhpdCgpLnJlbW92ZSgpLHIuYXR0cigidHJhbnNmb3JtIiwoZnVuY3Rpb24odCxlKXt2YXIgaT1uLmdldFJvd0JvdW5kcyhlKTtyZXR1cm4idHJhbnNsYXRlKCIraS50b3BMZWZ0LngrIiwgIitpLnRvcExlZnQueSsiKSJ9KSk7dmFyIG89dGhpcztyZXR1cm4gci5lYWNoKChmdW5jdGlvbih0LGkpe2Zvcih2YXIgcj1bXSxhPTA7YTx0LmNvbHVtbnMubGVuZ3RoO2ErPTIpci5wdXNoKFt0LmNvbHVtbnNbYV0sdC5jb2x1bW5zW2ErMV1dKTt2YXIgcz1Ld3Quc2VsZWN0KHRoaXMpLnNlbGVjdEFsbCgiZy4iK2UuTEVHRU5EX0VOVFJZX0NMQVNTKS5kYXRhKHIpLGw9cy5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQoZS5MRUdFTkRfRU5UUllfQ0xBU1MsITApLm1lcmdlKHMpO2wuYXBwZW5kKCJwYXRoIikuYXR0cigiZCIsKGZ1bmN0aW9uKHQsZSl7dmFyIG49dFswXTtyZXR1cm4gby5zeW1ib2woKShuLmRhdGEubmFtZSxpKSguNipuLmhlaWdodCkobnVsbCl9KSkuYXR0cigidHJhbnNmb3JtIiwoZnVuY3Rpb24odCxlKXt2YXIgcj10WzBdLG89bi5yb3dzW2ldLmNvbHVtbnMuaW5kZXhPZihyKTtyZXR1cm4idHJhbnNsYXRlKCIrKG4uZ2V0Q29sdW1uQm91bmRzKGksbykudG9wTGVmdC54K3Iud2lkdGgvMikrIiwgIityLmhlaWdodC8yKyIpIn0pKS5hdHRyKCJmaWxsIiwoZnVuY3Rpb24odCl7cmV0dXJuIG8uX2NvbG9yU2NhbGUuc2NhbGUodFswXS5kYXRhLm5hbWUpfSkpLmF0dHIoIm9wYWNpdHkiLChmdW5jdGlvbih0LGUpe3JldHVybiBvLnN5bWJvbE9wYWNpdHkoKSh0WzBdLmRhdGEubmFtZSxpKX0pKS5jbGFzc2VkKGUuTEVHRU5EX1NZTUJPTF9DTEFTUywhMCksbC5hcHBlbmQoImciKS5jbGFzc2VkKCJ0ZXh0LWNvbnRhaW5lciIsITApLmF0dHIoInRyYW5zZm9ybSIsKGZ1bmN0aW9uKHQsZSl7dmFyIHI9bi5yb3dzW2ldLmNvbHVtbnMuaW5kZXhPZih0WzFdKTtyZXR1cm4idHJhbnNsYXRlKCIrbi5nZXRDb2x1bW5Cb3VuZHMoaSxyKS50b3BMZWZ0LngrIiwgMCkifSkpLmVhY2goKGZ1bmN0aW9uKHQsZSxuKXt2YXIgaT1Ld3Quc2VsZWN0KHRoaXMpLHI9dFsxXTtvLl93cml0ZXIud3JpdGUoby5fZm9ybWF0dGVyKHIuZGF0YS5uYW1lKSxyLndpZHRoLG8uaGVpZ2h0KCkse3hBbGlnbjoibGVmdCIseUFsaWduOiJ0b3AiLHRleHRSb3RhdGlvbjowfSxpLm5vZGUoKSl9KSkscy5leGl0KCkucmVtb3ZlKCl9KSksdGhpc30sZS5wcm90b3R5cGUuc3ltYm9sPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX3N5bWJvbEZhY3RvcnlBY2Nlc3NvcjoodGhpcy5fc3ltYm9sRmFjdG9yeUFjY2Vzc29yPXQsdGhpcy5yZW5kZXIoKSx0aGlzKX0sZS5wcm90b3R5cGUuc3ltYm9sT3BhY2l0eT1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9zeW1ib2xPcGFjaXR5QWNjZXNzb3I6KHRoaXMuX3N5bWJvbE9wYWNpdHlBY2Nlc3Nvcj0ibnVtYmVyIj09dHlwZW9mIHQ/ZnVuY3Rpb24oKXtyZXR1cm4gdH06dCx0aGlzLnJlbmRlcigpLHRoaXMpfSxlLnByb3RvdHlwZS5maXhlZFdpZHRoPWZ1bmN0aW9uKCl7cmV0dXJuITB9LGUucHJvdG90eXBlLmZpeGVkSGVpZ2h0PWZ1bmN0aW9uKCl7cmV0dXJuITB9LGUucHJvdG90eXBlLmludmFsaWRhdGVDYWNoZT1mdW5jdGlvbigpe3QucHJvdG90eXBlLmludmFsaWRhdGVDYWNoZS5jYWxsKHRoaXMpLHRoaXMuX21lYXN1cmVyLnJlc2V0KCl9LGUuTEVHRU5EX1JPV19DTEFTUz0ibGVnZW5kLXJvdyIsZS5MRUdFTkRfRU5UUllfQ0xBU1M9ImxlZ2VuZC1lbnRyeSIsZS5MRUdFTkRfU1lNQk9MX0NMQVNTPSJsZWdlbmQtc3ltYm9sIixlfSkoblN0LkNvbXBvbmVudCk7Qnd0LkxlZ2VuZD1vU3Q7dmFyIGFTdD17fSxzU3Q9e30sbFN0PXt9OyEoZnVuY3Rpb24odCl7dmFyIGU7Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSwoZT10LkFuaW1hdG9yfHwodC5BbmltYXRvcj17fSkpLk1BSU49Im1haW4iLGUuUkVTRVQ9InJlc2V0In0pKGxTdCk7dmFyIGNTdD17fSx1U3Q9e30saFN0PXt9LGRTdD1mdW5jdGlvbiB0KGUpe3JldHVybiBudWxsIT1lJiYib2JqZWN0Ij09dHlwZW9mIGUmJiExPT09QXJyYXkuaXNBcnJheShlKX07ZnVuY3Rpb24gcFN0KHQpe3JldHVybiEwPT09ZFN0KHQpJiYiW29iamVjdCBPYmplY3RdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX12YXIgZlN0PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoZlN0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbVN0PURfdCxnU3Q9MCxfU3Q9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe3ZvaWQgMD09PXQmJih0PVtdKSx2b2lkIDA9PT1lJiYoZT17fSksdGhpcy5fdXBkYXRlSWQ9Z1N0KyssdGhpcy5fZGF0YT10LHRoaXMuX21ldGFkYXRhPWUsdGhpcy5fY2FsbGJhY2tzPW5ldyBtU3QuQ2FsbGJhY2tTZXR9cmV0dXJuIHQucHJvdG90eXBlLm9uVXBkYXRlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9jYWxsYmFja3MuYWRkKHQpLHRoaXN9LHQucHJvdG90eXBlLm9mZlVwZGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fY2FsbGJhY2tzLmRlbGV0ZSh0KSx0aGlzfSx0LnByb3RvdHlwZS5kYXRhPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX2RhdGE6KHRoaXMuX2RhdGE9dCx0aGlzLl9kaXNwYXRjaFVwZGF0ZSgpLHRoaXMpfSx0LnByb3RvdHlwZS5tZXRhZGF0YT1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9tZXRhZGF0YToodGhpcy5fbWV0YWRhdGE9dCx0aGlzLl9kaXNwYXRjaFVwZGF0ZSgpLHRoaXMpfSx0LnByb3RvdHlwZS51cGRhdGVJZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl91cGRhdGVJZH0sdC5wcm90b3R5cGUuX2Rpc3BhdGNoVXBkYXRlPWZ1bmN0aW9uKCl7dGhpcy5fdXBkYXRlSWQ9Z1N0KyssdGhpcy5fY2FsbGJhY2tzLmNhbGxDYWxsYmFja3ModGhpcyl9LHR9KSgpO2ZTdC5EYXRhc2V0PV9TdCwKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKiBAZmlsZW92ZXJ2aWV3IEltcGxlbWVudHMgdGhlIFNpZ25hdHVyZSBBUEkgdG8gaGVscCBpbiBjb21wYXJpbmcgd2hlbiB0d28KICAgICAqIFBsb3R0YWJsZSBvYmplY3RzIGhhdmUgImNoYW5nZWQiLgogICAgICoKICAgICAqIE1lbW9pemF0aW9uIGluIFBsb3R0YWJsZSBpcyBjb21wbGljYXRlZCBieSBtdXRhYmxlIHNjYWxlcyBhbmQgZGF0YXNldHMuIFdlIGNhbm5vdCBzaW1wbHkKICAgICAqIHJlZmVyZW5jZSBjb21wYXJlIHR3byBlLmcuIHNjYWxlcyBzaW5jZSBpdCBtYXkgaGF2ZSBpbnRlcm5hbGx5IG11dGF0ZWQuIFRvIHJlc29sdmUgdGhpcywKICAgICAqIHdlIHdyaXRlIGEgcmVjdXJzaXZlIFNpZ25hdHVyZSBpbnRlcmZhY2UgdGhhdCBob2xkcyBhbiBpbW11dGFibGUgc25hcHNob3Qgb2Ygd2hhdGV2ZXIKICAgICAqIHN0YXRlIHRoZSBzY2FsZS9kYXRhIHdhcyBpbiBhdCB0aGUgdGltZS4gVGhlbiBvbiBtZW1vaXplZCBmdW5jdGlvbiBpbnZvY2F0aW9uIHdlIHNpZ24gdGhlCiAgICAgKiBuZXcgaW5wdXRzIGFuZCBjb21wYXJlIHRoZSBzaWduYXR1cmVzIHRvIGRlY2lkZSBpZiB3ZSBzaG91bGQgcmVjb21wdXRlLgogICAgICoKICAgICAqIFdlIG11c3QgaGFuZC13cml0ZSBhIHNpZ25hdHVyZSBmb3IgZWFjaCBjdXN0b20gY2xhc3Mgd2Ugd2lzaCB0byBzdXBwb3J0LgogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShoU3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciB5U3Q9Qk8sdlN0PWZ1bmN0aW9uIHQoZSl7dmFyIG4saTtyZXR1cm4hMSE9PXBTdChlKSYmKCJmdW5jdGlvbiI9PXR5cGVvZihuPWUuY29uc3RydWN0b3IpJiYoITEhPT1wU3QoaT1uLnByb3RvdHlwZSkmJiExIT09aS5oYXNPd25Qcm9wZXJ0eSgiaXNQcm90b3R5cGVPZiIpKSl9LGJTdD1mU3QseFN0PWxidDtmdW5jdGlvbiB3U3QodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBBU3Q/dDp0IGluc3RhbmNlb2YgRGF0ZT9FU3QodC52YWx1ZU9mKCkpOnQgaW5zdGFuY2VvZiB4U3QuU2NhbGU/U1N0KHQpOnQgaW5zdGFuY2VvZiBiU3QuRGF0YXNldD9NU3QodCk6dlN0KHQpP0NTdCh0KTpBcnJheS5pc0FycmF5KHQpP1RTdCh0KTpFU3QodCl9ZnVuY3Rpb24gU1N0KHQpe3JldHVybiBDU3Qoe2RvbWFpbjp0LmRvbWFpbigpLHJhbmdlOnQucmFuZ2UoKSx1cGRhdGVJZDp0LnVwZGF0ZUlkKCkscmVmOkVTdCh0KX0pfWZ1bmN0aW9uIE1TdCh0KXtyZXR1cm4gQ1N0KHtyZWY6RVN0KHQpLHVwZGF0ZUlkOnQudXBkYXRlSWQoKX0pfWZ1bmN0aW9uIEVTdCh0KXtyZXR1cm4gbmV3IExTdCh0KX1mdW5jdGlvbiBUU3QodCl7cmV0dXJuIG5ldyBrU3QodC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB3U3QodCl9KSkpfWZ1bmN0aW9uIENTdCh0KXt2YXIgZT17fTtmb3IodmFyIG4gaW4gdCl0Lmhhc093blByb3BlcnR5KG4pJiYoZVtuXT13U3QodFtuXSkpO3JldHVybiBuZXcgUFN0KGUpfWhTdC5zaWduPXdTdCxoU3Quc2lnblNjYWxlPVNTdCxoU3Quc2lnbkRhdGFzZXQ9TVN0LGhTdC5zaWduUmVmPUVTdCxoU3Quc2lnbkFycmF5PVRTdCxoU3Quc2lnbk9iaj1DU3Q7dmFyIEFTdD0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlwZS5pc0RpZmZlcmVudD1mdW5jdGlvbih0KXtyZXR1cm4hKHQgaW5zdGFuY2VvZiB0aGlzLmNvbnN0cnVjdG9yKXx8dGhpcy5pc1NpZ25hdHVyZURpZmZlcmVudCh0KX0sdH0pKCk7aFN0LlNpZ25hdHVyZT1BU3Q7dmFyIGtTdD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlKXt2YXIgbj10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIG4uYXJyYXk9ZSxufXJldHVybiB5U3QuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUuaXNTaWduYXR1cmVEaWZmZXJlbnQ9ZnVuY3Rpb24odCl7aWYodC5hcnJheS5sZW5ndGghPT10aGlzLmFycmF5Lmxlbmd0aClyZXR1cm4hMDtmb3IodmFyIGU9MDtlPHRoaXMuYXJyYXkubGVuZ3RoO2UrKylpZih0aGlzLmFycmF5W2VdLmlzRGlmZmVyZW50KHQuYXJyYXlbZV0pKXJldHVybiEwO3JldHVybiExfSxlfSkoQVN0KTtoU3QuQXJyYXlTaWduYXR1cmU9a1N0O3ZhciBMU3Q9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7dmFyIG49dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBuLnJlZj1lLG59cmV0dXJuIHlTdC5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5pc1NpZ25hdHVyZURpZmZlcmVudD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5yZWYhPT10LnJlZn0sZX0pKEFTdCk7aFN0LlJlZmVyZW5jZVNpZ25hdHVyZT1MU3Q7dmFyIFBTdD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlKXt2YXIgbj10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIG4ub2JqPWUsbn1yZXR1cm4geVN0Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLmlzU2lnbmF0dXJlRGlmZmVyZW50PWZ1bmN0aW9uKHQpe3ZhciBlPU9iamVjdC5rZXlzKHRoaXMub2JqKSxuPU9iamVjdC5rZXlzKHQub2JqKTtpZihlLmxlbmd0aCE9PW4ubGVuZ3RoKXJldHVybiEwO2Zvcih2YXIgaT0wLHI9ZTtpPHIubGVuZ3RoO2krKyl7dmFyIG89cltpXTtpZighdC5vYmouaGFzT3duUHJvcGVydHkobykpcmV0dXJuITA7aWYodGhpcy5vYmpbb10uaXNEaWZmZXJlbnQodC5vYmpbb10pKXJldHVybiEwfXJldHVybiExfSxlfSkoQVN0KTtoU3QuT2JqZWN0U2lnbmF0dXJlPVBTdCwKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKiBAZmlsZW92ZXJ2aWV3IEltcGxlbWVudHMgYSBmdW5jdGlvbiBtZW1vaXplciB1c2luZyB0aGUgU2lnbmF0dXJlIEFQSS4KICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkodVN0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgTlN0PWhTdDt1U3QubWVtb2l6ZT1mdW5jdGlvbiBJU3QodCl7dmFyIGUsbj12b2lkIDAsaT0hMSxyPSExLG89ZnVuY3Rpb24oKXtmb3IodmFyIG89W10sYT0wO2E8YXJndW1lbnRzLmxlbmd0aDthKyspb1thXT1hcmd1bWVudHNbYV07aWYoaSlyZXR1cm4gZTt2YXIgcz1OU3Quc2lnbkFycmF5KG8pO3JldHVybiB2b2lkIDA9PT1ufHxuLmlzRGlmZmVyZW50KHMpPyhyJiZjb25zb2xlLndhcm4oImNhY2hlIG1pc3MhIGNvbXB1dGluZyIpLG49cyxlPXQuYXBwbHkodGhpcyxvKSk6ciYmY29uc29sZS53YXJuKCJjYWNoZSBoaXQhIiksZX07cmV0dXJuIG8uZG9Mb2NrZWQ9ZnVuY3Rpb24odCl7aWYoaSl0aHJvdyBuZXcgRXJyb3IoIkxvY2tpbmcgYW4gYWxyZWFkeSBsb2NrZWQgbWVtb2l6ZSBmdW5jdGlvbiEiKTtpPSEwO3ZhciBlPXQuYXBwbHkodGhpcyk7cmV0dXJuIGk9ITEsZX0sby5sb2dQZXJmb3JtYW5jZT1mdW5jdGlvbih0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9ITApLHI9dCx0aGlzfSxvfTt2YXIgUlN0PXt9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShSU3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBPU3Q9Q2UuZXhwb3J0cyx6U3Q9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3RoaXMubWFwPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5leGlzdHM9T2JqZWN0LmNyZWF0ZShudWxsKX1yZXR1cm4gdC5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKHQpe3JldHVybiBkZWxldGUgdGhpcy5tYXBbdF0sZGVsZXRlIHRoaXMuZXhpc3RzW3RdLCEwfSx0LnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubWFwW3RdfSx0LnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuISF0aGlzLmV4aXN0c1t0XX0sdC5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMubWFwW3RdPWUsdGhpcy5leGlzdHNbdF09ITAsdGhpc30sdH0pKCksRFN0PShmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLm1hcD1uZXcgelN0fXJldHVybiB0LnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubWFwLmdldCh0WzBdKS5nZXQodFsxXSl9LHQucHJvdG90eXBlLmhhcz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5tYXAuaGFzKHRbMF0pJiZ0aGlzLm1hcC5nZXQodFswXSkuaGFzKHRbMV0pfSx0LnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5tYXAuaGFzKHRbMF0pfHx0aGlzLm1hcC5zZXQodFswXSxuZXcgelN0KSx0aGlzLm1hcC5nZXQodFswXSkuc2V0KHRbMV0sZSksdGhpc30sdC5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm1hcC5oYXModFswXSkmJnRoaXMubWFwLmdldCh0WzBdKS5kZWxldGUodFsxXSksITB9LHQucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5tYXA9bmV3IHpTdH0sdC5yZXNvbHZlcj1mdW5jdGlvbih0LGUsbil7cmV0dXJuW24udXBkYXRlSWQoKSxlXX0sdH0pKCk7ZnVuY3Rpb24gQlN0KHQpe3ZhciBlPU9TdC5tZW1vaXplKHQsRFN0LnJlc29sdmVyKTtyZXR1cm4gZS5jYWNoZT1uZXcgRFN0LGV9UlN0Lm1lbW9pemVQcm9qZWN0b3I9QlN0LFJTdC5tZW1vaXplUHJvamVjdG9ycz1mdW5jdGlvbiBIU3QodCl7cmV0dXJuIE9iamVjdC5rZXlzKHQpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3RbZV09QlN0KHRbZV0pfSkpLHR9O3ZhciBGU3Q9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICogQGZpbGVvdmVydmlldyBJbXBsZW1lbnRzIGEgY29udmVuaWVudCB0aHVuayBmdW5jdGlvbiB0byBoYW5kbGUgdGhlIGNvbW1vbiBjYXNlCiAgICAgKiBvZiBjcmVhdGluZyBhIG1lbW9pemVkIGZ1bmN0aW9uIHRoYXQgdGFrZXMgaXRzIGlucHV0cyBmcm9tIG11dGFibGUgY2xhc3MgcHJvcGVydGllcy4KICAgICAqL09iamVjdC5kZWZpbmVQcm9wZXJ0eShGU3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBWU3Q9Y1N0O0ZTdC5tZW1UaHVuaz1mdW5jdGlvbiBVU3QoKXtmb3IodmFyIHQ9W10sZT0wO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspdFtlXT1hcmd1bWVudHNbZV07dmFyIG49dC5zbGljZSgwLC0xKSxpPXRbdC5sZW5ndGgtMV0scj1WU3QubWVtb2l6ZShpKSxvPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPW4ubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZS5hcHBseSh0KX0pKTtyZXR1cm4gci5hcHBseSh2b2lkIDAsZSl9O3JldHVybiBvfSwoZnVuY3Rpb24odCl7Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgZT1CTztlLl9fZXhwb3J0U3Rhcih1U3QsdCksZS5fX2V4cG9ydFN0YXIoUlN0LHQpLGUuX19leHBvcnRTdGFyKEZTdCx0KSx0LnNpZ249aFN0LnNpZ259KShjU3QpO3ZhciBqU3Q9e307IShmdW5jdGlvbih0KXsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBlPXdwdCxuPShmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXt0aGlzLl9jb250ZXh0PXQsdGhpcy5fZHJhd1N0ZXA9ZX1yZXR1cm4gdC5wcm90b3R5cGUuZ2V0RHJhd1N0ZXA9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZHJhd1N0ZXB9LHQucHJvdG90eXBlLmRyYXc9ZnVuY3Rpb24odCxlKXt2YXIgbj1lW2UubGVuZ3RoLTFdLmF0dHJUb0FwcGxpZWRQcm9qZWN0b3I7dGhpcy5fY29udGV4dC5zYXZlKCksdGhpcy5fZHJhd1N0ZXAodGhpcy5fY29udGV4dCx0LG4pLHRoaXMuX2NvbnRleHQucmVzdG9yZSgpfSx0LnByb3RvdHlwZS5nZXRWaXN1YWxQcmltaXRpdmVzPWZ1bmN0aW9uKCl7cmV0dXJuW119LHQucHJvdG90eXBlLmdldFZpc3VhbFByaW1pdGl2ZUF0SW5kZXg9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGx9LHQucHJvdG90eXBlLnJlbW92ZT1mdW5jdGlvbigpe30sdH0pKCk7ZnVuY3Rpb24gaSh0LGUsbixpKXtmb3IodmFyIHI9e30sbz0wLGE9ZTtvPGEubGVuZ3RoO28rKyl7dmFyIHM9YVtvXTt0Lmhhc093blByb3BlcnR5KHMpJiYocltzXT10W3NdKG4saSkpfXJldHVybiByfWZ1bmN0aW9uIHIodCl7cmV0dXJuIG51bGwhPXRbInN0cm9rZS13aWR0aCJdP3BhcnNlRmxvYXQodFsic3Ryb2tlLXdpZHRoIl0pOjF9ZnVuY3Rpb24gbyh0KXt2YXIgZT10WyJzdHJva2UtZGFzaGFycmF5Il07aWYobnVsbCE9ZSl0cnl7cmV0dXJuIGUuc3BsaXQoL1sgLF0rLykubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gcGFyc2VJbnQodCwxMCl9KSl9Y2F0Y2godCl7cmV0dXJuIGNvbnNvbGUuZXJyb3IoImdldFN0cm9rZURhc2hBcnJheSBmYWlsZWQgd2l0aDogIit0KSxbXX1yZXR1cm5bXX1mdW5jdGlvbiBhKHQsbil7aWYobi5zdHJva2Upe3QubGluZVdpZHRoPXIobik7dmFyIGk9ZS5jb2xvcihuLnN0cm9rZSksYT1vKG4pO3Quc2V0TGluZURhc2goYSksaS5vcGFjaXR5Kj0oZnVuY3Rpb24gcyh0KXt2YXIgZT1udWxsIT10Lm9wYWNpdHk/cGFyc2VGbG9hdCh0Lm9wYWNpdHkpOjE7cmV0dXJuKG51bGwhPXRbInN0cm9rZS1vcGFjaXR5Il0/cGFyc2VGbG9hdCh0WyJzdHJva2Utb3BhY2l0eSJdKToxKSplfSkobiksdC5zdHJva2VTdHlsZT1pLnRvU3RyaW5nKCksdC5zdHJva2UoKX1pZihuLmZpbGwpe3ZhciBsPWUuY29sb3Iobi5maWxsKTtsLm9wYWNpdHkqPShmdW5jdGlvbiBjKHQpe3ZhciBlPW51bGwhPXQub3BhY2l0eT9wYXJzZUZsb2F0KHQub3BhY2l0eSk6MTtyZXR1cm4obnVsbCE9dFsiZmlsbC1vcGFjaXR5Il0/cGFyc2VGbG9hdCh0WyJmaWxsLW9wYWNpdHkiXSk6MSkqZX0pKG4pLHQuZmlsbFN0eWxlPWwudG9TdHJpbmcoKSx0LmZpbGwoKX19dC5DYW52YXNEcmF3ZXI9bix0LkNvbnRleHRTdHlsZUF0dHJzPVsiZmlsbC1vcGFjaXR5IiwiZmlsbCIsIm9wYWNpdHkiLCJzdHJva2Utb3BhY2l0eSIsInN0cm9rZS13aWR0aCIsInN0cm9rZSIsInN0cm9rZS1kYXNoYXJyYXkiXSx0LnJlc29sdmVBdHRyaWJ1dGVzU3Vic2V0V2l0aFN0eWxlcz1mdW5jdGlvbiBzKGUsbixyLG8pe3JldHVybiBpKGUsdC5Db250ZXh0U3R5bGVBdHRycy5jb25jYXQobikscixvKX0sdC5yZXNvbHZlQXR0cmlidXRlcz1pLHQuZ2V0U3Ryb2tlV2lkdGg9cix0LmdldFN0cm9rZURhc2hBcnJheT1vLHQucmVuZGVyQXJlYT1mdW5jdGlvbiBsKHQsZSxuLGkpe3Quc2F2ZSgpLHQuYmVnaW5QYXRoKCksZS5jb250ZXh0KHQpLGUobiksdC5saW5lSm9pbj0icm91bmQiLGEodCxpKSx0LnJlc3RvcmUoKX0sdC5yZW5kZXJMaW5lPWZ1bmN0aW9uIGModCxlLG4saSl7dC5zYXZlKCksdC5iZWdpblBhdGgoKSxlLmNvbnRleHQodCksZShuKSx0LmxpbmVKb2luPSJyb3VuZCIsYSh0LGkpLHQucmVzdG9yZSgpfSx0LnJlbmRlclBhdGhXaXRoU3R5bGU9YX0pKGpTdCk7dmFyIEdTdD17fTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi9PYmplY3QuZGVmaW5lUHJvcGVydHkoR1N0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgV1N0PShmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXt0aGlzLl9zdmdEcmF3ZXJGYWN0b3J5PXQsdGhpcy5fY2FudmFzRHJhd2VyRmFjdG9yeT1lfXJldHVybiB0LnByb3RvdHlwZS51c2VTVkc9ZnVuY3Rpb24odCl7bnVsbCE9dGhpcy5fY3VycmVudERyYXdlciYmdGhpcy5fY3VycmVudERyYXdlci5yZW1vdmUoKTt2YXIgZT10aGlzLl9zdmdEcmF3ZXJGYWN0b3J5KCk7ZS5hdHRhY2hUbyh0KSx0aGlzLl9jdXJyZW50RHJhd2VyPWV9LHQucHJvdG90eXBlLnVzZUNhbnZhcz1mdW5jdGlvbih0KXtudWxsIT10aGlzLl9jdXJyZW50RHJhd2VyJiZ0aGlzLl9jdXJyZW50RHJhd2VyLnJlbW92ZSgpLHRoaXMuX2N1cnJlbnREcmF3ZXI9dGhpcy5fY2FudmFzRHJhd2VyRmFjdG9yeSh0Lm5vZGUoKS5nZXRDb250ZXh0KCIyZCIpKX0sdC5wcm90b3R5cGUuZ2V0RHJhd2VyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2N1cnJlbnREcmF3ZXJ9LHQucHJvdG90eXBlLnJlbW92ZT1mdW5jdGlvbigpe251bGwhPXRoaXMuX2N1cnJlbnREcmF3ZXImJnRoaXMuX2N1cnJlbnREcmF3ZXIucmVtb3ZlKCl9LHQucHJvdG90eXBlLmRyYXc9ZnVuY3Rpb24odCxlKXt0aGlzLl9jdXJyZW50RHJhd2VyLmRyYXcodCxlKX0sdC5wcm90b3R5cGUuZ2V0VmlzdWFsUHJpbWl0aXZlcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9jdXJyZW50RHJhd2VyLmdldFZpc3VhbFByaW1pdGl2ZXMoKX0sdC5wcm90b3R5cGUuZ2V0VmlzdWFsUHJpbWl0aXZlQXRJbmRleD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fY3VycmVudERyYXdlci5nZXRWaXN1YWxQcmltaXRpdmVBdEluZGV4KHQpfSx0fSkoKTtHU3QuUHJveHlEcmF3ZXI9V1N0O3ZhciBxU3Q9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovT2JqZWN0LmRlZmluZVByb3BlcnR5KHFTdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIFlTdD13cHQsWFN0PURfdCwkU3Q9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe3RoaXMuX3Jvb3Q9WVN0LnNlbGVjdChkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwiZyIpKSx0aGlzLl9jbGFzc05hbWU9ZSx0aGlzLl9zdmdFbGVtZW50TmFtZT10fXJldHVybiB0LnByb3RvdHlwZS5kcmF3PWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpczt0aGlzLl9jcmVhdGVBbmREZXN0cm95RE9NRWxlbWVudHModCk7Zm9yKHZhciBpPTAscj1lLmxlbmd0aCxvPWZ1bmN0aW9uKHIpe3ZhciBvPWVbcl07WFN0LldpbmRvdy5zZXRUaW1lb3V0KChmdW5jdGlvbigpe3JldHVybiBuLl9kcmF3U3RlcChvKX0pLGkpLGkrPW8uYW5pbWF0b3IudG90YWxUaW1lKHQubGVuZ3RoKX0sYT0wO2E8cjthKyspbyhhKX0sdC5wcm90b3R5cGUuZ2V0VmlzdWFsUHJpbWl0aXZlcz1mdW5jdGlvbigpe3JldHVybiBudWxsPT10aGlzLl9jYWNoZWRWaXN1YWxQcmltaXRpdmVzTm9kZXMmJih0aGlzLl9jYWNoZWRWaXN1YWxQcmltaXRpdmVzTm9kZXM9dGhpcy5fc2VsZWN0aW9uLm5vZGVzKCkpLHRoaXMuX2NhY2hlZFZpc3VhbFByaW1pdGl2ZXNOb2Rlc30sdC5wcm90b3R5cGUuZ2V0VmlzdWFsUHJpbWl0aXZlQXRJbmRleD1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dGhpcy5fY2FjaGVkVmlzdWFsUHJpbWl0aXZlc05vZGVNYXA/bnVsbDp0aGlzLl9jYWNoZWRWaXN1YWxQcmltaXRpdmVzTm9kZU1hcC5nZXQodCl9LHQucHJvdG90eXBlLnJlbW92ZT1mdW5jdGlvbigpe3RoaXMuX3Jvb3QucmVtb3ZlKCl9LHQucHJvdG90eXBlLmF0dGFjaFRvPWZ1bmN0aW9uKHQpe3Qubm9kZSgpLmFwcGVuZENoaWxkKHRoaXMuX3Jvb3Qubm9kZSgpKX0sdC5wcm90b3R5cGUuZ2V0Um9vdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9yb290fSx0LnByb3RvdHlwZS5zZWxlY3Rvcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdmdFbGVtZW50TmFtZX0sdC5wcm90b3R5cGUuX2FwcGx5RGVmYXVsdEF0dHJpYnV0ZXM9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5fY3JlYXRlQW5kRGVzdHJveURPTUVsZW1lbnRzPWZ1bmN0aW9uKHQpe3ZhciBlPXQubWFwKChmdW5jdGlvbih0LGUpe3JldHVybiBudWxsIT10P3tkOnQsaTplfTpudWxsfSkpLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIG51bGwhPXR9KSksbj10aGlzLl9yb290LnNlbGVjdEFsbCh0aGlzLnNlbGVjdG9yKCkpLmRhdGEoZSk7dGhpcy5fc2VsZWN0aW9uPW4uZW50ZXIoKS5hcHBlbmQodGhpcy5fc3ZnRWxlbWVudE5hbWUpLm1lcmdlKG4pLG4uZXhpdCgpLnJlbW92ZSgpO3ZhciBpPW5ldyBYU3QuTWFwO3RoaXMuX3NlbGVjdGlvbi5lYWNoKChmdW5jdGlvbih0KXtpLnNldCh0LmksdGhpcyl9KSksdGhpcy5fY2FjaGVkVmlzdWFsUHJpbWl0aXZlc05vZGVNYXA9aSx0aGlzLl9jYWNoZWRWaXN1YWxQcmltaXRpdmVzTm9kZXM9bnVsbCx0aGlzLl9zZWxlY3Rpb24uZGF0YSh0aGlzLl9zZWxlY3Rpb24uZGF0YSgpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuZH0pKSksbnVsbCE9dGhpcy5fY2xhc3NOYW1lJiZ0aGlzLl9zZWxlY3Rpb24uY2xhc3NlZCh0aGlzLl9jbGFzc05hbWUsITApLHRoaXMuX2FwcGx5RGVmYXVsdEF0dHJpYnV0ZXModGhpcy5fc2VsZWN0aW9uKX0sdC5wcm90b3R5cGUuX2RyYXdTdGVwPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7WyJmaWxsIiwic3Ryb2tlIl0uZm9yRWFjaCgoZnVuY3Rpb24obil7bnVsbCE9dC5hdHRyVG9BcHBsaWVkUHJvamVjdG9yW25dJiZlLl9zZWxlY3Rpb24uYXR0cihuLHQuYXR0clRvQXBwbGllZFByb2plY3RvcltuXSl9KSksdC5hbmltYXRvci5hbmltYXRlKHRoaXMuX3NlbGVjdGlvbix0LmF0dHJUb0FwcGxpZWRQcm9qZWN0b3IpLG51bGwhPXRoaXMuX2NsYXNzTmFtZSYmdGhpcy5fc2VsZWN0aW9uLmNsYXNzZWQodGhpcy5fY2xhc3NOYW1lLCEwKX0sdH0pKCk7cVN0LlNWR0RyYXdlcj0kU3Q7dmFyIEtTdD17fTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNy1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi9PYmplY3QuZGVmaW5lUHJvcGVydHkoS1N0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgWlN0PShmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt2YXIgdD10aGlzO3RoaXMuc2NhbGU9MCx0aGlzLnRyYW5zbGF0ZT0wLHRoaXMuY2FjaGVkRG9tYWluPVtudWxsLG51bGxdLHRoaXMubGFzdFNlZW5Eb21haW49W251bGwsbnVsbF0sdGhpcy51cGRhdGVEb21haW49ZnVuY3Rpb24oZSl7dC5sYXN0U2VlbkRvbWFpbj1lLmdldFRyYW5zZm9ybWF0aW9uRG9tYWluKCk7dmFyIG49ZS5zY2FsZVRyYW5zZm9ybWF0aW9uKHQuY2FjaGVkRG9tYWluWzFdKS1lLnNjYWxlVHJhbnNmb3JtYXRpb24odC5jYWNoZWREb21haW5bMF0pLGk9ZS5zY2FsZVRyYW5zZm9ybWF0aW9uKHQubGFzdFNlZW5Eb21haW5bMV0pLWUuc2NhbGVUcmFuc2Zvcm1hdGlvbih0Lmxhc3RTZWVuRG9tYWluWzBdKTt0LnNjYWxlPW4vaXx8MSx0LnRyYW5zbGF0ZT1lLnNjYWxlVHJhbnNmb3JtYXRpb24odC5jYWNoZWREb21haW5bMF0pLWUuc2NhbGVUcmFuc2Zvcm1hdGlvbih0Lmxhc3RTZWVuRG9tYWluWzBdKSp0LnNjYWxlfHwwfX1yZXR1cm4gdC5wcm90b3R5cGUucmVzZXQ9ZnVuY3Rpb24oKXt0aGlzLnNjYWxlPTEsdGhpcy50cmFuc2xhdGU9MCx0aGlzLmNhY2hlZERvbWFpbj10aGlzLmxhc3RTZWVuRG9tYWlufSx0LnByb3RvdHlwZS5zZXREb21haW49ZnVuY3Rpb24odCl7dGhpcy5jYWNoZWREb21haW49dC5nZXRUcmFuc2Zvcm1hdGlvbkRvbWFpbigpfSx0fSkoKSxKU3Q9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLG4pe3ZhciBpPXRoaXM7dGhpcy5yZW5kZXJDYWxsYmFjaz1lLHRoaXMuYXBwbHlUcmFuc2Zvcm1DYWxsYmFjaz1uLHRoaXMuZG9tYWluVHJhbnNmb3JtWD1uZXcgWlN0LHRoaXMuZG9tYWluVHJhbnNmb3JtWT1uZXcgWlN0LHRoaXMucmVuZGVyRGVmZXJyZWQ9ZnVuY3Rpb24oKXtpLmFwcGx5VHJhbnNmb3JtKCksY2xlYXJUaW1lb3V0KGkudGltZW91dFRva2VuKSxpLnRpbWVvdXRUb2tlbj1zZXRUaW1lb3V0KChmdW5jdGlvbigpe2kucmVuZGVyQ2FsbGJhY2soKX0pLHQuREVGRVJSRURfUkVOREVSSU5HX0RFTEFZKX19cmV0dXJuIHQucHJvdG90eXBlLnNldERvbWFpbnM9ZnVuY3Rpb24odCxlKXt0JiZ0aGlzLmRvbWFpblRyYW5zZm9ybVguc2V0RG9tYWluKHQpLGUmJnRoaXMuZG9tYWluVHJhbnNmb3JtWS5zZXREb21haW4oZSksdGhpcy5yZW5kZXJEZWZlcnJlZCgpfSx0LnByb3RvdHlwZS51cGRhdGVEb21haW5zPWZ1bmN0aW9uKHQsZSl7dCYmdGhpcy5kb21haW5UcmFuc2Zvcm1YLnVwZGF0ZURvbWFpbih0KSxlJiZ0aGlzLmRvbWFpblRyYW5zZm9ybVkudXBkYXRlRG9tYWluKGUpLHRoaXMucmVuZGVyRGVmZXJyZWQoKX0sdC5wcm90b3R5cGUucmVzZXRUcmFuc2Zvcm1zPWZ1bmN0aW9uKCl7dGhpcy5kb21haW5UcmFuc2Zvcm1YLnJlc2V0KCksdGhpcy5kb21haW5UcmFuc2Zvcm1ZLnJlc2V0KCksdGhpcy5hcHBseVRyYW5zZm9ybSgpfSx0LnByb3RvdHlwZS5hcHBseVRyYW5zZm9ybT1mdW5jdGlvbigpe3RoaXMuYXBwbHlUcmFuc2Zvcm1DYWxsYmFjayh0aGlzLmRvbWFpblRyYW5zZm9ybVgudHJhbnNsYXRlLHRoaXMuZG9tYWluVHJhbnNmb3JtWS50cmFuc2xhdGUsdGhpcy5kb21haW5UcmFuc2Zvcm1YLnNjYWxlLHRoaXMuZG9tYWluVHJhbnNmb3JtWS5zY2FsZSl9LHQuREVGRVJSRURfUkVOREVSSU5HX0RFTEFZPTIwMCx0fSkoKTtLU3QuRGVmZXJyZWRSZW5kZXJlcj1KU3QsCi8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShzU3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBRU3Q9Qk8sdE10PXdwdCxlTXQ9Zmd0LG5NdD1EX3QsaU10PWxTdCxyTXQ9Y1N0LG9NdD1PX3QsYU10PWpTdCxzTXQ9R1N0LGxNdD1xU3QsY010PV9ndCx1TXQ9S1N0O3NTdC5SZW5kZXJlcj1iZ3QubWFrZUVudW0oWyJzdmciLCJjYW52YXMiXSk7dmFyIGhNdD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3ZhciBuPXQuY2FsbCh0aGlzKXx8dGhpcztuLl9kYXRhQ2hhbmdlZD0hMSxuLl9hdHRyRXh0ZW50cz17fSxuLl9hbmltYXRlPSExLG4uX2FuaW1hdG9ycz17fSxuLl9wcm9wZXJ0eUV4dGVudHM9e30sbi5fcmVzZXRFbnRpdHlTdG9yZT1mdW5jdGlvbigpe24uX2NhY2hlZEVudGl0eVN0b3JlPXZvaWQgMH0sbi5fb3ZlcmZsb3dIaWRkZW49ITAsbi5hZGRDbGFzcygicGxvdCIpLG4uX2RhdGFzZXRUb0RyYXdlcj1uZXcgbk10Lk1hcCxuLl9hdHRyQmluZGluZ3M9dE10Lm1hcCgpLG4uX2luY2x1ZGVkVmFsdWVzUHJvdmlkZXI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbi5faW5jbHVkZWRWYWx1ZXNGb3JTY2FsZSh0LGUpfSxuLl9yZW5kZXJDYWxsYmFjaz1mdW5jdGlvbigpe3JldHVybiBuLnJlbmRlcigpfSxuLl9vbkRhdGFzZXRVcGRhdGVDYWxsYmFjaz1mdW5jdGlvbigpe3JldHVybiBuLl9vbkRhdGFzZXRVcGRhdGUoKX0sbi5fcHJvcGVydHlCaW5kaW5ncz10TXQubWFwKCk7dmFyIGk9KG5ldyBlTXQuRWFzaW5nKS5tYXhUb3RhbER1cmF0aW9uKGUuX0FOSU1BVElPTl9NQVhfRFVSQVRJT04pO3JldHVybiBuLmFuaW1hdG9yKGlNdC5BbmltYXRvci5NQUlOLGkpLG4uYW5pbWF0b3IoaU10LkFuaW1hdG9yLlJFU0VULG5ldyBlTXQuTnVsbCksbi5fZGVmZXJyZWRSZXNldEVudGl0eVN0b3JlPW5NdC5XaW5kb3cuZGVib3VuY2UodU10LkRlZmVycmVkUmVuZGVyZXIuREVGRVJSRURfUkVOREVSSU5HX0RFTEFZLG4uX3Jlc2V0RW50aXR5U3RvcmUpLG59cmV0dXJuIFFTdC5fX2V4dGVuZHMoZSx0KSxlLmdldFRvdGFsRHJhd1RpbWU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5yZWR1Y2UoKGZ1bmN0aW9uKGUsbil7cmV0dXJuIGUrbi5hbmltYXRvci50b3RhbFRpbWUodC5sZW5ndGgpfSksMCl9LGUuYXBwbHlEcmF3U3RlcHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5tYXAoKGZ1bmN0aW9uKHQpe3ZhciBuPXQuYXR0clRvUHJvamVjdG9yLGk9e307cmV0dXJuIE9iamVjdC5rZXlzKG4pLmZvckVhY2goKGZ1bmN0aW9uKHQpe2lbdF09ZnVuY3Rpb24oaSxyKXtyZXR1cm4gblt0XShpLHIsZSl9fSkpLHthdHRyVG9BcHBsaWVkUHJvamVjdG9yOmksYW5pbWF0b3I6dC5hbmltYXRvcn19KSl9LGUucHJvdG90eXBlLmFuY2hvcj1mdW5jdGlvbihlKXtyZXR1cm4gZT1jTXQuY29lcmNlRXh0ZXJuYWxEMyhlKSx0LnByb3RvdHlwZS5hbmNob3IuY2FsbCh0aGlzLGUpLHRoaXMuX2RhdGFDaGFuZ2VkPSEwLHRoaXMuX3Jlc2V0RW50aXR5U3RvcmUoKSx0aGlzLl91cGRhdGVFeHRlbnRzKCksdGhpc30sZS5wcm90b3R5cGUuX3NldHVwPWZ1bmN0aW9uKCl7dmFyIGU9dGhpczt0aGlzLl9pc1NldHVwfHwodC5wcm90b3R5cGUuX3NldHVwLmNhbGwodGhpcyksbnVsbCE9dGhpcy5fY2FudmFzJiZ0aGlzLl9hcHBlbmRDYW52YXNOb2RlKCksdGhpcy5fcmVuZGVyQXJlYT10aGlzLmNvbnRlbnQoKS5hcHBlbmQoImciKS5jbGFzc2VkKCJyZW5kZXItYXJlYSIsITApLHRoaXMuZGF0YXNldHMoKS5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gZS5fY3JlYXRlTm9kZXNGb3JEYXRhc2V0KHQpfSkpKX0sZS5wcm90b3R5cGUuX2FwcGVuZENhbnZhc05vZGU9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmVsZW1lbnQoKS5zZWxlY3QoIi5wbG90LWNhbnZhcy1jb250YWluZXIiKTt0LmVtcHR5KCkmJih0PXRoaXMuZWxlbWVudCgpLmFwcGVuZCgiZGl2IikuY2xhc3NlZCgicGxvdC1jYW52YXMtY29udGFpbmVyIiwhMCkpLm5vZGUoKS5hcHBlbmRDaGlsZCh0aGlzLl9jYW52YXMubm9kZSgpKX0sZS5wcm90b3R5cGUuc2V0Qm91bmRzPWZ1bmN0aW9uKGUsbixpLHIpe2lmKHQucHJvdG90eXBlLnNldEJvdW5kcy5jYWxsKHRoaXMsZSxuLGksciksdGhpcy5fdXBkYXRlRXh0ZW50cygpLG51bGwhPXRoaXMuX2NhbnZhcyl7aWYodGhpcy5fYnVmZmVyQ2FudmFzJiYhdGhpcy5fYnVmZmVyQ2FudmFzVmFsaWQpe3RoaXMuX2J1ZmZlckNhbnZhcy5hdHRyKCJ3aWR0aCIsdGhpcy5fY2FudmFzLmF0dHIoIndpZHRoIikpLHRoaXMuX2J1ZmZlckNhbnZhcy5hdHRyKCJoZWlnaHQiLHRoaXMuX2NhbnZhcy5hdHRyKCJoZWlnaHQiKSk7dmFyIG89dGhpcy5fYnVmZmVyQ2FudmFzLm5vZGUoKS5nZXRDb250ZXh0KCIyZCIpO2lmKG8pe3ZhciBhPXRoaXMuX2NhbnZhcy5ub2RlKCk7YS53aWR0aD4wJiZhLmhlaWdodD4wP28uY2FudmFzLndpZHRoPjAmJm8uY2FudmFzLmhlaWdodD4wJiZvLmRyYXdJbWFnZShhLDAsMCk6Y29uc29sZS53YXJuKCJGYWlsZWQgdG8gZmlsbCBidWZmZXIgY2FudmFzIHdpdGggd2l0aCAweDAgY2FudmFzIil9dGhpcy5fYnVmZmVyQ2FudmFzVmFsaWQ9ITB9dmFyIHM9bnVsbCE9d2luZG93LmRldmljZVBpeGVsUmF0aW8/d2luZG93LmRldmljZVBpeGVsUmF0aW86MTt0aGlzLl9jYW52YXMuYXR0cigid2lkdGgiLGUqcyksdGhpcy5fY2FudmFzLmF0dHIoImhlaWdodCIsbipzKTt2YXIgbD10aGlzLl9jYW52YXMubm9kZSgpLmdldENvbnRleHQoIjJkIik7aWYobCYmKGwuc2V0VHJhbnNmb3JtKHMsMCwwLHMsMCwwKSx0aGlzLl9idWZmZXJDYW52YXMpKXt2YXIgYz10aGlzLl9idWZmZXJDYW52YXMubm9kZSgpO2Mud2lkdGg+MCYmYy5oZWlnaHQ+MD9sLmNhbnZhcy53aWR0aD4wJiZsLmNhbnZhcy5oZWlnaHQ+MCYmbC5kcmF3SW1hZ2UoYywwLDAsZSxuKTpjb25zb2xlLndhcm4oIkZhaWxlZCB0byBmaWxsIGNhbnZhcyB3aXRoIDB4MCBidWZmZXIgY2FudmFzIil9fXJldHVybiB0aGlzfSxlLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dmFyIGU9dGhpczt0LnByb3RvdHlwZS5kZXN0cm95LmNhbGwodGhpcyksdGhpcy5fc2NhbGVzKCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7cmV0dXJuIHQub2ZmVXBkYXRlKGUuX3JlbmRlckNhbGxiYWNrKX0pKSx0aGlzLmRhdGFzZXRzKFtdKX0sZS5wcm90b3R5cGUuX2NyZWF0ZU5vZGVzRm9yRGF0YXNldD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9kYXRhc2V0VG9EcmF3ZXIuZ2V0KHQpO3JldHVybiJzdmciPT09dGhpcy5yZW5kZXJlcigpP2UudXNlU1ZHKHRoaXMuX3JlbmRlckFyZWEpOmUudXNlQ2FudmFzKHRoaXMuX2NhbnZhcyksZX0sZS5wcm90b3R5cGUuX2NyZWF0ZURyYXdlcj1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IHNNdC5Qcm94eURyYXdlcigoZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGxNdC5TVkdEcmF3ZXIoInBhdGgiLCIiKX0pLChmdW5jdGlvbih0KXtyZXR1cm4gbmV3IGFNdC5DYW52YXNEcmF3ZXIodCwoZnVuY3Rpb24oKXt9KSl9KSl9LGUucHJvdG90eXBlLl9nZXRBbmltYXRvcj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fYW5pbWF0ZU9uTmV4dFJlbmRlcigpJiZ0aGlzLl9hbmltYXRvcnNbdF18fG5ldyBlTXQuTnVsbH0sZS5wcm90b3R5cGUuX29uRGF0YXNldFVwZGF0ZT1mdW5jdGlvbigpe3RoaXMuX3VwZGF0ZUV4dGVudHMoKSx0aGlzLl9kYXRhQ2hhbmdlZD0hMCx0aGlzLl9yZXNldEVudGl0eVN0b3JlKCksdGhpcy5yZW5kZXJMb3dQcmlvcml0eSgpfSxlLnByb3RvdHlwZS5hdHRyPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gbnVsbD09ZT90aGlzLl9hdHRyQmluZGluZ3MuZ2V0KHQpOih0aGlzLl9iaW5kQXR0cih0LGUsbiksdGhpcy5yZW5kZXIoKSx0aGlzKX0sZS5wcm90b3R5cGUuX2JpbmRQcm9wZXJ0eT1mdW5jdGlvbih0LGUsbixpKXt2YXIgcj10aGlzLl9wcm9wZXJ0eUJpbmRpbmdzLmdldCh0KSxvPW51bGwhPXI/ci5zY2FsZTpudWxsO3RoaXMuX3Byb3BlcnR5QmluZGluZ3Muc2V0KHQse2FjY2Vzc29yOiJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6ZnVuY3Rpb24oKXtyZXR1cm4gZX0sc2NhbGU6bixwb3N0U2NhbGU6aX0pLG51bGwhPW8mJnRoaXMuX3VuaW5zdGFsbFNjYWxlRm9yS2V5KG8sdCksbnVsbCE9biYmdGhpcy5faW5zdGFsbFNjYWxlRm9yS2V5KG4sdCksdGhpcy5fY2xlYXJBdHRyVG9Qcm9qZWN0b3JDYWNoZSgpfSxlLnByb3RvdHlwZS5fYmluZEF0dHI9ZnVuY3Rpb24odCxlLG4pe3ZhciBpPXRoaXMuX2F0dHJCaW5kaW5ncy5nZXQodCkscj1udWxsIT1pP2kuc2NhbGU6bnVsbDt0aGlzLl9hdHRyQmluZGluZ3Muc2V0KHQse2FjY2Vzc29yOiJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6ZnVuY3Rpb24oKXtyZXR1cm4gZX0sc2NhbGU6bn0pLG51bGwhPXImJnRoaXMuX3VuaW5zdGFsbFNjYWxlRm9yS2V5KHIsdCksbnVsbCE9biYmdGhpcy5faW5zdGFsbFNjYWxlRm9yS2V5KG4sdCksdGhpcy5fY2xlYXJBdHRyVG9Qcm9qZWN0b3JDYWNoZSgpfSxlLnByb3RvdHlwZS5fY2xlYXJBdHRyVG9Qcm9qZWN0b3JDYWNoZT1mdW5jdGlvbigpe2RlbGV0ZSB0aGlzLl9jYWNoZWRBdHRyVG9Qcm9qZWN0b3J9LGUucHJvdG90eXBlLl9nZXRBdHRyVG9Qcm9qZWN0b3I9ZnVuY3Rpb24oKXtpZihudWxsPT10aGlzLl9jYWNoZWRBdHRyVG9Qcm9qZWN0b3Ipe3ZhciB0PXRoaXMuX2dlbmVyYXRlQXR0clRvUHJvamVjdG9yKCk7ZS5PUFRJTUlaRV9NRU1PSVpFX1BST0pFQ1RPUlMmJih0PXJNdC5tZW1vaXplUHJvamVjdG9ycyh0KSksdGhpcy5fY2FjaGVkQXR0clRvUHJvamVjdG9yPXR9cmV0dXJuIG5NdC5hc3NpZ24oe30sdGhpcy5fY2FjaGVkQXR0clRvUHJvamVjdG9yKX0sZS5wcm90b3R5cGUuX2dlbmVyYXRlQXR0clRvUHJvamVjdG9yPWZ1bmN0aW9uKCl7dmFyIHQ9e307dGhpcy5fYXR0ckJpbmRpbmdzLmVhY2goKGZ1bmN0aW9uKG4saSl7dFtpXT1lLl9zY2FsZWRBY2Nlc3NvcihuKX0pKTt2YXIgbj10aGlzLl9wcm9wZXJ0eVByb2plY3RvcnMoKTtyZXR1cm4gT2JqZWN0LmtleXMobikuZm9yRWFjaCgoZnVuY3Rpb24oZSl7bnVsbD09dFtlXSYmKHRbZV09bltlXSl9KSksdH0sZS5wcm90b3R5cGUucmVuZGVySW1tZWRpYXRlbHk9ZnVuY3Rpb24oKXtyZXR1cm4gdC5wcm90b3R5cGUucmVuZGVySW1tZWRpYXRlbHkuY2FsbCh0aGlzKSx0aGlzLl9pc0FuY2hvcmVkJiYodGhpcy5fcGFpbnQoKSx0aGlzLl9kYXRhQ2hhbmdlZD0hMSksdGhpc30sZS5wcm90b3R5cGUucmVuZGVyTG93UHJpb3JpdHk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVuZGVyQ2FsbGJhY2soKSx0aGlzfSxlLnByb3RvdHlwZS5hbmltYXRlZD1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9hbmltYXRlOih0aGlzLl9hbmltYXRlPXQsdGhpcyl9LGUucHJvdG90eXBlLmRldGFjaD1mdW5jdGlvbigpe3JldHVybiB0LnByb3RvdHlwZS5kZXRhY2guY2FsbCh0aGlzKSx0aGlzLl91cGRhdGVFeHRlbnRzKCksdGhpc30sZS5wcm90b3R5cGUuX3NjYWxlcz1mdW5jdGlvbigpe3ZhciB0PVtdO3JldHVybiB0aGlzLl9hdHRyQmluZGluZ3MuZWFjaCgoZnVuY3Rpb24oZSxuKXt2YXIgaT1lLnNjYWxlO251bGwhPWkmJi0xPT09dC5pbmRleE9mKGkpJiZ0LnB1c2goaSl9KSksdGhpcy5fcHJvcGVydHlCaW5kaW5ncy5lYWNoKChmdW5jdGlvbihlLG4pe3ZhciBpPWUuc2NhbGU7bnVsbCE9aSYmLTE9PT10LmluZGV4T2YoaSkmJnQucHVzaChpKX0pKSx0fSxlLnByb3RvdHlwZS5fdXBkYXRlRXh0ZW50cz1mdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5fcmVzZXRFbnRpdHlTdG9yZSgpLHRoaXMuX3NjYWxlcygpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiBlLmFkZEluY2x1ZGVkVmFsdWVzUHJvdmlkZXIodC5faW5jbHVkZWRWYWx1ZXNQcm92aWRlcil9KSl9LGUucHJvdG90eXBlLl9maWx0ZXJGb3JQcm9wZXJ0eT1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbH0sZS5wcm90b3R5cGUuZ2V0RXh0ZW50c0ZvckF0dHI9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztpZihudWxsPT10aGlzLl9hdHRyRXh0ZW50c1t0XSl7dmFyIG49ck10Lm1lbVRodW5rKChmdW5jdGlvbigpe3JldHVybiBlLmRhdGFzZXRzKCl9KSwoZnVuY3Rpb24oKXtyZXR1cm4gZS5fYXR0ckJpbmRpbmdzLmdldCh0KX0pLChmdW5jdGlvbih0LGUpe3JldHVybiBudWxsPT1lfHxudWxsPT1lLmFjY2Vzc29yP251bGw6dC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBkTXQodCxlLG51bGwpfSkpfSkpO3RoaXMuX2F0dHJFeHRlbnRzW3RdPW59cmV0dXJuIHRoaXMuX2F0dHJFeHRlbnRzW3RdKCl9LGUucHJvdG90eXBlLmdldEV4dGVudHNGb3JQcm9wZXJ0eT1mdW5jdGlvbih0KXt2YXIgZT10aGlzO2lmKG51bGw9PXRoaXMuX3Byb3BlcnR5RXh0ZW50c1t0XSl7dmFyIG49ck10Lm1lbVRodW5rKChmdW5jdGlvbigpe3JldHVybiBlLmRhdGFzZXRzKCl9KSwoZnVuY3Rpb24oKXtyZXR1cm4gZS5fcHJvcGVydHlCaW5kaW5ncy5nZXQodCl9KSwoZnVuY3Rpb24oKXtyZXR1cm4gZS5fZmlsdGVyRm9yUHJvcGVydHkodCl9KSwoZnVuY3Rpb24odCxlLG4pe3JldHVybiBudWxsPT1lfHxudWxsPT1lLmFjY2Vzc29yP251bGw6dC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBkTXQodCxlLG4pfSkpfSkpO3RoaXMuX3Byb3BlcnR5RXh0ZW50c1t0XT1ufXJldHVybiB0aGlzLl9wcm9wZXJ0eUV4dGVudHNbdF0oKX0sZS5wcm90b3R5cGUuX2luY2x1ZGVkVmFsdWVzRm9yU2NhbGU9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzO2lmKCF0aGlzLl9pc0FuY2hvcmVkJiYhZSlyZXR1cm5bXTt2YXIgaT1bXTtyZXR1cm4gdGhpcy5fYXR0ckJpbmRpbmdzLmVhY2goKGZ1bmN0aW9uKGUscil7aWYoZS5zY2FsZT09PXQpe3ZhciBvPW4uZ2V0RXh0ZW50c0ZvckF0dHIocik7bnVsbCE9byYmKGk9aS5jb25jYXQodE10Lm1lcmdlKG8pKSl9fSkpLHRoaXMuX3Byb3BlcnR5QmluZGluZ3MuZWFjaCgoZnVuY3Rpb24oZSxyKXtpZihlLnNjYWxlPT09dCl7dmFyIG89bi5nZXRFeHRlbnRzRm9yUHJvcGVydHkocik7bnVsbCE9byYmKGk9aS5jb25jYXQodE10Lm1lcmdlKG8pKSl9fSkpLGl9LGUucHJvdG90eXBlLmFuaW1hdG9yPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHZvaWQgMD09PWU/dGhpcy5fYW5pbWF0b3JzW3RdOih0aGlzLl9hbmltYXRvcnNbdF09ZSx0aGlzKX0sZS5wcm90b3R5cGUucmVuZGVyZXI9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztyZXR1cm4gdm9pZCAwPT09dD9udWxsPT10aGlzLl9jYW52YXM/InN2ZyI6ImNhbnZhcyI6KG51bGw9PXRoaXMuX2NhbnZhcyYmImNhbnZhcyI9PT10Pyh0aGlzLl9jYW52YXM9dE10LnNlbGVjdChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKSkuY2xhc3NlZCgicGxvdC1jYW52YXMiLCEwKSx0aGlzLl9idWZmZXJDYW52YXM9dE10LnNlbGVjdChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKSksbnVsbCE9dGhpcy5lbGVtZW50KCkmJnRoaXMuX2FwcGVuZENhbnZhc05vZGUoKSx0aGlzLl9kYXRhc2V0VG9EcmF3ZXIuZm9yRWFjaCgoZnVuY3Rpb24odCl7dC51c2VDYW52YXMoZS5fY2FudmFzKX0pKSx0aGlzLnJlbmRlcigpKTpudWxsIT10aGlzLl9jYW52YXMmJiJzdmciPT10JiYodGhpcy5fY2FudmFzLnJlbW92ZSgpLHRoaXMuX2NhbnZhcz1udWxsLHRoaXMuX2J1ZmZlckNhbnZhcz1udWxsLHRoaXMuX2RhdGFzZXRUb0RyYXdlci5mb3JFYWNoKChmdW5jdGlvbih0KXt0LnVzZVNWRyhlLl9yZW5kZXJBcmVhKX0pKSx0aGlzLnJlbmRlcigpKSx0aGlzKX0sZS5wcm90b3R5cGUuYWRkRGF0YXNldD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fYWRkRGF0YXNldCh0KSx0aGlzLl9vbkRhdGFzZXRVcGRhdGUoKSx0aGlzfSxlLnByb3RvdHlwZS5fYWRkRGF0YXNldD1mdW5jdGlvbih0KXt0aGlzLl9yZW1vdmVEYXRhc2V0KHQpO3ZhciBlPXRoaXMuX2NyZWF0ZURyYXdlcih0KTtyZXR1cm4gdGhpcy5fZGF0YXNldFRvRHJhd2VyLnNldCh0LGUpLHRoaXMuX2lzU2V0dXAmJnRoaXMuX2NyZWF0ZU5vZGVzRm9yRGF0YXNldCh0KSx0Lm9uVXBkYXRlKHRoaXMuX29uRGF0YXNldFVwZGF0ZUNhbGxiYWNrKSx0aGlzfSxlLnByb3RvdHlwZS5yZW1vdmVEYXRhc2V0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9yZW1vdmVEYXRhc2V0KHQpLHRoaXMuX29uRGF0YXNldFVwZGF0ZSgpLHRoaXN9LGUucHJvdG90eXBlLl9yZW1vdmVEYXRhc2V0PWZ1bmN0aW9uKHQpe3JldHVybi0xPT09dGhpcy5kYXRhc2V0cygpLmluZGV4T2YodCl8fCh0aGlzLl9yZW1vdmVEYXRhc2V0Tm9kZXModCksdC5vZmZVcGRhdGUodGhpcy5fb25EYXRhc2V0VXBkYXRlQ2FsbGJhY2spLHRoaXMuX2RhdGFzZXRUb0RyYXdlci5kZWxldGUodCkpLHRoaXN9LGUucHJvdG90eXBlLl9yZW1vdmVEYXRhc2V0Tm9kZXM9ZnVuY3Rpb24odCl7dGhpcy5fZGF0YXNldFRvRHJhd2VyLmdldCh0KS5yZW1vdmUoKX0sZS5wcm90b3R5cGUuZGF0YXNldHM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxuPVtdO3JldHVybiB0aGlzLl9kYXRhc2V0VG9EcmF3ZXIuZm9yRWFjaCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gbi5wdXNoKGUpfSkpLG51bGw9PXQ/bjoobi5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gZS5fcmVtb3ZlRGF0YXNldCh0KX0pKSx0LmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiBlLl9hZGREYXRhc2V0KHQpfSkpLHRoaXMuX29uRGF0YXNldFVwZGF0ZSgpLHRoaXMpfSxlLnByb3RvdHlwZS5fZ2VuZXJhdGVEcmF3U3RlcHM9ZnVuY3Rpb24oKXtyZXR1cm5be2F0dHJUb1Byb2plY3Rvcjp0aGlzLl9nZXRBdHRyVG9Qcm9qZWN0b3IoKSxhbmltYXRvcjpuZXcgZU10Lk51bGx9XX0sZS5wcm90b3R5cGUuX2FkZGl0aW9uYWxQYWludD1mdW5jdGlvbih0KXt9LGUucHJvdG90eXBlLl9idWlsZExpZ2h0d2VpZ2h0UGxvdEVudGl0aWVzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj1bXTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0LGkpe2Zvcih2YXIgcj1lLl9kYXRhc2V0VG9EcmF3ZXIuZ2V0KHQpLG89MCxhPXQuZGF0YSgpLHM9YS5sZW5ndGgsbD1mdW5jdGlvbihzKXt2YXIgbD1hW3NdLGM9ZS5fcGl4ZWxQb2ludChsLHMsdCk7aWYobk10Lk1hdGguaXNOYU4oYy54KXx8bk10Lk1hdGguaXNOYU4oYy55KSlyZXR1cm4iY29udGludWUiO3ZhciB1PWU7bi5wdXNoKHtkYXR1bTpsLGdldCBwb3NpdGlvbigpe3JldHVybiB1Ll9waXhlbFBvaW50LmNhbGwodSxsLHMsdCl9LGluZGV4OnMsZGF0YXNldDp0LGRhdGFzZXRJbmRleDppLGNvbXBvbmVudDplLGRyYXdlcjpyLHZhbGlkRGF0dW1JbmRleDpvfSksbysrfSxjPTA7YzxzO2MrKylsKGMpfSkpLG59LGUucHJvdG90eXBlLl9nZXREYXRhVG9EcmF3PWZ1bmN0aW9uKCl7dmFyIHQ9bmV3IG5NdC5NYXA7cmV0dXJuIHRoaXMuZGF0YXNldHMoKS5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gdC5zZXQoZSxlLmRhdGEoKSl9KSksdH0sZS5wcm90b3R5cGUuX3BhaW50PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztkZWxldGUgdGhpcy5fY2FjaGVkQXR0clRvUHJvamVjdG9yO3ZhciBuPXRoaXMuX2dlbmVyYXRlRHJhd1N0ZXBzKCksaT10aGlzLl9nZXREYXRhVG9EcmF3KCkscj10aGlzLmRhdGFzZXRzKCkubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gdC5fZGF0YXNldFRvRHJhd2VyLmdldChlKX0pKTtpZigiY2FudmFzIj09PXRoaXMucmVuZGVyZXIoKSl7dmFyIG89dGhpcy5fY2FudmFzLm5vZGUoKTtvLmdldENvbnRleHQoIjJkIikuY2xlYXJSZWN0KDAsMCxvLmNsaWVudFdpZHRoLG8uY2xpZW50SGVpZ2h0KSx0aGlzLl9idWZmZXJDYW52YXNWYWxpZD0hMX10aGlzLmRhdGFzZXRzKCkuZm9yRWFjaCgoZnVuY3Rpb24odCxvKXt2YXIgYT1lLmFwcGx5RHJhd1N0ZXBzKG4sdCk7cltvXS5kcmF3KGkuZ2V0KHQpLGEpfSkpO3ZhciBhPXRoaXMuZGF0YXNldHMoKS5tYXAoKGZ1bmN0aW9uKHQscil7cmV0dXJuIGUuZ2V0VG90YWxEcmF3VGltZShpLmdldCh0KSxuKX0pKSxzPW5NdC5NYXRoLm1heChhLDApO3RoaXMuX2FkZGl0aW9uYWxQYWludChzKX0sZS5wcm90b3R5cGUuc2VsZWN0aW9ucz1mdW5jdGlvbih0KXt2YXIgZT10aGlzO2lmKHZvaWQgMD09PXQmJih0PXRoaXMuZGF0YXNldHMoKSksImNhbnZhcyI9PT10aGlzLnJlbmRlcmVyKCkpcmV0dXJuIHRNdC5zZWxlY3RBbGwoKTt2YXIgbj1bXTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgaT1lLl9kYXRhc2V0VG9EcmF3ZXIuZ2V0KHQpO2lmKG51bGwhPWkpe3ZhciByPWkuZ2V0VmlzdWFsUHJpbWl0aXZlcygpO24ucHVzaC5hcHBseShuLHIpfX0pKSx0TXQuc2VsZWN0QWxsKG4pfSxlLnByb3RvdHlwZS5lbnRpdGllcz1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3JldHVybiB0aGlzLl9nZXRFbnRpdHlTdG9yZSh0KS5lbnRpdGllcygpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIGUuX2xpZ2h0d2VpZ2h0UGxvdEVudGl0eVRvUGxvdEVudGl0eSh0KX0pKX0sZS5wcm90b3R5cGUuZmlsdGVyRW50aXRpZXM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztyZXR1cm4gdGhpcy5fZ2V0RW50aXR5U3RvcmUoKS5lbnRpdGllcygpLmZpbHRlcih0KS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBlLl9saWdodHdlaWdodFBsb3RFbnRpdHlUb1Bsb3RFbnRpdHkodCl9KSl9LGUucHJvdG90eXBlLl9nZXRFbnRpdHlTdG9yZT1mdW5jdGlvbih0KXt2YXIgZSxuPXRoaXMsaT1mdW5jdGlvbih0KXtyZXR1cm4gbi5fZW50aXR5Qm91bmRzKHQpfTtyZXR1cm4gdm9pZCAwIT09dD8oKGU9bmV3IG5NdC5FbnRpdHlTdG9yZSkuYWRkQWxsKHRoaXMuX2J1aWxkTGlnaHR3ZWlnaHRQbG90RW50aXRpZXModCksaSx0aGlzLl9sb2NhbE9yaWdpbkJvdW5kcygpKSxlKToodm9pZCAwPT09dGhpcy5fY2FjaGVkRW50aXR5U3RvcmUmJigoZT1uZXcgbk10LkVudGl0eVN0b3JlKS5hZGRBbGwodGhpcy5fYnVpbGRMaWdodHdlaWdodFBsb3RFbnRpdGllcyh0aGlzLmRhdGFzZXRzKCkpLGksdGhpcy5fbG9jYWxPcmlnaW5Cb3VuZHMoKSksdGhpcy5fY2FjaGVkRW50aXR5U3RvcmU9ZSksdGhpcy5fY2FjaGVkRW50aXR5U3RvcmUpfSxlLnByb3RvdHlwZS5fbG9jYWxPcmlnaW5Cb3VuZHM9ZnVuY3Rpb24oKXtyZXR1cm57dG9wTGVmdDp7eDowLHk6MH0sYm90dG9tUmlnaHQ6e3g6dGhpcy53aWR0aCgpLHk6dGhpcy5oZWlnaHQoKX19fSxlLnByb3RvdHlwZS5fZW50aXR5Qm91bmRzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3BpeGVsUG9pbnQodC5kYXR1bSx0LmluZGV4LHQuZGF0YXNldCk7cmV0dXJue3g6ZS54LHk6ZS55LHdpZHRoOjAsaGVpZ2h0OjB9fSxlLnByb3RvdHlwZS5fbGlnaHR3ZWlnaHRQbG90RW50aXR5VG9QbG90RW50aXR5PWZ1bmN0aW9uKHQpe3JldHVybntib3VuZHM6dGhpcy5fZW50aXR5Qm91bmRzKHQpLGNvbXBvbmVudDp0LmNvbXBvbmVudCxkYXRhc2V0OnQuZGF0YXNldCxkYXRhc2V0SW5kZXg6dC5kYXRhc2V0SW5kZXgsZGF0dW06dC5kYXR1bSxpbmRleDp0LmluZGV4LHBvc2l0aW9uOnQucG9zaXRpb24sc2VsZWN0aW9uOnRNdC5zZWxlY3QodC5kcmF3ZXIuZ2V0VmlzdWFsUHJpbWl0aXZlQXRJbmRleCh0LnZhbGlkRGF0dW1JbmRleCkpfX0sZS5wcm90b3R5cGUuZW50aXRpZXNBdD1mdW5jdGlvbih0KXt0aHJvdyBuZXcgRXJyb3IoInBsb3RzIG11c3QgaW1wbGVtZW50IGVudGl0aWVzQXQiKX0sZS5wcm90b3R5cGUuZW50aXR5TmVhcmVzdD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9nZXRFbnRpdHlTdG9yZSgpLmVudGl0eU5lYXJlc3QodCk7cmV0dXJuIHZvaWQgMD09PWU/dm9pZCAwOnRoaXMuX2xpZ2h0d2VpZ2h0UGxvdEVudGl0eVRvUGxvdEVudGl0eShlKX0sZS5wcm90b3R5cGUuZW50aXRpZXNJbj1mdW5jdGlvbih0LGUpe3ZhciBuO2lmKG51bGw9PWUpe249e3g6dC50b3BMZWZ0LngseTp0LnRvcExlZnQueSx3aWR0aDp0LmJvdHRvbVJpZ2h0LngtdC50b3BMZWZ0LngsaGVpZ2h0OnQuYm90dG9tUmlnaHQueS10LnRvcExlZnQueX19ZWxzZXtuPXt4OnQubWluLHk6ZS5taW4sd2lkdGg6dC5tYXgtdC5taW4saGVpZ2h0OmUubWF4LWUubWlufX1yZXR1cm4gdGhpcy5lbnRpdGllc0luQm91bmRzKG4pfSxlLnByb3RvdHlwZS5lbnRpdGllc0luQm91bmRzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj10aGlzLl9nZXRFbnRpdHlTdG9yZSgpLmVudGl0aWVzSW5Cb3VuZHModCk7aWYobilyZXR1cm4gbi5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBlLl9saWdodHdlaWdodFBsb3RFbnRpdHlUb1Bsb3RFbnRpdHkodCl9KSl9LGUucHJvdG90eXBlLmVudGl0aWVzSW5YQm91bmRzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj10aGlzLl9nZXRFbnRpdHlTdG9yZSgpLmVudGl0aWVzSW5YQm91bmRzKHQpO2lmKG4pcmV0dXJuIG4ubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gZS5fbGlnaHR3ZWlnaHRQbG90RW50aXR5VG9QbG90RW50aXR5KHQpfSkpfSxlLnByb3RvdHlwZS5lbnRpdGllc0luWUJvdW5kcz1mdW5jdGlvbih0KXt2YXIgZT10aGlzLG49dGhpcy5fZ2V0RW50aXR5U3RvcmUoKS5lbnRpdGllc0luWUJvdW5kcyh0KTtpZihuKXJldHVybiBuLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIGUuX2xpZ2h0d2VpZ2h0UGxvdEVudGl0eVRvUGxvdEVudGl0eSh0KX0pKX0sZS5wcm90b3R5cGUuX3VuaW5zdGFsbFNjYWxlRm9yS2V5PWZ1bmN0aW9uKHQsZSl7dC5vZmZVcGRhdGUodGhpcy5fcmVuZGVyQ2FsbGJhY2spLHQub2ZmVXBkYXRlKHRoaXMuX2RlZmVycmVkUmVzZXRFbnRpdHlTdG9yZSksdC5yZW1vdmVJbmNsdWRlZFZhbHVlc1Byb3ZpZGVyKHRoaXMuX2luY2x1ZGVkVmFsdWVzUHJvdmlkZXIpfSxlLnByb3RvdHlwZS5faW5zdGFsbFNjYWxlRm9yS2V5PWZ1bmN0aW9uKHQsZSl7dC5vblVwZGF0ZSh0aGlzLl9yZW5kZXJDYWxsYmFjayksdC5vblVwZGF0ZSh0aGlzLl9kZWZlcnJlZFJlc2V0RW50aXR5U3RvcmUpLHQuYWRkSW5jbHVkZWRWYWx1ZXNQcm92aWRlcih0aGlzLl9pbmNsdWRlZFZhbHVlc1Byb3ZpZGVyKX0sZS5wcm90b3R5cGUuX3Byb3BlcnR5UHJvamVjdG9ycz1mdW5jdGlvbigpe3JldHVybnt9fSxlLl9zY2FsZWRBY2Nlc3Nvcj1mdW5jdGlvbih0KXt2YXIgZT10LnNjYWxlLG49dC5hY2Nlc3NvcixpPXQucG9zdFNjYWxlLHI9bnVsbD09ZT9uOmZ1bmN0aW9uKHQsaSxyKXtyZXR1cm4gZS5zY2FsZShuKHQsaSxyKSl9O3JldHVybiBudWxsPT1pP3I6ZnVuY3Rpb24odCxlLG4pe3JldHVybiBpKHIodCxlLG4pLHQsZSxuKX19LGUucHJvdG90eXBlLl9waXhlbFBvaW50PWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm57eDowLHk6MH19LGUucHJvdG90eXBlLl9hbmltYXRlT25OZXh0UmVuZGVyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FuaW1hdGUmJnRoaXMuX2RhdGFDaGFuZ2VkfSxlLk9QVElNSVpFX01FTU9JWkVfUFJPSkVDVE9SUz0hMSxlLl9BTklNQVRJT05fTUFYX0RVUkFUSU9OPTYwMCxlfSkob010LkNvbXBvbmVudCk7ZnVuY3Rpb24gZE10KHQsZSxuKXt2YXIgaT1lLmFjY2Vzc29yLHI9ZS5zY2FsZTtpZihudWxsPT1yKXJldHVybltdO3ZhciBvPXQuZGF0YSgpO251bGwhPW4mJihvPW8uZmlsdGVyKChmdW5jdGlvbihlLGkpe3JldHVybiBuKGUsaSx0KX0pKSk7dmFyIGE9by5tYXAoKGZ1bmN0aW9uKGUsbil7cmV0dXJuIGkoZSxuLHQpfSkpO3JldHVybiByLmV4dGVudE9mVmFsdWVzKGEpfQovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqL3NTdC5QbG90PWhNdCxPYmplY3QuZGVmaW5lUHJvcGVydHkoYVN0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgcE10PUJPLGZNdD1zU3QsbU10PURfdCxnTXQ9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXtyZXR1cm4gbnVsbCE9PXQmJnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfXJldHVybiBwTXQuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUuZW50aXR5TmVhcmVzdD1mdW5jdGlvbih0KXt2YXIgZSxuPTEvMDtyZXR1cm4gdGhpcy5jb21wb25lbnRzKCkuZm9yRWFjaCgoZnVuY3Rpb24oaSl7dmFyIHI9aS5lbnRpdHlOZWFyZXN0KHQpO2lmKG51bGwhPXIpe3ZhciBvPW1NdC5NYXRoLmRpc3RhbmNlU3F1YXJlZChyLnBvc2l0aW9uLHQpO288PW4mJihuPW8sZT1yKX19KSksZX0sZS5wcm90b3R5cGUuYXBwZW5kPWZ1bmN0aW9uKGUpe2lmKG51bGwhPWUmJiEoZSBpbnN0YW5jZW9mIGZNdC5QbG90KSl0aHJvdyBuZXcgRXJyb3IoIlBsb3QgR3JvdXAgb25seSBhY2NlcHRzIHBsb3RzIik7cmV0dXJuIHQucHJvdG90eXBlLmFwcGVuZC5jYWxsKHRoaXMsZSksdGhpc30sZX0pKF93dC5Hcm91cCk7YVN0LlBsb3RHcm91cD1nTXQ7dmFyIF9NdD17fTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi9PYmplY3QuZGVmaW5lUHJvcGVydHkoX010LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgeU10PUJPLHZNdD13cHQsYk10PURfdCx4TXQ9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7dm9pZCAwPT09ZSYmKGU9W10pO3ZhciBuPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gbi5fcm93UGFkZGluZz0wLG4uX2NvbHVtblBhZGRpbmc9MCxuLl9yb3dzPVtdLG4uX3Jvd1dlaWdodHM9W10sbi5fY29sdW1uV2VpZ2h0cz1bXSxuLl9uUm93cz0wLG4uX25Db2xzPTAsbi5fY2FsY3VsYXRlZExheW91dD1udWxsLG4uYWRkQ2xhc3MoInRhYmxlIiksZS5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3QuZm9yRWFjaCgoZnVuY3Rpb24odCxpKXtudWxsIT10JiZuLmFkZCh0LGUsaSl9KSl9KSksbn1yZXR1cm4geU10Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLl9mb3JFYWNoPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wO2U8dGhpcy5fblJvd3M7ZSsrKWZvcih2YXIgbj0wO248dGhpcy5fbkNvbHM7bisrKW51bGwhPXRoaXMuX3Jvd3NbZV1bbl0mJnQodGhpcy5fcm93c1tlXVtuXSl9LGUucHJvdG90eXBlLmhhcz1mdW5jdGlvbih0KXtmb3IodmFyIGU9MDtlPHRoaXMuX25Sb3dzO2UrKylmb3IodmFyIG49MDtuPHRoaXMuX25Db2xzO24rKylpZih0aGlzLl9yb3dzW2VdW25dPT09dClyZXR1cm4hMDtyZXR1cm4hMX0sZS5wcm90b3R5cGUuY29tcG9uZW50QXQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdDwwfHx0Pj10aGlzLl9uUm93c3x8ZTwwfHxlPj10aGlzLl9uQ29scz9udWxsOnRoaXMuX3Jvd3NbdF1bZV19LGUucHJvdG90eXBlLmFkZD1mdW5jdGlvbih0LGUsbil7aWYobnVsbD09dCl0aHJvdyBFcnJvcigiQ2Fubm90IGFkZCBudWxsIHRvIGEgdGFibGUgY2VsbCIpO2lmKCF0aGlzLmhhcyh0KSl7aWYobnVsbCE9KHRoaXMuX3Jvd3NbZV0mJnRoaXMuX3Jvd3NbZV1bbl0pKXRocm93IG5ldyBFcnJvcigiY2VsbCBpcyBvY2N1cGllZCIpO3QuZGV0YWNoKCksdGhpcy5fblJvd3M9TWF0aC5tYXgoZSsxLHRoaXMuX25Sb3dzKSx0aGlzLl9uQ29scz1NYXRoLm1heChuKzEsdGhpcy5fbkNvbHMpLHRoaXMuX3BhZFRhYmxlVG9TaXplKHRoaXMuX25Sb3dzLHRoaXMuX25Db2xzKSx0aGlzLl9yb3dzW2VdW25dPXQsdGhpcy5fYWRvcHRBbmRBbmNob3IodCksdGhpcy5yZWRyYXcoKX1yZXR1cm4gdGhpc30sZS5wcm90b3R5cGUuX3JlbW92ZT1mdW5jdGlvbih0KXtmb3IodmFyIGU9MDtlPHRoaXMuX25Sb3dzO2UrKylmb3IodmFyIG49MDtuPHRoaXMuX25Db2xzO24rKylpZih0aGlzLl9yb3dzW2VdW25dPT09dClyZXR1cm4gdGhpcy5fcm93c1tlXVtuXT1udWxsLCEwO3JldHVybiExfSxlLnByb3RvdHlwZS5faXRlcmF0ZUxheW91dD1mdW5jdGlvbih0LG4saSl7dm9pZCAwPT09aSYmKGk9ITEpO2Zvcih2YXIgcixvLGEscyxsLGM9dGhpcy5fcm93cyx1PXZNdC50cmFuc3Bvc2UodGhpcy5fcm93cyksaD10LXRoaXMuX2NvbHVtblBhZGRpbmcqKHRoaXMuX25Db2xzLTEpLGQ9bi10aGlzLl9yb3dQYWRkaW5nKih0aGlzLl9uUm93cy0xKSxwPWUuX2NhbGNDb21wb25lbnRXZWlnaHRzKHRoaXMuX3Jvd1dlaWdodHMsYywoZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXR8fHQuZml4ZWRIZWlnaHQoKX0pKSxmPWUuX2NhbGNDb21wb25lbnRXZWlnaHRzKHRoaXMuX2NvbHVtbldlaWdodHMsdSwoZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXR8fHQuZml4ZWRXaWR0aCgpfSkpLG09Zi5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiAwPT09dD8uNTp0fSkpLGc9cC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiAwPT09dD8uNTp0fSkpLF89ZS5fY2FsY1Byb3BvcnRpb25hbFNwYWNlKG0saCkseT1lLl9jYWxjUHJvcG9ydGlvbmFsU3BhY2UoZyxkKSx2PWJNdC5BcnJheS5jcmVhdGVGaWxsZWRBcnJheSgwLHRoaXMuX25Db2xzKSxiPWJNdC5BcnJheS5jcmVhdGVGaWxsZWRBcnJheSgwLHRoaXMuX25Sb3dzKSx4PTA7Oyl7dmFyIHc9Yk10LkFycmF5LmFkZChiLHkpLFM9Yk10LkFycmF5LmFkZCh2LF8pO3Y9KGE9dGhpcy5fZGV0ZXJtaW5lR3VhcmFudGVlcyhTLHcsaSkpLmd1YXJhbnRlZWRXaWR0aHMsYj1hLmd1YXJhbnRlZWRIZWlnaHRzLHM9YS53YW50c1dpZHRoQXJyLnNvbWUoKGZ1bmN0aW9uKHQpe3JldHVybiB0fSkpLGw9YS53YW50c0hlaWdodEFyci5zb21lKChmdW5jdGlvbih0KXtyZXR1cm4gdH0pKTt2YXIgTT1yLEU9bztyPWgtdk10LnN1bShhLmd1YXJhbnRlZWRXaWR0aHMpLG89ZC12TXQuc3VtKGEuZ3VhcmFudGVlZEhlaWdodHMpO3ZhciBUPXZvaWQgMDtzPyhUPWEud2FudHNXaWR0aEFyci5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0Py4xOjB9KSksVD1iTXQuQXJyYXkuYWRkKFQsZikpOlQ9Zjt2YXIgQz12b2lkIDA7aWYobD8oQz1hLndhbnRzSGVpZ2h0QXJyLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQ/LjE6MH0pKSxDPWJNdC5BcnJheS5hZGQoQyxwKSk6Qz1wLF89ZS5fY2FsY1Byb3BvcnRpb25hbFNwYWNlKFQscikseT1lLl9jYWxjUHJvcG9ydGlvbmFsU3BhY2UoQyxvKSx4KyssIShyPjAmJnIhPT1NKSYmIShvPjAmJm8hPT1FKSlicmVhaztpZih4PjUpYnJlYWt9cmV0dXJuIHI9aC12TXQuc3VtKGEuZ3VhcmFudGVlZFdpZHRocyksbz1kLXZNdC5zdW0oYS5ndWFyYW50ZWVkSGVpZ2h0cykse2NvbFByb3BvcnRpb25hbFNwYWNlOl89ZS5fY2FsY1Byb3BvcnRpb25hbFNwYWNlKGYscikscm93UHJvcG9ydGlvbmFsU3BhY2U6eT1lLl9jYWxjUHJvcG9ydGlvbmFsU3BhY2UocCxvKSxndWFyYW50ZWVkV2lkdGhzOmEuZ3VhcmFudGVlZFdpZHRocyxndWFyYW50ZWVkSGVpZ2h0czphLmd1YXJhbnRlZWRIZWlnaHRzLHdhbnRzV2lkdGg6cyx3YW50c0hlaWdodDpsfX0sZS5wcm90b3R5cGUuX2RldGVybWluZUd1YXJhbnRlZXM9ZnVuY3Rpb24odCxlLG4pe3ZvaWQgMD09PW4mJihuPSExKTt2YXIgaT1iTXQuQXJyYXkuY3JlYXRlRmlsbGVkQXJyYXkoMCx0aGlzLl9uQ29scykscj1iTXQuQXJyYXkuY3JlYXRlRmlsbGVkQXJyYXkoMCx0aGlzLl9uUm93cyksbz1iTXQuQXJyYXkuY3JlYXRlRmlsbGVkQXJyYXkoITEsdGhpcy5fbkNvbHMpLGE9Yk10LkFycmF5LmNyZWF0ZUZpbGxlZEFycmF5KCExLHRoaXMuX25Sb3dzKTtyZXR1cm4gdGhpcy5fcm93cy5mb3JFYWNoKChmdW5jdGlvbihzLGwpe3MuZm9yRWFjaCgoZnVuY3Rpb24ocyxjKXt2YXIgdTt1PW51bGwhPXM/cy5yZXF1ZXN0ZWRTcGFjZSh0W2NdLGVbbF0pOnttaW5XaWR0aDowLG1pbkhlaWdodDowfTt2YXIgaD1uP01hdGgubWluKHUubWluV2lkdGgsdFtjXSk6dS5taW5XaWR0aDtpW2NdPU1hdGgubWF4KGlbY10saCk7dmFyIGQ9bj9NYXRoLm1pbih1Lm1pbkhlaWdodCxlW2xdKTp1Lm1pbkhlaWdodDtyW2xdPU1hdGgubWF4KHJbbF0sZCksb1tjXT1vW2NdfHx1Lm1pbldpZHRoPnRbY10sYVtsXT1hW2xdfHx1Lm1pbkhlaWdodD5lW2xdfSkpfSkpLHtndWFyYW50ZWVkV2lkdGhzOmksZ3VhcmFudGVlZEhlaWdodHM6cix3YW50c1dpZHRoQXJyOm8sd2FudHNIZWlnaHRBcnI6YX19LGUucHJvdG90eXBlLnJlcXVlc3RlZFNwYWNlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuX2NhbGN1bGF0ZWRMYXlvdXQ9dGhpcy5faXRlcmF0ZUxheW91dCh0LGUpLHttaW5XaWR0aDp2TXQuc3VtKHRoaXMuX2NhbGN1bGF0ZWRMYXlvdXQuZ3VhcmFudGVlZFdpZHRocyksbWluSGVpZ2h0OnZNdC5zdW0odGhpcy5fY2FsY3VsYXRlZExheW91dC5ndWFyYW50ZWVkSGVpZ2h0cyl9fSxlLnByb3RvdHlwZS5jb21wdXRlTGF5b3V0PWZ1bmN0aW9uKGUsbixpKXt2YXIgcj10aGlzO3QucHJvdG90eXBlLmNvbXB1dGVMYXlvdXQuY2FsbCh0aGlzLGUsbixpKTt2YXIgbz12TXQuc3VtKHRoaXMuX2NhbGN1bGF0ZWRMYXlvdXQuZ3VhcmFudGVlZFdpZHRocyksYT12TXQuc3VtKHRoaXMuX2NhbGN1bGF0ZWRMYXlvdXQuZ3VhcmFudGVlZEhlaWdodHMpLHM9dGhpcy5fY2FsY3VsYXRlZExheW91dDsobz50aGlzLndpZHRoKCl8fGE+dGhpcy5oZWlnaHQoKSkmJihzPXRoaXMuX2l0ZXJhdGVMYXlvdXQodGhpcy53aWR0aCgpLHRoaXMuaGVpZ2h0KCksITApKTt2YXIgbD0wLGM9Yk10LkFycmF5LmFkZChzLnJvd1Byb3BvcnRpb25hbFNwYWNlLHMuZ3VhcmFudGVlZEhlaWdodHMpLHU9Yk10LkFycmF5LmFkZChzLmNvbFByb3BvcnRpb25hbFNwYWNlLHMuZ3VhcmFudGVlZFdpZHRocyk7cmV0dXJuIHRoaXMuX3Jvd3MuZm9yRWFjaCgoZnVuY3Rpb24odCxlKXt2YXIgbj0wO3QuZm9yRWFjaCgoZnVuY3Rpb24odCxpKXtudWxsIT10JiZ0LmNvbXB1dGVMYXlvdXQoe3g6bix5Omx9LHVbaV0sY1tlXSksbis9dVtpXStyLl9jb2x1bW5QYWRkaW5nfSkpLGwrPWNbZV0rci5fcm93UGFkZGluZ30pKSx0aGlzfSxlLnByb3RvdHlwZS5yb3dQYWRkaW5nPWZ1bmN0aW9uKHQpe2lmKG51bGw9PXQpcmV0dXJuIHRoaXMuX3Jvd1BhZGRpbmc7aWYoIWJNdC5NYXRoLmlzVmFsaWROdW1iZXIodCl8fHQ8MCl0aHJvdyBFcnJvcigicm93UGFkZGluZyBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIGZpbml0ZSB2YWx1ZSIpO3JldHVybiB0aGlzLl9yb3dQYWRkaW5nPXQsdGhpcy5yZWRyYXcoKSx0aGlzfSxlLnByb3RvdHlwZS5jb2x1bW5QYWRkaW5nPWZ1bmN0aW9uKHQpe2lmKG51bGw9PXQpcmV0dXJuIHRoaXMuX2NvbHVtblBhZGRpbmc7aWYoIWJNdC5NYXRoLmlzVmFsaWROdW1iZXIodCl8fHQ8MCl0aHJvdyBFcnJvcigiY29sdW1uUGFkZGluZyBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIGZpbml0ZSB2YWx1ZSIpO3JldHVybiB0aGlzLl9jb2x1bW5QYWRkaW5nPXQsdGhpcy5yZWRyYXcoKSx0aGlzfSxlLnByb3RvdHlwZS5yb3dXZWlnaHQ9ZnVuY3Rpb24odCxlKXtpZihudWxsPT1lKXJldHVybiB0aGlzLl9yb3dXZWlnaHRzW3RdO2lmKCFiTXQuTWF0aC5pc1ZhbGlkTnVtYmVyKGUpfHxlPDApdGhyb3cgRXJyb3IoInJvd1dlaWdodCBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIGZpbml0ZSB2YWx1ZSIpO3JldHVybiB0aGlzLl9yb3dXZWlnaHRzW3RdPWUsdGhpcy5yZWRyYXcoKSx0aGlzfSxlLnByb3RvdHlwZS5jb2x1bW5XZWlnaHQ9ZnVuY3Rpb24odCxlKXtpZihudWxsPT1lKXJldHVybiB0aGlzLl9jb2x1bW5XZWlnaHRzW3RdO2lmKCFiTXQuTWF0aC5pc1ZhbGlkTnVtYmVyKGUpfHxlPDApdGhyb3cgRXJyb3IoImNvbHVtbldlaWdodCBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIGZpbml0ZSB2YWx1ZSIpO3JldHVybiB0aGlzLl9jb2x1bW5XZWlnaHRzW3RdPWUsdGhpcy5yZWRyYXcoKSx0aGlzfSxlLnByb3RvdHlwZS5maXhlZFdpZHRoPWZ1bmN0aW9uKCl7dmFyIHQ9dk10LnRyYW5zcG9zZSh0aGlzLl9yb3dzKTtyZXR1cm4gZS5fZml4ZWRTcGFjZSh0LChmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dHx8dC5maXhlZFdpZHRoKCl9KSl9LGUucHJvdG90eXBlLmZpeGVkSGVpZ2h0PWZ1bmN0aW9uKCl7cmV0dXJuIGUuX2ZpeGVkU3BhY2UodGhpcy5fcm93cywoZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXR8fHQuZml4ZWRIZWlnaHQoKX0pKX0sZS5wcm90b3R5cGUuX3BhZFRhYmxlVG9TaXplPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPTA7bjx0O24rKyl7dm9pZCAwPT09dGhpcy5fcm93c1tuXSYmKHRoaXMuX3Jvd3Nbbl09W10sdGhpcy5fcm93V2VpZ2h0c1tuXT1udWxsKTtmb3IodmFyIGk9MDtpPGU7aSsrKXZvaWQgMD09PXRoaXMuX3Jvd3Nbbl1baV0mJih0aGlzLl9yb3dzW25dW2ldPW51bGwpfWZvcihpPTA7aTxlO2krKyl2b2lkIDA9PT10aGlzLl9jb2x1bW5XZWlnaHRzW2ldJiYodGhpcy5fY29sdW1uV2VpZ2h0c1tpXT1udWxsKX0sZS5fY2FsY0NvbXBvbmVudFdlaWdodHM9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0Lm1hcCgoZnVuY3Rpb24odCxpKXtyZXR1cm4gbnVsbCE9dD90OmVbaV0ubWFwKG4pLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCYmZX0pLCEwKT8wOjF9KSl9LGUuX2NhbGNQcm9wb3J0aW9uYWxTcGFjZT1mdW5jdGlvbih0LGUpe3ZhciBuPXZNdC5zdW0odCk7cmV0dXJuIDA9PT1uP2JNdC5BcnJheS5jcmVhdGVGaWxsZWRBcnJheSgwLHQubGVuZ3RoKTp0Lm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIGUqdC9ufSkpfSxlLl9maXhlZFNwYWNlPWZ1bmN0aW9uKHQsZSl7dmFyIG49ZnVuY3Rpb24odCl7cmV0dXJuIHQucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0JiZlfSksITApfTtyZXR1cm4gbih0Lm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIG4odC5tYXAoZSkpfSkpKX0sZX0pKHl3dC5Db21wb25lbnRDb250YWluZXIpO19NdC5UYWJsZT14TXQ7dmFyIHdNdD17fTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi9PYmplY3QuZGVmaW5lUHJvcGVydHkod010LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgU010PUJPLE1NdD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3ZhciBlPW51bGwhPT10JiZ0LmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpcztyZXR1cm4gZS5fbWF4TGluZXM9MixlfXJldHVybiBTTXQuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUucmVxdWVzdGVkU3BhY2U9ZnVuY3Rpb24odCxlKXt0aGlzLl93cmFwcGVyLm1heExpbmVzKHRoaXMuX21heExpbmVzKTt2YXIgbj0wPT09dGhpcy5hbmdsZSgpP3Q6ZTswPT09biYmKG49MS8wKTt2YXIgaT10aGlzLl93cmFwcGVyLndyYXAodGhpcy5fdGV4dCx0aGlzLl9tZWFzdXJlcixuKSxyPXRoaXMuX21lYXN1cmVyLm1lYXN1cmUoaS53cmFwcGVkVGV4dCk7cmV0dXJue21pbldpZHRoOigwPT09dGhpcy5hbmdsZSgpP3Iud2lkdGg6ci5oZWlnaHQpKzIqdGhpcy5wYWRkaW5nKCksbWluSGVpZ2h0OigwPT09dGhpcy5hbmdsZSgpP3IuaGVpZ2h0OnIud2lkdGgpKzIqdGhpcy5wYWRkaW5nKCl9fSxlLnByb3RvdHlwZS5tYXhMaW5lcz1mdW5jdGlvbih0KXtyZXR1cm4gMD09PWFyZ3VtZW50cy5sZW5ndGg/dGhpcy5fbWF4TGluZXM6KHRoaXMuX21heExpbmVzPXQsdGhpcy5yZWRyYXcoKSx0aGlzKX0sZX0pKE53dC5MYWJlbCk7d010LldyYXBwZWRMYWJlbD1NTXQ7dmFyIEVNdD17fTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi9PYmplY3QuZGVmaW5lUHJvcGVydHkoRU10LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgVE10PUJPLENNdD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3ZhciBlPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gZS5hZGRDbGFzcygieC1kcmFnLWJveC1sYXllciIpLGUuX2hhc0Nvcm5lcnM9ITEsZX1yZXR1cm4gVE10Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLmNvbXB1dGVMYXlvdXQ9ZnVuY3Rpb24oZSxuLGkpe3JldHVybiB0LnByb3RvdHlwZS5jb21wdXRlTGF5b3V0LmNhbGwodGhpcyxlLG4saSksdGhpcy5fc2V0Qm91bmRzKHRoaXMuYm91bmRzKCkpLHRoaXN9LGUucHJvdG90eXBlLl9zZXRCb3VuZHM9ZnVuY3Rpb24oZSl7dC5wcm90b3R5cGUuX3NldEJvdW5kcy5jYWxsKHRoaXMse3RvcExlZnQ6e3g6ZS50b3BMZWZ0LngseTowfSxib3R0b21SaWdodDp7eDplLmJvdHRvbVJpZ2h0LngseTp0aGlzLmhlaWdodCgpfX0pfSxlLnByb3RvdHlwZS5fc2V0UmVzaXphYmxlQ2xhc3Nlcz1mdW5jdGlvbih0KXt0JiZ0aGlzLmVuYWJsZWQoKT90aGlzLmFkZENsYXNzKCJ4LXJlc2l6YWJsZSIpOnRoaXMucmVtb3ZlQ2xhc3MoIngtcmVzaXphYmxlIil9LGUucHJvdG90eXBlLnlTY2FsZT1mdW5jdGlvbihlKXtpZihudWxsPT1lKXJldHVybiB0LnByb3RvdHlwZS55U2NhbGUuY2FsbCh0aGlzKTt0aHJvdyBuZXcgRXJyb3IoInlTY2FsZXMgY2Fubm90IGJlIHNldCBvbiBhbiBYRHJhZ0JveExheWVyIil9LGUucHJvdG90eXBlLnlFeHRlbnQ9ZnVuY3Rpb24oZSl7aWYobnVsbD09ZSlyZXR1cm4gdC5wcm90b3R5cGUueUV4dGVudC5jYWxsKHRoaXMpO3Rocm93IG5ldyBFcnJvcigiWERyYWdCb3hMYXllciBoYXMgbm8geUV4dGVudCIpfSxlfSkoZXh0LkRyYWdCb3hMYXllcik7RU10LlhEcmFnQm94TGF5ZXI9Q010O3ZhciBBTXQ9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovT2JqZWN0LmRlZmluZVByb3BlcnR5KEFNdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGtNdD1CTyxMTXQ9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt2YXIgZT10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIGUuYWRkQ2xhc3MoInktZHJhZy1ib3gtbGF5ZXIiKSxlLl9oYXNDb3JuZXJzPSExLGV9cmV0dXJuIGtNdC5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5jb21wdXRlTGF5b3V0PWZ1bmN0aW9uKGUsbixpKXtyZXR1cm4gdC5wcm90b3R5cGUuY29tcHV0ZUxheW91dC5jYWxsKHRoaXMsZSxuLGkpLHRoaXMuX3NldEJvdW5kcyh0aGlzLmJvdW5kcygpKSx0aGlzfSxlLnByb3RvdHlwZS5fc2V0Qm91bmRzPWZ1bmN0aW9uKGUpe3QucHJvdG90eXBlLl9zZXRCb3VuZHMuY2FsbCh0aGlzLHt0b3BMZWZ0Ont4OjAseTplLnRvcExlZnQueX0sYm90dG9tUmlnaHQ6e3g6dGhpcy53aWR0aCgpLHk6ZS5ib3R0b21SaWdodC55fX0pfSxlLnByb3RvdHlwZS5fc2V0UmVzaXphYmxlQ2xhc3Nlcz1mdW5jdGlvbih0KXt0JiZ0aGlzLmVuYWJsZWQoKT90aGlzLmFkZENsYXNzKCJ5LXJlc2l6YWJsZSIpOnRoaXMucmVtb3ZlQ2xhc3MoInktcmVzaXphYmxlIil9LGUucHJvdG90eXBlLnhTY2FsZT1mdW5jdGlvbihlKXtpZihudWxsPT1lKXJldHVybiB0LnByb3RvdHlwZS54U2NhbGUuY2FsbCh0aGlzKTt0aHJvdyBuZXcgRXJyb3IoInhTY2FsZXMgY2Fubm90IGJlIHNldCBvbiBhbiBZRHJhZ0JveExheWVyIil9LGUucHJvdG90eXBlLnhFeHRlbnQ9ZnVuY3Rpb24oZSl7aWYobnVsbD09ZSlyZXR1cm4gdC5wcm90b3R5cGUueEV4dGVudC5jYWxsKHRoaXMpO3Rocm93IG5ldyBFcnJvcigiWURyYWdCb3hMYXllciBoYXMgbm8geEV4dGVudCIpfSxlfSkoZXh0LkRyYWdCb3hMYXllcik7QU10LllEcmFnQm94TGF5ZXI9TE10LChmdW5jdGlvbih0KXsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBlPUJPO2UuX19leHBvcnRTdGFyKGV4dCx0KSxlLl9fZXhwb3J0U3Rhcihud3QsdCksZS5fX2V4cG9ydFN0YXIocHd0LHQpLGUuX19leHBvcnRTdGFyKF93dCx0KSxlLl9fZXhwb3J0U3Rhcihpd3QsdCksZS5fX2V4cG9ydFN0YXIoRXd0LHQpLGUuX19leHBvcnRTdGFyKE53dCx0KSxlLl9fZXhwb3J0U3RhcihCd3QsdCksZS5fX2V4cG9ydFN0YXIoYVN0LHQpLGUuX19leHBvcnRTdGFyKCR4dCx0KSxlLl9fZXhwb3J0U3RhcihfTXQsdCksZS5fX2V4cG9ydFN0YXIod010LHQpLGUuX19leHBvcnRTdGFyKEVNdCx0KSxlLl9fZXhwb3J0U3RhcihBTXQsdCl9KSh0eHQpO3ZhciBQTXQ9e30sTk10PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoTk10LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgSU10PUJPLFJNdD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3JldHVybiB0LmNhbGwodGhpcywicGF0aCIsImFyYyBmaWxsIil8fHRoaXN9cmV0dXJuIElNdC5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5fYXBwbHlEZWZhdWx0QXR0cmlidXRlcz1mdW5jdGlvbih0KXt0LnN0eWxlKCJzdHJva2UiLCJub25lIil9LGV9KShxU3QuU1ZHRHJhd2VyKTtOTXQuQXJjU1ZHRHJhd2VyPVJNdDt2YXIgT010PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqL09iamVjdC5kZWZpbmVQcm9wZXJ0eShPTXQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciB6TXQ9Qk8sRE10PShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7cmV0dXJuIHQuY2FsbCh0aGlzLCJwYXRoIiwiYXJjIG91dGxpbmUiKXx8dGhpc31yZXR1cm4gek10Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLl9hcHBseURlZmF1bHRBdHRyaWJ1dGVzPWZ1bmN0aW9uKHQpe3Quc3R5bGUoImZpbGwiLCJub25lIil9LGV9KShxU3QuU1ZHRHJhd2VyKTtPTXQuQXJjT3V0bGluZVNWR0RyYXdlcj1ETXQ7dmFyIEJNdD17fTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi9PYmplY3QuZGVmaW5lUHJvcGVydHkoQk10LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgSE10PUJPLEZNdD1qU3QsVk10PShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7cmV0dXJuIHQuY2FsbCh0aGlzLCJwYXRoIiwiYXJlYSIpfHx0aGlzfXJldHVybiBITXQuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUuX2FwcGx5RGVmYXVsdEF0dHJpYnV0ZXM9ZnVuY3Rpb24odCl7dC5zdHlsZSgic3Ryb2tlIiwibm9uZSIpfSxlLnByb3RvdHlwZS5nZXRWaXN1YWxQcmltaXRpdmVBdEluZGV4PWZ1bmN0aW9uKGUpe3JldHVybiB0LnByb3RvdHlwZS5nZXRWaXN1YWxQcmltaXRpdmVBdEluZGV4LmNhbGwodGhpcywwKX0sZX0pKHFTdC5TVkdEcmF3ZXIpO0JNdC5BcmVhU1ZHRHJhd2VyPVZNdDt2YXIgVU10PVsib3BhY2l0eSIsImZpbGwiLCJmaWxsLW9wYWNpdHkiXSxqTXQ9WyJvcGFjaXR5Iiwic3Ryb2tlIiwic3Ryb2tlLXdpZHRoIl07Qk10Lm1ha2VBcmVhQ2FudmFzRHJhd1N0ZXA9ZnVuY3Rpb24gR010KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4saSxyKXt2YXIgbz1GTXQucmVzb2x2ZUF0dHJpYnV0ZXMocixVTXQsaVswXSwwKTtGTXQucmVuZGVyQXJlYShuLHQoKSxpWzBdLG8pO3ZhciBhPUZNdC5yZXNvbHZlQXR0cmlidXRlcyhyLGpNdCxpWzBdLDApO0ZNdC5yZW5kZXJMaW5lKG4sZSgpLGlbMF0sYSl9fTt2YXIgV010PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqL09iamVjdC5kZWZpbmVQcm9wZXJ0eShXTXQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBxTXQ9Qk8sWU10PWpTdCxYTXQ9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXtyZXR1cm4gdC5jYWxsKHRoaXMsInBhdGgiLCJsaW5lIil8fHRoaXN9cmV0dXJuIHFNdC5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5fYXBwbHlEZWZhdWx0QXR0cmlidXRlcz1mdW5jdGlvbih0KXt0LnN0eWxlKCJmaWxsIiwibm9uZSIpfSxlLnByb3RvdHlwZS5nZXRWaXN1YWxQcmltaXRpdmVBdEluZGV4PWZ1bmN0aW9uKGUpe3JldHVybiB0LnByb3RvdHlwZS5nZXRWaXN1YWxQcmltaXRpdmVBdEluZGV4LmNhbGwodGhpcywwKX0sZX0pKHFTdC5TVkdEcmF3ZXIpO1dNdC5MaW5lU1ZHRHJhd2VyPVhNdDt2YXIgJE10PVsib3BhY2l0eSIsInN0cm9rZS1vcGFjaXR5Iiwic3Ryb2tlLXdpZHRoIiwic3Ryb2tlIiwic3Ryb2tlLWRhc2hhcnJheSJdO1dNdC5tYWtlTGluZUNhbnZhc0RyYXdTdGVwPWZ1bmN0aW9uIEtNdCh0KXtyZXR1cm4gZnVuY3Rpb24oZSxuLGkpe3ZhciByPVlNdC5yZXNvbHZlQXR0cmlidXRlcyhpLCRNdCxuWzBdLDApO1lNdC5yZW5kZXJMaW5lKGUsdCgpLG5bMF0scil9fTt2YXIgWk10PXt9OyEoZnVuY3Rpb24odCl7Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgZT1CTyxuPWpTdCxpPShmdW5jdGlvbih0KXtmdW5jdGlvbiBuKGUpe3ZvaWQgMD09PWUmJihlPSIiKTt2YXIgbj10LmNhbGwodGhpcywicmVjdCIsIiIpfHx0aGlzO3JldHVybiBuLl9yb290Q2xhc3NOYW1lPWUsbi5fcm9vdC5jbGFzc2VkKG4uX3Jvb3RDbGFzc05hbWUsITApLG59cmV0dXJuIGUuX19leHRlbmRzKG4sdCksbn0pKHFTdC5TVkdEcmF3ZXIpO3QuUmVjdGFuZ2xlU1ZHRHJhd2VyPWk7dmFyIHI9bi5Db250ZXh0U3R5bGVBdHRycy5jb25jYXQoWyJ4IiwieSIsIndpZHRoIiwiaGVpZ2h0Il0pO3QuUmVjdGFuZ2xlQ2FudmFzRHJhd1N0ZXA9ZnVuY3Rpb24odCxlLGkpe3Quc2F2ZSgpO2Zvcih2YXIgbz1lLmxlbmd0aCxhPTA7YTxvO2ErKyl7dmFyIHM9ZVthXTtpZihudWxsIT1zKXt2YXIgbD1uLnJlc29sdmVBdHRyaWJ1dGVzKGkscixzLGEpO3QuYmVnaW5QYXRoKCksdC5yZWN0KGwueCxsLnksbC53aWR0aCxsLmhlaWdodCksbi5yZW5kZXJQYXRoV2l0aFN0eWxlKHQsbCl9fXQucmVzdG9yZSgpfTt2YXIgbz0oZnVuY3Rpb24obil7ZnVuY3Rpb24gaShlKXtyZXR1cm4gbi5jYWxsKHRoaXMsZSx0LlJlY3RhbmdsZUNhbnZhc0RyYXdTdGVwKXx8dGhpc31yZXR1cm4gZS5fX2V4dGVuZHMoaSxuKSxpfSkobi5DYW52YXNEcmF3ZXIpO3QuUmVjdGFuZ2xlQ2FudmFzRHJhd2VyPW99KShaTXQpO3ZhciBKTXQ9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovT2JqZWN0LmRlZmluZVByb3BlcnR5KEpNdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIFFNdD1CTyx0RXQ9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXtyZXR1cm4gdC5jYWxsKHRoaXMsImxpbmUiLCIiKXx8dGhpc31yZXR1cm4gUU10Ll9fZXh0ZW5kcyhlLHQpLGV9KShxU3QuU1ZHRHJhd2VyKTtKTXQuU2VnbWVudFNWR0RyYXdlcj10RXQ7dmFyIGVFdD17fSxuRXQ9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTctcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShuRXQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBpRXQ9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLG4saSl7dm9pZCAwPT09aSYmKGk9d2luZG93LmRldmljZVBpeGVsUmF0aW8pLHRoaXMuc2NyZWVuV2lkdGg9ZSx0aGlzLnNjcmVlbkhlaWdodD1uLHRoaXMuZGV2aWNlUGl4ZWxSYXRpbz1pLHRoaXMucGl4ZWxXaWR0aD1lKmksdGhpcy5waXhlbEhlaWdodD1uKmksdGhpcy5jYW52YXM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIiksdGhpcy5jdHg9dGhpcy5jYW52YXMuZ2V0Q29udGV4dCgiMmQiKSx0LnNpemVQaXhlbHModGhpcy5jdHgsZSxuLGkpfXJldHVybiB0LnNpemVQaXhlbHM9ZnVuY3Rpb24odCxlLG4saSl7dmFyIHI9dC5jYW52YXM7ci53aWR0aD1lKmksci5oZWlnaHQ9bippLHIuc3R5bGUud2lkdGg9ZSsicHgiLHIuc3R5bGUuaGVpZ2h0PW4rInB4Iix0LnNldFRyYW5zZm9ybSgxLDAsMCwxLDAsMCksdC5zY2FsZShpLGkpfSx0LnByb3RvdHlwZS5ibGl0PWZ1bmN0aW9uKHQsZSxuKXt2b2lkIDA9PT1lJiYoZT0wKSx2b2lkIDA9PT1uJiYobj0wKSx0LmRyYXdJbWFnZSh0aGlzLmNhbnZhcyxlLG4sdGhpcy5zY3JlZW5XaWR0aCx0aGlzLnNjcmVlbkhlaWdodCl9LHQucHJvdG90eXBlLmJsaXRDZW50ZXI9ZnVuY3Rpb24odCxlLG4pe3ZvaWQgMD09PWUmJihlPTApLHZvaWQgMD09PW4mJihuPTApLHRoaXMuYmxpdCh0LE1hdGguZmxvb3IoZS10aGlzLnNjcmVlbldpZHRoLzIpLE1hdGguZmxvb3Iobi10aGlzLnNjcmVlbkhlaWdodC8yKSl9LHQucHJvdG90eXBlLnJlc2l6ZT1mdW5jdGlvbihlLG4saSl7dm9pZCAwPT09aSYmKGk9ITEpO3ZhciByPXRoaXMuZGV2aWNlUGl4ZWxSYXRpbztyZXR1cm4gdGhpcy5zY3JlZW5XaWR0aD1lLHRoaXMuc2NyZWVuSGVpZ2h0PW4sdGhpcy5waXhlbFdpZHRoPWUqcix0aGlzLnBpeGVsSGVpZ2h0PW4qcix0LnNpemVQaXhlbHModGhpcy5jdHgsZSxuLHIpLGkmJnRoaXMuY3R4LnRyYW5zbGF0ZShlLzIsZS8yKSx0aGlzfSx0LnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbih0KXt2YXIgZT10aGlzLG49ZS5waXhlbFdpZHRoLGk9ZS5waXhlbEhlaWdodCxyPWUuY3R4O3JldHVybiByLnNhdmUoKSxyLnNldFRyYW5zZm9ybSgxLDAsMCwxLDAsMCksbnVsbD09dD9yLmNsZWFyUmVjdCgwLDAsbixpKTooci5maWxsU3R5bGU9dCxyLmZpbGxSZWN0KDAsMCxuLGkpKSxyLnJlc3RvcmUoKSx0aGlzfSx0LnByb3RvdHlwZS5nZXRJbWFnZURhdGE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jdHguZ2V0SW1hZ2VEYXRhKDAsMCx0aGlzLnBpeGVsV2lkdGgsdGhpcy5waXhlbEhlaWdodCl9LHR9KSgpO25FdC5DYW52YXNCdWZmZXI9aUV0LAovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoZUV0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgckV0PUJPLG9FdD1qU3QsYUV0PW5FdCxzRXQ9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXtyZXR1cm4gdC5jYWxsKHRoaXMsInBhdGgiLCJzeW1ib2wiKXx8dGhpc31yZXR1cm4gckV0Ll9fZXh0ZW5kcyhlLHQpLGV9KShxU3QuU1ZHRHJhd2VyKTtlRXQuU3ltYm9sU1ZHRHJhd2VyPXNFdDt2YXIgbEV0PW9FdC5Db250ZXh0U3R5bGVBdHRycy5jb25jYXQoWyJ4IiwieSJdKTtmdW5jdGlvbiBjRXQodCxlLG4saSxyKXtyZXR1cm4gbityPj0wJiZuLXI8PXQmJmkrcj49MCYmaS1yPD1lfWZ1bmN0aW9uIHVFdCh0LGUsbil7aWYobnVsbD09dClyZXR1cm4hMTtmb3IodmFyIGk9MDtpPG4ubGVuZ3RoO2krKyl7dmFyIHI9bltpXTtpZih0W3JdIT1lW3JdKXJldHVybiExfXJldHVybiEwfWVFdC5tYWtlU3ltYm9sQ2FudmFzRHJhd1N0ZXA9ZnVuY3Rpb24gaEV0KHQsZSxuLGkpe3ZhciByPXRoaXM7cmV0dXJuIGZ1bmN0aW9uKG8sYSxzKXtmb3IodmFyIGw9by5jYW52YXMsYz1sLmNsaWVudFdpZHRoLHU9bC5jbGllbnRIZWlnaHQsaD12b2lkIDA9PT1pP25ldyBhRXQuQ2FudmFzQnVmZmVyKDAsMCk6aSxkPWUoKSxwPW4oKSxmPW51bGwsbT1udWxsLGc9bnVsbCxfPTA7XzxhLmxlbmd0aDtfKyspe3ZhciB5PWFbX107aWYobnVsbCE9eSl7dmFyIHY9b0V0LnJlc29sdmVBdHRyaWJ1dGVzKHMsbEV0LHksXyksYj1wKHksXyx0KTtpZihjRXQoYyx1LHYueCx2LnksYikpe3ZhciB4PXVFdChmLHYsb0V0LkNvbnRleHRTdHlsZUF0dHJzKSx3PWQoeSxfLHIuX2RhdGFzZXQpO2lmKHgmJmc9PWImJm09PXcpO2Vsc2V7dmFyIFM9YitvRXQuZ2V0U3Ryb2tlV2lkdGgodikrMTsoUz5oLnNjcmVlbldpZHRofHxTPmguc2NyZWVuSGVpZ2h0KSYmaC5yZXNpemUoUyxTLCEwKSxoLmNsZWFyKCk7dmFyIE09aC5jdHg7TS5iZWdpblBhdGgoKSx3KGIpLmNvbnRleHQoTSkobnVsbCksTS5jbG9zZVBhdGgoKSxvRXQucmVuZGVyUGF0aFdpdGhTdHlsZShNLHYpLG09dyxnPWIsZj12fWguYmxpdENlbnRlcihvLHYueCx2LnkpfX19fX0sKGZ1bmN0aW9uKHQpewovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGU9Qk87ZS5fX2V4cG9ydFN0YXIoTk10LHQpLGUuX19leHBvcnRTdGFyKE9NdCx0KSxlLl9fZXhwb3J0U3RhcihCTXQsdCksZS5fX2V4cG9ydFN0YXIoalN0LHQpLGUuX19leHBvcnRTdGFyKEdTdCx0KSxlLl9fZXhwb3J0U3RhcihXTXQsdCksZS5fX2V4cG9ydFN0YXIoWk10LHQpLGUuX19leHBvcnRTdGFyKEpNdCx0KSxlLl9fZXhwb3J0U3RhcihxU3QsdCksZS5fX2V4cG9ydFN0YXIoZUV0LHQpfSkoUE10KTt2YXIgZEV0PXt9LHBFdD17fSxmRXQ9e30sbUV0PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkobUV0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgZ0V0PUJPLF9FdD1YdnQseUV0PURfdCx2RXQ9S1N0LGJFdD1zU3QseEV0PShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7dmFyIGU9dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBlLl9hdXRvQWRqdXN0WFNjYWxlRG9tYWluPSExLGUuX2F1dG9BZGp1c3RZU2NhbGVEb21haW49ITEsZS5fZGVmZXJyZWRSZW5kZXJpbmc9ITEsZS5fYXBwbHlEZWZlcnJlZFJlbmRlcmluZ1RyYW5zZm9ybT1mdW5jdGlvbih0LG4saSxyKXtlLl9pc0FuY2hvcmVkJiYobnVsbCE9ZS5fcmVuZGVyQXJlYSYmZS5fcmVuZGVyQXJlYS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIit0KyIsICIrbisiKSBzY2FsZSgiK2krIiwgIityKyIpIiksbnVsbCE9ZS5fY2FudmFzJiZlLl9jYW52YXMuc3R5bGUoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK3QrInB4LCAiK24rInB4KSBzY2FsZSgiK2krIiwgIityKyIpIikpfSxlLmFkZENsYXNzKCJ4eS1wbG90IiksZS5fYWRqdXN0WURvbWFpbk9uQ2hhbmdlRnJvbVhDYWxsYmFjaz1mdW5jdGlvbih0KXtyZXR1cm4gZS5fYWRqdXN0WURvbWFpbk9uQ2hhbmdlRnJvbVgoKX0sZS5fYWRqdXN0WERvbWFpbk9uQ2hhbmdlRnJvbVlDYWxsYmFjaz1mdW5jdGlvbih0KXtyZXR1cm4gZS5fYWRqdXN0WERvbWFpbk9uQ2hhbmdlRnJvbVkoKX0sZS5fcmVuZGVyQ2FsbGJhY2s9ZnVuY3Rpb24oKXtpZihlLmRlZmVycmVkUmVuZGVyaW5nKCkpe3ZhciB0PWUueCgpJiZlLngoKS5zY2FsZSxuPWUueSgpJiZlLnkoKS5zY2FsZTtlLl9kZWZlcnJlZFJlbmRlcmVyLnVwZGF0ZURvbWFpbnModCxuKX1lbHNlIGUucmVuZGVyKCl9LGUuX2RlZmVycmVkUmVuZGVyZXI9bmV3IHZFdC5EZWZlcnJlZFJlbmRlcmVyKChmdW5jdGlvbigpe3JldHVybiBlLnJlbmRlcigpfSksZS5fYXBwbHlEZWZlcnJlZFJlbmRlcmluZ1RyYW5zZm9ybSksZX1yZXR1cm4gZ0V0Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmRlZmVycmVkUmVuZGVyaW5nKCkmJnRoaXMuX2RlZmVycmVkUmVuZGVyZXIucmVzZXRUcmFuc2Zvcm1zKCksdC5wcm90b3R5cGUucmVuZGVyLmNhbGwodGhpcyl9LGUucHJvdG90eXBlLmRlZmVycmVkUmVuZGVyaW5nPWZ1bmN0aW9uKHQpe2lmKG51bGw9PXQpcmV0dXJuIHRoaXMuX2RlZmVycmVkUmVuZGVyaW5nO2lmKHQpe3ZhciBlPXRoaXMueCgpJiZ0aGlzLngoKS5zY2FsZSxuPXRoaXMueSgpJiZ0aGlzLnkoKS5zY2FsZTt0aGlzLl9kZWZlcnJlZFJlbmRlcmVyLnNldERvbWFpbnMoZSxuKX1yZXR1cm4gdGhpcy5fZGVmZXJyZWRSZW5kZXJpbmc9dCx0aGlzfSxlLnByb3RvdHlwZS54PWZ1bmN0aW9uKHQsbixpKXtpZihudWxsPT10KXJldHVybiB0aGlzLl9wcm9wZXJ0eUJpbmRpbmdzLmdldChlLl9YX0tFWSk7dGhpcy5fYmluZFByb3BlcnR5KGUuX1hfS0VZLHQsbixpKTt2YXIgcj10aGlzLndpZHRoKCk7cmV0dXJuIG51bGwhPW4mJm51bGwhPXImJm4ucmFuZ2UoWzAscl0pLHRoaXMuX2F1dG9BZGp1c3RZU2NhbGVEb21haW4mJnRoaXMuX3VwZGF0ZVlFeHRlbnRzQW5kQXV0b2RvbWFpbigpLHRoaXMucmVuZGVyKCksdGhpc30sZS5wcm90b3R5cGUueT1mdW5jdGlvbih0LG4saSl7aWYobnVsbD09dClyZXR1cm4gdGhpcy5fcHJvcGVydHlCaW5kaW5ncy5nZXQoZS5fWV9LRVkpO3RoaXMuX2JpbmRQcm9wZXJ0eShlLl9ZX0tFWSx0LG4saSk7dmFyIHI9dGhpcy5oZWlnaHQoKTtyZXR1cm4gbnVsbCE9biYmbnVsbCE9ciYmbi5yYW5nZShuIGluc3RhbmNlb2YgX0V0LkNhdGVnb3J5P1swLHJdOltyLDBdKSx0aGlzLl9hdXRvQWRqdXN0WFNjYWxlRG9tYWluJiZ0aGlzLl91cGRhdGVYRXh0ZW50c0FuZEF1dG9kb21haW4oKSx0aGlzLnJlbmRlcigpLHRoaXN9LGUucHJvdG90eXBlLl9maWx0ZXJGb3JQcm9wZXJ0eT1mdW5jdGlvbih0KXtyZXR1cm4ieCI9PT10JiZ0aGlzLl9hdXRvQWRqdXN0WFNjYWxlRG9tYWluP3RoaXMuX21ha2VGaWx0ZXJCeVByb3BlcnR5KCJ5Iik6InkiIT09dCYmInkwIiE9PXR8fCF0aGlzLl9hdXRvQWRqdXN0WVNjYWxlRG9tYWluP251bGw6dGhpcy5fbWFrZUZpbHRlckJ5UHJvcGVydHkoIngiKX0sZS5wcm90b3R5cGUuX21ha2VGaWx0ZXJCeVByb3BlcnR5PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3Byb3BlcnR5QmluZGluZ3MuZ2V0KHQpO2lmKG51bGwhPWUpe3ZhciBuPWUuYWNjZXNzb3IsaT1lLnNjYWxlO2lmKG51bGwhPWkpcmV0dXJuIGZ1bmN0aW9uKHQsZSxyKXt2YXIgbz1pLnJhbmdlKCk7cmV0dXJuIHlFdC5NYXRoLmluUmFuZ2UoaS5zY2FsZShuKHQsZSxyKSksb1swXSxvWzFdKX19cmV0dXJuIG51bGx9LGUucHJvdG90eXBlLl91bmluc3RhbGxTY2FsZUZvcktleT1mdW5jdGlvbihuLGkpe3QucHJvdG90eXBlLl91bmluc3RhbGxTY2FsZUZvcktleS5jYWxsKHRoaXMsbixpKSxuLm9mZlVwZGF0ZShpPT09ZS5fWF9LRVk/dGhpcy5fYWRqdXN0WURvbWFpbk9uQ2hhbmdlRnJvbVhDYWxsYmFjazp0aGlzLl9hZGp1c3RYRG9tYWluT25DaGFuZ2VGcm9tWUNhbGxiYWNrKX0sZS5wcm90b3R5cGUuX2luc3RhbGxTY2FsZUZvcktleT1mdW5jdGlvbihuLGkpe3QucHJvdG90eXBlLl9pbnN0YWxsU2NhbGVGb3JLZXkuY2FsbCh0aGlzLG4saSksbi5vblVwZGF0ZShpPT09ZS5fWF9LRVk/dGhpcy5fYWRqdXN0WURvbWFpbk9uQ2hhbmdlRnJvbVhDYWxsYmFjazp0aGlzLl9hZGp1c3RYRG9tYWluT25DaGFuZ2VGcm9tWUNhbGxiYWNrKX0sZS5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3JldHVybiB0LnByb3RvdHlwZS5kZXN0cm95LmNhbGwodGhpcyksdGhpcy54KCkuc2NhbGUmJnRoaXMueCgpLnNjYWxlLm9mZlVwZGF0ZSh0aGlzLl9hZGp1c3RZRG9tYWluT25DaGFuZ2VGcm9tWENhbGxiYWNrKSx0aGlzLnkoKS5zY2FsZSYmdGhpcy55KCkuc2NhbGUub2ZmVXBkYXRlKHRoaXMuX2FkanVzdFhEb21haW5PbkNoYW5nZUZyb21ZQ2FsbGJhY2spLHRoaXN9LGUucHJvdG90eXBlLmF1dG9yYW5nZU1vZGU9ZnVuY3Rpb24odCl7aWYobnVsbD09dClyZXR1cm4gdGhpcy5fYXV0b0FkanVzdFhTY2FsZURvbWFpbj8ieCI6dGhpcy5fYXV0b0FkanVzdFlTY2FsZURvbWFpbj8ieSI6Im5vbmUiO3N3aXRjaCh0KXtjYXNlIngiOnRoaXMuX2F1dG9BZGp1c3RYU2NhbGVEb21haW49ITAsdGhpcy5fYXV0b0FkanVzdFlTY2FsZURvbWFpbj0hMSx0aGlzLl9hZGp1c3RYRG9tYWluT25DaGFuZ2VGcm9tWSgpO2JyZWFrO2Nhc2UieSI6dGhpcy5fYXV0b0FkanVzdFhTY2FsZURvbWFpbj0hMSx0aGlzLl9hdXRvQWRqdXN0WVNjYWxlRG9tYWluPSEwLHRoaXMuX2FkanVzdFlEb21haW5PbkNoYW5nZUZyb21YKCk7YnJlYWs7Y2FzZSJub25lIjp0aGlzLl9hdXRvQWRqdXN0WFNjYWxlRG9tYWluPSExLHRoaXMuX2F1dG9BZGp1c3RZU2NhbGVEb21haW49ITE7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgc2NhbGUgbmFtZSAnIit0KyInLCBtdXN0IGJlICd4JywgJ3knIG9yICdub25lJyIpfXJldHVybiB0aGlzfSxlLnByb3RvdHlwZS5jb21wdXRlTGF5b3V0PWZ1bmN0aW9uKGUsbixpKXt0LnByb3RvdHlwZS5jb21wdXRlTGF5b3V0LmNhbGwodGhpcyxlLG4saSk7dmFyIHI9dGhpcy54KCksbz1yJiZyLnNjYWxlO251bGwhPW8mJm8ucmFuZ2UoWzAsdGhpcy53aWR0aCgpXSk7dmFyIGE9dGhpcy55KCkscz1hJiZhLnNjYWxlO3JldHVybiBudWxsIT1zJiZzLnJhbmdlKHMgaW5zdGFuY2VvZiBfRXQuQ2F0ZWdvcnk/WzAsdGhpcy5oZWlnaHQoKV06W3RoaXMuaGVpZ2h0KCksMF0pLHRoaXN9LGUucHJvdG90eXBlLl91cGRhdGVYRXh0ZW50c0FuZEF1dG9kb21haW49ZnVuY3Rpb24oKXt2YXIgdD10aGlzLngoKS5zY2FsZTtudWxsIT10JiZ0LmF1dG9Eb21haW4oKX0sZS5wcm90b3R5cGUuX3VwZGF0ZVlFeHRlbnRzQW5kQXV0b2RvbWFpbj1mdW5jdGlvbigpe3ZhciB0PXRoaXMueSgpLnNjYWxlO251bGwhPXQmJnQuYXV0b0RvbWFpbigpfSxlLnByb3RvdHlwZS5zaG93QWxsRGF0YT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl91cGRhdGVYRXh0ZW50c0FuZEF1dG9kb21haW4oKSx0aGlzLl91cGRhdGVZRXh0ZW50c0FuZEF1dG9kb21haW4oKSx0aGlzfSxlLnByb3RvdHlwZS5fYWRqdXN0WURvbWFpbk9uQ2hhbmdlRnJvbVg9ZnVuY3Rpb24oKXt0aGlzLl9wcm9qZWN0b3JzUmVhZHkoKSYmdGhpcy5fYXV0b0FkanVzdFlTY2FsZURvbWFpbiYmdGhpcy5fdXBkYXRlWUV4dGVudHNBbmRBdXRvZG9tYWluKCl9LGUucHJvdG90eXBlLl9hZGp1c3RYRG9tYWluT25DaGFuZ2VGcm9tWT1mdW5jdGlvbigpe3RoaXMuX3Byb2plY3RvcnNSZWFkeSgpJiZ0aGlzLl9hdXRvQWRqdXN0WFNjYWxlRG9tYWluJiZ0aGlzLl91cGRhdGVYRXh0ZW50c0FuZEF1dG9kb21haW4oKX0sZS5wcm90b3R5cGUuX3Byb2plY3RvcnNSZWFkeT1mdW5jdGlvbigpe3ZhciB0PXRoaXMueCgpLGU9dGhpcy55KCk7cmV0dXJuIG51bGwhPXQmJm51bGwhPXQuYWNjZXNzb3ImJm51bGwhPWUmJm51bGwhPWUuYWNjZXNzb3J9LGUucHJvdG90eXBlLl9waXhlbFBvaW50PWZ1bmN0aW9uKHQsZSxuKXt2YXIgaT1iRXQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy54KCkpLHI9YkV0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueSgpKTtyZXR1cm57eDppKHQsZSxuKSx5OnIodCxlLG4pfX0sZS5wcm90b3R5cGUuX2dldERhdGFUb0RyYXc9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLG49dC5wcm90b3R5cGUuX2dldERhdGFUb0RyYXcuY2FsbCh0aGlzKSxpPXRoaXMuYXR0cigiZGVmaW5lZCIpO3JldHVybiB0aGlzLmRhdGFzZXRzKCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7bi5zZXQodCxuLmdldCh0KS5maWx0ZXIoKGZ1bmN0aW9uKG4scil7cmV0dXJuKGZ1bmN0aW9uKHQsbixyKXt2YXIgbz1iRXQuUGxvdC5fc2NhbGVkQWNjZXNzb3IoZS54KCkpKHQsbixyKSxhPWJFdC5QbG90Ll9zY2FsZWRBY2Nlc3NvcihlLnkoKSkodCxuLHIpO3JldHVybighaXx8ITEhPT1pLmFjY2Vzc29yKHQsbixyKSkmJnlFdC5NYXRoLmlzVmFsaWROdW1iZXIobykmJnlFdC5NYXRoLmlzVmFsaWROdW1iZXIoYSl9KShuLHIsdCl9KSkpfSkpLG59LGUuX1hfS0VZPSJ4IixlLl9ZX0tFWT0ieSIsZX0pKGJFdC5QbG90KTttRXQuWFlQbG90PXhFdCwKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KGZFdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHdFdD1CTyxTRXQ9d3B0LE1FdD1mZ3QsRUV0PVBNdCxURXQ9R1N0LENFdD1XTXQsQUV0PVh2dCxrRXQ9TGJ0LExFdD1EX3QsUEV0PWRFdCxORXQ9c1N0LElFdD1tRXQsUkV0PXtsaW5lYXI6U0V0LmN1cnZlTGluZWFyLGxpbmVhckNsb3NlZDpTRXQuY3VydmVMaW5lYXJDbG9zZWQsc3RlcDpTRXQuY3VydmVTdGVwLHN0ZXBCZWZvcmU6U0V0LmN1cnZlU3RlcEJlZm9yZSxzdGVwQWZ0ZXI6U0V0LmN1cnZlU3RlcEFmdGVyLGJhc2lzOlNFdC5jdXJ2ZUJhc2lzLGJhc2lzT3BlbjpTRXQuY3VydmVCYXNpc09wZW4sYmFzaXNDbG9zZWQ6U0V0LmN1cnZlQmFzaXNDbG9zZWQsYnVuZGxlOlNFdC5jdXJ2ZUJ1bmRsZSxjYXJkaW5hbDpTRXQuY3VydmVDYXJkaW5hbCxjYXJkaW5hbE9wZW46U0V0LmN1cnZlQ2FyZGluYWxPcGVuLGNhcmRpbmFsQ2xvc2VkOlNFdC5jdXJ2ZUNhcmRpbmFsQ2xvc2VkLG1vbm90b25lOlNFdC5jdXJ2ZU1vbm90b25lWH07ZkV0LkN1cnZlTmFtZT1iZ3QubWFrZUVudW0oWyJsaW5lYXIiLCJsaW5lYXJDbG9zZWQiLCJzdGVwIiwic3RlcEJlZm9yZSIsInN0ZXBBZnRlciIsImJhc2lzIiwiYmFzaXNPcGVuIiwiYmFzaXNDbG9zZWQiLCJidW5kbGUiLCJjYXJkaW5hbCIsImNhcmRpbmFsT3BlbiIsImNhcmRpbmFsQ2xvc2VkIiwibW9ub3RvbmUiXSk7dmFyIE9FdD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3ZhciBlPXQuY2FsbCh0aGlzKXx8dGhpcztlLl9jdXJ2ZT0ibGluZWFyIixlLl9hdXRvcmFuZ2VTbW9vdGg9ITEsZS5fY3JvcHBlZFJlbmRlcmluZ0VuYWJsZWQ9ITAsZS5fY29sbGFwc2VEZW5zZVZlcnRpY2FsTGluZXNFbmFibGVkPSExLGUuX2Rvd25zYW1wbGluZ0VuYWJsZWQ9ITEsZS5hZGRDbGFzcygibGluZS1wbG90Iik7dmFyIG49bmV3IE1FdC5FYXNpbmc7cmV0dXJuIG4uc3RlcER1cmF0aW9uKE5FdC5QbG90Ll9BTklNQVRJT05fTUFYX0RVUkFUSU9OKSxuLmVhc2luZ01vZGUoImV4cEluT3V0Iiksbi5tYXhUb3RhbER1cmF0aW9uKE5FdC5QbG90Ll9BTklNQVRJT05fTUFYX0RVUkFUSU9OKSxlLmFuaW1hdG9yKFBFdC5BbmltYXRvci5NQUlOLG4pLGUuYXR0cigic3Ryb2tlIiwobmV3IEFFdC5Db2xvcikucmFuZ2UoKVswXSksZS5hdHRyKCJzdHJva2Utd2lkdGgiLCIycHgiKSxlfXJldHVybiB3RXQuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUueD1mdW5jdGlvbihlLG4saSl7cmV0dXJuIG51bGw9PWU/dC5wcm90b3R5cGUueC5jYWxsKHRoaXMpOih0LnByb3RvdHlwZS54LmNhbGwodGhpcyxlLG4saSksdGhpcy5fc2V0U2NhbGVTbmFwcGluZygpLHRoaXMpfSxlLnByb3RvdHlwZS55PWZ1bmN0aW9uKGUsbixpKXtyZXR1cm4gbnVsbD09ZT90LnByb3RvdHlwZS55LmNhbGwodGhpcyk6KHQucHJvdG90eXBlLnkuY2FsbCh0aGlzLGUsbixpKSx0aGlzLl9zZXRTY2FsZVNuYXBwaW5nKCksdGhpcyl9LGUucHJvdG90eXBlLmF1dG9yYW5nZU1vZGU9ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWU/dC5wcm90b3R5cGUuYXV0b3JhbmdlTW9kZS5jYWxsKHRoaXMpOih0LnByb3RvdHlwZS5hdXRvcmFuZ2VNb2RlLmNhbGwodGhpcyxlKSx0aGlzLl9zZXRTY2FsZVNuYXBwaW5nKCksdGhpcyl9LGUucHJvdG90eXBlLmF1dG9yYW5nZVNtb290aD1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9hdXRvcmFuZ2VTbW9vdGg6KHRoaXMuX2F1dG9yYW5nZVNtb290aD10LHRoaXMuX3NldFNjYWxlU25hcHBpbmcoKSx0aGlzKX0sZS5wcm90b3R5cGUuX3NldFNjYWxlU25hcHBpbmc9ZnVuY3Rpb24oKXsieCI9PT10aGlzLmF1dG9yYW5nZU1vZGUoKSYmdGhpcy54KCkmJnRoaXMueCgpLnNjYWxlJiZ0aGlzLngoKS5zY2FsZSBpbnN0YW5jZW9mIGtFdC5RdWFudGl0YXRpdmVTY2FsZSYmdGhpcy54KCkuc2NhbGUuc25hcHBpbmdEb21haW5FbmFibGVkKCF0aGlzLmF1dG9yYW5nZVNtb290aCgpKSwieSI9PT10aGlzLmF1dG9yYW5nZU1vZGUoKSYmdGhpcy55KCkmJnRoaXMueSgpLnNjYWxlJiZ0aGlzLnkoKS5zY2FsZSBpbnN0YW5jZW9mIGtFdC5RdWFudGl0YXRpdmVTY2FsZSYmdGhpcy55KCkuc2NhbGUuc25hcHBpbmdEb21haW5FbmFibGVkKCF0aGlzLmF1dG9yYW5nZVNtb290aCgpKX0sZS5wcm90b3R5cGUuY3VydmU9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fY3VydmU6KHRoaXMuX2N1cnZlPXQsdGhpcy5yZW5kZXIoKSx0aGlzKX0sZS5wcm90b3R5cGUuZG93bnNhbXBsaW5nRW5hYmxlZD1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9kb3duc2FtcGxpbmdFbmFibGVkOih0aGlzLl9kb3duc2FtcGxpbmdFbmFibGVkPXQsdGhpcyl9LGUucHJvdG90eXBlLmNyb3BwZWRSZW5kZXJpbmdFbmFibGVkPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX2Nyb3BwZWRSZW5kZXJpbmdFbmFibGVkOih0aGlzLl9jcm9wcGVkUmVuZGVyaW5nRW5hYmxlZD10LHRoaXMucmVuZGVyKCksdGhpcyl9LGUucHJvdG90eXBlLmNvbGxhcHNlRGVuc2VMaW5lc0VuYWJsZWQ9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fY29sbGFwc2VEZW5zZVZlcnRpY2FsTGluZXNFbmFibGVkOih0aGlzLl9jb2xsYXBzZURlbnNlVmVydGljYWxMaW5lc0VuYWJsZWQ9dCx0aGlzLnJlbmRlcigpLHRoaXMpfSxlLnByb3RvdHlwZS5fY3JlYXRlRHJhd2VyPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7cmV0dXJuIG5ldyBURXQuUHJveHlEcmF3ZXIoKGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBDRXQuTGluZVNWR0RyYXdlcn0pLChmdW5jdGlvbihuKXtyZXR1cm4gbmV3IEVFdC5DYW52YXNEcmF3ZXIobixDRXQubWFrZUxpbmVDYW52YXNEcmF3U3RlcCgoZnVuY3Rpb24oKXtyZXR1cm4gZS5fZDNMaW5lRmFjdG9yeSh0KX0pKSl9KSl9LGUucHJvdG90eXBlLmdldEV4dGVudHNGb3JQcm9wZXJ0eT1mdW5jdGlvbihlKXt2YXIgbj10LnByb3RvdHlwZS5nZXRFeHRlbnRzRm9yUHJvcGVydHkuY2FsbCh0aGlzLGUpO2lmKCF0aGlzLl9hdXRvcmFuZ2VTbW9vdGgpcmV0dXJuIG47aWYodGhpcy5hdXRvcmFuZ2VNb2RlKCkhPT1lKXJldHVybiBuO2lmKCJ4IiE9PXRoaXMuYXV0b3JhbmdlTW9kZSgpJiYieSIhPT10aGlzLmF1dG9yYW5nZU1vZGUoKSlyZXR1cm4gbjt2YXIgaSxyPXRoaXMuX2dldEVkZ2VJbnRlcnNlY3Rpb25Qb2ludHMoKTtyZXR1cm4gaT0ieSI9PT10aGlzLmF1dG9yYW5nZU1vZGUoKT9yLmxlZnQuY29uY2F0KHIucmlnaHQpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQueX0pKTpyLnRvcC5jb25jYXQoci5ib3R0b20pLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQueH0pKSxuLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIFNFdC5leHRlbnQoU0V0Lm1lcmdlKFt0LGldKSl9KSl9LGUucHJvdG90eXBlLl9nZXRFZGdlSW50ZXJzZWN0aW9uUG9pbnRzPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztpZighKHRoaXMueSgpLnNjYWxlIGluc3RhbmNlb2Yga0V0LlF1YW50aXRhdGl2ZVNjYWxlJiZ0aGlzLngoKS5zY2FsZSBpbnN0YW5jZW9mIGtFdC5RdWFudGl0YXRpdmVTY2FsZSkpcmV0dXJue2xlZnQ6W10scmlnaHQ6W10sdG9wOltdLGJvdHRvbTpbXX07dmFyIGU9dGhpcy55KCkuc2NhbGUsbj10aGlzLngoKS5zY2FsZSxpPXtsZWZ0OltdLHJpZ2h0OltdLHRvcDpbXSxib3R0b206W119LHI9bi5zY2FsZShuLmRvbWFpbigpWzBdKSxvPW4uc2NhbGUobi5kb21haW4oKVsxXSksYT1lLnNjYWxlKGUuZG9tYWluKClbMF0pLHM9ZS5zY2FsZShlLmRvbWFpbigpWzFdKTtyZXR1cm4gdGhpcy5kYXRhc2V0cygpLmZvckVhY2goKGZ1bmN0aW9uKGwpe2Zvcih2YXIgYyx1LGgsZCxwPWwuZGF0YSgpLGY9MTtmPHAubGVuZ3RoO2YrKyljPWh8fG4uc2NhbGUodC54KCkuYWNjZXNzb3IocFtmLTFdLGYtMSxsKSksdT1kfHxlLnNjYWxlKHQueSgpLmFjY2Vzc29yKHBbZi0xXSxmLTEsbCkpLGg9bi5zY2FsZSh0LngoKS5hY2Nlc3NvcihwW2ZdLGYsbCkpLGQ9ZS5zY2FsZSh0LnkoKS5hY2Nlc3NvcihwW2ZdLGYsbCkpLGM8cj09cjw9aCYmaS5sZWZ0LnB1c2goe3g6cix5OmUuaW52ZXJ0KHUrKHItYykqKGQtdSkvKGgtYykpfSksYzxvPT1vPD1oJiZpLnJpZ2h0LnB1c2goe3g6byx5OmUuaW52ZXJ0KHUrKG8tYykqKGQtdSkvKGgtYykpfSksdTxzPT1zPD1kJiZpLnRvcC5wdXNoKHt4Om4uaW52ZXJ0KGMrKHMtdSkqKGgtYykvKGQtdSkpLHk6c30pLHU8YT09YTw9ZCYmaS5ib3R0b20ucHVzaCh7eDpuLmludmVydChjKyhhLXUpKihoLWMpLyhkLXUpKSx5OmF9KX0pKSxpfSxlLnByb3RvdHlwZS5fZ2V0UmVzZXRZRnVuY3Rpb249ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnkoKS5zY2FsZS5kb21haW4oKSxlPU1hdGgubWF4KHRbMF0sdFsxXSksbj1NYXRoLm1pbih0WzBdLHRbMV0pLGk9ZTwwJiZlfHxuPjAmJm58fDAscj10aGlzLnkoKS5zY2FsZS5zY2FsZShpKTtyZXR1cm4gZnVuY3Rpb24odCxlLG4pe3JldHVybiByfX0sZS5wcm90b3R5cGUuX2dlbmVyYXRlRHJhd1N0ZXBzPWZ1bmN0aW9uKCl7dmFyIHQ9W107aWYodGhpcy5fYW5pbWF0ZU9uTmV4dFJlbmRlcigpKXt2YXIgZT10aGlzLl9nZXRBdHRyVG9Qcm9qZWN0b3IoKTtlLmQ9dGhpcy5fY29uc3RydWN0TGluZVByb2plY3RvcihORXQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy54KCkpLHRoaXMuX2dldFJlc2V0WUZ1bmN0aW9uKCkpLHQucHVzaCh7YXR0clRvUHJvamVjdG9yOmUsYW5pbWF0b3I6dGhpcy5fZ2V0QW5pbWF0b3IoUEV0LkFuaW1hdG9yLlJFU0VUKX0pfXJldHVybiB0LnB1c2goe2F0dHJUb1Byb2plY3Rvcjp0aGlzLl9nZXRBdHRyVG9Qcm9qZWN0b3IoKSxhbmltYXRvcjp0aGlzLl9nZXRBbmltYXRvcihQRXQuQW5pbWF0b3IuTUFJTil9KSx0fSxlLnByb3RvdHlwZS5fZ2VuZXJhdGVBdHRyVG9Qcm9qZWN0b3I9ZnVuY3Rpb24oKXt2YXIgZT10LnByb3RvdHlwZS5fZ2VuZXJhdGVBdHRyVG9Qcm9qZWN0b3IuY2FsbCh0aGlzKTtyZXR1cm4gT2JqZWN0LmtleXMoZSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7aWYoImQiIT09dCl7dmFyIG49ZVt0XTtlW3RdPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdC5sZW5ndGg+MD9uKHRbMF0sZSxpKTpudWxsfX19KSksZX0sZS5wcm90b3R5cGUuZW50aXRpZXNBdD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmVudGl0eU5lYXJlc3RCeVhUaGVuWSh0KTtyZXR1cm4gbnVsbCE9ZT9bZV06W119LGUucHJvdG90eXBlLmVudGl0eU5lYXJlc3RCeVhUaGVuWT1mdW5jdGlvbih0KXtmb3IodmFyIGUsbj0xLzAsaT0xLzAscj10aGlzLmJvdW5kcygpLG89dGhpcy5lbnRpdGllcygpLGE9by5sZW5ndGgscz0wO3M8YTtzKyspe3ZhciBsPW9bc107aWYoTEV0Lk1hdGgud2l0aGluKGwucG9zaXRpb24scikpe3ZhciBjPU1hdGguYWJzKHQueC1sLnBvc2l0aW9uLngpLHU9TWF0aC5hYnModC55LWwucG9zaXRpb24ueSk7KGM8bnx8Yz09PW4mJnU8aSkmJihlPWwsbj1jLGk9dSl9fXJldHVybiBlfSxlLnByb3RvdHlwZS5fcHJvcGVydHlQcm9qZWN0b3JzPWZ1bmN0aW9uKCl7dmFyIGU9dC5wcm90b3R5cGUuX3Byb3BlcnR5UHJvamVjdG9ycy5jYWxsKHRoaXMpO3JldHVybiBlLmQ9dGhpcy5fY29uc3RydWN0TGluZVByb2plY3RvcihORXQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy54KCkpLE5FdC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnkoKSkpLGV9LGUucHJvdG90eXBlLl9jb25zdHJ1Y3RMaW5lUHJvamVjdG9yPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcztyZXR1cm4gZnVuY3Rpb24oaSxyLG8pe3JldHVybiBuLl9kM0xpbmVGYWN0b3J5KG8sdCxlKShpKX19LGUucHJvdG90eXBlLl9kM0xpbmVGYWN0b3J5PWZ1bmN0aW9uKHQsZSxuKXt2b2lkIDA9PT1lJiYoZT1ORXQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy54KCkpKSx2b2lkIDA9PT1uJiYobj1ORXQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy55KCkpKTtyZXR1cm4gU0V0LmxpbmUoKS54KChmdW5jdGlvbihuLGkpe3JldHVybiBlKG4saSx0KX0pKS55KChmdW5jdGlvbihlLGkpe3JldHVybiBuKGUsaSx0KX0pKS5jdXJ2ZSh0aGlzLl9nZXRDdXJ2ZUZhY3RvcnkoKSkuZGVmaW5lZCgoZnVuY3Rpb24oaSxyKXtyZXR1cm4oZnVuY3Rpb24odCxpLHIpe3ZhciBvPWUodCxpLHIpLGE9bih0LGkscik7cmV0dXJuIExFdC5NYXRoLmlzVmFsaWROdW1iZXIobykmJkxFdC5NYXRoLmlzVmFsaWROdW1iZXIoYSl9KShpLHIsdCl9KSl9LGUucHJvdG90eXBlLl9nZXRDdXJ2ZUZhY3Rvcnk9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmN1cnZlKCk7aWYoInN0cmluZyI9PXR5cGVvZiB0KXt2YXIgZT1SRXRbdF07cmV0dXJuIG51bGw9PWU/UkV0LmxpbmVhcjplfXJldHVybiB0fSxlLnByb3RvdHlwZS5fZ2V0RGF0YVRvRHJhdz1mdW5jdGlvbigpe3ZhciB0PXRoaXMsZT1uZXcgTEV0Lk1hcDtyZXR1cm4gdGhpcy5kYXRhc2V0cygpLmZvckVhY2goKGZ1bmN0aW9uKG4pe3ZhciBpPW4uZGF0YSgpO2lmKHQuX2Nyb3BwZWRSZW5kZXJpbmdFbmFibGVkfHx0Ll9kb3duc2FtcGxpbmdFbmFibGVkKXtmb3IodmFyIHI9W10sbz1pLmxlbmd0aCxhPTA7YTxvO2ErKylyW2FdPWE7dC5fY3JvcHBlZFJlbmRlcmluZ0VuYWJsZWQmJihyPXQuX2ZpbHRlckNyb3BwZWRSZW5kZXJpbmcobixyKSksdC5fZG93bnNhbXBsaW5nRW5hYmxlZCYmKHI9dC5fZmlsdGVyRG93bnNhbXBsaW5nKG4scikpLHQuX2NvbGxhcHNlRGVuc2VWZXJ0aWNhbExpbmVzRW5hYmxlZCYmKHI9dC5fZmlsdGVyRGVuc2VMaW5lcyhuLHIpKTt2YXIgcz1bXSxsPXIubGVuZ3RoO2ZvcihhPTA7YTxsO2ErKyl7c1thXT1pW3JbYV1dfWUuc2V0KG4sW3NdKX1lbHNlIGUuc2V0KG4sW2ldKX0pKSxlfSxlLnByb3RvdHlwZS5fZmlsdGVyQ3JvcHBlZFJlbmRlcmluZz1mdW5jdGlvbih0LGUpe2Zvcih2YXIgbj10aGlzLGk9TkV0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueCgpKSxyPU5FdC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnkoKSksbz10LmRhdGEoKSxhPVtdLHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gTEV0Lk1hdGguaW5SYW5nZSh0LDAsbi53aWR0aCgpKSYmTEV0Lk1hdGguaW5SYW5nZShlLDAsbi5oZWlnaHQoKSl9LGw9MDtsPGUubGVuZ3RoO2wrKyl7dmFyIGM9cyhpKG9bZVtsXV0sZVtsXSx0KSxyKG9bZVtsXV0sZVtsXSx0KSk7aWYoIWMmJm51bGwhPWVbbC0xXSYmbnVsbCE9b1tlW2wtMV1dKXt2YXIgdT1pKG9bZVtsLTFdXSxlW2wtMV0sdCksaD1yKG9bZVtsLTFdXSxlW2wtMV0sdCk7Yz1jfHxzKHUsaCl9aWYoIWMmJm51bGwhPWVbbCsxXSYmbnVsbCE9b1tlW2wrMV1dKXt2YXIgZD1pKG9bZVtsKzFdXSxlW2wrMV0sdCkscD1yKG9bZVtsKzFdXSxlW2wrMV0sdCk7Yz1jfHxzKGQscCl9YyYmYS5wdXNoKGVbbF0pfXJldHVybiBhfSxlLnByb3RvdHlwZS5fZmlsdGVyRG93bnNhbXBsaW5nPWZ1bmN0aW9uKHQsZSl7aWYoMD09PWUubGVuZ3RoKXJldHVybltdO2Zvcih2YXIgbj10LmRhdGEoKSxpPU5FdC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLngoKSkscj1ORXQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy55KCkpLG89W2VbMF1dLGE9ZnVuY3Rpb24obyxhKXt2YXIgcz1pKG5bZVtvXV0sZVtvXSx0KSxsPXIobltlW29dXSxlW29dLHQpLGM9aShuW2VbbysxXV0sZVtvKzFdLHQpLHU9cihuW2VbbysxXV0sZVtvKzFdLHQpO2lmKGE9PT0xLzApcmV0dXJuIE1hdGguZmxvb3Iocyk9PT1NYXRoLmZsb29yKGMpO3ZhciBoPWwrKGMtcykqYTtyZXR1cm4gTWF0aC5mbG9vcih1KT09PU1hdGguZmxvb3IoaCl9LHM9MDtzPGUubGVuZ3RoLTE7KXtmb3IodmFyIGw9ZVtzXSxjPWkobltlW3NdXSxlW3NdLHQpLHU9cihuW2Vbc11dLGVbc10sdCksaD1pKG5bZVtzKzFdXSxlW3MrMV0sdCksZD1yKG5bZVtzKzFdXSxlW3MrMV0sdCkscD1NYXRoLmZsb29yKGMpPT09TWF0aC5mbG9vcihoKT8xLzA6KGQtdSkvKGgtYyksZj1lW3NdLG09cD09PTEvMD91OmMsZz1mLF89bSx5PSEwO3M8ZS5sZW5ndGgtMSYmKHl8fGEocyxwKSk7KXtzKysseT0hMTt2YXIgdj1wPT09MS8wP3IobltlW3NdXSxlW3NdLHQpOmkobltlW3NdXSxlW3NdLHQpO3Y+XyYmKF89dixnPWVbc10pLHY8bSYmKG09dixmPWVbc10pfXZhciBiPWVbc107ZiE9PWwmJm8ucHVzaChmKSxnIT09ZiYmZyE9PWwmJm8ucHVzaChnKSxiIT09bCYmYiE9PWYmJmIhPT1nJiZvLnB1c2goYil9cmV0dXJuIG99LGUucHJvdG90eXBlLl9maWx0ZXJEZW5zZUxpbmVzPWZ1bmN0aW9uKHQsZSl7aWYoMD09PWUubGVuZ3RoKXJldHVybltdO3ZhciBuPXQuZGF0YSgpLGk9TkV0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueCgpKSxyPU5FdC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnkoKSk7cmV0dXJuIHRoaXMuX2J1Y2tldEJ5WCh0LGUsKGZ1bmN0aW9uKGUpe3JldHVybiBpKG5bZV0sZSx0KX0pLChmdW5jdGlvbihlKXtyZXR1cm4gcihuW2VdLGUsdCl9KSl9LGUucHJvdG90eXBlLl9idWNrZXRCeVg9ZnVuY3Rpb24odCxlLG4saSl7Zm9yKHZhciByPVtdLG89dC5kYXRhKCksYT1udWxsLHM9ZS5sZW5ndGgsbD0wO2w8PXM7KytsKXt2YXIgYz1lW2xdO2lmKG51bGwhPW9bY10pe3ZhciB1PU1hdGguZmxvb3IobihjKSksaD1pKGMpO251bGw9PWE/YT1uZXcgTEV0LkJ1Y2tldChjLHUsaCk6YS5pc0luQnVja2V0KHUpP2EuYWRkVG9CdWNrZXQoaCxjKTooci5wdXNoLmFwcGx5KHIsYS5nZXRVbmlxdWVJbmRpY2VzKCkpLGE9bmV3IExFdC5CdWNrZXQoYyx1LGgpKX19cmV0dXJuIG51bGwhPWEmJnIucHVzaC5hcHBseShyLGEuZ2V0VW5pcXVlSW5kaWNlcygpKSxyfSxlfSkoSUV0LlhZUGxvdCk7ZkV0LkxpbmU9T0V0LAovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkocEV0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgekV0PUJPLERFdD13cHQsQkV0PVh2dCxIRXQ9RF90LEZFdD1QTXQsVkV0PUJNdCxVRXQ9R1N0LGpFdD1XTXQsR0V0PWRFdCxXRXQ9c1N0LHFFdD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3ZhciBlPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gZS5hZGRDbGFzcygiYXJlYS1wbG90IiksZS55MCgwKSxlLmF0dHIoImZpbGwtb3BhY2l0eSIsLjI1KSxlLmF0dHIoImZpbGwiLChuZXcgQkV0LkNvbG9yKS5yYW5nZSgpWzBdKSxlLl9saW5lRHJhd2Vycz1uZXcgSEV0Lk1hcCxlfXJldHVybiB6RXQuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUueT1mdW5jdGlvbihuLGkpe2lmKG51bGw9PW4pcmV0dXJuIHQucHJvdG90eXBlLnkuY2FsbCh0aGlzKTtpZihudWxsPT1pP3QucHJvdG90eXBlLnkuY2FsbCh0aGlzLG4pOnQucHJvdG90eXBlLnkuY2FsbCh0aGlzLG4saSksbnVsbCE9aSl7dmFyIHI9dGhpcy55MCgpLmFjY2Vzc29yO251bGwhPXImJnRoaXMuX2JpbmRQcm9wZXJ0eShlLl9ZMF9LRVkscixpKSx0aGlzLl91cGRhdGVZU2NhbGUoKX1yZXR1cm4gdGhpc30sZS5wcm90b3R5cGUueTA9ZnVuY3Rpb24odCl7aWYobnVsbD09dClyZXR1cm4gdGhpcy5fcHJvcGVydHlCaW5kaW5ncy5nZXQoZS5fWTBfS0VZKTt2YXIgbj10aGlzLnkoKTtyZXR1cm4gdGhpcy5fYmluZFByb3BlcnR5KGUuX1kwX0tFWSx0LG4mJm4uc2NhbGUpLHRoaXMuX3VwZGF0ZVlTY2FsZSgpLHRoaXMucmVuZGVyKCksdGhpc30sZS5wcm90b3R5cGUuX29uRGF0YXNldFVwZGF0ZT1mdW5jdGlvbigpe3QucHJvdG90eXBlLl9vbkRhdGFzZXRVcGRhdGUuY2FsbCh0aGlzKSx0aGlzLl91cGRhdGVZU2NhbGUoKX0sZS5wcm90b3R5cGUuX2FkZERhdGFzZXQ9ZnVuY3Rpb24oZSl7dmFyIG49dGhpcztyZXR1cm4gdGhpcy5fbGluZURyYXdlcnMuc2V0KGUsbmV3IEZFdC5Qcm94eURyYXdlcigoZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGpFdC5MaW5lU1ZHRHJhd2VyfSksKGZ1bmN0aW9uKHQpe3JldHVybiBuZXcgRkV0LkNhbnZhc0RyYXdlcih0LGpFdC5tYWtlTGluZUNhbnZhc0RyYXdTdGVwKChmdW5jdGlvbigpe3ZhciB0PVdFdC5QbG90Ll9zY2FsZWRBY2Nlc3NvcihuLngoKSksaT1XRXQuUGxvdC5fc2NhbGVkQWNjZXNzb3Iobi55KCkpO3JldHVybiBuLl9kM0xpbmVGYWN0b3J5KGUsdCxpKX0pKSl9KSkpLHQucHJvdG90eXBlLl9hZGREYXRhc2V0LmNhbGwodGhpcyxlKSx0aGlzfSxlLnByb3RvdHlwZS5fY3JlYXRlTm9kZXNGb3JEYXRhc2V0PWZ1bmN0aW9uKGUpe3QucHJvdG90eXBlLl9jcmVhdGVOb2Rlc0ZvckRhdGFzZXQuY2FsbCh0aGlzLGUpO3ZhciBuPXRoaXMuX2xpbmVEcmF3ZXJzLmdldChlKTtyZXR1cm4ic3ZnIj09PXRoaXMucmVuZGVyZXIoKT9uLnVzZVNWRyh0aGlzLl9yZW5kZXJBcmVhKTpuLnVzZUNhbnZhcyh0aGlzLl9jYW52YXMpLG59LGUucHJvdG90eXBlLl9yZW1vdmVEYXRhc2V0Tm9kZXM9ZnVuY3Rpb24oZSl7dC5wcm90b3R5cGUuX3JlbW92ZURhdGFzZXROb2Rlcy5jYWxsKHRoaXMsZSksdGhpcy5fbGluZURyYXdlcnMuZ2V0KGUpLnJlbW92ZSgpfSxlLnByb3RvdHlwZS5fYWRkaXRpb25hbFBhaW50PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXRoaXMuX2dlbmVyYXRlTGluZURyYXdTdGVwcygpLG49dGhpcy5fZ2V0RGF0YVRvRHJhdygpO3RoaXMuZGF0YXNldHMoKS5mb3JFYWNoKChmdW5jdGlvbihpKXt2YXIgcj1XRXQuUGxvdC5hcHBseURyYXdTdGVwcyhlLGkpO3QuX2xpbmVEcmF3ZXJzLmdldChpKS5kcmF3KG4uZ2V0KGkpLHIpfSkpfSxlLnByb3RvdHlwZS5fZ2VuZXJhdGVMaW5lRHJhd1N0ZXBzPWZ1bmN0aW9uKCl7dmFyIHQ9W107aWYodGhpcy5fYW5pbWF0ZU9uTmV4dFJlbmRlcigpKXt2YXIgZT10aGlzLl9nZW5lcmF0ZUxpbmVBdHRyVG9Qcm9qZWN0b3IoKTtlLmQ9dGhpcy5fY29uc3RydWN0TGluZVByb2plY3RvcihXRXQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy54KCkpLHRoaXMuX2dldFJlc2V0WUZ1bmN0aW9uKCkpLHQucHVzaCh7YXR0clRvUHJvamVjdG9yOmUsYW5pbWF0b3I6dGhpcy5fZ2V0QW5pbWF0b3IoR0V0LkFuaW1hdG9yLlJFU0VUKX0pfXJldHVybiB0LnB1c2goe2F0dHJUb1Byb2plY3Rvcjp0aGlzLl9nZW5lcmF0ZUxpbmVBdHRyVG9Qcm9qZWN0b3IoKSxhbmltYXRvcjp0aGlzLl9nZXRBbmltYXRvcihHRXQuQW5pbWF0b3IuTUFJTil9KSx0fSxlLnByb3RvdHlwZS5fZ2VuZXJhdGVMaW5lQXR0clRvUHJvamVjdG9yPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fZ2V0QXR0clRvUHJvamVjdG9yKCk7cmV0dXJuIHQuZD10aGlzLl9jb25zdHJ1Y3RMaW5lUHJvamVjdG9yKFdFdC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLngoKSksV0V0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueSgpKSksdH0sZS5wcm90b3R5cGUuX2NyZWF0ZURyYXdlcj1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3JldHVybiBuZXcgVUV0LlByb3h5RHJhd2VyKChmdW5jdGlvbigpe3JldHVybiBuZXcgVkV0LkFyZWFTVkdEcmF3ZXJ9KSwoZnVuY3Rpb24obil7cmV0dXJuIG5ldyBGRXQuQ2FudmFzRHJhd2VyKG4sVkV0Lm1ha2VBcmVhQ2FudmFzRHJhd1N0ZXAoKGZ1bmN0aW9uKCl7dmFyIG49ZS5fY29vcmRpbmF0ZVByb2plY3RvcnMoKSxpPW5bMF0scj1uWzFdLG89blsyXSxhPWUuX2NyZWF0ZURlZmluZWRQcm9qZWN0b3IoaSxyKTtyZXR1cm4gZS5fY3JlYXRlQXJlYUdlbmVyYXRvcihpLHIsbyxhLHQpfSksKGZ1bmN0aW9uKCl7dmFyIG49ZS5fY29vcmRpbmF0ZVByb2plY3RvcnMoKSxpPW5bMF0scj1uWzFdLG89ZS5fY3JlYXRlRGVmaW5lZFByb2plY3RvcihpLHIpO3JldHVybiBlLl9jcmVhdGVUb3BMaW5lR2VuZXJhdG9yKGkscixvLHQpfSkpKX0pKX0sZS5wcm90b3R5cGUuX2dlbmVyYXRlRHJhd1N0ZXBzPWZ1bmN0aW9uKCl7dmFyIHQ9W107aWYodGhpcy5fYW5pbWF0ZU9uTmV4dFJlbmRlcigpKXt2YXIgZT10aGlzLl9nZXRBdHRyVG9Qcm9qZWN0b3IoKTtlLmQ9dGhpcy5fY29uc3RydWN0QXJlYVByb2plY3RvcihXRXQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy54KCkpLHRoaXMuX2dldFJlc2V0WUZ1bmN0aW9uKCksV0V0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueTAoKSkpLHQucHVzaCh7YXR0clRvUHJvamVjdG9yOmUsYW5pbWF0b3I6dGhpcy5fZ2V0QW5pbWF0b3IoR0V0LkFuaW1hdG9yLlJFU0VUKX0pfXJldHVybiB0LnB1c2goe2F0dHJUb1Byb2plY3Rvcjp0aGlzLl9nZXRBdHRyVG9Qcm9qZWN0b3IoKSxhbmltYXRvcjp0aGlzLl9nZXRBbmltYXRvcihHRXQuQW5pbWF0b3IuTUFJTil9KSx0fSxlLnByb3RvdHlwZS5fdXBkYXRlWVNjYWxlPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5nZXRFeHRlbnRzRm9yUHJvcGVydHkoInkwIiksZT1IRXQuQXJyYXkuZmxhdHRlbih0KSxuPUhFdC5BcnJheS51bmlxKGUpLGk9MT09PW4ubGVuZ3RoP25bMF06bnVsbCxyPXRoaXMueSgpLG89ciYmci5zY2FsZTtudWxsIT1vJiYobnVsbCE9dGhpcy5fY29uc3RhbnRCYXNlbGluZVZhbHVlUHJvdmlkZXImJihvLnJlbW92ZVBhZGRpbmdFeGNlcHRpb25zUHJvdmlkZXIodGhpcy5fY29uc3RhbnRCYXNlbGluZVZhbHVlUHJvdmlkZXIpLHRoaXMuX2NvbnN0YW50QmFzZWxpbmVWYWx1ZVByb3ZpZGVyPW51bGwpLG51bGwhPWkmJih0aGlzLl9jb25zdGFudEJhc2VsaW5lVmFsdWVQcm92aWRlcj1mdW5jdGlvbigpe3JldHVybltpXX0sby5hZGRQYWRkaW5nRXhjZXB0aW9uc1Byb3ZpZGVyKHRoaXMuX2NvbnN0YW50QmFzZWxpbmVWYWx1ZVByb3ZpZGVyKSkpfSxlLnByb3RvdHlwZS5fZ2V0UmVzZXRZRnVuY3Rpb249ZnVuY3Rpb24oKXtyZXR1cm4gV0V0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueTAoKSl9LGUucHJvdG90eXBlLl9jb29yZGluYXRlUHJvamVjdG9ycz1mdW5jdGlvbigpe3JldHVybltXRXQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy54KCkpLFdFdC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnkoKSksV0V0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueTAoKSldfSxlLnByb3RvdHlwZS5fcHJvcGVydHlQcm9qZWN0b3JzPWZ1bmN0aW9uKCl7dmFyIGU9dC5wcm90b3R5cGUuX3Byb3BlcnR5UHJvamVjdG9ycy5jYWxsKHRoaXMpLG49dGhpcy5fY29vcmRpbmF0ZVByb2plY3RvcnMoKTtyZXR1cm4gZS5kPXRoaXMuX2NvbnN0cnVjdEFyZWFQcm9qZWN0b3IoblswXSxuWzFdLG5bMl0pLGV9LGUucHJvdG90eXBlLnNlbGVjdGlvbnM9ZnVuY3Rpb24oZSl7dmFyIG49dGhpcztpZih2b2lkIDA9PT1lJiYoZT10aGlzLmRhdGFzZXRzKCkpLCJjYW52YXMiPT09dGhpcy5yZW5kZXJlcigpKXJldHVybiBERXQuc2VsZWN0QWxsKCk7dmFyIGk9dC5wcm90b3R5cGUuc2VsZWN0aW9ucy5jYWxsKHRoaXMsZSkubm9kZXMoKTtyZXR1cm4gZS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBuLl9saW5lRHJhd2Vycy5nZXQodCl9KSkuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9dH0pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gaS5wdXNoLmFwcGx5KGksdC5nZXRWaXN1YWxQcmltaXRpdmVzKCkpfSkpLERFdC5zZWxlY3RBbGwoaSl9LGUucHJvdG90eXBlLl9jb25zdHJ1Y3RBcmVhUHJvamVjdG9yPWZ1bmN0aW9uKHQsZSxuKXt2YXIgaT10aGlzLHI9dGhpcy5fY3JlYXRlRGVmaW5lZFByb2plY3RvcihXRXQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy54KCkpLFdFdC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnkoKSkpO3JldHVybiBmdW5jdGlvbihvLGEscyl7cmV0dXJuIGkuX2NyZWF0ZUFyZWFHZW5lcmF0b3IodCxlLG4scixzKShvKX19LGUucHJvdG90eXBlLl9jcmVhdGVEZWZpbmVkUHJvamVjdG9yPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4saSxyKXt2YXIgbz10KG4saSxyKSxhPWUobixpLHIpO3JldHVybiBIRXQuTWF0aC5pc1ZhbGlkTnVtYmVyKG8pJiZIRXQuTWF0aC5pc1ZhbGlkTnVtYmVyKGEpfX0sZS5wcm90b3R5cGUuX2NyZWF0ZUFyZWFHZW5lcmF0b3I9ZnVuY3Rpb24odCxlLG4saSxyKXt2YXIgbz10aGlzLl9nZXRDdXJ2ZUZhY3RvcnkoKTtyZXR1cm4gREV0LmFyZWEoKS54KChmdW5jdGlvbihlLG4pe3JldHVybiB0KGUsbixyKX0pKS55MSgoZnVuY3Rpb24odCxuKXtyZXR1cm4gZSh0LG4scil9KSkueTAoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIG4odCxlLHIpfSkpLmN1cnZlKG8pLmRlZmluZWQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGkodCxlLHIpfSkpfSxlLnByb3RvdHlwZS5fY3JlYXRlVG9wTGluZUdlbmVyYXRvcj1mdW5jdGlvbih0LGUsbixpKXt2YXIgcj10aGlzLl9nZXRDdXJ2ZUZhY3RvcnkoKTtyZXR1cm4gREV0LmxpbmUoKS54KChmdW5jdGlvbihlLG4pe3JldHVybiB0KGUsbixpKX0pKS55KChmdW5jdGlvbih0LG4pe3JldHVybiBlKHQsbixpKX0pKS5jdXJ2ZShyKS5kZWZpbmVkKChmdW5jdGlvbih0LGUpe3JldHVybiBuKHQsZSxpKX0pKX0sZS5fWTBfS0VZPSJ5MCIsZX0pKGZFdC5MaW5lKTtwRXQuQXJlYT1xRXQ7dmFyIFlFdD17fTshKGZ1bmN0aW9uKHQpewovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGU9Qk8sbj13cHQsaT1MZ3Qscj1mZ3Qsbz1wdnQsYT1QTXQscz1HU3QsbD1aTXQsYz1jU3QsdT1YdnQsaD1MYnQsZD1EX3QscD1iZ3QsZj1kRXQsbT1zU3QsZz1tRXQ7dC5CYXJPcmllbnRhdGlvbj1wLm1ha2VFbnVtKFsidmVydGljYWwiLCJob3Jpem9udGFsIl0pLHQuTGFiZWxzUG9zaXRpb249cC5tYWtlRW51bShbInN0YXJ0IiwibWlkZGxlIiwiZW5kIiwib3V0c2lkZSJdKSx0LkJhckFsaWdubWVudD1wLm1ha2VFbnVtKFsic3RhcnQiLCJtaWRkbGUiLCJlbmQiXSk7dmFyIF89KGZ1bmN0aW9uKHApe2Z1bmN0aW9uIGcoZSl7dm9pZCAwPT09ZSYmKGU9InZlcnRpY2FsIik7dmFyIG49cC5jYWxsKHRoaXMpfHx0aGlzO2lmKG4uX2xhYmVsRm9ybWF0dGVyPW8uaWRlbnRpdHkoKSxuLl9sYWJlbHNFbmFibGVkPSExLG4uX2xhYmVsc1Bvc2l0aW9uPXQuTGFiZWxzUG9zaXRpb24uZW5kLG4uX2hpZGVCYXJzSWZBbnlBcmVUb29XaWRlPSEwLG4uX2JhckFsaWdubWVudD0ibWlkZGxlIixuLl9jb21wdXRlQmFyUGl4ZWxUaGlja25lc3M9Yy5tZW1vaXplKHkpLG4uX2ZpeGVkQmFyUGl4ZWxUaGlja25lc3M9ITAsbi5hZGRDbGFzcygiYmFyLXBsb3QiKSwidmVydGljYWwiIT09ZSYmImhvcml6b250YWwiIT09ZSl0aHJvdyBuZXcgRXJyb3IoZSsiIGlzIG5vdCBhIHZhbGlkIG9yaWVudGF0aW9uIGZvciBQbG90cy5CYXIiKTtyZXR1cm4gbi5faXNWZXJ0aWNhbD0idmVydGljYWwiPT09ZSxuLmFuaW1hdG9yKCJiYXNlbGluZSIsbmV3IHIuTnVsbCksbi5hdHRyKCJmaWxsIiwobmV3IHUuQ29sb3IpLnJhbmdlKClbMF0pLG4uYXR0cihnLl9CQVJfVEhJQ0tORVNTX0tFWSwoZnVuY3Rpb24oKXtyZXR1cm4gbi5fYmFyUGl4ZWxUaGlja25lc3MoKX0pKSxuLl9sYWJlbENvbmZpZz1uZXcgZC5NYXAsbi5fYmFzZWxpbmVWYWx1ZVByb3ZpZGVyPWZ1bmN0aW9uKCl7cmV0dXJuW24uYmFzZWxpbmVWYWx1ZSgpXX0sbn1yZXR1cm4gZS5fX2V4dGVuZHMoZyxwKSxnLnByb3RvdHlwZS5jb21wdXRlTGF5b3V0PWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gcC5wcm90b3R5cGUuY29tcHV0ZUxheW91dC5jYWxsKHRoaXMsdCxlLG4pLHRoaXMuX3VwZGF0ZUV4dGVudHMoKSx0aGlzfSxnLnByb3RvdHlwZS54PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG51bGw9PXQ/cC5wcm90b3R5cGUueC5jYWxsKHRoaXMpOihudWxsPT1lP3AucHJvdG90eXBlLnguY2FsbCh0aGlzLHQpOnAucHJvdG90eXBlLnguY2FsbCh0aGlzLHQsZSksdGhpcy5fdXBkYXRlVGhpY2tuZXNzQXR0cigpLHRoaXMuX3VwZGF0ZUxlbmd0aFNjYWxlKCksdGhpcyl9LGcucHJvdG90eXBlLnk9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbD09dD9wLnByb3RvdHlwZS55LmNhbGwodGhpcyk6KG51bGw9PWU/cC5wcm90b3R5cGUueS5jYWxsKHRoaXMsdCk6cC5wcm90b3R5cGUueS5jYWxsKHRoaXMsdCxlKSx0aGlzLl91cGRhdGVMZW5ndGhTY2FsZSgpLHRoaXMpfSxnLnByb3RvdHlwZS5sZW5ndGg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faXNWZXJ0aWNhbD90aGlzLnkoKTp0aGlzLngoKX0sZy5wcm90b3R5cGUucG9zaXRpb249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faXNWZXJ0aWNhbD90aGlzLngoKTp0aGlzLnkoKX0sZy5wcm90b3R5cGUuYmFyRW5kPWZ1bmN0aW9uKHQpe2lmKG51bGw9PXQpcmV0dXJuIHRoaXMuX3Byb3BlcnR5QmluZGluZ3MuZ2V0KGcuX0JBUl9FTkRfS0VZKTt2YXIgZT10aGlzLnBvc2l0aW9uKCk7cmV0dXJuIHRoaXMuX2JpbmRQcm9wZXJ0eShnLl9CQVJfRU5EX0tFWSx0LGUmJmUuc2NhbGUpLHRoaXMuX3VwZGF0ZVRoaWNrbmVzc0F0dHIoKSx0aGlzLl91cGRhdGVMZW5ndGhTY2FsZSgpLHRoaXMucmVuZGVyKCksdGhpc30sZy5wcm90b3R5cGUuYmFyQWxpZ25tZW50PWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX2JhckFsaWdubWVudDoodGhpcy5fYmFyQWxpZ25tZW50PXQsdGhpcy5fY2xlYXJBdHRyVG9Qcm9qZWN0b3JDYWNoZSgpLHRoaXMucmVuZGVyKCksdGhpcyl9LGcucHJvdG90eXBlLm9yaWVudGF0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2lzVmVydGljYWw/InZlcnRpY2FsIjoiaG9yaXpvbnRhbCJ9LGcucHJvdG90eXBlLl9jcmVhdGVEcmF3ZXI9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHMuUHJveHlEcmF3ZXIoKGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBsLlJlY3RhbmdsZVNWR0RyYXdlcihnLl9CQVJfQVJFQV9DTEFTUyl9KSwoZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBhLlJlY3RhbmdsZUNhbnZhc0RyYXdlcih0KX0pKX0sZy5wcm90b3R5cGUuX3NldHVwPWZ1bmN0aW9uKCl7cC5wcm90b3R5cGUuX3NldHVwLmNhbGwodGhpcyksdGhpcy5fYmFzZWxpbmU9dGhpcy5fcmVuZGVyQXJlYS5hcHBlbmQoImxpbmUiKS5jbGFzc2VkKCJiYXNlbGluZSIsITApfSxnLnByb3RvdHlwZS5iYXNlbGluZVZhbHVlPWZ1bmN0aW9uKHQpe2lmKG51bGw9PXQpe2lmKG51bGwhPXRoaXMuX2Jhc2VsaW5lVmFsdWUpcmV0dXJuIHRoaXMuX2Jhc2VsaW5lVmFsdWU7aWYoIXRoaXMuX3Byb2plY3RvcnNSZWFkeSgpKXJldHVybiAwO3ZhciBlPXRoaXMubGVuZ3RoKCkuc2NhbGU7cmV0dXJuIGUmJmUgaW5zdGFuY2VvZiB1LlRpbWU/bmV3IERhdGUoMCk6MH1yZXR1cm4gdGhpcy5fYmFzZWxpbmVWYWx1ZT10LHRoaXMuX3VwZGF0ZUxlbmd0aFNjYWxlKCksdGhpcy5fY2xlYXJBdHRyVG9Qcm9qZWN0b3JDYWNoZSgpLHRoaXMucmVuZGVyKCksdGhpc30sZy5wcm90b3R5cGUuYWRkRGF0YXNldD1mdW5jdGlvbih0KXtyZXR1cm4gcC5wcm90b3R5cGUuYWRkRGF0YXNldC5jYWxsKHRoaXMsdCksdGhpc30sZy5wcm90b3R5cGUuX2FkZERhdGFzZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIHAucHJvdG90eXBlLl9hZGREYXRhc2V0LmNhbGwodGhpcyx0KSx0aGlzfSxnLnByb3RvdHlwZS5yZW1vdmVEYXRhc2V0PWZ1bmN0aW9uKHQpe3JldHVybiBwLnByb3RvdHlwZS5yZW1vdmVEYXRhc2V0LmNhbGwodGhpcyx0KSx0aGlzfSxnLnByb3RvdHlwZS5fcmVtb3ZlRGF0YXNldD1mdW5jdGlvbih0KXtyZXR1cm4gcC5wcm90b3R5cGUuX3JlbW92ZURhdGFzZXQuY2FsbCh0aGlzLHQpLHRoaXN9LGcucHJvdG90eXBlLmRhdGFzZXRzPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3AucHJvdG90eXBlLmRhdGFzZXRzLmNhbGwodGhpcyk6KHAucHJvdG90eXBlLmRhdGFzZXRzLmNhbGwodGhpcyx0KSx0aGlzKX0sZy5wcm90b3R5cGUubGFiZWxzRW5hYmxlZD1mdW5jdGlvbih0LGUpe3JldHVybiBudWxsPT10P3RoaXMuX2xhYmVsc0VuYWJsZWQ6KHRoaXMuX2xhYmVsc0VuYWJsZWQ9dCxudWxsIT1lJiYodGhpcy5fbGFiZWxzUG9zaXRpb249ZSksdGhpcy5fY2xlYXJBdHRyVG9Qcm9qZWN0b3JDYWNoZSgpLHRoaXMucmVuZGVyKCksdGhpcyl9LGcucHJvdG90eXBlLmxhYmVsRm9ybWF0dGVyPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX2xhYmVsRm9ybWF0dGVyOih0aGlzLl9sYWJlbEZvcm1hdHRlcj10LHRoaXMuX2NsZWFyQXR0clRvUHJvamVjdG9yQ2FjaGUoKSx0aGlzLnJlbmRlcigpLHRoaXMpfSxnLnByb3RvdHlwZS5fY3JlYXRlTm9kZXNGb3JEYXRhc2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXAucHJvdG90eXBlLl9jcmVhdGVOb2Rlc0ZvckRhdGFzZXQuY2FsbCh0aGlzLHQpLG49dGhpcy5fcmVuZGVyQXJlYS5hcHBlbmQoImciKS5jbGFzc2VkKGcuX0xBQkVMX0FSRUFfQ0xBU1MsITApLHI9bmV3IGkuU3ZnQ29udGV4dChuLm5vZGUoKSksbz1uZXcgaS5DYWNoZU1lYXN1cmVyKHIpLGE9bmV3IGkuV3JpdGVyKG8scik7cmV0dXJuIHRoaXMuX2xhYmVsQ29uZmlnLnNldCh0LHtsYWJlbEFyZWE6bixtZWFzdXJlcjpvLHdyaXRlcjphfSksZX0sZy5wcm90b3R5cGUuX3JlbW92ZURhdGFzZXROb2Rlcz1mdW5jdGlvbih0KXtwLnByb3RvdHlwZS5fcmVtb3ZlRGF0YXNldE5vZGVzLmNhbGwodGhpcyx0KTt2YXIgZT10aGlzLl9sYWJlbENvbmZpZy5nZXQodCk7bnVsbCE9ZSYmKGUubGFiZWxBcmVhLnJlbW92ZSgpLHRoaXMuX2xhYmVsQ29uZmlnLmRlbGV0ZSh0KSl9LGcucHJvdG90eXBlLmVudGl0eU5lYXJlc3Q9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxuPWZ1bmN0aW9uKCl7dmFyIG49ZS5faXNWZXJ0aWNhbD9lLl9nZXRFbnRpdHlTdG9yZSgpLmVudGl0eU5lYXJlc3RYKHQpOmUuX2dldEVudGl0eVN0b3JlKCkuZW50aXR5TmVhcmVzdFkodCk7cmV0dXJuIHZvaWQgMD09PW4/dm9pZCAwOmUuX2xpZ2h0d2VpZ2h0UGxvdEVudGl0eVRvUGxvdEVudGl0eShuKX07cmV0dXJuIHRoaXMuX2ZpeGVkQmFyUGl4ZWxUaGlja25lc3M/dGhpcy5fY29tcHV0ZUJhclBpeGVsVGhpY2tuZXNzLmRvTG9ja2VkKG4pOm4oKX0sZy5wcm90b3R5cGUuZW50aXRpZXNBdD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLG49ZnVuY3Rpb24oKXtyZXR1cm4gZS5fZW50aXRpZXNJbnRlcnNlY3RpbmcodC54LHQueSl9O3JldHVybiB0aGlzLl9maXhlZEJhclBpeGVsVGhpY2tuZXNzP3RoaXMuX2NvbXB1dGVCYXJQaXhlbFRoaWNrbmVzcy5kb0xvY2tlZChuKTpuKCl9LGcucHJvdG90eXBlLmVudGl0aWVzSW5Cb3VuZHM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxuPWZ1bmN0aW9uKCl7cmV0dXJuIHAucHJvdG90eXBlLmVudGl0aWVzSW5Cb3VuZHMuY2FsbChlLHQpfTtyZXR1cm4gdGhpcy5fZml4ZWRCYXJQaXhlbFRoaWNrbmVzcz90aGlzLl9jb21wdXRlQmFyUGl4ZWxUaGlja25lc3MuZG9Mb2NrZWQobik6bigpfSxnLnByb3RvdHlwZS5lbnRpdGllc0luWEJvdW5kcz1mdW5jdGlvbih0KXt2YXIgZT10aGlzLG49ZnVuY3Rpb24oKXtyZXR1cm4gcC5wcm90b3R5cGUuZW50aXRpZXNJblhCb3VuZHMuY2FsbChlLHQpfTtyZXR1cm4gdGhpcy5fZml4ZWRCYXJQaXhlbFRoaWNrbmVzcz90aGlzLl9jb21wdXRlQmFyUGl4ZWxUaGlja25lc3MuZG9Mb2NrZWQobik6bigpfSxnLnByb3RvdHlwZS5lbnRpdGllc0luWUJvdW5kcz1mdW5jdGlvbih0KXt2YXIgZT10aGlzLG49ZnVuY3Rpb24oKXtyZXR1cm4gcC5wcm90b3R5cGUuZW50aXRpZXNJbllCb3VuZHMuY2FsbChlLHQpfTtyZXR1cm4gdGhpcy5fZml4ZWRCYXJQaXhlbFRoaWNrbmVzcz90aGlzLl9jb21wdXRlQmFyUGl4ZWxUaGlja25lc3MuZG9Mb2NrZWQobik6bigpfSxnLnByb3RvdHlwZS5fZW50aXRpZXNJbnRlcnNlY3Rpbmc9ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49W10saT10aGlzLl9nZXRFbnRpdHlTdG9yZSgpLmVudGl0aWVzKCkscj1pLmxlbmd0aCxvPTA7bzxyO28rKyl7dmFyIGE9aVtvXTtkLkRPTS5pbnRlcnNlY3RzQkJveCh0LGUsdGhpcy5fZW50aXR5Qm91bmRzKGEpKSYmbi5wdXNoKHRoaXMuX2xpZ2h0d2VpZ2h0UGxvdEVudGl0eVRvUGxvdEVudGl0eShhKSl9cmV0dXJuIG59LGcucHJvdG90eXBlLl91cGRhdGVMZW5ndGhTY2FsZT1mdW5jdGlvbigpe2lmKHRoaXMuX3Byb2plY3RvcnNSZWFkeSgpKXt2YXIgdD10aGlzLmxlbmd0aCgpLnNjYWxlO3QgaW5zdGFuY2VvZiBoLlF1YW50aXRhdGl2ZVNjYWxlJiYodC5hZGRQYWRkaW5nRXhjZXB0aW9uc1Byb3ZpZGVyKHRoaXMuX2Jhc2VsaW5lVmFsdWVQcm92aWRlciksdC5hZGRJbmNsdWRlZFZhbHVlc1Byb3ZpZGVyKHRoaXMuX2Jhc2VsaW5lVmFsdWVQcm92aWRlcikpfX0sZy5wcm90b3R5cGUucmVuZGVySW1tZWRpYXRlbHk9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3JldHVybiB0aGlzLl9iYXJQaXhlbFRoaWNrbmVzcygpLHRoaXMuX2NvbXB1dGVCYXJQaXhlbFRoaWNrbmVzcy5kb0xvY2tlZCgoZnVuY3Rpb24oKXtyZXR1cm4gcC5wcm90b3R5cGUucmVuZGVySW1tZWRpYXRlbHkuY2FsbCh0KX0pKX0sZy5wcm90b3R5cGUuX2FkZGl0aW9uYWxQYWludD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLG49dGhpcy5sZW5ndGgoKS5zY2FsZS5zY2FsZSh0aGlzLmJhc2VsaW5lVmFsdWUoKSksaT17eDE6dGhpcy5faXNWZXJ0aWNhbD8wOm4seTE6dGhpcy5faXNWZXJ0aWNhbD9uOjAseDI6dGhpcy5faXNWZXJ0aWNhbD90aGlzLndpZHRoKCk6bix5Mjp0aGlzLl9pc1ZlcnRpY2FsP246dGhpcy5oZWlnaHQoKX07dGhpcy5fZ2V0QW5pbWF0b3IoImJhc2VsaW5lIikuYW5pbWF0ZSh0aGlzLl9iYXNlbGluZSxpKSx0aGlzLmRhdGFzZXRzKCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7cmV0dXJuIGUuX2xhYmVsQ29uZmlnLmdldCh0KS5sYWJlbEFyZWEuc2VsZWN0QWxsKCJnIikucmVtb3ZlKCl9KSksdGhpcy5fbGFiZWxzRW5hYmxlZCYmZC5XaW5kb3cuc2V0VGltZW91dCgoZnVuY3Rpb24oKXtyZXR1cm4gZS5fZHJhd0xhYmVscygpfSksdCl9LGcucHJvdG90eXBlLmdldEV4dGVudHNGb3JQcm9wZXJ0eT1mdW5jdGlvbih0KXt2YXIgZSxpPXRoaXMscj1wLnByb3RvdHlwZS5nZXRFeHRlbnRzRm9yUHJvcGVydHkuY2FsbCh0aGlzLHQpO2lmKCJ4Ij09PXQmJnRoaXMuX2lzVmVydGljYWwpZT10aGlzLngoKTtlbHNle2lmKCJ5IiE9PXR8fHRoaXMuX2lzVmVydGljYWwpcmV0dXJuIHI7ZT10aGlzLnkoKX1pZighKGUmJmUuc2NhbGUmJmUuc2NhbGUgaW5zdGFuY2VvZiBoLlF1YW50aXRhdGl2ZVNjYWxlKSlyZXR1cm4gcjt2YXIgbz1lLnNjYWxlLGE9dGhpcy5fYmFyUGl4ZWxUaGlja25lc3MoKTtyZXR1cm4gcj1yLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIG4uZXh0ZW50KFtvLmludmVydChpLl9nZXRQb3NpdGlvbkF0dHIoby5zY2FsZSh0WzBdKSxhKSksby5pbnZlcnQoaS5fZ2V0UG9zaXRpb25BdHRyKG8uc2NhbGUodFswXSksYSkrYSksby5pbnZlcnQoaS5fZ2V0UG9zaXRpb25BdHRyKG8uc2NhbGUodFsxXSksYSkpLG8uaW52ZXJ0KGkuX2dldFBvc2l0aW9uQXR0cihvLnNjYWxlKHRbMV0pLGEpK2EpXSl9KSl9LGcucHJvdG90eXBlLl9nZXRQb3NpdGlvbkF0dHI9ZnVuY3Rpb24odCxlKXtzd2l0Y2godGhpcy5faXNWZXJ0aWNhbHx8KHQtPWUsZSo9LTEpLHRoaXMuX2JhckFsaWdubWVudCl7Y2FzZSJzdGFydCI6cmV0dXJuIHQ7Y2FzZSJlbmQiOnJldHVybiB0LWU7Y2FzZSJtaWRkbGUiOmRlZmF1bHQ6cmV0dXJuIHQtZS8yfX0sZy5wcm90b3R5cGUuX2RyYXdMYWJlbHM9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy5fZ2V0RGF0YVRvRHJhdygpLG49dGhpcy5fZ2V0QXR0clRvUHJvamVjdG9yKCksaT10aGlzLmRhdGFzZXRzKCkuc29tZSgoZnVuY3Rpb24oaSl7cmV0dXJuIGUuZ2V0KGkpLnNvbWUoKGZ1bmN0aW9uKGUscil7cmV0dXJuIG51bGwhPWUmJnQuX2RyYXdMYWJlbChlLHIsaSxuKX0pKX0pKTt0aGlzLl9oaWRlQmFyc0lmQW55QXJlVG9vV2lkZSYmaSYmdGhpcy5kYXRhc2V0cygpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiB0Ll9sYWJlbENvbmZpZy5nZXQoZSkubGFiZWxBcmVhLnNlbGVjdEFsbCgiZyIpLnJlbW92ZSgpfSkpfSxnLnByb3RvdHlwZS5fZHJhd0xhYmVsPWZ1bmN0aW9uKHQsZSxuLGkpe3ZhciByPXRoaXMuX2xhYmVsQ29uZmlnLmdldChuKSxvPXIubGFiZWxBcmVhLGE9ci5tZWFzdXJlcixzPXIud3JpdGVyLGw9KDAsdGhpcy5sZW5ndGgoKS5hY2Nlc3NvcikodCxlLG4pLGM9dGhpcy5sZW5ndGgoKS5zY2FsZSx1PW51bGwhPWM/Yy5zY2FsZShsKTpsLGg9bnVsbCE9Yz9jLnNjYWxlKHRoaXMuYmFzZWxpbmVWYWx1ZSgpKTp0aGlzLmJhc2VsaW5lVmFsdWUoKSxkPXt4OmkueCh0LGUsbikseTppLnkodCxlLG4pfSxwPXt3aWR0aDppLndpZHRoKHQsZSxuKSxoZWlnaHQ6aS5oZWlnaHQodCxlLG4pfSxmPXRoaXMuX2xhYmVsRm9ybWF0dGVyKGwsdCxlLG4pLG09YS5tZWFzdXJlKGYpLGc9dGhpcy5fc2hvdWxkU2hvd0xhYmVsT25CYXIoZCxwLG0pLF89dGhpcy5fY2FsY3VsYXRlTGFiZWxQcm9wZXJ0aWVzKGQscCxtLGcsdGhpcy5faXNWZXJ0aWNhbD91PD1oOnU8aCkseT1fLmNvbnRhaW5lckRpbWVuc2lvbnMsdj1fLmxhYmVsQ29udGFpbmVyT3JpZ2luLGI9Xy5sYWJlbE9yaWdpbix4PV8uYWxpZ25tZW50LHc9aS5maWxsKHQsZSxuKSxTPXRoaXMuX2NyZWF0ZUxhYmVsQ29udGFpbmVyKG8sdixiLG0sZyx3KTtyZXR1cm4gcy53cml0ZShmLHkud2lkdGgseS5oZWlnaHQse3hBbGlnbjp4LngseUFsaWduOngueX0sUy5ub2RlKCkpLHRoaXMuX2lzVmVydGljYWw/cC53aWR0aDxtLndpZHRoOnAuaGVpZ2h0PG0uaGVpZ2h0fSxnLnByb3RvdHlwZS5fc2hvdWxkU2hvd0xhYmVsT25CYXI9ZnVuY3Rpb24oZSxuLGkpe2lmKHRoaXMuX2xhYmVsc1Bvc2l0aW9uPT09dC5MYWJlbHNQb3NpdGlvbi5vdXRzaWRlKXJldHVybiExO3ZhciByPXRoaXMuX2lzVmVydGljYWw/ZS55OmUueCxvPXRoaXMuX2lzVmVydGljYWw/bi5oZWlnaHQ6bi53aWR0aCxhPXRoaXMuX2lzVmVydGljYWw/dGhpcy5oZWlnaHQoKTp0aGlzLndpZHRoKCkscz1yK28sbD1vO3JldHVybiBzPmE/bD1hLXI6cjwwJiYobD1zKSwodGhpcy5faXNWZXJ0aWNhbD9pLmhlaWdodDppLndpZHRoKStnLl9MQUJFTF9NQVJHSU5fSU5TSURFX0JBUjw9bH0sZy5wcm90b3R5cGUuX2NhbGN1bGF0ZUxhYmVsUHJvcGVydGllcz1mdW5jdGlvbihlLG4saSxyLG8pe3ZhciBhPXRoaXMscz10aGlzLl9pc1ZlcnRpY2FsP2UueTplLngsbD10aGlzLl9pc1ZlcnRpY2FsP24uaGVpZ2h0Om4ud2lkdGgsYz10aGlzLl9pc1ZlcnRpY2FsP2kuaGVpZ2h0Omkud2lkdGgsdT0iY2VudGVyIixoPWwsZD1zLHA9cyxmPWZ1bmN0aW9uKHQpe3N3aXRjaCh0KXtjYXNlInRvcExlZnQiOnJldHVybiB1PWEuX2lzVmVydGljYWw/InRvcCI6ImxlZnQiLGQrPWcuX0xBQkVMX01BUkdJTl9JTlNJREVfQkFSLHZvaWQocCs9Zy5fTEFCRUxfTUFSR0lOX0lOU0lERV9CQVIpO2Nhc2UiY2VudGVyIjpyZXR1cm4gdm9pZChwKz0obCtjKS8yKTtjYXNlImJvdHRvbVJpZ2h0IjpyZXR1cm4gdT1hLl9pc1ZlcnRpY2FsPyJib3R0b20iOiJyaWdodCIsZC09Zy5fTEFCRUxfTUFSR0lOX0lOU0lERV9CQVIsdm9pZChwKz1oLWcuX0xBQkVMX01BUkdJTl9JTlNJREVfQkFSLWMpfX07aWYocilzd2l0Y2godGhpcy5fbGFiZWxzUG9zaXRpb24pe2Nhc2UgdC5MYWJlbHNQb3NpdGlvbi5zdGFydDpmKG8/ImJvdHRvbVJpZ2h0IjoidG9wTGVmdCIpO2JyZWFrO2Nhc2UgdC5MYWJlbHNQb3NpdGlvbi5taWRkbGU6ZigiY2VudGVyIik7YnJlYWs7Y2FzZSB0LkxhYmVsc1Bvc2l0aW9uLmVuZDpmKG8/InRvcExlZnQiOiJib3R0b21SaWdodCIpfWVsc2Ugbz8odT10aGlzLl9pc1ZlcnRpY2FsPyJ0b3AiOiJsZWZ0IixoPWwrZy5fTEFCRUxfTUFSR0lOX0lOU0lERV9CQVIrYyxkLT1nLl9MQUJFTF9NQVJHSU5fSU5TSURFX0JBUitjLHAtPWcuX0xBQkVMX01BUkdJTl9JTlNJREVfQkFSK2MpOih1PXRoaXMuX2lzVmVydGljYWw/ImJvdHRvbSI6InJpZ2h0IixoPWwrZy5fTEFCRUxfTUFSR0lOX0lOU0lERV9CQVIrYyxwKz1sK2cuX0xBQkVMX01BUkdJTl9JTlNJREVfQkFSKTtyZXR1cm57Y29udGFpbmVyRGltZW5zaW9uczp7d2lkdGg6dGhpcy5faXNWZXJ0aWNhbD9uLndpZHRoOmgsaGVpZ2h0OnRoaXMuX2lzVmVydGljYWw/aDpuLmhlaWdodH0sbGFiZWxDb250YWluZXJPcmlnaW46e3g6dGhpcy5faXNWZXJ0aWNhbD9lLng6ZCx5OnRoaXMuX2lzVmVydGljYWw/ZDplLnl9LGxhYmVsT3JpZ2luOnt4OnRoaXMuX2lzVmVydGljYWw/ZS54K24ud2lkdGgvMi1pLndpZHRoLzI6cCx5OnRoaXMuX2lzVmVydGljYWw/cDplLnkrbi5oZWlnaHQvMi1pLmhlaWdodC8yfSxhbGlnbm1lbnQ6e3g6dGhpcy5faXNWZXJ0aWNhbD8iY2VudGVyIjp1LHk6dGhpcy5faXNWZXJ0aWNhbD91OiJjZW50ZXIifX19LGcucHJvdG90eXBlLl9jcmVhdGVMYWJlbENvbnRhaW5lcj1mdW5jdGlvbih0LGUsbixpLHIsbyl7dmFyIGE9dC5hcHBlbmQoImciKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitlLngrIiwgIitlLnkrIikiKTtpZihyKXthLmNsYXNzZWQoIm9uLWJhci1sYWJlbCIsITApO3ZhciBzPTEuNipkLkNvbG9yLmNvbnRyYXN0KCJ3aGl0ZSIsbyk8ZC5Db2xvci5jb250cmFzdCgiYmxhY2siLG8pO2EuY2xhc3NlZChzPyJkYXJrLWxhYmVsIjoibGlnaHQtbGFiZWwiLCEwKX1lbHNlIGEuY2xhc3NlZCgib2ZmLWJhci1sYWJlbCIsITApO3JldHVybiBhfSxnLnByb3RvdHlwZS5fZ2VuZXJhdGVEcmF3U3RlcHM9ZnVuY3Rpb24oKXt2YXIgdD1bXTtpZih0aGlzLl9hbmltYXRlT25OZXh0UmVuZGVyKCkpe3ZhciBlPXRoaXMuX2dldEF0dHJUb1Byb2plY3RvcigpLG49dGhpcy5sZW5ndGgoKS5zY2FsZS5zY2FsZSh0aGlzLmJhc2VsaW5lVmFsdWUoKSksaT10aGlzLl9pc1ZlcnRpY2FsPyJoZWlnaHQiOiJ3aWR0aCI7ZVt0aGlzLl9pc1ZlcnRpY2FsPyJ5IjoieCJdPWZ1bmN0aW9uKCl7cmV0dXJuIG59LGVbaV09ZnVuY3Rpb24oKXtyZXR1cm4gMH0sdC5wdXNoKHthdHRyVG9Qcm9qZWN0b3I6ZSxhbmltYXRvcjp0aGlzLl9nZXRBbmltYXRvcihmLkFuaW1hdG9yLlJFU0VUKX0pfXJldHVybiB0LnB1c2goe2F0dHJUb1Byb2plY3Rvcjp0aGlzLl9nZXRBdHRyVG9Qcm9qZWN0b3IoKSxhbmltYXRvcjp0aGlzLl9nZXRBbmltYXRvcihmLkFuaW1hdG9yLk1BSU4pfSksdH0sZy5wcm90b3R5cGUuX2dlbmVyYXRlQXR0clRvUHJvamVjdG9yPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXAucHJvdG90eXBlLl9nZW5lcmF0ZUF0dHJUb1Byb2plY3Rvci5jYWxsKHRoaXMpLG49dGhpcy5sZW5ndGgoKS5zY2FsZS5zY2FsZSh0aGlzLmJhc2VsaW5lVmFsdWUoKSksaT10aGlzLl9pc1ZlcnRpY2FsPyJ5IjoieCIscj10aGlzLl9pc1ZlcnRpY2FsPyJ4IjoieSIsbz1tLlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMucG9zaXRpb24oKSksYT1tLlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMubGVuZ3RoKCkpLHM9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBNYXRoLmFicyhuLWEodCxlLGkpKX0sbD1lW2cuX0JBUl9USElDS05FU1NfS0VZXSxjPWUuZ2FwLHU9bnVsbD09Yz9sOmZ1bmN0aW9uKHQsZSxuKXt2YXIgaT1sKHQsZSxuKTtyZXR1cm4gaTxnLl9CQVJfR0FQTEVTU19USFJFU0hPTERfUFg/aTppLWModCxlLG4pfTtyZXR1cm4gZS53aWR0aD10aGlzLl9pc1ZlcnRpY2FsP3U6cyxlLmhlaWdodD10aGlzLl9pc1ZlcnRpY2FsP3M6dSxlW2ldPWZ1bmN0aW9uKHQsZSxpKXt2YXIgcj1hKHQsZSxpKTtyZXR1cm4gcj5uP246cn0sZVtyXT1mdW5jdGlvbihlLG4saSl7cmV0dXJuIHQuX2dldFBvc2l0aW9uQXR0cihvKGUsbixpKSxsKGUsbixpKSl9LGV9LGcucHJvdG90eXBlLl91cGRhdGVUaGlja25lc3NBdHRyPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXRoaXMucG9zaXRpb24oKSxuPXRoaXMuYmFyRW5kKCk7bnVsbCE9ZSYmbnVsbCE9bj8odGhpcy5fZml4ZWRCYXJQaXhlbFRoaWNrbmVzcz0hMSx0aGlzLmF0dHIoZy5fQkFSX1RISUNLTkVTU19LRVksKGZ1bmN0aW9uKHQsaSxyKXt2YXIgbz1lLmFjY2Vzc29yKHQsaSxyKSxhPW4uYWNjZXNzb3IodCxpLHIpO3JldHVybiBvPWUuc2NhbGU/ZS5zY2FsZS5zY2FsZShvKTpvLGE9bi5zY2FsZT9uLnNjYWxlLnNjYWxlKGEpOmEsTWF0aC5hYnMoYS1vKX0pKSk6KHRoaXMuX2ZpeGVkQmFyUGl4ZWxUaGlja25lc3M9ITAsdGhpcy5hdHRyKGcuX0JBUl9USElDS05FU1NfS0VZLChmdW5jdGlvbigpe3JldHVybiB0Ll9iYXJQaXhlbFRoaWNrbmVzcygpfSkpKX0sZy5wcm90b3R5cGUuX2JhclBpeGVsVGhpY2tuZXNzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2ZpeGVkQmFyUGl4ZWxUaGlja25lc3MmJnRoaXMuX3Byb2plY3RvcnNSZWFkeSgpP3RoaXMuX2NvbXB1dGVCYXJQaXhlbFRoaWNrbmVzcyh0aGlzLnBvc2l0aW9uKCksdGhpcy5kYXRhc2V0cygpLHRoaXMuX2lzVmVydGljYWw/dGhpcy53aWR0aCgpOnRoaXMuaGVpZ2h0KCkpOjB9LGcucHJvdG90eXBlLmVudGl0aWVzPWZ1bmN0aW9uKHQpe3JldHVybiB2b2lkIDA9PT10JiYodD10aGlzLmRhdGFzZXRzKCkpLHRoaXMuX3Byb2plY3RvcnNSZWFkeSgpP3AucHJvdG90eXBlLmVudGl0aWVzLmNhbGwodGhpcyx0KTpbXX0sZy5wcm90b3R5cGUuX2VudGl0eUJvdW5kcz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcGl4ZWxCb3VuZHModC5kYXR1bSx0LmluZGV4LHQuZGF0YXNldCl9LGcucHJvdG90eXBlLl9waXhlbEJvdW5kcz1mdW5jdGlvbih0LGUsbil7dmFyIGk9dGhpcy5fZ2V0QXR0clRvUHJvamVjdG9yKCk7cmV0dXJue3g6aS54KHQsZSxuKSx5OmkueSh0LGUsbiksd2lkdGg6aS53aWR0aCh0LGUsbiksaGVpZ2h0OmkuaGVpZ2h0KHQsZSxuKX19LGcucHJvdG90eXBlLl9waXhlbFBvaW50PWZ1bmN0aW9uKHQsZSxuKXt2YXIgaT10aGlzLl9waXhlbEJvdW5kcyh0LGUsbikscj1tLlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMuX2lzVmVydGljYWw/dGhpcy55KCk6dGhpcy54KCkpKHQsZSxuKSxvPSh0aGlzLl9pc1ZlcnRpY2FsP3RoaXMueSgpLnNjYWxlOnRoaXMueCgpLnNjYWxlKS5zY2FsZSh0aGlzLmJhc2VsaW5lVmFsdWUoKSk7cmV0dXJuIHRoaXMuX3BpeGVsUG9pbnRCYXIocixvLGkpfSxnLnByb3RvdHlwZS5fcGl4ZWxQb2ludEJhcj1mdW5jdGlvbih0LGUsbil7dmFyIGkscjtyZXR1cm4gdGhpcy5faXNWZXJ0aWNhbD8oaT1uLngrbi53aWR0aC8yLHI9dDw9ZT9uLnk6bi55K24uaGVpZ2h0KTooaT10Pj1lP24ueCtuLndpZHRoOm4ueCxyPW4ueStuLmhlaWdodC8yKSx7eDppLHk6cn19LGcucHJvdG90eXBlLl91bmluc3RhbGxTY2FsZUZvcktleT1mdW5jdGlvbih0LGUpe3AucHJvdG90eXBlLl91bmluc3RhbGxTY2FsZUZvcktleS5jYWxsKHRoaXMsdCxlKX0sZy5wcm90b3R5cGUuX2dldERhdGFUb0RyYXc9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9bmV3IGQuTWFwLG49dGhpcy5fZ2V0QXR0clRvUHJvamVjdG9yKCksaT10aGlzLndpZHRoKCkscj10aGlzLmhlaWdodCgpO3JldHVybiB0aGlzLmRhdGFzZXRzKCkuZm9yRWFjaCgoZnVuY3Rpb24obyl7dmFyIGE9by5kYXRhKCkubWFwKChmdW5jdGlvbihlLGEpe3JldHVybiB0Ll9pc0RhdHVtT25TY3JlZW4obixpLHIsZSxhLG8pP2U6bnVsbH0pKTtlLnNldChvLGEpfSkpLGV9LGcucHJvdG90eXBlLl9pc0RhdHVtT25TY3JlZW49ZnVuY3Rpb24odCxlLG4saSxyLG8pe3ZhciBhPXQueChpLHIsbykscz10LnkoaSxyLG8pLGw9dC53aWR0aChpLHIsbyksYz10LmhlaWdodChpLHIsbyk7cmV0dXJuISEoZC5NYXRoLmlzVmFsaWROdW1iZXIoYSkmJmQuTWF0aC5pc1ZhbGlkTnVtYmVyKHMpJiZkLk1hdGguaXNWYWxpZE51bWJlcihsKSYmZC5NYXRoLmlzVmFsaWROdW1iZXIoYykpJiZkLk1hdGguYm91bmRzSW50ZXJzZWN0cyhhLHMsbCxjLDAsMCxlLG4pfSxnLnByb3RvdHlwZS5pbnZhbGlkYXRlQ2FjaGU9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3AucHJvdG90eXBlLmludmFsaWRhdGVDYWNoZS5jYWxsKHRoaXMpLHRoaXMuZGF0YXNldHMoKS5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gdC5fbGFiZWxDb25maWcuZ2V0KGUpLm1lYXN1cmVyLnJlc2V0KCl9KSl9LGcuX0JBUl9USElDS05FU1NfUkFUSU89Ljk1LGcuX0JBUl9HQVBMRVNTX1RIUkVTSE9MRF9QWD0zLGcuX1NJTkdMRV9CQVJfRElNRU5TSU9OX1JBVElPPS40LGcuX0JBUl9BUkVBX0NMQVNTPSJiYXItYXJlYSIsZy5fQkFSX0VORF9LRVk9ImJhckVuZCIsZy5fQkFSX1RISUNLTkVTU19LRVk9IndpZHRoIixnLl9MQUJFTF9BUkVBX0NMQVNTPSJiYXItbGFiZWwtdGV4dC1hcmVhIixnLl9MQUJFTF9NQVJHSU5fSU5TSURFX0JBUj0xMCxnfSkoZy5YWVBsb3QpO2Z1bmN0aW9uIHkodCxlLGkpe3ZhciByLG89dC5zY2FsZTtpZihvIGluc3RhbmNlb2YgdS5DYXRlZ29yeSlyPW8ucmFuZ2VCYW5kKCk7ZWxzZXt2YXIgYT10LmFjY2Vzc29yLHM9bi5zZXQoZC5BcnJheS5mbGF0dGVuKGUubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5kYXRhKCkubWFwKChmdW5jdGlvbihlLG4pe3JldHVybiBhKGUsbix0KX0pKS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBudWxsIT10fSkpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQudmFsdWVPZigpfSkpfSkpKSkudmFsdWVzKCkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4rdH0pKTtzLnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQtZX0pKTt2YXIgbD1zLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIG8uc2NhbGUodCl9KSksYz1uLnBhaXJzKGwpO3I9ZC5NYXRoLm1pbihjLChmdW5jdGlvbih0LGUpe3JldHVybiBNYXRoLmFicyh0WzFdLXRbMF0pfSksaSpfLl9TSU5HTEVfQkFSX0RJTUVOU0lPTl9SQVRJTykscio9Xy5fQkFSX1RISUNLTkVTU19SQVRJT31yZXR1cm4gcn10LkJhcj1ffSkoWUV0KTt2YXIgWEV0PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqL09iamVjdC5kZWZpbmVQcm9wZXJ0eShYRXQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciAkRXQ9Qk8sS0V0PVh2dCxaRXQ9RF90LEpFdD1ZRXQsUUV0PXNTdCx0VHQ9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7dm9pZCAwPT09ZSYmKGU9InZlcnRpY2FsIik7dmFyIG49dC5jYWxsKHRoaXMsZSl8fHRoaXM7cmV0dXJuIG4uX2NsdXN0ZXJPZmZzZXRzPW5ldyBaRXQuTWFwLG59cmV0dXJuICRFdC5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5fZ2VuZXJhdGVBdHRyVG9Qcm9qZWN0b3I9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLG49dC5wcm90b3R5cGUuX2dlbmVyYXRlQXR0clRvUHJvamVjdG9yLmNhbGwodGhpcyksaT10aGlzLl9tYWtlSW5uZXJTY2FsZSgpLHI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gaS5yYW5nZUJhbmQoKX07bi53aWR0aD10aGlzLl9pc1ZlcnRpY2FsP3I6bi53aWR0aCxuLmhlaWdodD10aGlzLl9pc1ZlcnRpY2FsP24uaGVpZ2h0OnI7dmFyIG89bi54LGE9bi55O3JldHVybiBuLng9dGhpcy5faXNWZXJ0aWNhbD9mdW5jdGlvbih0LG4saSl7cmV0dXJuIG8odCxuLGkpK2UuX2NsdXN0ZXJPZmZzZXRzLmdldChpKX06ZnVuY3Rpb24odCxlLG4pe3JldHVybiBvKHQsZSxuKX0sbi55PXRoaXMuX2lzVmVydGljYWw/ZnVuY3Rpb24odCxlLG4pe3JldHVybiBhKHQsZSxuKX06ZnVuY3Rpb24odCxuLGkpe3JldHVybiBhKHQsbixpKStlLl9jbHVzdGVyT2Zmc2V0cy5nZXQoaSl9LG59LGUucHJvdG90eXBlLl91cGRhdGVDbHVzdGVyUG9zaXRpb249ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy5fbWFrZUlubmVyU2NhbGUoKTt0aGlzLmRhdGFzZXRzKCkuZm9yRWFjaCgoZnVuY3Rpb24obixpKXtyZXR1cm4gdC5fY2x1c3Rlck9mZnNldHMuc2V0KG4sZS5zY2FsZShTdHJpbmcoaSkpLWUucmFuZ2VCYW5kKCkvMil9KSl9LGUucHJvdG90eXBlLl9tYWtlSW5uZXJTY2FsZT1mdW5jdGlvbigpe3ZhciB0PW5ldyBLRXQuQ2F0ZWdvcnk7dC5kb21haW4odGhpcy5kYXRhc2V0cygpLm1hcCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gU3RyaW5nKGUpfSkpKTt2YXIgZT1RRXQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy5hdHRyKEpFdC5CYXIuX0JBUl9USElDS05FU1NfS0VZKSk7cmV0dXJuIHQucmFuZ2UoWzAsZShudWxsLDAsbnVsbCldKSx0fSxlLnByb3RvdHlwZS5fZ2V0RGF0YVRvRHJhdz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl91cGRhdGVDbHVzdGVyUG9zaXRpb24oKSx0LnByb3RvdHlwZS5fZ2V0RGF0YVRvRHJhdy5jYWxsKHRoaXMpfSxlfSkoSkV0LkJhcik7WEV0LkNsdXN0ZXJlZEJhcj10VHQ7dmFyIGVUdD17fTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi9PYmplY3QuZGVmaW5lUHJvcGVydHkoZVR0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgblR0PUJPLGlUdD13cHQsclR0PUxndCxvVHQ9Zmd0LGFUdD1wdnQsc1R0PVh2dCxsVHQ9RF90LGNUdD1OTXQsdVR0PU9NdCxoVHQ9R1N0LGRUdD1UeXQscFR0PXNTdCxmVHQ9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt2YXIgZT10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIGUuX3N0YXJ0QW5nbGU9MCxlLl9lbmRBbmdsZT0yKk1hdGguUEksZS5fbGFiZWxGb3JtYXR0ZXI9YVR0LmlkZW50aXR5KCksZS5fbGFiZWxzRW5hYmxlZD0hMSxlLmlubmVyUmFkaXVzKDApLGUub3V0ZXJSYWRpdXMoKGZ1bmN0aW9uKCl7dmFyIHQ9ZS5fcGllQ2VudGVyKCk7cmV0dXJuIE1hdGgubWluKE1hdGgubWF4KGUud2lkdGgoKS10LngsdC54KSxNYXRoLm1heChlLmhlaWdodCgpLXQueSx0LnkpKX0pKSxlLmFkZENsYXNzKCJwaWUtcGxvdCIpLGUuYXR0cigiZmlsbCIsKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIFN0cmluZyhlKX0pLG5ldyBzVHQuQ29sb3IpLGUuX3N0cm9rZURyYXdlcnM9bmV3IGxUdC5NYXAsZX1yZXR1cm4gblR0Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLl9zZXR1cD1mdW5jdGlvbigpe3ZhciBlPXRoaXM7dC5wcm90b3R5cGUuX3NldHVwLmNhbGwodGhpcyksdGhpcy5fc3Ryb2tlRHJhd2Vycy5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gdC5hdHRhY2hUbyhlLl9yZW5kZXJBcmVhKX0pKX0sZS5wcm90b3R5cGUuY29tcHV0ZUxheW91dD1mdW5jdGlvbihlLG4saSl7dC5wcm90b3R5cGUuY29tcHV0ZUxheW91dC5jYWxsKHRoaXMsZSxuLGkpO3ZhciByPXRoaXMuX3BpZUNlbnRlcigpO3RoaXMuX3JlbmRlckFyZWEuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrci54KyIsIityLnkrIikiKTt2YXIgbz1NYXRoLm1pbihNYXRoLm1heCh0aGlzLndpZHRoKCktci54LHIueCksTWF0aC5tYXgodGhpcy5oZWlnaHQoKS1yLnksci55KSk7cmV0dXJuIG51bGwhPXRoaXMuaW5uZXJSYWRpdXMoKS5zY2FsZSYmdGhpcy5pbm5lclJhZGl1cygpLnNjYWxlLnJhbmdlKFswLG9dKSxudWxsIT10aGlzLm91dGVyUmFkaXVzKCkuc2NhbGUmJnRoaXMub3V0ZXJSYWRpdXMoKS5zY2FsZS5yYW5nZShbMCxvXSksdGhpc30sZS5wcm90b3R5cGUuYWRkRGF0YXNldD1mdW5jdGlvbihlKXtyZXR1cm4gdC5wcm90b3R5cGUuYWRkRGF0YXNldC5jYWxsKHRoaXMsZSksdGhpc30sZS5wcm90b3R5cGUuX2FkZERhdGFzZXQ9ZnVuY3Rpb24oZSl7aWYoMT09PXRoaXMuZGF0YXNldHMoKS5sZW5ndGgpcmV0dXJuIGxUdC5XaW5kb3cud2FybigiT25seSBvbmUgZGF0YXNldCBpcyBzdXBwb3J0ZWQgaW4gUGllIHBsb3RzIiksdGhpczt0aGlzLl91cGRhdGVQaWVBbmdsZXMoKSx0LnByb3RvdHlwZS5fYWRkRGF0YXNldC5jYWxsKHRoaXMsZSk7dmFyIG49bmV3IHVUdC5BcmNPdXRsaW5lU1ZHRHJhd2VyO3JldHVybiB0aGlzLl9pc1NldHVwJiZuLmF0dGFjaFRvKHRoaXMuX3JlbmRlckFyZWEpLHRoaXMuX3N0cm9rZURyYXdlcnMuc2V0KGUsbiksdGhpc30sZS5wcm90b3R5cGUucmVtb3ZlRGF0YXNldD1mdW5jdGlvbihlKXtyZXR1cm4gdC5wcm90b3R5cGUucmVtb3ZlRGF0YXNldC5jYWxsKHRoaXMsZSksdGhpc30sZS5wcm90b3R5cGUuX3JlbW92ZURhdGFzZXROb2Rlcz1mdW5jdGlvbihlKXt0LnByb3RvdHlwZS5fcmVtb3ZlRGF0YXNldE5vZGVzLmNhbGwodGhpcyxlKSx0aGlzLl9zdHJva2VEcmF3ZXJzLmdldChlKS5yZW1vdmUoKX0sZS5wcm90b3R5cGUuX3JlbW92ZURhdGFzZXQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHQucHJvdG90eXBlLl9yZW1vdmVEYXRhc2V0LmNhbGwodGhpcyxlKSx0aGlzLl9zdHJva2VEcmF3ZXJzLmRlbGV0ZShlKSx0aGlzLl9zdGFydEFuZ2xlcz1bXSx0aGlzLl9lbmRBbmdsZXM9W10sdGhpc30sZS5wcm90b3R5cGUuc2VsZWN0aW9ucz1mdW5jdGlvbihlKXt2YXIgbj10aGlzO3ZvaWQgMD09PWUmJihlPXRoaXMuZGF0YXNldHMoKSk7dmFyIGk9dC5wcm90b3R5cGUuc2VsZWN0aW9ucy5jYWxsKHRoaXMsZSkubm9kZXMoKTtyZXR1cm4gZS5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZT1uLl9zdHJva2VEcmF3ZXJzLmdldCh0KTtudWxsIT1lJiZpLnB1c2guYXBwbHkoaSxlLmdldFZpc3VhbFByaW1pdGl2ZXMoKSl9KSksaVR0LnNlbGVjdEFsbChpKX0sZS5wcm90b3R5cGUuX29uRGF0YXNldFVwZGF0ZT1mdW5jdGlvbigpe3QucHJvdG90eXBlLl9vbkRhdGFzZXRVcGRhdGUuY2FsbCh0aGlzKSx0aGlzLl91cGRhdGVQaWVBbmdsZXMoKSx0aGlzLnJlbmRlcigpfSxlLnByb3RvdHlwZS5fY3JlYXRlRHJhd2VyPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBoVHQuUHJveHlEcmF3ZXIoKGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBjVHQuQXJjU1ZHRHJhd2VyfSksKGZ1bmN0aW9uKCl7cmV0dXJuIGRUdC53YXJuKCJjYW52YXMgcmVuZGVyZXIgaXMgbm90IHN1cHBvcnRlZCBvbiBQaWUgUGxvdCEiKSxudWxsfSkpfSxlLnByb3RvdHlwZS5lbnRpdGllcz1mdW5jdGlvbihlKXt2YXIgbj10aGlzO3JldHVybiB2b2lkIDA9PT1lJiYoZT10aGlzLmRhdGFzZXRzKCkpLHQucHJvdG90eXBlLmVudGl0aWVzLmNhbGwodGhpcyxlKS5tYXAoKGZ1bmN0aW9uKHQpe3QucG9zaXRpb24ueCs9bi53aWR0aCgpLzIsdC5wb3NpdGlvbi55Kz1uLmhlaWdodCgpLzI7dmFyIGU9aVR0LnNlbGVjdChuLl9zdHJva2VEcmF3ZXJzLmdldCh0LmRhdGFzZXQpLmdldFZpc3VhbFByaW1pdGl2ZUF0SW5kZXgodC5pbmRleCkpLGk9dDtyZXR1cm4gaS5zdHJva2VTZWxlY3Rpb249ZSxpfSkpfSxlLnByb3RvdHlwZS5zZWN0b3JWYWx1ZT1mdW5jdGlvbih0LG4pe3JldHVybiBudWxsPT10P3RoaXMuX3Byb3BlcnR5QmluZGluZ3MuZ2V0KGUuX1NFQ1RPUl9WQUxVRV9LRVkpOih0aGlzLl9iaW5kUHJvcGVydHkoZS5fU0VDVE9SX1ZBTFVFX0tFWSx0LG4pLHRoaXMuX3VwZGF0ZVBpZUFuZ2xlcygpLHRoaXMucmVuZGVyKCksdGhpcyl9LGUucHJvdG90eXBlLmlubmVyUmFkaXVzPWZ1bmN0aW9uKHQsbil7cmV0dXJuIG51bGw9PXQ/dGhpcy5fcHJvcGVydHlCaW5kaW5ncy5nZXQoZS5fSU5ORVJfUkFESVVTX0tFWSk6KHRoaXMuX2JpbmRQcm9wZXJ0eShlLl9JTk5FUl9SQURJVVNfS0VZLHQsbiksdGhpcy5yZW5kZXIoKSx0aGlzKX0sZS5wcm90b3R5cGUub3V0ZXJSYWRpdXM9ZnVuY3Rpb24odCxuKXtyZXR1cm4gbnVsbD09dD90aGlzLl9wcm9wZXJ0eUJpbmRpbmdzLmdldChlLl9PVVRFUl9SQURJVVNfS0VZKToodGhpcy5fYmluZFByb3BlcnR5KGUuX09VVEVSX1JBRElVU19LRVksdCxuKSx0aGlzLnJlbmRlcigpLHRoaXMpfSxlLnByb3RvdHlwZS5zdGFydEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX3N0YXJ0QW5nbGU6KHRoaXMuX3N0YXJ0QW5nbGU9dCx0aGlzLl91cGRhdGVQaWVBbmdsZXMoKSx0aGlzLnJlbmRlcigpLHRoaXMpfSxlLnByb3RvdHlwZS5lbmRBbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9lbmRBbmdsZToodGhpcy5fZW5kQW5nbGU9dCx0aGlzLl91cGRhdGVQaWVBbmdsZXMoKSx0aGlzLnJlbmRlcigpLHRoaXMpfSxlLnByb3RvdHlwZS5sYWJlbHNFbmFibGVkPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX2xhYmVsc0VuYWJsZWQ6KHRoaXMuX2xhYmVsc0VuYWJsZWQ9dCx0aGlzLnJlbmRlcigpLHRoaXMpfSxlLnByb3RvdHlwZS5sYWJlbEZvcm1hdHRlcj1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9sYWJlbEZvcm1hdHRlcjoodGhpcy5fbGFiZWxGb3JtYXR0ZXI9dCx0aGlzLnJlbmRlcigpLHRoaXMpfSxlLnByb3RvdHlwZS5lbnRpdGllc0F0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMud2lkdGgoKS8yLG49dGhpcy5oZWlnaHQoKS8yLGk9dGhpcy5fc2xpY2VJbmRleEZvclBvaW50KHt4OnQueC1lLHk6dC55LW59KTtyZXR1cm4gbnVsbD09aT9bXTpbdGhpcy5lbnRpdGllcygpW2ldXX0sZS5wcm90b3R5cGUuX3Byb3BlcnR5UHJvamVjdG9ycz1mdW5jdGlvbigpe3ZhciBlPXRoaXMsbj10LnByb3RvdHlwZS5fcHJvcGVydHlQcm9qZWN0b3JzLmNhbGwodGhpcyksaT1wVHQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy5pbm5lclJhZGl1cygpKSxyPXBUdC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLm91dGVyUmFkaXVzKCkpO3JldHVybiBuLmQ9ZnVuY3Rpb24odCxuLG8pe3JldHVybiBpVHQuYXJjKCkuaW5uZXJSYWRpdXMoaSh0LG4sbykpLm91dGVyUmFkaXVzKHIodCxuLG8pKS5zdGFydEFuZ2xlKGUuX3N0YXJ0QW5nbGVzW25dKS5lbmRBbmdsZShlLl9lbmRBbmdsZXNbbl0pKHQsbil9LG59LGUucHJvdG90eXBlLl91cGRhdGVQaWVBbmdsZXM9ZnVuY3Rpb24oKXtpZihudWxsIT10aGlzLnNlY3RvclZhbHVlKCkmJjAhPT10aGlzLmRhdGFzZXRzKCkubGVuZ3RoKXt2YXIgdD1wVHQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy5zZWN0b3JWYWx1ZSgpKSxlPXRoaXMuZGF0YXNldHMoKVswXSxuPXRoaXMuX2dldERhdGFUb0RyYXcoKS5nZXQoZSksaT1pVHQucGllKCkuc29ydChudWxsKS5zdGFydEFuZ2xlKHRoaXMuX3N0YXJ0QW5nbGUpLmVuZEFuZ2xlKHRoaXMuX2VuZEFuZ2xlKS52YWx1ZSgoZnVuY3Rpb24obixpKXtyZXR1cm4gdChuLGksZSl9KSkobik7dGhpcy5fc3RhcnRBbmdsZXM9aS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnN0YXJ0QW5nbGV9KSksdGhpcy5fZW5kQW5nbGVzPWkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5lbmRBbmdsZX0pKX19LGUucHJvdG90eXBlLl9waWVDZW50ZXI9ZnVuY3Rpb24oKXt2YXIgdCxlLG4saSxyPXRoaXMuX3N0YXJ0QW5nbGU8dGhpcy5fZW5kQW5nbGU/dGhpcy5fc3RhcnRBbmdsZTp0aGlzLl9lbmRBbmdsZSxvPXRoaXMuX3N0YXJ0QW5nbGU8dGhpcy5fZW5kQW5nbGU/dGhpcy5fZW5kQW5nbGU6dGhpcy5fc3RhcnRBbmdsZSxhPU1hdGguc2luKHIpLHM9TWF0aC5jb3MociksbD1NYXRoLnNpbihvKSxjPU1hdGguY29zKG8pO3JldHVybiBhPj0wJiZsPj0wP3M+PTAmJmM+PTA/KHQ9cyxlPTAsaT0wLG49bCk6czwwJiZjPDA/KHQ9MCxlPS1jLGk9MCxuPWEpOnM+PTAmJmM8MD8odD1zLGU9LWMsaT0wLG49YSk6czwwJiZjPj0wJiYodD0xLGU9MSxpPTEsbj1NYXRoLm1heChhLGwpKTphPj0wJiZsPDA/cz49MCYmYz49MD8odD1NYXRoLm1heChzLGMpLGU9MSxpPTEsbj0xKTpzPDAmJmM8MD8odD0wLGU9MSxpPS1sLG49YSk6cz49MCYmYzwwPyh0PXMsZT0xLGk9LWwsbj0xKTpzPDAmJmM+PTAmJih0PWMsZT0xLGk9MSxuPWEpOmE8MCYmbD49MD9zPj0wJiZjPj0wPyh0PTEsZT0wLGk9LWEsbj1sKTpzPDAmJmM8MD8odD0xLGU9TWF0aC5tYXgoLXMsLWMpLGk9MSxuPTEpOnM+PTAmJmM8MD8odD0xLGU9LWMsaT0tYSxuPTEpOnM8MCYmYz49MCYmKHQ9MSxlPS1zLGk9MSxuPWwpOmE8MCYmbDwwJiYocz49MCYmYz49MD8odD1jLGU9MCxpPS1hLG49MCk6czwwJiZjPDA/KHQ9MCxlPS1zLGk9LWwsbj0wKTpzPj0wJiZjPDA/KHQ9MSxlPTEsaT1NYXRoLm1heChzLC1jKSxuPTEpOnM8MCYmYz49MCYmKHQ9YyxlPS1zLGk9MSxuPTApKSx7eDppK249PTA/MDppLyhpK24pKnRoaXMud2lkdGgoKSx5OnQrZT09MD8wOnQvKHQrZSkqdGhpcy5oZWlnaHQoKX19LGUucHJvdG90eXBlLl9nZXREYXRhVG9EcmF3PWZ1bmN0aW9uKCl7dmFyIG49dC5wcm90b3R5cGUuX2dldERhdGFUb0RyYXcuY2FsbCh0aGlzKTtpZigwPT09dGhpcy5kYXRhc2V0cygpLmxlbmd0aClyZXR1cm4gbjt2YXIgaT1wVHQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy5zZWN0b3JWYWx1ZSgpKSxyPXRoaXMuZGF0YXNldHMoKVswXSxvPW4uZ2V0KHIpLmZpbHRlcigoZnVuY3Rpb24odCxuKXtyZXR1cm4gZS5faXNWYWxpZERhdGEoaSh0LG4scikpfSkpO3JldHVybiBuLnNldChyLG8pLG59LGUuX2lzVmFsaWREYXRhPWZ1bmN0aW9uKHQpe3JldHVybiBsVHQuTWF0aC5pc1ZhbGlkTnVtYmVyKHQpJiZ0Pj0wfSxlLnByb3RvdHlwZS5fcGl4ZWxQb2ludD1mdW5jdGlvbih0LG4saSl7dmFyIHI9cFR0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMuc2VjdG9yVmFsdWUoKSk7aWYoIWUuX2lzVmFsaWREYXRhKHIodCxuLGkpKSlyZXR1cm57eDpOYU4seTpOYU59O3ZhciBvPShwVHQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy5pbm5lclJhZGl1cygpKSh0LG4saSkrcFR0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMub3V0ZXJSYWRpdXMoKSkodCxuLGkpKS8yLGE9aVR0LnBpZSgpLnNvcnQobnVsbCkudmFsdWUoKGZ1bmN0aW9uKHQsbil7dmFyIG89cih0LG4saSk7cmV0dXJuIGUuX2lzVmFsaWREYXRhKG8pP286MH0pKS5zdGFydEFuZ2xlKHRoaXMuX3N0YXJ0QW5nbGUpLmVuZEFuZ2xlKHRoaXMuX2VuZEFuZ2xlKShpLmRhdGEoKSkscz0oYVtuXS5zdGFydEFuZ2xlK2Fbbl0uZW5kQW5nbGUpLzI7cmV0dXJue3g6bypNYXRoLnNpbihzKSx5Oi1vKk1hdGguY29zKHMpfX0sZS5wcm90b3R5cGUuX2FkZGl0aW9uYWxQYWludD1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3RoaXMuX3JlbmRlckFyZWEuc2VsZWN0KCIubGFiZWwtYXJlYSIpLnJlbW92ZSgpLHRoaXMuX2xhYmVsc0VuYWJsZWQmJmxUdC5XaW5kb3cuc2V0VGltZW91dCgoZnVuY3Rpb24oKXtyZXR1cm4gZS5fZHJhd0xhYmVscygpfSksdCk7dmFyIG49dGhpcy5fZ2VuZXJhdGVTdHJva2VEcmF3U3RlcHMoKSxpPXRoaXMuX2dldERhdGFUb0RyYXcoKTt0aGlzLmRhdGFzZXRzKCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIHI9cFR0LlBsb3QuYXBwbHlEcmF3U3RlcHMobix0KTtlLl9zdHJva2VEcmF3ZXJzLmdldCh0KS5kcmF3KGkuZ2V0KHQpLHIpfSkpfSxlLnByb3RvdHlwZS5fZ2VuZXJhdGVTdHJva2VEcmF3U3RlcHM9ZnVuY3Rpb24oKXtyZXR1cm5be2F0dHJUb1Byb2plY3Rvcjp0aGlzLl9nZXRBdHRyVG9Qcm9qZWN0b3IoKSxhbmltYXRvcjpuZXcgb1R0Lk51bGx9XX0sZS5wcm90b3R5cGUuX3NsaWNlSW5kZXhGb3JQb2ludD1mdW5jdGlvbih0KXt2YXIgZSxuPU1hdGguc3FydChNYXRoLnBvdyh0LngsMikrTWF0aC5wb3codC55LDIpKSxpPU1hdGguYWNvcygtdC55L24pO3QueDwwJiYoaT0yKk1hdGguUEktaSk7Zm9yKHZhciByPTA7cjx0aGlzLl9zdGFydEFuZ2xlcy5sZW5ndGg7cisrKWlmKHRoaXMuX3N0YXJ0QW5nbGVzW3JdPGkmJnRoaXMuX2VuZEFuZ2xlc1tyXT5pKXtlPXI7YnJlYWt9aWYodm9pZCAwIT09ZSl7dmFyIG89dGhpcy5kYXRhc2V0cygpWzBdLGE9by5kYXRhKClbZV0scz10aGlzLmlubmVyUmFkaXVzKCkuYWNjZXNzb3IoYSxlLG8pLGw9dGhpcy5vdXRlclJhZGl1cygpLmFjY2Vzc29yKGEsZSxvKTtpZihuPnMmJm48bClyZXR1cm4gZX1yZXR1cm4gbnVsbH0sZS5wcm90b3R5cGUuX2RyYXdMYWJlbHM9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcyxlPXRoaXMuX2dldEF0dHJUb1Byb2plY3RvcigpLG49dGhpcy5fcmVuZGVyQXJlYS5hcHBlbmQoImciKS5jbGFzc2VkKCJsYWJlbC1hcmVhIiwhMCksaT1uZXcgclR0LlN2Z0NvbnRleHQobi5ub2RlKCkpLHI9bmV3IHJUdC5DYWNoZU1lYXN1cmVyKGkpLG89bmV3IHJUdC5Xcml0ZXIocixpKSxhPXRoaXMuZGF0YXNldHMoKVswXSxzPXRoaXMuX2dldERhdGFUb0RyYXcoKS5nZXQoYSksbD1zLmxlbmd0aCxjPWZ1bmN0aW9uKGkpe3ZhciBsPXNbaV0sYz11LnNlY3RvclZhbHVlKCkuYWNjZXNzb3IobCxpLGEpO2lmKCFsVHQuTWF0aC5pc1ZhbGlkTnVtYmVyKGMpKXJldHVybiJjb250aW51ZSI7Yz11Ll9sYWJlbEZvcm1hdHRlcihjLGwsaSxhKTt2YXIgaD1yLm1lYXN1cmUoYyksZD0odS5fZW5kQW5nbGVzW2ldK3UuX3N0YXJ0QW5nbGVzW2ldKS8yLHA9dS5vdXRlclJhZGl1cygpLmFjY2Vzc29yKGwsaSxhKTt1Lm91dGVyUmFkaXVzKCkuc2NhbGUmJihwPXUub3V0ZXJSYWRpdXMoKS5zY2FsZS5zY2FsZShwKSk7dmFyIGY9dS5pbm5lclJhZGl1cygpLmFjY2Vzc29yKGwsaSxhKTt1LmlubmVyUmFkaXVzKCkuc2NhbGUmJihmPXUuaW5uZXJSYWRpdXMoKS5zY2FsZS5zY2FsZShmKSk7dmFyIG09KHArZikvMixnPU1hdGguc2luKGQpKm0taC53aWR0aC8yLF89LU1hdGguY29zKGQpKm0taC5oZWlnaHQvMix5PVt7eDpnLHk6X30se3g6Zyx5Ol8raC5oZWlnaHR9LHt4OmcraC53aWR0aCx5Ol99LHt4OmcraC53aWR0aCx5Ol8raC5oZWlnaHR9XSx2PXkuZXZlcnkoKGZ1bmN0aW9uKGUpe3JldHVybiBNYXRoLmFicyhlLngpPD10LndpZHRoKCkvMiYmTWF0aC5hYnMoZS55KTw9dC5oZWlnaHQoKS8yfSkpO3YmJih2PXkubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gdC5fc2xpY2VJbmRleEZvclBvaW50KGUpfSkpLmV2ZXJ5KChmdW5jdGlvbih0KXtyZXR1cm4gdD09PWl9KSkpO3ZhciBiPWUuZmlsbChsLGksYSkseD0xLjYqbFR0LkNvbG9yLmNvbnRyYXN0KCJ3aGl0ZSIsYik8bFR0LkNvbG9yLmNvbnRyYXN0KCJibGFjayIsYiksdz1uLmFwcGVuZCgiZyIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK2crIiwiK18rIikiKTt3LmNsYXNzZWQoeD8iZGFyay1sYWJlbCI6ImxpZ2h0LWxhYmVsIiwhMCksdy5zdHlsZSgidmlzaWJpbGl0eSIsdj8iaW5oZXJpdCI6ImhpZGRlbiIpLG8ud3JpdGUoYyxoLndpZHRoLGguaGVpZ2h0LHt4QWxpZ246ImNlbnRlciIseUFsaWduOiJjZW50ZXIifSx3Lm5vZGUoKSl9LHU9dGhpcyxoPTA7aDxsO2grKyljKGgpfSxlLl9JTk5FUl9SQURJVVNfS0VZPSJpbm5lci1yYWRpdXMiLGUuX09VVEVSX1JBRElVU19LRVk9Im91dGVyLXJhZGl1cyIsZS5fU0VDVE9SX1ZBTFVFX0tFWT0ic2VjdG9yLXZhbHVlIixlfSkocFR0LlBsb3QpO2VUdC5QaWU9ZlR0O3ZhciBtVHQ9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovT2JqZWN0LmRlZmluZVByb3BlcnR5KG1UdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGdUdD1CTyxfVHQ9d3B0LHlUdD1MZ3QsdlR0PWZndCxiVHQ9UE10LHhUdD1HU3Qsd1R0PVpNdCxTVHQ9WHZ0LE1UdD1EX3QsRVR0PXNTdCxUVHQ9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt2YXIgZT10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIGUuX2xhYmVsc0VuYWJsZWQ9ITEsZS5fbGFiZWw9bnVsbCxlLmFuaW1hdG9yKCJyZWN0YW5nbGVzIixuZXcgdlR0Lk51bGwpLGUuYWRkQ2xhc3MoInJlY3RhbmdsZS1wbG90IiksZS5hdHRyKCJmaWxsIiwobmV3IFNUdC5Db2xvcikucmFuZ2UoKVswXSksZX1yZXR1cm4gZ1R0Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLl9jcmVhdGVEcmF3ZXI9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHhUdC5Qcm94eURyYXdlcigoZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHdUdC5SZWN0YW5nbGVTVkdEcmF3ZXJ9KSwoZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBiVHQuUmVjdGFuZ2xlQ2FudmFzRHJhd2VyKHQpfSkpfSxlLnByb3RvdHlwZS5fZ2VuZXJhdGVBdHRyVG9Qcm9qZWN0b3I9ZnVuY3Rpb24oKXt2YXIgbj10aGlzLGk9dC5wcm90b3R5cGUuX2dlbmVyYXRlQXR0clRvUHJvamVjdG9yLmNhbGwodGhpcykscj1FVHQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy54KCkpLG89aVtlLl9YMl9LRVldLGE9RVR0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueSgpKSxzPWlbZS5fWTJfS0VZXSxsPXRoaXMueCgpLnNjYWxlLGM9dGhpcy55KCkuc2NhbGU7cmV0dXJuIG51bGwhPW8/KGkud2lkdGg9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBNYXRoLmFicyhvKHQsZSxuKS1yKHQsZSxuKSl9LGkueD1mdW5jdGlvbih0LGUsbil7cmV0dXJuIE1hdGgubWluKG8odCxlLG4pLHIodCxlLG4pKX0pOihpLndpZHRoPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gbi5fcmVjdGFuZ2xlV2lkdGgobCl9LGkueD1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHIodCxlLG4pLS41Kmkud2lkdGgodCxlLG4pfSksbnVsbCE9cz8oaS5oZWlnaHQ9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBNYXRoLmFicyhzKHQsZSxuKS1hKHQsZSxuKSl9LGkueT1mdW5jdGlvbih0LGUsbil7cmV0dXJuIE1hdGgubWF4KHModCxlLG4pLGEodCxlLG4pKS1pLmhlaWdodCh0LGUsbil9KTooaS5oZWlnaHQ9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBuLl9yZWN0YW5nbGVXaWR0aChjKX0saS55PWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gYSh0LGUsbiktLjUqaS5oZWlnaHQodCxlLG4pfSksZGVsZXRlIGlbZS5fWDJfS0VZXSxkZWxldGUgaVtlLl9ZMl9LRVldLGl9LGUucHJvdG90eXBlLl9nZW5lcmF0ZURyYXdTdGVwcz1mdW5jdGlvbigpe3JldHVyblt7YXR0clRvUHJvamVjdG9yOnRoaXMuX2dldEF0dHJUb1Byb2plY3RvcigpLGFuaW1hdG9yOnRoaXMuX2dldEFuaW1hdG9yKCJyZWN0YW5nbGVzIil9XX0sZS5wcm90b3R5cGUuX2ZpbHRlckZvclByb3BlcnR5PWZ1bmN0aW9uKGUpe3JldHVybiB0LnByb3RvdHlwZS5fZmlsdGVyRm9yUHJvcGVydHkuY2FsbCh0aGlzLCJ4MiI9PT1lPyJ4IjoieTIiPT09ZT8ieSI6ZSl9LGUucHJvdG90eXBlLng9ZnVuY3Rpb24obixpLHIpe2lmKG51bGw9PW4pcmV0dXJuIHQucHJvdG90eXBlLnguY2FsbCh0aGlzKTtpZihudWxsPT1pP3QucHJvdG90eXBlLnguY2FsbCh0aGlzLG4pOnQucHJvdG90eXBlLnguY2FsbCh0aGlzLG4saSxyKSxudWxsIT1pKXt2YXIgbz10aGlzLngyKCksYT1vJiZvLmFjY2Vzc29yO251bGwhPWEmJnRoaXMuX2JpbmRQcm9wZXJ0eShlLl9YMl9LRVksYSxpLG8ucG9zdFNjYWxlKX1yZXR1cm4gaSBpbnN0YW5jZW9mIFNUdC5DYXRlZ29yeSYmaS5pbm5lclBhZGRpbmcoMCkub3V0ZXJQYWRkaW5nKDApLHRoaXN9LGUucHJvdG90eXBlLngyPWZ1bmN0aW9uKHQsbil7aWYobnVsbD09dClyZXR1cm4gdGhpcy5fcHJvcGVydHlCaW5kaW5ncy5nZXQoZS5fWDJfS0VZKTt2YXIgaT10aGlzLngoKTtyZXR1cm4gdGhpcy5fYmluZFByb3BlcnR5KGUuX1gyX0tFWSx0LGkmJmkuc2NhbGUsbiksdGhpcy5yZW5kZXIoKSx0aGlzfSxlLnByb3RvdHlwZS55PWZ1bmN0aW9uKG4saSxyKXtpZihudWxsPT1uKXJldHVybiB0LnByb3RvdHlwZS55LmNhbGwodGhpcyk7aWYobnVsbD09aT90LnByb3RvdHlwZS55LmNhbGwodGhpcyxuKTp0LnByb3RvdHlwZS55LmNhbGwodGhpcyxuLGksciksbnVsbCE9aSl7dmFyIG89dGhpcy55MigpLGE9byYmby5hY2Nlc3NvcjtudWxsIT1hJiZ0aGlzLl9iaW5kUHJvcGVydHkoZS5fWTJfS0VZLGEsaSxvLnBvc3RTY2FsZSl9cmV0dXJuIGkgaW5zdGFuY2VvZiBTVHQuQ2F0ZWdvcnkmJmkuaW5uZXJQYWRkaW5nKDApLm91dGVyUGFkZGluZygwKSx0aGlzfSxlLnByb3RvdHlwZS55Mj1mdW5jdGlvbih0LG4pe2lmKG51bGw9PXQpcmV0dXJuIHRoaXMuX3Byb3BlcnR5QmluZGluZ3MuZ2V0KGUuX1kyX0tFWSk7dmFyIGk9dGhpcy55KCk7cmV0dXJuIHRoaXMuX2JpbmRQcm9wZXJ0eShlLl9ZMl9LRVksdCxpJiZpLnNjYWxlLG4pLHRoaXMucmVuZGVyKCksdGhpc30sZS5wcm90b3R5cGUuZW50aXRpZXNBdD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9nZXRBdHRyVG9Qcm9qZWN0b3IoKTtyZXR1cm4gdGhpcy5lbnRpdGllcygpLmZpbHRlcigoZnVuY3Rpb24obil7dmFyIGk9bi5kYXR1bSxyPW4uaW5kZXgsbz1uLmRhdGFzZXQsYT1lLngoaSxyLG8pLHM9ZS55KGkscixvKSxsPWUud2lkdGgoaSxyLG8pLGM9ZS5oZWlnaHQoaSxyLG8pO3JldHVybiBhPD10LngmJnQueDw9YStsJiZzPD10LnkmJnQueTw9cytjfSkpfSxlLnByb3RvdHlwZS5fZW50aXR5Qm91bmRzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9lbnRpdHlCQm94KHQuZGF0dW0sdC5pbmRleCx0LmRhdGFzZXQsdGhpcy5fZ2V0QXR0clRvUHJvamVjdG9yKCkpfSxlLnByb3RvdHlwZS5fZW50aXR5QkJveD1mdW5jdGlvbih0LGUsbixpKXtyZXR1cm57eDppLngodCxlLG4pLHk6aS55KHQsZSxuKSx3aWR0aDppLndpZHRoKHQsZSxuKSxoZWlnaHQ6aS5oZWlnaHQodCxlLG4pfX0sZS5wcm90b3R5cGUubGFiZWw9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fbGFiZWw6KHRoaXMuX2xhYmVsPXQsdGhpcy5yZW5kZXIoKSx0aGlzKX0sZS5wcm90b3R5cGUubGFiZWxzRW5hYmxlZD1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9sYWJlbHNFbmFibGVkOih0aGlzLl9sYWJlbHNFbmFibGVkPXQsdGhpcy5yZW5kZXIoKSx0aGlzKX0sZS5wcm90b3R5cGUuX3Byb3BlcnR5UHJvamVjdG9ycz1mdW5jdGlvbigpe3ZhciBlPXQucHJvdG90eXBlLl9wcm9wZXJ0eVByb2plY3RvcnMuY2FsbCh0aGlzKTtyZXR1cm4gbnVsbCE9dGhpcy54MigpJiYoZS54Mj1FVHQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy54MigpKSksbnVsbCE9dGhpcy55MigpJiYoZS55Mj1FVHQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy55MigpKSksZX0sZS5wcm90b3R5cGUuX3BpeGVsUG9pbnQ9ZnVuY3Rpb24odCxlLG4pe3ZhciBpPXRoaXMuX2dldEF0dHJUb1Byb2plY3RvcigpLHI9aS54KHQsZSxuKSxvPWkueSh0LGUsbik7cmV0dXJue3g6citpLndpZHRoKHQsZSxuKS8yLHk6bytpLmhlaWdodCh0LGUsbikvMn19LGUucHJvdG90eXBlLl9yZWN0YW5nbGVXaWR0aD1mdW5jdGlvbih0KXtpZih0IGluc3RhbmNlb2YgU1R0LkNhdGVnb3J5KXJldHVybiB0LnJhbmdlQmFuZCgpO3ZhciBlPXQ9PT10aGlzLngoKS5zY2FsZT90aGlzLngoKS5hY2Nlc3Nvcjp0aGlzLnkoKS5hY2Nlc3NvcixuPV9UdC5zZXQoTVR0LkFycmF5LmZsYXR0ZW4odGhpcy5kYXRhc2V0cygpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuZGF0YSgpLm1hcCgoZnVuY3Rpb24obixpKXtyZXR1cm4gZShuLGksdCkudmFsdWVPZigpfSkpfSkpKSkudmFsdWVzKCkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4rdH0pKSxpPU1UdC5NYXRoLm1pbihuLDApLHI9TVR0Lk1hdGgubWF4KG4sMCksbz10LnNjYWxlKGkpO3JldHVybih0LnNjYWxlKHIpLW8pL01hdGguYWJzKHItaSl9LGUucHJvdG90eXBlLl9nZXREYXRhVG9EcmF3PWZ1bmN0aW9uKCl7dmFyIHQ9bmV3IE1UdC5NYXAsZT10aGlzLl9nZXRBdHRyVG9Qcm9qZWN0b3IoKTtyZXR1cm4gdGhpcy5kYXRhc2V0cygpLmZvckVhY2goKGZ1bmN0aW9uKG4pe3ZhciBpPW4uZGF0YSgpLm1hcCgoZnVuY3Rpb24odCxpKXtyZXR1cm4gTVR0Lk1hdGguaXNWYWxpZE51bWJlcihlLngodCxpLG4pKSYmTVR0Lk1hdGguaXNWYWxpZE51bWJlcihlLnkodCxpLG4pKSYmTVR0Lk1hdGguaXNWYWxpZE51bWJlcihlLndpZHRoKHQsaSxuKSkmJk1UdC5NYXRoLmlzVmFsaWROdW1iZXIoZS5oZWlnaHQodCxpLG4pKT90Om51bGx9KSk7dC5zZXQobixpKX0pKSx0fSxlLnByb3RvdHlwZS5fYWRkaXRpb25hbFBhaW50PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7dGhpcy5fcmVuZGVyQXJlYS5zZWxlY3RBbGwoIi5sYWJlbC1hcmVhIikucmVtb3ZlKCksdGhpcy5fbGFiZWxzRW5hYmxlZCYmbnVsbCE9dGhpcy5sYWJlbCgpJiZNVHQuV2luZG93LnNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7cmV0dXJuIGUuX2RyYXdMYWJlbHMoKX0pLHQpfSxlLnByb3RvdHlwZS5fZHJhd0xhYmVscz1mdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLl9nZXREYXRhVG9EcmF3KCk7dGhpcy5kYXRhc2V0cygpLmZvckVhY2goKGZ1bmN0aW9uKG4saSl7cmV0dXJuIHQuX2RyYXdMYWJlbChlLG4saSl9KSl9LGUucHJvdG90eXBlLl9kcmF3TGFiZWw9ZnVuY3Rpb24odCxlLG4pe2Zvcih2YXIgaT10aGlzLl9nZXRBdHRyVG9Qcm9qZWN0b3IoKSxyPXRoaXMuX3JlbmRlckFyZWEuYXBwZW5kKCJnIikuY2xhc3NlZCgibGFiZWwtYXJlYSIsITApLG89bmV3IHlUdC5TdmdDb250ZXh0KHIubm9kZSgpKSxhPW5ldyB5VHQuQ2FjaGVNZWFzdXJlcihvKSxzPW5ldyB5VHQuV3JpdGVyKGEsbyksbD10aGlzLngoKS5zY2FsZS5yYW5nZSgpLGM9dGhpcy55KCkuc2NhbGUucmFuZ2UoKSx1PU1hdGgubWluLmFwcGx5KG51bGwsbCksaD1NYXRoLm1heC5hcHBseShudWxsLGwpLGQ9TWF0aC5taW4uYXBwbHkobnVsbCxjKSxwPU1hdGgubWF4LmFwcGx5KG51bGwsYyksZj10LmdldChlKSxtPWYubGVuZ3RoLGc9MDtnPG07ZysrKXt2YXIgXz1mW2ddO2lmKG51bGwhPV8pe3ZhciB5PSIiK3RoaXMubGFiZWwoKShfLGcsZSksdj1hLm1lYXN1cmUoeSksYj1pLngoXyxnLGUpLHg9aS55KF8sZyxlKSx3PWkud2lkdGgoXyxnLGUpLFM9aS5oZWlnaHQoXyxnLGUpO2lmKHYuaGVpZ2h0PD1TJiZ2LndpZHRoPD13KXt2YXIgTT17bWluOmIrPSh3LXYud2lkdGgpLzIsbWF4OmIrdi53aWR0aH0sRT17bWluOngrPShTLXYuaGVpZ2h0KS8yLG1heDp4K3YuaGVpZ2h0fTtpZihNLm1pbjx1fHxNLm1heD5ofHxFLm1pbjxkfHxFLm1heD5wKWNvbnRpbnVlO2lmKHRoaXMuX292ZXJsYXlMYWJlbChNLEUsZyxuLHQpKWNvbnRpbnVlO3ZhciBUPWkuZmlsbChfLGcsZSksQz0xLjYqTVR0LkNvbG9yLmNvbnRyYXN0KCJ3aGl0ZSIsVCk8TVR0LkNvbG9yLmNvbnRyYXN0KCJibGFjayIsVCksQT1yLmFwcGVuZCgiZyIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK2IrIiwiK3grIikiKTtBLmNsYXNzZWQoQz8iZGFyay1sYWJlbCI6ImxpZ2h0LWxhYmVsIiwhMCkscy53cml0ZSh5LHYud2lkdGgsdi5oZWlnaHQse3hBbGlnbjoiY2VudGVyIix5QWxpZ246ImNlbnRlciJ9LEEubm9kZSgpKX19fX0sZS5wcm90b3R5cGUuX292ZXJsYXlMYWJlbD1mdW5jdGlvbih0LGUsbixpLHIpe2Zvcih2YXIgbz10aGlzLl9nZXRBdHRyVG9Qcm9qZWN0b3IoKSxhPXRoaXMuZGF0YXNldHMoKSxzPWk7czxhLmxlbmd0aDtzKyspZm9yKHZhciBsPWFbc10sYz1yLmdldChsKSx1PWMubGVuZ3RoLGg9cz09PWk/bisxOjA7aDx1O2grKylpZihNVHQuRE9NLmludGVyc2VjdHNCQm94KHQsZSx0aGlzLl9lbnRpdHlCQm94KGNbaF0saCxsLG8pKSlyZXR1cm4hMDtyZXR1cm4hMX0sZS5fWDJfS0VZPSJ4MiIsZS5fWTJfS0VZPSJ5MiIsZX0pKG1FdC5YWVBsb3QpO21UdC5SZWN0YW5nbGU9VFR0O3ZhciBDVHQ9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovT2JqZWN0LmRlZmluZVByb3BlcnR5KENUdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIEFUdD1CTyxrVHQ9TGd0LExUdD1wdnQsUFR0PUh3dCxOVHQ9R1N0LElUdD1lRXQsUlR0PWZndCxPVHQ9UE10LHpUdD1YdnQsRFR0PURfdCxCVHQ9ZEV0LEhUdD1zU3QsRlR0PShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7dmFyIGU9dC5jYWxsKHRoaXMpfHx0aGlzO2UuX2xhYmVsRm9ybWF0dGVyPUxUdC5pZGVudGl0eSgpLGUuX2xhYmVsc0VuYWJsZWQ9ITEsZS5hZGRDbGFzcygic2NhdHRlci1wbG90Iik7dmFyIG49bmV3IFJUdC5FYXNpbmc7bi5zdGFydERlbGF5KDUpLG4uc3RlcER1cmF0aW9uKDI1MCksbi5tYXhUb3RhbER1cmF0aW9uKEhUdC5QbG90Ll9BTklNQVRJT05fTUFYX0RVUkFUSU9OKSxlLmFuaW1hdG9yKEJUdC5BbmltYXRvci5NQUlOLG4pLGUuYXR0cigib3BhY2l0eSIsLjYpLGUuYXR0cigiZmlsbCIsKG5ldyB6VHQuQ29sb3IpLnJhbmdlKClbMF0pLGUuc2l6ZSg2KTt2YXIgaT1QVHQuY2lyY2xlKCk7cmV0dXJuIGUuc3ltYm9sKChmdW5jdGlvbigpe3JldHVybiBpfSkpLGUuX2xhYmVsQ29uZmlnPW5ldyBEVHQuTWFwLGV9cmV0dXJuIEFUdC5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5fYnVpbGRMaWdodHdlaWdodFBsb3RFbnRpdGllcz1mdW5jdGlvbihlKXt2YXIgbj10aGlzO3JldHVybiB0LnByb3RvdHlwZS5fYnVpbGRMaWdodHdlaWdodFBsb3RFbnRpdGllcy5jYWxsKHRoaXMsZSkubWFwKChmdW5jdGlvbih0KXt2YXIgZT1IVHQuUGxvdC5fc2NhbGVkQWNjZXNzb3Iobi5zaXplKCkpKHQuZGF0dW0sdC5pbmRleCx0LmRhdGFzZXQpO3JldHVybiB0LmRpYW1ldGVyPWUsdH0pKX0sZS5wcm90b3R5cGUuX2NyZWF0ZURyYXdlcj1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3JldHVybiBuZXcgTlR0LlByb3h5RHJhd2VyKChmdW5jdGlvbigpe3JldHVybiBuZXcgSVR0LlN5bWJvbFNWR0RyYXdlcn0pLChmdW5jdGlvbihuKXtyZXR1cm4gbmV3IE9UdC5DYW52YXNEcmF3ZXIobixJVHQubWFrZVN5bWJvbENhbnZhc0RyYXdTdGVwKHQsKGZ1bmN0aW9uKCl7cmV0dXJuIEhUdC5QbG90Ll9zY2FsZWRBY2Nlc3NvcihlLnN5bWJvbCgpKX0pLChmdW5jdGlvbigpe3JldHVybiBIVHQuUGxvdC5fc2NhbGVkQWNjZXNzb3IoZS5zaXplKCkpfSkpKX0pKX0sZS5wcm90b3R5cGUuc2l6ZT1mdW5jdGlvbih0LG4pe3JldHVybiBudWxsPT10P3RoaXMuX3Byb3BlcnR5QmluZGluZ3MuZ2V0KGUuX1NJWkVfS0VZKToodGhpcy5fYmluZFByb3BlcnR5KGUuX1NJWkVfS0VZLHQsbiksdGhpcy5yZW5kZXIoKSx0aGlzKX0sZS5wcm90b3R5cGUuc3ltYm9sPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX3Byb3BlcnR5QmluZGluZ3MuZ2V0KGUuX1NZTUJPTF9LRVkpOih0aGlzLl9wcm9wZXJ0eUJpbmRpbmdzLnNldChlLl9TWU1CT0xfS0VZLHthY2Nlc3Nvcjp0fSksdGhpcy5yZW5kZXIoKSx0aGlzKX0sZS5wcm90b3R5cGUuX2dlbmVyYXRlRHJhd1N0ZXBzPWZ1bmN0aW9uKCl7dmFyIHQ9W107aWYodGhpcy5fYW5pbWF0ZU9uTmV4dFJlbmRlcigpKXt2YXIgZT10aGlzLl9nZXRBdHRyVG9Qcm9qZWN0b3IoKSxuPUhUdC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnN5bWJvbCgpKTtlLmQ9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBuKHQsZSxpKSgwKShudWxsKX0sdC5wdXNoKHthdHRyVG9Qcm9qZWN0b3I6ZSxhbmltYXRvcjp0aGlzLl9nZXRBbmltYXRvcihCVHQuQW5pbWF0b3IuUkVTRVQpfSl9cmV0dXJuIHQucHVzaCh7YXR0clRvUHJvamVjdG9yOnRoaXMuX2dldEF0dHJUb1Byb2plY3RvcigpLGFuaW1hdG9yOnRoaXMuX2dldEFuaW1hdG9yKEJUdC5BbmltYXRvci5NQUlOKX0pLHR9LGUucHJvdG90eXBlLl9wcm9wZXJ0eVByb2plY3RvcnM9ZnVuY3Rpb24oKXt2YXIgZT10LnByb3RvdHlwZS5fcHJvcGVydHlQcm9qZWN0b3JzLmNhbGwodGhpcyksbj1IVHQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy54KCkpLGk9SFR0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueSgpKTtyZXR1cm4gZS54PW4sZS55PWksZS50cmFuc2Zvcm09ZnVuY3Rpb24odCxlLHIpe3JldHVybiJ0cmFuc2xhdGUoIituKHQsZSxyKSsiLCIraSh0LGUscikrIikifSxlLmQ9dGhpcy5fY29uc3RydWN0U3ltYm9sR2VuZXJhdG9yKCksZX0sZS5wcm90b3R5cGUuX2NvbnN0cnVjdFN5bWJvbEdlbmVyYXRvcj1mdW5jdGlvbigpe3ZhciB0PUhUdC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnN5bWJvbCgpKSxlPUhUdC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnNpemUoKSk7cmV0dXJuIGZ1bmN0aW9uKG4saSxyKXtyZXR1cm4gdChuLGkscikoZShuLGkscikpKG51bGwpfX0sZS5wcm90b3R5cGUuX2VudGl0eUJvdW5kcz1mdW5jdGlvbih0KXtyZXR1cm57eDp0LnBvc2l0aW9uLngtdC5kaWFtZXRlci8yLHk6dC5wb3NpdGlvbi55LXQuZGlhbWV0ZXIvMix3aWR0aDp0LmRpYW1ldGVyLGhlaWdodDp0LmRpYW1ldGVyfX0sZS5wcm90b3R5cGUuX2VudGl0eVZpc2libGVPblBsb3Q9ZnVuY3Rpb24odCxlKXt2YXIgbj17bWluOmUudG9wTGVmdC54LG1heDplLmJvdHRvbVJpZ2h0Lnh9LGk9e21pbjplLnRvcExlZnQueSxtYXg6ZS5ib3R0b21SaWdodC55fSxyPXRoaXMuX2VudGl0eUJvdW5kcyh0KTtyZXR1cm4gRFR0LkRPTS5pbnRlcnNlY3RzQkJveChuLGkscil9LGUucHJvdG90eXBlLmVudGl0aWVzQXQ9ZnVuY3Rpb24odCl7dmFyIGU9SFR0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueCgpKSxuPUhUdC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnkoKSksaT1IVHQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy5zaXplKCkpO3JldHVybiB0aGlzLmVudGl0aWVzKCkuZmlsdGVyKChmdW5jdGlvbihyKXt2YXIgbz1yLmRhdHVtLGE9ci5pbmRleCxzPXIuZGF0YXNldCxsPWUobyxhLHMpLGM9bihvLGEscyksdT1pKG8sYSxzKTtyZXR1cm4gbC11LzI8PXQueCYmdC54PD1sK3UvMiYmYy11LzI8PXQueSYmdC55PD1jK3UvMn0pKX0sZS5wcm90b3R5cGUubGFiZWxzRW5hYmxlZD1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9sYWJlbHNFbmFibGVkOih0aGlzLl9sYWJlbHNFbmFibGVkPXQsdGhpcy5fY2xlYXJBdHRyVG9Qcm9qZWN0b3JDYWNoZSgpLHRoaXMucmVuZGVyKCksdGhpcyl9LGUucHJvdG90eXBlLl9jcmVhdGVOb2Rlc0ZvckRhdGFzZXQ9ZnVuY3Rpb24obil7dmFyIGk9dC5wcm90b3R5cGUuX2NyZWF0ZU5vZGVzRm9yRGF0YXNldC5jYWxsKHRoaXMsbikscj10aGlzLl9yZW5kZXJBcmVhLmFwcGVuZCgiZyIpLmNsYXNzZWQoZS5fTEFCRUxfQVJFQV9DTEFTUywhMCksbz1uZXcga1R0LlN2Z0NvbnRleHQoci5ub2RlKCkpLGE9bmV3IGtUdC5DYWNoZU1lYXN1cmVyKG8pLHM9bmV3IGtUdC5Xcml0ZXIoYSxvKTtyZXR1cm4gdGhpcy5fbGFiZWxDb25maWcuc2V0KG4se2xhYmVsQXJlYTpyLG1lYXN1cmVyOmEsd3JpdGVyOnN9KSxpfSxlLnByb3RvdHlwZS5fcmVtb3ZlRGF0YXNldE5vZGVzPWZ1bmN0aW9uKGUpe3QucHJvdG90eXBlLl9yZW1vdmVEYXRhc2V0Tm9kZXMuY2FsbCh0aGlzLGUpO3ZhciBuPXRoaXMuX2xhYmVsQ29uZmlnLmdldChlKTtudWxsIT1uJiYobi5sYWJlbEFyZWEucmVtb3ZlKCksdGhpcy5fbGFiZWxDb25maWcuZGVsZXRlKGUpKX0sZS5wcm90b3R5cGUuX2FkZGl0aW9uYWxQYWludD1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3RoaXMuZGF0YXNldHMoKS5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gZS5fbGFiZWxDb25maWcuZ2V0KHQpLmxhYmVsQXJlYS5zZWxlY3RBbGwoImciKS5yZW1vdmUoKX0pKSx0aGlzLl9sYWJlbHNFbmFibGVkJiZEVHQuV2luZG93LnNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7cmV0dXJuIGUuX2RyYXdMYWJlbHMoKX0pLHQpfSxlLnByb3RvdHlwZS5fZHJhd0xhYmVscz1mdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLl9nZXREYXRhVG9EcmF3KCksbj10aGlzLl9nZXRBdHRyVG9Qcm9qZWN0b3IoKTt0aGlzLmRhdGFzZXRzKCkuZm9yRWFjaCgoZnVuY3Rpb24oaSl7Zm9yKHZhciByPWUuZ2V0KGkpLG89ci5sZW5ndGgsYT0wO2E8bzthKyspe3ZhciBzPXJbYV07bnVsbCE9cyYmdC5fZHJhd0xhYmVsKHMsYSxpLG4pfX0pKX0sZS5wcm90b3R5cGUuX2RyYXdMYWJlbD1mdW5jdGlvbih0LGUsbixpKXtpZihudWxsIT10LmxhYmVsKXt2YXIgcj10aGlzLl9sYWJlbENvbmZpZy5nZXQobiksbz1yLmxhYmVsQXJlYSxhPXIubWVhc3VyZXIscz1yLndyaXRlcixsPXt4OmkueCh0LGUsbikseTppLnkodCxlLG4pfSxjPUhUdC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnNpemUoKSkodCxlLG4pLHU9dGhpcy5fbGFiZWxGb3JtYXR0ZXIodC5sYWJlbCx0LGUsbiksaD1hLm1lYXN1cmUodSksZD10aGlzLl9jYWxjdWxhdGVMYWJlbFByb3BlcnRpZXMobCxjLGgpLHA9ZC5jb250YWluZXJEaW1lbnNpb25zLGY9ZC5hbGlnbm1lbnQsbT10aGlzLl9jcmVhdGVMYWJlbENvbnRhaW5lcihvLGQubGFiZWxDb250YWluZXJPcmlnaW4sZC5sYWJlbE9yaWdpbixoKTtzLndyaXRlKHUscC53aWR0aCxwLmhlaWdodCx7eEFsaWduOmYueCx5QWxpZ246Zi55fSxtLm5vZGUoKSl9fSxlLnByb3RvdHlwZS5fY2FsY3VsYXRlTGFiZWxQcm9wZXJ0aWVzPWZ1bmN0aW9uKHQsbixpKXtyZXR1cm57Y29udGFpbmVyRGltZW5zaW9uczp7d2lkdGg6aS53aWR0aCxoZWlnaHQ6aS5oZWlnaHR9LGxhYmVsQ29udGFpbmVyT3JpZ2luOnt4OnQueC1pLndpZHRoLzIseTp0LnktaS5oZWlnaHQvMisobjxpLmhlaWdodD9uLzIrZS5fTEFCRUxfTUFSR0lOX0ZST01fQlVCQkxFOjApfSxsYWJlbE9yaWdpbjp7eDp0LngseTp0Lnl9LGFsaWdubWVudDp7eDoiY2VudGVyIix5OiJjZW50ZXIifX19LGUucHJvdG90eXBlLl9jcmVhdGVMYWJlbENvbnRhaW5lcj1mdW5jdGlvbih0LGUsbixpKXt2YXIgcj10LmFwcGVuZCgiZyIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK2UueCsiLCAiK2UueSsiKSIpO3JldHVybiByLmNsYXNzZWQoIm9uLWJhci1sYWJlbCIsITApLHJ9LGUuX1NJWkVfS0VZPSJzaXplIixlLl9TWU1CT0xfS0VZPSJzeW1ib2wiLGUuX0xBQkVMX0FSRUFfQ0xBU1M9InNjYXR0ZXItbGFiZWwtdGV4dC1hcmVhIixlLl9MQUJFTF9NQVJHSU5fRlJPTV9CVUJCTEU9MTUsZX0pKG1FdC5YWVBsb3QpO0NUdC5TY2F0dGVyPUZUdDt2YXIgVlR0PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqL09iamVjdC5kZWZpbmVQcm9wZXJ0eShWVHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBVVHQ9Qk8salR0PWZndCxHVHQ9R1N0LFdUdD1KTXQscVR0PVh2dCxZVHQ9VHl0LFhUdD1zU3QsJFR0PShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7dmFyIGU9dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBlLmFkZENsYXNzKCJzZWdtZW50LXBsb3QiKSxlLmF0dHIoInN0cm9rZSIsKG5ldyBxVHQuQ29sb3IpLnJhbmdlKClbMF0pLGUuYXR0cigic3Ryb2tlLXdpZHRoIiwiMnB4IiksZX1yZXR1cm4gVVR0Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLl9jcmVhdGVEcmF3ZXI9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEdUdC5Qcm94eURyYXdlcigoZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFdUdC5TZWdtZW50U1ZHRHJhd2VyfSksKGZ1bmN0aW9uKCl7cmV0dXJuIFlUdC53YXJuKCJjYW52YXMgcmVuZGVyZXIgaXMgbm90IHN1cHBvcnRlZCBvbiBTZWdtZW50IFBsb3QhIiksbnVsbH0pKX0sZS5wcm90b3R5cGUuX2dlbmVyYXRlRHJhd1N0ZXBzPWZ1bmN0aW9uKCl7cmV0dXJuW3thdHRyVG9Qcm9qZWN0b3I6dGhpcy5fZ2V0QXR0clRvUHJvamVjdG9yKCksYW5pbWF0b3I6bmV3IGpUdC5OdWxsfV19LGUucHJvdG90eXBlLl9maWx0ZXJGb3JQcm9wZXJ0eT1mdW5jdGlvbihlKXtyZXR1cm4gdC5wcm90b3R5cGUuX2ZpbHRlckZvclByb3BlcnR5LmNhbGwodGhpcywieDIiPT09ZT8ieCI6InkyIj09PWU/InkiOmUpfSxlLnByb3RvdHlwZS54PWZ1bmN0aW9uKG4saSl7aWYobnVsbD09bilyZXR1cm4gdC5wcm90b3R5cGUueC5jYWxsKHRoaXMpO2lmKG51bGw9PWkpdC5wcm90b3R5cGUueC5jYWxsKHRoaXMsbik7ZWxzZXt0LnByb3RvdHlwZS54LmNhbGwodGhpcyxuLGkpO3ZhciByPXRoaXMueDIoKSxvPXImJnIuYWNjZXNzb3I7bnVsbCE9byYmdGhpcy5fYmluZFByb3BlcnR5KGUuX1gyX0tFWSxvLGkpfXJldHVybiB0aGlzfSxlLnByb3RvdHlwZS54Mj1mdW5jdGlvbih0KXtpZihudWxsPT10KXJldHVybiB0aGlzLl9wcm9wZXJ0eUJpbmRpbmdzLmdldChlLl9YMl9LRVkpO3ZhciBuPXRoaXMueCgpO3JldHVybiB0aGlzLl9iaW5kUHJvcGVydHkoZS5fWDJfS0VZLHQsbiYmbi5zY2FsZSksdGhpcy5yZW5kZXIoKSx0aGlzfSxlLnByb3RvdHlwZS55PWZ1bmN0aW9uKG4saSl7aWYobnVsbD09bilyZXR1cm4gdC5wcm90b3R5cGUueS5jYWxsKHRoaXMpO2lmKG51bGw9PWkpdC5wcm90b3R5cGUueS5jYWxsKHRoaXMsbik7ZWxzZXt0LnByb3RvdHlwZS55LmNhbGwodGhpcyxuLGkpO3ZhciByPXRoaXMueTIoKSxvPXImJnIuYWNjZXNzb3I7bnVsbCE9byYmdGhpcy5fYmluZFByb3BlcnR5KGUuX1kyX0tFWSxvLGkpfXJldHVybiB0aGlzfSxlLnByb3RvdHlwZS55Mj1mdW5jdGlvbih0KXtpZihudWxsPT10KXJldHVybiB0aGlzLl9wcm9wZXJ0eUJpbmRpbmdzLmdldChlLl9ZMl9LRVkpO3ZhciBuPXRoaXMueSgpO3JldHVybiB0aGlzLl9iaW5kUHJvcGVydHkoZS5fWTJfS0VZLHQsbiYmbi5zY2FsZSksdGhpcy5yZW5kZXIoKSx0aGlzfSxlLnByb3RvdHlwZS5fcHJvcGVydHlQcm9qZWN0b3JzPWZ1bmN0aW9uKCl7dmFyIGU9dC5wcm90b3R5cGUuX3Byb3BlcnR5UHJvamVjdG9ycy5jYWxsKHRoaXMpO3JldHVybiBlLngxPVhUdC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLngoKSksZS54Mj1udWxsPT10aGlzLngyKCk/WFR0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueCgpKTpYVHQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy54MigpKSxlLnkxPVhUdC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnkoKSksZS55Mj1udWxsPT10aGlzLnkyKCk/WFR0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueSgpKTpYVHQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy55MigpKSxlfSxlLnByb3RvdHlwZS5lbnRpdGllc0F0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZW50aXR5TmVhcmVzdCh0KTtyZXR1cm4gbnVsbCE9ZT9bZV06W119LGUucHJvdG90eXBlLmVudGl0aWVzSW49ZnVuY3Rpb24odCxlKXt2YXIgbixpO2lmKG51bGw9PWUpe249e21pbjp0LnRvcExlZnQueCxtYXg6dC5ib3R0b21SaWdodC54fSxpPXttaW46dC50b3BMZWZ0LnksbWF4OnQuYm90dG9tUmlnaHQueX19ZWxzZSBuPXQsaT1lO3JldHVybiB0aGlzLl9lbnRpdGllc0ludGVyc2VjdGluZyhuLGkpfSxlLnByb3RvdHlwZS5fZW50aXRpZXNJbnRlcnNlY3Rpbmc9ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49W10saT10aGlzLl9nZXRBdHRyVG9Qcm9qZWN0b3IoKSxyPXRoaXMuZW50aXRpZXMoKSxvPXIubGVuZ3RoLGE9MDthPG87YSsrKXt2YXIgcz1yW2FdO3RoaXMuX2xpbmVJbnRlcnNlY3RzQm94KHMsdCxlLGkpJiZuLnB1c2gocyl9cmV0dXJuIG59LGUucHJvdG90eXBlLl9saW5lSW50ZXJzZWN0c0JveD1mdW5jdGlvbih0LGUsbixpKXt2YXIgcj10aGlzLG89aS54MSh0LmRhdHVtLHQuaW5kZXgsdC5kYXRhc2V0KSxhPWkueDIodC5kYXR1bSx0LmluZGV4LHQuZGF0YXNldCkscz1pLnkxKHQuZGF0dW0sdC5pbmRleCx0LmRhdGFzZXQpLGw9aS55Mih0LmRhdHVtLHQuaW5kZXgsdC5kYXRhc2V0KTtpZihlLm1pbjw9byYmbzw9ZS5tYXgmJm4ubWluPD1zJiZzPD1uLm1heHx8ZS5taW48PWEmJmE8PWUubWF4JiZuLm1pbjw9bCYmbDw9bi5tYXgpcmV0dXJuITA7dmFyIGM9e3g6byx5OnN9LHU9e3g6YSx5Omx9LGg9W3t4OmUubWluLHk6bi5taW59LHt4OmUubWluLHk6bi5tYXh9LHt4OmUubWF4LHk6bi5tYXh9LHt4OmUubWF4LHk6bi5taW59XTtyZXR1cm4gaC5maWx0ZXIoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIDAhPT1lJiYoci5fbGluZUludGVyc2VjdHNTZWdtZW50KGMsdSx0LGhbZS0xXSkmJnIuX2xpbmVJbnRlcnNlY3RzU2VnbWVudCh0LGhbZS0xXSxjLHUpKX0pKS5sZW5ndGg+MH0sZS5wcm90b3R5cGUuX2xpbmVJbnRlcnNlY3RzU2VnbWVudD1mdW5jdGlvbih0LGUsbixpKXt2YXIgcj1mdW5jdGlvbih0LGUsbil7cmV0dXJuKGUueC10LngpKihuLnktZS55KS0oZS55LXQueSkqKG4ueC1lLngpfTtyZXR1cm4gcih0LGUsbikqcih0LGUsaSk8MH0sZS5fWDJfS0VZPSJ4MiIsZS5fWTJfS0VZPSJ5MiIsZX0pKG1FdC5YWVBsb3QpO1ZUdC5TZWdtZW50PSRUdDt2YXIgS1R0PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqL09iamVjdC5kZWZpbmVQcm9wZXJ0eShLVHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBaVHQ9Qk8sSlR0PXdwdCxRVHQ9Zmd0LHRDdD1jU3QsZUN0PURfdCxuQ3Q9c1N0LGlDdD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3ZhciBlPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gZS5fc3RhY2tpbmdSZXN1bHQ9dEN0Lm1lbVRodW5rKChmdW5jdGlvbigpe3JldHVybiBlLmRhdGFzZXRzKCl9KSwoZnVuY3Rpb24oKXtyZXR1cm4gZS54KCkuYWNjZXNzb3J9KSwoZnVuY3Rpb24oKXtyZXR1cm4gZS55KCkuYWNjZXNzb3J9KSwoZnVuY3Rpb24oKXtyZXR1cm4gZS5fc3RhY2tpbmdPcmRlcn0pLChmdW5jdGlvbih0LGUsbixpKXtyZXR1cm4gZUN0LlN0YWNraW5nLnN0YWNrKHQsZSxuLGkpfSkpLGUuX3N0YWNrZWRFeHRlbnQ9dEN0Lm1lbVRodW5rKGUuX3N0YWNraW5nUmVzdWx0LChmdW5jdGlvbigpe3JldHVybiBlLngoKS5hY2Nlc3Nvcn0pLChmdW5jdGlvbigpe3JldHVybiBlLl9maWx0ZXJGb3JQcm9wZXJ0eSgieSIpfSksKGZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gZUN0LlN0YWNraW5nLnN0YWNrZWRFeHRlbnQodCxlLG4pfSkpLGUuX2Jhc2VsaW5lVmFsdWU9MCxlLl9zdGFja2luZ09yZGVyPSJib3R0b211cCIsZS5hZGRDbGFzcygic3RhY2tlZC1hcmVhLXBsb3QiKSxlLl9iYXNlbGluZVZhbHVlUHJvdmlkZXI9ZnVuY3Rpb24oKXtyZXR1cm5bZS5fYmFzZWxpbmVWYWx1ZV19LGUuY3JvcHBlZFJlbmRlcmluZ0VuYWJsZWQoITEpLGV9cmV0dXJuIFpUdC5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5jcm9wcGVkUmVuZGVyaW5nRW5hYmxlZD1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZT90LnByb3RvdHlwZS5jcm9wcGVkUmVuZGVyaW5nRW5hYmxlZC5jYWxsKHRoaXMpOmU/KGVDdC5XaW5kb3cud2FybigiV2FybmluZzogU3RhY2tlZCBBcmVhIFBsb3QgZG9lcyBub3Qgc3VwcG9ydCBjcm9wcGVkIHJlbmRlcmluZy4iKSx0aGlzKTp0LnByb3RvdHlwZS5jcm9wcGVkUmVuZGVyaW5nRW5hYmxlZC5jYWxsKHRoaXMsZSl9LGUucHJvdG90eXBlLl9nZXRBbmltYXRvcj1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IFFUdC5OdWxsfSxlLnByb3RvdHlwZS5fc2V0dXA9ZnVuY3Rpb24oKXt0LnByb3RvdHlwZS5fc2V0dXAuY2FsbCh0aGlzKSx0aGlzLl9iYXNlbGluZT10aGlzLl9yZW5kZXJBcmVhLmFwcGVuZCgibGluZSIpLmNsYXNzZWQoImJhc2VsaW5lIiwhMCl9LGUucHJvdG90eXBlLng9ZnVuY3Rpb24oZSxuKXtyZXR1cm4gbnVsbD09ZT90LnByb3RvdHlwZS54LmNhbGwodGhpcyk6KG51bGw9PW4/dC5wcm90b3R5cGUueC5jYWxsKHRoaXMsZSk6dC5wcm90b3R5cGUueC5jYWxsKHRoaXMsZSxuKSx0aGlzLl9jaGVja1NhbWVEb21haW4oKSx0aGlzKX0sZS5wcm90b3R5cGUueT1mdW5jdGlvbihlLG4pe3JldHVybiBudWxsPT1lP3QucHJvdG90eXBlLnkuY2FsbCh0aGlzKToobnVsbD09bj90LnByb3RvdHlwZS55LmNhbGwodGhpcyxlKTp0LnByb3RvdHlwZS55LmNhbGwodGhpcyxlLG4pLHRoaXMuX2NoZWNrU2FtZURvbWFpbigpLHRoaXMpfSxlLnByb3RvdHlwZS55T2Zmc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5fc3RhY2tpbmdSZXN1bHQoKTtpZihudWxsIT1uKXt2YXIgaT1uLmdldCh0KTtpZihudWxsIT1pKXt2YXIgcj1pLmdldChTdHJpbmcoZSkpO2lmKG51bGwhPXIpcmV0dXJuIHIub2Zmc2V0fX19LGUucHJvdG90eXBlLnN0YWNraW5nT3JkZXI9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fc3RhY2tpbmdPcmRlcjoodGhpcy5fc3RhY2tpbmdPcmRlcj10LHRoaXMuX29uRGF0YXNldFVwZGF0ZSgpLHRoaXMpfSxlLnByb3RvdHlwZS5kb3duc2FtcGxpbmdFbmFibGVkPWZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lP3QucHJvdG90eXBlLmRvd25zYW1wbGluZ0VuYWJsZWQuY2FsbCh0aGlzKTooZUN0LldpbmRvdy53YXJuKCJXYXJuaW5nOiBTdGFja2VkIEFyZWEgUGxvdCBkb2VzIG5vdCBzdXBwb3J0IGRvd25zYW1wbGluZyIpLHRoaXMpfSxlLnByb3RvdHlwZS5fYWRkaXRpb25hbFBhaW50PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy55KCkuc2NhbGUuc2NhbGUodGhpcy5fYmFzZWxpbmVWYWx1ZSksZT17eDE6MCx5MTp0LHgyOnRoaXMud2lkdGgoKSx5Mjp0fTt0aGlzLl9nZXRBbmltYXRvcigiYmFzZWxpbmUiKS5hbmltYXRlKHRoaXMuX2Jhc2VsaW5lLGUpfSxlLnByb3RvdHlwZS5fdXBkYXRlWVNjYWxlPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy55KCksZT10JiZ0LnNjYWxlO251bGwhPWUmJihlLmFkZFBhZGRpbmdFeGNlcHRpb25zUHJvdmlkZXIodGhpcy5fYmFzZWxpbmVWYWx1ZVByb3ZpZGVyKSxlLmFkZEluY2x1ZGVkVmFsdWVzUHJvdmlkZXIodGhpcy5fYmFzZWxpbmVWYWx1ZVByb3ZpZGVyKSl9LGUucHJvdG90eXBlLl9vbkRhdGFzZXRVcGRhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY2hlY2tTYW1lRG9tYWluKCksdC5wcm90b3R5cGUuX29uRGF0YXNldFVwZGF0ZS5jYWxsKHRoaXMpLHRoaXN9LGUucHJvdG90eXBlLmdldEV4dGVudHNGb3JQcm9wZXJ0eT1mdW5jdGlvbihlKXtyZXR1cm4ieSI9PT1lP1t0aGlzLl9zdGFja2VkRXh0ZW50KCldOnQucHJvdG90eXBlLmdldEV4dGVudHNGb3JQcm9wZXJ0eS5jYWxsKHRoaXMsZSl9LGUucHJvdG90eXBlLl9jaGVja1NhbWVEb21haW49ZnVuY3Rpb24oKXtpZih0aGlzLl9wcm9qZWN0b3JzUmVhZHkoKSl7dmFyIHQ9dGhpcy5kYXRhc2V0cygpLG49dGhpcy54KCkuYWNjZXNzb3IsaT10Lm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIEpUdC5zZXQodC5kYXRhKCkubWFwKChmdW5jdGlvbihlLGkpe3JldHVybiBlQ3QuU3RhY2tpbmcubm9ybWFsaXplS2V5KG4oZSxpLHQpKX0pKSkudmFsdWVzKCl9KSkscj1lLl9kb21haW5LZXlzKHQsbik7aS5zb21lKChmdW5jdGlvbih0KXtyZXR1cm4gdC5sZW5ndGghPT1yLmxlbmd0aH0pKSYmZUN0LldpbmRvdy53YXJuKCJ0aGUgZG9tYWlucyBhY3Jvc3MgdGhlIGRhdGFzZXRzIGFyZSBub3QgdGhlIHNhbWUuIFBsb3QgbWF5IHByb2R1Y2UgdW5pbnRlbmRlZCBiZWhhdmlvci4iKX19LGUuX2RvbWFpbktleXM9ZnVuY3Rpb24odCxlKXt2YXIgbj1KVHQuc2V0KCk7cmV0dXJuIHQuZm9yRWFjaCgoZnVuY3Rpb24odCl7Zm9yKHZhciBpPXQuZGF0YSgpLHI9aS5sZW5ndGgsbz0wO288cjtvKyspe24uYWRkKGUoaVtvXSxvLHQpKX19KSksbi52YWx1ZXMoKX0sZS5wcm90b3R5cGUuX2Nvb3JkaW5hdGVQcm9qZWN0b3JzPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPW5DdC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLngoKSksbj10aGlzLnkoKS5hY2Nlc3NvcixpPXRoaXMueCgpLmFjY2Vzc29yLHI9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBlQ3QuU3RhY2tpbmcubm9ybWFsaXplS2V5KGkodCxlLG4pKX0sbz10aGlzLl9zdGFja2luZ1Jlc3VsdCgpO3JldHVybltlLGZ1bmN0aW9uKGUsaSxhKXt2YXIgcz0rbihlLGksYSksbD1vLmdldChhKS5nZXQocihlLGksYSkpLm9mZnNldDtyZXR1cm4gdC55KCkuc2NhbGUuc2NhbGUocytsKX0sZnVuY3Rpb24oZSxuLGkpe3ZhciBhPW8uZ2V0KGkpLmdldChyKGUsbixpKSkub2Zmc2V0O3JldHVybiB0LnkoKS5zY2FsZS5zY2FsZShhKX1dfSxlLnByb3RvdHlwZS5fcHJvcGVydHlQcm9qZWN0b3JzPWZ1bmN0aW9uKCl7dmFyIGU9dC5wcm90b3R5cGUuX3Byb3BlcnR5UHJvamVjdG9ycy5jYWxsKHRoaXMpLG49dGhpcy5fY29vcmRpbmF0ZVByb2plY3RvcnMoKTtyZXR1cm4gZS5kPXRoaXMuX2NvbnN0cnVjdEFyZWFQcm9qZWN0b3IoblswXSxuWzFdLG5bMl0pLGV9LGUucHJvdG90eXBlLl9waXhlbFBvaW50PWZ1bmN0aW9uKGUsbixpKXt2YXIgcj10LnByb3RvdHlwZS5fcGl4ZWxQb2ludC5jYWxsKHRoaXMsZSxuLGkpLG89dGhpcy54KCkuYWNjZXNzb3IoZSxuLGkpLGE9dGhpcy55KCkuYWNjZXNzb3IoZSxuLGkpLHM9dGhpcy55KCkuc2NhbGUuc2NhbGUoK2ErdGhpcy5fc3RhY2tpbmdSZXN1bHQoKS5nZXQoaSkuZ2V0KGVDdC5TdGFja2luZy5ub3JtYWxpemVLZXkobykpLm9mZnNldCk7cmV0dXJue3g6ci54LHk6c319LGV9KShwRXQuQXJlYSk7S1R0LlN0YWNrZWRBcmVhPWlDdDt2YXIgckN0PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqL09iamVjdC5kZWZpbmVQcm9wZXJ0eShyQ3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBvQ3Q9Qk8sYUN0PUxndCxzQ3Q9cHZ0LGxDdD1jU3QsY0N0PURfdCx1Q3Q9WUV0LGhDdD1zU3QsZEN0PShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUpe3ZvaWQgMD09PWUmJihlPSJ2ZXJ0aWNhbCIpO3ZhciBuPXQuY2FsbCh0aGlzLGUpfHx0aGlzO3JldHVybiBuLl9leHRyZW1hRm9ybWF0dGVyPXNDdC5pZGVudGl0eSgpLG4uX3N0YWNraW5nUmVzdWx0PWxDdC5tZW1UaHVuaygoZnVuY3Rpb24oKXtyZXR1cm4gbi5kYXRhc2V0cygpfSksKGZ1bmN0aW9uKCl7cmV0dXJuIG4ucG9zaXRpb24oKS5hY2Nlc3Nvcn0pLChmdW5jdGlvbigpe3JldHVybiBuLmxlbmd0aCgpLmFjY2Vzc29yfSksKGZ1bmN0aW9uKCl7cmV0dXJuIG4uX3N0YWNraW5nT3JkZXJ9KSwoZnVuY3Rpb24odCxlLG4saSl7cmV0dXJuIGNDdC5TdGFja2luZy5zdGFjayh0LGUsbixpKX0pKSxuLl9zdGFja2VkRXh0ZW50PWxDdC5tZW1UaHVuayhuLl9zdGFja2luZ1Jlc3VsdCwoZnVuY3Rpb24oKXtyZXR1cm4gbi5wb3NpdGlvbigpLmFjY2Vzc29yfSksKGZ1bmN0aW9uKCl7cmV0dXJuIG4uX2ZpbHRlckZvclByb3BlcnR5KG4uX2lzVmVydGljYWw/InkiOiJ4Iil9KSwoZnVuY3Rpb24odCxlLG4pe3JldHVybiBjQ3QuU3RhY2tpbmcuc3RhY2tlZEV4dGVudCh0LGUsbil9KSksbi5hZGRDbGFzcygic3RhY2tlZC1iYXItcGxvdCIpLG4uX3N0YWNraW5nT3JkZXI9ImJvdHRvbXVwIixufXJldHVybiBvQ3QuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUuc3RhY2tpbmdPcmRlcj1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9zdGFja2luZ09yZGVyOih0aGlzLl9zdGFja2luZ09yZGVyPXQsdGhpcy5fb25EYXRhc2V0VXBkYXRlKCksdGhpcyl9LGUucHJvdG90eXBlLmV4dHJlbWFGb3JtYXR0ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIDA9PT1hcmd1bWVudHMubGVuZ3RoP3RoaXMuX2V4dHJlbWFGb3JtYXR0ZXI6KHRoaXMuX2V4dHJlbWFGb3JtYXR0ZXI9dCx0aGlzLnJlbmRlcigpLHRoaXMpfSxlLnByb3RvdHlwZS5fc2V0dXA9ZnVuY3Rpb24oKXt0LnByb3RvdHlwZS5fc2V0dXAuY2FsbCh0aGlzKSx0aGlzLl9sYWJlbEFyZWE9dGhpcy5fcmVuZGVyQXJlYS5hcHBlbmQoImciKS5jbGFzc2VkKHVDdC5CYXIuX0xBQkVMX0FSRUFfQ0xBU1MsITApO3ZhciBlPW5ldyBhQ3QuU3ZnQ29udGV4dCh0aGlzLl9sYWJlbEFyZWEubm9kZSgpKTt0aGlzLl9tZWFzdXJlcj1uZXcgYUN0LkNhY2hlTWVhc3VyZXIoZSksdGhpcy5fd3JpdGVyPW5ldyBhQ3QuV3JpdGVyKHRoaXMuX21lYXN1cmVyLGUpfSxlLnByb3RvdHlwZS5fZHJhd0xhYmVscz1mdW5jdGlvbigpe3ZhciBuPXRoaXM7dC5wcm90b3R5cGUuX2RyYXdMYWJlbHMuY2FsbCh0aGlzKSx0aGlzLl9sYWJlbEFyZWEuc2VsZWN0QWxsKCJnIikucmVtb3ZlKCk7dmFyIGk9K3RoaXMuYmFzZWxpbmVWYWx1ZSgpLHI9dGhpcy5wb3NpdGlvbigpLnNjYWxlLG89dGhpcy5sZW5ndGgoKS5zY2FsZSxhPWNDdC5TdGFja2luZy5zdGFja2VkRXh0ZW50cyh0aGlzLl9zdGFja2luZ1Jlc3VsdCgpKSxzPWEubWluaW11bUV4dGVudHMsbD1bXSxjPWZ1bmN0aW9uKHQsZSl7dmFyIGE9bi5fZ2VuZXJhdGVBdHRyVG9Qcm9qZWN0b3IoKSxzPW4ud2lkdGgoKSxjPW4uaGVpZ2h0KCk7dC5mb3JFYWNoKChmdW5jdGlvbih0KXtpZih0LmV4dGVudCE9PWkpe3ZhciB1PW4uZXh0cmVtYUZvcm1hdHRlcigpKHQuZXh0ZW50KSxoPW4uX21lYXN1cmVyLm1lYXN1cmUodSksZD10LnN0YWNrZWREYXR1bSxwPWQub3JpZ2luYWxEYXR1bSxmPWQub3JpZ2luYWxJbmRleCxtPWQub3JpZ2luYWxEYXRhc2V0O2lmKCFuLl9pc0RhdHVtT25TY3JlZW4oYSxzLGMscCxmLG0pKXJldHVybjt2YXIgZz1oQ3QuUGxvdC5fc2NhbGVkQWNjZXNzb3Iobi5hdHRyKHVDdC5CYXIuX0JBUl9USElDS05FU1NfS0VZKSkocCxmLG0pLF89by5zY2FsZSh0LmV4dGVudCkseT1uLl9nZXRQb3NpdGlvbkF0dHIoci5zY2FsZSh0LmF4aXNWYWx1ZSksZykrZy8yLHY9ZShuLl9pc1ZlcnRpY2FsP3t4OnkseTpffTp7eDpfLHk6eX0saCxnKSxiPShmdW5jdGlvbih0LGUsaSl7dmFyIHI9ZS50b3BMZWZ0LG89ci54LGE9ci55LHM9ZS5ib3R0b21SaWdodC54LWUudG9wTGVmdC54LGw9ZS5ib3R0b21SaWdodC55LWUudG9wTGVmdC55LGM9bi5faXNWZXJ0aWNhbD9zPmk6bD5pO2lmKCFjKXt2YXIgdT1uLl9sYWJlbEFyZWEuYXBwZW5kKCJnIikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrbysiLCAiK2ErIikiKTt1LmNsYXNzZWQoInN0YWNrZWQtYmFyLWxhYmVsIiwhMCksbi5fd3JpdGVyLndyaXRlKHQscyxsLHt4QWxpZ246ImNlbnRlciIseUFsaWduOiJjZW50ZXIifSx1Lm5vZGUoKSl9cmV0dXJuIGN9KSh1LHt0b3BMZWZ0OnYsYm90dG9tUmlnaHQ6e3g6di54K2gud2lkdGgseTp2LnkraC5oZWlnaHR9fSxnKTtsLnB1c2goYil9fSkpfTtjKGEubWF4aW11bUV4dGVudHMsKGZ1bmN0aW9uKHQsaSxyKXt2YXIgbz1uLl9pc1ZlcnRpY2FsP2kud2lkdGg6aS5oZWlnaHQ7cmV0dXJue3g6bi5faXNWZXJ0aWNhbD90Lngtby8yOnQueCtlLl9FWFRSRU1BX0xBQkVMX01BUkdJTl9GUk9NX0JBUix5Om4uX2lzVmVydGljYWw/dC55LShuLl9pc1ZlcnRpY2FsP2kuaGVpZ2h0Omkud2lkdGgpOnQueS1vLzJ9fSkpLGMocywoZnVuY3Rpb24odCxpLHIpe3ZhciBvPW4uX2lzVmVydGljYWw/aS53aWR0aDppLmhlaWdodDtyZXR1cm57eDpuLl9pc1ZlcnRpY2FsP3QueC1vLzI6dC54LShuLl9pc1ZlcnRpY2FsP2kuaGVpZ2h0Omkud2lkdGgpLHk6bi5faXNWZXJ0aWNhbD90LnkrZS5fRVhUUkVNQV9MQUJFTF9NQVJHSU5fRlJPTV9CQVI6dC55LW8vMn19KSksbC5zb21lKChmdW5jdGlvbih0KXtyZXR1cm4gdH0pKSYmdGhpcy5fbGFiZWxBcmVhLnNlbGVjdEFsbCgiZyIpLnJlbW92ZSgpfSxlLnByb3RvdHlwZS5fZ2VuZXJhdGVBdHRyVG9Qcm9qZWN0b3I9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLG49dC5wcm90b3R5cGUuX2dlbmVyYXRlQXR0clRvUHJvamVjdG9yLmNhbGwodGhpcyksaT10aGlzLl9pc1ZlcnRpY2FsPyJ5IjoieCIscj10aGlzLmxlbmd0aCgpLnNjYWxlLG89dGhpcy5sZW5ndGgoKS5hY2Nlc3NvcixhPXRoaXMucG9zaXRpb24oKS5hY2Nlc3NvcixzPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gY0N0LlN0YWNraW5nLm5vcm1hbGl6ZUtleShhKHQsZSxuKSl9LGw9dGhpcy5fc3RhY2tpbmdSZXN1bHQoKSxjPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gci5zY2FsZShsLmdldChuKS5nZXQocyh0LGUsbikpLm9mZnNldCl9LHU9ZnVuY3Rpb24odCxlLG4pe3JldHVybiByLnNjYWxlKCtvKHQsZSxuKStsLmdldChuKS5nZXQocyh0LGUsbikpLm9mZnNldCl9LGg9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBNYXRoLmFicyh1KHQsZSxuKS1jKHQsZSxuKSl9O25bdGhpcy5faXNWZXJ0aWNhbD8iaGVpZ2h0Ijoid2lkdGgiXT1oO3ZhciBkPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4rbyh0LGUsbik8MD9jKHQsZSxuKTp1KHQsZSxuKX07cmV0dXJuIG5baV09ZnVuY3Rpb24odCxuLGkpe3JldHVybiBlLl9pc1ZlcnRpY2FsP2QodCxuLGkpOmQodCxuLGkpLWgodCxuLGkpfSxufSxlLnByb3RvdHlwZS5nZXRFeHRlbnRzRm9yUHJvcGVydHk9ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT0odGhpcy5faXNWZXJ0aWNhbD8ieSI6IngiKT9bdGhpcy5fc3RhY2tlZEV4dGVudCgpXTp0LnByb3RvdHlwZS5nZXRFeHRlbnRzRm9yUHJvcGVydHkuY2FsbCh0aGlzLGUpfSxlLnByb3RvdHlwZS5pbnZhbGlkYXRlQ2FjaGU9ZnVuY3Rpb24oKXt0LnByb3RvdHlwZS5pbnZhbGlkYXRlQ2FjaGUuY2FsbCh0aGlzKSx0aGlzLl9tZWFzdXJlci5yZXNldCgpfSxlLl9FWFRSRU1BX0xBQkVMX01BUkdJTl9GUk9NX0JBUj01LGV9KSh1Q3QuQmFyKTtyQ3QuU3RhY2tlZEJhcj1kQ3Q7dmFyIHBDdD17fTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi9PYmplY3QuZGVmaW5lUHJvcGVydHkocEN0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgZkN0PUJPLG1DdD1EX3QsZ0N0PXNTdCxfQ3Q9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt2YXIgZT10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIGUuX2Nvbm5lY3RvcnNFbmFibGVkPSExLGUuYWRkQ2xhc3MoIndhdGVyZmFsbC1wbG90IiksZX1yZXR1cm4gZkN0Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLmNvbm5lY3RvcnNFbmFibGVkPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX2Nvbm5lY3RvcnNFbmFibGVkOih0aGlzLl9jb25uZWN0b3JzRW5hYmxlZD10LHRoaXMpfSxlLnByb3RvdHlwZS50b3RhbD1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9wcm9wZXJ0eUJpbmRpbmdzLmdldChlLl9UT1RBTF9LRVkpOih0aGlzLl9iaW5kUHJvcGVydHkoZS5fVE9UQUxfS0VZLHQsbnVsbCksdGhpcyl9LGUucHJvdG90eXBlLl9hZGRpdGlvbmFsUGFpbnQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0aGlzLl9jb25uZWN0b3JBcmVhLnNlbGVjdEFsbCgibGluZSIpLnJlbW92ZSgpLHRoaXMuX2Nvbm5lY3RvcnNFbmFibGVkJiZtQ3QuV2luZG93LnNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7cmV0dXJuIGUuX2RyYXdDb25uZWN0b3JzKCl9KSx0KX0sZS5wcm90b3R5cGUuX2NyZWF0ZU5vZGVzRm9yRGF0YXNldD1mdW5jdGlvbihuKXt2YXIgaT10LnByb3RvdHlwZS5fY3JlYXRlTm9kZXNGb3JEYXRhc2V0LmNhbGwodGhpcyxuKTtyZXR1cm4gdGhpcy5fY29ubmVjdG9yQXJlYT10aGlzLl9yZW5kZXJBcmVhLmFwcGVuZCgiZyIpLmNsYXNzZWQoZS5fQ09OTkVDVE9SX0FSRUFfQ0xBU1MsITApLGl9LGUucHJvdG90eXBlLmdldEV4dGVudHNGb3JQcm9wZXJ0eT1mdW5jdGlvbihlKXtyZXR1cm4ieSI9PT1lP1t0aGlzLl9leHRlbnRdOnQucHJvdG90eXBlLmdldEV4dGVudHNGb3JQcm9wZXJ0eS5jYWxsKHRoaXMsZSl9LGUucHJvdG90eXBlLl9nZW5lcmF0ZUF0dHJUb1Byb2plY3Rvcj1mdW5jdGlvbigpe3ZhciBuPXRoaXMsaT10LnByb3RvdHlwZS5fZ2VuZXJhdGVBdHRyVG9Qcm9qZWN0b3IuY2FsbCh0aGlzKSxyPXRoaXMueSgpLnNjYWxlLG89Z0N0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMudG90YWwoKSk7cmV0dXJuIG51bGw9PXRoaXMuYXR0cigieSIpJiYoaS55PWZ1bmN0aW9uKHQsZSxpKXt2YXIgYT1uLnkoKS5hY2Nlc3Nvcih0LGUsaSk7aWYobyh0LGUsaSkpcmV0dXJuIE1hdGgubWluKHIuc2NhbGUoYSksci5zY2FsZSgwKSk7dmFyIHM9bi5fc3VidG90YWxzW2VdO2lmKDA9PT1lKXJldHVybiByLnNjYWxlKGE8MD9zLWE6cyk7dmFyIGw9bi5fc3VidG90YWxzW2UtMV07cmV0dXJuIHIuc2NhbGUocz5sP3M6bCl9KSxudWxsPT10aGlzLmF0dHIoImhlaWdodCIpJiYoaS5oZWlnaHQ9ZnVuY3Rpb24odCxlLGkpe3ZhciBhPW8odCxlLGkpLHM9bi55KCkuYWNjZXNzb3IodCxlLGkpO2lmKGEpcmV0dXJuIE1hdGguYWJzKHIuc2NhbGUocyktci5zY2FsZSgwKSk7dmFyIGw9bi5fc3VidG90YWxzW2VdO2lmKDA9PT1lKXJldHVybiBNYXRoLmFicyhyLnNjYWxlKGwpLXIuc2NhbGUobC1zKSk7dmFyIGM9bi5fc3VidG90YWxzW2UtMV07cmV0dXJuIE1hdGguYWJzKHIuc2NhbGUobCktci5zY2FsZShjKSl9KSxpLmNsYXNzPWZ1bmN0aW9uKHQsaSxyKXt2YXIgYT0iIjtyZXR1cm4gbnVsbCE9bi5hdHRyKCJjbGFzcyIpJiYoYT1uLmF0dHIoImNsYXNzIikuYWNjZXNzb3IodCxpLHIpKyIgIiksbyh0LGkscik/YStlLl9CQVJfVE9UQUxfQ0xBU1M6YSsobi55KCkuYWNjZXNzb3IodCxpLHIpPjA/ZS5fQkFSX0dST1dUSF9DTEFTUzplLl9CQVJfREVDTElORV9DTEFTUyl9LGl9LGUucHJvdG90eXBlLl9vbkRhdGFzZXRVcGRhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdXBkYXRlU3VidG90YWxzKCksdC5wcm90b3R5cGUuX29uRGF0YXNldFVwZGF0ZS5jYWxsKHRoaXMpLHRoaXN9LGUucHJvdG90eXBlLl9jYWxjdWxhdGVTdWJ0b3RhbHNBbmRFeHRlbnQ9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPU51bWJlci5NQVhfVkFMVUUsbj1OdW1iZXIuTUlOX1ZBTFVFLGk9MCxyPSExLG89dC5kYXRhKCksYT1vLmxlbmd0aCxzPTA7czxhO3MrKyl7dmFyIGw9b1tzXSxjPXRoaXMueSgpLmFjY2Vzc29yKGwscyx0KSx1PXRoaXMudG90YWwoKS5hY2Nlc3NvcihsLHMsdCk7aWYodSYmMCE9PXN8fChpKz1jKSx0aGlzLl9zdWJ0b3RhbHMucHVzaChpKSxpPGUmJihlPWkpLGk+biYmKG49aSksdSYmKGM8ZSYmKGU9YyksYz5uJiYobj1jKSksIXImJnUpe2Zvcih2YXIgaD1jLWksZD0wO2Q8dGhpcy5fc3VidG90YWxzLmxlbmd0aDtkKyspdGhpcy5fc3VidG90YWxzW2RdKz1oO3I9ITAsaSs9aCxlKz1oLG4rPWh9fXRoaXMuX2V4dGVudD1bZSxuXX0sZS5wcm90b3R5cGUuX2RyYXdDb25uZWN0b3JzPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMuX2dldEF0dHJUb1Byb2plY3RvcigpLG49dGhpcy5kYXRhc2V0cygpWzBdLGk9MTtpPG4uZGF0YSgpLmxlbmd0aDtpKyspe3ZhciByPWktMSxvPW4uZGF0YSgpW2ldLGE9bi5kYXRhKClbcl0scz10LngoYSxyLG4pLGw9dC54KG8saSxuKSt0LndpZHRoKG8saSxuKSxjPXQueShvLGksbik7KHRoaXMuX3N1YnRvdGFsc1tpXT4wJiZ0aGlzLl9zdWJ0b3RhbHNbaV0+dGhpcy5fc3VidG90YWxzW3JdfHx0aGlzLl9zdWJ0b3RhbHNbaV08MCYmdGhpcy5fc3VidG90YWxzW2ldPj10aGlzLl9zdWJ0b3RhbHNbcl0pJiYoYz10LnkobyxpLG4pK3QuaGVpZ2h0KG8saSxuKSksdGhpcy5fY29ubmVjdG9yQXJlYS5hcHBlbmQoImxpbmUiKS5jbGFzc2VkKGUuX0NPTk5FQ1RPUl9DTEFTUywhMCkuYXR0cigieDEiLHMpLmF0dHIoIngyIixsKS5hdHRyKCJ5MSIsYykuYXR0cigieTIiLGMpfX0sZS5wcm90b3R5cGUuX3VwZGF0ZVN1YnRvdGFscz1mdW5jdGlvbigpe3ZhciB0PXRoaXMuZGF0YXNldHMoKTtpZih0Lmxlbmd0aD4wKXt2YXIgZT10W3QubGVuZ3RoLTFdO3RoaXMuX3N1YnRvdGFscz1uZXcgQXJyYXksdGhpcy5fY2FsY3VsYXRlU3VidG90YWxzQW5kRXh0ZW50KGUpfX0sZS5fQkFSX0RFQ0xJTkVfQ0xBU1M9IndhdGVyZmFsbC1kZWNsaW5lIixlLl9CQVJfR1JPV1RIX0NMQVNTPSJ3YXRlcmZhbGwtZ3Jvd3RoIixlLl9CQVJfVE9UQUxfQ0xBU1M9IndhdGVyZmFsbC10b3RhbCIsZS5fQ09OTkVDVE9SX0NMQVNTPSJjb25uZWN0b3IiLGUuX0NPTk5FQ1RPUl9BUkVBX0NMQVNTPSJjb25uZWN0b3ItYXJlYSIsZS5fVE9UQUxfS0VZPSJ0b3RhbCIsZX0pKFlFdC5CYXIpO3BDdC5XYXRlcmZhbGw9X0N0LChmdW5jdGlvbih0KXsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBlPUJPO2UuX19leHBvcnRTdGFyKHBFdCx0KSxlLl9fZXhwb3J0U3RhcihZRXQsdCksZS5fX2V4cG9ydFN0YXIobFN0LHQpLGUuX19leHBvcnRTdGFyKFhFdCx0KSxlLl9fZXhwb3J0U3RhcihmRXQsdCksZS5fX2V4cG9ydFN0YXIoZVR0LHQpLGUuX19leHBvcnRTdGFyKG1UdCx0KSxlLl9fZXhwb3J0U3RhcihDVHQsdCksZS5fX2V4cG9ydFN0YXIoVlR0LHQpLGUuX19leHBvcnRTdGFyKEtUdCx0KSxlLl9fZXhwb3J0U3RhcihyQ3QsdCksZS5fX2V4cG9ydFN0YXIocEN0LHQpfSkoZEV0KTt2YXIgeUN0LHZDdD17fTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi9mdW5jdGlvbiBiQ3QodCl7cmV0dXJuIGNsYXNzIGV4dGVuZHMgdHtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5sb2FkS2V5PSIiLHRoaXMuZGF0YVRvTG9hZD1bXSx0aGlzLmdldERhdGFMb2FkTmFtZT10PT5TdHJpbmcodCksdGhpcy5kYXRhTG9hZGluZz0hMSx0aGlzLmRhdGFMb2FkZWRBdExlYXN0T25jZT0hMSx0aGlzLl9pc0Nvbm5lY3RlZD0hMSx0aGlzLl9kYXRhTG9hZFN0YXRlPW5ldyBNYXAsdGhpcy5fY2FuY2VsbGVyPW5ldyB4Tyx0aGlzLl9sb2FkRGF0YUFzeW5jPW51bGwsdGhpcy5fbG9hZERhdGE9Q2UuZXhwb3J0cy50aHJvdHRsZSh0aGlzLl9sb2FkRGF0YUltcGwsMTAwLHtsZWFkaW5nOiEwLHRyYWlsaW5nOiEwfSl9Y29ubmVjdGVkQ2FsbGJhY2soKXtzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpLHRoaXMuX2lzQ29ubmVjdGVkPSEwfWRpc2Nvbm5lY3RlZENhbGxiYWNrKCl7c3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKSx0aGlzLl9pc0Nvbm5lY3RlZD0hMX1zdGF0aWMgZ2V0IHByb3BlcnRpZXMoKXtyZXR1cm57YWN0aXZlOnt0eXBlOkJvb2xlYW4sb2JzZXJ2ZXI6Il9sb2FkRGF0YUlmQWN0aXZlIn0sX2lzQ29ubmVjdGVkOnt0eXBlOkJvb2xlYW59LGxvYWRLZXk6e3R5cGU6U3RyaW5nfSxkYXRhVG9Mb2FkOnt0eXBlOkFycmF5fSxnZXREYXRhTG9hZE5hbWU6e3R5cGU6T2JqZWN0fSxsb2FkRGF0YUNhbGxiYWNrOnt0eXBlOk9iamVjdH0scmVxdWVzdERhdGE6e3R5cGU6T2JqZWN0fX19c3RhdGljIGdldCBvYnNlcnZlcnMoKXtyZXR1cm5bIl9kYXRhVG9Mb2FkQ2hhbmdlZChfaXNDb25uZWN0ZWQsIGRhdGFUb0xvYWQuKikiXX1vbkxvYWRGaW5pc2goKXt9cmVsb2FkKCl7dGhpcy5fZGF0YUxvYWRTdGF0ZS5jbGVhcigpLHRoaXMuX2xvYWREYXRhKCl9cmVzZXQoKXtudWxsIT10aGlzLl9sb2FkRGF0YUFzeW5jJiYoY2xlYXJUaW1lb3V0KHRoaXMuX2xvYWREYXRhQXN5bmMpLHRoaXMuX2xvYWREYXRhQXN5bmM9bnVsbCksdGhpcy5fY2FuY2VsbGVyJiZ0aGlzLl9jYW5jZWxsZXIuY2FuY2VsQWxsKCksdGhpcy5fZGF0YUxvYWRTdGF0ZSYmdGhpcy5fZGF0YUxvYWRTdGF0ZS5jbGVhcigpLHRoaXMuX2lzQ29ubmVjdGVkJiZ0aGlzLl9sb2FkRGF0YSgpfV9kYXRhVG9Mb2FkQ2hhbmdlZCgpe3RoaXMuX2lzQ29ubmVjdGVkJiZ0aGlzLl9sb2FkRGF0YSgpfWRldGFjaGVkKCl7bnVsbCE9dGhpcy5fbG9hZERhdGFBc3luYyYmKGNsZWFyVGltZW91dCh0aGlzLl9sb2FkRGF0YUFzeW5jKSx0aGlzLl9sb2FkRGF0YUFzeW5jPW51bGwpfV9sb2FkRGF0YUlmQWN0aXZlKCl7dGhpcy5hY3RpdmUmJnRoaXMuX2xvYWREYXRhKCl9X2xvYWREYXRhSW1wbCgpe3RoaXMuYWN0aXZlJiYobnVsbCE9PXRoaXMuX2xvYWREYXRhQXN5bmMmJmNsZWFyVGltZW91dCh0aGlzLl9sb2FkRGF0YUFzeW5jKSx0aGlzLl9sb2FkRGF0YUFzeW5jPXNldFRpbWVvdXQodGhpcy5fY2FuY2VsbGVyLmNhbmNlbGxhYmxlKCh0PT57aWYodC5jYW5jZWxsZWQpcmV0dXJuO3RoaXMuZGF0YUxvYWRpbmc9ITA7Y29uc3QgZT10aGlzLmRhdGFUb0xvYWQuZmlsdGVyKCh0PT57Y29uc3QgZT10aGlzLmdldERhdGFMb2FkTmFtZSh0KTtyZXR1cm4hdGhpcy5fZGF0YUxvYWRTdGF0ZS5oYXMoZSl9KSk7Zm9yKGNvbnN0IHQgb2YgZSl7Y29uc3QgZT10aGlzLmdldERhdGFMb2FkTmFtZSh0KTt0aGlzLl9kYXRhTG9hZFN0YXRlLnNldChlLHlDdC5MT0FESU5HKX1jb25zdCBuPXRoaXMuX2NhbmNlbGxlci5jYW5jZWxsYWJsZSgodD0+e2lmKHQuY2FuY2VsbGVkKXJldHVybjtjb25zdHtpdGVtOmUsZGF0YTpufT10LnZhbHVlLGk9dGhpcy5nZXREYXRhTG9hZE5hbWUoZSk7dGhpcy5fZGF0YUxvYWRTdGF0ZS5zZXQoaSx5Q3QuTE9BREVEKSx0aGlzLmxvYWREYXRhQ2FsbGJhY2sodGhpcyxlLG4pfSkpLGk9dGhpcy5fY2FuY2VsbGVyLmNhbmNlbGxhYmxlKCh0PT57aWYoIXQuY2FuY2VsbGVkKXtjb25zdCB0PW5ldyBTZXQoZS5tYXAoKHQ9PnRoaXMuZ2V0RGF0YUxvYWROYW1lKHQpKSkpO3RoaXMuZGF0YVRvTG9hZC5zb21lKChlPT50Lmhhcyh0aGlzLmdldERhdGFMb2FkTmFtZShlKSkpKSYmdGhpcy5vbkxvYWRGaW5pc2goKSx0aGlzLl9sb2FkRGF0YUFzeW5jPW51bGwsdGhpcy5kYXRhTG9hZGVkQXRMZWFzdE9uY2U9ITB9QXJyYXkuZnJvbSh0aGlzLl9kYXRhTG9hZFN0YXRlLnZhbHVlcygpKS5pbmNsdWRlcyh5Q3QuTE9BRElORyl8fCh0aGlzLmRhdGFMb2FkaW5nPSExKX0pKTt0aGlzLnJlcXVlc3REYXRhKGUsbiwoKCk9Pmkodm9pZCAwKSkpfSkpKSl9fX1PYmplY3QuZGVmaW5lUHJvcGVydHkodkN0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx2Q3QudmVyc2lvbj0iMy45LjAiLChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGU9Qk87dC5BbmltYXRvcnM9Zmd0LHQuQXhlcz1BZ3QsdC5Db21wb25lbnRzPXR4dCx0LkNvbmZpZ3M9Q3l0LHQuRm9ybWF0dGVycz1wdnQsdC5SZW5kZXJDb250cm9sbGVyPXpfdCx0LlJlbmRlclBvbGljaWVzPVF5dCx0LlN5bWJvbEZhY3Rvcmllcz1Id3QsdC5EaXNwYXRjaGVycz1yeHQsdC5EcmF3ZXJzPVBNdCx0LkludGVyYWN0aW9ucz1ueHQsdC5QbG90cz1kRXQsdC5TY2FsZXM9WHZ0LHQuVXRpbHM9RF90LGUuX19leHBvcnRTdGFyKGR2dCx0KSx0LlRpbWVJbnRlcnZhbD1ZdnQuVGltZUludGVydmFsLGUuX19leHBvcnRTdGFyKE9fdCx0KSxlLl9fZXhwb3J0U3Rhcih5d3QsdCksZS5fX2V4cG9ydFN0YXIoZlN0LHQpLHQudmVyc2lvbj12Q3QudmVyc2lvbixlLl9fZXhwb3J0U3RhcihheHQsdCksZS5fX2V4cG9ydFN0YXIoR1N0LHQpLGUuX19leHBvcnRTdGFyKHZ4dCx0KSxlLl9fZXhwb3J0U3RhcihMeHQsdCksZS5fX2V4cG9ydFN0YXIobUV0LHQpLGUuX19leHBvcnRTdGFyKHNTdCx0KSxlLl9fZXhwb3J0U3RhcihMYnQsdCksZS5fX2V4cG9ydFN0YXIobGJ0LHQpfSkoTk8pLChmdW5jdGlvbih0KXt0W3QuTE9BRElORz0wXT0iTE9BRElORyIsdFt0LkxPQURFRD0xXT0iTE9BREVEIn0pKHlDdHx8KHlDdD17fSkpO2NvbnN0IHhDdD1be2NoYXJhY3Rlcjoi4pe8IixtZXRob2Q6Tk8uU3ltYm9sRmFjdG9yaWVzLnNxdWFyZX0se2NoYXJhY3Rlcjoi4peGIixtZXRob2Q6Tk8uU3ltYm9sRmFjdG9yaWVzLmRpYW1vbmR9LHtjaGFyYWN0ZXI6IuKWsiIsbWV0aG9kOk5PLlN5bWJvbEZhY3Rvcmllcy50cmlhbmdsZX0se2NoYXJhY3Rlcjoi4piFIixtZXRob2Q6Tk8uU3ltYm9sRmFjdG9yaWVzLnN0YXJ9LHtjaGFyYWN0ZXI6IuKcmiIsbWV0aG9kOk5PLlN5bWJvbEZhY3Rvcmllcy5jcm9zc31dO3ZhciB3Q3Q7IShmdW5jdGlvbih0KXt0LlNURVA9InN0ZXAiLHQuUkVMQVRJVkU9InJlbGF0aXZlIix0LldBTExfVElNRT0id2FsbF90aW1lIn0pKHdDdHx8KHdDdD17fSkpO2Z1bmN0aW9uIFNDdCh0KXtyZXR1cm4gZT0+e2xldCBuLGk9TWF0aC5hYnMoZSk7cmV0dXJuIGk8MWUtMTUmJihpPTApLG49RHkoaT49MWU0fHxpPjAmJmk8LjAxPyIuIit0KyJ+ZSI6Ii4iK3QrIn5nIiksbihlKX19Y29uc3QgTUN0PUR5KCIuNH5zIik7ZnVuY3Rpb24gRUN0KCl7bGV0IHQ9bmV3IE5PLlNjYWxlcy5MaW5lYXI7dC50aWNrR2VuZXJhdG9yKE5PLlNjYWxlcy5UaWNrR2VuZXJhdG9ycy5pbnRlZ2VyVGlja0dlbmVyYXRvcigpKTtsZXQgZT1uZXcgTk8uQXhlcy5OdW1lcmljKHQsImJvdHRvbSIpO3JldHVybiBlLmZvcm1hdHRlcihNQ3QpLHtzY2FsZTp0LGF4aXM6ZSxhY2Nlc3Nvcjp0PT50LnN0ZXB9fWxldCBUQ3Q9Tk8uRm9ybWF0dGVycy50aW1lKCIlYSAlYiAlZSwgJUg6JU06JVMiKTtsZXQgQ0N0PSh0LGUsbik9PntpZihudWxsIT10LnJlbGF0aXZlKXJldHVybiB0LnJlbGF0aXZlO2xldCBpPW4uZGF0YSgpO3JldHVybigrdC53YWxsX3RpbWUtKGkubGVuZ3RoPjA/K2lbMF0ud2FsbF90aW1lOjApKS8zNmU1fSxBQ3Q9dD0+e2xldCBlPSIiLG49TWF0aC5mbG9vcih0LzI0KTt0LT0yNCpuLG4mJihlKz1uKyJkICIpO2xldCBpPU1hdGguZmxvb3IodCk7dC09aSx0Kj02MCwoaXx8bikmJihlKz1pKyJoICIpO2xldCByPU1hdGguZmxvb3IodCk7cmV0dXJuIHQtPXIsdCo9NjAsKHJ8fGl8fG4pJiYoZSs9cisibSAiKSxlK01hdGguZmxvb3IodCkrInMifTtmdW5jdGlvbiBrQ3QodCl7c3dpdGNoKHQpe2Nhc2Ugd0N0LlNURVA6cmV0dXJuIEVDdCgpO2Nhc2Ugd0N0LldBTExfVElNRTpyZXR1cm4oZnVuY3Rpb24gZSgpe2xldCB0PW5ldyBOTy5TY2FsZXMuVGltZTtyZXR1cm57c2NhbGU6dCxheGlzOm5ldyBOTy5BeGVzLlRpbWUodCwiYm90dG9tIiksYWNjZXNzb3I6dD0+dC53YWxsX3RpbWV9fSkoKTtjYXNlIHdDdC5SRUxBVElWRTpyZXR1cm4oZnVuY3Rpb24gbigpe2xldCB0PW5ldyBOTy5TY2FsZXMuTGluZWFyO3JldHVybntzY2FsZTp0LGF4aXM6bmV3IE5PLkF4ZXMuTnVtZXJpYyh0LCJib3R0b20iKSxhY2Nlc3NvcjpDQ3R9fSkoKTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiaW52YWxpZCB4VHlwZTogIit0KX19Y29uc3QgTEN0PVsxLDAsMCwxLDAsMF07ZnVuY3Rpb24gUEN0KHQpe2NvbnN0IGU9KGZ1bmN0aW9uIG4odCl7Y29uc3QgZT1bXTtmb3IoO3QmJnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudDspaWYoZS5wdXNoKHQpLHQuYXNzaWduZWRTbG90KXQ9dC5hc3NpZ25lZFNsb3Q7ZWxzZSBpZih0LnBhcmVudEVsZW1lbnQpdD10LnBhcmVudEVsZW1lbnQ7ZWxzZXtjb25zdCBlPXQucGFyZW50Tm9kZTt0PWUgaW5zdGFuY2VvZiBEb2N1bWVudEZyYWdtZW50P2UuaG9zdDplIT09dD9lOm51bGx9cmV0dXJuIGV9KSh0KTtsZXQgaT1MQ3Qscj1udWxsO2Zvcihjb25zdCB0IG9mIGUpe2NvbnN0IGU9Tk8uVXRpbHMuRE9NLmdldEVsZW1lbnRUcmFuc2Zvcm0odCk7aWYobnVsbCE9ZSl7Y29uc3Qgbj10LmNsaWVudFdpZHRoLzIscj10LmNsaWVudEhlaWdodC8yO2k9Tk8uVXRpbHMuTWF0aC5tdWx0aXBseVRyYW5zbGF0ZShpLFtuLHJdKSxpPU5PLlV0aWxzLk1hdGgubXVsdGlwbHlNYXRyaXgoaSxOTy5VdGlscy5NYXRoLmludmVydE1hdHJpeChlKSksaT1OTy5VdGlscy5NYXRoLm11bHRpcGx5VHJhbnNsYXRlKGksWy1uLC1yXSl9bGV0IG49dC5zY3JvbGxMZWZ0LG89dC5zY3JvbGxUb3A7bnVsbCE9PXImJnQhPT1yfHwobi09dC5vZmZzZXRMZWZ0K3QuY2xpZW50TGVmdCxvLT10Lm9mZnNldFRvcCt0LmNsaWVudFRvcCxyPXQub2Zmc2V0UGFyZW50KSxpPU5PLlV0aWxzLk1hdGgubXVsdGlwbHlUcmFuc2xhdGUoaSxbbixvXSl9cmV0dXJuIGl9Y2xhc3MgTkN0IGV4dGVuZHMgTk8uVXRpbHMuVHJhbnNsYXRvcntjb21wdXRlUG9zaXRpb24odCxlKXtjb25zdCBuPXt4OnQseTplfSxpPVBDdCh0aGlzLl9yb290RWxlbWVudCk7aWYobnVsbD09aSlyZXR1cm4gbjtyZXR1cm4gTk8uVXRpbHMuTWF0aC5hcHBseVRyYW5zZm9ybShpLG4pfX1jbGFzcyBJQ3QgZXh0ZW5kcyBOTy5EaXNwYXRjaGVycy5Nb3VzZXtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KSx0aGlzLl9ldmVudFRhcmdldD10LnJvb3QoKS5yb290RWxlbWVudCgpLm5vZGUoKSx0aGlzLl90cmFuc2xhdG9yPW5ldyBOQ3QodC5yb290KCkucm9vdEVsZW1lbnQoKS5ub2RlKCkpfXN0YXRpYyBnZXREaXNwYXRjaGVyKHQpe2NvbnN0IGU9dC5yb290KCkucm9vdEVsZW1lbnQoKTtsZXQgbj1lW0lDdC5fRElTUEFUQ0hFUl9LRVldO3JldHVybiBufHwobj1uZXcgSUN0KHQpLGVbSUN0Ll9ESVNQQVRDSEVSX0tFWV09biksbn19Y2xhc3MgUkN0IGV4dGVuZHMgTk8uRGlzcGF0Y2hlcnMuVG91Y2h7Y29uc3RydWN0b3IodCl7c3VwZXIodCksdGhpcy5fZXZlbnRUYXJnZXQ9dC5yb290KCkucm9vdEVsZW1lbnQoKS5ub2RlKCksdGhpcy5fdHJhbnNsYXRvcj1uZXcgTkN0KHQucm9vdCgpLnJvb3RFbGVtZW50KCkubm9kZSgpKX1zdGF0aWMgZ2V0RGlzcGF0Y2hlcih0KXtjb25zdCBlPXQucm9vdCgpLnJvb3RFbGVtZW50KCk7bGV0IG49ZVtSQ3QuX0RJU1BBVENIRVJfS0VZXTtyZXR1cm4gbnx8KG49bmV3IFJDdCh0KSxlW1JDdC5fRElTUEFUQ0hFUl9LRVldPW4pLG59fU5PLkludGVyYWN0aW9uLnByb3RvdHlwZS5faXNJbnNpZGVDb21wb25lbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIDA8PXQueCYmMDw9dC55JiZ0Lng8dGhpcy5fY29tcG9uZW50QXR0YWNoZWRUby53aWR0aCgpJiZ0Lnk8dGhpcy5fY29tcG9uZW50QXR0YWNoZWRUby5oZWlnaHQoKX07Y2xhc3MgT0N0IGV4dGVuZHMgTk8uSW50ZXJhY3Rpb25zLlBvaW50ZXJ7X2FuY2hvcih0KXtjb25zdCBlPXRoaXM7ZS5faXNBbmNob3JlZD0hMCxlLl9tb3VzZURpc3BhdGNoZXI9SUN0LmdldERpc3BhdGNoZXIoZS5fY29tcG9uZW50QXR0YWNoZWRUbyksZS5fbW91c2VEaXNwYXRjaGVyLm9uTW91c2VNb3ZlKGUuX21vdXNlTW92ZUNhbGxiYWNrKSxlLl90b3VjaERpc3BhdGNoZXI9UkN0LmdldERpc3BhdGNoZXIoZS5fY29tcG9uZW50QXR0YWNoZWRUbyksZS5fdG91Y2hEaXNwYXRjaGVyLm9uVG91Y2hTdGFydChlLl90b3VjaFN0YXJ0Q2FsbGJhY2spfX12YXIgekN0OyEoZnVuY3Rpb24odCl7dC5BVVRPPSJhdXRvIix0LkJPVFRPTT0iYm90dG9tIix0LlJJR0hUPSJyaWdodCJ9KSh6Q3R8fCh6Q3Q9e30pKTtjb25zdCBEQ3Q9e2JveFNoYWRvdzoiMCAxcHggNHB4IHJnYmEoMCwgMCwgMCwgLjMpIixvcGFjaXR5OjAscG9zaXRpb246ImZpeGVkIix3aWxsQ2hhbmdlOiJ0cmFuc2Zvcm0iLHpJbmRleDo1fTtsZXQgQkN0PWNsYXNzIGV4dGVuZHMoY3Iod2UpKXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5wb3NpdGlvbj16Q3QuQVVUTyx0aGlzLm1pbkRpc3RGcm9tRWRnZT0xNSx0aGlzLl9zdHlsZUNhY2hlPW51bGwsdGhpcy5fcmFmPW51bGwsdGhpcy5fdHVubmVsPW51bGx9cmVhZHkoKXt0aGlzLl9zdHlsZUNhY2hlPW51bGwsdGhpcy5fcmFmPW51bGwsdGhpcy5fdHVubmVsPW51bGx9YXR0YWNoZWQoKXt0aGlzLl90dW5uZWw9dGhpcy5fY3JlYXRlVHVubmVsKCksdGhpcy5faGlkZU9uQmx1cj0oKT0+e2RvY3VtZW50LmhpZGRlbiYmdGhpcy5oaWRlKCl9LHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJ2aXNpYmlsaXR5Y2hhbmdlIix0aGlzLl9oaWRlT25CbHVyKX1kZXRhY2hlZCgpe3RoaXMuaGlkZSgpLHRoaXMuX3JlbW92ZVR1bm5lbCh0aGlzLl90dW5uZWwpLHRoaXMuX3R1bm5lbD1udWxsLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJ2aXNpYmlsaXR5Y2hhbmdlIix0aGlzLl9oaWRlT25CbHVyKX1jb250ZW50KCl7cmV0dXJuIHRoaXMuX3R1bm5lbC5zaGFkb3dSb290fWhpZGUoKXt3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5fcmFmKSx0aGlzLl9zdHlsZUNhY2hlPW51bGwsdGhpcy5fdHVubmVsLnN0eWxlLm9wYWNpdHk9MH11cGRhdGVBbmRQb3NpdGlvbih0KXt3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5fcmFmKSx0aGlzLl9yYWY9d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSgoKCk9Pnt0aGlzLmlzQXR0YWNoZWQmJnRoaXMuX3JlcG9zaXRpb25JbXBsKHQpfSkpfV9yZXBvc2l0aW9uSW1wbCh0KXtjb25zdCBlPXRoaXMuX3R1bm5lbCxuPXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksaT1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHI9d2luZG93LmlubmVySGVpZ2h0LG89ZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aCxhPW4udG9wLHM9YStuLmhlaWdodCxsPWkuaGVpZ2h0KzIwO2xldCBjPW51bGwsdT1NYXRoLm1heCh0aGlzLm1pbkRpc3RGcm9tRWRnZSxuLmxlZnQpLGg9bnVsbCxkPWE7dGhpcy5wb3NpdGlvbj09ekN0LlJJR0hUP3U9bi5yaWdodDooZD1zKzIwLG88dStpLndpZHRoK3RoaXMubWluRGlzdEZyb21FZGdlJiYodT1udWxsLGg9dGhpcy5taW5EaXN0RnJvbUVkZ2UpKSx0aGlzLnBvc2l0aW9uPT16Q3QuQVVUTyYmbi50b3AtbD4wJiZyPG4udG9wK24uaGVpZ2h0K2wmJihkPW51bGwsYz1yLWErMjApO2NvbnN0IHA9e2NvbnRhaW46ImNvbnRlbnQiLG9wYWNpdHk6MSxsZWZ0OnU/YCR7dX1weGA6bnVsbCxyaWdodDpoP2Ake2h9cHhgOm51bGwsdG9wOmQ/YCR7ZH1weGA6bnVsbCxib3R0b206Yz9gJHtjfXB4YDpudWxsfTtDZS5leHBvcnRzLmlzRXF1YWwodGhpcy5fc3R5bGVDYWNoZSxwKXx8KE9iamVjdC5hc3NpZ24oZS5zdHlsZSxwKSx0aGlzLl9zdHlsZUNhY2hlPXApfV9jcmVhdGVUdW5uZWwoKXtpZighdGhpcy5jb250ZW50Q29tcG9uZW50TmFtZSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiUmVxdWlyZSBgY29udGVudENvbXBvbmVudE5hbWVgIHRvIGJlIGEgbmFtZSBvZiBhIFBvbHltZXIgY29tcG9uZW50Iik7Y29uc3QgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KHRoaXMuY29udGVudENvbXBvbmVudE5hbWUpO3JldHVybiBPYmplY3QuYXNzaWduKHQuc3R5bGUsREN0KSxkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHQpLHR9X3JlbW92ZVR1bm5lbCh0KXtkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHQpfX07dChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sQkN0LnByb3RvdHlwZSwiY29udGVudENvbXBvbmVudE5hbWUiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sQkN0LnByb3RvdHlwZSwicG9zaXRpb24iLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sQkN0LnByb3RvdHlwZSwibWluRGlzdEZyb21FZGdlIix2b2lkIDApLEJDdD10KFtpKCJ2ei1jaGFydC10b29sdGlwIildLEJDdCk7Y29uc3QgSEN0PUR5KCIuMn5lIiksRkN0PUR5KCIuNH5yIiksVkN0PUR5KCIsfiIpO2Z1bmN0aW9uIFVDdCh0KXtpZigwPT09dClyZXR1cm4iMCI7Y29uc3QgZT1NYXRoLmFicyh0KTtyZXR1cm4gZT49MWU0fHxlPC4wMDE/SEN0KHQpOkZDdCh0KX1jb25zdCBqQ3Q9e2Zvcm1hdFRpY2s6VUN0LGZvcm1hdFNob3J0OlVDdCxmb3JtYXRSZWFkYWJsZSh0KXtjb25zdCBlPU1hdGguYWJzKHQpO3JldHVybiBlPj0xZTR8fGU8LjAwMT9IQ3QodCk6VkN0KHQpfSxmb3JtYXRMb25nOlZDdH07RHkoIjAuM35zIiksRHkoIiwuM35mIiksRHkoIi40fiIpO2NvbnN0IEdDdD16QSgpLnRpY2tGb3JtYXQoKTtsZXQgV0N0O2NvbnN0IHFDdD17Zm9ybWF0VGljazp0PT5HQ3QobmV3IERhdGUodCkpLGZvcm1hdFNob3J0OnQ9Pm5ldyBEYXRlKHQpLnRvTG9jYWxlU3RyaW5nKFdDdCx7eWVhcjoibnVtZXJpYyIsbW9udGg6InNob3J0IixkYXk6Im51bWVyaWMiLGhvdXI6Im51bWVyaWMiLG1pbnV0ZToibnVtZXJpYyIsc2Vjb25kOiJudW1lcmljIn0pLGZvcm1hdFJlYWRhYmxlOnQ9Pm5ldyBEYXRlKHQpLnRvTG9jYWxlU3RyaW5nKFdDdCx7eWVhcjoibnVtZXJpYyIsbW9udGg6InNob3J0IixkYXk6Im51bWVyaWMiLGhvdXI6Im51bWVyaWMiLG1pbnV0ZToibnVtZXJpYyIsc2Vjb25kOiJudW1lcmljIix0aW1lWm9uZU5hbWU6InNob3J0In0pLGZvcm1hdExvbmc6dD0+bmV3IERhdGUodCkudG9Mb2NhbGVTdHJpbmcoV0N0LHt5ZWFyOiJudW1lcmljIixtb250aDoibG9uZyIsZGF5OiJudW1lcmljIixob3VyOiJudW1lcmljIixtaW51dGU6Im51bWVyaWMiLHNlY29uZDoibnVtZXJpYyIsdGltZVpvbmVOYW1lOiJzaG9ydCIsZnJhY3Rpb25hbFNlY29uZERpZ2l0czozfSl9O3ZhciBZQ3Q7IShmdW5jdGlvbih0KXt0W3QuTElORUFSPTBdPSJMSU5FQVIiLHRbdC5MT0cxMD0xXT0iTE9HMTAiLHRbdC5USU1FPTJdPSJUSU1FIn0pKFlDdHx8KFlDdD17fSkpO2NsYXNzIFhDdHtjb25zdHJ1Y3Rvcigpe3RoaXMuZGVmYXVsdEZvcm1hdHRlcj1qQ3R9dHJhbnNmb3JtKHQsZSxuKXtjb25zdFtpLHJdPXQsbz1yLWksW2Esc109ZTtyZXR1cm4gMD09PW8/YToocy1hKS9vKihuLWkpK2F9Zm9yd2FyZCh0LGUsbil7cmV0dXJuIHRoaXMudHJhbnNmb3JtKHQsZSxuKX1yZXZlcnNlKHQsZSxuKXtyZXR1cm4gdGhpcy50cmFuc2Zvcm0oZSx0LG4pfW5pY2VEb21haW4odCl7bGV0W2Usbl09dDtpZihuPGUpdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIGlucHV0OiBtaW4gaXMgbGFyZ2VyIHRoYW4gbWF4Iik7aWYobj09PWUpcmV0dXJuIDA9PT1lP1stMSwxXTplPDA/WzIqZSwwXTpbMCwyKmVdO2NvbnN0IGk9Y0UoKSxyPS4wNSoobi1lK051bWJlci5FUFNJTE9OKSxbbyxhXT1pLmRvbWFpbihbZS1yLG4rcl0pLm5pY2UoKS5kb21haW4oKTtyZXR1cm5bbyxhXX10aWNrcyh0LGUpe3JldHVybiBjRSgpLmRvbWFpbih0KS50aWNrcyhlKX1pc1NhZmVOdW1iZXIodCl7cmV0dXJuIE51bWJlci5pc0Zpbml0ZSh0KX19Y2xhc3MgJEN0e2NvbnN0cnVjdG9yKCl7dGhpcy5kZWZhdWx0Rm9ybWF0dGVyPWpDdH10cmFuc2Zvcm0odCl7cmV0dXJuIE1hdGgubG9nMTAodD4wP3Q6TnVtYmVyLk1JTl9WQUxVRSl9dW50cmFuc2Zvcm0odCl7cmV0dXJuIE1hdGguZXhwKHQvTWF0aC5MT0cxMEUpfWZvcndhcmQodCxlLG4pe2lmKG48PTApcmV0dXJuIGVbMF07Y29uc3RbaSxyXT10LFtvLGFdPWUscz10aGlzLnRyYW5zZm9ybShpKSxsPXRoaXMudHJhbnNmb3JtKHIpLXMsYz1hLW87cmV0dXJuIG49dGhpcy50cmFuc2Zvcm0obiksYy8obCtOdW1iZXIuRVBTSUxPTikqKG4tcykrb31yZXZlcnNlKHQsZSxuKXtjb25zdFtpLHJdPXQsW28sYV09ZSxzPXRoaXMudHJhbnNmb3JtKGkpLGw9dGhpcy50cmFuc2Zvcm0ocik7cmV0dXJuIHRoaXMudW50cmFuc2Zvcm0oKGwtcykvKGEtbytOdW1iZXIuRVBTSUxPTikqKG4tbykrcyl9bmljZURvbWFpbih0KXtjb25zdFtlLG5dPXQ7aWYoZT5uKXRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCBpbnB1dDogbWluIGlzIGxhcmdlciB0aGFuIG1heCIpO2NvbnN0IGk9TWF0aC5tYXgoZSxOdW1iZXIuTUlOX1ZBTFVFKSxyPU1hdGgubWF4KG4sTnVtYmVyLk1JTl9WQUxVRSk7cmV0dXJuIG48PTA/W051bWJlci5NSU5fVkFMVUUsMV06W01hdGgubWF4KE51bWJlci5NSU5fVkFMVUUsLjUqaSksMipyXX10aWNrcyh0LGUpe2NvbnN0IG49dFswXTw9MD9OdW1iZXIuTUlOX1ZBTFVFOnRbMF0saT10WzFdPD0wP051bWJlci5NSU5fVkFMVUU6dFsxXSxyPXlFKCkuZG9tYWluKFtuLGldKS50aWNrcyhlKTtyZXR1cm4gci5sZW5ndGg/cjp0fWlzU2FmZU51bWJlcih0KXtyZXR1cm4gTnVtYmVyLmlzRmluaXRlKHQpJiZ0PjB9fWNsYXNzIEtDdHtjb25zdHJ1Y3Rvcigpe3RoaXMuc2NhbGU9ekEoKSx0aGlzLmRlZmF1bHRGb3JtYXR0ZXI9cUN0fWZvcndhcmQodCxlLG4pe3JldHVybiB0aGlzLnNjYWxlLmRvbWFpbih0KS5yYW5nZShlKShuKX1yZXZlcnNlKHQsZSxuKXtyZXR1cm4gdGhpcy5zY2FsZS5kb21haW4odCkucmFuZ2UoZSkuaW52ZXJ0KG4pLmdldFRpbWUoKX1uaWNlRG9tYWluKHQpe2NvbnN0W2Usbl09dGhpcy5zY2FsZS5kb21haW4odCkubmljZSgpLmRvbWFpbigpO3JldHVybltlLmdldFRpbWUoKSxuLmdldFRpbWUoKV19dGlja3ModCxlKXtyZXR1cm4gdGhpcy5zY2FsZS5kb21haW4odCkudGlja3MoZSkubWFwKCh0PT50LmdldFRpbWUoKSkpfWlzU2FmZU51bWJlcih0KXtyZXR1cm4gTnVtYmVyLmlzRmluaXRlKHQpfX1jbGFzcyBaQ3QgZXh0ZW5kcyBOTy5TY2FsZXMuTGluZWFye2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLl9pZ25vcmVPdXRsaWVyPSExLHRoaXMucGFkUHJvcG9ydGlvbiguMil9c2V0VmFsdWVQcm92aWRlckZvckRvbWFpbih0KXtyZXR1cm4gdGhpcy5fdmFsdWVQcm92aWRlckZvckRvbWFpbj10LHRoaXN9X25pY2VEb21haW4odCxlKXtjb25zdFtuLGldPXQ7cmV0dXJuKGZ1bmN0aW9uIHIodCl7c3dpdGNoKHQpe2Nhc2UgWUN0LkxJTkVBUjpyZXR1cm4gbmV3IFhDdDtjYXNlIFlDdC5MT0cxMDpyZXR1cm4gbmV3ICRDdDtjYXNlIFlDdC5USU1FOnJldHVybiBuZXcgS0N0O2RlZmF1bHQ6dGhyb3cgbmV3IFJhbmdlRXJyb3IoYFNjYWxlVHlwZSAke3R9IG5vdCBzdXBwb3J0ZWQuYCl9fSkoWUN0LkxJTkVBUikubmljZURvbWFpbihbbixpXSl9X2dldFVuYm91bmRlZEV4dGVudCh0KXtjb25zdCBlPXRoaXMuX2dldEFsbEluY2x1ZGVkVmFsdWVzKHQpO2xldCBuPXRoaXMuX2RlZmF1bHRFeHRlbnQoKTtpZigwIT09ZS5sZW5ndGgpe2NvbnN0IHQ9W05PLlV0aWxzLk1hdGgubWluKGUsblswXSksTk8uVXRpbHMuTWF0aC5tYXgoZSxuWzFdKV07bj10aGlzLl9uaWNlRG9tYWluKHQpfXJldHVybiBufV9nZXRBbGxJbmNsdWRlZFZhbHVlcyh0PSExKXtjb25zdCBlPXRoaXMuX3ZhbHVlUHJvdmlkZXJGb3JEb21haW4/dGhpcy5fdmFsdWVQcm92aWRlckZvckRvbWFpbigpOltdO3JldHVybiB0aGlzLmV4dGVudE9mVmFsdWVzKGUpfWV4dGVudE9mVmFsdWVzKHQpe2NvbnN0IGU9dC5maWx0ZXIoKHQ9Pk5PLlV0aWxzLk1hdGguaXNWYWxpZE51bWJlcih0KSkpO2xldCBuPWU7aWYodGhpcy5pZ25vcmVPdXRsaWVyKCkpe2NvbnN0IHQ9ZS5zb3J0KCgodCxlKT0+dC1lKSksaT1yYyh0LC4wNSkscj1yYyh0LC45NSk7bj1lLmZpbHRlcigodD0+dD49aSYmdDw9cikpfWNvbnN0IGk9R2wobik7cmV0dXJuIG51bGw9PWlbMF18fG51bGw9PWlbMV0/W106aX1pZ25vcmVPdXRsaWVyKHQpe3JldHVybiJib29sZWFuIj09dHlwZW9mIHQ/KHRoaXMuX2lnbm9yZU91dGxpZXI9dCx0aGlzKTp0aGlzLl9pZ25vcmVPdXRsaWVyfX1jbGFzcyBKQ3QgZXh0ZW5kcyBOTy5RdWFudGl0YXRpdmVTY2FsZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5faWdub3JlT3V0bGllcj0hMX1zZXRWYWx1ZVByb3ZpZGVyRm9yRG9tYWluKHQpe3JldHVybiB0aGlzLl92YWx1ZVByb3ZpZGVyRm9yRG9tYWluPXQsdGhpc31pZ25vcmVPdXRsaWVyKHQpe3JldHVybiJib29sZWFuIj09dHlwZW9mIHQ/KHRoaXMuX2lnbm9yZU91dGxpZXI9dCx0aGlzKTp0aGlzLl9pZ25vcmVPdXRsaWVyfV9nZXRBbGxJbmNsdWRlZFZhbHVlcyh0PSExKXtjb25zdCBlPXRoaXMuX3ZhbHVlUHJvdmlkZXJGb3JEb21haW4/dGhpcy5fdmFsdWVQcm92aWRlckZvckRvbWFpbigpOltdO3JldHVybiB0aGlzLmV4dGVudE9mVmFsdWVzKGUpfX1jb25zdCBRQ3Q9TWF0aC5wb3coMiwtMTA3NCk7ZnVuY3Rpb24gdEF0KHQpe3JldHVybiBNYXRoLmxvZzEwKHQpfWZ1bmN0aW9uIGVBdCh0KXtyZXR1cm4gTWF0aC5wb3coMTAsdCl9Y2xhc3MgbkF0IGV4dGVuZHMgSkN0e2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLl9kM0xvZ1NjYWxlPXlFKCksdGhpcy5wYWRQcm9wb3J0aW9uKC4yKX1zY2FsZSh0KXtyZXR1cm4gdDw9MD9OYU46dGhpcy5fZDNMb2dTY2FsZSh0KX1pbnZlcnQodCl7cmV0dXJuIHRoaXMuX2QzTG9nU2NhbGUuaW52ZXJ0KHQpfXNjYWxlVHJhbnNmb3JtYXRpb24odCl7cmV0dXJuIHRoaXMuc2NhbGUodCl9aW52ZXJ0ZWRUcmFuc2Zvcm1hdGlvbih0KXtyZXR1cm4gdGhpcy5pbnZlcnQodCl9Z2V0VHJhbnNmb3JtYXRpb25Eb21haW4oKXtyZXR1cm4gdGhpcy5kb21haW4oKX1zZXRUcmFuc2Zvcm1hdGlvbkRvbWFpbih0KXt0aGlzLmRvbWFpbih0KX1nZXRUcmFuc2Zvcm1hdGlvbkV4dGVudCgpe3JldHVybiB0aGlzLl9nZXRVbmJvdW5kZWRFeHRlbnQoITApfV9nZXREb21haW4oKXtyZXR1cm4gdGhpcy5fdW50cmFuc2Zvcm1lZERvbWFpbn1fc2V0RG9tYWluKHQpe3RoaXMuX3VudHJhbnNmb3JtZWREb21haW49dDtjb25zdFtlLG5dPXQ7c3VwZXIuX3NldERvbWFpbihbTWF0aC5tYXgoUUN0LGUpLG5dKX1fbmljZURvbWFpbih0LGUpe2NvbnN0W24saV09dCxyPU1hdGgubWF4KHRBdChRQ3QpLHRBdChuKSksbz10QXQoaSksYT1vLXIscz1hP2EqdGhpcy5wYWRQcm9wb3J0aW9uKCk6MTtyZXR1cm5bZUF0KE1hdGgubWF4KHRBdChRQ3QpLHItcykpLGVBdChvK3MpXX1fZ2V0VW5ib3VuZGVkRXh0ZW50KHQpe2NvbnN0IGU9dGhpcy5fZ2V0QWxsSW5jbHVkZWRWYWx1ZXModCk7bGV0IG49dGhpcy5fZGVmYXVsdEV4dGVudCgpO2lmKDAhPT1lLmxlbmd0aCl7Y29uc3QgdD1bTk8uVXRpbHMuTWF0aC5taW4oZSxuWzBdKSxOTy5VdGlscy5NYXRoLm1heChlLG5bMV0pXTtuPXRoaXMuX25pY2VEb21haW4odCl9cmV0dXJuIG59X2dldEFsbEluY2x1ZGVkVmFsdWVzKHQ9ITEpe3JldHVybiBzdXBlci5fZ2V0QWxsSW5jbHVkZWRWYWx1ZXMoKS5tYXAoKHQ9PnQ+MD90OlFDdCkpfV9kZWZhdWx0RXh0ZW50KCl7cmV0dXJuWzEsMTBdfV9iYWNraW5nU2NhbGVEb21haW4odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fZDNMb2dTY2FsZS5kb21haW4oKToodGhpcy5fZDNMb2dTY2FsZS5kb21haW4odCksdGhpcyl9X2dldFJhbmdlKCl7cmV0dXJuIHRoaXMuX2QzTG9nU2NhbGUucmFuZ2UoKX1fc2V0UmFuZ2UodCl7dGhpcy5fZDNMb2dTY2FsZS5yYW5nZSh0KX1kZWZhdWx0VGlja3MoKXtyZXR1cm4gdGhpcy5fZDNMb2dTY2FsZS50aWNrcygxKX10aWNrcygpe3JldHVybiB0aGlzLl9kM0xvZ1NjYWxlLnRpY2tzKCl9ZXh0ZW50T2ZWYWx1ZXModCl7Y29uc3QgZT10LmZpbHRlcigodD0+Tk8uVXRpbHMuTWF0aC5pc1ZhbGlkTnVtYmVyKHQpJiZ0PjApKTtsZXQgbj1lO2lmKHRoaXMuaWdub3JlT3V0bGllcigpKXtjb25zdCB0PWUubWFwKHRBdCkuc29ydCgoKHQsZSk9PnQtZSkpLGk9cmModCwuMDUpLHI9cmModCwuOTUpO249dC5maWx0ZXIoKHQ9PnQ+PWkmJnQ8PXIpKS5tYXAoZUF0KX1jb25zdCBpPUdsKG4pO3JldHVybiBudWxsPT1pWzBdfHxudWxsPT1pWzFdP1tdOml9fWNsYXNzIGlBdCBleHRlbmRzIE5PLkNvbXBvbmVudHMuU2VsZWN0aW9uQm94TGF5ZXJ7Y29uc3RydWN0b3IodCxlLG4pe3N1cGVyKCksdGhpcy5lYXNlRm49cWYsdGhpcy5fYW5pbWF0aW9uVGltZT03NTAsdGhpcy54U2NhbGUodCksdGhpcy55U2NhbGUoZSksdGhpcy5fZHJhZ0ludGVyYWN0aW9uPW5ldyBOTy5JbnRlcmFjdGlvbnMuRHJhZyx0aGlzLl9kb3VibGVDbGlja0ludGVyYWN0aW9uPW5ldyBOTy5JbnRlcmFjdGlvbnMuQ2xpY2ssdGhpcy5zZXR1cENhbGxiYWNrcygpLHRoaXMudW56b29tTWV0aG9kPW4sdGhpcy5vbkRldGFjaCgoKCk9Pnt0aGlzLl9kb3VibGVDbGlja0ludGVyYWN0aW9uLmRldGFjaEZyb20odGhpcyksdGhpcy5fZHJhZ0ludGVyYWN0aW9uLmRldGFjaEZyb20odGhpcyl9KSksdGhpcy5vbkFuY2hvcigoKCk9Pnt0aGlzLl9kb3VibGVDbGlja0ludGVyYWN0aW9uLmF0dGFjaFRvKHRoaXMpLHRoaXMuX2RyYWdJbnRlcmFjdGlvbi5hdHRhY2hUbyh0aGlzKX0pKX1pbnRlcmFjdGlvblN0YXJ0KHQpe3RoaXMub25TdGFydD10fWludGVyYWN0aW9uRW5kKHQpe3RoaXMub25FbmQ9dH1kcmFnSW50ZXJhY3Rpb24oKXtyZXR1cm4gdGhpcy5fZHJhZ0ludGVyYWN0aW9ufXNldHVwQ2FsbGJhY2tzKCl7bGV0IHQ9ITE7dGhpcy5fZHJhZ0ludGVyYWN0aW9uLm9uRHJhZ1N0YXJ0KCh0PT57dGhpcy5ib3VuZHMoe3RvcExlZnQ6dCxib3R0b21SaWdodDp0fSksdGhpcy5vblN0YXJ0KCl9KSksdGhpcy5fZHJhZ0ludGVyYWN0aW9uLm9uRHJhZygoKGUsbik9Pnt0aGlzLmJvdW5kcyh7dG9wTGVmdDplLGJvdHRvbVJpZ2h0Om59KSx0aGlzLmJveFZpc2libGUoITApLHQ9ITB9KSksdGhpcy5fZHJhZ0ludGVyYWN0aW9uLm9uRHJhZ0VuZCgoKGUsbik9Pnt0aGlzLmJveFZpc2libGUoITEpLHRoaXMuYm91bmRzKHt0b3BMZWZ0OmUsYm90dG9tUmlnaHQ6bn0pLHQ/dGhpcy56b29tKCk6dGhpcy5vbkVuZCgpLHQ9ITF9KSksdGhpcy5fZG91YmxlQ2xpY2tJbnRlcmFjdGlvbi5vbkRvdWJsZUNsaWNrKHRoaXMudW56b29tLmJpbmQodGhpcykpfWFuaW1hdGlvblRpbWUodCl7aWYobnVsbD09dClyZXR1cm4gdGhpcy5fYW5pbWF0aW9uVGltZTtpZih0PDApdGhyb3cgbmV3IEVycm9yKCJhbmltYXRpb25UaW1lIGNhbm5vdCBiZSBuZWdhdGl2ZSIpO3JldHVybiB0aGlzLl9hbmltYXRpb25UaW1lPXQsdGhpc31lYXNlKHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBFcnJvcigiZWFzZSBmdW5jdGlvbiBtdXN0IGJlIGEgZnVuY3Rpb24iKTtyZXR1cm4gMD09PXQoMCkmJjE9PT10KDEpfHxOTy5VdGlscy5XaW5kb3cud2FybigiRWFzaW5nIGZ1bmN0aW9uIGRvZXMgbm90IG1haW50YWluIGludmFyaWFudCBmKDApPT0wICYmIGYoMSk9PTEuIEJhZCBiZWhhdmlvciBtYXkgcmVzdWx0LiIpLHRoaXMuZWFzZUZuPXQsdGhpc316b29tKCl7bGV0IHQ9dGhpcy54RXh0ZW50KClbMF0udmFsdWVPZigpLGU9dGhpcy54RXh0ZW50KClbMV0udmFsdWVPZigpLG49dGhpcy55RXh0ZW50KClbMV0udmFsdWVPZigpLGk9dGhpcy55RXh0ZW50KClbMF0udmFsdWVPZigpO3QhPT1lJiZuIT09aSYmdGhpcy5pbnRlcnBvbGF0ZVpvb20odCxlLG4saSl9dW56b29tKCl7bGV0IHQ9dGhpcy54U2NhbGUoKTt0Ll9kb21haW5NaW49bnVsbCx0Ll9kb21haW5NYXg9bnVsbDtsZXQgZT10Ll9nZXRFeHRlbnQoKTt0aGlzLnhTY2FsZSgpLmRvbWFpbihlKSx0aGlzLnVuem9vbU1ldGhvZCgpfWlzWm9vbWluZyh0KXt0aGlzLl9kcmFnSW50ZXJhY3Rpb24uZW5hYmxlZCghdCksdGhpcy5fZG91YmxlQ2xpY2tJbnRlcmFjdGlvbi5lbmFibGVkKCF0KX1pbnRlcnBvbGF0ZVpvb20odCxlLG4saSl7bGV0IHI9dGhpcy54U2NhbGUoKS5kb21haW4oKVswXS52YWx1ZU9mKCksbz10aGlzLnhTY2FsZSgpLmRvbWFpbigpWzFdLnZhbHVlT2YoKSxhPXRoaXMueVNjYWxlKCkuZG9tYWluKClbMF0udmFsdWVPZigpLHM9dGhpcy55U2NhbGUoKS5kb21haW4oKVsxXS52YWx1ZU9mKCksbD10aGlzLmVhc2VGbixjPSh0LGUsbik9PnJwKHQsZSkobChuKSk7dGhpcy5pc1pvb21pbmcoITApO2xldCB1PURhdGUubm93KCksaD0oKT0+e2xldCBsPURhdGUubm93KCksZD0wPT09dGhpcy5fYW5pbWF0aW9uVGltZT8xOk1hdGgubWluKDEsKGwtdSkvdGhpcy5fYW5pbWF0aW9uVGltZSkscD1jKHIsdCxkKSxmPWMobyxlLGQpLG09YyhhLG4sZCksZz1jKHMsaSxkKTt0aGlzLnhTY2FsZSgpLmRvbWFpbihbcCxmXSksdGhpcy55U2NhbGUoKS5kb21haW4oW20sZ10pLGQ8MT9OTy5VdGlscy5ET00ucmVxdWVzdEFuaW1hdGlvbkZyYW1lUG9seWZpbGwoaCk6KHRoaXMub25FbmQoKSx0aGlzLmlzWm9vbWluZyghMSkpfTtoKCl9fXZhciByQXQsb0F0LGFBdDshKGZ1bmN0aW9uKHQpe3RbdC5OT05FPTBdPSJOT05FIix0W3QuRFJBR19aT09NSU5HPTFdPSJEUkFHX1pPT01JTkciLHRbdC5QQU5OSU5HPTJdPSJQQU5OSU5HIn0pKHJBdHx8KHJBdD17fSkpO2NsYXNzIHNBdCBleHRlbmRzIE5PLkNvbXBvbmVudHMuR3JvdXB7Y29uc3RydWN0b3IodCxlLG4pe3N1cGVyKCksdGhpcy5zdGF0ZT1yQXQuTk9ORSx0aGlzLnBhblN0YXJ0Q2FsbGJhY2s9bmV3IE5PLlV0aWxzLkNhbGxiYWNrU2V0LHRoaXMucGFuRW5kQ2FsbGJhY2s9bmV3IE5PLlV0aWxzLkNhbGxiYWNrU2V0LHRoaXMucGFuWm9vbT1uZXcgTk8uSW50ZXJhY3Rpb25zLlBhblpvb20odCxlKSx0aGlzLnBhblpvb20uZHJhZ0ludGVyYWN0aW9uKCkubW91c2VGaWx0ZXIoKHQ9PnNBdC5pc1BhbktleSh0KSYmMD09PXQuYnV0dG9uKSksdGhpcy5wYW5ab29tLndoZWVsRmlsdGVyKHRoaXMuY2FuU2Nyb2xsWm9vbSksdGhpcy5kcmFnWm9vbUxheWVyPW5ldyBpQXQodCxlLG4pLHRoaXMuZHJhZ1pvb21MYXllci5kcmFnSW50ZXJhY3Rpb24oKS5tb3VzZUZpbHRlcigodD0+IXNBdC5pc1BhbktleSh0KSYmMD09PXQuYnV0dG9uKSksdGhpcy5hcHBlbmQodGhpcy5kcmFnWm9vbUxheWVyKTtjb25zdCBpPXRoaXMub25XaGVlbC5iaW5kKHRoaXMpO3RoaXMub25BbmNob3IoKCgpPT57dGhpcy5fbW91c2VEaXNwYXRjaGVyPU5PLkRpc3BhdGNoZXJzLk1vdXNlLmdldERpc3BhdGNoZXIodGhpcyksdGhpcy5fbW91c2VEaXNwYXRjaGVyLm9uV2hlZWwoaSksdGhpcy5wYW5ab29tLmF0dGFjaFRvKHRoaXMpfSkpLHRoaXMub25EZXRhY2goKCgpPT57dGhpcy5wYW5ab29tLmRldGFjaEZyb20odGhpcyksdGhpcy5fbW91c2VEaXNwYXRjaGVyJiYodGhpcy5fbW91c2VEaXNwYXRjaGVyLm9mZldoZWVsKGkpLHRoaXMuX21vdXNlRGlzcGF0Y2hlcj1udWxsKX0pKSx0aGlzLnBhblpvb20uZHJhZ0ludGVyYWN0aW9uKCkub25EcmFnU3RhcnQoKCgpPT57dGhpcy5zdGF0ZT09ckF0Lk5PTkUmJnRoaXMuc2V0U3RhdGUockF0LlBBTk5JTkcpfSkpLHRoaXMucGFuWm9vbS5kcmFnSW50ZXJhY3Rpb24oKS5vbkRyYWdFbmQoKCgpPT57dGhpcy5zdGF0ZT09ckF0LlBBTk5JTkcmJnRoaXMuc2V0U3RhdGUockF0Lk5PTkUpfSkpLHRoaXMuZHJhZ1pvb21MYXllci5kcmFnSW50ZXJhY3Rpb24oKS5vbkRyYWdTdGFydCgoKCk9Pnt0aGlzLnN0YXRlPT1yQXQuTk9ORSYmdGhpcy5zZXRTdGF0ZShyQXQuRFJBR19aT09NSU5HKX0pKSx0aGlzLmRyYWdab29tTGF5ZXIuZHJhZ0ludGVyYWN0aW9uKCkub25EcmFnRW5kKCgoKT0+e3RoaXMuc3RhdGU9PXJBdC5EUkFHX1pPT01JTkcmJnRoaXMuc2V0U3RhdGUockF0Lk5PTkUpfSkpfW9uV2hlZWwodCxlKXtpZih0aGlzLmNhblNjcm9sbFpvb20oZSkpcmV0dXJuO2NvbnN0IG49dGhpcy5lbGVtZW50KCk7aWYoIW4uc2VsZWN0KCIuaGVscCIpLmVtcHR5KCkpcmV0dXJuO2NvbnN0IGk9bi5hcHBlbmQoImRpdiIpLmNsYXNzZWQoImhlbHAiLCEwKTtpLmFwcGVuZCgic3BhbiIpLnRleHQoIkFsdCArIFNjcm9sbCB0byBab29tIiksaS5vbigiYW5pbWF0aW9uZW5kIiwoKCk9PntpLnJlbW92ZSgpfSkpfXN0YXRpYyBpc1BhbktleSh0KXtyZXR1cm4gQm9vbGVhbih0LmFsdEtleSl8fEJvb2xlYW4odC5zaGlmdEtleSl9Y2FuU2Nyb2xsWm9vbSh0KXtyZXR1cm4gdC5hbHRLZXl9c2V0U3RhdGUodCl7aWYodGhpcy5zdGF0ZT09dClyZXR1cm47Y29uc3QgZT10aGlzLnN0YXRlO3RoaXMuc3RhdGU9dCx0aGlzLnJvb3QoKS5yZW1vdmVDbGFzcyh0aGlzLnN0YXRlQ2xhc3NOYW1lKGUpKSx0aGlzLnJvb3QoKS5hZGRDbGFzcyh0aGlzLnN0YXRlQ2xhc3NOYW1lKHQpKSxlPT1yQXQuUEFOTklORyYmdGhpcy5wYW5FbmRDYWxsYmFjay5jYWxsQ2FsbGJhY2tzKCksdD09ckF0LlBBTk5JTkcmJnRoaXMucGFuU3RhcnRDYWxsYmFjay5jYWxsQ2FsbGJhY2tzKCl9c3RhdGVDbGFzc05hbWUodCl7c3dpdGNoKHQpe2Nhc2UgckF0LlBBTk5JTkc6cmV0dXJuInBhbm5pbmciO2Nhc2UgckF0LkRSQUdfWk9PTUlORzpyZXR1cm4iZHJhZy16b29taW5nIjtjYXNlIHJBdC5OT05FOmRlZmF1bHQ6cmV0dXJuIiJ9fW9uUGFuU3RhcnQodCl7dGhpcy5wYW5TdGFydENhbGxiYWNrLmFkZCh0KX1vblBhbkVuZCh0KXt0aGlzLnBhbkVuZENhbGxiYWNrLmFkZCh0KX1vblNjcm9sbFpvb20odCl7dGhpcy5wYW5ab29tLm9uWm9vbUVuZCh0KX1vbkRyYWdab29tU3RhcnQodCl7dGhpcy5kcmFnWm9vbUxheWVyLmludGVyYWN0aW9uU3RhcnQodCl9b25EcmFnWm9vbUVuZCh0KXt0aGlzLmRyYWdab29tTGF5ZXIuaW50ZXJhY3Rpb25FbmQodCl9fSEoZnVuY3Rpb24odCl7dFt0LlRFWFQ9MF09IlRFWFQiLHRbdC5ET009MV09IkRPTSJ9KShvQXR8fChvQXQ9e30pKSwoZnVuY3Rpb24odCl7dC5MT0c9ImxvZyIsdC5MSU5FQVI9ImxpbmVhciJ9KShhQXR8fChhQXQ9e30pKTtjbGFzcyBsQXR7Y29uc3RydWN0b3IodCxlLG4saSxyLG8sYSxzLGwsYyx1KXt0aGlzLmRpcnR5RGF0YXNldHM9bmV3IFNldCx0aGlzLnNlcmllc05hbWVzPVtdLHRoaXMubmFtZTJkYXRhc2V0cz17fSx0aGlzLmNvbG9yU2NhbGU9aSx0aGlzLnRvb2x0aXA9cix0aGlzLmRhdGFzZXRzPVtdLHRoaXMuX2lnbm9yZVlPdXRsaWVycz0hMSx0aGlzLmxhc3RQb2ludHNEYXRhc2V0PW5ldyBOTy5EYXRhc2V0LHRoaXMubmFuRGF0YXNldD1uZXcgTk8uRGF0YXNldCx0aGlzLnlWYWx1ZUFjY2Vzc29yPWUsdGhpcy5zeW1ib2xGdW5jdGlvbj1jLHRoaXMuX2RlZmF1bHRYUmFuZ2U9cyx0aGlzLl9kZWZhdWx0WVJhbmdlPWwsdGhpcy50b29sdGlwQ29sdW1ucz1vLHRoaXMuYnVpbGRDaGFydCh0LGUsbixhLHUpfWJ1aWxkQ2hhcnQodCxlLG4saSxyKXt0aGlzLmRlc3Ryb3koKTtjb25zdCBvPXQoKTt0aGlzLnhBY2Nlc3Nvcj1vLmFjY2Vzc29yLHRoaXMueFNjYWxlPW8uc2NhbGUsdGhpcy54QXhpcz1vLmF4aXMsdGhpcy54QXhpcy5tYXJnaW4oMSkudGlja0xhYmVsUGFkZGluZygzKSxyJiZ0aGlzLnhBeGlzLmZvcm1hdHRlcihyKSx0aGlzLnlTY2FsZT1sQXQuZ2V0WVNjYWxlRnJvbVR5cGUobiksdGhpcy55U2NhbGUuc2V0VmFsdWVQcm92aWRlckZvckRvbWFpbigoKCk9PnRoaXMuZ2V0VmFsdWVzRm9yWUF4aXNEb21haW5Db21wdXRlKCkpKSx0aGlzLnlBeGlzPW5ldyBOTy5BeGVzLk51bWVyaWModGhpcy55U2NhbGUsImxlZnQiKTtsZXQgYT1TQ3QoMyk7dGhpcy55QXhpcy5tYXJnaW4oMCkudGlja0xhYmVsUGFkZGluZyg1KS5mb3JtYXR0ZXIoYSksdGhpcy55QXhpcy51c2VzVGV4dFdpZHRoQXBwcm94aW1hdGlvbighMCksdGhpcy5maWxsQXJlYT1pO2NvbnN0IHM9bmV3IHNBdCh0aGlzLnhTY2FsZSx0aGlzLnlTY2FsZSwoKCk9PnRoaXMucmVzZXREb21haW4oKSkpO3RoaXMudG9vbHRpcEludGVyYWN0aW9uPXRoaXMuY3JlYXRlVG9vbHRpcEludGVyYWN0aW9uKHMpLHRoaXMudG9vbHRpcFBvaW50c0NvbXBvbmVudD1uZXcgTk8uQ29tcG9uZW50O2NvbnN0IGw9dGhpcy5idWlsZFBsb3QodGhpcy54U2NhbGUsdGhpcy55U2NhbGUsaSk7dGhpcy5ncmlkbGluZXM9bmV3IE5PLkNvbXBvbmVudHMuR3JpZGxpbmVzKHRoaXMueFNjYWxlLHRoaXMueVNjYWxlKTtsZXQgYz1udWxsO24hPT1hQXQuTE9HJiYoYz1uZXcgTk8uQ29tcG9uZW50cy5HdWlkZUxpbmVMYXllcigiaG9yaXpvbnRhbCIpLGMuc2NhbGUodGhpcy55U2NhbGUpLnZhbHVlKDApKTtsZXQgdT1uZXcgTk8uQ29tcG9uZW50cy5HdWlkZUxpbmVMYXllcigidmVydGljYWwiKTt1LnNjYWxlKHRoaXMueFNjYWxlKS52YWx1ZSgwKSx0aGlzLmNlbnRlcj1uZXcgTk8uQ29tcG9uZW50cy5Hcm91cChbdGhpcy5ncmlkbGluZXMsYyx1LGwsdGhpcy50b29sdGlwUG9pbnRzQ29tcG9uZW50LHNdKSx0aGlzLmNlbnRlci5hZGRDbGFzcygibWFpbiIpLHRoaXMub3V0ZXI9bmV3IE5PLkNvbXBvbmVudHMuVGFibGUoW1t0aGlzLnlBeGlzLHRoaXMuY2VudGVyXSxbbnVsbCx0aGlzLnhBeGlzXV0pfWJ1aWxkUGxvdCh0LGUsbil7biYmKHRoaXMubWFyZ2luQXJlYVBsb3Q9bmV3IE5PLlBsb3RzLkFyZWEsdGhpcy5tYXJnaW5BcmVhUGxvdC54KHRoaXMueEFjY2Vzc29yLHQpLHRoaXMubWFyZ2luQXJlYVBsb3QueShuLmhpZ2hlckFjY2Vzc29yLGUpLHRoaXMubWFyZ2luQXJlYVBsb3QueTAobi5sb3dlckFjY2Vzc29yKSx0aGlzLm1hcmdpbkFyZWFQbG90LmF0dHIoImZpbGwiLCgodCxlLG4pPT50aGlzLmNvbG9yU2NhbGUuc2NhbGUobi5tZXRhZGF0YSgpLm5hbWUpKSksdGhpcy5tYXJnaW5BcmVhUGxvdC5hdHRyKCJmaWxsLW9wYWNpdHkiLC4zKSx0aGlzLm1hcmdpbkFyZWFQbG90LmF0dHIoInN0cm9rZS13aWR0aCIsMCkpLHRoaXMuc21vb3RoZWRBY2Nlc3Nvcj10PT50LnNtb290aGVkO2xldCBpPW5ldyBOTy5QbG90cy5MaW5lO2kueCh0aGlzLnhBY2Nlc3Nvcix0KSxpLnkodGhpcy55VmFsdWVBY2Nlc3NvcixlKSxpLmF0dHIoInN0cm9rZSIsKCh0LGUsbik9PnRoaXMuY29sb3JTY2FsZS5zY2FsZShuLm1ldGFkYXRhKCkubmFtZSkpKSx0aGlzLmxpbmVQbG90PWksdGhpcy5zZXR1cFRvb2x0aXBzKGkpO2xldCByPW5ldyBOTy5QbG90cy5MaW5lO2lmKHIueCh0aGlzLnhBY2Nlc3Nvcix0KSxyLnkodGhpcy5zbW9vdGhlZEFjY2Vzc29yLGUpLHIuYXR0cigic3Ryb2tlIiwoKHQsZSxuKT0+dGhpcy5jb2xvclNjYWxlLnNjYWxlKG4ubWV0YWRhdGEoKS5uYW1lKSkpLHRoaXMuc21vb3RoTGluZVBsb3Q9cix0aGlzLnN5bWJvbEZ1bmN0aW9uKXtjb25zdCBuPW5ldyBOTy5QbG90cy5TY2F0dGVyO24ueCh0aGlzLnhBY2Nlc3Nvcix0KSxuLnkodGhpcy55VmFsdWVBY2Nlc3NvcixlKSxuLmF0dHIoImZpbGwiLCgodCxlLG4pPT50aGlzLmNvbG9yU2NhbGUuc2NhbGUobi5tZXRhZGF0YSgpLm5hbWUpKSksbi5hdHRyKCJvcGFjaXR5IiwxKSxuLnNpemUoOCksbi5zeW1ib2woKCh0LGUsbik9PnRoaXMuc3ltYm9sRnVuY3Rpb24obi5tZXRhZGF0YSgpLm5hbWUpKSksdGhpcy5tYXJrZXJzU2NhdHRlclBsb3Q9bn1sZXQgbz1uZXcgTk8uUGxvdHMuU2NhdHRlcjtvLngodGhpcy54QWNjZXNzb3IsdCksby55KHRoaXMueVZhbHVlQWNjZXNzb3IsZSksby5hdHRyKCJmaWxsIiwodD0+dGhpcy5jb2xvclNjYWxlLnNjYWxlKHQubmFtZSkpKSxvLmF0dHIoIm9wYWNpdHkiLDEpLG8uc2l6ZSg4KSxvLmRhdGFzZXRzKFt0aGlzLmxhc3RQb2ludHNEYXRhc2V0XSksdGhpcy5zY2F0dGVyUGxvdD1vO2xldCBhPW5ldyBOTy5QbG90cy5TY2F0dGVyO2EueCh0aGlzLnhBY2Nlc3Nvcix0KSxhLnkoKHQ9PnQuZGlzcGxheVkpLGUpLGEuYXR0cigiZmlsbCIsKHQ9PnRoaXMuY29sb3JTY2FsZS5zY2FsZSh0Lm5hbWUpKSksYS5hdHRyKCJvcGFjaXR5IiwxKSxhLnNpemUoMTIpLGEuZGF0YXNldHMoW3RoaXMubmFuRGF0YXNldF0pLGEuc3ltYm9sKE5PLlN5bWJvbEZhY3Rvcmllcy50cmlhbmdsZSksdGhpcy5uYW5EaXNwbGF5PWE7Y29uc3Qgcz1bYSxvLHIsaV07cmV0dXJuIHRoaXMubWFyZ2luQXJlYVBsb3QmJnMucHVzaCh0aGlzLm1hcmdpbkFyZWFQbG90KSx0aGlzLm1hcmtlcnNTY2F0dGVyUGxvdCYmcy5wdXNoKHRoaXMubWFya2Vyc1NjYXR0ZXJQbG90KSxuZXcgTk8uQ29tcG9uZW50cy5Hcm91cChzKX1pZ25vcmVZT3V0bGllcnModCl7dCE9PXRoaXMuX2lnbm9yZVlPdXRsaWVycyYmKHRoaXMuX2lnbm9yZVlPdXRsaWVycz10LHRoaXMudXBkYXRlU3BlY2lhbERhdGFzZXRzKCksdGhpcy55U2NhbGUuaWdub3JlT3V0bGllcih0KSx0aGlzLnJlc2V0WURvbWFpbigpKX1nZXRWYWx1ZXNGb3JZQXhpc0RvbWFpbkNvbXB1dGUoKXtjb25zdCB0PXRoaXMuZ2V0QWNjZXNzb3JzRm9yQ29tcHV0aW5nWVJhbmdlKCk7cmV0dXJuIENlLmV4cG9ydHMuZmxhdHRlbkRlZXAodGhpcy5kYXRhc2V0cy5tYXAoKGU9PnQubWFwKCh0PT5lLmRhdGEoKS5tYXAoKG49PnQobiwtMSxlKSkpKSkpKSkuZmlsdGVyKGlzRmluaXRlKX11cGRhdGVTcGVjaWFsRGF0YXNldHMoKXtjb25zdCB0PXRoaXMuZ2V0WUF4aXNBY2Nlc3NvcigpO2xldCBlPXRoaXMuZGF0YXNldHMubWFwKChlPT57bGV0IG49bnVsbCxpPWUuZGF0YSgpLmZpbHRlcigobj0+IWlzTmFOKHQobiwtMSxlKSkpKTtpZihpLmxlbmd0aD4wKXtuPWlbaS5sZW5ndGgtMV0sbi5uYW1lPWUubWV0YWRhdGEoKS5uYW1lLG4ucmVsYXRpdmU9Q0N0KG4sMCxlKX1yZXR1cm4gbn0pKS5maWx0ZXIoKHQ9Pm51bGwhPXQpKTt0aGlzLmxhc3RQb2ludHNEYXRhc2V0LmRhdGEoZSksdGhpcy5tYXJrZXJzU2NhdHRlclBsb3QmJnRoaXMubWFya2Vyc1NjYXR0ZXJQbG90LmRhdGFzZXRzKHRoaXMuZGF0YXNldHMubWFwKHRoaXMuY3JlYXRlU2FtcGxlZERhdGFzZXRGb3JNYXJrZXJzKSk7bGV0IG49Q2UuZXhwb3J0cy5mbGF0dGVuKHRoaXMuZGF0YXNldHMubWFwKChlPT57bGV0IG49bnVsbCxpPWUuZGF0YSgpLHI9MDtmb3IoO3I8aS5sZW5ndGgmJm51bGw9PW47KWlzTmFOKHQoaVtyXSwtMSxlKSl8fChuPXQoaVtyXSwtMSxlKSkscisrO251bGw9PW4mJihuPTApO2xldCBvPVtdO2ZvcihyPTA7cjxpLmxlbmd0aDtyKyspaXNOYU4odChpW3JdLC0xLGUpKT8oaVtyXS5uYW1lPWUubWV0YWRhdGEoKS5uYW1lLGlbcl0uZGlzcGxheVk9bixpW3JdLnJlbGF0aXZlPUNDdChpW3JdLDAsZSksby5wdXNoKGlbcl0pKTpuPXQoaVtyXSwtMSxlKTtyZXR1cm4gb30pKSk7dGhpcy5uYW5EYXRhc2V0LmRhdGEobil9cmVzZXREb21haW4oKXt0aGlzLnJlc2V0WERvbWFpbigpLHRoaXMucmVzZXRZRG9tYWluKCl9cmVzZXRYRG9tYWluKCl7bGV0IHQ7aWYobnVsbCE9dGhpcy5fZGVmYXVsdFhSYW5nZSl0PXRoaXMuX2RlZmF1bHRYUmFuZ2U7ZWxzZXtjb25zdCBlPXRoaXMueFNjYWxlO2UuX2RvbWFpbk1pbj1udWxsLGUuX2RvbWFpbk1heD1udWxsLHQ9ZS5fZ2V0RXh0ZW50KCl9dGhpcy54U2NhbGUuZG9tYWluKHQpfXJlc2V0WURvbWFpbigpe251bGwhPXRoaXMuX2RlZmF1bHRZUmFuZ2U/dGhpcy55U2NhbGUuZG9tYWluKHRoaXMuX2RlZmF1bHRZUmFuZ2UpOih0aGlzLnlTY2FsZS5hdXRvRG9tYWluKCksdGhpcy55U2NhbGUuZG9tYWluKHRoaXMueVNjYWxlLmRvbWFpbigpKSl9Z2V0QWNjZXNzb3JzRm9yQ29tcHV0aW5nWVJhbmdlKCl7Y29uc3QgdD1bdGhpcy5nZXRZQXhpc0FjY2Vzc29yKCldO3JldHVybiB0aGlzLmZpbGxBcmVhJiZ0LnB1c2godGhpcy5maWxsQXJlYS5sb3dlckFjY2Vzc29yLHRoaXMuZmlsbEFyZWEuaGlnaGVyQWNjZXNzb3IpLHR9Z2V0WUF4aXNBY2Nlc3Nvcigpe3JldHVybiB0aGlzLnNtb290aGluZ0VuYWJsZWQ/dGhpcy5zbW9vdGhlZEFjY2Vzc29yOnRoaXMueVZhbHVlQWNjZXNzb3J9Y3JlYXRlVG9vbHRpcEludGVyYWN0aW9uKHQpe2NvbnN0IGU9bmV3IE9DdCxuPSgpPT57ZS5lbmFibGVkKCExKSx0aGlzLmhpZGVUb29sdGlwcygpfSxpPSgpPT5lLmVuYWJsZWQoITApO3JldHVybiB0Lm9uUGFuU3RhcnQobiksdC5vbkRyYWdab29tU3RhcnQobiksdC5vblBhbkVuZChpKSx0Lm9uRHJhZ1pvb21FbmQoaSksdC5vblNjcm9sbFpvb20oKCgpPT50aGlzLnVwZGF0ZVRvb2x0aXBDb250ZW50KHRoaXMuX2xhc3RNb3VzZVBvc2l0aW9uKSkpLGUub25Qb2ludGVyTW92ZSgodD0+e3RoaXMuX2xhc3RNb3VzZVBvc2l0aW9uPXQsdGhpcy51cGRhdGVUb29sdGlwQ29udGVudCh0KX0pKSxlLm9uUG9pbnRlckV4aXQoKCgpPT50aGlzLmhpZGVUb29sdGlwcygpKSksZX11cGRhdGVUb29sdGlwQ29udGVudCh0KXt0aGlzLmxpbmVQbG90JiYod2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuX3Rvb2x0aXBVcGRhdGVBbmltYXRpb25GcmFtZSksdGhpcy5fdG9vbHRpcFVwZGF0ZUFuaW1hdGlvbkZyYW1lPXdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCgpPT57bGV0IGU9e3g6dC54LHk6dC55LGRhdHVtOm51bGwsZGF0YXNldDpudWxsfSxuPXRoaXMuZ3JpZGxpbmVzLmNvbnRlbnQoKS5ub2RlKCkuZ2V0QkJveCgpLGk9dGhpcy5saW5lUGxvdC5kYXRhc2V0cygpLm1hcCgodD0+dGhpcy5maW5kQ2xvc2VzdFBvaW50KGUsdCkpKS5maWx0ZXIoQm9vbGVhbikscj1OTy5VdGlscy5ET00uaW50ZXJzZWN0c0JCb3gsbz1pLmZpbHRlcigodD0+cih0LngsdC55LG4pfHxpc05hTih0aGlzLnlWYWx1ZUFjY2Vzc29yKHQuZGF0dW0sMCx0LmRhdGFzZXQpKSkpLGE9by5maWx0ZXIoKHQ9PiFpc05hTih0aGlzLnlWYWx1ZUFjY2Vzc29yKHQuZGF0dW0sMCx0LmRhdGFzZXQpKSkpO2lmKDAhPT1pLmxlbmd0aCl7dGhpcy5zY2F0dGVyUGxvdC5hdHRyKCJkaXNwbGF5Iiwibm9uZSIpO2NvbnN0IHQ9dGhpcy50b29sdGlwUG9pbnRzQ29tcG9uZW50LmNvbnRlbnQoKS5zZWxlY3RBbGwoIi5wb2ludCIpLmRhdGEoYSwodD0+dC5kYXRhc2V0Lm1ldGFkYXRhKCkubmFtZSkpO3QuZW50ZXIoKS5hcHBlbmQoImNpcmNsZSIpLmNsYXNzZWQoInBvaW50IiwhMCksdC5hdHRyKCJyIiw0KS5hdHRyKCJjeCIsKHQ9PnQueCkpLmF0dHIoImN5IiwodD0+dC55KSkuc3R5bGUoInN0cm9rZSIsIm5vbmUiKS5hdHRyKCJmaWxsIiwodD0+dGhpcy5jb2xvclNjYWxlLnNjYWxlKHQuZGF0YXNldC5tZXRhZGF0YSgpLm5hbWUpKSksdC5leGl0KCkucmVtb3ZlKCksdGhpcy5kcmF3VG9vbHRpcHMobyxlLHRoaXMudG9vbHRpcENvbHVtbnMpfWVsc2UgdGhpcy5oaWRlVG9vbHRpcHMoKX0pKSl9aGlkZVRvb2x0aXBzKCl7d2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuX3Rvb2x0aXBVcGRhdGVBbmltYXRpb25GcmFtZSksdGhpcy50b29sdGlwLmhpZGUoKSx0aGlzLnNjYXR0ZXJQbG90LmF0dHIoImRpc3BsYXkiLCJibG9jayIpLHRoaXMudG9vbHRpcFBvaW50c0NvbXBvbmVudC5jb250ZW50KCkuc2VsZWN0QWxsKCIucG9pbnQiKS5yZW1vdmUoKX1zZXR1cFRvb2x0aXBzKHQpe3Qub25EZXRhY2goKCgpPT57dGhpcy50b29sdGlwSW50ZXJhY3Rpb24uZGV0YWNoRnJvbSh0KSx0aGlzLnRvb2x0aXBJbnRlcmFjdGlvbi5lbmFibGVkKCExKX0pKSx0Lm9uQW5jaG9yKCgoKT0+e3RoaXMudG9vbHRpcEludGVyYWN0aW9uLmF0dGFjaFRvKHQpLHRoaXMudG9vbHRpcEludGVyYWN0aW9uLmVuYWJsZWQoITApfSkpfWRyYXdUb29sdGlwcyh0LGUsbil7aWYoIXQubGVuZ3RoKXJldHVybiB2b2lkIHRoaXMudG9vbHRpcC5oaWRlKCk7Y29uc3R7Y29sb3JTY2FsZTppfT10aGlzO249W3t0aXRsZToiIixzdGF0aWM6ITEsZXZhbFR5cGU6b0F0LkRPTSxldmFsdWF0ZSh0KXtyZXR1cm4gRHUodGhpcykuc2VsZWN0KCJzcGFuIikuc3R5bGUoImJhY2tncm91bmQtY29sb3IiLCgoKT0+aS5zY2FsZSh0LmRhdGFzZXQubWV0YWRhdGEoKS5uYW1lKSkpLCIifSxlbnRlcih0KXtEdSh0aGlzKS5hcHBlbmQoInNwYW4iKS5jbGFzc2VkKCJzd2F0Y2giLCEwKS5zdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsKCgpPT5pLnNjYWxlKHQuZGF0YXNldC5tZXRhZGF0YSgpLm5hbWUpKSl9fSwuLi5uXTtjb25zdCByPXQ9Pk1hdGgucG93KHQueC1lLngsMikrTWF0aC5wb3codC55LWUueSwyKSxvPUNlLmV4cG9ydHMubWluKHQubWFwKHIpKSxhPXRoaXMuc21vb3RoaW5nRW5hYmxlZD90aGlzLnNtb290aGVkQWNjZXNzb3I6dGhpcy55VmFsdWVBY2Nlc3Nvcjt0PSJhc2NlbmRpbmciPT09dGhpcy50b29sdGlwU29ydGluZ01ldGhvZD9DZS5leHBvcnRzLnNvcnRCeSh0LCh0PT5hKHQuZGF0dW0sLTEsdC5kYXRhc2V0KSkpOiJkZXNjZW5kaW5nIj09PXRoaXMudG9vbHRpcFNvcnRpbmdNZXRob2Q/Q2UuZXhwb3J0cy5zb3J0QnkodCwodD0+YSh0LmRhdHVtLC0xLHQuZGF0YXNldCkpKS5yZXZlcnNlKCk6Im5lYXJlc3QiPT09dGhpcy50b29sdGlwU29ydGluZ01ldGhvZD9DZS5leHBvcnRzLnNvcnRCeSh0LHIpOnQuc2xpY2UoMCkucmV2ZXJzZSgpO2NvbnN0IHM9dGhpcyxsPUR1KHRoaXMudG9vbHRpcC5jb250ZW50KCkpLnNlbGVjdCgidGFibGUiKSxjPWwuc2VsZWN0KCJ0aGVhZCIpLnNlbGVjdEFsbCgidGgiKS5kYXRhKG4sKCh0LGUsbik9PnQudGl0bGUpKTtjLmVudGVyKCkuYXBwZW5kKCJ0aCIpLnRleHQoKHQ9PnQudGl0bGUpKS5ub2RlcygpLGMuZXhpdCgpLnJlbW92ZSgpO2NvbnN0IHU9bC5zZWxlY3QoInRib2R5Iikuc2VsZWN0QWxsKCJ0ciIpLmRhdGEodCwoKHQsZSxuKT0+dC5kYXRhc2V0Lm1ldGFkYXRhKCkubmFtZSkpO3UuY2xhc3NlZCgiZGlzdGFudCIsKHQ9PntsZXQgbj10LmRhdGFzZXQuZGF0YSgpWzBdLGk9Q2UuZXhwb3J0cy5sYXN0KHQuZGF0YXNldC5kYXRhKCkpLHI9dGhpcy54U2NhbGUuc2NhbGUodGhpcy54QWNjZXNzb3IobiwwLHQuZGF0YXNldCkpLG89dGhpcy54U2NhbGUuc2NhbGUodGhpcy54QWNjZXNzb3IoaSwwLHQuZGF0YXNldCkpLGE9dGhpcy5zbW9vdGhpbmdFbmFibGVkP3QuZGF0dW0uc21vb3RoZWQ6dGhpcy55VmFsdWVBY2Nlc3Nvcih0LmRhdHVtLDAsdC5kYXRhc2V0KTtyZXR1cm4gZS54PHJ8fGUueD5vfHxpc05hTihhKX0pKS5jbGFzc2VkKCJjbG9zZXN0IiwodD0+cih0KT09PW8pKS5lYWNoKChmdW5jdGlvbih0KXtzLmRyYXdUb29sdGlwUm93KHRoaXMsbix0KX0pKS5vcmRlcigpLHUuZXhpdCgpLnJlbW92ZSgpLHUuZW50ZXIoKS5hcHBlbmQoInRyIikuZWFjaCgoZnVuY3Rpb24odCl7cy5kcmF3VG9vbHRpcFJvdyh0aGlzLG4sdCl9KSkubm9kZXMoKSx0aGlzLnRvb2x0aXAudXBkYXRlQW5kUG9zaXRpb24odGhpcy50YXJnZXRTVkcubm9kZSgpKX1kcmF3VG9vbHRpcFJvdyh0LGUsbil7Y29uc3QgaT10aGlzLHI9RHUodCkuc2VsZWN0QWxsKCJ0ZCIpLmRhdGEoZSk7ci5lYWNoKChmdW5jdGlvbih0KXt0LnN0YXRpY3x8aS5kcmF3VG9vbHRpcENvbHVtbi5jYWxsKGksdGhpcyx0LG4pfSkpLHIuZXhpdCgpLnJlbW92ZSgpLHIuZW50ZXIoKS5hcHBlbmQoInRkIikuZWFjaCgoZnVuY3Rpb24odCl7aWYoImVudGVyImluIHQmJnQuZW50ZXIpe3QuZW50ZXIuY2FsbCh0aGlzLG4pfWkuZHJhd1Rvb2x0aXBDb2x1bW4uY2FsbChpLHRoaXMsdCxuKX0pKX1kcmF3VG9vbHRpcENvbHVtbih0LGUsbil7Y29uc3R7c21vb3RoaW5nRW5hYmxlZDppfT10aGlzOyJldmFsVHlwZSJpbiBlJiZlLmV2YWxUeXBlPT1vQXQuRE9NP2UuZXZhbHVhdGUuY2FsbCh0LG4se3Ntb290aGluZ0VuYWJsZWQ6aX0pOkR1KHQpLnRleHQoZS5ldmFsdWF0ZS5jYWxsKHQsbix7c21vb3RoaW5nRW5hYmxlZDppfSkpfWZpbmRDbG9zZXN0UG9pbnQodCxlKXtjb25zdCBuPWUuZGF0YSgpLm1hcCgoKHQsbik9PnRoaXMueFNjYWxlLnNjYWxlKHRoaXMueEFjY2Vzc29yKHQsbixlKSkpKTtsZXQgaT1DZS5leHBvcnRzLnNvcnRlZEluZGV4KG4sdC54KTtpZigwPT1uLmxlbmd0aClyZXR1cm4gbnVsbDtpZihpPT09bi5sZW5ndGgpaS09MTtlbHNlIGlmKDAhPT1pKXtpPU1hdGguYWJzKG5baS0xXS10LngpPE1hdGguYWJzKG5baV0tdC54KT9pLTE6aX1jb25zdCByPWUuZGF0YSgpW2ldLG89dGhpcy5zbW9vdGhpbmdFbmFibGVkP3RoaXMuc21vb3RoZWRBY2Nlc3NvcihyLGksZSk6dGhpcy55VmFsdWVBY2Nlc3NvcihyLGksZSk7cmV0dXJue3g6bltpXSx5OnRoaXMueVNjYWxlLnNjYWxlKG8pLGRhdHVtOnIsZGF0YXNldDplfX1yZXNtb290aERhdGFzZXQodCl7bGV0IGU9dC5kYXRhKCk7Y29uc3Qgbj10aGlzLnNtb290aGluZ1dlaWdodDtsZXQgaT1lLmxlbmd0aD4wPzA6TmFOLHI9MDtjb25zdCBvPWUubWFwKCgoZSxuKT0+dGhpcy55VmFsdWVBY2Nlc3NvcihlLG4sdCkpKSxhPW8uZXZlcnkoKHQ9PnQ9PW9bMF0pKTtlLmZvckVhY2goKCh0LGUpPT57Y29uc3Qgcz1vW2VdO2lmKGF8fCFOdW1iZXIuaXNGaW5pdGUocykpdC5zbW9vdGhlZD1zO2Vsc2V7aT1pKm4rKDEtbikqcyxyKys7bGV0IGU9MTsxIT09biYmKGU9MS1NYXRoLnBvdyhuLHIpKSx0LnNtb290aGVkPWkvZX19KSl9Z2V0RGF0YXNldCh0KXtyZXR1cm4gdm9pZCAwPT09dGhpcy5uYW1lMmRhdGFzZXRzW3RdJiYodGhpcy5uYW1lMmRhdGFzZXRzW3RdPW5ldyBOTy5EYXRhc2V0KFtdLHtuYW1lOnQsbWV0YTpudWxsfSkpLHRoaXMubmFtZTJkYXRhc2V0c1t0XX1zdGF0aWMgZ2V0WVNjYWxlRnJvbVR5cGUodCl7aWYodD09PWFBdC5MT0cpcmV0dXJuIG5ldyBuQXQ7aWYodD09PWFBdC5MSU5FQVIpcmV0dXJuIG5ldyBaQ3Q7dGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgeVNjYWxlIHR5cGUgIit0KX1zZXRWaXNpYmxlU2VyaWVzKHQpe3RoaXMuZGlzYWJsZUNoYW5nZXMoKSwodD10LnNvcnQoKSkucmV2ZXJzZSgpLHRoaXMuc2VyaWVzTmFtZXM9dH1kaXNhYmxlQ2hhbmdlcygpe3RoaXMuZGlydHlEYXRhc2V0cy5zaXplfHwodGhpcy5saW5lUGxvdC5kYXRhc2V0cyhbXSksdGhpcy5zbW9vdGhMaW5lUGxvdCYmdGhpcy5zbW9vdGhMaW5lUGxvdC5kYXRhc2V0cyhbXSksdGhpcy5tYXJnaW5BcmVhUGxvdCYmdGhpcy5tYXJnaW5BcmVhUGxvdC5kYXRhc2V0cyhbXSkpfWNvbW1pdENoYW5nZXMoKXt0aGlzLmRhdGFzZXRzPXRoaXMuc2VyaWVzTmFtZXMubWFwKCh0PT50aGlzLmdldERhdGFzZXQodCkpKSxbLi4udGhpcy5kaXJ0eURhdGFzZXRzXS5mb3JFYWNoKCh0PT57dGhpcy5zbW9vdGhpbmdFbmFibGVkJiZ0aGlzLnJlc21vb3RoRGF0YXNldCh0aGlzLmdldERhdGFzZXQodCkpfSkpLHRoaXMudXBkYXRlU3BlY2lhbERhdGFzZXRzKCksdGhpcy5saW5lUGxvdC5kYXRhc2V0cyh0aGlzLmRhdGFzZXRzKSx0aGlzLnNtb290aGluZ0VuYWJsZWQmJnRoaXMuc21vb3RoTGluZVBsb3QuZGF0YXNldHModGhpcy5kYXRhc2V0cyksdGhpcy5tYXJnaW5BcmVhUGxvdCYmdGhpcy5tYXJnaW5BcmVhUGxvdC5kYXRhc2V0cyh0aGlzLmRhdGFzZXRzKSx0aGlzLm1lYXN1cmVCQm94QW5kTWF5YmVJbnZhbGlkYXRlTGF5b3V0SW5SYWYoKSx0aGlzLmRpcnR5RGF0YXNldHMuY2xlYXIoKX1jcmVhdGVTYW1wbGVkRGF0YXNldEZvck1hcmtlcnModCl7Y29uc3QgZT10LmRhdGEoKTtpZihlLmxlbmd0aDw9MjApcmV0dXJuIHQ7Y29uc3Qgbj1NYXRoLmNlaWwoZS5sZW5ndGgvMjApLGk9bmV3IEFycmF5KE1hdGguZmxvb3IoZS5sZW5ndGgvbikpO2ZvcihsZXQgdD0wLHI9MDt0PGkubGVuZ3RoO3QrKyxyKz1uKWlbdF09ZVtyXTtyZXR1cm4gbmV3IE5PLkRhdGFzZXQoaSx0Lm1ldGFkYXRhKCkpfXNldFNlcmllc0RhdGEodCxlKXt0aGlzLmRpc2FibGVDaGFuZ2VzKCksdGhpcy5nZXREYXRhc2V0KHQpLmRhdGEoZSksdGhpcy5kaXJ0eURhdGFzZXRzLmFkZCh0KX1zZXRTZXJpZXNNZXRhZGF0YSh0LGUpe3RoaXMuZGlzYWJsZUNoYW5nZXMoKSx0aGlzLmdldERhdGFzZXQodCkubWV0YWRhdGEoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHRoaXMuZ2V0RGF0YXNldCh0KS5tZXRhZGF0YSgpKSx7bWV0YTplfSkpLHRoaXMuZGlydHlEYXRhc2V0cy5hZGQodCl9c21vb3RoaW5nVXBkYXRlKHQpe3RoaXMuc21vb3RoaW5nV2VpZ2h0PXQsdGhpcy5kYXRhc2V0cy5mb3JFYWNoKCh0PT50aGlzLnJlc21vb3RoRGF0YXNldCh0KSkpLHRoaXMuc21vb3RoaW5nRW5hYmxlZHx8KHRoaXMubGluZVBsb3QuYWRkQ2xhc3MoImdob3N0IiksdGhpcy5zY2F0dGVyUGxvdC55KHRoaXMuc21vb3RoZWRBY2Nlc3Nvcix0aGlzLnlTY2FsZSksdGhpcy5zbW9vdGhpbmdFbmFibGVkPSEwLHRoaXMuc21vb3RoTGluZVBsb3QuZGF0YXNldHModGhpcy5kYXRhc2V0cykpLHRoaXMubWFya2Vyc1NjYXR0ZXJQbG90JiZ0aGlzLm1hcmtlcnNTY2F0dGVyUGxvdC55KHRoaXMuZ2V0WUF4aXNBY2Nlc3NvcigpLHRoaXMueVNjYWxlKSx0aGlzLnVwZGF0ZVNwZWNpYWxEYXRhc2V0cygpfXNtb290aGluZ0Rpc2FibGUoKXt0aGlzLnNtb290aGluZ0VuYWJsZWQmJih0aGlzLmxpbmVQbG90LnJlbW92ZUNsYXNzKCJnaG9zdCIpLHRoaXMuc2NhdHRlclBsb3QueSh0aGlzLnlWYWx1ZUFjY2Vzc29yLHRoaXMueVNjYWxlKSx0aGlzLnNtb290aExpbmVQbG90LmRhdGFzZXRzKFtdKSx0aGlzLnNtb290aGluZ0VuYWJsZWQ9ITEsdGhpcy51cGRhdGVTcGVjaWFsRGF0YXNldHMoKSksdGhpcy5tYXJrZXJzU2NhdHRlclBsb3QmJnRoaXMubWFya2Vyc1NjYXR0ZXJQbG90LnkodGhpcy5nZXRZQXhpc0FjY2Vzc29yKCksdGhpcy55U2NhbGUpfXNldENvbG9yU2NhbGUodCl7dGhpcy5jb2xvclNjYWxlPXR9c2V0VG9vbHRpcENvbHVtbnModCl7dGhpcy50b29sdGlwQ29sdW1ucz10fXNldFRvb2x0aXBTb3J0aW5nTWV0aG9kKHQpe3RoaXMudG9vbHRpcFNvcnRpbmdNZXRob2Q9dH1yZW5kZXJUbyh0KXt0aGlzLnRhcmdldFNWRz10LHRoaXMub3V0ZXIucmVuZGVyVG8odCksbnVsbCE9dGhpcy5fZGVmYXVsdFhSYW5nZSYmdGhpcy5yZXNldFhEb21haW4oKSxudWxsIT10aGlzLl9kZWZhdWx0WVJhbmdlJiZ0aGlzLnJlc2V0WURvbWFpbigpLHRoaXMubWVhc3VyZUJCb3hBbmRNYXliZUludmFsaWRhdGVMYXlvdXRJblJhZigpfXJlZHJhdygpe3dpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9yZWRyYXdSYWYpLHRoaXMuX3JlZHJhd1JhZj13aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgoKT0+e3RoaXMubWVhc3VyZUJCb3hBbmRNYXliZUludmFsaWRhdGVMYXlvdXQoKSx0aGlzLm91dGVyLnJlZHJhdygpfSkpfW1lYXN1cmVCQm94QW5kTWF5YmVJbnZhbGlkYXRlTGF5b3V0SW5SYWYoKXt3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5faW52YWxpZGF0ZUxheW91dFJhZiksdGhpcy5faW52YWxpZGF0ZUxheW91dFJhZj13aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgoKT0+e3RoaXMubWVhc3VyZUJCb3hBbmRNYXliZUludmFsaWRhdGVMYXlvdXQoKX0pKX1tZWFzdXJlQkJveEFuZE1heWJlSW52YWxpZGF0ZUxheW91dCgpe2lmKHRoaXMuX2xhc3REcmF3QkJveCl7Y29uc3R7d2lkdGg6dH09dGhpcy5fbGFzdERyYXdCQm94LHt3aWR0aDplfT10aGlzLnRhcmdldFNWRy5ub2RlKCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7MD09dCYmdDxlJiZ0aGlzLm91dGVyLmludmFsaWRhdGVDYWNoZSgpfXRoaXMuX2xhc3REcmF3QkJveD10aGlzLnRhcmdldFNWRy5ub2RlKCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCl9ZGVzdHJveSgpe3dpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9yZWRyYXdSYWYpLHdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9pbnZhbGlkYXRlTGF5b3V0UmFmKSx0aGlzLm91dGVyJiZ0aGlzLm91dGVyLmRlc3Ryb3koKX1vbkFuY2hvcih0KXt0aGlzLm91dGVyJiZ0aGlzLm91dGVyLm9uQW5jaG9yKHQpfWlzRGF0YUZpdFRvRG9tYWluKCl7cmV0dXJuIHQodGhpcy54QXhpcy5nZXRTY2FsZSgpKSYmdCh0aGlzLnlBeGlzLmdldFNjYWxlKCkpO2Z1bmN0aW9uIHQodCl7Y29uc3QgZT10LmdldFRyYW5zZm9ybWF0aW9uRG9tYWluKCksbj10LmdldFRyYW5zZm9ybWF0aW9uRXh0ZW50KCk7cmV0dXJuIG5bMF09PT1lWzBdJiZuWzFdPT09ZVsxXX19fXZhciBjQXQ7bWwoe21vZHVsZU5hbWU6InBsb3R0YWJsZS1zdHlsZSIsc3R5bGVDb250ZW50OiJcbiAgICBcbi5wbG90dGFibGUtY29sb3JzLTAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTI3OWM3OyAvKiBJTkRJR08gKi9cbn1cblxuLnBsb3R0YWJsZS1jb2xvcnMtMSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZDM3M2U7IC8qIENPUkFMX1JFRCAqL1xufVxuXG4ucGxvdHRhYmxlLWNvbG9ycy0yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzYzYzI2MTsgLyogRkVSTiAqL1xufVxuXG4ucGxvdHRhYmxlLWNvbG9ycy0zIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZhZDQxOTsgLyogQlJJR0hUX1NVTiAqL1xufVxuXG4ucGxvdHRhYmxlLWNvbG9ycy00IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzJjMmI2ZjsgLyogSkFDQVJUQSAqL1xufVxuXG4ucGxvdHRhYmxlLWNvbG9ycy01IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNzkzOTsgLyogQlVSTklOR19PUkFOR0UgKi9cbn1cblxuLnBsb3R0YWJsZS1jb2xvcnMtNiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkYjJlNjU7IC8qIENFUklTRV9SRUQgKi9cbn1cblxuLnBsb3R0YWJsZS1jb2xvcnMtNyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM5OWNlNTA7IC8qIENPTklGRVIgKi9cbn1cblxuLnBsb3R0YWJsZS1jb2xvcnMtOCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM5NjI1NjU7IC8qIFJPWUFMX0hFQVRIICovXG59XG5cbi5wbG90dGFibGUtY29sb3JzLTkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDZjY2NjOyAvKiBST0JJTlNfRUdHX0JMVUUgKi9cbn1cblxuLyoqXG4gKiBVc2VyLXN1cHBsaWVkIHJlbmRlclRvIGVsZW1lbnQuXG4gKi9cbi5wbG90dGFibGUge1xuICBkaXNwbGF5OiBibG9jazsgLyogbXVzdCBiZSBibG9jayBlbGVtZW50cyBmb3Igd2lkdGgvaGVpZ2h0IGNhbGN1bGF0aW9ucyB0byB3b3JrIGluIEZpcmVmb3guICovXG4gIHBvaW50ZXItZXZlbnRzOiB2aXNpYmxlRmlsbDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAvKipcbiAgICogUHJlIDMuMCwgdXNlcnMgY291bGQgc2V0IHRoZSBkaW1lbnNpb24gb2YgdGhlIHJvb3QgZWxlbWVudCBpbiB0d28gd2F5czogZWl0aGVyIHVzaW5nIENTU1xuICAgKiAoaW5saW5lIG9yIHRocm91Z2ggYSBzdHlsZXNoZWV0KSwgb3IgdXNpbmcgdGhlIFNWRyB3aWR0aC9oZWlnaHQgYXR0cmlidXRlcy4gQnkgZGVmYXVsdCwgd2VcbiAgICogc2V0IHRoZSBTVkcgd2lkdGgvaGVpZ2h0IGF0dHJpYnV0ZXMgdG8gMTAwJS5cbiAgICpcbiAgICogUG9zdCAzLjAgdGhlIHJvb3QgZWxlbWVudCBpcyBhbHdheXMgYSBub3JtYWwgZGl2IGFuZCB0aGUgb25seSB3YXkgdG8gc2V0IHRoZSBkaW1lbnNpb25zIGlzXG4gICAqIHRvIHVzZSBDU1MuIFRvIHJlcGxpY2F0ZSB0aGUgXCIxMDAlLWJ5LWRlZmF1bHRcIiBiZWhhdmlvciwgd2UgYXBwbHkgd2lkdGgvaGVpZ2h0IDEwMCUuXG4gICAqL1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xufVxuXG4vKipcbiAqIFRoZSBfZWxlbWVudCB0aGF0IHJvb3RzIGVhY2ggQ29tcG9uZW50J3MgRE9NLlxuICovXG4ucGxvdHRhYmxlIC5jb21wb25lbnQge1xuICAvKiBBbGxvdyBjb21wb25lbnRzIHRvIGJlIHBvc2l0aW9uZWQgd2l0aCBleHBsaWNpdCBsZWZ0L3RvcC93aWR0aC9oZWlnaHQgc3R5bGVzICovXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbn1cblxuLnBsb3R0YWJsZSAuYmFja2dyb3VuZC1jb250YWluZXIsXG4ucGxvdHRhYmxlIC5jb250ZW50LFxuLnBsb3R0YWJsZSAuZm9yZWdyb3VuZC1jb250YWluZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG59XG5cbi8qKlxuICogRG9uJ3QgYWxsb3cgc3ZnIGVsZW1lbnRzIGFib3ZlIHRoZSBjb250ZW50IHRvIHN0ZWFsIGV2ZW50c1xuICovXG4ucGxvdHRhYmxlIC5mb3JlZ3JvdW5kLWNvbnRhaW5lciB7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG4ucGxvdHRhYmxlIC5jb21wb25lbnQtb3ZlcmZsb3ctaGlkZGVuIHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLnBsb3R0YWJsZSAuY29tcG9uZW50LW92ZXJmbG93LXZpc2libGUge1xuICBvdmVyZmxvdzogdmlzaWJsZTtcbn1cblxuLnBsb3R0YWJsZSAucGxvdC1jYW52YXMtY29udGFpbmVyIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLnBsb3R0YWJsZSAucGxvdC1jYW52YXMge1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICAvKipcbiAgICogUGxheSB3ZWxsIHdpdGggZGVmZXJyZWQgcmVuZGVyaW5nLlxuICAgKi9cbiAgdHJhbnNmb3JtLW9yaWdpbjogMHB4IDBweCAwcHg7XG59XG5cbi5wbG90dGFibGUgdGV4dCB7XG4gIHRleHQtcmVuZGVyaW5nOiBnZW9tZXRyaWNQcmVjaXNpb247XG59XG5cbi5wbG90dGFibGUgLmxhYmVsIHRleHQge1xuICBmaWxsOiAjMzIzMTNGO1xufVxuXG4ucGxvdHRhYmxlIC5iYXItbGFiZWwtdGV4dC1hcmVhIHRleHQsXG4ucGxvdHRhYmxlIC5zY2F0dGVyLWxhYmVsLXRleHQtYXJlYSB0ZXh0IHtcbiAgZm9udC1zaXplOiAxMnB4O1xufVxuXG4ucGxvdHRhYmxlIC5sYWJlbC1hcmVhIHRleHQge1xuICBmaWxsOiAjMzIzMTNGO1xuICBmb250LXNpemU6IDE0cHg7XG59XG5cbi5wbG90dGFibGUgLmxpZ2h0LWxhYmVsIHRleHQge1xuICBmaWxsOiB3aGl0ZTtcbn1cblxuLnBsb3R0YWJsZSAuZGFyay1sYWJlbCB0ZXh0IHtcbiAgZmlsbDogIzMyMzEzRjtcbn1cblxuLnBsb3R0YWJsZSAub2ZmLWJhci1sYWJlbCB0ZXh0IHtcbiAgZmlsbDogIzMyMzEzRjtcbn1cblxuLnBsb3R0YWJsZSAuc3RhY2tlZC1iYXItbGFiZWwgdGV4dCB7XG4gIGZpbGw6ICMzMjMxM0Y7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbn1cblxuLnBsb3R0YWJsZSAuc3RhY2tlZC1iYXItcGxvdCAub2ZmLWJhci1sYWJlbCB7XG4gIC8qIEhBQ0tIQUNLICMyNzk1OiBjb3JyZWN0IG9mZi1iYXIgbGFiZWwgbG9naWMgdG8gYmUgaW1wbGVtZW50ZWQgb24gU3RhY2tlZEJhciAqL1xuICB2aXNpYmlsaXR5OiBoaWRkZW4gIWltcG9ydGFudDtcbn1cblxuLnBsb3R0YWJsZSAuYXhpcy1sYWJlbCB0ZXh0IHtcbiAgZm9udC1zaXplOiAxMHB4O1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgbGV0dGVyLXNwYWNpbmc6IDFweDtcbiAgbGluZS1oZWlnaHQ6IG5vcm1hbDtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbn1cblxuLnBsb3R0YWJsZSAudGl0bGUtbGFiZWwgdGV4dCB7XG4gIGZvbnQtc2l6ZTogMjBweDtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbi5wbG90dGFibGUgLmF4aXMgbGluZS5iYXNlbGluZSB7XG4gIHN0cm9rZTogI0NDQztcbiAgc3Ryb2tlLXdpZHRoOiAxcHg7XG59XG5cbi5wbG90dGFibGUgLmF4aXMgbGluZS50aWNrLW1hcmsge1xuICBzdHJva2U6ICNDQ0M7XG4gIHN0cm9rZS13aWR0aDogMXB4O1xufVxuXG4ucGxvdHRhYmxlIC5heGlzIHRleHQge1xuICBmaWxsOiAjMzIzMTNGO1xuICBmb250LXNpemU6IDEycHg7XG4gIGZvbnQtd2VpZ2h0OiAyMDA7XG4gIGxpbmUtaGVpZ2h0OiBub3JtYWw7XG59XG5cbi5wbG90dGFibGUgLmF4aXMgLmFubm90YXRpb24tY2lyY2xlIHtcbiAgZmlsbDogd2hpdGU7XG4gIHN0cm9rZS13aWR0aDogMXB4O1xuICBzdHJva2U6ICNDQ0M7XG59XG5cbi5wbG90dGFibGUgLmF4aXMgLmFubm90YXRpb24tbGluZSB7XG4gIHN0cm9rZTogI0NDQztcbiAgc3Ryb2tlLXdpZHRoOiAxcHg7XG59XG5cbi5wbG90dGFibGUgLmF4aXMgLmFubm90YXRpb24tcmVjdCB7XG4gIHN0cm9rZTogI0NDQztcbiAgc3Ryb2tlLXdpZHRoOiAxcHg7XG4gIGZpbGw6IHdoaXRlO1xufVxuXG4ucGxvdHRhYmxlIC5iYXItcGxvdCAuYmFzZWxpbmUge1xuICBzdHJva2U6ICM5OTk7XG59XG5cbi5wbG90dGFibGUgLmdyaWRsaW5lcyBsaW5lIHtcbiAgc3Ryb2tlOiAjM0MzQzNDOyAvKiBoYWNraGFjazogZ3JpZGxpbmVzIHNob3VsZCBiZSBzb2xpZDsgc2VlICM4MjAgKi9cbiAgb3BhY2l0eTogMC4yNTtcbiAgc3Ryb2tlLXdpZHRoOiAxcHg7XG59XG5cbi5wbG90dGFibGUgLnNlbGVjdGlvbi1ib3gtbGF5ZXIgLnNlbGVjdGlvbi1hcmVhIHtcbiAgZmlsbDogYmxhY2s7XG4gIGZpbGwtb3BhY2l0eTogMC4wMztcbiAgc3Ryb2tlOiAjQ0NDO1xufVxuLyogRHJhZ0JveExheWVyICovXG4ucGxvdHRhYmxlIC5kcmFnLWJveC1sYXllci54LXJlc2l6YWJsZSAuZHJhZy1lZGdlLWxyIHtcbiAgY3Vyc29yOiBldy1yZXNpemU7XG59XG4ucGxvdHRhYmxlIC5kcmFnLWJveC1sYXllci55LXJlc2l6YWJsZSAuZHJhZy1lZGdlLXRiIHtcbiAgY3Vyc29yOiBucy1yZXNpemU7XG59XG5cbi5wbG90dGFibGUgLmRyYWctYm94LWxheWVyLngtcmVzaXphYmxlLnktcmVzaXphYmxlIC5kcmFnLWNvcm5lci10bCB7XG4gIGN1cnNvcjogbndzZS1yZXNpemU7XG59XG4ucGxvdHRhYmxlIC5kcmFnLWJveC1sYXllci54LXJlc2l6YWJsZS55LXJlc2l6YWJsZSAuZHJhZy1jb3JuZXItdHIge1xuICBjdXJzb3I6IG5lc3ctcmVzaXplO1xufVxuLnBsb3R0YWJsZSAuZHJhZy1ib3gtbGF5ZXIueC1yZXNpemFibGUueS1yZXNpemFibGUgLmRyYWctY29ybmVyLWJsIHtcbiAgY3Vyc29yOiBuZXN3LXJlc2l6ZTtcbn1cbi5wbG90dGFibGUgLmRyYWctYm94LWxheWVyLngtcmVzaXphYmxlLnktcmVzaXphYmxlIC5kcmFnLWNvcm5lci1iciB7XG4gIGN1cnNvcjogbndzZS1yZXNpemU7XG59XG5cbi5wbG90dGFibGUgLmRyYWctYm94LWxheWVyLm1vdmFibGUgLnNlbGVjdGlvbi1hcmVhIHtcbiAgY3Vyc29yOiBtb3ZlOyAvKiBJRSBmYWxsYmFjayAqL1xuICBjdXJzb3I6IC1tb3otZ3JhYjtcbiAgY3Vyc29yOiAtd2Via2l0LWdyYWI7XG4gIGN1cnNvcjogZ3JhYjtcbn1cblxuLnBsb3R0YWJsZSAuZHJhZy1ib3gtbGF5ZXIubW92YWJsZSAuc2VsZWN0aW9uLWFyZWE6YWN0aXZlIHtcbiAgY3Vyc29yOiAtbW96LWdyYWJiaW5nO1xuICBjdXJzb3I6IC13ZWJraXQtZ3JhYmJpbmc7XG4gIGN1cnNvcjogZ3JhYmJpbmc7XG59XG4vKiAvRHJhZ0JveExheWVyICovXG5cbi5wbG90dGFibGUgLmd1aWRlLWxpbmUtbGF5ZXIgbGluZS5ndWlkZS1saW5lIHtcbiAgc3Ryb2tlOiAjQ0NDO1xuICBzdHJva2Utd2lkdGg6IDFweDtcbn1cblxuLnBsb3R0YWJsZSAuZHJhZy1saW5lLWxheWVyLmVuYWJsZWQudmVydGljYWwgbGluZS5kcmFnLWVkZ2Uge1xuICBjdXJzb3I6IGV3LXJlc2l6ZTtcbn1cblxuLnBsb3R0YWJsZSAuZHJhZy1saW5lLWxheWVyLmVuYWJsZWQuaG9yaXpvbnRhbCBsaW5lLmRyYWctZWRnZSB7XG4gIGN1cnNvcjogbnMtcmVzaXplO1xufVxuXG4ucGxvdHRhYmxlIC5sZWdlbmQgdGV4dCB7XG4gIGZpbGw6ICMzMjMxM0Y7XG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIGxpbmUtaGVpZ2h0OiBub3JtYWw7XG59XG5cbi5wbG90dGFibGUgLmludGVycG9sYXRlZC1jb2xvci1sZWdlbmQgcmVjdC5zd2F0Y2gtYm91bmRpbmctYm94IHtcbiAgZmlsbDogbm9uZTtcbiAgc3Ryb2tlOiAjQ0NDO1xuICBzdHJva2Utd2lkdGg6IDFweDtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG5cbi5wbG90dGFibGUgLndhdGVyZmFsbC1wbG90IGxpbmUuY29ubmVjdG9yIHtcbiAgc3Ryb2tlOiAjQ0NDO1xuICBzdHJva2Utd2lkdGg6IDFweDtcbn1cblxuLnBsb3R0YWJsZSAucGllLXBsb3QgLmFyYy5vdXRsaW5lIHtcbiAgc3Ryb2tlLWxpbmVqb2luOiByb3VuZDtcbn1cblxuIn0pLChmdW5jdGlvbih0KXt0LkdST1VQPSJHIix0LkRJVj0iRElWIix0LlNWRz0iU1ZHIix0LlRFWFQ9IlRFWFQifSkoY0F0fHwoY0F0PXt9KSk7Y2xhc3MgdUF0IGV4dGVuZHMgY2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy51bmlxdWVJZD0wLHRoaXMucm9vdD10fWV4cG9ydEFzU3RyaW5nKCl7Y29uc3QgdD10aGlzLmNvbnZlcnQodGhpcy5yb290KTtpZighdClyZXR1cm4iIjtjb25zdCBlPXRoaXMuY3JlYXRlUm9vdFN2ZygpO3JldHVybiBlLmFwcGVuZENoaWxkKHQpLGUub3V0ZXJIVE1MfWNyZWF0ZVVuaXF1ZUlkKHQpe3JldHVybmAke3R9XyR7dGhpcy51bmlxdWVJZCsrfWB9Z2V0U2l6ZSgpe3JldHVybiB0aGlzLnJvb3QuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCl9Y3JlYXRlUm9vdFN2Zygpe2NvbnN0IHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3ZnIiksZT10aGlzLmdldFNpemUoKTtyZXR1cm4gdC5zZXRBdHRyaWJ1dGVOUygic3ZnIiwidmlld0JveCIsYDAgMCAke2Uud2lkdGh9ICR7ZS5oZWlnaHR9YCksdC5zZXRBdHRyaWJ1dGUoInhtbG5zIiwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciKSx0fWNvbnZlcnQodCl7bGV0IGU9bnVsbDtjb25zdCBuPXQubm9kZU5hbWUudG9VcHBlckNhc2UoKTtpZih0Lm5vZGVUeXBlIT1Ob2RlLkVMRU1FTlRfTk9ERXx8biE9Y0F0LkRJViYmbiE9Y0F0LlNWRyllPXQuY2xvbmVOb2RlKCk7ZWxzZXtlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoY0F0LkdST1VQKTtjb25zdCBuPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHQpLGk9cGFyc2VJbnQobi5sZWZ0LDEwKSxyPXBhcnNlSW50KG4udG9wLDEwKTtpZihpfHxyKXtjb25zdCB0PXRoaXMuY3JlYXRlVW5pcXVlSWQoImNsaXAiKTtlLnNldEF0dHJpYnV0ZSgidHJhbnNmb3JtIixgdHJhbnNsYXRlKCR7aX0sICR7cn0pYCksZS5zZXRBdHRyaWJ1dGUoImNsaXAtcGF0aCIsYHVybCgjJHt0fSlgKTtjb25zdCBvPXBhcnNlSW50KG4ud2lkdGgsMTApLGE9cGFyc2VJbnQobi5oZWlnaHQsMTApLHM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgicmVjdCIpO3Muc2V0QXR0cmlidXRlKCJ3aWR0aCIsU3RyaW5nKG8pKSxzLnNldEF0dHJpYnV0ZSgiaGVpZ2h0IixTdHJpbmcoYSkpO2NvbnN0IGw9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJzdmciLCJjbGlwUGF0aCIpO2wuaWQ9dCxsLmFwcGVuZENoaWxkKHMpLGUuYXBwZW5kQ2hpbGQobCl9fUFycmF5LmZyb20odC5jaGlsZE5vZGVzKS5tYXAoKHQ9PnRoaXMuY29udmVydCh0KSkpLmZpbHRlcihCb29sZWFuKS5mb3JFYWNoKCh0PT5lLmFwcGVuZENoaWxkKHQpKSk7cmV0dXJuIGUubm9kZU5hbWUudG9VcHBlckNhc2UoKT09Y0F0LkdST1VQJiYhZS5oYXNDaGlsZE5vZGVzKCl8fHRoaXMuc2hvdWxkT21pdE5vZGUodCk/bnVsbDp0aGlzLnN0cmlwQ2xhc3ModGhpcy50cmFuc2ZlclN0eWxlKHQsZSkpfXN0cmlwQ2xhc3ModCl7cmV0dXJuIHQubm9kZVR5cGU9PU5vZGUuRUxFTUVOVF9OT0RFJiZ0LnJlbW92ZUF0dHJpYnV0ZSgiY2xhc3MiKSx0fXRyYW5zZmVyU3R5bGUodCxlKXtpZihlLm5vZGVUeXBlIT1Ob2RlLkVMRU1FTlRfTk9ERSlyZXR1cm4gZTtjb25zdCBuPWUsaT1lLm5vZGVOYW1lLnRvVXBwZXJDYXNlKCkscj13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0KTtyZXR1cm4gaT09Y0F0LlRFWFQmJk9iamVjdC5hc3NpZ24obi5zdHlsZSx7Zm9udEZhbWlseTpyLmZvbnRGYW1pbHksZm9udFNpemU6ci5mb250U2l6ZSxmb250V2VpZ2h0OnIuZm9udFdlaWdodH0pLGkhPWNBdC5HUk9VUCYmKG4uc2V0QXR0cmlidXRlKCJmaWxsIixyLmZpbGwpLG4uc2V0QXR0cmlidXRlKCJzdHJva2UiLHIuc3Ryb2tlKSxuLnNldEF0dHJpYnV0ZSgic3Ryb2tlLXdpZHRoIixyLnN0cm9rZVdpZHRoKSksIjEiIT1yLm9wYWNpdHkmJm4uc2V0QXR0cmlidXRlKCJvcGFjaXR5IixyLm9wYWNpdHkpLGV9c2hvdWxkT21pdE5vZGUodCl7cmV0dXJuITF9fXtzaG91bGRPbWl0Tm9kZSh0KXtyZXR1cm4gdC5ub2RlVHlwZT09Tm9kZS5FTEVNRU5UX05PREUmJnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJzY2F0dGVyLXBsb3QiKX19bWwoe21vZHVsZU5hbWU6InZ6LXBhbi16b29tLXN0eWxlIixzdHlsZUNvbnRlbnQ6IlxuICAgIC5oZWxwIHtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBhbmltYXRpb24tZGVsYXk6IDFzO1xuICAgICAgYW5pbWF0aW9uLWR1cmF0aW9uOiAxcztcbiAgICAgIGFuaW1hdGlvbi1uYW1lOiBmYWRlLW91dDtcbiAgICAgIGJhY2tncm91bmQ6IHJnYmEoMzAsIDMwLCAzMCwgMC42KTtcbiAgICAgIGJvdHRvbTogMDtcbiAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgbGVmdDogMDtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgICBwYWRkaW5nOiAyMHB4O1xuICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICByaWdodDogMDtcbiAgICAgIHRvcDogMDtcbiAgICB9XG5cbiAgICAuaGVscCA+IHNwYW4ge1xuICAgICAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcbiAgICB9XG5cbiAgICBAa2V5ZnJhbWVzIGZhZGUtb3V0IHtcbiAgICAgIDAlIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgIH1cblxuICAgICAgMTAwJSB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICB9XG4gICAgfVxuICAifSk7Y29uc3QgaEF0PVNDdCg0KSxkQXQ9dD0+aXNOYU4odCk/Ik5hTiI6aEF0KHQpLHBBdD1be3RpdGxlOiJOYW1lIixldmFsdWF0ZTp0PT50LmRhdGFzZXQubWV0YWRhdGEoKS5uYW1lfSx7dGl0bGU6IlNtb290aGVkIixldmFsdWF0ZSh0LGUpe2NvbnN0e3Ntb290aGluZ0VuYWJsZWQ6bn09ZTtyZXR1cm4gZEF0KG4/dC5kYXR1bS5zbW9vdGhlZDp0LmRhdHVtLnNjYWxhcil9fSx7dGl0bGU6IlZhbHVlIixldmFsdWF0ZTp0PT5kQXQodC5kYXR1bS5zY2FsYXIpfSx7dGl0bGU6IlN0ZXAiLGV2YWx1YXRlOnQ9Pk1DdCh0LmRhdHVtLnN0ZXApfSx7dGl0bGU6IlRpbWUiLGV2YWx1YXRlOnQ9PlRDdCh0LmRhdHVtLndhbGxfdGltZSl9LHt0aXRsZToiUmVsYXRpdmUiLGV2YWx1YXRlOnQ9PkFDdChDQ3QodC5kYXR1bSwwLHQuZGF0YXNldCkpfV07bGV0IGZBdD1jbGFzcyBleHRlbmRzKGNyKHdlKSl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuY29sb3JTY2FsZT0obmV3IE5PLlNjYWxlcy5Db2xvcikucmFuZ2UoakEuc2xpY2UoMCkpLHRoaXMuc21vb3RoaW5nRW5hYmxlZD0hMSx0aGlzLnNtb290aGluZ1dlaWdodD0uNix0aGlzLnhUeXBlPW51bGwsdGhpcy54Q29tcG9uZW50c0NyZWF0aW9uTWV0aG9kPW51bGwsdGhpcy55VmFsdWVBY2Nlc3Nvcj10PT50LnNjYWxhcix0aGlzLnRvb2x0aXBDb2x1bW5zPXBBdCx0aGlzLnlTY2FsZVR5cGU9YUF0LkxJTkVBUix0aGlzLmlnbm9yZVlPdXRsaWVycz0hMSx0aGlzLnRvb2x0aXBTb3J0aW5nTWV0aG9kPSJkZWZhdWx0Iix0aGlzLnRvb2x0aXBQb3NpdGlvbj16Q3QuQk9UVE9NLHRoaXMuX3Zpc2libGVTZXJpZXNDYWNoZT1bXSx0aGlzLl9zZXJpZXNEYXRhQ2FjaGU9e30sdGhpcy5fc2VyaWVzTWV0YWRhdGFDYWNoZT17fSx0aGlzLl9tYWtlQ2hhcnRBc3luY0NhbGxiYWNrSWQ9bnVsbH1yZWFkeSgpe3N1cGVyLnJlYWR5KCksdGhpcy5zY29wZVN1YnRyZWUodGhpcy4kLmNoYXJ0ZGl2LCEwKX1hdHRhY2hlZCgpe2NvbnN0IHQ9e2NhcHR1cmU6ITAscGFzc2l2ZTohMH07dGhpcy5fbGlzdGVuKHRoaXMsIm1vdXNlZG93biIsdGhpcy5fb25Nb3VzZURvd24uYmluZCh0aGlzKSx0KSx0aGlzLl9saXN0ZW4odGhpcywibW91c2V1cCIsdGhpcy5fb25Nb3VzZVVwLmJpbmQodGhpcyksdCksdGhpcy5fbGlzdGVuKHdpbmRvdywia2V5ZG93biIsdGhpcy5fb25LZXlEb3duLmJpbmQodGhpcyksdCksdGhpcy5fbGlzdGVuKHdpbmRvdywia2V5dXAiLHRoaXMuX29uS2V5VXAuYmluZCh0aGlzKSx0KX1kZXRhY2hlZCgpe3RoaXMuY2FuY2VsQXN5bmModGhpcy5fbWFrZUNoYXJ0QXN5bmNDYWxsYmFja0lkKSx0aGlzLl9jaGFydCYmKHRoaXMuX2NoYXJ0LmRlc3Ryb3koKSx0aGlzLl9jaGFydD12b2lkIDApLHRoaXMuX2xpc3RlbmVycyYmKHRoaXMuX2xpc3RlbmVycy5mb3JFYWNoKCgoe25vZGU6dCxldmVudE5hbWU6ZSxmdW5jOm4sb3B0aW9uOml9KT0+e3QucmVtb3ZlRXZlbnRMaXN0ZW5lcihlLG4saSl9KSksdGhpcy5fbGlzdGVuZXJzLmNsZWFyKCkpfV9saXN0ZW4odCxlLG4saT17fSl7dGhpcy5fbGlzdGVuZXJzfHwodGhpcy5fbGlzdGVuZXJzPW5ldyBTZXQpLHRoaXMuX2xpc3RlbmVycy5hZGQoe25vZGU6dCxldmVudE5hbWU6ZSxmdW5jOm4sb3B0aW9uOml9KSx0LmFkZEV2ZW50TGlzdGVuZXIoZSxuLGkpfV9vbktleURvd24odCl7dGhpcy50b2dnbGVDbGFzcygicGFua2V5IixzQXQuaXNQYW5LZXkodCkpfV9vbktleVVwKHQpe3RoaXMudG9nZ2xlQ2xhc3MoInBhbmtleSIsc0F0LmlzUGFuS2V5KHQpKX1fb25Nb3VzZURvd24odCl7dGhpcy50b2dnbGVDbGFzcygibW91c2Vkb3duIiwhMCl9X29uTW91c2VVcCh0KXt0aGlzLnRvZ2dsZUNsYXNzKCJtb3VzZWRvd24iLCExKX1pc0RhdGFGaXRUb0RvbWFpbigpe3JldHVybiF0aGlzLl9jaGFydHx8dGhpcy5fY2hhcnQuaXNEYXRhRml0VG9Eb21haW4oKX1zZXRWaXNpYmxlU2VyaWVzKHQpe0NlLmV4cG9ydHMuaXNFcXVhbCh0aGlzLl92aXNpYmxlU2VyaWVzQ2FjaGUsdCl8fCh0aGlzLl92aXNpYmxlU2VyaWVzQ2FjaGU9dCl9c2V0U2VyaWVzRGF0YSh0LGUpe3RoaXMuX3Nlcmllc0RhdGFDYWNoZVt0XT1lLHRoaXMuX2NoYXJ0JiZ0aGlzLl9jaGFydC5zZXRTZXJpZXNEYXRhKHQsZSl9c2V0U2VyaWVzTWV0YWRhdGEodCxlKXt0aGlzLl9zZXJpZXNNZXRhZGF0YUNhY2hlW3RdPWUsdGhpcy5fY2hhcnQmJnRoaXMuX2NoYXJ0LnNldFNlcmllc01ldGFkYXRhKHQsZSl9Y29tbWl0Q2hhbmdlcygpe3RoaXMuX2NoYXJ0JiZ0aGlzLl9jaGFydC5jb21taXRDaGFuZ2VzKCl9cmVzZXREb21haW4oKXt0aGlzLl9jaGFydCYmdGhpcy5fY2hhcnQucmVzZXREb21haW4oKX1yZWRyYXcoKXt0aGlzLl9jaGFydCYmdGhpcy5fY2hhcnQucmVkcmF3KCl9X21ha2VDaGFydCgpe251bGwhPT10aGlzLl9tYWtlQ2hhcnRBc3luY0NhbGxiYWNrSWQmJih0aGlzLmNhbmNlbEFzeW5jKHRoaXMuX21ha2VDaGFydEFzeW5jQ2FsbGJhY2tJZCksdGhpcy5fbWFrZUNoYXJ0QXN5bmNDYWxsYmFja0lkPW51bGwpLHRoaXMuX21ha2VDaGFydEFzeW5jQ2FsbGJhY2tJZD10aGlzLmFzeW5jKChmdW5jdGlvbigpe3RoaXMuX21ha2VDaGFydEFzeW5jQ2FsbGJhY2tJZD1udWxsO2xldCB0PXRoaXMueENvbXBvbmVudHNDcmVhdGlvbk1ldGhvZDtpZih0aGlzLnhUeXBlfHx0P3RoaXMueFR5cGUmJih0PSgpPT5rQ3QodGhpcy54VHlwZSkpOnQ9RUN0LHQmJnRoaXMueVZhbHVlQWNjZXNzb3ImJnRoaXMudG9vbHRpcENvbHVtbnMpe3ZhciBlPW5ldyBsQXQodCx0aGlzLnlWYWx1ZUFjY2Vzc29yLHRoaXMueVNjYWxlVHlwZSx0aGlzLmNvbG9yU2NhbGUsdGhpcy4kLnRvb2x0aXAsdGhpcy50b29sdGlwQ29sdW1ucyx0aGlzLmZpbGxBcmVhLHRoaXMuZGVmYXVsdFhSYW5nZSx0aGlzLmRlZmF1bHRZUmFuZ2UsdGhpcy5zeW1ib2xGdW5jdGlvbix0aGlzLnhBeGlzRm9ybWF0dGVyKSxuPUR1KHRoaXMuJC5jaGFydGRpdik7ZS5yZW5kZXJUbyhuKSx0aGlzLl9jaGFydCYmdGhpcy5fY2hhcnQuZGVzdHJveSgpLHRoaXMuX2NoYXJ0PWUsdGhpcy5fY2hhcnQub25BbmNob3IoKCgpPT50aGlzLmZpcmUoImNoYXJ0LWF0dGFjaGVkIikpKX19KSwzNTApfV9yZWxvYWRGcm9tQ2FjaGUoKXt0aGlzLl9jaGFydCYmKHRoaXMuX3Zpc2libGVTZXJpZXNDYWNoZS5mb3JFYWNoKCh0PT57dGhpcy5fY2hhcnQuc2V0U2VyaWVzRGF0YSh0LHRoaXMuX3Nlcmllc0RhdGFDYWNoZVt0XXx8W10pfSkpLHRoaXMuX3Zpc2libGVTZXJpZXNDYWNoZS5maWx0ZXIoKHQ9PnRoaXMuX3Nlcmllc01ldGFkYXRhQ2FjaGVbdF0pKS5mb3JFYWNoKCh0PT57dGhpcy5fY2hhcnQuc2V0U2VyaWVzTWV0YWRhdGEodCx0aGlzLl9zZXJpZXNNZXRhZGF0YUNhY2hlW3RdKX0pKSx0aGlzLl9jaGFydC5zZXRWaXNpYmxlU2VyaWVzKHRoaXMuX3Zpc2libGVTZXJpZXNDYWNoZSksdGhpcy5fY2hhcnQuY29tbWl0Q2hhbmdlcygpKX1fc21vb3RoaW5nQ2hhbmdlZCgpe3RoaXMuX2NoYXJ0JiYodGhpcy5zbW9vdGhpbmdFbmFibGVkP3RoaXMuX2NoYXJ0LnNtb290aGluZ1VwZGF0ZSh0aGlzLnNtb290aGluZ1dlaWdodCk6dGhpcy5fY2hhcnQuc21vb3RoaW5nRGlzYWJsZSgpKX1fb3V0bGllcnNDaGFuZ2VkKCl7dGhpcy5fY2hhcnQmJnRoaXMuX2NoYXJ0Lmlnbm9yZVlPdXRsaWVycyh0aGlzLmlnbm9yZVlPdXRsaWVycyl9X2NvbG9yU2NhbGVDaGFuZ2VkKCl7dGhpcy5fY2hhcnQmJih0aGlzLl9jaGFydC5zZXRDb2xvclNjYWxlKHRoaXMuY29sb3JTY2FsZSksdGhpcy5fY2hhcnQucmVkcmF3KCkpfV90b29sdGlwQ29sdW1uc0NoYW5nZWQoKXt0aGlzLl9jaGFydCYmdGhpcy5fY2hhcnQuc2V0VG9vbHRpcENvbHVtbnModGhpcy50b29sdGlwQ29sdW1ucyl9X3Rvb2x0aXBTb3J0aW5nTWV0aG9kQ2hhbmdlZCgpe3RoaXMuX2NoYXJ0JiZ0aGlzLl9jaGFydC5zZXRUb29sdGlwU29ydGluZ01ldGhvZCh0aGlzLnRvb2x0aXBTb3J0aW5nTWV0aG9kKX1nZXRFeHBvcnRlcigpe3JldHVybiBuZXcgdUF0KHRoaXMuJC5jaGFydGRpdil9fTtmQXQudGVtcGxhdGU9eGVgCiAgICA8ZGl2IGlkPSJjaGFydGRpdiI+PC9kaXY+CiAgICA8dnotY2hhcnQtdG9vbHRpcAogICAgICBpZD0idG9vbHRpcCIKICAgICAgcG9zaXRpb249IltbdG9vbHRpcFBvc2l0aW9uXV0iCiAgICAgIGNvbnRlbnQtY29tcG9uZW50LW5hbWU9InZ6LWxpbmUtY2hhcnQtdG9vbHRpcCIKICAgID48L3Z6LWNoYXJ0LXRvb2x0aXA+CiAgICA8c3R5bGUgaW5jbHVkZT0icGxvdHRhYmxlLXN0eWxlIj48L3N0eWxlPgogICAgPHN0eWxlIGluY2x1ZGU9InZ6LXBhbi16b29tLXN0eWxlIj48L3N0eWxlPgogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBmbGV4LWdyb3c6IDE7CiAgICAgICAgZmxleC1zaHJpbms6IDE7CiAgICAgICAgb3V0bGluZTogbm9uZTsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgfQogICAgICBkaXYgewogICAgICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICBmbGV4LWdyb3c6IDE7CiAgICAgICAgZmxleC1zaHJpbms6IDE7CiAgICAgIH0KCiAgICAgICNjaGFydGRpdiAubWFpbiB7CiAgICAgICAgY29udGFpbjogc3RyaWN0OwogICAgICAgIGN1cnNvcjogY3Jvc3NoYWlyOwogICAgICB9CgogICAgICA6aG9zdCgucGFua2V5KSAjY2hhcnRkaXYgOm5vdCguZHJhZy16b29taW5nKSAubWFpbiB7CiAgICAgICAgY3Vyc29yOiAtd2Via2l0LWdyYWI7CiAgICAgICAgY3Vyc29yOiBncmFiOwogICAgICB9CgogICAgICA6aG9zdCgubW91c2Vkb3duKSAjY2hhcnRkaXYgLnBhbm5pbmcgLm1haW4gewogICAgICAgIGN1cnNvcjogLXdlYmtpdC1ncmFiYmluZzsKICAgICAgICBjdXJzb3I6IGdyYWJiaW5nOwogICAgICB9CgogICAgICAjY2hhcnRkaXYgewogICAgICAgIGNvbnRhaW46IHN0cmljdDsKICAgICAgfQoKICAgICAgI2NoYXJ0ZGl2IGxpbmUuZ3VpZGUtbGluZSB7CiAgICAgICAgc3Ryb2tlOiAjOTk5OwogICAgICAgIHN0cm9rZS13aWR0aDogMS41cHg7CiAgICAgIH0KICAgICAgI2NoYXJ0ZGl2OmhvdmVyIC5tYWluIHsKICAgICAgICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtOwogICAgICB9CgogICAgICAuZ2hvc3QgewogICAgICAgIG9wYWNpdHk6IDAuMjsKICAgICAgICBzdHJva2Utd2lkdGg6IDFweDsKICAgICAgfQoKICAgICAgLnBsb3R0YWJsZSAuYXhpcyB0ZXh0IHsKICAgICAgICBmaWxsOiBjdXJyZW50Q29sb3I7CiAgICAgIH0KCiAgICAgIC5wbG90dGFibGUgLmdyaWRsaW5lcyBsaW5lIHsKICAgICAgICBzdHJva2U6IHZhcigtLXRiLXNlY29uZGFyeS10ZXh0LWNvbG9yKTsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE5PLlNjYWxlcy5Db2xvcildLGZBdC5wcm90b3R5cGUsImNvbG9yU2NhbGUiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pXSxmQXQucHJvdG90eXBlLCJzeW1ib2xGdW5jdGlvbiIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW4sbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxmQXQucHJvdG90eXBlLCJzbW9vdGhpbmdFbmFibGVkIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLGZBdC5wcm90b3R5cGUsInNtb290aGluZ1dlaWdodCIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxmQXQucHJvdG90eXBlLCJ4VHlwZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbildLGZBdC5wcm90b3R5cGUsInhDb21wb25lbnRzQ3JlYXRpb25NZXRob2QiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pXSxmQXQucHJvdG90eXBlLCJ4QXhpc0Zvcm1hdHRlciIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbildLGZBdC5wcm90b3R5cGUsInlWYWx1ZUFjY2Vzc29yIix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxmQXQucHJvdG90eXBlLCJ0b29sdGlwQ29sdW1ucyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxmQXQucHJvdG90eXBlLCJmaWxsQXJlYSIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sZkF0LnByb3RvdHlwZSwiZGVmYXVsdFhSYW5nZSIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sZkF0LnByb3RvdHlwZSwiZGVmYXVsdFlSYW5nZSIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxmQXQucHJvdG90eXBlLCJ5U2NhbGVUeXBlIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sZkF0LnByb3RvdHlwZSwiaWdub3JlWU91dGxpZXJzIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLGZBdC5wcm90b3R5cGUsInRvb2x0aXBTb3J0aW5nTWV0aG9kIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLGZBdC5wcm90b3R5cGUsInRvb2x0aXBQb3NpdGlvbiIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxmQXQucHJvdG90eXBlLCJfY2hhcnQiLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheX0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLGZBdC5wcm90b3R5cGUsIl92aXNpYmxlU2VyaWVzQ2FjaGUiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sZkF0LnByb3RvdHlwZSwiX3Nlcmllc0RhdGFDYWNoZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxmQXQucHJvdG90eXBlLCJfc2VyaWVzTWV0YWRhdGFDYWNoZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxmQXQucHJvdG90eXBlLCJfbWFrZUNoYXJ0QXN5bmNDYWxsYmFja0lkIix2b2lkIDApLHQoW2EoInhDb21wb25lbnRzQ3JlYXRpb25NZXRob2QiLCJ4VHlwZSIsInlWYWx1ZUFjY2Vzc29yIiwieVNjYWxlVHlwZSIsImlzQXR0YWNoZWQiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLGZBdC5wcm90b3R5cGUsIl9tYWtlQ2hhcnQiLG51bGwpLHQoW2EoIl9jaGFydCIsIl92aXNpYmxlU2VyaWVzQ2FjaGUiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLGZBdC5wcm90b3R5cGUsIl9yZWxvYWRGcm9tQ2FjaGUiLG51bGwpLHQoW2EoInNtb290aGluZ0VuYWJsZWQiLCJzbW9vdGhpbmdXZWlnaHQiLCJfY2hhcnQiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLGZBdC5wcm90b3R5cGUsIl9zbW9vdGhpbmdDaGFuZ2VkIixudWxsKSx0KFthKCJpZ25vcmVZT3V0bGllcnMiLCJfY2hhcnQiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLGZBdC5wcm90b3R5cGUsIl9vdXRsaWVyc0NoYW5nZWQiLG51bGwpLHQoW2EoImNvbG9yU2NhbGUiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLGZBdC5wcm90b3R5cGUsIl9jb2xvclNjYWxlQ2hhbmdlZCIsbnVsbCksdChbYSgidG9vbHRpcENvbHVtbnMiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLGZBdC5wcm90b3R5cGUsIl90b29sdGlwQ29sdW1uc0NoYW5nZWQiLG51bGwpLHQoW2EoInRvb2x0aXBTb3J0aW5nTWV0aG9kIiwiX2NoYXJ0IiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxmQXQucHJvdG90eXBlLCJfdG9vbHRpcFNvcnRpbmdNZXRob2RDaGFuZ2VkIixudWxsKSxmQXQ9dChbaSgidnotbGluZS1jaGFydDIiKV0sZkF0KTtsZXQgbUF0PWNsYXNzIGV4dGVuZHMgd2V7fTttQXQudGVtcGxhdGU9eGVgCiAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KICAgICAgPHRhYmxlPgogICAgICAgIDx0aGVhZD48L3RoZWFkPgogICAgICAgIDx0Ym9keT48L3Rib2R5PgogICAgICA8L3RhYmxlPgogICAgPC9kaXY+CiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgfQoKICAgICAgLmNvbnRlbnQgewogICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC44KTsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgY29sb3I6ICNmZmY7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgfQoKICAgICAgdGFibGUgewogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBsaW5lLWhlaWdodDogMS40ZW07CiAgICAgICAgbWFyZ2luLXRvcDogMTBweDsKICAgICAgICBwYWRkaW5nOiA4cHg7CiAgICAgIH0KCiAgICAgIHRoZWFkIHsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgIH0KCiAgICAgIHRib2R5IHsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgbGluZS1oZWlnaHQ6IDIxcHg7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgfQoKICAgICAgdGQgewogICAgICAgIHBhZGRpbmc6IDAgNXB4OwogICAgICB9CgogICAgICAuc3dhdGNoIHsKICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgaGVpZ2h0OiAxOHB4OwogICAgICAgIHdpZHRoOiAxOHB4OwogICAgICB9CgogICAgICAuY2xvc2VzdCAuc3dhdGNoIHsKICAgICAgICBib3gtc2hhZG93OiBpbnNldCAwIDAgMCAycHggI2ZmZjsKICAgICAgfQoKICAgICAgdGggewogICAgICAgIHBhZGRpbmc6IDAgNXB4OwogICAgICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICAgIH0KCiAgICAgIC5kaXN0YW50IHRkOm5vdCguc3dhdGNoKSB7CiAgICAgICAgb3BhY2l0eTogMC44OwogICAgICB9CgogICAgICAuZ2hvc3QgewogICAgICAgIG9wYWNpdHk6IDAuMjsKICAgICAgICBzdHJva2Utd2lkdGg6IDFweDsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLG1BdD10KFtpKCJ2ei1saW5lLWNoYXJ0LXRvb2x0aXAiKV0sbUF0KTtjb25zdCBnQXQ9W107Y29uc3QgX0F0PUNlLmV4cG9ydHMudGhyb3R0bGUoKGZ1bmN0aW9uIHQoKXtpZigwPT1nQXQubGVuZ3RoKXJldHVybjtjb25zdCBlPWdBdC5zaGlmdCgpO2UmJmUuYWN0aXZlJiYoZS5yZWRyYXcoKSxlLl9tYXliZVJlbmRlcmVkSW5CYWRTdGF0ZT0hMSksd2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lKDApLHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUodCl9KSwxMDApO2xldCB5QXQ9Y2xhc3MgZXh0ZW5kcyhiQ3QoY3Iod2UpKSl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuX3JlZHJhd1JhZj1udWxsLHRoaXMuYWN0aXZlPSExLHRoaXMubG9nU2NhbGVBY3RpdmU9ITEsdGhpcy5jb2xvclNjYWxlPXtzY2FsZTpfT30sdGhpcy5fcmVzZXREb21haW5Pbk5leHRMb2FkPSEwLHRoaXMuX21heWJlUmVuZGVyZWRJbkJhZFN0YXRlPSExfW9uTG9hZEZpbmlzaCgpe3RoaXMuY29tbWl0Q2hhbmdlcygpLHRoaXMuZGF0YVRvTG9hZC5sZW5ndGg+MCYmdGhpcy5fcmVzZXREb21haW5Pbk5leHRMb2FkJiYodGhpcy5fcmVzZXREb21haW5Pbk5leHRMb2FkPSExLHRoaXMuZ2V0Q2hhcnQoKS5yZXNldERvbWFpbigpKSx0aGlzLnJlZHJhdygpfWRpc2Nvbm5lY3RlZENhbGxiYWNrKCl7c3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKSxudWxsIT09dGhpcy5fcmVkcmF3UmFmJiZjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9yZWRyYXdSYWYpfWV4cG9ydEFzU3ZnU3RyaW5nKCl7cmV0dXJuIHRoaXMuZ2V0Q2hhcnQoKS5nZXRFeHBvcnRlcigpLmV4cG9ydEFzU3RyaW5nKCl9Z2V0Q2hhcnQoKXtyZXR1cm4gdGhpcy4kLmNoYXJ0fXJlc2V0RG9tYWluKCl7dGhpcy5nZXRDaGFydCgpLnJlc2V0RG9tYWluKCl9c2V0U2VyaWVzRGF0YSh0LGUpe3RoaXMuZ2V0Q2hhcnQoKS5zZXRTZXJpZXNEYXRhKHQsZSl9c2V0U2VyaWVzTWV0YWRhdGEodCxlKXt0aGlzLmdldENoYXJ0KCkuc2V0U2VyaWVzTWV0YWRhdGEodCxlKX1jb21taXRDaGFuZ2VzKCl7dGhpcy5nZXRDaGFydCgpLmNvbW1pdENoYW5nZXMoKX1yZWRyYXcoKXtudWxsIT09dGhpcy5fcmVkcmF3UmFmJiZjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9yZWRyYXdSYWYpLHRoaXMuX3JlZHJhd1JhZj13aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgoKT0+e3RoaXMuYWN0aXZlP3RoaXMuZ2V0Q2hhcnQoKS5yZWRyYXcoKTp0aGlzLl9tYXliZVJlbmRlcmVkSW5CYWRTdGF0ZT0hMH0pKX1fbG9hZEtleUNoYW5nZWQoKXt0aGlzLnJlc2V0KCksdGhpcy5fcmVzZXREb21haW5Pbk5leHRMb2FkPSEwfV9kYXRhU2VyaWVzQ2hhbmdlZCgpe3RoaXMuZ2V0Q2hhcnQoKS5zZXRWaXNpYmxlU2VyaWVzKHRoaXMuZGF0YVNlcmllcyl9X2xvZ1NjYWxlQ2hhbmdlZCh0KXt0aGlzLmdldENoYXJ0KCkueVNjYWxlVHlwZT10P2FBdC5MT0c6YUF0LkxJTkVBUix0aGlzLnJlZHJhdygpfV9maXhCYWRTdGF0ZVdoZW5BY3RpdmUoKXt0aGlzLmFjdGl2ZSYmdGhpcy5fbWF5YmVSZW5kZXJlZEluQmFkU3RhdGUmJihnQXQucHVzaCh0aGlzKSxfQXQoKSl9X29uQ2hhcnRBdHRhY2hlZCgpe3RoaXMuYWN0aXZlfHwodGhpcy5fbWF5YmVSZW5kZXJlZEluQmFkU3RhdGU9ITApfX07eUF0LnRlbXBsYXRlPXhlYAogICAgPGRpdiBpZD0iY2hhcnQtYW5kLXNwaW5uZXItY29udGFpbmVyIj4KICAgICAgPHZ6LWxpbmUtY2hhcnQyCiAgICAgICAgaWQ9ImNoYXJ0IgogICAgICAgIGRhdGEtbG9hZGluZyQ9IltbZGF0YUxvYWRpbmddXSIKICAgICAgICBkYXRhLWxvYWRlZC1vbmNlJD0iW1tkYXRhTG9hZGVkQXRMZWFzdE9uY2VdXSIKICAgICAgICBjb2xvci1zY2FsZT0iW1tjb2xvclNjYWxlXV0iCiAgICAgICAgZGVmYXVsdC14LXJhbmdlPSJbW2RlZmF1bHRYUmFuZ2VdXSIKICAgICAgICBkZWZhdWx0LXktcmFuZ2U9IltbZGVmYXVsdFlSYW5nZV1dIgogICAgICAgIGZpbGwtYXJlYT0iW1tmaWxsQXJlYV1dIgogICAgICAgIGlnbm9yZS15LW91dGxpZXJzPSJbW2lnbm9yZVlPdXRsaWVyc11dIgogICAgICAgIG9uLWNoYXJ0LWF0dGFjaGVkPSJfb25DaGFydEF0dGFjaGVkIgogICAgICAgIHNtb290aGluZy1lbmFibGVkPSJbW3Ntb290aGluZ0VuYWJsZWRdXSIKICAgICAgICBzbW9vdGhpbmctd2VpZ2h0PSJbW3Ntb290aGluZ1dlaWdodF1dIgogICAgICAgIHN5bWJvbC1mdW5jdGlvbj0iW1tzeW1ib2xGdW5jdGlvbl1dIgogICAgICAgIHRvb2x0aXAtY29sdW1ucz0iW1t0b29sdGlwQ29sdW1uc11dIgogICAgICAgIHRvb2x0aXAtcG9zaXRpb249IltbdG9vbHRpcFBvc2l0aW9uXV0iCiAgICAgICAgdG9vbHRpcC1zb3J0aW5nLW1ldGhvZD0iW1t0b29sdGlwU29ydGluZ01ldGhvZF1dIgogICAgICAgIHgtY29tcG9uZW50cy1jcmVhdGlvbi1tZXRob2Q9IltbeENvbXBvbmVudHNDcmVhdGlvbk1ldGhvZF1dIgogICAgICAgIHgtdHlwZT0iW1t4VHlwZV1dIgogICAgICAgIHktdmFsdWUtYWNjZXNzb3I9IltbeVZhbHVlQWNjZXNzb3JdXSIKICAgICAgPjwvdnotbGluZS1jaGFydDI+CiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tkYXRhTG9hZGluZ11dIj4KICAgICAgICA8ZGl2IGlkPSJsb2FkaW5nLXNwaW5uZXItY29udGFpbmVyIj4KICAgICAgICAgIDxwYXBlci1zcGlubmVyLWxpdGUgYWN0aXZlPSIiPjwvcGFwZXItc3Bpbm5lci1saXRlPgogICAgICAgIDwvZGl2PgogICAgICA8L3RlbXBsYXRlPgogICAgPC9kaXY+CiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICB9CgogICAgICA6aG9zdChbX21heWJlLXJlbmRlcmVkLWluLWJhZC1zdGF0ZV0pIHZ6LWxpbmUtY2hhcnQgewogICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKICAgICAgfQoKICAgICAgI2NoYXJ0LWFuZC1zcGlubmVyLWNvbnRhaW5lciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWdyb3c6IDE7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICB9CgogICAgICAjbG9hZGluZy1zcGlubmVyLWNvbnRhaW5lciB7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBib3R0b206IDA7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHJpZ2h0OiAwOwogICAgICAgIHRvcDogMDsKICAgICAgfQoKICAgICAgdnotbGluZS1jaGFydDIgewogICAgICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgfQoKICAgICAgdnotbGluZS1jaGFydDJbZGF0YS1sb2FkaW5nXSB7CiAgICAgICAgb3BhY2l0eTogMC4zOwogICAgICB9CiAgICA8L3N0eWxlPgogIGAsdChbbyh7dHlwZTpCb29sZWFuLG9ic2VydmVyOiJfZml4QmFkU3RhdGVXaGVuQWN0aXZlIn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0seUF0LnByb3RvdHlwZSwiYWN0aXZlIix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSx5QXQucHJvdG90eXBlLCJkYXRhU2VyaWVzIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLGJyKV0seUF0LnByb3RvdHlwZSwicmVxdWVzdE1hbmFnZXIiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFuLG9ic2VydmVyOiJfbG9nU2NhbGVDaGFuZ2VkIn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0seUF0LnByb3RvdHlwZSwibG9nU2NhbGVBY3RpdmUiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0seUF0LnByb3RvdHlwZSwieENvbXBvbmVudHNDcmVhdGlvbk1ldGhvZCIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSx5QXQucHJvdG90eXBlLCJ4VHlwZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbildLHlBdC5wcm90b3R5cGUsInlWYWx1ZUFjY2Vzc29yIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLHlBdC5wcm90b3R5cGUsImZpbGxBcmVhIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0seUF0LnByb3RvdHlwZSwic21vb3RoaW5nRW5hYmxlZCIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSx5QXQucHJvdG90eXBlLCJzbW9vdGhpbmdXZWlnaHQiLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheX0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLHlBdC5wcm90b3R5cGUsInRvb2x0aXBDb2x1bW5zIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLHlBdC5wcm90b3R5cGUsInRvb2x0aXBTb3J0aW5nTWV0aG9kIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLHlBdC5wcm90b3R5cGUsInRvb2x0aXBQb3NpdGlvbiIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLHlBdC5wcm90b3R5cGUsImlnbm9yZVlPdXRsaWVycyIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0seUF0LnByb3RvdHlwZSwiZGVmYXVsdFhSYW5nZSIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0seUF0LnByb3RvdHlwZSwiZGVmYXVsdFlSYW5nZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbildLHlBdC5wcm90b3R5cGUsInN5bWJvbEZ1bmN0aW9uIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLHlBdC5wcm90b3R5cGUsImNvbG9yU2NhbGUiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSx5QXQucHJvdG90eXBlLCJfcmVzZXREb21haW5Pbk5leHRMb2FkIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbixyZWZsZWN0VG9BdHRyaWJ1dGU6ITB9KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLHlBdC5wcm90b3R5cGUsIl9tYXliZVJlbmRlcmVkSW5CYWRTdGF0ZSIsdm9pZCAwKSx0KFthKCJsb2FkS2V5IiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSx5QXQucHJvdG90eXBlLCJfbG9hZEtleUNoYW5nZWQiLG51bGwpLHQoW2EoImRhdGFTZXJpZXMuKiIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0seUF0LnByb3RvdHlwZSwiX2RhdGFTZXJpZXNDaGFuZ2VkIixudWxsKSx5QXQ9dChbaSgidGYtbGluZS1jaGFydC1kYXRhLWxvYWRlciIpXSx5QXQpLG1sKHttb2R1bGVOYW1lOiJ0Zi1jdXN0b20tc2NhbGFyLWNhcmQtc3R5bGUiLHN0eWxlQ29udGVudDoiXG4gICAgOmhvc3Qge1xuICAgICAgbWFyZ2luOiA1cHggMTBweDtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIHdpZHRoOiAzMzBweDtcbiAgICAgIHZlcnRpY2FsLWFsaWduOiB0ZXh0LXRvcDtcbiAgICB9XG5cbiAgICA6aG9zdChbX2V4cGFuZGVkXSkge1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgfVxuXG4gICAgOmhvc3QoW19leHBhbmRlZF0pICN0Zi1saW5lLWNoYXJ0LWRhdGEtbG9hZGVyLWNvbnRhaW5lciB7XG4gICAgICBoZWlnaHQ6IDQwMHB4O1xuICAgIH1cblxuICAgIGgxIHtcbiAgICAgIGZvbnQtc2l6ZTogMTlweDtcbiAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgfVxuXG4gICAgI3RmLWxpbmUtY2hhcnQtZGF0YS1sb2FkZXItY29udGFpbmVyIHtcbiAgICAgIGhlaWdodDogMjAwcHg7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG5cbiAgICAjYnV0dG9ucyB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICB9XG5cbiAgICBwYXBlci1pY29uLWJ1dHRvbiB7XG4gICAgICBjb2xvcjogIzIxOTZmMztcbiAgICAgIGJvcmRlci1yYWRpdXM6IDEwMCU7XG4gICAgICB3aWR0aDogMzJweDtcbiAgICAgIGhlaWdodDogMzJweDtcbiAgICAgIHBhZGRpbmc6IDRweDtcbiAgICB9XG5cbiAgICBwYXBlci1pY29uLWJ1dHRvbltzZWxlY3RlZF0ge1xuICAgICAgYmFja2dyb3VuZDogdmFyKC0tdGItdWktbGlnaHQtYWNjZW50KTtcbiAgICB9XG5cbiAgICAuZG93bmxvYWQtbGlua3Mge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGhlaWdodDogMzJweDtcbiAgICB9XG5cbiAgICAuZG93bmxvYWQtbGlua3MgYSB7XG4gICAgICBmb250LXNpemU6IDEwcHg7XG4gICAgICBhbGlnbi1zZWxmOiBjZW50ZXI7XG4gICAgICBtYXJnaW46IDJweDtcbiAgICB9XG5cbiAgICAuZG93bmxvYWQtbGlua3MgcGFwZXItZHJvcGRvd24tbWVudSB7XG4gICAgICB3aWR0aDogMTAwcHg7XG4gICAgICAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1sYWJlbDoge1xuICAgICAgICBmb250LXNpemU6IDEwcHg7XG4gICAgICB9XG4gICAgICAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1pbnB1dDoge1xuICAgICAgICBmb250LXNpemU6IDEwcHg7XG4gICAgICB9XG4gICAgfVxuICAifSk7Y2xhc3MgdkF0e2NvbnN0cnVjdG9yKHQsZSxuLGkscil7dGhpcy5ydW49dCx0aGlzLnRhZz1lLHRoaXMubmFtZT1uLHRoaXMuc2NhbGFyRGF0YT1pLHRoaXMuc3ltYm9sPXJ9Z2V0TmFtZSgpe3JldHVybiB0aGlzLm5hbWV9c2V0RGF0YSh0KXt0aGlzLnNjYWxhckRhdGE9dH1nZXREYXRhKCl7cmV0dXJuIHRoaXMuc2NhbGFyRGF0YX1nZXRSdW4oKXtyZXR1cm4gdGhpcy5ydW59Z2V0VGFnKCl7cmV0dXJuIHRoaXMudGFnfWdldFN5bWJvbCgpe3JldHVybiB0aGlzLnN5bWJvbH19ZnVuY3Rpb24gYkF0KHQsZSl7cmV0dXJuYCR7ZX0gKCR7dH0pYH1jbGFzcyB4QXR7Y29uc3RydWN0b3IodCl7dGhpcy5ydW5CYXNlZENvbG9yU2NhbGU9dH1zY2FsZSh0KXtyZXR1cm4gdGhpcy5ydW5CYXNlZENvbG9yU2NhbGUuc2NhbGUodGhpcy5wYXJzZVJ1bk5hbWUodCkpfXBhcnNlUnVuTmFtZSh0KXtjb25zdCBlPXQubWF0Y2goL1woKC4qKVwpJC8pO3JldHVybiBlP2VbMV06IiJ9fWxldCB3QXQ9Y2xhc3MgZXh0ZW5kcyhjcih3ZSkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLmFjdGl2ZT0hMCx0aGlzLl9jb2xvclNjYWxlPW5ldyB4QXQoe3NjYWxlOl9PfSksdGhpcy5fbmFtZVRvRGF0YVNlcmllcz17fSx0aGlzLl9leHBhbmRlZD0hMSx0aGlzLl9yZXF1ZXN0RGF0YT0odCxlLG4pPT57Y29uc3QgaT1FcigpLnBsdWdpblJvdXRlKCJjdXN0b21fc2NhbGFycyIsIi9zY2FsYXJzIik7UHJvbWlzZS5hbGwodC5tYXAoKHQ9Pntjb25zdCBuPVBPKGkse3RhZzp0aGlzLl90YWdGaWx0ZXIscnVuOnR9KTtyZXR1cm4gdGhpcy5yZXF1ZXN0TWFuYWdlci5yZXF1ZXN0KG4pLnRoZW4oKG49PntlKHtpdGVtOnQsZGF0YTpufSl9KSl9KSkpLmZpbmFsbHkoKCgpPT57bigpfSkpfSx0aGlzLl9ydW5Ub05leHRBdmFpbGFibGVTeW1ib2xJbmRleD17fSx0aGlzLl9tYXRjaGVzTGlzdE9wZW5lZD0hMSx0aGlzLl9maWxsQXJlYT17bG93ZXJBY2Nlc3Nvcjp0PT50Lmxvd2VyLGhpZ2hlckFjY2Vzc29yOnQ9PnQudXBwZXJ9LHRoaXMuX3Rvb2x0aXBDb2x1bW5zPSgoKT0+e2NvbnN0IHQ9U0N0KDQpLGU9ZT0+aXNOYU4oZSk/Ik5hTiI6dChlKTtyZXR1cm5be3RpdGxlOiJOYW1lIixldmFsdWF0ZTp0PT50LmRhdGFzZXQubWV0YWRhdGEoKS5uYW1lfSx7dGl0bGU6IlZhbHVlIixldmFsdWF0ZTp0PT5lKHQuZGF0dW0uc2NhbGFyKX0se3RpdGxlOiJMb3dlciBNYXJnaW4iLGV2YWx1YXRlOnQ9PmUodC5kYXR1bS5sb3dlcil9LHt0aXRsZToiVXBwZXIgTWFyZ2luIixldmFsdWF0ZTp0PT5lKHQuZGF0dW0udXBwZXIpfSx7dGl0bGU6IlN0ZXAiLGV2YWx1YXRlOnQ9Pk1DdCh0LmRhdHVtLnN0ZXApfSx7dGl0bGU6IlRpbWUiLGV2YWx1YXRlOnQ9PlRDdCh0LmRhdHVtLndhbGxfdGltZSl9LHt0aXRsZToiUmVsYXRpdmUiLGV2YWx1YXRlOnQ9PkFDdChDQ3QodC5kYXR1bSwwLHQuZGF0YXNldCkpfV19KSgpLHRoaXMuX21pc3NpbmdUYWdzPVtdLHRoaXMuX21pc3NpbmdUYWdzQ29sbGFwc2libGVPcGVuZWQ9ITF9cmVsb2FkKCl7dGhpcy4kLmxvYWRlci5yZWxvYWQoKX1yZWRyYXcoKXt0aGlzLiQubG9hZGVyLnJlZHJhdygpfV90b2dnbGVFeHBhbmRlZCh0KXt0aGlzLnNldCgiX2V4cGFuZGVkIiwhdGhpcy5fZXhwYW5kZWQpLHRoaXMucmVkcmF3KCl9X3RvZ2dsZUxvZ1NjYWxlKCl7dGhpcy5zZXQoIl9sb2dTY2FsZUFjdGl2ZSIsIXRoaXMuX2xvZ1NjYWxlQWN0aXZlKX1fcmVzZXREb21haW4oKXtjb25zdCB0PXRoaXMuJC5sb2FkZXI7dCYmdC5yZXNldERvbWFpbigpfV9jc3ZVcmwodCxlKXtpZighZSlyZXR1cm4iIjtyZXR1cm4gUE8odGhpcy5fZG93bmxvYWREYXRhVXJsKHQsZSkse2Zvcm1hdDoiY3N2In0pfV9qc29uVXJsKHQsZSl7aWYoIWUpcmV0dXJuIiI7cmV0dXJuIFBPKHRoaXMuX2Rvd25sb2FkRGF0YVVybCh0LGUpLHtmb3JtYXQ6Impzb24ifSl9X2Rvd25sb2FkRGF0YVVybCh0LGUpe2NvbnN0IG49dFtlXSxpPXt0YWc6bi5nZXRUYWcoKSxydW46bi5nZXRSdW4oKX07cmV0dXJuIFBPKEVyKCkucGx1Z2luUm91dGUoImN1c3RvbV9zY2FsYXJzIiwiL2Rvd25sb2FkX2RhdGEiKSxpKX1fY3JlYXRlUHJvY2Vzc0RhdGFGdW5jdGlvbih0KXtyZXR1cm4oZSxuLGkpPT57aWYoIWkucmVnZXhfdmFsaWQpcmV0dXJuIHZvaWQgdGhpcy5zZXQoIl90YWdGaWx0ZXJJbnZhbGlkIiwhMCk7Y29uc3Qgcj1DZS5leHBvcnRzLmNsb25lKHRoaXMuX25hbWVUb0RhdGFTZXJpZXMpLG89W107Q2UuZXhwb3J0cy5mb3JFYWNoKHQsKHQ9PntsZXQgZT0hMTtjb25zdCBhPWkudGFnX3RvX2V2ZW50c1t0LnZhbHVlXSxzPWkudGFnX3RvX2V2ZW50c1t0Lmxvd2VyXSxsPWkudGFnX3RvX2V2ZW50c1t0LnVwcGVyXTtpZihDZS5leHBvcnRzLmlzVW5kZWZpbmVkKGEpJiYoby5wdXNoKHQudmFsdWUpLGU9ITApLENlLmV4cG9ydHMuaXNVbmRlZmluZWQocykmJihvLnB1c2godC5sb3dlciksZT0hMCksQ2UuZXhwb3J0cy5pc1VuZGVmaW5lZChsKSYmKG8ucHVzaCh0LnVwcGVyKSxlPSEwKSxlKXJldHVybjtjb25zdCBjPXQ9PnRbMV0sdT10aGlzLl9maW5kU3RlcE1pc21hdGNoKHQsYS5tYXAoYykscy5tYXAoYyksbC5tYXAoYykpO2lmKHUpcmV0dXJuIHZvaWQgdGhpcy5zZXQoIl9zdGVwc01pc21hdGNoIix1KTtjb25zdCBoPXQ9PnRbMl0sZD1hLm1hcCgoKHQsZSk9Pih7d2FsbF90aW1lOm5ldyBEYXRlKDFlMyp0WzBdKSxzdGVwOmModCksc2NhbGFyOmgodCksbG93ZXI6aChzW2VdKSx1cHBlcjpoKGxbZV0pfSkpKSxwPWJBdChuLHQudmFsdWUpLGY9cltwXTtpZihmKWYuc2V0RGF0YShkKTtlbHNle2NvbnN0IGU9dGhpcy5fY3JlYXRlTmV3RGF0YVNlcmllcyhuLHQudmFsdWUscCxkKTtyW3BdPWV9fSkpLHRoaXMuc2V0KCJfbmFtZVRvRGF0YVNlcmllcyIscik7Y29uc3QgYT1DZS5leHBvcnRzLmZpbmRJbmRleCh0aGlzLl9taXNzaW5nVGFncywodD0+dC5ydW49PT1uKSk7aWYoby5sZW5ndGgmJjMhPW8ubGVuZ3RoKXtjb25zdCB0PXtydW46bix0YWdzOm99O2E+PTA/dGhpcy5zcGxpY2UoIl9taXNzaW5nVGFncyIsYSwxLHQpOnRoaXMucHVzaCgiX21pc3NpbmdUYWdzIix0KX1lbHNlIGE+PTAmJnRoaXMuc3BsaWNlKCJfbWlzc2luZ1RhZ3MiLGEsMSl9fV9maW5kU3RlcE1pc21hdGNoKHQsZSxuLGkpe3JldHVybiBDZS5leHBvcnRzLmlzRXF1YWwobixlKSYmQ2UuZXhwb3J0cy5pc0VxdWFsKGksZSk/bnVsbDp7c2VyaWVzT2JqZWN0OnQsdmFsdWVTdGVwczplLGxvd2VyU3RlcHM6bix1cHBlclN0ZXBzOml9fV9jcmVhdGVOZXdEYXRhU2VyaWVzKHQsZSxuLGkpe3RoaXMuX3J1blRvTmV4dEF2YWlsYWJsZVN5bWJvbEluZGV4W3RdfD0wO2NvbnN0IHI9bmV3IHZBdCh0LGUsbixpLHhDdFt0aGlzLl9ydW5Ub05leHRBdmFpbGFibGVTeW1ib2xJbmRleFt0XV0pO3JldHVybiB0aGlzLl9ydW5Ub05leHRBdmFpbGFibGVTeW1ib2xJbmRleFt0XT0odGhpcy5fcnVuVG9OZXh0QXZhaWxhYmxlU3ltYm9sSW5kZXhbdF0rMSkleEN0Lmxlbmd0aCxyfV91cGRhdGVDaGFydCgpe0NlLmV4cG9ydHMuZm9yT3duKHRoaXMuX25hbWVUb0RhdGFTZXJpZXMsKHQ9Pnt0aGlzLiQubG9hZGVyLnNldFNlcmllc0RhdGEodC5nZXROYW1lKCksdC5nZXREYXRhKCkpfSkpLHRoaXMuJC5sb2FkZXIuY29tbWl0Q2hhbmdlcygpfWdldCBfc2VyaWVzTmFtZXMoKXtjb25zdCB0PW5ldyBTZXQodGhpcy5ydW5zKTtyZXR1cm4gT2JqZWN0LmVudHJpZXModGhpcy5fbmFtZVRvRGF0YVNlcmllcykuZmlsdGVyKCgoW2Usbl0pPT50LmhhcyhuLnJ1bikpKS5tYXAoKChbdF0pPT50KSl9X2RldGVybWluZUNvbG9yKHQsZSl7cmV0dXJuIHQuc2NhbGUoZSl9X3JlZnJlc2hEYXRhU2VyaWVzKCl7dGhpcy5zZXQoIl9uYW1lVG9EYXRhU2VyaWVzIix7fSl9X2NyZWF0ZVN5bWJvbEZ1bmN0aW9uKCl7cmV0dXJuIHQ9PnRoaXMuX25hbWVUb0RhdGFTZXJpZXNbdF0uZ2V0U3ltYm9sKCkubWV0aG9kKCl9X2RldGVybWluZVN5bWJvbCh0LGUpe3JldHVybiB0W2VdLmdldFN5bWJvbCgpLmNoYXJhY3Rlcn1nZXQgX3RhZ0ZpbHRlcigpe3JldHVybiBDZS5leHBvcnRzLmZsYXR0ZW4odGhpcy5tYXJnaW5DaGFydFNlcmllcy5tYXAoKHQ9Plt0LnZhbHVlLHQubG93ZXIsdC51cHBlcl0pKSkubWFwKCh0PT4iKCIrdGhpcy5fZXNjYXBlUmVnZXhDaGFyYWN0ZXJzKHQpKyIpIikpLmpvaW4oInwiKX1fZXNjYXBlUmVnZXhDaGFyYWN0ZXJzKHQpe3JldHVybiB0LnJlcGxhY2UoL1suKis/XiR7fSgpfFtcXVxcXS9nLCJcXCQmIil9X2dldFRvZ2dsZUNvbGxhcHNpYmxlSWNvbih0KXtyZXR1cm4gdD8iZXhwYW5kLWxlc3MiOiJleHBhbmQtbW9yZSJ9X3RvZ2dsZU1hdGNoZXNPcGVuKCl7dGhpcy5zZXQoIl9tYXRjaGVzTGlzdE9wZW5lZCIsIXRoaXMuX21hdGNoZXNMaXN0T3BlbmVkKX1nZXQgX3RpdGxlRGlzcGxheVN0cmluZygpe3JldHVybiB0aGlzLnRpdGxlfHwidW50aXRsZWQifV9zZXBhcmF0ZVdpdGhDb21tYXModCl7cmV0dXJuIHQuam9pbigiLCAiKX1fdG9nZ2xlTWlzc2luZ1RhZ3NDb2xsYXBzaWJsZU9wZW4oKXt0aGlzLnNldCgiX21pc3NpbmdUYWdzQ29sbGFwc2libGVPcGVuZWQiLCF0aGlzLl9taXNzaW5nVGFnc0NvbGxhcHNpYmxlT3BlbmVkKX1fbWF0Y2hMaXN0RW50cnlDb2xvclVwZGF0ZWQoKXtjb25zdCB0PXRoaXMuJCQoIiNtYXRjaC1saXN0LXJlcGVhdCIpO3QmJnRoaXMucm9vdC5xdWVyeVNlbGVjdG9yQWxsKCIubWF0Y2gtbGlzdC1lbnRyeSIpLmZvckVhY2goKGU9Pntjb25zdCBuPXQuaXRlbUZvckVsZW1lbnQoZSk7ZS5zdHlsZS5jb2xvcj10aGlzLl9kZXRlcm1pbmVDb2xvcih0aGlzLl9jb2xvclNjYWxlLG4pfSkpfX07d0F0LnRlbXBsYXRlPXhlYAogICAgPHRmLWNhcmQtaGVhZGluZyBkaXNwbGF5LW5hbWU9IltbX3RpdGxlRGlzcGxheVN0cmluZ11dIj48L3RmLWNhcmQtaGVhZGluZz4KICAgIDxkaXYgaWQ9InRmLWxpbmUtY2hhcnQtZGF0YS1sb2FkZXItY29udGFpbmVyIj4KICAgICAgPHRmLWxpbmUtY2hhcnQtZGF0YS1sb2FkZXIKICAgICAgICBpZD0ibG9hZGVyIgogICAgICAgIGFjdGl2ZT0iW1thY3RpdmVdXSIKICAgICAgICBjb2xvci1zY2FsZT0iW1tfY29sb3JTY2FsZV1dIgogICAgICAgIGRhdGEtc2VyaWVzPSJbW19zZXJpZXNOYW1lc11dIgogICAgICAgIGZpbGwtYXJlYT0iW1tfZmlsbEFyZWFdXSIKICAgICAgICBpZ25vcmUteS1vdXRsaWVycz0iW1tpZ25vcmVZT3V0bGllcnNdXSIKICAgICAgICBsb2FkLWtleT0iW1tfdGFnRmlsdGVyXV0iCiAgICAgICAgZGF0YS10by1sb2FkPSJbW3J1bnNdXSIKICAgICAgICByZXF1ZXN0LWRhdGE9IltbX3JlcXVlc3REYXRhXV0iCiAgICAgICAgbG9nLXNjYWxlLWFjdGl2ZT0iW1tfbG9nU2NhbGVBY3RpdmVdXSIKICAgICAgICBsb2FkLWRhdGEtY2FsbGJhY2s9IltbX2NyZWF0ZVByb2Nlc3NEYXRhRnVuY3Rpb24obWFyZ2luQ2hhcnRTZXJpZXMpXV0iCiAgICAgICAgcmVxdWVzdC1tYW5hZ2VyPSJbW3JlcXVlc3RNYW5hZ2VyXV0iCiAgICAgICAgc3ltYm9sLWZ1bmN0aW9uPSJbW19jcmVhdGVTeW1ib2xGdW5jdGlvbigpXV0iCiAgICAgICAgdG9vbHRpcC1jb2x1bW5zPSJbW190b29sdGlwQ29sdW1uc11dIgogICAgICAgIHRvb2x0aXAtc29ydGluZy1tZXRob2Q9IltbdG9vbHRpcFNvcnRpbmdNZXRob2RdXSIKICAgICAgICB4LXR5cGU9IltbeFR5cGVdXSIKICAgICAgPgogICAgICA8L3RmLWxpbmUtY2hhcnQtZGF0YS1sb2FkZXI+CiAgICA8L2Rpdj4KICAgIDxkaXYgaWQ9ImJ1dHRvbnMiPgogICAgICA8cGFwZXItaWNvbi1idXR0b24KICAgICAgICBzZWxlY3RlZCQ9IltbX2V4cGFuZGVkXV0iCiAgICAgICAgaWNvbj0iZnVsbHNjcmVlbiIKICAgICAgICBvbi10YXA9Il90b2dnbGVFeHBhbmRlZCIKICAgICAgPjwvcGFwZXItaWNvbi1idXR0b24+CiAgICAgIDxwYXBlci1pY29uLWJ1dHRvbgogICAgICAgIHNlbGVjdGVkJD0iW1tfbG9nU2NhbGVBY3RpdmVdXSIKICAgICAgICBpY29uPSJsaW5lLXdlaWdodCIKICAgICAgICBvbi10YXA9Il90b2dnbGVMb2dTY2FsZSIKICAgICAgICB0aXRsZT0iVG9nZ2xlIHktYXhpcyBsb2cgc2NhbGUiCiAgICAgID48L3BhcGVyLWljb24tYnV0dG9uPgogICAgICA8cGFwZXItaWNvbi1idXR0b24KICAgICAgICBpY29uPSJzZXR0aW5ncy1vdmVyc2NhbiIKICAgICAgICBvbi10YXA9Il9yZXNldERvbWFpbiIKICAgICAgICB0aXRsZT0iRml0IGRvbWFpbiB0byBkYXRhIgogICAgICA+PC9wYXBlci1pY29uLWJ1dHRvbj4KICAgICAgPHNwYW4gc3R5bGU9ImZsZXgtZ3JvdzogMSI+PC9zcGFuPgogICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9Iltbc2hvd0Rvd25sb2FkTGlua3NdXSI+CiAgICAgICAgPGRpdiBjbGFzcz0iZG93bmxvYWQtbGlua3MiPgogICAgICAgICAgPHBhcGVyLWRyb3Bkb3duLW1lbnUKICAgICAgICAgICAgbm8tbGFiZWwtZmxvYXQ9InRydWUiCiAgICAgICAgICAgIGxhYmVsPSJzZXJpZXMgdG8gZG93bmxvYWQiCiAgICAgICAgICAgIHNlbGVjdGVkLWl0ZW0tbGFiZWw9Int7X2RhdGFTZXJpZXNOYW1lVG9Eb3dubG9hZH19IgogICAgICAgICAgPgogICAgICAgICAgICA8cGFwZXItbGlzdGJveCBjbGFzcz0iZHJvcGRvd24tY29udGVudCIgc2xvdD0iZHJvcGRvd24tY29udGVudCI+CiAgICAgICAgICAgICAgPHRlbXBsYXRlCiAgICAgICAgICAgICAgICBpcz0iZG9tLXJlcGVhdCIKICAgICAgICAgICAgICAgIGl0ZW1zPSJbW19zZXJpZXNOYW1lc11dIgogICAgICAgICAgICAgICAgYXM9ImRhdGFTZXJpZXNOYW1lIgogICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgIDxwYXBlci1pdGVtIG5vLWxhYmVsLWZsb2F0PSJ0cnVlIgogICAgICAgICAgICAgICAgICA+W1tkYXRhU2VyaWVzTmFtZV1dPC9wYXBlci1pdGVtCiAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgPC9wYXBlci1saXN0Ym94PgogICAgICAgICAgPC9wYXBlci1kcm9wZG93bi1tZW51PgogICAgICAgICAgPGEKICAgICAgICAgICAgZG93bmxvYWQ9IltbX2RhdGFTZXJpZXNOYW1lVG9Eb3dubG9hZF1dLmNzdiIKICAgICAgICAgICAgaHJlZj0iW1tfY3N2VXJsKF9uYW1lVG9EYXRhU2VyaWVzLCBfZGF0YVNlcmllc05hbWVUb0Rvd25sb2FkKV1dIgogICAgICAgICAgICA+Q1NWPC9hCiAgICAgICAgICA+CiAgICAgICAgICA8YQogICAgICAgICAgICBkb3dubG9hZD0iW1tfZGF0YVNlcmllc05hbWVUb0Rvd25sb2FkXV0uanNvbiIKICAgICAgICAgICAgaHJlZj0iW1tfanNvblVybChfbmFtZVRvRGF0YVNlcmllcywgX2RhdGFTZXJpZXNOYW1lVG9Eb3dubG9hZCldXSIKICAgICAgICAgICAgPkpTT048L2EKICAgICAgICAgID4KICAgICAgICA8L2Rpdj4KICAgICAgPC90ZW1wbGF0ZT4KICAgIDwvZGl2PgoKICAgIDwhLS0gaGVyZSAtLT4KICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfbWlzc2luZ1RhZ3MubGVuZ3RoXV0iPgogICAgICA8ZGl2IGNsYXNzPSJjb2xsYXBzaWJsZS1saXN0LXRpdGxlIj4KICAgICAgICA8cGFwZXItaWNvbi1idXR0b24KICAgICAgICAgIGljb249IltbX2dldFRvZ2dsZUNvbGxhcHNpYmxlSWNvbihfbWlzc2luZ1RhZ3NDb2xsYXBzaWJsZU9wZW5lZCldXSIKICAgICAgICAgIG9uLWNsaWNrPSJfdG9nZ2xlTWlzc2luZ1RhZ3NDb2xsYXBzaWJsZU9wZW4iCiAgICAgICAgICBjbGFzcz0idG9nZ2xlLWNvbGxhcHNpYmxlLWJ1dHRvbiIKICAgICAgICA+CiAgICAgICAgPC9wYXBlci1pY29uLWJ1dHRvbj4KICAgICAgICA8c3BhbiBjbGFzcz0iY29sbGFwc2libGUtdGl0bGUtdGV4dCI+CiAgICAgICAgICA8aXJvbi1pY29uIGljb249Imljb25zOmVycm9yIj48L2lyb24taWNvbj4gTWlzc2luZyBUYWdzCiAgICAgICAgPC9zcGFuPgogICAgICA8L2Rpdj4KICAgICAgPGlyb24tY29sbGFwc2Ugb3BlbmVkPSJbW19taXNzaW5nVGFnc0NvbGxhcHNpYmxlT3BlbmVkXV0iPgogICAgICAgIDxkaXYgY2xhc3M9ImVycm9yLWNvbnRlbnQiPgogICAgICAgICAgPGlyb24taWNvbiBjbGFzcz0iZXJyb3ItaWNvbiIgaWNvbj0iaWNvbnM6ZXJyb3IiPjwvaXJvbi1pY29uPgogICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20tcmVwZWF0IiBpdGVtcz0iW1tfbWlzc2luZ1RhZ3NdXSIgYXM9Im1pc3NpbmdFbnRyeSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1pc3NpbmctdGFncy1mb3ItcnVuLWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgUnVuICJbW21pc3NpbmdFbnRyeS5ydW5dXSIgbGFja3MgZGF0YSBmb3IgdGFncwogICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZQogICAgICAgICAgICAgICAgICBpcz0iZG9tLXJlcGVhdCIKICAgICAgICAgICAgICAgICAgaXRlbXM9IltbbWlzc2luZ0VudHJ5LnRhZ3NdXSIKICAgICAgICAgICAgICAgICAgYXM9InRhZyIKICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgPGxpPltbdGFnXV08L2xpPgogICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvaXJvbi1jb2xsYXBzZT4KICAgIDwvdGVtcGxhdGU+CgogICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW190YWdGaWx0ZXJJbnZhbGlkXV0iPgogICAgICA8ZGl2IGNsYXNzPSJlcnJvci1jb250ZW50Ij4KICAgICAgICA8aXJvbi1pY29uIGNsYXNzPSJlcnJvci1pY29uIiBpY29uPSJpY29uczplcnJvciI+PC9pcm9uLWljb24+CiAgICAgICAgVGhpcyByZWd1bGFyIGV4cHJlc2lvbiBpcyBpbnZhbGlkOjxiciAvPgogICAgICAgIDxzcGFuIGNsYXNzPSJpbnZhbGlkLXJlZ2V4Ij5bW190YWdGaWx0ZXJdXTwvc3Bhbj4KICAgICAgPC9kaXY+CiAgICA8L3RlbXBsYXRlPgoKICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfc3RlcHNNaXNtYXRjaF1dIj4KICAgICAgPGRpdiBjbGFzcz0iZXJyb3ItY29udGVudCI+CiAgICAgICAgPGlyb24taWNvbiBjbGFzcz0iZXJyb3ItaWNvbiIgaWNvbj0iaWNvbnM6ZXJyb3IiPjwvaXJvbi1pY29uPgogICAgICAgIFRoZSBzdGVwcyBmb3IgdmFsdWUsIGxvd2VyLCBhbmQgdXBwZXIgdGFncyBkbyBub3QgbWF0Y2g6CiAgICAgICAgPHVsPgogICAgICAgICAgPGxpPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0idGFnLW5hbWUiPltbX3N0ZXBzTWlzbWF0Y2guc2VyaWVzT2JqZWN0LnZhbHVlXV08L3NwYW4+OgogICAgICAgICAgICBbW19zZXBhcmF0ZVdpdGhDb21tYXMoX3N0ZXBzTWlzbWF0Y2gudmFsdWVTdGVwcyldXQogICAgICAgICAgPC9saT4KICAgICAgICAgIDxsaT4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRhZy1uYW1lIj5bW19zdGVwc01pc21hdGNoLnNlcmllc09iamVjdC5sb3dlcl1dPC9zcGFuPjoKICAgICAgICAgICAgW1tfc2VwYXJhdGVXaXRoQ29tbWFzKF9zdGVwc01pc21hdGNoLmxvd2VyU3RlcHMpXV0KICAgICAgICAgIDwvbGk+CiAgICAgICAgICA8bGk+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0YWctbmFtZSI+W1tfc3RlcHNNaXNtYXRjaC5zZXJpZXNPYmplY3QudXBwZXJdXTwvc3Bhbj46CiAgICAgICAgICAgIFtbX3NlcGFyYXRlV2l0aENvbW1hcyhfc3RlcHNNaXNtYXRjaC51cHBlclN0ZXBzKV1dCiAgICAgICAgICA8L2xpPgogICAgICAgIDwvdWw+CiAgICAgIDwvZGl2PgogICAgPC90ZW1wbGF0ZT4KCiAgICA8ZGl2IGlkPSJtYXRjaGVzLWNvbnRhaW5lciI+CiAgICAgIDxkaXYgY2xhc3M9ImNvbGxhcHNpYmxlLWxpc3QtdGl0bGUiPgogICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfc2VyaWVzTmFtZXMubGVuZ3RoXV0iPgogICAgICAgICAgPHBhcGVyLWljb24tYnV0dG9uCiAgICAgICAgICAgIGljb249IltbX2dldFRvZ2dsZUNvbGxhcHNpYmxlSWNvbihfbWF0Y2hlc0xpc3RPcGVuZWQpXV0iCiAgICAgICAgICAgIG9uLWNsaWNrPSJfdG9nZ2xlTWF0Y2hlc09wZW4iCiAgICAgICAgICAgIGNsYXNzPSJ0b2dnbGUtbWF0Y2hlcy1idXR0b24iCiAgICAgICAgICA+CiAgICAgICAgICA8L3BhcGVyLWljb24tYnV0dG9uPgogICAgICAgIDwvdGVtcGxhdGU+CgogICAgICAgIDxzcGFuIGNsYXNzPSJjb2xsYXBzaWJsZS10aXRsZS10ZXh0Ij4KICAgICAgICAgIE1hdGNoZXMgKFtbX3Nlcmllc05hbWVzLmxlbmd0aF1dKQogICAgICAgIDwvc3Bhbj4KICAgICAgPC9kaXY+CiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfc2VyaWVzTmFtZXMubGVuZ3RoXV0iPgogICAgICAgIDxpcm9uLWNvbGxhcHNlIG9wZW5lZD0iW1tfbWF0Y2hlc0xpc3RPcGVuZWRdXSI+CiAgICAgICAgICA8ZGl2IGlkPSJtYXRjaGVzLWxpc3QiPgogICAgICAgICAgICA8dGVtcGxhdGUKICAgICAgICAgICAgICBpcz0iZG9tLXJlcGVhdCIKICAgICAgICAgICAgICBpdGVtcz0iW1tfc2VyaWVzTmFtZXNdXSIKICAgICAgICAgICAgICBhcz0ic2VyaWVzTmFtZSIKICAgICAgICAgICAgICBpZD0ibWF0Y2gtbGlzdC1yZXBlYXQiCiAgICAgICAgICAgICAgb24tZG9tLWNoYW5nZT0iX21hdGNoTGlzdEVudHJ5Q29sb3JVcGRhdGVkIgogICAgICAgICAgICA+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWF0Y2gtbGlzdC1lbnRyeSI+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibWF0Y2gtZW50cnktc3ltYm9sIj4KICAgICAgICAgICAgICAgICAgW1tfZGV0ZXJtaW5lU3ltYm9sKF9uYW1lVG9EYXRhU2VyaWVzLCBzZXJpZXNOYW1lKV1dCiAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICBbW3Nlcmllc05hbWVdXQogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9pcm9uLWNvbGxhcHNlPgogICAgICA8L3RlbXBsYXRlPgogICAgPC9kaXY+CgogICAgPHN0eWxlIGluY2x1ZGU9InRmLWN1c3RvbS1zY2FsYXItY2FyZC1zdHlsZSI+PC9zdHlsZT4KICAgIDxzdHlsZT4KICAgICAgLmVycm9yLWNvbnRlbnQgewogICAgICAgIGJhY2tncm91bmQ6ICNmMDA7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNXB4OwogICAgICAgIGNvbG9yOiAjZmZmOwogICAgICAgIG1hcmdpbjogMTBweCAwIDAgMDsKICAgICAgICBwYWRkaW5nOiAxMHB4OwogICAgICB9CgogICAgICAuZXJyb3ItaWNvbiB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgZmlsbDogI2ZmZjsKICAgICAgICBtYXJnaW46IDAgYXV0byA1cHggYXV0bzsKICAgICAgfQoKICAgICAgLmludmFsaWQtcmVnZXggewogICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgICB9CgogICAgICAuZXJyb3ItY29udGVudCB1bCB7CiAgICAgICAgbWFyZ2luOiAxcHggMCAwIDA7CiAgICAgICAgcGFkZGluZzogMCAwIDAgMTlweDsKICAgICAgfQoKICAgICAgLnRhZy1uYW1lIHsKICAgICAgICBmb250LXdlaWdodDogYm9sZDsKICAgICAgfQoKICAgICAgLmNvbGxhcHNpYmxlLWxpc3QtdGl0bGUgewogICAgICAgIG1hcmdpbjogMTBweCAwIDVweCAwOwogICAgICB9CgogICAgICAuY29sbGFwc2libGUtdGl0bGUtdGV4dCB7CiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICAgICAgfQoKICAgICAgI21hdGNoZXMtbGlzdCB7CiAgICAgICAgbWF4LWhlaWdodDogMjAwcHg7CiAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKICAgICAgfQoKICAgICAgLm1hdGNoLWxpc3QtZW50cnkgewogICAgICAgIG1hcmdpbjogMCAwIDVweCAwOwogICAgICB9CgogICAgICAubWF0Y2gtZW50cnktc3ltYm9sIHsKICAgICAgICBmb250LWZhbWlseTogYXJpYWwsIHNhbnMtc2VyaWY7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIHdpZHRoOiAxMHB4OwogICAgICB9CgogICAgICAubWlzc2luZy10YWdzLWZvci1ydW4tY29udGFpbmVyIHsKICAgICAgICBtYXJnaW46IDhweCAwIDAgMDsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSx3QXQucHJvdG90eXBlLCJydW5zIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLHdBdC5wcm90b3R5cGUsInhUeXBlIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sd0F0LnByb3RvdHlwZSwiYWN0aXZlIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLHdBdC5wcm90b3R5cGUsInRpdGxlIix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSx3QXQucHJvdG90eXBlLCJtYXJnaW5DaGFydFNlcmllcyIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLHdBdC5wcm90b3R5cGUsImlnbm9yZVlPdXRsaWVycyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixicildLHdBdC5wcm90b3R5cGUsInJlcXVlc3RNYW5hZ2VyIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sd0F0LnByb3RvdHlwZSwic2hvd0Rvd25sb2FkTGlua3MiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sd0F0LnByb3RvdHlwZSwidGFnTWV0YWRhdGEiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sd0F0LnByb3RvdHlwZSwidG9vbHRpcFNvcnRpbmdNZXRob2QiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sd0F0LnByb3RvdHlwZSwiX2NvbG9yU2NhbGUiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSx3QXQucHJvdG90eXBlLCJfdGFnRmlsdGVySW52YWxpZCIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSx3QXQucHJvdG90eXBlLCJfbmFtZVRvRGF0YVNlcmllcyIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW4scmVmbGVjdFRvQXR0cmlidXRlOiEwfSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSx3QXQucHJvdG90eXBlLCJfZXhwYW5kZWQiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSx3QXQucHJvdG90eXBlLCJfbG9nU2NhbGVBY3RpdmUiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pXSx3QXQucHJvdG90eXBlLCJfcmVxdWVzdERhdGEiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sd0F0LnByb3RvdHlwZSwiX3J1blRvTmV4dEF2YWlsYWJsZVN5bWJvbEluZGV4Iix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sd0F0LnByb3RvdHlwZSwiX21hdGNoZXNMaXN0T3BlbmVkIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLHdBdC5wcm90b3R5cGUsIl9maWxsQXJlYSIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sd0F0LnByb3RvdHlwZSwiX3Rvb2x0aXBDb2x1bW5zIix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSx3QXQucHJvdG90eXBlLCJfbWlzc2luZ1RhZ3MiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSx3QXQucHJvdG90eXBlLCJfbWlzc2luZ1RhZ3NDb2xsYXBzaWJsZU9wZW5lZCIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSx3QXQucHJvdG90eXBlLCJfc3RlcHNNaXNtYXRjaCIsdm9pZCAwKSx0KFthKCJfbmFtZVRvRGF0YVNlcmllcyIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sd0F0LnByb3RvdHlwZSwiX3VwZGF0ZUNoYXJ0IixudWxsKSx0KFtzKCJfbmFtZVRvRGF0YVNlcmllcyIsInJ1bnMiKSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSx3QXQucHJvdG90eXBlLCJfc2VyaWVzTmFtZXMiLG51bGwpLHQoW2EoIl90YWdGaWx0ZXIiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLHdBdC5wcm90b3R5cGUsIl9yZWZyZXNoRGF0YVNlcmllcyIsbnVsbCksdChbcygibWFyZ2luQ2hhcnRTZXJpZXMiKSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSx3QXQucHJvdG90eXBlLCJfdGFnRmlsdGVyIixudWxsKSx0KFtzKCJ0aXRsZSIpLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLHdBdC5wcm90b3R5cGUsIl90aXRsZURpc3BsYXlTdHJpbmciLG51bGwpLHdBdD10KFtpKCJ0Zi1jdXN0b20tc2NhbGFyLW1hcmdpbi1jaGFydC1jYXJkIildLHdBdCk7dmFyIFNBdD1PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxUWVBFUzpbXSxnZXRSdW5zTmFtZWQ6ZnVuY3Rpb24gTUF0KHQpe3JldHVybiBDZS5leHBvcnRzLmtleXModCkuc29ydCh1cil9LGdldFRhZ3M6ZnIsZmlsdGVyVGFnczpmdW5jdGlvbiBFQXQodCxlKXtsZXQgbj1bXTtyZXR1cm4gZS5mb3JFYWNoKChlPT5uPW4uY29uY2F0KHRbZV0pKSksQ2UuZXhwb3J0cy51bmlxKG4pLnNvcnQodXIpfSxMaXN0ZW5LZXk6QWwsQmFzZVN0b3JlOmtsLENhbmNlbGxlcjp4TyxFbnZpcm9ubWVudFN0b3JlOkxsLGVudmlyb25tZW50U3RvcmU6UGwsRXhwZXJpbWVudHNTdG9yZTpkTyxleHBlcmltZW50c1N0b3JlOnBPLFJlcXVlc3RDYW5jZWxsYXRpb25FcnJvcjptcixJbnZhbGlkUmVxdWVzdE9wdGlvbnNFcnJvcjpncixSZXF1ZXN0TmV0d29ya0Vycm9yOl9yLGdldCBIdHRwTWV0aG9kVHlwZSgpe3JldHVybiB5cn0sUmVxdWVzdE9wdGlvbnM6dnIsUmVxdWVzdE1hbmFnZXI6YnIsY3JlYXRlUm91dGVyOk1yLGdldFJvdXRlcjpFcixzZXRSb3V0ZXI6ZnVuY3Rpb24gVEF0KHQpe2lmKG51bGw9PXQpdGhyb3cgbmV3IEVycm9yKCJSb3V0ZXIgcmVxdWlyZWQsIGJ1dCBnb3Q6ICIrdCk7U3I9dH0sY3JlYXRlU2VhcmNoUGFyYW06Q3IsUnVuc1N0b3JlOk5sLHJ1bnNTdG9yZTpJbCxhZGRQYXJhbXM6UE99KTtsZXQgQ0F0PWNsYXNzIGV4dGVuZHMoY3Iod2UpKXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5hY3RpdmU9ITAsdGhpcy5fY29sb3JTY2FsZT1uZXcgeEF0KHtzY2FsZTpfT30pLHRoaXMuX25hbWVUb0RhdGFTZXJpZXM9e30sdGhpcy5fZXhwYW5kZWQ9ITEsdGhpcy5fcmVxdWVzdERhdGE9KHQsZSxuKT0+e2NvbnN0IGk9RXIoKS5wbHVnaW5Sb3V0ZSgiY3VzdG9tX3NjYWxhcnMiLCIvc2NhbGFycyIpO1Byb21pc2UuYWxsKHQubWFwKCh0PT57Y29uc3Qgbj1QTyhpLHt0YWc6dGhpcy5fdGFnRmlsdGVyLHJ1bjp0fSk7cmV0dXJuIHRoaXMucmVxdWVzdE1hbmFnZXIucmVxdWVzdChuKS50aGVuKChuPT57ZSh7aXRlbTp0LGRhdGE6bn0pfSkpfSkpKS5maW5hbGx5KCgoKT0+e24oKX0pKX0sdGhpcy5fcnVuVG9OZXh0QXZhaWxhYmxlU3ltYm9sSW5kZXg9e30sdGhpcy5fbWF0Y2hlc0xpc3RPcGVuZWQ9ITF9cmVsb2FkKCl7dGhpcy4kLmxvYWRlci5yZWxvYWQoKX1yZWRyYXcoKXt0aGlzLiQubG9hZGVyLnJlZHJhdygpfV90b2dnbGVFeHBhbmRlZCh0KXt0aGlzLnNldCgiX2V4cGFuZGVkIiwhdGhpcy5fZXhwYW5kZWQpLHRoaXMucmVkcmF3KCl9X3RvZ2dsZUxvZ1NjYWxlKCl7dGhpcy5zZXQoIl9sb2dTY2FsZUFjdGl2ZSIsIXRoaXMuX2xvZ1NjYWxlQWN0aXZlKX1fcmVzZXREb21haW4oKXtjb25zdCB0PXRoaXMuJC5sb2FkZXI7dCYmdC5yZXNldERvbWFpbigpfV9jc3ZVcmwodCxlKXtpZighZSlyZXR1cm4iIjtyZXR1cm4gUE8odGhpcy5fZG93bmxvYWREYXRhVXJsKHQsZSkse2Zvcm1hdDoiY3N2In0pfV9qc29uVXJsKHQsZSl7aWYoIWUpcmV0dXJuIiI7cmV0dXJuIFBPKHRoaXMuX2Rvd25sb2FkRGF0YVVybCh0LGUpLHtmb3JtYXQ6Impzb24ifSl9X2Rvd25sb2FkRGF0YVVybCh0LGUpe2NvbnN0IG49dFtlXSxpPXt0YWc6bi5nZXRUYWcoKSxydW46bi5nZXRSdW4oKX07cmV0dXJuIFBPKEVyKCkucGx1Z2luUm91dGUoImN1c3RvbV9zY2FsYXJzIiwiL2Rvd25sb2FkX2RhdGEiKSxpKX1fY3JlYXRlUHJvY2Vzc0RhdGFGdW5jdGlvbigpe3JldHVybih0LGUsbik9PntpZihuLnJlZ2V4X3ZhbGlkKXtjb25zdCB0PUNlLmV4cG9ydHMuY2xvbmUodGhpcy5fbmFtZVRvRGF0YVNlcmllcyk7Q2UuZXhwb3J0cy5mb3JPd24obi50YWdfdG9fZXZlbnRzLCgobixpKT0+e2NvbnN0IHI9bi5tYXAoKHQ9Pih7d2FsbF90aW1lOm5ldyBEYXRlKDFlMyp0WzBdKSxzdGVwOnRbMV0sc2NhbGFyOnRbMl19KSkpLG89YkF0KGUsaSksYT10W29dO2lmKGEpYS5zZXREYXRhKHIpO2Vsc2V7Q2UuZXhwb3J0cy5pc1VuZGVmaW5lZCh0aGlzLl9ydW5Ub05leHRBdmFpbGFibGVTeW1ib2xJbmRleFtlXSkmJih0aGlzLl9ydW5Ub05leHRBdmFpbGFibGVTeW1ib2xJbmRleFtlXT0wKTtjb25zdCBuPW5ldyB2QXQoZSxpLG8scix4Q3RbdGhpcy5fcnVuVG9OZXh0QXZhaWxhYmxlU3ltYm9sSW5kZXhbZV1dKTt0W29dPW47dGhpcy5fcnVuVG9OZXh0QXZhaWxhYmxlU3ltYm9sSW5kZXhbZV09KHRoaXMuX3J1blRvTmV4dEF2YWlsYWJsZVN5bWJvbEluZGV4W2VdKzEpJXhDdC5sZW5ndGh9fSkpLHRoaXMuc2V0KCJfbmFtZVRvRGF0YVNlcmllcyIsdCl9fX1fdXBkYXRlQ2hhcnQoKXtPYmplY3QuZW50cmllcyh0aGlzLl9uYW1lVG9EYXRhU2VyaWVzKS5mb3JFYWNoKCgoW3QsZV0pPT57dGhpcy4kLmxvYWRlci5zZXRTZXJpZXNEYXRhKHQsZS5nZXREYXRhKCkpfSkpLHRoaXMuJC5sb2FkZXIuY29tbWl0Q2hhbmdlcygpfV9jb21wdXRlU2VsZWN0ZWRSdW5zU2V0KHQpe2NvbnN0IGU9e307cmV0dXJuIENlLmV4cG9ydHMuZm9yRWFjaCh0LCh0PT57ZVt0XT0xfSkpLGV9Z2V0IF9zZXJpZXNOYW1lcygpe2NvbnN0IHQ9bmV3IFNldCh0aGlzLnJ1bnMpO3JldHVybiBPYmplY3QuZW50cmllcyh0aGlzLl9uYW1lVG9EYXRhU2VyaWVzKS5maWx0ZXIoKChbZSxuXSk9PnQuaGFzKG4ucnVuKSkpLm1hcCgoKFt0XSk9PnQpKX1fZGV0ZXJtaW5lQ29sb3IodCxlKXtyZXR1cm4gdC5zY2FsZShlKX1fcmVmcmVzaERhdGFTZXJpZXMoKXt0aGlzLnNldCgiX25hbWVUb0RhdGFTZXJpZXMiLHt9KX1fY3JlYXRlU3ltYm9sRnVuY3Rpb24oKXtyZXR1cm4gdD0+dGhpcy5fbmFtZVRvRGF0YVNlcmllc1t0XS5nZXRTeW1ib2woKS5tZXRob2QoKX1fZGV0ZXJtaW5lU3ltYm9sKHQsZSl7cmV0dXJuIHRbZV0uZ2V0U3ltYm9sKCkuY2hhcmFjdGVyfWdldCBfdGFnRmlsdGVyKCl7dmFyIHQ9dGhpcy50YWdSZWdleGVzO3JldHVybiAxPT09dC5sZW5ndGg/dFswXTp0Lm1hcCgodD0+IigiK3QrIikiKSkuam9pbigifCIpfV9nZXRUb2dnbGVNYXRjaGVzSWNvbih0KXtyZXR1cm4gdD8iZXhwYW5kLWxlc3MiOiJleHBhbmQtbW9yZSJ9X3RvZ2dsZU1hdGNoZXNPcGVuKCl7dGhpcy5zZXQoIl9tYXRjaGVzTGlzdE9wZW5lZCIsIXRoaXMuX21hdGNoZXNMaXN0T3BlbmVkKX1nZXQgX3RpdGxlRGlzcGxheVN0cmluZygpe3JldHVybiB0aGlzLnRpdGxlfHwidW50aXRsZWQifV9tYXRjaExpc3RFbnRyeUNvbG9yVXBkYXRlZCh0KXtjb25zdCBlPXRoaXMuJCQoIiNtYXRjaC1saXN0LXJlcGVhdCIpO2UmJnRoaXMucm9vdC5xdWVyeVNlbGVjdG9yQWxsKCIubWF0Y2gtbGlzdC1lbnRyeSIpLmZvckVhY2goKHQ9Pntjb25zdCBuPWUuaXRlbUZvckVsZW1lbnQodCk7dC5zdHlsZS5jb2xvcj10aGlzLl9kZXRlcm1pbmVDb2xvcih0aGlzLl9jb2xvclNjYWxlLG4pfSkpfX07Q0F0LnRlbXBsYXRlPXhlYAogICAgPHRmLWNhcmQtaGVhZGluZyBkaXNwbGF5LW5hbWU9IltbX3RpdGxlRGlzcGxheVN0cmluZ11dIj48L3RmLWNhcmQtaGVhZGluZz4KICAgIDxkaXYgaWQ9InRmLWxpbmUtY2hhcnQtZGF0YS1sb2FkZXItY29udGFpbmVyIj4KICAgICAgPHRmLWxpbmUtY2hhcnQtZGF0YS1sb2FkZXIKICAgICAgICBpZD0ibG9hZGVyIgogICAgICAgIGFjdGl2ZT0iW1thY3RpdmVdXSIKICAgICAgICBjb2xvci1zY2FsZT0iW1tfY29sb3JTY2FsZV1dIgogICAgICAgIGRhdGEtc2VyaWVzPSJbW19zZXJpZXNOYW1lc11dIgogICAgICAgIGlnbm9yZS15LW91dGxpZXJzPSJbW2lnbm9yZVlPdXRsaWVyc11dIgogICAgICAgIGxvYWQta2V5PSJbW190YWdGaWx0ZXJdXSIKICAgICAgICBkYXRhLXRvLWxvYWQ9IltbcnVuc11dIgogICAgICAgIHJlcXVlc3QtZGF0YT0iW1tfcmVxdWVzdERhdGFdXSIKICAgICAgICBsb2ctc2NhbGUtYWN0aXZlPSJbW19sb2dTY2FsZUFjdGl2ZV1dIgogICAgICAgIGxvYWQtZGF0YS1jYWxsYmFjaz0iW1tfY3JlYXRlUHJvY2Vzc0RhdGFGdW5jdGlvbigpXV0iCiAgICAgICAgcmVxdWVzdC1tYW5hZ2VyPSJbW3JlcXVlc3RNYW5hZ2VyXV0iCiAgICAgICAgc21vb3RoaW5nLWVuYWJsZWQ9Iltbc21vb3RoaW5nRW5hYmxlZF1dIgogICAgICAgIHNtb290aGluZy13ZWlnaHQ9Iltbc21vb3RoaW5nV2VpZ2h0XV0iCiAgICAgICAgc3ltYm9sLWZ1bmN0aW9uPSJbW19jcmVhdGVTeW1ib2xGdW5jdGlvbigpXV0iCiAgICAgICAgdG9vbHRpcC1zb3J0aW5nLW1ldGhvZD0iW1t0b29sdGlwU29ydGluZ01ldGhvZF1dIgogICAgICAgIHgtdHlwZT0iW1t4VHlwZV1dIgogICAgICA+CiAgICAgIDwvdGYtbGluZS1jaGFydC1kYXRhLWxvYWRlcj4KICAgIDwvZGl2PgogICAgPGRpdiBpZD0iYnV0dG9ucyI+CiAgICAgIDxwYXBlci1pY29uLWJ1dHRvbgogICAgICAgIHNlbGVjdGVkJD0iW1tfZXhwYW5kZWRdXSIKICAgICAgICBpY29uPSJmdWxsc2NyZWVuIgogICAgICAgIG9uLXRhcD0iX3RvZ2dsZUV4cGFuZGVkIgogICAgICA+PC9wYXBlci1pY29uLWJ1dHRvbj4KICAgICAgPHBhcGVyLWljb24tYnV0dG9uCiAgICAgICAgc2VsZWN0ZWQkPSJbW19sb2dTY2FsZUFjdGl2ZV1dIgogICAgICAgIGljb249ImxpbmUtd2VpZ2h0IgogICAgICAgIG9uLXRhcD0iX3RvZ2dsZUxvZ1NjYWxlIgogICAgICAgIHRpdGxlPSJUb2dnbGUgeS1heGlzIGxvZyBzY2FsZSIKICAgICAgPjwvcGFwZXItaWNvbi1idXR0b24+CiAgICAgIDxwYXBlci1pY29uLWJ1dHRvbgogICAgICAgIGljb249InNldHRpbmdzLW92ZXJzY2FuIgogICAgICAgIG9uLXRhcD0iX3Jlc2V0RG9tYWluIgogICAgICAgIHRpdGxlPSJGaXQgZG9tYWluIHRvIGRhdGEiCiAgICAgID48L3BhcGVyLWljb24tYnV0dG9uPgogICAgICA8c3BhbiBzdHlsZT0iZmxleC1ncm93OiAxIj48L3NwYW4+CiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tzaG93RG93bmxvYWRMaW5rc11dIj4KICAgICAgICA8ZGl2IGNsYXNzPSJkb3dubG9hZC1saW5rcyI+CiAgICAgICAgICA8cGFwZXItZHJvcGRvd24tbWVudQogICAgICAgICAgICBuby1sYWJlbC1mbG9hdD0idHJ1ZSIKICAgICAgICAgICAgbGFiZWw9InNlcmllcyB0byBkb3dubG9hZCIKICAgICAgICAgICAgc2VsZWN0ZWQtaXRlbS1sYWJlbD0ie3tfZGF0YVNlcmllc05hbWVUb0Rvd25sb2FkfX0iCiAgICAgICAgICA+CiAgICAgICAgICAgIDxwYXBlci1saXN0Ym94IGNsYXNzPSJkcm9wZG93bi1jb250ZW50IiBzbG90PSJkcm9wZG93bi1jb250ZW50Ij4KICAgICAgICAgICAgICA8dGVtcGxhdGUKICAgICAgICAgICAgICAgIGlzPSJkb20tcmVwZWF0IgogICAgICAgICAgICAgICAgaXRlbXM9IltbX3Nlcmllc05hbWVzXV0iCiAgICAgICAgICAgICAgICBhcz0iZGF0YVNlcmllc05hbWUiCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgPHBhcGVyLWl0ZW0gbm8tbGFiZWwtZmxvYXQ9InRydWUiCiAgICAgICAgICAgICAgICAgID5bW2RhdGFTZXJpZXNOYW1lXV08L3BhcGVyLWl0ZW0KICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICA8L3BhcGVyLWxpc3Rib3g+CiAgICAgICAgICA8L3BhcGVyLWRyb3Bkb3duLW1lbnU+CiAgICAgICAgICA8YQogICAgICAgICAgICBkb3dubG9hZD0iW1tfZGF0YVNlcmllc05hbWVUb0Rvd25sb2FkXV0uY3N2IgogICAgICAgICAgICBocmVmPSJbW19jc3ZVcmwoX25hbWVUb0RhdGFTZXJpZXMsIF9kYXRhU2VyaWVzTmFtZVRvRG93bmxvYWQpXV0iCiAgICAgICAgICAgID5DU1Y8L2EKICAgICAgICAgID4KICAgICAgICAgIDxhCiAgICAgICAgICAgIGRvd25sb2FkPSJbW19kYXRhU2VyaWVzTmFtZVRvRG93bmxvYWRdXS5qc29uIgogICAgICAgICAgICBocmVmPSJbW19qc29uVXJsKF9uYW1lVG9EYXRhU2VyaWVzLCBfZGF0YVNlcmllc05hbWVUb0Rvd25sb2FkKV1dIgogICAgICAgICAgICA+SlNPTjwvYQogICAgICAgICAgPgogICAgICAgIDwvZGl2PgogICAgICA8L3RlbXBsYXRlPgogICAgPC9kaXY+CiAgICA8ZGl2IGlkPSJtYXRjaGVzLWNvbnRhaW5lciI+CiAgICAgIDxkaXYgaWQ9Im1hdGNoZXMtbGlzdC10aXRsZSI+CiAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19zZXJpZXNOYW1lcy5sZW5ndGhdXSI+CiAgICAgICAgICA8cGFwZXItaWNvbi1idXR0b24KICAgICAgICAgICAgaWNvbj0iW1tfZ2V0VG9nZ2xlTWF0Y2hlc0ljb24oX21hdGNoZXNMaXN0T3BlbmVkKV1dIgogICAgICAgICAgICBvbi1jbGljaz0iX3RvZ2dsZU1hdGNoZXNPcGVuIgogICAgICAgICAgICBjbGFzcz0idG9nZ2xlLW1hdGNoZXMtYnV0dG9uIgogICAgICAgICAgPgogICAgICAgICAgPC9wYXBlci1pY29uLWJ1dHRvbj4KICAgICAgICA8L3RlbXBsYXRlPgoKICAgICAgICA8c3BhbiBjbGFzcz0ibWF0Y2hlcy10ZXh0Ij4gTWF0Y2hlcyAoW1tfc2VyaWVzTmFtZXMubGVuZ3RoXV0pIDwvc3Bhbj4KICAgICAgPC9kaXY+CiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfc2VyaWVzTmFtZXMubGVuZ3RoXV0iPgogICAgICAgIDxpcm9uLWNvbGxhcHNlIG9wZW5lZD0iW1tfbWF0Y2hlc0xpc3RPcGVuZWRdXSI+CiAgICAgICAgICA8ZGl2IGlkPSJtYXRjaGVzLWxpc3QiPgogICAgICAgICAgICA8dGVtcGxhdGUKICAgICAgICAgICAgICBpcz0iZG9tLXJlcGVhdCIKICAgICAgICAgICAgICBpdGVtcz0iW1tfc2VyaWVzTmFtZXNdXSIKICAgICAgICAgICAgICBhcz0ic2VyaWVzTmFtZSIKICAgICAgICAgICAgICBpZD0ibWF0Y2gtbGlzdC1yZXBlYXQiCiAgICAgICAgICAgICAgb24tZG9tLWNoYW5nZT0iX21hdGNoTGlzdEVudHJ5Q29sb3JVcGRhdGVkIgogICAgICAgICAgICA+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWF0Y2gtbGlzdC1lbnRyeSI+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibWF0Y2gtZW50cnktc3ltYm9sIj4KICAgICAgICAgICAgICAgICAgW1tfZGV0ZXJtaW5lU3ltYm9sKF9uYW1lVG9EYXRhU2VyaWVzLCBzZXJpZXNOYW1lKV1dCiAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICBbW3Nlcmllc05hbWVdXQogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9pcm9uLWNvbGxhcHNlPgogICAgICA8L3RlbXBsYXRlPgogICAgPC9kaXY+CgogICAgPHN0eWxlIGluY2x1ZGU9InRmLWN1c3RvbS1zY2FsYXItY2FyZC1zdHlsZSI+PC9zdHlsZT4KICAgIDxzdHlsZT4KICAgICAgI21hdGNoZXMtbGlzdC10aXRsZSB7CiAgICAgICAgbWFyZ2luOiAxMHB4IDAgNXB4IDA7CiAgICAgIH0KCiAgICAgICNtYXRjaGVzLWxpc3QgewogICAgICAgIG1heC1oZWlnaHQ6IDIwMHB4OwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgIH0KCiAgICAgIC5tYXRjaC1saXN0LWVudHJ5IHsKICAgICAgICBtYXJnaW46IDAgMCA1cHggMDsKICAgICAgfQoKICAgICAgLm1hdGNoLWVudHJ5LXN5bWJvbCB7CiAgICAgICAgZm9udC1mYW1pbHk6IGFyaWFsLCBzYW5zLXNlcmlmOwogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICB3aWR0aDogMTBweDsKICAgICAgfQoKICAgICAgLm1hdGNoZXMtdGV4dCB7CiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxDQXQucHJvdG90eXBlLCJydW5zIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLENBdC5wcm90b3R5cGUsInhUeXBlIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sQ0F0LnByb3RvdHlwZSwiYWN0aXZlIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLENBdC5wcm90b3R5cGUsInRpdGxlIix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxDQXQucHJvdG90eXBlLCJ0YWdSZWdleGVzIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sQ0F0LnByb3RvdHlwZSwiaWdub3JlWU91dGxpZXJzIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLGJyKV0sQ0F0LnByb3RvdHlwZSwicmVxdWVzdE1hbmFnZXIiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxDQXQucHJvdG90eXBlLCJzaG93RG93bmxvYWRMaW5rcyIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLENBdC5wcm90b3R5cGUsInNtb290aGluZ0VuYWJsZWQiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sQ0F0LnByb3RvdHlwZSwic21vb3RoaW5nV2VpZ2h0Iix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLENBdC5wcm90b3R5cGUsInRhZ01ldGFkYXRhIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLENBdC5wcm90b3R5cGUsInRvb2x0aXBTb3J0aW5nTWV0aG9kIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLHhBdCldLENBdC5wcm90b3R5cGUsIl9jb2xvclNjYWxlIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLENBdC5wcm90b3R5cGUsIl9uYW1lVG9EYXRhU2VyaWVzIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbixyZWZsZWN0VG9BdHRyaWJ1dGU6ITB9KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLENBdC5wcm90b3R5cGUsIl9leHBhbmRlZCIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLENBdC5wcm90b3R5cGUsIl9sb2dTY2FsZUFjdGl2ZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbildLENBdC5wcm90b3R5cGUsIl9yZXF1ZXN0RGF0YSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxDQXQucHJvdG90eXBlLCJfcnVuVG9OZXh0QXZhaWxhYmxlU3ltYm9sSW5kZXgiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxDQXQucHJvdG90eXBlLCJfbWF0Y2hlc0xpc3RPcGVuZWQiLHZvaWQgMCksdChbYSgiX25hbWVUb0RhdGFTZXJpZXMiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLENBdC5wcm90b3R5cGUsIl91cGRhdGVDaGFydCIsbnVsbCksdChbcygiX25hbWVUb0RhdGFTZXJpZXMiLCJydW5zIiksZSgiZGVzaWduOnR5cGUiLE9iamVjdCksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sQ0F0LnByb3RvdHlwZSwiX3Nlcmllc05hbWVzIixudWxsKSx0KFthKCJfdGFnRmlsdGVyIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxDQXQucHJvdG90eXBlLCJfcmVmcmVzaERhdGFTZXJpZXMiLG51bGwpLHQoW3MoInRhZ1JlZ2V4ZXMiKSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxDQXQucHJvdG90eXBlLCJfdGFnRmlsdGVyIixudWxsKSx0KFtzKCJ0aXRsZSIpLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLENBdC5wcm90b3R5cGUsIl90aXRsZURpc3BsYXlTdHJpbmciLG51bGwpLENBdD10KFtpKCJ0Zi1jdXN0b20tc2NhbGFyLW11bHRpLWxpbmUtY2hhcnQtY2FyZCIpXSxDQXQpO2xldCBBQXQ9Y2xhc3MgZXh0ZW5kcyB3ZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5fcmVxdWVzdE1hbmFnZXI9bmV3IGJyKDUwKSx0aGlzLl9jYW5jZWxsZXI9bmV3IHhPLHRoaXMuX3Nob3dEb3dubG9hZExpbmtzPVFzKCJfc2hvd0Rvd25sb2FkTGlua3MiLHtkZWZhdWx0VmFsdWU6ITEsdXNlTG9jYWxTdG9yYWdlOiEwfSkuY2FsbCh0aGlzKSx0aGlzLl9zbW9vdGhpbmdXZWlnaHQ9cmwoIl9zbW9vdGhpbmdXZWlnaHQiLHtkZWZhdWx0VmFsdWU6LjZ9KS5jYWxsKHRoaXMpLHRoaXMuX2lnbm9yZVlPdXRsaWVycz1RcygiX2lnbm9yZVlPdXRsaWVycyIse2RlZmF1bHRWYWx1ZTohMCx1c2VMb2NhbFN0b3JhZ2U6ITB9KS5jYWxsKHRoaXMpLHRoaXMuX3hUeXBlPSJzdGVwIix0aGlzLl9hY3RpdmU9ITAsdGhpcy5yZWxvYWRPblJlYWR5PSEwLHRoaXMuX3Nob3dEb3dubG9hZExpbmtzT2JzZXJ2ZXI9dGwoIl9zaG93RG93bmxvYWRMaW5rcyIse2RlZmF1bHRWYWx1ZTohMSx1c2VMb2NhbFN0b3JhZ2U6ITB9KSx0aGlzLl9zbW9vdGhpbmdXZWlnaHRPYnNlcnZlcj1vbCgiX3Ntb290aGluZ1dlaWdodCIse2RlZmF1bHRWYWx1ZTouNn0pLHRoaXMuX2lnbm9yZVlPdXRsaWVyc09ic2VydmVyPXRsKCJfaWdub3JlWU91dGxpZXJzIix7ZGVmYXVsdFZhbHVlOiEwLHVzZUxvY2FsU3RvcmFnZTohMH0pfXJlYWR5KCl7c3VwZXIucmVhZHkoKSx0aGlzLnJlbG9hZE9uUmVhZHkmJnRoaXMucmVsb2FkKCl9cmVsb2FkKCl7Y29uc3QgdD1FcigpLnBsdWdpbnNMaXN0aW5nKCksZT10aGlzLl9jYW5jZWxsZXIuY2FuY2VsbGFibGUoKHQ9Pnt0LmNhbmNlbGxlZHx8KHRoaXMuc2V0KCJfZGF0YU5vdEZvdW5kIiwhdC52YWx1ZS5jdXN0b21fc2NhbGFycyksdGhpcy5fZGF0YU5vdEZvdW5kfHx0aGlzLl9yZXRyaWV2ZUxheW91dEFuZERhdGEoKSl9KSk7dGhpcy5fcmVxdWVzdE1hbmFnZXIucmVxdWVzdCh0KS50aGVuKGUpfV9yZWxvYWRDaGFydHMoKXt0aGlzLnJvb3QucXVlcnlTZWxlY3RvckFsbCgidGYtY3VzdG9tLXNjYWxhci1tYXJnaW4tY2hhcnQtY2FyZCwgdGYtY3VzdG9tLXNjYWxhci1tdWx0aS1saW5lLWNoYXJ0LWNhcmQiKS5mb3JFYWNoKCh0PT57dC5yZWxvYWQoKX0pKX1fcmV0cmlldmVMYXlvdXRBbmREYXRhKCl7Y29uc3QgdD1FcigpLnBsdWdpblJvdXRlKCJjdXN0b21fc2NhbGFycyIsIi9sYXlvdXQiKSxlPXRoaXMuX2NhbmNlbGxlci5jYW5jZWxsYWJsZSgodD0+e3QuY2FuY2VsbGVkfHwodGhpcy5zZXQoIl9sYXlvdXQiLHQudmFsdWUpLHRoaXMuX2RhdGFOb3RGb3VuZHx8dGhpcy5fcmVsb2FkQ2hhcnRzKCkpfSkpO3RoaXMuX3JlcXVlc3RNYW5hZ2VyLnJlcXVlc3QodCkudGhlbihlKX1nZXQgX3Ntb290aGluZ0VuYWJsZWQoKXtyZXR1cm4gdGhpcy5fc21vb3RoaW5nV2VpZ2h0PjB9Z2V0IF9jYXRlZ29yaWVzKCl7dmFyIHQ9dGhpcy5fbGF5b3V0O2lmKCF0LmNhdGVnb3J5KXJldHVybltdO2xldCBlPSExO3RoaXMuX29wZW5lZENhdGVnb3JpZXN8fChlPSEwLHRoaXMuX29wZW5lZENhdGVnb3JpZXM9e30pO3JldHVybiB0LmNhdGVnb3J5Lm1hcCgodD0+KGUmJiF0LmNsb3NlZCYmKHRoaXMuX29wZW5lZENhdGVnb3JpZXNbdC50aXRsZV09ITApLHtuYW1lOnQudGl0bGUsaXRlbXM6dC5jaGFydCxtZXRhZGF0YTp7dHlwZTpBci5QUkVGSVhfR1JPVVAsb3BlbmVkOiEhdGhpcy5fb3BlbmVkQ2F0ZWdvcmllc1t0LnRpdGxlXX19KSkpfV9jYXRlZ29yeU9wZW5lZFRvZ2dsZWQodCl7Y29uc3QgZT10LnRhcmdldDtlLm9wZW5lZD90aGlzLl9vcGVuZWRDYXRlZ29yaWVzW2UuY2F0ZWdvcnkubmFtZV09ITA6ZGVsZXRlIHRoaXMuX29wZW5lZENhdGVnb3JpZXNbZS5jYXRlZ29yeS5uYW1lXX19O0FBdC50ZW1wbGF0ZT14ZWAKICAgIDx0Zi1kYXNoYm9hcmQtbGF5b3V0PgogICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyIiBzbG90PSJzaWRlYmFyIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZXR0aW5ncyI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyLXNlY3Rpb24iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJsaW5lLWl0ZW0iPgogICAgICAgICAgICAgIDxwYXBlci1jaGVja2JveCBjaGVja2VkPSJ7e19zaG93RG93bmxvYWRMaW5rc319IgogICAgICAgICAgICAgICAgPlNob3cgZGF0YSBkb3dubG9hZCBsaW5rczwvcGFwZXItY2hlY2tib3gKICAgICAgICAgICAgICA+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJsaW5lLWl0ZW0iPgogICAgICAgICAgICAgIDxwYXBlci1jaGVja2JveCBjaGVja2VkPSJ7e19pZ25vcmVZT3V0bGllcnN9fSIKICAgICAgICAgICAgICAgID5JZ25vcmUgb3V0bGllcnMgaW4gY2hhcnQgc2NhbGluZzwvcGFwZXItY2hlY2tib3gKICAgICAgICAgICAgICA+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGlkPSJ0b29sdGlwLXNvcnRpbmciPgogICAgICAgICAgICAgIDxkaXYgaWQ9InRvb2x0aXAtc29ydGluZy1sYWJlbCI+VG9vbHRpcCBzb3J0aW5nIG1ldGhvZDo8L2Rpdj4KICAgICAgICAgICAgICA8cGFwZXItZHJvcGRvd24tbWVudQogICAgICAgICAgICAgICAgbm8tbGFiZWwtZmxvYXQ9IiIKICAgICAgICAgICAgICAgIHNlbGVjdGVkLWl0ZW0tbGFiZWw9Int7X3Rvb2x0aXBTb3J0aW5nTWV0aG9kfX0iCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgPHBhcGVyLWxpc3Rib3gKICAgICAgICAgICAgICAgICAgY2xhc3M9ImRyb3Bkb3duLWNvbnRlbnQiCiAgICAgICAgICAgICAgICAgIHNlbGVjdGVkPSIwIgogICAgICAgICAgICAgICAgICBzbG90PSJkcm9wZG93bi1jb250ZW50IgogICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICA8cGFwZXItaXRlbT5kZWZhdWx0PC9wYXBlci1pdGVtPgogICAgICAgICAgICAgICAgICA8cGFwZXItaXRlbT5kZXNjZW5kaW5nPC9wYXBlci1pdGVtPgogICAgICAgICAgICAgICAgICA8cGFwZXItaXRlbT5hc2NlbmRpbmc8L3BhcGVyLWl0ZW0+CiAgICAgICAgICAgICAgICAgIDxwYXBlci1pdGVtPm5lYXJlc3Q8L3BhcGVyLWl0ZW0+CiAgICAgICAgICAgICAgICA8L3BhcGVyLWxpc3Rib3g+CiAgICAgICAgICAgICAgPC9wYXBlci1kcm9wZG93bi1tZW51PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ic2lkZWJhci1zZWN0aW9uIj4KICAgICAgICAgICAgPHRmLXNtb290aGluZy1pbnB1dAogICAgICAgICAgICAgIHdlaWdodD0ie3tfc21vb3RoaW5nV2VpZ2h0fX0iCiAgICAgICAgICAgICAgc3RlcD0iMC4wMDEiCiAgICAgICAgICAgICAgbWluPSIwIgogICAgICAgICAgICAgIG1heD0iMSIKICAgICAgICAgICAgPjwvdGYtc21vb3RoaW5nLWlucHV0PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyLXNlY3Rpb24iPgogICAgICAgICAgICA8dGYtb3B0aW9uLXNlbGVjdG9yCiAgICAgICAgICAgICAgaWQ9IngtdHlwZS1zZWxlY3RvciIKICAgICAgICAgICAgICBuYW1lPSJIb3Jpem9udGFsIEF4aXMiCiAgICAgICAgICAgICAgc2VsZWN0ZWQtaWQ9Int7X3hUeXBlfX0iCiAgICAgICAgICAgID4KICAgICAgICAgICAgICA8cGFwZXItYnV0dG9uIGlkPSJzdGVwIj5zdGVwPC9wYXBlci1idXR0b24KICAgICAgICAgICAgICA+PCEtLQogICAgICAgICAgICAtLT48cGFwZXItYnV0dG9uIGlkPSJyZWxhdGl2ZSI+cmVsYXRpdmU8L3BhcGVyLWJ1dHRvbgogICAgICAgICAgICAgID48IS0tCiAgICAgICAgICAgIC0tPjxwYXBlci1idXR0b24gaWQ9IndhbGxfdGltZSI+d2FsbDwvcGFwZXItYnV0dG9uPgogICAgICAgICAgICA8L3RmLW9wdGlvbi1zZWxlY3Rvcj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNpZGViYXItc2VjdGlvbiBydW5zLXNlbGVjdG9yIj4KICAgICAgICAgIDx0Zi1ydW5zLXNlbGVjdG9yIHNlbGVjdGVkLXJ1bnM9Int7X3NlbGVjdGVkUnVuc319Ij4KICAgICAgICAgIDwvdGYtcnVucy1zZWxlY3Rvcj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImNlbnRlciIgc2xvdD0iY2VudGVyIiBpZD0iY2F0ZWdvcmllcy1jb250YWluZXIiPgogICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfZGF0YU5vdEZvdW5kXV0iPgogICAgICAgICAgPGRpdiBjbGFzcz0ibm8tZGF0YS13YXJuaW5nIj4KICAgICAgICAgICAgPGgzPlRoZSBjdXN0b20gc2NhbGFycyBkYXNoYm9hcmQgaXMgaW5hY3RpdmUuPC9oMz4KICAgICAgICAgICAgPHA+UHJvYmFibGUgY2F1c2VzOjwvcD4KICAgICAgICAgICAgPG9sPgogICAgICAgICAgICAgIDxsaT5Zb3UgaGF2ZW4ndCBsYWlkIG91dCB0aGUgZGFzaGJvYXJkLjwvbGk+CiAgICAgICAgICAgICAgPGxpPllvdSBoYXZlbuKAmXQgd3JpdHRlbiBhbnkgc2NhbGFyIGRhdGEgdG8geW91ciBldmVudCBmaWxlcy48L2xpPgogICAgICAgICAgICA8L29sPgoKICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgVG8gbGF5IG91dCB0aGUgZGFzaGJvYXJkLCBwYXNzIGEgPGNvZGU+TGF5b3V0PC9jb2RlPiBwcm90b2J1ZmZlcgogICAgICAgICAgICAgIHRvIHRoZSA8Y29kZT5zZXRfbGF5b3V0PC9jb2RlPiBtZXRob2QuIEZvciBleGFtcGxlLAogICAgICAgICAgICA8L3A+CiAgICAgICAgICAgIDxwcmU+CmZyb20gdGVuc29yYm9hcmQgaW1wb3J0IHN1bW1hcnkKZnJvbSB0ZW5zb3Jib2FyZC5wbHVnaW5zLmN1c3RvbV9zY2FsYXIgaW1wb3J0IGxheW91dF9wYjIKLi4uCiMgVGhpcyBhY3Rpb24gZG9lcyBub3QgaGF2ZSB0byBiZSBwZXJmb3JtZWQgYXQgZXZlcnkgc3RlcCwgc28gdGhlIGFjdGlvbiBpcyBub3QKIyB0YWtlbiBjYXJlIG9mIGJ5IGFuIG9wIGluIHRoZSBncmFwaC4gV2Ugb25seSBuZWVkIHRvIHNwZWNpZnkgdGhlIGxheW91dCBvbmNlCiMgKGluc3RlYWQgb2YgcGVyIHN0ZXApLgpsYXlvdXRfc3VtbWFyeSA9IHN1bW1hcnlfbGliLmN1c3RvbV9zY2FsYXJfcGIobGF5b3V0X3BiMi5MYXlvdXQoCiAgY2F0ZWdvcnk9WwogICAgbGF5b3V0X3BiMi5DYXRlZ29yeSgKICAgICAgdGl0bGU9J2xvc3NlcycsCiAgICAgIGNoYXJ0PVsKICAgICAgICAgIGxheW91dF9wYjIuQ2hhcnQoCiAgICAgICAgICAgICAgdGl0bGU9J2xvc3NlcycsCiAgICAgICAgICAgICAgbXVsdGlsaW5lPWxheW91dF9wYjIuTXVsdGlsaW5lQ2hhcnRDb250ZW50KAogICAgICAgICAgICAgICAgdGFnPVtyJ2xvc3MuKiddLAogICAgICAgICAgICAgICkpLAogICAgICAgICAgbGF5b3V0X3BiMi5DaGFydCgKICAgICAgICAgICAgICB0aXRsZT0nYmF6JywKICAgICAgICAgICAgICBtYXJnaW49bGF5b3V0X3BiMi5NYXJnaW5DaGFydENvbnRlbnQoCiAgICAgICAgICAgICAgICBzZXJpZXM9WwogICAgICAgICAgICAgICAgICBsYXlvdXRfcGIyLk1hcmdpbkNoYXJ0Q29udGVudC5TZXJpZXMoCiAgICAgICAgICAgICAgICAgICAgdmFsdWU9J2xvc3MvYmF6L3NjYWxhcl9zdW1tYXJ5JywKICAgICAgICAgICAgICAgICAgICBsb3dlcj0nYmF6X2xvd2VyL2Jhei9zY2FsYXJfc3VtbWFyeScsCiAgICAgICAgICAgICAgICAgICAgdXBwZXI9J2Jhel91cHBlci9iYXovc2NhbGFyX3N1bW1hcnknKSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgKSksCiAgICAgIF0pLAogICAgbGF5b3V0X3BiMi5DYXRlZ29yeSgKICAgICAgdGl0bGU9J3RyaWcgZnVuY3Rpb25zJywKICAgICAgY2hhcnQ9WwogICAgICAgICAgbGF5b3V0X3BiMi5DaGFydCgKICAgICAgICAgICAgICB0aXRsZT0nd2F2ZSB0cmlnIGZ1bmN0aW9ucycsCiAgICAgICAgICAgICAgbXVsdGlsaW5lPWxheW91dF9wYjIuTXVsdGlsaW5lQ2hhcnRDb250ZW50KAogICAgICAgICAgICAgICAgdGFnPVtyJ3RyaWdGdW5jdGlvbnMvY29zaW5lJywgcid0cmlnRnVuY3Rpb25zL3NpbmUnXSwKICAgICAgICAgICAgICApKSwKICAgICAgICAgICMgVGhlIHJhbmdlIG9mIHRhbmdlbnQgaXMgZGlmZmVyZW50LiBMZXQncyBnaXZlIGl0IGl0cyBvd24gY2hhcnQuCiAgICAgICAgICBsYXlvdXRfcGIyLkNoYXJ0KAogICAgICAgICAgICAgIHRpdGxlPSd0YW4nLAogICAgICAgICAgICAgIG11bHRpbGluZT1sYXlvdXRfcGIyLk11bHRpbGluZUNoYXJ0Q29udGVudCgKICAgICAgICAgICAgICAgIHRhZz1bcid0cmlnRnVuY3Rpb25zL3RhbmdlbnQnXSwKICAgICAgICAgICAgICApKSwKICAgICAgXSwKICAgICAgIyBUaGlzIGNhdGVnb3J5IHdlIGNhcmUgbGVzcyBhYm91dC4gTGV0J3MgbWFrZSBpdCBpbml0aWFsbHkgY2xvc2VkLgogICAgICBjbG9zZWQ9VHJ1ZSksCiAgXSkpCndyaXRlci5hZGRfc3VtbWFyeShsYXlvdXRfc3VtbWFyeSkKPC9wcmUKICAgICAgICAgICAgPgogICAgICAgICAgICA8cD4KICAgICAgICAgICAgICBJZiB5b3XigJlyZSBuZXcgdG8gdXNpbmcgVGVuc29yQm9hcmQsIGFuZCB3YW50IHRvIGZpbmQgb3V0IGhvdyB0bwogICAgICAgICAgICAgIGFkZCBkYXRhIGFuZCBzZXQgdXAgeW91ciBldmVudCBmaWxlcywgY2hlY2sgb3V0IHRoZQogICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vdGVuc29yZmxvdy90ZW5zb3Jib2FyZC9ibG9iL21hc3Rlci9SRUFETUUubWQiCiAgICAgICAgICAgICAgICA+UkVBRE1FPC9hCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgIGFuZCBwZXJoYXBzIHRoZQogICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICBocmVmPSJodHRwczovL3d3dy50ZW5zb3JmbG93Lm9yZy9nZXRfc3RhcnRlZC9zdW1tYXJpZXNfYW5kX3RlbnNvcmJvYXJkIgogICAgICAgICAgICAgICAgPlRlbnNvckJvYXJkIHR1dG9yaWFsPC9hCiAgICAgICAgICAgICAgPi4KICAgICAgICAgICAgPC9wPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbIV9kYXRhTm90Rm91bmRdXSI+CiAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1yZXBlYXQiIGl0ZW1zPSJbW19jYXRlZ29yaWVzXV0iIGFzPSJjYXRlZ29yeSI+CiAgICAgICAgICAgIDx0Zi1jYXRlZ29yeS1wYWdpbmF0ZWQtdmlldwogICAgICAgICAgICAgIGFzPSJjaGFydCIKICAgICAgICAgICAgICBjYXRlZ29yeT0iW1tjYXRlZ29yeV1dIgogICAgICAgICAgICAgIGRpc2FibGUtcGFnaW5hdGlvbgogICAgICAgICAgICAgIGluaXRpYWwtb3BlbmVkPSJbW2NhdGVnb3J5Lm1ldGFkYXRhLm9wZW5lZF1dIgogICAgICAgICAgICA+CiAgICAgICAgICAgICAgPHRlbXBsYXRlPgogICAgICAgICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW2NoYXJ0Lm11bHRpbGluZV1dIj4KICAgICAgICAgICAgICAgICAgPHRmLWN1c3RvbS1zY2FsYXItbXVsdGktbGluZS1jaGFydC1jYXJkCiAgICAgICAgICAgICAgICAgICAgYWN0aXZlPSJbW2FjdGl2ZV1dIgogICAgICAgICAgICAgICAgICAgIHJlcXVlc3QtbWFuYWdlcj0iW1tfcmVxdWVzdE1hbmFnZXJdXSIKICAgICAgICAgICAgICAgICAgICBydW5zPSJbW19zZWxlY3RlZFJ1bnNdXSIKICAgICAgICAgICAgICAgICAgICB0aXRsZT0iW1tjaGFydC50aXRsZV1dIgogICAgICAgICAgICAgICAgICAgIHgtdHlwZT0iW1tfeFR5cGVdXSIKICAgICAgICAgICAgICAgICAgICBzbW9vdGhpbmctZW5hYmxlZD0iW1tfc21vb3RoaW5nRW5hYmxlZF1dIgogICAgICAgICAgICAgICAgICAgIHNtb290aGluZy13ZWlnaHQ9IltbX3Ntb290aGluZ1dlaWdodF1dIgogICAgICAgICAgICAgICAgICAgIHRvb2x0aXAtc29ydGluZy1tZXRob2Q9IltbdG9vbHRpcFNvcnRpbmdNZXRob2RdXSIKICAgICAgICAgICAgICAgICAgICBpZ25vcmUteS1vdXRsaWVycz0iW1tfaWdub3JlWU91dGxpZXJzXV0iCiAgICAgICAgICAgICAgICAgICAgc2hvdy1kb3dubG9hZC1saW5rcz0iW1tfc2hvd0Rvd25sb2FkTGlua3NdXSIKICAgICAgICAgICAgICAgICAgICB0YWctcmVnZXhlcz0iW1tjaGFydC5tdWx0aWxpbmUudGFnXV0iCiAgICAgICAgICAgICAgICAgID48L3RmLWN1c3RvbS1zY2FsYXItbXVsdGktbGluZS1jaGFydC1jYXJkPgogICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tjaGFydC5tYXJnaW5dXSI+CiAgICAgICAgICAgICAgICAgIDx0Zi1jdXN0b20tc2NhbGFyLW1hcmdpbi1jaGFydC1jYXJkCiAgICAgICAgICAgICAgICAgICAgYWN0aXZlPSJbW2FjdGl2ZV1dIgogICAgICAgICAgICAgICAgICAgIHJlcXVlc3QtbWFuYWdlcj0iW1tfcmVxdWVzdE1hbmFnZXJdXSIKICAgICAgICAgICAgICAgICAgICBydW5zPSJbW19zZWxlY3RlZFJ1bnNdXSIKICAgICAgICAgICAgICAgICAgICB0aXRsZT0iW1tjaGFydC50aXRsZV1dIgogICAgICAgICAgICAgICAgICAgIHgtdHlwZT0iW1tfeFR5cGVdXSIKICAgICAgICAgICAgICAgICAgICB0b29sdGlwLXNvcnRpbmctbWV0aG9kPSJbW3Rvb2x0aXBTb3J0aW5nTWV0aG9kXV0iCiAgICAgICAgICAgICAgICAgICAgaWdub3JlLXktb3V0bGllcnM9IltbX2lnbm9yZVlPdXRsaWVyc11dIgogICAgICAgICAgICAgICAgICAgIHNob3ctZG93bmxvYWQtbGlua3M9IltbX3Nob3dEb3dubG9hZExpbmtzXV0iCiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWNoYXJ0LXNlcmllcz0iW1tjaGFydC5tYXJnaW4uc2VyaWVzXV0iCiAgICAgICAgICAgICAgICAgID48L3RmLWN1c3RvbS1zY2FsYXItbWFyZ2luLWNoYXJ0LWNhcmQ+CiAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgIDwvdGYtY2F0ZWdvcnktcGFnaW5hdGVkLXZpZXc+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDwvZGl2PgogICAgPC90Zi1kYXNoYm9hcmQtbGF5b3V0PgoKICAgIDxzdHlsZSBpbmNsdWRlPSJkYXNoYm9hcmQtc3R5bGUiPjwvc3R5bGU+CiAgICA8c3R5bGU+CiAgICAgICN0b29sdGlwLXNvcnRpbmcgewogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgbWFyZ2luLXRvcDogMTVweDsKICAgICAgfQogICAgICAjdG9vbHRpcC1zb3J0aW5nIHBhcGVyLWRyb3Bkb3duLW1lbnUgewogICAgICAgIG1hcmdpbi1sZWZ0OiAxMHB4OwogICAgICAgIC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWZvY3VzLWNvbG9yOiB2YXIoLS10Yi1vcmFuZ2Utc3Ryb25nKTsKICAgICAgICB3aWR0aDogMTA1cHg7CiAgICAgIH0KICAgICAgLmxpbmUtaXRlbSB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgcGFkZGluZy10b3A6IDVweDsKICAgICAgfQogICAgICAubm8tZGF0YS13YXJuaW5nIHsKICAgICAgICBtYXgtd2lkdGg6IDU0MHB4OwogICAgICAgIG1hcmdpbjogODBweCBhdXRvIDAgYXV0bzsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLGJyKV0sQUF0LnByb3RvdHlwZSwiX3JlcXVlc3RNYW5hZ2VyIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLHhPKV0sQUF0LnByb3RvdHlwZSwiX2NhbmNlbGxlciIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sQUF0LnByb3RvdHlwZSwiX3NlbGVjdGVkUnVucyIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW4sbm90aWZ5OiEwLG9ic2VydmVyOiJfc2hvd0Rvd25sb2FkTGlua3NPYnNlcnZlciJ9KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLEFBdC5wcm90b3R5cGUsIl9zaG93RG93bmxvYWRMaW5rcyIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcixub3RpZnk6ITAsb2JzZXJ2ZXI6Il9zbW9vdGhpbmdXZWlnaHRPYnNlcnZlciJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sQUF0LnByb3RvdHlwZSwiX3Ntb290aGluZ1dlaWdodCIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW4sb2JzZXJ2ZXI6Il9pZ25vcmVZT3V0bGllcnNPYnNlcnZlciJ9KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLEFBdC5wcm90b3R5cGUsIl9pZ25vcmVZT3V0bGllcnMiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sQUF0LnByb3RvdHlwZSwiX3hUeXBlIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLEFBdC5wcm90b3R5cGUsIl9sYXlvdXQiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxBQXQucHJvdG90eXBlLCJfZGF0YU5vdEZvdW5kIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLEFBdC5wcm90b3R5cGUsIl9vcGVuZWRDYXRlZ29yaWVzIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sQUF0LnByb3RvdHlwZSwiX2FjdGl2ZSIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLEFBdC5wcm90b3R5cGUsInJlbG9hZE9uUmVhZHkiLHZvaWQgMCksdChbcygiX3Ntb290aGluZ1dlaWdodCIpLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxBQXQucHJvdG90eXBlLCJfc21vb3RoaW5nRW5hYmxlZCIsbnVsbCksdChbcygiX2xheW91dCIpLGUoImRlc2lnbjp0eXBlIixBcnJheSksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sQUF0LnByb3RvdHlwZSwiX2NhdGVnb3JpZXMiLG51bGwpLEFBdD10KFtpKCJ0Zi1jdXN0b20tc2NhbGFyLWRhc2hib2FyZCIpXSxBQXQpO2NsYXNzIGtBdHtjb25zdHJ1Y3Rvcih0LGUpe3RoaXMucnVuMmRhdGFzZXRzPXt9LHRoaXMuY29sb3JTY2FsZT1lLHRoaXMuYnVpbGRDaGFydCh0KX1nZXREYXRhc2V0KHQpe3JldHVybiB2b2lkIDA9PT10aGlzLnJ1bjJkYXRhc2V0c1t0XSYmKHRoaXMucnVuMmRhdGFzZXRzW3RdPW5ldyBOTy5EYXRhc2V0KFtdLHtydW46dH0pKSx0aGlzLnJ1bjJkYXRhc2V0c1t0XX1idWlsZENoYXJ0KHQpe3RoaXMub3V0ZXImJnRoaXMub3V0ZXIuZGVzdHJveSgpO2xldCBlPWtDdCh0KTt0aGlzLnhBY2Nlc3Nvcj1lLmFjY2Vzc29yLHRoaXMueFNjYWxlPWUuc2NhbGUsdGhpcy54QXhpcz1lLmF4aXMsdGhpcy54QXhpcy5tYXJnaW4oMCksdGhpcy54QXhpcy50aWNrTGFiZWxQYWRkaW5nKDMpLHRoaXMueVNjYWxlPW5ldyBOTy5TY2FsZXMuTGluZWFyLHRoaXMueUF4aXM9bmV3IE5PLkF4ZXMuTnVtZXJpYyh0aGlzLnlTY2FsZSwibGVmdCIpO2xldCBuPVNDdCgzKTt0aGlzLnlBeGlzLm1hcmdpbigwKS50aWNrTGFiZWxQYWRkaW5nKDUpLmZvcm1hdHRlcihuKSx0aGlzLnlBeGlzLnVzZXNUZXh0V2lkdGhBcHByb3hpbWF0aW9uKCEwKTtsZXQgaT10aGlzLmJ1aWxkUGxvdCh0aGlzLnhBY2Nlc3Nvcix0aGlzLnhTY2FsZSx0aGlzLnlTY2FsZSk7dGhpcy5ncmlkbGluZXM9bmV3IE5PLkNvbXBvbmVudHMuR3JpZGxpbmVzKHRoaXMueFNjYWxlLHRoaXMueVNjYWxlKSx0aGlzLmNlbnRlcj1uZXcgTk8uQ29tcG9uZW50cy5Hcm91cChbdGhpcy5ncmlkbGluZXMsaV0pLHRoaXMub3V0ZXI9bmV3IE5PLkNvbXBvbmVudHMuVGFibGUoW1t0aGlzLnlBeGlzLHRoaXMuY2VudGVyXSxbbnVsbCx0aGlzLnhBeGlzXV0pfWJ1aWxkUGxvdCh0LGUsbil7bGV0IGk9WzAsMjI4LDE1ODcsMzA4NSw1ZTMsNjkxNSw4NDEzLDk3NzIsMWU0XSxyPUNlLmV4cG9ydHMucmFuZ2UoaS5sZW5ndGgtMSkubWFwKCh0PT4oaVt0KzFdLWlbdF0pLzI1MDApKSxvPWkubWFwKCgodCxlKT0+dD0+dFtlXVsxXSkpLGE9b1s0XSxzPUNlLmV4cG9ydHMucmFuZ2Uoby5sZW5ndGgtMSkubWFwKChpPT57bGV0IGE9bmV3IE5PLlBsb3RzLkFyZWE7YS54KHQsZSk7bGV0IHM9aT40P29baV06b1tpKzFdO3JldHVybiBhLnkoaT40P29baSsxXTpvW2ldLG4pLGEueTAocyksYS5hdHRyKCJmaWxsIiwoKHQsZSxuKT0+dGhpcy5jb2xvclNjYWxlLnNjYWxlKG4ubWV0YWRhdGEoKS5ydW4pKSksYS5hdHRyKCJzdHJva2UiLCgodCxlLG4pPT50aGlzLmNvbG9yU2NhbGUuc2NhbGUobi5tZXRhZGF0YSgpLnJ1bikpKSxhLmF0dHIoInN0cm9rZS13ZWlnaHQiLCgodCxlLG4pPT4iMC41cHgiKSksYS5hdHRyKCJzdHJva2Utb3BhY2l0eSIsKCgpPT5yW2ldKSksYS5hdHRyKCJmaWxsLW9wYWNpdHkiLCgoKT0+cltpXSkpLGF9KSksbD1uZXcgTk8uUGxvdHMuTGluZTtyZXR1cm4gbC54KHQsZSksbC55KGEsbiksbC5hdHRyKCJzdHJva2UiLCgodCxlLG4pPT50aGlzLmNvbG9yU2NhbGUuc2NhbGUobi5ydW4pKSksdGhpcy5wbG90cz1zLG5ldyBOTy5Db21wb25lbnRzLkdyb3VwKHMpfXNldFZpc2libGVTZXJpZXModCl7dGhpcy5ydW5zPXQ7bGV0IGU9dC5tYXAoKHQ9PnRoaXMuZ2V0RGF0YXNldCh0KSkpO3RoaXMucGxvdHMuZm9yRWFjaCgodD0+dC5kYXRhc2V0cyhlKSkpfXNldFNlcmllc0RhdGEodCxlKXt0aGlzLmdldERhdGFzZXQodCkuZGF0YShlKX1yZW5kZXJUbyh0KXt0aGlzLnRhcmdldFNWRz10LHRoaXMub3V0ZXIucmVuZGVyVG8odCl9cmVkcmF3KCl7dGhpcy5vdXRlci5yZWRyYXcoKX1kZXN0cm95KCl7dGhpcy5vdXRlci5kZXN0cm95KCl9fWxldCBMQXQ9Y2xhc3MgZXh0ZW5kcyhjcih3ZSkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLmNvbG9yU2NhbGU9KG5ldyBOTy5TY2FsZXMuQ29sb3IpLnJhbmdlKGpBLnNsaWNlKCkpLHRoaXMueFR5cGU9InN0ZXAiLHRoaXMuX3Zpc2libGVTZXJpZXNDYWNoZT1bXSx0aGlzLl9zZXJpZXNEYXRhQ2FjaGU9e30sdGhpcy5fbWFrZUNoYXJ0QXN5bmNDYWxsYmFja0lkPW51bGx9c2V0VmlzaWJsZVNlcmllcyh0KXt0aGlzLl92aXNpYmxlU2VyaWVzQ2FjaGU9dCx0aGlzLl9jaGFydCYmKHRoaXMuX2NoYXJ0LnNldFZpc2libGVTZXJpZXModCksdGhpcy5yZWRyYXcoKSl9c2V0U2VyaWVzRGF0YSh0LGUpe3RoaXMuX3Nlcmllc0RhdGFDYWNoZVt0XT1lLHRoaXMuX2NoYXJ0JiZ0aGlzLl9jaGFydC5zZXRTZXJpZXNEYXRhKHQsZSl9cmVkcmF3KCl7dGhpcy5fY2hhcnQucmVkcmF3KCl9X21ha2VDaGFydCgpe3ZhciB0PXRoaXMueFR5cGUsZT10aGlzLmNvbG9yU2NhbGUsbj10aGlzLl9hdHRhY2hlZDtudWxsPT09dGhpcy5fbWFrZUNoYXJ0QXN5bmNDYWxsYmFja0lkJiZ0aGlzLmNhbmNlbEFzeW5jKHRoaXMuX21ha2VDaGFydEFzeW5jQ2FsbGJhY2tJZCksdGhpcy5fbWFrZUNoYXJ0QXN5bmNDYWxsYmFja0lkPXRoaXMuYXN5bmMoKGZ1bmN0aW9uKCl7aWYodGhpcy5fbWFrZUNoYXJ0QXN5bmNDYWxsYmFja0lkPW51bGwsbil7dGhpcy5fY2hhcnQmJnRoaXMuX2NoYXJ0LmRlc3Ryb3koKTt2YXIgaT1uZXcga0F0KHQsZSkscj1EdSh0aGlzLiQuY2hhcnRkaXYpO2kucmVuZGVyVG8ociksdGhpcy5fY2hhcnQ9aX19KSwzNTApfV9yZWxvYWRGcm9tQ2FjaGUoKXt0aGlzLl9jaGFydCYmKHRoaXMuX2NoYXJ0LnNldFZpc2libGVTZXJpZXModGhpcy5fdmlzaWJsZVNlcmllc0NhY2hlKSx0aGlzLl92aXNpYmxlU2VyaWVzQ2FjaGUuZm9yRWFjaChmdW5jdGlvbih0KXt0aGlzLl9jaGFydC5zZXRTZXJpZXNEYXRhKHQsdGhpcy5fc2VyaWVzRGF0YUNhY2hlW3RdfHxbXSl9LmJpbmQodGhpcykpKX1hdHRhY2hlZCgpe3RoaXMuX2F0dGFjaGVkPSEwfWRldGFjaGVkKCl7dGhpcy5fYXR0YWNoZWQ9ITF9fTtMQXQudGVtcGxhdGU9eGVgCiAgICA8c3R5bGUgaW5jbHVkZT0icGxvdHRhYmxlLXN0eWxlIj48L3N0eWxlPgogICAgPGRpdiBpZD0iY2hhcnRkaXYiPjwvZGl2PgogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICAtbW96LXVzZXItc2VsZWN0OiBub25lOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBmbGV4LWdyb3c6IDE7CiAgICAgICAgZmxleC1zaHJpbms6IDE7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICB9CiAgICAgICNjaGFydGRpdiB7CiAgICAgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICAtbW96LXVzZXItc2VsZWN0OiBub25lOwogICAgICAgIGZsZXgtZ3JvdzogMTsKICAgICAgICBmbGV4LXNocmluazogMTsKICAgICAgfQogICAgICAucGxvdHRhYmxlIC5heGlzIHRleHQgewogICAgICAgIGZpbGw6IGN1cnJlbnRDb2xvcjsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE5PLlNjYWxlcy5Db2xvcildLExBdC5wcm90b3R5cGUsImNvbG9yU2NhbGUiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sTEF0LnByb3RvdHlwZSwieFR5cGUiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxMQXQucHJvdG90eXBlLCJfYXR0YWNoZWQiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsa0F0KV0sTEF0LnByb3RvdHlwZSwiX2NoYXJ0Iix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxMQXQucHJvdG90eXBlLCJfdmlzaWJsZVNlcmllc0NhY2hlIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLExBdC5wcm90b3R5cGUsIl9zZXJpZXNEYXRhQ2FjaGUiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sTEF0LnByb3RvdHlwZSwiX21ha2VDaGFydEFzeW5jQ2FsbGJhY2tJZCIsdm9pZCAwKSx0KFthKCJ4VHlwZSIsImNvbG9yU2NhbGUiLCJfYXR0YWNoZWQiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLExBdC5wcm90b3R5cGUsIl9tYWtlQ2hhcnQiLG51bGwpLHQoW2EoIl9jaGFydCIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sTEF0LnByb3RvdHlwZSwiX3JlbG9hZEZyb21DYWNoZSIsbnVsbCksTEF0PXQoW2koInZ6LWRpc3RyaWJ1dGlvbi1jaGFydCIpXSxMQXQpO2xldCBQQXQ9Y2xhc3MgZXh0ZW5kcyhiQ3QoY3Iod2UpKSl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuZ2V0RGF0YUxvYWROYW1lPSh7cnVuOnR9KT0+dCx0aGlzLnJlcXVlc3REYXRhPSh0LGUsbik9Pntjb25zdCBpPUVyKCkucGx1Z2luUm91dGUoImRpc3RyaWJ1dGlvbnMiLCIvZGlzdHJpYnV0aW9ucyIpO1Byb21pc2UuYWxsKHQubWFwKCh0PT57Y29uc3Qgbj1QTyhpLHt0YWc6dC50YWcscnVuOnQucnVufSk7cmV0dXJuIHRoaXMucmVxdWVzdE1hbmFnZXIucmVxdWVzdChuKS50aGVuKChuPT57ZSh7aXRlbTp0LGRhdGE6bn0pfSkpfSkpKS5maW5hbGx5KCgoKT0+e24oKX0pKX0sdGhpcy5sb2FkRGF0YUNhbGxiYWNrPSh0LGUsbik9Pntjb25zdCBpPW4ubWFwKCh0PT57Y29uc3RbZSxuLGldPXQ7cmV0dXJuIGkud2FsbF90aW1lPW5ldyBEYXRlKDFlMyplKSxpLnN0ZXA9bixpfSkpLHI9dGhpcy5nZXREYXRhTG9hZE5hbWUoZSk7dGhpcy4kLmNoYXJ0LnNldFNlcmllc0RhdGEocixpKSx0aGlzLiQuY2hhcnQuc2V0VmlzaWJsZVNlcmllcyhbcl0pfSx0aGlzLl9jb2xvclNjYWxlPXtzY2FsZTpfT30sdGhpcy5fZXhwYW5kZWQ9ITEsdGhpcy5fY2FuY2VsbGVyPW5ldyB4T31fcmVsb2FkT25SdW5UYWdDaGFuZ2UoKXt0aGlzLnJlbG9hZCgpfV91cGRhdGVEYXRhVG9Mb2FkKCl7dGhpcy5kYXRhVG9Mb2FkPVt7cnVuOnRoaXMucnVuLHRhZzp0aGlzLnRhZ31dfWdldCBfcnVuQ29sb3IoKXtyZXR1cm4gdGhpcy5fY29sb3JTY2FsZS5zY2FsZSh0aGlzLnJ1bil9cmVkcmF3KCl7dGhpcy4kLmNoYXJ0LnJlZHJhdygpfV90b2dnbGVFeHBhbmRlZCh0KXt0aGlzLnNldCgiX2V4cGFuZGVkIiwhdGhpcy5fZXhwYW5kZWQpLHRoaXMucmVkcmF3KCl9fTtQQXQudGVtcGxhdGU9eGVgCiAgICA8dGYtY2FyZC1oZWFkaW5nCiAgICAgIHRhZz0iW1t0YWddXSIKICAgICAgcnVuPSJbW3J1bl1dIgogICAgICBkaXNwbGF5LW5hbWU9IltbdGFnTWV0YWRhdGEuZGlzcGxheU5hbWVdXSIKICAgICAgZGVzY3JpcHRpb249IltbdGFnTWV0YWRhdGEuZGVzY3JpcHRpb25dXSIKICAgICAgY29sb3I9IltbX3J1bkNvbG9yXV0iCiAgICA+PC90Zi1jYXJkLWhlYWRpbmc+CiAgICA8IS0tCiAgICAgIFRoZSBtYWluIGRpc3RyaWJ1dGlvbiB0aGF0IHdlIHJlbmRlci4gRGF0YSBpcyBzZXQgZGlyZWN0bHkgd2l0aAogICAgICBcYHNldFNlcmllc0RhdGFcYCwgbm90IHdpdGggYSBib3VuZCBwcm9wZXJ0eS4KICAgIC0tPgogICAgPHZ6LWRpc3RyaWJ1dGlvbi1jaGFydAogICAgICBpZD0iY2hhcnQiCiAgICAgIHgtdHlwZT0iW1t4VHlwZV1dIgogICAgICBjb2xvci1zY2FsZT0iW1tfY29sb3JTY2FsZV1dIgogICAgPjwvdnotZGlzdHJpYnV0aW9uLWNoYXJ0PgogICAgPGRpdiBzdHlsZT0iZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IHJvdzsiPgogICAgICA8cGFwZXItaWNvbi1idXR0b24KICAgICAgICBzZWxlY3RlZCQ9IltbX2V4cGFuZGVkXV0iCiAgICAgICAgaWNvbj0iZnVsbHNjcmVlbiIKICAgICAgICBvbi10YXA9Il90b2dnbGVFeHBhbmRlZCIKICAgICAgPjwvcGFwZXItaWNvbi1idXR0b24+CiAgICA8L2Rpdj4KICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICB3aWR0aDogMzMwcHg7CiAgICAgICAgaGVpZ2h0OiAyMzVweDsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTVweDsKICAgICAgfQogICAgICA6aG9zdChbX2V4cGFuZGVkXSkgewogICAgICAgIHdpZHRoOiA3MDBweDsKICAgICAgICBoZWlnaHQ6IDUwMHB4OwogICAgICB9CgogICAgICB2ei1oaXN0b2dyYW0tdGltZXNlcmllcyB7CiAgICAgICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwogICAgICB9CgogICAgICBwYXBlci1pY29uLWJ1dHRvbiB7CiAgICAgICAgY29sb3I6ICMyMTk2ZjM7CiAgICAgICAgYm9yZGVyLXJhZGl1czogMTAwJTsKICAgICAgICB3aWR0aDogMzJweDsKICAgICAgICBoZWlnaHQ6IDMycHg7CiAgICAgICAgcGFkZGluZzogNHB4OwogICAgICB9CiAgICAgIHBhcGVyLWljb24tYnV0dG9uW3NlbGVjdGVkXSB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdGItdWktbGlnaHQtYWNjZW50KTsKICAgICAgfQoKICAgICAgdGYtY2FyZC1oZWFkaW5nIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4OwogICAgICB9CiAgICA8L3N0eWxlPgogIGAsdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sUEF0LnByb3RvdHlwZSwicnVuIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLFBBdC5wcm90b3R5cGUsInRhZyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxQQXQucHJvdG90eXBlLCJ0YWdNZXRhZGF0YSIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxQQXQucHJvdG90eXBlLCJ4VHlwZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxQQXQucHJvdG90eXBlLCJnZXREYXRhTG9hZE5hbWUiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sUEF0LnByb3RvdHlwZSwibG9hZERhdGFDYWxsYmFjayIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxQQXQucHJvdG90eXBlLCJfY29sb3JTY2FsZSIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW4scmVmbGVjdFRvQXR0cmlidXRlOiEwfSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxQQXQucHJvdG90eXBlLCJfZXhwYW5kZWQiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsYnIpXSxQQXQucHJvdG90eXBlLCJyZXF1ZXN0TWFuYWdlciIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIix4TyldLFBBdC5wcm90b3R5cGUsIl9jYW5jZWxsZXIiLHZvaWQgMCksdChbYSgicnVuIiwidGFnIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxQQXQucHJvdG90eXBlLCJfcmVsb2FkT25SdW5UYWdDaGFuZ2UiLG51bGwpLHQoW2EoInJ1biIsInRhZyIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sUEF0LnByb3RvdHlwZSwiX3VwZGF0ZURhdGFUb0xvYWQiLG51bGwpLHQoW3MoInJ1biIpLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLFBBdC5wcm90b3R5cGUsIl9ydW5Db2xvciIsbnVsbCksUEF0PXQoW2koInRmLWRpc3RyaWJ1dGlvbi1sb2FkZXIiKV0sUEF0KTtsZXQgTkF0PWNsYXNzIGV4dGVuZHMoY3Iod2UpKXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5yZWxvYWRPblJlYWR5PSEwLHRoaXMuX3hUeXBlPSJzdGVwIix0aGlzLl9yZXF1ZXN0TWFuYWdlcj1uZXcgYnJ9cmVhZHkoKXtzdXBlci5yZWFkeSgpLHRoaXMucmVsb2FkT25SZWFkeSYmdGhpcy5yZWxvYWQoKX1yZWxvYWQoKXt0aGlzLl9mZXRjaFRhZ3MoKS50aGVuKCgoKT0+e3RoaXMuX3JlbG9hZERpc3RyaWJ1dGlvbnMoKX0pKX1fZmV0Y2hUYWdzKCl7Y29uc3QgdD1FcigpLnBsdWdpblJvdXRlKCJkaXN0cmlidXRpb25zIiwiL3RhZ3MiKTtyZXR1cm4gdGhpcy5fcmVxdWVzdE1hbmFnZXIucmVxdWVzdCh0KS50aGVuKCh0PT57aWYoQ2UuZXhwb3J0cy5pc0VxdWFsKHQsdGhpcy5fcnVuVG9UYWdJbmZvKSlyZXR1cm47Y29uc3QgZT1DZS5leHBvcnRzLm1hcFZhbHVlcyh0LCh0PT5PYmplY3Qua2V5cyh0KSkpLG49ZnIoZSk7dGhpcy5zZXQoIl9kYXRhTm90Rm91bmQiLDA9PT1uLmxlbmd0aCksdGhpcy5zZXQoIl9ydW5Ub1RhZyIsZSksdGhpcy5zZXQoIl9ydW5Ub1RhZ0luZm8iLHQpLHRoaXMuYXN5bmMoKCgpPT57dGhpcy5zZXQoIl9jYXRlZ29yaWVzRG9tUmVhZHkiLCEwKX0pKX0pKX1fcmVsb2FkRGlzdHJpYnV0aW9ucygpe3RoaXMucm9vdC5xdWVyeVNlbGVjdG9yQWxsKCJ0Zi1kaXN0cmlidXRpb24tbG9hZGVyIikuZm9yRWFjaCgodD0+e3QucmVsb2FkKCl9KSl9X3Nob3VsZE9wZW4odCl7cmV0dXJuIHQ8PTJ9Z2V0IF9jYXRlZ29yaWVzKCl7cmV0dXJuIElyKHRoaXMuX3J1blRvVGFnLHRoaXMuX3NlbGVjdGVkUnVucyx0aGlzLl90YWdGaWx0ZXIpfV90YWdNZXRhZGF0YSh0LGUsbil7cmV0dXJuIHRbZV1bbl19fTtOQXQudGVtcGxhdGU9eGVgCiAgICA8dGYtZGFzaGJvYXJkLWxheW91dD4KICAgICAgPGRpdiBjbGFzcz0ic2lkZWJhciIgc2xvdD0ic2lkZWJhciI+CiAgICAgICAgPGRpdiBjbGFzcz0ic2V0dGluZ3MiPgogICAgICAgICAgPGRpdiBjbGFzcz0ic2lkZWJhci1zZWN0aW9uIj4KICAgICAgICAgICAgPHRmLW9wdGlvbi1zZWxlY3RvcgogICAgICAgICAgICAgIGlkPSJ4VHlwZVNlbGVjdG9yIgogICAgICAgICAgICAgIG5hbWU9Ikhvcml6b250YWwgYXhpcyIKICAgICAgICAgICAgICBzZWxlY3RlZC1pZD0ie3tfeFR5cGV9fSIKICAgICAgICAgICAgPgogICAgICAgICAgICAgIDxwYXBlci1idXR0b24gaWQ9InN0ZXAiPnN0ZXA8L3BhcGVyLWJ1dHRvbj4KICAgICAgICAgICAgICA8cGFwZXItYnV0dG9uIGlkPSJyZWxhdGl2ZSI+cmVsYXRpdmU8L3BhcGVyLWJ1dHRvbj4KICAgICAgICAgICAgICA8cGFwZXItYnV0dG9uIGlkPSJ3YWxsX3RpbWUiPndhbGw8L3BhcGVyLWJ1dHRvbj4KICAgICAgICAgICAgPC90Zi1vcHRpb24tc2VsZWN0b3I+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyLXNlY3Rpb24gcnVucy1zZWxlY3RvciI+CiAgICAgICAgICA8dGYtcnVucy1zZWxlY3RvciBzZWxlY3RlZC1ydW5zPSJ7e19zZWxlY3RlZFJ1bnN9fSI+CiAgICAgICAgICA8L3RmLXJ1bnMtc2VsZWN0b3I+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgoKICAgICAgPGRpdiBjbGFzcz0iY2VudGVyIiBzbG90PSJjZW50ZXIiPgogICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfZGF0YU5vdEZvdW5kXV0iPgogICAgICAgICAgPGRpdiBjbGFzcz0ibm8tZGF0YS13YXJuaW5nIj4KICAgICAgICAgICAgPGgzPk5vIGRpc3RyaWJ1dGlvbiBkYXRhIHdhcyBmb3VuZC48L2gzPgogICAgICAgICAgICA8cD5Qcm9iYWJsZSBjYXVzZXM6PC9wPgogICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgWW91IGhhdmVu4oCZdCB3cml0dGVuIGFueSBoaXN0b2dyYW0gZGF0YSB0byB5b3VyIGV2ZW50IGZpbGVzLgogICAgICAgICAgICAgICAgKEhpc3RvZ3JhbXMgYW5kIGRpc3RyaWJ1dGlvbnMgYm90aCB1c2UgdGhlIGhpc3RvZ3JhbSBzdW1tYXJ5CiAgICAgICAgICAgICAgICBvcGVyYXRpb24uKQogICAgICAgICAgICAgIDwvbGk+CgogICAgICAgICAgICAgIDxsaT5UZW5zb3JCb2FyZCBjYW7igJl0IGZpbmQgeW91ciBldmVudCBmaWxlcy48L2xpPgogICAgICAgICAgICA8L3VsPgoKICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgSWYgeW914oCZcmUgbmV3IHRvIHVzaW5nIFRlbnNvckJvYXJkLCBhbmQgd2FudCB0byBmaW5kIG91dCBob3cgdG8KICAgICAgICAgICAgICBhZGQgZGF0YSBhbmQgc2V0IHVwIHlvdXIgZXZlbnQgZmlsZXMsIGNoZWNrIG91dCB0aGUKICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29yYm9hcmQvYmxvYi9tYXN0ZXIvUkVBRE1FLm1kIgogICAgICAgICAgICAgICAgPlJFQURNRTwvYQogICAgICAgICAgICAgID4KICAgICAgICAgICAgICBhbmQgcGVyaGFwcyB0aGUKICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly93d3cudGVuc29yZmxvdy5vcmcvZ2V0X3N0YXJ0ZWQvc3VtbWFyaWVzX2FuZF90ZW5zb3Jib2FyZCIKICAgICAgICAgICAgICAgID5UZW5zb3JCb2FyZCB0dXRvcmlhbDwvYQogICAgICAgICAgICAgID4uCiAgICAgICAgICAgIDwvcD4KCiAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgIElmIHlvdSB0aGluayBUZW5zb3JCb2FyZCBpcyBjb25maWd1cmVkIHByb3Blcmx5LCBwbGVhc2Ugc2VlCiAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmJvYXJkL2Jsb2IvbWFzdGVyL1JFQURNRS5tZCNteS10ZW5zb3Jib2FyZC1pc250LXNob3dpbmctYW55LWRhdGEtd2hhdHMtd3JvbmciCiAgICAgICAgICAgICAgICA+dGhlIHNlY3Rpb24gb2YgdGhlIFJFQURNRSBkZXZvdGVkIHRvIG1pc3NpbmcgZGF0YSBwcm9ibGVtczwvYQogICAgICAgICAgICAgID4KICAgICAgICAgICAgICBhbmQgY29uc2lkZXIgZmlsaW5nIGFuIGlzc3VlIG9uIEdpdEh1Yi4KICAgICAgICAgICAgPC9wPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbIV9kYXRhTm90Rm91bmRdXSI+CiAgICAgICAgICA8dGYtdGFnLWZpbHRlcmVyIHRhZy1maWx0ZXI9Int7X3RhZ0ZpbHRlcn19Ij48L3RmLXRhZy1maWx0ZXJlcj4KICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLXJlcGVhdCIgaXRlbXM9IltbX2NhdGVnb3JpZXNdXSIgYXM9ImNhdGVnb3J5Ij4KICAgICAgICAgICAgPHRmLWNhdGVnb3J5LXBhZ2luYXRlZC12aWV3CiAgICAgICAgICAgICAgY2F0ZWdvcnk9IltbY2F0ZWdvcnldXSIKICAgICAgICAgICAgICBpbml0aWFsLW9wZW5lZD0iW1tfc2hvdWxkT3BlbihpbmRleCldXSIKICAgICAgICAgICAgPgogICAgICAgICAgICAgIDx0ZW1wbGF0ZT4KICAgICAgICAgICAgICAgIDx0Zi1kaXN0cmlidXRpb24tbG9hZGVyCiAgICAgICAgICAgICAgICAgIGFjdGl2ZT0iW1thY3RpdmVdXSIKICAgICAgICAgICAgICAgICAgcnVuPSJbW2l0ZW0ucnVuXV0iCiAgICAgICAgICAgICAgICAgIHRhZz0iW1tpdGVtLnRhZ11dIgogICAgICAgICAgICAgICAgICB0YWctbWV0YWRhdGE9IltbX3RhZ01ldGFkYXRhKF9ydW5Ub1RhZ0luZm8sIGl0ZW0ucnVuLCBpdGVtLnRhZyldXSIKICAgICAgICAgICAgICAgICAgeC10eXBlPSJbW194VHlwZV1dIgogICAgICAgICAgICAgICAgICByZXF1ZXN0LW1hbmFnZXI9IltbX3JlcXVlc3RNYW5hZ2VyXV0iCiAgICAgICAgICAgICAgICA+PC90Zi1kaXN0cmlidXRpb24tbG9hZGVyPgogICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgIDwvdGYtY2F0ZWdvcnktcGFnaW5hdGVkLXZpZXc+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDwvZGl2PgogICAgPC90Zi1kYXNoYm9hcmQtbGF5b3V0PgoKICAgIDxzdHlsZSBpbmNsdWRlPSJkYXNoYm9hcmQtc3R5bGUiPjwvc3R5bGU+CiAgICA8c3R5bGU+CiAgICAgIC5uby1kYXRhLXdhcm5pbmcgewogICAgICAgIG1heC13aWR0aDogNTQwcHg7CiAgICAgICAgbWFyZ2luOiA4MHB4IGF1dG8gMCBhdXRvOwogICAgICB9CiAgICA8L3N0eWxlPgogIGAsdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxOQXQucHJvdG90eXBlLCJyZWxvYWRPblJlYWR5Iix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLE5BdC5wcm90b3R5cGUsIl94VHlwZSIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sTkF0LnByb3RvdHlwZSwiX3NlbGVjdGVkUnVucyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxOQXQucHJvdG90eXBlLCJfcnVuVG9UYWciLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sTkF0LnByb3RvdHlwZSwiX3J1blRvVGFnSW5mbyIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLE5BdC5wcm90b3R5cGUsIl9kYXRhTm90Rm91bmQiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sTkF0LnByb3RvdHlwZSwiX3RhZ0ZpbHRlciIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLE5BdC5wcm90b3R5cGUsIl9jYXRlZ29yaWVzRG9tUmVhZHkiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsYnIpXSxOQXQucHJvdG90eXBlLCJfcmVxdWVzdE1hbmFnZXIiLHZvaWQgMCksdChbcygiX3J1blRvVGFnIiwiX3NlbGVjdGVkUnVucyIsIl90YWdGaWx0ZXIiLCJfY2F0ZWdvcmllc0RvbVJlYWR5IiksZSgiZGVzaWduOnR5cGUiLEFycmF5KSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxOQXQucHJvdG90eXBlLCJfY2F0ZWdvcmllcyIsbnVsbCksTkF0PXQoW2koInRmLWRpc3RyaWJ1dGlvbi1kYXNoYm9hcmQiKV0sTkF0KTt2YXIgSUF0PU9iamVjdC5mcmVlemUoe19fcHJvdG9fXzpudWxsLExpc3RlbktleTpNcyxhZGRIYXNoTGlzdGVuZXI6Q3MsYWRkU3RvcmFnZUxpc3RlbmVyOkFzLGZpcmVTdG9yYWdlQ2hhbmdlZDprcyxyZW1vdmVIYXNoTGlzdGVuZXJCeUtleTpMcyxyZW1vdmVTdG9yYWdlTGlzdGVuZXJCeUtleTpQcyxnZXRVcmxIYXNoRGljdDpmdW5jdGlvbiBSQXQoKXtyZXR1cm4gRnN9LERJU0FNQklHVUFUT1I6V3MsZ2V0U3RyaW5nOnFzLHNldFN0cmluZzpZcyxnZXRTdHJpbmdJbml0aWFsaXplcjpYcyxnZXRTdHJpbmdPYnNlcnZlcjokcyxkaXNwb3NlU3RyaW5nQmluZGluZzpLcyxnZXRCb29sZWFuOlpzLHNldEJvb2xlYW46SnMsZ2V0Qm9vbGVhbkluaXRpYWxpemVyOlFzLGdldEJvb2xlYW5PYnNlcnZlcjp0bCxkaXNwb3NlQm9vbGVhbkJpbmRpbmc6ZWwsZ2V0TnVtYmVyOm5sLHNldE51bWJlcjppbCxnZXROdW1iZXJJbml0aWFsaXplcjpybCxnZXROdW1iZXJPYnNlcnZlcjpvbCxkaXNwb3NlTnVtYmVyQmluZGluZzphbCxnZXRPYmplY3Q6c2wsc2V0T2JqZWN0OmxsLGdldE9iamVjdEluaXRpYWxpemVyOmNsLGdldE9iamVjdE9ic2VydmVyOnVsLGRpc3Bvc2VPYmplY3RCaW5kaW5nOmhsLG1ha2VCaW5kaW5nczpkbCxtaWdyYXRlTGVnYWN5VVJMU2NoZW1lOmZ1bmN0aW9uIE9BdCgpe2NvbnN0IHQ9bmV3IFNldChbImV4YW1wbGVzUGF0aCIsImhpZGVNb2RlbFBhbmUyIiwibW9kZWxOYW1lMSIsIm1vZGVsTmFtZTIiLCJpbmZlcmVuY2VBZGRyZXNzMSIsImluZmVyZW5jZUFkZHJlc3MyIiwibW9kZWxUeXBlIiwibW9kZWxWZXJzaW9uMSIsIm1vZGVsVmVyc2lvbjIiLCJtb2RlbFNpZ25hdHVyZTEiLCJtb2RlbFNpZ25hdHVyZTIiLCJtYXhFeGFtcGxlcyIsImxhYmVsVm9jYWJQYXRoIiwibXVsdGlDbGFzcyIsInNlcXVlbmNlRXhhbXBsZXMiLCJtYXhDbGFzc2VzVG9EaXNwbGF5Iiwic2FtcGxpbmdPZGRzIiwidXNlUHJlZGljdEFwaSIsInByZWRpY3RJbnB1dFRlbnNvciIsInByZWRpY3RPdXRwdXRUZW5zb3IiXSksZT1VcyhWcygpKTtpZigid2hhdGlmIj09PWUuX190YWJfXylmb3IobGV0IG4gb2YgdClpZihuIGluIGUpe2VbYHAud2hhdGlmLiR7bn1gXT1lW25dfWpzKEdzKGUpKSwoZnVuY3Rpb24gbih0KXtGcz10fSkoZSl9fSk7dmFyIHpBdCxEQXQ7IShmdW5jdGlvbih0KXt0LkZFVENIX1BCVFhUX0JZVEVTPSJGRVRDSF9QQlRYVF9CWVRFUyIsdC5GRVRDSF9QQlRYVF9CWVRFU19GUk9NX0ZJTEVTWVNURU09IkZFVENIX1BCVFhUX0JZVEVTX0ZST01fRklMRVNZU1RFTSIsdC5GRVRDSF9QQlRYVF9CWVRFU19GUk9NX1NFUlZFUj0iRkVUQ0hfUEJUWFRfQllURVNfRlJPTV9TRVJWRVIiLHQuUEFSU0VfUEJUWFRfSU5UT19PQkpFQ1Q9IlBBUlNFX1BCVFhUX0lOVE9fT0JKRUNUIix0LkZFVENIX01FVEFEQVRBX1BCVFhUX0JZVEVTPSJGRVRDSF9NRVRBREFUQV9QQlRYVF9CWVRFUyIsdC5QQVJTRV9NRVRBREFUQV9QQlRYVF9JTlRPX09CSkVDVD0iUEFSU0VfTUVUQURBVEFfUEJUWFRfSU5UT19PQkpFQ1QiLHQuTk9STUFMSVpJTkdfTkFNRVM9Ik5PUk1BTElaSU5HX05BTUVTIix0LkJVSUxEX1NMSU1fR1JBUEg9IkJVSUxEX1NMSU1fR1JBUEgiLHQuSElFUkFSQ0hZX0FERF9OT0RFUz0iSElFUkFSQ0hZX0FERF9OT0RFUyIsdC5ISUVSQVJDSFlfREVURUNUX1NFUklFUz0iSElFUkFSQ0hZX0RFVEVDVF9TRVJJRVMiLHQuSElFUkFSQ0hZX0FERF9FREdFUz0iSElFUkFSQ0hZX0FERF9FREdFUyIsdC5ISUVSQVJDSFlfRklORF9TSU1JTEFSX1NVQkdSQVBIUz0iSElFUkFSQ0hZX0ZJTkRfU0lNSUxBUl9TVUJHUkFQSFMiLHQuUkVOREVSX0JVSUxEX0hJRVJBUkNIWT0iUkVOREVSX0JVSUxEX0hJRVJBUkNIWSIsdC5SRU5ERVJfU0NFTkVfTEFZT1VUPSJSRU5ERVJfU0NFTkVfTEFZT1VUIix0LlJFTkRFUl9TQ0VORV9CVUlMRF9TQ0VORT0iUkVOREVSX1NDRU5FX0JVSUxEX1NDRU5FIix0LkdSQVBIX0xPQURfU1VDQ0VFREVEPSJHUkFQSF9MT0FEX1NVQ0NFRURFRCIsdC5HUkFQSF9MT0FEX0ZBSUxFRD0iR1JBUEhfTE9BRF9GQUlMRUQifSkoekF0fHwoekF0PXt9KSksKGZ1bmN0aW9uKHQpe3QuTk9ERV9FWFBBTlNJT05fVE9HR0xFRD0iTk9ERV9FWFBBTlNJT05fVE9HR0xFRCIsdC5OT0RFX1NFQVJDSF9SRVNVTFRfRk9DVVNFRD0iTk9ERV9TRUFSQ0hfUkVTVUxUX0ZPQ1VTRUQiLHQuTk9ERV9BVVhJTElBUllfRVhUUkFDVElPTl9DSEFOR0VEPSJOT0RFX0FVWElMSUFSWV9FWFRSQUNUSU9OX0NIQU5HRUQiLHQuR1JBUEhfVFlQRV9DSEFOR0VEPSJHUkFQSF9UWVBFX0NIQU5HRUQiLHQuVFJBQ0VfSU5QVVRfTU9ERV9UT0dHTEVEPSJUUkFDRV9JTlBVVF9NT0RFX1RPR0dMRUQiLHQuTk9ERV9DT0xPUl9NT0RFX0NIQU5HRUQ9Ik5PREVfQ09MT1JfTU9ERV9DSEFOR0VEIix0LlVQTE9BREVEX0dSQVBIX0ZST01fRklMRVNZU1RFTT0iVVBMT0FERURfR1JBUEhfRlJPTV9GSUxFU1lTVEVNIn0pKERBdHx8KERBdD17fSkpO2NvbnN0IEJBdD1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sekF0KSxEQXQpO3ZhciBIQXQ9ZnVuY3Rpb24gRkF0KHQsZSl7cmV0dXJuIHQ9PT1lfHx0IT10JiZlIT1lfSxWQXQ9SEF0O3ZhciBVQXQ9ZnVuY3Rpb24gakF0KHQsZSl7Zm9yKHZhciBuPXQubGVuZ3RoO24tLTspaWYoVkF0KHRbbl1bMF0sZSkpcmV0dXJuIG47cmV0dXJuLTF9LEdBdD1VQXQsV0F0PUFycmF5LnByb3RvdHlwZS5zcGxpY2U7dmFyIHFBdD1VQXQ7dmFyIFlBdD1VQXQ7dmFyIFhBdD1VQXQ7dmFyICRBdD1mdW5jdGlvbiBLQXQodCl7dmFyIGU9dGhpcy5fX2RhdGFfXyxuPUdBdChlLHQpO3JldHVybiEobjwwKSYmKG49PWUubGVuZ3RoLTE/ZS5wb3AoKTpXQXQuY2FsbChlLG4sMSksLS10aGlzLnNpemUsITApfSxaQXQ9ZnVuY3Rpb24gSkF0KHQpe3ZhciBlPXRoaXMuX19kYXRhX18sbj1xQXQoZSx0KTtyZXR1cm4gbjwwP3ZvaWQgMDplW25dWzFdfSxRQXQ9ZnVuY3Rpb24gdGt0KHQpe3JldHVybiBZQXQodGhpcy5fX2RhdGFfXyx0KT4tMX0sZWt0PWZ1bmN0aW9uIG5rdCh0LGUpe3ZhciBuPXRoaXMuX19kYXRhX18saT1YQXQobix0KTtyZXR1cm4gaTwwPygrK3RoaXMuc2l6ZSxuLnB1c2goW3QsZV0pKTpuW2ldWzFdPWUsdGhpc307ZnVuY3Rpb24gaWt0KHQpe3ZhciBlPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytlPG47KXt2YXIgaT10W2VdO3RoaXMuc2V0KGlbMF0saVsxXSl9fWlrdC5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24gcmt0KCl7dGhpcy5fX2RhdGFfXz1bXSx0aGlzLnNpemU9MH0saWt0LnByb3RvdHlwZS5kZWxldGU9JEF0LGlrdC5wcm90b3R5cGUuZ2V0PVpBdCxpa3QucHJvdG90eXBlLmhhcz1RQXQsaWt0LnByb3RvdHlwZS5zZXQ9ZWt0O3ZhciBva3Q9aWt0LGFrdD1va3Q7dmFyIHNrdD1mdW5jdGlvbiBsa3QoKXt0aGlzLl9fZGF0YV9fPW5ldyBha3QsdGhpcy5zaXplPTB9O3ZhciBja3Q9ZnVuY3Rpb24gdWt0KHQpe3ZhciBlPXRoaXMuX19kYXRhX18sbj1lLmRlbGV0ZSh0KTtyZXR1cm4gdGhpcy5zaXplPWUuc2l6ZSxufTt2YXIgaGt0PWZ1bmN0aW9uIGRrdCh0KXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5nZXQodCl9O3ZhciBwa3Q9ZnVuY3Rpb24gZmt0KHQpe3JldHVybiB0aGlzLl9fZGF0YV9fLmhhcyh0KX0sbWt0PSJvYmplY3QiPT10eXBlb2YgU2UmJlNlJiZTZS5PYmplY3Q9PT1PYmplY3QmJlNlLGdrdD0ib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGYmJnNlbGYuT2JqZWN0PT09T2JqZWN0JiZzZWxmLF9rdD1ta3R8fGdrdHx8RnVuY3Rpb24oInJldHVybiB0aGlzIikoKSx5a3Q9X2t0LlN5bWJvbCx2a3Q9T2JqZWN0LnByb3RvdHlwZSxia3Q9dmt0Lmhhc093blByb3BlcnR5LHhrdD12a3QudG9TdHJpbmcsd2t0PXlrdD95a3QudG9TdHJpbmdUYWc6dm9pZCAwO3ZhciBTa3Q9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZzt2YXIgTWt0PWZ1bmN0aW9uIEVrdCh0KXt2YXIgZT1ia3QuY2FsbCh0LHdrdCksbj10W3drdF07dHJ5e3Rbd2t0XT12b2lkIDA7dmFyIGk9ITB9Y2F0Y2godCl7fXZhciByPXhrdC5jYWxsKHQpO3JldHVybiBpJiYoZT90W3drdF09bjpkZWxldGUgdFt3a3RdKSxyfSxUa3Q9ZnVuY3Rpb24gQ2t0KHQpe3JldHVybiBTa3QuY2FsbCh0KX0sQWt0PXlrdD95a3QudG9TdHJpbmdUYWc6dm9pZCAwO3ZhciBra3Q9ZnVuY3Rpb24gTGt0KHQpe3JldHVybiBudWxsPT10P3ZvaWQgMD09PXQ/IltvYmplY3QgVW5kZWZpbmVkXSI6IltvYmplY3QgTnVsbF0iOkFrdCYmQWt0IGluIE9iamVjdCh0KT9Na3QodCk6VGt0KHQpfTt2YXIgUGt0PWZ1bmN0aW9uIE5rdCh0KXt2YXIgZT10eXBlb2YgdDtyZXR1cm4gbnVsbCE9dCYmKCJvYmplY3QiPT1lfHwiZnVuY3Rpb24iPT1lKX0sSWt0PWtrdCxSa3Q9UGt0O3ZhciBPa3Qsemt0PWZ1bmN0aW9uIERrdCh0KXtpZighUmt0KHQpKXJldHVybiExO3ZhciBlPUlrdCh0KTtyZXR1cm4iW29iamVjdCBGdW5jdGlvbl0iPT1lfHwiW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl0iPT1lfHwiW29iamVjdCBBc3luY0Z1bmN0aW9uXSI9PWV8fCJbb2JqZWN0IFByb3h5XSI9PWV9LEJrdD1fa3RbIl9fY29yZS1qc19zaGFyZWRfXyJdLEhrdD0oT2t0PS9bXi5dKyQvLmV4ZWMoQmt0JiZCa3Qua2V5cyYmQmt0LmtleXMuSUVfUFJPVE98fCIiKSk/IlN5bWJvbChzcmMpXzEuIitPa3Q6IiI7dmFyIEZrdD1GdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmc7dmFyIFZrdD1mdW5jdGlvbiBVa3QodCl7aWYobnVsbCE9dCl7dHJ5e3JldHVybiBGa3QuY2FsbCh0KX1jYXRjaCh0KXt9dHJ5e3JldHVybiB0KyIifWNhdGNoKHQpe319cmV0dXJuIiJ9LGprdD16a3QsR2t0PWZ1bmN0aW9uIFdrdCh0KXtyZXR1cm4hIUhrdCYmSGt0IGluIHR9LHFrdD1Qa3QsWWt0PVZrdCxYa3Q9L15cW29iamVjdCAuKz9Db25zdHJ1Y3RvclxdJC8sJGt0PVJlZ0V4cCgiXiIrRnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSkucmVwbGFjZSgvW1xcXiQuKis/KClbXF17fXxdL2csIlxcJCYiKS5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcKCl8IGZvciAuKz8oPz1cXFxdKS9nLCIkMS4qPyIpKyIkIik7dmFyIEtrdD1mdW5jdGlvbiBaa3QodCl7cmV0dXJuISghcWt0KHQpfHxHa3QodCkpJiYoamt0KHQpPyRrdDpYa3QpLnRlc3QoWWt0KHQpKX0sSmt0PWZ1bmN0aW9uIFFrdCh0LGUpe3JldHVybiBudWxsPT10P3ZvaWQgMDp0W2VdfTt2YXIgdEx0PWZ1bmN0aW9uIGVMdCh0LGUpe3ZhciBuPUprdCh0LGUpO3JldHVybiBLa3Qobik/bjp2b2lkIDB9LG5MdD10THQoX2t0LCJNYXAiKSxpTHQ9dEx0KE9iamVjdCwiY3JlYXRlIiksckx0PWlMdDt2YXIgb0x0PWlMdCxhTHQ9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTt2YXIgc0x0PWlMdCxsTHQ9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTt2YXIgY0x0PWlMdDt2YXIgdUx0PWZ1bmN0aW9uIGhMdCh0KXt2YXIgZT10aGlzLmhhcyh0KSYmZGVsZXRlIHRoaXMuX19kYXRhX19bdF07cmV0dXJuIHRoaXMuc2l6ZS09ZT8xOjAsZX0sZEx0PWZ1bmN0aW9uIHBMdCh0KXt2YXIgZT10aGlzLl9fZGF0YV9fO2lmKG9MdCl7dmFyIG49ZVt0XTtyZXR1cm4iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyI9PT1uP3ZvaWQgMDpufXJldHVybiBhTHQuY2FsbChlLHQpP2VbdF06dm9pZCAwfSxmTHQ9ZnVuY3Rpb24gbUx0KHQpe3ZhciBlPXRoaXMuX19kYXRhX187cmV0dXJuIHNMdD92b2lkIDAhPT1lW3RdOmxMdC5jYWxsKGUsdCl9LGdMdD1mdW5jdGlvbiBfTHQodCxlKXt2YXIgbj10aGlzLl9fZGF0YV9fO3JldHVybiB0aGlzLnNpemUrPXRoaXMuaGFzKHQpPzA6MSxuW3RdPWNMdCYmdm9pZCAwPT09ZT8iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyI6ZSx0aGlzfTtmdW5jdGlvbiB5THQodCl7dmFyIGU9LTEsbj1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK2U8bjspe3ZhciBpPXRbZV07dGhpcy5zZXQoaVswXSxpWzFdKX19eUx0LnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbiB2THQoKXt0aGlzLl9fZGF0YV9fPXJMdD9yTHQobnVsbCk6e30sdGhpcy5zaXplPTB9LHlMdC5wcm90b3R5cGUuZGVsZXRlPXVMdCx5THQucHJvdG90eXBlLmdldD1kTHQseUx0LnByb3RvdHlwZS5oYXM9Zkx0LHlMdC5wcm90b3R5cGUuc2V0PWdMdDt2YXIgYkx0PXlMdCx4THQ9b2t0LHdMdD1uTHQ7dmFyIFNMdD1mdW5jdGlvbiBNTHQodCl7dmFyIGU9dHlwZW9mIHQ7cmV0dXJuInN0cmluZyI9PWV8fCJudW1iZXIiPT1lfHwic3ltYm9sIj09ZXx8ImJvb2xlYW4iPT1lPyJfX3Byb3RvX18iIT09dDpudWxsPT09dH07dmFyIEVMdD1mdW5jdGlvbiBUTHQodCxlKXt2YXIgbj10Ll9fZGF0YV9fO3JldHVybiBTTHQoZSk/blsic3RyaW5nIj09dHlwZW9mIGU/InN0cmluZyI6Imhhc2giXTpuLm1hcH0sQ0x0PUVMdDt2YXIgQUx0PUVMdDt2YXIga0x0PUVMdDt2YXIgTEx0PUVMdDt2YXIgUEx0PWZ1bmN0aW9uIE5MdCh0KXt2YXIgZT1DTHQodGhpcyx0KS5kZWxldGUodCk7cmV0dXJuIHRoaXMuc2l6ZS09ZT8xOjAsZX0sSUx0PWZ1bmN0aW9uIFJMdCh0KXtyZXR1cm4gQUx0KHRoaXMsdCkuZ2V0KHQpfSxPTHQ9ZnVuY3Rpb24gekx0KHQpe3JldHVybiBrTHQodGhpcyx0KS5oYXModCl9LERMdD1mdW5jdGlvbiBCTHQodCxlKXt2YXIgbj1MTHQodGhpcyx0KSxpPW4uc2l6ZTtyZXR1cm4gbi5zZXQodCxlKSx0aGlzLnNpemUrPW4uc2l6ZT09aT8wOjEsdGhpc307ZnVuY3Rpb24gSEx0KHQpe3ZhciBlPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytlPG47KXt2YXIgaT10W2VdO3RoaXMuc2V0KGlbMF0saVsxXSl9fUhMdC5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24gRkx0KCl7dGhpcy5zaXplPTAsdGhpcy5fX2RhdGFfXz17aGFzaDpuZXcgYkx0LG1hcDpuZXcod0x0fHx4THQpLHN0cmluZzpuZXcgYkx0fX0sSEx0LnByb3RvdHlwZS5kZWxldGU9UEx0LEhMdC5wcm90b3R5cGUuZ2V0PUlMdCxITHQucHJvdG90eXBlLmhhcz1PTHQsSEx0LnByb3RvdHlwZS5zZXQ9REx0O3ZhciBWTHQ9SEx0LFVMdD1va3Qsakx0PW5MdCxHTHQ9Vkx0O3ZhciBXTHQ9b2t0LHFMdD1ja3QsWUx0PWhrdCxYTHQ9cGt0LCRMdD1mdW5jdGlvbiBLTHQodCxlKXt2YXIgbj10aGlzLl9fZGF0YV9fO2lmKG4gaW5zdGFuY2VvZiBVTHQpe3ZhciBpPW4uX19kYXRhX187aWYoIWpMdHx8aS5sZW5ndGg8MTk5KXJldHVybiBpLnB1c2goW3QsZV0pLHRoaXMuc2l6ZT0rK24uc2l6ZSx0aGlzO249dGhpcy5fX2RhdGFfXz1uZXcgR0x0KGkpfXJldHVybiBuLnNldCh0LGUpLHRoaXMuc2l6ZT1uLnNpemUsdGhpc307ZnVuY3Rpb24gWkx0KHQpe3ZhciBlPXRoaXMuX19kYXRhX189bmV3IFdMdCh0KTt0aGlzLnNpemU9ZS5zaXplfVpMdC5wcm90b3R5cGUuY2xlYXI9c2t0LFpMdC5wcm90b3R5cGUuZGVsZXRlPXFMdCxaTHQucHJvdG90eXBlLmdldD1ZTHQsWkx0LnByb3RvdHlwZS5oYXM9WEx0LFpMdC5wcm90b3R5cGUuc2V0PSRMdDt2YXIgSkx0PVpMdDt2YXIgUUx0PWZ1bmN0aW9uIHRQdCh0LGUpe2Zvcih2YXIgbj0tMSxpPW51bGw9PXQ/MDp0Lmxlbmd0aDsrK248aSYmITEhPT1lKHRbbl0sbix0KTspO3JldHVybiB0fSxlUHQ9dEx0LG5QdD0oZnVuY3Rpb24oKXt0cnl7dmFyIHQ9ZVB0KE9iamVjdCwiZGVmaW5lUHJvcGVydHkiKTtyZXR1cm4gdCh7fSwiIix7fSksdH1jYXRjaCh0KXt9fSkoKSxpUHQ9blB0O3ZhciByUHQ9ZnVuY3Rpb24gb1B0KHQsZSxuKXsiX19wcm90b19fIj09ZSYmaVB0P2lQdCh0LGUse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLHZhbHVlOm4sd3JpdGFibGU6ITB9KTp0W2VdPW59LGFQdD1yUHQsc1B0PUhBdCxsUHQ9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTt2YXIgY1B0PWZ1bmN0aW9uIHVQdCh0LGUsbil7dmFyIGk9dFtlXTtsUHQuY2FsbCh0LGUpJiZzUHQoaSxuKSYmKHZvaWQgMCE9PW58fGUgaW4gdCl8fGFQdCh0LGUsbil9LGhQdD1jUHQsZFB0PXJQdDt2YXIgcFB0PWZ1bmN0aW9uIGZQdCh0LGUsbixpKXt2YXIgcj0hbjtufHwobj17fSk7Zm9yKHZhciBvPS0xLGE9ZS5sZW5ndGg7KytvPGE7KXt2YXIgcz1lW29dLGw9aT9pKG5bc10sdFtzXSxzLG4sdCk6dm9pZCAwO3ZvaWQgMD09PWwmJihsPXRbc10pLHI/ZFB0KG4scyxsKTpoUHQobixzLGwpfXJldHVybiBufTt2YXIgbVB0PWZ1bmN0aW9uIGdQdCh0LGUpe2Zvcih2YXIgbj0tMSxpPUFycmF5KHQpOysrbjx0OylpW25dPWUobik7cmV0dXJuIGl9O3ZhciBfUHQ9ZnVuY3Rpb24geVB0KHQpe3JldHVybiBudWxsIT10JiYib2JqZWN0Ij09dHlwZW9mIHR9LHZQdD1ra3QsYlB0PV9QdDt2YXIgeFB0PWZ1bmN0aW9uIHdQdCh0KXtyZXR1cm4gYlB0KHQpJiYiW29iamVjdCBBcmd1bWVudHNdIj09dlB0KHQpfSxTUHQ9X1B0LE1QdD1PYmplY3QucHJvdG90eXBlLEVQdD1NUHQuaGFzT3duUHJvcGVydHksVFB0PU1QdC5wcm9wZXJ0eUlzRW51bWVyYWJsZSxDUHQ9eFB0KChmdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHN9KSgpKT94UHQ6ZnVuY3Rpb24odCl7cmV0dXJuIFNQdCh0KSYmRVB0LmNhbGwodCwiY2FsbGVlIikmJiFUUHQuY2FsbCh0LCJjYWxsZWUiKX0sQVB0PUFycmF5LmlzQXJyYXksa1B0PXtleHBvcnRzOnt9fTt2YXIgTFB0PWZ1bmN0aW9uIFBQdCgpe3JldHVybiExfTshKGZ1bmN0aW9uKHQsZSl7dmFyIG49ZSYmIWUubm9kZVR5cGUmJmUsaT1uJiZ0JiYhdC5ub2RlVHlwZSYmdCxyPWkmJmkuZXhwb3J0cz09PW4/X2t0LkJ1ZmZlcjp2b2lkIDA7dC5leHBvcnRzPShyP3IuaXNCdWZmZXI6dm9pZCAwKXx8TFB0fSkoa1B0LGtQdC5leHBvcnRzKTt2YXIgTlB0PS9eKD86MHxbMS05XVxkKikkLzt2YXIgSVB0PWZ1bmN0aW9uIFJQdCh0LGUpe3ZhciBuPXR5cGVvZiB0O3JldHVybiEhKGU9bnVsbD09ZT85MDA3MTk5MjU0NzQwOTkxOmUpJiYoIm51bWJlciI9PW58fCJzeW1ib2wiIT1uJiZOUHQudGVzdCh0KSkmJnQ+LTEmJnQlMT09MCYmdDxlfTt2YXIgT1B0PWZ1bmN0aW9uIHpQdCh0KXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIHQmJnQ+LTEmJnQlMT09MCYmdDw9OTAwNzE5OTI1NDc0MDk5MX0sRFB0PWtrdCxCUHQ9T1B0LEhQdD1fUHQsRlB0PXt9O0ZQdFsiW29iamVjdCBGbG9hdDMyQXJyYXldIl09RlB0WyJbb2JqZWN0IEZsb2F0NjRBcnJheV0iXT1GUHRbIltvYmplY3QgSW50OEFycmF5XSJdPUZQdFsiW29iamVjdCBJbnQxNkFycmF5XSJdPUZQdFsiW29iamVjdCBJbnQzMkFycmF5XSJdPUZQdFsiW29iamVjdCBVaW50OEFycmF5XSJdPUZQdFsiW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0iXT1GUHRbIltvYmplY3QgVWludDE2QXJyYXldIl09RlB0WyJbb2JqZWN0IFVpbnQzMkFycmF5XSJdPSEwLEZQdFsiW29iamVjdCBBcmd1bWVudHNdIl09RlB0WyJbb2JqZWN0IEFycmF5XSJdPUZQdFsiW29iamVjdCBBcnJheUJ1ZmZlcl0iXT1GUHRbIltvYmplY3QgQm9vbGVhbl0iXT1GUHRbIltvYmplY3QgRGF0YVZpZXddIl09RlB0WyJbb2JqZWN0IERhdGVdIl09RlB0WyJbb2JqZWN0IEVycm9yXSJdPUZQdFsiW29iamVjdCBGdW5jdGlvbl0iXT1GUHRbIltvYmplY3QgTWFwXSJdPUZQdFsiW29iamVjdCBOdW1iZXJdIl09RlB0WyJbb2JqZWN0IE9iamVjdF0iXT1GUHRbIltvYmplY3QgUmVnRXhwXSJdPUZQdFsiW29iamVjdCBTZXRdIl09RlB0WyJbb2JqZWN0IFN0cmluZ10iXT1GUHRbIltvYmplY3QgV2Vha01hcF0iXT0hMTt2YXIgVlB0PWZ1bmN0aW9uIFVQdCh0KXtyZXR1cm4gSFB0KHQpJiZCUHQodC5sZW5ndGgpJiYhIUZQdFtEUHQodCldfTt2YXIgalB0PWZ1bmN0aW9uIEdQdCh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHQoZSl9fSxXUHQ9e2V4cG9ydHM6e319OyEoZnVuY3Rpb24odCxlKXt2YXIgbj1lJiYhZS5ub2RlVHlwZSYmZSxpPW4mJnQmJiF0Lm5vZGVUeXBlJiZ0LHI9aSYmaS5leHBvcnRzPT09biYmbWt0LnByb2Nlc3Msbz0oZnVuY3Rpb24oKXt0cnl7dmFyIHQ9aSYmaS5yZXF1aXJlJiZpLnJlcXVpcmUoInV0aWwiKS50eXBlcztyZXR1cm4gdHx8ciYmci5iaW5kaW5nJiZyLmJpbmRpbmcoInV0aWwiKX1jYXRjaCh0KXt9fSkoKTt0LmV4cG9ydHM9b30pKFdQdCxXUHQuZXhwb3J0cyk7dmFyIHFQdD1WUHQsWVB0PVdQdC5leHBvcnRzLFhQdD1ZUHQmJllQdC5pc1R5cGVkQXJyYXksJFB0PVhQdD9qUHQoWFB0KTpxUHQsS1B0PW1QdCxaUHQ9Q1B0LEpQdD1BUHQsUVB0PWtQdC5leHBvcnRzLHROdD1JUHQsZU50PSRQdCxuTnQ9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTt2YXIgaU50PWZ1bmN0aW9uIHJOdCh0LGUpe3ZhciBuPUpQdCh0KSxpPSFuJiZaUHQodCkscj0hbiYmIWkmJlFQdCh0KSxvPSFuJiYhaSYmIXImJmVOdCh0KSxhPW58fGl8fHJ8fG8scz1hP0tQdCh0Lmxlbmd0aCxTdHJpbmcpOltdLGw9cy5sZW5ndGg7Zm9yKHZhciBjIGluIHQpIWUmJiFuTnQuY2FsbCh0LGMpfHxhJiYoImxlbmd0aCI9PWN8fHImJigib2Zmc2V0Ij09Y3x8InBhcmVudCI9PWMpfHxvJiYoImJ1ZmZlciI9PWN8fCJieXRlTGVuZ3RoIj09Y3x8ImJ5dGVPZmZzZXQiPT1jKXx8dE50KGMsbCkpfHxzLnB1c2goYyk7cmV0dXJuIHN9LG9OdD1PYmplY3QucHJvdG90eXBlO3ZhciBhTnQ9ZnVuY3Rpb24gc050KHQpe3ZhciBlPXQmJnQuY29uc3RydWN0b3I7cmV0dXJuIHQ9PT0oImZ1bmN0aW9uIj09dHlwZW9mIGUmJmUucHJvdG90eXBlfHxvTnQpfTt2YXIgbE50PWZ1bmN0aW9uIGNOdCh0LGUpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gdChlKG4pKX19LHVOdD1sTnQoT2JqZWN0LmtleXMsT2JqZWN0KSxoTnQ9YU50LGROdD11TnQscE50PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7dmFyIGZOdD1mdW5jdGlvbiBtTnQodCl7aWYoIWhOdCh0KSlyZXR1cm4gZE50KHQpO3ZhciBlPVtdO2Zvcih2YXIgbiBpbiBPYmplY3QodCkpcE50LmNhbGwodCxuKSYmImNvbnN0cnVjdG9yIiE9biYmZS5wdXNoKG4pO3JldHVybiBlfSxnTnQ9emt0LF9OdD1PUHQ7dmFyIHlOdD1mdW5jdGlvbiB2TnQodCl7cmV0dXJuIG51bGwhPXQmJl9OdCh0Lmxlbmd0aCkmJiFnTnQodCl9LGJOdD1pTnQseE50PWZOdCx3TnQ9eU50O3ZhciBTTnQ9ZnVuY3Rpb24gTU50KHQpe3JldHVybiB3TnQodCk/Yk50KHQpOnhOdCh0KX0sRU50PXBQdCxUTnQ9U050O3ZhciBDTnQ9ZnVuY3Rpb24gQU50KHQsZSl7cmV0dXJuIHQmJkVOdChlLFROdChlKSx0KX07dmFyIGtOdD1Qa3QsTE50PWFOdCxQTnQ9ZnVuY3Rpb24gTk50KHQpe3ZhciBlPVtdO2lmKG51bGwhPXQpZm9yKHZhciBuIGluIE9iamVjdCh0KSllLnB1c2gobik7cmV0dXJuIGV9LElOdD1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3ZhciBSTnQ9aU50LE9OdD1mdW5jdGlvbiB6TnQodCl7aWYoIWtOdCh0KSlyZXR1cm4gUE50KHQpO3ZhciBlPUxOdCh0KSxuPVtdO2Zvcih2YXIgaSBpbiB0KSgiY29uc3RydWN0b3IiIT1pfHwhZSYmSU50LmNhbGwodCxpKSkmJm4ucHVzaChpKTtyZXR1cm4gbn0sRE50PXlOdDt2YXIgQk50PWZ1bmN0aW9uIEhOdCh0KXtyZXR1cm4gRE50KHQpP1JOdCh0LCEwKTpPTnQodCl9LEZOdD1wUHQsVk50PUJOdDt2YXIgVU50PWZ1bmN0aW9uIGpOdCh0LGUpe3JldHVybiB0JiZGTnQoZSxWTnQoZSksdCl9LEdOdD17ZXhwb3J0czp7fX07IShmdW5jdGlvbih0LGUpe3ZhciBuPWUmJiFlLm5vZGVUeXBlJiZlLGk9biYmdCYmIXQubm9kZVR5cGUmJnQscj1pJiZpLmV4cG9ydHM9PT1uP19rdC5CdWZmZXI6dm9pZCAwLG89cj9yLmFsbG9jVW5zYWZlOnZvaWQgMDt0LmV4cG9ydHM9ZnVuY3Rpb24gYSh0LGUpe2lmKGUpcmV0dXJuIHQuc2xpY2UoKTt2YXIgbj10Lmxlbmd0aCxpPW8/byhuKTpuZXcgdC5jb25zdHJ1Y3RvcihuKTtyZXR1cm4gdC5jb3B5KGkpLGl9fSkoR050LEdOdC5leHBvcnRzKTt2YXIgV050PWZ1bmN0aW9uIHFOdCh0LGUpe3ZhciBuPS0xLGk9dC5sZW5ndGg7Zm9yKGV8fChlPUFycmF5KGkpKTsrK248aTspZVtuXT10W25dO3JldHVybiBlfTt2YXIgWU50PWZ1bmN0aW9uIFhOdCh0LGUpe2Zvcih2YXIgbj0tMSxpPW51bGw9PXQ/MDp0Lmxlbmd0aCxyPTAsbz1bXTsrK248aTspe3ZhciBhPXRbbl07ZShhLG4sdCkmJihvW3IrK109YSl9cmV0dXJuIG99O3ZhciAkTnQ9ZnVuY3Rpb24gS050KCl7cmV0dXJuW119LFpOdD1ZTnQsSk50PU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUsUU50PU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMsdEl0PVFOdD9mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD9bXToodD1PYmplY3QodCksWk50KFFOdCh0KSwoZnVuY3Rpb24oZSl7cmV0dXJuIEpOdC5jYWxsKHQsZSl9KSkpfTokTnQsZUl0PXBQdCxuSXQ9dEl0O3ZhciBpSXQ9ZnVuY3Rpb24gckl0KHQsZSl7cmV0dXJuIGVJdCh0LG5JdCh0KSxlKX07dmFyIG9JdD1mdW5jdGlvbiBhSXQodCxlKXtmb3IodmFyIG49LTEsaT1lLmxlbmd0aCxyPXQubGVuZ3RoOysrbjxpOyl0W3Irbl09ZVtuXTtyZXR1cm4gdH0sc0l0PWxOdChPYmplY3QuZ2V0UHJvdG90eXBlT2YsT2JqZWN0KSxsSXQ9b0l0LGNJdD1zSXQsdUl0PXRJdCxoSXQ9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scz9mdW5jdGlvbih0KXtmb3IodmFyIGU9W107dDspbEl0KGUsdUl0KHQpKSx0PWNJdCh0KTtyZXR1cm4gZX06JE50LGRJdD1wUHQscEl0PWhJdDt2YXIgZkl0PWZ1bmN0aW9uIG1JdCh0LGUpe3JldHVybiBkSXQodCxwSXQodCksZSl9LGdJdD1vSXQsX0l0PUFQdDt2YXIgeUl0PWZ1bmN0aW9uIHZJdCh0LGUsbil7dmFyIGk9ZSh0KTtyZXR1cm4gX0l0KHQpP2k6Z0l0KGksbih0KSl9LGJJdD15SXQseEl0PXRJdCx3SXQ9U050O3ZhciBTSXQ9ZnVuY3Rpb24gTUl0KHQpe3JldHVybiBiSXQodCx3SXQseEl0KX0sRUl0PXlJdCxUSXQ9aEl0LENJdD1CTnQ7dmFyIEFJdD1mdW5jdGlvbiBrSXQodCl7cmV0dXJuIEVJdCh0LENJdCxUSXQpfSxMSXQ9dEx0KF9rdCwiRGF0YVZpZXciKSxQSXQ9dEx0KF9rdCwiUHJvbWlzZSIpLE5JdD10THQoX2t0LCJTZXQiKSxJSXQ9TEl0LFJJdD1uTHQsT0l0PVBJdCx6SXQ9Tkl0LERJdD10THQoX2t0LCJXZWFrTWFwIiksQkl0PWtrdCxISXQ9Vmt0LEZJdD0iW29iamVjdCBNYXBdIixWSXQ9IltvYmplY3QgUHJvbWlzZV0iLFVJdD0iW29iamVjdCBTZXRdIixqSXQ9IltvYmplY3QgV2Vha01hcF0iLEdJdD0iW29iamVjdCBEYXRhVmlld10iLFdJdD1ISXQoSUl0KSxxSXQ9SEl0KFJJdCksWUl0PUhJdChPSXQpLFhJdD1ISXQoekl0KSwkSXQ9SEl0KERJdCksS0l0PUJJdDsoSUl0JiZLSXQobmV3IElJdChuZXcgQXJyYXlCdWZmZXIoMSkpKSE9R0l0fHxSSXQmJktJdChuZXcgUkl0KSE9Rkl0fHxPSXQmJktJdChPSXQucmVzb2x2ZSgpKSE9Vkl0fHx6SXQmJktJdChuZXcgekl0KSE9VUl0fHxESXQmJktJdChuZXcgREl0KSE9akl0KSYmKEtJdD1mdW5jdGlvbih0KXt2YXIgZT1CSXQodCksbj0iW29iamVjdCBPYmplY3RdIj09ZT90LmNvbnN0cnVjdG9yOnZvaWQgMCxpPW4/SEl0KG4pOiIiO2lmKGkpc3dpdGNoKGkpe2Nhc2UgV0l0OnJldHVybiBHSXQ7Y2FzZSBxSXQ6cmV0dXJuIEZJdDtjYXNlIFlJdDpyZXR1cm4gVkl0O2Nhc2UgWEl0OnJldHVybiBVSXQ7Y2FzZSAkSXQ6cmV0dXJuIGpJdH1yZXR1cm4gZX0pO3ZhciBaSXQ9S0l0LEpJdD1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3ZhciBRSXQ9ZnVuY3Rpb24gdFJ0KHQpe3ZhciBlPXQubGVuZ3RoLG49bmV3IHQuY29uc3RydWN0b3IoZSk7cmV0dXJuIGUmJiJzdHJpbmciPT10eXBlb2YgdFswXSYmSkl0LmNhbGwodCwiaW5kZXgiKSYmKG4uaW5kZXg9dC5pbmRleCxuLmlucHV0PXQuaW5wdXQpLG59LGVSdD1fa3QuVWludDhBcnJheSxuUnQ9ZVJ0O3ZhciBpUnQ9ZnVuY3Rpb24gclJ0KHQpe3ZhciBlPW5ldyB0LmNvbnN0cnVjdG9yKHQuYnl0ZUxlbmd0aCk7cmV0dXJuIG5ldyBuUnQoZSkuc2V0KG5ldyBuUnQodCkpLGV9LG9SdD1pUnQ7dmFyIGFSdD0vXHcqJC87dmFyIHNSdD15a3Q/eWt0LnByb3RvdHlwZTp2b2lkIDAsbFJ0PXNSdD9zUnQudmFsdWVPZjp2b2lkIDA7dmFyIGNSdD1pUnQ7dmFyIHVSdD1mdW5jdGlvbiBoUnQodCxlKXt2YXIgbj1lP2NSdCh0LmJ1ZmZlcik6dC5idWZmZXI7cmV0dXJuIG5ldyB0LmNvbnN0cnVjdG9yKG4sdC5ieXRlT2Zmc2V0LHQubGVuZ3RoKX0sZFJ0PWlSdCxwUnQ9ZnVuY3Rpb24gZlJ0KHQsZSl7dmFyIG49ZT9vUnQodC5idWZmZXIpOnQuYnVmZmVyO3JldHVybiBuZXcgdC5jb25zdHJ1Y3RvcihuLHQuYnl0ZU9mZnNldCx0LmJ5dGVMZW5ndGgpfSxtUnQ9ZnVuY3Rpb24gZ1J0KHQpe3ZhciBlPW5ldyB0LmNvbnN0cnVjdG9yKHQuc291cmNlLGFSdC5leGVjKHQpKTtyZXR1cm4gZS5sYXN0SW5kZXg9dC5sYXN0SW5kZXgsZX0sX1J0PWZ1bmN0aW9uIHlSdCh0KXtyZXR1cm4gbFJ0P09iamVjdChsUnQuY2FsbCh0KSk6e319LHZSdD11UnQ7dmFyIGJSdD1mdW5jdGlvbiB4UnQodCxlLG4pe3ZhciBpPXQuY29uc3RydWN0b3I7c3dpdGNoKGUpe2Nhc2UiW29iamVjdCBBcnJheUJ1ZmZlcl0iOnJldHVybiBkUnQodCk7Y2FzZSJbb2JqZWN0IEJvb2xlYW5dIjpjYXNlIltvYmplY3QgRGF0ZV0iOnJldHVybiBuZXcgaSgrdCk7Y2FzZSJbb2JqZWN0IERhdGFWaWV3XSI6cmV0dXJuIHBSdCh0LG4pO2Nhc2UiW29iamVjdCBGbG9hdDMyQXJyYXldIjpjYXNlIltvYmplY3QgRmxvYXQ2NEFycmF5XSI6Y2FzZSJbb2JqZWN0IEludDhBcnJheV0iOmNhc2UiW29iamVjdCBJbnQxNkFycmF5XSI6Y2FzZSJbb2JqZWN0IEludDMyQXJyYXldIjpjYXNlIltvYmplY3QgVWludDhBcnJheV0iOmNhc2UiW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0iOmNhc2UiW29iamVjdCBVaW50MTZBcnJheV0iOmNhc2UiW29iamVjdCBVaW50MzJBcnJheV0iOnJldHVybiB2UnQodCxuKTtjYXNlIltvYmplY3QgTWFwXSI6cmV0dXJuIG5ldyBpO2Nhc2UiW29iamVjdCBOdW1iZXJdIjpjYXNlIltvYmplY3QgU3RyaW5nXSI6cmV0dXJuIG5ldyBpKHQpO2Nhc2UiW29iamVjdCBSZWdFeHBdIjpyZXR1cm4gbVJ0KHQpO2Nhc2UiW29iamVjdCBTZXRdIjpyZXR1cm4gbmV3IGk7Y2FzZSJbb2JqZWN0IFN5bWJvbF0iOnJldHVybiBfUnQodCl9fSx3UnQ9UGt0LFNSdD1PYmplY3QuY3JlYXRlLE1SdD0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiBmdW5jdGlvbihlKXtpZighd1J0KGUpKXJldHVybnt9O2lmKFNSdClyZXR1cm4gU1J0KGUpO3QucHJvdG90eXBlPWU7dmFyIG49bmV3IHQ7cmV0dXJuIHQucHJvdG90eXBlPXZvaWQgMCxufX0pKCksRVJ0PU1SdCxUUnQ9c0l0LENSdD1hTnQ7dmFyIEFSdD1mdW5jdGlvbiBrUnQodCl7cmV0dXJuImZ1bmN0aW9uIiE9dHlwZW9mIHQuY29uc3RydWN0b3J8fENSdCh0KT97fTpFUnQoVFJ0KHQpKX0sTFJ0PVpJdCxQUnQ9X1B0O3ZhciBOUnQ9ZnVuY3Rpb24gSVJ0KHQpe3JldHVybiBQUnQodCkmJiJbb2JqZWN0IE1hcF0iPT1MUnQodCl9LFJSdD1XUHQuZXhwb3J0cyxPUnQ9UlJ0JiZSUnQuaXNNYXAselJ0PU9SdD9qUHQoT1J0KTpOUnQsRFJ0PVpJdCxCUnQ9X1B0O3ZhciBIUnQ9ZnVuY3Rpb24gRlJ0KHQpe3JldHVybiBCUnQodCkmJiJbb2JqZWN0IFNldF0iPT1EUnQodCl9LFZSdD1XUHQuZXhwb3J0cyxVUnQ9VlJ0JiZWUnQuaXNTZXQsalJ0PVVSdD9qUHQoVVJ0KTpIUnQsR1J0PUpMdCxXUnQ9UUx0LHFSdD1jUHQsWVJ0PUNOdCxYUnQ9VU50LCRSdD1HTnQuZXhwb3J0cyxLUnQ9V050LFpSdD1pSXQsSlJ0PWZJdCxRUnQ9U0l0LHRPdD1BSXQsZU90PVpJdCxuT3Q9UUl0LGlPdD1iUnQsck90PUFSdCxvT3Q9QVB0LGFPdD1rUHQuZXhwb3J0cyxzT3Q9elJ0LGxPdD1Qa3QsY090PWpSdCx1T3Q9U050LGhPdD1CTnQsZE90PSJbb2JqZWN0IEFyZ3VtZW50c10iLHBPdD0iW29iamVjdCBGdW5jdGlvbl0iLGZPdD0iW29iamVjdCBPYmplY3RdIixtT3Q9e307bU90W2RPdF09bU90WyJbb2JqZWN0IEFycmF5XSJdPW1PdFsiW29iamVjdCBBcnJheUJ1ZmZlcl0iXT1tT3RbIltvYmplY3QgRGF0YVZpZXddIl09bU90WyJbb2JqZWN0IEJvb2xlYW5dIl09bU90WyJbb2JqZWN0IERhdGVdIl09bU90WyJbb2JqZWN0IEZsb2F0MzJBcnJheV0iXT1tT3RbIltvYmplY3QgRmxvYXQ2NEFycmF5XSJdPW1PdFsiW29iamVjdCBJbnQ4QXJyYXldIl09bU90WyJbb2JqZWN0IEludDE2QXJyYXldIl09bU90WyJbb2JqZWN0IEludDMyQXJyYXldIl09bU90WyJbb2JqZWN0IE1hcF0iXT1tT3RbIltvYmplY3QgTnVtYmVyXSJdPW1PdFtmT3RdPW1PdFsiW29iamVjdCBSZWdFeHBdIl09bU90WyJbb2JqZWN0IFNldF0iXT1tT3RbIltvYmplY3QgU3RyaW5nXSJdPW1PdFsiW29iamVjdCBTeW1ib2xdIl09bU90WyJbb2JqZWN0IFVpbnQ4QXJyYXldIl09bU90WyJbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XSJdPW1PdFsiW29iamVjdCBVaW50MTZBcnJheV0iXT1tT3RbIltvYmplY3QgVWludDMyQXJyYXldIl09ITAsbU90WyJbb2JqZWN0IEVycm9yXSJdPW1PdFtwT3RdPW1PdFsiW29iamVjdCBXZWFrTWFwXSJdPSExO3ZhciBnT3Q9ZnVuY3Rpb24gdChlLG4saSxyLG8sYSl7dmFyIHMsbD0xJm4sYz0yJm4sdT00Jm47aWYoaSYmKHM9bz9pKGUscixvLGEpOmkoZSkpLHZvaWQgMCE9PXMpcmV0dXJuIHM7aWYoIWxPdChlKSlyZXR1cm4gZTt2YXIgaD1vT3QoZSk7aWYoaCl7aWYocz1uT3QoZSksIWwpcmV0dXJuIEtSdChlLHMpfWVsc2V7dmFyIGQ9ZU90KGUpLHA9ZD09cE90fHwiW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl0iPT1kO2lmKGFPdChlKSlyZXR1cm4gJFJ0KGUsbCk7aWYoZD09Zk90fHxkPT1kT3R8fHAmJiFvKXtpZihzPWN8fHA/e306ck90KGUpLCFsKXJldHVybiBjP0pSdChlLFhSdChzLGUpKTpaUnQoZSxZUnQocyxlKSl9ZWxzZXtpZighbU90W2RdKXJldHVybiBvP2U6e307cz1pT3QoZSxkLGwpfX1hfHwoYT1uZXcgR1J0KTt2YXIgZj1hLmdldChlKTtpZihmKXJldHVybiBmO2Euc2V0KGUscyksY090KGUpP2UuZm9yRWFjaCgoZnVuY3Rpb24ocil7cy5hZGQodChyLG4saSxyLGUsYSkpfSkpOnNPdChlKSYmZS5mb3JFYWNoKChmdW5jdGlvbihyLG8pe3Muc2V0KG8sdChyLG4saSxvLGUsYSkpfSkpO3ZhciBtPWg/dm9pZCAwOih1P2M/dE90OlFSdDpjP2hPdDp1T3QpKGUpO3JldHVybiBXUnQobXx8ZSwoZnVuY3Rpb24ocixvKXttJiYocj1lW289cl0pLHFSdChzLG8sdChyLG4saSxvLGUsYSkpfSkpLHN9LF9PdD1nT3Q7dmFyIHlPdD1mdW5jdGlvbiB2T3QodCl7cmV0dXJuIF9PdCh0LDQpfTt2YXIgYk90PWZ1bmN0aW9uIHhPdCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19O3ZhciB3T3Q9KGZ1bmN0aW9uIFNPdCh0KXtyZXR1cm4gZnVuY3Rpb24oZSxuLGkpe2Zvcih2YXIgcj0tMSxvPU9iamVjdChlKSxhPWkoZSkscz1hLmxlbmd0aDtzLS07KXt2YXIgbD1hW3Q/czorK3JdO2lmKCExPT09bihvW2xdLGwsbykpYnJlYWt9cmV0dXJuIGV9fSkoKSxNT3Q9d090LEVPdD1TTnQ7dmFyIFRPdD1mdW5jdGlvbiBDT3QodCxlKXtyZXR1cm4gdCYmTU90KHQsZSxFT3QpfSxBT3Q9eU50O3ZhciBrT3Q9KGZ1bmN0aW9uIExPdCh0LGUpe3JldHVybiBmdW5jdGlvbihuLGkpe2lmKG51bGw9PW4pcmV0dXJuIG47aWYoIUFPdChuKSlyZXR1cm4gdChuLGkpO2Zvcih2YXIgcj1uLmxlbmd0aCxvPWU/cjotMSxhPU9iamVjdChuKTsoZT9vLS06KytvPHIpJiYhMSE9PWkoYVtvXSxvLGEpOyk7cmV0dXJuIG59fSkoVE90KTt2YXIgUE90PWZ1bmN0aW9uIE5PdCh0KXtyZXR1cm4gdH0sSU90PVBPdDt2YXIgUk90PWZ1bmN0aW9uIE9PdCh0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdD90OklPdH0sek90PVFMdCxET3Q9a090LEJPdD1ST3QsSE90PUFQdDt2YXIgRk90PWZ1bmN0aW9uIFZPdCh0LGUpe3JldHVybihIT3QodCk/ek90OkRPdCkodCxCT3QoZSkpfSxVT3Q9Rk90LGpPdD1rT3Q7dmFyIEdPdD1mdW5jdGlvbiBXT3QodCxlKXt2YXIgbj1bXTtyZXR1cm4gak90KHQsKGZ1bmN0aW9uKHQsaSxyKXtlKHQsaSxyKSYmbi5wdXNoKHQpfSkpLG59O3ZhciBxT3Q9Vkx0LFlPdD1mdW5jdGlvbiBYT3QodCl7cmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKHQpfTtmdW5jdGlvbiAkT3QodCl7dmFyIGU9LTEsbj1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuX19kYXRhX189bmV3IHFPdDsrK2U8bjspdGhpcy5hZGQodFtlXSl9JE90LnByb3RvdHlwZS5hZGQ9JE90LnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uIEtPdCh0KXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5zZXQodCwiX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyIpLHRoaXN9LCRPdC5wcm90b3R5cGUuaGFzPVlPdDt2YXIgWk90PSRPdDt2YXIgSk90PWZ1bmN0aW9uIFFPdCh0LGUpe3JldHVybiB0LmhhcyhlKX0sdHp0PVpPdCxlenQ9ZnVuY3Rpb24gbnp0KHQsZSl7Zm9yKHZhciBuPS0xLGk9bnVsbD09dD8wOnQubGVuZ3RoOysrbjxpOylpZihlKHRbbl0sbix0KSlyZXR1cm4hMDtyZXR1cm4hMX0saXp0PUpPdDt2YXIgcnp0PWZ1bmN0aW9uIG96dCh0LGUsbixpLHIsbyl7dmFyIGE9MSZuLHM9dC5sZW5ndGgsbD1lLmxlbmd0aDtpZihzIT1sJiYhKGEmJmw+cykpcmV0dXJuITE7dmFyIGM9by5nZXQodCksdT1vLmdldChlKTtpZihjJiZ1KXJldHVybiBjPT1lJiZ1PT10O3ZhciBoPS0xLGQ9ITAscD0yJm4/bmV3IHR6dDp2b2lkIDA7Zm9yKG8uc2V0KHQsZSksby5zZXQoZSx0KTsrK2g8czspe3ZhciBmPXRbaF0sbT1lW2hdO2lmKGkpdmFyIGc9YT9pKG0sZixoLGUsdCxvKTppKGYsbSxoLHQsZSxvKTtpZih2b2lkIDAhPT1nKXtpZihnKWNvbnRpbnVlO2Q9ITE7YnJlYWt9aWYocCl7aWYoIWV6dChlLChmdW5jdGlvbih0LGUpe2lmKCFpenQocCxlKSYmKGY9PT10fHxyKGYsdCxuLGksbykpKXJldHVybiBwLnB1c2goZSl9KSkpe2Q9ITE7YnJlYWt9fWVsc2UgaWYoZiE9PW0mJiFyKGYsbSxuLGksbykpe2Q9ITE7YnJlYWt9fXJldHVybiBvLmRlbGV0ZSh0KSxvLmRlbGV0ZShlKSxkfTt2YXIgYXp0PWZ1bmN0aW9uIHN6dCh0KXt2YXIgZT0tMSxuPUFycmF5KHQuc2l6ZSk7cmV0dXJuIHQuZm9yRWFjaCgoZnVuY3Rpb24odCl7blsrK2VdPXR9KSksbn0sbHp0PWVSdCxjenQ9SEF0LHV6dD1yenQsaHp0PWZ1bmN0aW9uIGR6dCh0KXt2YXIgZT0tMSxuPUFycmF5KHQuc2l6ZSk7cmV0dXJuIHQuZm9yRWFjaCgoZnVuY3Rpb24odCxpKXtuWysrZV09W2ksdF19KSksbn0scHp0PWF6dCxmenQ9eWt0P3lrdC5wcm90b3R5cGU6dm9pZCAwLG16dD1menQ/Znp0LnZhbHVlT2Y6dm9pZCAwO3ZhciBnenQ9U0l0LF96dD1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3ZhciB5enQ9Skx0LHZ6dD1yenQsYnp0PWZ1bmN0aW9uIHh6dCh0LGUsbixpLHIsbyxhKXtzd2l0Y2gobil7Y2FzZSJbb2JqZWN0IERhdGFWaWV3XSI6aWYodC5ieXRlTGVuZ3RoIT1lLmJ5dGVMZW5ndGh8fHQuYnl0ZU9mZnNldCE9ZS5ieXRlT2Zmc2V0KXJldHVybiExO3Q9dC5idWZmZXIsZT1lLmJ1ZmZlcjtjYXNlIltvYmplY3QgQXJyYXlCdWZmZXJdIjpyZXR1cm4hKHQuYnl0ZUxlbmd0aCE9ZS5ieXRlTGVuZ3RofHwhbyhuZXcgbHp0KHQpLG5ldyBsenQoZSkpKTtjYXNlIltvYmplY3QgQm9vbGVhbl0iOmNhc2UiW29iamVjdCBEYXRlXSI6Y2FzZSJbb2JqZWN0IE51bWJlcl0iOnJldHVybiBjenQoK3QsK2UpO2Nhc2UiW29iamVjdCBFcnJvcl0iOnJldHVybiB0Lm5hbWU9PWUubmFtZSYmdC5tZXNzYWdlPT1lLm1lc3NhZ2U7Y2FzZSJbb2JqZWN0IFJlZ0V4cF0iOmNhc2UiW29iamVjdCBTdHJpbmddIjpyZXR1cm4gdD09ZSsiIjtjYXNlIltvYmplY3QgTWFwXSI6dmFyIHM9aHp0O2Nhc2UiW29iamVjdCBTZXRdIjppZihzfHwocz1wenQpLHQuc2l6ZSE9ZS5zaXplJiYhKDEmaSkpcmV0dXJuITE7dmFyIGw9YS5nZXQodCk7aWYobClyZXR1cm4gbD09ZTtpfD0yLGEuc2V0KHQsZSk7dmFyIGM9dXp0KHModCkscyhlKSxpLHIsbyxhKTtyZXR1cm4gYS5kZWxldGUodCksYztjYXNlIltvYmplY3QgU3ltYm9sXSI6aWYobXp0KXJldHVybiBtenQuY2FsbCh0KT09bXp0LmNhbGwoZSl9cmV0dXJuITF9LHd6dD1mdW5jdGlvbiBTenQodCxlLG4saSxyLG8pe3ZhciBhPTEmbixzPWd6dCh0KSxsPXMubGVuZ3RoO2lmKGwhPWd6dChlKS5sZW5ndGgmJiFhKXJldHVybiExO2Zvcih2YXIgYz1sO2MtLTspe3ZhciB1PXNbY107aWYoIShhP3UgaW4gZTpfenQuY2FsbChlLHUpKSlyZXR1cm4hMX12YXIgaD1vLmdldCh0KSxkPW8uZ2V0KGUpO2lmKGgmJmQpcmV0dXJuIGg9PWUmJmQ9PXQ7dmFyIHA9ITA7by5zZXQodCxlKSxvLnNldChlLHQpO2Zvcih2YXIgZj1hOysrYzxsOyl7dmFyIG09dFt1PXNbY11dLGc9ZVt1XTtpZihpKXZhciBfPWE/aShnLG0sdSxlLHQsbyk6aShtLGcsdSx0LGUsbyk7aWYoISh2b2lkIDA9PT1fP209PT1nfHxyKG0sZyxuLGksbyk6Xykpe3A9ITE7YnJlYWt9Znx8KGY9ImNvbnN0cnVjdG9yIj09dSl9aWYocCYmIWYpe3ZhciB5PXQuY29uc3RydWN0b3Isdj1lLmNvbnN0cnVjdG9yO3k9PXZ8fCEoImNvbnN0cnVjdG9yImluIHQpfHwhKCJjb25zdHJ1Y3RvciJpbiBlKXx8ImZ1bmN0aW9uIj09dHlwZW9mIHkmJnkgaW5zdGFuY2VvZiB5JiYiZnVuY3Rpb24iPT10eXBlb2YgdiYmdiBpbnN0YW5jZW9mIHZ8fChwPSExKX1yZXR1cm4gby5kZWxldGUodCksby5kZWxldGUoZSkscH0sTXp0PVpJdCxFenQ9QVB0LFR6dD1rUHQuZXhwb3J0cyxDenQ9JFB0LEF6dD0iW29iamVjdCBBcmd1bWVudHNdIixrenQ9IltvYmplY3QgQXJyYXldIixMenQ9IltvYmplY3QgT2JqZWN0XSIsUHp0PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7dmFyIE56dD1mdW5jdGlvbiBJenQodCxlLG4saSxyLG8pe3ZhciBhPUV6dCh0KSxzPUV6dChlKSxsPWE/a3p0Ok16dCh0KSxjPXM/a3p0Ok16dChlKSx1PShsPWw9PUF6dD9MenQ6bCk9PUx6dCxoPShjPWM9PUF6dD9MenQ6Yyk9PUx6dCxkPWw9PWM7aWYoZCYmVHp0KHQpKXtpZighVHp0KGUpKXJldHVybiExO2E9ITAsdT0hMX1pZihkJiYhdSlyZXR1cm4gb3x8KG89bmV3IHl6dCksYXx8Q3p0KHQpP3Z6dCh0LGUsbixpLHIsbyk6Ynp0KHQsZSxsLG4saSxyLG8pO2lmKCEoMSZuKSl7dmFyIHA9dSYmUHp0LmNhbGwodCwiX193cmFwcGVkX18iKSxmPWgmJlB6dC5jYWxsKGUsIl9fd3JhcHBlZF9fIik7aWYocHx8Zil7dmFyIG09cD90LnZhbHVlKCk6dCxnPWY/ZS52YWx1ZSgpOmU7cmV0dXJuIG98fChvPW5ldyB5enQpLHIobSxnLG4saSxvKX19cmV0dXJuISFkJiYob3x8KG89bmV3IHl6dCksd3p0KHQsZSxuLGkscixvKSl9LFJ6dD1fUHQ7dmFyIE96dD1mdW5jdGlvbiB0KGUsbixpLHIsbyl7cmV0dXJuIGU9PT1ufHwobnVsbD09ZXx8bnVsbD09bnx8IVJ6dChlKSYmIVJ6dChuKT9lIT1lJiZuIT1uOk56dChlLG4saSxyLHQsbykpfSx6enQ9Skx0LER6dD1PenQ7dmFyIEJ6dD1Qa3Q7dmFyIEh6dD1mdW5jdGlvbiBGenQodCl7cmV0dXJuIHQ9PXQmJiFCenQodCl9LFZ6dD1IenQsVXp0PVNOdDt2YXIganp0PWZ1bmN0aW9uIEd6dCh0LGUpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gbnVsbCE9biYmKG5bdF09PT1lJiYodm9pZCAwIT09ZXx8dCBpbiBPYmplY3QobikpKX19LFd6dD1mdW5jdGlvbiBxenQodCxlLG4saSl7dmFyIHI9bi5sZW5ndGgsbz1yLGE9IWk7aWYobnVsbD09dClyZXR1cm4hbztmb3IodD1PYmplY3QodCk7ci0tOyl7dmFyIHM9bltyXTtpZihhJiZzWzJdP3NbMV0hPT10W3NbMF1dOiEoc1swXWluIHQpKXJldHVybiExfWZvcig7KytyPG87KXt2YXIgbD0ocz1uW3JdKVswXSxjPXRbbF0sdT1zWzFdO2lmKGEmJnNbMl0pe2lmKHZvaWQgMD09PWMmJiEobCBpbiB0KSlyZXR1cm4hMX1lbHNle3ZhciBoPW5ldyB6enQ7aWYoaSl2YXIgZD1pKGMsdSxsLHQsZSxoKTtpZighKHZvaWQgMD09PWQ/RHp0KHUsYywzLGksaCk6ZCkpcmV0dXJuITF9fXJldHVybiEwfSxZenQ9ZnVuY3Rpb24gWHp0KHQpe2Zvcih2YXIgZT1VenQodCksbj1lLmxlbmd0aDtuLS07KXt2YXIgaT1lW25dLHI9dFtpXTtlW25dPVtpLHIsVnp0KHIpXX1yZXR1cm4gZX0sJHp0PWp6dDt2YXIgS3p0PWZ1bmN0aW9uIFp6dCh0KXt2YXIgZT1ZenQodCk7cmV0dXJuIDE9PWUubGVuZ3RoJiZlWzBdWzJdPyR6dChlWzBdWzBdLGVbMF1bMV0pOmZ1bmN0aW9uKG4pe3JldHVybiBuPT09dHx8V3p0KG4sdCxlKX19LEp6dD1ra3QsUXp0PV9QdDt2YXIgdER0PWZ1bmN0aW9uIGVEdCh0KXtyZXR1cm4ic3ltYm9sIj09dHlwZW9mIHR8fFF6dCh0KSYmIltvYmplY3QgU3ltYm9sXSI9PUp6dCh0KX0sbkR0PUFQdCxpRHQ9dER0LHJEdD0vXC58XFsoPzpbXltcXV0qfChbIiddKSg/Oig/IVwxKVteXFxdfFxcLikqP1wxKVxdLyxvRHQ9L15cdyokLzt2YXIgYUR0PWZ1bmN0aW9uIHNEdCh0LGUpe2lmKG5EdCh0KSlyZXR1cm4hMTt2YXIgbj10eXBlb2YgdDtyZXR1cm4hKCJudW1iZXIiIT1uJiYic3ltYm9sIiE9biYmImJvb2xlYW4iIT1uJiZudWxsIT10JiYhaUR0KHQpKXx8KG9EdC50ZXN0KHQpfHwhckR0LnRlc3QodCl8fG51bGwhPWUmJnQgaW4gT2JqZWN0KGUpKX0sbER0PVZMdDtmdW5jdGlvbiBjRHQodCxlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdHx8bnVsbCE9ZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiRXhwZWN0ZWQgYSBmdW5jdGlvbiIpO3ZhciBuPWZ1bmN0aW9uKCl7dmFyIGk9YXJndW1lbnRzLHI9ZT9lLmFwcGx5KHRoaXMsaSk6aVswXSxvPW4uY2FjaGU7aWYoby5oYXMocikpcmV0dXJuIG8uZ2V0KHIpO3ZhciBhPXQuYXBwbHkodGhpcyxpKTtyZXR1cm4gbi5jYWNoZT1vLnNldChyLGEpfHxvLGF9O3JldHVybiBuLmNhY2hlPW5ldyhjRHQuQ2FjaGV8fGxEdCksbn1jRHQuQ2FjaGU9bER0O3ZhciB1RHQ9Y0R0O3ZhciBoRHQ9L1teLltcXV0rfFxbKD86KC0/XGQrKD86XC5cZCspPyl8KFsiJ10pKCg/Oig/IVwyKVteXFxdfFxcLikqPylcMilcXXwoPz0oPzpcLnxcW1xdKSg/OlwufFxbXF18JCkpL2csZER0PS9cXChcXCk/L2cscER0PShmdW5jdGlvbiBmRHQodCl7dmFyIGU9dUR0KHQsKGZ1bmN0aW9uKHQpe3JldHVybiA1MDA9PT1uLnNpemUmJm4uY2xlYXIoKSx0fSkpLG49ZS5jYWNoZTtyZXR1cm4gZX0pKChmdW5jdGlvbih0KXt2YXIgZT1bXTtyZXR1cm4gNDY9PT10LmNoYXJDb2RlQXQoMCkmJmUucHVzaCgiIiksdC5yZXBsYWNlKGhEdCwoZnVuY3Rpb24odCxuLGkscil7ZS5wdXNoKGk/ci5yZXBsYWNlKGREdCwiJDEiKTpufHx0KX0pKSxlfSkpO3ZhciBtRHQ9ZnVuY3Rpb24gZ0R0KHQsZSl7Zm9yKHZhciBuPS0xLGk9bnVsbD09dD8wOnQubGVuZ3RoLHI9QXJyYXkoaSk7KytuPGk7KXJbbl09ZSh0W25dLG4sdCk7cmV0dXJuIHJ9LF9EdD1tRHQseUR0PUFQdCx2RHQ9dER0LGJEdD15a3Q/eWt0LnByb3RvdHlwZTp2b2lkIDAseER0PWJEdD9iRHQudG9TdHJpbmc6dm9pZCAwO3ZhciB3RHQ9ZnVuY3Rpb24gdChlKXtpZigic3RyaW5nIj09dHlwZW9mIGUpcmV0dXJuIGU7aWYoeUR0KGUpKXJldHVybiBfRHQoZSx0KSsiIjtpZih2RHQoZSkpcmV0dXJuIHhEdD94RHQuY2FsbChlKToiIjt2YXIgbj1lKyIiO3JldHVybiIwIj09biYmMS9lPT0tSW5maW5pdHk/Ii0wIjpufTt2YXIgU0R0PWZ1bmN0aW9uIE1EdCh0KXtyZXR1cm4gbnVsbD09dD8iIjp3RHQodCl9LEVEdD1BUHQsVER0PWFEdCxDRHQ9cER0LEFEdD1TRHQ7dmFyIGtEdD1mdW5jdGlvbiBMRHQodCxlKXtyZXR1cm4gRUR0KHQpP3Q6VER0KHQsZSk/W3RdOkNEdChBRHQodCkpfSxQRHQ9dER0O3ZhciBORHQ9ZnVuY3Rpb24gSUR0KHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdHx8UER0KHQpKXJldHVybiB0O3ZhciBlPXQrIiI7cmV0dXJuIjAiPT1lJiYxL3Q9PS1JbmZpbml0eT8iLTAiOmV9LFJEdD1rRHQsT0R0PU5EdDt2YXIgekR0PWZ1bmN0aW9uIEREdCh0LGUpe2Zvcih2YXIgbj0wLGk9KGU9UkR0KGUsdCkpLmxlbmd0aDtudWxsIT10JiZuPGk7KXQ9dFtPRHQoZVtuKytdKV07cmV0dXJuIG4mJm49PWk/dDp2b2lkIDB9LEJEdD16RHQ7dmFyIEhEdD1rRHQsRkR0PUNQdCxWRHQ9QVB0LFVEdD1JUHQsakR0PU9QdCxHRHQ9TkR0O3ZhciBXRHQ9ZnVuY3Rpb24gcUR0KHQsZSxuKXtmb3IodmFyIGk9LTEscj0oZT1IRHQoZSx0KSkubGVuZ3RoLG89ITE7KytpPHI7KXt2YXIgYT1HRHQoZVtpXSk7aWYoIShvPW51bGwhPXQmJm4odCxhKSkpYnJlYWs7dD10W2FdfXJldHVybiBvfHwrK2khPXI/bzohIShyPW51bGw9PXQ/MDp0Lmxlbmd0aCkmJmpEdChyKSYmVUR0KGEscikmJihWRHQodCl8fEZEdCh0KSl9LFlEdD1mdW5jdGlvbiBYRHQodCxlKXtyZXR1cm4gbnVsbCE9dCYmZSBpbiBPYmplY3QodCl9LCREdD1XRHQ7dmFyIEtEdD1mdW5jdGlvbiBaRHQodCxlKXtyZXR1cm4gbnVsbCE9dCYmJER0KHQsZSxZRHQpfSxKRHQ9T3p0LFFEdD1mdW5jdGlvbiB0QnQodCxlLG4pe3ZhciBpPW51bGw9PXQ/dm9pZCAwOkJEdCh0LGUpO3JldHVybiB2b2lkIDA9PT1pP246aX0sZUJ0PUtEdCxuQnQ9YUR0LGlCdD1IenQsckJ0PWp6dCxvQnQ9TkR0O3ZhciBhQnQ9ZnVuY3Rpb24gc0J0KHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZT92b2lkIDA6ZVt0XX19LGxCdD16RHQ7dmFyIGNCdD1hQnQsdUJ0PWZ1bmN0aW9uIGhCdCh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIGxCdChlLHQpfX0sZEJ0PWFEdCxwQnQ9TkR0O3ZhciBmQnQ9S3p0LG1CdD1mdW5jdGlvbiBnQnQodCxlKXtyZXR1cm4gbkJ0KHQpJiZpQnQoZSk/ckJ0KG9CdCh0KSxlKTpmdW5jdGlvbihuKXt2YXIgaT1RRHQobix0KTtyZXR1cm4gdm9pZCAwPT09aSYmaT09PWU/ZUJ0KG4sdCk6SkR0KGUsaSwzKX19LF9CdD1QT3QseUJ0PUFQdCx2QnQ9ZnVuY3Rpb24gYkJ0KHQpe3JldHVybiBkQnQodCk/Y0J0KHBCdCh0KSk6dUJ0KHQpfTt2YXIgeEJ0PWZ1bmN0aW9uIHdCdCh0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdD90Om51bGw9PXQ/X0J0OiJvYmplY3QiPT10eXBlb2YgdD95QnQodCk/bUJ0KHRbMF0sdFsxXSk6ZkJ0KHQpOnZCdCh0KX0sU0J0PVlOdCxNQnQ9R090LEVCdD14QnQsVEJ0PUFQdDt2YXIgQ0J0PWZ1bmN0aW9uIEFCdCh0LGUpe3JldHVybihUQnQodCk/U0J0Ok1CdCkodCxFQnQoZSkpfSxrQnQ9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTt2YXIgTEJ0PWZ1bmN0aW9uIFBCdCh0LGUpe3JldHVybiBudWxsIT10JiZrQnQuY2FsbCh0LGUpfSxOQnQ9V0R0O3ZhciBJQnQ9ZnVuY3Rpb24gUkJ0KHQsZSl7cmV0dXJuIG51bGwhPXQmJk5CdCh0LGUsTEJ0KX0sT0J0PWZOdCx6QnQ9Wkl0LERCdD1DUHQsQkJ0PUFQdCxIQnQ9eU50LEZCdD1rUHQuZXhwb3J0cyxWQnQ9YU50LFVCdD0kUHQsakJ0PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7dmFyIEdCdD1mdW5jdGlvbiBXQnQodCl7aWYobnVsbD09dClyZXR1cm4hMDtpZihIQnQodCkmJihCQnQodCl8fCJzdHJpbmciPT10eXBlb2YgdHx8ImZ1bmN0aW9uIj09dHlwZW9mIHQuc3BsaWNlfHxGQnQodCl8fFVCdCh0KXx8REJ0KHQpKSlyZXR1cm4hdC5sZW5ndGg7dmFyIGU9ekJ0KHQpO2lmKCJbb2JqZWN0IE1hcF0iPT1lfHwiW29iamVjdCBTZXRdIj09ZSlyZXR1cm4hdC5zaXplO2lmKFZCdCh0KSlyZXR1cm4hT0J0KHQpLmxlbmd0aDtmb3IodmFyIG4gaW4gdClpZihqQnQuY2FsbCh0LG4pKXJldHVybiExO3JldHVybiEwfTt2YXIgcUJ0PWZ1bmN0aW9uIFlCdCh0KXtyZXR1cm4gdm9pZCAwPT09dH0sWEJ0PWtPdCwkQnQ9eU50O3ZhciBLQnQ9ZnVuY3Rpb24gWkJ0KHQsZSl7dmFyIG49LTEsaT0kQnQodCk/QXJyYXkodC5sZW5ndGgpOltdO3JldHVybiBYQnQodCwoZnVuY3Rpb24odCxyLG8pe2lbKytuXT1lKHQscixvKX0pKSxpfSxKQnQ9bUR0LFFCdD14QnQsdEh0PUtCdCxlSHQ9QVB0O3ZhciBuSHQ9ZnVuY3Rpb24gaUh0KHQsZSl7cmV0dXJuKGVIdCh0KT9KQnQ6dEh0KSh0LFFCdChlKSl9O3ZhciBySHQ9ZnVuY3Rpb24gb0h0KHQsZSxuLGkpe3ZhciByPS0xLG89bnVsbD09dD8wOnQubGVuZ3RoO2ZvcihpJiZvJiYobj10Wysrcl0pOysrcjxvOyluPWUobix0W3JdLHIsdCk7cmV0dXJuIG59LGFIdD1rT3Qsc0h0PXhCdCxsSHQ9ZnVuY3Rpb24gY0h0KHQsZSxuLGkscil7cmV0dXJuIHIodCwoZnVuY3Rpb24odCxyLG8pe249aT8oaT0hMSx0KTplKG4sdCxyLG8pfSkpLG59LHVIdD1BUHQ7dmFyIGhIdD1mdW5jdGlvbiBkSHQodCxlLG4pe3ZhciBpPXVIdCh0KT9ySHQ6bEh0LHI9YXJndW1lbnRzLmxlbmd0aDwzO3JldHVybiBpKHQsc0h0KGUpLG4scixhSHQpfSxwSHQ9a2t0LGZIdD1BUHQsbUh0PV9QdDt2YXIgZ0h0PWZ1bmN0aW9uIF9IdCh0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHR8fCFmSHQodCkmJm1IdCh0KSYmIltvYmplY3QgU3RyaW5nXSI9PXBIdCh0KX0seUh0PWFCdCgibGVuZ3RoIiksdkh0PVJlZ0V4cCgiW1xcdTIwMGRcXHVkODAwLVxcdWRmZmZcXHUwMzAwLVxcdTAzNmZcXHVmZTIwLVxcdWZlMmZcXHUyMGQwLVxcdTIwZmZcXHVmZTBlXFx1ZmUwZl0iKTt2YXIgYkh0PWZ1bmN0aW9uIHhIdCh0KXtyZXR1cm4gdkh0LnRlc3QodCl9LHdIdD0iW1xcdWQ4MDAtXFx1ZGZmZl0iLFNIdD0iW1xcdTAzMDAtXFx1MDM2ZlxcdWZlMjAtXFx1ZmUyZlxcdTIwZDAtXFx1MjBmZl0iLE1IdD0iXFx1ZDgzY1tcXHVkZmZiLVxcdWRmZmZdIixFSHQ9IlteXFx1ZDgwMC1cXHVkZmZmXSIsVEh0PSIoPzpcXHVkODNjW1xcdWRkZTYtXFx1ZGRmZl0pezJ9IixDSHQ9IltcXHVkODAwLVxcdWRiZmZdW1xcdWRjMDAtXFx1ZGZmZl0iLEFIdD0iKD86IitTSHQrInwiK01IdCsiKSIrIj8iLGtIdD0iW1xcdWZlMGVcXHVmZTBmXT8iLExIdD1rSHQrQUh0KygiKD86XFx1MjAwZCg/OiIrW0VIdCxUSHQsQ0h0XS5qb2luKCJ8IikrIikiK2tIdCtBSHQrIikqIiksUEh0PSIoPzoiK1tFSHQrU0h0KyI/IixTSHQsVEh0LENIdCx3SHRdLmpvaW4oInwiKSsiKSIsTkh0PVJlZ0V4cChNSHQrIig/PSIrTUh0KyIpfCIrUEh0K0xIdCwiZyIpO3ZhciBJSHQ9eUh0LFJIdD1iSHQsT0h0PWZ1bmN0aW9uIHpIdCh0KXtmb3IodmFyIGU9Tkh0Lmxhc3RJbmRleD0wO05IdC50ZXN0KHQpOykrK2U7cmV0dXJuIGV9O3ZhciBESHQ9Zk50LEJIdD1aSXQsSEh0PXlOdCxGSHQ9Z0h0LFZIdD1mdW5jdGlvbiBVSHQodCl7cmV0dXJuIFJIdCh0KT9PSHQodCk6SUh0KHQpfTt2YXIgakh0PWZ1bmN0aW9uIEdIdCh0KXtpZihudWxsPT10KXJldHVybiAwO2lmKEhIdCh0KSlyZXR1cm4gRkh0KHQpP1ZIdCh0KTp0Lmxlbmd0aDt2YXIgZT1CSHQodCk7cmV0dXJuIltvYmplY3QgTWFwXSI9PWV8fCJbb2JqZWN0IFNldF0iPT1lP3Quc2l6ZTpESHQodCkubGVuZ3RofSxXSHQ9UUx0LHFIdD1NUnQsWUh0PVRPdCxYSHQ9eEJ0LCRIdD1zSXQsS0h0PUFQdCxaSHQ9a1B0LmV4cG9ydHMsSkh0PXprdCxRSHQ9UGt0LHRGdD0kUHQ7dmFyIGVGdD1mdW5jdGlvbiBuRnQodCxlLG4pe3ZhciBpPUtIdCh0KSxyPWl8fFpIdCh0KXx8dEZ0KHQpO2lmKGU9WEh0KGUpLG51bGw9PW4pe3ZhciBvPXQmJnQuY29uc3RydWN0b3I7bj1yP2k/bmV3IG86W106UUh0KHQpJiZKSHQobyk/cUh0KCRIdCh0KSk6e319cmV0dXJuKHI/V0h0OllIdCkodCwoZnVuY3Rpb24odCxpLHIpe3JldHVybiBlKG4sdCxpLHIpfSkpLG59LGlGdD1DUHQsckZ0PUFQdCxvRnQ9eWt0P3lrdC5pc0NvbmNhdFNwcmVhZGFibGU6dm9pZCAwO3ZhciBhRnQ9b0l0LHNGdD1mdW5jdGlvbiBsRnQodCl7cmV0dXJuIHJGdCh0KXx8aUZ0KHQpfHwhIShvRnQmJnQmJnRbb0Z0XSl9O3ZhciBjRnQ9ZnVuY3Rpb24gdChlLG4saSxyLG8pe3ZhciBhPS0xLHM9ZS5sZW5ndGg7Zm9yKGl8fChpPXNGdCksb3x8KG89W10pOysrYTxzOyl7dmFyIGw9ZVthXTtuPjAmJmkobCk/bj4xP3QobCxuLTEsaSxyLG8pOmFGdChvLGwpOnJ8fChvW28ubGVuZ3RoXT1sKX1yZXR1cm4gb307dmFyIHVGdD1mdW5jdGlvbiBoRnQodCxlLG4pe3N3aXRjaChuLmxlbmd0aCl7Y2FzZSAwOnJldHVybiB0LmNhbGwoZSk7Y2FzZSAxOnJldHVybiB0LmNhbGwoZSxuWzBdKTtjYXNlIDI6cmV0dXJuIHQuY2FsbChlLG5bMF0sblsxXSk7Y2FzZSAzOnJldHVybiB0LmNhbGwoZSxuWzBdLG5bMV0sblsyXSl9cmV0dXJuIHQuYXBwbHkoZSxuKX0sZEZ0PU1hdGgubWF4O3ZhciBwRnQ9ZnVuY3Rpb24gZkZ0KHQsZSxuKXtyZXR1cm4gZT1kRnQodm9pZCAwPT09ZT90Lmxlbmd0aC0xOmUsMCksZnVuY3Rpb24oKXtmb3IodmFyIGk9YXJndW1lbnRzLHI9LTEsbz1kRnQoaS5sZW5ndGgtZSwwKSxhPUFycmF5KG8pOysrcjxvOylhW3JdPWlbZStyXTtyPS0xO2Zvcih2YXIgcz1BcnJheShlKzEpOysrcjxlOylzW3JdPWlbcl07cmV0dXJuIHNbZV09bihhKSx1RnQodCx0aGlzLHMpfX0sbUZ0PWJPdCxnRnQ9blB0LF9GdD1EYXRlLm5vdzt2YXIgeUZ0PShmdW5jdGlvbiB2RnQodCl7dmFyIGU9MCxuPTA7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGk9X0Z0KCkscj0xNi0oaS1uKTtpZihuPWkscj4wKXtpZigrK2U+PTgwMClyZXR1cm4gYXJndW1lbnRzWzBdfWVsc2UgZT0wO3JldHVybiB0LmFwcGx5KHZvaWQgMCxhcmd1bWVudHMpfX0pKGdGdD9mdW5jdGlvbih0LGUpe3JldHVybiBnRnQodCwidG9TdHJpbmciLHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMSx2YWx1ZTptRnQoZSksd3JpdGFibGU6ITB9KX06UE90KSxiRnQ9UE90LHhGdD1wRnQsd0Z0PXlGdDt2YXIgU0Z0PWZ1bmN0aW9uIE1GdCh0LGUpe3JldHVybiB3RnQoeEZ0KHQsZSxiRnQpLHQrIiIpfTt2YXIgRUZ0PWZ1bmN0aW9uIFRGdCh0LGUsbixpKXtmb3IodmFyIHI9dC5sZW5ndGgsbz1uKyhpPzE6LTEpO2k/by0tOisrbzxyOylpZihlKHRbb10sbyx0KSlyZXR1cm4gbztyZXR1cm4tMX07dmFyIENGdD1FRnQsQUZ0PWZ1bmN0aW9uIGtGdCh0KXtyZXR1cm4gdCE9dH0sTEZ0PWZ1bmN0aW9uIFBGdCh0LGUsbil7Zm9yKHZhciBpPW4tMSxyPXQubGVuZ3RoOysraTxyOylpZih0W2ldPT09ZSlyZXR1cm4gaTtyZXR1cm4tMX07dmFyIE5GdD1mdW5jdGlvbiBJRnQodCxlLG4pe3JldHVybiBlPT1lP0xGdCh0LGUsbik6Q0Z0KHQsQUZ0LG4pfTt2YXIgUkZ0PWZ1bmN0aW9uIE9GdCh0LGUpe3JldHVybiEhKG51bGw9PXQ/MDp0Lmxlbmd0aCkmJk5GdCh0LGUsMCk+LTF9O3ZhciB6RnQ9ZnVuY3Rpb24gREZ0KHQsZSxuKXtmb3IodmFyIGk9LTEscj1udWxsPT10PzA6dC5sZW5ndGg7KytpPHI7KWlmKG4oZSx0W2ldKSlyZXR1cm4hMDtyZXR1cm4hMX07dmFyIEJGdD1OSXQsSEZ0PWZ1bmN0aW9uIEZGdCgpe30sVkZ0PUJGdCYmMS9henQobmV3IEJGdChbLC0wXSkpWzFdPT0xLzA/ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBCRnQodCl9OkhGdCxVRnQ9Wk90LGpGdD1SRnQsR0Z0PXpGdCxXRnQ9Sk90LHFGdD1WRnQsWUZ0PWF6dDt2YXIgWEZ0PXlOdCwkRnQ9X1B0O3ZhciBLRnQ9ZnVuY3Rpb24gWkZ0KHQpe3JldHVybiAkRnQodCkmJlhGdCh0KX0sSkZ0PWNGdCxRRnQ9ZnVuY3Rpb24gdFZ0KHQsZSxuKXt2YXIgaT0tMSxyPWpGdCxvPXQubGVuZ3RoLGE9ITAscz1bXSxsPXM7aWYobilhPSExLHI9R0Z0O2Vsc2UgaWYobz49MjAwKXt2YXIgYz1lP251bGw6cUZ0KHQpO2lmKGMpcmV0dXJuIFlGdChjKTthPSExLHI9V0Z0LGw9bmV3IFVGdH1lbHNlIGw9ZT9bXTpzO3Q6Zm9yKDsrK2k8bzspe3ZhciB1PXRbaV0saD1lP2UodSk6dTtpZih1PW58fDAhPT11P3U6MCxhJiZoPT1oKXtmb3IodmFyIGQ9bC5sZW5ndGg7ZC0tOylpZihsW2RdPT09aCljb250aW51ZSB0O2UmJmwucHVzaChoKSxzLnB1c2godSl9ZWxzZSByKGwsaCxuKXx8KGwhPT1zJiZsLnB1c2goaCkscy5wdXNoKHUpKX1yZXR1cm4gc30sZVZ0PUtGdCxuVnQ9U0Z0KChmdW5jdGlvbih0KXtyZXR1cm4gUUZ0KEpGdCh0LDEsZVZ0LCEwKSl9KSksaVZ0PW1EdDt2YXIgclZ0PWZ1bmN0aW9uIG9WdCh0LGUpe3JldHVybiBpVnQoZSwoZnVuY3Rpb24oZSl7cmV0dXJuIHRbZV19KSl9LGFWdD1TTnQ7dmFyIHNWdCxsVnQ9ZnVuY3Rpb24gY1Z0KHQpe3JldHVybiBudWxsPT10P1tdOnJWdCh0LGFWdCh0KSl9O3RyeXtzVnQ9e2Nsb25lOnlPdCxjb25zdGFudDpiT3QsZWFjaDpVT3QsZmlsdGVyOkNCdCxoYXM6SUJ0LGlzQXJyYXk6QVB0LGlzRW1wdHk6R0J0LGlzRnVuY3Rpb246emt0LGlzVW5kZWZpbmVkOnFCdCxrZXlzOlNOdCxtYXA6bkh0LHJlZHVjZTpoSHQsc2l6ZTpqSHQsdHJhbnNmb3JtOmVGdCx1bmlvbjpuVnQsdmFsdWVzOmxWdH19Y2F0Y2godCl7fXNWdHx8KHNWdD13aW5kb3cuXyk7dmFyIHVWdD1zVnQsaFZ0PXVWdCxkVnQ9ZlZ0LHBWdD0iXDAiO2Z1bmN0aW9uIGZWdCh0KXt0aGlzLl9pc0RpcmVjdGVkPSFoVnQuaGFzKHQsImRpcmVjdGVkIil8fHQuZGlyZWN0ZWQsdGhpcy5faXNNdWx0aWdyYXBoPSEhaFZ0Lmhhcyh0LCJtdWx0aWdyYXBoIikmJnQubXVsdGlncmFwaCx0aGlzLl9pc0NvbXBvdW5kPSEhaFZ0Lmhhcyh0LCJjb21wb3VuZCIpJiZ0LmNvbXBvdW5kLHRoaXMuX2xhYmVsPXZvaWQgMCx0aGlzLl9kZWZhdWx0Tm9kZUxhYmVsRm49aFZ0LmNvbnN0YW50KHZvaWQgMCksdGhpcy5fZGVmYXVsdEVkZ2VMYWJlbEZuPWhWdC5jb25zdGFudCh2b2lkIDApLHRoaXMuX25vZGVzPXt9LHRoaXMuX2lzQ29tcG91bmQmJih0aGlzLl9wYXJlbnQ9e30sdGhpcy5fY2hpbGRyZW49e30sdGhpcy5fY2hpbGRyZW5bIlwwIl09e30pLHRoaXMuX2luPXt9LHRoaXMuX3ByZWRzPXt9LHRoaXMuX291dD17fSx0aGlzLl9zdWNzPXt9LHRoaXMuX2VkZ2VPYmpzPXt9LHRoaXMuX2VkZ2VMYWJlbHM9e319ZnVuY3Rpb24gbVZ0KHQsZSl7dFtlXT90W2VdKys6dFtlXT0xfWZ1bmN0aW9uIGdWdCh0LGUpey0tdFtlXXx8ZGVsZXRlIHRbZV19ZnVuY3Rpb24gX1Z0KHQsZSxuLGkpe3ZhciByPSIiK2Usbz0iIituO2lmKCF0JiZyPm8pe3ZhciBhPXI7cj1vLG89YX1yZXR1cm4gcisiASIrbysiASIrKGhWdC5pc1VuZGVmaW5lZChpKT8iXDAiOmkpfWZ1bmN0aW9uIHlWdCh0LGUsbixpKXt2YXIgcj0iIitlLG89IiIrbjtpZighdCYmcj5vKXt2YXIgYT1yO3I9byxvPWF9dmFyIHM9e3Y6cix3Om99O3JldHVybiBpJiYocy5uYW1lPWkpLHN9ZnVuY3Rpb24gdlZ0KHQsZSl7cmV0dXJuIF9WdCh0LGUudixlLncsZS5uYW1lKX1mVnQucHJvdG90eXBlLl9ub2RlQ291bnQ9MCxmVnQucHJvdG90eXBlLl9lZGdlQ291bnQ9MCxmVnQucHJvdG90eXBlLmlzRGlyZWN0ZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faXNEaXJlY3RlZH0sZlZ0LnByb3RvdHlwZS5pc011bHRpZ3JhcGg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faXNNdWx0aWdyYXBofSxmVnQucHJvdG90eXBlLmlzQ29tcG91bmQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faXNDb21wb3VuZH0sZlZ0LnByb3RvdHlwZS5zZXRHcmFwaD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fbGFiZWw9dCx0aGlzfSxmVnQucHJvdG90eXBlLmdyYXBoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2xhYmVsfSxmVnQucHJvdG90eXBlLnNldERlZmF1bHROb2RlTGFiZWw9ZnVuY3Rpb24odCl7cmV0dXJuIGhWdC5pc0Z1bmN0aW9uKHQpfHwodD1oVnQuY29uc3RhbnQodCkpLHRoaXMuX2RlZmF1bHROb2RlTGFiZWxGbj10LHRoaXN9LGZWdC5wcm90b3R5cGUubm9kZUNvdW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX25vZGVDb3VudH0sZlZ0LnByb3RvdHlwZS5ub2Rlcz1mdW5jdGlvbigpe3JldHVybiBoVnQua2V5cyh0aGlzLl9ub2Rlcyl9LGZWdC5wcm90b3R5cGUuc291cmNlcz1mdW5jdGlvbigpe3ZhciB0PXRoaXM7cmV0dXJuIGhWdC5maWx0ZXIodGhpcy5ub2RlcygpLChmdW5jdGlvbihlKXtyZXR1cm4gaFZ0LmlzRW1wdHkodC5faW5bZV0pfSkpfSxmVnQucHJvdG90eXBlLnNpbmtzPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztyZXR1cm4gaFZ0LmZpbHRlcih0aGlzLm5vZGVzKCksKGZ1bmN0aW9uKGUpe3JldHVybiBoVnQuaXNFbXB0eSh0Ll9vdXRbZV0pfSkpfSxmVnQucHJvdG90eXBlLnNldE5vZGVzPWZ1bmN0aW9uKHQsZSl7dmFyIG49YXJndW1lbnRzLGk9dGhpcztyZXR1cm4gaFZ0LmVhY2godCwoZnVuY3Rpb24odCl7bi5sZW5ndGg+MT9pLnNldE5vZGUodCxlKTppLnNldE5vZGUodCl9KSksdGhpc30sZlZ0LnByb3RvdHlwZS5zZXROb2RlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGhWdC5oYXModGhpcy5fbm9kZXMsdCk/KGFyZ3VtZW50cy5sZW5ndGg+MSYmKHRoaXMuX25vZGVzW3RdPWUpLHRoaXMpOih0aGlzLl9ub2Rlc1t0XT1hcmd1bWVudHMubGVuZ3RoPjE/ZTp0aGlzLl9kZWZhdWx0Tm9kZUxhYmVsRm4odCksdGhpcy5faXNDb21wb3VuZCYmKHRoaXMuX3BhcmVudFt0XT1wVnQsdGhpcy5fY2hpbGRyZW5bdF09e30sdGhpcy5fY2hpbGRyZW5bIlwwIl1bdF09ITApLHRoaXMuX2luW3RdPXt9LHRoaXMuX3ByZWRzW3RdPXt9LHRoaXMuX291dFt0XT17fSx0aGlzLl9zdWNzW3RdPXt9LCsrdGhpcy5fbm9kZUNvdW50LHRoaXMpfSxmVnQucHJvdG90eXBlLm5vZGU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX25vZGVzW3RdfSxmVnQucHJvdG90eXBlLmhhc05vZGU9ZnVuY3Rpb24odCl7cmV0dXJuIGhWdC5oYXModGhpcy5fbm9kZXMsdCl9LGZWdC5wcm90b3R5cGUucmVtb3ZlTm9kZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzO2lmKGhWdC5oYXModGhpcy5fbm9kZXMsdCkpe3ZhciBuPWZ1bmN0aW9uKHQpe2UucmVtb3ZlRWRnZShlLl9lZGdlT2Jqc1t0XSl9O2RlbGV0ZSB0aGlzLl9ub2Rlc1t0XSx0aGlzLl9pc0NvbXBvdW5kJiYodGhpcy5fcmVtb3ZlRnJvbVBhcmVudHNDaGlsZExpc3QodCksZGVsZXRlIHRoaXMuX3BhcmVudFt0XSxoVnQuZWFjaCh0aGlzLmNoaWxkcmVuKHQpLChmdW5jdGlvbih0KXtlLnNldFBhcmVudCh0KX0pKSxkZWxldGUgdGhpcy5fY2hpbGRyZW5bdF0pLGhWdC5lYWNoKGhWdC5rZXlzKHRoaXMuX2luW3RdKSxuKSxkZWxldGUgdGhpcy5faW5bdF0sZGVsZXRlIHRoaXMuX3ByZWRzW3RdLGhWdC5lYWNoKGhWdC5rZXlzKHRoaXMuX291dFt0XSksbiksZGVsZXRlIHRoaXMuX291dFt0XSxkZWxldGUgdGhpcy5fc3Vjc1t0XSwtLXRoaXMuX25vZGVDb3VudH1yZXR1cm4gdGhpc30sZlZ0LnByb3RvdHlwZS5zZXRQYXJlbnQ9ZnVuY3Rpb24odCxlKXtpZighdGhpcy5faXNDb21wb3VuZCl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBzZXQgcGFyZW50IGluIGEgbm9uLWNvbXBvdW5kIGdyYXBoIik7aWYoaFZ0LmlzVW5kZWZpbmVkKGUpKWU9cFZ0O2Vsc2V7Zm9yKHZhciBuPWUrPSIiOyFoVnQuaXNVbmRlZmluZWQobik7bj10aGlzLnBhcmVudChuKSlpZihuPT09dCl0aHJvdyBuZXcgRXJyb3IoIlNldHRpbmcgIitlKyIgYXMgcGFyZW50IG9mICIrdCsiIHdvdWxkIGNyZWF0ZSBhIGN5Y2xlIik7dGhpcy5zZXROb2RlKGUpfXJldHVybiB0aGlzLnNldE5vZGUodCksdGhpcy5fcmVtb3ZlRnJvbVBhcmVudHNDaGlsZExpc3QodCksdGhpcy5fcGFyZW50W3RdPWUsdGhpcy5fY2hpbGRyZW5bZV1bdF09ITAsdGhpc30sZlZ0LnByb3RvdHlwZS5fcmVtb3ZlRnJvbVBhcmVudHNDaGlsZExpc3Q9ZnVuY3Rpb24odCl7ZGVsZXRlIHRoaXMuX2NoaWxkcmVuW3RoaXMuX3BhcmVudFt0XV1bdF19LGZWdC5wcm90b3R5cGUucGFyZW50PWZ1bmN0aW9uKHQpe2lmKHRoaXMuX2lzQ29tcG91bmQpe3ZhciBlPXRoaXMuX3BhcmVudFt0XTtpZihlIT09cFZ0KXJldHVybiBlfX0sZlZ0LnByb3RvdHlwZS5jaGlsZHJlbj1mdW5jdGlvbih0KXtpZihoVnQuaXNVbmRlZmluZWQodCkmJih0PXBWdCksdGhpcy5faXNDb21wb3VuZCl7dmFyIGU9dGhpcy5fY2hpbGRyZW5bdF07aWYoZSlyZXR1cm4gaFZ0LmtleXMoZSl9ZWxzZXtpZih0PT09cFZ0KXJldHVybiB0aGlzLm5vZGVzKCk7aWYodGhpcy5oYXNOb2RlKHQpKXJldHVybltdfX0sZlZ0LnByb3RvdHlwZS5wcmVkZWNlc3NvcnM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fcHJlZHNbdF07aWYoZSlyZXR1cm4gaFZ0LmtleXMoZSl9LGZWdC5wcm90b3R5cGUuc3VjY2Vzc29ycz1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9zdWNzW3RdO2lmKGUpcmV0dXJuIGhWdC5rZXlzKGUpfSxmVnQucHJvdG90eXBlLm5laWdoYm9ycz1mdW5jdGlvbih0KXt2YXIgZT10aGlzLnByZWRlY2Vzc29ycyh0KTtpZihlKXJldHVybiBoVnQudW5pb24oZSx0aGlzLnN1Y2Nlc3NvcnModCkpfSxmVnQucHJvdG90eXBlLmlzTGVhZj1mdW5jdGlvbih0KXtyZXR1cm4gMD09PSh0aGlzLmlzRGlyZWN0ZWQoKT90aGlzLnN1Y2Nlc3NvcnModCk6dGhpcy5uZWlnaGJvcnModCkpLmxlbmd0aH0sZlZ0LnByb3RvdHlwZS5maWx0ZXJOb2Rlcz1mdW5jdGlvbih0KXt2YXIgZT1uZXcgdGhpcy5jb25zdHJ1Y3Rvcih7ZGlyZWN0ZWQ6dGhpcy5faXNEaXJlY3RlZCxtdWx0aWdyYXBoOnRoaXMuX2lzTXVsdGlncmFwaCxjb21wb3VuZDp0aGlzLl9pc0NvbXBvdW5kfSk7ZS5zZXRHcmFwaCh0aGlzLmdyYXBoKCkpO3ZhciBuPXRoaXM7aFZ0LmVhY2godGhpcy5fbm9kZXMsKGZ1bmN0aW9uKG4saSl7dChpKSYmZS5zZXROb2RlKGksbil9KSksaFZ0LmVhY2godGhpcy5fZWRnZU9ianMsKGZ1bmN0aW9uKHQpe2UuaGFzTm9kZSh0LnYpJiZlLmhhc05vZGUodC53KSYmZS5zZXRFZGdlKHQsbi5lZGdlKHQpKX0pKTt2YXIgaT17fTtmdW5jdGlvbiByKHQpe3ZhciBvPW4ucGFyZW50KHQpO3JldHVybiB2b2lkIDA9PT1vfHxlLmhhc05vZGUobyk/KGlbdF09byxvKTpvIGluIGk/aVtvXTpyKG8pfXJldHVybiB0aGlzLl9pc0NvbXBvdW5kJiZoVnQuZWFjaChlLm5vZGVzKCksKGZ1bmN0aW9uKHQpe2Uuc2V0UGFyZW50KHQscih0KSl9KSksZX0sZlZ0LnByb3RvdHlwZS5zZXREZWZhdWx0RWRnZUxhYmVsPWZ1bmN0aW9uKHQpe3JldHVybiBoVnQuaXNGdW5jdGlvbih0KXx8KHQ9aFZ0LmNvbnN0YW50KHQpKSx0aGlzLl9kZWZhdWx0RWRnZUxhYmVsRm49dCx0aGlzfSxmVnQucHJvdG90eXBlLmVkZ2VDb3VudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9lZGdlQ291bnR9LGZWdC5wcm90b3R5cGUuZWRnZXM9ZnVuY3Rpb24oKXtyZXR1cm4gaFZ0LnZhbHVlcyh0aGlzLl9lZGdlT2Jqcyl9LGZWdC5wcm90b3R5cGUuc2V0UGF0aD1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMsaT1hcmd1bWVudHM7cmV0dXJuIGhWdC5yZWR1Y2UodCwoZnVuY3Rpb24odCxyKXtyZXR1cm4gaS5sZW5ndGg+MT9uLnNldEVkZ2UodCxyLGUpOm4uc2V0RWRnZSh0LHIpLHJ9KSksdGhpc30sZlZ0LnByb3RvdHlwZS5zZXRFZGdlPWZ1bmN0aW9uKCl7dmFyIHQsZSxuLGkscj0hMSxvPWFyZ3VtZW50c1swXTsib2JqZWN0Ij09dHlwZW9mIG8mJm51bGwhPT1vJiYidiJpbiBvPyh0PW8udixlPW8udyxuPW8ubmFtZSwyPT09YXJndW1lbnRzLmxlbmd0aCYmKGk9YXJndW1lbnRzWzFdLHI9ITApKToodD1vLGU9YXJndW1lbnRzWzFdLG49YXJndW1lbnRzWzNdLGFyZ3VtZW50cy5sZW5ndGg+MiYmKGk9YXJndW1lbnRzWzJdLHI9ITApKSx0PSIiK3QsZT0iIitlLGhWdC5pc1VuZGVmaW5lZChuKXx8KG49IiIrbik7dmFyIGE9X1Z0KHRoaXMuX2lzRGlyZWN0ZWQsdCxlLG4pO2lmKGhWdC5oYXModGhpcy5fZWRnZUxhYmVscyxhKSlyZXR1cm4gciYmKHRoaXMuX2VkZ2VMYWJlbHNbYV09aSksdGhpcztpZighaFZ0LmlzVW5kZWZpbmVkKG4pJiYhdGhpcy5faXNNdWx0aWdyYXBoKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IHNldCBhIG5hbWVkIGVkZ2Ugd2hlbiBpc011bHRpZ3JhcGggPSBmYWxzZSIpO3RoaXMuc2V0Tm9kZSh0KSx0aGlzLnNldE5vZGUoZSksdGhpcy5fZWRnZUxhYmVsc1thXT1yP2k6dGhpcy5fZGVmYXVsdEVkZ2VMYWJlbEZuKHQsZSxuKTt2YXIgcz15VnQodGhpcy5faXNEaXJlY3RlZCx0LGUsbik7cmV0dXJuIHQ9cy52LGU9cy53LE9iamVjdC5mcmVlemUocyksdGhpcy5fZWRnZU9ianNbYV09cyxtVnQodGhpcy5fcHJlZHNbZV0sdCksbVZ0KHRoaXMuX3N1Y3NbdF0sZSksdGhpcy5faW5bZV1bYV09cyx0aGlzLl9vdXRbdF1bYV09cyx0aGlzLl9lZGdlQ291bnQrKyx0aGlzfSxmVnQucHJvdG90eXBlLmVkZ2U9ZnVuY3Rpb24odCxlLG4pe3ZhciBpPTE9PT1hcmd1bWVudHMubGVuZ3RoP3ZWdCh0aGlzLl9pc0RpcmVjdGVkLGFyZ3VtZW50c1swXSk6X1Z0KHRoaXMuX2lzRGlyZWN0ZWQsdCxlLG4pO3JldHVybiB0aGlzLl9lZGdlTGFiZWxzW2ldfSxmVnQucHJvdG90eXBlLmhhc0VkZ2U9ZnVuY3Rpb24odCxlLG4pe3ZhciBpPTE9PT1hcmd1bWVudHMubGVuZ3RoP3ZWdCh0aGlzLl9pc0RpcmVjdGVkLGFyZ3VtZW50c1swXSk6X1Z0KHRoaXMuX2lzRGlyZWN0ZWQsdCxlLG4pO3JldHVybiBoVnQuaGFzKHRoaXMuX2VkZ2VMYWJlbHMsaSl9LGZWdC5wcm90b3R5cGUucmVtb3ZlRWRnZT1mdW5jdGlvbih0LGUsbil7dmFyIGk9MT09PWFyZ3VtZW50cy5sZW5ndGg/dlZ0KHRoaXMuX2lzRGlyZWN0ZWQsYXJndW1lbnRzWzBdKTpfVnQodGhpcy5faXNEaXJlY3RlZCx0LGUsbikscj10aGlzLl9lZGdlT2Jqc1tpXTtyZXR1cm4gciYmKHQ9ci52LGU9ci53LGRlbGV0ZSB0aGlzLl9lZGdlTGFiZWxzW2ldLGRlbGV0ZSB0aGlzLl9lZGdlT2Jqc1tpXSxnVnQodGhpcy5fcHJlZHNbZV0sdCksZ1Z0KHRoaXMuX3N1Y3NbdF0sZSksZGVsZXRlIHRoaXMuX2luW2VdW2ldLGRlbGV0ZSB0aGlzLl9vdXRbdF1baV0sdGhpcy5fZWRnZUNvdW50LS0pLHRoaXN9LGZWdC5wcm90b3R5cGUuaW5FZGdlcz1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuX2luW3RdO2lmKG4pe3ZhciBpPWhWdC52YWx1ZXMobik7cmV0dXJuIGU/aFZ0LmZpbHRlcihpLChmdW5jdGlvbih0KXtyZXR1cm4gdC52PT09ZX0pKTppfX0sZlZ0LnByb3RvdHlwZS5vdXRFZGdlcz1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuX291dFt0XTtpZihuKXt2YXIgaT1oVnQudmFsdWVzKG4pO3JldHVybiBlP2hWdC5maWx0ZXIoaSwoZnVuY3Rpb24odCl7cmV0dXJuIHQudz09PWV9KSk6aX19LGZWdC5wcm90b3R5cGUubm9kZUVkZ2VzPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5pbkVkZ2VzKHQsZSk7aWYobilyZXR1cm4gbi5jb25jYXQodGhpcy5vdXRFZGdlcyh0LGUpKX07dmFyIGJWdD17R3JhcGg6ZFZ0LHZlcnNpb246IjIuMS44In0seFZ0PXVWdCx3VnQ9ZFZ0LFNWdD17d3JpdGU6ZnVuY3Rpb24gTVZ0KHQpe3ZhciBlPXtvcHRpb25zOntkaXJlY3RlZDp0LmlzRGlyZWN0ZWQoKSxtdWx0aWdyYXBoOnQuaXNNdWx0aWdyYXBoKCksY29tcG91bmQ6dC5pc0NvbXBvdW5kKCl9LG5vZGVzOlRWdCh0KSxlZGdlczpDVnQodCl9O3hWdC5pc1VuZGVmaW5lZCh0LmdyYXBoKCkpfHwoZS52YWx1ZT14VnQuY2xvbmUodC5ncmFwaCgpKSk7cmV0dXJuIGV9LHJlYWQ6ZnVuY3Rpb24gRVZ0KHQpe3ZhciBlPW5ldyB3VnQodC5vcHRpb25zKS5zZXRHcmFwaCh0LnZhbHVlKTtyZXR1cm4geFZ0LmVhY2godC5ub2RlcywoZnVuY3Rpb24odCl7ZS5zZXROb2RlKHQudix0LnZhbHVlKSx0LnBhcmVudCYmZS5zZXRQYXJlbnQodC52LHQucGFyZW50KX0pKSx4VnQuZWFjaCh0LmVkZ2VzLChmdW5jdGlvbih0KXtlLnNldEVkZ2Uoe3Y6dC52LHc6dC53LG5hbWU6dC5uYW1lfSx0LnZhbHVlKX0pKSxlfX07ZnVuY3Rpb24gVFZ0KHQpe3JldHVybiB4VnQubWFwKHQubm9kZXMoKSwoZnVuY3Rpb24oZSl7dmFyIG49dC5ub2RlKGUpLGk9dC5wYXJlbnQoZSkscj17djplfTtyZXR1cm4geFZ0LmlzVW5kZWZpbmVkKG4pfHwoci52YWx1ZT1uKSx4VnQuaXNVbmRlZmluZWQoaSl8fChyLnBhcmVudD1pKSxyfSkpfWZ1bmN0aW9uIENWdCh0KXtyZXR1cm4geFZ0Lm1hcCh0LmVkZ2VzKCksKGZ1bmN0aW9uKGUpe3ZhciBuPXQuZWRnZShlKSxpPXt2OmUudix3OmUud307cmV0dXJuIHhWdC5pc1VuZGVmaW5lZChlLm5hbWUpfHwoaS5uYW1lPWUubmFtZSkseFZ0LmlzVW5kZWZpbmVkKG4pfHwoaS52YWx1ZT1uKSxpfSkpfXZhciBBVnQ9dVZ0LGtWdD1mdW5jdGlvbiBMVnQodCl7dmFyIGUsbj17fSxpPVtdO2Z1bmN0aW9uIHIoaSl7QVZ0LmhhcyhuLGkpfHwobltpXT0hMCxlLnB1c2goaSksQVZ0LmVhY2godC5zdWNjZXNzb3JzKGkpLHIpLEFWdC5lYWNoKHQucHJlZGVjZXNzb3JzKGkpLHIpKX1yZXR1cm4gQVZ0LmVhY2godC5ub2RlcygpLChmdW5jdGlvbih0KXtlPVtdLHIodCksZS5sZW5ndGgmJmkucHVzaChlKX0pKSxpfTt2YXIgUFZ0PXVWdCxOVnQ9SVZ0O2Z1bmN0aW9uIElWdCgpe3RoaXMuX2Fycj1bXSx0aGlzLl9rZXlJbmRpY2VzPXt9fUlWdC5wcm90b3R5cGUuc2l6ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcnIubGVuZ3RofSxJVnQucHJvdG90eXBlLmtleXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXJyLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQua2V5fSkpfSxJVnQucHJvdG90eXBlLmhhcz1mdW5jdGlvbih0KXtyZXR1cm4gUFZ0Lmhhcyh0aGlzLl9rZXlJbmRpY2VzLHQpfSxJVnQucHJvdG90eXBlLnByaW9yaXR5PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2tleUluZGljZXNbdF07aWYodm9pZCAwIT09ZSlyZXR1cm4gdGhpcy5fYXJyW2VdLnByaW9yaXR5fSxJVnQucHJvdG90eXBlLm1pbj1mdW5jdGlvbigpe2lmKDA9PT10aGlzLnNpemUoKSl0aHJvdyBuZXcgRXJyb3IoIlF1ZXVlIHVuZGVyZmxvdyIpO3JldHVybiB0aGlzLl9hcnJbMF0ua2V5fSxJVnQucHJvdG90eXBlLmFkZD1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuX2tleUluZGljZXM7aWYodD1TdHJpbmcodCksIVBWdC5oYXMobix0KSl7dmFyIGk9dGhpcy5fYXJyLHI9aS5sZW5ndGg7cmV0dXJuIG5bdF09cixpLnB1c2goe2tleTp0LHByaW9yaXR5OmV9KSx0aGlzLl9kZWNyZWFzZShyKSwhMH1yZXR1cm4hMX0sSVZ0LnByb3RvdHlwZS5yZW1vdmVNaW49ZnVuY3Rpb24oKXt0aGlzLl9zd2FwKDAsdGhpcy5fYXJyLmxlbmd0aC0xKTt2YXIgdD10aGlzLl9hcnIucG9wKCk7cmV0dXJuIGRlbGV0ZSB0aGlzLl9rZXlJbmRpY2VzW3Qua2V5XSx0aGlzLl9oZWFwaWZ5KDApLHQua2V5fSxJVnQucHJvdG90eXBlLmRlY3JlYXNlPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5fa2V5SW5kaWNlc1t0XTtpZihlPnRoaXMuX2FycltuXS5wcmlvcml0eSl0aHJvdyBuZXcgRXJyb3IoIk5ldyBwcmlvcml0eSBpcyBncmVhdGVyIHRoYW4gY3VycmVudCBwcmlvcml0eS4gS2V5OiAiK3QrIiBPbGQ6ICIrdGhpcy5fYXJyW25dLnByaW9yaXR5KyIgTmV3OiAiK2UpO3RoaXMuX2FycltuXS5wcmlvcml0eT1lLHRoaXMuX2RlY3JlYXNlKG4pfSxJVnQucHJvdG90eXBlLl9oZWFwaWZ5PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2FycixuPTIqdCxpPW4rMSxyPXQ7bjxlLmxlbmd0aCYmKHI9ZVtuXS5wcmlvcml0eTxlW3JdLnByaW9yaXR5P246cixpPGUubGVuZ3RoJiYocj1lW2ldLnByaW9yaXR5PGVbcl0ucHJpb3JpdHk/aTpyKSxyIT09dCYmKHRoaXMuX3N3YXAodCxyKSx0aGlzLl9oZWFwaWZ5KHIpKSl9LElWdC5wcm90b3R5cGUuX2RlY3JlYXNlPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxuPXRoaXMuX2FycixpPW5bdF0ucHJpb3JpdHk7MCE9PXQmJiEobltlPXQ+PjFdLnByaW9yaXR5PGkpOyl0aGlzLl9zd2FwKHQsZSksdD1lfSxJVnQucHJvdG90eXBlLl9zd2FwPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5fYXJyLGk9dGhpcy5fa2V5SW5kaWNlcyxyPW5bdF0sbz1uW2VdO25bdF09byxuW2VdPXIsaVtvLmtleV09dCxpW3Iua2V5XT1lfTt2YXIgUlZ0PU5WdCxPVnQ9ZnVuY3Rpb24gelZ0KHQsZSxuLGkpe3JldHVybihmdW5jdGlvbiByKHQsZSxuLGkpe3ZhciByLG8sYT17fSxzPW5ldyBSVnQsbD1mdW5jdGlvbih0KXt2YXIgZT10LnYhPT1yP3Qudjp0LncsaT1hW2VdLGw9bih0KSxjPW8uZGlzdGFuY2UrbDtpZihsPDApdGhyb3cgbmV3IEVycm9yKCJkaWprc3RyYSBkb2VzIG5vdCBhbGxvdyBuZWdhdGl2ZSBlZGdlIHdlaWdodHMuIEJhZCBlZGdlOiAiK3QrIiBXZWlnaHQ6ICIrbCk7YzxpLmRpc3RhbmNlJiYoaS5kaXN0YW5jZT1jLGkucHJlZGVjZXNzb3I9cixzLmRlY3JlYXNlKGUsYykpfTt0Lm5vZGVzKCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIG49dD09PWU/MDpOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7YVt0XT17ZGlzdGFuY2U6bn0scy5hZGQodCxuKX0pKTtmb3IoO3Muc2l6ZSgpPjAmJihyPXMucmVtb3ZlTWluKCksKG89YVtyXSkuZGlzdGFuY2UhPT1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpOylpKHIpLmZvckVhY2gobCk7cmV0dXJuIGF9KSh0LFN0cmluZyhlKSxufHxEVnQsaXx8ZnVuY3Rpb24oZSl7cmV0dXJuIHQub3V0RWRnZXMoZSl9KX0sRFZ0PXVWdC5jb25zdGFudCgxKTt2YXIgQlZ0PU9WdCxIVnQ9dVZ0LEZWdD1mdW5jdGlvbiBWVnQodCxlLG4pe3JldHVybiBIVnQudHJhbnNmb3JtKHQubm9kZXMoKSwoZnVuY3Rpb24oaSxyKXtpW3JdPUJWdCh0LHIsZSxuKX0pLHt9KX07dmFyIFVWdD11VnQsalZ0PWZ1bmN0aW9uIEdWdCh0KXt2YXIgZT0wLG49W10saT17fSxyPVtdO2Z1bmN0aW9uIG8oYSl7dmFyIHM9aVthXT17b25TdGFjazohMCxsb3dsaW5rOmUsaW5kZXg6ZSsrfTtpZihuLnB1c2goYSksdC5zdWNjZXNzb3JzKGEpLmZvckVhY2goKGZ1bmN0aW9uKHQpe1VWdC5oYXMoaSx0KT9pW3RdLm9uU3RhY2smJihzLmxvd2xpbms9TWF0aC5taW4ocy5sb3dsaW5rLGlbdF0uaW5kZXgpKToobyh0KSxzLmxvd2xpbms9TWF0aC5taW4ocy5sb3dsaW5rLGlbdF0ubG93bGluaykpfSkpLHMubG93bGluaz09PXMuaW5kZXgpe3ZhciBsLGM9W107ZG97bD1uLnBvcCgpLGlbbF0ub25TdGFjaz0hMSxjLnB1c2gobCl9d2hpbGUoYSE9PWwpO3IucHVzaChjKX19cmV0dXJuIHQubm9kZXMoKS5mb3JFYWNoKChmdW5jdGlvbih0KXtVVnQuaGFzKGksdCl8fG8odCl9KSkscn07dmFyIFdWdD11VnQscVZ0PWpWdCxZVnQ9ZnVuY3Rpb24gWFZ0KHQpe3JldHVybiBXVnQuZmlsdGVyKHFWdCh0KSwoZnVuY3Rpb24oZSl7cmV0dXJuIGUubGVuZ3RoPjF8fDE9PT1lLmxlbmd0aCYmdC5oYXNFZGdlKGVbMF0sZVswXSl9KSl9O3ZhciAkVnQ9ZnVuY3Rpb24gS1Z0KHQsZSxuKXtyZXR1cm4oZnVuY3Rpb24gaSh0LGUsbil7dmFyIGk9e30scj10Lm5vZGVzKCk7cmV0dXJuIHIuZm9yRWFjaCgoZnVuY3Rpb24odCl7aVt0XT17fSxpW3RdW3RdPXtkaXN0YW5jZTowfSxyLmZvckVhY2goKGZ1bmN0aW9uKGUpe3QhPT1lJiYoaVt0XVtlXT17ZGlzdGFuY2U6TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZfSl9KSksbih0KS5mb3JFYWNoKChmdW5jdGlvbihuKXt2YXIgcj1uLnY9PT10P24udzpuLnYsbz1lKG4pO2lbdF1bcl09e2Rpc3RhbmNlOm8scHJlZGVjZXNzb3I6dH19KSl9KSksci5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZT1pW3RdO3IuZm9yRWFjaCgoZnVuY3Rpb24obil7dmFyIG89aVtuXTtyLmZvckVhY2goKGZ1bmN0aW9uKG4pe3ZhciBpPWVbbl0scj1vW25dLGE9b1t0XS5kaXN0YW5jZStpLmRpc3RhbmNlO2E8ci5kaXN0YW5jZSYmKHIuZGlzdGFuY2U9YSxyLnByZWRlY2Vzc29yPWkucHJlZGVjZXNzb3IpfSkpfSkpfSkpLGl9KSh0LGV8fFpWdCxufHxmdW5jdGlvbihlKXtyZXR1cm4gdC5vdXRFZGdlcyhlKX0pfSxaVnQ9dVZ0LmNvbnN0YW50KDEpO3ZhciBKVnQ9dVZ0LFFWdD10VXQ7ZnVuY3Rpb24gdFV0KHQpe3ZhciBlPXt9LG49e30saT1bXTtpZihKVnQuZWFjaCh0LnNpbmtzKCksKGZ1bmN0aW9uIHIobyl7aWYoSlZ0LmhhcyhuLG8pKXRocm93IG5ldyBlVXQ7SlZ0LmhhcyhlLG8pfHwobltvXT0hMCxlW29dPSEwLEpWdC5lYWNoKHQucHJlZGVjZXNzb3JzKG8pLHIpLGRlbGV0ZSBuW29dLGkucHVzaChvKSl9KSksSlZ0LnNpemUoZSkhPT10Lm5vZGVDb3VudCgpKXRocm93IG5ldyBlVXQ7cmV0dXJuIGl9ZnVuY3Rpb24gZVV0KCl7fXRVdC5DeWNsZUV4Y2VwdGlvbj1lVXQsZVV0LnByb3RvdHlwZT1uZXcgRXJyb3I7dmFyIG5VdD1RVnQ7dmFyIGlVdD11VnQsclV0PWZ1bmN0aW9uIG9VdCh0LGUsbil7aVV0LmlzQXJyYXkoZSl8fChlPVtlXSk7dmFyIGk9KHQuaXNEaXJlY3RlZCgpP3Quc3VjY2Vzc29yczp0Lm5laWdoYm9ycykuYmluZCh0KSxyPVtdLG89e307cmV0dXJuIGlVdC5lYWNoKGUsKGZ1bmN0aW9uKGUpe2lmKCF0Lmhhc05vZGUoZSkpdGhyb3cgbmV3IEVycm9yKCJHcmFwaCBkb2VzIG5vdCBoYXZlIG5vZGU6ICIrZSk7YVV0KHQsZSwicG9zdCI9PT1uLG8saSxyKX0pKSxyfTtmdW5jdGlvbiBhVXQodCxlLG4saSxyLG8pe2lVdC5oYXMoaSxlKXx8KGlbZV09ITAsbnx8by5wdXNoKGUpLGlVdC5lYWNoKHIoZSksKGZ1bmN0aW9uKGUpe2FVdCh0LGUsbixpLHIsbyl9KSksbiYmby5wdXNoKGUpKX12YXIgc1V0PXJVdDt2YXIgbFV0PXJVdDt2YXIgY1V0PXVWdCx1VXQ9ZFZ0LGhVdD1OVnQ7dmFyIGRVdCxwVXQ9e0dyYXBoOmJWdC5HcmFwaCxqc29uOlNWdCxhbGc6e2NvbXBvbmVudHM6a1Z0LGRpamtzdHJhOk9WdCxkaWprc3RyYUFsbDpGVnQsZmluZEN5Y2xlczpZVnQsZmxveWRXYXJzaGFsbDokVnQsaXNBY3ljbGljOmZ1bmN0aW9uIGZVdCh0KXt0cnl7blV0KHQpfWNhdGNoKHQpe2lmKHQgaW5zdGFuY2VvZiBuVXQuQ3ljbGVFeGNlcHRpb24pcmV0dXJuITE7dGhyb3cgdH1yZXR1cm4hMH0scG9zdG9yZGVyOmZ1bmN0aW9uIG1VdCh0LGUpe3JldHVybiBzVXQodCxlLCJwb3N0Iil9LHByZW9yZGVyOmZ1bmN0aW9uIGdVdCh0LGUpe3JldHVybiBsVXQodCxlLCJwcmUiKX0scHJpbTpmdW5jdGlvbiBfVXQodCxlKXt2YXIgbixpPW5ldyB1VXQscj17fSxvPW5ldyBoVXQ7ZnVuY3Rpb24gYSh0KXt2YXIgaT10LnY9PT1uP3Qudzp0LnYsYT1vLnByaW9yaXR5KGkpO2lmKHZvaWQgMCE9PWEpe3ZhciBzPWUodCk7czxhJiYocltpXT1uLG8uZGVjcmVhc2UoaSxzKSl9fWlmKDA9PT10Lm5vZGVDb3VudCgpKXJldHVybiBpO2NVdC5lYWNoKHQubm9kZXMoKSwoZnVuY3Rpb24odCl7by5hZGQodCxOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpLGkuc2V0Tm9kZSh0KX0pKSxvLmRlY3JlYXNlKHQubm9kZXMoKVswXSwwKTt2YXIgcz0hMTtmb3IoO28uc2l6ZSgpPjA7KXtpZihuPW8ucmVtb3ZlTWluKCksY1V0LmhhcyhyLG4pKWkuc2V0RWRnZShuLHJbbl0pO2Vsc2V7aWYocyl0aHJvdyBuZXcgRXJyb3IoIklucHV0IGdyYXBoIGlzIG5vdCBjb25uZWN0ZWQ6ICIrdCk7cz0hMH10Lm5vZGVFZGdlcyhuKS5mb3JFYWNoKGEpfXJldHVybiBpfSx0YXJqYW46alZ0LHRvcHNvcnQ6UVZ0fSx2ZXJzaW9uOmJWdC52ZXJzaW9ufTt0cnl7ZFV0PXBVdH1jYXRjaCh0KXt9ZFV0fHwoZFV0PXdpbmRvdy5ncmFwaGxpYik7dmFyIHlVdD1kVXQsdlV0PWdPdDt2YXIgYlV0PWZ1bmN0aW9uIHhVdCh0KXtyZXR1cm4gdlV0KHQsNSl9LHdVdD1IQXQsU1V0PXlOdCxNVXQ9SVB0LEVVdD1Qa3Q7dmFyIFRVdD1mdW5jdGlvbiBDVXQodCxlLG4pe2lmKCFFVXQobikpcmV0dXJuITE7dmFyIGk9dHlwZW9mIGU7cmV0dXJuISEoIm51bWJlciI9PWk/U1V0KG4pJiZNVXQoZSxuLmxlbmd0aCk6InN0cmluZyI9PWkmJmUgaW4gbikmJndVdChuW2VdLHQpfSxBVXQ9SEF0LGtVdD1UVXQsTFV0PUJOdCxQVXQ9T2JqZWN0LnByb3RvdHlwZSxOVXQ9UFV0Lmhhc093blByb3BlcnR5LElVdD1TRnQoKGZ1bmN0aW9uKHQsZSl7dD1PYmplY3QodCk7dmFyIG49LTEsaT1lLmxlbmd0aCxyPWk+Mj9lWzJdOnZvaWQgMDtmb3IociYma1V0KGVbMF0sZVsxXSxyKSYmKGk9MSk7KytuPGk7KWZvcih2YXIgbz1lW25dLGE9TFV0KG8pLHM9LTEsbD1hLmxlbmd0aDsrK3M8bDspe3ZhciBjPWFbc10sdT10W2NdOyh2b2lkIDA9PT11fHxBVXQodSxQVXRbY10pJiYhTlV0LmNhbGwodCxjKSkmJih0W2NdPW9bY10pfXJldHVybiB0fSkpLFJVdD14QnQsT1V0PXlOdCx6VXQ9U050O3ZhciBEVXQ9L1xzLzt2YXIgQlV0PWZ1bmN0aW9uIEhVdCh0KXtmb3IodmFyIGU9dC5sZW5ndGg7ZS0tJiZEVXQudGVzdCh0LmNoYXJBdChlKSk7KTtyZXR1cm4gZX0sRlV0PS9eXHMrLzt2YXIgVlV0PWZ1bmN0aW9uIFVVdCh0KXtyZXR1cm4gdD90LnNsaWNlKDAsQlV0KHQpKzEpLnJlcGxhY2UoRlV0LCIiKTp0fSxqVXQ9UGt0LEdVdD10RHQsV1V0PS9eWy0rXTB4WzAtOWEtZl0rJC9pLHFVdD0vXjBiWzAxXSskL2ksWVV0PS9eMG9bMC03XSskL2ksWFV0PXBhcnNlSW50O3ZhciAkVXQ9ZnVuY3Rpb24gS1V0KHQpe2lmKCJudW1iZXIiPT10eXBlb2YgdClyZXR1cm4gdDtpZihHVXQodCkpcmV0dXJuIE5hTjtpZihqVXQodCkpe3ZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiB0LnZhbHVlT2Y/dC52YWx1ZU9mKCk6dDt0PWpVdChlKT9lKyIiOmV9aWYoInN0cmluZyIhPXR5cGVvZiB0KXJldHVybiAwPT09dD90Oit0O3Q9VlV0KHQpO3ZhciBuPXFVdC50ZXN0KHQpO3JldHVybiBufHxZVXQudGVzdCh0KT9YVXQodC5zbGljZSgyKSxuPzI6OCk6V1V0LnRlc3QodCk/TmFOOit0fSxaVXQ9MS8wO3ZhciBKVXQ9ZnVuY3Rpb24gUVV0KHQpe3JldHVybiB0Pyh0PSRVdCh0KSk9PT1aVXR8fHQ9PT0tMS8wPzE3OTc2OTMxMzQ4NjIzMTU3ZTI5MioodDwwPy0xOjEpOnQ9PXQ/dDowOjA9PT10P3Q6MH0sdGp0PUpVdDt2YXIgZWp0PUVGdCxuanQ9eEJ0LGlqdD1mdW5jdGlvbiByanQodCl7dmFyIGU9dGp0KHQpLG49ZSUxO3JldHVybiBlPT1lP24/ZS1uOmU6MH0sb2p0PU1hdGgubWF4O3ZhciBhanQ9KGZ1bmN0aW9uIGxqdCh0KXtyZXR1cm4gZnVuY3Rpb24oZSxuLGkpe3ZhciByPU9iamVjdChlKTtpZighT1V0KGUpKXt2YXIgbz1SVXQobik7ZT16VXQoZSksbj1mdW5jdGlvbih0KXtyZXR1cm4gbyhyW3RdLHQscil9fXZhciBhPXQoZSxuLGkpO3JldHVybiBhPi0xP3Jbbz9lW2FdOmFdOnZvaWQgMH19KSgoZnVuY3Rpb24gc2p0KHQsZSxuKXt2YXIgaT1udWxsPT10PzA6dC5sZW5ndGg7aWYoIWkpcmV0dXJuLTE7dmFyIHI9bnVsbD09bj8wOmlqdChuKTtyZXR1cm4gcjwwJiYocj1vanQoaStyLDApKSxlanQodCxuanQoZSkscil9KSksY2p0PWNGdDt2YXIgdWp0PWZ1bmN0aW9uIGhqdCh0KXtyZXR1cm4obnVsbD09dD8wOnQubGVuZ3RoKT9janQodCwxKTpbXX0sZGp0PXdPdCxwanQ9Uk90LGZqdD1CTnQ7dmFyIG1qdD1mdW5jdGlvbiBnanQodCxlKXtyZXR1cm4gbnVsbD09dD90OmRqdCh0LHBqdChlKSxmanQpfTt2YXIgX2p0PWZ1bmN0aW9uIHlqdCh0KXt2YXIgZT1udWxsPT10PzA6dC5sZW5ndGg7cmV0dXJuIGU/dFtlLTFdOnZvaWQgMH0sdmp0PXJQdCxianQ9VE90LHhqdD14QnQ7dmFyIHdqdD1mdW5jdGlvbiBTanQodCxlKXt2YXIgbj17fTtyZXR1cm4gZT14anQoZSksYmp0KHQsKGZ1bmN0aW9uKHQsaSxyKXt2anQobixpLGUodCxpLHIpKX0pKSxufSxNanQ9dER0O3ZhciBFanQ9ZnVuY3Rpb24gVGp0KHQsZSxuKXtmb3IodmFyIGk9LTEscj10Lmxlbmd0aDsrK2k8cjspe3ZhciBvPXRbaV0sYT1lKG8pO2lmKG51bGwhPWEmJih2b2lkIDA9PT1zP2E9PWEmJiFNanQoYSk6bihhLHMpKSl2YXIgcz1hLGw9b31yZXR1cm4gbH07dmFyIENqdD1FanQsQWp0PWZ1bmN0aW9uIGtqdCh0LGUpe3JldHVybiB0PmV9LExqdD1QT3Q7dmFyIFBqdD1mdW5jdGlvbiBOanQodCl7cmV0dXJuIHQmJnQubGVuZ3RoP0NqdCh0LExqdCxBanQpOnZvaWQgMH0sSWp0PXJQdCxSanQ9SEF0O3ZhciBPanQ9ZnVuY3Rpb24gemp0KHQsZSxuKXsodm9pZCAwIT09biYmIVJqdCh0W2VdLG4pfHx2b2lkIDA9PT1uJiYhKGUgaW4gdCkpJiZJanQodCxlLG4pfSxEanQ9a2t0LEJqdD1zSXQsSGp0PV9QdCxGanQ9RnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nLFZqdD1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LFVqdD1GanQuY2FsbChPYmplY3QpO3ZhciBqanQ9ZnVuY3Rpb24gR2p0KHQsZSl7aWYoKCJjb25zdHJ1Y3RvciIhPT1lfHwiZnVuY3Rpb24iIT10eXBlb2YgdFtlXSkmJiJfX3Byb3RvX18iIT1lKXJldHVybiB0W2VdfSxXanQ9cFB0LHFqdD1CTnQ7dmFyIFlqdD1PanQsWGp0PUdOdC5leHBvcnRzLCRqdD11UnQsS2p0PVdOdCxaanQ9QVJ0LEpqdD1DUHQsUWp0PUFQdCx0R3Q9S0Z0LGVHdD1rUHQuZXhwb3J0cyxuR3Q9emt0LGlHdD1Qa3Qsckd0PWZ1bmN0aW9uIG9HdCh0KXtpZighSGp0KHQpfHwiW29iamVjdCBPYmplY3RdIiE9RGp0KHQpKXJldHVybiExO3ZhciBlPUJqdCh0KTtpZihudWxsPT09ZSlyZXR1cm4hMDt2YXIgbj1WanQuY2FsbChlLCJjb25zdHJ1Y3RvciIpJiZlLmNvbnN0cnVjdG9yO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBuJiZuIGluc3RhbmNlb2YgbiYmRmp0LmNhbGwobik9PVVqdH0sYUd0PSRQdCxzR3Q9amp0LGxHdD1mdW5jdGlvbiBjR3QodCl7cmV0dXJuIFdqdCh0LHFqdCh0KSl9O3ZhciB1R3Q9Skx0LGhHdD1PanQsZEd0PXdPdCxwR3Q9ZnVuY3Rpb24gZkd0KHQsZSxuLGkscixvLGEpe3ZhciBzPXNHdCh0LG4pLGw9c0d0KGUsbiksYz1hLmdldChsKTtpZihjKVlqdCh0LG4sYyk7ZWxzZXt2YXIgdT1vP28ocyxsLG4rIiIsdCxlLGEpOnZvaWQgMCxoPXZvaWQgMD09PXU7aWYoaCl7dmFyIGQ9UWp0KGwpLHA9IWQmJmVHdChsKSxmPSFkJiYhcCYmYUd0KGwpO3U9bCxkfHxwfHxmP1FqdChzKT91PXM6dEd0KHMpP3U9S2p0KHMpOnA/KGg9ITEsdT1YanQobCwhMCkpOmY/KGg9ITEsdT0kanQobCwhMCkpOnU9W106ckd0KGwpfHxKanQobCk/KHU9cyxKanQocyk/dT1sR3Qocyk6aUd0KHMpJiYhbkd0KHMpfHwodT1aanQobCkpKTpoPSExfWgmJihhLnNldChsLHUpLHIodSxsLGksbyxhKSxhLmRlbGV0ZShsKSksWWp0KHQsbix1KX19LG1HdD1Qa3QsZ0d0PUJOdCxfR3Q9amp0O3ZhciB5R3Q9U0Z0LHZHdD1UVXQ7dmFyIGJHdD1mdW5jdGlvbiB0KGUsbixpLHIsbyl7ZSE9PW4mJmRHdChuLChmdW5jdGlvbihhLHMpe2lmKG98fChvPW5ldyB1R3QpLG1HdChhKSlwR3QoZSxuLHMsaSx0LHIsbyk7ZWxzZXt2YXIgbD1yP3IoX0d0KGUscyksYSxzKyIiLGUsbixvKTp2b2lkIDA7dm9pZCAwPT09bCYmKGw9YSksaEd0KGUscyxsKX19KSxnR3QpfSx4R3Q9KGZ1bmN0aW9uIHdHdCh0KXtyZXR1cm4geUd0KChmdW5jdGlvbihlLG4pe3ZhciBpPS0xLHI9bi5sZW5ndGgsbz1yPjE/bltyLTFdOnZvaWQgMCxhPXI+Mj9uWzJdOnZvaWQgMDtmb3Iobz10Lmxlbmd0aD4zJiYiZnVuY3Rpb24iPT10eXBlb2Ygbz8oci0tLG8pOnZvaWQgMCxhJiZ2R3QoblswXSxuWzFdLGEpJiYobz1yPDM/dm9pZCAwOm8scj0xKSxlPU9iamVjdChlKTsrK2k8cjspe3ZhciBzPW5baV07cyYmdChlLHMsaSxvKX1yZXR1cm4gZX0pKX0pKChmdW5jdGlvbih0LGUsbil7Ykd0KHQsZSxuKX0pKTt2YXIgU0d0PWZ1bmN0aW9uIE1HdCh0LGUpe3JldHVybiB0PGV9LEVHdD1FanQsVEd0PVNHdCxDR3Q9UE90O3ZhciBBR3Q9ZnVuY3Rpb24ga0d0KHQpe3JldHVybiB0JiZ0Lmxlbmd0aD9FR3QodCxDR3QsVEd0KTp2b2lkIDB9LExHdD1FanQsUEd0PXhCdCxOR3Q9U0d0O3ZhciBJR3Q9ZnVuY3Rpb24gUkd0KHQsZSl7cmV0dXJuIHQmJnQubGVuZ3RoP0xHdCh0LFBHdChlKSxOR3QpOnZvaWQgMH0sT0d0PV9rdCx6R3Q9ZnVuY3Rpb24oKXtyZXR1cm4gT0d0LkRhdGUubm93KCl9LERHdD1jUHQsQkd0PWtEdCxIR3Q9SVB0LEZHdD1Qa3QsVkd0PU5EdDt2YXIgVUd0PXpEdCxqR3Q9ZnVuY3Rpb24gR0d0KHQsZSxuLGkpe2lmKCFGR3QodCkpcmV0dXJuIHQ7Zm9yKHZhciByPS0xLG89KGU9Qkd0KGUsdCkpLmxlbmd0aCxhPW8tMSxzPXQ7bnVsbCE9cyYmKytyPG87KXt2YXIgbD1WR3QoZVtyXSksYz1uO2lmKCJfX3Byb3RvX18iPT09bHx8ImNvbnN0cnVjdG9yIj09PWx8fCJwcm90b3R5cGUiPT09bClyZXR1cm4gdDtpZihyIT1hKXt2YXIgdT1zW2xdO3ZvaWQgMD09PShjPWk/aSh1LGwscyk6dm9pZCAwKSYmKGM9Rkd0KHUpP3U6SEd0KGVbcisxXSk/W106e30pfURHdChzLGwsYykscz1zW2xdfXJldHVybiB0fSxXR3Q9a0R0O3ZhciBxR3Q9ZnVuY3Rpb24gWUd0KHQsZSxuKXtmb3IodmFyIGk9LTEscj1lLmxlbmd0aCxvPXt9OysraTxyOyl7dmFyIGE9ZVtpXSxzPVVHdCh0LGEpO24ocyxhKSYmakd0KG8sV0d0KGEsdCkscyl9cmV0dXJuIG99LFhHdD1LRHQ7dmFyICRHdD11anQsS0d0PXBGdCxaR3Q9eUZ0O3ZhciBKR3Q9ZnVuY3Rpb24gUUd0KHQsZSl7cmV0dXJuIHFHdCh0LGUsKGZ1bmN0aW9uKGUsbil7cmV0dXJuIFhHdCh0LG4pfSkpfSx0V3Q9KGZ1bmN0aW9uIGVXdCh0KXtyZXR1cm4gWkd0KEtHdCh0LHZvaWQgMCwkR3QpLHQrIiIpfSkoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIG51bGw9PXQ/e306Skd0KHQsZSl9KSksbld0PU1hdGguY2VpbCxpV3Q9TWF0aC5tYXg7dmFyIHJXdD1mdW5jdGlvbiBvV3QodCxlLG4saSl7Zm9yKHZhciByPS0xLG89aVd0KG5XdCgoZS10KS8obnx8MSkpLDApLGE9QXJyYXkobyk7by0tOylhW2k/bzorK3JdPXQsdCs9bjtyZXR1cm4gYX0sYVd0PVRVdCxzV3Q9SlV0O3ZhciBsV3Q9KGZ1bmN0aW9uIGNXdCh0KXtyZXR1cm4gZnVuY3Rpb24oZSxuLGkpe3JldHVybiBpJiYibnVtYmVyIiE9dHlwZW9mIGkmJmFXdChlLG4saSkmJihuPWk9dm9pZCAwKSxlPXNXdChlKSx2b2lkIDA9PT1uPyhuPWUsZT0wKTpuPXNXdChuKSxpPXZvaWQgMD09PWk/ZTxuPzE6LTE6c1d0KGkpLHJXdChlLG4saSx0KX19KSgpO3ZhciB1V3Q9dER0O3ZhciBoV3Q9ZnVuY3Rpb24gZFd0KHQsZSl7aWYodCE9PWUpe3ZhciBuPXZvaWQgMCE9PXQsaT1udWxsPT09dCxyPXQ9PXQsbz11V3QodCksYT12b2lkIDAhPT1lLHM9bnVsbD09PWUsbD1lPT1lLGM9dVd0KGUpO2lmKCFzJiYhYyYmIW8mJnQ+ZXx8byYmYSYmbCYmIXMmJiFjfHxpJiZhJiZsfHwhbiYmbHx8IXIpcmV0dXJuIDE7aWYoIWkmJiFvJiYhYyYmdDxlfHxjJiZuJiZyJiYhaSYmIW98fHMmJm4mJnJ8fCFhJiZyfHwhbClyZXR1cm4tMX1yZXR1cm4gMH07dmFyIHBXdD1tRHQsZld0PXpEdCxtV3Q9eEJ0LGdXdD1LQnQsX1d0PWZ1bmN0aW9uIHlXdCh0LGUpe3ZhciBuPXQubGVuZ3RoO2Zvcih0LnNvcnQoZSk7bi0tOyl0W25dPXRbbl0udmFsdWU7cmV0dXJuIHR9LHZXdD1qUHQsYld0PWZ1bmN0aW9uIHhXdCh0LGUsbil7Zm9yKHZhciBpPS0xLHI9dC5jcml0ZXJpYSxvPWUuY3JpdGVyaWEsYT1yLmxlbmd0aCxzPW4ubGVuZ3RoOysraTxhOyl7dmFyIGw9aFd0KHJbaV0sb1tpXSk7aWYobClyZXR1cm4gaT49cz9sOmwqKCJkZXNjIj09bltpXT8tMToxKX1yZXR1cm4gdC5pbmRleC1lLmluZGV4fSx3V3Q9UE90LFNXdD1BUHQ7dmFyIE1XdD1jRnQsRVd0PWZ1bmN0aW9uIFRXdCh0LGUsbil7ZT1lLmxlbmd0aD9wV3QoZSwoZnVuY3Rpb24odCl7cmV0dXJuIFNXdCh0KT9mdW5jdGlvbihlKXtyZXR1cm4gZld0KGUsMT09PXQubGVuZ3RoP3RbMF06dCl9OnR9KSk6W3dXdF07dmFyIGk9LTE7ZT1wV3QoZSx2V3QobVd0KSk7dmFyIHI9Z1d0KHQsKGZ1bmN0aW9uKHQsbixyKXtyZXR1cm57Y3JpdGVyaWE6cFd0KGUsKGZ1bmN0aW9uKGUpe3JldHVybiBlKHQpfSkpLGluZGV4OisraSx2YWx1ZTp0fX0pKTtyZXR1cm4gX1d0KHIsKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGJXdCh0LGUsbil9KSl9LENXdD1UVXQsQVd0PVNGdCgoZnVuY3Rpb24odCxlKXtpZihudWxsPT10KXJldHVybltdO3ZhciBuPWUubGVuZ3RoO3JldHVybiBuPjEmJkNXdCh0LGVbMF0sZVsxXSk/ZT1bXTpuPjImJkNXdChlWzBdLGVbMV0sZVsyXSkmJihlPVtlWzBdXSksRVd0KHQsTVd0KGUsMSksW10pfSkpLGtXdD1TRHQsTFd0PTA7dmFyIFBXdD1mdW5jdGlvbiBOV3QodCl7dmFyIGU9KytMV3Q7cmV0dXJuIGtXdCh0KStlfTt2YXIgSVd0PWNQdCxSV3Q9ZnVuY3Rpb24gT1d0KHQsZSxuKXtmb3IodmFyIGk9LTEscj10Lmxlbmd0aCxvPWUubGVuZ3RoLGE9e307KytpPHI7KXtuKGEsdFtpXSxpPG8/ZVtpXTp2b2lkIDApfXJldHVybiBhfTt2YXIgeld0LERXdD1mdW5jdGlvbiBCV3QodCxlKXtyZXR1cm4gUld0KHR8fFtdLGV8fFtdLElXdCl9O3RyeXt6V3Q9e2Nsb25lRGVlcDpiVXQsY29uc3RhbnQ6Yk90LGRlZmF1bHRzOklVdCxlYWNoOlVPdCxmaWx0ZXI6Q0J0LGZpbmQ6YWp0LGZsYXR0ZW46dWp0LGZvckVhY2g6Rk90LGZvckluOm1qdCxoYXM6SUJ0LGlzVW5kZWZpbmVkOnFCdCxsYXN0Ol9qdCxtYXA6bkh0LG1hcFZhbHVlczp3anQsbWF4OlBqdCxtZXJnZTp4R3QsbWluOkFHdCxtaW5CeTpJR3Qsbm93OnpHdCxwaWNrOnRXdCxyYW5nZTpsV3QscmVkdWNlOmhIdCxzb3J0Qnk6QVd0LHVuaXF1ZUlkOlBXdCx2YWx1ZXM6bFZ0LHppcE9iamVjdDpEV3R9fWNhdGNoKHQpe316V3R8fCh6V3Q9d2luZG93Ll8pO3ZhciBIV3Q9eld0LEZXdD1WV3Q7ZnVuY3Rpb24gVld0KCl7dmFyIHQ9e307dC5fbmV4dD10Ll9wcmV2PXQsdGhpcy5fc2VudGluZWw9dH1mdW5jdGlvbiBVV3QodCl7dC5fcHJldi5fbmV4dD10Ll9uZXh0LHQuX25leHQuX3ByZXY9dC5fcHJldixkZWxldGUgdC5fbmV4dCxkZWxldGUgdC5fcHJldn1mdW5jdGlvbiBqV3QodCxlKXtpZigiX25leHQiIT09dCYmIl9wcmV2IiE9PXQpcmV0dXJuIGV9Vld0LnByb3RvdHlwZS5kZXF1ZXVlPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fc2VudGluZWwsZT10Ll9wcmV2O2lmKGUhPT10KXJldHVybiBVV3QoZSksZX0sVld0LnByb3RvdHlwZS5lbnF1ZXVlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3NlbnRpbmVsO3QuX3ByZXYmJnQuX25leHQmJlVXdCh0KSx0Ll9uZXh0PWUuX25leHQsZS5fbmV4dC5fcHJldj10LGUuX25leHQ9dCx0Ll9wcmV2PWV9LFZXdC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9W10sZT10aGlzLl9zZW50aW5lbCxuPWUuX3ByZXY7biE9PWU7KXQucHVzaChKU09OLnN0cmluZ2lmeShuLGpXdCkpLG49bi5fcHJldjtyZXR1cm4iWyIrdC5qb2luKCIsICIpKyJdIn07dmFyIEdXdD1IV3QsV1d0PXlVdC5HcmFwaCxxV3Q9Rld0LFlXdD1mdW5jdGlvbiBYV3QodCxlKXtpZih0Lm5vZGVDb3VudCgpPD0xKXJldHVybltdO3ZhciBuPShmdW5jdGlvbiBpKHQsZSl7dmFyIG49bmV3IFdXdCxpPTAscj0wO0dXdC5mb3JFYWNoKHQubm9kZXMoKSwoZnVuY3Rpb24odCl7bi5zZXROb2RlKHQse3Y6dCxpbjowLG91dDowfSl9KSksR1d0LmZvckVhY2godC5lZGdlcygpLChmdW5jdGlvbih0KXt2YXIgbz1uLmVkZ2UodC52LHQudyl8fDAsYT1lKHQpO24uc2V0RWRnZSh0LnYsdC53LG8rYSkscj1NYXRoLm1heChyLG4ubm9kZSh0LnYpLm91dCs9YSksaT1NYXRoLm1heChpLG4ubm9kZSh0LncpLmluKz1hKX0pKTt2YXIgbz1HV3QucmFuZ2UocitpKzMpLm1hcCgoZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHFXdH0pKSxhPWkrMTtyZXR1cm4gR1d0LmZvckVhY2gobi5ub2RlcygpLChmdW5jdGlvbih0KXtaV3QobyxhLG4ubm9kZSh0KSl9KSkse2dyYXBoOm4sYnVja2V0czpvLHplcm9JZHg6YX19KSh0LGV8fCRXdCkscj0oZnVuY3Rpb24gbyh0LGUsbil7dmFyIGkscj1bXSxvPWVbZS5sZW5ndGgtMV0sYT1lWzBdO2Zvcig7dC5ub2RlQ291bnQoKTspe2Zvcig7aT1hLmRlcXVldWUoKTspS1d0KHQsZSxuLGkpO2Zvcig7aT1vLmRlcXVldWUoKTspS1d0KHQsZSxuLGkpO2lmKHQubm9kZUNvdW50KCkpZm9yKHZhciBzPWUubGVuZ3RoLTI7cz4wOy0tcylpZihpPWVbc10uZGVxdWV1ZSgpKXtyPXIuY29uY2F0KEtXdCh0LGUsbixpLCEwKSk7YnJlYWt9fXJldHVybiByfSkobi5ncmFwaCxuLmJ1Y2tldHMsbi56ZXJvSWR4KTtyZXR1cm4gR1d0LmZsYXR0ZW4oR1d0Lm1hcChyLChmdW5jdGlvbihlKXtyZXR1cm4gdC5vdXRFZGdlcyhlLnYsZS53KX0pKSwhMCl9LCRXdD1HV3QuY29uc3RhbnQoMSk7ZnVuY3Rpb24gS1d0KHQsZSxuLGkscil7dmFyIG89cj9bXTp2b2lkIDA7cmV0dXJuIEdXdC5mb3JFYWNoKHQuaW5FZGdlcyhpLnYpLChmdW5jdGlvbihpKXt2YXIgYT10LmVkZ2UoaSkscz10Lm5vZGUoaS52KTtyJiZvLnB1c2goe3Y6aS52LHc6aS53fSkscy5vdXQtPWEsWld0KGUsbixzKX0pKSxHV3QuZm9yRWFjaCh0Lm91dEVkZ2VzKGkudiksKGZ1bmN0aW9uKGkpe3ZhciByPXQuZWRnZShpKSxvPXQubm9kZShpLncpO28uaW4tPXIsWld0KGUsbixvKX0pKSx0LnJlbW92ZU5vZGUoaS52KSxvfWZ1bmN0aW9uIFpXdCh0LGUsbil7bi5vdXQ/bi5pbj90W24ub3V0LW4uaW4rZV0uZW5xdWV1ZShuKTp0W3QubGVuZ3RoLTFdLmVucXVldWUobik6dFswXS5lbnF1ZXVlKG4pfXZhciBKV3Q9SFd0LFFXdD1ZV3QsdHF0PXtydW46ZnVuY3Rpb24gZXF0KHQpe3ZhciBlPSJncmVlZHkiPT09dC5ncmFwaCgpLmFjeWNsaWNlcj9RV3QodCwoZnVuY3Rpb24gbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHQuZWRnZShlKS53ZWlnaHR9fSkodCkpOihmdW5jdGlvbiBpKHQpe3ZhciBlPVtdLG49e30saT17fTtmdW5jdGlvbiByKG8pe0pXdC5oYXMoaSxvKXx8KGlbb109ITAsbltvXT0hMCxKV3QuZm9yRWFjaCh0Lm91dEVkZ2VzKG8pLChmdW5jdGlvbih0KXtKV3QuaGFzKG4sdC53KT9lLnB1c2godCk6cih0LncpfSkpLGRlbGV0ZSBuW29dKX1yZXR1cm4gSld0LmZvckVhY2godC5ub2RlcygpLHIpLGV9KSh0KTtKV3QuZm9yRWFjaChlLChmdW5jdGlvbihlKXt2YXIgbj10LmVkZ2UoZSk7dC5yZW1vdmVFZGdlKGUpLG4uZm9yd2FyZE5hbWU9ZS5uYW1lLG4ucmV2ZXJzZWQ9ITAsdC5zZXRFZGdlKGUudyxlLnYsbixKV3QudW5pcXVlSWQoInJldiIpKX0pKX0sdW5kbzpmdW5jdGlvbiBucXQodCl7Sld0LmZvckVhY2godC5lZGdlcygpLChmdW5jdGlvbihlKXt2YXIgbj10LmVkZ2UoZSk7aWYobi5yZXZlcnNlZCl7dC5yZW1vdmVFZGdlKGUpO3ZhciBpPW4uZm9yd2FyZE5hbWU7ZGVsZXRlIG4ucmV2ZXJzZWQsZGVsZXRlIG4uZm9yd2FyZE5hbWUsdC5zZXRFZGdlKGUudyxlLnYsbixpKX19KSl9fTt2YXIgaXF0PUhXdCxycXQ9eVV0LkdyYXBoLG9xdD17YWRkRHVtbXlOb2RlOnlxdCxzaW1wbGlmeTpmdW5jdGlvbiBhcXQodCl7dmFyIGU9KG5ldyBycXQpLnNldEdyYXBoKHQuZ3JhcGgoKSk7cmV0dXJuIGlxdC5mb3JFYWNoKHQubm9kZXMoKSwoZnVuY3Rpb24obil7ZS5zZXROb2RlKG4sdC5ub2RlKG4pKX0pKSxpcXQuZm9yRWFjaCh0LmVkZ2VzKCksKGZ1bmN0aW9uKG4pe3ZhciBpPWUuZWRnZShuLnYsbi53KXx8e3dlaWdodDowLG1pbmxlbjoxfSxyPXQuZWRnZShuKTtlLnNldEVkZ2Uobi52LG4udyx7d2VpZ2h0Omkud2VpZ2h0K3Iud2VpZ2h0LG1pbmxlbjpNYXRoLm1heChpLm1pbmxlbixyLm1pbmxlbil9KX0pKSxlfSxhc05vbkNvbXBvdW5kR3JhcGg6ZnVuY3Rpb24gc3F0KHQpe3ZhciBlPW5ldyBycXQoe211bHRpZ3JhcGg6dC5pc011bHRpZ3JhcGgoKX0pLnNldEdyYXBoKHQuZ3JhcGgoKSk7cmV0dXJuIGlxdC5mb3JFYWNoKHQubm9kZXMoKSwoZnVuY3Rpb24obil7dC5jaGlsZHJlbihuKS5sZW5ndGh8fGUuc2V0Tm9kZShuLHQubm9kZShuKSl9KSksaXF0LmZvckVhY2godC5lZGdlcygpLChmdW5jdGlvbihuKXtlLnNldEVkZ2Uobix0LmVkZ2UobikpfSkpLGV9LHN1Y2Nlc3NvcldlaWdodHM6ZnVuY3Rpb24gbHF0KHQpe3ZhciBlPWlxdC5tYXAodC5ub2RlcygpLChmdW5jdGlvbihlKXt2YXIgbj17fTtyZXR1cm4gaXF0LmZvckVhY2godC5vdXRFZGdlcyhlKSwoZnVuY3Rpb24oZSl7bltlLnddPShuW2Uud118fDApK3QuZWRnZShlKS53ZWlnaHR9KSksbn0pKTtyZXR1cm4gaXF0LnppcE9iamVjdCh0Lm5vZGVzKCksZSl9LHByZWRlY2Vzc29yV2VpZ2h0czpmdW5jdGlvbiBjcXQodCl7dmFyIGU9aXF0Lm1hcCh0Lm5vZGVzKCksKGZ1bmN0aW9uKGUpe3ZhciBuPXt9O3JldHVybiBpcXQuZm9yRWFjaCh0LmluRWRnZXMoZSksKGZ1bmN0aW9uKGUpe25bZS52XT0obltlLnZdfHwwKSt0LmVkZ2UoZSkud2VpZ2h0fSkpLG59KSk7cmV0dXJuIGlxdC56aXBPYmplY3QodC5ub2RlcygpLGUpfSxpbnRlcnNlY3RSZWN0OmZ1bmN0aW9uIHVxdCh0LGUpe3ZhciBuLGkscj10Lngsbz10LnksYT1lLngtcixzPWUueS1vLGw9dC53aWR0aC8yLGM9dC5oZWlnaHQvMjtpZighYSYmIXMpdGhyb3cgbmV3IEVycm9yKCJOb3QgcG9zc2libGUgdG8gZmluZCBpbnRlcnNlY3Rpb24gaW5zaWRlIG9mIHRoZSByZWN0YW5nbGUiKTtNYXRoLmFicyhzKSpsPk1hdGguYWJzKGEpKmM/KHM8MCYmKGM9LWMpLG49YyphL3MsaT1jKTooYTwwJiYobD0tbCksbj1sLGk9bCpzL2EpO3JldHVybnt4OnIrbix5Om8raX19LGJ1aWxkTGF5ZXJNYXRyaXg6ZnVuY3Rpb24gaHF0KHQpe3ZhciBlPWlxdC5tYXAoaXF0LnJhbmdlKHZxdCh0KSsxKSwoZnVuY3Rpb24oKXtyZXR1cm5bXX0pKTtyZXR1cm4gaXF0LmZvckVhY2godC5ub2RlcygpLChmdW5jdGlvbihuKXt2YXIgaT10Lm5vZGUobikscj1pLnJhbms7aXF0LmlzVW5kZWZpbmVkKHIpfHwoZVtyXVtpLm9yZGVyXT1uKX0pKSxlfSxub3JtYWxpemVSYW5rczpmdW5jdGlvbiBkcXQodCl7dmFyIGU9aXF0Lm1pbihpcXQubWFwKHQubm9kZXMoKSwoZnVuY3Rpb24oZSl7cmV0dXJuIHQubm9kZShlKS5yYW5rfSkpKTtpcXQuZm9yRWFjaCh0Lm5vZGVzKCksKGZ1bmN0aW9uKG4pe3ZhciBpPXQubm9kZShuKTtpcXQuaGFzKGksInJhbmsiKSYmKGkucmFuay09ZSl9KSl9LHJlbW92ZUVtcHR5UmFua3M6ZnVuY3Rpb24gcHF0KHQpe3ZhciBlPWlxdC5taW4oaXF0Lm1hcCh0Lm5vZGVzKCksKGZ1bmN0aW9uKGUpe3JldHVybiB0Lm5vZGUoZSkucmFua30pKSksbj1bXTtpcXQuZm9yRWFjaCh0Lm5vZGVzKCksKGZ1bmN0aW9uKGkpe3ZhciByPXQubm9kZShpKS5yYW5rLWU7bltyXXx8KG5bcl09W10pLG5bcl0ucHVzaChpKX0pKTt2YXIgaT0wLHI9dC5ncmFwaCgpLm5vZGVSYW5rRmFjdG9yO2lxdC5mb3JFYWNoKG4sKGZ1bmN0aW9uKGUsbil7aXF0LmlzVW5kZWZpbmVkKGUpJiZuJXIhPTA/LS1pOmkmJmlxdC5mb3JFYWNoKGUsKGZ1bmN0aW9uKGUpe3Qubm9kZShlKS5yYW5rKz1pfSkpfSkpfSxhZGRCb3JkZXJOb2RlOmZ1bmN0aW9uIGZxdCh0LGUsbixpKXt2YXIgcj17d2lkdGg6MCxoZWlnaHQ6MH07YXJndW1lbnRzLmxlbmd0aD49NCYmKHIucmFuaz1uLHIub3JkZXI9aSk7cmV0dXJuIHlxdCh0LCJib3JkZXIiLHIsZSl9LG1heFJhbms6dnF0LHBhcnRpdGlvbjpmdW5jdGlvbiBtcXQodCxlKXt2YXIgbj17bGhzOltdLHJoczpbXX07cmV0dXJuIGlxdC5mb3JFYWNoKHQsKGZ1bmN0aW9uKHQpe2UodCk/bi5saHMucHVzaCh0KTpuLnJocy5wdXNoKHQpfSkpLG59LHRpbWU6ZnVuY3Rpb24gZ3F0KHQsZSl7dmFyIG49aXF0Lm5vdygpO3RyeXtyZXR1cm4gZSgpfWZpbmFsbHl7Y29uc29sZS5sb2codCsiIHRpbWU6ICIrKGlxdC5ub3coKS1uKSsibXMiKX19LG5vdGltZTpmdW5jdGlvbiBfcXQodCxlKXtyZXR1cm4gZSgpfX07ZnVuY3Rpb24geXF0KHQsZSxuLGkpe3ZhciByO2Rve3I9aXF0LnVuaXF1ZUlkKGkpfXdoaWxlKHQuaGFzTm9kZShyKSk7cmV0dXJuIG4uZHVtbXk9ZSx0LnNldE5vZGUocixuKSxyfWZ1bmN0aW9uIHZxdCh0KXtyZXR1cm4gaXF0Lm1heChpcXQubWFwKHQubm9kZXMoKSwoZnVuY3Rpb24oZSl7dmFyIG49dC5ub2RlKGUpLnJhbms7aWYoIWlxdC5pc1VuZGVmaW5lZChuKSlyZXR1cm4gbn0pKSl9dmFyIGJxdD1IV3QseHF0PW9xdCx3cXQ9e3J1bjpmdW5jdGlvbiBTcXQodCl7dC5ncmFwaCgpLmR1bW15Q2hhaW5zPVtdLGJxdC5mb3JFYWNoKHQuZWRnZXMoKSwoZnVuY3Rpb24oZSl7IShmdW5jdGlvbiBuKHQsZSl7dmFyIG4saSxyLG89ZS52LGE9dC5ub2RlKG8pLnJhbmsscz1lLncsbD10Lm5vZGUocykucmFuayxjPWUubmFtZSx1PXQuZWRnZShlKSxoPXUubGFiZWxSYW5rO2lmKGw9PT1hKzEpcmV0dXJuO2Zvcih0LnJlbW92ZUVkZ2UoZSkscj0wLCsrYTthPGw7KytyLCsrYSl1LnBvaW50cz1bXSxuPXhxdC5hZGREdW1teU5vZGUodCwiZWRnZSIsaT17d2lkdGg6MCxoZWlnaHQ6MCxlZGdlTGFiZWw6dSxlZGdlT2JqOmUscmFuazphfSwiX2QiKSxhPT09aCYmKGkud2lkdGg9dS53aWR0aCxpLmhlaWdodD11LmhlaWdodCxpLmR1bW15PSJlZGdlLWxhYmVsIixpLmxhYmVscG9zPXUubGFiZWxwb3MpLHQuc2V0RWRnZShvLG4se3dlaWdodDp1LndlaWdodH0sYyksMD09PXImJnQuZ3JhcGgoKS5kdW1teUNoYWlucy5wdXNoKG4pLG89bjt0LnNldEVkZ2UobyxzLHt3ZWlnaHQ6dS53ZWlnaHR9LGMpfSkodCxlKX0pKX0sdW5kbzpmdW5jdGlvbiBNcXQodCl7YnF0LmZvckVhY2godC5ncmFwaCgpLmR1bW15Q2hhaW5zLChmdW5jdGlvbihlKXt2YXIgbixpPXQubm9kZShlKSxyPWkuZWRnZUxhYmVsO2Zvcih0LnNldEVkZ2UoaS5lZGdlT2JqLHIpO2kuZHVtbXk7KW49dC5zdWNjZXNzb3JzKGUpWzBdLHQucmVtb3ZlTm9kZShlKSxyLnBvaW50cy5wdXNoKHt4OmkueCx5OmkueX0pLCJlZGdlLWxhYmVsIj09PWkuZHVtbXkmJihyLng9aS54LHIueT1pLnksci53aWR0aD1pLndpZHRoLHIuaGVpZ2h0PWkuaGVpZ2h0KSxpPXQubm9kZShlPW4pfSkpfX07dmFyIEVxdD1IV3QsVHF0PXtsb25nZXN0UGF0aDpmdW5jdGlvbiBDcXQodCl7dmFyIGU9e307RXF0LmZvckVhY2godC5zb3VyY2VzKCksKGZ1bmN0aW9uIG4oaSl7dmFyIHI9dC5ub2RlKGkpO2lmKEVxdC5oYXMoZSxpKSlyZXR1cm4gci5yYW5rO2VbaV09ITA7dmFyIG89RXF0Lm1pbihFcXQubWFwKHQub3V0RWRnZXMoaSksKGZ1bmN0aW9uKGUpe3JldHVybiBuKGUudyktdC5lZGdlKGUpLm1pbmxlbn0pKSk7cmV0dXJuIG8hPT1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkmJm51bGwhPW98fChvPTApLHIucmFuaz1vfSkpfSxzbGFjazpmdW5jdGlvbiBBcXQodCxlKXtyZXR1cm4gdC5ub2RlKGUudykucmFuay10Lm5vZGUoZS52KS5yYW5rLXQuZWRnZShlKS5taW5sZW59fTt2YXIga3F0PUhXdCxMcXQ9eVV0LkdyYXBoLFBxdD1UcXQuc2xhY2ssTnF0PWZ1bmN0aW9uIElxdCh0KXt2YXIgZSxuLGk9bmV3IExxdCh7ZGlyZWN0ZWQ6ITF9KSxyPXQubm9kZXMoKVswXSxvPXQubm9kZUNvdW50KCk7aS5zZXROb2RlKHIse30pO2Zvcig7UnF0KGksdCk8bzspZT1PcXQoaSx0KSxuPWkuaGFzTm9kZShlLnYpP1BxdCh0LGUpOi1QcXQodCxlKSx6cXQoaSx0LG4pO3JldHVybiBpfTtmdW5jdGlvbiBScXQodCxlKXtyZXR1cm4ga3F0LmZvckVhY2godC5ub2RlcygpLChmdW5jdGlvbiBuKGkpe2txdC5mb3JFYWNoKGUubm9kZUVkZ2VzKGkpLChmdW5jdGlvbihyKXt2YXIgbz1yLnYsYT1pPT09bz9yLnc6bzt0Lmhhc05vZGUoYSl8fFBxdChlLHIpfHwodC5zZXROb2RlKGEse30pLHQuc2V0RWRnZShpLGEse30pLG4oYSkpfSkpfSkpLHQubm9kZUNvdW50KCl9ZnVuY3Rpb24gT3F0KHQsZSl7cmV0dXJuIGtxdC5taW5CeShlLmVkZ2VzKCksKGZ1bmN0aW9uKG4pe2lmKHQuaGFzTm9kZShuLnYpIT09dC5oYXNOb2RlKG4udykpcmV0dXJuIFBxdChlLG4pfSkpfWZ1bmN0aW9uIHpxdCh0LGUsbil7a3F0LmZvckVhY2godC5ub2RlcygpLChmdW5jdGlvbih0KXtlLm5vZGUodCkucmFuays9bn0pKX12YXIgRHF0PUhXdCxCcXQ9TnF0LEhxdD1UcXQuc2xhY2ssRnF0PVRxdC5sb25nZXN0UGF0aCxWcXQ9eVV0LmFsZy5wcmVvcmRlcixVcXQ9eVV0LmFsZy5wb3N0b3JkZXIsanF0PW9xdC5zaW1wbGlmeSxHcXQ9V3F0O2Z1bmN0aW9uIFdxdCh0KXt0PWpxdCh0KSxGcXQodCk7dmFyIGUsbj1CcXQodCk7Zm9yKFhxdChuKSxxcXQobix0KTtlPUtxdChuKTspSnF0KG4sdCxlLFpxdChuLHQsZSkpfWZ1bmN0aW9uIHFxdCh0LGUpe3ZhciBuPVVxdCh0LHQubm9kZXMoKSk7bj1uLnNsaWNlKDAsbi5sZW5ndGgtMSksRHF0LmZvckVhY2gobiwoZnVuY3Rpb24obil7IShmdW5jdGlvbiBpKHQsZSxuKXt2YXIgaT10Lm5vZGUobik7dC5lZGdlKG4saS5wYXJlbnQpLmN1dHZhbHVlPVlxdCh0LGUsbil9KSh0LGUsbil9KSl9ZnVuY3Rpb24gWXF0KHQsZSxuKXt2YXIgaT10Lm5vZGUobikucGFyZW50LHI9ITAsbz1lLmVkZ2UobixpKSxhPTA7cmV0dXJuIG98fChyPSExLG89ZS5lZGdlKGksbikpLGE9by53ZWlnaHQsRHF0LmZvckVhY2goZS5ub2RlRWRnZXMobiksKGZ1bmN0aW9uKG8pe3ZhciBzPW8udj09PW4sbD1zP28udzpvLnY7aWYobCE9PWkpe3ZhciBjPXM9PT1yLHU9ZS5lZGdlKG8pLndlaWdodDtpZihhKz1jP3U6LXUsKGZ1bmN0aW9uIGgodCxlLG4pe3JldHVybiB0Lmhhc0VkZ2UoZSxuKX0pKHQsbixsKSl7dmFyIGQ9dC5lZGdlKG4sbCkuY3V0dmFsdWU7YSs9Yz8tZDpkfX19KSksYX1mdW5jdGlvbiBYcXQodCxlKXthcmd1bWVudHMubGVuZ3RoPDImJihlPXQubm9kZXMoKVswXSksJHF0KHQse30sMSxlKX1mdW5jdGlvbiAkcXQodCxlLG4saSxyKXt2YXIgbz1uLGE9dC5ub2RlKGkpO3JldHVybiBlW2ldPSEwLERxdC5mb3JFYWNoKHQubmVpZ2hib3JzKGkpLChmdW5jdGlvbihyKXtEcXQuaGFzKGUscil8fChuPSRxdCh0LGUsbixyLGkpKX0pKSxhLmxvdz1vLGEubGltPW4rKyxyP2EucGFyZW50PXI6ZGVsZXRlIGEucGFyZW50LG59ZnVuY3Rpb24gS3F0KHQpe3JldHVybiBEcXQuZmluZCh0LmVkZ2VzKCksKGZ1bmN0aW9uKGUpe3JldHVybiB0LmVkZ2UoZSkuY3V0dmFsdWU8MH0pKX1mdW5jdGlvbiBacXQodCxlLG4pe3ZhciBpPW4udixyPW4udztlLmhhc0VkZ2UoaSxyKXx8KGk9bi53LHI9bi52KTt2YXIgbz10Lm5vZGUoaSksYT10Lm5vZGUocikscz1vLGw9ITE7by5saW0+YS5saW0mJihzPWEsbD0hMCk7dmFyIGM9RHF0LmZpbHRlcihlLmVkZ2VzKCksKGZ1bmN0aW9uKGUpe3JldHVybiBsPT09UXF0KHQsdC5ub2RlKGUudikscykmJmwhPT1RcXQodCx0Lm5vZGUoZS53KSxzKX0pKTtyZXR1cm4gRHF0Lm1pbkJ5KGMsKGZ1bmN0aW9uKHQpe3JldHVybiBIcXQoZSx0KX0pKX1mdW5jdGlvbiBKcXQodCxlLG4saSl7dC5yZW1vdmVFZGdlKG4udixuLncpLHQuc2V0RWRnZShpLnYsaS53LHt9KSxYcXQodCkscXF0KHQsZSksKGZ1bmN0aW9uIHIodCxlKXt2YXIgbj1EcXQuZmluZCh0Lm5vZGVzKCksKGZ1bmN0aW9uKHQpe3JldHVybiFlLm5vZGUodCkucGFyZW50fSkpLGk9VnF0KHQsbik7aT1pLnNsaWNlKDEpLERxdC5mb3JFYWNoKGksKGZ1bmN0aW9uKG4pe3ZhciBpPXQubm9kZShuKS5wYXJlbnQscj1lLmVkZ2UobixpKSxvPSExO3J8fChyPWUuZWRnZShpLG4pLG89ITApLGUubm9kZShuKS5yYW5rPWUubm9kZShpKS5yYW5rKyhvP3IubWlubGVuOi1yLm1pbmxlbil9KSl9KSh0LGUpfWZ1bmN0aW9uIFFxdCh0LGUsbil7cmV0dXJuIG4ubG93PD1lLmxpbSYmZS5saW08PW4ubGltfVdxdC5pbml0TG93TGltVmFsdWVzPVhxdCxXcXQuaW5pdEN1dFZhbHVlcz1xcXQsV3F0LmNhbGNDdXRWYWx1ZT1ZcXQsV3F0LmxlYXZlRWRnZT1LcXQsV3F0LmVudGVyRWRnZT1acXQsV3F0LmV4Y2hhbmdlRWRnZXM9SnF0O3ZhciB0WXQ9VHF0Lmxvbmdlc3RQYXRoLGVZdD1OcXQsbll0PUdxdCxpWXQ9ZnVuY3Rpb24gcll0KHQpe3N3aXRjaCh0LmdyYXBoKCkucmFua2VyKXtjYXNlIm5ldHdvcmstc2ltcGxleCI6YVl0KHQpO2JyZWFrO2Nhc2UidGlnaHQtdHJlZSI6IShmdW5jdGlvbiBlKHQpe3RZdCh0KSxlWXQodCl9KSh0KTticmVhaztjYXNlImxvbmdlc3QtcGF0aCI6b1l0KHQpO2JyZWFrO2RlZmF1bHQ6YVl0KHQpfX07dmFyIG9ZdD10WXQ7ZnVuY3Rpb24gYVl0KHQpe25ZdCh0KX12YXIgc1l0PUhXdDt2YXIgbFl0PUhXdCxjWXQ9b3F0O2Z1bmN0aW9uIHVZdCh0LGUsbixpLHIsbyxhKXt2YXIgcz10LmNoaWxkcmVuKGEpO2lmKHMubGVuZ3RoKXt2YXIgbD1jWXQuYWRkQm9yZGVyTm9kZSh0LCJfYnQiKSxjPWNZdC5hZGRCb3JkZXJOb2RlKHQsIl9iYiIpLHU9dC5ub2RlKGEpO3Quc2V0UGFyZW50KGwsYSksdS5ib3JkZXJUb3A9bCx0LnNldFBhcmVudChjLGEpLHUuYm9yZGVyQm90dG9tPWMsbFl0LmZvckVhY2gocywoZnVuY3Rpb24ocyl7dVl0KHQsZSxuLGkscixvLHMpO3ZhciB1PXQubm9kZShzKSxoPXUuYm9yZGVyVG9wP3UuYm9yZGVyVG9wOnMsZD11LmJvcmRlckJvdHRvbT91LmJvcmRlckJvdHRvbTpzLHA9dS5ib3JkZXJUb3A/aToyKmksZj1oIT09ZD8xOnItb1thXSsxO3Quc2V0RWRnZShsLGgse3dlaWdodDpwLG1pbmxlbjpmLG5lc3RpbmdFZGdlOiEwfSksdC5zZXRFZGdlKGQsYyx7d2VpZ2h0OnAsbWlubGVuOmYsbmVzdGluZ0VkZ2U6ITB9KX0pKSx0LnBhcmVudChhKXx8dC5zZXRFZGdlKGUsbCx7d2VpZ2h0OjAsbWlubGVuOnIrb1thXX0pfWVsc2UgYSE9PWUmJnQuc2V0RWRnZShlLGEse3dlaWdodDowLG1pbmxlbjpufSl9dmFyIGhZdD1IV3QsZFl0PW9xdCxwWXQ9ZnVuY3Rpb24gZll0KHQpe2hZdC5mb3JFYWNoKHQuY2hpbGRyZW4oKSwoZnVuY3Rpb24gZShuKXt2YXIgaT10LmNoaWxkcmVuKG4pLHI9dC5ub2RlKG4pO2lmKGkubGVuZ3RoJiZoWXQuZm9yRWFjaChpLGUpLGhZdC5oYXMociwibWluUmFuayIpKXtyLmJvcmRlckxlZnQ9W10sci5ib3JkZXJSaWdodD1bXTtmb3IodmFyIG89ci5taW5SYW5rLGE9ci5tYXhSYW5rKzE7bzxhOysrbyltWXQodCwiYm9yZGVyTGVmdCIsIl9ibCIsbixyLG8pLG1ZdCh0LCJib3JkZXJSaWdodCIsIl9iciIsbixyLG8pfX0pKX07ZnVuY3Rpb24gbVl0KHQsZSxuLGkscixvKXt2YXIgYT1yW2VdW28tMV0scz1kWXQuYWRkRHVtbXlOb2RlKHQsImJvcmRlciIse3dpZHRoOjAsaGVpZ2h0OjAscmFuazpvLGJvcmRlclR5cGU6ZX0sbik7cltlXVtvXT1zLHQuc2V0UGFyZW50KHMsaSksYSYmdC5zZXRFZGdlKGEscyx7d2VpZ2h0OjF9KX12YXIgZ1l0PUhXdDtmdW5jdGlvbiBfWXQodCl7Z1l0LmZvckVhY2godC5ub2RlcygpLChmdW5jdGlvbihlKXt5WXQodC5ub2RlKGUpKX0pKSxnWXQuZm9yRWFjaCh0LmVkZ2VzKCksKGZ1bmN0aW9uKGUpe3lZdCh0LmVkZ2UoZSkpfSkpfWZ1bmN0aW9uIHlZdCh0KXt2YXIgZT10LndpZHRoO3Qud2lkdGg9dC5oZWlnaHQsdC5oZWlnaHQ9ZX1mdW5jdGlvbiB2WXQodCl7dC55PS10Lnl9ZnVuY3Rpb24gYll0KHQpe3ZhciBlPXQueDt0Lng9dC55LHQueT1lfXZhciB4WXQ9SFd0O3ZhciB3WXQ9SFd0O2Z1bmN0aW9uIFNZdCh0LGUsbil7Zm9yKHZhciBpPXdZdC56aXBPYmplY3Qobix3WXQubWFwKG4sKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGV9KSkpLHI9d1l0LmZsYXR0ZW4od1l0Lm1hcChlLChmdW5jdGlvbihlKXtyZXR1cm4gd1l0LnNvcnRCeSh3WXQubWFwKHQub3V0RWRnZXMoZSksKGZ1bmN0aW9uKGUpe3JldHVybntwb3M6aVtlLnddLHdlaWdodDp0LmVkZ2UoZSkud2VpZ2h0fX0pKSwicG9zIil9KSksITApLG89MTtvPG4ubGVuZ3RoOylvPDw9MTt2YXIgYT0yKm8tMTtvLT0xO3ZhciBzPXdZdC5tYXAobmV3IEFycmF5KGEpLChmdW5jdGlvbigpe3JldHVybiAwfSkpLGw9MDtyZXR1cm4gd1l0LmZvckVhY2goci5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZT10LnBvcytvO3NbZV0rPXQud2VpZ2h0O2Zvcih2YXIgbj0wO2U+MDspZSUyJiYobis9c1tlKzFdKSxzW2U9ZS0xPj4xXSs9dC53ZWlnaHQ7bCs9dC53ZWlnaHQqbn0pKSksbH12YXIgTVl0PUhXdDt2YXIgRVl0PUhXdDt2YXIgVFl0PUhXdCxDWXQ9b3F0O2Z1bmN0aW9uIEFZdCh0LGUsbil7Zm9yKHZhciBpO2UubGVuZ3RoJiYoaT1UWXQubGFzdChlKSkuaTw9bjspZS5wb3AoKSx0LnB1c2goaS52cyksbisrO3JldHVybiBufXZhciBrWXQ9SFd0LExZdD1mdW5jdGlvbiBQWXQodCxlKXtyZXR1cm4gTVl0Lm1hcChlLChmdW5jdGlvbihlKXt2YXIgbj10LmluRWRnZXMoZSk7aWYobi5sZW5ndGgpe3ZhciBpPU1ZdC5yZWR1Y2UobiwoZnVuY3Rpb24oZSxuKXt2YXIgaT10LmVkZ2Uobikscj10Lm5vZGUobi52KTtyZXR1cm57c3VtOmUuc3VtK2kud2VpZ2h0KnIub3JkZXIsd2VpZ2h0OmUud2VpZ2h0K2kud2VpZ2h0fX0pLHtzdW06MCx3ZWlnaHQ6MH0pO3JldHVybnt2OmUsYmFyeWNlbnRlcjppLnN1bS9pLndlaWdodCx3ZWlnaHQ6aS53ZWlnaHR9fXJldHVybnt2OmV9fSkpfSxOWXQ9ZnVuY3Rpb24gSVl0KHQsZSl7dmFyIG49e307cmV0dXJuIEVZdC5mb3JFYWNoKHQsKGZ1bmN0aW9uKHQsZSl7dmFyIGk9blt0LnZdPXtpbmRlZ3JlZTowLGluOltdLG91dDpbXSx2czpbdC52XSxpOmV9O0VZdC5pc1VuZGVmaW5lZCh0LmJhcnljZW50ZXIpfHwoaS5iYXJ5Y2VudGVyPXQuYmFyeWNlbnRlcixpLndlaWdodD10LndlaWdodCl9KSksRVl0LmZvckVhY2goZS5lZGdlcygpLChmdW5jdGlvbih0KXt2YXIgZT1uW3Qudl0saT1uW3Qud107RVl0LmlzVW5kZWZpbmVkKGUpfHxFWXQuaXNVbmRlZmluZWQoaSl8fChpLmluZGVncmVlKyssZS5vdXQucHVzaChuW3Qud10pKX0pKSwoZnVuY3Rpb24gaSh0KXt2YXIgZT1bXTtmdW5jdGlvbiBuKHQpe3JldHVybiBmdW5jdGlvbihlKXtlLm1lcmdlZHx8KEVZdC5pc1VuZGVmaW5lZChlLmJhcnljZW50ZXIpfHxFWXQuaXNVbmRlZmluZWQodC5iYXJ5Y2VudGVyKXx8ZS5iYXJ5Y2VudGVyPj10LmJhcnljZW50ZXIpJiYoZnVuY3Rpb24gbih0LGUpe3ZhciBuPTAsaT0wO3Qud2VpZ2h0JiYobis9dC5iYXJ5Y2VudGVyKnQud2VpZ2h0LGkrPXQud2VpZ2h0KTtlLndlaWdodCYmKG4rPWUuYmFyeWNlbnRlciplLndlaWdodCxpKz1lLndlaWdodCk7dC52cz1lLnZzLmNvbmNhdCh0LnZzKSx0LmJhcnljZW50ZXI9bi9pLHQud2VpZ2h0PWksdC5pPU1hdGgubWluKGUuaSx0LmkpLGUubWVyZ2VkPSEwfSkodCxlKX19ZnVuY3Rpb24gaShlKXtyZXR1cm4gZnVuY3Rpb24obil7bi5pbi5wdXNoKGUpLDA9PS0tbi5pbmRlZ3JlZSYmdC5wdXNoKG4pfX1mb3IoO3QubGVuZ3RoOyl7dmFyIHI9dC5wb3AoKTtlLnB1c2gociksRVl0LmZvckVhY2goci5pbi5yZXZlcnNlKCksbihyKSksRVl0LmZvckVhY2goci5vdXQsaShyKSl9cmV0dXJuIEVZdC5tYXAoRVl0LmZpbHRlcihlLChmdW5jdGlvbih0KXtyZXR1cm4hdC5tZXJnZWR9KSksKGZ1bmN0aW9uKHQpe3JldHVybiBFWXQucGljayh0LFsidnMiLCJpIiwiYmFyeWNlbnRlciIsIndlaWdodCJdKX0pKX0pKEVZdC5maWx0ZXIobiwoZnVuY3Rpb24odCl7cmV0dXJuIXQuaW5kZWdyZWV9KSkpfSxSWXQ9ZnVuY3Rpb24gT1l0KHQsZSl7dmFyIG49Q1l0LnBhcnRpdGlvbih0LChmdW5jdGlvbih0KXtyZXR1cm4gVFl0Lmhhcyh0LCJiYXJ5Y2VudGVyIil9KSksaT1uLmxocyxyPVRZdC5zb3J0Qnkobi5yaHMsKGZ1bmN0aW9uKHQpe3JldHVybi10Lml9KSksbz1bXSxhPTAscz0wLGw9MDtpLnNvcnQoKGZ1bmN0aW9uIGModCl7cmV0dXJuIGZ1bmN0aW9uKGUsbil7cmV0dXJuIGUuYmFyeWNlbnRlcjxuLmJhcnljZW50ZXI/LTE6ZS5iYXJ5Y2VudGVyPm4uYmFyeWNlbnRlcj8xOnQ/bi5pLWUuaTplLmktbi5pfX0pKCEhZSkpLGw9QVl0KG8scixsKSxUWXQuZm9yRWFjaChpLChmdW5jdGlvbih0KXtsKz10LnZzLmxlbmd0aCxvLnB1c2godC52cyksYSs9dC5iYXJ5Y2VudGVyKnQud2VpZ2h0LHMrPXQud2VpZ2h0LGw9QVl0KG8scixsKX0pKTt2YXIgdT17dnM6VFl0LmZsYXR0ZW4obywhMCl9O3MmJih1LmJhcnljZW50ZXI9YS9zLHUud2VpZ2h0PXMpO3JldHVybiB1fTt2YXIgell0PUhXdCxEWXQ9eVV0LkdyYXBoO3ZhciBCWXQ9SFd0O3ZhciBIWXQ9SFd0LEZZdD1mdW5jdGlvbiBWWXQodCl7dmFyIGU9e30sbj14WXQuZmlsdGVyKHQubm9kZXMoKSwoZnVuY3Rpb24oZSl7cmV0dXJuIXQuY2hpbGRyZW4oZSkubGVuZ3RofSkpLGk9eFl0Lm1heCh4WXQubWFwKG4sKGZ1bmN0aW9uKGUpe3JldHVybiB0Lm5vZGUoZSkucmFua30pKSkscj14WXQubWFwKHhZdC5yYW5nZShpKzEpLChmdW5jdGlvbigpe3JldHVybltdfSkpO2Z1bmN0aW9uIG8obil7aWYoIXhZdC5oYXMoZSxuKSl7ZVtuXT0hMDt2YXIgaT10Lm5vZGUobik7cltpLnJhbmtdLnB1c2gobikseFl0LmZvckVhY2godC5zdWNjZXNzb3JzKG4pLG8pfX12YXIgYT14WXQuc29ydEJ5KG4sKGZ1bmN0aW9uKGUpe3JldHVybiB0Lm5vZGUoZSkucmFua30pKTtyZXR1cm4geFl0LmZvckVhY2goYSxvKSxyfSxVWXQ9ZnVuY3Rpb24gall0KHQsZSl7Zm9yKHZhciBuPTAsaT0xO2k8ZS5sZW5ndGg7KytpKW4rPVNZdCh0LGVbaS0xXSxlW2ldKTtyZXR1cm4gbn0sR1l0PWZ1bmN0aW9uIHQoZSxuLGkscil7dmFyIG89ZS5jaGlsZHJlbihuKSxhPWUubm9kZShuKSxzPWE/YS5ib3JkZXJMZWZ0OnZvaWQgMCxsPWE/YS5ib3JkZXJSaWdodDp2b2lkIDAsYz17fTtzJiYobz1rWXQuZmlsdGVyKG8sKGZ1bmN0aW9uKHQpe3JldHVybiB0IT09cyYmdCE9PWx9KSkpO3ZhciB1PUxZdChlLG8pO2tZdC5mb3JFYWNoKHUsKGZ1bmN0aW9uKG4pe2lmKGUuY2hpbGRyZW4obi52KS5sZW5ndGgpe3ZhciBvPXQoZSxuLnYsaSxyKTtjW24udl09byxrWXQuaGFzKG8sImJhcnljZW50ZXIiKSYmKGZ1bmN0aW9uIGEodCxlKXtrWXQuaXNVbmRlZmluZWQodC5iYXJ5Y2VudGVyKT8odC5iYXJ5Y2VudGVyPWUuYmFyeWNlbnRlcix0LndlaWdodD1lLndlaWdodCk6KHQuYmFyeWNlbnRlcj0odC5iYXJ5Y2VudGVyKnQud2VpZ2h0K2UuYmFyeWNlbnRlciplLndlaWdodCkvKHQud2VpZ2h0K2Uud2VpZ2h0KSx0LndlaWdodCs9ZS53ZWlnaHQpfSkobixvKX19KSk7dmFyIGg9Tll0KHUsaSk7IShmdW5jdGlvbiBkKHQsZSl7a1l0LmZvckVhY2godCwoZnVuY3Rpb24odCl7dC52cz1rWXQuZmxhdHRlbih0LnZzLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIGVbdF0/ZVt0XS52czp0fSkpLCEwKX0pKX0pKGgsYyk7dmFyIHA9Ull0KGgscik7aWYocyYmKHAudnM9a1l0LmZsYXR0ZW4oW3MscC52cyxsXSwhMCksZS5wcmVkZWNlc3NvcnMocykubGVuZ3RoKSl7dmFyIGY9ZS5ub2RlKGUucHJlZGVjZXNzb3JzKHMpWzBdKSxtPWUubm9kZShlLnByZWRlY2Vzc29ycyhsKVswXSk7a1l0LmhhcyhwLCJiYXJ5Y2VudGVyIil8fChwLmJhcnljZW50ZXI9MCxwLndlaWdodD0wKSxwLmJhcnljZW50ZXI9KHAuYmFyeWNlbnRlcipwLndlaWdodCtmLm9yZGVyK20ub3JkZXIpLyhwLndlaWdodCsyKSxwLndlaWdodCs9Mn1yZXR1cm4gcH0sV1l0PWZ1bmN0aW9uIHFZdCh0LGUsbil7dmFyIGk9KGZ1bmN0aW9uIHIodCl7dmFyIGU7Zm9yKDt0Lmhhc05vZGUoZT16WXQudW5pcXVlSWQoIl9yb290IikpOyk7cmV0dXJuIGV9KSh0KSxvPW5ldyBEWXQoe2NvbXBvdW5kOiEwfSkuc2V0R3JhcGgoe3Jvb3Q6aX0pLnNldERlZmF1bHROb2RlTGFiZWwoKGZ1bmN0aW9uKGUpe3JldHVybiB0Lm5vZGUoZSl9KSk7cmV0dXJuIHpZdC5mb3JFYWNoKHQubm9kZXMoKSwoZnVuY3Rpb24ocil7dmFyIGE9dC5ub2RlKHIpLHM9dC5wYXJlbnQocik7KGEucmFuaz09PWV8fGEubWluUmFuazw9ZSYmZTw9YS5tYXhSYW5rKSYmKG8uc2V0Tm9kZShyKSxvLnNldFBhcmVudChyLHN8fGkpLHpZdC5mb3JFYWNoKHRbbl0ociksKGZ1bmN0aW9uKGUpe3ZhciBuPWUudj09PXI/ZS53OmUudixpPW8uZWRnZShuLHIpLGE9ell0LmlzVW5kZWZpbmVkKGkpPzA6aS53ZWlnaHQ7by5zZXRFZGdlKG4scix7d2VpZ2h0OnQuZWRnZShlKS53ZWlnaHQrYX0pfSkpLHpZdC5oYXMoYSwibWluUmFuayIpJiZvLnNldE5vZGUocix7Ym9yZGVyTGVmdDphLmJvcmRlckxlZnRbZV0sYm9yZGVyUmlnaHQ6YS5ib3JkZXJSaWdodFtlXX0pKX0pKSxvfSxZWXQ9ZnVuY3Rpb24gWFl0KHQsZSxuKXt2YXIgaSxyPXt9O0JZdC5mb3JFYWNoKG4sKGZ1bmN0aW9uKG4pe2Zvcih2YXIgbyxhLHM9dC5wYXJlbnQobik7czspe2lmKChvPXQucGFyZW50KHMpKT8oYT1yW29dLHJbb109cyk6KGE9aSxpPXMpLGEmJmEhPT1zKXJldHVybiB2b2lkIGUuc2V0RWRnZShhLHMpO3M9b319KSl9LCRZdD15VXQuR3JhcGgsS1l0PW9xdDtmdW5jdGlvbiBaWXQodCxlLG4pe3JldHVybiBIWXQubWFwKGUsKGZ1bmN0aW9uKGUpe3JldHVybiBXWXQodCxlLG4pfSkpfWZ1bmN0aW9uIEpZdCh0LGUpe3ZhciBuPW5ldyAkWXQ7SFl0LmZvckVhY2godCwoZnVuY3Rpb24odCl7dmFyIGk9dC5ncmFwaCgpLnJvb3Qscj1HWXQodCxpLG4sZSk7SFl0LmZvckVhY2goci52cywoZnVuY3Rpb24oZSxuKXt0Lm5vZGUoZSkub3JkZXI9bn0pKSxZWXQodCxuLHIudnMpfSkpfWZ1bmN0aW9uIFFZdCh0LGUpe0hZdC5mb3JFYWNoKGUsKGZ1bmN0aW9uKGUpe0hZdC5mb3JFYWNoKGUsKGZ1bmN0aW9uKGUsbil7dC5ub2RlKGUpLm9yZGVyPW59KSl9KSl9dmFyIHRYdD1IV3QsZVh0PXlVdC5HcmFwaCxuWHQ9b3F0LGlYdD1mdW5jdGlvbiByWHQodCl7dmFyIGUsbj1uWHQuYnVpbGRMYXllck1hdHJpeCh0KSxpPXRYdC5tZXJnZShvWHQodCxuKSxhWHQodCxuKSkscj17fTt0WHQuZm9yRWFjaChbInUiLCJkIl0sKGZ1bmN0aW9uKG8pe2U9InUiPT09bz9uOnRYdC52YWx1ZXMobikucmV2ZXJzZSgpLHRYdC5mb3JFYWNoKFsibCIsInIiXSwoZnVuY3Rpb24obil7InIiPT09biYmKGU9dFh0Lm1hcChlLChmdW5jdGlvbih0KXtyZXR1cm4gdFh0LnZhbHVlcyh0KS5yZXZlcnNlKCl9KSkpO3ZhciBhPSgidSI9PT1vP3QucHJlZGVjZXNzb3JzOnQuc3VjY2Vzc29ycykuYmluZCh0KSxzPWNYdCh0LGUsaSxhKSxsPXVYdCh0LGUscy5yb290LHMuYWxpZ24sInIiPT09bik7InIiPT09biYmKGw9dFh0Lm1hcFZhbHVlcyhsLChmdW5jdGlvbih0KXtyZXR1cm4tdH0pKSkscltvK25dPWx9KSl9KSk7dmFyIG89aFh0KHQscik7cmV0dXJuIGRYdChyLG8pLHBYdChyLHQuZ3JhcGgoKS5hbGlnbil9O2Z1bmN0aW9uIG9YdCh0LGUpe3ZhciBuPXt9O3JldHVybiB0WHQucmVkdWNlKGUsKGZ1bmN0aW9uIGkoZSxyKXt2YXIgbz0wLGE9MCxzPWUubGVuZ3RoLGw9dFh0Lmxhc3Qocik7cmV0dXJuIHRYdC5mb3JFYWNoKHIsKGZ1bmN0aW9uKGUsaSl7dmFyIGM9KGZ1bmN0aW9uIHUodCxlKXtpZih0Lm5vZGUoZSkuZHVtbXkpcmV0dXJuIHRYdC5maW5kKHQucHJlZGVjZXNzb3JzKGUpLChmdW5jdGlvbihlKXtyZXR1cm4gdC5ub2RlKGUpLmR1bW15fSkpfSkodCxlKSxoPWM/dC5ub2RlKGMpLm9yZGVyOnM7KGN8fGU9PT1sKSYmKHRYdC5mb3JFYWNoKHIuc2xpY2UoYSxpKzEpLChmdW5jdGlvbihlKXt0WHQuZm9yRWFjaCh0LnByZWRlY2Vzc29ycyhlKSwoZnVuY3Rpb24oaSl7dmFyIHI9dC5ub2RlKGkpLGE9ci5vcmRlcjshKGE8b3x8aDxhKXx8ci5kdW1teSYmdC5ub2RlKGUpLmR1bW15fHxzWHQobixpLGUpfSkpfSkpLGE9aSsxLG89aCl9KSkscn0pKSxufWZ1bmN0aW9uIGFYdCh0LGUpe3ZhciBuPXt9O2Z1bmN0aW9uIGkoZSxpLHIsbyxhKXt2YXIgczt0WHQuZm9yRWFjaCh0WHQucmFuZ2UoaSxyKSwoZnVuY3Rpb24oaSl7dC5ub2RlKHM9ZVtpXSkuZHVtbXkmJnRYdC5mb3JFYWNoKHQucHJlZGVjZXNzb3JzKHMpLChmdW5jdGlvbihlKXt2YXIgaT10Lm5vZGUoZSk7aS5kdW1teSYmKGkub3JkZXI8b3x8aS5vcmRlcj5hKSYmc1h0KG4sZSxzKX0pKX0pKX1yZXR1cm4gdFh0LnJlZHVjZShlLChmdW5jdGlvbiByKGUsbil7dmFyIHIsbz0tMSxhPTA7cmV0dXJuIHRYdC5mb3JFYWNoKG4sKGZ1bmN0aW9uKHMsbCl7aWYoImJvcmRlciI9PT10Lm5vZGUocykuZHVtbXkpe3ZhciBjPXQucHJlZGVjZXNzb3JzKHMpO2MubGVuZ3RoJiYocj10Lm5vZGUoY1swXSkub3JkZXIsaShuLGEsbCxvLHIpLGE9bCxvPXIpfWkobixhLG4ubGVuZ3RoLHIsZS5sZW5ndGgpfSkpLG59KSksbn1mdW5jdGlvbiBzWHQodCxlLG4pe2lmKGU+bil7dmFyIGk9ZTtlPW4sbj1pfXZhciByPXRbZV07cnx8KHRbZV09cj17fSkscltuXT0hMH1mdW5jdGlvbiBsWHQodCxlLG4pe2lmKGU+bil7dmFyIGk9ZTtlPW4sbj1pfXJldHVybiB0WHQuaGFzKHRbZV0sbil9ZnVuY3Rpb24gY1h0KHQsZSxuLGkpe3ZhciByPXt9LG89e30sYT17fTtyZXR1cm4gdFh0LmZvckVhY2goZSwoZnVuY3Rpb24odCl7dFh0LmZvckVhY2godCwoZnVuY3Rpb24odCxlKXtyW3RdPXQsb1t0XT10LGFbdF09ZX0pKX0pKSx0WHQuZm9yRWFjaChlLChmdW5jdGlvbih0KXt2YXIgZT0tMTt0WHQuZm9yRWFjaCh0LChmdW5jdGlvbih0KXt2YXIgcz1pKHQpO2lmKHMubGVuZ3RoKWZvcih2YXIgbD0oKHM9dFh0LnNvcnRCeShzLChmdW5jdGlvbih0KXtyZXR1cm4gYVt0XX0pKSkubGVuZ3RoLTEpLzIsYz1NYXRoLmZsb29yKGwpLHU9TWF0aC5jZWlsKGwpO2M8PXU7KytjKXt2YXIgaD1zW2NdO29bdF09PT10JiZlPGFbaF0mJiFsWHQobix0LGgpJiYob1toXT10LG9bdF09clt0XT1yW2hdLGU9YVtoXSl9fSkpfSkpLHtyb290OnIsYWxpZ246b319ZnVuY3Rpb24gdVh0KHQsZSxuLGkscil7dmFyIG89e30sYT0oZnVuY3Rpb24gcyh0LGUsbixpKXt2YXIgcj1uZXcgZVh0LG89dC5ncmFwaCgpLGE9KGZ1bmN0aW9uIHModCxlLG4pe3JldHVybiBmdW5jdGlvbihpLHIsbyl7dmFyIGEscz1pLm5vZGUociksbD1pLm5vZGUobyksYz0wO2lmKGMrPXMud2lkdGgvMix0WHQuaGFzKHMsImxhYmVscG9zIikpc3dpdGNoKHMubGFiZWxwb3MudG9Mb3dlckNhc2UoKSl7Y2FzZSJsIjphPS1zLndpZHRoLzI7YnJlYWs7Y2FzZSJyIjphPXMud2lkdGgvMn1pZihhJiYoYys9bj9hOi1hKSxhPTAsYys9KHMuZHVtbXk/ZTp0KS8yLGMrPShsLmR1bW15P2U6dCkvMixjKz1sLndpZHRoLzIsdFh0LmhhcyhsLCJsYWJlbHBvcyIpKXN3aXRjaChsLmxhYmVscG9zLnRvTG93ZXJDYXNlKCkpe2Nhc2UibCI6YT1sLndpZHRoLzI7YnJlYWs7Y2FzZSJyIjphPS1sLndpZHRoLzJ9cmV0dXJuIGEmJihjKz1uP2E6LWEpLGE9MCxjfX0pKG8ubm9kZXNlcCxvLmVkZ2VzZXAsaSk7cmV0dXJuIHRYdC5mb3JFYWNoKGUsKGZ1bmN0aW9uKGUpe3ZhciBpO3RYdC5mb3JFYWNoKGUsKGZ1bmN0aW9uKGUpe3ZhciBvPW5bZV07aWYoci5zZXROb2RlKG8pLGkpe3ZhciBzPW5baV0sbD1yLmVkZ2UocyxvKTtyLnNldEVkZ2UocyxvLE1hdGgubWF4KGEodCxlLGkpLGx8fDApKX1pPWV9KSl9KSkscn0pKHQsZSxuLHIpLGw9cj8iYm9yZGVyTGVmdCI6ImJvcmRlclJpZ2h0IjtmdW5jdGlvbiBjKHQsZSl7Zm9yKHZhciBuPWEubm9kZXMoKSxpPW4ucG9wKCkscj17fTtpOylyW2ldP3QoaSk6KHJbaV09ITAsbi5wdXNoKGkpLG49bi5jb25jYXQoZShpKSkpLGk9bi5wb3AoKX1yZXR1cm4gYygoZnVuY3Rpb24gdSh0KXtvW3RdPWEuaW5FZGdlcyh0KS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIE1hdGgubWF4KHQsb1tlLnZdK2EuZWRnZShlKSl9KSwwKX0pLGEucHJlZGVjZXNzb3JzLmJpbmQoYSkpLGMoKGZ1bmN0aW9uIGgoZSl7dmFyIG49YS5vdXRFZGdlcyhlKS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIE1hdGgubWluKHQsb1tlLnddLWEuZWRnZShlKSl9KSxOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpLGk9dC5ub2RlKGUpO24hPT1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkmJmkuYm9yZGVyVHlwZSE9PWwmJihvW2VdPU1hdGgubWF4KG9bZV0sbikpfSksYS5zdWNjZXNzb3JzLmJpbmQoYSkpLHRYdC5mb3JFYWNoKGksKGZ1bmN0aW9uKHQpe29bdF09b1tuW3RdXX0pKSxvfWZ1bmN0aW9uIGhYdCh0LGUpe3JldHVybiB0WHQubWluQnkodFh0LnZhbHVlcyhlKSwoZnVuY3Rpb24oZSl7dmFyIG49TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZLGk9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZO3JldHVybiB0WHQuZm9ySW4oZSwoZnVuY3Rpb24oZSxyKXt2YXIgbz0oZnVuY3Rpb24gYSh0LGUpe3JldHVybiB0Lm5vZGUoZSkud2lkdGh9KSh0LHIpLzI7bj1NYXRoLm1heChlK28sbiksaT1NYXRoLm1pbihlLW8saSl9KSksbi1pfSkpfWZ1bmN0aW9uIGRYdCh0LGUpe3ZhciBuPXRYdC52YWx1ZXMoZSksaT10WHQubWluKG4pLHI9dFh0Lm1heChuKTt0WHQuZm9yRWFjaChbInUiLCJkIl0sKGZ1bmN0aW9uKG4pe3RYdC5mb3JFYWNoKFsibCIsInIiXSwoZnVuY3Rpb24obyl7dmFyIGEscz1uK28sbD10W3NdO2lmKGwhPT1lKXt2YXIgYz10WHQudmFsdWVzKGwpOyhhPSJsIj09PW8/aS10WHQubWluKGMpOnItdFh0Lm1heChjKSkmJih0W3NdPXRYdC5tYXBWYWx1ZXMobCwoZnVuY3Rpb24odCl7cmV0dXJuIHQrYX0pKSl9fSkpfSkpfWZ1bmN0aW9uIHBYdCh0LGUpe3JldHVybiB0WHQubWFwVmFsdWVzKHQudWwsKGZ1bmN0aW9uKG4saSl7aWYoZSlyZXR1cm4gdFtlLnRvTG93ZXJDYXNlKCldW2ldO3ZhciByPXRYdC5zb3J0QnkodFh0Lm1hcCh0LGkpKTtyZXR1cm4oclsxXStyWzJdKS8yfSkpfXZhciBmWHQ9SFd0LG1YdD1vcXQsZ1h0PWlYdDt2YXIgX1h0PUhXdCx5WHQ9dHF0LHZYdD13cXQsYlh0PWlZdCx4WHQ9b3F0Lm5vcm1hbGl6ZVJhbmtzLHdYdD1mdW5jdGlvbiBTWHQodCl7dmFyIGU9KGZ1bmN0aW9uIG4odCl7dmFyIGU9e30sbj0wO2Z1bmN0aW9uIGkocil7dmFyIG89bjtzWXQuZm9yRWFjaCh0LmNoaWxkcmVuKHIpLGkpLGVbcl09e2xvdzpvLGxpbTpuKyt9fXJldHVybiBzWXQuZm9yRWFjaCh0LmNoaWxkcmVuKCksaSksZX0pKHQpO3NZdC5mb3JFYWNoKHQuZ3JhcGgoKS5kdW1teUNoYWlucywoZnVuY3Rpb24obil7Zm9yKHZhciBpPXQubm9kZShuKSxyPWkuZWRnZU9iaixvPShmdW5jdGlvbiBhKHQsZSxuLGkpe3ZhciByLG8sYT1bXSxzPVtdLGw9TWF0aC5taW4oZVtuXS5sb3csZVtpXS5sb3cpLGM9TWF0aC5tYXgoZVtuXS5saW0sZVtpXS5saW0pO3I9bjtkb3tyPXQucGFyZW50KHIpLGEucHVzaChyKX13aGlsZShyJiYoZVtyXS5sb3c+bHx8Yz5lW3JdLmxpbSkpO289cixyPWk7Zm9yKDsocj10LnBhcmVudChyKSkhPT1vOylzLnB1c2gocik7cmV0dXJue3BhdGg6YS5jb25jYXQocy5yZXZlcnNlKCkpLGxjYTpvfX0pKHQsZSxyLnYsci53KSxzPW8ucGF0aCxsPW8ubGNhLGM9MCx1PXNbY10saD0hMDtuIT09ci53Oyl7aWYoaT10Lm5vZGUobiksaCl7Zm9yKDsodT1zW2NdKSE9PWwmJnQubm9kZSh1KS5tYXhSYW5rPGkucmFuazspYysrO3U9PT1sJiYoaD0hMSl9aWYoIWgpe2Zvcig7YzxzLmxlbmd0aC0xJiZ0Lm5vZGUodT1zW2MrMV0pLm1pblJhbms8PWkucmFuazspYysrO3U9c1tjXX10LnNldFBhcmVudChuLHUpLG49dC5zdWNjZXNzb3JzKG4pWzBdfX0pKX0sTVh0PW9xdC5yZW1vdmVFbXB0eVJhbmtzLEVYdD17cnVuOmZ1bmN0aW9uIFRYdCh0KXt2YXIgZT1jWXQuYWRkRHVtbXlOb2RlKHQsInJvb3QiLHt9LCJfcm9vdCIpLG49KGZ1bmN0aW9uIGkodCl7dmFyIGU9e307ZnVuY3Rpb24gbihpLHIpe3ZhciBvPXQuY2hpbGRyZW4oaSk7byYmby5sZW5ndGgmJmxZdC5mb3JFYWNoKG8sKGZ1bmN0aW9uKHQpe24odCxyKzEpfSkpLGVbaV09cn1yZXR1cm4gbFl0LmZvckVhY2godC5jaGlsZHJlbigpLChmdW5jdGlvbih0KXtuKHQsMSl9KSksZX0pKHQpLHI9bFl0Lm1heChsWXQudmFsdWVzKG4pKS0xLG89MipyKzE7dC5ncmFwaCgpLm5lc3RpbmdSb290PWUsbFl0LmZvckVhY2godC5lZGdlcygpLChmdW5jdGlvbihlKXt0LmVkZ2UoZSkubWlubGVuKj1vfSkpO3ZhciBhPShmdW5jdGlvbiBzKHQpe3JldHVybiBsWXQucmVkdWNlKHQuZWRnZXMoKSwoZnVuY3Rpb24oZSxuKXtyZXR1cm4gZSt0LmVkZ2Uobikud2VpZ2h0fSksMCl9KSh0KSsxO2xZdC5mb3JFYWNoKHQuY2hpbGRyZW4oKSwoZnVuY3Rpb24oaSl7dVl0KHQsZSxvLGEscixuLGkpfSkpLHQuZ3JhcGgoKS5ub2RlUmFua0ZhY3Rvcj1vfSxjbGVhbnVwOmZ1bmN0aW9uIENYdCh0KXt2YXIgZT10LmdyYXBoKCk7dC5yZW1vdmVOb2RlKGUubmVzdGluZ1Jvb3QpLGRlbGV0ZSBlLm5lc3RpbmdSb290LGxZdC5mb3JFYWNoKHQuZWRnZXMoKSwoZnVuY3Rpb24oZSl7dC5lZGdlKGUpLm5lc3RpbmdFZGdlJiZ0LnJlbW92ZUVkZ2UoZSl9KSl9fSxBWHQ9cFl0LGtYdD17YWRqdXN0OmZ1bmN0aW9uIExYdCh0KXt2YXIgZT10LmdyYXBoKCkucmFua2Rpci50b0xvd2VyQ2FzZSgpOyJsciIhPT1lJiYicmwiIT09ZXx8X1l0KHQpfSx1bmRvOmZ1bmN0aW9uIFBYdCh0KXt2YXIgZT10LmdyYXBoKCkucmFua2Rpci50b0xvd2VyQ2FzZSgpOyJidCIhPT1lJiYicmwiIT09ZXx8KGZ1bmN0aW9uIG4odCl7Z1l0LmZvckVhY2godC5ub2RlcygpLChmdW5jdGlvbihlKXt2WXQodC5ub2RlKGUpKX0pKSxnWXQuZm9yRWFjaCh0LmVkZ2VzKCksKGZ1bmN0aW9uKGUpe3ZhciBuPXQuZWRnZShlKTtnWXQuZm9yRWFjaChuLnBvaW50cyx2WXQpLGdZdC5oYXMobiwieSIpJiZ2WXQobil9KSl9KSh0KTsibHIiIT09ZSYmInJsIiE9PWV8fCghKGZ1bmN0aW9uIGkodCl7Z1l0LmZvckVhY2godC5ub2RlcygpLChmdW5jdGlvbihlKXtiWXQodC5ub2RlKGUpKX0pKSxnWXQuZm9yRWFjaCh0LmVkZ2VzKCksKGZ1bmN0aW9uKGUpe3ZhciBuPXQuZWRnZShlKTtnWXQuZm9yRWFjaChuLnBvaW50cyxiWXQpLGdZdC5oYXMobiwieCIpJiZiWXQobil9KSl9KSh0KSxfWXQodCkpfX0sTlh0PWZ1bmN0aW9uIElYdCh0KXt2YXIgZT1LWXQubWF4UmFuayh0KSxuPVpZdCh0LEhZdC5yYW5nZSgxLGUrMSksImluRWRnZXMiKSxpPVpZdCh0LEhZdC5yYW5nZShlLTEsLTEsLTEpLCJvdXRFZGdlcyIpLHI9Rll0KHQpO1FZdCh0LHIpO2Zvcih2YXIgbyxhPU51bWJlci5QT1NJVElWRV9JTkZJTklUWSxzPTAsbD0wO2w8NDsrK3MsKytsKXtKWXQocyUyP246aSxzJTQ+PTIpLHI9S1l0LmJ1aWxkTGF5ZXJNYXRyaXgodCk7dmFyIGM9VVl0KHQscik7YzxhJiYobD0wLG89SFl0LmNsb25lRGVlcChyKSxhPWMpfVFZdCh0LG8pfSxSWHQ9ZnVuY3Rpb24gT1h0KHQpeyhmdW5jdGlvbiBlKHQpe3ZhciBlPW1YdC5idWlsZExheWVyTWF0cml4KHQpLG49dC5ncmFwaCgpLnJhbmtzZXAsaT0wO2ZYdC5mb3JFYWNoKGUsKGZ1bmN0aW9uKGUpe3ZhciByPWZYdC5tYXgoZlh0Lm1hcChlLChmdW5jdGlvbihlKXtyZXR1cm4gdC5ub2RlKGUpLmhlaWdodH0pKSk7Zlh0LmZvckVhY2goZSwoZnVuY3Rpb24oZSl7dC5ub2RlKGUpLnk9aStyLzJ9KSksaSs9citufSkpfSkodD1tWHQuYXNOb25Db21wb3VuZEdyYXBoKHQpKSxmWHQuZm9yRWFjaChnWHQodCksKGZ1bmN0aW9uKGUsbil7dC5ub2RlKG4pLng9ZX0pKX0selh0PW9xdCxEWHQ9eVV0LkdyYXBoLEJYdD1mdW5jdGlvbiBIWHQodCxlKXt2YXIgbj1lJiZlLmRlYnVnVGltaW5nP3pYdC50aW1lOnpYdC5ub3RpbWU7bigibGF5b3V0IiwoZnVuY3Rpb24oKXt2YXIgZT1uKCIgIGJ1aWxkTGF5b3V0R3JhcGgiLChmdW5jdGlvbigpe3JldHVybihmdW5jdGlvbiBlKHQpe3ZhciBlPW5ldyBEWHQoe211bHRpZ3JhcGg6ITAsY29tcG91bmQ6ITB9KSxuPSRYdCh0LmdyYXBoKCkpO3JldHVybiBlLnNldEdyYXBoKF9YdC5tZXJnZSh7fSxWWHQsWFh0KG4sRlh0KSxfWHQucGljayhuLFVYdCkpKSxfWHQuZm9yRWFjaCh0Lm5vZGVzKCksKGZ1bmN0aW9uKG4pe3ZhciBpPSRYdCh0Lm5vZGUobikpO2Uuc2V0Tm9kZShuLF9YdC5kZWZhdWx0cyhYWHQoaSxqWHQpLEdYdCkpLGUuc2V0UGFyZW50KG4sdC5wYXJlbnQobikpfSkpLF9YdC5mb3JFYWNoKHQuZWRnZXMoKSwoZnVuY3Rpb24obil7dmFyIGk9JFh0KHQuZWRnZShuKSk7ZS5zZXRFZGdlKG4sX1h0Lm1lcmdlKHt9LHFYdCxYWHQoaSxXWHQpLF9YdC5waWNrKGksWVh0KSkpfSkpLGV9KSh0KX0pKTtuKCIgIHJ1bkxheW91dCIsKGZ1bmN0aW9uKCl7IShmdW5jdGlvbiB0KGUsbil7bigiICAgIG1ha2VTcGFjZUZvckVkZ2VMYWJlbHMiLChmdW5jdGlvbigpeyEoZnVuY3Rpb24gdChlKXt2YXIgbj1lLmdyYXBoKCk7bi5yYW5rc2VwLz0yLF9YdC5mb3JFYWNoKGUuZWRnZXMoKSwoZnVuY3Rpb24odCl7dmFyIGk9ZS5lZGdlKHQpO2kubWlubGVuKj0yLCJjIiE9PWkubGFiZWxwb3MudG9Mb3dlckNhc2UoKSYmKCJUQiI9PT1uLnJhbmtkaXJ8fCJCVCI9PT1uLnJhbmtkaXI/aS53aWR0aCs9aS5sYWJlbG9mZnNldDppLmhlaWdodCs9aS5sYWJlbG9mZnNldCl9KSl9KShlKX0pKSxuKCIgICAgcmVtb3ZlU2VsZkVkZ2VzIiwoZnVuY3Rpb24oKXshKGZ1bmN0aW9uIHQoZSl7X1h0LmZvckVhY2goZS5lZGdlcygpLChmdW5jdGlvbih0KXtpZih0LnY9PT10Lncpe3ZhciBuPWUubm9kZSh0LnYpO24uc2VsZkVkZ2VzfHwobi5zZWxmRWRnZXM9W10pLG4uc2VsZkVkZ2VzLnB1c2goe2U6dCxsYWJlbDplLmVkZ2UodCl9KSxlLnJlbW92ZUVkZ2UodCl9fSkpfSkoZSl9KSksbigiICAgIGFjeWNsaWMiLChmdW5jdGlvbigpe3lYdC5ydW4oZSl9KSksbigiICAgIG5lc3RpbmdHcmFwaC5ydW4iLChmdW5jdGlvbigpe0VYdC5ydW4oZSl9KSksbigiICAgIHJhbmsiLChmdW5jdGlvbigpe2JYdCh6WHQuYXNOb25Db21wb3VuZEdyYXBoKGUpKX0pKSxuKCIgICAgaW5qZWN0RWRnZUxhYmVsUHJveGllcyIsKGZ1bmN0aW9uKCl7IShmdW5jdGlvbiB0KGUpe19YdC5mb3JFYWNoKGUuZWRnZXMoKSwoZnVuY3Rpb24odCl7dmFyIG49ZS5lZGdlKHQpO2lmKG4ud2lkdGgmJm4uaGVpZ2h0KXt2YXIgaT1lLm5vZGUodC52KSxyPWUubm9kZSh0LncpO3pYdC5hZGREdW1teU5vZGUoZSwiZWRnZS1wcm94eSIse3Jhbms6KHIucmFuay1pLnJhbmspLzIraS5yYW5rLGU6dH0sIl9lcCIpfX0pKX0pKGUpfSkpLG4oIiAgICByZW1vdmVFbXB0eVJhbmtzIiwoZnVuY3Rpb24oKXtNWHQoZSl9KSksbigiICAgIG5lc3RpbmdHcmFwaC5jbGVhbnVwIiwoZnVuY3Rpb24oKXtFWHQuY2xlYW51cChlKX0pKSxuKCIgICAgbm9ybWFsaXplUmFua3MiLChmdW5jdGlvbigpe3hYdChlKX0pKSxuKCIgICAgYXNzaWduUmFua01pbk1heCIsKGZ1bmN0aW9uKCl7IShmdW5jdGlvbiB0KGUpe3ZhciBuPTA7X1h0LmZvckVhY2goZS5ub2RlcygpLChmdW5jdGlvbih0KXt2YXIgaT1lLm5vZGUodCk7aS5ib3JkZXJUb3AmJihpLm1pblJhbms9ZS5ub2RlKGkuYm9yZGVyVG9wKS5yYW5rLGkubWF4UmFuaz1lLm5vZGUoaS5ib3JkZXJCb3R0b20pLnJhbmssbj1fWHQubWF4KG4saS5tYXhSYW5rKSl9KSksZS5ncmFwaCgpLm1heFJhbms9bn0pKGUpfSkpLG4oIiAgICByZW1vdmVFZGdlTGFiZWxQcm94aWVzIiwoZnVuY3Rpb24oKXshKGZ1bmN0aW9uIHQoZSl7X1h0LmZvckVhY2goZS5ub2RlcygpLChmdW5jdGlvbih0KXt2YXIgbj1lLm5vZGUodCk7ImVkZ2UtcHJveHkiPT09bi5kdW1teSYmKGUuZWRnZShuLmUpLmxhYmVsUmFuaz1uLnJhbmssZS5yZW1vdmVOb2RlKHQpKX0pKX0pKGUpfSkpLG4oIiAgICBub3JtYWxpemUucnVuIiwoZnVuY3Rpb24oKXt2WHQucnVuKGUpfSkpLG4oIiAgICBwYXJlbnREdW1teUNoYWlucyIsKGZ1bmN0aW9uKCl7d1h0KGUpfSkpLG4oIiAgICBhZGRCb3JkZXJTZWdtZW50cyIsKGZ1bmN0aW9uKCl7QVh0KGUpfSkpLG4oIiAgICBvcmRlciIsKGZ1bmN0aW9uKCl7Tlh0KGUpfSkpLG4oIiAgICBpbnNlcnRTZWxmRWRnZXMiLChmdW5jdGlvbigpeyEoZnVuY3Rpb24gdChlKXt2YXIgbj16WHQuYnVpbGRMYXllck1hdHJpeChlKTtfWHQuZm9yRWFjaChuLChmdW5jdGlvbih0KXt2YXIgbj0wO19YdC5mb3JFYWNoKHQsKGZ1bmN0aW9uKHQsaSl7dmFyIHI9ZS5ub2RlKHQpO3Iub3JkZXI9aStuLF9YdC5mb3JFYWNoKHIuc2VsZkVkZ2VzLChmdW5jdGlvbih0KXt6WHQuYWRkRHVtbXlOb2RlKGUsInNlbGZlZGdlIix7d2lkdGg6dC5sYWJlbC53aWR0aCxoZWlnaHQ6dC5sYWJlbC5oZWlnaHQscmFuazpyLnJhbmssb3JkZXI6aSsgKytuLGU6dC5lLGxhYmVsOnQubGFiZWx9LCJfc2UiKX0pKSxkZWxldGUgci5zZWxmRWRnZXN9KSl9KSl9KShlKX0pKSxuKCIgICAgYWRqdXN0Q29vcmRpbmF0ZVN5c3RlbSIsKGZ1bmN0aW9uKCl7a1h0LmFkanVzdChlKX0pKSxuKCIgICAgcG9zaXRpb24iLChmdW5jdGlvbigpe1JYdChlKX0pKSxuKCIgICAgcG9zaXRpb25TZWxmRWRnZXMiLChmdW5jdGlvbigpeyEoZnVuY3Rpb24gdChlKXtfWHQuZm9yRWFjaChlLm5vZGVzKCksKGZ1bmN0aW9uKHQpe3ZhciBuPWUubm9kZSh0KTtpZigic2VsZmVkZ2UiPT09bi5kdW1teSl7dmFyIGk9ZS5ub2RlKG4uZS52KSxyPWkueCtpLndpZHRoLzIsbz1pLnksYT1uLngtcixzPWkuaGVpZ2h0LzI7ZS5zZXRFZGdlKG4uZSxuLmxhYmVsKSxlLnJlbW92ZU5vZGUodCksbi5sYWJlbC5wb2ludHM9W3t4OnIrMiphLzMseTpvLXN9LHt4OnIrNSphLzYseTpvLXN9LHt4OnIrYSx5Om99LHt4OnIrNSphLzYseTpvK3N9LHt4OnIrMiphLzMseTpvK3N9XSxuLmxhYmVsLng9bi54LG4ubGFiZWwueT1uLnl9fSkpfSkoZSl9KSksbigiICAgIHJlbW92ZUJvcmRlck5vZGVzIiwoZnVuY3Rpb24oKXshKGZ1bmN0aW9uIHQoZSl7X1h0LmZvckVhY2goZS5ub2RlcygpLChmdW5jdGlvbih0KXtpZihlLmNoaWxkcmVuKHQpLmxlbmd0aCl7dmFyIG49ZS5ub2RlKHQpLGk9ZS5ub2RlKG4uYm9yZGVyVG9wKSxyPWUubm9kZShuLmJvcmRlckJvdHRvbSksbz1lLm5vZGUoX1h0Lmxhc3Qobi5ib3JkZXJMZWZ0KSksYT1lLm5vZGUoX1h0Lmxhc3Qobi5ib3JkZXJSaWdodCkpO24ud2lkdGg9TWF0aC5hYnMoYS54LW8ueCksbi5oZWlnaHQ9TWF0aC5hYnMoci55LWkueSksbi54PW8ueCtuLndpZHRoLzIsbi55PWkueStuLmhlaWdodC8yfX0pKSxfWHQuZm9yRWFjaChlLm5vZGVzKCksKGZ1bmN0aW9uKHQpeyJib3JkZXIiPT09ZS5ub2RlKHQpLmR1bW15JiZlLnJlbW92ZU5vZGUodCl9KSl9KShlKX0pKSxuKCIgICAgbm9ybWFsaXplLnVuZG8iLChmdW5jdGlvbigpe3ZYdC51bmRvKGUpfSkpLG4oIiAgICBmaXh1cEVkZ2VMYWJlbENvb3JkcyIsKGZ1bmN0aW9uKCl7IShmdW5jdGlvbiB0KGUpe19YdC5mb3JFYWNoKGUuZWRnZXMoKSwoZnVuY3Rpb24odCl7dmFyIG49ZS5lZGdlKHQpO2lmKF9YdC5oYXMobiwieCIpKXN3aXRjaCgibCIhPT1uLmxhYmVscG9zJiYiciIhPT1uLmxhYmVscG9zfHwobi53aWR0aC09bi5sYWJlbG9mZnNldCksbi5sYWJlbHBvcyl7Y2FzZSJsIjpuLngtPW4ud2lkdGgvMituLmxhYmVsb2Zmc2V0O2JyZWFrO2Nhc2UiciI6bi54Kz1uLndpZHRoLzIrbi5sYWJlbG9mZnNldH19KSl9KShlKX0pKSxuKCIgICAgdW5kb0Nvb3JkaW5hdGVTeXN0ZW0iLChmdW5jdGlvbigpe2tYdC51bmRvKGUpfSkpLG4oIiAgICB0cmFuc2xhdGVHcmFwaCIsKGZ1bmN0aW9uKCl7IShmdW5jdGlvbiB0KGUpe3ZhciBuPU51bWJlci5QT1NJVElWRV9JTkZJTklUWSxpPTAscj1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksbz0wLGE9ZS5ncmFwaCgpLHM9YS5tYXJnaW54fHwwLGw9YS5tYXJnaW55fHwwO2Z1bmN0aW9uIGModCl7dmFyIGU9dC54LGE9dC55LHM9dC53aWR0aCxsPXQuaGVpZ2h0O249TWF0aC5taW4obixlLXMvMiksaT1NYXRoLm1heChpLGUrcy8yKSxyPU1hdGgubWluKHIsYS1sLzIpLG89TWF0aC5tYXgobyxhK2wvMil9X1h0LmZvckVhY2goZS5ub2RlcygpLChmdW5jdGlvbih0KXtjKGUubm9kZSh0KSl9KSksX1h0LmZvckVhY2goZS5lZGdlcygpLChmdW5jdGlvbih0KXt2YXIgbj1lLmVkZ2UodCk7X1h0LmhhcyhuLCJ4IikmJmMobil9KSksbi09cyxyLT1sLF9YdC5mb3JFYWNoKGUubm9kZXMoKSwoZnVuY3Rpb24odCl7dmFyIGk9ZS5ub2RlKHQpO2kueC09bixpLnktPXJ9KSksX1h0LmZvckVhY2goZS5lZGdlcygpLChmdW5jdGlvbih0KXt2YXIgaT1lLmVkZ2UodCk7X1h0LmZvckVhY2goaS5wb2ludHMsKGZ1bmN0aW9uKHQpe3QueC09bix0LnktPXJ9KSksX1h0LmhhcyhpLCJ4IikmJihpLngtPW4pLF9YdC5oYXMoaSwieSIpJiYoaS55LT1yKX0pKSxhLndpZHRoPWktbitzLGEuaGVpZ2h0PW8tcitsfSkoZSl9KSksbigiICAgIGFzc2lnbk5vZGVJbnRlcnNlY3RzIiwoZnVuY3Rpb24oKXshKGZ1bmN0aW9uIHQoZSl7X1h0LmZvckVhY2goZS5lZGdlcygpLChmdW5jdGlvbih0KXt2YXIgbixpLHI9ZS5lZGdlKHQpLG89ZS5ub2RlKHQudiksYT1lLm5vZGUodC53KTtyLnBvaW50cz8obj1yLnBvaW50c1swXSxpPXIucG9pbnRzW3IucG9pbnRzLmxlbmd0aC0xXSk6KHIucG9pbnRzPVtdLG49YSxpPW8pLHIucG9pbnRzLnVuc2hpZnQoelh0LmludGVyc2VjdFJlY3QobyxuKSksci5wb2ludHMucHVzaCh6WHQuaW50ZXJzZWN0UmVjdChhLGkpKX0pKX0pKGUpfSkpLG4oIiAgICByZXZlcnNlUG9pbnRzIiwoZnVuY3Rpb24oKXshKGZ1bmN0aW9uIHQoZSl7X1h0LmZvckVhY2goZS5lZGdlcygpLChmdW5jdGlvbih0KXt2YXIgbj1lLmVkZ2UodCk7bi5yZXZlcnNlZCYmbi5wb2ludHMucmV2ZXJzZSgpfSkpfSkoZSl9KSksbigiICAgIGFjeWNsaWMudW5kbyIsKGZ1bmN0aW9uKCl7eVh0LnVuZG8oZSl9KSl9KShlLG4pfSkpLG4oIiAgdXBkYXRlSW5wdXRHcmFwaCIsKGZ1bmN0aW9uKCl7IShmdW5jdGlvbiBuKHQsZSl7X1h0LmZvckVhY2godC5ub2RlcygpLChmdW5jdGlvbihuKXt2YXIgaT10Lm5vZGUobikscj1lLm5vZGUobik7aSYmKGkueD1yLngsaS55PXIueSxlLmNoaWxkcmVuKG4pLmxlbmd0aCYmKGkud2lkdGg9ci53aWR0aCxpLmhlaWdodD1yLmhlaWdodCkpfSkpLF9YdC5mb3JFYWNoKHQuZWRnZXMoKSwoZnVuY3Rpb24obil7dmFyIGk9dC5lZGdlKG4pLHI9ZS5lZGdlKG4pO2kucG9pbnRzPXIucG9pbnRzLF9YdC5oYXMociwieCIpJiYoaS54PXIueCxpLnk9ci55KX0pKSx0LmdyYXBoKCkud2lkdGg9ZS5ncmFwaCgpLndpZHRoLHQuZ3JhcGgoKS5oZWlnaHQ9ZS5ncmFwaCgpLmhlaWdodH0pKHQsZSl9KSl9KSl9O3ZhciBGWHQ9WyJub2Rlc2VwIiwiZWRnZXNlcCIsInJhbmtzZXAiLCJtYXJnaW54IiwibWFyZ2lueSJdLFZYdD17cmFua3NlcDo1MCxlZGdlc2VwOjIwLG5vZGVzZXA6NTAscmFua2RpcjoidGIifSxVWHQ9WyJhY3ljbGljZXIiLCJyYW5rZXIiLCJyYW5rZGlyIiwiYWxpZ24iXSxqWHQ9WyJ3aWR0aCIsImhlaWdodCJdLEdYdD17d2lkdGg6MCxoZWlnaHQ6MH0sV1h0PVsibWlubGVuIiwid2VpZ2h0Iiwid2lkdGgiLCJoZWlnaHQiLCJsYWJlbG9mZnNldCJdLHFYdD17bWlubGVuOjEsd2VpZ2h0OjEsd2lkdGg6MCxoZWlnaHQ6MCxsYWJlbG9mZnNldDoxMCxsYWJlbHBvczoiciJ9LFlYdD1bImxhYmVscG9zIl07ZnVuY3Rpb24gWFh0KHQsZSl7cmV0dXJuIF9YdC5tYXBWYWx1ZXMoX1h0LnBpY2sodCxlKSxOdW1iZXIpfWZ1bmN0aW9uICRYdCh0KXt2YXIgZT17fTtyZXR1cm4gX1h0LmZvckVhY2godCwoZnVuY3Rpb24odCxuKXtlW24udG9Mb3dlckNhc2UoKV09dH0pKSxlfXZhciBLWHQ9SFd0LFpYdD1vcXQsSlh0PXlVdC5HcmFwaDt2YXIgUVh0LHQkdD17Z3JhcGhsaWI6eVV0LGxheW91dDpCWHQsZGVidWc6e2RlYnVnT3JkZXJpbmc6ZnVuY3Rpb24gZSR0KHQpe3ZhciBlPVpYdC5idWlsZExheWVyTWF0cml4KHQpLG49bmV3IEpYdCh7Y29tcG91bmQ6ITAsbXVsdGlncmFwaDohMH0pLnNldEdyYXBoKHt9KTtyZXR1cm4gS1h0LmZvckVhY2godC5ub2RlcygpLChmdW5jdGlvbihlKXtuLnNldE5vZGUoZSx7bGFiZWw6ZX0pLG4uc2V0UGFyZW50KGUsImxheWVyIit0Lm5vZGUoZSkucmFuayl9KSksS1h0LmZvckVhY2godC5lZGdlcygpLChmdW5jdGlvbih0KXtuLnNldEVkZ2UodC52LHQudyx7fSx0Lm5hbWUpfSkpLEtYdC5mb3JFYWNoKGUsKGZ1bmN0aW9uKHQsZSl7bi5zZXROb2RlKCJsYXllciIrZSx7cmFuazoic2FtZSJ9KSxLWHQucmVkdWNlKHQsKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIG4uc2V0RWRnZSh0LGUse3N0eWxlOiJpbnZpcyJ9KSxlfSkpfSkpLG59fSx1dGlsOnt0aW1lOm9xdC50aW1lLG5vdGltZTpvcXQubm90aW1lfSx2ZXJzaW9uOiIwLjguNSJ9OyEoZnVuY3Rpb24odCl7dC5PUF9HUkFQSD0ib3BfZ3JhcGgiLHQuQ09OQ0VQVFVBTF9HUkFQSD0iY29uY2VwdHVhbF9ncmFwaCIsdC5QUk9GSUxFPSJwcm9maWxlIn0pKFFYdHx8KFFYdD17fSkpO2xldCBuJHQ9e05vZGU6e0NPTlRBSU5FUjoibm9kZXMiLEdST1VQOiJub2RlIixTSEFQRToibm9kZXNoYXBlIixDT0xPUl9UQVJHRVQ6Im5vZGVjb2xvcnRhcmdldCIsTEFCRUw6Im5vZGVsYWJlbCIsQlVUVE9OX0NPTlRBSU5FUjoiYnV0dG9uY29udGFpbmVyIixCVVRUT05fQ0lSQ0xFOiJidXR0b25jaXJjbGUiLEVYUEFORF9CVVRUT046ImV4cGFuZGJ1dHRvbiIsQ09MTEFQU0VfQlVUVE9OOiJjb2xsYXBzZWJ1dHRvbiJ9LEVkZ2U6e0NPTlRBSU5FUjoiZWRnZXMiLEdST1VQOiJlZGdlIixMSU5FOiJlZGdlbGluZSIsUkVGRVJFTkNFX0VER0U6InJlZmVyZW5jZWVkZ2UiLFJFRl9MSU5FOiJyZWZsaW5lIixTRUxFQ1RBQkxFOiJzZWxlY3RhYmxlZWRnZSIsU0VMRUNURUQ6InNlbGVjdGVkZWRnZSIsU1RSVUNUVVJBTDoic3RydWN0dXJhbCJ9LEFubm90YXRpb246e09VVEJPWDoib3V0LWFubm90YXRpb25zIixJTkJPWDoiaW4tYW5ub3RhdGlvbnMiLEdST1VQOiJhbm5vdGF0aW9uIixOT0RFOiJhbm5vdGF0aW9uLW5vZGUiLEVER0U6ImFubm90YXRpb24tZWRnZSIsQ09OVFJPTF9FREdFOiJhbm5vdGF0aW9uLWNvbnRyb2wtZWRnZSIsTEFCRUw6ImFubm90YXRpb24tbGFiZWwiLEVMTElQU0lTOiJhbm5vdGF0aW9uLWVsbGlwc2lzIn0sU2NlbmU6e0dST1VQOiJzY2VuZSIsQ09SRToiY29yZSIsRlVOQ1RJT05fTElCUkFSWToiZnVuY3Rpb24tbGlicmFyeSIsSU5FWFRSQUNUOiJpbi1leHRyYWN0IixPVVRFWFRSQUNUOiJvdXQtZXh0cmFjdCJ9LFN1YnNjZW5lOntHUk9VUDoic3Vic2NlbmUifSxPUE5PREU6Im9wIixNRVRBTk9ERToibWV0YSIsU0VSSUVTTk9ERToic2VyaWVzIixCUklER0VOT0RFOiJicmlkZ2UiLEVMTElQU0lTTk9ERToiZWxsaXBzaXMifTtjb25zdCBpJHQ9e0xBQkVMOjV9LHIkdD17RVhQQU5ERURfTEFCRUw6OSxTRVJJRVNfTEFCRUw6OCxPUF9MQUJFTDo2LEhFQUxUSF9QSUxMX1NUQVRfTEFCRUw6NH0sbyR0PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI7ZnVuY3Rpb24gYSR0KHQsZSxuKXtsZXQgaT10Lm5vZGUoKS5jaGlsZE5vZGVzO2ZvcihsZXQgdD0wO3Q8aS5sZW5ndGg7dCsrKXtsZXQgcj1pW3RdO2lmKHIudGFnTmFtZT09PWUpaWYobiBpbnN0YW5jZW9mIEFycmF5KXtsZXQgdD0hMDtmb3IobGV0IGU9MDtlPG4ubGVuZ3RoO2UrKyl0PXQmJnIuY2xhc3NMaXN0LmNvbnRhaW5zKG5bZV0pO2lmKHQpcmV0dXJuIER1KHIpfWVsc2UgaWYoIW58fHIuY2xhc3NMaXN0LmNvbnRhaW5zKG4pKXJldHVybiBEdShyKX1yZXR1cm4gRHUobnVsbCl9ZnVuY3Rpb24gcyR0KHQsZSxuLGkpe2xldCByPWEkdCh0LGUsbik7aWYoIXIuZW1wdHkoKSlyZXR1cm4gcjtsZXQgbz1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIixlKTtpZihuIGluc3RhbmNlb2YgQXJyYXkpZm9yKGxldCB0PTA7dDxuLmxlbmd0aDt0Kyspby5jbGFzc0xpc3QuYWRkKG5bdF0pO2Vsc2Ugby5jbGFzc0xpc3QuYWRkKG4pO3JldHVybiBpP3Qubm9kZSgpLmluc2VydEJlZm9yZShvLGkpOnQubm9kZSgpLmFwcGVuZENoaWxkKG8pLER1KG8pLmRhdHVtKHQuZGF0dW0oKSl9Y2xhc3MgbCR0e2NvbnN0cnVjdG9yKHQpe3RoaXMudG90YWxCeXRlcz0wLHRoaXMub3V0cHV0U2l6ZT10fWFkZEV4ZWN1dGlvblRpbWUodCxlKXt0aGlzLnN0YXJ0VGltZT1udWxsIT10aGlzLnN0YXJ0VGltZT9NYXRoLm1pbih0aGlzLnN0YXJ0VGltZSx0KTp0LHRoaXMuZW5kVGltZT1udWxsIT10aGlzLmVuZFRpbWU/TWF0aC5tYXgodGhpcy5lbmRUaW1lLGUpOmV9YWRkQnl0ZXNBbGxvY2F0aW9uKHQpe3RoaXMudG90YWxCeXRlcz1udWxsIT10aGlzLnRvdGFsQnl0ZXM/TWF0aC5tYXgodGhpcy50b3RhbEJ5dGVzLHQpOnR9Y29tYmluZSh0KXtudWxsIT10LnRvdGFsQnl0ZXMmJih0aGlzLnRvdGFsQnl0ZXMrPXQudG90YWxCeXRlcyksbnVsbCE9dC5nZXRUb3RhbE1pY3JvcygpJiZ0aGlzLmFkZEV4ZWN1dGlvblRpbWUodC5zdGFydFRpbWUsdC5lbmRUaW1lKX1nZXRUb3RhbE1pY3Jvcygpe3JldHVybiBudWxsPT10aGlzLnN0YXJ0VGltZXx8bnVsbD09dGhpcy5lbmRUaW1lP251bGw6dGhpcy5lbmRUaW1lLXRoaXMuc3RhcnRUaW1lfX1jb25zdCBjJHQ9Ljc1LHUkdD1URSgpLmV4cG9uZW50KC4zKS5kb21haW4oWzEsNWU2XSkucmFuZ2UoW2MkdCwxMl0pLmNsYW1wKCEwKTtmdW5jdGlvbiBoJHQodCl7IShmdW5jdGlvbiBlKHQpe3JldHVybiB0Lmhhc093blByb3BlcnR5KCJ0aW1pbmdJZCIpfSkodCl9ZnVuY3Rpb24gZCR0KHQsZSxuKXtsZXQgaT1EYXRlLm5vdygpLHI9ZSgpO2NvbnN0IG89RGF0ZS5ub3coKS1pO3JldHVybiBjb25zb2xlLmxvZyh0LCI6IixvLCJtcyIpLG4mJmgkdCh7dGltaW5nSWQ6bixldmVudFZhbHVlOm99KSxyfWZ1bmN0aW9uIHAkdCh0KXtyZXR1cm57c2V0TWVzc2FnZTpmdW5jdGlvbihlKXt0LnNldCgicHJvZ3Jlc3MiLHt2YWx1ZTp0LnByb2dyZXNzLnZhbHVlLG1zZzplfSl9LHVwZGF0ZVByb2dyZXNzOmZ1bmN0aW9uKGUpe3Quc2V0KCJwcm9ncmVzcyIse3ZhbHVlOnQucHJvZ3Jlc3MudmFsdWUrZSxtc2c6dC5wcm9ncmVzcy5tc2d9KX0scmVwb3J0RXJyb3I6ZnVuY3Rpb24oZSxuKXtjb25zb2xlLmVycm9yKG4uc3RhY2spLHQuc2V0KCJwcm9ncmVzcyIse3ZhbHVlOnQucHJvZ3Jlc3MudmFsdWUsbXNnOmUsZXJyb3I6ITB9KX19fWZ1bmN0aW9uIGYkdCh0LGUsbil7cmV0dXJue3NldE1lc3NhZ2U6ZnVuY3Rpb24oZSl7dC5zZXRNZXNzYWdlKG4rIjogIitlKX0sdXBkYXRlUHJvZ3Jlc3M6ZnVuY3Rpb24obil7dC51cGRhdGVQcm9ncmVzcyhuKmUvMTAwKX0scmVwb3J0RXJyb3I6ZnVuY3Rpb24oZSxpKXt0LnJlcG9ydEVycm9yKG4rIjogIitlLGkpfX19ZnVuY3Rpb24gbSR0KHQsZSxuLGkscil7cmV0dXJuIG5ldyBQcm9taXNlKCgobyxhKT0+e2kuc2V0TWVzc2FnZSh0KSxzZXRUaW1lb3V0KChmdW5jdGlvbigpe3RyeXtsZXQgYT1kJHQodCxuLHIpO2kudXBkYXRlUHJvZ3Jlc3MoZSksbyhhKX1jYXRjaChlKXtpLnJlcG9ydEVycm9yKCJGYWlsZWQgIit0LGUpfX0pLDIwKX0pKX1mdW5jdGlvbiBnJHQodCxlLG4saSxyKXtyZXR1cm4gbmV3IFByb21pc2UoKChvLGEpPT57bGV0IHM9ZnVuY3Rpb24oZSl7aS5yZXBvcnRFcnJvcigiRmFpbGVkICIrdCxlKSxhKGUpfTtpLnNldE1lc3NhZ2UodCksc2V0VGltZW91dCgoZnVuY3Rpb24oKXt0cnl7bGV0IGE9RGF0ZS5ub3coKTtuKCkudGhlbigoZnVuY3Rpb24obil7Y29uc3Qgcz1EYXRlLm5vdygpLWE7Y29uc29sZS5sb2codCwiOiIscywibXMiKSxpLnVwZGF0ZVByb2dyZXNzKGUpLGgkdCh7dGltaW5nSWQ6cixldmVudFZhbHVlOnN9KSxvKG4pfSkpLmNhdGNoKHMpfWNhdGNoKHQpe3ModCl9fSksMjApfSkpfWNvbnN0IF8kdD1be3N5bWJvbDoiQiJ9LHtzeW1ib2w6IktCIixudW1Vbml0czoxMDI0fSx7c3ltYm9sOiJNQiIsbnVtVW5pdHM6MTAyNH0se3N5bWJvbDoiR0IiLG51bVVuaXRzOjEwMjR9LHtzeW1ib2w6IlRCIixudW1Vbml0czoxMDI0fSx7c3ltYm9sOiJQQiIsbnVtVW5pdHM6MTAyNH1dLHkkdD1be3N5bWJvbDoiwrVzIn0se3N5bWJvbDoibXMiLG51bVVuaXRzOjFlM30se3N5bWJvbDoicyIsbnVtVW5pdHM6MWUzfSx7c3ltYm9sOiJtaW4iLG51bVVuaXRzOjYwfSx7c3ltYm9sOiJociIsbnVtVW5pdHM6NjB9LHtzeW1ib2w6ImRheXMiLG51bVVuaXRzOjI0fV07ZnVuY3Rpb24gdiR0KHQsZSxuPTApe3JldHVybiBuKzE8ZS5sZW5ndGgmJnQ+PWVbbisxXS5udW1Vbml0cz92JHQodC9lW24rMV0ubnVtVW5pdHMsZSxuKzEpOk51bWJlcih0LnRvUHJlY2lzaW9uKDMpKSsiICIrZVtuXS5zeW1ib2x9ZnVuY3Rpb24gYiR0KHQpe3JldHVybiEoIXR8fCEodC50b3RhbEJ5dGVzPjB8fHQuZ2V0VG90YWxNaWNyb3MoKT4wfHx0Lm91dHB1dFNpemUpKX1mdW5jdGlvbiB4JHQodCl7aWYodC5sZW5ndGg8MilyZXR1cm4gdDtsZXQgZT0wLG49MCxpPUNlLmV4cG9ydHMubWluKENlLmV4cG9ydHMubWFwKHQsKHQ9PnQubGVuZ3RoKSkpO2Zvcig7Oyl7ZSsrO2xldCByPUNlLmV4cG9ydHMubWFwKHQsKHQ9PnQuc3Vic3RyaW5nKDAsZSkpKTtpZighci5ldmVyeSgoKHQsZSk9PjA9PT1lfHx0PT09cltlLTFdKSkpYnJlYWs7aWYoZT49aSlyZXR1cm4gdDtuPWV9cmV0dXJuIENlLmV4cG9ydHMubWFwKHQsKHQ9PnQuc3Vic3RyaW5nKG4pKSl9Y29uc3QgdyR0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpLmdldENvbnRleHQoIjJkIik7ZnVuY3Rpb24gUyR0KHQsZSl7cmV0dXJuIHckdC5mb250PWAke2V9cHggUm9ib3RvLCBzYW5zLXNlcmlmYCx3JHQubWVhc3VyZVRleHQodCkud2lkdGh9Y29uc3QgTSR0PSIvIixFJHQ9Il9fcm9vdF9fIixUJHQ9Il9fZnVuY3Rpb25fbGlicmFyeV9fIjt2YXIgQyR0LEEkdCxrJHQsTCR0OyEoZnVuY3Rpb24odCl7dFt0LkZVTEw9MF09IkZVTEwiLHRbdC5FTUJFRERFRD0xXT0iRU1CRURERUQiLHRbdC5NRVRBPTJdPSJNRVRBIix0W3QuU0VSSUVTPTNdPSJTRVJJRVMiLHRbdC5DT1JFPTRdPSJDT1JFIix0W3QuU0hBRE9XPTVdPSJTSEFET1ciLHRbdC5CUklER0U9Nl09IkJSSURHRSIsdFt0LkVER0U9N109IkVER0UifSkoQyR0fHwoQyR0PXt9KSksKGZ1bmN0aW9uKHQpe3RbdC5NRVRBPTBdPSJNRVRBIix0W3QuT1A9MV09Ik9QIix0W3QuU0VSSUVTPTJdPSJTRVJJRVMiLHRbdC5CUklER0U9M109IkJSSURHRSIsdFt0LkVMTElQU0lTPTRdPSJFTExJUFNJUyJ9KShBJHR8fChBJHQ9e30pKSwoZnVuY3Rpb24odCl7dFt0LklOQ0xVREU9MF09IklOQ0xVREUiLHRbdC5FWENMVURFPTFdPSJFWENMVURFIix0W3QuVU5TUEVDSUZJRUQ9Ml09IlVOU1BFQ0lGSUVEIn0pKGskdHx8KGskdD17fSkpLChmdW5jdGlvbih0KXt0W3QuR1JPVVA9MF09IkdST1VQIix0W3QuVU5HUk9VUD0xXT0iVU5HUk9VUCJ9KShMJHR8fChMJHQ9e30pKTtjb25zdCBQJHQ9Il9vdXRwdXRfc2hhcGVzIixOJHQ9Il9YbGFDbHVzdGVyIjtjbGFzcyBJJHR7Y29uc3RydWN0b3IoKXt0aGlzLm5vZGVzPXt9LHRoaXMuZWRnZXM9W119fWNsYXNzIFIkdHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnR5cGU9QSR0LkVMTElQU0lTLHRoaXMuaXNHcm91cE5vZGU9ITEsdGhpcy5jYXJkaW5hbGl0eT0xLHRoaXMucGFyZW50Tm9kZT1udWxsLHRoaXMuc3RhdHM9bnVsbCx0aGlzLnNldE51bU1vcmVOb2Rlcyh0KSx0aGlzLmluY2x1ZGU9ayR0LlVOU1BFQ0lGSUVEfXNldE51bU1vcmVOb2Rlcyh0KXt0aGlzLm51bU1vcmVOb2Rlcz10LHRoaXMubmFtZT0iLi4uICIrdCsiIG1vcmUifX1jbGFzcyBPJHR7Y29uc3RydWN0b3IodCl7dGhpcy5vcD10Lm9wLHRoaXMubmFtZT10Lm5hbWUsdGhpcy5kZXZpY2U9dC5kZXZpY2UsdGhpcy5hdHRyPXQuYXR0cix0aGlzLmlucHV0cz0oZnVuY3Rpb24gZSh0KXtjb25zdCBlPVtdO2xldCBuPW51bGw7Zm9yKGxldCBpIG9mIHR8fFtdKXtjb25zdCB0PWkuc3RhcnRzV2l0aCgiXiIpO3QmJihpPWkuc3Vic3RyaW5nKDEpKTtsZXQgcj1pLG89IjAiO2NvbnN0IGE9aS5pbmNsdWRlcygiOiIpJiZpLm1hdGNoKGokdCk7YSYmKHI9YVsxXSxvPWFbMl0pLG4hPT1yJiYobj1yLGUucHVzaCh7bmFtZTpyLG91dHB1dFRlbnNvcktleTpvLGlzQ29udHJvbERlcGVuZGVuY3k6dH0pKX1yZXR1cm4gZX0pKHQuaW5wdXQpLHRoaXMub3V0cHV0U2hhcGVzPShmdW5jdGlvbiBuKHQpe2lmKCF0KXJldHVybiBudWxsO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKXtsZXR7a2V5Om4sdmFsdWU6aX09dFtlXTtpZihuPT09UCR0KXtpZighaS5saXN0fHwhaS5saXN0LnNoYXBlKXJldHVybiBudWxsO2xldCBuPWkubGlzdC5zaGFwZS5tYXAoKHQ9PnQudW5rbm93bl9yYW5rP251bGw6bnVsbD09dC5kaW18fDE9PT10LmRpbS5sZW5ndGgmJm51bGw9PXQuZGltWzBdLnNpemU/W106dC5kaW0ubWFwKCh0PT50LnNpemUpKSkpO3JldHVybiB0LnNwbGljZShlLDEpLG59fXJldHVybiBudWxsfSkodC5hdHRyKSx0aGlzLnhsYUNsdXN0ZXI9KGZ1bmN0aW9uIGkodCl7aWYoIXQpcmV0dXJuIG51bGw7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspaWYodFtlXS5rZXk9PT1OJHQpcmV0dXJuIHRbZV0udmFsdWUuc3x8bnVsbDtyZXR1cm4gbnVsbH0pKHQuYXR0ciksdGhpcy5jb21wYXRpYmxlPSExLHRoaXMudHlwZT1BJHQuT1AsdGhpcy5pc0dyb3VwTm9kZT0hMSx0aGlzLmNhcmRpbmFsaXR5PTEsdGhpcy5pbkVtYmVkZGluZ3M9W10sdGhpcy5vdXRFbWJlZGRpbmdzPVtdLHRoaXMucGFyZW50Tm9kZT1udWxsLHRoaXMuaW5jbHVkZT1rJHQuVU5TUEVDSUZJRUQsdGhpcy5vd25pbmdTZXJpZXM9bnVsbH19ZnVuY3Rpb24geiR0KHQsZT17fSl7cmV0dXJuIG5ldyBEJHQodCxlKX1jbGFzcyBEJHR7Y29uc3RydWN0b3IodCxlPXt9KXt0aGlzLm5hbWU9dCx0aGlzLnR5cGU9QSR0Lk1FVEEsdGhpcy5kZXB0aD0xLHRoaXMuaXNHcm91cE5vZGU9ITAsdGhpcy5jYXJkaW5hbGl0eT0wLHRoaXMubWV0YWdyYXBoPVkkdCh0LEMkdC5NRVRBLGUpLHRoaXMuYnJpZGdlZ3JhcGg9bnVsbCx0aGlzLm9wSGlzdG9ncmFtPXt9LHRoaXMuZGV2aWNlSGlzdG9ncmFtPXt9LHRoaXMueGxhQ2x1c3Rlckhpc3RvZ3JhbT17fSx0aGlzLmNvbXBhdGliaWxpdHlIaXN0b2dyYW09e2NvbXBhdGlibGU6MCxpbmNvbXBhdGlibGU6MH0sdGhpcy50ZW1wbGF0ZUlkPW51bGwsdGhpcy5wYXJlbnROb2RlPW51bGwsdGhpcy5oYXNOb25Db250cm9sRWRnZXM9ITEsdGhpcy5pbmNsdWRlPWskdC5VTlNQRUNJRklFRCx0aGlzLmFzc29jaWF0ZWRGdW5jdGlvbj0iIn1nZXRGaXJzdENoaWxkKCl7cmV0dXJuIHRoaXMubWV0YWdyYXBoLm5vZGUodGhpcy5tZXRhZ3JhcGgubm9kZXMoKVswXSl9Z2V0Um9vdE9wKCl7bGV0IHQ9dGhpcy5uYW1lLnNwbGl0KCIvIik7cmV0dXJuIHRoaXMubWV0YWdyYXBoLm5vZGUodGhpcy5uYW1lKyIvKCIrdFt0Lmxlbmd0aC0xXSsiKSIpfWxlYXZlcygpe2xldCB0LGU9W10sbj1bdGhpc107Zm9yKDtuLmxlbmd0aDspe2xldCBpPW4uc2hpZnQoKTtpLmlzR3JvdXBOb2RlPyh0PWkubWV0YWdyYXBoLENlLmV4cG9ydHMuZWFjaCh0Lm5vZGVzKCksKGU9Pm4ucHVzaCh0Lm5vZGUoZSkpKSkpOmUucHVzaChpLm5hbWUpfXJldHVybiBlfX1mdW5jdGlvbiBCJHQodCxlKXtyZXR1cm4gbmV3IEgkdCh0LGUpfWNsYXNzIEgkdHtjb25zdHJ1Y3Rvcih0LGUpe3RoaXMudj10LHRoaXMudz1lLHRoaXMuYmFzZUVkZ2VMaXN0PVtdLHRoaXMuaW5ib3VuZD1udWxsLHRoaXMubnVtUmVndWxhckVkZ2VzPTAsdGhpcy5udW1Db250cm9sRWRnZXM9MCx0aGlzLm51bVJlZkVkZ2VzPTAsdGhpcy50b3RhbFNpemU9MH1hZGRCYXNlRWRnZSh0LGUpe3RoaXMuYmFzZUVkZ2VMaXN0LnB1c2godCksdC5pc0NvbnRyb2xEZXBlbmRlbmN5P3RoaXMubnVtQ29udHJvbEVkZ2VzKz0xOnRoaXMubnVtUmVndWxhckVkZ2VzKz0xLHQuaXNSZWZlcmVuY2VFZGdlJiYodGhpcy5udW1SZWZFZGdlcys9MSksdGhpcy50b3RhbFNpemUrPUgkdC5jb21wdXRlU2l6ZU9mRWRnZSh0LGUpLGUubWF4TWV0YUVkZ2VTaXplPU1hdGgubWF4KGUubWF4TWV0YUVkZ2VTaXplLHRoaXMudG90YWxTaXplKX1zdGF0aWMgY29tcHV0ZVNpemVPZkVkZ2UodCxlKXtsZXQgbj1lLm5vZGUodC52KTtpZighbi5vdXRwdXRTaGFwZXMpcmV0dXJuIDE7ZS5oYXNTaGFwZUluZm89ITA7Y29uc3QgaT1PYmplY3Qua2V5cyhuLm91dHB1dFNoYXBlcykubWFwKCh0PT5uLm91dHB1dFNoYXBlc1t0XSkpLm1hcCgodD0+bnVsbD09dD8xOnQucmVkdWNlKCgodCxlKT0+KC0xPT09ZSYmKGU9MSksdCplKSksMSkpKTtyZXR1cm4gQ2UuZXhwb3J0cy5zdW0oaSl9fWZ1bmN0aW9uIEYkdCh0LGUsbixpLHIsbyl7cmV0dXJuIG5ldyBVJHQodCxlLG4saSxyLG8pfWZ1bmN0aW9uIFYkdCh0LGUsbixpLHIpe3JldHVybihuP24rIi8iOiIiKSsodCsodm9pZCAwIT09aSYmdm9pZCAwIT09cj8iWyIraSsiLSIrcisiXSI6IiMiKStlKX1jbGFzcyBVJHR7Y29uc3RydWN0b3IodCxlLG4saSxyLG8pe3RoaXMubmFtZT1yfHxWJHQodCxlLG4pLHRoaXMudHlwZT1BJHQuU0VSSUVTLHRoaXMuaGFzTG9vcD0hMSx0aGlzLnByZWZpeD10LHRoaXMuc3VmZml4PWUsdGhpcy5jbHVzdGVySWQ9aSx0aGlzLmlkcz1bXSx0aGlzLnBhcmVudD1uLHRoaXMuaXNHcm91cE5vZGU9ITAsdGhpcy5jYXJkaW5hbGl0eT0wLHRoaXMubWV0YWdyYXBoPVkkdChyLEMkdC5TRVJJRVMsbyksdGhpcy5icmlkZ2VncmFwaD1udWxsLHRoaXMucGFyZW50Tm9kZT1udWxsLHRoaXMuZGV2aWNlSGlzdG9ncmFtPXt9LHRoaXMueGxhQ2x1c3Rlckhpc3RvZ3JhbT17fSx0aGlzLmNvbXBhdGliaWxpdHlIaXN0b2dyYW09e2NvbXBhdGlibGU6MCxpbmNvbXBhdGlibGU6MH0sdGhpcy5oYXNOb25Db250cm9sRWRnZXM9ITEsdGhpcy5pbmNsdWRlPWskdC5VTlNQRUNJRklFRH19Y29uc3QgaiR0PS9eKFteOl0rKTooKFx3Kzp8KVxkKykkLztmdW5jdGlvbiBHJHQodCxlLG4saSxyLG8pe2lmKGU9PT1uLm5hbWUpcmV0dXJuO3QuZWRnZXMucHVzaCh7djplLHc6bi5uYW1lLG91dHB1dFRlbnNvcktleTppLm91dHB1dFRlbnNvcktleSxpc0NvbnRyb2xEZXBlbmRlbmN5OmkuaXNDb250cm9sRGVwZW5kZW5jeSxpc1JlZmVyZW5jZUVkZ2U6ITA9PT1yLnJlZkVkZ2VzW24ub3ArIiAiK29dfSl9Y29uc3QgVyR0PXtlbmFibGVFbWJlZGRpbmc6ITAsaW5FbWJlZGRpbmdUeXBlczpbIkNvbnN0Il0sb3V0RW1iZWRkaW5nVHlwZXM6WyJeW2EtekEtWl0rU3VtbWFyeSQiXSxyZWZFZGdlczp7IkFzc2lnbiAwIjohMCwiQXNzaWduQWRkIDAiOiEwLCJBc3NpZ25TdWIgMCI6ITAsImFzc2lnbiAwIjohMCwiYXNzaWduX2FkZCAwIjohMCwiYXNzaWduX3N1YiAwIjohMCwiY291bnRfdXBfdG8gMCI6ITAsIlNjYXR0ZXJBZGQgMCI6ITAsIlNjYXR0ZXJTdWIgMCI6ITAsIlNjYXR0ZXJVcGRhdGUgMCI6ITAsInNjYXR0ZXJfYWRkIDAiOiEwLCJzY2F0dGVyX3N1YiAwIjohMCwic2NhdHRlcl91cGRhdGUgMCI6ITB9fTtmdW5jdGlvbiBxJHQodCxlLG4pe2xldCBpPXt9LHI9e30sbz17fSxhPVgkdChlLmluRW1iZWRkaW5nVHlwZXMpLHM9WCR0KGUub3V0RW1iZWRkaW5nVHlwZXMpLGw9W10sYz10Lm5vZGUsdT1uZXcgQXJyYXkoYy5sZW5ndGgpO3JldHVybiBtJHQoIk5vcm1hbGl6aW5nIG5hbWVzIiwzMCwoKCk9PntsZXQgZT1uZXcgQXJyYXkoYy5sZW5ndGgpLG49MDtjb25zdCBoPXQ9PntsZXQgYz1uZXcgTyR0KHQpO3JldHVybiBhKGMpPyhsLnB1c2goYy5uYW1lKSxpW2MubmFtZV09YyxjKTpzKGMpPyhsLnB1c2goYy5uYW1lKSxyW2MubmFtZV09YyxDZS5leHBvcnRzLmVhY2goYy5pbnB1dHMsKHQ9PntsZXQgZT10Lm5hbWU7b1tlXT1vW2VdfHxbXSxvW2VdLnB1c2goYyl9KSksYyk6KGVbbl09Yyx1W25dPWMubmFtZSxuKyssYyl9O0NlLmV4cG9ydHMuZWFjaChjLGgpO2NvbnN0IGQ9dD0+e2NvbnN0IGU9VCR0K3Quc2lnbmF0dXJlLm5hbWU7aWYoaCh7bmFtZTplLGlucHV0OltdLGRldmljZToiIixvcDoiIixhdHRyOltdfSksdC5zaWduYXR1cmUuaW5wdXRfYXJnKXtsZXQgbj0wO2NvbnN0IGk9dD0+e2goe25hbWU6ZStNJHQrdC5uYW1lLGlucHV0OltdLGRldmljZToiIixvcDoiaW5wdXRfYXJnIixhdHRyOlt7a2V5OiJUIix2YWx1ZTp7dHlwZTp0LnR5cGV9fV19KS5mdW5jdGlvbklucHV0SW5kZXg9bixuKyt9O3Quc2lnbmF0dXJlLmlucHV0X2FyZy5uYW1lP2kodC5zaWduYXR1cmUuaW5wdXRfYXJnKTpDZS5leHBvcnRzLmVhY2godC5zaWduYXR1cmUuaW5wdXRfYXJnLGkpfWxldCBuPTA7Y29uc3QgaT17fTtpZih0LnNpZ25hdHVyZS5vdXRwdXRfYXJnKXtjb25zdCByPXQ9PntpW2UrTSR0K3QubmFtZV09bixuKyt9O3Quc2lnbmF0dXJlLm91dHB1dF9hcmcubmFtZT9yKHQuc2lnbmF0dXJlLm91dHB1dF9hcmcpOkNlLmV4cG9ydHMuZWFjaCh0LnNpZ25hdHVyZS5vdXRwdXRfYXJnLHIpfUNlLmV4cG9ydHMuZWFjaCh0Lm5vZGVfZGVmLCh0PT57dC5uYW1lPWUrIi8iK3QubmFtZSwic3RyaW5nIj09dHlwZW9mIHQuaW5wdXQmJih0LmlucHV0PVt0LmlucHV0XSk7Y29uc3Qgbj1oKHQpO0NlLmV4cG9ydHMuaXNOdW1iZXIoaVt0Lm5hbWVdKSYmKG4uZnVuY3Rpb25PdXRwdXRJbmRleD1pW3QubmFtZV0pLENlLmV4cG9ydHMuZWFjaChuLmlucHV0cywodD0+e3QubmFtZT1lK00kdCt0Lm5hbWV9KSl9KSl9O3JldHVybiB0LmxpYnJhcnkmJnQubGlicmFyeS5mdW5jdGlvbiYmQ2UuZXhwb3J0cy5lYWNoKHQubGlicmFyeS5mdW5jdGlvbixkKSxlLnNwbGljZShuKSx1LnNwbGljZShuKSxlfSksbixCQXQuTk9STUFMSVpJTkdfTkFNRVMpLnRoZW4oKHQ9Pm0kdCgiQnVpbGRpbmcgdGhlIGRhdGEgc3RydWN0dXJlIiw3MCwoKCk9PntsZXQgbj0oZnVuY3Rpb24gYSh0LGUpe2xldCBuPXt9LGk9e307dC5zb3J0KCk7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aC0xOysrZSl7bGV0IHI9dFtlXTtDZS5leHBvcnRzLmVhY2goWiR0KHIpLnNsaWNlKDAsLTEpLCh0PT57aVt0XT0hMH0pKTtmb3IobGV0IGk9ZSsxO2k8dC5sZW5ndGg7KytpKXtsZXQgZT10W2ldO2lmKCFDZS5leHBvcnRzLnN0YXJ0c1dpdGgoZSxyKSlicmVhaztpZihlLmxlbmd0aD5yLmxlbmd0aCYmZS5jaGFyQXQoci5sZW5ndGgpPT09TSR0KXtuW3JdPSQkdChyKTticmVha319fXJldHVybiBDZS5leHBvcnRzLmVhY2goZSwodD0+e3QgaW4gaSYmKG5bdF09JCR0KHQpKX0pKSxufSkodSxsKSxzPW5ldyBJJHQ7cmV0dXJuIENlLmV4cG9ydHMuZWFjaCh0LCh0PT57bGV0IGU9blt0Lm5hbWVdfHx0Lm5hbWU7cy5ub2Rlc1tlXT10LHQubmFtZSBpbiBvJiYodC5vdXRFbWJlZGRpbmdzPW9bdC5uYW1lXSxDZS5leHBvcnRzLmVhY2godC5vdXRFbWJlZGRpbmdzLCh0PT57dC5uYW1lPW5bdC5uYW1lXXx8dC5uYW1lfSkpKSx0Lm5hbWU9ZX0pKSxDZS5leHBvcnRzLmVhY2godCwodD0+e0NlLmV4cG9ydHMuZWFjaCh0LmlucHV0cywoKG8sYSk9PntsZXQgbD1vLm5hbWU7aWYobCBpbiBpKXtsZXQgcj1pW2xdO3QuaW5FbWJlZGRpbmdzLnB1c2gocik7Zm9yKGxldCBpIG9mIHIuaW5wdXRzKUckdChzLG5baS5uYW1lXXx8aS5uYW1lLHQsaSxlLGEpfWVsc2UgaWYobCBpbiByKXtsZXQgaT1yW2xdO2ZvcihsZXQgciBvZiBpLmlucHV0cylHJHQocyxuW3IubmFtZV18fHIubmFtZSx0LG8sZSxhKX1lbHNlIEckdChzLG5bbF18fGwsdCxvLGUsYSl9KSl9KSksQ2UuZXhwb3J0cy5lYWNoKGksKCh0LGUpPT57dC5uYW1lPW5bdC5uYW1lXXx8dC5uYW1lfSkpLHN9KSxuLEJBdC5CVUlMRF9TTElNX0dSQVBIKSkpfWZ1bmN0aW9uIFkkdCh0LGUsbj17fSl7Y29uc3QgaT1uZXcgdCR0LmdyYXBobGliLkdyYXBoKG4pO3JldHVybiBpLnNldEdyYXBoKHtuYW1lOnQscmFua2RpcjpuLnJhbmtkaXJ8fCJCVCIsdHlwZTplfSksaX1mdW5jdGlvbiBYJHQodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2ZvcihsZXQgbj0wO248dC5sZW5ndGg7bisrKXtsZXQgaT1uZXcgUmVnRXhwKHRbbl0pO2lmKCJzdHJpbmciPT10eXBlb2YgZS5vcCYmZS5vcC5tYXRjaChpKSlyZXR1cm4hMH1yZXR1cm4hMX19ZnVuY3Rpb24gJCR0KHQpe2xldCBlPXQuc3BsaXQoTSR0KTtyZXR1cm4gdCtNJHQrIigiK2VbZS5sZW5ndGgtMV0rIikifWZ1bmN0aW9uIEskdCh0KXtsZXQgZT10Lm5vZGVzKCkubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gdC5uZWlnaGJvcnMoZSkubGVuZ3RofSkpO3JldHVybiBlLnNvcnQoKSxlfWZ1bmN0aW9uIFokdCh0LGUpe2xldCBuPVtdLGk9dC5pbmRleE9mKE0kdCk7Zm9yKDtpPj0wOyluLnB1c2godC5zdWJzdHJpbmcoMCxpKSksaT10LmluZGV4T2YoTSR0LGkrMSk7aWYoZSl7bGV0IGk9ZVt0XTtpJiZuLnB1c2goaSl9cmV0dXJuIG4ucHVzaCh0KSxufWZ1bmN0aW9uIEokdCh0KXtyZXR1cm4gdD09PWskdC5FWENMVURFPyJBZGQgdG8gbWFpbiBncmFwaCI6IlJlbW92ZSBmcm9tIG1haW4gZ3JhcGgifWZ1bmN0aW9uIFEkdCh0LGUpe2xldCBuPShmdW5jdGlvbiByKHQsZSl7cmV0dXJuIENlLmV4cG9ydHMucmVkdWNlKHQsKGZ1bmN0aW9uKHQsbil7bGV0IGk9blswXSxyPVtdO3JldHVybiBuWzFdLm5vZGVzLmZvckVhY2goKGZ1bmN0aW9uKHQpe2ZvcihsZXQgbj0wO248ci5sZW5ndGg7bisrKXtpZighZXx8ZUt0KHJbbl0ubWV0YW5vZGUubWV0YWdyYXBoLHQubWV0YWdyYXBoKSlyZXR1cm4gdC50ZW1wbGF0ZUlkPXJbbl0ubWV0YW5vZGUudGVtcGxhdGVJZCx2b2lkIHJbbl0ubWVtYmVycy5wdXNoKHQubmFtZSl9dC50ZW1wbGF0ZUlkPWkrIlsiK3IubGVuZ3RoKyJdIixyLnB1c2goe21ldGFub2RlOnQsbWVtYmVyczpbdC5uYW1lXX0pfSkpLHIuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dFtlLm1ldGFub2RlLnRlbXBsYXRlSWRdPXtsZXZlbDpuWzFdLmxldmVsLG5vZGVzOmUubWVtYmVyc319KSksdH0pLHt9KX0pKChmdW5jdGlvbiBpKHQpe2NvbnN0IGU9dC5nZXROb2RlTWFwKCk7bGV0IG49T2JqZWN0LmtleXMoZSkucmVkdWNlKCgodCxuKT0+e2NvbnN0IGk9ZVtuXTtpZihpLnR5cGUhPT1BJHQuTUVUQSlyZXR1cm4gdDtsZXQgcj1uLnNwbGl0KCIvIikubGVuZ3RoLTEsbz0oZnVuY3Rpb24gYSh0KXtsZXQgZT1DZS5leHBvcnRzLm1hcCh7ZGVwdGg6dC5kZXB0aCwifFZ8Ijp0Lm1ldGFncmFwaC5ub2RlcygpLmxlbmd0aCwifEV8Ijp0Lm1ldGFncmFwaC5lZGdlcygpLmxlbmd0aH0sKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUrIj0iK3R9KSkuam9pbigiICIpLG49Q2UuZXhwb3J0cy5tYXAodC5vcEhpc3RvZ3JhbSwoZnVuY3Rpb24odCxlKXtyZXR1cm4gZSsiPSIrdH0pKS5qb2luKCIsIik7cmV0dXJuIGUrIiBbb3BzXSAiK259KShpKSxzPXRbb118fHtub2RlczpbXSxsZXZlbDpyfTtyZXR1cm4gdFtvXT1zLHMubm9kZXMucHVzaChpKSxzLmxldmVsPnImJihzLmxldmVsPXIpLHR9KSx7fSk7cmV0dXJuIE9iamVjdC5rZXlzKG4pLm1hcCgodD0+W3Qsblt0XV0pKS5maWx0ZXIoKChbdCxlXSk9Pntjb25zdHtub2RlczpufT1lO2lmKG4ubGVuZ3RoPjEpcmV0dXJuITA7Y29uc3QgaT1uWzBdO3JldHVybiBpLnR5cGU9PT1BJHQuTUVUQSYmaS5hc3NvY2lhdGVkRnVuY3Rpb259KSkuc29ydCgoKFt0LGVdKT0+ZS5ub2Rlc1swXS5kZXB0aCkpfSkodCksZSk7cmV0dXJuIE9iamVjdC5rZXlzKG4pLnNvcnQoKHQ9Pm5bdF0ubGV2ZWwpKS5yZWR1Y2UoKCh0LGUpPT4odFtlXT1uW2VdLHQpKSx7fSl9ZnVuY3Rpb24gdEt0KHQsZSxuKXtyZXR1cm4gQ2UuZXhwb3J0cy5zb3J0QnkodCxbdD0+ZS5ub2RlKHQpLm9wLHQ9PmUubm9kZSh0KS50ZW1wbGF0ZUlkLHQ9PmUubmVpZ2hib3JzKHQpLmxlbmd0aCx0PT5lLnByZWRlY2Vzc29ycyh0KS5sZW5ndGgsdD0+ZS5zdWNjZXNzb3JzKHQpLmxlbmd0aCx0PT50LnN1YnN0cihuLmxlbmd0aCldKX1mdW5jdGlvbiBlS3QodCxlKXtpZighKGZ1bmN0aW9uIG4odCxlKXtsZXQgbj1LJHQodCksaT1LJHQoZSk7Zm9yKGxldCB0PTA7dDxuLmxlbmd0aDt0KyspaWYoblt0XSE9PWlbdF0pcmV0dXJuITE7cmV0dXJuITB9KSh0LGUpKXJldHVybiExO2xldCBpPXQuZ3JhcGgoKS5uYW1lLHI9ZS5ncmFwaCgpLm5hbWUsbz17fSxhPXt9LHM9W107ZnVuY3Rpb24gbCh0LGUpe2xldCBuPXQuc3Vic3RyKGkubGVuZ3RoKSxsPWUuc3Vic3RyKHIubGVuZ3RoKTtyZXR1cm4gb1tuXV5hW2xdPyhjb25zb2xlLndhcm4oImRpZmZlcmVudCB2aXNpdCBwYXR0ZXJuIiwiWyIraSsiXSIsbiwiWyIrcisiXSIsbCksITApOihvW25dfHwob1tuXT1hW2xdPSEwLHMucHVzaCh7bjE6dCxuMjplfSkpLCExKX1sZXQgYz10LnNvdXJjZXMoKSx1PWUuc291cmNlcygpO2lmKGMubGVuZ3RoIT09dS5sZW5ndGgpcmV0dXJuIGNvbnNvbGUubG9nKCJkaWZmZXJlbnQgc291cmNlIGxlbmd0aCIpLCExO2M9dEt0KGMsdCxpKSx1PXRLdCh1LGUscik7Zm9yKGxldCB0PTA7dDxjLmxlbmd0aDt0Kyspe2lmKGwoY1t0XSx1W3RdKSlyZXR1cm4hMX1mb3IoO3MubGVuZ3RoPjA7KXtsZXQgbj1zLnBvcCgpO2lmKCFuS3QodC5ub2RlKG4ubjEpLGUubm9kZShuLm4yKSkpcmV0dXJuITE7bGV0IG89dC5zdWNjZXNzb3JzKG4ubjEpLGE9ZS5zdWNjZXNzb3JzKG4ubjIpO2lmKG8ubGVuZ3RoIT09YS5sZW5ndGgpcmV0dXJuIGNvbnNvbGUubG9nKCIjIG9mIHN1Y2Nlc3NvcnMgbWlzbWF0Y2giLG8sYSksITE7bz10S3Qobyx0LGkpLGE9dEt0KGEsZSxyKTtmb3IobGV0IHQ9MDt0PG8ubGVuZ3RoO3QrKyl7aWYobChvW3RdLGFbdF0pKXJldHVybiExfX1yZXR1cm4hMH1mdW5jdGlvbiBuS3QodCxlKXtpZih0LnR5cGU9PT1BJHQuTUVUQSl7bGV0IG49dCxpPWU7cmV0dXJuIG4udGVtcGxhdGVJZCYmaS50ZW1wbGF0ZUlkJiZuLnRlbXBsYXRlSWQ9PT1pLnRlbXBsYXRlSWR9aWYodC50eXBlPT09QSR0Lk9QJiZlLnR5cGU9PT1BJHQuT1ApcmV0dXJuIHQub3A9PT1lLm9wO2lmKHQudHlwZT09PUEkdC5TRVJJRVMmJmUudHlwZT09PUEkdC5TRVJJRVMpe2xldCBuPXQsaT1lLHI9bi5tZXRhZ3JhcGgubm9kZUNvdW50KCk7cmV0dXJuIHI9PT1pLm1ldGFncmFwaC5ub2RlQ291bnQoKSYmKDA9PT1yfHxuLm1ldGFncmFwaC5ub2RlKG4ubWV0YWdyYXBoLm5vZGVzKClbMF0pLm9wPT09aS5tZXRhZ3JhcGgubm9kZShpLm1ldGFncmFwaC5ub2RlcygpWzBdKS5vcCl9cmV0dXJuITF9dmFyIGlLdDshKGZ1bmN0aW9uKHQpe3RbdC5URU1QTEFURVNfVVBEQVRFRD0wXT0iVEVNUExBVEVTX1VQREFURUQifSkoaUt0fHwoaUt0PXt9KSk7Y2xhc3Mgckt0IGV4dGVuZHMgY2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLmV2ZW50VHlwZVRvTGlzdGVuZXJzPW5ldyBNYXB9Z2V0TGlzdGVuZXJzKHQpe3JldHVybiB0aGlzLmV2ZW50VHlwZVRvTGlzdGVuZXJzLmhhcyh0KXx8dGhpcy5ldmVudFR5cGVUb0xpc3RlbmVycy5zZXQodCxbXSksdGhpcy5ldmVudFR5cGVUb0xpc3RlbmVycy5nZXQodCl9YWRkTGlzdGVuZXIodCxlKXt0aGlzLmdldExpc3RlbmVycyh0KS5wdXNoKGUpfXJlbW92ZUxpc3RlbmVyKHQsZSl7Y29uc3Qgbj10aGlzLmdldExpc3RlbmVycyh0KS5maWx0ZXIoKHQ9PnQhPT1lKSk7dGhpcy5ldmVudFR5cGVUb0xpc3RlbmVycy5zZXQodCxuKX1kaXNwYXRjaEV2ZW50KHQsZSl7Zm9yKGNvbnN0IG4gb2YgdGhpcy5nZXRMaXN0ZW5lcnModCkpbihlKX19e2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy5oYXNTaGFwZUluZm89ITEsdGhpcy5tYXhNZXRhRWRnZVNpemU9MSx0aGlzLmdyYXBoT3B0aW9ucz17fSx0aGlzLnRlbXBsYXRlcz1udWxsLHRoaXMuZ3JhcGhPcHRpb25zLmNvbXBvdW5kPSEwLHRoaXMuZ3JhcGhPcHRpb25zLnJhbmtkaXI9dC5yYW5rRGlyZWN0aW9uLHRoaXMucm9vdD16JHQoRSR0LHRoaXMuZ3JhcGhPcHRpb25zKSx0aGlzLmxpYnJhcnlGdW5jdGlvbnM9e30sdGhpcy5zZXJpZXNHcm91cE1hcD1uZXcgTWFwKHQuc2VyaWVzTWFwKSx0aGlzLmRldmljZXM9bnVsbCx0aGlzLnhsYUNsdXN0ZXJzPW51bGwsdGhpcy52ZXJpZnlUZW1wbGF0ZT10LnZlcmlmeVRlbXBsYXRlLHRoaXMuaW5kZXg9e30sdGhpcy5pbmRleC5fX3Jvb3RfXz10aGlzLnJvb3QsdGhpcy5vcmRlcmluZ3M9e319Z2V0U2VyaWVzR3JvdXBUeXBlKHQpe3ZhciBlO3JldHVybiBudWxsIT09KGU9dGhpcy5zZXJpZXNHcm91cE1hcC5nZXQodCkpJiZ2b2lkIDAhPT1lP2U6TCR0LkdST1VQfXNldFNlcmllc0dyb3VwVHlwZSh0LGUpe3JldHVybiB0aGlzLnNlcmllc0dyb3VwTWFwLnNldCh0LGUpfWJ1aWxkU2VyaWVzR3JvdXBNYXBUb2dnbGVkKHQpe2NvbnN0IGU9dGhpcy5nZXRTZXJpZXNHcm91cFR5cGUodCk9PT1MJHQuR1JPVVA/TCR0LlVOR1JPVVA6TCR0LkdST1VQO3JldHVybiBuZXcgTWFwKFsuLi50aGlzLnNlcmllc0dyb3VwTWFwLFt0LGVdXSl9Z2V0Tm9kZU1hcCgpe3JldHVybiB0aGlzLmluZGV4fW5vZGUodCl7cmV0dXJuIHRoaXMuaW5kZXhbdF19c2V0Tm9kZSh0LGUpe3RoaXMuaW5kZXhbdF09ZX1nZXRCcmlkZ2VncmFwaCh0KXtsZXQgZT10aGlzLmluZGV4W3RdO2lmKCFlKXRocm93IEVycm9yKCJDb3VsZCBub3QgZmluZCBub2RlIGluIGhpZXJhcmNoeTogIit0KTtpZighKCJtZXRhZ3JhcGgiaW4gZSkpcmV0dXJuIG51bGw7aWYoZS5icmlkZ2VncmFwaClyZXR1cm4gZS5icmlkZ2VncmFwaDtsZXQgbj1lLmJyaWRnZWdyYXBoPVkkdCgiQlJJREdFR1JBUEgiLEMkdC5CUklER0UsdGhpcy5ncmFwaE9wdGlvbnMpO2lmKCFlLnBhcmVudE5vZGV8fCEoIm1ldGFncmFwaCJpbiBlLnBhcmVudE5vZGUpKXJldHVybiBuO2xldCBpPWUucGFyZW50Tm9kZSxyPWkubWV0YWdyYXBoLG89dGhpcy5nZXRCcmlkZ2VncmFwaChpLm5hbWUpO3JldHVybiBDZS5leHBvcnRzLmVhY2goW3Isb10sKGU9PntlLmVkZ2VzKCkuZmlsdGVyKChlPT5lLnY9PT10fHxlLnc9PT10KSkuZm9yRWFjaCgoaT0+e2xldCByPWkudz09PXQsbz1lLmVkZ2UoaSk7Q2UuZXhwb3J0cy5lYWNoKG8uYmFzZUVkZ2VMaXN0LChlPT57bGV0W28sYV09cj9bZS53LGkudl06W2UudixpLnddLHM9dGhpcy5nZXRDaGlsZE5hbWUodCxvKSxsPXt2OnI/YTpzLHc6cj9zOmF9LGM9bi5lZGdlKGwpO2N8fChjPUIkdChsLnYsbC53KSxjLmluYm91bmQ9cixuLnNldEVkZ2UobC52LGwudyxjKSksYy5hZGRCYXNlRWRnZShlLHRoaXMpfSkpfSkpfSkpLG59Z2V0Q2hpbGROYW1lKHQsZSl7bGV0IG49dGhpcy5pbmRleFtlXTtmb3IoO247KXtpZihuLnBhcmVudE5vZGUmJm4ucGFyZW50Tm9kZS5uYW1lPT09dClyZXR1cm4gbi5uYW1lO249bi5wYXJlbnROb2RlfXRocm93IEVycm9yKCJDb3VsZCBub3QgZmluZCBpbW1lZGlhdGUgY2hpbGQgZm9yIGRlc2NlbmRhbnQ6ICIrZSl9Z2V0UHJlZGVjZXNzb3JzKHQpe2xldCBlPXRoaXMuaW5kZXhbdF07aWYoIWUpdGhyb3cgRXJyb3IoIkNvdWxkIG5vdCBmaW5kIG5vZGUgd2l0aCBuYW1lOiAiK3QpO2xldCBuPXRoaXMuZ2V0T25lV2F5RWRnZXMoZSwhMCk7cmV0dXJuIGUuaXNHcm91cE5vZGV8fENlLmV4cG9ydHMuZWFjaChlLmluRW1iZWRkaW5ncywoaT0+e0NlLmV4cG9ydHMuZWFjaChlLmlucHV0cywoZT0+e2lmKGUubmFtZT09PWkubmFtZSl7bGV0IHI9bmV3IEgkdChpLm5hbWUsdCk7ci5hZGRCYXNlRWRnZSh7aXNDb250cm9sRGVwZW5kZW5jeTplLmlzQ29udHJvbERlcGVuZGVuY3ksb3V0cHV0VGVuc29yS2V5OmUub3V0cHV0VGVuc29yS2V5LGlzUmVmZXJlbmNlRWRnZTohMSx2OmkubmFtZSx3OnR9LHRoaXMpLG4ucmVndWxhci5wdXNoKHIpfX0pKX0pKSxufWdldFN1Y2Nlc3NvcnModCl7bGV0IGU9dGhpcy5pbmRleFt0XTtpZighZSl0aHJvdyBFcnJvcigiQ291bGQgbm90IGZpbmQgbm9kZSB3aXRoIG5hbWU6ICIrdCk7bGV0IG49dGhpcy5nZXRPbmVXYXlFZGdlcyhlLCExKTtyZXR1cm4gZS5pc0dyb3VwTm9kZXx8Q2UuZXhwb3J0cy5lYWNoKGUub3V0RW1iZWRkaW5ncywoZT0+e0NlLmV4cG9ydHMuZWFjaChlLmlucHV0cywoaT0+e2lmKGkubmFtZT09PXQpe2xldCByPW5ldyBIJHQodCxlLm5hbWUpO3IuYWRkQmFzZUVkZ2Uoe2lzQ29udHJvbERlcGVuZGVuY3k6aS5pc0NvbnRyb2xEZXBlbmRlbmN5LG91dHB1dFRlbnNvcktleTppLm91dHB1dFRlbnNvcktleSxpc1JlZmVyZW5jZUVkZ2U6ITEsdjp0LHc6ZS5uYW1lfSx0aGlzKSxuLnJlZ3VsYXIucHVzaChyKX19KSl9KSksbn1nZXRPbmVXYXlFZGdlcyh0LGUpe2xldCBuPXtjb250cm9sOltdLHJlZ3VsYXI6W119O2lmKCF0LnBhcmVudE5vZGV8fCF0LnBhcmVudE5vZGUuaXNHcm91cE5vZGUpcmV0dXJuIG47bGV0IGk9dC5wYXJlbnROb2RlLHI9aS5tZXRhZ3JhcGgsbz10aGlzLmdldEJyaWRnZWdyYXBoKGkubmFtZSk7cmV0dXJuIG9LdChyLHQsZSxuKSxvS3Qobyx0LGUsbiksbn1nZXRUb3BvbG9naWNhbE9yZGVyaW5nKHQpe2xldCBlPXRoaXMuaW5kZXhbdF07aWYoIWUpdGhyb3cgRXJyb3IoIkNvdWxkIG5vdCBmaW5kIG5vZGUgd2l0aCBuYW1lOiAiK3QpO2lmKCFlLmlzR3JvdXBOb2RlKXJldHVybiBudWxsO2lmKHQgaW4gdGhpcy5vcmRlcmluZ3MpcmV0dXJuIHRoaXMub3JkZXJpbmdzW3RdO2xldCBuPXt9LGk9e30scj1lLm1ldGFncmFwaDtDZS5leHBvcnRzLmVhY2goci5lZGdlcygpLCh0PT57ci5lZGdlKHQpLm51bVJlZ3VsYXJFZGdlcyYmKHQudiBpbiBufHwoblt0LnZdPVtdKSxuW3Qudl0ucHVzaCh0LncpLGlbdC53XT0hMCl9KSk7bGV0IG89Q2UuZXhwb3J0cy5kaWZmZXJlbmNlKENlLmV4cG9ydHMua2V5cyhuKSxDZS5leHBvcnRzLmtleXMoaSkpLGE9dGhpcy5vcmRlcmluZ3NbdF09e30scz0wO2Zvcig7by5sZW5ndGg7KXtsZXQgdD1vLnNoaWZ0KCk7YVt0XT1zKyssQ2UuZXhwb3J0cy5lYWNoKG5bdF0sKHQ9Pm8ucHVzaCh0KSkpLGRlbGV0ZSBuW3RdfXJldHVybiBhfWdldFRlbXBsYXRlSW5kZXgoKXtpZighdGhpcy50ZW1wbGF0ZXMpcmV0dXJuIG51bGw7bGV0IHQ9WmcodGhpcy50ZW1wbGF0ZXMpO2lmKCF0Lmxlbmd0aClyZXR1cm4gbnVsbDtsZXQgZT1ZTSgpLmRvbWFpbih0KS5yYW5nZShLbCgwLHQubGVuZ3RoKSk7cmV0dXJuIHQ9PmUodCl9dXBkYXRlVGVtcGxhdGVzKCl7ZCR0KCJGaW5kaW5nIHNpbWlsYXIgc3ViZ3JhcGhzIiwoKCk9Pnt0aGlzLnRlbXBsYXRlcz1RJHQodGhpcyx0aGlzLnZlcmlmeVRlbXBsYXRlKSx0aGlzLmRpc3BhdGNoRXZlbnQoaUt0LlRFTVBMQVRFU19VUERBVEVEKX0pLEJBdC5ISUVSQVJDSFlfRklORF9TSU1JTEFSX1NVQkdSQVBIUyl9fWZ1bmN0aW9uIG9LdCh0LGUsbixpKXtsZXQgcj1uP3QuaW5FZGdlcyhlLm5hbWUpOnQub3V0RWRnZXMoZS5uYW1lKTtDZS5leHBvcnRzLmVhY2gociwoZT0+e2xldCBuPXQuZWRnZShlKTsobi5udW1SZWd1bGFyRWRnZXM/aS5yZWd1bGFyOmkuY29udHJvbCkucHVzaChuKX0pKX1jb25zdCBhS3Q9e3ZlcmlmeVRlbXBsYXRlOiEwLHNlcmllc05vZGVNaW5TaXplOjUsc2VyaWVzTWFwOm5ldyBNYXAscmFua0RpcmVjdGlvbjoiQlQiLHVzZUdlbmVyYWxpemVkU2VyaWVzUGF0dGVybnM6ITF9O2Z1bmN0aW9uIHNLdCh0LGUsbil7Y29uc3QgaT1uZXcgckt0KGUpLHI9e307cmV0dXJuIG0kdCgiQWRkaW5nIG5vZGVzIiwzMCwoKCk9PntsZXQgZT17fSxuPXt9O0NlLmV4cG9ydHMuZWFjaCh0Lm5vZGVzLCgodCxpKT0+e3QuZGV2aWNlJiYoZVt0LmRldmljZV09ITApLHQueGxhQ2x1c3RlciYmKG5bdC54bGFDbHVzdGVyXT0hMCl9KSksaS5kZXZpY2VzPUNlLmV4cG9ydHMua2V5cyhlKSxpLnhsYUNsdXN0ZXJzPUNlLmV4cG9ydHMua2V5cyhuKSwoZnVuY3Rpb24gcih0LGUpe2NvbnN0IG49e307Q2UuZXhwb3J0cy5lYWNoKGUubm9kZXMsKChlLGkpPT57bGV0IHI9WiR0KGUubmFtZSksbz10LnJvb3Q7by5kZXB0aD1NYXRoLm1heChyLmxlbmd0aCxvLmRlcHRoKSxuW2Uub3BdfHwobltlLm9wXT1bXSksbltlLm9wXS5wdXNoKGUpO2ZvcihsZXQgaT0wO2k8ci5sZW5ndGgmJihvLmRlcHRoPU1hdGgubWF4KG8uZGVwdGgsci5sZW5ndGgtaSksby5jYXJkaW5hbGl0eSs9ZS5jYXJkaW5hbGl0eSxvLm9wSGlzdG9ncmFtW2Uub3BdPShvLm9wSGlzdG9ncmFtW2Uub3BdfHwwKSsxLG51bGwhPWUuZGV2aWNlJiYoby5kZXZpY2VIaXN0b2dyYW1bZS5kZXZpY2VdPShvLmRldmljZUhpc3RvZ3JhbVtlLmRldmljZV18fDApKzEpLG51bGwhPWUueGxhQ2x1c3RlciYmKG8ueGxhQ2x1c3Rlckhpc3RvZ3JhbVtlLnhsYUNsdXN0ZXJdPShvLnhsYUNsdXN0ZXJIaXN0b2dyYW1bZS54bGFDbHVzdGVyXXx8MCkrMSksZS5jb21wYXRpYmxlP28uY29tcGF0aWJpbGl0eUhpc3RvZ3JhbS5jb21wYXRpYmxlPShvLmNvbXBhdGliaWxpdHlIaXN0b2dyYW0uY29tcGF0aWJsZXx8MCkrMTpvLmNvbXBhdGliaWxpdHlIaXN0b2dyYW0uaW5jb21wYXRpYmxlPShvLmNvbXBhdGliaWxpdHlIaXN0b2dyYW0uaW5jb21wYXRpYmxlfHwwKSsxLENlLmV4cG9ydHMuZWFjaChlLmluRW1iZWRkaW5ncywodD0+e3QuY29tcGF0aWJsZT9vLmNvbXBhdGliaWxpdHlIaXN0b2dyYW0uY29tcGF0aWJsZT0oby5jb21wYXRpYmlsaXR5SGlzdG9ncmFtLmNvbXBhdGlibGV8fDApKzE6by5jb21wYXRpYmlsaXR5SGlzdG9ncmFtLmluY29tcGF0aWJsZT0oby5jb21wYXRpYmlsaXR5SGlzdG9ncmFtLmluY29tcGF0aWJsZXx8MCkrMX0pKSxDZS5leHBvcnRzLmVhY2goZS5vdXRFbWJlZGRpbmdzLCh0PT57dC5jb21wYXRpYmxlP28uY29tcGF0aWJpbGl0eUhpc3RvZ3JhbS5jb21wYXRpYmxlPShvLmNvbXBhdGliaWxpdHlIaXN0b2dyYW0uY29tcGF0aWJsZXx8MCkrMTpvLmNvbXBhdGliaWxpdHlIaXN0b2dyYW0uaW5jb21wYXRpYmxlPShvLmNvbXBhdGliaWxpdHlIaXN0b2dyYW0uaW5jb21wYXRpYmxlfHwwKSsxfSkpLGkhPT1yLmxlbmd0aC0xKTtpKyspe2xldCBlPXJbaV0sYT10Lm5vZGUoZSk7aWYoIWEmJihhPXokdChlLHQuZ3JhcGhPcHRpb25zKSxhLnBhcmVudE5vZGU9byx0LnNldE5vZGUoZSxhKSxvLm1ldGFncmFwaC5zZXROb2RlKGUsYSksMD09PWUuaW5kZXhPZihUJHQpJiZvLm5hbWU9PT1FJHQpKXtjb25zdCBpPWUuc3Vic3RyaW5nKFQkdC5sZW5ndGgpO25baV18fChuW2ldPVtdKSx0LmxpYnJhcnlGdW5jdGlvbnNbaV09e25vZGU6YSx1c2FnZXM6bltpXX0sYS5hc3NvY2lhdGVkRnVuY3Rpb249aX1vPWF9dC5zZXROb2RlKGUubmFtZSxlKSxlLnBhcmVudE5vZGU9byxvLm1ldGFncmFwaC5zZXROb2RlKGUubmFtZSxlKSxDZS5leHBvcnRzLmVhY2goZS5pbkVtYmVkZGluZ3MsKGZ1bmN0aW9uKG4pe3Quc2V0Tm9kZShuLm5hbWUsbiksbi5wYXJlbnROb2RlPWV9KSksQ2UuZXhwb3J0cy5lYWNoKGUub3V0RW1iZWRkaW5ncywoZnVuY3Rpb24obil7dC5zZXROb2RlKG4ubmFtZSxuKSxuLnBhcmVudE5vZGU9ZX0pKX0pKX0pKGksdCl9KSxuLEJBdC5ISUVSQVJDSFlfQUREX05PREVTKS50aGVuKCgoKT0+bSR0KCJEZXRlY3Qgc2VyaWVzIiwzMCwoKCk9PntlLnNlcmllc05vZGVNaW5TaXplPjAmJmxLdChpLnJvb3QsaSxyLGUuc2VyaWVzTm9kZU1pblNpemUsZS5zZXJpZXNNYXAsZS51c2VHZW5lcmFsaXplZFNlcmllc1BhdHRlcm5zKX0pLG4sQkF0LkhJRVJBUkNIWV9ERVRFQ1RfU0VSSUVTKSkpLnRoZW4oKCgpPT5tJHQoIkFkZGluZyBlZGdlcyIsNDAsKCgpPT57IShmdW5jdGlvbiBlKHQsbixpKXtsZXQgcj10LmdldE5vZGVNYXAoKSxvPVtdLGE9W10scz0odCxlKT0+e2xldCBuPTA7Zm9yKDt0OyllW24rK109dC5uYW1lLHQ9dC5wYXJlbnROb2RlO3JldHVybiBuLTF9O0NlLmV4cG9ydHMuZWFjaChuLmVkZ2VzLChlPT57bGV0IGk9cyhuLm5vZGVzW2Uudl0sbyksbD1zKG4ubm9kZXNbZS53XSxhKTtpZigtMT09PWl8fC0xPT09bClyZXR1cm47Zm9yKDtvW2ldPT09YVtsXTspaWYoaS0tLGwtLSxpPDB8fGw8MCl0aHJvdyBFcnJvcigiTm8gZGlmZmVyZW5jZSBmb3VuZCBiZXR3ZWVuIGFuY2VzdG9yIHBhdGhzLiIpO2xldCBjPXJbb1tpKzFdXSx1PW9baV0saD1hW2xdLGQ9Yy5tZXRhZ3JhcGguZWRnZSh1LGgpO2R8fChkPUIkdCh1LGgpLGMubWV0YWdyYXBoLnNldEVkZ2UodSxoLGQpKSxjLmhhc05vbkNvbnRyb2xFZGdlc3x8ZS5pc0NvbnRyb2xEZXBlbmRlbmN5fHwoYy5oYXNOb25Db250cm9sRWRnZXM9ITApLGQuYWRkQmFzZUVkZ2UoZSx0KX0pKX0pKGksdCl9KSxuLEJBdC5ISUVSQVJDSFlfQUREX0VER0VTKSkpLnRoZW4oKCgpPT5pKSl9ZnVuY3Rpb24gbEt0KHQsZSxuLGkscixvKXtsZXQgYT10Lm1ldGFncmFwaDtDZS5leHBvcnRzLmVhY2goYS5ub2RlcygpLCh0PT57bGV0IHM9YS5ub2RlKHQpO3MudHlwZT09PUEkdC5NRVRBJiZsS3QocyxlLG4saSxyLG8pfSkpO2xldCBzPShmdW5jdGlvbiBsKHQpe2xldCBlPXt9O3JldHVybiBDZS5leHBvcnRzLnJlZHVjZSh0Lm5vZGVzKCksKChlLG4pPT57bGV0IGk9dC5ub2RlKG4pO2lmKGkudHlwZT09PUEkdC5NRVRBKXJldHVybiBlO2xldCByPWkub3A7cmV0dXJuIHImJihlW3JdPWVbcl18fFtdLGVbcl0ucHVzaChpLm5hbWUpKSxlfSksZSl9KShhKTtsZXQgYz0obz91S3Q6Y0t0KShzLGEsZS5ncmFwaE9wdGlvbnMpO0NlLmV4cG9ydHMuZWFjaChjLChmdW5jdGlvbih0LHIpe2xldCBvPXQubWV0YWdyYXBoLm5vZGVzKCk7Q2UuZXhwb3J0cy5lYWNoKG8sKHQ9PntsZXQgZT1hLm5vZGUodCk7ZS5vd25pbmdTZXJpZXN8fChlLm93bmluZ1Nlcmllcz1yKX0pKSxvLmxlbmd0aDxpJiZlLmdldFNlcmllc0dyb3VwVHlwZSh0Lm5hbWUpPT09TCR0LkdST1VQJiZlLnNldFNlcmllc0dyb3VwVHlwZSh0Lm5hbWUsTCR0LlVOR1JPVVApLGUuZ2V0U2VyaWVzR3JvdXBUeXBlKHQubmFtZSkhPT1MJHQuVU5HUk9VUCYmKGUuc2V0Tm9kZShyLHQpLGEuc2V0Tm9kZShyLHQpLENlLmV4cG9ydHMuZWFjaChvLChlPT57bGV0IGk9YS5ub2RlKGUpO3QubWV0YWdyYXBoLnNldE5vZGUoZSxpKSx0LnBhcmVudE5vZGU9aS5wYXJlbnROb2RlLHQuY2FyZGluYWxpdHkrKyxudWxsIT1pLmRldmljZSYmKHQuZGV2aWNlSGlzdG9ncmFtW2kuZGV2aWNlXT0odC5kZXZpY2VIaXN0b2dyYW1baS5kZXZpY2VdfHwwKSsxKSxudWxsIT1pLnhsYUNsdXN0ZXImJih0LnhsYUNsdXN0ZXJIaXN0b2dyYW1baS54bGFDbHVzdGVyXT0odC54bGFDbHVzdGVySGlzdG9ncmFtW2kueGxhQ2x1c3Rlcl18fDApKzEpLGkuY29tcGF0aWJsZT90LmNvbXBhdGliaWxpdHlIaXN0b2dyYW0uY29tcGF0aWJsZT0odC5jb21wYXRpYmlsaXR5SGlzdG9ncmFtLmNvbXBhdGlibGV8fDApKzE6dC5jb21wYXRpYmlsaXR5SGlzdG9ncmFtLmluY29tcGF0aWJsZT0odC5jb21wYXRpYmlsaXR5SGlzdG9ncmFtLmluY29tcGF0aWJsZXx8MCkrMSxDZS5leHBvcnRzLmVhY2goaS5pbkVtYmVkZGluZ3MsKGU9PntlLmNvbXBhdGlibGU/dC5jb21wYXRpYmlsaXR5SGlzdG9ncmFtLmNvbXBhdGlibGU9KHQuY29tcGF0aWJpbGl0eUhpc3RvZ3JhbS5jb21wYXRpYmxlfHwwKSsxOnQuY29tcGF0aWJpbGl0eUhpc3RvZ3JhbS5pbmNvbXBhdGlibGU9KHQuY29tcGF0aWJpbGl0eUhpc3RvZ3JhbS5pbmNvbXBhdGlibGV8fDApKzF9KSksQ2UuZXhwb3J0cy5lYWNoKGkub3V0RW1iZWRkaW5ncywoZT0+e2UuY29tcGF0aWJsZT90LmNvbXBhdGliaWxpdHlIaXN0b2dyYW0uY29tcGF0aWJsZT0odC5jb21wYXRpYmlsaXR5SGlzdG9ncmFtLmNvbXBhdGlibGV8fDApKzE6dC5jb21wYXRpYmlsaXR5SGlzdG9ncmFtLmluY29tcGF0aWJsZT0odC5jb21wYXRpYmlsaXR5SGlzdG9ncmFtLmluY29tcGF0aWJsZXx8MCkrMX0pKSxpLnBhcmVudE5vZGU9dCxuW2VdPXIsYS5yZW1vdmVOb2RlKGUpfSkpKX0pKX1mdW5jdGlvbiBjS3QodCxlLG4pe2xldCBpPXt9O3JldHVybiBDZS5leHBvcnRzLmVhY2godCwoZnVuY3Rpb24odCxyKXtpZih0Lmxlbmd0aDw9MSlyZXR1cm47bGV0IG89e307Q2UuZXhwb3J0cy5lYWNoKHQsKGZ1bmN0aW9uKHQpe2NvbnN0IGU9IioiPT09dC5jaGFyQXQodC5sZW5ndGgtMSksaT10LnNwbGl0KCIvIikscj1pW2kubGVuZ3RoLTFdLGE9aS5zbGljZSgwLGkubGVuZ3RoLTEpLmpvaW4oIi8iKSxzPXIubWF0Y2goL14oXEQqKShcZCspJC8pO2xldCBsLGMsdT0iIjtzPyhsPXNbMV0sYz1zWzJdKToobD1lP3Iuc3Vic3RyKDAsci5sZW5ndGgtMSk6cixjPTAsdT1lPyIqIjoiIik7Y29uc3QgaD1WJHQobCx1LGEpO29baF09b1toXXx8W107Y29uc3QgZD1GJHQobCx1LGEsK2MsdCxuKTtvW2hdLnB1c2goZCl9KSksQ2UuZXhwb3J0cy5lYWNoKG8sKGZ1bmN0aW9uKHQsbyl7aWYodC5sZW5ndGg8MilyZXR1cm47dC5zb3J0KChmdW5jdGlvbih0LGUpe3JldHVybit0LmNsdXN0ZXJJZC0rZS5jbHVzdGVySWR9KSk7bGV0IGE9W3RbMF1dO2ZvcihsZXQgbz0xO288dC5sZW5ndGg7bysrKXtsZXQgcz10W29dO3MuY2x1c3RlcklkIT09YVthLmxlbmd0aC0xXS5jbHVzdGVySWQrMT8oaEt0KGEsaSwrcixlLG4pLGE9W3NdKTphLnB1c2gocyl9aEt0KGEsaSwrcixlLG4pfSkpfSkpLGl9ZnVuY3Rpb24gdUt0KHQsZSxuKXtsZXQgaT17fTtyZXR1cm4gQ2UuZXhwb3J0cy5lYWNoKHQsKGZ1bmN0aW9uKHQscil7aWYodC5sZW5ndGg8PTEpcmV0dXJuO2xldCBvPXt9LGE9e307Q2UuZXhwb3J0cy5lYWNoKHQsKGZ1bmN0aW9uKHQpe2xldCBlPSIqIj09PXQuY2hhckF0KHQubGVuZ3RoLTEpLGk9dC5zcGxpdCgiLyIpLHI9aVtpLmxlbmd0aC0xXSxzPWkuc2xpY2UoMCxpLmxlbmd0aC0xKS5qb2luKCIvIik7Y29uc3QgbD0vKFxkKykvZztsZXQgYyx1LGgsZCxwLGY9MDtmb3IoO2M9bC5leGVjKHIpOykrK2YsdT1yLnNsaWNlKDAsYy5pbmRleCksaD1jWzBdLGQ9ci5zbGljZShjLmluZGV4K2NbMF0ubGVuZ3RoKSxwPVYkdCh1LGQscyksb1twXT1vW3BdLG9bcF18fChvW3BdPUYkdCh1LGQscywraCx0LG4pKSxvW3BdLmlkcy5wdXNoKGgpLGFbdF09YVt0XXx8W10sYVt0XS5wdXNoKFtwLGhdKTtmPDEmJih1PWU/ci5zdWJzdHIoMCxyLmxlbmd0aC0xKTpyLGg9MCxkPWU/IioiOiIiLHA9ViR0KHUsZCxzKSxvW3BdPW9bcF0sb1twXXx8KG9bcF09RiR0KHUsZCxzLCtoLHQsbikpLG9bcF0uaWRzLnB1c2goaCksYVt0XT1hW3RdfHxbXSxhW3RdLnB1c2goW3AsaF0pKX0pKTt2YXIgcz17fTtDZS5leHBvcnRzLmVhY2goYSwoZnVuY3Rpb24odCxlKXt0LnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIG9bZVswXV0uaWRzLmxlbmd0aC1vW3RbMF1dLmlkcy5sZW5ndGh9KSk7dmFyIGk9dFswXVswXSxyPXRbMF1bMV07c1tpXT1zW2ldfHxbXTtjb25zdCBhPWUuc3BsaXQoIi8iKSxsPWEuc2xpY2UoMCxhLmxlbmd0aC0xKS5qb2luKCIvIik7dmFyIGM9RiR0KG9baV0ucHJlZml4LG9baV0uc3VmZml4LGwsK3IsZSxuKTtzW2ldLnB1c2goYyl9KSksQ2UuZXhwb3J0cy5lYWNoKHMsKGZ1bmN0aW9uKHQsbyl7aWYodC5sZW5ndGg8MilyZXR1cm47dC5zb3J0KChmdW5jdGlvbih0LGUpe3JldHVybit0LmNsdXN0ZXJJZC0rZS5jbHVzdGVySWR9KSk7bGV0IGE9W3RbMF1dO2ZvcihsZXQgbz0xO288dC5sZW5ndGg7bysrKXtsZXQgcz10W29dO3MuY2x1c3RlcklkIT09YVthLmxlbmd0aC0xXS5jbHVzdGVySWQrMT8oaEt0KGEsaSwrcixlLG4pLGE9W3NdKTphLnB1c2gocyl9aEt0KGEsaSwrcixlLG4pfSkpfSkpLGl9ZnVuY3Rpb24gaEt0KHQsZSxuLGkscil7aWYodC5sZW5ndGg+MSl7bGV0IG89ViR0KHRbMF0ucHJlZml4LHRbMF0uc3VmZml4LHRbMF0ucGFyZW50LHRbMF0uY2x1c3RlcklkLHRbdC5sZW5ndGgtMV0uY2x1c3RlcklkKSxhPUYkdCh0WzBdLnByZWZpeCx0WzBdLnN1ZmZpeCx0WzBdLnBhcmVudCxuLG8scik7Q2UuZXhwb3J0cy5lYWNoKHQsKGZ1bmN0aW9uKHQpe2EuaWRzLnB1c2godC5jbHVzdGVySWQpLGEubWV0YWdyYXBoLnNldE5vZGUodC5uYW1lLGkubm9kZSh0Lm5hbWUpKX0pKSxlW29dPWF9fWxldCBkS3Q9IiNmZmZmZmYiLHBLdD0iI2IyYjJiMiIsZkt0PSIjMGY5ZDU4IixtS3Q9IiNkYjQ0MzciLGdLdD17REVGQVVMVF9GSUxMOiIjZDlkOWQ5IixERUZBVUxUX1NUUk9LRToiI2E2YTZhNiIsU0FUVVJBVElPTjouNixMSUdIVE5FU1M6Ljg1LEVYUEFOREVEX0NPTE9SOiIjZjBmMGYwIixIVUVTOlsyMjAsMTAwLDE4MCw0MCwyMCwzNDAsMjYwLDMwMCwxNDAsNjBdLFNUUlVDVFVSRV9QQUxFVFRFKHQsZSl7bGV0IG49Z0t0LkhVRVMsaT1uW3Qlbi5sZW5ndGhdLHI9TWF0aC5zaW4oaSpNYXRoLlBJLzM2MCk7cmV0dXJuIGNkKGksLjAxKihlPzMwOjkwLTYwKnIpLC4wMSooZT85NTo4MCkpLnRvU3RyaW5nKCl9LERFVklDRV9QQUxFVFRFOnQ9PmdLdC5TVFJVQ1RVUkVfUEFMRVRURSh0KSxYTEFfQ0xVU1RFUl9QQUxFVFRFOnQ9PmdLdC5TVFJVQ1RVUkVfUEFMRVRURSh0KSxVTktOT1dOOiIjZWVlIixHUkFESUVOVF9PVVRMSU5FOiIjODg4In0sX0t0PSJ3aGl0ZSIseUt0PSIjYjJiMmIyIjtjb25zdCB2S3Q9MTUsYkt0PTUseEt0PTQsd0t0PTQsU0t0PVsiTm9PcCJdLE1LdD1bXSxFS3Q9WyIjZmZmNWYwIiwiI2ZiNmE0YSJdLFRLdD01LENLdD1uZXcgUmVnRXhwKCJeKD86X19mdW5jdGlvbl9saWJyYXJ5X18pPyhcXHcrKV9bYS16MC05XXs4fSg/Ol9cXGQrKT8kIik7Y2xhc3MgQUt0e2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLmhpZXJhcmNoeT10LHRoaXMuZGlzcGxheWluZ1N0YXRzPWUsdGhpcy5hdXRvRXh0cmFjdE5vZGVzPW4sdGhpcy5pbmRleD17fSx0aGlzLnJlbmRlcmVkT3BOYW1lcz1bXSx0aGlzLmNvbXB1dGVTY2FsZXMoKSx0aGlzLmhhc1N1YmhpZXJhcmNoeT17fSx0aGlzLnJvb3Q9bmV3IHpLdCh0LnJvb3QsdC5ncmFwaE9wdGlvbnMpLHRoaXMuaW5kZXhbdC5yb290Lm5hbWVdPXRoaXMucm9vdCx0aGlzLnJlbmRlcmVkT3BOYW1lcy5wdXNoKHQucm9vdC5uYW1lKSx0aGlzLmJ1aWxkU3ViaGllcmFyY2h5KHQucm9vdC5uYW1lKSx0aGlzLnJvb3QuZXhwYW5kZWQ9ITAsdGhpcy50cmFjZUlucHV0cz0hMX1jb21wdXRlU2NhbGVzKCl7dGhpcy5kZXZpY2VDb2xvck1hcD1ZTSgpLmRvbWFpbih0aGlzLmhpZXJhcmNoeS5kZXZpY2VzKS5yYW5nZShDZS5leHBvcnRzLm1hcChLbCh0aGlzLmhpZXJhcmNoeS5kZXZpY2VzLmxlbmd0aCksZ0t0LkRFVklDRV9QQUxFVFRFKSksdGhpcy54bGFDbHVzdGVyQ29sb3JNYXA9WU0oKS5kb21haW4odGhpcy5oaWVyYXJjaHkueGxhQ2x1c3RlcnMpLnJhbmdlKENlLmV4cG9ydHMubWFwKEtsKHRoaXMuaGllcmFyY2h5LnhsYUNsdXN0ZXJzLmxlbmd0aCksZ0t0LlhMQV9DTFVTVEVSX1BBTEVUVEUpKTtsZXQgdD10aGlzLmhpZXJhcmNoeS5yb290Lm1ldGFncmFwaCxlPW9jKHQubm9kZXMoKSwoKGUsbik9PntsZXQgaT10Lm5vZGUoZSk7aWYobnVsbCE9aS5zdGF0cylyZXR1cm4gaS5zdGF0cy50b3RhbEJ5dGVzfSkpO3RoaXMubWVtb3J5VXNhZ2VTY2FsZT1jRSgpLmRvbWFpbihbMCxlXSkucmFuZ2UoRUt0KTtsZXQgbj1vYyh0Lm5vZGVzKCksKChlLG4pPT57bGV0IGk9dC5ub2RlKGUpO2lmKG51bGwhPWkuc3RhdHMpcmV0dXJuIGkuc3RhdHMuZ2V0VG90YWxNaWNyb3MoKX0pKTt0aGlzLmNvbXB1dGVUaW1lU2NhbGU9Y0UoKS5kb21haW4oWzAsbl0pLnJhbmdlKEVLdCksdGhpcy5lZGdlV2lkdGhTaXplZEJhc2VkU2NhbGU9dGhpcy5oaWVyYXJjaHkuaGFzU2hhcGVJbmZvP3UkdDpjRSgpLmRvbWFpbihbMSx0aGlzLmhpZXJhcmNoeS5tYXhNZXRhRWRnZVNpemVdKS5yYW5nZShbYyR0LDEyXSl9Z2V0UmVuZGVyTm9kZUJ5TmFtZSh0KXtyZXR1cm4gdGhpcy5pbmRleFt0XX1nZXROb2RlQnlOYW1lKHQpe3JldHVybiB0aGlzLmhpZXJhcmNoeS5ub2RlKHQpfWNvbG9ySGlzdG9ncmFtKHQsZSl7aWYoT2JqZWN0LmtleXModCkubGVuZ3RoPjApe2NvbnN0IG49Q2UuZXhwb3J0cy5zdW0oT2JqZWN0LmtleXModCkubWFwKChlPT50W2VdKSkpO3JldHVybiBPYmplY3Qua2V5cyh0KS5tYXAoKGk9Pih7Y29sb3I6ZShpKSxwcm9wb3J0aW9uOnRbaV0vbn0pKSl9cmV0dXJuIG51bGx9Z2V0T3JDcmVhdGVSZW5kZXJOb2RlQnlOYW1lKHQpe2lmKCF0KXJldHVybiBudWxsO2lmKHQgaW4gdGhpcy5pbmRleClyZXR1cm4gdGhpcy5pbmRleFt0XTtsZXQgZT10aGlzLmhpZXJhcmNoeS5ub2RlKHQpO2lmKCFlKXJldHVybiBudWxsO2xldCBuPWUuaXNHcm91cE5vZGU/bmV3IHpLdChlLHRoaXMuaGllcmFyY2h5LmdyYXBoT3B0aW9ucyk6bmV3IE5LdChlKTt0aGlzLmluZGV4W3RdPW4sdGhpcy5yZW5kZXJlZE9wTmFtZXMucHVzaCh0KSxlLnN0YXRzJiYobi5tZW1vcnlDb2xvcj10aGlzLm1lbW9yeVVzYWdlU2NhbGUoZS5zdGF0cy50b3RhbEJ5dGVzKSxuLmNvbXB1dGVUaW1lQ29sb3I9dGhpcy5jb21wdXRlVGltZVNjYWxlKGUuc3RhdHMuZ2V0VG90YWxNaWNyb3MoKSkpLG4uaXNGYWRlZE91dD10aGlzLmRpc3BsYXlpbmdTdGF0cyYmIWIkdChlLnN0YXRzKTt2YXIgaT1udWxsLHI9bnVsbCxvPW51bGw7aWYoZS5pc0dyb3VwTm9kZSl7aT1lLmRldmljZUhpc3RvZ3JhbSxyPWUueGxhQ2x1c3Rlckhpc3RvZ3JhbTtsZXQgdD1lLmNvbXBhdGliaWxpdHlIaXN0b2dyYW0uY29tcGF0aWJsZSxuPWUuY29tcGF0aWJpbGl0eUhpc3RvZ3JhbS5pbmNvbXBhdGlibGU7MD09dCYmMD09bnx8KG89dC8odCtuKSl9ZWxzZXtsZXQgdD1uLm5vZGUuZGV2aWNlO3QmJihpPXtbdF06MX0pO2xldCBlPW4ubm9kZS54bGFDbHVzdGVyO2UmJihyPXtbZV06MX0pLG4ubm9kZS50eXBlPT09QSR0Lk9QJiYobz1uLm5vZGUuY29tcGF0aWJsZT8xOjApfXJldHVybiBpJiYobi5kZXZpY2VDb2xvcnM9dGhpcy5jb2xvckhpc3RvZ3JhbShpLHRoaXMuZGV2aWNlQ29sb3JNYXApKSxyJiYobi54bGFDbHVzdGVyQ29sb3JzPXRoaXMuY29sb3JIaXN0b2dyYW0ocix0aGlzLnhsYUNsdXN0ZXJDb2xvck1hcCkpLG51bGwhPW8mJihuLmNvbXBhdGliaWxpdHlDb2xvcnM9W3tjb2xvcjpmS3QscHJvcG9ydGlvbjpvfSx7Y29sb3I6bUt0LHByb3BvcnRpb246MS1vfV0pLHRoaXMuaW5kZXhbdF19Z2V0TmVhcmVzdFZpc2libGVBbmNlc3Rvcih0KXtsZXQgZT1aJHQodCksbj0wLGk9bnVsbCxyPXQ7Zm9yKDtuPGUubGVuZ3RoJiYocj1lW25dLGk9dGhpcy5nZXRSZW5kZXJOb2RlQnlOYW1lKHIpLGkuZXhwYW5kZWQpO24rKyk7aWYobj09ZS5sZW5ndGgtMil7bGV0IHQ9ZVtuKzFdO2lmKGkuaW5Bbm5vdGF0aW9ucy5ub2RlTmFtZXNbdF0pcmV0dXJuIHQ7aWYoaS5vdXRBbm5vdGF0aW9ucy5ub2RlTmFtZXNbdF0pcmV0dXJuIHR9cmV0dXJuIHJ9c2V0RGVwdGgodCl7REt0KHRoaXMucm9vdCwrdCl9aXNOb2RlQXV4aWxpYXJ5KHQpe2xldCBlPXRoaXMuZ2V0UmVuZGVyTm9kZUJ5TmFtZSh0Lm5vZGUucGFyZW50Tm9kZS5uYW1lKSxuPUNlLmV4cG9ydHMuZmluZChlLmlzb2xhdGVkSW5FeHRyYWN0LChlPT5lLm5vZGUubmFtZT09PXQubm9kZS5uYW1lKSk7cmV0dXJuISFufHwobj1DZS5leHBvcnRzLmZpbmQoZS5pc29sYXRlZE91dEV4dHJhY3QsKGU9PmUubm9kZS5uYW1lPT09dC5ub2RlLm5hbWUpKSwhIW4pfWdldE5hbWVzT2ZSZW5kZXJlZE9wcygpe3JldHVybiB0aGlzLnJlbmRlcmVkT3BOYW1lc31jbG9uZUFuZEFkZEZ1bmN0aW9uT3BOb2RlKHQsZSxuLGkpe2NvbnN0IHI9bi5uYW1lLnJlcGxhY2UoZSxpKTtsZXQgbz10Lm1ldGFncmFwaC5ub2RlKHIpO2lmKG8pcmV0dXJuIG87bz1uZXcgTyR0KHtuYW1lOnIsaW5wdXQ6W10sZGV2aWNlOm4uZGV2aWNlLG9wOm4ub3AsYXR0cjpDZS5leHBvcnRzLmNsb25lRGVlcChuLmF0dHIpfSksby5jYXJkaW5hbGl0eT1uLmNhcmRpbmFsaXR5LG8uaW5jbHVkZT1uLmluY2x1ZGUsby5vdXRwdXRTaGFwZXM9Q2UuZXhwb3J0cy5jbG9uZURlZXAobi5vdXRwdXRTaGFwZXMpLG8ueGxhQ2x1c3Rlcj1uLnhsYUNsdXN0ZXIsby5mdW5jdGlvbklucHV0SW5kZXg9bi5mdW5jdGlvbklucHV0SW5kZXgsby5mdW5jdGlvbk91dHB1dEluZGV4PW4uZnVuY3Rpb25PdXRwdXRJbmRleCxvLmlucHV0cz1uLmlucHV0cy5tYXAoKHQ9Pntjb25zdCBuPUNlLmV4cG9ydHMuY2xvbmUodCk7cmV0dXJuIG4ubmFtZT10Lm5hbWUucmVwbGFjZShlLGkpLG59KSksby5wYXJlbnROb2RlPXQsdC5tZXRhZ3JhcGguc2V0Tm9kZShvLm5hbWUsbyksdGhpcy5oaWVyYXJjaHkuc2V0Tm9kZShvLm5hbWUsbyk7Y29uc3QgYT1uPT50aGlzLmNsb25lQW5kQWRkRnVuY3Rpb25PcE5vZGUodCxlLG4saSk7cmV0dXJuIG8uaW5FbWJlZGRpbmdzPW4uaW5FbWJlZGRpbmdzLm1hcChhKSxvLm91dEVtYmVkZGluZ3M9bi5vdXRFbWJlZGRpbmdzLm1hcChhKSxvfWNsb25lRnVuY3Rpb25MaWJyYXJ5TWV0YW5vZGUodCxlLG4saSxyKXtjb25zdCBvPXt9LGE9dGhpcy5jbG9uZUZ1bmN0aW9uTGlicmFyeU1ldGFub2RlSGVscGVyKHQsZSxuLGkscixvKTtyZXR1cm4gQ2UuZXhwb3J0cy5pc0VtcHR5KG8pfHx0aGlzLnBhdGNoRWRnZXNGcm9tRnVuY3Rpb25PdXRwdXRzKGUsbyksYX1jbG9uZUZ1bmN0aW9uTGlicmFyeU1ldGFub2RlSGVscGVyKHQsZSxuLGkscixvKXtjb25zdCBhPXokdChuLm5hbWUucmVwbGFjZShpLHIpKTtyZXR1cm4gYS5kZXB0aD1uLmRlcHRoLGEuY2FyZGluYWxpdHk9bi5jYXJkaW5hbGl0eSxhLnRlbXBsYXRlSWQ9bi50ZW1wbGF0ZUlkLGEub3BIaXN0b2dyYW09Q2UuZXhwb3J0cy5jbG9uZShuLm9wSGlzdG9ncmFtKSxhLmRldmljZUhpc3RvZ3JhbT1DZS5leHBvcnRzLmNsb25lKG4uZGV2aWNlSGlzdG9ncmFtKSxhLnhsYUNsdXN0ZXJIaXN0b2dyYW09Q2UuZXhwb3J0cy5jbG9uZShuLnhsYUNsdXN0ZXJIaXN0b2dyYW0pLGEuaGFzTm9uQ29udHJvbEVkZ2VzPW4uaGFzTm9uQ29udHJvbEVkZ2VzLGEuaW5jbHVkZT1uLmluY2x1ZGUsYS5ub2RlQXR0cmlidXRlcz1DZS5leHBvcnRzLmNsb25lKG4ubm9kZUF0dHJpYnV0ZXMpLGEuYXNzb2NpYXRlZEZ1bmN0aW9uPW4uYXNzb2NpYXRlZEZ1bmN0aW9uLENlLmV4cG9ydHMuZWFjaChuLm1ldGFncmFwaC5ub2RlcygpLChzPT57Y29uc3QgbD1uLm1ldGFncmFwaC5ub2RlKHMpO3N3aXRjaChsLnR5cGUpe2Nhc2UgQSR0Lk1FVEE6Y29uc3Qgbj10aGlzLmNsb25lRnVuY3Rpb25MaWJyYXJ5TWV0YW5vZGVIZWxwZXIodCxlLGwsaSxyLG8pO24ucGFyZW50Tm9kZT1hLGEubWV0YWdyYXBoLnNldE5vZGUobi5uYW1lLG4pLHRoaXMuaGllcmFyY2h5LnNldE5vZGUobi5uYW1lLG4pO2JyZWFrO2Nhc2UgQSR0Lk9QOmNvbnN0IHM9dGhpcy5jbG9uZUFuZEFkZEZ1bmN0aW9uT3BOb2RlKGEsaSxsLHIpO0NlLmV4cG9ydHMuaXNOdW1iZXIocy5mdW5jdGlvbklucHV0SW5kZXgpJiZ0aGlzLnBhdGNoRWRnZXNJbnRvRnVuY3Rpb25JbnB1dHMoZSxzKSxDZS5leHBvcnRzLmlzTnVtYmVyKHMuZnVuY3Rpb25PdXRwdXRJbmRleCkmJihvW3MuZnVuY3Rpb25PdXRwdXRJbmRleF09cyk7YnJlYWs7ZGVmYXVsdDpjb25zb2xlLndhcm4obC5uYW1lKyIgaXMgb2RkbHkgbmVpdGhlciBhIG1ldGFub2RlIG5vciBhbiBvcG5vZGUuIil9fSkpLHRoaXMuY2xvbmVMaWJyYXJ5TWV0YW5vZGVFZGdlcyhuLGEsaSxyKSxhfWNsb25lTGlicmFyeU1ldGFub2RlRWRnZXModCxlLG4saSl7Q2UuZXhwb3J0cy5lYWNoKHQubWV0YWdyYXBoLmVkZ2VzKCksKHI9Pntjb25zdCBvPXQubWV0YWdyYXBoLmVkZ2UociksYT1vLnYucmVwbGFjZShuLGkpLHM9by53LnJlcGxhY2UobixpKSxsPW5ldyBIJHQoYSxzKTtsLmluYm91bmQ9by5pbmJvdW5kLGwubnVtUmVndWxhckVkZ2VzPW8ubnVtUmVndWxhckVkZ2VzLGwubnVtQ29udHJvbEVkZ2VzPW8ubnVtQ29udHJvbEVkZ2VzLGwubnVtUmVmRWRnZXM9by5udW1SZWZFZGdlcyxsLnRvdGFsU2l6ZT1vLnRvdGFsU2l6ZSxvLmJhc2VFZGdlTGlzdCYmKGwuYmFzZUVkZ2VMaXN0PW8uYmFzZUVkZ2VMaXN0Lm1hcCgodD0+e2NvbnN0IGU9Q2UuZXhwb3J0cy5jbG9uZSh0KTtyZXR1cm4gZS52PXQudi5yZXBsYWNlKG4saSksZS53PXQudy5yZXBsYWNlKG4saSksZX0pKSksZS5tZXRhZ3JhcGgubm9kZShzKT9lLm1ldGFncmFwaC5zZXRFZGdlKGEscyxsKTplLm1ldGFncmFwaC5zZXRFZGdlKHMsYSxsKX0pKX1wYXRjaEVkZ2VzSW50b0Z1bmN0aW9uSW5wdXRzKHQsZSl7bGV0IG49TWF0aC5taW4oZS5mdW5jdGlvbklucHV0SW5kZXgsdC5pbnB1dHMubGVuZ3RoLTEpLGk9Q2UuZXhwb3J0cy5jbG9uZSh0LmlucHV0c1tuXSk7Zm9yKDtpLmlzQ29udHJvbERlcGVuZGVuY3k7KW4rKyxpPXQuaW5wdXRzW25dO2UuaW5wdXRzLnB1c2goaSk7Y29uc3Qgcj10aGlzLmhpZXJhcmNoeS5nZXRQcmVkZWNlc3NvcnModC5uYW1lKTtsZXQgbyxhPTA7Q2UuZXhwb3J0cy5lYWNoKHIucmVndWxhciwodD0+e2lmKGErPXQubnVtUmVndWxhckVkZ2VzLGE+bilyZXR1cm4gbz10LCExfSkpLENlLmV4cG9ydHMuZWFjaChvLmJhc2VFZGdlTGlzdCwobj0+e24udz09PXQubmFtZSYmKG4udz1lLm5hbWUpLG4udj09PXQubmFtZSYmKG4udj1lLm5hbWUpfSkpfXBhdGNoRWRnZXNGcm9tRnVuY3Rpb25PdXRwdXRzKHQsZSl7Y29uc3Qgbj10aGlzLmhpZXJhcmNoeS5nZXRTdWNjZXNzb3JzKHQubmFtZSk7Q2UuZXhwb3J0cy5lYWNoKG4ucmVndWxhciwobj0+e0NlLmV4cG9ydHMuZWFjaChuLmJhc2VFZGdlTGlzdCwobj0+e2NvbnN0IGk9dGhpcy5oaWVyYXJjaHkubm9kZShuLncpO0NlLmV4cG9ydHMuZWFjaChpLmlucHV0cywoaT0+e2lmKGkubmFtZT09PXQubmFtZSl7aS5uYW1lPWVbaS5vdXRwdXRUZW5zb3JLZXldLm5hbWUsaS5vdXRwdXRUZW5zb3JLZXk9bi5vdXRwdXRUZW5zb3JLZXl9fSkpfSkpLENlLmV4cG9ydHMuZWFjaChuLmJhc2VFZGdlTGlzdCwodD0+e3Qudj1lW3Qub3V0cHV0VGVuc29yS2V5XS5uYW1lLHQub3V0cHV0VGVuc29yS2V5PSIwIn0pKX0pKX1idWlsZFN1YmhpZXJhcmNoeSh0KXtpZih0IGluIHRoaXMuaGFzU3ViaGllcmFyY2h5KXJldHVybjt0aGlzLmhhc1N1YmhpZXJhcmNoeVt0XT0hMDtsZXQgZT10aGlzLmluZGV4W3RdO2lmKGUubm9kZS50eXBlIT09QSR0Lk1FVEEmJmUubm9kZS50eXBlIT09QSR0LlNFUklFUylyZXR1cm47bGV0IG49ZSxpPW4ubm9kZS5tZXRhZ3JhcGgscj1uLmNvcmVHcmFwaDtjb25zdCBvPVtdLGE9W107Q2UuZXhwb3J0cy5pc0VtcHR5KHRoaXMuaGllcmFyY2h5LmxpYnJhcnlGdW5jdGlvbnMpfHwoQ2UuZXhwb3J0cy5lYWNoKGkubm9kZXMoKSwodD0+e2NvbnN0IGU9aS5ub2RlKHQpLG49dGhpcy5oaWVyYXJjaHkubGlicmFyeUZ1bmN0aW9uc1tlLm9wXTtpZighbilyZXR1cm47aWYoMD09PXQuaW5kZXhPZihUJHQpKXJldHVybjtjb25zdCByPXRoaXMuY2xvbmVGdW5jdGlvbkxpYnJhcnlNZXRhbm9kZShpLGUsbi5ub2RlLG4ubm9kZS5uYW1lLGUubmFtZSk7by5wdXNoKGUpLGEucHVzaChyKX0pKSxDZS5leHBvcnRzLmVhY2goYSwoKHQsZSk9Pntjb25zdCBuPW9bZV07dC5wYXJlbnROb2RlPW4ucGFyZW50Tm9kZSxpLnNldE5vZGUobi5uYW1lLHQpLHRoaXMuaGllcmFyY2h5LnNldE5vZGUobi5uYW1lLHQpfSkpKSxDZS5leHBvcnRzLmVhY2goaS5ub2RlcygpLCh0PT57bGV0IGU9dGhpcy5nZXRPckNyZWF0ZVJlbmRlck5vZGVCeU5hbWUodCksbj1lLm5vZGU7ci5zZXROb2RlKHQsZSksbi5pc0dyb3VwTm9kZXx8KENlLmV4cG9ydHMuZWFjaChuLmluRW1iZWRkaW5ncywodD0+e2xldCBuPW5ldyBJS3QobnVsbCksaT1uZXcgTkt0KHQpO1JLdChlLHQsaSxuLExLdC5DT05TVEFOVCksdGhpcy5pbmRleFt0Lm5hbWVdPWl9KSksQ2UuZXhwb3J0cy5lYWNoKG4ub3V0RW1iZWRkaW5ncywodD0+e2xldCBuPW5ldyBJS3QobnVsbCksaT1uZXcgTkt0KHQpO09LdChlLHQsaSxuLExLdC5TVU1NQVJZKSx0aGlzLmluZGV4W3QubmFtZV09aX0pKSl9KSksQ2UuZXhwb3J0cy5lYWNoKGkuZWRnZXMoKSwodD0+e2xldCBlPWkuZWRnZSh0KSxuPW5ldyBJS3QoZSk7bi5pc0ZhZGVkT3V0PXRoaXMuaW5kZXhbdC52XS5pc0ZhZGVkT3V0fHx0aGlzLmluZGV4W3Qud10uaXNGYWRlZE91dCxyLnNldEVkZ2UodC52LHQudyxuKX0pKSxuLm5vZGUudHlwZT09PUEkdC5NRVRBJiYoZnVuY3Rpb24gcyh0LGUpeyhmdW5jdGlvbiBuKHQpe2xldCBlPXQuY29yZUdyYXBoO0NlLmV4cG9ydHMuZWFjaChlLm5vZGVzKCksKG49PntlLm5vZGUobikubm9kZS5pbmNsdWRlIT09ayR0LkVYQ0xVREV8fG4uc3RhcnRzV2l0aChUJHQpfHwodC5jb3JlR3JhcGgub3V0RWRnZXMobikubGVuZ3RoPnQuY29yZUdyYXBoLmluRWRnZXMobikubGVuZ3RoP0hLdCh0LG4pOkZLdCh0LG4pKX0pKX0pKHQpLFNLdC5sZW5ndGgmJihmdW5jdGlvbiBpKHQpe2xldCBlPXQuY29yZUdyYXBoO0NlLmV4cG9ydHMuZWFjaChlLm5vZGVzKCksKG49PntsZXQgaT1lLm5vZGUobik7aS5ub2RlLmluY2x1ZGU9PT1rJHQuVU5TUEVDSUZJRUQmJlZLdChpLm5vZGUsU0t0KSYmSEt0KHQsbil9KSl9KSh0KTtNS3QubGVuZ3RoJiYoZnVuY3Rpb24gcih0KXtsZXQgZT10LmNvcmVHcmFwaDtDZS5leHBvcnRzLmVhY2goZS5ub2RlcygpLChuPT57bGV0IGk9ZS5ub2RlKG4pO2kubm9kZS5pbmNsdWRlPT09ayR0LlVOU1BFQ0lGSUVEJiZWS3QoaS5ub2RlLE1LdCkmJkZLdCh0LG4pfSkpfSkodCk7ZSYmKGZ1bmN0aW9uIG8odCl7bGV0IGU9dC5jb3JlR3JhcGgsbj17fSxpPXt9LHI9MDtpZihDZS5leHBvcnRzLmVhY2goZS5ub2RlcygpLCh0PT57aWYoZS5ub2RlKHQpLm5vZGUuaW5jbHVkZSE9PWskdC5VTlNQRUNJRklFRClyZXR1cm47bGV0IG89Q2UuZXhwb3J0cy5yZWR1Y2UoZS5wcmVkZWNlc3NvcnModCksKChuLGkpPT5uKyhlLmVkZ2UoaSx0KS5tZXRhZWRnZS5udW1SZWd1bGFyRWRnZXM/MTowKSksMCk7MD09PW8mJmUucHJlZGVjZXNzb3JzKHQpLmxlbmd0aD4wJiYobz1lLnByZWRlY2Vzc29ycyh0KS5sZW5ndGgpO2xldCBhPUNlLmV4cG9ydHMucmVkdWNlKGUuc3VjY2Vzc29ycyh0KSwoKG4saSk9Pm4rKGUuZWRnZSh0LGkpLm1ldGFlZGdlLm51bVJlZ3VsYXJFZGdlcz8xOjApKSwwKTswPT09YSYmZS5zdWNjZXNzb3JzKHQpLmxlbmd0aD4wJiYoYT1lLnN1Y2Nlc3NvcnModCkubGVuZ3RoKSxuW3RdPW8saVt0XT1hLHIrK30pKSxyPHZLdClyZXR1cm47bGV0IG89Ykt0LTEsYT1NYXRoLnJvdW5kKC43NSpyKSxzPU1hdGgucm91bmQoLjI1KnIpLGw9T2JqZWN0LmtleXMobikuc29ydCgoKHQsZSk9Pm5bdF0tbltlXSkpLGM9bltsW2FdXSx1PWMrYy1uW2xbc11dO3U9TWF0aC5tYXgodSxvKTtmb3IobGV0IGU9ci0xO25bbFtlXV0+dTtlLS0pRkt0KHQsbFtlXSk7bGV0IGg9T2JqZWN0LmtleXMoaSkuc29ydCgoKHQsZSk9PmlbdF0taVtlXSkpLGQ9aVtoW2FdXSxwPWQrNCooZC1pW2hbc11dKTtwPU1hdGgubWF4KHAsbyk7Zm9yKGxldCBuPXItMTtpW2hbbl1dPnA7bi0tKXtsZXQgaT1lLm5vZGUoaFtuXSk7aSYmIWkuaXNJbkV4dHJhY3QmJkhLdCh0LGhbbl0pfX0pKHQpOyEoZnVuY3Rpb24gYSh0KXtsZXQgZT10LmNvcmVHcmFwaCxuPXt9O0NlLmV4cG9ydHMuZWFjaChlLmVkZ2VzKCksKHQ9PntlLmVkZ2UodCkubWV0YWVkZ2UubnVtUmVndWxhckVkZ2VzfHwoKG5bdC52XT1uW3Qudl18fFtdKS5wdXNoKHQpLChuW3Qud109blt0LnddfHxbXSkucHVzaCh0KSl9KSksQ2UuZXhwb3J0cy5lYWNoKG4sKCh0LG4pPT57dC5sZW5ndGg+eEt0JiZDZS5leHBvcnRzLmVhY2godCwodD0+Qkt0KGUsdC52LHQudykpKX0pKX0pKHQpO2xldCBzPXQuY29yZUdyYXBoO0NlLmV4cG9ydHMuZWFjaChzLm5vZGVzKCksKGU9PntsZXQgbj1zLm5vZGUoZSksaT1zLm5laWdoYm9ycyhlKS5sZW5ndGg7aWYobi5ub2RlLmluY2x1ZGU9PT1rJHQuVU5TUEVDSUZJRUQmJjA9PT1pKXtsZXQgaT1uLm91dEFubm90YXRpb25zLmxpc3QubGVuZ3RoPjAscj1uLmluQW5ub3RhdGlvbnMubGlzdC5sZW5ndGg+MDtuLmlzSW5FeHRyYWN0Pyh0Lmlzb2xhdGVkSW5FeHRyYWN0LnB1c2gobiksbi5ub2RlLmluY2x1ZGU9ayR0LkVYQ0xVREUscy5yZW1vdmVOb2RlKGUpKTpuLmlzT3V0RXh0cmFjdD8odC5pc29sYXRlZE91dEV4dHJhY3QucHVzaChuKSxuLm5vZGUuaW5jbHVkZT1rJHQuRVhDTFVERSxzLnJlbW92ZU5vZGUoZSkpOmkmJiFyPyhuLmlzSW5FeHRyYWN0PSEwLHQuaXNvbGF0ZWRJbkV4dHJhY3QucHVzaChuKSxuLm5vZGUuaW5jbHVkZT1rJHQuRVhDTFVERSxzLnJlbW92ZU5vZGUoZSkpOnImJiFpJiYobi5pc091dEV4dHJhY3Q9ITAsdC5pc29sYXRlZE91dEV4dHJhY3QucHVzaChuKSxuLm5vZGUuaW5jbHVkZT1rJHQuRVhDTFVERSxzLnJlbW92ZU5vZGUoZSkpfX0pKX0pKG4sdGhpcy5hdXRvRXh0cmFjdE5vZGVzKSxDZS5leHBvcnRzLmlzRW1wdHkodGhpcy5oaWVyYXJjaHkubGlicmFyeUZ1bmN0aW9ucyl8fHRoaXMuYnVpbGRTdWJoaWVyYXJjaGllc0Zvck5lZWRlZEZ1bmN0aW9ucyhpKSx0PT09RSR0JiZDZS5leHBvcnRzLmZvck93bih0aGlzLmhpZXJhcmNoeS5saWJyYXJ5RnVuY3Rpb25zLCgodCxlKT0+e2NvbnN0IGk9dC5ub2RlLG89dGhpcy5nZXRPckNyZWF0ZVJlbmRlck5vZGVCeU5hbWUoaS5uYW1lKTtuLmxpYnJhcnlGdW5jdGlvbnNFeHRyYWN0LnB1c2gobyksby5ub2RlLmluY2x1ZGU9ayR0LkVYQ0xVREUsci5yZW1vdmVOb2RlKGkubmFtZSl9KSk7bGV0IGw9bi5ub2RlLnBhcmVudE5vZGU7aWYoIWwpcmV0dXJuO2xldCBjPXRoaXMuaW5kZXhbbC5uYW1lXSx1PSh0LC4uLmUpPT5lLmNvbmNhdChbdD8iSU4iOiJPVVQiXSkuam9pbigifn4iKSxoPXRoaXMuaGllcmFyY2h5LmdldEJyaWRnZWdyYXBoKHQpLGQ9e2luOnt9LG91dDp7fSxjb250cm9sOnt9fTtDZS5leHBvcnRzLmVhY2goaC5lZGdlcygpLCh0PT57bGV0IGU9ISFpLm5vZGUodC53KSxuPWU/dC52OnQudztoLmVkZ2UodCkubnVtUmVndWxhckVkZ2VzP2U/ZC5vdXRbbl09KGQub3V0W25dfHwwKSsxOmQuaW5bbl09KGQuaW5bbl18fDApKzE6ZC5jb250cm9sW25dPShkLmNvbnRyb2xbbl18fDApKzF9KSk7bGV0IHA9dGhpcy5oaWVyYXJjaHkuZ2V0Tm9kZU1hcCgpO0NlLmV4cG9ydHMuZWFjaChoLmVkZ2VzKCksKG49PntsZXQgbz1oLmVkZ2UobiksYT0hIWkubm9kZShuLncpLFtzLGZdPWE/W24udyxuLnZdOltuLnYsbi53XSxtPXRoaXMuaW5kZXhbc10sZz10aGlzLmluZGV4W2ZdLF89Zz9nLm5vZGU6cFtmXSx5PSFvLm51bVJlZ3VsYXJFZGdlcyYmZC5jb250cm9sW2ZdPnhLdCxbLHZdPWE/W2UuaW5Bbm5vdGF0aW9ucyxtLmluQW5ub3RhdGlvbnNdOltlLm91dEFubm90YXRpb25zLG0ub3V0QW5ub3RhdGlvbnNdLGI9bnVsbCx4PSExO2lmKCEoKGE/ZC5vdXQ6ZC5pbilbZl0+d0t0KSYmIXkmJm0uaXNJbkNvcmUoKSl7bGV0IGU9ZT0+Yy5jb3JlR3JhcGguZWRnZShhP3t2OmUsdzp0fTp7djp0LHc6ZX0pO2I9ZShmKSxifHwoYj1lKHUoYSxmLGwubmFtZSkpKSx4PSEhYn1sZXQgdz0hMTtpZihiJiYhby5udW1SZWd1bGFyRWRnZXMpe2xldCB0PWIsZT1jLm5vZGU7Zm9yKDt0LmFkam9pbmluZ01ldGFlZGdlOyl0PXQuYWRqb2luaW5nTWV0YWVkZ2UsZT1lLnBhcmVudE5vZGU7bGV0IG49dGhpcy5oaWVyYXJjaHkuZ2V0VG9wb2xvZ2ljYWxPcmRlcmluZyhlLm5hbWUpLGk9dC5tZXRhZWRnZTt3PW5baS52XT5uW2kud119aWYoeD14JiYhdywheClyZXR1cm4gdm9pZCB2LnB1c2gobmV3IGtLdChfLGcsbmV3IElLdChvKSxMS3QuU0hPUlRDVVQsYSkpO2xldCBTPXUoYSx0KSxNPXUoYSxmLHQpLEU9ci5ub2RlKE0pO2lmKCFFKXtsZXQgdD1yLm5vZGUoUyk7aWYoIXQpe3Q9bmV3IE5LdCh7bmFtZTpTLHR5cGU6QSR0LkJSSURHRSxpc0dyb3VwTm9kZTohMSxjYXJkaW5hbGl0eTowLHBhcmVudE5vZGU6bnVsbCxzdGF0czpudWxsLGluY2x1ZGU6ayR0LlVOU1BFQ0lGSUVELGluYm91bmQ6YSxub2RlQXR0cmlidXRlczp7fX0pLHRoaXMuaW5kZXhbU109dCxyLnNldE5vZGUoUyx0KX1FPW5ldyBOS3Qoe25hbWU6TSx0eXBlOkEkdC5CUklER0UsaXNHcm91cE5vZGU6ITEsY2FyZGluYWxpdHk6MSxwYXJlbnROb2RlOm51bGwsc3RhdHM6bnVsbCxpbmNsdWRlOmskdC5VTlNQRUNJRklFRCxpbmJvdW5kOmEsbm9kZUF0dHJpYnV0ZXM6e319KSx0aGlzLmluZGV4W01dPUUsci5zZXROb2RlKE0sRSksci5zZXRQYXJlbnQoTSxTKSx0Lm5vZGUuY2FyZGluYWxpdHkrK31sZXQgVD1uZXcgSUt0KG8pO1QuYWRqb2luaW5nTWV0YWVkZ2U9YixhP3Iuc2V0RWRnZShNLHMsVCk6ci5zZXRFZGdlKHMsTSxUKX0pKSxDZS5leHBvcnRzLmVhY2goWyEwLCExXSwoZT0+e2xldCBuPXUoZSx0KSxpPXIubm9kZShuKTtpJiZDZS5leHBvcnRzLmVhY2goci5ub2RlcygpLChvPT57aWYoci5ub2RlKG8pLm5vZGUudHlwZT09PUEkdC5CUklER0UpcmV0dXJuO2lmKCEoZT8hci5wcmVkZWNlc3NvcnMobykubGVuZ3RoOiFyLnN1Y2Nlc3NvcnMobykubGVuZ3RoKSlyZXR1cm47bGV0IGE9dShlLHQsIlNUUlVDVFVSQUxfVEFSR0VUIikscz1yLm5vZGUoYSk7aWYoIXMpe3M9bmV3IE5LdCh7bmFtZTphLHR5cGU6QSR0LkJSSURHRSxpc0dyb3VwTm9kZTohMSxjYXJkaW5hbGl0eToxLHBhcmVudE5vZGU6bnVsbCxzdGF0czpudWxsLGluY2x1ZGU6ayR0LlVOU1BFQ0lGSUVELGluYm91bmQ6ZSxub2RlQXR0cmlidXRlczp7fX0pLHMuc3RydWN0dXJhbD0hMCx0aGlzLmluZGV4W2FdPXMsci5zZXROb2RlKGEscyksaS5ub2RlLmNhcmRpbmFsaXR5Kyssci5zZXRQYXJlbnQoYSxuKX1sZXQgbD1uZXcgSUt0KG51bGwpO2wuc3RydWN0dXJhbD0hMCxsLndlaWdodC0tLGU/ci5zZXRFZGdlKGEsbyxsKTpyLnNldEVkZ2UobyxhLGwpfSkpfSkpfWJ1aWxkU3ViaGllcmFyY2hpZXNGb3JOZWVkZWRGdW5jdGlvbnModCl7Q2UuZXhwb3J0cy5lYWNoKHQuZWRnZXMoKSwoZT0+e2xldCBuPXQuZWRnZShlKSxpPW5ldyBJS3Qobik7Q2UuZXhwb3J0cy5mb3JFYWNoKGkubWV0YWVkZ2UuYmFzZUVkZ2VMaXN0LCh0PT57Y29uc3QgZT10LnYuc3BsaXQoTSR0KTtmb3IobGV0IHQ9ZS5sZW5ndGg7dD49MDt0LS0pe2NvbnN0IG49ZS5zbGljZSgwLHQpLGk9dGhpcy5oaWVyYXJjaHkubm9kZShuLmpvaW4oTSR0KSk7aWYoaSl7aWYoaS50eXBlPT09QSR0Lk9QJiZ0aGlzLmhpZXJhcmNoeS5saWJyYXJ5RnVuY3Rpb25zW2kub3BdKWZvcihsZXQgdD0xO3Q8bi5sZW5ndGg7dCsrKXtjb25zdCBlPW4uc2xpY2UoMCx0KS5qb2luKE0kdCk7ZSYmdGhpcy5idWlsZFN1YmhpZXJhcmNoeShlKX1icmVha319fSkpfSkpfX1jbGFzcyBrS3R7Y29uc3RydWN0b3IodCxlLG4saSxyKXt0aGlzLm5vZGU9dCx0aGlzLnJlbmRlck5vZGVJbmZvPWUsdGhpcy5yZW5kZXJNZXRhZWRnZUluZm89bix0aGlzLmFubm90YXRpb25UeXBlPWksdGhpcy5keD0wLHRoaXMuZHk9MCx0aGlzLndpZHRoPTAsdGhpcy5oZWlnaHQ9MCxuJiZuLm1ldGFlZGdlJiYodGhpcy52PW4ubWV0YWVkZ2Uudix0aGlzLnc9bi5tZXRhZWRnZS53KSx0aGlzLmlzSW49cix0aGlzLnBvaW50cz1bXX19dmFyIExLdDshKGZ1bmN0aW9uKHQpe3RbdC5TSE9SVENVVD0wXT0iU0hPUlRDVVQiLHRbdC5DT05TVEFOVD0xXT0iQ09OU1RBTlQiLHRbdC5TVU1NQVJZPTJdPSJTVU1NQVJZIix0W3QuRUxMSVBTSVM9M109IkVMTElQU0lTIn0pKExLdHx8KExLdD17fSkpO2NsYXNzIFBLdHtjb25zdHJ1Y3Rvcigpe3RoaXMubGlzdD1bXSx0aGlzLm5vZGVOYW1lcz17fX1wdXNoKHQpe2lmKHQubm9kZS5uYW1lIGluIHRoaXMubm9kZU5hbWVzKXJldHVybjtpZih0aGlzLm5vZGVOYW1lc1t0Lm5vZGUubmFtZV09ITAsdGhpcy5saXN0Lmxlbmd0aDxUS3QpcmV0dXJuIHZvaWQgdGhpcy5saXN0LnB1c2godCk7bGV0IGU9dGhpcy5saXN0W3RoaXMubGlzdC5sZW5ndGgtMV07aWYoZS5hbm5vdGF0aW9uVHlwZT09PUxLdC5FTExJUFNJUyl7bGV0IHQ9ZS5ub2RlO3JldHVybiB2b2lkIHQuc2V0TnVtTW9yZU5vZGVzKCsrdC5udW1Nb3JlTm9kZXMpfWxldCBuPW5ldyBSJHQoMSk7dGhpcy5saXN0LnB1c2gobmV3IGtLdChuLG5ldyBOS3QobiksbnVsbCxMS3QuRUxMSVBTSVMsdC5pc0luKSl9fWNsYXNzIE5LdHtjb25zdHJ1Y3Rvcih0KXtpZih0aGlzLm5vZGU9dCx0aGlzLmV4cGFuZGVkPSExLHRoaXMuaW5Bbm5vdGF0aW9ucz1uZXcgUEt0LHRoaXMub3V0QW5ub3RhdGlvbnM9bmV3IFBLdCx0aGlzLng9MCx0aGlzLnk9MCx0aGlzLndpZHRoPTAsdGhpcy5oZWlnaHQ9MCx0aGlzLmluYm94V2lkdGg9MCx0aGlzLm91dGJveFdpZHRoPTAsdGhpcy5leGNsdWRlZD0hMSx0aGlzLnN0cnVjdHVyYWw9ITEsdGhpcy5sYWJlbE9mZnNldD0wLHRoaXMucmFkaXVzPTAsdGhpcy5sYWJlbEhlaWdodD0wLHRoaXMucGFkZGluZ1RvcD0wLHRoaXMucGFkZGluZ0xlZnQ9MCx0aGlzLnBhZGRpbmdSaWdodD0wLHRoaXMucGFkZGluZ0JvdHRvbT0wLHRoaXMuaXNJbkV4dHJhY3Q9ITEsdGhpcy5pc091dEV4dHJhY3Q9ITEsdGhpcy5jb3JlQm94PXt3aWR0aDowLGhlaWdodDowfSx0aGlzLmlzRmFkZWRPdXQ9ITEsdGhpcy5kaXNwbGF5TmFtZT10Lm5hbWUuc3Vic3RyaW5nKHQubmFtZS5sYXN0SW5kZXhPZihNJHQpKzEpLHQudHlwZT09PUEkdC5NRVRBJiZ0LmFzc29jaWF0ZWRGdW5jdGlvbil7Y29uc3QgdD10aGlzLmRpc3BsYXlOYW1lLm1hdGNoKENLdCk7dD90aGlzLmRpc3BsYXlOYW1lPXRbMV06Q2UuZXhwb3J0cy5zdGFydHNXaXRoKHRoaXMuZGlzcGxheU5hbWUsVCR0KSYmKHRoaXMuZGlzcGxheU5hbWU9dGhpcy5kaXNwbGF5TmFtZS5zdWJzdHJpbmcoVCR0Lmxlbmd0aCkpfX1pc0luQ29yZSgpe3JldHVybiF0aGlzLmlzSW5FeHRyYWN0JiYhdGhpcy5pc091dEV4dHJhY3QmJiF0aGlzLmlzTGlicmFyeUZ1bmN0aW9ufX1jbGFzcyBJS3R7Y29uc3RydWN0b3IodCl7dGhpcy5tZXRhZWRnZT10LHRoaXMuYWRqb2luaW5nTWV0YWVkZ2U9bnVsbCx0aGlzLnN0cnVjdHVyYWw9ITEsdGhpcy53ZWlnaHQ9MSx0aGlzLmlzRmFkZWRPdXQ9ITF9fWZ1bmN0aW9uIFJLdCh0LGUsbixpLHIpe2xldCBvPW5ldyBrS3QoZSxuLGksciwhMCk7dC5pbkFubm90YXRpb25zLnB1c2gobyl9ZnVuY3Rpb24gT0t0KHQsZSxuLGkscil7bGV0IG89bmV3IGtLdChlLG4saSxyLCExKTt0Lm91dEFubm90YXRpb25zLnB1c2gobyl9Y2xhc3Mgekt0IGV4dGVuZHMgTkt0e2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIodCk7bGV0IG49dC5tZXRhZ3JhcGguZ3JhcGgoKTt0aGlzLmNvcmVHcmFwaD1ZJHQobi5uYW1lLEMkdC5DT1JFLGUpLHRoaXMuaW5FeHRyYWN0Qm94PXt3aWR0aDowLGhlaWdodDowfSx0aGlzLm91dEV4dHJhY3RCb3g9e3dpZHRoOjAsaGVpZ2h0OjB9LHRoaXMubGlicmFyeUZ1bmN0aW9uc0JveD17d2lkdGg6MCxoZWlnaHQ6MH0sdGhpcy5pc29sYXRlZEluRXh0cmFjdD1bXSx0aGlzLmlzb2xhdGVkT3V0RXh0cmFjdD1bXSx0aGlzLmxpYnJhcnlGdW5jdGlvbnNFeHRyYWN0PVtdfX1mdW5jdGlvbiBES3QodCxlKXt0LmNvcmVHcmFwaCYmKGZ1bmN0aW9uIG4odCxlKXtDZS5leHBvcnRzLmVhY2godC5ub2RlcygpLChuPT57bGV0IGk9dC5ub2RlKG4pO2lmKGkuZXhwYW5kZWQ9ZT4xLGU+MClzd2l0Y2goaS5ub2RlLnR5cGUpe2Nhc2UgQSR0Lk1FVEE6Y2FzZSBBJHQuU0VSSUVTOkRLdChpLGUtMSl9fSkpfSkodC5jb3JlR3JhcGgsZSl9ZnVuY3Rpb24gQkt0KHQsZSxuKXtsZXQgaT10Lm5vZGUoZSkscj10Lm5vZGUobiksbz10LmVkZ2UoZSxuKTsoaS5ub2RlLmluY2x1ZGUhPT1rJHQuSU5DTFVERSYmci5ub2RlLmluY2x1ZGUhPT1rJHQuSU5DTFVERXx8aS5ub2RlLmluY2x1ZGU9PT1rJHQuRVhDTFVERXx8ci5ub2RlLmluY2x1ZGU9PT1rJHQuRVhDTFVERSkmJihPS3QoaSxyLm5vZGUscixvLExLdC5TSE9SVENVVCksUkt0KHIsaS5ub2RlLGksbyxMS3QuU0hPUlRDVVQpLHQucmVtb3ZlRWRnZShlLG4pKX1mdW5jdGlvbiBIS3QodCxlLG4pe2xldCBpPXQuY29yZUdyYXBoLHI9aS5ub2RlKGUpO3IuaXNPdXRFeHRyYWN0PSEwLENlLmV4cG9ydHMuZWFjaChpLnByZWRlY2Vzc29ycyhlKSwoKHQsbik9PntCS3QoaSx0LGUpfSkpLENlLmV4cG9ydHMuZWFjaChpLnN1Y2Nlc3NvcnMoZSksKCh0LG4pPT57Qkt0KGksZSx0KX0pKSwwPT09aS5uZWlnaGJvcnMoZSkubGVuZ3RoJiYoci5ub2RlLmluY2x1ZGU9ayR0LkVYQ0xVREUsdC5pc29sYXRlZE91dEV4dHJhY3QucHVzaChyKSxpLnJlbW92ZU5vZGUoZSkpfWZ1bmN0aW9uIEZLdCh0LGUsbil7bGV0IGk9dC5jb3JlR3JhcGgscj1pLm5vZGUoZSk7ci5pc0luRXh0cmFjdD0hMCxDZS5leHBvcnRzLmVhY2goaS5zdWNjZXNzb3JzKGUpLCgodCxuKT0+e0JLdChpLGUsdCl9KSksQ2UuZXhwb3J0cy5lYWNoKGkucHJlZGVjZXNzb3JzKGUpLCgodCxuKT0+e0JLdChpLHQsZSl9KSksMD09PWkubmVpZ2hib3JzKGUpLmxlbmd0aCYmKHIubm9kZS5pbmNsdWRlPWskdC5FWENMVURFLHQuaXNvbGF0ZWRJbkV4dHJhY3QucHVzaChyKSxpLnJlbW92ZU5vZGUoZSkpfWZ1bmN0aW9uIFZLdCh0LGUpe2lmKHQudHlwZT09PUEkdC5PUCl7Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKyspaWYodC5vcD09PWVbbl0pcmV0dXJuITB9ZWxzZSBpZih0LnR5cGU9PT1BJHQuTUVUQSl7bGV0IG49dC5nZXRSb290T3AoKTtpZihuKWZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKWlmKG4ub3A9PT1lW3RdKXJldHVybiEwfXJldHVybiExfWNvbnN0IFVLdD17YW5pbWF0aW9uOntkdXJhdGlvbjoyNTB9LGdyYXBoOnttZXRhOntub2RlU2VwOjUscmFua1NlcDoyNSxlZGdlU2VwOjV9LHNlcmllczp7bm9kZVNlcDo1LHJhbmtTZXA6MjUsZWRnZVNlcDo1fSxwYWRkaW5nOntwYWRkaW5nVG9wOjQwLHBhZGRpbmdMZWZ0OjIwfX0sc3Vic2NlbmU6e21ldGE6e3BhZGRpbmdUb3A6MTAscGFkZGluZ0JvdHRvbToxMCxwYWRkaW5nTGVmdDoxMCxwYWRkaW5nUmlnaHQ6MTAsbGFiZWxIZWlnaHQ6MjAsZXh0cmFjdFhPZmZzZXQ6MTUsZXh0cmFjdFlPZmZzZXQ6MjB9LHNlcmllczp7cGFkZGluZ1RvcDoxMCxwYWRkaW5nQm90dG9tOjEwLHBhZGRpbmdMZWZ0OjEwLHBhZGRpbmdSaWdodDoxMCxsYWJlbEhlaWdodDoxMH19LG5vZGVTaXplOnttZXRhOntyYWRpdXM6NSx3aWR0aDo2MCxtYXhMYWJlbFdpZHRoOjUyLGhlaWdodDpjRSgpLmRvbWFpbihbMSwyMDBdKS5yYW5nZShbMTUsNjBdKS5jbGFtcCghMCksZXhwYW5kQnV0dG9uUmFkaXVzOjN9LG9wOnt3aWR0aDoxNSxoZWlnaHQ6NixyYWRpdXM6MyxsYWJlbE9mZnNldDotOCxtYXhMYWJlbFdpZHRoOjMwfSxzZXJpZXM6e2V4cGFuZGVkOntyYWRpdXM6MTAsbGFiZWxPZmZzZXQ6MH0sdmVydGljYWw6e3dpZHRoOjE2LGhlaWdodDoxMyxsYWJlbE9mZnNldDotMTN9LGhvcml6b250YWw6e3dpZHRoOjI0LGhlaWdodDo4LHJhZGl1czoxMCxsYWJlbE9mZnNldDotMTB9fSxicmlkZ2U6e3dpZHRoOjIwLGhlaWdodDoyMCxyYWRpdXM6MixsYWJlbE9mZnNldDowfX0sc2hvcnRjdXRTaXplOntvcDp7d2lkdGg6MTAsaGVpZ2h0OjR9LG1ldGE6e3dpZHRoOjEyLGhlaWdodDo0LHJhZGl1czoxfSxzZXJpZXM6e3dpZHRoOjE0LGhlaWdodDo0fX0sYW5ub3RhdGlvbnM6e2luYm94V2lkdGg6NTAsb3V0Ym94V2lkdGg6NTAseE9mZnNldDoxMCx5T2Zmc2V0OjMsbGFiZWxPZmZzZXQ6MixtYXhMYWJlbFdpZHRoOjQwfSxjb25zdGFudDp7c2l6ZTp7d2lkdGg6NCxoZWlnaHQ6NH19LHNlcmllczp7bWF4U3RhY2tDb3VudDozLHBhcmFsbGVsU3RhY2tPZmZzZXRSYXRpbzouMix0b3dlclN0YWNrT2Zmc2V0UmF0aW86LjV9LG1pbmltYXA6e3NpemU6MTUwfX0sakt0PTE0MDtmdW5jdGlvbiBHS3QodCl7dC5ub2RlLmlzR3JvdXBOb2RlJiYoZnVuY3Rpb24gZSh0KXtsZXQgZT10LmNvcmVHcmFwaC5ub2RlcygpLm1hcCgoZT0+dC5jb3JlR3JhcGgubm9kZShlKSkpLmNvbmNhdCh0Lmlzb2xhdGVkSW5FeHRyYWN0LHQuaXNvbGF0ZWRPdXRFeHRyYWN0LHQubGlicmFyeUZ1bmN0aW9uc0V4dHJhY3QpO0NlLmV4cG9ydHMuZWFjaChlLCh0PT57c3dpdGNoKHQubm9kZS50eXBlKXtjYXNlIEEkdC5PUDpDZS5leHBvcnRzLmV4dGVuZCh0LFVLdC5ub2RlU2l6ZS5vcCk7YnJlYWs7Y2FzZSBBJHQuQlJJREdFOkNlLmV4cG9ydHMuZXh0ZW5kKHQsVUt0Lm5vZGVTaXplLmJyaWRnZSk7YnJlYWs7Y2FzZSBBJHQuTUVUQTppZih0LmV4cGFuZGVkKXtHS3QodCl9ZWxzZSBDZS5leHBvcnRzLmV4dGVuZCh0LFVLdC5ub2RlU2l6ZS5tZXRhKSx0LmhlaWdodD1VS3Qubm9kZVNpemUubWV0YS5oZWlnaHQodC5ub2RlLmNhcmRpbmFsaXR5KTticmVhaztjYXNlIEEkdC5TRVJJRVM6aWYodC5leHBhbmRlZCl7Q2UuZXhwb3J0cy5leHRlbmQodCxVS3Qubm9kZVNpemUuc2VyaWVzLmV4cGFuZGVkKSxHS3QodCl9ZWxzZXtDZS5leHBvcnRzLmV4dGVuZCh0LHQubm9kZS5oYXNOb25Db250cm9sRWRnZXM/VUt0Lm5vZGVTaXplLnNlcmllcy52ZXJ0aWNhbDpVS3Qubm9kZVNpemUuc2VyaWVzLmhvcml6b250YWwpfWJyZWFrO2RlZmF1bHQ6dGhyb3cgRXJyb3IoIlVucmVjb2duaXplZCBub2RlIHR5cGU6ICIrdC5ub2RlLnR5cGUpfXQuZXhwYW5kZWR8fChmdW5jdGlvbiBlKHQpe3QuaW5ib3hXaWR0aD10LmluQW5ub3RhdGlvbnMubGlzdC5sZW5ndGg+MD9VS3QuYW5ub3RhdGlvbnMuaW5ib3hXaWR0aDowLHQub3V0Ym94V2lkdGg9dC5vdXRBbm5vdGF0aW9ucy5saXN0Lmxlbmd0aD4wP1VLdC5hbm5vdGF0aW9ucy5vdXRib3hXaWR0aDowLHQuY29yZUJveC53aWR0aD10LndpZHRoLHQuY29yZUJveC5oZWlnaHQ9dC5oZWlnaHQsdC53aWR0aD1NYXRoLm1heCh0LmNvcmVCb3gud2lkdGgrdC5pbmJveFdpZHRoK3Qub3V0Ym94V2lkdGgsMyp0LmRpc3BsYXlOYW1lLmxlbmd0aCl9KSh0KSwoZnVuY3Rpb24gbih0KXtpZih0LmV4cGFuZGVkKXJldHVybjtsZXQgZT10LmluQW5ub3RhdGlvbnMubGlzdCxuPXQub3V0QW5ub3RhdGlvbnMubGlzdDtDZS5leHBvcnRzLmVhY2goZSwodD0+cUt0KHQpKSksQ2UuZXhwb3J0cy5lYWNoKG4sKHQ9PnFLdCh0KSkpO2xldCBpPVVLdC5hbm5vdGF0aW9ucyxyPUNlLmV4cG9ydHMucmVkdWNlKGUsKChlLG4scik9PntsZXQgbz1yPjA/aS55T2Zmc2V0OjA7cmV0dXJuIG4uZHg9LSh0LmNvcmVCb3gud2lkdGgrbi53aWR0aCkvMi1pLnhPZmZzZXQsbi5keT1lK28rbi5oZWlnaHQvMixlK28rbi5oZWlnaHR9KSwwKTtDZS5leHBvcnRzLmVhY2goZSwodD0+e3QuZHktPXIvMix0LmxhYmVsT2Zmc2V0PWkubGFiZWxPZmZzZXR9KSk7bGV0IG89Q2UuZXhwb3J0cy5yZWR1Y2UobiwoKGUsbixyKT0+e2xldCBvPXI+MD9pLnlPZmZzZXQ6MDtyZXR1cm4gbi5keD0odC5jb3JlQm94LndpZHRoK24ud2lkdGgpLzIraS54T2Zmc2V0LG4uZHk9ZStvK24uaGVpZ2h0LzIsZStvK24uaGVpZ2h0fSksMCk7Q2UuZXhwb3J0cy5lYWNoKG4sKHQ9Pnt0LmR5LT1vLzIsdC5sYWJlbE9mZnNldD1pLmxhYmVsT2Zmc2V0fSkpO2xldCBhPU1hdGgubWluKHQuaGVpZ2h0LzItdC5yYWRpdXMsci8yKTthPWE8MD8wOmE7bGV0IHM9Y0UoKS5kb21haW4oWzAsZS5sZW5ndGgtMV0pLnJhbmdlKFstYSxhXSk7Q2UuZXhwb3J0cy5lYWNoKGUsKChuLGkpPT57bi5wb2ludHM9W3tkeDpuLmR4K24ud2lkdGgvMixkeTpuLmR5fSx7ZHg6LXQuY29yZUJveC53aWR0aC8yLGR5OmUubGVuZ3RoPjE/cyhpKTowfV19KSk7bGV0IGw9TWF0aC5taW4odC5oZWlnaHQvMi10LnJhZGl1cyxvLzIpO2w9bDwwPzA6bDtsZXQgYz1jRSgpLmRvbWFpbihbMCxuLmxlbmd0aC0xXSkucmFuZ2UoWy1sLGxdKTtDZS5leHBvcnRzLmVhY2gobiwoKGUsaSk9PntlLnBvaW50cz1be2R4OnQuY29yZUJveC53aWR0aC8yLGR5Om4ubGVuZ3RoPjE/YyhpKTowfSx7ZHg6ZS5keC1lLndpZHRoLzIsZHk6ZS5keX1dfSkpLHQuaGVpZ2h0PU1hdGgubWF4KHQuaGVpZ2h0LHIsbyl9KSh0KX0pKX0pKHQpLHQubm9kZS50eXBlPT09QSR0Lk1FVEE/KGZ1bmN0aW9uIG4odCl7bGV0IGU9VUt0LnN1YnNjZW5lLm1ldGE7Q2UuZXhwb3J0cy5leHRlbmQodCxlKSxDZS5leHBvcnRzLmV4dGVuZCh0LmNvcmVCb3gsV0t0KHQuY29yZUdyYXBoLFVLdC5ncmFwaC5tZXRhKSk7bGV0IG49dC5pc29sYXRlZEluRXh0cmFjdC5sZW5ndGg/Q2UuZXhwb3J0cy5tYXhCeSh0Lmlzb2xhdGVkSW5FeHRyYWN0LCh0PT50LndpZHRoKSkud2lkdGg6bnVsbDt0LmluRXh0cmFjdEJveC53aWR0aD1udWxsIT1uP246MCx0LmluRXh0cmFjdEJveC5oZWlnaHQ9Q2UuZXhwb3J0cy5yZWR1Y2UodC5pc29sYXRlZEluRXh0cmFjdCwoKHQsbixpKT0+e2xldCByPWk+MD9lLmV4dHJhY3RZT2Zmc2V0OjA7cmV0dXJuIG4ueD0wLG4ueT10K3Irbi5oZWlnaHQvMix0K3Irbi5oZWlnaHR9KSwwKTtsZXQgaT10Lmlzb2xhdGVkT3V0RXh0cmFjdC5sZW5ndGg/Q2UuZXhwb3J0cy5tYXhCeSh0Lmlzb2xhdGVkT3V0RXh0cmFjdCwodD0+dC53aWR0aCkpLndpZHRoOm51bGw7dC5vdXRFeHRyYWN0Qm94LndpZHRoPW51bGwhPWk/aTowLHQub3V0RXh0cmFjdEJveC5oZWlnaHQ9Q2UuZXhwb3J0cy5yZWR1Y2UodC5pc29sYXRlZE91dEV4dHJhY3QsKCh0LG4saSk9PntsZXQgcj1pPjA/ZS5leHRyYWN0WU9mZnNldDowO3JldHVybiBuLng9MCxuLnk9dCtyK24uaGVpZ2h0LzIsdCtyK24uaGVpZ2h0fSksMCk7bGV0IHI9dC5saWJyYXJ5RnVuY3Rpb25zRXh0cmFjdC5sZW5ndGg/Q2UuZXhwb3J0cy5tYXhCeSh0LmxpYnJhcnlGdW5jdGlvbnNFeHRyYWN0LCh0PT50LndpZHRoKSkud2lkdGg6bnVsbDt0LmxpYnJhcnlGdW5jdGlvbnNCb3gud2lkdGg9bnVsbCE9cj9yOjAsdC5saWJyYXJ5RnVuY3Rpb25zQm94LmhlaWdodD1DZS5leHBvcnRzLnJlZHVjZSh0LmxpYnJhcnlGdW5jdGlvbnNFeHRyYWN0LCgodCxuLGkpPT57bGV0IHI9aT4wP2UuZXh0cmFjdFlPZmZzZXQ6MDtyZXR1cm4gbi54PTAsbi55PXQrcituLmhlaWdodC8yLHQrcituLmhlaWdodH0pLDApO2xldCBvPTA7dC5pc29sYXRlZEluRXh0cmFjdC5sZW5ndGg+MCYmbysrO3QuaXNvbGF0ZWRPdXRFeHRyYWN0Lmxlbmd0aD4wJiZvKys7dC5saWJyYXJ5RnVuY3Rpb25zRXh0cmFjdC5sZW5ndGg+MCYmbysrO3QuY29yZUdyYXBoLm5vZGVDb3VudCgpPjAmJm8rKztsZXQgYT1VS3Quc3Vic2NlbmUubWV0YS5leHRyYWN0WE9mZnNldCxzPW88PTE/MDpvKmE7Y29uc3QgbD1NYXRoLm1heChqS3QsdC5pbkV4dHJhY3RCb3gud2lkdGgrdC5vdXRFeHRyYWN0Qm94LndpZHRoKTt0LmNvcmVCb3gud2lkdGgrPWwrcyt0LmxpYnJhcnlGdW5jdGlvbnNCb3gud2lkdGgrcyx0LmNvcmVCb3guaGVpZ2h0PWUubGFiZWxIZWlnaHQrTWF0aC5tYXgodC5pbkV4dHJhY3RCb3guaGVpZ2h0LHQuY29yZUJveC5oZWlnaHQsdC5saWJyYXJ5RnVuY3Rpb25zQm94LmhlaWdodCx0Lm91dEV4dHJhY3RCb3guaGVpZ2h0KSx0LndpZHRoPXQuY29yZUJveC53aWR0aCtlLnBhZGRpbmdMZWZ0K2UucGFkZGluZ1JpZ2h0LHQuaGVpZ2h0PXQucGFkZGluZ1RvcCt0LmNvcmVCb3guaGVpZ2h0K3QucGFkZGluZ0JvdHRvbX0pKHQpOnQubm9kZS50eXBlPT09QSR0LlNFUklFUyYmKGZ1bmN0aW9uIGkodCl7bGV0IGU9dC5jb3JlR3JhcGgsbj1VS3Quc3Vic2NlbmUuc2VyaWVzO0NlLmV4cG9ydHMuZXh0ZW5kKHQsbiksQ2UuZXhwb3J0cy5leHRlbmQodC5jb3JlQm94LFdLdCh0LmNvcmVHcmFwaCxVS3QuZ3JhcGguc2VyaWVzKSksQ2UuZXhwb3J0cy5lYWNoKGUubm9kZXMoKSwodD0+e2Uubm9kZSh0KS5leGNsdWRlZD0hMX0pKSx0LndpZHRoPXQuY29yZUJveC53aWR0aCtuLnBhZGRpbmdMZWZ0K24ucGFkZGluZ1JpZ2h0LHQuaGVpZ2h0PXQuY29yZUJveC5oZWlnaHQrbi5wYWRkaW5nVG9wK24ucGFkZGluZ0JvdHRvbX0pKHQpfWZ1bmN0aW9uIFdLdCh0LGUpe0NlLmV4cG9ydHMuZXh0ZW5kKHQuZ3JhcGgoKSx7bm9kZXNlcDplLm5vZGVTZXAscmFua3NlcDplLnJhbmtTZXAsZWRnZXNlcDplLmVkZ2VTZXB9KTtsZXQgbj1bXTtpZihDZS5leHBvcnRzLmVhY2godC5ub2RlcygpLChlPT57dC5ub2RlKGUpLm5vZGUudHlwZT09PUEkdC5CUklER0V8fG4ucHVzaChlKX0pKSwhbi5sZW5ndGgpcmV0dXJue3dpZHRoOjAsaGVpZ2h0OjB9O3QkdC5sYXlvdXQodCk7bGV0IGk9MS8wLHI9MS8wLG89LTEvMCxhPS0xLzA7cmV0dXJuIENlLmV4cG9ydHMuZWFjaChuLChlPT57bGV0IG49dC5ub2RlKGUpLHM9LjUqbi53aWR0aCxsPW4ueC1zLGM9bi54K3M7aT1sPGk/bDppLG89Yz5vP2M6bztsZXQgdT0uNSpuLmhlaWdodCxoPW4ueS11LGQ9bi55K3U7cj1oPHI/aDpyLGE9ZD5hP2Q6YX0pKSxDZS5leHBvcnRzLmVhY2godC5lZGdlcygpLChlPT57bGV0IG49dC5lZGdlKGUpO2lmKG4uc3RydWN0dXJhbClyZXR1cm47bGV0IHM9dC5ub2RlKG4ubWV0YWVkZ2UudiksbD10Lm5vZGUobi5tZXRhZWRnZS53KTtpZigzPT09bi5wb2ludHMubGVuZ3RoJiYoZnVuY3Rpb24gYyh0KXtsZXQgZT1YS3QodFswXSx0WzFdKTtmb3IobGV0IG49MTtuPHQubGVuZ3RoLTE7bisrKXtsZXQgaT1YS3QodFtuXSx0W24rMV0pO2lmKE1hdGguYWJzKGktZSk+MSlyZXR1cm4hMTtlPWl9cmV0dXJuITB9KShuLnBvaW50cykpe2lmKG51bGwhPXMpe2xldCB0PXMuZXhwYW5kZWQ/cy54OllLdChzKTtuLnBvaW50c1swXS54PXR9aWYobnVsbCE9bCl7bGV0IHQ9bC5leHBhbmRlZD9sLng6WUt0KGwpO24ucG9pbnRzWzJdLng9dH1uLnBvaW50cz1bbi5wb2ludHNbMF0sbi5wb2ludHNbMV1dfW51bGwhPWwmJihuLnBvaW50c1tuLnBvaW50cy5sZW5ndGgtMV09JEt0KG4ucG9pbnRzW24ucG9pbnRzLmxlbmd0aC0yXSxsKSksbnVsbCE9cyYmKG4ucG9pbnRzWzBdPSRLdChuLnBvaW50c1sxXSxzKSksQ2UuZXhwb3J0cy5lYWNoKG4ucG9pbnRzLCh0PT57aT10Lng8aT90Lng6aSxvPXQueD5vP3QueDpvLHI9dC55PHI/dC55OnIsYT10Lnk+YT90Lnk6YX0pKX0pKSxDZS5leHBvcnRzLmVhY2godC5ub2RlcygpLChlPT57bGV0IG49dC5ub2RlKGUpO24ueC09aSxuLnktPXJ9KSksQ2UuZXhwb3J0cy5lYWNoKHQuZWRnZXMoKSwoZT0+e0NlLmV4cG9ydHMuZWFjaCh0LmVkZ2UoZSkucG9pbnRzLCh0PT57dC54LT1pLHQueS09cn0pKX0pKSx7d2lkdGg6by1pLGhlaWdodDphLXJ9fWZ1bmN0aW9uIHFLdCh0KXtzd2l0Y2godC5hbm5vdGF0aW9uVHlwZSl7Y2FzZSBMS3QuQ09OU1RBTlQ6Q2UuZXhwb3J0cy5leHRlbmQodCxVS3QuY29uc3RhbnQuc2l6ZSk7YnJlYWs7Y2FzZSBMS3QuU0hPUlRDVVQ6aWYodC5ub2RlLnR5cGU9PT1BJHQuT1ApQ2UuZXhwb3J0cy5leHRlbmQodCxVS3Quc2hvcnRjdXRTaXplLm9wKTtlbHNlIGlmKHQubm9kZS50eXBlPT09QSR0Lk1FVEEpQ2UuZXhwb3J0cy5leHRlbmQodCxVS3Quc2hvcnRjdXRTaXplLm1ldGEpO2Vsc2V7aWYodC5ub2RlLnR5cGUhPT1BJHQuU0VSSUVTKXRocm93IEVycm9yKCJJbnZhbGlkIG5vZGUgdHlwZTogIit0Lm5vZGUudHlwZSk7Q2UuZXhwb3J0cy5leHRlbmQodCxVS3Quc2hvcnRjdXRTaXplLnNlcmllcyl9YnJlYWs7Y2FzZSBMS3QuU1VNTUFSWTpDZS5leHBvcnRzLmV4dGVuZCh0LFVLdC5jb25zdGFudC5zaXplKX19ZnVuY3Rpb24gWUt0KHQpe2lmKHQuZXhwYW5kZWQpcmV0dXJuIHQueDtyZXR1cm4gdC54LXQud2lkdGgvMisodC5pbkFubm90YXRpb25zLmxpc3QubGVuZ3RoP3QuaW5ib3hXaWR0aDowKSt0LmNvcmVCb3gud2lkdGgvMn1mdW5jdGlvbiBYS3QodCxlKXtyZXR1cm4gMTgwKk1hdGguYXRhbigoZS55LXQueSkvKGUueC10LngpKS9NYXRoLlBJfWZ1bmN0aW9uICRLdCh0LGUpe2xldCBuLGkscj1lLmV4cGFuZGVkP2UueDpZS3QoZSksbz1lLnksYT10LngtcixzPXQueS1vLGw9ZS5leHBhbmRlZD9lLndpZHRoOmUuY29yZUJveC53aWR0aCxjPWUuZXhwYW5kZWQ/ZS5oZWlnaHQ6ZS5jb3JlQm94LmhlaWdodDtyZXR1cm4gTWF0aC5hYnMocykqbC8yPk1hdGguYWJzKGEpKmMvMj8oczwwJiYoYz0tYyksbj0wPT09cz8wOmMvMiphL3MsaT1jLzIpOihhPDAmJihsPS1sKSxuPWwvMixpPTA9PT1hPzA6bC8yKnMvYSkse3g6cituLHk6bytpfX1jb25zdCBLS3Q9YSR0LFpLdD1uJHQ7bGV0IEpLdD1be2JhY2tncm91bmRfY29sb3I6IiNDQzJGMkMiLGxhYmVsOiJOYU4ifSx7YmFja2dyb3VuZF9jb2xvcjoiI0ZGOEQwMCIsbGFiZWw6Ii3iiJ4ifSx7YmFja2dyb3VuZF9jb2xvcjoiI0VBRUFFQSIsbGFiZWw6Ii0ifSx7YmFja2dyb3VuZF9jb2xvcjoiI0E1QTVBNSIsbGFiZWw6IjAifSx7YmFja2dyb3VuZF9jb2xvcjoiIzI2MjYyNiIsbGFiZWw6IisifSx7YmFja2dyb3VuZF9jb2xvcjoiIzAwM0VENCIsbGFiZWw6IiviiJ4ifV07ZnVuY3Rpb24gUUt0KHQsZSxuKXtudWxsIT10LmF0dHIoInRyYW5zZm9ybSIpJiYodD10LnRyYW5zaXRpb24oInBvc2l0aW9uIikpLHQuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrZSsiLCIrbisiKSIpfWZ1bmN0aW9uIHRadCh0LGUsbixpLHIpe3QudHJhbnNpdGlvbigpLmF0dHIoIngiLGUtaS8yKS5hdHRyKCJ5IixuLXIvMikuYXR0cigid2lkdGgiLGkpLmF0dHIoImhlaWdodCIscil9ZnVuY3Rpb24gZVp0KHQsZSxuLGkscil7dC50cmFuc2l0aW9uKCkuYXR0cigiY3giLGUpLmF0dHIoImN5IixuKS5hdHRyKCJyeCIsaS8yKS5hdHRyKCJyeSIsci8yKX1mdW5jdGlvbiBuWnQodCxlKXtyZXR1cm4gZT90LnRvRml4ZWQoMCk6TWF0aC5hYnModCk+PTE/dC50b0ZpeGVkKDEpOnQudG9FeHBvbmVudGlhbCgxKX1mdW5jdGlvbiBpWnQodCxlLG4saSxyPTYwLG89MTAsYT0wLHMpe2lmKER1KHQucGFyZW50Tm9kZSkuc2VsZWN0QWxsKCIuaGVhbHRoLXBpbGwiKS5yZW1vdmUoKSwhZSlyZXR1cm47Y29uc3QgbD1lLnZhbHVlLGM9bC5zbGljZSgyLDgpLHU9Y1swXSxoPWNbMV0sZD1jWzVdO2xldCBwPWxbMV07Y29uc3QgZj17bWluOmxbOF0sbWF4OmxbOV0sbWVhbjpsWzEwXSxzdGRkZXY6TWF0aC5zcXJ0KGxbMTFdKX07bnVsbD09ciYmKHI9NjApLG51bGw9PW8mJihvPTEwKSxudWxsPT1hJiYoYT0wKSxudWxsIT1uJiZuLm5vZGUudHlwZT09PUEkdC5PUCYmKHIvPTIsby89Mik7bGV0IG09ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKG8kdCwiZyIpO20uY2xhc3NMaXN0LmFkZCgiaGVhbHRoLXBpbGwiKTtsZXQgZz1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMobyR0LCJkZWZzIik7bS5hcHBlbmRDaGlsZChnKTtsZXQgXz1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMobyR0LCJsaW5lYXJHcmFkaWVudCIpO2NvbnN0IHk9ImhlYWx0aC1waWxsLWdyYWRpZW50LSIraTtfLnNldEF0dHJpYnV0ZSgiaWQiLHkpO2xldCB2PTAsYj0iMCUiO2ZvcihsZXQgdD0wO3Q8Yy5sZW5ndGg7dCsrKXtpZighY1t0XSljb250aW51ZTt2Kz1jW3RdO2xldCBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhvJHQsInN0b3AiKTtlLnNldEF0dHJpYnV0ZSgib2Zmc2V0IixiKSxlLnNldEF0dHJpYnV0ZSgic3RvcC1jb2xvciIsSkt0W3RdLmJhY2tncm91bmRfY29sb3IpLF8uYXBwZW5kQ2hpbGQoZSk7bGV0IG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKG8kdCwic3RvcCIpLGk9MTAwKnYvcCsiJSI7bi5zZXRBdHRyaWJ1dGUoIm9mZnNldCIsaSksbi5zZXRBdHRyaWJ1dGUoInN0b3AtY29sb3IiLEpLdFt0XS5iYWNrZ3JvdW5kX2NvbG9yKSxfLmFwcGVuZENoaWxkKG4pLGI9aX1nLmFwcGVuZENoaWxkKF8pO2xldCB4PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhvJHQsInJlY3QiKTt4LnNldEF0dHJpYnV0ZSgiZmlsbCIsInVybCgjIit5KyIpIikseC5zZXRBdHRyaWJ1dGUoIndpZHRoIixTdHJpbmcocikpLHguc2V0QXR0cmlidXRlKCJoZWlnaHQiLFN0cmluZyhvKSkseC5zZXRBdHRyaWJ1dGUoInkiLFN0cmluZyhhKSksbS5hcHBlbmRDaGlsZCh4KTtsZXQgdz1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMobyR0LCJ0aXRsZSIpO3cudGV4dENvbnRlbnQ9KGZ1bmN0aW9uIFModCxlLG4saSl7bGV0IHI9IkRldmljZTogIit0LmRldmljZV9uYW1lKyJcbiI7cis9ImR0eXBlOiAiK3QuZHR5cGUrIlxuIjtsZXQgbz0iKHNjYWxhcikiO3Quc2hhcGUubGVuZ3RoPjAmJihvPSIoIit0LnNoYXBlLmpvaW4oIiwiKSsiKSIpLHIrPSJcbnNoYXBlOiAiK28rIlxuXG4iLHIrPSIjKGVsZW1lbnRzKTogIitlKyJcbiI7Y29uc3QgYT1bXTtmb3IobGV0IHQ9MDt0PG4ubGVuZ3RoO3QrKyluW3RdPjAmJmEucHVzaCgiIygiK0pLdFt0XS5sYWJlbCsiKTogIituW3RdKTtyZXR1cm4gcis9YS5qb2luKCIsICIpKyJcblxuIixpLm1heD49aS5taW4mJihyKz0ibWluOiAiK2kubWluKyIsIG1heDogIitpLm1heCsiXG4iLHIrPSJtZWFuOiAiK2kubWVhbisiLCBzdGRkZXY6ICIraS5zdGRkZXYpLHJ9KShlLHAsYyxmKSxtLmFwcGVuZENoaWxkKHcpO2xldCBNPSExO2lmKG51bGwhPW4pe2xldCB0PW4ueS1vLW4uaGVpZ2h0LzItMjtpZihuLmxhYmVsT2Zmc2V0PDAmJih0Kz1uLmxhYmVsT2Zmc2V0KSxtLnNldEF0dHJpYnV0ZSgidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrKG4ueC1yLzIpKyIsICIrdCsiKSIpLGNbMl18fGNbM118fGNbNF0pe2xldCB0PW4ubm9kZS5hdHRyO2lmKHQmJnQubGVuZ3RoKWZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKWlmKCJUIj09PXRbZV0ua2V5KXtsZXQgbj10W2VdLnZhbHVlLnR5cGU7TT1uJiYvXkRUXyhCT09MfElOVHxVSU5UKS8udGVzdChuKTticmVha319fWxldCBFPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhvJHQsInRleHQiKTtpZihOdW1iZXIuaXNGaW5pdGUoZi5taW4pJiZOdW1iZXIuaXNGaW5pdGUoZi5tYXgpKXtjb25zdCB0PW5adChmLm1pbixNKSxlPW5adChmLm1heCxNKTtpZihFLnRleHRDb250ZW50PXA+MT90KyIgfiAiK2U6dCx1PjB8fGg+MHx8ZD4wKXtFLnRleHRDb250ZW50Kz0iICgiO2NvbnN0IHQ9W107dT4wJiZ0LnB1c2goYE5hTsOXJHt1fWApLGg+MCYmdC5wdXNoKGAt4oiew5cke2h9YCksZD4wJiZ0LnB1c2goYCviiJ7DlyR7ZH1gKSxFLnRleHRDb250ZW50Kz10LmpvaW4oIjsgIikrIikifX1lbHNlIEUudGV4dENvbnRlbnQ9IihObyBmaW5pdGUgZWxlbWVudHMpIjtFLmNsYXNzTGlzdC5hZGQoImhlYWx0aC1waWxsLXN0YXRzIiksbnVsbD09cyYmKHM9ci8yKSxFLnNldEF0dHJpYnV0ZSgieCIsU3RyaW5nKHMpKSxFLnNldEF0dHJpYnV0ZSgieSIsU3RyaW5nKGEtMikpLG0uYXBwZW5kQ2hpbGQoRSksZXIodC5wYXJlbnROb2RlKS5hcHBlbmRDaGlsZChtKX12YXIgclp0O2Z1bmN0aW9uIG9adCh0LGUpe2NvbnN0IG49dC5nZXRDb250ZXh0TWVudSgpLGk9RHUodC5nZXRDb250ZXh0TWVudSgpKTtyZXR1cm4gZnVuY3Rpb24ocixvKXtsZXQgYT1NdTtjb25zdCBzPShmdW5jdGlvbiBsKHQpe2xldCBlPTAsbj0wLGk9dDtmb3IoO2kmJmkub2Zmc2V0TGVmdD49MCYmaS5vZmZzZXRUb3A+PTA7KWUrPWkub2Zmc2V0TGVmdC1pLnNjcm9sbExlZnQsbis9aS5vZmZzZXRUb3AtaS5zY3JvbGxUb3AsaT1pLm9mZnNldFBhcmVudDtyZXR1cm57bGVmdDplLHRvcDpufX0pKHQpO2Z1bmN0aW9uIGModCl7dCYmdC5jb21wb3NlZFBhdGgoKS5pbmNsdWRlcyhuKXx8KGkuc3R5bGUoImRpc3BsYXkiLCJub25lIiksZG9jdW1lbnQuYm9keS5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLGMse2NhcHR1cmU6ITB9KSl9aS5zdHlsZSgiZGlzcGxheSIsImJsb2NrIikuc3R5bGUoImxlZnQiLGEuY2xpZW50WC1zLmxlZnQrMSsicHgiKS5zdHlsZSgidG9wIixhLmNsaWVudFktcy50b3ArMSsicHgiKSxhLnByZXZlbnREZWZhdWx0KCksYS5zdG9wUHJvcGFnYXRpb24oKSxkb2N1bWVudC5ib2R5LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsYyx7Y2FwdHVyZTohMH0pLGkuaHRtbCgiIiksaS5hcHBlbmQoInVsIikuc2VsZWN0QWxsKCJsaSIpLmRhdGEoZSkuZW50ZXIoKS5hcHBlbmQoImxpIikub24oImNsaWNrIiwoKHQsZSk9Pnt0LmFjdGlvbih0aGlzLHIsbyksYygpfSkpLmh0bWwoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnRpdGxlKHIpfSkpfX0hKGZ1bmN0aW9uKHQpe3QuTk9ORT0ibm9uZSIsdC5DT01QVVRFX1RJTUU9ImNvbXB1dGVfdGltZSIsdC5ERVZJQ0U9ImRldmljZSIsdC5NRU1PUlk9Im1lbW9yeSIsdC5PUF9DT01QQVRJQklMSVRZPSJvcF9jb21wYXRpYmlsaXR5Iix0LlNUUlVDVFVSRT0ic3RydWN0dXJlIix0LlhMQV9DTFVTVEVSPSJ4bGFfY2x1c3RlciJ9KShyWnR8fChyWnQ9e30pKTtsZXQgYVp0PUFFKCkuZG9tYWluKFtjJHQsMTJdKS5yYW5nZShbInNtYWxsIiwibWVkaXVtIiwibGFyZ2UiLCJ4bGFyZ2UiXSk7ZnVuY3Rpb24gc1p0KHQpe3JldHVybiB0LnYrIi0tIit0Lnd9ZnVuY3Rpb24gbFp0KHQsZSxuKXtjb25zdCBpPW47bGV0IHI9W107cj1DZS5leHBvcnRzLnJlZHVjZShlLmVkZ2VzKCksKCh0LG4pPT57bGV0IGk9ZS5lZGdlKG4pO3JldHVybiB0LnB1c2goe3Y6bi52LHc6bi53LGxhYmVsOml9KSx0fSkscik7bGV0IG89cyR0KHQsImciLG4kdC5FZGdlLkNPTlRBSU5FUikuc2VsZWN0QWxsKChmdW5jdGlvbigpe3JldHVybiB0aGlzLmNoaWxkTm9kZXN9KSkuZGF0YShyLHNadCk7cmV0dXJuIG8uZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsbiR0LkVkZ2UuR1JPVVApLmF0dHIoImRhdGEtZWRnZSIsc1p0KS5lYWNoKChmdW5jdGlvbih0KXtsZXQgZT1EdSh0aGlzKTt0LmxhYmVsLmVkZ2VHcm91cD1lLGkuX2VkZ2VHcm91cEluZGV4W3NadCh0KV09ZSxpLmhhbmRsZUVkZ2VTZWxlY3RlZCYmZS5vbigiY2xpY2siLCh0PT57TXUuc3RvcFByb3BhZ2F0aW9uKCksaS5maXJlKCJlZGdlLXNlbGVjdCIse2VkZ2VEYXRhOnQsZWRnZUdyb3VwOmV9KX0pKSxwWnQoZSx0LGkpfSkpLm1lcmdlKG8pLmVhY2goKGZ1bmN0aW9uKCl7IShmdW5jdGlvbiB0KGUsbil7RHUobikuc2VsZWN0KCJwYXRoLiIrbiR0LkVkZ2UuTElORSkudHJhbnNpdGlvbigpLmF0dHJUd2VlbigiZCIsKGZ1bmN0aW9uKHQsbixpKXtyZXR1cm4oZnVuY3Rpb24gcih0LGUsbixpLG8pe2xldCBhPW4ubGFiZWwscz1hLmFkam9pbmluZ01ldGFlZGdlLGw9YS5wb2ludHM7Y29uc3R7c2hhZG93Um9vdDpjfT10O24ubGFiZWwuc3RhcnRNYXJrZXJJZCYmKGw9ZFp0KGwsRHUoYy5xdWVyeVNlbGVjdG9yKCIjIituLmxhYmVsLnN0YXJ0TWFya2VySWQpKSwhMCkpO24ubGFiZWwuZW5kTWFya2VySWQmJihsPWRadChsLER1KGMucXVlcnlTZWxlY3RvcigiIyIrbi5sYWJlbC5lbmRNYXJrZXJJZCkpLCExKSk7aWYoIXMpcmV0dXJuIGNwKG8sZlp0KGwpKTtsZXQgdT1zLmVkZ2VHcm91cC5ub2RlKCkuZmlyc3RDaGlsZCxoPWEubWV0YWVkZ2UuaW5ib3VuZDtyZXR1cm4gZnVuY3Rpb24odCl7bGV0IG49dS5nZXRQb2ludEF0TGVuZ3RoKGg/dS5nZXRUb3RhbExlbmd0aCgpOjApLm1hdHJpeFRyYW5zZm9ybSh1LmdldENUTSgpKS5tYXRyaXhUcmFuc2Zvcm0oZS5nZXRDVE0oKS5pbnZlcnNlKCkpLGk9aD8wOmwubGVuZ3RoLTE7cmV0dXJuIGxbaV0ueD1uLngsbFtpXS55PW4ueSxmWnQobCl9fSkoZSx0aGlzLHQsMCxpKX0pKX0pKG4sdGhpcyl9KSkuZWFjaCgoZnVuY3Rpb24odCl7IShmdW5jdGlvbiBlKHQsbixpKXt0LmNsYXNzZWQoImZhZGVkIixuLmxhYmVsLmlzRmFkZWRPdXQpO2xldCByPW4ubGFiZWwubWV0YWVkZ2U7dC5zZWxlY3QoInBhdGguIituJHQuRWRnZS5MSU5FKS5jbGFzc2VkKCJjb250cm9sLWRlcCIsciYmIXIubnVtUmVndWxhckVkZ2VzKX0pKER1KHRoaXMpLHQpfSkpLG8uZXhpdCgpLmVhY2goKHQ9PntkZWxldGUgaS5fZWRnZUdyb3VwSW5kZXhbc1p0KHQpXX0pKS5yZW1vdmUoKSxvfWZ1bmN0aW9uIGNadCh0LGUpe2xldCBuPWUuZ2V0Tm9kZUJ5TmFtZSh0LnYpO2lmKG51bGw9PW4ub3V0cHV0U2hhcGVzfHxDZS5leHBvcnRzLmlzRW1wdHkobi5vdXRwdXRTaGFwZXMpKXJldHVybiBudWxsO2xldCBpPW4ub3V0cHV0U2hhcGVzW3Qub3V0cHV0VGVuc29yS2V5XTtyZXR1cm4gbnVsbD09aT9udWxsOjA9PT1pLmxlbmd0aD8ic2NhbGFyIjppLm1hcCgodD0+LTE9PT10PyI/Ijp0KSkuam9pbigiw5ciKX1mdW5jdGlvbiB1WnQodCxlKXtpZihlLmVkZ2VMYWJlbEZ1bmN0aW9uKXJldHVybiBlLmVkZ2VMYWJlbEZ1bmN0aW9uKHQsZSk7cmV0dXJuIHQuYmFzZUVkZ2VMaXN0Lmxlbmd0aD4xP3QuYmFzZUVkZ2VMaXN0Lmxlbmd0aCsiIHRlbnNvcnMiOmNadCh0LmJhc2VFZGdlTGlzdFswXSxlKX1mdW5jdGlvbiBoWnQodCxlLG4pe2NvbnN0IGk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKG8kdCwicGF0aCIpO2ZvcihsZXQgcj0xO3I8dC5sZW5ndGg7cisrKWlmKGkuc2V0QXR0cmlidXRlKCJkIixuKHQuc2xpY2UoMCxyKSkpLGkuZ2V0VG90YWxMZW5ndGgoKT5lKXJldHVybiByLTE7cmV0dXJuIHQubGVuZ3RoLTF9ZnVuY3Rpb24gZFp0KHQsZSxuKXtsZXQgaT1ETCgpLngoKHQ9PnQueCkpLnkoKHQ9PnQueSkpLHI9RHUoZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsInBhdGgiKSkuYXR0cigiZCIsaSh0KSksbz0rZS5hdHRyKCJtYXJrZXJXaWR0aCIpLGE9ZS5hdHRyKCJ2aWV3Qm94Iikuc3BsaXQoIiAiKS5tYXAoTnVtYmVyKSxzPWFbMl0tYVswXSxsPStlLmF0dHIoInJlZlgiKSxjPXIubm9kZSgpO2lmKG4pe2NvbnN0IGU9byooMS1sL3MpLG49Yy5nZXRQb2ludEF0TGVuZ3RoKGUpLHI9aFp0KHQsZSxpKTtyZXR1cm4gdFtyLTFdPXt4Om4ueCx5Om4ueX0sdC5zbGljZShyLTEpfXtjb25zdCBlPTEtbC9zLG49Yy5nZXRUb3RhbExlbmd0aCgpLW8qZSxyPWMuZ2V0UG9pbnRBdExlbmd0aChuKSxhPWhadCh0LG4saSk7cmV0dXJuIHRbYV09e3g6ci54LHk6ci55fSx0LnNsaWNlKDAsYSsxKX19ZnVuY3Rpb24gcFp0KHQsZSxuLGkpe2k9aXx8biR0LkVkZ2UuTElORSxlLmxhYmVsJiZlLmxhYmVsLnN0cnVjdHVyYWwmJihpKz0iICIrbiR0LkVkZ2UuU1RSVUNUVVJBTCksZS5sYWJlbCYmZS5sYWJlbC5tZXRhZWRnZSYmZS5sYWJlbC5tZXRhZWRnZS5udW1SZWZFZGdlcyYmKGkrPSIgIituJHQuRWRnZS5SRUZFUkVOQ0VfRURHRSksbi5oYW5kbGVFZGdlU2VsZWN0ZWQmJihpKz0iICIrbiR0LkVkZ2UuU0VMRUNUQUJMRSk7bGV0IHIsbz0icGF0aF8iK3NadChlKTtpZihuLnJlbmRlckhpZXJhcmNoeS5lZGdlV2lkdGhGdW5jdGlvbilyPW4ucmVuZGVySGllcmFyY2h5LmVkZ2VXaWR0aEZ1bmN0aW9uKGUsaSk7ZWxzZXtsZXQgdD0xO251bGwhPWUubGFiZWwmJm51bGwhPWUubGFiZWwubWV0YWVkZ2UmJih0PWUubGFiZWwubWV0YWVkZ2UudG90YWxTaXplKSxyPW4ucmVuZGVySGllcmFyY2h5LmVkZ2VXaWR0aFNpemVkQmFzZWRTY2FsZSh0KX1sZXQgYT10LmFwcGVuZCgicGF0aCIpLmF0dHIoImlkIixvKS5hdHRyKCJjbGFzcyIsaSkuc3R5bGUoInN0cm9rZS13aWR0aCIscisicHgiKTtpZihlLmxhYmVsJiZlLmxhYmVsLm1ldGFlZGdlKWlmKGUubGFiZWwubWV0YWVkZ2UubnVtUmVmRWRnZXMpe2NvbnN0IHQ9YHJlZmVyZW5jZS1hcnJvd2hlYWQtJHthWnQocil9YDthLnN0eWxlKCJtYXJrZXItc3RhcnQiLGB1cmwoIyR7dH0pYCksZS5sYWJlbC5zdGFydE1hcmtlcklkPXR9ZWxzZXtjb25zdCB0PWBkYXRhZmxvdy1hcnJvd2hlYWQtJHthWnQocil9YDthLnN0eWxlKCJtYXJrZXItZW5kIixgdXJsKCMke3R9KWApLGUubGFiZWwuZW5kTWFya2VySWQ9dH1pZihudWxsPT1lLmxhYmVsfHxudWxsPT1lLmxhYmVsLm1ldGFlZGdlKXJldHVybjtsZXQgcz11WnQoZS5sYWJlbC5tZXRhZWRnZSxuLnJlbmRlckhpZXJhcmNoeSk7bnVsbCE9cyYmdC5hcHBlbmQoInRleHQiKS5hcHBlbmQoInRleHRQYXRoIikuYXR0cigieGxpbms6aHJlZiIsIiMiK28pLmF0dHIoInN0YXJ0T2Zmc2V0IiwiNTAlIikuYXR0cigidGV4dC1hbmNob3IiLCJtaWRkbGUiKS5hdHRyKCJkb21pbmFudC1iYXNlbGluZSIsImNlbnRyYWwiKS50ZXh0KHMpfWxldCBmWnQ9REwoKS5jdXJ2ZSh3UCkueCgodD0+dC54KSkueSgodD0+dC55KSk7ZnVuY3Rpb24gbVp0KHQsZSxuKXtsZXQgaT1zJHQodCwiZyIsbiR0Lk5vZGUuQ09OVEFJTkVSKS5zZWxlY3RBbGwoKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2hpbGROb2Rlc30pKS5kYXRhKGUsKHQ9PnQubm9kZS5uYW1lKyI6Iit0Lm5vZGUudHlwZSkpO3JldHVybiBpLmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiZGF0YS1uYW1lIiwodD0+dC5ub2RlLm5hbWUpKS5lYWNoKChmdW5jdGlvbih0KXtsZXQgZT1EdSh0aGlzKTtuLmFkZE5vZGVHcm91cCh0Lm5vZGUubmFtZSxlKX0pKS5tZXJnZShpKS5hdHRyKCJjbGFzcyIsKHQ9Pm4kdC5Ob2RlLkdST1VQKyIgIitUWnQodCkpKS5lYWNoKChmdW5jdGlvbih0KXtsZXQgZT1EdSh0aGlzKTt6WnQocyR0KGUsImciLG4kdC5Bbm5vdGF0aW9uLklOQk9YKSx0LmluQW5ub3RhdGlvbnMsdCxuKSx6WnQocyR0KGUsImciLG4kdC5Bbm5vdGF0aW9uLk9VVEJPWCksdC5vdXRBbm5vdGF0aW9ucyx0LG4pO2xldCBpPUVadChlLHQsbiR0Lk5vZGUuU0hBUEUpO3Qubm9kZS5pc0dyb3VwTm9kZSYmKGZ1bmN0aW9uIHIodCxlLG4pe2xldCBpPXMkdCh0LCJnIixuJHQuTm9kZS5CVVRUT05fQ09OVEFJTkVSKTtzJHQoaSwiY2lyY2xlIixuJHQuTm9kZS5CVVRUT05fQ0lSQ0xFKSxzJHQoaSwicGF0aCIsbiR0Lk5vZGUuRVhQQU5EX0JVVFRPTikuYXR0cigiZCIsIk0wLC0yLjIgVjIuMiBNLTIuMiwwIEgyLjIiKSxzJHQoaSwicGF0aCIsbiR0Lk5vZGUuQ09MTEFQU0VfQlVUVE9OKS5hdHRyKCJkIiwiTS0yLjIsMCBIMi4yIiksaS5vbigiY2xpY2siLCh0PT57TXUuc3RvcFByb3BhZ2F0aW9uKCksbi5maXJlKCJub2RlLXRvZ2dsZS1leHBhbmQiLHtuYW1lOnQubm9kZS5uYW1lfSl9KSksKGZ1bmN0aW9uIHIodCxlKXtsZXQgbj1ZS3QoZSkrKGUuZXhwYW5kZWQ/ZS53aWR0aDplLmNvcmVCb3gud2lkdGgpLzItNixpPWUueS0oZS5leHBhbmRlZD9lLmhlaWdodDplLmNvcmVCb3guaGVpZ2h0KS8yKzY7ZS5ub2RlLnR5cGUhPT1BJHQuU0VSSUVTfHxlLmV4cGFuZGVkfHwobis9MTAsaS09Mik7bGV0IHI9InRyYW5zbGF0ZSgiK24rIiwiK2krIikiO3Quc2VsZWN0QWxsKCJwYXRoIikudHJhbnNpdGlvbigpLmF0dHIoInRyYW5zZm9ybSIsciksdC5zZWxlY3QoImNpcmNsZSIpLnRyYW5zaXRpb24oKS5hdHRyKHtjeDpuLGN5OmkscjpVS3Qubm9kZVNpemUubWV0YS5leHBhbmRCdXR0b25SYWRpdXN9KX0pKGksZSl9KShpLHQsbiksX1p0KGksdCxuKSwoZnVuY3Rpb24gbyh0LGUsbil7aWYoZS5ub2RlLmlzR3JvdXBOb2RlKXtpZihlLmV4cGFuZGVkKXJldHVybiBCWnQodCxlLG4sbiR0LlN1YnNjZW5lLkdST1VQKTtLS3QodCwiZyIsbiR0LlN1YnNjZW5lLkdST1VQKS5yZW1vdmUoKX1yZXR1cm4gbnVsbH0pKGUsdCxuKSxfWnQoKGZ1bmN0aW9uIGEodCxlLG4pe2xldCBpPWUuZGlzcGxheU5hbWUscj1lLm5vZGUudHlwZT09PUEkdC5NRVRBJiYhZS5leHBhbmRlZCxvPXMkdCh0LCJ0ZXh0IixuJHQuTm9kZS5MQUJFTCksYT1vLm5vZGUoKTthLnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQoYSksby5hdHRyKCJkeSIsIi4zNWVtIikuYXR0cigidGV4dC1hbmNob3IiLCJtaWRkbGUiKTtsZXQgcz04O3N3aXRjaChlLm5vZGUudHlwZSl7Y2FzZSBBJHQuTUVUQTpzPWUuZXhwYW5kZWQ/ciR0LkVYUEFOREVEX0xBQkVMOnIkdC5TRVJJRVNfTEFCRUw7YnJlYWs7Y2FzZSBBJHQuT1A6cz1yJHQuT1BfTEFCRUx9aWYocil7aS5sZW5ndGg+bi5tYXhNZXRhbm9kZUxhYmVsTGVuZ3RoJiYoaT1pLnN1YnN0cigwLG4ubWF4TWV0YW5vZGVMYWJlbExlbmd0aC0yKSsi4oCmIik7bGV0IHQ9KGZ1bmN0aW9uIGwodCl7U1p0fHwoU1p0PWNFKCkuZG9tYWluKFt0Lm1heE1ldGFub2RlTGFiZWxMZW5ndGhMYXJnZUZvbnQsdC5tYXhNZXRhbm9kZUxhYmVsTGVuZ3RoXSkucmFuZ2UoW3QubWF4TWV0YW5vZGVMYWJlbExlbmd0aEZvbnRTaXplLHQubWluTWV0YW5vZGVMYWJlbExlbmd0aEZvbnRTaXplXSkuY2xhbXAoITApKTtyZXR1cm4gU1p0fSkobik7by5hdHRyKCJmb250LXNpemUiLHQoaS5sZW5ndGgpKyJweCIpLHM9dChpLmxlbmd0aCl9cmV0dXJuIHdadChvLnRleHQoaSksZS5ub2RlLnR5cGUscyxlKSxvfSkoZSx0LG4pLHQsbix0Lm5vZGUudHlwZT09PUEkdC5NRVRBKSxMWnQoZSx0LG4pLChmdW5jdGlvbiBzKHQsZSl7bGV0IG49S0t0KHQsImciLG4kdC5Ob2RlLlNIQVBFKSxpPVlLdChlKTtzd2l0Y2goZS5ub2RlLnR5cGUpe2Nhc2UgQSR0Lk9QOntjb25zdCByPWUubm9kZTtpZihDZS5leHBvcnRzLmlzTnVtYmVyKHIuZnVuY3Rpb25JbnB1dEluZGV4KXx8Q2UuZXhwb3J0cy5pc051bWJlcihyLmZ1bmN0aW9uT3V0cHV0SW5kZXgpKXshKGZ1bmN0aW9uIHIodCxlLG4saSxvKXtjb25zdCBhPW8vMixzPWkvMixsPVtbZSxuLWFdLFtlK3MsbithXSxbZS1zLG4rYV1dO3QudHJhbnNpdGlvbigpLmF0dHIoInBvaW50cyIsbC5tYXAoKHQ9PnQuam9pbigiLCIpKSkuam9pbigiICIpKX0pKEtLdChuLCJwb2x5Z29uIiksZS54LGUueSxlLmNvcmVCb3gud2lkdGgsZS5jb3JlQm94LmhlaWdodCl9ZWxzZXtlWnQoS0t0KG4sImVsbGlwc2UiKSxpLGUueSxlLmNvcmVCb3gud2lkdGgsZS5jb3JlQm94LmhlaWdodCl9TVp0KHQsaSxlLnksZS5sYWJlbE9mZnNldCk7YnJlYWt9Y2FzZSBBJHQuTUVUQTp7bGV0IHI9bi5zZWxlY3RBbGwoInJlY3QiKTtlLmV4cGFuZGVkPyh0WnQocixlLngsZS55LGUud2lkdGgsZS5oZWlnaHQpLGdadCh0LGUpLE1adCh0LGksZS55LC1lLmhlaWdodC8yK2UubGFiZWxIZWlnaHQvMikpOih0WnQocixpLGUueSxlLmNvcmVCb3gud2lkdGgsZS5jb3JlQm94LmhlaWdodCksTVp0KHQsaSxlLnksMCkpO2JyZWFrfWNhc2UgQSR0LlNFUklFUzp7bGV0IHI9S0t0KG4sInVzZSIpO2UuZXhwYW5kZWQ/KHRadChyLGUueCxlLnksZS53aWR0aCxlLmhlaWdodCksZ1p0KHQsZSksTVp0KHQsaSxlLnksLWUuaGVpZ2h0LzIrZS5sYWJlbEhlaWdodC8yKSk6KHRadChyLGksZS55LGUuY29yZUJveC53aWR0aCxlLmNvcmVCb3guaGVpZ2h0KSxNWnQodCxpLGUueSxlLmxhYmVsT2Zmc2V0KSk7YnJlYWt9Y2FzZSBBJHQuQlJJREdFOnRadChLS3QobiwicmVjdCIpLGUueCxlLnksZS53aWR0aCxlLmhlaWdodCk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcigiVW5yZWNvZ25pemVkIG5vZGUgdHlwZTogIitlLm5vZGUudHlwZSl9fSkoZSx0KX0pKSxpLmV4aXQoKS5lYWNoKChmdW5jdGlvbih0KXtuLnJlbW92ZU5vZGVHcm91cCh0Lm5vZGUubmFtZSk7bGV0IGU9RHUodGhpcyk7dC5pbkFubm90YXRpb25zLmxpc3QubGVuZ3RoPjAmJmUuc2VsZWN0KCIuIituJHQuQW5ub3RhdGlvbi5JTkJPWCkuc2VsZWN0QWxsKCIuIituJHQuQW5ub3RhdGlvbi5HUk9VUCkuZWFjaCgoZT0+e24ucmVtb3ZlQW5ub3RhdGlvbkdyb3VwKGUsdCl9KSksdC5vdXRBbm5vdGF0aW9ucy5saXN0Lmxlbmd0aD4wJiZlLnNlbGVjdCgiLiIrbiR0LkFubm90YXRpb24uT1VUQk9YKS5zZWxlY3RBbGwoIi4iK24kdC5Bbm5vdGF0aW9uLkdST1VQKS5lYWNoKChlPT57bi5yZW1vdmVBbm5vdGF0aW9uR3JvdXAoZSx0KX0pKX0pKS5yZW1vdmUoKSxpfWZ1bmN0aW9uIGdadCh0LGUpe2xldCBuPWUueC1lLndpZHRoLzIrZS5wYWRkaW5nTGVmdCxpPWUueS1lLmhlaWdodC8yK2UucGFkZGluZ1RvcDtRS3QoS0t0KHQsImciLG4kdC5TdWJzY2VuZS5HUk9VUCksbixpKX1mdW5jdGlvbiBfWnQodCxlLG4saSl7aWYoaSlyZXR1cm4gdm9pZCB0LmF0dHIoInBvaW50ZXItZXZlbnRzIiwibm9uZSIpO2xldCByPW9adChuLHladChlLm5vZGUsbikpO3Qub24oImRibGNsaWNrIiwodD0+e24uZmlyZSgibm9kZS10b2dnbGUtZXhwYW5kIix7bmFtZTp0Lm5vZGUubmFtZX0pfSkpLm9uKCJtb3VzZW92ZXIiLCh0PT57bi5pc05vZGVFeHBhbmRlZCh0KXx8bi5maXJlKCJub2RlLWhpZ2hsaWdodCIse25hbWU6dC5ub2RlLm5hbWV9KX0pKS5vbigibW91c2VvdXQiLCh0PT57bi5pc05vZGVFeHBhbmRlZCh0KXx8bi5maXJlKCJub2RlLXVuaGlnaGxpZ2h0Iix7bmFtZTp0Lm5vZGUubmFtZX0pfSkpLm9uKCJjbGljayIsKHQ9PntNdS5zdG9wUHJvcGFnYXRpb24oKSxuLmZpcmUoIm5vZGUtc2VsZWN0Iix7bmFtZTp0Lm5vZGUubmFtZX0pfSkpLm9uKCJjb250ZXh0bWVudSIsKCh0LGUpPT57bi5maXJlKCJub2RlLXNlbGVjdCIse25hbWU6dC5ub2RlLm5hbWV9KSxyLmNhbGwodCxlKX0pKX1mdW5jdGlvbiB5WnQodCxlKXtsZXQgbj1be3RpdGxlOmU9PkokdCh0LmluY2x1ZGUpLGFjdGlvbjoobixpLHIpPT57ZS5maXJlKCJub2RlLXRvZ2dsZS1leHRyYWN0Iix7bmFtZTp0Lm5hbWV9KX19XTtyZXR1cm4gZS5ub2RlQ29udGV4dE1lbnVJdGVtcyYmKG49bi5jb25jYXQoZS5ub2RlQ29udGV4dE1lbnVJdGVtcykpLHZadCh0KSYmbi5wdXNoKHt0aXRsZTplPT54WnQodCksYWN0aW9uOihuLGkscik9PntlLmZpcmUoIm5vZGUtdG9nZ2xlLXNlcmllc2dyb3VwIix7bmFtZTpiWnQodCl9KX19KSxufWZ1bmN0aW9uIHZadCh0KXtyZXR1cm4gbnVsbCE9PWJadCh0KX1mdW5jdGlvbiBiWnQodCl7aWYoIXQpcmV0dXJuIG51bGw7aWYodC50eXBlPT09QSR0LlNFUklFUylyZXR1cm4gdC5uYW1lO2lmKHQudHlwZT09PUEkdC5PUCl7cmV0dXJuIHQub3duaW5nU2VyaWVzfXJldHVybiBudWxsfWZ1bmN0aW9uIHhadCh0KXtyZXR1cm4oZnVuY3Rpb24gbih0KXtyZXR1cm4gdD09PUwkdC5HUk9VUD8iVW5ncm91cCB0aGlzIHNlcmllcyBvZiBub2RlcyI6Ikdyb3VwIHRoaXMgc2VyaWVzIG9mIG5vZGVzIn0pKG51bGwhPT0oZnVuY3Rpb24gZSh0KXtsZXQgZT1udWxsO3JldHVybiB0Pyh0LnR5cGU9PT1BJHQuU0VSSUVTP2U9dDp0LnBhcmVudE5vZGUmJnQucGFyZW50Tm9kZS50eXBlPT09QSR0LlNFUklFUyYmKGU9dC5wYXJlbnROb2RlKSxlKTpudWxsfSkodCk/TCR0LkdST1VQOkwkdC5VTkdST1VQKX1mdW5jdGlvbiB3WnQodCxlLG4saSl7bGV0IHI9dC5ub2RlKCksbz1yLnRleHRDb250ZW50LGE9bnVsbDtzd2l0Y2goZSl7Y2FzZSBBJHQuTUVUQTppJiYhaS5leHBhbmRlZCYmKGE9VUt0Lm5vZGVTaXplLm1ldGEubWF4TGFiZWxXaWR0aCk7YnJlYWs7Y2FzZSBBJHQuT1A6YT1VS3Qubm9kZVNpemUub3AubWF4TGFiZWxXaWR0aDticmVhaztjYXNlLTE6YT1VS3QuYW5ub3RhdGlvbnMubWF4TGFiZWxXaWR0aH1pZihudWxsIT09YSlyZXR1cm4gci50ZXh0Q29udGVudD0oZnVuY3Rpb24gcyh0LGUsbil7aWYoIXQpcmV0dXJuIiI7aWYoUyR0KHQsZSk8PW4pcmV0dXJuIHQ7bGV0IGk9MCxyPXQubGVuZ3RoO2Zvcig7aTxyOyl7Y29uc3Qgbz1pK01hdGgucm91bmQoKHItaSkvMik7UyR0KHQuc2xpY2UoMCxvKSsi4oCmIixlKTw9bj9pPW86cj1vLTF9cmV0dXJuIDA9PT1pP3RbMF06dC5zbGljZSgwLGkpKyLigKYifSkoci50ZXh0Q29udGVudCxuLGEpLHQuYXBwZW5kKCJ0aXRsZSIpLnRleHQobyl9bGV0IFNadD1udWxsO2Z1bmN0aW9uIE1adCh0LGUsbixpKXtLS3QodCwidGV4dCIsbiR0Lk5vZGUuTEFCRUwpLnRyYW5zaXRpb24oKS5hdHRyKCJ4IixlKS5hdHRyKCJ5IixuK2kpfWZ1bmN0aW9uIEVadCh0LGUsbil7bGV0IGk9cyR0KHQsImciLG4pO3N3aXRjaChlLm5vZGUudHlwZSl7Y2FzZSBBJHQuT1A6Y29uc3QgdD1lLm5vZGU7aWYoQ2UuZXhwb3J0cy5pc051bWJlcih0LmZ1bmN0aW9uSW5wdXRJbmRleCl8fENlLmV4cG9ydHMuaXNOdW1iZXIodC5mdW5jdGlvbk91dHB1dEluZGV4KSl7cyR0KGksInBvbHlnb24iLG4kdC5Ob2RlLkNPTE9SX1RBUkdFVCk7YnJlYWt9cyR0KGksImVsbGlwc2UiLG4kdC5Ob2RlLkNPTE9SX1RBUkdFVCk7YnJlYWs7Y2FzZSBBJHQuU0VSSUVTOmxldCBuPSJhbm5vdGF0aW9uIixyPWU7ci5jb3JlR3JhcGgmJihuPXIubm9kZS5oYXNOb25Db250cm9sRWRnZXM/InZlcnRpY2FsIjoiaG9yaXpvbnRhbCIpO2xldCBvPVtuJHQuTm9kZS5DT0xPUl9UQVJHRVRdO3IuaXNGYWRlZE91dCYmby5wdXNoKCJmYWRlZC1lbGxpcHNlIikscyR0KGksInVzZSIsbykuYXR0cigieGxpbms6aHJlZiIsIiNvcC1zZXJpZXMtIituKyItc3RhbXAiKSxzJHQoaSwicmVjdCIsbiR0Lk5vZGUuQ09MT1JfVEFSR0VUKS5hdHRyKCJyeCIsZS5yYWRpdXMpLmF0dHIoInJ5IixlLnJhZGl1cyk7YnJlYWs7Y2FzZSBBJHQuQlJJREdFOmNhc2UgQSR0Lk1FVEE6cyR0KGksInJlY3QiLG4kdC5Ob2RlLkNPTE9SX1RBUkdFVCkuYXR0cigicngiLGUucmFkaXVzKS5hdHRyKCJyeSIsZS5yYWRpdXMpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgRXJyb3IoIlVucmVjb2duaXplZCBub2RlIHR5cGU6ICIrZS5ub2RlLnR5cGUpfXJldHVybiBpfWZ1bmN0aW9uIFRadCh0KXtzd2l0Y2godC5ub2RlLnR5cGUpe2Nhc2UgQSR0Lk9QOnJldHVybiBuJHQuT1BOT0RFO2Nhc2UgQSR0Lk1FVEE6cmV0dXJuIG4kdC5NRVRBTk9ERTtjYXNlIEEkdC5TRVJJRVM6cmV0dXJuIG4kdC5TRVJJRVNOT0RFO2Nhc2UgQSR0LkJSSURHRTpyZXR1cm4gbiR0LkJSSURHRU5PREU7Y2FzZSBBJHQuRUxMSVBTSVM6cmV0dXJuIG4kdC5FTExJUFNJU05PREV9dGhyb3cgRXJyb3IoIlVucmVjb2duaXplZCBub2RlIHR5cGU6ICIrdC5ub2RlLnR5cGUpfWZ1bmN0aW9uIENadCh0LGUsbil7bGV0IGk9KGZ1bmN0aW9uIHIodCl7cmV0dXJuIHQucmVwbGFjZSgvKFs6LlxbXF0sL1xcXChcKV0pL2csIlxcJDEiKX0pKHQpO2lmKCFuKXJldHVybmB1cmwoIyR7aX0pYDtsZXQgbz1EdShuKSxhPW8uc2VsZWN0KCJkZWZzI19ncmFwaC1ncmFkaWVudHMiKTthLmVtcHR5KCkmJihhPW8uYXBwZW5kKCJkZWZzIikuYXR0cigiaWQiLCJfZ3JhcGgtZ3JhZGllbnRzIikpO2xldCBzPWEuc2VsZWN0KCJsaW5lYXJHcmFkaWVudCMiK2kpO2lmKHMuZW1wdHkoKSl7cz1hLmFwcGVuZCgibGluZWFyR3JhZGllbnQiKS5hdHRyKCJpZCIsdCkscy5zZWxlY3RBbGwoIioiKS5yZW1vdmUoKTtsZXQgbj0wO0NlLmV4cG9ydHMuZWFjaChlLCh0PT57bGV0IGU9dC5jb2xvcjtzLmFwcGVuZCgic3RvcCIpLmF0dHIoIm9mZnNldCIsbikuYXR0cigic3RvcC1jb2xvciIsZSkscy5hcHBlbmQoInN0b3AiKS5hdHRyKCJvZmZzZXQiLG4rdC5wcm9wb3J0aW9uKS5hdHRyKCJzdG9wLWNvbG9yIixlKSxuKz10LnByb3BvcnRpb259KSl9cmV0dXJuYHVybCgjJHtpfSlgfWZ1bmN0aW9uIEFadCh0KXtEdSh0KS5zZWxlY3QoImRlZnMjX2dyYXBoLWdyYWRpZW50cyIpLnJlbW92ZSgpfWZ1bmN0aW9uIGtadCh0LGUsbixpLHIpe2xldCBvPWdLdDtzd2l0Y2godD10fHwoKCk9PjApLGUpe2Nhc2Ugclp0Lk5PTkU6Y2FzZSByWnQuU1RSVUNUVVJFOmlmKG4ubm9kZS50eXBlPT09QSR0Lk1FVEEpe2xldCByPW4ubm9kZS50ZW1wbGF0ZUlkO3JldHVybiBlPT09clp0LlNUUlVDVFVSRSYmbnVsbCE9PXI/by5TVFJVQ1RVUkVfUEFMRVRURSh0KHIpLGkpOm8uVU5LTk9XTn1yZXR1cm4gbi5ub2RlLnR5cGU9PT1BJHQuU0VSSUVTP2k/by5FWFBBTkRFRF9DT0xPUjoid2hpdGUiOm4ubm9kZS50eXBlPT09QSR0LkJSSURHRT9uLnN0cnVjdHVyYWw/IiNmMGUiOm4ubm9kZS5pbmJvdW5kPyIjMGVmIjoiI2ZlMCI6Q2UuZXhwb3J0cy5pc051bWJlcihuLm5vZGUuZnVuY3Rpb25JbnB1dEluZGV4KT8iIzc5NTU0OCI6Q2UuZXhwb3J0cy5pc051bWJlcihuLm5vZGUuZnVuY3Rpb25PdXRwdXRJbmRleCk/IiMwMDk2ODgiOiJ3aGl0ZSI7Y2FzZSByWnQuREVWSUNFOnJldHVybiBudWxsPT1uLmRldmljZUNvbG9ycz9vLlVOS05PV046aT9vLkVYUEFOREVEX0NPTE9SOkNadCgiZGV2aWNlLSIrbi5ub2RlLm5hbWUsbi5kZXZpY2VDb2xvcnMscik7Y2FzZSByWnQuWExBX0NMVVNURVI6cmV0dXJuIG51bGw9PW4ueGxhQ2x1c3RlckNvbG9ycz9vLlVOS05PV046aT9vLkVYUEFOREVEX0NPTE9SOkNadCgieGxhLSIrbi5ub2RlLm5hbWUsbi54bGFDbHVzdGVyQ29sb3JzLHIpO2Nhc2Ugclp0LkNPTVBVVEVfVElNRTpyZXR1cm4gaT9vLkVYUEFOREVEX0NPTE9SOm4uY29tcHV0ZVRpbWVDb2xvcnx8by5VTktOT1dOO2Nhc2Ugclp0Lk1FTU9SWTpyZXR1cm4gaT9vLkVYUEFOREVEX0NPTE9SOm4ubWVtb3J5Q29sb3J8fG8uVU5LTk9XTjtjYXNlIHJadC5PUF9DT01QQVRJQklMSVRZOnJldHVybiBudWxsPT1uLmNvbXBhdGliaWxpdHlDb2xvcnM/by5VTktOT1dOOmk/by5FWFBBTkRFRF9DT0xPUjpDWnQoIm9wLWNvbXBhdC0iK24ubm9kZS5uYW1lLG4uY29tcGF0aWJpbGl0eUNvbG9ycyxyKTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVW5rbm93biBjYXNlIHRvIGNvbG9yIG5vZGVzIGJ5Iil9fWZ1bmN0aW9uIExadCh0LGUsbixpKXtpPWl8fG4kdC5Ob2RlLlNIQVBFO2NvbnN0IHI9bi5pc05vZGVIaWdobGlnaHRlZChlLm5vZGUubmFtZSksbz1uLmlzTm9kZVNlbGVjdGVkKGUubm9kZS5uYW1lKSxhPWUuaXNJbkV4dHJhY3R8fGUuaXNPdXRFeHRyYWN0fHxlLmlzTGlicmFyeUZ1bmN0aW9uLHM9ZS5leHBhbmRlZCYmaSE9PW4kdC5Bbm5vdGF0aW9uLk5PREUsbD1lLmlzRmFkZWRPdXQ7dC5jbGFzc2VkKCJoaWdobGlnaHRlZCIsciksdC5jbGFzc2VkKCJzZWxlY3RlZCIsbyksdC5jbGFzc2VkKCJleHRyYWN0IixhKSx0LmNsYXNzZWQoImV4cGFuZGVkIixzKSx0LmNsYXNzZWQoImZhZGVkIixsKTtjb25zdCBjPXQuc2VsZWN0KCIuIitpKyIgLiIrbiR0Lk5vZGUuQ09MT1JfVEFSR0VUKSx1PWtadChuLnRlbXBsYXRlSW5kZXgsbi5jb2xvckJ5LGUscyxuLmdldEdyYXBoU3ZnUm9vdCgpKTtjLnN0eWxlKCJmaWxsIix1KSxjLnN0eWxlKCJzdHJva2UiLG8/bnVsbDpQWnQodSkpfWZ1bmN0aW9uIFBadCh0KXtyZXR1cm4idXJsIj09PXQuc3Vic3RyaW5nKDAsMyk/Z0t0LkdSQURJRU5UX09VVExJTkU6bmQodCkuZGFya2VyKCkudG9TdHJpbmcoKX1mdW5jdGlvbiBOWnQodCxlLG4saSl7Y29uc3Qgcj1EdSh0KTtpZihyLnNlbGVjdEFsbCgiLmlucHV0LWhpZ2hsaWdodCIpLmNsYXNzZWQoImlucHV0LWhpZ2hsaWdodCIsITEpLHIuc2VsZWN0QWxsKCIubm9uLWlucHV0IikuY2xhc3NlZCgibm9uLWlucHV0IiwhMSksci5zZWxlY3RBbGwoIi5pbnB1dC1wYXJlbnQiKS5jbGFzc2VkKCJpbnB1dC1wYXJlbnQiLCExKSxyLnNlbGVjdEFsbCgiLmlucHV0LWNoaWxkIikuY2xhc3NlZCgiaW5wdXQtY2hpbGQiLCExKSxyLnNlbGVjdEFsbCgiLmlucHV0LWVkZ2UtaGlnaGxpZ2h0IikuY2xhc3NlZCgiaW5wdXQtZWRnZS1oaWdobGlnaHQiLCExKSxyLnNlbGVjdEFsbCgiLm5vbi1pbnB1dC1lZGdlLWhpZ2hsaWdodCIpLmNsYXNzZWQoIm5vbi1pbnB1dC1lZGdlLWhpZ2hsaWdodCIsITEpLHIuc2VsZWN0QWxsKCIuaW5wdXQtaGlnaGxpZ2h0LXNlbGVjdGVkIikuY2xhc3NlZCgiaW5wdXQtaGlnaGxpZ2h0LXNlbGVjdGVkIiwhMSksIWV8fCFpfHwhbilyZXR1cm47bGV0IG89SVp0KG4sZSksYT17fTtDZS5leHBvcnRzLmVhY2gobywoZnVuY3Rpb24obil7YT1SWnQodCxlLG4sYSl9KSk7bGV0IHM9T2JqZWN0LmtleXMoYSksbD0oZnVuY3Rpb24gYyh0LGUpe2xldCBuPXt9O3JldHVybiBDZS5leHBvcnRzLmVhY2goZSwoZnVuY3Rpb24oZSl7bGV0IGk9dC5nZXROb2RlQnlOYW1lKGUpLHI9T1p0KHQsaSk7bltyLm5hbWVdPXJ9KSksbn0pKGUscyk7IShmdW5jdGlvbiB1KHQsZSl7Q2UuZXhwb3J0cy5mb3JPd24oZSwoZnVuY3Rpb24oZSl7bGV0IG49ZTtmb3IoO24ubmFtZSE9PUUkdDspe2NvbnN0IGU9RHUodCkuc2VsZWN0KGAubm9kZVtkYXRhLW5hbWU9IiR7bi5uYW1lfSJdYCk7IWUubm9kZXMoKS5sZW5ndGh8fGUuY2xhc3NlZCgiaW5wdXQtaGlnaGxpZ2h0Iil8fGUuY2xhc3NlZCgic2VsZWN0ZWQiKXx8ZS5jbGFzc2VkKCJvcCIpfHxlLmNsYXNzZWQoImlucHV0LXBhcmVudCIsITApLG49bi5wYXJlbnROb2RlfX0pKX0pKHQsbCksci5zZWxlY3RBbGwoImcubm9kZTpub3QoLnNlbGVjdGVkKTpub3QoLmlucHV0LWhpZ2hsaWdodCk6bm90KC5pbnB1dC1wYXJlbnQpOm5vdCguaW5wdXQtY2hpbGRyZW4pIikuY2xhc3NlZCgibm9uLWlucHV0IiwhMCkuZWFjaCgoZnVuY3Rpb24odCl7ci5zZWxlY3RBbGwoYFtkYXRhLW5hbWU9IiR7dC5ub2RlLm5hbWV9Il1gKS5jbGFzc2VkKCJub24taW5wdXQiLCEwKX0pKSxyLnNlbGVjdEFsbCgiZy5lZGdlOm5vdCguaW5wdXQtZWRnZS1oaWdobGlnaHQpIikuY2xhc3NlZCgibm9uLWlucHV0LWVkZ2UtaGlnaGxpZ2h0IiwhMCl9ZnVuY3Rpb24gSVp0KHQsZSl7bGV0IG49W10saT1lLmdldE5vZGVCeU5hbWUodCk7aWYoaSBpbnN0YW5jZW9mIE8kdClyZXR1cm5baV0uY29uY2F0KGkuaW5FbWJlZGRpbmdzKTtsZXQgcj1pLm1ldGFncmFwaC5ub2RlcygpO3JldHVybiBDZS5leHBvcnRzLmVhY2gociwoZnVuY3Rpb24odCl7bj1uLmNvbmNhdChJWnQodCxlKSl9KSksbn1mdW5jdGlvbiBSWnQodCxlLG4saSl7aWYoaVtuLm5hbWVdKXJldHVybiBpO2lbbi5uYW1lXT0hMDtsZXQgcj1uLmlucHV0cyxvPU9adChlLG4pO0R1KHQpLnNlbGVjdChgLm5vZGVbZGF0YS1uYW1lPSIke28ubmFtZX0iXWApLmNsYXNzZWQoImlucHV0LWhpZ2hsaWdodCIsITApO2xldCBhPXt9O0NlLmV4cG9ydHMuZWFjaChyLChmdW5jdGlvbih0KXtsZXQgbj1lLmdldE5vZGVCeU5hbWUodC5uYW1lKTtpZih2b2lkIDA9PT1uKXJldHVybjtpZihuIGluc3RhbmNlb2YgRCR0KXtsZXQgdD0kJHQobi5uYW1lKTtuPWUuZ2V0Tm9kZUJ5TmFtZSh0KX1sZXQgaT1PWnQoZSxuKSxyPWFbaS5uYW1lXTtyP3Iub3BOb2Rlcy5wdXNoKG4pOmFbaS5uYW1lXT17dmlzaWJsZVBhcmVudDppLG9wTm9kZXM6W25dfX0pKTtsZXQgcz17fSxsPVtvXTtzW28ubmFtZV09e3RyYWNlZDohMSxpbmRleDowLGNvbm5lY3Rpb25FbmRwb2ludHM6W119O2xldCBjPW87Zm9yKGxldCB0PTE7Yy5uYW1lIT09RSR0O3QrKyljPWMucGFyZW50Tm9kZSxzW2MubmFtZV09e3RyYWNlZDohMSxpbmRleDp0LGNvbm5lY3Rpb25FbmRwb2ludHM6W119LGxbdF09YztyZXR1cm4gQ2UuZXhwb3J0cy5mb3JPd24oYSwoZnVuY3Rpb24obixyKXtsZXQgYT1uLnZpc2libGVQYXJlbnQ7Q2UuZXhwb3J0cy5lYWNoKG4ub3BOb2RlcywoZnVuY3Rpb24obil7aT1SWnQodCxlLG4saSl9KSksYS5uYW1lIT09by5uYW1lJiYoZnVuY3Rpb24gYyh0LGUsbixpKXtsZXQgcj1lLG89ZSxhPVtdO2Zvcig7IW5bci5uYW1lXTspby5uYW1lIT09ci5uYW1lJiZhLnB1c2goW28scl0pLG89cixyPXIucGFyZW50Tm9kZTtsZXQgcz1uW3IubmFtZV0uaW5kZXgsbD1pW01hdGgubWF4KHMtMSwwKV0ubmFtZSxjPWwsdT1vLm5hbWUsaD1vLm5hbWU7Y29uc3QgZD1EdSh0KTtkLnNlbGVjdEFsbChgW2RhdGEtZWRnZT0iJHtofS0tJHtsfSJdYCkuY2xhc3NlZCgiaW5wdXQtZWRnZS1oaWdobGlnaHQiLCEwKSxDZS5leHBvcnRzLmVhY2goYSwoZnVuY3Rpb24odCl7ZC5zZWxlY3RBbGwoYFtkYXRhLWVkZ2U9IiR7dFswXS5uYW1lfS0tJHtjfX5+JHt0WzFdLm5hbWV9fn5PVVQiXWApLmNsYXNzZWQoImlucHV0LWVkZ2UtaGlnaGxpZ2h0IiwhMCl9KSk7Zm9yKGxldCB0PTE7dDxzO3QrKyl7ZC5zZWxlY3RBbGwoYFtkYXRhLWVkZ2U9IiR7dX1+fiR7aVt0XS5uYW1lfX5+SU4tLSR7aVt0LTFdLm5hbWV9Il1gKS5jbGFzc2VkKCJpbnB1dC1lZGdlLWhpZ2hsaWdodCIsITApfX0pKHQsYSxzLGwpfSkpLGl9ZnVuY3Rpb24gT1p0KHQsZSl7bGV0IG49ITEsaT1lO2Zvcig7IW47KWlmKGk9KGU9aSkucGFyZW50Tm9kZSx2b2lkIDA9PT1pKW49ITA7ZWxzZXtsZXQgZT10LmdldFJlbmRlck5vZGVCeU5hbWUoaS5uYW1lKTtlJiYoZS5leHBhbmRlZHx8aSBpbnN0YW5jZW9mIE8kdCkmJihuPSEwKX1yZXR1cm4gZX1mdW5jdGlvbiB6WnQodCxlLG4saSl7bGV0IHI9dC5zZWxlY3RBbGwoKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2hpbGROb2Rlc30pKS5kYXRhKGUubGlzdCwodD0+dC5ub2RlLm5hbWUpKTtyZXR1cm4gci5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImRhdGEtbmFtZSIsKHQ9PnQubm9kZS5uYW1lKSkuZWFjaCgoZnVuY3Rpb24odCl7bGV0IGU9RHUodGhpcyk7aS5hZGRBbm5vdGF0aW9uR3JvdXAodCxuLGUpO2xldCByPW4kdC5Bbm5vdGF0aW9uLkVER0Usbz10LnJlbmRlck1ldGFlZGdlSW5mbyYmdC5yZW5kZXJNZXRhZWRnZUluZm8ubWV0YWVkZ2U7byYmIW8ubnVtUmVndWxhckVkZ2VzJiYocis9IiAiK24kdC5Bbm5vdGF0aW9uLkNPTlRST0xfRURHRSksbyYmby5udW1SZWZFZGdlcyYmKHIrPSIgIituJHQuRWRnZS5SRUZfTElORSkscFp0KGUsdCxpLHIpLHQuYW5ub3RhdGlvblR5cGUhPT1MS3QuRUxMSVBTSVM/KCEoZnVuY3Rpb24gYSh0LGUpe2xldCBuPWUubm9kZS5uYW1lLnNwbGl0KCIvIik7cmV0dXJuIERadCh0LG5bbi5sZW5ndGgtMV0sZSxudWxsKX0pKGUsdCksKGZ1bmN0aW9uIHModCxlKXtpZihlLmFubm90YXRpb25UeXBlPT09TEt0LlNVTU1BUlkpe3MkdCh0LCJ1c2UiKS5hdHRyKCJjbGFzcyIsInN1bW1hcnkiKS5hdHRyKCJ4bGluazpocmVmIiwiI3N1bW1hcnktaWNvbiIpLmF0dHIoImN1cnNvciIsInBvaW50ZXIiKX1lbHNle3MkdChFWnQodCxlLG4kdC5Bbm5vdGF0aW9uLk5PREUpLCJ0aXRsZSIpLnRleHQoZS5ub2RlLm5hbWUpfX0pKGUsdCkpOkRadChlLHQubm9kZS5uYW1lLHQsbiR0LkFubm90YXRpb24uRUxMSVBTSVMpfSkpLm1lcmdlKHIpLmF0dHIoImNsYXNzIiwodD0+biR0LkFubm90YXRpb24uR1JPVVArIiAiKyhmdW5jdGlvbiBlKHQpe3JldHVybihMS3RbdF18fCIiKS50b0xvd2VyQ2FzZSgpfHxudWxsfSkodC5hbm5vdGF0aW9uVHlwZSkrIiAiK1RadCh0KSkpLmVhY2goKGZ1bmN0aW9uKHQpe2xldCBlPUR1KHRoaXMpOyEoZnVuY3Rpb24gcih0LGUsbixpKXtsZXQgcj1ZS3QoZSk7bi5yZW5kZXJOb2RlSW5mbyYmbi5hbm5vdGF0aW9uVHlwZSE9PUxLdC5FTExJUFNJUyYmTFp0KHQsbi5yZW5kZXJOb2RlSW5mbyxpLG4kdC5Bbm5vdGF0aW9uLk5PREUpO24uYW5ub3RhdGlvblR5cGU9PT1MS3QuU1VNTUFSWSYmKG4ud2lkdGgrPTEwKTt0LnNlbGVjdCgidGV4dC4iK24kdC5Bbm5vdGF0aW9uLkxBQkVMKS50cmFuc2l0aW9uKCkuYXR0cigieCIscituLmR4KyhuLmlzSW4/LTE6MSkqKG4ud2lkdGgvMituLmxhYmVsT2Zmc2V0KSkuYXR0cigieSIsZS55K24uZHkpLHQuc2VsZWN0KCJ1c2Uuc3VtbWFyeSIpLnRyYW5zaXRpb24oKS5hdHRyKCJ4IixyK24uZHgtMykuYXR0cigieSIsZS55K24uZHktNiksZVp0KHQuc2VsZWN0KCIuIituJHQuQW5ub3RhdGlvbi5OT0RFKyIgZWxsaXBzZSIpLHIrbi5keCxlLnkrbi5keSxuLndpZHRoLG4uaGVpZ2h0KSx0WnQodC5zZWxlY3QoIi4iK24kdC5Bbm5vdGF0aW9uLk5PREUrIiByZWN0IikscituLmR4LGUueStuLmR5LG4ud2lkdGgsbi5oZWlnaHQpLHRadCh0LnNlbGVjdCgiLiIrbiR0LkFubm90YXRpb24uTk9ERSsiIHVzZSIpLHIrbi5keCxlLnkrbi5keSxuLndpZHRoLG4uaGVpZ2h0KSx0LnNlbGVjdCgicGF0aC4iK24kdC5Bbm5vdGF0aW9uLkVER0UpLnRyYW5zaXRpb24oKS5hdHRyKCJkIiwodD0+e2xldCBuPXQucG9pbnRzLm1hcCgodD0+KHt4OnQuZHgrcix5OnQuZHkrZS55fSkpKTtyZXR1cm4gZlp0KG4pfSkpfSkoZSxuLHQsaSksdC5hbm5vdGF0aW9uVHlwZSE9PUxLdC5FTExJUFNJUyYmKGZ1bmN0aW9uIG8odCxlLG4saSl7dC5vbigibW91c2VvdmVyIiwodD0+e2kuZmlyZSgiYW5ub3RhdGlvbi1oaWdobGlnaHQiLHtuYW1lOnQubm9kZS5uYW1lLGhvc3ROYW1lOmUubm9kZS5uYW1lfSl9KSkub24oIm1vdXNlb3V0IiwodD0+e2kuZmlyZSgiYW5ub3RhdGlvbi11bmhpZ2hsaWdodCIse25hbWU6dC5ub2RlLm5hbWUsaG9zdE5hbWU6ZS5ub2RlLm5hbWV9KX0pKS5vbigiY2xpY2siLCh0PT57TXUuc3RvcFByb3BhZ2F0aW9uKCksaS5maXJlKCJhbm5vdGF0aW9uLXNlbGVjdCIse25hbWU6dC5ub2RlLm5hbWUsaG9zdE5hbWU6ZS5ub2RlLm5hbWV9KX0pKSxuLmFubm90YXRpb25UeXBlIT09TEt0LlNVTU1BUlkmJm4uYW5ub3RhdGlvblR5cGUhPT1MS3QuQ09OU1RBTlQmJnQub24oImNvbnRleHRtZW51IixvWnQoaSx5WnQobi5ub2RlLGkpKSl9KShlLG4sdCxpKX0pKSxyLmV4aXQoKS5lYWNoKChmdW5jdGlvbih0KXtpLnJlbW92ZUFubm90YXRpb25Hcm91cCh0LG4pfSkpLnJlbW92ZSgpLHJ9ZnVuY3Rpb24gRFp0KHQsZSxuLGkpe2xldCByPW4kdC5Bbm5vdGF0aW9uLkxBQkVMO3JldHVybiBpJiYocis9IiAiK2kpLHdadCh0LmFwcGVuZCgidGV4dCIpLmF0dHIoImNsYXNzIixyKS5hdHRyKCJkeSIsIi4zNWVtIikuYXR0cigidGV4dC1hbmNob3IiLG4uaXNJbj8iZW5kIjoic3RhcnQiKS50ZXh0KGUpLC0xLGkkdC5MQUJFTCl9ZnVuY3Rpb24gQlp0KHQsZSxuLGkpe2xldCByPWEkdCh0LCJnIixpPWl8fG4kdC5TY2VuZS5HUk9VUCkuZW1wdHkoKSxvPXMkdCh0LCJnIixpKSxhPXMkdChvLCJnIixuJHQuU2NlbmUuQ09SRSkscz1DZS5leHBvcnRzLnJlZHVjZShlLmNvcmVHcmFwaC5ub2RlcygpLCgodCxuKT0+e2xldCBpPWUuY29yZUdyYXBoLm5vZGUobik7cmV0dXJuIGkuZXhjbHVkZWR8fHQucHVzaChpKSx0fSksW10pO2lmKGUubm9kZS50eXBlPT09QSR0LlNFUklFUyYmcy5yZXZlcnNlKCksbFp0KGEsZS5jb3JlR3JhcGgsbiksbVp0KGEscyxuKSxlLmlzb2xhdGVkSW5FeHRyYWN0Lmxlbmd0aD4wKXttWnQocyR0KG8sImciLG4kdC5TY2VuZS5JTkVYVFJBQ1QpLGUuaXNvbGF0ZWRJbkV4dHJhY3Qsbil9ZWxzZSBhJHQobywiZyIsbiR0LlNjZW5lLklORVhUUkFDVCkucmVtb3ZlKCk7aWYoZS5pc29sYXRlZE91dEV4dHJhY3QubGVuZ3RoPjApe21adChzJHQobywiZyIsbiR0LlNjZW5lLk9VVEVYVFJBQ1QpLGUuaXNvbGF0ZWRPdXRFeHRyYWN0LG4pfWVsc2UgYSR0KG8sImciLG4kdC5TY2VuZS5PVVRFWFRSQUNUKS5yZW1vdmUoKTtpZihlLmxpYnJhcnlGdW5jdGlvbnNFeHRyYWN0Lmxlbmd0aD4wKXttWnQocyR0KG8sImciLG4kdC5TY2VuZS5GVU5DVElPTl9MSUJSQVJZKSxlLmxpYnJhcnlGdW5jdGlvbnNFeHRyYWN0LG4pfWVsc2UgYSR0KG8sImciLG4kdC5TY2VuZS5GVU5DVElPTl9MSUJSQVJZKS5yZW1vdmUoKTtyZXR1cm4oZnVuY3Rpb24gbCh0LGUpe2xldCBuPWUubm9kZS50eXBlPT09QSR0LlNFUklFUz8wOlVLdC5zdWJzY2VuZS5tZXRhLmxhYmVsSGVpZ2h0O1FLdChLS3QodCwiZyIsWkt0LlNjZW5lLkNPUkUpLDAsbik7bGV0IGk9ZS5pc29sYXRlZEluRXh0cmFjdC5sZW5ndGg+MCxyPWUuaXNvbGF0ZWRPdXRFeHRyYWN0Lmxlbmd0aD4wLG89ZS5saWJyYXJ5RnVuY3Rpb25zRXh0cmFjdC5sZW5ndGg+MCxhPVVLdC5zdWJzY2VuZS5tZXRhLmV4dHJhY3RYT2Zmc2V0LHM9MDtpZihpJiYocys9ZS5vdXRFeHRyYWN0Qm94LndpZHRoKSxyJiYocys9ZS5vdXRFeHRyYWN0Qm94LndpZHRoKSxpKXtsZXQgaT1lLmNvcmVCb3gud2lkdGg7aT1zPGpLdD9pLWpLdCtlLmluRXh0cmFjdEJveC53aWR0aC8yOmktZS5pbkV4dHJhY3RCb3gud2lkdGgvMi1lLm91dEV4dHJhY3RCb3gud2lkdGgtKHI/YTowKSxpPWktZS5saWJyYXJ5RnVuY3Rpb25zQm94LndpZHRoLShvP2E6MCksUUt0KEtLdCh0LCJnIixaS3QuU2NlbmUuSU5FWFRSQUNUKSxpLG4pfWlmKHIpe2xldCBpPWUuY29yZUJveC53aWR0aDtzPGpLdD9pPWktakt0K2Uub3V0RXh0cmFjdEJveC53aWR0aC8yOmktPWUub3V0RXh0cmFjdEJveC53aWR0aC8yLGk9aS1lLmxpYnJhcnlGdW5jdGlvbnNCb3gud2lkdGgtKG8/YTowKSxRS3QoS0t0KHQsImciLFpLdC5TY2VuZS5PVVRFWFRSQUNUKSxpLG4pfWlmKG8pe2xldCBpPWUuY29yZUJveC53aWR0aC1lLmxpYnJhcnlGdW5jdGlvbnNCb3gud2lkdGgvMjtRS3QoS0t0KHQsImciLFpLdC5TY2VuZS5GVU5DVElPTl9MSUJSQVJZKSxpLG4pfX0pKG8sZSksciYmby5hdHRyKCJvcGFjaXR5IiwwKS50cmFuc2l0aW9uKCkuYXR0cigib3BhY2l0eSIsMSksb31jbGFzcyBIWnR7Y29uc3RydWN0b3IodCxlLG4saSxyLG8pe3RoaXMuc3ZnPXQsdGhpcy5sYWJlbFBhZGRpbmc9byx0aGlzLnpvb21HPWUsdGhpcy5tYWluWm9vbT1uLHRoaXMubWF4V2FuZEg9cjtsZXQgYT1EdShpLnNoYWRvd1Jvb3QpLHM9YS5zZWxlY3QoInN2ZyIpLGw9cy5zZWxlY3QoInJlY3QiKTt0aGlzLnZpZXdwb2ludENvb3JkPXt4OjAseTowfTtsZXQgYz1JaCgpLnN1YmplY3QoT2JqZWN0KS5vbigiZHJhZyIsKHQ9Pnt0aGlzLnZpZXdwb2ludENvb3JkLng9TXUueCx0aGlzLnZpZXdwb2ludENvb3JkLnk9TXUueSx0aGlzLnVwZGF0ZVZpZXdwb2ludCgpfSkpO2wuZGF0dW0odGhpcy52aWV3cG9pbnRDb29yZCkuY2FsbChjKSxzLm9uKCJjbGljayIsKCgpPT57aWYoTXUuZGVmYXVsdFByZXZlbnRlZClyZXR1cm47bGV0IHQ9TnVtYmVyKGwuYXR0cigid2lkdGgiKSksZT1OdW1iZXIobC5hdHRyKCJoZWlnaHQiKSksbj1iaChzLm5vZGUoKSk7dGhpcy52aWV3cG9pbnRDb29yZC54PW5bMF0tdC8yLHRoaXMudmlld3BvaW50Q29vcmQueT1uWzFdLWUvMix0aGlzLnVwZGF0ZVZpZXdwb2ludCgpfSkpLHRoaXMudmlld3BvaW50PWwubm9kZSgpLHRoaXMubWluaW1hcFN2Zz1zLm5vZGUoKSx0aGlzLm1pbmltYXA9aSx0aGlzLmNhbnZhcz1hLnNlbGVjdCgiY2FudmFzLmZpcnN0Iikubm9kZSgpLHRoaXMuY2FudmFzQnVmZmVyPWEuc2VsZWN0KCJjYW52YXMuc2Vjb25kIikubm9kZSgpLHRoaXMuZG93bmxvYWRDYW52YXM9YS5zZWxlY3QoImNhbnZhcy5kb3dubG9hZCIpLm5vZGUoKSxEdSh0aGlzLmRvd25sb2FkQ2FudmFzKS5zdHlsZSgiZGlzcGxheSIsIm5vbmUiKSx0aGlzLnVwZGF0ZSgpfXVwZGF0ZVZpZXdwb2ludCgpe0R1KHRoaXMudmlld3BvaW50KS5hdHRyKCJ4Iix0aGlzLnZpZXdwb2ludENvb3JkLngpLmF0dHIoInkiLHRoaXMudmlld3BvaW50Q29vcmQueSk7bGV0IHQ9LXRoaXMudmlld3BvaW50Q29vcmQueCp0aGlzLnNjYWxlTWFpbi90aGlzLnNjYWxlTWluaW1hcCxlPS10aGlzLnZpZXdwb2ludENvb3JkLnkqdGhpcy5zY2FsZU1haW4vdGhpcy5zY2FsZU1pbmltYXA7RHUodGhpcy5zdmcpLmNhbGwodGhpcy5tYWluWm9vbS50cmFuc2Zvcm0scU4udHJhbnNsYXRlKHQsZSkuc2NhbGUodGhpcy5zY2FsZU1haW4pKX1nZXRJbWFnZUJsb2IoKXtyZXR1cm4gbmV3IFByb21pc2UoKHQ9Pnt0aGlzLmRvd25sb2FkQ2FudmFzLnRvQmxvYigoZT0+e3QoZSl9KSwiaW1hZ2UvcG5nIil9KSl9dXBkYXRlKCl7bGV0IHQ9bnVsbDt0cnl7aWYodD10aGlzLnpvb21HLmdldEJCb3goKSwwPT09dC53aWR0aClyZXR1cm59Y2F0Y2godCl7cmV0dXJufWxldCBlPUR1KHRoaXMuc3ZnKSxuPSIiO2NvbnN0IGk9dGhpcy5zdmcscj0oaS5nZXRSb290Tm9kZT9pLmdldFJvb3ROb2RlKCk6dGhpcy5zdmcucGFyZW50Tm9kZSkuc3R5bGVTaGVldHM7Zm9yKGxldCB0PTA7dDxyLmxlbmd0aDt0KyspdHJ5e2xldCBlPXJbdF0uY3NzUnVsZXN8fHJbdF0ucnVsZXM7aWYobnVsbD09ZSljb250aW51ZTtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKyluKz1lW3RdLmNzc1RleHQucmVwbGFjZSgvID90Zi1bXHctXSsgPy9nLCIiKSsiXG4ifWNhdGNoKHQpe2lmKCJTZWN1cml0eUVycm9yIiE9PXQubmFtZSl0aHJvdyB0fWxldCBvPWUuYXBwZW5kKCJzdHlsZSIpO28udGV4dChuKTtsZXQgYT1EdSh0aGlzLnpvb21HKSxzPWEuYXR0cigidHJhbnNmb3JtIik7YS5hdHRyKCJ0cmFuc2Zvcm0iLG51bGwpLHQuaGVpZ2h0Kz10LnksdC53aWR0aCs9dC54LHQuaGVpZ2h0Kz0yKnRoaXMubGFiZWxQYWRkaW5nLHQud2lkdGgrPTIqdGhpcy5sYWJlbFBhZGRpbmcsZS5hdHRyKCJ3aWR0aCIsdC53aWR0aCkuYXR0cigiaGVpZ2h0Iix0LmhlaWdodCksdGhpcy5zY2FsZU1pbmltYXA9dGhpcy5tYXhXYW5kSC9NYXRoLm1heCh0LndpZHRoLHQuaGVpZ2h0KSx0aGlzLm1pbmltYXBTaXplPXt3aWR0aDp0LndpZHRoKnRoaXMuc2NhbGVNaW5pbWFwLGhlaWdodDp0LmhlaWdodCp0aGlzLnNjYWxlTWluaW1hcH0sRHUodGhpcy5taW5pbWFwU3ZnKS5hdHRyKHRoaXMubWluaW1hcFNpemUpLER1KHRoaXMuY2FudmFzQnVmZmVyKS5hdHRyKHRoaXMubWluaW1hcFNpemUpO2NvbnN0IGw9RHUodGhpcy5kb3dubG9hZENhbnZhcyk7bC5zdHlsZSgid2lkdGgiLHQud2lkdGgpLGwuc3R5bGUoImhlaWdodCIsdC5oZWlnaHQpLGwuYXR0cigid2lkdGgiLDMqdC53aWR0aCksbC5hdHRyKCJoZWlnaHQiLDMqdC5oZWlnaHQpLG51bGwhPXRoaXMudHJhbnNsYXRlJiZudWxsIT10aGlzLnpvb20mJnJlcXVlc3RBbmltYXRpb25GcmFtZSgoKCk9PnRoaXMuem9vbSgpKSk7bGV0IGM9KG5ldyBYTUxTZXJpYWxpemVyKS5zZXJpYWxpemVUb1N0cmluZyh0aGlzLnN2Zyk7by5yZW1vdmUoKSxlLmF0dHIoIndpZHRoIixudWxsKS5hdHRyKCJoZWlnaHQiLG51bGwpLGEuYXR0cigidHJhbnNmb3JtIixzKTtsZXQgdT1uZXcgSW1hZ2U7dS5vbmxvYWQ9KCk9PntsZXQgdD10aGlzLmNhbnZhc0J1ZmZlci5nZXRDb250ZXh0KCIyZCIpO3QuY2xlYXJSZWN0KDAsMCx0aGlzLmNhbnZhc0J1ZmZlci53aWR0aCx0aGlzLmNhbnZhc0J1ZmZlci5oZWlnaHQpLHQuZHJhd0ltYWdlKHUsMCwwLHRoaXMubWluaW1hcFNpemUud2lkdGgsdGhpcy5taW5pbWFwU2l6ZS5oZWlnaHQpLHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKCk9PntEdSh0aGlzLmNhbnZhc0J1ZmZlcikuc3R5bGUoImRpc3BsYXkiLG51bGwpLER1KHRoaXMuY2FudmFzKS5zdHlsZSgiZGlzcGxheSIsIm5vbmUiKSxbdGhpcy5jYW52YXMsdGhpcy5jYW52YXNCdWZmZXJdPVt0aGlzLmNhbnZhc0J1ZmZlcix0aGlzLmNhbnZhc119KSk7bGV0IGU9dGhpcy5kb3dubG9hZENhbnZhcy5nZXRDb250ZXh0KCIyZCIpO2UuY2xlYXJSZWN0KDAsMCx0aGlzLmRvd25sb2FkQ2FudmFzLndpZHRoLHRoaXMuZG93bmxvYWRDYW52YXMuaGVpZ2h0KSxlLmRyYXdJbWFnZSh1LDAsMCx0aGlzLmRvd25sb2FkQ2FudmFzLndpZHRoLHRoaXMuZG93bmxvYWRDYW52YXMuaGVpZ2h0KX0sdS5vbmVycm9yPSgpPT57bGV0IHQ9bmV3IEJsb2IoW2NdLHt0eXBlOiJpbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgifSk7dS5zcmM9VVJMLmNyZWF0ZU9iamVjdFVSTCh0KX0sdS5zcmM9ImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04LCIrZW5jb2RlVVJJQ29tcG9uZW50KGMpfXpvb20odCl7aWYobnVsbD09dGhpcy5zY2FsZU1pbmltYXApcmV0dXJuO3QmJih0aGlzLnRyYW5zbGF0ZT1bdC54LHQueV0sdGhpcy5zY2FsZU1haW49dC5rKTtsZXQgZT10aGlzLnN2Zy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxuPUR1KHRoaXMudmlld3BvaW50KTt0aGlzLnZpZXdwb2ludENvb3JkLng9LXRoaXMudHJhbnNsYXRlWzBdKnRoaXMuc2NhbGVNaW5pbWFwL3RoaXMuc2NhbGVNYWluLHRoaXMudmlld3BvaW50Q29vcmQueT0tdGhpcy50cmFuc2xhdGVbMV0qdGhpcy5zY2FsZU1pbmltYXAvdGhpcy5zY2FsZU1haW47bGV0IGk9ZS53aWR0aCp0aGlzLnNjYWxlTWluaW1hcC90aGlzLnNjYWxlTWFpbixyPWUuaGVpZ2h0KnRoaXMuc2NhbGVNaW5pbWFwL3RoaXMuc2NhbGVNYWluO24uYXR0cigieCIsdGhpcy52aWV3cG9pbnRDb29yZC54KS5hdHRyKCJ5Iix0aGlzLnZpZXdwb2ludENvb3JkLnkpLmF0dHIoIndpZHRoIixpKS5hdHRyKCJoZWlnaHQiLHIpO2xldCBvPXRoaXMubWluaW1hcFNpemUud2lkdGgsYT10aGlzLm1pbmltYXBTaXplLmhlaWdodCxzPXRoaXMudmlld3BvaW50Q29vcmQueCxsPXRoaXMudmlld3BvaW50Q29vcmQueTsoTWF0aC5taW4oTWF0aC5tYXgoMCxzK2kpLG8pLU1hdGgubWluKE1hdGgubWF4KDAscyksbykpKihNYXRoLm1pbihNYXRoLm1heCgwLGwrciksYSktTWF0aC5taW4oTWF0aC5tYXgoMCxsKSxhKSkvKG8qYSk8Ljg/dGhpcy5taW5pbWFwLmNsYXNzTGlzdC5yZW1vdmUoImhpZGRlbiIpOnRoaXMubWluaW1hcC5jbGFzc0xpc3QuYWRkKCJoaWRkZW4iKX19bGV0IEZadD1jbGFzcyBleHRlbmRzIHdle2luaXQodCxlLG4saSxyKXtyZXR1cm4gbmV3IEhadCh0LGUsbix0aGlzLGkscil9fTtGWnQudGVtcGxhdGU9eGVgCiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3MgbGluZWFyOwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvOwogICAgICB9CgogICAgICA6aG9zdCguaGlkZGVuKSB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgfQoKICAgICAgY2FudmFzIHsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjOTk5OwogICAgICB9CgogICAgICByZWN0IHsKICAgICAgICBmaWxsOiB3aGl0ZTsKICAgICAgICBzdHJva2U6ICMxMTExMTE7CiAgICAgICAgc3Ryb2tlLXdpZHRoOiAxcHg7CiAgICAgICAgZmlsbC1vcGFjaXR5OiAwOwogICAgICAgIGZpbHRlcjogdXJsKCNtaW5pbWFwRHJvcFNoYWRvdyk7CiAgICAgICAgY3Vyc29yOiBtb3ZlOwogICAgICB9CgogICAgICBzdmcgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgfQogICAgPC9zdHlsZT4KICAgIDxzdmc+CiAgICAgIDxkZWZzPgogICAgICAgIDxmaWx0ZXIKICAgICAgICAgIGlkPSJtaW5pbWFwRHJvcFNoYWRvdyIKICAgICAgICAgIHg9Ii0yMCUiCiAgICAgICAgICB5PSItMjAlIgogICAgICAgICAgd2lkdGg9IjE1MCUiCiAgICAgICAgICBoZWlnaHQ9IjE1MCUiCiAgICAgICAgPgogICAgICAgICAgPGZlT2Zmc2V0IHJlc3VsdD0ib2ZmT3V0IiBpbj0iU291cmNlR3JhcGhpYyIgZHg9IjEiIGR5PSIxIj48L2ZlT2Zmc2V0PgogICAgICAgICAgPGZlQ29sb3JNYXRyaXgKICAgICAgICAgICAgcmVzdWx0PSJtYXRyaXhPdXQiCiAgICAgICAgICAgIGluPSJvZmZPdXQiCiAgICAgICAgICAgIHR5cGU9Im1hdHJpeCIKICAgICAgICAgICAgdmFsdWVzPSIwLjEgMCAwIDAgMCAwIDAuMSAwIDAgMCAwIDAgMC4xIDAgMCAwIDAgMCAwLjUgMCIKICAgICAgICAgID48L2ZlQ29sb3JNYXRyaXg+CiAgICAgICAgICA8ZmVHYXVzc2lhbkJsdXIKICAgICAgICAgICAgcmVzdWx0PSJibHVyT3V0IgogICAgICAgICAgICBpbj0ibWF0cml4T3V0IgogICAgICAgICAgICBzdGREZXZpYXRpb249IjIiCiAgICAgICAgICA+PC9mZUdhdXNzaWFuQmx1cj4KICAgICAgICAgIDxmZUJsZW5kIGluPSJTb3VyY2VHcmFwaGljIiBpbjI9ImJsdXJPdXQiIG1vZGU9Im5vcm1hbCI+PC9mZUJsZW5kPgogICAgICAgIDwvZmlsdGVyPgogICAgICA8L2RlZnM+CiAgICAgIDxyZWN0PjwvcmVjdD4KICAgIDwvc3ZnPgogICAgPGNhbnZhcyBjbGFzcz0iZmlyc3QiPjwvY2FudmFzPgogICAgPCEtLSBBZGRpdGlvbmFsIGNhbnZhcyB0byB1c2UgYXMgYnVmZmVyIHRvIGF2b2lkIGZsaWNrZXJpbmcgYmV0d2VlbiB1cGRhdGVzIC0tPgogICAgPGNhbnZhcyBjbGFzcz0ic2Vjb25kIj48L2NhbnZhcz4KICAgIDxjYW52YXMgY2xhc3M9ImRvd25sb2FkIj48L2NhbnZhcz4KICBgLEZadD10KFtpKCJ0Zi1ncmFwaC1taW5pbWFwIildLEZadCk7Y29uc3QgVlp0PXhlYAogIDxzdHlsZT4KICAgIDpob3N0KC5kYXJrLW1vZGUpIHsKICAgICAgZmlsdGVyOiBpbnZlcnQoMSk7CiAgICB9CgogICAgOmhvc3QgewogICAgICBkaXNwbGF5OiBmbGV4OwogICAgICBmb250LXNpemU6IDIwcHg7CiAgICAgIGhlaWdodDogMTAwJTsKICAgICAgd2lkdGg6IDEwMCU7CiAgICB9CgogICAgI3N2ZyB7CiAgICAgIGZsZXg6IDE7CiAgICAgIGZvbnQtZmFtaWx5OiBSb2JvdG8sIHNhbnMtc2VyaWY7CiAgICAgIGhlaWdodDogMTAwJTsKICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgd2lkdGg6IDEwMCU7CiAgICB9CgogICAgI2hpZGRlbiB7CiAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgdG9wOiAwcHg7CiAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKICAgIH0KCiAgICB0ZXh0IHsKICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgICB9CgogICAgLyogLS0tIE5vZGUgYW5kIGFubm90YXRpb24tbm9kZSBmb3IgTWV0YW5vZGUgLS0tICovCgogICAgLm1ldGEgPiAubm9kZXNoYXBlID4gcmVjdCwKICAgIC5tZXRhID4gLmFubm90YXRpb24tbm9kZSA+IHJlY3QgewogICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgIGZpbGw6IGhzbCgwLCAwJSwgNzAlKTsKICAgIH0KICAgIC5ub2RlLm1ldGEuaGlnaGxpZ2h0ZWQgPiAubm9kZXNoYXBlID4gcmVjdCwKICAgIC5ub2RlLm1ldGEuaGlnaGxpZ2h0ZWQgPiAuYW5ub3RhdGlvbi1ub2RlID4gcmVjdCB7CiAgICAgIHN0cm9rZS13aWR0aDogMjsKICAgIH0KICAgIC5hbm5vdGF0aW9uLm1ldGEuaGlnaGxpZ2h0ZWQgPiAubm9kZXNoYXBlID4gcmVjdCwKICAgIC5hbm5vdGF0aW9uLm1ldGEuaGlnaGxpZ2h0ZWQgPiAuYW5ub3RhdGlvbi1ub2RlID4gcmVjdCB7CiAgICAgIHN0cm9rZS13aWR0aDogMTsKICAgIH0KICAgIC5tZXRhLnNlbGVjdGVkID4gLm5vZGVzaGFwZSA+IHJlY3QsCiAgICAubWV0YS5zZWxlY3RlZCA+IC5hbm5vdGF0aW9uLW5vZGUgPiByZWN0IHsKICAgICAgc3Ryb2tlOiByZWQ7CiAgICAgIHN0cm9rZS13aWR0aDogMjsKICAgIH0KICAgIC5ub2RlLm1ldGEuc2VsZWN0ZWQuZXhwYW5kZWQgPiAubm9kZXNoYXBlID4gcmVjdCwKICAgIC5ub2RlLm1ldGEuc2VsZWN0ZWQuZXhwYW5kZWQgPiAuYW5ub3RhdGlvbi1ub2RlID4gcmVjdCB7CiAgICAgIHN0cm9rZTogcmVkOwogICAgICBzdHJva2Utd2lkdGg6IDM7CiAgICB9CiAgICAuYW5ub3RhdGlvbi5tZXRhLnNlbGVjdGVkID4gLm5vZGVzaGFwZSA+IHJlY3QsCiAgICAuYW5ub3RhdGlvbi5tZXRhLnNlbGVjdGVkID4gLmFubm90YXRpb24tbm9kZSA+IHJlY3QgewogICAgICBzdHJva2U6IHJlZDsKICAgICAgc3Ryb2tlLXdpZHRoOiAyOwogICAgfQogICAgLm5vZGUubWV0YS5zZWxlY3RlZC5leHBhbmRlZC5oaWdobGlnaHRlZCA+IC5ub2Rlc2hhcGUgPiByZWN0LAogICAgLm5vZGUubWV0YS5zZWxlY3RlZC5leHBhbmRlZC5oaWdobGlnaHRlZCA+IC5hbm5vdGF0aW9uLW5vZGUgPiByZWN0IHsKICAgICAgc3Ryb2tlOiByZWQ7CiAgICAgIHN0cm9rZS13aWR0aDogNDsKICAgIH0KCiAgICAuZmFkZWQsCiAgICAuZmFkZWQgcmVjdCwKICAgIC5mYWRlZCBlbGxpcHNlLAogICAgLmZhZGVkIHBhdGgsCiAgICAuZmFkZWQgdXNlLAogICAgI3JlY3RIYXRjaCBsaW5lLAogICAgI2VsbGlwc2VIYXRjaCBsaW5lIHsKICAgICAgY29sb3I6ICNlMGQ0YjMgIWltcG9ydGFudDsKICAgICAgZmlsbDogd2hpdGU7CiAgICAgIHN0cm9rZTogI2UwZDRiMyAhaW1wb3J0YW50OwogICAgfQoKICAgIC5mYWRlZCBwYXRoIHsKICAgICAgc3Ryb2tlLXdpZHRoOiAxcHggIWltcG9ydGFudDsKICAgIH0KCiAgICAuZmFkZWQgcmVjdCB7CiAgICAgIGZpbGw6IHVybCgjcmVjdEhhdGNoKSAhaW1wb3J0YW50OwogICAgfQoKICAgIC5mYWRlZCBlbGxpcHNlLAogICAgLmZhZGVkIHVzZSB7CiAgICAgIGZpbGw6IHVybCgjZWxsaXBzZUhhdGNoKSAhaW1wb3J0YW50OwogICAgfQoKICAgIC5mYWRlZCB0ZXh0IHsKICAgICAgb3BhY2l0eTogMDsKICAgIH0KCiAgICAvKiBSdWxlcyB1c2VkIGZvciBpbnB1dC10cmFjaW5nLiAqLwogICAgLmlucHV0LWhpZ2hsaWdodCA+ICogPiByZWN0LAogICAgLmlucHV0LWhpZ2hsaWdodCA+ICogPiBlbGxpcHNlLAogICAgLmlucHV0LWhpZ2hsaWdodCA+ICogPiB1c2UgewogICAgICBmaWxsOiB3aGl0ZTsKICAgICAgc3Ryb2tlOiAjZmY5ODAwICFpbXBvcnRhbnQ7CiAgICB9CgogICAgLyogIC0gRmFkZWQgbm9uLWlucHV0IHN0eWxpbmcgKi8KICAgIC5ub24taW5wdXQgPiAqID4gcmVjdCwKLm5vbi1pbnB1dCA+ICogPiBlbGxpcHNlLAoubm9uLWlucHV0ID4gKiA+IHVzZSwKLyogRm9yIENvbnN0IG5vZGVzLiAqLwoubm9uLWlucHV0ID4gKiA+IC5jb25zdGFudDpub3QoW2NsYXNzKj0iaW5wdXQtaGlnaGxpZ2h0Il0pID4KICAuYW5ub3RhdGlvbi1ub2RlID4gZWxsaXBzZSwKLyogRm9yIHN0eWxpbmcgb2YgYW5ub3RhdGlvbiBub2RlcyBvZiBub24taW5wdXQgbm9kZXMuICovCi5ub24taW5wdXQgPiBnID4gLmFubm90YXRpb24gPiAuYW5ub3RhdGlvbi1ub2RlID4gcmVjdCB7CiAgICAgIHN0cm9rZTogI2UwZDRiMyAhaW1wb3J0YW50OwogICAgICBzdHJva2Utd2lkdGg6IGluaGVyaXQ7CiAgICAgIHN0cm9rZS1kYXNoYXJyYXk6IGluaGVyaXQ7CiAgICB9CgogICAgLm5vbi1pbnB1dCBwYXRoIHsKICAgICAgdmlzaWJpbGl0eTogaGlkZGVuOwogICAgfQoKICAgIC5ub24taW5wdXQgPiAubm9kZXNoYXBlID4gcmVjdCwKLm5vbi1pbnB1dCA+IC5hbm5vdGF0aW9uLW5vZGUgPiByZWN0LAovKiBGb3Igc3R5bGluZyBvZiBhbm5vdGF0aW9uIG5vZGVzIG9mIG5vbi1pbnB1dCBub2Rlcy4gKi8KLm5vbi1pbnB1dCA+IGcgPiAuYW5ub3RhdGlvbiA+IC5hbm5vdGF0aW9uLW5vZGUgPiByZWN0IHsKICAgICAgZmlsbDogdXJsKCNyZWN0SGF0Y2gpICFpbXBvcnRhbnQ7CiAgICB9CgogICAgLm5vbi1pbnB1dCBlbGxpcHNlLAogICAgLm5vbi1pbnB1dCB1c2UgewogICAgICBmaWxsOiB1cmwoI2VsbGlwc2VIYXRjaCkgIWltcG9ydGFudDsKICAgIH0KCiAgICAubm9uLWlucHV0ID4gdGV4dCB7CiAgICAgIG9wYWNpdHk6IDA7CiAgICB9CgogICAgLm5vbi1pbnB1dCAuYW5ub3RhdGlvbiA+IC5hbm5vdGF0aW9uLWVkZ2UgewogICAgICBtYXJrZXItZW5kOiB1cmwoI2Fubm90YXRpb24tYXJyb3doZWFkLWZhZGVkKTsKICAgIH0KCiAgICAubm9uLWlucHV0IC5hbm5vdGF0aW9uID4gLmFubm90YXRpb24tZWRnZS5yZWZsaW5lIHsKICAgICAgbWFya2VyLXN0YXJ0OiB1cmwoI3JlZi1hbm5vdGF0aW9uLWFycm93aGVhZC1mYWRlZCk7CiAgICB9CgogICAgLyogSW5wdXQgZWRnZXMuICovCiAgICAuaW5wdXQtZWRnZS1oaWdobGlnaHQgPiB0ZXh0IHsKICAgICAgZmlsbDogYmxhY2sgIWltcG9ydGFudDsKICAgIH0KICAgIC5pbnB1dC1oaWdobGlnaHQgPiAuaW4tYW5ub3RhdGlvbnMgPiAuYW5ub3RhdGlvbiA+IC5hbm5vdGF0aW9uLWVkZ2UsCiAgICAuaW5wdXQtaGlnaGxpZ2h0LXNlbGVjdGVkCiAgICAgID4gLmluLWFubm90YXRpb25zCiAgICAgID4gLmFubm90YXRpb24KICAgICAgPiAuYW5ub3RhdGlvbi1lZGdlIHsKICAgICAgc3Ryb2tlOiAjOTk5ICFpbXBvcnRhbnQ7CiAgICB9CgogICAgLyogTm9uLWlucHV0IGVkZ2VzLiAqLwogICAgLm5vbi1pbnB1dC1lZGdlLWhpZ2hsaWdodCwKLm5vbi1pbnB1dCA+IGcgPiAuYW5ub3RhdGlvbiA+IHBhdGgsCi8qIEFubm90YXRpb24gc3R5bGVzIChsYWJlbCBhbmQgZWRnZXMgcmVzcGVjdGl2ZWx5KS4gKi8KLm5vbi1pbnB1dCA+IGcgPgouYW5ub3RhdGlvbjpub3QoLmlucHV0LWhpZ2hsaWdodCk6bm90KC5pbnB1dC1oaWdobGlnaHQtc2VsZWN0ZWQpID4KLmFubm90YXRpb24tbGFiZWwKLyouYW5ub3RhdGlvbi1lZGdlKi8gewogICAgICB2aXNpYmlsaXR5OiBoaWRkZW47CiAgICB9CgogICAgLyogLS0tIE9wIE5vZGUgLS0tICovCgogICAgLm9wID4gLm5vZGVzaGFwZSA+IC5ub2RlY29sb3J0YXJnZXQsCiAgICAub3AgPiAuYW5ub3RhdGlvbi1ub2RlID4gLm5vZGVjb2xvcnRhcmdldCB7CiAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgZmlsbDogI2ZmZjsKICAgICAgc3Ryb2tlOiAjY2NjOwogICAgfQoKICAgIC5vcC5zZWxlY3RlZCA+IC5ub2Rlc2hhcGUgPiAubm9kZWNvbG9ydGFyZ2V0LAogICAgLm9wLnNlbGVjdGVkID4gLmFubm90YXRpb24tbm9kZSA+IC5ub2RlY29sb3J0YXJnZXQgewogICAgICBzdHJva2U6IHJlZDsKICAgICAgc3Ryb2tlLXdpZHRoOiAyOwogICAgfQoKICAgIC5vcC5oaWdobGlnaHRlZCA+IC5ub2Rlc2hhcGUgPiAubm9kZWNvbG9ydGFyZ2V0LAogICAgLm9wLmhpZ2hsaWdodGVkID4gLmFubm90YXRpb24tbm9kZSA+IC5ub2RlY29sb3J0YXJnZXQgewogICAgICBzdHJva2Utd2lkdGg6IDI7CiAgICB9CgogICAgLyogLS0tIFNlcmllcyBOb2RlIC0tLSAqLwoKICAgIC8qIEJ5IGRlZmF1bHQsIGRvbid0IHNob3cgdGhlIHNlcmllcyBiYWNrZ3JvdW5kIDxyZWN0Pi4gKi8KICAgIC5zZXJpZXMgPiAubm9kZXNoYXBlID4gcmVjdCB7CiAgICAgIGZpbGw6IGhzbCgwLCAwJSwgNzAlKTsKICAgICAgZmlsbC1vcGFjaXR5OiAwOwogICAgICBzdHJva2UtZGFzaGFycmF5OiA1LCA1OwogICAgICBzdHJva2Utb3BhY2l0eTogMDsKICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgfQoKICAgIC8qIE9uY2UgZXhwYW5kZWQsIHNob3cgdGhlIHNlcmllcyBiYWNrZ3JvdW5kIDxyZWN0PiBhbmQgaGlkZSB0aGUgPHVzZT4uICovCiAgICAuc2VyaWVzLmV4cGFuZGVkID4gLm5vZGVzaGFwZSA+IHJlY3QgewogICAgICBmaWxsLW9wYWNpdHk6IDAuMTU7CiAgICAgIHN0cm9rZTogaHNsKDAsIDAlLCA3MCUpOwogICAgICBzdHJva2Utb3BhY2l0eTogMTsKICAgIH0KICAgIC5zZXJpZXMuZXhwYW5kZWQgPiAubm9kZXNoYXBlID4gdXNlIHsKICAgICAgdmlzaWJpbGl0eTogaGlkZGVuOwogICAgfQoKICAgIC8qKgogKiBUT0RPOiBTaW1wbGlmeSB0aGlzIGJ5IGFwcGx5aW5nIGEgc3RhYmxlIGNsYXNzIG5hbWUgdG8gYWxsIDxnPgogKiBlbGVtZW50cyB0aGF0IGN1cnJlbnRseSBoYXZlIGVpdGhlciB0aGUgbm9kZXNoYXBlIG9yIGFubm90YXRpb24tbm9kZSBjbGFzc2VzLgogKi8KICAgIC5zZXJpZXMgPiAubm9kZXNoYXBlID4gdXNlLAogICAgLnNlcmllcyA+IC5hbm5vdGF0aW9uLW5vZGUgPiB1c2UgewogICAgICBzdHJva2U6ICNjY2M7CiAgICB9CiAgICAuc2VyaWVzLmhpZ2hsaWdodGVkID4gLm5vZGVzaGFwZSA+IHVzZSwKICAgIC5zZXJpZXMuaGlnaGxpZ2h0ZWQgPiAuYW5ub3RhdGlvbi1ub2RlID4gdXNlIHsKICAgICAgc3Ryb2tlLXdpZHRoOiAyOwogICAgfQogICAgLnNlcmllcy5zZWxlY3RlZCA+IC5ub2Rlc2hhcGUgPiB1c2UsCiAgICAuc2VyaWVzLnNlbGVjdGVkID4gLmFubm90YXRpb24tbm9kZSA+IHVzZSB7CiAgICAgIHN0cm9rZTogcmVkOwogICAgICBzdHJva2Utd2lkdGg6IDI7CiAgICB9CgogICAgLnNlcmllcy5zZWxlY3RlZCA+IC5ub2Rlc2hhcGUgPiByZWN0IHsKICAgICAgc3Ryb2tlOiByZWQ7CiAgICAgIHN0cm9rZS13aWR0aDogMjsKICAgIH0KCiAgICAuYW5ub3RhdGlvbi5zZXJpZXMuc2VsZWN0ZWQgPiAuYW5ub3RhdGlvbi1ub2RlID4gdXNlIHsKICAgICAgc3Ryb2tlOiByZWQ7CiAgICAgIHN0cm9rZS13aWR0aDogMjsKICAgIH0KCiAgICAvKiAtLS0gQnJpZGdlIE5vZGUgLS0tICovCiAgICAuYnJpZGdlID4gLm5vZGVzaGFwZSA+IHJlY3QgewogICAgICBzdHJva2U6ICNmMGY7CiAgICAgIG9wYWNpdHk6IDAuMjsKICAgICAgZGlzcGxheTogbm9uZTsKICAgIH0KCiAgICAvKiAtLS0gU3RydWN0dXJhbCBFbGVtZW50cyAtLS0gKi8KICAgIC5lZGdlID4gcGF0aC5lZGdlbGluZS5zdHJ1Y3R1cmFsIHsKICAgICAgc3Ryb2tlOiAjZjBmOwogICAgICBvcGFjaXR5OiAwLjI7CiAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICB9CgogICAgLyogUmVmZXJlbmNlIEVkZ2UgKi8KICAgIC5lZGdlID4gcGF0aC5lZGdlbGluZS5yZWZlcmVuY2VlZGdlIHsKICAgICAgc3Ryb2tlOiAjZmZiNzRkOwogICAgICBvcGFjaXR5OiAxOwogICAgfQoKICAgIC8qIC0tLSBTZXJpZXMgTm9kZXMgLS0tICovCgogICAgLyogSGlkZSB0aGUgcmVjdCBmb3IgYSBzZXJpZXMnIGFubm90YXRpb24uICovCiAgICAuc2VyaWVzID4gLmFubm90YXRpb24tbm9kZSA+IHJlY3QgewogICAgICBkaXNwbGF5OiBub25lOwogICAgfQoKICAgIC8qIC0tLSBOb2RlIGxhYmVsIC0tLSAqLwoKICAgIC5ub2RlIHsKICAgICAgLyogUHJvdmlkZSBhIGhpbnQgdG8gYnJvd3NlcnMgdG8gYXZvaWQgdXNpbmcgdGhlaXIgc3RhdGljIHJhc3Rlcml6YXRpb24KICAgICAgYXQgaW5pdGlhbCBzY2FsZSwgd2hpY2ggbG9va3MgdmVyeSBwaXhlbGF0ZWQgb24gQ2hyb21pdW0gd2hlbiB6b29tZWQgaW4uCiAgICAgIE5vdGUgdGhhdCB3ZSBpbnRlbnRpb25hbGx5IGRvICpub3QqIHVzZSAnd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybScgYW5kCiAgICAgICd0cmFuc2xhdGVaKDApIGhlcmUsIHdoaWNoIGludHJvZHVjZSBibHVycmluZXNzIG9uIEZpcmVmb3guCiAgICAgIFNlZSBodHRwczovL2dpdGh1Yi5jb20vdGVuc29yZmxvdy90ZW5zb3Jib2FyZC9pc3N1ZXMvNDc0NCAqLwogICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooMXB4KTsKICAgIH0KCiAgICAubm9kZSA+IHRleHQubm9kZWxhYmVsIHsKICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICBmaWxsOiAjNDQ0OwogICAgfQoKICAgIC5tZXRhLmV4cGFuZGVkID4gdGV4dC5ub2RlbGFiZWwgewogICAgICBmb250LXNpemU6IDlweDsKICAgIH0KCiAgICAuc2VyaWVzID4gdGV4dC5ub2RlbGFiZWwgewogICAgICBmb250LXNpemU6IDhweDsKICAgIH0KCiAgICAub3AgPiB0ZXh0Lm5vZGVsYWJlbCB7CiAgICAgIGZvbnQtc2l6ZTogNnB4OwogICAgfQoKICAgIC5icmlkZ2UgPiB0ZXh0Lm5vZGVsYWJlbCB7CiAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICB9CgogICAgLm5vZGUubWV0YS5leHBhbmRlZCA+IHRleHQubm9kZWxhYmVsIHsKICAgICAgY3Vyc29yOiBub3JtYWw7CiAgICB9CgogICAgLmFubm90YXRpb24ubWV0YS5oaWdobGlnaHRlZCA+IHRleHQuYW5ub3RhdGlvbi1sYWJlbCB7CiAgICAgIGZpbGw6ICM1MGEzZjc7CiAgICB9CgogICAgLmFubm90YXRpb24ubWV0YS5zZWxlY3RlZCA+IHRleHQuYW5ub3RhdGlvbi1sYWJlbCB7CiAgICAgIGZpbGw6ICM0Mjg1ZjQ7CiAgICB9CgogICAgLyogLS0tIEFubm90YXRpb24gLS0tICovCgogICAgLyogb25seSBhcHBsaWVkIGZvciBhbm5vdGF0aW9ucyB0aGF0IGFyZSBub3Qgc3VtbWFyeSBvciBjb25zdGFudC4KKC5zdW1tYXJ5LCAuY29uc3RhbnQgZ2V0cyBvdmVycmlkZGVuIGJlbG93KSAqLwogICAgLmFubm90YXRpb24gPiAuYW5ub3RhdGlvbi1ub2RlID4gKiB7CiAgICAgIHN0cm9rZS13aWR0aDogMC41OwogICAgICBzdHJva2UtZGFzaGFycmF5OiAxLCAxOwogICAgfQoKICAgIC5hbm5vdGF0aW9uLnN1bW1hcnkgPiAuYW5ub3RhdGlvbi1ub2RlID4gKiwKICAgIC5hbm5vdGF0aW9uLmNvbnN0YW50ID4gLmFubm90YXRpb24tbm9kZSA+ICogewogICAgICBzdHJva2Utd2lkdGg6IDE7CiAgICAgIHN0cm9rZS1kYXNoYXJyYXk6IG5vbmU7CiAgICB9CgogICAgLmFubm90YXRpb24gPiAuYW5ub3RhdGlvbi1lZGdlIHsKICAgICAgZmlsbDogbm9uZTsKICAgICAgc3Ryb2tlOiAjYWFhOwogICAgICBzdHJva2Utd2lkdGg6IDAuNTsKICAgICAgbWFya2VyLWVuZDogdXJsKCNhbm5vdGF0aW9uLWFycm93aGVhZCk7CiAgICB9CgogICAgLmZhZGVkIC5hbm5vdGF0aW9uID4gLmFubm90YXRpb24tZWRnZSB7CiAgICAgIG1hcmtlci1lbmQ6IHVybCgjYW5ub3RhdGlvbi1hcnJvd2hlYWQtZmFkZWQpOwogICAgfQoKICAgIC5hbm5vdGF0aW9uID4gLmFubm90YXRpb24tZWRnZS5yZWZsaW5lIHsKICAgICAgbWFya2VyLXN0YXJ0OiB1cmwoI3JlZi1hbm5vdGF0aW9uLWFycm93aGVhZCk7CiAgICB9CgogICAgLmZhZGVkIC5hbm5vdGF0aW9uID4gLmFubm90YXRpb24tZWRnZS5yZWZsaW5lIHsKICAgICAgbWFya2VyLXN0YXJ0OiB1cmwoI3JlZi1hbm5vdGF0aW9uLWFycm93aGVhZC1mYWRlZCk7CiAgICB9CgogICAgLmFubm90YXRpb24gPiAuYW5ub3RhdGlvbi1jb250cm9sLWVkZ2UgewogICAgICBzdHJva2UtZGFzaGFycmF5OiAxLCAxOwogICAgfQoKICAgICNhbm5vdGF0aW9uLWFycm93aGVhZCB7CiAgICAgIGZpbGw6ICNhYWE7CiAgICB9CgogICAgI2Fubm90YXRpb24tYXJyb3doZWFkLWZhZGVkIHsKICAgICAgZmlsbDogI2UwZDRiMzsKICAgIH0KCiAgICAjcmVmLWFubm90YXRpb24tYXJyb3doZWFkIHsKICAgICAgZmlsbDogI2FhYTsKICAgIH0KCiAgICAjcmVmLWFubm90YXRpb24tYXJyb3doZWFkLWZhZGVkIHsKICAgICAgZmlsbDogI2UwZDRiMzsKICAgIH0KCiAgICAuYW5ub3RhdGlvbiA+IC5hbm5vdGF0aW9uLWxhYmVsIHsKICAgICAgZm9udC1zaXplOiA1cHg7CiAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIH0KICAgIC5hbm5vdGF0aW9uID4gLmFubm90YXRpb24tbGFiZWwuYW5ub3RhdGlvbi1lbGxpcHNpcyB7CiAgICAgIGN1cnNvcjogZGVmYXVsdDsKICAgIH0KCiAgICAvKiBIaWRlIGFubm90YXRpb25zIG9uIGV4cGFuZGVkIG1ldGEgbm9kZXMgc2luY2UgdGhleSdyZSByZWR1bmRhbnQuICovCiAgICAuZXhwYW5kZWQgPiAuaW4tYW5ub3RhdGlvbnMsCiAgICAuZXhwYW5kZWQgPiAub3V0LWFubm90YXRpb25zIHsKICAgICAgZGlzcGxheTogbm9uZTsKICAgIH0KCiAgICAvKiAtLS0gQW5ub3RhdGlvbjogQ29uc3RhbnQgLS0tICovCgogICAgLmNvbnN0YW50ID4gLmFubm90YXRpb24tbm9kZSA+IGVsbGlwc2UgewogICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgIGZpbGw6IHdoaXRlOwogICAgICBzdHJva2U6ICM4NDg0ODQ7CiAgICB9CgogICAgLmNvbnN0YW50LnNlbGVjdGVkID4gLmFubm90YXRpb24tbm9kZSA+IGVsbGlwc2UgewogICAgICBmaWxsOiB3aGl0ZTsKICAgICAgc3Ryb2tlOiByZWQ7CiAgICB9CgogICAgLmNvbnN0YW50LmhpZ2hsaWdodGVkID4gLmFubm90YXRpb24tbm9kZSA+IGVsbGlwc2UgewogICAgICBzdHJva2Utd2lkdGg6IDEuNTsKICAgIH0KCiAgICAvKiAtLS0gQW5ub3RhdGlvbjogU3VtbWFyeSAtLS0gKi8KCiAgICAuc3VtbWFyeSA+IC5hbm5vdGF0aW9uLW5vZGUgPiBlbGxpcHNlIHsKICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICBmaWxsOiAjZGI0NDM3OwogICAgICBzdHJva2U6ICNkYjQ0Mzc7CiAgICB9CgogICAgLnN1bW1hcnkuc2VsZWN0ZWQgPiAuYW5ub3RhdGlvbi1ub2RlID4gZWxsaXBzZSB7CiAgICAgIGZpbGw6ICNhNTI3MTQ7CiAgICAgIHN0cm9rZTogI2E1MjcxNDsKICAgIH0KCiAgICAuc3VtbWFyeS5oaWdobGlnaHRlZCA+IC5hbm5vdGF0aW9uLW5vZGUgPiBlbGxpcHNlIHsKICAgICAgc3Ryb2tlLXdpZHRoOiAxLjU7CiAgICB9CgogICAgLyogLS0tIEVkZ2UgLS0tICovCgogICAgLmVkZ2UgPiBwYXRoLmVkZ2VsaW5lIHsKICAgICAgZmlsbDogbm9uZTsKICAgICAgc3Ryb2tlOiAjYmJiOwogICAgICBzdHJva2UtbGluZWNhcDogcm91bmQ7CiAgICAgIHN0cm9rZS13aWR0aDogMC43NTsKICAgIH0KCiAgICAuZWRnZSAuc2VsZWN0YWJsZWVkZ2UgewogICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICB9CgogICAgLnNlbGVjdGVkZWRnZSA+IHBhdGguZWRnZWxpbmUgewogICAgICBjdXJzb3I6IGRlZmF1bHQ7CiAgICAgIHN0cm9rZTogI2YwMDsKICAgIH0KCiAgICAuZWRnZS5zZWxlY3RlZGVkZ2UgdGV4dCB7CiAgICAgIGZpbGw6ICMwMDA7CiAgICB9CgogICAgLyogTGFiZWxzIHNob3dpbmcgdGVuc29yIHNoYXBlcyBvbiBlZGdlcyAqLwogICAgLmVkZ2UgPiB0ZXh0IHsKICAgICAgZm9udC1zaXplOiAzLjVweDsKICAgICAgZmlsbDogIzY2NjsKICAgIH0KCiAgICAuZGF0YWZsb3ctYXJyb3doZWFkIHsKICAgICAgZmlsbDogI2JiYjsKICAgIH0KCiAgICAucmVmZXJlbmNlLWFycm93aGVhZCB7CiAgICAgIGZpbGw6ICNmZmI3NGQ7CiAgICB9CgogICAgLnNlbGVjdGVkLWFycm93aGVhZCB7CiAgICAgIGZpbGw6ICNmMDA7CiAgICB9CgogICAgLmVkZ2UgLmNvbnRyb2wtZGVwIHsKICAgICAgc3Ryb2tlLWRhc2hhcnJheTogMiwgMjsKICAgIH0KCiAgICAvKiAtLS0gR3JvdXAgbm9kZSBleHBhbmQvY29sbGFwc2UgYnV0dG9uIC0tLSAqLwoKICAgIC8qIEhpZGVzIGV4cGFuZC9jb2xsYXBzZSBidXR0b25zIHdoZW4gYSBub2RlIGlzbid0IGV4cGFuZGVkIG9yIGhpZ2hsaWdodGVkLiBVc2luZwogICBpbmNyZWRpYmx5IHNtYWxsIG9wYWNpdHkgc28gdGhhdCB0aGUgYm91bmRpbmcgYm94IG9mIHRoZSA8Zz4gcGFyZW50IHN0aWxsIHRha2VzCiAgIHRoaXMgY29udGFpbmVyIGludG8gYWNjb3VudCBldmVuIHdoZW4gaXQgaXNuJ3QgdmlzaWJsZSAqLwogICAgLm5vZGU6bm90KC5oaWdobGlnaHRlZCk6bm90KC5leHBhbmRlZCkgPiAubm9kZXNoYXBlID4gLmJ1dHRvbmNvbnRhaW5lciB7CiAgICAgIG9wYWNpdHk6IDAuMDE7CiAgICB9CiAgICAubm9kZS5oaWdobGlnaHRlZCA+IC5ub2Rlc2hhcGUgPiAuYnV0dG9uY29udGFpbmVyIHsKICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgfQogICAgLmJ1dHRvbmNpcmNsZSB7CiAgICAgIGZpbGw6ICNlNzgxMWQ7CiAgICB9CiAgICAuYnV0dG9uY2lyY2xlOmhvdmVyIHsKICAgICAgZmlsbDogI2I5NjcxNzsKICAgIH0KICAgIC5leHBhbmRidXR0b24sCiAgICAuY29sbGFwc2VidXR0b24gewogICAgICBzdHJva2U6IHdoaXRlOwogICAgfQogICAgLyogRG8gbm90IGxldCB0aGUgcGF0aCBlbGVtZW50cyBpbiB0aGUgYnV0dG9uIHRha2UgcG9pbnRlciBmb2N1cyAqLwogICAgLm5vZGUgPiAubm9kZXNoYXBlID4gLmJ1dHRvbmNvbnRhaW5lciA+IC5leHBhbmRidXR0b24sCiAgICAubm9kZSA+IC5ub2Rlc2hhcGUgPiAuYnV0dG9uY29udGFpbmVyID4gLmNvbGxhcHNlYnV0dG9uIHsKICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICB9CiAgICAvKiBPbmx5IHNob3cgdGhlIGV4cGFuZCBidXR0b24gd2hlbiBhIG5vZGUgaXMgY29sbGFwc2VkIGFuZCBvbmx5IHNob3cgdGhlCiAgIGNvbGxhcHNlIGJ1dHRvbiB3aGVuIGEgbm9kZSBpcyBleHBhbmRlZC4gKi8KICAgIC5ub2RlLmV4cGFuZGVkID4gLm5vZGVzaGFwZSA+IC5idXR0b25jb250YWluZXIgPiAuZXhwYW5kYnV0dG9uIHsKICAgICAgZGlzcGxheTogbm9uZTsKICAgIH0KICAgIC5ub2RlOm5vdCguZXhwYW5kZWQpID4gLm5vZGVzaGFwZSA+IC5idXR0b25jb250YWluZXIgPiAuY29sbGFwc2VidXR0b24gewogICAgICBkaXNwbGF5OiBub25lOwogICAgfQoKICAgIC5oZWFsdGgtcGlsbC1zdGF0cyB7CiAgICAgIGZvbnQtc2l6ZTogNHB4OwogICAgICB0ZXh0LWFuY2hvcjogbWlkZGxlOwogICAgfQoKICAgIC5oZWFsdGgtcGlsbCByZWN0IHsKICAgICAgZmlsdGVyOiB1cmwoI2hlYWx0aC1waWxsLXNoYWRvdyk7CiAgICAgIHJ4OiAzOwogICAgICByeTogMzsKICAgIH0KCiAgICAudGl0bGVDb250YWluZXIgewogICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgIHRvcDogMjBweDsKICAgIH0KCiAgICAudGl0bGUsCiAgICAuYXV4VGl0bGUsCiAgICAuZnVuY3Rpb25MaWJyYXJ5VGl0bGUgewogICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB9CgogICAgI21pbmltYXAgewogICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgIHJpZ2h0OiAyMHB4OwogICAgICBib3R0b206IDIwcHg7CiAgICB9CgogICAgLmNvbnRleHQtbWVudSB7CiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2UyZTJlMjsKICAgICAgYm9yZGVyLXJhZGl1czogMnB4OwogICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgIG1pbi13aWR0aDogMTUwcHg7CiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNkNGQ0ZDQ7CiAgICB9CgogICAgLmNvbnRleHQtbWVudSB1bCB7CiAgICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTsKICAgICAgbWFyZ2luOiAwOwogICAgICBwYWRkaW5nOiAwOwogICAgICBjdXJzb3I6IGRlZmF1bHQ7CiAgICB9CgogICAgLmNvbnRleHQtbWVudSB1bCBsaSB7CiAgICAgIHBhZGRpbmc6IDRweCAxNnB4OwogICAgfQoKICAgIC5jb250ZXh0LW1lbnUgdWwgbGk6aG92ZXIgewogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjM5MTNlOwogICAgICBjb2xvcjogd2hpdGU7CiAgICB9CiAgPC9zdHlsZT4KICA8ZGl2IGNsYXNzPSJ0aXRsZUNvbnRhaW5lciI+CiAgICA8ZGl2IGlkPSJ0aXRsZSIgY2xhc3M9InRpdGxlIj5NYWluIEdyYXBoPC9kaXY+CiAgICA8ZGl2IGlkPSJhdXhUaXRsZSIgY2xhc3M9ImF1eFRpdGxlIj5BdXhpbGlhcnkgTm9kZXM8L2Rpdj4KICAgIDxkaXYgaWQ9ImZ1bmN0aW9uTGlicmFyeVRpdGxlIiBjbGFzcz0iZnVuY3Rpb25MaWJyYXJ5VGl0bGUiPkZ1bmN0aW9uczwvZGl2PgogIDwvZGl2PgogIDxzdmcgaWQ9InN2ZyI+CiAgICA8ZGVmcz4KICAgICAgPCEtLSBBcnJvdyBoZWFkcyBmb3IgcmVmZXJlbmNlIGVkZ2UgcGF0aHMgb2YgZGlmZmVyZW50IHByZWRlZmluZWQgc2l6ZXMgcGVyIGNvbG9yLiAtLT4KICAgICAgPHBhdGgKICAgICAgICBpZD0icmVmZXJlbmNlLWFycm93aGVhZC1wYXRoIgogICAgICAgIGQ9Ik0gMCwwIEwgMTAsNSBMIDAsMTAgQyAzLDcgMywzIDAsMCIKICAgICAgPjwvcGF0aD4KICAgICAgPG1hcmtlcgogICAgICAgIGNsYXNzPSJyZWZlcmVuY2UtYXJyb3doZWFkIgogICAgICAgIGlkPSJyZWZlcmVuY2UtYXJyb3doZWFkLXNtYWxsIgogICAgICAgIHZpZXdCb3g9IjAgMCAxMCAxMCIKICAgICAgICBtYXJrZXJXaWR0aD0iNSIKICAgICAgICBtYXJrZXJIZWlnaHQ9IjUiCiAgICAgICAgcmVmWD0iMiIKICAgICAgICByZWZZPSI1IgogICAgICAgIG9yaWVudD0iYXV0by1zdGFydC1yZXZlcnNlIgogICAgICAgIG1hcmtlclVuaXRzPSJ1c2VyU3BhY2VPblVzZSIKICAgICAgPgogICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI3JlZmVyZW5jZS1hcnJvd2hlYWQtcGF0aCI+PC91c2U+CiAgICAgIDwvbWFya2VyPgogICAgICA8bWFya2VyCiAgICAgICAgY2xhc3M9InJlZmVyZW5jZS1hcnJvd2hlYWQiCiAgICAgICAgaWQ9InJlZmVyZW5jZS1hcnJvd2hlYWQtbWVkaXVtIgogICAgICAgIHZpZXdCb3g9IjAgMCAxMCAxMCIKICAgICAgICBtYXJrZXJXaWR0aD0iMTMiCiAgICAgICAgbWFya2VySGVpZ2h0PSIxMyIKICAgICAgICByZWZYPSIyIgogICAgICAgIHJlZlk9IjUiCiAgICAgICAgb3JpZW50PSJhdXRvLXN0YXJ0LXJldmVyc2UiCiAgICAgICAgbWFya2VyVW5pdHM9InVzZXJTcGFjZU9uVXNlIgogICAgICA+CiAgICAgICAgPHVzZSB4bGluazpocmVmPSIjcmVmZXJlbmNlLWFycm93aGVhZC1wYXRoIj48L3VzZT4KICAgICAgPC9tYXJrZXI+CiAgICAgIDxtYXJrZXIKICAgICAgICBjbGFzcz0icmVmZXJlbmNlLWFycm93aGVhZCIKICAgICAgICBpZD0icmVmZXJlbmNlLWFycm93aGVhZC1sYXJnZSIKICAgICAgICB2aWV3Qm94PSIwIDAgMTAgMTAiCiAgICAgICAgbWFya2VyV2lkdGg9IjE2IgogICAgICAgIG1hcmtlckhlaWdodD0iMTYiCiAgICAgICAgcmVmWD0iMiIKICAgICAgICByZWZZPSI1IgogICAgICAgIG9yaWVudD0iYXV0by1zdGFydC1yZXZlcnNlIgogICAgICAgIG1hcmtlclVuaXRzPSJ1c2VyU3BhY2VPblVzZSIKICAgICAgPgogICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI3JlZmVyZW5jZS1hcnJvd2hlYWQtcGF0aCI+PC91c2U+CiAgICAgIDwvbWFya2VyPgogICAgICA8bWFya2VyCiAgICAgICAgY2xhc3M9InJlZmVyZW5jZS1hcnJvd2hlYWQiCiAgICAgICAgaWQ9InJlZmVyZW5jZS1hcnJvd2hlYWQteGxhcmdlIgogICAgICAgIHZpZXdCb3g9IjAgMCAxMCAxMCIKICAgICAgICBtYXJrZXJXaWR0aD0iMjAiCiAgICAgICAgbWFya2VySGVpZ2h0PSIyMCIKICAgICAgICByZWZYPSIyIgogICAgICAgIHJlZlk9IjUiCiAgICAgICAgb3JpZW50PSJhdXRvLXN0YXJ0LXJldmVyc2UiCiAgICAgICAgbWFya2VyVW5pdHM9InVzZXJTcGFjZU9uVXNlIgogICAgICA+CiAgICAgICAgPHVzZSB4bGluazpocmVmPSIjcmVmZXJlbmNlLWFycm93aGVhZC1wYXRoIj48L3VzZT4KICAgICAgPC9tYXJrZXI+CgogICAgICA8IS0tIEFycm93IGhlYWRzIGZvciBkYXRhZmxvdyBlZGdlIHBhdGhzIG9mIGRpZmZlcmVudCBwcmVkZWZpbmVkIHNpemVzIHBlciBjb2xvci4gLS0+CiAgICAgIDxwYXRoCiAgICAgICAgaWQ9ImRhdGFmbG93LWFycm93aGVhZC1wYXRoIgogICAgICAgIGQ9Ik0gMCwwIEwgMTAsNSBMIDAsMTAgQyAzLDcgMywzIDAsMCIKICAgICAgPjwvcGF0aD4KICAgICAgPG1hcmtlcgogICAgICAgIGNsYXNzPSJkYXRhZmxvdy1hcnJvd2hlYWQiCiAgICAgICAgaWQ9ImRhdGFmbG93LWFycm93aGVhZC1zbWFsbCIKICAgICAgICB2aWV3Qm94PSIwIDAgMTAgMTAiCiAgICAgICAgbWFya2VyV2lkdGg9IjUiCiAgICAgICAgbWFya2VySGVpZ2h0PSI1IgogICAgICAgIHJlZlg9IjIiCiAgICAgICAgcmVmWT0iNSIKICAgICAgICBvcmllbnQ9ImF1dG8tc3RhcnQtcmV2ZXJzZSIKICAgICAgICBtYXJrZXJVbml0cz0idXNlclNwYWNlT25Vc2UiCiAgICAgID4KICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNkYXRhZmxvdy1hcnJvd2hlYWQtcGF0aCI+PC91c2U+CiAgICAgIDwvbWFya2VyPgogICAgICA8bWFya2VyCiAgICAgICAgY2xhc3M9ImRhdGFmbG93LWFycm93aGVhZCIKICAgICAgICBpZD0iZGF0YWZsb3ctYXJyb3doZWFkLW1lZGl1bSIKICAgICAgICB2aWV3Qm94PSIwIDAgMTAgMTAiCiAgICAgICAgbWFya2VyV2lkdGg9IjEzIgogICAgICAgIG1hcmtlckhlaWdodD0iMTMiCiAgICAgICAgcmVmWD0iMiIKICAgICAgICByZWZZPSI1IgogICAgICAgIG9yaWVudD0iYXV0by1zdGFydC1yZXZlcnNlIgogICAgICAgIG1hcmtlclVuaXRzPSJ1c2VyU3BhY2VPblVzZSIKICAgICAgPgogICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI2RhdGFmbG93LWFycm93aGVhZC1wYXRoIj48L3VzZT4KICAgICAgPC9tYXJrZXI+CiAgICAgIDxtYXJrZXIKICAgICAgICBjbGFzcz0iZGF0YWZsb3ctYXJyb3doZWFkIgogICAgICAgIGlkPSJkYXRhZmxvdy1hcnJvd2hlYWQtbGFyZ2UiCiAgICAgICAgdmlld0JveD0iMCAwIDEwIDEwIgogICAgICAgIG1hcmtlcldpZHRoPSIxNiIKICAgICAgICBtYXJrZXJIZWlnaHQ9IjE2IgogICAgICAgIHJlZlg9IjIiCiAgICAgICAgcmVmWT0iNSIKICAgICAgICBvcmllbnQ9ImF1dG8tc3RhcnQtcmV2ZXJzZSIKICAgICAgICBtYXJrZXJVbml0cz0idXNlclNwYWNlT25Vc2UiCiAgICAgID4KICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNkYXRhZmxvdy1hcnJvd2hlYWQtcGF0aCI+PC91c2U+CiAgICAgIDwvbWFya2VyPgogICAgICA8bWFya2VyCiAgICAgICAgY2xhc3M9ImRhdGFmbG93LWFycm93aGVhZCIKICAgICAgICBpZD0iZGF0YWZsb3ctYXJyb3doZWFkLXhsYXJnZSIKICAgICAgICB2aWV3Qm94PSIwIDAgMTAgMTAiCiAgICAgICAgbWFya2VyV2lkdGg9IjIwIgogICAgICAgIG1hcmtlckhlaWdodD0iMjAiCiAgICAgICAgcmVmWD0iMiIKICAgICAgICByZWZZPSI1IgogICAgICAgIG9yaWVudD0iYXV0by1zdGFydC1yZXZlcnNlIgogICAgICAgIG1hcmtlclVuaXRzPSJ1c2VyU3BhY2VPblVzZSIKICAgICAgPgogICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI2RhdGFmbG93LWFycm93aGVhZC1wYXRoIj48L3VzZT4KICAgICAgPC9tYXJrZXI+CgogICAgICA8IS0tIEFycm93IGhlYWQgZm9yIGFubm90YXRpb24gZWRnZSBwYXRocy4gLS0+CiAgICAgIDxtYXJrZXIKICAgICAgICBpZD0iYW5ub3RhdGlvbi1hcnJvd2hlYWQiCiAgICAgICAgbWFya2VyV2lkdGg9IjUiCiAgICAgICAgbWFya2VySGVpZ2h0PSI1IgogICAgICAgIHJlZlg9IjUiCiAgICAgICAgcmVmWT0iMi41IgogICAgICAgIG9yaWVudD0iYXV0byIKICAgICAgPgogICAgICAgIDxwYXRoIGQ9Ik0gMCwwIEwgNSwyLjUgTCAwLDUgTCAwLDAiPjwvcGF0aD4KICAgICAgPC9tYXJrZXI+CiAgICAgIDxtYXJrZXIKICAgICAgICBpZD0iYW5ub3RhdGlvbi1hcnJvd2hlYWQtZmFkZWQiCiAgICAgICAgbWFya2VyV2lkdGg9IjUiCiAgICAgICAgbWFya2VySGVpZ2h0PSI1IgogICAgICAgIHJlZlg9IjUiCiAgICAgICAgcmVmWT0iMi41IgogICAgICAgIG9yaWVudD0iYXV0byIKICAgICAgPgogICAgICAgIDxwYXRoIGQ9Ik0gMCwwIEwgNSwyLjUgTCAwLDUgTCAwLDAiPjwvcGF0aD4KICAgICAgPC9tYXJrZXI+CiAgICAgIDxtYXJrZXIKICAgICAgICBpZD0icmVmLWFubm90YXRpb24tYXJyb3doZWFkIgogICAgICAgIG1hcmtlcldpZHRoPSI1IgogICAgICAgIG1hcmtlckhlaWdodD0iNSIKICAgICAgICByZWZYPSIwIgogICAgICAgIHJlZlk9IjIuNSIKICAgICAgICBvcmllbnQ9ImF1dG8iCiAgICAgID4KICAgICAgICA8cGF0aCBkPSJNIDUsMCBMIDAsMi41IEwgNSw1IEwgNSwwIj48L3BhdGg+CiAgICAgIDwvbWFya2VyPgogICAgICA8bWFya2VyCiAgICAgICAgaWQ9InJlZi1hbm5vdGF0aW9uLWFycm93aGVhZC1mYWRlZCIKICAgICAgICBtYXJrZXJXaWR0aD0iNSIKICAgICAgICBtYXJrZXJIZWlnaHQ9IjUiCiAgICAgICAgcmVmWD0iMCIKICAgICAgICByZWZZPSIyLjUiCiAgICAgICAgb3JpZW50PSJhdXRvIgogICAgICA+CiAgICAgICAgPHBhdGggZD0iTSA1LDAgTCAwLDIuNSBMIDUsNSBMIDUsMCI+PC9wYXRoPgogICAgICA8L21hcmtlcj4KICAgICAgPCEtLSBUZW1wbGF0ZSBmb3IgYW4gT3Agbm9kZSBlbGxpcHNlLiAtLT4KICAgICAgPGVsbGlwc2UKICAgICAgICBpZD0ib3Atbm9kZS1zdGFtcCIKICAgICAgICByeD0iNy41IgogICAgICAgIHJ5PSIzIgogICAgICAgIHN0cm9rZT0iaW5oZXJpdCIKICAgICAgICBmaWxsPSJpbmhlcml0IgogICAgICA+PC9lbGxpcHNlPgogICAgICA8IS0tIFRlbXBsYXRlIGZvciBhbiBPcCBub2RlIGFubm90YXRpb24gZWxsaXBzZSAoc21hbGxlcikuIC0tPgogICAgICA8ZWxsaXBzZQogICAgICAgIGlkPSJvcC1ub2RlLWFubm90YXRpb24tc3RhbXAiCiAgICAgICAgcng9IjUiCiAgICAgICAgcnk9IjIiCiAgICAgICAgc3Ryb2tlPSJpbmhlcml0IgogICAgICAgIGZpbGw9ImluaGVyaXQiCiAgICAgID48L2VsbGlwc2U+CiAgICAgIDwhLS0gVmVydGljYWxseSBzdGFja2VkIHNlcmllcyBvZiBPcCBub2RlcyB3aGVuIHVuZXhwYW5kZWQuIC0tPgogICAgICA8ZyBpZD0ib3Atc2VyaWVzLXZlcnRpY2FsLXN0YW1wIj4KICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNvcC1ub2RlLXN0YW1wIiB4PSI4IiB5PSI5Ij48L3VzZT4KICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNvcC1ub2RlLXN0YW1wIiB4PSI4IiB5PSI2Ij48L3VzZT4KICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNvcC1ub2RlLXN0YW1wIiB4PSI4IiB5PSIzIj48L3VzZT4KICAgICAgPC9nPgogICAgICA8IS0tIEhvcml6b250YWxseSBzdGFja2VkIHNlcmllcyBvZiBPcCBub2RlcyB3aGVuIHVuZXhwYW5kZWQuIC0tPgogICAgICA8ZyBpZD0ib3Atc2VyaWVzLWhvcml6b250YWwtc3RhbXAiPgogICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI29wLW5vZGUtc3RhbXAiIHg9IjE2IiB5PSI0Ij48L3VzZT4KICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNvcC1ub2RlLXN0YW1wIiB4PSIxMiIgeT0iNCI+PC91c2U+CiAgICAgICAgPHVzZSB4bGluazpocmVmPSIjb3Atbm9kZS1zdGFtcCIgeD0iOCIgeT0iNCI+PC91c2U+CiAgICAgIDwvZz4KICAgICAgPCEtLSBIb3Jpem9udGFsbHkgc3RhY2tlZCBzZXJpZXMgb2YgT3Agbm9kZXMgZm9yIGFubm90YXRpb24uIC0tPgogICAgICA8ZyBpZD0ib3Atc2VyaWVzLWFubm90YXRpb24tc3RhbXAiPgogICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI29wLW5vZGUtYW5ub3RhdGlvbi1zdGFtcCIgeD0iOSIgeT0iMiI+PC91c2U+CiAgICAgICAgPHVzZSB4bGluazpocmVmPSIjb3Atbm9kZS1hbm5vdGF0aW9uLXN0YW1wIiB4PSI3IiB5PSIyIj48L3VzZT4KICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNvcC1ub2RlLWFubm90YXRpb24tc3RhbXAiIHg9IjUiIHk9IjIiPjwvdXNlPgogICAgICA8L2c+CiAgICAgIDxzdmcKICAgICAgICBpZD0ic3VtbWFyeS1pY29uIgogICAgICAgIGZpbGw9IiM4NDg0ODQiCiAgICAgICAgaGVpZ2h0PSIxMiIKICAgICAgICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgICAgICAgd2lkdGg9IjEyIgogICAgICA+CiAgICAgICAgPHBhdGgKICAgICAgICAgIGQ9Ik0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpNOSAxN0g3di03aDJ2N3ptNCAwaC0yVjdoMnYxMHptNCAwaC0ydi00aDJ2NHoiCiAgICAgICAgPjwvcGF0aD4KICAgICAgPC9zdmc+CgogICAgICA8IS0tIEhhdGNoIHBhdHRlcm5zIGZvciBmYWRlZCBvdXQgbm9kZXMuIC0tPgogICAgICA8cGF0dGVybgogICAgICAgIGlkPSJyZWN0SGF0Y2giCiAgICAgICAgcGF0dGVyblRyYW5zZm9ybT0icm90YXRlKDQ1IDAgMCkiCiAgICAgICAgd2lkdGg9IjUiCiAgICAgICAgaGVpZ2h0PSI1IgogICAgICAgIHBhdHRlcm5Vbml0cz0idXNlclNwYWNlT25Vc2UiCiAgICAgID4KICAgICAgICA8bGluZSB4MT0iMCIgeTE9IjAiIHgyPSIwIiB5Mj0iNSIgc3R5bGU9InN0cm9rZS13aWR0aDogMSI+PC9saW5lPgogICAgICA8L3BhdHRlcm4+CiAgICAgIDxwYXR0ZXJuCiAgICAgICAgaWQ9ImVsbGlwc2VIYXRjaCIKICAgICAgICBwYXR0ZXJuVHJhbnNmb3JtPSJyb3RhdGUoNDUgMCAwKSIKICAgICAgICB3aWR0aD0iMiIKICAgICAgICBoZWlnaHQ9IjIiCiAgICAgICAgcGF0dGVyblVuaXRzPSJ1c2VyU3BhY2VPblVzZSIKICAgICAgPgogICAgICAgIDxsaW5lIHgxPSIwIiB5MT0iMCIgeDI9IjAiIHkyPSIyIiBzdHlsZT0ic3Ryb2tlLXdpZHRoOiAxIj48L2xpbmU+CiAgICAgIDwvcGF0dGVybj4KCiAgICAgIDwhLS0gQSBzaGFkb3cgZm9yIGhlYWx0aCBwaWxscy4gLS0+CiAgICAgIDxmaWx0ZXIKICAgICAgICBpZD0iaGVhbHRoLXBpbGwtc2hhZG93IgogICAgICAgIHg9Ii00MCUiCiAgICAgICAgeT0iLTQwJSIKICAgICAgICB3aWR0aD0iMTgwJSIKICAgICAgICBoZWlnaHQ9IjE4MCUiCiAgICAgID4KICAgICAgICA8ZmVHYXVzc2lhbkJsdXIgaW49IlNvdXJjZUFscGhhIiBzdGREZXZpYXRpb249IjAuOCI+PC9mZUdhdXNzaWFuQmx1cj4KICAgICAgICA8ZmVPZmZzZXQgZHg9IjAiIGR5PSIwIiByZXN1bHQ9Im9mZnNldGJsdXIiPjwvZmVPZmZzZXQ+CiAgICAgICAgPGZlRmxvb2QgZmxvb2QtY29sb3I9IiMwMDAwMDAiPjwvZmVGbG9vZD4KICAgICAgICA8ZmVDb21wb3NpdGUgaW4yPSJvZmZzZXRibHVyIiBvcGVyYXRvcj0iaW4iPjwvZmVDb21wb3NpdGU+CiAgICAgICAgPGZlTWVyZ2U+CiAgICAgICAgICA8ZmVNZXJnZU5vZGU+PC9mZU1lcmdlTm9kZT4KICAgICAgICAgIDxmZU1lcmdlTm9kZSBpbj0iU291cmNlR3JhcGhpYyI+PC9mZU1lcmdlTm9kZT4KICAgICAgICA8L2ZlTWVyZ2U+CiAgICAgIDwvZmlsdGVyPgogICAgPC9kZWZzPgogICAgPCEtLSBNYWtlIGEgbGFyZ2UgcmVjdGFuZ2xlIHRoYXQgZmlsbHMgdGhlIHN2ZyBzcGFjZSBzbyB0aGF0CiAgem9vbSBldmVudHMgZ2V0IGNhcHR1cmVkIG9uIHNhZmFyaSAtLT4KICAgIDxyZWN0IGZpbGw9IndoaXRlIiB3aWR0aD0iMTAwMDAiIGhlaWdodD0iMTAwMDAiPjwvcmVjdD4KICAgIDxnIGlkPSJyb290Ij48L2c+CiAgPC9zdmc+CiAgPHRmLWdyYXBoLW1pbmltYXAgaWQ9Im1pbmltYXAiPjwvdGYtZ3JhcGgtbWluaW1hcD4KICA8ZGl2IGlkPSJjb250ZXh0TWVudSIgY2xhc3M9ImNvbnRleHQtbWVudSI+PC9kaXY+CmA7bGV0IFVadD1jbGFzcyBleHRlbmRzKGNyKGdsKHdlKSkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl96b29tZWQ9ITEsdGhpcy5fem9vbVN0YXJ0Q29vcmRzPW51bGwsdGhpcy5fem9vbVRyYW5zZm9ybT1udWxsLHRoaXMuX21heFpvb21EaXN0YW5jZUZvckNsaWNrPTIwLHRoaXMuX25vZGVHcm91cEluZGV4PXt9LHRoaXMuX2Fubm90YXRpb25Hcm91cEluZGV4PXt9LHRoaXMuX2VkZ2VHcm91cEluZGV4PXt9LHRoaXMubWF4TWV0YW5vZGVMYWJlbExlbmd0aEZvbnRTaXplPTksdGhpcy5taW5NZXRhbm9kZUxhYmVsTGVuZ3RoRm9udFNpemU9Nix0aGlzLm1heE1ldGFub2RlTGFiZWxMZW5ndGhMYXJnZUZvbnQ9MTEsdGhpcy5tYXhNZXRhbm9kZUxhYmVsTGVuZ3RoPTE4fWdldE5vZGUodCl7cmV0dXJuIHRoaXMucmVuZGVySGllcmFyY2h5LmdldFJlbmRlck5vZGVCeU5hbWUodCl9aXNOb2RlRXhwYW5kZWQodCl7cmV0dXJuIHQuZXhwYW5kZWR9c2V0Tm9kZUV4cGFuZGVkKHQpe3RoaXMuX2J1aWxkKHRoaXMucmVuZGVySGllcmFyY2h5KSx0aGlzLl91cGRhdGVMYWJlbHMoIXRoaXMuX3pvb21lZCl9cGFuVG9Ob2RlKHQpeyhmdW5jdGlvbiBlKHQsbixpLHIpe2NvbnN0IG89RHUobikuc2VsZWN0KGBbZGF0YS1uYW1lPSIke3R9Il1gKS5ub2RlKCk7aWYoIW8pcmV0dXJuIGNvbnNvbGUud2FybihgcGFuVG9Ob2RlKCkgZmFpbGVkIGZvciBub2RlIG5hbWUgIiR7dH0iYCksITE7bGV0IGE9by5nZXRCQm94KCkscz1vLmdldFNjcmVlbkNUTSgpLGw9bi5jcmVhdGVTVkdQb2ludCgpLGM9bi5jcmVhdGVTVkdQb2ludCgpO2wueD1hLngsbC55PWEueSxjLng9YS54K2Eud2lkdGgsYy55PWEueSthLmhlaWdodCxsPWwubWF0cml4VHJhbnNmb3JtKHMpLGM9Yy5tYXRyaXhUcmFuc2Zvcm0ocyk7bGV0IHU9KHQsZSxuLGkpPT4hKHQ+biYmZTxpKSxoPW4uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7Y29uc3QgZD1oLnRvcCtoLmhlaWdodC0xNTA7aWYodShsLngsYy54LGgubGVmdCxoLmxlZnQraC53aWR0aC0zMjApfHx1KGwueSxjLnksaC50b3AsZCkpe2xldCB0PWgubGVmdCtoLndpZHRoLzItKGwueCtjLngpLzIsZT1oLnRvcCtoLmhlaWdodC8yLShsLnkrYy55KS8yO2NvbnN0IGk9WU4obik7cmV0dXJuIER1KG4pLnRyYW5zaXRpb24oKS5kdXJhdGlvbig1MDApLmNhbGwoci50cmFuc2xhdGVCeSx0L2kuayxlL2kuayksITB9cmV0dXJuITF9KSh0LHRoaXMuJC5zdmcsMCx0aGlzLl96b29tKSYmKHRoaXMuX3pvb21lZD0hMCl9Z2V0R3JhcGhTdmdSb290KCl7cmV0dXJuIHRoaXMuJC5zdmd9Z2V0Q29udGV4dE1lbnUoKXtyZXR1cm4gdGhpcy4kLmNvbnRleHRNZW51fV9yZXNldFN0YXRlKCl7dGhpcy5fbm9kZUdyb3VwSW5kZXg9e30sdGhpcy5fYW5ub3RhdGlvbkdyb3VwSW5kZXg9e30sdGhpcy5fZWRnZUdyb3VwSW5kZXg9e30sdGhpcy5fdXBkYXRlTGFiZWxzKCExKSxEdSh0aGlzLiQuc3ZnKS5zZWxlY3QoIiNyb290Iikuc2VsZWN0QWxsKCIqIikucmVtb3ZlKCksQVp0KHRoaXMuJC5zdmcpfV9idWlsZCh0KXt0aGlzLnRlbXBsYXRlSW5kZXg9dC5oaWVyYXJjaHkuZ2V0VGVtcGxhdGVJbmRleCgpLGQkdCgidGYtZ3JhcGgtc2NlbmUgKGxheW91dCk6IixmdW5jdGlvbigpe0dLdCh0LnJvb3QpfS5iaW5kKHRoaXMpLEJBdC5SRU5ERVJfU0NFTkVfTEFZT1VUKSxkJHQoInRmLWdyYXBoLXNjZW5lIChidWlsZCBzY2VuZSk6IixmdW5jdGlvbigpe0JadChEdSh0aGlzLiQucm9vdCksdC5yb290LHRoaXMpLChmdW5jdGlvbiBlKHQsbil7RHUodCkub24oImNsaWNrIiwoKCk9PntuLmZpcmUoImdyYXBoLXNlbGVjdCIpfSkpfSkodGhpcy4kLnN2Zyx0aGlzKSx0aGlzLl91cGRhdGVJbnB1dFRyYWNlKCl9LmJpbmQodGhpcyksQkF0LlJFTkRFUl9TQ0VORV9CVUlMRF9TQ0VORSksc2V0VGltZW91dChmdW5jdGlvbigpe3RoaXMuX3VwZGF0ZUhlYWx0aFBpbGxzKHRoaXMubm9kZU5hbWVzVG9IZWFsdGhQaWxscyx0aGlzLmhlYWx0aFBpbGxTdGVwSW5kZXgpLHRoaXMubWluaW1hcC51cGRhdGUoKX0uYmluZCh0aGlzKSxVS3QuYW5pbWF0aW9uLmR1cmF0aW9uKX1yZWFkeSgpe3N1cGVyLnJlYWR5KCksdGhpcy5fem9vbT1uSSgpLm9uKCJlbmQiLGZ1bmN0aW9uKCl7dGhpcy5fem9vbVN0YXJ0Q29vcmRzJiYoTWF0aC5zcXJ0KE1hdGgucG93KHRoaXMuX3pvb21TdGFydENvb3Jkcy54LXRoaXMuX3pvb21UcmFuc2Zvcm0ueCwyKStNYXRoLnBvdyh0aGlzLl96b29tU3RhcnRDb29yZHMueS10aGlzLl96b29tVHJhbnNmb3JtLnksMikpPHRoaXMuX21heFpvb21EaXN0YW5jZUZvckNsaWNrP3RoaXMuX2ZpcmVFbmFibGVDbGljaygpOnNldFRpbWVvdXQodGhpcy5fZmlyZUVuYWJsZUNsaWNrLmJpbmQodGhpcyksNTApKTt0aGlzLl96b29tU3RhcnRDb29yZHM9bnVsbH0uYmluZCh0aGlzKSkub24oInpvb20iLGZ1bmN0aW9uKCl7dGhpcy5fem9vbVRyYW5zZm9ybT1NdS50cmFuc2Zvcm0sdGhpcy5fem9vbVN0YXJ0Q29vcmRzfHwodGhpcy5fem9vbVN0YXJ0Q29vcmRzPXRoaXMuX3pvb21UcmFuc2Zvcm0sdGhpcy5maXJlKCJkaXNhYmxlLWNsaWNrIikpLHRoaXMuX3pvb21lZD0hMCxEdSh0aGlzLiQucm9vdCkuYXR0cigidHJhbnNmb3JtIixNdS50cmFuc2Zvcm0pLHRoaXMubWluaW1hcC56b29tKE11LnRyYW5zZm9ybSl9LmJpbmQodGhpcykpLER1KHRoaXMuJC5zdmcpLmNhbGwodGhpcy5fem9vbSkub24oImRibGNsaWNrLnpvb20iLG51bGwpLER1KHdpbmRvdykub24oInJlc2l6ZSIsZnVuY3Rpb24oKXt0aGlzLm1pbmltYXAuem9vbSgpfS5iaW5kKHRoaXMpKSx0aGlzLm1pbmltYXA9dGhpcy4kLm1pbmltYXAuaW5pdCh0aGlzLiQuc3ZnLHRoaXMuJC5yb290LHRoaXMuX3pvb20sVUt0Lm1pbmltYXAuc2l6ZSxVS3Quc3Vic2NlbmUubWV0YS5sYWJlbEhlaWdodCl9YXR0YWNoZWQoKXt0aGlzLnNldCgiX2lzQXR0YWNoZWQiLCEwKX1kZXRhY2hlZCgpe3RoaXMuc2V0KCJfaXNBdHRhY2hlZCIsITEpfV9yZW5kZXJIaWVyYXJjaHlDaGFuZ2VkKCl7dmFyIHQ9dGhpcy5yZW5kZXJIaWVyYXJjaHk7dGhpcy5faGFzUmVuZGVySGllcmFyY2h5QmVlbkZpdE9uY2U9ITEsdGhpcy5fcmVzZXRTdGF0ZSgpLHRoaXMuX2J1aWxkKHQpfV9hbmltYXRlQW5kRml0KCl7IXRoaXMuX2hhc1JlbmRlckhpZXJhcmNoeUJlZW5GaXRPbmNlJiZ0aGlzLl9pc0F0dGFjaGVkJiZzZXRUaW1lb3V0KHRoaXMuZml0LmJpbmQodGhpcyksVUt0LmFuaW1hdGlvbi5kdXJhdGlvbil9X3VwZGF0ZUxhYmVscyh0KXt2YXIgZT10aGlzLiQkKCIudGl0bGUiKSxuPWUuc3R5bGUsaT10aGlzLiQkKCIuYXV4VGl0bGUiKSxyPWkuc3R5bGUsbz10aGlzLiQkKCIuZnVuY3Rpb25MaWJyYXJ5VGl0bGUiKS5zdHlsZTtjb25zdCBhPUR1KHRoaXMuJC5zdmcpO3ZhciBzPWEuc2VsZWN0KCIuIitaS3QuU2NlbmUuR1JPVVArIj4uIitaS3QuU2NlbmUuQ09SRSkubm9kZSgpO2lmKHQmJnMmJnRoaXMucHJvZ3Jlc3MmJjEwMD09PXRoaXMucHJvZ3Jlc3MudmFsdWUpe3ZhciBsPWEuc2VsZWN0KCIuIitaS3QuU2NlbmUuR1JPVVArIj4uIitaS3QuU2NlbmUuSU5FWFRSQUNUKS5ub2RlKCl8fGEuc2VsZWN0KCIuIitaS3QuU2NlbmUuR1JPVVArIj4uIitaS3QuU2NlbmUuT1VURVhUUkFDVCkubm9kZSgpLGM9cy5nZXRDVE0oKS5lLHU9bD9sLmdldENUTSgpLmU6bnVsbDtuLmRpc3BsYXk9ImlubGluZSIsbi5sZWZ0PWMrInB4IixudWxsIT09dSYmdSE9PWM/KHIuZGlzcGxheT0iaW5saW5lIix1PU1hdGgubWF4KGMrZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCx1KSxyLmxlZnQ9dSsicHgiKTpyLmRpc3BsYXk9Im5vbmUiO2xldCB0PWEuc2VsZWN0KCIuIitaS3QuU2NlbmUuR1JPVVArIj4uIitaS3QuU2NlbmUuRlVOQ1RJT05fTElCUkFSWSkubm9kZSgpLGg9dD90LmdldENUTSgpLmU6bnVsbDtudWxsIT09aCYmaCE9PXU/KG8uZGlzcGxheT0iaW5saW5lIixoPU1hdGgubWF4KHUraS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCxoKSxvLmxlZnQ9aCsicHgiKTpvLmRpc3BsYXk9Im5vbmUifWVsc2Ugbi5kaXNwbGF5PSJub25lIixyLmRpc3BsYXk9Im5vbmUiLG8uZGlzcGxheT0ibm9uZSJ9bm9kZUNvbG9yc0NoYW5nZWQoKXtudWxsIT10aGlzLnJlbmRlckhpZXJhcmNoeSYmKHRoaXMudGVtcGxhdGVJbmRleD10aGlzLnJlbmRlckhpZXJhcmNoeS5oaWVyYXJjaHkuZ2V0VGVtcGxhdGVJbmRleCgpLENlLmV4cG9ydHMuZWFjaCh0aGlzLl9ub2RlR3JvdXBJbmRleCwoKHQsZSk9Pnt0aGlzLl91cGRhdGVOb2RlU3RhdGUoZSl9KSksdGhpcy5taW5pbWFwLnVwZGF0ZSgpKX1maXQoKXt0aGlzLl9oYXNSZW5kZXJIaWVyYXJjaHlCZWVuRml0T25jZT0hMCwoZnVuY3Rpb24gdChlLG4saSxyKXtsZXQgbz1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGE9bnVsbDt0cnl7aWYoYT1uLmdldEJCb3goKSwwPT09YS53aWR0aClyZXR1cm59Y2F0Y2godCl7cmV0dXJufWxldCBzPS45Kk1hdGgubWluKG8ud2lkdGgvYS53aWR0aCxvLmhlaWdodC9hLmhlaWdodCwyKSxsPVVLdC5ncmFwaDtjb25zdCBjPXFOLnNjYWxlKHMpLnRyYW5zbGF0ZShsLnBhZGRpbmcucGFkZGluZ0xlZnQsbC5wYWRkaW5nLnBhZGRpbmdUb3ApO0R1KGUpLnRyYW5zaXRpb24oKS5kdXJhdGlvbig1MDApLmNhbGwoaS50cmFuc2Zvcm0sYykub24oImVuZC5maXR0ZWQiLCgoKT0+e2kub24oImVuZC5maXR0ZWQiLG51bGwpLHIoKX0pKX0pKHRoaXMuJC5zdmcsdGhpcy4kLnJvb3QsdGhpcy5fem9vbSxmdW5jdGlvbigpe3RoaXMuX3pvb21lZD0hMX0uYmluZCh0aGlzKSl9Z2V0SW1hZ2VCbG9iKCl7cmV0dXJuIHRoaXMubWluaW1hcC5nZXRJbWFnZUJsb2IoKX1pc05vZGVTZWxlY3RlZCh0KXtyZXR1cm4gdD09PXRoaXMuc2VsZWN0ZWROb2RlfWlzTm9kZUhpZ2hsaWdodGVkKHQpe3JldHVybiB0PT09dGhpcy5oaWdobGlnaHRlZE5vZGV9YWRkQW5ub3RhdGlvbkdyb3VwKHQsZSxuKXt2YXIgaT10Lm5vZGUubmFtZTt0aGlzLl9hbm5vdGF0aW9uR3JvdXBJbmRleFtpXT10aGlzLl9hbm5vdGF0aW9uR3JvdXBJbmRleFtpXXx8e30sdGhpcy5fYW5ub3RhdGlvbkdyb3VwSW5kZXhbaV1bZS5ub2RlLm5hbWVdPW59Z2V0QW5ub3RhdGlvbkdyb3Vwc0luZGV4KHQpe3JldHVybiB0aGlzLl9hbm5vdGF0aW9uR3JvdXBJbmRleFt0XX1yZW1vdmVBbm5vdGF0aW9uR3JvdXAodCxlKXtkZWxldGUgdGhpcy5fYW5ub3RhdGlvbkdyb3VwSW5kZXhbdC5ub2RlLm5hbWVdW2Uubm9kZS5uYW1lXX1hZGROb2RlR3JvdXAodCxlKXt0aGlzLl9ub2RlR3JvdXBJbmRleFt0XT1lfWdldE5vZGVHcm91cCh0KXtyZXR1cm4gdGhpcy5fbm9kZUdyb3VwSW5kZXhbdF19cmVtb3ZlTm9kZUdyb3VwKHQpe2RlbGV0ZSB0aGlzLl9ub2RlR3JvdXBJbmRleFt0XX1hZGRFZGdlR3JvdXAodCxlKXt0aGlzLl9lZGdlR3JvdXBJbmRleFt0XT1lfWdldEVkZ2VHcm91cCh0KXtyZXR1cm4gdGhpcy5fZWRnZUdyb3VwSW5kZXhbdF19X3VwZGF0ZUhlYWx0aFBpbGxzKCl7IShmdW5jdGlvbiB0KGUsbixpKXtpZighbilyZXR1cm47bGV0IHI9MTtEdShlKS5zZWxlY3RBbGwoImcubm9kZXNoYXBlIikuZWFjaCgoZnVuY3Rpb24odCl7Y29uc3QgZT1uW3Qubm9kZS5uYW1lXTtpWnQodGhpcyxlP2VbaV06bnVsbCx0LHIrKyl9KSl9KSh0aGlzLiQuc3ZnLHRoaXMubm9kZU5hbWVzVG9IZWFsdGhQaWxscyx0aGlzLmhlYWx0aFBpbGxTdGVwSW5kZXgpfV91cGRhdGVOb2RlU3RhdGUodCl7dmFyIGU9dGhpcy5nZXROb2RlKHQpLG49dGhpcy5nZXROb2RlR3JvdXAodCk7KG4mJkxadChuLGUsdGhpcyksZS5ub2RlLnR5cGU9PT1BJHQuTUVUQSYmZS5ub2RlLmFzc29jaWF0ZWRGdW5jdGlvbiYmIWUuaXNMaWJyYXJ5RnVuY3Rpb24pJiZMWnQoRHUoIi4iK1pLdC5TY2VuZS5HUk9VUCsiPi4iK1pLdC5TY2VuZS5GVU5DVElPTl9MSUJSQVJZKycgZ1tkYXRhLW5hbWU9IicrKFQkdCtlLm5vZGUuYXNzb2NpYXRlZEZ1bmN0aW9uKSsnIl0nKSxlLHRoaXMpO3ZhciBpPXRoaXMuZ2V0QW5ub3RhdGlvbkdyb3Vwc0luZGV4KHQpO0NlLmV4cG9ydHMuZWFjaChpLCgodCxuKT0+e0xadCh0LGUsdGhpcyxaS3QuQW5ub3RhdGlvbi5OT0RFKX0pKX1fc2VsZWN0ZWROb2RlQ2hhbmdlZCh0LGUpe2lmKHQhPT1lJiYoZSYmdGhpcy5fdXBkYXRlTm9kZVN0YXRlKGUpLHQpKXt0aGlzLm1pbmltYXAudXBkYXRlKCk7Zm9yKHZhciBuLGk9dGhpcy5yZW5kZXJIaWVyYXJjaHkuaGllcmFyY2h5Lm5vZGUodCkscj1bXTtudWxsIT1pLnBhcmVudE5vZGUmJmkucGFyZW50Tm9kZS5uYW1lIT1FJHQ7KXIucHVzaCgoaT1pLnBhcmVudE5vZGUpLm5hbWUpO0NlLmV4cG9ydHMuZm9yRWFjaFJpZ2h0KHIsKHQ9Pnt0aGlzLnJlbmRlckhpZXJhcmNoeS5idWlsZFN1YmhpZXJhcmNoeSh0KTt2YXIgZT10aGlzLnJlbmRlckhpZXJhcmNoeS5nZXRSZW5kZXJOb2RlQnlOYW1lKHQpO2Uubm9kZS5pc0dyb3VwTm9kZSYmIWUuZXhwYW5kZWQmJihlLmV4cGFuZGVkPSEwLG58fChuPWUpKX0pKSxuJiYodGhpcy5zZXROb2RlRXhwYW5kZWQobiksdGhpcy5fem9vbWVkPSEwKSx0JiZ0aGlzLl91cGRhdGVOb2RlU3RhdGUodCksc2V0VGltZW91dCgoKCk9Pnt0aGlzLnBhblRvTm9kZSh0KX0pLFVLdC5hbmltYXRpb24uZHVyYXRpb24pfX1faGlnaGxpZ2h0ZWROb2RlQ2hhbmdlZCh0LGUpe3QhPT1lJiYodCYmdGhpcy5fdXBkYXRlTm9kZVN0YXRlKHQpLGUmJnRoaXMuX3VwZGF0ZU5vZGVTdGF0ZShlKSl9X29uWm9vbUNoYW5nZWQoKXt0aGlzLl91cGRhdGVMYWJlbHMoIXRoaXMuX3pvb21lZCl9X2ZpcmVFbmFibGVDbGljaygpe3RoaXMuZmlyZSgiZW5hYmxlLWNsaWNrIil9X3VwZGF0ZUlucHV0VHJhY2UoKXtOWnQodGhpcy5nZXRHcmFwaFN2Z1Jvb3QoKSx0aGlzLnJlbmRlckhpZXJhcmNoeSx0aGlzLnNlbGVjdGVkTm9kZSx0aGlzLnRyYWNlSW5wdXRzKX19O1VadC50ZW1wbGF0ZT1WWnQsdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsQUt0KV0sVVp0LnByb3RvdHlwZSwicmVuZGVySGllcmFyY2h5Iix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLFVadC5wcm90b3R5cGUsIm5hbWUiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sVVp0LnByb3RvdHlwZSwiY29sb3JCeSIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLFVadC5wcm90b3R5cGUsInRyYWNlSW5wdXRzIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sVVp0LnByb3RvdHlwZSwiX2hhc1JlbmRlckhpZXJhcmNoeUJlZW5GaXRPbmNlIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sVVp0LnByb3RvdHlwZSwiX2lzQXR0YWNoZWQiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sVVp0LnByb3RvdHlwZSwiX3pvb20iLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmcsb2JzZXJ2ZXI6Il9oaWdobGlnaHRlZE5vZGVDaGFuZ2VkIn0pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxVWnQucHJvdG90eXBlLCJoaWdobGlnaHRlZE5vZGUiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmcsb2JzZXJ2ZXI6Il9zZWxlY3RlZE5vZGVDaGFuZ2VkIn0pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxVWnQucHJvdG90eXBlLCJzZWxlY3RlZE5vZGUiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sVVp0LnByb3RvdHlwZSwiaGFuZGxlRWRnZVNlbGVjdGVkIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbixvYnNlcnZlcjoiX29uWm9vbUNoYW5nZWQifSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxVWnQucHJvdG90eXBlLCJfem9vbWVkIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLFVadC5wcm90b3R5cGUsIl96b29tU3RhcnRDb29yZHMiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sVVp0LnByb3RvdHlwZSwiX3pvb21UcmFuc2Zvcm0iLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sVVp0LnByb3RvdHlwZSwiX21heFpvb21EaXN0YW5jZUZvckNsaWNrIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKV0sVVp0LnByb3RvdHlwZSwidGVtcGxhdGVJbmRleCIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxVWnQucHJvdG90eXBlLCJfbm9kZUdyb3VwSW5kZXgiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sVVp0LnByb3RvdHlwZSwiX2Fubm90YXRpb25Hcm91cEluZGV4Iix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLFVadC5wcm90b3R5cGUsIl9lZGdlR3JvdXBJbmRleCIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxVWnQucHJvdG90eXBlLCJtYXhNZXRhbm9kZUxhYmVsTGVuZ3RoRm9udFNpemUiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sVVp0LnByb3RvdHlwZSwibWluTWV0YW5vZGVMYWJlbExlbmd0aEZvbnRTaXplIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLFVadC5wcm90b3R5cGUsIm1heE1ldGFub2RlTGFiZWxMZW5ndGhMYXJnZUZvbnQiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sVVp0LnByb3RvdHlwZSwibWF4TWV0YW5vZGVMYWJlbExlbmd0aCIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxVWnQucHJvdG90eXBlLCJwcm9ncmVzcyIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sVVp0LnByb3RvdHlwZSwibm9kZUNvbnRleHRNZW51SXRlbXMiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sVVp0LnByb3RvdHlwZSwibm9kZU5hbWVzVG9IZWFsdGhQaWxscyIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxVWnQucHJvdG90eXBlLCJoZWFsdGhQaWxsU3RlcEluZGV4Iix2b2lkIDApLHQoW2EoInJlbmRlckhpZXJhcmNoeSIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sVVp0LnByb3RvdHlwZSwiX3JlbmRlckhpZXJhcmNoeUNoYW5nZWQiLG51bGwpLHQoW2EoIl9pc0F0dGFjaGVkIiwicmVuZGVySGllcmFyY2h5IiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxVWnQucHJvdG90eXBlLCJfYW5pbWF0ZUFuZEZpdCIsbnVsbCksdChbYSgiY29sb3JCeSIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sVVp0LnByb3RvdHlwZSwibm9kZUNvbG9yc0NoYW5nZWQiLG51bGwpLHQoW2EoIm5vZGVOYW1lc1RvSGVhbHRoUGlsbHMiLCJoZWFsdGhQaWxsU3RlcEluZGV4IiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxVWnQucHJvdG90eXBlLCJfdXBkYXRlSGVhbHRoUGlsbHMiLG51bGwpLHQoW2EoInRyYWNlSW5wdXRzIiwic2VsZWN0ZWROb2RlIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxVWnQucHJvdG90eXBlLCJfdXBkYXRlSW5wdXRUcmFjZSIsbnVsbCksVVp0PXQoW2koInRmLWdyYXBoLXNjZW5lIildLFVadCk7bGV0IGpadD1jbGFzcyBleHRlbmRzKGNyKHdlKSl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuX3JlbmRlckRlcHRoPTEsdGhpcy5fYWxsb3dHcmFwaFNlbGVjdD0hMCx0aGlzLmVkZ2VXaWR0aEZ1bmN0aW9uPSIiLHRoaXMuaGFuZGxlTm9kZVNlbGVjdGVkPSIiLHRoaXMuZWRnZUxhYmVsRnVuY3Rpb249IiIsdGhpcy5oYW5kbGVFZGdlU2VsZWN0ZWQ9IiJ9cGFuVG9Ob2RlKHQpe3RoaXMuJCQoInRmLWdyYXBoLXNjZW5lIikucGFuVG9Ob2RlKHQpfV9hdXRvRXh0cmFjdE5vZGVzQ2hhbmdlZCgpe3ZhciB0PXRoaXMuZ3JhcGhIaWVyYXJjaHk7aWYodCl7Zm9yKGNvbnN0IGUgb2YgT2JqZWN0LnZhbHVlcyh0LmdldE5vZGVNYXAoKSkpZS5pbmNsdWRlPWskdC5VTlNQRUNJRklFRDt0aGlzLl9idWlsZFJlbmRlckhpZXJhcmNoeSh0KX19X2J1aWxkTmV3UmVuZGVySGllcmFyY2h5KCl7dmFyIHQ9dGhpcy5ncmFwaEhpZXJhcmNoeTt0JiZ0aGlzLl9idWlsZFJlbmRlckhpZXJhcmNoeSh0KX1fc3RhdHNDaGFuZ2VkKCl7dmFyIHQ9dGhpcy5zdGF0cyxlPXRoaXMuZGV2aWNlc0ZvclN0YXRzO3RoaXMuZ3JhcGhIaWVyYXJjaHkmJih0JiZlJiYoIShmdW5jdGlvbiBuKHQsZSxpKXtDZS5leHBvcnRzLmVhY2godC5ub2RlcywodD0+e3Quc3RhdHM9bnVsbH0pKSxDZS5leHBvcnRzLmVhY2goZS5kZXZfc3RhdHMsKGU9PntpJiYhaVtlLmRldmljZV18fENlLmV4cG9ydHMuZWFjaChlLm5vZGVfc3RhdHMsKG49PntsZXQgaT1uLm5vZGVfbmFtZSBpbiB0Lm5vZGVzP24ubm9kZV9uYW1lOiQkdChuLm5vZGVfbmFtZSk7aWYoIShpIGluIHQubm9kZXMpKXJldHVybjtsZXQgcj0wO24ubWVtb3J5JiZDZS5leHBvcnRzLmVhY2gobi5tZW1vcnksKHQ9Pnt0LnRvdGFsX2J5dGVzJiYodC50b3RhbF9ieXRlcz4wP3IrPU51bWJlcih0LnRvdGFsX2J5dGVzKTpjb25zb2xlLmxvZygiaWdub3JpbmcgbmVnYXRpdmUgbWVtb3J5IGFsbG9jYXRpb24gZm9yICIraSkpfSkpO2xldCBvPW51bGw7bi5vdXRwdXQmJihvPUNlLmV4cG9ydHMubWFwKG4ub3V0cHV0LCh0PT5DZS5leHBvcnRzLm1hcCh0LnRlbnNvcl9kZXNjcmlwdGlvbi5zaGFwZS5kaW0sKHQ9Pk51bWJlcih0LnNpemUpKSkpKSksdC5ub2Rlc1tpXS5kZXZpY2U9ZS5kZXZpY2UsbnVsbD09dC5ub2Rlc1tpXS5zdGF0cyYmKHQubm9kZXNbaV0uc3RhdHM9bmV3IGwkdChvKSksdC5ub2Rlc1tpXS5zdGF0cy5hZGRCeXRlc0FsbG9jYXRpb24ociksbi5hbGxfZW5kX3JlbF9taWNyb3MmJihuLmFsbF9lbmRfcmVsX21pY3Jvcz4wP3Qubm9kZXNbaV0uc3RhdHMuYWRkRXhlY3V0aW9uVGltZShuLmFsbF9zdGFydF9taWNyb3Msbi5hbGxfc3RhcnRfbWljcm9zK24uYWxsX2VuZF9yZWxfbWljcm9zKTpjb25zb2xlLmxvZygiaWdub3JpbmcgbmVnYXRpdmUgcnVudGltZSBmb3IgIitpKSl9KSl9KSl9KSh0aGlzLmJhc2ljR3JhcGgsdCxlKSwoZnVuY3Rpb24gaSh0LGUpe2xldCBuPXt9LGk9e307Q2UuZXhwb3J0cy5lYWNoKHQucm9vdC5sZWF2ZXMoKSwoZT0+e2xldCByPXQubm9kZShlKTtudWxsIT1yLmRldmljZSYmKG5bci5kZXZpY2VdPSEwKSxudWxsIT1yLnhsYUNsdXN0ZXImJihpW3IueGxhQ2x1c3Rlcl09ITApfSkpLHQuZGV2aWNlcz1DZS5leHBvcnRzLmtleXMobiksdC54bGFDbHVzdGVycz1DZS5leHBvcnRzLmtleXMoaSksQ2UuZXhwb3J0cy5lYWNoKHQuZ2V0Tm9kZU1hcCgpLCgodCxlKT0+e3QuaXNHcm91cE5vZGUmJih0LnN0YXRzPW5ldyBsJHQobnVsbCksdC5kZXZpY2VIaXN0b2dyYW09e30pfSkpLENlLmV4cG9ydHMuZWFjaCh0LnJvb3QubGVhdmVzKCksKGU9PntsZXQgbj10Lm5vZGUoZSksaT1uO2Zvcig7bnVsbCE9aS5wYXJlbnROb2RlOyl7aWYobnVsbCE9bi5kZXZpY2Upe2xldCB0PWkucGFyZW50Tm9kZS5kZXZpY2VIaXN0b2dyYW07dFtuLmRldmljZV09KHRbbi5kZXZpY2VdfHwwKSsxfWlmKG51bGwhPW4ueGxhQ2x1c3Rlcil7bGV0IHQ9aS5wYXJlbnROb2RlLnhsYUNsdXN0ZXJIaXN0b2dyYW07dFtuLnhsYUNsdXN0ZXJdPSh0W24ueGxhQ2x1c3Rlcl18fDApKzF9bnVsbCE9bi5zdGF0cyYmaS5wYXJlbnROb2RlLnN0YXRzLmNvbWJpbmUobi5zdGF0cyksaT1pLnBhcmVudE5vZGV9fSkpfSkodGhpcy5ncmFwaEhpZXJhcmNoeSkpLHRoaXMuX2J1aWxkUmVuZGVySGllcmFyY2h5KHRoaXMuZ3JhcGhIaWVyYXJjaHkpKX1yZWFkeSgpe3N1cGVyLnJlYWR5KCksdGhpcy5hZGRFdmVudExpc3RlbmVyKCJncmFwaC1zZWxlY3QiLHRoaXMuX2dyYXBoU2VsZWN0ZWQuYmluZCh0aGlzKSksdGhpcy5hZGRFdmVudExpc3RlbmVyKCJkaXNhYmxlLWNsaWNrIix0aGlzLl9kaXNhYmxlQ2xpY2suYmluZCh0aGlzKSksdGhpcy5hZGRFdmVudExpc3RlbmVyKCJlbmFibGUtY2xpY2siLHRoaXMuX2VuYWJsZUNsaWNrLmJpbmQodGhpcykpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigibm9kZS10b2dnbGUtZXhwYW5kIix0aGlzLl9ub2RlVG9nZ2xlRXhwYW5kLmJpbmQodGhpcykpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigibm9kZS1zZWxlY3QiLHRoaXMuX25vZGVTZWxlY3RlZC5iaW5kKHRoaXMpKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoIm5vZGUtaGlnaGxpZ2h0Iix0aGlzLl9ub2RlSGlnaGxpZ2h0ZWQuYmluZCh0aGlzKSksdGhpcy5hZGRFdmVudExpc3RlbmVyKCJub2RlLXVuaGlnaGxpZ2h0Iix0aGlzLl9ub2RlVW5oaWdobGlnaHRlZC5iaW5kKHRoaXMpKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoIm5vZGUtdG9nZ2xlLWV4dHJhY3QiLHRoaXMuX25vZGVUb2dnbGVFeHRyYWN0LmJpbmQodGhpcykpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigibm9kZS10b2dnbGUtc2VyaWVzZ3JvdXAiLHRoaXMuX25vZGVUb2dnbGVTZXJpZXNHcm91cC5iaW5kKHRoaXMpKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoImVkZ2Utc2VsZWN0Iix0aGlzLl9lZGdlU2VsZWN0ZWQuYmluZCh0aGlzKSksdGhpcy5hZGRFdmVudExpc3RlbmVyKCJhbm5vdGF0aW9uLXNlbGVjdCIsdGhpcy5fbm9kZVNlbGVjdGVkLmJpbmQodGhpcykpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigiYW5ub3RhdGlvbi1oaWdobGlnaHQiLHRoaXMuX25vZGVIaWdobGlnaHRlZC5iaW5kKHRoaXMpKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoImFubm90YXRpb24tdW5oaWdobGlnaHQiLHRoaXMuX25vZGVVbmhpZ2hsaWdodGVkLmJpbmQodGhpcykpfV9idWlsZFJlbmRlckhpZXJhcmNoeSh0KXtpZih0LnJvb3QudHlwZSE9PUEkdC5NRVRBKXJldHVybjtjb25zdCBlPXRoaXMsbj1kJHQoIm5ldyB0Zl9ncmFwaF9yZW5kZXIuSGllcmFyY2h5IiwoKCk9Pntjb25zdCBuPW5ldyBBS3QodCwhIXRoaXMuc3RhdHMsdGhpcy5hdXRvRXh0cmFjdE5vZGVzKTtmdW5jdGlvbiBpKHQpe3JldHVybnttaW5WYWx1ZTp0LmRvbWFpbigpWzBdLG1heFZhbHVlOnQuZG9tYWluKClbMV0sc3RhcnRDb2xvcjp0LnJhbmdlKClbMF0sZW5kQ29sb3I6dC5yYW5nZSgpWzFdfX1yZXR1cm4gbi5lZGdlTGFiZWxGdW5jdGlvbj10aGlzLmVkZ2VMYWJlbEZ1bmN0aW9uLG4uZWRnZVdpZHRoRnVuY3Rpb249dGhpcy5lZGdlV2lkdGhGdW5jdGlvbixlLl9zZXRDb2xvckJ5UGFyYW1zKHtjb21wdXRlX3RpbWU6aShuLmNvbXB1dGVUaW1lU2NhbGUpLG1lbW9yeTppKG4ubWVtb3J5VXNhZ2VTY2FsZSksZGV2aWNlOkNlLmV4cG9ydHMubWFwKG4uZGV2aWNlQ29sb3JNYXAuZG9tYWluKCksKGZ1bmN0aW9uKHQpe3JldHVybntkZXZpY2U6dCxjb2xvcjpuLmRldmljZUNvbG9yTWFwKHQpfX0pKSx4bGFfY2x1c3RlcjpDZS5leHBvcnRzLm1hcChuLnhsYUNsdXN0ZXJDb2xvck1hcC5kb21haW4oKSwoZnVuY3Rpb24odCl7cmV0dXJue3hsYV9jbHVzdGVyOnQsY29sb3I6bi54bGFDbHVzdGVyQ29sb3JNYXAodCl9fSkpfSksbn0pLEJBdC5SRU5ERVJfQlVJTERfSElFUkFSQ0hZKTtlLl9zZXRSZW5kZXJIaWVyYXJjaHkobil9X2dldFZpc2libGUodCl7cmV0dXJuIHQ/dGhpcy5yZW5kZXJIaWVyYXJjaHkuZ2V0TmVhcmVzdFZpc2libGVBbmNlc3Rvcih0KTp0fWZpdCgpe3RoaXMuJC5zY2VuZS5maXQoKX1nZXRJbWFnZUJsb2IoKXtyZXR1cm4gdGhpcy4kLnNjZW5lLmdldEltYWdlQmxvYigpfV9ncmFwaENoYW5nZWQoKXt0aGlzLmdyYXBoSGllcmFyY2h5JiYodGhpcy5ncmFwaEhpZXJhcmNoeS5hZGRMaXN0ZW5lcihpS3QuVEVNUExBVEVTX1VQREFURUQsKCgpPT57dGhpcy4kLnNjZW5lLm5vZGVDb2xvcnNDaGFuZ2VkKCl9KSksdGhpcy5maXJlKCJncmFwaC1zZWxlY3QiKSl9X2dyYXBoU2VsZWN0ZWQodCl7dGhpcy5fYWxsb3dHcmFwaFNlbGVjdCYmKHRoaXMuc2V0KCJzZWxlY3RlZE5vZGUiLG51bGwpLHRoaXMuc2V0KCJzZWxlY3RlZEVkZ2UiLG51bGwpKSx0aGlzLl9hbGxvd0dyYXBoU2VsZWN0PSEwfV9kaXNhYmxlQ2xpY2sodCl7dGhpcy5fYWxsb3dHcmFwaFNlbGVjdD0hMX1fZW5hYmxlQ2xpY2sodCl7dGhpcy5fYWxsb3dHcmFwaFNlbGVjdD0hMH1fc2VsZWN0ZWROb2RlQ2hhbmdlZCgpe3RoaXMuaGFuZGxlTm9kZVNlbGVjdGVkJiZ0aGlzLmhhbmRsZU5vZGVTZWxlY3RlZCh0aGlzLnNlbGVjdGVkTm9kZSl9X3NlbGVjdGVkRWRnZUNoYW5nZWQoKXt2YXIgdD10aGlzLnNlbGVjdGVkRWRnZTt0aGlzLl9kZXNlbGVjdFByZXZpb3VzRWRnZSgpLHQmJih0aGlzLl9sYXN0U2VsZWN0ZWRFZGdlR3JvdXAuY2xhc3NlZChaS3QuRWRnZS5TRUxFQ1RFRCwhMCksdGhpcy5fdXBkYXRlTWFya2VyT2ZTZWxlY3RlZEVkZ2UodCkpLHRoaXMuaGFuZGxlRWRnZVNlbGVjdGVkJiZ0aGlzLmhhbmRsZUVkZ2VTZWxlY3RlZCh0KX1fbm9kZVNlbGVjdGVkKHQpe3RoaXMuX2FsbG93R3JhcGhTZWxlY3QmJnRoaXMuc2V0KCJzZWxlY3RlZE5vZGUiLHQuZGV0YWlsLm5hbWUpLHRoaXMuX2FsbG93R3JhcGhTZWxlY3Q9ITB9X2VkZ2VTZWxlY3RlZCh0KXt0aGlzLl9hbGxvd0dyYXBoU2VsZWN0JiYodGhpcy5zZXQoIl9sYXN0U2VsZWN0ZWRFZGdlR3JvdXAiLHQuZGV0YWlsLmVkZ2VHcm91cCksdGhpcy5zZXQoInNlbGVjdGVkRWRnZSIsdC5kZXRhaWwuZWRnZURhdGEpKSx0aGlzLl9hbGxvd0dyYXBoU2VsZWN0PSEwfV9ub2RlSGlnaGxpZ2h0ZWQodCl7dGhpcy5zZXQoImhpZ2hsaWdodGVkTm9kZSIsdC5kZXRhaWwubmFtZSl9X25vZGVVbmhpZ2hsaWdodGVkKHQpe3RoaXMuc2V0KCJoaWdobGlnaHRlZE5vZGUiLG51bGwpfV9ub2RlVG9nZ2xlRXhwYW5kKHQpe3RoaXMuX25vZGVTZWxlY3RlZCh0KTt2YXIgZT10LmRldGFpbC5uYW1lLG49dGhpcy5yZW5kZXJIaWVyYXJjaHkuZ2V0UmVuZGVyTm9kZUJ5TmFtZShlKTtuLm5vZGUudHlwZSE9PUEkdC5PUCYmKHRoaXMucmVuZGVySGllcmFyY2h5LmJ1aWxkU3ViaGllcmFyY2h5KGUpLG4uZXhwYW5kZWQ9IW4uZXhwYW5kZWQsdGhpcy5hc3luYygoZnVuY3Rpb24oKXt0aGlzLiQuc2NlbmUuc2V0Tm9kZUV4cGFuZGVkKG4pfSksNzUpLGgkdCh7YWN0aW9uSWQ6QkF0Lk5PREVfRVhQQU5TSU9OX1RPR0dMRUQsZXZlbnRMYWJlbDpuLmV4cGFuZGVkPyJleHBhbmRlZCI6ImNvbGxhcHNlZCJ9KSl9X25vZGVUb2dnbGVFeHRyYWN0KHQpe3RoaXMubm9kZVRvZ2dsZUV4dHJhY3QodC5kZXRhaWwubmFtZSl9bm9kZVRvZ2dsZUV4dHJhY3QodCl7Y29uc3QgZT10aGlzLnJlbmRlckhpZXJhcmNoeS5nZXRSZW5kZXJOb2RlQnlOYW1lKHQpO2Uubm9kZS5pbmNsdWRlPWUubm9kZS5pbmNsdWRlPT1rJHQuSU5DTFVERT9rJHQuRVhDTFVERTplLm5vZGUuaW5jbHVkZT09ayR0LkVYQ0xVREV8fHRoaXMucmVuZGVySGllcmFyY2h5LmlzTm9kZUF1eGlsaWFyeShlKT9rJHQuSU5DTFVERTprJHQuRVhDTFVERSx0aGlzLl9idWlsZFJlbmRlckhpZXJhcmNoeSh0aGlzLmdyYXBoSGllcmFyY2h5KSxoJHQoe2FjdGlvbklkOkJBdC5OT0RFX0FVWElMSUFSWV9FWFRSQUNUSU9OX0NIQU5HRUQsZXZlbnRMYWJlbDplLm5vZGUuaW5jbHVkZT09PWskdC5JTkNMVURFPyJBdXhpbGlhcnkgdG8gTWFpbiI6Ik1haW4gdG8gQXV4aWxpYXJ5In0pfV9ub2RlVG9nZ2xlU2VyaWVzR3JvdXAodCl7dGhpcy5ub2RlVG9nZ2xlU2VyaWVzR3JvdXAodC5kZXRhaWwubmFtZSl9bm9kZVRvZ2dsZVNlcmllc0dyb3VwKHQpe3RoaXMuc2V0KCJwcm9ncmVzcyIse3ZhbHVlOjAsbXNnOiIifSk7dmFyIGU9ZiR0KHAkdCh0aGlzKSwxMDAsIk5hbWVzcGFjZSBoaWVyYXJjaHkiKTtjb25zdCBuPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0aGlzLmhpZXJhcmNoeVBhcmFtcykse3Nlcmllc01hcDp0aGlzLmdyYXBoSGllcmFyY2h5LmJ1aWxkU2VyaWVzR3JvdXBNYXBUb2dnbGVkKHQpfSk7c0t0KHRoaXMuYmFzaWNHcmFwaCxuLGUpLnRoZW4oZnVuY3Rpb24odCl7dGhpcy5zZXQoImdyYXBoSGllcmFyY2h5Iix0KSx0aGlzLl9idWlsZFJlbmRlckhpZXJhcmNoeSh0aGlzLmdyYXBoSGllcmFyY2h5KX0uYmluZCh0aGlzKSl9X2Rlc2VsZWN0UHJldmlvdXNFZGdlKCl7RHUoIi4iK1pLdC5FZGdlLlNFTEVDVEVEKS5jbGFzc2VkKFpLdC5FZGdlLlNFTEVDVEVELCExKS5lYWNoKCgodCxlKT0+e2lmKHQubGFiZWwpe2NvbnN0IGU9RHUodGhpcykuc2VsZWN0QWxsKCJwYXRoLmVkZ2VsaW5lIik7dC5sYWJlbC5zdGFydE1hcmtlcklkJiZlLnN0eWxlKCJtYXJrZXItc3RhcnQiLGB1cmwoIyR7dC5sYWJlbC5zdGFydE1hcmtlcklkfSlgKSx0LmxhYmVsLmVuZE1hcmtlcklkJiZlLnN0eWxlKCJtYXJrZXItZW5kIixgdXJsKCMke3QubGFiZWwuZW5kTWFya2VySWR9KWApfX0pKX1fdXBkYXRlTWFya2VyT2ZTZWxlY3RlZEVkZ2UodCl7aWYodC5sYWJlbCl7Y29uc3QgZT10LmxhYmVsLnN0YXJ0TWFya2VySWR8fHQubGFiZWwuZW5kTWFya2VySWQ7aWYoZSl7Y29uc3Qgbj1lLnJlcGxhY2UoImRhdGFmbG93LSIsInNlbGVjdGVkLSIpO2xldCBpPXRoaXMuJCQoIiMiK24pO2lmKCFpKXtjb25zdCB0PXRoaXMuJC5zY2VuZS5xdWVyeVNlbGVjdG9yKCIjIitlKTtpPXQuY2xvbmVOb2RlKCEwKSxpLnNldEF0dHJpYnV0ZSgiaWQiLG4pLGkuY2xhc3NMaXN0LmFkZCgic2VsZWN0ZWQtYXJyb3doZWFkIiksdC5wYXJlbnROb2RlLmFwcGVuZENoaWxkKGkpfWNvbnN0IHI9dC5sYWJlbC5zdGFydE1hcmtlcklkPyJtYXJrZXItc3RhcnQiOiJtYXJrZXItZW5kIjt0aGlzLl9sYXN0U2VsZWN0ZWRFZGdlR3JvdXAuc2VsZWN0QWxsKCJwYXRoLmVkZ2VsaW5lIikuc3R5bGUocixgdXJsKCMke259KWApfX19bm90KHQpe3JldHVybiF0fX07alp0LnRlbXBsYXRlPXhlYAogICAgPHN0eWxlPgogICAgICAuY29udGFpbmVyIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgYmFja2dyb3VuZDogd2hpdGU7CiAgICAgICAgYm94LXNoYWRvdzogMCAxcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4yKTsKICAgICAgfQoKICAgICAgLnZlcnRpY2FsIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LXZlcnRpY2FsOwogICAgICB9CgogICAgICAuYXV0byB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWZsZXgtYXV0bzsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtdmVydGljYWw7CiAgICAgIH0KCiAgICAgIGgyIHsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgIH0KCiAgICAgIHBhcGVyLWJ1dHRvbiB7CiAgICAgICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgICA8ZGl2IGNsYXNzPSJ2ZXJ0aWNhbCI+CiAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW3RpdGxlXV0iPgogICAgICAgICAgPGgyPltbdGl0bGVdXTwvaDI+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8dGYtZ3JhcGgtc2NlbmUKICAgICAgICAgIGlkPSJzY2VuZSIKICAgICAgICAgIGNsYXNzPSJhdXRvIgogICAgICAgICAgcmVuZGVyLWhpZXJhcmNoeT0iW1tyZW5kZXJIaWVyYXJjaHldXSIKICAgICAgICAgIGhpZ2hsaWdodGVkLW5vZGU9IltbX2dldFZpc2libGUoaGlnaGxpZ2h0ZWROb2RlKV1dIgogICAgICAgICAgc2VsZWN0ZWQtbm9kZT0ie3tzZWxlY3RlZE5vZGV9fSIKICAgICAgICAgIHNlbGVjdGVkLWVkZ2U9Int7c2VsZWN0ZWRFZGdlfX0iCiAgICAgICAgICBjb2xvci1ieT0iW1tjb2xvckJ5XV0iCiAgICAgICAgICBwcm9ncmVzcz0iW1twcm9ncmVzc11dIgogICAgICAgICAgbm9kZS1jb250ZXh0LW1lbnUtaXRlbXM9Iltbbm9kZUNvbnRleHRNZW51SXRlbXNdXSIKICAgICAgICAgIG5vZGUtbmFtZXMtdG8taGVhbHRoLXBpbGxzPSJbW25vZGVOYW1lc1RvSGVhbHRoUGlsbHNdXSIKICAgICAgICAgIGhlYWx0aC1waWxsLXN0ZXAtaW5kZXg9Int7aGVhbHRoUGlsbFN0ZXBJbmRleH19IgogICAgICAgICAgaGFuZGxlLWVkZ2Utc2VsZWN0ZWQ9IltbaGFuZGxlRWRnZVNlbGVjdGVkXV0iCiAgICAgICAgICB0cmFjZS1pbnB1dHM9IltbdHJhY2VJbnB1dHNdXSIKICAgICAgICA+PC90Zi1ncmFwaC1zY2VuZT4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICBgLHQoW28oe3R5cGU6T2JqZWN0LG5vdGlmeTohMCxvYnNlcnZlcjoiX2dyYXBoQ2hhbmdlZCJ9KSxlKCJkZXNpZ246dHlwZSIsckt0KV0salp0LnByb3RvdHlwZSwiZ3JhcGhIaWVyYXJjaHkiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsSSR0KV0salp0LnByb3RvdHlwZSwiYmFzaWNHcmFwaCIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxqWnQucHJvdG90eXBlLCJzdGF0cyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxqWnQucHJvdG90eXBlLCJkZXZpY2VzRm9yU3RhdHMiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0salp0LnByb3RvdHlwZSwiaGllcmFyY2h5UGFyYW1zIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0LG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxqWnQucHJvdG90eXBlLCJwcm9ncmVzcyIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxqWnQucHJvdG90eXBlLCJ0aXRsZSIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZyxub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0salp0LnByb3RvdHlwZSwic2VsZWN0ZWROb2RlIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0LG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxqWnQucHJvdG90eXBlLCJzZWxlY3RlZEVkZ2UiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0salp0LnByb3RvdHlwZSwiX2xhc3RTZWxlY3RlZEVkZ2VHcm91cCIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZyxub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0salp0LnByb3RvdHlwZSwiaGlnaGxpZ2h0ZWROb2RlIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLGpadC5wcm90b3R5cGUsImNvbG9yQnkiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3Qsbm90aWZ5OiEwLHJlYWRPbmx5OiEwfSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGpadC5wcm90b3R5cGUsImNvbG9yQnlQYXJhbXMiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3QscmVhZE9ubHk6ITAsbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLEFLdCldLGpadC5wcm90b3R5cGUsInJlbmRlckhpZXJhcmNoeSIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLGpadC5wcm90b3R5cGUsInRyYWNlSW5wdXRzIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0salp0LnByb3RvdHlwZSwiYXV0b0V4dHJhY3ROb2RlcyIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0salp0LnByb3RvdHlwZSwibm9kZUNvbnRleHRNZW51SXRlbXMiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0salp0LnByb3RvdHlwZSwiX3JlbmRlckRlcHRoIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0salp0LnByb3RvdHlwZSwiX2FsbG93R3JhcGhTZWxlY3QiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0salp0LnByb3RvdHlwZSwibm9kZU5hbWVzVG9IZWFsdGhQaWxscyIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxqWnQucHJvdG90eXBlLCJoZWFsdGhQaWxsU3RlcEluZGV4Iix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGpadC5wcm90b3R5cGUsImVkZ2VXaWR0aEZ1bmN0aW9uIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGpadC5wcm90b3R5cGUsImhhbmRsZU5vZGVTZWxlY3RlZCIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxqWnQucHJvdG90eXBlLCJlZGdlTGFiZWxGdW5jdGlvbiIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxqWnQucHJvdG90eXBlLCJoYW5kbGVFZGdlU2VsZWN0ZWQiLHZvaWQgMCksdChbYSgiYXV0b0V4dHJhY3ROb2RlcyIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0salp0LnByb3RvdHlwZSwiX2F1dG9FeHRyYWN0Tm9kZXNDaGFuZ2VkIixudWxsKSx0KFthKCJncmFwaEhpZXJhcmNoeSIsImVkZ2VXaWR0aEZ1bmN0aW9uIiwiaGFuZGxlTm9kZVNlbGVjdGVkIiwiZWRnZUxhYmVsRnVuY3Rpb24iLCJoYW5kbGVFZGdlU2VsZWN0ZWQiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLGpadC5wcm90b3R5cGUsIl9idWlsZE5ld1JlbmRlckhpZXJhcmNoeSIsbnVsbCksdChbYSgic3RhdHMiLCJkZXZpY2VzRm9yU3RhdHMiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLGpadC5wcm90b3R5cGUsIl9zdGF0c0NoYW5nZWQiLG51bGwpLHQoW2EoInNlbGVjdGVkTm9kZSIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0salp0LnByb3RvdHlwZSwiX3NlbGVjdGVkTm9kZUNoYW5nZWQiLG51bGwpLHQoW2EoInNlbGVjdGVkRWRnZSIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0salp0LnByb3RvdHlwZSwiX3NlbGVjdGVkRWRnZUNoYW5nZWQiLG51bGwpLGpadD10KFtpKCJ0Zi1ncmFwaCIpXSxqWnQpO2xldCBHWnQ9Y2xhc3MgZXh0ZW5kcyhjcih3ZSkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLnNwZWNpZmljSGVhbHRoUGlsbFN0ZXA9MCx0aGlzLmhlYWx0aFBpbGxFbnRyaWVzPUpLdH1yZWFkeSgpe3N1cGVyLnJlYWR5KCk7dmFyIHQ9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1haW5Db250YWluZXIiKSxlPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoInRmLWRhc2hib2FyZC1sYXlvdXQgLnNjcm9sbGJhciIpO3QmJmUmJih0LnN0eWxlLm92ZXJmbG93PSJoaWRkZW4iLGUuc3R5bGUub3ZlcmZsb3c9ImhpZGRlbiIpfV9oZWFsdGhQaWxsc0F2YWlsYWJsZSh0LGUpe3JldHVybiB0JiZlfV9jb21wdXRlVGVuc29yQ291bnRTdHJpbmcodCxlKXtyZXR1cm4gdD90W2VdLnRvRml4ZWQoMCk6IiJ9Z2V0IGhlYWx0aFBpbGxWYWx1ZXNGb3JTZWxlY3RlZE5vZGUoKXt2YXIgdD10aGlzLnNlbGVjdGVkTm9kZTtpZih0aGlzLmFyZUhlYWx0aFBpbGxzTG9hZGluZylyZXR1cm4gbnVsbDtpZighdClyZXR1cm4gbnVsbDtjb25zdCBlPXRoaXMubm9kZU5hbWVzVG9IZWFsdGhQaWxsc1t0XTtpZighZSlyZXR1cm4gbnVsbDtjb25zdCBuPWVbdGhpcy5hbGxTdGVwc01vZGVFbmFibGVkPzA6dGhpcy5oZWFsdGhQaWxsU3RlcEluZGV4XTtyZXR1cm4gbj9uLnZhbHVlLnNsaWNlKDIsOCk6bnVsbH1nZXQgX2N1cnJlbnRTdGVwRGlzcGxheVZhbHVlKCl7dmFyIHQ9dGhpcy5ub2RlTmFtZXNUb0hlYWx0aFBpbGxzLGU9dGhpcy5oZWFsdGhQaWxsU3RlcEluZGV4LG49dGhpcy5hcmVIZWFsdGhQaWxsc0xvYWRpbmc7aWYodGhpcy5hbGxTdGVwc01vZGVFbmFibGVkKXJldHVybiB0aGlzLnNwZWNpZmljSGVhbHRoUGlsbFN0ZXAudG9GaXhlZCgwKTtpZihuKXJldHVybiAwO2ZvcihsZXQgbiBpbiB0KXJldHVybiB0W25dW2VdLnN0ZXAudG9GaXhlZCgwKTtyZXR1cm4gMH1nZXQgX2JpZ2dlc3RTdGVwRXZlclNlZW4oKXt2YXIgdD10aGlzLm5vZGVOYW1lc1RvSGVhbHRoUGlsbHM7Zm9yKGxldCBuIGluIHQpe3ZhciBlPXRbbl07cmV0dXJuIE1hdGgubWF4KHRoaXMuX2JpZ2dlc3RTdGVwRXZlclNlZW4sZVtlLmxlbmd0aC0xXS5zdGVwKX1yZXR1cm4gdGhpcy5fYmlnZ2VzdFN0ZXBFdmVyU2Vlbnx8MH1nZXQgX21heFN0ZXBJbmRleCgpe3ZhciB0PXRoaXMubm9kZU5hbWVzVG9IZWFsdGhQaWxscztmb3IobGV0IGUgaW4gdClyZXR1cm4gdFtlXS5sZW5ndGgtMTtyZXR1cm4gMH1faGFzRGVidWdnZXJOdW1lcmljQWxlcnRzKHQpe3JldHVybiB0JiZ0Lmxlbmd0aH1fdXBkYXRlQWxlcnRzTGlzdCgpe3ZhciB0PXRoaXMuZGVidWdnZXJOdW1lcmljQWxlcnRzLGU9dGhpcy4kJCgiI251bWVyaWMtYWxlcnRzLWJvZHkiKTtpZihlKXtlLmlubmVyVGV4dD0iIjtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIGk9dFtuXSxyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRyIiksbz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpO28uaW5uZXJUZXh0PShmPWkuZmlyc3RfdGltZXN0YW1wLG09dm9pZCAwLChtPStuZXcgRGF0ZS0rbmV3IERhdGUoZi8xZTMpKTwzZTQ/Imp1c3Qgbm93IjptPDZlND9NYXRoLmZsb29yKG0vMWUzKSsiIHNlY29uZHMgYWdvIjptPDEyZTQ/ImEgbWludXRlIGFnbyI6bTwzNmU1P01hdGguZmxvb3IobS82ZTQpKyIgbWludXRlcyBhZ28iOjE9PU1hdGguZmxvb3IobS8zNmU1KT8iYW4gaG91ciBhZ28iOm08ODY0ZTU/TWF0aC5mbG9vcihtLzM2ZTUpKyIgaG91cnMgYWdvIjptPDE3MjhlNT8ieWVzdGVyZGF5IjpNYXRoLmZsb29yKG0vODY0ZTUpKyIgZGF5cyBhZ28iKSxvLmNsYXNzTGlzdC5hZGQoImZpcnN0LW9mZmVuc2UtdGQiKSxyLmFwcGVuZENoaWxkKG8pO3ZhciBhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7YS5jbGFzc0xpc3QuYWRkKCJ0ZW5zb3ItZGV2aWNlLXRkIik7dmFyIHM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7cy5jbGFzc0xpc3QuYWRkKCJ0ZW5zb3Itc2VjdGlvbi13aXRoaW4tdGFibGUiKSxzLmlubmVyVGV4dD1pLnRlbnNvcl9uYW1lLHRoaXMuX2FkZE9wRXhwYW5zaW9uTGlzdGVuZXIocyxpLnRlbnNvcl9uYW1lKSxhLmFwcGVuZENoaWxkKHMpO3ZhciBsPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2wuY2xhc3NMaXN0LmFkZCgiZGV2aWNlLXNlY3Rpb24td2l0aGluLXRhYmxlIiksbC5pbm5lclRleHQ9IigiK2kuZGV2aWNlX25hbWUrIikiLGEuYXBwZW5kQ2hpbGQobCksci5hcHBlbmRDaGlsZChhKTt2YXIgYz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtjLmNsYXNzTGlzdC5hZGQoIm1pbmktaGVhbHRoLXBpbGwiKTt2YXIgdT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpO2lmKHUuY2xhc3NMaXN0LmFkZCgibWluaS1oZWFsdGgtcGlsbC10ZCIpLHUuYXBwZW5kQ2hpbGQoYyksci5hcHBlbmRDaGlsZCh1KSxpLm5lZ19pbmZfZXZlbnRfY291bnQpe3ZhciBoPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2guY2xhc3NMaXN0LmFkZCgibmVnYXRpdmUtaW5mLW1pbmktaGVhbHRoLXBpbGwtc2VjdGlvbiIpLGguaW5uZXJUZXh0PWkubmVnX2luZl9ldmVudF9jb3VudCxoLnNldEF0dHJpYnV0ZSgidGl0bGUiLGkubmVnX2luZl9ldmVudF9jb3VudCsiIGV2ZW50cyB3aXRoIC3iiJ4iKSxjLmFwcGVuZENoaWxkKGgpfWlmKGkucG9zX2luZl9ldmVudF9jb3VudCl7dmFyIGQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7ZC5jbGFzc0xpc3QuYWRkKCJwb3NpdGl2ZS1pbmYtbWluaS1oZWFsdGgtcGlsbC1zZWN0aW9uIiksZC5pbm5lclRleHQ9aS5wb3NfaW5mX2V2ZW50X2NvdW50LGQuc2V0QXR0cmlidXRlKCJ0aXRsZSIsaS5wb3NfaW5mX2V2ZW50X2NvdW50KyIgZXZlbnRzIHdpdGggK+KIniIpLGMuYXBwZW5kQ2hpbGQoZCl9aWYoaS5uYW5fZXZlbnRfY291bnQpe3ZhciBwPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3AuY2xhc3NMaXN0LmFkZCgibmFuLW1pbmktaGVhbHRoLXBpbGwtc2VjdGlvbiIpLHAuaW5uZXJUZXh0PWkubmFuX2V2ZW50X2NvdW50LHAuc2V0QXR0cmlidXRlKCJ0aXRsZSIsaS5uYW5fZXZlbnRfY291bnQrIiBldmVudHMgd2l0aCBOYU4iKSxjLmFwcGVuZENoaWxkKHApfWVyKGUpLmFwcGVuZENoaWxkKHIpfXZhciBmLG19fV9hZGRPcEV4cGFuc2lvbkxpc3RlbmVyKHQsZSl7dC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsKCgpPT57dmFyIHQsbj0oZnVuY3Rpb24gaSh0LGUsbil7Y29uc3QgaT1uLnNwbGl0KCIvIikscj1pW2kubGVuZ3RoLTFdLm1hdGNoKC8oLiopOlx3Ky8pOzI9PT1yLmxlbmd0aCYmKGlbaS5sZW5ndGgtMV09clsxXSk7bGV0IG89aVswXSxhPWUuZ2V0UmVuZGVyTm9kZUJ5TmFtZShvKTtmb3IobGV0IG49MTtuPGkubGVuZ3RoJiZhLm5vZGUudHlwZSE9PUEkdC5PUDtuKyspZS5idWlsZFN1YmhpZXJhcmNoeShvKSxhLmV4cGFuZGVkPSEwLHQuc2V0Tm9kZUV4cGFuZGVkKGEpLG8rPSIvIitpW25dLGE9ZS5nZXRSZW5kZXJOb2RlQnlOYW1lKG8pO3JldHVybiBhLm5vZGUubmFtZX0pKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzY2VuZSIpLHRoaXMucmVuZGVySGllcmFyY2h5LGUpLHI9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigidGYtZ3JhcGgtaW5mbyNncmFwaC1pbmZvIik7ciYmKHQ9ci5zY3JvbGxIZWlnaHQtci5zY3JvbGxUb3ApO3ZhciBvPXRoaXMuc2VsZWN0ZWROb2RlO3RoaXMuc2V0KCJzZWxlY3RlZE5vZGUiLG4pO3ZhciBhPSgpPT57ci5zY3JvbGxUb3A9ci5zY3JvbGxIZWlnaHQtdH07ciYmKG8/YSgpOndpbmRvdy5zZXRUaW1lb3V0KGEsMjApKX0pKX19O3ZhciBXWnQ7R1p0LnRlbXBsYXRlPXhlYAogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIG1hcmdpbjogMDsKICAgICAgICBwYWRkaW5nOiAwOwogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CgogICAgICBoMiB7CiAgICAgICAgcGFkZGluZzogMDsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgbWFyZ2luOiAwOwogICAgICB9CgogICAgICAuaGVhbHRoLXBpbGwtbGVnZW5kIHsKICAgICAgICBwYWRkaW5nOiAxNXB4OwogICAgICB9CgogICAgICAuaGVhbHRoLXBpbGwtbGVnZW5kIGgyIHsKICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0OwogICAgICB9CgogICAgICAuaGVhbHRoLXBpbGwtZW50cnkgewogICAgICAgIG1hcmdpbjogMTBweCAxMHB4IDEwcHggMDsKICAgICAgfQoKICAgICAgLmhlYWx0aC1waWxsLWVudHJ5IC5jb2xvci1wcmV2aWV3IHsKICAgICAgICB3aWR0aDogMjZweDsKICAgICAgICBoZWlnaHQ6IDI2cHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogM3B4OwogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICBtYXJnaW46IDAgMTBweCAwIDA7CiAgICAgIH0KCiAgICAgIC5oZWFsdGgtcGlsbC1lbnRyeSAuY29sb3ItbGFiZWwsCiAgICAgIC5oZWFsdGgtcGlsbC1lbnRyeSAudGVuc29yLWNvdW50IHsKICAgICAgICBjb2xvcjogIzc3NzsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgaGVpZ2h0OiAyNnB4OwogICAgICAgIGZvbnQtc2l6ZTogMjJweDsKICAgICAgICBsaW5lLWhlaWdodDogMjZweDsKICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wOwogICAgICB9CgogICAgICAuaGVhbHRoLXBpbGwtZW50cnkgLnRlbnNvci1jb3VudCB7CiAgICAgICAgZmxvYXQ6IHJpZ2h0OwogICAgICB9CgogICAgICAjaGVhbHRoLXBpbGwtc3RlcC1zbGlkZXIgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIG1hcmdpbjogMCAwIDAgLTE1cHg7CiAgICAgICAgLyogMzEgY29tZXMgZnJvbSBhZGRpbmcgYSBwYWRkaW5nIG9mIDE1cHggZnJvbSBib3RoIHNpZGVzIG9mIHRoZSBwYXBlci1zbGlkZXIsIHN1YnRyYWN0aW5nCiAgICogMXB4IHNvIHRoYXQgdGhlIHNsaWRlciB3aWR0aCBhbGlnbnMgd2l0aCB0aGUgaW1hZ2UgKHRoZSBsYXN0IHNsaWRlciBtYXJrZXIgdGFrZXMgdXAgMXB4KSwKICAgKiBhbmQgYWRkaW5nIDJweCB0byBhY2NvdW50IGZvciBhIGJvcmRlciBvZiAxcHggb24gYm90aCBzaWRlcyBvZiB0aGUgaW1hZ2UuIDMwIC0gMSArIDIuCiAgICogQXBwYXJlbnRseSwgdGhlIHBhcGVyLXNsaWRlciBsYWNrcyBhIG1peGluIGZvciB0aG9zZSBwYWRkaW5nIHZhbHVlcy4gKi8KICAgICAgICB3aWR0aDogY2FsYygxMDAlICsgMzFweCk7CiAgICAgIH0KCiAgICAgICNoZWFsdGgtcGlsbHMtbG9hZGluZy1zcGlubmVyIHsKICAgICAgICB3aWR0aDogMjBweDsKICAgICAgICBoZWlnaHQ6IDIwcHg7CiAgICAgICAgdmVydGljYWwtYWxpZ246IHRvcDsKICAgICAgfQoKICAgICAgI2hlYWx0aC1waWxsLXN0ZXAtbnVtYmVyLWlucHV0IHsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgdmVydGljYWwtYWxpZ246IHRvcDsKICAgICAgfQoKICAgICAgI251bWVyaWMtYWxlcnRzLXRhYmxlLWNvbnRhaW5lciB7CiAgICAgICAgbWF4LWhlaWdodDogNDAwcHg7CiAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgIH0KCiAgICAgICNudW1lcmljLWFsZXJ0cy10YWJsZSB7CiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDsKICAgICAgfQoKICAgICAgI251bWVyaWMtYWxlcnRzLXRhYmxlIHRkIHsKICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wOwogICAgICB9CgogICAgICAjbnVtZXJpYy1hbGVydHMtdGFibGUgLmZpcnN0LW9mZmVuc2UtdGQgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgfQoKICAgICAgLmZpcnN0LW9mZmVuc2UtdGQgewogICAgICAgIHdpZHRoOiA4MHB4OwogICAgICB9CgogICAgICAudGVuc29yLWRldmljZS10ZCB7CiAgICAgICAgbWF4LXdpZHRoOiAxNDBweDsKICAgICAgICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7CiAgICAgIH0KCiAgICAgIC50ZW5zb3Itc2VjdGlvbi13aXRoaW4tdGFibGUgewogICAgICAgIGNvbG9yOiAjMjY2MjM2OwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICBvcGFjaXR5OiAwLjg7CiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CiAgICAgIH0KCiAgICAgIC50ZW5zb3Itc2VjdGlvbi13aXRoaW4tdGFibGU6aG92ZXIgewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgIH0KCiAgICAgIC5kZXZpY2Utc2VjdGlvbi13aXRoaW4tdGFibGUgewogICAgICAgIGNvbG9yOiAjNjY2OwogICAgICB9CgogICAgICAubWluaS1oZWFsdGgtcGlsbCB7CiAgICAgICAgd2lkdGg6IDEzMHB4OwogICAgICB9CgogICAgICAubWluaS1oZWFsdGgtcGlsbCA+IGRpdiB7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIHdpZHRoOiA2MHB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDNweDsKICAgICAgfQoKICAgICAgI2V2ZW50LWNvdW50cy10aCB7CiAgICAgICAgcGFkZGluZzogMCAwIDAgMTBweDsKICAgICAgfQoKICAgICAgLm5lZ2F0aXZlLWluZi1taW5pLWhlYWx0aC1waWxsLXNlY3Rpb24gewogICAgICAgIGJhY2tncm91bmQ6IHJnYigyNTUsIDE0MSwgMCk7CiAgICAgICAgd2lkdGg6IDIwcHg7CiAgICAgIH0KCiAgICAgIC5wb3NpdGl2ZS1pbmYtbWluaS1oZWFsdGgtcGlsbC1zZWN0aW9uIHsKICAgICAgICBiYWNrZ3JvdW5kOiByZ2IoMCwgNjIsIDIxMik7CiAgICAgICAgd2lkdGg6IDIwcHg7CiAgICAgIH0KCiAgICAgIC5uYW4tbWluaS1oZWFsdGgtcGlsbC1zZWN0aW9uIHsKICAgICAgICBiYWNrZ3JvdW5kOiByZ2IoMjA0LCA0NywgNDQpOwogICAgICAgIHdpZHRoOiAyMHB4OwogICAgICB9CgogICAgICAubmVnYXRpdmUtaW5mLW1pbmktaGVhbHRoLXBpbGwtc2VjdGlvbiwKICAgICAgLnBvc2l0aXZlLWluZi1taW5pLWhlYWx0aC1waWxsLXNlY3Rpb24sCiAgICAgIC5uYW4tbWluaS1oZWFsdGgtcGlsbC1zZWN0aW9uIHsKICAgICAgICBjb2xvcjogI2ZmZjsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIGxpbmUtaGVpZ2h0OiAyMHB4OwogICAgICAgIG1hcmdpbjogMCAwIDAgMTBweDsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgIH0KCiAgICAgIC5uby1udW1lcmljLWFsZXJ0cy1ub3RpZmljYXRpb24gewogICAgICAgIG1hcmdpbjogMDsKICAgICAgfQogICAgPC9zdHlsZT4KICAgIDxwYXBlci1tYXRlcmlhbCBlbGV2YXRpb249IjEiIGNsYXNzPSJjYXJkIGhlYWx0aC1waWxsLWxlZ2VuZCI+CiAgICAgIDxkaXYgY2xhc3M9InRpdGxlIj4KICAgICAgICBFbmFibGUgYWxsIChub3QganVzdCBzYW1wbGVkKSBzdGVwcy4gUmVxdWlyZXMgc2xvdyBkaXNrIHJlYWQuCiAgICAgIDwvZGl2PgogICAgICA8cGFwZXItdG9nZ2xlLWJ1dHRvbgogICAgICAgIGlkPSJlbmFibGVBbGxTdGVwc01vZGVUb2dnbGUiCiAgICAgICAgY2hlY2tlZD0ie3thbGxTdGVwc01vZGVFbmFibGVkfX0iCiAgICAgID4KICAgICAgPC9wYXBlci10b2dnbGUtYnV0dG9uPgogICAgICA8aDI+CiAgICAgICAgU3RlcCBvZiBIZWFsdGggUGlsbHM6CiAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW2FsbFN0ZXBzTW9kZUVuYWJsZWRdXSI+CiAgICAgICAgICA8aW5wdXQKICAgICAgICAgICAgdHlwZT0ibnVtYmVyIgogICAgICAgICAgICBpZD0iaGVhbHRoLXBpbGwtc3RlcC1udW1iZXItaW5wdXQiCiAgICAgICAgICAgIG1pbj0iMCIKICAgICAgICAgICAgbWF4PSJbW19iaWdnZXN0U3RlcEV2ZXJTZWVuXV0iCiAgICAgICAgICAgIHZhbHVlPSJ7e3NwZWNpZmljSGVhbHRoUGlsbFN0ZXA6OmlucHV0fX0iCiAgICAgICAgICAvPgogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbWyFhbGxTdGVwc01vZGVFbmFibGVkXV0iPgogICAgICAgICAgW1tfY3VycmVudFN0ZXBEaXNwbGF5VmFsdWVdXQogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPHBhcGVyLXNwaW5uZXItbGl0ZQogICAgICAgICAgYWN0aXZlCiAgICAgICAgICBoaWRkZW4kPSJbWyFhcmVIZWFsdGhQaWxsc0xvYWRpbmddXSIKICAgICAgICAgIGlkPSJoZWFsdGgtcGlsbHMtbG9hZGluZy1zcGlubmVyIgogICAgICAgID48L3BhcGVyLXNwaW5uZXItbGl0ZT4KICAgICAgPC9oMj4KICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW2FsbFN0ZXBzTW9kZUVuYWJsZWRdXSI+CiAgICAgICAgPHBhcGVyLXNsaWRlcgogICAgICAgICAgaWQ9ImhlYWx0aC1waWxsLXN0ZXAtc2xpZGVyIgogICAgICAgICAgaW1tZWRpYXRlLXZhbHVlPSJ7e3NwZWNpZmljSGVhbHRoUGlsbFN0ZXB9fSIKICAgICAgICAgIG1heD0iW1tfYmlnZ2VzdFN0ZXBFdmVyU2Vlbl1dIgogICAgICAgICAgc25hcHMKICAgICAgICAgIHN0ZXA9IjEiCiAgICAgICAgICB2YWx1ZT0ie3tzcGVjaWZpY0hlYWx0aFBpbGxTdGVwfX0iCiAgICAgICAgPjwvcGFwZXItc2xpZGVyPgogICAgICA8L3RlbXBsYXRlPgogICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbIWFsbFN0ZXBzTW9kZUVuYWJsZWRdXSI+CiAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19tYXhTdGVwSW5kZXhdXSI+CiAgICAgICAgICA8cGFwZXItc2xpZGVyCiAgICAgICAgICAgIGlkPSJoZWFsdGgtcGlsbC1zdGVwLXNsaWRlciIKICAgICAgICAgICAgaW1tZWRpYXRlLXZhbHVlPSJ7e2hlYWx0aFBpbGxTdGVwSW5kZXh9fSIKICAgICAgICAgICAgbWF4PSJbW19tYXhTdGVwSW5kZXhdXSIKICAgICAgICAgICAgc25hcHMKICAgICAgICAgICAgc3RlcD0iMSIKICAgICAgICAgICAgdmFsdWU9Int7aGVhbHRoUGlsbFN0ZXBJbmRleH19IgogICAgICAgICAgPjwvcGFwZXItc2xpZGVyPgogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDxoMj4KICAgICAgICBIZWFsdGggUGlsbAogICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1toZWFsdGhQaWxsVmFsdWVzRm9yU2VsZWN0ZWROb2RlXV0iPgogICAgICAgICAgQ291bnRzIGZvciBTZWxlY3RlZCBOb2RlCiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbIWhlYWx0aFBpbGxWYWx1ZXNGb3JTZWxlY3RlZE5vZGVdXSI+CiAgICAgICAgICBMZWdlbmQKICAgICAgICA8L3RlbXBsYXRlPgogICAgICA8L2gyPgogICAgICA8dGVtcGxhdGUgaXM9ImRvbS1yZXBlYXQiIGl0ZW1zPSJbW2hlYWx0aFBpbGxFbnRyaWVzXV0iPgogICAgICAgIDxkaXYgY2xhc3M9ImhlYWx0aC1waWxsLWVudHJ5Ij4KICAgICAgICAgIDxkaXYKICAgICAgICAgICAgY2xhc3M9ImNvbG9yLXByZXZpZXciCiAgICAgICAgICAgIHN0eWxlPSJiYWNrZ3JvdW5kOltbaXRlbS5iYWNrZ3JvdW5kX2NvbG9yXV0iCiAgICAgICAgICA+PC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2xvci1sYWJlbCI+W1tpdGVtLmxhYmVsXV08L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InRlbnNvci1jb3VudCI+CiAgICAgICAgICAgIFtbX2NvbXB1dGVUZW5zb3JDb3VudFN0cmluZyhoZWFsdGhQaWxsVmFsdWVzRm9yU2VsZWN0ZWROb2RlLAogICAgICAgICAgICBpbmRleCldXQogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDxkaXYgaGlkZGVuJD0iW1shX2hhc0RlYnVnZ2VyTnVtZXJpY0FsZXJ0cyhkZWJ1Z2dlck51bWVyaWNBbGVydHMpXV0iPgogICAgICAgIDxoMiBpZD0ibnVtZXJpYy1hbGVydHMtaGVhZGVyIj5OdW1lcmljIEFsZXJ0czwvaDI+CiAgICAgICAgPHA+QWxlcnRzIGFyZSBzb3J0ZWQgZnJvbSB0b3AgdG8gYm90dG9tIGJ5IGluY3JlYXNpbmcgdGltZXN0YW1wLjwvcD4KICAgICAgICA8ZGl2IGlkPSJudW1lcmljLWFsZXJ0cy10YWJsZS1jb250YWluZXIiPgogICAgICAgICAgPHRhYmxlIGlkPSJudW1lcmljLWFsZXJ0cy10YWJsZSI+CiAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGg+Rmlyc3QgT2ZmZW5zZTwvdGg+CiAgICAgICAgICAgICAgICA8dGg+VGVuc29yIChEZXZpY2UpPC90aD4KICAgICAgICAgICAgICAgIDx0aCBpZD0iZXZlbnQtY291bnRzLXRoIj5FdmVudCBDb3VudHM8L3RoPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGhlYWQ+CiAgICAgICAgICAgIDx0Ym9keSBpZD0ibnVtZXJpYy1hbGVydHMtYm9keSI+PC90Ym9keT4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgICA8dGVtcGxhdGUKICAgICAgICBpcz0iZG9tLWlmIgogICAgICAgIGlmPSJbWyFfaGFzRGVidWdnZXJOdW1lcmljQWxlcnRzKGRlYnVnZ2VyTnVtZXJpY0FsZXJ0cyldXSIKICAgICAgPgogICAgICAgIDxwIGNsYXNzPSJuby1udW1lcmljLWFsZXJ0cy1ub3RpZmljYXRpb24iPgogICAgICAgICAgTm8gbnVtZXJpYyBhbGVydHMgc28gZmFyLiBUaGF0IGlzIGxpa2VseSBnb29kLiBBbGVydHMgaW5kaWNhdGUgdGhlCiAgICAgICAgICBwcmVzZW5jZSBvZiBOYU4gb3IgKCsvLSkgSW5maW5pdHkgdmFsdWVzLCB3aGljaCBtYXkgYmUgY29uY2VybmluZy4KICAgICAgICA8L3A+CiAgICAgIDwvdGVtcGxhdGU+CiAgICA8L3BhcGVyLW1hdGVyaWFsPgogIGAsdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsQUt0KV0sR1p0LnByb3RvdHlwZSwicmVuZGVySGllcmFyY2h5Iix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXksbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLEdadC5wcm90b3R5cGUsImRlYnVnZ2VyTnVtZXJpY0FsZXJ0cyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxHWnQucHJvdG90eXBlLCJub2RlTmFtZXNUb0hlYWx0aFBpbGxzIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyLG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxHWnQucHJvdG90eXBlLCJoZWFsdGhQaWxsU3RlcEluZGV4Iix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyLG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxHWnQucHJvdG90eXBlLCJzcGVjaWZpY0hlYWx0aFBpbGxTdGVwIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nLG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxHWnQucHJvdG90eXBlLCJzZWxlY3RlZE5vZGUiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmcsbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLEdadC5wcm90b3R5cGUsImhpZ2hsaWdodGVkTm9kZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcixub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sR1p0LnByb3RvdHlwZSwic2VsZWN0ZWROb2RlSW5jbHVkZSIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sR1p0LnByb3RvdHlwZSwiYXJlSGVhbHRoUGlsbHNMb2FkaW5nIix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxHWnQucHJvdG90eXBlLCJoZWFsdGhQaWxsRW50cmllcyIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW4sbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLEdadC5wcm90b3R5cGUsImFsbFN0ZXBzTW9kZUVuYWJsZWQiLHZvaWQgMCksdChbcygibm9kZU5hbWVzVG9IZWFsdGhQaWxscyIsImhlYWx0aFBpbGxTdGVwSW5kZXgiLCJzZWxlY3RlZE5vZGUiLCJhbGxTdGVwc01vZGVFbmFibGVkIiwiYXJlSGVhbHRoUGlsbHNMb2FkaW5nIiksZSgiZGVzaWduOnR5cGUiLEFycmF5KSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxHWnQucHJvdG90eXBlLCJoZWFsdGhQaWxsVmFsdWVzRm9yU2VsZWN0ZWROb2RlIixudWxsKSx0KFtzKCJub2RlTmFtZXNUb0hlYWx0aFBpbGxzIiwiaGVhbHRoUGlsbFN0ZXBJbmRleCIsImFsbFN0ZXBzTW9kZUVuYWJsZWQiLCJzcGVjaWZpY0hlYWx0aFBpbGxTdGVwIiwiYXJlSGVhbHRoUGlsbHNMb2FkaW5nIiksZSgiZGVzaWduOnR5cGUiLE9iamVjdCksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sR1p0LnByb3RvdHlwZSwiX2N1cnJlbnRTdGVwRGlzcGxheVZhbHVlIixudWxsKSx0KFtzKCJub2RlTmFtZXNUb0hlYWx0aFBpbGxzIiksZSgiZGVzaWduOnR5cGUiLE51bWJlciksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sR1p0LnByb3RvdHlwZSwiX2JpZ2dlc3RTdGVwRXZlclNlZW4iLG51bGwpLHQoW3MoIm5vZGVOYW1lc1RvSGVhbHRoUGlsbHMiKSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxHWnQucHJvdG90eXBlLCJfbWF4U3RlcEluZGV4IixudWxsKSx0KFthKCJkZWJ1Z2dlck51bWVyaWNBbGVydHMiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLEdadC5wcm90b3R5cGUsIl91cGRhdGVBbGVydHNMaXN0IixudWxsKSxHWnQ9dChbaSgidGYtZ3JhcGgtZGVidWdnZXItZGF0YS1jYXJkIildLEdadCksKGZ1bmN0aW9uKHQpe3QuQ09OU1Q9IkNPTlNUIix0Lk1FVEE9Ik1FVEEiLHQuT1A9Ik9QIix0LlNFUklFUz0iU0VSSUVTIix0LlNVTU1BUlk9IlNVTU1BUlkifSkoV1p0fHwoV1p0PXt9KSk7bGV0IHFadD1jbGFzcyBleHRlbmRzKGNyKGdsKHdlKSkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLnZlcnRpY2FsPSExLHRoaXMuZmlsbE92ZXJyaWRlPW51bGwsdGhpcy5zdHJva2VPdmVycmlkZT1udWxsLHRoaXMuaGVpZ2h0PTIwLHRoaXMuZmFkZWQ9ITF9Z2V0U3ZnRGVmaW5hYmxlRWxlbWVudCgpe3JldHVybiB0aGlzLiQuc3ZnRGVmc31nZXQgX2ZpbGwoKXt2YXIgdD10aGlzLmZpbGxPdmVycmlkZTtpZihudWxsIT10KXJldHVybiB0O3N3aXRjaCh0aGlzLnR5cGUpe2Nhc2UgV1p0Lk1FVEE6cmV0dXJuIGdLdC5ERUZBVUxUX0ZJTEw7Y2FzZSBXWnQuU0VSSUVTOnJldHVybiBfS3Q7ZGVmYXVsdDpyZXR1cm4gZEt0fX1nZXQgX3N0cm9rZSgpe3ZhciB0PXRoaXMuc3Ryb2tlT3ZlcnJpZGU7aWYobnVsbCE9dClyZXR1cm4gdDtzd2l0Y2godGhpcy50eXBlKXtjYXNlIFdadC5NRVRBOnJldHVybiBnS3QuREVGQVVMVF9TVFJPS0U7Y2FzZSBXWnQuU0VSSUVTOnJldHVybiB5S3Q7ZGVmYXVsdDpyZXR1cm4gcEt0fX1faXNUeXBlKHQsZSl7cmV0dXJuIHQ9PT1lfV9mYWRlZENsYXNzKHQsZSl7cmV0dXJuIHQ/ImZhZGVkLSIrZToiIn19O3FadC50ZW1wbGF0ZT14ZWAKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGZvbnQtc2l6ZTogMDsKICAgICAgfQoKICAgICAgOmhvc3QoLmRhcmstbW9kZSkgc3ZnIHsKICAgICAgICBmaWx0ZXI6IGludmVydCgxKTsKICAgICAgfQoKICAgICAgLmZhZGVkLXJlY3QgewogICAgICAgIGZpbGw6IHVybCgjcmVjdEhhdGNoKTsKICAgICAgfQoKICAgICAgLmZhZGVkLWVsbGlwc2UgewogICAgICAgIGZpbGw6IHVybCgjZWxsaXBzZUhhdGNoKTsKICAgICAgfQoKICAgICAgLmZhZGVkLXJlY3QsCiAgICAgIC5mYWRlZC1lbGxpcHNlLAogICAgICAuZmFkZWQtc2VyaWVzIHsKICAgICAgICBzdHJva2U6IHZhcigtLXRiLWdyYXBoLWZhZGVkKSAhaW1wb3J0YW50OwogICAgICB9CiAgICAgICNyZWN0SGF0Y2ggbGluZSwKICAgICAgI2VsbGlwc2VIYXRjaCBsaW5lIHsKICAgICAgICBjb2xvcjogI2UwZDRiMyAhaW1wb3J0YW50OwogICAgICAgIGZpbGw6IHdoaXRlOwogICAgICAgIHN0cm9rZTogI2UwZDRiMyAhaW1wb3J0YW50OwogICAgICB9CiAgICA8L3N0eWxlPgogICAgPCEtLSBTVkcgZm9yIGRlZmluaXRpb25zIC0tPgogICAgPHN2ZyBoZWlnaHQ9IjAiIHdpZHRoPSIwIiBpZD0ic3ZnRGVmcyI+CiAgICAgIDxkZWZzPgogICAgICAgIDwhLS0gSGF0Y2ggcGF0dGVybnMgZm9yIGZhZGVkIG91dCBub2Rlcy4gLS0+CiAgICAgICAgPHBhdHRlcm4KICAgICAgICAgIGlkPSJyZWN0SGF0Y2giCiAgICAgICAgICBwYXR0ZXJuVHJhbnNmb3JtPSJyb3RhdGUoNDUgMCAwKSIKICAgICAgICAgIHdpZHRoPSI1IgogICAgICAgICAgaGVpZ2h0PSI1IgogICAgICAgICAgcGF0dGVyblVuaXRzPSJ1c2VyU3BhY2VPblVzZSIKICAgICAgICA+CiAgICAgICAgICA8bGluZSB4MT0iMCIgeTE9IjAiIHgyPSIwIiB5Mj0iNSIgc3R5bGU9InN0cm9rZS13aWR0aDogMSI+PC9saW5lPgogICAgICAgIDwvcGF0dGVybj4KICAgICAgICA8cGF0dGVybgogICAgICAgICAgaWQ9ImVsbGlwc2VIYXRjaCIKICAgICAgICAgIHBhdHRlcm5UcmFuc2Zvcm09InJvdGF0ZSg0NSAwIDApIgogICAgICAgICAgd2lkdGg9IjIiCiAgICAgICAgICBoZWlnaHQ9IjIiCiAgICAgICAgICBwYXR0ZXJuVW5pdHM9InVzZXJTcGFjZU9uVXNlIgogICAgICAgID4KICAgICAgICAgIDxsaW5lIHgxPSIwIiB5MT0iMCIgeDI9IjAiIHkyPSIyIiBzdHlsZT0ic3Ryb2tlLXdpZHRoOiAxIj48L2xpbmU+CiAgICAgICAgPC9wYXR0ZXJuPgogICAgICAgIDwhLS0gVGVtcGxhdGUgZm9yIGFuIE9wIG5vZGUgZWxsaXBzZS4gLS0+CiAgICAgICAgPGVsbGlwc2UKICAgICAgICAgIGlkPSJvcC1ub2RlLXN0YW1wIgogICAgICAgICAgcng9IjcuNSIKICAgICAgICAgIHJ5PSIzIgogICAgICAgICAgc3Ryb2tlPSJpbmhlcml0IgogICAgICAgICAgZmlsbD0iaW5oZXJpdCIKICAgICAgICA+PC9lbGxpcHNlPgogICAgICAgIDwhLS0gVGVtcGxhdGUgZm9yIGFuIE9wIG5vZGUgYW5ub3RhdGlvbiBlbGxpcHNlIChzbWFsbGVyKS4gLS0+CiAgICAgICAgPGVsbGlwc2UKICAgICAgICAgIGlkPSJvcC1ub2RlLWFubm90YXRpb24tc3RhbXAiCiAgICAgICAgICByeD0iNSIKICAgICAgICAgIHJ5PSIyIgogICAgICAgICAgc3Ryb2tlPSJpbmhlcml0IgogICAgICAgICAgZmlsbD0iaW5oZXJpdCIKICAgICAgICA+PC9lbGxpcHNlPgogICAgICAgIDwhLS0gVmVydGljYWxseSBzdGFja2VkIHNlcmllcyBvZiBPcCBub2RlcyB3aGVuIHVuZXhwYW5kZWQuIC0tPgogICAgICAgIDxnIGlkPSJvcC1zZXJpZXMtdmVydGljYWwtc3RhbXAiPgogICAgICAgICAgPHVzZSB4bGluazpocmVmPSIjb3Atbm9kZS1zdGFtcCIgeD0iOCIgeT0iOSI+PC91c2U+CiAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNvcC1ub2RlLXN0YW1wIiB4PSI4IiB5PSI2Ij48L3VzZT4KICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI29wLW5vZGUtc3RhbXAiIHg9IjgiIHk9IjMiPjwvdXNlPgogICAgICAgIDwvZz4KICAgICAgICA8ZyBpZD0ib3Atc2VyaWVzLWhvcml6b250YWwtc3RhbXAiPgogICAgICAgICAgPHVzZSB4bGluazpocmVmPSIjb3Atbm9kZS1zdGFtcCIgeD0iMTYiIHk9IjQiPjwvdXNlPgogICAgICAgICAgPHVzZSB4bGluazpocmVmPSIjb3Atbm9kZS1zdGFtcCIgeD0iMTIiIHk9IjQiPjwvdXNlPgogICAgICAgICAgPHVzZSB4bGluazpocmVmPSIjb3Atbm9kZS1zdGFtcCIgeD0iOCIgeT0iNCI+PC91c2U+CiAgICAgICAgPC9nPgogICAgICAgIDxnCiAgICAgICAgICBpZD0ic3VtbWFyeS1pY29uIgogICAgICAgICAgZmlsbD0iIzg0ODQ4NCIKICAgICAgICAgIGhlaWdodD0iMTIiCiAgICAgICAgICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgICAgICAgICB3aWR0aD0iMTIiCiAgICAgICAgPgogICAgICAgICAgPHBhdGgKICAgICAgICAgICAgZD0iTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yek05IDE3SDd2LTdoMnY3em00IDBoLTJWN2gydjEwem00IDBoLTJ2LTRoMnY0eiIKICAgICAgICAgID48L3BhdGg+CiAgICAgICAgPC9nPgogICAgICA8L2RlZnM+CiAgICA8L3N2Zz4KICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfaXNUeXBlKHR5cGUsICdDT05TVCcpXV0iPgogICAgICA8c3ZnCiAgICAgICAgaGVpZ2h0JD0iW1toZWlnaHRdXSIKICAgICAgICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWluWU1pZCBtZWV0IgogICAgICAgIHZpZXdCb3g9IjAgMCAxMCAxMCIKICAgICAgPgogICAgICAgIDxjaXJjbGUKICAgICAgICAgIGN4PSI1IgogICAgICAgICAgY3k9IjUiCiAgICAgICAgICByPSIzIgogICAgICAgICAgZmlsbCQ9IltbX2ZpbGxdXSIKICAgICAgICAgIHN0cm9rZSQ9IltbX3N0cm9rZV1dIgogICAgICAgID48L2NpcmNsZT4KICAgICAgPC9zdmc+CiAgICA8L3RlbXBsYXRlPgogICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19pc1R5cGUodHlwZSwgJ1NVTU1BUlknKV1dIj4KICAgICAgPHN2ZwogICAgICAgIHdpZHRoJD0iW1toZWlnaHRdXSIKICAgICAgICBoZWlnaHQkPSJbW2hlaWdodF1dIgogICAgICAgIHZpZXdCb3g9IjAgMCAyNCAyNCIKICAgICAgICBmaWxsPSIjODQ4NDg0IgogICAgICA+CiAgICAgICAgPHBhdGgKICAgICAgICAgIGQ9Ik0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpNOSAxN0g3di03aDJ2N3ptNCAwaC0yVjdoMnYxMHptNCAwaC0ydi00aDJ2NHoiCiAgICAgICAgPjwvcGF0aD4KICAgICAgPC9zdmc+CiAgICA8L3RlbXBsYXRlPgogICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19pc1R5cGUodHlwZSwgJ09QJyldXSI+CiAgICAgIDxzdmcKICAgICAgICBoZWlnaHQkPSJbW2hlaWdodF1dIgogICAgICAgIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaW5ZTWlkIG1lZXQiCiAgICAgICAgdmlld0JveD0iMCAwIDE2IDgiCiAgICAgID4KICAgICAgICA8dXNlCiAgICAgICAgICB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIKICAgICAgICAgIHhsaW5rOmhyZWY9IiNvcC1ub2RlLXN0YW1wIgogICAgICAgICAgZmlsbCQ9IltbX2ZpbGxdXSIKICAgICAgICAgIHN0cm9rZSQ9IltbX3N0cm9rZV1dIgogICAgICAgICAgY2xhc3MkPSJ7e19mYWRlZENsYXNzKGZhZGVkLCAnZWxsaXBzZScpfX0iCiAgICAgICAgICB4PSI4IgogICAgICAgICAgeT0iNCIKICAgICAgICA+PC91c2U+CiAgICAgIDwvc3ZnPgogICAgPC90ZW1wbGF0ZT4KICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfaXNUeXBlKHR5cGUsICdNRVRBJyldXSI+CiAgICAgIDxzdmcKICAgICAgICBoZWlnaHQkPSJbW2hlaWdodF1dIgogICAgICAgIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaW5ZTWlkIG1lZXQiCiAgICAgICAgdmlld0JveD0iMCAwIDM3IDE2IgogICAgICA+CiAgICAgICAgPHJlY3QKICAgICAgICAgIHg9IjEiCiAgICAgICAgICB5PSIxIgogICAgICAgICAgZmlsbCQ9IltbX2ZpbGxdXSIKICAgICAgICAgIHN0cm9rZSQ9IltbX3N0cm9rZV1dIgogICAgICAgICAgY2xhc3MkPSJ7e19mYWRlZENsYXNzKGZhZGVkLCAncmVjdCcpfX0iCiAgICAgICAgICBzdHJva2Utd2lkdGg9IjJweCIKICAgICAgICAgIGhlaWdodD0iMTQiCiAgICAgICAgICB3aWR0aD0iMzUiCiAgICAgICAgICByeD0iNSIKICAgICAgICAgIHJ5PSI1IgogICAgICAgID48L3JlY3Q+CiAgICAgIDwvc3ZnPgogICAgPC90ZW1wbGF0ZT4KICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfaXNUeXBlKHR5cGUsICdTRVJJRVMnKV1dIj4KICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW3ZlcnRpY2FsXV0iPgogICAgICAgIDxzdmcKICAgICAgICAgIGhlaWdodCQ9IltbaGVpZ2h0XV0iCiAgICAgICAgICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWluWU1pZCBtZWV0IgogICAgICAgICAgdmlld0JveD0iMCAwIDE2IDE1IgogICAgICAgID4KICAgICAgICAgIDx1c2UKICAgICAgICAgICAgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiCiAgICAgICAgICAgIHhsaW5rOmhyZWY9IiNvcC1zZXJpZXMtdmVydGljYWwtc3RhbXAiCiAgICAgICAgICAgIGZpbGwkPSJbW19maWxsXV0iCiAgICAgICAgICAgIHN0cm9rZSQ9IltbX3N0cm9rZV1dIgogICAgICAgICAgICBjbGFzcyQ9Int7X2ZhZGVkQ2xhc3MoZmFkZWQsICdzZXJpZXMnKX19IgogICAgICAgICAgICB4PSIwIgogICAgICAgICAgICB5PSIyIgogICAgICAgICAgPjwvdXNlPgogICAgICAgIDwvc3ZnPgogICAgICA8L3RlbXBsYXRlPgogICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbIXZlcnRpY2FsXV0iPgogICAgICAgIDxzdmcKICAgICAgICAgIGhlaWdodCQ9IltbaGVpZ2h0XV0iCiAgICAgICAgICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWluWU1pZCBtZWV0IgogICAgICAgICAgdmlld0JveD0iMCAwIDI0IDEwIgogICAgICAgID4KICAgICAgICAgIDx1c2UKICAgICAgICAgICAgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiCiAgICAgICAgICAgIHhsaW5rOmhyZWY9IiNvcC1zZXJpZXMtaG9yaXpvbnRhbC1zdGFtcCIKICAgICAgICAgICAgZmlsbCQ9IltbX2ZpbGxdXSIKICAgICAgICAgICAgc3Ryb2tlJD0iW1tfc3Ryb2tlXV0iCiAgICAgICAgICAgIGNsYXNzJD0ie3tfZmFkZWRDbGFzcyhmYWRlZCwgJ3NlcmllcycpfX0iCiAgICAgICAgICAgIHg9IjAiCiAgICAgICAgICAgIHk9IjEiCiAgICAgICAgICA+PC91c2U+CiAgICAgICAgPC9zdmc+CiAgICAgIDwvdGVtcGxhdGU+CiAgICA8L3RlbXBsYXRlPgogIGAsdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0scVp0LnByb3RvdHlwZSwidHlwZSIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLHFadC5wcm90b3R5cGUsInZlcnRpY2FsIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLHFadC5wcm90b3R5cGUsImZpbGxPdmVycmlkZSIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxxWnQucHJvdG90eXBlLCJzdHJva2VPdmVycmlkZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxxWnQucHJvdG90eXBlLCJoZWlnaHQiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxxWnQucHJvdG90eXBlLCJmYWRlZCIsdm9pZCAwKSx0KFtzKCJ0eXBlIiwiZmlsbE92ZXJyaWRlIiksZSgiZGVzaWduOnR5cGUiLFN0cmluZyksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0scVp0LnByb3RvdHlwZSwiX2ZpbGwiLG51bGwpLHQoW3MoInR5cGUiLCJzdHJva2VPdmVycmlkZSIpLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLHFadC5wcm90b3R5cGUsIl9zdHJva2UiLG51bGwpLHFadD10KFtpKCJ0Zi1ncmFwaC1pY29uIildLHFadCk7dmFyIFladD1PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxnZXQgR3JhcGhJY29uVHlwZSgpe3JldHVybiBXWnR9fSk7bGV0IFhadD1jbGFzcyBleHRlbmRzKGNyKHdlKSl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMubm9kZT1udWxsLHRoaXMucmVuZGVySW5mbz1udWxsLHRoaXMuY29sb3JCeT1yWnQuU1RSVUNUVVJFLHRoaXMudGVtcGxhdGVJbmRleD1udWxsLHRoaXMudHlwZT1udWxsLHRoaXMudmVydGljYWw9ITEsdGhpcy5jb25zdD0hMSx0aGlzLnN1bW1hcnk9ITEsdGhpcy5maWxsPW51bGwsdGhpcy5oZWlnaHQ9MjB9X2NvbXB1dGVGaWxsT3ZlcnJpZGUodCxlLG4saSxyKXtyZXR1cm4gdCYmZSYmaT9rWnQoaSxuLGUsITEpOnJ9X2dldFN0cm9rZU92ZXJyaWRlKHQpe3JldHVybiB0P1BadCh0KTpudWxsfV9nZXRUeXBlKHQsZSxuLGkpe2NvbnN0e0dyYXBoSWNvblR5cGU6cn09WVp0O2lmKHQpc3dpdGNoKHQudHlwZSl7Y2FzZSBBJHQuT1A6e2NvbnN0IGk9dC5vcDtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGk/ci5PUDoiQ29uc3QiPT09aXx8bj9yLkNPTlNUOmkuZW5kc1dpdGgoIlN1bW1hcnkiKXx8ZT9yLlNVTU1BUlk6ci5PUH1jYXNlIEEkdC5NRVRBOnJldHVybiByLk1FVEE7Y2FzZSBBJHQuU0VSSUVTOnJldHVybiByLlNFUklFU31yZXR1cm4gaX1faXNWZXJ0aWNhbCh0LGUpe3JldHVybiB0P3QuaGFzTm9uQ29udHJvbEVkZ2VzOiEhZX1fZ2V0RmFkZWQodCl7cmV0dXJuIHQmJnQuaXNGYWRlZE91dH1fb25GaWxsT3ZlcnJpZGVDaGFuZ2VkKHQsZSl7Y29uc3R7bm9kZTpuLHJlbmRlckluZm86aSxjb2xvckJ5OnIsdGVtcGxhdGVJbmRleDpvfT10aGlzO3QhPT1lJiZBWnQodGhpcy4kLmljb24uZ2V0U3ZnRGVmaW5hYmxlRWxlbWVudCgpKSxuJiZpJiZvJiZrWnQobyxyLGksITEsdGhpcy4kLmljb24uZ2V0U3ZnRGVmaW5hYmxlRWxlbWVudCgpKX19O1hadC50ZW1wbGF0ZT14ZWAKICAgIDxzdHlsZT4KICAgICAgdGYtZ3JhcGgtaWNvbiB7CiAgICAgICAgLS10Yi1ncmFwaC1mYWRlZDogdmFyKC0tdGItZ3JhcGgtZmFkZWQpOwogICAgICB9CiAgICA8L3N0eWxlPgogICAgPHRmLWdyYXBoLWljb24KICAgICAgaWQ9Imljb24iCiAgICAgIHR5cGU9IltbX2dldFR5cGUobm9kZSwgc3VtbWFyeSwgY29uc3QsIHR5cGUpXV0iCiAgICAgIGhlaWdodD0iW1toZWlnaHRdXSIKICAgICAgZmlsbC1vdmVycmlkZT0iW1tfZmlsbE92ZXJyaWRlXV0iCiAgICAgIHN0cm9rZS1vdmVycmlkZT0iW1tfZ2V0U3Ryb2tlT3ZlcnJpZGUoX2ZpbGxPdmVycmlkZSldXSIKICAgICAgZmFkZWQ9IltbX2dldEZhZGVkKHJlbmRlckluZm8pXV0iCiAgICAgIHZlcnRpY2FsPSJbW19pc1ZlcnRpY2FsKG5vZGUsIHZlcnRpY2FsKV1dIgogICAgPjwvdGYtZ3JhcGgtaWNvbj4KICBgLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLFhadC5wcm90b3R5cGUsIm5vZGUiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sWFp0LnByb3RvdHlwZSwicmVuZGVySW5mbyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxYWnQucHJvdG90eXBlLCJjb2xvckJ5Iix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKV0sWFp0LnByb3RvdHlwZSwidGVtcGxhdGVJbmRleCIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxYWnQucHJvdG90eXBlLCJ0eXBlIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sWFp0LnByb3RvdHlwZSwidmVydGljYWwiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxYWnQucHJvdG90eXBlLCJjb25zdCIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLFhadC5wcm90b3R5cGUsInN1bW1hcnkiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sWFp0LnByb3RvdHlwZSwiZmlsbCIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxYWnQucHJvdG90eXBlLCJoZWlnaHQiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmcsY29tcHV0ZWQ6Il9jb21wdXRlRmlsbE92ZXJyaWRlKG5vZGUsIHJlbmRlckluZm8sIGNvbG9yQnksIHRlbXBsYXRlSW5kZXgsIGZpbGwpIixvYnNlcnZlcjoiX29uRmlsbE92ZXJyaWRlQ2hhbmdlZCJ9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sWFp0LnByb3RvdHlwZSwiX2ZpbGxPdmVycmlkZSIsdm9pZCAwKSxYWnQ9dChbaSgidGYtbm9kZS1pY29uIildLFhadCk7bGV0ICRadD1jbGFzcyBleHRlbmRzKGNyKHdlKSl7X2l0ZW1UeXBlQ2hhbmdlZCgpeyJzdWJub2RlIiE9PXRoaXMuaXRlbVR5cGU/dGhpcy4kWyJsaXN0LWl0ZW0iXS5jbGFzc0xpc3QuYWRkKCJjbGlja2FibGUiKTp0aGlzLiRbImxpc3QtaXRlbSJdLmNsYXNzTGlzdC5yZW1vdmUoImNsaWNrYWJsZSIpfV9ub2RlTGlzdGVuZXIodCl7dGhpcy5maXJlKCJub2RlLWxpc3QtaXRlbS0iK3QudHlwZSx7bm9kZU5hbWU6dGhpcy5uYW1lLHR5cGU6dGhpcy5pdGVtVHlwZX0pfV9mYWRlZENsYXNzKHQpe3JldHVybiB0JiZ0LmlzRmFkZWRPdXQ/ImZhZGVkIjoiIn19OyRadC50ZW1wbGF0ZT14ZWAKICAgIDxzdHlsZT4KICAgICAgI2xpc3QtaXRlbSB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgY29sb3I6IHZhcigtLXNlY29uZGFyeS10ZXh0LWNvbG9yKTsKICAgICAgICBmb250LXNpemU6IDExcHQ7CiAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICB9CgogICAgICAjbGlzdC1pdGVtOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1nb29nbGUteWVsbG93LTEwMCk7CiAgICAgIH0KCiAgICAgIC5jbGlja2FibGUgewogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgfQoKICAgICAgI2xpc3QtaXRlbSBzcGFuIHsKICAgICAgICBtYXJnaW4tbGVmdDogNDBweDsKICAgICAgfQoKICAgICAgI2xpc3QtaXRlbS5leGNsdWRlZCBzcGFuIHsKICAgICAgICBjb2xvcjogIzk5OTsKICAgICAgfQoKICAgICAgI2xpc3QtaXRlbSBzcGFuLmVkZ2UtbGFiZWwgewogICAgICAgIGZsb2F0OiByaWdodDsKICAgICAgICBmb250LXNpemU6IDEwcHg7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDNweDsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDVweDsKICAgICAgfQoKICAgICAgLm5vZGUtaWNvbiB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogMXB4OwogICAgICAgIGxlZnQ6IDJweDsKICAgICAgfQoKICAgICAgLmZhZGVkIHNwYW4gewogICAgICAgIGNvbG9yOiB2YXIoLS10Yi1ncmFwaC1mYWRlZCk7CiAgICAgIH0KICAgIDwvc3R5bGU+CgogICAgPGRpdgogICAgICBpZD0ibGlzdC1pdGVtIgogICAgICBvbi1tb3VzZW92ZXI9Il9ub2RlTGlzdGVuZXIiCiAgICAgIG9uLW1vdXNlb3V0PSJfbm9kZUxpc3RlbmVyIgogICAgICBvbi1jbGljaz0iX25vZGVMaXN0ZW5lciIKICAgID4KICAgICAgPGRpdiBjbGFzcyQ9Int7X2ZhZGVkQ2xhc3MoaXRlbVJlbmRlckluZm8pfX0iPgogICAgICAgIDx0Zi1ub2RlLWljb24KICAgICAgICAgIGNsYXNzPSJub2RlLWljb24iCiAgICAgICAgICBoZWlnaHQ9IjEyIgogICAgICAgICAgY29sb3ItYnk9IltbY29sb3JCeV1dIgogICAgICAgICAgY29sb3ItYnktcGFyYW1zPSJbW2NvbG9yQnlQYXJhbXNdXSIKICAgICAgICAgIG5vZGU9IltbaXRlbU5vZGVdXSIKICAgICAgICAgIHJlbmRlci1pbmZvPSJbW2l0ZW1SZW5kZXJJbmZvXV0iCiAgICAgICAgICB0ZW1wbGF0ZS1pbmRleD0iW1t0ZW1wbGF0ZUluZGV4XV0iCiAgICAgICAgPgogICAgICAgIDwvdGYtbm9kZS1pY29uPgogICAgICAgIDxzcGFuIHRpdGxlJD0iW1tuYW1lXV0iPltbbmFtZV1dPC9zcGFuPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIGAsdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sJFp0LnByb3RvdHlwZSwiY2FyZE5vZGUiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sJFp0LnByb3RvdHlwZSwiaXRlbU5vZGUiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sJFp0LnByb3RvdHlwZSwiZWRnZUxhYmVsIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLCRadC5wcm90b3R5cGUsIml0ZW1SZW5kZXJJbmZvIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLCRadC5wcm90b3R5cGUsIm5hbWUiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmcsb2JzZXJ2ZXI6Il9pdGVtVHlwZUNoYW5nZWQifSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLCRadC5wcm90b3R5cGUsIml0ZW1UeXBlIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLCRadC5wcm90b3R5cGUsImNvbG9yQnkiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sJFp0LnByb3RvdHlwZSwiY29sb3JCeVBhcmFtcyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbildLCRadC5wcm90b3R5cGUsInRlbXBsYXRlSW5kZXgiLHZvaWQgMCksJFp0PXQoW2koInRmLWdyYXBoLW9wLWNvbXBhdC1saXN0LWl0ZW0iKV0sJFp0KTtsZXQgS1p0PWNsYXNzIGV4dGVuZHMoY3IoZ2wod2UpKSl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuX2V4cGFuZGVkPSEwLHRoaXMuX29wQ29tcGF0Q29sb3I9Zkt0LHRoaXMuX29wSW5jb21wYXRDb2xvcj1tS3QsdGhpcy5fdGVtcGxhdGVJbmRleD1udWxsfV9nZXROb2RlKHQsZSl7cmV0dXJuIGUubm9kZSh0KX1fZ2V0UmVuZGVySW5mbyh0LGUpe3JldHVybiB0aGlzLnJlbmRlckhpZXJhcmNoeS5nZXRPckNyZWF0ZVJlbmRlck5vZGVCeU5hbWUodCl9X3RvZ2dsZUV4cGFuZGVkKCl7dGhpcy5fZXhwYW5kZWQ9IXRoaXMuX2V4cGFuZGVkfV9nZXRUb2dnbGVJY29uKHQpe3JldHVybiB0PyJleHBhbmQtbGVzcyI6ImV4cGFuZC1tb3JlIn1fcmVzaXplTGlzdCh0KXt2YXIgZT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKHQpO2UmJmUuZmlyZSgiaXJvbi1yZXNpemUiKX1nZXQgX2luY29tcGF0aWJsZU9wTm9kZXMoKXtjb25zdCB0PXRoaXMuZ3JhcGhIaWVyYXJjaHk7cmV0dXJuIHQmJnQucm9vdD8odGhpcy5hc3luYyh0aGlzLl9yZXNpemVMaXN0LmJpbmQodGhpcywiI2luY29tcGF0aWJsZU9wc0xpc3QiKSksKGZ1bmN0aW9uIGUodCl7Y29uc3QgZT1bXSxuPXt9O3JldHVybiBDZS5leHBvcnRzLmVhY2godC5yb290LmxlYXZlcygpLChpPT57bGV0IHI9dC5ub2RlKGkpO2lmKHIudHlwZT09QSR0Lk9QKXtsZXQgaT1yO2lmKCFpLmNvbXBhdGlibGUpaWYoaS5vd25pbmdTZXJpZXMpe2lmKHQuZ2V0U2VyaWVzR3JvdXBUeXBlKGkub3duaW5nU2VyaWVzKT09PUwkdC5VTkdST1VQKWUucHVzaChpKTtlbHNlIGlmKCFuW2kub3duaW5nU2VyaWVzXSl7bGV0IHI9dC5ub2RlKGkub3duaW5nU2VyaWVzKTtyJiYobltpLm93bmluZ1Nlcmllc109cixlLnB1c2gocikpfX1lbHNlIGUucHVzaChpKTtDZS5leHBvcnRzLmVhY2goaS5pbkVtYmVkZGluZ3MsKHQ9Pnt0LmNvbXBhdGlibGV8fGUucHVzaCh0KX0pKSxDZS5leHBvcnRzLmVhY2goaS5vdXRFbWJlZGRpbmdzLCh0PT57dC5jb21wYXRpYmxlfHxlLnB1c2godCl9KSl9fSkpLGV9KSh0KSk6W119Z2V0IF9vcENvbXBhdFNjb3JlKCl7dmFyIHQ9dGhpcy5ncmFwaEhpZXJhcmNoeTtpZih0JiZ0LnJvb3Qpe3ZhciBlPXQucm9vdCxuPWUuY29tcGF0aWJpbGl0eUhpc3RvZ3JhbS5jb21wYXRpYmxlLGk9ZS5jb21wYXRpYmlsaXR5SGlzdG9ncmFtLmluY29tcGF0aWJsZTtyZXR1cm4gMD09biYmMD09aT8wOk1hdGguZmxvb3IoMTAwKm4vKG4raSkpLzEwMH1yZXR1cm4gMH1nZXQgX29wQ29tcGF0U2NvcmVMYWJlbCgpe3ZhciB0PXRoaXMuX29wQ29tcGF0U2NvcmU7cmV0dXJuIER5KCIuMCUiKSh0KX1nZXQgX3RvdGFsSW5jb21wYXRPcHMoKXt2YXIgdD10aGlzLmdyYXBoSGllcmFyY2h5O3JldHVybiB0JiZ0LnJvb3Q/dC5yb290LmNvbXBhdGliaWxpdHlIaXN0b2dyYW0uaW5jb21wYXRpYmxlOjB9X2dyYXBoSGllcmFyY2h5Q2hhbmdlZCgpe3RoaXMuX3RlbXBsYXRlSW5kZXg9dGhpcy5ncmFwaEhpZXJhcmNoeS5nZXRUZW1wbGF0ZUluZGV4KCksdGhpcy5ncmFwaEhpZXJhcmNoeS5hZGRMaXN0ZW5lcihpS3QuVEVNUExBVEVTX1VQREFURUQsKCgpPT57dGhpcy5fdGVtcGxhdGVJbmRleD10aGlzLmdyYXBoSGllcmFyY2h5LmdldFRlbXBsYXRlSW5kZXgoKX0pKX19O0tadC50ZW1wbGF0ZT14ZWAKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIG1heC1oZWlnaHQ6IDUwMHB4OwogICAgICB9CgogICAgICAuaW5jb21wYXRpYmxlLW9wcy1saXN0IHsKICAgICAgICBoZWlnaHQ6IDM1MHB4OwogICAgICAgIG1heC1oZWlnaHQ6IDQwMHB4OwogICAgICAgIG92ZXJmbG93LXk6IHNjcm9sbDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgIH0KCiAgICAgIGlyb24tbGlzdCB7CiAgICAgICAgZmxleDogMSAxIGF1dG87CiAgICAgIH0KCiAgICAgIHBhcGVyLWl0ZW0gewogICAgICAgIHBhZGRpbmc6IDA7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc2Vjb25kYXJ5LWJhY2tncm91bmQtY29sb3IpOwogICAgICB9CgogICAgICBwYXBlci1pdGVtLWJvZHlbdHdvLWxpbmVdIHsKICAgICAgICBtaW4taGVpZ2h0OiAwOwogICAgICAgIHBhZGRpbmc6IDhweCAxMnB4IDRweDsKICAgICAgfQoKICAgICAgLmV4cGFuZGVkSW5mbyB7CiAgICAgICAgcGFkZGluZzogOHB4IDEycHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBmb250LXNpemU6IDEycHQ7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIH0KCiAgICAgIC5ub2RlLW5hbWUgewogICAgICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7CiAgICAgICAgd29yZC13cmFwOiBicmVhay13b3JkOwogICAgICAgIGZvbnQtc2l6ZTogMTRwdDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICB9CgogICAgICAuc3VidGl0bGUgewogICAgICAgIGNvbG9yOiB2YXIoLS1zZWNvbmRhcnktdGV4dC1jb2xvcik7CiAgICAgICAgZm9udC1zaXplOiAxMnB0OwogICAgICB9CgogICAgICAudG9nZ2xlLWJ1dHRvbiB7CiAgICAgICAgZmxvYXQ6IHJpZ2h0OwogICAgICAgIG1heC1oZWlnaHQ6IDIwcHg7CiAgICAgICAgbWF4LXdpZHRoOiAyMHB4OwogICAgICAgIHBhZGRpbmc6IDA7CiAgICAgIH0KCiAgICAgIC5ub24tY29udHJvbC1saXN0LWl0ZW0gewogICAgICAgIHBhZGRpbmctbGVmdDogMTBweDsKICAgICAgfQoKICAgICAgZGl2Lm9wLWNvbXBhdC1kaXNwbGF5IHsKICAgICAgICBtYXJnaW4tdG9wOiAxMHB4OwogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgfQoKICAgICAgLyoqCiAgICAgICAqIFNhZGx5LCBiZWNhdXNlIHRoZSB3aG9sZSBib2R5IGlzIGludmVydGVkIGluIGNvbG9yLCBsZWdlbmRzIGFsc28gbmVlZAogICAgICAgKiB0byBiZSBpbnZlcnRlZC4KICAgICAgICoqLwogICAgICA6aG9zdCguZGFyay1tb2RlKSBkaXYub3AtY29tcGF0LWRpc3BsYXkgewogICAgICAgIGZpbHRlcjogaW52ZXJ0KDEpOwogICAgICB9CgogICAgICBzdmcub3AtY29tcGF0IHsKICAgICAgICB3aWR0aDogMjUwcHg7CiAgICAgICAgaGVpZ2h0OiAyNXB4OwogICAgICAgIGZsb2F0OiBsZWZ0OwogICAgICB9CgogICAgICBkaXYub3AtY29tcGF0LXZhbHVlIHsKICAgICAgICBmbG9hdDogcmlnaHQ7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBjb2xvcjogYmxhY2s7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDEwcHg7CiAgICAgIH0KICAgIDwvc3R5bGU+CgogICAgPHBhcGVyLWl0ZW0+CiAgICAgIDxwYXBlci1pdGVtLWJvZHkgdHdvLWxpbmU+CiAgICAgICAgPGRpdj4KICAgICAgICAgIDxwYXBlci1pY29uLWJ1dHRvbgogICAgICAgICAgICBpY29uPSJ7e19nZXRUb2dnbGVJY29uKF9leHBhbmRlZCl9fSIKICAgICAgICAgICAgb24tY2xpY2s9Il90b2dnbGVFeHBhbmRlZCIKICAgICAgICAgICAgY2xhc3M9InRvZ2dsZS1idXR0b24iCiAgICAgICAgICA+CiAgICAgICAgICA8L3BhcGVyLWljb24tYnV0dG9uPgogICAgICAgICAgPGRpdiBjbGFzcz0ibm9kZS1uYW1lIiBpZD0ibm9kZXRpdGxlIj5bW25vZGVUaXRsZV1dPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBzZWNvbmRhcnk+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzdWJ0aXRsZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im9wLWNvbXBhdC1kaXNwbGF5Ij4KICAgICAgICAgICAgICA8c3ZnCiAgICAgICAgICAgICAgICBjbGFzcz0ib3AtY29tcGF0IgogICAgICAgICAgICAgICAgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pbllNaWQgbWVldCIKICAgICAgICAgICAgICAgIHZpZXdCb3g9IjAgMCAyNTAgMjUiCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgPGRlZnM+CiAgICAgICAgICAgICAgICAgIDxsaW5lYXJHcmFkaWVudCBpZD0ib3AtY29tcGF0LWZpbGwiPgogICAgICAgICAgICAgICAgICAgIDxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvciQ9IltbX29wQ29tcGF0Q29sb3JdXSI+PC9zdG9wPgogICAgICAgICAgICAgICAgICAgIDxzdG9wCiAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQkPSJbW19vcENvbXBhdFNjb3JlXV0iCiAgICAgICAgICAgICAgICAgICAgICBzdG9wLWNvbG9yJD0iW1tfb3BDb21wYXRDb2xvcl1dIgogICAgICAgICAgICAgICAgICAgID48L3N0b3A+CiAgICAgICAgICAgICAgICAgICAgPHN0b3AKICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCQ9IltbX29wQ29tcGF0U2NvcmVdXSIKICAgICAgICAgICAgICAgICAgICAgIHN0b3AtY29sb3IkPSJbW19vcEluY29tcGF0Q29sb3JdXSIKICAgICAgICAgICAgICAgICAgICA+PC9zdG9wPgogICAgICAgICAgICAgICAgICAgIDxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvciQ9IltbX29wSW5jb21wYXRDb2xvciBdXSI+PC9zdG9wPgogICAgICAgICAgICAgICAgICA8L2xpbmVhckdyYWRpZW50PgogICAgICAgICAgICAgICAgPC9kZWZzPgogICAgICAgICAgICAgICAgPHJlY3QKICAgICAgICAgICAgICAgICAgaGVpZ2h0PSIyNSIKICAgICAgICAgICAgICAgICAgd2lkdGg9IjI1MCIKICAgICAgICAgICAgICAgICAgcng9IjUiCiAgICAgICAgICAgICAgICAgIHJ5PSI1IgogICAgICAgICAgICAgICAgICBzdHlsZT0iZmlsbDogdXJsKCcjb3AtY29tcGF0LWZpbGwnKTsiCiAgICAgICAgICAgICAgICA+PC9yZWN0PgogICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im9wLWNvbXBhdC12YWx1ZSI+W1tfb3BDb21wYXRTY29yZUxhYmVsXV08L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9wYXBlci1pdGVtLWJvZHk+CiAgICA8L3BhcGVyLWl0ZW0+CgogICAgPGlyb24tY29sbGFwc2Ugb3BlbmVkPSJ7e19leHBhbmRlZH19Ij4KICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJ7e19leHBhbmRlZH19IiByZXN0YW1wPSJ0cnVlIj4KICAgICAgICA8ZGl2IGNsYXNzPSJleHBhbmRlZEluZm8iPgogICAgICAgICAgSW5jb21wYXRpYmxlIE9wZXJhdGlvbnM6ICg8c3Bhbj5bW190b3RhbEluY29tcGF0T3BzXV08L3NwYW4+KQogICAgICAgICAgPGlyb24tbGlzdAogICAgICAgICAgICBjbGFzcz0iaW5jb21wYXRpYmxlLW9wcy1saXN0IgogICAgICAgICAgICBpZD0iaW5jb21wYXRpYmxlT3BzTGlzdCIKICAgICAgICAgICAgaXRlbXM9IltbX2luY29tcGF0aWJsZU9wTm9kZXNdXSIKICAgICAgICAgID4KICAgICAgICAgICAgPHRlbXBsYXRlPgogICAgICAgICAgICAgIDx0Zi1ncmFwaC1vcC1jb21wYXQtbGlzdC1pdGVtCiAgICAgICAgICAgICAgICBjbGFzcz0ibm9uLWNvbnRyb2wtbGlzdC1pdGVtIgogICAgICAgICAgICAgICAgaXRlbS1ub2RlPSJbW2l0ZW1dXSIKICAgICAgICAgICAgICAgIGl0ZW0tcmVuZGVyLWluZm89IltbX2dldFJlbmRlckluZm8oaXRlbS5uYW1lLCByZW5kZXJIaWVyYXJjaHkpXV0iCiAgICAgICAgICAgICAgICBuYW1lPSJbW2l0ZW0ubmFtZV1dIgogICAgICAgICAgICAgICAgdGVtcGxhdGUtaW5kZXg9IltbX3RlbXBsYXRlSW5kZXhdXSIKICAgICAgICAgICAgICAgIGNvbG9yLWJ5PSJbW2NvbG9yQnldXSIKICAgICAgICAgICAgICAgIGl0ZW0tdHlwZT0iaW5jb21wYXRpYmxlLW9wcyIKICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgPC90Zi1ncmFwaC1vcC1jb21wYXQtbGlzdC1pdGVtPgogICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgPC9pcm9uLWxpc3Q+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvdGVtcGxhdGU+CiAgICA8L2lyb24tY29sbGFwc2U+CiAgYCx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixyS3QpXSxLWnQucHJvdG90eXBlLCJncmFwaEhpZXJhcmNoeSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixBS3QpXSxLWnQucHJvdG90eXBlLCJyZW5kZXJIaWVyYXJjaHkiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sS1p0LnByb3RvdHlwZSwibm9kZVRpdGxlIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sS1p0LnByb3RvdHlwZSwiX2V4cGFuZGVkIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLEtadC5wcm90b3R5cGUsIl9vcENvbXBhdENvbG9yIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLEtadC5wcm90b3R5cGUsIl9vcEluY29tcGF0Q29sb3IiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pXSxLWnQucHJvdG90eXBlLCJfdGVtcGxhdGVJbmRleCIsdm9pZCAwKSx0KFtzKCJncmFwaEhpZXJhcmNoeSIpLGUoImRlc2lnbjp0eXBlIixBcnJheSksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sS1p0LnByb3RvdHlwZSwiX2luY29tcGF0aWJsZU9wTm9kZXMiLG51bGwpLHQoW3MoImdyYXBoSGllcmFyY2h5IiksZSgiZGVzaWduOnR5cGUiLE51bWJlciksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sS1p0LnByb3RvdHlwZSwiX29wQ29tcGF0U2NvcmUiLG51bGwpLHQoW3MoIl9vcENvbXBhdFNjb3JlIiksZSgiZGVzaWduOnR5cGUiLFN0cmluZyksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sS1p0LnByb3RvdHlwZSwiX29wQ29tcGF0U2NvcmVMYWJlbCIsbnVsbCksdChbcygiZ3JhcGhIaWVyYXJjaHkiKSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxLWnQucHJvdG90eXBlLCJfdG90YWxJbmNvbXBhdE9wcyIsbnVsbCksdChbYSgiZ3JhcGhIaWVyYXJjaHkiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLEtadC5wcm90b3R5cGUsIl9ncmFwaEhpZXJhcmNoeUNoYW5nZWQiLG51bGwpLEtadD10KFtpKCJ0Zi1ncmFwaC1vcC1jb21wYXQtY2FyZCIpXSxLWnQpO2xldCBaWnQ9Y2xhc3MgZXh0ZW5kcyhjcihnbCh3ZSkpKXtfaXRlbVR5cGVDaGFuZ2VkKCl7InN1Ym5vZGUiIT09dGhpcy5pdGVtVHlwZT90aGlzLiRbImxpc3QtaXRlbSJdLmNsYXNzTGlzdC5hZGQoImNsaWNrYWJsZSIpOnRoaXMuJFsibGlzdC1pdGVtIl0uY2xhc3NMaXN0LnJlbW92ZSgiY2xpY2thYmxlIil9X25vZGVMaXN0ZW5lcih0KXt0aGlzLmZpcmUoIm5vZGUtbGlzdC1pdGVtLSIrdC50eXBlLHtjYXJkTm9kZTp0aGlzLmNhcmROb2RlLm5hbWUsbm9kZU5hbWU6dGhpcy5uYW1lLHR5cGU6dGhpcy5pdGVtVHlwZX0pfV9mYWRlZENsYXNzKHQpe3JldHVybiB0JiZ0LmlzRmFkZWRPdXQ/ImZhZGVkIjoiIn19O1padC50ZW1wbGF0ZT14ZWAKICAgIDxzdHlsZT4KICAgICAgI2xpc3QtaXRlbSB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgY29sb3I6IHZhcigtLXNlY29uZGFyeS10ZXh0LWNvbG9yKTsKICAgICAgICBmb250LXNpemU6IDExcHQ7CiAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICB9CgogICAgICAjbGlzdC1pdGVtOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1nb29nbGUteWVsbG93LTEwMCk7CiAgICAgIH0KCiAgICAgIDpob3N0KC5kYXJrLW1vZGUpICNsaXN0LWl0ZW06aG92ZXIgewogICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXBhcGVyLXllbGxvdy05MDApOwogICAgICAgIGNvbG9yOiAjZmZmOwogICAgICB9CgogICAgICAuY2xpY2thYmxlIHsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgIH0KCiAgICAgICNsaXN0LWl0ZW0gc3BhbiB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDQwcHg7CiAgICAgIH0KCiAgICAgICNsaXN0LWl0ZW0uZXhjbHVkZWQgc3BhbiB7CiAgICAgICAgY29sb3I6ICM5OTk7CiAgICAgIH0KCiAgICAgICNsaXN0LWl0ZW0gc3Bhbi5lZGdlLWxhYmVsIHsKICAgICAgICBmbG9hdDogcmlnaHQ7CiAgICAgICAgZm9udC1zaXplOiAxMHB4OwogICAgICAgIG1hcmdpbi1sZWZ0OiAzcHg7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiA1cHg7CiAgICAgIH0KCiAgICAgIC5ub2RlLWljb24gewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDFweDsKICAgICAgICBsZWZ0OiAycHg7CiAgICAgIH0KCiAgICAgIC5mYWRlZCBzcGFuIHsKICAgICAgICBjb2xvcjogdmFyKC0tdGItZ3JhcGgtZmFkZWQpOwogICAgICB9CiAgICA8L3N0eWxlPgogICAgPGRpdgogICAgICBpZD0ibGlzdC1pdGVtIgogICAgICBvbi1tb3VzZW92ZXI9Il9ub2RlTGlzdGVuZXIiCiAgICAgIG9uLW1vdXNlb3V0PSJfbm9kZUxpc3RlbmVyIgogICAgICBvbi1jbGljaz0iX25vZGVMaXN0ZW5lciIKICAgID4KICAgICAgPGRpdiBjbGFzcyQ9Int7X2ZhZGVkQ2xhc3MoaXRlbVJlbmRlckluZm8pfX0iPgogICAgICAgIDx0Zi1ub2RlLWljb24KICAgICAgICAgIGNsYXNzPSJub2RlLWljb24iCiAgICAgICAgICBoZWlnaHQ9IjEyIgogICAgICAgICAgY29sb3ItYnk9IltbY29sb3JCeV1dIgogICAgICAgICAgY29sb3ItYnktcGFyYW1zPSJbW2NvbG9yQnlQYXJhbXNdXSIKICAgICAgICAgIG5vZGU9IltbaXRlbU5vZGVdXSIKICAgICAgICAgIHJlbmRlci1pbmZvPSJbW2l0ZW1SZW5kZXJJbmZvXV0iCiAgICAgICAgICB0ZW1wbGF0ZS1pbmRleD0iW1t0ZW1wbGF0ZUluZGV4XV0iCiAgICAgICAgPjwvdGYtbm9kZS1pY29uPgogICAgICAgIDxzcGFuIHRpdGxlJD0iW1tuYW1lXV0iPltbbmFtZV1dPC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJlZGdlLWxhYmVsIj5bW2VkZ2VMYWJlbF1dPC9zcGFuPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIGAsdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sWlp0LnByb3RvdHlwZSwiY2FyZE5vZGUiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sWlp0LnByb3RvdHlwZSwiaXRlbU5vZGUiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sWlp0LnByb3RvdHlwZSwiZWRnZUxhYmVsIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLFpadC5wcm90b3R5cGUsIml0ZW1SZW5kZXJJbmZvIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLFpadC5wcm90b3R5cGUsIm5hbWUiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmcsb2JzZXJ2ZXI6Il9pdGVtVHlwZUNoYW5nZWQifSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLFpadC5wcm90b3R5cGUsIml0ZW1UeXBlIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLFpadC5wcm90b3R5cGUsImNvbG9yQnkiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sWlp0LnByb3RvdHlwZSwiY29sb3JCeVBhcmFtcyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxaWnQucHJvdG90eXBlLCJ0ZW1wbGF0ZUluZGV4Iix2b2lkIDApLFpadD10KFtpKCJ0Zi1ub2RlLWxpc3QtaXRlbSIpXSxaWnQpO2xldCBKWnQ9Y2xhc3MgZXh0ZW5kcyhjcih3ZSkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9leHBhbmRlZD0hMCx0aGlzLl9vcGVuZWRDb250cm9sUHJlZD0hMSx0aGlzLl9vcGVuZWRDb250cm9sU3VjYz0hMSx0aGlzLl90ZW1wbGF0ZUluZGV4PW51bGx9ZXhwYW5kTm9kZSgpe3RoaXMuZmlyZSgiX25vZGUuZXhwYW5kIix0aGlzLm5vZGUpfV9nZXROb2RlKHQsZSl7cmV0dXJuIGUubm9kZSh0KX1fZ2V0Tm9kZVN0YXRzKHQsZSl7dmFyIG49dGhpcy5fZ2V0Tm9kZSh0LGUpO3JldHVybiBuP24uc3RhdHM6bnVsbH1fZ2V0VG90YWxNaWNyb3ModCl7cmV0dXJuIHQ/dC5nZXRUb3RhbE1pY3JvcygpOjB9Z2V0IF9oYXNEaXNwbGF5YWJsZU5vZGVTdGF0cygpe3JldHVybiBiJHQodGhpcy5fbm9kZVN0YXRzKX1nZXQgX25vZGVTdGF0c0Zvcm1hdHRlZEJ5dGVzKCl7dmFyIHQ9dGhpcy5fbm9kZVN0YXRzO2lmKHQmJnQudG90YWxCeXRlcylyZXR1cm4gdiR0KHQudG90YWxCeXRlcyxfJHQpfWdldCBfbm9kZVN0YXRzRm9ybWF0dGVkQ29tcHV0ZVRpbWUoKXt2YXIgdD10aGlzLl9ub2RlU3RhdHM7aWYodCYmdC5nZXRUb3RhbE1pY3JvcygpKXJldHVybiB2JHQodC5nZXRUb3RhbE1pY3JvcygpLHkkdCl9Z2V0IF9ub2RlU3RhdHNGb3JtYXR0ZWRPdXRwdXRTaXplcygpe3ZhciB0PXRoaXMuX25vZGVTdGF0cztpZih0JiZ0Lm91dHB1dFNpemUmJnQub3V0cHV0U2l6ZS5sZW5ndGgpcmV0dXJuIENlLmV4cG9ydHMubWFwKHQub3V0cHV0U2l6ZSwoZnVuY3Rpb24odCl7cmV0dXJuIDA9PT10Lmxlbmd0aD8ic2NhbGFyIjoiWyIrdC5qb2luKCIsICIpKyJdIn0pKX1fZ2V0UmVuZGVySW5mbyh0LGUpe3JldHVybiB0aGlzLnJlbmRlckhpZXJhcmNoeS5nZXRPckNyZWF0ZVJlbmRlck5vZGVCeU5hbWUodCl9Z2V0IF9hdHRyaWJ1dGVzKCl7dmFyIHQ9dGhpcy5fbm9kZTtpZih0aGlzLmFzeW5jKHRoaXMuX3Jlc2l6ZUxpc3QuYmluZCh0aGlzLCIjYXR0cmlidXRlc0xpc3QiKSksIXR8fCF0LmF0dHIpcmV0dXJuW107dmFyIGU9W107cmV0dXJuIENlLmV4cG9ydHMuZWFjaCh0LmF0dHIsKGZ1bmN0aW9uKHQpeyJfdG9vX2xhcmdlX2F0dHJzIj09PXQua2V5P2U9ZS5jb25jYXQodC52YWx1ZS5saXN0LnMubWFwKChmdW5jdGlvbih0KXtyZXR1cm57a2V5OnQsdmFsdWU6IlRvbyBsYXJnZSB0byBzaG93Li4uIn19KSkpOmUucHVzaCh7a2V5OnQua2V5LHZhbHVlOkpTT04uc3RyaW5naWZ5KHQudmFsdWUpfSl9KSksZX1nZXQgX2RldmljZSgpe3ZhciB0PXRoaXMuX25vZGU7cmV0dXJuIHQ/dC5kZXZpY2U6bnVsbH1nZXQgX3N1Y2Nlc3NvcnMoKXt2YXIgdD10aGlzLl9ub2RlLGU9dGhpcy5ncmFwaEhpZXJhcmNoeTtyZXR1cm4gdGhpcy5fcmVmcmVzaE5vZGVJdGVtTGlzdCgiaW5wdXRzTGlzdCIpLHQ/dGhpcy5fY29udmVydEVkZ2VMaXN0VG9FZGdlSW5mb0xpc3QoZS5nZXRTdWNjZXNzb3JzKHQubmFtZSksITEsdC5pc0dyb3VwTm9kZSk6e3JlZ3VsYXI6W10sY29udHJvbDpbXX19Z2V0IF9wcmVkZWNlc3NvcnMoKXt2YXIgdD10aGlzLl9ub2RlLGU9dGhpcy5ncmFwaEhpZXJhcmNoeTtyZXR1cm4gdGhpcy5fcmVmcmVzaE5vZGVJdGVtTGlzdCgib3V0cHV0c0xpc3QiKSx0P3RoaXMuX2NvbnZlcnRFZGdlTGlzdFRvRWRnZUluZm9MaXN0KGUuZ2V0UHJlZGVjZXNzb3JzKHQubmFtZSksITAsdC5pc0dyb3VwTm9kZSk6e3JlZ3VsYXI6W10sY29udHJvbDpbXX19Z2V0IF9mdW5jdGlvblVzYWdlcygpe3ZhciB0PXRoaXMuX25vZGUsZT10aGlzLmdyYXBoSGllcmFyY2h5O2lmKHRoaXMuX3JlZnJlc2hOb2RlSXRlbUxpc3QoImZ1bmN0aW9uVXNhZ2VzTGlzdCIpLCF0fHx0LnR5cGUhPT1BJHQuTUVUQSlyZXR1cm5bXTtjb25zdCBuPWUubGlicmFyeUZ1bmN0aW9uc1t0LmFzc29jaWF0ZWRGdW5jdGlvbl07cmV0dXJuIG4/bi51c2FnZXM6W119X3JlZnJlc2hOb2RlSXRlbUxpc3QodCl7dGhpcy5hc3luYyh0aGlzLl9yZXNpemVMaXN0LmJpbmQodGhpcyxgIyR7dH1gKSl9X2NvbnZlcnRFZGdlTGlzdFRvRWRnZUluZm9MaXN0KHQsZSxuKXt2YXIgaT10PT5DZS5leHBvcnRzLm1hcCh0LmJhc2VFZGdlTGlzdCwodD0+e3ZhciBuPWU/dC52OnQudztyZXR1cm57bmFtZTpuLG5vZGU6dGhpcy5fZ2V0Tm9kZShuLHRoaXMuZ3JhcGhIaWVyYXJjaHkpLGVkZ2VMYWJlbDpjWnQodCx0aGlzLnJlbmRlckhpZXJhcmNoeSkscmVuZGVySW5mbzp0aGlzLl9nZXRSZW5kZXJJbmZvKG4sdGhpcy5yZW5kZXJIaWVyYXJjaHkpfX0pKSxyPWZ1bmN0aW9uKHQpe3ZhciByPVtdO3JldHVybiBDZS5leHBvcnRzLmVhY2godCwodD0+e3ZhciBvPWU/dC52OnQudztuJiYxIT10LmJhc2VFZGdlTGlzdC5sZW5ndGg/ci5wdXNoKHtuYW1lOm8sbm9kZTp0aGlzLl9nZXROb2RlKG8sdGhpcy5ncmFwaEhpZXJhcmNoeSksZWRnZUxhYmVsOnVadCh0LHRoaXMucmVuZGVySGllcmFyY2h5KSxyZW5kZXJJbmZvOnRoaXMuX2dldFJlbmRlckluZm8obyx0aGlzLnJlbmRlckhpZXJhcmNoeSl9KTpyPXIuY29uY2F0KGkodCkpfSkpLHJ9LmJpbmQodGhpcyk7cmV0dXJue3JlZ3VsYXI6cih0LnJlZ3VsYXIpLGNvbnRyb2w6cih0LmNvbnRyb2wpfX1nZXQgX3N1Ym5vZGVzKCl7dmFyIHQ9dGhpcy5fbm9kZTtyZXR1cm4gdCYmdC5tZXRhZ3JhcGg/dC5tZXRhZ3JhcGgubm9kZXMoKTpudWxsfWdldCBfdG90YWxQcmVkZWNlc3NvcnMoKXt2YXIgdD10aGlzLl9wcmVkZWNlc3NvcnM7cmV0dXJuIHQucmVndWxhci5sZW5ndGgrdC5jb250cm9sLmxlbmd0aH1nZXQgX3RvdGFsU3VjY2Vzc29ycygpe3ZhciB0PXRoaXMuX3N1Y2Nlc3NvcnM7cmV0dXJuIHQucmVndWxhci5sZW5ndGgrdC5jb250cm9sLmxlbmd0aH1fdG9nZ2xlQ29udHJvbFByZWQoKXt0aGlzLl9vcGVuZWRDb250cm9sUHJlZD0hdGhpcy5fb3BlbmVkQ29udHJvbFByZWR9X3RvZ2dsZUNvbnRyb2xTdWNjKCl7dGhpcy5fb3BlbmVkQ29udHJvbFN1Y2M9IXRoaXMuX29wZW5lZENvbnRyb2xTdWNjfV90b2dnbGVFeHBhbmRlZCgpe3RoaXMuX2V4cGFuZGVkPSF0aGlzLl9leHBhbmRlZH1fZ2V0VG9nZ2xlSWNvbih0KXtyZXR1cm4gdD8iZXhwYW5kLWxlc3MiOiJleHBhbmQtbW9yZSJ9X3Jlc2V0U3RhdGUoKXt0aGlzLl9vcGVuZWRDb250cm9sUHJlZD0hMSx0aGlzLl9vcGVuZWRDb250cm9sU3VjYz0hMSx0aGlzLnNldCgiX2dyb3VwQnV0dG9uVGV4dCIseFp0KHRoaXMuX25vZGUpKX1fcmVzaXplTGlzdCh0KXt2YXIgZT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKHQpO2UmJmUuZmlyZSgiaXJvbi1yZXNpemUiKX1fdG9nZ2xlSW5jbHVkZSgpe3RoaXMuZmlyZSgibm9kZS10b2dnbGUtaW5jbHVzaW9uIix7bmFtZTp0aGlzLmdyYXBoTm9kZU5hbWV9KX1fbm9kZUluY2x1ZGVTdGF0ZUNoYW5nZWQodCxlKXt0aGlzLnNldCgiX2F1eEJ1dHRvblRleHQiLEokdCh0KSl9X3RvZ2dsZUdyb3VwKCl7dmFyIHQ9Ylp0KHRoaXMuX25vZGUpO3RoaXMuZmlyZSgibm9kZS10b2dnbGUtc2VyaWVzZ3JvdXAiLHtuYW1lOnR9KX1faXNMaWJyYXJ5RnVuY3Rpb24odCl7cmV0dXJuIHQmJnQubmFtZS5zdGFydHNXaXRoKFQkdCl9X2lzSW5TZXJpZXModCl7cmV0dXJuIHZadCh0KX1fZ3JhcGhIaWVyYXJjaHlDaGFuZ2VkKCl7dGhpcy5fdGVtcGxhdGVJbmRleD10aGlzLmdyYXBoSGllcmFyY2h5LmdldFRlbXBsYXRlSW5kZXgoKSx0aGlzLmdyYXBoSGllcmFyY2h5LmFkZExpc3RlbmVyKGlLdC5URU1QTEFURVNfVVBEQVRFRCwoKCk9Pnt0aGlzLl90ZW1wbGF0ZUluZGV4PXRoaXMuZ3JhcGhIaWVyYXJjaHkuZ2V0VGVtcGxhdGVJbmRleCgpfSkpfX07Slp0LnRlbXBsYXRlPXhlYAogICAgPHN0eWxlPgogICAgICAuc3ViLWxpc3QtZ3JvdXAgewogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgZm9udC1zaXplOiAxMnB0OwogICAgICAgIHBhZGRpbmctYm90dG9tOiA4cHg7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIH0KCiAgICAgIC5zdWItbGlzdCB7CiAgICAgICAgbWF4LWhlaWdodDogMzAwcHg7CiAgICAgICAgb3ZlcmZsb3cteTogc2Nyb2xsOwogICAgICB9CgogICAgICAuYXR0ci1sZWZ0IHsKICAgICAgICBmbG9hdDogbGVmdDsKICAgICAgICB3aWR0aDogMzAlOwogICAgICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDsKICAgICAgICBjb2xvcjogdmFyKC0tc2Vjb25kYXJ5LXRleHQtY29sb3IpOwogICAgICAgIGZvbnQtc2l6ZTogMTFwdDsKICAgICAgICBmb250LXdlaWdodDogNDAwOwogICAgICB9CgogICAgICAuYXR0ci1yaWdodCB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDMwJTsKICAgICAgICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7CiAgICAgICAgY29sb3I6IHZhcigtLXNlY29uZGFyeS10ZXh0LWNvbG9yKTsKICAgICAgICBmb250LXdlaWdodDogNDAwOwogICAgICB9CgogICAgICAuc3ViLWxpc3QtdGFibGUgewogICAgICAgIGRpc3BsYXk6IHRhYmxlOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICB9CgogICAgICAuc3ViLWxpc3QtdGFibGUtcm93IHsKICAgICAgICBkaXNwbGF5OiB0YWJsZS1yb3c7CiAgICAgIH0KCiAgICAgIC5zdWItbGlzdC10YWJsZS1yb3cgLnN1Yi1saXN0LXRhYmxlLWNlbGw6bGFzdC1jaGlsZCB7CiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7CiAgICAgIH0KCiAgICAgIC5zdWItbGlzdC10YWJsZS1jZWxsIHsKICAgICAgICBjb2xvcjogdmFyKC0tc2Vjb25kYXJ5LXRleHQtY29sb3IpOwogICAgICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7CiAgICAgICAgZm9udC1zaXplOiAxMXB0OwogICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICAgICAgbWF4LXdpZHRoOiAyMDBweDsKICAgICAgICBwYWRkaW5nOiAwIDRweDsKICAgICAgfQoKICAgICAgcGFwZXItaXRlbSB7CiAgICAgICAgcGFkZGluZzogMDsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1wcmltYXJ5LWJhY2tncm91bmQtY29sb3IpOwogICAgICB9CgogICAgICBwYXBlci1pdGVtLWJvZHlbdHdvLWxpbmVdIHsKICAgICAgICBtaW4taGVpZ2h0OiAwOwogICAgICAgIHBhZGRpbmc6IDhweCAxMnB4IDRweDsKICAgICAgfQoKICAgICAgLmV4cGFuZGVkSW5mbyB7CiAgICAgICAgcGFkZGluZzogOHB4IDEycHg7CiAgICAgIH0KCiAgICAgIC5jb250cm9sRGVwcyB7CiAgICAgICAgcGFkZGluZzogMCAwIDAgOHB4OwogICAgICB9CgogICAgICAubm9kZS1uYW1lIHsKICAgICAgICB3aGl0ZS1zcGFjZTogbm9ybWFsOwogICAgICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDsKICAgICAgICBmb250LXNpemU6IDE0cHQ7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgfQoKICAgICAgLm5vZGUtaWNvbiB7CiAgICAgICAgZmxvYXQ6IHJpZ2h0OwogICAgICB9CgogICAgICAuc3VidGl0bGUgewogICAgICAgIGNvbG9yOiB2YXIoLS1zZWNvbmRhcnktdGV4dC1jb2xvcik7CiAgICAgICAgZm9udC1zaXplOiAxMnB0OwogICAgICB9CgogICAgICAuY29udHJvbExpbmUgewogICAgICAgIGZvbnQtc2l6ZTogMTFwdDsKICAgICAgICBmb250LXdlaWdodDogNDAwOwogICAgICB9CgogICAgICAudG9nZ2xlLWJ1dHRvbiB7CiAgICAgICAgZmxvYXQ6IHJpZ2h0OwogICAgICAgIG1heC1oZWlnaHQ6IDIwcHg7CiAgICAgICAgbWF4LXdpZHRoOiAyMHB4OwogICAgICAgIHBhZGRpbmc6IDA7CiAgICAgIH0KCiAgICAgIC5jb250cm9sLXRvZ2dsZS1idXR0b24gewogICAgICAgIGZsb2F0OiBsZWZ0OwogICAgICAgIG1heC1oZWlnaHQ6IDIwcHg7CiAgICAgICAgbWF4LXdpZHRoOiAyMHB4OwogICAgICAgIHBhZGRpbmc6IDA7CiAgICAgIH0KCiAgICAgIC50b2dnbGUtaW5jbHVkZS1ncm91cCB7CiAgICAgICAgcGFkZGluZy10b3A6IDRweDsKICAgICAgfQoKICAgICAgLnRvZ2dsZS1pbmNsdWRlIHsKICAgICAgICBtYXJnaW46IDVweCA2cHg7CiAgICAgICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7CiAgICAgICAgcGFkZGluZzogNHB4IDZweDsKICAgICAgICBmb250LXNpemU6IDEwcHQ7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZhZmFmYTsKICAgICAgICBjb2xvcjogIzY2NjsKICAgICAgfQoKICAgICAgLnRvZ2dsZS1pbmNsdWRlOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1nb29nbGUteWVsbG93LTEwMCk7CiAgICAgIH0KCiAgICAgIC5ub24tY29udHJvbC1saXN0LWl0ZW0gewogICAgICAgIHBhZGRpbmctbGVmdDogMTBweDsKICAgICAgfQogICAgPC9zdHlsZT4KICAgIDxwYXBlci1pdGVtPgogICAgICA8cGFwZXItaXRlbS1ib2R5IHR3by1saW5lPgogICAgICAgIDxkaXY+CiAgICAgICAgICA8cGFwZXItaWNvbi1idXR0b24KICAgICAgICAgICAgaWNvbj0ie3tfZ2V0VG9nZ2xlSWNvbihfZXhwYW5kZWQpfX0iCiAgICAgICAgICAgIG9uLWNsaWNrPSJfdG9nZ2xlRXhwYW5kZWQiCiAgICAgICAgICAgIGNsYXNzPSJ0b2dnbGUtYnV0dG9uIgogICAgICAgICAgPgogICAgICAgICAgPC9wYXBlci1pY29uLWJ1dHRvbj4KICAgICAgICAgIDxkaXYgY2xhc3M9Im5vZGUtbmFtZSI+CiAgICAgICAgICAgIDx0Zi13YnItc3RyaW5nIHZhbHVlPSJbW19ub2RlLm5hbWVdXSIgZGVsaW1pdGVyLXBhdHRlcm49Ii8iPgogICAgICAgICAgICA8L3RmLXdici1zdHJpbmc+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IHNlY29uZGFyeT4KICAgICAgICAgIDx0Zi1ub2RlLWljb24KICAgICAgICAgICAgY2xhc3M9Im5vZGUtaWNvbiIKICAgICAgICAgICAgbm9kZT0iW1tfbm9kZV1dIgogICAgICAgICAgICByZW5kZXItaW5mbz0iW1tfZ2V0UmVuZGVySW5mbyhncmFwaE5vZGVOYW1lLCByZW5kZXJIaWVyYXJjaHkpXV0iCiAgICAgICAgICAgIGNvbG9yLWJ5PSJbW2NvbG9yQnldXSIKICAgICAgICAgICAgdGVtcGxhdGUtaW5kZXg9IltbX3RlbXBsYXRlSW5kZXhdXSIKICAgICAgICAgID48L3RmLW5vZGUtaWNvbj4KICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0ie3tfbm9kZS5vcH19Ij4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3VidGl0bGUiPgogICAgICAgICAgICAgIE9wZXJhdGlvbjoKICAgICAgICAgICAgICA8c3Bhbj5bW19ub2RlLm9wXV08L3NwYW4+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0ie3tfbm9kZS5tZXRhZ3JhcGh9fSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InN1YnRpdGxlIj4KICAgICAgICAgICAgICBTdWJncmFwaDoKICAgICAgICAgICAgICA8c3Bhbj5bW19ub2RlLmNhcmRpbmFsaXR5XV08L3NwYW4+IG5vZGVzCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8L2Rpdj4KICAgICAgPC9wYXBlci1pdGVtLWJvZHk+CiAgICA8L3BhcGVyLWl0ZW0+CiAgICA8aXJvbi1jb2xsYXBzZSBvcGVuZWQ9Int7X2V4cGFuZGVkfX0iPgogICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9Int7X2V4cGFuZGVkfX0iIHJlc3RhbXA9InRydWUiPgogICAgICAgIDxkaXYgY2xhc3M9ImV4cGFuZGVkSW5mbyI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzdWItbGlzdC1ncm91cCBhdHRyaWJ1dGVzIj4KICAgICAgICAgICAgQXR0cmlidXRlcyAoPHNwYW4+W1tfYXR0cmlidXRlcy5sZW5ndGhdXTwvc3Bhbj4pCiAgICAgICAgICAgIDxpcm9uLWxpc3QKICAgICAgICAgICAgICBjbGFzcz0ic3ViLWxpc3QiCiAgICAgICAgICAgICAgaWQ9ImF0dHJpYnV0ZXNMaXN0IgogICAgICAgICAgICAgIGl0ZW1zPSJbW19hdHRyaWJ1dGVzXV0iCiAgICAgICAgICAgID4KICAgICAgICAgICAgICA8dGVtcGxhdGU+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhdHRyLWxlZnQiPltbaXRlbS5rZXldXTwvZGl2PgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhdHRyLXJpZ2h0Ij5bW2l0ZW0udmFsdWVdXTwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgPC9pcm9uLWxpc3Q+CiAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9Int7X2RldmljZX19Ij4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3ViLWxpc3QtZ3JvdXAgZGV2aWNlIj4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhdHRyLWxlZnQiPkRldmljZTwvZGl2PgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImF0dHItcmlnaHQiPltbX2RldmljZV1dPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC90ZW1wbGF0ZT4KCiAgICAgICAgICA8ZGl2IGNsYXNzPSJzdWItbGlzdC1ncm91cCBwcmVkZWNlc3NvcnMiPgogICAgICAgICAgICBJbnB1dHMgKDxzcGFuPltbX3RvdGFsUHJlZGVjZXNzb3JzXV08L3NwYW4+KQogICAgICAgICAgICA8aXJvbi1saXN0CiAgICAgICAgICAgICAgY2xhc3M9InN1Yi1saXN0IgogICAgICAgICAgICAgIGlkPSJpbnB1dHNMaXN0IgogICAgICAgICAgICAgIGl0ZW1zPSJbW19wcmVkZWNlc3NvcnMucmVndWxhcl1dIgogICAgICAgICAgICA+CiAgICAgICAgICAgICAgPHRlbXBsYXRlPgogICAgICAgICAgICAgICAgPHRmLW5vZGUtbGlzdC1pdGVtCiAgICAgICAgICAgICAgICAgIGNsYXNzPSJub24tY29udHJvbC1saXN0LWl0ZW0iCiAgICAgICAgICAgICAgICAgIGNhcmQtbm9kZT0iW1tfbm9kZV1dIgogICAgICAgICAgICAgICAgICBpdGVtLW5vZGU9IltbaXRlbS5ub2RlXV0iCiAgICAgICAgICAgICAgICAgIGVkZ2UtbGFiZWw9IltbaXRlbS5lZGdlTGFiZWxdXSIKICAgICAgICAgICAgICAgICAgaXRlbS1yZW5kZXItaW5mbz0iW1tpdGVtLnJlbmRlckluZm9dXSIKICAgICAgICAgICAgICAgICAgbmFtZT0iW1tpdGVtLm5hbWVdXSIKICAgICAgICAgICAgICAgICAgaXRlbS10eXBlPSJwcmVkZWNlc3NvcnMiCiAgICAgICAgICAgICAgICAgIGNvbG9yLWJ5PSJbW2NvbG9yQnldXSIKICAgICAgICAgICAgICAgICAgdGVtcGxhdGUtaW5kZXg9IltbX3RlbXBsYXRlSW5kZXhdXSIKICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgIDwvdGYtbm9kZS1saXN0LWl0ZW0+CiAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgPC9pcm9uLWxpc3Q+CiAgICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfcHJlZGVjZXNzb3JzLmNvbnRyb2wubGVuZ3RoXV0iPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRyb2xEZXBzIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRyb2xMaW5lIj4KICAgICAgICAgICAgICAgICAgPHBhcGVyLWljb24tYnV0dG9uCiAgICAgICAgICAgICAgICAgICAgaWNvbj0ie3tfZ2V0VG9nZ2xlSWNvbihfb3BlbmVkQ29udHJvbFByZWQpfX0iCiAgICAgICAgICAgICAgICAgICAgb24tY2xpY2s9Il90b2dnbGVDb250cm9sUHJlZCIKICAgICAgICAgICAgICAgICAgICBjbGFzcz0iY29udHJvbC10b2dnbGUtYnV0dG9uIgogICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgIDwvcGFwZXItaWNvbi1idXR0b24+CiAgICAgICAgICAgICAgICAgIENvbnRyb2wgZGVwZW5kZW5jaWVzCiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxpcm9uLWNvbGxhcHNlIG9wZW5lZD0ie3tfb3BlbmVkQ29udHJvbFByZWR9fSIgbm8tYW5pbWF0aW9uPgogICAgICAgICAgICAgICAgICA8dGVtcGxhdGUKICAgICAgICAgICAgICAgICAgICBpcz0iZG9tLWlmIgogICAgICAgICAgICAgICAgICAgIGlmPSJ7e19vcGVuZWRDb250cm9sUHJlZH19IgogICAgICAgICAgICAgICAgICAgIHJlc3RhbXA9InRydWUiCiAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICA8aXJvbi1saXN0CiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0ic3ViLWxpc3QiCiAgICAgICAgICAgICAgICAgICAgICBpdGVtcz0iW1tfcHJlZGVjZXNzb3JzLmNvbnRyb2xdXSIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICA8dGVtcGxhdGU+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0Zi1ub2RlLWxpc3QtaXRlbQogICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmQtbm9kZT0iW1tfbm9kZV1dIgogICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0tbm9kZT0iW1tpdGVtLm5vZGVdXSIKICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLXJlbmRlci1pbmZvPSJbW2l0ZW0ucmVuZGVySW5mb11dIgogICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9IltbaXRlbS5uYW1lXV0iCiAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS10eXBlPSJwcmVkZWNlc3NvcnMiCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3ItYnk9IltbY29sb3JCeV1dIgogICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlLWluZGV4PSJbW190ZW1wbGF0ZUluZGV4XV0iCiAgICAgICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgPC90Zi1ub2RlLWxpc3QtaXRlbT4KICAgICAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgICAgICAgICAgPC9pcm9uLWxpc3Q+CiAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgICAgICA8L2lyb24tY29sbGFwc2U+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICA8ZGl2IGNsYXNzPSJzdWItbGlzdC1ncm91cCBzdWNjZXNzb3JzIj4KICAgICAgICAgICAgT3V0cHV0cyAoPHNwYW4+W1tfdG90YWxTdWNjZXNzb3JzXV08L3NwYW4+KQogICAgICAgICAgICA8aXJvbi1saXN0CiAgICAgICAgICAgICAgY2xhc3M9InN1Yi1saXN0IgogICAgICAgICAgICAgIGlkPSJvdXRwdXRzTGlzdCIKICAgICAgICAgICAgICBpdGVtcz0iW1tfc3VjY2Vzc29ycy5yZWd1bGFyXV0iCiAgICAgICAgICAgID4KICAgICAgICAgICAgICA8dGVtcGxhdGU+CiAgICAgICAgICAgICAgICA8dGYtbm9kZS1saXN0LWl0ZW0KICAgICAgICAgICAgICAgICAgY2xhc3M9Im5vbi1jb250cm9sLWxpc3QtaXRlbSIKICAgICAgICAgICAgICAgICAgY2FyZC1ub2RlPSJbW19ub2RlXV0iCiAgICAgICAgICAgICAgICAgIGl0ZW0tbm9kZT0iW1tpdGVtLm5vZGVdXSIKICAgICAgICAgICAgICAgICAgZWRnZS1sYWJlbD0iW1tpdGVtLmVkZ2VMYWJlbF1dIgogICAgICAgICAgICAgICAgICBpdGVtLXJlbmRlci1pbmZvPSJbW2l0ZW0ucmVuZGVySW5mb11dIgogICAgICAgICAgICAgICAgICBuYW1lPSJbW2l0ZW0ubmFtZV1dIgogICAgICAgICAgICAgICAgICBpdGVtLXR5cGU9InN1Y2Nlc3NvciIKICAgICAgICAgICAgICAgICAgY29sb3ItYnk9IltbY29sb3JCeV1dIgogICAgICAgICAgICAgICAgICB0ZW1wbGF0ZS1pbmRleD0iW1tfdGVtcGxhdGVJbmRleF1dIgogICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgPC90Zi1ub2RlLWxpc3QtaXRlbT4KICAgICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICA8L2lyb24tbGlzdD4KICAgICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19zdWNjZXNzb3JzLmNvbnRyb2wubGVuZ3RoXV0iPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRyb2xEZXBzIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRyb2xMaW5lIj4KICAgICAgICAgICAgICAgICAgPHBhcGVyLWljb24tYnV0dG9uCiAgICAgICAgICAgICAgICAgICAgaWNvbj0ie3tfZ2V0VG9nZ2xlSWNvbihfb3BlbmVkQ29udHJvbFN1Y2MpfX0iCiAgICAgICAgICAgICAgICAgICAgb24tY2xpY2s9Il90b2dnbGVDb250cm9sU3VjYyIKICAgICAgICAgICAgICAgICAgICBjbGFzcz0iY29udHJvbC10b2dnbGUtYnV0dG9uIgogICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgIDwvcGFwZXItaWNvbi1idXR0b24+CiAgICAgICAgICAgICAgICAgIENvbnRyb2wgZGVwZW5kZW5jaWVzCiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxpcm9uLWNvbGxhcHNlIG9wZW5lZD0ie3tfb3BlbmVkQ29udHJvbFN1Y2N9fSIgbm8tYW5pbWF0aW9uPgogICAgICAgICAgICAgICAgICA8dGVtcGxhdGUKICAgICAgICAgICAgICAgICAgICBpcz0iZG9tLWlmIgogICAgICAgICAgICAgICAgICAgIGlmPSJ7e19vcGVuZWRDb250cm9sU3VjY319IgogICAgICAgICAgICAgICAgICAgIHJlc3RhbXA9InRydWUiCiAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICA8aXJvbi1saXN0IGNsYXNzPSJzdWItbGlzdCIgaXRlbXM9IltbX3N1Y2Nlc3NvcnMuY29udHJvbF1dIj4KICAgICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZT4KICAgICAgICAgICAgICAgICAgICAgICAgPHRmLW5vZGUtbGlzdC1pdGVtCiAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZC1ub2RlPSJbW19ub2RlXV0iCiAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS1ub2RlPSJbW2l0ZW0ubm9kZV1dIgogICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0tcmVuZGVyLWluZm89IltbaXRlbS5yZW5kZXJJbmZvXV0iCiAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT0iW1tpdGVtLm5hbWVdXSIKICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLXR5cGU9InN1Y2Nlc3NvcnMiCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3ItYnk9IltbY29sb3JCeV1dIgogICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlLWluZGV4PSJbW190ZW1wbGF0ZUluZGV4XV0iCiAgICAgICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgPC90Zi1ub2RlLWxpc3QtaXRlbT4KICAgICAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgICAgICAgICAgPC9pcm9uLWxpc3Q+CiAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgICAgICA8L2lyb24tY29sbGFwc2U+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0ie3tfaGFzRGlzcGxheWFibGVOb2RlU3RhdHN9fSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InN1Yi1saXN0LWdyb3VwIG5vZGUtc3RhdHMiPgogICAgICAgICAgICAgIE5vZGUgU3RhdHMKICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdWItbGlzdC10YWJsZSI+CiAgICAgICAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9Int7X25vZGVTdGF0cy50b3RhbEJ5dGVzfX0iPgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdWItbGlzdC10YWJsZS1yb3ciPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN1Yi1saXN0LXRhYmxlLWNlbGwiPk1lbW9yeTwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN1Yi1saXN0LXRhYmxlLWNlbGwiPgogICAgICAgICAgICAgICAgICAgICAgW1tfbm9kZVN0YXRzRm9ybWF0dGVkQnl0ZXNdXQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9Int7X2dldFRvdGFsTWljcm9zKF9ub2RlU3RhdHMpfX0iPgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdWItbGlzdC10YWJsZS1yb3ciPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN1Yi1saXN0LXRhYmxlLWNlbGwiPkNvbXB1dGUgVGltZTwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN1Yi1saXN0LXRhYmxlLWNlbGwiPgogICAgICAgICAgICAgICAgICAgICAgW1tfbm9kZVN0YXRzRm9ybWF0dGVkQ29tcHV0ZVRpbWVdXQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9Int7X25vZGVTdGF0cy5vdXRwdXRTaXplfX0iPgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdWItbGlzdC10YWJsZS1yb3ciPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN1Yi1saXN0LXRhYmxlLWNlbGwiPlRlbnNvciBPdXRwdXQgU2l6ZXM8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdWItbGlzdC10YWJsZS1jZWxsIj4KICAgICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZQogICAgICAgICAgICAgICAgICAgICAgICBpcz0iZG9tLXJlcGVhdCIKICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXM9Int7X25vZGVTdGF0c0Zvcm1hdHRlZE91dHB1dFNpemVzfX0iCiAgICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIFtbaXRlbV1dIDxiciAvPgogICAgICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvdGVtcGxhdGU+CgogICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19mdW5jdGlvblVzYWdlcy5sZW5ndGhdXSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InN1Yi1saXN0LWdyb3VwIHByZWRlY2Vzc29ycyI+CiAgICAgICAgICAgICAgVXNhZ2VzIG9mIHRoZSBGdW5jdGlvbiAoPHNwYW4+W1tfZnVuY3Rpb25Vc2FnZXMubGVuZ3RoXV08L3NwYW4+KQogICAgICAgICAgICAgIDxpcm9uLWxpc3QKICAgICAgICAgICAgICAgIGNsYXNzPSJzdWItbGlzdCIKICAgICAgICAgICAgICAgIGlkPSJmdW5jdGlvblVzYWdlc0xpc3QiCiAgICAgICAgICAgICAgICBpdGVtcz0iW1tfZnVuY3Rpb25Vc2FnZXNdXSIKICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICA8dGVtcGxhdGU+CiAgICAgICAgICAgICAgICAgIDx0Zi1ub2RlLWxpc3QtaXRlbQogICAgICAgICAgICAgICAgICAgIGNsYXNzPSJub24tY29udHJvbC1saXN0LWl0ZW0iCiAgICAgICAgICAgICAgICAgICAgY2FyZC1ub2RlPSJbW19ub2RlXV0iCiAgICAgICAgICAgICAgICAgICAgaXRlbS1ub2RlPSJbW2l0ZW1dXSIKICAgICAgICAgICAgICAgICAgICBuYW1lPSJbW2l0ZW0ubmFtZV1dIgogICAgICAgICAgICAgICAgICAgIGl0ZW0tdHlwZT0iZnVuY3Rpb25Vc2FnZXMiCiAgICAgICAgICAgICAgICAgICAgY29sb3ItYnk9IltbY29sb3JCeV1dIgogICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlLWluZGV4PSJbW190ZW1wbGF0ZUluZGV4XV0iCiAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgPC90Zi1ub2RlLWxpc3QtaXRlbT4KICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgICAgPC9pcm9uLWxpc3Q+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC90ZW1wbGF0ZT4KCiAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbIV9pc0xpYnJhcnlGdW5jdGlvbihfbm9kZSldXSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRvZ2dsZS1pbmNsdWRlLWdyb3VwIj4KICAgICAgICAgICAgICA8cGFwZXItYnV0dG9uCiAgICAgICAgICAgICAgICByYWlzZWQKICAgICAgICAgICAgICAgIGNsYXNzPSJ0b2dnbGUtaW5jbHVkZSIKICAgICAgICAgICAgICAgIG9uLWNsaWNrPSJfdG9nZ2xlSW5jbHVkZSIKICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICA8c3Bhbj5bW19hdXhCdXR0b25UZXh0XV08L3NwYW4+CiAgICAgICAgICAgICAgPC9wYXBlci1idXR0b24+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC90ZW1wbGF0ZT4KCiAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9Int7X2lzSW5TZXJpZXMoX25vZGUpfX0iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b2dnbGUtaW5jbHVkZS1ncm91cCI+CiAgICAgICAgICAgICAgPHBhcGVyLWJ1dHRvbgogICAgICAgICAgICAgICAgcmFpc2VkCiAgICAgICAgICAgICAgICBjbGFzcz0idG9nZ2xlLWluY2x1ZGUiCiAgICAgICAgICAgICAgICBvbi1jbGljaz0iX3RvZ2dsZUdyb3VwIgogICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgIDxzcGFuPltbX2dyb3VwQnV0dG9uVGV4dF1dPC9zcGFuPgogICAgICAgICAgICAgIDwvcGFwZXItYnV0dG9uPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvdGVtcGxhdGU+CiAgICA8L2lyb24tY29sbGFwc2U+CiAgYCx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxKWnQucHJvdG90eXBlLCJncmFwaE5vZGVOYW1lIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLHJLdCldLEpadC5wcm90b3R5cGUsImdyYXBoSGllcmFyY2h5Iix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLEpadC5wcm90b3R5cGUsInJlbmRlckhpZXJhcmNoeSIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxKWnQucHJvdG90eXBlLCJjb2xvckJ5Iix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0LGNvbXB1dGVkOiJfZ2V0Tm9kZShncmFwaE5vZGVOYW1lLCBncmFwaEhpZXJhcmNoeSkiLG9ic2VydmVyOiJfcmVzZXRTdGF0ZSJ9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sSlp0LnByb3RvdHlwZSwiX25vZGUiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3QsY29tcHV0ZWQ6Il9nZXROb2RlU3RhdHMoZ3JhcGhOb2RlTmFtZSwgZ3JhcGhIaWVyYXJjaHkpIixvYnNlcnZlcjoiX3Jlc2V0U3RhdGUifSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLEpadC5wcm90b3R5cGUsIl9ub2RlU3RhdHMiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXIsb2JzZXJ2ZXI6Il9ub2RlSW5jbHVkZVN0YXRlQ2hhbmdlZCJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sSlp0LnByb3RvdHlwZSwibm9kZUluY2x1ZGUiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxKWnQucHJvdG90eXBlLCJfZXhwYW5kZWQiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxKWnQucHJvdG90eXBlLCJfb3BlbmVkQ29udHJvbFByZWQiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxKWnQucHJvdG90eXBlLCJfb3BlbmVkQ29udHJvbFN1Y2MiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sSlp0LnByb3RvdHlwZSwiX2F1eEJ1dHRvblRleHQiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sSlp0LnByb3RvdHlwZSwiX2dyb3VwQnV0dG9uVGV4dCIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbildLEpadC5wcm90b3R5cGUsIl90ZW1wbGF0ZUluZGV4Iix2b2lkIDApLHQoW3MoIl9ub2RlU3RhdHMiKSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sSlp0LnByb3RvdHlwZSwiX2hhc0Rpc3BsYXlhYmxlTm9kZVN0YXRzIixudWxsKSx0KFtzKCJfbm9kZVN0YXRzIiksZSgiZGVzaWduOnR5cGUiLFN0cmluZyksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sSlp0LnByb3RvdHlwZSwiX25vZGVTdGF0c0Zvcm1hdHRlZEJ5dGVzIixudWxsKSx0KFtzKCJfbm9kZVN0YXRzIiksZSgiZGVzaWduOnR5cGUiLFN0cmluZyksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sSlp0LnByb3RvdHlwZSwiX25vZGVTdGF0c0Zvcm1hdHRlZENvbXB1dGVUaW1lIixudWxsKSx0KFtzKCJfbm9kZVN0YXRzIiksZSgiZGVzaWduOnR5cGUiLEFycmF5KSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxKWnQucHJvdG90eXBlLCJfbm9kZVN0YXRzRm9ybWF0dGVkT3V0cHV0U2l6ZXMiLG51bGwpLHQoW3MoIl9ub2RlIiksZSgiZGVzaWduOnR5cGUiLEFycmF5KSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxKWnQucHJvdG90eXBlLCJfYXR0cmlidXRlcyIsbnVsbCksdChbcygiX25vZGUiKSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxKWnQucHJvdG90eXBlLCJfZGV2aWNlIixudWxsKSx0KFtzKCJfbm9kZSIsImdyYXBoSGllcmFyY2h5IiksZSgiZGVzaWduOnR5cGUiLE9iamVjdCksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sSlp0LnByb3RvdHlwZSwiX3N1Y2Nlc3NvcnMiLG51bGwpLHQoW3MoIl9ub2RlIiwiZ3JhcGhIaWVyYXJjaHkiKSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxKWnQucHJvdG90eXBlLCJfcHJlZGVjZXNzb3JzIixudWxsKSx0KFtzKCJfbm9kZSIsImdyYXBoSGllcmFyY2h5IiksZSgiZGVzaWduOnR5cGUiLEFycmF5KSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxKWnQucHJvdG90eXBlLCJfZnVuY3Rpb25Vc2FnZXMiLG51bGwpLHQoW3MoIl9ub2RlIiksZSgiZGVzaWduOnR5cGUiLEFycmF5KSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxKWnQucHJvdG90eXBlLCJfc3Vibm9kZXMiLG51bGwpLHQoW3MoIl9wcmVkZWNlc3NvcnMiKSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxKWnQucHJvdG90eXBlLCJfdG90YWxQcmVkZWNlc3NvcnMiLG51bGwpLHQoW3MoIl9zdWNjZXNzb3JzIiksZSgiZGVzaWduOnR5cGUiLE51bWJlciksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sSlp0LnByb3RvdHlwZSwiX3RvdGFsU3VjY2Vzc29ycyIsbnVsbCksdChbYSgiZ3JhcGhIaWVyYXJjaHkiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLEpadC5wcm90b3R5cGUsIl9ncmFwaEhpZXJhcmNoeUNoYW5nZWQiLG51bGwpLEpadD10KFtpKCJ0Zi1ub2RlLWluZm8iKV0sSlp0KTtsZXQgUVp0PWNsYXNzIGV4dGVuZHMoY3Iod2UpKXtyZWFkeSgpe3N1cGVyLnJlYWR5KCksdGhpcy5hZGRFdmVudExpc3RlbmVyKCJub2RlLWxpc3QtaXRlbS1jbGljayIsdGhpcy5fbm9kZUxpc3RJdGVtQ2xpY2tlZC5iaW5kKHRoaXMpKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoIm5vZGUtbGlzdC1pdGVtLW1vdXNlb3ZlciIsdGhpcy5fbm9kZUxpc3RJdGVtTW91c2VvdmVyLmJpbmQodGhpcykpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigibm9kZS1saXN0LWl0ZW0tbW91c2VvdXQiLHRoaXMuX25vZGVMaXN0SXRlbU1vdXNlb3V0LmJpbmQodGhpcykpfV9ub2RlTGlzdEl0ZW1DbGlja2VkKHQpe3RoaXMuc2VsZWN0ZWROb2RlPXQuZGV0YWlsLm5vZGVOYW1lfV9ub2RlTGlzdEl0ZW1Nb3VzZW92ZXIodCl7dGhpcy5oaWdobGlnaHRlZE5vZGU9dC5kZXRhaWwubm9kZU5hbWV9X25vZGVMaXN0SXRlbU1vdXNlb3V0KCl7dGhpcy5oaWdobGlnaHRlZE5vZGU9bnVsbH1faGVhbHRoUGlsbHNBdmFpbGFibGUodCxlKXtyZXR1cm4gdCYmZSYmT2JqZWN0LmtleXMoZSkubGVuZ3RoPjB9X2VxdWFscyh0LGUpe3JldHVybiB0PT09ZX19O1FadC50ZW1wbGF0ZT14ZWAKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXNlY29uZGFyeS1iYWNrZ3JvdW5kLWNvbG9yKTsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgbWFyZ2luOiAwOwogICAgICAgIHBhZGRpbmc6IDA7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgbWF4LWhlaWdodDogNjUwcHg7CiAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgIH0KCiAgICAgIGgyIHsKICAgICAgICBwYWRkaW5nOiAwOwogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICBtYXJnaW46IDA7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9Int7c2VsZWN0ZWROb2RlfX0iPgogICAgICA8cGFwZXItbWF0ZXJpYWwgZWxldmF0aW9uPSIxIiBjbGFzcz0iY2FyZCI+CiAgICAgICAgPHRmLW5vZGUtaW5mbwogICAgICAgICAgZ3JhcGgtaGllcmFyY2h5PSJbW2dyYXBoSGllcmFyY2h5XV0iCiAgICAgICAgICByZW5kZXItaGllcmFyY2h5PSJbW3JlbmRlckhpZXJhcmNoeV1dIgogICAgICAgICAgZmxhdC1ncmFwaD0iW1tncmFwaF1dIgogICAgICAgICAgZ3JhcGgtbm9kZS1uYW1lPSJbW3NlbGVjdGVkTm9kZV1dIgogICAgICAgICAgbm9kZS1pbmNsdWRlPSJbW3NlbGVjdGVkTm9kZUluY2x1ZGVdXSIKICAgICAgICAgIGhpZ2hsaWdodGVkLW5vZGU9Int7aGlnaGxpZ2h0ZWROb2RlfX0iCiAgICAgICAgICBjb2xvci1ieT0iW1tjb2xvckJ5XV0iCiAgICAgICAgPgogICAgICAgIDwvdGYtbm9kZS1pbmZvPgogICAgICA8L3BhcGVyLW1hdGVyaWFsPgogICAgPC90ZW1wbGF0ZT4KICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfZXF1YWxzKGNvbG9yQnksICdvcF9jb21wYXRpYmlsaXR5JyldXSI+CiAgICAgIDx0Zi1ncmFwaC1vcC1jb21wYXQtY2FyZAogICAgICAgIGdyYXBoLWhpZXJhcmNoeT0iW1tncmFwaEhpZXJhcmNoeV1dIgogICAgICAgIHJlbmRlci1oaWVyYXJjaHk9IltbcmVuZGVySGllcmFyY2h5XV0iCiAgICAgICAgY29sb3ItYnk9IltbY29sb3JCeV1dIgogICAgICAgIG5vZGUtdGl0bGU9IltbY29tcGF0Tm9kZVRpdGxlXV0iCiAgICAgID4KICAgICAgPC90Zi1ncmFwaC1vcC1jb21wYXQtY2FyZD4KICAgIDwvdGVtcGxhdGU+CiAgICA8dGVtcGxhdGUKICAgICAgaXM9ImRvbS1pZiIKICAgICAgaWY9IltbX2hlYWx0aFBpbGxzQXZhaWxhYmxlKGRlYnVnZ2VyRGF0YUVuYWJsZWQsIG5vZGVOYW1lc1RvSGVhbHRoUGlsbHMpXV0iCiAgICA+CiAgICAgIDx0Zi1ncmFwaC1kZWJ1Z2dlci1kYXRhLWNhcmQKICAgICAgICByZW5kZXItaGllcmFyY2h5PSJbW3JlbmRlckhpZXJhcmNoeV1dIgogICAgICAgIGRlYnVnZ2VyLW51bWVyaWMtYWxlcnRzPSJbW2RlYnVnZ2VyTnVtZXJpY0FsZXJ0c11dIgogICAgICAgIG5vZGUtbmFtZXMtdG8taGVhbHRoLXBpbGxzPSJbW25vZGVOYW1lc1RvSGVhbHRoUGlsbHNdXSIKICAgICAgICBzZWxlY3RlZC1ub2RlPSJ7e3NlbGVjdGVkTm9kZX19IgogICAgICAgIGhpZ2hsaWdodGVkLW5vZGU9Int7aGlnaGxpZ2h0ZWROb2RlfX0iCiAgICAgICAgYXJlLWhlYWx0aC1waWxscy1sb2FkaW5nPSJbW2FyZUhlYWx0aFBpbGxzTG9hZGluZ11dIgogICAgICAgIGFsbC1zdGVwcy1tb2RlLWVuYWJsZWQ9Int7YWxsU3RlcHNNb2RlRW5hYmxlZH19IgogICAgICAgIHNwZWNpZmljLWhlYWx0aC1waWxsLXN0ZXA9Int7c3BlY2lmaWNIZWFsdGhQaWxsU3RlcH19IgogICAgICAgIGhlYWx0aC1waWxsLXN0ZXAtaW5kZXg9Int7aGVhbHRoUGlsbFN0ZXBJbmRleH19IgogICAgICA+CiAgICAgIDwvdGYtZ3JhcGgtZGVidWdnZXItZGF0YS1jYXJkPgogICAgPC90ZW1wbGF0ZT4KICBgLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLFFadC5wcm90b3R5cGUsInRpdGxlIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLHJLdCldLFFadC5wcm90b3R5cGUsImdyYXBoSGllcmFyY2h5Iix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLEkkdCldLFFadC5wcm90b3R5cGUsImdyYXBoIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLEFLdCldLFFadC5wcm90b3R5cGUsInJlbmRlckhpZXJhcmNoeSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxRWnQucHJvdG90eXBlLCJub2RlTmFtZXNUb0hlYWx0aFBpbGxzIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyLG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxRWnQucHJvdG90eXBlLCJoZWFsdGhQaWxsU3RlcEluZGV4Iix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLFFadC5wcm90b3R5cGUsImNvbG9yQnkiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sUVp0LnByb3RvdHlwZSwiY29tcGF0Tm9kZVRpdGxlIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nLG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxRWnQucHJvdG90eXBlLCJzZWxlY3RlZE5vZGUiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmcsbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLFFadC5wcm90b3R5cGUsImhpZ2hsaWdodGVkTm9kZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcixub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sUVp0LnByb3RvdHlwZSwic2VsZWN0ZWROb2RlSW5jbHVkZSIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLFFadC5wcm90b3R5cGUsImRlYnVnZ2VyRGF0YUVuYWJsZWQiLHZvaWQgMCksUVp0PXQoW2koInRmLWdyYXBoLWluZm8iKV0sUVp0KTtjb25zdCB0SnQ9e01BWF9OT0RFX0NPVU5UOjFlNCxNQVhfRURHRV9DT1VOVDoxZTR9O2xldCBlSnQ9Y2xhc3MgZXh0ZW5kcyhjcih3ZSkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLmhpZXJhcmNoeVBhcmFtcz1hS3QsdGhpcy5hbGxTdGVwc01vZGVFbmFibGVkPSExLHRoaXMuc3BlY2lmaWNIZWFsdGhQaWxsU3RlcD0wLHRoaXMuY29tcGF0Tm9kZVRpdGxlPSJUUFUgQ29tcGF0aWJpbGl0eSJ9Zml0KCl7dGhpcy4kLmdyYXBoLmZpdCgpfWRvd25sb2FkQXNJbWFnZSh0KXtyZXR1cm4gbih0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKigpe2NvbnN0IGU9eWllbGQgdGhpcy4kLmdyYXBoLmdldEltYWdlQmxvYigpLG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpO24uaHJlZj1VUkwuY3JlYXRlT2JqZWN0VVJMKGUpLG4uZG93bmxvYWQ9dCxuLmNsaWNrKCksVVJMLnJldm9rZU9iamVjdFVSTChuLmhyZWYpfSkpfV9pc05vdENvbXBsZXRlKHQpe3JldHVybiB0LnZhbHVlPDEwMH1fZ2V0Q29udGFpbmVyQ2xhc3ModCl7dmFyIGU9ImNvbnRhaW5lciI7cmV0dXJuIHQuZXJyb3ImJihlKz0iIGVycm9yIiksdGhpcy5faXNOb3RDb21wbGV0ZSh0KSYmKGUrPSIgbG9hZGluZyIpLGV9X29uTm9kZUluY2x1c2lvblRvZ2dsZWQodCl7dGhpcy4kLmdyYXBoLm5vZGVUb2dnbGVFeHRyYWN0KHQuZGV0YWlsLm5hbWUpfV9vbk5vZGVTZXJpZXNHcm91cFRvZ2dsZWQodCl7dGhpcy4kLmdyYXBoLm5vZGVUb2dnbGVTZXJpZXNHcm91cCh0LmRldGFpbC5uYW1lKX1fdXBkYXRlTm9kZUluY2x1ZGUoKXtjb25zdCB0PXRoaXMucmVuZGVySGllcmFyY2h5P3RoaXMucmVuZGVySGllcmFyY2h5LmdldE5vZGVCeU5hbWUodGhpcy5zZWxlY3RlZE5vZGUpOm51bGw7dGhpcy5fc2VsZWN0ZWROb2RlSW5jbHVkZT10P3QuaW5jbHVkZTprJHQuVU5TUEVDSUZJRUR9X3NsaW1HcmFwaENoYW5nZWQoKXtpZighdGhpcy5ncmFwaClyZXR1cm47Y29uc3R7TUFYX05PREVfQ09VTlQ6dCxNQVhfRURHRV9DT1VOVDplfT10SnQ7T2JqZWN0LmtleXModGhpcy5ncmFwaC5ub2RlcykubGVuZ3RoPnQmJnRoaXMuZ3JhcGguZWRnZXMubGVuZ3RoPmUmJnRoaXMuY29sb3JCeT09PXJadC5TVFJVQ1RVUkUmJih0aGlzLmNvbG9yQnk9clp0Lk5PTkUpfV9lbnN1cmVUZW1wbGF0ZXMoKXt0aGlzLmdyYXBoSGllcmFyY2h5JiZ0aGlzLmNvbG9yQnk9PT1yWnQuU1RSVUNUVVJFJiYodGhpcy5ncmFwaEhpZXJhcmNoeS5nZXRUZW1wbGF0ZUluZGV4KCl8fHRoaXMuZ3JhcGhIaWVyYXJjaHkudXBkYXRlVGVtcGxhdGVzKCkpfX07ZUp0LnRlbXBsYXRlPXhlYAogICAgPHN0eWxlPgogICAgICA6Omhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CgogICAgICAvZGVlcC8gLmNsb3NlIHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIGxlZnQ6IDE1cHg7CiAgICAgICAgYm90dG9tOiAxNXB4OwogICAgICB9CgogICAgICAuY29udGFpbmVyIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgfQoKICAgICAgLmNvbnRhaW5lci5sb2FkaW5nIHsKICAgICAgICBjdXJzb3I6IHByb2dyZXNzOwogICAgICAgIG9wYWNpdHk6IDAuMTsKICAgICAgfQoKICAgICAgLmNvbnRhaW5lci5sb2FkaW5nLmVycm9yIHsKICAgICAgICBjdXJzb3I6IGF1dG87CiAgICAgIH0KCiAgICAgICNpbmZvIHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgcmlnaHQ6IDVweDsKICAgICAgICB0b3A6IDVweDsKICAgICAgICBwYWRkaW5nOiAwcHg7CiAgICAgICAgbWF4LXdpZHRoOiAzODBweDsKICAgICAgICBtaW4td2lkdGg6IDMyMHB4OwogICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45KTsKICAgICAgICBAYXBwbHkgLS1zaGFkb3ctZWxldmF0aW9uLTJkcDsKICAgICAgfQoKICAgICAgI21haW4gewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgfQoKICAgICAgI3Byb2dyZXNzLWJhciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogNDBweDsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgfQoKICAgICAgI3Byb2dyZXNzLW1zZyB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogNXB4OwogICAgICAgIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKICAgICAgICB3aWR0aDogNDAwcHg7CiAgICAgIH0KCiAgICAgIHBhcGVyLXByb2dyZXNzIHsKICAgICAgICB3aWR0aDogNDAwcHg7CiAgICAgICAgLS1wYXBlci1wcm9ncmVzcy1oZWlnaHQ6IDZweDsKICAgICAgICAtLXBhcGVyLXByb2dyZXNzLWFjdGl2ZS1jb2xvcjogI2YzOTEzZTsKICAgICAgfQoKICAgICAgLmNvbnRleHQtbWVudSB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2UyZTJlMjsKICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIG1pbi13aWR0aDogMTUwcHg7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2Q0ZDRkNDsKICAgICAgfQoKICAgICAgL2RlZXAvIC5jb250ZXh0LW1lbnUgdWwgewogICAgICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTsKICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgcGFkZGluZzogMDsKICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7CiAgICAgIH0KCiAgICAgIC9kZWVwLyAuY29udGV4dC1tZW51IHVsIGxpIHsKICAgICAgICBwYWRkaW5nOiA0cHggMTZweDsKICAgICAgfQoKICAgICAgL2RlZXAvIC5jb250ZXh0LW1lbnUgdWwgbGk6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmMzkxM2U7CiAgICAgICAgY29sb3I6IHdoaXRlOwogICAgICB9CiAgICA8L3N0eWxlPgogICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19pc05vdENvbXBsZXRlKHByb2dyZXNzKV1dIj4KICAgICAgPGRpdiBpZD0icHJvZ3Jlc3MtYmFyIj4KICAgICAgICA8ZGl2IGlkPSJwcm9ncmVzcy1tc2ciPltbcHJvZ3Jlc3MubXNnXV08L2Rpdj4KICAgICAgICA8cGFwZXItcHJvZ3Jlc3MgdmFsdWU9IltbcHJvZ3Jlc3MudmFsdWVdXSI+PC9wYXBlci1wcm9ncmVzcz4KICAgICAgPC9kaXY+CiAgICA8L3RlbXBsYXRlPgogICAgPGRpdiBjbGFzcyQ9IltbX2dldENvbnRhaW5lckNsYXNzKHByb2dyZXNzKV1dIj4KICAgICAgPGRpdiBpZD0ibWFpbiI+CiAgICAgICAgPHRmLWdyYXBoCiAgICAgICAgICBpZD0iZ3JhcGgiCiAgICAgICAgICBncmFwaC1oaWVyYXJjaHk9Int7Z3JhcGhIaWVyYXJjaHl9fSIKICAgICAgICAgIGJhc2ljLWdyYXBoPSJbW2dyYXBoXV0iCiAgICAgICAgICBoaWVyYXJjaHktcGFyYW1zPSJbW2hpZXJhcmNoeVBhcmFtc11dIgogICAgICAgICAgcmVuZGVyLWhpZXJhcmNoeT0ie3tyZW5kZXJIaWVyYXJjaHl9fSIKICAgICAgICAgIGRldmljZXMtZm9yLXN0YXRzPSJbW2RldmljZXNGb3JTdGF0c11dIgogICAgICAgICAgc3RhdHM9Iltbc3RhdHNdXSIKICAgICAgICAgIHNlbGVjdGVkLW5vZGU9Int7c2VsZWN0ZWROb2RlfX0iCiAgICAgICAgICBoaWdobGlnaHRlZC1ub2RlPSJ7e19oaWdobGlnaHRlZE5vZGV9fSIKICAgICAgICAgIGNvbG9yLWJ5PSJbW2NvbG9yQnldXSIKICAgICAgICAgIGNvbG9yLWJ5LXBhcmFtcz0ie3tjb2xvckJ5UGFyYW1zfX0iCiAgICAgICAgICBwcm9ncmVzcz0ie3twcm9ncmVzc319IgogICAgICAgICAgZWRnZS1sYWJlbC1mdW5jdGlvbj0iW1tlZGdlTGFiZWxGdW5jdGlvbl1dIgogICAgICAgICAgZWRnZS13aWR0aC1mdW5jdGlvbj0iW1tlZGdlV2lkdGhGdW5jdGlvbl1dIgogICAgICAgICAgbm9kZS1uYW1lcy10by1oZWFsdGgtcGlsbHM9Iltbbm9kZU5hbWVzVG9IZWFsdGhQaWxsc11dIgogICAgICAgICAgaGVhbHRoLXBpbGwtc3RlcC1pbmRleD0iW1toZWFsdGhQaWxsU3RlcEluZGV4XV0iCiAgICAgICAgICBoYW5kbGUtbm9kZS1zZWxlY3RlZD0iW1toYW5kbGVOb2RlU2VsZWN0ZWRdXSIKICAgICAgICAgIGhhbmRsZS1lZGdlLXNlbGVjdGVkPSJbW2hhbmRsZUVkZ2VTZWxlY3RlZF1dIgogICAgICAgICAgdHJhY2UtaW5wdXRzPSJbW3RyYWNlSW5wdXRzXV0iCiAgICAgICAgICBhdXRvLWV4dHJhY3Qtbm9kZXM9IltbYXV0b0V4dHJhY3ROb2Rlc11dIgogICAgICAgID48L3RmLWdyYXBoPgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBpZD0iaW5mbyI+CiAgICAgICAgPHRmLWdyYXBoLWluZm8KICAgICAgICAgIGlkPSJncmFwaC1pbmZvIgogICAgICAgICAgdGl0bGU9InNlbGVjdGVkIgogICAgICAgICAgZ3JhcGgtaGllcmFyY2h5PSJbW2dyYXBoSGllcmFyY2h5XV0iCiAgICAgICAgICByZW5kZXItaGllcmFyY2h5PSJbW3JlbmRlckhpZXJhcmNoeV1dIgogICAgICAgICAgZ3JhcGg9IltbZ3JhcGhdXSIKICAgICAgICAgIHNlbGVjdGVkLW5vZGU9Int7c2VsZWN0ZWROb2RlfX0iCiAgICAgICAgICBzZWxlY3RlZC1ub2RlLWluY2x1ZGU9Int7X3NlbGVjdGVkTm9kZUluY2x1ZGV9fSIKICAgICAgICAgIGhpZ2hsaWdodGVkLW5vZGU9Int7X2hpZ2hsaWdodGVkTm9kZX19IgogICAgICAgICAgY29sb3ItYnk9IltbY29sb3JCeV1dIgogICAgICAgICAgY29sb3ItYnktcGFyYW1zPSJbW2NvbG9yQnlQYXJhbXNdXSIKICAgICAgICAgIGRlYnVnZ2VyLWRhdGEtZW5hYmxlZD0iW1tkZWJ1Z2dlckRhdGFFbmFibGVkXV0iCiAgICAgICAgICBhcmUtaGVhbHRoLXBpbGxzLWxvYWRpbmc9IltbYXJlSGVhbHRoUGlsbHNMb2FkaW5nXV0iCiAgICAgICAgICBkZWJ1Z2dlci1udW1lcmljLWFsZXJ0cz0iW1tkZWJ1Z2dlck51bWVyaWNBbGVydHNdXSIKICAgICAgICAgIG5vZGUtbmFtZXMtdG8taGVhbHRoLXBpbGxzPSJbW25vZGVOYW1lc1RvSGVhbHRoUGlsbHNdXSIKICAgICAgICAgIGFsbC1zdGVwcy1tb2RlLWVuYWJsZWQ9Int7YWxsU3RlcHNNb2RlRW5hYmxlZH19IgogICAgICAgICAgc3BlY2lmaWMtaGVhbHRoLXBpbGwtc3RlcD0ie3tzcGVjaWZpY0hlYWx0aFBpbGxTdGVwfX0iCiAgICAgICAgICBoZWFsdGgtcGlsbC1zdGVwLWluZGV4PSJ7e2hlYWx0aFBpbGxTdGVwSW5kZXh9fSIKICAgICAgICAgIGNvbXBhdC1ub2RlLXRpdGxlPSJbW2NvbXBhdE5vZGVUaXRsZV1dIgogICAgICAgICAgb24tbm9kZS10b2dnbGUtaW5jbHVzaW9uPSJfb25Ob2RlSW5jbHVzaW9uVG9nZ2xlZCIKICAgICAgICAgIG9uLW5vZGUtdG9nZ2xlLXNlcmllc2dyb3VwPSJfb25Ob2RlU2VyaWVzR3JvdXBUb2dnbGVkIgogICAgICAgID48L3RmLWdyYXBoLWluZm8+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgYCx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixyS3QpXSxlSnQucHJvdG90eXBlLCJncmFwaEhpZXJhcmNoeSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixJJHQpXSxlSnQucHJvdG90eXBlLCJncmFwaCIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxlSnQucHJvdG90eXBlLCJoaWVyYXJjaHlQYXJhbXMiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sZUp0LnByb3RvdHlwZSwic3RhdHMiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sZUp0LnByb3RvdHlwZSwicHJvZ3Jlc3MiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxlSnQucHJvdG90eXBlLCJ0cmFjZUlucHV0cyIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLGVKdC5wcm90b3R5cGUsImF1dG9FeHRyYWN0Tm9kZXMiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmcsbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLGVKdC5wcm90b3R5cGUsImNvbG9yQnkiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3Qsbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGVKdC5wcm90b3R5cGUsImNvbG9yQnlQYXJhbXMiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3Qsbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLEFLdCldLGVKdC5wcm90b3R5cGUsInJlbmRlckhpZXJhcmNoeSIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLGVKdC5wcm90b3R5cGUsImRlYnVnZ2VyRGF0YUVuYWJsZWQiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxlSnQucHJvdG90eXBlLCJhcmVIZWFsdGhQaWxsc0xvYWRpbmciLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheSxub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxlSnQucHJvdG90eXBlLCJkZWJ1Z2dlck51bWVyaWNBbGVydHMiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sZUp0LnByb3RvdHlwZSwibm9kZU5hbWVzVG9IZWFsdGhQaWxscyIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW4sbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxlSnQucHJvdG90eXBlLCJhbGxTdGVwc01vZGVFbmFibGVkIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyLG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxlSnQucHJvdG90eXBlLCJzcGVjaWZpY0hlYWx0aFBpbGxTdGVwIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLGVKdC5wcm90b3R5cGUsImhlYWx0aFBpbGxTdGVwSW5kZXgiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmcsbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLGVKdC5wcm90b3R5cGUsInNlbGVjdGVkTm9kZSIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxlSnQucHJvdG90eXBlLCJjb21wYXROb2RlVGl0bGUiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sZUp0LnByb3RvdHlwZSwiZWRnZVdpZHRoRnVuY3Rpb24iLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sZUp0LnByb3RvdHlwZSwiX3NlbGVjdGVkTm9kZUluY2x1ZGUiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sZUp0LnByb3RvdHlwZSwiX2hpZ2hsaWdodGVkTm9kZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxlSnQucHJvdG90eXBlLCJoYW5kbGVOb2RlU2VsZWN0ZWQiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sZUp0LnByb3RvdHlwZSwiZWRnZUxhYmVsRnVuY3Rpb24iLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sZUp0LnByb3RvdHlwZSwiaGFuZGxlRWRnZVNlbGVjdGVkIix2b2lkIDApLHQoW2EoInNlbGVjdGVkTm9kZSIsInJlbmRlckhpZXJhcmNoeSIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sZUp0LnByb3RvdHlwZSwiX3VwZGF0ZU5vZGVJbmNsdWRlIixudWxsKSx0KFthKCJncmFwaCIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sZUp0LnByb3RvdHlwZSwiX3NsaW1HcmFwaENoYW5nZWQiLG51bGwpLHQoW2EoImNvbG9yQnkiLCJncmFwaEhpZXJhcmNoeSIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sZUp0LnByb3RvdHlwZSwiX2Vuc3VyZVRlbXBsYXRlcyIsbnVsbCksZUp0PXQoW2koInRmLWdyYXBoLWJvYXJkIildLGVKdCk7Y2xhc3Mgbkp0e2lzTm90VHB1T3AodCl7cmV0dXJuLTEhPXQudG9Mb3dlckNhc2UoKS5zZWFyY2goImNwdToiKXx8KC0xIT10LnRvTG93ZXJDYXNlKCkuc2VhcmNoKCJncHU6Iil8fC0xPT10LnRvTG93ZXJDYXNlKCkuc2VhcmNoKCJ0cHUiKSl9b3BWYWxpZCh0KXtyZXR1cm4gMD09dC5uYW1lLnNlYXJjaChUJHQpfHwoIXQub3B8fCghKCF0LmRldmljZXx8IXRoaXMuaXNOb3RUcHVPcCh0LmRldmljZSkpfHwoISghdC5kZXZpY2V8fC0xPT10LmRldmljZS5zZWFyY2goIlRQVV9TWVNURU0iKSl8fENlLmV4cG9ydHMuaW5jbHVkZXMobkp0LldISVRFTElTVCx0Lm9wKSkpKX19bkp0LldISVRFTElTVD1bIkFicyIsIkFjb3MiLCJBY29zaCIsIkFkZCIsIkFkZE4iLCJBZGRWMiIsIkFkanVzdENvbnRyYXN0djIiLCJBZGp1c3RIdWUiLCJBZGp1c3RTYXR1cmF0aW9uIiwiQWxsIiwiQWxsVG9BbGwiLCJBbmdsZSIsIkFueSIsIkFwcHJveGltYXRlRXF1YWwiLCJBcmdNYXgiLCJBcmdNaW4iLCJBc2luIiwiQXNpbmgiLCJBc3NlcnQiLCJBc3NpZ25BZGRWYXJpYWJsZU9wIiwiQXNzaWduU3ViVmFyaWFibGVPcCIsIkFzc2lnblZhcmlhYmxlT3AiLCJBdGFuIiwiQXRhbjIiLCJBdGFuaCIsIkF2Z1Bvb2wiLCJBdmdQb29sM0QiLCJBdmdQb29sM0RHcmFkIiwiQXZnUG9vbEdyYWQiLCJCYXRjaE1hdE11bCIsIkJhdGNoTWF0TXVsVjIiLCJCYXRjaFRvU3BhY2UiLCJCYXRjaFRvU3BhY2VORCIsIkJlc3NlbEkwZSIsIkJlc3NlbEkxZSIsIkJldGFpbmMiLCJCaWFzQWRkIiwiQmlhc0FkZEdyYWQiLCJCaWFzQWRkVjEiLCJCaXRjYXN0IiwiQml0d2lzZUFuZCIsIkJpdHdpc2VPciIsIkJpdHdpc2VYb3IiLCJCcm9hZGNhc3RBcmdzIiwiQnJvYWRjYXN0R3JhZGllbnRBcmdzIiwiQnJvYWRjYXN0VG8iLCJCdWNrZXRpemUiLCJDYXNlIiwiQ2FzdCIsIkNlaWwiLCJDaGVja051bWVyaWNzIiwiQ2hvbGVza3kiLCJDbGlwQnlWYWx1ZSIsIkNvbGxlY3RpdmVQZXJtdXRlIiwiQ29sbGVjdGl2ZVJlZHVjZVYyIiwiQ29tcGxleCIsIkNvbXBsZXhBYnMiLCJDb25jYXQiLCJDb25jYXRPZmZzZXQiLCJDb25jYXRWMiIsIkNvbmoiLCJDb25qdWdhdGVUcmFuc3Bvc2UiLCJDb25zdCIsIkNvbnRyb2xUcmlnZ2VyIiwiQ29udjJEIiwiQ29udjJEQmFja3Byb3BGaWx0ZXIiLCJDb252MkRCYWNrcHJvcElucHV0IiwiQ29udjNEIiwiQ29udjNEQmFja3Byb3BGaWx0ZXJWMiIsIkNvbnYzREJhY2twcm9wSW5wdXRWMiIsIkNvcyIsIkNvc2giLCJDcm9zcyIsIkNyb3NzUmVwbGljYVN1bSIsIkN1bXByb2QiLCJDdW1zdW0iLCJEYXRhRm9ybWF0RGltTWFwIiwiRGF0YUZvcm1hdFZlY1Blcm11dGUiLCJEZXB0aFRvU3BhY2UiLCJEZXB0aHdpc2VDb252MmROYXRpdmUiLCJEZXB0aHdpc2VDb252MmROYXRpdmVCYWNrcHJvcEZpbHRlciIsIkRlcHRod2lzZUNvbnYyZE5hdGl2ZUJhY2twcm9wSW5wdXQiLCJEZXF1YW50aXplIiwiRGV2aWNlSW5kZXgiLCJEaWFnIiwiRGlhZ1BhcnQiLCJEaWdhbW1hIiwiRGl2IiwiRGl2Tm9OYW4iLCJEeW5hbWljU3RpdGNoIiwiRWluc3VtIiwiRWx1IiwiRWx1R3JhZCIsIkVtcHR5IiwiRW1wdHlUZW5zb3JMaXN0IiwiRW5zdXJlU2hhcGUiLCJFcXVhbCIsIkVyZiIsIkVyZmMiLCJFcmZpbnYiLCJFeHAiLCJFeHBhbmREaW1zIiwiRXhwbTEiLCJFeHRyYWN0SW1hZ2VQYXRjaGVzIiwiRkZUIiwiRkZUMkQiLCJGRlQzRCIsIkZha2VQYXJhbSIsIkZha2VRdWFudFdpdGhNaW5NYXhBcmdzIiwiRmFrZVF1YW50V2l0aE1pbk1heEFyZ3NHcmFkaWVudCIsIkZha2VRdWFudFdpdGhNaW5NYXhWYXJzIiwiRmFrZVF1YW50V2l0aE1pbk1heFZhcnNHcmFkaWVudCIsIkZpbGwiLCJGbG9vciIsIkZsb29yRGl2IiwiRmxvb3JNb2QiLCJGdXNlZEJhdGNoTm9ybSIsIkZ1c2VkQmF0Y2hOb3JtR3JhZCIsIkZ1c2VkQmF0Y2hOb3JtR3JhZFYyIiwiRnVzZWRCYXRjaE5vcm1HcmFkVjMiLCJGdXNlZEJhdGNoTm9ybVYyIiwiRnVzZWRCYXRjaE5vcm1WMyIsIkdhdGhlciIsIkdhdGhlck5kIiwiR2F0aGVyVjIiLCJHZXRJdGVtIiwiR3JlYXRlciIsIkdyZWF0ZXJFcXVhbCIsIkhTVlRvUkdCIiwiSUZGVCIsIklGRlQyRCIsIklGRlQzRCIsIklSRkZUIiwiSVJGRlQyRCIsIklSRkZUM0QiLCJJZGVudGl0eSIsIklkZW50aXR5TiIsIklmIiwiSWdhbW1hIiwiSWdhbW1hR3JhZEEiLCJJZ2FtbWFjIiwiSW1hZyIsIkluVG9wS1YyIiwiSW5mZWVkRGVxdWV1ZSIsIkluZmVlZERlcXVldWVUdXBsZSIsIklucGxhY2VBZGQiLCJJbnBsYWNlVXBkYXRlIiwiSW52IiwiSW52ZXJ0IiwiSW52ZXJ0UGVybXV0YXRpb24iLCJJc0Zpbml0ZSIsIklzSW5mIiwiSXNOYW4iLCJLdGhPcmRlclN0YXRpc3RpYyIsIkwyTG9zcyIsIkxSTiIsIkxSTkdyYWQiLCJMZWFreVJlbHUiLCJMZWFreVJlbHVHcmFkIiwiTGVmdFNoaWZ0IiwiTGVzcyIsIkxlc3NFcXVhbCIsIkxnYW1tYSIsIkxpblNwYWNlIiwiTGlzdERpZmYiLCJMb2ciLCJMb2cxcCIsIkxvZ1NvZnRtYXgiLCJMb2dpY2FsQW5kIiwiTG9naWNhbE5vdCIsIkxvZ2ljYWxPciIsIkxvd2VyQm91bmQiLCJNYWtlVW5pcXVlIiwiTWF0TXVsIiwiTWF0cml4QmFuZFBhcnQiLCJNYXRyaXhEaWFnIiwiTWF0cml4RGlhZ1BhcnQiLCJNYXRyaXhEaWFnUGFydFYyIiwiTWF0cml4RGlhZ1BhcnRWMyIsIk1hdHJpeERpYWdWMiIsIk1hdHJpeERpYWdWMyIsIk1hdHJpeEludmVyc2UiLCJNYXRyaXhTZXREaWFnIiwiTWF0cml4U2V0RGlhZ1YyIiwiTWF0cml4U2V0RGlhZ1YzIiwiTWF0cml4U29sdmUiLCJNYXRyaXhUcmlhbmd1bGFyU29sdmUiLCJNYXgiLCJNYXhQb29sIiwiTWF4UG9vbDNEIiwiTWF4UG9vbDNER3JhZCIsIk1heFBvb2wzREdyYWRHcmFkIiwiTWF4UG9vbEdyYWQiLCJNYXhQb29sR3JhZEdyYWQiLCJNYXhQb29sR3JhZEdyYWRWMiIsIk1heFBvb2xHcmFkVjIiLCJNYXhQb29sVjIiLCJNYXhpbXVtIiwiTWVhbiIsIk1pbiIsIk1pbmltdW0iLCJNaXJyb3JQYWQiLCJNaXJyb3JQYWRHcmFkIiwiTW9kIiwiTXVsIiwiTXVsTm9OYW4iLCJNdWx0aW5vbWlhbCIsIk5kdHJpIiwiTmVnIiwiTmV4dEFmdGVyIiwiTm9PcCIsIk5vbk1heFN1cHByZXNzaW9uVjQiLCJOb3RFcXVhbCIsIk9uZUhvdCIsIk9uZXNMaWtlIiwiT3V0ZmVlZEVucXVldWUiLCJPdXRmZWVkRW5xdWV1ZVR1cGxlIiwiUGFjayIsIlBhZCIsIlBhZFYyIiwiUGFyYWxsZWxEeW5hbWljU3RpdGNoIiwiUGFyYW1ldGVyaXplZFRydW5jYXRlZE5vcm1hbCIsIlBhcnRpdGlvbmVkQ2FsbCIsIlBsYWNlaG9sZGVyV2l0aERlZmF1bHQiLCJQb2x5Z2FtbWEiLCJQb3B1bGF0aW9uQ291bnQiLCJQb3ciLCJQcmV2ZW50R3JhZGllbnQiLCJQcm9kIiwiUXIiLCJRdWFudGl6ZUFuZERlcXVhbnRpemVWMiIsIlF1YW50aXplQW5kRGVxdWFudGl6ZVYzIiwiUkZGVCIsIlJGRlQyRCIsIlJGRlQzRCIsIlJHQlRvSFNWIiwiUmFuZG9tR2FtbWFHcmFkIiwiUmFuZG9tU2h1ZmZsZSIsIlJhbmRvbVN0YW5kYXJkTm9ybWFsIiwiUmFuZG9tVW5pZm9ybSIsIlJhbmRvbVVuaWZvcm1JbnQiLCJSYW5nZSIsIlJhbmsiLCJSZWFkVmFyaWFibGVPcCIsIlJlYWwiLCJSZWFsRGl2IiwiUmVjaXByb2NhbCIsIlJlY2lwcm9jYWxHcmFkIiwiUmVsdSIsIlJlbHU2IiwiUmVsdTZHcmFkIiwiUmVsdUdyYWQiLCJSZXNoYXBlIiwiUmVzaXplQmlsaW5lYXIiLCJSZXNpemVCaWxpbmVhckdyYWQiLCJSZXNpemVOZWFyZXN0TmVpZ2hib3IiLCJSZXNpemVOZWFyZXN0TmVpZ2hib3JHcmFkIiwiUmVzb3VyY2VBcHBseUFkYU1heCIsIlJlc291cmNlQXBwbHlBZGFkZWx0YSIsIlJlc291cmNlQXBwbHlBZGFncmFkIiwiUmVzb3VyY2VBcHBseUFkYWdyYWREQSIsIlJlc291cmNlQXBwbHlBZGFncmFkVjIiLCJSZXNvdXJjZUFwcGx5QWRhbSIsIlJlc291cmNlQXBwbHlBZGRTaWduIiwiUmVzb3VyY2VBcHBseUNlbnRlcmVkUk1TUHJvcCIsIlJlc291cmNlQXBwbHlGdHJsIiwiUmVzb3VyY2VBcHBseUZ0cmxWMiIsIlJlc291cmNlQXBwbHlHcmFkaWVudERlc2NlbnQiLCJSZXNvdXJjZUFwcGx5S2VyYXNNb21lbnR1bSIsIlJlc291cmNlQXBwbHlNb21lbnR1bSIsIlJlc291cmNlQXBwbHlQb3dlclNpZ24iLCJSZXNvdXJjZUFwcGx5UHJveGltYWxBZGFncmFkIiwiUmVzb3VyY2VBcHBseVByb3hpbWFsR3JhZGllbnREZXNjZW50IiwiUmVzb3VyY2VBcHBseVJNU1Byb3AiLCJSZXNvdXJjZUdhdGhlciIsIlJlc291cmNlU2NhdHRlckFkZCIsIlJlc291cmNlU2NhdHRlckRpdiIsIlJlc291cmNlU2NhdHRlck1heCIsIlJlc291cmNlU2NhdHRlck1pbiIsIlJlc291cmNlU2NhdHRlck11bCIsIlJlc291cmNlU2NhdHRlck5kQWRkIiwiUmVzb3VyY2VTY2F0dGVyTmRTdWIiLCJSZXNvdXJjZVNjYXR0ZXJOZFVwZGF0ZSIsIlJlc291cmNlU2NhdHRlclN1YiIsIlJlc291cmNlU2NhdHRlclVwZGF0ZSIsIlJlc291cmNlU3RyaWRlZFNsaWNlQXNzaWduIiwiUmV2ZXJzZSIsIlJldmVyc2VTZXF1ZW5jZSIsIlJldmVyc2VWMiIsIlJpZ2h0U2hpZnQiLCJSaW50IiwiUm5nUmVhZEFuZFNraXAiLCJSbmdTa2lwIiwiUm9sbCIsIlJvdW5kIiwiUnNxcnQiLCJSc3FydEdyYWQiLCJTY2F0dGVyTmQiLCJTZWxlY3QiLCJTZWxlY3RWMiIsIlNlbGZBZGpvaW50RWlnVjIiLCJTZWx1IiwiU2VsdUdyYWQiLCJTaGFwZSIsIlNoYXBlTiIsIlNpZ21vaWQiLCJTaWdtb2lkR3JhZCIsIlNpZ24iLCJTaW4iLCJTaW5oIiwiU2l6ZSIsIlNsaWNlIiwiU25hcHNob3QiLCJTb2Z0bWF4IiwiU29mdG1heENyb3NzRW50cm9weVdpdGhMb2dpdHMiLCJTb2Z0cGx1cyIsIlNvZnRwbHVzR3JhZCIsIlNvZnRzaWduIiwiU29mdHNpZ25HcmFkIiwiU3BhY2VUb0JhdGNoIiwiU3BhY2VUb0JhdGNoTkQiLCJTcGFjZVRvRGVwdGgiLCJTcGFyc2VNYXRNdWwiLCJTcGFyc2VTb2Z0bWF4Q3Jvc3NFbnRyb3B5V2l0aExvZ2l0cyIsIlNwYXJzZVRvRGVuc2UiLCJTcGxpdCIsIlNwbGl0ViIsIlNxcnQiLCJTcXJ0R3JhZCIsIlNxdWFyZSIsIlNxdWFyZWREaWZmZXJlbmNlIiwiU3F1ZWV6ZSIsIlN0YWNrQ2xvc2VWMiIsIlN0YWNrUG9wVjIiLCJTdGFja1B1c2hWMiIsIlN0YWNrVjIiLCJTdGF0ZWZ1bFBhcnRpdGlvbmVkQ2FsbCIsIlN0YXRlZnVsU3RhbmRhcmROb3JtYWxWMiIsIlN0YXRlZnVsVHJ1bmNhdGVkTm9ybWFsIiwiU3RhdGVmdWxVbmlmb3JtIiwiU3RhdGVmdWxVbmlmb3JtRnVsbEludCIsIlN0YXRlZnVsVW5pZm9ybUludCIsIlN0YXRlbGVzc0Nhc2UiLCJTdGF0ZWxlc3NJZiIsIlN0YXRlbGVzc011bHRpbm9taWFsIiwiU3RhdGVsZXNzUmFuZG9tR2V0QWxnIiwiU3RhdGVsZXNzUmFuZG9tR2V0S2V5Q291bnRlciIsIlN0YXRlbGVzc1JhbmRvbUdldEtleUNvdW50ZXJBbGciLCJTdGF0ZWxlc3NSYW5kb21Ob3JtYWwiLCJTdGF0ZWxlc3NSYW5kb21Ob3JtYWxWMiIsIlN0YXRlbGVzc1JhbmRvbVVuaWZvcm0iLCJTdGF0ZWxlc3NSYW5kb21Vbmlmb3JtRnVsbEludCIsIlN0YXRlbGVzc1JhbmRvbVVuaWZvcm1GdWxsSW50VjIiLCJTdGF0ZWxlc3NSYW5kb21Vbmlmb3JtSW50IiwiU3RhdGVsZXNzUmFuZG9tVW5pZm9ybUludFYyIiwiU3RhdGVsZXNzUmFuZG9tVW5pZm9ybVYyIiwiU3RhdGVsZXNzVHJ1bmNhdGVkTm9ybWFsIiwiU3RhdGVsZXNzVHJ1bmNhdGVkTm9ybWFsVjIiLCJTdGF0ZWxlc3NXaGlsZSIsIlN0b3BHcmFkaWVudCIsIlN0cmlkZWRTbGljZSIsIlN0cmlkZWRTbGljZUdyYWQiLCJTdWIiLCJTdW0iLCJTdmQiLCJTeW1ib2xpY0dyYWRpZW50IiwiVFBVRW1iZWRkaW5nQWN0aXZhdGlvbnMiLCJUYW4iLCJUYW5oIiwiVGFuaEdyYWQiLCJUZW5zb3JBcnJheUNsb3NlVjMiLCJUZW5zb3JBcnJheUNvbmNhdFYzIiwiVGVuc29yQXJyYXlHYXRoZXJWMyIsIlRlbnNvckFycmF5R3JhZFYzIiwiVGVuc29yQXJyYXlSZWFkVjMiLCJUZW5zb3JBcnJheVNjYXR0ZXJWMyIsIlRlbnNvckFycmF5U2l6ZVYzIiwiVGVuc29yQXJyYXlTcGxpdFYzIiwiVGVuc29yQXJyYXlWMyIsIlRlbnNvckFycmF5V3JpdGVWMyIsIlRlbnNvckxpc3RDb25jYXRWMiIsIlRlbnNvckxpc3RFbGVtZW50U2hhcGUiLCJUZW5zb3JMaXN0RnJvbVRlbnNvciIsIlRlbnNvckxpc3RHYXRoZXIiLCJUZW5zb3JMaXN0R2V0SXRlbSIsIlRlbnNvckxpc3RMZW5ndGgiLCJUZW5zb3JMaXN0UG9wQmFjayIsIlRlbnNvckxpc3RQdXNoQmFjayIsIlRlbnNvckxpc3RSZXNlcnZlIiwiVGVuc29yTGlzdFNldEl0ZW0iLCJUZW5zb3JMaXN0U3BsaXQiLCJUZW5zb3JMaXN0U3RhY2siLCJUZW5zb3JTY2F0dGVyQWRkIiwiVGVuc29yU2NhdHRlck1heCIsIlRlbnNvclNjYXR0ZXJNaW4iLCJUZW5zb3JTY2F0dGVyU3ViIiwiVGVuc29yU2NhdHRlclVwZGF0ZSIsIlRlbnNvclN0cmlkZWRTbGljZVVwZGF0ZSIsIlRpbGUiLCJUb3BLVW5pcXVlIiwiVG9wS1YyIiwiVG9wS1dpdGhVbmlxdWUiLCJUcmFuc3Bvc2UiLCJUcmlkaWFnb25hbFNvbHZlIiwiVHJ1bmNhdGVEaXYiLCJUcnVuY2F0ZU1vZCIsIlRydW5jYXRlZE5vcm1hbCIsIlVuaXF1ZSIsIlVucGFjayIsIlVuc29ydGVkU2VnbWVudE1heCIsIlVuc29ydGVkU2VnbWVudE1pbiIsIlVuc29ydGVkU2VnbWVudFByb2QiLCJVbnNvcnRlZFNlZ21lbnRTdW0iLCJVcHBlckJvdW5kIiwiVmFySXNJbml0aWFsaXplZE9wIiwiVmFyaWFibGVTaGFwZSIsIldoZXJlIiwiV2hpbGUiLCJYZGl2eSIsIlhsYUJyb2FkY2FzdEhlbHBlciIsIlhsYUNvbnYiLCJYbGFDb252VjIiLCJYbGFEZXF1YW50aXplIiwiWGxhRG90IiwiWGxhRG90VjIiLCJYbGFEeW5hbWljU2xpY2UiLCJYbGFEeW5hbWljVXBkYXRlU2xpY2UiLCJYbGFFaW5zdW0iLCJYbGFHYXRoZXIiLCJYbGFIb3N0Q29tcHV0ZSIsIlhsYUlmIiwiWGxhS2V5VmFsdWVTb3J0IiwiWGxhUGFkIiwiWGxhUmVjdiIsIlhsYVJlY3ZGcm9tSG9zdCIsIlhsYVJlZHVjZSIsIlhsYVJlZHVjZVdpbmRvdyIsIlhsYVJlcGxpY2FJZCIsIlhsYVNjYXR0ZXIiLCJYbGFTZWxlY3RBbmRTY2F0dGVyIiwiWGxhU2VsZkFkam9pbnRFaWciLCJYbGFTZW5kIiwiWGxhU2VuZFRvSG9zdCIsIlhsYVNldEJvdW5kIiwiWGxhU2V0RHluYW1pY0RpbWVuc2lvblNpemUiLCJYbGFTaGFyZGluZyIsIlhsYVNvcnQiLCJYbGFTcG1kRnVsbFRvU2hhcmRTaGFwZSIsIlhsYVNwbWRTaGFyZFRvRnVsbFNoYXBlIiwiWGxhU3ZkIiwiWGxhVmFyaWFkaWNSZWR1Y2UiLCJYbGFWYXJpYWRpY1NvcnQiLCJYbGFXaGlsZSIsIlhsb2cxcHkiLCJYbG9neSIsIlplcm9zTGlrZSIsIlpldGEiLCJFbnRlciIsIkV4aXQiLCJMb29wQ29uZCIsIk1lcmdlIiwiTmV4dEl0ZXJhdGlvbiIsIlN3aXRjaCIsIl9BcmciLCJfQXJyYXlUb0xpc3QiLCJfRnVzZWRCYXRjaE5vcm1FeCIsIl9MaXN0VG9BcnJheSIsIl9QYXJhbGxlbENvbmNhdFVwZGF0ZSIsIl9SZWN2VFBVRW1iZWRkaW5nQWN0aXZhdGlvbnMiLCJfUmVjdlRQVUVtYmVkZGluZ0RlZHVwbGljYXRpb25EYXRhIiwiX1JldHZhbCIsIl9TZW5kVFBVRW1iZWRkaW5nR3JhZGllbnRzIiwiX1RQVUNvbXBpbGUiLCJfVFBVRXhlY3V0ZSIsIl9VbmFyeU9wc0NvbXBvc2l0aW9uIiwiVFBVQ29tcGlsYXRpb25SZXN1bHQiLCJUUFVSZXBsaWNhdGVkSW5wdXQiLCJUUFVSZXBsaWNhdGVkT3V0cHV0IiwiVFBVUmVwbGljYXRlTWV0YWRhdGEiLCJNZXJnZVYyQ2hlY2twb2ludHMiLCJSZXN0b3JlVjIiLCJTYXZlVjIiLCJBYm9ydCIsIkFzc2VydCIsIkFzc2lnbiIsIlBsYWNlaG9sZGVyIiwiUGxhY2Vob2xkZXJWMiIsIlNoYXJkZWRGaWxlbmFtZSIsIlN0cmluZ0pvaW4iLCJWYXJpYWJsZSIsIlZhcmlhYmxlVjIiLCJWYXJIYW5kbGVPcCIsIkF1ZGlvU3VtbWFyeSIsIkF1ZGlvU3VtbWFyeVYyIiwiRGVidWdOdW1lcmljU3VtbWFyeSIsIkhpc3RvZ3JhbVN1bW1hcnkiLCJJbWFnZVN1bW1hcnkiLCJNZXJnZVN1bW1hcnkiLCJTY2FsYXJTdW1tYXJ5IiwiU3RhdHNBZ2dyZWdhdG9yU3VtbWFyeSJdO2xldCBpSnQ9Y2xhc3MgZXh0ZW5kcyhjcih3ZSkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9yYXdSZWdleElucHV0PSIiLHRoaXMuX3ByZXZpb3VzUmVnZXhJbnB1dD0iIix0aGlzLl9zZWFyY2hUaW1lb3V0RGVsYXk9MTUwLHRoaXMuX21heFJlZ2V4UmVzdWx0cz00Mn1nZXQgX3JlZ2V4SW5wdXQoKXtyZXR1cm4gdGhpcy5fcmF3UmVnZXhJbnB1dC50cmltKCl9X3JlZ2V4SW5wdXRDaGFuZ2VkKCl7dGhpcy5fcmVxdWVzdFNlYXJjaCgpfV9jbGVhclNlYXJjaFJlc3VsdHMoKXt0aGlzLnNldCgiX3JlZ2V4TWF0Y2hlcyIsW10pfV9yZXF1ZXN0U2VhcmNoKCl7dGhpcy5fc2VhcmNoUGVuZGluZ3x8KHRoaXMuX3JlZ2V4SW5wdXQhPT10aGlzLl9wcmV2aW91c1JlZ2V4SW5wdXQ/KHRoaXMuX3NlYXJjaFBlbmRpbmc9ITAsdGhpcy5fZXhlY3V0ZVNlYXJjaCgpLHRoaXMuYXN5bmMoKCgpPT57dGhpcy5fc2VhcmNoUGVuZGluZz0hMSx0aGlzLl9yZXF1ZXN0U2VhcmNoKCl9KSx0aGlzLl9zZWFyY2hUaW1lb3V0RGVsYXkpKTp0aGlzLl9zZWFyY2hQZW5kaW5nPSExKX1fZXhlY3V0ZVNlYXJjaCgpe2lmKHRoaXMuX3ByZXZpb3VzUmVnZXhJbnB1dD10aGlzLl9yZWdleElucHV0LCF0aGlzLl9yZWdleElucHV0KXJldHVybiB2b2lkIHRoaXMuX2NsZWFyU2VhcmNoUmVzdWx0cygpO3RyeXt2YXIgdD1uZXcgUmVnRXhwKHRoaXMuX3JlZ2V4SW5wdXQpfWNhdGNoKHQpe3JldHVybiB2b2lkIHRoaXMuX2NsZWFyU2VhcmNoUmVzdWx0cygpfWNvbnN0IGU9W10sbj10aGlzLnJlbmRlckhpZXJhcmNoeS5oaWVyYXJjaHkuZ2V0Tm9kZU1hcCgpO0NlLmV4cG9ydHMuZWFjaChuLCgobixpKT0+e2lmKGUubGVuZ3RoPj10aGlzLl9tYXhSZWdleFJlc3VsdHMpcmV0dXJuITE7dC50ZXN0KGkpJiZlLnB1c2goaSl9KSksdGhpcy5zZXQoIl9yZWdleE1hdGNoZXMiLGUpfV9tYXRjaENsaWNrZWQodCl7dGhpcy5zZXQoInNlbGVjdGVkTm9kZSIsdC5tb2RlbC5pdGVtKSxoJHQoe2FjdGlvbklkOkJBdC5OT0RFX1NFQVJDSF9SRVNVTFRfRk9DVVNFRH0pfX07aUp0LnRlbXBsYXRlPXhlYAogICAgPGRpdiBpZD0ic2VhcmNoLWNvbnRhaW5lciI+CiAgICAgIDxwYXBlci1pbnB1dAogICAgICAgIGlkPSJydW5zLXJlZ2V4IgogICAgICAgIGxhYmVsPSJTZWFyY2ggbm9kZXMgKHJlZ2V4KSIKICAgICAgICB2YWx1ZT0ie3tfcmF3UmVnZXhJbnB1dH19IgogICAgICA+CiAgICAgIDwvcGFwZXItaW5wdXQ+CiAgICAgIDxkaXYgaWQ9InNlYXJjaC1yZXN1bHRzLWFuY2hvciI+CiAgICAgICAgPGRpdiBpZD0ic2VhcmNoLXJlc3VsdHMiPgogICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20tcmVwZWF0IiBpdGVtcz0iW1tfcmVnZXhNYXRjaGVzXV0iPgogICAgICAgICAgICA8ZGl2IGlkPSJzZWFyY2gtbWF0Y2giIG9uLWNsaWNrPSJfbWF0Y2hDbGlja2VkIj5bW2l0ZW1dXTwvZGl2PgogICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDxzdHlsZT4KICAgICAgI3NlYXJjaC1jb250YWluZXIgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIG92ZXJmbG93OiB2aXNpYmxlOwogICAgICB9CgogICAgICAjcnVucy1yZWdleCB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIH0KCiAgICAgICNzZWFyY2gtcmVzdWx0cy1hbmNob3IgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgfQoKICAgICAgI3NlYXJjaC1yZXN1bHRzIHsKICAgICAgICBjb2xvcjogI2ZmZjsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgbWF4LWhlaWdodDogMjAwcHg7CiAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7CiAgICAgICAgbWF4LXdpZHRoOiAxMDAlOwogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgIH0KCiAgICAgICNzZWFyY2gtbWF0Y2ggewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXRiLW9yYW5nZS1zdHJvbmcpOwogICAgICAgIHBhZGRpbmc6IDNweDsKICAgICAgICBmbG9hdDogcmlnaHQ7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgICBkaXJlY3Rpb246IHJ0bDsKICAgICAgfQoKICAgICAgI3NlYXJjaC1tYXRjaDpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdGItb3JhbmdlLXdlYWspOwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGlKdC5wcm90b3R5cGUsInJlbmRlckhpZXJhcmNoeSIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZyxub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0saUp0LnByb3RvdHlwZSwic2VsZWN0ZWROb2RlIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLGlKdC5wcm90b3R5cGUsIl9yYXdSZWdleElucHV0Iix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLGlKdC5wcm90b3R5cGUsIl9wcmV2aW91c1JlZ2V4SW5wdXQiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0saUp0LnByb3RvdHlwZSwiX3NlYXJjaFRpbWVvdXREZWxheSIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLGlKdC5wcm90b3R5cGUsIl9zZWFyY2hQZW5kaW5nIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLGlKdC5wcm90b3R5cGUsIl9tYXhSZWdleFJlc3VsdHMiLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheX0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLGlKdC5wcm90b3R5cGUsIl9yZWdleE1hdGNoZXMiLHZvaWQgMCksdChbcygicmVuZGVySGllcmFyY2h5IiwiX3Jhd1JlZ2V4SW5wdXQiKSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxpSnQucHJvdG90eXBlLCJfcmVnZXhJbnB1dCIsbnVsbCksdChbYSgiX3JlZ2V4SW5wdXQiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLGlKdC5wcm90b3R5cGUsIl9yZWdleElucHV0Q2hhbmdlZCIsbnVsbCksaUp0PXQoW2koInRmLWdyYXBoLW5vZGUtc2VhcmNoIildLGlKdCk7Y29uc3Qgckp0PS9kZXZpY2U6KFteOl0rOlswLTldKykkLyxvSnQ9W3tyZWdleDpySnR9XSxhSnQ9W10sc0p0PW5ldyBTZXQoW3JadC5DT01QVVRFX1RJTUUsclp0Lk1FTU9SWV0pO2xldCBsSnQ9Y2xhc3MgZXh0ZW5kcyhjcihnbCh3ZSkpKXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5Db2xvckJ5PXJadCx0aGlzLnN0YXRzPW51bGwsdGhpcy5kZXZpY2VzRm9yU3RhdHM9bnVsbCx0aGlzLmNvbG9yQnk9clp0LlNUUlVDVFVSRSx0aGlzLmRhdGFzZXRzPVtdLHRoaXMuX3NlbGVjdGVkUnVuSW5kZXg9MCx0aGlzLnRyYWNlSW5wdXRzPSExLHRoaXMuYXV0b0V4dHJhY3ROb2Rlcz0hMCx0aGlzLl9zZWxlY3RlZFRhZ0luZGV4PTAsdGhpcy5fc2VsZWN0ZWRHcmFwaFR5cGU9UVh0Lk9QX0dSQVBILHRoaXMuc2hvd1Nlc3Npb25SdW5zRHJvcGRvd249ITAsdGhpcy5zaG93VXBsb2FkQnV0dG9uPSEwLHRoaXMuX2xlZ2VuZE9wZW5lZD0hMCx0aGlzLl9kb3dubG9hZEZpbGVuYW1lPSJncmFwaC5wbmcifV9vbkdyYXBoVHlwZUNoYW5nZWRCeVVzZXJHZXN0dXJlKCl7aCR0KHthY3Rpb25JZDpCQXQuR1JBUEhfVFlQRV9DSEFOR0VELGV2ZW50TGFiZWw6dGhpcy5fc2VsZWN0ZWRHcmFwaFR5cGV9KX1fb25Db2xvckJ5Q2hhbmdlZEJ5VXNlckdlc3R1cmUoKXtoJHQoe2FjdGlvbklkOkJBdC5OT0RFX0NPTE9SX01PREVfQ0hBTkdFRCxldmVudExhYmVsOnRoaXMuY29sb3JCeX0pfV9vblRyYWNlSW5wdXRzQ2hhbmdlZEJ5VXNlckdlc3R1cmUoKXtoJHQoe2FjdGlvbklkOkJBdC5UUkFDRV9JTlBVVF9NT0RFX1RPR0dMRUR9KX1feGxhQ2x1c3RlcnNQcm92aWRlZCh0KXtyZXR1cm4gdCYmdC5oaWVyYXJjaHkmJnQuaGllcmFyY2h5LnhsYUNsdXN0ZXJzLmxlbmd0aD4wfV9zdGF0c0NoYW5nZWQodCl7aWYobnVsbCE9dCl7dmFyIGU9e307Q2UuZXhwb3J0cy5lYWNoKHQuZGV2X3N0YXRzLChmdW5jdGlvbih0KXt2YXIgbj1DZS5leHBvcnRzLnNvbWUob0p0LChmdW5jdGlvbihlKXtyZXR1cm4gZS5yZWdleC50ZXN0KHQuZGV2aWNlKX0pKSxpPUNlLmV4cG9ydHMuc29tZShhSnQsKGZ1bmN0aW9uKGUpe3JldHVybiBlLnJlZ2V4LnRlc3QodC5kZXZpY2UpfSkpO24mJiFpJiYoZVt0LmRldmljZV09ITApfSkpLHRoaXMuc2V0KCJkZXZpY2VzRm9yU3RhdHMiLGUpfX1nZXQgX2N1cnJlbnREZXZpY2VzKCl7dmFyIHQ9dGhpcy5kZXZpY2VzRm9yU3RhdHM7Y29uc3QgZT10aGlzLnN0YXRzLG49KGU/ZS5kZXZfc3RhdHM6W10pLm1hcCgodD0+dC5kZXZpY2UpKS5maWx0ZXIoKHQ9Pm9KdC5zb21lKChlPT5lLnJlZ2V4LnRlc3QodCkpKSkpLGk9eCR0KG4pO2lmKDE9PWkubGVuZ3RoKXtjb25zdCB0PWlbMF0ubWF0Y2gockp0KTt0JiYoaVswXT10WzFdKX1yZXR1cm4gbi5tYXAoKChlLG4pPT57bGV0IHI9bnVsbDtyZXR1cm4gYUp0LmZvckVhY2goKHQ9Pnt0LnJlZ2V4LnRlc3QoZSkmJihyPXQubXNnKX0pKSx7ZGV2aWNlOmUsc3VmZml4Omlbbl0sdXNlZDp0W2VdLGlnbm9yZWRNc2c6cn19KSl9X2RldmljZUNoZWNrYm94Q2xpY2tlZCh0KXtjb25zdCBlPXQudGFyZ2V0LG49T2JqZWN0LmFzc2lnbih7fSx0aGlzLmRldmljZXNGb3JTdGF0cyksaT1lLnZhbHVlO2UuY2hlY2tlZD9uW2ldPSEwOmRlbGV0ZSBuW2ldLHRoaXMuc2V0KCJkZXZpY2VzRm9yU3RhdHMiLG4pfV9udW1UYWdzKHQsZSl7cmV0dXJuIHRoaXMuX2dldFRhZ3ModCxlKS5sZW5ndGh9X2dldFRhZ3ModCxlKXtyZXR1cm4gdCYmdFtlXT90W2VdLnRhZ3M6W119X2ZpdCgpe3RoaXMuZmlyZSgiZml0LXRhcCIpfV9pc0dyYWRpZW50Q29sb3JpbmcodCxlKXtyZXR1cm4gc0p0LmhhcyhlKSYmbnVsbCE9dH1fZXF1YWxzKHQsZSl7cmV0dXJuIHQ9PT1lfWdldCBfY3VycmVudERldmljZVBhcmFtcygpe2NvbnN0IHQ9dGhpcy5jb2xvckJ5UGFyYW1zLmRldmljZS5maWx0ZXIoKHQ9Pm9KdC5zb21lKChlPT5lLnJlZ2V4LnRlc3QodC5kZXZpY2UpKSkpKSxlPXgkdCh0Lm1hcCgodD0+dC5kZXZpY2UpKSk7aWYoMT09ZS5sZW5ndGgpe3ZhciBuPWVbMF0ubWF0Y2gockp0KTtuJiYoZVswXT1uWzFdKX1yZXR1cm4gdC5tYXAoKCh0LG4pPT4oe2RldmljZTplW25dLGNvbG9yOnQuY29sb3J9KSkpfWdldCBfY3VycmVudFhsYUNsdXN0ZXJQYXJhbXMoKXtyZXR1cm4gdGhpcy5jb2xvckJ5UGFyYW1zLnhsYV9jbHVzdGVyfWdldCBfY3VycmVudEdyYWRpZW50UGFyYW1zKCl7dmFyIHQ9dGhpcy5jb2xvckJ5UGFyYW1zLGU9dGhpcy5jb2xvckJ5O2lmKCF0aGlzLl9pc0dyYWRpZW50Q29sb3JpbmcodGhpcy5zdGF0cyxlKSlyZXR1cm47Y29uc3Qgbj10W2VdO2xldCBpPW4ubWluVmFsdWUscj1uLm1heFZhbHVlO3JldHVybiBlPT09clp0Lk1FTU9SWT8oaT12JHQoaSxfJHQpLHI9diR0KHIsXyR0KSk6ZT09PXJadC5DT01QVVRFX1RJTUUmJihpPXYkdChpLHkkdCkscj12JHQocix5JHQpKSx7bWluVmFsdWU6aSxtYXhWYWx1ZTpyLHN0YXJ0Q29sb3I6bi5zdGFydENvbG9yLGVuZENvbG9yOm4uZW5kQ29sb3J9fWRvd25sb2FkKCl7dGhpcy5maXJlKCJkb3dubG9hZC1pbWFnZS1yZXF1ZXN0ZWQiLHRoaXMuX2Rvd25sb2FkRmlsZW5hbWUpfV91cGRhdGVGaWxlSW5wdXQodCl7Y29uc3QgZT10LnRhcmdldC5maWxlc1swXTtpZighZSlyZXR1cm47bGV0IG49ZS5uYW1lO2NvbnN0IGk9bi5sYXN0SW5kZXhPZigiLiIpO2k+PTAmJihuPW4uc3Vic3RyaW5nKDAsaSkpO2NvbnN0IHI9bi5sYXN0SW5kZXhPZigiLyIpO3I+PTAmJihuPW4uc3Vic3RyaW5nKHIrMSkpLHRoaXMuX3NldERvd25sb2FkRmlsZW5hbWUobiksdGhpcy5zZXQoInNlbGVjdGVkRmlsZSIsdCksaCR0KHthY3Rpb25JZDpCQXQuVVBMT0FERURfR1JBUEhfRlJPTV9GSUxFU1lTVEVNfSl9X2RhdGFzZXRzQ2hhbmdlZCh0LGUpe3ZhciBuO251bGwhPWUmJih0aGlzLl9zZWxlY3RlZFJ1bkluZGV4PTApLHRoaXMuX3NldERvd25sb2FkRmlsZW5hbWUobnVsbD09PShuPXRoaXMuZGF0YXNldHNbdGhpcy5fc2VsZWN0ZWRSdW5JbmRleF0pfHx2b2lkIDA9PT1uP3ZvaWQgMDpuLm5hbWUpfV9jb21wdXRlU2VsZWN0aW9uKHQsZSxuLGkpe3JldHVybiB0W2VdJiZ0W2VdLnRhZ3Nbbl0/e3J1bjp0W2VdLm5hbWUsdGFnOnRbZV0udGFnc1tuXS50YWcsdHlwZTppfTpudWxsfV9zZWxlY3RlZFJ1bkluZGV4Q2hhbmdlZCh0KXt2YXIgZTt0aGlzLmRhdGFzZXRzJiYodGhpcy5jb2xvckJ5PXJadC5TVFJVQ1RVUkUsdGhpcy5fc2VsZWN0ZWRUYWdJbmRleD0wLHRoaXMuX3NlbGVjdGVkR3JhcGhUeXBlPXRoaXMuX2dldERlZmF1bHRTZWxlY3Rpb25UeXBlKCksdGhpcy50cmFjZUlucHV0cz0hMSx0aGlzLl9zZXREb3dubG9hZEZpbGVuYW1lKG51bGw9PT0oZT10aGlzLmRhdGFzZXRzW3RdKXx8dm9pZCAwPT09ZT92b2lkIDA6ZS5uYW1lKSl9X3NlbGVjdGVkVGFnSW5kZXhDaGFuZ2VkKCl7dGhpcy5fc2VsZWN0ZWRHcmFwaFR5cGU9dGhpcy5fZ2V0RGVmYXVsdFNlbGVjdGlvblR5cGUoKX1fZ2V0RGVmYXVsdFNlbGVjdGlvblR5cGUoKXtjb25zdHtkYXRhc2V0czp0LF9zZWxlY3RlZFJ1bkluZGV4OmUsX3NlbGVjdGVkVGFnSW5kZXg6bn09dGhpcztpZighdHx8IXRbZV18fCF0W2VdLnRhZ3Nbbl18fHRbZV0udGFnc1tuXS5vcEdyYXBoKXJldHVybiBRWHQuT1BfR1JBUEg7Y29uc3QgaT10W2VdO3JldHVybiBpLnRhZ3Nbbl0ucHJvZmlsZT9RWHQuUFJPRklMRTppLnRhZ3Nbbl0uY29uY2VwdHVhbEdyYXBoP1FYdC5DT05DRVBUVUFMX0dSQVBIOlFYdC5PUF9HUkFQSH1fZ2V0RmlsZSgpe3RoaXMuJCQoIiNmaWxlIikuY2xpY2soKX1fc2V0RG93bmxvYWRGaWxlbmFtZSh0KXt0aGlzLl9kb3dubG9hZEZpbGVuYW1lPSh0fHwiZ3JhcGgiKSsiLnBuZyJ9X3N0YXRzTm90TnVsbCh0KXtyZXR1cm4gbnVsbCE9PXR9X3RvZ2dsZUxlZ2VuZE9wZW4oKXt0aGlzLnNldCgiX2xlZ2VuZE9wZW5lZCIsIXRoaXMuX2xlZ2VuZE9wZW5lZCl9X2dldFRvZ2dsZUxlZ2VuZEljb24odCl7cmV0dXJuIHQ/ImV4cGFuZC1tb3JlIjoiZXhwYW5kLWxlc3MifV9nZXRTZWxlY3Rpb25PcEdyYXBoRGlzYWJsZWQodCxlLG4pe3JldHVybiF0W2VdfHwhdFtlXS50YWdzW25dfHwhdFtlXS50YWdzW25dLm9wR3JhcGh9X2dldFNlbGVjdGlvblByb2ZpbGVEaXNhYmxlZCh0LGUsbil7cmV0dXJuIXRbZV18fCF0W2VdLnRhZ3Nbbl18fCF0W2VdLnRhZ3Nbbl0ucHJvZmlsZX1fZ2V0U2VsZWN0aW9uQ29uY2VwdHVhbEdyYXBoRGlzYWJsZWQodCxlLG4pe3JldHVybiF0W2VdfHwhdFtlXS50YWdzW25dfHwhdFtlXS50YWdzW25dLmNvbmNlcHR1YWxHcmFwaH19O2Z1bmN0aW9uIGNKdCh0KXtyZXR1cm4gbmV3IFByb21pc2UoKChlLG4pPT57ZmV0Y2godCkudGhlbigodD0+e3Qub2s/dC5hcnJheUJ1ZmZlcigpLnRoZW4oZSxuKTp0LnRleHQoKS50aGVuKG4sbil9KSl9KSl9ZnVuY3Rpb24gdUp0KHQsZSl7cmV0dXJuKGZ1bmN0aW9uIG4odCxlLGkscixvKXtyLnNldE1lc3NhZ2UodCk7dHJ5e2xldCBuPWQkdCh0LGksbyk7cmV0dXJuIHIudXBkYXRlUHJvZ3Jlc3MoZSksbn1jYXRjaChlKXtyLnJlcG9ydEVycm9yKCJGYWlsZWQgIit0LGUpfX0pKCJSZWFkaW5nIG1ldGFkYXRhIHBidHh0Iiw0MCwoKCk9Pm51bGw9PXQ/UHJvbWlzZS5yZXNvbHZlKG51bGwpOmNKdCh0KSksZSxCQXQuRkVUQ0hfTUVUQURBVEFfUEJUWFRfQllURVMpLnRoZW4oKHQ9PmckdCgiUGFyc2luZyBtZXRhZGF0YS5wYnR4dCIsNjAsKCgpPT5udWxsIT10PyhmdW5jdGlvbiBlKHQpe3JldHVybiBmSnQodCxwSnQpLnRoZW4oKHQ9PnQuc3RlcF9zdGF0cykpfSkodCk6UHJvbWlzZS5yZXNvbHZlKG51bGwpKSxlLEJBdC5QQVJTRV9NRVRBREFUQV9QQlRYVF9JTlRPX09CSkVDVCkpKX1mdW5jdGlvbiBoSnQodCxlLGkpe3JldHVybiBnJHQoIlJlYWRpbmcgZ3JhcGggcGJ0eHQiLDQwLCgoKT0+bih0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKigpe2NvbnN0IG49RGF0ZS5ub3coKTtpZihlKXtjb25zdCB0PXlpZWxkIG5ldyBQcm9taXNlKChmdW5jdGlvbih0LG4pe2xldCBpPW5ldyBGaWxlUmVhZGVyO2kub25sb2FkPSgpPT50KGkucmVzdWx0KSxpLm9uZXJyb3I9KCk9Pm4oaS5lcnJvciksaS5yZWFkQXNBcnJheUJ1ZmZlcihlKX0pKTtyZXR1cm4gaCR0KHt0aW1pbmdJZDpCQXQuRkVUQ0hfUEJUWFRfQllURVNfRlJPTV9GSUxFU1lTVEVNLGV2ZW50VmFsdWU6RGF0ZS5ub3coKS1ufSksdH1jb25zdCBpPXlpZWxkIGNKdCh0KTtyZXR1cm4gaCR0KHt0aW1pbmdJZDpCQXQuRkVUQ0hfUEJUWFRfQllURVNfRlJPTV9TRVJWRVIsZXZlbnRWYWx1ZTpEYXRlLm5vdygpLW59KSxpfSkpKSxpLEJBdC5GRVRDSF9QQlRYVF9CWVRFUykudGhlbigodD0+ZyR0KCJQYXJzaW5nIGdyYXBoLnBidHh0Iiw2MCwoKCk9PihmdW5jdGlvbiBlKHQpe3JldHVybiBmSnQodCxkSnQpfSkodCkpLGksQkF0LlBBUlNFX1BCVFhUX0lOVE9fT0JKRUNUKSkpfWxKdC50ZW1wbGF0ZT14ZWAKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGNvbG9yOiAjNTU1OwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgLS10Yi1ncmFwaC1jb250cm9scy10aXRsZS1jb2xvcjogIzAwMDsKICAgICAgICAtLXRiLWdyYXBoLWNvbnRyb2xzLWxlZ2VuZC10ZXh0LWNvbG9yOiAjMDAwOwogICAgICAgIC0tdGItZ3JhcGgtY29udHJvbHMtdGV4dC1jb2xvcjogIzU1NTsKICAgICAgICAtLXRiLWdyYXBoLWNvbnRyb2xzLXRpdGxlLWZvbnQtc2l6ZTogMTRweDsKICAgICAgICAtLXRiLWdyYXBoLWNvbnRyb2xzLXN1YnRpdGxlLWZvbnQtc2l6ZTogMTRweDsKICAgICAgICAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1zaGFyZWQtaW5wdXQtc3R5bGVfLV9mb250LXNpemU6IDE0cHg7CiAgICAgICAgLS1wYXBlci1mb250LXN1YmhlYWRfLV9mb250LXNpemU6IDE0cHg7CiAgICAgIH0KCiAgICAgIDpob3N0KC5kYXJrLW1vZGUpIHsKICAgICAgICAtLXRiLWdyYXBoLWNvbnRyb2xzLXRpdGxlLWNvbG9yOiAjZmZmOwogICAgICAgIC0tdGItZ3JhcGgtY29udHJvbHMtbGVnZW5kLXRleHQtY29sb3I6ICNmM2YzZjM7CiAgICAgICAgLS10Yi1ncmFwaC1jb250cm9scy10ZXh0LWNvbG9yOiAjZWVlOwogICAgICB9CgogICAgICBwYXBlci1kcm9wZG93bi1tZW51IHsKICAgICAgICAtLXBhcGVyLWRyb3Bkb3duLW1lbnUtaW5wdXQ6IHsKICAgICAgICAgIHBhZGRpbmc6IDA7CiAgICAgICAgICBjb2xvcjogZ3JheTsKICAgICAgICB9CiAgICAgICAgLS1pcm9uLWljb24td2lkdGg6IDE1cHg7CiAgICAgICAgLS1pcm9uLWljb24taGVpZ2h0OiAxNXB4OwogICAgICAgIC0tcHJpbWFyeS10ZXh0LWNvbG9yOiBncmF5OwogICAgICAgIC0tcGFwZXItaXRlbS1taW4taGVpZ2h0OiAzMHB4OwogICAgICB9CgogICAgICBwYXBlci1idXR0b25bcmFpc2VkXS5rZXlib2FyZC1mb2N1cyB7CiAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKICAgICAgfQoKICAgICAgLnJ1bi1kcm9wZG93biB7CiAgICAgICAgLS1wYXBlci1pbnB1dC1jb250YWluZXI6IHsKICAgICAgICAgIHBhZGRpbmc6IDVweCAwIDVweCA1cHg7CiAgICAgICAgfQogICAgICB9CgogICAgICB0YWJsZSB7CiAgICAgICAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsKICAgICAgICBib3JkZXItc3BhY2luZzogMDsKICAgICAgfQoKICAgICAgdGFibGUgdHIgewogICAgICAgIGhlaWdodDogMjBweDsKICAgICAgfQoKICAgICAgdGFibGUgdGQgewogICAgICAgIHBhZGRpbmc6IDA7CiAgICAgICAgbWFyZ2luOiAwOwogICAgICB9CgogICAgICAuYWxsY29udHJvbHMgewogICAgICAgIHBhZGRpbmc6IDAgMjBweCAyMHB4OwogICAgICAgIGZsZXgtZ3JvdzogMTsKICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgICB9CgogICAgICAubGVnZW5kLWhvbGRlciB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc2Vjb25kYXJ5LWJhY2tncm91bmQtY29sb3IpOwogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgICAgY29sb3I6IHZhcigtLXRiLWdyYXBoLWNvbnRyb2xzLXRleHQtY29sb3IpOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICB9CgogICAgICAubGVnZW5kLXRvb2xiYXIgewogICAgICAgIGFwcGVhcmFuY2U6IG5vbmU7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogaW5oZXJpdDsKICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2NjYzsKICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2NjYzsKICAgICAgICBib3JkZXItcmlnaHQ6IG5vbmU7CiAgICAgICAgYm9yZGVyLWxlZnQ6IG5vbmU7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIGNvbG9yOiB2YXIoLS10Yi1ncmFwaC1jb250cm9scy1sZWdlbmQtdGV4dC1jb2xvcik7CiAgICAgICAgZm9udDogaW5oZXJpdDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICB9CgogICAgICAubGVnZW5kLXRvb2xiYXIsCiAgICAgIC5sZWdlbmQtY29udGVudCB7CiAgICAgICAgcGFkZGluZzogOHB4IDIwcHg7CiAgICAgIH0KCiAgICAgIC50b2dnbGUtbGVnZW5kLWJ1dHRvbiB7CiAgICAgICAgbWF4LWhlaWdodDogMjBweDsKICAgICAgICBtYXgtd2lkdGg6IDIwcHg7CiAgICAgICAgcGFkZGluZzogMDsKICAgICAgfQoKICAgICAgLnRvZ2dsZS1sZWdlbmQtdGV4dCB7CiAgICAgICAgZm9udC1zaXplOiB2YXIoLS10Yi1ncmFwaC1jb250cm9scy1zdWJ0aXRsZS1mb250LXNpemUpOwogICAgICB9CgogICAgICBwYXBlci1yYWRpby1idXR0b24gewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIHBhZGRpbmc6IDVweDsKICAgICAgfQogICAgICBzdmcuaWNvbiwKICAgICAgdGYtZ3JhcGgtaWNvbiB7CiAgICAgICAgd2lkdGg6IDYwcHg7CiAgICAgICAgaGVpZ2h0OiAxOHB4OwogICAgICB9CiAgICAgIC5kb21haW5WYWx1ZXMgewogICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgICAgICAgd2lkdGg6IDE2NXB4OwogICAgICB9CiAgICAgIC5kb21haW5TdGFydCB7CiAgICAgICAgZmxvYXQ6IGxlZnQ7CiAgICAgIH0KICAgICAgLmRvbWFpbkVuZCB7CiAgICAgICAgZmxvYXQ6IHJpZ2h0OwogICAgICB9CiAgICAgIC5jb2xvckJveCB7CiAgICAgICAgd2lkdGg6IDIwcHg7CiAgICAgIH0KCiAgICAgIC5pbWFnZS1pY29uIHsKICAgICAgICB3aWR0aDogMjRweDsKICAgICAgICBoZWlnaHQ6IDI0cHg7CiAgICAgIH0KCiAgICAgIC5oZWxwLWljb24gewogICAgICAgIGhlaWdodDogMTVweDsKICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgcGFkZGluZzogMDsKICAgICAgfQoKICAgICAgLmdyYXkgewogICAgICAgIGNvbG9yOiAjNjY2OwogICAgICB9CgogICAgICAudGl0bGUgewogICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tdGItZ3JhcGgtY29udHJvbHMtdGl0bGUtZm9udC1zaXplKTsKICAgICAgICBtYXJnaW46IDhweCA1cHggOHB4IDA7CiAgICAgICAgY29sb3I6IHZhcigtLXRiLWdyYXBoLWNvbnRyb2xzLXRpdGxlLWNvbG9yKTsKICAgICAgfQogICAgICAudGl0bGUgc21hbGwgewogICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7CiAgICAgIH0KICAgICAgLmRldmljZUxpc3QsCiAgICAgIC54bGFDbHVzdGVyTGlzdCB7CiAgICAgICAgbWF4LWhlaWdodDogMjAwcHg7CiAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKICAgICAgfQoKICAgICAgI2ZpbGUgewogICAgICAgIHBhZGRpbmc6IDhweCAwOwogICAgICB9CgogICAgICAuY29sb3ItbGVnZW5kLXJvdyB7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBjbGVhcjogYm90aDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGhlaWdodDogMjBweDsKICAgICAgICBtYXJnaW4tdG9wOiA1cHg7CiAgICAgIH0KCiAgICAgIC5jb2xvci1sZWdlbmQtcm93IC5sYWJlbCwKICAgICAgLmNvbG9yLWxlZ2VuZC1yb3cgc3ZnLAogICAgICAuY29sb3ItbGVnZW5kLXJvdyB0Zi1ncmFwaC1pY29uIHsKICAgICAgICBmbGV4OiAwIDAgNDBweDsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDIwcHg7CiAgICAgIH0KCiAgICAgIC5kZXZpY2VzLWNoZWNrYm94IGlucHV0IHsKICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0OwogICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgICAgIH0KCiAgICAgIC5jb250cm9sLWhvbGRlciAuaWNvbi1idXR0b24gewogICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tdGItZ3JhcGgtY29udHJvbHMtc3VidGl0bGUtZm9udC1zaXplKTsKICAgICAgICBtYXJnaW46IDAgLTVweDsKICAgICAgICBwYWRkaW5nOiA1cHg7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7CiAgICAgICAgY29sb3I6IHZhcigtLXRiLWdyYXBoLWNvbnRyb2xzLXRleHQtY29sb3IpOwogICAgICB9CgogICAgICAuYnV0dG9uLXRleHQgewogICAgICAgIHBhZGRpbmctbGVmdDogMjBweDsKICAgICAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTsKICAgICAgfQoKICAgICAgLnVwbG9hZC1idXR0b24gewogICAgICAgIHdpZHRoOiAxNjVweDsKICAgICAgICBoZWlnaHQ6IDI1cHg7CiAgICAgICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7CiAgICAgICAgbWFyZ2luLXRvcDogNHB4OwogICAgICB9CgogICAgICAuYnV0dG9uLWljb24gewogICAgICAgIHdpZHRoOiAyNnB4OwogICAgICAgIGhlaWdodDogMjZweDsKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItb3JhbmdlLTUwMCk7CiAgICAgIH0KCiAgICAgIC5oaWRkZW4taW5wdXQgewogICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgIH0KCiAgICAgIC5hbGxjb250cm9scyAuY29udHJvbC1ob2xkZXIgewogICAgICAgIGNsZWFyOiBib3RoOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICB9CgogICAgICAuYWxsY29udHJvbHMgLmNvbnRyb2wtaG9sZGVyLmNvbnRyb2wtb3B0aW9ucyB7CiAgICAgICAgcGFkZGluZzogMCAwIDE1cHggMTVweDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICB9CgogICAgICAuYWxsY29udHJvbHMgLmNvbnRyb2wtaG9sZGVyIHBhcGVyLXRvZ2dsZS1idXR0b24gewogICAgICAgIG1hcmdpbi1ib3R0b206IDVweDsKICAgICAgfQoKICAgICAgc3Bhbi5jb3VudGVyIHsKICAgICAgICBmb250LXNpemU6IHZhcigtLXRiLWdyYXBoLWNvbnRyb2xzLXN1YnRpdGxlLWZvbnQtc2l6ZSk7CiAgICAgICAgY29sb3I6IGdyYXk7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDRweDsKICAgICAgfQoKICAgICAgLnJ1bnMtcm93IC50aXRsZSwKICAgICAgLnRhZ3Mtcm93IC50aXRsZSB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogYmFzZWxpbmU7CiAgICAgIH0KCiAgICAgIC5ydW5zLXJvdyBwYXBlci1pdGVtLAogICAgICAudGFncy1yb3cgcGFwZXItaXRlbSB7CiAgICAgICAgLS1wYXBlci1pdGVtOiB7CiAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICAgIH0KICAgICAgfQoKICAgICAgdGFibGUuY29udHJvbC1ob2xkZXIgewogICAgICAgIGJvcmRlcjogMDsKICAgICAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwogICAgICB9CgogICAgICB0YWJsZS50Zi1ncmFwaC1jb250cm9scyB0ZC5pbnB1dC1lbGVtZW50LXRhYmxlLWRhdGEgewogICAgICAgIHBhZGRpbmc6IDAgMCAwIDIwcHg7CiAgICAgIH0KCiAgICAgIC5zcGFjZXIgewogICAgICAgIGZsZXgtZ3JvdzogMTsKICAgICAgfQoKICAgICAgLmNvbG9yLXRleHQgewogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgIH0KCiAgICAgIC5jb2xvci10ZXh0LmdyYWRpZW50LWNvbnRhaW5lciB7CiAgICAgICAgbWFyZ2luOiAwIDVweDsKICAgICAgfQoKICAgICAgLyoqIE92ZXJyaWRlIGlubGluZSBzdHlsZXMgdGhhdCBzdXBwcmVzcyBwb2ludGVyIGV2ZW50cyBmb3IgZGlzYWJsZWQgYnV0dG9ucy4gT3RoZXJ3aXNlLCB0aGUgKi8KICAgICAgLyogIHRvb2x0aXBzIGRvIG5vdCBhcHBlYXIuICovCiAgICAgIHBhcGVyLXJhZGlvLWdyb3VwIHBhcGVyLXJhZGlvLWJ1dHRvbiB7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IGF1dG8gIWltcG9ydGFudDsKICAgICAgfQoKICAgICAgLmxlZ2VuZC1jbGFyaWZpZXIgewogICAgICAgIGNvbG9yOiAjMjY2MjM2OwogICAgICAgIGN1cnNvcjogaGVscDsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CiAgICAgIH0KCiAgICAgIC5sZWdlbmQtY2xhcmlmaWVyIHBhcGVyLXRvb2x0aXAgewogICAgICAgIHdpZHRoOiAxNTBweDsKICAgICAgfQoKICAgICAgLyoqIE90aGVyd2lzZSwgcG9seW1lciBVSSBjb250cm9scyBhcHBlYXIgYXRvcCBub2RlIHNlYXJjaC4gKi8KICAgICAgdGYtZ3JhcGgtbm9kZS1zZWFyY2ggewogICAgICAgIHotaW5kZXg6IDE7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIH0KCiAgICAgIHBhcGVyLWRyb3Bkb3duLW1lbnUgewogICAgICAgIGZsZXgtZ3JvdzogMTsKICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8ZGl2IGNsYXNzPSJhbGxjb250cm9scyI+CiAgICAgIDxkaXYgY2xhc3M9ImNvbnRyb2wtaG9sZGVyIj4KICAgICAgICA8dGYtZ3JhcGgtbm9kZS1zZWFyY2gKICAgICAgICAgIHNlbGVjdGVkLW5vZGU9Int7c2VsZWN0ZWROb2RlfX0iCiAgICAgICAgICByZW5kZXItaGllcmFyY2h5PSJbW3JlbmRlckhpZXJhcmNoeV1dIgogICAgICAgID48L3RmLWdyYXBoLW5vZGUtc2VhcmNoPgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iY29udHJvbC1ob2xkZXIiPgogICAgICAgIDxwYXBlci1idXR0b24gY2xhc3M9Imljb24tYnV0dG9uIiBvbi10YXA9Il9maXQiIGFsdD0iRml0IHRvIHNjcmVlbiI+CiAgICAgICAgICA8aXJvbi1pY29uIGljb249ImFzcGVjdC1yYXRpbyIgY2xhc3M9ImJ1dHRvbi1pY29uIj48L2lyb24taWNvbj4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJidXR0b24tdGV4dCI+Rml0IHRvIHNjcmVlbjwvc3Bhbj4KICAgICAgICA8L3BhcGVyLWJ1dHRvbj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImNvbnRyb2wtaG9sZGVyIj4KICAgICAgICA8cGFwZXItYnV0dG9uCiAgICAgICAgICBjbGFzcz0iaWNvbi1idXR0b24iCiAgICAgICAgICBvbi1jbGljaz0iZG93bmxvYWQiCiAgICAgICAgICBhbHQ9IkRvd25sb2FkIFBORyIKICAgICAgICA+CiAgICAgICAgICA8aXJvbi1pY29uIGljb249ImZpbGUtZG93bmxvYWQiIGNsYXNzPSJidXR0b24taWNvbiI+PC9pcm9uLWljb24+CiAgICAgICAgICA8c3BhbiBjbGFzcz0iYnV0dG9uLXRleHQiPkRvd25sb2FkIFBORzwvc3Bhbj4KICAgICAgICA8L3BhcGVyLWJ1dHRvbj4KICAgICAgPC9kaXY+CiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tzaG93VXBsb2FkQnV0dG9uXV0iPgogICAgICAgIDxkaXYgY2xhc3M9ImNvbnRyb2wtaG9sZGVyIj4KICAgICAgICAgIDxwYXBlci1idXR0b24KICAgICAgICAgICAgY2xhc3M9Imljb24tYnV0dG9uIgogICAgICAgICAgICBvbi1jbGljaz0iX2dldEZpbGUiCiAgICAgICAgICAgIGFsdD0iVXBsb2FkIGZpbGUiCiAgICAgICAgICAgIHRpdGxlPSJVcGxvYWQgYSBwYnR4dCBmaWxlIHRvIHZpZXcgYSBncmFwaCBmcm9tIHRoZSBsb2NhbCBmaWxlc3lzdGVtIgogICAgICAgICAgPgogICAgICAgICAgICA8aXJvbi1pY29uIGljb249ImZpbGUtdXBsb2FkIiBjbGFzcz0iYnV0dG9uLWljb24iPjwvaXJvbi1pY29uPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0iYnV0dG9uLXRleHQiPlVwbG9hZCBmaWxlPC9zcGFuPgogICAgICAgICAgPC9wYXBlci1idXR0b24+CgogICAgICAgICAgPGRpdiBjbGFzcz0iaGlkZGVuLWlucHV0Ij4KICAgICAgICAgICAgPGlucHV0CiAgICAgICAgICAgICAgdHlwZT0iZmlsZSIKICAgICAgICAgICAgICBpZD0iZmlsZSIKICAgICAgICAgICAgICBuYW1lPSJmaWxlIgogICAgICAgICAgICAgIG9uLWNoYW5nZT0iX3VwZGF0ZUZpbGVJbnB1dCIKICAgICAgICAgICAgICBhY2NlcHQ9Ii5wYnR4dCIKICAgICAgICAgICAgLz4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L3RlbXBsYXRlPgogICAgICA8ZGl2IGNsYXNzPSJjb250cm9sLWhvbGRlciBydW5zLXJvdyI+CiAgICAgICAgPGRpdiBjbGFzcz0idGl0bGUiPgogICAgICAgICAgUnVuIDxzcGFuIGNsYXNzPSJjb3VudGVyIj4oW1tkYXRhc2V0cy5sZW5ndGhdXSk8L3NwYW4+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPHBhcGVyLWRyb3Bkb3duLW1lbnUKICAgICAgICAgIG5vLWxhYmVsLWZsb2F0CiAgICAgICAgICBuby1hbmltYXRpb25zCiAgICAgICAgICBub2luawogICAgICAgICAgaG9yaXpvbnRhbC1hbGlnbj0ibGVmdCIKICAgICAgICAgIGNsYXNzPSJydW4tZHJvcGRvd24iCiAgICAgICAgPgogICAgICAgICAgPHBhcGVyLWxpc3Rib3gKICAgICAgICAgICAgY2xhc3M9ImRyb3Bkb3duLWNvbnRlbnQiCiAgICAgICAgICAgIHNlbGVjdGVkPSJ7e19zZWxlY3RlZFJ1bkluZGV4fX0iCiAgICAgICAgICAgIHNsb3Q9ImRyb3Bkb3duLWNvbnRlbnQiCiAgICAgICAgICA+CiAgICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLXJlcGVhdCIgaXRlbXM9IltbZGF0YXNldHNdXSI+CiAgICAgICAgICAgICAgPHBhcGVyLWl0ZW0+W1tpdGVtLm5hbWVdXTwvcGFwZXItaXRlbT4KICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgIDwvcGFwZXItbGlzdGJveD4KICAgICAgICA8L3BhcGVyLWRyb3Bkb3duLW1lbnU+CiAgICAgIDwvZGl2PgogICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9Iltbc2hvd1Nlc3Npb25SdW5zRHJvcGRvd25dXSI+CiAgICAgICAgPGRpdiBjbGFzcz0iY29udHJvbC1ob2xkZXIgdGFncy1yb3ciPgogICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGUiPgogICAgICAgICAgICBUYWcKICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNvdW50ZXIiCiAgICAgICAgICAgICAgPihbW19udW1UYWdzKGRhdGFzZXRzLCBfc2VsZWN0ZWRSdW5JbmRleCldXSk8L3NwYW4KICAgICAgICAgICAgPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8cGFwZXItZHJvcGRvd24tbWVudQogICAgICAgICAgICBuby1sYWJlbC1mbG9hdAogICAgICAgICAgICBuby1hbmltYXRpb25zCiAgICAgICAgICAgIGhvcml6b250YWwtYWxpZ249ImxlZnQiCiAgICAgICAgICAgIG5vaW5rCiAgICAgICAgICAgIGNsYXNzPSJydW4tZHJvcGRvd24iCiAgICAgICAgICA+CiAgICAgICAgICAgIDxwYXBlci1saXN0Ym94CiAgICAgICAgICAgICAgY2xhc3M9ImRyb3Bkb3duLWNvbnRlbnQiCiAgICAgICAgICAgICAgc2VsZWN0ZWQ9Int7X3NlbGVjdGVkVGFnSW5kZXh9fSIKICAgICAgICAgICAgICBzbG90PSJkcm9wZG93bi1jb250ZW50IgogICAgICAgICAgICA+CiAgICAgICAgICAgICAgPHRlbXBsYXRlCiAgICAgICAgICAgICAgICBpcz0iZG9tLXJlcGVhdCIKICAgICAgICAgICAgICAgIGl0ZW1zPSJbW19nZXRUYWdzKGRhdGFzZXRzLCBfc2VsZWN0ZWRSdW5JbmRleCldXSIKICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICA8cGFwZXItaXRlbT5bW2l0ZW0uZGlzcGxheU5hbWVdXTwvcGFwZXItaXRlbT4KICAgICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICA8L3BhcGVyLWxpc3Rib3g+CiAgICAgICAgICA8L3BhcGVyLWRyb3Bkb3duLW1lbnU+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDxkaXYgY2xhc3M9InRpdGxlIj5HcmFwaCB0eXBlPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImNvbnRyb2wtaG9sZGVyIGNvbnRyb2wtb3B0aW9ucyI+CiAgICAgICAgPHBhcGVyLXJhZGlvLWdyb3VwCiAgICAgICAgICBzZWxlY3RlZD0ie3tfc2VsZWN0ZWRHcmFwaFR5cGV9fSIKICAgICAgICAgIG9uLXBhcGVyLXJhZGlvLWdyb3VwLWNoYW5nZWQ9Il9vbkdyYXBoVHlwZUNoYW5nZWRCeVVzZXJHZXN0dXJlIgogICAgICAgID4KICAgICAgICAgIDwhLS0gTm90ZSB0aGF0IHRoZSBuYW1lIGhhcyB0byBtYXRjaCB0aGF0IG9mIHRmX2dyYXBoX2NvbW1vbi5TZWxlY3Rpb25UeXBlLiAtLT4KICAgICAgICAgIDxwYXBlci1yYWRpby1idXR0b24KICAgICAgICAgICAgbmFtZT0ib3BfZ3JhcGgiCiAgICAgICAgICAgIGRpc2FibGVkPSJbW19nZXRTZWxlY3Rpb25PcEdyYXBoRGlzYWJsZWQoZGF0YXNldHMsIF9zZWxlY3RlZFJ1bkluZGV4LCBfc2VsZWN0ZWRUYWdJbmRleCldXSIKICAgICAgICAgICAgPk9wIGdyYXBoPC9wYXBlci1yYWRpby1idXR0b24KICAgICAgICAgID4KICAgICAgICAgIDxwYXBlci1yYWRpby1idXR0b24KICAgICAgICAgICAgbmFtZT0iY29uY2VwdHVhbF9ncmFwaCIKICAgICAgICAgICAgZGlzYWJsZWQ9IltbX2dldFNlbGVjdGlvbkNvbmNlcHR1YWxHcmFwaERpc2FibGVkKGRhdGFzZXRzLCBfc2VsZWN0ZWRSdW5JbmRleCwgX3NlbGVjdGVkVGFnSW5kZXgpXV0iCiAgICAgICAgICAgID5Db25jZXB0dWFsIGdyYXBoPC9wYXBlci1yYWRpby1idXR0b24KICAgICAgICAgID4KICAgICAgICAgIDxwYXBlci1yYWRpby1idXR0b24KICAgICAgICAgICAgbmFtZT0icHJvZmlsZSIKICAgICAgICAgICAgZGlzYWJsZWQ9IltbX2dldFNlbGVjdGlvblByb2ZpbGVEaXNhYmxlZChkYXRhc2V0cywgX3NlbGVjdGVkUnVuSW5kZXgsIF9zZWxlY3RlZFRhZ0luZGV4KV1dIgogICAgICAgICAgICA+UHJvZmlsZTwvcGFwZXItcmFkaW8tYnV0dG9uCiAgICAgICAgICA+CiAgICAgICAgPC9wYXBlci1yYWRpby1ncm91cD4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9InRpdGxlIj5Ob2RlIG9wdGlvbnM8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iY29udHJvbC1ob2xkZXIgY29udHJvbC1vcHRpb25zIj4KICAgICAgICA8cGFwZXItdG9nZ2xlLWJ1dHRvbgogICAgICAgICAgY2hlY2tlZD0ie3t0cmFjZUlucHV0c319IgogICAgICAgICAgb24tY2hhbmdlPSJfb25UcmFjZUlucHV0c0NoYW5nZWRCeVVzZXJHZXN0dXJlIgogICAgICAgID4KICAgICAgICAgIFRyYWNlIGlucHV0cwogICAgICAgIDwvcGFwZXItdG9nZ2xlLWJ1dHRvbj4KICAgICAgICA8cGFwZXItdG9nZ2xlLWJ1dHRvbiBjaGVja2VkPSJ7e2F1dG9FeHRyYWN0Tm9kZXN9fSI+CiAgICAgICAgICBBdXRvLWV4dHJhY3QgaGlnaC1kZWdyZWUgbm9kZXMKICAgICAgICA8L3BhcGVyLXRvZ2dsZS1idXR0b24+CiAgICAgIDwvZGl2PgogICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbaGVhbHRoUGlsbHNGZWF0dXJlRW5hYmxlZF1dIj4KICAgICAgICA8ZGl2IGNsYXNzPSJjb250cm9sLWhvbGRlciI+CiAgICAgICAgICA8cGFwZXItdG9nZ2xlLWJ1dHRvbiBjaGVja2VkPSJ7e2hlYWx0aFBpbGxzVG9nZ2xlZE9ufX0iCiAgICAgICAgICAgID5TaG93IGhlYWx0aCBwaWxsczwvcGFwZXItdG9nZ2xlLWJ1dHRvbgogICAgICAgICAgPgogICAgICAgIDwvZGl2PgogICAgICA8L3RlbXBsYXRlPgogICAgICA8ZGl2IGNsYXNzPSJ0aXRsZSI+Q29sb3IgYnk8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iY29udHJvbC1ob2xkZXIgY29udHJvbC1vcHRpb25zIj4KICAgICAgICA8cGFwZXItcmFkaW8tZ3JvdXAKICAgICAgICAgIHNlbGVjdGVkPSJ7e2NvbG9yQnl9fSIKICAgICAgICAgIG9uLXBhcGVyLXJhZGlvLWdyb3VwLWNoYW5nZWQ9Il9vbkNvbG9yQnlDaGFuZ2VkQnlVc2VyR2VzdHVyZSIKICAgICAgICA+CiAgICAgICAgICA8cGFwZXItcmFkaW8tYnV0dG9uIG5hbWU9IltbQ29sb3JCeS5OT05FXV0iPk5vbmU8L3BhcGVyLXJhZGlvLWJ1dHRvbj4KCiAgICAgICAgICA8cGFwZXItcmFkaW8tYnV0dG9uIG5hbWU9IltbQ29sb3JCeS5TVFJVQ1RVUkVdXSIKICAgICAgICAgICAgPlN0cnVjdHVyZTwvcGFwZXItcmFkaW8tYnV0dG9uCiAgICAgICAgICA+CgogICAgICAgICAgPHBhcGVyLXJhZGlvLWJ1dHRvbiBuYW1lPSJbW0NvbG9yQnkuREVWSUNFXV0iCiAgICAgICAgICAgID5EZXZpY2U8L3BhcGVyLXJhZGlvLWJ1dHRvbgogICAgICAgICAgPgoKICAgICAgICAgIDxwYXBlci1yYWRpby1idXR0b24KICAgICAgICAgICAgaWQ9InhsYS1jbHVzdGVyLXJhZGlvLWJ1dHRvbiIKICAgICAgICAgICAgbmFtZT0iW1tDb2xvckJ5LlhMQV9DTFVTVEVSXV0iCiAgICAgICAgICAgIGRpc2FibGVkPSJbWyFfeGxhQ2x1c3RlcnNQcm92aWRlZChyZW5kZXJIaWVyYXJjaHkpXV0iCiAgICAgICAgICA+CiAgICAgICAgICAgIFhMQSBjbHVzdGVyCiAgICAgICAgICA8L3BhcGVyLXJhZGlvLWJ1dHRvbj4KICAgICAgICAgIDxwYXBlci10b29sdGlwCiAgICAgICAgICAgIGFuaW1hdGlvbi1kZWxheT0iMCIKICAgICAgICAgICAgZm9yPSJ4bGEtY2x1c3Rlci1yYWRpby1idXR0b24iCiAgICAgICAgICAgIHBvc2l0aW9uPSJyaWdodCIKICAgICAgICAgICAgb2Zmc2V0PSIwIgogICAgICAgICAgPgogICAgICAgICAgICBDb2xvcmluZyBieSBYTEEgY2x1c3RlciBpcyBvbmx5IGVuYWJsZWQgaWYgYXQgbGVhc3QgMSBvcCBzcGVjaWZpZXMKICAgICAgICAgICAgYW4gWExBIGNsdXN0ZXIuCiAgICAgICAgICA8L3BhcGVyLXRvb2x0aXA+CgogICAgICAgICAgPHBhcGVyLXJhZGlvLWJ1dHRvbgogICAgICAgICAgICBpZD0iY29tcHV0ZS10aW1lLXJhZGlvLWJ1dHRvbiIKICAgICAgICAgICAgbmFtZT0iW1tDb2xvckJ5LkNPTVBVVEVfVElNRV1dIgogICAgICAgICAgICBkaXNhYmxlZD0iW1shc3RhdHNdXSIKICAgICAgICAgID4KICAgICAgICAgICAgQ29tcHV0ZSB0aW1lCiAgICAgICAgICA8L3BhcGVyLXJhZGlvLWJ1dHRvbj4KICAgICAgICAgIDxwYXBlci10b29sdGlwCiAgICAgICAgICAgIGFuaW1hdGlvbi1kZWxheT0iMCIKICAgICAgICAgICAgZm9yPSJjb21wdXRlLXRpbWUtcmFkaW8tYnV0dG9uIgogICAgICAgICAgICBwb3NpdGlvbj0icmlnaHQiCiAgICAgICAgICAgIG9mZnNldD0iMCIKICAgICAgICAgID4KICAgICAgICAgICAgQ29sb3JpbmcgYnkgY29tcHV0ZSB0aW1lIGlzIG9ubHkgZW5hYmxlZCBpZiB0aGUgUnVuTWV0YWRhdGEgcHJvdG8gaXMKICAgICAgICAgICAgcGFzc2VkIHRvIHRoZSBGaWxlV3JpdGVyIHdoZW4gYSBzcGVjaWZpYyBzZXNzaW9uIGlzIHJ1bi4KICAgICAgICAgIDwvcGFwZXItdG9vbHRpcD4KCiAgICAgICAgICA8cGFwZXItcmFkaW8tYnV0dG9uCiAgICAgICAgICAgIGlkPSJtZW1vcnktcmFkaW8tYnV0dG9uIgogICAgICAgICAgICBuYW1lPSJbW0NvbG9yQnkuTUVNT1JZXV0iCiAgICAgICAgICAgIGRpc2FibGVkPSJbWyFzdGF0c11dIgogICAgICAgICAgPgogICAgICAgICAgICBNZW1vcnkKICAgICAgICAgIDwvcGFwZXItcmFkaW8tYnV0dG9uPgogICAgICAgICAgPHBhcGVyLXRvb2x0aXAKICAgICAgICAgICAgYW5pbWF0aW9uLWRlbGF5PSIwIgogICAgICAgICAgICBmb3I9Im1lbW9yeS1yYWRpby1idXR0b24iCiAgICAgICAgICAgIHBvc2l0aW9uPSJyaWdodCIKICAgICAgICAgICAgb2Zmc2V0PSIwIgogICAgICAgICAgPgogICAgICAgICAgICBDb2xvcmluZyBieSBtZW1vcnkgaXMgb25seSBlbmFibGVkIGlmIHRoZSBSdW5NZXRhZGF0YSBwcm90byBpcwogICAgICAgICAgICBwYXNzZWQgdG8gdGhlIEZpbGVXcml0ZXIgd2hlbiBhIHNwZWNpZmljIHNlc3Npb24gaXMgcnVuLgogICAgICAgICAgPC9wYXBlci10b29sdGlwPgoKICAgICAgICAgIDxwYXBlci1yYWRpby1idXR0b24KICAgICAgICAgICAgaWQ9InRwdS1jb21wYXRpYmlsaXR5LXJhZGlvLWJ1dHRvbiIKICAgICAgICAgICAgbmFtZT0iW1tDb2xvckJ5Lk9QX0NPTVBBVElCSUxJVFldXSIKICAgICAgICAgID4KICAgICAgICAgICAgVFBVIGNvbXBhdGliaWxpdHkKICAgICAgICAgIDwvcGFwZXItcmFkaW8tYnV0dG9uPgogICAgICAgICAgPHBhcGVyLXRvb2x0aXAKICAgICAgICAgICAgYW5pbWF0aW9uLWRlbGF5PSIwIgogICAgICAgICAgICBmb3I9InRwdS1jb21wYXRpYmlsaXR5LXJhZGlvLWJ1dHRvbiIKICAgICAgICAgICAgcG9zaXRpb249InJpZ2h0IgogICAgICAgICAgICBvZmZzZXQ9IjAiCiAgICAgICAgICA+CiAgICAgICAgICAgIENvbG9yaW5nIGJ5IHdoZXRoZXIgYW4gb3BlcmF0aW9uIGlzIGNvbXBhdGlibGUgZm9yIHRoZSBUUFUgZGV2aWNlLgogICAgICAgICAgPC9wYXBlci10b29sdGlwPgogICAgICAgIDwvcGFwZXItcmFkaW8tZ3JvdXA+CiAgICAgICAgPHNwYW4gY2xhc3M9InNwYWNlciI+PC9zcGFuPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0ibGVnZW5kLWhvbGRlciI+CiAgICAgIDxidXR0b24gY2xhc3M9ImxlZ2VuZC10b29sYmFyIiBvbi1jbGljaz0iX3RvZ2dsZUxlZ2VuZE9wZW4iPgogICAgICAgIDxzcGFuIGNsYXNzPSJ0b2dnbGUtbGVnZW5kLXRleHQiPkxlZ2VuZDwvc3Bhbj4KICAgICAgICA8aXJvbi1pY29uCiAgICAgICAgICBpY29uPSJbW19nZXRUb2dnbGVMZWdlbmRJY29uKF9sZWdlbmRPcGVuZWQpXV0iCiAgICAgICAgICBjbGFzcz0idG9nZ2xlLWxlZ2VuZC1idXR0b24iCiAgICAgICAgPgogICAgICAgIDwvaXJvbi1pY29uPgogICAgICA8L2J1dHRvbj4KICAgICAgPGlyb24tY29sbGFwc2Ugb3BlbmVkPSJbW19sZWdlbmRPcGVuZWRdXSIgY2xhc3M9ImxlZ2VuZC1jb250ZW50Ij4KICAgICAgICA8IS0tIENvbG9yLW1vZGUtc3BlY2lmaWMgbGVnZW5kIGl0ZW1zIC0tPgogICAgICAgIDxkaXY+CiAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2lzR3JhZGllbnRDb2xvcmluZyhzdGF0cywgY29sb3JCeSldXSI+CiAgICAgICAgICAgIDxzdmcgd2lkdGg9IjE0MCIgaGVpZ2h0PSIyMCIgY2xhc3M9ImNvbG9yLXRleHQgZ3JhZGllbnQtY29udGFpbmVyIj4KICAgICAgICAgICAgICA8ZGVmcz4KICAgICAgICAgICAgICAgIDxsaW5lYXJHcmFkaWVudAogICAgICAgICAgICAgICAgICBpZD0ibGluZWFyR3JhZGllbnQiCiAgICAgICAgICAgICAgICAgIHgxPSIwJSIKICAgICAgICAgICAgICAgICAgeTE9IjAlIgogICAgICAgICAgICAgICAgICB4Mj0iMTAwJSIKICAgICAgICAgICAgICAgICAgeTI9IjAlIgogICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICA8c3RvcAogICAgICAgICAgICAgICAgICAgIGNsYXNzPSJzdGFydCIKICAgICAgICAgICAgICAgICAgICBvZmZzZXQ9IjAlIgogICAgICAgICAgICAgICAgICAgIHN0b3AtY29sb3IkPSJbW19jdXJyZW50R3JhZGllbnRQYXJhbXMuc3RhcnRDb2xvcl1dIgogICAgICAgICAgICAgICAgICA+PC9zdG9wPgogICAgICAgICAgICAgICAgICA8c3RvcAogICAgICAgICAgICAgICAgICAgIGNsYXNzPSJlbmQiCiAgICAgICAgICAgICAgICAgICAgb2Zmc2V0PSIxMDAlIgogICAgICAgICAgICAgICAgICAgIHN0b3AtY29sb3IkPSJbW19jdXJyZW50R3JhZGllbnRQYXJhbXMuZW5kQ29sb3JdXSIKICAgICAgICAgICAgICAgICAgPjwvc3RvcD4KICAgICAgICAgICAgICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICAgICAgICAgICAgPC9kZWZzPgogICAgICAgICAgICAgIDxyZWN0CiAgICAgICAgICAgICAgICB4PSIwIgogICAgICAgICAgICAgICAgeT0iMCIKICAgICAgICAgICAgICAgIHdpZHRoPSIxMzUiCiAgICAgICAgICAgICAgICBoZWlnaHQ9IjIwIgogICAgICAgICAgICAgICAgZmlsbD0idXJsKCNsaW5lYXJHcmFkaWVudCkiCiAgICAgICAgICAgICAgICBzdHJva2U9ImJsYWNrIgogICAgICAgICAgICAgID48L3JlY3Q+CiAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb21haW5WYWx1ZXMgY29sb3ItdGV4dCI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG9tYWluU3RhcnQiPltbX2N1cnJlbnRHcmFkaWVudFBhcmFtcy5taW5WYWx1ZV1dPC9kaXY+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG9tYWluRW5kIj5bW19jdXJyZW50R3JhZGllbnRQYXJhbXMubWF4VmFsdWVdXTwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGJyIHN0eWxlPSJjbGVhcjogYm90aCIgLz4KICAgICAgICAgICAgPGRpdj5EZXZpY2VzIGluY2x1ZGVkIGluIHN0YXRzOjwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJkZXZpY2VMaXN0Ij4KICAgICAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1yZXBlYXQiIGl0ZW1zPSJbW19jdXJyZW50RGV2aWNlc11dIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbG9yLWxlZ2VuZC1yb3cgZGV2aWNlcy1jaGVja2JveCI+CiAgICAgICAgICAgICAgICAgIDxzcGFuCiAgICAgICAgICAgICAgICAgICAgPjxpbnB1dAogICAgICAgICAgICAgICAgICAgICAgdHlwZT0iY2hlY2tib3giCiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSQ9IltbaXRlbS5kZXZpY2VdXSIKICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQkPSJbW2l0ZW0udXNlZF1dIgogICAgICAgICAgICAgICAgICAgICAgb24tY2xpY2s9Il9kZXZpY2VDaGVja2JveENsaWNrZWQiCiAgICAgICAgICAgICAgICAgIC8+PC9zcGFuPgogICAgICAgICAgICAgICAgICA8c3Bhbj5bW2l0ZW0uc3VmZml4XV08L3NwYW4+CiAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tpdGVtLmlnbm9yZWRNc2ddXSI+CiAgICAgICAgICAgICAgICAgICAgPHBhcGVyLWljb24tYnV0dG9uCiAgICAgICAgICAgICAgICAgICAgICBpY29uPSJoZWxwIgogICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImhlbHAtaWNvbiIKICAgICAgICAgICAgICAgICAgICA+PC9wYXBlci1pY29uLWJ1dHRvbj4KICAgICAgICAgICAgICAgICAgICA8cGFwZXItdG9vbHRpcAogICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb249InJpZ2h0IgogICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0PSIwIgogICAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uLWRlbGF5PSIwIgogICAgICAgICAgICAgICAgICAgICAgPltbaXRlbS5pZ25vcmVkTXNnXV08L3BhcGVyLXRvb2x0aXAKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2VxdWFscyhjb2xvckJ5LCAnc3RydWN0dXJlJyldXSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbG9yLXRleHQiPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbG9yLWxlZ2VuZC1yb3ciPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhYmVsIj4gY29sb3JzIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjb2xvci1sZWdlbmQtdmFsdWUiPnNhbWUgc3Vic3RydWN0dXJlPC9zcGFuPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbG9yLWxlZ2VuZC1yb3ciPgogICAgICAgICAgICAgICAgPHRmLWdyYXBoLWljb24KICAgICAgICAgICAgICAgICAgdHlwZT0iTUVUQSIKICAgICAgICAgICAgICAgICAgaGVpZ2h0PSIxNiIKICAgICAgICAgICAgICAgICAgZmlsbC1vdmVycmlkZT0iI2VlZSIKICAgICAgICAgICAgICAgICAgc3Ryb2tlLW92ZXJyaWRlPSIjYTZhNmE2IgogICAgICAgICAgICAgICAgPjwvdGYtZ3JhcGgtaWNvbj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjb2xvci1sZWdlbmQtdmFsdWUiPnVuaXF1ZSBzdWJzdHJ1Y3R1cmU8L3NwYW4+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfZXF1YWxzKGNvbG9yQnksICdkZXZpY2UnKV1dIj4KICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1yZXBlYXQiIGl0ZW1zPSJbW19jdXJyZW50RGV2aWNlUGFyYW1zXV0iPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sb3ItbGVnZW5kLXJvdyI+CiAgICAgICAgICAgICAgICAgIDx0Zi1ncmFwaC1pY29uCiAgICAgICAgICAgICAgICAgICAgdHlwZT0iTUVUQSIKICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9IjE2IgogICAgICAgICAgICAgICAgICAgIGZpbGwtb3ZlcnJpZGU9IltbaXRlbS5jb2xvcl1dIgogICAgICAgICAgICAgICAgICAgIHN0cm9rZS1vdmVycmlkZT0iI2E2YTZhNiIKICAgICAgICAgICAgICAgICAgPjwvdGYtZ3JhcGgtaWNvbj4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNvbG9yLWxlZ2VuZC12YWx1ZSI+W1tpdGVtLmRldmljZV1dPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2xvci1sZWdlbmQtcm93Ij4KICAgICAgICAgICAgICAgIDx0Zi1ncmFwaC1pY29uCiAgICAgICAgICAgICAgICAgIHR5cGU9Ik1FVEEiCiAgICAgICAgICAgICAgICAgIGhlaWdodD0iMTYiCiAgICAgICAgICAgICAgICAgIGZpbGwtb3ZlcnJpZGU9IiNlZWUiCiAgICAgICAgICAgICAgICAgIHN0cm9rZS1vdmVycmlkZT0iI2E2YTZhNiIKICAgICAgICAgICAgICAgID48L3RmLWdyYXBoLWljb24+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY29sb3ItbGVnZW5kLXZhbHVlIj51bmtub3duIGRldmljZTwvc3Bhbj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19lcXVhbHMoY29sb3JCeSwgJ3hsYV9jbHVzdGVyJyldXSI+CiAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20tcmVwZWF0IiBpdGVtcz0iW1tfY3VycmVudFhsYUNsdXN0ZXJQYXJhbXNdXSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2xvci1sZWdlbmQtcm93Ij4KICAgICAgICAgICAgICAgICAgPHN2Zz4KICAgICAgICAgICAgICAgICAgICA8dXNlCiAgICAgICAgICAgICAgICAgICAgICB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIKICAgICAgICAgICAgICAgICAgICAgIHhsaW5rOmhyZWY9IiN1bmZpbGxlZC1yZWN0IgogICAgICAgICAgICAgICAgICAgICAgeD0iMCIKICAgICAgICAgICAgICAgICAgICAgIHk9IjAiCiAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZmlsbDpbW2l0ZW0uY29sb3JdXSIKICAgICAgICAgICAgICAgICAgICA+PC91c2U+CiAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY29sb3ItbGVnZW5kLXZhbHVlIj5bW2l0ZW0ueGxhX2NsdXN0ZXJdXTwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sb3ItbGVnZW5kLXJvdyI+CiAgICAgICAgICAgICAgICA8c3ZnPgogICAgICAgICAgICAgICAgICA8dXNlCiAgICAgICAgICAgICAgICAgICAgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiCiAgICAgICAgICAgICAgICAgICAgeGxpbms6aHJlZj0iI2dyZXktcmVjdCIKICAgICAgICAgICAgICAgICAgICB4PSIwIgogICAgICAgICAgICAgICAgICAgIHk9IjAiCiAgICAgICAgICAgICAgICAgID48L3VzZT4KICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNvbG9yLWxlZ2VuZC12YWx1ZSI+dW5rbm93biBYTEEgY2x1c3Rlcjwvc3Bhbj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19lcXVhbHMoY29sb3JCeSwgJ29wX2NvbXBhdGliaWxpdHknKV1dIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sb3ItdGV4dCI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sb3ItbGVnZW5kLXJvdyI+CiAgICAgICAgICAgICAgICA8dGYtZ3JhcGgtaWNvbgogICAgICAgICAgICAgICAgICB0eXBlPSJPUCIKICAgICAgICAgICAgICAgICAgaGVpZ2h0PSIxNiIKICAgICAgICAgICAgICAgICAgZmlsbC1vdmVycmlkZT0iIzBmOWQ1OCIKICAgICAgICAgICAgICAgICAgc3Ryb2tlLW92ZXJyaWRlPSIjY2NjIgogICAgICAgICAgICAgICAgPjwvdGYtZ3JhcGgtaWNvbj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjb2xvci1sZWdlbmQtdmFsdWUiPlZhbGlkIE9wPC9zcGFuPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbG9yLWxlZ2VuZC1yb3ciPgogICAgICAgICAgICAgICAgPHRmLWdyYXBoLWljb24KICAgICAgICAgICAgICAgICAgdHlwZT0iT1AiCiAgICAgICAgICAgICAgICAgIGhlaWdodD0iMTYiCiAgICAgICAgICAgICAgICAgIGZpbGwtb3ZlcnJpZGU9IiNkYjQ0MzciCiAgICAgICAgICAgICAgICAgIHN0cm9rZS1vdmVycmlkZT0iI2NjYyIKICAgICAgICAgICAgICAgID48L3RmLWdyYXBoLWljb24+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY29sb3ItbGVnZW5kLXZhbHVlIj5JbnZhbGlkIE9wPC9zcGFuPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX3N0YXRzTm90TnVsbChzdGF0cyldXSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbG9yLWxlZ2VuZC1yb3ciPgogICAgICAgICAgICAgIDx0Zi1ncmFwaC1pY29uIHR5cGU9Ik1FVEEiIGhlaWdodD0iMTYiIGZhZGVkPjwvdGYtZ3JhcGgtaWNvbj4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY29sb3ItbGVnZW5kLXZhbHVlIj51bnVzZWQgc3Vic3RydWN0dXJlPC9zcGFuPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDwhLS0gQ29tbW9uIGxlZ2VuZCBpdGVtcyAtLT4KICAgICAgICA8ZGl2PgogICAgICAgICAgPHRhYmxlPgogICAgICAgICAgICA8dGJvZHk+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+KCogPSBleHBhbmRhYmxlKTwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgIDx0Zi1ncmFwaC1pY29uCiAgICAgICAgICAgICAgICAgICAgdHlwZT0iTUVUQSIKICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9IjE2IgogICAgICAgICAgICAgICAgICAgIGZpbGwtb3ZlcnJpZGU9IiNkOWQ5ZDkiCiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLW92ZXJyaWRlPSIjY2NjIgogICAgICAgICAgICAgICAgICA+PC90Zi1ncmFwaC1pY29uPgogICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgTmFtZXNwYWNlPHNwYW4gY2xhc3M9ImdyYXkiPio8L3NwYW4+CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxlZ2VuZC1jbGFyaWZpZXIiPgogICAgICAgICAgICAgICAgICAgIDxzcGFuPj88L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPHBhcGVyLXRvb2x0aXAKICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbi1kZWxheT0iMCIKICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uPSJyaWdodCIKICAgICAgICAgICAgICAgICAgICAgIG9mZnNldD0iMCIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICBFbmNhcHN1bGF0ZXMgYSBzZXQgb2Ygbm9kZXMuIE5hbWVzcGFjZSBpcyBoaWVyYXJjaGljYWwgYW5kCiAgICAgICAgICAgICAgICAgICAgICBiYXNlZCBvbiBzY29wZS4KICAgICAgICAgICAgICAgICAgICA8L3BhcGVyLXRvb2x0aXA+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgPHRmLWdyYXBoLWljb24gdHlwZT0iT1AiIGhlaWdodD0iMTYiPjwvdGYtZ3JhcGgtaWNvbj4KICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgIE9wTm9kZQogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsZWdlbmQtY2xhcmlmaWVyIj4KICAgICAgICAgICAgICAgICAgICA8c3Bhbj4/PC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDxwYXBlci10b29sdGlwCiAgICAgICAgICAgICAgICAgICAgICBhbmltYXRpb24tZGVsYXk9IjAiCiAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbj0icmlnaHQiCiAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ9IjAiCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgTm9kZSB0aGF0IHBlcmZvcm1zIGFuIG9wZXJhdGlvbi4gVGhlc2Ugbm9kZXMgY2Fubm90CiAgICAgICAgICAgICAgICAgICAgICBleHBhbmQuCiAgICAgICAgICAgICAgICAgICAgPC9wYXBlci10b29sdGlwPgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgIDx0Zi1ncmFwaC1pY29uIHR5cGU9IlNFUklFUyIgaGVpZ2h0PSIxNiI+PC90Zi1ncmFwaC1pY29uPgogICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgVW5jb25uZWN0ZWQgc2VyaWVzPHNwYW4gY2xhc3M9ImdyYXkiPio8L3NwYW4+CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxlZ2VuZC1jbGFyaWZpZXIiPgogICAgICAgICAgICAgICAgICAgIDxzcGFuPj88L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPHBhcGVyLXRvb2x0aXAKICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbi1kZWxheT0iMCIKICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uPSJyaWdodCIKICAgICAgICAgICAgICAgICAgICAgIG9mZnNldD0iMCIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICBTZXF1ZW5jZSBvZiBudW1iZXJlZCBub2RlcyB0aGF0IGFyZSBub3QgY29ubmVjdGVkIHRvIGVhY2gKICAgICAgICAgICAgICAgICAgICAgIG90aGVyLgogICAgICAgICAgICAgICAgICAgIDwvcGFwZXItdG9vbHRpcD4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICA8dGYtZ3JhcGgtaWNvbgogICAgICAgICAgICAgICAgICAgIHR5cGU9IlNFUklFUyIKICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9IjE2IgogICAgICAgICAgICAgICAgICAgIHZlcnRpY2FsCiAgICAgICAgICAgICAgICAgID48L3RmLWdyYXBoLWljb24+CiAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICBDb25uZWN0ZWQgc2VyaWVzPHNwYW4gY2xhc3M9ImdyYXkiPio8L3NwYW4+CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxlZ2VuZC1jbGFyaWZpZXIiPgogICAgICAgICAgICAgICAgICAgIDxzcGFuPj88L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPHBhcGVyLXRvb2x0aXAKICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbi1kZWxheT0iMCIKICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uPSJyaWdodCIKICAgICAgICAgICAgICAgICAgICAgIG9mZnNldD0iMCIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICBTZXF1ZW5jZSBvZiBudW1iZXJlZCBub2RlcyB0aGF0IGFyZSBjb25uZWN0ZWQgdG8gZWFjaAogICAgICAgICAgICAgICAgICAgICAgb3RoZXIuCiAgICAgICAgICAgICAgICAgICAgPC9wYXBlci10b29sdGlwPgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Imljb24iPgogICAgICAgICAgICAgICAgICAgIDxjaXJjbGUKICAgICAgICAgICAgICAgICAgICAgIGZpbGw9IndoaXRlIgogICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPSIjODQ4NDg0IgogICAgICAgICAgICAgICAgICAgICAgY3g9IjEwIgogICAgICAgICAgICAgICAgICAgICAgY3k9IjEwIgogICAgICAgICAgICAgICAgICAgICAgcj0iNSIKICAgICAgICAgICAgICAgICAgICA+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgQ29uc3RhbnQKICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGVnZW5kLWNsYXJpZmllciI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4+Pzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8cGFwZXItdG9vbHRpcAogICAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uLWRlbGF5PSIwIgogICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb249InJpZ2h0IgogICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0PSIwIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgIE5vZGUgdGhhdCBvdXRwdXRzIGEgY29uc3RhbnQgdmFsdWUuCiAgICAgICAgICAgICAgICAgICAgPC9wYXBlci10b29sdGlwPgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgIDx0Zi1ncmFwaC1pY29uIHR5cGU9IlNVTU1BUlkiIGhlaWdodD0iMjAiPjwvdGYtZ3JhcGgtaWNvbj4KICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgIFN1bW1hcnkKICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGVnZW5kLWNsYXJpZmllciI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4+Pzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8cGFwZXItdG9vbHRpcAogICAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uLWRlbGF5PSIwIgogICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb249InJpZ2h0IgogICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0PSIwIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgIE5vZGUgdGhhdCBjb2xsZWN0cyBkYXRhIGZvciB2aXN1YWxpemF0aW9uIHdpdGhpbgogICAgICAgICAgICAgICAgICAgICAgVGVuc29yQm9hcmQuCiAgICAgICAgICAgICAgICAgICAgPC9wYXBlci10b29sdGlwPgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgIDxzdmcKICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaWNvbiIKICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9IjE1cHgiCiAgICAgICAgICAgICAgICAgICAgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pbllNaWQgbWVldCIKICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PSIwIDAgMTUgMTUiCiAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICA8ZGVmcz4KICAgICAgICAgICAgICAgICAgICAgIDxtYXJrZXIKICAgICAgICAgICAgICAgICAgICAgICAgaWQ9ImRhdGFmbG93LWFycm93aGVhZC1sZWdlbmQiCiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9IiNiYmIiCiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtlcldpZHRoPSIxMCIKICAgICAgICAgICAgICAgICAgICAgICAgbWFya2VySGVpZ2h0PSIxMCIKICAgICAgICAgICAgICAgICAgICAgICAgcmVmWD0iOSIKICAgICAgICAgICAgICAgICAgICAgICAgcmVmWT0iNSIKICAgICAgICAgICAgICAgICAgICAgICAgb3JpZW50PSJhdXRvLXN0YXJ0LXJldmVyc2UiCiAgICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0gMCwwIEwgMTAsNSBMIDAsMTAgQyAzLDcgMywzIDAsMCI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgPC9tYXJrZXI+CiAgICAgICAgICAgICAgICAgICAgPC9kZWZzPgogICAgICAgICAgICAgICAgICAgIDxwYXRoCiAgICAgICAgICAgICAgICAgICAgICBtYXJrZXItZW5kPSJ1cmwoI2RhdGFmbG93LWFycm93aGVhZC1sZWdlbmQpIgogICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPSIjYmJiIgogICAgICAgICAgICAgICAgICAgICAgZD0iTTIgOSBsIDI5IDAiCiAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD0icm91bmQiCiAgICAgICAgICAgICAgICAgICAgPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICBEYXRhZmxvdyBlZGdlCiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxlZ2VuZC1jbGFyaWZpZXIiPgogICAgICAgICAgICAgICAgICAgIDxzcGFuPj88L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPHBhcGVyLXRvb2x0aXAKICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbi1kZWxheT0iMCIKICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uPSJyaWdodCIKICAgICAgICAgICAgICAgICAgICAgIG9mZnNldD0iMCIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICBFZGdlIHNob3dpbmcgdGhlIGRhdGEgZmxvdyBiZXR3ZWVuIG9wZXJhdGlvbnMuIEVkZ2VzIGZsb3cKICAgICAgICAgICAgICAgICAgICAgIHVwd2FyZHMgdW5sZXNzIGFycm93aGVhZHMgc3BlY2lmeSBvdGhlcndpc2UuCiAgICAgICAgICAgICAgICAgICAgPC9wYXBlci10b29sdGlwPgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgIDxzdmcKICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaWNvbiIKICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9IjE1cHgiCiAgICAgICAgICAgICAgICAgICAgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pbllNaWQgbWVldCIKICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PSIwIDAgMTUgMTUiCiAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICA8cGF0aAogICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPSIjYmJiIgogICAgICAgICAgICAgICAgICAgICAgZD0iTTIgOSBsIDI5IDAiCiAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD0icm91bmQiCiAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtZGFzaGFycmF5PSIyLCAyIgogICAgICAgICAgICAgICAgICAgID48L3BhdGg+CiAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgQ29udHJvbCBkZXBlbmRlbmN5IGVkZ2UKICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGVnZW5kLWNsYXJpZmllciI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4+Pzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8cGFwZXItdG9vbHRpcAogICAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uLWRlbGF5PSIwIgogICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb249InJpZ2h0IgogICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0PSIwIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgIEVkZ2Ugc2hvd2luZyB0aGUgY29udHJvbCBkZXBlbmRlbmN5IGJldHdlZW4gb3BlcmF0aW9ucy4KICAgICAgICAgICAgICAgICAgICA8L3BhcGVyLXRvb2x0aXA+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgPHN2ZwogICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpY29uIgogICAgICAgICAgICAgICAgICAgIGhlaWdodD0iMTVweCIKICAgICAgICAgICAgICAgICAgICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWluWU1pZCBtZWV0IgogICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9IjAgMCAxNSAxNSIKICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgIDxkZWZzPgogICAgICAgICAgICAgICAgICAgICAgPG1hcmtlcgogICAgICAgICAgICAgICAgICAgICAgICBpZD0icmVmZXJlbmNlLWFycm93aGVhZC1sZWdlbmQiCiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9IiNGRkI3NEQiCiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtlcldpZHRoPSIxMCIKICAgICAgICAgICAgICAgICAgICAgICAgbWFya2VySGVpZ2h0PSIxMCIKICAgICAgICAgICAgICAgICAgICAgICAgcmVmWD0iOSIKICAgICAgICAgICAgICAgICAgICAgICAgcmVmWT0iNSIKICAgICAgICAgICAgICAgICAgICAgICAgb3JpZW50PSJhdXRvLXN0YXJ0LXJldmVyc2UiCiAgICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0gMCwwIEwgMTAsNSBMIDAsMTAgQyAzLDcgMywzIDAsMCI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgPC9tYXJrZXI+CiAgICAgICAgICAgICAgICAgICAgPC9kZWZzPgogICAgICAgICAgICAgICAgICAgIDxwYXRoCiAgICAgICAgICAgICAgICAgICAgICBtYXJrZXItZW5kPSJ1cmwoI3JlZmVyZW5jZS1hcnJvd2hlYWQtbGVnZW5kKSIKICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT0iI0ZGQjc0RCIKICAgICAgICAgICAgICAgICAgICAgIGQ9Ik0yIDkgbCAyOSAwIgogICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogICAgICAgICAgICAgICAgICAgID48L3BhdGg+CiAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgUmVmZXJlbmNlIGVkZ2UKICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGVnZW5kLWNsYXJpZmllciI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4+Pzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8cGFwZXItdG9vbHRpcAogICAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uLWRlbGF5PSIwIgogICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb249InJpZ2h0IgogICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0PSIwIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgIEVkZ2Ugc2hvd2luZyB0aGF0IHRoZSBvdXRnb2luZyBvcGVyYXRpb24gbm9kZSBjYW4gbXV0YXRlCiAgICAgICAgICAgICAgICAgICAgICB0aGUgaW5jb21pbmcgdGVuc29yLgogICAgICAgICAgICAgICAgICAgIDwvcGFwZXItdG9vbHRpcD4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvZGl2PgogICAgICA8L2lyb24tY29sbGFwc2U+CiAgICA8L2Rpdj4KICBgLHQoW28oe3R5cGU6T2JqZWN0LG9ic2VydmVyOiJfc3RhdHNDaGFuZ2VkIn0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxsSnQucHJvdG90eXBlLCJzdGF0cyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdCxub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sbEp0LnByb3RvdHlwZSwiZGV2aWNlc0ZvclN0YXRzIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nLG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxsSnQucHJvdG90eXBlLCJjb2xvckJ5Iix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0LG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxsSnQucHJvdG90eXBlLCJjb2xvckJ5UGFyYW1zIix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXksb2JzZXJ2ZXI6Il9kYXRhc2V0c0NoYW5nZWQifSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGxKdC5wcm90b3R5cGUsImRhdGFzZXRzIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLEFLdCldLGxKdC5wcm90b3R5cGUsInJlbmRlckhpZXJhcmNoeSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdCxub3RpZnk6ITAscmVhZE9ubHk6ITAsY29tcHV0ZWQ6Il9jb21wdXRlU2VsZWN0aW9uKGRhdGFzZXRzLCBfc2VsZWN0ZWRSdW5JbmRleCwgX3NlbGVjdGVkVGFnSW5kZXgsIF9zZWxlY3RlZEdyYXBoVHlwZSkifSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGxKdC5wcm90b3R5cGUsInNlbGVjdGlvbiIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdCxub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sbEp0LnByb3RvdHlwZSwic2VsZWN0ZWRGaWxlIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyLG9ic2VydmVyOiJfc2VsZWN0ZWRSdW5JbmRleENoYW5nZWQifSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLGxKdC5wcm90b3R5cGUsIl9zZWxlY3RlZFJ1bkluZGV4Iix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbixub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLGxKdC5wcm90b3R5cGUsInRyYWNlSW5wdXRzIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbixub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLGxKdC5wcm90b3R5cGUsImF1dG9FeHRyYWN0Tm9kZXMiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXIsb2JzZXJ2ZXI6Il9zZWxlY3RlZFRhZ0luZGV4Q2hhbmdlZCJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sbEp0LnByb3RvdHlwZSwiX3NlbGVjdGVkVGFnSW5kZXgiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sbEp0LnByb3RvdHlwZSwiX3NlbGVjdGVkR3JhcGhUeXBlIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nLG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxsSnQucHJvdG90eXBlLCJzZWxlY3RlZE5vZGUiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxsSnQucHJvdG90eXBlLCJzaG93U2Vzc2lvblJ1bnNEcm9wZG93biIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLGxKdC5wcm90b3R5cGUsInNob3dVcGxvYWRCdXR0b24iLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxsSnQucHJvdG90eXBlLCJoZWFsdGhQaWxsc0ZlYXR1cmVFbmFibGVkIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbixub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLGxKdC5wcm90b3R5cGUsImhlYWx0aFBpbGxzVG9nZ2xlZE9uIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sbEp0LnByb3RvdHlwZSwiX2xlZ2VuZE9wZW5lZCIsdm9pZCAwKSx0KFtzKCJkZXZpY2VzRm9yU3RhdHMiKSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLGxKdC5wcm90b3R5cGUsIl9jdXJyZW50RGV2aWNlcyIsbnVsbCksdChbcygiY29sb3JCeVBhcmFtcyIpLGUoImRlc2lnbjp0eXBlIixBcnJheSksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sbEp0LnByb3RvdHlwZSwiX2N1cnJlbnREZXZpY2VQYXJhbXMiLG51bGwpLHQoW3MoImNvbG9yQnlQYXJhbXMiKSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLGxKdC5wcm90b3R5cGUsIl9jdXJyZW50WGxhQ2x1c3RlclBhcmFtcyIsbnVsbCksdChbcygiY29sb3JCeVBhcmFtcyIsImNvbG9yQnkiKSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxsSnQucHJvdG90eXBlLCJfY3VycmVudEdyYWRpZW50UGFyYW1zIixudWxsKSxsSnQ9dChbaSgidGYtZ3JhcGgtY29udHJvbHMiKV0sbEp0KTtjb25zdCBkSnQ9eyJsaWJyYXJ5LmZ1bmN0aW9uIjohMCwibGlicmFyeS5mdW5jdGlvbi5ub2RlX2RlZiI6ITAsImxpYnJhcnkuZnVuY3Rpb24ubm9kZV9kZWYuaW5wdXQiOiEwLCJsaWJyYXJ5LmZ1bmN0aW9uLm5vZGVfZGVmLmF0dHIiOiEwLCJsaWJyYXJ5LmZ1bmN0aW9uLm5vZGVfZGVmLmF0dHIudmFsdWUubGlzdC5iIjohMCwibGlicmFyeS5mdW5jdGlvbi5ub2RlX2RlZi5hdHRyLnZhbHVlLmxpc3QuZiI6ITAsImxpYnJhcnkuZnVuY3Rpb24ubm9kZV9kZWYuYXR0ci52YWx1ZS5saXN0LmZ1bmMiOiEwLCJsaWJyYXJ5LmZ1bmN0aW9uLm5vZGVfZGVmLmF0dHIudmFsdWUubGlzdC5pIjohMCwibGlicmFyeS5mdW5jdGlvbi5ub2RlX2RlZi5hdHRyLnZhbHVlLmxpc3QucyI6ITAsImxpYnJhcnkuZnVuY3Rpb24ubm9kZV9kZWYuYXR0ci52YWx1ZS5saXN0LnNoYXBlIjohMCwibGlicmFyeS5mdW5jdGlvbi5ub2RlX2RlZi5hdHRyLnZhbHVlLmxpc3Quc2hhcGUuZGltIjohMCwibGlicmFyeS5mdW5jdGlvbi5ub2RlX2RlZi5hdHRyLnZhbHVlLmxpc3QudGVuc29yIjohMCwibGlicmFyeS5mdW5jdGlvbi5ub2RlX2RlZi5hdHRyLnZhbHVlLmxpc3QudHlwZSI6ITAsImxpYnJhcnkuZnVuY3Rpb24ubm9kZV9kZWYuYXR0ci52YWx1ZS5zaGFwZS5kaW0iOiEwLCJsaWJyYXJ5LmZ1bmN0aW9uLm5vZGVfZGVmLmF0dHIudmFsdWUudGVuc29yLnN0cmluZ192YWwiOiEwLCJsaWJyYXJ5LmZ1bmN0aW9uLm5vZGVfZGVmLmF0dHIudmFsdWUudGVuc29yLnRlbnNvcl9zaGFwZS5kaW0iOiEwLCJsaWJyYXJ5LmZ1bmN0aW9uLnNpZ25hdHVyZS5pbnB1dF9hcmciOiEwLCJsaWJyYXJ5LmZ1bmN0aW9uLnNpZ25hdHVyZS5vdXRwdXRfYXJnIjohMCwibGlicmFyeS52ZXJzaW9ucyI6ITAsbm9kZTohMCwibm9kZS5pbnB1dCI6ITAsIm5vZGUuYXR0ciI6ITAsIm5vZGUuYXR0ci52YWx1ZS5saXN0LmIiOiEwLCJub2RlLmF0dHIudmFsdWUubGlzdC5mIjohMCwibm9kZS5hdHRyLnZhbHVlLmxpc3QuZnVuYyI6ITAsIm5vZGUuYXR0ci52YWx1ZS5saXN0LmkiOiEwLCJub2RlLmF0dHIudmFsdWUubGlzdC5zIjohMCwibm9kZS5hdHRyLnZhbHVlLmxpc3Quc2hhcGUiOiEwLCJub2RlLmF0dHIudmFsdWUubGlzdC5zaGFwZS5kaW0iOiEwLCJub2RlLmF0dHIudmFsdWUubGlzdC50ZW5zb3IiOiEwLCJub2RlLmF0dHIudmFsdWUubGlzdC50eXBlIjohMCwibm9kZS5hdHRyLnZhbHVlLnNoYXBlLmRpbSI6ITAsIm5vZGUuYXR0ci52YWx1ZS50ZW5zb3Iuc3RyaW5nX3ZhbCI6ITAsIm5vZGUuYXR0ci52YWx1ZS50ZW5zb3IudGVuc29yX3NoYXBlLmRpbSI6ITB9LHBKdD17InN0ZXBfc3RhdHMuZGV2X3N0YXRzIjohMCwic3RlcF9zdGF0cy5kZXZfc3RhdHMubm9kZV9zdGF0cyI6ITAsInN0ZXBfc3RhdHMuZGV2X3N0YXRzLm5vZGVfc3RhdHMub3V0cHV0IjohMCwic3RlcF9zdGF0cy5kZXZfc3RhdHMubm9kZV9zdGF0cy5tZW1vcnkiOiEwLCJzdGVwX3N0YXRzLmRldl9zdGF0cy5ub2RlX3N0YXRzLm91dHB1dC50ZW5zb3JfZGVzY3JpcHRpb24uc2hhcGUuZGltIjohMH07ZnVuY3Rpb24gZkp0KHQsZSl7bGV0IG49e30saT1bXSxyPVtdLG89bjtmdW5jdGlvbiBhKHQpe2xldCBlPXQuaW5kZXhPZigiOiIpO3JldHVybntuYW1lOnQuc3Vic3RyaW5nKDAsZSkudHJpbSgpLHZhbHVlOihmdW5jdGlvbiBuKHQpe2lmKCJ0cnVlIj09PXQpcmV0dXJuITA7aWYoImZhbHNlIj09PXQpcmV0dXJuITE7aWYoJyInPT09dFswXSlyZXR1cm4gdC5zdWJzdHJpbmcoMSx0Lmxlbmd0aC0xKTtsZXQgZT1wYXJzZUZsb2F0KHQpO3JldHVybiBpc05hTihlKT90OmV9KSh0LnN1YnN0cmluZyhlKzIpLnRyaW0oKSl9fWZ1bmN0aW9uIHModCxuLGkscil7bGV0IG89dFtuXTtudWxsPT1vP3Rbbl09ci5qb2luKCIuIilpbiBlP1tpXTppOkFycmF5LmlzQXJyYXkobyk/by5wdXNoKGkpOnRbbl09W28saV19cmV0dXJuKGZ1bmN0aW9uIGwodCxlLG49MWU2LGk9IlxuIil7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihyLG8peyEoZnVuY3Rpb24gYShzLGwsYyl7Y29uc3QgdT1jPj10LmJ5dGVMZW5ndGgsaD1sLnNwbGl0KGkpO2hbMF09cytoWzBdO2NvbnN0IGQ9dT8iIjpoLnBvcCgpO2ZvcihsZXQgdCBvZiBoKXRyeXtlKHQpfWNhdGNoKHQpe3JldHVybiB2b2lkIG8odCl9aWYodSlyZXR1cm4gdm9pZCByKCEwKTtjb25zdCBwPW5ldyBCbG9iKFt0LnNsaWNlKGMsYytuKV0pLGY9bmV3IEZpbGVSZWFkZXI7Zi5vbmxvYWQ9ZnVuY3Rpb24odCl7YShkLHQudGFyZ2V0LnJlc3VsdCxjK24pfSxmLnJlYWRBc1RleHQocCl9KSgiIiwiIiwwKX0pKX0pKHQsKGZ1bmN0aW9uKHQpe2lmKHQ9dC50cmltKCkpc3dpdGNoKHRbdC5sZW5ndGgtMV0pe2Nhc2UieyI6bGV0IGU9dC5zdWJzdHJpbmcoMCx0Lmxlbmd0aC0yKS50cmltKCksbj17fTtpLnB1c2gobyksci5wdXNoKGUpLHMobyxlLG4sciksbz1uO2JyZWFrO2Nhc2UifSI6bz1pLnBvcCgpLHIucG9wKCk7YnJlYWs7ZGVmYXVsdDpsZXQgbD1hKHQpO3MobyxsLm5hbWUsbC52YWx1ZSxyLmNvbmNhdChsLm5hbWUpKX19KSkudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gbn0pKX1mdW5jdGlvbiBtSnQodCxlLGkscj1uZXcgbkp0LG89YUt0KXtjb25zdCBhPWYkdCh0LDMwLCJEYXRhIikscz1mJHQodCwyMCwiR3JhcGgiKSxsPWYkdCh0LDUwLCJOYW1lc3BhY2UgaGllcmFyY2h5IiksYz1EYXRlLm5vdygpO3JldHVybiBoSnQoZSxpLGEpLnRoZW4oKGZ1bmN0aW9uKHQpe2lmKCF0Lm5vZGUpdGhyb3cgbmV3IEVycm9yKCJUaGUgZ3JhcGggaXMgZW1wdHkuIFRoaXMgY2FuIGhhcHBlbiB3aGVuIFRlbnNvckZsb3cgY291bGQgbm90IHRyYWNlIGFueSBncmFwaC4gUGxlYXNlIHJlZmVyIHRvIGh0dHBzOi8vZ2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmJvYXJkL2lzc3Vlcy8xOTYxIGZvciBtb3JlIGluZm9ybWF0aW9uLiIpO3JldHVybiBxJHQodCxXJHQscyl9KSwoKCk9Pnt0aHJvdyBuZXcgRXJyb3IoIk1hbGZvcm1lZCBHcmFwaERlZi4gVGhpcyBjYW4gc29tZXRpbWVzIGJlIGNhdXNlZCBieSBhIGJhZCBuZXR3b3JrIGNvbm5lY3Rpb24gb3IgZGlmZmljdWx0eSByZWNvbmNpbGluZyBtdWx0aXBsZSBHcmFwaERlZnM7IGZvciB0aGUgbGF0dGVyIGNhc2UsIHBsZWFzZSByZWZlciB0byBodHRwczovL2dpdGh1Yi5jb20vdGVuc29yZmxvdy90ZW5zb3Jib2FyZC9pc3N1ZXMvMTkyOS4iKX0pKS50aGVuKCh0PT5uKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24qKCl7IShmdW5jdGlvbiBlKHQsbil7aWYobnVsbD09PW4pdGhyb3cgbmV3IEVycm9yKCJDb21wYXRpYmlsaXR5IHByb3ZpZGVyIHJlcXVpcmVkLCBidXQgZ290OiAiK24pO0NlLmV4cG9ydHMuZWFjaCh0Lm5vZGVzLCh0PT57dC5jb21wYXRpYmxlPW4ub3BWYWxpZCh0KSxDZS5leHBvcnRzLmVhY2godC5pbkVtYmVkZGluZ3MsKHQ9Pnt0LmNvbXBhdGlibGU9bi5vcFZhbGlkKHQpfSkpLENlLmV4cG9ydHMuZWFjaCh0Lm91dEVtYmVkZGluZ3MsKHQ9Pnt0LmNvbXBhdGlibGU9bi5vcFZhbGlkKHQpfSkpfSkpfSkodCxyKTtjb25zdCBuPXlpZWxkIHNLdCh0LG8sbCk7cmV0dXJuIGgkdCh7dGltaW5nSWQ6QkF0LkdSQVBIX0xPQURfU1VDQ0VFREVELGV2ZW50VmFsdWU6RGF0ZS5ub3coKS1jfSkse2dyYXBoOnQsZ3JhcGhIaWVyYXJjaHk6bn19KSkpKS5jYXRjaCgoZT0+e3Rocm93IHQucmVwb3J0RXJyb3IoYEdyYXBoIHZpc3VhbGl6YXRpb24gZmFpbGVkLlxuXG4ke2V9YCxlKSxoJHQoe3RpbWluZ0lkOkJBdC5HUkFQSF9MT0FEX0ZBSUxFRCxldmVudFZhbHVlOkRhdGUubm93KCktY30pLGV9KSl9bGV0IGdKdD1jbGFzcyBleHRlbmRzKGNyKHdlKSl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuY29tcGF0aWJpbGl0eVByb3ZpZGVyPW5ldyBuSnQsdGhpcy5oaWVyYXJjaHlQYXJhbXM9YUt0LHRoaXMuX3RlbXBsYXRlPW51bGx9X3NlbGVjdGlvbkNoYW5nZWQoKXt0aGlzLnNlbGVjdGlvbiYmdGhpcy5kZWJvdW5jZSgic2VsZWN0aW9uY2hhbmdlIiwoKCk9Pnt0aGlzLl9sb2FkKHRoaXMuc2VsZWN0aW9uKX0pKX1fbG9hZCh0KXtjb25zdHtydW46ZSx0YWc6bix0eXBlOml9PXQ7c3dpdGNoKGkpe2Nhc2UgUVh0Lk9QX0dSQVBIOmNhc2UgUVh0LkNPTkNFUFRVQUxfR1JBUEg6eyhmdW5jdGlvbigpe3RoaXMuX3NldE91dFN0YXRzKG51bGwpfSkuYmluZCh0aGlzKSgpO2NvbnN0IHQ9bmV3IFVSTFNlYXJjaFBhcmFtczt0LnNldCgicnVuIixlKSx0LnNldCgiY29uY2VwdHVhbCIsU3RyaW5nKGk9PT1RWHQuQ09OQ0VQVFVBTF9HUkFQSCkpLG4mJnQuc2V0KCJ0YWciLG4pO2NvbnN0IHI9RXIoKS5wbHVnaW5Sb3V0ZSgiZ3JhcGhzIiwiL2dyYXBoIix0KTtyZXR1cm4gdGhpcy5fZmV0Y2hBbmRDb25zdHJ1Y3RIaWVyYXJjaGljYWxHcmFwaChyKS50aGVuKCgoKT0+e3RoaXMuX2dyYXBoUnVuVGFnPXtydW46ZSx0YWc6bn19KSl9Y2FzZSBRWHQuUFJPRklMRTp7Y29uc3R7dGFnczp0fT10aGlzLmRhdGFzZXRzLmZpbmQoKCh7bmFtZTp0fSk9PnQ9PT1lKSksaT10LmZpbmQoKHQ9PnQudGFnPT09bikpLm9wR3JhcGg/bjpudWxsO2NvbnNvbGUuYXNzZXJ0KHQuZmluZCgodD0+dC50YWc9PT1pKSksYFJlcXVpcmVkIHRhZyAoJHtpfSkgaXMgbWlzc2luZy5gKTtjb25zdCByPSF0aGlzLl9ncmFwaFJ1blRhZ3x8dGhpcy5fZ3JhcGhSdW5UYWcucnVuIT09ZXx8dGhpcy5fZ3JhcGhSdW5UYWcudGFnIT09aT90aGlzLl9sb2FkKHtydW46ZSx0YWc6aSx0eXBlOlFYdC5PUF9HUkFQSH0pOlByb21pc2UucmVzb2x2ZSgpLG89bmV3IFVSTFNlYXJjaFBhcmFtcztvLnNldCgidGFnIixuKSxvLnNldCgicnVuIixlKTtjb25zdCBhPUVyKCkucGx1Z2luUm91dGUoImdyYXBocyIsIi9ydW5fbWV0YWRhdGEiLG8pO3JldHVybiByLnRoZW4oKCgpPT50aGlzLl9yZWFkQW5kUGFyc2VNZXRhZGF0YShhKSkpfWRlZmF1bHQ6cmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihgVW5rbm93biBzZWxlY3Rpb24gdHlwZTogJHtpfWApKX19X3JlYWRBbmRQYXJzZU1ldGFkYXRhKHQpe3RoaXMuc2V0KCJwcm9ncmVzcyIse3ZhbHVlOjAsbXNnOiIifSksdUp0KHQscCR0KHRoaXMpKS50aGVuKGZ1bmN0aW9uKHQpe3RoaXMuX3NldE91dFN0YXRzKHQpfS5iaW5kKHRoaXMpKX1fZmV0Y2hBbmRDb25zdHJ1Y3RIaWVyYXJjaGljYWxHcmFwaCh0LGUpe3RoaXMuc2V0KCJwcm9ncmVzcyIse3ZhbHVlOjAsbXNnOiIifSk7cmV0dXJuIG1KdChwJHQodGhpcyksdCxlLHRoaXMuY29tcGF0aWJpbGl0eVByb3ZpZGVyLHRoaXMuaGllcmFyY2h5UGFyYW1zKS50aGVuKGZ1bmN0aW9uKHtncmFwaDp0LGdyYXBoSGllcmFyY2h5OmV9KXt0aGlzLl9zZXRPdXRHcmFwaCh0KSx0aGlzLl9zZXRPdXRHcmFwaEhpZXJhcmNoeShlKX0uYmluZCh0aGlzKSl9X3NlbGVjdGVkRmlsZUNoYW5nZWQoKXt2YXIgdD10aGlzLnNlbGVjdGVkRmlsZTtpZighdClyZXR1cm47Y29uc3QgZT10LnRhcmdldCxuPWUuZmlsZXNbMF07biYmKGUudmFsdWU9IiIsdGhpcy5fZmV0Y2hBbmRDb25zdHJ1Y3RIaWVyYXJjaGljYWxHcmFwaChudWxsLG4pKX19O3QoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxnSnQucHJvdG90eXBlLCJkYXRhc2V0cyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdCxub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sZ0p0LnByb3RvdHlwZSwicHJvZ3Jlc3MiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sZ0p0LnByb3RvdHlwZSwic2VsZWN0aW9uIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGdKdC5wcm90b3R5cGUsInNlbGVjdGVkRmlsZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxnSnQucHJvdG90eXBlLCJjb21wYXRpYmlsaXR5UHJvdmlkZXIiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sZ0p0LnByb3RvdHlwZSwiaGllcmFyY2h5UGFyYW1zIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0LHJlYWRPbmx5OiEwLG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixyS3QpXSxnSnQucHJvdG90eXBlLCJvdXRHcmFwaEhpZXJhcmNoeSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdCxyZWFkT25seTohMCxub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsSSR0KV0sZ0p0LnByb3RvdHlwZSwib3V0R3JhcGgiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3QscmVhZE9ubHk6ITAsbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGdKdC5wcm90b3R5cGUsIm91dFN0YXRzIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGdKdC5wcm90b3R5cGUsIl9ncmFwaFJ1blRhZyIsdm9pZCAwKSx0KFthKCJzZWxlY3Rpb24iLCJjb21wYXRpYmlsaXR5UHJvdmlkZXIiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLGdKdC5wcm90b3R5cGUsIl9zZWxlY3Rpb25DaGFuZ2VkIixudWxsKSx0KFthKCJzZWxlY3RlZEZpbGUiLCJjb21wYXRpYmlsaXR5UHJvdmlkZXIiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLGdKdC5wcm90b3R5cGUsIl9zZWxlY3RlZEZpbGVDaGFuZ2VkIixudWxsKSxnSnQ9dChbaSgidGYtZ3JhcGgtZGFzaGJvYXJkLWxvYWRlciIpXSxnSnQpO2xldCBfSnQ9Y2xhc3MgZXh0ZW5kcyhjcih3ZSkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9kYXRhc2V0cz1bXSx0aGlzLl9kYXRhc2V0c0ZldGNoZWQ9ITEsdGhpcy5fc2VsZWN0ZWREYXRhc2V0PTAsdGhpcy5fcmVxdWVzdE1hbmFnZXI9bmV3IGJyLHRoaXMuX2NhbmNlbGxlcj1uZXcgeE8sdGhpcy5zcGVjaWZpY0hlYWx0aFBpbGxTdGVwPTAsdGhpcy5oZWFsdGhQaWxsc1RvZ2dsZWRPbj0hMSx0aGlzLl9kZWJ1Z2dlck51bWVyaWNBbGVydHM9W10sdGhpcy5fbm9kZU5hbWVzVG9IZWFsdGhQaWxscz17fSx0aGlzLl9oZWFsdGhQaWxsUmVxdWVzdElkPTEsdGhpcy5faGVhbHRoUGlsbFN0ZXBSZXF1ZXN0VGltZXJEZWxheT01MDAsdGhpcy5ydW49WHMoInJ1biIse2RlZmF1bHRWYWx1ZToiIix1c2VMb2NhbFN0b3JhZ2U6ITF9KS5jYWxsKHRoaXMpLHRoaXMuX3J1bk9ic2VydmVyPSRzKCJydW4iLHtkZWZhdWx0VmFsdWU6IiIscG9seW1lclByb3BlcnR5OiJydW4iLHVzZUxvY2FsU3RvcmFnZTohMX0pfWF0dGFjaGVkKCl7dGhpcy5zZXQoIl9pc0F0dGFjaGVkIiwhMCl9ZGV0YWNoZWQoKXt0aGlzLnNldCgiX2lzQXR0YWNoZWQiLCExKX1yZWFkeSgpe3N1cGVyLnJlYWR5KCksdGhpcy5hZGRFdmVudExpc3RlbmVyKCJub2RlLXRvZ2dsZS1leHBhbmQiLHRoaXMuX2hhbmRsZU5vZGVUb2dnbGVFeHBhbmQuYmluZCh0aGlzKSl9cmVsb2FkKCl7dGhpcy5fZGVidWdnZXJEYXRhRW5hYmxlZHx8dGhpcy5fcmVxdWVzdE1hbmFnZXIucmVxdWVzdChFcigpLnBsdWdpbnNMaXN0aW5nKCkpLnRoZW4odGhpcy5fY2FuY2VsbGVyLmNhbmNlbGxhYmxlKCh0PT57dC5jYW5jZWxsZWR8fHQudmFsdWUuZGVidWdnZXImJnRoaXMuc2V0KCJfZGVidWdnZXJEYXRhRW5hYmxlZCIsITApfSkpKSx0aGlzLl9tYXliZUZldGNoSGVhbHRoUGlsbHMoKX1fZml0KCl7dGhpcy4kJCgiI2dyYXBoYm9hcmQiKS5maXQoKX1fb25Eb3dubG9hZEltYWdlUmVxdWVzdGVkKHQpe3RoaXMuJCQoIiNncmFwaGJvYXJkIikuZG93bmxvYWRBc0ltYWdlKHQuZGV0YWlsKX1fZ2V0R3JhcGhEaXNwbGF5Q2xhc3NOYW1lKHQsZSl7cmV0dXJuIHR8fGUubGVuZ3RoPyIiOiJuby1ncmFwaCJ9X2ZldGNoRGF0YXNldCgpe3JldHVybiB0aGlzLl9yZXF1ZXN0TWFuYWdlci5yZXF1ZXN0KEVyKCkucGx1Z2luUm91dGUoImdyYXBocyIsIi9pbmZvIikpfV9mZXRjaEhlYWx0aFBpbGxzKHQsZSl7Y29uc3Qgbj17bm9kZV9uYW1lczpKU09OLnN0cmluZ2lmeSh0KSxydW46Il9fZGVidWdnZXJfZGF0YV9fIn07dm9pZCAwIT09ZSYmKG4uc3RlcD1lKTtjb25zdCBpPUVyKCkucGx1Z2luUm91dGUoImRlYnVnZ2VyIiwiL2hlYWx0aF9waWxscyIpO3JldHVybiB0aGlzLl9yZXF1ZXN0TWFuYWdlci5yZXF1ZXN0KGksbil9X2ZldGNoRGVidWdnZXJOdW1lcmljc0FsZXJ0cygpe3JldHVybiB0aGlzLl9yZXF1ZXN0TWFuYWdlci5yZXF1ZXN0KEVyKCkucGx1Z2luUm91dGUoImRlYnVnZ2VyIiwiL251bWVyaWNzX2FsZXJ0X3JlcG9ydCIpKX1fZ3JhcGhVcmwodCxlLG4pe3JldHVybiBFcigpLnBsdWdpblJvdXRlKCJncmFwaHMiLCIvZ3JhcGgiLG5ldyBVUkxTZWFyY2hQYXJhbXMoe3J1bjp0LGxpbWl0X2F0dHJfc2l6ZTplLGxhcmdlX2F0dHJzX2tleTpufSkpfV9zaG91bGRSZXF1ZXN0SGVhbHRoUGlsbHMoKXtyZXR1cm4gdGhpcy5fZGVidWdnZXJEYXRhRW5hYmxlZCYmdGhpcy5oZWFsdGhQaWxsc1RvZ2dsZWRPbiYmdGhpcy5fcmVuZGVySGllcmFyY2h5JiZ0aGlzLl9kYXRhc2V0c1N0YXRlKHRoaXMuX2RhdGFzZXRzRmV0Y2hlZCx0aGlzLl9kYXRhc2V0cywiUFJFU0VOVCIpfV9tYXliZUluaXRpYWxpemVEYXNoYm9hcmQoKXshdGhpcy5faW5pdGlhbGl6ZWQmJnRoaXMuX2lzQXR0YWNoZWQmJih0aGlzLnNldCgiX2NvbXBhdGliaWxpdHlQcm92aWRlciIsbmV3IG5KdCksdGhpcy5faW5pdGlhbGl6ZWQ9ITAsdGhpcy5fZmV0Y2hEYXRhc2V0KCkudGhlbigodD0+e2NvbnN0IGU9T2JqZWN0LmtleXModCk7dGhpcy5fZGF0YXNldHM9ZS5zb3J0KHVyKS5tYXAoKGU9Pntjb25zdCBuPXRbZV0saT1PYmplY3Qua2V5cyhuLnRhZ3MpLnNvcnQodXIpLm1hcCgodD0+bi50YWdzW3RdKSkubWFwKCgoe3RhZzp0LGNvbmNlcHR1YWxfZ3JhcGg6ZSxvcF9ncmFwaDpuLHByb2ZpbGU6aX0pPT4oe3RhZzp0LGRpc3BsYXlOYW1lOnQsY29uY2VwdHVhbEdyYXBoOmUsb3BHcmFwaDpuLHByb2ZpbGU6aX0pKSk7cmV0dXJue25hbWU6ZSx0YWdzOm4ucnVuX2dyYXBoP1t7dGFnOm51bGwsZGlzcGxheU5hbWU6IkRlZmF1bHQiLGNvbmNlcHR1YWxHcmFwaDohMSxvcEdyYXBoOiEwLHByb2ZpbGU6ITF9LC4uLmldOml9fSkpLHRoaXMuX2RhdGFzZXRzRmV0Y2hlZD0hMH0pKSl9X2RldGVybWluZVNlbGVjdGVkRGF0YXNldCgpe3ZhciB0PXRoaXMuX2RhdGFzZXRzRmV0Y2hlZCxlPXRoaXMuX2RhdGFzZXRzLG49dGhpcy5ydW47aWYoIW4pcmV0dXJuIHZvaWQgdGhpcy5zZXQoIl9zZWxlY3RlZERhdGFzZXQiLDApO2NvbnN0IGk9ZS5maW5kSW5kZXgoKHQ9PnQubmFtZT09PW4pKTtpZigtMSE9PWkpdGhpcy5zZXQoIl9zZWxlY3RlZERhdGFzZXQiLGkpO2Vsc2UgaWYodCl7Y29uc3QgdD10aGlzLiQkKCIjZXJyb3ItZGlhbG9nIik7dC50ZXh0Q29udGVudD1gTm8gZGF0YXNldCBuYW1lZCAiJHtufSIgY291bGQgYmUgZm91bmQuYCx0Lm9wZW4oKX19X3VwZGF0ZVNlbGVjdGVkRGF0YXNldE5hbWUoKXt2YXIgdD10aGlzLl9kYXRhc2V0cyxlPXRoaXMuX3NlbGVjdGVkRGF0YXNldDt0aGlzLl9kYXRhc2V0c0ZldGNoZWQmJih0Lmxlbmd0aDw9ZXx8dGhpcy5zZXQoInJ1biIsdFtlXS5uYW1lKSl9X3JlcXVlc3RIZWFsdGhQaWxscygpe3RoaXMuc2V0KCJfYXJlSGVhbHRoUGlsbHNMb2FkaW5nIiwhMCk7dmFyIHQ9Kyt0aGlzLl9oZWFsdGhQaWxsUmVxdWVzdElkO251bGwhPT10aGlzLl9oZWFsdGhQaWxsU3RlcFJlcXVlc3RUaW1lcklkJiYod2luZG93LmNsZWFyVGltZW91dCh0aGlzLl9oZWFsdGhQaWxsU3RlcFJlcXVlc3RUaW1lcklkKSx0aGlzLl9oZWFsdGhQaWxsU3RlcFJlcXVlc3RUaW1lcklkPW51bGwpLHRoaXMuYWxsU3RlcHNNb2RlRW5hYmxlZD90aGlzLl9oZWFsdGhQaWxsU3RlcFJlcXVlc3RUaW1lcklkPXNldFRpbWVvdXQoZnVuY3Rpb24oKXt0aGlzLl9oZWFsdGhQaWxsU3RlcFJlcXVlc3RUaW1lcklkPW51bGwsdGhpcy5faW5pdGlhdGVOZXR3b3JrUmVxdWVzdEZvckhlYWx0aFBpbGxzKHQpfS5iaW5kKHRoaXMpLHRoaXMuX2hlYWx0aFBpbGxTdGVwUmVxdWVzdFRpbWVyRGVsYXkpOnRoaXMuX2luaXRpYXRlTmV0d29ya1JlcXVlc3RGb3JIZWFsdGhQaWxscyh0KX1faW5pdGlhdGVOZXR3b3JrUmVxdWVzdEZvckhlYWx0aFBpbGxzKHQpe2lmKHRoaXMuX2hlYWx0aFBpbGxSZXF1ZXN0SWQhPT10KXJldHVybjtjb25zdCBlPXRoaXMuYWxsU3RlcHNNb2RlRW5hYmxlZD90aGlzLnNwZWNpZmljSGVhbHRoUGlsbFN0ZXA6dm9pZCAwLG49dGhpcy5fZmV0Y2hIZWFsdGhQaWxscyh0aGlzLl9yZW5kZXJIaWVyYXJjaHkuZ2V0TmFtZXNPZlJlbmRlcmVkT3BzKCksZSksaT10aGlzLl9mZXRjaERlYnVnZ2VyTnVtZXJpY3NBbGVydHMoKTtQcm9taXNlLmFsbChbbixpXSkudGhlbihmdW5jdGlvbihlKXt2YXIgbj1lWzBdLGk9ZVsxXTtpZih0aGlzLmhlYWx0aFBpbGxzVG9nZ2xlZE9uJiZ0PT09dGhpcy5faGVhbHRoUGlsbFJlcXVlc3RJZCl7Zm9yKHZhciByIGluIG4pe3RoaXMuc2V0KCJfaGVhbHRoUGlsbFN0ZXBJbmRleCIsbltyXS5sZW5ndGgtMSk7YnJlYWt9dGhpcy5zZXQoIl9kZWJ1Z2dlck51bWVyaWNBbGVydHMiLGkpLHRoaXMuc2V0KCJfbm9kZU5hbWVzVG9IZWFsdGhQaWxscyIsbiksdGhpcy5zZXQoIl9hcmVIZWFsdGhQaWxsc0xvYWRpbmciLCExKSx0aGlzLnNldCgiX2hlYWx0aFBpbGxTdGVwUmVxdWVzdFRpbWVySWQiLG51bGwpfX0uYmluZCh0aGlzKSl9X2RhdGFzZXRzU3RhdGUodCxlLG4pe3JldHVybiB0P2UmJmUubGVuZ3RoPyJQUkVTRU5UIj09PW46IkVNUFRZIj09PW46Ik5PVF9MT0FERUQiPT09bn1fcmVuZGVySGllcmFyY2h5Q2hhbmdlZCh0KXt0aGlzLnJlbG9hZCgpfV9oYW5kbGVOb2RlVG9nZ2xlRXhwYW5kKCl7dGhpcy5fbWF5YmVGZXRjaEhlYWx0aFBpbGxzKCl9X2hlYWx0aFBpbGxzVG9nZ2xlZE9uQ2hhbmdlZCh0KXt0P3RoaXMucmVsb2FkKCk6dGhpcy5zZXQoIl9ub2RlTmFtZXNUb0hlYWx0aFBpbGxzIix7fSl9X21heWJlRmV0Y2hIZWFsdGhQaWxscygpe3RoaXMuX3Nob3VsZFJlcXVlc3RIZWFsdGhQaWxscygpJiZ0aGlzLl9yZXF1ZXN0SGVhbHRoUGlsbHMoKX19O19KdC50ZW1wbGF0ZT14ZWAKICAgIDxwYXBlci1kaWFsb2cgaWQ9ImVycm9yLWRpYWxvZyIgd2l0aC1iYWNrZHJvcD48L3BhcGVyLWRpYWxvZz4KICAgIDx0Zi1kYXNoYm9hcmQtbGF5b3V0PgogICAgICA8dGYtZ3JhcGgtY29udHJvbHMKICAgICAgICBpZD0iY29udHJvbHMiCiAgICAgICAgY2xhc3M9InNpZGViYXIiCiAgICAgICAgc2xvdD0ic2lkZWJhciIKICAgICAgICBkZXZpY2VzLWZvci1zdGF0cz0ie3tfZGV2aWNlc0ZvclN0YXRzfX0iCiAgICAgICAgY29sb3ItYnktcGFyYW1zPSJbW19jb2xvckJ5UGFyYW1zXV0iCiAgICAgICAgc3RhdHM9IltbX3N0YXRzXV0iCiAgICAgICAgY29sb3ItYnk9Int7X2NvbG9yQnl9fSIKICAgICAgICBkYXRhc2V0cz0iW1tfZGF0YXNldHNdXSIKICAgICAgICByZW5kZXItaGllcmFyY2h5PSJbW19yZW5kZXJIaWVyYXJjaHldXSIKICAgICAgICBzZWxlY3Rpb249Int7X3NlbGVjdGlvbn19IgogICAgICAgIHNlbGVjdGVkLWZpbGU9Int7X3NlbGVjdGVkRmlsZX19IgogICAgICAgIHNlbGVjdGVkLW5vZGU9Int7X3NlbGVjdGVkTm9kZX19IgogICAgICAgIGhlYWx0aC1waWxscy1mZWF0dXJlLWVuYWJsZWQ9IltbX2RlYnVnZ2VyRGF0YUVuYWJsZWRdXSIKICAgICAgICBoZWFsdGgtcGlsbHMtdG9nZ2xlZC1vbj0ie3toZWFsdGhQaWxsc1RvZ2dsZWRPbn19IgogICAgICAgIG9uLWZpdC10YXA9Il9maXQiCiAgICAgICAgdHJhY2UtaW5wdXRzPSJ7e190cmFjZUlucHV0c319IgogICAgICAgIGF1dG8tZXh0cmFjdC1ub2Rlcz0ie3tfYXV0b0V4dHJhY3ROb2Rlc319IgogICAgICAgIG9uLWRvd25sb2FkLWltYWdlLXJlcXVlc3RlZD0iX29uRG93bmxvYWRJbWFnZVJlcXVlc3RlZCIKICAgICAgPjwvdGYtZ3JhcGgtY29udHJvbHM+CiAgICAgIDxkaXYKICAgICAgICBjbGFzcyQ9ImNlbnRlciBbW19nZXRHcmFwaERpc3BsYXlDbGFzc05hbWUoX3NlbGVjdGVkRmlsZSwgX2RhdGFzZXRzKV1dIgogICAgICAgIHNsb3Q9ImNlbnRlciIKICAgICAgPgogICAgICAgIDx0Zi1ncmFwaC1kYXNoYm9hcmQtbG9hZGVyCiAgICAgICAgICBpZD0ibG9hZGVyIgogICAgICAgICAgZGF0YXNldHM9IltbX2RhdGFzZXRzXV0iCiAgICAgICAgICBzZWxlY3Rpb249IltbX3NlbGVjdGlvbl1dIgogICAgICAgICAgc2VsZWN0ZWQtZmlsZT0iW1tfc2VsZWN0ZWRGaWxlXV0iCiAgICAgICAgICBvdXQtZ3JhcGgtaGllcmFyY2h5PSJ7e19ncmFwaEhpZXJhcmNoeX19IgogICAgICAgICAgb3V0LWdyYXBoPSJ7e19ncmFwaH19IgogICAgICAgICAgb3V0LXN0YXRzPSJ7e19zdGF0c319IgogICAgICAgICAgcHJvZ3Jlc3M9Int7X3Byb2dyZXNzfX0iCiAgICAgICAgICBoaWVyYXJjaHktcGFyYW1zPSJbW19oaWVyYXJjaHlQYXJhbXNdXSIKICAgICAgICAgIGNvbXBhdGliaWxpdHktcHJvdmlkZXI9IltbX2NvbXBhdGliaWxpdHlQcm92aWRlcl1dIgogICAgICAgID48L3RmLWdyYXBoLWRhc2hib2FyZC1sb2FkZXI+CiAgICAgICAgPGRpdiBjbGFzcz0ibm8tZGF0YS1tZXNzYWdlIj4KICAgICAgICAgIDxoMz5ObyBncmFwaCBkZWZpbml0aW9uIGZpbGVzIHdlcmUgZm91bmQuPC9oMz4KICAgICAgICAgIDxwPgogICAgICAgICAgICBUbyBzdG9yZSBhIGdyYXBoLCBjcmVhdGUgYQogICAgICAgICAgICA8Y29kZT50Zi5zdW1tYXJ5LkZpbGVXcml0ZXI8L2NvZGU+CiAgICAgICAgICAgIGFuZCBwYXNzIHRoZSBncmFwaCBlaXRoZXIgdmlhIHRoZSBjb25zdHJ1Y3Rvciwgb3IgYnkgY2FsbGluZyBpdHMKICAgICAgICAgICAgPGNvZGU+YWRkX2dyYXBoKCk8L2NvZGU+IG1ldGhvZC4gWW91IG1heSB3YW50IHRvIGNoZWNrIG91dCB0aGUKICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cudGVuc29yZmxvdy5vcmcvdGVuc29yYm9hcmQvZ3JhcGhzIgogICAgICAgICAgICAgID5leGFtaW5pbmcgdGhlIFRlbnNvckZsb3cgZ3JhcGggdHV0b3JpYWw8L2EKICAgICAgICAgICAgPi4KICAgICAgICAgIDwvcD4KCiAgICAgICAgICA8cD4KICAgICAgICAgICAgSWYgeW914oCZcmUgbmV3IHRvIHVzaW5nIFRlbnNvckJvYXJkLCBhbmQgd2FudCB0byBmaW5kIG91dCBob3cgdG8gYWRkCiAgICAgICAgICAgIGRhdGEgYW5kIHNldCB1cCB5b3VyIGV2ZW50IGZpbGVzLCBjaGVjayBvdXQgdGhlCiAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29yYm9hcmQvYmxvYi9tYXN0ZXIvUkVBRE1FLm1kIgogICAgICAgICAgICAgID5SRUFETUU8L2EKICAgICAgICAgICAgPgogICAgICAgICAgICBhbmQgcGVyaGFwcyB0aGUKICAgICAgICAgICAgPGEKICAgICAgICAgICAgICBocmVmPSJodHRwczovL3d3dy50ZW5zb3JmbG93Lm9yZy9nZXRfc3RhcnRlZC9zdW1tYXJpZXNfYW5kX3RlbnNvcmJvYXJkIgogICAgICAgICAgICAgID5UZW5zb3JCb2FyZCB0dXRvcmlhbDwvYQogICAgICAgICAgICA+LgogICAgICAgICAgPC9wPgoKICAgICAgICAgIDxwPgogICAgICAgICAgICBJZiB5b3UgdGhpbmsgVGVuc29yQm9hcmQgaXMgY29uZmlndXJlZCBwcm9wZXJseSwgcGxlYXNlIHNlZQogICAgICAgICAgICA8YQogICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmJvYXJkL2Jsb2IvbWFzdGVyL1JFQURNRS5tZCNteS10ZW5zb3Jib2FyZC1pc250LXNob3dpbmctYW55LWRhdGEtd2hhdHMtd3JvbmciCiAgICAgICAgICAgICAgPnRoZSBzZWN0aW9uIG9mIHRoZSBSRUFETUUgZGV2b3RlZCB0byBtaXNzaW5nIGRhdGEgcHJvYmxlbXM8L2EKICAgICAgICAgICAgPgogICAgICAgICAgICBhbmQgY29uc2lkZXIgZmlsaW5nIGFuIGlzc3VlIG9uIEdpdEh1Yi4KICAgICAgICAgIDwvcD4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJncmFwaGJvYXJkIj4KICAgICAgICAgIDx0Zi1ncmFwaC1ib2FyZAogICAgICAgICAgICBpZD0iZ3JhcGhib2FyZCIKICAgICAgICAgICAgZGV2aWNlcy1mb3Itc3RhdHM9IltbX2RldmljZXNGb3JTdGF0c11dIgogICAgICAgICAgICBjb2xvci1ieT0ie3tfY29sb3JCeX19IgogICAgICAgICAgICBjb2xvci1ieS1wYXJhbXM9Int7X2NvbG9yQnlQYXJhbXN9fSIKICAgICAgICAgICAgZ3JhcGgtaGllcmFyY2h5PSJbW19ncmFwaEhpZXJhcmNoeV1dIgogICAgICAgICAgICBncmFwaD0iW1tfZ3JhcGhdXSIKICAgICAgICAgICAgaGllcmFyY2h5LXBhcmFtcz0iW1tfaGllcmFyY2h5UGFyYW1zXV0iCiAgICAgICAgICAgIHByb2dyZXNzPSJbW19wcm9ncmVzc11dIgogICAgICAgICAgICBkZWJ1Z2dlci1kYXRhLWVuYWJsZWQ9IltbX2RlYnVnZ2VyRGF0YUVuYWJsZWRdXSIKICAgICAgICAgICAgYXJlLWhlYWx0aC1waWxscy1sb2FkaW5nPSJbW19hcmVIZWFsdGhQaWxsc0xvYWRpbmddXSIKICAgICAgICAgICAgZGVidWdnZXItbnVtZXJpYy1hbGVydHM9IltbX2RlYnVnZ2VyTnVtZXJpY0FsZXJ0c11dIgogICAgICAgICAgICBub2RlLW5hbWVzLXRvLWhlYWx0aC1waWxscz0iW1tfbm9kZU5hbWVzVG9IZWFsdGhQaWxsc11dIgogICAgICAgICAgICBhbGwtc3RlcHMtbW9kZS1lbmFibGVkPSJ7e2FsbFN0ZXBzTW9kZUVuYWJsZWR9fSIKICAgICAgICAgICAgc3BlY2lmaWMtaGVhbHRoLXBpbGwtc3RlcD0ie3tzcGVjaWZpY0hlYWx0aFBpbGxTdGVwfX0iCiAgICAgICAgICAgIGhlYWx0aC1waWxsLXN0ZXAtaW5kZXg9IltbX2hlYWx0aFBpbGxTdGVwSW5kZXhdXSIKICAgICAgICAgICAgcmVuZGVyLWhpZXJhcmNoeT0ie3tfcmVuZGVySGllcmFyY2h5fX0iCiAgICAgICAgICAgIHNlbGVjdGVkLW5vZGU9Int7X3NlbGVjdGVkTm9kZX19IgogICAgICAgICAgICBzdGF0cz0iW1tfc3RhdHNdXSIKICAgICAgICAgICAgdHJhY2UtaW5wdXRzPSJbW190cmFjZUlucHV0c11dIgogICAgICAgICAgICBhdXRvLWV4dHJhY3Qtbm9kZXM9IltbX2F1dG9FeHRyYWN0Tm9kZXNdXSIKICAgICAgICAgID48L3RmLWdyYXBoLWJvYXJkPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIDwvdGYtZGFzaGJvYXJkLWxheW91dD4KICAgIDxzdHlsZT4KICAgICAgOmhvc3QgL2RlZXAvIHsKICAgICAgICBmb250LWZhbWlseTogJ1JvYm90bycsIHNhbnMtc2VyaWY7CiAgICAgIH0KCiAgICAgIC5zaWRlYmFyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgfQoKICAgICAgLmNlbnRlciB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgfQoKICAgICAgcGFwZXItZGlhbG9nIHsKICAgICAgICBwYWRkaW5nOiAyMHB4OwogICAgICB9CgogICAgICAubm8tZGF0YS1tZXNzYWdlIHsKICAgICAgICBtYXgtd2lkdGg6IDU0MHB4OwogICAgICAgIG1hcmdpbjogODBweCBhdXRvIDAgYXV0bzsKICAgICAgfQoKICAgICAgLmdyYXBoYm9hcmQgewogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgfQoKICAgICAgLm5vLWdyYXBoIC5ncmFwaGJvYXJkIHsKICAgICAgICBkaXNwbGF5OiBub25lOwogICAgICB9CgogICAgICAuY2VudGVyOm5vdCgubm8tZ3JhcGgpIC5uby1kYXRhLW1lc3NhZ2UgewogICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgIH0KCiAgICAgIGEgewogICAgICAgIGNvbG9yOiB2YXIoLS10Yi1saW5rKTsKICAgICAgfQoKICAgICAgYTp2aXNpdGVkIHsKICAgICAgICBjb2xvcjogdmFyKC0tdGItbGluay12aXNpdGVkKTsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxfSnQucHJvdG90eXBlLCJfZGF0YXNldHMiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxfSnQucHJvdG90eXBlLCJfZGF0YXNldHNGZXRjaGVkIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLF9KdC5wcm90b3R5cGUsIl9zZWxlY3RlZERhdGFzZXQiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3Qsb2JzZXJ2ZXI6Il9yZW5kZXJIaWVyYXJjaHlDaGFuZ2VkIn0pLGUoImRlc2lnbjp0eXBlIixBS3QpXSxfSnQucHJvdG90eXBlLCJfcmVuZGVySGllcmFyY2h5Iix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLGJyKV0sX0p0LnByb3RvdHlwZSwiX3JlcXVlc3RNYW5hZ2VyIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLHhPKV0sX0p0LnByb3RvdHlwZSwiX2NhbmNlbGxlciIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLF9KdC5wcm90b3R5cGUsIl9kZWJ1Z2dlckRhdGFFbmFibGVkIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sX0p0LnByb3RvdHlwZSwiYWxsU3RlcHNNb2RlRW5hYmxlZCIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxfSnQucHJvdG90eXBlLCJzcGVjaWZpY0hlYWx0aFBpbGxTdGVwIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbixvYnNlcnZlcjoiX2hlYWx0aFBpbGxzVG9nZ2xlZE9uQ2hhbmdlZCJ9KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLF9KdC5wcm90b3R5cGUsImhlYWx0aFBpbGxzVG9nZ2xlZE9uIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nLG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxfSnQucHJvdG90eXBlLCJzZWxlY3RlZE5vZGUiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxfSnQucHJvdG90eXBlLCJfaXNBdHRhY2hlZCIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLF9KdC5wcm90b3R5cGUsIl9pbml0aWFsaXplZCIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLF9KdC5wcm90b3R5cGUsIl9hcmVIZWFsdGhQaWxsc0xvYWRpbmciLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheSxub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxfSnQucHJvdG90eXBlLCJfZGVidWdnZXJOdW1lcmljQWxlcnRzIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLF9KdC5wcm90b3R5cGUsIl9ub2RlTmFtZXNUb0hlYWx0aFBpbGxzIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLF9KdC5wcm90b3R5cGUsIl9oZWFsdGhQaWxsU3RlcEluZGV4Iix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLF9KdC5wcm90b3R5cGUsIl9oZWFsdGhQaWxsUmVxdWVzdElkIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLF9KdC5wcm90b3R5cGUsIl9oZWFsdGhQaWxsU3RlcFJlcXVlc3RUaW1lcklkIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLF9KdC5wcm90b3R5cGUsIl9oZWFsdGhQaWxsU3RlcFJlcXVlc3RUaW1lckRlbGF5Iix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxfSnQucHJvdG90eXBlLCJydW5zIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nLG5vdGlmeTohMCxvYnNlcnZlcjoiX3J1bk9ic2VydmVyIn0pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxfSnQucHJvdG90eXBlLCJydW4iLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sX0p0LnByb3RvdHlwZSwiX3NlbGVjdGlvbiIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxfSnQucHJvdG90eXBlLCJfY29tcGF0aWJpbGl0eVByb3ZpZGVyIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sX0p0LnByb3RvdHlwZSwiX3RyYWNlSW5wdXRzIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sX0p0LnByb3RvdHlwZSwiX2F1dG9FeHRyYWN0Tm9kZXMiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sX0p0LnByb3RvdHlwZSwiX3NlbGVjdGVkRmlsZSIsdm9pZCAwKSx0KFthKCJfaXNBdHRhY2hlZCIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sX0p0LnByb3RvdHlwZSwiX21heWJlSW5pdGlhbGl6ZURhc2hib2FyZCIsbnVsbCksdChbYSgiX2RhdGFzZXRzRmV0Y2hlZCIsIl9kYXRhc2V0cyIsInJ1biIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sX0p0LnByb3RvdHlwZSwiX2RldGVybWluZVNlbGVjdGVkRGF0YXNldCIsbnVsbCksdChbYSgiX2RhdGFzZXRzRmV0Y2hlZCIsIl9kYXRhc2V0cyIsIl9zZWxlY3RlZERhdGFzZXQiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLF9KdC5wcm90b3R5cGUsIl91cGRhdGVTZWxlY3RlZERhdGFzZXROYW1lIixudWxsKSxfSnQ9dChbaSgidGYtZ3JhcGgtZGFzaGJvYXJkIildLF9KdCk7Y29uc3QgeUp0PWlJO2xldCB2SnQ9Y2xhc3MgZXh0ZW5kcyhjcihnbCh3ZSkpKXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5tb2RlPSJvZmZzZXQiLHRoaXMudGltZVByb3BlcnR5PSJzdGVwIix0aGlzLmJpbnM9ImJpbnMiLHRoaXMueD0ieCIsdGhpcy5keD0iZHgiLHRoaXMueT0ieSIsdGhpcy5jb2xvclNjYWxlPXlKdC5zY2FsZU9yZGluYWwoeUp0LnNjaGVtZUNhdGVnb3J5MTApLHRoaXMubW9kZVRyYW5zaXRpb25EdXJhdGlvbj01MDAsdGhpcy5fbmFtZT1udWxsLHRoaXMuX2RhdGE9bnVsbH1yZWFkeSgpe3N1cGVyLnJlYWR5KCksdGhpcy5zY29wZVN1YnRyZWUodGhpcy4kLnN2ZywhMCl9YXR0YWNoZWQoKXt0aGlzLl9hdHRhY2hlZD0hMH1kZXRhY2hlZCgpe3RoaXMuX2F0dGFjaGVkPSExfXNldFNlcmllc0RhdGEodCxlKXt0aGlzLl9uYW1lPXQsdGhpcy5fZGF0YT1lLHRoaXMucmVkcmF3KCl9X3JlZHJhd09uQ2hhbmdlKCl7dGhpcy5yZWRyYXcoKX1yZWRyYXcoKXt0aGlzLl9kcmF3KDApfV9tb2RlUmVkcmF3KCl7dGhpcy5fZHJhdyh0aGlzLm1vZGVUcmFuc2l0aW9uRHVyYXRpb24pfV9kcmF3KHQpe2lmKCF0aGlzLl9hdHRhY2hlZHx8IXRoaXMuX2RhdGEpcmV0dXJuO2lmKHZvaWQgMD09PXQpdGhyb3cgbmV3IEVycm9yKCJ2ei1oaXN0b2dyYW0tdGltZXNlcmllcyBfZHJhdyBuZWVkcyBkdXJhdGlvbiIpO2lmKHRoaXMuX2RhdGEubGVuZ3RoPD0wKXRocm93IG5ldyBFcnJvcigiTm90IGVub3VnaCBzdGVwcyBpbiB0aGUgZGF0YSIpO2lmKCF0aGlzLl9kYXRhWzBdLmhhc093blByb3BlcnR5KHRoaXMuYmlucykpdGhyb3cgbmV3IEVycm9yKCJObyBiaW5zIHByb3BlcnR5IG9mICciK3RoaXMuYmlucysiJyBpbiBkYXRhIik7aWYodGhpcy5fZGF0YVswXVt0aGlzLmJpbnNdLmxlbmd0aDw9MCl0aHJvdyBuZXcgRXJyb3IoIk11c3QgaGF2ZSBhdCBsZWFzdCBvbmUgYmluIGluIGJpbnMgaW4gZGF0YSIpO2lmKCF0aGlzLl9kYXRhWzBdW3RoaXMuYmluc11bMF0uaGFzT3duUHJvcGVydHkodGhpcy54KSl0aHJvdyBuZXcgRXJyb3IoIk5vIHggcHJvcGVydHkgJyIrdGhpcy54KyInIG9uIGJpbnMgZGF0YSIpO2lmKCF0aGlzLl9kYXRhWzBdW3RoaXMuYmluc11bMF0uaGFzT3duUHJvcGVydHkodGhpcy5keCkpdGhyb3cgbmV3IEVycm9yKCJObyBkeCBwcm9wZXJ0eSAnIit0aGlzLmR4KyInIG9uIGJpbnMgZGF0YSIpO2lmKCF0aGlzLl9kYXRhWzBdW3RoaXMuYmluc11bMF0uaGFzT3duUHJvcGVydHkodGhpcy55KSl0aHJvdyBuZXcgRXJyb3IoIk5vIHkgcHJvcGVydHkgJyIrdGhpcy55KyInIG9uIGJpbnMgZGF0YSIpO3ZhciBlPXRoaXMudGltZVByb3BlcnR5LG49dGhpcy54LGk9dGhpcy5iaW5zLHI9dGhpcy5keCxvPXRoaXMueSxhPXRoaXMuX2RhdGEscz10aGlzLm1vZGUsbD15SnQuaGNsKHRoaXMuY29sb3JTY2FsZSh0aGlzLl9uYW1lKSksYz15SnQuc2VsZWN0KHRoaXMuJC50b29sdGlwKSx1PWZ1bmN0aW9uKHQpe3JldHVybiB0W25dfSxoPWZ1bmN0aW9uKHQpe3JldHVybiB0W29dfSxkPWZ1bmN0aW9uKHQpe3JldHVybiB0W25dK3Rbcl19LHA9ZnVuY3Rpb24odCl7cmV0dXJuIHRbZV19OyJyZWxhdGl2ZSI9PT1lJiYocD1mdW5jdGlvbih0KXtyZXR1cm4gdC53YWxsX3RpbWUtYVswXS53YWxsX3RpbWV9KTt2YXIgZixtPXRoaXMuJC5zdmcuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksZz1tLndpZHRoLF89bS5oZWlnaHQseT17dG9wOjUscmlnaHQ6NjAsYm90dG9tOjIwLGxlZnQ6MjR9OyJvZmZzZXQiPT09cz95LnRvcD0oZj1fLzIuNSkrNTpmPV8teS50b3AteS5ib3R0b207dmFyIHY9Zy15LmxlZnQteS5yaWdodCxiPV8teS50b3AteS5ib3R0b207eUp0Lm1pbihhLHUpLHlKdC5tYXgoYSxkKTt2YXIgeD15SnQuZm9ybWF0KCIuM24iKSx3PXlKdC5mb3JtYXQoIi4wZiIpOyJ3YWxsX3RpbWUiPT09ZT93PXlKdC50aW1lRm9ybWF0KCIlbS8lZCAlWCIpOiJyZWxhdGl2ZSI9PT1lJiYodz1mdW5jdGlvbih0KXtyZXR1cm4geUp0LmZvcm1hdCgiLjFyIikodC8zNmU1KSsiaCJ9KTt2YXIgUz1hLm1hcCgoZnVuY3Rpb24odCxlKXtyZXR1cm5beUp0Lm1pbih0W2ldLHUpLHlKdC5tYXgodFtpXSxkKV19KSksTT1hLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHlKdC5leHRlbnQodFtpXSxoKX0pKSxFPTUwMCxUPXlKdC5leHRlbnQoYSxwKSxDPSgid2FsbF90aW1lIj09PWU/eUp0LnNjYWxlVGltZSgpOnlKdC5zY2FsZUxpbmVhcigpKS5kb21haW4oVCkucmFuZ2UoWzAsIm9mZnNldCI9PT1zP2I6MF0pLEE9eUp0LnNjYWxlTGluZWFyKCkuZG9tYWluKFswLHlKdC5tYXgoYSwoZnVuY3Rpb24odCxlKXtyZXR1cm4gTVtlXVsxXX0pKV0pLnJhbmdlKFtmLDBdKSxrPXlKdC5zY2FsZUxpbmVhcigpLmRvbWFpbihBLmRvbWFpbigpKS5yYW5nZShbRSwwXSksTD15SnQuc2NhbGVMaW5lYXIoKS5kb21haW4oW3lKdC5taW4oYSwoZnVuY3Rpb24odCxlKXtyZXR1cm4gU1tlXVswXX0pKSx5SnQubWF4KGEsKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIFNbZV1bMV19KSldKS5uaWNlKCkucmFuZ2UoWzAsdl0pLFA9eUp0LnNjYWxlTGluZWFyKCkuZG9tYWluKEwuZG9tYWluKCkpLnJhbmdlKFswLEVdKTtjb25zdCBOPXlKdC5zY2FsZUxpbmVhcigpLmRvbWFpbih5SnQuZXh0ZW50KGEscCkpLnJhbmdlKFtsLmJyaWdodGVyKCksbC5kYXJrZXIoKV0pLmludGVycG9sYXRlKHlKdC5pbnRlcnBvbGF0ZUhjbCk7dmFyIEk9eUp0LmF4aXNCb3R0b20oTCkudGlja3MoTWF0aC5tYXgoMix2LzIwKSksUj15SnQuYXhpc1JpZ2h0KEMpLnRpY2tzKE1hdGgubWF4KDIsYi8xNSkpLnRpY2tGb3JtYXQodyksTz15SnQuYXhpc1JpZ2h0KEEpLnRpY2tzKE1hdGgubWF4KDIsYi8xNSkpLnRpY2tTaXplKHYrNSkudGlja0Zvcm1hdCh4KSx6PWZ1bmN0aW9uKHQpe3JldHVybiB0W25dK3Rbcl0vMn0sRD15SnQubGluZSgpLngoKGZ1bmN0aW9uKHQpe3JldHVybiBQKHoodCkpfSkpLnkoKGZ1bmN0aW9uKHQpe3JldHVybiBrKHRbb10pfSkpLEI9dGhpcy4kLnN2ZyxIPXlKdC5zZWxlY3QoQiksRj1ILnRyYW5zaXRpb24oKS5kdXJhdGlvbih0KSxWPUguc2VsZWN0KCJnIikuY2xhc3NlZCgic21hbGwiLChmdW5jdGlvbigpe3JldHVybiB2PjAmJnY8PTE1MH0pKS5jbGFzc2VkKCJtZWRpdW0iLChmdW5jdGlvbigpe3JldHVybiB2PjE1MCYmdjw9MzAwfSkpLmNsYXNzZWQoImxhcmdlIiwoZnVuY3Rpb24oKXtyZXR1cm4gdj4zMDB9KSksVT1GLnNlbGVjdCgiZyIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK3kubGVmdCsiLCIreS50b3ArIikiKSxqPXlKdC5iaXNlY3RvcihkKS5sZWZ0LEc9Vi5zZWxlY3QoIi5zdGFnZSIpLm9uKCJtb3VzZW92ZXIiLChmdW5jdGlvbigpe0ouc3R5bGUoIm9wYWNpdHkiLDEpLGV0LnN0eWxlKCJvcGFjaXR5IiwxKSxydC5zdHlsZSgib3BhY2l0eSIsMSksc3Quc3R5bGUoIm9wYWNpdHkiLDEpLGMuc3R5bGUoIm9wYWNpdHkiLDEpfSkpLm9uKCJtb3VzZW91dCIsKGZ1bmN0aW9uKCl7Si5zdHlsZSgib3BhY2l0eSIsMCksZXQuc3R5bGUoIm9wYWNpdHkiLDApLHJ0LnN0eWxlKCJvcGFjaXR5IiwwKSxzdC5zdHlsZSgib3BhY2l0eSIsMCksSi5jbGFzc2VkKCJob3Zlci1jbG9zZXN0IiwhMSksSy5jbGFzc2VkKCJvdXRsaW5lLWhvdmVyIiwhMSksYy5zdHlsZSgib3BhY2l0eSIsMCl9KSkub24oIm1vdXNlbW92ZSIsKGZ1bmN0aW9uIFcoKXt2YXIgdCxhPXlKdC5tb3VzZSh0aGlzKSxsPUwuaW52ZXJ0KGFbMF0pO2Z1bmN0aW9uIHUodCl7cmV0dXJuIE1hdGgubWluKHRbaV0ubGVuZ3RoLTEsaih0W2ldLGwpKX1DLmludmVydChhWzFdKTt2YXIgaCxkPTEvMDtKLmF0dHIoInRyYW5zZm9ybSIsKGZ1bmN0aW9uKGUsbCl7dmFyIGM9dShlKTtoPWU7dmFyIG09TChlW2ldW2NdW25dK2VbaV1bY11bcl0vMiksZz1BKGVbaV1bY11bb10pLF89Im9mZnNldCI9PT1zP0MocChlKSktKGYtZyk6Zyx5PU1hdGguYWJzKGFbMV0tXyk7cmV0dXJuIHk8ZCYmKGQ9eSx0PWUpLCJ0cmFuc2xhdGUoIittKyIsIitnKyIpIn0pKSxKLnNlbGVjdCgidGV4dCIpLnRleHQoKGZ1bmN0aW9uKHQpe3ZhciBlPXUodCk7cmV0dXJuIHRbaV1bZV1bb119KSksSi5jbGFzc2VkKCJob3Zlci1jbG9zZXN0IiwoZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT10fSkpLEsuY2xhc3NlZCgib3V0bGluZS1ob3ZlciIsKGZ1bmN0aW9uKGUpe3JldHVybiBlPT09dH0pKTt2YXIgbT11KGgpO2V0LmF0dHIoInRyYW5zZm9ybSIsKGZ1bmN0aW9uKHQpe3JldHVybiJ0cmFuc2xhdGUoIitMKGhbaV1bbV1bbl0raFtpXVttXVtyXS8yKSsiLCAiK2IrIikifSkpLnNlbGVjdCgidGV4dCIpLnRleHQoKGZ1bmN0aW9uKHQpe3JldHVybiB4KGhbaV1bbV1bbl0raFtpXVttXVtyXS8yKX0pKTt2YXIgZz1SLnRpY2tGb3JtYXQoKTtydC5hdHRyKCJ0cmFuc2Zvcm0iLChmdW5jdGlvbihlKXtyZXR1cm4idHJhbnNsYXRlKCIrdisiLCAiKygib2Zmc2V0Ij09PXM/QyhwKHQpKTowKSsiKSJ9KSkuc3R5bGUoImRpc3BsYXkiLCJvZmZzZXQiPT09cz8iIjoibm9uZSIpLnNlbGVjdCgidGV4dCIpLnRleHQoKGZ1bmN0aW9uKGUpe3JldHVybiBnKHAodCkpfSkpO3ZhciBfPU8udGlja0Zvcm1hdCgpO3N0LmF0dHIoInRyYW5zZm9ybSIsKGZ1bmN0aW9uKGUpe3JldHVybiJ0cmFuc2xhdGUoIit2KyIsICIrKCJvZmZzZXQiPT09cz8wOkEodFtpXVttXVtvXSkpKyIpIn0pKS5zdHlsZSgiZGlzcGxheSIsIm9mZnNldCI9PT1zPyJub25lIjoiIikuc2VsZWN0KCJ0ZXh0IikudGV4dCgoZnVuY3Rpb24oZSl7cmV0dXJuIF8odFtpXVttXVtvXSl9KSk7dmFyIHk9eUp0Lm1vdXNlKEIpO2Muc3R5bGUoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiKyh5WzBdKzE1KSsicHgsIisoeVsxXS0xNSkrInB4KSIpLnNlbGVjdCgic3BhbiIpLnRleHQoIm9mZnNldCI9PT1zP18odFtpXVttXVtvXSk6KCJzdGVwIj09PWU/InN0ZXAgIjoiIikrZyhwKHQpKSl9KSk7Ry5zZWxlY3QoIi5iYWNrZ3JvdW5kIikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrLXkubGVmdCsiLCIrLXkudG9wKyIpIikuYXR0cigid2lkdGgiLGcpLmF0dHIoImhlaWdodCIsXyk7dmFyIHE9Ry5zZWxlY3RBbGwoIi5oaXN0b2dyYW0iKS5kYXRhKGEpO3EuZXhpdCgpLnJlbW92ZSgpO3ZhciBZPXEuZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsImhpc3RvZ3JhbSIpLFg9WS5tZXJnZShxKS5zb3J0KChmdW5jdGlvbih0LGUpe3JldHVybiBwKHQpLXAoZSl9KSksJD1VLnNlbGVjdEFsbCgiLmhpc3RvZ3JhbSIpLmF0dHIoInRyYW5zZm9ybSIsKGZ1bmN0aW9uKHQpe3JldHVybiJ0cmFuc2xhdGUoMCwgIisoIm9mZnNldCI9PT1zP0MocCh0KSktZjowKSsiKSJ9KSk7WS5hcHBlbmQoImxpbmUiKS5hdHRyKCJjbGFzcyIsImJhc2VsaW5lIiksJC5zZWxlY3QoIi5iYXNlbGluZSIpLnN0eWxlKCJzdHJva2Utb3BhY2l0eSIsKGZ1bmN0aW9uKHQpe3JldHVybiJvZmZzZXQiPT09cz8uMTowfSkpLmF0dHIoInkxIixmKS5hdHRyKCJ5MiIsZikuYXR0cigieDIiLHYpLFkuYXBwZW5kKCJwYXRoIikuYXR0cigiY2xhc3MiLCJvdXRsaW5lIik7dmFyIEs9WC5zZWxlY3QoIi5vdXRsaW5lIikuYXR0cigidmVjdG9yLWVmZmVjdCIsIm5vbi1zY2FsaW5nLXN0cm9rZSIpLmF0dHIoImQiLChmdW5jdGlvbih0KXtyZXR1cm4oZnVuY3Rpb24odCl7cmV0dXJuIk0iK1Aoeih0WzBdKSkrIiwiK2soMCkrIkwiK0QodCkuc2xpY2UoMSkrIkwiK1Aoeih0W3QubGVuZ3RoLTFdKSkrIiwiK2soMCl9KSh0W2ldKX0pKS5zdHlsZSgic3Ryb2tlLXdpZHRoIiwxKTskLnNlbGVjdCgiLm91dGxpbmUiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJzY2FsZSgiK3YvRSsiLCAiK2YvRSsiKSIpLnN0eWxlKCJzdHJva2UiLChmdW5jdGlvbih0KXtyZXR1cm4ib2Zmc2V0Ij09PXM/IiI6TihwKHQpKX0pKS5zdHlsZSgiZmlsbC1vcGFjaXR5IiwoZnVuY3Rpb24odCl7cmV0dXJuIm9mZnNldCI9PT1zPzE6MH0pKS5zdHlsZSgiZmlsbCIsKGZ1bmN0aW9uKHQpe3JldHVybiBOKHAodCkpfSkpO3ZhciBaPVkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJob3ZlciIpLEo9WC5zZWxlY3QoIi5ob3ZlciIpLnN0eWxlKCJmaWxsIiwoZnVuY3Rpb24odCl7cmV0dXJuIE4ocCh0KSl9KSk7Wi5hcHBlbmQoImNpcmNsZSIpLmF0dHIoInIiLDIpLFouYXBwZW5kKCJ0ZXh0Iikuc3R5bGUoImRpc3BsYXkiLCJub25lIikuYXR0cigiZHgiLDQpO3ZhciBRPVYuc2VsZWN0KCIueC1heGlzLWhvdmVyIikuc2VsZWN0QWxsKCIubGFiZWwiKS5kYXRhKFsieCJdKSx0dD1RLmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJsYWJlbCIpLGV0PVEubWVyZ2UodHQpO3R0LmFwcGVuZCgicmVjdCIpLmF0dHIoIngiLC0yMCkuYXR0cigieSIsNikuYXR0cigid2lkdGgiLDQwKS5hdHRyKCJoZWlnaHQiLDE0KSx0dC5hcHBlbmQoImxpbmUiKS5hdHRyKCJ4MSIsMCkuYXR0cigieDIiLDApLmF0dHIoInkxIiwwKS5hdHRyKCJ5MiIsNiksdHQuYXBwZW5kKCJ0ZXh0IikuYXR0cigiZHkiLDE4KTt2YXIgbnQ9Vi5zZWxlY3QoIi55LWF4aXMtaG92ZXIiKS5zZWxlY3RBbGwoIi5sYWJlbCIpLmRhdGEoWyJ5Il0pLGl0PW50LmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJsYWJlbCIpLHJ0PW50Lm1lcmdlKGl0KTtpdC5hcHBlbmQoInJlY3QiKS5hdHRyKCJ4Iiw4KS5hdHRyKCJ5IiwtNikuYXR0cigid2lkdGgiLDQwKS5hdHRyKCJoZWlnaHQiLDE0KSxpdC5hcHBlbmQoImxpbmUiKS5hdHRyKCJ4MSIsMCkuYXR0cigieDIiLDYpLmF0dHIoInkxIiwwKS5hdHRyKCJ5MiIsMCksaXQuYXBwZW5kKCJ0ZXh0IikuYXR0cigiZHgiLDgpLmF0dHIoImR5Iiw0KTt2YXIgb3Q9Vi5zZWxlY3QoIi55LXNsaWNlLWF4aXMtaG92ZXIiKS5zZWxlY3RBbGwoIi5sYWJlbCIpLmRhdGEoWyJ5Il0pLGF0PW90LmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJsYWJlbCIpLHN0PW90Lm1lcmdlKGF0KTthdC5hcHBlbmQoInJlY3QiKS5hdHRyKCJ4Iiw4KS5hdHRyKCJ5IiwtNikuYXR0cigid2lkdGgiLDQwKS5hdHRyKCJoZWlnaHQiLDE0KSxhdC5hcHBlbmQoImxpbmUiKS5hdHRyKCJ4MSIsMCkuYXR0cigieDIiLDYpLmF0dHIoInkxIiwwKS5hdHRyKCJ5MiIsMCksYXQuYXBwZW5kKCJ0ZXh0IikuYXR0cigiZHgiLDgpLmF0dHIoImR5Iiw0KSxVLnNlbGVjdCgiLnkuYXhpcy5zbGljZSIpLnN0eWxlKCJvcGFjaXR5Iiwib2Zmc2V0Ij09PXM/MDoxKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoMCwgIisoIm9mZnNldCI9PT1zPy1mOjApKyIpIikuY2FsbChPKSxVLnNlbGVjdCgiLnguYXhpcyIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgwLCAiK2IrIikiKS5jYWxsKEkpLFUuc2VsZWN0KCIueS5heGlzIikuc3R5bGUoIm9wYWNpdHkiLCJvZmZzZXQiPT09cz8xOjApLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK3YrIiwgIisoIm9mZnNldCI9PT1zPzA6YikrIikiKS5jYWxsKFIpLFUuc2VsZWN0QWxsKCIudGljayB0ZXh0IikuYXR0cigiZmlsbCIsIiNhYWEiKSxVLnNlbGVjdEFsbCgiLmF4aXMgcGF0aC5kb21haW4iKS5hdHRyKCJzdHJva2UiLCJub25lIil9fTtmdW5jdGlvbiBiSnQodCl7Y29uc3RbZSxuLGldPXQ7cmV0dXJue3dhbGxfdGltZTplLHN0ZXA6bixtaW46c2MoaS5tYXAoKChbdCwsXSk9PnQpKSksbWF4Om9jKGkubWFwKCgoWyx0XSk9PnQpKSksYnVja2V0czppLm1hcCgoKFt0LGUsbl0pPT4oe2xlZnQ6dCxyaWdodDplLGNvdW50Om59KSkpfX1mdW5jdGlvbiB4SnQodCxlLG4saT0zMCl7dm9pZCAwIT09ZSYmbnVsbCE9bnx8KGU9MCxuPTApLG49PT1lJiYobj0xLjEqZSsxLGU9ZS8xLjEtMSk7Y29uc3Qgcj0obi1lKS9pO2xldCBvPTA7Y29uc3QgYT1bXTtmb3IobGV0IHM9MDtzPGk7cysrKXtjb25zdCBpPWUrcypyLGw9aStyO2xldCBjPTA7Zm9yKDtvPHQuYnVja2V0cy5sZW5ndGg7KXtjb25zdCByPU1hdGgubWluKG4sdC5idWNrZXRzW29dLnJpZ2h0KSxhPU1hdGgubWF4KGUsdC5idWNrZXRzW29dLmxlZnQpO2lmKHItYT4wKXtjb25zdCBlPU1hdGgubWluKHIsbCktTWF0aC5tYXgoYSxpKSxuPWUvKHItYSkqdC5idWNrZXRzW29dLmNvdW50O2MrPWU+MD9uOjB9ZWxzZXtjb25zdCBlPWw+PW47Yys9aTw9YSYmKGU/cjw9bDpyPGwpP3QuYnVja2V0c1tvXS5jb3VudDowfWlmKHI+bClicmVhaztvKyt9YS5wdXNoKHt4OmksZHg6cix5OmN9KX1yZXR1cm4gYX12SnQudGVtcGxhdGU9eGVgCiAgICA8ZGl2IGlkPSJ0b29sdGlwIj48c3Bhbj48L3NwYW4+PC9kaXY+CiAgICA8c3ZnIGlkPSJzdmciPgogICAgICA8Zz4KICAgICAgICA8ZyBjbGFzcz0iYXhpcyB4Ij48L2c+CiAgICAgICAgPGcgY2xhc3M9ImF4aXMgeSI+PC9nPgogICAgICAgIDxnIGNsYXNzPSJheGlzIHkgc2xpY2UiPjwvZz4KICAgICAgICA8ZyBjbGFzcz0ic3RhZ2UiPgogICAgICAgICAgPHJlY3QgY2xhc3M9ImJhY2tncm91bmQiPjwvcmVjdD4KICAgICAgICA8L2c+CiAgICAgICAgPGcgY2xhc3M9IngtYXhpcy1ob3ZlciI+PC9nPgogICAgICAgIDxnIGNsYXNzPSJ5LWF4aXMtaG92ZXIiPjwvZz4KICAgICAgICA8ZyBjbGFzcz0ieS1zbGljZS1heGlzLWhvdmVyIj48L2c+CiAgICAgIDwvZz4KICAgIDwvc3ZnPgoKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGNvbG9yOiAjYWFhOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBmbGV4LWdyb3c6IDE7CiAgICAgICAgZmxleC1zaHJpbms6IDE7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIC0tdnotaGlzdG9ncmFtLXRpbWVzZXJpZXMtaG92ZXItYmctY29sb3I6ICNmZmY7CiAgICAgICAgLS12ei1oaXN0b2dyYW0tdGltZXNlcmllcy1vdXRsaW5lLWNvbG9yOiAjZmZmOwogICAgICAgIC0tdnotaGlzdG9ncmFtLXRpbWVzZXJpZXMtaG92ZXItb3V0bGluZS1jb2xvcjogIzAwMDsKICAgICAgfQoKICAgICAgOmhvc3QoLmRhcmstbW9kZSkgewogICAgICAgIC0tdnotaGlzdG9ncmFtLXRpbWVzZXJpZXMtaG92ZXItYmctY29sb3I6IHZhcigKICAgICAgICAgIC0tcHJpbWFyeS1iYWNrZ3JvdW5kLWNvbG9yCiAgICAgICAgKTsKICAgICAgICAtLXZ6LWhpc3RvZ3JhbS10aW1lc2VyaWVzLW91dGxpbmUtY29sb3I6IHZhcigtLXBhcGVyLWdyZXktNjAwKTsKICAgICAgICAtLXZ6LWhpc3RvZ3JhbS10aW1lc2VyaWVzLWhvdmVyLW91dGxpbmUtY29sb3I6ICNmZmY7CiAgICAgIH0KCiAgICAgIHN2ZyB7CiAgICAgICAgZm9udC1mYW1pbHk6IHJvYm90bywgc2Fucy1zZXJpZjsKICAgICAgICBvdmVyZmxvdzogdmlzaWJsZTsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBmbGV4LWdyb3c6IDE7CiAgICAgICAgZmxleC1zaHJpbms6IDE7CiAgICAgIH0KCiAgICAgIHRleHQgewogICAgICAgIGZpbGw6IGN1cnJlbnRDb2xvcjsKICAgICAgfQoKICAgICAgI3Rvb2x0aXAgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgfQoKICAgICAgLmJhY2tncm91bmQgewogICAgICAgIGZpbGwtb3BhY2l0eTogMDsKICAgICAgICBmaWxsOiByZWQ7CiAgICAgIH0KCiAgICAgIC5oaXN0b2dyYW0gewogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICB9CgogICAgICAuaG92ZXIgewogICAgICAgIGZvbnQtc2l6ZTogOXB4OwogICAgICAgIGRvbWluYW50LWJhc2VsaW5lOiBtaWRkbGU7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgfQoKICAgICAgLmhvdmVyIGNpcmNsZSB7CiAgICAgICAgc3Ryb2tlOiB3aGl0ZTsKICAgICAgICBzdHJva2Utb3BhY2l0eTogMC41OwogICAgICAgIHN0cm9rZS13aWR0aDogMXB4OwogICAgICB9CgogICAgICAuaG92ZXIgdGV4dCB7CiAgICAgICAgZmlsbDogYmxhY2s7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgfQoKICAgICAgLmhvdmVyLmhvdmVyLWNsb3Nlc3QgY2lyY2xlIHsKICAgICAgICBmaWxsOiB2YXIoLS12ei1oaXN0b2dyYW0tdGltZXNlcmllcy1ob3Zlci1vdXRsaW5lLWNvbG9yKSAhaW1wb3J0YW50OwogICAgICB9CgogICAgICAuaG92ZXIuaG92ZXItY2xvc2VzdCB0ZXh0IHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICB9CgogICAgICAuYmFzZWxpbmUgewogICAgICAgIHN0cm9rZTogYmxhY2s7CiAgICAgICAgc3Ryb2tlLW9wYWNpdHk6IDAuMTsKICAgICAgfQoKICAgICAgLm91dGxpbmUgewogICAgICAgIGZpbGw6IG5vbmU7CiAgICAgICAgc3Ryb2tlOiB2YXIoLS12ei1oaXN0b2dyYW0tdGltZXNlcmllcy1vdXRsaW5lLWNvbG9yKTsKICAgICAgICBzdHJva2Utb3BhY2l0eTogMC41OwogICAgICB9CgogICAgICAub3V0bGluZS5vdXRsaW5lLWhvdmVyIHsKICAgICAgICBzdHJva2U6IHZhcigtLXZ6LWhpc3RvZ3JhbS10aW1lc2VyaWVzLWhvdmVyLW91dGxpbmUtY29sb3IpICFpbXBvcnRhbnQ7CiAgICAgICAgc3Ryb2tlLW9wYWNpdHk6IDE7CiAgICAgIH0KCiAgICAgIC54LWF4aXMtaG92ZXIsCiAgICAgIC55LWF4aXMtaG92ZXIsCiAgICAgIC55LXNsaWNlLWF4aXMtaG92ZXIgewogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICB9CgogICAgICAueC1heGlzLWhvdmVyIC5sYWJlbCwKICAgICAgLnktYXhpcy1ob3ZlciAubGFiZWwsCiAgICAgIC55LXNsaWNlLWF4aXMtaG92ZXIgLmxhYmVsIHsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgICB0ZXh0LWFuY2hvcjogZW5kOwogICAgICB9CgogICAgICAueC1heGlzLWhvdmVyIHRleHQgewogICAgICAgIHRleHQtYW5jaG9yOiBtaWRkbGU7CiAgICAgIH0KCiAgICAgIC55LWF4aXMtaG92ZXIgdGV4dCwKICAgICAgLnktc2xpY2UtYXhpcy1ob3ZlciB0ZXh0IHsKICAgICAgICB0ZXh0LWFuY2hvcjogc3RhcnQ7CiAgICAgIH0KCiAgICAgIC54LWF4aXMtaG92ZXIgbGluZSwKICAgICAgLnktYXhpcy1ob3ZlciBsaW5lLAogICAgICAueS1zbGljZS1heGlzLWhvdmVyIGxpbmUgewogICAgICAgIHN0cm9rZTogY3VycmVudENvbG9yOwogICAgICB9CgogICAgICAueC1heGlzLWhvdmVyIHJlY3QsCiAgICAgIC55LWF4aXMtaG92ZXIgcmVjdCwKICAgICAgLnktc2xpY2UtYXhpcy1ob3ZlciByZWN0IHsKICAgICAgICBmaWxsOiB2YXIoLS12ei1oaXN0b2dyYW0tdGltZXNlcmllcy1ob3Zlci1iZy1jb2xvcik7CiAgICAgIH0KCiAgICAgICN0b29sdGlwLAogICAgICAueC1heGlzLWhvdmVyIHRleHQsCiAgICAgIC55LWF4aXMtaG92ZXIgdGV4dCwKICAgICAgLnktc2xpY2UtYXhpcy1ob3ZlciB0ZXh0IHsKICAgICAgICBjb2xvcjogdmFyKC0tdnotaGlzdG9ncmFtLXRpbWVzZXJpZXMtaG92ZXItb3V0bGluZS1jb2xvcik7CiAgICAgIH0KCiAgICAgIC5heGlzIHsKICAgICAgICBmb250LXNpemU6IDExcHg7CiAgICAgIH0KCiAgICAgIC5heGlzIHBhdGguZG9tYWluIHsKICAgICAgICBmaWxsOiBub25lOwogICAgICB9CgogICAgICAuYXhpcyAudGljayBsaW5lIHsKICAgICAgICBzdHJva2U6ICNkZGQ7CiAgICAgIH0KCiAgICAgIC5heGlzLnNsaWNlIHsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICB9CgogICAgICAuYXhpcy5zbGljZSAudGljayBsaW5lIHsKICAgICAgICBzdHJva2UtZGFzaGFycmF5OiAyOwogICAgICB9CgogICAgICAuc21hbGwgLmF4aXMgdGV4dCB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgfQogICAgICAuc21hbGwgLmF4aXMgLnRpY2s6Zmlyc3Qtb2YtdHlwZSB0ZXh0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgfQogICAgICAuc21hbGwgLmF4aXMgLnRpY2s6bGFzdC1vZi10eXBlIHRleHQgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CiAgICAgIC5tZWRpdW0gLmF4aXMgdGV4dCB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgfQogICAgICAubWVkaXVtIC5heGlzIC50aWNrOm50aC1jaGlsZCgybiArIDEpIHRleHQgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CiAgICAgIC5sYXJnZSAuYXhpcyB0ZXh0IHsKICAgICAgICBkaXNwbGF5OiBub25lOwogICAgICB9CiAgICAgIC5sYXJnZSAuYXhpcyAudGljazpudGgtY2hpbGQoMm4gKyAxKSB0ZXh0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLHZKdC5wcm90b3R5cGUsIm1vZGUiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sdkp0LnByb3RvdHlwZSwidGltZVByb3BlcnR5Iix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLHZKdC5wcm90b3R5cGUsImJpbnMiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sdkp0LnByb3RvdHlwZSwieCIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSx2SnQucHJvdG90eXBlLCJkeCIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSx2SnQucHJvdG90eXBlLCJ5Iix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLHZKdC5wcm90b3R5cGUsImNvbG9yU2NhbGUiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sdkp0LnByb3RvdHlwZSwibW9kZVRyYW5zaXRpb25EdXJhdGlvbiIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLHZKdC5wcm90b3R5cGUsIl9hdHRhY2hlZCIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSx2SnQucHJvdG90eXBlLCJfbmFtZSIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sdkp0LnByb3RvdHlwZSwiX2RhdGEiLHZvaWQgMCksdChbYSgidGltZVByb3BlcnR5IiwiY29sb3JTY2FsZSIsIl9hdHRhY2hlZCIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sdkp0LnByb3RvdHlwZSwiX3JlZHJhd09uQ2hhbmdlIixudWxsKSx0KFthKCJtb2RlIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSx2SnQucHJvdG90eXBlLCJfbW9kZVJlZHJhdyIsbnVsbCksdkp0PXQoW2koInZ6LWhpc3RvZ3JhbS10aW1lc2VyaWVzIildLHZKdCk7bGV0IHdKdD1jbGFzcyBleHRlbmRzKGJDdChjcih3ZSkpKXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5nZXREYXRhTG9hZE5hbWU9KHtydW46dH0pPT50LHRoaXMucmVxdWVzdERhdGE9KHQsZSxuKT0+e2NvbnN0IGk9RXIoKS5wbHVnaW5Sb3V0ZSgiaGlzdG9ncmFtcyIsIi9oaXN0b2dyYW1zIik7UHJvbWlzZS5hbGwodC5tYXAoKHQ9Pntjb25zdCBuPVBPKGkse3RhZzp0LnRhZyxydW46dC5ydW59KTtyZXR1cm4gdGhpcy5yZXF1ZXN0TWFuYWdlci5yZXF1ZXN0KG4pLnRoZW4oKG49PntlKHtpdGVtOnQsZGF0YTpufSl9KSl9KSkpLmZpbmFsbHkoKCgpPT57bigpfSkpfSx0aGlzLmxvYWREYXRhQ2FsbGJhY2s9KHQsZSxuKT0+e2NvbnN0IGk9KGZ1bmN0aW9uIHIodCl7Y29uc3QgZT10Lm1hcChiSnQpLG49c2MoZSwodD0+dC5taW4pKSxpPW9jKGUsKHQ9PnQubWF4KSk7cmV0dXJuIGUubWFwKCh0PT4oe3dhbGxfdGltZTp0LndhbGxfdGltZSxzdGVwOnQuc3RlcCxiaW5zOnhKdCh0LG4saSl9KSkpfSkobiksbz10aGlzLmdldERhdGFMb2FkTmFtZShlKTt0aGlzLiQuY2hhcnQuc2V0U2VyaWVzRGF0YShvLGkpfSx0aGlzLl9jb2xvclNjYWxlRnVuY3Rpb249X08sdGhpcy5fZXhwYW5kZWQ9ITF9X3JlbG9hZE9uUnVuVGFnUmVxdWVzdE1hbmFnZXJDaGFuZ2UoKXt0aGlzLnJlbG9hZCgpfV91cGRhdGVEYXRhVG9Mb2FkKCl7dGhpcy5kYXRhVG9Mb2FkPVt7cnVuOnRoaXMucnVuLHRhZzp0aGlzLnRhZ31dfWdldCBfcnVuQ29sb3IoKXtyZXR1cm4gdGhpcy5fY29sb3JTY2FsZUZ1bmN0aW9uKHRoaXMucnVuKX1yZWRyYXcoKXt0aGlzLiQuY2hhcnQucmVkcmF3KCl9X3RvZ2dsZUV4cGFuZGVkKHQpe3RoaXMuc2V0KCJfZXhwYW5kZWQiLCF0aGlzLl9leHBhbmRlZCksdGhpcy5yZWRyYXcoKX19O3dKdC50ZW1wbGF0ZT14ZWAKICAgIDx0Zi1jYXJkLWhlYWRpbmcKICAgICAgdGFnPSJbW3RhZ11dIgogICAgICBydW49IltbcnVuXV0iCiAgICAgIGRpc3BsYXktbmFtZT0iW1t0YWdNZXRhZGF0YS5kaXNwbGF5TmFtZV1dIgogICAgICBkZXNjcmlwdGlvbj0iW1t0YWdNZXRhZGF0YS5kZXNjcmlwdGlvbl1dIgogICAgICBjb2xvcj0iW1tfcnVuQ29sb3JdXSIKICAgID48L3RmLWNhcmQtaGVhZGluZz4KICAgIDwhLS0KICAgICAgVGhlIG1haW4gaGlzdG9ncmFtIHRoYXQgd2UgcmVuZGVyLiBEYXRhIGlzIHNldCBkaXJlY3RseSB3aXRoCiAgICAgIFxgc2V0U2VyaWVzRGF0YVxgLCBub3Qgd2l0aCBhIGJvdW5kIHByb3BlcnR5LgogICAgLS0+CiAgICA8dnotaGlzdG9ncmFtLXRpbWVzZXJpZXMKICAgICAgaWQ9ImNoYXJ0IgogICAgICB0aW1lLXByb3BlcnR5PSJbW3RpbWVQcm9wZXJ0eV1dIgogICAgICBtb2RlPSJbW2hpc3RvZ3JhbU1vZGVdXSIKICAgICAgY29sb3Itc2NhbGU9IltbX2NvbG9yU2NhbGVGdW5jdGlvbl1dIgogICAgPjwvdnotaGlzdG9ncmFtLXRpbWVzZXJpZXM+CiAgICA8ZGl2IHN0eWxlPSJkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogcm93OyI+CiAgICAgIDxwYXBlci1pY29uLWJ1dHRvbgogICAgICAgIHNlbGVjdGVkJD0iW1tfZXhwYW5kZWRdXSIKICAgICAgICBpY29uPSJmdWxsc2NyZWVuIgogICAgICAgIG9uLXRhcD0iX3RvZ2dsZUV4cGFuZGVkIgogICAgICA+PC9wYXBlci1pY29uLWJ1dHRvbj4KICAgIDwvZGl2PgogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIHdpZHRoOiAzMzBweDsKICAgICAgICBoZWlnaHQ6IDIzNXB4OwogICAgICAgIG1hcmdpbi1yaWdodDogMTBweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxNXB4OwogICAgICB9CiAgICAgIDpob3N0KFtfZXhwYW5kZWRdKSB7CiAgICAgICAgd2lkdGg6IDcwMHB4OwogICAgICAgIGhlaWdodDogNTAwcHg7CiAgICAgIH0KCiAgICAgIHZ6LWhpc3RvZ3JhbS10aW1lc2VyaWVzIHsKICAgICAgICAtbW96LXVzZXItc2VsZWN0OiBub25lOwogICAgICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTsKICAgICAgfQoKICAgICAgcGFwZXItaWNvbi1idXR0b24gewogICAgICAgIGNvbG9yOiAjMjE5NmYzOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDEwMCU7CiAgICAgICAgd2lkdGg6IDMycHg7CiAgICAgICAgaGVpZ2h0OiAzMnB4OwogICAgICAgIHBhZGRpbmc6IDRweDsKICAgICAgfQoKICAgICAgcGFwZXItaWNvbi1idXR0b25bc2VsZWN0ZWRdIHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10Yi11aS1saWdodC1hY2NlbnQpOwogICAgICB9CgogICAgICB0Zi1jYXJkLWhlYWRpbmcgewogICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgICAgICAgd2lkdGg6IDkwJTsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLHdKdC5wcm90b3R5cGUsInJ1biIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSx3SnQucHJvdG90eXBlLCJ0YWciLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sd0p0LnByb3RvdHlwZSwiZ2V0RGF0YUxvYWROYW1lIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLGJyKV0sd0p0LnByb3RvdHlwZSwicmVxdWVzdE1hbmFnZXIiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sd0p0LnByb3RvdHlwZSwibG9hZERhdGFDYWxsYmFjayIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSx3SnQucHJvdG90eXBlLCJ0YWdNZXRhZGF0YSIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSx3SnQucHJvdG90eXBlLCJ0aW1lUHJvcGVydHkiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sd0p0LnByb3RvdHlwZSwiaGlzdG9ncmFtTW9kZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbildLHdKdC5wcm90b3R5cGUsIl9jb2xvclNjYWxlRnVuY3Rpb24iLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFuLHJlZmxlY3RUb0F0dHJpYnV0ZTohMH0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sd0p0LnByb3RvdHlwZSwiX2V4cGFuZGVkIix2b2lkIDApLHQoW2EoInJ1biIsInRhZyIsInJlcXVlc3RNYW5hZ2VyIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSx3SnQucHJvdG90eXBlLCJfcmVsb2FkT25SdW5UYWdSZXF1ZXN0TWFuYWdlckNoYW5nZSIsbnVsbCksdChbYSgicnVuIiwidGFnIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSx3SnQucHJvdG90eXBlLCJfdXBkYXRlRGF0YVRvTG9hZCIsbnVsbCksdChbcygicnVuIiksZSgiZGVzaWduOnR5cGUiLFN0cmluZyksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sd0p0LnByb3RvdHlwZSwiX3J1bkNvbG9yIixudWxsKSx3SnQ9dChbaSgidGYtaGlzdG9ncmFtLWxvYWRlciIpXSx3SnQpO2xldCBTSnQ9Y2xhc3MgZXh0ZW5kcyhjcih3ZSkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLnJlbG9hZE9uUmVhZHk9ITAsdGhpcy5faGlzdG9ncmFtTW9kZT0ib2Zmc2V0Iix0aGlzLl90aW1lUHJvcGVydHk9InN0ZXAiLHRoaXMuX3Jlc3RhbXA9ITEsdGhpcy5fcmVxdWVzdE1hbmFnZXI9bmV3IGJyfV9yZWRyYXdDYXRlZ29yeVBhbmUodCxlKXtlJiZ0LnRhcmdldC5xdWVyeVNlbGVjdG9yQWxsKCJ0Zi1oaXN0b2dyYW0tbG9hZGVyIikuZm9yRWFjaCgodD0+dC5yZWRyYXcoKSkpfXJlYWR5KCl7c3VwZXIucmVhZHkoKSx0aGlzLnJlbG9hZE9uUmVhZHkmJnRoaXMucmVsb2FkKCl9cmVsb2FkKCl7dGhpcy5fZmV0Y2hUYWdzKCkudGhlbigoKCk9Pnt0aGlzLl9yZWxvYWRIaXN0b2dyYW1zKCl9KSl9X2ZldGNoVGFncygpe2NvbnN0IHQ9RXIoKS5wbHVnaW5Sb3V0ZSgiaGlzdG9ncmFtcyIsIi90YWdzIik7cmV0dXJuIHRoaXMuX3JlcXVlc3RNYW5hZ2VyLnJlcXVlc3QodCkudGhlbigodD0+e2lmKENlLmV4cG9ydHMuaXNFcXVhbCh0LHRoaXMuX3J1blRvVGFnSW5mbykpcmV0dXJuO2NvbnN0IGU9Q2UuZXhwb3J0cy5tYXBWYWx1ZXModCwodD0+T2JqZWN0LmtleXModCkpKSxuPWZyKGUpO3RoaXMuc2V0KCJfZGF0YU5vdEZvdW5kIiwwPT09bi5sZW5ndGgpLHRoaXMuc2V0KCJfcnVuVG9UYWciLGUpLHRoaXMuc2V0KCJfcnVuVG9UYWdJbmZvIix0KSx0aGlzLmFzeW5jKCgoKT0+e3RoaXMuc2V0KCJfY2F0ZWdvcmllc0RvbVJlYWR5IiwhMCl9KSl9KSl9X3JlbG9hZEhpc3RvZ3JhbXMoKXt0aGlzLnJvb3QucXVlcnlTZWxlY3RvckFsbCgidGYtaGlzdG9ncmFtLWxvYWRlciIpLmZvckVhY2goKHQ9Pnt0LnJlbG9hZCgpfSkpfV9zaG91bGRPcGVuKHQpe3JldHVybiB0PD0yfWdldCBfY2F0ZWdvcmllcygpe3JldHVybiBJcih0aGlzLl9ydW5Ub1RhZyx0aGlzLl9zZWxlY3RlZFJ1bnMsdGhpcy5fdGFnRmlsdGVyKX1fdGFnTWV0YWRhdGEodCxlLG4pe3JldHVybiB0W2VdW25dfX07U0p0LnRlbXBsYXRlPXhlYAogICAgPHRmLWRhc2hib2FyZC1sYXlvdXQ+CiAgICAgIDxkaXYgc2xvdD0ic2lkZWJhciI+CiAgICAgICAgPGRpdiBjbGFzcz0ic2V0dGluZ3MiPgogICAgICAgICAgPGRpdiBjbGFzcz0ic2lkZWJhci1zZWN0aW9uIj4KICAgICAgICAgICAgPHRmLW9wdGlvbi1zZWxlY3RvcgogICAgICAgICAgICAgIGlkPSJoaXN0b2dyYW1Nb2RlU2VsZWN0b3IiCiAgICAgICAgICAgICAgbmFtZT0iSGlzdG9ncmFtIG1vZGUiCiAgICAgICAgICAgICAgc2VsZWN0ZWQtaWQ9Int7X2hpc3RvZ3JhbU1vZGV9fSIKICAgICAgICAgICAgPgogICAgICAgICAgICAgIDxwYXBlci1idXR0b24gaWQ9Im92ZXJsYXkiPm92ZXJsYXk8L3BhcGVyLWJ1dHRvbj4KICAgICAgICAgICAgICA8cGFwZXItYnV0dG9uIGlkPSJvZmZzZXQiPm9mZnNldDwvcGFwZXItYnV0dG9uPgogICAgICAgICAgICA8L3RmLW9wdGlvbi1zZWxlY3Rvcj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ic2lkZWJhci1zZWN0aW9uIj4KICAgICAgICAgICAgPHRmLW9wdGlvbi1zZWxlY3RvcgogICAgICAgICAgICAgIGlkPSJ0aW1lUHJvcGVydHlTZWxlY3RvciIKICAgICAgICAgICAgICBuYW1lPSJPZmZzZXQgdGltZSBheGlzIgogICAgICAgICAgICAgIHNlbGVjdGVkLWlkPSJ7e190aW1lUHJvcGVydHl9fSIKICAgICAgICAgICAgPgogICAgICAgICAgICAgIDxwYXBlci1idXR0b24gaWQ9InN0ZXAiPnN0ZXA8L3BhcGVyLWJ1dHRvbj4KICAgICAgICAgICAgICA8cGFwZXItYnV0dG9uIGlkPSJyZWxhdGl2ZSI+cmVsYXRpdmU8L3BhcGVyLWJ1dHRvbj4KICAgICAgICAgICAgICA8cGFwZXItYnV0dG9uIGlkPSJ3YWxsX3RpbWUiPndhbGw8L3BhcGVyLWJ1dHRvbj4KICAgICAgICAgICAgPC90Zi1vcHRpb24tc2VsZWN0b3I+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyLXNlY3Rpb24gcnVucy1zZWxlY3RvciI+CiAgICAgICAgICA8dGYtcnVucy1zZWxlY3RvciBzZWxlY3RlZC1ydW5zPSJ7e19zZWxlY3RlZFJ1bnN9fSI+CiAgICAgICAgICA8L3RmLXJ1bnMtc2VsZWN0b3I+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IHNsb3Q9ImNlbnRlciI+CiAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19kYXRhTm90Rm91bmRdXSI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJuby1kYXRhLXdhcm5pbmciPgogICAgICAgICAgICA8aDM+Tm8gaGlzdG9ncmFtIGRhdGEgd2FzIGZvdW5kLjwvaDM+CiAgICAgICAgICAgIDxwPlByb2JhYmxlIGNhdXNlczo8L3A+CiAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICBZb3UgaGF2ZW7igJl0IHdyaXR0ZW4gYW55IGhpc3RvZ3JhbSBkYXRhIHRvIHlvdXIgZXZlbnQgZmlsZXMuCiAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICA8bGk+VGVuc29yQm9hcmQgY2Fu4oCZdCBmaW5kIHlvdXIgZXZlbnQgZmlsZXMuPC9saT4KICAgICAgICAgICAgPC91bD4KCiAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgIElmIHlvdeKAmXJlIG5ldyB0byB1c2luZyBUZW5zb3JCb2FyZCwgYW5kIHdhbnQgdG8gZmluZCBvdXQgaG93IHRvCiAgICAgICAgICAgICAgYWRkIGRhdGEgYW5kIHNldCB1cCB5b3VyIGV2ZW50IGZpbGVzLCBjaGVjayBvdXQgdGhlCiAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmJvYXJkL2Jsb2IvbWFzdGVyL1JFQURNRS5tZCIKICAgICAgICAgICAgICAgID5SRUFETUU8L2EKICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgYW5kIHBlcmhhcHMgdGhlCiAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vd3d3LnRlbnNvcmZsb3cub3JnL2dldF9zdGFydGVkL3N1bW1hcmllc19hbmRfdGVuc29yYm9hcmQiCiAgICAgICAgICAgICAgICA+VGVuc29yQm9hcmQgdHV0b3JpYWw8L2EKICAgICAgICAgICAgICA+LgogICAgICAgICAgICA8L3A+CgogICAgICAgICAgICA8cD4KICAgICAgICAgICAgICBJZiB5b3UgdGhpbmsgVGVuc29yQm9hcmQgaXMgY29uZmlndXJlZCBwcm9wZXJseSwgcGxlYXNlIHNlZQogICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vdGVuc29yZmxvdy90ZW5zb3Jib2FyZC9ibG9iL21hc3Rlci9SRUFETUUubWQjbXktdGVuc29yYm9hcmQtaXNudC1zaG93aW5nLWFueS1kYXRhLXdoYXRzLXdyb25nIgogICAgICAgICAgICAgICAgPnRoZSBzZWN0aW9uIG9mIHRoZSBSRUFETUUgZGV2b3RlZCB0byBtaXNzaW5nIGRhdGEgcHJvYmxlbXM8L2EKICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgYW5kIGNvbnNpZGVyIGZpbGluZyBhbiBpc3N1ZSBvbiBHaXRIdWIuCiAgICAgICAgICAgIDwvcD4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbWyFfZGF0YU5vdEZvdW5kXV0iPgogICAgICAgICAgPHRmLXRhZy1maWx0ZXJlciB0YWctZmlsdGVyPSJ7e190YWdGaWx0ZXJ9fSI+PC90Zi10YWctZmlsdGVyZXI+CiAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1yZXBlYXQiIGl0ZW1zPSJbW19jYXRlZ29yaWVzXV0iIGFzPSJjYXRlZ29yeSI+CiAgICAgICAgICAgIDx0Zi1jYXRlZ29yeS1wYWdpbmF0ZWQtdmlldwogICAgICAgICAgICAgIGNhdGVnb3J5PSJbW2NhdGVnb3J5XV0iCiAgICAgICAgICAgICAgaW5pdGlhbC1vcGVuZWQ9IltbX3Nob3VsZE9wZW4oaW5kZXgpXV0iCiAgICAgICAgICAgID4KICAgICAgICAgICAgICA8dGVtcGxhdGU+CiAgICAgICAgICAgICAgICA8dGYtaGlzdG9ncmFtLWxvYWRlcgogICAgICAgICAgICAgICAgICBydW49IltbaXRlbS5ydW5dXSIKICAgICAgICAgICAgICAgICAgdGFnPSJbW2l0ZW0udGFnXV0iCiAgICAgICAgICAgICAgICAgIGFjdGl2ZT0iW1thY3RpdmVdXSIKICAgICAgICAgICAgICAgICAgdGFnLW1ldGFkYXRhPSJbW190YWdNZXRhZGF0YShfcnVuVG9UYWdJbmZvLCBpdGVtLnJ1biwgaXRlbS50YWcpXV0iCiAgICAgICAgICAgICAgICAgIHRpbWUtcHJvcGVydHk9IltbX3RpbWVQcm9wZXJ0eV1dIgogICAgICAgICAgICAgICAgICBoaXN0b2dyYW0tbW9kZT0iW1tfaGlzdG9ncmFtTW9kZV1dIgogICAgICAgICAgICAgICAgICByZXF1ZXN0LW1hbmFnZXI9IltbX3JlcXVlc3RNYW5hZ2VyXV0iCiAgICAgICAgICAgICAgICA+PC90Zi1oaXN0b2dyYW0tbG9hZGVyPgogICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgIDwvdGYtY2F0ZWdvcnktcGFnaW5hdGVkLXZpZXc+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDwvZGl2PgogICAgPC90Zi1kYXNoYm9hcmQtbGF5b3V0PgoKICAgIDxzdHlsZSBpbmNsdWRlPSJkYXNoYm9hcmQtc3R5bGUiPjwvc3R5bGU+CiAgICA8c3R5bGU+CiAgICAgIC5uby1kYXRhLXdhcm5pbmcgewogICAgICAgIG1heC13aWR0aDogNTQwcHg7CiAgICAgICAgbWFyZ2luOiA4MHB4IGF1dG8gMCBhdXRvOwogICAgICB9CiAgICA8L3N0eWxlPgogIGAsdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxTSnQucHJvdG90eXBlLCJyZWxvYWRPblJlYWR5Iix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLFNKdC5wcm90b3R5cGUsIl9oaXN0b2dyYW1Nb2RlIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLFNKdC5wcm90b3R5cGUsIl90aW1lUHJvcGVydHkiLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheX0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLFNKdC5wcm90b3R5cGUsIl9zZWxlY3RlZFJ1bnMiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sU0p0LnByb3RvdHlwZSwiX3J1blRvVGFnIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLFNKdC5wcm90b3R5cGUsIl9ydW5Ub1RhZ0luZm8iLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxTSnQucHJvdG90eXBlLCJfZGF0YU5vdEZvdW5kIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLFNKdC5wcm90b3R5cGUsIl90YWdGaWx0ZXIiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxTSnQucHJvdG90eXBlLCJfcmVzdGFtcCIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLFNKdC5wcm90b3R5cGUsIl9jYXRlZ29yaWVzRG9tUmVhZHkiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsYnIpXSxTSnQucHJvdG90eXBlLCJfcmVxdWVzdE1hbmFnZXIiLHZvaWQgMCksdChbcygiX3J1blRvVGFnIiwiX3NlbGVjdGVkUnVucyIsIl90YWdGaWx0ZXIiLCJfY2F0ZWdvcmllc0RvbVJlYWR5IiksZSgiZGVzaWduOnR5cGUiLEFycmF5KSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxTSnQucHJvdG90eXBlLCJfY2F0ZWdvcmllcyIsbnVsbCksU0p0PXQoW2koInRmLWhpc3RvZ3JhbS1kYXNoYm9hcmQiKV0sU0p0KTtjbGFzcyBNSnR7Y29uc3RydWN0b3IodCxlLG49ITApe3RoaXMuX2FwaVVybD10LHRoaXMuX3JlcXVlc3RNYW5hZ2VyPWUsdGhpcy5fdXNlSHR0cEdldD1ufWdldEV4cGVyaW1lbnQodCl7cmV0dXJuIHRoaXMuX3NlbmRSZXF1ZXN0KCJleHBlcmltZW50Iix0KX1nZXREb3dubG9hZFVybCh0LGUsbil7cmV0dXJuIHRoaXMuX2FwaVVybCsiL2Rvd25sb2FkX2RhdGE/IituZXcgVVJMU2VhcmNoUGFyYW1zKHtmb3JtYXQ6dCxjb2x1bW5zVmlzaWJpbGl0eTpKU09OLnN0cmluZ2lmeShuKSxyZXF1ZXN0OkpTT04uc3RyaW5naWZ5KGUpfSl9bGlzdFNlc3Npb25Hcm91cHModCl7cmV0dXJuIHRoaXMuX3NlbmRSZXF1ZXN0KCJzZXNzaW9uX2dyb3VwcyIsdCl9bGlzdE1ldHJpY0V2YWxzKHQpe3JldHVybiB0aGlzLl9zZW5kUmVxdWVzdCgibWV0cmljX2V2YWxzIix0KX1fc2VuZFJlcXVlc3QodCxlKXtpZih0aGlzLl91c2VIdHRwR2V0KXtjb25zdCBuPWVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShlKSk7cmV0dXJuIHRoaXMuX3JlcXVlc3RNYW5hZ2VyLnJlcXVlc3QodGhpcy5fYXBpVXJsKyIvIit0KyI/cmVxdWVzdD0iK24pfWNvbnN0IG49bmV3IHZyO24ud2l0aENyZWRlbnRpYWxzPSEwLG4ubWV0aG9kVHlwZT15ci5QT1NULG4uY29udGVudFR5cGU9InRleHQvcGxhaW4iLG4uYm9keT1KU09OLnN0cmluZ2lmeShlKTtyZXR1cm4gdGhpcy5fcmVxdWVzdE1hbmFnZXIucmVxdWVzdFdpdGhPcHRpb25zKHRoaXMuX2FwaVVybCsiLyIrdCxuKX19bGV0IEVKdD1jbGFzcyBleHRlbmRzIHdle2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLm9yaWVudGF0aW9uPSJob3Jpem9udGFsIn19O2Z1bmN0aW9uIFRKdCh0KXtyZXR1cm4iIiE9PXQuZGlzcGxheU5hbWUmJnZvaWQgMCE9PXQuZGlzcGxheU5hbWU/dC5kaXNwbGF5TmFtZTp0Lm5hbWV9ZnVuY3Rpb24gQ0p0KHQpe2lmKCIiIT09dC5kaXNwbGF5TmFtZSYmdm9pZCAwIT09dC5kaXNwbGF5TmFtZSlyZXR1cm4gdC5kaXNwbGF5TmFtZTtsZXQgZT10Lm5hbWUuZ3JvdXAsbj10Lm5hbWUudGFnO3JldHVybiB2b2lkIDA9PT1lJiYoZT0iIiksdm9pZCAwPT09biYmKG49IiIpLCIiPT09ZT9uOmUrIi4iK259ZnVuY3Rpb24gQUp0KHQsZSl7aWYoZTx0LmhwYXJhbUNvbHVtbnMubGVuZ3RoKXJldHVybiBUSnQodC5ocGFyYW1Db2x1bW5zW2VdLmhwYXJhbUluZm8pO3JldHVybiBDSnQodC5tZXRyaWNDb2x1bW5zW2UtdC5ocGFyYW1Db2x1bW5zLmxlbmd0aF0ubWV0cmljSW5mbyl9ZnVuY3Rpb24ga0p0KHQpe3JldHVybiB0LmhwYXJhbUNvbHVtbnMubGVuZ3RofWZ1bmN0aW9uIExKdCh0KXtyZXR1cm4gdC5tZXRyaWNDb2x1bW5zLmxlbmd0aH1mdW5jdGlvbiBQSnQodCl7cmV0dXJuIGtKdCh0KStMSnQodCl9ZnVuY3Rpb24gTkp0KHQsZSl7cmV0dXJuIHRbZV19ZnVuY3Rpb24gSUp0KHQsZSl7cmV0dXJuIHQuZmluZCgodD0+Q2UuZXhwb3J0cy5pc0VxdWFsKHQubmFtZSxlKSkpfWZ1bmN0aW9uIFJKdCh0LGUsbil7cmV0dXJuIGUuaHBhcmFtc1t0LmhwYXJhbUNvbHVtbnNbbl0uaHBhcmFtSW5mby5uYW1lXX1mdW5jdGlvbiBPSnQodCxlLG4pe2NvbnN0IGk9SUp0KGUubWV0cmljVmFsdWVzLHQubWV0cmljQ29sdW1uc1tuXS5tZXRyaWNJbmZvLm5hbWUpO3JldHVybiB2b2lkIDA9PT1pP3ZvaWQgMDppLnZhbHVlfWZ1bmN0aW9uIHpKdCh0LGUsbil7cmV0dXJuIG48dC5ocGFyYW1Db2x1bW5zLmxlbmd0aD9SSnQodCxlLG4pOk9KdCh0LGUsbi10LmhwYXJhbUNvbHVtbnMubGVuZ3RoKX1mdW5jdGlvbiBESnQodCxlLG4pe3JldHVybiBHbChlLChlPT56SnQodCxlLG4pKSl9ZnVuY3Rpb24gQkp0KHQsZSxuKXtsZXQgaTtpZihuPGUuaHBhcmFtSW5mb3MubGVuZ3RoKWk9dC5ocGFyYW1Db2x1bW5zLmZpbmRJbmRleCgodD0+dC5ocGFyYW1JbmZvLm5hbWU9PT1lLmhwYXJhbUluZm9zW25dLm5hbWUpKTtlbHNle2NvbnN0IHI9ZS5tZXRyaWNJbmZvc1tuLWUuaHBhcmFtSW5mb3MubGVuZ3RoXS5uYW1lO2k9dC5ocGFyYW1Db2x1bW5zLmxlbmd0aCt0Lm1ldHJpY0NvbHVtbnMuZmluZEluZGV4KCh0PT50Lm1ldHJpY0luZm8ubmFtZT09PXIpKX1yZXR1cm4gY29uc29sZS5hc3NlcnQoLTEhPT1pKSxpfWZ1bmN0aW9uIEhKdCh0KXtyZXR1cm4gdC5ocGFyYW1JbmZvcy5sZW5ndGh9ZnVuY3Rpb24gRkp0KHQpe3JldHVybiB0Lm1ldHJpY0luZm9zLmxlbmd0aH1mdW5jdGlvbiBWSnQodCxlLG4pe3JldHVybiBHbChlLChlPT5XSnQodCxlLG4pKSl9ZnVuY3Rpb24gVUp0KHQsZSl7cmV0dXJuIHQuZmluZCgodD0+dC5uYW1lPT09ZSkpfWZ1bmN0aW9uIGpKdCh0LGUsbil7cmV0dXJuIGUuaHBhcmFtc1t0LmhwYXJhbUluZm9zW25dLm5hbWVdfWZ1bmN0aW9uIEdKdCh0LGUsbil7Y29uc3QgaT1JSnQoZS5tZXRyaWNWYWx1ZXMsdC5tZXRyaWNJbmZvc1tuXS5uYW1lKTtyZXR1cm4gdm9pZCAwPT09aT92b2lkIDA6aS52YWx1ZX1mdW5jdGlvbiBXSnQodCxlLG4pe3JldHVybiBuPHQuaHBhcmFtSW5mb3MubGVuZ3RoP2pKdCh0LGUsbik6R0p0KHQsZSxuLXQuaHBhcmFtSW5mb3MubGVuZ3RoKX1mdW5jdGlvbiBxSnQodCl7cmV0dXJuIENlLmV4cG9ydHMuaXNOdW1iZXIodCk/dC50b1ByZWNpc2lvbig1KTp2b2lkIDA9PT10PyIiOnQudG9TdHJpbmcoKX1mdW5jdGlvbiBZSnQodCxlKXtyZXR1cm4gdCp0K2UqZX1mdW5jdGlvbiBYSnQodCxlLG4saSl7cmV0dXJuIE1hdGguc3FydChZSnQodC1uLGUtaSkpfWZ1bmN0aW9uICRKdCh0LGUsbixpLHIsbyl7aWYodDxuJiZlPGkpcmV0dXJuIFhKdCh0LGUsbixpKTtpZihuPD10JiZ0PHImJmU8aSlyZXR1cm4gaS1lO2lmKHI8PXQmJmU8aSlyZXR1cm4gWEp0KHQsZSxyLGkpO2lmKHQ8biYmaTw9ZSYmZTxvKXJldHVybiBuLXQ7aWYobjw9dCYmdDxyJiZpPD1lJiZlPG8pcmV0dXJuIDA7aWYocjw9dCYmaTw9ZSYmZTxvKXJldHVybiB0LXI7aWYodDxuJiZvPD1lKXJldHVybiBYSnQodCxlLG4sbyk7aWYobjw9dCYmdDxyJiZvPD1lKXJldHVybiBlLW87aWYocjw9dCYmbzw9ZSlyZXR1cm4gWEp0KHQsZSxyLG8pO3Rocm93IlBvaW50ICh4LHkpIG11c3QgYmUgaW4gb25lIG9mIHRoZSByZWdpb25zIGRlZmluZWQgYWJvdmUuIn1mdW5jdGlvbiBLSnQodCxlKXtyZXR1cm4gdm9pZCAwPT09ZT8idHJhbnNsYXRlKCIrdCsiKSI6InRyYW5zbGF0ZSgiK3QrIiwiK2UrIikifWZ1bmN0aW9uIFpKdCh0LGUsbil7Y29uc3QgaT10LmdldChlLHQpO0FycmF5LmlzQXJyYXkoaSk/dC5zcGxpY2UuYXBwbHkodCxbZSwwLGkubGVuZ3RoXS5jb25jYXQobikpOnQuc2V0KGUsbil9ZnVuY3Rpb24gSkp0KHQpe2xldCBlPTA7Zm9yKGxldCBuPTA7bjx0Lmxlbmd0aDsrK24pZT0zMSplK3QuY2hhckNvZGVBdChuKSY0Mjk0OTY3Mjk1O3JldHVybiBlK01hdGgucG93KDIsMzEpfUVKdC50ZW1wbGF0ZT14ZWAKICAgIDxzbG90IG5hbWU9ImNvbnRlbnQiPjwvc2xvdD4KCiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgfQoKICAgICAgOmhvc3Qgc2xvdCB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIH0KCiAgICAgIDpob3N0IDo6c2xvdHRlZCgqKSB7CiAgICAgICAgZmxleDogMCAwIGF1dG87CiAgICAgIH0KCiAgICAgIDpob3N0KFtvcmllbnRhdGlvbj0naG9yaXpvbnRhbCddKSBzbG90IHsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93OwogICAgICAgIG92ZXJmbG93LXg6IGF1dG87CiAgICAgIH0KCiAgICAgIDpob3N0KFtvcmllbnRhdGlvbj0ndmVydGljYWwnXSkgc2xvdCB7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgICB9CgogICAgICA6aG9zdCA6OnNsb3R0ZWQoKjpub3QoOmxhc3QtY2hpbGQpKSB7CiAgICAgICAgYm9yZGVyOiAwIHNvbGlkIHZhcigtLWRpdmlkZXItY29sb3IsICNjY2MpOwogICAgICB9CgogICAgICA6aG9zdChbb3JpZW50YXRpb249J3ZlcnRpY2FsJ10pIDo6c2xvdHRlZCgqOm5vdCg6bGFzdC1jaGlsZCkpIHsKICAgICAgICBib3JkZXItYm90dG9tLXdpZHRoOiA1cHg7CiAgICAgIH0KCiAgICAgIDpob3N0KFtvcmllbnRhdGlvbj0naG9yaXpvbnRhbCddKSA6OnNsb3R0ZWQoKjpub3QoOmxhc3QtY2hpbGQpKSB7CiAgICAgICAgYm9yZGVyLXJpZ2h0LXdpZHRoOiA1cHg7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYCx0KFtvKHt0eXBlOlN0cmluZyxyZWZsZWN0VG9BdHRyaWJ1dGU6ITB9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sRUp0LnByb3RvdHlwZSwib3JpZW50YXRpb24iLHZvaWQgMCksRUp0PXQoW2koImhwYXJhbXMtc3BsaXQtbGF5b3V0IildLEVKdCk7dmFyIFFKdD1PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxocGFyYW1OYW1lOlRKdCxtZXRyaWNOYW1lOkNKdCxzY2hlbWFDb2x1bW5OYW1lOkFKdCxudW1IUGFyYW1zOmtKdCxudW1NZXRyaWNzOkxKdCxudW1Db2x1bW5zOlBKdCxocGFyYW1WYWx1ZUJ5TmFtZTpOSnQsbWV0cmljVmFsdWVCeU5hbWU6SUp0LGhwYXJhbVZhbHVlQnlJbmRleDpSSnQsbWV0cmljVmFsdWVCeUluZGV4Ok9KdCxjb2x1bW5WYWx1ZUJ5SW5kZXg6ekp0LG51bWVyaWNDb2x1bW5FeHRlbnQ6REp0LGdldEFic29sdXRlQ29sdW1uSW5kZXg6Qkp0LHNjaGVtYVZpc2libGVDb2x1bW5OYW1lOmZ1bmN0aW9uIHRRdCh0LGUpe3JldHVybiBlPHQuaHBhcmFtSW5mb3MubGVuZ3RoP1RKdCh0LmhwYXJhbUluZm9zW2VdKTpDSnQodC5tZXRyaWNJbmZvc1tlLXQuaHBhcmFtSW5mb3MubGVuZ3RoXSl9LG51bVZpc2libGVIUGFyYW1zOkhKdCxudW1WaXNpYmxlTWV0cmljczpGSnQsbnVtVmlzaWJsZUNvbHVtbnM6ZnVuY3Rpb24gZVF0KHQpe3JldHVybiBISnQodCkrRkp0KHQpfSx2aXNpYmxlTnVtZXJpY0NvbHVtbkV4dGVudDpWSnQscHJldHR5UHJpbnRIUGFyYW1WYWx1ZUJ5TmFtZTpmdW5jdGlvbiBuUXQodCxlKXtyZXR1cm4gcUp0KE5KdCh0LGUpKX0scHJldHR5UHJpbnRNZXRyaWNWYWx1ZUJ5TmFtZTpmdW5jdGlvbiBpUXQodCxlKXtyZXR1cm4gcUp0KElKdCh0LGUpKX0sc2Vzc2lvbkdyb3VwV2l0aE5hbWU6VUp0LGhwYXJhbVZhbHVlQnlWaXNpYmxlSW5kZXg6akp0LG1ldHJpY1ZhbHVlQnlWaXNpYmxlSW5kZXg6R0p0LGNvbHVtblZhbHVlQnlWaXNpYmxlSW5kZXg6V0p0LHByZXR0eVByaW50OnFKdCxsMk5vcm1TcXVhcmVkOllKdCxldWNsaWRlYW5EaXN0OlhKdCxwb2ludFRvUmVjdGFuZ2xlRGlzdDokSnQsdHJhbnNsYXRlU3RyOktKdCxyb3RhdGVTdHI6ZnVuY3Rpb24gclF0KHQsZSxuKXtsZXQgaT0icm90YXRlKCIrdDtyZXR1cm4gdm9pZCAwIT09ZSYmdm9pZCAwIT09biYmKGk9aSsiLCIrZSsiLCIrbiksaSs9IikiLGl9LGlzTnVsbE9yVW5kZWZpbmVkOmZ1bmN0aW9uIG9RdCh0KXtyZXR1cm4gbnVsbD09dH0scXVhZFRyZWVWaXNpdFBvaW50c0luUmVjdDpmdW5jdGlvbiBhUXQodCxlLG4saSxyLG8pe3QudmlzaXQoKChhLHMsbCxjLHUpPT57aWYodm9pZCAwPT09YS5sZW5ndGgpe2Rve2NvbnN0IHM9dC54KCkoYS5kYXRhKSxsPXQueSgpKGEuZGF0YSk7ZTw9cyYmczxpJiZuPD1sJiZsPHImJm8oYS5kYXRhKX13aGlsZShhPWEubmV4dCk7cmV0dXJuITB9cmV0dXJuIHM+PWl8fGM8PWV8fGw+PXJ8fHU8PW59KSl9LHF1YWRUcmVlVmlzaXRQb2ludHNJbkRpc2s6ZnVuY3Rpb24gc1F0KHQsZSxuLGkscil7dC52aXNpdCgoKG8sYSxzLGwsYyk9PntpZih2b2lkIDA9PT1vLmxlbmd0aCl7ZG97Y29uc3QgYT10LngoKShvLmRhdGEpLHM9dC55KCkoby5kYXRhKSxsPVhKdChlLG4sYSxzKTtsPD1pJiZyKG8uZGF0YSxsKX13aGlsZShvPW8ubmV4dCk7cmV0dXJuITB9cmV0dXJuICRKdChlLG4sYSxzLGwsYyk+aX0pKX0sZmlsdGVyU2V0OmZ1bmN0aW9uIGxRdCh0LGUpe2NvbnN0IG49bmV3IFNldDtyZXR1cm4gdC5mb3JFYWNoKCh0PT57ZSh0KSYmbi5hZGQodCl9KSksbn0sc2V0QXJyYXlPYnNlcnZhYmx5OlpKdCxoYXNoT2ZTdHJpbmc6Skp0fSk7bGV0IGNRdD1jbGFzcyBleHRlbmRzKGNyKHdlKSl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuY29uZmlndXJhdGlvbj17c2NoZW1hOntocGFyYW1Db2x1bW5zOltdLG1ldHJpY0NvbHVtbnM6W119LGNvbHVtbnNWaXNpYmlsaXR5OltdLHZpc2libGVTY2hlbWE6e2hwYXJhbUluZm9zOltdLG1ldHJpY0luZm9zOltdfX0sdGhpcy5zZXNzaW9uR3JvdXBzPVtdLHRoaXMuZGF0YUxvYWRlZFdpdGhOb25FbXB0eUhwYXJhbXM9ITEsdGhpcy5kYXRhTG9hZGVkV2l0aEVtcHR5SHBhcmFtcz0hMSx0aGlzLl9zdGF0dXNlcz1be3ZhbHVlOiJTVEFUVVNfVU5LTk9XTiIsZGlzcGxheU5hbWU6IlVua25vd24iLGFsbG93ZWQ6ITB9LHt2YWx1ZToiU1RBVFVTX1NVQ0NFU1MiLGRpc3BsYXlOYW1lOiJTdWNjZXNzIixhbGxvd2VkOiEwfSx7dmFsdWU6IlNUQVRVU19GQUlMVVJFIixkaXNwbGF5TmFtZToiRmFpbHVyZSIsYWxsb3dlZDohMH0se3ZhbHVlOiJTVEFUVVNfUlVOTklORyIsZGlzcGxheU5hbWU6IlJ1bm5pbmciLGFsbG93ZWQ6ITB9XSx0aGlzLl9nZXRFeHBlcmltZW50UmVzb2x2ZWQ9bmV3IFByb21pc2UoKHQ9Pnt0aGlzLl9yZXNvbHZlR2V0RXhwZXJpbWVudD10fSkpLHRoaXMuX2xpc3RTZXNzaW9uR3JvdXBzQ2FuY2VsbGVyPW5ldyB4Tyx0aGlzLl9wYWdlU2l6ZUlucHV0PXt2YWx1ZToiMTAwIixpbnZhbGlkOiExfSx0aGlzLl9wYWdlTnVtYmVySW5wdXQ9e3ZhbHVlOiIxIixpbnZhbGlkOiExfSx0aGlzLl9wYWdlQ291bnRTdHI9Ij8iLHRoaXMuX2hwYXJhbU5hbWU9VEp0LHRoaXMuX21ldHJpY05hbWU9Q0p0LHRoaXMuX3ByZXR0eVByaW50PXFKdH1yZWxvYWQoKXt0aGlzLl9xdWVyeVNlcnZlcigpfV9jc3ZVcmwodCxlKXtyZXR1cm4gdGhpcy5fZG93bmxvYWREYXRhVXJsKHQsZSwiY3N2Iil9X2pzb25VcmwodCxlKXtyZXR1cm4gdGhpcy5fZG93bmxvYWREYXRhVXJsKHQsZSwianNvbiIpfV9sYXRleFVybCh0LGUpe3JldHVybiB0aGlzLl9kb3dubG9hZERhdGFVcmwodCxlLCJsYXRleCIpfV9kb3dubG9hZERhdGFVcmwodCxlLG4pe3JldHVybiB0aGlzLmJhY2tlbmQuZ2V0RG93bmxvYWRVcmwobix0LGUuY29sdW1uc1Zpc2liaWxpdHkpfV9jb21wdXRlRXhwZXJpbWVudEFuZFJlbGF0ZWRQcm9wcygpe2NvbnN0IHQ9UUp0O2lmKHQuaXNOdWxsT3JVbmRlZmluZWQodGhpcy5iYWNrZW5kKXx8dC5pc051bGxPclVuZGVmaW5lZCh0aGlzLmV4cGVyaW1lbnROYW1lKSlyZXR1cm47dGhpcy5iYWNrZW5kLmdldEV4cGVyaW1lbnQoe2V4cGVyaW1lbnROYW1lOnRoaXMuZXhwZXJpbWVudE5hbWV9KS50aGVuKCh0PT57Q2UuZXhwb3J0cy5pc0VxdWFsKHQsdGhpcy5fZXhwZXJpbWVudCl8fCh0aGlzLnNldCgiX2V4cGVyaW1lbnQiLHQpLHRoaXMuX2NvbXB1dGVIUGFyYW1zKCksdGhpcy5fY29tcHV0ZU1ldHJpY3MoKSx0aGlzLl9xdWVyeVNlcnZlcigpLHRoaXMuX3Jlc29sdmVHZXRFeHBlcmltZW50KCkpfSkpLmZpbmFsbHkoKCgpPT57dGhpcy5fY29tcHV0ZURhdGFGb3VuZCgpfSkpfV9jb21wdXRlRGF0YUZvdW5kKCl7Y29uc3QgdD1Cb29sZWFuKHRoaXMuX2V4cGVyaW1lbnQmJnRoaXMuX2V4cGVyaW1lbnQuaHBhcmFtSW5mb3MmJnRoaXMuX2V4cGVyaW1lbnQuaHBhcmFtSW5mb3MubGVuZ3RoPjAmJnRoaXMuX2V4cGVyaW1lbnQubWV0cmljSW5mb3MmJnRoaXMuX2V4cGVyaW1lbnQubWV0cmljSW5mb3MubGVuZ3RoPjApO3RoaXMuc2V0KCJkYXRhTG9hZGVkV2l0aE5vbkVtcHR5SHBhcmFtcyIsdCksdGhpcy5zZXQoImRhdGFMb2FkZWRXaXRoRW1wdHlIcGFyYW1zIiwhdCl9X2NvbXB1dGVIUGFyYW1zKCl7Y29uc3QgdD1bXTt0aGlzLl9leHBlcmltZW50LmhwYXJhbUluZm9zLmZvckVhY2goKChlLG4pPT57Y29uc3QgaT17aW5mbzplLGRpc3BsYXllZDpuPDUsZmlsdGVyOnt9fTtpLmluZm8uaGFzT3duUHJvcGVydHkoImRvbWFpbkRpc2NyZXRlIik/KGkuZmlsdGVyLmRvbWFpbkRpc2NyZXRlPVtdLGkuaW5mby5kb21haW5EaXNjcmV0ZS5mb3JFYWNoKCh0PT57aS5maWx0ZXIuZG9tYWluRGlzY3JldGUucHVzaCh7dmFsdWU6dCxjaGVja2VkOiEwfSl9KSkpOiJEQVRBX1RZUEVfQk9PTCI9PT1pLmluZm8udHlwZT9pLmZpbHRlci5kb21haW5EaXNjcmV0ZT1be3ZhbHVlOiExLGNoZWNrZWQ6ITB9LHt2YWx1ZTohMCxjaGVja2VkOiEwfV06IkRBVEFfVFlQRV9GTE9BVDY0Ij09PWkuaW5mby50eXBlP2kuZmlsdGVyLmludGVydmFsPXttaW46e3ZhbHVlOiIiLGludmFsaWQ6ITF9LG1heDp7dmFsdWU6IiIsaW52YWxpZDohMX19OiJEQVRBX1RZUEVfU1RSSU5HIj09PWkuaW5mby50eXBlP2kuZmlsdGVyLnJlZ2V4cD0iIjpjb25zb2xlLndhcm4oInVua25vd24gaHBhcmFtLmluZm8udHlwZTogJXMiLGkuaW5mby50eXBlKSx0LnB1c2goaSl9KSksdGhpcy5zZXQoIl9ocGFyYW1zIix0KX1fY29tcHV0ZU1ldHJpY3MoKXtjb25zdCB0PVtdO3RoaXMuX2V4cGVyaW1lbnQubWV0cmljSW5mb3MuZm9yRWFjaCgoKGUsbik9Pnt0LnB1c2goe2luZm86ZSxmaWx0ZXI6e2ludGVydmFsOnttaW46e3ZhbHVlOiIiLGludmFsaWQ6ITF9LG1heDp7dmFsdWU6IiIsaW52YWxpZDohMX19fSxkaXNwbGF5ZWQ6bjw1fSl9KSksdGhpcy5zZXQoIl9tZXRyaWNzIix0KX1fY29tcHV0ZVNjaGVtYSgpe3JldHVybiB0aGlzLl9ocGFyYW1zJiZ0aGlzLl9tZXRyaWNzP3tocGFyYW1Db2x1bW5zOnRoaXMuX2hwYXJhbXMubWFwKCh0PT4oe2hwYXJhbUluZm86dC5pbmZvfSkpKSxtZXRyaWNDb2x1bW5zOnRoaXMuX21ldHJpY3MubWFwKCh0PT4oe21ldHJpY0luZm86dC5pbmZvfSkpKX06e2hwYXJhbUNvbHVtbnM6W10sbWV0cmljQ29sdW1uczpbXX19X3VwZGF0ZUNvbmZpZ3VyYXRpb24oKXt0aGlzLmRlYm91bmNlKCJfdXBkYXRlQ29uZmlndXJhdGlvbiIsKCgpPT57dGhpcy5jb25maWd1cmF0aW9uPXtzY2hlbWE6dGhpcy5fY29tcHV0ZVNjaGVtYSgpLGNvbHVtbnNWaXNpYmlsaXR5OnRoaXMuX2NvbXB1dGVDb2x1bW5zVmlzaWJpbGl0eSgpLHZpc2libGVTY2hlbWE6dGhpcy5fY29tcHV0ZVZpc2libGVTY2hlbWEoKX19KSl9X2NvbXB1dGVDb2x1bW5zVmlzaWJpbGl0eSgpe3JldHVybiB0aGlzLl9ocGFyYW1zJiZ0aGlzLl9tZXRyaWNzP3RoaXMuX2hwYXJhbXMubWFwKCh0PT50LmRpc3BsYXllZCkpLmNvbmNhdCh0aGlzLl9tZXRyaWNzLm1hcCgodD0+dC5kaXNwbGF5ZWQpKSk6W119X2NvbXB1dGVWaXNpYmxlU2NoZW1hKCl7aWYoIXRoaXMuX2hwYXJhbXN8fCF0aGlzLl9tZXRyaWNzKXJldHVybntocGFyYW1JbmZvczpbXSxtZXRyaWNJbmZvczpbXX07cmV0dXJue2hwYXJhbUluZm9zOnRoaXMuX2hwYXJhbXMuZmlsdGVyKCh0PT50LmRpc3BsYXllZCkpLm1hcCgodD0+dC5pbmZvKSksbWV0cmljSW5mb3M6dGhpcy5fbWV0cmljcy5maWx0ZXIoKHQ9PnQuZGlzcGxheWVkKSkubWFwKCh0PT50LmluZm8pKX19X3F1ZXJ5U2VydmVyKCl7dGhpcy5kZWJvdW5jZSgicXVlcnlTZXJ2ZXIiLCgoKT0+dGhpcy5fcXVlcnlTZXJ2ZXJOb0RlYm91bmNlKCkpLDEwMCl9X3F1ZXJ5U2VydmVyTm9EZWJvdW5jZSgpe2lmKHRoaXMuX2hwYXJhbXMmJnRoaXMuX21ldHJpY3MpcmV0dXJuIHRoaXMuX3NlbmRMaXN0U2Vzc2lvbkdyb3Vwc1JlcXVlc3QoKS50aGVuKHRoaXMuX2xpc3RTZXNzaW9uR3JvdXBzQ2FuY2VsbGVyLmNhbmNlbGxhYmxlKCgoe3ZhbHVlOnQsY2FuY2VsbGVkOmV9KT0+e2lmKCFlKXtpZih0LnRvdGFsU2l6ZT49MCl7dGhpcy5zZXQoIl9wYWdlQ291bnRTdHIiLFN0cmluZyhNYXRoLmNlaWwodC50b3RhbFNpemUvK3RoaXMuX3BhZ2VTaXplSW5wdXQudmFsdWUpKSksdGhpcy5zZXQoIl90b3RhbFNlc3Npb25Hcm91cHNDb3VudFN0ciIsdC50b3RhbFNpemUpfWVsc2UgdGhpcy5zZXQoIl9wYWdlQ291bnRTdHIiLCI/IiksdGhpcy5zZXQoIl90b3RhbFNlc3Npb25Hcm91cHNDb3VudFN0ciIsIlVua25vd24iKTtaSnQodGhpcywic2Vzc2lvbkdyb3VwcyIsdC5zZXNzaW9uR3JvdXBzKX19KSkpfV9zZW5kTGlzdFNlc3Npb25Hcm91cHNSZXF1ZXN0KCl7Y29uc3QgdD10aGlzLl9idWlsZExpc3RTZXNzaW9uR3JvdXBzUmVxdWVzdCgpO2lmKG51bGwhPT10KXJldHVybiB0aGlzLnNldCgiX3Nlc3Npb25Hcm91cHNSZXF1ZXN0Iix0KSx0aGlzLl9saXN0U2Vzc2lvbkdyb3Vwc0NhbmNlbGxlci5jYW5jZWxBbGwoKSx0aGlzLmJhY2tlbmQubGlzdFNlc3Npb25Hcm91cHModCl9X2J1aWxkTGlzdFNlc3Npb25Hcm91cHNSZXF1ZXN0KCl7Y29uc3QgdD10aGlzO2xldCBlPSEwO2Z1bmN0aW9uIG4obil7Y29uc3QgaT10LmdldChuKyIubWluLnZhbHVlIik7Y29uc29sZS5hc3NlcnQodm9pZCAwIT09aSk7Y29uc3Qgcj0iIj09PWk/Ii1JbmZpbml0eSI6K2k7dC5zZXQobisiLm1pbi5pbnZhbGlkIixpc05hTihyKSksZT1lJiYhaXNOYU4ocik7Y29uc3Qgbz10LmdldChuKyIubWF4LnZhbHVlIik7Y29uc29sZS5hc3NlcnQodm9pZCAwIT09byk7Y29uc3QgYT0iIj09PW8/IkluZmluaXR5IjorbztyZXR1cm4gdC5zZXQobisiLm1heC5pbnZhbGlkIixpc05hTihhKSksZT1lJiYhaXNOYU4oYSksaXNOYU4ocil8fGlzTmFOKGEpP251bGw6e21pblZhbHVlOnIsbWF4VmFsdWU6YX19ZnVuY3Rpb24gaShuKXtjb25zdCBpPXQuZ2V0KG4rIi52YWx1ZSIpO2NvbnNvbGUuYXNzZXJ0KHZvaWQgMCE9PWkpO2NvbnN0IHI9K2ksbz1OdW1iZXIuaXNJbnRlZ2VyKHIpJiZyPjA7cmV0dXJuIHQuc2V0KG4rIi5pbnZhbGlkIiwhbyksZT1lJiZvLG8/cjpudWxsfWNvbnN0IHI9dGhpcy5fc3RhdHVzZXMuZmlsdGVyKCh0PT50LmFsbG93ZWQpKS5tYXAoKHQ9PnQudmFsdWUpKTtsZXQgbz1bXTtpZih0aGlzLl9ocGFyYW1zLmZvckVhY2goKCh0LGUpPT57bGV0IGk9e2hwYXJhbTp0LmluZm8ubmFtZX07aWYodC5maWx0ZXIuZG9tYWluRGlzY3JldGUpaS5maWx0ZXJEaXNjcmV0ZT1bXSx0LmZpbHRlci5kb21haW5EaXNjcmV0ZS5mb3JFYWNoKCh0PT57dC5jaGVja2VkJiZpLmZpbHRlckRpc2NyZXRlLnB1c2godC52YWx1ZSl9KSk7ZWxzZSBpZih0LmZpbHRlci5pbnRlcnZhbClpLmZpbHRlckludGVydmFsPW4oIl9ocGFyYW1zLiIrZSsiLmZpbHRlci5pbnRlcnZhbCIpO2Vsc2V7aWYoIXQuZmlsdGVyLnJlZ2V4cClyZXR1cm4gY29uc29sZS5lcnJvcigiaHBhcmFtLmZpbHRlciB3aXRoIG5vIGRvbWFpbkRpc2NyZXRlLCBpbnRlcnZhbCBvciByZWdleHAgcHJvcGVydGllcyBzZXQ6ICVzIix0KSxudWxsO2kuZmlsdGVyUmVnZXhwPXQuZmlsdGVyLnJlZ2V4cH1vLnB1c2goaSl9KSksdGhpcy5fbWV0cmljcy5mb3JFYWNoKCgodCxlKT0+e2xldCBpPXttZXRyaWM6dC5pbmZvLm5hbWUsZmlsdGVySW50ZXJ2YWw6bigiX21ldHJpY3MuIitlKyIuZmlsdGVyLmludGVydmFsIil9O28ucHVzaChpKX0pKSx2b2lkIDAhPT10aGlzLl9zb3J0QnlJbmRleCYmdm9pZCAwIT09dGhpcy5fc29ydERpcmVjdGlvbil7aWYoISh0aGlzLl9zb3J0QnlJbmRleCBpbiBvKSlyZXR1cm4gY29uc29sZS5lcnJvcigiTm8gY29sdW1uIGluIGNvbFBhcmFtcyB3aXRoIGluZGV4IHNvcnRCeUluZGV4OiAlcyIsdGhpcy5fc29ydEJ5SW5kZXgpLG51bGw7b1t0aGlzLl9zb3J0QnlJbmRleF0ub3JkZXI9MD09PXRoaXMuX3NvcnREaXJlY3Rpb24/Ik9SREVSX0FTQyI6Ik9SREVSX0RFU0MifWNvbnN0IGE9aSgiX3BhZ2VOdW1iZXJJbnB1dCIpLHM9aSgiX3BhZ2VTaXplSW5wdXQiKTtpZighZSlyZXR1cm4gbnVsbDtyZXR1cm57ZXhwZXJpbWVudE5hbWU6dGhpcy5leHBlcmltZW50TmFtZSxhbGxvd2VkU3RhdHVzZXM6cixjb2xQYXJhbXM6byxzdGFydEluZGV4OnMqKGEtMSksc2xpY2VTaXplOnN9fV9tZXRyaWNTb3J0QnlJbmRleCh0KXtyZXR1cm4gdCt0aGlzLl9ocGFyYW1zLmxlbmd0aH19O2NRdC50ZW1wbGF0ZT14ZWAKICAgIDxocGFyYW1zLXNwbGl0LWxheW91dCBvcmllbnRhdGlvbj0idmVydGljYWwiPgogICAgICA8ZGl2IHNsb3Q9ImNvbnRlbnQiIGNsYXNzPSJzZWN0aW9uIGh5cGVycGFyYW1ldGVycyI+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+SHlwZXJwYXJhbWV0ZXJzPC9kaXY+CiAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20tcmVwZWF0IiBpdGVtcz0ie3tfaHBhcmFtc319IiBhcz0iaHBhcmFtIj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImhwYXJhbSI+CiAgICAgICAgICAgIDxwYXBlci1jaGVja2JveAogICAgICAgICAgICAgIGNoZWNrZWQ9Int7aHBhcmFtLmRpc3BsYXllZH19IgogICAgICAgICAgICAgIGNsYXNzPSJocGFyYW0tY2hlY2tib3giCiAgICAgICAgICAgID4KICAgICAgICAgICAgICBbW19ocGFyYW1OYW1lKGhwYXJhbS5pbmZvKV1dCiAgICAgICAgICAgIDwvcGFwZXItY2hlY2tib3g+CiAgICAgICAgICAgIDwhLS0gUHJlY2lzZWx5IG9uZSBvZiB0aGUgdGVtcGxhdGVzIGJlbG93IHdpbGwgYmUgc3RhbXBlZC4tLT4KICAgICAgICAgICAgPCEtLSAxLiBBIGxpc3Qgb2YgY2hlY2tib3hlcyAtLT4KICAgICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW2hwYXJhbS5maWx0ZXIuZG9tYWluRGlzY3JldGVdXSI+CiAgICAgICAgICAgICAgPHRlbXBsYXRlCiAgICAgICAgICAgICAgICBpcz0iZG9tLXJlcGVhdCIKICAgICAgICAgICAgICAgIGl0ZW1zPSJbW2hwYXJhbS5maWx0ZXIuZG9tYWluRGlzY3JldGVdXSIKICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICA8cGFwZXItY2hlY2tib3gKICAgICAgICAgICAgICAgICAgY2hlY2tlZD0ie3tpdGVtLmNoZWNrZWR9fSIKICAgICAgICAgICAgICAgICAgY2xhc3M9ImRpc2NyZXRlLXZhbHVlLWNoZWNrYm94IgogICAgICAgICAgICAgICAgICBvbi1jaGFuZ2U9Il9xdWVyeVNlcnZlciIKICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgW1tfcHJldHR5UHJpbnQoaXRlbS52YWx1ZSldXQogICAgICAgICAgICAgICAgPC9wYXBlci1jaGVja2JveD4KICAgICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICA8IS0tIDIuIEEgbnVtZXJpYyBpbnRlcnZhbCAtLT4KICAgICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW2hwYXJhbS5maWx0ZXIuaW50ZXJ2YWxdXSI+CiAgICAgICAgICAgICAgPHBhcGVyLWlucHV0CiAgICAgICAgICAgICAgICBsYWJlbD0iTWluIgogICAgICAgICAgICAgICAgdmFsdWU9Int7aHBhcmFtLmZpbHRlci5pbnRlcnZhbC5taW4udmFsdWV9fSIKICAgICAgICAgICAgICAgIGFsbG93ZWRfcGF0dGVybj0iWzAtOS5lXFwtXSIKICAgICAgICAgICAgICAgIG9uLXZhbHVlLWNoYW5nZWQ9Il9xdWVyeVNlcnZlciIKICAgICAgICAgICAgICAgIGVycm9yLW1lc3NhZ2U9IkludmFsaWQgaW5wdXQiCiAgICAgICAgICAgICAgICBpbnZhbGlkPSJbW2hwYXJhbS5maWx0ZXIuaW50ZXJ2YWwubWluLmludmFsaWRdXSIKICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPSItaW5maW5pdHkiCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgIDwvcGFwZXItaW5wdXQ+CiAgICAgICAgICAgICAgPHBhcGVyLWlucHV0CiAgICAgICAgICAgICAgICBsYWJlbD0iTWF4IgogICAgICAgICAgICAgICAgdmFsdWU9Int7aHBhcmFtLmZpbHRlci5pbnRlcnZhbC5tYXgudmFsdWV9fSIKICAgICAgICAgICAgICAgIGFsbG93ZWRfcGF0dGVybj0iWzAtOS5lXFwtXSIKICAgICAgICAgICAgICAgIG9uLXZhbHVlLWNoYW5nZWQ9Il9xdWVyeVNlcnZlciIKICAgICAgICAgICAgICAgIGVycm9yLW1lc3NhZ2U9IkludmFsaWQgaW5wdXQiCiAgICAgICAgICAgICAgICBpbnZhbGlkPSJbW2hwYXJhbS5maWx0ZXIuaW50ZXJ2YWwubWF4LmludmFsaWRdXSIKICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPSIraW5maW5pdHkiCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgIDwvcGFwZXItaW5wdXQ+CiAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgIDwhLS0gMy4gQSByZWdleHAgLS0+CiAgICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tocGFyYW0uZmlsdGVyLnJlZ2V4cF1dIj4KICAgICAgICAgICAgICA8cGFwZXItaW5wdXQKICAgICAgICAgICAgICAgIGxhYmVsPSJSZWd1bGFyIGV4cHJlc3Npb24iCiAgICAgICAgICAgICAgICB2YWx1ZT0ie3tocGFyYW0uZmlsdGVyLnJlZ2V4cH19IgogICAgICAgICAgICAgICAgb24tdmFsdWUtY2hhbmdlZD0iX3F1ZXJ5U2VydmVyIgogICAgICAgICAgICAgID4KICAgICAgICAgICAgICA8L3BhcGVyLWlucHV0PgogICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgc2xvdD0iY29udGVudCIgY2xhc3M9InNlY3Rpb24gbWV0cmljcyI+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+TWV0cmljczwvZGl2PgogICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLXJlcGVhdCIgaXRlbXM9Int7X21ldHJpY3N9fSIgYXM9Im1ldHJpYyI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJtZXRyaWMiPgogICAgICAgICAgICA8IS0tIFRPRE8oZXJleik6IE1ha2UgaXQgZWFzaWVyIHRvIGhhbmRsZSBhIGxhcmdlIG51bWJlciBvZgogICAgICAgICAgICAgICAgICBtZXRyaWNzOgogICAgICAgICAgICAgICAgICAxLiBBZGQgYW4gJ2lzb2xhdG9yJyByYWRpby1idXR0b24gdG8gc2VsZWN0IGp1c3Qgb25lCiAgICAgICAgICAgICAgICAgIG1ldHJpYyBhbmQKICAgICAgICAgICAgICAgICAgaGlkZSBhbGwgdGhlIHJlc3QKICAgICAgICAgICAgICAgICAgMi4gQWRkIGEgJ3RvZ2dsZS1hbGwnIGJ1dHRvbiB0aGF0IHdpbGwgaGlkZS91bmhpZGUKICAgICAgICAgICAgICAgICAgICBhbGwgdGhlCiAgICAgICAgICAgICAgICAgIG1ldHJpY3MuCiAgICAgICAgICAgICAgICAgIFVzZSBzaW1pbGFyIGxvZ2ljL2FwcGVhcmFuY2UgdG8gdGhlIHJ1bi1zZWxlY3RvciBvZgogICAgICAgICAgICAgICAgICBzY2FsYXJzLi0tPgogICAgICAgICAgICA8cGFwZXItY2hlY2tib3gKICAgICAgICAgICAgICBjaGVja2VkPSJ7e21ldHJpYy5kaXNwbGF5ZWR9fSIKICAgICAgICAgICAgICBjbGFzcz0ibWV0cmljLWNoZWNrYm94IgogICAgICAgICAgICA+CiAgICAgICAgICAgICAgW1tfbWV0cmljTmFtZShtZXRyaWMuaW5mbyldXQogICAgICAgICAgICA8L3BhcGVyLWNoZWNrYm94PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbmxpbmUtZWxlbWVudCI+CiAgICAgICAgICAgICAgPHBhcGVyLWlucHV0CiAgICAgICAgICAgICAgICBsYWJlbD0iTWluIgogICAgICAgICAgICAgICAgdmFsdWU9Int7bWV0cmljLmZpbHRlci5pbnRlcnZhbC5taW4udmFsdWV9fSIKICAgICAgICAgICAgICAgIGFsbG93ZWQtcGF0dGVybj0iWzAtOS5lXFwtXSIKICAgICAgICAgICAgICAgIG9uLXZhbHVlLWNoYW5nZWQ9Il9xdWVyeVNlcnZlciIKICAgICAgICAgICAgICAgIGVycm9yLW1lc3NhZ2U9IkludmFsaWQgaW5wdXQiCiAgICAgICAgICAgICAgICBpbnZhbGlkPSJ7e21ldHJpYy5maWx0ZXIuaW50ZXJ2YWwubWluLmludmFsaWR9fSIKICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPSItaW5maW5pdHkiCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgIDwvcGFwZXItaW5wdXQ+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbmxpbmUtZWxlbWVudCI+CiAgICAgICAgICAgICAgPHBhcGVyLWlucHV0CiAgICAgICAgICAgICAgICBsYWJlbD0iTWF4IgogICAgICAgICAgICAgICAgYWxsb3dlZC1wYXR0ZXJuPSJbMC05LmVcXC1dIgogICAgICAgICAgICAgICAgdmFsdWU9Int7bWV0cmljLmZpbHRlci5pbnRlcnZhbC5tYXgudmFsdWV9fSIKICAgICAgICAgICAgICAgIG9uLXZhbHVlLWNoYW5nZWQ9Il9xdWVyeVNlcnZlciIKICAgICAgICAgICAgICAgIGVycm9yLW1lc3NhZ2U9IkludmFsaWQgaW5wdXQiCiAgICAgICAgICAgICAgICBpbnZhbGlkPSJ7e21ldHJpYy5maWx0ZXIuaW50ZXJ2YWwubWF4LmludmFsaWR9fSIKICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPSIraW5maW5pdHkiCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgIDwvcGFwZXItaW5wdXQ+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgc2xvdD0iY29udGVudCIgY2xhc3M9InNlY3Rpb24gc3RhdHVzIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLXRpdGxlIj5TdGF0dXM8L2Rpdj4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1yZXBlYXQiIGl0ZW1zPSJbW19zdGF0dXNlc11dIiBhcz0ic3RhdHVzIj4KICAgICAgICAgIDxwYXBlci1jaGVja2JveCBjaGVja2VkPSJ7e3N0YXR1cy5hbGxvd2VkfX0iIG9uLWNoYW5nZT0iX3F1ZXJ5U2VydmVyIj4KICAgICAgICAgICAgW1tzdGF0dXMuZGlzcGxheU5hbWVdXQogICAgICAgICAgPC9wYXBlci1jaGVja2JveD4KICAgICAgICA8L3RlbXBsYXRlPgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBzbG90PSJjb250ZW50IiBjbGFzcz0ic2VjdGlvbiBzb3J0aW5nIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLXRpdGxlIj5Tb3J0aW5nPC9kaXY+CiAgICAgICAgPHBhcGVyLWRyb3Bkb3duLW1lbnUKICAgICAgICAgIGxhYmVsPSJTb3J0IGJ5IgogICAgICAgICAgb24tc2VsZWN0ZWQtaXRlbS1jaGFuZ2VkPSJfcXVlcnlTZXJ2ZXIiCiAgICAgICAgICBob3Jpem9udGFsLWFsaWduPSJsZWZ0IgogICAgICAgID4KICAgICAgICAgIDxwYXBlci1saXN0Ym94CiAgICAgICAgICAgIGNsYXNzPSJkcm9wZG93bi1jb250ZW50IgogICAgICAgICAgICBzbG90PSJkcm9wZG93bi1jb250ZW50IgogICAgICAgICAgICBzZWxlY3RlZD0ie3tfc29ydEJ5SW5kZXh9fSIKICAgICAgICAgICAgb24tc2VsZWN0ZWQtaXRlbS1jaGFuZ2VkPSJfcXVlcnlTZXJ2ZXIiCiAgICAgICAgICA+CiAgICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLXJlcGVhdCIgaXRlbXM9IltbX2hwYXJhbXNdXSIgYXM9ImhwYXJhbSI+CiAgICAgICAgICAgICAgPHBhcGVyLWl0ZW0+IFtbX2hwYXJhbU5hbWUoaHBhcmFtLmluZm8pXV0gPC9wYXBlci1pdGVtPgogICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1yZXBlYXQiIGl0ZW1zPSJbW19tZXRyaWNzXV0iIGFzPSJtZXRyaWMiPgogICAgICAgICAgICAgIDxwYXBlci1pdGVtPiBbW19tZXRyaWNOYW1lKG1ldHJpYy5pbmZvKV1dIDwvcGFwZXItaXRlbT4KICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgIDwvcGFwZXItbGlzdGJveD4KICAgICAgICA8L3BhcGVyLWRyb3Bkb3duLW1lbnU+CiAgICAgICAgPHBhcGVyLWRyb3Bkb3duLW1lbnUKICAgICAgICAgIGxhYmVsPSJEaXJlY3Rpb24iCiAgICAgICAgICBvbi1zZWxlY3RlZC1pdGVtLWNoYW5nZWQ9Il9xdWVyeVNlcnZlciIKICAgICAgICAgIGhvcml6b250YWwtYWxpZ249ImxlZnQiCiAgICAgICAgPgogICAgICAgICAgPHBhcGVyLWxpc3Rib3gKICAgICAgICAgICAgY2xhc3M9ImRyb3Bkb3duLWNvbnRlbnQiCiAgICAgICAgICAgIHNsb3Q9ImRyb3Bkb3duLWNvbnRlbnQiCiAgICAgICAgICAgIHNlbGVjdGVkPSJ7e19zb3J0RGlyZWN0aW9ufX0iCiAgICAgICAgICA+CiAgICAgICAgICAgIDxwYXBlci1pdGVtPkFzY2VuZGluZzwvcGFwZXItaXRlbT4KICAgICAgICAgICAgPHBhcGVyLWl0ZW0+RGVzY2VuZGluZzwvcGFwZXItaXRlbT4KICAgICAgICAgIDwvcGFwZXItbGlzdGJveD4KICAgICAgICA8L3BhcGVyLWRyb3Bkb3duLW1lbnU+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IHNsb3Q9ImNvbnRlbnQiIGNsYXNzPSJzZWN0aW9uIHBhZ2luZyI+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+UGFnaW5nPC9kaXY+CiAgICAgICAgPGRpdj4KICAgICAgICAgIE51bWJlciBvZiBtYXRjaGluZyBzZXNzaW9uIGdyb3VwczogW1tfdG90YWxTZXNzaW9uR3JvdXBzQ291bnRTdHJdXQogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImlubGluZS1lbGVtZW50IHBhZ2UtbnVtYmVyLWlucHV0Ij4KICAgICAgICAgIDxwYXBlci1pbnB1dAogICAgICAgICAgICBsYWJlbD0iUGFnZSAjIgogICAgICAgICAgICB2YWx1ZT0ie3tfcGFnZU51bWJlcklucHV0LnZhbHVlfX0iCiAgICAgICAgICAgIGFsbG93ZWQtcGF0dGVybj0iWzAtOV0iCiAgICAgICAgICAgIGVycm9yLW1lc3NhZ2U9IkludmFsaWQgaW5wdXQiCiAgICAgICAgICAgIGludmFsaWQ9IltbX3BhZ2VOdW1iZXJJbnB1dC5pbnZhbGlkXV0iCiAgICAgICAgICAgIG9uLXZhbHVlLWNoYW5nZWQ9Il9xdWVyeVNlcnZlciIKICAgICAgICAgID4KICAgICAgICAgICAgPGRpdiBzbG90PSJzdWZmaXgiIGNsYXNzPSJwYWdlLXN1ZmZpeCI+LyBbW19wYWdlQ291bnRTdHJdXTwvZGl2PgogICAgICAgICAgPC9wYXBlci1pbnB1dD4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJpbmxpbmUtZWxlbWVudCBwYWdlLXNpemUtaW5wdXQiPgogICAgICAgICAgPHBhcGVyLWlucHV0CiAgICAgICAgICAgIGxhYmVsPSJNYXggIyBvZiBzZXNzaW9uIGdyb3VwcyBwZXIgcGFnZToiCiAgICAgICAgICAgIHZhbHVlPSJ7e19wYWdlU2l6ZUlucHV0LnZhbHVlfX0iCiAgICAgICAgICAgIGFsbG93ZWQtcGF0dGVybj0iWzAtOV0iCiAgICAgICAgICAgIGVycm9yLW1lc3NhZ2U9IkludmFsaWQgaW5wdXQiCiAgICAgICAgICAgIGludmFsaWQ9IltbX3BhZ2VTaXplSW5wdXQuaW52YWxpZF1dIgogICAgICAgICAgICBvbi12YWx1ZS1jaGFuZ2VkPSJfcXVlcnlTZXJ2ZXIiCiAgICAgICAgICA+CiAgICAgICAgICA8L3BhcGVyLWlucHV0PgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBzbG90PSJjb250ZW50IiBjbGFzcz0ic2VjdGlvbiBkb3dubG9hZCI+CiAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19zZXNzaW9uR3JvdXBzUmVxdWVzdF1dIj4KICAgICAgICAgIERvd25sb2FkIGRhdGEgYXMKICAgICAgICAgIDxzcGFuPgogICAgICAgICAgICA8YQogICAgICAgICAgICAgIGlkPSJjc3ZMaW5rIgogICAgICAgICAgICAgIGRvd25sb2FkPSJocGFyYW1zX3RhYmxlLmNzdiIKICAgICAgICAgICAgICBocmVmPSJbW19jc3ZVcmwoX3Nlc3Npb25Hcm91cHNSZXF1ZXN0LCBjb25maWd1cmF0aW9uKV1dIgogICAgICAgICAgICAgID5DU1Y8L2EKICAgICAgICAgICAgPgogICAgICAgICAgICA8YQogICAgICAgICAgICAgIGlkPSJqc29uTGluayIKICAgICAgICAgICAgICBkb3dubG9hZD0iaHBhcmFtc190YWJsZS5qc29uIgogICAgICAgICAgICAgIGhyZWY9IltbX2pzb25VcmwoX3Nlc3Npb25Hcm91cHNSZXF1ZXN0LCBjb25maWd1cmF0aW9uKV1dIgogICAgICAgICAgICAgID5KU09OPC9hCiAgICAgICAgICAgID4KICAgICAgICAgICAgPGEKICAgICAgICAgICAgICBpZD0ibGF0ZXhMaW5rIgogICAgICAgICAgICAgIGRvd25sb2FkPSJocGFyYW1zX3RhYmxlLnRleCIKICAgICAgICAgICAgICBocmVmPSJbW19sYXRleFVybChfc2Vzc2lvbkdyb3Vwc1JlcXVlc3QsIGNvbmZpZ3VyYXRpb24pXV0iCiAgICAgICAgICAgICAgPkxhVGVYPC9hCiAgICAgICAgICAgID4KICAgICAgICAgIDwvc3Bhbj4KICAgICAgICA8L3RlbXBsYXRlPgogICAgICA8L2Rpdj4KICAgIDwvaHBhcmFtcy1zcGxpdC1sYXlvdXQ+CiAgICA8c3R5bGU+CiAgICAgIC5zZWN0aW9uIHsKICAgICAgICBwYWRkaW5nOiAxMHB4OwogICAgICB9CiAgICAgIC5zZWN0aW9uLXRpdGxlIHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBmb250LXdlaWdodDogYm9sZDsKICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKICAgICAgICBtYXJnaW4tYm90dG9tOiA3cHg7CiAgICAgIH0KICAgICAgLmRpc2NyZXRlLXZhbHVlLWNoZWNrYm94LAogICAgICAubWV0cmljLWNoZWNrYm94LAogICAgICAuaHBhcmFtLWNoZWNrYm94IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgfQogICAgICAuZGlzY3JldGUtdmFsdWUtY2hlY2tib3ggewogICAgICAgIG1hcmdpbi1sZWZ0OiAyMHB4OwogICAgICB9CiAgICAgIC5ocGFyYW0sCiAgICAgIC5tZXRyaWMgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CiAgICAgIC5pbmxpbmUtZWxlbWVudCB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIHdpZHRoOiA0MCU7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDEwcHg7CiAgICAgIH0KICAgICAgLnBhZ2UtbnVtYmVyLWlucHV0IHsKICAgICAgICB3aWR0aDogMjAlOwogICAgICB9CiAgICAgIC5wYWdlLXNpemUtaW5wdXQgewogICAgICAgIHdpZHRoOiA2MCU7CiAgICAgIH0KICAgICAgdmFhZGluLXNwbGl0LWxheW91dCB7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICB9CiAgICAgIHBhcGVyLWxpc3Rib3ggewogICAgICAgIG1heC1oZWlnaHQ6IDE1ZW07CiAgICAgIH0KICAgICAgLnBhZ2Utc3VmZml4IHsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICB9CiAgICA8L3N0eWxlPgogIGAsdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sY1F0LnByb3RvdHlwZSwiZXhwZXJpbWVudE5hbWUiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3Qsbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGNRdC5wcm90b3R5cGUsImNvbmZpZ3VyYXRpb24iLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheSxub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sY1F0LnByb3RvdHlwZSwic2Vzc2lvbkdyb3VwcyIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW4sbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxjUXQucHJvdG90eXBlLCJkYXRhTG9hZGVkV2l0aE5vbkVtcHR5SHBhcmFtcyIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW4sbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxjUXQucHJvdG90eXBlLCJkYXRhTG9hZGVkV2l0aEVtcHR5SHBhcmFtcyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxjUXQucHJvdG90eXBlLCJfZXhwZXJpbWVudCIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sY1F0LnByb3RvdHlwZSwiX2hwYXJhbXMiLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheX0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLGNRdC5wcm90b3R5cGUsIl9tZXRyaWNzIix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sY1F0LnByb3RvdHlwZSwiX3N0YXR1c2VzIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGNRdC5wcm90b3R5cGUsIl9nZXRFeHBlcmltZW50UmVzb2x2ZWQiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pXSxjUXQucHJvdG90eXBlLCJfcmVzb2x2ZUdldEV4cGVyaW1lbnQiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sY1F0LnByb3RvdHlwZSwiX2xpc3RTZXNzaW9uR3JvdXBzQ2FuY2VsbGVyIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLGNRdC5wcm90b3R5cGUsIl9zb3J0QnlJbmRleCIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxjUXQucHJvdG90eXBlLCJfc29ydERpcmVjdGlvbiIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxjUXQucHJvdG90eXBlLCJfcGFnZVNpemVJbnB1dCIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxjUXQucHJvdG90eXBlLCJfcGFnZU51bWJlcklucHV0Iix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLGNRdC5wcm90b3R5cGUsIl9wYWdlQ291bnRTdHIiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sY1F0LnByb3RvdHlwZSwiX3RvdGFsU2Vzc2lvbkdyb3Vwc0NvdW50U3RyIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGNRdC5wcm90b3R5cGUsIl9zZXNzaW9uR3JvdXBzUmVxdWVzdCIsdm9pZCAwKSx0KFthKCJiYWNrZW5kIiwiZXhwZXJpbWVudE5hbWUiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLGNRdC5wcm90b3R5cGUsIl9jb21wdXRlRXhwZXJpbWVudEFuZFJlbGF0ZWRQcm9wcyIsbnVsbCksdChbYSgiX2hwYXJhbXMuKiIsIl9tZXRyaWNzLioiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLGNRdC5wcm90b3R5cGUsIl91cGRhdGVDb25maWd1cmF0aW9uIixudWxsKSxjUXQ9dChbaSgidGYtaHBhcmFtcy1xdWVyeS1wYW5lIildLGNRdCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICAgKiBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgICAqIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgICogVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgICogaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICAgKiBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQKICAgICAqIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICAgKiBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgICogc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdAogICAgICogaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAgKi8KY29uc3QgdVF0PSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZudWxsIT13aW5kb3cuY3VzdG9tRWxlbWVudHMmJnZvaWQgMCE9PXdpbmRvdy5jdXN0b21FbGVtZW50cy5wb2x5ZmlsbFdyYXBGbHVzaENhbGxiYWNrLGhRdD0odCxlLG49bnVsbCk9Pntmb3IoO2UhPT1uOyl7Y29uc3Qgbj1lLm5leHRTaWJsaW5nO3QucmVtb3ZlQ2hpbGQoZSksZT1ufX0sZFF0PWB7e2xpdC0ke1N0cmluZyhNYXRoLnJhbmRvbSgpKS5zbGljZSgyKX19fWAscFF0PWBceDNjIS0tJHtkUXR9LS1ceDNlYCxmUXQ9bmV3IFJlZ0V4cChgJHtkUXR9fCR7cFF0fWApLG1RdD0iJGxpdCQiO2NsYXNzIGdRdHtjb25zdHJ1Y3Rvcih0LGUpe3RoaXMucGFydHM9W10sdGhpcy5lbGVtZW50PWU7Y29uc3Qgbj1bXSxpPVtdLHI9ZG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlcihlLmNvbnRlbnQsMTMzLG51bGwsITEpO2xldCBvPTAsYT0tMSxzPTA7Y29uc3R7c3RyaW5nczpsLHZhbHVlczp7bGVuZ3RoOmN9fT10O2Zvcig7czxjOyl7Y29uc3QgdD1yLm5leHROb2RlKCk7aWYobnVsbCE9PXQpe2lmKGErKywxPT09dC5ub2RlVHlwZSl7aWYodC5oYXNBdHRyaWJ1dGVzKCkpe2NvbnN0IGU9dC5hdHRyaWJ1dGVzLHtsZW5ndGg6bn09ZTtsZXQgaT0wO2ZvcihsZXQgdD0wO3Q8bjt0KyspX1F0KGVbdF0ubmFtZSxtUXQpJiZpKys7Zm9yKDtpLS0gPjA7KXtjb25zdCBlPWJRdC5leGVjKGxbc10pWzJdLG49ZS50b0xvd2VyQ2FzZSgpK21RdCxpPXQuZ2V0QXR0cmlidXRlKG4pO3QucmVtb3ZlQXR0cmlidXRlKG4pO2NvbnN0IHI9aS5zcGxpdChmUXQpO3RoaXMucGFydHMucHVzaCh7dHlwZToiYXR0cmlidXRlIixpbmRleDphLG5hbWU6ZSxzdHJpbmdzOnJ9KSxzKz1yLmxlbmd0aC0xfX0iVEVNUExBVEUiPT09dC50YWdOYW1lJiYoaS5wdXNoKHQpLHIuY3VycmVudE5vZGU9dC5jb250ZW50KX1lbHNlIGlmKDM9PT10Lm5vZGVUeXBlKXtjb25zdCBlPXQuZGF0YTtpZihlLmluZGV4T2YoZFF0KT49MCl7Y29uc3QgaT10LnBhcmVudE5vZGUscj1lLnNwbGl0KGZRdCksbz1yLmxlbmd0aC0xO2ZvcihsZXQgZT0wO2U8bztlKyspe2xldCBuLG89cltlXTtpZigiIj09PW8pbj12UXQoKTtlbHNle2NvbnN0IHQ9YlF0LmV4ZWMobyk7bnVsbCE9PXQmJl9RdCh0WzJdLG1RdCkmJihvPW8uc2xpY2UoMCx0LmluZGV4KSt0WzFdK3RbMl0uc2xpY2UoMCwtbVF0Lmxlbmd0aCkrdFszXSksbj1kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShvKX1pLmluc2VydEJlZm9yZShuLHQpLHRoaXMucGFydHMucHVzaCh7dHlwZToibm9kZSIsaW5kZXg6KythfSl9IiI9PT1yW29dPyhpLmluc2VydEJlZm9yZSh2UXQoKSx0KSxuLnB1c2godCkpOnQuZGF0YT1yW29dLHMrPW99fWVsc2UgaWYoOD09PXQubm9kZVR5cGUpaWYodC5kYXRhPT09ZFF0KXtjb25zdCBlPXQucGFyZW50Tm9kZTtudWxsIT09dC5wcmV2aW91c1NpYmxpbmcmJmEhPT1vfHwoYSsrLGUuaW5zZXJ0QmVmb3JlKHZRdCgpLHQpKSxvPWEsdGhpcy5wYXJ0cy5wdXNoKHt0eXBlOiJub2RlIixpbmRleDphfSksbnVsbD09PXQubmV4dFNpYmxpbmc/dC5kYXRhPSIiOihuLnB1c2godCksYS0tKSxzKyt9ZWxzZXtsZXQgZT0tMTtmb3IoOy0xIT09KGU9dC5kYXRhLmluZGV4T2YoZFF0LGUrMSkpOyl0aGlzLnBhcnRzLnB1c2goe3R5cGU6Im5vZGUiLGluZGV4Oi0xfSkscysrfX1lbHNlIHIuY3VycmVudE5vZGU9aS5wb3AoKX1mb3IoY29uc3QgdCBvZiBuKXQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0KX19Y29uc3QgX1F0PSh0LGUpPT57Y29uc3Qgbj10Lmxlbmd0aC1lLmxlbmd0aDtyZXR1cm4gbj49MCYmdC5zbGljZShuKT09PWV9LHlRdD10PT4tMSE9PXQuaW5kZXgsdlF0PSgpPT5kb2N1bWVudC5jcmVhdGVDb21tZW50KCIiKSxiUXQ9LyhbIFx4MDlceDBhXHgwY1x4MGRdKShbXlwwLVx4MUZceDdGLVx4OUYgIic+PS9dKykoWyBceDA5XHgwYVx4MGNceDBkXSo9WyBceDA5XHgwYVx4MGNceDBkXSooPzpbXiBceDA5XHgwYVx4MGNceDBkIidgPD49XSp8IlteIl0qfCdbXiddKikpJC87ZnVuY3Rpb24geFF0KHQsZSl7Y29uc3R7ZWxlbWVudDp7Y29udGVudDpufSxwYXJ0czppfT10LHI9ZG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlcihuLDEzMyxudWxsLCExKTtsZXQgbz1TUXQoaSksYT1pW29dLHM9LTEsbD0wO2NvbnN0IGM9W107bGV0IHU9bnVsbDtmb3IoO3IubmV4dE5vZGUoKTspe3MrKztjb25zdCB0PXIuY3VycmVudE5vZGU7Zm9yKHQucHJldmlvdXNTaWJsaW5nPT09dSYmKHU9bnVsbCksZS5oYXModCkmJihjLnB1c2godCksbnVsbD09PXUmJih1PXQpKSxudWxsIT09dSYmbCsrO3ZvaWQgMCE9PWEmJmEuaW5kZXg9PT1zOylhLmluZGV4PW51bGwhPT11Py0xOmEuaW5kZXgtbCxvPVNRdChpLG8pLGE9aVtvXX1jLmZvckVhY2goKHQ9PnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0KSkpfWNvbnN0IHdRdD10PT57bGV0IGU9MTE9PT10Lm5vZGVUeXBlPzA6MTtjb25zdCBuPWRvY3VtZW50LmNyZWF0ZVRyZWVXYWxrZXIodCwxMzMsbnVsbCwhMSk7Zm9yKDtuLm5leHROb2RlKCk7KWUrKztyZXR1cm4gZX0sU1F0PSh0LGU9LTEpPT57Zm9yKGxldCBuPWUrMTtuPHQubGVuZ3RoO24rKyl7aWYoeVF0KHRbbl0pKXJldHVybiBufXJldHVybi0xfTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgICAqIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgICogaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICAgKiBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICAgKiBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgICAqIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdAogICAgICogaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgICAqIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICAgKiBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0CiAgICAgKiBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICAqLwpjb25zdCBNUXQ9bmV3IFdlYWtNYXAsRVF0PXt9LFRRdD17fTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgICAqIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgICogaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICAgKiBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICAgKiBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgICAqIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdAogICAgICogaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgICAqIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICAgKiBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0CiAgICAgKiBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICAqLwpjbGFzcyBDUXR7Y29uc3RydWN0b3IodCxlLG4pe3RoaXMuX19wYXJ0cz1bXSx0aGlzLnRlbXBsYXRlPXQsdGhpcy5wcm9jZXNzb3I9ZSx0aGlzLm9wdGlvbnM9bn11cGRhdGUodCl7bGV0IGU9MDtmb3IoY29uc3QgbiBvZiB0aGlzLl9fcGFydHMpdm9pZCAwIT09biYmbi5zZXRWYWx1ZSh0W2VdKSxlKys7Zm9yKGNvbnN0IHQgb2YgdGhpcy5fX3BhcnRzKXZvaWQgMCE9PXQmJnQuY29tbWl0KCl9X2Nsb25lKCl7Y29uc3QgdD11UXQ/dGhpcy50ZW1wbGF0ZS5lbGVtZW50LmNvbnRlbnQuY2xvbmVOb2RlKCEwKTpkb2N1bWVudC5pbXBvcnROb2RlKHRoaXMudGVtcGxhdGUuZWxlbWVudC5jb250ZW50LCEwKSxlPVtdLG49dGhpcy50ZW1wbGF0ZS5wYXJ0cyxpPWRvY3VtZW50LmNyZWF0ZVRyZWVXYWxrZXIodCwxMzMsbnVsbCwhMSk7bGV0IHIsbz0wLGE9MCxzPWkubmV4dE5vZGUoKTtmb3IoO288bi5sZW5ndGg7KWlmKHI9bltvXSx5UXQocikpe2Zvcig7YTxyLmluZGV4OylhKyssIlRFTVBMQVRFIj09PXMubm9kZU5hbWUmJihlLnB1c2gocyksaS5jdXJyZW50Tm9kZT1zLmNvbnRlbnQpLG51bGw9PT0ocz1pLm5leHROb2RlKCkpJiYoaS5jdXJyZW50Tm9kZT1lLnBvcCgpLHM9aS5uZXh0Tm9kZSgpKTtpZigibm9kZSI9PT1yLnR5cGUpe2NvbnN0IHQ9dGhpcy5wcm9jZXNzb3IuaGFuZGxlVGV4dEV4cHJlc3Npb24odGhpcy5vcHRpb25zKTt0Lmluc2VydEFmdGVyTm9kZShzLnByZXZpb3VzU2libGluZyksdGhpcy5fX3BhcnRzLnB1c2godCl9ZWxzZSB0aGlzLl9fcGFydHMucHVzaCguLi50aGlzLnByb2Nlc3Nvci5oYW5kbGVBdHRyaWJ1dGVFeHByZXNzaW9ucyhzLHIubmFtZSxyLnN0cmluZ3MsdGhpcy5vcHRpb25zKSk7bysrfWVsc2UgdGhpcy5fX3BhcnRzLnB1c2godm9pZCAwKSxvKys7cmV0dXJuIHVRdCYmKGRvY3VtZW50LmFkb3B0Tm9kZSh0KSxjdXN0b21FbGVtZW50cy51cGdyYWRlKHQpKSx0fX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgICAqIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgICogaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICAgKiBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICAgKiBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgICAqIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdAogICAgICogaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgICAqIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICAgKiBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0CiAgICAgKiBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICAqL2NvbnN0IEFRdD13aW5kb3cudHJ1c3RlZFR5cGVzJiZ0cnVzdGVkVHlwZXMuY3JlYXRlUG9saWN5KCJsaXQtaHRtbCIse2NyZWF0ZUhUTUw6dD0+dH0pLGtRdD1gICR7ZFF0fSBgO2NsYXNzIExRdHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnZhbHVlPXZvaWQgMCx0aGlzLl9fcGVuZGluZ1ZhbHVlPXZvaWQgMCx0aGlzLm9wdGlvbnM9dH1hcHBlbmRJbnRvKHQpe3RoaXMuc3RhcnROb2RlPXQuYXBwZW5kQ2hpbGQodlF0KCkpLHRoaXMuZW5kTm9kZT10LmFwcGVuZENoaWxkKHZRdCgpKX1pbnNlcnRBZnRlck5vZGUodCl7dGhpcy5zdGFydE5vZGU9dCx0aGlzLmVuZE5vZGU9dC5uZXh0U2libGluZ31hcHBlbmRJbnRvUGFydCh0KXt0Ll9faW5zZXJ0KHRoaXMuc3RhcnROb2RlPXZRdCgpKSx0Ll9faW5zZXJ0KHRoaXMuZW5kTm9kZT12UXQoKSl9aW5zZXJ0QWZ0ZXJQYXJ0KHQpe3QuX19pbnNlcnQodGhpcy5zdGFydE5vZGU9dlF0KCkpLHRoaXMuZW5kTm9kZT10LmVuZE5vZGUsdC5lbmROb2RlPXRoaXMuc3RhcnROb2RlfXNldFZhbHVlKHQpe3RoaXMuX19wZW5kaW5nVmFsdWU9dH1jb21taXQoKXtpZihudWxsPT09dGhpcy5zdGFydE5vZGUucGFyZW50Tm9kZSlyZXR1cm47Zm9yKDsiZnVuY3Rpb24iPT10eXBlb2YodD10aGlzLl9fcGVuZGluZ1ZhbHVlKSYmTVF0Lmhhcyh0KTspe2NvbnN0IHQ9dGhpcy5fX3BlbmRpbmdWYWx1ZTt0aGlzLl9fcGVuZGluZ1ZhbHVlPUVRdCx0KHRoaXMpfXZhciB0O2NvbnN0IGU9dGhpcy5fX3BlbmRpbmdWYWx1ZTtlIT09RVF0JiYoKHQ9Pm51bGw9PT10fHwhKCJvYmplY3QiPT10eXBlb2YgdHx8ImZ1bmN0aW9uIj09dHlwZW9mIHQpKShlKT9lIT09dGhpcy52YWx1ZSYmdGhpcy5fX2NvbW1pdFRleHQoZSk6ZSBpbnN0YW5jZW9mIGNsYXNze2NvbnN0cnVjdG9yKHQsZSxuLGkpe3RoaXMuc3RyaW5ncz10LHRoaXMudmFsdWVzPWUsdGhpcy50eXBlPW4sdGhpcy5wcm9jZXNzb3I9aX1nZXRIVE1MKCl7Y29uc3QgdD10aGlzLnN0cmluZ3MubGVuZ3RoLTE7bGV0IGU9IiIsbj0hMTtmb3IobGV0IGk9MDtpPHQ7aSsrKXtjb25zdCB0PXRoaXMuc3RyaW5nc1tpXSxyPXQubGFzdEluZGV4T2YoIlx4M2MhLS0iKTtuPShyPi0xfHxuKSYmLTE9PT10LmluZGV4T2YoIi0tXHgzZSIscisxKTtjb25zdCBvPWJRdC5leGVjKHQpO2UrPW51bGw9PT1vP3QrKG4/a1F0OnBRdCk6dC5zdWJzdHIoMCxvLmluZGV4KStvWzFdK29bMl0rbVF0K29bM10rZFF0fXJldHVybiBlKz10aGlzLnN0cmluZ3NbdF0sZX1nZXRUZW1wbGF0ZUVsZW1lbnQoKXtjb25zdCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRlbXBsYXRlIik7bGV0IGU9dGhpcy5nZXRIVE1MKCk7cmV0dXJuIHZvaWQgMCE9PUFRdCYmKGU9QVF0LmNyZWF0ZUhUTUwoZSkpLHQuaW5uZXJIVE1MPWUsdH19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICAgKiBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgICAqIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgICogVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgICogaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICAgKiBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQKICAgICAqIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICAgKiBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgICogc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdAogICAgICogaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAgKi8/dGhpcy5fX2NvbW1pdFRlbXBsYXRlUmVzdWx0KGUpOmUgaW5zdGFuY2VvZiBOb2RlP3RoaXMuX19jb21taXROb2RlKGUpOih0PT5BcnJheS5pc0FycmF5KHQpfHwhKCF0fHwhdFtTeW1ib2wuaXRlcmF0b3JdKSkoZSk/dGhpcy5fX2NvbW1pdEl0ZXJhYmxlKGUpOmU9PT1UUXQ/KHRoaXMudmFsdWU9VFF0LHRoaXMuY2xlYXIoKSk6dGhpcy5fX2NvbW1pdFRleHQoZSkpfV9faW5zZXJ0KHQpe3RoaXMuZW5kTm9kZS5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0LHRoaXMuZW5kTm9kZSl9X19jb21taXROb2RlKHQpe3RoaXMudmFsdWUhPT10JiYodGhpcy5jbGVhcigpLHRoaXMuX19pbnNlcnQodCksdGhpcy52YWx1ZT10KX1fX2NvbW1pdFRleHQodCl7Y29uc3QgZT10aGlzLnN0YXJ0Tm9kZS5uZXh0U2libGluZyxuPSJzdHJpbmciPT10eXBlb2YodD1udWxsPT10PyIiOnQpP3Q6U3RyaW5nKHQpO2U9PT10aGlzLmVuZE5vZGUucHJldmlvdXNTaWJsaW5nJiYzPT09ZS5ub2RlVHlwZT9lLmRhdGE9bjp0aGlzLl9fY29tbWl0Tm9kZShkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShuKSksdGhpcy52YWx1ZT10fV9fY29tbWl0VGVtcGxhdGVSZXN1bHQodCl7Y29uc3QgZT10aGlzLm9wdGlvbnMudGVtcGxhdGVGYWN0b3J5KHQpO2lmKHRoaXMudmFsdWUgaW5zdGFuY2VvZiBDUXQmJnRoaXMudmFsdWUudGVtcGxhdGU9PT1lKXRoaXMudmFsdWUudXBkYXRlKHQudmFsdWVzKTtlbHNle2NvbnN0IG49bmV3IENRdChlLHQucHJvY2Vzc29yLHRoaXMub3B0aW9ucyksaT1uLl9jbG9uZSgpO24udXBkYXRlKHQudmFsdWVzKSx0aGlzLl9fY29tbWl0Tm9kZShpKSx0aGlzLnZhbHVlPW59fV9fY29tbWl0SXRlcmFibGUodCl7QXJyYXkuaXNBcnJheSh0aGlzLnZhbHVlKXx8KHRoaXMudmFsdWU9W10sdGhpcy5jbGVhcigpKTtjb25zdCBlPXRoaXMudmFsdWU7bGV0IG4saT0wO2Zvcihjb25zdCByIG9mIHQpbj1lW2ldLHZvaWQgMD09PW4mJihuPW5ldyBMUXQodGhpcy5vcHRpb25zKSxlLnB1c2gobiksMD09PWk/bi5hcHBlbmRJbnRvUGFydCh0aGlzKTpuLmluc2VydEFmdGVyUGFydChlW2ktMV0pKSxuLnNldFZhbHVlKHIpLG4uY29tbWl0KCksaSsrO2k8ZS5sZW5ndGgmJihlLmxlbmd0aD1pLHRoaXMuY2xlYXIobiYmbi5lbmROb2RlKSl9Y2xlYXIodD10aGlzLnN0YXJ0Tm9kZSl7aFF0KHRoaXMuc3RhcnROb2RlLnBhcmVudE5vZGUsdC5uZXh0U2libGluZyx0aGlzLmVuZE5vZGUpfX1sZXQgUFF0PSExOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgICogVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICAgKiBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgICAqIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgICAqIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgICogVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICAgKiBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgICogQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgICAqIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQKICAgICAqIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgICovCmZ1bmN0aW9uIE5RdCh0KXtsZXQgZT1JUXQuZ2V0KHQudHlwZSk7dm9pZCAwPT09ZSYmKGU9e3N0cmluZ3NBcnJheTpuZXcgV2Vha01hcCxrZXlTdHJpbmc6bmV3IE1hcH0sSVF0LnNldCh0LnR5cGUsZSkpO2xldCBuPWUuc3RyaW5nc0FycmF5LmdldCh0LnN0cmluZ3MpO2lmKHZvaWQgMCE9PW4pcmV0dXJuIG47Y29uc3QgaT10LnN0cmluZ3Muam9pbihkUXQpO3JldHVybiBuPWUua2V5U3RyaW5nLmdldChpKSx2b2lkIDA9PT1uJiYobj1uZXcgZ1F0KHQsdC5nZXRUZW1wbGF0ZUVsZW1lbnQoKSksZS5rZXlTdHJpbmcuc2V0KGksbikpLGUuc3RyaW5nc0FycmF5LnNldCh0LnN0cmluZ3Msbiksbn0oKCk9Pnt0cnl7Y29uc3QgdD17Z2V0IGNhcHR1cmUoKXtyZXR1cm4gUFF0PSEwLCExfX07d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInRlc3QiLHQsdCksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRlc3QiLHQsdCl9Y2F0Y2godCl7fX0pKCk7Y29uc3QgSVF0PW5ldyBNYXAsUlF0PW5ldyBXZWFrTWFwOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgICogVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICAgKiBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgICAqIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgICAqIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgICogVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICAgKiBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgICogQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgICAqIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQKICAgICAqIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgICovCi8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICAgKiBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgICAqIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgICogVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgICogaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICAgKiBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQKICAgICAqIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICAgKiBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgICogc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdAogICAgICogaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAgKi8KInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJih3aW5kb3cubGl0SHRtbFZlcnNpb25zfHwod2luZG93LmxpdEh0bWxWZXJzaW9ucz1bXSkpLnB1c2goIjEuNC4xIik7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICAgKiBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgICAqIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgICogVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgICogaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICAgKiBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQKICAgICAqIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICAgKiBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgICogc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdAogICAgICogaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAgKi9jb25zdCBPUXQ9KHQsZSk9PmAke3R9LS0ke2V9YDtsZXQgelF0PSEwO3ZvaWQgMD09PXdpbmRvdy5TaGFkeUNTUz96UXQ9ITE6dm9pZCAwPT09d2luZG93LlNoYWR5Q1NTLnByZXBhcmVUZW1wbGF0ZURvbSYmKGNvbnNvbGUud2FybigiSW5jb21wYXRpYmxlIFNoYWR5Q1NTIHZlcnNpb24gZGV0ZWN0ZWQuIFBsZWFzZSB1cGRhdGUgdG8gYXQgbGVhc3QgQHdlYmNvbXBvbmVudHMvd2ViY29tcG9uZW50c2pzQDIuMC4yIGFuZCBAd2ViY29tcG9uZW50cy9zaGFkeWNzc0AxLjMuMS4iKSx6UXQ9ITEpO2NvbnN0IERRdD10PT5lPT57Y29uc3Qgbj1PUXQoZS50eXBlLHQpO2xldCBpPUlRdC5nZXQobik7dm9pZCAwPT09aSYmKGk9e3N0cmluZ3NBcnJheTpuZXcgV2Vha01hcCxrZXlTdHJpbmc6bmV3IE1hcH0sSVF0LnNldChuLGkpKTtsZXQgcj1pLnN0cmluZ3NBcnJheS5nZXQoZS5zdHJpbmdzKTtpZih2b2lkIDAhPT1yKXJldHVybiByO2NvbnN0IG89ZS5zdHJpbmdzLmpvaW4oZFF0KTtpZihyPWkua2V5U3RyaW5nLmdldChvKSx2b2lkIDA9PT1yKXtjb25zdCBuPWUuZ2V0VGVtcGxhdGVFbGVtZW50KCk7elF0JiZ3aW5kb3cuU2hhZHlDU1MucHJlcGFyZVRlbXBsYXRlRG9tKG4sdCkscj1uZXcgZ1F0KGUsbiksaS5rZXlTdHJpbmcuc2V0KG8scil9cmV0dXJuIGkuc3RyaW5nc0FycmF5LnNldChlLnN0cmluZ3Mscikscn0sQlF0PVsiaHRtbCIsInN2ZyJdLEhRdD1uZXcgU2V0LEZRdD0odCxlLG4pPT57SFF0LmFkZCh0KTtjb25zdCBpPW4/bi5lbGVtZW50OmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRlbXBsYXRlIikscj1lLnF1ZXJ5U2VsZWN0b3JBbGwoInN0eWxlIikse2xlbmd0aDpvfT1yO2lmKDA9PT1vKXJldHVybiB2b2lkIHdpbmRvdy5TaGFkeUNTUy5wcmVwYXJlVGVtcGxhdGVTdHlsZXMoaSx0KTtjb25zdCBhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7Zm9yKGxldCB0PTA7dDxvO3QrKyl7Y29uc3QgZT1yW3RdO2UucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlKSxhLnRleHRDb250ZW50Kz1lLnRleHRDb250ZW50fSh0PT57QlF0LmZvckVhY2goKGU9Pntjb25zdCBuPUlRdC5nZXQoT1F0KGUsdCkpO3ZvaWQgMCE9PW4mJm4ua2V5U3RyaW5nLmZvckVhY2goKHQ9Pntjb25zdHtlbGVtZW50Ontjb250ZW50OmV9fT10LG49bmV3IFNldDtBcnJheS5mcm9tKGUucXVlcnlTZWxlY3RvckFsbCgic3R5bGUiKSkuZm9yRWFjaCgodD0+e24uYWRkKHQpfSkpLHhRdCh0LG4pfSkpfSkpfSkodCk7Y29uc3Qgcz1pLmNvbnRlbnQ7bj8oZnVuY3Rpb24gbCh0LGUsbj1udWxsKXtjb25zdHtlbGVtZW50Ontjb250ZW50Oml9LHBhcnRzOnJ9PXQ7aWYobnVsbD09bilyZXR1cm4gdm9pZCBpLmFwcGVuZENoaWxkKGUpO2NvbnN0IG89ZG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlcihpLDEzMyxudWxsLCExKTtsZXQgYT1TUXQocikscz0wLGw9LTE7Zm9yKDtvLm5leHROb2RlKCk7KWZvcihsKyssby5jdXJyZW50Tm9kZT09PW4mJihzPXdRdChlKSxuLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGUsbikpOy0xIT09YSYmclthXS5pbmRleD09PWw7KXtpZihzPjApe2Zvcig7LTEhPT1hOylyW2FdLmluZGV4Kz1zLGE9U1F0KHIsYSk7cmV0dXJufWE9U1F0KHIsYSl9fSkobixhLHMuZmlyc3RDaGlsZCk6cy5pbnNlcnRCZWZvcmUoYSxzLmZpcnN0Q2hpbGQpLHdpbmRvdy5TaGFkeUNTUy5wcmVwYXJlVGVtcGxhdGVTdHlsZXMoaSx0KTtjb25zdCBjPXMucXVlcnlTZWxlY3Rvcigic3R5bGUiKTtpZih3aW5kb3cuU2hhZHlDU1MubmF0aXZlU2hhZG93JiZudWxsIT09YyllLmluc2VydEJlZm9yZShjLmNsb25lTm9kZSghMCksZS5maXJzdENoaWxkKTtlbHNlIGlmKG4pe3MuaW5zZXJ0QmVmb3JlKGEscy5maXJzdENoaWxkKTtjb25zdCB0PW5ldyBTZXQ7dC5hZGQoYSkseFF0KG4sdCl9fTt3aW5kb3cuSlNDb21waWxlcl9yZW5hbWVQcm9wZXJ0eT0odCxlKT0+dDtjb25zdCBWUXQ9e3RvQXR0cmlidXRlKHQsZSl7c3dpdGNoKGUpe2Nhc2UgQm9vbGVhbjpyZXR1cm4gdD8iIjpudWxsO2Nhc2UgT2JqZWN0OmNhc2UgQXJyYXk6cmV0dXJuIG51bGw9PXQ/dDpKU09OLnN0cmluZ2lmeSh0KX1yZXR1cm4gdH0sZnJvbUF0dHJpYnV0ZSh0LGUpe3N3aXRjaChlKXtjYXNlIEJvb2xlYW46cmV0dXJuIG51bGwhPT10O2Nhc2UgTnVtYmVyOnJldHVybiBudWxsPT09dD9udWxsOk51bWJlcih0KTtjYXNlIE9iamVjdDpjYXNlIEFycmF5OnJldHVybiBKU09OLnBhcnNlKHQpfXJldHVybiB0fX0sVVF0PSh0LGUpPT5lIT09dCYmKGU9PWV8fHQ9PXQpLGpRdD17YXR0cmlidXRlOiEwLHR5cGU6U3RyaW5nLGNvbnZlcnRlcjpWUXQscmVmbGVjdDohMSxoYXNDaGFuZ2VkOlVRdH0sR1F0PSJmaW5hbGl6ZWQiO2NsYXNzIFdRdCBleHRlbmRzIEhUTUxFbGVtZW50e2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLmluaXRpYWxpemUoKX1zdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcygpe3RoaXMuZmluYWxpemUoKTtjb25zdCB0PVtdO3JldHVybiB0aGlzLl9jbGFzc1Byb3BlcnRpZXMuZm9yRWFjaCgoKGUsbik9Pntjb25zdCBpPXRoaXMuX2F0dHJpYnV0ZU5hbWVGb3JQcm9wZXJ0eShuLGUpO3ZvaWQgMCE9PWkmJih0aGlzLl9hdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLnNldChpLG4pLHQucHVzaChpKSl9KSksdH1zdGF0aWMgX2Vuc3VyZUNsYXNzUHJvcGVydGllcygpe2lmKCF0aGlzLmhhc093blByb3BlcnR5KEpTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoIl9jbGFzc1Byb3BlcnRpZXMiLHRoaXMpKSl7dGhpcy5fY2xhc3NQcm9wZXJ0aWVzPW5ldyBNYXA7Y29uc3QgdD1PYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcykuX2NsYXNzUHJvcGVydGllczt2b2lkIDAhPT10JiZ0LmZvckVhY2goKCh0LGUpPT50aGlzLl9jbGFzc1Byb3BlcnRpZXMuc2V0KGUsdCkpKX19c3RhdGljIGNyZWF0ZVByb3BlcnR5KHQsZT1qUXQpe2lmKHRoaXMuX2Vuc3VyZUNsYXNzUHJvcGVydGllcygpLHRoaXMuX2NsYXNzUHJvcGVydGllcy5zZXQodCxlKSxlLm5vQWNjZXNzb3J8fHRoaXMucHJvdG90eXBlLmhhc093blByb3BlcnR5KHQpKXJldHVybjtjb25zdCBuPSJzeW1ib2wiPT10eXBlb2YgdD9TeW1ib2woKTpgX18ke3R9YCxpPXRoaXMuZ2V0UHJvcGVydHlEZXNjcmlwdG9yKHQsbixlKTt2b2lkIDAhPT1pJiZPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcy5wcm90b3R5cGUsdCxpKX1zdGF0aWMgZ2V0UHJvcGVydHlEZXNjcmlwdG9yKHQsZSxuKXtyZXR1cm57Z2V0KCl7cmV0dXJuIHRoaXNbZV19LHNldChpKXtjb25zdCByPXRoaXNbdF07dGhpc1tlXT1pLHRoaXMucmVxdWVzdFVwZGF0ZUludGVybmFsKHQscixuKX0sY29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITB9fXN0YXRpYyBnZXRQcm9wZXJ0eU9wdGlvbnModCl7cmV0dXJuIHRoaXMuX2NsYXNzUHJvcGVydGllcyYmdGhpcy5fY2xhc3NQcm9wZXJ0aWVzLmdldCh0KXx8alF0fXN0YXRpYyBmaW5hbGl6ZSgpe2NvbnN0IHQ9T2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpO2lmKHQuaGFzT3duUHJvcGVydHkoR1F0KXx8dC5maW5hbGl6ZSgpLHRoaXMuZmluYWxpemVkPSEwLHRoaXMuX2Vuc3VyZUNsYXNzUHJvcGVydGllcygpLHRoaXMuX2F0dHJpYnV0ZVRvUHJvcGVydHlNYXA9bmV3IE1hcCx0aGlzLmhhc093blByb3BlcnR5KEpTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoInByb3BlcnRpZXMiLHRoaXMpKSl7Y29uc3QgdD10aGlzLnByb3BlcnRpZXMsZT1bLi4uT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModCksLi4uImZ1bmN0aW9uIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM/T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh0KTpbXV07Zm9yKGNvbnN0IG4gb2YgZSl0aGlzLmNyZWF0ZVByb3BlcnR5KG4sdFtuXSl9fXN0YXRpYyBfYXR0cmlidXRlTmFtZUZvclByb3BlcnR5KHQsZSl7Y29uc3Qgbj1lLmF0dHJpYnV0ZTtyZXR1cm4hMT09PW4/dm9pZCAwOiJzdHJpbmciPT10eXBlb2Ygbj9uOiJzdHJpbmciPT10eXBlb2YgdD90LnRvTG93ZXJDYXNlKCk6dm9pZCAwfXN0YXRpYyBfdmFsdWVIYXNDaGFuZ2VkKHQsZSxuPVVRdCl7cmV0dXJuIG4odCxlKX1zdGF0aWMgX3Byb3BlcnR5VmFsdWVGcm9tQXR0cmlidXRlKHQsZSl7Y29uc3Qgbj1lLmNvbnZlcnRlcnx8VlF0LGk9ImZ1bmN0aW9uIj09dHlwZW9mIG4/bjpuLmZyb21BdHRyaWJ1dGU7cmV0dXJuIGk/aSh0LGUudHlwZSk6dH1zdGF0aWMgX3Byb3BlcnR5VmFsdWVUb0F0dHJpYnV0ZSh0LGUpe2lmKHZvaWQgMD09PWUucmVmbGVjdClyZXR1cm47Y29uc3Qgbj1lLmNvbnZlcnRlcjtyZXR1cm4obiYmbi50b0F0dHJpYnV0ZXx8VlF0LnRvQXR0cmlidXRlKSh0LGUudHlwZSl9aW5pdGlhbGl6ZSgpe3RoaXMuX3VwZGF0ZVN0YXRlPTAsdGhpcy5fdXBkYXRlUHJvbWlzZT1uZXcgUHJvbWlzZSgodD0+dGhpcy5fZW5hYmxlVXBkYXRpbmdSZXNvbHZlcj10KSksdGhpcy5fY2hhbmdlZFByb3BlcnRpZXM9bmV3IE1hcCx0aGlzLl9zYXZlSW5zdGFuY2VQcm9wZXJ0aWVzKCksdGhpcy5yZXF1ZXN0VXBkYXRlSW50ZXJuYWwoKX1fc2F2ZUluc3RhbmNlUHJvcGVydGllcygpe3RoaXMuY29uc3RydWN0b3IuX2NsYXNzUHJvcGVydGllcy5mb3JFYWNoKCgodCxlKT0+e2lmKHRoaXMuaGFzT3duUHJvcGVydHkoZSkpe2NvbnN0IHQ9dGhpc1tlXTtkZWxldGUgdGhpc1tlXSx0aGlzLl9pbnN0YW5jZVByb3BlcnRpZXN8fCh0aGlzLl9pbnN0YW5jZVByb3BlcnRpZXM9bmV3IE1hcCksdGhpcy5faW5zdGFuY2VQcm9wZXJ0aWVzLnNldChlLHQpfX0pKX1fYXBwbHlJbnN0YW5jZVByb3BlcnRpZXMoKXt0aGlzLl9pbnN0YW5jZVByb3BlcnRpZXMuZm9yRWFjaCgoKHQsZSk9PnRoaXNbZV09dCkpLHRoaXMuX2luc3RhbmNlUHJvcGVydGllcz12b2lkIDB9Y29ubmVjdGVkQ2FsbGJhY2soKXt0aGlzLmVuYWJsZVVwZGF0aW5nKCl9ZW5hYmxlVXBkYXRpbmcoKXt2b2lkIDAhPT10aGlzLl9lbmFibGVVcGRhdGluZ1Jlc29sdmVyJiYodGhpcy5fZW5hYmxlVXBkYXRpbmdSZXNvbHZlcigpLHRoaXMuX2VuYWJsZVVwZGF0aW5nUmVzb2x2ZXI9dm9pZCAwKX1kaXNjb25uZWN0ZWRDYWxsYmFjaygpe31hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sodCxlLG4pe2UhPT1uJiZ0aGlzLl9hdHRyaWJ1dGVUb1Byb3BlcnR5KHQsbil9X3Byb3BlcnR5VG9BdHRyaWJ1dGUodCxlLG49alF0KXtjb25zdCBpPXRoaXMuY29uc3RydWN0b3Iscj1pLl9hdHRyaWJ1dGVOYW1lRm9yUHJvcGVydHkodCxuKTtpZih2b2lkIDAhPT1yKXtjb25zdCB0PWkuX3Byb3BlcnR5VmFsdWVUb0F0dHJpYnV0ZShlLG4pO2lmKHZvaWQgMD09PXQpcmV0dXJuO3RoaXMuX3VwZGF0ZVN0YXRlPTh8dGhpcy5fdXBkYXRlU3RhdGUsbnVsbD09dD90aGlzLnJlbW92ZUF0dHJpYnV0ZShyKTp0aGlzLnNldEF0dHJpYnV0ZShyLHQpLHRoaXMuX3VwZGF0ZVN0YXRlPS05JnRoaXMuX3VwZGF0ZVN0YXRlfX1fYXR0cmlidXRlVG9Qcm9wZXJ0eSh0LGUpe2lmKDgmdGhpcy5fdXBkYXRlU3RhdGUpcmV0dXJuO2NvbnN0IG49dGhpcy5jb25zdHJ1Y3RvcixpPW4uX2F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuZ2V0KHQpO2lmKHZvaWQgMCE9PWkpe2NvbnN0IHQ9bi5nZXRQcm9wZXJ0eU9wdGlvbnMoaSk7dGhpcy5fdXBkYXRlU3RhdGU9MTZ8dGhpcy5fdXBkYXRlU3RhdGUsdGhpc1tpXT1uLl9wcm9wZXJ0eVZhbHVlRnJvbUF0dHJpYnV0ZShlLHQpLHRoaXMuX3VwZGF0ZVN0YXRlPS0xNyZ0aGlzLl91cGRhdGVTdGF0ZX19cmVxdWVzdFVwZGF0ZUludGVybmFsKHQsZSxuKXtsZXQgaT0hMDtpZih2b2lkIDAhPT10KXtjb25zdCByPXRoaXMuY29uc3RydWN0b3I7bj1ufHxyLmdldFByb3BlcnR5T3B0aW9ucyh0KSxyLl92YWx1ZUhhc0NoYW5nZWQodGhpc1t0XSxlLG4uaGFzQ2hhbmdlZCk/KHRoaXMuX2NoYW5nZWRQcm9wZXJ0aWVzLmhhcyh0KXx8dGhpcy5fY2hhbmdlZFByb3BlcnRpZXMuc2V0KHQsZSksITAhPT1uLnJlZmxlY3R8fDE2JnRoaXMuX3VwZGF0ZVN0YXRlfHwodm9pZCAwPT09dGhpcy5fcmVmbGVjdGluZ1Byb3BlcnRpZXMmJih0aGlzLl9yZWZsZWN0aW5nUHJvcGVydGllcz1uZXcgTWFwKSx0aGlzLl9yZWZsZWN0aW5nUHJvcGVydGllcy5zZXQodCxuKSkpOmk9ITF9IXRoaXMuX2hhc1JlcXVlc3RlZFVwZGF0ZSYmaSYmKHRoaXMuX3VwZGF0ZVByb21pc2U9dGhpcy5fZW5xdWV1ZVVwZGF0ZSgpKX1yZXF1ZXN0VXBkYXRlKHQsZSl7cmV0dXJuIHRoaXMucmVxdWVzdFVwZGF0ZUludGVybmFsKHQsZSksdGhpcy51cGRhdGVDb21wbGV0ZX1hc3luYyBfZW5xdWV1ZVVwZGF0ZSgpe3RoaXMuX3VwZGF0ZVN0YXRlPTR8dGhpcy5fdXBkYXRlU3RhdGU7dHJ5e2F3YWl0IHRoaXMuX3VwZGF0ZVByb21pc2V9Y2F0Y2godCl7fWNvbnN0IHQ9dGhpcy5wZXJmb3JtVXBkYXRlKCk7cmV0dXJuIG51bGwhPXQmJmF3YWl0IHQsIXRoaXMuX2hhc1JlcXVlc3RlZFVwZGF0ZX1nZXQgX2hhc1JlcXVlc3RlZFVwZGF0ZSgpe3JldHVybiA0JnRoaXMuX3VwZGF0ZVN0YXRlfWdldCBoYXNVcGRhdGVkKCl7cmV0dXJuIDEmdGhpcy5fdXBkYXRlU3RhdGV9cGVyZm9ybVVwZGF0ZSgpe2lmKCF0aGlzLl9oYXNSZXF1ZXN0ZWRVcGRhdGUpcmV0dXJuO3RoaXMuX2luc3RhbmNlUHJvcGVydGllcyYmdGhpcy5fYXBwbHlJbnN0YW5jZVByb3BlcnRpZXMoKTtsZXQgdD0hMTtjb25zdCBlPXRoaXMuX2NoYW5nZWRQcm9wZXJ0aWVzO3RyeXt0PXRoaXMuc2hvdWxkVXBkYXRlKGUpLHQ/dGhpcy51cGRhdGUoZSk6dGhpcy5fbWFya1VwZGF0ZWQoKX1jYXRjaChlKXt0aHJvdyB0PSExLHRoaXMuX21hcmtVcGRhdGVkKCksZX10JiYoMSZ0aGlzLl91cGRhdGVTdGF0ZXx8KHRoaXMuX3VwZGF0ZVN0YXRlPTF8dGhpcy5fdXBkYXRlU3RhdGUsdGhpcy5maXJzdFVwZGF0ZWQoZSkpLHRoaXMudXBkYXRlZChlKSl9X21hcmtVcGRhdGVkKCl7dGhpcy5fY2hhbmdlZFByb3BlcnRpZXM9bmV3IE1hcCx0aGlzLl91cGRhdGVTdGF0ZT0tNSZ0aGlzLl91cGRhdGVTdGF0ZX1nZXQgdXBkYXRlQ29tcGxldGUoKXtyZXR1cm4gdGhpcy5fZ2V0VXBkYXRlQ29tcGxldGUoKX1fZ2V0VXBkYXRlQ29tcGxldGUoKXtyZXR1cm4gdGhpcy5nZXRVcGRhdGVDb21wbGV0ZSgpfWdldFVwZGF0ZUNvbXBsZXRlKCl7cmV0dXJuIHRoaXMuX3VwZGF0ZVByb21pc2V9c2hvdWxkVXBkYXRlKHQpe3JldHVybiEwfXVwZGF0ZSh0KXt2b2lkIDAhPT10aGlzLl9yZWZsZWN0aW5nUHJvcGVydGllcyYmdGhpcy5fcmVmbGVjdGluZ1Byb3BlcnRpZXMuc2l6ZT4wJiYodGhpcy5fcmVmbGVjdGluZ1Byb3BlcnRpZXMuZm9yRWFjaCgoKHQsZSk9PnRoaXMuX3Byb3BlcnR5VG9BdHRyaWJ1dGUoZSx0aGlzW2VdLHQpKSksdGhpcy5fcmVmbGVjdGluZ1Byb3BlcnRpZXM9dm9pZCAwKSx0aGlzLl9tYXJrVXBkYXRlZCgpfXVwZGF0ZWQodCl7fWZpcnN0VXBkYXRlZCh0KXt9fVdRdC5maW5hbGl6ZWQ9ITA7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxOSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCBxUXQ9d2luZG93LlNoYWRvd1Jvb3QmJih2b2lkIDA9PT13aW5kb3cuU2hhZHlDU1N8fHdpbmRvdy5TaGFkeUNTUy5uYXRpdmVTaGFkb3cpJiYiYWRvcHRlZFN0eWxlU2hlZXRzImluIERvY3VtZW50LnByb3RvdHlwZSYmInJlcGxhY2UiaW4gQ1NTU3R5bGVTaGVldC5wcm90b3R5cGUsWVF0PVN5bWJvbCgpO2NsYXNzIFhRdHtjb25zdHJ1Y3Rvcih0LGUpe2lmKGUhPT1ZUXQpdGhyb3cgbmV3IEVycm9yKCJDU1NSZXN1bHQgaXMgbm90IGNvbnN0cnVjdGFibGUuIFVzZSBgdW5zYWZlQ1NTYCBvciBgY3NzYCBpbnN0ZWFkLiIpO3RoaXMuY3NzVGV4dD10fWdldCBzdHlsZVNoZWV0KCl7cmV0dXJuIHZvaWQgMD09PXRoaXMuX3N0eWxlU2hlZXQmJihxUXQ/KHRoaXMuX3N0eWxlU2hlZXQ9bmV3IENTU1N0eWxlU2hlZXQsdGhpcy5fc3R5bGVTaGVldC5yZXBsYWNlU3luYyh0aGlzLmNzc1RleHQpKTp0aGlzLl9zdHlsZVNoZWV0PW51bGwpLHRoaXMuX3N0eWxlU2hlZXR9dG9TdHJpbmcoKXtyZXR1cm4gdGhpcy5jc3NUZXh0fX1jb25zdCAkUXQ9KHQsLi4uZSk9Pntjb25zdCBuPWUucmVkdWNlKCgoZSxuLGkpPT5lKyh0PT57aWYodCBpbnN0YW5jZW9mIFhRdClyZXR1cm4gdC5jc3NUZXh0O2lmKCJudW1iZXIiPT10eXBlb2YgdClyZXR1cm4gdDt0aHJvdyBuZXcgRXJyb3IoYFZhbHVlIHBhc3NlZCB0byAnY3NzJyBmdW5jdGlvbiBtdXN0IGJlIGEgJ2NzcycgZnVuY3Rpb24gcmVzdWx0OiAke3R9LiBVc2UgJ3Vuc2FmZUNTUycgdG8gcGFzcyBub24tbGl0ZXJhbCB2YWx1ZXMsIGJ1dFxuICAgICAgICAgICAgdGFrZSBjYXJlIHRvIGVuc3VyZSBwYWdlIHNlY3VyaXR5LmApfSkobikrdFtpKzFdKSx0WzBdKTtyZXR1cm4gbmV3IFhRdChuLFlRdCl9OwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgICogVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICAgKiBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgICAqIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgICAqIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgICogVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICAgKiBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgICogQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgICAqIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQKICAgICAqIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgICovCih3aW5kb3cubGl0RWxlbWVudFZlcnNpb25zfHwod2luZG93LmxpdEVsZW1lbnRWZXJzaW9ucz1bXSkpLnB1c2goIjIuNS4xIik7Y29uc3QgS1F0PXt9O2NsYXNzIFpRdCBleHRlbmRzIFdRdHtzdGF0aWMgZ2V0U3R5bGVzKCl7cmV0dXJuIHRoaXMuc3R5bGVzfXN0YXRpYyBfZ2V0VW5pcXVlU3R5bGVzKCl7aWYodGhpcy5oYXNPd25Qcm9wZXJ0eShKU0NvbXBpbGVyX3JlbmFtZVByb3BlcnR5KCJfc3R5bGVzIix0aGlzKSkpcmV0dXJuO2NvbnN0IHQ9dGhpcy5nZXRTdHlsZXMoKTtpZihBcnJheS5pc0FycmF5KHQpKXtjb25zdCBlPSh0LG4pPT50LnJlZHVjZVJpZ2h0KCgodCxuKT0+QXJyYXkuaXNBcnJheShuKT9lKG4sdCk6KHQuYWRkKG4pLHQpKSxuKSxuPWUodCxuZXcgU2V0KSxpPVtdO24uZm9yRWFjaCgodD0+aS51bnNoaWZ0KHQpKSksdGhpcy5fc3R5bGVzPWl9ZWxzZSB0aGlzLl9zdHlsZXM9dm9pZCAwPT09dD9bXTpbdF07dGhpcy5fc3R5bGVzPXRoaXMuX3N0eWxlcy5tYXAoKHQ9PntpZih0IGluc3RhbmNlb2YgQ1NTU3R5bGVTaGVldCYmIXFRdCl7cmV0dXJuKHQ9Pm5ldyBYUXQoU3RyaW5nKHQpLFlRdCkpKEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQuY3NzUnVsZXMpLnJlZHVjZSgoKHQsZSk9PnQrZS5jc3NUZXh0KSwiIikpfXJldHVybiB0fSkpfWluaXRpYWxpemUoKXtzdXBlci5pbml0aWFsaXplKCksdGhpcy5jb25zdHJ1Y3Rvci5fZ2V0VW5pcXVlU3R5bGVzKCksdGhpcy5yZW5kZXJSb290PXRoaXMuY3JlYXRlUmVuZGVyUm9vdCgpLHdpbmRvdy5TaGFkb3dSb290JiZ0aGlzLnJlbmRlclJvb3QgaW5zdGFuY2VvZiB3aW5kb3cuU2hhZG93Um9vdCYmdGhpcy5hZG9wdFN0eWxlcygpfWNyZWF0ZVJlbmRlclJvb3QoKXtyZXR1cm4gdGhpcy5hdHRhY2hTaGFkb3codGhpcy5jb25zdHJ1Y3Rvci5zaGFkb3dSb290T3B0aW9ucyl9YWRvcHRTdHlsZXMoKXtjb25zdCB0PXRoaXMuY29uc3RydWN0b3IuX3N0eWxlczswIT09dC5sZW5ndGgmJih2b2lkIDA9PT13aW5kb3cuU2hhZHlDU1N8fHdpbmRvdy5TaGFkeUNTUy5uYXRpdmVTaGFkb3c/cVF0P3RoaXMucmVuZGVyUm9vdC5hZG9wdGVkU3R5bGVTaGVldHM9dC5tYXAoKHQ9PnQgaW5zdGFuY2VvZiBDU1NTdHlsZVNoZWV0P3Q6dC5zdHlsZVNoZWV0KSk6dGhpcy5fbmVlZHNTaGltQWRvcHRlZFN0eWxlU2hlZXRzPSEwOndpbmRvdy5TaGFkeUNTUy5TY29waW5nU2hpbS5wcmVwYXJlQWRvcHRlZENzc1RleHQodC5tYXAoKHQ9PnQuY3NzVGV4dCkpLHRoaXMubG9jYWxOYW1lKSl9Y29ubmVjdGVkQ2FsbGJhY2soKXtzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpLHRoaXMuaGFzVXBkYXRlZCYmdm9pZCAwIT09d2luZG93LlNoYWR5Q1NTJiZ3aW5kb3cuU2hhZHlDU1Muc3R5bGVFbGVtZW50KHRoaXMpfXVwZGF0ZSh0KXtjb25zdCBlPXRoaXMucmVuZGVyKCk7c3VwZXIudXBkYXRlKHQpLGUhPT1LUXQmJnRoaXMuY29uc3RydWN0b3IucmVuZGVyKGUsdGhpcy5yZW5kZXJSb290LHtzY29wZU5hbWU6dGhpcy5sb2NhbE5hbWUsZXZlbnRDb250ZXh0OnRoaXN9KSx0aGlzLl9uZWVkc1NoaW1BZG9wdGVkU3R5bGVTaGVldHMmJih0aGlzLl9uZWVkc1NoaW1BZG9wdGVkU3R5bGVTaGVldHM9ITEsdGhpcy5jb25zdHJ1Y3Rvci5fc3R5bGVzLmZvckVhY2goKHQ9Pntjb25zdCBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7ZS50ZXh0Q29udGVudD10LmNzc1RleHQsdGhpcy5yZW5kZXJSb290LmFwcGVuZENoaWxkKGUpfSkpKX1yZW5kZXIoKXtyZXR1cm4gS1F0fX1aUXQuZmluYWxpemVkPSEwLFpRdC5yZW5kZXI9KHQsZSxuKT0+e2lmKCFufHwib2JqZWN0IiE9dHlwZW9mIG58fCFuLnNjb3BlTmFtZSl0aHJvdyBuZXcgRXJyb3IoIlRoZSBgc2NvcGVOYW1lYCBvcHRpb24gaXMgcmVxdWlyZWQuIik7Y29uc3QgaT1uLnNjb3BlTmFtZSxyPVJRdC5oYXMoZSksbz16UXQmJjExPT09ZS5ub2RlVHlwZSYmISFlLmhvc3QsYT1vJiYhSFF0LmhhcyhpKSxzPWE/ZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOmU7aWYoKCh0LGUsbik9PntsZXQgaT1SUXQuZ2V0KGUpO3ZvaWQgMD09PWkmJihoUXQoZSxlLmZpcnN0Q2hpbGQpLFJRdC5zZXQoZSxpPW5ldyBMUXQoT2JqZWN0LmFzc2lnbih7dGVtcGxhdGVGYWN0b3J5Ok5RdH0sbikpKSxpLmFwcGVuZEludG8oZSkpLGkuc2V0VmFsdWUodCksaS5jb21taXQoKX0pKHQscyxPYmplY3QuYXNzaWduKHt0ZW1wbGF0ZUZhY3Rvcnk6RFF0KGkpfSxuKSksYSl7Y29uc3QgdD1SUXQuZ2V0KHMpO1JRdC5kZWxldGUocyk7RlF0KGkscyx0LnZhbHVlIGluc3RhbmNlb2YgQ1F0P3QudmFsdWUudGVtcGxhdGU6dm9pZCAwKSxoUXQoZSxlLmZpcnN0Q2hpbGQpLGUuYXBwZW5kQ2hpbGQocyksUlF0LnNldChlLHQpfSFyJiZvJiZ3aW5kb3cuU2hhZHlDU1Muc3R5bGVFbGVtZW50KGUuaG9zdCl9LFpRdC5zaGFkb3dSb290T3B0aW9ucz17bW9kZToib3BlbiJ9O2xldCBKUXQ9MDtjb25zdCBRUXQ9e30sdDF0PSh0LGUsbik9Pntjb25zdCBpPW4mJm4ubW9kdWxlSWR8fCJjdXN0b20tc3R5bGUtbW9kdWxlLSIrSlF0Kys7QXJyYXkuaXNBcnJheShlKXx8KGU9ZT9bZV06W10pLGUuZm9yRWFjaCgodD0+e2lmKCEodCBpbnN0YW5jZW9mIFhRdCkpdGhyb3cgbmV3IEVycm9yKCJBbiBpdGVtIGluIHN0eWxlcyBpcyBub3Qgb2YgdHlwZSBDU1NSZXN1bHQuIFVzZSBgdW5zYWZlQ1NTYCBvciBgY3NzYC4iKTtpZighUVF0W3RdKXtjb25zdCBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRvbS1tb2R1bGUiKTtlLmlubmVySFRNTD1gXG4gICAgICAgIDx0ZW1wbGF0ZT5cbiAgICAgICAgICA8c3R5bGU+JHt0LnRvU3RyaW5nKCl9PC9zdHlsZT5cbiAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgIGA7Y29uc3Qgbj0iY3VzdG9tLXN0eWxlLW1vZHVsZS0iK0pRdCsrO2UucmVnaXN0ZXIobiksUVF0W3RdPW59fSkpO2NvbnN0IHI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZG9tLW1vZHVsZSIpO2lmKHQpe2NvbnN0IGU9Y3VzdG9tRWxlbWVudHMuZ2V0KHQpO2UmJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLCJfX2ZpbmFsaXplZCIpJiZjb25zb2xlLndhcm4oYFRoZSBjdXN0b20gZWxlbWVudCBkZWZpbml0aW9uIGZvciAiJHt0fSJcbiAgICAgIHdhcyBmaW5hbGl6ZWQgYmVmb3JlIGEgc3R5bGUgbW9kdWxlIHdhcyByZWdpc3RlcmVkLlxuICAgICAgTWFrZSBzdXJlIHRvIGFkZCBjb21wb25lbnQgc3BlY2lmaWMgc3R5bGUgbW9kdWxlcyBiZWZvcmVcbiAgICAgIGltcG9ydGluZyB0aGUgY29ycmVzcG9uZGluZyBjdXN0b20gZWxlbWVudC5gKSxyLnNldEF0dHJpYnV0ZSgidGhlbWUtZm9yIix0KX1yLmlubmVySFRNTD1gXG4gICAgPHRlbXBsYXRlPlxuICAgICAgJHsobiYmbi5pbmNsdWRlfHxbXSkubWFwKCh0PT5gPHN0eWxlIGluY2x1ZGU9JHt0fT48L3N0eWxlPmApKX1cbiAgICAgICR7ZS5tYXAoKHQ9PmA8c3R5bGUgaW5jbHVkZT0ke1FRdFt0XX0+PC9zdHlsZT5gKSl9XG4gICAgPC90ZW1wbGF0ZT5cbiAgYCxyLnJlZ2lzdGVyKGkpfTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IChjKSAyMDIxIFZhYWRpbiBMdGQuCiAgICAgKiBUaGlzIHByb2dyYW0gaXMgYXZhaWxhYmxlIHVuZGVyIEFwYWNoZSBMaWNlbnNlIFZlcnNpb24gMi4wLCBhdmFpbGFibGUgYXQgaHR0cHM6Ly92YWFkaW4uY29tL2xpY2Vuc2UvCiAgICAgKi8KY2xhc3MgZTF0IGV4dGVuZHMgSFRNTEVsZW1lbnR7c3RhdGljIGdldCB2ZXJzaW9uKCl7cmV0dXJuIjIwLjAuMiJ9fWN1c3RvbUVsZW1lbnRzLmRlZmluZSgidmFhZGluLWx1bW8tc3R5bGVzIixlMXQpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgKGMpIDIwMjEgVmFhZGluIEx0ZC4KICAgICAqIFRoaXMgcHJvZ3JhbSBpcyBhdmFpbGFibGUgdW5kZXIgQXBhY2hlIExpY2Vuc2UgVmVyc2lvbiAyLjAsIGF2YWlsYWJsZSBhdCBodHRwczovL3ZhYWRpbi5jb20vbGljZW5zZS8KICAgICAqLwpjb25zdCBuMXQ9JFF0YAogIDpob3N0IHsKICAgIC8qIEJhc2UgKGJhY2tncm91bmQpICovCiAgICAtLWx1bW8tYmFzZS1jb2xvcjogI2ZmZjsKCiAgICAvKiBUaW50ICovCiAgICAtLWx1bW8tdGludC01cGN0OiBoc2xhKDAsIDAlLCAxMDAlLCAwLjMpOwogICAgLS1sdW1vLXRpbnQtMTBwY3Q6IGhzbGEoMCwgMCUsIDEwMCUsIDAuMzcpOwogICAgLS1sdW1vLXRpbnQtMjBwY3Q6IGhzbGEoMCwgMCUsIDEwMCUsIDAuNDQpOwogICAgLS1sdW1vLXRpbnQtMzBwY3Q6IGhzbGEoMCwgMCUsIDEwMCUsIDAuNSk7CiAgICAtLWx1bW8tdGludC00MHBjdDogaHNsYSgwLCAwJSwgMTAwJSwgMC41Nyk7CiAgICAtLWx1bW8tdGludC01MHBjdDogaHNsYSgwLCAwJSwgMTAwJSwgMC42NCk7CiAgICAtLWx1bW8tdGludC02MHBjdDogaHNsYSgwLCAwJSwgMTAwJSwgMC43KTsKICAgIC0tbHVtby10aW50LTcwcGN0OiBoc2xhKDAsIDAlLCAxMDAlLCAwLjc3KTsKICAgIC0tbHVtby10aW50LTgwcGN0OiBoc2xhKDAsIDAlLCAxMDAlLCAwLjg0KTsKICAgIC0tbHVtby10aW50LTkwcGN0OiBoc2xhKDAsIDAlLCAxMDAlLCAwLjkpOwogICAgLS1sdW1vLXRpbnQ6ICNmZmY7CgogICAgLyogU2hhZGUgKi8KICAgIC0tbHVtby1zaGFkZS01cGN0OiBoc2xhKDIxNCwgNjElLCAyNSUsIDAuMDUpOwogICAgLS1sdW1vLXNoYWRlLTEwcGN0OiBoc2xhKDIxNCwgNTclLCAyNCUsIDAuMSk7CiAgICAtLWx1bW8tc2hhZGUtMjBwY3Q6IGhzbGEoMjE0LCA1MyUsIDIzJSwgMC4xNik7CiAgICAtLWx1bW8tc2hhZGUtMzBwY3Q6IGhzbGEoMjE0LCA1MCUsIDIyJSwgMC4yNik7CiAgICAtLWx1bW8tc2hhZGUtNDBwY3Q6IGhzbGEoMjE0LCA0NyUsIDIxJSwgMC4zOCk7CiAgICAtLWx1bW8tc2hhZGUtNTBwY3Q6IGhzbGEoMjE0LCA0NSUsIDIwJSwgMC41KTsKICAgIC0tbHVtby1zaGFkZS02MHBjdDogaHNsYSgyMTQsIDQzJSwgMTklLCAwLjYxKTsKICAgIC0tbHVtby1zaGFkZS03MHBjdDogaHNsYSgyMTQsIDQyJSwgMTglLCAwLjcyKTsKICAgIC0tbHVtby1zaGFkZS04MHBjdDogaHNsYSgyMTQsIDQxJSwgMTclLCAwLjgzKTsKICAgIC0tbHVtby1zaGFkZS05MHBjdDogaHNsYSgyMTQsIDQwJSwgMTYlLCAwLjk0KTsKICAgIC0tbHVtby1zaGFkZTogaHNsKDIxNCwgMzUlLCAxNSUpOwoKICAgIC8qIENvbnRyYXN0ICovCiAgICAtLWx1bW8tY29udHJhc3QtNXBjdDogdmFyKC0tbHVtby1zaGFkZS01cGN0KTsKICAgIC0tbHVtby1jb250cmFzdC0xMHBjdDogdmFyKC0tbHVtby1zaGFkZS0xMHBjdCk7CiAgICAtLWx1bW8tY29udHJhc3QtMjBwY3Q6IHZhcigtLWx1bW8tc2hhZGUtMjBwY3QpOwogICAgLS1sdW1vLWNvbnRyYXN0LTMwcGN0OiB2YXIoLS1sdW1vLXNoYWRlLTMwcGN0KTsKICAgIC0tbHVtby1jb250cmFzdC00MHBjdDogdmFyKC0tbHVtby1zaGFkZS00MHBjdCk7CiAgICAtLWx1bW8tY29udHJhc3QtNTBwY3Q6IHZhcigtLWx1bW8tc2hhZGUtNTBwY3QpOwogICAgLS1sdW1vLWNvbnRyYXN0LTYwcGN0OiB2YXIoLS1sdW1vLXNoYWRlLTYwcGN0KTsKICAgIC0tbHVtby1jb250cmFzdC03MHBjdDogdmFyKC0tbHVtby1zaGFkZS03MHBjdCk7CiAgICAtLWx1bW8tY29udHJhc3QtODBwY3Q6IHZhcigtLWx1bW8tc2hhZGUtODBwY3QpOwogICAgLS1sdW1vLWNvbnRyYXN0LTkwcGN0OiB2YXIoLS1sdW1vLXNoYWRlLTkwcGN0KTsKICAgIC0tbHVtby1jb250cmFzdDogdmFyKC0tbHVtby1zaGFkZSk7CgogICAgLyogVGV4dCAqLwogICAgLS1sdW1vLWhlYWRlci10ZXh0LWNvbG9yOiB2YXIoLS1sdW1vLWNvbnRyYXN0KTsKICAgIC0tbHVtby1ib2R5LXRleHQtY29sb3I6IHZhcigtLWx1bW8tY29udHJhc3QtOTBwY3QpOwogICAgLS1sdW1vLXNlY29uZGFyeS10ZXh0LWNvbG9yOiB2YXIoLS1sdW1vLWNvbnRyYXN0LTcwcGN0KTsKICAgIC0tbHVtby10ZXJ0aWFyeS10ZXh0LWNvbG9yOiB2YXIoLS1sdW1vLWNvbnRyYXN0LTUwcGN0KTsKICAgIC0tbHVtby1kaXNhYmxlZC10ZXh0LWNvbG9yOiB2YXIoLS1sdW1vLWNvbnRyYXN0LTMwcGN0KTsKCiAgICAvKiBQcmltYXJ5ICovCiAgICAtLWx1bW8tcHJpbWFyeS1jb2xvcjogaHNsKDIxNCwgOTAlLCA1MiUpOwogICAgLS1sdW1vLXByaW1hcnktY29sb3ItNTBwY3Q6IGhzbGEoMjE0LCA5MCUsIDUyJSwgMC41KTsKICAgIC0tbHVtby1wcmltYXJ5LWNvbG9yLTEwcGN0OiBoc2xhKDIxNCwgOTAlLCA1MiUsIDAuMSk7CiAgICAtLWx1bW8tcHJpbWFyeS10ZXh0LWNvbG9yOiB2YXIoLS1sdW1vLXByaW1hcnktY29sb3IpOwogICAgLS1sdW1vLXByaW1hcnktY29udHJhc3QtY29sb3I6ICNmZmY7CgogICAgLyogRXJyb3IgKi8KICAgIC0tbHVtby1lcnJvci1jb2xvcjogaHNsKDMsIDEwMCUsIDYxJSk7CiAgICAtLWx1bW8tZXJyb3ItY29sb3ItNTBwY3Q6IGhzbGEoMywgMTAwJSwgNjAlLCAwLjUpOwogICAgLS1sdW1vLWVycm9yLWNvbG9yLTEwcGN0OiBoc2xhKDMsIDEwMCUsIDYwJSwgMC4xKTsKICAgIC0tbHVtby1lcnJvci10ZXh0LWNvbG9yOiBoc2woMywgOTIlLCA1MyUpOwogICAgLS1sdW1vLWVycm9yLWNvbnRyYXN0LWNvbG9yOiAjZmZmOwoKICAgIC8qIFN1Y2Nlc3MgKi8KICAgIC0tbHVtby1zdWNjZXNzLWNvbG9yOiBoc2woMTQ1LCA4MCUsIDQyJSk7IC8qIGhzbCgxNDQsODIlLDM3JSk7ICovCiAgICAtLWx1bW8tc3VjY2Vzcy1jb2xvci01MHBjdDogaHNsYSgxNDUsIDc2JSwgNDQlLCAwLjU1KTsKICAgIC0tbHVtby1zdWNjZXNzLWNvbG9yLTEwcGN0OiBoc2xhKDE0NSwgNzYlLCA0NCUsIDAuMTIpOwogICAgLS1sdW1vLXN1Y2Nlc3MtdGV4dC1jb2xvcjogaHNsKDE0NSwgMTAwJSwgMzIlKTsKICAgIC0tbHVtby1zdWNjZXNzLWNvbnRyYXN0LWNvbG9yOiAjZmZmOwogIH0KYCxpMXQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGVtcGxhdGUiKTtpMXQuaW5uZXJIVE1MPWA8c3R5bGU+JHtuMXQudG9TdHJpbmcoKS5yZXBsYWNlKCI6aG9zdCIsImh0bWwiKX08L3N0eWxlPmAsZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChpMXQuY29udGVudCk7dDF0KCIiLCRRdGAKICBbdGhlbWV+PSdkYXJrJ10gewogICAgLyogQmFzZSAoYmFja2dyb3VuZCkgKi8KICAgIC0tbHVtby1iYXNlLWNvbG9yOiBoc2woMjE0LCAzNSUsIDIxJSk7CgogICAgLyogVGludCAqLwogICAgLS1sdW1vLXRpbnQtNXBjdDogaHNsYSgyMTQsIDY1JSwgODUlLCAwLjA2KTsKICAgIC0tbHVtby10aW50LTEwcGN0OiBoc2xhKDIxNCwgNjAlLCA4MCUsIDAuMTQpOwogICAgLS1sdW1vLXRpbnQtMjBwY3Q6IGhzbGEoMjE0LCA2NCUsIDgyJSwgMC4yMyk7CiAgICAtLWx1bW8tdGludC0zMHBjdDogaHNsYSgyMTQsIDY5JSwgODQlLCAwLjMyKTsKICAgIC0tbHVtby10aW50LTQwcGN0OiBoc2xhKDIxNCwgNzMlLCA4NiUsIDAuNDEpOwogICAgLS1sdW1vLXRpbnQtNTBwY3Q6IGhzbGEoMjE0LCA3OCUsIDg4JSwgMC41KTsKICAgIC0tbHVtby10aW50LTYwcGN0OiBoc2xhKDIxNCwgODIlLCA5MCUsIDAuNik7CiAgICAtLWx1bW8tdGludC03MHBjdDogaHNsYSgyMTQsIDg3JSwgOTIlLCAwLjcpOwogICAgLS1sdW1vLXRpbnQtODBwY3Q6IGhzbGEoMjE0LCA5MSUsIDk0JSwgMC44KTsKICAgIC0tbHVtby10aW50LTkwcGN0OiBoc2xhKDIxNCwgOTYlLCA5NiUsIDAuOSk7CiAgICAtLWx1bW8tdGludDogaHNsKDIxNCwgMTAwJSwgOTglKTsKCiAgICAvKiBTaGFkZSAqLwogICAgLS1sdW1vLXNoYWRlLTVwY3Q6IGhzbGEoMjE0LCAwJSwgMCUsIDAuMDcpOwogICAgLS1sdW1vLXNoYWRlLTEwcGN0OiBoc2xhKDIxNCwgNCUsIDIlLCAwLjE1KTsKICAgIC0tbHVtby1zaGFkZS0yMHBjdDogaHNsYSgyMTQsIDglLCA0JSwgMC4yMyk7CiAgICAtLWx1bW8tc2hhZGUtMzBwY3Q6IGhzbGEoMjE0LCAxMiUsIDYlLCAwLjMyKTsKICAgIC0tbHVtby1zaGFkZS00MHBjdDogaHNsYSgyMTQsIDE2JSwgOCUsIDAuNDEpOwogICAgLS1sdW1vLXNoYWRlLTUwcGN0OiBoc2xhKDIxNCwgMjAlLCAxMCUsIDAuNSk7CiAgICAtLWx1bW8tc2hhZGUtNjBwY3Q6IGhzbGEoMjE0LCAyNCUsIDEyJSwgMC42KTsKICAgIC0tbHVtby1zaGFkZS03MHBjdDogaHNsYSgyMTQsIDI4JSwgMTMlLCAwLjcpOwogICAgLS1sdW1vLXNoYWRlLTgwcGN0OiBoc2xhKDIxNCwgMzIlLCAxMyUsIDAuOCk7CiAgICAtLWx1bW8tc2hhZGUtOTBwY3Q6IGhzbGEoMjE0LCAzMyUsIDEzJSwgMC45KTsKICAgIC0tbHVtby1zaGFkZTogaHNsKDIxNCwgMzMlLCAxMyUpOwoKICAgIC8qIENvbnRyYXN0ICovCiAgICAtLWx1bW8tY29udHJhc3QtNXBjdDogdmFyKC0tbHVtby10aW50LTVwY3QpOwogICAgLS1sdW1vLWNvbnRyYXN0LTEwcGN0OiB2YXIoLS1sdW1vLXRpbnQtMTBwY3QpOwogICAgLS1sdW1vLWNvbnRyYXN0LTIwcGN0OiB2YXIoLS1sdW1vLXRpbnQtMjBwY3QpOwogICAgLS1sdW1vLWNvbnRyYXN0LTMwcGN0OiB2YXIoLS1sdW1vLXRpbnQtMzBwY3QpOwogICAgLS1sdW1vLWNvbnRyYXN0LTQwcGN0OiB2YXIoLS1sdW1vLXRpbnQtNDBwY3QpOwogICAgLS1sdW1vLWNvbnRyYXN0LTUwcGN0OiB2YXIoLS1sdW1vLXRpbnQtNTBwY3QpOwogICAgLS1sdW1vLWNvbnRyYXN0LTYwcGN0OiB2YXIoLS1sdW1vLXRpbnQtNjBwY3QpOwogICAgLS1sdW1vLWNvbnRyYXN0LTcwcGN0OiB2YXIoLS1sdW1vLXRpbnQtNzBwY3QpOwogICAgLS1sdW1vLWNvbnRyYXN0LTgwcGN0OiB2YXIoLS1sdW1vLXRpbnQtODBwY3QpOwogICAgLS1sdW1vLWNvbnRyYXN0LTkwcGN0OiB2YXIoLS1sdW1vLXRpbnQtOTBwY3QpOwogICAgLS1sdW1vLWNvbnRyYXN0OiB2YXIoLS1sdW1vLXRpbnQpOwoKICAgIC8qIFRleHQgKi8KICAgIC0tbHVtby1oZWFkZXItdGV4dC1jb2xvcjogdmFyKC0tbHVtby1jb250cmFzdCk7CiAgICAtLWx1bW8tYm9keS10ZXh0LWNvbG9yOiB2YXIoLS1sdW1vLWNvbnRyYXN0LTkwcGN0KTsKICAgIC0tbHVtby1zZWNvbmRhcnktdGV4dC1jb2xvcjogdmFyKC0tbHVtby1jb250cmFzdC03MHBjdCk7CiAgICAtLWx1bW8tdGVydGlhcnktdGV4dC1jb2xvcjogdmFyKC0tbHVtby1jb250cmFzdC01MHBjdCk7CiAgICAtLWx1bW8tZGlzYWJsZWQtdGV4dC1jb2xvcjogdmFyKC0tbHVtby1jb250cmFzdC0zMHBjdCk7CgogICAgLyogUHJpbWFyeSAqLwogICAgLS1sdW1vLXByaW1hcnktY29sb3I6IGhzbCgyMTQsIDg2JSwgNTUlKTsKICAgIC0tbHVtby1wcmltYXJ5LWNvbG9yLTUwcGN0OiBoc2xhKDIxNCwgODYlLCA1NSUsIDAuNSk7CiAgICAtLWx1bW8tcHJpbWFyeS1jb2xvci0xMHBjdDogaHNsYSgyMTQsIDkwJSwgNjMlLCAwLjEpOwogICAgLS1sdW1vLXByaW1hcnktdGV4dC1jb2xvcjogaHNsKDIxNCwgMTAwJSwgNzAlKTsKICAgIC0tbHVtby1wcmltYXJ5LWNvbnRyYXN0LWNvbG9yOiAjZmZmOwoKICAgIC8qIEVycm9yICovCiAgICAtLWx1bW8tZXJyb3ItY29sb3I6IGhzbCgzLCA5MCUsIDYzJSk7CiAgICAtLWx1bW8tZXJyb3ItY29sb3ItNTBwY3Q6IGhzbGEoMywgOTAlLCA2MyUsIDAuNSk7CiAgICAtLWx1bW8tZXJyb3ItY29sb3ItMTBwY3Q6IGhzbGEoMywgOTAlLCA2MyUsIDAuMSk7CiAgICAtLWx1bW8tZXJyb3ItdGV4dC1jb2xvcjogaHNsKDMsIDEwMCUsIDY3JSk7CgogICAgLyogU3VjY2VzcyAqLwogICAgLS1sdW1vLXN1Y2Nlc3MtY29sb3I6IGhzbCgxNDUsIDY1JSwgNDIlKTsKICAgIC0tbHVtby1zdWNjZXNzLWNvbG9yLTUwcGN0OiBoc2xhKDE0NSwgNjUlLCA0MiUsIDAuNSk7CiAgICAtLWx1bW8tc3VjY2Vzcy1jb2xvci0xMHBjdDogaHNsYSgxNDUsIDY1JSwgNDIlLCAwLjEpOwogICAgLS1sdW1vLXN1Y2Nlc3MtdGV4dC1jb2xvcjogaHNsKDE0NSwgODUlLCA0NyUpOwogIH0KCiAgaHRtbCB7CiAgICBjb2xvcjogdmFyKC0tbHVtby1ib2R5LXRleHQtY29sb3IpOwogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbHVtby1iYXNlLWNvbG9yKTsKICB9CgogIFt0aGVtZX49J2RhcmsnXSB7CiAgICBjb2xvcjogdmFyKC0tbHVtby1ib2R5LXRleHQtY29sb3IpOwogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbHVtby1iYXNlLWNvbG9yKTsKICB9CgogIGgxLAogIGgyLAogIGgzLAogIGg0LAogIGg1LAogIGg2IHsKICAgIGNvbG9yOiB2YXIoLS1sdW1vLWhlYWRlci10ZXh0LWNvbG9yKTsKICB9CgogIGEgewogICAgY29sb3I6IHZhcigtLWx1bW8tcHJpbWFyeS10ZXh0LWNvbG9yKTsKICB9CgogIGJsb2NrcXVvdGUgewogICAgY29sb3I6IHZhcigtLWx1bW8tc2Vjb25kYXJ5LXRleHQtY29sb3IpOwogIH0KCiAgY29kZSwKICBwcmUgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbHVtby1jb250cmFzdC0xMHBjdCk7CiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1sdW1vLWJvcmRlci1yYWRpdXMtbSk7CiAgfQpgLHttb2R1bGVJZDoibHVtby1jb2xvciJ9KTt0MXQoIiIsJFF0YAogIDpob3N0IHsKICAgIGNvbG9yOiB2YXIoLS1sdW1vLWJvZHktdGV4dC1jb2xvcikgIWltcG9ydGFudDsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWx1bW8tYmFzZS1jb2xvcikgIWltcG9ydGFudDsKICB9CmAse21vZHVsZUlkOiJsdW1vLWNvbG9yLWxlZ2FjeSIsaW5jbHVkZTpbImx1bW8tY29sb3IiXX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgKGMpIDIwMjEgVmFhZGluIEx0ZC4KICAgICAqIFRoaXMgcHJvZ3JhbSBpcyBhdmFpbGFibGUgdW5kZXIgQXBhY2hlIExpY2Vuc2UgVmVyc2lvbiAyLjAsIGF2YWlsYWJsZSBhdCBodHRwczovL3ZhYWRpbi5jb20vbGljZW5zZS8KICAgICAqLwpjb25zdCByMXQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGVtcGxhdGUiKTtyMXQuaW5uZXJIVE1MPSdcbiAgPHN0eWxlPlxuICAgIEBmb250LWZhY2Uge1xuICAgICAgZm9udC1mYW1pbHk6IFwnbHVtby1pY29uc1wnO1xuICAgICAgc3JjOiB1cmwoZGF0YTphcHBsaWNhdGlvbi9mb250LXdvZmY7Y2hhcnNldD11dGYtODtiYXNlNjQsZDA5R1JnQUJBQUFBQUJFY0FBc0FBQUFBSWl3QUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJIVTFWQ0FBQUJDQUFBQURzQUFBQlVJSXNsZWs5VEx6SUFBQUZFQUFBQVF3QUFBRlpBSVV1S1kyMWhjQUFBQVlnQUFBRDRBQUFEcnNDVThkNW5iSGxtQUFBQ2dBQUFDMk1BQUJkNGg5VG8yV2hsWVdRQUFBM2tBQUFBTUFBQUFEWmEvNlNzYUdobFlRQUFEaFFBQUFBZEFBQUFKQWJwQTM1b2JYUjRBQUFPTkFBQUFCQUFBQUNzcEJBQUFHeHZZMkVBQUE1RUFBQUFXQUFBQUZoNTVJQXNiV0Y0Y0FBQURwd0FBQUFmQUFBQUlBRktBWEJ1WVcxbEFBQU92QUFBQVRFQUFBSXVVVUpaQ0hCdmMzUUFBQS93QUFBQkt3QUFBZWxtOFN6VmVKeGpZR1JnWU9CaU1HQ3dZMkJ5Y2ZNSlllRExTU3pKWTVCaVlHR0FBSkE4TXBzeEp6TTlrWUVEeGdQS3NZQnBEaUJtZzRnQ0FDWTdCVWdBZUp4allHUyt5RGlCZ1pXQmdhbUthUThEQTBNUGhHWjh3R0RJeUFRVVpXQmxac0FLQXRKY1V4Z2NYakcrMG1JTytwL0ZFTVVjeERBTktNd0lrZ01BQm44TUxRQjRuTzNTV1c2RE1BQkYwVXR3Q0VuSVBNL3poTEs4THFoZlhSeWJTUDE0WFVZdEhWOWhHWVF3UUJOSW8zY1VJUGtoUWVNN3JpYjFla3FuWGc5ODFYdUMxcXZ5ODRsem9qbGVoM3B1eEwwaFBqR2pSVTQ3M3RlbG9FZWZBVU5Hakprd1pjYWNCVXRXck5td1pjZWVBMGRPbkxsdzVjYWRCMDllbFBHaEdmK2owTlRJLzY1S2ZYZXJUNkpocUtucFJLdGdPcHVxYVRydEtqUFVscUhtaHRvMjFJN3BMNmk2aGxxWTNxN3FHV3JmVUFlR09qVFVrYUdPRFhWaXFGTkRuUm5xM0ZBWGhybzAxSldocmcxMVk2aGJROTBaNnQ1UUQ0WjZOTlNUb1o0TjlXS29WME85R2VyZFVCK0cralRVbDZHV1J2a0wyNEJrRVhpY3RWaDliRnZWRmIvbnh2YnorN1JmL042ekhjZDJiQ2ZQK1dnYzFaOU4wanBObkVMNmtiUlZTNkhBMmhRWUdoOVRHUjFDYkNxYTJyWHJXT2tRRS9zSE5KZ210WnZvVk5acUUxQjFETkh4elRReENlaFVUWWlKVFF5RU51aTBxU0xlenIzUGR1eVFmZ21SV09mZGU4Kzk1NTF6N3Jubi9PNGpMb0ovYlJQMFVhS1FNTEZKanBCQXZwaExaQzNEazBvazdXQnpSMi91cEpzN1J5dy9uZkZibG4vdXVOL2FwQ3Z3cktMclN2VXFSdWZibTVwbjBmczB3NGdZeG5HVlA2cUhuTzRiV2lEUUdRZ3d0UzZsbTNsQjNRb1gxTTJ2d0VtdXppckYzOXkrRXMyK0RKOGQxcGt5cUJJcW96ZTNEMStaejREckZvYXp4SThkV3dNckRsWjJETXFRQVI5QVJPc0pVKzJjbWxUUGF6VGNvNTJGMXhUYTJhMitLOHZ2cTkyZFZIbXRMb1BlUVgvQVpQUllHdGhEWU9lWmpCaktvRnNWR3VsUjNsV1U5NVdlQ0s0NHFIVTdNaFdVR1VLWkRUM29LVWNHMkdXdWgrRUREZlVZQS9qaEFobDBUT3NKTllTRXU3bVFtaTNVemZYd1pLQTRCc1ZzSExYUVlHZ1JXOTV1RXRwSjFWZm45WGlMcmlSQmxGRXF4c0RqQTA5eUNOVW9ReHh3ZDdLV1NUdDJ5M0dUS2lmbHFIUlNvV1pjM20xMVdhL2ZKZEZnWEQ0c1NZZmxlSkJLZDhHTXo3SjhkWm4vY0dSQ2NLR0RuQTJHZTNmS3pjdmxuVEROdGhHV0xYelgvV2FYdFVBbVJnZUxsSFNyMzByMEc5VVRYTWIwQXRtd3pPb3k3M2ZrU2xIWmtkdXcvVFl1VTljQUQ0WXV0UG94VFRzQTM3OTd3VnI0Wi8xTkM1ekFSSHI0dnR4Smp4SWZpWk1oTWtiV2srMTRCbkpaS3dxR1p3RGZzd0x5eFdEU2cxMXJGTEpGN05vcHhqZDFoMS9RT1Qrb2V6Z2Z1M1lxK0hrK2R1ZjV4KzQwbzFHVGthSWdpa0svSUVuQzZhWXhDVUJhWkpTTjRYVFlGalUvWU1OSUtxSndoREdPQ0NJOEZEWG5YbVhqdEdoR0p5U2hxakFPbkJPa1cySkc5UzdHZ1llTVdBVTVKemhuV21CT2FPTStDS0VQb3FTZkZEQzJVbnErRExsVWdVVlVGRkxaR0pnNmp0bG9qc2RzYThrUE9iUHVKZGk1ZG5CZEJzTEpNR1RXRGE0dDJKdnR3dVBvOXMrWTg2c3V2L1czM1FHMXJBYU9BVVYrdng0SzZmMkQwNFBWS2xDN1dMU3JaekFpNDVaVjZsSUM3V29YcW1SeXZVcW9Wd3J6VW9Wc0lqZVRYV1F2K1JINUdUbEJYaUIvSW44bG4wSWJCQ0FGT2FqQUpyZ1pZeU9IV3FPZlVlL2FIakkxMlI2T1FvMWpDZ3QyMTVsKzRmNlhQYiswTU5vdTBWKzQzbjJGNzd0U2ZSYjI0ZDd6aXRnbkttdllIczY5enVnYVB2Qnd2NmlvWGtiMkxkTDY1QXR3NTF1TGtYbHUxYmhNTVJjWFNQY1lvcUtJUmxoMzRsUVA4LzVKYnVVRnllNHZ4RDYvNk14RkYxMUMwdVZMcjlVbGd3NDR0UzNwTVZpTkxVRXhieWNGZ0xJY3QrUURNaWJSaW14MXlkVXo4RlhaaXVPSURCT01WWDJuVVpjK2h1TkU1WFVKODF1aUpvaWFid3FhVkYwdWFjS2JhdS9wbDRSMlZXMFhYbEpyYTZib1ZyWUc2NDZURjVOWXp3eTR2akVOVnJEbGNOcFpQbDhESDZYWDhYV0N4MG12V1ZaWTZLRkxydnNZNjYvelBpY3Q1Rm54YU5VUi9qdXZaQ00zVHZENjBFMlcxdFppemJYVFBEdWFiY20wbmJienBXS3BtQTFheUJROGdpZWRMVU0rQTBrTmpCalFqbXVZejdZcmdJWFl2bUY2M1pMQndTWHJwbjlUYjl3d2RkL1UxSDBQTVFLM1hjTzh1bDNXVDdQeVBQZHB5MFRlbUt4TlJjSk5hdWlYSm5uVURwVXBwUVdzNFNuVUl5MEVFU0dZcUpZUUxHSHh6YUdXd1ZJYVM2WTdtUUZNOFpqWURRM2F4amY2MVNXalUzM0p3T1pBMXB3YUcxTDltemY3MWFIUmRYMUpIdzZGcDBhWGhOd2JxeWVHTmc0TmJkekdDQnhvejRaWGp5NE51NjlacjZzRFk2dk1yTFU1bkExUDhKa2JkV1hKNkVSZk1yeXZOaDFKZlE5K1Q0ZEloR3ZLOXczZHhqQkJ6YXRzUS9NbE9IVklEbllwRHo2b2RBWGxRMDF0MlBhNUlhZmQ4TU1weEFlREtQMEM2Q2pnVkxUNW9zQjZpY1V4MDFsV2pYeHpUL0d5UkYyd2VsRU01Wi83akczVmpRMVNyTm41SWJ5ek9HNWRvYkIzL1FIeHladnNYY296OElvRXdTN3BsQ2crenhIUWs0MjRxOUJmRXBrRVNKYkZIUXVzREJTV0ZrdUJrb1BPMGtMS3dSVllqeEdYbEhUY1REUU1KL0g2VFg5YWZrTzdtbnJhVE8xZmVUblpBWEx1NGNwN0hBWE1tTkcxeWVGazlUZ1MvTkhoWlIvNFFvQlRyL1pCKzZoQ2d5bDE1TnExVWJONm5FMS9ablAxVTJjaXpDQnB2czhjSlFaSjRMa1l4NU4veVpQQVVaTlFRMFY0ZjNCUWxsV3JLM1lSemwzMGRPVDZSVm4ydXBOdXI2d29TYThDcXBkVC9hS25CTTRvM2pOdXI5ZDl4cXRVVDZ2ZUJFdDlDYTlhdCtFUnpFRWhVa1I4c2E1bVE0YVZ2Sm9WZUVBOHpJNGVpNW1VTFhGR3lVN3ovNlRBZVlMVmNwelNXWlk4UFlZRjV5clRWNjBzVDArWFYxNDF2WCsrV2YxNlYyYkZlR1ZQWlh4RnBrdnllS1RXTGx6ZlcwbW5LeHNZNlkzMjk0LzA5OThTQ2ZYMWJsbTVwYmN2RkdscS9yMDdNUkFNaFlJRGlXNUpGS1dXM3ZkckVwQ3NaU0pHK29tN1p1L1BTU2NaSmhOa0xibVc1V3NyMTJwV3FXNXpLdGx3UlM0YkZPeFV3MTdtQ3p5Nmxza0NEbDFXWU9HV0RZckFEck1BN0JERHdlV1dOZDVrb2lKblIxZHoreXRMUDJxMFNxUEIxbG5LMmNjQjdSWWU0RlNvUGtzM2lCM3Q0dHhUU0hjdGIyc3kxaXZrMHB2SHVDTm02dzFmNnd4djMrT0NnTjc4THFkUW5VVmg3UjBvVEFwMHpPZjJyYlc3NzBWdTVDMmRJeUdkVG5Ibzh6U2ppN2RwcGowVVNvVkN6K2xoUk1UaDUzVGVxOVZiR2ZianVTYkFvb1NkWGF5WTRQWUhnMzc0QzZmN2dsMUIvRFh1SjQvUVh4T0JkSkZKc3BGc0kzZWdwb1dVVUNqbFRJRm5OWU5sK1p5WkttQmVZS0dIa0QxUXlEbGhhS2JLd0tjSUpxSjRUTEoyT21kWS9KV1hhZTREZEdCdzhIWjdlWGNnRkYyenIyU29hbERyeTVpS3FvYTBQdWhlM2hQUTJzM2VsVFlNK01JK24zckswS2dMNy9MYTNHZU1MdDZtN3U5MTJ2R252dE9SaUlhMHFCbWhxVmkrWFc5WE5CbXFiOGVWZ0t6SUhmR0k1Yk5vRzdYMFVDemVJU21xSWNPL25ZOEZIN1U4YXZYOWZ4L1NUK2h4MHNlelB3OVF5OE11bTNHV2YyTjRVeS95SVlHVkJYYkpIV0lacDdkZlRjcHRkTVRyOVFtcTdEYWlLL3VrcUNMNGt0NFJVZlM1WFBuTXRtVDIyL21RRnFGN2VtU3F0cmx1OFNWRWx4RFJKclpPRGtwdXdlMFZmVGZqZEVwMWY3QTd2K2Zvek5CWFVKLzZXVHVLMlR0RmxwRlZaQVozTGNGdlVpMVoycDJZVCtFTUFrR0pWU3RPekxUQVBnNElxV0lBbHpSU2pPQmtsMnp4ajNUS3ljcHpUL01udlgzdWFTTVdNK2dVMHJrWGpvaGhlZlZSTWFwczMva0xNU0t2MjNsVDIzdXhRcmtRanlPSmxlTURzZGhBbkQ2WkdFbFdaNU1qQ1h6Q0UvaGtXWCtXRjRrbnpHaFZPeUsyZVFaZWtWM2V5bzB6TDhrdVlXQ25EQ3ZqamhBa2NUUE9CRFhWZG9hdjNIVmNGblFqTHZ0VjlTMnAwekE2SmVnUHdNUXh0K3lGYjNsbDl6R2xxLzVkUktiM2NFeVFZb2FOWXBoYXJKN3hDQjdBV3hzTFkzampaWFkwWHNaajBXandjOUk2UFAvZEtBQm5DWmFxSHBhWkVBQ3hrNFplTFpTS05nWkFCbCtsWVFYMXNKUU9TWDNuNnI0MTBldmNvdWQ1SmVBR1VYVlA5SDF0Wk9LZWpUcTRPbm8wejBlcnJvMUZybk9wb2h2YTFkL2hUZHRWc1FkS041VzlSbFQzTmpEMG56bnlLTlRnS0FNZldOV2N5b2RWMElHTFBJSE9GMG80SnlxdWZhSzR6NldJSXp1R2gzZDhjOGN3UWc4RVIrT1Z4eXJqZG04dk51aHRzNExvT2loR3hJTXVVZGd6d2lZTjd4aGgxK29abkpOdVRHN2dRWnZ1NFhXWjlHQVpaakdFdWJ3ZVBxWWh0S0RUSCs5VlFrbDE3L2lHeWJzbkorOCtzS3R5UHJjbGw5dHk2NVpzZHN0LzlpcXBFS2g3TTVWZEJ4aDNjc09kTmM2dFczSTF1eU0xUHpPWGVnU09yTEZzRk5JMk8yN00rVEYyQXBuTjlNVXY1dWQ2TGp4SXZFUW5IUnp4SXU0SXNBOU1MRmtKbjJ0Y1pvWjdPTjdkWGU3dWpyYzhIcnVzUEthbWxxWHdkNzdsUVV1THBpbGF1NFBVTWFwdWVCYjdpclU0Um9VWEVZWHVWdUlHbFJHbU9wKzJsTmthUlBWemlPcW1sYVp2YXFHNGRGZ1NqMGp4RUpXcnYxMklVV250bXcrcmZRYXJSRTBBcGg0b2NJNm5sVWxHcXMrdTMvK1QvZXRoVzYyUHBIcDJlSGJac3RuaC93T085NXlEQUhpY1kyQmtZR0FBNHBtSjZRSHgvRFpmR2JpWlh3QkZHR3BVTnpRaTZQK3ZtYWN5M1FKeU9SaVlRS0lBTm9VTFZYaWNZMkJrWUdBTytwOEZKRjh3QUFIelZBWkdCbFNnRFFCVzlnTnZBQUFBZUp4allHQmdZSDR4TkRBQXp3UW1qd0FBQUFBQVRnQ2FBT2dCQ2dFc0FVNEJjQUdhQWNRQjdnSWFBcHdDNkFTYUJMd0UxZ1R5QlE0RktnVjZCZEFGL2daRUJtWUd0Z2NZQjVBSUdBaFNDR29JL2dsR0NiNEoyZ29FQ2p3S2dncTRDdkFMVUF1V0M3eDRuR05nWkdCZzBHWk1ZUkJsQUFFbUlPWUNRZ2FHLzJBK0F3QVlsQUc4QUhpY2JaRTlUc013R0liZjlBL1JTZ2dFWW1IeEFndHErak4yWkdqM0R0M1QxR2xUT1hIa3VCVzlBeWZnRUJ5Q2dUTndDQTdCVy9OSmxWQnR5ZC9qeCs4WEt3bUFhM3dod25GRTZJYjFPQnE0NE82UG02UWI0UmI1UWJpTkhoNkZPL1JENFM2ZU1SSHU0UmFhVDRoYWx6UjNlQlZ1NEFwdndrMzZkK0VXK1VPNGpYdDhDbmZvdjRXN1dPQkh1SWVuNk1Yc0N0dlBVMXZXYzczZW1jU2R4SWtXMnRXNUxkVW9IcDdrVEpmYUpWNnYxUEtnNnYxNjdIMm1NbWNMTmJXbDE4WllWVG03MWFtUE45NVhrOEVnRXgrbnRvREJEZ1VzK3NpUnNwYW9NZWY3cnVrTkVyaXppWE51d1M3SG1vZTl3Z2d4ditlNTVJekpNcVFUZU5ZVjAwc2N1TmJZOCtZeHJVZkdmY2FNWmIvQ05QUWUwNGJUMGxUaGJFdVQwc2ZZaEs2Sy8yM0FtZjNMeCtIMjRoY2o0R1NjQUFBQWVKeHRqdGx1Z3pBUVJia0pVRUpJdXUvN3ZxUjhsR05QQWNXeDBZQWI1ZS9Ma2xSOTZFZ2VuU3VmR1kwMzhQcUt2ZjlyaGdHRzhCRWd4QTRpakJCampBUVRUTEdMUGV6akFJYzR3akZPY0lvem5PTUNsN2pDTlc1d2l6dmM0d0dQZU1Jelh2Q0tON3pqQXpOOGVvblFSV1pTU2FZbWp2dWc2YXNlOThoRmx0ZXhNSm1tVk5tVjJXQnZkTmdaVWMrdWpBV3pYVzNVRG51MXc0M2FzU3RIYzhHcHpBWFgvcHkwanFUUVpKVGdrY3hKTHBhQ0YwbEQzMnhOdCs0M3RBc24yOURmdDAydURLUzJjakdVTmdzazI2cUsybEZ0aFlvVTI3SU5QcW1pRHFnNWdvZTBwcVI1cVNvcU1kZWsvQ1VaRnl3TDQ2ckVzaUltbGVxaXFvTXl0NGJhWGx1LzFHTGRORmY1emJjTm1kcjFZVVdDWmU0N28relVtYi9Eb1N0YnczY1ZzZWY5QUxqamlQUUEpIGZvcm1hdChcJ3dvZmZcJyk7XG4gICAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgIH1cblxuICAgIGh0bWwge1xuICAgICAgLS1sdW1vLWljb25zLWFsaWduLWNlbnRlcjogIlxcZWEwMSI7XG4gICAgICAtLWx1bW8taWNvbnMtYWxpZ24tbGVmdDogIlxcZWEwMiI7XG4gICAgICAtLWx1bW8taWNvbnMtYWxpZ24tcmlnaHQ6ICJcXGVhMDMiO1xuICAgICAgLS1sdW1vLWljb25zLWFuZ2xlLWRvd246ICJcXGVhMDQiO1xuICAgICAgLS1sdW1vLWljb25zLWFuZ2xlLWxlZnQ6ICJcXGVhMDUiO1xuICAgICAgLS1sdW1vLWljb25zLWFuZ2xlLXJpZ2h0OiAiXFxlYTA2IjtcbiAgICAgIC0tbHVtby1pY29ucy1hbmdsZS11cDogIlxcZWEwNyI7XG4gICAgICAtLWx1bW8taWNvbnMtYXJyb3ctZG93bjogIlxcZWEwOCI7XG4gICAgICAtLWx1bW8taWNvbnMtYXJyb3ctbGVmdDogIlxcZWEwOSI7XG4gICAgICAtLWx1bW8taWNvbnMtYXJyb3ctcmlnaHQ6ICJcXGVhMGEiO1xuICAgICAgLS1sdW1vLWljb25zLWFycm93LXVwOiAiXFxlYTBiIjtcbiAgICAgIC0tbHVtby1pY29ucy1iYXItY2hhcnQ6ICJcXGVhMGMiO1xuICAgICAgLS1sdW1vLWljb25zLWJlbGw6ICJcXGVhMGQiO1xuICAgICAgLS1sdW1vLWljb25zLWNhbGVuZGFyOiAiXFxlYTBlIjtcbiAgICAgIC0tbHVtby1pY29ucy1jaGVja21hcms6ICJcXGVhMGYiO1xuICAgICAgLS1sdW1vLWljb25zLWNoZXZyb24tZG93bjogIlxcZWExMCI7XG4gICAgICAtLWx1bW8taWNvbnMtY2hldnJvbi1sZWZ0OiAiXFxlYTExIjtcbiAgICAgIC0tbHVtby1pY29ucy1jaGV2cm9uLXJpZ2h0OiAiXFxlYTEyIjtcbiAgICAgIC0tbHVtby1pY29ucy1jaGV2cm9uLXVwOiAiXFxlYTEzIjtcbiAgICAgIC0tbHVtby1pY29ucy1jbG9jazogIlxcZWExNCI7XG4gICAgICAtLWx1bW8taWNvbnMtY29nOiAiXFxlYTE1IjtcbiAgICAgIC0tbHVtby1pY29ucy1jcm9zczogIlxcZWExNiI7XG4gICAgICAtLWx1bW8taWNvbnMtZG93bmxvYWQ6ICJcXGVhMTciO1xuICAgICAgLS1sdW1vLWljb25zLWRyb3Bkb3duOiAiXFxlYTE4IjtcbiAgICAgIC0tbHVtby1pY29ucy1lZGl0OiAiXFxlYTE5IjtcbiAgICAgIC0tbHVtby1pY29ucy1lcnJvcjogIlxcZWExYSI7XG4gICAgICAtLWx1bW8taWNvbnMtZXllOiAiXFxlYTFiIjtcbiAgICAgIC0tbHVtby1pY29ucy1leWUtZGlzYWJsZWQ6ICJcXGVhMWMiO1xuICAgICAgLS1sdW1vLWljb25zLW1lbnU6ICJcXGVhMWQiO1xuICAgICAgLS1sdW1vLWljb25zLW1pbnVzOiAiXFxlYTFlIjtcbiAgICAgIC0tbHVtby1pY29ucy1vcmRlcmVkLWxpc3Q6ICJcXGVhMWYiO1xuICAgICAgLS1sdW1vLWljb25zLXBob25lOiAiXFxlYTIwIjtcbiAgICAgIC0tbHVtby1pY29ucy1waG90bzogIlxcZWEyMSI7XG4gICAgICAtLWx1bW8taWNvbnMtcGxheTogIlxcZWEyMiI7XG4gICAgICAtLWx1bW8taWNvbnMtcGx1czogIlxcZWEyMyI7XG4gICAgICAtLWx1bW8taWNvbnMtcmVkbzogIlxcZWEyNCI7XG4gICAgICAtLWx1bW8taWNvbnMtcmVsb2FkOiAiXFxlYTI1IjtcbiAgICAgIC0tbHVtby1pY29ucy1zZWFyY2g6ICJcXGVhMjYiO1xuICAgICAgLS1sdW1vLWljb25zLXVuZG86ICJcXGVhMjciO1xuICAgICAgLS1sdW1vLWljb25zLXVub3JkZXJlZC1saXN0OiAiXFxlYTI4IjtcbiAgICAgIC0tbHVtby1pY29ucy11cGxvYWQ6ICJcXGVhMjkiO1xuICAgICAgLS1sdW1vLWljb25zLXVzZXI6ICJcXGVhMmEiO1xuICAgIH1cbiAgPC9zdHlsZT5cbicsZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChyMXQuY29udGVudCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAyMSBWYWFkaW4gTHRkLgogICAgICogVGhpcyBwcm9ncmFtIGlzIGF2YWlsYWJsZSB1bmRlciBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgYXZhaWxhYmxlIGF0IGh0dHBzOi8vdmFhZGluLmNvbS9saWNlbnNlLwogICAgICovCmNvbnN0IG8xdD0kUXRgCiAgOmhvc3QgewogICAgLS1sdW1vLXNpemUteHM6IDEuNjI1cmVtOwogICAgLS1sdW1vLXNpemUtczogMS44NzVyZW07CiAgICAtLWx1bW8tc2l6ZS1tOiAyLjI1cmVtOwogICAgLS1sdW1vLXNpemUtbDogMi43NXJlbTsKICAgIC0tbHVtby1zaXplLXhsOiAzLjVyZW07CgogICAgLyogSWNvbnMgKi8KICAgIC0tbHVtby1pY29uLXNpemUtczogMS4yNWVtOwogICAgLS1sdW1vLWljb24tc2l6ZS1tOiAxLjVlbTsKICAgIC0tbHVtby1pY29uLXNpemUtbDogMi4yNWVtOwogICAgLyogRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5ICovCiAgICAtLWx1bW8taWNvbi1zaXplOiB2YXIoLS1sdW1vLWljb24tc2l6ZS1tKTsKICB9CmAsYTF0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRlbXBsYXRlIik7YTF0LmlubmVySFRNTD1gPHN0eWxlPiR7bzF0LnRvU3RyaW5nKCkucmVwbGFjZSgiOmhvc3QiLCJodG1sIil9PC9zdHlsZT5gLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoYTF0LmNvbnRlbnQpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgKGMpIDIwMjEgVmFhZGluIEx0ZC4KICAgICAqIFRoaXMgcHJvZ3JhbSBpcyBhdmFpbGFibGUgdW5kZXIgQXBhY2hlIExpY2Vuc2UgVmVyc2lvbiAyLjAsIGF2YWlsYWJsZSBhdCBodHRwczovL3ZhYWRpbi5jb20vbGljZW5zZS8KICAgICAqLwpjb25zdCBzMXQ9JFF0YAogIDpob3N0IHsKICAgIC8qIFNxdWFyZSAqLwogICAgLS1sdW1vLXNwYWNlLXhzOiAwLjI1cmVtOwogICAgLS1sdW1vLXNwYWNlLXM6IDAuNXJlbTsKICAgIC0tbHVtby1zcGFjZS1tOiAxcmVtOwogICAgLS1sdW1vLXNwYWNlLWw6IDEuNXJlbTsKICAgIC0tbHVtby1zcGFjZS14bDogMi41cmVtOwoKICAgIC8qIFdpZGUgKi8KICAgIC0tbHVtby1zcGFjZS13aWRlLXhzOiBjYWxjKHZhcigtLWx1bW8tc3BhY2UteHMpIC8gMikgdmFyKC0tbHVtby1zcGFjZS14cyk7CiAgICAtLWx1bW8tc3BhY2Utd2lkZS1zOiBjYWxjKHZhcigtLWx1bW8tc3BhY2UtcykgLyAyKSB2YXIoLS1sdW1vLXNwYWNlLXMpOwogICAgLS1sdW1vLXNwYWNlLXdpZGUtbTogY2FsYyh2YXIoLS1sdW1vLXNwYWNlLW0pIC8gMikgdmFyKC0tbHVtby1zcGFjZS1tKTsKICAgIC0tbHVtby1zcGFjZS13aWRlLWw6IGNhbGModmFyKC0tbHVtby1zcGFjZS1sKSAvIDIpIHZhcigtLWx1bW8tc3BhY2UtbCk7CiAgICAtLWx1bW8tc3BhY2Utd2lkZS14bDogY2FsYyh2YXIoLS1sdW1vLXNwYWNlLXhsKSAvIDIpIHZhcigtLWx1bW8tc3BhY2UteGwpOwoKICAgIC8qIFRhbGwgKi8KICAgIC0tbHVtby1zcGFjZS10YWxsLXhzOiB2YXIoLS1sdW1vLXNwYWNlLXhzKSBjYWxjKHZhcigtLWx1bW8tc3BhY2UteHMpIC8gMik7CiAgICAtLWx1bW8tc3BhY2UtdGFsbC1zOiB2YXIoLS1sdW1vLXNwYWNlLXMpIGNhbGModmFyKC0tbHVtby1zcGFjZS1zKSAvIDIpOwogICAgLS1sdW1vLXNwYWNlLXRhbGwtbTogdmFyKC0tbHVtby1zcGFjZS1tKSBjYWxjKHZhcigtLWx1bW8tc3BhY2UtbSkgLyAyKTsKICAgIC0tbHVtby1zcGFjZS10YWxsLWw6IHZhcigtLWx1bW8tc3BhY2UtbCkgY2FsYyh2YXIoLS1sdW1vLXNwYWNlLWwpIC8gMik7CiAgICAtLWx1bW8tc3BhY2UtdGFsbC14bDogdmFyKC0tbHVtby1zcGFjZS14bCkgY2FsYyh2YXIoLS1sdW1vLXNwYWNlLXhsKSAvIDIpOwogIH0KYCxsMXQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGVtcGxhdGUiKTtsMXQuaW5uZXJIVE1MPWA8c3R5bGU+JHtzMXQudG9TdHJpbmcoKS5yZXBsYWNlKCI6aG9zdCIsImh0bWwiKX08L3N0eWxlPmAsZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChsMXQuY29udGVudCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAyMSBWYWFkaW4gTHRkLgogICAgICogVGhpcyBwcm9ncmFtIGlzIGF2YWlsYWJsZSB1bmRlciBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgYXZhaWxhYmxlIGF0IGh0dHBzOi8vdmFhZGluLmNvbS9saWNlbnNlLwogICAgICovCmNvbnN0IGMxdD0kUXRgCiAgOmhvc3QgewogICAgLyogQm9yZGVyIHJhZGl1cyAqLwogICAgLS1sdW1vLWJvcmRlci1yYWRpdXMtczogMC4yNWVtOyAvKiBDaGVja2JveCwgYmFkZ2UsIGRhdGUtcGlja2VyIHllYXIgaW5kaWNhdG9yLCBldGMgKi8KICAgIC0tbHVtby1ib3JkZXItcmFkaXVzLW06IHZhcigtLWx1bW8tYm9yZGVyLXJhZGl1cywgMC4yNWVtKTsgLyogQnV0dG9uLCB0ZXh0IGZpZWxkLCBtZW51IG92ZXJsYXksIGV0YyAqLwogICAgLS1sdW1vLWJvcmRlci1yYWRpdXMtbDogMC41ZW07IC8qIERpYWxvZywgbm90aWZpY2F0aW9uLCBldGMgKi8KICAgIC0tbHVtby1ib3JkZXItcmFkaXVzOiAwLjI1ZW07IC8qIERlcHJlY2F0ZWQgKi8KCiAgICAvKiBTaGFkb3cgKi8KICAgIC0tbHVtby1ib3gtc2hhZG93LXhzOiAwIDFweCA0cHggLTFweCB2YXIoLS1sdW1vLXNoYWRlLTUwcGN0KTsKICAgIC0tbHVtby1ib3gtc2hhZG93LXM6IDAgMnB4IDRweCAtMXB4IHZhcigtLWx1bW8tc2hhZGUtMjBwY3QpLCAwIDNweCAxMnB4IC0xcHggdmFyKC0tbHVtby1zaGFkZS0zMHBjdCk7CiAgICAtLWx1bW8tYm94LXNoYWRvdy1tOiAwIDJweCA2cHggLTFweCB2YXIoLS1sdW1vLXNoYWRlLTIwcGN0KSwgMCA4cHggMjRweCAtNHB4IHZhcigtLWx1bW8tc2hhZGUtNDBwY3QpOwogICAgLS1sdW1vLWJveC1zaGFkb3ctbDogMCAzcHggMThweCAtMnB4IHZhcigtLWx1bW8tc2hhZGUtMjBwY3QpLCAwIDEycHggNDhweCAtNnB4IHZhcigtLWx1bW8tc2hhZGUtNDBwY3QpOwogICAgLS1sdW1vLWJveC1zaGFkb3cteGw6IDAgNHB4IDI0cHggLTNweCB2YXIoLS1sdW1vLXNoYWRlLTIwcGN0KSwgMCAxOHB4IDY0cHggLThweCB2YXIoLS1sdW1vLXNoYWRlLTQwcGN0KTsKCiAgICAvKiBDbGlja2FibGUgZWxlbWVudCBjdXJzb3IgKi8KICAgIC0tbHVtby1jbGlja2FibGUtY3Vyc29yOiBkZWZhdWx0OwogIH0KYCx1MXQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGVtcGxhdGUiKTt1MXQuaW5uZXJIVE1MPWA8c3R5bGU+JHtjMXQudG9TdHJpbmcoKS5yZXBsYWNlKCI6aG9zdCIsImh0bWwiKX08L3N0eWxlPmAsZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZCh1MXQuY29udGVudCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAyMSBWYWFkaW4gTHRkLgogICAgICogVGhpcyBwcm9ncmFtIGlzIGF2YWlsYWJsZSB1bmRlciBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgYXZhaWxhYmxlIGF0IGh0dHBzOi8vdmFhZGluLmNvbS9saWNlbnNlLwogICAgICovCmNvbnN0IGgxdD0kUXRgCiAgOmhvc3QgewogICAgLyogcHJldHRpZXItaWdub3JlICovCiAgICAtLWx1bW8tZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgJ1JvYm90bycsICdTZWdvZSBVSScsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWYsICdBcHBsZSBDb2xvciBFbW9qaScsICdTZWdvZSBVSSBFbW9qaScsICdTZWdvZSBVSSBTeW1ib2wnOwoKICAgIC8qIEZvbnQgc2l6ZXMgKi8KICAgIC0tbHVtby1mb250LXNpemUteHhzOiAwLjc1cmVtOwogICAgLS1sdW1vLWZvbnQtc2l6ZS14czogMC44MTI1cmVtOwogICAgLS1sdW1vLWZvbnQtc2l6ZS1zOiAwLjg3NXJlbTsKICAgIC0tbHVtby1mb250LXNpemUtbTogMXJlbTsKICAgIC0tbHVtby1mb250LXNpemUtbDogMS4xMjVyZW07CiAgICAtLWx1bW8tZm9udC1zaXplLXhsOiAxLjM3NXJlbTsKICAgIC0tbHVtby1mb250LXNpemUteHhsOiAxLjc1cmVtOwogICAgLS1sdW1vLWZvbnQtc2l6ZS14eHhsOiAyLjVyZW07CgogICAgLyogTGluZSBoZWlnaHRzICovCiAgICAtLWx1bW8tbGluZS1oZWlnaHQteHM6IDEuMjU7CiAgICAtLWx1bW8tbGluZS1oZWlnaHQtczogMS4zNzU7CiAgICAtLWx1bW8tbGluZS1oZWlnaHQtbTogMS42MjU7CiAgfQpgLGQxdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZW1wbGF0ZSIpO2QxdC5pbm5lckhUTUw9YDxzdHlsZT4ke2gxdC50b1N0cmluZygpLnJlcGxhY2UoIjpob3N0IiwiaHRtbCIpfTwvc3R5bGU+YCxkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGQxdC5jb250ZW50KTt0MXQoIiIsJFF0YAogIGh0bWwgewogICAgZm9udC1mYW1pbHk6IHZhcigtLWx1bW8tZm9udC1mYW1pbHkpOwogICAgZm9udC1zaXplOiB2YXIoLS1sdW1vLWZvbnQtc2l6ZSwgdmFyKC0tbHVtby1mb250LXNpemUtbSkpOwogICAgbGluZS1oZWlnaHQ6IHZhcigtLWx1bW8tbGluZS1oZWlnaHQtbSk7CiAgICAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7CiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKICAgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7CiAgfQoKICAvKiBDYW7igJl0IGNvbWJpbmUgd2l0aCB0aGUgYWJvdmUgc2VsZWN0b3IgYmVjYXVzZSB0aGF0IGRvZXNu4oCZdCB3b3JrIGluIGJyb3dzZXJzIHdpdGhvdXQgbmF0aXZlIHNoYWRvdyBkb20gKi8KICA6aG9zdCB7CiAgICBmb250LWZhbWlseTogdmFyKC0tbHVtby1mb250LWZhbWlseSk7CiAgICBmb250LXNpemU6IHZhcigtLWx1bW8tZm9udC1zaXplLCB2YXIoLS1sdW1vLWZvbnQtc2l6ZS1tKSk7CiAgICBsaW5lLWhlaWdodDogdmFyKC0tbHVtby1saW5lLWhlaWdodC1tKTsKICAgIC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsKICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOwogICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTsKICB9CgogIHNtYWxsLAogIFt0aGVtZX49J2ZvbnQtc2l6ZS1zJ10gewogICAgZm9udC1zaXplOiB2YXIoLS1sdW1vLWZvbnQtc2l6ZS1zKTsKICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1sdW1vLWxpbmUtaGVpZ2h0LXMpOwogIH0KCiAgW3RoZW1lfj0nZm9udC1zaXplLXhzJ10gewogICAgZm9udC1zaXplOiB2YXIoLS1sdW1vLWZvbnQtc2l6ZS14cyk7CiAgICBsaW5lLWhlaWdodDogdmFyKC0tbHVtby1saW5lLWhlaWdodC14cyk7CiAgfQoKICBoMSwKICBoMiwKICBoMywKICBoNCwKICBoNSwKICBoNiB7CiAgICBmb250LXdlaWdodDogNjAwOwogICAgbGluZS1oZWlnaHQ6IHZhcigtLWx1bW8tbGluZS1oZWlnaHQteHMpOwogICAgbWFyZ2luLXRvcDogMS4yNWVtOwogIH0KCiAgaDEgewogICAgZm9udC1zaXplOiB2YXIoLS1sdW1vLWZvbnQtc2l6ZS14eHhsKTsKICAgIG1hcmdpbi1ib3R0b206IDAuNzVlbTsKICB9CgogIGgyIHsKICAgIGZvbnQtc2l6ZTogdmFyKC0tbHVtby1mb250LXNpemUteHhsKTsKICAgIG1hcmdpbi1ib3R0b206IDAuNWVtOwogIH0KCiAgaDMgewogICAgZm9udC1zaXplOiB2YXIoLS1sdW1vLWZvbnQtc2l6ZS14bCk7CiAgICBtYXJnaW4tYm90dG9tOiAwLjVlbTsKICB9CgogIGg0IHsKICAgIGZvbnQtc2l6ZTogdmFyKC0tbHVtby1mb250LXNpemUtbCk7CiAgICBtYXJnaW4tYm90dG9tOiAwLjVlbTsKICB9CgogIGg1IHsKICAgIGZvbnQtc2l6ZTogdmFyKC0tbHVtby1mb250LXNpemUtbSk7CiAgICBtYXJnaW4tYm90dG9tOiAwLjI1ZW07CiAgfQoKICBoNiB7CiAgICBmb250LXNpemU6IHZhcigtLWx1bW8tZm9udC1zaXplLXhzKTsKICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogICAgbGV0dGVyLXNwYWNpbmc6IDAuMDNlbTsKICB9CgogIHAsCiAgYmxvY2txdW90ZSB7CiAgICBtYXJnaW4tdG9wOiAwLjVlbTsKICAgIG1hcmdpbi1ib3R0b206IDAuNzVlbTsKICB9CgogIGEgewogICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIH0KCiAgYTpob3ZlciB7CiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKICB9CgogIGhyIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgYWxpZ24tc2VsZjogc3RyZXRjaDsKICAgIGhlaWdodDogMXB4OwogICAgYm9yZGVyOiAwOwogICAgcGFkZGluZzogMDsKICAgIG1hcmdpbjogdmFyKC0tbHVtby1zcGFjZS1zKSBjYWxjKHZhcigtLWx1bW8tYm9yZGVyLXJhZGl1cy1tKSAvIDIpOwogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbHVtby1jb250cmFzdC0xMHBjdCk7CiAgfQoKICBibG9ja3F1b3RlIHsKICAgIGJvcmRlci1sZWZ0OiAycHggc29saWQgdmFyKC0tbHVtby1jb250cmFzdC0zMHBjdCk7CiAgfQoKICBiLAogIHN0cm9uZyB7CiAgICBmb250LXdlaWdodDogNjAwOwogIH0KCiAgLyogUlRMIHNwZWNpZmljIHN0eWxlcyAqLwoKICBibG9ja3F1b3RlW2Rpcj0ncnRsJ10gewogICAgYm9yZGVyLWxlZnQ6IG5vbmU7CiAgICBib3JkZXItcmlnaHQ6IDJweCBzb2xpZCB2YXIoLS1sdW1vLWNvbnRyYXN0LTMwcGN0KTsKICB9CmAse21vZHVsZUlkOiJsdW1vLXR5cG9ncmFwaHkifSksdDF0KCJ2YWFkaW4tY2hlY2tib3giLCRRdGAKICAgIDpob3N0IHsKICAgICAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDsKICAgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgIGN1cnNvcjogZGVmYXVsdDsKICAgICAgb3V0bGluZTogbm9uZTsKICAgIH0KCiAgICBbcGFydD0nbGFiZWwnXTpub3QoW2VtcHR5XSkgewogICAgICBtYXJnaW46IDAuMTg3NWVtIDAuODc1ZW0gMC4xODc1ZW0gMC4zNzVlbTsKICAgIH0KCiAgICBbcGFydD0nY2hlY2tib3gnXSB7CiAgICAgIHdpZHRoOiBjYWxjKDFlbSArIDJweCk7CiAgICAgIGhlaWdodDogY2FsYygxZW0gKyAycHgpOwogICAgICBtYXJnaW46IDAuMTg3NWVtOwogICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWx1bW8tYm9yZGVyLXJhZGl1cy1zKTsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbHVtby1jb250cmFzdC0yMHBjdCk7CiAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjJzIGN1YmljLWJlemllcigwLjEyLCAwLjMyLCAwLjU0LCAyKSwgYmFja2dyb3VuZC1jb2xvciAwLjE1czsKICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgIGxpbmUtaGVpZ2h0OiAxLjI7CiAgICB9CgogICAgOmhvc3QoW2luZGV0ZXJtaW5hdGVdKSBbcGFydD0nY2hlY2tib3gnXSwKICAgIDpob3N0KFtjaGVja2VkXSkgW3BhcnQ9J2NoZWNrYm94J10gewogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1sdW1vLXByaW1hcnktY29sb3IpOwogICAgfQoKICAgIC8qIE5lZWRlZCB0byBhbGlnbiB0aGUgY2hlY2tib3ggbmljZWx5IG9uIHRoZSBiYXNlbGluZSAqLwogICAgW3BhcnQ9J2NoZWNrYm94J106OmJlZm9yZSB7CiAgICAgIGNvbnRlbnQ6ICdcXDIwMDMnOwogICAgfQoKICAgIC8qIENoZWNrbWFyayAqLwogICAgW3BhcnQ9J2NoZWNrYm94J106OmFmdGVyIHsKICAgICAgY29udGVudDogJyc7CiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgd2lkdGg6IDA7CiAgICAgIGhlaWdodDogMDsKICAgICAgYm9yZGVyOiAwIHNvbGlkIHZhcigtLWx1bW8tcHJpbWFyeS1jb250cmFzdC1jb2xvcik7CiAgICAgIGJvcmRlci13aWR0aDogMC4xODc1ZW0gMCAwIDAuMTg3NWVtOwogICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICB0cmFuc2Zvcm0tb3JpZ2luOiAwIDA7CiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgdG9wOiAwLjgxMjVlbTsKICAgICAgbGVmdDogMC41ZW07CiAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC41NSkgcm90YXRlKC0xMzVkZWcpOwogICAgICBvcGFjaXR5OiAwOwogICAgfQoKICAgIDpob3N0KFtjaGVja2VkXSkgW3BhcnQ9J2NoZWNrYm94J106OmFmdGVyIHsKICAgICAgb3BhY2l0eTogMTsKICAgICAgd2lkdGg6IDAuNjI1ZW07CiAgICAgIGhlaWdodDogMS4wNjI1ZW07CiAgICB9CgogICAgLyogSW5kZXRlcm1pbmF0ZSBjaGVja21hcmsgKi8KICAgIDpob3N0KFtpbmRldGVybWluYXRlXSkgW3BhcnQ9J2NoZWNrYm94J106OmFmdGVyIHsKICAgICAgdHJhbnNmb3JtOiBub25lOwogICAgICBvcGFjaXR5OiAxOwogICAgICB0b3A6IDQ1JTsKICAgICAgaGVpZ2h0OiAxMCU7CiAgICAgIGxlZnQ6IDIyJTsKICAgICAgcmlnaHQ6IDIyJTsKICAgICAgd2lkdGg6IGF1dG87CiAgICAgIGJvcmRlcjogMDsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbHVtby1wcmltYXJ5LWNvbnRyYXN0LWNvbG9yKTsKICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjI1czsKICAgIH0KCiAgICAvKiBGb2N1cyByaW5nICovCiAgICA6aG9zdChbZm9jdXMtcmluZ10pIFtwYXJ0PSdjaGVja2JveCddIHsKICAgICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHZhcigtLWx1bW8tcHJpbWFyeS1jb2xvci01MHBjdCk7CiAgICB9CgogICAgLyogRGlzYWJsZWQgKi8KICAgIDpob3N0KFtkaXNhYmxlZF0pIHsKICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgIGNvbG9yOiB2YXIoLS1sdW1vLWRpc2FibGVkLXRleHQtY29sb3IpOwogICAgfQoKICAgIDpob3N0KFtkaXNhYmxlZF0pIFtwYXJ0PSdsYWJlbCddIDo6c2xvdHRlZCgqKSB7CiAgICAgIGNvbG9yOiBpbmhlcml0OwogICAgfQoKICAgIDpob3N0KFtkaXNhYmxlZF0pIFtwYXJ0PSdjaGVja2JveCddIHsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbHVtby1jb250cmFzdC0xMHBjdCk7CiAgICB9CgogICAgOmhvc3QoW2Rpc2FibGVkXSkgW3BhcnQ9J2NoZWNrYm94J106OmFmdGVyIHsKICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1sdW1vLWNvbnRyYXN0LTMwcGN0KTsKICAgIH0KCiAgICA6aG9zdChbaW5kZXRlcm1pbmF0ZV1bZGlzYWJsZWRdKSBbcGFydD0nY2hlY2tib3gnXTo6YWZ0ZXIgewogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1sdW1vLWNvbnRyYXN0LTMwcGN0KTsKICAgIH0KCiAgICAvKiBSVEwgc3BlY2lmaWMgc3R5bGVzICovCiAgICA6aG9zdChbZGlyPSdydGwnXSkgW3BhcnQ9J2xhYmVsJ106bm90KFtlbXB0eV0pIHsKICAgICAgbWFyZ2luOiAwLjE4NzVlbSAwLjM3NWVtIDAuMTg3NWVtIDAuODc1ZW07CiAgICB9CgogICAgLyogVHJhbnNpdGlvbiB0aGUgY2hlY2ttYXJrIGlmIGFjdGl2YXRlZCB3aXRoIHRoZSBtb3VzZSAoZGlzYWJsZWQgZm9yIGdyaWQgc2VsZWN0LWFsbCB0aGlzIHdheSkgKi8KICAgIDpob3N0KDpob3ZlcikgW3BhcnQ9J2NoZWNrYm94J106OmFmdGVyIHsKICAgICAgdHJhbnNpdGlvbjogd2lkdGggMC4xcywgaGVpZ2h0IDAuMjVzOwogICAgfQoKICAgIC8qIFVzZWQgZm9yIGFjdGl2YXRpb24gImhhbG8iICovCiAgICBbcGFydD0nY2hlY2tib3gnXTo6YmVmb3JlIHsKICAgICAgY29sb3I6IHRyYW5zcGFyZW50OwogICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgIHdpZHRoOiAxMDAlOwogICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIGJvcmRlci1yYWRpdXM6IGluaGVyaXQ7CiAgICAgIGJhY2tncm91bmQtY29sb3I6IGluaGVyaXQ7CiAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS40KTsKICAgICAgb3BhY2l0eTogMDsKICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMXMsIG9wYWNpdHkgMC44czsKICAgIH0KCiAgICAvKiBIb3ZlciAqLwogICAgOmhvc3QoOm5vdChbY2hlY2tlZF0pOm5vdChbaW5kZXRlcm1pbmF0ZV0pOm5vdChbZGlzYWJsZWRdKTpob3ZlcikgW3BhcnQ9J2NoZWNrYm94J10gewogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1sdW1vLWNvbnRyYXN0LTMwcGN0KTsKICAgIH0KCiAgICAvKiBEaXNhYmxlIGhvdmVyIGZvciB0b3VjaCBkZXZpY2VzICovCiAgICBAbWVkaWEgKHBvaW50ZXI6IGNvYXJzZSkgewogICAgICA6aG9zdCg6bm90KFtjaGVja2VkXSk6bm90KFtpbmRldGVybWluYXRlXSk6bm90KFtkaXNhYmxlZF0pOmhvdmVyKSBbcGFydD0nY2hlY2tib3gnXSB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbHVtby1jb250cmFzdC0yMHBjdCk7CiAgICAgIH0KICAgIH0KCiAgICAvKiBBY3RpdmUgKi8KICAgIDpob3N0KFthY3RpdmVdKSBbcGFydD0nY2hlY2tib3gnXSB7CiAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC45KTsKICAgICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMC4wNXM7CiAgICB9CgogICAgOmhvc3QoW2FjdGl2ZV1bY2hlY2tlZF0pIFtwYXJ0PSdjaGVja2JveCddIHsKICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjEpOwogICAgfQoKICAgIDpob3N0KFthY3RpdmVdOm5vdChbY2hlY2tlZF0pKSBbcGFydD0nY2hlY2tib3gnXTo6YmVmb3JlIHsKICAgICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMC4wMXMsIDAuMDFzOwogICAgICB0cmFuc2Zvcm06IHNjYWxlKDApOwogICAgICBvcGFjaXR5OiAwLjQ7CiAgICB9CiAgYCx7bW9kdWxlSWQ6Imx1bW8tY2hlY2tib3gifSk7Y29uc3QgcDF0PXQ9PmNsYXNzIGV4dGVuZHMgdHtzdGF0aWMgZ2V0IHByb3BlcnRpZXMoKXtyZXR1cm57dGhlbWU6e3R5cGU6U3RyaW5nLHJlYWRPbmx5OiEwfX19YXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKHQsZSxuKXtzdXBlci5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sodCxlLG4pLCJ0aGVtZSI9PT10JiZ0aGlzLl9zZXRUaGVtZShuKX19LGYxdD10PT5jbGFzcyBleHRlbmRzKHAxdCh0KSl7c3RhdGljIGZpbmFsaXplKCl7c3VwZXIuZmluYWxpemUoKTtjb25zdCB0PXRoaXMucHJvdG90eXBlLl90ZW1wbGF0ZSxlPU9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzLnByb3RvdHlwZSkuX3RlbXBsYXRlO2UmJkFycmF5LmZyb20oZS5jb250ZW50LnF1ZXJ5U2VsZWN0b3JBbGwoInN0eWxlW2luY2x1ZGVdIikpLmZvckVhY2goKGU9Pnt0aGlzLl9pbmNsdWRlU3R5bGUoZS5nZXRBdHRyaWJ1dGUoImluY2x1ZGUiKSx0KX0pKSx0aGlzLl9pbmNsdWRlTWF0Y2hpbmdUaGVtZXModCl9c3RhdGljIF9pbmNsdWRlTWF0Y2hpbmdUaGVtZXModCl7Y29uc3QgZT1CLnByb3RvdHlwZS5tb2R1bGVzO2xldCBuPSExO2NvbnN0IGk9dGhpcy5pcysiLWRlZmF1bHQtdGhlbWUiO09iamVjdC5rZXlzKGUpLnNvcnQoKCh0LGUpPT57Y29uc3Qgbj0wPT09dC5pbmRleE9mKCJ2YWFkaW4tIiksaT0wPT09ZS5pbmRleE9mKCJ2YWFkaW4tIikscj1bImx1bW8tIiwibWF0ZXJpYWwtIl0sbz1yLmZpbHRlcigoZT0+MD09PXQuaW5kZXhPZihlKSkpLmxlbmd0aD4wLGE9ci5maWx0ZXIoKHQ9PjA9PT1lLmluZGV4T2YodCkpKS5sZW5ndGg+MDtyZXR1cm4gbiE9PWk/bj8tMToxOm8hPT1hP28/LTE6MTowfSkpLmZvckVhY2goKHI9PntpZihyIT09aSl7Y29uc3QgaT1lW3JdLmdldEF0dHJpYnV0ZSgidGhlbWUtZm9yIik7aSYmaS5zcGxpdCgiICIpLmZvckVhY2goKGU9PntuZXcgUmVnRXhwKCJeIitlLnNwbGl0KCIqIikuam9pbigiLioiKSsiJCIpLnRlc3QodGhpcy5pcykmJihuPSEwLHRoaXMuX2luY2x1ZGVTdHlsZShyLHQpKX0pKX19KSksIW4mJmVbaV0mJnRoaXMuX2luY2x1ZGVTdHlsZShpLHQpfXN0YXRpYyBfaW5jbHVkZVN0eWxlKHQsZSl7aWYoZSYmIWUuY29udGVudC5xdWVyeVNlbGVjdG9yKGBzdHlsZVtpbmNsdWRlPSIke3R9Il1gKSl7Y29uc3Qgbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO24uc2V0QXR0cmlidXRlKCJpbmNsdWRlIix0KSxlLmNvbnRlbnQuYXBwZW5kQ2hpbGQobil9fX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IChjKSAyMDIxIFZhYWRpbiBMdGQuCiAgICAgKiBUaGlzIHByb2dyYW0gaXMgYXZhaWxhYmxlIHVuZGVyIEFwYWNoZSBMaWNlbnNlIFZlcnNpb24gMi4wLCBhdmFpbGFibGUgYXQgaHR0cHM6Ly92YWFkaW4uY29tL2xpY2Vuc2UvCiAgICAgKi87bGV0IG0xdD0hMTt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsKCgpPT57bTF0PSEwfSkse2NhcHR1cmU6ITB9KSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwoKCk9PnttMXQ9ITF9KSx7Y2FwdHVyZTohMH0pO2NvbnN0IGcxdD10PT5jbGFzcyBleHRlbmRzKCh0PT5jbGFzcyBleHRlbmRzIHR7c3RhdGljIGdldCBwcm9wZXJ0aWVzKCl7cmV0dXJue3RhYmluZGV4Ont0eXBlOk51bWJlcix2YWx1ZTowLHJlZmxlY3RUb0F0dHJpYnV0ZTohMCxvYnNlcnZlcjoiX3RhYmluZGV4Q2hhbmdlZCJ9fX19KSh0KSl7c3RhdGljIGdldCBwcm9wZXJ0aWVzKCl7cmV0dXJue2F1dG9mb2N1czp7dHlwZTpCb29sZWFufSxfcHJldmlvdXNUYWJJbmRleDp7dHlwZTpOdW1iZXJ9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4sb2JzZXJ2ZXI6Il9kaXNhYmxlZENoYW5nZWQiLHJlZmxlY3RUb0F0dHJpYnV0ZTohMH0sX2lzU2hpZnRUYWJiaW5nOnt0eXBlOkJvb2xlYW59fX1yZWFkeSgpe3RoaXMuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXNpbiIsKHQ9Pnt0LmNvbXBvc2VkUGF0aCgpWzBdPT09dGhpcz90aGlzLmNvbnRhaW5zKHQucmVsYXRlZFRhcmdldCl8fHRoaXMuX2ZvY3VzKCk6LTE9PT10LmNvbXBvc2VkUGF0aCgpLmluZGV4T2YodGhpcy5mb2N1c0VsZW1lbnQpfHx0aGlzLmRpc2FibGVkfHx0aGlzLl9zZXRGb2N1c2VkKCEwKX0pKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoImZvY3Vzb3V0IiwoKCk9PnRoaXMuX3NldEZvY3VzZWQoITEpKSksc3VwZXIucmVhZHkoKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCh0PT57IXQuZGVmYXVsdFByZXZlbnRlZCYmOT09PXQua2V5Q29kZSYmdC5zaGlmdEtleSYmKHRoaXMuX2lzU2hpZnRUYWJiaW5nPSEwLEhUTUxFbGVtZW50LnByb3RvdHlwZS5mb2N1cy5hcHBseSh0aGlzKSx0aGlzLl9zZXRGb2N1c2VkKCExKSxzZXRUaW1lb3V0KCgoKT0+dGhpcy5faXNTaGlmdFRhYmJpbmc9ITEpLDApKX0pKSx0aGlzLmF1dG9mb2N1cyYmIXRoaXMuZGlzYWJsZWQmJndpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCgpPT57dGhpcy5fZm9jdXMoKSx0aGlzLl9zZXRGb2N1c2VkKCEwKSx0aGlzLnNldEF0dHJpYnV0ZSgiZm9jdXMtcmluZyIsIiIpfSkpfWRpc2Nvbm5lY3RlZENhbGxiYWNrKCl7c3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKSx0aGlzLmhhc0F0dHJpYnV0ZSgiZm9jdXNlZCIpJiZ0aGlzLl9zZXRGb2N1c2VkKCExKX1fc2V0Rm9jdXNlZCh0KXt0P3RoaXMuc2V0QXR0cmlidXRlKCJmb2N1c2VkIiwiIik6dGhpcy5yZW1vdmVBdHRyaWJ1dGUoImZvY3VzZWQiKSx0JiZtMXQ/dGhpcy5zZXRBdHRyaWJ1dGUoImZvY3VzLXJpbmciLCIiKTp0aGlzLnJlbW92ZUF0dHJpYnV0ZSgiZm9jdXMtcmluZyIpfWdldCBmb2N1c0VsZW1lbnQoKXtyZXR1cm4gd2luZG93LmNvbnNvbGUud2FybihgUGxlYXNlIGltcGxlbWVudCB0aGUgJ2ZvY3VzRWxlbWVudCcgcHJvcGVydHkgaW4gPCR7dGhpcy5sb2NhbE5hbWV9PmApLHRoaXN9X2ZvY3VzKCl7dGhpcy5mb2N1c0VsZW1lbnQmJiF0aGlzLl9pc1NoaWZ0VGFiYmluZyYmKHRoaXMuZm9jdXNFbGVtZW50LmZvY3VzKCksdGhpcy5fc2V0Rm9jdXNlZCghMCkpfWZvY3VzKCl7dGhpcy5mb2N1c0VsZW1lbnQmJiF0aGlzLmRpc2FibGVkJiYodGhpcy5mb2N1c0VsZW1lbnQuZm9jdXMoKSx0aGlzLl9zZXRGb2N1c2VkKCEwKSl9Ymx1cigpe3RoaXMuZm9jdXNFbGVtZW50JiYodGhpcy5mb2N1c0VsZW1lbnQuYmx1cigpLHRoaXMuX3NldEZvY3VzZWQoITEpKX1fZGlzYWJsZWRDaGFuZ2VkKHQpe3RoaXMuZm9jdXNFbGVtZW50LmRpc2FibGVkPXQsdD8odGhpcy5ibHVyKCksdGhpcy5fcHJldmlvdXNUYWJJbmRleD10aGlzLnRhYmluZGV4LHRoaXMudGFiaW5kZXg9LTEsdGhpcy5zZXRBdHRyaWJ1dGUoImFyaWEtZGlzYWJsZWQiLCJ0cnVlIikpOih2b2lkIDAhPT10aGlzLl9wcmV2aW91c1RhYkluZGV4JiYodGhpcy50YWJpbmRleD10aGlzLl9wcmV2aW91c1RhYkluZGV4KSx0aGlzLnJlbW92ZUF0dHJpYnV0ZSgiYXJpYS1kaXNhYmxlZCIpKX1fdGFiaW5kZXhDaGFuZ2VkKHQpe3ZvaWQgMCE9PXQmJih0aGlzLmZvY3VzRWxlbWVudC50YWJJbmRleD10KSx0aGlzLmRpc2FibGVkJiZ0aGlzLnRhYmluZGV4JiYoLTEhPT10aGlzLnRhYmluZGV4JiYodGhpcy5fcHJldmlvdXNUYWJJbmRleD10aGlzLnRhYmluZGV4KSx0aGlzLnRhYmluZGV4PXQ9dm9pZCAwKX1jbGljaygpe3RoaXMuZGlzYWJsZWR8fHN1cGVyLmNsaWNrKCl9fSxfMXQ9L1wvXCpcKlxzK3ZhYWRpbi1kZXYtbW9kZTpzdGFydChbXHNcU10qKXZhYWRpbi1kZXYtbW9kZTplbmRccytcKlwqXC8vaSx5MXQ9d2luZG93LlZhYWRpbiYmd2luZG93LlZhYWRpbi5GbG93JiZ3aW5kb3cuVmFhZGluLkZsb3cuY2xpZW50cztmdW5jdGlvbiB2MXQodCxlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdClyZXR1cm47Y29uc3Qgbj1fMXQuZXhlYyh0LnRvU3RyaW5nKCkpO2lmKG4pdHJ5e3Q9bmV3IEZ1bmN0aW9uKG5bMV0pfWNhdGNoKHQpe2NvbnNvbGUubG9nKCJ2YWFkaW4tZGV2ZWxvcG1lbnQtbW9kZS1kZXRlY3RvcjogdW5jb21tZW50QW5kUnVuKCkgZmFpbGVkIix0KX1yZXR1cm4gdChlKX13aW5kb3cuVmFhZGluPXdpbmRvdy5WYWFkaW58fHt9O2NvbnN0IGIxdD1mdW5jdGlvbih0LGUpe2lmKHdpbmRvdy5WYWFkaW4uZGV2ZWxvcG1lbnRNb2RlKXJldHVybiB2MXQodCxlKX07ZnVuY3Rpb24geDF0KCl7fXZvaWQgMD09PXdpbmRvdy5WYWFkaW4uZGV2ZWxvcG1lbnRNb2RlJiYod2luZG93LlZhYWRpbi5kZXZlbG9wbWVudE1vZGU9KGZ1bmN0aW9uIHcxdCgpe3RyeXtyZXR1cm4hIShmdW5jdGlvbiB0KCl7cmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKCJ2YWFkaW4uZGV2ZWxvcG1lbnRtb2RlLmZvcmNlIil9KSgpfHwhIShmdW5jdGlvbiBlKCl7cmV0dXJuWyJsb2NhbGhvc3QiLCIxMjcuMC4wLjEiXS5pbmRleE9mKHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSk+PTB9KSgpJiYoeTF0PyEoZnVuY3Rpb24gbigpe3JldHVybiEhKHkxdCYmT2JqZWN0LmtleXMoeTF0KS5tYXAoKHQ9PnkxdFt0XSkpLmZpbHRlcigodD0+dC5wcm9kdWN0aW9uTW9kZSkpLmxlbmd0aD4wKX0pKCk6IShmdW5jdGlvbiBpKCl7cmV0dXJuIHYxdCgoZnVuY3Rpb24gdCgpe3JldHVybiEwfSkpfSkoKSl9Y2F0Y2godCl7cmV0dXJuITF9fSkoKSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAyMSBWYWFkaW4gTHRkLgogICAgICogVGhpcyBwcm9ncmFtIGlzIGF2YWlsYWJsZSB1bmRlciBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgYXZhaWxhYmxlIGF0IGh0dHBzOi8vdmFhZGluLmNvbS9saWNlbnNlLwogICAgICovCmNsYXNzIFMxdHtzdGF0aWMgZGV0ZWN0U2Nyb2xsVHlwZSgpe2NvbnN0IHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7dC50ZXh0Q29udGVudD0iQUJDRCIsdC5kaXI9InJ0bCIsdC5zdHlsZS5mb250U2l6ZT0iMTRweCIsdC5zdHlsZS53aWR0aD0iNHB4Iix0LnN0eWxlLmhlaWdodD0iMXB4Iix0LnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIsdC5zdHlsZS50b3A9Ii0xMDAwcHgiLHQuc3R5bGUub3ZlcmZsb3c9InNjcm9sbCIsZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0KTtsZXQgZT0icmV2ZXJzZSI7cmV0dXJuIHQuc2Nyb2xsTGVmdD4wP2U9ImRlZmF1bHQiOih0LnNjcm9sbExlZnQ9Mix0LnNjcm9sbExlZnQ8MiYmKGU9Im5lZ2F0aXZlIikpLGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodCksZX1zdGF0aWMgZ2V0Tm9ybWFsaXplZFNjcm9sbExlZnQodCxlLG4pe2NvbnN0e3Njcm9sbExlZnQ6aX09bjtpZigicnRsIiE9PWV8fCF0KXJldHVybiBpO3N3aXRjaCh0KXtjYXNlIm5lZ2F0aXZlIjpyZXR1cm4gbi5zY3JvbGxXaWR0aC1uLmNsaWVudFdpZHRoK2k7Y2FzZSJyZXZlcnNlIjpyZXR1cm4gbi5zY3JvbGxXaWR0aC1uLmNsaWVudFdpZHRoLWl9cmV0dXJuIGl9c3RhdGljIHNldE5vcm1hbGl6ZWRTY3JvbGxMZWZ0KHQsZSxuLGkpe2lmKCJydGwiPT09ZSYmdClzd2l0Y2godCl7Y2FzZSJuZWdhdGl2ZSI6bi5zY3JvbGxMZWZ0PW4uY2xpZW50V2lkdGgtbi5zY3JvbGxXaWR0aCtpO2JyZWFrO2Nhc2UicmV2ZXJzZSI6bi5zY3JvbGxMZWZ0PW4uc2Nyb2xsV2lkdGgtbi5jbGllbnRXaWR0aC1pO2JyZWFrO2RlZmF1bHQ6bi5zY3JvbGxMZWZ0PWl9ZWxzZSBuLnNjcm9sbExlZnQ9aX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAyMSBWYWFkaW4gTHRkLgogICAgICogVGhpcyBwcm9ncmFtIGlzIGF2YWlsYWJsZSB1bmRlciBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgYXZhaWxhYmxlIGF0IGh0dHBzOi8vdmFhZGluLmNvbS9saWNlbnNlLwogICAgICovY29uc3QgTTF0PVtdO2xldCBFMXQ7bmV3IE11dGF0aW9uT2JzZXJ2ZXIoKGZ1bmN0aW9uKCl7Y29uc3QgdD1DMXQoKTtNMXQuZm9yRWFjaCgoZT0+e1QxdChlLHQpfSkpfSkpLm9ic2VydmUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LHthdHRyaWJ1dGVzOiEwLGF0dHJpYnV0ZUZpbHRlcjpbImRpciJdfSk7Y29uc3QgVDF0PWZ1bmN0aW9uKHQsZSxuPXQuZ2V0QXR0cmlidXRlKCJkaXIiKSl7ZT90LnNldEF0dHJpYnV0ZSgiZGlyIixlKTpudWxsIT1uJiZ0LnJlbW92ZUF0dHJpYnV0ZSgiZGlyIil9LEMxdD1mdW5jdGlvbigpe3JldHVybiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZ2V0QXR0cmlidXRlKCJkaXIiKX0sQTF0PXQ9PmNsYXNzIGV4dGVuZHMgdHtzdGF0aWMgZ2V0IHByb3BlcnRpZXMoKXtyZXR1cm57ZGlyOnt0eXBlOlN0cmluZyx2YWx1ZToiIixyZWZsZWN0VG9BdHRyaWJ1dGU6ITB9fX1zdGF0aWMgZmluYWxpemUoKXtzdXBlci5maW5hbGl6ZSgpLEUxdHx8KEUxdD1TMXQuZGV0ZWN0U2Nyb2xsVHlwZSgpKX1jb25uZWN0ZWRDYWxsYmFjaygpe3N1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCksdGhpcy5oYXNBdHRyaWJ1dGUoImRpciIpfHwodGhpcy5fX3N1YnNjcmliZSgpLFQxdCh0aGlzLEMxdCgpLG51bGwpKX1hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sodCxlLG4pe2lmKHN1cGVyLmF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayh0LGUsbiksImRpciIhPT10KXJldHVybjtjb25zdCBpPUMxdCgpLHI9bj09PWkmJi0xPT09TTF0LmluZGV4T2YodGhpcyksbz0hbiYmZSYmLTE9PT1NMXQuaW5kZXhPZih0aGlzKSxhPW4hPT1pJiZlPT09aTtyfHxvPyh0aGlzLl9fc3Vic2NyaWJlKCksVDF0KHRoaXMsaSxuKSk6YSYmdGhpcy5fX3N1YnNjcmliZSghMSl9ZGlzY29ubmVjdGVkQ2FsbGJhY2soKXtzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpLHRoaXMuX19zdWJzY3JpYmUoITEpLHRoaXMucmVtb3ZlQXR0cmlidXRlKCJkaXIiKX1fdmFsdWVUb05vZGVBdHRyaWJ1dGUodCxlLG4peygiZGlyIiE9PW58fCIiIT09ZXx8dC5oYXNBdHRyaWJ1dGUoImRpciIpKSYmc3VwZXIuX3ZhbHVlVG9Ob2RlQXR0cmlidXRlKHQsZSxuKX1fYXR0cmlidXRlVG9Qcm9wZXJ0eSh0LGUsbil7ImRpciIhPT10fHxlP3N1cGVyLl9hdHRyaWJ1dGVUb1Byb3BlcnR5KHQsZSxuKTp0aGlzLmRpcj0iIn1fX3N1YnNjcmliZSh0PSEwKXt0Py0xPT09TTF0LmluZGV4T2YodGhpcykmJk0xdC5wdXNoKHRoaXMpOk0xdC5pbmRleE9mKHRoaXMpPi0xJiZNMXQuc3BsaWNlKE0xdC5pbmRleE9mKHRoaXMpLDEpfV9fZ2V0Tm9ybWFsaXplZFNjcm9sbExlZnQodCl7cmV0dXJuIFMxdC5nZXROb3JtYWxpemVkU2Nyb2xsTGVmdChFMXQsdGhpcy5nZXRBdHRyaWJ1dGUoImRpciIpfHwibHRyIix0KX1fX3NldE5vcm1hbGl6ZWRTY3JvbGxMZWZ0KHQsZSl7cmV0dXJuIFMxdC5zZXROb3JtYWxpemVkU2Nyb2xsTGVmdChFMXQsdGhpcy5nZXRBdHRyaWJ1dGUoImRpciIpfHwibHRyIix0LGUpfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IChjKSAyMDIxIFZhYWRpbiBMdGQuCiAgICAgKiBUaGlzIHByb2dyYW0gaXMgYXZhaWxhYmxlIHVuZGVyIEFwYWNoZSBMaWNlbnNlIFZlcnNpb24gMi4wLCBhdmFpbGFibGUgYXQgaHR0cHM6Ly92YWFkaW4uY29tL2xpY2Vuc2UvCiAgICAgKi87bGV0IGsxdDt3aW5kb3cuVmFhZGluPXdpbmRvdy5WYWFkaW58fHt9LHdpbmRvdy5WYWFkaW4ucmVnaXN0cmF0aW9ucz13aW5kb3cuVmFhZGluLnJlZ2lzdHJhdGlvbnN8fFtdLHdpbmRvdy5WYWFkaW4uZGV2ZWxvcG1lbnRNb2RlQ2FsbGJhY2s9d2luZG93LlZhYWRpbi5kZXZlbG9wbWVudE1vZGVDYWxsYmFja3x8e30sd2luZG93LlZhYWRpbi5kZXZlbG9wbWVudE1vZGVDYWxsYmFja1sidmFhZGluLXVzYWdlLXN0YXRpc3RpY3MiXT1mdW5jdGlvbigpe2IxdCh4MXQpfTtjb25zdCBMMXQ9bmV3IFNldCxQMXQ9dD0+Y2xhc3MgZXh0ZW5kcyhBMXQodCkpe3N0YXRpYyBmaW5hbGl6ZSgpe3N1cGVyLmZpbmFsaXplKCk7Y29uc3R7aXM6dH09dGhpczt0JiYhTDF0Lmhhcyh0KSYmKHdpbmRvdy5WYWFkaW4ucmVnaXN0cmF0aW9ucy5wdXNoKHRoaXMpLEwxdC5hZGQodCksd2luZG93LlZhYWRpbi5kZXZlbG9wbWVudE1vZGVDYWxsYmFjayYmKGsxdD1Obi5kZWJvdW5jZShrMXQseXQsKCgpPT57d2luZG93LlZhYWRpbi5kZXZlbG9wbWVudE1vZGVDYWxsYmFja1sidmFhZGluLXVzYWdlLXN0YXRpc3RpY3MiXSgpfSkpLFJuKGsxdCkpKX1jb25zdHJ1Y3Rvcigpe3N1cGVyKCksbnVsbD09PWRvY3VtZW50LmRvY3R5cGUmJmNvbnNvbGUud2FybignVmFhZGluIGNvbXBvbmVudHMgcmVxdWlyZSB0aGUgInN0YW5kYXJkcyBtb2RlIiBkZWNsYXJhdGlvbi4gUGxlYXNlIGFkZCA8IURPQ1RZUEUgaHRtbD4gdG8gdGhlIEhUTUwgZG9jdW1lbnQuJyl9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgKGMpIDIwMjEgVmFhZGluIEx0ZC4KICAgICAqIFRoaXMgcHJvZ3JhbSBpcyBhdmFpbGFibGUgdW5kZXIgQXBhY2hlIExpY2Vuc2UgVmVyc2lvbiAyLjAsIGF2YWlsYWJsZSBhdCBodHRwczovL3ZhYWRpbi5jb20vbGljZW5zZS8KICAgICAqLztjbGFzcyBOMXQgZXh0ZW5kcyhQMXQoZzF0KGYxdChiaSh3ZSkpKSkpe3N0YXRpYyBnZXQgdGVtcGxhdGUoKXtyZXR1cm4geGVgCiAgICAgIDxzdHlsZT4KICAgICAgICA6aG9zdCB7CiAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgfQoKICAgICAgICA6aG9zdChbaGlkZGVuXSkgewogICAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgbGFiZWwgewogICAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgICAgICAgICBhbGlnbi1pdGVtczogYmFzZWxpbmU7CiAgICAgICAgICBvdXRsaW5lOiBub25lOwogICAgICAgIH0KCiAgICAgICAgW3BhcnQ9J2NoZWNrYm94J10gewogICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgICAgZmxleDogbm9uZTsKICAgICAgICB9CgogICAgICAgIGlucHV0W3R5cGU9J2NoZWNrYm94J10gewogICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgICAgdG9wOiAwOwogICAgICAgICAgbGVmdDogMDsKICAgICAgICAgIHJpZ2h0OiAwOwogICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgICAgY3Vyc29yOiBpbmhlcml0OwogICAgICAgICAgbWFyZ2luOiAwOwogICAgICAgIH0KCiAgICAgICAgOmhvc3QoW2Rpc2FibGVkXSkgewogICAgICAgICAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDsKICAgICAgICB9CiAgICAgIDwvc3R5bGU+CgogICAgICA8bGFiZWw+CiAgICAgICAgPHNwYW4gcGFydD0iY2hlY2tib3giPgogICAgICAgICAgPGlucHV0CiAgICAgICAgICAgIHR5cGU9ImNoZWNrYm94IgogICAgICAgICAgICBjaGVja2VkPSJ7e2NoZWNrZWQ6OmNoYW5nZX19IgogICAgICAgICAgICBkaXNhYmxlZCQ9IltbZGlzYWJsZWRdXSIKICAgICAgICAgICAgaW5kZXRlcm1pbmF0ZT0ie3tpbmRldGVybWluYXRlOjpjaGFuZ2V9fSIKICAgICAgICAgICAgcm9sZT0icHJlc2VudGF0aW9uIgogICAgICAgICAgICB0YWJpbmRleD0iLTEiCiAgICAgICAgICAvPgogICAgICAgIDwvc3Bhbj4KCiAgICAgICAgPHNwYW4gcGFydD0ibGFiZWwiPgogICAgICAgICAgPHNsb3Q+PC9zbG90PgogICAgICAgIDwvc3Bhbj4KICAgICAgPC9sYWJlbD4KICAgIGB9c3RhdGljIGdldCBpcygpe3JldHVybiJ2YWFkaW4tY2hlY2tib3gifXN0YXRpYyBnZXQgdmVyc2lvbigpe3JldHVybiIyMC4wLjIifXN0YXRpYyBnZXQgcHJvcGVydGllcygpe3JldHVybntjaGVja2VkOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITEsbm90aWZ5OiEwLG9ic2VydmVyOiJfY2hlY2tlZENoYW5nZWQiLHJlZmxlY3RUb0F0dHJpYnV0ZTohMH0saW5kZXRlcm1pbmF0ZTp7dHlwZTpCb29sZWFuLG5vdGlmeTohMCxvYnNlcnZlcjoiX2luZGV0ZXJtaW5hdGVDaGFuZ2VkIixyZWZsZWN0VG9BdHRyaWJ1dGU6ITAsdmFsdWU6ITF9LHZhbHVlOnt0eXBlOlN0cmluZyx2YWx1ZToib24ifSxfbmF0aXZlQ2hlY2tib3g6e3R5cGU6T2JqZWN0fX19Y29uc3RydWN0b3IoKXtzdXBlcigpfWdldCBuYW1lKCl7cmV0dXJuIHRoaXMuY2hlY2tlZD90aGlzLl9zdG9yZWROYW1lOiIifXNldCBuYW1lKHQpe3RoaXMuX3N0b3JlZE5hbWU9dH1yZWFkeSgpe3N1cGVyLnJlYWR5KCksdGhpcy5zZXRBdHRyaWJ1dGUoInJvbGUiLCJjaGVja2JveCIpLHRoaXMuX25hdGl2ZUNoZWNrYm94PXRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCdpbnB1dFt0eXBlPSJjaGVja2JveCJdJyksdGhpcy5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsdGhpcy5faGFuZGxlQ2xpY2suYmluZCh0aGlzKSksdGhpcy5fYWRkQWN0aXZlTGlzdGVuZXJzKCk7Y29uc3QgdD10aGlzLmdldEF0dHJpYnV0ZSgibmFtZSIpO3QmJih0aGlzLm5hbWU9dCksdGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoJ1twYXJ0fj0ibGFiZWwiXScpLnF1ZXJ5U2VsZWN0b3IoInNsb3QiKS5hZGRFdmVudExpc3RlbmVyKCJzbG90Y2hhbmdlIix0aGlzLl91cGRhdGVMYWJlbEF0dHJpYnV0ZS5iaW5kKHRoaXMpKSx0aGlzLl91cGRhdGVMYWJlbEF0dHJpYnV0ZSgpfV91cGRhdGVMYWJlbEF0dHJpYnV0ZSgpe2NvbnN0IHQ9dGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoJ1twYXJ0fj0ibGFiZWwiXScpLGU9dC5maXJzdEVsZW1lbnRDaGlsZC5hc3NpZ25lZE5vZGVzKCk7dGhpcy5faXNBc3NpZ25lZE5vZGVzRW1wdHkoZSk/dC5zZXRBdHRyaWJ1dGUoImVtcHR5IiwiIik6dC5yZW1vdmVBdHRyaWJ1dGUoImVtcHR5Iil9X2lzQXNzaWduZWROb2Rlc0VtcHR5KHQpe3JldHVybiAwPT09dC5sZW5ndGh8fDE9PXQubGVuZ3RoJiZ0WzBdLm5vZGVUeXBlPT1Ob2RlLlRFWFRfTk9ERSYmIiI9PT10WzBdLnRleHRDb250ZW50LnRyaW0oKX1fY2hlY2tlZENoYW5nZWQodCl7dGhpcy5zZXRBdHRyaWJ1dGUoImFyaWEtY2hlY2tlZCIsdGhpcy5pbmRldGVybWluYXRlPyJtaXhlZCI6Qm9vbGVhbih0KSl9X2luZGV0ZXJtaW5hdGVDaGFuZ2VkKHQpe3RoaXMuc2V0QXR0cmlidXRlKCJhcmlhLWNoZWNrZWQiLHQ/Im1peGVkIjp0aGlzLmNoZWNrZWQpfV9hZGRBY3RpdmVMaXN0ZW5lcnMoKXt0aGlzLl9hZGRFdmVudExpc3RlbmVyVG9Ob2RlKHRoaXMsImRvd24iLCh0PT57dGhpcy5fX2ludGVyYWN0aW9uc0FsbG93ZWQodCkmJnRoaXMuc2V0QXR0cmlidXRlKCJhY3RpdmUiLCIiKX0pKSx0aGlzLl9hZGRFdmVudExpc3RlbmVyVG9Ob2RlKHRoaXMsInVwIiwoKCk9PnRoaXMucmVtb3ZlQXR0cmlidXRlKCJhY3RpdmUiKSkpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsKHQ9Pnt0aGlzLl9faW50ZXJhY3Rpb25zQWxsb3dlZCh0KSYmMzI9PT10LmtleUNvZGUmJih0LnByZXZlbnREZWZhdWx0KCksdGhpcy5zZXRBdHRyaWJ1dGUoImFjdGl2ZSIsIiIpKX0pKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoImtleXVwIiwodD0+e3RoaXMuX19pbnRlcmFjdGlvbnNBbGxvd2VkKHQpJiYzMj09PXQua2V5Q29kZSYmKHQucHJldmVudERlZmF1bHQoKSx0aGlzLl90b2dnbGVDaGVja2VkKCksdGhpcy5yZW1vdmVBdHRyaWJ1dGUoImFjdGl2ZSIpLHRoaXMuaW5kZXRlcm1pbmF0ZSYmKHRoaXMuaW5kZXRlcm1pbmF0ZT0hMSkpfSkpfWdldCBmb2N1c0VsZW1lbnQoKXtyZXR1cm4gdGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoImlucHV0Iil9X19pbnRlcmFjdGlvbnNBbGxvd2VkKHQpe3JldHVybiF0aGlzLmRpc2FibGVkJiYiYSIhPT10LnRhcmdldC5sb2NhbE5hbWV9X2hhbmRsZUNsaWNrKHQpe3RoaXMuX19pbnRlcmFjdGlvbnNBbGxvd2VkKHQpJiYodGhpcy5pbmRldGVybWluYXRlPyh0aGlzLmluZGV0ZXJtaW5hdGU9ITEsdC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuX3RvZ2dsZUNoZWNrZWQoKSk6dC5jb21wb3NlZFBhdGgoKVswXSE9PXRoaXMuX25hdGl2ZUNoZWNrYm94JiYodC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuX3RvZ2dsZUNoZWNrZWQoKSkpfV90b2dnbGVDaGVja2VkKCl7dGhpcy5jaGVja2VkPSF0aGlzLmNoZWNrZWQsdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiY2hhbmdlIix7Y29tcG9zZWQ6ITEsYnViYmxlczohMH0pKX19Y3VzdG9tRWxlbWVudHMuZGVmaW5lKE4xdC5pcyxOMXQpLHQxdCgidmFhZGluLWdyaWQiLCRRdGAKICAgIDpob3N0IHsKICAgICAgZm9udC1mYW1pbHk6IHZhcigtLWx1bW8tZm9udC1mYW1pbHkpOwogICAgICBmb250LXNpemU6IHZhcigtLWx1bW8tZm9udC1zaXplLW0pOwogICAgICBsaW5lLWhlaWdodDogdmFyKC0tbHVtby1saW5lLWhlaWdodC1zKTsKICAgICAgY29sb3I6IHZhcigtLWx1bW8tYm9keS10ZXh0LWNvbG9yKTsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbHVtby1iYXNlLWNvbG9yKTsKICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOwogICAgICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50OwogICAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKICAgICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTsKCiAgICAgIC8qIEZvciBpbnRlcm5hbCB1c2Ugb25seSAqLwogICAgICAtLV9sdW1vLWdyaWQtYm9yZGVyLWNvbG9yOiB2YXIoLS1sdW1vLWNvbnRyYXN0LTIwcGN0KTsKICAgICAgLS1fbHVtby1ncmlkLXNlY29uZGFyeS1ib3JkZXItY29sb3I6IHZhcigtLWx1bW8tY29udHJhc3QtMTBwY3QpOwogICAgICAtLV9sdW1vLWdyaWQtYm9yZGVyLXdpZHRoOiAxcHg7CiAgICAgIC0tX2x1bW8tZ3JpZC1zZWxlY3RlZC1yb3ctY29sb3I6IHZhcigtLWx1bW8tcHJpbWFyeS1jb2xvci0xMHBjdCk7CiAgICB9CgogICAgLyogTm8gKG91dGVyKSBib3JkZXIgKi8KCiAgICA6aG9zdCg6bm90KFt0aGVtZX49J25vLWJvcmRlciddKSkgewogICAgICBib3JkZXI6IHZhcigtLV9sdW1vLWdyaWQtYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS1fbHVtby1ncmlkLWJvcmRlci1jb2xvcik7CiAgICB9CgogICAgLyogQ2VsbCBzdHlsZXMgKi8KCiAgICBbcGFydH49J2NlbGwnXSB7CiAgICAgIG1pbi1oZWlnaHQ6IHZhcigtLWx1bW8tc2l6ZS1tKTsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbHVtby1iYXNlLWNvbG9yKTsKICAgIH0KCiAgICBbcGFydH49J2NlbGwnXSA6OnNsb3R0ZWQodmFhZGluLWdyaWQtY2VsbC1jb250ZW50KSB7CiAgICAgIGN1cnNvcjogZGVmYXVsdDsKICAgICAgcGFkZGluZzogdmFyKC0tbHVtby1zcGFjZS14cykgdmFyKC0tbHVtby1zcGFjZS1tKTsKICAgIH0KCiAgICAvKiBBcHBseSByb3cgYm9yZGVycyBieSBkZWZhdWx0IGFuZCBpbnRyb2R1Y2UgdGhlICJuby1yb3ctYm9yZGVycyIgdmFyaWFudCAqLwogICAgOmhvc3QoOm5vdChbdGhlbWV+PSduby1yb3ctYm9yZGVycyddKSkgW3BhcnR+PSdjZWxsJ106bm90KFtwYXJ0fj0nZGV0YWlscy1jZWxsJ10pIHsKICAgICAgYm9yZGVyLXRvcDogdmFyKC0tX2x1bW8tZ3JpZC1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLV9sdW1vLWdyaWQtc2Vjb25kYXJ5LWJvcmRlci1jb2xvcik7CiAgICB9CgogICAgLyogSGlkZSBmaXJzdCBib2R5IHJvdyB0b3AgYm9yZGVyICovCiAgICA6aG9zdCg6bm90KFt0aGVtZX49J25vLXJvdy1ib3JkZXJzJ10pKSBbcGFydD0ncm93J11bZmlyc3RdIFtwYXJ0fj0nY2VsbCddOm5vdChbcGFydH49J2RldGFpbHMtY2VsbCddKSB7CiAgICAgIGJvcmRlci10b3A6IDA7CiAgICAgIG1pbi1oZWlnaHQ6IGNhbGModmFyKC0tbHVtby1zaXplLW0pIC0gdmFyKC0tX2x1bW8tZ3JpZC1ib3JkZXItd2lkdGgpKTsKICAgIH0KCiAgICAvKiBGb2N1cy1yaW5nICovCgogICAgW3BhcnR+PSdjZWxsJ106Zm9jdXMgewogICAgICBvdXRsaW5lOiBub25lOwogICAgfQoKICAgIDpob3N0KFtuYXZpZ2F0aW5nXSkgW3BhcnR+PSdjZWxsJ106Zm9jdXM6OmJlZm9yZSB7CiAgICAgIGNvbnRlbnQ6ICcnOwogICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgIHRvcDogMDsKICAgICAgcmlnaHQ6IDA7CiAgICAgIGJvdHRvbTogMDsKICAgICAgbGVmdDogMDsKICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDJweCB2YXIoLS1sdW1vLXByaW1hcnktY29sb3ItNTBwY3QpOwogICAgfQoKICAgIC8qIERyYWcgYW5kIERyb3Agc3R5bGVzICovCiAgICA6aG9zdChbZHJhZ292ZXJdKTo6YWZ0ZXIgewogICAgICBjb250ZW50OiAnJzsKICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICB6LWluZGV4OiAxMDA7CiAgICAgIHRvcDogMDsKICAgICAgcmlnaHQ6IDA7CiAgICAgIGJvdHRvbTogMDsKICAgICAgbGVmdDogMDsKICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDJweCB2YXIoLS1sdW1vLXByaW1hcnktY29sb3ItNTBwY3QpOwogICAgfQoKICAgIFtwYXJ0fj0ncm93J11bZHJhZ292ZXJdIHsKICAgICAgei1pbmRleDogMTAwICFpbXBvcnRhbnQ7CiAgICB9CgogICAgW3BhcnR+PSdyb3cnXVtkcmFnb3Zlcl0gW3BhcnR+PSdjZWxsJ10gewogICAgICBvdmVyZmxvdzogdmlzaWJsZTsKICAgIH0KCiAgICBbcGFydH49J3JvdyddW2RyYWdvdmVyXSBbcGFydH49J2NlbGwnXTo6YWZ0ZXIgewogICAgICBjb250ZW50OiAnJzsKICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICB0b3A6IDA7CiAgICAgIHJpZ2h0OiAwOwogICAgICBib3R0b206IDA7CiAgICAgIGxlZnQ6IDA7CiAgICAgIGhlaWdodDogY2FsYyh2YXIoLS1fbHVtby1ncmlkLWJvcmRlci13aWR0aCkgKyAycHgpOwogICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgYmFja2dyb3VuZDogdmFyKC0tbHVtby1wcmltYXJ5LWNvbG9yLTUwcGN0KTsKICAgIH0KCiAgICA6aG9zdChbdGhlbWV+PSduby1yb3ctYm9yZGVycyddKSBbZHJhZ292ZXJdIFtwYXJ0fj0nY2VsbCddOjphZnRlciB7CiAgICAgIGhlaWdodDogMnB4OwogICAgfQoKICAgIFtwYXJ0fj0ncm93J11bZHJhZ292ZXI9J2JlbG93J10gW3BhcnR+PSdjZWxsJ106OmFmdGVyIHsKICAgICAgdG9wOiAxMDAlOwogICAgICBib3R0b206IGF1dG87CiAgICAgIG1hcmdpbi10b3A6IC0xcHg7CiAgICB9CgogICAgW3BhcnR+PSdyb3cnXVtkcmFnb3Zlcj0nYWJvdmUnXSBbcGFydH49J2NlbGwnXTo6YWZ0ZXIgewogICAgICB0b3A6IGF1dG87CiAgICAgIGJvdHRvbTogMTAwJTsKICAgICAgbWFyZ2luLWJvdHRvbTogLTFweDsKICAgIH0KCiAgICBbcGFydH49J3JvdyddW2RldGFpbHMtb3BlbmVkXVtkcmFnb3Zlcj0nYmVsb3cnXSBbcGFydH49J2NlbGwnXTpub3QoW3BhcnR+PSdkZXRhaWxzLWNlbGwnXSk6OmFmdGVyLAogICAgW3BhcnR+PSdyb3cnXVtkZXRhaWxzLW9wZW5lZF1bZHJhZ292ZXI9J2Fib3ZlJ10gW3BhcnR+PSdkZXRhaWxzLWNlbGwnXTo6YWZ0ZXIgewogICAgICBkaXNwbGF5OiBub25lOwogICAgfQoKICAgIFtwYXJ0fj0ncm93J11bZHJhZ292ZXJdW2RyYWdvdmVyPSdvbi10b3AnXSBbcGFydH49J2NlbGwnXTo6YWZ0ZXIgewogICAgICBoZWlnaHQ6IDEwMCU7CiAgICB9CgogICAgW3BhcnR+PSdyb3cnXVtkcmFnc3RhcnRdIHsKICAgICAgLyogQWRkIGJvdHRvbS1zcGFjZSB0byB0aGUgcm93IHNvIHRoZSBkcmFnIG51bWJlciBkb2Vzbid0IGdldCBjbGlwcGVkLiBOZWVkZWQgZm9yIElFL0VkZ2UgKi8KICAgICAgYm9yZGVyLWJvdHRvbTogMTAwcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgICAgIHotaW5kZXg6IDEwMCAhaW1wb3J0YW50OwogICAgICBvcGFjaXR5OiAwLjk7CiAgICB9CgogICAgW3BhcnR+PSdyb3cnXVtkcmFnc3RhcnRdIFtwYXJ0fj0nY2VsbCddIHsKICAgICAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7CiAgICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDsKICAgIH0KCiAgICBbcGFydH49J3JvdyddW2RyYWdzdGFydF0gW3BhcnR+PSdjZWxsJ11bbGFzdC1jb2x1bW5dIHsKICAgICAgYm9yZGVyLXJhZGl1czogMCB2YXIoLS1sdW1vLWJvcmRlci1yYWRpdXMtcykgdmFyKC0tbHVtby1ib3JkZXItcmFkaXVzLXMpIDA7CiAgICB9CgogICAgW3BhcnR+PSdyb3cnXVtkcmFnc3RhcnRdIFtwYXJ0fj0nY2VsbCddW2ZpcnN0LWNvbHVtbl0gewogICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1sdW1vLWJvcmRlci1yYWRpdXMtcykgMCAwIHZhcigtLWx1bW8tYm9yZGVyLXJhZGl1cy1zKTsKICAgIH0KCiAgICBbaW9zXSBbcGFydH49J3JvdyddW2RyYWdzdGFydF0gW3BhcnR+PSdjZWxsJ10gewogICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1sdW1vLXByaW1hcnktY29sb3ItNTBwY3QpOwogICAgfQoKICAgICNzY3JvbGxlcjpub3QoW2lvc10pIFtwYXJ0fj0ncm93J11bZHJhZ3N0YXJ0XTpub3QoW2RyYWdzdGFydD0nJ10pOjphZnRlciB7CiAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgIGxlZnQ6IHZhcigtLV9ncmlkLWRyYWctc3RhcnQteCk7CiAgICAgIHRvcDogdmFyKC0tX2dyaWQtZHJhZy1zdGFydC15KTsKICAgICAgei1pbmRleDogMTAwOwogICAgICBjb250ZW50OiBhdHRyKGRyYWdzdGFydCk7CiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICBwYWRkaW5nOiBjYWxjKHZhcigtLWx1bW8tc3BhY2UteHMpICogMC44KTsKICAgICAgY29sb3I6IHZhcigtLWx1bW8tZXJyb3ItY29udHJhc3QtY29sb3IpOwogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1sdW1vLWVycm9yLWNvbG9yKTsKICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tbHVtby1ib3JkZXItcmFkaXVzLW0pOwogICAgICBmb250LWZhbWlseTogdmFyKC0tbHVtby1mb250LWZhbWlseSk7CiAgICAgIGZvbnQtc2l6ZTogdmFyKC0tbHVtby1mb250LXNpemUteHhzKTsKICAgICAgbGluZS1oZWlnaHQ6IDE7CiAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgIHRleHQtdHJhbnNmb3JtOiBpbml0aWFsOwogICAgICBsZXR0ZXItc3BhY2luZzogaW5pdGlhbDsKICAgICAgbWluLXdpZHRoOiBjYWxjKHZhcigtLWx1bW8tc2l6ZS1zKSAqIDAuNyk7CiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIH0KCiAgICAvKiBIZWFkZXJzIGFuZCBmb290ZXJzICovCgogICAgW3BhcnR+PSdoZWFkZXItY2VsbCddIDo6c2xvdHRlZCh2YWFkaW4tZ3JpZC1jZWxsLWNvbnRlbnQpLAogICAgW3BhcnR+PSdmb290ZXItY2VsbCddIDo6c2xvdHRlZCh2YWFkaW4tZ3JpZC1jZWxsLWNvbnRlbnQpLAogICAgW3BhcnR+PSdyZW9yZGVyLWdob3N0J10gewogICAgICBmb250LXNpemU6IHZhcigtLWx1bW8tZm9udC1zaXplLXMpOwogICAgICBmb250LXdlaWdodDogNTAwOwogICAgfQoKICAgIFtwYXJ0fj0nZm9vdGVyLWNlbGwnXSA6OnNsb3R0ZWQodmFhZGluLWdyaWQtY2VsbC1jb250ZW50KSB7CiAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICB9CgogICAgW3BhcnQ9J3JvdyddOm9ubHktY2hpbGQgW3BhcnR+PSdoZWFkZXItY2VsbCddIHsKICAgICAgbWluLWhlaWdodDogdmFyKC0tbHVtby1zaXplLXhsKTsKICAgIH0KCiAgICAvKiBIZWFkZXIgYm9yZGVycyAqLwoKICAgIC8qIEhpZGUgZmlyc3QgaGVhZGVyIHJvdyB0b3AgYm9yZGVyICovCiAgICA6aG9zdCg6bm90KFt0aGVtZX49J25vLXJvdy1ib3JkZXJzJ10pKSBbcGFydD0ncm93J106Zmlyc3QtY2hpbGQgW3BhcnR+PSdoZWFkZXItY2VsbCddIHsKICAgICAgYm9yZGVyLXRvcDogMDsKICAgIH0KCiAgICBbcGFydD0ncm93J106bGFzdC1jaGlsZCBbcGFydH49J2hlYWRlci1jZWxsJ10gewogICAgICBib3JkZXItYm90dG9tOiB2YXIoLS1fbHVtby1ncmlkLWJvcmRlci13aWR0aCkgc29saWQgdHJhbnNwYXJlbnQ7CiAgICB9CgogICAgOmhvc3QoOm5vdChbdGhlbWV+PSduby1yb3ctYm9yZGVycyddKSkgW3BhcnQ9J3JvdyddOmxhc3QtY2hpbGQgW3BhcnR+PSdoZWFkZXItY2VsbCddIHsKICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdmFyKC0tX2x1bW8tZ3JpZC1zZWNvbmRhcnktYm9yZGVyLWNvbG9yKTsKICAgIH0KCiAgICAvKiBPdmVyZmxvdyB1c2VzIGEgc3Ryb25nZXIgYm9yZGVyIGNvbG9yICovCiAgICA6aG9zdChbb3ZlcmZsb3d+PSd0b3AnXSkgW3BhcnQ9J3JvdyddOmxhc3QtY2hpbGQgW3BhcnR+PSdoZWFkZXItY2VsbCddIHsKICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdmFyKC0tX2x1bW8tZ3JpZC1ib3JkZXItY29sb3IpOwogICAgfQoKICAgIC8qIEZvb3RlciBib3JkZXJzICovCgogICAgW3BhcnQ9J3JvdyddOmZpcnN0LWNoaWxkIFtwYXJ0fj0nZm9vdGVyLWNlbGwnXSB7CiAgICAgIGJvcmRlci10b3A6IHZhcigtLV9sdW1vLWdyaWQtYm9yZGVyLXdpZHRoKSBzb2xpZCB0cmFuc3BhcmVudDsKICAgIH0KCiAgICA6aG9zdCg6bm90KFt0aGVtZX49J25vLXJvdy1ib3JkZXJzJ10pKSBbcGFydD0ncm93J106Zmlyc3QtY2hpbGQgW3BhcnR+PSdmb290ZXItY2VsbCddIHsKICAgICAgYm9yZGVyLXRvcC1jb2xvcjogdmFyKC0tX2x1bW8tZ3JpZC1zZWNvbmRhcnktYm9yZGVyLWNvbG9yKTsKICAgIH0KCiAgICAvKiBPdmVyZmxvdyB1c2VzIGEgc3Ryb25nZXIgYm9yZGVyIGNvbG9yICovCiAgICA6aG9zdChbb3ZlcmZsb3d+PSdib3R0b20nXSkgW3BhcnQ9J3JvdyddOmZpcnN0LWNoaWxkIFtwYXJ0fj0nZm9vdGVyLWNlbGwnXSB7CiAgICAgIGJvcmRlci10b3AtY29sb3I6IHZhcigtLV9sdW1vLWdyaWQtYm9yZGVyLWNvbG9yKTsKICAgIH0KCiAgICAvKiBDb2x1bW4gcmVvcmRlcmluZyAqLwoKICAgIDpob3N0KFtyZW9yZGVyaW5nXSkgW3BhcnR+PSdjZWxsJ10gewogICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodmFyKC0tbHVtby1zaGFkZS0yMHBjdCksIHZhcigtLWx1bW8tc2hhZGUtMjBwY3QpKSB2YXIoLS1sdW1vLWJhc2UtY29sb3IpOwogICAgfQoKICAgIDpob3N0KFtyZW9yZGVyaW5nXSkgW3BhcnR+PSdjZWxsJ11bcmVvcmRlci1zdGF0dXM9J2FsbG93ZWQnXSB7CiAgICAgIGJhY2tncm91bmQ6IHZhcigtLWx1bW8tYmFzZS1jb2xvcik7CiAgICB9CgogICAgOmhvc3QoW3Jlb3JkZXJpbmddKSBbcGFydH49J2NlbGwnXVtyZW9yZGVyLXN0YXR1cz0nZHJhZ2dpbmcnXSB7CiAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh2YXIoLS1sdW1vLWNvbnRyYXN0LTVwY3QpLCB2YXIoLS1sdW1vLWNvbnRyYXN0LTVwY3QpKSB2YXIoLS1sdW1vLWJhc2UtY29sb3IpOwogICAgfQoKICAgIFtwYXJ0fj0ncmVvcmRlci1naG9zdCddIHsKICAgICAgb3BhY2l0eTogMC44NTsKICAgICAgYm94LXNoYWRvdzogdmFyKC0tbHVtby1ib3gtc2hhZG93LXMpOwogICAgICAvKiBUT0RPIFVzZSB0aGUgc2FtZSBzdHlsZXMgYXMgZm9yIHRoZSBjZWxsIGVsZW1lbnQgKHJlb3JkZXItZ2hvc3QgY29waWVzIHN0eWxlcyBmcm9tIHRoZSBjZWxsIGVsZW1lbnQpICovCiAgICAgIHBhZGRpbmc6IHZhcigtLWx1bW8tc3BhY2UtcykgdmFyKC0tbHVtby1zcGFjZS1tKSAhaW1wb3J0YW50OwogICAgfQoKICAgIC8qIENvbHVtbiByZXNpemluZyAqLwoKICAgIFtwYXJ0PSdyZXNpemUtaGFuZGxlJ10gewogICAgICB3aWR0aDogM3B4OwogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1sdW1vLXByaW1hcnktY29sb3ItNTBwY3QpOwogICAgICBvcGFjaXR5OiAwOwogICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnM7CiAgICB9CgogICAgOmhvc3QoOm5vdChbcmVvcmRlcmluZ10pKSAqOm5vdChbY29sdW1uLXJlc2l6aW5nXSkgW3BhcnR+PSdjZWxsJ106aG92ZXIgW3BhcnQ9J3Jlc2l6ZS1oYW5kbGUnXSwKICAgIFtwYXJ0PSdyZXNpemUtaGFuZGxlJ106YWN0aXZlIHsKICAgICAgb3BhY2l0eTogMTsKICAgICAgdHJhbnNpdGlvbi1kZWxheTogMC4xNXM7CiAgICB9CgogICAgLyogQ29sdW1uIGJvcmRlcnMgKi8KCiAgICA6aG9zdChbdGhlbWV+PSdjb2x1bW4tYm9yZGVycyddKSBbcGFydH49J2NlbGwnXTpub3QoW2xhc3QtY29sdW1uXSk6bm90KFtwYXJ0fj0nZGV0YWlscy1jZWxsJ10pIHsKICAgICAgYm9yZGVyLXJpZ2h0OiB2YXIoLS1fbHVtby1ncmlkLWJvcmRlci13aWR0aCkgc29saWQgdmFyKC0tX2x1bW8tZ3JpZC1zZWNvbmRhcnktYm9yZGVyLWNvbG9yKTsKICAgIH0KCiAgICAvKiBGcm96ZW4gY29sdW1ucyAqLwoKICAgIFtsYXN0LWZyb3plbl0gewogICAgICBib3JkZXItcmlnaHQ6IHZhcigtLV9sdW1vLWdyaWQtYm9yZGVyLXdpZHRoKSBzb2xpZCB0cmFuc3BhcmVudDsKICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIH0KCiAgICA6aG9zdChbb3ZlcmZsb3d+PSdsZWZ0J10pIFtwYXJ0fj0nY2VsbCddW2xhc3QtZnJvemVuXTpub3QoW3BhcnR+PSdkZXRhaWxzLWNlbGwnXSkgewogICAgICBib3JkZXItcmlnaHQtY29sb3I6IHZhcigtLV9sdW1vLWdyaWQtYm9yZGVyLWNvbG9yKTsKICAgIH0KCiAgICAvKiBSb3cgc3RyaXBlcyAqLwoKICAgIDpob3N0KFt0aGVtZX49J3Jvdy1zdHJpcGVzJ10pIFtwYXJ0fj0ncm93J106bm90KFtvZGRdKSBbcGFydH49J2JvZHktY2VsbCddLAogICAgOmhvc3QoW3RoZW1lfj0ncm93LXN0cmlwZXMnXSkgW3BhcnR+PSdyb3cnXTpub3QoW29kZF0pIFtwYXJ0fj0nZGV0YWlscy1jZWxsJ10gewogICAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodmFyKC0tbHVtby1jb250cmFzdC01cGN0KSwgdmFyKC0tbHVtby1jb250cmFzdC01cGN0KSk7CiAgICAgIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDsKICAgIH0KCiAgICAvKiBTZWxlY3RlZCByb3cgKi8KCiAgICAvKiBSYWlzZSB0aGUgc2VsZWN0ZWQgcm93cyBhYm92ZSB1bnNlbGVjdGVkIHJvd3MgKHNvIHRoYXQgYm94LXNoYWRvdyBjYW4gY292ZXIgdW5zZWxlY3RlZCByb3dzKSAqLwogICAgOmhvc3QoOm5vdChbcmVvcmRlcmluZ10pKSBbcGFydH49J3JvdyddW3NlbGVjdGVkXSB7CiAgICAgIHotaW5kZXg6IDE7CiAgICB9CgogICAgOmhvc3QoOm5vdChbcmVvcmRlcmluZ10pKSBbcGFydH49J3JvdyddW3NlbGVjdGVkXSBbcGFydH49J2JvZHktY2VsbCddOm5vdChbcGFydH49J2RldGFpbHMtY2VsbCddKSB7CiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh2YXIoLS1fbHVtby1ncmlkLXNlbGVjdGVkLXJvdy1jb2xvciksIHZhcigtLV9sdW1vLWdyaWQtc2VsZWN0ZWQtcm93LWNvbG9yKSk7CiAgICAgIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQ7CiAgICB9CgogICAgLyogQ292ZXIgdGhlIGJvcmRlciBvZiBhbiB1bnNlbGVjdGVkIHJvdyAqLwogICAgOmhvc3QoOm5vdChbdGhlbWV+PSduby1yb3ctYm9yZGVycyddKSkgW3BhcnR+PSdyb3cnXVtzZWxlY3RlZF0gW3BhcnR+PSdjZWxsJ106bm90KFtwYXJ0fj0nZGV0YWlscy1jZWxsJ10pIHsKICAgICAgYm94LXNoYWRvdzogMCB2YXIoLS1fbHVtby1ncmlkLWJvcmRlci13aWR0aCkgMCAwIHZhcigtLV9sdW1vLWdyaWQtc2VsZWN0ZWQtcm93LWNvbG9yKTsKICAgIH0KCiAgICAvKiBDb21wYWN0ICovCgogICAgOmhvc3QoW3RoZW1lfj0nY29tcGFjdCddKSBbcGFydD0ncm93J106b25seS1jaGlsZCBbcGFydH49J2hlYWRlci1jZWxsJ10gewogICAgICBtaW4taGVpZ2h0OiB2YXIoLS1sdW1vLXNpemUtbSk7CiAgICB9CgogICAgOmhvc3QoW3RoZW1lfj0nY29tcGFjdCddKSBbcGFydH49J2NlbGwnXSB7CiAgICAgIG1pbi1oZWlnaHQ6IHZhcigtLWx1bW8tc2l6ZS1zKTsKICAgIH0KCiAgICA6aG9zdChbdGhlbWV+PSdjb21wYWN0J10pIFtwYXJ0PSdyb3cnXVtmaXJzdF0gW3BhcnR+PSdjZWxsJ106bm90KFtwYXJ0fj0nZGV0YWlscy1jZWxsJ10pIHsKICAgICAgbWluLWhlaWdodDogY2FsYyh2YXIoLS1sdW1vLXNpemUtcykgLSB2YXIoLS1fbHVtby1ncmlkLWJvcmRlci13aWR0aCkpOwogICAgfQoKICAgIDpob3N0KFt0aGVtZX49J2NvbXBhY3QnXSkgW3BhcnR+PSdjZWxsJ10gOjpzbG90dGVkKHZhYWRpbi1ncmlkLWNlbGwtY29udGVudCkgewogICAgICBwYWRkaW5nOiB2YXIoLS1sdW1vLXNwYWNlLXhzKSB2YXIoLS1sdW1vLXNwYWNlLXMpOwogICAgfQoKICAgIC8qIFdyYXAgY2VsbCBjb250ZW50cyAqLwoKICAgIDpob3N0KFt0aGVtZX49J3dyYXAtY2VsbC1jb250ZW50J10pIFtwYXJ0fj0nY2VsbCddIDo6c2xvdHRlZCh2YWFkaW4tZ3JpZC1jZWxsLWNvbnRlbnQpIHsKICAgICAgd2hpdGUtc3BhY2U6IG5vcm1hbDsKICAgIH0KCiAgICAvKiBSVEwgc3BlY2lmaWMgc3R5bGVzICovCgogICAgOmhvc3QoW2Rpcj0ncnRsJ10pIFtwYXJ0fj0ncm93J11bZHJhZ3N0YXJ0XSBbcGFydH49J2NlbGwnXVtsYXN0LWNvbHVtbl0gewogICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1sdW1vLWJvcmRlci1yYWRpdXMtcykgMCAwIHZhcigtLWx1bW8tYm9yZGVyLXJhZGl1cy1zKTsKICAgIH0KCiAgICA6aG9zdChbZGlyPSdydGwnXSkgW3BhcnR+PSdyb3cnXVtkcmFnc3RhcnRdIFtwYXJ0fj0nY2VsbCddW2ZpcnN0LWNvbHVtbl0gewogICAgICBib3JkZXItcmFkaXVzOiAwIHZhcigtLWx1bW8tYm9yZGVyLXJhZGl1cy1zKSB2YXIoLS1sdW1vLWJvcmRlci1yYWRpdXMtcykgMDsKICAgIH0KCiAgICA6aG9zdChbZGlyPSdydGwnXVt0aGVtZX49J2NvbHVtbi1ib3JkZXJzJ10pIFtwYXJ0fj0nY2VsbCddOm5vdChbbGFzdC1jb2x1bW5dKTpub3QoW3BhcnR+PSdkZXRhaWxzLWNlbGwnXSkgewogICAgICBib3JkZXItcmlnaHQ6IG5vbmU7CiAgICAgIGJvcmRlci1sZWZ0OiB2YXIoLS1fbHVtby1ncmlkLWJvcmRlci13aWR0aCkgc29saWQgdmFyKC0tX2x1bW8tZ3JpZC1zZWNvbmRhcnktYm9yZGVyLWNvbG9yKTsKICAgIH0KCiAgICA6aG9zdChbZGlyPSdydGwnXSkgW2xhc3QtZnJvemVuXSB7CiAgICAgIGJvcmRlci1yaWdodDogbm9uZTsKICAgICAgYm9yZGVyLWxlZnQ6IHZhcigtLV9sdW1vLWdyaWQtYm9yZGVyLXdpZHRoKSBzb2xpZCB0cmFuc3BhcmVudDsKICAgIH0KCiAgICA6aG9zdChbZGlyPSdydGwnXVtvdmVyZmxvd349J3JpZ2h0J10pIFtwYXJ0fj0nY2VsbCddW2xhc3QtZnJvemVuXTpub3QoW3BhcnR+PSdkZXRhaWxzLWNlbGwnXSkgewogICAgICBib3JkZXItbGVmdC1jb2xvcjogdmFyKC0tX2x1bW8tZ3JpZC1ib3JkZXItY29sb3IpOwogICAgfQogIGAse21vZHVsZUlkOiJsdW1vLWdyaWQifSksdDF0KCJ2YWFkaW4tY2hlY2tib3giLCRRdGAKICAgIDpob3N0KC52YWFkaW4tZ3JpZC1zZWxlY3QtYWxsLWNoZWNrYm94KSB7CiAgICAgIGZvbnQtc2l6ZTogdmFyKC0tbHVtby1mb250LXNpemUtbSk7CiAgICB9CiAgYCx7bW9kdWxlSWQ6InZhYWRpbi1ncmlkLXNlbGVjdC1hbGwtY2hlY2tib3gtbHVtbyJ9KTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE2IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KY29uc3QgSTF0PW5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL2lQKD86aG9uZXxhZDsoPzogVTspPyBDUFUpIE9TIChcZCspLyksUjF0PUkxdCYmSTF0WzFdPj04LE8xdD1Vcih7YmVoYXZpb3JzOltDbywkb10sX3JhdGlvOi41LF9zY3JvbGxlclBhZGRpbmdUb3A6MCxfc2Nyb2xsUG9zaXRpb246MCxfcGh5c2ljYWxTaXplOjAsX3BoeXNpY2FsQXZlcmFnZTowLF9waHlzaWNhbEF2ZXJhZ2VDb3VudDowLF9waHlzaWNhbFRvcDowLF92aXJ0dWFsQ291bnQ6MCxfZXN0U2Nyb2xsSGVpZ2h0OjAsX3Njcm9sbEhlaWdodDowLF92aWV3cG9ydEhlaWdodDowLF92aWV3cG9ydFdpZHRoOjAsX3BoeXNpY2FsSXRlbXM6bnVsbCxfcGh5c2ljYWxTaXplczpudWxsLF9maXJzdFZpc2libGVJbmRleFZhbDpudWxsLF9sYXN0VmlzaWJsZUluZGV4VmFsOm51bGwsX21heFBhZ2VzOjIsX2ZvY3VzZWRWaXJ0dWFsSW5kZXg6LTEsX3RlbXBsYXRlQ29zdDowLGdldCBfcGh5c2ljYWxCb3R0b20oKXtyZXR1cm4gdGhpcy5fcGh5c2ljYWxUb3ArdGhpcy5fcGh5c2ljYWxTaXplfSxnZXQgX3Njcm9sbEJvdHRvbSgpe3JldHVybiB0aGlzLl9zY3JvbGxQb3NpdGlvbit0aGlzLl92aWV3cG9ydEhlaWdodH0sZ2V0IF92aXJ0dWFsRW5kKCl7cmV0dXJuIHRoaXMuX3ZpcnR1YWxTdGFydCt0aGlzLl9waHlzaWNhbENvdW50LTF9LGdldCBfaGlkZGVuQ29udGVudFNpemUoKXtyZXR1cm4gdGhpcy5fcGh5c2ljYWxTaXplLXRoaXMuX3ZpZXdwb3J0SGVpZ2h0fSxnZXQgX21heFNjcm9sbFRvcCgpe3JldHVybiB0aGlzLl9lc3RTY3JvbGxIZWlnaHQtdGhpcy5fdmlld3BvcnRIZWlnaHQrdGhpcy5fc2Nyb2xsT2Zmc2V0fSxnZXQgX21heFZpcnR1YWxTdGFydCgpe3JldHVybiBNYXRoLm1heCgwLHRoaXMuX3ZpcnR1YWxDb3VudC10aGlzLl9waHlzaWNhbENvdW50KX0sc2V0IF92aXJ0dWFsU3RhcnQodCl7dD10aGlzLl9jbGFtcCh0LDAsdGhpcy5fbWF4VmlydHVhbFN0YXJ0KSx0aGlzLl92aXJ0dWFsU3RhcnRWYWw9dH0sZ2V0IF92aXJ0dWFsU3RhcnQoKXtyZXR1cm4gdGhpcy5fdmlydHVhbFN0YXJ0VmFsfHwwfSxzZXQgX3BoeXNpY2FsU3RhcnQodCl7KHQlPXRoaXMuX3BoeXNpY2FsQ291bnQpPDAmJih0PXRoaXMuX3BoeXNpY2FsQ291bnQrdCksdGhpcy5fcGh5c2ljYWxTdGFydFZhbD10fSxnZXQgX3BoeXNpY2FsU3RhcnQoKXtyZXR1cm4gdGhpcy5fcGh5c2ljYWxTdGFydFZhbHx8MH0sZ2V0IF9waHlzaWNhbEVuZCgpe3JldHVybih0aGlzLl9waHlzaWNhbFN0YXJ0K3RoaXMuX3BoeXNpY2FsQ291bnQtMSkldGhpcy5fcGh5c2ljYWxDb3VudH0sc2V0IF9waHlzaWNhbENvdW50KHQpe3RoaXMuX3BoeXNpY2FsQ291bnRWYWw9dH0sZ2V0IF9waHlzaWNhbENvdW50KCl7cmV0dXJuIHRoaXMuX3BoeXNpY2FsQ291bnRWYWx8fDB9LGdldCBfb3B0UGh5c2ljYWxTaXplKCl7cmV0dXJuIDA9PT10aGlzLl92aWV3cG9ydEhlaWdodD8xLzA6dGhpcy5fdmlld3BvcnRIZWlnaHQqdGhpcy5fbWF4UGFnZXN9LGdldCBfaXNWaXNpYmxlKCl7cmV0dXJuIEJvb2xlYW4odGhpcy5vZmZzZXRXaWR0aHx8dGhpcy5vZmZzZXRIZWlnaHQpfSxnZXQgZmlyc3RWaXNpYmxlSW5kZXgoKXtsZXQgdD10aGlzLl9maXJzdFZpc2libGVJbmRleFZhbDtpZihudWxsPT10KXtsZXQgZT10aGlzLl9waHlzaWNhbFRvcCt0aGlzLl9zY3JvbGxPZmZzZXQ7dD10aGlzLl9pdGVyYXRlSXRlbXMoKGZ1bmN0aW9uKHQsbil7aWYoZSs9dGhpcy5fcGh5c2ljYWxTaXplc1t0XSxlPnRoaXMuX3Njcm9sbFBvc2l0aW9uKXJldHVybiBufSkpfHwwLHRoaXMuX2ZpcnN0VmlzaWJsZUluZGV4VmFsPXR9cmV0dXJuIHR9LGdldCBsYXN0VmlzaWJsZUluZGV4KCl7bGV0IHQ9dGhpcy5fbGFzdFZpc2libGVJbmRleFZhbDtpZihudWxsPT10KXtsZXQgZT10aGlzLl9waHlzaWNhbFRvcCt0aGlzLl9zY3JvbGxPZmZzZXQ7dGhpcy5faXRlcmF0ZUl0ZW1zKChmdW5jdGlvbihuLGkpe2U8dGhpcy5fc2Nyb2xsQm90dG9tJiYodD1pKSxlKz10aGlzLl9waHlzaWNhbFNpemVzW25dfSkpLHRoaXMuX2xhc3RWaXNpYmxlSW5kZXhWYWw9dH1yZXR1cm4gdH0sZ2V0IF9zY3JvbGxPZmZzZXQoKXtyZXR1cm4gdGhpcy5fc2Nyb2xsZXJQYWRkaW5nVG9wfSxhdHRhY2hlZDpmdW5jdGlvbigpe3RoaXMuX2RlYm91bmNlKCJfcmVuZGVyIix0aGlzLl9yZW5kZXIsX3QpLHRoaXMubGlzdGVuKHRoaXMsImlyb24tcmVzaXplIiwiX3Jlc2l6ZUhhbmRsZXIiKX0sZGV0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLnVubGlzdGVuKHRoaXMsImlyb24tcmVzaXplIiwiX3Jlc2l6ZUhhbmRsZXIiKX0sdXBkYXRlVmlld3BvcnRCb3VuZGFyaWVzOmZ1bmN0aW9uKCl7Y29uc3QgdD13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzKTt0aGlzLl9zY3JvbGxlclBhZGRpbmdUb3A9dGhpcy5zY3JvbGxUYXJnZXQ9PT10aGlzPzA6cGFyc2VJbnQodFsicGFkZGluZy10b3AiXSwxMCksdGhpcy5faXNSVEw9Qm9vbGVhbigicnRsIj09PXQuZGlyZWN0aW9uKSx0aGlzLl92aWV3cG9ydFdpZHRoPXRoaXMuJC5pdGVtcy5vZmZzZXRXaWR0aCx0aGlzLl92aWV3cG9ydEhlaWdodD10aGlzLl9zY3JvbGxUYXJnZXRIZWlnaHR9LF9zY3JvbGxIYW5kbGVyOmZ1bmN0aW9uKCl7Y29uc3QgdD1NYXRoLm1heCgwLE1hdGgubWluKHRoaXMuX21heFNjcm9sbFRvcCx0aGlzLl9zY3JvbGxUb3ApKTtsZXQgZT10LXRoaXMuX3Njcm9sbFBvc2l0aW9uO2NvbnN0IG49ZT49MDtpZih0aGlzLl9zY3JvbGxQb3NpdGlvbj10LHRoaXMuX2ZpcnN0VmlzaWJsZUluZGV4VmFsPW51bGwsdGhpcy5fbGFzdFZpc2libGVJbmRleFZhbD1udWxsLE1hdGguYWJzKGUpPnRoaXMuX3BoeXNpY2FsU2l6ZSYmdGhpcy5fcGh5c2ljYWxTaXplPjApe2UtPXRoaXMuX3Njcm9sbE9mZnNldDtjb25zdCB0PU1hdGgucm91bmQoZS90aGlzLl9waHlzaWNhbEF2ZXJhZ2UpO3RoaXMuX3ZpcnR1YWxTdGFydD10aGlzLl92aXJ0dWFsU3RhcnQrdCx0aGlzLl9waHlzaWNhbFN0YXJ0PXRoaXMuX3BoeXNpY2FsU3RhcnQrdCx0aGlzLl9waHlzaWNhbFRvcD1NYXRoLmZsb29yKHRoaXMuX3ZpcnR1YWxTdGFydCkqdGhpcy5fcGh5c2ljYWxBdmVyYWdlLHRoaXMuX3VwZGF0ZSgpfWVsc2UgaWYodGhpcy5fcGh5c2ljYWxDb3VudD4wKXtjb25zdHtwaHlzaWNhbFRvcDp0LGluZGV4ZXM6ZX09dGhpcy5fZ2V0UmV1c2FibGVzKG4pO24/KHRoaXMuX3BoeXNpY2FsVG9wPXQsdGhpcy5fdmlydHVhbFN0YXJ0PXRoaXMuX3ZpcnR1YWxTdGFydCtlLmxlbmd0aCx0aGlzLl9waHlzaWNhbFN0YXJ0PXRoaXMuX3BoeXNpY2FsU3RhcnQrZS5sZW5ndGgpOih0aGlzLl92aXJ0dWFsU3RhcnQ9dGhpcy5fdmlydHVhbFN0YXJ0LWUubGVuZ3RoLHRoaXMuX3BoeXNpY2FsU3RhcnQ9dGhpcy5fcGh5c2ljYWxTdGFydC1lLmxlbmd0aCksdGhpcy5fdXBkYXRlKGUsbj9udWxsOmUpLHRoaXMuX2RlYm91bmNlKCJfaW5jcmVhc2VQb29sSWZOZWVkZWQiLHRoaXMuX2luY3JlYXNlUG9vbElmTmVlZGVkLmJpbmQodGhpcywwKSx2dCl9fSxfZ2V0UmV1c2FibGVzOmZ1bmN0aW9uKHQpe2xldCBlLG4saTtjb25zdCByPVtdLG89dGhpcy5faGlkZGVuQ29udGVudFNpemUqdGhpcy5fcmF0aW8sYT10aGlzLl92aXJ0dWFsU3RhcnQscz10aGlzLl92aXJ0dWFsRW5kLGw9dGhpcy5fcGh5c2ljYWxDb3VudDtsZXQgYz10aGlzLl9waHlzaWNhbFRvcCt0aGlzLl9zY3JvbGxPZmZzZXQ7Y29uc3QgdT10aGlzLl9zY3JvbGxUb3AsaD10aGlzLl9zY3JvbGxCb3R0b207Zm9yKHQ/KGU9dGhpcy5fcGh5c2ljYWxTdGFydCxuPXUtYyk6KGU9dGhpcy5fcGh5c2ljYWxFbmQsbj10aGlzLl9waHlzaWNhbEJvdHRvbSt0aGlzLl9zY3JvbGxPZmZzZXQtaCk7aT10aGlzLl9waHlzaWNhbFNpemVzW2VdLG4tPWksIShyLmxlbmd0aD49bHx8bjw9byk7KWlmKHQpe2lmKHMrci5sZW5ndGgrMT49dGhpcy5fdmlydHVhbENvdW50KWJyZWFrO2lmKGMraT49dS10aGlzLl9zY3JvbGxPZmZzZXQpYnJlYWs7ci5wdXNoKGUpLGMrPWksZT0oZSsxKSVsfWVsc2V7aWYoYS1yLmxlbmd0aDw9MClicmVhaztpZihjK3RoaXMuX3BoeXNpY2FsU2l6ZS1pPD1oKWJyZWFrO3IucHVzaChlKSxjLT1pLGU9MD09PWU/bC0xOmUtMX1yZXR1cm57aW5kZXhlczpyLHBoeXNpY2FsVG9wOmMtdGhpcy5fc2Nyb2xsT2Zmc2V0fX0sX3VwZGF0ZTpmdW5jdGlvbih0LGUpe2lmKCEodCYmMD09PXQubGVuZ3RofHwwPT09dGhpcy5fcGh5c2ljYWxDb3VudCkpe2lmKHRoaXMuX2Fzc2lnbk1vZGVscyh0KSx0aGlzLl91cGRhdGVNZXRyaWNzKHQpLGUpZm9yKDtlLmxlbmd0aDspe2NvbnN0IHQ9ZS5wb3AoKTt0aGlzLl9waHlzaWNhbFRvcC09dGhpcy5fcGh5c2ljYWxTaXplc1t0XX10aGlzLl9wb3NpdGlvbkl0ZW1zKCksdGhpcy5fdXBkYXRlU2Nyb2xsZXJTaXplKCl9fSxfaXNDbGllbnRGdWxsOmZ1bmN0aW9uKCl7cmV0dXJuIDAhPXRoaXMuX3Njcm9sbEJvdHRvbSYmdGhpcy5fcGh5c2ljYWxCb3R0b20tMT49dGhpcy5fc2Nyb2xsQm90dG9tJiZ0aGlzLl9waHlzaWNhbFRvcDw9dGhpcy5fc2Nyb2xsUG9zaXRpb259LF9pbmNyZWFzZVBvb2xJZk5lZWRlZDpmdW5jdGlvbih0KXtjb25zdCBlPXRoaXMuX2NsYW1wKHRoaXMuX3BoeXNpY2FsQ291bnQrdCwzLHRoaXMuX3ZpcnR1YWxDb3VudC10aGlzLl92aXJ0dWFsU3RhcnQpLXRoaXMuX3BoeXNpY2FsQ291bnQ7bGV0IG49TWF0aC5yb3VuZCguNSp0aGlzLl9waHlzaWNhbENvdW50KTtpZighKGU8MCkpe2lmKGU+MCl7Y29uc3QgdD13aW5kb3cucGVyZm9ybWFuY2Uubm93KCk7W10ucHVzaC5hcHBseSh0aGlzLl9waHlzaWNhbEl0ZW1zLHRoaXMuX2NyZWF0ZVBvb2woZSkpO2ZvcihsZXQgdD0wO3Q8ZTt0KyspdGhpcy5fcGh5c2ljYWxTaXplcy5wdXNoKDApO3RoaXMuX3BoeXNpY2FsQ291bnQ9dGhpcy5fcGh5c2ljYWxDb3VudCtlLHRoaXMuX3BoeXNpY2FsU3RhcnQ+dGhpcy5fcGh5c2ljYWxFbmQmJnRoaXMuX2lzSW5kZXhSZW5kZXJlZCh0aGlzLl9mb2N1c2VkVmlydHVhbEluZGV4KSYmdGhpcy5fZ2V0UGh5c2ljYWxJbmRleCh0aGlzLl9mb2N1c2VkVmlydHVhbEluZGV4KTx0aGlzLl9waHlzaWNhbEVuZCYmKHRoaXMuX3BoeXNpY2FsU3RhcnQ9dGhpcy5fcGh5c2ljYWxTdGFydCtlKSx0aGlzLl91cGRhdGUoKSx0aGlzLl90ZW1wbGF0ZUNvc3Q9KHdpbmRvdy5wZXJmb3JtYW5jZS5ub3coKS10KS9lLG49TWF0aC5yb3VuZCguNSp0aGlzLl9waHlzaWNhbENvdW50KX10aGlzLl92aXJ0dWFsRW5kPj10aGlzLl92aXJ0dWFsQ291bnQtMXx8MD09PW58fCh0aGlzLl9pc0NsaWVudEZ1bGwoKT90aGlzLl9waHlzaWNhbFNpemU8dGhpcy5fb3B0UGh5c2ljYWxTaXplJiZ0aGlzLl9kZWJvdW5jZSgiX2luY3JlYXNlUG9vbElmTmVlZGVkIix0aGlzLl9pbmNyZWFzZVBvb2xJZk5lZWRlZC5iaW5kKHRoaXMsdGhpcy5fY2xhbXAoTWF0aC5yb3VuZCg1MC90aGlzLl90ZW1wbGF0ZUNvc3QpLDEsbikpLHl0KTp0aGlzLl9kZWJvdW5jZSgiX2luY3JlYXNlUG9vbElmTmVlZGVkIix0aGlzLl9pbmNyZWFzZVBvb2xJZk5lZWRlZC5iaW5kKHRoaXMsbiksdnQpKX19LF9yZW5kZXI6ZnVuY3Rpb24oKXtpZih0aGlzLmlzQXR0YWNoZWQmJnRoaXMuX2lzVmlzaWJsZSlpZigwIT09dGhpcy5fcGh5c2ljYWxDb3VudCl7Y29uc3R7cGh5c2ljYWxUb3A6dCxpbmRleGVzOmV9PXRoaXMuX2dldFJldXNhYmxlcyghMCk7dGhpcy5fcGh5c2ljYWxUb3A9dCx0aGlzLl92aXJ0dWFsU3RhcnQ9dGhpcy5fdmlydHVhbFN0YXJ0K2UubGVuZ3RoLHRoaXMuX3BoeXNpY2FsU3RhcnQ9dGhpcy5fcGh5c2ljYWxTdGFydCtlLmxlbmd0aCx0aGlzLl91cGRhdGUoZSksdGhpcy5fdXBkYXRlKCksdGhpcy5faW5jcmVhc2VQb29sSWZOZWVkZWQoMCl9ZWxzZSB0aGlzLl92aXJ0dWFsQ291bnQ+MCYmKHRoaXMudXBkYXRlVmlld3BvcnRCb3VuZGFyaWVzKCksdGhpcy5faW5jcmVhc2VQb29sSWZOZWVkZWQoMykpfSxfaXRlbXNDaGFuZ2VkOmZ1bmN0aW9uKHQpeyJpdGVtcyI9PT10LnBhdGgmJih0aGlzLl92aXJ0dWFsU3RhcnQ9MCx0aGlzLl9waHlzaWNhbFRvcD0wLHRoaXMuX3ZpcnR1YWxDb3VudD10aGlzLml0ZW1zP3RoaXMuaXRlbXMubGVuZ3RoOjAsdGhpcy5fcGh5c2ljYWxJbmRleEZvcktleT17fSx0aGlzLl9maXJzdFZpc2libGVJbmRleFZhbD1udWxsLHRoaXMuX2xhc3RWaXNpYmxlSW5kZXhWYWw9bnVsbCx0aGlzLl9waHlzaWNhbENvdW50PXRoaXMuX3BoeXNpY2FsQ291bnR8fDAsdGhpcy5fcGh5c2ljYWxJdGVtcz10aGlzLl9waHlzaWNhbEl0ZW1zfHxbXSx0aGlzLl9waHlzaWNhbFNpemVzPXRoaXMuX3BoeXNpY2FsU2l6ZXN8fFtdLHRoaXMuX3BoeXNpY2FsU3RhcnQ9MCx0aGlzLl9zY3JvbGxUb3A+dGhpcy5fc2Nyb2xsT2Zmc2V0JiZ0aGlzLl9yZXNldFNjcm9sbFBvc2l0aW9uKDApLHRoaXMuX2RlYm91bmNlKCJfcmVuZGVyIix0aGlzLl9yZW5kZXIsX3QpKX0sX2l0ZXJhdGVJdGVtczpmdW5jdGlvbih0LGUpe2xldCBuLGkscixvO2lmKDI9PT1hcmd1bWVudHMubGVuZ3RoJiZlKXtmb3Iobz0wO288ZS5sZW5ndGg7bysrKWlmKG49ZVtvXSxpPXRoaXMuX2NvbXB1dGVWaWR4KG4pLG51bGwhPShyPXQuY2FsbCh0aGlzLG4saSkpKXJldHVybiByfWVsc2V7Zm9yKG49dGhpcy5fcGh5c2ljYWxTdGFydCxpPXRoaXMuX3ZpcnR1YWxTdGFydDtuPHRoaXMuX3BoeXNpY2FsQ291bnQ7bisrLGkrKylpZihudWxsIT0ocj10LmNhbGwodGhpcyxuLGkpKSlyZXR1cm4gcjtmb3Iobj0wO248dGhpcy5fcGh5c2ljYWxTdGFydDtuKyssaSsrKWlmKG51bGwhPShyPXQuY2FsbCh0aGlzLG4saSkpKXJldHVybiByfX0sX2NvbXB1dGVWaWR4OmZ1bmN0aW9uKHQpe3JldHVybiB0Pj10aGlzLl9waHlzaWNhbFN0YXJ0P3RoaXMuX3ZpcnR1YWxTdGFydCsodC10aGlzLl9waHlzaWNhbFN0YXJ0KTp0aGlzLl92aXJ0dWFsU3RhcnQrKHRoaXMuX3BoeXNpY2FsQ291bnQtdGhpcy5fcGh5c2ljYWxTdGFydCkrdH0sX3VwZGF0ZU1ldHJpY3M6ZnVuY3Rpb24odCl7aWYoIXRoaXMuX2lzVmlzaWJsZSlyZXR1cm47V2koKTtsZXQgZT0wLG49MDtjb25zdCBpPXRoaXMuX3BoeXNpY2FsQXZlcmFnZUNvdW50LHI9dGhpcy5fcGh5c2ljYWxBdmVyYWdlO3RoaXMuX2l0ZXJhdGVJdGVtcygoZnVuY3Rpb24odCl7bis9dGhpcy5fcGh5c2ljYWxTaXplc1t0XSx0aGlzLl9waHlzaWNhbFNpemVzW3RdPXRoaXMuX3BoeXNpY2FsSXRlbXNbdF0ub2Zmc2V0SGVpZ2h0LGUrPXRoaXMuX3BoeXNpY2FsU2l6ZXNbdF0sdGhpcy5fcGh5c2ljYWxBdmVyYWdlQ291bnQrPXRoaXMuX3BoeXNpY2FsU2l6ZXNbdF0/MTowfSksdCksdGhpcy5fcGh5c2ljYWxTaXplPXRoaXMuX3BoeXNpY2FsU2l6ZStlLW4sdGhpcy5fcGh5c2ljYWxBdmVyYWdlQ291bnQhPT1pJiYodGhpcy5fcGh5c2ljYWxBdmVyYWdlPU1hdGgucm91bmQoKHIqaStlKS90aGlzLl9waHlzaWNhbEF2ZXJhZ2VDb3VudCkpfSxfcG9zaXRpb25JdGVtczpmdW5jdGlvbigpe3RoaXMuX2FkanVzdFNjcm9sbFBvc2l0aW9uKCk7bGV0IHQ9dGhpcy5fcGh5c2ljYWxUb3A7dGhpcy5faXRlcmF0ZUl0ZW1zKChmdW5jdGlvbihlKXt0aGlzLnRyYW5zbGF0ZTNkKDAsdCsicHgiLDAsdGhpcy5fcGh5c2ljYWxJdGVtc1tlXSksdCs9dGhpcy5fcGh5c2ljYWxTaXplc1tlXX0pKX0sX2FkanVzdFNjcm9sbFBvc2l0aW9uOmZ1bmN0aW9uKCl7Y29uc3QgdD0wPT09dGhpcy5fdmlydHVhbFN0YXJ0P3RoaXMuX3BoeXNpY2FsVG9wOk1hdGgubWluKHRoaXMuX3Njcm9sbFBvc2l0aW9uK3RoaXMuX3BoeXNpY2FsVG9wLDApO2lmKDAhPT10KXt0aGlzLl9waHlzaWNhbFRvcD10aGlzLl9waHlzaWNhbFRvcC10O2NvbnN0IGU9dGhpcy5fc2Nyb2xsVG9wOyFSMXQmJmU+MCYmdGhpcy5fcmVzZXRTY3JvbGxQb3NpdGlvbihlLXQpfX0sX3Jlc2V0U2Nyb2xsUG9zaXRpb246ZnVuY3Rpb24odCl7dGhpcy5zY3JvbGxUYXJnZXQmJnQ+PTAmJih0aGlzLl9zY3JvbGxUb3A9dCx0aGlzLl9zY3JvbGxQb3NpdGlvbj10aGlzLl9zY3JvbGxUb3ApfSxfdXBkYXRlU2Nyb2xsZXJTaXplOmZ1bmN0aW9uKHQpe3RoaXMuX2VzdFNjcm9sbEhlaWdodD10aGlzLl9waHlzaWNhbEJvdHRvbStNYXRoLm1heCh0aGlzLl92aXJ0dWFsQ291bnQtdGhpcy5fcGh5c2ljYWxDb3VudC10aGlzLl92aXJ0dWFsU3RhcnQsMCkqdGhpcy5fcGh5c2ljYWxBdmVyYWdlLCgodD0odD10fHwwPT09dGhpcy5fc2Nyb2xsSGVpZ2h0KXx8dGhpcy5fc2Nyb2xsUG9zaXRpb24+PXRoaXMuX2VzdFNjcm9sbEhlaWdodC10aGlzLl9waHlzaWNhbFNpemUpfHxNYXRoLmFicyh0aGlzLl9lc3RTY3JvbGxIZWlnaHQtdGhpcy5fc2Nyb2xsSGVpZ2h0KT49dGhpcy5fdmlld3BvcnRIZWlnaHQpJiYodGhpcy4kLml0ZW1zLnN0eWxlLmhlaWdodD10aGlzLl9lc3RTY3JvbGxIZWlnaHQrInB4Iix0aGlzLl9zY3JvbGxIZWlnaHQ9dGhpcy5fZXN0U2Nyb2xsSGVpZ2h0KX0sc2Nyb2xsVG9JbmRleDpmdW5jdGlvbih0KXtpZigibnVtYmVyIiE9dHlwZW9mIHR8fHQ8MHx8dD50aGlzLml0ZW1zLmxlbmd0aC0xKXJldHVybjtpZihXaSgpLDA9PT10aGlzLl9waHlzaWNhbENvdW50KXJldHVybjt0PXRoaXMuX2NsYW1wKHQsMCx0aGlzLl92aXJ0dWFsQ291bnQtMSksKCF0aGlzLl9pc0luZGV4UmVuZGVyZWQodCl8fHQ+PXRoaXMuX21heFZpcnR1YWxTdGFydCkmJih0aGlzLl92aXJ0dWFsU3RhcnQ9dC0xKSx0aGlzLl9hc3NpZ25Nb2RlbHMoKSx0aGlzLl91cGRhdGVNZXRyaWNzKCksdGhpcy5fcGh5c2ljYWxUb3A9TWF0aC5mbG9vcih0aGlzLl92aXJ0dWFsU3RhcnQpKnRoaXMuX3BoeXNpY2FsQXZlcmFnZTtsZXQgZT10aGlzLl9waHlzaWNhbFN0YXJ0LG49dGhpcy5fdmlydHVhbFN0YXJ0LGk9MDtjb25zdCByPXRoaXMuX2hpZGRlbkNvbnRlbnRTaXplO2Zvcig7bjx0JiZpPD1yOylpKz10aGlzLl9waHlzaWNhbFNpemVzW2VdLGU9KGUrMSkldGhpcy5fcGh5c2ljYWxDb3VudCxuKys7dGhpcy5fdXBkYXRlU2Nyb2xsZXJTaXplKCEwKSx0aGlzLl9wb3NpdGlvbkl0ZW1zKCksdGhpcy5fcmVzZXRTY3JvbGxQb3NpdGlvbih0aGlzLl9waHlzaWNhbFRvcCt0aGlzLl9zY3JvbGxPZmZzZXQraSksdGhpcy5faW5jcmVhc2VQb29sSWZOZWVkZWQoMCksdGhpcy5fZmlyc3RWaXNpYmxlSW5kZXhWYWw9bnVsbCx0aGlzLl9sYXN0VmlzaWJsZUluZGV4VmFsPW51bGx9LF9yZXNldEF2ZXJhZ2U6ZnVuY3Rpb24oKXt0aGlzLl9waHlzaWNhbEF2ZXJhZ2U9MCx0aGlzLl9waHlzaWNhbEF2ZXJhZ2VDb3VudD0wfSxfcmVzaXplSGFuZGxlcjpmdW5jdGlvbigpe3RoaXMuX2RlYm91bmNlKCJfcmVuZGVyIiwoZnVuY3Rpb24oKXt0aGlzLl9maXJzdFZpc2libGVJbmRleFZhbD1udWxsLHRoaXMuX2xhc3RWaXNpYmxlSW5kZXhWYWw9bnVsbCx0aGlzLnVwZGF0ZVZpZXdwb3J0Qm91bmRhcmllcygpLHRoaXMuX2lzVmlzaWJsZT8odGhpcy50b2dnbGVTY3JvbGxMaXN0ZW5lcighMCksdGhpcy5fcmVzZXRBdmVyYWdlKCksdGhpcy5fcmVuZGVyKCkpOnRoaXMudG9nZ2xlU2Nyb2xsTGlzdGVuZXIoITEpfSksX3QpfSxfaXNJbmRleFJlbmRlcmVkOmZ1bmN0aW9uKHQpe3JldHVybiB0Pj10aGlzLl92aXJ0dWFsU3RhcnQmJnQ8PXRoaXMuX3ZpcnR1YWxFbmR9LF9nZXRQaHlzaWNhbEluZGV4OmZ1bmN0aW9uKHQpe3JldHVybih0aGlzLl9waHlzaWNhbFN0YXJ0Kyh0LXRoaXMuX3ZpcnR1YWxTdGFydCkpJXRoaXMuX3BoeXNpY2FsQ291bnR9LF9jbGFtcDpmdW5jdGlvbih0LGUsbil7cmV0dXJuIE1hdGgubWluKG4sTWF0aC5tYXgoZSx0KSl9LF9kZWJvdW5jZTpmdW5jdGlvbih0LGUsbil7dGhpcy5fZGVib3VuY2Vycz10aGlzLl9kZWJvdW5jZXJzfHx7fSx0aGlzLl9kZWJvdW5jZXJzW3RdPU5uLmRlYm91bmNlKHRoaXMuX2RlYm91bmNlcnNbdF0sbixlLmJpbmQodGhpcykpLFJuKHRoaXMuX2RlYm91bmNlcnNbdF0pfX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgKGMpIDIwMjEgVmFhZGluIEx0ZC4KICAgICAqIFRoaXMgcHJvZ3JhbSBpcyBhdmFpbGFibGUgdW5kZXIgQXBhY2hlIExpY2Vuc2UgVmVyc2lvbiAyLjAsIGF2YWlsYWJsZSBhdCBodHRwczovL3ZhYWRpbi5jb20vbGljZW5zZS8KICAgICAqLwpjbGFzcyB6MXQgZXh0ZW5kcyBPMXR7c3RhdGljIGdldCBwcm9wZXJ0aWVzKCl7cmV0dXJue3NpemU6e3R5cGU6TnVtYmVyLG5vdGlmeTohMH0sX3ZpZHhPZmZzZXQ6e3R5cGU6TnVtYmVyLHZhbHVlOjB9fX1zdGF0aWMgZ2V0IG9ic2VydmVycygpe3JldHVyblsiX2VmZmVjdGl2ZVNpemVDaGFuZ2VkKF9lZmZlY3RpdmVTaXplKSJdfWNvbm5lY3RlZENhbGxiYWNrKCl7c3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKSx0aGlzLl9zY3JvbGxIYW5kbGVyKCl9X3VwZGF0ZVNjcm9sbGVySXRlbSgpe31fYWZ0ZXJTY3JvbGwoKXt9X2dldFJvd1RhcmdldCgpe31fY3JlYXRlU2Nyb2xsZXJSb3dzKCl7fV9jYW5Qb3B1bGF0ZSgpe31zY3JvbGxUb0luZGV4KHQpe3RoaXMuX3dhcm5Qcml2YXRlQVBJQWNjZXNzKCJzY3JvbGxUb0luZGV4IiksdGhpcy5fc2Nyb2xsaW5nVG9JbmRleD0hMCx0PU1hdGgubWluKE1hdGgubWF4KHQsMCksdGhpcy5fZWZmZWN0aXZlU2l6ZS0xKSx0aGlzLiQudGFibGUuc2Nyb2xsVG9wPXQvdGhpcy5fZWZmZWN0aXZlU2l6ZSoodGhpcy4kLnRhYmxlLnNjcm9sbEhlaWdodC10aGlzLiQudGFibGUub2Zmc2V0SGVpZ2h0KSx0aGlzLl9zY3JvbGxIYW5kbGVyKCksdGhpcy5fYWNjZXNzSXJvbkxpc3RBUEkoKCgpPT50aGlzLl9tYXhTY3JvbGxUb3ApKSYmdGhpcy5fdmlydHVhbENvdW50PHRoaXMuX2VmZmVjdGl2ZVNpemUmJnRoaXMuX2FkanVzdFZpcnR1YWxJbmRleE9mZnNldCgxZTYpLHRoaXMuX2FjY2Vzc0lyb25MaXN0QVBJKCgoKT0+c3VwZXIuc2Nyb2xsVG9JbmRleCh0LXRoaXMuX3ZpZHhPZmZzZXQpKSksdGhpcy5fc2Nyb2xsSGFuZGxlcigpO2NvbnN0IGU9QXJyYXkuZnJvbSh0aGlzLiQuaXRlbXMuY2hpbGRyZW4pLmZpbHRlcigoZT0+ZS5pbmRleD09PXQpKVswXTtpZihlKXtjb25zdCB0PWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wLXRoaXMuJC5oZWFkZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuYm90dG9tO01hdGguYWJzKHQpPjEmJih0aGlzLiQudGFibGUuc2Nyb2xsVG9wKz10LHRoaXMuX3Njcm9sbEhhbmRsZXIoKSl9dGhpcy5fc2Nyb2xsaW5nVG9JbmRleD0hMX1fZWZmZWN0aXZlU2l6ZUNoYW5nZWQodCl7bGV0IGUsbj0wO2lmKHRoaXMuX2l0ZXJhdGVJdGVtcygoKHQsaSk9PntpZihpPT09dGhpcy5fZmlyc3RWaXNpYmxlSW5kZXgpe2NvbnN0IGk9dGhpcy5fcGh5c2ljYWxJdGVtc1t0XTtlPWkuaW5kZXgsbj1pLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcH19KSksdGhpcy5pdGVtcyYmdDx0aGlzLml0ZW1zLmxlbmd0aCYmKHRoaXMuX3Njcm9sbFRvcD0wKSwhQXJyYXkuaXNBcnJheSh0aGlzLml0ZW1zKSl7dGhpcy5pdGVtcz17bGVuZ3RoOk1hdGgubWluKHQsMWU1KX19dGhpcy5fYWNjZXNzSXJvbkxpc3RBUEkoKCgpPT5zdXBlci5faXRlbXNDaGFuZ2VkKHtwYXRoOiJpdGVtcyJ9KSkpLHRoaXMuX3ZpcnR1YWxDb3VudD1NYXRoLm1pbih0aGlzLml0ZW1zLmxlbmd0aCx0KXx8MCwwPT09dGhpcy5fc2Nyb2xsVG9wJiYodGhpcy5fYWNjZXNzSXJvbkxpc3RBUEkoKCgpPT50aGlzLl9zY3JvbGxUb0luZGV4KE1hdGgubWluKHQtMSxlKSkpKSx0aGlzLl9pdGVyYXRlSXRlbXMoKHQ9Pntjb25zdCBpPXRoaXMuX3BoeXNpY2FsSXRlbXNbdF07aWYoaS5pbmRleD09PWUmJih0aGlzLiQudGFibGUuc2Nyb2xsVG9wKz1NYXRoLnJvdW5kKGkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wLW4pKSxpLmluZGV4PT09dGhpcy5fZm9jdXNlZEl0ZW1JbmRleCYmdGhpcy5faXRlbXNGb2N1c2FibGUmJnRoaXMuJC5pdGVtcy5jb250YWlucyh0aGlzLnNoYWRvd1Jvb3QuYWN0aXZlRWxlbWVudCkpe2NvbnN0IHQ9QXJyYXkuZnJvbSh0aGlzLl9pdGVtc0ZvY3VzYWJsZS5wYXJlbnRFbGVtZW50LmNoaWxkcmVuKS5pbmRleE9mKHRoaXMuX2l0ZW1zRm9jdXNhYmxlKTtpLmNoaWxkcmVuW3RdLmZvY3VzKCl9fSkpKSx0aGlzLl9hc3NpZ25Nb2RlbHMoKSxyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCgpPT50aGlzLl91cGRhdGUoKSkpLHRoaXMuX191cGRhdGVGb290ZXJQb3NpdGlvbmluZygpfV9wb3NpdGlvbkl0ZW1zKCl7bGV0IHQ7dGhpcy5fYWRqdXN0U2Nyb2xsUG9zaXRpb24oKSxpc05hTih0aGlzLl9waHlzaWNhbFRvcCkmJih0PSEwLHRoaXMuX3BoeXNpY2FsVG9wPTApO2xldCBlPXRoaXMuX3BoeXNpY2FsVG9wO3RoaXMuX2l0ZXJhdGVJdGVtcygodD0+e3RoaXMuX3BoeXNpY2FsSXRlbXNbdF0uc3R5bGUudHJhbnNmb3JtPWB0cmFuc2xhdGVZKCR7ZX1weClgLGUrPXRoaXMuX3BoeXNpY2FsU2l6ZXNbdF19KSksdCYmdGhpcy5fc2Nyb2xsVG9JbmRleCgwKX1faW5jcmVhc2VQb29sSWZOZWVkZWQodCl7MD09PXQmJnRoaXMuX3Njcm9sbGluZ1RvSW5kZXh8fCF0aGlzLl9jYW5Qb3B1bGF0ZSgpfHwhdGhpcy5fZWZmZWN0aXZlU2l6ZXx8KHRoaXMuX2luaXRpYWxQb29sQ3JlYXRlZD90aGlzLl9vcHRQaHlzaWNhbFNpemUhPT0xLzAmJih0aGlzLl9kZWJvdW5jZUluY3JlYXNlUG9vbD1Obi5kZWJvdW5jZSh0aGlzLl9kZWJvdW5jZUluY3JlYXNlUG9vbCxfdCwoKCk9Pnt0aGlzLl91cGRhdGVNZXRyaWNzKCk7bGV0IHQ9TWF0aC5jZWlsKCh0aGlzLl9vcHRQaHlzaWNhbFNpemUtdGhpcy5fcGh5c2ljYWxTaXplKS90aGlzLl9waHlzaWNhbEF2ZXJhZ2UpO3RoaXMuX3BoeXNpY2FsQ291bnQrdD50aGlzLl9lZmZlY3RpdmVTaXplJiYodD1NYXRoLm1heCgwLHRoaXMuX2VmZmVjdGl2ZVNpemUtdGhpcy5fcGh5c2ljYWxDb3VudCkpLHRoaXMuX3BoeXNpY2FsU2l6ZSYmdD4wJiZ0aGlzLl9vcHRQaHlzaWNhbFNpemUhPT0xLzAmJihzdXBlci5faW5jcmVhc2VQb29sSWZOZWVkZWQodCksdGhpcy5fX3Jlb3JkZXJDaGlsZE5vZGVzKCkpfSkpKToodGhpcy5faW5pdGlhbFBvb2xDcmVhdGVkPSEwLHN1cGVyLl9pbmNyZWFzZVBvb2xJZk5lZWRlZCgyNSkpKX1fX3Jlb3JkZXJDaGlsZE5vZGVzKCl7Y29uc3QgdD1BcnJheS5mcm9tKHRoaXMuJC5pdGVtcy5jaGlsZE5vZGVzKTshIXQucmVkdWNlKCgodCxlLG4saSk9PntpZigwPT09bnx8aVtuLTFdLmluZGV4PT09ZS5pbmRleC0xKXJldHVybiB0fSksITApfHx0LnNvcnQoKCh0LGUpPT50LmluZGV4LWUuaW5kZXgpKS5mb3JFYWNoKCh0PT50aGlzLiQuaXRlbXMuYXBwZW5kQ2hpbGQodCkpKX1fY3JlYXRlUG9vbCh0KXtjb25zdCBlPWRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxuPXRoaXMuX2NyZWF0ZVNjcm9sbGVyUm93cyh0KTtuLmZvckVhY2goKHQ9PmUuYXBwZW5kQ2hpbGQodCkpKSx0aGlzLl9nZXRSb3dUYXJnZXQoKS5hcHBlbmRDaGlsZChlKTtjb25zdCBpPXRoaXMucXVlcnlTZWxlY3RvcigiW3Nsb3RdIik7aWYoaSl7Y29uc3QgdD1pLmdldEF0dHJpYnV0ZSgic2xvdCIpO2kuc2V0QXR0cmlidXRlKCJzbG90IiwiZm9vLWJhciIpLGkuc2V0QXR0cmlidXRlKCJzbG90Iix0KX1yZXR1cm4gRGkodGhpcywoKCk9PnRoaXMubm90aWZ5UmVzaXplKCkpKSxufV9hc3NpZ25Nb2RlbHModCl7dGhpcy5faXRlcmF0ZUl0ZW1zKCgodCxlKT0+e2NvbnN0IG49dGhpcy5fcGh5c2ljYWxJdGVtc1t0XTt0aGlzLl90b2dnbGVBdHRyaWJ1dGUoImhpZGRlbiIsZT49dGhpcy5fZWZmZWN0aXZlU2l6ZSxuKSx0aGlzLl91cGRhdGVTY3JvbGxlckl0ZW0obixlKyh0aGlzLl92aWR4T2Zmc2V0fHwwKSl9KSx0KX1fc2Nyb2xsSGFuZGxlcigpe2NvbnN0IHQ9dGhpcy4kLnRhYmxlLnNjcm9sbFRvcC10aGlzLl9zY3JvbGxQb3NpdGlvbjt0aGlzLl9hY2Nlc3NJcm9uTGlzdEFQSShzdXBlci5fc2Nyb2xsSGFuZGxlcik7Y29uc3QgZT10aGlzLl92aWR4T2Zmc2V0O3RoaXMuX2FjY2Vzc0lyb25MaXN0QVBJKCgoKT0+dGhpcy5fbWF4U2Nyb2xsVG9wKSkmJnRoaXMuX3ZpcnR1YWxDb3VudDx0aGlzLl9lZmZlY3RpdmVTaXplP3RoaXMuX2FkanVzdFZpcnR1YWxJbmRleE9mZnNldCh0KTp0aGlzLl92aWR4T2Zmc2V0PTAsdGhpcy5fdmlkeE9mZnNldCE9PWUmJnRoaXMuX3VwZGF0ZSgpLHRoaXMuX2FmdGVyU2Nyb2xsKCl9X2FkanVzdFZpcnR1YWxJbmRleE9mZnNldCh0KXtpZihNYXRoLmFicyh0KT4xZTQpe2lmKHRoaXMuX25vU2NhbGUpcmV0dXJuIHZvaWQodGhpcy5fbm9TY2FsZT0hMSk7Y29uc3QgdD10aGlzLiQudGFibGUuc2Nyb2xsVG9wLyh0aGlzLiQudGFibGUuc2Nyb2xsSGVpZ2h0LXRoaXMuJC50YWJsZS5vZmZzZXRIZWlnaHQpO3RoaXMuX3ZpZHhPZmZzZXQ9TWF0aC5yb3VuZCh0KnRoaXMuX2VmZmVjdGl2ZVNpemUtdCp0aGlzLl92aXJ0dWFsQ291bnQpfWVsc2V7Y29uc3QgdD10aGlzLl92aWR4T2Zmc2V0fHwwLGU9MWUzLG49MTAwOzA9PT10aGlzLl9zY3JvbGxUb3A/KHRoaXMuX3ZpZHhPZmZzZXQ9MCx0IT09dGhpcy5fdmlkeE9mZnNldCYmc3VwZXIuc2Nyb2xsVG9JbmRleCgwKSk6dGhpcy5maXJzdFZpc2libGVJbmRleDxlJiZ0aGlzLl92aWR4T2Zmc2V0PjAmJih0aGlzLl92aWR4T2Zmc2V0LT1NYXRoLm1pbih0aGlzLl92aWR4T2Zmc2V0LG4pLHQhPT10aGlzLl92aWR4T2Zmc2V0JiZzdXBlci5zY3JvbGxUb0luZGV4KHRoaXMuZmlyc3RWaXNpYmxlSW5kZXgrKHQtdGhpcy5fdmlkeE9mZnNldCkpLHRoaXMuX25vU2NhbGU9ITApO2NvbnN0IGk9dGhpcy5fZWZmZWN0aXZlU2l6ZS10aGlzLl92aXJ0dWFsQ291bnQ7dGhpcy5fc2Nyb2xsVG9wPj10aGlzLl9tYXhTY3JvbGxUb3AmJnRoaXMuX21heFNjcm9sbFRvcD4wPyh0aGlzLl92aWR4T2Zmc2V0PWksdCE9PXRoaXMuX3ZpZHhPZmZzZXQmJnN1cGVyLnNjcm9sbFRvSW5kZXgodGhpcy5fdmlydHVhbENvdW50KSk6dGhpcy5maXJzdFZpc2libGVJbmRleD50aGlzLl92aXJ0dWFsQ291bnQtZSYmdGhpcy5fdmlkeE9mZnNldDxpJiYodGhpcy5fdmlkeE9mZnNldCs9TWF0aC5taW4oaS10aGlzLl92aWR4T2Zmc2V0LG4pLHQhPT10aGlzLl92aWR4T2Zmc2V0JiZzdXBlci5zY3JvbGxUb0luZGV4KHRoaXMuZmlyc3RWaXNpYmxlSW5kZXgtKHRoaXMuX3ZpZHhPZmZzZXQtdCkpLHRoaXMuX25vU2NhbGU9ITApfX1fYWNjZXNzSXJvbkxpc3RBUEkodCl7dGhpcy5fd2FyblByaXZhdGVBUElBY2Nlc3NBc3luY0VuYWJsZWQ9ITE7Y29uc3QgZT10LmFwcGx5KHRoaXMpO3JldHVybiB0aGlzLl9kZWJvdW5jZXJXYXJuUHJpdmF0ZUFQSUFjY2Vzcz1Obi5kZWJvdW5jZSh0aGlzLl9kZWJvdW5jZXJXYXJuUHJpdmF0ZUFQSUFjY2VzcyxfdCwoKCk9PnRoaXMuX3dhcm5Qcml2YXRlQVBJQWNjZXNzQXN5bmNFbmFibGVkPSEwKSksZX1fZGVib3VuY2VSZW5kZXIodCxlKXtzdXBlci5fZGVib3VuY2VSZW5kZXIoKCgpPT50aGlzLl9hY2Nlc3NJcm9uTGlzdEFQSSh0KSksZSl9X3dhcm5Qcml2YXRlQVBJQWNjZXNzKHQpe3RoaXMuX3dhcm5Qcml2YXRlQVBJQWNjZXNzQXN5bmNFbmFibGVkJiZjb25zb2xlLndhcm4oYEFjY2Vzc2luZyBwcml2YXRlIEFQSSAoJHt0fSkhYCl9X3JlbmRlcigpe3RoaXMuX2FjY2Vzc0lyb25MaXN0QVBJKHN1cGVyLl9yZW5kZXIpfV9pdGVtc0NoYW5nZWQoKXt9Z2V0IF9maXJzdFZpc2libGVJbmRleCgpe3JldHVybiB0aGlzLl9hY2Nlc3NJcm9uTGlzdEFQSSgoKCk9PnN1cGVyLmZpcnN0VmlzaWJsZUluZGV4KSl9Z2V0IF9sYXN0VmlzaWJsZUluZGV4KCl7cmV0dXJuIHRoaXMuX2FjY2Vzc0lyb25MaXN0QVBJKCgoKT0+c3VwZXIubGFzdFZpc2libGVJbmRleCkpfV9zY3JvbGxUb0luZGV4KHQpe3RoaXMuX2FjY2Vzc0lyb25MaXN0QVBJKCgoKT0+dGhpcy5zY3JvbGxUb0luZGV4KHQpKSl9Z2V0IGZpcnN0VmlzaWJsZUluZGV4KCl7cmV0dXJuIHRoaXMuX3dhcm5Qcml2YXRlQVBJQWNjZXNzKCJmaXJzdFZpc2libGVJbmRleCIpLHN1cGVyLmZpcnN0VmlzaWJsZUluZGV4fXNldCBmaXJzdFZpc2libGVJbmRleCh0KXt0aGlzLl93YXJuUHJpdmF0ZUFQSUFjY2VzcygiZmlyc3RWaXNpYmxlSW5kZXgiKSxzdXBlci5maXJzdFZpc2libGVJbmRleD10fWdldCBsYXN0VmlzaWJsZUluZGV4KCl7cmV0dXJuIHRoaXMuX3dhcm5Qcml2YXRlQVBJQWNjZXNzKCJsYXN0VmlzaWJsZUluZGV4Iiksc3VwZXIubGFzdFZpc2libGVJbmRleH1zZXQgbGFzdFZpc2libGVJbmRleCh0KXt0aGlzLl93YXJuUHJpdmF0ZUFQSUFjY2VzcygibGFzdFZpc2libGVJbmRleCIpLHN1cGVyLmxhc3RWaXNpYmxlSW5kZXg9dH11cGRhdGVWaWV3cG9ydEJvdW5kYXJpZXMoKXt0aGlzLl93YXJuUHJpdmF0ZUFQSUFjY2VzcygidXBkYXRlVmlld3BvcnRCb3VuZGFyaWVzIiksc3VwZXIudXBkYXRlVmlld3BvcnRCb3VuZGFyaWVzLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1fcmVzaXplSGFuZGxlcigpe3N1cGVyLl9yZXNpemVIYW5kbGVyKCksV2koKX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAyMSBWYWFkaW4gTHRkLgogICAgICogVGhpcyBwcm9ncmFtIGlzIGF2YWlsYWJsZSB1bmRlciBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgYXZhaWxhYmxlIGF0IGh0dHBzOi8vdmFhZGluLmNvbS9saWNlbnNlLwogICAgICovY29uc3QgRDF0PXQ9PmNsYXNzIGV4dGVuZHMgdHtzdGF0aWMgZ2V0IG9ic2VydmVycygpe3JldHVyblsiX2ExMXlVcGRhdGVHcmlkU2l6ZShzaXplLCBfY29sdW1uVHJlZSwgX2NvbHVtblRyZWUuKikiXX1fYTExeUdldEhlYWRlclJvd0NvdW50KHQpe3JldHVybiB0LmZpbHRlcigodD0+dC5zb21lKCh0PT50Ll9oZWFkZXJUZW1wbGF0ZXx8dC5oZWFkZXJSZW5kZXJlcnx8dC5wYXRofHx0LmhlYWRlcikpKSkubGVuZ3RofV9hMTF5R2V0Rm9vdGVyUm93Q291bnQodCl7cmV0dXJuIHQuZmlsdGVyKCh0PT50LnNvbWUoKHQ9PnQuX2hlYWRlclRlbXBsYXRlfHx0LmhlYWRlclJlbmRlcmVyKSkpKS5sZW5ndGh9X2ExMXlVcGRhdGVHcmlkU2l6ZSh0LGUpe2lmKHZvaWQgMD09PXR8fHZvaWQgMD09PWUpcmV0dXJuO2NvbnN0IG49ZVtlLmxlbmd0aC0xXTt0aGlzLiQudGFibGUuc2V0QXR0cmlidXRlKCJhcmlhLXJvd2NvdW50Iix0K3RoaXMuX2ExMXlHZXRIZWFkZXJSb3dDb3VudChlKSt0aGlzLl9hMTF5R2V0Rm9vdGVyUm93Q291bnQoZSkpLHRoaXMuJC50YWJsZS5zZXRBdHRyaWJ1dGUoImFyaWEtY29sY291bnQiLG4mJm4ubGVuZ3RofHwwKSx0aGlzLl9hMTF5VXBkYXRlSGVhZGVyUm93cygpLHRoaXMuX2ExMXlVcGRhdGVGb290ZXJSb3dzKCl9X2ExMXlVcGRhdGVIZWFkZXJSb3dzKCl7QXJyYXkuZnJvbSh0aGlzLiQuaGVhZGVyLmNoaWxkcmVuKS5mb3JFYWNoKCgodCxlKT0+dC5zZXRBdHRyaWJ1dGUoImFyaWEtcm93aW5kZXgiLGUrMSkpKX1fYTExeVVwZGF0ZUZvb3RlclJvd3MoKXtBcnJheS5mcm9tKHRoaXMuJC5mb290ZXIuY2hpbGRyZW4pLmZvckVhY2goKCh0LGUpPT50LnNldEF0dHJpYnV0ZSgiYXJpYS1yb3dpbmRleCIsdGhpcy5fYTExeUdldEhlYWRlclJvd0NvdW50KHRoaXMuX2NvbHVtblRyZWUpK3RoaXMuc2l6ZStlKzEpKSl9X2ExMXlVcGRhdGVSb3dSb3dpbmRleCh0LGUpe3Quc2V0QXR0cmlidXRlKCJhcmlhLXJvd2luZGV4IixlK3RoaXMuX2ExMXlHZXRIZWFkZXJSb3dDb3VudCh0aGlzLl9jb2x1bW5UcmVlKSsxKX1fYTExeVVwZGF0ZVJvd1NlbGVjdGVkKHQsZSl7dC5zZXRBdHRyaWJ1dGUoImFyaWEtc2VsZWN0ZWQiLEJvb2xlYW4oZSkpLEFycmF5LmZyb20odC5jaGlsZHJlbikuZm9yRWFjaCgodD0+dC5zZXRBdHRyaWJ1dGUoImFyaWEtc2VsZWN0ZWQiLEJvb2xlYW4oZSkpKSl9X2ExMXlVcGRhdGVSb3dMZXZlbCh0LGUpe3Quc2V0QXR0cmlidXRlKCJhcmlhLWxldmVsIixlKzEpfV9hMTF5VXBkYXRlUm93RGV0YWlsc09wZW5lZCh0LGUpe0FycmF5LmZyb20odC5jaGlsZHJlbikuZm9yRWFjaCgodD0+eyJib29sZWFuIj09dHlwZW9mIGU/dC5zZXRBdHRyaWJ1dGUoImFyaWEtZXhwYW5kZWQiLGUpOnQuaGFzQXR0cmlidXRlKCJhcmlhLWV4cGFuZGVkIikmJnQucmVtb3ZlQXR0cmlidXRlKCJhcmlhLWV4cGFuZGVkIil9KSl9X2ExMXlTZXRSb3dEZXRhaWxzQ2VsbCh0LGUpe0FycmF5LmZyb20odC5jaGlsZHJlbikuZm9yRWFjaCgodD0+e3QhPT1lJiZ0LnNldEF0dHJpYnV0ZSgiYXJpYS1jb250cm9scyIsZS5pZCl9KSl9X2ExMXlVcGRhdGVDZWxsQ29sc3Bhbih0LGUpe3Quc2V0QXR0cmlidXRlKCJhcmlhLWNvbHNwYW4iLE51bWJlcihlKSl9X2ExMXlVcGRhdGVTb3J0ZXJzKCl7QXJyYXkuZnJvbSh0aGlzLnF1ZXJ5U2VsZWN0b3JBbGwoInZhYWRpbi1ncmlkLXNvcnRlciIpKS5mb3JFYWNoKCh0PT57bGV0IGU9dC5wYXJlbnROb2RlO2Zvcig7ZSYmInZhYWRpbi1ncmlkLWNlbGwtY29udGVudCIhPT1lLmxvY2FsTmFtZTspZT1lLnBhcmVudE5vZGU7aWYoZSYmZS5hc3NpZ25lZFNsb3Qpe2UuYXNzaWduZWRTbG90LnBhcmVudE5vZGUuc2V0QXR0cmlidXRlKCJhcmlhLXNvcnQiLHthc2M6ImFzY2VuZGluZyIsZGVzYzoiZGVzY2VuZGluZyJ9W1N0cmluZyh0LmRpcmVjdGlvbildfHwibm9uZSIpfX0pKX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAyMSBWYWFkaW4gTHRkLgogICAgICogVGhpcyBwcm9ncmFtIGlzIGF2YWlsYWJsZSB1bmRlciBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgYXZhaWxhYmxlIGF0IGh0dHBzOi8vdmFhZGluLmNvbS9saWNlbnNlLwogICAgICovLEIxdD10PT5jbGFzcyBleHRlbmRzIHR7c3RhdGljIGdldCBwcm9wZXJ0aWVzKCl7cmV0dXJue2FjdGl2ZUl0ZW06e3R5cGU6T2JqZWN0LG5vdGlmeTohMCx2YWx1ZTpudWxsfX19cmVhZHkoKXtzdXBlci5yZWFkeSgpLHRoaXMuJC5zY3JvbGxlci5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsdGhpcy5fb25DbGljay5iaW5kKHRoaXMpKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoImNlbGwtYWN0aXZhdGUiLHRoaXMuX2FjdGl2YXRlSXRlbS5iaW5kKHRoaXMpKX1fYWN0aXZhdGVJdGVtKHQpe2NvbnN0IGU9dC5kZXRhaWwubW9kZWwsbj1lP2UuaXRlbTpudWxsO24mJih0aGlzLmFjdGl2ZUl0ZW09dGhpcy5faXRlbXNFcXVhbCh0aGlzLmFjdGl2ZUl0ZW0sbik/bnVsbDpuKX1fb25DbGljayh0KXtpZih0LmRlZmF1bHRQcmV2ZW50ZWQpcmV0dXJuO2NvbnN0IGU9dC5jb21wb3NlZFBhdGgoKSxuPWVbZS5pbmRleE9mKHRoaXMuJC50YWJsZSktM107aWYoIW58fG4uZ2V0QXR0cmlidXRlKCJwYXJ0IikuaW5kZXhPZigiZGV0YWlscy1jZWxsIik+LTEpcmV0dXJuO2NvbnN0IGk9bi5fY29udGVudCxyPXRoaXMuZ2V0Um9vdE5vZGUoKS5hY3RpdmVFbGVtZW50O2kuY29udGFpbnMocil8fHRoaXMuX2lzRm9jdXNhYmxlKHQudGFyZ2V0KXx8dGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiY2VsbC1hY3RpdmF0ZSIse2RldGFpbDp7bW9kZWw6dGhpcy5fX2dldFJvd01vZGVsKG4ucGFyZW50RWxlbWVudCl9fSkpfV9pc0ZvY3VzYWJsZSh0KXtyZXR1cm4gSDF0KHQpfX0sSDF0PXQ9PntpZighdC5wYXJlbnROb2RlKXJldHVybiExO2NvbnN0IGU9LTEhPT1BcnJheS5mcm9tKHQucGFyZW50Tm9kZS5xdWVyeVNlbGVjdG9yQWxsKCJbdGFiaW5kZXhdLCBidXR0b24sIGlucHV0LCBzZWxlY3QsIHRleHRhcmVhLCBvYmplY3QsIGlmcmFtZSwgbGFiZWwsIGFbaHJlZl0sIGFyZWFbaHJlZl0iKSkuZmlsdGVyKCh0PT4iY2VsbCBib2R5LWNlbGwiIT09dC5nZXRBdHRyaWJ1dGUoInBhcnQiKSkpLmluZGV4T2YodCk7cmV0dXJuIXQuZGlzYWJsZWQmJmV9LEYxdD10PT5jbGFzcyBleHRlbmRzIHR7c3RhdGljIGdldCBwcm9wZXJ0aWVzKCl7cmV0dXJue2l0ZW1zOkFycmF5fX1zdGF0aWMgZ2V0IG9ic2VydmVycygpe3JldHVyblsiX2l0ZW1zQ2hhbmdlZChpdGVtcywgaXRlbXMuKiwgaXNBdHRhY2hlZCkiXX1faXRlbXNDaGFuZ2VkKHQsZSxuKXtpZihuKXtpZighQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gbnVsbD09dCYmKHRoaXMuc2l6ZT0wKSx2b2lkKHRoaXMuZGF0YVByb3ZpZGVyPT09dGhpcy5fYXJyYXlEYXRhUHJvdmlkZXImJih0aGlzLmRhdGFQcm92aWRlcj12b2lkIDApKTt0aGlzLnNpemU9dC5sZW5ndGgsdGhpcy5kYXRhUHJvdmlkZXI9dGhpcy5kYXRhUHJvdmlkZXJ8fHRoaXMuX2FycmF5RGF0YVByb3ZpZGVyLHRoaXMuY2xlYXJDYWNoZSgpLHRoaXMuX2Vuc3VyZUZpcnN0UGFnZUxvYWRlZCgpfX1fYXJyYXlEYXRhUHJvdmlkZXIodCxlKXtsZXQgbj0oQXJyYXkuaXNBcnJheSh0aGlzLml0ZW1zKT90aGlzLml0ZW1zOltdKS5zbGljZSgwKTt0aGlzLl9maWx0ZXJzJiZ0aGlzLl9jaGVja1BhdGhzKHRoaXMuX2ZpbHRlcnMsImZpbHRlcmluZyIsbikmJihuPXRoaXMuX2ZpbHRlcihuKSksdGhpcy5zaXplPW4ubGVuZ3RoLHQuc29ydE9yZGVycy5sZW5ndGgmJnRoaXMuX2NoZWNrUGF0aHModGhpcy5fc29ydGVycywic29ydGluZyIsbikmJihuPW4uc29ydCh0aGlzLl9tdWx0aVNvcnQuYmluZCh0aGlzKSkpO2NvbnN0IGk9dC5wYWdlKnQucGFnZVNpemU7ZShuLnNsaWNlKGksaSt0LnBhZ2VTaXplKSxuLmxlbmd0aCl9X2NoZWNrUGF0aHModCxlLG4pe2lmKCFuLmxlbmd0aClyZXR1cm4hMTtsZXQgaT0hMDtmb3IobGV0IHIgaW4gdCl7Y29uc3Qgbz10W3JdLnBhdGg7aWYoIW98fC0xPT09by5pbmRleE9mKCIuIikpY29udGludWU7Y29uc3QgYT1vLnJlcGxhY2UoL1wuW14uXSokLywiIik7dm9pZCAwPT09RW8uZ2V0KGEsblswXSkmJihjb25zb2xlLndhcm4oYFBhdGggIiR7b30iIHVzZWQgZm9yICR7ZX0gZG9lcyBub3QgZXhpc3QgaW4gYWxsIG9mIHRoZSBpdGVtcywgJHtlfSBpcyBkaXNhYmxlZC5gKSxpPSExKX1yZXR1cm4gaX1fbXVsdGlTb3J0KHQsZSl7cmV0dXJuIHRoaXMuX3NvcnRlcnMubWFwKChuPT4iYXNjIj09PW4uZGlyZWN0aW9uP3RoaXMuX2NvbXBhcmUoRW8uZ2V0KG4ucGF0aCx0KSxFby5nZXQobi5wYXRoLGUpKToiZGVzYyI9PT1uLmRpcmVjdGlvbj90aGlzLl9jb21wYXJlKEVvLmdldChuLnBhdGgsZSksRW8uZ2V0KG4ucGF0aCx0KSk6MCkpLnJlZHVjZSgoKHQsZSk9PnR8fGUpLDApfV9ub3JtYWxpemVFbXB0eVZhbHVlKHQpe3JldHVyblt2b2lkIDAsbnVsbF0uaW5kZXhPZih0KT49MD8iIjppc05hTih0KT90LnRvU3RyaW5nKCk6dH1fY29tcGFyZSh0LGUpe3JldHVybih0PXRoaXMuX25vcm1hbGl6ZUVtcHR5VmFsdWUodCkpPChlPXRoaXMuX25vcm1hbGl6ZUVtcHR5VmFsdWUoZSkpPy0xOnQ+ZT8xOjB9X2ZpbHRlcih0KXtyZXR1cm4gdC5maWx0ZXIoKHQ9PjA9PT10aGlzLl9maWx0ZXJzLmZpbHRlcigoZT0+e2NvbnN0IG49dGhpcy5fbm9ybWFsaXplRW1wdHlWYWx1ZShFby5nZXQoZS5wYXRoLHQpKSxpPXRoaXMuX25vcm1hbGl6ZUVtcHR5VmFsdWUoZS52YWx1ZSkudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpO3JldHVybi0xPT09bi50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihpKX0pKS5sZW5ndGgpKX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAyMSBWYWFkaW4gTHRkLgogICAgICogVGhpcyBwcm9ncmFtIGlzIGF2YWlsYWJsZSB1bmRlciBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgYXZhaWxhYmxlIGF0IGh0dHBzOi8vdmFhZGluLmNvbS9saWNlbnNlLwogICAgICovLFYxdD10PT5jbGFzcyBleHRlbmRzKGJpKHQpKXtyZWFkeSgpe3N1cGVyLnJlYWR5KCk7Y29uc3QgdD10aGlzLiQuc2Nyb2xsZXI7Y2kodCwidHJhY2siLHRoaXMuX29uSGVhZGVyVHJhY2suYmluZCh0aGlzKSksdC5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaG1vdmUiLChlPT50Lmhhc0F0dHJpYnV0ZSgiY29sdW1uLXJlc2l6aW5nIikmJmUucHJldmVudERlZmF1bHQoKSkpLHQuYWRkRXZlbnRMaXN0ZW5lcigiY29udGV4dG1lbnUiLCh0PT4icmVzaXplLWhhbmRsZSI9PXQudGFyZ2V0LmdldEF0dHJpYnV0ZSgicGFydCIpJiZ0LnByZXZlbnREZWZhdWx0KCkpKSx0LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsKHQ9PiJyZXNpemUtaGFuZGxlIj09PXQudGFyZ2V0LmdldEF0dHJpYnV0ZSgicGFydCIpJiZ0LnByZXZlbnREZWZhdWx0KCkpKX1fb25IZWFkZXJUcmFjayh0KXtjb25zdCBlPXQudGFyZ2V0O2lmKCJyZXNpemUtaGFuZGxlIj09PWUuZ2V0QXR0cmlidXRlKCJwYXJ0Iikpe2xldCBuPWUucGFyZW50RWxlbWVudC5fY29sdW1uO2Zvcih0aGlzLl90b2dnbGVBdHRyaWJ1dGUoImNvbHVtbi1yZXNpemluZyIsITAsdGhpcy4kLnNjcm9sbGVyKTsidmFhZGluLWdyaWQtY29sdW1uLWdyb3VwIj09PW4ubG9jYWxOYW1lOyluPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKG4uX2NoaWxkQ29sdW1ucywwKS5zb3J0KChmdW5jdGlvbih0LGUpe3JldHVybiB0Ll9vcmRlci1lLl9vcmRlcn0pKS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiF0LmhpZGRlbn0pKS5wb3AoKTtjb25zdCBpPUFycmF5LmZyb20odGhpcy4kLmhlYWRlci5xdWVyeVNlbGVjdG9yQWxsKCdbcGFydH49InJvdyJdOmxhc3QtY2hpbGQgW3BhcnR+PSJjZWxsIl0nKSkscj1pLmZpbHRlcigodD0+dC5fY29sdW1uPT09bikpWzBdO2lmKHIub2Zmc2V0V2lkdGgpe2NvbnN0IGU9d2luZG93LmdldENvbXB1dGVkU3R5bGUociksaT0xMCtwYXJzZUludChlLnBhZGRpbmdMZWZ0KStwYXJzZUludChlLnBhZGRpbmdSaWdodCkrcGFyc2VJbnQoZS5ib3JkZXJMZWZ0V2lkdGgpK3BhcnNlSW50KGUuYm9yZGVyUmlnaHRXaWR0aCkrcGFyc2VJbnQoZS5tYXJnaW5MZWZ0KStwYXJzZUludChlLm1hcmdpblJpZ2h0KSxvPXIub2Zmc2V0V2lkdGgrKHRoaXMuX19pc1JUTD9yLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQtdC5kZXRhaWwueDp0LmRldGFpbC54LXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkucmlnaHQpO24ud2lkdGg9TWF0aC5tYXgoaSxvKSsicHgiLG4uZmxleEdyb3c9MH1pLnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuX2NvbHVtbi5fb3JkZXItZS5fY29sdW1uLl9vcmRlcn0pKS5mb3JFYWNoKChmdW5jdGlvbih0LGUsbil7ZTxuLmluZGV4T2YocikmJih0Ll9jb2x1bW4ud2lkdGg9dC5vZmZzZXRXaWR0aCsicHgiLHQuX2NvbHVtbi5mbGV4R3Jvdz0wKX0pKSwiZW5kIj09PXQuZGV0YWlsLnN0YXRlJiYodGhpcy5fdG9nZ2xlQXR0cmlidXRlKCJjb2x1bW4tcmVzaXppbmciLCExLHRoaXMuJC5zY3JvbGxlciksdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiY29sdW1uLXJlc2l6ZSIse2RldGFpbDp7cmVzaXplZENvbHVtbjpufX0pKSksdGhpcy5fcmVzaXplSGFuZGxlcigpfX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAyMSBWYWFkaW4gTHRkLgogICAgICogVGhpcyBwcm9ncmFtIGlzIGF2YWlsYWJsZSB1bmRlciBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgYXZhaWxhYmxlIGF0IGh0dHBzOi8vdmFhZGluLmNvbS9saWNlbnNlLwogICAgICovLFUxdD1jbGFzcyB0e2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLmdyaWQ9dCx0aGlzLnBhcmVudENhY2hlPWUsdGhpcy5wYXJlbnRJdGVtPW4sdGhpcy5pdGVtQ2FjaGVzPXt9LHRoaXMuaXRlbXM9e30sdGhpcy5lZmZlY3RpdmVTaXplPTAsdGhpcy5zaXplPTAsdGhpcy5wZW5kaW5nUmVxdWVzdHM9e319aXNMb2FkaW5nKCl7cmV0dXJuIEJvb2xlYW4oT2JqZWN0LmtleXModGhpcy5wZW5kaW5nUmVxdWVzdHMpLmxlbmd0aHx8T2JqZWN0LmtleXModGhpcy5pdGVtQ2FjaGVzKS5maWx0ZXIoKHQ9PnRoaXMuaXRlbUNhY2hlc1t0XS5pc0xvYWRpbmcoKSkpWzBdKX1nZXRJdGVtRm9ySW5kZXgodCl7Y29uc3R7Y2FjaGU6ZSxzY2FsZWRJbmRleDpufT10aGlzLmdldENhY2hlQW5kSW5kZXgodCk7cmV0dXJuIGUuaXRlbXNbbl19dXBkYXRlU2l6ZSgpe3RoaXMuZWZmZWN0aXZlU2l6ZT0hdGhpcy5wYXJlbnRJdGVtfHx0aGlzLmdyaWQuX2lzRXhwYW5kZWQodGhpcy5wYXJlbnRJdGVtKT90aGlzLnNpemUrT2JqZWN0LmtleXModGhpcy5pdGVtQ2FjaGVzKS5yZWR1Y2UoKCh0LGUpPT57Y29uc3Qgbj10aGlzLml0ZW1DYWNoZXNbZV07cmV0dXJuIG4udXBkYXRlU2l6ZSgpLHQrbi5lZmZlY3RpdmVTaXplfSksMCk6MH1lbnN1cmVTdWJDYWNoZUZvclNjYWxlZEluZGV4KGUpe2lmKCF0aGlzLml0ZW1DYWNoZXNbZV0pe2NvbnN0IG49bmV3IHQodGhpcy5ncmlkLHRoaXMsdGhpcy5pdGVtc1tlXSk7dGhpcy5pdGVtQ2FjaGVzW2VdPW4sdGhpcy5ncmlkLl9sb2FkUGFnZSgwLG4pfX1nZXRDYWNoZUFuZEluZGV4KHQpe2xldCBlPXQ7Y29uc3Qgbj1PYmplY3Qua2V5cyh0aGlzLml0ZW1DYWNoZXMpO2ZvcihsZXQgdD0wO3Q8bi5sZW5ndGg7dCsrKXtjb25zdCBpPU51bWJlcihuW3RdKSxyPXRoaXMuaXRlbUNhY2hlc1tpXTtpZihlPD1pKXJldHVybntjYWNoZTp0aGlzLHNjYWxlZEluZGV4OmV9O2lmKGU8PWkrci5lZmZlY3RpdmVTaXplKXJldHVybiByLmdldENhY2hlQW5kSW5kZXgoZS1pLTEpO2UtPXIuZWZmZWN0aXZlU2l6ZX1yZXR1cm57Y2FjaGU6dGhpcyxzY2FsZWRJbmRleDplfX19LGoxdD10PT5jbGFzcyBleHRlbmRzIHR7c3RhdGljIGdldCBwcm9wZXJ0aWVzKCl7cmV0dXJue3BhZ2VTaXplOnt0eXBlOk51bWJlcix2YWx1ZTo1MCxvYnNlcnZlcjoiX3BhZ2VTaXplQ2hhbmdlZCJ9LGRhdGFQcm92aWRlcjp7dHlwZTpPYmplY3Qsbm90aWZ5OiEwLG9ic2VydmVyOiJfZGF0YVByb3ZpZGVyQ2hhbmdlZCJ9LGxvYWRpbmc6e3R5cGU6Qm9vbGVhbixub3RpZnk6ITAscmVhZE9ubHk6ITAscmVmbGVjdFRvQXR0cmlidXRlOiEwfSxfY2FjaGU6e3R5cGU6T2JqZWN0LHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBVMXQodGhpcyl9fSxpdGVtSWRQYXRoOnt0eXBlOlN0cmluZyx2YWx1ZTpudWxsfSxleHBhbmRlZEl0ZW1zOnt0eXBlOk9iamVjdCxub3RpZnk6ITAsdmFsdWU6KCk9PltdfX19c3RhdGljIGdldCBvYnNlcnZlcnMoKXtyZXR1cm5bIl9zaXplQ2hhbmdlZChzaXplKSIsIl9pdGVtSWRQYXRoQ2hhbmdlZChpdGVtSWRQYXRoKSIsIl9leHBhbmRlZEl0ZW1zQ2hhbmdlZChleHBhbmRlZEl0ZW1zLiopIl19X3NpemVDaGFuZ2VkKHQpe2NvbnN0IGU9dC10aGlzLl9jYWNoZS5zaXplO3RoaXMuX2NhY2hlLnNpemUrPWUsdGhpcy5fY2FjaGUuZWZmZWN0aXZlU2l6ZSs9ZSx0aGlzLl9lZmZlY3RpdmVTaXplPXRoaXMuX2NhY2hlLmVmZmVjdGl2ZVNpemUsdGhpcy5faW5jcmVhc2VQb29sSWZOZWVkZWQoMCksdGhpcy5fZGVib3VuY2VJbmNyZWFzZVBvb2wmJnRoaXMuX2RlYm91bmNlSW5jcmVhc2VQb29sLmZsdXNoKCl9X2dldEl0ZW0odCxlKXtpZih0Pj10aGlzLl9lZmZlY3RpdmVTaXplKXJldHVybjtlLmluZGV4PXQ7Y29uc3R7Y2FjaGU6bixzY2FsZWRJbmRleDppfT10aGlzLl9jYWNoZS5nZXRDYWNoZUFuZEluZGV4KHQpLHI9bi5pdGVtc1tpXTtyPyh0aGlzLl90b2dnbGVBdHRyaWJ1dGUoImxvYWRpbmciLCExLGUpLHRoaXMuX3VwZGF0ZUl0ZW0oZSxyKSx0aGlzLl9pc0V4cGFuZGVkKHIpJiZuLmVuc3VyZVN1YkNhY2hlRm9yU2NhbGVkSW5kZXgoaSkpOih0aGlzLl90b2dnbGVBdHRyaWJ1dGUoImxvYWRpbmciLCEwLGUpLHRoaXMuX2xvYWRQYWdlKHRoaXMuX2dldFBhZ2VGb3JJbmRleChpKSxuKSl9X2V4cGFuZGVkSW5zdGFuY2VDaGFuZ2VkQ2FsbGJhY2sodCxlKXt2b2lkIDAhPT10Lml0ZW0mJihlP3RoaXMuZXhwYW5kSXRlbSh0Lml0ZW0pOnRoaXMuY29sbGFwc2VJdGVtKHQuaXRlbSkpfWdldEl0ZW1JZCh0KXtyZXR1cm4gdGhpcy5pdGVtSWRQYXRoP3RoaXMuZ2V0KHRoaXMuaXRlbUlkUGF0aCx0KTp0fV9pc0V4cGFuZGVkKHQpe3JldHVybiB0aGlzLl9fZXhwYW5kZWRLZXlzLmhhcyh0aGlzLmdldEl0ZW1JZCh0KSl9X2V4cGFuZGVkSXRlbXNDaGFuZ2VkKCl7dGhpcy5fX2NhY2hlRXhwYW5kZWRLZXlzKCksdGhpcy5fY2FjaGUudXBkYXRlU2l6ZSgpLHRoaXMuX2VmZmVjdGl2ZVNpemU9dGhpcy5fY2FjaGUuZWZmZWN0aXZlU2l6ZSx0aGlzLl9hc3NpZ25Nb2RlbHMoKX1faXRlbUlkUGF0aENoYW5nZWQoKXt0aGlzLl9fY2FjaGVFeHBhbmRlZEtleXMoKX1fX2NhY2hlRXhwYW5kZWRLZXlzKCl7dGhpcy5leHBhbmRlZEl0ZW1zJiYodGhpcy5fX2V4cGFuZGVkS2V5cz1uZXcgU2V0LHRoaXMuZXhwYW5kZWRJdGVtcy5mb3JFYWNoKCh0PT57dGhpcy5fX2V4cGFuZGVkS2V5cy5hZGQodGhpcy5nZXRJdGVtSWQodCkpfSkpKX1leHBhbmRJdGVtKHQpe3RoaXMuX2lzRXhwYW5kZWQodCl8fCh0aGlzLmV4cGFuZGVkSXRlbXM9Wy4uLnRoaXMuZXhwYW5kZWRJdGVtcyx0XSl9Y29sbGFwc2VJdGVtKHQpe3RoaXMuX2lzRXhwYW5kZWQodCkmJih0aGlzLmV4cGFuZGVkSXRlbXM9dGhpcy5leHBhbmRlZEl0ZW1zLmZpbHRlcigoZT0+IXRoaXMuX2l0ZW1zRXF1YWwoZSx0KSkpKX1fZ2V0SW5kZXhMZXZlbCh0KXtsZXR7Y2FjaGU6ZX09dGhpcy5fY2FjaGUuZ2V0Q2FjaGVBbmRJbmRleCh0KSxuPTA7Zm9yKDtlLnBhcmVudENhY2hlOyllPWUucGFyZW50Q2FjaGUsbisrO3JldHVybiBufV9jYW5Qb3B1bGF0ZSgpe3JldHVybiBCb29sZWFuKHRoaXMuX2hhc0RhdGEmJnRoaXMuX2NvbHVtblRyZWUpfV9sb2FkUGFnZSh0LGUpe2lmKCFlLnBlbmRpbmdSZXF1ZXN0c1t0XSYmdGhpcy5kYXRhUHJvdmlkZXIpe3RoaXMuX3NldExvYWRpbmcoITApLGUucGVuZGluZ1JlcXVlc3RzW3RdPSEwO2NvbnN0IG49e3BhZ2U6dCxwYWdlU2l6ZTp0aGlzLnBhZ2VTaXplLHNvcnRPcmRlcnM6dGhpcy5fbWFwU29ydGVycygpLGZpbHRlcnM6dGhpcy5fbWFwRmlsdGVycygpLHBhcmVudEl0ZW06ZS5wYXJlbnRJdGVtfTt0aGlzLl9kZWJvdW5jZUluY3JlYXNlUG9vbCYmdGhpcy5fZGVib3VuY2VJbmNyZWFzZVBvb2wuZmx1c2goKSx0aGlzLmRhdGFQcm92aWRlcihuLCgoaSxyKT0+e3ZvaWQgMCE9PXI/ZS5zaXplPXI6bi5wYXJlbnRJdGVtJiYoZS5zaXplPWkubGVuZ3RoKTtjb25zdCBvPUFycmF5LmZyb20odGhpcy4kLml0ZW1zLmNoaWxkcmVuKS5tYXAoKHQ9PnQuX2l0ZW0pKTtpLmZvckVhY2goKChuLGkpPT57Y29uc3Qgcj10KnRoaXMucGFnZVNpemUraTtlLml0ZW1zW3JdPW4sdGhpcy5faXNFeHBhbmRlZChuKSYmby5pbmRleE9mKG4pPi0xJiZlLmVuc3VyZVN1YkNhY2hlRm9yU2NhbGVkSW5kZXgocil9KSksdGhpcy5faGFzRGF0YT0hMCxkZWxldGUgZS5wZW5kaW5nUmVxdWVzdHNbdF0sdGhpcy5fZGVib3VuY2VyQXBwbHlDYWNoZWREYXRhPU5uLmRlYm91bmNlKHRoaXMuX2RlYm91bmNlckFwcGx5Q2FjaGVkRGF0YSxndC5hZnRlcigwKSwoKCk9Pnt0aGlzLl9zZXRMb2FkaW5nKCExKSx0aGlzLl9jYWNoZS51cGRhdGVTaXplKCksdGhpcy5fZWZmZWN0aXZlU2l6ZT10aGlzLl9jYWNoZS5lZmZlY3RpdmVTaXplLEFycmF5LmZyb20odGhpcy4kLml0ZW1zLmNoaWxkcmVuKS5maWx0ZXIoKHQ9PiF0LmhpZGRlbikpLmZvckVhY2goKHQ9Pnt0aGlzLl9jYWNoZS5nZXRJdGVtRm9ySW5kZXgodC5pbmRleCkmJnRoaXMuX2dldEl0ZW0odC5pbmRleCx0KX0pKSx0aGlzLl9pbmNyZWFzZVBvb2xJZk5lZWRlZCgwKSx0aGlzLl9fc2Nyb2xsVG9QZW5kaW5nSW5kZXgoKX0pKSx0aGlzLl9jYWNoZS5pc0xvYWRpbmcoKXx8dGhpcy5fZGVib3VuY2VyQXBwbHlDYWNoZWREYXRhLmZsdXNoKCksdGhpcy5fX2l0ZW1zUmVjZWl2ZWQoKX0pKX19X2dldFBhZ2VGb3JJbmRleCh0KXtyZXR1cm4gTWF0aC5mbG9vcih0L3RoaXMucGFnZVNpemUpfWNsZWFyQ2FjaGUoKXt0aGlzLl9jYWNoZT1uZXcgVTF0KHRoaXMpLEFycmF5LmZyb20odGhpcy4kLml0ZW1zLmNoaWxkcmVuKS5mb3JFYWNoKCh0PT57QXJyYXkuZnJvbSh0LmNoaWxkcmVuKS5mb3JFYWNoKCh0PT57dC5faW5zdGFuY2UmJnQuX2luc3RhbmNlLl9zZXRQZW5kaW5nUHJvcGVydHkoIml0ZW0iLHt9LCExKX0pKX0pKSx0aGlzLl9jYWNoZS5zaXplPXRoaXMuc2l6ZXx8MCx0aGlzLl9jYWNoZS51cGRhdGVTaXplKCksdGhpcy5faGFzRGF0YT0hMSx0aGlzLl9hc3NpZ25Nb2RlbHMoKSx0aGlzLl9lZmZlY3RpdmVTaXplJiZ0aGlzLl9pbml0aWFsUG9vbENyZWF0ZWR8fHRoaXMuX2xvYWRQYWdlKDAsdGhpcy5fY2FjaGUpfV9wYWdlU2l6ZUNoYW5nZWQodCxlKXt2b2lkIDAhPT1lJiZ0IT09ZSYmdGhpcy5jbGVhckNhY2hlKCl9X2NoZWNrU2l6ZSgpe3ZvaWQgMD09PXRoaXMuc2l6ZSYmMD09PXRoaXMuX2VmZmVjdGl2ZVNpemUmJmNvbnNvbGUud2FybigiVGhlIDx2YWFkaW4tZ3JpZD4gbmVlZHMgdGhlIHRvdGFsIG51bWJlciBvZiBpdGVtcyBpbiBvcmRlciB0byBkaXNwbGF5IHJvd3MuIFNldCB0aGUgdG90YWwgbnVtYmVyIG9mIGl0ZW1zIHRvIHRoZSBgc2l6ZWAgcHJvcGVydHksIG9yIHByb3ZpZGUgdGhlIHRvdGFsIG51bWJlciBvZiBpdGVtcyBpbiB0aGUgc2Vjb25kIGFyZ3VtZW50IG9mIHRoZSBgZGF0YVByb3ZpZGVyYOKAmXMgYGNhbGxiYWNrYCBjYWxsLiIpfV9kYXRhUHJvdmlkZXJDaGFuZ2VkKHQsZSl7dm9pZCAwIT09ZSYmdGhpcy5jbGVhckNhY2hlKCksdCYmdGhpcy5pdGVtcyYmdGhpcy5pdGVtcy5sZW5ndGgmJnRoaXMuX3Njcm9sbFRvSW5kZXgodGhpcy5fZmlyc3RWaXNpYmxlSW5kZXgpLHRoaXMuX2Vuc3VyZUZpcnN0UGFnZUxvYWRlZCgpLHRoaXMuX2RlYm91bmNlckNoZWNrU2l6ZT1Obi5kZWJvdW5jZSh0aGlzLl9kZWJvdW5jZXJDaGVja1NpemUsZ3QuYWZ0ZXIoMmUzKSx0aGlzLl9jaGVja1NpemUuYmluZCh0aGlzKSksdGhpcy5fc2Nyb2xsSGFuZGxlcigpfV9lbnN1cmVGaXJzdFBhZ2VMb2FkZWQoKXt0aGlzLl9oYXNEYXRhfHx0aGlzLl9sb2FkUGFnZSgwLHRoaXMuX2NhY2hlKX1faXRlbXNFcXVhbCh0LGUpe3JldHVybiB0aGlzLmdldEl0ZW1JZCh0KT09PXRoaXMuZ2V0SXRlbUlkKGUpfV9nZXRJdGVtSW5kZXhJbkFycmF5KHQsZSl7bGV0IG49LTE7cmV0dXJuIGUuZm9yRWFjaCgoKGUsaSk9Pnt0aGlzLl9pdGVtc0VxdWFsKGUsdCkmJihuPWkpfSkpLG59c2Nyb2xsVG9JbmRleCh0KXtzdXBlci5zY3JvbGxUb0luZGV4KHQpLGlzTmFOKHQpfHwhdGhpcy5fY2FjaGUuaXNMb2FkaW5nKCkmJnRoaXMuY2xpZW50SGVpZ2h0fHwodGhpcy5fX3BlbmRpbmdTY3JvbGxUb0luZGV4PXQpfV9fc2Nyb2xsVG9QZW5kaW5nSW5kZXgoKXtpZih0aGlzLl9fcGVuZGluZ1Njcm9sbFRvSW5kZXgmJnRoaXMuJC5pdGVtcy5jaGlsZHJlbi5sZW5ndGgpe2NvbnN0IHQ9dGhpcy5fX3BlbmRpbmdTY3JvbGxUb0luZGV4O2RlbGV0ZSB0aGlzLl9fcGVuZGluZ1Njcm9sbFRvSW5kZXgsdGhpcy5fZGVib3VuY2VJbmNyZWFzZVBvb2wmJnRoaXMuX2RlYm91bmNlSW5jcmVhc2VQb29sLmZsdXNoKCksdGhpcy5zY3JvbGxUb0luZGV4KHQpfX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAyMSBWYWFkaW4gTHRkLgogICAgICogVGhpcyBwcm9ncmFtIGlzIGF2YWlsYWJsZSB1bmRlciBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgYXZhaWxhYmxlIGF0IGh0dHBzOi8vdmFhZGluLmNvbS9saWNlbnNlLwogICAgICovLEcxdD10PT5jbGFzcyBleHRlbmRzIHR7cmVhZHkoKXtzdXBlci5yZWFkeSgpLHRoaXMuX2FkZE5vZGVPYnNlcnZlcigpfV9oYXNDb2x1bW5Hcm91cHModCl7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspaWYoInZhYWRpbi1ncmlkLWNvbHVtbi1ncm91cCI9PT10W2VdLmxvY2FsTmFtZSlyZXR1cm4hMDtyZXR1cm4hMX1fZ2V0Q2hpbGRDb2x1bW5zKHQpe3JldHVybiBHaS5nZXRGbGF0dGVuZWROb2Rlcyh0KS5maWx0ZXIodGhpcy5faXNDb2x1bW5FbGVtZW50KX1fZmxhdHRlbkNvbHVtbkdyb3Vwcyh0KXtyZXR1cm4gdC5tYXAoKHQ9PiJ2YWFkaW4tZ3JpZC1jb2x1bW4tZ3JvdXAiPT09dC5sb2NhbE5hbWU/dGhpcy5fZ2V0Q2hpbGRDb2x1bW5zKHQpOlt0XSkpLnJlZHVjZSgoKHQsZSk9PnQuY29uY2F0KGUpKSxbXSl9X2dldENvbHVtblRyZWUoKXtjb25zdCB0PVtdO2ZvcihsZXQgZT1HaS5nZXRGbGF0dGVuZWROb2Rlcyh0aGlzKS5maWx0ZXIodGhpcy5faXNDb2x1bW5FbGVtZW50KTt0LnB1c2goZSksdGhpcy5faGFzQ29sdW1uR3JvdXBzKGUpOyllPXRoaXMuX2ZsYXR0ZW5Db2x1bW5Hcm91cHMoZSk7cmV0dXJuIHR9X3VwZGF0ZUNvbHVtblRyZWUoKXtjb25zdCB0PXRoaXMuX2dldENvbHVtblRyZWUoKTt0aGlzLl9hcnJheUVxdWFscyh0LHRoaXMuX2NvbHVtblRyZWUpfHwodGhpcy5fY29sdW1uVHJlZT10KX1fYWRkTm9kZU9ic2VydmVyKCl7dGhpcy5fb2JzZXJ2ZXI9bmV3IEdpKHRoaXMsKHQ9Pntjb25zdCBlPXQuYWRkZWROb2Rlcy5maWx0ZXIoKHQ9PiJ0ZW1wbGF0ZSI9PT10LmxvY2FsTmFtZSYmdC5jbGFzc0xpc3QuY29udGFpbnMoInJvdy1kZXRhaWxzIikpKVswXTtlJiZ0aGlzLl9yb3dEZXRhaWxzVGVtcGxhdGUhPT1lJiYodGhpcy5fcm93RGV0YWlsc1RlbXBsYXRlPWUpO2NvbnN0IG49dD0+dC5maWx0ZXIodGhpcy5faXNDb2x1bW5FbGVtZW50KS5sZW5ndGg+MDtpZihuKHQuYWRkZWROb2Rlcyl8fG4odC5yZW1vdmVkTm9kZXMpKXtjb25zdCBlPXQucmVtb3ZlZE5vZGVzLmZsYXRNYXAoKHQ9PnQuX2FsbENlbGxzKSksbj10PT5lLmZpbHRlcigoZT0+ZS5fY29udGVudC5jb250YWlucyh0KSkpLmxlbmd0aDt0aGlzLl9fcmVtb3ZlU29ydGVycyh0aGlzLl9zb3J0ZXJzLmZpbHRlcihuKSksdGhpcy5fX3JlbW92ZUZpbHRlcnModGhpcy5fZmlsdGVycy5maWx0ZXIobikpLHRoaXMuX3VwZGF0ZUNvbHVtblRyZWUoKX10aGlzLl9kZWJvdW5jZXJDaGVja0ltcG9ydHM9Tm4uZGVib3VuY2UodGhpcy5fZGVib3VuY2VyQ2hlY2tJbXBvcnRzLGd0LmFmdGVyKDJlMyksdGhpcy5fY2hlY2tJbXBvcnRzLmJpbmQodGhpcykpLHRoaXMuX2Vuc3VyZUZpcnN0UGFnZUxvYWRlZCgpfSkpfV9hcnJheUVxdWFscyh0LGUpe2lmKCF0fHwhZXx8dC5sZW5ndGghPWUubGVuZ3RoKXJldHVybiExO2ZvcihsZXQgbj0wLGk9dC5sZW5ndGg7bjxpO24rKylpZih0W25daW5zdGFuY2VvZiBBcnJheSYmZVtuXWluc3RhbmNlb2YgQXJyYXkpe2lmKCF0aGlzLl9hcnJheUVxdWFscyh0W25dLGVbbl0pKXJldHVybiExfWVsc2UgaWYodFtuXSE9ZVtuXSlyZXR1cm4hMTtyZXR1cm4hMH1fY2hlY2tJbXBvcnRzKCl7WyJ2YWFkaW4tZ3JpZC1jb2x1bW4tZ3JvdXAiLCJ2YWFkaW4tZ3JpZC1maWx0ZXIiLCJ2YWFkaW4tZ3JpZC1maWx0ZXItY29sdW1uIiwidmFhZGluLWdyaWQtdHJlZS10b2dnbGUiLCJ2YWFkaW4tZ3JpZC1zZWxlY3Rpb24tY29sdW1uIiwidmFhZGluLWdyaWQtc29ydC1jb2x1bW4iLCJ2YWFkaW4tZ3JpZC1zb3J0ZXIiXS5mb3JFYWNoKCh0PT57Y29uc3QgZT10aGlzLnF1ZXJ5U2VsZWN0b3IodCk7IWV8fGUgaW5zdGFuY2VvZiB3ZXx8Y29uc29sZS53YXJuKGBNYWtlIHN1cmUgeW91IGhhdmUgaW1wb3J0ZWQgdGhlIHJlcXVpcmVkIG1vZHVsZSBmb3IgPCR7dH0+IGVsZW1lbnQuYCl9KSl9X3VwZGF0ZUZpcnN0QW5kTGFzdENvbHVtbigpe0FycmF5LmZyb20odGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3JBbGwoInRyIikpLmZvckVhY2goKHQ9PnRoaXMuX3VwZGF0ZUZpcnN0QW5kTGFzdENvbHVtbkZvclJvdyh0KSkpfV91cGRhdGVGaXJzdEFuZExhc3RDb2x1bW5Gb3JSb3codCl7QXJyYXkuZnJvbSh0LnF1ZXJ5U2VsZWN0b3JBbGwoJ1twYXJ0fj0iY2VsbCJdOm5vdChbcGFydH49ImRldGFpbHMtY2VsbCJdKScpKS5zb3J0KCgodCxlKT0+dC5fY29sdW1uLl9vcmRlci1lLl9jb2x1bW4uX29yZGVyKSkuZm9yRWFjaCgoKHQsZSxuKT0+e3RoaXMuX3RvZ2dsZUF0dHJpYnV0ZSgiZmlyc3QtY29sdW1uIiwwPT09ZSx0KSx0aGlzLl90b2dnbGVBdHRyaWJ1dGUoImxhc3QtY29sdW1uIixlPT09bi5sZW5ndGgtMSx0KX0pKX1faXNDb2x1bW5FbGVtZW50KHQpe3JldHVybiB0Lm5vZGVUeXBlPT09Tm9kZS5FTEVNRU5UX05PREUmJi9cYmNvbHVtblxiLy50ZXN0KHQubG9jYWxOYW1lKX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAyMSBWYWFkaW4gTHRkLgogICAgICogVGhpcyBwcm9ncmFtIGlzIGF2YWlsYWJsZSB1bmRlciBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgYXZhaWxhYmxlIGF0IGh0dHBzOi8vdmFhZGluLmNvbS9saWNlbnNlLwogICAgICovLFcxdD10PT5jbGFzcyBleHRlbmRzIHR7Z2V0RXZlbnRDb250ZXh0KHQpe2NvbnN0IGU9e30sbj10LmNvbXBvc2VkUGF0aCgpLGk9bltuLmluZGV4T2YodGhpcy4kLnRhYmxlKS0zXTtyZXR1cm4gaT8oZS5zZWN0aW9uPVsiYm9keSIsImhlYWRlciIsImZvb3RlciIsImRldGFpbHMiXS5maWx0ZXIoKHQ9PmkuZ2V0QXR0cmlidXRlKCJwYXJ0IikuaW5kZXhPZih0KT4tMSkpWzBdLGkuX2NvbHVtbiYmKGUuY29sdW1uPWkuX2NvbHVtbiksImJvZHkiIT09ZS5zZWN0aW9uJiYiZGV0YWlscyIhPT1lLnNlY3Rpb258fE9iamVjdC5hc3NpZ24oZSx0aGlzLl9fZ2V0Um93TW9kZWwoaS5wYXJlbnRFbGVtZW50KSksZSk6ZX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAyMSBWYWFkaW4gTHRkLgogICAgICogVGhpcyBwcm9ncmFtIGlzIGF2YWlsYWJsZSB1bmRlciBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgYXZhaWxhYmxlIGF0IGh0dHBzOi8vdmFhZGluLmNvbS9saWNlbnNlLwogICAgICovLHExdD10PT5jbGFzcyBleHRlbmRzIHR7c3RhdGljIGdldCBwcm9wZXJ0aWVzKCl7cmV0dXJue19maWx0ZXJzOnt0eXBlOkFycmF5LHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuW119fX19cmVhZHkoKXtzdXBlci5yZWFkeSgpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigiZmlsdGVyLWNoYW5nZWQiLHRoaXMuX2ZpbHRlckNoYW5nZWQuYmluZCh0aGlzKSl9X2ZpbHRlckNoYW5nZWQodCl7dC5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLl9fYWRkRmlsdGVyKHQudGFyZ2V0KSx0aGlzLl9fYXBwbHlGaWx0ZXJzKCl9X19yZW1vdmVGaWx0ZXJzKHQpezAhPXQubGVuZ3RoJiYodGhpcy5fZmlsdGVycz10aGlzLl9maWx0ZXJzLmZpbHRlcigoZT0+dC5pbmRleE9mKGUpPDApKSx0aGlzLl9fYXBwbHlGaWx0ZXJzKCkpfV9fYWRkRmlsdGVyKHQpey0xPT09dGhpcy5fZmlsdGVycy5pbmRleE9mKHQpJiZ0aGlzLl9maWx0ZXJzLnB1c2godCl9X19hcHBseUZpbHRlcnMoKXt0aGlzLmRhdGFQcm92aWRlciYmdGhpcy5pc0F0dGFjaGVkJiZ0aGlzLmNsZWFyQ2FjaGUoKX1fbWFwRmlsdGVycygpe3JldHVybiB0aGlzLl9maWx0ZXJzLm1hcCgodD0+KHtwYXRoOnQucGF0aCx2YWx1ZTp0LnZhbHVlfSkpKX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAyMSBWYWFkaW4gTHRkLgogICAgICogVGhpcyBwcm9ncmFtIGlzIGF2YWlsYWJsZSB1bmRlciBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgYXZhaWxhYmxlIGF0IGh0dHBzOi8vdmFhZGluLmNvbS9saWNlbnNlLwogICAgICovO2NsYXNzIFkxdCBleHRlbmRzIHdle3N0YXRpYyBnZXQgaXMoKXtyZXR1cm4idmFhZGluLWdyaWQtdGVtcGxhdGl6ZXIifXN0YXRpYyBnZXQgcHJvcGVydGllcygpe3JldHVybntkYXRhSG9zdDpPYmplY3QsdGVtcGxhdGU6T2JqZWN0LF90ZW1wbGF0ZUluc3RhbmNlczp7dHlwZTpBcnJheSx2YWx1ZTpmdW5jdGlvbigpe3JldHVybltdfX0sX3BhcmVudFBhdGhWYWx1ZXM6e3ZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJue319fSxfZ3JpZDpPYmplY3R9fXN0YXRpYyBnZXQgb2JzZXJ2ZXJzKCl7cmV0dXJuWyJfdGVtcGxhdGVJbnN0YW5jZXNDaGFuZ2VkKF90ZW1wbGF0ZUluc3RhbmNlcy4qLCBfcGFyZW50UGF0aFZhbHVlcy4qKSJdfWNvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLl9pbnN0YW5jZVByb3BzPXtkZXRhaWxzT3BlbmVkOiEwLGluZGV4OiEwLGl0ZW06ITAsc2VsZWN0ZWQ6ITAsZXhwYW5kZWQ6ITAsbGV2ZWw6ITB9fWNyZWF0ZUluc3RhbmNlKCl7dGhpcy5fZW5zdXJlVGVtcGxhdGl6ZWQoKTtjb25zdCB0PW5ldyB0aGlzLl9UZW1wbGF0ZUNsYXNzKHt9KTtyZXR1cm4gdGhpcy5hZGRJbnN0YW5jZSh0KSx0fWFkZEluc3RhbmNlKHQpey0xPT09dGhpcy5fdGVtcGxhdGVJbnN0YW5jZXMuaW5kZXhPZih0KSYmKHRoaXMuX3RlbXBsYXRlSW5zdGFuY2VzLnB1c2godCkscmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgoKT0+dGhpcy5ub3RpZnlQYXRoKCJfdGVtcGxhdGVJbnN0YW5jZXMuKiIsdGhpcy5fdGVtcGxhdGVJbnN0YW5jZXMpKSkpfXJlbW92ZUluc3RhbmNlKHQpe2NvbnN0IGU9dGhpcy5fdGVtcGxhdGVJbnN0YW5jZXMuaW5kZXhPZih0KTt0aGlzLnNwbGljZSgiX3RlbXBsYXRlSW5zdGFuY2VzIixlLDEpfV9lbnN1cmVUZW1wbGF0aXplZCgpe3RoaXMuX1RlbXBsYXRlQ2xhc3N8fCh0aGlzLl9UZW1wbGF0ZUNsYXNzPWFvKHRoaXMudGVtcGxhdGUsdGhpcyx7aW5zdGFuY2VQcm9wczp0aGlzLl9pbnN0YW5jZVByb3BzLHBhcmVudE1vZGVsOiEwLGZvcndhcmRIb3N0UHJvcDpmdW5jdGlvbih0LGUpe3RoaXMuX2ZvcndhcmRQYXJlbnRQcm9wKHQsZSksdGhpcy5fdGVtcGxhdGVJbnN0YW5jZXMmJnRoaXMuX3RlbXBsYXRlSW5zdGFuY2VzLmZvckVhY2goKG49Pm4ubm90aWZ5UGF0aCh0LGUpKSl9LG5vdGlmeUluc3RhbmNlUHJvcDpmdW5jdGlvbih0LGUsbil7aWYoImluZGV4Ij09PWV8fCJpdGVtIj09PWUpcmV0dXJuO2NvbnN0IGk9YF9fJHtlfV9fYDtpZih0W2ldPT09bilyZXR1cm47dFtpXT1uO2NvbnN0IHI9QXJyYXkuZnJvbSh0aGlzLl9ncmlkLiQuaXRlbXMuY2hpbGRyZW4pLmZpbHRlcigoZT0+dGhpcy5fZ3JpZC5faXRlbXNFcXVhbChlLl9pdGVtLHQuaXRlbSkpKVswXTtyJiZBcnJheS5mcm9tKHIuY2hpbGRyZW4pLmZvckVhY2goKHQ9Pnt0Ll9pbnN0YW5jZSYmKHQuX2luc3RhbmNlW2ldPW4sdC5faW5zdGFuY2Uubm90aWZ5UGF0aChlLG4pKX0pKTtjb25zdCBvPSJpdGVtLiI7aWYoQXJyYXkuaXNBcnJheSh0aGlzLl9ncmlkLml0ZW1zKSYmMD09PWUuaW5kZXhPZihvKSl7Y29uc3QgaT10aGlzLl9ncmlkLml0ZW1zLmluZGV4T2YodC5pdGVtKSxyPWUuc2xpY2Uoby5sZW5ndGgpO3RoaXMuX2dyaWQubm90aWZ5UGF0aChgaXRlbXMuJHtpfS4ke3J9YCxuKX1jb25zdCBhPWBfJHtlfUluc3RhbmNlQ2hhbmdlZENhbGxiYWNrYDt0aGlzLl9ncmlkJiZ0aGlzLl9ncmlkW2FdJiZ0aGlzLl9ncmlkW2FdKHQsbil9fSkpfV9mb3J3YXJkUGFyZW50UHJvcCh0LGUpe3RoaXMuX3BhcmVudFBhdGhWYWx1ZXNbdF09ZSx0aGlzLl90ZW1wbGF0ZUluc3RhbmNlcy5mb3JFYWNoKChuPT5uLm5vdGlmeVBhdGgodCxlKSkpfV90ZW1wbGF0ZUluc3RhbmNlc0NoYW5nZWQodCl7bGV0IGUsbjtpZigiX3RlbXBsYXRlSW5zdGFuY2VzIj09PXQucGF0aCllPTAsbj10aGlzLl90ZW1wbGF0ZUluc3RhbmNlcy5sZW5ndGg7ZWxzZXtpZigiX3RlbXBsYXRlSW5zdGFuY2VzLnNwbGljZXMiIT09dC5wYXRoKXJldHVybjtlPXQudmFsdWUuaW5kZXgsbj10LnZhbHVlLmFkZGVkQ291bnR9T2JqZWN0LmtleXModGhpcy5fcGFyZW50UGF0aFZhbHVlc3x8e30pLmZvckVhY2goKHQ9Pntmb3IobGV0IGk9ZTtpPGUrbjtpKyspdGhpcy5fdGVtcGxhdGVJbnN0YW5jZXNbaV0uc2V0KHQsdGhpcy5fcGFyZW50UGF0aFZhbHVlc1t0XSl9KSl9fWN1c3RvbUVsZW1lbnRzLmRlZmluZShZMXQuaXMsWTF0KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IChjKSAyMDIxIFZhYWRpbiBMdGQuCiAgICAgKiBUaGlzIHByb2dyYW0gaXMgYXZhaWxhYmxlIHVuZGVyIEFwYWNoZSBMaWNlbnNlIFZlcnNpb24gMi4wLCBhdmFpbGFibGUgYXQgaHR0cHM6Ly92YWFkaW4uY29tL2xpY2Vuc2UvCiAgICAgKi8KY29uc3QgWDF0PXQ9PmNsYXNzIGV4dGVuZHMgdHtzdGF0aWMgZ2V0IHByb3BlcnRpZXMoKXtyZXR1cm57ZGV0YWlsc09wZW5lZEl0ZW1zOnt0eXBlOkFycmF5LHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuW119fSxfcm93RGV0YWlsc1RlbXBsYXRlOk9iamVjdCxyb3dEZXRhaWxzUmVuZGVyZXI6RnVuY3Rpb24sX2RldGFpbHNDZWxsczp7dHlwZTpBcnJheX19fXN0YXRpYyBnZXQgb2JzZXJ2ZXJzKCl7cmV0dXJuWyJfZGV0YWlsc09wZW5lZEl0ZW1zQ2hhbmdlZChkZXRhaWxzT3BlbmVkSXRlbXMuKiwgX3Jvd0RldGFpbHNUZW1wbGF0ZSwgcm93RGV0YWlsc1JlbmRlcmVyKSIsIl9yb3dEZXRhaWxzVGVtcGxhdGVPclJlbmRlcmVyQ2hhbmdlZChfcm93RGV0YWlsc1RlbXBsYXRlLCByb3dEZXRhaWxzUmVuZGVyZXIpIl19X3Jvd0RldGFpbHNUZW1wbGF0ZU9yUmVuZGVyZXJDaGFuZ2VkKHQsZSl7aWYodCYmZSl0aHJvdyBuZXcgRXJyb3IoIllvdSBzaG91bGQgb25seSB1c2UgZWl0aGVyIGEgcmVuZGVyZXIgb3IgYSB0ZW1wbGF0ZSBmb3Igcm93IGRldGFpbHMiKTtpZih0fHxlKXtpZih0JiYhdC50ZW1wbGF0aXplcil7Y29uc3QgZT1uZXcgWTF0O2UuX2dyaWQ9dGhpcyxlLmRhdGFIb3N0PXRoaXMuZGF0YUhvc3QsZS50ZW1wbGF0ZT10LHQudGVtcGxhdGl6ZXI9ZX10aGlzLl9jb2x1bW5UcmVlJiZBcnJheS5mcm9tKHRoaXMuJC5pdGVtcy5jaGlsZHJlbikuZm9yRWFjaCgodD0+e3QucXVlcnlTZWxlY3RvcigiW3BhcnR+PWRldGFpbHMtY2VsbF0iKXx8KHRoaXMuX3VwZGF0ZVJvdyh0LHRoaXMuX2NvbHVtblRyZWVbdGhpcy5fY29sdW1uVHJlZS5sZW5ndGgtMV0pLHRoaXMuX2ExMXlVcGRhdGVSb3dEZXRhaWxzT3BlbmVkKHQsITEpKSxkZWxldGUgdC5xdWVyeVNlbGVjdG9yKCJbcGFydH49ZGV0YWlscy1jZWxsXSIpLl9pbnN0YW5jZX0pKSx0aGlzLmRldGFpbHNPcGVuZWRJdGVtcy5sZW5ndGgmJihBcnJheS5mcm9tKHRoaXMuJC5pdGVtcy5jaGlsZHJlbikuZm9yRWFjaCh0aGlzLl90b2dnbGVEZXRhaWxzQ2VsbCx0aGlzKSx0aGlzLl91cGRhdGUoKSl9fV9kZXRhaWxzT3BlbmVkSXRlbXNDaGFuZ2VkKHQpeyJkZXRhaWxzT3BlbmVkSXRlbXMubGVuZ3RoIiE9PXQucGF0aCYmdC52YWx1ZSYmQXJyYXkuZnJvbSh0aGlzLiQuaXRlbXMuY2hpbGRyZW4pLmZvckVhY2goKHQ9Pnt0aGlzLl90b2dnbGVEZXRhaWxzQ2VsbCh0LHQuX2l0ZW0pLHRoaXMuX2ExMXlVcGRhdGVSb3dEZXRhaWxzT3BlbmVkKHQsdGhpcy5faXNEZXRhaWxzT3BlbmVkKHQuX2l0ZW0pKSx0aGlzLl90b2dnbGVBdHRyaWJ1dGUoImRldGFpbHMtb3BlbmVkIix0aGlzLl9pc0RldGFpbHNPcGVuZWQodC5faXRlbSksdCl9KSl9X2NvbmZpZ3VyZURldGFpbHNDZWxsKHQpe3Quc2V0QXR0cmlidXRlKCJwYXJ0IiwiY2VsbCBkZXRhaWxzLWNlbGwiKSx0aGlzLl90b2dnbGVBdHRyaWJ1dGUoImZyb3plbiIsITAsdCl9X3RvZ2dsZURldGFpbHNDZWxsKHQsZSl7Y29uc3Qgbj10LnF1ZXJ5U2VsZWN0b3IoJ1twYXJ0fj0iZGV0YWlscy1jZWxsIl0nKTtpZighbilyZXR1cm47Y29uc3QgaT0hdGhpcy5faXNEZXRhaWxzT3BlbmVkKGUpLHI9ISFuLmhpZGRlbiE9PWk7KG4uX2luc3RhbmNlfHxuLl9yZW5kZXJlcikmJm4uaGlkZGVuPT09aXx8KG4uaGlkZGVuPWksaT90LnN0eWxlLnJlbW92ZVByb3BlcnR5KCJwYWRkaW5nLWJvdHRvbSIpOih0aGlzLnJvd0RldGFpbHNSZW5kZXJlcj8obi5fcmVuZGVyZXI9dGhpcy5yb3dEZXRhaWxzUmVuZGVyZXIsbi5fcmVuZGVyZXIuY2FsbCh0aGlzLG4uX2NvbnRlbnQsdGhpcyx7aW5kZXg6dC5pbmRleCxpdGVtOmV9KSk6dGhpcy5fcm93RGV0YWlsc1RlbXBsYXRlJiYhbi5faW5zdGFuY2UmJihuLl9pbnN0YW5jZT10aGlzLl9yb3dEZXRhaWxzVGVtcGxhdGUudGVtcGxhdGl6ZXIuY3JlYXRlSW5zdGFuY2UoKSxuLl9jb250ZW50LmlubmVySFRNTD0iIixuLl9jb250ZW50LmFwcGVuZENoaWxkKG4uX2luc3RhbmNlLnJvb3QpLHRoaXMuX3VwZGF0ZUl0ZW0odCxlKSksV2koKSx0LnN0eWxlLnNldFByb3BlcnR5KCJwYWRkaW5nLWJvdHRvbSIsYCR7bi5vZmZzZXRIZWlnaHR9cHhgKSxyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCgpPT50aGlzLm5vdGlmeVJlc2l6ZSgpKSkpKSxyJiYodGhpcy5fdXBkYXRlTWV0cmljcygpLHRoaXMuX3Bvc2l0aW9uSXRlbXMoKSl9X3VwZGF0ZURldGFpbHNDZWxsSGVpZ2h0cygpe0FycmF5LmZyb20odGhpcy4kLml0ZW1zLnF1ZXJ5U2VsZWN0b3JBbGwoJ1twYXJ0fj0iZGV0YWlscy1jZWxsIl06bm90KFtoaWRkZW5dKScpKS5mb3JFYWNoKCh0PT57dC5wYXJlbnRFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCJwYWRkaW5nLWJvdHRvbSIsYCR7dC5vZmZzZXRIZWlnaHR9cHhgKX0pKX1faXNEZXRhaWxzT3BlbmVkKHQpe3JldHVybiB0aGlzLmRldGFpbHNPcGVuZWRJdGVtcyYmLTEhPT10aGlzLl9nZXRJdGVtSW5kZXhJbkFycmF5KHQsdGhpcy5kZXRhaWxzT3BlbmVkSXRlbXMpfW9wZW5JdGVtRGV0YWlscyh0KXt0aGlzLl9pc0RldGFpbHNPcGVuZWQodCl8fCh0aGlzLmRldGFpbHNPcGVuZWRJdGVtcz1bLi4udGhpcy5kZXRhaWxzT3BlbmVkSXRlbXMsdF0pfWNsb3NlSXRlbURldGFpbHModCl7dGhpcy5faXNEZXRhaWxzT3BlbmVkKHQpJiYodGhpcy5kZXRhaWxzT3BlbmVkSXRlbXM9dGhpcy5kZXRhaWxzT3BlbmVkSXRlbXMuZmlsdGVyKChlPT4hdGhpcy5faXRlbXNFcXVhbChlLHQpKSkpfV9kZXRhaWxzT3BlbmVkSW5zdGFuY2VDaGFuZ2VkQ2FsbGJhY2sodCxlKXtlP3RoaXMub3Blbkl0ZW1EZXRhaWxzKHQuaXRlbSk6dGhpcy5jbG9zZUl0ZW1EZXRhaWxzKHQuaXRlbSl9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgKGMpIDIwMjEgVmFhZGluIEx0ZC4KICAgICAqIFRoaXMgcHJvZ3JhbSBpcyBhdmFpbGFibGUgdW5kZXIgQXBhY2hlIExpY2Vuc2UgVmVyc2lvbiAyLjAsIGF2YWlsYWJsZSBhdCBodHRwczovL3ZhYWRpbi5jb20vbGljZW5zZS8KICAgICAqLywkMXQ9NTAwLEsxdD01MDAsWjF0PXQ9PmNsYXNzIGV4dGVuZHMgdHtzdGF0aWMgZ2V0IHByb3BlcnRpZXMoKXtyZXR1cm57X2Zyb3plbkNlbGxzOnt0eXBlOkFycmF5LHZhbHVlOigpPT5bXX0sX3Jvd1dpdGhGb2N1c2VkRWxlbWVudDpFbGVtZW50LF9kZWx0YVlBY2M6e3R5cGU6TnVtYmVyLHZhbHVlOjB9LF91c2VTdGlja3k6e3R5cGU6Qm9vbGVhbix2YWx1ZTp3aW5kb3cuQ1NTJiZ3aW5kb3cuQ1NTLnN1cHBvcnRzJiYod2luZG93LkNTUy5zdXBwb3J0cygicG9zaXRpb24iLCJzdGlja3kiKXx8d2luZG93LkNTUy5zdXBwb3J0cygicG9zaXRpb24iLCItd2Via2l0LXN0aWNreSIpKX19fXN0YXRpYyBnZXQgb2JzZXJ2ZXJzKCl7cmV0dXJuWyJfc2Nyb2xsVmlld3BvcnRIZWlnaHRVcGRhdGVkKF92aWV3cG9ydEhlaWdodCkiXX1zZXQgX3Njcm9sbFRvcCh0KXt0aGlzLiQudGFibGUuc2Nyb2xsVG9wPXR9Z2V0IF9zY3JvbGxUb3AoKXtyZXR1cm4gdGhpcy4kLnRhYmxlLnNjcm9sbFRvcH1jb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy5fc2Nyb2xsTGluZUhlaWdodD10aGlzLl9nZXRTY3JvbGxMaW5lSGVpZ2h0KCl9X2dldFNjcm9sbExpbmVIZWlnaHQoKXtjb25zdCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3Quc3R5bGUuZm9udFNpemU9ImluaXRpYWwiLHQuc3R5bGUuZGlzcGxheT0ibm9uZSIsZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0KTtjb25zdCBlPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHQpLmZvbnRTaXplO3JldHVybiBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHQpLGU/d2luZG93LnBhcnNlSW50KGUpOnZvaWQgMH1fc2Nyb2xsVmlld3BvcnRIZWlnaHRVcGRhdGVkKHQpe3RoaXMuX3Njcm9sbFBhZ2VIZWlnaHQ9dC10aGlzLiQuaGVhZGVyLmNsaWVudEhlaWdodC10aGlzLiQuZm9vdGVyLmNsaWVudEhlaWdodC10aGlzLl9zY3JvbGxMaW5lSGVpZ2h0fXJlYWR5KCl7c3VwZXIucmVhZHkoKSx0aGlzLiQub3V0ZXJzY3JvbGxlcj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLnNjcm9sbFRhcmdldD10aGlzLiQudGFibGUsdGhpcy5hZGRFdmVudExpc3RlbmVyKCJ3aGVlbCIsdGhpcy5fb25XaGVlbCksdGhpcy4kLml0ZW1zLmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzaW4iLCh0PT57Y29uc3QgZT10LmNvbXBvc2VkUGF0aCgpLmluZGV4T2YodGhpcy4kLml0ZW1zKTt0aGlzLl9yb3dXaXRoRm9jdXNlZEVsZW1lbnQ9dC5jb21wb3NlZFBhdGgoKVtlLTFdfSkpLHRoaXMuJC5pdGVtcy5hZGRFdmVudExpc3RlbmVyKCJmb2N1c291dCIsKCgpPT50aGlzLl9yb3dXaXRoRm9jdXNlZEVsZW1lbnQ9dm9pZCAwKSksdGhpcy5zY3JvbGxUYXJnZXQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwoKCk9PnRoaXMuX19tb3VzZURvd249ITApKSx0aGlzLnNjcm9sbFRhcmdldC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXVwIiwoKCk9Pnt0aGlzLl9fbW91c2VEb3duPSExLHRoaXMuX19wZW5kaW5nUmVvcmRlciYmKHRoaXMuX19wZW5kaW5nUmVvcmRlcj0hMSxzZXRUaW1lb3V0KCgoKT0+dGhpcy5fcmVvcmRlclJvd3MoKSksJDF0KSl9KSl9c2Nyb2xsVG9JbmRleCh0KXt0aGlzLl9hY2Nlc3NJcm9uTGlzdEFQSSgoKCk9PnN1cGVyLnNjcm9sbFRvSW5kZXgodCkpKX1fb25XaGVlbCh0KXtpZih0LmN0cmxLZXl8fHRoaXMuX2hhc1Njcm9sbGVkQW5jZXN0b3IodC50YXJnZXQsdC5kZWx0YVgsdC5kZWx0YVkpKXJldHVybjtjb25zdCBlPXRoaXMuJC50YWJsZTtsZXQgbj10LmRlbHRhWTtpZih0LmRlbHRhTW9kZT09PVdoZWVsRXZlbnQuRE9NX0RFTFRBX0xJTkU/bio9dGhpcy5fc2Nyb2xsTGluZUhlaWdodDp0LmRlbHRhTW9kZT09PVdoZWVsRXZlbnQuRE9NX0RFTFRBX1BBR0UmJihuKj10aGlzLl9zY3JvbGxQYWdlSGVpZ2h0KSx0aGlzLl93aGVlbEFuaW1hdGlvbkZyYW1lKXJldHVybiB0aGlzLl9kZWx0YVlBY2MrPW4sdm9pZCB0LnByZXZlbnREZWZhdWx0KCk7bis9dGhpcy5fZGVsdGFZQWNjLHRoaXMuX2RlbHRhWUFjYz0wLHRoaXMuX3doZWVsQW5pbWF0aW9uRnJhbWU9ITAsdGhpcy5fZGVib3VuY2VyV2hlZWxBbmltYXRpb25GcmFtZT1Obi5kZWJvdW5jZSh0aGlzLl9kZWJvdW5jZXJXaGVlbEFuaW1hdGlvbkZyYW1lLF90LCgoKT0+dGhpcy5fd2hlZWxBbmltYXRpb25GcmFtZT0hMSkpO2NvbnN0IGk9TWF0aC5hYnModC5kZWx0YVgpK01hdGguYWJzKG4pO3RoaXMuX2NhblNjcm9sbChlLHQuZGVsdGFYLG4pPyh0LnByZXZlbnREZWZhdWx0KCksZS5zY3JvbGxUb3ArPW4sZS5zY3JvbGxMZWZ0Kz10LmRlbHRhWCx0aGlzLl9zY3JvbGxIYW5kbGVyKCksdGhpcy5faGFzUmVzaWR1YWxNb21lbnR1bT0hMCx0aGlzLl9pZ25vcmVOZXdXaGVlbD0hMCx0aGlzLl9kZWJvdW5jZXJJZ25vcmVOZXdXaGVlbD1Obi5kZWJvdW5jZSh0aGlzLl9kZWJvdW5jZXJJZ25vcmVOZXdXaGVlbCxndC5hZnRlcihLMXQpLCgoKT0+dGhpcy5faWdub3JlTmV3V2hlZWw9ITEpKSk6dGhpcy5faGFzUmVzaWR1YWxNb21lbnR1bSYmaTw9dGhpcy5fcHJldmlvdXNNb21lbnR1bXx8dGhpcy5faWdub3JlTmV3V2hlZWw/dC5wcmV2ZW50RGVmYXVsdCgpOmk+dGhpcy5fcHJldmlvdXNNb21lbnR1bSYmKHRoaXMuX2hhc1Jlc2lkdWFsTW9tZW50dW09ITEpLHRoaXMuX3ByZXZpb3VzTW9tZW50dW09aX1faGFzU2Nyb2xsZWRBbmNlc3Rvcih0LGUsbil7cmV0dXJuInZhYWRpbi1ncmlkLWNlbGwtY29udGVudCIhPT10LmxvY2FsTmFtZSYmKCEoIXRoaXMuX2NhblNjcm9sbCh0LGUsbil8fC0xPT09WyJhdXRvIiwic2Nyb2xsIl0uaW5kZXhPZihnZXRDb21wdXRlZFN0eWxlKHQpLm92ZXJmbG93KSl8fCh0IT09dGhpcyYmdC5wYXJlbnRFbGVtZW50P3RoaXMuX2hhc1Njcm9sbGVkQW5jZXN0b3IodC5wYXJlbnRFbGVtZW50LGUsbik6dm9pZCAwKSl9X2NhblNjcm9sbCh0LGUsbil7cmV0dXJuIG4+MCYmdC5zY3JvbGxUb3A8dC5zY3JvbGxIZWlnaHQtdC5vZmZzZXRIZWlnaHR8fG48MCYmdC5zY3JvbGxUb3A+MHx8ZT4wJiZ0LnNjcm9sbExlZnQ8dC5zY3JvbGxXaWR0aC10Lm9mZnNldFdpZHRofHxlPDAmJnQuc2Nyb2xsTGVmdD4wfV9zY2hlZHVsZVNjcm9sbGluZygpe3RoaXMuX3Njcm9sbGluZ0ZyYW1lfHwodGhpcy5fc2Nyb2xsaW5nRnJhbWU9cmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgoKT0+dGhpcy5fdG9nZ2xlQXR0cmlidXRlKCJzY3JvbGxpbmciLCEwLHRoaXMuJC5zY3JvbGxlcikpKSksdGhpcy5fZGVib3VuY2VTY3JvbGxpbmc9Tm4uZGVib3VuY2UodGhpcy5fZGVib3VuY2VTY3JvbGxpbmcsZ3QuYWZ0ZXIoJDF0KSwoKCk9PntjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9zY3JvbGxpbmdGcmFtZSksZGVsZXRlIHRoaXMuX3Njcm9sbGluZ0ZyYW1lLHRoaXMuX3RvZ2dsZUF0dHJpYnV0ZSgic2Nyb2xsaW5nIiwhMSx0aGlzLiQuc2Nyb2xsZXIpLHRoaXMuX3Jlb3JkZXJSb3dzKCl9KSl9X2FmdGVyU2Nyb2xsKCl7dGhpcy5fdHJhbnNsYXRlU3RhdGlvbmFyeUVsZW1lbnRzKCksdGhpcy5oYXNBdHRyaWJ1dGUoInJlb3JkZXJpbmciKXx8dGhpcy5fc2NoZWR1bGVTY3JvbGxpbmcoKSx0aGlzLl91cGRhdGVPdmVyZmxvdygpfV91cGRhdGVPdmVyZmxvdygpe2xldCB0PSIiO2NvbnN0IGU9dGhpcy4kLnRhYmxlO2Uuc2Nyb2xsVG9wPGUuc2Nyb2xsSGVpZ2h0LWUuY2xpZW50SGVpZ2h0JiYodCs9IiBib3R0b20iKSxlLnNjcm9sbFRvcD4wJiYodCs9IiB0b3AiKSxlLnNjcm9sbExlZnQ8ZS5zY3JvbGxXaWR0aC1lLmNsaWVudFdpZHRoJiYodCs9IiByaWdodCIpLGUuc2Nyb2xsTGVmdD4wJiYodCs9IiBsZWZ0IiksdGhpcy5fZGVib3VuY2VPdmVyZmxvdz1Obi5kZWJvdW5jZSh0aGlzLl9kZWJvdW5jZU92ZXJmbG93LF90LCgoKT0+e2NvbnN0IGU9dC50cmltKCk7ZS5sZW5ndGg+MCYmdGhpcy5nZXRBdHRyaWJ1dGUoIm92ZXJmbG93IikhPT1lP3RoaXMuc2V0QXR0cmlidXRlKCJvdmVyZmxvdyIsZSk6MD09ZS5sZW5ndGgmJnRoaXMuaGFzQXR0cmlidXRlKCJvdmVyZmxvdyIpJiZ0aGlzLnJlbW92ZUF0dHJpYnV0ZSgib3ZlcmZsb3ciKX0pKX1fcmVvcmRlclJvd3MoKXtpZih0aGlzLl9fbW91c2VEb3duKXJldHVybiB2b2lkKHRoaXMuX19wZW5kaW5nUmVvcmRlcj0hMCk7Y29uc3QgdD10aGlzLiQuaXRlbXMsZT10LnF1ZXJ5U2VsZWN0b3JBbGwoInRyIik7aWYoIWUubGVuZ3RoKXJldHVybjtjb25zdCBuPXRoaXMuX3ZpcnR1YWxTdGFydCt0aGlzLl92aWR4T2Zmc2V0LGk9dGhpcy5fcm93V2l0aEZvY3VzZWRFbGVtZW50fHxBcnJheS5mcm9tKGUpLmZpbHRlcigodD0+IXQuaGlkZGVuKSlbMF07aWYoIWkpcmV0dXJuO2NvbnN0IHI9aS5pbmRleC1uLG89QXJyYXkuZnJvbShlKS5pbmRleE9mKGkpLXI7aWYobz4wKWZvcihsZXQgbj0wO248bztuKyspdC5hcHBlbmRDaGlsZChlW25dKTtlbHNlIGlmKG88MClmb3IobGV0IG49ZS5sZW5ndGgrbztuPGUubGVuZ3RoO24rKyl0Lmluc2VydEJlZm9yZShlW25dLGVbMF0pO2lmKHRoaXMuX3NhZmFyaSl7Y29uc3R7dHJhbnNmb3JtOnR9PXRoaXMuJC5oZWFkZXIuc3R5bGU7dGhpcy4kLmhlYWRlci5zdHlsZS50cmFuc2Zvcm09IiIsc2V0VGltZW91dCgoKCk9PnRoaXMuJC5oZWFkZXIuc3R5bGUudHJhbnNmb3JtPXQpKX19X2Zyb3plbkNlbGxzQ2hhbmdlZCgpe3RoaXMuX2RlYm91bmNlckNhY2hlRWxlbWVudHM9Tm4uZGVib3VuY2UodGhpcy5fZGVib3VuY2VyQ2FjaGVFbGVtZW50cyx2dCwoKCk9PntBcnJheS5mcm9tKHRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yQWxsKCdbcGFydH49ImNlbGwiXScpKS5mb3JFYWNoKChmdW5jdGlvbih0KXt0LnN0eWxlLnRyYW5zZm9ybT0iIn0pKSx0aGlzLl9mcm96ZW5DZWxscz1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0aGlzLiQudGFibGUucXVlcnlTZWxlY3RvckFsbCgiW2Zyb3plbl0iKSksdGhpcy5fdXBkYXRlU2Nyb2xsZXJNZWFzdXJlbWVudHMoKSx0aGlzLl90cmFuc2xhdGVTdGF0aW9uYXJ5RWxlbWVudHMoKX0pKSx0aGlzLl91cGRhdGVMYXN0RnJvemVuKCl9X3VwZGF0ZVNjcm9sbGVyTWVhc3VyZW1lbnRzKCl7dGhpcy5fZnJvemVuQ2VsbHMubGVuZ3RoPjAmJnRoaXMuX19pc1JUTCYmKHRoaXMuX19zY3JvbGxlck1ldHJpY3M9e3Njcm9sbFdpZHRoOnRoaXMuJC50YWJsZS5zY3JvbGxXaWR0aCxjbGllbnRXaWR0aDp0aGlzLiQudGFibGUuY2xpZW50V2lkdGh9KX1fdXBkYXRlTGFzdEZyb3plbigpe2lmKCF0aGlzLl9jb2x1bW5UcmVlKXJldHVybjtjb25zdCB0PXRoaXMuX2NvbHVtblRyZWVbdGhpcy5fY29sdW1uVHJlZS5sZW5ndGgtMV0uc2xpY2UoMCk7dC5zb3J0KCgodCxlKT0+dC5fb3JkZXItZS5fb3JkZXIpKTtjb25zdCBlPXQucmVkdWNlKCgodCxlLG4pPT4oZS5fbGFzdEZyb3plbj0hMSxlLmZyb3plbiYmIWUuaGlkZGVuP246dCkpLHZvaWQgMCk7dm9pZCAwIT09ZSYmKHRbZV0uX2xhc3RGcm96ZW49ITApfV90cmFuc2xhdGVTdGF0aW9uYXJ5RWxlbWVudHMoKXtjb25zdCB0PU1hdGgubWF4KDAsdGhpcy5fc2Nyb2xsTGVmdCksZT1NYXRoLm1heCgwLHRoaXMuX3Njcm9sbFRvcCk7bGV0IG49MCxpPTAscj0wO2lmKHRoaXMuX3VzZVN0aWNreXx8KG49dCxpPWUscj10aGlzLiQudGFibGUuY2xpZW50SGVpZ2h0LXRoaXMuJC5mb290ZXIub2Zmc2V0SGVpZ2h0LXRoaXMuJC5mb290ZXIub2Zmc2V0VG9wKSx0aGlzLiQuaGVhZGVyLnN0eWxlLnRyYW5zZm9ybT10aGlzLl9nZXRUcmFuc2xhdGUoLXQrbixpKSx0aGlzLiQuZm9vdGVyLnN0eWxlLnRyYW5zZm9ybT10aGlzLl9nZXRUcmFuc2xhdGUoLXQrbixpK3IpLHRoaXMuJC5pdGVtcy5zdHlsZS50cmFuc2Zvcm09dGhpcy5fZ2V0VHJhbnNsYXRlKC10K24sMCksdGhpcy5fZnJvemVuQ2VsbHMubGVuZ3RoPjApe2NvbnN0IHQ9dGhpcy5fX2lzUlRMP3RoaXMuX19nZXROb3JtYWxpemVkU2Nyb2xsTGVmdCh0aGlzLiQudGFibGUpK3RoaXMuX19zY3JvbGxlck1ldHJpY3MuY2xpZW50V2lkdGgtdGhpcy5fX3Njcm9sbGVyTWV0cmljcy5zY3JvbGxXaWR0aDp0aGlzLl9zY3JvbGxMZWZ0LGU9dGhpcy5fZ2V0VHJhbnNsYXRlKHQsMCk7Zm9yKGxldCB0PTA7dDx0aGlzLl9mcm96ZW5DZWxscy5sZW5ndGg7dCsrKXRoaXMuX2Zyb3plbkNlbGxzW3RdLnN0eWxlLnRyYW5zZm9ybT1lfX1fZ2V0VHJhbnNsYXRlKHQsZSl7cmV0dXJuYHRyYW5zbGF0ZSgke3R9cHgsICR7ZX1weClgfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IChjKSAyMDIxIFZhYWRpbiBMdGQuCiAgICAgKiBUaGlzIHByb2dyYW0gaXMgYXZhaWxhYmxlIHVuZGVyIEFwYWNoZSBMaWNlbnNlIFZlcnNpb24gMi4wLCBhdmFpbGFibGUgYXQgaHR0cHM6Ly92YWFkaW4uY29tL2xpY2Vuc2UvCiAgICAgKi8sSjF0PXQ9PmNsYXNzIGV4dGVuZHMgdHtzdGF0aWMgZ2V0IHByb3BlcnRpZXMoKXtyZXR1cm57c2VsZWN0ZWRJdGVtczp7dHlwZTpPYmplY3Qsbm90aWZ5OiEwLHZhbHVlOigpPT5bXX19fXN0YXRpYyBnZXQgb2JzZXJ2ZXJzKCl7cmV0dXJuWyJfc2VsZWN0ZWRJdGVtc0NoYW5nZWQoc2VsZWN0ZWRJdGVtcy4qKSJdfV9pc1NlbGVjdGVkKHQpe3JldHVybiB0aGlzLnNlbGVjdGVkSXRlbXMmJnRoaXMuX2dldEl0ZW1JbmRleEluQXJyYXkodCx0aGlzLnNlbGVjdGVkSXRlbXMpPi0xfXNlbGVjdEl0ZW0odCl7dGhpcy5faXNTZWxlY3RlZCh0KXx8KHRoaXMuc2VsZWN0ZWRJdGVtcz1bLi4udGhpcy5zZWxlY3RlZEl0ZW1zLHRdKX1kZXNlbGVjdEl0ZW0odCl7dGhpcy5faXNTZWxlY3RlZCh0KSYmKHRoaXMuc2VsZWN0ZWRJdGVtcz10aGlzLnNlbGVjdGVkSXRlbXMuZmlsdGVyKChlPT4hdGhpcy5faXRlbXNFcXVhbChlLHQpKSkpfV90b2dnbGVJdGVtKHQpey0xPT09dGhpcy5fZ2V0SXRlbUluZGV4SW5BcnJheSh0LHRoaXMuc2VsZWN0ZWRJdGVtcyk/dGhpcy5zZWxlY3RJdGVtKHQpOnRoaXMuZGVzZWxlY3RJdGVtKHQpfV9zZWxlY3RlZEl0ZW1zQ2hhbmdlZCh0KXshdGhpcy4kLml0ZW1zLmNoaWxkcmVuLmxlbmd0aHx8InNlbGVjdGVkSXRlbXMiIT09dC5wYXRoJiYic2VsZWN0ZWRJdGVtcy5zcGxpY2VzIiE9PXQucGF0aHx8QXJyYXkuZnJvbSh0aGlzLiQuaXRlbXMuY2hpbGRyZW4pLmZvckVhY2goKHQ9Pnt0aGlzLl91cGRhdGVJdGVtKHQsdC5faXRlbSl9KSl9X3NlbGVjdGVkSW5zdGFuY2VDaGFuZ2VkQ2FsbGJhY2sodCxlKXtlP3RoaXMuc2VsZWN0SXRlbSh0Lml0ZW0pOnRoaXMuZGVzZWxlY3RJdGVtKHQuaXRlbSl9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgKGMpIDIwMjEgVmFhZGluIEx0ZC4KICAgICAqIFRoaXMgcHJvZ3JhbSBpcyBhdmFpbGFibGUgdW5kZXIgQXBhY2hlIExpY2Vuc2UgVmVyc2lvbiAyLjAsIGF2YWlsYWJsZSBhdCBodHRwczovL3ZhYWRpbi5jb20vbGljZW5zZS8KICAgICAqLyxRMXQ9dD0+Y2xhc3MgZXh0ZW5kcyB0e3N0YXRpYyBnZXQgcHJvcGVydGllcygpe3JldHVybnttdWx0aVNvcnQ6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sX3NvcnRlcnM6e3R5cGU6QXJyYXksdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm5bXX19LF9wcmV2aW91c1NvcnRlcnM6e3R5cGU6QXJyYXksdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm5bXX19fX1yZWFkeSgpe3N1cGVyLnJlYWR5KCksdGhpcy5hZGRFdmVudExpc3RlbmVyKCJzb3J0ZXItY2hhbmdlZCIsdGhpcy5fb25Tb3J0ZXJDaGFuZ2VkKX1fb25Tb3J0ZXJDaGFuZ2VkKHQpe2NvbnN0IGU9dC50YXJnZXQ7dC5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLl9fdXBkYXRlU29ydGVyKGUpLHRoaXMuX19hcHBseVNvcnRlcnMoKX1fX3JlbW92ZVNvcnRlcnModCl7MCE9dC5sZW5ndGgmJih0aGlzLl9zb3J0ZXJzPXRoaXMuX3NvcnRlcnMuZmlsdGVyKChlPT50LmluZGV4T2YoZSk8MCkpLHRoaXMubXVsdGlTb3J0JiZ0aGlzLl9fdXBkYXRlU29ydE9yZGVycygpLHRoaXMuX19hcHBseVNvcnRlcnMoKSl9X191cGRhdGVTb3J0T3JkZXJzKCl7dGhpcy5fc29ydGVycy5mb3JFYWNoKCgodCxlKT0+dC5fb3JkZXI9dGhpcy5fc29ydGVycy5sZW5ndGg+MT9lOm51bGwpLHRoaXMpfV9fdXBkYXRlU29ydGVyKHQpe2lmKHQuZGlyZWN0aW9ufHwtMSE9PXRoaXMuX3NvcnRlcnMuaW5kZXhPZih0KSlpZih0Ll9vcmRlcj1udWxsLHRoaXMubXVsdGlTb3J0KXRoaXMuX3JlbW92ZUFycmF5SXRlbSh0aGlzLl9zb3J0ZXJzLHQpLHQuZGlyZWN0aW9uJiZ0aGlzLl9zb3J0ZXJzLnVuc2hpZnQodCksdGhpcy5fX3VwZGF0ZVNvcnRPcmRlcnMoKTtlbHNlIGlmKHQuZGlyZWN0aW9uKXtjb25zdCBlPXRoaXMuX3NvcnRlcnMuZmlsdGVyKChlPT5lIT10KSk7dGhpcy5fc29ydGVycz1bdF0sZS5mb3JFYWNoKCh0PT57dC5fb3JkZXI9bnVsbCx0LmRpcmVjdGlvbj1udWxsfSkpfX1fX2FwcGx5U29ydGVycygpe3RoaXMuZGF0YVByb3ZpZGVyJiZ0aGlzLmlzQXR0YWNoZWQmJkpTT04uc3RyaW5naWZ5KHRoaXMuX3ByZXZpb3VzU29ydGVycykhPT1KU09OLnN0cmluZ2lmeSh0aGlzLl9tYXBTb3J0ZXJzKCkpJiZ0aGlzLmNsZWFyQ2FjaGUoKSx0aGlzLl9hMTF5VXBkYXRlU29ydGVycygpLHRoaXMuX3ByZXZpb3VzU29ydGVycz10aGlzLl9tYXBTb3J0ZXJzKCl9X21hcFNvcnRlcnMoKXtyZXR1cm4gdGhpcy5fc29ydGVycy5tYXAoKHQ9Pih7cGF0aDp0LnBhdGgsZGlyZWN0aW9uOnQuZGlyZWN0aW9ufSkpKX1fcmVtb3ZlQXJyYXlJdGVtKHQsZSl7Y29uc3Qgbj10LmluZGV4T2YoZSk7bj4tMSYmdC5zcGxpY2UobiwxKX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAyMSBWYWFkaW4gTHRkLgogICAgICogVGhpcyBwcm9ncmFtIGlzIGF2YWlsYWJsZSB1bmRlciBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgYXZhaWxhYmxlIGF0IGh0dHBzOi8vdmFhZGluLmNvbS9saWNlbnNlLwogICAgICovLHQwdD10PT5jbGFzcyBleHRlbmRzIHR7c3RhdGljIGdldCBwcm9wZXJ0aWVzKCl7cmV0dXJue2NlbGxDbGFzc05hbWVHZW5lcmF0b3I6RnVuY3Rpb259fXN0YXRpYyBnZXQgb2JzZXJ2ZXJzKCl7cmV0dXJuWyJfX2NlbGxDbGFzc05hbWVHZW5lcmF0b3JDaGFuZ2VkKGNlbGxDbGFzc05hbWVHZW5lcmF0b3IpIl19X19jZWxsQ2xhc3NOYW1lR2VuZXJhdG9yQ2hhbmdlZCgpe3RoaXMuZ2VuZXJhdGVDZWxsQ2xhc3NOYW1lcygpfWdlbmVyYXRlQ2VsbENsYXNzTmFtZXMoKXtBcnJheS5mcm9tKHRoaXMuJC5pdGVtcy5jaGlsZHJlbikuZmlsdGVyKCh0PT4hdC5oaWRkZW4pKS5mb3JFYWNoKCh0PT50aGlzLl9nZW5lcmF0ZUNlbGxDbGFzc05hbWVzKHQsdGhpcy5fX2dldFJvd01vZGVsKHQpKSkpfV9nZW5lcmF0ZUNlbGxDbGFzc05hbWVzKHQsZSl7QXJyYXkuZnJvbSh0LmNoaWxkcmVuKS5mb3JFYWNoKCh0PT57aWYodC5fX2dlbmVyYXRlZENsYXNzZXMmJnQuX19nZW5lcmF0ZWRDbGFzc2VzLmZvckVhY2goKGU9PnQuY2xhc3NMaXN0LnJlbW92ZShlKSkpLHRoaXMuY2VsbENsYXNzTmFtZUdlbmVyYXRvcil7Y29uc3Qgbj10aGlzLmNlbGxDbGFzc05hbWVHZW5lcmF0b3IodC5fY29sdW1uLGUpO3QuX19nZW5lcmF0ZWRDbGFzc2VzPW4mJm4uc3BsaXQoIiAiKS5maWx0ZXIoKHQ9PnQubGVuZ3RoPjApKSx0Ll9fZ2VuZXJhdGVkQ2xhc3NlcyYmdC5fX2dlbmVyYXRlZENsYXNzZXMuZm9yRWFjaCgoZT0+dC5jbGFzc0xpc3QuYWRkKGUpKSl9fSkpfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IChjKSAyMDIxIFZhYWRpbiBMdGQuCiAgICAgKiBUaGlzIHByb2dyYW0gaXMgYXZhaWxhYmxlIHVuZGVyIEFwYWNoZSBMaWNlbnNlIFZlcnNpb24gMi4wLCBhdmFpbGFibGUgYXQgaHR0cHM6Ly92YWFkaW4uY29tL2xpY2Vuc2UvCiAgICAgKi8sZTB0PSJiZXR3ZWVuIixuMHQ9Im9uLXRvcC1vci1iZXR3ZWVuIixpMHQ9Im9uLWdyaWQiLHIwdD0ib24tdG9wIixvMHQ9ImFib3ZlIixhMHQ9ImJlbG93IixzMHQ9ImVtcHR5IixsMHQ9dD0+Y2xhc3MgZXh0ZW5kcyB0e3N0YXRpYyBnZXQgcHJvcGVydGllcygpe3JldHVybntkcm9wTW9kZTpTdHJpbmcscm93c0RyYWdnYWJsZTpCb29sZWFuLGRyYWdGaWx0ZXI6RnVuY3Rpb24sZHJvcEZpbHRlcjpGdW5jdGlvbixfX2RuZEF1dG9TY3JvbGxUaHJlc2hvbGQ6e3ZhbHVlOjUwfX19c3RhdGljIGdldCBvYnNlcnZlcnMoKXtyZXR1cm5bIl9kcmFnRHJvcEFjY2Vzc0NoYW5nZWQocm93c0RyYWdnYWJsZSwgZHJvcE1vZGUsIGRyYWdGaWx0ZXIsIGRyb3BGaWx0ZXIpIl19cmVhZHkoKXtzdXBlci5yZWFkeSgpLHRoaXMuJC50YWJsZS5hZGRFdmVudExpc3RlbmVyKCJkcmFnc3RhcnQiLHRoaXMuX29uRHJhZ1N0YXJ0LmJpbmQodGhpcykpLHRoaXMuJC50YWJsZS5hZGRFdmVudExpc3RlbmVyKCJkcmFnZW5kIix0aGlzLl9vbkRyYWdFbmQuYmluZCh0aGlzKSksdGhpcy4kLnRhYmxlLmFkZEV2ZW50TGlzdGVuZXIoImRyYWdvdmVyIix0aGlzLl9vbkRyYWdPdmVyLmJpbmQodGhpcykpLHRoaXMuJC50YWJsZS5hZGRFdmVudExpc3RlbmVyKCJkcmFnbGVhdmUiLHRoaXMuX29uRHJhZ0xlYXZlLmJpbmQodGhpcykpLHRoaXMuJC50YWJsZS5hZGRFdmVudExpc3RlbmVyKCJkcm9wIix0aGlzLl9vbkRyb3AuYmluZCh0aGlzKSksdGhpcy4kLnRhYmxlLmFkZEV2ZW50TGlzdGVuZXIoImRyYWdlbnRlciIsKHQ9Pnt0aGlzLmRyb3BNb2RlJiYodC5wcmV2ZW50RGVmYXVsdCgpLHQuc3RvcFByb3BhZ2F0aW9uKCkpfSkpfV9vbkRyYWdTdGFydCh0KXtpZih0aGlzLnJvd3NEcmFnZ2FibGUpe2xldCBlPXQudGFyZ2V0O2lmKCJ2YWFkaW4tZ3JpZC1jZWxsLWNvbnRlbnQiPT09ZS5sb2NhbE5hbWUmJihlPWUuYXNzaWduZWRTbG90LnBhcmVudE5vZGUucGFyZW50Tm9kZSksZS5wYXJlbnROb2RlIT09dGhpcy4kLml0ZW1zKXJldHVybjtpZih0LnN0b3BQcm9wYWdhdGlvbigpLHRoaXMuX3RvZ2dsZUF0dHJpYnV0ZSgiZHJhZ2dpbmctcm93cyIsITAsdGhpcyksdGhpcy5fc2FmYXJpKXtjb25zdCB0PWUuc3R5bGUudHJhbnNmb3JtO2Uuc3R5bGUudG9wPS90cmFuc2xhdGVZXCgoLiopXCkvLmV4ZWModClbMV0sZS5zdHlsZS50cmFuc2Zvcm09Im5vbmUiLHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKCk9PntlLnN0eWxlLnRvcD0iIixlLnN0eWxlLnRyYW5zZm9ybT10fSkpfWNvbnN0IG49ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTt0aGlzLl9pb3M/dC5kYXRhVHJhbnNmZXIuc2V0RHJhZ0ltYWdlKGUpOnQuZGF0YVRyYW5zZmVyLnNldERyYWdJbWFnZShlLHQuY2xpZW50WC1uLmxlZnQsdC5jbGllbnRZLW4udG9wKTtsZXQgaT1bZV07dGhpcy5faXNTZWxlY3RlZChlLl9pdGVtKSYmKGk9dGhpcy5fX2dldFZpZXdwb3J0Um93cygpLmZpbHRlcigodD0+dGhpcy5faXNTZWxlY3RlZCh0Ll9pdGVtKSkpLmZpbHRlcigodD0+IXRoaXMuZHJhZ0ZpbHRlcnx8dGhpcy5kcmFnRmlsdGVyKHRoaXMuX19nZXRSb3dNb2RlbCh0KSkpKSksdC5kYXRhVHJhbnNmZXIuc2V0RGF0YSgidGV4dCIsdGhpcy5fX2Zvcm1hdERlZmF1bHRUcmFuc2ZlckRhdGEoaSkpLGUuc2V0QXR0cmlidXRlKCJkcmFnc3RhcnQiLGkubGVuZ3RoPjE/aS5sZW5ndGg6IiIpLHRoaXMudXBkYXRlU3R5bGVzKHsiLS1fZ3JpZC1kcmFnLXN0YXJ0LXgiOnQuY2xpZW50WC1uLmxlZnQrMjArInB4IiwiLS1fZ3JpZC1kcmFnLXN0YXJ0LXkiOnQuY2xpZW50WS1uLnRvcCsxMCsicHgifSkscmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgoKT0+e2UucmVtb3ZlQXR0cmlidXRlKCJkcmFnc3RhcnQiKSx0aGlzLnVwZGF0ZVN0eWxlcyh7Ii0tX2dyaWQtZHJhZy1zdGFydC14IjoiIiwiLS1fZ3JpZC1kcmFnLXN0YXJ0LXkiOiIifSl9KSk7Y29uc3Qgcj1uZXcgQ3VzdG9tRXZlbnQoImdyaWQtZHJhZ3N0YXJ0Iix7ZGV0YWlsOntkcmFnZ2VkSXRlbXM6aS5tYXAoKHQ9PnQuX2l0ZW0pKSxzZXREcmFnRGF0YTooZSxuKT0+dC5kYXRhVHJhbnNmZXIuc2V0RGF0YShlLG4pLHNldERyYWdnZWRJdGVtc0NvdW50OnQ9PmUuc2V0QXR0cmlidXRlKCJkcmFnc3RhcnQiLHQpfX0pO3Iub3JpZ2luYWxFdmVudD10LHRoaXMuZGlzcGF0Y2hFdmVudChyKX19X29uRHJhZ0VuZCh0KXt0aGlzLl90b2dnbGVBdHRyaWJ1dGUoImRyYWdnaW5nLXJvd3MiLCExLHRoaXMpLHQuc3RvcFByb3BhZ2F0aW9uKCk7Y29uc3QgZT1uZXcgQ3VzdG9tRXZlbnQoImdyaWQtZHJhZ2VuZCIpO2Uub3JpZ2luYWxFdmVudD10LHRoaXMuZGlzcGF0Y2hFdmVudChlKX1fb25EcmFnTGVhdmUodCl7dC5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLl9jbGVhckRyYWdTdHlsZXMoKX1fb25EcmFnT3Zlcih0KXtpZih0aGlzLmRyb3BNb2RlKXtpZih0aGlzLl9kcm9wTG9jYXRpb249dm9pZCAwLHRoaXMuX2RyYWdPdmVySXRlbT12b2lkIDAsdGhpcy5fX2RuZEF1dG9TY3JvbGwodC5jbGllbnRZKSlyZXR1cm4gdm9pZCB0aGlzLl9jbGVhckRyYWdTdHlsZXMoKTtsZXQgZT10LmNvbXBvc2VkUGF0aCgpLmZpbHRlcigodD0+InRyIj09PXQubG9jYWxOYW1lKSlbMF07aWYodGhpcy5fZWZmZWN0aXZlU2l6ZSYmdGhpcy5kcm9wTW9kZSE9PWkwdClpZihlJiZlLnBhcmVudE5vZGU9PT10aGlzLiQuaXRlbXMpe2NvbnN0IG49ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtpZih0aGlzLl9kcm9wTG9jYXRpb249cjB0LHRoaXMuZHJvcE1vZGU9PT1lMHQpe3RoaXMuX2Ryb3BMb2NhdGlvbj10LmNsaWVudFktbi50b3A8bi5ib3R0b20tdC5jbGllbnRZP28wdDphMHR9ZWxzZSB0aGlzLmRyb3BNb2RlPT09bjB0JiYodC5jbGllbnRZLW4udG9wPG4uaGVpZ2h0LzM/dGhpcy5fZHJvcExvY2F0aW9uPW8wdDp0LmNsaWVudFktbi50b3A+bi5oZWlnaHQvMyoyJiYodGhpcy5fZHJvcExvY2F0aW9uPWEwdCkpfWVsc2V7aWYoZSlyZXR1cm47aWYodGhpcy5kcm9wTW9kZSE9PWUwdCYmdGhpcy5kcm9wTW9kZSE9PW4wdClyZXR1cm47ZT1BcnJheS5mcm9tKHRoaXMuJC5pdGVtcy5jaGlsZHJlbikuZmlsdGVyKCh0PT4hdC5oaWRkZW4pKS5wb3AoKSx0aGlzLl9kcm9wTG9jYXRpb249YTB0fWVsc2UgdGhpcy5fZHJvcExvY2F0aW9uPXMwdDtpZihlJiZlLmhhc0F0dHJpYnV0ZSgiZHJvcC1kaXNhYmxlZCIpKXJldHVybiB2b2lkKHRoaXMuX2Ryb3BMb2NhdGlvbj12b2lkIDApO3Quc3RvcFByb3BhZ2F0aW9uKCksdC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuX2Ryb3BMb2NhdGlvbj09PXMwdD90aGlzLl90b2dnbGVBdHRyaWJ1dGUoImRyYWdvdmVyIiwhMCx0aGlzKTplPyh0aGlzLl9kcmFnT3Zlckl0ZW09ZS5faXRlbSxlLmdldEF0dHJpYnV0ZSgiZHJhZ292ZXIiKSE9PXRoaXMuX2Ryb3BMb2NhdGlvbiYmZS5zZXRBdHRyaWJ1dGUoImRyYWdvdmVyIix0aGlzLl9kcm9wTG9jYXRpb24pKTp0aGlzLl9jbGVhckRyYWdTdHlsZXMoKX19X19kbmRBdXRvU2Nyb2xsKHQpe2lmKHRoaXMuX19kbmRBdXRvU2Nyb2xsaW5nKXJldHVybiEwO2NvbnN0IGU9dGhpcy4kLmhlYWRlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5ib3R0b20sbj10aGlzLiQuZm9vdGVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCxpPWUtdCt0aGlzLl9fZG5kQXV0b1Njcm9sbFRocmVzaG9sZCxyPXQtbit0aGlzLl9fZG5kQXV0b1Njcm9sbFRocmVzaG9sZDtsZXQgbz0wO2lmKHI+MD9vPTIqcjppPjAmJihvPTIqLWkpLG8pe2NvbnN0IHQ9dGhpcy4kLnRhYmxlLnNjcm9sbFRvcDt0aGlzLiQudGFibGUuc2Nyb2xsVG9wKz1vO2lmKHQhPT10aGlzLiQudGFibGUuc2Nyb2xsVG9wKXJldHVybiB0aGlzLl9fZG5kQXV0b1Njcm9sbGluZz0hMCxzZXRUaW1lb3V0KCgoKT0+dGhpcy5fX2RuZEF1dG9TY3JvbGxpbmc9ITEpLDIwKSx0aGlzLl9zY3JvbGxIYW5kbGVyKCksITB9fV9fZ2V0Vmlld3BvcnRSb3dzKCl7Y29uc3QgdD10aGlzLiQuaGVhZGVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmJvdHRvbSxlPXRoaXMuJC5mb290ZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wO3JldHVybiBBcnJheS5mcm9tKHRoaXMuJC5pdGVtcy5jaGlsZHJlbikuZmlsdGVyKChuPT57Y29uc3QgaT1uLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3JldHVybiBpLmJvdHRvbT50JiZpLnRvcDxlfSkpfV9jbGVhckRyYWdTdHlsZXMoKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZSgiZHJhZ292ZXIiKSxBcnJheS5mcm9tKHRoaXMuJC5pdGVtcy5jaGlsZHJlbikuZm9yRWFjaCgodD0+dC5yZW1vdmVBdHRyaWJ1dGUoImRyYWdvdmVyIikpKX1fb25Ecm9wKHQpe2lmKHRoaXMuZHJvcE1vZGUpe3Quc3RvcFByb3BhZ2F0aW9uKCksdC5wcmV2ZW50RGVmYXVsdCgpO2NvbnN0IGU9dC5kYXRhVHJhbnNmZXIudHlwZXMmJkFycmF5LmZyb20odC5kYXRhVHJhbnNmZXIudHlwZXMpLm1hcCgoZT0+KHt0eXBlOmUsZGF0YTp0LmRhdGFUcmFuc2Zlci5nZXREYXRhKGUpfSkpKTt0aGlzLl9jbGVhckRyYWdTdHlsZXMoKTtjb25zdCBuPW5ldyBDdXN0b21FdmVudCgiZ3JpZC1kcm9wIix7YnViYmxlczp0LmJ1YmJsZXMsY2FuY2VsYWJsZTp0LmNhbmNlbGFibGUsZGV0YWlsOntkcm9wVGFyZ2V0SXRlbTp0aGlzLl9kcmFnT3Zlckl0ZW0sZHJvcExvY2F0aW9uOnRoaXMuX2Ryb3BMb2NhdGlvbixkcmFnRGF0YTplfX0pO24ub3JpZ2luYWxFdmVudD10LHRoaXMuZGlzcGF0Y2hFdmVudChuKX19X19mb3JtYXREZWZhdWx0VHJhbnNmZXJEYXRhKHQpe3JldHVybiB0Lm1hcCgodD0+QXJyYXkuZnJvbSh0LmNoaWxkcmVuKS5maWx0ZXIoKHQ9PiF0LmhpZGRlbiYmLTE9PT10LmdldEF0dHJpYnV0ZSgicGFydCIpLmluZGV4T2YoImRldGFpbHMtY2VsbCIpKSkuc29ydCgoKHQsZSk9PnQuX2NvbHVtbi5fb3JkZXI+ZS5fY29sdW1uLl9vcmRlcj8xOi0xKSkubWFwKCh0PT50Ll9jb250ZW50LnRleHRDb250ZW50LnRyaW0oKSkpLmZpbHRlcigodD0+dCkpLmpvaW4oIlx0IikpKS5qb2luKCJcbiIpfV9kcmFnRHJvcEFjY2Vzc0NoYW5nZWQoKXt0aGlzLmZpbHRlckRyYWdBbmREcm9wKCl9ZmlsdGVyRHJhZ0FuZERyb3AoKXtBcnJheS5mcm9tKHRoaXMuJC5pdGVtcy5jaGlsZHJlbikuZmlsdGVyKCh0PT4hdC5oaWRkZW4pKS5mb3JFYWNoKCh0PT57dGhpcy5fZmlsdGVyRHJhZ0FuZERyb3AodCx0aGlzLl9fZ2V0Um93TW9kZWwodCkpfSkpfV9maWx0ZXJEcmFnQW5kRHJvcCh0LGUpe2NvbnN0IG49IXRoaXMucm93c0RyYWdnYWJsZXx8dGhpcy5kcmFnRmlsdGVyJiYhdGhpcy5kcmFnRmlsdGVyKGUpLGk9IXRoaXMuZHJvcE1vZGV8fHRoaXMuZHJvcEZpbHRlciYmIXRoaXMuZHJvcEZpbHRlcihlKTtBcnJheS5mcm9tKHQuY2hpbGRyZW4pLm1hcCgodD0+dC5fY29udGVudCkpLmZvckVhY2goKHQ9PntuP3QucmVtb3ZlQXR0cmlidXRlKCJkcmFnZ2FibGUiKTp0LnNldEF0dHJpYnV0ZSgiZHJhZ2dhYmxlIiwhMCl9KSksdGhpcy5fdG9nZ2xlQXR0cmlidXRlKCJkcmFnLWRpc2FibGVkIixuLHQpLHRoaXMuX3RvZ2dsZUF0dHJpYnV0ZSgiZHJvcC1kaXNhYmxlZCIsaSx0KX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAyMSBWYWFkaW4gTHRkLgogICAgICogVGhpcyBwcm9ncmFtIGlzIGF2YWlsYWJsZSB1bmRlciBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgYXZhaWxhYmxlIGF0IGh0dHBzOi8vdmFhZGluLmNvbS9saWNlbnNlLwogICAgICovLGMwdD10PT5jbGFzcyBleHRlbmRzIHR7c3RhdGljIGdldCBwcm9wZXJ0aWVzKCl7cmV0dXJue19oZWFkZXJGb2N1c2FibGU6e3R5cGU6T2JqZWN0LG9ic2VydmVyOiJfZm9jdXNhYmxlQ2hhbmdlZCJ9LF9pdGVtc0ZvY3VzYWJsZTp7dHlwZTpPYmplY3Qsb2JzZXJ2ZXI6Il9mb2N1c2FibGVDaGFuZ2VkIn0sX2Zvb3RlckZvY3VzYWJsZTp7dHlwZTpPYmplY3Qsb2JzZXJ2ZXI6Il9mb2N1c2FibGVDaGFuZ2VkIn0sX25hdmlnYXRpbmdJc0hpZGRlbjpCb29sZWFuLF9mb2N1c2VkSXRlbUluZGV4Ont0eXBlOk51bWJlcix2YWx1ZTowfSxfZm9jdXNlZENvbHVtbk9yZGVyOk51bWJlcixpbnRlcmFjdGluZzp7dHlwZTpCb29sZWFuLHZhbHVlOiExLHJlZmxlY3RUb0F0dHJpYnV0ZTohMCxyZWFkT25seTohMCxvYnNlcnZlcjoiX2ludGVyYWN0aW5nQ2hhbmdlZCJ9fX1yZWFkeSgpe3N1cGVyLnJlYWR5KCksdGhpcy5faW9zfHx0aGlzLl9hbmRyb2lkfHwodGhpcy5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIix0aGlzLl9vbktleURvd24pLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigia2V5dXAiLHRoaXMuX29uS2V5VXApLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXNpbiIsdGhpcy5fb25Gb2N1c0luKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoImZvY3Vzb3V0Iix0aGlzLl9vbkZvY3VzT3V0KSx0aGlzLiQudGFibGUuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXNpbiIsdGhpcy5fb25DZWxsRm9jdXNJbi5iaW5kKHRoaXMpKSx0aGlzLiQudGFibGUuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXNvdXQiLHRoaXMuX29uQ2VsbEZvY3VzT3V0LmJpbmQodGhpcykpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwoKCk9Pnt0aGlzLl90b2dnbGVBdHRyaWJ1dGUoIm5hdmlnYXRpbmciLCExLHRoaXMpLHRoaXMuX2lzTW91c2Vkb3duPSEwfSkpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsKCgpPT50aGlzLl9pc01vdXNlZG93bj0hMSkpKX1fZm9jdXNhYmxlQ2hhbmdlZCh0LGUpe2UmJmUuc2V0QXR0cmlidXRlKCJ0YWJpbmRleCIsIi0xIiksdCYmdGhpcy5fdXBkYXRlR3JpZFNlY3Rpb25Gb2N1c1RhcmdldCh0KX1faW50ZXJhY3RpbmdDaGFuZ2VkKCl7dGhpcy5fdXBkYXRlR3JpZFNlY3Rpb25Gb2N1c1RhcmdldCh0aGlzLl9oZWFkZXJGb2N1c2FibGUpLHRoaXMuX3VwZGF0ZUdyaWRTZWN0aW9uRm9jdXNUYXJnZXQodGhpcy5faXRlbXNGb2N1c2FibGUpLHRoaXMuX3VwZGF0ZUdyaWRTZWN0aW9uRm9jdXNUYXJnZXQodGhpcy5fZm9vdGVyRm9jdXNhYmxlKX1fb25LZXlEb3duKHQpe2NvbnN0IGU9dC5rZXk7bGV0IG47c3dpdGNoKGUpe2Nhc2UiQXJyb3dVcCI6Y2FzZSJBcnJvd0Rvd24iOmNhc2UiQXJyb3dMZWZ0IjpjYXNlIkFycm93UmlnaHQiOmNhc2UiUGFnZVVwIjpjYXNlIlBhZ2VEb3duIjpjYXNlIkhvbWUiOmNhc2UiRW5kIjpuPSJOYXZpZ2F0aW9uIjticmVhaztjYXNlIkVudGVyIjpjYXNlIkVzY2FwZSI6Y2FzZSJGMiI6bj0iSW50ZXJhY3Rpb24iO2JyZWFrO2Nhc2UiVGFiIjpuPSJUYWIiO2JyZWFrO2Nhc2UiICI6bj0iU3BhY2UifXRoaXMuX2RldGVjdEludGVyYWN0aW5nKHQpLHRoaXMuaW50ZXJhY3RpbmcmJiJJbnRlcmFjdGlvbiIhPT1uJiYobj12b2lkIDApLG4mJnRoaXNbYF9vbiR7bn1LZXlEb3duYF0odCxlKX1fZW5zdXJlU2Nyb2xsZWRUb0luZGV4KHQpe0FycmF5LmZyb20odGhpcy4kLml0ZW1zLmNoaWxkcmVuKS5maWx0ZXIoKGU9PmUuaW5kZXg9PT10KSlbMF18fHRoaXMuX3Njcm9sbFRvSW5kZXgodCl9X29uTmF2aWdhdGlvbktleURvd24odCxlKXtmdW5jdGlvbiBuKHQpe3JldHVybiBBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKHQucGFyZW50Tm9kZS5jaGlsZHJlbix0KX10aGlzLl9zY3JvbGxIYW5kbGVyKCksdC5wcmV2ZW50RGVmYXVsdCgpO2NvbnN0IGk9dGhpcy5fbGFzdFZpc2libGVJbmRleC10aGlzLl9maXJzdFZpc2libGVJbmRleC0xO2xldCByPTAsbz0wO3N3aXRjaChlKXtjYXNlIkFycm93UmlnaHQiOnI9dGhpcy5fX2lzUlRMPy0xOjE7YnJlYWs7Y2FzZSJBcnJvd0xlZnQiOnI9dGhpcy5fX2lzUlRMPzE6LTE7YnJlYWs7Y2FzZSJIb21lIjpyPS0xLzAsdC5jdHJsS2V5JiYobz0tMS8wKTticmVhaztjYXNlIkVuZCI6cj0xLzAsdC5jdHJsS2V5JiYobz0xLzApO2JyZWFrO2Nhc2UiQXJyb3dEb3duIjpvPTE7YnJlYWs7Y2FzZSJBcnJvd1VwIjpvPS0xO2JyZWFrO2Nhc2UiUGFnZURvd24iOm89aTticmVhaztjYXNlIlBhZ2VVcCI6bz0taX1jb25zdCBhPXQuY29tcG9zZWRQYXRoKClbMF0scz1uKGEpLGw9dGhpcy5fZWxlbWVudE1hdGNoZXMoYSwnW3BhcnR+PSJkZXRhaWxzLWNlbGwiXScpLGM9YS5wYXJlbnROb2RlLHU9Yy5wYXJlbnROb2RlLGg9KHU9PT10aGlzLiQuaXRlbXM/dGhpcy5fZWZmZWN0aXZlU2l6ZTp1LmNoaWxkcmVuLmxlbmd0aCktMSxkPXU9PT10aGlzLiQuaXRlbXM/dm9pZCAwIT09dGhpcy5fZm9jdXNlZEl0ZW1JbmRleD90aGlzLl9mb2N1c2VkSXRlbUluZGV4OmMuaW5kZXg6bihjKTtsZXQgcD1NYXRoLm1heCgwLE1hdGgubWluKGQrbyxoKSksZj0hMTtpZih1PT09dGhpcy4kLml0ZW1zKXtjb25zdCB0PWMuX2l0ZW0sZT10aGlzLl9jYWNoZS5nZXRJdGVtRm9ySW5kZXgocCk7Zj1sPzA9PT1vOjE9PT1vJiZ0aGlzLl9pc0RldGFpbHNPcGVuZWQodCl8fC0xPT09byYmcCE9PWQmJnRoaXMuX2lzRGV0YWlsc09wZW5lZChlKSxmIT09bCYmKDE9PT1vJiZmfHwtMT09PW8mJiFmKSYmKHA9ZCl9aWYodSE9PXRoaXMuJC5pdGVtcylpZihwPmQpZm9yKDtwPGgmJnUuY2hpbGRyZW5bcF0uaGlkZGVuOylwKys7ZWxzZSBpZihwPGQpZm9yKDtwPjAmJnUuY2hpbGRyZW5bcF0uaGlkZGVuOylwLS07dm9pZCAwPT09dGhpcy5fZm9jdXNlZENvbHVtbk9yZGVyJiYodGhpcy5fZm9jdXNlZENvbHVtbk9yZGVyPWw/MDp0aGlzLl9nZXRDb2x1bW5zKHUsZCkuZmlsdGVyKCh0PT4hdC5oaWRkZW4pKVtzXS5fb3JkZXIpO2NvbnN0IG09dGhpcy5fZ2V0Q29sdW1ucyh1LHApLmZpbHRlcigodD0+IXQuaGlkZGVuKSksZz1tLm1hcCgodD0+dC5fb3JkZXIpKS5zb3J0KCgodCxlKT0+dC1lKSksXz1nLmxlbmd0aC0xLHk9Zy5pbmRleE9mKGcuc2xpY2UoMCkuc29ydCgoKHQsZSk9Pk1hdGguYWJzKHQtdGhpcy5fZm9jdXNlZENvbHVtbk9yZGVyKS1NYXRoLmFicyhlLXRoaXMuX2ZvY3VzZWRDb2x1bW5PcmRlcikpKVswXSksdj0wPT09byYmbD95Ok1hdGgubWF4KDAsTWF0aC5taW4oeStyLF8pKTt2IT09eSYmKHRoaXMuX2ZvY3VzZWRDb2x1bW5PcmRlcj12b2lkIDApLHU9PT10aGlzLiQuaXRlbXMmJnRoaXMuX2Vuc3VyZVNjcm9sbGVkVG9JbmRleChwKSx0aGlzLl90b2dnbGVBdHRyaWJ1dGUoIm5hdmlnYXRpbmciLCEwLHRoaXMpO2NvbnN0IGI9bS5yZWR1Y2UoKCh0LGUsbik9Pih0W2UuX29yZGVyXT1uLHQpKSx7fSlbZ1t2XV0seD11PT09dGhpcy4kLml0ZW1zP0FycmF5LmZyb20odS5jaGlsZHJlbikuZmlsdGVyKCh0PT50LmluZGV4PT09cCkpWzBdOnUuY2hpbGRyZW5bcF07aWYoIXgpcmV0dXJuO2NvbnN0IHc9Zj9BcnJheS5mcm9tKHguY2hpbGRyZW4pLmZpbHRlcigodD0+dGhpcy5fZWxlbWVudE1hdGNoZXModCwnW3BhcnR+PSJkZXRhaWxzLWNlbGwiXScpKSlbMF06eC5jaGlsZHJlbltiXTtpZih0aGlzLl9zY3JvbGxIb3Jpem9udGFsbHlUb0NlbGwodyksdT09PXRoaXMuJC5pdGVtcyYmKHRoaXMuX2ZvY3VzZWRJdGVtSW5kZXg9cCksdT09PXRoaXMuJC5pdGVtcyl7Y29uc3QgdD13LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGU9dGhpcy4kLmZvb3Rlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3Asbj10aGlzLiQuaGVhZGVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmJvdHRvbTt0LmJvdHRvbT5lPyh0aGlzLiQudGFibGUuc2Nyb2xsVG9wKz10LmJvdHRvbS1lLHRoaXMuX3Njcm9sbEhhbmRsZXIoKSk6dC50b3A8biYmKHRoaXMuJC50YWJsZS5zY3JvbGxUb3AtPW4tdC50b3AsdGhpcy5fc2Nyb2xsSGFuZGxlcigpKX13LmZvY3VzKCl9X29uSW50ZXJhY3Rpb25LZXlEb3duKHQsZSl7Y29uc3Qgbj10LmNvbXBvc2VkUGF0aCgpWzBdLGk9ImlucHV0Ij09PW4ubG9jYWxOYW1lJiYhL14oYnV0dG9ufGNoZWNrYm94fGNvbG9yfGZpbGV8aW1hZ2V8cmFkaW98cmFuZ2V8cmVzZXR8c3VibWl0KSQvaS50ZXN0KG4udHlwZSk7bGV0IHI7c3dpdGNoKGUpe2Nhc2UiRW50ZXIiOnI9IXRoaXMuaW50ZXJhY3Rpbmd8fCFpO2JyZWFrO2Nhc2UiRXNjYXBlIjpyPSExO2JyZWFrO2Nhc2UiRjIiOnI9IXRoaXMuaW50ZXJhY3Rpbmd9Y29uc3R7Y2VsbDpvfT10aGlzLl9nZXRHcmlkRXZlbnRMb2NhdGlvbih0KTtpZih0aGlzLmludGVyYWN0aW5nIT09ciYmbnVsbCE9PW8paWYocil7Y29uc3QgZT1vLl9jb250ZW50LnF1ZXJ5U2VsZWN0b3IoIltmb2N1cy10YXJnZXRdIil8fG8uX2NvbnRlbnQuZmlyc3RFbGVtZW50Q2hpbGQ7ZSYmKHQucHJldmVudERlZmF1bHQoKSxlLmZvY3VzKCksdGhpcy5fc2V0SW50ZXJhY3RpbmcoITApLHRoaXMuX3RvZ2dsZUF0dHJpYnV0ZSgibmF2aWdhdGluZyIsITEsdGhpcykpfWVsc2UgdC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuX2ZvY3VzZWRDb2x1bW5PcmRlcj12b2lkIDAsby5mb2N1cygpLHRoaXMuX3NldEludGVyYWN0aW5nKCExKSx0aGlzLl90b2dnbGVBdHRyaWJ1dGUoIm5hdmlnYXRpbmciLCEwLHRoaXMpfV9wcmVkaWN0Rm9jdXNTdGVwVGFyZ2V0KHQsZSl7Y29uc3Qgbj1bdGhpcy4kLnRhYmxlLHRoaXMuX2hlYWRlckZvY3VzYWJsZSx0aGlzLl9pdGVtc0ZvY3VzYWJsZSx0aGlzLl9mb290ZXJGb2N1c2FibGUsdGhpcy4kLmZvY3VzZXhpdF07bGV0IGk9bi5pbmRleE9mKHQpO2ZvcihpKz1lO2k+PTAmJmk8PW4ubGVuZ3RoLTEmJighbltpXXx8bltpXS5wYXJlbnROb2RlLmhpZGRlbik7KWkrPWU7cmV0dXJuIG5baV19X29uVGFiS2V5RG93bih0KXtjb25zdCBlPXRoaXMuX3ByZWRpY3RGb2N1c1N0ZXBUYXJnZXQodC5jb21wb3NlZFBhdGgoKVswXSx0LnNoaWZ0S2V5Py0xOjEpO2lmKGU9PT10aGlzLiQudGFibGUpdGhpcy4kLnRhYmxlLmZvY3VzKCk7ZWxzZSBpZihlPT09dGhpcy4kLmZvY3VzZXhpdCl0aGlzLiQuZm9jdXNleGl0LmZvY3VzKCk7ZWxzZSBpZihlPT09dGhpcy5faXRlbXNGb2N1c2FibGUpe2xldCBuPWU7Y29uc3QgaT10aGlzLl9pdGVtc0ZvY3VzYWJsZS5wYXJlbnROb2RlO2lmKHRoaXMuX2Vuc3VyZVNjcm9sbGVkVG9JbmRleCh0aGlzLl9mb2N1c2VkSXRlbUluZGV4KSxpLmluZGV4IT09dGhpcy5fZm9jdXNlZEl0ZW1JbmRleCl7Y29uc3QgdD1BcnJheS5mcm9tKGkuY2hpbGRyZW4pLmluZGV4T2YodGhpcy5faXRlbXNGb2N1c2FibGUpLGU9QXJyYXkuZnJvbSh0aGlzLiQuaXRlbXMuY2hpbGRyZW4pLmZpbHRlcigodD0+dC5pbmRleD09PXRoaXMuX2ZvY3VzZWRJdGVtSW5kZXgpKVswXTtlJiYobj1lLmNoaWxkcmVuW3RdKX10LnByZXZlbnREZWZhdWx0KCksbi5mb2N1cygpfWVsc2UgdC5wcmV2ZW50RGVmYXVsdCgpLGUuZm9jdXMoKTt0aGlzLl90b2dnbGVBdHRyaWJ1dGUoIm5hdmlnYXRpbmciLCEwLHRoaXMpfV9vblNwYWNlS2V5RG93bih0KXt0LnByZXZlbnREZWZhdWx0KCk7Y29uc3QgZT10LmNvbXBvc2VkUGF0aCgpWzBdO2UuX2NvbnRlbnQmJmUuX2NvbnRlbnQuZmlyc3RFbGVtZW50Q2hpbGR8fHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoImNlbGwtYWN0aXZhdGUiLHtkZXRhaWw6e21vZGVsOnRoaXMuX19nZXRSb3dNb2RlbChlLnBhcmVudEVsZW1lbnQpfX0pKX1fb25LZXlVcCh0KXtpZighL14oIHxTcGFjZUJhcikkLy50ZXN0KHQua2V5KSlyZXR1cm47dC5wcmV2ZW50RGVmYXVsdCgpO2NvbnN0IGU9dC5jb21wb3NlZFBhdGgoKVswXTtpZihlLl9jb250ZW50JiZlLl9jb250ZW50LmZpcnN0RWxlbWVudENoaWxkKXtjb25zdCB0PXRoaXMuaGFzQXR0cmlidXRlKCJuYXZpZ2F0aW5nIik7ZS5fY29udGVudC5maXJzdEVsZW1lbnRDaGlsZC5jbGljaygpLHRoaXMuX3RvZ2dsZUF0dHJpYnV0ZSgibmF2aWdhdGluZyIsdCx0aGlzKX19X29uRm9jdXNJbih0KXt0aGlzLl9pc01vdXNlZG93bnx8dGhpcy5fdG9nZ2xlQXR0cmlidXRlKCJuYXZpZ2F0aW5nIiwhMCx0aGlzKTtjb25zdCBlPXQuY29tcG9zZWRQYXRoKClbMF07ZT09PXRoaXMuJC50YWJsZXx8ZT09PXRoaXMuJC5mb2N1c2V4aXQ/KHRoaXMuX3ByZWRpY3RGb2N1c1N0ZXBUYXJnZXQoZSxlPT09dGhpcy4kLnRhYmxlPzE6LTEpLmZvY3VzKCksdGhpcy5fc2V0SW50ZXJhY3RpbmcoITEpKTp0aGlzLl9kZXRlY3RJbnRlcmFjdGluZyh0KX1fb25Gb2N1c091dCh0KXt0aGlzLl90b2dnbGVBdHRyaWJ1dGUoIm5hdmlnYXRpbmciLCExLHRoaXMpLHRoaXMuX2RldGVjdEludGVyYWN0aW5nKHQpfV9vbkNlbGxGb2N1c0luKHQpe2NvbnN0e3NlY3Rpb246ZSxjZWxsOm59PXRoaXMuX2dldEdyaWRFdmVudExvY2F0aW9uKHQpO3RoaXMuX2RldGVjdEludGVyYWN0aW5nKHQpLGUmJm4mJih0aGlzLl9hY3RpdmVSb3dHcm91cD1lLHRoaXMuJC5oZWFkZXI9PT1lP3RoaXMuX2hlYWRlckZvY3VzYWJsZT1uOnRoaXMuJC5pdGVtcz09PWU/dGhpcy5faXRlbXNGb2N1c2FibGU9bjp0aGlzLiQuZm9vdGVyPT09ZSYmKHRoaXMuX2Zvb3RlckZvY3VzYWJsZT1uKSxuLl9jb250ZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJjZWxsLWZvY3VzaW4iLHtidWJibGVzOiExfSkpLG4uZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoImNlbGwtZm9jdXMiLHtidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpKSx0aGlzLl9kZXRlY3RGb2N1c2VkSXRlbUluZGV4KHQpfV9vbkNlbGxGb2N1c091dCh0KXtpZigzPT09dC5jb21wb3NlZFBhdGgoKS5pbmRleE9mKHRoaXMuJC50YWJsZSkpe3QuY29tcG9zZWRQYXRoKClbMF0uX2NvbnRlbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoImNlbGwtZm9jdXNvdXQiLHtidWJibGVzOiExfSkpfX1fZGV0ZWN0SW50ZXJhY3RpbmcodCl7Y29uc3QgZT10LmNvbXBvc2VkUGF0aCgpLnNvbWUoKHQ9PiJ2YWFkaW4tZ3JpZC1jZWxsLWNvbnRlbnQiPT09dC5sb2NhbE5hbWUpKTt0aGlzLl9zZXRJbnRlcmFjdGluZyhlKX1fZGV0ZWN0Rm9jdXNlZEl0ZW1JbmRleCh0KXtjb25zdHtzZWN0aW9uOmUscm93Om59PXRoaXMuX2dldEdyaWRFdmVudExvY2F0aW9uKHQpO2U9PT10aGlzLiQuaXRlbXMmJih0aGlzLl9mb2N1c2VkSXRlbUluZGV4PW4uaW5kZXgpfV91cGRhdGVHcmlkU2VjdGlvbkZvY3VzVGFyZ2V0KHQpe2lmKCF0KXJldHVybjtjb25zdCBlPXRoaXMuX2dldEdyaWRTZWN0aW9uRnJvbUZvY3VzVGFyZ2V0KHQpO3QudGFiSW5kZXg9dGhpcy5pbnRlcmFjdGluZyYmZT09PXRoaXMuX2FjdGl2ZVJvd0dyb3VwPy0xOjB9X3ByZXZlbnRTY3JvbGxlclJvdGF0aW5nQ2VsbEZvY3VzKHQsZSl7dC5pbmRleD09PXRoaXMuX2ZvY3VzZWRJdGVtSW5kZXgmJnRoaXMuaGFzQXR0cmlidXRlKCJuYXZpZ2F0aW5nIikmJnRoaXMuX2FjdGl2ZVJvd0dyb3VwPT09dGhpcy4kLml0ZW1zJiYodGhpcy5fbmF2aWdhdGluZ0lzSGlkZGVuPSEwLHRoaXMuX3RvZ2dsZUF0dHJpYnV0ZSgibmF2aWdhdGluZyIsITEsdGhpcykpLGU9PT10aGlzLl9mb2N1c2VkSXRlbUluZGV4JiZ0aGlzLl9uYXZpZ2F0aW5nSXNIaWRkZW4mJih0aGlzLl9uYXZpZ2F0aW5nSXNIaWRkZW49ITEsdGhpcy5fdG9nZ2xlQXR0cmlidXRlKCJuYXZpZ2F0aW5nIiwhMCx0aGlzKSl9X2dldENvbHVtbnModCxlKXtsZXQgbj10aGlzLl9jb2x1bW5UcmVlLmxlbmd0aC0xO3JldHVybiB0PT09dGhpcy4kLmhlYWRlcj9uPWU6dD09PXRoaXMuJC5mb290ZXImJihuPXRoaXMuX2NvbHVtblRyZWUubGVuZ3RoLTEtZSksdGhpcy5fY29sdW1uVHJlZVtuXX1fcmVzZXRLZXlib2FyZE5hdmlnYXRpb24oKXtpZih0aGlzLiQuaGVhZGVyLmZpcnN0RWxlbWVudENoaWxkJiYodGhpcy5faGVhZGVyRm9jdXNhYmxlPUFycmF5LmZyb20odGhpcy4kLmhlYWRlci5maXJzdEVsZW1lbnRDaGlsZC5jaGlsZHJlbikuZmlsdGVyKCh0PT4hdC5oaWRkZW4pKVswXSksdGhpcy4kLml0ZW1zLmZpcnN0RWxlbWVudENoaWxkKXtjb25zdCB0PXRoaXMuX2l0ZXJhdGVJdGVtcygoKHQsZSk9PntpZih0aGlzLl9maXJzdFZpc2libGVJbmRleD09PWUpcmV0dXJuIHRoaXMuJC5pdGVtcy5jaGlsZHJlblt0XX0pKTt0JiYodGhpcy5faXRlbXNGb2N1c2FibGU9QXJyYXkuZnJvbSh0LmNoaWxkcmVuKS5maWx0ZXIoKHQ9PiF0LmhpZGRlbikpWzBdKX10aGlzLiQuZm9vdGVyLmZpcnN0RWxlbWVudENoaWxkJiYodGhpcy5fZm9vdGVyRm9jdXNhYmxlPUFycmF5LmZyb20odGhpcy4kLmZvb3Rlci5maXJzdEVsZW1lbnRDaGlsZC5jaGlsZHJlbikuZmlsdGVyKCh0PT4hdC5oaWRkZW4pKVswXSl9X3Njcm9sbEhvcml6b250YWxseVRvQ2VsbCh0KXtpZih0Lmhhc0F0dHJpYnV0ZSgiZnJvemVuIil8fHRoaXMuX2VsZW1lbnRNYXRjaGVzKHQsJ1twYXJ0fj0iZGV0YWlscy1jZWxsIl0nKSlyZXR1cm47Y29uc3QgZT10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG49dC5wYXJlbnROb2RlLGk9QXJyYXkuZnJvbShuLmNoaWxkcmVuKS5pbmRleE9mKHQpLHI9dGhpcy4kLnRhYmxlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2xldCBvPXIubGVmdCxhPXIucmlnaHQ7Zm9yKGxldCB0PWktMTt0Pj0wO3QtLSl7Y29uc3QgZT1uLmNoaWxkcmVuW3RdO2lmKCFlLmhhc0F0dHJpYnV0ZSgiaGlkZGVuIikmJiF0aGlzLl9lbGVtZW50TWF0Y2hlcyhlLCdbcGFydH49ImRldGFpbHMtY2VsbCJdJykmJmUuaGFzQXR0cmlidXRlKCJmcm96ZW4iKSl7bz1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnJpZ2h0O2JyZWFrfX1mb3IobGV0IHQ9aSsxO3Q8bi5jaGlsZHJlbi5sZW5ndGg7dCsrKXtjb25zdCBlPW4uY2hpbGRyZW5bdF07aWYoIWUuaGFzQXR0cmlidXRlKCJoaWRkZW4iKSYmIXRoaXMuX2VsZW1lbnRNYXRjaGVzKGUsJ1twYXJ0fj0iZGV0YWlscy1jZWxsIl0nKSYmZS5oYXNBdHRyaWJ1dGUoImZyb3plbiIpKXthPWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdDticmVha319ZS5sZWZ0PG8mJih0aGlzLiQudGFibGUuc2Nyb2xsTGVmdCs9TWF0aC5yb3VuZChlLmxlZnQtbykpLGUucmlnaHQ+YSYmKHRoaXMuJC50YWJsZS5zY3JvbGxMZWZ0Kz1NYXRoLnJvdW5kKGUucmlnaHQtYSkpfV9lbGVtZW50TWF0Y2hlcyh0LGUpe3JldHVybiB0Lm1hdGNoZXM/dC5tYXRjaGVzKGUpOi0xIT09QXJyYXkuZnJvbSh0LnBhcmVudE5vZGUucXVlcnlTZWxlY3RvckFsbChlKSkuaW5kZXhPZih0KX1fZ2V0R3JpZEV2ZW50TG9jYXRpb24odCl7Y29uc3QgZT10LmNvbXBvc2VkUGF0aCgpLG49ZS5pbmRleE9mKHRoaXMuJC50YWJsZSk7cmV0dXJue3NlY3Rpb246bj49MT9lW24tMV06bnVsbCxyb3c6bj49Mj9lW24tMl06bnVsbCxjZWxsOm4+PTM/ZVtuLTNdOm51bGx9fV9nZXRHcmlkU2VjdGlvbkZyb21Gb2N1c1RhcmdldCh0KXtyZXR1cm4gdD09PXRoaXMuX2hlYWRlckZvY3VzYWJsZT90aGlzLiQuaGVhZGVyOnQ9PT10aGlzLl9pdGVtc0ZvY3VzYWJsZT90aGlzLiQuaXRlbXM6dD09PXRoaXMuX2Zvb3RlckZvY3VzYWJsZT90aGlzLiQuZm9vdGVyOm51bGx9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgKGMpIDIwMjEgVmFhZGluIEx0ZC4KICAgICAqIFRoaXMgcHJvZ3JhbSBpcyBhdmFpbGFibGUgdW5kZXIgQXBhY2hlIExpY2Vuc2UgVmVyc2lvbiAyLjAsIGF2YWlsYWJsZSBhdCBodHRwczovL3ZhYWRpbi5jb20vbGljZW5zZS8KICAgICAqLzsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IChjKSAyMDIxIFZhYWRpbiBMdGQuCiAgICAgKiBUaGlzIHByb2dyYW0gaXMgYXZhaWxhYmxlIHVuZGVyIEFwYWNoZSBMaWNlbnNlIFZlcnNpb24gMi4wLCBhdmFpbGFibGUgYXQgaHR0cHM6Ly92YWFkaW4uY29tL2xpY2Vuc2UvCiAgICAgKi8KY29uc3QgdTB0PXQ9PmNsYXNzIGV4dGVuZHMoYmkodCkpe3N0YXRpYyBnZXQgcHJvcGVydGllcygpe3JldHVybntjb2x1bW5SZW9yZGVyaW5nQWxsb3dlZDp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxfb3JkZXJCYXNlU2NvcGU6e3R5cGU6TnVtYmVyLHZhbHVlOjFlN319fXN0YXRpYyBnZXQgb2JzZXJ2ZXJzKCl7cmV0dXJuWyJfdXBkYXRlT3JkZXJzKF9jb2x1bW5UcmVlLCBfY29sdW1uVHJlZS4qKSJdfXJlYWR5KCl7c3VwZXIucmVhZHkoKSxjaSh0aGlzLCJ0cmFjayIsdGhpcy5fb25UcmFja0V2ZW50KSx0aGlzLl9yZW9yZGVyR2hvc3Q9dGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoJ1twYXJ0PSJyZW9yZGVyLWdob3N0Il0nKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoc3RhcnQiLHRoaXMuX29uVG91Y2hTdGFydC5iaW5kKHRoaXMpKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoInRvdWNobW92ZSIsdGhpcy5fb25Ub3VjaE1vdmUuYmluZCh0aGlzKSksdGhpcy5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaGVuZCIsdGhpcy5fb25Ub3VjaEVuZC5iaW5kKHRoaXMpKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoImNvbnRleHRtZW51Iix0aGlzLl9vbkNvbnRleHRNZW51LmJpbmQodGhpcykpfV9vbkNvbnRleHRNZW51KHQpe3RoaXMuaGFzQXR0cmlidXRlKCJyZW9yZGVyaW5nIikmJnQucHJldmVudERlZmF1bHQoKX1fb25Ub3VjaFN0YXJ0KHQpe3RoaXMuX3N0YXJ0VG91Y2hSZW9yZGVyVGltZW91dD1zZXRUaW1lb3V0KCgoKT0+e3RoaXMuX29uVHJhY2tTdGFydCh7ZGV0YWlsOnt4OnQudG91Y2hlc1swXS5jbGllbnRYLHk6dC50b3VjaGVzWzBdLmNsaWVudFl9fSl9KSwxMDApfV9vblRvdWNoTW92ZSh0KXt0aGlzLl9kcmFnZ2VkQ29sdW1uJiZ0LnByZXZlbnREZWZhdWx0KCksY2xlYXJUaW1lb3V0KHRoaXMuX3N0YXJ0VG91Y2hSZW9yZGVyVGltZW91dCl9X29uVG91Y2hFbmQoKXtjbGVhclRpbWVvdXQodGhpcy5fc3RhcnRUb3VjaFJlb3JkZXJUaW1lb3V0KSx0aGlzLl9vblRyYWNrRW5kKCl9X29uVHJhY2tFdmVudCh0KXtpZigic3RhcnQiPT09dC5kZXRhaWwuc3RhdGUpe2NvbnN0IGU9dC5jb21wb3NlZFBhdGgoKSxuPWVbZS5pbmRleE9mKHRoaXMuJC5oZWFkZXIpLTJdO2lmKCFufHwhbi5fY29udGVudClyZXR1cm47aWYobi5fY29udGVudC5jb250YWlucyh0aGlzLmdldFJvb3ROb2RlKCkuYWN0aXZlRWxlbWVudCkpcmV0dXJuO2lmKHRoaXMuJC5zY3JvbGxlci5oYXNBdHRyaWJ1dGUoImNvbHVtbi1yZXNpemluZyIpKXJldHVybjt0aGlzLl90b3VjaERldmljZXx8dGhpcy5fb25UcmFja1N0YXJ0KHQpfWVsc2UidHJhY2siPT09dC5kZXRhaWwuc3RhdGU/dGhpcy5fb25UcmFjayh0KToiZW5kIj09PXQuZGV0YWlsLnN0YXRlJiZ0aGlzLl9vblRyYWNrRW5kKHQpfV9vblRyYWNrU3RhcnQodCl7aWYoIXRoaXMuY29sdW1uUmVvcmRlcmluZ0FsbG93ZWQpcmV0dXJuO2NvbnN0IGU9dC5jb21wb3NlZFBhdGgmJnQuY29tcG9zZWRQYXRoKCk7aWYoZSYmZS5maWx0ZXIoKHQ9PnQuaGFzQXR0cmlidXRlJiZ0Lmhhc0F0dHJpYnV0ZSgiZHJhZ2dhYmxlIikpKVswXSlyZXR1cm47Y29uc3Qgbj10aGlzLl9jZWxsRnJvbVBvaW50KHQuZGV0YWlsLngsdC5kZXRhaWwueSk7aWYobiYmLTEhPT1uLmdldEF0dHJpYnV0ZSgicGFydCIpLmluZGV4T2YoImhlYWRlci1jZWxsIikpe2Zvcih0aGlzLl90b2dnbGVBdHRyaWJ1dGUoInJlb3JkZXJpbmciLCEwLHRoaXMpLHRoaXMuX2RyYWdnZWRDb2x1bW49bi5fY29sdW1uOzE9PT10aGlzLl9kcmFnZ2VkQ29sdW1uLnBhcmVudEVsZW1lbnQuY2hpbGRFbGVtZW50Q291bnQ7KXRoaXMuX2RyYWdnZWRDb2x1bW49dGhpcy5fZHJhZ2dlZENvbHVtbi5wYXJlbnRFbGVtZW50O3RoaXMuX3NldFNpYmxpbmdzUmVvcmRlclN0YXR1cyh0aGlzLl9kcmFnZ2VkQ29sdW1uLCJhbGxvd2VkIiksdGhpcy5fZHJhZ2dlZENvbHVtbi5fcmVvcmRlclN0YXR1cz0iZHJhZ2dpbmciLHRoaXMuX3VwZGF0ZUdob3N0KG4pLHRoaXMuX3Jlb3JkZXJHaG9zdC5zdHlsZS52aXNpYmlsaXR5PSJ2aXNpYmxlIix0aGlzLl91cGRhdGVHaG9zdFBvc2l0aW9uKHQuZGV0YWlsLngsdGhpcy5fdG91Y2hEZXZpY2U/dC5kZXRhaWwueS01MDp0LmRldGFpbC55KSx0aGlzLl9hdXRvU2Nyb2xsZXIoKX19X29uVHJhY2sodCl7aWYoIXRoaXMuX2RyYWdnZWRDb2x1bW4pcmV0dXJuO2NvbnN0IGU9dGhpcy5fY2VsbEZyb21Qb2ludCh0LmRldGFpbC54LHQuZGV0YWlsLnkpO2lmKCFlKXJldHVybjtjb25zdCBuPXRoaXMuX2dldFRhcmdldENvbHVtbihlLHRoaXMuX2RyYWdnZWRDb2x1bW4pO3RoaXMuX2lzU3dhcEFsbG93ZWQodGhpcy5fZHJhZ2dlZENvbHVtbixuKSYmdGhpcy5faXNTd2FwcGFibGVCeVBvc2l0aW9uKG4sdC5kZXRhaWwueCkmJnRoaXMuX3N3YXBDb2x1bW5PcmRlcnModGhpcy5fZHJhZ2dlZENvbHVtbixuKSx0aGlzLl91cGRhdGVHaG9zdFBvc2l0aW9uKHQuZGV0YWlsLngsdGhpcy5fdG91Y2hEZXZpY2U/dC5kZXRhaWwueS01MDp0LmRldGFpbC55KSx0aGlzLl9sYXN0RHJhZ0NsaWVudFg9dC5kZXRhaWwueH1fb25UcmFja0VuZCgpe3RoaXMuX2RyYWdnZWRDb2x1bW4mJih0aGlzLl90b2dnbGVBdHRyaWJ1dGUoInJlb3JkZXJpbmciLCExLHRoaXMpLHRoaXMuX2RyYWdnZWRDb2x1bW4uX3Jlb3JkZXJTdGF0dXM9IiIsdGhpcy5fc2V0U2libGluZ3NSZW9yZGVyU3RhdHVzKHRoaXMuX2RyYWdnZWRDb2x1bW4sIiIpLHRoaXMuX2RyYWdnZWRDb2x1bW49bnVsbCx0aGlzLl9sYXN0RHJhZ0NsaWVudFg9bnVsbCx0aGlzLl9yZW9yZGVyR2hvc3Quc3R5bGUudmlzaWJpbGl0eT0iaGlkZGVuIix0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJjb2x1bW4tcmVvcmRlciIse2RldGFpbDp7Y29sdW1uczp0aGlzLl9nZXRDb2x1bW5zSW5PcmRlcigpfX0pKSl9X2dldENvbHVtbnNJbk9yZGVyKCl7cmV0dXJuIHRoaXMuX2NvbHVtblRyZWUuc2xpY2UoMCkucG9wKCkuZmlsdGVyKCh0PT4hdC5oaWRkZW4pKS5zb3J0KCgodCxlKT0+dC5fb3JkZXItZS5fb3JkZXIpKX1fY2VsbEZyb21Qb2ludCh0LGUpe3Q9dHx8MCxlPWV8fDAsdGhpcy5fZHJhZ2dlZENvbHVtbnx8dGhpcy5fdG9nZ2xlQXR0cmlidXRlKCJuby1jb250ZW50LXBvaW50ZXItZXZlbnRzIiwhMCx0aGlzLiQuc2Nyb2xsZXIpO2NvbnN0IG49dGhpcy5zaGFkb3dSb290LmVsZW1lbnRGcm9tUG9pbnQodCxlKTtpZih0aGlzLl90b2dnbGVBdHRyaWJ1dGUoIm5vLWNvbnRlbnQtcG9pbnRlci1ldmVudHMiLCExLHRoaXMuJC5zY3JvbGxlciksbiYmbi5fY29sdW1uKXJldHVybiBufV91cGRhdGVHaG9zdFBvc2l0aW9uKHQsZSl7Y29uc3Qgbj10aGlzLl9yZW9yZGVyR2hvc3QuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksaT10LW4ud2lkdGgvMixyPWUtbi5oZWlnaHQvMixvPXBhcnNlSW50KHRoaXMuX3Jlb3JkZXJHaG9zdC5fbGVmdHx8MCksYT1wYXJzZUludCh0aGlzLl9yZW9yZGVyR2hvc3QuX3RvcHx8MCk7dGhpcy5fcmVvcmRlckdob3N0Ll9sZWZ0PW8tKG4ubGVmdC1pKSx0aGlzLl9yZW9yZGVyR2hvc3QuX3RvcD1hLShuLnRvcC1yKSx0aGlzLl9yZW9yZGVyR2hvc3Quc3R5bGUudHJhbnNmb3JtPWB0cmFuc2xhdGUoJHt0aGlzLl9yZW9yZGVyR2hvc3QuX2xlZnR9cHgsICR7dGhpcy5fcmVvcmRlckdob3N0Ll90b3B9cHgpYH1fdXBkYXRlR2hvc3QodCl7Y29uc3QgZT10aGlzLl9yZW9yZGVyR2hvc3Q7ZS50ZXh0Q29udGVudD10Ll9jb250ZW50LmlubmVyVGV4dDtjb25zdCBuPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHQpO3JldHVyblsiYm94U2l6aW5nIiwiZGlzcGxheSIsIndpZHRoIiwiaGVpZ2h0IiwiYmFja2dyb3VuZCIsImFsaWduSXRlbXMiLCJwYWRkaW5nIiwiYm9yZGVyIiwiZmxleC1kaXJlY3Rpb24iLCJvdmVyZmxvdyJdLmZvckVhY2goKHQ9PmUuc3R5bGVbdF09blt0XSkpLGV9X3VwZGF0ZU9yZGVycyh0LGUpe3ZvaWQgMCE9PXQmJnZvaWQgMCE9PWUmJih0WzBdLmZvckVhY2goKHQ9PnQuX29yZGVyPTApKSwoZnVuY3Rpb24gbih0LGUsaSl7bGV0IHI9MTt0LmZvckVhY2goKHQ9PntyJTEwPT0wJiZyKyssdC5fb3JkZXI9aStyKmUscisrfSkpfSkodFswXSx0aGlzLl9vcmRlckJhc2VTY29wZSwwKSl9X3NldFNpYmxpbmdzUmVvcmRlclN0YXR1cyh0LGUpe0FycmF5LmZyb20odC5wYXJlbnROb2RlLmNoaWxkcmVuKS5maWx0ZXIoKGU9Pi9jb2x1bW4vLnRlc3QoZS5sb2NhbE5hbWUpJiZ0aGlzLl9pc1N3YXBBbGxvd2VkKGUsdCkpKS5mb3JFYWNoKCh0PT50Ll9yZW9yZGVyU3RhdHVzPWUpKX1fYXV0b1Njcm9sbGVyKCl7aWYodGhpcy5fbGFzdERyYWdDbGllbnRYKXtjb25zdCB0PXRoaXMuX2xhc3REcmFnQ2xpZW50WC10aGlzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnJpZ2h0KzUwLGU9dGhpcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0LXRoaXMuX2xhc3REcmFnQ2xpZW50WCs1MDt0PjA/dGhpcy4kLnRhYmxlLnNjcm9sbExlZnQrPXQvMTA6ZT4wJiYodGhpcy4kLnRhYmxlLnNjcm9sbExlZnQtPWUvMTApLHRoaXMuX3Njcm9sbEhhbmRsZXIoKX10aGlzLl9kcmFnZ2VkQ29sdW1uJiZ0aGlzLmFzeW5jKHRoaXMuX2F1dG9TY3JvbGxlciwxMCl9X2lzU3dhcEFsbG93ZWQodCxlKXtpZih0JiZlKXtjb25zdCBuPXQucGFyZW50RWxlbWVudD09PWUucGFyZW50RWxlbWVudCxpPXQuZnJvemVuPT09ZS5mcm96ZW47cmV0dXJuIHQhPT1lJiZuJiZpfX1faXNTd2FwcGFibGVCeVBvc2l0aW9uKHQsZSl7Y29uc3Qgbj1BcnJheS5mcm9tKHRoaXMuJC5oZWFkZXIucXVlcnlTZWxlY3RvckFsbCgndHI6bm90KFtoaWRkZW5dKSBbcGFydH49ImNlbGwiXScpKS5maWx0ZXIoKGU9PnQuY29udGFpbnMoZS5fY29sdW1uKSkpWzBdLGk9dGhpcy4kLmhlYWRlci5xdWVyeVNlbGVjdG9yKCJ0cjpub3QoW2hpZGRlbl0pIFtyZW9yZGVyLXN0YXR1cz1kcmFnZ2luZ10iKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxyPW4uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJuIHIubGVmdD5pLmxlZnQ/ZT5yLnJpZ2h0LWkud2lkdGg6ZTxyLmxlZnQraS53aWR0aH1fc3dhcENvbHVtbk9yZGVycyh0LGUpe2NvbnN0IG49dC5fb3JkZXI7dC5fb3JkZXI9ZS5fb3JkZXIsZS5fb3JkZXI9bix0aGlzLl91cGRhdGVMYXN0RnJvemVuKCksdGhpcy5fdXBkYXRlRmlyc3RBbmRMYXN0Q29sdW1uKCl9X2dldFRhcmdldENvbHVtbih0LGUpe2lmKHQmJmUpe2xldCBuPXQuX2NvbHVtbjtmb3IoO24ucGFyZW50RWxlbWVudCE9PWUucGFyZW50RWxlbWVudCYmbiE9PXRoaXM7KW49bi5wYXJlbnRFbGVtZW50O3JldHVybiBuLnBhcmVudEVsZW1lbnQ9PT1lLnBhcmVudEVsZW1lbnQ/bjp0Ll9jb2x1bW59fX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IChjKSAyMDIxIFZhYWRpbiBMdGQuCiAgICAgKiBUaGlzIHByb2dyYW0gaXMgYXZhaWxhYmxlIHVuZGVyIEFwYWNoZSBMaWNlbnNlIFZlcnNpb24gMi4wLCBhdmFpbGFibGUgYXQgaHR0cHM6Ly92YWFkaW4uY29tL2xpY2Vuc2UvCiAgICAgKi8saDB0PXQ9PmNsYXNzIGV4dGVuZHMgdHtzdGF0aWMgZ2V0IHByb3BlcnRpZXMoKXtyZXR1cm57cmVzaXphYmxlOnt0eXBlOkJvb2xlYW4sdmFsdWU6ZnVuY3Rpb24oKXtpZigidmFhZGluLWdyaWQtY29sdW1uLWdyb3VwIj09PXRoaXMubG9jYWxOYW1lKXJldHVybjtjb25zdCB0PXRoaXMucGFyZW50Tm9kZTtyZXR1cm4gdCYmInZhYWRpbi1ncmlkLWNvbHVtbi1ncm91cCI9PT10LmxvY2FsTmFtZSYmdC5yZXNpemFibGV8fCExfX0sX2hlYWRlclRlbXBsYXRlOnt0eXBlOk9iamVjdH0sX2Zvb3RlclRlbXBsYXRlOnt0eXBlOk9iamVjdH0sZnJvemVuOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LGhpZGRlbjp7dHlwZTpCb29sZWFufSxoZWFkZXI6e3R5cGU6U3RyaW5nfSx0ZXh0QWxpZ246e3R5cGU6U3RyaW5nfSxfbGFzdEZyb3plbjp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxfb3JkZXI6TnVtYmVyLF9yZW9yZGVyU3RhdHVzOkJvb2xlYW4sX2VtcHR5Q2VsbHM6QXJyYXksX2hlYWRlckNlbGw6T2JqZWN0LF9mb290ZXJDZWxsOk9iamVjdCxfZ3JpZDpPYmplY3QsaGVhZGVyUmVuZGVyZXI6RnVuY3Rpb24sZm9vdGVyUmVuZGVyZXI6RnVuY3Rpb259fXN0YXRpYyBnZXQgb2JzZXJ2ZXJzKCl7cmV0dXJuWyJfd2lkdGhDaGFuZ2VkKHdpZHRoLCBfaGVhZGVyQ2VsbCwgX2Zvb3RlckNlbGwsIF9jZWxscy4qKSIsIl9mcm96ZW5DaGFuZ2VkKGZyb3plbiwgX2hlYWRlckNlbGwsIF9mb290ZXJDZWxsLCBfY2VsbHMuKikiLCJfZmxleEdyb3dDaGFuZ2VkKGZsZXhHcm93LCBfaGVhZGVyQ2VsbCwgX2Zvb3RlckNlbGwsIF9jZWxscy4qKSIsIl9wYXRoT3JIZWFkZXJDaGFuZ2VkKHBhdGgsIGhlYWRlciwgX2hlYWRlckNlbGwsIF9mb290ZXJDZWxsLCBfY2VsbHMuKiwgcmVuZGVyZXIsIGhlYWRlclJlbmRlcmVyLCBfYm9keVRlbXBsYXRlLCBfaGVhZGVyVGVtcGxhdGUpIiwiX3RleHRBbGlnbkNoYW5nZWQodGV4dEFsaWduLCBfY2VsbHMuKiwgX2hlYWRlckNlbGwsIF9mb290ZXJDZWxsKSIsIl9vcmRlckNoYW5nZWQoX29yZGVyLCBfaGVhZGVyQ2VsbCwgX2Zvb3RlckNlbGwsIF9jZWxscy4qKSIsIl9sYXN0RnJvemVuQ2hhbmdlZChfbGFzdEZyb3plbikiLCJfc2V0Qm9keVRlbXBsYXRlT3JSZW5kZXJlcihfYm9keVRlbXBsYXRlLCByZW5kZXJlciwgX2NlbGxzLCBfY2VsbHMuKikiLCJfc2V0SGVhZGVyVGVtcGxhdGVPclJlbmRlcmVyKF9oZWFkZXJUZW1wbGF0ZSwgaGVhZGVyUmVuZGVyZXIsIF9oZWFkZXJDZWxsKSIsIl9zZXRGb290ZXJUZW1wbGF0ZU9yUmVuZGVyZXIoX2Zvb3RlclRlbXBsYXRlLCBmb290ZXJSZW5kZXJlciwgX2Zvb3RlckNlbGwpIiwiX3Jlc2l6YWJsZUNoYW5nZWQocmVzaXphYmxlLCBfaGVhZGVyQ2VsbCkiLCJfcmVvcmRlclN0YXR1c0NoYW5nZWQoX3Jlb3JkZXJTdGF0dXMsIF9oZWFkZXJDZWxsLCBfZm9vdGVyQ2VsbCwgX2NlbGxzLiopIiwiX2hpZGRlbkNoYW5nZWQoaGlkZGVuLCBfaGVhZGVyQ2VsbCwgX2Zvb3RlckNlbGwsIF9jZWxscy4qKSJdfWNvbm5lY3RlZENhbGxiYWNrKCl7c3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKSx0aGlzLl9ib2R5VGVtcGxhdGUmJih0aGlzLl9ib2R5VGVtcGxhdGUudGVtcGxhdGl6ZXIuX2dyaWQ9dGhpcy5fZ3JpZCksdGhpcy5faGVhZGVyVGVtcGxhdGUmJih0aGlzLl9oZWFkZXJUZW1wbGF0ZS50ZW1wbGF0aXplci5fZ3JpZD10aGlzLl9ncmlkKSx0aGlzLl9mb290ZXJUZW1wbGF0ZSYmKHRoaXMuX2Zvb3RlclRlbXBsYXRlLnRlbXBsYXRpemVyLl9ncmlkPXRoaXMuX2dyaWQpLHRoaXMuX3RlbXBsYXRlT2JzZXJ2ZXIuZmx1c2goKSx0aGlzLl9ib2R5VGVtcGxhdGV8fHRoaXMuX3RlbXBsYXRlT2JzZXJ2ZXIuY2FsbGJhY2soKSxyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCgpPT57dGhpcy5fYWxsQ2VsbHMuZm9yRWFjaCgodD0+e3QuX2NvbnRlbnQucGFyZW50Tm9kZXx8dGhpcy5fZ3JpZCYmdGhpcy5fZ3JpZC5hcHBlbmRDaGlsZCh0Ll9jb250ZW50KX0pKX0pKX1kaXNjb25uZWN0ZWRDYWxsYmFjaygpe3N1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCkscmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgoKT0+e3RoaXMuX2ZpbmRIb3N0R3JpZCgpfHx0aGlzLl9hbGxDZWxscy5mb3JFYWNoKCh0PT57dC5fY29udGVudC5wYXJlbnROb2RlJiZ0Ll9jb250ZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodC5fY29udGVudCl9KSl9KSksdGhpcy5fZ3JpZFZhbHVlPXZvaWQgMH1fZmluZEhvc3RHcmlkKCl7bGV0IHQ9dGhpcztmb3IoO3QmJiEvXnZhYWRpbi4qZ3JpZCgtcHJvKT8kLy50ZXN0KHQubG9jYWxOYW1lKTspdD10LmFzc2lnbmVkU2xvdD90LmFzc2lnbmVkU2xvdC5wYXJlbnROb2RlOnQucGFyZW50Tm9kZTtyZXR1cm4gdHx8dm9pZCAwfWdldCBfZ3JpZCgpe3JldHVybiB0aGlzLl9ncmlkVmFsdWV8fCh0aGlzLl9ncmlkVmFsdWU9dGhpcy5fZmluZEhvc3RHcmlkKCkpLHRoaXMuX2dyaWRWYWx1ZX1nZXQgX2FsbENlbGxzKCl7cmV0dXJuW10uY29uY2F0KHRoaXMuX2NlbGxzfHxbXSkuY29uY2F0KHRoaXMuX2VtcHR5Q2VsbHN8fFtdKS5jb25jYXQodGhpcy5faGVhZGVyQ2VsbCkuY29uY2F0KHRoaXMuX2Zvb3RlckNlbGwpLmZpbHRlcigodD0+dCkpfWNvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLl90ZW1wbGF0ZU9ic2VydmVyPW5ldyBHaSh0aGlzLCgoKT0+e3RoaXMuX2hlYWRlclRlbXBsYXRlPXRoaXMuX3ByZXBhcmVIZWFkZXJUZW1wbGF0ZSgpLHRoaXMuX2Zvb3RlclRlbXBsYXRlPXRoaXMuX3ByZXBhcmVGb290ZXJUZW1wbGF0ZSgpLHRoaXMuX2JvZHlUZW1wbGF0ZT10aGlzLl9wcmVwYXJlQm9keVRlbXBsYXRlKCl9KSl9X3ByZXBhcmVIZWFkZXJUZW1wbGF0ZSgpe3JldHVybiB0aGlzLl9wcmVwYXJlVGVtcGxhdGl6ZXIodGhpcy5fZmluZFRlbXBsYXRlKCEwKXx8bnVsbCx7fSl9X3ByZXBhcmVGb290ZXJUZW1wbGF0ZSgpe3JldHVybiB0aGlzLl9wcmVwYXJlVGVtcGxhdGl6ZXIodGhpcy5fZmluZFRlbXBsYXRlKCExLCEwKXx8bnVsbCx7fSl9X3ByZXBhcmVCb2R5VGVtcGxhdGUoKXtyZXR1cm4gdGhpcy5fcHJlcGFyZVRlbXBsYXRpemVyKHRoaXMuX2ZpbmRUZW1wbGF0ZSgpfHxudWxsKX1fcHJlcGFyZVRlbXBsYXRpemVyKHQsZSl7aWYodCYmIXQudGVtcGxhdGl6ZXIpe2NvbnN0IG49bmV3IFkxdDtuLl9ncmlkPXRoaXMuX2dyaWQsbi5kYXRhSG9zdD10aGlzLmRhdGFIb3N0LG4uX2luc3RhbmNlUHJvcHM9ZXx8bi5faW5zdGFuY2VQcm9wcyxuLnRlbXBsYXRlPXQsdC50ZW1wbGF0aXplcj1ufXJldHVybiB0fV9yZW5kZXJIZWFkZXJBbmRGb290ZXIoKXt0aGlzLmhlYWRlclJlbmRlcmVyJiZ0aGlzLl9oZWFkZXJDZWxsJiZ0aGlzLl9fcnVuUmVuZGVyZXIodGhpcy5oZWFkZXJSZW5kZXJlcix0aGlzLl9oZWFkZXJDZWxsKSx0aGlzLmZvb3RlclJlbmRlcmVyJiZ0aGlzLl9mb290ZXJDZWxsJiZ0aGlzLl9fcnVuUmVuZGVyZXIodGhpcy5mb290ZXJSZW5kZXJlcix0aGlzLl9mb290ZXJDZWxsKX1fX3J1blJlbmRlcmVyKHQsZSxuKXtjb25zdCBpPVtlLl9jb250ZW50LHRoaXNdO24mJm4uaXRlbSYmaS5wdXNoKG4pLHQuYXBwbHkodGhpcyxpKX1fX3NldENvbHVtblRlbXBsYXRlT3JSZW5kZXJlcih0LGUsbil7aWYoIXRoaXMuaGlkZGVuKXtpZih0JiZlKXRocm93IG5ldyBFcnJvcigiWW91IHNob3VsZCBvbmx5IHVzZSBlaXRoZXIgYSByZW5kZXJlciBvciBhIHRlbXBsYXRlIik7bi5mb3JFYWNoKChuPT57Y29uc3QgaT10aGlzLl9ncmlkLl9fZ2V0Um93TW9kZWwobi5wYXJlbnRFbGVtZW50KTtpZihlKW4uX3JlbmRlcmVyPWUsKGkuaXRlbXx8ZT09PXRoaXMuaGVhZGVyUmVuZGVyZXJ8fGU9PT10aGlzLmZvb3RlclJlbmRlcmVyKSYmdGhpcy5fX3J1blJlbmRlcmVyKGUsbixpKTtlbHNlIGlmKG4uX3RlbXBsYXRlIT09dCl7bi5fdGVtcGxhdGU9dCxuLl9jb250ZW50LmlubmVySFRNTD0iIix0LnRlbXBsYXRpemVyLl9ncmlkPXQudGVtcGxhdGl6ZXIuX2dyaWR8fHRoaXMuX2dyaWQ7Y29uc3QgZT10LnRlbXBsYXRpemVyLmNyZWF0ZUluc3RhbmNlKCk7bi5fY29udGVudC5hcHBlbmRDaGlsZChlLnJvb3QpLG4uX2luc3RhbmNlPWUsaS5pdGVtJiZuLl9pbnN0YW5jZS5zZXRQcm9wZXJ0aWVzKGkpfX0pKX19X3NldEJvZHlUZW1wbGF0ZU9yUmVuZGVyZXIodCxlLG4peyh0fHxlKSYmbiYmdGhpcy5fX3NldENvbHVtblRlbXBsYXRlT3JSZW5kZXJlcih0LGUsbil9X3NldEhlYWRlclRlbXBsYXRlT3JSZW5kZXJlcih0LGUsbil7KHR8fGUpJiZuJiZ0aGlzLl9fc2V0Q29sdW1uVGVtcGxhdGVPclJlbmRlcmVyKHQsZSxbbl0pfV9zZXRGb290ZXJUZW1wbGF0ZU9yUmVuZGVyZXIodCxlLG4peyh0fHxlKSYmbiYmKHRoaXMuX19zZXRDb2x1bW5UZW1wbGF0ZU9yUmVuZGVyZXIodCxlLFtuXSksdGhpcy5fZ3JpZC5fX3VwZGF0ZUhlYWRlckZvb3RlclJvd1Zpc2liaWxpdHkobi5wYXJlbnRFbGVtZW50KSl9X3NlbGVjdEZpcnN0VGVtcGxhdGUodD0hMSxlPSExKXtyZXR1cm4gR2kuZ2V0RmxhdHRlbmVkTm9kZXModGhpcykuZmlsdGVyKChuPT4idGVtcGxhdGUiPT09bi5sb2NhbE5hbWUmJm4uY2xhc3NMaXN0LmNvbnRhaW5zKCJoZWFkZXIiKT09PXQmJm4uY2xhc3NMaXN0LmNvbnRhaW5zKCJmb290ZXIiKT09PWUpKVswXX1fZmluZFRlbXBsYXRlKHQsZSl7Y29uc3Qgbj10aGlzLl9zZWxlY3RGaXJzdFRlbXBsYXRlKHQsZSk7cmV0dXJuIG4mJnRoaXMuZGF0YUhvc3QmJihuLl9yb290RGF0YUhvc3Q9dGhpcy5kYXRhSG9zdC5fcm9vdERhdGFIb3N0fHx0aGlzLmRhdGFIb3N0KSxufV9mbGV4R3Jvd0NoYW5nZWQodCl7dGhpcy5wYXJlbnRFbGVtZW50JiZ0aGlzLnBhcmVudEVsZW1lbnQuX2NvbHVtblByb3BDaGFuZ2VkJiZ0aGlzLnBhcmVudEVsZW1lbnQuX2NvbHVtblByb3BDaGFuZ2VkKCJmbGV4R3JvdyIpLHRoaXMuX2FsbENlbGxzLmZvckVhY2goKGU9PmUuc3R5bGUuZmxleEdyb3c9dCkpfV9vcmRlckNoYW5nZWQodCl7dGhpcy5fYWxsQ2VsbHMuZm9yRWFjaCgoZT0+ZS5zdHlsZS5vcmRlcj10KSl9X3dpZHRoQ2hhbmdlZCh0KXt0aGlzLnBhcmVudEVsZW1lbnQmJnRoaXMucGFyZW50RWxlbWVudC5fY29sdW1uUHJvcENoYW5nZWQmJnRoaXMucGFyZW50RWxlbWVudC5fY29sdW1uUHJvcENoYW5nZWQoIndpZHRoIiksdGhpcy5fYWxsQ2VsbHMuZm9yRWFjaCgoZT0+ZS5zdHlsZS53aWR0aD10KSksdGhpcy5fZ3JpZCYmdGhpcy5fZ3JpZC5fX2ZvcmNlUmVmbG93JiZ0aGlzLl9ncmlkLl9fZm9yY2VSZWZsb3coKX1fZnJvemVuQ2hhbmdlZCh0KXt0aGlzLnBhcmVudEVsZW1lbnQmJnRoaXMucGFyZW50RWxlbWVudC5fY29sdW1uUHJvcENoYW5nZWQmJnRoaXMucGFyZW50RWxlbWVudC5fY29sdW1uUHJvcENoYW5nZWQoImZyb3plbiIsdCksdGhpcy5fYWxsQ2VsbHMuZm9yRWFjaCgoZT0+dGhpcy5fdG9nZ2xlQXR0cmlidXRlKCJmcm96ZW4iLHQsZSkpKSx0aGlzLl9ncmlkJiZ0aGlzLl9ncmlkLl9mcm96ZW5DZWxsc0NoYW5nZWQmJnRoaXMuX2dyaWQuX2Zyb3plbkNlbGxzQ2hhbmdlZCgpfV9sYXN0RnJvemVuQ2hhbmdlZCh0KXt0aGlzLl9hbGxDZWxscy5mb3JFYWNoKChlPT50aGlzLl90b2dnbGVBdHRyaWJ1dGUoImxhc3QtZnJvemVuIix0LGUpKSksdGhpcy5wYXJlbnRFbGVtZW50JiZ0aGlzLnBhcmVudEVsZW1lbnQuX2NvbHVtblByb3BDaGFuZ2VkJiYodGhpcy5wYXJlbnRFbGVtZW50Ll9sYXN0RnJvemVuPXQpfV9wYXRoT3JIZWFkZXJDaGFuZ2VkKHQsZSxuLGkscixvLGEscyxsKXtjb25zdCBjPXZvaWQgMCE9PWU7aWYoIWEmJiFsJiZjJiZuJiZ0aGlzLl9fc2V0VGV4dENvbnRlbnQobi5fY29udGVudCxlKSx0JiZyLnZhbHVlKXtpZighbyYmIXMpe3RoaXMuX19zZXRDb2x1bW5UZW1wbGF0ZU9yUmVuZGVyZXIodm9pZCAwLCgoZSxuLHtpdGVtOml9KT0+dGhpcy5fX3NldFRleHRDb250ZW50KGUsdGhpcy5nZXQodCxpKSkpLHIudmFsdWUpfWF8fGx8fGN8fCFufHxudWxsPT09ZXx8dGhpcy5fX3NldFRleHRDb250ZW50KG4uX2NvbnRlbnQsdGhpcy5fZ2VuZXJhdGVIZWFkZXIodCkpfW4mJnRoaXMuX2dyaWQuX191cGRhdGVIZWFkZXJGb290ZXJSb3dWaXNpYmlsaXR5KG4ucGFyZW50RWxlbWVudCl9X19zZXRUZXh0Q29udGVudCh0LGUpe3QudGV4dENvbnRlbnQhPT1lJiYodC50ZXh0Q29udGVudD1lKX1fZ2VuZXJhdGVIZWFkZXIodCl7cmV0dXJuIHQuc3Vic3RyKHQubGFzdEluZGV4T2YoIi4iKSsxKS5yZXBsYWNlKC8oW0EtWl0pL2csIi0kMSIpLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvLS9nLCIgIikucmVwbGFjZSgvXi4vLCh0PT50LnRvVXBwZXJDYXNlKCkpKX1fdG9nZ2xlQXR0cmlidXRlKHQsZSxuKXtuLmhhc0F0dHJpYnV0ZSh0KT09PSFlJiYoZT9uLnNldEF0dHJpYnV0ZSh0LCIiKTpuLnJlbW92ZUF0dHJpYnV0ZSh0KSl9X3Jlb3JkZXJTdGF0dXNDaGFuZ2VkKHQpe3RoaXMuX2FsbENlbGxzLmZvckVhY2goKGU9PmUuc2V0QXR0cmlidXRlKCJyZW9yZGVyLXN0YXR1cyIsdCkpKX1fcmVzaXphYmxlQ2hhbmdlZCh0LGUpe3ZvaWQgMCE9PXQmJnZvaWQgMCE9PWUmJmUmJltlXS5jb25jYXQodGhpcy5fZW1wdHlDZWxscykuZm9yRWFjaCgoZT0+e2lmKGUpe2NvbnN0IG49ZS5xdWVyeVNlbGVjdG9yKCdbcGFydH49InJlc2l6ZS1oYW5kbGUiXScpO2lmKG4mJmUucmVtb3ZlQ2hpbGQobiksdCl7Y29uc3QgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTt0LnNldEF0dHJpYnV0ZSgicGFydCIsInJlc2l6ZS1oYW5kbGUiKSxlLmFwcGVuZENoaWxkKHQpfX19KSl9X3RleHRBbGlnbkNoYW5nZWQodCl7aWYodm9pZCAwPT09dClyZXR1cm47aWYoLTE9PT1bInN0YXJ0IiwiZW5kIiwiY2VudGVyIl0uaW5kZXhPZih0KSlyZXR1cm4gdm9pZCBjb25zb2xlLndhcm4oJ3RleHRBbGlnbiBjYW4gb25seSBiZSBzZXQgYXMgInN0YXJ0IiwgImVuZCIgb3IgImNlbnRlciInKTtsZXQgZTsibHRyIj09PWdldENvbXB1dGVkU3R5bGUodGhpcy5fZ3JpZCkuZGlyZWN0aW9uPyJzdGFydCI9PT10P2U9ImxlZnQiOiJlbmQiPT09dCYmKGU9InJpZ2h0Iik6InN0YXJ0Ij09PXQ/ZT0icmlnaHQiOiJlbmQiPT09dCYmKGU9ImxlZnQiKSx0aGlzLl9hbGxDZWxscy5mb3JFYWNoKChuPT57bi5fY29udGVudC5zdHlsZS50ZXh0QWxpZ249dCxnZXRDb21wdXRlZFN0eWxlKG4uX2NvbnRlbnQpLnRleHRBbGlnbiE9PXQmJihuLl9jb250ZW50LnN0eWxlLnRleHRBbGlnbj1lKX0pKX1faGlkZGVuQ2hhbmdlZCh0KXt0aGlzLnBhcmVudEVsZW1lbnQmJnRoaXMucGFyZW50RWxlbWVudC5fY29sdW1uUHJvcENoYW5nZWQmJnRoaXMucGFyZW50RWxlbWVudC5fY29sdW1uUHJvcENoYW5nZWQoImhpZGRlbiIsdCksISF0IT0hIXRoaXMuX3ByZXZpb3VzSGlkZGVuJiZ0aGlzLl9ncmlkJiYoITA9PT10JiZ0aGlzLl9hbGxDZWxscy5mb3JFYWNoKCh0PT57dC5fY29udGVudC5wYXJlbnROb2RlJiZ0Ll9jb250ZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodC5fY29udGVudCl9KSksdGhpcy5fZ3JpZC5fZGVib3VuY2VySGlkZGVuQ2hhbmdlZD1Obi5kZWJvdW5jZSh0aGlzLl9ncmlkLl9kZWJvdW5jZXJIaWRkZW5DaGFuZ2VkLF90LCgoKT0+e3RoaXMuX2dyaWQmJnRoaXMuX2dyaWQuX3JlbmRlckNvbHVtblRyZWUmJnRoaXMuX2dyaWQuX3JlbmRlckNvbHVtblRyZWUodGhpcy5fZ3JpZC5fY29sdW1uVHJlZSl9KSksdGhpcy5fZ3JpZC5fdXBkYXRlTGFzdEZyb3plbiYmdGhpcy5fZ3JpZC5fdXBkYXRlTGFzdEZyb3plbigpLHRoaXMuX2dyaWQubm90aWZ5UmVzaXplJiZ0aGlzLl9ncmlkLm5vdGlmeVJlc2l6ZSgpLHRoaXMuX2dyaWQuX3Jlc2V0S2V5Ym9hcmROYXZpZ2F0aW9uJiZ0aGlzLl9ncmlkLl9yZXNldEtleWJvYXJkTmF2aWdhdGlvbigpKSx0aGlzLl9wcmV2aW91c0hpZGRlbj10fX07Y2xhc3MgZDB0IGV4dGVuZHMoaDB0KEExdCh3ZSkpKXtzdGF0aWMgZ2V0IGlzKCl7cmV0dXJuInZhYWRpbi1ncmlkLWNvbHVtbiJ9c3RhdGljIGdldCBwcm9wZXJ0aWVzKCl7cmV0dXJue3dpZHRoOnt0eXBlOlN0cmluZyx2YWx1ZToiMTAwcHgifSxmbGV4R3Jvdzp7dHlwZTpOdW1iZXIsdmFsdWU6MX0scmVuZGVyZXI6RnVuY3Rpb24scGF0aDp7dHlwZTpTdHJpbmd9LGF1dG9XaWR0aDp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxfYm9keVRlbXBsYXRlOnt0eXBlOk9iamVjdH0sX2NlbGxzOkFycmF5fX19Y3VzdG9tRWxlbWVudHMuZGVmaW5lKGQwdC5pcyxkMHQpLAovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgKGMpIDIwMjEgVmFhZGluIEx0ZC4KICAgICAqIFRoaXMgcHJvZ3JhbSBpcyBhdmFpbGFibGUgdW5kZXIgQXBhY2hlIExpY2Vuc2UgVmVyc2lvbiAyLjAsIGF2YWlsYWJsZSBhdCBodHRwczovL3ZhYWRpbi5jb20vbGljZW5zZS8KICAgICAqLwp0MXQoInZhYWRpbi1ncmlkIiwkUXRgCiAgICBAa2V5ZnJhbWVzIHZhYWRpbi1ncmlkLWFwcGVhciB7CiAgICAgIHRvIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICB9CiAgICB9CgogICAgOmhvc3QgewogICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgYW5pbWF0aW9uOiAxbXMgdmFhZGluLWdyaWQtYXBwZWFyOwogICAgICBoZWlnaHQ6IDQwMHB4OwogICAgICBmbGV4OiAxIDEgYXV0bzsKICAgICAgYWxpZ24tc2VsZjogc3RyZXRjaDsKICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgfQoKICAgIDpob3N0KFtoaWRkZW5dKSB7CiAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICAgIH0KCiAgICAjc2Nyb2xsZXIgewogICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogICAgICB3aWR0aDogYXV0bzsKICAgICAgaGVpZ2h0OiBhdXRvOwogICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgIHRvcDogMDsKICAgICAgcmlnaHQ6IDA7CiAgICAgIGJvdHRvbTogMDsKICAgICAgbGVmdDogMDsKICAgIH0KCiAgICA6aG9zdChbaGVpZ2h0LWJ5LXJvd3NdKSB7CiAgICAgIGhlaWdodDogYXV0bzsKICAgICAgYWxpZ24tc2VsZjogZmxleC1zdGFydDsKICAgICAgZmxleC1ncm93OiAwOwogICAgICB3aWR0aDogMTAwJTsKICAgIH0KCiAgICA6aG9zdChbaGVpZ2h0LWJ5LXJvd3NdKSAjc2Nyb2xsZXIgewogICAgICB3aWR0aDogMTAwJTsKICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB9CgogICAgI3RhYmxlIHsKICAgICAgZGlzcGxheTogZmxleDsKICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIGhlaWdodDogMTAwJTsKICAgICAgb3ZlcmZsb3c6IGF1dG87CiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgb3V0bGluZTogbm9uZTsKICAgICAgLyogV29ya2Fyb3VuZCBmb3IgYSBEZXNrdG9wIFNhZmFyaSBidWc6IG5ldyBzdGFja2luZyBjb250ZXh0IGhlcmUgcHJldmVudHMgdGhlIHNjcm9sbGJhciBmcm9tIGdldHRpbmcgaGlkZGVuICovCiAgICAgIHotaW5kZXg6IDA7CiAgICB9CgogICAgI2hlYWRlciwKICAgICNmb290ZXIgewogICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgcG9zaXRpb246IC13ZWJraXQtc3RpY2t5OwogICAgICBwb3NpdGlvbjogc3RpY2t5OwogICAgICBsZWZ0OiAwOwogICAgICBvdmVyZmxvdzogdmlzaWJsZTsKICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIHotaW5kZXg6IDE7CiAgICB9CgogICAgI2hlYWRlciB7CiAgICAgIHRvcDogMDsKICAgIH0KCiAgICB0aCB7CiAgICAgIHRleHQtYWxpZ246IGluaGVyaXQ7CiAgICB9CgogICAgLyogU2FmYXJpIGRvZXNuJ3Qgd29yayB3aXRoICJpbmhlcml0IiAqLwogICAgW3NhZmFyaV0gdGggewogICAgICB0ZXh0LWFsaWduOiBpbml0aWFsOwogICAgfQoKICAgICNmb290ZXIgewogICAgICBib3R0b206IDA7CiAgICB9CgogICAgI2l0ZW1zIHsKICAgICAgZmxleC1ncm93OiAxOwogICAgICBmbGV4LXNocmluazogMDsKICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgIHBvc2l0aW9uOiAtd2Via2l0LXN0aWNreTsKICAgICAgcG9zaXRpb246IHN0aWNreTsKICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIGxlZnQ6IDA7CiAgICAgIG92ZXJmbG93OiB2aXNpYmxlOwogICAgfQoKICAgIFtwYXJ0fj0ncm93J10gewogICAgICBkaXNwbGF5OiBmbGV4OwogICAgICB3aWR0aDogMTAwJTsKICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgbWFyZ2luOiAwOwogICAgfQoKICAgIFtwYXJ0fj0ncm93J11bbG9hZGluZ10gW3BhcnR+PSdib2R5LWNlbGwnXSA6OnNsb3R0ZWQodmFhZGluLWdyaWQtY2VsbC1jb250ZW50KSB7CiAgICAgIG9wYWNpdHk6IDA7CiAgICB9CgogICAgI2l0ZW1zIFtwYXJ0fj0ncm93J10gewogICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB9CgogICAgI2l0ZW1zIFtwYXJ0fj0ncm93J106ZW1wdHkgewogICAgICBoZWlnaHQ6IDFlbTsKICAgIH0KCiAgICBbcGFydH49J2NlbGwnXTpub3QoW3BhcnR+PSdkZXRhaWxzLWNlbGwnXSkgewogICAgICBmbGV4LXNocmluazogMDsKICAgICAgZmxleC1ncm93OiAxOwogICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICBkaXNwbGF5OiBmbGV4OwogICAgICB3aWR0aDogMTAwJTsKICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICBwYWRkaW5nOiAwOwogICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgfQoKICAgIFtwYXJ0fj0nZGV0YWlscy1jZWxsJ10gewogICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgIGJvdHRvbTogMDsKICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgIHBhZGRpbmc6IDA7CiAgICB9CgogICAgW3BhcnR+PSdjZWxsJ10gOjpzbG90dGVkKHZhYWRpbi1ncmlkLWNlbGwtY29udGVudCkgewogICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwogICAgfQoKICAgIFtoaWRkZW5dIHsKICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogICAgfQoKICAgIFtmcm96ZW5dIHsKICAgICAgei1pbmRleDogMjsKICAgICAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTsKICAgIH0KCiAgICBbbm8tc2Nyb2xsYmFyc11bc2FmYXJpXSAjdGFibGUsCiAgICBbbm8tc2Nyb2xsYmFyc11bZmlyZWZveF0gI3RhYmxlIHsKICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIH0KCiAgICAvKiBSZW9yZGVyaW5nIHN0eWxlcyAqLwogICAgOmhvc3QoW3Jlb3JkZXJpbmddKSBbcGFydH49J2NlbGwnXSA6OnNsb3R0ZWQodmFhZGluLWdyaWQtY2VsbC1jb250ZW50KSwKICAgIDpob3N0KFtyZW9yZGVyaW5nXSkgW3BhcnR+PSdyZXNpemUtaGFuZGxlJ10sCiAgICAjc2Nyb2xsZXJbbm8tY29udGVudC1wb2ludGVyLWV2ZW50c10gW3BhcnR+PSdjZWxsJ10gOjpzbG90dGVkKHZhYWRpbi1ncmlkLWNlbGwtY29udGVudCkgewogICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgIH0KCiAgICBbcGFydH49J3Jlb3JkZXItZ2hvc3QnXSB7CiAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKICAgICAgcG9zaXRpb246IGZpeGVkOwogICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgb3BhY2l0eTogMC41OwoKICAgICAgLyogUHJldmVudCBvdmVyZmxvd2luZyB0aGUgZ3JpZCBpbiBGaXJlZm94ICovCiAgICAgIHRvcDogMDsKICAgICAgbGVmdDogMDsKICAgIH0KCiAgICA6aG9zdChbcmVvcmRlcmluZ10pIHsKICAgICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgICB9CgogICAgLyogUmVzaXppbmcgc3R5bGVzICovCiAgICBbcGFydH49J3Jlc2l6ZS1oYW5kbGUnXSB7CiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgdG9wOiAwOwogICAgICByaWdodDogMDsKICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICBjdXJzb3I6IGNvbC1yZXNpemU7CiAgICAgIHotaW5kZXg6IDE7CiAgICB9CgogICAgW3BhcnR+PSdyZXNpemUtaGFuZGxlJ106OmJlZm9yZSB7CiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgY29udGVudDogJyc7CiAgICAgIGhlaWdodDogMTAwJTsKICAgICAgd2lkdGg6IDM1cHg7CiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTsKICAgIH0KCiAgICBbbGFzdC1jb2x1bW5dIFtwYXJ0fj0ncmVzaXplLWhhbmRsZSddOjpiZWZvcmUsCiAgICBbbGFzdC1mcm96ZW5dIFtwYXJ0fj0ncmVzaXplLWhhbmRsZSddOjpiZWZvcmUgewogICAgICB3aWR0aDogMThweDsKICAgICAgdHJhbnNmb3JtOiBub25lOwogICAgICByaWdodDogMDsKICAgIH0KCiAgICAjc2Nyb2xsZXJbY29sdW1uLXJlc2l6aW5nXSB7CiAgICAgIC1tcy11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgICB9CgogICAgLyogU2l6ZXIgc3R5bGVzICovCiAgICAjc2l6ZXIgewogICAgICBkaXNwbGF5OiBmbGV4OwogICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKICAgIH0KCiAgICAjc2l6ZXIgW3BhcnR+PSdkZXRhaWxzLWNlbGwnXSB7CiAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICAgIH0KCiAgICAjc2l6ZXIgW3BhcnR+PSdjZWxsJ11baGlkZGVuXSB7CiAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICAgIH0KCiAgICAjc2l6ZXIgW3BhcnR+PSdjZWxsJ10gewogICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgIGxpbmUtaGVpZ2h0OiAwOwogICAgICBoZWlnaHQ6IDAgIWltcG9ydGFudDsKICAgICAgbWluLWhlaWdodDogMCAhaW1wb3J0YW50OwogICAgICBtYXgtaGVpZ2h0OiAwICFpbXBvcnRhbnQ7CiAgICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKICAgICAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7CiAgICB9CgogICAgI3NpemVyIFtwYXJ0fj0nY2VsbCddOjpiZWZvcmUgewogICAgICBjb250ZW50OiAnLSc7CiAgICB9CgogICAgI3NpemVyIFtwYXJ0fj0nY2VsbCddIDo6c2xvdHRlZCh2YWFkaW4tZ3JpZC1jZWxsLWNvbnRlbnQpIHsKICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogICAgfQoKICAgIC8qIFJUTCBzcGVjaWZpYyBzdHlsZXMgKi8KCiAgICA6aG9zdChbZGlyPSdydGwnXSkgI2l0ZW1zLAogICAgOmhvc3QoW2Rpcj0ncnRsJ10pICNoZWFkZXIsCiAgICA6aG9zdChbZGlyPSdydGwnXSkgI2Zvb3RlciB7CiAgICAgIGxlZnQ6IGF1dG87CiAgICB9CgogICAgOmhvc3QoW2Rpcj0ncnRsJ10pIFtwYXJ0fj0ncmVvcmRlci1naG9zdCddIHsKICAgICAgbGVmdDogYXV0bzsKICAgICAgcmlnaHQ6IDA7CiAgICB9CgogICAgOmhvc3QoW2Rpcj0ncnRsJ10pIFtwYXJ0fj0ncmVzaXplLWhhbmRsZSddIHsKICAgICAgbGVmdDogMDsKICAgICAgcmlnaHQ6IGF1dG87CiAgICB9CgogICAgOmhvc3QoW2Rpcj0ncnRsJ10pIFtwYXJ0fj0ncmVzaXplLWhhbmRsZSddOjpiZWZvcmUgewogICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoNTAlKTsKICAgIH0KCiAgICA6aG9zdChbZGlyPSdydGwnXSkgW2xhc3QtY29sdW1uXSBbcGFydH49J3Jlc2l6ZS1oYW5kbGUnXTo6YmVmb3JlLAogICAgOmhvc3QoW2Rpcj0ncnRsJ10pIFtsYXN0LWZyb3plbl0gW3BhcnR+PSdyZXNpemUtaGFuZGxlJ106OmJlZm9yZSB7CiAgICAgIGxlZnQ6IDA7CiAgICAgIHJpZ2h0OiBhdXRvOwogICAgfQogIGAse21vZHVsZUlkOiJ2YWFkaW4tZ3JpZC1zdHlsZXMifSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAyMSBWYWFkaW4gTHRkLgogICAgICogVGhpcyBwcm9ncmFtIGlzIGF2YWlsYWJsZSB1bmRlciBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgYXZhaWxhYmxlIGF0IGh0dHBzOi8vdmFhZGluLmNvbS9saWNlbnNlLwogICAgICovCmNvbnN0IHAwdD0oKCk9Pnt0cnl7cmV0dXJuIGRvY3VtZW50LmNyZWF0ZUV2ZW50KCJUb3VjaEV2ZW50IiksITB9Y2F0Y2godCl7cmV0dXJuITF9fSkoKTtjbGFzcyBmMHQgZXh0ZW5kcyhQMXQoZjF0KGoxdChGMXQoRzF0KEIxdChaMXQoSjF0KFExdChYMXQoYzB0KEQxdChxMXQodTB0KFYxdChXMXQobDB0KHQwdCh6MXQpKSkpKSkpKSkpKSkpKSkpKSkpe3N0YXRpYyBnZXQgdGVtcGxhdGUoKXtyZXR1cm4geGVgCiAgICAgIDxkaXYKICAgICAgICBpZD0ic2Nyb2xsZXIiCiAgICAgICAgc2FmYXJpJD0iW1tfc2FmYXJpXV0iCiAgICAgICAgaW9zJD0iW1tfaW9zXV0iCiAgICAgICAgbG9hZGluZyQ9IltbbG9hZGluZ11dIgogICAgICAgIGNvbHVtbi1yZW9yZGVyaW5nLWFsbG93ZWQkPSJbW2NvbHVtblJlb3JkZXJpbmdBbGxvd2VkXV0iCiAgICAgID4KICAgICAgICA8dGFibGUgaWQ9InRhYmxlIiByb2xlPSJncmlkIiBhcmlhLW11bHRpc2VsZWN0YWJsZT0idHJ1ZSIgdGFiaW5kZXg9IjAiPgogICAgICAgICAgPGNhcHRpb24gaWQ9InNpemVyIiBwYXJ0PSJyb3ciPjwvY2FwdGlvbj4KICAgICAgICAgIDx0aGVhZCBpZD0iaGVhZGVyIiByb2xlPSJyb3dncm91cCI+PC90aGVhZD4KICAgICAgICAgIDx0Ym9keSBpZD0iaXRlbXMiIHJvbGU9InJvd2dyb3VwIj48L3Rib2R5PgogICAgICAgICAgPHRmb290IGlkPSJmb290ZXIiIHJvbGU9InJvd2dyb3VwIj48L3Rmb290PgogICAgICAgIDwvdGFibGU+CgogICAgICAgIDxkaXYgcGFydD0icmVvcmRlci1naG9zdCI+PC9kaXY+CiAgICAgIDwvZGl2PgoKICAgICAgPGRpdiBpZD0iZm9jdXNleGl0IiB0YWJpbmRleD0iMCI+PC9kaXY+CiAgICBgfXN0YXRpYyBnZXQgaXMoKXtyZXR1cm4idmFhZGluLWdyaWQifXN0YXRpYyBnZXQgdmVyc2lvbigpe3JldHVybiIyMC4wLjIifXN0YXRpYyBnZXQgb2JzZXJ2ZXJzKCl7cmV0dXJuWyJfY29sdW1uVHJlZUNoYW5nZWQoX2NvbHVtblRyZWUsIF9jb2x1bW5UcmVlLiopIl19c3RhdGljIGdldCBwcm9wZXJ0aWVzKCl7cmV0dXJue19zYWZhcmk6e3R5cGU6Qm9vbGVhbix2YWx1ZTovXigoPyFjaHJvbWV8YW5kcm9pZCkuKSpzYWZhcmkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpfSxfaW9zOnt0eXBlOkJvb2xlYW4sdmFsdWU6L2lQYWR8aVBob25lfGlQb2QvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkmJiF3aW5kb3cuTVNTdHJlYW18fCJNYWNJbnRlbCI9PT1uYXZpZ2F0b3IucGxhdGZvcm0mJm5hdmlnYXRvci5tYXhUb3VjaFBvaW50cz4xfSxfZmlyZWZveDp7dHlwZTpCb29sZWFuLHZhbHVlOm5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKS5pbmRleE9mKCJmaXJlZm94Iik+LTF9LF9hbmRyb2lkOnt0eXBlOkJvb2xlYW4sdmFsdWU6L2FuZHJvaWQvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpfSxfdG91Y2hEZXZpY2U6e3R5cGU6Qm9vbGVhbix2YWx1ZTpwMHR9LGhlaWdodEJ5Um93czp7dHlwZTpCb29sZWFuLHZhbHVlOiExLHJlZmxlY3RUb0F0dHJpYnV0ZTohMCxvYnNlcnZlcjoiX2hlaWdodEJ5Um93c0NoYW5nZWQifSxfcmVjYWxjdWxhdGVDb2x1bW5XaWR0aE9uY2VMb2FkaW5nRmluaXNoZWQ6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMH19fWNvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoImFuaW1hdGlvbmVuZCIsdGhpcy5fb25BbmltYXRpb25FbmQpfWNvbm5lY3RlZENhbGxiYWNrKCl7c3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKSx0aGlzLnJlY2FsY3VsYXRlQ29sdW1uV2lkdGhzKCl9YXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKHQsZSxuKXtzdXBlci5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sodCxlLG4pLCJkaXIiPT09dCYmKHRoaXMuX19pc1JUTD0icnRsIj09PW4sdGhpcy5fdXBkYXRlU2Nyb2xsZXJNZWFzdXJlbWVudHMoKSl9X19oYXNSb3dzV2l0aENsaWVudEhlaWdodCgpe3JldHVybiEhQXJyYXkuZnJvbSh0aGlzLiQuaXRlbXMuY2hpbGRyZW4pLmZpbHRlcigodD0+dC5jbGllbnRIZWlnaHQpKS5sZW5ndGh9X19pdGVtc1JlY2VpdmVkKCl7dGhpcy5fcmVjYWxjdWxhdGVDb2x1bW5XaWR0aE9uY2VMb2FkaW5nRmluaXNoZWQmJiF0aGlzLl9jYWNoZS5pc0xvYWRpbmcoKSYmdGhpcy5fX2hhc1Jvd3NXaXRoQ2xpZW50SGVpZ2h0KCkmJih0aGlzLl9yZWNhbGN1bGF0ZUNvbHVtbldpZHRoT25jZUxvYWRpbmdGaW5pc2hlZD0hMSx0aGlzLnJlY2FsY3VsYXRlQ29sdW1uV2lkdGhzKCkpfV9yZWNhbGN1bGF0ZUNvbHVtbldpZHRocyh0KXt0LmZvckVhY2goKHQ9Pnt0LndpZHRoPSJhdXRvIix0Ll9vcmlnRmxleEdyb3c9dC5mbGV4R3Jvdyx0LmZsZXhHcm93PTB9KSksdC5mb3JFYWNoKCh0PT57dC5fY3VycmVudFdpZHRoPTAsdC5fYWxsQ2VsbHMuZm9yRWFjaCgoZT0+e3QuX2N1cnJlbnRXaWR0aD1NYXRoLm1heCh0Ll9jdXJyZW50V2lkdGgsZS5vZmZzZXRXaWR0aCsxKX0pKX0pKSx0LmZvckVhY2goKHQ9Pnt0LndpZHRoPWAke3QuX2N1cnJlbnRXaWR0aH1weGAsdC5mbGV4R3Jvdz10Ll9vcmlnRmxleEdyb3csdC5fY3VycmVudFdpZHRoPXZvaWQgMCx0Ll9vcmlnRmxleEdyb3c9dm9pZCAwfSkpfXJlY2FsY3VsYXRlQ29sdW1uV2lkdGhzKCl7aWYodGhpcy5fY29sdW1uVHJlZSlpZih0aGlzLl9jYWNoZS5pc0xvYWRpbmcoKSl0aGlzLl9yZWNhbGN1bGF0ZUNvbHVtbldpZHRoT25jZUxvYWRpbmdGaW5pc2hlZD0hMDtlbHNle2NvbnN0IHQ9dGhpcy5fZ2V0Q29sdW1ucygpLmZpbHRlcigodD0+IXQuaGlkZGVuJiZ0LmF1dG9XaWR0aCkpO3RoaXMuX3JlY2FsY3VsYXRlQ29sdW1uV2lkdGhzKHQpfX1fY3JlYXRlU2Nyb2xsZXJSb3dzKHQpe2NvbnN0IGU9W107Zm9yKGxldCBuPTA7bjx0O24rKyl7Y29uc3QgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpO3Quc2V0QXR0cmlidXRlKCJwYXJ0Iiwicm93IiksdC5zZXRBdHRyaWJ1dGUoInJvbGUiLCJyb3ciKSx0aGlzLl9jb2x1bW5UcmVlJiZ0aGlzLl91cGRhdGVSb3codCx0aGlzLl9jb2x1bW5UcmVlW3RoaXMuX2NvbHVtblRyZWUubGVuZ3RoLTFdLCJib2R5IiwhMSwhMCksZS5wdXNoKHQpfXJldHVybiB0aGlzLl9jb2x1bW5UcmVlJiZ0aGlzLl9jb2x1bW5UcmVlW3RoaXMuX2NvbHVtblRyZWUubGVuZ3RoLTFdLmZvckVhY2goKHQ9PnQuaXNDb25uZWN0ZWQmJnQubm90aWZ5UGF0aCYmdC5ub3RpZnlQYXRoKCJfY2VsbHMuKiIsdC5fY2VsbHMpKSksKGZ1bmN0aW9uIG4odCxlLGkpe05pfHxPaSgpLElpLnB1c2goW3QsZSxpXSl9KSh0aGlzLCgoKT0+e3RoaXMuX3VwZGF0ZUZpcnN0QW5kTGFzdENvbHVtbigpLHRoaXMuX3Jlc2V0S2V5Ym9hcmROYXZpZ2F0aW9uKCl9KSksZX1fZ2V0Um93VGFyZ2V0KCl7cmV0dXJuIHRoaXMuJC5pdGVtc31fY3JlYXRlQ2VsbCh0KXtjb25zdCBlPSJ2YWFkaW4tZ3JpZC1jZWxsLWNvbnRlbnQtIisodGhpcy5fY29udGVudEluZGV4PXRoaXMuX2NvbnRlbnRJbmRleCsxfHwwKSxuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInZhYWRpbi1ncmlkLWNlbGwtY29udGVudCIpO24uc2V0QXR0cmlidXRlKCJzbG90IixlKTtjb25zdCBpPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodCk7aS5pZD1lLnJlcGxhY2UoIi1jb250ZW50LSIsIi0iKSxpLnNldEF0dHJpYnV0ZSgidGFiaW5kZXgiLCItMSIpLGkuc2V0QXR0cmlidXRlKCJyb2xlIiwidGQiPT09dD8iZ3JpZGNlbGwiOiJjb2x1bW5oZWFkZXIiKTtjb25zdCByPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNsb3QiKTtyZXR1cm4gci5zZXRBdHRyaWJ1dGUoIm5hbWUiLGUpLGkuYXBwZW5kQ2hpbGQociksaS5fY29udGVudD1uLG4uYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwoKCk9PntpZih3aW5kb3cuY2hyb21lKXtjb25zdCB0PSgpPT57bi5jb250YWlucyh0aGlzLmdldFJvb3ROb2RlKCkuYWN0aXZlRWxlbWVudCl8fGkuZm9jdXMoKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZXVwIix0LCEwKX07ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsdCwhMCl9ZWxzZSBzZXRUaW1lb3V0KCgoKT0+e24uY29udGFpbnModGhpcy5nZXRSb290Tm9kZSgpLmFjdGl2ZUVsZW1lbnQpfHxpLmZvY3VzKCl9KSl9KSksaX1fdXBkYXRlUm93KHQsZSxuLGkscil7bj1ufHwiYm9keSI7Y29uc3Qgbz1kb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7QXJyYXkuZnJvbSh0LmNoaWxkcmVuKS5mb3JFYWNoKCh0PT50Ll92YWNhbnQ9ITApKSx0LmlubmVySFRNTD0iIiwic2l6ZXIiIT09dC5pZCYmKHQuaGlkZGVuPSEwKSxlLmZpbHRlcigodD0+IXQuaGlkZGVuKSkuZm9yRWFjaCgoKGUsYSxzKT0+e2xldCBsO2lmKCJib2R5Ij09PW4pe2lmKGUuX2NlbGxzPWUuX2NlbGxzfHxbXSxsPWUuX2NlbGxzLmZpbHRlcigodD0+dC5fdmFjYW50KSlbMF0sbHx8KGw9dGhpcy5fY3JlYXRlQ2VsbCgidGQiKSxlLl9jZWxscy5wdXNoKGwpKSxsLnNldEF0dHJpYnV0ZSgicGFydCIsImNlbGwgYm9keS1jZWxsIiksdC5hcHBlbmRDaGlsZChsKSxhPT09cy5sZW5ndGgtMSYmKHRoaXMuX3Jvd0RldGFpbHNUZW1wbGF0ZXx8dGhpcy5yb3dEZXRhaWxzUmVuZGVyZXIpKXt0aGlzLl9kZXRhaWxzQ2VsbHM9dGhpcy5fZGV0YWlsc0NlbGxzfHxbXTtjb25zdCBlPXRoaXMuX2RldGFpbHNDZWxscy5maWx0ZXIoKHQ9PnQuX3ZhY2FudCkpWzBdfHx0aGlzLl9jcmVhdGVDZWxsKCJ0ZCIpOy0xPT09dGhpcy5fZGV0YWlsc0NlbGxzLmluZGV4T2YoZSkmJnRoaXMuX2RldGFpbHNDZWxscy5wdXNoKGUpLGUuX2NvbnRlbnQucGFyZW50RWxlbWVudHx8by5hcHBlbmRDaGlsZChlLl9jb250ZW50KSx0aGlzLl9jb25maWd1cmVEZXRhaWxzQ2VsbChlKSx0LmFwcGVuZENoaWxkKGUpLHRoaXMuX2ExMXlTZXRSb3dEZXRhaWxzQ2VsbCh0LGUpLGUuX3ZhY2FudD0hMX1lLm5vdGlmeVBhdGgmJiFyJiZlLm5vdGlmeVBhdGgoIl9jZWxscy4qIixlLl9jZWxscyl9ZWxzZXtjb25zdCByPSJoZWFkZXIiPT09bj8idGgiOiJ0ZCI7aXx8InZhYWRpbi1ncmlkLWNvbHVtbi1ncm91cCI9PT1lLmxvY2FsTmFtZT8obD1lW2BfJHtufUNlbGxgXXx8dGhpcy5fY3JlYXRlQ2VsbChyKSxsLl9jb2x1bW49ZSx0LmFwcGVuZENoaWxkKGwpLGVbYF8ke259Q2VsbGBdPWwpOihlLl9lbXB0eUNlbGxzPWUuX2VtcHR5Q2VsbHN8fFtdLGw9ZS5fZW1wdHlDZWxscy5maWx0ZXIoKHQ9PnQuX3ZhY2FudCkpWzBdfHx0aGlzLl9jcmVhdGVDZWxsKHIpLGwuX2NvbHVtbj1lLHQuYXBwZW5kQ2hpbGQobCksLTE9PT1lLl9lbXB0eUNlbGxzLmluZGV4T2YobCkmJmUuX2VtcHR5Q2VsbHMucHVzaChsKSksbC5zZXRBdHRyaWJ1dGUoInBhcnQiLGBjZWxsICR7bn0tY2VsbGApLHRoaXMuX191cGRhdGVIZWFkZXJGb290ZXJSb3dWaXNpYmlsaXR5KHQpfWwuX2NvbnRlbnQucGFyZW50RWxlbWVudHx8by5hcHBlbmRDaGlsZChsLl9jb250ZW50KSxsLl92YWNhbnQ9ITEsbC5fY29sdW1uPWV9KSksdGhpcy5hcHBlbmRDaGlsZChvKSx0aGlzLl9mcm96ZW5DZWxsc0NoYW5nZWQoKSx0aGlzLl91cGRhdGVGaXJzdEFuZExhc3RDb2x1bW5Gb3JSb3codCl9X191cGRhdGVIZWFkZXJGb290ZXJSb3dWaXNpYmlsaXR5KHQpe2lmKCF0KXJldHVybjtjb25zdCBlPUFycmF5LmZyb20odC5jaGlsZHJlbikuZmlsdGVyKChlPT57Y29uc3Qgbj1lLl9jb2x1bW47aWYobi5fZW1wdHlDZWxscyYmbi5fZW1wdHlDZWxscy5pbmRleE9mKGUpPi0xKXJldHVybiExO2lmKHQucGFyZW50RWxlbWVudD09PXRoaXMuJC5oZWFkZXIpe2lmKG4uaGVhZGVyUmVuZGVyZXJ8fG4uX2hlYWRlclRlbXBsYXRlKXJldHVybiEwO2lmKG51bGw9PT1uLmhlYWRlcilyZXR1cm4hMTtpZihuLnBhdGh8fHZvaWQgMCE9PW4uaGVhZGVyKXJldHVybiEwfWVsc2UgaWYobi5mb290ZXJSZW5kZXJlcnx8bi5fZm9vdGVyVGVtcGxhdGUpcmV0dXJuITB9KSk7dC5oaWRkZW4hPT0hZS5sZW5ndGgmJih0LmhpZGRlbj0hZS5sZW5ndGgsdGhpcy5ub3RpZnlSZXNpemUoKSl9X3VwZGF0ZVNjcm9sbGVySXRlbSh0LGUpe3RoaXMuX3ByZXZlbnRTY3JvbGxlclJvdGF0aW5nQ2VsbEZvY3VzKHQsZSksdGhpcy5fY29sdW1uVHJlZSYmKHRoaXMuX3RvZ2dsZUF0dHJpYnV0ZSgiZmlyc3QiLDA9PT1lLHQpLHRoaXMuX3RvZ2dsZUF0dHJpYnV0ZSgib2RkIixlJTIsdCksdGhpcy5fYTExeVVwZGF0ZVJvd1Jvd2luZGV4KHQsZSksdGhpcy5fZ2V0SXRlbShlLHQpKX1fY29sdW1uVHJlZUNoYW5nZWQodCl7dGhpcy5fcmVuZGVyQ29sdW1uVHJlZSh0KSx0aGlzLnJlY2FsY3VsYXRlQ29sdW1uV2lkdGhzKCl9X3JlbmRlckNvbHVtblRyZWUodCl7Zm9yKEFycmF5LmZyb20odGhpcy4kLml0ZW1zLmNoaWxkcmVuKS5mb3JFYWNoKChlPT50aGlzLl91cGRhdGVSb3coZSx0W3QubGVuZ3RoLTFdLG51bGwsITEsITApKSk7dGhpcy4kLmhlYWRlci5jaGlsZHJlbi5sZW5ndGg8dC5sZW5ndGg7KXtjb25zdCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRyIik7dC5zZXRBdHRyaWJ1dGUoInBhcnQiLCJyb3ciKSx0LnNldEF0dHJpYnV0ZSgicm9sZSIsInJvdyIpLHRoaXMuJC5oZWFkZXIuYXBwZW5kQ2hpbGQodCk7Y29uc3QgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpO2Uuc2V0QXR0cmlidXRlKCJwYXJ0Iiwicm93IiksZS5zZXRBdHRyaWJ1dGUoInJvbGUiLCJyb3ciKSx0aGlzLiQuZm9vdGVyLmFwcGVuZENoaWxkKGUpfWZvcig7dGhpcy4kLmhlYWRlci5jaGlsZHJlbi5sZW5ndGg+dC5sZW5ndGg7KXRoaXMuJC5oZWFkZXIucmVtb3ZlQ2hpbGQodGhpcy4kLmhlYWRlci5maXJzdEVsZW1lbnRDaGlsZCksdGhpcy4kLmZvb3Rlci5yZW1vdmVDaGlsZCh0aGlzLiQuZm9vdGVyLmZpcnN0RWxlbWVudENoaWxkKTtBcnJheS5mcm9tKHRoaXMuJC5oZWFkZXIuY2hpbGRyZW4pLmZvckVhY2goKChlLG4pPT50aGlzLl91cGRhdGVSb3coZSx0W25dLCJoZWFkZXIiLG49PT10Lmxlbmd0aC0xKSkpLEFycmF5LmZyb20odGhpcy4kLmZvb3Rlci5jaGlsZHJlbikuZm9yRWFjaCgoKGUsbik9PnRoaXMuX3VwZGF0ZVJvdyhlLHRbdC5sZW5ndGgtMS1uXSwiZm9vdGVyIiwwPT09bikpKSx0aGlzLl91cGRhdGVSb3codGhpcy4kLnNpemVyLHRbdC5sZW5ndGgtMV0pLHRoaXMuX3Jlc2l6ZUhhbmRsZXIoKSx0aGlzLl9mcm96ZW5DZWxsc0NoYW5nZWQoKSx0aGlzLl91cGRhdGVGaXJzdEFuZExhc3RDb2x1bW4oKSx0aGlzLl9yZXNldEtleWJvYXJkTmF2aWdhdGlvbigpLHRoaXMuX2ExMXlVcGRhdGVIZWFkZXJSb3dzKCksdGhpcy5fYTExeVVwZGF0ZUZvb3RlclJvd3MoKSx0aGlzLl9fdXBkYXRlRm9vdGVyUG9zaXRpb25pbmcoKX1fX3VwZGF0ZUZvb3RlclBvc2l0aW9uaW5nKCl7aWYodGhpcy5fZmlyZWZveCYmKHRoaXMuJC5pdGVtcy5zdHlsZS5wYWRkaW5nQm90dG9tPTAsdGhpcy5oZWlnaHRCeVJvd3N8fCh0aGlzLiQuaXRlbXMuc3R5bGUucGFkZGluZ0JvdHRvbT1gJHt0aGlzLiQuZm9vdGVyLm9mZnNldEhlaWdodH1weGApKSx0aGlzLl9pb3MpeyF3aW5kb3cuQ1NTLnN1cHBvcnRzKCJwb3NpdGlvbiIsInN0aWNreSIpJiYodGhpcy4kLnRhYmxlLnN0eWxlLmhlaWdodD0iIix0aGlzLiQudGFibGUuc3R5bGUubWluSGVpZ2h0PSIxMDAlIix0aGlzLiQudGFibGUuc3R5bGUubWF4SGVpZ2h0PSIxMDAlIixzZXRUaW1lb3V0KCgoKT0+dGhpcy4kLnRhYmxlLnN0eWxlLmhlaWdodD1gJHt0aGlzLiQuc2Nyb2xsZXIub2Zmc2V0SGVpZ2h0fXB4YCkpKX19X3VwZGF0ZUl0ZW0odCxlKXt0Ll9pdGVtPWU7Y29uc3Qgbj10aGlzLl9fZ2V0Um93TW9kZWwodCk7dGhpcy5fdG9nZ2xlQXR0cmlidXRlKCJzZWxlY3RlZCIsbi5zZWxlY3RlZCx0KSx0aGlzLl9hMTF5VXBkYXRlUm93U2VsZWN0ZWQodCxuLnNlbGVjdGVkKSx0aGlzLl9hMTF5VXBkYXRlUm93TGV2ZWwodCxuLmxldmVsKSx0aGlzLl90b2dnbGVBdHRyaWJ1dGUoImV4cGFuZGVkIixuLmV4cGFuZGVkLHQpLHRoaXMuX3RvZ2dsZUF0dHJpYnV0ZSgiZGV0YWlscy1vcGVuZWQiLHRoaXMuX2lzRGV0YWlsc09wZW5lZChlKSx0KSwodGhpcy5fcm93RGV0YWlsc1RlbXBsYXRlfHx0aGlzLnJvd0RldGFpbHNSZW5kZXJlcikmJnRoaXMuX3RvZ2dsZURldGFpbHNDZWxsKHQsZSksdGhpcy5fZ2VuZXJhdGVDZWxsQ2xhc3NOYW1lcyh0LG4pLHRoaXMuX2ZpbHRlckRyYWdBbmREcm9wKHQsbiksQXJyYXkuZnJvbSh0LmNoaWxkcmVuKS5mb3JFYWNoKCh0PT57aWYodC5fcmVuZGVyZXIpe2NvbnN0IGU9dC5fY29sdW1ufHx0aGlzO3QuX3JlbmRlcmVyLmNhbGwoZSx0Ll9jb250ZW50LGUsbil9ZWxzZSB0Ll9pbnN0YW5jZSYmKHQuX2luc3RhbmNlLl9fZGV0YWlsc09wZW5lZF9fPW4uZGV0YWlsc09wZW5lZCx0Ll9pbnN0YW5jZS5fX3NlbGVjdGVkX189bi5zZWxlY3RlZCx0Ll9pbnN0YW5jZS5fX2xldmVsX189bi5sZXZlbCx0Ll9pbnN0YW5jZS5fX2V4cGFuZGVkX189bi5leHBhbmRlZCx0Ll9pbnN0YW5jZS5zZXRQcm9wZXJ0aWVzKG4pKX0pKSx0aGlzLl9kZWJvdW5jZXJVcGRhdGVIZWlnaHRzPU5uLmRlYm91bmNlKHRoaXMuX2RlYm91bmNlclVwZGF0ZUhlaWdodHMsZ3QuYWZ0ZXIoMSksKCgpPT57dGhpcy5fdXBkYXRlTWV0cmljcygpLHRoaXMuX3Bvc2l0aW9uSXRlbXMoKSx0aGlzLl91cGRhdGVTY3JvbGxlclNpemUoKX0pKX1fcmVzaXplSGFuZGxlcigpe3RoaXMuX3VwZGF0ZURldGFpbHNDZWxsSGVpZ2h0cygpLHRoaXMuX2FjY2Vzc0lyb25MaXN0QVBJKHN1cGVyLl9yZXNpemVIYW5kbGVyLCEwKSx0aGlzLl91cGRhdGVTY3JvbGxlck1lYXN1cmVtZW50cygpLHRoaXMuX191cGRhdGVGb290ZXJQb3NpdGlvbmluZygpfV9vbkFuaW1hdGlvbkVuZCh0KXswPT09dC5hbmltYXRpb25OYW1lLmluZGV4T2YoInZhYWRpbi1ncmlkLWFwcGVhciIpJiYodGhpcy5fcmVuZGVyKCksdC5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLm5vdGlmeVJlc2l6ZSgpLHRoaXMuX19pdGVtc1JlY2VpdmVkKCkscmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgoKT0+e3RoaXMuX19zY3JvbGxUb1BlbmRpbmdJbmRleCgpLHRoaXMuJC50YWJsZS5zdHlsZS53ZWJraXRPdmVyZmxvd1Njcm9sbGluZz0idG91Y2gifSkpKX1fdG9nZ2xlQXR0cmlidXRlKHQsZSxuKXtuLmhhc0F0dHJpYnV0ZSh0KT09PSFlJiYoZT9uLnNldEF0dHJpYnV0ZSh0LCIiKTpuLnJlbW92ZUF0dHJpYnV0ZSh0KSl9X19nZXRSb3dNb2RlbCh0KXtyZXR1cm57aW5kZXg6dC5pbmRleCxpdGVtOnQuX2l0ZW0sbGV2ZWw6dGhpcy5fZ2V0SW5kZXhMZXZlbCh0LmluZGV4KSxleHBhbmRlZDp0aGlzLl9pc0V4cGFuZGVkKHQuX2l0ZW0pLHNlbGVjdGVkOnRoaXMuX2lzU2VsZWN0ZWQodC5faXRlbSksZGV0YWlsc09wZW5lZDohKCF0aGlzLl9yb3dEZXRhaWxzVGVtcGxhdGUmJiF0aGlzLnJvd0RldGFpbHNSZW5kZXJlcikmJnRoaXMuX2lzRGV0YWlsc09wZW5lZCh0Ll9pdGVtKX19cmVuZGVyKCl7dGhpcy5fY29sdW1uVHJlZSYmKHRoaXMuX2NvbHVtblRyZWUuZm9yRWFjaCgodD0+e3QuZm9yRWFjaCgodD0+dC5fcmVuZGVySGVhZGVyQW5kRm9vdGVyKCkpKX0pKSx0aGlzLl91cGRhdGUoKSl9bm90aWZ5UmVzaXplKCl7c3VwZXIubm90aWZ5UmVzaXplKCl9X2hlaWdodEJ5Um93c0NoYW5nZWQodCxlKXsodHx8ZSkmJnRoaXMubm90aWZ5UmVzaXplKCl9X19mb3JjZVJlZmxvdygpe3RoaXMuX2RlYm91bmNlckZvcmNlUmVmbG93PU5uLmRlYm91bmNlKHRoaXMuX2RlYm91bmNlckZvcmNlUmVmbG93LF90LCgoKT0+e3RoaXMuJC5zY3JvbGxlci5zdHlsZS5vdmVyZmxvdz0iaGlkZGVuIixzZXRUaW1lb3V0KCgoKT0+dGhpcy4kLnNjcm9sbGVyLnN0eWxlLm92ZXJmbG93PSIiKSl9KSl9fWZ1bmN0aW9uIG0wdCh0LGUpe3JldHVybihmdW5jdGlvbiBuKHQsZSl7cmV0dXJuIFZyKHt9LGNyKGUpLHQpfSkodCxlKX1jdXN0b21FbGVtZW50cy5kZWZpbmUoZjB0LmlzLGYwdCk7bGV0IGcwdD1jbGFzcyBleHRlbmRzIHdle2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9ydW49IiJ9X2NzdlVybCh0LGUsbil7cmV0dXJuIGU/UE8obih0LGUpLHtmb3JtYXQ6ImNzdiJ9KToiIn1fanNvblVybCh0LGUsbil7cmV0dXJuIGU/bih0LGUpOiIifV9jc3ZOYW1lKHQsZSl7cmV0dXJuIGU/YHJ1bi0ke2V9LXRhZy0ke3R9LmNzdmA6IiJ9X2pzb25OYW1lKHQsZSl7cmV0dXJuIGU/YHJ1bi0ke2V9LXRhZy0ke3R9Lmpzb25gOiIifX07ZzB0LnRlbXBsYXRlPXhlYAogICAgPHBhcGVyLWRyb3Bkb3duLW1lbnUKICAgICAgbm8tbGFiZWwtZmxvYXQ9InRydWUiCiAgICAgIGxhYmVsPSJydW4gdG8gZG93bmxvYWQiCiAgICAgIHNlbGVjdGVkLWl0ZW0tbGFiZWw9Int7X3J1bn19IgogICAgPgogICAgICA8cGFwZXItbGlzdGJveCBzbG90PSJkcm9wZG93bi1jb250ZW50Ij4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1yZXBlYXQiIGl0ZW1zPSJbW3J1bnNdXSI+CiAgICAgICAgICA8cGFwZXItaXRlbSBuby1sYWJlbC1mbG9hdD0idHJ1ZSI+W1tpdGVtXV08L3BhcGVyLWl0ZW0+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPC9wYXBlci1saXN0Ym94PgogICAgPC9wYXBlci1kcm9wZG93bi1tZW51PgogICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19ydW5dXSI+CiAgICAgIDxhIGRvd25sb2FkPSJbW19jc3ZOYW1lKHRhZywgX3J1bildXSIgaHJlZj0iW1tfY3N2VXJsKHRhZywgX3J1biwgdXJsRm4pXV0iCiAgICAgICAgPkNTVjwvYQogICAgICA+PCEtLQogICAgICAtLT48YQogICAgICAgIGRvd25sb2FkPSJbW19qc29uTmFtZSh0YWcsIF9ydW4pXV0iCiAgICAgICAgaHJlZj0iW1tfanNvblVybCh0YWcsIF9ydW4sIHVybEZuKV1dIgogICAgICAgID5KU09OPC9hCiAgICAgID4KICAgIDwvdGVtcGxhdGU+CiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgaGVpZ2h0OiAzMnB4OwogICAgICB9CiAgICAgIHBhcGVyLWRyb3Bkb3duLW1lbnUgewogICAgICAgIHdpZHRoOiAxMDBweDsKICAgICAgICAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1sYWJlbDogewogICAgICAgICAgZm9udC1zaXplOiAxMHB4OwogICAgICAgIH0KICAgICAgICAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1pbnB1dDogewogICAgICAgICAgZm9udC1zaXplOiAxMHB4OwogICAgICAgIH0KICAgICAgfQogICAgICBhIHsKICAgICAgICBmb250LXNpemU6IDEwcHg7CiAgICAgICAgbWFyZ2luOiAwIDAuMmVtOwogICAgICB9CiAgICAgIHBhcGVyLWlucHV0IHsKICAgICAgICBmb250LXNpemU6IDIycHg7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYCx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxnMHQucHJvdG90eXBlLCJfcnVuIix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxnMHQucHJvdG90eXBlLCJydW5zIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLGcwdC5wcm90b3R5cGUsInRhZyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxnMHQucHJvdG90eXBlLCJ1cmxGbiIsdm9pZCAwKSxnMHQ9dChbaSgidGYtZG93bmxvYWRlciIpXSxnMHQpO25ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCk7bGV0IF8wdD1jbGFzcyBleHRlbmRzIHdle2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLmNvbG9yU2NhbGU9bnVsbCx0aGlzLl9sb2FkRGF0YUNhbGxiYWNrPSh0LGUsbik9PntpZihudWxsPT1uKXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIkZhaWxlZCB0byBsb2FkIGRhdGEgZm9yOiIsZSk7Y29uc3QgaT1uLm1hcCgodD0+KHt3YWxsX3RpbWU6bmV3IERhdGUoMWUzKnRbMF0pLHN0ZXA6dFsxXSxzY2FsYXI6dFsyXX0pKSkscj10aGlzLl9nZXRTZXJpZXNOYW1lRnJvbURhdHVtKGUpO3Quc2V0U2VyaWVzTWV0YWRhdGEocixlKSx0LnNldFNlcmllc0RhdGEocixpKX0sdGhpcy5nZXREYXRhTG9hZFVybD0oe3RhZzp0LHJ1bjplfSk9PkVyKCkucGx1Z2luUm91dGUoInNjYWxhcnMiLCIvc2NhbGFycyIsbmV3IFVSTFNlYXJjaFBhcmFtcyh7dGFnOnQscnVuOmV9KSksdGhpcy5fZG93bmxvYWRVcmxGbj0odCxlKT0+dGhpcy5nZXREYXRhTG9hZFVybCh7dGFnOnQscnVuOmV9KSx0aGlzLnJlcXVlc3REYXRhPSh0LGUsbik9PnRoaXMuaW5Db2xhYj90aGlzLl9yZXF1ZXN0RGF0YUdldCh0LGUsbik6dGhpcy5fcmVxdWVzdERhdGFQb3N0KHQsZSxuKSx0aGlzLl9yZXF1ZXN0RGF0YUdldD0odCxlLG4pPT57Y29uc3QgaT1FcigpLnBsdWdpblJvdXRlKCJzY2FsYXJzIiwiL3NjYWxhcnMiKTtQcm9taXNlLmFsbCh0Lm1hcCgodD0+e2NvbnN0IG49UE8oaSx7dGFnOnQudGFnLHJ1bjp0LnJ1bn0pO3JldHVybiB0aGlzLnJlcXVlc3RNYW5hZ2VyLnJlcXVlc3QobikudGhlbigobj0+e2Uoe2l0ZW06dCxkYXRhOm59KX0pKX0pKSkuZmluYWxseSgoKCk9PntuKCl9KSl9LHRoaXMuX3JlcXVlc3REYXRhUG9zdD0odCxlLG4pPT57dmFyIGk7Y29uc3Qgcj1FcigpLnBsdWdpblJvdXRlKCJzY2FsYXJzIiwiL3NjYWxhcnNfbXVsdGlydW4iKSxvPW5ldyBNYXA7Zm9yKGNvbnN0e3RhZzplLHJ1bjpufW9mIHQpe2xldCB0PW8uZ2V0KGUpO251bGw9PXQmJm8uc2V0KGUsdD1bXSksdC5wdXNoKG4pfWNvbnN0IGE9bnVsbCE9PShpPXRoaXMuYmF0Y2hTaXplKSYmdm9pZCAwIT09aT9pOjY0LHM9W107Zm9yKGNvbnN0W3QsZV1vZiBvKWZvcihsZXQgbj0wO248ZS5sZW5ndGg7bis9YSlzLnB1c2goe3RhZzp0LHJ1bnM6ZS5zbGljZShuLG4rYSl9KTtQcm9taXNlLmFsbChzLm1hcCgoKHt0YWc6dCxydW5zOm59KT0+dGhpcy5yZXF1ZXN0TWFuYWdlci5yZXF1ZXN0KHIse3RhZzp0LHJ1bnM6bn0pLnRoZW4oKGk9Pntmb3IoY29uc3QgciBvZiBuKXtjb25zdCBuPXt0YWc6dCxydW46cn07T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGkscik/ZSh7aXRlbTpuLGRhdGE6aVtyXX0pOmUoe2l0ZW06bixkYXRhOm51bGx9KX19KSkpKSkuZmluYWxseSgoKCk9PntuKCl9KSl9LHRoaXMuX2dldERhdGFMb2FkTmFtZT10PT50aGlzLl9nZXRTZXJpZXNOYW1lRnJvbURhdHVtKHQpLHRoaXMuX2V4cGFuZGVkPSExLHRoaXMuX3Rvb2x0aXBDb2x1bW5zPSgoKT0+e2NvbnN0IHQ9cEF0LnNsaWNlKCksZT10LmZpbmRJbmRleCgodD0+Ik5hbWUiPT10LnRpdGxlKSk7cmV0dXJuIHQuc3BsaWNlKGUsMSx7dGl0bGU6Ik5hbWUiLGV2YWx1YXRlOnQ9Pntjb25zdCBlPXQuZGF0YXNldC5tZXRhZGF0YSgpLm1ldGE7cmV0dXJuIHRoaXMuX2dldFNlcmllc0Rpc3BsYXlOYW1lRnJvbURhdHVtKGUpfX0pLHR9KSgpfV9nZXRDaGFydERhdGFMb2FkZXIoKXtyZXR1cm4gdGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoInRmLWxpbmUtY2hhcnQtZGF0YS1sb2FkZXIiKX1yZWxvYWQoKXt0aGlzLl9nZXRDaGFydERhdGFMb2FkZXIoKS5yZWxvYWQoKX1yZWRyYXcoKXt0aGlzLl9nZXRDaGFydERhdGFMb2FkZXIoKS5yZWRyYXcoKX1fdG9nZ2xlRXhwYW5kZWQodCl7dGhpcy5zZXQoIl9leHBhbmRlZCIsIXRoaXMuX2V4cGFuZGVkKSx0aGlzLnJlZHJhdygpfV90b2dnbGVMb2dTY2FsZSgpe3RoaXMuc2V0KCJfbG9nU2NhbGVBY3RpdmUiLCF0aGlzLl9sb2dTY2FsZUFjdGl2ZSl9X3Jlc2V0RG9tYWluKCl7Y29uc3QgdD10aGlzLl9nZXRDaGFydERhdGFMb2FkZXIoKTt0JiZ0LnJlc2V0RG9tYWluKCl9X3VwZGF0ZURvd25sb2FkTGluaygpe2NvbnN0IHQ9dGhpcy5fZ2V0Q2hhcnREYXRhTG9hZGVyKCkuZXhwb3J0QXNTdmdTdHJpbmcoKTt0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigiI3N2Z0xpbmsiKS5ocmVmPWBkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LCR7YnRvYSh0KX1gfV9ydW5zRnJvbURhdGEodCl7cmV0dXJuIHQubWFwKCh0PT50LnJ1bikpfV9nZXREYXRhU2VyaWVzKCl7cmV0dXJuIHRoaXMuZGF0YVRvTG9hZC5tYXAoKHQ9PnRoaXMuX2dldFNlcmllc05hbWVGcm9tRGF0dW0odCkpKX1fZ2V0U2VyaWVzTmFtZUZyb21EYXR1bSh7cnVuOnQsZXhwZXJpbWVudDplPXtuYW1lOiJfZGVmYXVsdCJ9fSl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KFtlLm5hbWUsdF0pfV9nZXRTZXJpZXNEaXNwbGF5TmFtZUZyb21EYXR1bSh0KXtyZXR1cm4gdC5ydW59X2dldENvbG9yU2NhbGUoKXtyZXR1cm4gbnVsbCE9PXRoaXMuY29sb3JTY2FsZT90aGlzLmNvbG9yU2NhbGU6e3NjYWxlOnQ9Pntjb25zdFssZV09SlNPTi5wYXJzZSh0KTtyZXR1cm4gX08oZSl9fX19O18wdC50ZW1wbGF0ZT14ZWAKICAgIDx0Zi1jYXJkLWhlYWRpbmcKICAgICAgdGFnPSJbW3RhZ11dIgogICAgICBkaXNwbGF5LW5hbWU9IltbdGFnTWV0YWRhdGEuZGlzcGxheU5hbWVdXSIKICAgICAgZGVzY3JpcHRpb249IltbdGFnTWV0YWRhdGEuZGVzY3JpcHRpb25dXSIKICAgID48L3RmLWNhcmQtaGVhZGluZz4KICAgIDxkaXYgaWQ9InRmLWxpbmUtY2hhcnQtZGF0YS1sb2FkZXItY29udGFpbmVyIj4KICAgICAgPHRmLWxpbmUtY2hhcnQtZGF0YS1sb2FkZXIKICAgICAgICBhY3RpdmU9IltbYWN0aXZlXV0iCiAgICAgICAgY29sb3Itc2NhbGU9IltbX2dldENvbG9yU2NhbGUoY29sb3JTY2FsZSldXSIKICAgICAgICBkYXRhLXNlcmllcz0iW1tfZ2V0RGF0YVNlcmllcyhkYXRhVG9Mb2FkLiopXV0iCiAgICAgICAgZGF0YS10by1sb2FkPSJbW2RhdGFUb0xvYWRdXSIKICAgICAgICBnZXQtZGF0YS1sb2FkLW5hbWU9IltbX2dldERhdGFMb2FkTmFtZV1dIgogICAgICAgIGdldC1kYXRhLWxvYWQtdXJsPSJbW2dldERhdGFMb2FkVXJsXV0iCiAgICAgICAgcmVxdWVzdC1kYXRhPSJbW3JlcXVlc3REYXRhXV0iCiAgICAgICAgaWdub3JlLXktb3V0bGllcnM9IltbaWdub3JlWU91dGxpZXJzXV0iCiAgICAgICAgbG9hZC1kYXRhLWNhbGxiYWNrPSJbW19sb2FkRGF0YUNhbGxiYWNrXV0iCiAgICAgICAgbG9hZC1rZXk9IltbdGFnXV0iCiAgICAgICAgbG9nLXNjYWxlLWFjdGl2ZT0iW1tfbG9nU2NhbGVBY3RpdmVdXSIKICAgICAgICByZXF1ZXN0LW1hbmFnZXI9IltbcmVxdWVzdE1hbmFnZXJdXSIKICAgICAgICBzbW9vdGhpbmctZW5hYmxlZD0iW1tzbW9vdGhpbmdFbmFibGVkXV0iCiAgICAgICAgc21vb3RoaW5nLXdlaWdodD0iW1tzbW9vdGhpbmdXZWlnaHRdXSIKICAgICAgICB0YWctbWV0YWRhdGE9IltbdGFnTWV0YWRhdGFdXSIKICAgICAgICB0b29sdGlwLWNvbHVtbnM9IltbX3Rvb2x0aXBDb2x1bW5zXV0iCiAgICAgICAgdG9vbHRpcC1wb3NpdGlvbj0iYXV0byIKICAgICAgICB0b29sdGlwLXNvcnRpbmctbWV0aG9kPSJbW3Rvb2x0aXBTb3J0aW5nTWV0aG9kXV0iCiAgICAgICAgeC10eXBlPSJbW3hUeXBlXV0iCiAgICAgID4KICAgICAgPC90Zi1saW5lLWNoYXJ0LWRhdGEtbG9hZGVyPgogICAgPC9kaXY+CiAgICA8ZGl2IGlkPSJidXR0b25zIj4KICAgICAgPHBhcGVyLWljb24tYnV0dG9uCiAgICAgICAgc2VsZWN0ZWQkPSJbW19leHBhbmRlZF1dIgogICAgICAgIGljb249ImZ1bGxzY3JlZW4iCiAgICAgICAgb24tdGFwPSJfdG9nZ2xlRXhwYW5kZWQiCiAgICAgID48L3BhcGVyLWljb24tYnV0dG9uPgogICAgICA8cGFwZXItaWNvbi1idXR0b24KICAgICAgICBzZWxlY3RlZCQ9IltbX2xvZ1NjYWxlQWN0aXZlXV0iCiAgICAgICAgaWNvbj0ibGluZS13ZWlnaHQiCiAgICAgICAgb24tdGFwPSJfdG9nZ2xlTG9nU2NhbGUiCiAgICAgICAgdGl0bGU9IlRvZ2dsZSB5LWF4aXMgbG9nIHNjYWxlIgogICAgICA+PC9wYXBlci1pY29uLWJ1dHRvbj4KICAgICAgPHBhcGVyLWljb24tYnV0dG9uCiAgICAgICAgaWNvbj0ic2V0dGluZ3Mtb3ZlcnNjYW4iCiAgICAgICAgb24tdGFwPSJfcmVzZXREb21haW4iCiAgICAgICAgdGl0bGU9IkZpdCBkb21haW4gdG8gZGF0YSIKICAgICAgPjwvcGFwZXItaWNvbi1idXR0b24+CiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tzaG93RG93bmxvYWRMaW5rc11dIj4KICAgICAgICA8cGFwZXItbWVudS1idXR0b24gb24tcGFwZXItZHJvcGRvd24tb3Blbj0iX3VwZGF0ZURvd25sb2FkTGluayI+CiAgICAgICAgICA8cGFwZXItaWNvbi1idXR0b24KICAgICAgICAgICAgY2xhc3M9ImRyb3Bkb3duLXRyaWdnZXIiCiAgICAgICAgICAgIHNsb3Q9ImRyb3Bkb3duLXRyaWdnZXIiCiAgICAgICAgICAgIGljb249ImZpbGUtZG93bmxvYWQiCiAgICAgICAgICA+PC9wYXBlci1pY29uLWJ1dHRvbj4KICAgICAgICAgIDxwYXBlci1saXN0Ym94IGNsYXNzPSJkcm9wZG93bi1jb250ZW50IiBzbG90PSJkcm9wZG93bi1jb250ZW50Ij4KICAgICAgICAgICAgPHBhcGVyLWl0ZW0+CiAgICAgICAgICAgICAgPGEgaWQ9InN2Z0xpbmsiIGRvd25sb2FkPSJbW3RhZ11dLnN2ZyI+CiAgICAgICAgICAgICAgICBEb3dubG9hZCBDdXJyZW50IENoYXJ0IGFzIFNWRwogICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC9wYXBlci1pdGVtPgogICAgICAgICAgPC9wYXBlci1saXN0Ym94PgogICAgICAgIDwvcGFwZXItbWVudS1idXR0b24+CiAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDxzcGFuIHN0eWxlPSJmbGV4LWdyb3c6IDEiPjwvc3Bhbj4KICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW3Nob3dEb3dubG9hZExpbmtzXV0iPgogICAgICAgIDxkaXYgY2xhc3M9ImRvd25sb2FkLWxpbmtzIj4KICAgICAgICAgIDx0Zi1kb3dubG9hZGVyCiAgICAgICAgICAgIHJ1bnM9IltbX3J1bnNGcm9tRGF0YShkYXRhVG9Mb2FkKV1dIgogICAgICAgICAgICB0YWc9IltbdGFnXV0iCiAgICAgICAgICAgIHVybC1mbj0iW1tfZG93bmxvYWRVcmxGbl1dIgogICAgICAgICAgPjwvdGYtZG93bmxvYWRlcj4KICAgICAgICA8L2Rpdj4KICAgICAgPC90ZW1wbGF0ZT4KICAgIDwvZGl2PgogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgbWFyZ2luOiA1cHg7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgd2lkdGg6IDMzMHB4OwogICAgICB9CgogICAgICA6aG9zdChbX2V4cGFuZGVkXSkgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICB9CgogICAgICA6aG9zdChbX2V4cGFuZGVkXSkgI3RmLWxpbmUtY2hhcnQtZGF0YS1sb2FkZXItY29udGFpbmVyIHsKICAgICAgICBoZWlnaHQ6IDQwMHB4OwogICAgICB9CgogICAgICAjdGYtbGluZS1jaGFydC1kYXRhLWxvYWRlci1jb250YWluZXIgewogICAgICAgIGhlaWdodDogMjAwcHg7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIH0KCiAgICAgIHRmLWNhcmQtaGVhZGluZyB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDsKICAgICAgfQoKICAgICAgI2J1dHRvbnMgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgfQoKICAgICAgcGFwZXItaWNvbi1idXR0b24gewogICAgICAgIGNvbG9yOiAjMjE5NmYzOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDEwMCU7CiAgICAgICAgd2lkdGg6IDMycHg7CiAgICAgICAgaGVpZ2h0OiAzMnB4OwogICAgICAgIHBhZGRpbmc6IDRweDsKICAgICAgfQoKICAgICAgcGFwZXItaWNvbi1idXR0b25bc2VsZWN0ZWRdIHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10Yi11aS1saWdodC1hY2NlbnQpOwogICAgICB9CgogICAgICAuZG93bmxvYWQtbGlua3MgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgaGVpZ2h0OiAzMnB4OwogICAgICB9CgogICAgICAuZG93bmxvYWQtbGlua3MgYSB7CiAgICAgICAgYWxpZ24tc2VsZjogY2VudGVyOwogICAgICAgIGZvbnQtc2l6ZTogMTBweDsKICAgICAgICBtYXJnaW46IDJweDsKICAgICAgfQoKICAgICAgLmRvd25sb2FkLWxpbmtzIHBhcGVyLWRyb3Bkb3duLW1lbnUgewogICAgICAgIHdpZHRoOiAxMDBweDsKICAgICAgICAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1sYWJlbDogewogICAgICAgICAgZm9udC1zaXplOiAxMHB4OwogICAgICAgIH0KICAgICAgICAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1pbnB1dDogewogICAgICAgICAgZm9udC1zaXplOiAxMHB4OwogICAgICAgIH0KICAgICAgfQoKICAgICAgcGFwZXItbWVudS1idXR0b24gewogICAgICAgIHBhZGRpbmc6IDA7CiAgICAgIH0KICAgICAgcGFwZXItaXRlbSBhIHsKICAgICAgICBjb2xvcjogaW5oZXJpdDsKICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLF8wdC5wcm90b3R5cGUsInRhZyIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sXzB0LnByb3RvdHlwZSwiZGF0YVRvTG9hZCIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxfMHQucHJvdG90eXBlLCJ4VHlwZSIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLF8wdC5wcm90b3R5cGUsImFjdGl2ZSIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLF8wdC5wcm90b3R5cGUsImlnbm9yZVlPdXRsaWVycyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixicildLF8wdC5wcm90b3R5cGUsInJlcXVlc3RNYW5hZ2VyIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sXzB0LnByb3RvdHlwZSwic2hvd0Rvd25MaW5rcyIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLF8wdC5wcm90b3R5cGUsInNtb290aGluZ0VuYWJsZWQiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sXzB0LnByb3RvdHlwZSwic21vb3RoaW5nV2VpZ2h0Iix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLF8wdC5wcm90b3R5cGUsInRhZ01ldGFkYXRhIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLF8wdC5wcm90b3R5cGUsImNvbG9yU2NhbGUiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sXzB0LnByb3RvdHlwZSwidG9vbHRpcFNvcnRpbmdNZXRob2QiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sXzB0LnByb3RvdHlwZSwiYmF0Y2hTaXplIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxfMHQucHJvdG90eXBlLCJpbkNvbGFiIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLF8wdC5wcm90b3R5cGUsIl9sb2FkRGF0YUNhbGxiYWNrIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKV0sXzB0LnByb3RvdHlwZSwiZ2V0RGF0YUxvYWRVcmwiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sXzB0LnByb3RvdHlwZSwiX2Rvd25sb2FkVXJsRm4iLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pXSxfMHQucHJvdG90eXBlLCJyZXF1ZXN0RGF0YSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxfMHQucHJvdG90eXBlLCJfZ2V0RGF0YUxvYWROYW1lIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbixyZWZsZWN0VG9BdHRyaWJ1dGU6ITB9KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLF8wdC5wcm90b3R5cGUsIl9leHBhbmRlZCIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLF8wdC5wcm90b3R5cGUsIl9sb2dTY2FsZUFjdGl2ZSIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sXzB0LnByb3RvdHlwZSwiX3Rvb2x0aXBDb2x1bW5zIix2b2lkIDApLF8wdD10KFtpKCJ0Zi1zY2FsYXItY2FyZCIpXSxfMHQpO2xldCB5MHQ9Y2xhc3MgZXh0ZW5kcyhtMHQoW0FvXSx3ZSkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLnNlc3Npb25Hcm91cD1udWxsLHRoaXMuX3hUeXBlPXdDdC5TVEVQLHRoaXMuX25vTXVsdGlFeHBlcmltZW50cz0hMSx0aGlzLl9yZXF1ZXN0RGF0YT0odCxlLG4pPT57UHJvbWlzZS5hbGwodC5tYXAoKHQ9PnRoaXMuYmFja2VuZC5saXN0TWV0cmljRXZhbHMoe2V4cGVyaW1lbnROYW1lOnRoaXMuZXhwZXJpbWVudE5hbWUsc2Vzc2lvbk5hbWU6dC5ydW4sbWV0cmljTmFtZTp0LnRhZ30pLnRoZW4oKG49PntlKHtpdGVtOnQsZGF0YTpufSl9KSkpKSkuZmluYWxseSgoKCk9PntuKCl9KSl9LHRoaXMuX2NvbG9yU2NhbGU9e3NjYWxlOnQ9Pntjb25zdCBlPUpTT04ucGFyc2UodClbMV0sbj10aGlzLl9pbmRleE9mU2Vzc2lvbi5nZXQoZSk7cmV0dXJuIGZPWyh0aGlzLl9zZXNzaW9uR3JvdXBOYW1lSGFzaCtuKSVmTy5sZW5ndGhdfX19Y29ubmVjdGVkQ2FsbGJhY2soKXtzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigiaXJvbi1yZXNpemUiLHRoaXMucmVkcmF3LmJpbmQodGhpcykpfXJlZHJhdygpe3RoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yQWxsKCJ0Zi1zY2FsYXItY2FyZCIpLmZvckVhY2goKHQ9PnQucmVkcmF3KCkpKX1fc2Vzc2lvbkdyb3VwQ2hhbmdlZCgpe3RoaXMuc2Vzc2lvbkdyb3VwJiYwIT1PYmplY3Qua2V5cyh0aGlzLnNlc3Npb25Hcm91cCkubGVuZ3RoPyh0aGlzLl9pbmRleE9mU2Vzc2lvbj1uZXcgTWFwKHRoaXMuc2Vzc2lvbkdyb3VwLnNlc3Npb25zLm1hcCgoKHQsZSk9Plt0Lm5hbWUsZV0pKSksdGhpcy5fc2Vzc2lvbkdyb3VwTmFtZUhhc2g9Skp0KHRoaXMuc2Vzc2lvbkdyb3VwLm5hbWUpKToodGhpcy5faW5kZXhPZlNlc3Npb249bmV3IE1hcCx0aGlzLl9zZXNzaW9uR3JvdXBOYW1lSGFzaD0wKSx0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvckFsbCgidGYtc2NhbGFyLWNhcmQiKS5mb3JFYWNoKCh0PT57Y29uc3QgZT10LG49ZS5nZXQoInRhZyIpO2Uuc2V0KCJ0YWciLCIiKSxlLnNldCgidGFnIixuKX0pKX1faGF2ZU1ldHJpY3MoKXtyZXR1cm4gdGhpcy52aXNpYmxlU2NoZW1hJiZBcnJheS5pc0FycmF5KHRoaXMudmlzaWJsZVNjaGVtYS5tZXRyaWNJbmZvcykmJnRoaXMudmlzaWJsZVNjaGVtYS5tZXRyaWNJbmZvcy5sZW5ndGg+MH1faGF2ZU1ldHJpY3NBbmRTZXNzaW9uR3JvdXAoKXtyZXR1cm4gdGhpcy5zZXNzaW9uR3JvdXAmJnRoaXMuX2hhdmVNZXRyaWNzKCl9X2NvbXB1dGVTZXJpZXNGb3JTZXNzaW9uR3JvdXBNZXRyaWModCxlKXtyZXR1cm4gbnVsbD09PXR8fDA9PU9iamVjdC5rZXlzKHQpLmxlbmd0aHx8bnVsbD09PWU/W106dC5zZXNzaW9ucy5maWx0ZXIoKHQ9PnZvaWQgMCE9PUlKdCh0Lm1ldHJpY1ZhbHVlcyxlLm5hbWUpKSkubWFwKCh0PT4oe3RhZzplLm5hbWUscnVuOnQubmFtZX0pKSl9X2NvbXB1dGVUYWdNZXRhZGF0YSh0KXtyZXR1cm57ZGlzcGxheU5hbWU6Q0p0KHQpLGRlc2NyaXB0aW9uOnQuZGVzY3JpcHRpb258fCIifX19O3kwdC50ZW1wbGF0ZT14ZWAKICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1shc2Vzc2lvbkdyb3VwXV0iPgogICAgICA8ZGl2PgogICAgICAgIDxoMz5ObyBzZXNzaW9uIGdyb3VwIHNlbGVjdGVkPC9oMz4KICAgICAgICA8cD5QbGVhc2Ugc2VsZWN0IGEgc2Vzc2lvbiBncm91cCB0byBzZWUgaXRzIG1ldHJpYy1ncmFwaHMgaGVyZS48L3A+CiAgICAgIDwvZGl2PgogICAgPC90ZW1wbGF0ZT4KICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1shX2hhdmVNZXRyaWNzKHZpc2libGVTY2hlbWEuKildXSI+CiAgICAgIDxkaXY+CiAgICAgICAgPGgzPk5vIG1ldHJpY3MgYXJlIGVuYWJsZWQ8L2gzPgogICAgICAgIDxwPlBsZWFzZSBlbmFibGUgc29tZSBtZXRyaWNzIHRvIHNlZSBjb250ZW50IGhlcmUuPC9wPgogICAgICA8L2Rpdj4KICAgIDwvdGVtcGxhdGU+CiAgICA8ZGl2IGNsYXNzPSJsYXlvdXQgaG9yaXpvbnRhbCB3cmFwIHNlc3Npb24tZ3JvdXAtZGV0YWlscyI+CiAgICAgIDx0ZW1wbGF0ZQogICAgICAgIGlzPSJkb20taWYiCiAgICAgICAgaWY9IltbX2hhdmVNZXRyaWNzQW5kU2Vzc2lvbkdyb3VwKHZpc2libGVTY2hlbWEuKiwgc2Vzc2lvbkdyb3VwKV1dIgogICAgICA+CiAgICAgICAgPHRlbXBsYXRlCiAgICAgICAgICBpcz0iZG9tLXJlcGVhdCIKICAgICAgICAgIGl0ZW1zPSJbW3Zpc2libGVTY2hlbWEubWV0cmljSW5mb3NdXSIKICAgICAgICAgIGFzPSJtZXRyaWNJbmZvIgogICAgICAgID4KICAgICAgICAgIDwhLS0gTm90ZSB0aGF0IHdlIGRvIG5vdCBwcm92aWRlIGEgcmVxdWVzdC1tYW5hZ2VyIGF0dHJpYnV0ZSBzaW5jZQogICAgICAgICAgICAgICB3ZSBwcm92aWRlIGEgZnVuY3Rpb24gaW4gcmVxdWVzdC1kYXRhIGZvciBjYWxsaW5nIHRoZSBiYWNrZW5kCiAgICAgICAgICAgICAgIHRvIGdldCB0aGUgbWV0cmljcyBkYXRhLgogICAgICAgICAgICAtLT4KICAgICAgICAgIDx0Zi1zY2FsYXItY2FyZAogICAgICAgICAgICBjbGFzcz0ic2NhbGFyLWNhcmQiCiAgICAgICAgICAgIGNvbG9yLXNjYWxlPSJbW19jb2xvclNjYWxlXV0iCiAgICAgICAgICAgIGRhdGEtdG8tbG9hZD0iW1tfY29tcHV0ZVNlcmllc0ZvclNlc3Npb25Hcm91cE1ldHJpYyhzZXNzaW9uR3JvdXAsIG1ldHJpY0luZm8pXV0iCiAgICAgICAgICAgIHRhZz0iW1ttZXRyaWNJbmZvLm5hbWUudGFnXV0iCiAgICAgICAgICAgIHRhZy1tZXRhZGF0YT0iW1tfY29tcHV0ZVRhZ01ldGFkYXRhKG1ldHJpY0luZm8pXV0iCiAgICAgICAgICAgIHgtdHlwZT0iW1tfeFR5cGVdXSIKICAgICAgICAgICAgbXVsdGktZXhwZXJpbWVudHM9IltbX25vTXVsdGlFeHBlcmltZW50c11dIgogICAgICAgICAgICByZXF1ZXN0LWRhdGE9IltbX3JlcXVlc3REYXRhXV0iCiAgICAgICAgICAgIGFjdGl2ZQogICAgICAgICAgPgogICAgICAgICAgPC90Zi1zY2FsYXItY2FyZD4KICAgICAgICA8L3RlbXBsYXRlPgogICAgICA8L3RlbXBsYXRlPgogICAgPC9kaXY+CiAgICA8IS0tICJpcm9uLWZsZXgiIGlzIG5lZWRlZCB0byB1c2UgdGhlIGxheW91dCBjbGFzc2VzIGluIHRoZSBkaXYgYWJvdmUgLS0+CiAgICA8c3R5bGUgaW5jbHVkZT0iaXJvbi1mbGV4Ij4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CiAgICA8L3N0eWxlPgogIGAsdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0seTB0LnByb3RvdHlwZSwiYmFja2VuZCIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSx5MHQucHJvdG90eXBlLCJleHBlcmltZW50TmFtZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSx5MHQucHJvdG90eXBlLCJ2aXNpYmxlU2NoZW1hIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLHkwdC5wcm90b3R5cGUsInNlc3Npb25Hcm91cCIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSx5MHQucHJvdG90eXBlLCJfeFR5cGUiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSx5MHQucHJvdG90eXBlLCJfbm9NdWx0aUV4cGVyaW1lbnRzIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLHkwdC5wcm90b3R5cGUsIl9pbmRleE9mU2Vzc2lvbiIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSx5MHQucHJvdG90eXBlLCJfc2Vzc2lvbkdyb3VwTmFtZUhhc2giLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pXSx5MHQucHJvdG90eXBlLCJfcmVxdWVzdERhdGEiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0seTB0LnByb3RvdHlwZSwiX2NvbG9yU2NhbGUiLHZvaWQgMCksdChbYSgic2Vzc2lvbkdyb3VwLioiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLHkwdC5wcm90b3R5cGUsIl9zZXNzaW9uR3JvdXBDaGFuZ2VkIixudWxsKSx5MHQ9dChbaSgidGYtaHBhcmFtcy1zZXNzaW9uLWdyb3VwLWRldGFpbHMiKV0seTB0KTtsZXQgdjB0PWNsYXNzIGV4dGVuZHMoY3IoZ2wod2UpKSl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuX2hwYXJhbU5hbWU9VEp0LHRoaXMuX21ldHJpY05hbWU9Q0p0fV92aXNpYmxlU2NoZW1hT3JTZXNzaW9uR3JvdXBzQ2hhbmdlZCgpe2NvbnN0IHQ9dGhpcy4kLnNlc3Npb25Hcm91cHNUYWJsZS5nZXQoImRldGFpbHNPcGVuZWRJdGVtcyIpO3RoaXMuJC5zZXNzaW9uR3JvdXBzVGFibGUuc2V0KCJkZXRhaWxzT3BlbmVkSXRlbXMiLFtdKSxXaSgpO2NvbnN0IGU9bmV3IE1hcDt0aGlzLnNlc3Npb25Hcm91cHMuZm9yRWFjaCgodD0+e2Uuc2V0KHQubmFtZSx0KX0pKSx0aGlzLiQuc2Vzc2lvbkdyb3Vwc1RhYmxlLnNldCgiZGV0YWlsc09wZW5lZEl0ZW1zIix0Lm1hcCgodD0+ZS5nZXQodC5uYW1lKSkpLmZpbHRlcihCb29sZWFuKSl9X3Nlc3Npb25Hcm91cEhQYXJhbSh0LGUpe3JldHVybiBudWxsIT10JiYwIT1PYmplY3Qua2V5cyh0KS5sZW5ndGgmJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LmhwYXJhbXMsZSk/cUp0KHQuaHBhcmFtc1tlXSk6IiJ9X3Nlc3Npb25Hcm91cE1ldHJpYyh0LGUpe2lmKG51bGw9PXR8fDA9PU9iamVjdC5rZXlzKHQpLmxlbmd0aClyZXR1cm4iIjtmb3IobGV0IG49MDtuPHQubWV0cmljVmFsdWVzLmxlbmd0aDsrK24pe2xldCBpPXQubWV0cmljVmFsdWVzW25dO2lmKGkubmFtZS5ncm91cD09PWUuZ3JvdXAmJmkubmFtZS50YWc9PWUudGFnKXJldHVybiBxSnQoaS52YWx1ZSl9cmV0dXJuIiJ9X3Jvd051bWJlcih0KXtyZXR1cm4gdCsxfX07djB0LnRlbXBsYXRlPXhlYAogICAgPHZhYWRpbi1ncmlkCiAgICAgIGNsYXNzPSJzZXNzaW9uLWdyb3VwLXRhYmxlIgogICAgICBpZD0ic2Vzc2lvbkdyb3Vwc1RhYmxlIgogICAgICBjb2x1bW4tcmVvcmRlcmluZy1hbGxvd2VkPSIiCiAgICAgIGl0ZW1zPSJbW3Nlc3Npb25Hcm91cHNdXSIKICAgID4KICAgICAgPHZhYWRpbi1ncmlkLWNvbHVtbiBmbGV4LWdyb3c9IjAiIHdpZHRoPSIxMGVtIiByZXNpemFibGU9IiI+CiAgICAgICAgPHRlbXBsYXRlIGNsYXNzPSJoZWFkZXIiPgogICAgICAgICAgPGRpdiBjbGFzcz0idGFibGUtaGVhZGVyIHRhYmxlLWNlbGwiPlRyaWFsIElEPC9kaXY+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8dGVtcGxhdGU+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJ0YWJsZS1jZWxsIj5bW2l0ZW0ubmFtZV1dPC9kaXY+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPC92YWFkaW4tZ3JpZC1jb2x1bW4+CiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tlbmFibGVTaG93TWV0cmljc11dIj4KICAgICAgICA8dmFhZGluLWdyaWQtY29sdW1uIGZsZXgtZ3Jvdz0iMCIgYXV0b1dpZHRoPSIiIHJlc2l6YWJsZT0iIj4KICAgICAgICAgIDx0ZW1wbGF0ZSBjbGFzcz0iaGVhZGVyIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idGFibGUtaGVhZGVyIHRhYmxlLWNlbGwiPlNob3cgTWV0cmljczwvZGl2PgogICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgIDx0ZW1wbGF0ZT4KICAgICAgICAgICAgPHBhcGVyLWNoZWNrYm94IGNsYXNzPSJ0YWJsZS1jZWxsIiBjaGVja2VkPSJ7e2RldGFpbHNPcGVuZWR9fSI+CiAgICAgICAgICAgIDwvcGFwZXItY2hlY2tib3g+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDwvdmFhZGluLWdyaWQtY29sdW1uPgogICAgICA8L3RlbXBsYXRlPgogICAgICA8dGVtcGxhdGUKICAgICAgICBpcz0iZG9tLXJlcGVhdCIKICAgICAgICBpdGVtcz0iW1t2aXNpYmxlU2NoZW1hLmhwYXJhbUluZm9zXV0iCiAgICAgICAgYXM9ImhwYXJhbUluZm8iCiAgICAgICAgaW5kZXgtYXM9ImhwYXJhbUluZGV4IgogICAgICA+CiAgICAgICAgPHZhYWRpbi1ncmlkLWNvbHVtbiBmbGV4LWdyb3c9IjIiIHdpZHRoPSIxMGVtIiByZXNpemFibGU9IiI+CiAgICAgICAgICA8dGVtcGxhdGUgY2xhc3M9ImhlYWRlciI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRhYmxlLWhlYWRlciB0YWJsZS1jZWxsIj4KICAgICAgICAgICAgICBbW19ocGFyYW1OYW1lKGhwYXJhbUluZm8pXV0KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgPHRlbXBsYXRlPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0YWJsZS1jZWxsIj4KICAgICAgICAgICAgICBbW19zZXNzaW9uR3JvdXBIUGFyYW0oaXRlbSwgaHBhcmFtSW5mby5uYW1lKV1dCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8L3ZhYWRpbi1ncmlkLWNvbHVtbj4KICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPHRlbXBsYXRlCiAgICAgICAgaXM9ImRvbS1yZXBlYXQiCiAgICAgICAgaXRlbXM9Int7dmlzaWJsZVNjaGVtYS5tZXRyaWNJbmZvc319IgogICAgICAgIGFzPSJtZXRyaWNJbmZvIgogICAgICAgIGluZGV4LWFzPSJtZXRyaWNJbmRleCIKICAgICAgPgogICAgICAgIDx2YWFkaW4tZ3JpZC1jb2x1bW4gZmxleC1ncm93PSIyIiB3aWR0aD0iMTBlbSIgcmVzaXphYmxlPSIiPgogICAgICAgICAgPHRlbXBsYXRlIGNsYXNzPSJoZWFkZXIiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0YWJsZS1oZWFkZXIgdGFibGUtY2VsbCI+CiAgICAgICAgICAgICAgW1tfbWV0cmljTmFtZShtZXRyaWNJbmZvKV1dCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgIDx0ZW1wbGF0ZT4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idGFibGUtY2VsbCI+CiAgICAgICAgICAgICAgW1tfc2Vzc2lvbkdyb3VwTWV0cmljKGl0ZW0sIG1ldHJpY0luZm8ubmFtZSldXQogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPC92YWFkaW4tZ3JpZC1jb2x1bW4+CiAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDx0ZW1wbGF0ZSBjbGFzcz0icm93LWRldGFpbHMiPgogICAgICAgIDx0Zi1ocGFyYW1zLXNlc3Npb24tZ3JvdXAtZGV0YWlscwogICAgICAgICAgYmFja2VuZD0iW1tiYWNrZW5kXV0iCiAgICAgICAgICBleHBlcmltZW50LW5hbWU9IltbZXhwZXJpbWVudE5hbWVdXSIKICAgICAgICAgIHNlc3Npb24tZ3JvdXA9IltbaXRlbV1dIgogICAgICAgICAgdmlzaWJsZS1zY2hlbWE9IltbdmlzaWJsZVNjaGVtYV1dIgogICAgICAgICAgY2xhc3M9InNlc3Npb24tZ3JvdXAtZGV0YWlscyIKICAgICAgICA+CiAgICAgICAgPC90Zi1ocGFyYW1zLXNlc3Npb24tZ3JvdXAtZGV0YWlscz4KICAgICAgPC90ZW1wbGF0ZT4KICAgIDwvdmFhZGluLWdyaWQ+CgogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogaW5saW5lOwogICAgICB9CgogICAgICA6aG9zdCguZGFyay1tb2RlKSB7CiAgICAgICAgLS1sdW1vLWJhc2UtY29sb3I6ICMzMDMwMzA7CiAgICAgICAgLS1sdW1vLWJvZHktdGV4dC1jb2xvcjogI2ZmZjsKICAgICAgfQoKICAgICAgOmhvc3QoLmRhcmstbW9kZSkgdmFhZGluLWdyaWQgewogICAgICAgIC0tX2x1bW8tZ3JpZC1zZWNvbmRhcnktYm9yZGVyLWNvbG9yOiAjNTA1MDUwOwogICAgICB9CgogICAgICAudGFibGUtY2VsbCB7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICB9CiAgICAgIC50YWJsZS1oZWFkZXIgewogICAgICAgIC8qIGxpbmUtYnJlYWsgb3ZlcmZsb3dpbmcgY29sdW1uIGhlYWRlcnMgKi8KICAgICAgICB3aGl0ZS1zcGFjZTogbm9ybWFsOwogICAgICAgIG92ZXJmbG93LXdyYXA6IGJyZWFrLXdvcmQ7CiAgICAgIH0KICAgICAgLnNlc3Npb24tZ3JvdXAtdGFibGUgewogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgfQogICAgICAuc2Vzc2lvbi1ncm91cC1kZXRhaWxzIHsKICAgICAgICBoZWlnaHQ6IDM2MHB4OwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYCx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSx2MHQucHJvdG90eXBlLCJ2aXNpYmxlU2NoZW1hIix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSx2MHQucHJvdG90eXBlLCJzZXNzaW9uR3JvdXBzIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sdjB0LnByb3RvdHlwZSwiZW5hYmxlU2hvd01ldHJpY3MiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sdjB0LnByb3RvdHlwZSwiYmFja2VuZCIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSx2MHQucHJvdG90eXBlLCJleHBlcmltZW50TmFtZSIsdm9pZCAwKSx0KFthKCJ2aXNpYmxlU2NoZW1hLioiLCJzZXNzaW9uR3JvdXBzLioiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLHYwdC5wcm90b3R5cGUsIl92aXNpYmxlU2NoZW1hT3JTZXNzaW9uR3JvdXBzQ2hhbmdlZCIsbnVsbCksdjB0PXQoW2koInRmLWhwYXJhbXMtdGFibGUtdmlldyIpXSx2MHQpO2xldCBiMHQ9Y2xhc3MgZXh0ZW5kcyB3ZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5zZXNzaW9uR3JvdXA9bnVsbCx0aGlzLnZpc2libGVTY2hlbWE9bnVsbH1fcHJvcGVydGllc0FyZVBvcHVsYXRlZCh0LGUpe3JldHVybiBudWxsIT10JiZudWxsIT1lfV9zaW5nbGV0b25TZXNzaW9uR3JvdXBzKHQpe3JldHVybiBudWxsPT10P1tdOlt0XX19O2Z1bmN0aW9uIHgwdCh0LGUsbixpKXtpZihlLmxlbmd0aDwyKXJldHVybiBjb25zb2xlLmVycm9yKCJMZXNzIHRoYW4gdHdvIGF4ZXMgaW4gcGFyYWxsZWwgY29vcmRpbmF0ZXMgcGxvdC4iKSxudWxsO2NvbnN0IHI9blswXSxvPW5bMV07aWYocjw9ZVswXXx8cj49ZVtlLmxlbmd0aC0xXSlyZXR1cm4gbnVsbDtjb25zdCBhPUNlLmV4cG9ydHMuc29ydGVkSW5kZXgoZSxyKTtjb25zb2xlLmFzc2VydChhPjApLGNvbnNvbGUuYXNzZXJ0KGE8ZS5sZW5ndGgpO2NvbnN0IHM9YS0xO2xldCBsPW51bGwsYz1udWxsO3JldHVybiB0LmZvckVhY2goKHQ9Pntjb25zdCBlPShmdW5jdGlvbiBuKHQsZSxpLGEpe2NvbnN0IHM9dC1pLGw9ZS1hLGM9ci1pLHU9by1hLGg9KHMqYytsKnUpLyhzKnMrbCpsKTtpZihoPD0wKXJldHVybiBZSnQoYyx1KTtpZihoPj0xKXJldHVybiBZSnQodC1yLGUtbyk7cmV0dXJuIFlKdChjLWgqcyx1LWgqbCl9KSh0LmNvbnRyb2xQb2ludHNbc11bMF0sdC5jb250cm9sUG9pbnRzW3NdWzFdLHQuY29udHJvbFBvaW50c1thXVswXSx0LmNvbnRyb2xQb2ludHNbYV1bMV0pO2U+aXx8KG51bGw9PT1sfHxlPGwpJiYobD1lLGM9dCl9KSksY31mdW5jdGlvbiB3MHQodCxlLG4pe2Z1bmN0aW9uIGkoKXtpZigwPT09dC5sZW5ndGgpcmV0dXJuWzEsMl07Y29uc3RbZSxuXT1HbCh0KTtyZXR1cm4gZSE9PW4/W2Usbl06ZT4wP1suNSplLDEuNSplXTplPDA/WzEuNSplLC41KmVdOlstMSwxXX1pZigiTElORUFSIj09PW4pcmV0dXJuIGNFKCkuZG9tYWluKGkoKSkucmFuZ2UoW2UsMF0pO2lmKCJMT0ciPT09bil7Y29uc3Qgbj1pKCk7cmV0dXJuIG5bMF08PTAmJm5bMV0+PTA/dzB0KHQsZSwiTElORUFSIik6eUUoKS5kb21haW4obikucmFuZ2UoW2UsMF0pfWlmKCJRVUFOVElMRSI9PT1uKXtjb25zdCBuPTIwLGk9S2wobikubWFwKCh0PT5lLXQqZS8obi0xKSkpO3JldHVybiAwPT09dC5sZW5ndGgmJih0PVsxXSksQ0UoKS5kb21haW4oQ2UuZXhwb3J0cy51bmlxKHQpKS5yYW5nZShpKX1pZigiTk9OX05VTUVSSUMiPT09bilyZXR1cm4gS00oKS5kb21haW4oQ2UuZXhwb3J0cy51bmlxKHQuc29ydCgpKSkucmFuZ2UoW2UsMF0pLnBhZGRpbmcoLjEpO3Rocm93IFJhbmdlRXJyb3IoIlVua25vd24gc2NhbGU6ICIrbil9dmFyIFMwdCxNMHQ7YjB0LnRlbXBsYXRlPXhlYAogICAgPCEtLSBJZiBzZXNzaW9uR3JvdXAgb3IgdmlzaWJsZVNjaGVtYSBhcmUgbm90IHBvcHVsYXRlZCwgZG8gbm90IGRpc3BsYXkKICAgICAgICAgYW55dGhpbmcuCiAgICAgIC0tPgogICAgPHRlbXBsYXRlCiAgICAgIGlzPSJkb20taWYiCiAgICAgIGlmPSJbW19wcm9wZXJ0aWVzQXJlUG9wdWxhdGVkKHZpc2libGVTY2hlbWEsIHNlc3Npb25Hcm91cCldXSIKICAgID4KICAgICAgPCEtLSBEaXNwbGF5IG9uZSByb3cgd2l0aG91dCBhICJzaG93LW1ldHJpY3MiIGNvbHVtbiAtLT4KICAgICAgPHRmLWhwYXJhbXMtdGFibGUtdmlldwogICAgICAgIHZpc2libGUtc2NoZW1hPSJbW3Zpc2libGVTY2hlbWFdXSIKICAgICAgICBzZXNzaW9uLWdyb3Vwcz0iW1tfc2luZ2xldG9uU2Vzc2lvbkdyb3VwcyhzZXNzaW9uR3JvdXApXV0iCiAgICAgID4KICAgICAgPC90Zi1ocGFyYW1zLXRhYmxlLXZpZXc+CiAgICA8L3RlbXBsYXRlPgogICAgPHRlbXBsYXRlCiAgICAgIGlzPSJkb20taWYiCiAgICAgIGlmPSJbWyFfcHJvcGVydGllc0FyZVBvcHVsYXRlZCh2aXNpYmxlU2NoZW1hLCBzZXNzaW9uR3JvdXApXV0iCiAgICA+CiAgICAgIDxkaXY+Q2xpY2sgb3IgaG92ZXIgb3ZlciBhIHNlc3Npb24gZ3JvdXAgdG8gZGlzcGxheSBpdHMgdmFsdWVzIGhlcmUuPC9kaXY+CiAgICA8L3RlbXBsYXRlPgoKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CiAgICA8L3N0eWxlPgogIGAsdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sYjB0LnByb3RvdHlwZSwic2Vzc2lvbkdyb3VwIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGIwdC5wcm90b3R5cGUsInZpc2libGVTY2hlbWEiLHZvaWQgMCksYjB0PXQoW2koInRmLWhwYXJhbXMtc2Vzc2lvbi1ncm91cC12YWx1ZXMiKV0sYjB0KSwoZnVuY3Rpb24odCl7dC5MSU5FQVI9IkxJTkVBUiIsdC5MT0c9IkxPRyIsdC5RVUFOVElMRT0iUVVBTlRJTEUiLHQuTk9OX05VTUVSSUM9Ik5PTl9OVU1FUklDIn0pKFMwdHx8KFMwdD17fSkpO2NsYXNzIEUwdHtpc1Bhc3NpbmcodCl7cmV0dXJuITB9fWNsYXNzIFQwdHtjb25zdHJ1Y3Rvcih0LGUsbixpKXt0aGlzLl9sb3dlcj10LHRoaXMuX3VwcGVyPWUsdGhpcy5fbG93ZXJPcGVuPW4sdGhpcy5fdXBwZXJPcGVuPWl9aXNQYXNzaW5nKHQpe2NvbnN0IGU9dDtyZXR1cm4gdGhpcy5fYmVmb3JlKHRoaXMuX2xvd2VyLGUsIXRoaXMuX2xvd2VyT3BlbikmJnRoaXMuX2JlZm9yZShlLHRoaXMuX3VwcGVyLCF0aGlzLl91cHBlck9wZW4pfV9iZWZvcmUodCxlLG4pe3JldHVybiBuP3Q8PWU6dDxlfX1jbGFzcyBDMHR7Y29uc3RydWN0b3IodCl7dGhpcy5fZG9tYWluU2V0PXR9aXNQYXNzaW5nKHQpe3JldHVybi0xIT09dGhpcy5fZG9tYWluU2V0LmZpbmRJbmRleCgoZT0+ZT09PXQpKX19Y2xhc3MgQTB0e2NvbnN0cnVjdG9yKHQsZSxuLGkpe3RoaXMuX3N2Z1Byb3BzPXQsdGhpcy5fc2NoZW1hPWUsdGhpcy5faW50ZXJhY3Rpb25NYW5hZ2VyPW4sdGhpcy5fY29sSW5kZXg9aSx0aGlzLl9pc0Rpc3BsYXllZD0hMSx0aGlzLl95U2NhbGU9bnVsbCx0aGlzLl9zY2FsZVR5cGU9bnVsbCx0aGlzLnNldEJydXNoU2VsZWN0aW9uKG51bGwpfWNvbEluZGV4KCl7cmV0dXJuIHRoaXMuX2NvbEluZGV4fXlTY2FsZSgpe3JldHVybiB0aGlzLl95U2NhbGV9c2NhbGVUeXBlKCl7cmV0dXJuIHRoaXMuX3NjYWxlVHlwZX1icnVzaFNlbGVjdGlvbigpe3JldHVybiB0aGlzLl9icnVzaFNlbGVjdGlvbn1pc0Rpc3BsYXllZCgpe3JldHVybiB0aGlzLl9pc0Rpc3BsYXllZH1zZXRCcnVzaFNlbGVjdGlvbih0KXt0aGlzLl9icnVzaFNlbGVjdGlvbj10LHRoaXMuX2JydXNoRmlsdGVyPXRoaXMuX2J1aWxkQnJ1c2hGaWx0ZXIodGhpcy5icnVzaFNlbGVjdGlvbigpLHRoaXMuc2NhbGVUeXBlKCksdGhpcy55U2NhbGUoKSl9c2V0RG9tYWluQW5kU2NhbGUodCxlKXt0aGlzLl9zY2FsZVR5cGU9ZSx0aGlzLl95U2NhbGU9dzB0KHQuc2xpY2UoKSx0aGlzLl9zdmdQcm9wcy5oZWlnaHQsdGhpcy5zY2FsZVR5cGUoKSksdGhpcy5fYnJ1c2hGaWx0ZXI9dGhpcy5fYnVpbGRCcnVzaEZpbHRlcih0aGlzLmJydXNoU2VsZWN0aW9uKCksdGhpcy5zY2FsZVR5cGUoKSx0aGlzLnlTY2FsZSgpKX1icnVzaEZpbHRlcigpe3JldHVybiB0aGlzLl9icnVzaEZpbHRlcn11cGRhdGVET00odCl7bGV0IGU9YmModGhpcy55U2NhbGUoKSk7dGhpcy5zY2FsZVR5cGUoKT09PVMwdC5RVUFOVElMRSYmKGU9ZS50aWNrVmFsdWVzKHRoaXMueVNjYWxlKCkucXVhbnRpbGVzKCkpLnRpY2tGb3JtYXQoRHkoIi0uNmciKSkpO2NvbnN0IG49RHUodCk7bi5zZWxlY3RBbGwoImciKS5yZW1vdmUoKSxuLmFwcGVuZCgiZyIpLmNsYXNzZWQoImF4aXMiLCEwKS5jYWxsKGUpLmFwcGVuZCgidGV4dCIpLmNsYXNzZWQoImF4aXMtdGl0bGUiLCEwKS5zdHlsZSgiY3Vyc29yIiwibW92ZSIpLnN0eWxlKCJ0ZXh0LWFuY2hvciIsIm1pZGRsZSIpLmF0dHIoInkiLC05KS50ZXh0KCh0PT5BSnQodGhpcy5fc2NoZW1hLHQpKSksbi5jYWxsKEloKCkub24oInN0YXJ0IiwoKCk9Pnt0LnNldEF0dHJpYnV0ZSgiaXMtZHJhZ2dpbmciLCIiKSx0aGlzLl9pbnRlcmFjdGlvbk1hbmFnZXIub25EcmFnU3RhcnQodGhpcy5jb2xJbmRleCgpKX0pKS5vbigiZHJhZyIsKCgpPT50aGlzLl9pbnRlcmFjdGlvbk1hbmFnZXIub25EcmFnKE11LngpKSkub24oImVuZCIsKCgpPT57dGhpcy5faW50ZXJhY3Rpb25NYW5hZ2VyLm9uRHJhZ0VuZCgpLHQucmVtb3ZlQXR0cmlidXRlKCJpcy1kcmFnZ2luZyIpfSkpKTtjb25zdCBpPXlnKCkuZXh0ZW50KFtbLTgsMF0sWzgsdGhpcy5fc3ZnUHJvcHMuaGVpZ2h0KzFdXSkub24oInN0YXJ0IiwoKCk9PntMMHQoTXUpJiYodC5zZXRBdHRyaWJ1dGUoImlzLWJydXNoaW5nIiwiIiksdGhpcy5faW50ZXJhY3Rpb25NYW5hZ2VyLm9uQnJ1c2hDaGFuZ2VkKHRoaXMuY29sSW5kZXgoKSxNdS5zZWxlY3Rpb24pKX0pKS5vbigiYnJ1c2giLCgoKT0+e0wwdChNdSkmJnRoaXMuX2ludGVyYWN0aW9uTWFuYWdlci5vbkJydXNoQ2hhbmdlZCh0aGlzLmNvbEluZGV4KCksTXUuc2VsZWN0aW9uKX0pKS5vbigiZW5kIiwoKCk9PntMMHQoTXUpJiYodGhpcy5faW50ZXJhY3Rpb25NYW5hZ2VyLm9uQnJ1c2hDaGFuZ2VkKHRoaXMuY29sSW5kZXgoKSxNdS5zZWxlY3Rpb24pLHQucmVtb3ZlQXR0cmlidXRlKCJpcy1icnVzaGluZyIpKX0pKSxyPUR1KHQpLmFwcGVuZCgiZyIpLmNsYXNzZWQoImJydXNoIiwhMCk7ci5jYWxsKGkpLGkubW92ZShyLHRoaXMuYnJ1c2hTZWxlY3Rpb24oKSl9c2V0RGlzcGxheWVkKHQpe3RoaXMuX2lzRGlzcGxheWVkPXR9X2J1aWxkQnJ1c2hGaWx0ZXIodCxlLG4pe2lmKG51bGw9PT10KXJldHVybiBuZXcgRTB0O2lmKG51bGw9PT1lKXJldHVybiBjb25zb2xlLmVycm9yKCJTY2FsZSB0eXBlIGlzIG51bGwsIGJ1dCBicnVzaFNlbGVjdGlvbiBpc24ndDogIix0KSxuZXcgRTB0O3N3aXRjaChlKXtjYXNlIFMwdC5MSU5FQVI6Y2FzZSBTMHQuTE9HOntjb25zdFtlLGldPShmdW5jdGlvbiByKHQsZSxuKXtyZXR1cm5bdC5pbnZlcnQoZSksdC5pbnZlcnQobildLnNvcnQoKCh0LGUpPT50LWUpKX0pKG4sdFswXSx0WzFdKTtyZXR1cm4gbmV3IFQwdChlLGksITEsITEpfWNhc2UgUzB0LlFVQU5USUxFOntjb25zdFtlLGldPShmdW5jdGlvbiByKHQsZSxuKXtjb25zdCBpPXQucmFuZ2UoKSxyPWkuZmlsdGVyKCh0PT5lPD10JiZ0PD1uKSkubWFwKChlPT57Y29uc3Qgbj10LmludmVydEV4dGVudChlKTtyZXR1cm4gZT09PWlbaS5sZW5ndGgtMV0/W25bMF0sblsxXSsxXTpufSkpO3JldHVybiAwPT1yLmxlbmd0aD9bMCwwXTpHbChhYyhyKSl9KShuLHRbMF0sdFsxXSk7cmV0dXJuIG5ldyBUMHQoZSxpLCExLCEwKX1jYXNlIFMwdC5OT05fTlVNRVJJQzpyZXR1cm4gbmV3IEMwdCgoZnVuY3Rpb24gZSh0LG4saSl7cmV0dXJuIHQuZG9tYWluKCkuZmlsdGVyKChlPT57Y29uc3Qgcj10KGUpO3JldHVybiBuPD1yJiZyPD1pfSkpfSkobix0WzBdLHRbMV0pKX1yZXR1cm4gY29uc29sZS5lcnJvcigiVW5rbm93biBzY2FsZSB0eXBlOiAiLGUpLG5ldyBFMHR9fWNsYXNzIGswdHtjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5fc3ZnUHJvcHM9dCx0aGlzLl9zY2hlbWE9ZSx0aGlzLl9heGVzPXRoaXMuX2NyZWF0ZUF4ZXMobiksdGhpcy5fc3RhdGlvbmFyeUF4ZXNQb3NpdGlvbnM9S00oKS5yYW5nZShbMSx0aGlzLl9zdmdQcm9wcy53aWR0aC0xXSkucGFkZGluZyguNSksdGhpcy5fZHJhZ2dlZEF4aXM9bnVsbCx0aGlzLl9zdmdQcm9wcy5zdmdHLnNlbGVjdEFsbCgiZy5heGlzLXBhcmVudCIpLnJlbW92ZSgpLHRoaXMuX3BhcmVudHNTZWw9dGhpcy5fc3ZnUHJvcHMuc3ZnRy5zZWxlY3RBbGwoIi5heGlzLXBhcmVudCIpfXVwZGF0ZUF4ZXModCxlKXtjb25zb2xlLmFzc2VydCghdGhpcy5pc0F4aXNEcmFnZ2luZygpKTtjb25zdCBuPW5ldyBTZXQ7dC5jb2x1bW5zLmZvckVhY2goKHQ9Pntjb25zdCBpPXQuYWJzb2x1dGVJbmRleDtsZXQgcj10aGlzLl9heGVzW2ldO3Iuc2V0RGlzcGxheWVkKCEwKTtjb25zdCBvPWUubWFwKCh0PT56SnQodGhpcy5fc2NoZW1hLHQsaSkpKTtyLnNldERvbWFpbkFuZFNjYWxlKG8sdC5zY2FsZSksbi5hZGQoaSl9KSksdGhpcy5fYXhlcy5mb3JFYWNoKCh0PT57bi5oYXModC5jb2xJbmRleCgpKXx8dC5zZXREaXNwbGF5ZWQoITEpfSkpLHRoaXMuX3VwZGF0ZVN0YXRpb25hcnlBeGVzUG9zaXRpb25zKG4pLHRoaXMuX3BhcmVudHNTZWw9dGhpcy5fcGFyZW50c1NlbC5kYXRhKEFycmF5LmZyb20obiksKHQ9PnQpKSx0aGlzLl9wYXJlbnRzU2VsLmV4aXQoKS5yZW1vdmUoKSx0aGlzLl9wYXJlbnRzU2VsPXRoaXMuX3BhcmVudHNTZWwuZW50ZXIoKS5hcHBlbmQoImciKS5jbGFzc2VkKCJheGlzLXBhcmVudCIsITApLm1lcmdlKHRoaXMuX3BhcmVudHNTZWwpO2NvbnN0IGk9dGhpczt0aGlzLl9wYXJlbnRzU2VsLmNhbGwoKHQ9PnRoaXMuX3VwZGF0ZUF4ZXNQb3NpdGlvbnNJbkRPTSh0KSkpLmVhY2goKGZ1bmN0aW9uKHQpe2kuX2F4ZXNbdF0udXBkYXRlRE9NKHRoaXMpfSkpfW1hcFZpc2libGVBeGVzKHQpe3JldHVybiB0aGlzLl9zdGF0aW9uYXJ5QXhlc1Bvc2l0aW9ucy5kb21haW4oKS5tYXAoKGU9PnQodGhpcy5nZXRBeGlzUG9zaXRpb24oZSksdGhpcy5fYXhlc1tlXSkpKX1hbGxWaXNpYmxlQXhlc1NhdGlzZnkodCl7cmV0dXJuIHRoaXMuX3N0YXRpb25hcnlBeGVzUG9zaXRpb25zLmRvbWFpbigpLmV2ZXJ5KChlPT50KHRoaXMuZ2V0QXhpc1Bvc2l0aW9uKGUpLHRoaXMuX2F4ZXNbZV0pKSl9Z2V0QXhpc0ZvckNvbEluZGV4KHQpe3JldHVybiB0aGlzLl9heGVzW3RdfWRyYWdTdGFydCh0KXtjb25zb2xlLmFzc2VydCghdGhpcy5pc0F4aXNEcmFnZ2luZygpKSxjb25zb2xlLmFzc2VydCh0aGlzLl9heGVzW3RdLmlzRGlzcGxheWVkKCkpLHRoaXMuX2RyYWdnZWRBeGlzPXRoaXMuX2F4ZXNbdF0sdGhpcy5fZHJhZ2dlZEF4aXNQb3NpdGlvbj10aGlzLl9zdGF0aW9uYXJ5QXhlc1Bvc2l0aW9ucyh0KX1kcmFnKHQpe3Q9TWF0aC5taW4oTWF0aC5tYXgodCwwKSx0aGlzLl9zdmdQcm9wcy53aWR0aCksdGhpcy5fZHJhZ2dlZEF4aXNQb3NpdGlvbj10O2xldCBlPXRoaXMuX3N0YXRpb25hcnlBeGVzUG9zaXRpb25zLmRvbWFpbigpO2Uuc29ydCgoKHQsZSk9PnRoaXMuZ2V0QXhpc1Bvc2l0aW9uKHQpLXRoaXMuZ2V0QXhpc1Bvc2l0aW9uKGUpKSksdGhpcy5fc3RhdGlvbmFyeUF4ZXNQb3NpdGlvbnMuZG9tYWluKGUpLHRoaXMuX3VwZGF0ZUF4ZXNQb3NpdGlvbnNJbkRPTSh0aGlzLl9wYXJlbnRzU2VsKX1kcmFnRW5kKHQpe2NvbnNvbGUuYXNzZXJ0KHRoaXMuaXNBeGlzRHJhZ2dpbmcoKSksdGhpcy5fZHJhZ2dlZEF4aXNQb3NpdGlvbj1udWxsLHRoaXMuX2RyYWdnZWRBeGlzPW51bGwsdGhpcy5fdXBkYXRlQXhlc1Bvc2l0aW9uc0luRE9NKHRoaXMuX3BhcmVudHNTZWwudHJhbnNpdGlvbigpLmR1cmF0aW9uKHQpKX1pc0F4aXNEcmFnZ2luZygpe3JldHVybiBudWxsIT09dGhpcy5fZHJhZ2dlZEF4aXN9Z2V0QXhpc1Bvc2l0aW9uKHQpe3JldHVybiBudWxsIT09dGhpcy5fZHJhZ2dlZEF4aXMmJnRoaXMuX2RyYWdnZWRBeGlzLmNvbEluZGV4KCk9PT10P3RoaXMuX2RyYWdnZWRBeGlzUG9zaXRpb246dGhpcy5fc3RhdGlvbmFyeUF4ZXNQb3NpdGlvbnModCl9X3VwZGF0ZVN0YXRpb25hcnlBeGVzUG9zaXRpb25zKHQpe2NvbnN0IGU9dGhpcy5fc3RhdGlvbmFyeUF4ZXNQb3NpdGlvbnMuZG9tYWluKCkuZmlsdGVyKChlPT50LmhhcyhlKSkpLG49QXJyYXkuZnJvbShuZXcgU2V0KFsuLi5lLC4uLkFycmF5LmZyb20odCldKSk7dGhpcy5fc3RhdGlvbmFyeUF4ZXNQb3NpdGlvbnMuZG9tYWluKG4pfV91cGRhdGVBeGVzUG9zaXRpb25zSW5ET00odCl7dC5hdHRyKCJ0cmFuc2Zvcm0iLCh0PT5LSnQodGhpcy5nZXRBeGlzUG9zaXRpb24odCkpKSl9X2NyZWF0ZUF4ZXModCl7cmV0dXJuIEtsKFBKdCh0aGlzLl9zY2hlbWEpKS5tYXAoKGU9Pm5ldyBBMHQodGhpcy5fc3ZnUHJvcHMsdGhpcy5fc2NoZW1hLHQsZSkpKX19ZnVuY3Rpb24gTDB0KHQpe3JldHVybiBudWxsIT09dC5zb3VyY2VFdmVudH0hKGZ1bmN0aW9uKHQpe3RbdC5GT1JFR1JPVU5EPTBdPSJGT1JFR1JPVU5EIix0W3QuQkFDS0dST1VORD0xXT0iQkFDS0dST1VORCJ9KShNMHR8fChNMHQ9e30pKTtjbGFzcyBQMHR7Y29uc3RydWN0b3IodCl7dm9pZCAwPT09dCYmKHQ9eGgobnVsbCkpLGNvbnNvbGUuYXNzZXJ0KHQuc2l6ZSgpPD0xKSx0aGlzLl9zZXNzaW9uR3JvdXBTZWw9dH1zZXNzaW9uR3JvdXAoKXtyZXR1cm4gMT09PXRoaXMuX3Nlc3Npb25Hcm91cFNlbC5zaXplKCk/dGhpcy5fc2Vzc2lvbkdyb3VwU2VsLmRhdHVtKCk6bnVsbH1pc051bGwoKXtyZXR1cm4gbnVsbD09PXRoaXMuc2Vzc2lvbkdyb3VwKCl9c2VsZWN0aW9uKCl7cmV0dXJuIHRoaXMuX3Nlc3Npb25Hcm91cFNlbH1lcXVhbHNUbyh0KXtyZXR1cm4gdGhpcy5pc051bGwoKT90LmlzTnVsbCgpOiF0LmlzTnVsbCgpJiZ0LnNlc3Npb25Hcm91cCgpLm5hbWU9PXRoaXMuc2Vzc2lvbkdyb3VwKCkubmFtZX19Y2xhc3MgTjB0e2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLl9zdmdQcm9wcz10LHRoaXMuX3NjaGVtYT1lLHRoaXMuX2F4ZXNDb2xsZWN0aW9uPW4sdGhpcy5fc2Vzc2lvbkdyb3Vwcz1bXSx0aGlzLl9zdmdQcm9wcy5zdmdHLnNlbGVjdEFsbCgiZy5iYWNrZ3JvdW5kIikucmVtb3ZlKCksdGhpcy5fc3ZnUHJvcHMuc3ZnRy5zZWxlY3RBbGwoImcuZm9yZWdyb3VuZCIpLnJlbW92ZSgpLHRoaXMuX2JnUGF0aHNTZWw9dGhpcy5fc3ZnUHJvcHMuc3ZnRy5hcHBlbmQoImciKS5jbGFzc2VkKCJiYWNrZ3JvdW5kIiwhMCkuc2VsZWN0QWxsKCJwYXRoIiksdGhpcy5fZmdQYXRoc1NlbD10aGlzLl9zdmdQcm9wcy5zdmdHLmFwcGVuZCgiZyIpLmNsYXNzZWQoImZvcmVncm91bmQiLCEwKS5zZWxlY3RBbGwoInBhdGgiKSx0aGlzLl91cGRhdGVWaXNpYmxlRmdQYXRoc1NlbCgpLHRoaXMuX3BlYWtlZFNlc3Npb25Hcm91cEhhbmRsZT1uZXcgUDB0LHRoaXMuX3NlbGVjdGVkU2Vzc2lvbkdyb3VwSGFuZGxlPW5ldyBQMHQsdGhpcy5fZDNsaW5lPURMKCkuY3VydmUoUkwpfWdldFNlc3Npb25Hcm91cEhhbmRsZSh0KXtyZXR1cm4gbnVsbD09dD9uZXcgUDB0Om5ldyBQMHQodGhpcy5fZmdQYXRoc1NlbC5maWx0ZXIoKGU9PmUubmFtZT09PXQubmFtZSkpKX1oaWRlQmFja2dyb3VuZExpbmVzKCl7dGhpcy5fYmdQYXRoc1NlbC5hdHRyKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIil9c2hvd0JhY2tncm91bmRMaW5lcygpe3RoaXMuX2JnUGF0aHNTZWwuYXR0cigidmlzaWJpbGl0eSIsbnVsbCl9cGVha2VkU2Vzc2lvbkdyb3VwSGFuZGxlKCl7cmV0dXJuIHRoaXMuX3BlYWtlZFNlc3Npb25Hcm91cEhhbmRsZX1zZWxlY3RlZFNlc3Npb25Hcm91cEhhbmRsZSgpe3JldHVybiB0aGlzLl9zZWxlY3RlZFNlc3Npb25Hcm91cEhhbmRsZX1yZWNvbXB1dGVDb250cm9sUG9pbnRzKHQsZT0wKXsodD09PU0wdC5GT1JFR1JPVU5EP3RoaXMuX2ZnUGF0aHNTZWw6dGhpcy5fYmdQYXRoc1NlbCkudHJhbnNpdGlvbigpLmR1cmF0aW9uKGUpLmF0dHIoImQiLCh0PT50aGlzLl9wYXRoREF0dHJpYnV0ZSh0KSkpLHQ9PT1NMHQuRk9SRUdST1VORCYmd2luZG93LnNldFRpbWVvdXQoKCgpPT57Y29uc3QgdD10aGlzO3RoaXMuX2ZnUGF0aHNTZWwuZWFjaCgoZnVuY3Rpb24oZSl7dC5fc2V0Q29udHJvbFBvaW50c1Byb3BlcnR5KHRoaXMsZSl9KSl9KSl9cmVjb21wdXRlRm9yZWdyb3VuZExpbmVzVmlzaWJpbGl0eSgpe3RoaXMuX2ZnUGF0aHNTZWwuY2xhc3NlZCgiaW52aXNpYmxlLXBhdGgiLCh0PT4hdGhpcy5fYXhlc0NvbGxlY3Rpb24uYWxsVmlzaWJsZUF4ZXNTYXRpc2Z5KCgoZSxuKT0+bi5icnVzaEZpbHRlcigpLmlzUGFzc2luZyh6SnQodGhpcy5fc2NoZW1hLHQsbi5jb2xJbmRleCgpKSkpKSkpLHRoaXMuX3VwZGF0ZVZpc2libGVGZ1BhdGhzU2VsKCl9c2V0Rm9yZWdyb3VuZExpbmVzQ29sb3IodCxlLG4pe2NvbnN0IGk9dGhpcy5fY3JlYXRlTGluZUNvbG9yRnVuY3Rpb24odCxlLG4pO3RoaXMuX2ZnUGF0aHNTZWwuYXR0cigic3Ryb2tlIixpKX1yZWRyYXcodCxlLG4saSl7Y29uc3Qgcj10aGlzLl9wZWFrZWRTZXNzaW9uR3JvdXBIYW5kbGUuc2Vzc2lvbkdyb3VwKCksbz10aGlzLl9zZWxlY3RlZFNlc3Npb25Hcm91cEhhbmRsZS5zZXNzaW9uR3JvdXAoKTt0aGlzLl9zZXNzaW9uR3JvdXBzPXQsdGhpcy5fZmdQYXRoc1NlbD10aGlzLl9yZWNvbXB1dGVQYXRoU2VsZWN0aW9uKHRoaXMuX2ZnUGF0aHNTZWwpLHRoaXMuX2JnUGF0aHNTZWw9dGhpcy5fcmVjb21wdXRlUGF0aFNlbGVjdGlvbih0aGlzLl9iZ1BhdGhzU2VsKSx0aGlzLl9wZWFrZWRTZXNzaW9uR3JvdXBIYW5kbGU9dGhpcy5nZXRTZXNzaW9uR3JvdXBIYW5kbGUociksdGhpcy5fc2VsZWN0ZWRTZXNzaW9uR3JvdXBIYW5kbGU9dGhpcy5nZXRTZXNzaW9uR3JvdXBIYW5kbGUobyksdGhpcy5yZWNvbXB1dGVDb250cm9sUG9pbnRzKE0wdC5GT1JFR1JPVU5EKSx0aGlzLnJlY29tcHV0ZUNvbnRyb2xQb2ludHMoTTB0LkJBQ0tHUk9VTkQpLHRoaXMucmVjb21wdXRlRm9yZWdyb3VuZExpbmVzVmlzaWJpbGl0eSgpLHRoaXMuc2V0Rm9yZWdyb3VuZExpbmVzQ29sb3IoZSxuLGkpfXVwZGF0ZVBlYWtlZFNlc3Npb25Hcm91cCh0KXt0aGlzLl9wZWFrZWRTZXNzaW9uR3JvdXBIYW5kbGUuc2VsZWN0aW9uKCkuY2xhc3NlZCgicGVha2VkLXBhdGgiLCExKSx0aGlzLl9wZWFrZWRTZXNzaW9uR3JvdXBIYW5kbGU9dCx0aGlzLl9wZWFrZWRTZXNzaW9uR3JvdXBIYW5kbGUuc2VsZWN0aW9uKCkuY2xhc3NlZCgicGVha2VkLXBhdGgiLCEwKX1jbGVhclBlYWtlZFNlc3Npb25Hcm91cCgpe3RoaXMudXBkYXRlUGVha2VkU2Vzc2lvbkdyb3VwKG5ldyBQMHQpfXVwZGF0ZVNlbGVjdGVkU2Vzc2lvbkdyb3VwKHQpe3RoaXMuX3NlbGVjdGVkU2Vzc2lvbkdyb3VwSGFuZGxlLnNlbGVjdGlvbigpLmNsYXNzZWQoInNlbGVjdGVkLXBhdGgiLCExKSx0aGlzLl9zZWxlY3RlZFNlc3Npb25Hcm91cEhhbmRsZT10LHRoaXMuX3NlbGVjdGVkU2Vzc2lvbkdyb3VwSGFuZGxlLnNlbGVjdGlvbigpLmNsYXNzZWQoInNlbGVjdGVkLXBhdGgiLCEwKX1maW5kQ2xvc2VzdFNlc3Npb25Hcm91cCh0LGUpe2NvbnN0IG49dGhpcy5fYXhlc0NvbGxlY3Rpb24ubWFwVmlzaWJsZUF4ZXMoKCh0LGUpPT50KSksaT14MHQodGhpcy5fdmlzaWJsZUZnUGF0aHNTZWwubm9kZXMoKSxuLFt0LGVdLDEwMCk7cmV0dXJuIG51bGw9PT1pP25ldyBQMHQ6bmV3IFAwdChEdShpKSl9X2NyZWF0ZUxpbmVDb2xvckZ1bmN0aW9uKHQsZSxuKXtpZihudWxsPT09dClyZXR1cm4oKT0+InJlZCI7Y29uc3QgaT1jRSgpLmRvbWFpbihESnQodGhpcy5fc2NoZW1hLHRoaXMuX3Nlc3Npb25Hcm91cHMsdCkpLnJhbmdlKFtlLG5dKS5pbnRlcnBvbGF0ZShrcCk7cmV0dXJuIGU9Pmkoekp0KHRoaXMuX3NjaGVtYSxlLHQpKX1fcmVjb21wdXRlUGF0aFNlbGVjdGlvbih0KXtyZXR1cm4odD10LmRhdGEodGhpcy5fc2Vzc2lvbkdyb3VwcywodD0+dC5uYW1lKSkpLmV4aXQoKS5yZW1vdmUoKSx0LmVudGVyKCkuYXBwZW5kKCJwYXRoIikubWVyZ2UodCl9X3NldENvbnRyb2xQb2ludHNQcm9wZXJ0eSh0LGUpe3QuY29udHJvbFBvaW50cz10aGlzLl9jb21wdXRlQ29udHJvbFBvaW50cyhlKX1fY29tcHV0ZUNvbnRyb2xQb2ludHModCl7cmV0dXJuIHRoaXMuX2F4ZXNDb2xsZWN0aW9uLm1hcFZpc2libGVBeGVzKCgoZSxuKT0+W2Usbi55U2NhbGUoKSh6SnQodGhpcy5fc2NoZW1hLHQsbi5jb2xJbmRleCgpKSldKSl9X3BhdGhEQXR0cmlidXRlKHQpe3JldHVybiB0aGlzLl9kM2xpbmUodGhpcy5fY29tcHV0ZUNvbnRyb2xQb2ludHModCkpfV91cGRhdGVWaXNpYmxlRmdQYXRoc1NlbCgpe3RoaXMuX3Zpc2libGVGZ1BhdGhzU2VsPXRoaXMuX2ZnUGF0aHNTZWwuZmlsdGVyKCI6bm90KC5pbnZpc2libGUtcGF0aCkiKX19Y2xhc3MgSTB0e2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5zdmc9RHUodCk7Y29uc3Qgbj0zMCxpPTEwLHI9MTAsbz0xMCxhPTEwMCplK28raSxzPTIwMCtuK3I7dGhpcy5zdmcuYXR0cigidmlld0JveCIsYDAgMCAke2F9ICR7c31gKSx0aGlzLnN2Zy5hdHRyKCJwcmVzZXJ2ZUFzcGVjdFJhdGlvIiwieE1pZFlNaWQiKSx0aGlzLnN2Zy5zdHlsZSgibWluLXdpZHRoIixhKyJweCIpLHRoaXMuc3ZnLnN0eWxlKCJtaW4taGVpZ2h0IixzKyJweCIpLHRoaXMud2lkdGg9YS1vLWksdGhpcy5oZWlnaHQ9cy1uLXIsdGhpcy5zdmdHPXRoaXMuc3ZnLmFwcGVuZCgiZyIpLmF0dHIoInRyYW5zZm9ybSIsS0p0KG8sbikpfX1jbGFzcyBSMHR7Y29uc3RydWN0b3IodCxlLG4saSl7dGhpcy5fc3ZnUHJvcHM9dCx0aGlzLl9zY2hlbWE9ZSx0aGlzLl9wZWFrZWRTZXNzaW9uR3JvdXBDaGFuZ2VkQ0I9bix0aGlzLl9zZWxlY3RlZFNlc3Npb25Hcm91cENoYW5nZWRDQj1pLHRoaXMuX2F4ZXNDb2xsZWN0aW9uPW5ldyBrMHQodCxlLHRoaXMpLHRoaXMuX2xpbmVzQ29sbGVjdGlvbj1uZXcgTjB0KHQsZSx0aGlzLl9heGVzQ29sbGVjdGlvbiksdGhpcy5fc3ZnUHJvcHMuc3ZnLm9uKCJjbGljayIsKCgpPT50aGlzLm9uQ2xpY2soKSkpLm9uKCJtb3VzZW1vdmUgbW91c2VlbnRlciIsKCgpPT57Y29uc3RbdCxlXT1iaCh0aGlzLl9zdmdQcm9wcy5zdmdHLm5vZGUoKSk7dGhpcy5vbk1vdXNlTW92ZWQodCxlKX0pKS5vbigibW91c2VsZWF2ZSIsKCgpPT50aGlzLm9uTW91c2VMZWF2ZSgpKSl9b25EcmFnU3RhcnQodCl7dGhpcy5fYXhlc0NvbGxlY3Rpb24uZHJhZ1N0YXJ0KHQpLHRoaXMuX2xpbmVzQ29sbGVjdGlvbi5oaWRlQmFja2dyb3VuZExpbmVzKCl9b25EcmFnKHQpe3RoaXMuX2F4ZXNDb2xsZWN0aW9uLmRyYWcodCksdGhpcy5fbGluZXNDb2xsZWN0aW9uLnJlY29tcHV0ZUNvbnRyb2xQb2ludHMoTTB0LkZPUkVHUk9VTkQpfW9uRHJhZ0VuZCgpe3RoaXMuX2F4ZXNDb2xsZWN0aW9uLmRyYWdFbmQoNTAwKSx0aGlzLl9saW5lc0NvbGxlY3Rpb24ucmVjb21wdXRlQ29udHJvbFBvaW50cyhNMHQuRk9SRUdST1VORCw1MDApLHdpbmRvdy5zZXRUaW1lb3V0KCgoKT0+e3RoaXMuX2xpbmVzQ29sbGVjdGlvbi5yZWNvbXB1dGVDb250cm9sUG9pbnRzKE0wdC5CQUNLR1JPVU5EKSx0aGlzLl9saW5lc0NvbGxlY3Rpb24uc2hvd0JhY2tncm91bmRMaW5lcygpfSksNTAwKX1vbkJydXNoQ2hhbmdlZCh0LGUpe3RoaXMuX2F4ZXNDb2xsZWN0aW9uLmdldEF4aXNGb3JDb2xJbmRleCh0KS5zZXRCcnVzaFNlbGVjdGlvbihlKSx0aGlzLl9saW5lc0NvbGxlY3Rpb24ucmVjb21wdXRlRm9yZWdyb3VuZExpbmVzVmlzaWJpbGl0eSgpfW9uTW91c2VNb3ZlZCh0LGUpe3RoaXMuX2xpbmVzQ29sbGVjdGlvbi51cGRhdGVQZWFrZWRTZXNzaW9uR3JvdXAodGhpcy5fbGluZXNDb2xsZWN0aW9uLmZpbmRDbG9zZXN0U2Vzc2lvbkdyb3VwKHQsZSkpLHRoaXMuX3BlYWtlZFNlc3Npb25Hcm91cENoYW5nZWRDQih0aGlzLl9saW5lc0NvbGxlY3Rpb24ucGVha2VkU2Vzc2lvbkdyb3VwSGFuZGxlKCkuc2Vzc2lvbkdyb3VwKCkpfW9uTW91c2VMZWF2ZSgpe3RoaXMuX2xpbmVzQ29sbGVjdGlvbi5wZWFrZWRTZXNzaW9uR3JvdXBIYW5kbGUoKS5pc051bGwoKXx8KHRoaXMuX2xpbmVzQ29sbGVjdGlvbi5jbGVhclBlYWtlZFNlc3Npb25Hcm91cCgpLHRoaXMuX3BlYWtlZFNlc3Npb25Hcm91cENoYW5nZWRDQihudWxsKSl9b25DbGljaygpe3RoaXMuX2xpbmVzQ29sbGVjdGlvbi5wZWFrZWRTZXNzaW9uR3JvdXBIYW5kbGUoKS5zZXNzaW9uR3JvdXAoKT09PXRoaXMuX2xpbmVzQ29sbGVjdGlvbi5zZWxlY3RlZFNlc3Npb25Hcm91cEhhbmRsZSgpLnNlc3Npb25Hcm91cCgpP3RoaXMuX2xpbmVzQ29sbGVjdGlvbi51cGRhdGVTZWxlY3RlZFNlc3Npb25Hcm91cChuZXcgUDB0KTp0aGlzLl9saW5lc0NvbGxlY3Rpb24udXBkYXRlU2VsZWN0ZWRTZXNzaW9uR3JvdXAodGhpcy5fbGluZXNDb2xsZWN0aW9uLnBlYWtlZFNlc3Npb25Hcm91cEhhbmRsZSgpKSx0aGlzLl9zZWxlY3RlZFNlc3Npb25Hcm91cENoYW5nZWRDQih0aGlzLl9saW5lc0NvbGxlY3Rpb24uc2VsZWN0ZWRTZXNzaW9uR3JvdXBIYW5kbGUoKS5zZXNzaW9uR3JvdXAoKSl9b25PcHRpb25zT3JTZXNzaW9uR3JvdXBzQ2hhbmdlZCh0LGUpe3RoaXMuX2F4ZXNDb2xsZWN0aW9uLnVwZGF0ZUF4ZXModCxlKTtjb25zdCBuPXRoaXMuX2xpbmVzQ29sbGVjdGlvbi5wZWFrZWRTZXNzaW9uR3JvdXBIYW5kbGUoKSxpPXRoaXMuX2xpbmVzQ29sbGVjdGlvbi5zZWxlY3RlZFNlc3Npb25Hcm91cEhhbmRsZSgpO3RoaXMuX2xpbmVzQ29sbGVjdGlvbi5yZWRyYXcoZSx2b2lkIDAhPT10LmNvbG9yQnlDb2x1bW5JbmRleD90LmNvbHVtbnNbdC5jb2xvckJ5Q29sdW1uSW5kZXhdLmFic29sdXRlSW5kZXg6bnVsbCx0Lm1pbkNvbG9yLHQubWF4Q29sb3IpLG4uZXF1YWxzVG8odGhpcy5fbGluZXNDb2xsZWN0aW9uLnBlYWtlZFNlc3Npb25Hcm91cEhhbmRsZSgpKXx8dGhpcy5fcGVha2VkU2Vzc2lvbkdyb3VwQ2hhbmdlZENCKHRoaXMuX2xpbmVzQ29sbGVjdGlvbi5wZWFrZWRTZXNzaW9uR3JvdXBIYW5kbGUoKS5zZXNzaW9uR3JvdXAoKSksaS5lcXVhbHNUbyh0aGlzLl9saW5lc0NvbGxlY3Rpb24uc2VsZWN0ZWRTZXNzaW9uR3JvdXBIYW5kbGUoKSl8fHRoaXMuX3NlbGVjdGVkU2Vzc2lvbkdyb3VwQ2hhbmdlZENCKHRoaXMuX2xpbmVzQ29sbGVjdGlvbi5zZWxlY3RlZFNlc3Npb25Hcm91cEhhbmRsZSgpLnNlc3Npb25Hcm91cCgpKX1zY2hlbWEoKXtyZXR1cm4gdGhpcy5fc2NoZW1hfX1sZXQgTzB0PWNsYXNzIGV4dGVuZHMoY3IoZ2wod2UpKSl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuc2VsZWN0ZWRTZXNzaW9uR3JvdXA9bnVsbCx0aGlzLmNsb3Nlc3RTZXNzaW9uR3JvdXA9bnVsbCx0aGlzLnJlZHJhd0NvdW50PTB9X29wdGlvbnNPclNlc3Npb25Hcm91cHNDaGFuZ2VkKCl7dmFyIHQ7aWYoIXRoaXMub3B0aW9ucylyZXR1cm47Y29uc3R7Y29uZmlndXJhdGlvbjplfT1udWxsIT09KHQ9dGhpcy5fcHJldk9wdGlvbnMpJiZ2b2lkIDAhPT10P3Q6e30se2NvbmZpZ3VyYXRpb246bn09dGhpcy5vcHRpb25zO2lmKHZvaWQgMD09PXRoaXMuX2ludGVyYWN0aW9uTWFuYWdlcnx8IUNlLmV4cG9ydHMuaXNFcXVhbChlLnNjaGVtYSxuLnNjaGVtYSl8fCFDZS5leHBvcnRzLmlzRXF1YWwoZS5jb2x1bW5zVmlzaWJpbGl0eSxuLmNvbHVtbnNWaXNpYmlsaXR5KSl7RHUodGhpcy4kLnN2Zykuc2VsZWN0QWxsKCIqIikucmVtb3ZlKCk7Y29uc3QgdD1uZXcgSTB0KHRoaXMuJC5zdmcsbi5jb2x1bW5zVmlzaWJpbGl0eS5maWx0ZXIoQm9vbGVhbikubGVuZ3RoKTt0aGlzLnNjb3BlU3VidHJlZSh0aGlzLiQuc3ZnLCEwKSx0aGlzLl9pbnRlcmFjdGlvbk1hbmFnZXI9bmV3IFIwdCh0LG4uc2NoZW1hLCh0PT50aGlzLmNsb3Nlc3RTZXNzaW9uR3JvdXBDaGFuZ2VkKHQpKSwodD0+dGhpcy5zZWxlY3RlZFNlc3Npb25Hcm91cENoYW5nZWQodCkpKX10aGlzLl9jb21wdXRlVmFsaWRTZXNzaW9uR3JvdXBzKCksdGhpcy5faW50ZXJhY3Rpb25NYW5hZ2VyLm9uT3B0aW9uc09yU2Vzc2lvbkdyb3Vwc0NoYW5nZWQodGhpcy5vcHRpb25zLHRoaXMuX3ZhbGlkU2Vzc2lvbkdyb3VwcyksdGhpcy5yZWRyYXdDb3VudCsrLHRoaXMuX3ByZXZPcHRpb25zPXRoaXMub3B0aW9uc31jbG9zZXN0U2Vzc2lvbkdyb3VwQ2hhbmdlZCh0KXt0aGlzLmNsb3Nlc3RTZXNzaW9uR3JvdXA9dH1zZWxlY3RlZFNlc3Npb25Hcm91cENoYW5nZWQodCl7dGhpcy5zZWxlY3RlZFNlc3Npb25Hcm91cD10fV9jb21wdXRlVmFsaWRTZXNzaW9uR3JvdXBzKCl7Y29uc3QgdD1RSnQ7aWYodm9pZCAwPT09dGhpcy5zZXNzaW9uR3JvdXBzKXJldHVybiB2b2lkKHRoaXMuX3ZhbGlkU2Vzc2lvbkdyb3Vwcz12b2lkIDApO2NvbnN0IGU9dGhpcy5vcHRpb25zLmNvbmZpZ3VyYXRpb24uc2NoZW1hO3RoaXMuX3ZhbGlkU2Vzc2lvbkdyb3Vwcz10aGlzLnNlc3Npb25Hcm91cHMuZmlsdGVyKChuPT57Zm9yKGxldCBpPTA7aTx0Lm51bUNvbHVtbnMoZSk7KytpKWlmKHRoaXMub3B0aW9ucy5jb25maWd1cmF0aW9uLmNvbHVtbnNWaXNpYmlsaXR5W2ldJiZ2b2lkIDA9PT10LmNvbHVtblZhbHVlQnlJbmRleChlLG4saSkpcmV0dXJuITE7cmV0dXJuITB9KSl9fTtPMHQudGVtcGxhdGU9eGVgCiAgICA8ZGl2IGlkPSJjb250YWluZXIiPgogICAgICA8c3ZnIGlkPSJzdmciPjwvc3ZnPgogICAgPC9kaXY+CiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICAtLXRmLWhwYXJhbXMtcGFyYWxsZWwtY29vcmRzLXBsb3QtYXhpcy1zaGFkb3c6IDAgMXB4IDAgI2ZmZiwKICAgICAgICAgIDFweCAwIDAgI2ZmZiwgMCAtMXB4IDAgI2ZmZiwgLTFweCAwIDAgI2ZmZjsKICAgICAgfQogICAgICA6aG9zdCguZGFyay1tb2RlKSB7CiAgICAgICAgLS10Zi1ocGFyYW1zLXBhcmFsbGVsLWNvb3Jkcy1wbG90LWF4aXMtc2hhZG93OiAwIDFweCAwICMwMDAsCiAgICAgICAgICAxcHggMCAwICMwMDAsIDAgLTFweCAwICMwMDAsIC0xcHggMCAwICMwMDA7CiAgICAgIH0KICAgICAgc3ZnIHsKICAgICAgICBmb250OiAxMHB4IHNhbnMtc2VyaWY7CiAgICAgIH0KCiAgICAgIC5iYWNrZ3JvdW5kIHBhdGggewogICAgICAgIGZpbGw6IG5vbmU7CiAgICAgICAgc3Ryb2tlOiAjZGRkOwogICAgICAgIHNoYXBlLXJlbmRlcmluZzogY3Jpc3BFZGdlczsKICAgICAgfQoKICAgICAgLmZvcmVncm91bmQgcGF0aCB7CiAgICAgICAgZmlsbDogbm9uZTsKICAgICAgICBzdHJva2Utb3BhY2l0eTogMC43OwogICAgICAgIHN0cm9rZS13aWR0aDogMTsKICAgICAgfQoKICAgICAgLyogV2lsbCBiZSBzZXQgb24gZm9yZWdyb3VuZCBwYXRocyB0aGF0IGFyZSBub3QgImNvbnRhaW5lZCIgaW4gdGhlIGN1cnJlbnQKICAgICAgICAgYXhlcyBicnVzaGVzLiBJZiBubyBicnVzaGVzIGFyZSBzZXQsIG5vIHBhdGggd2lsbCBoYXZlIHRoaXMgY2xhc3MuICovCiAgICAgIC5mb3JlZ3JvdW5kIC5pbnZpc2libGUtcGF0aCB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgfQoKICAgICAgLyogU3R5bGUgZm9yIHRoZSBwYXRoIGNsb3Nlc3QgdG8gdGhlIG1vdXNlIHBvaW50ZXIgKHR5cGljYWxseSB3aWxsIGJlY29tZQogICAgICB0aGUgc2VsZWN0ZWQgcGF0aCB3aGVuIHRoZSB1c2VyIGNsaWNrcykuICovCiAgICAgIC5mb3JlZ3JvdW5kIC5wZWFrZWQtcGF0aCB7CiAgICAgICAgc3Ryb2tlLXdpZHRoOiAzOwogICAgICB9CgogICAgICAvKiBUaGUgY3VycmVudGx5IHNlbGVjdGVkIHBhdGggY2xhc3MuIFdlIHVzZSAhaW1wb3J0YW50IHRvIG92ZXJyaWRlIHRoZQogICAgICAgICBpbmxpbmUgc3R5bGUgdGhhdCBzZXRzIHRoZSByZWd1bGFyIGNvbG9yIG9mIGEgcGF0aC4gKi8KICAgICAgLmZvcmVncm91bmQgLnNlbGVjdGVkLXBhdGggewogICAgICAgIHN0cm9rZS13aWR0aDogMyAhaW1wb3J0YW50OwogICAgICAgIHN0cm9rZTogIzBmMCAhaW1wb3J0YW50OwogICAgICB9CgogICAgICAjY29udGFpbmVyIHsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIH0KCiAgICAgIHN2ZyB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICB9CgogICAgICAuYXhpcyB0ZXh0IHsKICAgICAgICB0ZXh0LXNoYWRvdzogdmFyKC0tdGYtaHBhcmFtcy1wYXJhbGxlbC1jb29yZHMtcGxvdC1heGlzLXNoYWRvdyk7CiAgICAgICAgZmlsbDogY3VycmVudENvbG9yOwogICAgICAgIGN1cnNvcjogbW92ZTsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxPMHQucHJvdG90eXBlLCJzZXNzaW9uR3JvdXBzIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLE8wdC5wcm90b3R5cGUsIm9wdGlvbnMiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3Qsbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLE8wdC5wcm90b3R5cGUsInNlbGVjdGVkU2Vzc2lvbkdyb3VwIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0LG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxPMHQucHJvdG90eXBlLCJjbG9zZXN0U2Vzc2lvbkdyb3VwIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLE8wdC5wcm90b3R5cGUsInJlZHJhd0NvdW50Iix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxPMHQucHJvdG90eXBlLCJfdmFsaWRTZXNzaW9uR3JvdXBzIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLE8wdC5wcm90b3R5cGUsIl9pbnRlcmFjdGlvbk1hbmFnZXIiLHZvaWQgMCksdChbYSgib3B0aW9ucy4qIiwic2Vzc2lvbkdyb3Vwcy4qIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxPMHQucHJvdG90eXBlLCJfb3B0aW9uc09yU2Vzc2lvbkdyb3Vwc0NoYW5nZWQiLG51bGwpLE8wdD10KFtpKCJ0Zi1ocGFyYW1zLXBhcmFsbGVsLWNvb3Jkcy1wbG90IildLE8wdCk7bGV0IHowdD1jbGFzcyBleHRlbmRzIHdle2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLm9wdGlvbnM9bnVsbH1fY29uZmlndXJhdGlvbkNoYW5nZWQoKXtjb25zdCB0PXRoaXMuY29uZmlndXJhdGlvbi52aXNpYmxlU2NoZW1hLGU9dGhpcy5jb25maWd1cmF0aW9uLnNjaGVtYSxuPXtjb2x1bW5zOnQuaHBhcmFtSW5mb3MubWFwKCgobixpKT0+KHtuYW1lOlRKdChuKSxpbmRleDppLGFic29sdXRlSW5kZXg6Qkp0KGUsdCxpKSxzY2FsZTp0aGlzLl9pc051bWVyaWNDb2x1bW4oaSk/IkxJTkVBUiI6Ik5PTl9OVU1FUklDIn0pKSkuY29uY2F0KHQubWV0cmljSW5mb3MubWFwKCgobixpKT0+e2NvbnN0IHI9aSt0LmhwYXJhbUluZm9zLmxlbmd0aDtyZXR1cm57c2NhbGU6IkxJTkVBUiIsbmFtZTpDSnQobiksaW5kZXg6cixhYnNvbHV0ZUluZGV4OkJKdChlLHQscil9fSkpKSxtaW5Db2xvcjoiIzAwMDBGRiIsbWF4Q29sb3I6IiNGRjAwMDAiLGNvbmZpZ3VyYXRpb246dGhpcy5jb25maWd1cmF0aW9ufTt0aGlzLnNldCgib3B0aW9ucyIsbiksV2koKSx0aGlzLnNldCgib3B0aW9ucy5jb2xvckJ5Q29sdW1uSW5kZXgiLHRoaXMuX2RlZmF1bHRDb2xvckJ5Q29sdW1uSW5kZXgoKSl9X3Vuc2VsZWN0RGlzYWJsZWRMb2dTY2FsZXMoKXtudWxsIT09dGhpcy5vcHRpb25zJiZ0aGlzLm9wdGlvbnMuY29sdW1ucy5mb3JFYWNoKCh0PT57Y29uc3QgZT0ib3B0aW9ucy5jb2x1bW5zLiIrdC5pbmRleDt0aGlzLl9hbGxvd0xvZ1NjYWxlKHQpfHwiTE9HIiE9PXQuc2NhbGV8fHRoaXMuc2V0KGUrIi5zY2FsZSIsIkxJTkVBUiIpfSkpfV9hbGxvd0xvZ1NjYWxlKHQpe2lmKCF0aGlzLl9pc051bWVyaWNDb2x1bW4odC5pbmRleCl8fCF0aGlzLnNlc3Npb25Hcm91cHMpcmV0dXJuITE7Y29uc3RbZSxuXT1WSnQodGhpcy5jb25maWd1cmF0aW9uLnZpc2libGVTY2hlbWEsdGhpcy5zZXNzaW9uR3JvdXBzLHQuaW5kZXgpO3JldHVybiBlPjB8fG48MH1faXNOdW1lcmljQ29sdW1uKHQpe3JldHVybiB0Pj10aGlzLmNvbmZpZ3VyYXRpb24udmlzaWJsZVNjaGVtYS5ocGFyYW1JbmZvcy5sZW5ndGh8fCJEQVRBX1RZUEVfRkxPQVQ2NCI9PT10aGlzLmNvbmZpZ3VyYXRpb24udmlzaWJsZVNjaGVtYS5ocGFyYW1JbmZvc1t0XS50eXBlfV9kZWZhdWx0Q29sb3JCeUNvbHVtbkluZGV4KCl7aWYodGhpcy5jb25maWd1cmF0aW9uLnZpc2libGVTY2hlbWEubWV0cmljSW5mb3MubGVuZ3RoPjApcmV0dXJuIHRoaXMuY29uZmlndXJhdGlvbi52aXNpYmxlU2NoZW1hLmhwYXJhbUluZm9zLmxlbmd0aDtjb25zdCB0PXRoaXMuY29uZmlndXJhdGlvbi52aXNpYmxlU2NoZW1hLmhwYXJhbUluZm9zLmZpbmRJbmRleCgodD0+IkRBVEFfVFlQRV9GTE9BVDY0Ij09PXQudHlwZSkpO3JldHVybi0xIT09dD90OnZvaWQgMH19O3owdC50ZW1wbGF0ZT14ZWAKICAgIDxkaXYgY2xhc3M9ImNvbnRyb2wtcGFuZWwiPgogICAgICA8IS0tICdDb2xvciBieScgZHJvcCBkb3duIG1lbnUgLS0+CiAgICAgIDxwYXBlci1kcm9wZG93bi1tZW51CiAgICAgICAgbGFiZWw9IkNvbG9yIGJ5IgogICAgICAgIGlkPSJjb2xvckJ5RHJvcERvd25NZW51IgogICAgICAgIGhvcml6b250YWwtYWxpZ249ImxlZnQiCiAgICAgID4KICAgICAgICA8cGFwZXItbGlzdGJveAogICAgICAgICAgY2xhc3M9ImRyb3Bkb3duLWNvbnRlbnQiCiAgICAgICAgICBzbG90PSJkcm9wZG93bi1jb250ZW50IgogICAgICAgICAgc2VsZWN0ZWQ9Int7b3B0aW9ucy5jb2xvckJ5Q29sdW1uSW5kZXh9fSIKICAgICAgICAgIGlkPSJjb2xvckJ5TGlzdEJveCIKICAgICAgICA+CiAgICAgICAgICA8dGVtcGxhdGUKICAgICAgICAgICAgaXM9ImRvbS1yZXBlYXQiCiAgICAgICAgICAgIGl0ZW1zPSJbW29wdGlvbnMuY29sdW1uc11dIgogICAgICAgICAgICBhcz0iY29sdW1uIgogICAgICAgICAgICBpZD0iY29sb3JCeUNvbHVtblRlbXBsYXRlIgogICAgICAgICAgPgogICAgICAgICAgICA8cGFwZXItaXRlbSBkaXNhYmxlZD0iW1shX2lzTnVtZXJpY0NvbHVtbihjb2x1bW4uaW5kZXgpXV0iPgogICAgICAgICAgICAgIFtbY29sdW1uLm5hbWVdXQogICAgICAgICAgICA8L3BhcGVyLWl0ZW0+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDwvcGFwZXItbGlzdGJveD4KICAgICAgPC9wYXBlci1kcm9wZG93bi1tZW51PgoKICAgICAgPCEtLSBDb2x1bW5zIHNjYWxlcyAtLT4KICAgICAgPGRpdiBjbGFzcz0iY29sdW1ucy1jb250YWluZXIiPgogICAgICAgIDwhLS0gU2NhbGUgb3B0aW9ucyBmb3IgZWFjaCBudW1lcmljIGZlYXR1cmUgLS0+CiAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20tcmVwZWF0IiBpdGVtcz0ie3tvcHRpb25zLmNvbHVtbnN9fSIgYXM9ImNvbHVtbiI+CiAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2lzTnVtZXJpY0NvbHVtbihjb2x1bW4uaW5kZXgpXV0iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2x1bW4iPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbHVtbi10aXRsZSI+W1tjb2x1bW4ubmFtZV1dPC9kaXY+CiAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxwYXBlci1yYWRpby1ncm91cAogICAgICAgICAgICAgICAgICBjbGFzcz0ic2NhbGUtcmFkaW8tZ3JvdXAiCiAgICAgICAgICAgICAgICAgIHNlbGVjdGVkPSJ7e2NvbHVtbi5zY2FsZX19IgogICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICA8cGFwZXItcmFkaW8tYnV0dG9uIG5hbWU9IkxJTkVBUiI+CiAgICAgICAgICAgICAgICAgICAgTGluZWFyCiAgICAgICAgICAgICAgICAgIDwvcGFwZXItcmFkaW8tYnV0dG9uPgogICAgICAgICAgICAgICAgICA8IS0tIFRoZSBpZCBoZXJlIGlzIHVzZWQgdG8gYWNjZXNzIHRoaXMgYnV0dG9uIGluIHVuaXQKICAgICAgICAgICAgICAgICAgICAgICB0ZXN0cy4tLT4KICAgICAgICAgICAgICAgICAgPHBhcGVyLXJhZGlvLWJ1dHRvbgogICAgICAgICAgICAgICAgICAgIGlkPSJsb2dTY2FsZUJ1dHRvbl9bW2NvbHVtbi5uYW1lXV0iCiAgICAgICAgICAgICAgICAgICAgbmFtZT0iTE9HIgogICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPSJbWyFfYWxsb3dMb2dTY2FsZShjb2x1bW4sIHNlc3Npb25Hcm91cHMuKildXSIKICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgIExvZ2FyaXRobWljCiAgICAgICAgICAgICAgICAgIDwvcGFwZXItcmFkaW8tYnV0dG9uPgogICAgICAgICAgICAgICAgICA8cGFwZXItcmFkaW8tYnV0dG9uIG5hbWU9IlFVQU5USUxFIj4KICAgICAgICAgICAgICAgICAgICBRdWFudGlsZQogICAgICAgICAgICAgICAgICA8L3BhcGVyLXJhZGlvLWJ1dHRvbj4KICAgICAgICAgICAgICAgIDwvcGFwZXItcmFkaW8tZ3JvdXA+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8L3RlbXBsYXRlPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CiAgICAgIC5jb250cm9sLXBhbmVsIHsKICAgICAgICBvdmVyZmxvdzogYXV0bzsKICAgICAgfQogICAgICAuY29sdW1uIHsKICAgICAgICBmbGV4LWdyb3c6IDE7CiAgICAgICAgZmxleC1zaHJpbms6IDE7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiA1cHg7CiAgICAgICAgYm9yZGVyOiBzb2xpZCAxcHggZGFya2dyYXk7CiAgICAgICAgcGFkZGluZzogM3B4OwogICAgICB9CiAgICAgIC5jb2x1bW4tdGl0bGUgewogICAgICAgIC8qIEZpdCBldmVyeSB0aXRsZSBpbiBvbmUgbGluZSBzbyB0aGUgcmFkaW8gYm94ZXMgYWxpZ24gdmVydGljYWxseS4gKi8KICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwogICAgICB9CiAgICAgIC5jb2x1bW5zLWNvbnRhaW5lciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93OwogICAgICB9CiAgICAgIC5zY2FsZS1yYWRpby1ncm91cCBwYXBlci1yYWRpby1idXR0b24gewogICAgICAgIHBhZGRpbmc6IDJweDsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgfQogICAgICBwYXBlci1saXN0Ym94IHsKICAgICAgICBtYXgtaGVpZ2h0OiAxNWVtOwogICAgICB9CiAgICA8L3N0eWxlPgogIGAsdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sejB0LnByb3RvdHlwZSwiY29uZmlndXJhdGlvbiIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sejB0LnByb3RvdHlwZSwic2Vzc2lvbkdyb3VwcyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdCxub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sejB0LnByb3RvdHlwZSwib3B0aW9ucyIsdm9pZCAwKSx0KFthKCJjb25maWd1cmF0aW9uLioiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLHowdC5wcm90b3R5cGUsIl9jb25maWd1cmF0aW9uQ2hhbmdlZCIsbnVsbCksdChbYSgic2Vzc2lvbkdyb3Vwcy4qIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSx6MHQucHJvdG90eXBlLCJfdW5zZWxlY3REaXNhYmxlZExvZ1NjYWxlcyIsbnVsbCksejB0PXQoW2koInRmLWhwYXJhbXMtc2NhbGUtYW5kLWNvbG9yLWNvbnRyb2xzIildLHowdCk7bGV0IEQwdD1jbGFzcyBleHRlbmRzIHdle19jbG9zZXN0T3JTZWxlY3RlZCh0LGUpe3JldHVybiBudWxsIT09dD90OmV9fTtEMHQudGVtcGxhdGU9eGVgCiAgICA8IS0tIENvbnRyb2xzIGJlaGF2aW9yIG9mIHBhcmFsbGVsIGNvb3JkaW5hdGVzIHBsb3QKICAgICAgICAgb3V0cHV0cyBzZXQgb3B0aW9ucyB0byB0aGUgX29wdGlvbnMgcHJvcGVydHkuCiAgICAgIC0tPgogICAgPGhwYXJhbXMtc3BsaXQtbGF5b3V0IG9yaWVudGF0aW9uPSJ2ZXJ0aWNhbCI+CiAgICAgIDwhLS0gVGhlIHNjYWxlIGFuZCBjb2xvciBjb250cm9scy4gLS0+CiAgICAgIDx0Zi1ocGFyYW1zLXNjYWxlLWFuZC1jb2xvci1jb250cm9scwogICAgICAgIGlkPSJjb250cm9scyIKICAgICAgICBzbG90PSJjb250ZW50IgogICAgICAgIGNsYXNzPSJzZWN0aW9uIgogICAgICAgIGNvbmZpZ3VyYXRpb249IltbY29uZmlndXJhdGlvbl1dIgogICAgICAgIHNlc3Npb24tZ3JvdXBzPSJbW3Nlc3Npb25Hcm91cHNdXSIKICAgICAgICBvcHRpb25zPSJ7e19vcHRpb25zfX0iCiAgICAgID4KICAgICAgPC90Zi1ocGFyYW1zLXNjYWxlLWFuZC1jb2xvci1jb250cm9scz4KICAgICAgPCEtLSBUaGUgYWN0dWFsIHBhcmFsbGVsIGNvb3JkaW5hdGVzIHBsb3QgLS0+CiAgICAgIDx0Zi1ocGFyYW1zLXBhcmFsbGVsLWNvb3Jkcy1wbG90CiAgICAgICAgaWQ9InBsb3QiCiAgICAgICAgc2xvdD0iY29udGVudCIKICAgICAgICBjbGFzcz0ic2VjdGlvbiIKICAgICAgICBzZXNzaW9uLWdyb3Vwcz0iW1tzZXNzaW9uR3JvdXBzXV0iCiAgICAgICAgc2VsZWN0ZWQtc2Vzc2lvbi1ncm91cD0ie3tfc2VsZWN0ZWRHcm91cH19IgogICAgICAgIGNsb3Nlc3Qtc2Vzc2lvbi1ncm91cD0ie3tfY2xvc2VzdEdyb3VwfX0iCiAgICAgICAgb3B0aW9ucz0iW1tfb3B0aW9uc11dIgogICAgICA+CiAgICAgIDwvdGYtaHBhcmFtcy1wYXJhbGxlbC1jb29yZHMtcGxvdD4KICAgICAgPHRmLWhwYXJhbXMtc2Vzc2lvbi1ncm91cC12YWx1ZXMKICAgICAgICBpZD0idmFsdWVzIgogICAgICAgIHNsb3Q9ImNvbnRlbnQiCiAgICAgICAgY2xhc3M9InNlY3Rpb24iCiAgICAgICAgdmlzaWJsZS1zY2hlbWE9IltbY29uZmlndXJhdGlvbi52aXNpYmxlU2NoZW1hXV0iCiAgICAgICAgc2Vzc2lvbi1ncm91cD0iW1tfY2xvc2VzdE9yU2VsZWN0ZWQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2Nsb3Nlc3RHcm91cCwgX3NlbGVjdGVkR3JvdXApXV0iCiAgICAgID4KICAgICAgPC90Zi1ocGFyYW1zLXNlc3Npb24tZ3JvdXAtdmFsdWVzPgogICAgICA8dGYtaHBhcmFtcy1zZXNzaW9uLWdyb3VwLWRldGFpbHMKICAgICAgICBpZD0iZGV0YWlscyIKICAgICAgICBzbG90PSJjb250ZW50IgogICAgICAgIGNsYXNzPSJzZWN0aW9uIgogICAgICAgIGJhY2tlbmQ9IltbYmFja2VuZF1dIgogICAgICAgIGV4cGVyaW1lbnQtbmFtZT0iW1tleHBlcmltZW50TmFtZV1dIgogICAgICAgIHNlc3Npb24tZ3JvdXA9IltbX3NlbGVjdGVkR3JvdXBdXSIKICAgICAgICB2aXNpYmxlLXNjaGVtYT0iW1tjb25maWd1cmF0aW9uLnZpc2libGVTY2hlbWFdXSIKICAgICAgPgogICAgICA8L3RmLWhwYXJhbXMtc2Vzc2lvbi1ncm91cC1kZXRhaWxzPgogICAgPC9ocGFyYW1zLXNwbGl0LWxheW91dD4KCiAgICA8c3R5bGU+CiAgICAgIC5zZWN0aW9uIHsKICAgICAgICBwYWRkaW5nOiAxMHB4OwogICAgICB9CiAgICAgICN2YWx1ZXMgewogICAgICAgIGhlaWdodDogMTE1cHg7CiAgICAgIH0KICAgICAgI2RldGFpbHMgewogICAgICAgIGZsZXgtZ3JvdzogMTsKICAgICAgICBtYXgtaGVpZ2h0OiBmaXQtY29udGVudDsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLEQwdC5wcm90b3R5cGUsImJhY2tlbmQiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sRDB0LnByb3RvdHlwZSwiZXhwZXJpbWVudE5hbWUiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sRDB0LnByb3RvdHlwZSwiY29uZmlndXJhdGlvbiIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sRDB0LnByb3RvdHlwZSwic2Vzc2lvbkdyb3VwcyIsdm9pZCAwKSxEMHQ9dChbaSgidGYtaHBhcmFtcy1wYXJhbGxlbC1jb29yZHMtdmlldyIpXSxEMHQpO2xldCBCMHQ9Y2xhc3MgZXh0ZW5kcyhjcih3ZSkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLnNlbGVjdGVkU2Vzc2lvbkdyb3VwPW51bGwsdGhpcy5jbG9zZXN0U2Vzc2lvbkdyb3VwPW51bGwsdGhpcy5fY29udGFpbmVyPW51bGwsdGhpcy5fc3ZnPW51bGwsdGhpcy53aWR0aD0wLHRoaXMuaGVpZ2h0PTAsdGhpcy5fYnJ1c2hlZENlbGxJbmRleD1udWxsLHRoaXMuX2JydXNoU2VsZWN0aW9uPW51bGx9cmVhZHkoKXtzdXBlci5yZWFkeSgpLHRoaXMuX2NvbnRhaW5lcj10aGlzLiQuY29udGFpbmVyLHRoaXMuX3N2Zz1EdSh0aGlzLiQuc3ZnKSx0aGlzLl9yZWRyYXcoKX1fc2Vzc2lvbkdyb3Vwc0NoYW5nZWQoKXtudWxsIT09dGhpcy5zZWxlY3RlZFNlc3Npb25Hcm91cCYmKHRoaXMuc2VsZWN0ZWRTZXNzaW9uR3JvdXA9VUp0KHRoaXMuc2Vzc2lvbkdyb3Vwcyx0aGlzLnNlbGVjdGVkU2Vzc2lvbkdyb3VwLm5hbWUpfHxudWxsKSx0aGlzLl9yZWRyYXcoKX1fdmlzaWJsZVNjaGVtYUNoYW5nZWQoKXt0aGlzLl9icnVzaGVkQ2VsbEluZGV4PW51bGwsdGhpcy5fYnJ1c2hTZWxlY3Rpb249bnVsbCx0aGlzLl9yZWRyYXcoKX1fcmVkcmF3KCl7dGhpcy5kZWJvdW5jZSgiX3JlZHJhdyIsKCgpPT57Y29uc3QgdD1RSnQ7dGhpcy53aWR0aD1NYXRoLm1heCgxNTAqdC5udW1WaXNpYmxlQ29sdW1ucyh0aGlzLnZpc2libGVTY2hlbWEpLDEyMDApLHRoaXMuaGVpZ2h0PU1hdGgubWF4KDExMi41KnQubnVtVmlzaWJsZU1ldHJpY3ModGhpcy52aXNpYmxlU2NoZW1hKSw0ODApLHRoaXMuX2NvbnRhaW5lci5zdHlsZS53aWR0aD10aGlzLndpZHRoKyJweCIsdGhpcy5fY29udGFpbmVyLnN0eWxlLmhlaWdodD10aGlzLmhlaWdodCsicHgiLHRoaXMuX3N2Zy5hdHRyKCJ3aWR0aCIsdGhpcy53aWR0aCkuYXR0cigiaGVpZ2h0Iix0aGlzLmhlaWdodCksdGhpcy5fc3ZnLnNlbGVjdEFsbCgiZyIpLnJlbW92ZSgpLHRoaXMuX2RyYXcoKX0pLDEwMCl9X2RyYXcoKXtjb25zdCB0PVFKdCxlPXRoaXM7aWYoIXRoaXMuc2Vzc2lvbkdyb3Vwc3x8MD09dGhpcy5zZXNzaW9uR3JvdXBzLmxlbmd0aHx8IXRoaXMudmlzaWJsZVNjaGVtYXx8MD09dGhpcy52aXNpYmxlU2NoZW1hLm1ldHJpY0luZm9zLmxlbmd0aClyZXR1cm47Y29uc3Qgbj1LbCh0Lm51bVZpc2libGVDb2x1bW5zKGUudmlzaWJsZVNjaGVtYSkpLGk9S2wodC5udW1WaXNpYmxlTWV0cmljcyhlLnZpc2libGVTY2hlbWEpKSxyPTgwLG89NTAsYT1YTSgpLmRvbWFpbihuKS5yYW5nZShbODUsdGhpcy53aWR0aC0xLTVdKS5wYWRkaW5nSW5uZXIoLjEpLHM9WE0oKS5kb21haW4oaSkucmFuZ2UoW3RoaXMuaGVpZ2h0LTEtNS1vLDVdKS5wYWRkaW5nSW5uZXIoLjEpLGw9YS5iYW5kd2lkdGgoKSxjPXMuYmFuZHdpZHRoKCksdT1uLm1hcCgodD0+ZS5fY2VsbFNjYWxlKHQsWzAsbC0xXSkpKSxoPWkubWFwKChuPT5lLl9jZWxsU2NhbGUobit0Lm51bVZpc2libGVIUGFyYW1zKGUudmlzaWJsZVNjaGVtYSksW2MtMSwwXSkpKSxkPXRoaXMuX3N2Zy5zZWxlY3RBbGwoIi54LWF4aXMiKS5kYXRhKG4pLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZCgieC1heGlzIiwhMCkuYXR0cigidHJhbnNmb3JtIiwoZT0+dC50cmFuc2xhdGVTdHIoYShlKSwwKSkpO2Z1bmN0aW9uIHAodCl7cmV0dXJuIngtYXhpcy1jbGlwLXBhdGgtIit0fWZ1bmN0aW9uIGYodCl7cmV0dXJuIngtbGFiZWwtY2xpcC1wYXRoLSIrdH1kLmFwcGVuZCgiY2xpcFBhdGgiKS5hdHRyKCJpZCIscCkuYXBwZW5kKCJyZWN0IikuYXR0cigieCIsLTUpLmF0dHIoInkiLDApLmF0dHIoIndpZHRoIixsKzEwKS5hdHRyKCJoZWlnaHQiLGUuaGVpZ2h0LTI1KSxkLmFwcGVuZCgiY2xpcFBhdGgiKS5hdHRyKCJpZCIsZikuYXBwZW5kKCJyZWN0IikuYXR0cigieCIsMCkuYXR0cigieSIsZS5oZWlnaHQtMjUpLmF0dHIoIndpZHRoIixsKS5hdHRyKCJoZWlnaHQiLDI1KSxkLmFwcGVuZCgiZyIpLmF0dHIoImNsaXAtcGF0aCIsKHQ9PiJ1cmwoIyIrcCh0KSsiKSIpKS5lYWNoKChmdW5jdGlvbih0KXtEdSh0aGlzKS5jYWxsKHksdmModVt0XSkudGlja1NpemUoZS5oZWlnaHQtbyksbCw0MCxlLm9wdGlvbnMuY29sdW1uc1t0XS5zY2FsZSl9KSksZC5hcHBlbmQoImciKS5jbGFzc2VkKCJ4LWF4aXMtbGFiZWwiLCEwKS5hdHRyKCJjbGlwLXBhdGgiLCh0PT4idXJsKCMiK2YodCkrIikiKSkuYXBwZW5kKCJ0ZXh0IikuYXR0cigidGV4dC1hbmNob3IiLCJtaWRkbGUiKS5hdHRyKCJ4IixsLzIpLmF0dHIoInkiLGUuaGVpZ2h0LTEtMTIuNSkudGV4dCgobj0+dC5zY2hlbWFWaXNpYmxlQ29sdW1uTmFtZShlLnZpc2libGVTY2hlbWEsbikpKS5hcHBlbmQoInRpdGxlIikudGV4dCgobj0+dC5zY2hlbWFWaXNpYmxlQ29sdW1uTmFtZShlLnZpc2libGVTY2hlbWEsbikpKTtjb25zdCBtPXRoaXMuX3N2Zy5zZWxlY3RBbGwoIi55LWF4aXMiKS5kYXRhKGkpLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZCgieS1heGlzIiwhMCkuYXR0cigidHJhbnNmb3JtIiwobj0+dC50cmFuc2xhdGVTdHIoZS53aWR0aC0xLHMobikpKSk7ZnVuY3Rpb24gZyh0KXtyZXR1cm4ieS1heGlzLWNsaXAtcGF0aC0iK3R9ZnVuY3Rpb24gXyh0KXtyZXR1cm4ieS1sYWJlbC1jbGlwLXBhdGgtIit0fWZ1bmN0aW9uIHkodCxlLG4saSxyKXtjb25zdCBvPU1hdGguZmxvb3Iobi9pKSxhPWUuc2NhbGUoKTtpZigiUVVBTlRJTEUiPT09cil7bGV0IHQ9YS5xdWFudGlsZXMoKTtjb25zdCBuPU1hdGguY2VpbCh0Lmxlbmd0aC9vKTt0PUtsKDAsdC5sZW5ndGgsbikubWFwKChlPT50W2VdKSksZS50aWNrVmFsdWVzKHQpLnRpY2tGb3JtYXQoRHkoIi0uMmciKSl9IkxJTkVBUiIhPT1yJiYiTE9HIiE9PXJ8fGUudGlja3MobyksdC5jYWxsKGUpLHQuc2VsZWN0QWxsKCIuZG9tYWluIikucmVtb3ZlKCksdC5zZWxlY3RBbGwoIi50aWNrIGxpbmUiKS5hdHRyKCJzdHJva2UiLCIjZGRkIil9bS5hcHBlbmQoImNsaXBQYXRoIikuYXR0cigiaWQiLGcpLmFwcGVuZCgicmVjdCIpLmF0dHIoIngiLC0oZS53aWR0aC00MC0xKSkuYXR0cigieSIsLTUpLmF0dHIoIndpZHRoIixlLndpZHRoLTQwKS5hdHRyKCJoZWlnaHQiLGMrMTApLG0uYXBwZW5kKCJjbGlwUGF0aCIpLmF0dHIoImlkIixfKS5hcHBlbmQoInJlY3QiKS5hdHRyKCJ4IiwtKGUud2lkdGgtMSkpLmF0dHIoInkiLDApLmF0dHIoIndpZHRoIiw0MCkuYXR0cigiaGVpZ2h0IixjKSxtLmFwcGVuZCgiZyIpLmF0dHIoImNsaXAtcGF0aCIsKHQ9PiJ1cmwoIyIrZyh0KSsiKSIpKS5lYWNoKChmdW5jdGlvbihuKXtEdSh0aGlzKS5jYWxsKHksYmMoaFtuXSkudGlja1NpemUoZS53aWR0aC1yKSxjLDIwLGUub3B0aW9ucy5jb2x1bW5zW24rdC5udW1WaXNpYmxlSFBhcmFtcyhlLnZpc2libGVTY2hlbWEpXS5zY2FsZSl9KSksbS5hcHBlbmQoImciKS5jbGFzc2VkKCJ5LWF4aXMtbGFiZWwiLCEwKS5hdHRyKCJjbGlwLXBhdGgiLCh0PT4idXJsKCMiK18odCkrIikiKSkuYXBwZW5kKCJ0ZXh0IikuYXR0cigidGV4dC1hbmNob3IiLCJtaWRkbGUiKS5hdHRyKCJ4IiwtKGUud2lkdGgtMjAtMSkpLmF0dHIoInkiLGMvMikuYXR0cigidHJhbnNmb3JtIix0LnJvdGF0ZVN0cig5MCwtKGUud2lkdGgtMjAtMSksYy8yKSkudGV4dCgobj0+dC5tZXRyaWNOYW1lKGUudmlzaWJsZVNjaGVtYS5tZXRyaWNJbmZvc1tuXSkpKS5hcHBlbmQoInRpdGxlIikudGV4dCgobj0+dC5tZXRyaWNOYW1lKGUudmlzaWJsZVNjaGVtYS5tZXRyaWNJbmZvc1tuXSkpKTtjb25zdCB2PXRoaXMuX3N2Zy5zZWxlY3RBbGwoIi5jZWxsIikuZGF0YShGbChuLGkpKS5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQoImNlbGwiLCEwKS5hdHRyKCJ0cmFuc2Zvcm0iLCgoW2Usbl0pPT50LnRyYW5zbGF0ZVN0cihhKGUpLHMobikpKSk7di5hcHBlbmQoImciKS5jbGFzc2VkKCJmcmFtZSIsITApLmFwcGVuZCgicmVjdCIpLmF0dHIoIngiLC01KS5hdHRyKCJ5IiwtNSkuYXR0cigid2lkdGgiLGwrMTApLmF0dHIoImhlaWdodCIsYysxMCkuYXR0cigic3Ryb2tlIiwiIzAwMCIpLmF0dHIoImZpbGwiLCJub25lIikuYXR0cigic2hhcGUtcmVuZGVyaW5nIiwiY3Jpc3BFZGdlcyIpO2xldCBiPW51bGw7dm9pZCAwIT09ZS5vcHRpb25zLmNvbG9yQnlDb2x1bW5JbmRleCYmKGI9Y0UoKS5kb21haW4odGhpcy5fY29sRXh0ZW50KHRoaXMub3B0aW9ucy5jb2xvckJ5Q29sdW1uSW5kZXgpKS5yYW5nZShbdGhpcy5vcHRpb25zLm1pbkNvbG9yLHRoaXMub3B0aW9ucy5tYXhDb2xvcl0pLmludGVycG9sYXRlKGtwKSk7Y29uc3QgeD12b2lkIDA9PT1lLm9wdGlvbnMuY29sb3JCeUNvbHVtbkluZGV4PygpPT4icmVkIjooe3Nlc3Npb25Hcm91cDp0fSk9PmIodGhpcy5fY29sVmFsdWUodCxlLm9wdGlvbnMuY29sb3JCeUNvbHVtbkluZGV4KSk7ZnVuY3Rpb24gdyh0LG4pe3JldHVybiB1W25dKGUuX2NvbFZhbHVlKHQsbikpfWZ1bmN0aW9uIFModCxuKXtyZXR1cm4gaFtuXShlLl9tZXRyaWNWYWx1ZSh0LG4pKX1jb25zdFtNLEUsVF09KGZ1bmN0aW9uIEModCxyKXtjb25zdCBvPXQuc2VsZWN0QWxsKCIuZGF0YS1tYXJrZXIiKS5kYXRhKCgoW3Qsbl0pPT5lLnNlc3Npb25Hcm91cHMuZmlsdGVyKChpPT52b2lkIDAhPT1lLl9jb2xWYWx1ZShpLHQpJiZ2b2lkIDAhPT1lLl9tZXRyaWNWYWx1ZShpLG4pKSkubWFwKChlPT4oe2NvbDp0LG1ldHJpYzpuLHNlc3Npb25Hcm91cDplLHg6dyhlLHQpLHk6UyhlLG4pLHNlc3Npb25Hcm91cE1hcmtlcnM6bnVsbH0pKSkpKS5lbnRlcigpLmFwcGVuZCgiY2lyY2xlIikuY2xhc3NlZCgiZGF0YS1tYXJrZXIiLCEwKS5hdHRyKCJjeCIsKCh7eDp0fSk9PnQpKS5hdHRyKCJjeSIsKCh7eTp0fSk9PnQpKS5hdHRyKCJyIiwyKS5hdHRyKCJmaWxsIixyKSxhPW5ldyBNYXA7ZS5zZXNzaW9uR3JvdXBzLmZvckVhY2goKHQ9PnthLnNldCh0LFtdKX0pKSxvLmVhY2goKGZ1bmN0aW9uKHQpe2EuZ2V0KHQuc2Vzc2lvbkdyb3VwKS5wdXNoKHRoaXMpfSkpLG8uZWFjaCgodD0+e2NvbnN0IGU9YS5nZXQodC5zZXNzaW9uR3JvdXApO3Quc2Vzc2lvbkdyb3VwTWFya2Vycz1uZXcgU2V0KGUpfSkpO2NvbnN0IHM9bi5tYXAoKHQ9PmkubWFwKChlPT5vLmZpbHRlcigobj0+bi5jb2w9PXQmJm4ubWV0cmljPT1lKSkpKSkpO3JldHVybltvLHMsYV19KSh2LmFwcGVuZCgiZyIpLHgpO2NvbnN0IEE9bi5tYXAoKHQ9PmkubWFwKChlPT4oZnVuY3Rpb24gbih0LGUpe2NvbnN0IG49W107cmV0dXJuIEVbdF1bZV0uZWFjaCgoZnVuY3Rpb24oKXtuLnB1c2godGhpcyl9KSksdHkoKS54KCh0PT5EdSh0KS5kYXR1bSgpLngpKS55KCh0PT5EdSh0KS5kYXR1bSgpLnkpKS5hZGRBbGwobil9KSh0LGUpKSkpKTtsZXQgaz1udWxsO1IoKSYmKGs9di5maWx0ZXIoKHQ9PkNlLmV4cG9ydHMuaXNFcXVhbCh0LGUuX2JydXNoZWRDZWxsSW5kZXgpKSksY29uc29sZS5hc3NlcnQoMT09ay5zaXplKCksaykpO2xldCBMPW5ldyBTZXQoTS5ub2RlcygpKTtmdW5jdGlvbiBQKCl7bGV0IG49bmV3IFNldChNLm5vZGVzKCkpOyhmdW5jdGlvbiBpKCl7cmV0dXJuIVIoKXx8ZS5fYnJ1c2hTZWxlY3Rpb25bMF1bMF09PT1lLl9icnVzaFNlbGVjdGlvblsxXVswXXx8ZS5fYnJ1c2hTZWxlY3Rpb25bMF1bMV09PT1lLl9icnVzaFNlbGVjdGlvblsxXVsxXX0pKCl8fChuPShmdW5jdGlvbiByKGUsbil7Y29uc29sZS5hc3NlcnQobnVsbCE9PWUpLGNvbnNvbGUuYXNzZXJ0KG51bGwhPT1uKTtjb25zdFtpLHJdPWUsbz1uZXcgU2V0O3JldHVybiB0LnF1YWRUcmVlVmlzaXRQb2ludHNJblJlY3QoQVtpXVtyXSxuWzBdWzBdLG5bMF1bMV0sblsxXVswXSxuWzFdWzFdLCh0PT57RHUodCkuZGF0dW0oKS5zZXNzaW9uR3JvdXBNYXJrZXJzLmZvckVhY2goKHQ9PntvLmFkZCh0KX0pKX0pKSxvfSkoZS5fYnJ1c2hlZENlbGxJbmRleCxlLl9icnVzaFNlbGVjdGlvbikpLHhoKEFycmF5LmZyb20odC5maWx0ZXJTZXQobiwodD0+IUwuaGFzKHQpKSkpKS5hdHRyKCJmaWxsIix4KSx4aChBcnJheS5mcm9tKHQuZmlsdGVyU2V0KEwsKHQ9PiFuLmhhcyh0KSkpKSkuYXR0cigiZmlsbCIsIiNkZGQiKSxMPW59UCgpO2NvbnN0IE49dmcoKS5leHRlbnQoW1stNCwtNF0sW2wtMSs1LTEsYy0xKzUtMV1dKS5vbigic3RhcnQiLChmdW5jdGlvbigpe1IoKSYmay5ub2RlKCkhPXRoaXMmJk4ubW92ZShrLG51bGwpLEkodGhpcyl9KSkub24oImJydXNoIiwoZnVuY3Rpb24oKXtJKHRoaXMpfSkpLm9uKCJlbmQiLChmdW5jdGlvbigpe0kodGhpcyl9KSk7ZnVuY3Rpb24gSSh0KXtjb25zdCBuPV9nKHQpOyFSKCkmJm51bGw9PT1ufHxSKCkmJnQ9PT1rLm5vZGUoKSYmQ2UuZXhwb3J0cy5pc0VxdWFsKG4sZS5fYnJ1c2hTZWxlY3Rpb24pfHwoZS5fYnJ1c2hTZWxlY3Rpb249bixudWxsIT09bj8oaz1EdSh0KSxlLl9icnVzaGVkQ2VsbEluZGV4PWsuZGF0dW0oKSk6KGs9bnVsbCxlLl9icnVzaGVkQ2VsbEluZGV4PW51bGwpLFAoKSl9ZnVuY3Rpb24gUigpe3JldHVybiBudWxsIT09ZS5fYnJ1c2hlZENlbGxJbmRleCYmbnVsbCE9PWUuX2JydXNoU2VsZWN0aW9ufXYuY2FsbChOKSxSKCkmJk4ubW92ZShrLGUuX2JydXNoU2VsZWN0aW9uKTtsZXQgTz1udWxsLHo9bnVsbDtudWxsIT09dGhpcy5zZWxlY3RlZFNlc3Npb25Hcm91cCYmKHo9eGgoVC5nZXQodGhpcy5zZWxlY3RlZFNlc3Npb25Hcm91cCkpLmNsYXNzZWQoInNlbGVjdGVkLW1hcmtlciIsITApKSx2Lm9uKCJjbGljayIsKGZ1bmN0aW9uKCl7Y29uc3QgdD1PPT09ej9udWxsOk87aWYodD09PXopcmV0dXJuO251bGwhPT16JiZ6LmNsYXNzZWQoInNlbGVjdGVkLW1hcmtlciIsITEpLHo9dCxudWxsIT09eiYmei5jbGFzc2VkKCJzZWxlY3RlZC1tYXJrZXIiLCEwKTtjb25zdCBuPW51bGw9PT16P251bGw6ei5kYXR1bSgpLnNlc3Npb25Hcm91cDtlLnNlbGVjdGVkU2Vzc2lvbkdyb3VwPW59KSkub24oIm1vdXNlbW92ZSBtb3VzZWVudGVyIiwoZnVuY3Rpb24oW24saV0pe2NvbnN0W3Isb109YmgodGhpcyksYT0oZnVuY3Rpb24gcyhlLG4saSxyLG8pe2xldCBhPTEvMCxzPW51bGw7aWYodC5xdWFkVHJlZVZpc2l0UG9pbnRzSW5EaXNrKEFbZV1bbl0saSxyLG8sKCh0LGUpPT57aWYoTC5oYXModCkmJmU8YSl7Y29uc3Qgbj1EdSh0KS5kYXR1bSgpO2E9ZSxzPW4uc2Vzc2lvbkdyb3VwfX0pKSxudWxsPT09cylyZXR1cm4gbnVsbDtyZXR1cm4geGgoVC5nZXQocykpfSkobixpLHIsbywyMCk7TyE9PWEmJihudWxsIT09TyYmTy5jbGFzc2VkKCJjbG9zZXN0LW1hcmtlciIsITEpLE89YSxudWxsIT09Tz8oTy5jbGFzc2VkKCJjbG9zZXN0LW1hcmtlciIsITApLGUuY2xvc2VzdFNlc3Npb25Hcm91cD1PLmRhdHVtKCkuc2Vzc2lvbkdyb3VwKTplLmNsb3Nlc3RTZXNzaW9uR3JvdXA9bnVsbCl9KSkub24oIm1vdXNlbGVhdmUiLChmdW5jdGlvbihbdCxuXSl7bnVsbCE9PU8mJihPLmNsYXNzZWQoImNsb3Nlc3QtbWFya2VyIiwhMSksTz1udWxsLGUuY2xvc2VzdFNlc3Npb25Hcm91cD1udWxsKX0pKSx0aGlzLl9zdmcuc2VsZWN0QWxsKCIqIikuY2xhc3NlZCgidGYtaHBhcmFtcy1zY2F0dGVyLXBsb3QtbWF0cml4LXBsb3QiLCEwKX1fY2VsbFNjYWxlKHQsZSl7Y29uc3Qgbj10aGlzLl9jb2xFeHRlbnQodCksaT1jRSgpLmRvbWFpbihuKS5yYW5nZShlKTtpZigiTElORUFSIj09PXRoaXMub3B0aW9ucy5jb2x1bW5zW3RdLnNjYWxlKXJldHVybiBpO2lmKCJMT0ciPT09dGhpcy5vcHRpb25zLmNvbHVtbnNbdF0uc2NhbGUpcmV0dXJuIG5bMF08PTAmJm5bMV0+PTA/aTp5RSgpLmRvbWFpbihuKS5yYW5nZShlKTtpZigiUVVBTlRJTEUiPT09dGhpcy5vcHRpb25zLmNvbHVtbnNbdF0uc2NhbGUpe2NvbnN0IG49KGVbMV0tZVswXSkvMTksaT1LbCgyMCkubWFwKCh0PT5lWzBdK24qdCkpO3JldHVybiBDRSgpLmRvbWFpbihDZS5leHBvcnRzLnVuaXEodGhpcy5zZXNzaW9uR3JvdXBzLm1hcCgoZT0+dGhpcy5fY29sVmFsdWUoZSx0KSkpKSkucmFuZ2UoaSl9aWYoIk5PTl9OVU1FUklDIj09PXRoaXMub3B0aW9ucy5jb2x1bW5zW3RdLnNjYWxlKXJldHVybiBLTSgpLmRvbWFpbihDZS5leHBvcnRzLnVuaXEodGhpcy5zZXNzaW9uR3JvdXBzLm1hcCgoZT0+dGhpcy5fY29sVmFsdWUoZSx0KSkpLnNvcnQoKSkpLnJhbmdlKGUpLnBhZGRpbmcoLjEpO3Rocm93IlVua25vd24gc2NhbGUgZm9yIGNvbHVtbjogIit0KyIuIG9wdGlvbnM6ICIrdGhpcy5vcHRpb25zfV9jb2xWYWx1ZSh0LGUpe3JldHVybiBXSnQodGhpcy52aXNpYmxlU2NoZW1hLHQsZSl9X21ldHJpY1ZhbHVlKHQsZSl7cmV0dXJuIEdKdCh0aGlzLnZpc2libGVTY2hlbWEsdCxlKX1fY29sRXh0ZW50KHQpe3JldHVybiBWSnQodGhpcy52aXNpYmxlU2NoZW1hLHRoaXMuc2Vzc2lvbkdyb3Vwcyx0KX19O0IwdC50ZW1wbGF0ZT14ZWAKICAgIDxkaXYgaWQ9ImNvbnRhaW5lciI+CiAgICAgIDxzdmcgaWQ9InN2ZyI+PC9zdmc+CiAgICA8L2Rpdj4KCiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgfQogICAgICBzdmcgewogICAgICAgIGZvbnQ6IDEwcHggc2Fucy1zZXJpZjsKICAgICAgfQoKICAgICAgdGV4dCB7CiAgICAgICAgZmlsbDogY3VycmVudENvbG9yOwogICAgICB9CgogICAgICAuZnJhbWUgcmVjdCB7CiAgICAgICAgc3Ryb2tlOiBjdXJyZW50Q29sb3I7CiAgICAgIH0KCiAgICAgIC8qIFRoZSBjbG9zZXN0IGRhdGEgcG9pbnQgbWFya2VyIHRvIHRoZSBtb3VzZSBwb2ludGVyLiBXZSB1c2UgIWltcG9ydGFudAogICAgICAgICB0byBvdmVycmlkZSB0aGUgaW5saW5lIHN0eWxlIHRoYXQgc2V0cyB0aGUgcmVndWxhciBzdHlsZSBvZiBhIG1hcmtlci4KICAgICAgKi8KICAgICAgLmNsb3Nlc3QtbWFya2VyIHsKICAgICAgICByOiA2ICFpbXBvcnRhbnQ7CiAgICAgIH0KCiAgICAgIC8qIFRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgZGF0YSBwb2ludCBtYXJrZXIuIFdlIHVzZSAhaW1wb3J0YW50IHRvCiAgICAgICAgIG92ZXJyaWRlIHRoZSBpbmxpbmUgc3R5bGUgdGhhdCBzZXRzIHRoZSByZWd1bGFyIHN0eWxlIG9mIGEgbWFya2VyLiAqLwogICAgICAuc2VsZWN0ZWQtbWFya2VyIHsKICAgICAgICByOiA2ICFpbXBvcnRhbnQ7CiAgICAgICAgZmlsbDogIzBmMCAhaW1wb3J0YW50OwogICAgICB9CiAgICA8L3N0eWxlPgogIGAsdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sQjB0LnByb3RvdHlwZSwidmlzaWJsZVNjaGVtYSIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sQjB0LnByb3RvdHlwZSwic2Vzc2lvbkdyb3VwcyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxCMHQucHJvdG90eXBlLCJvcHRpb25zIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0LG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxCMHQucHJvdG90eXBlLCJzZWxlY3RlZFNlc3Npb25Hcm91cCIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdCxub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sQjB0LnByb3RvdHlwZSwiY2xvc2VzdFNlc3Npb25Hcm91cCIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixIVE1MRWxlbWVudCldLEIwdC5wcm90b3R5cGUsIl9jb250YWluZXIiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sQjB0LnByb3RvdHlwZSwiX3N2ZyIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxCMHQucHJvdG90eXBlLCJ3aWR0aCIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxCMHQucHJvdG90eXBlLCJoZWlnaHQiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sQjB0LnByb3RvdHlwZSwiX2JydXNoZWRDZWxsSW5kZXgiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sQjB0LnByb3RvdHlwZSwiX2JydXNoU2VsZWN0aW9uIix2b2lkIDApLHQoW2EoInNlc3Npb25Hcm91cHMuKiIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sQjB0LnByb3RvdHlwZSwiX3Nlc3Npb25Hcm91cHNDaGFuZ2VkIixudWxsKSx0KFthKCJ2aXNpYmxlU2NoZW1hLioiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLEIwdC5wcm90b3R5cGUsIl92aXNpYmxlU2NoZW1hQ2hhbmdlZCIsbnVsbCksdChbYSgib3B0aW9ucy4qIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxCMHQucHJvdG90eXBlLCJfcmVkcmF3IixudWxsKSxCMHQ9dChbaSgidGYtaHBhcmFtcy1zY2F0dGVyLXBsb3QtbWF0cml4LXBsb3QiKV0sQjB0KTtsZXQgSDB0PWNsYXNzIGV4dGVuZHMgd2V7X2Nsb3Nlc3RPclNlbGVjdGVkKHQsZSl7cmV0dXJuIG51bGwhPT10P3Q6ZX19O0gwdC50ZW1wbGF0ZT14ZWAKICAgIDxocGFyYW1zLXNwbGl0LWxheW91dCBvcmllbnRhdGlvbj0idmVydGljYWwiPgogICAgICA8IS0tIENvbnRyb2xzIGJlaGF2aW9yIG9mIHRoZSBzY2F0dGVyIHBsb3QgbWF0cml4CiAgICAgICAgICAgICBvdXRwdXRzIHRoZSBjb25maWd1cmVkIG9wdGlvbnMgdG8gdGhlIF9vcHRpb25zIHByb3BlcnR5LiAtLT4KICAgICAgPHRmLWhwYXJhbXMtc2NhbGUtYW5kLWNvbG9yLWNvbnRyb2xzCiAgICAgICAgc2xvdD0iY29udGVudCIKICAgICAgICBjbGFzcz0ic2VjdGlvbiIKICAgICAgICBpZD0iY29udHJvbHMiCiAgICAgICAgY29uZmlndXJhdGlvbj0iW1tjb25maWd1cmF0aW9uXV0iCiAgICAgICAgc2Vzc2lvbi1ncm91cHM9Iltbc2Vzc2lvbkdyb3Vwc11dIgogICAgICAgIG9wdGlvbnM9Int7X29wdGlvbnN9fSIKICAgICAgPgogICAgICA8L3RmLWhwYXJhbXMtc2NhbGUtYW5kLWNvbG9yLWNvbnRyb2xzPgogICAgICA8IS0tIFRoZSBhY3R1YWwgc2NhdHRlciBwbG90IG1hdHJpeCAtLT4KICAgICAgPHRmLWhwYXJhbXMtc2NhdHRlci1wbG90LW1hdHJpeC1wbG90CiAgICAgICAgc2xvdD0iY29udGVudCIKICAgICAgICBjbGFzcz0ic2VjdGlvbiIKICAgICAgICBpZD0icGxvdCIKICAgICAgICB2aXNpYmxlLXNjaGVtYT0iW1tjb25maWd1cmF0aW9uLnZpc2libGVTY2hlbWFdXSIKICAgICAgICBzZXNzaW9uLWdyb3Vwcz0iW1tzZXNzaW9uR3JvdXBzXV0iCiAgICAgICAgc2VsZWN0ZWQtc2Vzc2lvbi1ncm91cD0ie3tfc2VsZWN0ZWRHcm91cH19IgogICAgICAgIGNsb3Nlc3Qtc2Vzc2lvbi1ncm91cD0ie3tfY2xvc2VzdEdyb3VwfX0iCiAgICAgICAgb3B0aW9ucz0iW1tfb3B0aW9uc11dIgogICAgICA+CiAgICAgIDwvdGYtaHBhcmFtcy1zY2F0dGVyLXBsb3QtbWF0cml4LXBsb3Q+CiAgICAgIDx0Zi1ocGFyYW1zLXNlc3Npb24tZ3JvdXAtdmFsdWVzCiAgICAgICAgc2xvdD0iY29udGVudCIKICAgICAgICBjbGFzcz0ic2VjdGlvbiIKICAgICAgICBpZD0idmFsdWVzIgogICAgICAgIHZpc2libGUtc2NoZW1hPSJbW2NvbmZpZ3VyYXRpb24udmlzaWJsZVNjaGVtYV1dIgogICAgICAgIHNlc3Npb24tZ3JvdXA9IltbX2Nsb3Nlc3RPclNlbGVjdGVkKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfY2xvc2VzdEdyb3VwLCBfc2VsZWN0ZWRHcm91cCldXSIKICAgICAgPgogICAgICA8L3RmLWhwYXJhbXMtc2Vzc2lvbi1ncm91cC12YWx1ZXM+CiAgICAgIDwhLS0gU2hvd3Mgc2Vzc2lvbiBncm91cCBkZXRhaWxzIGZvciB0aGUgY2xpY2tlZCBtYXJrZXIuIC0tPgogICAgICA8dGYtaHBhcmFtcy1zZXNzaW9uLWdyb3VwLWRldGFpbHMKICAgICAgICBzbG90PSJjb250ZW50IgogICAgICAgIGNsYXNzPSJzZWN0aW9uIgogICAgICAgIGlkPSJkZXRhaWxzIgogICAgICAgIGJhY2tlbmQ9IltbYmFja2VuZF1dIgogICAgICAgIGV4cGVyaW1lbnQtbmFtZT0iW1tleHBlcmltZW50TmFtZV1dIgogICAgICAgIHNlc3Npb24tZ3JvdXA9IltbX3NlbGVjdGVkR3JvdXBdXSIKICAgICAgICB2aXNpYmxlLXNjaGVtYT0iW1tjb25maWd1cmF0aW9uLnZpc2libGVTY2hlbWFdXSIKICAgICAgPgogICAgICA8L3RmLWhwYXJhbXMtc2Vzc2lvbi1ncm91cC1kZXRhaWxzPgogICAgPC9ocGFyYW1zLXNwbGl0LWxheW91dD4KICAgIDxzdHlsZT4KICAgICAgLnNlY3Rpb24gewogICAgICAgIHBhZGRpbmc6IDEwcHg7CiAgICAgIH0KICAgICAgI2NvbnRyb2xzIHsKICAgICAgICBmbGV4LWdyb3c6IDA7CiAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgICAgZmxleC1iYXNpczogYXV0bzsKICAgICAgICBoZWlnaHQ6IGF1dG87CiAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKICAgICAgICBtYXgtaGVpZ2h0OiBmaXQtY29udGVudDsKICAgICAgfQogICAgICAjcGxvdCB7CiAgICAgICAgZmxleC1ncm93OiAxOwogICAgICAgIGZsZXgtc2hyaW5rOiAxOwogICAgICAgIGZsZXgtYmFzaXM6IGF1dG87CiAgICAgICAgaGVpZ2h0OiBhdXRvOwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgICAgbWF4LWhlaWdodDogZml0LWNvbnRlbnQ7CiAgICAgIH0KICAgICAgI3ZhbHVlcyB7CiAgICAgICAgZmxleC1ncm93OiAwOwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICAgIGZsZXgtYmFzaXM6IGF1dG87CiAgICAgICAgaGVpZ2h0OiAxMTVweDsKICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgICAgIG1heC1oZWlnaHQ6IGZpdC1jb250ZW50OwogICAgICB9CiAgICAgICNkZXRhaWxzIHsKICAgICAgICBmbGV4LWdyb3c6IDA7CiAgICAgICAgZmxleC1zaHJpbms6IDE7CiAgICAgICAgZmxleC1iYXNpczogYXV0bzsKICAgICAgICBoZWlnaHQ6IGF1dG87CiAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKICAgICAgICBtYXgtaGVpZ2h0OiBmaXQtY29udGVudDsKICAgICAgfQogICAgICB2YWFkaW4tc3BsaXQtbGF5b3V0IHsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYCx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxIMHQucHJvdG90eXBlLCJiYWNrZW5kIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLEgwdC5wcm90b3R5cGUsImV4cGVyaW1lbnROYW1lIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLEgwdC5wcm90b3R5cGUsImNvbmZpZ3VyYXRpb24iLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheX0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLEgwdC5wcm90b3R5cGUsInNlc3Npb25Hcm91cHMiLHZvaWQgMCksSDB0PXQoW2koInRmLWhwYXJhbXMtc2NhdHRlci1wbG90LW1hdHJpeC12aWV3IildLEgwdCk7bGV0IEYwdD1jbGFzcyBleHRlbmRzIHdle2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9zZWxlY3RlZFRhYj0wfX07RjB0LnRlbXBsYXRlPXhlYAogICAgPHBhcGVyLWhlYWRlci1wYW5lbD4KICAgICAgPHBhcGVyLXRvb2xiYXIgc2xvdD0iaGVhZGVyIiBjbGFzcz0idGFiLWJhciI+CiAgICAgICAgPHBhcGVyLXRhYnMgc2VsZWN0ZWQ9Int7X3NlbGVjdGVkVGFifX0iIHNsb3Q9InRvcCI+CiAgICAgICAgICA8IS0tIHZpZXctaWQgY2FuIGJlIHVzZWQgYnkgaW50ZWdyYXRpb24gdGVzdHMgdG8gbG9jYXRlIGEgdGFiLgogICAgICAgICAgICAgICBJdCBzaG91bGQgYmUgdGhlIG5hbWUgb2YgdGhlIHJvb3QgZWxlbWVudCBpbXBsZW1lbnRpbmcgdGhlIHZpZXcKICAgICAgICAgICAgICAgd2l0aG91dCB0aGUgJ3RmLWhwYXJhbXMtJyBwcmVmaXguIC0tPgogICAgICAgICAgPHBhcGVyLXRhYiB2aWV3LWlkPSJ0YWJsZS12aWV3Ij4gVEFCTEUgVklFVyA8L3BhcGVyLXRhYj4KICAgICAgICAgIDxwYXBlci10YWIgdmlldy1pZD0icGFyYWxsZWwtY29vcmRzLXZpZXciPgogICAgICAgICAgICBQQVJBTExFTCBDT09SRElOQVRFUyBWSUVXCiAgICAgICAgICA8L3BhcGVyLXRhYj4KICAgICAgICAgIDxwYXBlci10YWIgdmlldy1pZD0ic2NhdHRlci1wbG90LW1hdHJpeC12aWV3Ij4KICAgICAgICAgICAgU0NBVFRFUiBQTE9UIE1BVFJJWCBWSUVXCiAgICAgICAgICA8L3BhcGVyLXRhYj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImhlbHAtYW5kLWZlZWRiYWNrIj4KICAgICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW2J1Z1JlcG9ydFVybF1dIj4KICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgaHJlZiQ9IltbYnVnUmVwb3J0VXJsXV0iCiAgICAgICAgICAgICAgICB0YXJnZXQ9Il9ibGFuayIKICAgICAgICAgICAgICAgIHJlbD0ibm9vcGVuZXIgbm9yZWZlcnJlciIKICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICA8cGFwZXItYnV0dG9uCiAgICAgICAgICAgICAgICAgIGlkPSJidWctcmVwb3J0IgogICAgICAgICAgICAgICAgICByYWlzZWQKICAgICAgICAgICAgICAgICAgdGl0bGU9IlNlbmQgYSBidWcgcmVwb3J0IG9yIGZlYXR1cmUgcmVxdWVzdCIKICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgQnVnIFJlcG9ydCAvIEZlYXR1cmUgUmVxdWVzdAogICAgICAgICAgICAgICAgPC9wYXBlci1idXR0b24+CiAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbaGVscFVybF1dIj4KICAgICAgICAgICAgICA8YSBocmVmJD0iW1toZWxwVXJsXV0iIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVyIG5vcmVmZXJyZXIiPgogICAgICAgICAgICAgICAgPHBhcGVyLWljb24tYnV0dG9uCiAgICAgICAgICAgICAgICAgIGljb249ImhlbHAtb3V0bGluZSIKICAgICAgICAgICAgICAgICAgdGl0bGU9IlZpZXcgZG9jdW1lbnRhdGlvbiIKICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgIDwvcGFwZXItaWNvbi1idXR0b24+CiAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9wYXBlci10YWJzPgogICAgICA8L3BhcGVyLXRvb2xiYXI+CiAgICAgIDxpcm9uLXBhZ2VzIHNlbGVjdGVkPSJbW19zZWxlY3RlZFRhYl1dIiBjbGFzcz0iZml0IHRhYi12aWV3Ij4KICAgICAgICA8ZGl2IGlkPSIwIiBjbGFzcz0idGFiIj4KICAgICAgICAgIDx0Zi1ocGFyYW1zLXRhYmxlLXZpZXcKICAgICAgICAgICAgYmFja2VuZD0iW1tiYWNrZW5kXV0iCiAgICAgICAgICAgIGV4cGVyaW1lbnQtbmFtZT0iW1tleHBlcmltZW50TmFtZV1dIgogICAgICAgICAgICB2aXNpYmxlLXNjaGVtYT0iW1tjb25maWd1cmF0aW9uLnZpc2libGVTY2hlbWFdXSIKICAgICAgICAgICAgc2Vzc2lvbi1ncm91cHM9Iltbc2Vzc2lvbkdyb3Vwc11dIgogICAgICAgICAgICBlbmFibGUtc2hvdy1tZXRyaWNzCiAgICAgICAgICA+CiAgICAgICAgICA8L3RmLWhwYXJhbXMtdGFibGUtdmlldz4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGlkPSIxIiBjbGFzcz0idGFiIj4KICAgICAgICAgIDx0Zi1ocGFyYW1zLXBhcmFsbGVsLWNvb3Jkcy12aWV3CiAgICAgICAgICAgIGJhY2tlbmQ9IltbYmFja2VuZF1dIgogICAgICAgICAgICBleHBlcmltZW50LW5hbWU9IltbZXhwZXJpbWVudE5hbWVdXSIKICAgICAgICAgICAgY29uZmlndXJhdGlvbj0iW1tjb25maWd1cmF0aW9uXV0iCiAgICAgICAgICAgIHNlc3Npb24tZ3JvdXBzPSJbW3Nlc3Npb25Hcm91cHNdXSIKICAgICAgICAgID4KICAgICAgICAgIDwvdGYtaHBhcmFtcy1wYXJhbGxlbC1jb29yZHMtdmlldz4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGlkPSIyIiBjbGFzcz0idGFiIj4KICAgICAgICAgIDx0Zi1ocGFyYW1zLXNjYXR0ZXItcGxvdC1tYXRyaXgtdmlldwogICAgICAgICAgICBiYWNrZW5kPSJbW2JhY2tlbmRdXSIKICAgICAgICAgICAgZXhwZXJpbWVudC1uYW1lPSJbW2V4cGVyaW1lbnROYW1lXV0iCiAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249IltbY29uZmlndXJhdGlvbl1dIgogICAgICAgICAgICBzZXNzaW9uLWdyb3Vwcz0iW1tzZXNzaW9uR3JvdXBzXV0iCiAgICAgICAgICA+CiAgICAgICAgICA8L3RmLWhwYXJhbXMtc2NhdHRlci1wbG90LW1hdHJpeC12aWV3PgogICAgICAgIDwvZGl2PgogICAgICA8L2lyb24tcGFnZXM+CiAgICA8L3BhcGVyLWhlYWRlci1wYW5lbD4KCiAgICA8c3R5bGU+CiAgICAgIC50YWItdmlldyB7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICB9CiAgICAgIC50YWItYmFyIHsKICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgICAgIGNvbG9yOiB3aGl0ZTsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoCiAgICAgICAgICAtLXRiLXRvb2xiYXItYmFja2dyb3VuZC1jb2xvciwKICAgICAgICAgIHZhcigtLXRiLW9yYW5nZS1zdHJvbmcpCiAgICAgICAgKTsKICAgICAgfQogICAgICAudGFiIHsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIH0KICAgICAgcGFwZXItdGFicyB7CiAgICAgICAgZmxleC1ncm93OiAxOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICAtLXBhcGVyLXRhYnMtc2VsZWN0aW9uLWJhci1jb2xvcjogd2hpdGU7CiAgICAgICAgLS1wYXBlci10YWJzLWNvbnRlbnQ6IHsKICAgICAgICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOwogICAgICAgIH0KICAgICAgfQogICAgICB0Zi1ocGFyYW1zLXRhYmxlLXZpZXcgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgfQogICAgICAuaGVscC1hbmQtZmVlZGJhY2sgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OyAvKiBFbnN1cmUgdGhhdCBpY29ucyBzdGF5IGFsaWduZWQgKi8KICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7CiAgICAgICAgY29sb3I6IHdoaXRlOwogICAgICB9CiAgICAgICNidWctcmVwb3J0IHsKICAgICAgICBib3JkZXI6IHNvbGlkIGJsYWNrOwogICAgICAgIGJhY2tncm91bmQ6IHJlZDsKICAgICAgICB3aGl0ZS1zcGFjZTogbm9ybWFsOwogICAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmRzOwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBtYXgtd2lkdGg6IDE1MHB4OwogICAgICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICAgIH0KICAgICAgLmhlbHAtYW5kLWZlZWRiYWNrIGEgewogICAgICAgIGNvbG9yOiB3aGl0ZTsKICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYCx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxGMHQucHJvdG90eXBlLCJiYWNrZW5kIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLEYwdC5wcm90b3R5cGUsImhlbHBVcmwiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sRjB0LnByb3RvdHlwZSwiYnVnUmVwb3J0VXJsIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLEYwdC5wcm90b3R5cGUsImV4cGVyaW1lbnROYW1lIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLEYwdC5wcm90b3R5cGUsImNvbmZpZ3VyYXRpb24iLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheX0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLEYwdC5wcm90b3R5cGUsInNlc3Npb25Hcm91cHMiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sRjB0LnByb3RvdHlwZSwiX3NlbGVjdGVkVGFiIix2b2lkIDApLEYwdD10KFtpKCJ0Zi1ocGFyYW1zLXNlc3Npb25zLXBhbmUiKV0sRjB0KTtsZXQgVjB0PWNsYXNzIGV4dGVuZHMoY3Iod2UpKXtyZWxvYWQoKXt0aGlzLiRbInF1ZXJ5LXBhbmUiXS5yZWxvYWQoKX19O1YwdC50ZW1wbGF0ZT14ZWAKICAgIDxocGFyYW1zLXNwbGl0LWxheW91dD4KICAgICAgPGRpdiBzbG90PSJjb250ZW50IiBjbGFzcz0ic2lkZWJhciI+CiAgICAgICAgPHRmLWhwYXJhbXMtcXVlcnktcGFuZQogICAgICAgICAgaWQ9InF1ZXJ5LXBhbmUiCiAgICAgICAgICBiYWNrZW5kPSJbW2JhY2tlbmRdXSIKICAgICAgICAgIGV4cGVyaW1lbnQtbmFtZT0iW1tleHBlcmltZW50TmFtZV1dIgogICAgICAgICAgY29uZmlndXJhdGlvbj0ie3tfY29uZmlndXJhdGlvbn19IgogICAgICAgICAgc2Vzc2lvbi1ncm91cHM9Int7X3Nlc3Npb25Hcm91cHN9fSIKICAgICAgICAgIGRhdGEtbG9hZGVkLXdpdGgtbm9uLWVtcHR5LWhwYXJhbXM9Int7X2RhdGFMb2FkZWRXaXRoTm9uRW1wdHlIcGFyYW1zfX0iCiAgICAgICAgICBkYXRhLWxvYWRlZC13aXRoLWVtcHR5LWhwYXJhbXM9Int7X2RhdGFMb2FkZWRXaXRoRW1wdHlIcGFyYW1zfX0iCiAgICAgICAgPgogICAgICAgIDwvdGYtaHBhcmFtcy1xdWVyeS1wYW5lPgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBzbG90PSJjb250ZW50IiBjbGFzcz0iY2VudGVyIj4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2RhdGFMb2FkZWRXaXRoRW1wdHlIcGFyYW1zXV0iPgogICAgICAgICAgPGRpdiBjbGFzcz0ibm8tZGF0YS13YXJuaW5nIj4KICAgICAgICAgICAgPGgzPk5vIGhwYXJhbXMgZGF0YSB3YXMgZm91bmQuPC9oMz4KICAgICAgICAgICAgPHA+UHJvYmFibGUgY2F1c2VzOjwvcD4KICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgIDxsaT5Zb3UgaGF2ZW7igJl0IHdyaXR0ZW4gYW55IGhwYXJhbXMgZGF0YSB0byB5b3VyIGV2ZW50IGZpbGVzLjwvbGk+CiAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgRXZlbnQgZmlsZXMgYXJlIHN0aWxsIGJlaW5nIGxvYWRlZCAodHJ5IHJlbG9hZGluZyB0aGlzIHBhZ2UpLgogICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgPGxpPlRlbnNvckJvYXJkIGNhbuKAmXQgZmluZCB5b3VyIGV2ZW50IGZpbGVzLjwvbGk+CiAgICAgICAgICAgIDwvdWw+CgogICAgICAgICAgICA8cD4KICAgICAgICAgICAgICBJZiB5b3XigJlyZSBuZXcgdG8gdXNpbmcgVGVuc29yQm9hcmQsIGFuZCB3YW50IHRvIGZpbmQgb3V0IGhvdyB0bwogICAgICAgICAgICAgIGFkZCBkYXRhIGFuZCBzZXQgdXAgeW91ciBldmVudCBmaWxlcywgY2hlY2sgb3V0IHRoZQogICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vdGVuc29yZmxvdy90ZW5zb3Jib2FyZC9ibG9iL21hc3Rlci9SRUFETUUubWQiCiAgICAgICAgICAgICAgICA+UkVBRE1FPC9hCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgIGFuZCBwZXJoYXBzIHRoZQogICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICBocmVmPSJodHRwczovL3d3dy50ZW5zb3JmbG93Lm9yZy9nZXRfc3RhcnRlZC9zdW1tYXJpZXNfYW5kX3RlbnNvcmJvYXJkIgogICAgICAgICAgICAgICAgPlRlbnNvckJvYXJkIHR1dG9yaWFsPC9hCiAgICAgICAgICAgICAgPi4KICAgICAgICAgICAgPC9wPgoKICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgSWYgeW91IHRoaW5rIFRlbnNvckJvYXJkIGlzIGNvbmZpZ3VyZWQgcHJvcGVybHksIHBsZWFzZSBzZWUKICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29yYm9hcmQvYmxvYi9tYXN0ZXIvUkVBRE1FLm1kI215LXRlbnNvcmJvYXJkLWlzbnQtc2hvd2luZy1hbnktZGF0YS13aGF0cy13cm9uZyIKICAgICAgICAgICAgICAgID50aGUgc2VjdGlvbiBvZiB0aGUgUkVBRE1FIGRldm90ZWQgdG8gbWlzc2luZyBkYXRhIHByb2JsZW1zPC9hCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgIGFuZCBjb25zaWRlciBmaWxpbmcgYW4gaXNzdWUgb24gR2l0SHViLgogICAgICAgICAgICA8L3A+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L3RlbXBsYXRlPgoKICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2RhdGFMb2FkZWRXaXRoTm9uRW1wdHlIcGFyYW1zXV0iPgogICAgICAgICAgPHRmLWhwYXJhbXMtc2Vzc2lvbnMtcGFuZQogICAgICAgICAgICBpZD0ic2Vzc2lvbnMtcGFuZSIKICAgICAgICAgICAgYmFja2VuZD0iW1tiYWNrZW5kXV0iCiAgICAgICAgICAgIGhlbHAtdXJsPSJbW2hlbHBVcmxdXSIKICAgICAgICAgICAgYnVnLXJlcG9ydC11cmw9IltbYnVnUmVwb3J0VXJsXV0iCiAgICAgICAgICAgIGV4cGVyaW1lbnQtbmFtZT0iW1tleHBlcmltZW50TmFtZV1dIgogICAgICAgICAgICBjb25maWd1cmF0aW9uPSJbW19jb25maWd1cmF0aW9uXV0iCiAgICAgICAgICAgIHNlc3Npb24tZ3JvdXBzPSJbW19zZXNzaW9uR3JvdXBzXV0iCiAgICAgICAgICA+CiAgICAgICAgICA8L3RmLWhwYXJhbXMtc2Vzc2lvbnMtcGFuZT4KICAgICAgICA8L3RlbXBsYXRlPgogICAgICA8L2Rpdj4KICAgIDwvaHBhcmFtcy1zcGxpdC1sYXlvdXQ+CiAgICA8c3R5bGU+CiAgICAgIGhwYXJhbXMtc3BsaXQtbGF5b3V0IHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgfQoKICAgICAgLnNpZGViYXIgewogICAgICAgIHdpZHRoOiAyMCU7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIG92ZXJmbG93OiBhdXRvOwogICAgICAgIGZsZXgtZ3JvdzogMDsKICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgICBtaW4td2lkdGg6IDEwJTsKICAgICAgfQoKICAgICAgLmNlbnRlciB7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgICAgZmxleC1ncm93OiAxOwogICAgICAgIGZsZXgtc2hyaW5rOiAxOwogICAgICAgIHdpZHRoOiA4MCU7CiAgICAgIH0KCiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICB9CgogICAgICAubm8tZGF0YS13YXJuaW5nIHsKICAgICAgICBtYXgtd2lkdGg6IDU0MHB4OwogICAgICAgIG1hcmdpbjogODBweCBhdXRvIDAgYXV0bzsKICAgICAgfQoKICAgICAgYSB7CiAgICAgICAgY29sb3I6IHZhcigtLXRiLWxpbmspOwogICAgICB9CgogICAgICBhOnZpc2l0ZWQgewogICAgICAgIGNvbG9yOiB2YXIoLS10Yi1saW5rLXZpc2l0ZWQpOwogICAgICB9CiAgICA8L3N0eWxlPgogIGAsdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsTUp0KV0sVjB0LnByb3RvdHlwZSwiYmFja2VuZCIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxWMHQucHJvdG90eXBlLCJleHBlcmltZW50TmFtZSIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxWMHQucHJvdG90eXBlLCJoZWxwVXJsIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLFYwdC5wcm90b3R5cGUsImJ1Z1JlcG9ydFVybCIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxWMHQucHJvdG90eXBlLCJfY29uZmlndXJhdGlvbiIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sVjB0LnByb3RvdHlwZSwiX3Nlc3Npb25Hcm91cHMiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxWMHQucHJvdG90eXBlLCJfZGF0YUxvYWRlZFdpdGhOb25FbXB0eUhwYXJhbXMiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxWMHQucHJvdG90eXBlLCJfZGF0YUxvYWRlZFdpdGhFbXB0eUhwYXJhbXMiLHZvaWQgMCksVjB0PXQoW2koInRmLWhwYXJhbXMtbWFpbiIpXSxWMHQpO2NvbnN0IFUwdD0idHJ1ZSI9PT1uZXcgVVJMU2VhcmNoUGFyYW1zKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpLmdldCgidGVuc29yYm9hcmRDb2xhYiIpO2xldCBqMHQ9Y2xhc3MgZXh0ZW5kcyhjcih3ZSkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9iYWNrZW5kPW5ldyBNSnQoRXIoKS5wbHVnaW5Sb3V0ZSgiaHBhcmFtcyIsIiIpLG5ldyBicixVMHQpfXJlbG9hZCgpe3RoaXMuJFsiaHBhcmFtcy1tYWluIl0ucmVsb2FkKCl9fTtqMHQudGVtcGxhdGU9eGVgCiAgICA8IS0tIFRlbnNvckJvYXJkIGRvZXMgbm90IHNwZWNpZnkgYW4gZXhwZXJpbWVudE5hbWUuIEN1cnJlbnRseSBpdCBvbmx5CiAgICAgICAgIHN1cHBvcnRzIG9uZSBleHBlcmltZW50IHBlciBpbnZvY2F0aW9uLiAtLT4KICAgIDx0Zi1ocGFyYW1zLW1haW4KICAgICAgaWQ9ImhwYXJhbXMtbWFpbiIKICAgICAgYmFja2VuZD0iW1tfYmFja2VuZF1dIgogICAgICBleHBlcmltZW50LW5hbWU9IiIKICAgID4KICAgIDwvdGYtaHBhcmFtcy1tYWluPgogIGAsdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sajB0LnByb3RvdHlwZSwiX2JhY2tlbmQiLHZvaWQgMCksajB0PXQoW2koInRmLWhwYXJhbXMtZGFzaGJvYXJkIildLGowdCk7bGV0IEcwdD1jbGFzcyBleHRlbmRzKGNyKHdlKSl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuYWN0dWFsU2l6ZT0hMSx0aGlzLmJyaWdodG5lc3NBZGp1c3RtZW50PS41LHRoaXMuY29udHJhc3RQZXJjZW50YWdlPTAsdGhpcy5fbWV0YWRhdGFDYW5jZWxsZXI9bmV3IHhPLHRoaXMuX2ltYWdlQ2FuY2VsbGVyPW5ldyB4Tyx0aGlzLl9zdGVwcz1bXSx0aGlzLl9pc0ltYWdlTG9hZGluZz0hMX1nZXQgX3J1bkNvbG9yKCl7cmV0dXJuIF9PKHRoaXMucnVuKX1nZXQgX2hhc0F0TGVhc3RPbmVTdGVwKCl7dmFyIHQ9dGhpcy5fc3RlcHM7cmV0dXJuISF0JiZ0Lmxlbmd0aD4wfWdldCBfaGFzTXVsdGlwbGVTdGVwcygpe3ZhciB0PXRoaXMuX3N0ZXBzO3JldHVybiEhdCYmdC5sZW5ndGg+MX1nZXQgX2N1cnJlbnRTdGVwKCl7cmV0dXJuIHRoaXMuX3N0ZXBzW3RoaXMuX3N0ZXBJbmRleF18fG51bGx9Z2V0IF9zdGVwVmFsdWUoKXt2YXIgdD10aGlzLl9jdXJyZW50U3RlcDtyZXR1cm4gdD90LnN0ZXA6MH1nZXQgX2N1cnJlbnRXYWxsVGltZSgpe3ZhciB0PXRoaXMuX2N1cnJlbnRTdGVwO3JldHVybiB0P1NPKHQud2FsbF90aW1lKToiIn1nZXQgX21heFN0ZXBJbmRleCgpe3JldHVybiB0aGlzLl9zdGVwcy5sZW5ndGgtMX1nZXQgX3NhbXBsZVRleHQoKXtyZXR1cm5gJHt0aGlzLnNhbXBsZSsxfWB9Z2V0IF9oYXNNdWx0aXBsZVNhbXBsZXMoKXtyZXR1cm4gdGhpcy5vZlNhbXBsZXM+MX1fZ2V0QXJpYUV4cGFuZGVkKCl7cmV0dXJuIHRoaXMuYWN0dWFsU2l6ZT8idHJ1ZSI6ImZhbHNlIn1hdHRhY2hlZCgpe3RoaXMucmVsb2FkKCl9cmVsb2FkKCl7aWYoIXRoaXMuaXNBdHRhY2hlZClyZXR1cm47dGhpcy5fbWV0YWRhdGFDYW5jZWxsZXIuY2FuY2VsQWxsKCk7Y29uc3QgdD1QTyhFcigpLnBsdWdpblJvdXRlKCJpbWFnZXMiLCIvaW1hZ2VzIikse3RhZzp0aGlzLnRhZyxydW46dGhpcy5ydW4sc2FtcGxlOnRoaXMuc2FtcGxlfSksZT10aGlzLl9tZXRhZGF0YUNhbmNlbGxlci5jYW5jZWxsYWJsZSgodD0+e2lmKHQuY2FuY2VsbGVkKXJldHVybjtjb25zdCBlPXQudmFsdWUubWFwKHRoaXMuX2NyZWF0ZVN0ZXBEYXR1bS5iaW5kKHRoaXMpKTt0aGlzLnNldCgiX3N0ZXBzIixlKSx0aGlzLnNldCgiX3N0ZXBJbmRleCIsZS5sZW5ndGgtMSl9KSk7dGhpcy5yZXF1ZXN0TWFuYWdlci5yZXF1ZXN0KHQpLnRoZW4oZSl9X2NyZWF0ZVN0ZXBEYXR1bSh0KXtsZXQgZT1FcigpLnBsdWdpblJvdXRlKCJpbWFnZXMiLCIvaW5kaXZpZHVhbEltYWdlIik7cmV0dXJuIGU9UE8oZSx7dHM6dC53YWxsX3RpbWV9KSxlKz0iJiIrdC5xdWVyeSx7d2FsbF90aW1lOm5ldyBEYXRlKDFlMyp0LndhbGxfdGltZSksc3RlcDp0LnN0ZXAsdXJsOmV9fV91cGRhdGVJbWFnZVVybCgpe3ZhciB0PXRoaXMuX2N1cnJlbnRTdGVwLGU9dGhpcy5icmlnaHRuZXNzQWRqdXN0bWVudCxuPXRoaXMuY29udHJhc3RQZXJjZW50YWdlO2lmKCF0KXJldHVybjtjb25zdCBpPW5ldyBJbWFnZTt0aGlzLl9pbWFnZUNhbmNlbGxlci5jYW5jZWxBbGwoKSxpLm9ubG9hZD1pLm9uZXJyb3I9dGhpcy5faW1hZ2VDYW5jZWxsZXIuY2FuY2VsbGFibGUoKHQ9PntpZih0LmNhbmNlbGxlZClyZXR1cm47Y29uc3QgZT10aGlzLiQkKCIjbWFpbi1pbWFnZS1jb250YWluZXIiKTtlLnRleHRDb250ZW50PSIiLGVyKGUpLmFwcGVuZENoaWxkKGkpLHRoaXMuc2V0KCJfaXNJbWFnZUxvYWRpbmciLCExKX0pKS5iaW5kKHRoaXMpLGkuc3R5bGUuZmlsdGVyPWBjb250cmFzdCgke259JSkgYCxpLnN0eWxlLmZpbHRlcis9YGJyaWdodG5lc3MoJHtlfSlgLHRoaXMuc2V0KCJfaXNJbWFnZUxvYWRpbmciLCEwKSxpLnNyYz10LnVybH1faGFuZGxlVGFwKHQpe3RoaXMuc2V0KCJhY3R1YWxTaXplIiwhdGhpcy5hY3R1YWxTaXplKX1fdG9Mb2NhbGVTdHJpbmcodCl7cmV0dXJuIHQudG9Mb2NhbGVTdHJpbmcoKX19O0cwdC50ZW1wbGF0ZT14ZWAKICAgIDx0Zi1jYXJkLWhlYWRpbmcKICAgICAgdGFnPSJbW3RhZ11dIgogICAgICBydW49IltbcnVuXV0iCiAgICAgIGRpc3BsYXktbmFtZT0iW1t0YWdNZXRhZGF0YS5kaXNwbGF5TmFtZV1dIgogICAgICBkZXNjcmlwdGlvbj0iW1t0YWdNZXRhZGF0YS5kZXNjcmlwdGlvbl1dIgogICAgICBjb2xvcj0iW1tfcnVuQ29sb3JdXSIKICAgID4KICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19oYXNNdWx0aXBsZVNhbXBsZXNdXSI+CiAgICAgICAgPGRpdj5zYW1wbGU6IFtbX3NhbXBsZVRleHRdXSBvZiBbW29mU2FtcGxlc11dPC9kaXY+CiAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfaGFzQXRMZWFzdE9uZVN0ZXBdXSI+CiAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGluZy1yb3ciPgogICAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGluZy1sYWJlbCI+CiAgICAgICAgICAgIHN0ZXAKICAgICAgICAgICAgPHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkIgogICAgICAgICAgICAgID5bW190b0xvY2FsZVN0cmluZyhfc3RlcFZhbHVlKV1dPC9zcGFuCiAgICAgICAgICAgID4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGluZy1sYWJlbCBoZWFkaW5nLXJpZ2h0IGRhdGV0aW1lIj4KICAgICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19jdXJyZW50V2FsbFRpbWVdXSI+CiAgICAgICAgICAgICAgW1tfY3VycmVudFdhbGxUaW1lXV0KICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ibGFiZWwgcmlnaHQiPgogICAgICAgICAgICA8cGFwZXItc3Bpbm5lci1saXRlIGFjdGl2ZSBoaWRkZW4kPSJbWyFfaXNJbWFnZUxvYWRpbmddXSI+CiAgICAgICAgICAgIDwvcGFwZXItc3Bpbm5lci1saXRlPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfaGFzTXVsdGlwbGVTdGVwc11dIj4KICAgICAgICA8ZGl2PgogICAgICAgICAgPHBhcGVyLXNsaWRlcgogICAgICAgICAgICBpZD0ic3RlcHMiCiAgICAgICAgICAgIGltbWVkaWF0ZS12YWx1ZT0ie3tfc3RlcEluZGV4fX0iCiAgICAgICAgICAgIG1heD0iW1tfbWF4U3RlcEluZGV4XV0iCiAgICAgICAgICAgIG1heC1tYXJrZXJzPSJbW19tYXhTdGVwSW5kZXhdXSIKICAgICAgICAgICAgc25hcHMKICAgICAgICAgICAgc3RlcD0iMSIKICAgICAgICAgICAgdmFsdWU9Int7X3N0ZXBJbmRleH19IgogICAgICAgICAgPjwvcGFwZXItc2xpZGVyPgogICAgICAgIDwvZGl2PgogICAgICA8L3RlbXBsYXRlPgogICAgPC90Zi1jYXJkLWhlYWRpbmc+CgogICAgPCEtLSBTZW1hbnRpY2FsbHkgYSBidXR0b24gYnV0IDxpbWc+IGluc2lkZSBhIDxidXR0b24+IGRpc2FsbG93cyB1c2VyIHRvIGRvCiAgICBhbiBpbnRlcmVzdGluZyBvcGVyYXRpb24gbGlrZSAiQ29weSBJbWFnZSIgaW4gbm9uLUNocm9taXVtIGJyb3dzZXJzLiAtLT4KICAgIDxhCiAgICAgIGlkPSJtYWluLWltYWdlLWNvbnRhaW5lciIKICAgICAgcm9sZT0iYnV0dG9uIgogICAgICBhcmlhLWxhYmVsPSJUb2dnbGUgYWN0dWFsIHNpemUiCiAgICAgIGFyaWEtZXhwYW5kZWQkPSJbW19nZXRBcmlhRXhwYW5kZWQoYWN0dWFsU2l6ZSldXSIKICAgICAgb24tdGFwPSJfaGFuZGxlVGFwIgogICAgPjwvYT4KCiAgICA8c3R5bGUgaW5jbHVkZT0idGYtY2FyZC1oZWFkaW5nLXN0eWxlIj4KICAgICAgLyoqIE1ha2UgYnV0dG9uIGEgZGl2LiAqLwogICAgICBidXR0b24gewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIGJhY2tncm91bmQ6IG5vbmU7CiAgICAgICAgYm9yZGVyOiAwOwogICAgICAgIHBhZGRpbmc6IDA7CiAgICAgIH0KCiAgICAgIC8qKiBGaXJlZm94OiBHZXQgcmlkIG9mIGRvdHRlZCBsaW5lIGluc2lkZSBidXR0b24uICovCiAgICAgIGJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lciB7CiAgICAgICAgYm9yZGVyOiAwOwogICAgICAgIHBhZGRpbmc6IDA7CiAgICAgIH0KCiAgICAgIC8qKiBGaXJlZm94OiBTaW11bGF0ZSBDaHJvbWUncyBvdXRlciBnbG93IG9uIGJ1dHRvbiB3aGVuIGZvY3VzZWQuICovCiAgICAgIGJ1dHRvbjotbW96LWZvY3VzcmluZyB7CiAgICAgICAgb3V0bGluZTogbm9uZTsKICAgICAgICBib3gtc2hhZG93OiAwcHggMHB4IDFweCAycHggSGlnaGxpZ2h0OwogICAgICB9CgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgd2lkdGg6IDM1MHB4OwogICAgICAgIGhlaWdodDogYXV0bzsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgbWFyZ2luOiAwIDE1cHggNDBweCAwOwogICAgICAgIG92ZXJmbG93LXg6IGF1dG87CiAgICAgIH0KCiAgICAgIC8qKiBXaGVuIGFjdHVhbCBzaXplIHNob3duIGlzIG9uLCB1c2UgdGhlIGFjdHVhbCBpbWFnZSB3aWR0aC4gKi8KICAgICAgOmhvc3QoW2FjdHVhbC1zaXplXSkgewogICAgICAgIG1heC13aWR0aDogMTAwJTsKICAgICAgICB3aWR0aDogYXV0bzsKICAgICAgfQoKICAgICAgOmhvc3QoW2FjdHVhbC1zaXplXSkgI21haW4taW1hZ2UtY29udGFpbmVyIHsKICAgICAgICBtYXgtaGVpZ2h0OiBub25lOwogICAgICAgIHdpZHRoOiBhdXRvOwogICAgICB9CgogICAgICA6aG9zdChbYWN0dWFsLXNpemVdKSAjbWFpbi1pbWFnZS1jb250YWluZXIgaW1nIHsKICAgICAgICB3aWR0aDogYXV0bzsKICAgICAgfQoKICAgICAgcGFwZXItc3Bpbm5lci1saXRlIHsKICAgICAgICB3aWR0aDogMTRweDsKICAgICAgICBoZWlnaHQ6IDE0cHg7CiAgICAgICAgdmVydGljYWwtYWxpZ246IHRleHQtYm90dG9tOwogICAgICAgIC0tcGFwZXItc3Bpbm5lci1jb2xvcjogdmFyKC0tdGItb3JhbmdlLXN0cm9uZyk7CiAgICAgIH0KCiAgICAgICNzdGVwcyB7CiAgICAgICAgaGVpZ2h0OiAxNXB4OwogICAgICAgIG1hcmdpbjogMCAwIDAgLTE1cHg7CiAgICAgICAgLyoKICAgICAgICAgKiAzMSBjb21lcyBmcm9tIGFkZGluZyBhIHBhZGRpbmcgb2YgMTVweCBmcm9tIGJvdGggc2lkZXMgb2YgdGhlCiAgICAgICAgICogcGFwZXItc2xpZGVyLCBzdWJ0cmFjdGluZyAxcHggc28gdGhhdCB0aGUgc2xpZGVyIHdpZHRoIGFsaWducwogICAgICAgICAqIHdpdGggdGhlIGltYWdlICh0aGUgbGFzdCBzbGlkZXIgbWFya2VyIHRha2VzIHVwIDFweCksIGFuZAogICAgICAgICAqIGFkZGluZyAycHggdG8gYWNjb3VudCBmb3IgYSBib3JkZXIgb2YgMXB4IG9uIGJvdGggc2lkZXMgb2YKICAgICAgICAgKiB0aGUgaW1hZ2UuIDMwIC0gMSArIDIuCiAgICAgICAgICovCiAgICAgICAgd2lkdGg6IGNhbGMoMTAwJSArIDMxcHgpOwogICAgICAgIC0tcGFwZXItc2xpZGVyLWFjdGl2ZS1jb2xvcjogdmFyKC0tdGItb3JhbmdlLXN0cm9uZyk7CiAgICAgICAgLS1wYXBlci1zbGlkZXIta25vYi1jb2xvcjogdmFyKC0tdGItb3JhbmdlLXN0cm9uZyk7CiAgICAgICAgLS1wYXBlci1zbGlkZXIta25vYi1zdGFydC1ib3JkZXItY29sb3I6IHZhcigtLXRiLW9yYW5nZS1zdHJvbmcpOwogICAgICAgIC0tcGFwZXItc2xpZGVyLWtub2Itc3RhcnQtY29sb3I6IHZhcigtLXRiLW9yYW5nZS1zdHJvbmcpOwogICAgICAgIC0tcGFwZXItc2xpZGVyLW1hcmtlcnMtY29sb3I6IHZhcigtLXRiLW9yYW5nZS1zdHJvbmcpOwogICAgICAgIC0tcGFwZXItc2xpZGVyLXBpbi1jb2xvcjogdmFyKC0tdGItb3JhbmdlLXN0cm9uZyk7CiAgICAgICAgLS1wYXBlci1zbGlkZXItcGluLXN0YXJ0LWNvbG9yOiB2YXIoLS10Yi1vcmFuZ2Utc3Ryb25nKTsKICAgICAgfQoKICAgICAgI21haW4taW1hZ2UtY29udGFpbmVyIHsKICAgICAgICBtYXgtaGVpZ2h0OiAxMDI0cHg7CiAgICAgICAgb3ZlcmZsb3c6IGF1dG87CiAgICAgIH0KCiAgICAgICNtYWluLWltYWdlLWNvbnRhaW5lciBpbWcgewogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBpbWFnZS1yZW5kZXJpbmc6IC1tb3otY3Jpc3AtZWRnZXM7CiAgICAgICAgaW1hZ2UtcmVuZGVyaW5nOiBwaXhlbGF0ZWQ7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgaGVpZ2h0OiBhdXRvOwogICAgICB9CgogICAgICBwYXBlci1pY29uLWJ1dHRvbiB7CiAgICAgICAgY29sb3I6ICMyMTk2ZjM7CiAgICAgICAgYm9yZGVyLXJhZGl1czogMTAwJTsKICAgICAgICB3aWR0aDogMzJweDsKICAgICAgICBoZWlnaHQ6IDMycHg7CiAgICAgICAgcGFkZGluZzogNHB4OwogICAgICB9CiAgICAgIHBhcGVyLWljb24tYnV0dG9uW3NlbGVjdGVkXSB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdGItdWktbGlnaHQtYWNjZW50KTsKICAgICAgfQogICAgICBbaGlkZGVuXSB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLEcwdC5wcm90b3R5cGUsInJ1biIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxHMHQucHJvdG90eXBlLCJ0YWciLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sRzB0LnByb3RvdHlwZSwic2FtcGxlIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLEcwdC5wcm90b3R5cGUsIm9mU2FtcGxlcyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxHMHQucHJvdG90eXBlLCJ0YWdNZXRhZGF0YSIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW4scmVmbGVjdFRvQXR0cmlidXRlOiEwfSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxHMHQucHJvdG90eXBlLCJhY3R1YWxTaXplIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLEcwdC5wcm90b3R5cGUsImJyaWdodG5lc3NBZGp1c3RtZW50Iix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLEcwdC5wcm90b3R5cGUsImNvbnRyYXN0UGVyY2VudGFnZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixicildLEcwdC5wcm90b3R5cGUsInJlcXVlc3RNYW5hZ2VyIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLEcwdC5wcm90b3R5cGUsIl9tZXRhZGF0YUNhbmNlbGxlciIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxHMHQucHJvdG90eXBlLCJfaW1hZ2VDYW5jZWxsZXIiLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheSxub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxHMHQucHJvdG90eXBlLCJfc3RlcHMiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXIsbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLEcwdC5wcm90b3R5cGUsIl9zdGVwSW5kZXgiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxHMHQucHJvdG90eXBlLCJfaXNJbWFnZUxvYWRpbmciLHZvaWQgMCksdChbcygicnVuIiksZSgiZGVzaWduOnR5cGUiLFN0cmluZyksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sRzB0LnByb3RvdHlwZSwiX3J1bkNvbG9yIixudWxsKSx0KFtzKCJfc3RlcHMiKSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sRzB0LnByb3RvdHlwZSwiX2hhc0F0TGVhc3RPbmVTdGVwIixudWxsKSx0KFtzKCJfc3RlcHMiKSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sRzB0LnByb3RvdHlwZSwiX2hhc011bHRpcGxlU3RlcHMiLG51bGwpLHQoW3MoIl9zdGVwcyIsIl9zdGVwSW5kZXgiKSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxHMHQucHJvdG90eXBlLCJfY3VycmVudFN0ZXAiLG51bGwpLHQoW3MoIl9jdXJyZW50U3RlcCIpLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLEcwdC5wcm90b3R5cGUsIl9zdGVwVmFsdWUiLG51bGwpLHQoW3MoIl9jdXJyZW50U3RlcCIpLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLEcwdC5wcm90b3R5cGUsIl9jdXJyZW50V2FsbFRpbWUiLG51bGwpLHQoW3MoIl9zdGVwcyIpLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLEcwdC5wcm90b3R5cGUsIl9tYXhTdGVwSW5kZXgiLG51bGwpLHQoW3MoInNhbXBsZSIpLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLEcwdC5wcm90b3R5cGUsIl9zYW1wbGVUZXh0IixudWxsKSx0KFtzKCJvZlNhbXBsZXMiKSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sRzB0LnByb3RvdHlwZSwiX2hhc011bHRpcGxlU2FtcGxlcyIsbnVsbCksdChbYSgicnVuIiwidGFnIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxHMHQucHJvdG90eXBlLCJyZWxvYWQiLG51bGwpLHQoW2EoIl9jdXJyZW50U3RlcCIsImJyaWdodG5lc3NBZGp1c3RtZW50IiwiY29udHJhc3RQZXJjZW50YWdlIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxHMHQucHJvdG90eXBlLCJfdXBkYXRlSW1hZ2VVcmwiLG51bGwpLEcwdD10KFtpKCJ0Zi1pbWFnZS1sb2FkZXIiKV0sRzB0KTtsZXQgVzB0PWNsYXNzIGV4dGVuZHMoY3Iod2UpKXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5yZWxvYWRPblJlYWR5PSEwLHRoaXMuX2RlZmF1bHRCcmlnaHRuZXNzQWRqdXN0bWVudD0xLHRoaXMuX2RlZmF1bHRDb250cmFzdFBlcmNlbnRhZ2U9MTAwLHRoaXMuX2JyaWdodG5lc3NBZGp1c3RtZW50PTEsdGhpcy5fY29udHJhc3RQZXJjZW50YWdlPTEwMCx0aGlzLl9yZXF1ZXN0TWFuYWdlcj1uZXcgYnJ9cmVhZHkoKXtzdXBlci5yZWFkeSgpLHRoaXMucmVsb2FkT25SZWFkeSYmdGhpcy5yZWxvYWQoKX1yZWxvYWQoKXt0aGlzLl9mZXRjaFRhZ3MoKS50aGVuKCgoKT0+e3RoaXMuX3JlbG9hZEltYWdlcygpfSkpfV9mZXRjaFRhZ3MoKXtjb25zdCB0PUVyKCkucGx1Z2luUm91dGUoImltYWdlcyIsIi90YWdzIik7cmV0dXJuIHRoaXMuX3JlcXVlc3RNYW5hZ2VyLnJlcXVlc3QodCkudGhlbigodD0+e2lmKENlLmV4cG9ydHMuaXNFcXVhbCh0LHRoaXMuX3J1blRvVGFnSW5mbykpcmV0dXJuO2NvbnN0IGU9ZnIoQ2UuZXhwb3J0cy5tYXBWYWx1ZXModCwodD0+T2JqZWN0LmtleXModCkpKSk7dGhpcy5zZXQoIl9kYXRhTm90Rm91bmQiLDA9PT1lLmxlbmd0aCksdGhpcy5zZXQoIl9ydW5Ub1RhZ0luZm8iLHQpLHRoaXMuYXN5bmMoKCgpPT57dGhpcy5zZXQoIl9jYXRlZ29yaWVzRG9tUmVhZHkiLCEwKX0pKX0pKX1fcmVsb2FkSW1hZ2VzKCl7dGhpcy5yb290LnF1ZXJ5U2VsZWN0b3JBbGwoInRmLWltYWdlLWxvYWRlciIpLmZvckVhY2goKHQ9Pnt0LnJlbG9hZCgpfSkpfV9zaG91bGRPcGVuKHQpe3JldHVybiB0PD0yfV9yZXNldEJyaWdodG5lc3MoKXt0aGlzLl9icmlnaHRuZXNzQWRqdXN0bWVudD10aGlzLl9kZWZhdWx0QnJpZ2h0bmVzc0FkanVzdG1lbnR9X3Jlc2V0Q29udHJhc3QoKXt0aGlzLl9jb250cmFzdFBlcmNlbnRhZ2U9dGhpcy5fZGVmYXVsdENvbnRyYXN0UGVyY2VudGFnZX1nZXQgX2JyaWdodG5lc3NJc0RlZmF1bHQoKXtyZXR1cm4gdGhpcy5fYnJpZ2h0bmVzc0FkanVzdG1lbnQ9PT10aGlzLl9kZWZhdWx0QnJpZ2h0bmVzc0FkanVzdG1lbnR9Z2V0IF9jb250cmFzdElzRGVmYXVsdCgpe3JldHVybiB0aGlzLl9jb250cmFzdFBlcmNlbnRhZ2U9PT10aGlzLl9kZWZhdWx0Q29udHJhc3RQZXJjZW50YWdlfWdldCBfY2F0ZWdvcmllcygpe3ZhciB0PXRoaXMuX3J1blRvVGFnSW5mbyxlPXRoaXMuX3NlbGVjdGVkUnVucyxuPXRoaXMuX3RhZ0ZpbHRlcjtmdW5jdGlvbiBpKGUpe2NvbnN0IG49dFtlLnJ1bl1bZS50YWddLnNhbXBsZXM7cmV0dXJuIENlLmV4cG9ydHMucmFuZ2UobikubWFwKCh0PT5PYmplY3QuYXNzaWduKHt9LGUse3NhbXBsZTp0LG9mU2FtcGxlczpufSkpKX1yZXR1cm4gSXIoQ2UuZXhwb3J0cy5tYXBWYWx1ZXModCwodD0+T2JqZWN0LmtleXModCkpKSxlLG4pLm1hcCgodD0+T2JqZWN0LmFzc2lnbih7fSx0LHtpdGVtczpbXS5jb25jYXQuYXBwbHkoW10sdC5pdGVtcy5tYXAoaSkpfSkpKX1fdGFnTWV0YWRhdGEodCxlLG4pe3JldHVybiB0W2VdW25dfX07dmFyIHEwdCxZMHQsWDB0O1cwdC50ZW1wbGF0ZT14ZWAKICAgIDx0Zi1kYXNoYm9hcmQtbGF5b3V0PgogICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyIiBzbG90PSJzaWRlYmFyIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZXR0aW5ncyI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyLXNlY3Rpb24iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJsaW5lLWl0ZW0iPgogICAgICAgICAgICAgIDxwYXBlci1jaGVja2JveCBjaGVja2VkPSJ7e19hY3R1YWxTaXplfX0iCiAgICAgICAgICAgICAgICA+U2hvdyBhY3R1YWwgaW1hZ2Ugc2l6ZTwvcGFwZXItY2hlY2tib3gKICAgICAgICAgICAgICA+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyLXNlY3Rpb24iPgogICAgICAgICAgICA8aDMgY2xhc3M9InRvb2x0aXAtY29udGFpbmVyIj5CcmlnaHRuZXNzIGFkanVzdG1lbnQ8L2gzPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJyZXNldHRhYmxlLXNsaWRlci1jb250YWluZXIiPgogICAgICAgICAgICAgIDxwYXBlci1zbGlkZXIKICAgICAgICAgICAgICAgIG1pbj0iMCIKICAgICAgICAgICAgICAgIG1heD0iMiIKICAgICAgICAgICAgICAgIHNuYXBzCiAgICAgICAgICAgICAgICBwaW4KICAgICAgICAgICAgICAgIHN0ZXA9IjAuMDEiCiAgICAgICAgICAgICAgICB2YWx1ZT0ie3tfYnJpZ2h0bmVzc0FkanVzdG1lbnR9fSIKICAgICAgICAgICAgICAgIGltbWVkaWF0ZS12YWx1ZT0ie3tfYnJpZ2h0bmVzc0FkanVzdG1lbnR9fSIKICAgICAgICAgICAgICA+PC9wYXBlci1zbGlkZXI+CiAgICAgICAgICAgICAgPHBhcGVyLWJ1dHRvbgogICAgICAgICAgICAgICAgY2xhc3M9IngtYnV0dG9uIgogICAgICAgICAgICAgICAgb24tdGFwPSJfcmVzZXRCcmlnaHRuZXNzIgogICAgICAgICAgICAgICAgZGlzYWJsZWQ9IltbX2JyaWdodG5lc3NJc0RlZmF1bHRdXSIKICAgICAgICAgICAgICAgID5SZXNldDwvcGFwZXItYnV0dG9uCiAgICAgICAgICAgICAgPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ic2lkZWJhci1zZWN0aW9uIj4KICAgICAgICAgICAgPGgzIGNsYXNzPSJ0b29sdGlwLWNvbnRhaW5lciI+Q29udHJhc3QgYWRqdXN0bWVudDwvaDM+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InJlc2V0dGFibGUtc2xpZGVyLWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgPHBhcGVyLXNsaWRlcgogICAgICAgICAgICAgICAgbWluPSIwIgogICAgICAgICAgICAgICAgbWF4PSI1MDAiCiAgICAgICAgICAgICAgICBzbmFwcwogICAgICAgICAgICAgICAgcGluCiAgICAgICAgICAgICAgICBzdGVwPSIxIgogICAgICAgICAgICAgICAgdmFsdWU9Int7X2NvbnRyYXN0UGVyY2VudGFnZX19IgogICAgICAgICAgICAgICAgaW1tZWRpYXRlLXZhbHVlPSJ7e19jb250cmFzdFBlcmNlbnRhZ2V9fSIKICAgICAgICAgICAgICA+PC9wYXBlci1zbGlkZXI+CiAgICAgICAgICAgICAgPHBhcGVyLWJ1dHRvbgogICAgICAgICAgICAgICAgY2xhc3M9IngtYnV0dG9uIgogICAgICAgICAgICAgICAgb24tdGFwPSJfcmVzZXRDb250cmFzdCIKICAgICAgICAgICAgICAgIGRpc2FibGVkPSJbW19jb250cmFzdElzRGVmYXVsdF1dIgogICAgICAgICAgICAgICAgPlJlc2V0PC9wYXBlci1idXR0b24KICAgICAgICAgICAgICA+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic2lkZWJhci1zZWN0aW9uIHJ1bnMtc2VsZWN0b3IiPgogICAgICAgICAgPHRmLXJ1bnMtc2VsZWN0b3IKICAgICAgICAgICAgaWQ9InJ1bnMtc2VsZWN0b3IiCiAgICAgICAgICAgIHNlbGVjdGVkLXJ1bnM9Int7X3NlbGVjdGVkUnVuc319IgogICAgICAgICAgPjwvdGYtcnVucy1zZWxlY3Rvcj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImNlbnRlciIgc2xvdD0iY2VudGVyIj4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2RhdGFOb3RGb3VuZF1dIj4KICAgICAgICAgIDxkaXYgY2xhc3M9Im5vLWRhdGEtd2FybmluZyI+CiAgICAgICAgICAgIDxoMz5ObyBpbWFnZSBkYXRhIHdhcyBmb3VuZC48L2gzPgogICAgICAgICAgICA8cD5Qcm9iYWJsZSBjYXVzZXM6PC9wPgogICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgPGxpPllvdSBoYXZlbuKAmXQgd3JpdHRlbiBhbnkgaW1hZ2UgZGF0YSB0byB5b3VyIGV2ZW50IGZpbGVzLjwvbGk+CiAgICAgICAgICAgICAgPGxpPlRlbnNvckJvYXJkIGNhbuKAmXQgZmluZCB5b3VyIGV2ZW50IGZpbGVzLjwvbGk+CiAgICAgICAgICAgIDwvdWw+CgogICAgICAgICAgICA8cD4KICAgICAgICAgICAgICBJZiB5b3XigJlyZSBuZXcgdG8gdXNpbmcgVGVuc29yQm9hcmQsIGFuZCB3YW50IHRvIGZpbmQgb3V0IGhvdyB0bwogICAgICAgICAgICAgIGFkZCBkYXRhIGFuZCBzZXQgdXAgeW91ciBldmVudCBmaWxlcywgY2hlY2sgb3V0IHRoZQogICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vdGVuc29yZmxvdy90ZW5zb3Jib2FyZC9ibG9iL21hc3Rlci9SRUFETUUubWQiCiAgICAgICAgICAgICAgICA+UkVBRE1FPC9hCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgIGFuZCBwZXJoYXBzIHRoZQogICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICBocmVmPSJodHRwczovL3d3dy50ZW5zb3JmbG93Lm9yZy9nZXRfc3RhcnRlZC9zdW1tYXJpZXNfYW5kX3RlbnNvcmJvYXJkIgogICAgICAgICAgICAgICAgPlRlbnNvckJvYXJkIHR1dG9yaWFsPC9hCiAgICAgICAgICAgICAgPi4KICAgICAgICAgICAgPC9wPgoKICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgSWYgeW91IHRoaW5rIFRlbnNvckJvYXJkIGlzIGNvbmZpZ3VyZWQgcHJvcGVybHksIHBsZWFzZSBzZWUKICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29yYm9hcmQvYmxvYi9tYXN0ZXIvUkVBRE1FLm1kI215LXRlbnNvcmJvYXJkLWlzbnQtc2hvd2luZy1hbnktZGF0YS13aGF0cy13cm9uZyIKICAgICAgICAgICAgICAgID50aGUgc2VjdGlvbiBvZiB0aGUgUkVBRE1FIGRldm90ZWQgdG8gbWlzc2luZyBkYXRhIHByb2JsZW1zPC9hCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgIGFuZCBjb25zaWRlciBmaWxpbmcgYW4gaXNzdWUgb24gR2l0SHViLgogICAgICAgICAgICA8L3A+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1shX2RhdGFOb3RGb3VuZF1dIj4KICAgICAgICAgIDx0Zi10YWctZmlsdGVyZXIgdGFnLWZpbHRlcj0ie3tfdGFnRmlsdGVyfX0iPjwvdGYtdGFnLWZpbHRlcmVyPgogICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20tcmVwZWF0IiBpdGVtcz0iW1tfY2F0ZWdvcmllc11dIiBhcz0iY2F0ZWdvcnkiPgogICAgICAgICAgICA8dGYtY2F0ZWdvcnktcGFnaW5hdGVkLXZpZXcKICAgICAgICAgICAgICBjYXRlZ29yeT0iW1tjYXRlZ29yeV1dIgogICAgICAgICAgICAgIGluaXRpYWwtb3BlbmVkPSJbW19zaG91bGRPcGVuKGluZGV4KV1dIgogICAgICAgICAgICA+CiAgICAgICAgICAgICAgPHRlbXBsYXRlPgogICAgICAgICAgICAgICAgPHRmLWltYWdlLWxvYWRlcgogICAgICAgICAgICAgICAgICBhY3RpdmU9IltbYWN0aXZlXV0iCiAgICAgICAgICAgICAgICAgIHJ1bj0iW1tpdGVtLnJ1bl1dIgogICAgICAgICAgICAgICAgICB0YWc9IltbaXRlbS50YWddXSIKICAgICAgICAgICAgICAgICAgc2FtcGxlPSJbW2l0ZW0uc2FtcGxlXV0iCiAgICAgICAgICAgICAgICAgIG9mLXNhbXBsZXM9IltbaXRlbS5vZlNhbXBsZXNdXSIKICAgICAgICAgICAgICAgICAgdGFnLW1ldGFkYXRhPSJbW190YWdNZXRhZGF0YShfcnVuVG9UYWdJbmZvLCBpdGVtLnJ1biwgaXRlbS50YWcpXV0iCiAgICAgICAgICAgICAgICAgIHJlcXVlc3QtbWFuYWdlcj0iW1tfcmVxdWVzdE1hbmFnZXJdXSIKICAgICAgICAgICAgICAgICAgYWN0dWFsLXNpemU9IltbX2FjdHVhbFNpemVdXSIKICAgICAgICAgICAgICAgICAgYnJpZ2h0bmVzcy1hZGp1c3RtZW50PSJbW19icmlnaHRuZXNzQWRqdXN0bWVudF1dIgogICAgICAgICAgICAgICAgICBjb250cmFzdC1wZXJjZW50YWdlPSJbW19jb250cmFzdFBlcmNlbnRhZ2VdXSIKICAgICAgICAgICAgICAgID48L3RmLWltYWdlLWxvYWRlcj4KICAgICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICA8L3RmLWNhdGVnb3J5LXBhZ2luYXRlZC12aWV3PgogICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8L3RlbXBsYXRlPgogICAgICA8L2Rpdj4KICAgIDwvdGYtZGFzaGJvYXJkLWxheW91dD4KICAgIDxzdHlsZSBpbmNsdWRlPSJkYXNoYm9hcmQtc3R5bGUiPjwvc3R5bGU+CiAgICA8c3R5bGU+CiAgICAgIC5yZXNldHRhYmxlLXNsaWRlci1jb250YWluZXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIH0KICAgICAgLnJlc2V0dGFibGUtc2xpZGVyLWNvbnRhaW5lciBwYXBlci1zbGlkZXIgewogICAgICAgIGZsZXgtZ3JvdzogMTsKICAgICAgfQogICAgICAucmVzZXR0YWJsZS1zbGlkZXItY29udGFpbmVyIHBhcGVyLWJ1dHRvbiB7CiAgICAgICAgZmxleC1ncm93OiAwOwogICAgICB9CiAgICAgIC5yZXNldHRhYmxlLXNsaWRlci1jb250YWluZXIgcGFwZXItYnV0dG9uW2Rpc2FibGVkXSB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdW5zZXQ7CiAgICAgIH0KICAgICAgLngtYnV0dG9uIHsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGItdWktbGlnaHQtYWNjZW50KTsKICAgICAgICBjb2xvcjogdmFyKC0tdGItdWktZGFyay1hY2NlbnQpOwogICAgICB9CiAgICAgIC5uby1kYXRhLXdhcm5pbmcgewogICAgICAgIG1heC13aWR0aDogNTQwcHg7CiAgICAgICAgbWFyZ2luOiA4MHB4IGF1dG8gMCBhdXRvOwogICAgICB9CiAgICAgIHBhcGVyLXNsaWRlciB7CiAgICAgICAgLS1wYXBlci1zbGlkZXItYWN0aXZlLWNvbG9yOiB2YXIoLS10Yi1vcmFuZ2Utc3Ryb25nKTsKICAgICAgICAtLXBhcGVyLXNsaWRlci1rbm9iLWNvbG9yOiB2YXIoLS10Yi1vcmFuZ2Utc3Ryb25nKTsKICAgICAgICAtLXBhcGVyLXNsaWRlci1rbm9iLXN0YXJ0LWJvcmRlci1jb2xvcjogdmFyKC0tdGItb3JhbmdlLXN0cm9uZyk7CiAgICAgICAgLS1wYXBlci1zbGlkZXIta25vYi1zdGFydC1jb2xvcjogdmFyKC0tdGItb3JhbmdlLXN0cm9uZyk7CiAgICAgICAgLS1wYXBlci1zbGlkZXItbWFya2Vycy1jb2xvcjogdmFyKC0tdGItb3JhbmdlLXN0cm9uZyk7CiAgICAgICAgLS1wYXBlci1zbGlkZXItcGluLWNvbG9yOiB2YXIoLS10Yi1vcmFuZ2Utc3Ryb25nKTsKICAgICAgICAtLXBhcGVyLXNsaWRlci1waW4tc3RhcnQtY29sb3I6IHZhcigtLXRiLW9yYW5nZS1zdHJvbmcpOwogICAgICB9CiAgICA8L3N0eWxlPgogIGAsdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxXMHQucHJvdG90eXBlLCJyZWxvYWRPblJlYWR5Iix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxXMHQucHJvdG90eXBlLCJfc2VsZWN0ZWRSdW5zIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLFcwdC5wcm90b3R5cGUsIl9ydW5Ub1RhZ0luZm8iLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxXMHQucHJvdG90eXBlLCJfZGF0YU5vdEZvdW5kIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sVzB0LnByb3RvdHlwZSwiX2FjdHVhbFNpemUiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sVzB0LnByb3RvdHlwZSwiX2RlZmF1bHRCcmlnaHRuZXNzQWRqdXN0bWVudCIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxXMHQucHJvdG90eXBlLCJfZGVmYXVsdENvbnRyYXN0UGVyY2VudGFnZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxXMHQucHJvdG90eXBlLCJfYnJpZ2h0bmVzc0FkanVzdG1lbnQiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sVzB0LnByb3RvdHlwZSwiX2NvbnRyYXN0UGVyY2VudGFnZSIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxXMHQucHJvdG90eXBlLCJfdGFnRmlsdGVyIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sVzB0LnByb3RvdHlwZSwiX2NhdGVnb3JpZXNEb21SZWFkeSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxXMHQucHJvdG90eXBlLCJfcmVxdWVzdE1hbmFnZXIiLHZvaWQgMCksdChbcygiX2JyaWdodG5lc3NBZGp1c3RtZW50IiksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLFcwdC5wcm90b3R5cGUsIl9icmlnaHRuZXNzSXNEZWZhdWx0IixudWxsKSx0KFtzKCJfY29udHJhc3RQZXJjZW50YWdlIiksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLFcwdC5wcm90b3R5cGUsIl9jb250cmFzdElzRGVmYXVsdCIsbnVsbCksdChbcygiX3J1blRvVGFnSW5mbyIsIl9zZWxlY3RlZFJ1bnMiLCJfdGFnRmlsdGVyIiwiX2NhdGVnb3JpZXNEb21SZWFkeSIpLGUoImRlc2lnbjp0eXBlIixBcnJheSksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sVzB0LnByb3RvdHlwZSwiX2NhdGVnb3JpZXMiLG51bGwpLFcwdD10KFtpKCJ0Zi1pbWFnZS1kYXNoYm9hcmQiKV0sVzB0KSwoZnVuY3Rpb24odCl7dFt0LkNBTkNFTExFRD0xXT0iQ0FOQ0VMTEVEIn0pKHEwdHx8KHEwdD17fSkpLChmdW5jdGlvbih0KXt0W3QuVkVSVEVYPTFdPSJWRVJURVgiLHRbdC5GQUNFPTJdPSJGQUNFIix0W3QuQ09MT1I9M109IkNPTE9SIn0pKFkwdHx8KFkwdD17fSkpLChmdW5jdGlvbih0KXt0LlZFUlRFWD0iZmxvYXQzMiIsdC5GQUNFPSJpbnQzMiIsdC5DT0xPUj0idWludDgifSkoWDB0fHwoWDB0PXt9KSk7Y2xhc3MgJDB0e2NvbnN0cnVjdG9yKHQpe3RoaXMuX2NhbmNlbGxlcj1uZXcgeE8sdGhpcy5fcmVxdWVzdE1hbmFnZXI9dH1yZWxvYWQodCxlLG4pe3JldHVybiB0aGlzLl9jYW5jZWxsZXIuY2FuY2VsQWxsKCksdGhpcy5fZmV0Y2hNZXRhZGF0YSh0LGUsbil9X2ZldGNoRGF0YUJ5U3RlcCh0LGUsbixpLHIsbyl7Y29uc3QgYT1FcigpLnBsdWdpblJvdXRlKCJtZXNoIiwiL2RhdGEiLG5ldyBVUkxTZWFyY2hQYXJhbXMoe3RhZzplLHJ1bjp0LGNvbnRlbnRfdHlwZTpuLHNhbXBsZTpTdHJpbmcoaSksc3RlcDpTdHJpbmcocil9KSkscz1mdW5jdGlvbih0KXtsZXQgZT1bXTtmb3IobGV0IG49MDtuPHQubGVuZ3RoLzM7bisrKXtsZXQgaT1bXTtmb3IobGV0IGU9MDtlPDM7ZSsrKWkucHVzaCh0WzMqbitlXSk7ZS5wdXNoKGkpfXJldHVybiBlfSxsPXRoaXMuX2NhbmNlbGxlci5jYW5jZWxsYWJsZSgodD0+e2lmKHQuY2FuY2VsbGVkKXJldHVybiBQcm9taXNlLnJlamVjdCh7Y29kZTpxMHQuQ0FOQ0VMTEVELG1lc3NhZ2U6IlJlc3BvbnNlIHdhcyBpbnZhbGlkYXRlZC4ifSk7bGV0IGU9dC52YWx1ZTtzd2l0Y2gobil7Y2FzZSJWRVJURVgiOm8udmVydGljZXM9cyhuZXcgRmxvYXQzMkFycmF5KGUpKTticmVhaztjYXNlIkZBQ0UiOm8uZmFjZXM9cyhuZXcgSW50MzJBcnJheShlKSk7YnJlYWs7Y2FzZSJDT0xPUiI6by5jb2xvcnM9cyhuZXcgVWludDhBcnJheShlKSl9cmV0dXJuIG99KSk7cmV0dXJuIHRoaXMuX3JlcXVlc3RNYW5hZ2VyLmZldGNoKGEse21ldGhvZDoiR0VUIixoZWFkZXJzOntyZXNwb25zZVR5cGU6ImFycmF5YnVmZmVyIixjb250ZW50VHlwZTpYMHRbbl19fSkudGhlbigodD0+dC5hcnJheUJ1ZmZlcigpKSkudGhlbihsKX1mZXRjaERhdGEodCxlLG4saSl7bGV0IHI9W10sbz1uZXcgTWFwO3JldHVybiBPYmplY3Qua2V5cyhZMHQpLmZvckVhY2goKGE9Pnt0LmNvbXBvbmVudHMmMTw8WTB0W2FdJiZyLnB1c2godGhpcy5fZmV0Y2hEYXRhQnlTdGVwKGUsbixhLGksdC5zdGVwLG8pKX0pKSxQcm9taXNlLmFsbChyKX1fZmV0Y2hNZXRhZGF0YSh0LGUsbil7dGhpcy5fY2FuY2VsbGVyLmNhbmNlbEFsbCgpO2NvbnN0IGk9RXIoKS5wbHVnaW5Sb3V0ZSgibWVzaCIsIi9tZXNoZXMiLG5ldyBVUkxTZWFyY2hQYXJhbXMoe3RhZzplLHJ1bjp0LHNhbXBsZTpufSkpLHI9dGhpcy5fY2FuY2VsbGVyLmNhbmNlbGxhYmxlKCh0PT50LmNhbmNlbGxlZD9Qcm9taXNlLnJlamVjdCh7Y29kZTpxMHQuQ0FOQ0VMTEVELG1lc3NhZ2U6IlJlc3BvbnNlIHdhcyBpbnZhbGlkYXRlZC4ifSk6dC52YWx1ZSkpO3JldHVybiB0aGlzLl9yZXF1ZXN0TWFuYWdlci5mZXRjaChpKS50aGVuKCh0PT50Lmpzb24oKSkpLnRoZW4ocikudGhlbih0aGlzLl9wcm9jZXNzTWV0YWRhdGEuYmluZCh0aGlzKSl9X3Byb2Nlc3NNZXRhZGF0YSh0KXtpZighdClyZXR1cm47Y29uc3QgZT1uZXcgTWFwO2ZvcihsZXQgbj0wO248dC5sZW5ndGg7bisrKXtsZXQgaT10W25dO2UuaGFzKGkuc3RlcCl8fGUuc2V0KGkuc3RlcCxbXSksZS5nZXQoaS5zdGVwKS5wdXNoKGkpfWxldCBuPVtdO3JldHVybiBlLmZvckVhY2goKHQ9PntsZXQgZT10aGlzLl9jcmVhdGVTdGVwRGF0dW0odFswXSk7bi5wdXNoKGUpfSkpLG59X2NyZWF0ZVN0ZXBEYXR1bSh0KXtyZXR1cm57d2FsbF90aW1lOm5ldyBEYXRlKDFlMyp0LndhbGxfdGltZSksc3RlcDp0LnN0ZXAsY29uZmlnOnQuY29uZmlnLGNvbnRlbnRfdHlwZTp0LmNvbnRlbnRfdHlwZSxjb21wb25lbnRzOnQuY29tcG9uZW50c319fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgMjAxMC0yMDIxIFRocmVlLmpzIEF1dGhvcnMKICAgICAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQKICAgICAqL2NvbnN0IEswdD0iMTMxIixaMHQ9e0xFRlQ6MCxNSURETEU6MSxSSUdIVDoyLFJPVEFURTowLERPTExZOjEsUEFOOjJ9LEowdD17Uk9UQVRFOjAsUEFOOjEsRE9MTFlfUEFOOjIsRE9MTFlfUk9UQVRFOjN9LFEwdD0xMDAsdDJ0PTMwMCxlMnQ9MzAxLG4ydD0zMDIsaTJ0PTMwMyxyMnQ9MzA0LG8ydD0zMDYsYTJ0PTMwNyxzMnQ9MWUzLGwydD0xMDAxLGMydD0xMDAyLHUydD0xMDAzLGgydD0xMDA0LGQydD0xMDA1LHAydD0xMDA2LGYydD0xMDA3LG0ydD0xMDA4LGcydD0xMDA5LF8ydD0xMDEyLHkydD0xMDE0LHYydD0xMDE1LGIydD0xMDE2LHgydD0xMDIwLHcydD0xMDIyLFMydD0xMDIzLE0ydD0xMDI2LEUydD0xMDI3LFQydD0zMzc3NixDMnQ9MzM3NzcsQTJ0PTMzNzc4LGsydD0zMzc3OSxMMnQ9MzU4NDAsUDJ0PTM1ODQxLE4ydD0zNTg0MixJMnQ9MzU4NDMsUjJ0PTM3NDkyLE8ydD0zNzQ5Nix6MnQ9MjMwMCxEMnQ9MjMwMSxCMnQ9MjMwMixIMnQ9MjQwMCxGMnQ9MjQwMSxWMnQ9MjQwMixVMnQ9MjUwMCxqMnQ9MjUwMSxHMnQ9M2UzLFcydD0zMDAxLHEydD0zMDA3LFkydD0zMDAyLFgydD0zMDA0LCQydD0zMDA1LEsydD0zMDA2LFoydD03NjgwLEoydD0zNTA0NCxRMnQ9MzUwNDgsdDV0PSIzMDAgZXMiO2NsYXNzIGU1dHthZGRFdmVudExpc3RlbmVyKHQsZSl7dm9pZCAwPT09dGhpcy5fbGlzdGVuZXJzJiYodGhpcy5fbGlzdGVuZXJzPXt9KTtjb25zdCBuPXRoaXMuX2xpc3RlbmVyczt2b2lkIDA9PT1uW3RdJiYoblt0XT1bXSksLTE9PT1uW3RdLmluZGV4T2YoZSkmJm5bdF0ucHVzaChlKX1oYXNFdmVudExpc3RlbmVyKHQsZSl7aWYodm9pZCAwPT09dGhpcy5fbGlzdGVuZXJzKXJldHVybiExO2NvbnN0IG49dGhpcy5fbGlzdGVuZXJzO3JldHVybiB2b2lkIDAhPT1uW3RdJiYtMSE9PW5bdF0uaW5kZXhPZihlKX1yZW1vdmVFdmVudExpc3RlbmVyKHQsZSl7aWYodm9pZCAwPT09dGhpcy5fbGlzdGVuZXJzKXJldHVybjtjb25zdCBuPXRoaXMuX2xpc3RlbmVyc1t0XTtpZih2b2lkIDAhPT1uKXtjb25zdCB0PW4uaW5kZXhPZihlKTstMSE9PXQmJm4uc3BsaWNlKHQsMSl9fWRpc3BhdGNoRXZlbnQodCl7aWYodm9pZCAwPT09dGhpcy5fbGlzdGVuZXJzKXJldHVybjtjb25zdCBlPXRoaXMuX2xpc3RlbmVyc1t0LnR5cGVdO2lmKHZvaWQgMCE9PWUpe3QudGFyZ2V0PXRoaXM7Y29uc3Qgbj1lLnNsaWNlKDApO2ZvcihsZXQgZT0wLGk9bi5sZW5ndGg7ZTxpO2UrKyluW2VdLmNhbGwodGhpcyx0KTt0LnRhcmdldD1udWxsfX19Y29uc3QgbjV0PVtdO2ZvcihsZXQgdD0wO3Q8MjU2O3QrKyluNXRbdF09KHQ8MTY/IjAiOiIiKSt0LnRvU3RyaW5nKDE2KTtsZXQgaTV0PTEyMzQ1Njc7Y29uc3QgcjV0PU1hdGguUEkvMTgwLG81dD0xODAvTWF0aC5QSTtmdW5jdGlvbiBhNXQoKXtjb25zdCB0PTQyOTQ5NjcyOTUqTWF0aC5yYW5kb20oKXwwLGU9NDI5NDk2NzI5NSpNYXRoLnJhbmRvbSgpfDAsbj00Mjk0OTY3Mjk1Kk1hdGgucmFuZG9tKCl8MCxpPTQyOTQ5NjcyOTUqTWF0aC5yYW5kb20oKXwwO3JldHVybihuNXRbMjU1JnRdK241dFt0Pj44JjI1NV0rbjV0W3Q+PjE2JjI1NV0rbjV0W3Q+PjI0JjI1NV0rIi0iK241dFsyNTUmZV0rbjV0W2U+PjgmMjU1XSsiLSIrbjV0W2U+PjE2JjE1fDY0XStuNXRbZT4+MjQmMjU1XSsiLSIrbjV0WzYzJm58MTI4XStuNXRbbj4+OCYyNTVdKyItIituNXRbbj4+MTYmMjU1XStuNXRbbj4+MjQmMjU1XStuNXRbMjU1JmldK241dFtpPj44JjI1NV0rbjV0W2k+PjE2JjI1NV0rbjV0W2k+PjI0JjI1NV0pLnRvVXBwZXJDYXNlKCl9ZnVuY3Rpb24gczV0KHQsZSxuKXtyZXR1cm4gTWF0aC5tYXgoZSxNYXRoLm1pbihuLHQpKX1mdW5jdGlvbiBsNXQodCxlKXtyZXR1cm4odCVlK2UpJWV9ZnVuY3Rpb24gYzV0KHQsZSxuKXtyZXR1cm4oMS1uKSp0K24qZX1mdW5jdGlvbiB1NXQodCl7cmV0dXJuIDA9PSh0JnQtMSkmJjAhPT10fWZ1bmN0aW9uIGg1dCh0KXtyZXR1cm4gTWF0aC5wb3coMixNYXRoLmNlaWwoTWF0aC5sb2codCkvTWF0aC5MTjIpKX1mdW5jdGlvbiBkNXQodCl7cmV0dXJuIE1hdGgucG93KDIsTWF0aC5mbG9vcihNYXRoLmxvZyh0KS9NYXRoLkxOMikpfXZhciBwNXQ9T2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsREVHMlJBRDpyNXQsUkFEMkRFRzpvNXQsZ2VuZXJhdGVVVUlEOmE1dCxjbGFtcDpzNXQsZXVjbGlkZWFuTW9kdWxvOmw1dCxtYXBMaW5lYXI6ZnVuY3Rpb24gZjV0KHQsZSxuLGkscil7cmV0dXJuIGkrKHQtZSkqKHItaSkvKG4tZSl9LGludmVyc2VMZXJwOmZ1bmN0aW9uIG01dCh0LGUsbil7cmV0dXJuIHQhPT1lPyhuLXQpLyhlLXQpOjB9LGxlcnA6YzV0LGRhbXA6ZnVuY3Rpb24gZzV0KHQsZSxuLGkpe3JldHVybiBjNXQodCxlLDEtTWF0aC5leHAoLW4qaSkpfSxwaW5ncG9uZzpmdW5jdGlvbiBfNXQodCxlPTEpe3JldHVybiBlLU1hdGguYWJzKGw1dCh0LDIqZSktZSl9LHNtb290aHN0ZXA6ZnVuY3Rpb24geTV0KHQsZSxuKXtyZXR1cm4gdDw9ZT8wOnQ+PW4/MToodD0odC1lKS8obi1lKSkqdCooMy0yKnQpfSxzbW9vdGhlcnN0ZXA6ZnVuY3Rpb24gdjV0KHQsZSxuKXtyZXR1cm4gdDw9ZT8wOnQ+PW4/MToodD0odC1lKS8obi1lKSkqdCp0Kih0Kig2KnQtMTUpKzEwKX0scmFuZEludDpmdW5jdGlvbiBiNXQodCxlKXtyZXR1cm4gdCtNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqKGUtdCsxKSl9LHJhbmRGbG9hdDpmdW5jdGlvbiB4NXQodCxlKXtyZXR1cm4gdCtNYXRoLnJhbmRvbSgpKihlLXQpfSxyYW5kRmxvYXRTcHJlYWQ6ZnVuY3Rpb24gdzV0KHQpe3JldHVybiB0KiguNS1NYXRoLnJhbmRvbSgpKX0sc2VlZGVkUmFuZG9tOmZ1bmN0aW9uIFM1dCh0KXtyZXR1cm4gdm9pZCAwIT09dCYmKGk1dD10JTIxNDc0ODM2NDcpLGk1dD0xNjgwNyppNXQlMjE0NzQ4MzY0NywoaTV0LTEpLzIxNDc0ODM2NDZ9LGRlZ1RvUmFkOmZ1bmN0aW9uIE01dCh0KXtyZXR1cm4gdCpyNXR9LHJhZFRvRGVnOmZ1bmN0aW9uIEU1dCh0KXtyZXR1cm4gdCpvNXR9LGlzUG93ZXJPZlR3bzp1NXQsY2VpbFBvd2VyT2ZUd286aDV0LGZsb29yUG93ZXJPZlR3bzpkNXQsc2V0UXVhdGVybmlvbkZyb21Qcm9wZXJFdWxlcjpmdW5jdGlvbiBUNXQodCxlLG4saSxyKXtjb25zdCBvPU1hdGguY29zLGE9TWF0aC5zaW4scz1vKG4vMiksbD1hKG4vMiksYz1vKChlK2kpLzIpLHU9YSgoZStpKS8yKSxoPW8oKGUtaSkvMiksZD1hKChlLWkpLzIpLHA9bygoaS1lKS8yKSxmPWEoKGktZSkvMik7c3dpdGNoKHIpe2Nhc2UiWFlYIjp0LnNldChzKnUsbCpoLGwqZCxzKmMpO2JyZWFrO2Nhc2UiWVpZIjp0LnNldChsKmQscyp1LGwqaCxzKmMpO2JyZWFrO2Nhc2UiWlhaIjp0LnNldChsKmgsbCpkLHMqdSxzKmMpO2JyZWFrO2Nhc2UiWFpYIjp0LnNldChzKnUsbCpmLGwqcCxzKmMpO2JyZWFrO2Nhc2UiWVhZIjp0LnNldChsKnAscyp1LGwqZixzKmMpO2JyZWFrO2Nhc2UiWllaIjp0LnNldChsKmYsbCpwLHMqdSxzKmMpO2JyZWFrO2RlZmF1bHQ6Y29uc29sZS53YXJuKCJUSFJFRS5NYXRoVXRpbHM6IC5zZXRRdWF0ZXJuaW9uRnJvbVByb3BlckV1bGVyKCkgZW5jb3VudGVyZWQgYW4gdW5rbm93biBvcmRlcjogIityKX19fSk7Y2xhc3MgQzV0e2NvbnN0cnVjdG9yKHQ9MCxlPTApe3RoaXMueD10LHRoaXMueT1lfWdldCB3aWR0aCgpe3JldHVybiB0aGlzLnh9c2V0IHdpZHRoKHQpe3RoaXMueD10fWdldCBoZWlnaHQoKXtyZXR1cm4gdGhpcy55fXNldCBoZWlnaHQodCl7dGhpcy55PXR9c2V0KHQsZSl7cmV0dXJuIHRoaXMueD10LHRoaXMueT1lLHRoaXN9c2V0U2NhbGFyKHQpe3JldHVybiB0aGlzLng9dCx0aGlzLnk9dCx0aGlzfXNldFgodCl7cmV0dXJuIHRoaXMueD10LHRoaXN9c2V0WSh0KXtyZXR1cm4gdGhpcy55PXQsdGhpc31zZXRDb21wb25lbnQodCxlKXtzd2l0Y2godCl7Y2FzZSAwOnRoaXMueD1lO2JyZWFrO2Nhc2UgMTp0aGlzLnk9ZTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiaW5kZXggaXMgb3V0IG9mIHJhbmdlOiAiK3QpfXJldHVybiB0aGlzfWdldENvbXBvbmVudCh0KXtzd2l0Y2godCl7Y2FzZSAwOnJldHVybiB0aGlzLng7Y2FzZSAxOnJldHVybiB0aGlzLnk7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoImluZGV4IGlzIG91dCBvZiByYW5nZTogIit0KX19Y2xvbmUoKXtyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IodGhpcy54LHRoaXMueSl9Y29weSh0KXtyZXR1cm4gdGhpcy54PXQueCx0aGlzLnk9dC55LHRoaXN9YWRkKHQsZSl7cmV0dXJuIHZvaWQgMCE9PWU/KGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMjogLmFkZCgpIG5vdyBvbmx5IGFjY2VwdHMgb25lIGFyZ3VtZW50LiBVc2UgLmFkZFZlY3RvcnMoIGEsIGIgKSBpbnN0ZWFkLiIpLHRoaXMuYWRkVmVjdG9ycyh0LGUpKToodGhpcy54Kz10LngsdGhpcy55Kz10LnksdGhpcyl9YWRkU2NhbGFyKHQpe3JldHVybiB0aGlzLngrPXQsdGhpcy55Kz10LHRoaXN9YWRkVmVjdG9ycyh0LGUpe3JldHVybiB0aGlzLng9dC54K2UueCx0aGlzLnk9dC55K2UueSx0aGlzfWFkZFNjYWxlZFZlY3Rvcih0LGUpe3JldHVybiB0aGlzLngrPXQueCplLHRoaXMueSs9dC55KmUsdGhpc31zdWIodCxlKXtyZXR1cm4gdm9pZCAwIT09ZT8oY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IyOiAuc3ViKCkgbm93IG9ubHkgYWNjZXB0cyBvbmUgYXJndW1lbnQuIFVzZSAuc3ViVmVjdG9ycyggYSwgYiApIGluc3RlYWQuIiksdGhpcy5zdWJWZWN0b3JzKHQsZSkpOih0aGlzLngtPXQueCx0aGlzLnktPXQueSx0aGlzKX1zdWJTY2FsYXIodCl7cmV0dXJuIHRoaXMueC09dCx0aGlzLnktPXQsdGhpc31zdWJWZWN0b3JzKHQsZSl7cmV0dXJuIHRoaXMueD10LngtZS54LHRoaXMueT10LnktZS55LHRoaXN9bXVsdGlwbHkodCl7cmV0dXJuIHRoaXMueCo9dC54LHRoaXMueSo9dC55LHRoaXN9bXVsdGlwbHlTY2FsYXIodCl7cmV0dXJuIHRoaXMueCo9dCx0aGlzLnkqPXQsdGhpc31kaXZpZGUodCl7cmV0dXJuIHRoaXMueC89dC54LHRoaXMueS89dC55LHRoaXN9ZGl2aWRlU2NhbGFyKHQpe3JldHVybiB0aGlzLm11bHRpcGx5U2NhbGFyKDEvdCl9YXBwbHlNYXRyaXgzKHQpe2NvbnN0IGU9dGhpcy54LG49dGhpcy55LGk9dC5lbGVtZW50cztyZXR1cm4gdGhpcy54PWlbMF0qZStpWzNdKm4raVs2XSx0aGlzLnk9aVsxXSplK2lbNF0qbitpWzddLHRoaXN9bWluKHQpe3JldHVybiB0aGlzLng9TWF0aC5taW4odGhpcy54LHQueCksdGhpcy55PU1hdGgubWluKHRoaXMueSx0LnkpLHRoaXN9bWF4KHQpe3JldHVybiB0aGlzLng9TWF0aC5tYXgodGhpcy54LHQueCksdGhpcy55PU1hdGgubWF4KHRoaXMueSx0LnkpLHRoaXN9Y2xhbXAodCxlKXtyZXR1cm4gdGhpcy54PU1hdGgubWF4KHQueCxNYXRoLm1pbihlLngsdGhpcy54KSksdGhpcy55PU1hdGgubWF4KHQueSxNYXRoLm1pbihlLnksdGhpcy55KSksdGhpc31jbGFtcFNjYWxhcih0LGUpe3JldHVybiB0aGlzLng9TWF0aC5tYXgodCxNYXRoLm1pbihlLHRoaXMueCkpLHRoaXMueT1NYXRoLm1heCh0LE1hdGgubWluKGUsdGhpcy55KSksdGhpc31jbGFtcExlbmd0aCh0LGUpe2NvbnN0IG49dGhpcy5sZW5ndGgoKTtyZXR1cm4gdGhpcy5kaXZpZGVTY2FsYXIobnx8MSkubXVsdGlwbHlTY2FsYXIoTWF0aC5tYXgodCxNYXRoLm1pbihlLG4pKSl9Zmxvb3IoKXtyZXR1cm4gdGhpcy54PU1hdGguZmxvb3IodGhpcy54KSx0aGlzLnk9TWF0aC5mbG9vcih0aGlzLnkpLHRoaXN9Y2VpbCgpe3JldHVybiB0aGlzLng9TWF0aC5jZWlsKHRoaXMueCksdGhpcy55PU1hdGguY2VpbCh0aGlzLnkpLHRoaXN9cm91bmQoKXtyZXR1cm4gdGhpcy54PU1hdGgucm91bmQodGhpcy54KSx0aGlzLnk9TWF0aC5yb3VuZCh0aGlzLnkpLHRoaXN9cm91bmRUb1plcm8oKXtyZXR1cm4gdGhpcy54PXRoaXMueDwwP01hdGguY2VpbCh0aGlzLngpOk1hdGguZmxvb3IodGhpcy54KSx0aGlzLnk9dGhpcy55PDA/TWF0aC5jZWlsKHRoaXMueSk6TWF0aC5mbG9vcih0aGlzLnkpLHRoaXN9bmVnYXRlKCl7cmV0dXJuIHRoaXMueD0tdGhpcy54LHRoaXMueT0tdGhpcy55LHRoaXN9ZG90KHQpe3JldHVybiB0aGlzLngqdC54K3RoaXMueSp0Lnl9Y3Jvc3ModCl7cmV0dXJuIHRoaXMueCp0LnktdGhpcy55KnQueH1sZW5ndGhTcSgpe3JldHVybiB0aGlzLngqdGhpcy54K3RoaXMueSp0aGlzLnl9bGVuZ3RoKCl7cmV0dXJuIE1hdGguc3FydCh0aGlzLngqdGhpcy54K3RoaXMueSp0aGlzLnkpfW1hbmhhdHRhbkxlbmd0aCgpe3JldHVybiBNYXRoLmFicyh0aGlzLngpK01hdGguYWJzKHRoaXMueSl9bm9ybWFsaXplKCl7cmV0dXJuIHRoaXMuZGl2aWRlU2NhbGFyKHRoaXMubGVuZ3RoKCl8fDEpfWFuZ2xlKCl7cmV0dXJuIE1hdGguYXRhbjIoLXRoaXMueSwtdGhpcy54KStNYXRoLlBJfWRpc3RhbmNlVG8odCl7cmV0dXJuIE1hdGguc3FydCh0aGlzLmRpc3RhbmNlVG9TcXVhcmVkKHQpKX1kaXN0YW5jZVRvU3F1YXJlZCh0KXtjb25zdCBlPXRoaXMueC10Lngsbj10aGlzLnktdC55O3JldHVybiBlKmUrbipufW1hbmhhdHRhbkRpc3RhbmNlVG8odCl7cmV0dXJuIE1hdGguYWJzKHRoaXMueC10LngpK01hdGguYWJzKHRoaXMueS10LnkpfXNldExlbmd0aCh0KXtyZXR1cm4gdGhpcy5ub3JtYWxpemUoKS5tdWx0aXBseVNjYWxhcih0KX1sZXJwKHQsZSl7cmV0dXJuIHRoaXMueCs9KHQueC10aGlzLngpKmUsdGhpcy55Kz0odC55LXRoaXMueSkqZSx0aGlzfWxlcnBWZWN0b3JzKHQsZSxuKXtyZXR1cm4gdGhpcy54PXQueCsoZS54LXQueCkqbix0aGlzLnk9dC55KyhlLnktdC55KSpuLHRoaXN9ZXF1YWxzKHQpe3JldHVybiB0Lng9PT10aGlzLngmJnQueT09PXRoaXMueX1mcm9tQXJyYXkodCxlPTApe3JldHVybiB0aGlzLng9dFtlXSx0aGlzLnk9dFtlKzFdLHRoaXN9dG9BcnJheSh0PVtdLGU9MCl7cmV0dXJuIHRbZV09dGhpcy54LHRbZSsxXT10aGlzLnksdH1mcm9tQnVmZmVyQXR0cmlidXRlKHQsZSxuKXtyZXR1cm4gdm9pZCAwIT09biYmY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IyOiBvZmZzZXQgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIC5mcm9tQnVmZmVyQXR0cmlidXRlKCkuIiksdGhpcy54PXQuZ2V0WChlKSx0aGlzLnk9dC5nZXRZKGUpLHRoaXN9cm90YXRlQXJvdW5kKHQsZSl7Y29uc3Qgbj1NYXRoLmNvcyhlKSxpPU1hdGguc2luKGUpLHI9dGhpcy54LXQueCxvPXRoaXMueS10Lnk7cmV0dXJuIHRoaXMueD1yKm4tbyppK3QueCx0aGlzLnk9cippK28qbit0LnksdGhpc31yYW5kb20oKXtyZXR1cm4gdGhpcy54PU1hdGgucmFuZG9tKCksdGhpcy55PU1hdGgucmFuZG9tKCksdGhpc319QzV0LnByb3RvdHlwZS5pc1ZlY3RvcjI9ITA7Y2xhc3MgQTV0e2NvbnN0cnVjdG9yKCl7dGhpcy5lbGVtZW50cz1bMSwwLDAsMCwxLDAsMCwwLDFdLGFyZ3VtZW50cy5sZW5ndGg+MCYmY29uc29sZS5lcnJvcigiVEhSRUUuTWF0cml4MzogdGhlIGNvbnN0cnVjdG9yIG5vIGxvbmdlciByZWFkcyBhcmd1bWVudHMuIHVzZSAuc2V0KCkgaW5zdGVhZC4iKX1zZXQodCxlLG4saSxyLG8sYSxzLGwpe2NvbnN0IGM9dGhpcy5lbGVtZW50cztyZXR1cm4gY1swXT10LGNbMV09aSxjWzJdPWEsY1szXT1lLGNbNF09cixjWzVdPXMsY1s2XT1uLGNbN109byxjWzhdPWwsdGhpc31pZGVudGl0eSgpe3JldHVybiB0aGlzLnNldCgxLDAsMCwwLDEsMCwwLDAsMSksdGhpc31jb3B5KHQpe2NvbnN0IGU9dGhpcy5lbGVtZW50cyxuPXQuZWxlbWVudHM7cmV0dXJuIGVbMF09blswXSxlWzFdPW5bMV0sZVsyXT1uWzJdLGVbM109blszXSxlWzRdPW5bNF0sZVs1XT1uWzVdLGVbNl09bls2XSxlWzddPW5bN10sZVs4XT1uWzhdLHRoaXN9ZXh0cmFjdEJhc2lzKHQsZSxuKXtyZXR1cm4gdC5zZXRGcm9tTWF0cml4M0NvbHVtbih0aGlzLDApLGUuc2V0RnJvbU1hdHJpeDNDb2x1bW4odGhpcywxKSxuLnNldEZyb21NYXRyaXgzQ29sdW1uKHRoaXMsMiksdGhpc31zZXRGcm9tTWF0cml4NCh0KXtjb25zdCBlPXQuZWxlbWVudHM7cmV0dXJuIHRoaXMuc2V0KGVbMF0sZVs0XSxlWzhdLGVbMV0sZVs1XSxlWzldLGVbMl0sZVs2XSxlWzEwXSksdGhpc31tdWx0aXBseSh0KXtyZXR1cm4gdGhpcy5tdWx0aXBseU1hdHJpY2VzKHRoaXMsdCl9cHJlbXVsdGlwbHkodCl7cmV0dXJuIHRoaXMubXVsdGlwbHlNYXRyaWNlcyh0LHRoaXMpfW11bHRpcGx5TWF0cmljZXModCxlKXtjb25zdCBuPXQuZWxlbWVudHMsaT1lLmVsZW1lbnRzLHI9dGhpcy5lbGVtZW50cyxvPW5bMF0sYT1uWzNdLHM9bls2XSxsPW5bMV0sYz1uWzRdLHU9bls3XSxoPW5bMl0sZD1uWzVdLHA9bls4XSxmPWlbMF0sbT1pWzNdLGc9aVs2XSxfPWlbMV0seT1pWzRdLHY9aVs3XSxiPWlbMl0seD1pWzVdLHc9aVs4XTtyZXR1cm4gclswXT1vKmYrYSpfK3MqYixyWzNdPW8qbSthKnkrcyp4LHJbNl09bypnK2EqditzKncsclsxXT1sKmYrYypfK3UqYixyWzRdPWwqbStjKnkrdSp4LHJbN109bCpnK2Mqdit1KncsclsyXT1oKmYrZCpfK3AqYixyWzVdPWgqbStkKnkrcCp4LHJbOF09aCpnK2QqditwKncsdGhpc31tdWx0aXBseVNjYWxhcih0KXtjb25zdCBlPXRoaXMuZWxlbWVudHM7cmV0dXJuIGVbMF0qPXQsZVszXSo9dCxlWzZdKj10LGVbMV0qPXQsZVs0XSo9dCxlWzddKj10LGVbMl0qPXQsZVs1XSo9dCxlWzhdKj10LHRoaXN9ZGV0ZXJtaW5hbnQoKXtjb25zdCB0PXRoaXMuZWxlbWVudHMsZT10WzBdLG49dFsxXSxpPXRbMl0scj10WzNdLG89dFs0XSxhPXRbNV0scz10WzZdLGw9dFs3XSxjPXRbOF07cmV0dXJuIGUqbypjLWUqYSpsLW4qcipjK24qYSpzK2kqcipsLWkqbypzfWludmVydCgpe2NvbnN0IHQ9dGhpcy5lbGVtZW50cyxlPXRbMF0sbj10WzFdLGk9dFsyXSxyPXRbM10sbz10WzRdLGE9dFs1XSxzPXRbNl0sbD10WzddLGM9dFs4XSx1PWMqby1hKmwsaD1hKnMtYypyLGQ9bCpyLW8qcyxwPWUqdStuKmgraSpkO2lmKDA9PT1wKXJldHVybiB0aGlzLnNldCgwLDAsMCwwLDAsMCwwLDAsMCk7Y29uc3QgZj0xL3A7cmV0dXJuIHRbMF09dSpmLHRbMV09KGkqbC1jKm4pKmYsdFsyXT0oYSpuLWkqbykqZix0WzNdPWgqZix0WzRdPShjKmUtaSpzKSpmLHRbNV09KGkqci1hKmUpKmYsdFs2XT1kKmYsdFs3XT0obipzLWwqZSkqZix0WzhdPShvKmUtbipyKSpmLHRoaXN9dHJhbnNwb3NlKCl7bGV0IHQ7Y29uc3QgZT10aGlzLmVsZW1lbnRzO3JldHVybiB0PWVbMV0sZVsxXT1lWzNdLGVbM109dCx0PWVbMl0sZVsyXT1lWzZdLGVbNl09dCx0PWVbNV0sZVs1XT1lWzddLGVbN109dCx0aGlzfWdldE5vcm1hbE1hdHJpeCh0KXtyZXR1cm4gdGhpcy5zZXRGcm9tTWF0cml4NCh0KS5pbnZlcnQoKS50cmFuc3Bvc2UoKX10cmFuc3Bvc2VJbnRvQXJyYXkodCl7Y29uc3QgZT10aGlzLmVsZW1lbnRzO3JldHVybiB0WzBdPWVbMF0sdFsxXT1lWzNdLHRbMl09ZVs2XSx0WzNdPWVbMV0sdFs0XT1lWzRdLHRbNV09ZVs3XSx0WzZdPWVbMl0sdFs3XT1lWzVdLHRbOF09ZVs4XSx0aGlzfXNldFV2VHJhbnNmb3JtKHQsZSxuLGkscixvLGEpe2NvbnN0IHM9TWF0aC5jb3MociksbD1NYXRoLnNpbihyKTtyZXR1cm4gdGhpcy5zZXQobipzLG4qbCwtbioocypvK2wqYSkrbyt0LC1pKmwsaSpzLC1pKigtbCpvK3MqYSkrYStlLDAsMCwxKSx0aGlzfXNjYWxlKHQsZSl7Y29uc3Qgbj10aGlzLmVsZW1lbnRzO3JldHVybiBuWzBdKj10LG5bM10qPXQsbls2XSo9dCxuWzFdKj1lLG5bNF0qPWUsbls3XSo9ZSx0aGlzfXJvdGF0ZSh0KXtjb25zdCBlPU1hdGguY29zKHQpLG49TWF0aC5zaW4odCksaT10aGlzLmVsZW1lbnRzLHI9aVswXSxvPWlbM10sYT1pWzZdLHM9aVsxXSxsPWlbNF0sYz1pWzddO3JldHVybiBpWzBdPWUqcituKnMsaVszXT1lKm8rbipsLGlbNl09ZSphK24qYyxpWzFdPS1uKnIrZSpzLGlbNF09LW4qbytlKmwsaVs3XT0tbiphK2UqYyx0aGlzfXRyYW5zbGF0ZSh0LGUpe2NvbnN0IG49dGhpcy5lbGVtZW50cztyZXR1cm4gblswXSs9dCpuWzJdLG5bM10rPXQqbls1XSxuWzZdKz10Km5bOF0sblsxXSs9ZSpuWzJdLG5bNF0rPWUqbls1XSxuWzddKz1lKm5bOF0sdGhpc31lcXVhbHModCl7Y29uc3QgZT10aGlzLmVsZW1lbnRzLG49dC5lbGVtZW50cztmb3IobGV0IHQ9MDt0PDk7dCsrKWlmKGVbdF0hPT1uW3RdKXJldHVybiExO3JldHVybiEwfWZyb21BcnJheSh0LGU9MCl7Zm9yKGxldCBuPTA7bjw5O24rKyl0aGlzLmVsZW1lbnRzW25dPXRbbitlXTtyZXR1cm4gdGhpc310b0FycmF5KHQ9W10sZT0wKXtjb25zdCBuPXRoaXMuZWxlbWVudHM7cmV0dXJuIHRbZV09blswXSx0W2UrMV09blsxXSx0W2UrMl09blsyXSx0W2UrM109blszXSx0W2UrNF09bls0XSx0W2UrNV09bls1XSx0W2UrNl09bls2XSx0W2UrN109bls3XSx0W2UrOF09bls4XSx0fWNsb25lKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5mcm9tQXJyYXkodGhpcy5lbGVtZW50cyl9fWxldCBrNXQ7QTV0LnByb3RvdHlwZS5pc01hdHJpeDM9ITA7Y2xhc3MgTDV0e3N0YXRpYyBnZXREYXRhVVJMKHQpe2lmKC9eZGF0YTovaS50ZXN0KHQuc3JjKSlyZXR1cm4gdC5zcmM7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBIVE1MQ2FudmFzRWxlbWVudClyZXR1cm4gdC5zcmM7bGV0IGU7aWYodCBpbnN0YW5jZW9mIEhUTUxDYW52YXNFbGVtZW50KWU9dDtlbHNle3ZvaWQgMD09PWs1dCYmKGs1dD1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiLCJjYW52YXMiKSksazV0LndpZHRoPXQud2lkdGgsazV0LmhlaWdodD10LmhlaWdodDtjb25zdCBuPWs1dC5nZXRDb250ZXh0KCIyZCIpO3QgaW5zdGFuY2VvZiBJbWFnZURhdGE/bi5wdXRJbWFnZURhdGEodCwwLDApOm4uZHJhd0ltYWdlKHQsMCwwLHQud2lkdGgsdC5oZWlnaHQpLGU9azV0fXJldHVybiBlLndpZHRoPjIwNDh8fGUuaGVpZ2h0PjIwNDg/KGNvbnNvbGUud2FybigiVEhSRUUuSW1hZ2VVdGlscy5nZXREYXRhVVJMOiBJbWFnZSBjb252ZXJ0ZWQgdG8ganBnIGZvciBwZXJmb3JtYW5jZSByZWFzb25zIix0KSxlLnRvRGF0YVVSTCgiaW1hZ2UvanBlZyIsLjYpKTplLnRvRGF0YVVSTCgiaW1hZ2UvcG5nIil9fWxldCBQNXQ9MDtjbGFzcyBONXQgZXh0ZW5kcyBlNXR7Y29uc3RydWN0b3IodD1ONXQuREVGQVVMVF9JTUFHRSxlPU41dC5ERUZBVUxUX01BUFBJTkcsbj0xMDAxLGk9MTAwMSxyPTEwMDYsbz0xMDA4LGE9MTAyMyxzPTEwMDksbD0xLGM9M2UzKXtzdXBlcigpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJpZCIse3ZhbHVlOlA1dCsrfSksdGhpcy51dWlkPWE1dCgpLHRoaXMubmFtZT0iIix0aGlzLmltYWdlPXQsdGhpcy5taXBtYXBzPVtdLHRoaXMubWFwcGluZz1lLHRoaXMud3JhcFM9bix0aGlzLndyYXBUPWksdGhpcy5tYWdGaWx0ZXI9cix0aGlzLm1pbkZpbHRlcj1vLHRoaXMuYW5pc290cm9weT1sLHRoaXMuZm9ybWF0PWEsdGhpcy5pbnRlcm5hbEZvcm1hdD1udWxsLHRoaXMudHlwZT1zLHRoaXMub2Zmc2V0PW5ldyBDNXQoMCwwKSx0aGlzLnJlcGVhdD1uZXcgQzV0KDEsMSksdGhpcy5jZW50ZXI9bmV3IEM1dCgwLDApLHRoaXMucm90YXRpb249MCx0aGlzLm1hdHJpeEF1dG9VcGRhdGU9ITAsdGhpcy5tYXRyaXg9bmV3IEE1dCx0aGlzLmdlbmVyYXRlTWlwbWFwcz0hMCx0aGlzLnByZW11bHRpcGx5QWxwaGE9ITEsdGhpcy5mbGlwWT0hMCx0aGlzLnVucGFja0FsaWdubWVudD00LHRoaXMuZW5jb2Rpbmc9Yyx0aGlzLnZlcnNpb249MCx0aGlzLm9uVXBkYXRlPW51bGwsdGhpcy5pc1JlbmRlclRhcmdldFRleHR1cmU9ITF9dXBkYXRlTWF0cml4KCl7dGhpcy5tYXRyaXguc2V0VXZUcmFuc2Zvcm0odGhpcy5vZmZzZXQueCx0aGlzLm9mZnNldC55LHRoaXMucmVwZWF0LngsdGhpcy5yZXBlYXQueSx0aGlzLnJvdGF0aW9uLHRoaXMuY2VudGVyLngsdGhpcy5jZW50ZXIueSl9Y2xvbmUoKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IpLmNvcHkodGhpcyl9Y29weSh0KXtyZXR1cm4gdGhpcy5uYW1lPXQubmFtZSx0aGlzLmltYWdlPXQuaW1hZ2UsdGhpcy5taXBtYXBzPXQubWlwbWFwcy5zbGljZSgwKSx0aGlzLm1hcHBpbmc9dC5tYXBwaW5nLHRoaXMud3JhcFM9dC53cmFwUyx0aGlzLndyYXBUPXQud3JhcFQsdGhpcy5tYWdGaWx0ZXI9dC5tYWdGaWx0ZXIsdGhpcy5taW5GaWx0ZXI9dC5taW5GaWx0ZXIsdGhpcy5hbmlzb3Ryb3B5PXQuYW5pc290cm9weSx0aGlzLmZvcm1hdD10LmZvcm1hdCx0aGlzLmludGVybmFsRm9ybWF0PXQuaW50ZXJuYWxGb3JtYXQsdGhpcy50eXBlPXQudHlwZSx0aGlzLm9mZnNldC5jb3B5KHQub2Zmc2V0KSx0aGlzLnJlcGVhdC5jb3B5KHQucmVwZWF0KSx0aGlzLmNlbnRlci5jb3B5KHQuY2VudGVyKSx0aGlzLnJvdGF0aW9uPXQucm90YXRpb24sdGhpcy5tYXRyaXhBdXRvVXBkYXRlPXQubWF0cml4QXV0b1VwZGF0ZSx0aGlzLm1hdHJpeC5jb3B5KHQubWF0cml4KSx0aGlzLmdlbmVyYXRlTWlwbWFwcz10LmdlbmVyYXRlTWlwbWFwcyx0aGlzLnByZW11bHRpcGx5QWxwaGE9dC5wcmVtdWx0aXBseUFscGhhLHRoaXMuZmxpcFk9dC5mbGlwWSx0aGlzLnVucGFja0FsaWdubWVudD10LnVucGFja0FsaWdubWVudCx0aGlzLmVuY29kaW5nPXQuZW5jb2RpbmcsdGhpc310b0pTT04odCl7Y29uc3QgZT12b2lkIDA9PT10fHwic3RyaW5nIj09dHlwZW9mIHQ7aWYoIWUmJnZvaWQgMCE9PXQudGV4dHVyZXNbdGhpcy51dWlkXSlyZXR1cm4gdC50ZXh0dXJlc1t0aGlzLnV1aWRdO2NvbnN0IG49e21ldGFkYXRhOnt2ZXJzaW9uOjQuNSx0eXBlOiJUZXh0dXJlIixnZW5lcmF0b3I6IlRleHR1cmUudG9KU09OIn0sdXVpZDp0aGlzLnV1aWQsbmFtZTp0aGlzLm5hbWUsbWFwcGluZzp0aGlzLm1hcHBpbmcscmVwZWF0Olt0aGlzLnJlcGVhdC54LHRoaXMucmVwZWF0LnldLG9mZnNldDpbdGhpcy5vZmZzZXQueCx0aGlzLm9mZnNldC55XSxjZW50ZXI6W3RoaXMuY2VudGVyLngsdGhpcy5jZW50ZXIueV0scm90YXRpb246dGhpcy5yb3RhdGlvbix3cmFwOlt0aGlzLndyYXBTLHRoaXMud3JhcFRdLGZvcm1hdDp0aGlzLmZvcm1hdCx0eXBlOnRoaXMudHlwZSxlbmNvZGluZzp0aGlzLmVuY29kaW5nLG1pbkZpbHRlcjp0aGlzLm1pbkZpbHRlcixtYWdGaWx0ZXI6dGhpcy5tYWdGaWx0ZXIsYW5pc290cm9weTp0aGlzLmFuaXNvdHJvcHksZmxpcFk6dGhpcy5mbGlwWSxwcmVtdWx0aXBseUFscGhhOnRoaXMucHJlbXVsdGlwbHlBbHBoYSx1bnBhY2tBbGlnbm1lbnQ6dGhpcy51bnBhY2tBbGlnbm1lbnR9O2lmKHZvaWQgMCE9PXRoaXMuaW1hZ2Upe2NvbnN0IGk9dGhpcy5pbWFnZTtpZih2b2lkIDA9PT1pLnV1aWQmJihpLnV1aWQ9YTV0KCkpLCFlJiZ2b2lkIDA9PT10LmltYWdlc1tpLnV1aWRdKXtsZXQgZTtpZihBcnJheS5pc0FycmF5KGkpKXtlPVtdO2ZvcihsZXQgdD0wLG49aS5sZW5ndGg7dDxuO3QrKyllLnB1c2goSTV0KGlbdF0uaXNEYXRhVGV4dHVyZT9pW3RdLmltYWdlOmlbdF0pKX1lbHNlIGU9STV0KGkpO3QuaW1hZ2VzW2kudXVpZF09e3V1aWQ6aS51dWlkLHVybDplfX1uLmltYWdlPWkudXVpZH1yZXR1cm4gZXx8KHQudGV4dHVyZXNbdGhpcy51dWlkXT1uKSxufWRpc3Bvc2UoKXt0aGlzLmRpc3BhdGNoRXZlbnQoe3R5cGU6ImRpc3Bvc2UifSl9dHJhbnNmb3JtVXYodCl7aWYodGhpcy5tYXBwaW5nIT09dDJ0KXJldHVybiB0O2lmKHQuYXBwbHlNYXRyaXgzKHRoaXMubWF0cml4KSx0Lng8MHx8dC54PjEpc3dpdGNoKHRoaXMud3JhcFMpe2Nhc2UgczJ0OnQueD10LngtTWF0aC5mbG9vcih0LngpO2JyZWFrO2Nhc2UgbDJ0OnQueD10Lng8MD8wOjE7YnJlYWs7Y2FzZSBjMnQ6dC54PTE9PT1NYXRoLmFicyhNYXRoLmZsb29yKHQueCklMik/TWF0aC5jZWlsKHQueCktdC54OnQueC1NYXRoLmZsb29yKHQueCl9aWYodC55PDB8fHQueT4xKXN3aXRjaCh0aGlzLndyYXBUKXtjYXNlIHMydDp0Lnk9dC55LU1hdGguZmxvb3IodC55KTticmVhaztjYXNlIGwydDp0Lnk9dC55PDA/MDoxO2JyZWFrO2Nhc2UgYzJ0OnQueT0xPT09TWF0aC5hYnMoTWF0aC5mbG9vcih0LnkpJTIpP01hdGguY2VpbCh0LnkpLXQueTp0LnktTWF0aC5mbG9vcih0LnkpfXJldHVybiB0aGlzLmZsaXBZJiYodC55PTEtdC55KSx0fXNldCBuZWVkc1VwZGF0ZSh0KXshMD09PXQmJnRoaXMudmVyc2lvbisrfX1mdW5jdGlvbiBJNXQodCl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBIVE1MSW1hZ2VFbGVtZW50JiZ0IGluc3RhbmNlb2YgSFRNTEltYWdlRWxlbWVudHx8InVuZGVmaW5lZCIhPXR5cGVvZiBIVE1MQ2FudmFzRWxlbWVudCYmdCBpbnN0YW5jZW9mIEhUTUxDYW52YXNFbGVtZW50fHwidW5kZWZpbmVkIiE9dHlwZW9mIEltYWdlQml0bWFwJiZ0IGluc3RhbmNlb2YgSW1hZ2VCaXRtYXA/TDV0LmdldERhdGFVUkwodCk6dC5kYXRhP3tkYXRhOkFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQuZGF0YSksd2lkdGg6dC53aWR0aCxoZWlnaHQ6dC5oZWlnaHQsdHlwZTp0LmRhdGEuY29uc3RydWN0b3IubmFtZX06KGNvbnNvbGUud2FybigiVEhSRUUuVGV4dHVyZTogVW5hYmxlIHRvIHNlcmlhbGl6ZSBUZXh0dXJlLiIpLHt9KX1ONXQuREVGQVVMVF9JTUFHRT12b2lkIDAsTjV0LkRFRkFVTFRfTUFQUElORz10MnQsTjV0LnByb3RvdHlwZS5pc1RleHR1cmU9ITA7Y2xhc3MgUjV0e2NvbnN0cnVjdG9yKHQ9MCxlPTAsbj0wLGk9MSl7dGhpcy54PXQsdGhpcy55PWUsdGhpcy56PW4sdGhpcy53PWl9Z2V0IHdpZHRoKCl7cmV0dXJuIHRoaXMuen1zZXQgd2lkdGgodCl7dGhpcy56PXR9Z2V0IGhlaWdodCgpe3JldHVybiB0aGlzLnd9c2V0IGhlaWdodCh0KXt0aGlzLnc9dH1zZXQodCxlLG4saSl7cmV0dXJuIHRoaXMueD10LHRoaXMueT1lLHRoaXMuej1uLHRoaXMudz1pLHRoaXN9c2V0U2NhbGFyKHQpe3JldHVybiB0aGlzLng9dCx0aGlzLnk9dCx0aGlzLno9dCx0aGlzLnc9dCx0aGlzfXNldFgodCl7cmV0dXJuIHRoaXMueD10LHRoaXN9c2V0WSh0KXtyZXR1cm4gdGhpcy55PXQsdGhpc31zZXRaKHQpe3JldHVybiB0aGlzLno9dCx0aGlzfXNldFcodCl7cmV0dXJuIHRoaXMudz10LHRoaXN9c2V0Q29tcG9uZW50KHQsZSl7c3dpdGNoKHQpe2Nhc2UgMDp0aGlzLng9ZTticmVhaztjYXNlIDE6dGhpcy55PWU7YnJlYWs7Y2FzZSAyOnRoaXMuej1lO2JyZWFrO2Nhc2UgMzp0aGlzLnc9ZTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiaW5kZXggaXMgb3V0IG9mIHJhbmdlOiAiK3QpfXJldHVybiB0aGlzfWdldENvbXBvbmVudCh0KXtzd2l0Y2godCl7Y2FzZSAwOnJldHVybiB0aGlzLng7Y2FzZSAxOnJldHVybiB0aGlzLnk7Y2FzZSAyOnJldHVybiB0aGlzLno7Y2FzZSAzOnJldHVybiB0aGlzLnc7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoImluZGV4IGlzIG91dCBvZiByYW5nZTogIit0KX19Y2xvbmUoKXtyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IodGhpcy54LHRoaXMueSx0aGlzLnosdGhpcy53KX1jb3B5KHQpe3JldHVybiB0aGlzLng9dC54LHRoaXMueT10LnksdGhpcy56PXQueix0aGlzLnc9dm9pZCAwIT09dC53P3QudzoxLHRoaXN9YWRkKHQsZSl7cmV0dXJuIHZvaWQgMCE9PWU/KGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yNDogLmFkZCgpIG5vdyBvbmx5IGFjY2VwdHMgb25lIGFyZ3VtZW50LiBVc2UgLmFkZFZlY3RvcnMoIGEsIGIgKSBpbnN0ZWFkLiIpLHRoaXMuYWRkVmVjdG9ycyh0LGUpKToodGhpcy54Kz10LngsdGhpcy55Kz10LnksdGhpcy56Kz10LnosdGhpcy53Kz10LncsdGhpcyl9YWRkU2NhbGFyKHQpe3JldHVybiB0aGlzLngrPXQsdGhpcy55Kz10LHRoaXMueis9dCx0aGlzLncrPXQsdGhpc31hZGRWZWN0b3JzKHQsZSl7cmV0dXJuIHRoaXMueD10LngrZS54LHRoaXMueT10LnkrZS55LHRoaXMuej10LnorZS56LHRoaXMudz10LncrZS53LHRoaXN9YWRkU2NhbGVkVmVjdG9yKHQsZSl7cmV0dXJuIHRoaXMueCs9dC54KmUsdGhpcy55Kz10LnkqZSx0aGlzLnorPXQueiplLHRoaXMudys9dC53KmUsdGhpc31zdWIodCxlKXtyZXR1cm4gdm9pZCAwIT09ZT8oY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3I0OiAuc3ViKCkgbm93IG9ubHkgYWNjZXB0cyBvbmUgYXJndW1lbnQuIFVzZSAuc3ViVmVjdG9ycyggYSwgYiApIGluc3RlYWQuIiksdGhpcy5zdWJWZWN0b3JzKHQsZSkpOih0aGlzLngtPXQueCx0aGlzLnktPXQueSx0aGlzLnotPXQueix0aGlzLnctPXQudyx0aGlzKX1zdWJTY2FsYXIodCl7cmV0dXJuIHRoaXMueC09dCx0aGlzLnktPXQsdGhpcy56LT10LHRoaXMudy09dCx0aGlzfXN1YlZlY3RvcnModCxlKXtyZXR1cm4gdGhpcy54PXQueC1lLngsdGhpcy55PXQueS1lLnksdGhpcy56PXQuei1lLnosdGhpcy53PXQudy1lLncsdGhpc31tdWx0aXBseSh0KXtyZXR1cm4gdGhpcy54Kj10LngsdGhpcy55Kj10LnksdGhpcy56Kj10LnosdGhpcy53Kj10LncsdGhpc31tdWx0aXBseVNjYWxhcih0KXtyZXR1cm4gdGhpcy54Kj10LHRoaXMueSo9dCx0aGlzLnoqPXQsdGhpcy53Kj10LHRoaXN9YXBwbHlNYXRyaXg0KHQpe2NvbnN0IGU9dGhpcy54LG49dGhpcy55LGk9dGhpcy56LHI9dGhpcy53LG89dC5lbGVtZW50cztyZXR1cm4gdGhpcy54PW9bMF0qZStvWzRdKm4rb1s4XSppK29bMTJdKnIsdGhpcy55PW9bMV0qZStvWzVdKm4rb1s5XSppK29bMTNdKnIsdGhpcy56PW9bMl0qZStvWzZdKm4rb1sxMF0qaStvWzE0XSpyLHRoaXMudz1vWzNdKmUrb1s3XSpuK29bMTFdKmkrb1sxNV0qcix0aGlzfWRpdmlkZVNjYWxhcih0KXtyZXR1cm4gdGhpcy5tdWx0aXBseVNjYWxhcigxL3QpfXNldEF4aXNBbmdsZUZyb21RdWF0ZXJuaW9uKHQpe3RoaXMudz0yKk1hdGguYWNvcyh0LncpO2NvbnN0IGU9TWF0aC5zcXJ0KDEtdC53KnQudyk7cmV0dXJuIGU8MWUtND8odGhpcy54PTEsdGhpcy55PTAsdGhpcy56PTApOih0aGlzLng9dC54L2UsdGhpcy55PXQueS9lLHRoaXMuej10LnovZSksdGhpc31zZXRBeGlzQW5nbGVGcm9tUm90YXRpb25NYXRyaXgodCl7bGV0IGUsbixpLHI7Y29uc3Qgbz0uMDEsYT0uMSxzPXQuZWxlbWVudHMsbD1zWzBdLGM9c1s0XSx1PXNbOF0saD1zWzFdLGQ9c1s1XSxwPXNbOV0sZj1zWzJdLG09c1s2XSxnPXNbMTBdO2lmKE1hdGguYWJzKGMtaCk8byYmTWF0aC5hYnModS1mKTxvJiZNYXRoLmFicyhwLW0pPG8pe2lmKE1hdGguYWJzKGMraCk8YSYmTWF0aC5hYnModStmKTxhJiZNYXRoLmFicyhwK20pPGEmJk1hdGguYWJzKGwrZCtnLTMpPGEpcmV0dXJuIHRoaXMuc2V0KDEsMCwwLDApLHRoaXM7ZT1NYXRoLlBJO2NvbnN0IHQ9KGwrMSkvMixzPShkKzEpLzIsXz0oZysxKS8yLHk9KGMraCkvNCx2PSh1K2YpLzQsYj0ocCttKS80O3JldHVybiB0PnMmJnQ+Xz90PG8/KG49MCxpPS43MDcxMDY3ODEscj0uNzA3MTA2NzgxKToobj1NYXRoLnNxcnQodCksaT15L24scj12L24pOnM+Xz9zPG8/KG49LjcwNzEwNjc4MSxpPTAscj0uNzA3MTA2NzgxKTooaT1NYXRoLnNxcnQocyksbj15L2kscj1iL2kpOl88bz8obj0uNzA3MTA2NzgxLGk9LjcwNzEwNjc4MSxyPTApOihyPU1hdGguc3FydChfKSxuPXYvcixpPWIvciksdGhpcy5zZXQobixpLHIsZSksdGhpc31sZXQgXz1NYXRoLnNxcnQoKG0tcCkqKG0tcCkrKHUtZikqKHUtZikrKGgtYykqKGgtYykpO3JldHVybiBNYXRoLmFicyhfKTwuMDAxJiYoXz0xKSx0aGlzLng9KG0tcCkvXyx0aGlzLnk9KHUtZikvXyx0aGlzLno9KGgtYykvXyx0aGlzLnc9TWF0aC5hY29zKChsK2QrZy0xKS8yKSx0aGlzfW1pbih0KXtyZXR1cm4gdGhpcy54PU1hdGgubWluKHRoaXMueCx0LngpLHRoaXMueT1NYXRoLm1pbih0aGlzLnksdC55KSx0aGlzLno9TWF0aC5taW4odGhpcy56LHQueiksdGhpcy53PU1hdGgubWluKHRoaXMudyx0LncpLHRoaXN9bWF4KHQpe3JldHVybiB0aGlzLng9TWF0aC5tYXgodGhpcy54LHQueCksdGhpcy55PU1hdGgubWF4KHRoaXMueSx0LnkpLHRoaXMuej1NYXRoLm1heCh0aGlzLnosdC56KSx0aGlzLnc9TWF0aC5tYXgodGhpcy53LHQudyksdGhpc31jbGFtcCh0LGUpe3JldHVybiB0aGlzLng9TWF0aC5tYXgodC54LE1hdGgubWluKGUueCx0aGlzLngpKSx0aGlzLnk9TWF0aC5tYXgodC55LE1hdGgubWluKGUueSx0aGlzLnkpKSx0aGlzLno9TWF0aC5tYXgodC56LE1hdGgubWluKGUueix0aGlzLnopKSx0aGlzLnc9TWF0aC5tYXgodC53LE1hdGgubWluKGUudyx0aGlzLncpKSx0aGlzfWNsYW1wU2NhbGFyKHQsZSl7cmV0dXJuIHRoaXMueD1NYXRoLm1heCh0LE1hdGgubWluKGUsdGhpcy54KSksdGhpcy55PU1hdGgubWF4KHQsTWF0aC5taW4oZSx0aGlzLnkpKSx0aGlzLno9TWF0aC5tYXgodCxNYXRoLm1pbihlLHRoaXMueikpLHRoaXMudz1NYXRoLm1heCh0LE1hdGgubWluKGUsdGhpcy53KSksdGhpc31jbGFtcExlbmd0aCh0LGUpe2NvbnN0IG49dGhpcy5sZW5ndGgoKTtyZXR1cm4gdGhpcy5kaXZpZGVTY2FsYXIobnx8MSkubXVsdGlwbHlTY2FsYXIoTWF0aC5tYXgodCxNYXRoLm1pbihlLG4pKSl9Zmxvb3IoKXtyZXR1cm4gdGhpcy54PU1hdGguZmxvb3IodGhpcy54KSx0aGlzLnk9TWF0aC5mbG9vcih0aGlzLnkpLHRoaXMuej1NYXRoLmZsb29yKHRoaXMueiksdGhpcy53PU1hdGguZmxvb3IodGhpcy53KSx0aGlzfWNlaWwoKXtyZXR1cm4gdGhpcy54PU1hdGguY2VpbCh0aGlzLngpLHRoaXMueT1NYXRoLmNlaWwodGhpcy55KSx0aGlzLno9TWF0aC5jZWlsKHRoaXMueiksdGhpcy53PU1hdGguY2VpbCh0aGlzLncpLHRoaXN9cm91bmQoKXtyZXR1cm4gdGhpcy54PU1hdGgucm91bmQodGhpcy54KSx0aGlzLnk9TWF0aC5yb3VuZCh0aGlzLnkpLHRoaXMuej1NYXRoLnJvdW5kKHRoaXMueiksdGhpcy53PU1hdGgucm91bmQodGhpcy53KSx0aGlzfXJvdW5kVG9aZXJvKCl7cmV0dXJuIHRoaXMueD10aGlzLng8MD9NYXRoLmNlaWwodGhpcy54KTpNYXRoLmZsb29yKHRoaXMueCksdGhpcy55PXRoaXMueTwwP01hdGguY2VpbCh0aGlzLnkpOk1hdGguZmxvb3IodGhpcy55KSx0aGlzLno9dGhpcy56PDA/TWF0aC5jZWlsKHRoaXMueik6TWF0aC5mbG9vcih0aGlzLnopLHRoaXMudz10aGlzLnc8MD9NYXRoLmNlaWwodGhpcy53KTpNYXRoLmZsb29yKHRoaXMudyksdGhpc31uZWdhdGUoKXtyZXR1cm4gdGhpcy54PS10aGlzLngsdGhpcy55PS10aGlzLnksdGhpcy56PS10aGlzLnosdGhpcy53PS10aGlzLncsdGhpc31kb3QodCl7cmV0dXJuIHRoaXMueCp0LngrdGhpcy55KnQueSt0aGlzLnoqdC56K3RoaXMudyp0Lnd9bGVuZ3RoU3EoKXtyZXR1cm4gdGhpcy54KnRoaXMueCt0aGlzLnkqdGhpcy55K3RoaXMueip0aGlzLnordGhpcy53KnRoaXMud31sZW5ndGgoKXtyZXR1cm4gTWF0aC5zcXJ0KHRoaXMueCp0aGlzLngrdGhpcy55KnRoaXMueSt0aGlzLnoqdGhpcy56K3RoaXMudyp0aGlzLncpfW1hbmhhdHRhbkxlbmd0aCgpe3JldHVybiBNYXRoLmFicyh0aGlzLngpK01hdGguYWJzKHRoaXMueSkrTWF0aC5hYnModGhpcy56KStNYXRoLmFicyh0aGlzLncpfW5vcm1hbGl6ZSgpe3JldHVybiB0aGlzLmRpdmlkZVNjYWxhcih0aGlzLmxlbmd0aCgpfHwxKX1zZXRMZW5ndGgodCl7cmV0dXJuIHRoaXMubm9ybWFsaXplKCkubXVsdGlwbHlTY2FsYXIodCl9bGVycCh0LGUpe3JldHVybiB0aGlzLngrPSh0LngtdGhpcy54KSplLHRoaXMueSs9KHQueS10aGlzLnkpKmUsdGhpcy56Kz0odC56LXRoaXMueikqZSx0aGlzLncrPSh0LnctdGhpcy53KSplLHRoaXN9bGVycFZlY3RvcnModCxlLG4pe3JldHVybiB0aGlzLng9dC54KyhlLngtdC54KSpuLHRoaXMueT10LnkrKGUueS10LnkpKm4sdGhpcy56PXQueisoZS56LXQueikqbix0aGlzLnc9dC53KyhlLnctdC53KSpuLHRoaXN9ZXF1YWxzKHQpe3JldHVybiB0Lng9PT10aGlzLngmJnQueT09PXRoaXMueSYmdC56PT09dGhpcy56JiZ0Lnc9PT10aGlzLnd9ZnJvbUFycmF5KHQsZT0wKXtyZXR1cm4gdGhpcy54PXRbZV0sdGhpcy55PXRbZSsxXSx0aGlzLno9dFtlKzJdLHRoaXMudz10W2UrM10sdGhpc310b0FycmF5KHQ9W10sZT0wKXtyZXR1cm4gdFtlXT10aGlzLngsdFtlKzFdPXRoaXMueSx0W2UrMl09dGhpcy56LHRbZSszXT10aGlzLncsdH1mcm9tQnVmZmVyQXR0cmlidXRlKHQsZSxuKXtyZXR1cm4gdm9pZCAwIT09biYmY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3I0OiBvZmZzZXQgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIC5mcm9tQnVmZmVyQXR0cmlidXRlKCkuIiksdGhpcy54PXQuZ2V0WChlKSx0aGlzLnk9dC5nZXRZKGUpLHRoaXMuej10LmdldFooZSksdGhpcy53PXQuZ2V0VyhlKSx0aGlzfXJhbmRvbSgpe3JldHVybiB0aGlzLng9TWF0aC5yYW5kb20oKSx0aGlzLnk9TWF0aC5yYW5kb20oKSx0aGlzLno9TWF0aC5yYW5kb20oKSx0aGlzLnc9TWF0aC5yYW5kb20oKSx0aGlzfX1SNXQucHJvdG90eXBlLmlzVmVjdG9yND0hMDtjbGFzcyBPNXQgZXh0ZW5kcyBlNXR7Y29uc3RydWN0b3IodCxlLG49e30pe3N1cGVyKCksdGhpcy53aWR0aD10LHRoaXMuaGVpZ2h0PWUsdGhpcy5kZXB0aD0xLHRoaXMuc2Npc3Nvcj1uZXcgUjV0KDAsMCx0LGUpLHRoaXMuc2Npc3NvclRlc3Q9ITEsdGhpcy52aWV3cG9ydD1uZXcgUjV0KDAsMCx0LGUpLHRoaXMudGV4dHVyZT1uZXcgTjV0KHZvaWQgMCxuLm1hcHBpbmcsbi53cmFwUyxuLndyYXBULG4ubWFnRmlsdGVyLG4ubWluRmlsdGVyLG4uZm9ybWF0LG4udHlwZSxuLmFuaXNvdHJvcHksbi5lbmNvZGluZyksdGhpcy50ZXh0dXJlLmlzUmVuZGVyVGFyZ2V0VGV4dHVyZT0hMCx0aGlzLnRleHR1cmUuaW1hZ2U9e3dpZHRoOnQsaGVpZ2h0OmUsZGVwdGg6MX0sdGhpcy50ZXh0dXJlLmdlbmVyYXRlTWlwbWFwcz12b2lkIDAhPT1uLmdlbmVyYXRlTWlwbWFwcyYmbi5nZW5lcmF0ZU1pcG1hcHMsdGhpcy50ZXh0dXJlLm1pbkZpbHRlcj12b2lkIDAhPT1uLm1pbkZpbHRlcj9uLm1pbkZpbHRlcjpwMnQsdGhpcy5kZXB0aEJ1ZmZlcj12b2lkIDA9PT1uLmRlcHRoQnVmZmVyfHxuLmRlcHRoQnVmZmVyLHRoaXMuc3RlbmNpbEJ1ZmZlcj12b2lkIDAhPT1uLnN0ZW5jaWxCdWZmZXImJm4uc3RlbmNpbEJ1ZmZlcix0aGlzLmRlcHRoVGV4dHVyZT12b2lkIDAhPT1uLmRlcHRoVGV4dHVyZT9uLmRlcHRoVGV4dHVyZTpudWxsfXNldFRleHR1cmUodCl7dC5pbWFnZT17d2lkdGg6dGhpcy53aWR0aCxoZWlnaHQ6dGhpcy5oZWlnaHQsZGVwdGg6dGhpcy5kZXB0aH0sdGhpcy50ZXh0dXJlPXR9c2V0U2l6ZSh0LGUsbj0xKXt0aGlzLndpZHRoPT09dCYmdGhpcy5oZWlnaHQ9PT1lJiZ0aGlzLmRlcHRoPT09bnx8KHRoaXMud2lkdGg9dCx0aGlzLmhlaWdodD1lLHRoaXMuZGVwdGg9bix0aGlzLnRleHR1cmUuaW1hZ2Uud2lkdGg9dCx0aGlzLnRleHR1cmUuaW1hZ2UuaGVpZ2h0PWUsdGhpcy50ZXh0dXJlLmltYWdlLmRlcHRoPW4sdGhpcy5kaXNwb3NlKCkpLHRoaXMudmlld3BvcnQuc2V0KDAsMCx0LGUpLHRoaXMuc2Npc3Nvci5zZXQoMCwwLHQsZSl9Y2xvbmUoKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IpLmNvcHkodGhpcyl9Y29weSh0KXtyZXR1cm4gdGhpcy53aWR0aD10LndpZHRoLHRoaXMuaGVpZ2h0PXQuaGVpZ2h0LHRoaXMuZGVwdGg9dC5kZXB0aCx0aGlzLnZpZXdwb3J0LmNvcHkodC52aWV3cG9ydCksdGhpcy50ZXh0dXJlPXQudGV4dHVyZS5jbG9uZSgpLHRoaXMudGV4dHVyZS5pbWFnZT17Li4udGhpcy50ZXh0dXJlLmltYWdlfSx0aGlzLmRlcHRoQnVmZmVyPXQuZGVwdGhCdWZmZXIsdGhpcy5zdGVuY2lsQnVmZmVyPXQuc3RlbmNpbEJ1ZmZlcix0aGlzLmRlcHRoVGV4dHVyZT10LmRlcHRoVGV4dHVyZSx0aGlzfWRpc3Bvc2UoKXt0aGlzLmRpc3BhdGNoRXZlbnQoe3R5cGU6ImRpc3Bvc2UifSl9fU81dC5wcm90b3R5cGUuaXNXZWJHTFJlbmRlclRhcmdldD0hMDtjbGFzcyB6NXQgZXh0ZW5kcyBPNXR7Y29uc3RydWN0b3IodCxlLG4pe3N1cGVyKHQsZSk7Y29uc3QgaT10aGlzLnRleHR1cmU7dGhpcy50ZXh0dXJlPVtdO2ZvcihsZXQgdD0wO3Q8bjt0KyspdGhpcy50ZXh0dXJlW3RdPWkuY2xvbmUoKX1zZXRTaXplKHQsZSxuPTEpe2lmKHRoaXMud2lkdGghPT10fHx0aGlzLmhlaWdodCE9PWV8fHRoaXMuZGVwdGghPT1uKXt0aGlzLndpZHRoPXQsdGhpcy5oZWlnaHQ9ZSx0aGlzLmRlcHRoPW47Zm9yKGxldCBpPTAscj10aGlzLnRleHR1cmUubGVuZ3RoO2k8cjtpKyspdGhpcy50ZXh0dXJlW2ldLmltYWdlLndpZHRoPXQsdGhpcy50ZXh0dXJlW2ldLmltYWdlLmhlaWdodD1lLHRoaXMudGV4dHVyZVtpXS5pbWFnZS5kZXB0aD1uO3RoaXMuZGlzcG9zZSgpfXJldHVybiB0aGlzLnZpZXdwb3J0LnNldCgwLDAsdCxlKSx0aGlzLnNjaXNzb3Iuc2V0KDAsMCx0LGUpLHRoaXN9Y29weSh0KXt0aGlzLmRpc3Bvc2UoKSx0aGlzLndpZHRoPXQud2lkdGgsdGhpcy5oZWlnaHQ9dC5oZWlnaHQsdGhpcy5kZXB0aD10LmRlcHRoLHRoaXMudmlld3BvcnQuc2V0KDAsMCx0aGlzLndpZHRoLHRoaXMuaGVpZ2h0KSx0aGlzLnNjaXNzb3Iuc2V0KDAsMCx0aGlzLndpZHRoLHRoaXMuaGVpZ2h0KSx0aGlzLmRlcHRoQnVmZmVyPXQuZGVwdGhCdWZmZXIsdGhpcy5zdGVuY2lsQnVmZmVyPXQuc3RlbmNpbEJ1ZmZlcix0aGlzLmRlcHRoVGV4dHVyZT10LmRlcHRoVGV4dHVyZSx0aGlzLnRleHR1cmUubGVuZ3RoPTA7Zm9yKGxldCBlPTAsbj10LnRleHR1cmUubGVuZ3RoO2U8bjtlKyspdGhpcy50ZXh0dXJlW2VdPXQudGV4dHVyZVtlXS5jbG9uZSgpO3JldHVybiB0aGlzfX16NXQucHJvdG90eXBlLmlzV2ViR0xNdWx0aXBsZVJlbmRlclRhcmdldHM9ITA7Y2xhc3MgRDV0IGV4dGVuZHMgTzV0e2NvbnN0cnVjdG9yKHQsZSxuKXtzdXBlcih0LGUsbiksdGhpcy5zYW1wbGVzPTR9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weS5jYWxsKHRoaXMsdCksdGhpcy5zYW1wbGVzPXQuc2FtcGxlcyx0aGlzfX1ENXQucHJvdG90eXBlLmlzV2ViR0xNdWx0aXNhbXBsZVJlbmRlclRhcmdldD0hMDtjbGFzcyBCNXR7Y29uc3RydWN0b3IodD0wLGU9MCxuPTAsaT0xKXt0aGlzLl94PXQsdGhpcy5feT1lLHRoaXMuX3o9bix0aGlzLl93PWl9c3RhdGljIHNsZXJwKHQsZSxuLGkpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlF1YXRlcm5pb246IFN0YXRpYyAuc2xlcnAoKSBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgcW0uc2xlcnBRdWF0ZXJuaW9ucyggcWEsIHFiLCB0ICkgaW5zdGVhZC4iKSxuLnNsZXJwUXVhdGVybmlvbnModCxlLGkpfXN0YXRpYyBzbGVycEZsYXQodCxlLG4saSxyLG8sYSl7bGV0IHM9bltpKzBdLGw9bltpKzFdLGM9bltpKzJdLHU9bltpKzNdO2NvbnN0IGg9cltvKzBdLGQ9cltvKzFdLHA9cltvKzJdLGY9cltvKzNdO2lmKDA9PT1hKXJldHVybiB0W2UrMF09cyx0W2UrMV09bCx0W2UrMl09Yyx2b2lkKHRbZSszXT11KTtpZigxPT09YSlyZXR1cm4gdFtlKzBdPWgsdFtlKzFdPWQsdFtlKzJdPXAsdm9pZCh0W2UrM109Zik7aWYodSE9PWZ8fHMhPT1ofHxsIT09ZHx8YyE9PXApe2xldCB0PTEtYTtjb25zdCBlPXMqaCtsKmQrYypwK3UqZixuPWU+PTA/MTotMSxpPTEtZSplO2lmKGk+TnVtYmVyLkVQU0lMT04pe2NvbnN0IHI9TWF0aC5zcXJ0KGkpLG89TWF0aC5hdGFuMihyLGUqbik7dD1NYXRoLnNpbih0Km8pL3IsYT1NYXRoLnNpbihhKm8pL3J9Y29uc3Qgcj1hKm47aWYocz1zKnQraCpyLGw9bCp0K2QqcixjPWMqdCtwKnIsdT11KnQrZipyLHQ9PT0xLWEpe2NvbnN0IHQ9MS9NYXRoLnNxcnQocypzK2wqbCtjKmMrdSp1KTtzKj10LGwqPXQsYyo9dCx1Kj10fX10W2VdPXMsdFtlKzFdPWwsdFtlKzJdPWMsdFtlKzNdPXV9c3RhdGljIG11bHRpcGx5UXVhdGVybmlvbnNGbGF0KHQsZSxuLGkscixvKXtjb25zdCBhPW5baV0scz1uW2krMV0sbD1uW2krMl0sYz1uW2krM10sdT1yW29dLGg9cltvKzFdLGQ9cltvKzJdLHA9cltvKzNdO3JldHVybiB0W2VdPWEqcCtjKnUrcypkLWwqaCx0W2UrMV09cypwK2MqaCtsKnUtYSpkLHRbZSsyXT1sKnArYypkK2EqaC1zKnUsdFtlKzNdPWMqcC1hKnUtcypoLWwqZCx0fWdldCB4KCl7cmV0dXJuIHRoaXMuX3h9c2V0IHgodCl7dGhpcy5feD10LHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKX1nZXQgeSgpe3JldHVybiB0aGlzLl95fXNldCB5KHQpe3RoaXMuX3k9dCx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCl9Z2V0IHooKXtyZXR1cm4gdGhpcy5fen1zZXQgeih0KXt0aGlzLl96PXQsdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpfWdldCB3KCl7cmV0dXJuIHRoaXMuX3d9c2V0IHcodCl7dGhpcy5fdz10LHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKX1zZXQodCxlLG4saSl7cmV0dXJuIHRoaXMuX3g9dCx0aGlzLl95PWUsdGhpcy5fej1uLHRoaXMuX3c9aSx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCksdGhpc31jbG9uZSgpe3JldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3Rvcih0aGlzLl94LHRoaXMuX3ksdGhpcy5feix0aGlzLl93KX1jb3B5KHQpe3JldHVybiB0aGlzLl94PXQueCx0aGlzLl95PXQueSx0aGlzLl96PXQueix0aGlzLl93PXQudyx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCksdGhpc31zZXRGcm9tRXVsZXIodCxlKXtpZighdHx8IXQuaXNFdWxlcil0aHJvdyBuZXcgRXJyb3IoIlRIUkVFLlF1YXRlcm5pb246IC5zZXRGcm9tRXVsZXIoKSBub3cgZXhwZWN0cyBhbiBFdWxlciByb3RhdGlvbiByYXRoZXIgdGhhbiBhIFZlY3RvcjMgYW5kIG9yZGVyLiIpO2NvbnN0IG49dC5feCxpPXQuX3kscj10Ll96LG89dC5fb3JkZXIsYT1NYXRoLmNvcyxzPU1hdGguc2luLGw9YShuLzIpLGM9YShpLzIpLHU9YShyLzIpLGg9cyhuLzIpLGQ9cyhpLzIpLHA9cyhyLzIpO3N3aXRjaChvKXtjYXNlIlhZWiI6dGhpcy5feD1oKmMqdStsKmQqcCx0aGlzLl95PWwqZCp1LWgqYypwLHRoaXMuX3o9bCpjKnAraCpkKnUsdGhpcy5fdz1sKmMqdS1oKmQqcDticmVhaztjYXNlIllYWiI6dGhpcy5feD1oKmMqdStsKmQqcCx0aGlzLl95PWwqZCp1LWgqYypwLHRoaXMuX3o9bCpjKnAtaCpkKnUsdGhpcy5fdz1sKmMqdStoKmQqcDticmVhaztjYXNlIlpYWSI6dGhpcy5feD1oKmMqdS1sKmQqcCx0aGlzLl95PWwqZCp1K2gqYypwLHRoaXMuX3o9bCpjKnAraCpkKnUsdGhpcy5fdz1sKmMqdS1oKmQqcDticmVhaztjYXNlIlpZWCI6dGhpcy5feD1oKmMqdS1sKmQqcCx0aGlzLl95PWwqZCp1K2gqYypwLHRoaXMuX3o9bCpjKnAtaCpkKnUsdGhpcy5fdz1sKmMqdStoKmQqcDticmVhaztjYXNlIllaWCI6dGhpcy5feD1oKmMqdStsKmQqcCx0aGlzLl95PWwqZCp1K2gqYypwLHRoaXMuX3o9bCpjKnAtaCpkKnUsdGhpcy5fdz1sKmMqdS1oKmQqcDticmVhaztjYXNlIlhaWSI6dGhpcy5feD1oKmMqdS1sKmQqcCx0aGlzLl95PWwqZCp1LWgqYypwLHRoaXMuX3o9bCpjKnAraCpkKnUsdGhpcy5fdz1sKmMqdStoKmQqcDticmVhaztkZWZhdWx0OmNvbnNvbGUud2FybigiVEhSRUUuUXVhdGVybmlvbjogLnNldEZyb21FdWxlcigpIGVuY291bnRlcmVkIGFuIHVua25vd24gb3JkZXI6ICIrbyl9cmV0dXJuITEhPT1lJiZ0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCksdGhpc31zZXRGcm9tQXhpc0FuZ2xlKHQsZSl7Y29uc3Qgbj1lLzIsaT1NYXRoLnNpbihuKTtyZXR1cm4gdGhpcy5feD10LngqaSx0aGlzLl95PXQueSppLHRoaXMuX3o9dC56KmksdGhpcy5fdz1NYXRoLmNvcyhuKSx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCksdGhpc31zZXRGcm9tUm90YXRpb25NYXRyaXgodCl7Y29uc3QgZT10LmVsZW1lbnRzLG49ZVswXSxpPWVbNF0scj1lWzhdLG89ZVsxXSxhPWVbNV0scz1lWzldLGw9ZVsyXSxjPWVbNl0sdT1lWzEwXSxoPW4rYSt1O2lmKGg+MCl7Y29uc3QgdD0uNS9NYXRoLnNxcnQoaCsxKTt0aGlzLl93PS4yNS90LHRoaXMuX3g9KGMtcykqdCx0aGlzLl95PShyLWwpKnQsdGhpcy5fej0oby1pKSp0fWVsc2UgaWYobj5hJiZuPnUpe2NvbnN0IHQ9MipNYXRoLnNxcnQoMStuLWEtdSk7dGhpcy5fdz0oYy1zKS90LHRoaXMuX3g9LjI1KnQsdGhpcy5feT0oaStvKS90LHRoaXMuX3o9KHIrbCkvdH1lbHNlIGlmKGE+dSl7Y29uc3QgdD0yKk1hdGguc3FydCgxK2Etbi11KTt0aGlzLl93PShyLWwpL3QsdGhpcy5feD0oaStvKS90LHRoaXMuX3k9LjI1KnQsdGhpcy5fej0ocytjKS90fWVsc2V7Y29uc3QgdD0yKk1hdGguc3FydCgxK3Utbi1hKTt0aGlzLl93PShvLWkpL3QsdGhpcy5feD0ocitsKS90LHRoaXMuX3k9KHMrYykvdCx0aGlzLl96PS4yNSp0fXJldHVybiB0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCksdGhpc31zZXRGcm9tVW5pdFZlY3RvcnModCxlKXtsZXQgbj10LmRvdChlKSsxO3JldHVybiBuPE51bWJlci5FUFNJTE9OPyhuPTAsTWF0aC5hYnModC54KT5NYXRoLmFicyh0LnopPyh0aGlzLl94PS10LnksdGhpcy5feT10LngsdGhpcy5fej0wLHRoaXMuX3c9bik6KHRoaXMuX3g9MCx0aGlzLl95PS10LnosdGhpcy5fej10LnksdGhpcy5fdz1uKSk6KHRoaXMuX3g9dC55KmUuei10LnoqZS55LHRoaXMuX3k9dC56KmUueC10LngqZS56LHRoaXMuX3o9dC54KmUueS10LnkqZS54LHRoaXMuX3c9biksdGhpcy5ub3JtYWxpemUoKX1hbmdsZVRvKHQpe3JldHVybiAyKk1hdGguYWNvcyhNYXRoLmFicyhzNXQodGhpcy5kb3QodCksLTEsMSkpKX1yb3RhdGVUb3dhcmRzKHQsZSl7Y29uc3Qgbj10aGlzLmFuZ2xlVG8odCk7aWYoMD09PW4pcmV0dXJuIHRoaXM7Y29uc3QgaT1NYXRoLm1pbigxLGUvbik7cmV0dXJuIHRoaXMuc2xlcnAodCxpKSx0aGlzfWlkZW50aXR5KCl7cmV0dXJuIHRoaXMuc2V0KDAsMCwwLDEpfWludmVydCgpe3JldHVybiB0aGlzLmNvbmp1Z2F0ZSgpfWNvbmp1Z2F0ZSgpe3JldHVybiB0aGlzLl94Kj0tMSx0aGlzLl95Kj0tMSx0aGlzLl96Kj0tMSx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCksdGhpc31kb3QodCl7cmV0dXJuIHRoaXMuX3gqdC5feCt0aGlzLl95KnQuX3krdGhpcy5feip0Ll96K3RoaXMuX3cqdC5fd31sZW5ndGhTcSgpe3JldHVybiB0aGlzLl94KnRoaXMuX3grdGhpcy5feSp0aGlzLl95K3RoaXMuX3oqdGhpcy5feit0aGlzLl93KnRoaXMuX3d9bGVuZ3RoKCl7cmV0dXJuIE1hdGguc3FydCh0aGlzLl94KnRoaXMuX3grdGhpcy5feSp0aGlzLl95K3RoaXMuX3oqdGhpcy5feit0aGlzLl93KnRoaXMuX3cpfW5vcm1hbGl6ZSgpe2xldCB0PXRoaXMubGVuZ3RoKCk7cmV0dXJuIDA9PT10Pyh0aGlzLl94PTAsdGhpcy5feT0wLHRoaXMuX3o9MCx0aGlzLl93PTEpOih0PTEvdCx0aGlzLl94PXRoaXMuX3gqdCx0aGlzLl95PXRoaXMuX3kqdCx0aGlzLl96PXRoaXMuX3oqdCx0aGlzLl93PXRoaXMuX3cqdCksdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpLHRoaXN9bXVsdGlwbHkodCxlKXtyZXR1cm4gdm9pZCAwIT09ZT8oY29uc29sZS53YXJuKCJUSFJFRS5RdWF0ZXJuaW9uOiAubXVsdGlwbHkoKSBub3cgb25seSBhY2NlcHRzIG9uZSBhcmd1bWVudC4gVXNlIC5tdWx0aXBseVF1YXRlcm5pb25zKCBhLCBiICkgaW5zdGVhZC4iKSx0aGlzLm11bHRpcGx5UXVhdGVybmlvbnModCxlKSk6dGhpcy5tdWx0aXBseVF1YXRlcm5pb25zKHRoaXMsdCl9cHJlbXVsdGlwbHkodCl7cmV0dXJuIHRoaXMubXVsdGlwbHlRdWF0ZXJuaW9ucyh0LHRoaXMpfW11bHRpcGx5UXVhdGVybmlvbnModCxlKXtjb25zdCBuPXQuX3gsaT10Ll95LHI9dC5feixvPXQuX3csYT1lLl94LHM9ZS5feSxsPWUuX3osYz1lLl93O3JldHVybiB0aGlzLl94PW4qYytvKmEraSpsLXIqcyx0aGlzLl95PWkqYytvKnMrciphLW4qbCx0aGlzLl96PXIqYytvKmwrbipzLWkqYSx0aGlzLl93PW8qYy1uKmEtaSpzLXIqbCx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCksdGhpc31zbGVycCh0LGUpe2lmKDA9PT1lKXJldHVybiB0aGlzO2lmKDE9PT1lKXJldHVybiB0aGlzLmNvcHkodCk7Y29uc3Qgbj10aGlzLl94LGk9dGhpcy5feSxyPXRoaXMuX3osbz10aGlzLl93O2xldCBhPW8qdC5fdytuKnQuX3graSp0Ll95K3IqdC5fejtpZihhPDA/KHRoaXMuX3c9LXQuX3csdGhpcy5feD0tdC5feCx0aGlzLl95PS10Ll95LHRoaXMuX3o9LXQuX3osYT0tYSk6dGhpcy5jb3B5KHQpLGE+PTEpcmV0dXJuIHRoaXMuX3c9byx0aGlzLl94PW4sdGhpcy5feT1pLHRoaXMuX3o9cix0aGlzO2NvbnN0IHM9MS1hKmE7aWYoczw9TnVtYmVyLkVQU0lMT04pe2NvbnN0IHQ9MS1lO3JldHVybiB0aGlzLl93PXQqbytlKnRoaXMuX3csdGhpcy5feD10Km4rZSp0aGlzLl94LHRoaXMuX3k9dCppK2UqdGhpcy5feSx0aGlzLl96PXQqcitlKnRoaXMuX3osdGhpcy5ub3JtYWxpemUoKSx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCksdGhpc31jb25zdCBsPU1hdGguc3FydChzKSxjPU1hdGguYXRhbjIobCxhKSx1PU1hdGguc2luKCgxLWUpKmMpL2wsaD1NYXRoLnNpbihlKmMpL2w7cmV0dXJuIHRoaXMuX3c9byp1K3RoaXMuX3cqaCx0aGlzLl94PW4qdSt0aGlzLl94KmgsdGhpcy5feT1pKnUrdGhpcy5feSpoLHRoaXMuX3o9cip1K3RoaXMuX3oqaCx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCksdGhpc31zbGVycFF1YXRlcm5pb25zKHQsZSxuKXt0aGlzLmNvcHkodCkuc2xlcnAoZSxuKX1lcXVhbHModCl7cmV0dXJuIHQuX3g9PT10aGlzLl94JiZ0Ll95PT09dGhpcy5feSYmdC5fej09PXRoaXMuX3omJnQuX3c9PT10aGlzLl93fWZyb21BcnJheSh0LGU9MCl7cmV0dXJuIHRoaXMuX3g9dFtlXSx0aGlzLl95PXRbZSsxXSx0aGlzLl96PXRbZSsyXSx0aGlzLl93PXRbZSszXSx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCksdGhpc310b0FycmF5KHQ9W10sZT0wKXtyZXR1cm4gdFtlXT10aGlzLl94LHRbZSsxXT10aGlzLl95LHRbZSsyXT10aGlzLl96LHRbZSszXT10aGlzLl93LHR9ZnJvbUJ1ZmZlckF0dHJpYnV0ZSh0LGUpe3JldHVybiB0aGlzLl94PXQuZ2V0WChlKSx0aGlzLl95PXQuZ2V0WShlKSx0aGlzLl96PXQuZ2V0WihlKSx0aGlzLl93PXQuZ2V0VyhlKSx0aGlzfV9vbkNoYW5nZSh0KXtyZXR1cm4gdGhpcy5fb25DaGFuZ2VDYWxsYmFjaz10LHRoaXN9X29uQ2hhbmdlQ2FsbGJhY2soKXt9fUI1dC5wcm90b3R5cGUuaXNRdWF0ZXJuaW9uPSEwO2NsYXNzIEg1dHtjb25zdHJ1Y3Rvcih0PTAsZT0wLG49MCl7dGhpcy54PXQsdGhpcy55PWUsdGhpcy56PW59c2V0KHQsZSxuKXtyZXR1cm4gdm9pZCAwPT09biYmKG49dGhpcy56KSx0aGlzLng9dCx0aGlzLnk9ZSx0aGlzLno9bix0aGlzfXNldFNjYWxhcih0KXtyZXR1cm4gdGhpcy54PXQsdGhpcy55PXQsdGhpcy56PXQsdGhpc31zZXRYKHQpe3JldHVybiB0aGlzLng9dCx0aGlzfXNldFkodCl7cmV0dXJuIHRoaXMueT10LHRoaXN9c2V0Wih0KXtyZXR1cm4gdGhpcy56PXQsdGhpc31zZXRDb21wb25lbnQodCxlKXtzd2l0Y2godCl7Y2FzZSAwOnRoaXMueD1lO2JyZWFrO2Nhc2UgMTp0aGlzLnk9ZTticmVhaztjYXNlIDI6dGhpcy56PWU7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoImluZGV4IGlzIG91dCBvZiByYW5nZTogIit0KX1yZXR1cm4gdGhpc31nZXRDb21wb25lbnQodCl7c3dpdGNoKHQpe2Nhc2UgMDpyZXR1cm4gdGhpcy54O2Nhc2UgMTpyZXR1cm4gdGhpcy55O2Nhc2UgMjpyZXR1cm4gdGhpcy56O2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJpbmRleCBpcyBvdXQgb2YgcmFuZ2U6ICIrdCl9fWNsb25lKCl7cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKHRoaXMueCx0aGlzLnksdGhpcy56KX1jb3B5KHQpe3JldHVybiB0aGlzLng9dC54LHRoaXMueT10LnksdGhpcy56PXQueix0aGlzfWFkZCh0LGUpe3JldHVybiB2b2lkIDAhPT1lPyhjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjM6IC5hZGQoKSBub3cgb25seSBhY2NlcHRzIG9uZSBhcmd1bWVudC4gVXNlIC5hZGRWZWN0b3JzKCBhLCBiICkgaW5zdGVhZC4iKSx0aGlzLmFkZFZlY3RvcnModCxlKSk6KHRoaXMueCs9dC54LHRoaXMueSs9dC55LHRoaXMueis9dC56LHRoaXMpfWFkZFNjYWxhcih0KXtyZXR1cm4gdGhpcy54Kz10LHRoaXMueSs9dCx0aGlzLnorPXQsdGhpc31hZGRWZWN0b3JzKHQsZSl7cmV0dXJuIHRoaXMueD10LngrZS54LHRoaXMueT10LnkrZS55LHRoaXMuej10LnorZS56LHRoaXN9YWRkU2NhbGVkVmVjdG9yKHQsZSl7cmV0dXJuIHRoaXMueCs9dC54KmUsdGhpcy55Kz10LnkqZSx0aGlzLnorPXQueiplLHRoaXN9c3ViKHQsZSl7cmV0dXJuIHZvaWQgMCE9PWU/KGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMzogLnN1YigpIG5vdyBvbmx5IGFjY2VwdHMgb25lIGFyZ3VtZW50LiBVc2UgLnN1YlZlY3RvcnMoIGEsIGIgKSBpbnN0ZWFkLiIpLHRoaXMuc3ViVmVjdG9ycyh0LGUpKToodGhpcy54LT10LngsdGhpcy55LT10LnksdGhpcy56LT10LnosdGhpcyl9c3ViU2NhbGFyKHQpe3JldHVybiB0aGlzLngtPXQsdGhpcy55LT10LHRoaXMuei09dCx0aGlzfXN1YlZlY3RvcnModCxlKXtyZXR1cm4gdGhpcy54PXQueC1lLngsdGhpcy55PXQueS1lLnksdGhpcy56PXQuei1lLnosdGhpc31tdWx0aXBseSh0LGUpe3JldHVybiB2b2lkIDAhPT1lPyhjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjM6IC5tdWx0aXBseSgpIG5vdyBvbmx5IGFjY2VwdHMgb25lIGFyZ3VtZW50LiBVc2UgLm11bHRpcGx5VmVjdG9ycyggYSwgYiApIGluc3RlYWQuIiksdGhpcy5tdWx0aXBseVZlY3RvcnModCxlKSk6KHRoaXMueCo9dC54LHRoaXMueSo9dC55LHRoaXMueio9dC56LHRoaXMpfW11bHRpcGx5U2NhbGFyKHQpe3JldHVybiB0aGlzLngqPXQsdGhpcy55Kj10LHRoaXMueio9dCx0aGlzfW11bHRpcGx5VmVjdG9ycyh0LGUpe3JldHVybiB0aGlzLng9dC54KmUueCx0aGlzLnk9dC55KmUueSx0aGlzLno9dC56KmUueix0aGlzfWFwcGx5RXVsZXIodCl7cmV0dXJuIHQmJnQuaXNFdWxlcnx8Y29uc29sZS5lcnJvcigiVEhSRUUuVmVjdG9yMzogLmFwcGx5RXVsZXIoKSBub3cgZXhwZWN0cyBhbiBFdWxlciByb3RhdGlvbiByYXRoZXIgdGhhbiBhIFZlY3RvcjMgYW5kIG9yZGVyLiIpLHRoaXMuYXBwbHlRdWF0ZXJuaW9uKFY1dC5zZXRGcm9tRXVsZXIodCkpfWFwcGx5QXhpc0FuZ2xlKHQsZSl7cmV0dXJuIHRoaXMuYXBwbHlRdWF0ZXJuaW9uKFY1dC5zZXRGcm9tQXhpc0FuZ2xlKHQsZSkpfWFwcGx5TWF0cml4Myh0KXtjb25zdCBlPXRoaXMueCxuPXRoaXMueSxpPXRoaXMueixyPXQuZWxlbWVudHM7cmV0dXJuIHRoaXMueD1yWzBdKmUrclszXSpuK3JbNl0qaSx0aGlzLnk9clsxXSplK3JbNF0qbityWzddKmksdGhpcy56PXJbMl0qZStyWzVdKm4rcls4XSppLHRoaXN9YXBwbHlOb3JtYWxNYXRyaXgodCl7cmV0dXJuIHRoaXMuYXBwbHlNYXRyaXgzKHQpLm5vcm1hbGl6ZSgpfWFwcGx5TWF0cml4NCh0KXtjb25zdCBlPXRoaXMueCxuPXRoaXMueSxpPXRoaXMueixyPXQuZWxlbWVudHMsbz0xLyhyWzNdKmUrcls3XSpuK3JbMTFdKmkrclsxNV0pO3JldHVybiB0aGlzLng9KHJbMF0qZStyWzRdKm4rcls4XSppK3JbMTJdKSpvLHRoaXMueT0oclsxXSplK3JbNV0qbityWzldKmkrclsxM10pKm8sdGhpcy56PShyWzJdKmUrcls2XSpuK3JbMTBdKmkrclsxNF0pKm8sdGhpc31hcHBseVF1YXRlcm5pb24odCl7Y29uc3QgZT10aGlzLngsbj10aGlzLnksaT10aGlzLnoscj10Lngsbz10LnksYT10Lnoscz10LncsbD1zKmUrbyppLWEqbixjPXMqbithKmUtcippLHU9cyppK3Iqbi1vKmUsaD0tciplLW8qbi1hKmk7cmV0dXJuIHRoaXMueD1sKnMraCotcitjKi1hLXUqLW8sdGhpcy55PWMqcytoKi1vK3UqLXItbCotYSx0aGlzLno9dSpzK2gqLWErbCotby1jKi1yLHRoaXN9cHJvamVjdCh0KXtyZXR1cm4gdGhpcy5hcHBseU1hdHJpeDQodC5tYXRyaXhXb3JsZEludmVyc2UpLmFwcGx5TWF0cml4NCh0LnByb2plY3Rpb25NYXRyaXgpfXVucHJvamVjdCh0KXtyZXR1cm4gdGhpcy5hcHBseU1hdHJpeDQodC5wcm9qZWN0aW9uTWF0cml4SW52ZXJzZSkuYXBwbHlNYXRyaXg0KHQubWF0cml4V29ybGQpfXRyYW5zZm9ybURpcmVjdGlvbih0KXtjb25zdCBlPXRoaXMueCxuPXRoaXMueSxpPXRoaXMueixyPXQuZWxlbWVudHM7cmV0dXJuIHRoaXMueD1yWzBdKmUrcls0XSpuK3JbOF0qaSx0aGlzLnk9clsxXSplK3JbNV0qbityWzldKmksdGhpcy56PXJbMl0qZStyWzZdKm4rclsxMF0qaSx0aGlzLm5vcm1hbGl6ZSgpfWRpdmlkZSh0KXtyZXR1cm4gdGhpcy54Lz10LngsdGhpcy55Lz10LnksdGhpcy56Lz10LnosdGhpc31kaXZpZGVTY2FsYXIodCl7cmV0dXJuIHRoaXMubXVsdGlwbHlTY2FsYXIoMS90KX1taW4odCl7cmV0dXJuIHRoaXMueD1NYXRoLm1pbih0aGlzLngsdC54KSx0aGlzLnk9TWF0aC5taW4odGhpcy55LHQueSksdGhpcy56PU1hdGgubWluKHRoaXMueix0LnopLHRoaXN9bWF4KHQpe3JldHVybiB0aGlzLng9TWF0aC5tYXgodGhpcy54LHQueCksdGhpcy55PU1hdGgubWF4KHRoaXMueSx0LnkpLHRoaXMuej1NYXRoLm1heCh0aGlzLnosdC56KSx0aGlzfWNsYW1wKHQsZSl7cmV0dXJuIHRoaXMueD1NYXRoLm1heCh0LngsTWF0aC5taW4oZS54LHRoaXMueCkpLHRoaXMueT1NYXRoLm1heCh0LnksTWF0aC5taW4oZS55LHRoaXMueSkpLHRoaXMuej1NYXRoLm1heCh0LnosTWF0aC5taW4oZS56LHRoaXMueikpLHRoaXN9Y2xhbXBTY2FsYXIodCxlKXtyZXR1cm4gdGhpcy54PU1hdGgubWF4KHQsTWF0aC5taW4oZSx0aGlzLngpKSx0aGlzLnk9TWF0aC5tYXgodCxNYXRoLm1pbihlLHRoaXMueSkpLHRoaXMuej1NYXRoLm1heCh0LE1hdGgubWluKGUsdGhpcy56KSksdGhpc31jbGFtcExlbmd0aCh0LGUpe2NvbnN0IG49dGhpcy5sZW5ndGgoKTtyZXR1cm4gdGhpcy5kaXZpZGVTY2FsYXIobnx8MSkubXVsdGlwbHlTY2FsYXIoTWF0aC5tYXgodCxNYXRoLm1pbihlLG4pKSl9Zmxvb3IoKXtyZXR1cm4gdGhpcy54PU1hdGguZmxvb3IodGhpcy54KSx0aGlzLnk9TWF0aC5mbG9vcih0aGlzLnkpLHRoaXMuej1NYXRoLmZsb29yKHRoaXMueiksdGhpc31jZWlsKCl7cmV0dXJuIHRoaXMueD1NYXRoLmNlaWwodGhpcy54KSx0aGlzLnk9TWF0aC5jZWlsKHRoaXMueSksdGhpcy56PU1hdGguY2VpbCh0aGlzLnopLHRoaXN9cm91bmQoKXtyZXR1cm4gdGhpcy54PU1hdGgucm91bmQodGhpcy54KSx0aGlzLnk9TWF0aC5yb3VuZCh0aGlzLnkpLHRoaXMuej1NYXRoLnJvdW5kKHRoaXMueiksdGhpc31yb3VuZFRvWmVybygpe3JldHVybiB0aGlzLng9dGhpcy54PDA/TWF0aC5jZWlsKHRoaXMueCk6TWF0aC5mbG9vcih0aGlzLngpLHRoaXMueT10aGlzLnk8MD9NYXRoLmNlaWwodGhpcy55KTpNYXRoLmZsb29yKHRoaXMueSksdGhpcy56PXRoaXMuejwwP01hdGguY2VpbCh0aGlzLnopOk1hdGguZmxvb3IodGhpcy56KSx0aGlzfW5lZ2F0ZSgpe3JldHVybiB0aGlzLng9LXRoaXMueCx0aGlzLnk9LXRoaXMueSx0aGlzLno9LXRoaXMueix0aGlzfWRvdCh0KXtyZXR1cm4gdGhpcy54KnQueCt0aGlzLnkqdC55K3RoaXMueip0Lnp9bGVuZ3RoU3EoKXtyZXR1cm4gdGhpcy54KnRoaXMueCt0aGlzLnkqdGhpcy55K3RoaXMueip0aGlzLnp9bGVuZ3RoKCl7cmV0dXJuIE1hdGguc3FydCh0aGlzLngqdGhpcy54K3RoaXMueSp0aGlzLnkrdGhpcy56KnRoaXMueil9bWFuaGF0dGFuTGVuZ3RoKCl7cmV0dXJuIE1hdGguYWJzKHRoaXMueCkrTWF0aC5hYnModGhpcy55KStNYXRoLmFicyh0aGlzLnopfW5vcm1hbGl6ZSgpe3JldHVybiB0aGlzLmRpdmlkZVNjYWxhcih0aGlzLmxlbmd0aCgpfHwxKX1zZXRMZW5ndGgodCl7cmV0dXJuIHRoaXMubm9ybWFsaXplKCkubXVsdGlwbHlTY2FsYXIodCl9bGVycCh0LGUpe3JldHVybiB0aGlzLngrPSh0LngtdGhpcy54KSplLHRoaXMueSs9KHQueS10aGlzLnkpKmUsdGhpcy56Kz0odC56LXRoaXMueikqZSx0aGlzfWxlcnBWZWN0b3JzKHQsZSxuKXtyZXR1cm4gdGhpcy54PXQueCsoZS54LXQueCkqbix0aGlzLnk9dC55KyhlLnktdC55KSpuLHRoaXMuej10LnorKGUuei10LnopKm4sdGhpc31jcm9zcyh0LGUpe3JldHVybiB2b2lkIDAhPT1lPyhjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjM6IC5jcm9zcygpIG5vdyBvbmx5IGFjY2VwdHMgb25lIGFyZ3VtZW50LiBVc2UgLmNyb3NzVmVjdG9ycyggYSwgYiApIGluc3RlYWQuIiksdGhpcy5jcm9zc1ZlY3RvcnModCxlKSk6dGhpcy5jcm9zc1ZlY3RvcnModGhpcyx0KX1jcm9zc1ZlY3RvcnModCxlKXtjb25zdCBuPXQueCxpPXQueSxyPXQueixvPWUueCxhPWUueSxzPWUuejtyZXR1cm4gdGhpcy54PWkqcy1yKmEsdGhpcy55PXIqby1uKnMsdGhpcy56PW4qYS1pKm8sdGhpc31wcm9qZWN0T25WZWN0b3IodCl7Y29uc3QgZT10Lmxlbmd0aFNxKCk7aWYoMD09PWUpcmV0dXJuIHRoaXMuc2V0KDAsMCwwKTtjb25zdCBuPXQuZG90KHRoaXMpL2U7cmV0dXJuIHRoaXMuY29weSh0KS5tdWx0aXBseVNjYWxhcihuKX1wcm9qZWN0T25QbGFuZSh0KXtyZXR1cm4gRjV0LmNvcHkodGhpcykucHJvamVjdE9uVmVjdG9yKHQpLHRoaXMuc3ViKEY1dCl9cmVmbGVjdCh0KXtyZXR1cm4gdGhpcy5zdWIoRjV0LmNvcHkodCkubXVsdGlwbHlTY2FsYXIoMip0aGlzLmRvdCh0KSkpfWFuZ2xlVG8odCl7Y29uc3QgZT1NYXRoLnNxcnQodGhpcy5sZW5ndGhTcSgpKnQubGVuZ3RoU3EoKSk7aWYoMD09PWUpcmV0dXJuIE1hdGguUEkvMjtjb25zdCBuPXRoaXMuZG90KHQpL2U7cmV0dXJuIE1hdGguYWNvcyhzNXQobiwtMSwxKSl9ZGlzdGFuY2VUbyh0KXtyZXR1cm4gTWF0aC5zcXJ0KHRoaXMuZGlzdGFuY2VUb1NxdWFyZWQodCkpfWRpc3RhbmNlVG9TcXVhcmVkKHQpe2NvbnN0IGU9dGhpcy54LXQueCxuPXRoaXMueS10LnksaT10aGlzLnotdC56O3JldHVybiBlKmUrbipuK2kqaX1tYW5oYXR0YW5EaXN0YW5jZVRvKHQpe3JldHVybiBNYXRoLmFicyh0aGlzLngtdC54KStNYXRoLmFicyh0aGlzLnktdC55KStNYXRoLmFicyh0aGlzLnotdC56KX1zZXRGcm9tU3BoZXJpY2FsKHQpe3JldHVybiB0aGlzLnNldEZyb21TcGhlcmljYWxDb29yZHModC5yYWRpdXMsdC5waGksdC50aGV0YSl9c2V0RnJvbVNwaGVyaWNhbENvb3Jkcyh0LGUsbil7Y29uc3QgaT1NYXRoLnNpbihlKSp0O3JldHVybiB0aGlzLng9aSpNYXRoLnNpbihuKSx0aGlzLnk9TWF0aC5jb3MoZSkqdCx0aGlzLno9aSpNYXRoLmNvcyhuKSx0aGlzfXNldEZyb21DeWxpbmRyaWNhbCh0KXtyZXR1cm4gdGhpcy5zZXRGcm9tQ3lsaW5kcmljYWxDb29yZHModC5yYWRpdXMsdC50aGV0YSx0LnkpfXNldEZyb21DeWxpbmRyaWNhbENvb3Jkcyh0LGUsbil7cmV0dXJuIHRoaXMueD10Kk1hdGguc2luKGUpLHRoaXMueT1uLHRoaXMuej10Kk1hdGguY29zKGUpLHRoaXN9c2V0RnJvbU1hdHJpeFBvc2l0aW9uKHQpe2NvbnN0IGU9dC5lbGVtZW50cztyZXR1cm4gdGhpcy54PWVbMTJdLHRoaXMueT1lWzEzXSx0aGlzLno9ZVsxNF0sdGhpc31zZXRGcm9tTWF0cml4U2NhbGUodCl7Y29uc3QgZT10aGlzLnNldEZyb21NYXRyaXhDb2x1bW4odCwwKS5sZW5ndGgoKSxuPXRoaXMuc2V0RnJvbU1hdHJpeENvbHVtbih0LDEpLmxlbmd0aCgpLGk9dGhpcy5zZXRGcm9tTWF0cml4Q29sdW1uKHQsMikubGVuZ3RoKCk7cmV0dXJuIHRoaXMueD1lLHRoaXMueT1uLHRoaXMuej1pLHRoaXN9c2V0RnJvbU1hdHJpeENvbHVtbih0LGUpe3JldHVybiB0aGlzLmZyb21BcnJheSh0LmVsZW1lbnRzLDQqZSl9c2V0RnJvbU1hdHJpeDNDb2x1bW4odCxlKXtyZXR1cm4gdGhpcy5mcm9tQXJyYXkodC5lbGVtZW50cywzKmUpfWVxdWFscyh0KXtyZXR1cm4gdC54PT09dGhpcy54JiZ0Lnk9PT10aGlzLnkmJnQuej09PXRoaXMuen1mcm9tQXJyYXkodCxlPTApe3JldHVybiB0aGlzLng9dFtlXSx0aGlzLnk9dFtlKzFdLHRoaXMuej10W2UrMl0sdGhpc310b0FycmF5KHQ9W10sZT0wKXtyZXR1cm4gdFtlXT10aGlzLngsdFtlKzFdPXRoaXMueSx0W2UrMl09dGhpcy56LHR9ZnJvbUJ1ZmZlckF0dHJpYnV0ZSh0LGUsbil7cmV0dXJuIHZvaWQgMCE9PW4mJmNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMzogb2Zmc2V0IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSAuZnJvbUJ1ZmZlckF0dHJpYnV0ZSgpLiIpLHRoaXMueD10LmdldFgoZSksdGhpcy55PXQuZ2V0WShlKSx0aGlzLno9dC5nZXRaKGUpLHRoaXN9cmFuZG9tKCl7cmV0dXJuIHRoaXMueD1NYXRoLnJhbmRvbSgpLHRoaXMueT1NYXRoLnJhbmRvbSgpLHRoaXMuej1NYXRoLnJhbmRvbSgpLHRoaXN9fUg1dC5wcm90b3R5cGUuaXNWZWN0b3IzPSEwO2NvbnN0IEY1dD1uZXcgSDV0LFY1dD1uZXcgQjV0O2NsYXNzIFU1dHtjb25zdHJ1Y3Rvcih0PW5ldyBINXQoMS8wLDEvMCwxLzApLGU9bmV3IEg1dCgtMS8wLC0xLzAsLTEvMCkpe3RoaXMubWluPXQsdGhpcy5tYXg9ZX1zZXQodCxlKXtyZXR1cm4gdGhpcy5taW4uY29weSh0KSx0aGlzLm1heC5jb3B5KGUpLHRoaXN9c2V0RnJvbUFycmF5KHQpe2xldCBlPTEvMCxuPTEvMCxpPTEvMCxyPS0xLzAsbz0tMS8wLGE9LTEvMDtmb3IobGV0IHM9MCxsPXQubGVuZ3RoO3M8bDtzKz0zKXtjb25zdCBsPXRbc10sYz10W3MrMV0sdT10W3MrMl07bDxlJiYoZT1sKSxjPG4mJihuPWMpLHU8aSYmKGk9dSksbD5yJiYocj1sKSxjPm8mJihvPWMpLHU+YSYmKGE9dSl9cmV0dXJuIHRoaXMubWluLnNldChlLG4saSksdGhpcy5tYXguc2V0KHIsbyxhKSx0aGlzfXNldEZyb21CdWZmZXJBdHRyaWJ1dGUodCl7bGV0IGU9MS8wLG49MS8wLGk9MS8wLHI9LTEvMCxvPS0xLzAsYT0tMS8wO2ZvcihsZXQgcz0wLGw9dC5jb3VudDtzPGw7cysrKXtjb25zdCBsPXQuZ2V0WChzKSxjPXQuZ2V0WShzKSx1PXQuZ2V0WihzKTtsPGUmJihlPWwpLGM8biYmKG49YyksdTxpJiYoaT11KSxsPnImJihyPWwpLGM+byYmKG89YyksdT5hJiYoYT11KX1yZXR1cm4gdGhpcy5taW4uc2V0KGUsbixpKSx0aGlzLm1heC5zZXQocixvLGEpLHRoaXN9c2V0RnJvbVBvaW50cyh0KXt0aGlzLm1ha2VFbXB0eSgpO2ZvcihsZXQgZT0wLG49dC5sZW5ndGg7ZTxuO2UrKyl0aGlzLmV4cGFuZEJ5UG9pbnQodFtlXSk7cmV0dXJuIHRoaXN9c2V0RnJvbUNlbnRlckFuZFNpemUodCxlKXtjb25zdCBuPUc1dC5jb3B5KGUpLm11bHRpcGx5U2NhbGFyKC41KTtyZXR1cm4gdGhpcy5taW4uY29weSh0KS5zdWIobiksdGhpcy5tYXguY29weSh0KS5hZGQobiksdGhpc31zZXRGcm9tT2JqZWN0KHQpe3JldHVybiB0aGlzLm1ha2VFbXB0eSgpLHRoaXMuZXhwYW5kQnlPYmplY3QodCl9Y2xvbmUoKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IpLmNvcHkodGhpcyl9Y29weSh0KXtyZXR1cm4gdGhpcy5taW4uY29weSh0Lm1pbiksdGhpcy5tYXguY29weSh0Lm1heCksdGhpc31tYWtlRW1wdHkoKXtyZXR1cm4gdGhpcy5taW4ueD10aGlzLm1pbi55PXRoaXMubWluLno9MS8wLHRoaXMubWF4Lng9dGhpcy5tYXgueT10aGlzLm1heC56PS0xLzAsdGhpc31pc0VtcHR5KCl7cmV0dXJuIHRoaXMubWF4Lng8dGhpcy5taW4ueHx8dGhpcy5tYXgueTx0aGlzLm1pbi55fHx0aGlzLm1heC56PHRoaXMubWluLnp9Z2V0Q2VudGVyKHQpe3JldHVybiB0aGlzLmlzRW1wdHkoKT90LnNldCgwLDAsMCk6dC5hZGRWZWN0b3JzKHRoaXMubWluLHRoaXMubWF4KS5tdWx0aXBseVNjYWxhciguNSl9Z2V0U2l6ZSh0KXtyZXR1cm4gdGhpcy5pc0VtcHR5KCk/dC5zZXQoMCwwLDApOnQuc3ViVmVjdG9ycyh0aGlzLm1heCx0aGlzLm1pbil9ZXhwYW5kQnlQb2ludCh0KXtyZXR1cm4gdGhpcy5taW4ubWluKHQpLHRoaXMubWF4Lm1heCh0KSx0aGlzfWV4cGFuZEJ5VmVjdG9yKHQpe3JldHVybiB0aGlzLm1pbi5zdWIodCksdGhpcy5tYXguYWRkKHQpLHRoaXN9ZXhwYW5kQnlTY2FsYXIodCl7cmV0dXJuIHRoaXMubWluLmFkZFNjYWxhcigtdCksdGhpcy5tYXguYWRkU2NhbGFyKHQpLHRoaXN9ZXhwYW5kQnlPYmplY3QodCl7dC51cGRhdGVXb3JsZE1hdHJpeCghMSwhMSk7Y29uc3QgZT10Lmdlb21ldHJ5O3ZvaWQgMCE9PWUmJihudWxsPT09ZS5ib3VuZGluZ0JveCYmZS5jb21wdXRlQm91bmRpbmdCb3goKSxXNXQuY29weShlLmJvdW5kaW5nQm94KSxXNXQuYXBwbHlNYXRyaXg0KHQubWF0cml4V29ybGQpLHRoaXMudW5pb24oVzV0KSk7Y29uc3Qgbj10LmNoaWxkcmVuO2ZvcihsZXQgdD0wLGU9bi5sZW5ndGg7dDxlO3QrKyl0aGlzLmV4cGFuZEJ5T2JqZWN0KG5bdF0pO3JldHVybiB0aGlzfWNvbnRhaW5zUG9pbnQodCl7cmV0dXJuISh0Lng8dGhpcy5taW4ueHx8dC54PnRoaXMubWF4Lnh8fHQueTx0aGlzLm1pbi55fHx0Lnk+dGhpcy5tYXgueXx8dC56PHRoaXMubWluLnp8fHQuej50aGlzLm1heC56KX1jb250YWluc0JveCh0KXtyZXR1cm4gdGhpcy5taW4ueDw9dC5taW4ueCYmdC5tYXgueDw9dGhpcy5tYXgueCYmdGhpcy5taW4ueTw9dC5taW4ueSYmdC5tYXgueTw9dGhpcy5tYXgueSYmdGhpcy5taW4uejw9dC5taW4ueiYmdC5tYXguejw9dGhpcy5tYXguen1nZXRQYXJhbWV0ZXIodCxlKXtyZXR1cm4gZS5zZXQoKHQueC10aGlzLm1pbi54KS8odGhpcy5tYXgueC10aGlzLm1pbi54KSwodC55LXRoaXMubWluLnkpLyh0aGlzLm1heC55LXRoaXMubWluLnkpLCh0LnotdGhpcy5taW4ueikvKHRoaXMubWF4LnotdGhpcy5taW4ueikpfWludGVyc2VjdHNCb3godCl7cmV0dXJuISh0Lm1heC54PHRoaXMubWluLnh8fHQubWluLng+dGhpcy5tYXgueHx8dC5tYXgueTx0aGlzLm1pbi55fHx0Lm1pbi55PnRoaXMubWF4Lnl8fHQubWF4Lno8dGhpcy5taW4uenx8dC5taW4uej50aGlzLm1heC56KX1pbnRlcnNlY3RzU3BoZXJlKHQpe3JldHVybiB0aGlzLmNsYW1wUG9pbnQodC5jZW50ZXIsRzV0KSxHNXQuZGlzdGFuY2VUb1NxdWFyZWQodC5jZW50ZXIpPD10LnJhZGl1cyp0LnJhZGl1c31pbnRlcnNlY3RzUGxhbmUodCl7bGV0IGUsbjtyZXR1cm4gdC5ub3JtYWwueD4wPyhlPXQubm9ybWFsLngqdGhpcy5taW4ueCxuPXQubm9ybWFsLngqdGhpcy5tYXgueCk6KGU9dC5ub3JtYWwueCp0aGlzLm1heC54LG49dC5ub3JtYWwueCp0aGlzLm1pbi54KSx0Lm5vcm1hbC55PjA/KGUrPXQubm9ybWFsLnkqdGhpcy5taW4ueSxuKz10Lm5vcm1hbC55KnRoaXMubWF4LnkpOihlKz10Lm5vcm1hbC55KnRoaXMubWF4Lnksbis9dC5ub3JtYWwueSp0aGlzLm1pbi55KSx0Lm5vcm1hbC56PjA/KGUrPXQubm9ybWFsLnoqdGhpcy5taW4ueixuKz10Lm5vcm1hbC56KnRoaXMubWF4LnopOihlKz10Lm5vcm1hbC56KnRoaXMubWF4Lnosbis9dC5ub3JtYWwueip0aGlzLm1pbi56KSxlPD0tdC5jb25zdGFudCYmbj49LXQuY29uc3RhbnR9aW50ZXJzZWN0c1RyaWFuZ2xlKHQpe2lmKHRoaXMuaXNFbXB0eSgpKXJldHVybiExO3RoaXMuZ2V0Q2VudGVyKEo1dCksUTV0LnN1YlZlY3RvcnModGhpcy5tYXgsSjV0KSxxNXQuc3ViVmVjdG9ycyh0LmEsSjV0KSxZNXQuc3ViVmVjdG9ycyh0LmIsSjV0KSxYNXQuc3ViVmVjdG9ycyh0LmMsSjV0KSwkNXQuc3ViVmVjdG9ycyhZNXQscTV0KSxLNXQuc3ViVmVjdG9ycyhYNXQsWTV0KSxaNXQuc3ViVmVjdG9ycyhxNXQsWDV0KTtsZXQgZT1bMCwtJDV0LnosJDV0LnksMCwtSzV0LnosSzV0LnksMCwtWjV0LnosWjV0LnksJDV0LnosMCwtJDV0LngsSzV0LnosMCwtSzV0LngsWjV0LnosMCwtWjV0LngsLSQ1dC55LCQ1dC54LDAsLUs1dC55LEs1dC54LDAsLVo1dC55LFo1dC54LDBdO3JldHVybiEhbjN0KGUscTV0LFk1dCxYNXQsUTV0KSYmKGU9WzEsMCwwLDAsMSwwLDAsMCwxXSwhIW4zdChlLHE1dCxZNXQsWDV0LFE1dCkmJih0M3QuY3Jvc3NWZWN0b3JzKCQ1dCxLNXQpLGU9W3QzdC54LHQzdC55LHQzdC56XSxuM3QoZSxxNXQsWTV0LFg1dCxRNXQpKSl9Y2xhbXBQb2ludCh0LGUpe3JldHVybiBlLmNvcHkodCkuY2xhbXAodGhpcy5taW4sdGhpcy5tYXgpfWRpc3RhbmNlVG9Qb2ludCh0KXtyZXR1cm4gRzV0LmNvcHkodCkuY2xhbXAodGhpcy5taW4sdGhpcy5tYXgpLnN1Yih0KS5sZW5ndGgoKX1nZXRCb3VuZGluZ1NwaGVyZSh0KXtyZXR1cm4gdGhpcy5nZXRDZW50ZXIodC5jZW50ZXIpLHQucmFkaXVzPS41KnRoaXMuZ2V0U2l6ZShHNXQpLmxlbmd0aCgpLHR9aW50ZXJzZWN0KHQpe3JldHVybiB0aGlzLm1pbi5tYXgodC5taW4pLHRoaXMubWF4Lm1pbih0Lm1heCksdGhpcy5pc0VtcHR5KCkmJnRoaXMubWFrZUVtcHR5KCksdGhpc311bmlvbih0KXtyZXR1cm4gdGhpcy5taW4ubWluKHQubWluKSx0aGlzLm1heC5tYXgodC5tYXgpLHRoaXN9YXBwbHlNYXRyaXg0KHQpe3JldHVybiB0aGlzLmlzRW1wdHkoKXx8KGo1dFswXS5zZXQodGhpcy5taW4ueCx0aGlzLm1pbi55LHRoaXMubWluLnopLmFwcGx5TWF0cml4NCh0KSxqNXRbMV0uc2V0KHRoaXMubWluLngsdGhpcy5taW4ueSx0aGlzLm1heC56KS5hcHBseU1hdHJpeDQodCksajV0WzJdLnNldCh0aGlzLm1pbi54LHRoaXMubWF4LnksdGhpcy5taW4ueikuYXBwbHlNYXRyaXg0KHQpLGo1dFszXS5zZXQodGhpcy5taW4ueCx0aGlzLm1heC55LHRoaXMubWF4LnopLmFwcGx5TWF0cml4NCh0KSxqNXRbNF0uc2V0KHRoaXMubWF4LngsdGhpcy5taW4ueSx0aGlzLm1pbi56KS5hcHBseU1hdHJpeDQodCksajV0WzVdLnNldCh0aGlzLm1heC54LHRoaXMubWluLnksdGhpcy5tYXgueikuYXBwbHlNYXRyaXg0KHQpLGo1dFs2XS5zZXQodGhpcy5tYXgueCx0aGlzLm1heC55LHRoaXMubWluLnopLmFwcGx5TWF0cml4NCh0KSxqNXRbN10uc2V0KHRoaXMubWF4LngsdGhpcy5tYXgueSx0aGlzLm1heC56KS5hcHBseU1hdHJpeDQodCksdGhpcy5zZXRGcm9tUG9pbnRzKGo1dCkpLHRoaXN9dHJhbnNsYXRlKHQpe3JldHVybiB0aGlzLm1pbi5hZGQodCksdGhpcy5tYXguYWRkKHQpLHRoaXN9ZXF1YWxzKHQpe3JldHVybiB0Lm1pbi5lcXVhbHModGhpcy5taW4pJiZ0Lm1heC5lcXVhbHModGhpcy5tYXgpfX1VNXQucHJvdG90eXBlLmlzQm94Mz0hMDtjb25zdCBqNXQ9W25ldyBINXQsbmV3IEg1dCxuZXcgSDV0LG5ldyBINXQsbmV3IEg1dCxuZXcgSDV0LG5ldyBINXQsbmV3IEg1dF0sRzV0PW5ldyBINXQsVzV0PW5ldyBVNXQscTV0PW5ldyBINXQsWTV0PW5ldyBINXQsWDV0PW5ldyBINXQsJDV0PW5ldyBINXQsSzV0PW5ldyBINXQsWjV0PW5ldyBINXQsSjV0PW5ldyBINXQsUTV0PW5ldyBINXQsdDN0PW5ldyBINXQsZTN0PW5ldyBINXQ7ZnVuY3Rpb24gbjN0KHQsZSxuLGkscil7Zm9yKGxldCBvPTAsYT10Lmxlbmd0aC0zO288PWE7bys9Myl7ZTN0LmZyb21BcnJheSh0LG8pO2NvbnN0IGE9ci54Kk1hdGguYWJzKGUzdC54KStyLnkqTWF0aC5hYnMoZTN0LnkpK3IueipNYXRoLmFicyhlM3Queikscz1lLmRvdChlM3QpLGw9bi5kb3QoZTN0KSxjPWkuZG90KGUzdCk7aWYoTWF0aC5tYXgoLU1hdGgubWF4KHMsbCxjKSxNYXRoLm1pbihzLGwsYykpPmEpcmV0dXJuITF9cmV0dXJuITB9Y29uc3QgaTN0PW5ldyBVNXQscjN0PW5ldyBINXQsbzN0PW5ldyBINXQsYTN0PW5ldyBINXQ7Y2xhc3MgczN0e2NvbnN0cnVjdG9yKHQ9bmV3IEg1dCxlPS0xKXt0aGlzLmNlbnRlcj10LHRoaXMucmFkaXVzPWV9c2V0KHQsZSl7cmV0dXJuIHRoaXMuY2VudGVyLmNvcHkodCksdGhpcy5yYWRpdXM9ZSx0aGlzfXNldEZyb21Qb2ludHModCxlKXtjb25zdCBuPXRoaXMuY2VudGVyO3ZvaWQgMCE9PWU/bi5jb3B5KGUpOmkzdC5zZXRGcm9tUG9pbnRzKHQpLmdldENlbnRlcihuKTtsZXQgaT0wO2ZvcihsZXQgZT0wLHI9dC5sZW5ndGg7ZTxyO2UrKylpPU1hdGgubWF4KGksbi5kaXN0YW5jZVRvU3F1YXJlZCh0W2VdKSk7cmV0dXJuIHRoaXMucmFkaXVzPU1hdGguc3FydChpKSx0aGlzfWNvcHkodCl7cmV0dXJuIHRoaXMuY2VudGVyLmNvcHkodC5jZW50ZXIpLHRoaXMucmFkaXVzPXQucmFkaXVzLHRoaXN9aXNFbXB0eSgpe3JldHVybiB0aGlzLnJhZGl1czwwfW1ha2VFbXB0eSgpe3JldHVybiB0aGlzLmNlbnRlci5zZXQoMCwwLDApLHRoaXMucmFkaXVzPS0xLHRoaXN9Y29udGFpbnNQb2ludCh0KXtyZXR1cm4gdC5kaXN0YW5jZVRvU3F1YXJlZCh0aGlzLmNlbnRlcik8PXRoaXMucmFkaXVzKnRoaXMucmFkaXVzfWRpc3RhbmNlVG9Qb2ludCh0KXtyZXR1cm4gdC5kaXN0YW5jZVRvKHRoaXMuY2VudGVyKS10aGlzLnJhZGl1c31pbnRlcnNlY3RzU3BoZXJlKHQpe2NvbnN0IGU9dGhpcy5yYWRpdXMrdC5yYWRpdXM7cmV0dXJuIHQuY2VudGVyLmRpc3RhbmNlVG9TcXVhcmVkKHRoaXMuY2VudGVyKTw9ZSplfWludGVyc2VjdHNCb3godCl7cmV0dXJuIHQuaW50ZXJzZWN0c1NwaGVyZSh0aGlzKX1pbnRlcnNlY3RzUGxhbmUodCl7cmV0dXJuIE1hdGguYWJzKHQuZGlzdGFuY2VUb1BvaW50KHRoaXMuY2VudGVyKSk8PXRoaXMucmFkaXVzfWNsYW1wUG9pbnQodCxlKXtjb25zdCBuPXRoaXMuY2VudGVyLmRpc3RhbmNlVG9TcXVhcmVkKHQpO3JldHVybiBlLmNvcHkodCksbj50aGlzLnJhZGl1cyp0aGlzLnJhZGl1cyYmKGUuc3ViKHRoaXMuY2VudGVyKS5ub3JtYWxpemUoKSxlLm11bHRpcGx5U2NhbGFyKHRoaXMucmFkaXVzKS5hZGQodGhpcy5jZW50ZXIpKSxlfWdldEJvdW5kaW5nQm94KHQpe3JldHVybiB0aGlzLmlzRW1wdHkoKT8odC5tYWtlRW1wdHkoKSx0KToodC5zZXQodGhpcy5jZW50ZXIsdGhpcy5jZW50ZXIpLHQuZXhwYW5kQnlTY2FsYXIodGhpcy5yYWRpdXMpLHQpfWFwcGx5TWF0cml4NCh0KXtyZXR1cm4gdGhpcy5jZW50ZXIuYXBwbHlNYXRyaXg0KHQpLHRoaXMucmFkaXVzPXRoaXMucmFkaXVzKnQuZ2V0TWF4U2NhbGVPbkF4aXMoKSx0aGlzfXRyYW5zbGF0ZSh0KXtyZXR1cm4gdGhpcy5jZW50ZXIuYWRkKHQpLHRoaXN9ZXhwYW5kQnlQb2ludCh0KXthM3Quc3ViVmVjdG9ycyh0LHRoaXMuY2VudGVyKTtjb25zdCBlPWEzdC5sZW5ndGhTcSgpO2lmKGU+dGhpcy5yYWRpdXMqdGhpcy5yYWRpdXMpe2NvbnN0IHQ9TWF0aC5zcXJ0KGUpLG49LjUqKHQtdGhpcy5yYWRpdXMpO3RoaXMuY2VudGVyLmFkZChhM3QubXVsdGlwbHlTY2FsYXIobi90KSksdGhpcy5yYWRpdXMrPW59cmV0dXJuIHRoaXN9dW5pb24odCl7cmV0dXJuIG8zdC5zdWJWZWN0b3JzKHQuY2VudGVyLHRoaXMuY2VudGVyKS5ub3JtYWxpemUoKS5tdWx0aXBseVNjYWxhcih0LnJhZGl1cyksdGhpcy5leHBhbmRCeVBvaW50KHIzdC5jb3B5KHQuY2VudGVyKS5hZGQobzN0KSksdGhpcy5leHBhbmRCeVBvaW50KHIzdC5jb3B5KHQuY2VudGVyKS5zdWIobzN0KSksdGhpc31lcXVhbHModCl7cmV0dXJuIHQuY2VudGVyLmVxdWFscyh0aGlzLmNlbnRlcikmJnQucmFkaXVzPT09dGhpcy5yYWRpdXN9Y2xvbmUoKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IpLmNvcHkodGhpcyl9fWNvbnN0IGwzdD1uZXcgSDV0LGMzdD1uZXcgSDV0LHUzdD1uZXcgSDV0LGgzdD1uZXcgSDV0LGQzdD1uZXcgSDV0LHAzdD1uZXcgSDV0LGYzdD1uZXcgSDV0O2NsYXNzIG0zdHtjb25zdHJ1Y3Rvcih0PW5ldyBINXQsZT1uZXcgSDV0KDAsMCwtMSkpe3RoaXMub3JpZ2luPXQsdGhpcy5kaXJlY3Rpb249ZX1zZXQodCxlKXtyZXR1cm4gdGhpcy5vcmlnaW4uY29weSh0KSx0aGlzLmRpcmVjdGlvbi5jb3B5KGUpLHRoaXN9Y29weSh0KXtyZXR1cm4gdGhpcy5vcmlnaW4uY29weSh0Lm9yaWdpbiksdGhpcy5kaXJlY3Rpb24uY29weSh0LmRpcmVjdGlvbiksdGhpc31hdCh0LGUpe3JldHVybiBlLmNvcHkodGhpcy5kaXJlY3Rpb24pLm11bHRpcGx5U2NhbGFyKHQpLmFkZCh0aGlzLm9yaWdpbil9bG9va0F0KHQpe3JldHVybiB0aGlzLmRpcmVjdGlvbi5jb3B5KHQpLnN1Yih0aGlzLm9yaWdpbikubm9ybWFsaXplKCksdGhpc31yZWNhc3QodCl7cmV0dXJuIHRoaXMub3JpZ2luLmNvcHkodGhpcy5hdCh0LGwzdCkpLHRoaXN9Y2xvc2VzdFBvaW50VG9Qb2ludCh0LGUpe2Uuc3ViVmVjdG9ycyh0LHRoaXMub3JpZ2luKTtjb25zdCBuPWUuZG90KHRoaXMuZGlyZWN0aW9uKTtyZXR1cm4gbjwwP2UuY29weSh0aGlzLm9yaWdpbik6ZS5jb3B5KHRoaXMuZGlyZWN0aW9uKS5tdWx0aXBseVNjYWxhcihuKS5hZGQodGhpcy5vcmlnaW4pfWRpc3RhbmNlVG9Qb2ludCh0KXtyZXR1cm4gTWF0aC5zcXJ0KHRoaXMuZGlzdGFuY2VTcVRvUG9pbnQodCkpfWRpc3RhbmNlU3FUb1BvaW50KHQpe2NvbnN0IGU9bDN0LnN1YlZlY3RvcnModCx0aGlzLm9yaWdpbikuZG90KHRoaXMuZGlyZWN0aW9uKTtyZXR1cm4gZTwwP3RoaXMub3JpZ2luLmRpc3RhbmNlVG9TcXVhcmVkKHQpOihsM3QuY29weSh0aGlzLmRpcmVjdGlvbikubXVsdGlwbHlTY2FsYXIoZSkuYWRkKHRoaXMub3JpZ2luKSxsM3QuZGlzdGFuY2VUb1NxdWFyZWQodCkpfWRpc3RhbmNlU3FUb1NlZ21lbnQodCxlLG4saSl7YzN0LmNvcHkodCkuYWRkKGUpLm11bHRpcGx5U2NhbGFyKC41KSx1M3QuY29weShlKS5zdWIodCkubm9ybWFsaXplKCksaDN0LmNvcHkodGhpcy5vcmlnaW4pLnN1YihjM3QpO2NvbnN0IHI9LjUqdC5kaXN0YW5jZVRvKGUpLG89LXRoaXMuZGlyZWN0aW9uLmRvdCh1M3QpLGE9aDN0LmRvdCh0aGlzLmRpcmVjdGlvbikscz0taDN0LmRvdCh1M3QpLGw9aDN0Lmxlbmd0aFNxKCksYz1NYXRoLmFicygxLW8qbyk7bGV0IHUsaCxkLHA7aWYoYz4wKWlmKHU9bypzLWEsaD1vKmEtcyxwPXIqYyx1Pj0wKWlmKGg+PS1wKWlmKGg8PXApe2NvbnN0IHQ9MS9jO3UqPXQsaCo9dCxkPXUqKHUrbypoKzIqYSkraCoobyp1K2grMipzKStsfWVsc2UgaD1yLHU9TWF0aC5tYXgoMCwtKG8qaCthKSksZD0tdSp1K2gqKGgrMipzKStsO2Vsc2UgaD0tcix1PU1hdGgubWF4KDAsLShvKmgrYSkpLGQ9LXUqdStoKihoKzIqcykrbDtlbHNlIGg8PS1wPyh1PU1hdGgubWF4KDAsLSgtbypyK2EpKSxoPXU+MD8tcjpNYXRoLm1pbihNYXRoLm1heCgtciwtcyksciksZD0tdSp1K2gqKGgrMipzKStsKTpoPD1wPyh1PTAsaD1NYXRoLm1pbihNYXRoLm1heCgtciwtcyksciksZD1oKihoKzIqcykrbCk6KHU9TWF0aC5tYXgoMCwtKG8qcithKSksaD11PjA/cjpNYXRoLm1pbihNYXRoLm1heCgtciwtcyksciksZD0tdSp1K2gqKGgrMipzKStsKTtlbHNlIGg9bz4wPy1yOnIsdT1NYXRoLm1heCgwLC0obypoK2EpKSxkPS11KnUraCooaCsyKnMpK2w7cmV0dXJuIG4mJm4uY29weSh0aGlzLmRpcmVjdGlvbikubXVsdGlwbHlTY2FsYXIodSkuYWRkKHRoaXMub3JpZ2luKSxpJiZpLmNvcHkodTN0KS5tdWx0aXBseVNjYWxhcihoKS5hZGQoYzN0KSxkfWludGVyc2VjdFNwaGVyZSh0LGUpe2wzdC5zdWJWZWN0b3JzKHQuY2VudGVyLHRoaXMub3JpZ2luKTtjb25zdCBuPWwzdC5kb3QodGhpcy5kaXJlY3Rpb24pLGk9bDN0LmRvdChsM3QpLW4qbixyPXQucmFkaXVzKnQucmFkaXVzO2lmKGk+cilyZXR1cm4gbnVsbDtjb25zdCBvPU1hdGguc3FydChyLWkpLGE9bi1vLHM9bitvO3JldHVybiBhPDAmJnM8MD9udWxsOnRoaXMuYXQoYTwwP3M6YSxlKX1pbnRlcnNlY3RzU3BoZXJlKHQpe3JldHVybiB0aGlzLmRpc3RhbmNlU3FUb1BvaW50KHQuY2VudGVyKTw9dC5yYWRpdXMqdC5yYWRpdXN9ZGlzdGFuY2VUb1BsYW5lKHQpe2NvbnN0IGU9dC5ub3JtYWwuZG90KHRoaXMuZGlyZWN0aW9uKTtpZigwPT09ZSlyZXR1cm4gMD09PXQuZGlzdGFuY2VUb1BvaW50KHRoaXMub3JpZ2luKT8wOm51bGw7Y29uc3Qgbj0tKHRoaXMub3JpZ2luLmRvdCh0Lm5vcm1hbCkrdC5jb25zdGFudCkvZTtyZXR1cm4gbj49MD9uOm51bGx9aW50ZXJzZWN0UGxhbmUodCxlKXtjb25zdCBuPXRoaXMuZGlzdGFuY2VUb1BsYW5lKHQpO3JldHVybiBudWxsPT09bj9udWxsOnRoaXMuYXQobixlKX1pbnRlcnNlY3RzUGxhbmUodCl7Y29uc3QgZT10LmRpc3RhbmNlVG9Qb2ludCh0aGlzLm9yaWdpbik7aWYoMD09PWUpcmV0dXJuITA7cmV0dXJuIHQubm9ybWFsLmRvdCh0aGlzLmRpcmVjdGlvbikqZTwwfWludGVyc2VjdEJveCh0LGUpe2xldCBuLGkscixvLGEscztjb25zdCBsPTEvdGhpcy5kaXJlY3Rpb24ueCxjPTEvdGhpcy5kaXJlY3Rpb24ueSx1PTEvdGhpcy5kaXJlY3Rpb24ueixoPXRoaXMub3JpZ2luO3JldHVybiBsPj0wPyhuPSh0Lm1pbi54LWgueCkqbCxpPSh0Lm1heC54LWgueCkqbCk6KG49KHQubWF4LngtaC54KSpsLGk9KHQubWluLngtaC54KSpsKSxjPj0wPyhyPSh0Lm1pbi55LWgueSkqYyxvPSh0Lm1heC55LWgueSkqYyk6KHI9KHQubWF4LnktaC55KSpjLG89KHQubWluLnktaC55KSpjKSxuPm98fHI+aT9udWxsOigocj5ufHxuIT1uKSYmKG49ciksKG88aXx8aSE9aSkmJihpPW8pLHU+PTA/KGE9KHQubWluLnotaC56KSp1LHM9KHQubWF4LnotaC56KSp1KTooYT0odC5tYXguei1oLnopKnUscz0odC5taW4uei1oLnopKnUpLG4+c3x8YT5pP251bGw6KChhPm58fG4hPW4pJiYobj1hKSwoczxpfHxpIT1pKSYmKGk9cyksaTwwP251bGw6dGhpcy5hdChuPj0wP246aSxlKSkpfWludGVyc2VjdHNCb3godCl7cmV0dXJuIG51bGwhPT10aGlzLmludGVyc2VjdEJveCh0LGwzdCl9aW50ZXJzZWN0VHJpYW5nbGUodCxlLG4saSxyKXtkM3Quc3ViVmVjdG9ycyhlLHQpLHAzdC5zdWJWZWN0b3JzKG4sdCksZjN0LmNyb3NzVmVjdG9ycyhkM3QscDN0KTtsZXQgbyxhPXRoaXMuZGlyZWN0aW9uLmRvdChmM3QpO2lmKGE+MCl7aWYoaSlyZXR1cm4gbnVsbDtvPTF9ZWxzZXtpZighKGE8MCkpcmV0dXJuIG51bGw7bz0tMSxhPS1hfWgzdC5zdWJWZWN0b3JzKHRoaXMub3JpZ2luLHQpO2NvbnN0IHM9byp0aGlzLmRpcmVjdGlvbi5kb3QocDN0LmNyb3NzVmVjdG9ycyhoM3QscDN0KSk7aWYoczwwKXJldHVybiBudWxsO2NvbnN0IGw9byp0aGlzLmRpcmVjdGlvbi5kb3QoZDN0LmNyb3NzKGgzdCkpO2lmKGw8MClyZXR1cm4gbnVsbDtpZihzK2w+YSlyZXR1cm4gbnVsbDtjb25zdCBjPS1vKmgzdC5kb3QoZjN0KTtyZXR1cm4gYzwwP251bGw6dGhpcy5hdChjL2Escil9YXBwbHlNYXRyaXg0KHQpe3JldHVybiB0aGlzLm9yaWdpbi5hcHBseU1hdHJpeDQodCksdGhpcy5kaXJlY3Rpb24udHJhbnNmb3JtRGlyZWN0aW9uKHQpLHRoaXN9ZXF1YWxzKHQpe3JldHVybiB0Lm9yaWdpbi5lcXVhbHModGhpcy5vcmlnaW4pJiZ0LmRpcmVjdGlvbi5lcXVhbHModGhpcy5kaXJlY3Rpb24pfWNsb25lKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMpfX1jbGFzcyBnM3R7Y29uc3RydWN0b3IoKXt0aGlzLmVsZW1lbnRzPVsxLDAsMCwwLDAsMSwwLDAsMCwwLDEsMCwwLDAsMCwxXSxhcmd1bWVudHMubGVuZ3RoPjAmJmNvbnNvbGUuZXJyb3IoIlRIUkVFLk1hdHJpeDQ6IHRoZSBjb25zdHJ1Y3RvciBubyBsb25nZXIgcmVhZHMgYXJndW1lbnRzLiB1c2UgLnNldCgpIGluc3RlYWQuIil9c2V0KHQsZSxuLGkscixvLGEscyxsLGMsdSxoLGQscCxmLG0pe2NvbnN0IGc9dGhpcy5lbGVtZW50cztyZXR1cm4gZ1swXT10LGdbNF09ZSxnWzhdPW4sZ1sxMl09aSxnWzFdPXIsZ1s1XT1vLGdbOV09YSxnWzEzXT1zLGdbMl09bCxnWzZdPWMsZ1sxMF09dSxnWzE0XT1oLGdbM109ZCxnWzddPXAsZ1sxMV09ZixnWzE1XT1tLHRoaXN9aWRlbnRpdHkoKXtyZXR1cm4gdGhpcy5zZXQoMSwwLDAsMCwwLDEsMCwwLDAsMCwxLDAsMCwwLDAsMSksdGhpc31jbG9uZSgpe3JldHVybihuZXcgZzN0KS5mcm9tQXJyYXkodGhpcy5lbGVtZW50cyl9Y29weSh0KXtjb25zdCBlPXRoaXMuZWxlbWVudHMsbj10LmVsZW1lbnRzO3JldHVybiBlWzBdPW5bMF0sZVsxXT1uWzFdLGVbMl09blsyXSxlWzNdPW5bM10sZVs0XT1uWzRdLGVbNV09bls1XSxlWzZdPW5bNl0sZVs3XT1uWzddLGVbOF09bls4XSxlWzldPW5bOV0sZVsxMF09blsxMF0sZVsxMV09blsxMV0sZVsxMl09blsxMl0sZVsxM109blsxM10sZVsxNF09blsxNF0sZVsxNV09blsxNV0sdGhpc31jb3B5UG9zaXRpb24odCl7Y29uc3QgZT10aGlzLmVsZW1lbnRzLG49dC5lbGVtZW50cztyZXR1cm4gZVsxMl09blsxMl0sZVsxM109blsxM10sZVsxNF09blsxNF0sdGhpc31zZXRGcm9tTWF0cml4Myh0KXtjb25zdCBlPXQuZWxlbWVudHM7cmV0dXJuIHRoaXMuc2V0KGVbMF0sZVszXSxlWzZdLDAsZVsxXSxlWzRdLGVbN10sMCxlWzJdLGVbNV0sZVs4XSwwLDAsMCwwLDEpLHRoaXN9ZXh0cmFjdEJhc2lzKHQsZSxuKXtyZXR1cm4gdC5zZXRGcm9tTWF0cml4Q29sdW1uKHRoaXMsMCksZS5zZXRGcm9tTWF0cml4Q29sdW1uKHRoaXMsMSksbi5zZXRGcm9tTWF0cml4Q29sdW1uKHRoaXMsMiksdGhpc31tYWtlQmFzaXModCxlLG4pe3JldHVybiB0aGlzLnNldCh0LngsZS54LG4ueCwwLHQueSxlLnksbi55LDAsdC56LGUueixuLnosMCwwLDAsMCwxKSx0aGlzfWV4dHJhY3RSb3RhdGlvbih0KXtjb25zdCBlPXRoaXMuZWxlbWVudHMsbj10LmVsZW1lbnRzLGk9MS9fM3Quc2V0RnJvbU1hdHJpeENvbHVtbih0LDApLmxlbmd0aCgpLHI9MS9fM3Quc2V0RnJvbU1hdHJpeENvbHVtbih0LDEpLmxlbmd0aCgpLG89MS9fM3Quc2V0RnJvbU1hdHJpeENvbHVtbih0LDIpLmxlbmd0aCgpO3JldHVybiBlWzBdPW5bMF0qaSxlWzFdPW5bMV0qaSxlWzJdPW5bMl0qaSxlWzNdPTAsZVs0XT1uWzRdKnIsZVs1XT1uWzVdKnIsZVs2XT1uWzZdKnIsZVs3XT0wLGVbOF09bls4XSpvLGVbOV09bls5XSpvLGVbMTBdPW5bMTBdKm8sZVsxMV09MCxlWzEyXT0wLGVbMTNdPTAsZVsxNF09MCxlWzE1XT0xLHRoaXN9bWFrZVJvdGF0aW9uRnJvbUV1bGVyKHQpe3QmJnQuaXNFdWxlcnx8Y29uc29sZS5lcnJvcigiVEhSRUUuTWF0cml4NDogLm1ha2VSb3RhdGlvbkZyb21FdWxlcigpIG5vdyBleHBlY3RzIGEgRXVsZXIgcm90YXRpb24gcmF0aGVyIHRoYW4gYSBWZWN0b3IzIGFuZCBvcmRlci4iKTtjb25zdCBlPXRoaXMuZWxlbWVudHMsbj10LngsaT10Lnkscj10Lnosbz1NYXRoLmNvcyhuKSxhPU1hdGguc2luKG4pLHM9TWF0aC5jb3MoaSksbD1NYXRoLnNpbihpKSxjPU1hdGguY29zKHIpLHU9TWF0aC5zaW4ocik7aWYoIlhZWiI9PT10Lm9yZGVyKXtjb25zdCB0PW8qYyxuPW8qdSxpPWEqYyxyPWEqdTtlWzBdPXMqYyxlWzRdPS1zKnUsZVs4XT1sLGVbMV09bitpKmwsZVs1XT10LXIqbCxlWzldPS1hKnMsZVsyXT1yLXQqbCxlWzZdPWkrbipsLGVbMTBdPW8qc31lbHNlIGlmKCJZWFoiPT09dC5vcmRlcil7Y29uc3QgdD1zKmMsbj1zKnUsaT1sKmMscj1sKnU7ZVswXT10K3IqYSxlWzRdPWkqYS1uLGVbOF09bypsLGVbMV09byp1LGVbNV09bypjLGVbOV09LWEsZVsyXT1uKmEtaSxlWzZdPXIrdCphLGVbMTBdPW8qc31lbHNlIGlmKCJaWFkiPT09dC5vcmRlcil7Y29uc3QgdD1zKmMsbj1zKnUsaT1sKmMscj1sKnU7ZVswXT10LXIqYSxlWzRdPS1vKnUsZVs4XT1pK24qYSxlWzFdPW4raSphLGVbNV09bypjLGVbOV09ci10KmEsZVsyXT0tbypsLGVbNl09YSxlWzEwXT1vKnN9ZWxzZSBpZigiWllYIj09PXQub3JkZXIpe2NvbnN0IHQ9bypjLG49byp1LGk9YSpjLHI9YSp1O2VbMF09cypjLGVbNF09aSpsLW4sZVs4XT10KmwrcixlWzFdPXMqdSxlWzVdPXIqbCt0LGVbOV09bipsLWksZVsyXT0tbCxlWzZdPWEqcyxlWzEwXT1vKnN9ZWxzZSBpZigiWVpYIj09PXQub3JkZXIpe2NvbnN0IHQ9bypzLG49bypsLGk9YSpzLHI9YSpsO2VbMF09cypjLGVbNF09ci10KnUsZVs4XT1pKnUrbixlWzFdPXUsZVs1XT1vKmMsZVs5XT0tYSpjLGVbMl09LWwqYyxlWzZdPW4qdStpLGVbMTBdPXQtcip1fWVsc2UgaWYoIlhaWSI9PT10Lm9yZGVyKXtjb25zdCB0PW8qcyxuPW8qbCxpPWEqcyxyPWEqbDtlWzBdPXMqYyxlWzRdPS11LGVbOF09bCpjLGVbMV09dCp1K3IsZVs1XT1vKmMsZVs5XT1uKnUtaSxlWzJdPWkqdS1uLGVbNl09YSpjLGVbMTBdPXIqdSt0fXJldHVybiBlWzNdPTAsZVs3XT0wLGVbMTFdPTAsZVsxMl09MCxlWzEzXT0wLGVbMTRdPTAsZVsxNV09MSx0aGlzfW1ha2VSb3RhdGlvbkZyb21RdWF0ZXJuaW9uKHQpe3JldHVybiB0aGlzLmNvbXBvc2UodjN0LHQsYjN0KX1sb29rQXQodCxlLG4pe2NvbnN0IGk9dGhpcy5lbGVtZW50cztyZXR1cm4gUzN0LnN1YlZlY3RvcnModCxlKSwwPT09UzN0Lmxlbmd0aFNxKCkmJihTM3Quej0xKSxTM3Qubm9ybWFsaXplKCkseDN0LmNyb3NzVmVjdG9ycyhuLFMzdCksMD09PXgzdC5sZW5ndGhTcSgpJiYoMT09PU1hdGguYWJzKG4ueik/UzN0LngrPTFlLTQ6UzN0LnorPTFlLTQsUzN0Lm5vcm1hbGl6ZSgpLHgzdC5jcm9zc1ZlY3RvcnMobixTM3QpKSx4M3Qubm9ybWFsaXplKCksdzN0LmNyb3NzVmVjdG9ycyhTM3QseDN0KSxpWzBdPXgzdC54LGlbNF09dzN0LngsaVs4XT1TM3QueCxpWzFdPXgzdC55LGlbNV09dzN0LnksaVs5XT1TM3QueSxpWzJdPXgzdC56LGlbNl09dzN0LnosaVsxMF09UzN0LnosdGhpc31tdWx0aXBseSh0LGUpe3JldHVybiB2b2lkIDAhPT1lPyhjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDQ6IC5tdWx0aXBseSgpIG5vdyBvbmx5IGFjY2VwdHMgb25lIGFyZ3VtZW50LiBVc2UgLm11bHRpcGx5TWF0cmljZXMoIGEsIGIgKSBpbnN0ZWFkLiIpLHRoaXMubXVsdGlwbHlNYXRyaWNlcyh0LGUpKTp0aGlzLm11bHRpcGx5TWF0cmljZXModGhpcyx0KX1wcmVtdWx0aXBseSh0KXtyZXR1cm4gdGhpcy5tdWx0aXBseU1hdHJpY2VzKHQsdGhpcyl9bXVsdGlwbHlNYXRyaWNlcyh0LGUpe2NvbnN0IG49dC5lbGVtZW50cyxpPWUuZWxlbWVudHMscj10aGlzLmVsZW1lbnRzLG89blswXSxhPW5bNF0scz1uWzhdLGw9blsxMl0sYz1uWzFdLHU9bls1XSxoPW5bOV0sZD1uWzEzXSxwPW5bMl0sZj1uWzZdLG09blsxMF0sZz1uWzE0XSxfPW5bM10seT1uWzddLHY9blsxMV0sYj1uWzE1XSx4PWlbMF0sdz1pWzRdLFM9aVs4XSxNPWlbMTJdLEU9aVsxXSxUPWlbNV0sQz1pWzldLEE9aVsxM10saz1pWzJdLEw9aVs2XSxQPWlbMTBdLE49aVsxNF0sST1pWzNdLFI9aVs3XSxPPWlbMTFdLHo9aVsxNV07cmV0dXJuIHJbMF09byp4K2EqRStzKmsrbCpJLHJbNF09byp3K2EqVCtzKkwrbCpSLHJbOF09bypTK2EqQytzKlArbCpPLHJbMTJdPW8qTSthKkErcypOK2wqeixyWzFdPWMqeCt1KkUraCprK2QqSSxyWzVdPWMqdyt1KlQraCpMK2QqUixyWzldPWMqUyt1KkMraCpQK2QqTyxyWzEzXT1jKk0rdSpBK2gqTitkKnosclsyXT1wKngrZipFK20qaytnKkkscls2XT1wKncrZipUK20qTCtnKlIsclsxMF09cCpTK2YqQyttKlArZypPLHJbMTRdPXAqTStmKkErbSpOK2cqeixyWzNdPV8qeCt5KkUrdiprK2IqSSxyWzddPV8qdyt5KlQrdipMK2IqUixyWzExXT1fKlMreSpDK3YqUCtiKk8sclsxNV09XypNK3kqQSt2Kk4rYip6LHRoaXN9bXVsdGlwbHlTY2FsYXIodCl7Y29uc3QgZT10aGlzLmVsZW1lbnRzO3JldHVybiBlWzBdKj10LGVbNF0qPXQsZVs4XSo9dCxlWzEyXSo9dCxlWzFdKj10LGVbNV0qPXQsZVs5XSo9dCxlWzEzXSo9dCxlWzJdKj10LGVbNl0qPXQsZVsxMF0qPXQsZVsxNF0qPXQsZVszXSo9dCxlWzddKj10LGVbMTFdKj10LGVbMTVdKj10LHRoaXN9ZGV0ZXJtaW5hbnQoKXtjb25zdCB0PXRoaXMuZWxlbWVudHMsZT10WzBdLG49dFs0XSxpPXRbOF0scj10WzEyXSxvPXRbMV0sYT10WzVdLHM9dFs5XSxsPXRbMTNdLGM9dFsyXSx1PXRbNl0saD10WzEwXSxkPXRbMTRdO3JldHVybiB0WzNdKigrcipzKnUtaSpsKnUtciphKmgrbipsKmgraSphKmQtbipzKmQpK3RbN10qKCtlKnMqZC1lKmwqaCtyKm8qaC1pKm8qZCtpKmwqYy1yKnMqYykrdFsxMV0qKCtlKmwqdS1lKmEqZC1yKm8qdStuKm8qZCtyKmEqYy1uKmwqYykrdFsxNV0qKC1pKmEqYy1lKnMqdStlKmEqaCtpKm8qdS1uKm8qaCtuKnMqYyl9dHJhbnNwb3NlKCl7Y29uc3QgdD10aGlzLmVsZW1lbnRzO2xldCBlO3JldHVybiBlPXRbMV0sdFsxXT10WzRdLHRbNF09ZSxlPXRbMl0sdFsyXT10WzhdLHRbOF09ZSxlPXRbNl0sdFs2XT10WzldLHRbOV09ZSxlPXRbM10sdFszXT10WzEyXSx0WzEyXT1lLGU9dFs3XSx0WzddPXRbMTNdLHRbMTNdPWUsZT10WzExXSx0WzExXT10WzE0XSx0WzE0XT1lLHRoaXN9c2V0UG9zaXRpb24odCxlLG4pe2NvbnN0IGk9dGhpcy5lbGVtZW50cztyZXR1cm4gdC5pc1ZlY3RvcjM/KGlbMTJdPXQueCxpWzEzXT10LnksaVsxNF09dC56KTooaVsxMl09dCxpWzEzXT1lLGlbMTRdPW4pLHRoaXN9aW52ZXJ0KCl7Y29uc3QgdD10aGlzLmVsZW1lbnRzLGU9dFswXSxuPXRbMV0saT10WzJdLHI9dFszXSxvPXRbNF0sYT10WzVdLHM9dFs2XSxsPXRbN10sYz10WzhdLHU9dFs5XSxoPXRbMTBdLGQ9dFsxMV0scD10WzEyXSxmPXRbMTNdLG09dFsxNF0sZz10WzE1XSxfPXUqbSpsLWYqaCpsK2YqcypkLWEqbSpkLXUqcypnK2EqaCpnLHk9cCpoKmwtYyptKmwtcCpzKmQrbyptKmQrYypzKmctbypoKmcsdj1jKmYqbC1wKnUqbCtwKmEqZC1vKmYqZC1jKmEqZytvKnUqZyxiPXAqdSpzLWMqZipzLXAqYSpoK28qZipoK2MqYSptLW8qdSptLHg9ZSpfK24qeStpKnYrcipiO2lmKDA9PT14KXJldHVybiB0aGlzLnNldCgwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwKTtjb25zdCB3PTEveDtyZXR1cm4gdFswXT1fKncsdFsxXT0oZipoKnItdSptKnItZippKmQrbiptKmQrdSppKmctbipoKmcpKncsdFsyXT0oYSptKnItZipzKnIrZippKmwtbiptKmwtYSppKmcrbipzKmcpKncsdFszXT0odSpzKnItYSpoKnItdSppKmwrbipoKmwrYSppKmQtbipzKmQpKncsdFs0XT15KncsdFs1XT0oYyptKnItcCpoKnIrcCppKmQtZSptKmQtYyppKmcrZSpoKmcpKncsdFs2XT0ocCpzKnItbyptKnItcCppKmwrZSptKmwrbyppKmctZSpzKmcpKncsdFs3XT0obypoKnItYypzKnIrYyppKmwtZSpoKmwtbyppKmQrZSpzKmQpKncsdFs4XT12KncsdFs5XT0ocCp1KnItYypmKnItcCpuKmQrZSpmKmQrYypuKmctZSp1KmcpKncsdFsxMF09KG8qZipyLXAqYSpyK3AqbipsLWUqZipsLW8qbipnK2UqYSpnKSp3LHRbMTFdPShjKmEqci1vKnUqci1jKm4qbCtlKnUqbCtvKm4qZC1lKmEqZCkqdyx0WzEyXT1iKncsdFsxM109KGMqZippLXAqdSppK3AqbipoLWUqZipoLWMqbiptK2UqdSptKSp3LHRbMTRdPShwKmEqaS1vKmYqaS1wKm4qcytlKmYqcytvKm4qbS1lKmEqbSkqdyx0WzE1XT0obyp1KmktYyphKmkrYypuKnMtZSp1KnMtbypuKmgrZSphKmgpKncsdGhpc31zY2FsZSh0KXtjb25zdCBlPXRoaXMuZWxlbWVudHMsbj10LngsaT10Lnkscj10Lno7cmV0dXJuIGVbMF0qPW4sZVs0XSo9aSxlWzhdKj1yLGVbMV0qPW4sZVs1XSo9aSxlWzldKj1yLGVbMl0qPW4sZVs2XSo9aSxlWzEwXSo9cixlWzNdKj1uLGVbN10qPWksZVsxMV0qPXIsdGhpc31nZXRNYXhTY2FsZU9uQXhpcygpe2NvbnN0IHQ9dGhpcy5lbGVtZW50cztyZXR1cm4gTWF0aC5zcXJ0KE1hdGgubWF4KHRbMF0qdFswXSt0WzFdKnRbMV0rdFsyXSp0WzJdLHRbNF0qdFs0XSt0WzVdKnRbNV0rdFs2XSp0WzZdLHRbOF0qdFs4XSt0WzldKnRbOV0rdFsxMF0qdFsxMF0pKX1tYWtlVHJhbnNsYXRpb24odCxlLG4pe3JldHVybiB0aGlzLnNldCgxLDAsMCx0LDAsMSwwLGUsMCwwLDEsbiwwLDAsMCwxKSx0aGlzfW1ha2VSb3RhdGlvblgodCl7Y29uc3QgZT1NYXRoLmNvcyh0KSxuPU1hdGguc2luKHQpO3JldHVybiB0aGlzLnNldCgxLDAsMCwwLDAsZSwtbiwwLDAsbixlLDAsMCwwLDAsMSksdGhpc31tYWtlUm90YXRpb25ZKHQpe2NvbnN0IGU9TWF0aC5jb3ModCksbj1NYXRoLnNpbih0KTtyZXR1cm4gdGhpcy5zZXQoZSwwLG4sMCwwLDEsMCwwLC1uLDAsZSwwLDAsMCwwLDEpLHRoaXN9bWFrZVJvdGF0aW9uWih0KXtjb25zdCBlPU1hdGguY29zKHQpLG49TWF0aC5zaW4odCk7cmV0dXJuIHRoaXMuc2V0KGUsLW4sMCwwLG4sZSwwLDAsMCwwLDEsMCwwLDAsMCwxKSx0aGlzfW1ha2VSb3RhdGlvbkF4aXModCxlKXtjb25zdCBuPU1hdGguY29zKGUpLGk9TWF0aC5zaW4oZSkscj0xLW4sbz10LngsYT10Lnkscz10LnosbD1yKm8sYz1yKmE7cmV0dXJuIHRoaXMuc2V0KGwqbytuLGwqYS1pKnMsbCpzK2kqYSwwLGwqYStpKnMsYyphK24sYypzLWkqbywwLGwqcy1pKmEsYypzK2kqbyxyKnMqcytuLDAsMCwwLDAsMSksdGhpc31tYWtlU2NhbGUodCxlLG4pe3JldHVybiB0aGlzLnNldCh0LDAsMCwwLDAsZSwwLDAsMCwwLG4sMCwwLDAsMCwxKSx0aGlzfW1ha2VTaGVhcih0LGUsbixpLHIsbyl7cmV0dXJuIHRoaXMuc2V0KDEsbixyLDAsdCwxLG8sMCxlLGksMSwwLDAsMCwwLDEpLHRoaXN9Y29tcG9zZSh0LGUsbil7Y29uc3QgaT10aGlzLmVsZW1lbnRzLHI9ZS5feCxvPWUuX3ksYT1lLl96LHM9ZS5fdyxsPXIrcixjPW8rbyx1PWErYSxoPXIqbCxkPXIqYyxwPXIqdSxmPW8qYyxtPW8qdSxnPWEqdSxfPXMqbCx5PXMqYyx2PXMqdSxiPW4ueCx4PW4ueSx3PW4uejtyZXR1cm4gaVswXT0oMS0oZitnKSkqYixpWzFdPShkK3YpKmIsaVsyXT0ocC15KSpiLGlbM109MCxpWzRdPShkLXYpKngsaVs1XT0oMS0oaCtnKSkqeCxpWzZdPShtK18pKngsaVs3XT0wLGlbOF09KHAreSkqdyxpWzldPShtLV8pKncsaVsxMF09KDEtKGgrZikpKncsaVsxMV09MCxpWzEyXT10LngsaVsxM109dC55LGlbMTRdPXQueixpWzE1XT0xLHRoaXN9ZGVjb21wb3NlKHQsZSxuKXtjb25zdCBpPXRoaXMuZWxlbWVudHM7bGV0IHI9XzN0LnNldChpWzBdLGlbMV0saVsyXSkubGVuZ3RoKCk7Y29uc3Qgbz1fM3Quc2V0KGlbNF0saVs1XSxpWzZdKS5sZW5ndGgoKSxhPV8zdC5zZXQoaVs4XSxpWzldLGlbMTBdKS5sZW5ndGgoKTt0aGlzLmRldGVybWluYW50KCk8MCYmKHI9LXIpLHQueD1pWzEyXSx0Lnk9aVsxM10sdC56PWlbMTRdLHkzdC5jb3B5KHRoaXMpO2NvbnN0IHM9MS9yLGw9MS9vLGM9MS9hO3JldHVybiB5M3QuZWxlbWVudHNbMF0qPXMseTN0LmVsZW1lbnRzWzFdKj1zLHkzdC5lbGVtZW50c1syXSo9cyx5M3QuZWxlbWVudHNbNF0qPWwseTN0LmVsZW1lbnRzWzVdKj1sLHkzdC5lbGVtZW50c1s2XSo9bCx5M3QuZWxlbWVudHNbOF0qPWMseTN0LmVsZW1lbnRzWzldKj1jLHkzdC5lbGVtZW50c1sxMF0qPWMsZS5zZXRGcm9tUm90YXRpb25NYXRyaXgoeTN0KSxuLng9cixuLnk9byxuLno9YSx0aGlzfW1ha2VQZXJzcGVjdGl2ZSh0LGUsbixpLHIsbyl7dm9pZCAwPT09byYmY29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXg0OiAubWFrZVBlcnNwZWN0aXZlKCkgaGFzIGJlZW4gcmVkZWZpbmVkIGFuZCBoYXMgYSBuZXcgc2lnbmF0dXJlLiBQbGVhc2UgY2hlY2sgdGhlIGRvY3MuIik7Y29uc3QgYT10aGlzLmVsZW1lbnRzLHM9MipyLyhuLWkpLGw9KGUrdCkvKGUtdCksYz0obitpKS8obi1pKSx1PS0obytyKS8oby1yKSxoPS0yKm8qci8oby1yKTtyZXR1cm4gYVswXT0yKnIvKGUtdCksYVs0XT0wLGFbOF09bCxhWzEyXT0wLGFbMV09MCxhWzVdPXMsYVs5XT1jLGFbMTNdPTAsYVsyXT0wLGFbNl09MCxhWzEwXT11LGFbMTRdPWgsYVszXT0wLGFbN109MCxhWzExXT0tMSxhWzE1XT0wLHRoaXN9bWFrZU9ydGhvZ3JhcGhpYyh0LGUsbixpLHIsbyl7Y29uc3QgYT10aGlzLmVsZW1lbnRzLHM9MS8oZS10KSxsPTEvKG4taSksYz0xLyhvLXIpLHU9KGUrdCkqcyxoPShuK2kpKmwsZD0obytyKSpjO3JldHVybiBhWzBdPTIqcyxhWzRdPTAsYVs4XT0wLGFbMTJdPS11LGFbMV09MCxhWzVdPTIqbCxhWzldPTAsYVsxM109LWgsYVsyXT0wLGFbNl09MCxhWzEwXT0tMipjLGFbMTRdPS1kLGFbM109MCxhWzddPTAsYVsxMV09MCxhWzE1XT0xLHRoaXN9ZXF1YWxzKHQpe2NvbnN0IGU9dGhpcy5lbGVtZW50cyxuPXQuZWxlbWVudHM7Zm9yKGxldCB0PTA7dDwxNjt0KyspaWYoZVt0XSE9PW5bdF0pcmV0dXJuITE7cmV0dXJuITB9ZnJvbUFycmF5KHQsZT0wKXtmb3IobGV0IG49MDtuPDE2O24rKyl0aGlzLmVsZW1lbnRzW25dPXRbbitlXTtyZXR1cm4gdGhpc310b0FycmF5KHQ9W10sZT0wKXtjb25zdCBuPXRoaXMuZWxlbWVudHM7cmV0dXJuIHRbZV09blswXSx0W2UrMV09blsxXSx0W2UrMl09blsyXSx0W2UrM109blszXSx0W2UrNF09bls0XSx0W2UrNV09bls1XSx0W2UrNl09bls2XSx0W2UrN109bls3XSx0W2UrOF09bls4XSx0W2UrOV09bls5XSx0W2UrMTBdPW5bMTBdLHRbZSsxMV09blsxMV0sdFtlKzEyXT1uWzEyXSx0W2UrMTNdPW5bMTNdLHRbZSsxNF09blsxNF0sdFtlKzE1XT1uWzE1XSx0fX1nM3QucHJvdG90eXBlLmlzTWF0cml4ND0hMDtjb25zdCBfM3Q9bmV3IEg1dCx5M3Q9bmV3IGczdCx2M3Q9bmV3IEg1dCgwLDAsMCksYjN0PW5ldyBINXQoMSwxLDEpLHgzdD1uZXcgSDV0LHczdD1uZXcgSDV0LFMzdD1uZXcgSDV0LE0zdD1uZXcgZzN0LEUzdD1uZXcgQjV0O2NsYXNzIFQzdHtjb25zdHJ1Y3Rvcih0PTAsZT0wLG49MCxpPVQzdC5EZWZhdWx0T3JkZXIpe3RoaXMuX3g9dCx0aGlzLl95PWUsdGhpcy5fej1uLHRoaXMuX29yZGVyPWl9Z2V0IHgoKXtyZXR1cm4gdGhpcy5feH1zZXQgeCh0KXt0aGlzLl94PXQsdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpfWdldCB5KCl7cmV0dXJuIHRoaXMuX3l9c2V0IHkodCl7dGhpcy5feT10LHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKX1nZXQgeigpe3JldHVybiB0aGlzLl96fXNldCB6KHQpe3RoaXMuX3o9dCx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCl9Z2V0IG9yZGVyKCl7cmV0dXJuIHRoaXMuX29yZGVyfXNldCBvcmRlcih0KXt0aGlzLl9vcmRlcj10LHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKX1zZXQodCxlLG4saT10aGlzLl9vcmRlcil7cmV0dXJuIHRoaXMuX3g9dCx0aGlzLl95PWUsdGhpcy5fej1uLHRoaXMuX29yZGVyPWksdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpLHRoaXN9Y2xvbmUoKXtyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IodGhpcy5feCx0aGlzLl95LHRoaXMuX3osdGhpcy5fb3JkZXIpfWNvcHkodCl7cmV0dXJuIHRoaXMuX3g9dC5feCx0aGlzLl95PXQuX3ksdGhpcy5fej10Ll96LHRoaXMuX29yZGVyPXQuX29yZGVyLHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKSx0aGlzfXNldEZyb21Sb3RhdGlvbk1hdHJpeCh0LGU9dGhpcy5fb3JkZXIsbj0hMCl7Y29uc3QgaT10LmVsZW1lbnRzLHI9aVswXSxvPWlbNF0sYT1pWzhdLHM9aVsxXSxsPWlbNV0sYz1pWzldLHU9aVsyXSxoPWlbNl0sZD1pWzEwXTtzd2l0Y2goZSl7Y2FzZSJYWVoiOnRoaXMuX3k9TWF0aC5hc2luKHM1dChhLC0xLDEpKSxNYXRoLmFicyhhKTwuOTk5OTk5OT8odGhpcy5feD1NYXRoLmF0YW4yKC1jLGQpLHRoaXMuX3o9TWF0aC5hdGFuMigtbyxyKSk6KHRoaXMuX3g9TWF0aC5hdGFuMihoLGwpLHRoaXMuX3o9MCk7YnJlYWs7Y2FzZSJZWFoiOnRoaXMuX3g9TWF0aC5hc2luKC1zNXQoYywtMSwxKSksTWF0aC5hYnMoYyk8Ljk5OTk5OTk/KHRoaXMuX3k9TWF0aC5hdGFuMihhLGQpLHRoaXMuX3o9TWF0aC5hdGFuMihzLGwpKToodGhpcy5feT1NYXRoLmF0YW4yKC11LHIpLHRoaXMuX3o9MCk7YnJlYWs7Y2FzZSJaWFkiOnRoaXMuX3g9TWF0aC5hc2luKHM1dChoLC0xLDEpKSxNYXRoLmFicyhoKTwuOTk5OTk5OT8odGhpcy5feT1NYXRoLmF0YW4yKC11LGQpLHRoaXMuX3o9TWF0aC5hdGFuMigtbyxsKSk6KHRoaXMuX3k9MCx0aGlzLl96PU1hdGguYXRhbjIocyxyKSk7YnJlYWs7Y2FzZSJaWVgiOnRoaXMuX3k9TWF0aC5hc2luKC1zNXQodSwtMSwxKSksTWF0aC5hYnModSk8Ljk5OTk5OTk/KHRoaXMuX3g9TWF0aC5hdGFuMihoLGQpLHRoaXMuX3o9TWF0aC5hdGFuMihzLHIpKToodGhpcy5feD0wLHRoaXMuX3o9TWF0aC5hdGFuMigtbyxsKSk7YnJlYWs7Y2FzZSJZWlgiOnRoaXMuX3o9TWF0aC5hc2luKHM1dChzLC0xLDEpKSxNYXRoLmFicyhzKTwuOTk5OTk5OT8odGhpcy5feD1NYXRoLmF0YW4yKC1jLGwpLHRoaXMuX3k9TWF0aC5hdGFuMigtdSxyKSk6KHRoaXMuX3g9MCx0aGlzLl95PU1hdGguYXRhbjIoYSxkKSk7YnJlYWs7Y2FzZSJYWlkiOnRoaXMuX3o9TWF0aC5hc2luKC1zNXQobywtMSwxKSksTWF0aC5hYnMobyk8Ljk5OTk5OTk/KHRoaXMuX3g9TWF0aC5hdGFuMihoLGwpLHRoaXMuX3k9TWF0aC5hdGFuMihhLHIpKToodGhpcy5feD1NYXRoLmF0YW4yKC1jLGQpLHRoaXMuX3k9MCk7YnJlYWs7ZGVmYXVsdDpjb25zb2xlLndhcm4oIlRIUkVFLkV1bGVyOiAuc2V0RnJvbVJvdGF0aW9uTWF0cml4KCkgZW5jb3VudGVyZWQgYW4gdW5rbm93biBvcmRlcjogIitlKX1yZXR1cm4gdGhpcy5fb3JkZXI9ZSwhMD09PW4mJnRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKSx0aGlzfXNldEZyb21RdWF0ZXJuaW9uKHQsZSxuKXtyZXR1cm4gTTN0Lm1ha2VSb3RhdGlvbkZyb21RdWF0ZXJuaW9uKHQpLHRoaXMuc2V0RnJvbVJvdGF0aW9uTWF0cml4KE0zdCxlLG4pfXNldEZyb21WZWN0b3IzKHQsZT10aGlzLl9vcmRlcil7cmV0dXJuIHRoaXMuc2V0KHQueCx0LnksdC56LGUpfXJlb3JkZXIodCl7cmV0dXJuIEUzdC5zZXRGcm9tRXVsZXIodGhpcyksdGhpcy5zZXRGcm9tUXVhdGVybmlvbihFM3QsdCl9ZXF1YWxzKHQpe3JldHVybiB0Ll94PT09dGhpcy5feCYmdC5feT09PXRoaXMuX3kmJnQuX3o9PT10aGlzLl96JiZ0Ll9vcmRlcj09PXRoaXMuX29yZGVyfWZyb21BcnJheSh0KXtyZXR1cm4gdGhpcy5feD10WzBdLHRoaXMuX3k9dFsxXSx0aGlzLl96PXRbMl0sdm9pZCAwIT09dFszXSYmKHRoaXMuX29yZGVyPXRbM10pLHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKSx0aGlzfXRvQXJyYXkodD1bXSxlPTApe3JldHVybiB0W2VdPXRoaXMuX3gsdFtlKzFdPXRoaXMuX3ksdFtlKzJdPXRoaXMuX3osdFtlKzNdPXRoaXMuX29yZGVyLHR9dG9WZWN0b3IzKHQpe3JldHVybiB0P3Quc2V0KHRoaXMuX3gsdGhpcy5feSx0aGlzLl96KTpuZXcgSDV0KHRoaXMuX3gsdGhpcy5feSx0aGlzLl96KX1fb25DaGFuZ2UodCl7cmV0dXJuIHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2s9dCx0aGlzfV9vbkNoYW5nZUNhbGxiYWNrKCl7fX1UM3QucHJvdG90eXBlLmlzRXVsZXI9ITAsVDN0LkRlZmF1bHRPcmRlcj0iWFlaIixUM3QuUm90YXRpb25PcmRlcnM9WyJYWVoiLCJZWlgiLCJaWFkiLCJYWlkiLCJZWFoiLCJaWVgiXTtjbGFzcyBDM3R7Y29uc3RydWN0b3IoKXt0aGlzLm1hc2s9MX1zZXQodCl7dGhpcy5tYXNrPTE8PHR8MH1lbmFibGUodCl7dGhpcy5tYXNrfD0xPDx0fDB9ZW5hYmxlQWxsKCl7dGhpcy5tYXNrPS0xfXRvZ2dsZSh0KXt0aGlzLm1hc2tePTE8PHR8MH1kaXNhYmxlKHQpe3RoaXMubWFzayY9figxPDx0fDApfWRpc2FibGVBbGwoKXt0aGlzLm1hc2s9MH10ZXN0KHQpe3JldHVybiAwIT0odGhpcy5tYXNrJnQubWFzayl9fWxldCBBM3Q9MDtjb25zdCBrM3Q9bmV3IEg1dCxMM3Q9bmV3IEI1dCxQM3Q9bmV3IGczdCxOM3Q9bmV3IEg1dCxJM3Q9bmV3IEg1dCxSM3Q9bmV3IEg1dCxPM3Q9bmV3IEI1dCx6M3Q9bmV3IEg1dCgxLDAsMCksRDN0PW5ldyBINXQoMCwxLDApLEIzdD1uZXcgSDV0KDAsMCwxKSxIM3Q9e3R5cGU6ImFkZGVkIn0sRjN0PXt0eXBlOiJyZW1vdmVkIn07Y2xhc3MgVjN0IGV4dGVuZHMgZTV0e2NvbnN0cnVjdG9yKCl7c3VwZXIoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiaWQiLHt2YWx1ZTpBM3QrK30pLHRoaXMudXVpZD1hNXQoKSx0aGlzLm5hbWU9IiIsdGhpcy50eXBlPSJPYmplY3QzRCIsdGhpcy5wYXJlbnQ9bnVsbCx0aGlzLmNoaWxkcmVuPVtdLHRoaXMudXA9VjN0LkRlZmF1bHRVcC5jbG9uZSgpO2NvbnN0IHQ9bmV3IEg1dCxlPW5ldyBUM3Qsbj1uZXcgQjV0LGk9bmV3IEg1dCgxLDEsMSk7ZS5fb25DaGFuZ2UoKGZ1bmN0aW9uIHIoKXtuLnNldEZyb21FdWxlcihlLCExKX0pKSxuLl9vbkNoYW5nZSgoZnVuY3Rpb24gbygpe2Uuc2V0RnJvbVF1YXRlcm5pb24obix2b2lkIDAsITEpfSkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRoaXMse3Bvc2l0aW9uOntjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCx2YWx1ZTp0fSxyb3RhdGlvbjp7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsdmFsdWU6ZX0scXVhdGVybmlvbjp7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsdmFsdWU6bn0sc2NhbGU6e2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLHZhbHVlOml9LG1vZGVsVmlld01hdHJpeDp7dmFsdWU6bmV3IGczdH0sbm9ybWFsTWF0cml4Ont2YWx1ZTpuZXcgQTV0fX0pLHRoaXMubWF0cml4PW5ldyBnM3QsdGhpcy5tYXRyaXhXb3JsZD1uZXcgZzN0LHRoaXMubWF0cml4QXV0b1VwZGF0ZT1WM3QuRGVmYXVsdE1hdHJpeEF1dG9VcGRhdGUsdGhpcy5tYXRyaXhXb3JsZE5lZWRzVXBkYXRlPSExLHRoaXMubGF5ZXJzPW5ldyBDM3QsdGhpcy52aXNpYmxlPSEwLHRoaXMuY2FzdFNoYWRvdz0hMSx0aGlzLnJlY2VpdmVTaGFkb3c9ITEsdGhpcy5mcnVzdHVtQ3VsbGVkPSEwLHRoaXMucmVuZGVyT3JkZXI9MCx0aGlzLmFuaW1hdGlvbnM9W10sdGhpcy51c2VyRGF0YT17fX1vbkJlZm9yZVJlbmRlcigpe31vbkFmdGVyUmVuZGVyKCl7fWFwcGx5TWF0cml4NCh0KXt0aGlzLm1hdHJpeEF1dG9VcGRhdGUmJnRoaXMudXBkYXRlTWF0cml4KCksdGhpcy5tYXRyaXgucHJlbXVsdGlwbHkodCksdGhpcy5tYXRyaXguZGVjb21wb3NlKHRoaXMucG9zaXRpb24sdGhpcy5xdWF0ZXJuaW9uLHRoaXMuc2NhbGUpfWFwcGx5UXVhdGVybmlvbih0KXtyZXR1cm4gdGhpcy5xdWF0ZXJuaW9uLnByZW11bHRpcGx5KHQpLHRoaXN9c2V0Um90YXRpb25Gcm9tQXhpc0FuZ2xlKHQsZSl7dGhpcy5xdWF0ZXJuaW9uLnNldEZyb21BeGlzQW5nbGUodCxlKX1zZXRSb3RhdGlvbkZyb21FdWxlcih0KXt0aGlzLnF1YXRlcm5pb24uc2V0RnJvbUV1bGVyKHQsITApfXNldFJvdGF0aW9uRnJvbU1hdHJpeCh0KXt0aGlzLnF1YXRlcm5pb24uc2V0RnJvbVJvdGF0aW9uTWF0cml4KHQpfXNldFJvdGF0aW9uRnJvbVF1YXRlcm5pb24odCl7dGhpcy5xdWF0ZXJuaW9uLmNvcHkodCl9cm90YXRlT25BeGlzKHQsZSl7cmV0dXJuIEwzdC5zZXRGcm9tQXhpc0FuZ2xlKHQsZSksdGhpcy5xdWF0ZXJuaW9uLm11bHRpcGx5KEwzdCksdGhpc31yb3RhdGVPbldvcmxkQXhpcyh0LGUpe3JldHVybiBMM3Quc2V0RnJvbUF4aXNBbmdsZSh0LGUpLHRoaXMucXVhdGVybmlvbi5wcmVtdWx0aXBseShMM3QpLHRoaXN9cm90YXRlWCh0KXtyZXR1cm4gdGhpcy5yb3RhdGVPbkF4aXMoejN0LHQpfXJvdGF0ZVkodCl7cmV0dXJuIHRoaXMucm90YXRlT25BeGlzKEQzdCx0KX1yb3RhdGVaKHQpe3JldHVybiB0aGlzLnJvdGF0ZU9uQXhpcyhCM3QsdCl9dHJhbnNsYXRlT25BeGlzKHQsZSl7cmV0dXJuIGszdC5jb3B5KHQpLmFwcGx5UXVhdGVybmlvbih0aGlzLnF1YXRlcm5pb24pLHRoaXMucG9zaXRpb24uYWRkKGszdC5tdWx0aXBseVNjYWxhcihlKSksdGhpc310cmFuc2xhdGVYKHQpe3JldHVybiB0aGlzLnRyYW5zbGF0ZU9uQXhpcyh6M3QsdCl9dHJhbnNsYXRlWSh0KXtyZXR1cm4gdGhpcy50cmFuc2xhdGVPbkF4aXMoRDN0LHQpfXRyYW5zbGF0ZVoodCl7cmV0dXJuIHRoaXMudHJhbnNsYXRlT25BeGlzKEIzdCx0KX1sb2NhbFRvV29ybGQodCl7cmV0dXJuIHQuYXBwbHlNYXRyaXg0KHRoaXMubWF0cml4V29ybGQpfXdvcmxkVG9Mb2NhbCh0KXtyZXR1cm4gdC5hcHBseU1hdHJpeDQoUDN0LmNvcHkodGhpcy5tYXRyaXhXb3JsZCkuaW52ZXJ0KCkpfWxvb2tBdCh0LGUsbil7dC5pc1ZlY3RvcjM/TjN0LmNvcHkodCk6TjN0LnNldCh0LGUsbik7Y29uc3QgaT10aGlzLnBhcmVudDt0aGlzLnVwZGF0ZVdvcmxkTWF0cml4KCEwLCExKSxJM3Quc2V0RnJvbU1hdHJpeFBvc2l0aW9uKHRoaXMubWF0cml4V29ybGQpLHRoaXMuaXNDYW1lcmF8fHRoaXMuaXNMaWdodD9QM3QubG9va0F0KEkzdCxOM3QsdGhpcy51cCk6UDN0Lmxvb2tBdChOM3QsSTN0LHRoaXMudXApLHRoaXMucXVhdGVybmlvbi5zZXRGcm9tUm90YXRpb25NYXRyaXgoUDN0KSxpJiYoUDN0LmV4dHJhY3RSb3RhdGlvbihpLm1hdHJpeFdvcmxkKSxMM3Quc2V0RnJvbVJvdGF0aW9uTWF0cml4KFAzdCksdGhpcy5xdWF0ZXJuaW9uLnByZW11bHRpcGx5KEwzdC5pbnZlcnQoKSkpfWFkZCh0KXtpZihhcmd1bWVudHMubGVuZ3RoPjEpe2ZvcihsZXQgdD0wO3Q8YXJndW1lbnRzLmxlbmd0aDt0KyspdGhpcy5hZGQoYXJndW1lbnRzW3RdKTtyZXR1cm4gdGhpc31yZXR1cm4gdD09PXRoaXM/KGNvbnNvbGUuZXJyb3IoIlRIUkVFLk9iamVjdDNELmFkZDogb2JqZWN0IGNhbid0IGJlIGFkZGVkIGFzIGEgY2hpbGQgb2YgaXRzZWxmLiIsdCksdGhpcyk6KHQmJnQuaXNPYmplY3QzRD8obnVsbCE9PXQucGFyZW50JiZ0LnBhcmVudC5yZW1vdmUodCksdC5wYXJlbnQ9dGhpcyx0aGlzLmNoaWxkcmVuLnB1c2godCksdC5kaXNwYXRjaEV2ZW50KEgzdCkpOmNvbnNvbGUuZXJyb3IoIlRIUkVFLk9iamVjdDNELmFkZDogb2JqZWN0IG5vdCBhbiBpbnN0YW5jZSBvZiBUSFJFRS5PYmplY3QzRC4iLHQpLHRoaXMpfXJlbW92ZSh0KXtpZihhcmd1bWVudHMubGVuZ3RoPjEpe2ZvcihsZXQgdD0wO3Q8YXJndW1lbnRzLmxlbmd0aDt0KyspdGhpcy5yZW1vdmUoYXJndW1lbnRzW3RdKTtyZXR1cm4gdGhpc31jb25zdCBlPXRoaXMuY2hpbGRyZW4uaW5kZXhPZih0KTtyZXR1cm4tMSE9PWUmJih0LnBhcmVudD1udWxsLHRoaXMuY2hpbGRyZW4uc3BsaWNlKGUsMSksdC5kaXNwYXRjaEV2ZW50KEYzdCkpLHRoaXN9cmVtb3ZlRnJvbVBhcmVudCgpe2NvbnN0IHQ9dGhpcy5wYXJlbnQ7cmV0dXJuIG51bGwhPT10JiZ0LnJlbW92ZSh0aGlzKSx0aGlzfWNsZWFyKCl7Zm9yKGxldCB0PTA7dDx0aGlzLmNoaWxkcmVuLmxlbmd0aDt0Kyspe2NvbnN0IGU9dGhpcy5jaGlsZHJlblt0XTtlLnBhcmVudD1udWxsLGUuZGlzcGF0Y2hFdmVudChGM3QpfXJldHVybiB0aGlzLmNoaWxkcmVuLmxlbmd0aD0wLHRoaXN9YXR0YWNoKHQpe3JldHVybiB0aGlzLnVwZGF0ZVdvcmxkTWF0cml4KCEwLCExKSxQM3QuY29weSh0aGlzLm1hdHJpeFdvcmxkKS5pbnZlcnQoKSxudWxsIT09dC5wYXJlbnQmJih0LnBhcmVudC51cGRhdGVXb3JsZE1hdHJpeCghMCwhMSksUDN0Lm11bHRpcGx5KHQucGFyZW50Lm1hdHJpeFdvcmxkKSksdC5hcHBseU1hdHJpeDQoUDN0KSx0aGlzLmFkZCh0KSx0LnVwZGF0ZVdvcmxkTWF0cml4KCExLCEwKSx0aGlzfWdldE9iamVjdEJ5SWQodCl7cmV0dXJuIHRoaXMuZ2V0T2JqZWN0QnlQcm9wZXJ0eSgiaWQiLHQpfWdldE9iamVjdEJ5TmFtZSh0KXtyZXR1cm4gdGhpcy5nZXRPYmplY3RCeVByb3BlcnR5KCJuYW1lIix0KX1nZXRPYmplY3RCeVByb3BlcnR5KHQsZSl7aWYodGhpc1t0XT09PWUpcmV0dXJuIHRoaXM7Zm9yKGxldCBuPTAsaT10aGlzLmNoaWxkcmVuLmxlbmd0aDtuPGk7bisrKXtjb25zdCBpPXRoaXMuY2hpbGRyZW5bbl0uZ2V0T2JqZWN0QnlQcm9wZXJ0eSh0LGUpO2lmKHZvaWQgMCE9PWkpcmV0dXJuIGl9fWdldFdvcmxkUG9zaXRpb24odCl7cmV0dXJuIHRoaXMudXBkYXRlV29ybGRNYXRyaXgoITAsITEpLHQuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKHRoaXMubWF0cml4V29ybGQpfWdldFdvcmxkUXVhdGVybmlvbih0KXtyZXR1cm4gdGhpcy51cGRhdGVXb3JsZE1hdHJpeCghMCwhMSksdGhpcy5tYXRyaXhXb3JsZC5kZWNvbXBvc2UoSTN0LHQsUjN0KSx0fWdldFdvcmxkU2NhbGUodCl7cmV0dXJuIHRoaXMudXBkYXRlV29ybGRNYXRyaXgoITAsITEpLHRoaXMubWF0cml4V29ybGQuZGVjb21wb3NlKEkzdCxPM3QsdCksdH1nZXRXb3JsZERpcmVjdGlvbih0KXt0aGlzLnVwZGF0ZVdvcmxkTWF0cml4KCEwLCExKTtjb25zdCBlPXRoaXMubWF0cml4V29ybGQuZWxlbWVudHM7cmV0dXJuIHQuc2V0KGVbOF0sZVs5XSxlWzEwXSkubm9ybWFsaXplKCl9cmF5Y2FzdCgpe310cmF2ZXJzZSh0KXt0KHRoaXMpO2NvbnN0IGU9dGhpcy5jaGlsZHJlbjtmb3IobGV0IG49MCxpPWUubGVuZ3RoO248aTtuKyspZVtuXS50cmF2ZXJzZSh0KX10cmF2ZXJzZVZpc2libGUodCl7aWYoITE9PT10aGlzLnZpc2libGUpcmV0dXJuO3QodGhpcyk7Y29uc3QgZT10aGlzLmNoaWxkcmVuO2ZvcihsZXQgbj0wLGk9ZS5sZW5ndGg7bjxpO24rKyllW25dLnRyYXZlcnNlVmlzaWJsZSh0KX10cmF2ZXJzZUFuY2VzdG9ycyh0KXtjb25zdCBlPXRoaXMucGFyZW50O251bGwhPT1lJiYodChlKSxlLnRyYXZlcnNlQW5jZXN0b3JzKHQpKX11cGRhdGVNYXRyaXgoKXt0aGlzLm1hdHJpeC5jb21wb3NlKHRoaXMucG9zaXRpb24sdGhpcy5xdWF0ZXJuaW9uLHRoaXMuc2NhbGUpLHRoaXMubWF0cml4V29ybGROZWVkc1VwZGF0ZT0hMH11cGRhdGVNYXRyaXhXb3JsZCh0KXt0aGlzLm1hdHJpeEF1dG9VcGRhdGUmJnRoaXMudXBkYXRlTWF0cml4KCksKHRoaXMubWF0cml4V29ybGROZWVkc1VwZGF0ZXx8dCkmJihudWxsPT09dGhpcy5wYXJlbnQ/dGhpcy5tYXRyaXhXb3JsZC5jb3B5KHRoaXMubWF0cml4KTp0aGlzLm1hdHJpeFdvcmxkLm11bHRpcGx5TWF0cmljZXModGhpcy5wYXJlbnQubWF0cml4V29ybGQsdGhpcy5tYXRyaXgpLHRoaXMubWF0cml4V29ybGROZWVkc1VwZGF0ZT0hMSx0PSEwKTtjb25zdCBlPXRoaXMuY2hpbGRyZW47Zm9yKGxldCBuPTAsaT1lLmxlbmd0aDtuPGk7bisrKWVbbl0udXBkYXRlTWF0cml4V29ybGQodCl9dXBkYXRlV29ybGRNYXRyaXgodCxlKXtjb25zdCBuPXRoaXMucGFyZW50O2lmKCEwPT09dCYmbnVsbCE9PW4mJm4udXBkYXRlV29ybGRNYXRyaXgoITAsITEpLHRoaXMubWF0cml4QXV0b1VwZGF0ZSYmdGhpcy51cGRhdGVNYXRyaXgoKSxudWxsPT09dGhpcy5wYXJlbnQ/dGhpcy5tYXRyaXhXb3JsZC5jb3B5KHRoaXMubWF0cml4KTp0aGlzLm1hdHJpeFdvcmxkLm11bHRpcGx5TWF0cmljZXModGhpcy5wYXJlbnQubWF0cml4V29ybGQsdGhpcy5tYXRyaXgpLCEwPT09ZSl7Y29uc3QgdD10aGlzLmNoaWxkcmVuO2ZvcihsZXQgZT0wLG49dC5sZW5ndGg7ZTxuO2UrKyl0W2VdLnVwZGF0ZVdvcmxkTWF0cml4KCExLCEwKX19dG9KU09OKHQpe2NvbnN0IGU9dm9pZCAwPT09dHx8InN0cmluZyI9PXR5cGVvZiB0LG49e307ZSYmKHQ9e2dlb21ldHJpZXM6e30sbWF0ZXJpYWxzOnt9LHRleHR1cmVzOnt9LGltYWdlczp7fSxzaGFwZXM6e30sc2tlbGV0b25zOnt9LGFuaW1hdGlvbnM6e319LG4ubWV0YWRhdGE9e3ZlcnNpb246NC41LHR5cGU6Ik9iamVjdCIsZ2VuZXJhdG9yOiJPYmplY3QzRC50b0pTT04ifSk7Y29uc3QgaT17fTtmdW5jdGlvbiByKGUsbil7cmV0dXJuIHZvaWQgMD09PWVbbi51dWlkXSYmKGVbbi51dWlkXT1uLnRvSlNPTih0KSksbi51dWlkfWlmKGkudXVpZD10aGlzLnV1aWQsaS50eXBlPXRoaXMudHlwZSwiIiE9PXRoaXMubmFtZSYmKGkubmFtZT10aGlzLm5hbWUpLCEwPT09dGhpcy5jYXN0U2hhZG93JiYoaS5jYXN0U2hhZG93PSEwKSwhMD09PXRoaXMucmVjZWl2ZVNoYWRvdyYmKGkucmVjZWl2ZVNoYWRvdz0hMCksITE9PT10aGlzLnZpc2libGUmJihpLnZpc2libGU9ITEpLCExPT09dGhpcy5mcnVzdHVtQ3VsbGVkJiYoaS5mcnVzdHVtQ3VsbGVkPSExKSwwIT09dGhpcy5yZW5kZXJPcmRlciYmKGkucmVuZGVyT3JkZXI9dGhpcy5yZW5kZXJPcmRlciksInt9IiE9PUpTT04uc3RyaW5naWZ5KHRoaXMudXNlckRhdGEpJiYoaS51c2VyRGF0YT10aGlzLnVzZXJEYXRhKSxpLmxheWVycz10aGlzLmxheWVycy5tYXNrLGkubWF0cml4PXRoaXMubWF0cml4LnRvQXJyYXkoKSwhMT09PXRoaXMubWF0cml4QXV0b1VwZGF0ZSYmKGkubWF0cml4QXV0b1VwZGF0ZT0hMSksdGhpcy5pc0luc3RhbmNlZE1lc2gmJihpLnR5cGU9Ikluc3RhbmNlZE1lc2giLGkuY291bnQ9dGhpcy5jb3VudCxpLmluc3RhbmNlTWF0cml4PXRoaXMuaW5zdGFuY2VNYXRyaXgudG9KU09OKCksbnVsbCE9PXRoaXMuaW5zdGFuY2VDb2xvciYmKGkuaW5zdGFuY2VDb2xvcj10aGlzLmluc3RhbmNlQ29sb3IudG9KU09OKCkpKSx0aGlzLmlzU2NlbmUpdGhpcy5iYWNrZ3JvdW5kJiYodGhpcy5iYWNrZ3JvdW5kLmlzQ29sb3I/aS5iYWNrZ3JvdW5kPXRoaXMuYmFja2dyb3VuZC50b0pTT04oKTp0aGlzLmJhY2tncm91bmQuaXNUZXh0dXJlJiYoaS5iYWNrZ3JvdW5kPXRoaXMuYmFja2dyb3VuZC50b0pTT04odCkudXVpZCkpLHRoaXMuZW52aXJvbm1lbnQmJnRoaXMuZW52aXJvbm1lbnQuaXNUZXh0dXJlJiYoaS5lbnZpcm9ubWVudD10aGlzLmVudmlyb25tZW50LnRvSlNPTih0KS51dWlkKTtlbHNlIGlmKHRoaXMuaXNNZXNofHx0aGlzLmlzTGluZXx8dGhpcy5pc1BvaW50cyl7aS5nZW9tZXRyeT1yKHQuZ2VvbWV0cmllcyx0aGlzLmdlb21ldHJ5KTtjb25zdCBlPXRoaXMuZ2VvbWV0cnkucGFyYW1ldGVycztpZih2b2lkIDAhPT1lJiZ2b2lkIDAhPT1lLnNoYXBlcyl7Y29uc3Qgbj1lLnNoYXBlcztpZihBcnJheS5pc0FycmF5KG4pKWZvcihsZXQgZT0wLGk9bi5sZW5ndGg7ZTxpO2UrKyl7cih0LnNoYXBlcyxuW2VdKX1lbHNlIHIodC5zaGFwZXMsbil9fWlmKHRoaXMuaXNTa2lubmVkTWVzaCYmKGkuYmluZE1vZGU9dGhpcy5iaW5kTW9kZSxpLmJpbmRNYXRyaXg9dGhpcy5iaW5kTWF0cml4LnRvQXJyYXkoKSx2b2lkIDAhPT10aGlzLnNrZWxldG9uJiYocih0LnNrZWxldG9ucyx0aGlzLnNrZWxldG9uKSxpLnNrZWxldG9uPXRoaXMuc2tlbGV0b24udXVpZCkpLHZvaWQgMCE9PXRoaXMubWF0ZXJpYWwpaWYoQXJyYXkuaXNBcnJheSh0aGlzLm1hdGVyaWFsKSl7Y29uc3QgZT1bXTtmb3IobGV0IG49MCxpPXRoaXMubWF0ZXJpYWwubGVuZ3RoO248aTtuKyspZS5wdXNoKHIodC5tYXRlcmlhbHMsdGhpcy5tYXRlcmlhbFtuXSkpO2kubWF0ZXJpYWw9ZX1lbHNlIGkubWF0ZXJpYWw9cih0Lm1hdGVyaWFscyx0aGlzLm1hdGVyaWFsKTtpZih0aGlzLmNoaWxkcmVuLmxlbmd0aD4wKXtpLmNoaWxkcmVuPVtdO2ZvcihsZXQgZT0wO2U8dGhpcy5jaGlsZHJlbi5sZW5ndGg7ZSsrKWkuY2hpbGRyZW4ucHVzaCh0aGlzLmNoaWxkcmVuW2VdLnRvSlNPTih0KS5vYmplY3QpfWlmKHRoaXMuYW5pbWF0aW9ucy5sZW5ndGg+MCl7aS5hbmltYXRpb25zPVtdO2ZvcihsZXQgZT0wO2U8dGhpcy5hbmltYXRpb25zLmxlbmd0aDtlKyspe2kuYW5pbWF0aW9ucy5wdXNoKHIodC5hbmltYXRpb25zLHRoaXMuYW5pbWF0aW9uc1tlXSkpfX1pZihlKXtjb25zdCBlPW8odC5nZW9tZXRyaWVzKSxpPW8odC5tYXRlcmlhbHMpLHI9byh0LnRleHR1cmVzKSxhPW8odC5pbWFnZXMpLHM9byh0LnNoYXBlcyksbD1vKHQuc2tlbGV0b25zKSxjPW8odC5hbmltYXRpb25zKTtlLmxlbmd0aD4wJiYobi5nZW9tZXRyaWVzPWUpLGkubGVuZ3RoPjAmJihuLm1hdGVyaWFscz1pKSxyLmxlbmd0aD4wJiYobi50ZXh0dXJlcz1yKSxhLmxlbmd0aD4wJiYobi5pbWFnZXM9YSkscy5sZW5ndGg+MCYmKG4uc2hhcGVzPXMpLGwubGVuZ3RoPjAmJihuLnNrZWxldG9ucz1sKSxjLmxlbmd0aD4wJiYobi5hbmltYXRpb25zPWMpfXJldHVybiBuLm9iamVjdD1pLG47ZnVuY3Rpb24gbyh0KXtjb25zdCBlPVtdO2Zvcihjb25zdCBuIGluIHQpe2NvbnN0IGk9dFtuXTtkZWxldGUgaS5tZXRhZGF0YSxlLnB1c2goaSl9cmV0dXJuIGV9fWNsb25lKHQpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3RvcikuY29weSh0aGlzLHQpfWNvcHkodCxlPSEwKXtpZih0aGlzLm5hbWU9dC5uYW1lLHRoaXMudXAuY29weSh0LnVwKSx0aGlzLnBvc2l0aW9uLmNvcHkodC5wb3NpdGlvbiksdGhpcy5yb3RhdGlvbi5vcmRlcj10LnJvdGF0aW9uLm9yZGVyLHRoaXMucXVhdGVybmlvbi5jb3B5KHQucXVhdGVybmlvbiksdGhpcy5zY2FsZS5jb3B5KHQuc2NhbGUpLHRoaXMubWF0cml4LmNvcHkodC5tYXRyaXgpLHRoaXMubWF0cml4V29ybGQuY29weSh0Lm1hdHJpeFdvcmxkKSx0aGlzLm1hdHJpeEF1dG9VcGRhdGU9dC5tYXRyaXhBdXRvVXBkYXRlLHRoaXMubWF0cml4V29ybGROZWVkc1VwZGF0ZT10Lm1hdHJpeFdvcmxkTmVlZHNVcGRhdGUsdGhpcy5sYXllcnMubWFzaz10LmxheWVycy5tYXNrLHRoaXMudmlzaWJsZT10LnZpc2libGUsdGhpcy5jYXN0U2hhZG93PXQuY2FzdFNoYWRvdyx0aGlzLnJlY2VpdmVTaGFkb3c9dC5yZWNlaXZlU2hhZG93LHRoaXMuZnJ1c3R1bUN1bGxlZD10LmZydXN0dW1DdWxsZWQsdGhpcy5yZW5kZXJPcmRlcj10LnJlbmRlck9yZGVyLHRoaXMudXNlckRhdGE9SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0LnVzZXJEYXRhKSksITA9PT1lKWZvcihsZXQgZT0wO2U8dC5jaGlsZHJlbi5sZW5ndGg7ZSsrKXt0aGlzLmFkZCh0LmNoaWxkcmVuW2VdLmNsb25lKCkpfXJldHVybiB0aGlzfX1WM3QuRGVmYXVsdFVwPW5ldyBINXQoMCwxLDApLFYzdC5EZWZhdWx0TWF0cml4QXV0b1VwZGF0ZT0hMCxWM3QucHJvdG90eXBlLmlzT2JqZWN0M0Q9ITA7Y29uc3QgVTN0PW5ldyBINXQsajN0PW5ldyBINXQsRzN0PW5ldyBINXQsVzN0PW5ldyBINXQscTN0PW5ldyBINXQsWTN0PW5ldyBINXQsWDN0PW5ldyBINXQsJDN0PW5ldyBINXQsSzN0PW5ldyBINXQsWjN0PW5ldyBINXQ7Y2xhc3MgSjN0e2NvbnN0cnVjdG9yKHQ9bmV3IEg1dCxlPW5ldyBINXQsbj1uZXcgSDV0KXt0aGlzLmE9dCx0aGlzLmI9ZSx0aGlzLmM9bn1zdGF0aWMgZ2V0Tm9ybWFsKHQsZSxuLGkpe2kuc3ViVmVjdG9ycyhuLGUpLFUzdC5zdWJWZWN0b3JzKHQsZSksaS5jcm9zcyhVM3QpO2NvbnN0IHI9aS5sZW5ndGhTcSgpO3JldHVybiByPjA/aS5tdWx0aXBseVNjYWxhcigxL01hdGguc3FydChyKSk6aS5zZXQoMCwwLDApfXN0YXRpYyBnZXRCYXJ5Y29vcmQodCxlLG4saSxyKXtVM3Quc3ViVmVjdG9ycyhpLGUpLGozdC5zdWJWZWN0b3JzKG4sZSksRzN0LnN1YlZlY3RvcnModCxlKTtjb25zdCBvPVUzdC5kb3QoVTN0KSxhPVUzdC5kb3QoajN0KSxzPVUzdC5kb3QoRzN0KSxsPWozdC5kb3QoajN0KSxjPWozdC5kb3QoRzN0KSx1PW8qbC1hKmE7aWYoMD09PXUpcmV0dXJuIHIuc2V0KC0yLC0xLC0xKTtjb25zdCBoPTEvdSxkPShsKnMtYSpjKSpoLHA9KG8qYy1hKnMpKmg7cmV0dXJuIHIuc2V0KDEtZC1wLHAsZCl9c3RhdGljIGNvbnRhaW5zUG9pbnQodCxlLG4saSl7cmV0dXJuIHRoaXMuZ2V0QmFyeWNvb3JkKHQsZSxuLGksVzN0KSxXM3QueD49MCYmVzN0Lnk+PTAmJlczdC54K1czdC55PD0xfXN0YXRpYyBnZXRVVih0LGUsbixpLHIsbyxhLHMpe3JldHVybiB0aGlzLmdldEJhcnljb29yZCh0LGUsbixpLFczdCkscy5zZXQoMCwwKSxzLmFkZFNjYWxlZFZlY3RvcihyLFczdC54KSxzLmFkZFNjYWxlZFZlY3RvcihvLFczdC55KSxzLmFkZFNjYWxlZFZlY3RvcihhLFczdC56KSxzfXN0YXRpYyBpc0Zyb250RmFjaW5nKHQsZSxuLGkpe3JldHVybiBVM3Quc3ViVmVjdG9ycyhuLGUpLGozdC5zdWJWZWN0b3JzKHQsZSksVTN0LmNyb3NzKGozdCkuZG90KGkpPDB9c2V0KHQsZSxuKXtyZXR1cm4gdGhpcy5hLmNvcHkodCksdGhpcy5iLmNvcHkoZSksdGhpcy5jLmNvcHkobiksdGhpc31zZXRGcm9tUG9pbnRzQW5kSW5kaWNlcyh0LGUsbixpKXtyZXR1cm4gdGhpcy5hLmNvcHkodFtlXSksdGhpcy5iLmNvcHkodFtuXSksdGhpcy5jLmNvcHkodFtpXSksdGhpc31jbG9uZSgpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3RvcikuY29weSh0aGlzKX1jb3B5KHQpe3JldHVybiB0aGlzLmEuY29weSh0LmEpLHRoaXMuYi5jb3B5KHQuYiksdGhpcy5jLmNvcHkodC5jKSx0aGlzfWdldEFyZWEoKXtyZXR1cm4gVTN0LnN1YlZlY3RvcnModGhpcy5jLHRoaXMuYiksajN0LnN1YlZlY3RvcnModGhpcy5hLHRoaXMuYiksLjUqVTN0LmNyb3NzKGozdCkubGVuZ3RoKCl9Z2V0TWlkcG9pbnQodCl7cmV0dXJuIHQuYWRkVmVjdG9ycyh0aGlzLmEsdGhpcy5iKS5hZGQodGhpcy5jKS5tdWx0aXBseVNjYWxhcigxLzMpfWdldE5vcm1hbCh0KXtyZXR1cm4gSjN0LmdldE5vcm1hbCh0aGlzLmEsdGhpcy5iLHRoaXMuYyx0KX1nZXRQbGFuZSh0KXtyZXR1cm4gdC5zZXRGcm9tQ29wbGFuYXJQb2ludHModGhpcy5hLHRoaXMuYix0aGlzLmMpfWdldEJhcnljb29yZCh0LGUpe3JldHVybiBKM3QuZ2V0QmFyeWNvb3JkKHQsdGhpcy5hLHRoaXMuYix0aGlzLmMsZSl9Z2V0VVYodCxlLG4saSxyKXtyZXR1cm4gSjN0LmdldFVWKHQsdGhpcy5hLHRoaXMuYix0aGlzLmMsZSxuLGkscil9Y29udGFpbnNQb2ludCh0KXtyZXR1cm4gSjN0LmNvbnRhaW5zUG9pbnQodCx0aGlzLmEsdGhpcy5iLHRoaXMuYyl9aXNGcm9udEZhY2luZyh0KXtyZXR1cm4gSjN0LmlzRnJvbnRGYWNpbmcodGhpcy5hLHRoaXMuYix0aGlzLmMsdCl9aW50ZXJzZWN0c0JveCh0KXtyZXR1cm4gdC5pbnRlcnNlY3RzVHJpYW5nbGUodGhpcyl9Y2xvc2VzdFBvaW50VG9Qb2ludCh0LGUpe2NvbnN0IG49dGhpcy5hLGk9dGhpcy5iLHI9dGhpcy5jO2xldCBvLGE7cTN0LnN1YlZlY3RvcnMoaSxuKSxZM3Quc3ViVmVjdG9ycyhyLG4pLCQzdC5zdWJWZWN0b3JzKHQsbik7Y29uc3Qgcz1xM3QuZG90KCQzdCksbD1ZM3QuZG90KCQzdCk7aWYoczw9MCYmbDw9MClyZXR1cm4gZS5jb3B5KG4pO0szdC5zdWJWZWN0b3JzKHQsaSk7Y29uc3QgYz1xM3QuZG90KEszdCksdT1ZM3QuZG90KEszdCk7aWYoYz49MCYmdTw9YylyZXR1cm4gZS5jb3B5KGkpO2NvbnN0IGg9cyp1LWMqbDtpZihoPD0wJiZzPj0wJiZjPD0wKXJldHVybiBvPXMvKHMtYyksZS5jb3B5KG4pLmFkZFNjYWxlZFZlY3RvcihxM3Qsbyk7WjN0LnN1YlZlY3RvcnModCxyKTtjb25zdCBkPXEzdC5kb3QoWjN0KSxwPVkzdC5kb3QoWjN0KTtpZihwPj0wJiZkPD1wKXJldHVybiBlLmNvcHkocik7Y29uc3QgZj1kKmwtcypwO2lmKGY8PTAmJmw+PTAmJnA8PTApcmV0dXJuIGE9bC8obC1wKSxlLmNvcHkobikuYWRkU2NhbGVkVmVjdG9yKFkzdCxhKTtjb25zdCBtPWMqcC1kKnU7aWYobTw9MCYmdS1jPj0wJiZkLXA+PTApcmV0dXJuIFgzdC5zdWJWZWN0b3JzKHIsaSksYT0odS1jKS8odS1jKyhkLXApKSxlLmNvcHkoaSkuYWRkU2NhbGVkVmVjdG9yKFgzdCxhKTtjb25zdCBnPTEvKG0rZitoKTtyZXR1cm4gbz1mKmcsYT1oKmcsZS5jb3B5KG4pLmFkZFNjYWxlZFZlY3RvcihxM3QsbykuYWRkU2NhbGVkVmVjdG9yKFkzdCxhKX1lcXVhbHModCl7cmV0dXJuIHQuYS5lcXVhbHModGhpcy5hKSYmdC5iLmVxdWFscyh0aGlzLmIpJiZ0LmMuZXF1YWxzKHRoaXMuYyl9fWxldCBRM3Q9MDtjbGFzcyB0NHQgZXh0ZW5kcyBlNXR7Y29uc3RydWN0b3IoKXtzdXBlcigpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJpZCIse3ZhbHVlOlEzdCsrfSksdGhpcy51dWlkPWE1dCgpLHRoaXMubmFtZT0iIix0aGlzLnR5cGU9Ik1hdGVyaWFsIix0aGlzLmZvZz0hMCx0aGlzLmJsZW5kaW5nPTEsdGhpcy5zaWRlPTAsdGhpcy52ZXJ0ZXhDb2xvcnM9ITEsdGhpcy5vcGFjaXR5PTEsdGhpcy50cmFuc3BhcmVudD0hMSx0aGlzLmJsZW5kU3JjPTIwNCx0aGlzLmJsZW5kRHN0PTIwNSx0aGlzLmJsZW5kRXF1YXRpb249UTB0LHRoaXMuYmxlbmRTcmNBbHBoYT1udWxsLHRoaXMuYmxlbmREc3RBbHBoYT1udWxsLHRoaXMuYmxlbmRFcXVhdGlvbkFscGhhPW51bGwsdGhpcy5kZXB0aEZ1bmM9Myx0aGlzLmRlcHRoVGVzdD0hMCx0aGlzLmRlcHRoV3JpdGU9ITAsdGhpcy5zdGVuY2lsV3JpdGVNYXNrPTI1NSx0aGlzLnN0ZW5jaWxGdW5jPTUxOSx0aGlzLnN0ZW5jaWxSZWY9MCx0aGlzLnN0ZW5jaWxGdW5jTWFzaz0yNTUsdGhpcy5zdGVuY2lsRmFpbD1aMnQsdGhpcy5zdGVuY2lsWkZhaWw9WjJ0LHRoaXMuc3RlbmNpbFpQYXNzPVoydCx0aGlzLnN0ZW5jaWxXcml0ZT0hMSx0aGlzLmNsaXBwaW5nUGxhbmVzPW51bGwsdGhpcy5jbGlwSW50ZXJzZWN0aW9uPSExLHRoaXMuY2xpcFNoYWRvd3M9ITEsdGhpcy5zaGFkb3dTaWRlPW51bGwsdGhpcy5jb2xvcldyaXRlPSEwLHRoaXMucHJlY2lzaW9uPW51bGwsdGhpcy5wb2x5Z29uT2Zmc2V0PSExLHRoaXMucG9seWdvbk9mZnNldEZhY3Rvcj0wLHRoaXMucG9seWdvbk9mZnNldFVuaXRzPTAsdGhpcy5kaXRoZXJpbmc9ITEsdGhpcy5hbHBoYVRlc3Q9MCx0aGlzLmFscGhhVG9Db3ZlcmFnZT0hMSx0aGlzLnByZW11bHRpcGxpZWRBbHBoYT0hMSx0aGlzLnZpc2libGU9ITAsdGhpcy50b25lTWFwcGVkPSEwLHRoaXMudXNlckRhdGE9e30sdGhpcy52ZXJzaW9uPTB9b25CdWlsZCgpe31vbkJlZm9yZUNvbXBpbGUoKXt9Y3VzdG9tUHJvZ3JhbUNhY2hlS2V5KCl7cmV0dXJuIHRoaXMub25CZWZvcmVDb21waWxlLnRvU3RyaW5nKCl9c2V0VmFsdWVzKHQpe2lmKHZvaWQgMCE9PXQpZm9yKGNvbnN0IGUgaW4gdCl7Y29uc3Qgbj10W2VdO2lmKHZvaWQgMD09PW4pe2NvbnNvbGUud2FybigiVEhSRUUuTWF0ZXJpYWw6ICciK2UrIicgcGFyYW1ldGVyIGlzIHVuZGVmaW5lZC4iKTtjb250aW51ZX1pZigic2hhZGluZyI9PT1lKXtjb25zb2xlLndhcm4oIlRIUkVFLiIrdGhpcy50eXBlKyI6IC5zaGFkaW5nIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSB0aGUgYm9vbGVhbiAuZmxhdFNoYWRpbmcgaW5zdGVhZC4iKSx0aGlzLmZsYXRTaGFkaW5nPTE9PT1uO2NvbnRpbnVlfWNvbnN0IGk9dGhpc1tlXTt2b2lkIDAhPT1pP2kmJmkuaXNDb2xvcj9pLnNldChuKTppJiZpLmlzVmVjdG9yMyYmbiYmbi5pc1ZlY3RvcjM/aS5jb3B5KG4pOnRoaXNbZV09bjpjb25zb2xlLndhcm4oIlRIUkVFLiIrdGhpcy50eXBlKyI6ICciK2UrIicgaXMgbm90IGEgcHJvcGVydHkgb2YgdGhpcyBtYXRlcmlhbC4iKX19dG9KU09OKHQpe2NvbnN0IGU9dm9pZCAwPT09dHx8InN0cmluZyI9PXR5cGVvZiB0O2UmJih0PXt0ZXh0dXJlczp7fSxpbWFnZXM6e319KTtjb25zdCBuPXttZXRhZGF0YTp7dmVyc2lvbjo0LjUsdHlwZToiTWF0ZXJpYWwiLGdlbmVyYXRvcjoiTWF0ZXJpYWwudG9KU09OIn19O2Z1bmN0aW9uIGkodCl7Y29uc3QgZT1bXTtmb3IoY29uc3QgbiBpbiB0KXtjb25zdCBpPXRbbl07ZGVsZXRlIGkubWV0YWRhdGEsZS5wdXNoKGkpfXJldHVybiBlfWlmKG4udXVpZD10aGlzLnV1aWQsbi50eXBlPXRoaXMudHlwZSwiIiE9PXRoaXMubmFtZSYmKG4ubmFtZT10aGlzLm5hbWUpLHRoaXMuY29sb3ImJnRoaXMuY29sb3IuaXNDb2xvciYmKG4uY29sb3I9dGhpcy5jb2xvci5nZXRIZXgoKSksdm9pZCAwIT09dGhpcy5yb3VnaG5lc3MmJihuLnJvdWdobmVzcz10aGlzLnJvdWdobmVzcyksdm9pZCAwIT09dGhpcy5tZXRhbG5lc3MmJihuLm1ldGFsbmVzcz10aGlzLm1ldGFsbmVzcyksdGhpcy5zaGVlbiYmdGhpcy5zaGVlbi5pc0NvbG9yJiYobi5zaGVlbj10aGlzLnNoZWVuLmdldEhleCgpKSx0aGlzLmVtaXNzaXZlJiZ0aGlzLmVtaXNzaXZlLmlzQ29sb3ImJihuLmVtaXNzaXZlPXRoaXMuZW1pc3NpdmUuZ2V0SGV4KCkpLHRoaXMuZW1pc3NpdmVJbnRlbnNpdHkmJjEhPT10aGlzLmVtaXNzaXZlSW50ZW5zaXR5JiYobi5lbWlzc2l2ZUludGVuc2l0eT10aGlzLmVtaXNzaXZlSW50ZW5zaXR5KSx0aGlzLnNwZWN1bGFyJiZ0aGlzLnNwZWN1bGFyLmlzQ29sb3ImJihuLnNwZWN1bGFyPXRoaXMuc3BlY3VsYXIuZ2V0SGV4KCkpLHZvaWQgMCE9PXRoaXMuc3BlY3VsYXJJbnRlbnNpdHkmJihuLnNwZWN1bGFySW50ZW5zaXR5PXRoaXMuc3BlY3VsYXJJbnRlbnNpdHkpLHRoaXMuc3BlY3VsYXJUaW50JiZ0aGlzLnNwZWN1bGFyVGludC5pc0NvbG9yJiYobi5zcGVjdWxhclRpbnQ9dGhpcy5zcGVjdWxhclRpbnQuZ2V0SGV4KCkpLHZvaWQgMCE9PXRoaXMuc2hpbmluZXNzJiYobi5zaGluaW5lc3M9dGhpcy5zaGluaW5lc3MpLHZvaWQgMCE9PXRoaXMuY2xlYXJjb2F0JiYobi5jbGVhcmNvYXQ9dGhpcy5jbGVhcmNvYXQpLHZvaWQgMCE9PXRoaXMuY2xlYXJjb2F0Um91Z2huZXNzJiYobi5jbGVhcmNvYXRSb3VnaG5lc3M9dGhpcy5jbGVhcmNvYXRSb3VnaG5lc3MpLHRoaXMuY2xlYXJjb2F0TWFwJiZ0aGlzLmNsZWFyY29hdE1hcC5pc1RleHR1cmUmJihuLmNsZWFyY29hdE1hcD10aGlzLmNsZWFyY29hdE1hcC50b0pTT04odCkudXVpZCksdGhpcy5jbGVhcmNvYXRSb3VnaG5lc3NNYXAmJnRoaXMuY2xlYXJjb2F0Um91Z2huZXNzTWFwLmlzVGV4dHVyZSYmKG4uY2xlYXJjb2F0Um91Z2huZXNzTWFwPXRoaXMuY2xlYXJjb2F0Um91Z2huZXNzTWFwLnRvSlNPTih0KS51dWlkKSx0aGlzLmNsZWFyY29hdE5vcm1hbE1hcCYmdGhpcy5jbGVhcmNvYXROb3JtYWxNYXAuaXNUZXh0dXJlJiYobi5jbGVhcmNvYXROb3JtYWxNYXA9dGhpcy5jbGVhcmNvYXROb3JtYWxNYXAudG9KU09OKHQpLnV1aWQsbi5jbGVhcmNvYXROb3JtYWxTY2FsZT10aGlzLmNsZWFyY29hdE5vcm1hbFNjYWxlLnRvQXJyYXkoKSksdGhpcy5tYXAmJnRoaXMubWFwLmlzVGV4dHVyZSYmKG4ubWFwPXRoaXMubWFwLnRvSlNPTih0KS51dWlkKSx0aGlzLm1hdGNhcCYmdGhpcy5tYXRjYXAuaXNUZXh0dXJlJiYobi5tYXRjYXA9dGhpcy5tYXRjYXAudG9KU09OKHQpLnV1aWQpLHRoaXMuYWxwaGFNYXAmJnRoaXMuYWxwaGFNYXAuaXNUZXh0dXJlJiYobi5hbHBoYU1hcD10aGlzLmFscGhhTWFwLnRvSlNPTih0KS51dWlkKSx0aGlzLmxpZ2h0TWFwJiZ0aGlzLmxpZ2h0TWFwLmlzVGV4dHVyZSYmKG4ubGlnaHRNYXA9dGhpcy5saWdodE1hcC50b0pTT04odCkudXVpZCxuLmxpZ2h0TWFwSW50ZW5zaXR5PXRoaXMubGlnaHRNYXBJbnRlbnNpdHkpLHRoaXMuYW9NYXAmJnRoaXMuYW9NYXAuaXNUZXh0dXJlJiYobi5hb01hcD10aGlzLmFvTWFwLnRvSlNPTih0KS51dWlkLG4uYW9NYXBJbnRlbnNpdHk9dGhpcy5hb01hcEludGVuc2l0eSksdGhpcy5idW1wTWFwJiZ0aGlzLmJ1bXBNYXAuaXNUZXh0dXJlJiYobi5idW1wTWFwPXRoaXMuYnVtcE1hcC50b0pTT04odCkudXVpZCxuLmJ1bXBTY2FsZT10aGlzLmJ1bXBTY2FsZSksdGhpcy5ub3JtYWxNYXAmJnRoaXMubm9ybWFsTWFwLmlzVGV4dHVyZSYmKG4ubm9ybWFsTWFwPXRoaXMubm9ybWFsTWFwLnRvSlNPTih0KS51dWlkLG4ubm9ybWFsTWFwVHlwZT10aGlzLm5vcm1hbE1hcFR5cGUsbi5ub3JtYWxTY2FsZT10aGlzLm5vcm1hbFNjYWxlLnRvQXJyYXkoKSksdGhpcy5kaXNwbGFjZW1lbnRNYXAmJnRoaXMuZGlzcGxhY2VtZW50TWFwLmlzVGV4dHVyZSYmKG4uZGlzcGxhY2VtZW50TWFwPXRoaXMuZGlzcGxhY2VtZW50TWFwLnRvSlNPTih0KS51dWlkLG4uZGlzcGxhY2VtZW50U2NhbGU9dGhpcy5kaXNwbGFjZW1lbnRTY2FsZSxuLmRpc3BsYWNlbWVudEJpYXM9dGhpcy5kaXNwbGFjZW1lbnRCaWFzKSx0aGlzLnJvdWdobmVzc01hcCYmdGhpcy5yb3VnaG5lc3NNYXAuaXNUZXh0dXJlJiYobi5yb3VnaG5lc3NNYXA9dGhpcy5yb3VnaG5lc3NNYXAudG9KU09OKHQpLnV1aWQpLHRoaXMubWV0YWxuZXNzTWFwJiZ0aGlzLm1ldGFsbmVzc01hcC5pc1RleHR1cmUmJihuLm1ldGFsbmVzc01hcD10aGlzLm1ldGFsbmVzc01hcC50b0pTT04odCkudXVpZCksdGhpcy5lbWlzc2l2ZU1hcCYmdGhpcy5lbWlzc2l2ZU1hcC5pc1RleHR1cmUmJihuLmVtaXNzaXZlTWFwPXRoaXMuZW1pc3NpdmVNYXAudG9KU09OKHQpLnV1aWQpLHRoaXMuc3BlY3VsYXJNYXAmJnRoaXMuc3BlY3VsYXJNYXAuaXNUZXh0dXJlJiYobi5zcGVjdWxhck1hcD10aGlzLnNwZWN1bGFyTWFwLnRvSlNPTih0KS51dWlkKSx0aGlzLnNwZWN1bGFySW50ZW5zaXR5TWFwJiZ0aGlzLnNwZWN1bGFySW50ZW5zaXR5TWFwLmlzVGV4dHVyZSYmKG4uc3BlY3VsYXJJbnRlbnNpdHlNYXA9dGhpcy5zcGVjdWxhckludGVuc2l0eU1hcC50b0pTT04odCkudXVpZCksdGhpcy5zcGVjdWxhclRpbnRNYXAmJnRoaXMuc3BlY3VsYXJUaW50TWFwLmlzVGV4dHVyZSYmKG4uc3BlY3VsYXJUaW50TWFwPXRoaXMuc3BlY3VsYXJUaW50TWFwLnRvSlNPTih0KS51dWlkKSx0aGlzLmVudk1hcCYmdGhpcy5lbnZNYXAuaXNUZXh0dXJlJiYobi5lbnZNYXA9dGhpcy5lbnZNYXAudG9KU09OKHQpLnV1aWQsdm9pZCAwIT09dGhpcy5jb21iaW5lJiYobi5jb21iaW5lPXRoaXMuY29tYmluZSkpLHZvaWQgMCE9PXRoaXMuZW52TWFwSW50ZW5zaXR5JiYobi5lbnZNYXBJbnRlbnNpdHk9dGhpcy5lbnZNYXBJbnRlbnNpdHkpLHZvaWQgMCE9PXRoaXMucmVmbGVjdGl2aXR5JiYobi5yZWZsZWN0aXZpdHk9dGhpcy5yZWZsZWN0aXZpdHkpLHZvaWQgMCE9PXRoaXMucmVmcmFjdGlvblJhdGlvJiYobi5yZWZyYWN0aW9uUmF0aW89dGhpcy5yZWZyYWN0aW9uUmF0aW8pLHRoaXMuZ3JhZGllbnRNYXAmJnRoaXMuZ3JhZGllbnRNYXAuaXNUZXh0dXJlJiYobi5ncmFkaWVudE1hcD10aGlzLmdyYWRpZW50TWFwLnRvSlNPTih0KS51dWlkKSx2b2lkIDAhPT10aGlzLnRyYW5zbWlzc2lvbiYmKG4udHJhbnNtaXNzaW9uPXRoaXMudHJhbnNtaXNzaW9uKSx0aGlzLnRyYW5zbWlzc2lvbk1hcCYmdGhpcy50cmFuc21pc3Npb25NYXAuaXNUZXh0dXJlJiYobi50cmFuc21pc3Npb25NYXA9dGhpcy50cmFuc21pc3Npb25NYXAudG9KU09OKHQpLnV1aWQpLHZvaWQgMCE9PXRoaXMudGhpY2tuZXNzJiYobi50aGlja25lc3M9dGhpcy50aGlja25lc3MpLHRoaXMudGhpY2tuZXNzTWFwJiZ0aGlzLnRoaWNrbmVzc01hcC5pc1RleHR1cmUmJihuLnRoaWNrbmVzc01hcD10aGlzLnRoaWNrbmVzc01hcC50b0pTT04odCkudXVpZCksdm9pZCAwIT09dGhpcy5hdHRlbnVhdGlvbkRpc3RhbmNlJiYobi5hdHRlbnVhdGlvbkRpc3RhbmNlPXRoaXMuYXR0ZW51YXRpb25EaXN0YW5jZSksdm9pZCAwIT09dGhpcy5hdHRlbnVhdGlvblRpbnQmJihuLmF0dGVudWF0aW9uVGludD10aGlzLmF0dGVudWF0aW9uVGludC5nZXRIZXgoKSksdm9pZCAwIT09dGhpcy5zaXplJiYobi5zaXplPXRoaXMuc2l6ZSksbnVsbCE9PXRoaXMuc2hhZG93U2lkZSYmKG4uc2hhZG93U2lkZT10aGlzLnNoYWRvd1NpZGUpLHZvaWQgMCE9PXRoaXMuc2l6ZUF0dGVudWF0aW9uJiYobi5zaXplQXR0ZW51YXRpb249dGhpcy5zaXplQXR0ZW51YXRpb24pLDEhPT10aGlzLmJsZW5kaW5nJiYobi5ibGVuZGluZz10aGlzLmJsZW5kaW5nKSwwIT09dGhpcy5zaWRlJiYobi5zaWRlPXRoaXMuc2lkZSksdGhpcy52ZXJ0ZXhDb2xvcnMmJihuLnZlcnRleENvbG9ycz0hMCksdGhpcy5vcGFjaXR5PDEmJihuLm9wYWNpdHk9dGhpcy5vcGFjaXR5KSwhMD09PXRoaXMudHJhbnNwYXJlbnQmJihuLnRyYW5zcGFyZW50PXRoaXMudHJhbnNwYXJlbnQpLG4uZGVwdGhGdW5jPXRoaXMuZGVwdGhGdW5jLG4uZGVwdGhUZXN0PXRoaXMuZGVwdGhUZXN0LG4uZGVwdGhXcml0ZT10aGlzLmRlcHRoV3JpdGUsbi5jb2xvcldyaXRlPXRoaXMuY29sb3JXcml0ZSxuLnN0ZW5jaWxXcml0ZT10aGlzLnN0ZW5jaWxXcml0ZSxuLnN0ZW5jaWxXcml0ZU1hc2s9dGhpcy5zdGVuY2lsV3JpdGVNYXNrLG4uc3RlbmNpbEZ1bmM9dGhpcy5zdGVuY2lsRnVuYyxuLnN0ZW5jaWxSZWY9dGhpcy5zdGVuY2lsUmVmLG4uc3RlbmNpbEZ1bmNNYXNrPXRoaXMuc3RlbmNpbEZ1bmNNYXNrLG4uc3RlbmNpbEZhaWw9dGhpcy5zdGVuY2lsRmFpbCxuLnN0ZW5jaWxaRmFpbD10aGlzLnN0ZW5jaWxaRmFpbCxuLnN0ZW5jaWxaUGFzcz10aGlzLnN0ZW5jaWxaUGFzcyx0aGlzLnJvdGF0aW9uJiYwIT09dGhpcy5yb3RhdGlvbiYmKG4ucm90YXRpb249dGhpcy5yb3RhdGlvbiksITA9PT10aGlzLnBvbHlnb25PZmZzZXQmJihuLnBvbHlnb25PZmZzZXQ9ITApLDAhPT10aGlzLnBvbHlnb25PZmZzZXRGYWN0b3ImJihuLnBvbHlnb25PZmZzZXRGYWN0b3I9dGhpcy5wb2x5Z29uT2Zmc2V0RmFjdG9yKSwwIT09dGhpcy5wb2x5Z29uT2Zmc2V0VW5pdHMmJihuLnBvbHlnb25PZmZzZXRVbml0cz10aGlzLnBvbHlnb25PZmZzZXRVbml0cyksdGhpcy5saW5ld2lkdGgmJjEhPT10aGlzLmxpbmV3aWR0aCYmKG4ubGluZXdpZHRoPXRoaXMubGluZXdpZHRoKSx2b2lkIDAhPT10aGlzLmRhc2hTaXplJiYobi5kYXNoU2l6ZT10aGlzLmRhc2hTaXplKSx2b2lkIDAhPT10aGlzLmdhcFNpemUmJihuLmdhcFNpemU9dGhpcy5nYXBTaXplKSx2b2lkIDAhPT10aGlzLnNjYWxlJiYobi5zY2FsZT10aGlzLnNjYWxlKSwhMD09PXRoaXMuZGl0aGVyaW5nJiYobi5kaXRoZXJpbmc9ITApLHRoaXMuYWxwaGFUZXN0PjAmJihuLmFscGhhVGVzdD10aGlzLmFscGhhVGVzdCksITA9PT10aGlzLmFscGhhVG9Db3ZlcmFnZSYmKG4uYWxwaGFUb0NvdmVyYWdlPXRoaXMuYWxwaGFUb0NvdmVyYWdlKSwhMD09PXRoaXMucHJlbXVsdGlwbGllZEFscGhhJiYobi5wcmVtdWx0aXBsaWVkQWxwaGE9dGhpcy5wcmVtdWx0aXBsaWVkQWxwaGEpLCEwPT09dGhpcy53aXJlZnJhbWUmJihuLndpcmVmcmFtZT10aGlzLndpcmVmcmFtZSksdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg+MSYmKG4ud2lyZWZyYW1lTGluZXdpZHRoPXRoaXMud2lyZWZyYW1lTGluZXdpZHRoKSwicm91bmQiIT09dGhpcy53aXJlZnJhbWVMaW5lY2FwJiYobi53aXJlZnJhbWVMaW5lY2FwPXRoaXMud2lyZWZyYW1lTGluZWNhcCksInJvdW5kIiE9PXRoaXMud2lyZWZyYW1lTGluZWpvaW4mJihuLndpcmVmcmFtZUxpbmVqb2luPXRoaXMud2lyZWZyYW1lTGluZWpvaW4pLCEwPT09dGhpcy5mbGF0U2hhZGluZyYmKG4uZmxhdFNoYWRpbmc9dGhpcy5mbGF0U2hhZGluZyksITE9PT10aGlzLnZpc2libGUmJihuLnZpc2libGU9ITEpLCExPT09dGhpcy50b25lTWFwcGVkJiYobi50b25lTWFwcGVkPSExKSwie30iIT09SlNPTi5zdHJpbmdpZnkodGhpcy51c2VyRGF0YSkmJihuLnVzZXJEYXRhPXRoaXMudXNlckRhdGEpLGUpe2NvbnN0IGU9aSh0LnRleHR1cmVzKSxyPWkodC5pbWFnZXMpO2UubGVuZ3RoPjAmJihuLnRleHR1cmVzPWUpLHIubGVuZ3RoPjAmJihuLmltYWdlcz1yKX1yZXR1cm4gbn1jbG9uZSgpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3RvcikuY29weSh0aGlzKX1jb3B5KHQpe3RoaXMubmFtZT10Lm5hbWUsdGhpcy5mb2c9dC5mb2csdGhpcy5ibGVuZGluZz10LmJsZW5kaW5nLHRoaXMuc2lkZT10LnNpZGUsdGhpcy52ZXJ0ZXhDb2xvcnM9dC52ZXJ0ZXhDb2xvcnMsdGhpcy5vcGFjaXR5PXQub3BhY2l0eSx0aGlzLnRyYW5zcGFyZW50PXQudHJhbnNwYXJlbnQsdGhpcy5ibGVuZFNyYz10LmJsZW5kU3JjLHRoaXMuYmxlbmREc3Q9dC5ibGVuZERzdCx0aGlzLmJsZW5kRXF1YXRpb249dC5ibGVuZEVxdWF0aW9uLHRoaXMuYmxlbmRTcmNBbHBoYT10LmJsZW5kU3JjQWxwaGEsdGhpcy5ibGVuZERzdEFscGhhPXQuYmxlbmREc3RBbHBoYSx0aGlzLmJsZW5kRXF1YXRpb25BbHBoYT10LmJsZW5kRXF1YXRpb25BbHBoYSx0aGlzLmRlcHRoRnVuYz10LmRlcHRoRnVuYyx0aGlzLmRlcHRoVGVzdD10LmRlcHRoVGVzdCx0aGlzLmRlcHRoV3JpdGU9dC5kZXB0aFdyaXRlLHRoaXMuc3RlbmNpbFdyaXRlTWFzaz10LnN0ZW5jaWxXcml0ZU1hc2ssdGhpcy5zdGVuY2lsRnVuYz10LnN0ZW5jaWxGdW5jLHRoaXMuc3RlbmNpbFJlZj10LnN0ZW5jaWxSZWYsdGhpcy5zdGVuY2lsRnVuY01hc2s9dC5zdGVuY2lsRnVuY01hc2ssdGhpcy5zdGVuY2lsRmFpbD10LnN0ZW5jaWxGYWlsLHRoaXMuc3RlbmNpbFpGYWlsPXQuc3RlbmNpbFpGYWlsLHRoaXMuc3RlbmNpbFpQYXNzPXQuc3RlbmNpbFpQYXNzLHRoaXMuc3RlbmNpbFdyaXRlPXQuc3RlbmNpbFdyaXRlO2NvbnN0IGU9dC5jbGlwcGluZ1BsYW5lcztsZXQgbj1udWxsO2lmKG51bGwhPT1lKXtjb25zdCB0PWUubGVuZ3RoO249bmV3IEFycmF5KHQpO2ZvcihsZXQgaT0wO2khPT10OysraSluW2ldPWVbaV0uY2xvbmUoKX1yZXR1cm4gdGhpcy5jbGlwcGluZ1BsYW5lcz1uLHRoaXMuY2xpcEludGVyc2VjdGlvbj10LmNsaXBJbnRlcnNlY3Rpb24sdGhpcy5jbGlwU2hhZG93cz10LmNsaXBTaGFkb3dzLHRoaXMuc2hhZG93U2lkZT10LnNoYWRvd1NpZGUsdGhpcy5jb2xvcldyaXRlPXQuY29sb3JXcml0ZSx0aGlzLnByZWNpc2lvbj10LnByZWNpc2lvbix0aGlzLnBvbHlnb25PZmZzZXQ9dC5wb2x5Z29uT2Zmc2V0LHRoaXMucG9seWdvbk9mZnNldEZhY3Rvcj10LnBvbHlnb25PZmZzZXRGYWN0b3IsdGhpcy5wb2x5Z29uT2Zmc2V0VW5pdHM9dC5wb2x5Z29uT2Zmc2V0VW5pdHMsdGhpcy5kaXRoZXJpbmc9dC5kaXRoZXJpbmcsdGhpcy5hbHBoYVRlc3Q9dC5hbHBoYVRlc3QsdGhpcy5hbHBoYVRvQ292ZXJhZ2U9dC5hbHBoYVRvQ292ZXJhZ2UsdGhpcy5wcmVtdWx0aXBsaWVkQWxwaGE9dC5wcmVtdWx0aXBsaWVkQWxwaGEsdGhpcy52aXNpYmxlPXQudmlzaWJsZSx0aGlzLnRvbmVNYXBwZWQ9dC50b25lTWFwcGVkLHRoaXMudXNlckRhdGE9SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0LnVzZXJEYXRhKSksdGhpc31kaXNwb3NlKCl7dGhpcy5kaXNwYXRjaEV2ZW50KHt0eXBlOiJkaXNwb3NlIn0pfXNldCBuZWVkc1VwZGF0ZSh0KXshMD09PXQmJnRoaXMudmVyc2lvbisrfX10NHQucHJvdG90eXBlLmlzTWF0ZXJpYWw9ITA7Y29uc3QgZTR0PXthbGljZWJsdWU6MTU3OTIzODMsYW50aXF1ZXdoaXRlOjE2NDQ0Mzc1LGFxdWE6NjU1MzUsYXF1YW1hcmluZTo4Mzg4NTY0LGF6dXJlOjE1Nzk0MTc1LGJlaWdlOjE2MTE5MjYwLGJpc3F1ZToxNjc3MDI0NCxibGFjazowLGJsYW5jaGVkYWxtb25kOjE2NzcyMDQ1LGJsdWU6MjU1LGJsdWV2aW9sZXQ6OTA1NTIwMixicm93bjoxMDgyNDIzNCxidXJseXdvb2Q6MTQ1OTYyMzEsY2FkZXRibHVlOjYyNjY1MjgsY2hhcnRyZXVzZTo4Mzg4MzUyLGNob2NvbGF0ZToxMzc4OTQ3MCxjb3JhbDoxNjc0NDI3Mixjb3JuZmxvd2VyYmx1ZTo2NTkxOTgxLGNvcm5zaWxrOjE2Nzc1Mzg4LGNyaW1zb246MTQ0MjMxMDAsY3lhbjo2NTUzNSxkYXJrYmx1ZToxMzksZGFya2N5YW46MzU3MjMsZGFya2dvbGRlbnJvZDoxMjA5MjkzOSxkYXJrZ3JheToxMTExOTAxNyxkYXJrZ3JlZW46MjU2MDAsZGFya2dyZXk6MTExMTkwMTcsZGFya2toYWtpOjEyNDMzMjU5LGRhcmttYWdlbnRhOjkxMDk2NDMsZGFya29saXZlZ3JlZW46NTU5Nzk5OSxkYXJrb3JhbmdlOjE2NzQ3NTIwLGRhcmtvcmNoaWQ6MTAwNDAwMTIsZGFya3JlZDo5MTA5NTA0LGRhcmtzYWxtb246MTUzMDg0MTAsZGFya3NlYWdyZWVuOjk0MTk5MTksZGFya3NsYXRlYmx1ZTo0NzM0MzQ3LGRhcmtzbGF0ZWdyYXk6MzEwMDQ5NSxkYXJrc2xhdGVncmV5OjMxMDA0OTUsZGFya3R1cnF1b2lzZTo1Mjk0NSxkYXJrdmlvbGV0Ojk2OTk1MzksZGVlcHBpbms6MTY3MTY5NDcsZGVlcHNreWJsdWU6NDkxNTEsZGltZ3JheTo2OTA4MjY1LGRpbWdyZXk6NjkwODI2NSxkb2RnZXJibHVlOjIwMDMxOTksZmlyZWJyaWNrOjExNjc0MTQ2LGZsb3JhbHdoaXRlOjE2Nzc1OTIwLGZvcmVzdGdyZWVuOjIyNjM4NDIsZnVjaHNpYToxNjcxMTkzNSxnYWluc2Jvcm86MTQ0NzQ0NjAsZ2hvc3R3aGl0ZToxNjMxNjY3MSxnb2xkOjE2NzY2NzIwLGdvbGRlbnJvZDoxNDMyOTEyMCxncmF5Ojg0MjE1MDQsZ3JlZW46MzI3NjgsZ3JlZW55ZWxsb3c6MTE0MDMwNTUsZ3JleTo4NDIxNTA0LGhvbmV5ZGV3OjE1Nzk0MTYwLGhvdHBpbms6MTY3Mzg3NDAsaW5kaWFucmVkOjEzNDU4NTI0LGluZGlnbzo0OTE1MzMwLGl2b3J5OjE2Nzc3MjAwLGtoYWtpOjE1Nzg3NjYwLGxhdmVuZGVyOjE1MTMyNDEwLGxhdmVuZGVyYmx1c2g6MTY3NzMzNjUsbGF3bmdyZWVuOjgxOTA5NzYsbGVtb25jaGlmZm9uOjE2Nzc1ODg1LGxpZ2h0Ymx1ZToxMTM5MzI1NCxsaWdodGNvcmFsOjE1NzYxNTM2LGxpZ2h0Y3lhbjoxNDc0NTU5OSxsaWdodGdvbGRlbnJvZHllbGxvdzoxNjQ0ODIxMCxsaWdodGdyYXk6MTM4ODIzMjMsbGlnaHRncmVlbjo5NDk4MjU2LGxpZ2h0Z3JleToxMzg4MjMyMyxsaWdodHBpbms6MTY3NTg0NjUsbGlnaHRzYWxtb246MTY3NTI3NjIsbGlnaHRzZWFncmVlbjoyMTQyODkwLGxpZ2h0c2t5Ymx1ZTo4OTAwMzQ2LGxpZ2h0c2xhdGVncmF5Ojc4MzM3NTMsbGlnaHRzbGF0ZWdyZXk6NzgzMzc1MyxsaWdodHN0ZWVsYmx1ZToxMTU4NDczNCxsaWdodHllbGxvdzoxNjc3NzE4NCxsaW1lOjY1MjgwLGxpbWVncmVlbjozMzI5MzMwLGxpbmVuOjE2NDQ1NjcwLG1hZ2VudGE6MTY3MTE5MzUsbWFyb29uOjgzODg2MDgsbWVkaXVtYXF1YW1hcmluZTo2NzM3MzIyLG1lZGl1bWJsdWU6MjA1LG1lZGl1bW9yY2hpZDoxMjIxMTY2NyxtZWRpdW1wdXJwbGU6OTY2MjY4MyxtZWRpdW1zZWFncmVlbjozOTc4MDk3LG1lZGl1bXNsYXRlYmx1ZTo4MDg3NzkwLG1lZGl1bXNwcmluZ2dyZWVuOjY0MTU0LG1lZGl1bXR1cnF1b2lzZTo0NzcyMzAwLG1lZGl1bXZpb2xldHJlZDoxMzA0NzE3MyxtaWRuaWdodGJsdWU6MTY0NDkxMixtaW50Y3JlYW06MTYxMjE4NTAsbWlzdHlyb3NlOjE2NzcwMjczLG1vY2Nhc2luOjE2NzcwMjI5LG5hdmFqb3doaXRlOjE2NzY4Njg1LG5hdnk6MTI4LG9sZGxhY2U6MTY2NDM1NTgsb2xpdmU6ODQyMTM3NixvbGl2ZWRyYWI6NzA0ODczOSxvcmFuZ2U6MTY3NTM5MjAsb3JhbmdlcmVkOjE2NzI5MzQ0LG9yY2hpZDoxNDMxNTczNCxwYWxlZ29sZGVucm9kOjE1NjU3MTMwLHBhbGVncmVlbjoxMDAyNTg4MCxwYWxldHVycXVvaXNlOjExNTI5OTY2LHBhbGV2aW9sZXRyZWQ6MTQzODEyMDMscGFwYXlhd2hpcDoxNjc3MzA3NyxwZWFjaHB1ZmY6MTY3Njc2NzMscGVydToxMzQ2ODk5MSxwaW5rOjE2NzYxMDM1LHBsdW06MTQ1MjQ2MzcscG93ZGVyYmx1ZToxMTU5MTkxMCxwdXJwbGU6ODM4ODczNixyZWJlY2NhcHVycGxlOjY2OTc4ODEscmVkOjE2NzExNjgwLHJvc3licm93bjoxMjM1NzUxOSxyb3lhbGJsdWU6NDI4Njk0NSxzYWRkbGVicm93bjo5MTI3MTg3LHNhbG1vbjoxNjQxNjg4MixzYW5keWJyb3duOjE2MDMyODY0LHNlYWdyZWVuOjMwNTAzMjcsc2Vhc2hlbGw6MTY3NzQ2Mzgsc2llbm5hOjEwNTA2Nzk3LHNpbHZlcjoxMjYzMjI1Nixza3libHVlOjg5MDAzMzEsc2xhdGVibHVlOjY5NzAwNjEsc2xhdGVncmF5OjczNzI5NDQsc2xhdGVncmV5OjczNzI5NDQsc25vdzoxNjc3NTkzMCxzcHJpbmdncmVlbjo2NTQwNyxzdGVlbGJsdWU6NDYyMDk4MCx0YW46MTM4MDg3ODAsdGVhbDozMjg5Nix0aGlzdGxlOjE0MjA0ODg4LHRvbWF0bzoxNjczNzA5NSx0dXJxdW9pc2U6NDI1MTg1Nix2aW9sZXQ6MTU2MzEwODYsd2hlYXQ6MTYxMTMzMzEsd2hpdGU6MTY3NzcyMTUsd2hpdGVzbW9rZToxNjExOTI4NSx5ZWxsb3c6MTY3NzY5NjAseWVsbG93Z3JlZW46MTAxNDUwNzR9LG40dD17aDowLHM6MCxsOjB9LGk0dD17aDowLHM6MCxsOjB9O2Z1bmN0aW9uIHI0dCh0LGUsbil7cmV0dXJuIG48MCYmKG4rPTEpLG4+MSYmKG4tPTEpLG48MS82P3QrNiooZS10KSpuOm48LjU/ZTpuPDIvMz90KzYqKGUtdCkqKDIvMy1uKTp0fWZ1bmN0aW9uIG80dCh0KXtyZXR1cm4gdDwuMDQwNDU/LjA3NzM5OTM4MDgqdDpNYXRoLnBvdyguOTQ3ODY3Mjk4Nip0Ky4wNTIxMzI3MDE0LDIuNCl9ZnVuY3Rpb24gYTR0KHQpe3JldHVybiB0PC4wMDMxMzA4PzEyLjkyKnQ6MS4wNTUqTWF0aC5wb3codCwuNDE2NjYpLS4wNTV9Y2xhc3MgczR0e2NvbnN0cnVjdG9yKHQsZSxuKXtyZXR1cm4gdm9pZCAwPT09ZSYmdm9pZCAwPT09bj90aGlzLnNldCh0KTp0aGlzLnNldFJHQih0LGUsbil9c2V0KHQpe3JldHVybiB0JiZ0LmlzQ29sb3I/dGhpcy5jb3B5KHQpOiJudW1iZXIiPT10eXBlb2YgdD90aGlzLnNldEhleCh0KToic3RyaW5nIj09dHlwZW9mIHQmJnRoaXMuc2V0U3R5bGUodCksdGhpc31zZXRTY2FsYXIodCl7cmV0dXJuIHRoaXMucj10LHRoaXMuZz10LHRoaXMuYj10LHRoaXN9c2V0SGV4KHQpe3JldHVybiB0PU1hdGguZmxvb3IodCksdGhpcy5yPSh0Pj4xNiYyNTUpLzI1NSx0aGlzLmc9KHQ+PjgmMjU1KS8yNTUsdGhpcy5iPSgyNTUmdCkvMjU1LHRoaXN9c2V0UkdCKHQsZSxuKXtyZXR1cm4gdGhpcy5yPXQsdGhpcy5nPWUsdGhpcy5iPW4sdGhpc31zZXRIU0wodCxlLG4pe2lmKHQ9bDV0KHQsMSksZT1zNXQoZSwwLDEpLG49czV0KG4sMCwxKSwwPT09ZSl0aGlzLnI9dGhpcy5nPXRoaXMuYj1uO2Vsc2V7Y29uc3QgaT1uPD0uNT9uKigxK2UpOm4rZS1uKmUscj0yKm4taTt0aGlzLnI9cjR0KHIsaSx0KzEvMyksdGhpcy5nPXI0dChyLGksdCksdGhpcy5iPXI0dChyLGksdC0xLzMpfXJldHVybiB0aGlzfXNldFN0eWxlKHQpe2Z1bmN0aW9uIGUoZSl7dm9pZCAwIT09ZSYmcGFyc2VGbG9hdChlKTwxJiZjb25zb2xlLndhcm4oIlRIUkVFLkNvbG9yOiBBbHBoYSBjb21wb25lbnQgb2YgIit0KyIgd2lsbCBiZSBpZ25vcmVkLiIpfWxldCBuO2lmKG49L14oKD86cmdifGhzbClhPylcKChbXlwpXSopXCkvLmV4ZWModCkpe2xldCB0O2NvbnN0IGk9blsyXTtzd2l0Y2goblsxXSl7Y2FzZSJyZ2IiOmNhc2UicmdiYSI6aWYodD0vXlxzKihcZCspXHMqLFxzKihcZCspXHMqLFxzKihcZCspXHMqKD86LFxzKihcZCpcLj9cZCspXHMqKT8kLy5leGVjKGkpKXJldHVybiB0aGlzLnI9TWF0aC5taW4oMjU1LHBhcnNlSW50KHRbMV0sMTApKS8yNTUsdGhpcy5nPU1hdGgubWluKDI1NSxwYXJzZUludCh0WzJdLDEwKSkvMjU1LHRoaXMuYj1NYXRoLm1pbigyNTUscGFyc2VJbnQodFszXSwxMCkpLzI1NSxlKHRbNF0pLHRoaXM7aWYodD0vXlxzKihcZCspXCVccyosXHMqKFxkKylcJVxzKixccyooXGQrKVwlXHMqKD86LFxzKihcZCpcLj9cZCspXHMqKT8kLy5leGVjKGkpKXJldHVybiB0aGlzLnI9TWF0aC5taW4oMTAwLHBhcnNlSW50KHRbMV0sMTApKS8xMDAsdGhpcy5nPU1hdGgubWluKDEwMCxwYXJzZUludCh0WzJdLDEwKSkvMTAwLHRoaXMuYj1NYXRoLm1pbigxMDAscGFyc2VJbnQodFszXSwxMCkpLzEwMCxlKHRbNF0pLHRoaXM7YnJlYWs7Y2FzZSJoc2wiOmNhc2UiaHNsYSI6aWYodD0vXlxzKihcZCpcLj9cZCspXHMqLFxzKihcZCspXCVccyosXHMqKFxkKylcJVxzKig/OixccyooXGQqXC4/XGQrKVxzKik/JC8uZXhlYyhpKSl7Y29uc3Qgbj1wYXJzZUZsb2F0KHRbMV0pLzM2MCxpPXBhcnNlSW50KHRbMl0sMTApLzEwMCxyPXBhcnNlSW50KHRbM10sMTApLzEwMDtyZXR1cm4gZSh0WzRdKSx0aGlzLnNldEhTTChuLGkscil9fX1lbHNlIGlmKG49L15cIyhbQS1GYS1mXGRdKykkLy5leGVjKHQpKXtjb25zdCB0PW5bMV0sZT10Lmxlbmd0aDtpZigzPT09ZSlyZXR1cm4gdGhpcy5yPXBhcnNlSW50KHQuY2hhckF0KDApK3QuY2hhckF0KDApLDE2KS8yNTUsdGhpcy5nPXBhcnNlSW50KHQuY2hhckF0KDEpK3QuY2hhckF0KDEpLDE2KS8yNTUsdGhpcy5iPXBhcnNlSW50KHQuY2hhckF0KDIpK3QuY2hhckF0KDIpLDE2KS8yNTUsdGhpcztpZig2PT09ZSlyZXR1cm4gdGhpcy5yPXBhcnNlSW50KHQuY2hhckF0KDApK3QuY2hhckF0KDEpLDE2KS8yNTUsdGhpcy5nPXBhcnNlSW50KHQuY2hhckF0KDIpK3QuY2hhckF0KDMpLDE2KS8yNTUsdGhpcy5iPXBhcnNlSW50KHQuY2hhckF0KDQpK3QuY2hhckF0KDUpLDE2KS8yNTUsdGhpc31yZXR1cm4gdCYmdC5sZW5ndGg+MD90aGlzLnNldENvbG9yTmFtZSh0KTp0aGlzfXNldENvbG9yTmFtZSh0KXtjb25zdCBlPWU0dFt0LnRvTG93ZXJDYXNlKCldO3JldHVybiB2b2lkIDAhPT1lP3RoaXMuc2V0SGV4KGUpOmNvbnNvbGUud2FybigiVEhSRUUuQ29sb3I6IFVua25vd24gY29sb3IgIit0KSx0aGlzfWNsb25lKCl7cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKHRoaXMucix0aGlzLmcsdGhpcy5iKX1jb3B5KHQpe3JldHVybiB0aGlzLnI9dC5yLHRoaXMuZz10LmcsdGhpcy5iPXQuYix0aGlzfWNvcHlHYW1tYVRvTGluZWFyKHQsZT0yKXtyZXR1cm4gdGhpcy5yPU1hdGgucG93KHQucixlKSx0aGlzLmc9TWF0aC5wb3codC5nLGUpLHRoaXMuYj1NYXRoLnBvdyh0LmIsZSksdGhpc31jb3B5TGluZWFyVG9HYW1tYSh0LGU9Mil7Y29uc3Qgbj1lPjA/MS9lOjE7cmV0dXJuIHRoaXMucj1NYXRoLnBvdyh0LnIsbiksdGhpcy5nPU1hdGgucG93KHQuZyxuKSx0aGlzLmI9TWF0aC5wb3codC5iLG4pLHRoaXN9Y29udmVydEdhbW1hVG9MaW5lYXIodCl7cmV0dXJuIHRoaXMuY29weUdhbW1hVG9MaW5lYXIodGhpcyx0KSx0aGlzfWNvbnZlcnRMaW5lYXJUb0dhbW1hKHQpe3JldHVybiB0aGlzLmNvcHlMaW5lYXJUb0dhbW1hKHRoaXMsdCksdGhpc31jb3B5U1JHQlRvTGluZWFyKHQpe3JldHVybiB0aGlzLnI9bzR0KHQuciksdGhpcy5nPW80dCh0LmcpLHRoaXMuYj1vNHQodC5iKSx0aGlzfWNvcHlMaW5lYXJUb1NSR0IodCl7cmV0dXJuIHRoaXMucj1hNHQodC5yKSx0aGlzLmc9YTR0KHQuZyksdGhpcy5iPWE0dCh0LmIpLHRoaXN9Y29udmVydFNSR0JUb0xpbmVhcigpe3JldHVybiB0aGlzLmNvcHlTUkdCVG9MaW5lYXIodGhpcyksdGhpc31jb252ZXJ0TGluZWFyVG9TUkdCKCl7cmV0dXJuIHRoaXMuY29weUxpbmVhclRvU1JHQih0aGlzKSx0aGlzfWdldEhleCgpe3JldHVybiAyNTUqdGhpcy5yPDwxNl4yNTUqdGhpcy5nPDw4XjI1NSp0aGlzLmI8PDB9Z2V0SGV4U3RyaW5nKCl7cmV0dXJuKCIwMDAwMDAiK3RoaXMuZ2V0SGV4KCkudG9TdHJpbmcoMTYpKS5zbGljZSgtNil9Z2V0SFNMKHQpe2NvbnN0IGU9dGhpcy5yLG49dGhpcy5nLGk9dGhpcy5iLHI9TWF0aC5tYXgoZSxuLGkpLG89TWF0aC5taW4oZSxuLGkpO2xldCBhLHM7Y29uc3QgbD0obytyKS8yO2lmKG89PT1yKWE9MCxzPTA7ZWxzZXtjb25zdCB0PXItbztzd2l0Y2gocz1sPD0uNT90LyhyK28pOnQvKDItci1vKSxyKXtjYXNlIGU6YT0obi1pKS90KyhuPGk/NjowKTticmVhaztjYXNlIG46YT0oaS1lKS90KzI7YnJlYWs7Y2FzZSBpOmE9KGUtbikvdCs0fWEvPTZ9cmV0dXJuIHQuaD1hLHQucz1zLHQubD1sLHR9Z2V0U3R5bGUoKXtyZXR1cm4icmdiKCIrKDI1NSp0aGlzLnJ8MCkrIiwiKygyNTUqdGhpcy5nfDApKyIsIisoMjU1KnRoaXMuYnwwKSsiKSJ9b2Zmc2V0SFNMKHQsZSxuKXtyZXR1cm4gdGhpcy5nZXRIU0wobjR0KSxuNHQuaCs9dCxuNHQucys9ZSxuNHQubCs9bix0aGlzLnNldEhTTChuNHQuaCxuNHQucyxuNHQubCksdGhpc31hZGQodCl7cmV0dXJuIHRoaXMucis9dC5yLHRoaXMuZys9dC5nLHRoaXMuYis9dC5iLHRoaXN9YWRkQ29sb3JzKHQsZSl7cmV0dXJuIHRoaXMucj10LnIrZS5yLHRoaXMuZz10LmcrZS5nLHRoaXMuYj10LmIrZS5iLHRoaXN9YWRkU2NhbGFyKHQpe3JldHVybiB0aGlzLnIrPXQsdGhpcy5nKz10LHRoaXMuYis9dCx0aGlzfXN1Yih0KXtyZXR1cm4gdGhpcy5yPU1hdGgubWF4KDAsdGhpcy5yLXQuciksdGhpcy5nPU1hdGgubWF4KDAsdGhpcy5nLXQuZyksdGhpcy5iPU1hdGgubWF4KDAsdGhpcy5iLXQuYiksdGhpc31tdWx0aXBseSh0KXtyZXR1cm4gdGhpcy5yKj10LnIsdGhpcy5nKj10LmcsdGhpcy5iKj10LmIsdGhpc31tdWx0aXBseVNjYWxhcih0KXtyZXR1cm4gdGhpcy5yKj10LHRoaXMuZyo9dCx0aGlzLmIqPXQsdGhpc31sZXJwKHQsZSl7cmV0dXJuIHRoaXMucis9KHQuci10aGlzLnIpKmUsdGhpcy5nKz0odC5nLXRoaXMuZykqZSx0aGlzLmIrPSh0LmItdGhpcy5iKSplLHRoaXN9bGVycENvbG9ycyh0LGUsbil7cmV0dXJuIHRoaXMucj10LnIrKGUuci10LnIpKm4sdGhpcy5nPXQuZysoZS5nLXQuZykqbix0aGlzLmI9dC5iKyhlLmItdC5iKSpuLHRoaXN9bGVycEhTTCh0LGUpe3RoaXMuZ2V0SFNMKG40dCksdC5nZXRIU0woaTR0KTtjb25zdCBuPWM1dChuNHQuaCxpNHQuaCxlKSxpPWM1dChuNHQucyxpNHQucyxlKSxyPWM1dChuNHQubCxpNHQubCxlKTtyZXR1cm4gdGhpcy5zZXRIU0wobixpLHIpLHRoaXN9ZXF1YWxzKHQpe3JldHVybiB0LnI9PT10aGlzLnImJnQuZz09PXRoaXMuZyYmdC5iPT09dGhpcy5ifWZyb21BcnJheSh0LGU9MCl7cmV0dXJuIHRoaXMucj10W2VdLHRoaXMuZz10W2UrMV0sdGhpcy5iPXRbZSsyXSx0aGlzfXRvQXJyYXkodD1bXSxlPTApe3JldHVybiB0W2VdPXRoaXMucix0W2UrMV09dGhpcy5nLHRbZSsyXT10aGlzLmIsdH1mcm9tQnVmZmVyQXR0cmlidXRlKHQsZSl7cmV0dXJuIHRoaXMucj10LmdldFgoZSksdGhpcy5nPXQuZ2V0WShlKSx0aGlzLmI9dC5nZXRaKGUpLCEwPT09dC5ub3JtYWxpemVkJiYodGhpcy5yLz0yNTUsdGhpcy5nLz0yNTUsdGhpcy5iLz0yNTUpLHRoaXN9dG9KU09OKCl7cmV0dXJuIHRoaXMuZ2V0SGV4KCl9fXM0dC5OQU1FUz1lNHQsczR0LnByb3RvdHlwZS5pc0NvbG9yPSEwLHM0dC5wcm90b3R5cGUucj0xLHM0dC5wcm90b3R5cGUuZz0xLHM0dC5wcm90b3R5cGUuYj0xO2NsYXNzIGw0dCBleHRlbmRzIHQ0dHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMudHlwZT0iTWVzaEJhc2ljTWF0ZXJpYWwiLHRoaXMuY29sb3I9bmV3IHM0dCgxNjc3NzIxNSksdGhpcy5tYXA9bnVsbCx0aGlzLmxpZ2h0TWFwPW51bGwsdGhpcy5saWdodE1hcEludGVuc2l0eT0xLHRoaXMuYW9NYXA9bnVsbCx0aGlzLmFvTWFwSW50ZW5zaXR5PTEsdGhpcy5zcGVjdWxhck1hcD1udWxsLHRoaXMuYWxwaGFNYXA9bnVsbCx0aGlzLmVudk1hcD1udWxsLHRoaXMuY29tYmluZT0wLHRoaXMucmVmbGVjdGl2aXR5PTEsdGhpcy5yZWZyYWN0aW9uUmF0aW89Ljk4LHRoaXMud2lyZWZyYW1lPSExLHRoaXMud2lyZWZyYW1lTGluZXdpZHRoPTEsdGhpcy53aXJlZnJhbWVMaW5lY2FwPSJyb3VuZCIsdGhpcy53aXJlZnJhbWVMaW5lam9pbj0icm91bmQiLHRoaXMuc2V0VmFsdWVzKHQpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5jb2xvci5jb3B5KHQuY29sb3IpLHRoaXMubWFwPXQubWFwLHRoaXMubGlnaHRNYXA9dC5saWdodE1hcCx0aGlzLmxpZ2h0TWFwSW50ZW5zaXR5PXQubGlnaHRNYXBJbnRlbnNpdHksdGhpcy5hb01hcD10LmFvTWFwLHRoaXMuYW9NYXBJbnRlbnNpdHk9dC5hb01hcEludGVuc2l0eSx0aGlzLnNwZWN1bGFyTWFwPXQuc3BlY3VsYXJNYXAsdGhpcy5hbHBoYU1hcD10LmFscGhhTWFwLHRoaXMuZW52TWFwPXQuZW52TWFwLHRoaXMuY29tYmluZT10LmNvbWJpbmUsdGhpcy5yZWZsZWN0aXZpdHk9dC5yZWZsZWN0aXZpdHksdGhpcy5yZWZyYWN0aW9uUmF0aW89dC5yZWZyYWN0aW9uUmF0aW8sdGhpcy53aXJlZnJhbWU9dC53aXJlZnJhbWUsdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9dC53aXJlZnJhbWVMaW5ld2lkdGgsdGhpcy53aXJlZnJhbWVMaW5lY2FwPXQud2lyZWZyYW1lTGluZWNhcCx0aGlzLndpcmVmcmFtZUxpbmVqb2luPXQud2lyZWZyYW1lTGluZWpvaW4sdGhpc319bDR0LnByb3RvdHlwZS5pc01lc2hCYXNpY01hdGVyaWFsPSEwO2NvbnN0IGM0dD1uZXcgSDV0LHU0dD1uZXcgQzV0O2NsYXNzIGg0dHtjb25zdHJ1Y3Rvcih0LGUsbil7aWYoQXJyYXkuaXNBcnJheSh0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJUSFJFRS5CdWZmZXJBdHRyaWJ1dGU6IGFycmF5IHNob3VsZCBiZSBhIFR5cGVkIEFycmF5LiIpO3RoaXMubmFtZT0iIix0aGlzLmFycmF5PXQsdGhpcy5pdGVtU2l6ZT1lLHRoaXMuY291bnQ9dm9pZCAwIT09dD90Lmxlbmd0aC9lOjAsdGhpcy5ub3JtYWxpemVkPSEwPT09bix0aGlzLnVzYWdlPUoydCx0aGlzLnVwZGF0ZVJhbmdlPXtvZmZzZXQ6MCxjb3VudDotMX0sdGhpcy52ZXJzaW9uPTB9b25VcGxvYWRDYWxsYmFjaygpe31zZXQgbmVlZHNVcGRhdGUodCl7ITA9PT10JiZ0aGlzLnZlcnNpb24rK31zZXRVc2FnZSh0KXtyZXR1cm4gdGhpcy51c2FnZT10LHRoaXN9Y29weSh0KXtyZXR1cm4gdGhpcy5uYW1lPXQubmFtZSx0aGlzLmFycmF5PW5ldyB0LmFycmF5LmNvbnN0cnVjdG9yKHQuYXJyYXkpLHRoaXMuaXRlbVNpemU9dC5pdGVtU2l6ZSx0aGlzLmNvdW50PXQuY291bnQsdGhpcy5ub3JtYWxpemVkPXQubm9ybWFsaXplZCx0aGlzLnVzYWdlPXQudXNhZ2UsdGhpc31jb3B5QXQodCxlLG4pe3QqPXRoaXMuaXRlbVNpemUsbio9ZS5pdGVtU2l6ZTtmb3IobGV0IGk9MCxyPXRoaXMuaXRlbVNpemU7aTxyO2krKyl0aGlzLmFycmF5W3QraV09ZS5hcnJheVtuK2ldO3JldHVybiB0aGlzfWNvcHlBcnJheSh0KXtyZXR1cm4gdGhpcy5hcnJheS5zZXQodCksdGhpc31jb3B5Q29sb3JzQXJyYXkodCl7Y29uc3QgZT10aGlzLmFycmF5O2xldCBuPTA7Zm9yKGxldCBpPTAscj10Lmxlbmd0aDtpPHI7aSsrKXtsZXQgcj10W2ldO3ZvaWQgMD09PXImJihjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckF0dHJpYnV0ZS5jb3B5Q29sb3JzQXJyYXkoKTogY29sb3IgaXMgdW5kZWZpbmVkIixpKSxyPW5ldyBzNHQpLGVbbisrXT1yLnIsZVtuKytdPXIuZyxlW24rK109ci5ifXJldHVybiB0aGlzfWNvcHlWZWN0b3Iyc0FycmF5KHQpe2NvbnN0IGU9dGhpcy5hcnJheTtsZXQgbj0wO2ZvcihsZXQgaT0wLHI9dC5sZW5ndGg7aTxyO2krKyl7bGV0IHI9dFtpXTt2b2lkIDA9PT1yJiYoY29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJBdHRyaWJ1dGUuY29weVZlY3RvcjJzQXJyYXkoKTogdmVjdG9yIGlzIHVuZGVmaW5lZCIsaSkscj1uZXcgQzV0KSxlW24rK109ci54LGVbbisrXT1yLnl9cmV0dXJuIHRoaXN9Y29weVZlY3RvcjNzQXJyYXkodCl7Y29uc3QgZT10aGlzLmFycmF5O2xldCBuPTA7Zm9yKGxldCBpPTAscj10Lmxlbmd0aDtpPHI7aSsrKXtsZXQgcj10W2ldO3ZvaWQgMD09PXImJihjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckF0dHJpYnV0ZS5jb3B5VmVjdG9yM3NBcnJheSgpOiB2ZWN0b3IgaXMgdW5kZWZpbmVkIixpKSxyPW5ldyBINXQpLGVbbisrXT1yLngsZVtuKytdPXIueSxlW24rK109ci56fXJldHVybiB0aGlzfWNvcHlWZWN0b3I0c0FycmF5KHQpe2NvbnN0IGU9dGhpcy5hcnJheTtsZXQgbj0wO2ZvcihsZXQgaT0wLHI9dC5sZW5ndGg7aTxyO2krKyl7bGV0IHI9dFtpXTt2b2lkIDA9PT1yJiYoY29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJBdHRyaWJ1dGUuY29weVZlY3RvcjRzQXJyYXkoKTogdmVjdG9yIGlzIHVuZGVmaW5lZCIsaSkscj1uZXcgUjV0KSxlW24rK109ci54LGVbbisrXT1yLnksZVtuKytdPXIueixlW24rK109ci53fXJldHVybiB0aGlzfWFwcGx5TWF0cml4Myh0KXtpZigyPT09dGhpcy5pdGVtU2l6ZSlmb3IobGV0IGU9MCxuPXRoaXMuY291bnQ7ZTxuO2UrKyl1NHQuZnJvbUJ1ZmZlckF0dHJpYnV0ZSh0aGlzLGUpLHU0dC5hcHBseU1hdHJpeDModCksdGhpcy5zZXRYWShlLHU0dC54LHU0dC55KTtlbHNlIGlmKDM9PT10aGlzLml0ZW1TaXplKWZvcihsZXQgZT0wLG49dGhpcy5jb3VudDtlPG47ZSsrKWM0dC5mcm9tQnVmZmVyQXR0cmlidXRlKHRoaXMsZSksYzR0LmFwcGx5TWF0cml4Myh0KSx0aGlzLnNldFhZWihlLGM0dC54LGM0dC55LGM0dC56KTtyZXR1cm4gdGhpc31hcHBseU1hdHJpeDQodCl7Zm9yKGxldCBlPTAsbj10aGlzLmNvdW50O2U8bjtlKyspYzR0Lng9dGhpcy5nZXRYKGUpLGM0dC55PXRoaXMuZ2V0WShlKSxjNHQuej10aGlzLmdldFooZSksYzR0LmFwcGx5TWF0cml4NCh0KSx0aGlzLnNldFhZWihlLGM0dC54LGM0dC55LGM0dC56KTtyZXR1cm4gdGhpc31hcHBseU5vcm1hbE1hdHJpeCh0KXtmb3IobGV0IGU9MCxuPXRoaXMuY291bnQ7ZTxuO2UrKyljNHQueD10aGlzLmdldFgoZSksYzR0Lnk9dGhpcy5nZXRZKGUpLGM0dC56PXRoaXMuZ2V0WihlKSxjNHQuYXBwbHlOb3JtYWxNYXRyaXgodCksdGhpcy5zZXRYWVooZSxjNHQueCxjNHQueSxjNHQueik7cmV0dXJuIHRoaXN9dHJhbnNmb3JtRGlyZWN0aW9uKHQpe2ZvcihsZXQgZT0wLG49dGhpcy5jb3VudDtlPG47ZSsrKWM0dC54PXRoaXMuZ2V0WChlKSxjNHQueT10aGlzLmdldFkoZSksYzR0Lno9dGhpcy5nZXRaKGUpLGM0dC50cmFuc2Zvcm1EaXJlY3Rpb24odCksdGhpcy5zZXRYWVooZSxjNHQueCxjNHQueSxjNHQueik7cmV0dXJuIHRoaXN9c2V0KHQsZT0wKXtyZXR1cm4gdGhpcy5hcnJheS5zZXQodCxlKSx0aGlzfWdldFgodCl7cmV0dXJuIHRoaXMuYXJyYXlbdCp0aGlzLml0ZW1TaXplXX1zZXRYKHQsZSl7cmV0dXJuIHRoaXMuYXJyYXlbdCp0aGlzLml0ZW1TaXplXT1lLHRoaXN9Z2V0WSh0KXtyZXR1cm4gdGhpcy5hcnJheVt0KnRoaXMuaXRlbVNpemUrMV19c2V0WSh0LGUpe3JldHVybiB0aGlzLmFycmF5W3QqdGhpcy5pdGVtU2l6ZSsxXT1lLHRoaXN9Z2V0Wih0KXtyZXR1cm4gdGhpcy5hcnJheVt0KnRoaXMuaXRlbVNpemUrMl19c2V0Wih0LGUpe3JldHVybiB0aGlzLmFycmF5W3QqdGhpcy5pdGVtU2l6ZSsyXT1lLHRoaXN9Z2V0Vyh0KXtyZXR1cm4gdGhpcy5hcnJheVt0KnRoaXMuaXRlbVNpemUrM119c2V0Vyh0LGUpe3JldHVybiB0aGlzLmFycmF5W3QqdGhpcy5pdGVtU2l6ZSszXT1lLHRoaXN9c2V0WFkodCxlLG4pe3JldHVybiB0aGlzLmFycmF5Wyh0Kj10aGlzLml0ZW1TaXplKSswXT1lLHRoaXMuYXJyYXlbdCsxXT1uLHRoaXN9c2V0WFlaKHQsZSxuLGkpe3JldHVybiB0aGlzLmFycmF5Wyh0Kj10aGlzLml0ZW1TaXplKSswXT1lLHRoaXMuYXJyYXlbdCsxXT1uLHRoaXMuYXJyYXlbdCsyXT1pLHRoaXN9c2V0WFlaVyh0LGUsbixpLHIpe3JldHVybiB0aGlzLmFycmF5Wyh0Kj10aGlzLml0ZW1TaXplKSswXT1lLHRoaXMuYXJyYXlbdCsxXT1uLHRoaXMuYXJyYXlbdCsyXT1pLHRoaXMuYXJyYXlbdCszXT1yLHRoaXN9b25VcGxvYWQodCl7cmV0dXJuIHRoaXMub25VcGxvYWRDYWxsYmFjaz10LHRoaXN9Y2xvbmUoKXtyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IodGhpcy5hcnJheSx0aGlzLml0ZW1TaXplKS5jb3B5KHRoaXMpfXRvSlNPTigpe2NvbnN0IHQ9e2l0ZW1TaXplOnRoaXMuaXRlbVNpemUsdHlwZTp0aGlzLmFycmF5LmNvbnN0cnVjdG9yLm5hbWUsYXJyYXk6QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodGhpcy5hcnJheSksbm9ybWFsaXplZDp0aGlzLm5vcm1hbGl6ZWR9O3JldHVybiIiIT09dGhpcy5uYW1lJiYodC5uYW1lPXRoaXMubmFtZSksdGhpcy51c2FnZSE9PUoydCYmKHQudXNhZ2U9dGhpcy51c2FnZSksMD09PXRoaXMudXBkYXRlUmFuZ2Uub2Zmc2V0JiYtMT09PXRoaXMudXBkYXRlUmFuZ2UuY291bnR8fCh0LnVwZGF0ZVJhbmdlPXRoaXMudXBkYXRlUmFuZ2UpLHR9fWg0dC5wcm90b3R5cGUuaXNCdWZmZXJBdHRyaWJ1dGU9ITA7Y2xhc3MgZDR0IGV4dGVuZHMgaDR0e2NvbnN0cnVjdG9yKHQsZSxuKXtzdXBlcihuZXcgSW50OEFycmF5KHQpLGUsbil9fWNsYXNzIHA0dCBleHRlbmRzIGg0dHtjb25zdHJ1Y3Rvcih0LGUsbil7c3VwZXIobmV3IFVpbnQ4QXJyYXkodCksZSxuKX19Y2xhc3MgZjR0IGV4dGVuZHMgaDR0e2NvbnN0cnVjdG9yKHQsZSxuKXtzdXBlcihuZXcgVWludDhDbGFtcGVkQXJyYXkodCksZSxuKX19Y2xhc3MgbTR0IGV4dGVuZHMgaDR0e2NvbnN0cnVjdG9yKHQsZSxuKXtzdXBlcihuZXcgSW50MTZBcnJheSh0KSxlLG4pfX1jbGFzcyBnNHQgZXh0ZW5kcyBoNHR7Y29uc3RydWN0b3IodCxlLG4pe3N1cGVyKG5ldyBVaW50MTZBcnJheSh0KSxlLG4pfX1jbGFzcyBfNHQgZXh0ZW5kcyBoNHR7Y29uc3RydWN0b3IodCxlLG4pe3N1cGVyKG5ldyBJbnQzMkFycmF5KHQpLGUsbil9fWNsYXNzIHk0dCBleHRlbmRzIGg0dHtjb25zdHJ1Y3Rvcih0LGUsbil7c3VwZXIobmV3IFVpbnQzMkFycmF5KHQpLGUsbil9fWNsYXNzIHY0dCBleHRlbmRzIGg0dHtjb25zdHJ1Y3Rvcih0LGUsbil7c3VwZXIobmV3IFVpbnQxNkFycmF5KHQpLGUsbil9fXY0dC5wcm90b3R5cGUuaXNGbG9hdDE2QnVmZmVyQXR0cmlidXRlPSEwO2NsYXNzIGI0dCBleHRlbmRzIGg0dHtjb25zdHJ1Y3Rvcih0LGUsbil7c3VwZXIobmV3IEZsb2F0MzJBcnJheSh0KSxlLG4pfX1jbGFzcyB4NHQgZXh0ZW5kcyBoNHR7Y29uc3RydWN0b3IodCxlLG4pe3N1cGVyKG5ldyBGbG9hdDY0QXJyYXkodCksZSxuKX19ZnVuY3Rpb24gdzR0KHQpe2lmKDA9PT10Lmxlbmd0aClyZXR1cm4tMS8wO2xldCBlPXRbMF07Zm9yKGxldCBuPTEsaT10Lmxlbmd0aDtuPGk7KytuKXRbbl0+ZSYmKGU9dFtuXSk7cmV0dXJuIGV9Y29uc3QgUzR0PXtJbnQ4QXJyYXk6SW50OEFycmF5LFVpbnQ4QXJyYXk6VWludDhBcnJheSxVaW50OENsYW1wZWRBcnJheTpVaW50OENsYW1wZWRBcnJheSxJbnQxNkFycmF5OkludDE2QXJyYXksVWludDE2QXJyYXk6VWludDE2QXJyYXksSW50MzJBcnJheTpJbnQzMkFycmF5LFVpbnQzMkFycmF5OlVpbnQzMkFycmF5LEZsb2F0MzJBcnJheTpGbG9hdDMyQXJyYXksRmxvYXQ2NEFycmF5OkZsb2F0NjRBcnJheX07ZnVuY3Rpb24gTTR0KHQsZSl7cmV0dXJuIG5ldyBTNHRbdF0oZSl9bGV0IEU0dD0wO2NvbnN0IFQ0dD1uZXcgZzN0LEM0dD1uZXcgVjN0LEE0dD1uZXcgSDV0LGs0dD1uZXcgVTV0LEw0dD1uZXcgVTV0LFA0dD1uZXcgSDV0O2NsYXNzIE40dCBleHRlbmRzIGU1dHtjb25zdHJ1Y3Rvcigpe3N1cGVyKCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsImlkIix7dmFsdWU6RTR0Kyt9KSx0aGlzLnV1aWQ9YTV0KCksdGhpcy5uYW1lPSIiLHRoaXMudHlwZT0iQnVmZmVyR2VvbWV0cnkiLHRoaXMuaW5kZXg9bnVsbCx0aGlzLmF0dHJpYnV0ZXM9e30sdGhpcy5tb3JwaEF0dHJpYnV0ZXM9e30sdGhpcy5tb3JwaFRhcmdldHNSZWxhdGl2ZT0hMSx0aGlzLmdyb3Vwcz1bXSx0aGlzLmJvdW5kaW5nQm94PW51bGwsdGhpcy5ib3VuZGluZ1NwaGVyZT1udWxsLHRoaXMuZHJhd1JhbmdlPXtzdGFydDowLGNvdW50OjEvMH0sdGhpcy51c2VyRGF0YT17fX1nZXRJbmRleCgpe3JldHVybiB0aGlzLmluZGV4fXNldEluZGV4KHQpe3JldHVybiB0aGlzLmluZGV4PUFycmF5LmlzQXJyYXkodCk/bmV3KHc0dCh0KT42NTUzNT95NHQ6ZzR0KSh0LDEpOnQsdGhpc31nZXRBdHRyaWJ1dGUodCl7cmV0dXJuIHRoaXMuYXR0cmlidXRlc1t0XX1zZXRBdHRyaWJ1dGUodCxlKXtyZXR1cm4gdGhpcy5hdHRyaWJ1dGVzW3RdPWUsdGhpc31kZWxldGVBdHRyaWJ1dGUodCl7cmV0dXJuIGRlbGV0ZSB0aGlzLmF0dHJpYnV0ZXNbdF0sdGhpc31oYXNBdHRyaWJ1dGUodCl7cmV0dXJuIHZvaWQgMCE9PXRoaXMuYXR0cmlidXRlc1t0XX1hZGRHcm91cCh0LGUsbj0wKXt0aGlzLmdyb3Vwcy5wdXNoKHtzdGFydDp0LGNvdW50OmUsbWF0ZXJpYWxJbmRleDpufSl9Y2xlYXJHcm91cHMoKXt0aGlzLmdyb3Vwcz1bXX1zZXREcmF3UmFuZ2UodCxlKXt0aGlzLmRyYXdSYW5nZS5zdGFydD10LHRoaXMuZHJhd1JhbmdlLmNvdW50PWV9YXBwbHlNYXRyaXg0KHQpe2NvbnN0IGU9dGhpcy5hdHRyaWJ1dGVzLnBvc2l0aW9uO3ZvaWQgMCE9PWUmJihlLmFwcGx5TWF0cml4NCh0KSxlLm5lZWRzVXBkYXRlPSEwKTtjb25zdCBuPXRoaXMuYXR0cmlidXRlcy5ub3JtYWw7aWYodm9pZCAwIT09bil7Y29uc3QgZT0obmV3IEE1dCkuZ2V0Tm9ybWFsTWF0cml4KHQpO24uYXBwbHlOb3JtYWxNYXRyaXgoZSksbi5uZWVkc1VwZGF0ZT0hMH1jb25zdCBpPXRoaXMuYXR0cmlidXRlcy50YW5nZW50O3JldHVybiB2b2lkIDAhPT1pJiYoaS50cmFuc2Zvcm1EaXJlY3Rpb24odCksaS5uZWVkc1VwZGF0ZT0hMCksbnVsbCE9PXRoaXMuYm91bmRpbmdCb3gmJnRoaXMuY29tcHV0ZUJvdW5kaW5nQm94KCksbnVsbCE9PXRoaXMuYm91bmRpbmdTcGhlcmUmJnRoaXMuY29tcHV0ZUJvdW5kaW5nU3BoZXJlKCksdGhpc31hcHBseVF1YXRlcm5pb24odCl7cmV0dXJuIFQ0dC5tYWtlUm90YXRpb25Gcm9tUXVhdGVybmlvbih0KSx0aGlzLmFwcGx5TWF0cml4NChUNHQpLHRoaXN9cm90YXRlWCh0KXtyZXR1cm4gVDR0Lm1ha2VSb3RhdGlvblgodCksdGhpcy5hcHBseU1hdHJpeDQoVDR0KSx0aGlzfXJvdGF0ZVkodCl7cmV0dXJuIFQ0dC5tYWtlUm90YXRpb25ZKHQpLHRoaXMuYXBwbHlNYXRyaXg0KFQ0dCksdGhpc31yb3RhdGVaKHQpe3JldHVybiBUNHQubWFrZVJvdGF0aW9uWih0KSx0aGlzLmFwcGx5TWF0cml4NChUNHQpLHRoaXN9dHJhbnNsYXRlKHQsZSxuKXtyZXR1cm4gVDR0Lm1ha2VUcmFuc2xhdGlvbih0LGUsbiksdGhpcy5hcHBseU1hdHJpeDQoVDR0KSx0aGlzfXNjYWxlKHQsZSxuKXtyZXR1cm4gVDR0Lm1ha2VTY2FsZSh0LGUsbiksdGhpcy5hcHBseU1hdHJpeDQoVDR0KSx0aGlzfWxvb2tBdCh0KXtyZXR1cm4gQzR0Lmxvb2tBdCh0KSxDNHQudXBkYXRlTWF0cml4KCksdGhpcy5hcHBseU1hdHJpeDQoQzR0Lm1hdHJpeCksdGhpc31jZW50ZXIoKXtyZXR1cm4gdGhpcy5jb21wdXRlQm91bmRpbmdCb3goKSx0aGlzLmJvdW5kaW5nQm94LmdldENlbnRlcihBNHQpLm5lZ2F0ZSgpLHRoaXMudHJhbnNsYXRlKEE0dC54LEE0dC55LEE0dC56KSx0aGlzfXNldEZyb21Qb2ludHModCl7Y29uc3QgZT1bXTtmb3IobGV0IG49MCxpPXQubGVuZ3RoO248aTtuKyspe2NvbnN0IGk9dFtuXTtlLnB1c2goaS54LGkueSxpLnp8fDApfXJldHVybiB0aGlzLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBiNHQoZSwzKSksdGhpc31jb21wdXRlQm91bmRpbmdCb3goKXtudWxsPT09dGhpcy5ib3VuZGluZ0JveCYmKHRoaXMuYm91bmRpbmdCb3g9bmV3IFU1dCk7Y29uc3QgdD10aGlzLmF0dHJpYnV0ZXMucG9zaXRpb24sZT10aGlzLm1vcnBoQXR0cmlidXRlcy5wb3NpdGlvbjtpZih0JiZ0LmlzR0xCdWZmZXJBdHRyaWJ1dGUpcmV0dXJuIGNvbnNvbGUuZXJyb3IoJ1RIUkVFLkJ1ZmZlckdlb21ldHJ5LmNvbXB1dGVCb3VuZGluZ0JveCgpOiBHTEJ1ZmZlckF0dHJpYnV0ZSByZXF1aXJlcyBhIG1hbnVhbCBib3VuZGluZyBib3guIEFsdGVybmF0aXZlbHkgc2V0ICJtZXNoLmZydXN0dW1DdWxsZWQiIHRvICJmYWxzZSIuJyx0aGlzKSx2b2lkIHRoaXMuYm91bmRpbmdCb3guc2V0KG5ldyBINXQoLTEvMCwtMS8wLC0xLzApLG5ldyBINXQoMS8wLDEvMCwxLzApKTtpZih2b2lkIDAhPT10KXtpZih0aGlzLmJvdW5kaW5nQm94LnNldEZyb21CdWZmZXJBdHRyaWJ1dGUodCksZSlmb3IobGV0IHQ9MCxuPWUubGVuZ3RoO3Q8bjt0Kyspe2s0dC5zZXRGcm9tQnVmZmVyQXR0cmlidXRlKGVbdF0pLHRoaXMubW9ycGhUYXJnZXRzUmVsYXRpdmU/KFA0dC5hZGRWZWN0b3JzKHRoaXMuYm91bmRpbmdCb3gubWluLGs0dC5taW4pLHRoaXMuYm91bmRpbmdCb3guZXhwYW5kQnlQb2ludChQNHQpLFA0dC5hZGRWZWN0b3JzKHRoaXMuYm91bmRpbmdCb3gubWF4LGs0dC5tYXgpLHRoaXMuYm91bmRpbmdCb3guZXhwYW5kQnlQb2ludChQNHQpKToodGhpcy5ib3VuZGluZ0JveC5leHBhbmRCeVBvaW50KGs0dC5taW4pLHRoaXMuYm91bmRpbmdCb3guZXhwYW5kQnlQb2ludChrNHQubWF4KSl9fWVsc2UgdGhpcy5ib3VuZGluZ0JveC5tYWtlRW1wdHkoKTsoaXNOYU4odGhpcy5ib3VuZGluZ0JveC5taW4ueCl8fGlzTmFOKHRoaXMuYm91bmRpbmdCb3gubWluLnkpfHxpc05hTih0aGlzLmJvdW5kaW5nQm94Lm1pbi56KSkmJmNvbnNvbGUuZXJyb3IoJ1RIUkVFLkJ1ZmZlckdlb21ldHJ5LmNvbXB1dGVCb3VuZGluZ0JveCgpOiBDb21wdXRlZCBtaW4vbWF4IGhhdmUgTmFOIHZhbHVlcy4gVGhlICJwb3NpdGlvbiIgYXR0cmlidXRlIGlzIGxpa2VseSB0byBoYXZlIE5hTiB2YWx1ZXMuJyx0aGlzKX1jb21wdXRlQm91bmRpbmdTcGhlcmUoKXtudWxsPT09dGhpcy5ib3VuZGluZ1NwaGVyZSYmKHRoaXMuYm91bmRpbmdTcGhlcmU9bmV3IHMzdCk7Y29uc3QgdD10aGlzLmF0dHJpYnV0ZXMucG9zaXRpb24sZT10aGlzLm1vcnBoQXR0cmlidXRlcy5wb3NpdGlvbjtpZih0JiZ0LmlzR0xCdWZmZXJBdHRyaWJ1dGUpcmV0dXJuIGNvbnNvbGUuZXJyb3IoJ1RIUkVFLkJ1ZmZlckdlb21ldHJ5LmNvbXB1dGVCb3VuZGluZ1NwaGVyZSgpOiBHTEJ1ZmZlckF0dHJpYnV0ZSByZXF1aXJlcyBhIG1hbnVhbCBib3VuZGluZyBzcGhlcmUuIEFsdGVybmF0aXZlbHkgc2V0ICJtZXNoLmZydXN0dW1DdWxsZWQiIHRvICJmYWxzZSIuJyx0aGlzKSx2b2lkIHRoaXMuYm91bmRpbmdTcGhlcmUuc2V0KG5ldyBINXQsMS8wKTtpZih0KXtjb25zdCBuPXRoaXMuYm91bmRpbmdTcGhlcmUuY2VudGVyO2lmKGs0dC5zZXRGcm9tQnVmZmVyQXR0cmlidXRlKHQpLGUpZm9yKGxldCB0PTAsbj1lLmxlbmd0aDt0PG47dCsrKXtMNHQuc2V0RnJvbUJ1ZmZlckF0dHJpYnV0ZShlW3RdKSx0aGlzLm1vcnBoVGFyZ2V0c1JlbGF0aXZlPyhQNHQuYWRkVmVjdG9ycyhrNHQubWluLEw0dC5taW4pLGs0dC5leHBhbmRCeVBvaW50KFA0dCksUDR0LmFkZFZlY3RvcnMoazR0Lm1heCxMNHQubWF4KSxrNHQuZXhwYW5kQnlQb2ludChQNHQpKTooazR0LmV4cGFuZEJ5UG9pbnQoTDR0Lm1pbiksazR0LmV4cGFuZEJ5UG9pbnQoTDR0Lm1heCkpfWs0dC5nZXRDZW50ZXIobik7bGV0IGk9MDtmb3IobGV0IGU9MCxyPXQuY291bnQ7ZTxyO2UrKylQNHQuZnJvbUJ1ZmZlckF0dHJpYnV0ZSh0LGUpLGk9TWF0aC5tYXgoaSxuLmRpc3RhbmNlVG9TcXVhcmVkKFA0dCkpO2lmKGUpZm9yKGxldCByPTAsbz1lLmxlbmd0aDtyPG87cisrKXtjb25zdCBvPWVbcl0sYT10aGlzLm1vcnBoVGFyZ2V0c1JlbGF0aXZlO2ZvcihsZXQgZT0wLHI9by5jb3VudDtlPHI7ZSsrKVA0dC5mcm9tQnVmZmVyQXR0cmlidXRlKG8sZSksYSYmKEE0dC5mcm9tQnVmZmVyQXR0cmlidXRlKHQsZSksUDR0LmFkZChBNHQpKSxpPU1hdGgubWF4KGksbi5kaXN0YW5jZVRvU3F1YXJlZChQNHQpKX10aGlzLmJvdW5kaW5nU3BoZXJlLnJhZGl1cz1NYXRoLnNxcnQoaSksaXNOYU4odGhpcy5ib3VuZGluZ1NwaGVyZS5yYWRpdXMpJiZjb25zb2xlLmVycm9yKCdUSFJFRS5CdWZmZXJHZW9tZXRyeS5jb21wdXRlQm91bmRpbmdTcGhlcmUoKTogQ29tcHV0ZWQgcmFkaXVzIGlzIE5hTi4gVGhlICJwb3NpdGlvbiIgYXR0cmlidXRlIGlzIGxpa2VseSB0byBoYXZlIE5hTiB2YWx1ZXMuJyx0aGlzKX19Y29tcHV0ZUZhY2VOb3JtYWxzKCl7fWNvbXB1dGVUYW5nZW50cygpe2NvbnN0IHQ9dGhpcy5pbmRleCxlPXRoaXMuYXR0cmlidXRlcztpZihudWxsPT09dHx8dm9pZCAwPT09ZS5wb3NpdGlvbnx8dm9pZCAwPT09ZS5ub3JtYWx8fHZvaWQgMD09PWUudXYpcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcigiVEhSRUUuQnVmZmVyR2VvbWV0cnk6IC5jb21wdXRlVGFuZ2VudHMoKSBmYWlsZWQuIE1pc3NpbmcgcmVxdWlyZWQgYXR0cmlidXRlcyAoaW5kZXgsIHBvc2l0aW9uLCBub3JtYWwgb3IgdXYpIik7Y29uc3Qgbj10LmFycmF5LGk9ZS5wb3NpdGlvbi5hcnJheSxyPWUubm9ybWFsLmFycmF5LG89ZS51di5hcnJheSxhPWkubGVuZ3RoLzM7dm9pZCAwPT09ZS50YW5nZW50JiZ0aGlzLnNldEF0dHJpYnV0ZSgidGFuZ2VudCIsbmV3IGg0dChuZXcgRmxvYXQzMkFycmF5KDQqYSksNCkpO2NvbnN0IHM9ZS50YW5nZW50LmFycmF5LGw9W10sYz1bXTtmb3IobGV0IHQ9MDt0PGE7dCsrKWxbdF09bmV3IEg1dCxjW3RdPW5ldyBINXQ7Y29uc3QgdT1uZXcgSDV0LGg9bmV3IEg1dCxkPW5ldyBINXQscD1uZXcgQzV0LGY9bmV3IEM1dCxtPW5ldyBDNXQsZz1uZXcgSDV0LF89bmV3IEg1dDtmdW5jdGlvbiB5KHQsZSxuKXt1LmZyb21BcnJheShpLDMqdCksaC5mcm9tQXJyYXkoaSwzKmUpLGQuZnJvbUFycmF5KGksMypuKSxwLmZyb21BcnJheShvLDIqdCksZi5mcm9tQXJyYXkobywyKmUpLG0uZnJvbUFycmF5KG8sMipuKSxoLnN1Yih1KSxkLnN1Yih1KSxmLnN1YihwKSxtLnN1YihwKTtjb25zdCByPTEvKGYueCptLnktbS54KmYueSk7aXNGaW5pdGUocikmJihnLmNvcHkoaCkubXVsdGlwbHlTY2FsYXIobS55KS5hZGRTY2FsZWRWZWN0b3IoZCwtZi55KS5tdWx0aXBseVNjYWxhcihyKSxfLmNvcHkoZCkubXVsdGlwbHlTY2FsYXIoZi54KS5hZGRTY2FsZWRWZWN0b3IoaCwtbS54KS5tdWx0aXBseVNjYWxhcihyKSxsW3RdLmFkZChnKSxsW2VdLmFkZChnKSxsW25dLmFkZChnKSxjW3RdLmFkZChfKSxjW2VdLmFkZChfKSxjW25dLmFkZChfKSl9bGV0IHY9dGhpcy5ncm91cHM7MD09PXYubGVuZ3RoJiYodj1be3N0YXJ0OjAsY291bnQ6bi5sZW5ndGh9XSk7Zm9yKGxldCB0PTAsZT12Lmxlbmd0aDt0PGU7Kyt0KXtjb25zdCBlPXZbdF0saT1lLnN0YXJ0O2ZvcihsZXQgdD1pLHI9aStlLmNvdW50O3Q8cjt0Kz0zKXkoblt0KzBdLG5bdCsxXSxuW3QrMl0pfWNvbnN0IGI9bmV3IEg1dCx4PW5ldyBINXQsdz1uZXcgSDV0LFM9bmV3IEg1dDtmdW5jdGlvbiBNKHQpe3cuZnJvbUFycmF5KHIsMyp0KSxTLmNvcHkodyk7Y29uc3QgZT1sW3RdO2IuY29weShlKSxiLnN1Yih3Lm11bHRpcGx5U2NhbGFyKHcuZG90KGUpKSkubm9ybWFsaXplKCkseC5jcm9zc1ZlY3RvcnMoUyxlKTtjb25zdCBuPXguZG90KGNbdF0pPDA/LTE6MTtzWzQqdF09Yi54LHNbNCp0KzFdPWIueSxzWzQqdCsyXT1iLnosc1s0KnQrM109bn1mb3IobGV0IHQ9MCxlPXYubGVuZ3RoO3Q8ZTsrK3Qpe2NvbnN0IGU9dlt0XSxpPWUuc3RhcnQ7Zm9yKGxldCB0PWkscj1pK2UuY291bnQ7dDxyO3QrPTMpTShuW3QrMF0pLE0oblt0KzFdKSxNKG5bdCsyXSl9fWNvbXB1dGVWZXJ0ZXhOb3JtYWxzKCl7Y29uc3QgdD10aGlzLmluZGV4LGU9dGhpcy5nZXRBdHRyaWJ1dGUoInBvc2l0aW9uIik7aWYodm9pZCAwIT09ZSl7bGV0IG49dGhpcy5nZXRBdHRyaWJ1dGUoIm5vcm1hbCIpO2lmKHZvaWQgMD09PW4pbj1uZXcgaDR0KG5ldyBGbG9hdDMyQXJyYXkoMyplLmNvdW50KSwzKSx0aGlzLnNldEF0dHJpYnV0ZSgibm9ybWFsIixuKTtlbHNlIGZvcihsZXQgdD0wLGU9bi5jb3VudDt0PGU7dCsrKW4uc2V0WFlaKHQsMCwwLDApO2NvbnN0IGk9bmV3IEg1dCxyPW5ldyBINXQsbz1uZXcgSDV0LGE9bmV3IEg1dCxzPW5ldyBINXQsbD1uZXcgSDV0LGM9bmV3IEg1dCx1PW5ldyBINXQ7aWYodClmb3IobGV0IGg9MCxkPXQuY291bnQ7aDxkO2grPTMpe2NvbnN0IGQ9dC5nZXRYKGgrMCkscD10LmdldFgoaCsxKSxmPXQuZ2V0WChoKzIpO2kuZnJvbUJ1ZmZlckF0dHJpYnV0ZShlLGQpLHIuZnJvbUJ1ZmZlckF0dHJpYnV0ZShlLHApLG8uZnJvbUJ1ZmZlckF0dHJpYnV0ZShlLGYpLGMuc3ViVmVjdG9ycyhvLHIpLHUuc3ViVmVjdG9ycyhpLHIpLGMuY3Jvc3ModSksYS5mcm9tQnVmZmVyQXR0cmlidXRlKG4sZCkscy5mcm9tQnVmZmVyQXR0cmlidXRlKG4scCksbC5mcm9tQnVmZmVyQXR0cmlidXRlKG4sZiksYS5hZGQoYykscy5hZGQoYyksbC5hZGQoYyksbi5zZXRYWVooZCxhLngsYS55LGEueiksbi5zZXRYWVoocCxzLngscy55LHMueiksbi5zZXRYWVooZixsLngsbC55LGwueil9ZWxzZSBmb3IobGV0IHQ9MCxhPWUuY291bnQ7dDxhO3QrPTMpaS5mcm9tQnVmZmVyQXR0cmlidXRlKGUsdCswKSxyLmZyb21CdWZmZXJBdHRyaWJ1dGUoZSx0KzEpLG8uZnJvbUJ1ZmZlckF0dHJpYnV0ZShlLHQrMiksYy5zdWJWZWN0b3JzKG8sciksdS5zdWJWZWN0b3JzKGksciksYy5jcm9zcyh1KSxuLnNldFhZWih0KzAsYy54LGMueSxjLnopLG4uc2V0WFlaKHQrMSxjLngsYy55LGMueiksbi5zZXRYWVoodCsyLGMueCxjLnksYy56KTt0aGlzLm5vcm1hbGl6ZU5vcm1hbHMoKSxuLm5lZWRzVXBkYXRlPSEwfX1tZXJnZSh0LGUpe2lmKCF0fHwhdC5pc0J1ZmZlckdlb21ldHJ5KXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIlRIUkVFLkJ1ZmZlckdlb21ldHJ5Lm1lcmdlKCk6IGdlb21ldHJ5IG5vdCBhbiBpbnN0YW5jZSBvZiBUSFJFRS5CdWZmZXJHZW9tZXRyeS4iLHQpO3ZvaWQgMD09PWUmJihlPTAsY29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJHZW9tZXRyeS5tZXJnZSgpOiBPdmVyd3JpdGluZyBvcmlnaW5hbCBnZW9tZXRyeSwgc3RhcnRpbmcgYXQgb2Zmc2V0PTAuIFVzZSBCdWZmZXJHZW9tZXRyeVV0aWxzLm1lcmdlQnVmZmVyR2VvbWV0cmllcygpIGZvciBsb3NzbGVzcyBtZXJnZS4iKSk7Y29uc3Qgbj10aGlzLmF0dHJpYnV0ZXM7Zm9yKGNvbnN0IGkgaW4gbil7aWYodm9pZCAwPT09dC5hdHRyaWJ1dGVzW2ldKWNvbnRpbnVlO2NvbnN0IHI9bltpXS5hcnJheSxvPXQuYXR0cmlidXRlc1tpXSxhPW8uYXJyYXkscz1vLml0ZW1TaXplKmUsbD1NYXRoLm1pbihhLmxlbmd0aCxyLmxlbmd0aC1zKTtmb3IobGV0IHQ9MCxlPXM7dDxsO3QrKyxlKyspcltlXT1hW3RdfXJldHVybiB0aGlzfW5vcm1hbGl6ZU5vcm1hbHMoKXtjb25zdCB0PXRoaXMuYXR0cmlidXRlcy5ub3JtYWw7Zm9yKGxldCBlPTAsbj10LmNvdW50O2U8bjtlKyspUDR0LmZyb21CdWZmZXJBdHRyaWJ1dGUodCxlKSxQNHQubm9ybWFsaXplKCksdC5zZXRYWVooZSxQNHQueCxQNHQueSxQNHQueil9dG9Ob25JbmRleGVkKCl7ZnVuY3Rpb24gdCh0LGUpe2NvbnN0IG49dC5hcnJheSxpPXQuaXRlbVNpemUscj10Lm5vcm1hbGl6ZWQsbz1uZXcgbi5jb25zdHJ1Y3RvcihlLmxlbmd0aCppKTtsZXQgYT0wLHM9MDtmb3IobGV0IHI9MCxsPWUubGVuZ3RoO3I8bDtyKyspe2E9dC5pc0ludGVybGVhdmVkQnVmZmVyQXR0cmlidXRlP2Vbcl0qdC5kYXRhLnN0cmlkZSt0Lm9mZnNldDplW3JdKmk7Zm9yKGxldCB0PTA7dDxpO3QrKylvW3MrK109blthKytdfXJldHVybiBuZXcgaDR0KG8saSxyKX1pZihudWxsPT09dGhpcy5pbmRleClyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJHZW9tZXRyeS50b05vbkluZGV4ZWQoKTogQnVmZmVyR2VvbWV0cnkgaXMgYWxyZWFkeSBub24taW5kZXhlZC4iKSx0aGlzO2NvbnN0IGU9bmV3IE40dCxuPXRoaXMuaW5kZXguYXJyYXksaT10aGlzLmF0dHJpYnV0ZXM7Zm9yKGNvbnN0IHIgaW4gaSl7Y29uc3Qgbz10KGlbcl0sbik7ZS5zZXRBdHRyaWJ1dGUocixvKX1jb25zdCByPXRoaXMubW9ycGhBdHRyaWJ1dGVzO2Zvcihjb25zdCBpIGluIHIpe2NvbnN0IG89W10sYT1yW2ldO2ZvcihsZXQgZT0wLGk9YS5sZW5ndGg7ZTxpO2UrKyl7Y29uc3QgaT10KGFbZV0sbik7by5wdXNoKGkpfWUubW9ycGhBdHRyaWJ1dGVzW2ldPW99ZS5tb3JwaFRhcmdldHNSZWxhdGl2ZT10aGlzLm1vcnBoVGFyZ2V0c1JlbGF0aXZlO2NvbnN0IG89dGhpcy5ncm91cHM7Zm9yKGxldCB0PTAsbj1vLmxlbmd0aDt0PG47dCsrKXtjb25zdCBuPW9bdF07ZS5hZGRHcm91cChuLnN0YXJ0LG4uY291bnQsbi5tYXRlcmlhbEluZGV4KX1yZXR1cm4gZX10b0pTT04oKXtjb25zdCB0PXttZXRhZGF0YTp7dmVyc2lvbjo0LjUsdHlwZToiQnVmZmVyR2VvbWV0cnkiLGdlbmVyYXRvcjoiQnVmZmVyR2VvbWV0cnkudG9KU09OIn19O2lmKHQudXVpZD10aGlzLnV1aWQsdC50eXBlPXRoaXMudHlwZSwiIiE9PXRoaXMubmFtZSYmKHQubmFtZT10aGlzLm5hbWUpLE9iamVjdC5rZXlzKHRoaXMudXNlckRhdGEpLmxlbmd0aD4wJiYodC51c2VyRGF0YT10aGlzLnVzZXJEYXRhKSx2b2lkIDAhPT10aGlzLnBhcmFtZXRlcnMpe2NvbnN0IGU9dGhpcy5wYXJhbWV0ZXJzO2Zvcihjb25zdCBuIGluIGUpdm9pZCAwIT09ZVtuXSYmKHRbbl09ZVtuXSk7cmV0dXJuIHR9dC5kYXRhPXthdHRyaWJ1dGVzOnt9fTtjb25zdCBlPXRoaXMuaW5kZXg7bnVsbCE9PWUmJih0LmRhdGEuaW5kZXg9e3R5cGU6ZS5hcnJheS5jb25zdHJ1Y3Rvci5uYW1lLGFycmF5OkFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGUuYXJyYXkpfSk7Y29uc3Qgbj10aGlzLmF0dHJpYnV0ZXM7Zm9yKGNvbnN0IGUgaW4gbil7dC5kYXRhLmF0dHJpYnV0ZXNbZV09bltlXS50b0pTT04odC5kYXRhKX1jb25zdCBpPXt9O2xldCByPSExO2Zvcihjb25zdCBlIGluIHRoaXMubW9ycGhBdHRyaWJ1dGVzKXtjb25zdCBuPXRoaXMubW9ycGhBdHRyaWJ1dGVzW2VdLG89W107Zm9yKGxldCBlPTAsaT1uLmxlbmd0aDtlPGk7ZSsrKXtvLnB1c2gobltlXS50b0pTT04odC5kYXRhKSl9by5sZW5ndGg+MCYmKGlbZV09byxyPSEwKX1yJiYodC5kYXRhLm1vcnBoQXR0cmlidXRlcz1pLHQuZGF0YS5tb3JwaFRhcmdldHNSZWxhdGl2ZT10aGlzLm1vcnBoVGFyZ2V0c1JlbGF0aXZlKTtjb25zdCBvPXRoaXMuZ3JvdXBzO28ubGVuZ3RoPjAmJih0LmRhdGEuZ3JvdXBzPUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkobykpKTtjb25zdCBhPXRoaXMuYm91bmRpbmdTcGhlcmU7cmV0dXJuIG51bGwhPT1hJiYodC5kYXRhLmJvdW5kaW5nU3BoZXJlPXtjZW50ZXI6YS5jZW50ZXIudG9BcnJheSgpLHJhZGl1czphLnJhZGl1c30pLHR9Y2xvbmUoKXtyZXR1cm4obmV3IE40dCkuY29weSh0aGlzKX1jb3B5KHQpe3RoaXMuaW5kZXg9bnVsbCx0aGlzLmF0dHJpYnV0ZXM9e30sdGhpcy5tb3JwaEF0dHJpYnV0ZXM9e30sdGhpcy5ncm91cHM9W10sdGhpcy5ib3VuZGluZ0JveD1udWxsLHRoaXMuYm91bmRpbmdTcGhlcmU9bnVsbDtjb25zdCBlPXt9O3RoaXMubmFtZT10Lm5hbWU7Y29uc3Qgbj10LmluZGV4O251bGwhPT1uJiZ0aGlzLnNldEluZGV4KG4uY2xvbmUoZSkpO2NvbnN0IGk9dC5hdHRyaWJ1dGVzO2Zvcihjb25zdCB0IGluIGkpe3RoaXMuc2V0QXR0cmlidXRlKHQsaVt0XS5jbG9uZShlKSl9Y29uc3Qgcj10Lm1vcnBoQXR0cmlidXRlcztmb3IoY29uc3QgdCBpbiByKXtjb25zdCBuPVtdLGk9clt0XTtmb3IobGV0IHQ9MCxyPWkubGVuZ3RoO3Q8cjt0Kyspbi5wdXNoKGlbdF0uY2xvbmUoZSkpO3RoaXMubW9ycGhBdHRyaWJ1dGVzW3RdPW59dGhpcy5tb3JwaFRhcmdldHNSZWxhdGl2ZT10Lm1vcnBoVGFyZ2V0c1JlbGF0aXZlO2NvbnN0IG89dC5ncm91cHM7Zm9yKGxldCB0PTAsZT1vLmxlbmd0aDt0PGU7dCsrKXtjb25zdCBlPW9bdF07dGhpcy5hZGRHcm91cChlLnN0YXJ0LGUuY291bnQsZS5tYXRlcmlhbEluZGV4KX1jb25zdCBhPXQuYm91bmRpbmdCb3g7bnVsbCE9PWEmJih0aGlzLmJvdW5kaW5nQm94PWEuY2xvbmUoKSk7Y29uc3Qgcz10LmJvdW5kaW5nU3BoZXJlO3JldHVybiBudWxsIT09cyYmKHRoaXMuYm91bmRpbmdTcGhlcmU9cy5jbG9uZSgpKSx0aGlzLmRyYXdSYW5nZS5zdGFydD10LmRyYXdSYW5nZS5zdGFydCx0aGlzLmRyYXdSYW5nZS5jb3VudD10LmRyYXdSYW5nZS5jb3VudCx0aGlzLnVzZXJEYXRhPXQudXNlckRhdGEsdGhpc31kaXNwb3NlKCl7dGhpcy5kaXNwYXRjaEV2ZW50KHt0eXBlOiJkaXNwb3NlIn0pfX1ONHQucHJvdG90eXBlLmlzQnVmZmVyR2VvbWV0cnk9ITA7Y29uc3QgSTR0PW5ldyBnM3QsUjR0PW5ldyBtM3QsTzR0PW5ldyBzM3QsejR0PW5ldyBINXQsRDR0PW5ldyBINXQsQjR0PW5ldyBINXQsSDR0PW5ldyBINXQsRjR0PW5ldyBINXQsVjR0PW5ldyBINXQsVTR0PW5ldyBINXQsajR0PW5ldyBINXQsRzR0PW5ldyBINXQsVzR0PW5ldyBDNXQscTR0PW5ldyBDNXQsWTR0PW5ldyBDNXQsWDR0PW5ldyBINXQsJDR0PW5ldyBINXQ7Y2xhc3MgSzR0IGV4dGVuZHMgVjN0e2NvbnN0cnVjdG9yKHQ9bmV3IE40dCxlPW5ldyBsNHQpe3N1cGVyKCksdGhpcy50eXBlPSJNZXNoIix0aGlzLmdlb21ldHJ5PXQsdGhpcy5tYXRlcmlhbD1lLHRoaXMudXBkYXRlTW9ycGhUYXJnZXRzKCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx2b2lkIDAhPT10Lm1vcnBoVGFyZ2V0SW5mbHVlbmNlcyYmKHRoaXMubW9ycGhUYXJnZXRJbmZsdWVuY2VzPXQubW9ycGhUYXJnZXRJbmZsdWVuY2VzLnNsaWNlKCkpLHZvaWQgMCE9PXQubW9ycGhUYXJnZXREaWN0aW9uYXJ5JiYodGhpcy5tb3JwaFRhcmdldERpY3Rpb25hcnk9T2JqZWN0LmFzc2lnbih7fSx0Lm1vcnBoVGFyZ2V0RGljdGlvbmFyeSkpLHRoaXMubWF0ZXJpYWw9dC5tYXRlcmlhbCx0aGlzLmdlb21ldHJ5PXQuZ2VvbWV0cnksdGhpc311cGRhdGVNb3JwaFRhcmdldHMoKXtjb25zdCB0PXRoaXMuZ2VvbWV0cnk7aWYodC5pc0J1ZmZlckdlb21ldHJ5KXtjb25zdCBlPXQubW9ycGhBdHRyaWJ1dGVzLG49T2JqZWN0LmtleXMoZSk7aWYobi5sZW5ndGg+MCl7Y29uc3QgdD1lW25bMF1dO2lmKHZvaWQgMCE9PXQpe3RoaXMubW9ycGhUYXJnZXRJbmZsdWVuY2VzPVtdLHRoaXMubW9ycGhUYXJnZXREaWN0aW9uYXJ5PXt9O2ZvcihsZXQgZT0wLG49dC5sZW5ndGg7ZTxuO2UrKyl7Y29uc3Qgbj10W2VdLm5hbWV8fFN0cmluZyhlKTt0aGlzLm1vcnBoVGFyZ2V0SW5mbHVlbmNlcy5wdXNoKDApLHRoaXMubW9ycGhUYXJnZXREaWN0aW9uYXJ5W25dPWV9fX19ZWxzZXtjb25zdCBlPXQubW9ycGhUYXJnZXRzO3ZvaWQgMCE9PWUmJmUubGVuZ3RoPjAmJmNvbnNvbGUuZXJyb3IoIlRIUkVFLk1lc2gudXBkYXRlTW9ycGhUYXJnZXRzKCkgbm8gbG9uZ2VyIHN1cHBvcnRzIFRIUkVFLkdlb21ldHJ5LiBVc2UgVEhSRUUuQnVmZmVyR2VvbWV0cnkgaW5zdGVhZC4iKX19cmF5Y2FzdCh0LGUpe2NvbnN0IG49dGhpcy5nZW9tZXRyeSxpPXRoaXMubWF0ZXJpYWwscj10aGlzLm1hdHJpeFdvcmxkO2lmKHZvaWQgMD09PWkpcmV0dXJuO2lmKG51bGw9PT1uLmJvdW5kaW5nU3BoZXJlJiZuLmNvbXB1dGVCb3VuZGluZ1NwaGVyZSgpLE80dC5jb3B5KG4uYm91bmRpbmdTcGhlcmUpLE80dC5hcHBseU1hdHJpeDQociksITE9PT10LnJheS5pbnRlcnNlY3RzU3BoZXJlKE80dCkpcmV0dXJuO2lmKEk0dC5jb3B5KHIpLmludmVydCgpLFI0dC5jb3B5KHQucmF5KS5hcHBseU1hdHJpeDQoSTR0KSxudWxsIT09bi5ib3VuZGluZ0JveCYmITE9PT1SNHQuaW50ZXJzZWN0c0JveChuLmJvdW5kaW5nQm94KSlyZXR1cm47bGV0IG87aWYobi5pc0J1ZmZlckdlb21ldHJ5KXtjb25zdCByPW4uaW5kZXgsYT1uLmF0dHJpYnV0ZXMucG9zaXRpb24scz1uLm1vcnBoQXR0cmlidXRlcy5wb3NpdGlvbixsPW4ubW9ycGhUYXJnZXRzUmVsYXRpdmUsYz1uLmF0dHJpYnV0ZXMudXYsdT1uLmF0dHJpYnV0ZXMudXYyLGg9bi5ncm91cHMsZD1uLmRyYXdSYW5nZTtpZihudWxsIT09cilpZihBcnJheS5pc0FycmF5KGkpKWZvcihsZXQgbj0wLHA9aC5sZW5ndGg7bjxwO24rKyl7Y29uc3QgcD1oW25dLGY9aVtwLm1hdGVyaWFsSW5kZXhdO2ZvcihsZXQgbj1NYXRoLm1heChwLnN0YXJ0LGQuc3RhcnQpLGk9TWF0aC5taW4ocC5zdGFydCtwLmNvdW50LGQuc3RhcnQrZC5jb3VudCk7bjxpO24rPTMpe2NvbnN0IGk9ci5nZXRYKG4pLGg9ci5nZXRYKG4rMSksZD1yLmdldFgobisyKTtvPVo0dCh0aGlzLGYsdCxSNHQsYSxzLGwsYyx1LGksaCxkKSxvJiYoby5mYWNlSW5kZXg9TWF0aC5mbG9vcihuLzMpLG8uZmFjZS5tYXRlcmlhbEluZGV4PXAubWF0ZXJpYWxJbmRleCxlLnB1c2gobykpfX1lbHNle2ZvcihsZXQgbj1NYXRoLm1heCgwLGQuc3RhcnQpLGg9TWF0aC5taW4oci5jb3VudCxkLnN0YXJ0K2QuY291bnQpO248aDtuKz0zKXtjb25zdCBoPXIuZ2V0WChuKSxkPXIuZ2V0WChuKzEpLHA9ci5nZXRYKG4rMik7bz1aNHQodGhpcyxpLHQsUjR0LGEscyxsLGMsdSxoLGQscCksbyYmKG8uZmFjZUluZGV4PU1hdGguZmxvb3Iobi8zKSxlLnB1c2gobykpfX1lbHNlIGlmKHZvaWQgMCE9PWEpaWYoQXJyYXkuaXNBcnJheShpKSlmb3IobGV0IG49MCxyPWgubGVuZ3RoO248cjtuKyspe2NvbnN0IHI9aFtuXSxwPWlbci5tYXRlcmlhbEluZGV4XTtmb3IobGV0IG49TWF0aC5tYXgoci5zdGFydCxkLnN0YXJ0KSxpPU1hdGgubWluKHIuc3RhcnQrci5jb3VudCxkLnN0YXJ0K2QuY291bnQpO248aTtuKz0zKXtvPVo0dCh0aGlzLHAsdCxSNHQsYSxzLGwsYyx1LG4sbisxLG4rMiksbyYmKG8uZmFjZUluZGV4PU1hdGguZmxvb3Iobi8zKSxvLmZhY2UubWF0ZXJpYWxJbmRleD1yLm1hdGVyaWFsSW5kZXgsZS5wdXNoKG8pKX19ZWxzZXtmb3IobGV0IG49TWF0aC5tYXgoMCxkLnN0YXJ0KSxyPU1hdGgubWluKGEuY291bnQsZC5zdGFydCtkLmNvdW50KTtuPHI7bis9Myl7bz1aNHQodGhpcyxpLHQsUjR0LGEscyxsLGMsdSxuLG4rMSxuKzIpLG8mJihvLmZhY2VJbmRleD1NYXRoLmZsb29yKG4vMyksZS5wdXNoKG8pKX19fWVsc2Ugbi5pc0dlb21ldHJ5JiZjb25zb2xlLmVycm9yKCJUSFJFRS5NZXNoLnJheWNhc3QoKSBubyBsb25nZXIgc3VwcG9ydHMgVEhSRUUuR2VvbWV0cnkuIFVzZSBUSFJFRS5CdWZmZXJHZW9tZXRyeSBpbnN0ZWFkLiIpfX1mdW5jdGlvbiBaNHQodCxlLG4saSxyLG8sYSxzLGwsYyx1LGgpe3o0dC5mcm9tQnVmZmVyQXR0cmlidXRlKHIsYyksRDR0LmZyb21CdWZmZXJBdHRyaWJ1dGUocix1KSxCNHQuZnJvbUJ1ZmZlckF0dHJpYnV0ZShyLGgpO2NvbnN0IGQ9dC5tb3JwaFRhcmdldEluZmx1ZW5jZXM7aWYobyYmZCl7VTR0LnNldCgwLDAsMCksajR0LnNldCgwLDAsMCksRzR0LnNldCgwLDAsMCk7Zm9yKGxldCB0PTAsZT1vLmxlbmd0aDt0PGU7dCsrKXtjb25zdCBlPWRbdF0sbj1vW3RdOzAhPT1lJiYoSDR0LmZyb21CdWZmZXJBdHRyaWJ1dGUobixjKSxGNHQuZnJvbUJ1ZmZlckF0dHJpYnV0ZShuLHUpLFY0dC5mcm9tQnVmZmVyQXR0cmlidXRlKG4saCksYT8oVTR0LmFkZFNjYWxlZFZlY3RvcihINHQsZSksajR0LmFkZFNjYWxlZFZlY3RvcihGNHQsZSksRzR0LmFkZFNjYWxlZFZlY3RvcihWNHQsZSkpOihVNHQuYWRkU2NhbGVkVmVjdG9yKEg0dC5zdWIoejR0KSxlKSxqNHQuYWRkU2NhbGVkVmVjdG9yKEY0dC5zdWIoRDR0KSxlKSxHNHQuYWRkU2NhbGVkVmVjdG9yKFY0dC5zdWIoQjR0KSxlKSkpfXo0dC5hZGQoVTR0KSxENHQuYWRkKGo0dCksQjR0LmFkZChHNHQpfXQuaXNTa2lubmVkTWVzaCYmKHQuYm9uZVRyYW5zZm9ybShjLHo0dCksdC5ib25lVHJhbnNmb3JtKHUsRDR0KSx0LmJvbmVUcmFuc2Zvcm0oaCxCNHQpKTtjb25zdCBwPShmdW5jdGlvbiBmKHQsZSxuLGkscixvLGEscyl7bGV0IGw7aWYobD0xPT09ZS5zaWRlP2kuaW50ZXJzZWN0VHJpYW5nbGUoYSxvLHIsITAscyk6aS5pbnRlcnNlY3RUcmlhbmdsZShyLG8sYSwyIT09ZS5zaWRlLHMpLG51bGw9PT1sKXJldHVybiBudWxsOyQ0dC5jb3B5KHMpLCQ0dC5hcHBseU1hdHJpeDQodC5tYXRyaXhXb3JsZCk7Y29uc3QgYz1uLnJheS5vcmlnaW4uZGlzdGFuY2VUbygkNHQpO3JldHVybiBjPG4ubmVhcnx8Yz5uLmZhcj9udWxsOntkaXN0YW5jZTpjLHBvaW50OiQ0dC5jbG9uZSgpLG9iamVjdDp0fX0pKHQsZSxuLGksejR0LEQ0dCxCNHQsWDR0KTtpZihwKXtzJiYoVzR0LmZyb21CdWZmZXJBdHRyaWJ1dGUocyxjKSxxNHQuZnJvbUJ1ZmZlckF0dHJpYnV0ZShzLHUpLFk0dC5mcm9tQnVmZmVyQXR0cmlidXRlKHMsaCkscC51dj1KM3QuZ2V0VVYoWDR0LHo0dCxENHQsQjR0LFc0dCxxNHQsWTR0LG5ldyBDNXQpKSxsJiYoVzR0LmZyb21CdWZmZXJBdHRyaWJ1dGUobCxjKSxxNHQuZnJvbUJ1ZmZlckF0dHJpYnV0ZShsLHUpLFk0dC5mcm9tQnVmZmVyQXR0cmlidXRlKGwsaCkscC51djI9SjN0LmdldFVWKFg0dCx6NHQsRDR0LEI0dCxXNHQscTR0LFk0dCxuZXcgQzV0KSk7Y29uc3QgdD17YTpjLGI6dSxjOmgsbm9ybWFsOm5ldyBINXQsbWF0ZXJpYWxJbmRleDowfTtKM3QuZ2V0Tm9ybWFsKHo0dCxENHQsQjR0LHQubm9ybWFsKSxwLmZhY2U9dH1yZXR1cm4gcH1LNHQucHJvdG90eXBlLmlzTWVzaD0hMDtjbGFzcyBKNHQgZXh0ZW5kcyBONHR7Y29uc3RydWN0b3IodD0xLGU9MSxuPTEsaT0xLHI9MSxvPTEpe3N1cGVyKCksdGhpcy50eXBlPSJCb3hHZW9tZXRyeSIsdGhpcy5wYXJhbWV0ZXJzPXt3aWR0aDp0LGhlaWdodDplLGRlcHRoOm4sd2lkdGhTZWdtZW50czppLGhlaWdodFNlZ21lbnRzOnIsZGVwdGhTZWdtZW50czpvfTtjb25zdCBhPXRoaXM7aT1NYXRoLmZsb29yKGkpLHI9TWF0aC5mbG9vcihyKSxvPU1hdGguZmxvb3Iobyk7Y29uc3Qgcz1bXSxsPVtdLGM9W10sdT1bXTtsZXQgaD0wLGQ9MDtmdW5jdGlvbiBwKHQsZSxuLGkscixvLHAsZixtLGcsXyl7Y29uc3QgeT1vL20sdj1wL2csYj1vLzIseD1wLzIsdz1mLzIsUz1tKzEsTT1nKzE7bGV0IEU9MCxUPTA7Y29uc3QgQz1uZXcgSDV0O2ZvcihsZXQgbz0wO288TTtvKyspe2NvbnN0IGE9byp2LXg7Zm9yKGxldCBzPTA7czxTO3MrKyl7Q1t0XT0ocyp5LWIpKmksQ1tlXT1hKnIsQ1tuXT13LGwucHVzaChDLngsQy55LEMueiksQ1t0XT0wLENbZV09MCxDW25dPWY+MD8xOi0xLGMucHVzaChDLngsQy55LEMueiksdS5wdXNoKHMvbSksdS5wdXNoKDEtby9nKSxFKz0xfX1mb3IobGV0IHQ9MDt0PGc7dCsrKWZvcihsZXQgZT0wO2U8bTtlKyspe2NvbnN0IG49aCtlK1MqKHQrMSksaT1oKyhlKzEpK1MqKHQrMSkscj1oKyhlKzEpK1MqdDtzLnB1c2goaCtlK1MqdCxuLHIpLHMucHVzaChuLGksciksVCs9Nn1hLmFkZEdyb3VwKGQsVCxfKSxkKz1ULGgrPUV9cCgieiIsInkiLCJ4IiwtMSwtMSxuLGUsdCxvLHIsMCkscCgieiIsInkiLCJ4IiwxLC0xLG4sZSwtdCxvLHIsMSkscCgieCIsInoiLCJ5IiwxLDEsdCxuLGUsaSxvLDIpLHAoIngiLCJ6IiwieSIsMSwtMSx0LG4sLWUsaSxvLDMpLHAoIngiLCJ5IiwieiIsMSwtMSx0LGUsbixpLHIsNCkscCgieCIsInkiLCJ6IiwtMSwtMSx0LGUsLW4saSxyLDUpLHRoaXMuc2V0SW5kZXgocyksdGhpcy5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgYjR0KGwsMykpLHRoaXMuc2V0QXR0cmlidXRlKCJub3JtYWwiLG5ldyBiNHQoYywzKSksdGhpcy5zZXRBdHRyaWJ1dGUoInV2IixuZXcgYjR0KHUsMikpfXN0YXRpYyBmcm9tSlNPTih0KXtyZXR1cm4gbmV3IEo0dCh0LndpZHRoLHQuaGVpZ2h0LHQuZGVwdGgsdC53aWR0aFNlZ21lbnRzLHQuaGVpZ2h0U2VnbWVudHMsdC5kZXB0aFNlZ21lbnRzKX19ZnVuY3Rpb24gUTR0KHQpe2NvbnN0IGU9e307Zm9yKGNvbnN0IG4gaW4gdCl7ZVtuXT17fTtmb3IoY29uc3QgaSBpbiB0W25dKXtjb25zdCByPXRbbl1baV07ZVtuXVtpXT1yJiYoci5pc0NvbG9yfHxyLmlzTWF0cml4M3x8ci5pc01hdHJpeDR8fHIuaXNWZWN0b3IyfHxyLmlzVmVjdG9yM3x8ci5pc1ZlY3RvcjR8fHIuaXNUZXh0dXJlfHxyLmlzUXVhdGVybmlvbik/ci5jbG9uZSgpOkFycmF5LmlzQXJyYXkocik/ci5zbGljZSgpOnJ9fXJldHVybiBlfWZ1bmN0aW9uIHQ2dCh0KXtjb25zdCBlPXt9O2ZvcihsZXQgbj0wO248dC5sZW5ndGg7bisrKXtjb25zdCBpPVE0dCh0W25dKTtmb3IoY29uc3QgdCBpbiBpKWVbdF09aVt0XX1yZXR1cm4gZX1jb25zdCBlNnQ9e2Nsb25lOlE0dCxtZXJnZTp0NnR9O2NsYXNzIG42dCBleHRlbmRzIHQ0dHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMudHlwZT0iU2hhZGVyTWF0ZXJpYWwiLHRoaXMuZGVmaW5lcz17fSx0aGlzLnVuaWZvcm1zPXt9LHRoaXMudmVydGV4U2hhZGVyPSJ2b2lkIG1haW4oKSB7XG5cdGdsX1Bvc2l0aW9uID0gcHJvamVjdGlvbk1hdHJpeCAqIG1vZGVsVmlld01hdHJpeCAqIHZlYzQoIHBvc2l0aW9uLCAxLjAgKTtcbn0iLHRoaXMuZnJhZ21lbnRTaGFkZXI9InZvaWQgbWFpbigpIHtcblx0Z2xfRnJhZ0NvbG9yID0gdmVjNCggMS4wLCAwLjAsIDAuMCwgMS4wICk7XG59Iix0aGlzLmxpbmV3aWR0aD0xLHRoaXMud2lyZWZyYW1lPSExLHRoaXMud2lyZWZyYW1lTGluZXdpZHRoPTEsdGhpcy5mb2c9ITEsdGhpcy5saWdodHM9ITEsdGhpcy5jbGlwcGluZz0hMSx0aGlzLmV4dGVuc2lvbnM9e2Rlcml2YXRpdmVzOiExLGZyYWdEZXB0aDohMSxkcmF3QnVmZmVyczohMSxzaGFkZXJUZXh0dXJlTE9EOiExfSx0aGlzLmRlZmF1bHRBdHRyaWJ1dGVWYWx1ZXM9e2NvbG9yOlsxLDEsMV0sdXY6WzAsMF0sdXYyOlswLDBdfSx0aGlzLmluZGV4MEF0dHJpYnV0ZU5hbWU9dm9pZCAwLHRoaXMudW5pZm9ybXNOZWVkVXBkYXRlPSExLHRoaXMuZ2xzbFZlcnNpb249bnVsbCx2b2lkIDAhPT10JiYodm9pZCAwIT09dC5hdHRyaWJ1dGVzJiZjb25zb2xlLmVycm9yKCJUSFJFRS5TaGFkZXJNYXRlcmlhbDogYXR0cmlidXRlcyBzaG91bGQgbm93IGJlIGRlZmluZWQgaW4gVEhSRUUuQnVmZmVyR2VvbWV0cnkgaW5zdGVhZC4iKSx0aGlzLnNldFZhbHVlcyh0KSl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmZyYWdtZW50U2hhZGVyPXQuZnJhZ21lbnRTaGFkZXIsdGhpcy52ZXJ0ZXhTaGFkZXI9dC52ZXJ0ZXhTaGFkZXIsdGhpcy51bmlmb3Jtcz1RNHQodC51bmlmb3JtcyksdGhpcy5kZWZpbmVzPU9iamVjdC5hc3NpZ24oe30sdC5kZWZpbmVzKSx0aGlzLndpcmVmcmFtZT10LndpcmVmcmFtZSx0aGlzLndpcmVmcmFtZUxpbmV3aWR0aD10LndpcmVmcmFtZUxpbmV3aWR0aCx0aGlzLmxpZ2h0cz10LmxpZ2h0cyx0aGlzLmNsaXBwaW5nPXQuY2xpcHBpbmcsdGhpcy5leHRlbnNpb25zPU9iamVjdC5hc3NpZ24oe30sdC5leHRlbnNpb25zKSx0aGlzLmdsc2xWZXJzaW9uPXQuZ2xzbFZlcnNpb24sdGhpc310b0pTT04odCl7Y29uc3QgZT1zdXBlci50b0pTT04odCk7ZS5nbHNsVmVyc2lvbj10aGlzLmdsc2xWZXJzaW9uLGUudW5pZm9ybXM9e307Zm9yKGNvbnN0IG4gaW4gdGhpcy51bmlmb3Jtcyl7Y29uc3QgaT10aGlzLnVuaWZvcm1zW25dLnZhbHVlO2UudW5pZm9ybXNbbl09aSYmaS5pc1RleHR1cmU/e3R5cGU6InQiLHZhbHVlOmkudG9KU09OKHQpLnV1aWR9OmkmJmkuaXNDb2xvcj97dHlwZToiYyIsdmFsdWU6aS5nZXRIZXgoKX06aSYmaS5pc1ZlY3RvcjI/e3R5cGU6InYyIix2YWx1ZTppLnRvQXJyYXkoKX06aSYmaS5pc1ZlY3RvcjM/e3R5cGU6InYzIix2YWx1ZTppLnRvQXJyYXkoKX06aSYmaS5pc1ZlY3RvcjQ/e3R5cGU6InY0Iix2YWx1ZTppLnRvQXJyYXkoKX06aSYmaS5pc01hdHJpeDM/e3R5cGU6Im0zIix2YWx1ZTppLnRvQXJyYXkoKX06aSYmaS5pc01hdHJpeDQ/e3R5cGU6Im00Iix2YWx1ZTppLnRvQXJyYXkoKX06e3ZhbHVlOml9fU9iamVjdC5rZXlzKHRoaXMuZGVmaW5lcykubGVuZ3RoPjAmJihlLmRlZmluZXM9dGhpcy5kZWZpbmVzKSxlLnZlcnRleFNoYWRlcj10aGlzLnZlcnRleFNoYWRlcixlLmZyYWdtZW50U2hhZGVyPXRoaXMuZnJhZ21lbnRTaGFkZXI7Y29uc3Qgbj17fTtmb3IoY29uc3QgdCBpbiB0aGlzLmV4dGVuc2lvbnMpITA9PT10aGlzLmV4dGVuc2lvbnNbdF0mJihuW3RdPSEwKTtyZXR1cm4gT2JqZWN0LmtleXMobikubGVuZ3RoPjAmJihlLmV4dGVuc2lvbnM9biksZX19bjZ0LnByb3RvdHlwZS5pc1NoYWRlck1hdGVyaWFsPSEwO2NsYXNzIGk2dCBleHRlbmRzIFYzdHtjb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy50eXBlPSJDYW1lcmEiLHRoaXMubWF0cml4V29ybGRJbnZlcnNlPW5ldyBnM3QsdGhpcy5wcm9qZWN0aW9uTWF0cml4PW5ldyBnM3QsdGhpcy5wcm9qZWN0aW9uTWF0cml4SW52ZXJzZT1uZXcgZzN0fWNvcHkodCxlKXtyZXR1cm4gc3VwZXIuY29weSh0LGUpLHRoaXMubWF0cml4V29ybGRJbnZlcnNlLmNvcHkodC5tYXRyaXhXb3JsZEludmVyc2UpLHRoaXMucHJvamVjdGlvbk1hdHJpeC5jb3B5KHQucHJvamVjdGlvbk1hdHJpeCksdGhpcy5wcm9qZWN0aW9uTWF0cml4SW52ZXJzZS5jb3B5KHQucHJvamVjdGlvbk1hdHJpeEludmVyc2UpLHRoaXN9Z2V0V29ybGREaXJlY3Rpb24odCl7dGhpcy51cGRhdGVXb3JsZE1hdHJpeCghMCwhMSk7Y29uc3QgZT10aGlzLm1hdHJpeFdvcmxkLmVsZW1lbnRzO3JldHVybiB0LnNldCgtZVs4XSwtZVs5XSwtZVsxMF0pLm5vcm1hbGl6ZSgpfXVwZGF0ZU1hdHJpeFdvcmxkKHQpe3N1cGVyLnVwZGF0ZU1hdHJpeFdvcmxkKHQpLHRoaXMubWF0cml4V29ybGRJbnZlcnNlLmNvcHkodGhpcy5tYXRyaXhXb3JsZCkuaW52ZXJ0KCl9dXBkYXRlV29ybGRNYXRyaXgodCxlKXtzdXBlci51cGRhdGVXb3JsZE1hdHJpeCh0LGUpLHRoaXMubWF0cml4V29ybGRJbnZlcnNlLmNvcHkodGhpcy5tYXRyaXhXb3JsZCkuaW52ZXJ0KCl9Y2xvbmUoKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IpLmNvcHkodGhpcyl9fWk2dC5wcm90b3R5cGUuaXNDYW1lcmE9ITA7Y2xhc3MgcjZ0IGV4dGVuZHMgaTZ0e2NvbnN0cnVjdG9yKHQ9NTAsZT0xLG49LjEsaT0yZTMpe3N1cGVyKCksdGhpcy50eXBlPSJQZXJzcGVjdGl2ZUNhbWVyYSIsdGhpcy5mb3Y9dCx0aGlzLnpvb209MSx0aGlzLm5lYXI9bix0aGlzLmZhcj1pLHRoaXMuZm9jdXM9MTAsdGhpcy5hc3BlY3Q9ZSx0aGlzLnZpZXc9bnVsbCx0aGlzLmZpbG1HYXVnZT0zNSx0aGlzLmZpbG1PZmZzZXQ9MCx0aGlzLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKX1jb3B5KHQsZSl7cmV0dXJuIHN1cGVyLmNvcHkodCxlKSx0aGlzLmZvdj10LmZvdix0aGlzLnpvb209dC56b29tLHRoaXMubmVhcj10Lm5lYXIsdGhpcy5mYXI9dC5mYXIsdGhpcy5mb2N1cz10LmZvY3VzLHRoaXMuYXNwZWN0PXQuYXNwZWN0LHRoaXMudmlldz1udWxsPT09dC52aWV3P251bGw6T2JqZWN0LmFzc2lnbih7fSx0LnZpZXcpLHRoaXMuZmlsbUdhdWdlPXQuZmlsbUdhdWdlLHRoaXMuZmlsbU9mZnNldD10LmZpbG1PZmZzZXQsdGhpc31zZXRGb2NhbExlbmd0aCh0KXtjb25zdCBlPS41KnRoaXMuZ2V0RmlsbUhlaWdodCgpL3Q7dGhpcy5mb3Y9MipvNXQqTWF0aC5hdGFuKGUpLHRoaXMudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpfWdldEZvY2FsTGVuZ3RoKCl7Y29uc3QgdD1NYXRoLnRhbiguNSpyNXQqdGhpcy5mb3YpO3JldHVybi41KnRoaXMuZ2V0RmlsbUhlaWdodCgpL3R9Z2V0RWZmZWN0aXZlRk9WKCl7cmV0dXJuIDIqbzV0Kk1hdGguYXRhbihNYXRoLnRhbiguNSpyNXQqdGhpcy5mb3YpL3RoaXMuem9vbSl9Z2V0RmlsbVdpZHRoKCl7cmV0dXJuIHRoaXMuZmlsbUdhdWdlKk1hdGgubWluKHRoaXMuYXNwZWN0LDEpfWdldEZpbG1IZWlnaHQoKXtyZXR1cm4gdGhpcy5maWxtR2F1Z2UvTWF0aC5tYXgodGhpcy5hc3BlY3QsMSl9c2V0Vmlld09mZnNldCh0LGUsbixpLHIsbyl7dGhpcy5hc3BlY3Q9dC9lLG51bGw9PT10aGlzLnZpZXcmJih0aGlzLnZpZXc9e2VuYWJsZWQ6ITAsZnVsbFdpZHRoOjEsZnVsbEhlaWdodDoxLG9mZnNldFg6MCxvZmZzZXRZOjAsd2lkdGg6MSxoZWlnaHQ6MX0pLHRoaXMudmlldy5lbmFibGVkPSEwLHRoaXMudmlldy5mdWxsV2lkdGg9dCx0aGlzLnZpZXcuZnVsbEhlaWdodD1lLHRoaXMudmlldy5vZmZzZXRYPW4sdGhpcy52aWV3Lm9mZnNldFk9aSx0aGlzLnZpZXcud2lkdGg9cix0aGlzLnZpZXcuaGVpZ2h0PW8sdGhpcy51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCl9Y2xlYXJWaWV3T2Zmc2V0KCl7bnVsbCE9PXRoaXMudmlldyYmKHRoaXMudmlldy5lbmFibGVkPSExKSx0aGlzLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKX11cGRhdGVQcm9qZWN0aW9uTWF0cml4KCl7Y29uc3QgdD10aGlzLm5lYXI7bGV0IGU9dCpNYXRoLnRhbiguNSpyNXQqdGhpcy5mb3YpL3RoaXMuem9vbSxuPTIqZSxpPXRoaXMuYXNwZWN0Km4scj0tLjUqaTtjb25zdCBvPXRoaXMudmlldztpZihudWxsIT09dGhpcy52aWV3JiZ0aGlzLnZpZXcuZW5hYmxlZCl7Y29uc3QgdD1vLmZ1bGxXaWR0aCxhPW8uZnVsbEhlaWdodDtyKz1vLm9mZnNldFgqaS90LGUtPW8ub2Zmc2V0WSpuL2EsaSo9by53aWR0aC90LG4qPW8uaGVpZ2h0L2F9Y29uc3QgYT10aGlzLmZpbG1PZmZzZXQ7MCE9PWEmJihyKz10KmEvdGhpcy5nZXRGaWxtV2lkdGgoKSksdGhpcy5wcm9qZWN0aW9uTWF0cml4Lm1ha2VQZXJzcGVjdGl2ZShyLHIraSxlLGUtbix0LHRoaXMuZmFyKSx0aGlzLnByb2plY3Rpb25NYXRyaXhJbnZlcnNlLmNvcHkodGhpcy5wcm9qZWN0aW9uTWF0cml4KS5pbnZlcnQoKX10b0pTT04odCl7Y29uc3QgZT1zdXBlci50b0pTT04odCk7cmV0dXJuIGUub2JqZWN0LmZvdj10aGlzLmZvdixlLm9iamVjdC56b29tPXRoaXMuem9vbSxlLm9iamVjdC5uZWFyPXRoaXMubmVhcixlLm9iamVjdC5mYXI9dGhpcy5mYXIsZS5vYmplY3QuZm9jdXM9dGhpcy5mb2N1cyxlLm9iamVjdC5hc3BlY3Q9dGhpcy5hc3BlY3QsbnVsbCE9PXRoaXMudmlldyYmKGUub2JqZWN0LnZpZXc9T2JqZWN0LmFzc2lnbih7fSx0aGlzLnZpZXcpKSxlLm9iamVjdC5maWxtR2F1Z2U9dGhpcy5maWxtR2F1Z2UsZS5vYmplY3QuZmlsbU9mZnNldD10aGlzLmZpbG1PZmZzZXQsZX19cjZ0LnByb3RvdHlwZS5pc1BlcnNwZWN0aXZlQ2FtZXJhPSEwO2NvbnN0IG82dD05MDtjbGFzcyBhNnQgZXh0ZW5kcyBWM3R7Y29uc3RydWN0b3IodCxlLG4pe2lmKHN1cGVyKCksdGhpcy50eXBlPSJDdWJlQ2FtZXJhIiwhMCE9PW4uaXNXZWJHTEN1YmVSZW5kZXJUYXJnZXQpcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcigiVEhSRUUuQ3ViZUNhbWVyYTogVGhlIGNvbnN0cnVjdG9yIG5vdyBleHBlY3RzIGFuIGluc3RhbmNlIG9mIFdlYkdMQ3ViZVJlbmRlclRhcmdldCBhcyB0aGlyZCBwYXJhbWV0ZXIuIik7dGhpcy5yZW5kZXJUYXJnZXQ9bjtjb25zdCBpPW5ldyByNnQobzZ0LDEsdCxlKTtpLmxheWVycz10aGlzLmxheWVycyxpLnVwLnNldCgwLC0xLDApLGkubG9va0F0KG5ldyBINXQoMSwwLDApKSx0aGlzLmFkZChpKTtjb25zdCByPW5ldyByNnQobzZ0LDEsdCxlKTtyLmxheWVycz10aGlzLmxheWVycyxyLnVwLnNldCgwLC0xLDApLHIubG9va0F0KG5ldyBINXQoLTEsMCwwKSksdGhpcy5hZGQocik7Y29uc3Qgbz1uZXcgcjZ0KG82dCwxLHQsZSk7by5sYXllcnM9dGhpcy5sYXllcnMsby51cC5zZXQoMCwwLDEpLG8ubG9va0F0KG5ldyBINXQoMCwxLDApKSx0aGlzLmFkZChvKTtjb25zdCBhPW5ldyByNnQobzZ0LDEsdCxlKTthLmxheWVycz10aGlzLmxheWVycyxhLnVwLnNldCgwLDAsLTEpLGEubG9va0F0KG5ldyBINXQoMCwtMSwwKSksdGhpcy5hZGQoYSk7Y29uc3Qgcz1uZXcgcjZ0KG82dCwxLHQsZSk7cy5sYXllcnM9dGhpcy5sYXllcnMscy51cC5zZXQoMCwtMSwwKSxzLmxvb2tBdChuZXcgSDV0KDAsMCwxKSksdGhpcy5hZGQocyk7Y29uc3QgbD1uZXcgcjZ0KG82dCwxLHQsZSk7bC5sYXllcnM9dGhpcy5sYXllcnMsbC51cC5zZXQoMCwtMSwwKSxsLmxvb2tBdChuZXcgSDV0KDAsMCwtMSkpLHRoaXMuYWRkKGwpfXVwZGF0ZSh0LGUpe251bGw9PT10aGlzLnBhcmVudCYmdGhpcy51cGRhdGVNYXRyaXhXb3JsZCgpO2NvbnN0IG49dGhpcy5yZW5kZXJUYXJnZXQsW2kscixvLGEscyxsXT10aGlzLmNoaWxkcmVuLGM9dC54ci5lbmFibGVkLHU9dC5nZXRSZW5kZXJUYXJnZXQoKTt0LnhyLmVuYWJsZWQ9ITE7Y29uc3QgaD1uLnRleHR1cmUuZ2VuZXJhdGVNaXBtYXBzO24udGV4dHVyZS5nZW5lcmF0ZU1pcG1hcHM9ITEsdC5zZXRSZW5kZXJUYXJnZXQobiwwKSx0LnJlbmRlcihlLGkpLHQuc2V0UmVuZGVyVGFyZ2V0KG4sMSksdC5yZW5kZXIoZSxyKSx0LnNldFJlbmRlclRhcmdldChuLDIpLHQucmVuZGVyKGUsbyksdC5zZXRSZW5kZXJUYXJnZXQobiwzKSx0LnJlbmRlcihlLGEpLHQuc2V0UmVuZGVyVGFyZ2V0KG4sNCksdC5yZW5kZXIoZSxzKSxuLnRleHR1cmUuZ2VuZXJhdGVNaXBtYXBzPWgsdC5zZXRSZW5kZXJUYXJnZXQobiw1KSx0LnJlbmRlcihlLGwpLHQuc2V0UmVuZGVyVGFyZ2V0KHUpLHQueHIuZW5hYmxlZD1jfX1jbGFzcyBzNnQgZXh0ZW5kcyBONXR7Y29uc3RydWN0b3IodCxlLG4saSxyLG8sYSxzLGwsYyl7c3VwZXIodD12b2lkIDAhPT10P3Q6W10sZT12b2lkIDAhPT1lP2U6ZTJ0LG4saSxyLG8sYT12b2lkIDAhPT1hP2E6dzJ0LHMsbCxjKSx0aGlzLmZsaXBZPSExfWdldCBpbWFnZXMoKXtyZXR1cm4gdGhpcy5pbWFnZX1zZXQgaW1hZ2VzKHQpe3RoaXMuaW1hZ2U9dH19czZ0LnByb3RvdHlwZS5pc0N1YmVUZXh0dXJlPSEwO2NsYXNzIGw2dCBleHRlbmRzIE81dHtjb25zdHJ1Y3Rvcih0LGUsbil7TnVtYmVyLmlzSW50ZWdlcihlKSYmKGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xDdWJlUmVuZGVyVGFyZ2V0OiBjb25zdHJ1Y3RvciBzaWduYXR1cmUgaXMgbm93IFdlYkdMQ3ViZVJlbmRlclRhcmdldCggc2l6ZSwgb3B0aW9ucyApIiksZT1uKSxzdXBlcih0LHQsZSksdGhpcy50ZXh0dXJlPW5ldyBzNnQodm9pZCAwLChlPWV8fHt9KS5tYXBwaW5nLGUud3JhcFMsZS53cmFwVCxlLm1hZ0ZpbHRlcixlLm1pbkZpbHRlcixlLmZvcm1hdCxlLnR5cGUsZS5hbmlzb3Ryb3B5LGUuZW5jb2RpbmcpLHRoaXMudGV4dHVyZS5pc1JlbmRlclRhcmdldFRleHR1cmU9ITAsdGhpcy50ZXh0dXJlLmdlbmVyYXRlTWlwbWFwcz12b2lkIDAhPT1lLmdlbmVyYXRlTWlwbWFwcyYmZS5nZW5lcmF0ZU1pcG1hcHMsdGhpcy50ZXh0dXJlLm1pbkZpbHRlcj12b2lkIDAhPT1lLm1pbkZpbHRlcj9lLm1pbkZpbHRlcjpwMnQsdGhpcy50ZXh0dXJlLl9uZWVkc0ZsaXBFbnZNYXA9ITF9ZnJvbUVxdWlyZWN0YW5ndWxhclRleHR1cmUodCxlKXt0aGlzLnRleHR1cmUudHlwZT1lLnR5cGUsdGhpcy50ZXh0dXJlLmZvcm1hdD1TMnQsdGhpcy50ZXh0dXJlLmVuY29kaW5nPWUuZW5jb2RpbmcsdGhpcy50ZXh0dXJlLmdlbmVyYXRlTWlwbWFwcz1lLmdlbmVyYXRlTWlwbWFwcyx0aGlzLnRleHR1cmUubWluRmlsdGVyPWUubWluRmlsdGVyLHRoaXMudGV4dHVyZS5tYWdGaWx0ZXI9ZS5tYWdGaWx0ZXI7Y29uc3Qgbj17dW5pZm9ybXM6e3RFcXVpcmVjdDp7dmFsdWU6bnVsbH19LHZlcnRleFNoYWRlcjoiXG5cblx0XHRcdFx0dmFyeWluZyB2ZWMzIHZXb3JsZERpcmVjdGlvbjtcblxuXHRcdFx0XHR2ZWMzIHRyYW5zZm9ybURpcmVjdGlvbiggaW4gdmVjMyBkaXIsIGluIG1hdDQgbWF0cml4ICkge1xuXG5cdFx0XHRcdFx0cmV0dXJuIG5vcm1hbGl6ZSggKCBtYXRyaXggKiB2ZWM0KCBkaXIsIDAuMCApICkueHl6ICk7XG5cblx0XHRcdFx0fVxuXG5cdFx0XHRcdHZvaWQgbWFpbigpIHtcblxuXHRcdFx0XHRcdHZXb3JsZERpcmVjdGlvbiA9IHRyYW5zZm9ybURpcmVjdGlvbiggcG9zaXRpb24sIG1vZGVsTWF0cml4ICk7XG5cblx0XHRcdFx0XHQjaW5jbHVkZSA8YmVnaW5fdmVydGV4PlxuXHRcdFx0XHRcdCNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD5cblxuXHRcdFx0XHR9XG5cdFx0XHQiLGZyYWdtZW50U2hhZGVyOiJcblxuXHRcdFx0XHR1bmlmb3JtIHNhbXBsZXIyRCB0RXF1aXJlY3Q7XG5cblx0XHRcdFx0dmFyeWluZyB2ZWMzIHZXb3JsZERpcmVjdGlvbjtcblxuXHRcdFx0XHQjaW5jbHVkZSA8Y29tbW9uPlxuXG5cdFx0XHRcdHZvaWQgbWFpbigpIHtcblxuXHRcdFx0XHRcdHZlYzMgZGlyZWN0aW9uID0gbm9ybWFsaXplKCB2V29ybGREaXJlY3Rpb24gKTtcblxuXHRcdFx0XHRcdHZlYzIgc2FtcGxlVVYgPSBlcXVpcmVjdFV2KCBkaXJlY3Rpb24gKTtcblxuXHRcdFx0XHRcdGdsX0ZyYWdDb2xvciA9IHRleHR1cmUyRCggdEVxdWlyZWN0LCBzYW1wbGVVViApO1xuXG5cdFx0XHRcdH1cblx0XHRcdCJ9LGk9bmV3IEo0dCg1LDUsNSkscj1uZXcgbjZ0KHtuYW1lOiJDdWJlbWFwRnJvbUVxdWlyZWN0Iix1bmlmb3JtczpRNHQobi51bmlmb3JtcyksdmVydGV4U2hhZGVyOm4udmVydGV4U2hhZGVyLGZyYWdtZW50U2hhZGVyOm4uZnJhZ21lbnRTaGFkZXIsc2lkZToxLGJsZW5kaW5nOjB9KTtyLnVuaWZvcm1zLnRFcXVpcmVjdC52YWx1ZT1lO2NvbnN0IG89bmV3IEs0dChpLHIpLGE9ZS5taW5GaWx0ZXI7ZS5taW5GaWx0ZXI9PT1tMnQmJihlLm1pbkZpbHRlcj1wMnQpO3JldHVybiBuZXcgYTZ0KDEsMTAsdGhpcykudXBkYXRlKHQsbyksZS5taW5GaWx0ZXI9YSxvLmdlb21ldHJ5LmRpc3Bvc2UoKSxvLm1hdGVyaWFsLmRpc3Bvc2UoKSx0aGlzfWNsZWFyKHQsZSxuLGkpe2NvbnN0IHI9dC5nZXRSZW5kZXJUYXJnZXQoKTtmb3IobGV0IHI9MDtyPDY7cisrKXQuc2V0UmVuZGVyVGFyZ2V0KHRoaXMsciksdC5jbGVhcihlLG4saSk7dC5zZXRSZW5kZXJUYXJnZXQocil9fWw2dC5wcm90b3R5cGUuaXNXZWJHTEN1YmVSZW5kZXJUYXJnZXQ9ITA7Y29uc3QgYzZ0PW5ldyBINXQsdTZ0PW5ldyBINXQsaDZ0PW5ldyBBNXQ7Y2xhc3MgZDZ0e2NvbnN0cnVjdG9yKHQ9bmV3IEg1dCgxLDAsMCksZT0wKXt0aGlzLm5vcm1hbD10LHRoaXMuY29uc3RhbnQ9ZX1zZXQodCxlKXtyZXR1cm4gdGhpcy5ub3JtYWwuY29weSh0KSx0aGlzLmNvbnN0YW50PWUsdGhpc31zZXRDb21wb25lbnRzKHQsZSxuLGkpe3JldHVybiB0aGlzLm5vcm1hbC5zZXQodCxlLG4pLHRoaXMuY29uc3RhbnQ9aSx0aGlzfXNldEZyb21Ob3JtYWxBbmRDb3BsYW5hclBvaW50KHQsZSl7cmV0dXJuIHRoaXMubm9ybWFsLmNvcHkodCksdGhpcy5jb25zdGFudD0tZS5kb3QodGhpcy5ub3JtYWwpLHRoaXN9c2V0RnJvbUNvcGxhbmFyUG9pbnRzKHQsZSxuKXtjb25zdCBpPWM2dC5zdWJWZWN0b3JzKG4sZSkuY3Jvc3ModTZ0LnN1YlZlY3RvcnModCxlKSkubm9ybWFsaXplKCk7cmV0dXJuIHRoaXMuc2V0RnJvbU5vcm1hbEFuZENvcGxhbmFyUG9pbnQoaSx0KSx0aGlzfWNvcHkodCl7cmV0dXJuIHRoaXMubm9ybWFsLmNvcHkodC5ub3JtYWwpLHRoaXMuY29uc3RhbnQ9dC5jb25zdGFudCx0aGlzfW5vcm1hbGl6ZSgpe2NvbnN0IHQ9MS90aGlzLm5vcm1hbC5sZW5ndGgoKTtyZXR1cm4gdGhpcy5ub3JtYWwubXVsdGlwbHlTY2FsYXIodCksdGhpcy5jb25zdGFudCo9dCx0aGlzfW5lZ2F0ZSgpe3JldHVybiB0aGlzLmNvbnN0YW50Kj0tMSx0aGlzLm5vcm1hbC5uZWdhdGUoKSx0aGlzfWRpc3RhbmNlVG9Qb2ludCh0KXtyZXR1cm4gdGhpcy5ub3JtYWwuZG90KHQpK3RoaXMuY29uc3RhbnR9ZGlzdGFuY2VUb1NwaGVyZSh0KXtyZXR1cm4gdGhpcy5kaXN0YW5jZVRvUG9pbnQodC5jZW50ZXIpLXQucmFkaXVzfXByb2plY3RQb2ludCh0LGUpe3JldHVybiBlLmNvcHkodGhpcy5ub3JtYWwpLm11bHRpcGx5U2NhbGFyKC10aGlzLmRpc3RhbmNlVG9Qb2ludCh0KSkuYWRkKHQpfWludGVyc2VjdExpbmUodCxlKXtjb25zdCBuPXQuZGVsdGEoYzZ0KSxpPXRoaXMubm9ybWFsLmRvdChuKTtpZigwPT09aSlyZXR1cm4gMD09PXRoaXMuZGlzdGFuY2VUb1BvaW50KHQuc3RhcnQpP2UuY29weSh0LnN0YXJ0KTpudWxsO2NvbnN0IHI9LSh0LnN0YXJ0LmRvdCh0aGlzLm5vcm1hbCkrdGhpcy5jb25zdGFudCkvaTtyZXR1cm4gcjwwfHxyPjE/bnVsbDplLmNvcHkobikubXVsdGlwbHlTY2FsYXIocikuYWRkKHQuc3RhcnQpfWludGVyc2VjdHNMaW5lKHQpe2NvbnN0IGU9dGhpcy5kaXN0YW5jZVRvUG9pbnQodC5zdGFydCksbj10aGlzLmRpc3RhbmNlVG9Qb2ludCh0LmVuZCk7cmV0dXJuIGU8MCYmbj4wfHxuPDAmJmU+MH1pbnRlcnNlY3RzQm94KHQpe3JldHVybiB0LmludGVyc2VjdHNQbGFuZSh0aGlzKX1pbnRlcnNlY3RzU3BoZXJlKHQpe3JldHVybiB0LmludGVyc2VjdHNQbGFuZSh0aGlzKX1jb3BsYW5hclBvaW50KHQpe3JldHVybiB0LmNvcHkodGhpcy5ub3JtYWwpLm11bHRpcGx5U2NhbGFyKC10aGlzLmNvbnN0YW50KX1hcHBseU1hdHJpeDQodCxlKXtjb25zdCBuPWV8fGg2dC5nZXROb3JtYWxNYXRyaXgodCksaT10aGlzLmNvcGxhbmFyUG9pbnQoYzZ0KS5hcHBseU1hdHJpeDQodCkscj10aGlzLm5vcm1hbC5hcHBseU1hdHJpeDMobikubm9ybWFsaXplKCk7cmV0dXJuIHRoaXMuY29uc3RhbnQ9LWkuZG90KHIpLHRoaXN9dHJhbnNsYXRlKHQpe3JldHVybiB0aGlzLmNvbnN0YW50LT10LmRvdCh0aGlzLm5vcm1hbCksdGhpc31lcXVhbHModCl7cmV0dXJuIHQubm9ybWFsLmVxdWFscyh0aGlzLm5vcm1hbCkmJnQuY29uc3RhbnQ9PT10aGlzLmNvbnN0YW50fWNsb25lKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMpfX1kNnQucHJvdG90eXBlLmlzUGxhbmU9ITA7Y29uc3QgcDZ0PW5ldyBzM3QsZjZ0PW5ldyBINXQ7Y2xhc3MgbTZ0e2NvbnN0cnVjdG9yKHQ9bmV3IGQ2dCxlPW5ldyBkNnQsbj1uZXcgZDZ0LGk9bmV3IGQ2dCxyPW5ldyBkNnQsbz1uZXcgZDZ0KXt0aGlzLnBsYW5lcz1bdCxlLG4saSxyLG9dfXNldCh0LGUsbixpLHIsbyl7Y29uc3QgYT10aGlzLnBsYW5lcztyZXR1cm4gYVswXS5jb3B5KHQpLGFbMV0uY29weShlKSxhWzJdLmNvcHkobiksYVszXS5jb3B5KGkpLGFbNF0uY29weShyKSxhWzVdLmNvcHkobyksdGhpc31jb3B5KHQpe2NvbnN0IGU9dGhpcy5wbGFuZXM7Zm9yKGxldCBuPTA7bjw2O24rKyllW25dLmNvcHkodC5wbGFuZXNbbl0pO3JldHVybiB0aGlzfXNldEZyb21Qcm9qZWN0aW9uTWF0cml4KHQpe2NvbnN0IGU9dGhpcy5wbGFuZXMsbj10LmVsZW1lbnRzLGk9blswXSxyPW5bMV0sbz1uWzJdLGE9blszXSxzPW5bNF0sbD1uWzVdLGM9bls2XSx1PW5bN10saD1uWzhdLGQ9bls5XSxwPW5bMTBdLGY9blsxMV0sbT1uWzEyXSxnPW5bMTNdLF89blsxNF0seT1uWzE1XTtyZXR1cm4gZVswXS5zZXRDb21wb25lbnRzKGEtaSx1LXMsZi1oLHktbSkubm9ybWFsaXplKCksZVsxXS5zZXRDb21wb25lbnRzKGEraSx1K3MsZitoLHkrbSkubm9ybWFsaXplKCksZVsyXS5zZXRDb21wb25lbnRzKGErcix1K2wsZitkLHkrZykubm9ybWFsaXplKCksZVszXS5zZXRDb21wb25lbnRzKGEtcix1LWwsZi1kLHktZykubm9ybWFsaXplKCksZVs0XS5zZXRDb21wb25lbnRzKGEtbyx1LWMsZi1wLHktXykubm9ybWFsaXplKCksZVs1XS5zZXRDb21wb25lbnRzKGErbyx1K2MsZitwLHkrXykubm9ybWFsaXplKCksdGhpc31pbnRlcnNlY3RzT2JqZWN0KHQpe2NvbnN0IGU9dC5nZW9tZXRyeTtyZXR1cm4gbnVsbD09PWUuYm91bmRpbmdTcGhlcmUmJmUuY29tcHV0ZUJvdW5kaW5nU3BoZXJlKCkscDZ0LmNvcHkoZS5ib3VuZGluZ1NwaGVyZSkuYXBwbHlNYXRyaXg0KHQubWF0cml4V29ybGQpLHRoaXMuaW50ZXJzZWN0c1NwaGVyZShwNnQpfWludGVyc2VjdHNTcHJpdGUodCl7cmV0dXJuIHA2dC5jZW50ZXIuc2V0KDAsMCwwKSxwNnQucmFkaXVzPS43MDcxMDY3ODExODY1NDc2LHA2dC5hcHBseU1hdHJpeDQodC5tYXRyaXhXb3JsZCksdGhpcy5pbnRlcnNlY3RzU3BoZXJlKHA2dCl9aW50ZXJzZWN0c1NwaGVyZSh0KXtjb25zdCBlPXRoaXMucGxhbmVzLG49dC5jZW50ZXIsaT0tdC5yYWRpdXM7Zm9yKGxldCB0PTA7dDw2O3QrKyl7aWYoZVt0XS5kaXN0YW5jZVRvUG9pbnQobik8aSlyZXR1cm4hMX1yZXR1cm4hMH1pbnRlcnNlY3RzQm94KHQpe2NvbnN0IGU9dGhpcy5wbGFuZXM7Zm9yKGxldCBuPTA7bjw2O24rKyl7Y29uc3QgaT1lW25dO2lmKGY2dC54PWkubm9ybWFsLng+MD90Lm1heC54OnQubWluLngsZjZ0Lnk9aS5ub3JtYWwueT4wP3QubWF4Lnk6dC5taW4ueSxmNnQuej1pLm5vcm1hbC56PjA/dC5tYXguejp0Lm1pbi56LGkuZGlzdGFuY2VUb1BvaW50KGY2dCk8MClyZXR1cm4hMX1yZXR1cm4hMH1jb250YWluc1BvaW50KHQpe2NvbnN0IGU9dGhpcy5wbGFuZXM7Zm9yKGxldCBuPTA7bjw2O24rKylpZihlW25dLmRpc3RhbmNlVG9Qb2ludCh0KTwwKXJldHVybiExO3JldHVybiEwfWNsb25lKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMpfX1mdW5jdGlvbiBnNnQoKXtsZXQgdD1udWxsLGU9ITEsbj1udWxsLGk9bnVsbDtmdW5jdGlvbiByKGUsbyl7bihlLG8pLGk9dC5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUocil9cmV0dXJue3N0YXJ0OmZ1bmN0aW9uKCl7ITAhPT1lJiZudWxsIT09biYmKGk9dC5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUociksZT0hMCl9LHN0b3A6ZnVuY3Rpb24oKXt0LmNhbmNlbEFuaW1hdGlvbkZyYW1lKGkpLGU9ITF9LHNldEFuaW1hdGlvbkxvb3A6ZnVuY3Rpb24odCl7bj10fSxzZXRDb250ZXh0OmZ1bmN0aW9uKGUpe3Q9ZX19fWZ1bmN0aW9uIF82dCh0LGUpe2NvbnN0IG49ZS5pc1dlYkdMMixpPW5ldyBXZWFrTWFwO3JldHVybntnZXQ6ZnVuY3Rpb24gcih0KXtyZXR1cm4gdC5pc0ludGVybGVhdmVkQnVmZmVyQXR0cmlidXRlJiYodD10LmRhdGEpLGkuZ2V0KHQpfSxyZW1vdmU6ZnVuY3Rpb24gbyhlKXtlLmlzSW50ZXJsZWF2ZWRCdWZmZXJBdHRyaWJ1dGUmJihlPWUuZGF0YSk7Y29uc3Qgbj1pLmdldChlKTtuJiYodC5kZWxldGVCdWZmZXIobi5idWZmZXIpLGkuZGVsZXRlKGUpKX0sdXBkYXRlOmZ1bmN0aW9uIGEoZSxyKXtpZihlLmlzR0xCdWZmZXJBdHRyaWJ1dGUpe2NvbnN0IHQ9aS5nZXQoZSk7cmV0dXJuIHZvaWQoKCF0fHx0LnZlcnNpb248ZS52ZXJzaW9uKSYmaS5zZXQoZSx7YnVmZmVyOmUuYnVmZmVyLHR5cGU6ZS50eXBlLGJ5dGVzUGVyRWxlbWVudDplLmVsZW1lbnRTaXplLHZlcnNpb246ZS52ZXJzaW9ufSkpfWUuaXNJbnRlcmxlYXZlZEJ1ZmZlckF0dHJpYnV0ZSYmKGU9ZS5kYXRhKTtjb25zdCBvPWkuZ2V0KGUpO3ZvaWQgMD09PW8/aS5zZXQoZSwoZnVuY3Rpb24gYShlLGkpe2NvbnN0IHI9ZS5hcnJheSxvPWUudXNhZ2UsYT10LmNyZWF0ZUJ1ZmZlcigpO3QuYmluZEJ1ZmZlcihpLGEpLHQuYnVmZmVyRGF0YShpLHIsbyksZS5vblVwbG9hZENhbGxiYWNrKCk7bGV0IHM9NTEyNjtyZXR1cm4gciBpbnN0YW5jZW9mIEZsb2F0MzJBcnJheT9zPTUxMjY6ciBpbnN0YW5jZW9mIEZsb2F0NjRBcnJheT9jb25zb2xlLndhcm4oIlRIUkVFLldlYkdMQXR0cmlidXRlczogVW5zdXBwb3J0ZWQgZGF0YSBidWZmZXIgZm9ybWF0OiBGbG9hdDY0QXJyYXkuIik6ciBpbnN0YW5jZW9mIFVpbnQxNkFycmF5P2UuaXNGbG9hdDE2QnVmZmVyQXR0cmlidXRlP24/cz01MTMxOmNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xBdHRyaWJ1dGVzOiBVc2FnZSBvZiBGbG9hdDE2QnVmZmVyQXR0cmlidXRlIHJlcXVpcmVzIFdlYkdMMi4iKTpzPTUxMjM6ciBpbnN0YW5jZW9mIEludDE2QXJyYXk/cz01MTIyOnIgaW5zdGFuY2VvZiBVaW50MzJBcnJheT9zPTUxMjU6ciBpbnN0YW5jZW9mIEludDMyQXJyYXk/cz01MTI0OnIgaW5zdGFuY2VvZiBJbnQ4QXJyYXk/cz01MTIwOihyIGluc3RhbmNlb2YgVWludDhBcnJheXx8ciBpbnN0YW5jZW9mIFVpbnQ4Q2xhbXBlZEFycmF5KSYmKHM9NTEyMSkse2J1ZmZlcjphLHR5cGU6cyxieXRlc1BlckVsZW1lbnQ6ci5CWVRFU19QRVJfRUxFTUVOVCx2ZXJzaW9uOmUudmVyc2lvbn19KShlLHIpKTpvLnZlcnNpb248ZS52ZXJzaW9uJiYoIShmdW5jdGlvbiBzKGUsaSxyKXtjb25zdCBvPWkuYXJyYXksYT1pLnVwZGF0ZVJhbmdlO3QuYmluZEJ1ZmZlcihyLGUpLC0xPT09YS5jb3VudD90LmJ1ZmZlclN1YkRhdGEociwwLG8pOihuP3QuYnVmZmVyU3ViRGF0YShyLGEub2Zmc2V0Km8uQllURVNfUEVSX0VMRU1FTlQsbyxhLm9mZnNldCxhLmNvdW50KTp0LmJ1ZmZlclN1YkRhdGEocixhLm9mZnNldCpvLkJZVEVTX1BFUl9FTEVNRU5ULG8uc3ViYXJyYXkoYS5vZmZzZXQsYS5vZmZzZXQrYS5jb3VudCkpLGEuY291bnQ9LTEpfSkoby5idWZmZXIsZSxyKSxvLnZlcnNpb249ZS52ZXJzaW9uKX19fWNsYXNzIHk2dCBleHRlbmRzIE40dHtjb25zdHJ1Y3Rvcih0PTEsZT0xLG49MSxpPTEpe3N1cGVyKCksdGhpcy50eXBlPSJQbGFuZUdlb21ldHJ5Iix0aGlzLnBhcmFtZXRlcnM9e3dpZHRoOnQsaGVpZ2h0OmUsd2lkdGhTZWdtZW50czpuLGhlaWdodFNlZ21lbnRzOml9O2NvbnN0IHI9dC8yLG89ZS8yLGE9TWF0aC5mbG9vcihuKSxzPU1hdGguZmxvb3IoaSksbD1hKzEsYz1zKzEsdT10L2EsaD1lL3MsZD1bXSxwPVtdLGY9W10sbT1bXTtmb3IobGV0IHQ9MDt0PGM7dCsrKXtjb25zdCBlPXQqaC1vO2ZvcihsZXQgbj0wO248bDtuKyspe3AucHVzaChuKnUtciwtZSwwKSxmLnB1c2goMCwwLDEpLG0ucHVzaChuL2EpLG0ucHVzaCgxLXQvcyl9fWZvcihsZXQgdD0wO3Q8czt0KyspZm9yKGxldCBlPTA7ZTxhO2UrKyl7Y29uc3Qgbj1lK2wqKHQrMSksaT1lKzErbCoodCsxKSxyPWUrMStsKnQ7ZC5wdXNoKGUrbCp0LG4sciksZC5wdXNoKG4saSxyKX10aGlzLnNldEluZGV4KGQpLHRoaXMuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IGI0dChwLDMpKSx0aGlzLnNldEF0dHJpYnV0ZSgibm9ybWFsIixuZXcgYjR0KGYsMykpLHRoaXMuc2V0QXR0cmlidXRlKCJ1diIsbmV3IGI0dChtLDIpKX1zdGF0aWMgZnJvbUpTT04odCl7cmV0dXJuIG5ldyB5NnQodC53aWR0aCx0LmhlaWdodCx0LndpZHRoU2VnbWVudHMsdC5oZWlnaHRTZWdtZW50cyl9fWNvbnN0IHY2dD17YWxwaGFtYXBfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfQUxQSEFNQVBcblx0ZGlmZnVzZUNvbG9yLmEgKj0gdGV4dHVyZTJEKCBhbHBoYU1hcCwgdlV2ICkuZztcbiNlbmRpZiIsYWxwaGFtYXBfcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9BTFBIQU1BUFxuXHR1bmlmb3JtIHNhbXBsZXIyRCBhbHBoYU1hcDtcbiNlbmRpZiIsYWxwaGF0ZXN0X2ZyYWdtZW50OiIjaWZkZWYgQUxQSEFURVNUXG5cdGlmICggZGlmZnVzZUNvbG9yLmEgPCBBTFBIQVRFU1QgKSBkaXNjYXJkO1xuI2VuZGlmIixhb21hcF9mcmFnbWVudDoiI2lmZGVmIFVTRV9BT01BUFxuXHRmbG9hdCBhbWJpZW50T2NjbHVzaW9uID0gKCB0ZXh0dXJlMkQoIGFvTWFwLCB2VXYyICkuciAtIDEuMCApICogYW9NYXBJbnRlbnNpdHkgKyAxLjA7XG5cdHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZSAqPSBhbWJpZW50T2NjbHVzaW9uO1xuXHQjaWYgZGVmaW5lZCggVVNFX0VOVk1BUCApICYmIGRlZmluZWQoIFNUQU5EQVJEIClcblx0XHRmbG9hdCBkb3ROViA9IHNhdHVyYXRlKCBkb3QoIGdlb21ldHJ5Lm5vcm1hbCwgZ2VvbWV0cnkudmlld0RpciApICk7XG5cdFx0cmVmbGVjdGVkTGlnaHQuaW5kaXJlY3RTcGVjdWxhciAqPSBjb21wdXRlU3BlY3VsYXJPY2NsdXNpb24oIGRvdE5WLCBhbWJpZW50T2NjbHVzaW9uLCBtYXRlcmlhbC5zcGVjdWxhclJvdWdobmVzcyApO1xuXHQjZW5kaWZcbiNlbmRpZiIsYW9tYXBfcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9BT01BUFxuXHR1bmlmb3JtIHNhbXBsZXIyRCBhb01hcDtcblx0dW5pZm9ybSBmbG9hdCBhb01hcEludGVuc2l0eTtcbiNlbmRpZiIsYmVnaW5fdmVydGV4OiJ2ZWMzIHRyYW5zZm9ybWVkID0gdmVjMyggcG9zaXRpb24gKTsiLGJlZ2lubm9ybWFsX3ZlcnRleDoidmVjMyBvYmplY3ROb3JtYWwgPSB2ZWMzKCBub3JtYWwgKTtcbiNpZmRlZiBVU0VfVEFOR0VOVFxuXHR2ZWMzIG9iamVjdFRhbmdlbnQgPSB2ZWMzKCB0YW5nZW50Lnh5eiApO1xuI2VuZGlmIixic2RmczoidmVjMiBpbnRlZ3JhdGVTcGVjdWxhckJSREYoIGNvbnN0IGluIGZsb2F0IGRvdE5WLCBjb25zdCBpbiBmbG9hdCByb3VnaG5lc3MgKSB7XG5cdGNvbnN0IHZlYzQgYzAgPSB2ZWM0KCAtIDEsIC0gMC4wMjc1LCAtIDAuNTcyLCAwLjAyMiApO1xuXHRjb25zdCB2ZWM0IGMxID0gdmVjNCggMSwgMC4wNDI1LCAxLjA0LCAtIDAuMDQgKTtcblx0dmVjNCByID0gcm91Z2huZXNzICogYzAgKyBjMTtcblx0ZmxvYXQgYTAwNCA9IG1pbiggci54ICogci54LCBleHAyKCAtIDkuMjggKiBkb3ROViApICkgKiByLnggKyByLnk7XG5cdHJldHVybiB2ZWMyKCAtMS4wNCwgMS4wNCApICogYTAwNCArIHIuenc7XG59XG5mbG9hdCBwdW5jdHVhbExpZ2h0SW50ZW5zaXR5VG9JcnJhZGlhbmNlRmFjdG9yKCBjb25zdCBpbiBmbG9hdCBsaWdodERpc3RhbmNlLCBjb25zdCBpbiBmbG9hdCBjdXRvZmZEaXN0YW5jZSwgY29uc3QgaW4gZmxvYXQgZGVjYXlFeHBvbmVudCApIHtcbiNpZiBkZWZpbmVkICggUEhZU0lDQUxMWV9DT1JSRUNUX0xJR0hUUyApXG5cdGZsb2F0IGRpc3RhbmNlRmFsbG9mZiA9IDEuMCAvIG1heCggcG93KCBsaWdodERpc3RhbmNlLCBkZWNheUV4cG9uZW50ICksIDAuMDEgKTtcblx0aWYoIGN1dG9mZkRpc3RhbmNlID4gMC4wICkge1xuXHRcdGRpc3RhbmNlRmFsbG9mZiAqPSBwb3cyKCBzYXR1cmF0ZSggMS4wIC0gcG93NCggbGlnaHREaXN0YW5jZSAvIGN1dG9mZkRpc3RhbmNlICkgKSApO1xuXHR9XG5cdHJldHVybiBkaXN0YW5jZUZhbGxvZmY7XG4jZWxzZVxuXHRpZiggY3V0b2ZmRGlzdGFuY2UgPiAwLjAgJiYgZGVjYXlFeHBvbmVudCA+IDAuMCApIHtcblx0XHRyZXR1cm4gcG93KCBzYXR1cmF0ZSggLWxpZ2h0RGlzdGFuY2UgLyBjdXRvZmZEaXN0YW5jZSArIDEuMCApLCBkZWNheUV4cG9uZW50ICk7XG5cdH1cblx0cmV0dXJuIDEuMDtcbiNlbmRpZlxufVxudmVjMyBCUkRGX0RpZmZ1c2VfTGFtYmVydCggY29uc3QgaW4gdmVjMyBkaWZmdXNlQ29sb3IgKSB7XG5cdHJldHVybiBSRUNJUFJPQ0FMX1BJICogZGlmZnVzZUNvbG9yO1xufVxudmVjMyBGX1NjaGxpY2soIGNvbnN0IGluIHZlYzMgZjAsIGNvbnN0IGluIHZlYzMgZjkwLCBjb25zdCBpbiBmbG9hdCBkb3RWSCApIHtcblx0ZmxvYXQgZnJlc25lbCA9IGV4cDIoICggLTUuNTU0NzMgKiBkb3RWSCAtIDYuOTgzMTYgKSAqIGRvdFZIICk7XG5cdHJldHVybiAoIGY5MCAtIGYwICkgKiBmcmVzbmVsICsgZjA7XG59XG52ZWMzIEZfU2NobGlja19Sb3VnaG5lc3NEZXBlbmRlbnQoIGNvbnN0IGluIHZlYzMgRjAsIGNvbnN0IGluIGZsb2F0IGRvdE5WLCBjb25zdCBpbiBmbG9hdCByb3VnaG5lc3MgKSB7XG5cdGZsb2F0IGZyZXNuZWwgPSBleHAyKCAoIC01LjU1NDczICogZG90TlYgLSA2Ljk4MzE2ICkgKiBkb3ROViApO1xuXHR2ZWMzIEZyID0gbWF4KCB2ZWMzKCAxLjAgLSByb3VnaG5lc3MgKSwgRjAgKSAtIEYwO1xuXHRyZXR1cm4gRnIgKiBmcmVzbmVsICsgRjA7XG59XG5mbG9hdCBHX0dHWF9TbWl0aCggY29uc3QgaW4gZmxvYXQgYWxwaGEsIGNvbnN0IGluIGZsb2F0IGRvdE5MLCBjb25zdCBpbiBmbG9hdCBkb3ROViApIHtcblx0ZmxvYXQgYTIgPSBwb3cyKCBhbHBoYSApO1xuXHRmbG9hdCBnbCA9IGRvdE5MICsgc3FydCggYTIgKyAoIDEuMCAtIGEyICkgKiBwb3cyKCBkb3ROTCApICk7XG5cdGZsb2F0IGd2ID0gZG90TlYgKyBzcXJ0KCBhMiArICggMS4wIC0gYTIgKSAqIHBvdzIoIGRvdE5WICkgKTtcblx0cmV0dXJuIDEuMCAvICggZ2wgKiBndiApO1xufVxuZmxvYXQgR19HR1hfU21pdGhDb3JyZWxhdGVkKCBjb25zdCBpbiBmbG9hdCBhbHBoYSwgY29uc3QgaW4gZmxvYXQgZG90TkwsIGNvbnN0IGluIGZsb2F0IGRvdE5WICkge1xuXHRmbG9hdCBhMiA9IHBvdzIoIGFscGhhICk7XG5cdGZsb2F0IGd2ID0gZG90TkwgKiBzcXJ0KCBhMiArICggMS4wIC0gYTIgKSAqIHBvdzIoIGRvdE5WICkgKTtcblx0ZmxvYXQgZ2wgPSBkb3ROViAqIHNxcnQoIGEyICsgKCAxLjAgLSBhMiApICogcG93MiggZG90TkwgKSApO1xuXHRyZXR1cm4gMC41IC8gbWF4KCBndiArIGdsLCBFUFNJTE9OICk7XG59XG5mbG9hdCBEX0dHWCggY29uc3QgaW4gZmxvYXQgYWxwaGEsIGNvbnN0IGluIGZsb2F0IGRvdE5IICkge1xuXHRmbG9hdCBhMiA9IHBvdzIoIGFscGhhICk7XG5cdGZsb2F0IGRlbm9tID0gcG93MiggZG90TkggKSAqICggYTIgLSAxLjAgKSArIDEuMDtcblx0cmV0dXJuIFJFQ0lQUk9DQUxfUEkgKiBhMiAvIHBvdzIoIGRlbm9tICk7XG59XG52ZWMzIEJSREZfU3BlY3VsYXJfR0dYKCBjb25zdCBpbiBJbmNpZGVudExpZ2h0IGluY2lkZW50TGlnaHQsIGNvbnN0IGluIHZlYzMgdmlld0RpciwgY29uc3QgaW4gdmVjMyBub3JtYWwsIGNvbnN0IGluIHZlYzMgZjAsIGNvbnN0IGluIHZlYzMgZjkwLCBjb25zdCBpbiBmbG9hdCByb3VnaG5lc3MgKSB7XG5cdGZsb2F0IGFscGhhID0gcG93Miggcm91Z2huZXNzICk7XG5cdHZlYzMgaGFsZkRpciA9IG5vcm1hbGl6ZSggaW5jaWRlbnRMaWdodC5kaXJlY3Rpb24gKyB2aWV3RGlyICk7XG5cdGZsb2F0IGRvdE5MID0gc2F0dXJhdGUoIGRvdCggbm9ybWFsLCBpbmNpZGVudExpZ2h0LmRpcmVjdGlvbiApICk7XG5cdGZsb2F0IGRvdE5WID0gc2F0dXJhdGUoIGRvdCggbm9ybWFsLCB2aWV3RGlyICkgKTtcblx0ZmxvYXQgZG90TkggPSBzYXR1cmF0ZSggZG90KCBub3JtYWwsIGhhbGZEaXIgKSApO1xuXHRmbG9hdCBkb3RMSCA9IHNhdHVyYXRlKCBkb3QoIGluY2lkZW50TGlnaHQuZGlyZWN0aW9uLCBoYWxmRGlyICkgKTtcblx0dmVjMyBGID0gRl9TY2hsaWNrKCBmMCwgZjkwLCBkb3RMSCApO1xuXHRmbG9hdCBHID0gR19HR1hfU21pdGhDb3JyZWxhdGVkKCBhbHBoYSwgZG90TkwsIGRvdE5WICk7XG5cdGZsb2F0IEQgPSBEX0dHWCggYWxwaGEsIGRvdE5IICk7XG5cdHJldHVybiBGICogKCBHICogRCApO1xufVxudmVjMiBMVENfVXYoIGNvbnN0IGluIHZlYzMgTiwgY29uc3QgaW4gdmVjMyBWLCBjb25zdCBpbiBmbG9hdCByb3VnaG5lc3MgKSB7XG5cdGNvbnN0IGZsb2F0IExVVF9TSVpFID0gNjQuMDtcblx0Y29uc3QgZmxvYXQgTFVUX1NDQUxFID0gKCBMVVRfU0laRSAtIDEuMCApIC8gTFVUX1NJWkU7XG5cdGNvbnN0IGZsb2F0IExVVF9CSUFTID0gMC41IC8gTFVUX1NJWkU7XG5cdGZsb2F0IGRvdE5WID0gc2F0dXJhdGUoIGRvdCggTiwgViApICk7XG5cdHZlYzIgdXYgPSB2ZWMyKCByb3VnaG5lc3MsIHNxcnQoIDEuMCAtIGRvdE5WICkgKTtcblx0dXYgPSB1diAqIExVVF9TQ0FMRSArIExVVF9CSUFTO1xuXHRyZXR1cm4gdXY7XG59XG5mbG9hdCBMVENfQ2xpcHBlZFNwaGVyZUZvcm1GYWN0b3IoIGNvbnN0IGluIHZlYzMgZiApIHtcblx0ZmxvYXQgbCA9IGxlbmd0aCggZiApO1xuXHRyZXR1cm4gbWF4KCAoIGwgKiBsICsgZi56ICkgLyAoIGwgKyAxLjAgKSwgMC4wICk7XG59XG52ZWMzIExUQ19FZGdlVmVjdG9yRm9ybUZhY3RvciggY29uc3QgaW4gdmVjMyB2MSwgY29uc3QgaW4gdmVjMyB2MiApIHtcblx0ZmxvYXQgeCA9IGRvdCggdjEsIHYyICk7XG5cdGZsb2F0IHkgPSBhYnMoIHggKTtcblx0ZmxvYXQgYSA9IDAuODU0Mzk4NSArICggMC40OTY1MTU1ICsgMC4wMTQ1MjA2ICogeSApICogeTtcblx0ZmxvYXQgYiA9IDMuNDE3NTk0MCArICggNC4xNjE2NzI0ICsgeSApICogeTtcblx0ZmxvYXQgdiA9IGEgLyBiO1xuXHRmbG9hdCB0aGV0YV9zaW50aGV0YSA9ICggeCA+IDAuMCApID8gdiA6IDAuNSAqIGludmVyc2VzcXJ0KCBtYXgoIDEuMCAtIHggKiB4LCAxZS03ICkgKSAtIHY7XG5cdHJldHVybiBjcm9zcyggdjEsIHYyICkgKiB0aGV0YV9zaW50aGV0YTtcbn1cbnZlYzMgTFRDX0V2YWx1YXRlKCBjb25zdCBpbiB2ZWMzIE4sIGNvbnN0IGluIHZlYzMgViwgY29uc3QgaW4gdmVjMyBQLCBjb25zdCBpbiBtYXQzIG1JbnYsIGNvbnN0IGluIHZlYzMgcmVjdENvb3Jkc1sgNCBdICkge1xuXHR2ZWMzIHYxID0gcmVjdENvb3Jkc1sgMSBdIC0gcmVjdENvb3Jkc1sgMCBdO1xuXHR2ZWMzIHYyID0gcmVjdENvb3Jkc1sgMyBdIC0gcmVjdENvb3Jkc1sgMCBdO1xuXHR2ZWMzIGxpZ2h0Tm9ybWFsID0gY3Jvc3MoIHYxLCB2MiApO1xuXHRpZiggZG90KCBsaWdodE5vcm1hbCwgUCAtIHJlY3RDb29yZHNbIDAgXSApIDwgMC4wICkgcmV0dXJuIHZlYzMoIDAuMCApO1xuXHR2ZWMzIFQxLCBUMjtcblx0VDEgPSBub3JtYWxpemUoIFYgLSBOICogZG90KCBWLCBOICkgKTtcblx0VDIgPSAtIGNyb3NzKCBOLCBUMSApO1xuXHRtYXQzIG1hdCA9IG1JbnYgKiB0cmFuc3Bvc2VNYXQzKCBtYXQzKCBUMSwgVDIsIE4gKSApO1xuXHR2ZWMzIGNvb3Jkc1sgNCBdO1xuXHRjb29yZHNbIDAgXSA9IG1hdCAqICggcmVjdENvb3Jkc1sgMCBdIC0gUCApO1xuXHRjb29yZHNbIDEgXSA9IG1hdCAqICggcmVjdENvb3Jkc1sgMSBdIC0gUCApO1xuXHRjb29yZHNbIDIgXSA9IG1hdCAqICggcmVjdENvb3Jkc1sgMiBdIC0gUCApO1xuXHRjb29yZHNbIDMgXSA9IG1hdCAqICggcmVjdENvb3Jkc1sgMyBdIC0gUCApO1xuXHRjb29yZHNbIDAgXSA9IG5vcm1hbGl6ZSggY29vcmRzWyAwIF0gKTtcblx0Y29vcmRzWyAxIF0gPSBub3JtYWxpemUoIGNvb3Jkc1sgMSBdICk7XG5cdGNvb3Jkc1sgMiBdID0gbm9ybWFsaXplKCBjb29yZHNbIDIgXSApO1xuXHRjb29yZHNbIDMgXSA9IG5vcm1hbGl6ZSggY29vcmRzWyAzIF0gKTtcblx0dmVjMyB2ZWN0b3JGb3JtRmFjdG9yID0gdmVjMyggMC4wICk7XG5cdHZlY3RvckZvcm1GYWN0b3IgKz0gTFRDX0VkZ2VWZWN0b3JGb3JtRmFjdG9yKCBjb29yZHNbIDAgXSwgY29vcmRzWyAxIF0gKTtcblx0dmVjdG9yRm9ybUZhY3RvciArPSBMVENfRWRnZVZlY3RvckZvcm1GYWN0b3IoIGNvb3Jkc1sgMSBdLCBjb29yZHNbIDIgXSApO1xuXHR2ZWN0b3JGb3JtRmFjdG9yICs9IExUQ19FZGdlVmVjdG9yRm9ybUZhY3RvciggY29vcmRzWyAyIF0sIGNvb3Jkc1sgMyBdICk7XG5cdHZlY3RvckZvcm1GYWN0b3IgKz0gTFRDX0VkZ2VWZWN0b3JGb3JtRmFjdG9yKCBjb29yZHNbIDMgXSwgY29vcmRzWyAwIF0gKTtcblx0ZmxvYXQgcmVzdWx0ID0gTFRDX0NsaXBwZWRTcGhlcmVGb3JtRmFjdG9yKCB2ZWN0b3JGb3JtRmFjdG9yICk7XG5cdHJldHVybiB2ZWMzKCByZXN1bHQgKTtcbn1cbnZlYzMgQlJERl9TcGVjdWxhcl9HR1hfRW52aXJvbm1lbnQoIGNvbnN0IGluIHZlYzMgdmlld0RpciwgY29uc3QgaW4gdmVjMyBub3JtYWwsIGNvbnN0IGluIHZlYzMgc3BlY3VsYXJDb2xvciwgY29uc3QgaW4gZmxvYXQgcm91Z2huZXNzICkge1xuXHRmbG9hdCBkb3ROViA9IHNhdHVyYXRlKCBkb3QoIG5vcm1hbCwgdmlld0RpciApICk7XG5cdHZlYzIgYnJkZiA9IGludGVncmF0ZVNwZWN1bGFyQlJERiggZG90TlYsIHJvdWdobmVzcyApO1xuXHRyZXR1cm4gc3BlY3VsYXJDb2xvciAqIGJyZGYueCArIGJyZGYueTtcbn1cbnZvaWQgQlJERl9TcGVjdWxhcl9NdWx0aXNjYXR0ZXJpbmdfRW52aXJvbm1lbnQoIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnksIGNvbnN0IGluIHZlYzMgc3BlY3VsYXJDb2xvciwgY29uc3QgaW4gZmxvYXQgcm91Z2huZXNzLCBpbm91dCB2ZWMzIHNpbmdsZVNjYXR0ZXIsIGlub3V0IHZlYzMgbXVsdGlTY2F0dGVyICkge1xuXHRmbG9hdCBkb3ROViA9IHNhdHVyYXRlKCBkb3QoIGdlb21ldHJ5Lm5vcm1hbCwgZ2VvbWV0cnkudmlld0RpciApICk7XG5cdHZlYzMgRiA9IEZfU2NobGlja19Sb3VnaG5lc3NEZXBlbmRlbnQoIHNwZWN1bGFyQ29sb3IsIGRvdE5WLCByb3VnaG5lc3MgKTtcblx0dmVjMiBicmRmID0gaW50ZWdyYXRlU3BlY3VsYXJCUkRGKCBkb3ROViwgcm91Z2huZXNzICk7XG5cdHZlYzMgRnNzRXNzID0gRiAqIGJyZGYueCArIGJyZGYueTtcblx0ZmxvYXQgRXNzID0gYnJkZi54ICsgYnJkZi55O1xuXHRmbG9hdCBFbXMgPSAxLjAgLSBFc3M7XG5cdHZlYzMgRmF2ZyA9IHNwZWN1bGFyQ29sb3IgKyAoIDEuMCAtIHNwZWN1bGFyQ29sb3IgKSAqIDAuMDQ3NjE5O1x0dmVjMyBGbXMgPSBGc3NFc3MgKiBGYXZnIC8gKCAxLjAgLSBFbXMgKiBGYXZnICk7XG5cdHNpbmdsZVNjYXR0ZXIgKz0gRnNzRXNzO1xuXHRtdWx0aVNjYXR0ZXIgKz0gRm1zICogRW1zO1xufVxuZmxvYXQgR19CbGlublBob25nX0ltcGxpY2l0KCApIHtcblx0cmV0dXJuIDAuMjU7XG59XG5mbG9hdCBEX0JsaW5uUGhvbmcoIGNvbnN0IGluIGZsb2F0IHNoaW5pbmVzcywgY29uc3QgaW4gZmxvYXQgZG90TkggKSB7XG5cdHJldHVybiBSRUNJUFJPQ0FMX1BJICogKCBzaGluaW5lc3MgKiAwLjUgKyAxLjAgKSAqIHBvdyggZG90TkgsIHNoaW5pbmVzcyApO1xufVxudmVjMyBCUkRGX1NwZWN1bGFyX0JsaW5uUGhvbmcoIGNvbnN0IGluIEluY2lkZW50TGlnaHQgaW5jaWRlbnRMaWdodCwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgY29uc3QgaW4gdmVjMyBzcGVjdWxhckNvbG9yLCBjb25zdCBpbiBmbG9hdCBzaGluaW5lc3MgKSB7XG5cdHZlYzMgaGFsZkRpciA9IG5vcm1hbGl6ZSggaW5jaWRlbnRMaWdodC5kaXJlY3Rpb24gKyBnZW9tZXRyeS52aWV3RGlyICk7XG5cdGZsb2F0IGRvdE5IID0gc2F0dXJhdGUoIGRvdCggZ2VvbWV0cnkubm9ybWFsLCBoYWxmRGlyICkgKTtcblx0ZmxvYXQgZG90TEggPSBzYXR1cmF0ZSggZG90KCBpbmNpZGVudExpZ2h0LmRpcmVjdGlvbiwgaGFsZkRpciApICk7XG5cdHZlYzMgRiA9IEZfU2NobGljayggc3BlY3VsYXJDb2xvciwgdmVjMyggMS4wICksIGRvdExIICk7XG5cdGZsb2F0IEcgPSBHX0JsaW5uUGhvbmdfSW1wbGljaXQoICk7XG5cdGZsb2F0IEQgPSBEX0JsaW5uUGhvbmcoIHNoaW5pbmVzcywgZG90TkggKTtcblx0cmV0dXJuIEYgKiAoIEcgKiBEICk7XG59XG5mbG9hdCBHR1hSb3VnaG5lc3NUb0JsaW5uRXhwb25lbnQoIGNvbnN0IGluIGZsb2F0IGdneFJvdWdobmVzcyApIHtcblx0cmV0dXJuICggMi4wIC8gcG93MiggZ2d4Um91Z2huZXNzICsgMC4wMDAxICkgLSAyLjAgKTtcbn1cbmZsb2F0IEJsaW5uRXhwb25lbnRUb0dHWFJvdWdobmVzcyggY29uc3QgaW4gZmxvYXQgYmxpbm5FeHBvbmVudCApIHtcblx0cmV0dXJuIHNxcnQoIDIuMCAvICggYmxpbm5FeHBvbmVudCArIDIuMCApICk7XG59XG4jaWYgZGVmaW5lZCggVVNFX1NIRUVOIClcbmZsb2F0IERfQ2hhcmxpZShmbG9hdCByb3VnaG5lc3MsIGZsb2F0IE5vSCkge1xuXHRmbG9hdCBpbnZBbHBoYSA9IDEuMCAvIHJvdWdobmVzcztcblx0ZmxvYXQgY29zMmggPSBOb0ggKiBOb0g7XG5cdGZsb2F0IHNpbjJoID0gbWF4KDEuMCAtIGNvczJoLCAwLjAwNzgxMjUpO1x0cmV0dXJuICgyLjAgKyBpbnZBbHBoYSkgKiBwb3coc2luMmgsIGludkFscGhhICogMC41KSAvICgyLjAgKiBQSSk7XG59XG5mbG9hdCBWX05ldWJlbHQoZmxvYXQgTm9WLCBmbG9hdCBOb0wpIHtcblx0cmV0dXJuIHNhdHVyYXRlKDEuMCAvICg0LjAgKiAoTm9MICsgTm9WIC0gTm9MICogTm9WKSkpO1xufVxudmVjMyBCUkRGX1NwZWN1bGFyX1NoZWVuKCBjb25zdCBpbiBmbG9hdCByb3VnaG5lc3MsIGNvbnN0IGluIHZlYzMgTCwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgdmVjMyBzcGVjdWxhckNvbG9yICkge1xuXHR2ZWMzIE4gPSBnZW9tZXRyeS5ub3JtYWw7XG5cdHZlYzMgViA9IGdlb21ldHJ5LnZpZXdEaXI7XG5cdHZlYzMgSCA9IG5vcm1hbGl6ZSggViArIEwgKTtcblx0ZmxvYXQgZG90TkggPSBzYXR1cmF0ZSggZG90KCBOLCBIICkgKTtcblx0cmV0dXJuIHNwZWN1bGFyQ29sb3IgKiBEX0NoYXJsaWUoIHJvdWdobmVzcywgZG90TkggKSAqIFZfTmV1YmVsdCggZG90KE4sIFYpLCBkb3QoTiwgTCkgKTtcbn1cbiNlbmRpZiIsYnVtcG1hcF9wYXJzX2ZyYWdtZW50OiIjaWZkZWYgVVNFX0JVTVBNQVBcblx0dW5pZm9ybSBzYW1wbGVyMkQgYnVtcE1hcDtcblx0dW5pZm9ybSBmbG9hdCBidW1wU2NhbGU7XG5cdHZlYzIgZEhkeHlfZndkKCkge1xuXHRcdHZlYzIgZFNUZHggPSBkRmR4KCB2VXYgKTtcblx0XHR2ZWMyIGRTVGR5ID0gZEZkeSggdlV2ICk7XG5cdFx0ZmxvYXQgSGxsID0gYnVtcFNjYWxlICogdGV4dHVyZTJEKCBidW1wTWFwLCB2VXYgKS54O1xuXHRcdGZsb2F0IGRCeCA9IGJ1bXBTY2FsZSAqIHRleHR1cmUyRCggYnVtcE1hcCwgdlV2ICsgZFNUZHggKS54IC0gSGxsO1xuXHRcdGZsb2F0IGRCeSA9IGJ1bXBTY2FsZSAqIHRleHR1cmUyRCggYnVtcE1hcCwgdlV2ICsgZFNUZHkgKS54IC0gSGxsO1xuXHRcdHJldHVybiB2ZWMyKCBkQngsIGRCeSApO1xuXHR9XG5cdHZlYzMgcGVydHVyYk5vcm1hbEFyYiggdmVjMyBzdXJmX3BvcywgdmVjMyBzdXJmX25vcm0sIHZlYzIgZEhkeHksIGZsb2F0IGZhY2VEaXJlY3Rpb24gKSB7XG5cdFx0dmVjMyB2U2lnbWFYID0gdmVjMyggZEZkeCggc3VyZl9wb3MueCApLCBkRmR4KCBzdXJmX3Bvcy55ICksIGRGZHgoIHN1cmZfcG9zLnogKSApO1xuXHRcdHZlYzMgdlNpZ21hWSA9IHZlYzMoIGRGZHkoIHN1cmZfcG9zLnggKSwgZEZkeSggc3VyZl9wb3MueSApLCBkRmR5KCBzdXJmX3Bvcy56ICkgKTtcblx0XHR2ZWMzIHZOID0gc3VyZl9ub3JtO1xuXHRcdHZlYzMgUjEgPSBjcm9zcyggdlNpZ21hWSwgdk4gKTtcblx0XHR2ZWMzIFIyID0gY3Jvc3MoIHZOLCB2U2lnbWFYICk7XG5cdFx0ZmxvYXQgZkRldCA9IGRvdCggdlNpZ21hWCwgUjEgKSAqIGZhY2VEaXJlY3Rpb247XG5cdFx0dmVjMyB2R3JhZCA9IHNpZ24oIGZEZXQgKSAqICggZEhkeHkueCAqIFIxICsgZEhkeHkueSAqIFIyICk7XG5cdFx0cmV0dXJuIG5vcm1hbGl6ZSggYWJzKCBmRGV0ICkgKiBzdXJmX25vcm0gLSB2R3JhZCApO1xuXHR9XG4jZW5kaWYiLGNsaXBwaW5nX3BsYW5lc19mcmFnbWVudDoiI2lmIE5VTV9DTElQUElOR19QTEFORVMgPiAwXG5cdHZlYzQgcGxhbmU7XG5cdCNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnRcblx0Zm9yICggaW50IGkgPSAwOyBpIDwgVU5JT05fQ0xJUFBJTkdfUExBTkVTOyBpICsrICkge1xuXHRcdHBsYW5lID0gY2xpcHBpbmdQbGFuZXNbIGkgXTtcblx0XHRpZiAoIGRvdCggdkNsaXBQb3NpdGlvbiwgcGxhbmUueHl6ICkgPiBwbGFuZS53ICkgZGlzY2FyZDtcblx0fVxuXHQjcHJhZ21hIHVucm9sbF9sb29wX2VuZFxuXHQjaWYgVU5JT05fQ0xJUFBJTkdfUExBTkVTIDwgTlVNX0NMSVBQSU5HX1BMQU5FU1xuXHRcdGJvb2wgY2xpcHBlZCA9IHRydWU7XG5cdFx0I3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydFxuXHRcdGZvciAoIGludCBpID0gVU5JT05fQ0xJUFBJTkdfUExBTkVTOyBpIDwgTlVNX0NMSVBQSU5HX1BMQU5FUzsgaSArKyApIHtcblx0XHRcdHBsYW5lID0gY2xpcHBpbmdQbGFuZXNbIGkgXTtcblx0XHRcdGNsaXBwZWQgPSAoIGRvdCggdkNsaXBQb3NpdGlvbiwgcGxhbmUueHl6ICkgPiBwbGFuZS53ICkgJiYgY2xpcHBlZDtcblx0XHR9XG5cdFx0I3ByYWdtYSB1bnJvbGxfbG9vcF9lbmRcblx0XHRpZiAoIGNsaXBwZWQgKSBkaXNjYXJkO1xuXHQjZW5kaWZcbiNlbmRpZiIsY2xpcHBpbmdfcGxhbmVzX3BhcnNfZnJhZ21lbnQ6IiNpZiBOVU1fQ0xJUFBJTkdfUExBTkVTID4gMFxuXHR2YXJ5aW5nIHZlYzMgdkNsaXBQb3NpdGlvbjtcblx0dW5pZm9ybSB2ZWM0IGNsaXBwaW5nUGxhbmVzWyBOVU1fQ0xJUFBJTkdfUExBTkVTIF07XG4jZW5kaWYiLGNsaXBwaW5nX3BsYW5lc19wYXJzX3ZlcnRleDoiI2lmIE5VTV9DTElQUElOR19QTEFORVMgPiAwXG5cdHZhcnlpbmcgdmVjMyB2Q2xpcFBvc2l0aW9uO1xuI2VuZGlmIixjbGlwcGluZ19wbGFuZXNfdmVydGV4OiIjaWYgTlVNX0NMSVBQSU5HX1BMQU5FUyA+IDBcblx0dkNsaXBQb3NpdGlvbiA9IC0gbXZQb3NpdGlvbi54eXo7XG4jZW5kaWYiLGNvbG9yX2ZyYWdtZW50OiIjaWYgZGVmaW5lZCggVVNFX0NPTE9SX0FMUEhBIClcblx0ZGlmZnVzZUNvbG9yICo9IHZDb2xvcjtcbiNlbGlmIGRlZmluZWQoIFVTRV9DT0xPUiApXG5cdGRpZmZ1c2VDb2xvci5yZ2IgKj0gdkNvbG9yO1xuI2VuZGlmIixjb2xvcl9wYXJzX2ZyYWdtZW50OiIjaWYgZGVmaW5lZCggVVNFX0NPTE9SX0FMUEhBIClcblx0dmFyeWluZyB2ZWM0IHZDb2xvcjtcbiNlbGlmIGRlZmluZWQoIFVTRV9DT0xPUiApXG5cdHZhcnlpbmcgdmVjMyB2Q29sb3I7XG4jZW5kaWYiLGNvbG9yX3BhcnNfdmVydGV4OiIjaWYgZGVmaW5lZCggVVNFX0NPTE9SX0FMUEhBIClcblx0dmFyeWluZyB2ZWM0IHZDb2xvcjtcbiNlbGlmIGRlZmluZWQoIFVTRV9DT0xPUiApIHx8IGRlZmluZWQoIFVTRV9JTlNUQU5DSU5HX0NPTE9SIClcblx0dmFyeWluZyB2ZWMzIHZDb2xvcjtcbiNlbmRpZiIsY29sb3JfdmVydGV4OiIjaWYgZGVmaW5lZCggVVNFX0NPTE9SX0FMUEhBIClcblx0dkNvbG9yID0gdmVjNCggMS4wICk7XG4jZWxpZiBkZWZpbmVkKCBVU0VfQ09MT1IgKSB8fCBkZWZpbmVkKCBVU0VfSU5TVEFOQ0lOR19DT0xPUiApXG5cdHZDb2xvciA9IHZlYzMoIDEuMCApO1xuI2VuZGlmXG4jaWZkZWYgVVNFX0NPTE9SXG5cdHZDb2xvciAqPSBjb2xvcjtcbiNlbmRpZlxuI2lmZGVmIFVTRV9JTlNUQU5DSU5HX0NPTE9SXG5cdHZDb2xvci54eXogKj0gaW5zdGFuY2VDb2xvci54eXo7XG4jZW5kaWYiLGNvbW1vbjoiI2RlZmluZSBQSSAzLjE0MTU5MjY1MzU4OTc5M1xuI2RlZmluZSBQSTIgNi4yODMxODUzMDcxNzk1ODZcbiNkZWZpbmUgUElfSEFMRiAxLjU3MDc5NjMyNjc5NDg5NjZcbiNkZWZpbmUgUkVDSVBST0NBTF9QSSAwLjMxODMwOTg4NjE4Mzc5MDdcbiNkZWZpbmUgUkVDSVBST0NBTF9QSTIgMC4xNTkxNTQ5NDMwOTE4OTUzNVxuI2RlZmluZSBFUFNJTE9OIDFlLTZcbiNpZm5kZWYgc2F0dXJhdGVcbiNkZWZpbmUgc2F0dXJhdGUoYSkgY2xhbXAoIGEsIDAuMCwgMS4wIClcbiNlbmRpZlxuI2RlZmluZSB3aGl0ZUNvbXBsZW1lbnQoYSkgKCAxLjAgLSBzYXR1cmF0ZSggYSApIClcbmZsb2F0IHBvdzIoIGNvbnN0IGluIGZsb2F0IHggKSB7IHJldHVybiB4Kng7IH1cbmZsb2F0IHBvdzMoIGNvbnN0IGluIGZsb2F0IHggKSB7IHJldHVybiB4KngqeDsgfVxuZmxvYXQgcG93NCggY29uc3QgaW4gZmxvYXQgeCApIHsgZmxvYXQgeDIgPSB4Kng7IHJldHVybiB4Mip4MjsgfVxuZmxvYXQgYXZlcmFnZSggY29uc3QgaW4gdmVjMyBjb2xvciApIHsgcmV0dXJuIGRvdCggY29sb3IsIHZlYzMoIDAuMzMzMyApICk7IH1cbmhpZ2hwIGZsb2F0IHJhbmQoIGNvbnN0IGluIHZlYzIgdXYgKSB7XG5cdGNvbnN0IGhpZ2hwIGZsb2F0IGEgPSAxMi45ODk4LCBiID0gNzguMjMzLCBjID0gNDM3NTguNTQ1Mztcblx0aGlnaHAgZmxvYXQgZHQgPSBkb3QoIHV2Lnh5LCB2ZWMyKCBhLGIgKSApLCBzbiA9IG1vZCggZHQsIFBJICk7XG5cdHJldHVybiBmcmFjdChzaW4oc24pICogYyk7XG59XG4jaWZkZWYgSElHSF9QUkVDSVNJT05cblx0ZmxvYXQgcHJlY2lzaW9uU2FmZUxlbmd0aCggdmVjMyB2ICkgeyByZXR1cm4gbGVuZ3RoKCB2ICk7IH1cbiNlbHNlXG5cdGZsb2F0IG1heDMoIHZlYzMgdiApIHsgcmV0dXJuIG1heCggbWF4KCB2LngsIHYueSApLCB2LnogKTsgfVxuXHRmbG9hdCBwcmVjaXNpb25TYWZlTGVuZ3RoKCB2ZWMzIHYgKSB7XG5cdFx0ZmxvYXQgbWF4Q29tcG9uZW50ID0gbWF4MyggYWJzKCB2ICkgKTtcblx0XHRyZXR1cm4gbGVuZ3RoKCB2IC8gbWF4Q29tcG9uZW50ICkgKiBtYXhDb21wb25lbnQ7XG5cdH1cbiNlbmRpZlxuc3RydWN0IEluY2lkZW50TGlnaHQge1xuXHR2ZWMzIGNvbG9yO1xuXHR2ZWMzIGRpcmVjdGlvbjtcblx0Ym9vbCB2aXNpYmxlO1xufTtcbnN0cnVjdCBSZWZsZWN0ZWRMaWdodCB7XG5cdHZlYzMgZGlyZWN0RGlmZnVzZTtcblx0dmVjMyBkaXJlY3RTcGVjdWxhcjtcblx0dmVjMyBpbmRpcmVjdERpZmZ1c2U7XG5cdHZlYzMgaW5kaXJlY3RTcGVjdWxhcjtcbn07XG5zdHJ1Y3QgR2VvbWV0cmljQ29udGV4dCB7XG5cdHZlYzMgcG9zaXRpb247XG5cdHZlYzMgbm9ybWFsO1xuXHR2ZWMzIHZpZXdEaXI7XG4jaWZkZWYgQ0xFQVJDT0FUXG5cdHZlYzMgY2xlYXJjb2F0Tm9ybWFsO1xuI2VuZGlmXG59O1xudmVjMyB0cmFuc2Zvcm1EaXJlY3Rpb24oIGluIHZlYzMgZGlyLCBpbiBtYXQ0IG1hdHJpeCApIHtcblx0cmV0dXJuIG5vcm1hbGl6ZSggKCBtYXRyaXggKiB2ZWM0KCBkaXIsIDAuMCApICkueHl6ICk7XG59XG52ZWMzIGludmVyc2VUcmFuc2Zvcm1EaXJlY3Rpb24oIGluIHZlYzMgZGlyLCBpbiBtYXQ0IG1hdHJpeCApIHtcblx0cmV0dXJuIG5vcm1hbGl6ZSggKCB2ZWM0KCBkaXIsIDAuMCApICogbWF0cml4ICkueHl6ICk7XG59XG52ZWMzIHByb2plY3RPblBsYW5lKGluIHZlYzMgcG9pbnQsIGluIHZlYzMgcG9pbnRPblBsYW5lLCBpbiB2ZWMzIHBsYW5lTm9ybWFsICkge1xuXHRmbG9hdCBkaXN0YW5jZSA9IGRvdCggcGxhbmVOb3JtYWwsIHBvaW50IC0gcG9pbnRPblBsYW5lICk7XG5cdHJldHVybiAtIGRpc3RhbmNlICogcGxhbmVOb3JtYWwgKyBwb2ludDtcbn1cbmZsb2F0IHNpZGVPZlBsYW5lKCBpbiB2ZWMzIHBvaW50LCBpbiB2ZWMzIHBvaW50T25QbGFuZSwgaW4gdmVjMyBwbGFuZU5vcm1hbCApIHtcblx0cmV0dXJuIHNpZ24oIGRvdCggcG9pbnQgLSBwb2ludE9uUGxhbmUsIHBsYW5lTm9ybWFsICkgKTtcbn1cbnZlYzMgbGluZVBsYW5lSW50ZXJzZWN0KCBpbiB2ZWMzIHBvaW50T25MaW5lLCBpbiB2ZWMzIGxpbmVEaXJlY3Rpb24sIGluIHZlYzMgcG9pbnRPblBsYW5lLCBpbiB2ZWMzIHBsYW5lTm9ybWFsICkge1xuXHRyZXR1cm4gbGluZURpcmVjdGlvbiAqICggZG90KCBwbGFuZU5vcm1hbCwgcG9pbnRPblBsYW5lIC0gcG9pbnRPbkxpbmUgKSAvIGRvdCggcGxhbmVOb3JtYWwsIGxpbmVEaXJlY3Rpb24gKSApICsgcG9pbnRPbkxpbmU7XG59XG5tYXQzIHRyYW5zcG9zZU1hdDMoIGNvbnN0IGluIG1hdDMgbSApIHtcblx0bWF0MyB0bXA7XG5cdHRtcFsgMCBdID0gdmVjMyggbVsgMCBdLngsIG1bIDEgXS54LCBtWyAyIF0ueCApO1xuXHR0bXBbIDEgXSA9IHZlYzMoIG1bIDAgXS55LCBtWyAxIF0ueSwgbVsgMiBdLnkgKTtcblx0dG1wWyAyIF0gPSB2ZWMzKCBtWyAwIF0ueiwgbVsgMSBdLnosIG1bIDIgXS56ICk7XG5cdHJldHVybiB0bXA7XG59XG5mbG9hdCBsaW5lYXJUb1JlbGF0aXZlTHVtaW5hbmNlKCBjb25zdCBpbiB2ZWMzIGNvbG9yICkge1xuXHR2ZWMzIHdlaWdodHMgPSB2ZWMzKCAwLjIxMjYsIDAuNzE1MiwgMC4wNzIyICk7XG5cdHJldHVybiBkb3QoIHdlaWdodHMsIGNvbG9yLnJnYiApO1xufVxuYm9vbCBpc1BlcnNwZWN0aXZlTWF0cml4KCBtYXQ0IG0gKSB7XG5cdHJldHVybiBtWyAyIF1bIDMgXSA9PSAtIDEuMDtcbn1cbnZlYzIgZXF1aXJlY3RVdiggaW4gdmVjMyBkaXIgKSB7XG5cdGZsb2F0IHUgPSBhdGFuKCBkaXIueiwgZGlyLnggKSAqIFJFQ0lQUk9DQUxfUEkyICsgMC41O1xuXHRmbG9hdCB2ID0gYXNpbiggY2xhbXAoIGRpci55LCAtIDEuMCwgMS4wICkgKSAqIFJFQ0lQUk9DQUxfUEkgKyAwLjU7XG5cdHJldHVybiB2ZWMyKCB1LCB2ICk7XG59IixjdWJlX3V2X3JlZmxlY3Rpb25fZnJhZ21lbnQ6IiNpZmRlZiBFTlZNQVBfVFlQRV9DVUJFX1VWXG5cdCNkZWZpbmUgY3ViZVVWX21heE1pcExldmVsIDguMFxuXHQjZGVmaW5lIGN1YmVVVl9taW5NaXBMZXZlbCA0LjBcblx0I2RlZmluZSBjdWJlVVZfbWF4VGlsZVNpemUgMjU2LjBcblx0I2RlZmluZSBjdWJlVVZfbWluVGlsZVNpemUgMTYuMFxuXHRmbG9hdCBnZXRGYWNlKCB2ZWMzIGRpcmVjdGlvbiApIHtcblx0XHR2ZWMzIGFic0RpcmVjdGlvbiA9IGFicyggZGlyZWN0aW9uICk7XG5cdFx0ZmxvYXQgZmFjZSA9IC0gMS4wO1xuXHRcdGlmICggYWJzRGlyZWN0aW9uLnggPiBhYnNEaXJlY3Rpb24ueiApIHtcblx0XHRcdGlmICggYWJzRGlyZWN0aW9uLnggPiBhYnNEaXJlY3Rpb24ueSApXG5cdFx0XHRcdGZhY2UgPSBkaXJlY3Rpb24ueCA+IDAuMCA/IDAuMCA6IDMuMDtcblx0XHRcdGVsc2Vcblx0XHRcdFx0ZmFjZSA9IGRpcmVjdGlvbi55ID4gMC4wID8gMS4wIDogNC4wO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRpZiAoIGFic0RpcmVjdGlvbi56ID4gYWJzRGlyZWN0aW9uLnkgKVxuXHRcdFx0XHRmYWNlID0gZGlyZWN0aW9uLnogPiAwLjAgPyAyLjAgOiA1LjA7XG5cdFx0XHRlbHNlXG5cdFx0XHRcdGZhY2UgPSBkaXJlY3Rpb24ueSA+IDAuMCA/IDEuMCA6IDQuMDtcblx0XHR9XG5cdFx0cmV0dXJuIGZhY2U7XG5cdH1cblx0dmVjMiBnZXRVViggdmVjMyBkaXJlY3Rpb24sIGZsb2F0IGZhY2UgKSB7XG5cdFx0dmVjMiB1djtcblx0XHRpZiAoIGZhY2UgPT0gMC4wICkge1xuXHRcdFx0dXYgPSB2ZWMyKCBkaXJlY3Rpb24ueiwgZGlyZWN0aW9uLnkgKSAvIGFicyggZGlyZWN0aW9uLnggKTtcblx0XHR9IGVsc2UgaWYgKCBmYWNlID09IDEuMCApIHtcblx0XHRcdHV2ID0gdmVjMiggLSBkaXJlY3Rpb24ueCwgLSBkaXJlY3Rpb24ueiApIC8gYWJzKCBkaXJlY3Rpb24ueSApO1xuXHRcdH0gZWxzZSBpZiAoIGZhY2UgPT0gMi4wICkge1xuXHRcdFx0dXYgPSB2ZWMyKCAtIGRpcmVjdGlvbi54LCBkaXJlY3Rpb24ueSApIC8gYWJzKCBkaXJlY3Rpb24ueiApO1xuXHRcdH0gZWxzZSBpZiAoIGZhY2UgPT0gMy4wICkge1xuXHRcdFx0dXYgPSB2ZWMyKCAtIGRpcmVjdGlvbi56LCBkaXJlY3Rpb24ueSApIC8gYWJzKCBkaXJlY3Rpb24ueCApO1xuXHRcdH0gZWxzZSBpZiAoIGZhY2UgPT0gNC4wICkge1xuXHRcdFx0dXYgPSB2ZWMyKCAtIGRpcmVjdGlvbi54LCBkaXJlY3Rpb24ueiApIC8gYWJzKCBkaXJlY3Rpb24ueSApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR1diA9IHZlYzIoIGRpcmVjdGlvbi54LCBkaXJlY3Rpb24ueSApIC8gYWJzKCBkaXJlY3Rpb24ueiApO1xuXHRcdH1cblx0XHRyZXR1cm4gMC41ICogKCB1diArIDEuMCApO1xuXHR9XG5cdHZlYzMgYmlsaW5lYXJDdWJlVVYoIHNhbXBsZXIyRCBlbnZNYXAsIHZlYzMgZGlyZWN0aW9uLCBmbG9hdCBtaXBJbnQgKSB7XG5cdFx0ZmxvYXQgZmFjZSA9IGdldEZhY2UoIGRpcmVjdGlvbiApO1xuXHRcdGZsb2F0IGZpbHRlckludCA9IG1heCggY3ViZVVWX21pbk1pcExldmVsIC0gbWlwSW50LCAwLjAgKTtcblx0XHRtaXBJbnQgPSBtYXgoIG1pcEludCwgY3ViZVVWX21pbk1pcExldmVsICk7XG5cdFx0ZmxvYXQgZmFjZVNpemUgPSBleHAyKCBtaXBJbnQgKTtcblx0XHRmbG9hdCB0ZXhlbFNpemUgPSAxLjAgLyAoIDMuMCAqIGN1YmVVVl9tYXhUaWxlU2l6ZSApO1xuXHRcdHZlYzIgdXYgPSBnZXRVViggZGlyZWN0aW9uLCBmYWNlICkgKiAoIGZhY2VTaXplIC0gMS4wICk7XG5cdFx0dmVjMiBmID0gZnJhY3QoIHV2ICk7XG5cdFx0dXYgKz0gMC41IC0gZjtcblx0XHRpZiAoIGZhY2UgPiAyLjAgKSB7XG5cdFx0XHR1di55ICs9IGZhY2VTaXplO1xuXHRcdFx0ZmFjZSAtPSAzLjA7XG5cdFx0fVxuXHRcdHV2LnggKz0gZmFjZSAqIGZhY2VTaXplO1xuXHRcdGlmICggbWlwSW50IDwgY3ViZVVWX21heE1pcExldmVsICkge1xuXHRcdFx0dXYueSArPSAyLjAgKiBjdWJlVVZfbWF4VGlsZVNpemU7XG5cdFx0fVxuXHRcdHV2LnkgKz0gZmlsdGVySW50ICogMi4wICogY3ViZVVWX21pblRpbGVTaXplO1xuXHRcdHV2LnggKz0gMy4wICogbWF4KCAwLjAsIGN1YmVVVl9tYXhUaWxlU2l6ZSAtIDIuMCAqIGZhY2VTaXplICk7XG5cdFx0dXYgKj0gdGV4ZWxTaXplO1xuXHRcdHZlYzMgdGwgPSBlbnZNYXBUZXhlbFRvTGluZWFyKCB0ZXh0dXJlMkQoIGVudk1hcCwgdXYgKSApLnJnYjtcblx0XHR1di54ICs9IHRleGVsU2l6ZTtcblx0XHR2ZWMzIHRyID0gZW52TWFwVGV4ZWxUb0xpbmVhciggdGV4dHVyZTJEKCBlbnZNYXAsIHV2ICkgKS5yZ2I7XG5cdFx0dXYueSArPSB0ZXhlbFNpemU7XG5cdFx0dmVjMyBiciA9IGVudk1hcFRleGVsVG9MaW5lYXIoIHRleHR1cmUyRCggZW52TWFwLCB1diApICkucmdiO1xuXHRcdHV2LnggLT0gdGV4ZWxTaXplO1xuXHRcdHZlYzMgYmwgPSBlbnZNYXBUZXhlbFRvTGluZWFyKCB0ZXh0dXJlMkQoIGVudk1hcCwgdXYgKSApLnJnYjtcblx0XHR2ZWMzIHRtID0gbWl4KCB0bCwgdHIsIGYueCApO1xuXHRcdHZlYzMgYm0gPSBtaXgoIGJsLCBiciwgZi54ICk7XG5cdFx0cmV0dXJuIG1peCggdG0sIGJtLCBmLnkgKTtcblx0fVxuXHQjZGVmaW5lIHIwIDEuMFxuXHQjZGVmaW5lIHYwIDAuMzM5XG5cdCNkZWZpbmUgbTAgLSAyLjBcblx0I2RlZmluZSByMSAwLjhcblx0I2RlZmluZSB2MSAwLjI3NlxuXHQjZGVmaW5lIG0xIC0gMS4wXG5cdCNkZWZpbmUgcjQgMC40XG5cdCNkZWZpbmUgdjQgMC4wNDZcblx0I2RlZmluZSBtNCAyLjBcblx0I2RlZmluZSByNSAwLjMwNVxuXHQjZGVmaW5lIHY1IDAuMDE2XG5cdCNkZWZpbmUgbTUgMy4wXG5cdCNkZWZpbmUgcjYgMC4yMVxuXHQjZGVmaW5lIHY2IDAuMDAzOFxuXHQjZGVmaW5lIG02IDQuMFxuXHRmbG9hdCByb3VnaG5lc3NUb01pcCggZmxvYXQgcm91Z2huZXNzICkge1xuXHRcdGZsb2F0IG1pcCA9IDAuMDtcblx0XHRpZiAoIHJvdWdobmVzcyA+PSByMSApIHtcblx0XHRcdG1pcCA9ICggcjAgLSByb3VnaG5lc3MgKSAqICggbTEgLSBtMCApIC8gKCByMCAtIHIxICkgKyBtMDtcblx0XHR9IGVsc2UgaWYgKCByb3VnaG5lc3MgPj0gcjQgKSB7XG5cdFx0XHRtaXAgPSAoIHIxIC0gcm91Z2huZXNzICkgKiAoIG00IC0gbTEgKSAvICggcjEgLSByNCApICsgbTE7XG5cdFx0fSBlbHNlIGlmICggcm91Z2huZXNzID49IHI1ICkge1xuXHRcdFx0bWlwID0gKCByNCAtIHJvdWdobmVzcyApICogKCBtNSAtIG00ICkgLyAoIHI0IC0gcjUgKSArIG00O1xuXHRcdH0gZWxzZSBpZiAoIHJvdWdobmVzcyA+PSByNiApIHtcblx0XHRcdG1pcCA9ICggcjUgLSByb3VnaG5lc3MgKSAqICggbTYgLSBtNSApIC8gKCByNSAtIHI2ICkgKyBtNTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0bWlwID0gLSAyLjAgKiBsb2cyKCAxLjE2ICogcm91Z2huZXNzICk7XHRcdH1cblx0XHRyZXR1cm4gbWlwO1xuXHR9XG5cdHZlYzQgdGV4dHVyZUN1YmVVViggc2FtcGxlcjJEIGVudk1hcCwgdmVjMyBzYW1wbGVEaXIsIGZsb2F0IHJvdWdobmVzcyApIHtcblx0XHRmbG9hdCBtaXAgPSBjbGFtcCggcm91Z2huZXNzVG9NaXAoIHJvdWdobmVzcyApLCBtMCwgY3ViZVVWX21heE1pcExldmVsICk7XG5cdFx0ZmxvYXQgbWlwRiA9IGZyYWN0KCBtaXAgKTtcblx0XHRmbG9hdCBtaXBJbnQgPSBmbG9vciggbWlwICk7XG5cdFx0dmVjMyBjb2xvcjAgPSBiaWxpbmVhckN1YmVVViggZW52TWFwLCBzYW1wbGVEaXIsIG1pcEludCApO1xuXHRcdGlmICggbWlwRiA9PSAwLjAgKSB7XG5cdFx0XHRyZXR1cm4gdmVjNCggY29sb3IwLCAxLjAgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dmVjMyBjb2xvcjEgPSBiaWxpbmVhckN1YmVVViggZW52TWFwLCBzYW1wbGVEaXIsIG1pcEludCArIDEuMCApO1xuXHRcdFx0cmV0dXJuIHZlYzQoIG1peCggY29sb3IwLCBjb2xvcjEsIG1pcEYgKSwgMS4wICk7XG5cdFx0fVxuXHR9XG4jZW5kaWYiLGRlZmF1bHRub3JtYWxfdmVydGV4OiJ2ZWMzIHRyYW5zZm9ybWVkTm9ybWFsID0gb2JqZWN0Tm9ybWFsO1xuI2lmZGVmIFVTRV9JTlNUQU5DSU5HXG5cdG1hdDMgbSA9IG1hdDMoIGluc3RhbmNlTWF0cml4ICk7XG5cdHRyYW5zZm9ybWVkTm9ybWFsIC89IHZlYzMoIGRvdCggbVsgMCBdLCBtWyAwIF0gKSwgZG90KCBtWyAxIF0sIG1bIDEgXSApLCBkb3QoIG1bIDIgXSwgbVsgMiBdICkgKTtcblx0dHJhbnNmb3JtZWROb3JtYWwgPSBtICogdHJhbnNmb3JtZWROb3JtYWw7XG4jZW5kaWZcbnRyYW5zZm9ybWVkTm9ybWFsID0gbm9ybWFsTWF0cml4ICogdHJhbnNmb3JtZWROb3JtYWw7XG4jaWZkZWYgRkxJUF9TSURFRFxuXHR0cmFuc2Zvcm1lZE5vcm1hbCA9IC0gdHJhbnNmb3JtZWROb3JtYWw7XG4jZW5kaWZcbiNpZmRlZiBVU0VfVEFOR0VOVFxuXHR2ZWMzIHRyYW5zZm9ybWVkVGFuZ2VudCA9ICggbW9kZWxWaWV3TWF0cml4ICogdmVjNCggb2JqZWN0VGFuZ2VudCwgMC4wICkgKS54eXo7XG5cdCNpZmRlZiBGTElQX1NJREVEXG5cdFx0dHJhbnNmb3JtZWRUYW5nZW50ID0gLSB0cmFuc2Zvcm1lZFRhbmdlbnQ7XG5cdCNlbmRpZlxuI2VuZGlmIixkaXNwbGFjZW1lbnRtYXBfcGFyc192ZXJ0ZXg6IiNpZmRlZiBVU0VfRElTUExBQ0VNRU5UTUFQXG5cdHVuaWZvcm0gc2FtcGxlcjJEIGRpc3BsYWNlbWVudE1hcDtcblx0dW5pZm9ybSBmbG9hdCBkaXNwbGFjZW1lbnRTY2FsZTtcblx0dW5pZm9ybSBmbG9hdCBkaXNwbGFjZW1lbnRCaWFzO1xuI2VuZGlmIixkaXNwbGFjZW1lbnRtYXBfdmVydGV4OiIjaWZkZWYgVVNFX0RJU1BMQUNFTUVOVE1BUFxuXHR0cmFuc2Zvcm1lZCArPSBub3JtYWxpemUoIG9iamVjdE5vcm1hbCApICogKCB0ZXh0dXJlMkQoIGRpc3BsYWNlbWVudE1hcCwgdlV2ICkueCAqIGRpc3BsYWNlbWVudFNjYWxlICsgZGlzcGxhY2VtZW50QmlhcyApO1xuI2VuZGlmIixlbWlzc2l2ZW1hcF9mcmFnbWVudDoiI2lmZGVmIFVTRV9FTUlTU0lWRU1BUFxuXHR2ZWM0IGVtaXNzaXZlQ29sb3IgPSB0ZXh0dXJlMkQoIGVtaXNzaXZlTWFwLCB2VXYgKTtcblx0ZW1pc3NpdmVDb2xvci5yZ2IgPSBlbWlzc2l2ZU1hcFRleGVsVG9MaW5lYXIoIGVtaXNzaXZlQ29sb3IgKS5yZ2I7XG5cdHRvdGFsRW1pc3NpdmVSYWRpYW5jZSAqPSBlbWlzc2l2ZUNvbG9yLnJnYjtcbiNlbmRpZiIsZW1pc3NpdmVtYXBfcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9FTUlTU0lWRU1BUFxuXHR1bmlmb3JtIHNhbXBsZXIyRCBlbWlzc2l2ZU1hcDtcbiNlbmRpZiIsZW5jb2RpbmdzX2ZyYWdtZW50OiJnbF9GcmFnQ29sb3IgPSBsaW5lYXJUb091dHB1dFRleGVsKCBnbF9GcmFnQ29sb3IgKTsiLGVuY29kaW5nc19wYXJzX2ZyYWdtZW50OiJcbnZlYzQgTGluZWFyVG9MaW5lYXIoIGluIHZlYzQgdmFsdWUgKSB7XG5cdHJldHVybiB2YWx1ZTtcbn1cbnZlYzQgR2FtbWFUb0xpbmVhciggaW4gdmVjNCB2YWx1ZSwgaW4gZmxvYXQgZ2FtbWFGYWN0b3IgKSB7XG5cdHJldHVybiB2ZWM0KCBwb3coIHZhbHVlLnJnYiwgdmVjMyggZ2FtbWFGYWN0b3IgKSApLCB2YWx1ZS5hICk7XG59XG52ZWM0IExpbmVhclRvR2FtbWEoIGluIHZlYzQgdmFsdWUsIGluIGZsb2F0IGdhbW1hRmFjdG9yICkge1xuXHRyZXR1cm4gdmVjNCggcG93KCB2YWx1ZS5yZ2IsIHZlYzMoIDEuMCAvIGdhbW1hRmFjdG9yICkgKSwgdmFsdWUuYSApO1xufVxudmVjNCBzUkdCVG9MaW5lYXIoIGluIHZlYzQgdmFsdWUgKSB7XG5cdHJldHVybiB2ZWM0KCBtaXgoIHBvdyggdmFsdWUucmdiICogMC45NDc4NjcyOTg2ICsgdmVjMyggMC4wNTIxMzI3MDE0ICksIHZlYzMoIDIuNCApICksIHZhbHVlLnJnYiAqIDAuMDc3Mzk5MzgwOCwgdmVjMyggbGVzc1RoYW5FcXVhbCggdmFsdWUucmdiLCB2ZWMzKCAwLjA0MDQ1ICkgKSApICksIHZhbHVlLmEgKTtcbn1cbnZlYzQgTGluZWFyVG9zUkdCKCBpbiB2ZWM0IHZhbHVlICkge1xuXHRyZXR1cm4gdmVjNCggbWl4KCBwb3coIHZhbHVlLnJnYiwgdmVjMyggMC40MTY2NiApICkgKiAxLjA1NSAtIHZlYzMoIDAuMDU1ICksIHZhbHVlLnJnYiAqIDEyLjkyLCB2ZWMzKCBsZXNzVGhhbkVxdWFsKCB2YWx1ZS5yZ2IsIHZlYzMoIDAuMDAzMTMwOCApICkgKSApLCB2YWx1ZS5hICk7XG59XG52ZWM0IFJHQkVUb0xpbmVhciggaW4gdmVjNCB2YWx1ZSApIHtcblx0cmV0dXJuIHZlYzQoIHZhbHVlLnJnYiAqIGV4cDIoIHZhbHVlLmEgKiAyNTUuMCAtIDEyOC4wICksIDEuMCApO1xufVxudmVjNCBMaW5lYXJUb1JHQkUoIGluIHZlYzQgdmFsdWUgKSB7XG5cdGZsb2F0IG1heENvbXBvbmVudCA9IG1heCggbWF4KCB2YWx1ZS5yLCB2YWx1ZS5nICksIHZhbHVlLmIgKTtcblx0ZmxvYXQgZkV4cCA9IGNsYW1wKCBjZWlsKCBsb2cyKCBtYXhDb21wb25lbnQgKSApLCAtMTI4LjAsIDEyNy4wICk7XG5cdHJldHVybiB2ZWM0KCB2YWx1ZS5yZ2IgLyBleHAyKCBmRXhwICksICggZkV4cCArIDEyOC4wICkgLyAyNTUuMCApO1xufVxudmVjNCBSR0JNVG9MaW5lYXIoIGluIHZlYzQgdmFsdWUsIGluIGZsb2F0IG1heFJhbmdlICkge1xuXHRyZXR1cm4gdmVjNCggdmFsdWUucmdiICogdmFsdWUuYSAqIG1heFJhbmdlLCAxLjAgKTtcbn1cbnZlYzQgTGluZWFyVG9SR0JNKCBpbiB2ZWM0IHZhbHVlLCBpbiBmbG9hdCBtYXhSYW5nZSApIHtcblx0ZmxvYXQgbWF4UkdCID0gbWF4KCB2YWx1ZS5yLCBtYXgoIHZhbHVlLmcsIHZhbHVlLmIgKSApO1xuXHRmbG9hdCBNID0gY2xhbXAoIG1heFJHQiAvIG1heFJhbmdlLCAwLjAsIDEuMCApO1xuXHRNID0gY2VpbCggTSAqIDI1NS4wICkgLyAyNTUuMDtcblx0cmV0dXJuIHZlYzQoIHZhbHVlLnJnYiAvICggTSAqIG1heFJhbmdlICksIE0gKTtcbn1cbnZlYzQgUkdCRFRvTGluZWFyKCBpbiB2ZWM0IHZhbHVlLCBpbiBmbG9hdCBtYXhSYW5nZSApIHtcblx0cmV0dXJuIHZlYzQoIHZhbHVlLnJnYiAqICggKCBtYXhSYW5nZSAvIDI1NS4wICkgLyB2YWx1ZS5hICksIDEuMCApO1xufVxudmVjNCBMaW5lYXJUb1JHQkQoIGluIHZlYzQgdmFsdWUsIGluIGZsb2F0IG1heFJhbmdlICkge1xuXHRmbG9hdCBtYXhSR0IgPSBtYXgoIHZhbHVlLnIsIG1heCggdmFsdWUuZywgdmFsdWUuYiApICk7XG5cdGZsb2F0IEQgPSBtYXgoIG1heFJhbmdlIC8gbWF4UkdCLCAxLjAgKTtcblx0RCA9IGNsYW1wKCBmbG9vciggRCApIC8gMjU1LjAsIDAuMCwgMS4wICk7XG5cdHJldHVybiB2ZWM0KCB2YWx1ZS5yZ2IgKiAoIEQgKiAoIDI1NS4wIC8gbWF4UmFuZ2UgKSApLCBEICk7XG59XG5jb25zdCBtYXQzIGNMb2dMdXZNID0gbWF0MyggMC4yMjA5LCAwLjMzOTAsIDAuNDE4NCwgMC4xMTM4LCAwLjY3ODAsIDAuNzMxOSwgMC4wMTAyLCAwLjExMzAsIDAuMjk2OSApO1xudmVjNCBMaW5lYXJUb0xvZ0x1diggaW4gdmVjNCB2YWx1ZSApIHtcblx0dmVjMyBYcF9ZX1hZWnAgPSBjTG9nTHV2TSAqIHZhbHVlLnJnYjtcblx0WHBfWV9YWVpwID0gbWF4KCBYcF9ZX1hZWnAsIHZlYzMoIDFlLTYsIDFlLTYsIDFlLTYgKSApO1xuXHR2ZWM0IHZSZXN1bHQ7XG5cdHZSZXN1bHQueHkgPSBYcF9ZX1hZWnAueHkgLyBYcF9ZX1hZWnAuejtcblx0ZmxvYXQgTGUgPSAyLjAgKiBsb2cyKFhwX1lfWFlacC55KSArIDEyNy4wO1xuXHR2UmVzdWx0LncgPSBmcmFjdCggTGUgKTtcblx0dlJlc3VsdC56ID0gKCBMZSAtICggZmxvb3IoIHZSZXN1bHQudyAqIDI1NS4wICkgKSAvIDI1NS4wICkgLyAyNTUuMDtcblx0cmV0dXJuIHZSZXN1bHQ7XG59XG5jb25zdCBtYXQzIGNMb2dMdXZJbnZlcnNlTSA9IG1hdDMoIDYuMDAxNCwgLTIuNzAwOCwgLTEuNzk5NiwgLTEuMzMyMCwgMy4xMDI5LCAtNS43NzIxLCAwLjMwMDgsIC0xLjA4ODIsIDUuNjI2OCApO1xudmVjNCBMb2dMdXZUb0xpbmVhciggaW4gdmVjNCB2YWx1ZSApIHtcblx0ZmxvYXQgTGUgPSB2YWx1ZS56ICogMjU1LjAgKyB2YWx1ZS53O1xuXHR2ZWMzIFhwX1lfWFlacDtcblx0WHBfWV9YWVpwLnkgPSBleHAyKCAoIExlIC0gMTI3LjAgKSAvIDIuMCApO1xuXHRYcF9ZX1hZWnAueiA9IFhwX1lfWFlacC55IC8gdmFsdWUueTtcblx0WHBfWV9YWVpwLnggPSB2YWx1ZS54ICogWHBfWV9YWVpwLno7XG5cdHZlYzMgdlJHQiA9IGNMb2dMdXZJbnZlcnNlTSAqIFhwX1lfWFlacC5yZ2I7XG5cdHJldHVybiB2ZWM0KCBtYXgoIHZSR0IsIDAuMCApLCAxLjAgKTtcbn0iLGVudm1hcF9mcmFnbWVudDoiI2lmZGVmIFVTRV9FTlZNQVBcblx0I2lmZGVmIEVOVl9XT1JMRFBPU1xuXHRcdHZlYzMgY2FtZXJhVG9GcmFnO1xuXHRcdGlmICggaXNPcnRob2dyYXBoaWMgKSB7XG5cdFx0XHRjYW1lcmFUb0ZyYWcgPSBub3JtYWxpemUoIHZlYzMoIC0gdmlld01hdHJpeFsgMCBdWyAyIF0sIC0gdmlld01hdHJpeFsgMSBdWyAyIF0sIC0gdmlld01hdHJpeFsgMiBdWyAyIF0gKSApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjYW1lcmFUb0ZyYWcgPSBub3JtYWxpemUoIHZXb3JsZFBvc2l0aW9uIC0gY2FtZXJhUG9zaXRpb24gKTtcblx0XHR9XG5cdFx0dmVjMyB3b3JsZE5vcm1hbCA9IGludmVyc2VUcmFuc2Zvcm1EaXJlY3Rpb24oIG5vcm1hbCwgdmlld01hdHJpeCApO1xuXHRcdCNpZmRlZiBFTlZNQVBfTU9ERV9SRUZMRUNUSU9OXG5cdFx0XHR2ZWMzIHJlZmxlY3RWZWMgPSByZWZsZWN0KCBjYW1lcmFUb0ZyYWcsIHdvcmxkTm9ybWFsICk7XG5cdFx0I2Vsc2Vcblx0XHRcdHZlYzMgcmVmbGVjdFZlYyA9IHJlZnJhY3QoIGNhbWVyYVRvRnJhZywgd29ybGROb3JtYWwsIHJlZnJhY3Rpb25SYXRpbyApO1xuXHRcdCNlbmRpZlxuXHQjZWxzZVxuXHRcdHZlYzMgcmVmbGVjdFZlYyA9IHZSZWZsZWN0O1xuXHQjZW5kaWZcblx0I2lmZGVmIEVOVk1BUF9UWVBFX0NVQkVcblx0XHR2ZWM0IGVudkNvbG9yID0gdGV4dHVyZUN1YmUoIGVudk1hcCwgdmVjMyggZmxpcEVudk1hcCAqIHJlZmxlY3RWZWMueCwgcmVmbGVjdFZlYy55eiApICk7XG5cdCNlbGlmIGRlZmluZWQoIEVOVk1BUF9UWVBFX0NVQkVfVVYgKVxuXHRcdHZlYzQgZW52Q29sb3IgPSB0ZXh0dXJlQ3ViZVVWKCBlbnZNYXAsIHJlZmxlY3RWZWMsIDAuMCApO1xuXHQjZWxzZVxuXHRcdHZlYzQgZW52Q29sb3IgPSB2ZWM0KCAwLjAgKTtcblx0I2VuZGlmXG5cdCNpZm5kZWYgRU5WTUFQX1RZUEVfQ1VCRV9VVlxuXHRcdGVudkNvbG9yID0gZW52TWFwVGV4ZWxUb0xpbmVhciggZW52Q29sb3IgKTtcblx0I2VuZGlmXG5cdCNpZmRlZiBFTlZNQVBfQkxFTkRJTkdfTVVMVElQTFlcblx0XHRvdXRnb2luZ0xpZ2h0ID0gbWl4KCBvdXRnb2luZ0xpZ2h0LCBvdXRnb2luZ0xpZ2h0ICogZW52Q29sb3IueHl6LCBzcGVjdWxhclN0cmVuZ3RoICogcmVmbGVjdGl2aXR5ICk7XG5cdCNlbGlmIGRlZmluZWQoIEVOVk1BUF9CTEVORElOR19NSVggKVxuXHRcdG91dGdvaW5nTGlnaHQgPSBtaXgoIG91dGdvaW5nTGlnaHQsIGVudkNvbG9yLnh5eiwgc3BlY3VsYXJTdHJlbmd0aCAqIHJlZmxlY3Rpdml0eSApO1xuXHQjZWxpZiBkZWZpbmVkKCBFTlZNQVBfQkxFTkRJTkdfQUREIClcblx0XHRvdXRnb2luZ0xpZ2h0ICs9IGVudkNvbG9yLnh5eiAqIHNwZWN1bGFyU3RyZW5ndGggKiByZWZsZWN0aXZpdHk7XG5cdCNlbmRpZlxuI2VuZGlmIixlbnZtYXBfY29tbW9uX3BhcnNfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfRU5WTUFQXG5cdHVuaWZvcm0gZmxvYXQgZW52TWFwSW50ZW5zaXR5O1xuXHR1bmlmb3JtIGZsb2F0IGZsaXBFbnZNYXA7XG5cdHVuaWZvcm0gaW50IG1heE1pcExldmVsO1xuXHQjaWZkZWYgRU5WTUFQX1RZUEVfQ1VCRVxuXHRcdHVuaWZvcm0gc2FtcGxlckN1YmUgZW52TWFwO1xuXHQjZWxzZVxuXHRcdHVuaWZvcm0gc2FtcGxlcjJEIGVudk1hcDtcblx0I2VuZGlmXG5cdFxuI2VuZGlmIixlbnZtYXBfcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9FTlZNQVBcblx0dW5pZm9ybSBmbG9hdCByZWZsZWN0aXZpdHk7XG5cdCNpZiBkZWZpbmVkKCBVU0VfQlVNUE1BUCApIHx8IGRlZmluZWQoIFVTRV9OT1JNQUxNQVAgKSB8fCBkZWZpbmVkKCBQSE9ORyApXG5cdFx0I2RlZmluZSBFTlZfV09STERQT1Ncblx0I2VuZGlmXG5cdCNpZmRlZiBFTlZfV09STERQT1Ncblx0XHR2YXJ5aW5nIHZlYzMgdldvcmxkUG9zaXRpb247XG5cdFx0dW5pZm9ybSBmbG9hdCByZWZyYWN0aW9uUmF0aW87XG5cdCNlbHNlXG5cdFx0dmFyeWluZyB2ZWMzIHZSZWZsZWN0O1xuXHQjZW5kaWZcbiNlbmRpZiIsZW52bWFwX3BhcnNfdmVydGV4OiIjaWZkZWYgVVNFX0VOVk1BUFxuXHQjaWYgZGVmaW5lZCggVVNFX0JVTVBNQVAgKSB8fCBkZWZpbmVkKCBVU0VfTk9STUFMTUFQICkgfHxkZWZpbmVkKCBQSE9ORyApXG5cdFx0I2RlZmluZSBFTlZfV09STERQT1Ncblx0I2VuZGlmXG5cdCNpZmRlZiBFTlZfV09STERQT1Ncblx0XHRcblx0XHR2YXJ5aW5nIHZlYzMgdldvcmxkUG9zaXRpb247XG5cdCNlbHNlXG5cdFx0dmFyeWluZyB2ZWMzIHZSZWZsZWN0O1xuXHRcdHVuaWZvcm0gZmxvYXQgcmVmcmFjdGlvblJhdGlvO1xuXHQjZW5kaWZcbiNlbmRpZiIsZW52bWFwX3BoeXNpY2FsX3BhcnNfZnJhZ21lbnQ6IiNpZiBkZWZpbmVkKCBVU0VfRU5WTUFQIClcblx0I2lmZGVmIEVOVk1BUF9NT0RFX1JFRlJBQ1RJT05cblx0XHR1bmlmb3JtIGZsb2F0IHJlZnJhY3Rpb25SYXRpbztcblx0I2VuZGlmXG5cdHZlYzMgZ2V0TGlnaHRQcm9iZUluZGlyZWN0SXJyYWRpYW5jZSggY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgY29uc3QgaW4gaW50IG1heE1JUExldmVsICkge1xuXHRcdHZlYzMgd29ybGROb3JtYWwgPSBpbnZlcnNlVHJhbnNmb3JtRGlyZWN0aW9uKCBnZW9tZXRyeS5ub3JtYWwsIHZpZXdNYXRyaXggKTtcblx0XHQjaWZkZWYgRU5WTUFQX1RZUEVfQ1VCRVxuXHRcdFx0dmVjMyBxdWVyeVZlYyA9IHZlYzMoIGZsaXBFbnZNYXAgKiB3b3JsZE5vcm1hbC54LCB3b3JsZE5vcm1hbC55eiApO1xuXHRcdFx0I2lmZGVmIFRFWFRVUkVfTE9EX0VYVFxuXHRcdFx0XHR2ZWM0IGVudk1hcENvbG9yID0gdGV4dHVyZUN1YmVMb2RFWFQoIGVudk1hcCwgcXVlcnlWZWMsIGZsb2F0KCBtYXhNSVBMZXZlbCApICk7XG5cdFx0XHQjZWxzZVxuXHRcdFx0XHR2ZWM0IGVudk1hcENvbG9yID0gdGV4dHVyZUN1YmUoIGVudk1hcCwgcXVlcnlWZWMsIGZsb2F0KCBtYXhNSVBMZXZlbCApICk7XG5cdFx0XHQjZW5kaWZcblx0XHRcdGVudk1hcENvbG9yLnJnYiA9IGVudk1hcFRleGVsVG9MaW5lYXIoIGVudk1hcENvbG9yICkucmdiO1xuXHRcdCNlbGlmIGRlZmluZWQoIEVOVk1BUF9UWVBFX0NVQkVfVVYgKVxuXHRcdFx0dmVjNCBlbnZNYXBDb2xvciA9IHRleHR1cmVDdWJlVVYoIGVudk1hcCwgd29ybGROb3JtYWwsIDEuMCApO1xuXHRcdCNlbHNlXG5cdFx0XHR2ZWM0IGVudk1hcENvbG9yID0gdmVjNCggMC4wICk7XG5cdFx0I2VuZGlmXG5cdFx0cmV0dXJuIFBJICogZW52TWFwQ29sb3IucmdiICogZW52TWFwSW50ZW5zaXR5O1xuXHR9XG5cdGZsb2F0IGdldFNwZWN1bGFyTUlQTGV2ZWwoIGNvbnN0IGluIGZsb2F0IHJvdWdobmVzcywgY29uc3QgaW4gaW50IG1heE1JUExldmVsICkge1xuXHRcdGZsb2F0IG1heE1JUExldmVsU2NhbGFyID0gZmxvYXQoIG1heE1JUExldmVsICk7XG5cdFx0ZmxvYXQgc2lnbWEgPSBQSSAqIHJvdWdobmVzcyAqIHJvdWdobmVzcyAvICggMS4wICsgcm91Z2huZXNzICk7XG5cdFx0ZmxvYXQgZGVzaXJlZE1JUExldmVsID0gbWF4TUlQTGV2ZWxTY2FsYXIgKyBsb2cyKCBzaWdtYSApO1xuXHRcdHJldHVybiBjbGFtcCggZGVzaXJlZE1JUExldmVsLCAwLjAsIG1heE1JUExldmVsU2NhbGFyICk7XG5cdH1cblx0dmVjMyBnZXRMaWdodFByb2JlSW5kaXJlY3RSYWRpYW5jZSggY29uc3QgaW4gdmVjMyB2aWV3RGlyLCBjb25zdCBpbiB2ZWMzIG5vcm1hbCwgY29uc3QgaW4gZmxvYXQgcm91Z2huZXNzLCBjb25zdCBpbiBpbnQgbWF4TUlQTGV2ZWwgKSB7XG5cdFx0I2lmZGVmIEVOVk1BUF9NT0RFX1JFRkxFQ1RJT05cblx0XHRcdHZlYzMgcmVmbGVjdFZlYyA9IHJlZmxlY3QoIC12aWV3RGlyLCBub3JtYWwgKTtcblx0XHRcdHJlZmxlY3RWZWMgPSBub3JtYWxpemUoIG1peCggcmVmbGVjdFZlYywgbm9ybWFsLCByb3VnaG5lc3MgKiByb3VnaG5lc3MpICk7XG5cdFx0I2Vsc2Vcblx0XHRcdHZlYzMgcmVmbGVjdFZlYyA9IHJlZnJhY3QoIC12aWV3RGlyLCBub3JtYWwsIHJlZnJhY3Rpb25SYXRpbyApO1xuXHRcdCNlbmRpZlxuXHRcdHJlZmxlY3RWZWMgPSBpbnZlcnNlVHJhbnNmb3JtRGlyZWN0aW9uKCByZWZsZWN0VmVjLCB2aWV3TWF0cml4ICk7XG5cdFx0ZmxvYXQgc3BlY3VsYXJNSVBMZXZlbCA9IGdldFNwZWN1bGFyTUlQTGV2ZWwoIHJvdWdobmVzcywgbWF4TUlQTGV2ZWwgKTtcblx0XHQjaWZkZWYgRU5WTUFQX1RZUEVfQ1VCRVxuXHRcdFx0dmVjMyBxdWVyeVJlZmxlY3RWZWMgPSB2ZWMzKCBmbGlwRW52TWFwICogcmVmbGVjdFZlYy54LCByZWZsZWN0VmVjLnl6ICk7XG5cdFx0XHQjaWZkZWYgVEVYVFVSRV9MT0RfRVhUXG5cdFx0XHRcdHZlYzQgZW52TWFwQ29sb3IgPSB0ZXh0dXJlQ3ViZUxvZEVYVCggZW52TWFwLCBxdWVyeVJlZmxlY3RWZWMsIHNwZWN1bGFyTUlQTGV2ZWwgKTtcblx0XHRcdCNlbHNlXG5cdFx0XHRcdHZlYzQgZW52TWFwQ29sb3IgPSB0ZXh0dXJlQ3ViZSggZW52TWFwLCBxdWVyeVJlZmxlY3RWZWMsIHNwZWN1bGFyTUlQTGV2ZWwgKTtcblx0XHRcdCNlbmRpZlxuXHRcdFx0ZW52TWFwQ29sb3IucmdiID0gZW52TWFwVGV4ZWxUb0xpbmVhciggZW52TWFwQ29sb3IgKS5yZ2I7XG5cdFx0I2VsaWYgZGVmaW5lZCggRU5WTUFQX1RZUEVfQ1VCRV9VViApXG5cdFx0XHR2ZWM0IGVudk1hcENvbG9yID0gdGV4dHVyZUN1YmVVViggZW52TWFwLCByZWZsZWN0VmVjLCByb3VnaG5lc3MgKTtcblx0XHQjZW5kaWZcblx0XHRyZXR1cm4gZW52TWFwQ29sb3IucmdiICogZW52TWFwSW50ZW5zaXR5O1xuXHR9XG4jZW5kaWYiLGVudm1hcF92ZXJ0ZXg6IiNpZmRlZiBVU0VfRU5WTUFQXG5cdCNpZmRlZiBFTlZfV09STERQT1Ncblx0XHR2V29ybGRQb3NpdGlvbiA9IHdvcmxkUG9zaXRpb24ueHl6O1xuXHQjZWxzZVxuXHRcdHZlYzMgY2FtZXJhVG9WZXJ0ZXg7XG5cdFx0aWYgKCBpc09ydGhvZ3JhcGhpYyApIHtcblx0XHRcdGNhbWVyYVRvVmVydGV4ID0gbm9ybWFsaXplKCB2ZWMzKCAtIHZpZXdNYXRyaXhbIDAgXVsgMiBdLCAtIHZpZXdNYXRyaXhbIDEgXVsgMiBdLCAtIHZpZXdNYXRyaXhbIDIgXVsgMiBdICkgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y2FtZXJhVG9WZXJ0ZXggPSBub3JtYWxpemUoIHdvcmxkUG9zaXRpb24ueHl6IC0gY2FtZXJhUG9zaXRpb24gKTtcblx0XHR9XG5cdFx0dmVjMyB3b3JsZE5vcm1hbCA9IGludmVyc2VUcmFuc2Zvcm1EaXJlY3Rpb24oIHRyYW5zZm9ybWVkTm9ybWFsLCB2aWV3TWF0cml4ICk7XG5cdFx0I2lmZGVmIEVOVk1BUF9NT0RFX1JFRkxFQ1RJT05cblx0XHRcdHZSZWZsZWN0ID0gcmVmbGVjdCggY2FtZXJhVG9WZXJ0ZXgsIHdvcmxkTm9ybWFsICk7XG5cdFx0I2Vsc2Vcblx0XHRcdHZSZWZsZWN0ID0gcmVmcmFjdCggY2FtZXJhVG9WZXJ0ZXgsIHdvcmxkTm9ybWFsLCByZWZyYWN0aW9uUmF0aW8gKTtcblx0XHQjZW5kaWZcblx0I2VuZGlmXG4jZW5kaWYiLGZvZ192ZXJ0ZXg6IiNpZmRlZiBVU0VfRk9HXG5cdGZvZ0RlcHRoID0gLSBtdlBvc2l0aW9uLno7XG4jZW5kaWYiLGZvZ19wYXJzX3ZlcnRleDoiI2lmZGVmIFVTRV9GT0dcblx0dmFyeWluZyBmbG9hdCBmb2dEZXB0aDtcbiNlbmRpZiIsZm9nX2ZyYWdtZW50OiIjaWZkZWYgVVNFX0ZPR1xuXHQjaWZkZWYgRk9HX0VYUDJcblx0XHRmbG9hdCBmb2dGYWN0b3IgPSAxLjAgLSBleHAoIC0gZm9nRGVuc2l0eSAqIGZvZ0RlbnNpdHkgKiBmb2dEZXB0aCAqIGZvZ0RlcHRoICk7XG5cdCNlbHNlXG5cdFx0ZmxvYXQgZm9nRmFjdG9yID0gc21vb3Roc3RlcCggZm9nTmVhciwgZm9nRmFyLCBmb2dEZXB0aCApO1xuXHQjZW5kaWZcblx0Z2xfRnJhZ0NvbG9yLnJnYiA9IG1peCggZ2xfRnJhZ0NvbG9yLnJnYiwgZm9nQ29sb3IsIGZvZ0ZhY3RvciApO1xuI2VuZGlmIixmb2dfcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9GT0dcblx0dW5pZm9ybSB2ZWMzIGZvZ0NvbG9yO1xuXHR2YXJ5aW5nIGZsb2F0IGZvZ0RlcHRoO1xuXHQjaWZkZWYgRk9HX0VYUDJcblx0XHR1bmlmb3JtIGZsb2F0IGZvZ0RlbnNpdHk7XG5cdCNlbHNlXG5cdFx0dW5pZm9ybSBmbG9hdCBmb2dOZWFyO1xuXHRcdHVuaWZvcm0gZmxvYXQgZm9nRmFyO1xuXHQjZW5kaWZcbiNlbmRpZiIsZ3JhZGllbnRtYXBfcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9HUkFESUVOVE1BUFxuXHR1bmlmb3JtIHNhbXBsZXIyRCBncmFkaWVudE1hcDtcbiNlbmRpZlxudmVjMyBnZXRHcmFkaWVudElycmFkaWFuY2UoIHZlYzMgbm9ybWFsLCB2ZWMzIGxpZ2h0RGlyZWN0aW9uICkge1xuXHRmbG9hdCBkb3ROTCA9IGRvdCggbm9ybWFsLCBsaWdodERpcmVjdGlvbiApO1xuXHR2ZWMyIGNvb3JkID0gdmVjMiggZG90TkwgKiAwLjUgKyAwLjUsIDAuMCApO1xuXHQjaWZkZWYgVVNFX0dSQURJRU5UTUFQXG5cdFx0cmV0dXJuIHRleHR1cmUyRCggZ3JhZGllbnRNYXAsIGNvb3JkICkucmdiO1xuXHQjZWxzZVxuXHRcdHJldHVybiAoIGNvb3JkLnggPCAwLjcgKSA/IHZlYzMoIDAuNyApIDogdmVjMyggMS4wICk7XG5cdCNlbmRpZlxufSIsbGlnaHRtYXBfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfTElHSFRNQVBcblx0dmVjNCBsaWdodE1hcFRleGVsPSB0ZXh0dXJlMkQoIGxpZ2h0TWFwLCB2VXYyICk7XG5cdHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZSArPSBQSSAqIGxpZ2h0TWFwVGV4ZWxUb0xpbmVhciggbGlnaHRNYXBUZXhlbCApLnJnYiAqIGxpZ2h0TWFwSW50ZW5zaXR5O1xuI2VuZGlmIixsaWdodG1hcF9wYXJzX2ZyYWdtZW50OiIjaWZkZWYgVVNFX0xJR0hUTUFQXG5cdHVuaWZvcm0gc2FtcGxlcjJEIGxpZ2h0TWFwO1xuXHR1bmlmb3JtIGZsb2F0IGxpZ2h0TWFwSW50ZW5zaXR5O1xuI2VuZGlmIixsaWdodHNfbGFtYmVydF92ZXJ0ZXg6InZlYzMgZGlmZnVzZSA9IHZlYzMoIDEuMCApO1xuR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeTtcbmdlb21ldHJ5LnBvc2l0aW9uID0gbXZQb3NpdGlvbi54eXo7XG5nZW9tZXRyeS5ub3JtYWwgPSBub3JtYWxpemUoIHRyYW5zZm9ybWVkTm9ybWFsICk7XG5nZW9tZXRyeS52aWV3RGlyID0gKCBpc09ydGhvZ3JhcGhpYyApID8gdmVjMyggMCwgMCwgMSApIDogbm9ybWFsaXplKCAtbXZQb3NpdGlvbi54eXogKTtcbkdlb21ldHJpY0NvbnRleHQgYmFja0dlb21ldHJ5O1xuYmFja0dlb21ldHJ5LnBvc2l0aW9uID0gZ2VvbWV0cnkucG9zaXRpb247XG5iYWNrR2VvbWV0cnkubm9ybWFsID0gLWdlb21ldHJ5Lm5vcm1hbDtcbmJhY2tHZW9tZXRyeS52aWV3RGlyID0gZ2VvbWV0cnkudmlld0RpcjtcbnZMaWdodEZyb250ID0gdmVjMyggMC4wICk7XG52SW5kaXJlY3RGcm9udCA9IHZlYzMoIDAuMCApO1xuI2lmZGVmIERPVUJMRV9TSURFRFxuXHR2TGlnaHRCYWNrID0gdmVjMyggMC4wICk7XG5cdHZJbmRpcmVjdEJhY2sgPSB2ZWMzKCAwLjAgKTtcbiNlbmRpZlxuSW5jaWRlbnRMaWdodCBkaXJlY3RMaWdodDtcbmZsb2F0IGRvdE5MO1xudmVjMyBkaXJlY3RMaWdodENvbG9yX0RpZmZ1c2U7XG52SW5kaXJlY3RGcm9udCArPSBnZXRBbWJpZW50TGlnaHRJcnJhZGlhbmNlKCBhbWJpZW50TGlnaHRDb2xvciApO1xudkluZGlyZWN0RnJvbnQgKz0gZ2V0TGlnaHRQcm9iZUlycmFkaWFuY2UoIGxpZ2h0UHJvYmUsIGdlb21ldHJ5ICk7XG4jaWZkZWYgRE9VQkxFX1NJREVEXG5cdHZJbmRpcmVjdEJhY2sgKz0gZ2V0QW1iaWVudExpZ2h0SXJyYWRpYW5jZSggYW1iaWVudExpZ2h0Q29sb3IgKTtcblx0dkluZGlyZWN0QmFjayArPSBnZXRMaWdodFByb2JlSXJyYWRpYW5jZSggbGlnaHRQcm9iZSwgYmFja0dlb21ldHJ5ICk7XG4jZW5kaWZcbiNpZiBOVU1fUE9JTlRfTElHSFRTID4gMFxuXHQjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0XG5cdGZvciAoIGludCBpID0gMDsgaSA8IE5VTV9QT0lOVF9MSUdIVFM7IGkgKysgKSB7XG5cdFx0Z2V0UG9pbnREaXJlY3RMaWdodElycmFkaWFuY2UoIHBvaW50TGlnaHRzWyBpIF0sIGdlb21ldHJ5LCBkaXJlY3RMaWdodCApO1xuXHRcdGRvdE5MID0gZG90KCBnZW9tZXRyeS5ub3JtYWwsIGRpcmVjdExpZ2h0LmRpcmVjdGlvbiApO1xuXHRcdGRpcmVjdExpZ2h0Q29sb3JfRGlmZnVzZSA9IFBJICogZGlyZWN0TGlnaHQuY29sb3I7XG5cdFx0dkxpZ2h0RnJvbnQgKz0gc2F0dXJhdGUoIGRvdE5MICkgKiBkaXJlY3RMaWdodENvbG9yX0RpZmZ1c2U7XG5cdFx0I2lmZGVmIERPVUJMRV9TSURFRFxuXHRcdFx0dkxpZ2h0QmFjayArPSBzYXR1cmF0ZSggLWRvdE5MICkgKiBkaXJlY3RMaWdodENvbG9yX0RpZmZ1c2U7XG5cdFx0I2VuZGlmXG5cdH1cblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9lbmRcbiNlbmRpZlxuI2lmIE5VTV9TUE9UX0xJR0hUUyA+IDBcblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydFxuXHRmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fU1BPVF9MSUdIVFM7IGkgKysgKSB7XG5cdFx0Z2V0U3BvdERpcmVjdExpZ2h0SXJyYWRpYW5jZSggc3BvdExpZ2h0c1sgaSBdLCBnZW9tZXRyeSwgZGlyZWN0TGlnaHQgKTtcblx0XHRkb3ROTCA9IGRvdCggZ2VvbWV0cnkubm9ybWFsLCBkaXJlY3RMaWdodC5kaXJlY3Rpb24gKTtcblx0XHRkaXJlY3RMaWdodENvbG9yX0RpZmZ1c2UgPSBQSSAqIGRpcmVjdExpZ2h0LmNvbG9yO1xuXHRcdHZMaWdodEZyb250ICs9IHNhdHVyYXRlKCBkb3ROTCApICogZGlyZWN0TGlnaHRDb2xvcl9EaWZmdXNlO1xuXHRcdCNpZmRlZiBET1VCTEVfU0lERURcblx0XHRcdHZMaWdodEJhY2sgKz0gc2F0dXJhdGUoIC1kb3ROTCApICogZGlyZWN0TGlnaHRDb2xvcl9EaWZmdXNlO1xuXHRcdCNlbmRpZlxuXHR9XG5cdCNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kXG4jZW5kaWZcbiNpZiBOVU1fRElSX0xJR0hUUyA+IDBcblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydFxuXHRmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fRElSX0xJR0hUUzsgaSArKyApIHtcblx0XHRnZXREaXJlY3Rpb25hbERpcmVjdExpZ2h0SXJyYWRpYW5jZSggZGlyZWN0aW9uYWxMaWdodHNbIGkgXSwgZ2VvbWV0cnksIGRpcmVjdExpZ2h0ICk7XG5cdFx0ZG90TkwgPSBkb3QoIGdlb21ldHJ5Lm5vcm1hbCwgZGlyZWN0TGlnaHQuZGlyZWN0aW9uICk7XG5cdFx0ZGlyZWN0TGlnaHRDb2xvcl9EaWZmdXNlID0gUEkgKiBkaXJlY3RMaWdodC5jb2xvcjtcblx0XHR2TGlnaHRGcm9udCArPSBzYXR1cmF0ZSggZG90TkwgKSAqIGRpcmVjdExpZ2h0Q29sb3JfRGlmZnVzZTtcblx0XHQjaWZkZWYgRE9VQkxFX1NJREVEXG5cdFx0XHR2TGlnaHRCYWNrICs9IHNhdHVyYXRlKCAtZG90TkwgKSAqIGRpcmVjdExpZ2h0Q29sb3JfRGlmZnVzZTtcblx0XHQjZW5kaWZcblx0fVxuXHQjcHJhZ21hIHVucm9sbF9sb29wX2VuZFxuI2VuZGlmXG4jaWYgTlVNX0hFTUlfTElHSFRTID4gMFxuXHQjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0XG5cdGZvciAoIGludCBpID0gMDsgaSA8IE5VTV9IRU1JX0xJR0hUUzsgaSArKyApIHtcblx0XHR2SW5kaXJlY3RGcm9udCArPSBnZXRIZW1pc3BoZXJlTGlnaHRJcnJhZGlhbmNlKCBoZW1pc3BoZXJlTGlnaHRzWyBpIF0sIGdlb21ldHJ5ICk7XG5cdFx0I2lmZGVmIERPVUJMRV9TSURFRFxuXHRcdFx0dkluZGlyZWN0QmFjayArPSBnZXRIZW1pc3BoZXJlTGlnaHRJcnJhZGlhbmNlKCBoZW1pc3BoZXJlTGlnaHRzWyBpIF0sIGJhY2tHZW9tZXRyeSApO1xuXHRcdCNlbmRpZlxuXHR9XG5cdCNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kXG4jZW5kaWYiLGxpZ2h0c19wYXJzX2JlZ2luOiJ1bmlmb3JtIGJvb2wgcmVjZWl2ZVNoYWRvdztcbnVuaWZvcm0gdmVjMyBhbWJpZW50TGlnaHRDb2xvcjtcbnVuaWZvcm0gdmVjMyBsaWdodFByb2JlWyA5IF07XG52ZWMzIHNoR2V0SXJyYWRpYW5jZUF0KCBpbiB2ZWMzIG5vcm1hbCwgaW4gdmVjMyBzaENvZWZmaWNpZW50c1sgOSBdICkge1xuXHRmbG9hdCB4ID0gbm9ybWFsLngsIHkgPSBub3JtYWwueSwgeiA9IG5vcm1hbC56O1xuXHR2ZWMzIHJlc3VsdCA9IHNoQ29lZmZpY2llbnRzWyAwIF0gKiAwLjg4NjIyNztcblx0cmVzdWx0ICs9IHNoQ29lZmZpY2llbnRzWyAxIF0gKiAyLjAgKiAwLjUxMTY2NCAqIHk7XG5cdHJlc3VsdCArPSBzaENvZWZmaWNpZW50c1sgMiBdICogMi4wICogMC41MTE2NjQgKiB6O1xuXHRyZXN1bHQgKz0gc2hDb2VmZmljaWVudHNbIDMgXSAqIDIuMCAqIDAuNTExNjY0ICogeDtcblx0cmVzdWx0ICs9IHNoQ29lZmZpY2llbnRzWyA0IF0gKiAyLjAgKiAwLjQyOTA0MyAqIHggKiB5O1xuXHRyZXN1bHQgKz0gc2hDb2VmZmljaWVudHNbIDUgXSAqIDIuMCAqIDAuNDI5MDQzICogeSAqIHo7XG5cdHJlc3VsdCArPSBzaENvZWZmaWNpZW50c1sgNiBdICogKCAwLjc0MzEyNSAqIHogKiB6IC0gMC4yNDc3MDggKTtcblx0cmVzdWx0ICs9IHNoQ29lZmZpY2llbnRzWyA3IF0gKiAyLjAgKiAwLjQyOTA0MyAqIHggKiB6O1xuXHRyZXN1bHQgKz0gc2hDb2VmZmljaWVudHNbIDggXSAqIDAuNDI5MDQzICogKCB4ICogeCAtIHkgKiB5ICk7XG5cdHJldHVybiByZXN1bHQ7XG59XG52ZWMzIGdldExpZ2h0UHJvYmVJcnJhZGlhbmNlKCBjb25zdCBpbiB2ZWMzIGxpZ2h0UHJvYmVbIDkgXSwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSApIHtcblx0dmVjMyB3b3JsZE5vcm1hbCA9IGludmVyc2VUcmFuc2Zvcm1EaXJlY3Rpb24oIGdlb21ldHJ5Lm5vcm1hbCwgdmlld01hdHJpeCApO1xuXHR2ZWMzIGlycmFkaWFuY2UgPSBzaEdldElycmFkaWFuY2VBdCggd29ybGROb3JtYWwsIGxpZ2h0UHJvYmUgKTtcblx0cmV0dXJuIGlycmFkaWFuY2U7XG59XG52ZWMzIGdldEFtYmllbnRMaWdodElycmFkaWFuY2UoIGNvbnN0IGluIHZlYzMgYW1iaWVudExpZ2h0Q29sb3IgKSB7XG5cdHZlYzMgaXJyYWRpYW5jZSA9IGFtYmllbnRMaWdodENvbG9yO1xuXHQjaWZuZGVmIFBIWVNJQ0FMTFlfQ09SUkVDVF9MSUdIVFNcblx0XHRpcnJhZGlhbmNlICo9IFBJO1xuXHQjZW5kaWZcblx0cmV0dXJuIGlycmFkaWFuY2U7XG59XG4jaWYgTlVNX0RJUl9MSUdIVFMgPiAwXG5cdHN0cnVjdCBEaXJlY3Rpb25hbExpZ2h0IHtcblx0XHR2ZWMzIGRpcmVjdGlvbjtcblx0XHR2ZWMzIGNvbG9yO1xuXHR9O1xuXHR1bmlmb3JtIERpcmVjdGlvbmFsTGlnaHQgZGlyZWN0aW9uYWxMaWdodHNbIE5VTV9ESVJfTElHSFRTIF07XG5cdHZvaWQgZ2V0RGlyZWN0aW9uYWxEaXJlY3RMaWdodElycmFkaWFuY2UoIGNvbnN0IGluIERpcmVjdGlvbmFsTGlnaHQgZGlyZWN0aW9uYWxMaWdodCwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgb3V0IEluY2lkZW50TGlnaHQgZGlyZWN0TGlnaHQgKSB7XG5cdFx0ZGlyZWN0TGlnaHQuY29sb3IgPSBkaXJlY3Rpb25hbExpZ2h0LmNvbG9yO1xuXHRcdGRpcmVjdExpZ2h0LmRpcmVjdGlvbiA9IGRpcmVjdGlvbmFsTGlnaHQuZGlyZWN0aW9uO1xuXHRcdGRpcmVjdExpZ2h0LnZpc2libGUgPSB0cnVlO1xuXHR9XG4jZW5kaWZcbiNpZiBOVU1fUE9JTlRfTElHSFRTID4gMFxuXHRzdHJ1Y3QgUG9pbnRMaWdodCB7XG5cdFx0dmVjMyBwb3NpdGlvbjtcblx0XHR2ZWMzIGNvbG9yO1xuXHRcdGZsb2F0IGRpc3RhbmNlO1xuXHRcdGZsb2F0IGRlY2F5O1xuXHR9O1xuXHR1bmlmb3JtIFBvaW50TGlnaHQgcG9pbnRMaWdodHNbIE5VTV9QT0lOVF9MSUdIVFMgXTtcblx0dm9pZCBnZXRQb2ludERpcmVjdExpZ2h0SXJyYWRpYW5jZSggY29uc3QgaW4gUG9pbnRMaWdodCBwb2ludExpZ2h0LCBjb25zdCBpbiBHZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5LCBvdXQgSW5jaWRlbnRMaWdodCBkaXJlY3RMaWdodCApIHtcblx0XHR2ZWMzIGxWZWN0b3IgPSBwb2ludExpZ2h0LnBvc2l0aW9uIC0gZ2VvbWV0cnkucG9zaXRpb247XG5cdFx0ZGlyZWN0TGlnaHQuZGlyZWN0aW9uID0gbm9ybWFsaXplKCBsVmVjdG9yICk7XG5cdFx0ZmxvYXQgbGlnaHREaXN0YW5jZSA9IGxlbmd0aCggbFZlY3RvciApO1xuXHRcdGRpcmVjdExpZ2h0LmNvbG9yID0gcG9pbnRMaWdodC5jb2xvcjtcblx0XHRkaXJlY3RMaWdodC5jb2xvciAqPSBwdW5jdHVhbExpZ2h0SW50ZW5zaXR5VG9JcnJhZGlhbmNlRmFjdG9yKCBsaWdodERpc3RhbmNlLCBwb2ludExpZ2h0LmRpc3RhbmNlLCBwb2ludExpZ2h0LmRlY2F5ICk7XG5cdFx0ZGlyZWN0TGlnaHQudmlzaWJsZSA9ICggZGlyZWN0TGlnaHQuY29sb3IgIT0gdmVjMyggMC4wICkgKTtcblx0fVxuI2VuZGlmXG4jaWYgTlVNX1NQT1RfTElHSFRTID4gMFxuXHRzdHJ1Y3QgU3BvdExpZ2h0IHtcblx0XHR2ZWMzIHBvc2l0aW9uO1xuXHRcdHZlYzMgZGlyZWN0aW9uO1xuXHRcdHZlYzMgY29sb3I7XG5cdFx0ZmxvYXQgZGlzdGFuY2U7XG5cdFx0ZmxvYXQgZGVjYXk7XG5cdFx0ZmxvYXQgY29uZUNvcztcblx0XHRmbG9hdCBwZW51bWJyYUNvcztcblx0fTtcblx0dW5pZm9ybSBTcG90TGlnaHQgc3BvdExpZ2h0c1sgTlVNX1NQT1RfTElHSFRTIF07XG5cdHZvaWQgZ2V0U3BvdERpcmVjdExpZ2h0SXJyYWRpYW5jZSggY29uc3QgaW4gU3BvdExpZ2h0IHNwb3RMaWdodCwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgb3V0IEluY2lkZW50TGlnaHQgZGlyZWN0TGlnaHQgKSB7XG5cdFx0dmVjMyBsVmVjdG9yID0gc3BvdExpZ2h0LnBvc2l0aW9uIC0gZ2VvbWV0cnkucG9zaXRpb247XG5cdFx0ZGlyZWN0TGlnaHQuZGlyZWN0aW9uID0gbm9ybWFsaXplKCBsVmVjdG9yICk7XG5cdFx0ZmxvYXQgbGlnaHREaXN0YW5jZSA9IGxlbmd0aCggbFZlY3RvciApO1xuXHRcdGZsb2F0IGFuZ2xlQ29zID0gZG90KCBkaXJlY3RMaWdodC5kaXJlY3Rpb24sIHNwb3RMaWdodC5kaXJlY3Rpb24gKTtcblx0XHRpZiAoIGFuZ2xlQ29zID4gc3BvdExpZ2h0LmNvbmVDb3MgKSB7XG5cdFx0XHRmbG9hdCBzcG90RWZmZWN0ID0gc21vb3Roc3RlcCggc3BvdExpZ2h0LmNvbmVDb3MsIHNwb3RMaWdodC5wZW51bWJyYUNvcywgYW5nbGVDb3MgKTtcblx0XHRcdGRpcmVjdExpZ2h0LmNvbG9yID0gc3BvdExpZ2h0LmNvbG9yO1xuXHRcdFx0ZGlyZWN0TGlnaHQuY29sb3IgKj0gc3BvdEVmZmVjdCAqIHB1bmN0dWFsTGlnaHRJbnRlbnNpdHlUb0lycmFkaWFuY2VGYWN0b3IoIGxpZ2h0RGlzdGFuY2UsIHNwb3RMaWdodC5kaXN0YW5jZSwgc3BvdExpZ2h0LmRlY2F5ICk7XG5cdFx0XHRkaXJlY3RMaWdodC52aXNpYmxlID0gdHJ1ZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0ZGlyZWN0TGlnaHQuY29sb3IgPSB2ZWMzKCAwLjAgKTtcblx0XHRcdGRpcmVjdExpZ2h0LnZpc2libGUgPSBmYWxzZTtcblx0XHR9XG5cdH1cbiNlbmRpZlxuI2lmIE5VTV9SRUNUX0FSRUFfTElHSFRTID4gMFxuXHRzdHJ1Y3QgUmVjdEFyZWFMaWdodCB7XG5cdFx0dmVjMyBjb2xvcjtcblx0XHR2ZWMzIHBvc2l0aW9uO1xuXHRcdHZlYzMgaGFsZldpZHRoO1xuXHRcdHZlYzMgaGFsZkhlaWdodDtcblx0fTtcblx0dW5pZm9ybSBzYW1wbGVyMkQgbHRjXzE7XHR1bmlmb3JtIHNhbXBsZXIyRCBsdGNfMjtcblx0dW5pZm9ybSBSZWN0QXJlYUxpZ2h0IHJlY3RBcmVhTGlnaHRzWyBOVU1fUkVDVF9BUkVBX0xJR0hUUyBdO1xuI2VuZGlmXG4jaWYgTlVNX0hFTUlfTElHSFRTID4gMFxuXHRzdHJ1Y3QgSGVtaXNwaGVyZUxpZ2h0IHtcblx0XHR2ZWMzIGRpcmVjdGlvbjtcblx0XHR2ZWMzIHNreUNvbG9yO1xuXHRcdHZlYzMgZ3JvdW5kQ29sb3I7XG5cdH07XG5cdHVuaWZvcm0gSGVtaXNwaGVyZUxpZ2h0IGhlbWlzcGhlcmVMaWdodHNbIE5VTV9IRU1JX0xJR0hUUyBdO1xuXHR2ZWMzIGdldEhlbWlzcGhlcmVMaWdodElycmFkaWFuY2UoIGNvbnN0IGluIEhlbWlzcGhlcmVMaWdodCBoZW1pTGlnaHQsIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnkgKSB7XG5cdFx0ZmxvYXQgZG90TkwgPSBkb3QoIGdlb21ldHJ5Lm5vcm1hbCwgaGVtaUxpZ2h0LmRpcmVjdGlvbiApO1xuXHRcdGZsb2F0IGhlbWlEaWZmdXNlV2VpZ2h0ID0gMC41ICogZG90TkwgKyAwLjU7XG5cdFx0dmVjMyBpcnJhZGlhbmNlID0gbWl4KCBoZW1pTGlnaHQuZ3JvdW5kQ29sb3IsIGhlbWlMaWdodC5za3lDb2xvciwgaGVtaURpZmZ1c2VXZWlnaHQgKTtcblx0XHQjaWZuZGVmIFBIWVNJQ0FMTFlfQ09SUkVDVF9MSUdIVFNcblx0XHRcdGlycmFkaWFuY2UgKj0gUEk7XG5cdFx0I2VuZGlmXG5cdFx0cmV0dXJuIGlycmFkaWFuY2U7XG5cdH1cbiNlbmRpZiIsbGlnaHRzX3Rvb25fZnJhZ21lbnQ6IlRvb25NYXRlcmlhbCBtYXRlcmlhbDtcbm1hdGVyaWFsLmRpZmZ1c2VDb2xvciA9IGRpZmZ1c2VDb2xvci5yZ2I7IixsaWdodHNfdG9vbl9wYXJzX2ZyYWdtZW50OiJ2YXJ5aW5nIHZlYzMgdlZpZXdQb3NpdGlvbjtcbiNpZm5kZWYgRkxBVF9TSEFERURcblx0dmFyeWluZyB2ZWMzIHZOb3JtYWw7XG4jZW5kaWZcbnN0cnVjdCBUb29uTWF0ZXJpYWwge1xuXHR2ZWMzIGRpZmZ1c2VDb2xvcjtcbn07XG52b2lkIFJFX0RpcmVjdF9Ub29uKCBjb25zdCBpbiBJbmNpZGVudExpZ2h0IGRpcmVjdExpZ2h0LCBjb25zdCBpbiBHZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5LCBjb25zdCBpbiBUb29uTWF0ZXJpYWwgbWF0ZXJpYWwsIGlub3V0IFJlZmxlY3RlZExpZ2h0IHJlZmxlY3RlZExpZ2h0ICkge1xuXHR2ZWMzIGlycmFkaWFuY2UgPSBnZXRHcmFkaWVudElycmFkaWFuY2UoIGdlb21ldHJ5Lm5vcm1hbCwgZGlyZWN0TGlnaHQuZGlyZWN0aW9uICkgKiBkaXJlY3RMaWdodC5jb2xvcjtcblx0I2lmbmRlZiBQSFlTSUNBTExZX0NPUlJFQ1RfTElHSFRTXG5cdFx0aXJyYWRpYW5jZSAqPSBQSTtcblx0I2VuZGlmXG5cdHJlZmxlY3RlZExpZ2h0LmRpcmVjdERpZmZ1c2UgKz0gaXJyYWRpYW5jZSAqIEJSREZfRGlmZnVzZV9MYW1iZXJ0KCBtYXRlcmlhbC5kaWZmdXNlQ29sb3IgKTtcbn1cbnZvaWQgUkVfSW5kaXJlY3REaWZmdXNlX1Rvb24oIGNvbnN0IGluIHZlYzMgaXJyYWRpYW5jZSwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgY29uc3QgaW4gVG9vbk1hdGVyaWFsIG1hdGVyaWFsLCBpbm91dCBSZWZsZWN0ZWRMaWdodCByZWZsZWN0ZWRMaWdodCApIHtcblx0cmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICs9IGlycmFkaWFuY2UgKiBCUkRGX0RpZmZ1c2VfTGFtYmVydCggbWF0ZXJpYWwuZGlmZnVzZUNvbG9yICk7XG59XG4jZGVmaW5lIFJFX0RpcmVjdFx0XHRcdFx0UkVfRGlyZWN0X1Rvb25cbiNkZWZpbmUgUkVfSW5kaXJlY3REaWZmdXNlXHRcdFJFX0luZGlyZWN0RGlmZnVzZV9Ub29uXG4jZGVmaW5lIE1hdGVyaWFsX0xpZ2h0UHJvYmVMT0QoIG1hdGVyaWFsIClcdCgwKSIsbGlnaHRzX3Bob25nX2ZyYWdtZW50OiJCbGlublBob25nTWF0ZXJpYWwgbWF0ZXJpYWw7XG5tYXRlcmlhbC5kaWZmdXNlQ29sb3IgPSBkaWZmdXNlQ29sb3IucmdiO1xubWF0ZXJpYWwuc3BlY3VsYXJDb2xvciA9IHNwZWN1bGFyO1xubWF0ZXJpYWwuc3BlY3VsYXJTaGluaW5lc3MgPSBzaGluaW5lc3M7XG5tYXRlcmlhbC5zcGVjdWxhclN0cmVuZ3RoID0gc3BlY3VsYXJTdHJlbmd0aDsiLGxpZ2h0c19waG9uZ19wYXJzX2ZyYWdtZW50OiJ2YXJ5aW5nIHZlYzMgdlZpZXdQb3NpdGlvbjtcbiNpZm5kZWYgRkxBVF9TSEFERURcblx0dmFyeWluZyB2ZWMzIHZOb3JtYWw7XG4jZW5kaWZcbnN0cnVjdCBCbGlublBob25nTWF0ZXJpYWwge1xuXHR2ZWMzIGRpZmZ1c2VDb2xvcjtcblx0dmVjMyBzcGVjdWxhckNvbG9yO1xuXHRmbG9hdCBzcGVjdWxhclNoaW5pbmVzcztcblx0ZmxvYXQgc3BlY3VsYXJTdHJlbmd0aDtcbn07XG52b2lkIFJFX0RpcmVjdF9CbGlublBob25nKCBjb25zdCBpbiBJbmNpZGVudExpZ2h0IGRpcmVjdExpZ2h0LCBjb25zdCBpbiBHZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5LCBjb25zdCBpbiBCbGlublBob25nTWF0ZXJpYWwgbWF0ZXJpYWwsIGlub3V0IFJlZmxlY3RlZExpZ2h0IHJlZmxlY3RlZExpZ2h0ICkge1xuXHRmbG9hdCBkb3ROTCA9IHNhdHVyYXRlKCBkb3QoIGdlb21ldHJ5Lm5vcm1hbCwgZGlyZWN0TGlnaHQuZGlyZWN0aW9uICkgKTtcblx0dmVjMyBpcnJhZGlhbmNlID0gZG90TkwgKiBkaXJlY3RMaWdodC5jb2xvcjtcblx0I2lmbmRlZiBQSFlTSUNBTExZX0NPUlJFQ1RfTElHSFRTXG5cdFx0aXJyYWRpYW5jZSAqPSBQSTtcblx0I2VuZGlmXG5cdHJlZmxlY3RlZExpZ2h0LmRpcmVjdERpZmZ1c2UgKz0gaXJyYWRpYW5jZSAqIEJSREZfRGlmZnVzZV9MYW1iZXJ0KCBtYXRlcmlhbC5kaWZmdXNlQ29sb3IgKTtcblx0cmVmbGVjdGVkTGlnaHQuZGlyZWN0U3BlY3VsYXIgKz0gaXJyYWRpYW5jZSAqIEJSREZfU3BlY3VsYXJfQmxpbm5QaG9uZyggZGlyZWN0TGlnaHQsIGdlb21ldHJ5LCBtYXRlcmlhbC5zcGVjdWxhckNvbG9yLCBtYXRlcmlhbC5zcGVjdWxhclNoaW5pbmVzcyApICogbWF0ZXJpYWwuc3BlY3VsYXJTdHJlbmd0aDtcbn1cbnZvaWQgUkVfSW5kaXJlY3REaWZmdXNlX0JsaW5uUGhvbmcoIGNvbnN0IGluIHZlYzMgaXJyYWRpYW5jZSwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgY29uc3QgaW4gQmxpbm5QaG9uZ01hdGVyaWFsIG1hdGVyaWFsLCBpbm91dCBSZWZsZWN0ZWRMaWdodCByZWZsZWN0ZWRMaWdodCApIHtcblx0cmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICs9IGlycmFkaWFuY2UgKiBCUkRGX0RpZmZ1c2VfTGFtYmVydCggbWF0ZXJpYWwuZGlmZnVzZUNvbG9yICk7XG59XG4jZGVmaW5lIFJFX0RpcmVjdFx0XHRcdFx0UkVfRGlyZWN0X0JsaW5uUGhvbmdcbiNkZWZpbmUgUkVfSW5kaXJlY3REaWZmdXNlXHRcdFJFX0luZGlyZWN0RGlmZnVzZV9CbGlublBob25nXG4jZGVmaW5lIE1hdGVyaWFsX0xpZ2h0UHJvYmVMT0QoIG1hdGVyaWFsIClcdCgwKSIsbGlnaHRzX3BoeXNpY2FsX2ZyYWdtZW50OiJQaHlzaWNhbE1hdGVyaWFsIG1hdGVyaWFsO1xubWF0ZXJpYWwuZGlmZnVzZUNvbG9yID0gZGlmZnVzZUNvbG9yLnJnYiAqICggMS4wIC0gbWV0YWxuZXNzRmFjdG9yICk7XG52ZWMzIGR4eSA9IG1heCggYWJzKCBkRmR4KCBnZW9tZXRyeU5vcm1hbCApICksIGFicyggZEZkeSggZ2VvbWV0cnlOb3JtYWwgKSApICk7XG5mbG9hdCBnZW9tZXRyeVJvdWdobmVzcyA9IG1heCggbWF4KCBkeHkueCwgZHh5LnkgKSwgZHh5LnogKTtcbm1hdGVyaWFsLnNwZWN1bGFyUm91Z2huZXNzID0gbWF4KCByb3VnaG5lc3NGYWN0b3IsIDAuMDUyNSApO21hdGVyaWFsLnNwZWN1bGFyUm91Z2huZXNzICs9IGdlb21ldHJ5Um91Z2huZXNzO1xubWF0ZXJpYWwuc3BlY3VsYXJSb3VnaG5lc3MgPSBtaW4oIG1hdGVyaWFsLnNwZWN1bGFyUm91Z2huZXNzLCAxLjAgKTtcbiNpZmRlZiBSRUZMRUNUSVZJVFlcblx0I2lmZGVmIFNQRUNVTEFSXG5cdFx0dmVjMyBzcGVjdWxhckludGVuc2l0eUZhY3RvciA9IHZlYzMoIHNwZWN1bGFySW50ZW5zaXR5ICk7XG5cdFx0dmVjMyBzcGVjdWxhclRpbnRGYWN0b3IgPSBzcGVjdWxhclRpbnQ7XG5cdFx0I2lmZGVmIFVTRV9TUEVDVUxBUklOVEVOU0lUWU1BUFxuXHRcdFx0c3BlY3VsYXJJbnRlbnNpdHlGYWN0b3IgKj0gdGV4dHVyZTJEKCBzcGVjdWxhckludGVuc2l0eU1hcCwgdlV2ICkuYTtcblx0XHQjZW5kaWZcblx0XHQjaWZkZWYgVVNFX1NQRUNVTEFSVElOVE1BUFxuXHRcdFx0c3BlY3VsYXJUaW50RmFjdG9yICo9IHNwZWN1bGFyVGludE1hcFRleGVsVG9MaW5lYXIoIHRleHR1cmUyRCggc3BlY3VsYXJUaW50TWFwLCB2VXYgKSApLnJnYjtcblx0XHQjZW5kaWZcblx0XHRtYXRlcmlhbC5zcGVjdWxhckNvbG9yRjkwID0gbWl4KCBzcGVjdWxhckludGVuc2l0eUZhY3RvciwgdmVjMyggMS4wICksIG1ldGFsbmVzc0ZhY3RvciApO1xuXHQjZWxzZVxuXHRcdHZlYzMgc3BlY3VsYXJJbnRlbnNpdHlGYWN0b3IgPSB2ZWMzKCAxLjAgKTtcblx0XHR2ZWMzIHNwZWN1bGFyVGludEZhY3RvciA9IHZlYzMoIDEuMCApO1xuXHRcdG1hdGVyaWFsLnNwZWN1bGFyQ29sb3JGOTAgPSB2ZWMzKCAxLjAgKTtcblx0I2VuZGlmXG5cdG1hdGVyaWFsLnNwZWN1bGFyQ29sb3IgPSBtaXgoIG1pbiggdmVjMyggTUFYSU1VTV9TUEVDVUxBUl9DT0VGRklDSUVOVCAqIHBvdzIoIHJlZmxlY3Rpdml0eSApICkgKiBzcGVjdWxhclRpbnRGYWN0b3IsIHZlYzMoIDEuMCApICkgKiBzcGVjdWxhckludGVuc2l0eUZhY3RvciwgZGlmZnVzZUNvbG9yLnJnYiwgbWV0YWxuZXNzRmFjdG9yICk7XG4jZWxzZVxuXHRtYXRlcmlhbC5zcGVjdWxhckNvbG9yID0gbWl4KCB2ZWMzKCBERUZBVUxUX1NQRUNVTEFSX0NPRUZGSUNJRU5UICksIGRpZmZ1c2VDb2xvci5yZ2IsIG1ldGFsbmVzc0ZhY3RvciApO1xuXHRtYXRlcmlhbC5zcGVjdWxhckNvbG9yRjkwID0gdmVjMyggMS4wICk7XG4jZW5kaWZcbiNpZmRlZiBDTEVBUkNPQVRcblx0bWF0ZXJpYWwuY2xlYXJjb2F0ID0gY2xlYXJjb2F0O1xuXHRtYXRlcmlhbC5jbGVhcmNvYXRSb3VnaG5lc3MgPSBjbGVhcmNvYXRSb3VnaG5lc3M7XG5cdCNpZmRlZiBVU0VfQ0xFQVJDT0FUTUFQXG5cdFx0bWF0ZXJpYWwuY2xlYXJjb2F0ICo9IHRleHR1cmUyRCggY2xlYXJjb2F0TWFwLCB2VXYgKS54O1xuXHQjZW5kaWZcblx0I2lmZGVmIFVTRV9DTEVBUkNPQVRfUk9VR0hORVNTTUFQXG5cdFx0bWF0ZXJpYWwuY2xlYXJjb2F0Um91Z2huZXNzICo9IHRleHR1cmUyRCggY2xlYXJjb2F0Um91Z2huZXNzTWFwLCB2VXYgKS55O1xuXHQjZW5kaWZcblx0bWF0ZXJpYWwuY2xlYXJjb2F0ID0gc2F0dXJhdGUoIG1hdGVyaWFsLmNsZWFyY29hdCApO1x0bWF0ZXJpYWwuY2xlYXJjb2F0Um91Z2huZXNzID0gbWF4KCBtYXRlcmlhbC5jbGVhcmNvYXRSb3VnaG5lc3MsIDAuMDUyNSApO1xuXHRtYXRlcmlhbC5jbGVhcmNvYXRSb3VnaG5lc3MgKz0gZ2VvbWV0cnlSb3VnaG5lc3M7XG5cdG1hdGVyaWFsLmNsZWFyY29hdFJvdWdobmVzcyA9IG1pbiggbWF0ZXJpYWwuY2xlYXJjb2F0Um91Z2huZXNzLCAxLjAgKTtcbiNlbmRpZlxuI2lmZGVmIFVTRV9TSEVFTlxuXHRtYXRlcmlhbC5zaGVlbkNvbG9yID0gc2hlZW47XG4jZW5kaWYiLGxpZ2h0c19waHlzaWNhbF9wYXJzX2ZyYWdtZW50OiJzdHJ1Y3QgUGh5c2ljYWxNYXRlcmlhbCB7XG5cdHZlYzMgZGlmZnVzZUNvbG9yO1xuXHRmbG9hdCBzcGVjdWxhclJvdWdobmVzcztcblx0dmVjMyBzcGVjdWxhckNvbG9yO1xuXHR2ZWMzIHNwZWN1bGFyQ29sb3JGOTA7XG4jaWZkZWYgQ0xFQVJDT0FUXG5cdGZsb2F0IGNsZWFyY29hdDtcblx0ZmxvYXQgY2xlYXJjb2F0Um91Z2huZXNzO1xuI2VuZGlmXG4jaWZkZWYgVVNFX1NIRUVOXG5cdHZlYzMgc2hlZW5Db2xvcjtcbiNlbmRpZlxufTtcbiNkZWZpbmUgTUFYSU1VTV9TUEVDVUxBUl9DT0VGRklDSUVOVCAwLjE2XG4jZGVmaW5lIERFRkFVTFRfU1BFQ1VMQVJfQ09FRkZJQ0lFTlQgMC4wNFxuZmxvYXQgY2xlYXJjb2F0REhSQXBwcm94KCBjb25zdCBpbiBmbG9hdCByb3VnaG5lc3MsIGNvbnN0IGluIGZsb2F0IGRvdE5MICkge1xuXHRyZXR1cm4gREVGQVVMVF9TUEVDVUxBUl9DT0VGRklDSUVOVCArICggMS4wIC0gREVGQVVMVF9TUEVDVUxBUl9DT0VGRklDSUVOVCApICogKCBwb3coIDEuMCAtIGRvdE5MLCA1LjAgKSAqIHBvdyggMS4wIC0gcm91Z2huZXNzLCAyLjAgKSApO1xufVxuI2lmIE5VTV9SRUNUX0FSRUFfTElHSFRTID4gMFxuXHR2b2lkIFJFX0RpcmVjdF9SZWN0QXJlYV9QaHlzaWNhbCggY29uc3QgaW4gUmVjdEFyZWFMaWdodCByZWN0QXJlYUxpZ2h0LCBjb25zdCBpbiBHZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5LCBjb25zdCBpbiBQaHlzaWNhbE1hdGVyaWFsIG1hdGVyaWFsLCBpbm91dCBSZWZsZWN0ZWRMaWdodCByZWZsZWN0ZWRMaWdodCApIHtcblx0XHR2ZWMzIG5vcm1hbCA9IGdlb21ldHJ5Lm5vcm1hbDtcblx0XHR2ZWMzIHZpZXdEaXIgPSBnZW9tZXRyeS52aWV3RGlyO1xuXHRcdHZlYzMgcG9zaXRpb24gPSBnZW9tZXRyeS5wb3NpdGlvbjtcblx0XHR2ZWMzIGxpZ2h0UG9zID0gcmVjdEFyZWFMaWdodC5wb3NpdGlvbjtcblx0XHR2ZWMzIGhhbGZXaWR0aCA9IHJlY3RBcmVhTGlnaHQuaGFsZldpZHRoO1xuXHRcdHZlYzMgaGFsZkhlaWdodCA9IHJlY3RBcmVhTGlnaHQuaGFsZkhlaWdodDtcblx0XHR2ZWMzIGxpZ2h0Q29sb3IgPSByZWN0QXJlYUxpZ2h0LmNvbG9yO1xuXHRcdGZsb2F0IHJvdWdobmVzcyA9IG1hdGVyaWFsLnNwZWN1bGFyUm91Z2huZXNzO1xuXHRcdHZlYzMgcmVjdENvb3Jkc1sgNCBdO1xuXHRcdHJlY3RDb29yZHNbIDAgXSA9IGxpZ2h0UG9zICsgaGFsZldpZHRoIC0gaGFsZkhlaWdodDtcdFx0cmVjdENvb3Jkc1sgMSBdID0gbGlnaHRQb3MgLSBoYWxmV2lkdGggLSBoYWxmSGVpZ2h0O1xuXHRcdHJlY3RDb29yZHNbIDIgXSA9IGxpZ2h0UG9zIC0gaGFsZldpZHRoICsgaGFsZkhlaWdodDtcblx0XHRyZWN0Q29vcmRzWyAzIF0gPSBsaWdodFBvcyArIGhhbGZXaWR0aCArIGhhbGZIZWlnaHQ7XG5cdFx0dmVjMiB1diA9IExUQ19Vdiggbm9ybWFsLCB2aWV3RGlyLCByb3VnaG5lc3MgKTtcblx0XHR2ZWM0IHQxID0gdGV4dHVyZTJEKCBsdGNfMSwgdXYgKTtcblx0XHR2ZWM0IHQyID0gdGV4dHVyZTJEKCBsdGNfMiwgdXYgKTtcblx0XHRtYXQzIG1JbnYgPSBtYXQzKFxuXHRcdFx0dmVjMyggdDEueCwgMCwgdDEueSApLFxuXHRcdFx0dmVjMyggICAgMCwgMSwgICAgMCApLFxuXHRcdFx0dmVjMyggdDEueiwgMCwgdDEudyApXG5cdFx0KTtcblx0XHR2ZWMzIGZyZXNuZWwgPSAoIG1hdGVyaWFsLnNwZWN1bGFyQ29sb3IgKiB0Mi54ICsgKCB2ZWMzKCAxLjAgKSAtIG1hdGVyaWFsLnNwZWN1bGFyQ29sb3IgKSAqIHQyLnkgKTtcblx0XHRyZWZsZWN0ZWRMaWdodC5kaXJlY3RTcGVjdWxhciArPSBsaWdodENvbG9yICogZnJlc25lbCAqIExUQ19FdmFsdWF0ZSggbm9ybWFsLCB2aWV3RGlyLCBwb3NpdGlvbiwgbUludiwgcmVjdENvb3JkcyApO1xuXHRcdHJlZmxlY3RlZExpZ2h0LmRpcmVjdERpZmZ1c2UgKz0gbGlnaHRDb2xvciAqIG1hdGVyaWFsLmRpZmZ1c2VDb2xvciAqIExUQ19FdmFsdWF0ZSggbm9ybWFsLCB2aWV3RGlyLCBwb3NpdGlvbiwgbWF0MyggMS4wICksIHJlY3RDb29yZHMgKTtcblx0fVxuI2VuZGlmXG52b2lkIFJFX0RpcmVjdF9QaHlzaWNhbCggY29uc3QgaW4gSW5jaWRlbnRMaWdodCBkaXJlY3RMaWdodCwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgY29uc3QgaW4gUGh5c2ljYWxNYXRlcmlhbCBtYXRlcmlhbCwgaW5vdXQgUmVmbGVjdGVkTGlnaHQgcmVmbGVjdGVkTGlnaHQgKSB7XG5cdGZsb2F0IGRvdE5MID0gc2F0dXJhdGUoIGRvdCggZ2VvbWV0cnkubm9ybWFsLCBkaXJlY3RMaWdodC5kaXJlY3Rpb24gKSApO1xuXHR2ZWMzIGlycmFkaWFuY2UgPSBkb3ROTCAqIGRpcmVjdExpZ2h0LmNvbG9yO1xuXHQjaWZuZGVmIFBIWVNJQ0FMTFlfQ09SUkVDVF9MSUdIVFNcblx0XHRpcnJhZGlhbmNlICo9IFBJO1xuXHQjZW5kaWZcblx0I2lmZGVmIENMRUFSQ09BVFxuXHRcdGZsb2F0IGNjRG90TkwgPSBzYXR1cmF0ZSggZG90KCBnZW9tZXRyeS5jbGVhcmNvYXROb3JtYWwsIGRpcmVjdExpZ2h0LmRpcmVjdGlvbiApICk7XG5cdFx0dmVjMyBjY0lycmFkaWFuY2UgPSBjY0RvdE5MICogZGlyZWN0TGlnaHQuY29sb3I7XG5cdFx0I2lmbmRlZiBQSFlTSUNBTExZX0NPUlJFQ1RfTElHSFRTXG5cdFx0XHRjY0lycmFkaWFuY2UgKj0gUEk7XG5cdFx0I2VuZGlmXG5cdFx0ZmxvYXQgY2xlYXJjb2F0REhSID0gbWF0ZXJpYWwuY2xlYXJjb2F0ICogY2xlYXJjb2F0REhSQXBwcm94KCBtYXRlcmlhbC5jbGVhcmNvYXRSb3VnaG5lc3MsIGNjRG90TkwgKTtcblx0XHRyZWZsZWN0ZWRMaWdodC5kaXJlY3RTcGVjdWxhciArPSBjY0lycmFkaWFuY2UgKiBtYXRlcmlhbC5jbGVhcmNvYXQgKiBCUkRGX1NwZWN1bGFyX0dHWCggZGlyZWN0TGlnaHQsIGdlb21ldHJ5LnZpZXdEaXIsIGdlb21ldHJ5LmNsZWFyY29hdE5vcm1hbCwgdmVjMyggREVGQVVMVF9TUEVDVUxBUl9DT0VGRklDSUVOVCApLCB2ZWMzKCAxLjAgKSwgbWF0ZXJpYWwuY2xlYXJjb2F0Um91Z2huZXNzICk7XG5cdCNlbHNlXG5cdFx0ZmxvYXQgY2xlYXJjb2F0REhSID0gMC4wO1xuXHQjZW5kaWZcblx0I2lmZGVmIFVTRV9TSEVFTlxuXHRcdHJlZmxlY3RlZExpZ2h0LmRpcmVjdFNwZWN1bGFyICs9ICggMS4wIC0gY2xlYXJjb2F0REhSICkgKiBpcnJhZGlhbmNlICogQlJERl9TcGVjdWxhcl9TaGVlbihcblx0XHRcdG1hdGVyaWFsLnNwZWN1bGFyUm91Z2huZXNzLFxuXHRcdFx0ZGlyZWN0TGlnaHQuZGlyZWN0aW9uLFxuXHRcdFx0Z2VvbWV0cnksXG5cdFx0XHRtYXRlcmlhbC5zaGVlbkNvbG9yXG5cdFx0KTtcblx0I2Vsc2Vcblx0XHRyZWZsZWN0ZWRMaWdodC5kaXJlY3RTcGVjdWxhciArPSAoIDEuMCAtIGNsZWFyY29hdERIUiApICogaXJyYWRpYW5jZSAqIEJSREZfU3BlY3VsYXJfR0dYKCBkaXJlY3RMaWdodCwgZ2VvbWV0cnkudmlld0RpciwgZ2VvbWV0cnkubm9ybWFsLCBtYXRlcmlhbC5zcGVjdWxhckNvbG9yLCBtYXRlcmlhbC5zcGVjdWxhckNvbG9yRjkwLCBtYXRlcmlhbC5zcGVjdWxhclJvdWdobmVzcyk7XG5cdCNlbmRpZlxuXHRyZWZsZWN0ZWRMaWdodC5kaXJlY3REaWZmdXNlICs9ICggMS4wIC0gY2xlYXJjb2F0REhSICkgKiBpcnJhZGlhbmNlICogQlJERl9EaWZmdXNlX0xhbWJlcnQoIG1hdGVyaWFsLmRpZmZ1c2VDb2xvciApO1xufVxudm9pZCBSRV9JbmRpcmVjdERpZmZ1c2VfUGh5c2ljYWwoIGNvbnN0IGluIHZlYzMgaXJyYWRpYW5jZSwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgY29uc3QgaW4gUGh5c2ljYWxNYXRlcmlhbCBtYXRlcmlhbCwgaW5vdXQgUmVmbGVjdGVkTGlnaHQgcmVmbGVjdGVkTGlnaHQgKSB7XG5cdHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZSArPSBpcnJhZGlhbmNlICogQlJERl9EaWZmdXNlX0xhbWJlcnQoIG1hdGVyaWFsLmRpZmZ1c2VDb2xvciApO1xufVxudm9pZCBSRV9JbmRpcmVjdFNwZWN1bGFyX1BoeXNpY2FsKCBjb25zdCBpbiB2ZWMzIHJhZGlhbmNlLCBjb25zdCBpbiB2ZWMzIGlycmFkaWFuY2UsIGNvbnN0IGluIHZlYzMgY2xlYXJjb2F0UmFkaWFuY2UsIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnksIGNvbnN0IGluIFBoeXNpY2FsTWF0ZXJpYWwgbWF0ZXJpYWwsIGlub3V0IFJlZmxlY3RlZExpZ2h0IHJlZmxlY3RlZExpZ2h0KSB7XG5cdCNpZmRlZiBDTEVBUkNPQVRcblx0XHRmbG9hdCBjY0RvdE5WID0gc2F0dXJhdGUoIGRvdCggZ2VvbWV0cnkuY2xlYXJjb2F0Tm9ybWFsLCBnZW9tZXRyeS52aWV3RGlyICkgKTtcblx0XHRyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdFNwZWN1bGFyICs9IGNsZWFyY29hdFJhZGlhbmNlICogbWF0ZXJpYWwuY2xlYXJjb2F0ICogQlJERl9TcGVjdWxhcl9HR1hfRW52aXJvbm1lbnQoIGdlb21ldHJ5LnZpZXdEaXIsIGdlb21ldHJ5LmNsZWFyY29hdE5vcm1hbCwgdmVjMyggREVGQVVMVF9TUEVDVUxBUl9DT0VGRklDSUVOVCApLCBtYXRlcmlhbC5jbGVhcmNvYXRSb3VnaG5lc3MgKTtcblx0XHRmbG9hdCBjY0RvdE5MID0gY2NEb3ROVjtcblx0XHRmbG9hdCBjbGVhcmNvYXRESFIgPSBtYXRlcmlhbC5jbGVhcmNvYXQgKiBjbGVhcmNvYXRESFJBcHByb3goIG1hdGVyaWFsLmNsZWFyY29hdFJvdWdobmVzcywgY2NEb3ROTCApO1xuXHQjZWxzZVxuXHRcdGZsb2F0IGNsZWFyY29hdERIUiA9IDAuMDtcblx0I2VuZGlmXG5cdGZsb2F0IGNsZWFyY29hdEludiA9IDEuMCAtIGNsZWFyY29hdERIUjtcblx0dmVjMyBzaW5nbGVTY2F0dGVyaW5nID0gdmVjMyggMC4wICk7XG5cdHZlYzMgbXVsdGlTY2F0dGVyaW5nID0gdmVjMyggMC4wICk7XG5cdHZlYzMgY29zaW5lV2VpZ2h0ZWRJcnJhZGlhbmNlID0gaXJyYWRpYW5jZSAqIFJFQ0lQUk9DQUxfUEk7XG5cdEJSREZfU3BlY3VsYXJfTXVsdGlzY2F0dGVyaW5nX0Vudmlyb25tZW50KCBnZW9tZXRyeSwgbWF0ZXJpYWwuc3BlY3VsYXJDb2xvciwgbWF0ZXJpYWwuc3BlY3VsYXJSb3VnaG5lc3MsIHNpbmdsZVNjYXR0ZXJpbmcsIG11bHRpU2NhdHRlcmluZyApO1xuXHR2ZWMzIGRpZmZ1c2UgPSBtYXRlcmlhbC5kaWZmdXNlQ29sb3IgKiAoIDEuMCAtICggc2luZ2xlU2NhdHRlcmluZyArIG11bHRpU2NhdHRlcmluZyApICk7XG5cdHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0U3BlY3VsYXIgKz0gY2xlYXJjb2F0SW52ICogcmFkaWFuY2UgKiBzaW5nbGVTY2F0dGVyaW5nO1xuXHRyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdFNwZWN1bGFyICs9IG11bHRpU2NhdHRlcmluZyAqIGNvc2luZVdlaWdodGVkSXJyYWRpYW5jZTtcblx0cmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICs9IGRpZmZ1c2UgKiBjb3NpbmVXZWlnaHRlZElycmFkaWFuY2U7XG59XG4jZGVmaW5lIFJFX0RpcmVjdFx0XHRcdFx0UkVfRGlyZWN0X1BoeXNpY2FsXG4jZGVmaW5lIFJFX0RpcmVjdF9SZWN0QXJlYVx0XHRSRV9EaXJlY3RfUmVjdEFyZWFfUGh5c2ljYWxcbiNkZWZpbmUgUkVfSW5kaXJlY3REaWZmdXNlXHRcdFJFX0luZGlyZWN0RGlmZnVzZV9QaHlzaWNhbFxuI2RlZmluZSBSRV9JbmRpcmVjdFNwZWN1bGFyXHRcdFJFX0luZGlyZWN0U3BlY3VsYXJfUGh5c2ljYWxcbmZsb2F0IGNvbXB1dGVTcGVjdWxhck9jY2x1c2lvbiggY29uc3QgaW4gZmxvYXQgZG90TlYsIGNvbnN0IGluIGZsb2F0IGFtYmllbnRPY2NsdXNpb24sIGNvbnN0IGluIGZsb2F0IHJvdWdobmVzcyApIHtcblx0cmV0dXJuIHNhdHVyYXRlKCBwb3coIGRvdE5WICsgYW1iaWVudE9jY2x1c2lvbiwgZXhwMiggLSAxNi4wICogcm91Z2huZXNzIC0gMS4wICkgKSAtIDEuMCArIGFtYmllbnRPY2NsdXNpb24gKTtcbn0iLGxpZ2h0c19mcmFnbWVudF9iZWdpbjoiXG5HZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5O1xuZ2VvbWV0cnkucG9zaXRpb24gPSAtIHZWaWV3UG9zaXRpb247XG5nZW9tZXRyeS5ub3JtYWwgPSBub3JtYWw7XG5nZW9tZXRyeS52aWV3RGlyID0gKCBpc09ydGhvZ3JhcGhpYyApID8gdmVjMyggMCwgMCwgMSApIDogbm9ybWFsaXplKCB2Vmlld1Bvc2l0aW9uICk7XG4jaWZkZWYgQ0xFQVJDT0FUXG5cdGdlb21ldHJ5LmNsZWFyY29hdE5vcm1hbCA9IGNsZWFyY29hdE5vcm1hbDtcbiNlbmRpZlxuSW5jaWRlbnRMaWdodCBkaXJlY3RMaWdodDtcbiNpZiAoIE5VTV9QT0lOVF9MSUdIVFMgPiAwICkgJiYgZGVmaW5lZCggUkVfRGlyZWN0IClcblx0UG9pbnRMaWdodCBwb2ludExpZ2h0O1xuXHQjaWYgZGVmaW5lZCggVVNFX1NIQURPV01BUCApICYmIE5VTV9QT0lOVF9MSUdIVF9TSEFET1dTID4gMFxuXHRQb2ludExpZ2h0U2hhZG93IHBvaW50TGlnaHRTaGFkb3c7XG5cdCNlbmRpZlxuXHQjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0XG5cdGZvciAoIGludCBpID0gMDsgaSA8IE5VTV9QT0lOVF9MSUdIVFM7IGkgKysgKSB7XG5cdFx0cG9pbnRMaWdodCA9IHBvaW50TGlnaHRzWyBpIF07XG5cdFx0Z2V0UG9pbnREaXJlY3RMaWdodElycmFkaWFuY2UoIHBvaW50TGlnaHQsIGdlb21ldHJ5LCBkaXJlY3RMaWdodCApO1xuXHRcdCNpZiBkZWZpbmVkKCBVU0VfU0hBRE9XTUFQICkgJiYgKCBVTlJPTExFRF9MT09QX0lOREVYIDwgTlVNX1BPSU5UX0xJR0hUX1NIQURPV1MgKVxuXHRcdHBvaW50TGlnaHRTaGFkb3cgPSBwb2ludExpZ2h0U2hhZG93c1sgaSBdO1xuXHRcdGRpcmVjdExpZ2h0LmNvbG9yICo9IGFsbCggYnZlYzIoIGRpcmVjdExpZ2h0LnZpc2libGUsIHJlY2VpdmVTaGFkb3cgKSApID8gZ2V0UG9pbnRTaGFkb3coIHBvaW50U2hhZG93TWFwWyBpIF0sIHBvaW50TGlnaHRTaGFkb3cuc2hhZG93TWFwU2l6ZSwgcG9pbnRMaWdodFNoYWRvdy5zaGFkb3dCaWFzLCBwb2ludExpZ2h0U2hhZG93LnNoYWRvd1JhZGl1cywgdlBvaW50U2hhZG93Q29vcmRbIGkgXSwgcG9pbnRMaWdodFNoYWRvdy5zaGFkb3dDYW1lcmFOZWFyLCBwb2ludExpZ2h0U2hhZG93LnNoYWRvd0NhbWVyYUZhciApIDogMS4wO1xuXHRcdCNlbmRpZlxuXHRcdFJFX0RpcmVjdCggZGlyZWN0TGlnaHQsIGdlb21ldHJ5LCBtYXRlcmlhbCwgcmVmbGVjdGVkTGlnaHQgKTtcblx0fVxuXHQjcHJhZ21hIHVucm9sbF9sb29wX2VuZFxuI2VuZGlmXG4jaWYgKCBOVU1fU1BPVF9MSUdIVFMgPiAwICkgJiYgZGVmaW5lZCggUkVfRGlyZWN0IClcblx0U3BvdExpZ2h0IHNwb3RMaWdodDtcblx0I2lmIGRlZmluZWQoIFVTRV9TSEFET1dNQVAgKSAmJiBOVU1fU1BPVF9MSUdIVF9TSEFET1dTID4gMFxuXHRTcG90TGlnaHRTaGFkb3cgc3BvdExpZ2h0U2hhZG93O1xuXHQjZW5kaWZcblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydFxuXHRmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fU1BPVF9MSUdIVFM7IGkgKysgKSB7XG5cdFx0c3BvdExpZ2h0ID0gc3BvdExpZ2h0c1sgaSBdO1xuXHRcdGdldFNwb3REaXJlY3RMaWdodElycmFkaWFuY2UoIHNwb3RMaWdodCwgZ2VvbWV0cnksIGRpcmVjdExpZ2h0ICk7XG5cdFx0I2lmIGRlZmluZWQoIFVTRV9TSEFET1dNQVAgKSAmJiAoIFVOUk9MTEVEX0xPT1BfSU5ERVggPCBOVU1fU1BPVF9MSUdIVF9TSEFET1dTIClcblx0XHRzcG90TGlnaHRTaGFkb3cgPSBzcG90TGlnaHRTaGFkb3dzWyBpIF07XG5cdFx0ZGlyZWN0TGlnaHQuY29sb3IgKj0gYWxsKCBidmVjMiggZGlyZWN0TGlnaHQudmlzaWJsZSwgcmVjZWl2ZVNoYWRvdyApICkgPyBnZXRTaGFkb3coIHNwb3RTaGFkb3dNYXBbIGkgXSwgc3BvdExpZ2h0U2hhZG93LnNoYWRvd01hcFNpemUsIHNwb3RMaWdodFNoYWRvdy5zaGFkb3dCaWFzLCBzcG90TGlnaHRTaGFkb3cuc2hhZG93UmFkaXVzLCB2U3BvdFNoYWRvd0Nvb3JkWyBpIF0gKSA6IDEuMDtcblx0XHQjZW5kaWZcblx0XHRSRV9EaXJlY3QoIGRpcmVjdExpZ2h0LCBnZW9tZXRyeSwgbWF0ZXJpYWwsIHJlZmxlY3RlZExpZ2h0ICk7XG5cdH1cblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9lbmRcbiNlbmRpZlxuI2lmICggTlVNX0RJUl9MSUdIVFMgPiAwICkgJiYgZGVmaW5lZCggUkVfRGlyZWN0IClcblx0RGlyZWN0aW9uYWxMaWdodCBkaXJlY3Rpb25hbExpZ2h0O1xuXHQjaWYgZGVmaW5lZCggVVNFX1NIQURPV01BUCApICYmIE5VTV9ESVJfTElHSFRfU0hBRE9XUyA+IDBcblx0RGlyZWN0aW9uYWxMaWdodFNoYWRvdyBkaXJlY3Rpb25hbExpZ2h0U2hhZG93O1xuXHQjZW5kaWZcblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydFxuXHRmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fRElSX0xJR0hUUzsgaSArKyApIHtcblx0XHRkaXJlY3Rpb25hbExpZ2h0ID0gZGlyZWN0aW9uYWxMaWdodHNbIGkgXTtcblx0XHRnZXREaXJlY3Rpb25hbERpcmVjdExpZ2h0SXJyYWRpYW5jZSggZGlyZWN0aW9uYWxMaWdodCwgZ2VvbWV0cnksIGRpcmVjdExpZ2h0ICk7XG5cdFx0I2lmIGRlZmluZWQoIFVTRV9TSEFET1dNQVAgKSAmJiAoIFVOUk9MTEVEX0xPT1BfSU5ERVggPCBOVU1fRElSX0xJR0hUX1NIQURPV1MgKVxuXHRcdGRpcmVjdGlvbmFsTGlnaHRTaGFkb3cgPSBkaXJlY3Rpb25hbExpZ2h0U2hhZG93c1sgaSBdO1xuXHRcdGRpcmVjdExpZ2h0LmNvbG9yICo9IGFsbCggYnZlYzIoIGRpcmVjdExpZ2h0LnZpc2libGUsIHJlY2VpdmVTaGFkb3cgKSApID8gZ2V0U2hhZG93KCBkaXJlY3Rpb25hbFNoYWRvd01hcFsgaSBdLCBkaXJlY3Rpb25hbExpZ2h0U2hhZG93LnNoYWRvd01hcFNpemUsIGRpcmVjdGlvbmFsTGlnaHRTaGFkb3cuc2hhZG93QmlhcywgZGlyZWN0aW9uYWxMaWdodFNoYWRvdy5zaGFkb3dSYWRpdXMsIHZEaXJlY3Rpb25hbFNoYWRvd0Nvb3JkWyBpIF0gKSA6IDEuMDtcblx0XHQjZW5kaWZcblx0XHRSRV9EaXJlY3QoIGRpcmVjdExpZ2h0LCBnZW9tZXRyeSwgbWF0ZXJpYWwsIHJlZmxlY3RlZExpZ2h0ICk7XG5cdH1cblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9lbmRcbiNlbmRpZlxuI2lmICggTlVNX1JFQ1RfQVJFQV9MSUdIVFMgPiAwICkgJiYgZGVmaW5lZCggUkVfRGlyZWN0X1JlY3RBcmVhIClcblx0UmVjdEFyZWFMaWdodCByZWN0QXJlYUxpZ2h0O1xuXHQjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0XG5cdGZvciAoIGludCBpID0gMDsgaSA8IE5VTV9SRUNUX0FSRUFfTElHSFRTOyBpICsrICkge1xuXHRcdHJlY3RBcmVhTGlnaHQgPSByZWN0QXJlYUxpZ2h0c1sgaSBdO1xuXHRcdFJFX0RpcmVjdF9SZWN0QXJlYSggcmVjdEFyZWFMaWdodCwgZ2VvbWV0cnksIG1hdGVyaWFsLCByZWZsZWN0ZWRMaWdodCApO1xuXHR9XG5cdCNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kXG4jZW5kaWZcbiNpZiBkZWZpbmVkKCBSRV9JbmRpcmVjdERpZmZ1c2UgKVxuXHR2ZWMzIGlibElycmFkaWFuY2UgPSB2ZWMzKCAwLjAgKTtcblx0dmVjMyBpcnJhZGlhbmNlID0gZ2V0QW1iaWVudExpZ2h0SXJyYWRpYW5jZSggYW1iaWVudExpZ2h0Q29sb3IgKTtcblx0aXJyYWRpYW5jZSArPSBnZXRMaWdodFByb2JlSXJyYWRpYW5jZSggbGlnaHRQcm9iZSwgZ2VvbWV0cnkgKTtcblx0I2lmICggTlVNX0hFTUlfTElHSFRTID4gMCApXG5cdFx0I3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydFxuXHRcdGZvciAoIGludCBpID0gMDsgaSA8IE5VTV9IRU1JX0xJR0hUUzsgaSArKyApIHtcblx0XHRcdGlycmFkaWFuY2UgKz0gZ2V0SGVtaXNwaGVyZUxpZ2h0SXJyYWRpYW5jZSggaGVtaXNwaGVyZUxpZ2h0c1sgaSBdLCBnZW9tZXRyeSApO1xuXHRcdH1cblx0XHQjcHJhZ21hIHVucm9sbF9sb29wX2VuZFxuXHQjZW5kaWZcbiNlbmRpZlxuI2lmIGRlZmluZWQoIFJFX0luZGlyZWN0U3BlY3VsYXIgKVxuXHR2ZWMzIHJhZGlhbmNlID0gdmVjMyggMC4wICk7XG5cdHZlYzMgY2xlYXJjb2F0UmFkaWFuY2UgPSB2ZWMzKCAwLjAgKTtcbiNlbmRpZiIsbGlnaHRzX2ZyYWdtZW50X21hcHM6IiNpZiBkZWZpbmVkKCBSRV9JbmRpcmVjdERpZmZ1c2UgKVxuXHQjaWZkZWYgVVNFX0xJR0hUTUFQXG5cdFx0dmVjNCBsaWdodE1hcFRleGVsPSB0ZXh0dXJlMkQoIGxpZ2h0TWFwLCB2VXYyICk7XG5cdFx0dmVjMyBsaWdodE1hcElycmFkaWFuY2UgPSBsaWdodE1hcFRleGVsVG9MaW5lYXIoIGxpZ2h0TWFwVGV4ZWwgKS5yZ2IgKiBsaWdodE1hcEludGVuc2l0eTtcblx0XHQjaWZuZGVmIFBIWVNJQ0FMTFlfQ09SUkVDVF9MSUdIVFNcblx0XHRcdGxpZ2h0TWFwSXJyYWRpYW5jZSAqPSBQSTtcblx0XHQjZW5kaWZcblx0XHRpcnJhZGlhbmNlICs9IGxpZ2h0TWFwSXJyYWRpYW5jZTtcblx0I2VuZGlmXG5cdCNpZiBkZWZpbmVkKCBVU0VfRU5WTUFQICkgJiYgZGVmaW5lZCggU1RBTkRBUkQgKSAmJiBkZWZpbmVkKCBFTlZNQVBfVFlQRV9DVUJFX1VWIClcblx0XHRpYmxJcnJhZGlhbmNlICs9IGdldExpZ2h0UHJvYmVJbmRpcmVjdElycmFkaWFuY2UoIGdlb21ldHJ5LCBtYXhNaXBMZXZlbCApO1xuXHQjZW5kaWZcbiNlbmRpZlxuI2lmIGRlZmluZWQoIFVTRV9FTlZNQVAgKSAmJiBkZWZpbmVkKCBSRV9JbmRpcmVjdFNwZWN1bGFyIClcblx0cmFkaWFuY2UgKz0gZ2V0TGlnaHRQcm9iZUluZGlyZWN0UmFkaWFuY2UoIGdlb21ldHJ5LnZpZXdEaXIsIGdlb21ldHJ5Lm5vcm1hbCwgbWF0ZXJpYWwuc3BlY3VsYXJSb3VnaG5lc3MsIG1heE1pcExldmVsICk7XG5cdCNpZmRlZiBDTEVBUkNPQVRcblx0XHRjbGVhcmNvYXRSYWRpYW5jZSArPSBnZXRMaWdodFByb2JlSW5kaXJlY3RSYWRpYW5jZSggZ2VvbWV0cnkudmlld0RpciwgZ2VvbWV0cnkuY2xlYXJjb2F0Tm9ybWFsLCBtYXRlcmlhbC5jbGVhcmNvYXRSb3VnaG5lc3MsIG1heE1pcExldmVsICk7XG5cdCNlbmRpZlxuI2VuZGlmIixsaWdodHNfZnJhZ21lbnRfZW5kOiIjaWYgZGVmaW5lZCggUkVfSW5kaXJlY3REaWZmdXNlIClcblx0UkVfSW5kaXJlY3REaWZmdXNlKCBpcnJhZGlhbmNlLCBnZW9tZXRyeSwgbWF0ZXJpYWwsIHJlZmxlY3RlZExpZ2h0ICk7XG4jZW5kaWZcbiNpZiBkZWZpbmVkKCBSRV9JbmRpcmVjdFNwZWN1bGFyIClcblx0UkVfSW5kaXJlY3RTcGVjdWxhciggcmFkaWFuY2UsIGlibElycmFkaWFuY2UsIGNsZWFyY29hdFJhZGlhbmNlLCBnZW9tZXRyeSwgbWF0ZXJpYWwsIHJlZmxlY3RlZExpZ2h0ICk7XG4jZW5kaWYiLGxvZ2RlcHRoYnVmX2ZyYWdtZW50OiIjaWYgZGVmaW5lZCggVVNFX0xPR0RFUFRIQlVGICkgJiYgZGVmaW5lZCggVVNFX0xPR0RFUFRIQlVGX0VYVCApXG5cdGdsX0ZyYWdEZXB0aEVYVCA9IHZJc1BlcnNwZWN0aXZlID09IDAuMCA/IGdsX0ZyYWdDb29yZC56IDogbG9nMiggdkZyYWdEZXB0aCApICogbG9nRGVwdGhCdWZGQyAqIDAuNTtcbiNlbmRpZiIsbG9nZGVwdGhidWZfcGFyc19mcmFnbWVudDoiI2lmIGRlZmluZWQoIFVTRV9MT0dERVBUSEJVRiApICYmIGRlZmluZWQoIFVTRV9MT0dERVBUSEJVRl9FWFQgKVxuXHR1bmlmb3JtIGZsb2F0IGxvZ0RlcHRoQnVmRkM7XG5cdHZhcnlpbmcgZmxvYXQgdkZyYWdEZXB0aDtcblx0dmFyeWluZyBmbG9hdCB2SXNQZXJzcGVjdGl2ZTtcbiNlbmRpZiIsbG9nZGVwdGhidWZfcGFyc192ZXJ0ZXg6IiNpZmRlZiBVU0VfTE9HREVQVEhCVUZcblx0I2lmZGVmIFVTRV9MT0dERVBUSEJVRl9FWFRcblx0XHR2YXJ5aW5nIGZsb2F0IHZGcmFnRGVwdGg7XG5cdFx0dmFyeWluZyBmbG9hdCB2SXNQZXJzcGVjdGl2ZTtcblx0I2Vsc2Vcblx0XHR1bmlmb3JtIGZsb2F0IGxvZ0RlcHRoQnVmRkM7XG5cdCNlbmRpZlxuI2VuZGlmIixsb2dkZXB0aGJ1Zl92ZXJ0ZXg6IiNpZmRlZiBVU0VfTE9HREVQVEhCVUZcblx0I2lmZGVmIFVTRV9MT0dERVBUSEJVRl9FWFRcblx0XHR2RnJhZ0RlcHRoID0gMS4wICsgZ2xfUG9zaXRpb24udztcblx0XHR2SXNQZXJzcGVjdGl2ZSA9IGZsb2F0KCBpc1BlcnNwZWN0aXZlTWF0cml4KCBwcm9qZWN0aW9uTWF0cml4ICkgKTtcblx0I2Vsc2Vcblx0XHRpZiAoIGlzUGVyc3BlY3RpdmVNYXRyaXgoIHByb2plY3Rpb25NYXRyaXggKSApIHtcblx0XHRcdGdsX1Bvc2l0aW9uLnogPSBsb2cyKCBtYXgoIEVQU0lMT04sIGdsX1Bvc2l0aW9uLncgKyAxLjAgKSApICogbG9nRGVwdGhCdWZGQyAtIDEuMDtcblx0XHRcdGdsX1Bvc2l0aW9uLnogKj0gZ2xfUG9zaXRpb24udztcblx0XHR9XG5cdCNlbmRpZlxuI2VuZGlmIixtYXBfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfTUFQXG5cdHZlYzQgdGV4ZWxDb2xvciA9IHRleHR1cmUyRCggbWFwLCB2VXYgKTtcblx0dGV4ZWxDb2xvciA9IG1hcFRleGVsVG9MaW5lYXIoIHRleGVsQ29sb3IgKTtcblx0ZGlmZnVzZUNvbG9yICo9IHRleGVsQ29sb3I7XG4jZW5kaWYiLG1hcF9wYXJzX2ZyYWdtZW50OiIjaWZkZWYgVVNFX01BUFxuXHR1bmlmb3JtIHNhbXBsZXIyRCBtYXA7XG4jZW5kaWYiLG1hcF9wYXJ0aWNsZV9mcmFnbWVudDoiI2lmIGRlZmluZWQoIFVTRV9NQVAgKSB8fCBkZWZpbmVkKCBVU0VfQUxQSEFNQVAgKVxuXHR2ZWMyIHV2ID0gKCB1dlRyYW5zZm9ybSAqIHZlYzMoIGdsX1BvaW50Q29vcmQueCwgMS4wIC0gZ2xfUG9pbnRDb29yZC55LCAxICkgKS54eTtcbiNlbmRpZlxuI2lmZGVmIFVTRV9NQVBcblx0dmVjNCBtYXBUZXhlbCA9IHRleHR1cmUyRCggbWFwLCB1diApO1xuXHRkaWZmdXNlQ29sb3IgKj0gbWFwVGV4ZWxUb0xpbmVhciggbWFwVGV4ZWwgKTtcbiNlbmRpZlxuI2lmZGVmIFVTRV9BTFBIQU1BUFxuXHRkaWZmdXNlQ29sb3IuYSAqPSB0ZXh0dXJlMkQoIGFscGhhTWFwLCB1diApLmc7XG4jZW5kaWYiLG1hcF9wYXJ0aWNsZV9wYXJzX2ZyYWdtZW50OiIjaWYgZGVmaW5lZCggVVNFX01BUCApIHx8IGRlZmluZWQoIFVTRV9BTFBIQU1BUCApXG5cdHVuaWZvcm0gbWF0MyB1dlRyYW5zZm9ybTtcbiNlbmRpZlxuI2lmZGVmIFVTRV9NQVBcblx0dW5pZm9ybSBzYW1wbGVyMkQgbWFwO1xuI2VuZGlmXG4jaWZkZWYgVVNFX0FMUEhBTUFQXG5cdHVuaWZvcm0gc2FtcGxlcjJEIGFscGhhTWFwO1xuI2VuZGlmIixtZXRhbG5lc3NtYXBfZnJhZ21lbnQ6ImZsb2F0IG1ldGFsbmVzc0ZhY3RvciA9IG1ldGFsbmVzcztcbiNpZmRlZiBVU0VfTUVUQUxORVNTTUFQXG5cdHZlYzQgdGV4ZWxNZXRhbG5lc3MgPSB0ZXh0dXJlMkQoIG1ldGFsbmVzc01hcCwgdlV2ICk7XG5cdG1ldGFsbmVzc0ZhY3RvciAqPSB0ZXhlbE1ldGFsbmVzcy5iO1xuI2VuZGlmIixtZXRhbG5lc3NtYXBfcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9NRVRBTE5FU1NNQVBcblx0dW5pZm9ybSBzYW1wbGVyMkQgbWV0YWxuZXNzTWFwO1xuI2VuZGlmIixtb3JwaG5vcm1hbF92ZXJ0ZXg6IiNpZmRlZiBVU0VfTU9SUEhOT1JNQUxTXG5cdG9iamVjdE5vcm1hbCAqPSBtb3JwaFRhcmdldEJhc2VJbmZsdWVuY2U7XG5cdG9iamVjdE5vcm1hbCArPSBtb3JwaE5vcm1hbDAgKiBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDAgXTtcblx0b2JqZWN0Tm9ybWFsICs9IG1vcnBoTm9ybWFsMSAqIG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgMSBdO1xuXHRvYmplY3ROb3JtYWwgKz0gbW9ycGhOb3JtYWwyICogbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyAyIF07XG5cdG9iamVjdE5vcm1hbCArPSBtb3JwaE5vcm1hbDMgKiBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDMgXTtcbiNlbmRpZiIsbW9ycGh0YXJnZXRfcGFyc192ZXJ0ZXg6IiNpZmRlZiBVU0VfTU9SUEhUQVJHRVRTXG5cdHVuaWZvcm0gZmxvYXQgbW9ycGhUYXJnZXRCYXNlSW5mbHVlbmNlO1xuXHQjaWZuZGVmIFVTRV9NT1JQSE5PUk1BTFNcblx0XHR1bmlmb3JtIGZsb2F0IG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgOCBdO1xuXHQjZWxzZVxuXHRcdHVuaWZvcm0gZmxvYXQgbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyA0IF07XG5cdCNlbmRpZlxuI2VuZGlmIixtb3JwaHRhcmdldF92ZXJ0ZXg6IiNpZmRlZiBVU0VfTU9SUEhUQVJHRVRTXG5cdHRyYW5zZm9ybWVkICo9IG1vcnBoVGFyZ2V0QmFzZUluZmx1ZW5jZTtcblx0dHJhbnNmb3JtZWQgKz0gbW9ycGhUYXJnZXQwICogbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyAwIF07XG5cdHRyYW5zZm9ybWVkICs9IG1vcnBoVGFyZ2V0MSAqIG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgMSBdO1xuXHR0cmFuc2Zvcm1lZCArPSBtb3JwaFRhcmdldDIgKiBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDIgXTtcblx0dHJhbnNmb3JtZWQgKz0gbW9ycGhUYXJnZXQzICogbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyAzIF07XG5cdCNpZm5kZWYgVVNFX01PUlBITk9STUFMU1xuXHRcdHRyYW5zZm9ybWVkICs9IG1vcnBoVGFyZ2V0NCAqIG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgNCBdO1xuXHRcdHRyYW5zZm9ybWVkICs9IG1vcnBoVGFyZ2V0NSAqIG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgNSBdO1xuXHRcdHRyYW5zZm9ybWVkICs9IG1vcnBoVGFyZ2V0NiAqIG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgNiBdO1xuXHRcdHRyYW5zZm9ybWVkICs9IG1vcnBoVGFyZ2V0NyAqIG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgNyBdO1xuXHQjZW5kaWZcbiNlbmRpZiIsbm9ybWFsX2ZyYWdtZW50X2JlZ2luOiJmbG9hdCBmYWNlRGlyZWN0aW9uID0gZ2xfRnJvbnRGYWNpbmcgPyAxLjAgOiAtIDEuMDtcbiNpZmRlZiBGTEFUX1NIQURFRFxuXHR2ZWMzIGZkeCA9IHZlYzMoIGRGZHgoIHZWaWV3UG9zaXRpb24ueCApLCBkRmR4KCB2Vmlld1Bvc2l0aW9uLnkgKSwgZEZkeCggdlZpZXdQb3NpdGlvbi56ICkgKTtcblx0dmVjMyBmZHkgPSB2ZWMzKCBkRmR5KCB2Vmlld1Bvc2l0aW9uLnggKSwgZEZkeSggdlZpZXdQb3NpdGlvbi55ICksIGRGZHkoIHZWaWV3UG9zaXRpb24ueiApICk7XG5cdHZlYzMgbm9ybWFsID0gbm9ybWFsaXplKCBjcm9zcyggZmR4LCBmZHkgKSApO1xuI2Vsc2Vcblx0dmVjMyBub3JtYWwgPSBub3JtYWxpemUoIHZOb3JtYWwgKTtcblx0I2lmZGVmIERPVUJMRV9TSURFRFxuXHRcdG5vcm1hbCA9IG5vcm1hbCAqIGZhY2VEaXJlY3Rpb247XG5cdCNlbmRpZlxuXHQjaWZkZWYgVVNFX1RBTkdFTlRcblx0XHR2ZWMzIHRhbmdlbnQgPSBub3JtYWxpemUoIHZUYW5nZW50ICk7XG5cdFx0dmVjMyBiaXRhbmdlbnQgPSBub3JtYWxpemUoIHZCaXRhbmdlbnQgKTtcblx0XHQjaWZkZWYgRE9VQkxFX1NJREVEXG5cdFx0XHR0YW5nZW50ID0gdGFuZ2VudCAqIGZhY2VEaXJlY3Rpb247XG5cdFx0XHRiaXRhbmdlbnQgPSBiaXRhbmdlbnQgKiBmYWNlRGlyZWN0aW9uO1xuXHRcdCNlbmRpZlxuXHRcdCNpZiBkZWZpbmVkKCBUQU5HRU5UU1BBQ0VfTk9STUFMTUFQICkgfHwgZGVmaW5lZCggVVNFX0NMRUFSQ09BVF9OT1JNQUxNQVAgKVxuXHRcdFx0bWF0MyB2VEJOID0gbWF0MyggdGFuZ2VudCwgYml0YW5nZW50LCBub3JtYWwgKTtcblx0XHQjZW5kaWZcblx0I2VuZGlmXG4jZW5kaWZcbnZlYzMgZ2VvbWV0cnlOb3JtYWwgPSBub3JtYWw7Iixub3JtYWxfZnJhZ21lbnRfbWFwczoiI2lmZGVmIE9CSkVDVFNQQUNFX05PUk1BTE1BUFxuXHRub3JtYWwgPSB0ZXh0dXJlMkQoIG5vcm1hbE1hcCwgdlV2ICkueHl6ICogMi4wIC0gMS4wO1xuXHQjaWZkZWYgRkxJUF9TSURFRFxuXHRcdG5vcm1hbCA9IC0gbm9ybWFsO1xuXHQjZW5kaWZcblx0I2lmZGVmIERPVUJMRV9TSURFRFxuXHRcdG5vcm1hbCA9IG5vcm1hbCAqIGZhY2VEaXJlY3Rpb247XG5cdCNlbmRpZlxuXHRub3JtYWwgPSBub3JtYWxpemUoIG5vcm1hbE1hdHJpeCAqIG5vcm1hbCApO1xuI2VsaWYgZGVmaW5lZCggVEFOR0VOVFNQQUNFX05PUk1BTE1BUCApXG5cdHZlYzMgbWFwTiA9IHRleHR1cmUyRCggbm9ybWFsTWFwLCB2VXYgKS54eXogKiAyLjAgLSAxLjA7XG5cdG1hcE4ueHkgKj0gbm9ybWFsU2NhbGU7XG5cdCNpZmRlZiBVU0VfVEFOR0VOVFxuXHRcdG5vcm1hbCA9IG5vcm1hbGl6ZSggdlRCTiAqIG1hcE4gKTtcblx0I2Vsc2Vcblx0XHRub3JtYWwgPSBwZXJ0dXJiTm9ybWFsMkFyYiggLXZWaWV3UG9zaXRpb24sIG5vcm1hbCwgbWFwTiwgZmFjZURpcmVjdGlvbiApO1xuXHQjZW5kaWZcbiNlbGlmIGRlZmluZWQoIFVTRV9CVU1QTUFQIClcblx0bm9ybWFsID0gcGVydHVyYk5vcm1hbEFyYiggLXZWaWV3UG9zaXRpb24sIG5vcm1hbCwgZEhkeHlfZndkKCksIGZhY2VEaXJlY3Rpb24gKTtcbiNlbmRpZiIsbm9ybWFsbWFwX3BhcnNfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfTk9STUFMTUFQXG5cdHVuaWZvcm0gc2FtcGxlcjJEIG5vcm1hbE1hcDtcblx0dW5pZm9ybSB2ZWMyIG5vcm1hbFNjYWxlO1xuI2VuZGlmXG4jaWZkZWYgT0JKRUNUU1BBQ0VfTk9STUFMTUFQXG5cdHVuaWZvcm0gbWF0MyBub3JtYWxNYXRyaXg7XG4jZW5kaWZcbiNpZiAhIGRlZmluZWQgKCBVU0VfVEFOR0VOVCApICYmICggZGVmaW5lZCAoIFRBTkdFTlRTUEFDRV9OT1JNQUxNQVAgKSB8fCBkZWZpbmVkICggVVNFX0NMRUFSQ09BVF9OT1JNQUxNQVAgKSApXG5cdHZlYzMgcGVydHVyYk5vcm1hbDJBcmIoIHZlYzMgZXllX3BvcywgdmVjMyBzdXJmX25vcm0sIHZlYzMgbWFwTiwgZmxvYXQgZmFjZURpcmVjdGlvbiApIHtcblx0XHR2ZWMzIHEwID0gdmVjMyggZEZkeCggZXllX3Bvcy54ICksIGRGZHgoIGV5ZV9wb3MueSApLCBkRmR4KCBleWVfcG9zLnogKSApO1xuXHRcdHZlYzMgcTEgPSB2ZWMzKCBkRmR5KCBleWVfcG9zLnggKSwgZEZkeSggZXllX3Bvcy55ICksIGRGZHkoIGV5ZV9wb3MueiApICk7XG5cdFx0dmVjMiBzdDAgPSBkRmR4KCB2VXYuc3QgKTtcblx0XHR2ZWMyIHN0MSA9IGRGZHkoIHZVdi5zdCApO1xuXHRcdHZlYzMgTiA9IHN1cmZfbm9ybTtcblx0XHR2ZWMzIHExcGVycCA9IGNyb3NzKCBxMSwgTiApO1xuXHRcdHZlYzMgcTBwZXJwID0gY3Jvc3MoIE4sIHEwICk7XG5cdFx0dmVjMyBUID0gcTFwZXJwICogc3QwLnggKyBxMHBlcnAgKiBzdDEueDtcblx0XHR2ZWMzIEIgPSBxMXBlcnAgKiBzdDAueSArIHEwcGVycCAqIHN0MS55O1xuXHRcdGZsb2F0IGRldCA9IG1heCggZG90KCBULCBUICksIGRvdCggQiwgQiApICk7XG5cdFx0ZmxvYXQgc2NhbGUgPSAoIGRldCA9PSAwLjAgKSA/IDAuMCA6IGZhY2VEaXJlY3Rpb24gKiBpbnZlcnNlc3FydCggZGV0ICk7XG5cdFx0cmV0dXJuIG5vcm1hbGl6ZSggVCAqICggbWFwTi54ICogc2NhbGUgKSArIEIgKiAoIG1hcE4ueSAqIHNjYWxlICkgKyBOICogbWFwTi56ICk7XG5cdH1cbiNlbmRpZiIsY2xlYXJjb2F0X25vcm1hbF9mcmFnbWVudF9iZWdpbjoiI2lmZGVmIENMRUFSQ09BVFxuXHR2ZWMzIGNsZWFyY29hdE5vcm1hbCA9IGdlb21ldHJ5Tm9ybWFsO1xuI2VuZGlmIixjbGVhcmNvYXRfbm9ybWFsX2ZyYWdtZW50X21hcHM6IiNpZmRlZiBVU0VfQ0xFQVJDT0FUX05PUk1BTE1BUFxuXHR2ZWMzIGNsZWFyY29hdE1hcE4gPSB0ZXh0dXJlMkQoIGNsZWFyY29hdE5vcm1hbE1hcCwgdlV2ICkueHl6ICogMi4wIC0gMS4wO1xuXHRjbGVhcmNvYXRNYXBOLnh5ICo9IGNsZWFyY29hdE5vcm1hbFNjYWxlO1xuXHQjaWZkZWYgVVNFX1RBTkdFTlRcblx0XHRjbGVhcmNvYXROb3JtYWwgPSBub3JtYWxpemUoIHZUQk4gKiBjbGVhcmNvYXRNYXBOICk7XG5cdCNlbHNlXG5cdFx0Y2xlYXJjb2F0Tm9ybWFsID0gcGVydHVyYk5vcm1hbDJBcmIoIC0gdlZpZXdQb3NpdGlvbiwgY2xlYXJjb2F0Tm9ybWFsLCBjbGVhcmNvYXRNYXBOLCBmYWNlRGlyZWN0aW9uICk7XG5cdCNlbmRpZlxuI2VuZGlmIixjbGVhcmNvYXRfcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9DTEVBUkNPQVRNQVBcblx0dW5pZm9ybSBzYW1wbGVyMkQgY2xlYXJjb2F0TWFwO1xuI2VuZGlmXG4jaWZkZWYgVVNFX0NMRUFSQ09BVF9ST1VHSE5FU1NNQVBcblx0dW5pZm9ybSBzYW1wbGVyMkQgY2xlYXJjb2F0Um91Z2huZXNzTWFwO1xuI2VuZGlmXG4jaWZkZWYgVVNFX0NMRUFSQ09BVF9OT1JNQUxNQVBcblx0dW5pZm9ybSBzYW1wbGVyMkQgY2xlYXJjb2F0Tm9ybWFsTWFwO1xuXHR1bmlmb3JtIHZlYzIgY2xlYXJjb2F0Tm9ybWFsU2NhbGU7XG4jZW5kaWYiLHBhY2tpbmc6InZlYzMgcGFja05vcm1hbFRvUkdCKCBjb25zdCBpbiB2ZWMzIG5vcm1hbCApIHtcblx0cmV0dXJuIG5vcm1hbGl6ZSggbm9ybWFsICkgKiAwLjUgKyAwLjU7XG59XG52ZWMzIHVucGFja1JHQlRvTm9ybWFsKCBjb25zdCBpbiB2ZWMzIHJnYiApIHtcblx0cmV0dXJuIDIuMCAqIHJnYi54eXogLSAxLjA7XG59XG5jb25zdCBmbG9hdCBQYWNrVXBzY2FsZSA9IDI1Ni4gLyAyNTUuO2NvbnN0IGZsb2F0IFVucGFja0Rvd25zY2FsZSA9IDI1NS4gLyAyNTYuO1xuY29uc3QgdmVjMyBQYWNrRmFjdG9ycyA9IHZlYzMoIDI1Ni4gKiAyNTYuICogMjU2LiwgMjU2LiAqIDI1Ni4sIDI1Ni4gKTtcbmNvbnN0IHZlYzQgVW5wYWNrRmFjdG9ycyA9IFVucGFja0Rvd25zY2FsZSAvIHZlYzQoIFBhY2tGYWN0b3JzLCAxLiApO1xuY29uc3QgZmxvYXQgU2hpZnRSaWdodDggPSAxLiAvIDI1Ni47XG52ZWM0IHBhY2tEZXB0aFRvUkdCQSggY29uc3QgaW4gZmxvYXQgdiApIHtcblx0dmVjNCByID0gdmVjNCggZnJhY3QoIHYgKiBQYWNrRmFjdG9ycyApLCB2ICk7XG5cdHIueXp3IC09IHIueHl6ICogU2hpZnRSaWdodDg7XHRyZXR1cm4gciAqIFBhY2tVcHNjYWxlO1xufVxuZmxvYXQgdW5wYWNrUkdCQVRvRGVwdGgoIGNvbnN0IGluIHZlYzQgdiApIHtcblx0cmV0dXJuIGRvdCggdiwgVW5wYWNrRmFjdG9ycyApO1xufVxudmVjNCBwYWNrMkhhbGZUb1JHQkEoIHZlYzIgdiApIHtcblx0dmVjNCByID0gdmVjNCggdi54LCBmcmFjdCggdi54ICogMjU1LjAgKSwgdi55LCBmcmFjdCggdi55ICogMjU1LjAgKSk7XG5cdHJldHVybiB2ZWM0KCByLnggLSByLnkgLyAyNTUuMCwgci55LCByLnogLSByLncgLyAyNTUuMCwgci53KTtcbn1cbnZlYzIgdW5wYWNrUkdCQVRvMkhhbGYoIHZlYzQgdiApIHtcblx0cmV0dXJuIHZlYzIoIHYueCArICggdi55IC8gMjU1LjAgKSwgdi56ICsgKCB2LncgLyAyNTUuMCApICk7XG59XG5mbG9hdCB2aWV3WlRvT3J0aG9ncmFwaGljRGVwdGgoIGNvbnN0IGluIGZsb2F0IHZpZXdaLCBjb25zdCBpbiBmbG9hdCBuZWFyLCBjb25zdCBpbiBmbG9hdCBmYXIgKSB7XG5cdHJldHVybiAoIHZpZXdaICsgbmVhciApIC8gKCBuZWFyIC0gZmFyICk7XG59XG5mbG9hdCBvcnRob2dyYXBoaWNEZXB0aFRvVmlld1ooIGNvbnN0IGluIGZsb2F0IGxpbmVhckNsaXBaLCBjb25zdCBpbiBmbG9hdCBuZWFyLCBjb25zdCBpbiBmbG9hdCBmYXIgKSB7XG5cdHJldHVybiBsaW5lYXJDbGlwWiAqICggbmVhciAtIGZhciApIC0gbmVhcjtcbn1cbmZsb2F0IHZpZXdaVG9QZXJzcGVjdGl2ZURlcHRoKCBjb25zdCBpbiBmbG9hdCB2aWV3WiwgY29uc3QgaW4gZmxvYXQgbmVhciwgY29uc3QgaW4gZmxvYXQgZmFyICkge1xuXHRyZXR1cm4gKCggbmVhciArIHZpZXdaICkgKiBmYXIgKSAvICgoIGZhciAtIG5lYXIgKSAqIHZpZXdaICk7XG59XG5mbG9hdCBwZXJzcGVjdGl2ZURlcHRoVG9WaWV3WiggY29uc3QgaW4gZmxvYXQgaW52Q2xpcFosIGNvbnN0IGluIGZsb2F0IG5lYXIsIGNvbnN0IGluIGZsb2F0IGZhciApIHtcblx0cmV0dXJuICggbmVhciAqIGZhciApIC8gKCAoIGZhciAtIG5lYXIgKSAqIGludkNsaXBaIC0gZmFyICk7XG59IixwcmVtdWx0aXBsaWVkX2FscGhhX2ZyYWdtZW50OiIjaWZkZWYgUFJFTVVMVElQTElFRF9BTFBIQVxuXHRnbF9GcmFnQ29sb3IucmdiICo9IGdsX0ZyYWdDb2xvci5hO1xuI2VuZGlmIixwcm9qZWN0X3ZlcnRleDoidmVjNCBtdlBvc2l0aW9uID0gdmVjNCggdHJhbnNmb3JtZWQsIDEuMCApO1xuI2lmZGVmIFVTRV9JTlNUQU5DSU5HXG5cdG12UG9zaXRpb24gPSBpbnN0YW5jZU1hdHJpeCAqIG12UG9zaXRpb247XG4jZW5kaWZcbm12UG9zaXRpb24gPSBtb2RlbFZpZXdNYXRyaXggKiBtdlBvc2l0aW9uO1xuZ2xfUG9zaXRpb24gPSBwcm9qZWN0aW9uTWF0cml4ICogbXZQb3NpdGlvbjsiLGRpdGhlcmluZ19mcmFnbWVudDoiI2lmZGVmIERJVEhFUklOR1xuXHRnbF9GcmFnQ29sb3IucmdiID0gZGl0aGVyaW5nKCBnbF9GcmFnQ29sb3IucmdiICk7XG4jZW5kaWYiLGRpdGhlcmluZ19wYXJzX2ZyYWdtZW50OiIjaWZkZWYgRElUSEVSSU5HXG5cdHZlYzMgZGl0aGVyaW5nKCB2ZWMzIGNvbG9yICkge1xuXHRcdGZsb2F0IGdyaWRfcG9zaXRpb24gPSByYW5kKCBnbF9GcmFnQ29vcmQueHkgKTtcblx0XHR2ZWMzIGRpdGhlcl9zaGlmdF9SR0IgPSB2ZWMzKCAwLjI1IC8gMjU1LjAsIC0wLjI1IC8gMjU1LjAsIDAuMjUgLyAyNTUuMCApO1xuXHRcdGRpdGhlcl9zaGlmdF9SR0IgPSBtaXgoIDIuMCAqIGRpdGhlcl9zaGlmdF9SR0IsIC0yLjAgKiBkaXRoZXJfc2hpZnRfUkdCLCBncmlkX3Bvc2l0aW9uICk7XG5cdFx0cmV0dXJuIGNvbG9yICsgZGl0aGVyX3NoaWZ0X1JHQjtcblx0fVxuI2VuZGlmIixyb3VnaG5lc3NtYXBfZnJhZ21lbnQ6ImZsb2F0IHJvdWdobmVzc0ZhY3RvciA9IHJvdWdobmVzcztcbiNpZmRlZiBVU0VfUk9VR0hORVNTTUFQXG5cdHZlYzQgdGV4ZWxSb3VnaG5lc3MgPSB0ZXh0dXJlMkQoIHJvdWdobmVzc01hcCwgdlV2ICk7XG5cdHJvdWdobmVzc0ZhY3RvciAqPSB0ZXhlbFJvdWdobmVzcy5nO1xuI2VuZGlmIixyb3VnaG5lc3NtYXBfcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9ST1VHSE5FU1NNQVBcblx0dW5pZm9ybSBzYW1wbGVyMkQgcm91Z2huZXNzTWFwO1xuI2VuZGlmIixzaGFkb3dtYXBfcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9TSEFET1dNQVBcblx0I2lmIE5VTV9ESVJfTElHSFRfU0hBRE9XUyA+IDBcblx0XHR1bmlmb3JtIHNhbXBsZXIyRCBkaXJlY3Rpb25hbFNoYWRvd01hcFsgTlVNX0RJUl9MSUdIVF9TSEFET1dTIF07XG5cdFx0dmFyeWluZyB2ZWM0IHZEaXJlY3Rpb25hbFNoYWRvd0Nvb3JkWyBOVU1fRElSX0xJR0hUX1NIQURPV1MgXTtcblx0XHRzdHJ1Y3QgRGlyZWN0aW9uYWxMaWdodFNoYWRvdyB7XG5cdFx0XHRmbG9hdCBzaGFkb3dCaWFzO1xuXHRcdFx0ZmxvYXQgc2hhZG93Tm9ybWFsQmlhcztcblx0XHRcdGZsb2F0IHNoYWRvd1JhZGl1cztcblx0XHRcdHZlYzIgc2hhZG93TWFwU2l6ZTtcblx0XHR9O1xuXHRcdHVuaWZvcm0gRGlyZWN0aW9uYWxMaWdodFNoYWRvdyBkaXJlY3Rpb25hbExpZ2h0U2hhZG93c1sgTlVNX0RJUl9MSUdIVF9TSEFET1dTIF07XG5cdCNlbmRpZlxuXHQjaWYgTlVNX1NQT1RfTElHSFRfU0hBRE9XUyA+IDBcblx0XHR1bmlmb3JtIHNhbXBsZXIyRCBzcG90U2hhZG93TWFwWyBOVU1fU1BPVF9MSUdIVF9TSEFET1dTIF07XG5cdFx0dmFyeWluZyB2ZWM0IHZTcG90U2hhZG93Q29vcmRbIE5VTV9TUE9UX0xJR0hUX1NIQURPV1MgXTtcblx0XHRzdHJ1Y3QgU3BvdExpZ2h0U2hhZG93IHtcblx0XHRcdGZsb2F0IHNoYWRvd0JpYXM7XG5cdFx0XHRmbG9hdCBzaGFkb3dOb3JtYWxCaWFzO1xuXHRcdFx0ZmxvYXQgc2hhZG93UmFkaXVzO1xuXHRcdFx0dmVjMiBzaGFkb3dNYXBTaXplO1xuXHRcdH07XG5cdFx0dW5pZm9ybSBTcG90TGlnaHRTaGFkb3cgc3BvdExpZ2h0U2hhZG93c1sgTlVNX1NQT1RfTElHSFRfU0hBRE9XUyBdO1xuXHQjZW5kaWZcblx0I2lmIE5VTV9QT0lOVF9MSUdIVF9TSEFET1dTID4gMFxuXHRcdHVuaWZvcm0gc2FtcGxlcjJEIHBvaW50U2hhZG93TWFwWyBOVU1fUE9JTlRfTElHSFRfU0hBRE9XUyBdO1xuXHRcdHZhcnlpbmcgdmVjNCB2UG9pbnRTaGFkb3dDb29yZFsgTlVNX1BPSU5UX0xJR0hUX1NIQURPV1MgXTtcblx0XHRzdHJ1Y3QgUG9pbnRMaWdodFNoYWRvdyB7XG5cdFx0XHRmbG9hdCBzaGFkb3dCaWFzO1xuXHRcdFx0ZmxvYXQgc2hhZG93Tm9ybWFsQmlhcztcblx0XHRcdGZsb2F0IHNoYWRvd1JhZGl1cztcblx0XHRcdHZlYzIgc2hhZG93TWFwU2l6ZTtcblx0XHRcdGZsb2F0IHNoYWRvd0NhbWVyYU5lYXI7XG5cdFx0XHRmbG9hdCBzaGFkb3dDYW1lcmFGYXI7XG5cdFx0fTtcblx0XHR1bmlmb3JtIFBvaW50TGlnaHRTaGFkb3cgcG9pbnRMaWdodFNoYWRvd3NbIE5VTV9QT0lOVF9MSUdIVF9TSEFET1dTIF07XG5cdCNlbmRpZlxuXHRmbG9hdCB0ZXh0dXJlMkRDb21wYXJlKCBzYW1wbGVyMkQgZGVwdGhzLCB2ZWMyIHV2LCBmbG9hdCBjb21wYXJlICkge1xuXHRcdHJldHVybiBzdGVwKCBjb21wYXJlLCB1bnBhY2tSR0JBVG9EZXB0aCggdGV4dHVyZTJEKCBkZXB0aHMsIHV2ICkgKSApO1xuXHR9XG5cdHZlYzIgdGV4dHVyZTJERGlzdHJpYnV0aW9uKCBzYW1wbGVyMkQgc2hhZG93LCB2ZWMyIHV2ICkge1xuXHRcdHJldHVybiB1bnBhY2tSR0JBVG8ySGFsZiggdGV4dHVyZTJEKCBzaGFkb3csIHV2ICkgKTtcblx0fVxuXHRmbG9hdCBWU01TaGFkb3cgKHNhbXBsZXIyRCBzaGFkb3csIHZlYzIgdXYsIGZsb2F0IGNvbXBhcmUgKXtcblx0XHRmbG9hdCBvY2NsdXNpb24gPSAxLjA7XG5cdFx0dmVjMiBkaXN0cmlidXRpb24gPSB0ZXh0dXJlMkREaXN0cmlidXRpb24oIHNoYWRvdywgdXYgKTtcblx0XHRmbG9hdCBoYXJkX3NoYWRvdyA9IHN0ZXAoIGNvbXBhcmUgLCBkaXN0cmlidXRpb24ueCApO1xuXHRcdGlmIChoYXJkX3NoYWRvdyAhPSAxLjAgKSB7XG5cdFx0XHRmbG9hdCBkaXN0YW5jZSA9IGNvbXBhcmUgLSBkaXN0cmlidXRpb24ueCA7XG5cdFx0XHRmbG9hdCB2YXJpYW5jZSA9IG1heCggMC4wMDAwMCwgZGlzdHJpYnV0aW9uLnkgKiBkaXN0cmlidXRpb24ueSApO1xuXHRcdFx0ZmxvYXQgc29mdG5lc3NfcHJvYmFiaWxpdHkgPSB2YXJpYW5jZSAvICh2YXJpYW5jZSArIGRpc3RhbmNlICogZGlzdGFuY2UgKTtcdFx0XHRzb2Z0bmVzc19wcm9iYWJpbGl0eSA9IGNsYW1wKCAoIHNvZnRuZXNzX3Byb2JhYmlsaXR5IC0gMC4zICkgLyAoIDAuOTUgLSAwLjMgKSwgMC4wLCAxLjAgKTtcdFx0XHRvY2NsdXNpb24gPSBjbGFtcCggbWF4KCBoYXJkX3NoYWRvdywgc29mdG5lc3NfcHJvYmFiaWxpdHkgKSwgMC4wLCAxLjAgKTtcblx0XHR9XG5cdFx0cmV0dXJuIG9jY2x1c2lvbjtcblx0fVxuXHRmbG9hdCBnZXRTaGFkb3coIHNhbXBsZXIyRCBzaGFkb3dNYXAsIHZlYzIgc2hhZG93TWFwU2l6ZSwgZmxvYXQgc2hhZG93QmlhcywgZmxvYXQgc2hhZG93UmFkaXVzLCB2ZWM0IHNoYWRvd0Nvb3JkICkge1xuXHRcdGZsb2F0IHNoYWRvdyA9IDEuMDtcblx0XHRzaGFkb3dDb29yZC54eXogLz0gc2hhZG93Q29vcmQudztcblx0XHRzaGFkb3dDb29yZC56ICs9IHNoYWRvd0JpYXM7XG5cdFx0YnZlYzQgaW5GcnVzdHVtVmVjID0gYnZlYzQgKCBzaGFkb3dDb29yZC54ID49IDAuMCwgc2hhZG93Q29vcmQueCA8PSAxLjAsIHNoYWRvd0Nvb3JkLnkgPj0gMC4wLCBzaGFkb3dDb29yZC55IDw9IDEuMCApO1xuXHRcdGJvb2wgaW5GcnVzdHVtID0gYWxsKCBpbkZydXN0dW1WZWMgKTtcblx0XHRidmVjMiBmcnVzdHVtVGVzdFZlYyA9IGJ2ZWMyKCBpbkZydXN0dW0sIHNoYWRvd0Nvb3JkLnogPD0gMS4wICk7XG5cdFx0Ym9vbCBmcnVzdHVtVGVzdCA9IGFsbCggZnJ1c3R1bVRlc3RWZWMgKTtcblx0XHRpZiAoIGZydXN0dW1UZXN0ICkge1xuXHRcdCNpZiBkZWZpbmVkKCBTSEFET1dNQVBfVFlQRV9QQ0YgKVxuXHRcdFx0dmVjMiB0ZXhlbFNpemUgPSB2ZWMyKCAxLjAgKSAvIHNoYWRvd01hcFNpemU7XG5cdFx0XHRmbG9hdCBkeDAgPSAtIHRleGVsU2l6ZS54ICogc2hhZG93UmFkaXVzO1xuXHRcdFx0ZmxvYXQgZHkwID0gLSB0ZXhlbFNpemUueSAqIHNoYWRvd1JhZGl1cztcblx0XHRcdGZsb2F0IGR4MSA9ICsgdGV4ZWxTaXplLnggKiBzaGFkb3dSYWRpdXM7XG5cdFx0XHRmbG9hdCBkeTEgPSArIHRleGVsU2l6ZS55ICogc2hhZG93UmFkaXVzO1xuXHRcdFx0ZmxvYXQgZHgyID0gZHgwIC8gMi4wO1xuXHRcdFx0ZmxvYXQgZHkyID0gZHkwIC8gMi4wO1xuXHRcdFx0ZmxvYXQgZHgzID0gZHgxIC8gMi4wO1xuXHRcdFx0ZmxvYXQgZHkzID0gZHkxIC8gMi4wO1xuXHRcdFx0c2hhZG93ID0gKFxuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggZHgwLCBkeTAgKSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIDAuMCwgZHkwICksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCBkeDEsIGR5MCApLCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggZHgyLCBkeTIgKSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIDAuMCwgZHkyICksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCBkeDMsIGR5MiApLCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggZHgwLCAwLjAgKSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIGR4MiwgMC4wICksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCBkeDMsIDAuMCApLCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggZHgxLCAwLjAgKSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIGR4MiwgZHkzICksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCAwLjAsIGR5MyApLCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggZHgzLCBkeTMgKSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIGR4MCwgZHkxICksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCAwLjAsIGR5MSApLCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggZHgxLCBkeTEgKSwgc2hhZG93Q29vcmQueiApXG5cdFx0XHQpICogKCAxLjAgLyAxNy4wICk7XG5cdFx0I2VsaWYgZGVmaW5lZCggU0hBRE9XTUFQX1RZUEVfUENGX1NPRlQgKVxuXHRcdFx0dmVjMiB0ZXhlbFNpemUgPSB2ZWMyKCAxLjAgKSAvIHNoYWRvd01hcFNpemU7XG5cdFx0XHRmbG9hdCBkeCA9IHRleGVsU2l6ZS54O1xuXHRcdFx0ZmxvYXQgZHkgPSB0ZXhlbFNpemUueTtcblx0XHRcdHZlYzIgdXYgPSBzaGFkb3dDb29yZC54eTtcblx0XHRcdHZlYzIgZiA9IGZyYWN0KCB1diAqIHNoYWRvd01hcFNpemUgKyAwLjUgKTtcblx0XHRcdHV2IC09IGYgKiB0ZXhlbFNpemU7XG5cdFx0XHRzaGFkb3cgPSAoXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgdXYsIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgdXYgKyB2ZWMyKCBkeCwgMC4wICksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgdXYgKyB2ZWMyKCAwLjAsIGR5ICksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgdXYgKyB0ZXhlbFNpemUsIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdG1peCggdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCB1diArIHZlYzIoIC1keCwgMC4wICksIHNoYWRvd0Nvb3JkLnogKSwgXG5cdFx0XHRcdFx0IHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgdXYgKyB2ZWMyKCAyLjAgKiBkeCwgMC4wICksIHNoYWRvd0Nvb3JkLnogKSxcblx0XHRcdFx0XHQgZi54ICkgK1xuXHRcdFx0XHRtaXgoIHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgdXYgKyB2ZWMyKCAtZHgsIGR5ICksIHNoYWRvd0Nvb3JkLnogKSwgXG5cdFx0XHRcdFx0IHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgdXYgKyB2ZWMyKCAyLjAgKiBkeCwgZHkgKSwgc2hhZG93Q29vcmQueiApLFxuXHRcdFx0XHRcdCBmLnggKSArXG5cdFx0XHRcdG1peCggdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCB1diArIHZlYzIoIDAuMCwgLWR5ICksIHNoYWRvd0Nvb3JkLnogKSwgXG5cdFx0XHRcdFx0IHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgdXYgKyB2ZWMyKCAwLjAsIDIuMCAqIGR5ICksIHNoYWRvd0Nvb3JkLnogKSxcblx0XHRcdFx0XHQgZi55ICkgK1xuXHRcdFx0XHRtaXgoIHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgdXYgKyB2ZWMyKCBkeCwgLWR5ICksIHNoYWRvd0Nvb3JkLnogKSwgXG5cdFx0XHRcdFx0IHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgdXYgKyB2ZWMyKCBkeCwgMi4wICogZHkgKSwgc2hhZG93Q29vcmQueiApLFxuXHRcdFx0XHRcdCBmLnkgKSArXG5cdFx0XHRcdG1peCggbWl4KCB0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHV2ICsgdmVjMiggLWR4LCAtZHkgKSwgc2hhZG93Q29vcmQueiApLCBcblx0XHRcdFx0XHRcdCAgdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCB1diArIHZlYzIoIDIuMCAqIGR4LCAtZHkgKSwgc2hhZG93Q29vcmQueiApLFxuXHRcdFx0XHRcdFx0ICBmLnggKSxcblx0XHRcdFx0XHQgbWl4KCB0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHV2ICsgdmVjMiggLWR4LCAyLjAgKiBkeSApLCBzaGFkb3dDb29yZC56ICksIFxuXHRcdFx0XHRcdFx0ICB0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHV2ICsgdmVjMiggMi4wICogZHgsIDIuMCAqIGR5ICksIHNoYWRvd0Nvb3JkLnogKSxcblx0XHRcdFx0XHRcdCAgZi54ICksXG5cdFx0XHRcdFx0IGYueSApXG5cdFx0XHQpICogKCAxLjAgLyA5LjAgKTtcblx0XHQjZWxpZiBkZWZpbmVkKCBTSEFET1dNQVBfVFlQRV9WU00gKVxuXHRcdFx0c2hhZG93ID0gVlNNU2hhZG93KCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5LCBzaGFkb3dDb29yZC56ICk7XG5cdFx0I2Vsc2Vcblx0XHRcdHNoYWRvdyA9IHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHksIHNoYWRvd0Nvb3JkLnogKTtcblx0XHQjZW5kaWZcblx0XHR9XG5cdFx0cmV0dXJuIHNoYWRvdztcblx0fVxuXHR2ZWMyIGN1YmVUb1VWKCB2ZWMzIHYsIGZsb2F0IHRleGVsU2l6ZVkgKSB7XG5cdFx0dmVjMyBhYnNWID0gYWJzKCB2ICk7XG5cdFx0ZmxvYXQgc2NhbGVUb0N1YmUgPSAxLjAgLyBtYXgoIGFic1YueCwgbWF4KCBhYnNWLnksIGFic1YueiApICk7XG5cdFx0YWJzViAqPSBzY2FsZVRvQ3ViZTtcblx0XHR2ICo9IHNjYWxlVG9DdWJlICogKCAxLjAgLSAyLjAgKiB0ZXhlbFNpemVZICk7XG5cdFx0dmVjMiBwbGFuYXIgPSB2Lnh5O1xuXHRcdGZsb2F0IGFsbW9zdEFUZXhlbCA9IDEuNSAqIHRleGVsU2l6ZVk7XG5cdFx0ZmxvYXQgYWxtb3N0T25lID0gMS4wIC0gYWxtb3N0QVRleGVsO1xuXHRcdGlmICggYWJzVi56ID49IGFsbW9zdE9uZSApIHtcblx0XHRcdGlmICggdi56ID4gMC4wIClcblx0XHRcdFx0cGxhbmFyLnggPSA0LjAgLSB2Lng7XG5cdFx0fSBlbHNlIGlmICggYWJzVi54ID49IGFsbW9zdE9uZSApIHtcblx0XHRcdGZsb2F0IHNpZ25YID0gc2lnbiggdi54ICk7XG5cdFx0XHRwbGFuYXIueCA9IHYueiAqIHNpZ25YICsgMi4wICogc2lnblg7XG5cdFx0fSBlbHNlIGlmICggYWJzVi55ID49IGFsbW9zdE9uZSApIHtcblx0XHRcdGZsb2F0IHNpZ25ZID0gc2lnbiggdi55ICk7XG5cdFx0XHRwbGFuYXIueCA9IHYueCArIDIuMCAqIHNpZ25ZICsgMi4wO1xuXHRcdFx0cGxhbmFyLnkgPSB2LnogKiBzaWduWSAtIDIuMDtcblx0XHR9XG5cdFx0cmV0dXJuIHZlYzIoIDAuMTI1LCAwLjI1ICkgKiBwbGFuYXIgKyB2ZWMyKCAwLjM3NSwgMC43NSApO1xuXHR9XG5cdGZsb2F0IGdldFBvaW50U2hhZG93KCBzYW1wbGVyMkQgc2hhZG93TWFwLCB2ZWMyIHNoYWRvd01hcFNpemUsIGZsb2F0IHNoYWRvd0JpYXMsIGZsb2F0IHNoYWRvd1JhZGl1cywgdmVjNCBzaGFkb3dDb29yZCwgZmxvYXQgc2hhZG93Q2FtZXJhTmVhciwgZmxvYXQgc2hhZG93Q2FtZXJhRmFyICkge1xuXHRcdHZlYzIgdGV4ZWxTaXplID0gdmVjMiggMS4wICkgLyAoIHNoYWRvd01hcFNpemUgKiB2ZWMyKCA0LjAsIDIuMCApICk7XG5cdFx0dmVjMyBsaWdodFRvUG9zaXRpb24gPSBzaGFkb3dDb29yZC54eXo7XG5cdFx0ZmxvYXQgZHAgPSAoIGxlbmd0aCggbGlnaHRUb1Bvc2l0aW9uICkgLSBzaGFkb3dDYW1lcmFOZWFyICkgLyAoIHNoYWRvd0NhbWVyYUZhciAtIHNoYWRvd0NhbWVyYU5lYXIgKTtcdFx0ZHAgKz0gc2hhZG93Qmlhcztcblx0XHR2ZWMzIGJkM0QgPSBub3JtYWxpemUoIGxpZ2h0VG9Qb3NpdGlvbiApO1xuXHRcdCNpZiBkZWZpbmVkKCBTSEFET1dNQVBfVFlQRV9QQ0YgKSB8fCBkZWZpbmVkKCBTSEFET1dNQVBfVFlQRV9QQ0ZfU09GVCApIHx8IGRlZmluZWQoIFNIQURPV01BUF9UWVBFX1ZTTSApXG5cdFx0XHR2ZWMyIG9mZnNldCA9IHZlYzIoIC0gMSwgMSApICogc2hhZG93UmFkaXVzICogdGV4ZWxTaXplLnk7XG5cdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIGN1YmVUb1VWKCBiZDNEICsgb2Zmc2V0Lnh5eSwgdGV4ZWxTaXplLnkgKSwgZHAgKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgY3ViZVRvVVYoIGJkM0QgKyBvZmZzZXQueXl5LCB0ZXhlbFNpemUueSApLCBkcCApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBjdWJlVG9VViggYmQzRCArIG9mZnNldC54eXgsIHRleGVsU2l6ZS55ICksIGRwICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIGN1YmVUb1VWKCBiZDNEICsgb2Zmc2V0Lnl5eCwgdGV4ZWxTaXplLnkgKSwgZHAgKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgY3ViZVRvVVYoIGJkM0QsIHRleGVsU2l6ZS55ICksIGRwICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIGN1YmVUb1VWKCBiZDNEICsgb2Zmc2V0Lnh4eSwgdGV4ZWxTaXplLnkgKSwgZHAgKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgY3ViZVRvVVYoIGJkM0QgKyBvZmZzZXQueXh5LCB0ZXhlbFNpemUueSApLCBkcCApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBjdWJlVG9VViggYmQzRCArIG9mZnNldC54eHgsIHRleGVsU2l6ZS55ICksIGRwICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIGN1YmVUb1VWKCBiZDNEICsgb2Zmc2V0Lnl4eCwgdGV4ZWxTaXplLnkgKSwgZHAgKVxuXHRcdFx0KSAqICggMS4wIC8gOS4wICk7XG5cdFx0I2Vsc2Vcblx0XHRcdHJldHVybiB0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIGN1YmVUb1VWKCBiZDNELCB0ZXhlbFNpemUueSApLCBkcCApO1xuXHRcdCNlbmRpZlxuXHR9XG4jZW5kaWYiLHNoYWRvd21hcF9wYXJzX3ZlcnRleDoiI2lmZGVmIFVTRV9TSEFET1dNQVBcblx0I2lmIE5VTV9ESVJfTElHSFRfU0hBRE9XUyA+IDBcblx0XHR1bmlmb3JtIG1hdDQgZGlyZWN0aW9uYWxTaGFkb3dNYXRyaXhbIE5VTV9ESVJfTElHSFRfU0hBRE9XUyBdO1xuXHRcdHZhcnlpbmcgdmVjNCB2RGlyZWN0aW9uYWxTaGFkb3dDb29yZFsgTlVNX0RJUl9MSUdIVF9TSEFET1dTIF07XG5cdFx0c3RydWN0IERpcmVjdGlvbmFsTGlnaHRTaGFkb3cge1xuXHRcdFx0ZmxvYXQgc2hhZG93Qmlhcztcblx0XHRcdGZsb2F0IHNoYWRvd05vcm1hbEJpYXM7XG5cdFx0XHRmbG9hdCBzaGFkb3dSYWRpdXM7XG5cdFx0XHR2ZWMyIHNoYWRvd01hcFNpemU7XG5cdFx0fTtcblx0XHR1bmlmb3JtIERpcmVjdGlvbmFsTGlnaHRTaGFkb3cgZGlyZWN0aW9uYWxMaWdodFNoYWRvd3NbIE5VTV9ESVJfTElHSFRfU0hBRE9XUyBdO1xuXHQjZW5kaWZcblx0I2lmIE5VTV9TUE9UX0xJR0hUX1NIQURPV1MgPiAwXG5cdFx0dW5pZm9ybSBtYXQ0IHNwb3RTaGFkb3dNYXRyaXhbIE5VTV9TUE9UX0xJR0hUX1NIQURPV1MgXTtcblx0XHR2YXJ5aW5nIHZlYzQgdlNwb3RTaGFkb3dDb29yZFsgTlVNX1NQT1RfTElHSFRfU0hBRE9XUyBdO1xuXHRcdHN0cnVjdCBTcG90TGlnaHRTaGFkb3cge1xuXHRcdFx0ZmxvYXQgc2hhZG93Qmlhcztcblx0XHRcdGZsb2F0IHNoYWRvd05vcm1hbEJpYXM7XG5cdFx0XHRmbG9hdCBzaGFkb3dSYWRpdXM7XG5cdFx0XHR2ZWMyIHNoYWRvd01hcFNpemU7XG5cdFx0fTtcblx0XHR1bmlmb3JtIFNwb3RMaWdodFNoYWRvdyBzcG90TGlnaHRTaGFkb3dzWyBOVU1fU1BPVF9MSUdIVF9TSEFET1dTIF07XG5cdCNlbmRpZlxuXHQjaWYgTlVNX1BPSU5UX0xJR0hUX1NIQURPV1MgPiAwXG5cdFx0dW5pZm9ybSBtYXQ0IHBvaW50U2hhZG93TWF0cml4WyBOVU1fUE9JTlRfTElHSFRfU0hBRE9XUyBdO1xuXHRcdHZhcnlpbmcgdmVjNCB2UG9pbnRTaGFkb3dDb29yZFsgTlVNX1BPSU5UX0xJR0hUX1NIQURPV1MgXTtcblx0XHRzdHJ1Y3QgUG9pbnRMaWdodFNoYWRvdyB7XG5cdFx0XHRmbG9hdCBzaGFkb3dCaWFzO1xuXHRcdFx0ZmxvYXQgc2hhZG93Tm9ybWFsQmlhcztcblx0XHRcdGZsb2F0IHNoYWRvd1JhZGl1cztcblx0XHRcdHZlYzIgc2hhZG93TWFwU2l6ZTtcblx0XHRcdGZsb2F0IHNoYWRvd0NhbWVyYU5lYXI7XG5cdFx0XHRmbG9hdCBzaGFkb3dDYW1lcmFGYXI7XG5cdFx0fTtcblx0XHR1bmlmb3JtIFBvaW50TGlnaHRTaGFkb3cgcG9pbnRMaWdodFNoYWRvd3NbIE5VTV9QT0lOVF9MSUdIVF9TSEFET1dTIF07XG5cdCNlbmRpZlxuI2VuZGlmIixzaGFkb3dtYXBfdmVydGV4OiIjaWZkZWYgVVNFX1NIQURPV01BUFxuXHQjaWYgTlVNX0RJUl9MSUdIVF9TSEFET1dTID4gMCB8fCBOVU1fU1BPVF9MSUdIVF9TSEFET1dTID4gMCB8fCBOVU1fUE9JTlRfTElHSFRfU0hBRE9XUyA+IDBcblx0XHR2ZWMzIHNoYWRvd1dvcmxkTm9ybWFsID0gaW52ZXJzZVRyYW5zZm9ybURpcmVjdGlvbiggdHJhbnNmb3JtZWROb3JtYWwsIHZpZXdNYXRyaXggKTtcblx0XHR2ZWM0IHNoYWRvd1dvcmxkUG9zaXRpb247XG5cdCNlbmRpZlxuXHQjaWYgTlVNX0RJUl9MSUdIVF9TSEFET1dTID4gMFxuXHQjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0XG5cdGZvciAoIGludCBpID0gMDsgaSA8IE5VTV9ESVJfTElHSFRfU0hBRE9XUzsgaSArKyApIHtcblx0XHRzaGFkb3dXb3JsZFBvc2l0aW9uID0gd29ybGRQb3NpdGlvbiArIHZlYzQoIHNoYWRvd1dvcmxkTm9ybWFsICogZGlyZWN0aW9uYWxMaWdodFNoYWRvd3NbIGkgXS5zaGFkb3dOb3JtYWxCaWFzLCAwICk7XG5cdFx0dkRpcmVjdGlvbmFsU2hhZG93Q29vcmRbIGkgXSA9IGRpcmVjdGlvbmFsU2hhZG93TWF0cml4WyBpIF0gKiBzaGFkb3dXb3JsZFBvc2l0aW9uO1xuXHR9XG5cdCNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kXG5cdCNlbmRpZlxuXHQjaWYgTlVNX1NQT1RfTElHSFRfU0hBRE9XUyA+IDBcblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydFxuXHRmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fU1BPVF9MSUdIVF9TSEFET1dTOyBpICsrICkge1xuXHRcdHNoYWRvd1dvcmxkUG9zaXRpb24gPSB3b3JsZFBvc2l0aW9uICsgdmVjNCggc2hhZG93V29ybGROb3JtYWwgKiBzcG90TGlnaHRTaGFkb3dzWyBpIF0uc2hhZG93Tm9ybWFsQmlhcywgMCApO1xuXHRcdHZTcG90U2hhZG93Q29vcmRbIGkgXSA9IHNwb3RTaGFkb3dNYXRyaXhbIGkgXSAqIHNoYWRvd1dvcmxkUG9zaXRpb247XG5cdH1cblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9lbmRcblx0I2VuZGlmXG5cdCNpZiBOVU1fUE9JTlRfTElHSFRfU0hBRE9XUyA+IDBcblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydFxuXHRmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fUE9JTlRfTElHSFRfU0hBRE9XUzsgaSArKyApIHtcblx0XHRzaGFkb3dXb3JsZFBvc2l0aW9uID0gd29ybGRQb3NpdGlvbiArIHZlYzQoIHNoYWRvd1dvcmxkTm9ybWFsICogcG9pbnRMaWdodFNoYWRvd3NbIGkgXS5zaGFkb3dOb3JtYWxCaWFzLCAwICk7XG5cdFx0dlBvaW50U2hhZG93Q29vcmRbIGkgXSA9IHBvaW50U2hhZG93TWF0cml4WyBpIF0gKiBzaGFkb3dXb3JsZFBvc2l0aW9uO1xuXHR9XG5cdCNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kXG5cdCNlbmRpZlxuI2VuZGlmIixzaGFkb3dtYXNrX3BhcnNfZnJhZ21lbnQ6ImZsb2F0IGdldFNoYWRvd01hc2soKSB7XG5cdGZsb2F0IHNoYWRvdyA9IDEuMDtcblx0I2lmZGVmIFVTRV9TSEFET1dNQVBcblx0I2lmIE5VTV9ESVJfTElHSFRfU0hBRE9XUyA+IDBcblx0RGlyZWN0aW9uYWxMaWdodFNoYWRvdyBkaXJlY3Rpb25hbExpZ2h0O1xuXHQjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0XG5cdGZvciAoIGludCBpID0gMDsgaSA8IE5VTV9ESVJfTElHSFRfU0hBRE9XUzsgaSArKyApIHtcblx0XHRkaXJlY3Rpb25hbExpZ2h0ID0gZGlyZWN0aW9uYWxMaWdodFNoYWRvd3NbIGkgXTtcblx0XHRzaGFkb3cgKj0gcmVjZWl2ZVNoYWRvdyA/IGdldFNoYWRvdyggZGlyZWN0aW9uYWxTaGFkb3dNYXBbIGkgXSwgZGlyZWN0aW9uYWxMaWdodC5zaGFkb3dNYXBTaXplLCBkaXJlY3Rpb25hbExpZ2h0LnNoYWRvd0JpYXMsIGRpcmVjdGlvbmFsTGlnaHQuc2hhZG93UmFkaXVzLCB2RGlyZWN0aW9uYWxTaGFkb3dDb29yZFsgaSBdICkgOiAxLjA7XG5cdH1cblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9lbmRcblx0I2VuZGlmXG5cdCNpZiBOVU1fU1BPVF9MSUdIVF9TSEFET1dTID4gMFxuXHRTcG90TGlnaHRTaGFkb3cgc3BvdExpZ2h0O1xuXHQjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0XG5cdGZvciAoIGludCBpID0gMDsgaSA8IE5VTV9TUE9UX0xJR0hUX1NIQURPV1M7IGkgKysgKSB7XG5cdFx0c3BvdExpZ2h0ID0gc3BvdExpZ2h0U2hhZG93c1sgaSBdO1xuXHRcdHNoYWRvdyAqPSByZWNlaXZlU2hhZG93ID8gZ2V0U2hhZG93KCBzcG90U2hhZG93TWFwWyBpIF0sIHNwb3RMaWdodC5zaGFkb3dNYXBTaXplLCBzcG90TGlnaHQuc2hhZG93Qmlhcywgc3BvdExpZ2h0LnNoYWRvd1JhZGl1cywgdlNwb3RTaGFkb3dDb29yZFsgaSBdICkgOiAxLjA7XG5cdH1cblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9lbmRcblx0I2VuZGlmXG5cdCNpZiBOVU1fUE9JTlRfTElHSFRfU0hBRE9XUyA+IDBcblx0UG9pbnRMaWdodFNoYWRvdyBwb2ludExpZ2h0O1xuXHQjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0XG5cdGZvciAoIGludCBpID0gMDsgaSA8IE5VTV9QT0lOVF9MSUdIVF9TSEFET1dTOyBpICsrICkge1xuXHRcdHBvaW50TGlnaHQgPSBwb2ludExpZ2h0U2hhZG93c1sgaSBdO1xuXHRcdHNoYWRvdyAqPSByZWNlaXZlU2hhZG93ID8gZ2V0UG9pbnRTaGFkb3coIHBvaW50U2hhZG93TWFwWyBpIF0sIHBvaW50TGlnaHQuc2hhZG93TWFwU2l6ZSwgcG9pbnRMaWdodC5zaGFkb3dCaWFzLCBwb2ludExpZ2h0LnNoYWRvd1JhZGl1cywgdlBvaW50U2hhZG93Q29vcmRbIGkgXSwgcG9pbnRMaWdodC5zaGFkb3dDYW1lcmFOZWFyLCBwb2ludExpZ2h0LnNoYWRvd0NhbWVyYUZhciApIDogMS4wO1xuXHR9XG5cdCNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kXG5cdCNlbmRpZlxuXHQjZW5kaWZcblx0cmV0dXJuIHNoYWRvdztcbn0iLHNraW5iYXNlX3ZlcnRleDoiI2lmZGVmIFVTRV9TS0lOTklOR1xuXHRtYXQ0IGJvbmVNYXRYID0gZ2V0Qm9uZU1hdHJpeCggc2tpbkluZGV4LnggKTtcblx0bWF0NCBib25lTWF0WSA9IGdldEJvbmVNYXRyaXgoIHNraW5JbmRleC55ICk7XG5cdG1hdDQgYm9uZU1hdFogPSBnZXRCb25lTWF0cml4KCBza2luSW5kZXgueiApO1xuXHRtYXQ0IGJvbmVNYXRXID0gZ2V0Qm9uZU1hdHJpeCggc2tpbkluZGV4LncgKTtcbiNlbmRpZiIsc2tpbm5pbmdfcGFyc192ZXJ0ZXg6IiNpZmRlZiBVU0VfU0tJTk5JTkdcblx0dW5pZm9ybSBtYXQ0IGJpbmRNYXRyaXg7XG5cdHVuaWZvcm0gbWF0NCBiaW5kTWF0cml4SW52ZXJzZTtcblx0I2lmZGVmIEJPTkVfVEVYVFVSRVxuXHRcdHVuaWZvcm0gaGlnaHAgc2FtcGxlcjJEIGJvbmVUZXh0dXJlO1xuXHRcdHVuaWZvcm0gaW50IGJvbmVUZXh0dXJlU2l6ZTtcblx0XHRtYXQ0IGdldEJvbmVNYXRyaXgoIGNvbnN0IGluIGZsb2F0IGkgKSB7XG5cdFx0XHRmbG9hdCBqID0gaSAqIDQuMDtcblx0XHRcdGZsb2F0IHggPSBtb2QoIGosIGZsb2F0KCBib25lVGV4dHVyZVNpemUgKSApO1xuXHRcdFx0ZmxvYXQgeSA9IGZsb29yKCBqIC8gZmxvYXQoIGJvbmVUZXh0dXJlU2l6ZSApICk7XG5cdFx0XHRmbG9hdCBkeCA9IDEuMCAvIGZsb2F0KCBib25lVGV4dHVyZVNpemUgKTtcblx0XHRcdGZsb2F0IGR5ID0gMS4wIC8gZmxvYXQoIGJvbmVUZXh0dXJlU2l6ZSApO1xuXHRcdFx0eSA9IGR5ICogKCB5ICsgMC41ICk7XG5cdFx0XHR2ZWM0IHYxID0gdGV4dHVyZTJEKCBib25lVGV4dHVyZSwgdmVjMiggZHggKiAoIHggKyAwLjUgKSwgeSApICk7XG5cdFx0XHR2ZWM0IHYyID0gdGV4dHVyZTJEKCBib25lVGV4dHVyZSwgdmVjMiggZHggKiAoIHggKyAxLjUgKSwgeSApICk7XG5cdFx0XHR2ZWM0IHYzID0gdGV4dHVyZTJEKCBib25lVGV4dHVyZSwgdmVjMiggZHggKiAoIHggKyAyLjUgKSwgeSApICk7XG5cdFx0XHR2ZWM0IHY0ID0gdGV4dHVyZTJEKCBib25lVGV4dHVyZSwgdmVjMiggZHggKiAoIHggKyAzLjUgKSwgeSApICk7XG5cdFx0XHRtYXQ0IGJvbmUgPSBtYXQ0KCB2MSwgdjIsIHYzLCB2NCApO1xuXHRcdFx0cmV0dXJuIGJvbmU7XG5cdFx0fVxuXHQjZWxzZVxuXHRcdHVuaWZvcm0gbWF0NCBib25lTWF0cmljZXNbIE1BWF9CT05FUyBdO1xuXHRcdG1hdDQgZ2V0Qm9uZU1hdHJpeCggY29uc3QgaW4gZmxvYXQgaSApIHtcblx0XHRcdG1hdDQgYm9uZSA9IGJvbmVNYXRyaWNlc1sgaW50KGkpIF07XG5cdFx0XHRyZXR1cm4gYm9uZTtcblx0XHR9XG5cdCNlbmRpZlxuI2VuZGlmIixza2lubmluZ192ZXJ0ZXg6IiNpZmRlZiBVU0VfU0tJTk5JTkdcblx0dmVjNCBza2luVmVydGV4ID0gYmluZE1hdHJpeCAqIHZlYzQoIHRyYW5zZm9ybWVkLCAxLjAgKTtcblx0dmVjNCBza2lubmVkID0gdmVjNCggMC4wICk7XG5cdHNraW5uZWQgKz0gYm9uZU1hdFggKiBza2luVmVydGV4ICogc2tpbldlaWdodC54O1xuXHRza2lubmVkICs9IGJvbmVNYXRZICogc2tpblZlcnRleCAqIHNraW5XZWlnaHQueTtcblx0c2tpbm5lZCArPSBib25lTWF0WiAqIHNraW5WZXJ0ZXggKiBza2luV2VpZ2h0Lno7XG5cdHNraW5uZWQgKz0gYm9uZU1hdFcgKiBza2luVmVydGV4ICogc2tpbldlaWdodC53O1xuXHR0cmFuc2Zvcm1lZCA9ICggYmluZE1hdHJpeEludmVyc2UgKiBza2lubmVkICkueHl6O1xuI2VuZGlmIixza2lubm9ybWFsX3ZlcnRleDoiI2lmZGVmIFVTRV9TS0lOTklOR1xuXHRtYXQ0IHNraW5NYXRyaXggPSBtYXQ0KCAwLjAgKTtcblx0c2tpbk1hdHJpeCArPSBza2luV2VpZ2h0LnggKiBib25lTWF0WDtcblx0c2tpbk1hdHJpeCArPSBza2luV2VpZ2h0LnkgKiBib25lTWF0WTtcblx0c2tpbk1hdHJpeCArPSBza2luV2VpZ2h0LnogKiBib25lTWF0Wjtcblx0c2tpbk1hdHJpeCArPSBza2luV2VpZ2h0LncgKiBib25lTWF0Vztcblx0c2tpbk1hdHJpeCA9IGJpbmRNYXRyaXhJbnZlcnNlICogc2tpbk1hdHJpeCAqIGJpbmRNYXRyaXg7XG5cdG9iamVjdE5vcm1hbCA9IHZlYzQoIHNraW5NYXRyaXggKiB2ZWM0KCBvYmplY3ROb3JtYWwsIDAuMCApICkueHl6O1xuXHQjaWZkZWYgVVNFX1RBTkdFTlRcblx0XHRvYmplY3RUYW5nZW50ID0gdmVjNCggc2tpbk1hdHJpeCAqIHZlYzQoIG9iamVjdFRhbmdlbnQsIDAuMCApICkueHl6O1xuXHQjZW5kaWZcbiNlbmRpZiIsc3BlY3VsYXJtYXBfZnJhZ21lbnQ6ImZsb2F0IHNwZWN1bGFyU3RyZW5ndGg7XG4jaWZkZWYgVVNFX1NQRUNVTEFSTUFQXG5cdHZlYzQgdGV4ZWxTcGVjdWxhciA9IHRleHR1cmUyRCggc3BlY3VsYXJNYXAsIHZVdiApO1xuXHRzcGVjdWxhclN0cmVuZ3RoID0gdGV4ZWxTcGVjdWxhci5yO1xuI2Vsc2Vcblx0c3BlY3VsYXJTdHJlbmd0aCA9IDEuMDtcbiNlbmRpZiIsc3BlY3VsYXJtYXBfcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9TUEVDVUxBUk1BUFxuXHR1bmlmb3JtIHNhbXBsZXIyRCBzcGVjdWxhck1hcDtcbiNlbmRpZiIsdG9uZW1hcHBpbmdfZnJhZ21lbnQ6IiNpZiBkZWZpbmVkKCBUT05FX01BUFBJTkcgKVxuXHRnbF9GcmFnQ29sb3IucmdiID0gdG9uZU1hcHBpbmcoIGdsX0ZyYWdDb2xvci5yZ2IgKTtcbiNlbmRpZiIsdG9uZW1hcHBpbmdfcGFyc19mcmFnbWVudDoiI2lmbmRlZiBzYXR1cmF0ZVxuI2RlZmluZSBzYXR1cmF0ZShhKSBjbGFtcCggYSwgMC4wLCAxLjAgKVxuI2VuZGlmXG51bmlmb3JtIGZsb2F0IHRvbmVNYXBwaW5nRXhwb3N1cmU7XG52ZWMzIExpbmVhclRvbmVNYXBwaW5nKCB2ZWMzIGNvbG9yICkge1xuXHRyZXR1cm4gdG9uZU1hcHBpbmdFeHBvc3VyZSAqIGNvbG9yO1xufVxudmVjMyBSZWluaGFyZFRvbmVNYXBwaW5nKCB2ZWMzIGNvbG9yICkge1xuXHRjb2xvciAqPSB0b25lTWFwcGluZ0V4cG9zdXJlO1xuXHRyZXR1cm4gc2F0dXJhdGUoIGNvbG9yIC8gKCB2ZWMzKCAxLjAgKSArIGNvbG9yICkgKTtcbn1cbnZlYzMgT3B0aW1pemVkQ2luZW9uVG9uZU1hcHBpbmcoIHZlYzMgY29sb3IgKSB7XG5cdGNvbG9yICo9IHRvbmVNYXBwaW5nRXhwb3N1cmU7XG5cdGNvbG9yID0gbWF4KCB2ZWMzKCAwLjAgKSwgY29sb3IgLSAwLjAwNCApO1xuXHRyZXR1cm4gcG93KCAoIGNvbG9yICogKCA2LjIgKiBjb2xvciArIDAuNSApICkgLyAoIGNvbG9yICogKCA2LjIgKiBjb2xvciArIDEuNyApICsgMC4wNiApLCB2ZWMzKCAyLjIgKSApO1xufVxudmVjMyBSUlRBbmRPRFRGaXQoIHZlYzMgdiApIHtcblx0dmVjMyBhID0gdiAqICggdiArIDAuMDI0NTc4NiApIC0gMC4wMDAwOTA1Mzc7XG5cdHZlYzMgYiA9IHYgKiAoIDAuOTgzNzI5ICogdiArIDAuNDMyOTUxMCApICsgMC4yMzgwODE7XG5cdHJldHVybiBhIC8gYjtcbn1cbnZlYzMgQUNFU0ZpbG1pY1RvbmVNYXBwaW5nKCB2ZWMzIGNvbG9yICkge1xuXHRjb25zdCBtYXQzIEFDRVNJbnB1dE1hdCA9IG1hdDMoXG5cdFx0dmVjMyggMC41OTcxOSwgMC4wNzYwMCwgMC4wMjg0MCApLFx0XHR2ZWMzKCAwLjM1NDU4LCAwLjkwODM0LCAwLjEzMzgzICksXG5cdFx0dmVjMyggMC4wNDgyMywgMC4wMTU2NiwgMC44Mzc3NyApXG5cdCk7XG5cdGNvbnN0IG1hdDMgQUNFU091dHB1dE1hdCA9IG1hdDMoXG5cdFx0dmVjMyggIDEuNjA0NzUsIC0wLjEwMjA4LCAtMC4wMDMyNyApLFx0XHR2ZWMzKCAtMC41MzEwOCwgIDEuMTA4MTMsIC0wLjA3Mjc2ICksXG5cdFx0dmVjMyggLTAuMDczNjcsIC0wLjAwNjA1LCAgMS4wNzYwMiApXG5cdCk7XG5cdGNvbG9yICo9IHRvbmVNYXBwaW5nRXhwb3N1cmUgLyAwLjY7XG5cdGNvbG9yID0gQUNFU0lucHV0TWF0ICogY29sb3I7XG5cdGNvbG9yID0gUlJUQW5kT0RURml0KCBjb2xvciApO1xuXHRjb2xvciA9IEFDRVNPdXRwdXRNYXQgKiBjb2xvcjtcblx0cmV0dXJuIHNhdHVyYXRlKCBjb2xvciApO1xufVxudmVjMyBDdXN0b21Ub25lTWFwcGluZyggdmVjMyBjb2xvciApIHsgcmV0dXJuIGNvbG9yOyB9Iix0cmFuc21pc3Npb25fZnJhZ21lbnQ6IiNpZmRlZiBVU0VfVFJBTlNNSVNTSU9OXG5cdGZsb2F0IHRyYW5zbWlzc2lvbkZhY3RvciA9IHRyYW5zbWlzc2lvbjtcblx0ZmxvYXQgdGhpY2tuZXNzRmFjdG9yID0gdGhpY2tuZXNzO1xuXHQjaWZkZWYgVVNFX1RSQU5TTUlTU0lPTk1BUFxuXHRcdHRyYW5zbWlzc2lvbkZhY3RvciAqPSB0ZXh0dXJlMkQoIHRyYW5zbWlzc2lvbk1hcCwgdlV2ICkucjtcblx0I2VuZGlmXG5cdCNpZmRlZiBVU0VfVEhJQ0tORVNTTUFQXG5cdFx0dGhpY2tuZXNzRmFjdG9yICo9IHRleHR1cmUyRCggdGhpY2tuZXNzTWFwLCB2VXYgKS5nO1xuXHQjZW5kaWZcblx0dmVjMyBwb3MgPSB2V29ybGRQb3NpdGlvbi54eXogLyB2V29ybGRQb3NpdGlvbi53O1xuXHR2ZWMzIHYgPSBub3JtYWxpemUoIGNhbWVyYVBvc2l0aW9uIC0gcG9zICk7XG5cdHZlYzMgbiA9IGludmVyc2VUcmFuc2Zvcm1EaXJlY3Rpb24oIG5vcm1hbCwgdmlld01hdHJpeCApO1xuXHRmbG9hdCBpb3IgPSAoIDEuMCArIDAuNCAqIHJlZmxlY3Rpdml0eSApIC8gKCAxLjAgLSAwLjQgKiByZWZsZWN0aXZpdHkgKTtcblx0dmVjMyB0cmFuc21pc3Npb24gPSB0cmFuc21pc3Npb25GYWN0b3IgKiBnZXRJQkxWb2x1bWVSZWZyYWN0aW9uKFxuXHRcdG4sIHYsIHJvdWdobmVzc0ZhY3RvciwgbWF0ZXJpYWwuZGlmZnVzZUNvbG9yLCBtYXRlcmlhbC5zcGVjdWxhckNvbG9yLFxuXHRcdHBvcywgbW9kZWxNYXRyaXgsIHZpZXdNYXRyaXgsIHByb2plY3Rpb25NYXRyaXgsIGlvciwgdGhpY2tuZXNzRmFjdG9yLFxuXHRcdGF0dGVudWF0aW9uVGludCwgYXR0ZW51YXRpb25EaXN0YW5jZSApO1xuXHR0b3RhbERpZmZ1c2UgPSBtaXgoIHRvdGFsRGlmZnVzZSwgdHJhbnNtaXNzaW9uLCB0cmFuc21pc3Npb25GYWN0b3IgKTtcbiNlbmRpZiIsdHJhbnNtaXNzaW9uX3BhcnNfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfVFJBTlNNSVNTSU9OXG5cdCNpZmRlZiBVU0VfVFJBTlNNSVNTSU9OTUFQXG5cdFx0dW5pZm9ybSBzYW1wbGVyMkQgdHJhbnNtaXNzaW9uTWFwO1xuXHQjZW5kaWZcblx0I2lmZGVmIFVTRV9USElDS05FU1NNQVBcblx0XHR1bmlmb3JtIHNhbXBsZXIyRCB0aGlja25lc3NNYXA7XG5cdCNlbmRpZlxuXHR1bmlmb3JtIHZlYzIgdHJhbnNtaXNzaW9uU2FtcGxlclNpemU7XG5cdHVuaWZvcm0gc2FtcGxlcjJEIHRyYW5zbWlzc2lvblNhbXBsZXJNYXA7XG5cdHVuaWZvcm0gbWF0NCBtb2RlbE1hdHJpeDtcblx0dW5pZm9ybSBtYXQ0IHByb2plY3Rpb25NYXRyaXg7XG5cdHZhcnlpbmcgdmVjNCB2V29ybGRQb3NpdGlvbjtcblx0dmVjMyBnZXRWb2x1bWVUcmFuc21pc3Npb25SYXkodmVjMyBuLCB2ZWMzIHYsIGZsb2F0IHRoaWNrbmVzcywgZmxvYXQgaW9yLCBtYXQ0IG1vZGVsTWF0cml4KSB7XG5cdFx0dmVjMyByZWZyYWN0aW9uVmVjdG9yID0gcmVmcmFjdCgtdiwgbm9ybWFsaXplKG4pLCAxLjAgLyBpb3IpO1xuXHRcdHZlYzMgbW9kZWxTY2FsZTtcblx0XHRtb2RlbFNjYWxlLnggPSBsZW5ndGgodmVjMyhtb2RlbE1hdHJpeFswXS54eXopKTtcblx0XHRtb2RlbFNjYWxlLnkgPSBsZW5ndGgodmVjMyhtb2RlbE1hdHJpeFsxXS54eXopKTtcblx0XHRtb2RlbFNjYWxlLnogPSBsZW5ndGgodmVjMyhtb2RlbE1hdHJpeFsyXS54eXopKTtcblx0XHRyZXR1cm4gbm9ybWFsaXplKHJlZnJhY3Rpb25WZWN0b3IpICogdGhpY2tuZXNzICogbW9kZWxTY2FsZTtcblx0fVxuXHRmbG9hdCBhcHBseUlvclRvUm91Z2huZXNzKGZsb2F0IHJvdWdobmVzcywgZmxvYXQgaW9yKSB7XG5cdFx0cmV0dXJuIHJvdWdobmVzcyAqIGNsYW1wKGlvciAqIDIuMCAtIDIuMCwgMC4wLCAxLjApO1xuXHR9XG5cdHZlYzMgZ2V0VHJhbnNtaXNzaW9uU2FtcGxlKHZlYzIgZnJhZ0Nvb3JkLCBmbG9hdCByb3VnaG5lc3MsIGZsb2F0IGlvcikge1xuXHRcdGZsb2F0IGZyYW1lYnVmZmVyTG9kID0gbG9nMih0cmFuc21pc3Npb25TYW1wbGVyU2l6ZS54KSAqIGFwcGx5SW9yVG9Sb3VnaG5lc3Mocm91Z2huZXNzLCBpb3IpO1xuXHRcdHJldHVybiB0ZXh0dXJlMkRMb2RFWFQodHJhbnNtaXNzaW9uU2FtcGxlck1hcCwgZnJhZ0Nvb3JkLnh5LCBmcmFtZWJ1ZmZlckxvZCkucmdiO1xuXHR9XG5cdHZlYzMgYXBwbHlWb2x1bWVBdHRlbnVhdGlvbih2ZWMzIHJhZGlhbmNlLCBmbG9hdCB0cmFuc21pc3Npb25EaXN0YW5jZSwgdmVjMyBhdHRlbnVhdGlvbkNvbG9yLCBmbG9hdCBhdHRlbnVhdGlvbkRpc3RhbmNlKSB7XG5cdFx0aWYgKGF0dGVudWF0aW9uRGlzdGFuY2UgPT0gMC4wKSB7XG5cdFx0XHRyZXR1cm4gcmFkaWFuY2U7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHZlYzMgYXR0ZW51YXRpb25Db2VmZmljaWVudCA9IC1sb2coYXR0ZW51YXRpb25Db2xvcikgLyBhdHRlbnVhdGlvbkRpc3RhbmNlO1xuXHRcdFx0dmVjMyB0cmFuc21pdHRhbmNlID0gZXhwKC1hdHRlbnVhdGlvbkNvZWZmaWNpZW50ICogdHJhbnNtaXNzaW9uRGlzdGFuY2UpO1x0XHRcdHJldHVybiB0cmFuc21pdHRhbmNlICogcmFkaWFuY2U7XG5cdFx0fVxuXHR9XG5cdHZlYzMgZ2V0SUJMVm9sdW1lUmVmcmFjdGlvbih2ZWMzIG4sIHZlYzMgdiwgZmxvYXQgcGVyY2VwdHVhbFJvdWdobmVzcywgdmVjMyBiYXNlQ29sb3IsIHZlYzMgc3BlY3VsYXJDb2xvcixcblx0XHR2ZWMzIHBvc2l0aW9uLCBtYXQ0IG1vZGVsTWF0cml4LCBtYXQ0IHZpZXdNYXRyaXgsIG1hdDQgcHJvak1hdHJpeCwgZmxvYXQgaW9yLCBmbG9hdCB0aGlja25lc3MsXG5cdFx0dmVjMyBhdHRlbnVhdGlvbkNvbG9yLCBmbG9hdCBhdHRlbnVhdGlvbkRpc3RhbmNlKSB7XG5cdFx0dmVjMyB0cmFuc21pc3Npb25SYXkgPSBnZXRWb2x1bWVUcmFuc21pc3Npb25SYXkobiwgdiwgdGhpY2tuZXNzLCBpb3IsIG1vZGVsTWF0cml4KTtcblx0XHR2ZWMzIHJlZnJhY3RlZFJheUV4aXQgPSBwb3NpdGlvbiArIHRyYW5zbWlzc2lvblJheTtcblx0XHR2ZWM0IG5kY1BvcyA9IHByb2pNYXRyaXggKiB2aWV3TWF0cml4ICogdmVjNChyZWZyYWN0ZWRSYXlFeGl0LCAxLjApO1xuXHRcdHZlYzIgcmVmcmFjdGlvbkNvb3JkcyA9IG5kY1Bvcy54eSAvIG5kY1Bvcy53O1xuXHRcdHJlZnJhY3Rpb25Db29yZHMgKz0gMS4wO1xuXHRcdHJlZnJhY3Rpb25Db29yZHMgLz0gMi4wO1xuXHRcdHZlYzMgdHJhbnNtaXR0ZWRMaWdodCA9IGdldFRyYW5zbWlzc2lvblNhbXBsZShyZWZyYWN0aW9uQ29vcmRzLCBwZXJjZXB0dWFsUm91Z2huZXNzLCBpb3IpO1xuXHRcdHZlYzMgYXR0ZW51YXRlZENvbG9yID0gYXBwbHlWb2x1bWVBdHRlbnVhdGlvbih0cmFuc21pdHRlZExpZ2h0LCBsZW5ndGgodHJhbnNtaXNzaW9uUmF5KSwgYXR0ZW51YXRpb25Db2xvciwgYXR0ZW51YXRpb25EaXN0YW5jZSk7XG5cdFx0cmV0dXJuICgxLjAgLSBzcGVjdWxhckNvbG9yKSAqIGF0dGVudWF0ZWRDb2xvciAqIGJhc2VDb2xvcjtcblx0fVxuI2VuZGlmIix1dl9wYXJzX2ZyYWdtZW50OiIjaWYgKCBkZWZpbmVkKCBVU0VfVVYgKSAmJiAhIGRlZmluZWQoIFVWU19WRVJURVhfT05MWSApIClcblx0dmFyeWluZyB2ZWMyIHZVdjtcbiNlbmRpZiIsdXZfcGFyc192ZXJ0ZXg6IiNpZmRlZiBVU0VfVVZcblx0I2lmZGVmIFVWU19WRVJURVhfT05MWVxuXHRcdHZlYzIgdlV2O1xuXHQjZWxzZVxuXHRcdHZhcnlpbmcgdmVjMiB2VXY7XG5cdCNlbmRpZlxuXHR1bmlmb3JtIG1hdDMgdXZUcmFuc2Zvcm07XG4jZW5kaWYiLHV2X3ZlcnRleDoiI2lmZGVmIFVTRV9VVlxuXHR2VXYgPSAoIHV2VHJhbnNmb3JtICogdmVjMyggdXYsIDEgKSApLnh5O1xuI2VuZGlmIix1djJfcGFyc19mcmFnbWVudDoiI2lmIGRlZmluZWQoIFVTRV9MSUdIVE1BUCApIHx8IGRlZmluZWQoIFVTRV9BT01BUCApXG5cdHZhcnlpbmcgdmVjMiB2VXYyO1xuI2VuZGlmIix1djJfcGFyc192ZXJ0ZXg6IiNpZiBkZWZpbmVkKCBVU0VfTElHSFRNQVAgKSB8fCBkZWZpbmVkKCBVU0VfQU9NQVAgKVxuXHRhdHRyaWJ1dGUgdmVjMiB1djI7XG5cdHZhcnlpbmcgdmVjMiB2VXYyO1xuXHR1bmlmb3JtIG1hdDMgdXYyVHJhbnNmb3JtO1xuI2VuZGlmIix1djJfdmVydGV4OiIjaWYgZGVmaW5lZCggVVNFX0xJR0hUTUFQICkgfHwgZGVmaW5lZCggVVNFX0FPTUFQIClcblx0dlV2MiA9ICggdXYyVHJhbnNmb3JtICogdmVjMyggdXYyLCAxICkgKS54eTtcbiNlbmRpZiIsd29ybGRwb3NfdmVydGV4OiIjaWYgZGVmaW5lZCggVVNFX0VOVk1BUCApIHx8IGRlZmluZWQoIERJU1RBTkNFICkgfHwgZGVmaW5lZCAoIFVTRV9TSEFET1dNQVAgKSB8fCBkZWZpbmVkICggVVNFX1RSQU5TTUlTU0lPTiApXG5cdHZlYzQgd29ybGRQb3NpdGlvbiA9IHZlYzQoIHRyYW5zZm9ybWVkLCAxLjAgKTtcblx0I2lmZGVmIFVTRV9JTlNUQU5DSU5HXG5cdFx0d29ybGRQb3NpdGlvbiA9IGluc3RhbmNlTWF0cml4ICogd29ybGRQb3NpdGlvbjtcblx0I2VuZGlmXG5cdHdvcmxkUG9zaXRpb24gPSBtb2RlbE1hdHJpeCAqIHdvcmxkUG9zaXRpb247XG4jZW5kaWYiLGJhY2tncm91bmRfZnJhZzoidW5pZm9ybSBzYW1wbGVyMkQgdDJEO1xudmFyeWluZyB2ZWMyIHZVdjtcbnZvaWQgbWFpbigpIHtcblx0dmVjNCB0ZXhDb2xvciA9IHRleHR1cmUyRCggdDJELCB2VXYgKTtcblx0Z2xfRnJhZ0NvbG9yID0gbWFwVGV4ZWxUb0xpbmVhciggdGV4Q29sb3IgKTtcblx0I2luY2x1ZGUgPHRvbmVtYXBwaW5nX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8ZW5jb2RpbmdzX2ZyYWdtZW50PlxufSIsYmFja2dyb3VuZF92ZXJ0OiJ2YXJ5aW5nIHZlYzIgdlV2O1xudW5pZm9ybSBtYXQzIHV2VHJhbnNmb3JtO1xudm9pZCBtYWluKCkge1xuXHR2VXYgPSAoIHV2VHJhbnNmb3JtICogdmVjMyggdXYsIDEgKSApLnh5O1xuXHRnbF9Qb3NpdGlvbiA9IHZlYzQoIHBvc2l0aW9uLnh5LCAxLjAsIDEuMCApO1xufSIsY3ViZV9mcmFnOiIjaW5jbHVkZSA8ZW52bWFwX2NvbW1vbl9wYXJzX2ZyYWdtZW50PlxudW5pZm9ybSBmbG9hdCBvcGFjaXR5O1xudmFyeWluZyB2ZWMzIHZXb3JsZERpcmVjdGlvbjtcbiNpbmNsdWRlIDxjdWJlX3V2X3JlZmxlY3Rpb25fZnJhZ21lbnQ+XG52b2lkIG1haW4oKSB7XG5cdHZlYzMgdlJlZmxlY3QgPSB2V29ybGREaXJlY3Rpb247XG5cdCNpbmNsdWRlIDxlbnZtYXBfZnJhZ21lbnQ+XG5cdGdsX0ZyYWdDb2xvciA9IGVudkNvbG9yO1xuXHRnbF9GcmFnQ29sb3IuYSAqPSBvcGFjaXR5O1xuXHQjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxlbmNvZGluZ3NfZnJhZ21lbnQ+XG59IixjdWJlX3ZlcnQ6InZhcnlpbmcgdmVjMyB2V29ybGREaXJlY3Rpb247XG4jaW5jbHVkZSA8Y29tbW9uPlxudm9pZCBtYWluKCkge1xuXHR2V29ybGREaXJlY3Rpb24gPSB0cmFuc2Zvcm1EaXJlY3Rpb24oIHBvc2l0aW9uLCBtb2RlbE1hdHJpeCApO1xuXHQjaW5jbHVkZSA8YmVnaW5fdmVydGV4PlxuXHQjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+XG5cdGdsX1Bvc2l0aW9uLnogPSBnbF9Qb3NpdGlvbi53O1xufSIsZGVwdGhfZnJhZzoiI2lmIERFUFRIX1BBQ0tJTkcgPT0gMzIwMFxuXHR1bmlmb3JtIGZsb2F0IG9wYWNpdHk7XG4jZW5kaWZcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8cGFja2luZz5cbiNpbmNsdWRlIDx1dl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGFscGhhbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc19mcmFnbWVudD5cbnZhcnlpbmcgdmVjMiB2SGlnaFByZWNpc2lvblpXO1xudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX2ZyYWdtZW50PlxuXHR2ZWM0IGRpZmZ1c2VDb2xvciA9IHZlYzQoIDEuMCApO1xuXHQjaWYgREVQVEhfUEFDS0lORyA9PSAzMjAwXG5cdFx0ZGlmZnVzZUNvbG9yLmEgPSBvcGFjaXR5O1xuXHQjZW5kaWZcblx0I2luY2x1ZGUgPG1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGFscGhhbWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8YWxwaGF0ZXN0X2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfZnJhZ21lbnQ+XG5cdGZsb2F0IGZyYWdDb29yZFogPSAwLjUgKiB2SGlnaFByZWNpc2lvblpXWzBdIC8gdkhpZ2hQcmVjaXNpb25aV1sxXSArIDAuNTtcblx0I2lmIERFUFRIX1BBQ0tJTkcgPT0gMzIwMFxuXHRcdGdsX0ZyYWdDb2xvciA9IHZlYzQoIHZlYzMoIDEuMCAtIGZyYWdDb29yZFogKSwgb3BhY2l0eSApO1xuXHQjZWxpZiBERVBUSF9QQUNLSU5HID09IDMyMDFcblx0XHRnbF9GcmFnQ29sb3IgPSBwYWNrRGVwdGhUb1JHQkEoIGZyYWdDb29yZFogKTtcblx0I2VuZGlmXG59IixkZXB0aF92ZXJ0OiIjaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPHV2X3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGRpc3BsYWNlbWVudG1hcF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxtb3JwaHRhcmdldF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxza2lubmluZ19wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc192ZXJ0ZXg+XG52YXJ5aW5nIHZlYzIgdkhpZ2hQcmVjaXNpb25aVztcbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPHV2X3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5iYXNlX3ZlcnRleD5cblx0I2lmZGVmIFVTRV9ESVNQTEFDRU1FTlRNQVBcblx0XHQjaW5jbHVkZSA8YmVnaW5ub3JtYWxfdmVydGV4PlxuXHRcdCNpbmNsdWRlIDxtb3JwaG5vcm1hbF92ZXJ0ZXg+XG5cdFx0I2luY2x1ZGUgPHNraW5ub3JtYWxfdmVydGV4PlxuXHQjZW5kaWZcblx0I2luY2x1ZGUgPGJlZ2luX3ZlcnRleD5cblx0I2luY2x1ZGUgPG1vcnBodGFyZ2V0X3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5uaW5nX3ZlcnRleD5cblx0I2luY2x1ZGUgPGRpc3BsYWNlbWVudG1hcF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD5cblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3ZlcnRleD5cblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc192ZXJ0ZXg+XG5cdHZIaWdoUHJlY2lzaW9uWlcgPSBnbF9Qb3NpdGlvbi56dztcbn0iLGRpc3RhbmNlUkdCQV9mcmFnOiIjZGVmaW5lIERJU1RBTkNFXG51bmlmb3JtIHZlYzMgcmVmZXJlbmNlUG9zaXRpb247XG51bmlmb3JtIGZsb2F0IG5lYXJEaXN0YW5jZTtcbnVuaWZvcm0gZmxvYXQgZmFyRGlzdGFuY2U7XG52YXJ5aW5nIHZlYzMgdldvcmxkUG9zaXRpb247XG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPHBhY2tpbmc+XG4jaW5jbHVkZSA8dXZfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxhbHBoYW1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX2ZyYWdtZW50Plxudm9pZCBtYWluICgpIHtcblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19mcmFnbWVudD5cblx0dmVjNCBkaWZmdXNlQ29sb3IgPSB2ZWM0KCAxLjAgKTtcblx0I2luY2x1ZGUgPG1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGFscGhhbWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8YWxwaGF0ZXN0X2ZyYWdtZW50PlxuXHRmbG9hdCBkaXN0ID0gbGVuZ3RoKCB2V29ybGRQb3NpdGlvbiAtIHJlZmVyZW5jZVBvc2l0aW9uICk7XG5cdGRpc3QgPSAoIGRpc3QgLSBuZWFyRGlzdGFuY2UgKSAvICggZmFyRGlzdGFuY2UgLSBuZWFyRGlzdGFuY2UgKTtcblx0ZGlzdCA9IHNhdHVyYXRlKCBkaXN0ICk7XG5cdGdsX0ZyYWdDb2xvciA9IHBhY2tEZXB0aFRvUkdCQSggZGlzdCApO1xufSIsZGlzdGFuY2VSR0JBX3ZlcnQ6IiNkZWZpbmUgRElTVEFOQ0VcbnZhcnlpbmcgdmVjMyB2V29ybGRQb3NpdGlvbjtcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8dXZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8ZGlzcGxhY2VtZW50bWFwX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPG1vcnBodGFyZ2V0X3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPHNraW5uaW5nX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX3ZlcnRleD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPHV2X3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5iYXNlX3ZlcnRleD5cblx0I2lmZGVmIFVTRV9ESVNQTEFDRU1FTlRNQVBcblx0XHQjaW5jbHVkZSA8YmVnaW5ub3JtYWxfdmVydGV4PlxuXHRcdCNpbmNsdWRlIDxtb3JwaG5vcm1hbF92ZXJ0ZXg+XG5cdFx0I2luY2x1ZGUgPHNraW5ub3JtYWxfdmVydGV4PlxuXHQjZW5kaWZcblx0I2luY2x1ZGUgPGJlZ2luX3ZlcnRleD5cblx0I2luY2x1ZGUgPG1vcnBodGFyZ2V0X3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5uaW5nX3ZlcnRleD5cblx0I2luY2x1ZGUgPGRpc3BsYWNlbWVudG1hcF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD5cblx0I2luY2x1ZGUgPHdvcmxkcG9zX3ZlcnRleD5cblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc192ZXJ0ZXg+XG5cdHZXb3JsZFBvc2l0aW9uID0gd29ybGRQb3NpdGlvbi54eXo7XG59IixlcXVpcmVjdF9mcmFnOiJ1bmlmb3JtIHNhbXBsZXIyRCB0RXF1aXJlY3Q7XG52YXJ5aW5nIHZlYzMgdldvcmxkRGlyZWN0aW9uO1xuI2luY2x1ZGUgPGNvbW1vbj5cbnZvaWQgbWFpbigpIHtcblx0dmVjMyBkaXJlY3Rpb24gPSBub3JtYWxpemUoIHZXb3JsZERpcmVjdGlvbiApO1xuXHR2ZWMyIHNhbXBsZVVWID0gZXF1aXJlY3RVdiggZGlyZWN0aW9uICk7XG5cdHZlYzQgdGV4Q29sb3IgPSB0ZXh0dXJlMkQoIHRFcXVpcmVjdCwgc2FtcGxlVVYgKTtcblx0Z2xfRnJhZ0NvbG9yID0gbWFwVGV4ZWxUb0xpbmVhciggdGV4Q29sb3IgKTtcblx0I2luY2x1ZGUgPHRvbmVtYXBwaW5nX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8ZW5jb2RpbmdzX2ZyYWdtZW50PlxufSIsZXF1aXJlY3RfdmVydDoidmFyeWluZyB2ZWMzIHZXb3JsZERpcmVjdGlvbjtcbiNpbmNsdWRlIDxjb21tb24+XG52b2lkIG1haW4oKSB7XG5cdHZXb3JsZERpcmVjdGlvbiA9IHRyYW5zZm9ybURpcmVjdGlvbiggcG9zaXRpb24sIG1vZGVsTWF0cml4ICk7XG5cdCNpbmNsdWRlIDxiZWdpbl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD5cbn0iLGxpbmVkYXNoZWRfZnJhZzoidW5pZm9ybSB2ZWMzIGRpZmZ1c2U7XG51bmlmb3JtIGZsb2F0IG9wYWNpdHk7XG51bmlmb3JtIGZsb2F0IGRhc2hTaXplO1xudW5pZm9ybSBmbG9hdCB0b3RhbFNpemU7XG52YXJ5aW5nIGZsb2F0IHZMaW5lRGlzdGFuY2U7XG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPGNvbG9yX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Zm9nX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc19mcmFnbWVudD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19mcmFnbWVudD5cblx0aWYgKCBtb2QoIHZMaW5lRGlzdGFuY2UsIHRvdGFsU2l6ZSApID4gZGFzaFNpemUgKSB7XG5cdFx0ZGlzY2FyZDtcblx0fVxuXHR2ZWMzIG91dGdvaW5nTGlnaHQgPSB2ZWMzKCAwLjAgKTtcblx0dmVjNCBkaWZmdXNlQ29sb3IgPSB2ZWM0KCBkaWZmdXNlLCBvcGFjaXR5ICk7XG5cdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGNvbG9yX2ZyYWdtZW50PlxuXHRvdXRnb2luZ0xpZ2h0ID0gZGlmZnVzZUNvbG9yLnJnYjtcblx0Z2xfRnJhZ0NvbG9yID0gdmVjNCggb3V0Z29pbmdMaWdodCwgZGlmZnVzZUNvbG9yLmEgKTtcblx0I2luY2x1ZGUgPHRvbmVtYXBwaW5nX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8ZW5jb2RpbmdzX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8Zm9nX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8cHJlbXVsdGlwbGllZF9hbHBoYV9mcmFnbWVudD5cbn0iLGxpbmVkYXNoZWRfdmVydDoidW5pZm9ybSBmbG9hdCBzY2FsZTtcbmF0dHJpYnV0ZSBmbG9hdCBsaW5lRGlzdGFuY2U7XG52YXJ5aW5nIGZsb2F0IHZMaW5lRGlzdGFuY2U7XG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPGNvbG9yX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGZvZ19wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxtb3JwaHRhcmdldF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc192ZXJ0ZXg+XG52b2lkIG1haW4oKSB7XG5cdHZMaW5lRGlzdGFuY2UgPSBzY2FsZSAqIGxpbmVEaXN0YW5jZTtcblx0I2luY2x1ZGUgPGNvbG9yX3ZlcnRleD5cblx0I2luY2x1ZGUgPGJlZ2luX3ZlcnRleD5cblx0I2luY2x1ZGUgPG1vcnBodGFyZ2V0X3ZlcnRleD5cblx0I2luY2x1ZGUgPHByb2plY3RfdmVydGV4PlxuXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfdmVydGV4PlxuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3ZlcnRleD5cblx0I2luY2x1ZGUgPGZvZ192ZXJ0ZXg+XG59IixtZXNoYmFzaWNfZnJhZzoidW5pZm9ybSB2ZWMzIGRpZmZ1c2U7XG51bmlmb3JtIGZsb2F0IG9wYWNpdHk7XG4jaWZuZGVmIEZMQVRfU0hBREVEXG5cdHZhcnlpbmcgdmVjMyB2Tm9ybWFsO1xuI2VuZGlmXG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPGRpdGhlcmluZ19wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGNvbG9yX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8dXZfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDx1djJfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxhbHBoYW1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGFvbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bGlnaHRtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxlbnZtYXBfY29tbW9uX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8ZW52bWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Y3ViZV91dl9yZWZsZWN0aW9uX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGZvZ19wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHNwZWN1bGFybWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc19mcmFnbWVudD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19mcmFnbWVudD5cblx0dmVjNCBkaWZmdXNlQ29sb3IgPSB2ZWM0KCBkaWZmdXNlLCBvcGFjaXR5ICk7XG5cdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9mcmFnbWVudD5cblx0I2luY2x1ZGUgPG1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGNvbG9yX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8YWxwaGFtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxhbHBoYXRlc3RfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxzcGVjdWxhcm1hcF9mcmFnbWVudD5cblx0UmVmbGVjdGVkTGlnaHQgcmVmbGVjdGVkTGlnaHQgPSBSZWZsZWN0ZWRMaWdodCggdmVjMyggMC4wICksIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICkgKTtcblx0I2lmZGVmIFVTRV9MSUdIVE1BUFxuXHRcblx0XHR2ZWM0IGxpZ2h0TWFwVGV4ZWw9IHRleHR1cmUyRCggbGlnaHRNYXAsIHZVdjIgKTtcblx0XHRyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKz0gbGlnaHRNYXBUZXhlbFRvTGluZWFyKCBsaWdodE1hcFRleGVsICkucmdiICogbGlnaHRNYXBJbnRlbnNpdHk7XG5cdCNlbHNlXG5cdFx0cmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICs9IHZlYzMoIDEuMCApO1xuXHQjZW5kaWZcblx0I2luY2x1ZGUgPGFvbWFwX2ZyYWdtZW50PlxuXHRyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKj0gZGlmZnVzZUNvbG9yLnJnYjtcblx0dmVjMyBvdXRnb2luZ0xpZ2h0ID0gcmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlO1xuXHQjaW5jbHVkZSA8ZW52bWFwX2ZyYWdtZW50PlxuXHRnbF9GcmFnQ29sb3IgPSB2ZWM0KCBvdXRnb2luZ0xpZ2h0LCBkaWZmdXNlQ29sb3IuYSApO1xuXHQjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxlbmNvZGluZ3NfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxmb2dfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxwcmVtdWx0aXBsaWVkX2FscGhhX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8ZGl0aGVyaW5nX2ZyYWdtZW50PlxufSIsbWVzaGJhc2ljX3ZlcnQ6IiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8dXZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8dXYyX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGVudm1hcF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxjb2xvcl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxmb2dfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bW9ycGh0YXJnZXRfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8c2tpbm5pbmdfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfdmVydGV4Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8dXZfdmVydGV4PlxuXHQjaW5jbHVkZSA8dXYyX3ZlcnRleD5cblx0I2luY2x1ZGUgPGNvbG9yX3ZlcnRleD5cblx0I2lmIGRlZmluZWQgKCBVU0VfRU5WTUFQICkgfHwgZGVmaW5lZCAoIFVTRV9TS0lOTklORyApXG5cdFx0I2luY2x1ZGUgPGJlZ2lubm9ybWFsX3ZlcnRleD5cblx0XHQjaW5jbHVkZSA8bW9ycGhub3JtYWxfdmVydGV4PlxuXHRcdCNpbmNsdWRlIDxza2luYmFzZV92ZXJ0ZXg+XG5cdFx0I2luY2x1ZGUgPHNraW5ub3JtYWxfdmVydGV4PlxuXHRcdCNpbmNsdWRlIDxkZWZhdWx0bm9ybWFsX3ZlcnRleD5cblx0I2VuZGlmXG5cdCNpbmNsdWRlIDxiZWdpbl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxtb3JwaHRhcmdldF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2lubmluZ192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD5cblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3ZlcnRleD5cblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDx3b3JsZHBvc192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxlbnZtYXBfdmVydGV4PlxuXHQjaW5jbHVkZSA8Zm9nX3ZlcnRleD5cbn0iLG1lc2hsYW1iZXJ0X2ZyYWc6InVuaWZvcm0gdmVjMyBkaWZmdXNlO1xudW5pZm9ybSB2ZWMzIGVtaXNzaXZlO1xudW5pZm9ybSBmbG9hdCBvcGFjaXR5O1xudmFyeWluZyB2ZWMzIHZMaWdodEZyb250O1xudmFyeWluZyB2ZWMzIHZJbmRpcmVjdEZyb250O1xuI2lmZGVmIERPVUJMRV9TSURFRFxuXHR2YXJ5aW5nIHZlYzMgdkxpZ2h0QmFjaztcblx0dmFyeWluZyB2ZWMzIHZJbmRpcmVjdEJhY2s7XG4jZW5kaWZcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8cGFja2luZz5cbiNpbmNsdWRlIDxkaXRoZXJpbmdfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjb2xvcl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHV2X3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8dXYyX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YWxwaGFtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxhb21hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGxpZ2h0bWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8ZW1pc3NpdmVtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxlbnZtYXBfY29tbW9uX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8ZW52bWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Y3ViZV91dl9yZWZsZWN0aW9uX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGJzZGZzPlxuI2luY2x1ZGUgPGxpZ2h0c19wYXJzX2JlZ2luPlxuI2luY2x1ZGUgPGZvZ19wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHNoYWRvd21hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHNoYWRvd21hc2tfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxzcGVjdWxhcm1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfZnJhZ21lbnQ+XG52b2lkIG1haW4oKSB7XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfZnJhZ21lbnQ+XG5cdHZlYzQgZGlmZnVzZUNvbG9yID0gdmVjNCggZGlmZnVzZSwgb3BhY2l0eSApO1xuXHRSZWZsZWN0ZWRMaWdodCByZWZsZWN0ZWRMaWdodCA9IFJlZmxlY3RlZExpZ2h0KCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICksIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSApO1xuXHR2ZWMzIHRvdGFsRW1pc3NpdmVSYWRpYW5jZSA9IGVtaXNzaXZlO1xuXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxjb2xvcl9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGFscGhhbWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8YWxwaGF0ZXN0X2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8c3BlY3VsYXJtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxlbWlzc2l2ZW1hcF9mcmFnbWVudD5cblx0I2lmZGVmIERPVUJMRV9TSURFRFxuXHRcdHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZSArPSAoIGdsX0Zyb250RmFjaW5nICkgPyB2SW5kaXJlY3RGcm9udCA6IHZJbmRpcmVjdEJhY2s7XG5cdCNlbHNlXG5cdFx0cmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICs9IHZJbmRpcmVjdEZyb250O1xuXHQjZW5kaWZcblx0I2luY2x1ZGUgPGxpZ2h0bWFwX2ZyYWdtZW50PlxuXHRyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKj0gQlJERl9EaWZmdXNlX0xhbWJlcnQoIGRpZmZ1c2VDb2xvci5yZ2IgKTtcblx0I2lmZGVmIERPVUJMRV9TSURFRFxuXHRcdHJlZmxlY3RlZExpZ2h0LmRpcmVjdERpZmZ1c2UgPSAoIGdsX0Zyb250RmFjaW5nICkgPyB2TGlnaHRGcm9udCA6IHZMaWdodEJhY2s7XG5cdCNlbHNlXG5cdFx0cmVmbGVjdGVkTGlnaHQuZGlyZWN0RGlmZnVzZSA9IHZMaWdodEZyb250O1xuXHQjZW5kaWZcblx0cmVmbGVjdGVkTGlnaHQuZGlyZWN0RGlmZnVzZSAqPSBCUkRGX0RpZmZ1c2VfTGFtYmVydCggZGlmZnVzZUNvbG9yLnJnYiApICogZ2V0U2hhZG93TWFzaygpO1xuXHQjaW5jbHVkZSA8YW9tYXBfZnJhZ21lbnQ+XG5cdHZlYzMgb3V0Z29pbmdMaWdodCA9IHJlZmxlY3RlZExpZ2h0LmRpcmVjdERpZmZ1c2UgKyByZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKyB0b3RhbEVtaXNzaXZlUmFkaWFuY2U7XG5cdCNpbmNsdWRlIDxlbnZtYXBfZnJhZ21lbnQ+XG5cdGdsX0ZyYWdDb2xvciA9IHZlYzQoIG91dGdvaW5nTGlnaHQsIGRpZmZ1c2VDb2xvci5hICk7XG5cdCNpbmNsdWRlIDx0b25lbWFwcGluZ19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGVuY29kaW5nc19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGZvZ19mcmFnbWVudD5cblx0I2luY2x1ZGUgPHByZW11bHRpcGxpZWRfYWxwaGFfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxkaXRoZXJpbmdfZnJhZ21lbnQ+XG59IixtZXNobGFtYmVydF92ZXJ0OiIjZGVmaW5lIExBTUJFUlRcbnZhcnlpbmcgdmVjMyB2TGlnaHRGcm9udDtcbnZhcnlpbmcgdmVjMyB2SW5kaXJlY3RGcm9udDtcbiNpZmRlZiBET1VCTEVfU0lERURcblx0dmFyeWluZyB2ZWMzIHZMaWdodEJhY2s7XG5cdHZhcnlpbmcgdmVjMyB2SW5kaXJlY3RCYWNrO1xuI2VuZGlmXG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPHV2X3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPHV2Ml9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxlbnZtYXBfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8YnNkZnM+XG4jaW5jbHVkZSA8bGlnaHRzX3BhcnNfYmVnaW4+XG4jaW5jbHVkZSA8Y29sb3JfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Zm9nX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPG1vcnBodGFyZ2V0X3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPHNraW5uaW5nX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPHNoYWRvd21hcF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc192ZXJ0ZXg+XG52b2lkIG1haW4oKSB7XG5cdCNpbmNsdWRlIDx1dl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDx1djJfdmVydGV4PlxuXHQjaW5jbHVkZSA8Y29sb3JfdmVydGV4PlxuXHQjaW5jbHVkZSA8YmVnaW5ub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8bW9ycGhub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbmJhc2VfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbm5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxkZWZhdWx0bm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPGJlZ2luX3ZlcnRleD5cblx0I2luY2x1ZGUgPG1vcnBodGFyZ2V0X3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5uaW5nX3ZlcnRleD5cblx0I2luY2x1ZGUgPHByb2plY3RfdmVydGV4PlxuXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfdmVydGV4PlxuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3ZlcnRleD5cblx0I2luY2x1ZGUgPHdvcmxkcG9zX3ZlcnRleD5cblx0I2luY2x1ZGUgPGVudm1hcF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxsaWdodHNfbGFtYmVydF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxzaGFkb3dtYXBfdmVydGV4PlxuXHQjaW5jbHVkZSA8Zm9nX3ZlcnRleD5cbn0iLG1lc2htYXRjYXBfZnJhZzoiI2RlZmluZSBNQVRDQVBcbnVuaWZvcm0gdmVjMyBkaWZmdXNlO1xudW5pZm9ybSBmbG9hdCBvcGFjaXR5O1xudW5pZm9ybSBzYW1wbGVyMkQgbWF0Y2FwO1xudmFyeWluZyB2ZWMzIHZWaWV3UG9zaXRpb247XG4jaWZuZGVmIEZMQVRfU0hBREVEXG5cdHZhcnlpbmcgdmVjMyB2Tm9ybWFsO1xuXHQjaWZkZWYgVVNFX1RBTkdFTlRcblx0XHR2YXJ5aW5nIHZlYzMgdlRhbmdlbnQ7XG5cdFx0dmFyeWluZyB2ZWMzIHZCaXRhbmdlbnQ7XG5cdCNlbmRpZlxuI2VuZGlmXG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPGRpdGhlcmluZ19wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGNvbG9yX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8dXZfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxhbHBoYW1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGZvZ19wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGJ1bXBtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxub3JtYWxtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX2ZyYWdtZW50Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX2ZyYWdtZW50PlxuXHR2ZWM0IGRpZmZ1c2VDb2xvciA9IHZlYzQoIGRpZmZ1c2UsIG9wYWNpdHkgKTtcblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8Y29sb3JfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxhbHBoYW1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGFscGhhdGVzdF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPG5vcm1hbF9mcmFnbWVudF9iZWdpbj5cblx0I2luY2x1ZGUgPG5vcm1hbF9mcmFnbWVudF9tYXBzPlxuXHR2ZWMzIHZpZXdEaXIgPSBub3JtYWxpemUoIHZWaWV3UG9zaXRpb24gKTtcblx0dmVjMyB4ID0gbm9ybWFsaXplKCB2ZWMzKCB2aWV3RGlyLnosIDAuMCwgLSB2aWV3RGlyLnggKSApO1xuXHR2ZWMzIHkgPSBjcm9zcyggdmlld0RpciwgeCApO1xuXHR2ZWMyIHV2ID0gdmVjMiggZG90KCB4LCBub3JtYWwgKSwgZG90KCB5LCBub3JtYWwgKSApICogMC40OTUgKyAwLjU7XG5cdCNpZmRlZiBVU0VfTUFUQ0FQXG5cdFx0dmVjNCBtYXRjYXBDb2xvciA9IHRleHR1cmUyRCggbWF0Y2FwLCB1diApO1xuXHRcdG1hdGNhcENvbG9yID0gbWF0Y2FwVGV4ZWxUb0xpbmVhciggbWF0Y2FwQ29sb3IgKTtcblx0I2Vsc2Vcblx0XHR2ZWM0IG1hdGNhcENvbG9yID0gdmVjNCggMS4wICk7XG5cdCNlbmRpZlxuXHR2ZWMzIG91dGdvaW5nTGlnaHQgPSBkaWZmdXNlQ29sb3IucmdiICogbWF0Y2FwQ29sb3IucmdiO1xuXHRnbF9GcmFnQ29sb3IgPSB2ZWM0KCBvdXRnb2luZ0xpZ2h0LCBkaWZmdXNlQ29sb3IuYSApO1xuXHQjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxlbmNvZGluZ3NfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxmb2dfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxwcmVtdWx0aXBsaWVkX2FscGhhX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8ZGl0aGVyaW5nX2ZyYWdtZW50PlxufSIsbWVzaG1hdGNhcF92ZXJ0OiIjZGVmaW5lIE1BVENBUFxudmFyeWluZyB2ZWMzIHZWaWV3UG9zaXRpb247XG4jaWZuZGVmIEZMQVRfU0hBREVEXG5cdHZhcnlpbmcgdmVjMyB2Tm9ybWFsO1xuXHQjaWZkZWYgVVNFX1RBTkdFTlRcblx0XHR2YXJ5aW5nIHZlYzMgdlRhbmdlbnQ7XG5cdFx0dmFyeWluZyB2ZWMzIHZCaXRhbmdlbnQ7XG5cdCNlbmRpZlxuI2VuZGlmXG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPHV2X3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGNvbG9yX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGRpc3BsYWNlbWVudG1hcF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxmb2dfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bW9ycGh0YXJnZXRfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8c2tpbm5pbmdfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfdmVydGV4Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8dXZfdmVydGV4PlxuXHQjaW5jbHVkZSA8Y29sb3JfdmVydGV4PlxuXHQjaW5jbHVkZSA8YmVnaW5ub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8bW9ycGhub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbmJhc2VfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbm5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxkZWZhdWx0bm9ybWFsX3ZlcnRleD5cblx0I2lmbmRlZiBGTEFUX1NIQURFRFxuXHRcdHZOb3JtYWwgPSBub3JtYWxpemUoIHRyYW5zZm9ybWVkTm9ybWFsICk7XG5cdFx0I2lmZGVmIFVTRV9UQU5HRU5UXG5cdFx0XHR2VGFuZ2VudCA9IG5vcm1hbGl6ZSggdHJhbnNmb3JtZWRUYW5nZW50ICk7XG5cdFx0XHR2Qml0YW5nZW50ID0gbm9ybWFsaXplKCBjcm9zcyggdk5vcm1hbCwgdlRhbmdlbnQgKSAqIHRhbmdlbnQudyApO1xuXHRcdCNlbmRpZlxuXHQjZW5kaWZcblx0I2luY2x1ZGUgPGJlZ2luX3ZlcnRleD5cblx0I2luY2x1ZGUgPG1vcnBodGFyZ2V0X3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5uaW5nX3ZlcnRleD5cblx0I2luY2x1ZGUgPGRpc3BsYWNlbWVudG1hcF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD5cblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3ZlcnRleD5cblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxmb2dfdmVydGV4PlxuXHR2Vmlld1Bvc2l0aW9uID0gLSBtdlBvc2l0aW9uLnh5ejtcbn0iLG1lc2h0b29uX2ZyYWc6IiNkZWZpbmUgVE9PTlxudW5pZm9ybSB2ZWMzIGRpZmZ1c2U7XG51bmlmb3JtIHZlYzMgZW1pc3NpdmU7XG51bmlmb3JtIGZsb2F0IG9wYWNpdHk7XG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPHBhY2tpbmc+XG4jaW5jbHVkZSA8ZGl0aGVyaW5nX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Y29sb3JfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDx1dl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHV2Ml9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGFscGhhbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YW9tYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxsaWdodG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGVtaXNzaXZlbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Z3JhZGllbnRtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxmb2dfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxic2Rmcz5cbiNpbmNsdWRlIDxsaWdodHNfcGFyc19iZWdpbj5cbiNpbmNsdWRlIDxsaWdodHNfdG9vbl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHNoYWRvd21hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGJ1bXBtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxub3JtYWxtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX2ZyYWdtZW50Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX2ZyYWdtZW50PlxuXHR2ZWM0IGRpZmZ1c2VDb2xvciA9IHZlYzQoIGRpZmZ1c2UsIG9wYWNpdHkgKTtcblx0UmVmbGVjdGVkTGlnaHQgcmVmbGVjdGVkTGlnaHQgPSBSZWZsZWN0ZWRMaWdodCggdmVjMyggMC4wICksIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICkgKTtcblx0dmVjMyB0b3RhbEVtaXNzaXZlUmFkaWFuY2UgPSBlbWlzc2l2ZTtcblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8Y29sb3JfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxhbHBoYW1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGFscGhhdGVzdF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPG5vcm1hbF9mcmFnbWVudF9iZWdpbj5cblx0I2luY2x1ZGUgPG5vcm1hbF9mcmFnbWVudF9tYXBzPlxuXHQjaW5jbHVkZSA8ZW1pc3NpdmVtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxsaWdodHNfdG9vbl9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGxpZ2h0c19mcmFnbWVudF9iZWdpbj5cblx0I2luY2x1ZGUgPGxpZ2h0c19mcmFnbWVudF9tYXBzPlxuXHQjaW5jbHVkZSA8bGlnaHRzX2ZyYWdtZW50X2VuZD5cblx0I2luY2x1ZGUgPGFvbWFwX2ZyYWdtZW50PlxuXHR2ZWMzIG91dGdvaW5nTGlnaHQgPSByZWZsZWN0ZWRMaWdodC5kaXJlY3REaWZmdXNlICsgcmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICsgdG90YWxFbWlzc2l2ZVJhZGlhbmNlO1xuXHRnbF9GcmFnQ29sb3IgPSB2ZWM0KCBvdXRnb2luZ0xpZ2h0LCBkaWZmdXNlQ29sb3IuYSApO1xuXHQjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxlbmNvZGluZ3NfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxmb2dfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxwcmVtdWx0aXBsaWVkX2FscGhhX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8ZGl0aGVyaW5nX2ZyYWdtZW50PlxufSIsbWVzaHRvb25fdmVydDoiI2RlZmluZSBUT09OXG52YXJ5aW5nIHZlYzMgdlZpZXdQb3NpdGlvbjtcbiNpZm5kZWYgRkxBVF9TSEFERURcblx0dmFyeWluZyB2ZWMzIHZOb3JtYWw7XG4jZW5kaWZcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8dXZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8dXYyX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGRpc3BsYWNlbWVudG1hcF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxjb2xvcl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxmb2dfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bW9ycGh0YXJnZXRfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8c2tpbm5pbmdfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8c2hhZG93bWFwX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX3ZlcnRleD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPHV2X3ZlcnRleD5cblx0I2luY2x1ZGUgPHV2Ml92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxjb2xvcl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxiZWdpbm5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxtb3JwaG5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2luYmFzZV92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2lubm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPGRlZmF1bHRub3JtYWxfdmVydGV4PlxuI2lmbmRlZiBGTEFUX1NIQURFRFxuXHR2Tm9ybWFsID0gbm9ybWFsaXplKCB0cmFuc2Zvcm1lZE5vcm1hbCApO1xuI2VuZGlmXG5cdCNpbmNsdWRlIDxiZWdpbl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxtb3JwaHRhcmdldF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2lubmluZ192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxkaXNwbGFjZW1lbnRtYXBfdmVydGV4PlxuXHQjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfdmVydGV4PlxuXHR2Vmlld1Bvc2l0aW9uID0gLSBtdlBvc2l0aW9uLnh5ejtcblx0I2luY2x1ZGUgPHdvcmxkcG9zX3ZlcnRleD5cblx0I2luY2x1ZGUgPHNoYWRvd21hcF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxmb2dfdmVydGV4PlxufSIsbWVzaHBob25nX2ZyYWc6IiNkZWZpbmUgUEhPTkdcbnVuaWZvcm0gdmVjMyBkaWZmdXNlO1xudW5pZm9ybSB2ZWMzIGVtaXNzaXZlO1xudW5pZm9ybSB2ZWMzIHNwZWN1bGFyO1xudW5pZm9ybSBmbG9hdCBzaGluaW5lc3M7XG51bmlmb3JtIGZsb2F0IG9wYWNpdHk7XG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPHBhY2tpbmc+XG4jaW5jbHVkZSA8ZGl0aGVyaW5nX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Y29sb3JfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDx1dl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHV2Ml9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGFscGhhbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YW9tYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxsaWdodG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGVtaXNzaXZlbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8ZW52bWFwX2NvbW1vbl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGVudm1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGN1YmVfdXZfcmVmbGVjdGlvbl9mcmFnbWVudD5cbiNpbmNsdWRlIDxmb2dfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxic2Rmcz5cbiNpbmNsdWRlIDxsaWdodHNfcGFyc19iZWdpbj5cbiNpbmNsdWRlIDxsaWdodHNfcGhvbmdfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxzaGFkb3dtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxidW1wbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bm9ybWFsbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8c3BlY3VsYXJtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX2ZyYWdtZW50Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX2ZyYWdtZW50PlxuXHR2ZWM0IGRpZmZ1c2VDb2xvciA9IHZlYzQoIGRpZmZ1c2UsIG9wYWNpdHkgKTtcblx0UmVmbGVjdGVkTGlnaHQgcmVmbGVjdGVkTGlnaHQgPSBSZWZsZWN0ZWRMaWdodCggdmVjMyggMC4wICksIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICkgKTtcblx0dmVjMyB0b3RhbEVtaXNzaXZlUmFkaWFuY2UgPSBlbWlzc2l2ZTtcblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8Y29sb3JfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxhbHBoYW1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGFscGhhdGVzdF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPHNwZWN1bGFybWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bm9ybWFsX2ZyYWdtZW50X2JlZ2luPlxuXHQjaW5jbHVkZSA8bm9ybWFsX2ZyYWdtZW50X21hcHM+XG5cdCNpbmNsdWRlIDxlbWlzc2l2ZW1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGxpZ2h0c19waG9uZ19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGxpZ2h0c19mcmFnbWVudF9iZWdpbj5cblx0I2luY2x1ZGUgPGxpZ2h0c19mcmFnbWVudF9tYXBzPlxuXHQjaW5jbHVkZSA8bGlnaHRzX2ZyYWdtZW50X2VuZD5cblx0I2luY2x1ZGUgPGFvbWFwX2ZyYWdtZW50PlxuXHR2ZWMzIG91dGdvaW5nTGlnaHQgPSByZWZsZWN0ZWRMaWdodC5kaXJlY3REaWZmdXNlICsgcmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICsgcmVmbGVjdGVkTGlnaHQuZGlyZWN0U3BlY3VsYXIgKyByZWZsZWN0ZWRMaWdodC5pbmRpcmVjdFNwZWN1bGFyICsgdG90YWxFbWlzc2l2ZVJhZGlhbmNlO1xuXHQjaW5jbHVkZSA8ZW52bWFwX2ZyYWdtZW50PlxuXHRnbF9GcmFnQ29sb3IgPSB2ZWM0KCBvdXRnb2luZ0xpZ2h0LCBkaWZmdXNlQ29sb3IuYSApO1xuXHQjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxlbmNvZGluZ3NfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxmb2dfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxwcmVtdWx0aXBsaWVkX2FscGhhX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8ZGl0aGVyaW5nX2ZyYWdtZW50PlxufSIsbWVzaHBob25nX3ZlcnQ6IiNkZWZpbmUgUEhPTkdcbnZhcnlpbmcgdmVjMyB2Vmlld1Bvc2l0aW9uO1xuI2lmbmRlZiBGTEFUX1NIQURFRFxuXHR2YXJ5aW5nIHZlYzMgdk5vcm1hbDtcbiNlbmRpZlxuI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDx1dl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDx1djJfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8ZGlzcGxhY2VtZW50bWFwX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGVudm1hcF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxjb2xvcl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxmb2dfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bW9ycGh0YXJnZXRfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8c2tpbm5pbmdfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8c2hhZG93bWFwX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX3ZlcnRleD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPHV2X3ZlcnRleD5cblx0I2luY2x1ZGUgPHV2Ml92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxjb2xvcl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxiZWdpbm5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxtb3JwaG5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2luYmFzZV92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2lubm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPGRlZmF1bHRub3JtYWxfdmVydGV4PlxuI2lmbmRlZiBGTEFUX1NIQURFRFxuXHR2Tm9ybWFsID0gbm9ybWFsaXplKCB0cmFuc2Zvcm1lZE5vcm1hbCApO1xuI2VuZGlmXG5cdCNpbmNsdWRlIDxiZWdpbl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxtb3JwaHRhcmdldF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2lubmluZ192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxkaXNwbGFjZW1lbnRtYXBfdmVydGV4PlxuXHQjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfdmVydGV4PlxuXHR2Vmlld1Bvc2l0aW9uID0gLSBtdlBvc2l0aW9uLnh5ejtcblx0I2luY2x1ZGUgPHdvcmxkcG9zX3ZlcnRleD5cblx0I2luY2x1ZGUgPGVudm1hcF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxzaGFkb3dtYXBfdmVydGV4PlxuXHQjaW5jbHVkZSA8Zm9nX3ZlcnRleD5cbn0iLG1lc2hwaHlzaWNhbF9mcmFnOiIjZGVmaW5lIFNUQU5EQVJEXG4jaWZkZWYgUEhZU0lDQUxcblx0I2RlZmluZSBSRUZMRUNUSVZJVFlcblx0I2RlZmluZSBDTEVBUkNPQVRcblx0I2RlZmluZSBTUEVDVUxBUlxuI2VuZGlmXG51bmlmb3JtIHZlYzMgZGlmZnVzZTtcbnVuaWZvcm0gdmVjMyBlbWlzc2l2ZTtcbnVuaWZvcm0gZmxvYXQgcm91Z2huZXNzO1xudW5pZm9ybSBmbG9hdCBtZXRhbG5lc3M7XG51bmlmb3JtIGZsb2F0IG9wYWNpdHk7XG4jaWZkZWYgVVNFX1RSQU5TTUlTU0lPTlxuXHR1bmlmb3JtIGZsb2F0IHRyYW5zbWlzc2lvbjtcblx0dW5pZm9ybSBmbG9hdCB0aGlja25lc3M7XG5cdHVuaWZvcm0gZmxvYXQgYXR0ZW51YXRpb25EaXN0YW5jZTtcblx0dW5pZm9ybSB2ZWMzIGF0dGVudWF0aW9uVGludDtcbiNlbmRpZlxuI2lmZGVmIFJFRkxFQ1RJVklUWVxuXHR1bmlmb3JtIGZsb2F0IHJlZmxlY3Rpdml0eTtcbiNlbmRpZlxuI2lmZGVmIFNQRUNVTEFSXG5cdHVuaWZvcm0gZmxvYXQgc3BlY3VsYXJJbnRlbnNpdHk7XG5cdHVuaWZvcm0gdmVjMyBzcGVjdWxhclRpbnQ7XG5cdCNpZmRlZiBVU0VfU1BFQ1VMQVJJTlRFTlNJVFlNQVBcblx0XHR1bmlmb3JtIHNhbXBsZXIyRCBzcGVjdWxhckludGVuc2l0eU1hcDtcblx0I2VuZGlmXG5cdCNpZmRlZiBVU0VfU1BFQ1VMQVJUSU5UTUFQXG5cdFx0dW5pZm9ybSBzYW1wbGVyMkQgc3BlY3VsYXJUaW50TWFwO1xuXHQjZW5kaWZcbiNlbmRpZlxuI2lmZGVmIENMRUFSQ09BVFxuXHR1bmlmb3JtIGZsb2F0IGNsZWFyY29hdDtcblx0dW5pZm9ybSBmbG9hdCBjbGVhcmNvYXRSb3VnaG5lc3M7XG4jZW5kaWZcbiNpZmRlZiBVU0VfU0hFRU5cblx0dW5pZm9ybSB2ZWMzIHNoZWVuO1xuI2VuZGlmXG52YXJ5aW5nIHZlYzMgdlZpZXdQb3NpdGlvbjtcbiNpZm5kZWYgRkxBVF9TSEFERURcblx0dmFyeWluZyB2ZWMzIHZOb3JtYWw7XG5cdCNpZmRlZiBVU0VfVEFOR0VOVFxuXHRcdHZhcnlpbmcgdmVjMyB2VGFuZ2VudDtcblx0XHR2YXJ5aW5nIHZlYzMgdkJpdGFuZ2VudDtcblx0I2VuZGlmXG4jZW5kaWZcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8cGFja2luZz5cbiNpbmNsdWRlIDxkaXRoZXJpbmdfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjb2xvcl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHV2X3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8dXYyX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YWxwaGFtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxhb21hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGxpZ2h0bWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8ZW1pc3NpdmVtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxic2Rmcz5cbiNpbmNsdWRlIDx0cmFuc21pc3Npb25fcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjdWJlX3V2X3JlZmxlY3Rpb25fZnJhZ21lbnQ+XG4jaW5jbHVkZSA8ZW52bWFwX2NvbW1vbl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGVudm1hcF9waHlzaWNhbF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGZvZ19wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGxpZ2h0c19wYXJzX2JlZ2luPlxuI2luY2x1ZGUgPGxpZ2h0c19waHlzaWNhbF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHNoYWRvd21hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGJ1bXBtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxub3JtYWxtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjbGVhcmNvYXRfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxyb3VnaG5lc3NtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxtZXRhbG5lc3NtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX2ZyYWdtZW50Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX2ZyYWdtZW50PlxuXHR2ZWM0IGRpZmZ1c2VDb2xvciA9IHZlYzQoIGRpZmZ1c2UsIG9wYWNpdHkgKTtcblx0UmVmbGVjdGVkTGlnaHQgcmVmbGVjdGVkTGlnaHQgPSBSZWZsZWN0ZWRMaWdodCggdmVjMyggMC4wICksIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICkgKTtcblx0dmVjMyB0b3RhbEVtaXNzaXZlUmFkaWFuY2UgPSBlbWlzc2l2ZTtcblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8Y29sb3JfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxhbHBoYW1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGFscGhhdGVzdF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPHJvdWdobmVzc21hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPG1ldGFsbmVzc21hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPG5vcm1hbF9mcmFnbWVudF9iZWdpbj5cblx0I2luY2x1ZGUgPG5vcm1hbF9mcmFnbWVudF9tYXBzPlxuXHQjaW5jbHVkZSA8Y2xlYXJjb2F0X25vcm1hbF9mcmFnbWVudF9iZWdpbj5cblx0I2luY2x1ZGUgPGNsZWFyY29hdF9ub3JtYWxfZnJhZ21lbnRfbWFwcz5cblx0I2luY2x1ZGUgPGVtaXNzaXZlbWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bGlnaHRzX3BoeXNpY2FsX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bGlnaHRzX2ZyYWdtZW50X2JlZ2luPlxuXHQjaW5jbHVkZSA8bGlnaHRzX2ZyYWdtZW50X21hcHM+XG5cdCNpbmNsdWRlIDxsaWdodHNfZnJhZ21lbnRfZW5kPlxuXHQjaW5jbHVkZSA8YW9tYXBfZnJhZ21lbnQ+XG5cdHZlYzMgdG90YWxEaWZmdXNlID0gcmVmbGVjdGVkTGlnaHQuZGlyZWN0RGlmZnVzZSArIHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZTtcblx0dmVjMyB0b3RhbFNwZWN1bGFyID0gcmVmbGVjdGVkTGlnaHQuZGlyZWN0U3BlY3VsYXIgKyByZWZsZWN0ZWRMaWdodC5pbmRpcmVjdFNwZWN1bGFyO1xuXHQjaW5jbHVkZSA8dHJhbnNtaXNzaW9uX2ZyYWdtZW50PlxuXHR2ZWMzIG91dGdvaW5nTGlnaHQgPSB0b3RhbERpZmZ1c2UgKyB0b3RhbFNwZWN1bGFyICsgdG90YWxFbWlzc2l2ZVJhZGlhbmNlO1xuXHRnbF9GcmFnQ29sb3IgPSB2ZWM0KCBvdXRnb2luZ0xpZ2h0LCBkaWZmdXNlQ29sb3IuYSApO1xuXHQjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxlbmNvZGluZ3NfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxmb2dfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxwcmVtdWx0aXBsaWVkX2FscGhhX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8ZGl0aGVyaW5nX2ZyYWdtZW50PlxufSIsbWVzaHBoeXNpY2FsX3ZlcnQ6IiNkZWZpbmUgU1RBTkRBUkRcbnZhcnlpbmcgdmVjMyB2Vmlld1Bvc2l0aW9uO1xuI2lmbmRlZiBGTEFUX1NIQURFRFxuXHR2YXJ5aW5nIHZlYzMgdk5vcm1hbDtcblx0I2lmZGVmIFVTRV9UQU5HRU5UXG5cdFx0dmFyeWluZyB2ZWMzIHZUYW5nZW50O1xuXHRcdHZhcnlpbmcgdmVjMyB2Qml0YW5nZW50O1xuXHQjZW5kaWZcbiNlbmRpZlxuI2lmZGVmIFVTRV9UUkFOU01JU1NJT05cblx0dmFyeWluZyB2ZWM0IHZXb3JsZFBvc2l0aW9uO1xuI2VuZGlmXG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPHV2X3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPHV2Ml9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxkaXNwbGFjZW1lbnRtYXBfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Y29sb3JfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Zm9nX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPG1vcnBodGFyZ2V0X3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPHNraW5uaW5nX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPHNoYWRvd21hcF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc192ZXJ0ZXg+XG52b2lkIG1haW4oKSB7XG5cdCNpbmNsdWRlIDx1dl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDx1djJfdmVydGV4PlxuXHQjaW5jbHVkZSA8Y29sb3JfdmVydGV4PlxuXHQjaW5jbHVkZSA8YmVnaW5ub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8bW9ycGhub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbmJhc2VfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbm5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxkZWZhdWx0bm9ybWFsX3ZlcnRleD5cbiNpZm5kZWYgRkxBVF9TSEFERURcblx0dk5vcm1hbCA9IG5vcm1hbGl6ZSggdHJhbnNmb3JtZWROb3JtYWwgKTtcblx0I2lmZGVmIFVTRV9UQU5HRU5UXG5cdFx0dlRhbmdlbnQgPSBub3JtYWxpemUoIHRyYW5zZm9ybWVkVGFuZ2VudCApO1xuXHRcdHZCaXRhbmdlbnQgPSBub3JtYWxpemUoIGNyb3NzKCB2Tm9ybWFsLCB2VGFuZ2VudCApICogdGFuZ2VudC53ICk7XG5cdCNlbmRpZlxuI2VuZGlmXG5cdCNpbmNsdWRlIDxiZWdpbl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxtb3JwaHRhcmdldF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2lubmluZ192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxkaXNwbGFjZW1lbnRtYXBfdmVydGV4PlxuXHQjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfdmVydGV4PlxuXHR2Vmlld1Bvc2l0aW9uID0gLSBtdlBvc2l0aW9uLnh5ejtcblx0I2luY2x1ZGUgPHdvcmxkcG9zX3ZlcnRleD5cblx0I2luY2x1ZGUgPHNoYWRvd21hcF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxmb2dfdmVydGV4PlxuI2lmZGVmIFVTRV9UUkFOU01JU1NJT05cblx0dldvcmxkUG9zaXRpb24gPSB3b3JsZFBvc2l0aW9uO1xuI2VuZGlmXG59Iixub3JtYWxfZnJhZzoiI2RlZmluZSBOT1JNQUxcbnVuaWZvcm0gZmxvYXQgb3BhY2l0eTtcbiNpZiBkZWZpbmVkKCBGTEFUX1NIQURFRCApIHx8IGRlZmluZWQoIFVTRV9CVU1QTUFQICkgfHwgZGVmaW5lZCggVEFOR0VOVFNQQUNFX05PUk1BTE1BUCApXG5cdHZhcnlpbmcgdmVjMyB2Vmlld1Bvc2l0aW9uO1xuI2VuZGlmXG4jaWZuZGVmIEZMQVRfU0hBREVEXG5cdHZhcnlpbmcgdmVjMyB2Tm9ybWFsO1xuXHQjaWZkZWYgVVNFX1RBTkdFTlRcblx0XHR2YXJ5aW5nIHZlYzMgdlRhbmdlbnQ7XG5cdFx0dmFyeWluZyB2ZWMzIHZCaXRhbmdlbnQ7XG5cdCNlbmRpZlxuI2VuZGlmXG4jaW5jbHVkZSA8cGFja2luZz5cbiNpbmNsdWRlIDx1dl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGJ1bXBtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxub3JtYWxtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX2ZyYWdtZW50Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxub3JtYWxfZnJhZ21lbnRfYmVnaW4+XG5cdCNpbmNsdWRlIDxub3JtYWxfZnJhZ21lbnRfbWFwcz5cblx0Z2xfRnJhZ0NvbG9yID0gdmVjNCggcGFja05vcm1hbFRvUkdCKCBub3JtYWwgKSwgb3BhY2l0eSApO1xufSIsbm9ybWFsX3ZlcnQ6IiNkZWZpbmUgTk9STUFMXG4jaWYgZGVmaW5lZCggRkxBVF9TSEFERUQgKSB8fCBkZWZpbmVkKCBVU0VfQlVNUE1BUCApIHx8IGRlZmluZWQoIFRBTkdFTlRTUEFDRV9OT1JNQUxNQVAgKVxuXHR2YXJ5aW5nIHZlYzMgdlZpZXdQb3NpdGlvbjtcbiNlbmRpZlxuI2lmbmRlZiBGTEFUX1NIQURFRFxuXHR2YXJ5aW5nIHZlYzMgdk5vcm1hbDtcblx0I2lmZGVmIFVTRV9UQU5HRU5UXG5cdFx0dmFyeWluZyB2ZWMzIHZUYW5nZW50O1xuXHRcdHZhcnlpbmcgdmVjMyB2Qml0YW5nZW50O1xuXHQjZW5kaWZcbiNlbmRpZlxuI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDx1dl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxkaXNwbGFjZW1lbnRtYXBfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bW9ycGh0YXJnZXRfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8c2tpbm5pbmdfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfdmVydGV4Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8dXZfdmVydGV4PlxuXHQjaW5jbHVkZSA8YmVnaW5ub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8bW9ycGhub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbmJhc2VfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbm5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxkZWZhdWx0bm9ybWFsX3ZlcnRleD5cbiNpZm5kZWYgRkxBVF9TSEFERURcblx0dk5vcm1hbCA9IG5vcm1hbGl6ZSggdHJhbnNmb3JtZWROb3JtYWwgKTtcblx0I2lmZGVmIFVTRV9UQU5HRU5UXG5cdFx0dlRhbmdlbnQgPSBub3JtYWxpemUoIHRyYW5zZm9ybWVkVGFuZ2VudCApO1xuXHRcdHZCaXRhbmdlbnQgPSBub3JtYWxpemUoIGNyb3NzKCB2Tm9ybWFsLCB2VGFuZ2VudCApICogdGFuZ2VudC53ICk7XG5cdCNlbmRpZlxuI2VuZGlmXG5cdCNpbmNsdWRlIDxiZWdpbl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxtb3JwaHRhcmdldF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2lubmluZ192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxkaXNwbGFjZW1lbnRtYXBfdmVydGV4PlxuXHQjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfdmVydGV4PlxuI2lmIGRlZmluZWQoIEZMQVRfU0hBREVEICkgfHwgZGVmaW5lZCggVVNFX0JVTVBNQVAgKSB8fCBkZWZpbmVkKCBUQU5HRU5UU1BBQ0VfTk9STUFMTUFQIClcblx0dlZpZXdQb3NpdGlvbiA9IC0gbXZQb3NpdGlvbi54eXo7XG4jZW5kaWZcbn0iLHBvaW50c19mcmFnOiJ1bmlmb3JtIHZlYzMgZGlmZnVzZTtcbnVuaWZvcm0gZmxvYXQgb3BhY2l0eTtcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8Y29sb3JfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxtYXBfcGFydGljbGVfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxmb2dfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX2ZyYWdtZW50Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX2ZyYWdtZW50PlxuXHR2ZWMzIG91dGdvaW5nTGlnaHQgPSB2ZWMzKCAwLjAgKTtcblx0dmVjNCBkaWZmdXNlQ29sb3IgPSB2ZWM0KCBkaWZmdXNlLCBvcGFjaXR5ICk7XG5cdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9mcmFnbWVudD5cblx0I2luY2x1ZGUgPG1hcF9wYXJ0aWNsZV9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGNvbG9yX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8YWxwaGF0ZXN0X2ZyYWdtZW50PlxuXHRvdXRnb2luZ0xpZ2h0ID0gZGlmZnVzZUNvbG9yLnJnYjtcblx0Z2xfRnJhZ0NvbG9yID0gdmVjNCggb3V0Z29pbmdMaWdodCwgZGlmZnVzZUNvbG9yLmEgKTtcblx0I2luY2x1ZGUgPHRvbmVtYXBwaW5nX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8ZW5jb2RpbmdzX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8Zm9nX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8cHJlbXVsdGlwbGllZF9hbHBoYV9mcmFnbWVudD5cbn0iLHBvaW50c192ZXJ0OiJ1bmlmb3JtIGZsb2F0IHNpemU7XG51bmlmb3JtIGZsb2F0IHNjYWxlO1xuI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDxjb2xvcl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxmb2dfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bW9ycGh0YXJnZXRfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfdmVydGV4Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8Y29sb3JfdmVydGV4PlxuXHQjaW5jbHVkZSA8YmVnaW5fdmVydGV4PlxuXHQjaW5jbHVkZSA8bW9ycGh0YXJnZXRfdmVydGV4PlxuXHQjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+XG5cdGdsX1BvaW50U2l6ZSA9IHNpemU7XG5cdCNpZmRlZiBVU0VfU0laRUFUVEVOVUFUSU9OXG5cdFx0Ym9vbCBpc1BlcnNwZWN0aXZlID0gaXNQZXJzcGVjdGl2ZU1hdHJpeCggcHJvamVjdGlvbk1hdHJpeCApO1xuXHRcdGlmICggaXNQZXJzcGVjdGl2ZSApIGdsX1BvaW50U2l6ZSAqPSAoIHNjYWxlIC8gLSBtdlBvc2l0aW9uLnogKTtcblx0I2VuZGlmXG5cdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfdmVydGV4PlxuXHQjaW5jbHVkZSA8d29ybGRwb3NfdmVydGV4PlxuXHQjaW5jbHVkZSA8Zm9nX3ZlcnRleD5cbn0iLHNoYWRvd19mcmFnOiJ1bmlmb3JtIHZlYzMgY29sb3I7XG51bmlmb3JtIGZsb2F0IG9wYWNpdHk7XG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPHBhY2tpbmc+XG4jaW5jbHVkZSA8Zm9nX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YnNkZnM+XG4jaW5jbHVkZSA8bGlnaHRzX3BhcnNfYmVnaW4+XG4jaW5jbHVkZSA8c2hhZG93bWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8c2hhZG93bWFza19wYXJzX2ZyYWdtZW50Plxudm9pZCBtYWluKCkge1xuXHRnbF9GcmFnQ29sb3IgPSB2ZWM0KCBjb2xvciwgb3BhY2l0eSAqICggMS4wIC0gZ2V0U2hhZG93TWFzaygpICkgKTtcblx0I2luY2x1ZGUgPHRvbmVtYXBwaW5nX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8ZW5jb2RpbmdzX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8Zm9nX2ZyYWdtZW50PlxufSIsc2hhZG93X3ZlcnQ6IiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8Zm9nX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPHNoYWRvd21hcF9wYXJzX3ZlcnRleD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPGJlZ2luX3ZlcnRleD5cblx0I2luY2x1ZGUgPHByb2plY3RfdmVydGV4PlxuXHQjaW5jbHVkZSA8d29ybGRwb3NfdmVydGV4PlxuXHQjaW5jbHVkZSA8YmVnaW5ub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8bW9ycGhub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbmJhc2VfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbm5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxkZWZhdWx0bm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPHNoYWRvd21hcF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxmb2dfdmVydGV4PlxufSIsc3ByaXRlX2ZyYWc6InVuaWZvcm0gdmVjMyBkaWZmdXNlO1xudW5pZm9ybSBmbG9hdCBvcGFjaXR5O1xuI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDx1dl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGFscGhhbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Zm9nX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc19mcmFnbWVudD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19mcmFnbWVudD5cblx0dmVjMyBvdXRnb2luZ0xpZ2h0ID0gdmVjMyggMC4wICk7XG5cdHZlYzQgZGlmZnVzZUNvbG9yID0gdmVjNCggZGlmZnVzZSwgb3BhY2l0eSApO1xuXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxhbHBoYW1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGFscGhhdGVzdF9mcmFnbWVudD5cblx0b3V0Z29pbmdMaWdodCA9IGRpZmZ1c2VDb2xvci5yZ2I7XG5cdGdsX0ZyYWdDb2xvciA9IHZlYzQoIG91dGdvaW5nTGlnaHQsIGRpZmZ1c2VDb2xvci5hICk7XG5cdCNpbmNsdWRlIDx0b25lbWFwcGluZ19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGVuY29kaW5nc19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGZvZ19mcmFnbWVudD5cbn0iLHNwcml0ZV92ZXJ0OiJ1bmlmb3JtIGZsb2F0IHJvdGF0aW9uO1xudW5pZm9ybSB2ZWMyIGNlbnRlcjtcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8dXZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Zm9nX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX3ZlcnRleD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPHV2X3ZlcnRleD5cblx0dmVjNCBtdlBvc2l0aW9uID0gbW9kZWxWaWV3TWF0cml4ICogdmVjNCggMC4wLCAwLjAsIDAuMCwgMS4wICk7XG5cdHZlYzIgc2NhbGU7XG5cdHNjYWxlLnggPSBsZW5ndGgoIHZlYzMoIG1vZGVsTWF0cml4WyAwIF0ueCwgbW9kZWxNYXRyaXhbIDAgXS55LCBtb2RlbE1hdHJpeFsgMCBdLnogKSApO1xuXHRzY2FsZS55ID0gbGVuZ3RoKCB2ZWMzKCBtb2RlbE1hdHJpeFsgMSBdLngsIG1vZGVsTWF0cml4WyAxIF0ueSwgbW9kZWxNYXRyaXhbIDEgXS56ICkgKTtcblx0I2lmbmRlZiBVU0VfU0laRUFUVEVOVUFUSU9OXG5cdFx0Ym9vbCBpc1BlcnNwZWN0aXZlID0gaXNQZXJzcGVjdGl2ZU1hdHJpeCggcHJvamVjdGlvbk1hdHJpeCApO1xuXHRcdGlmICggaXNQZXJzcGVjdGl2ZSApIHNjYWxlICo9IC0gbXZQb3NpdGlvbi56O1xuXHQjZW5kaWZcblx0dmVjMiBhbGlnbmVkUG9zaXRpb24gPSAoIHBvc2l0aW9uLnh5IC0gKCBjZW50ZXIgLSB2ZWMyKCAwLjUgKSApICkgKiBzY2FsZTtcblx0dmVjMiByb3RhdGVkUG9zaXRpb247XG5cdHJvdGF0ZWRQb3NpdGlvbi54ID0gY29zKCByb3RhdGlvbiApICogYWxpZ25lZFBvc2l0aW9uLnggLSBzaW4oIHJvdGF0aW9uICkgKiBhbGlnbmVkUG9zaXRpb24ueTtcblx0cm90YXRlZFBvc2l0aW9uLnkgPSBzaW4oIHJvdGF0aW9uICkgKiBhbGlnbmVkUG9zaXRpb24ueCArIGNvcyggcm90YXRpb24gKSAqIGFsaWduZWRQb3NpdGlvbi55O1xuXHRtdlBvc2l0aW9uLnh5ICs9IHJvdGF0ZWRQb3NpdGlvbjtcblx0Z2xfUG9zaXRpb24gPSBwcm9qZWN0aW9uTWF0cml4ICogbXZQb3NpdGlvbjtcblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3ZlcnRleD5cblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxmb2dfdmVydGV4PlxufSJ9LGI2dD17Y29tbW9uOntkaWZmdXNlOnt2YWx1ZTpuZXcgczR0KDE2Nzc3MjE1KX0sb3BhY2l0eTp7dmFsdWU6MX0sbWFwOnt2YWx1ZTpudWxsfSx1dlRyYW5zZm9ybTp7dmFsdWU6bmV3IEE1dH0sdXYyVHJhbnNmb3JtOnt2YWx1ZTpuZXcgQTV0fSxhbHBoYU1hcDp7dmFsdWU6bnVsbH19LHNwZWN1bGFybWFwOntzcGVjdWxhck1hcDp7dmFsdWU6bnVsbH19LGVudm1hcDp7ZW52TWFwOnt2YWx1ZTpudWxsfSxmbGlwRW52TWFwOnt2YWx1ZTotMX0scmVmbGVjdGl2aXR5Ont2YWx1ZToxfSxyZWZyYWN0aW9uUmF0aW86e3ZhbHVlOi45OH0sbWF4TWlwTGV2ZWw6e3ZhbHVlOjB9fSxhb21hcDp7YW9NYXA6e3ZhbHVlOm51bGx9LGFvTWFwSW50ZW5zaXR5Ont2YWx1ZToxfX0sbGlnaHRtYXA6e2xpZ2h0TWFwOnt2YWx1ZTpudWxsfSxsaWdodE1hcEludGVuc2l0eTp7dmFsdWU6MX19LGVtaXNzaXZlbWFwOntlbWlzc2l2ZU1hcDp7dmFsdWU6bnVsbH19LGJ1bXBtYXA6e2J1bXBNYXA6e3ZhbHVlOm51bGx9LGJ1bXBTY2FsZTp7dmFsdWU6MX19LG5vcm1hbG1hcDp7bm9ybWFsTWFwOnt2YWx1ZTpudWxsfSxub3JtYWxTY2FsZTp7dmFsdWU6bmV3IEM1dCgxLDEpfX0sZGlzcGxhY2VtZW50bWFwOntkaXNwbGFjZW1lbnRNYXA6e3ZhbHVlOm51bGx9LGRpc3BsYWNlbWVudFNjYWxlOnt2YWx1ZToxfSxkaXNwbGFjZW1lbnRCaWFzOnt2YWx1ZTowfX0scm91Z2huZXNzbWFwOntyb3VnaG5lc3NNYXA6e3ZhbHVlOm51bGx9fSxtZXRhbG5lc3NtYXA6e21ldGFsbmVzc01hcDp7dmFsdWU6bnVsbH19LGdyYWRpZW50bWFwOntncmFkaWVudE1hcDp7dmFsdWU6bnVsbH19LGZvZzp7Zm9nRGVuc2l0eTp7dmFsdWU6MjVlLTV9LGZvZ05lYXI6e3ZhbHVlOjF9LGZvZ0Zhcjp7dmFsdWU6MmUzfSxmb2dDb2xvcjp7dmFsdWU6bmV3IHM0dCgxNjc3NzIxNSl9fSxsaWdodHM6e2FtYmllbnRMaWdodENvbG9yOnt2YWx1ZTpbXX0sbGlnaHRQcm9iZTp7dmFsdWU6W119LGRpcmVjdGlvbmFsTGlnaHRzOnt2YWx1ZTpbXSxwcm9wZXJ0aWVzOntkaXJlY3Rpb246e30sY29sb3I6e319fSxkaXJlY3Rpb25hbExpZ2h0U2hhZG93czp7dmFsdWU6W10scHJvcGVydGllczp7c2hhZG93Qmlhczp7fSxzaGFkb3dOb3JtYWxCaWFzOnt9LHNoYWRvd1JhZGl1czp7fSxzaGFkb3dNYXBTaXplOnt9fX0sZGlyZWN0aW9uYWxTaGFkb3dNYXA6e3ZhbHVlOltdfSxkaXJlY3Rpb25hbFNoYWRvd01hdHJpeDp7dmFsdWU6W119LHNwb3RMaWdodHM6e3ZhbHVlOltdLHByb3BlcnRpZXM6e2NvbG9yOnt9LHBvc2l0aW9uOnt9LGRpcmVjdGlvbjp7fSxkaXN0YW5jZTp7fSxjb25lQ29zOnt9LHBlbnVtYnJhQ29zOnt9LGRlY2F5Ont9fX0sc3BvdExpZ2h0U2hhZG93czp7dmFsdWU6W10scHJvcGVydGllczp7c2hhZG93Qmlhczp7fSxzaGFkb3dOb3JtYWxCaWFzOnt9LHNoYWRvd1JhZGl1czp7fSxzaGFkb3dNYXBTaXplOnt9fX0sc3BvdFNoYWRvd01hcDp7dmFsdWU6W119LHNwb3RTaGFkb3dNYXRyaXg6e3ZhbHVlOltdfSxwb2ludExpZ2h0czp7dmFsdWU6W10scHJvcGVydGllczp7Y29sb3I6e30scG9zaXRpb246e30sZGVjYXk6e30sZGlzdGFuY2U6e319fSxwb2ludExpZ2h0U2hhZG93czp7dmFsdWU6W10scHJvcGVydGllczp7c2hhZG93Qmlhczp7fSxzaGFkb3dOb3JtYWxCaWFzOnt9LHNoYWRvd1JhZGl1czp7fSxzaGFkb3dNYXBTaXplOnt9LHNoYWRvd0NhbWVyYU5lYXI6e30sc2hhZG93Q2FtZXJhRmFyOnt9fX0scG9pbnRTaGFkb3dNYXA6e3ZhbHVlOltdfSxwb2ludFNoYWRvd01hdHJpeDp7dmFsdWU6W119LGhlbWlzcGhlcmVMaWdodHM6e3ZhbHVlOltdLHByb3BlcnRpZXM6e2RpcmVjdGlvbjp7fSxza3lDb2xvcjp7fSxncm91bmRDb2xvcjp7fX19LHJlY3RBcmVhTGlnaHRzOnt2YWx1ZTpbXSxwcm9wZXJ0aWVzOntjb2xvcjp7fSxwb3NpdGlvbjp7fSx3aWR0aDp7fSxoZWlnaHQ6e319fSxsdGNfMTp7dmFsdWU6bnVsbH0sbHRjXzI6e3ZhbHVlOm51bGx9fSxwb2ludHM6e2RpZmZ1c2U6e3ZhbHVlOm5ldyBzNHQoMTY3NzcyMTUpfSxvcGFjaXR5Ont2YWx1ZToxfSxzaXplOnt2YWx1ZToxfSxzY2FsZTp7dmFsdWU6MX0sbWFwOnt2YWx1ZTpudWxsfSxhbHBoYU1hcDp7dmFsdWU6bnVsbH0sdXZUcmFuc2Zvcm06e3ZhbHVlOm5ldyBBNXR9fSxzcHJpdGU6e2RpZmZ1c2U6e3ZhbHVlOm5ldyBzNHQoMTY3NzcyMTUpfSxvcGFjaXR5Ont2YWx1ZToxfSxjZW50ZXI6e3ZhbHVlOm5ldyBDNXQoLjUsLjUpfSxyb3RhdGlvbjp7dmFsdWU6MH0sbWFwOnt2YWx1ZTpudWxsfSxhbHBoYU1hcDp7dmFsdWU6bnVsbH0sdXZUcmFuc2Zvcm06e3ZhbHVlOm5ldyBBNXR9fX0seDZ0PXtiYXNpYzp7dW5pZm9ybXM6dDZ0KFtiNnQuY29tbW9uLGI2dC5zcGVjdWxhcm1hcCxiNnQuZW52bWFwLGI2dC5hb21hcCxiNnQubGlnaHRtYXAsYjZ0LmZvZ10pLHZlcnRleFNoYWRlcjp2NnQubWVzaGJhc2ljX3ZlcnQsZnJhZ21lbnRTaGFkZXI6djZ0Lm1lc2hiYXNpY19mcmFnfSxsYW1iZXJ0Ont1bmlmb3Jtczp0NnQoW2I2dC5jb21tb24sYjZ0LnNwZWN1bGFybWFwLGI2dC5lbnZtYXAsYjZ0LmFvbWFwLGI2dC5saWdodG1hcCxiNnQuZW1pc3NpdmVtYXAsYjZ0LmZvZyxiNnQubGlnaHRzLHtlbWlzc2l2ZTp7dmFsdWU6bmV3IHM0dCgwKX19XSksdmVydGV4U2hhZGVyOnY2dC5tZXNobGFtYmVydF92ZXJ0LGZyYWdtZW50U2hhZGVyOnY2dC5tZXNobGFtYmVydF9mcmFnfSxwaG9uZzp7dW5pZm9ybXM6dDZ0KFtiNnQuY29tbW9uLGI2dC5zcGVjdWxhcm1hcCxiNnQuZW52bWFwLGI2dC5hb21hcCxiNnQubGlnaHRtYXAsYjZ0LmVtaXNzaXZlbWFwLGI2dC5idW1wbWFwLGI2dC5ub3JtYWxtYXAsYjZ0LmRpc3BsYWNlbWVudG1hcCxiNnQuZm9nLGI2dC5saWdodHMse2VtaXNzaXZlOnt2YWx1ZTpuZXcgczR0KDApfSxzcGVjdWxhcjp7dmFsdWU6bmV3IHM0dCgxMTE4NDgxKX0sc2hpbmluZXNzOnt2YWx1ZTozMH19XSksdmVydGV4U2hhZGVyOnY2dC5tZXNocGhvbmdfdmVydCxmcmFnbWVudFNoYWRlcjp2NnQubWVzaHBob25nX2ZyYWd9LHN0YW5kYXJkOnt1bmlmb3Jtczp0NnQoW2I2dC5jb21tb24sYjZ0LmVudm1hcCxiNnQuYW9tYXAsYjZ0LmxpZ2h0bWFwLGI2dC5lbWlzc2l2ZW1hcCxiNnQuYnVtcG1hcCxiNnQubm9ybWFsbWFwLGI2dC5kaXNwbGFjZW1lbnRtYXAsYjZ0LnJvdWdobmVzc21hcCxiNnQubWV0YWxuZXNzbWFwLGI2dC5mb2csYjZ0LmxpZ2h0cyx7ZW1pc3NpdmU6e3ZhbHVlOm5ldyBzNHQoMCl9LHJvdWdobmVzczp7dmFsdWU6MX0sbWV0YWxuZXNzOnt2YWx1ZTowfSxlbnZNYXBJbnRlbnNpdHk6e3ZhbHVlOjF9fV0pLHZlcnRleFNoYWRlcjp2NnQubWVzaHBoeXNpY2FsX3ZlcnQsZnJhZ21lbnRTaGFkZXI6djZ0Lm1lc2hwaHlzaWNhbF9mcmFnfSx0b29uOnt1bmlmb3Jtczp0NnQoW2I2dC5jb21tb24sYjZ0LmFvbWFwLGI2dC5saWdodG1hcCxiNnQuZW1pc3NpdmVtYXAsYjZ0LmJ1bXBtYXAsYjZ0Lm5vcm1hbG1hcCxiNnQuZGlzcGxhY2VtZW50bWFwLGI2dC5ncmFkaWVudG1hcCxiNnQuZm9nLGI2dC5saWdodHMse2VtaXNzaXZlOnt2YWx1ZTpuZXcgczR0KDApfX1dKSx2ZXJ0ZXhTaGFkZXI6djZ0Lm1lc2h0b29uX3ZlcnQsZnJhZ21lbnRTaGFkZXI6djZ0Lm1lc2h0b29uX2ZyYWd9LG1hdGNhcDp7dW5pZm9ybXM6dDZ0KFtiNnQuY29tbW9uLGI2dC5idW1wbWFwLGI2dC5ub3JtYWxtYXAsYjZ0LmRpc3BsYWNlbWVudG1hcCxiNnQuZm9nLHttYXRjYXA6e3ZhbHVlOm51bGx9fV0pLHZlcnRleFNoYWRlcjp2NnQubWVzaG1hdGNhcF92ZXJ0LGZyYWdtZW50U2hhZGVyOnY2dC5tZXNobWF0Y2FwX2ZyYWd9LHBvaW50czp7dW5pZm9ybXM6dDZ0KFtiNnQucG9pbnRzLGI2dC5mb2ddKSx2ZXJ0ZXhTaGFkZXI6djZ0LnBvaW50c192ZXJ0LGZyYWdtZW50U2hhZGVyOnY2dC5wb2ludHNfZnJhZ30sZGFzaGVkOnt1bmlmb3Jtczp0NnQoW2I2dC5jb21tb24sYjZ0LmZvZyx7c2NhbGU6e3ZhbHVlOjF9LGRhc2hTaXplOnt2YWx1ZToxfSx0b3RhbFNpemU6e3ZhbHVlOjJ9fV0pLHZlcnRleFNoYWRlcjp2NnQubGluZWRhc2hlZF92ZXJ0LGZyYWdtZW50U2hhZGVyOnY2dC5saW5lZGFzaGVkX2ZyYWd9LGRlcHRoOnt1bmlmb3Jtczp0NnQoW2I2dC5jb21tb24sYjZ0LmRpc3BsYWNlbWVudG1hcF0pLHZlcnRleFNoYWRlcjp2NnQuZGVwdGhfdmVydCxmcmFnbWVudFNoYWRlcjp2NnQuZGVwdGhfZnJhZ30sbm9ybWFsOnt1bmlmb3Jtczp0NnQoW2I2dC5jb21tb24sYjZ0LmJ1bXBtYXAsYjZ0Lm5vcm1hbG1hcCxiNnQuZGlzcGxhY2VtZW50bWFwLHtvcGFjaXR5Ont2YWx1ZToxfX1dKSx2ZXJ0ZXhTaGFkZXI6djZ0Lm5vcm1hbF92ZXJ0LGZyYWdtZW50U2hhZGVyOnY2dC5ub3JtYWxfZnJhZ30sc3ByaXRlOnt1bmlmb3Jtczp0NnQoW2I2dC5zcHJpdGUsYjZ0LmZvZ10pLHZlcnRleFNoYWRlcjp2NnQuc3ByaXRlX3ZlcnQsZnJhZ21lbnRTaGFkZXI6djZ0LnNwcml0ZV9mcmFnfSxiYWNrZ3JvdW5kOnt1bmlmb3Jtczp7dXZUcmFuc2Zvcm06e3ZhbHVlOm5ldyBBNXR9LHQyRDp7dmFsdWU6bnVsbH19LHZlcnRleFNoYWRlcjp2NnQuYmFja2dyb3VuZF92ZXJ0LGZyYWdtZW50U2hhZGVyOnY2dC5iYWNrZ3JvdW5kX2ZyYWd9LGN1YmU6e3VuaWZvcm1zOnQ2dChbYjZ0LmVudm1hcCx7b3BhY2l0eTp7dmFsdWU6MX19XSksdmVydGV4U2hhZGVyOnY2dC5jdWJlX3ZlcnQsZnJhZ21lbnRTaGFkZXI6djZ0LmN1YmVfZnJhZ30sZXF1aXJlY3Q6e3VuaWZvcm1zOnt0RXF1aXJlY3Q6e3ZhbHVlOm51bGx9fSx2ZXJ0ZXhTaGFkZXI6djZ0LmVxdWlyZWN0X3ZlcnQsZnJhZ21lbnRTaGFkZXI6djZ0LmVxdWlyZWN0X2ZyYWd9LGRpc3RhbmNlUkdCQTp7dW5pZm9ybXM6dDZ0KFtiNnQuY29tbW9uLGI2dC5kaXNwbGFjZW1lbnRtYXAse3JlZmVyZW5jZVBvc2l0aW9uOnt2YWx1ZTpuZXcgSDV0fSxuZWFyRGlzdGFuY2U6e3ZhbHVlOjF9LGZhckRpc3RhbmNlOnt2YWx1ZToxZTN9fV0pLHZlcnRleFNoYWRlcjp2NnQuZGlzdGFuY2VSR0JBX3ZlcnQsZnJhZ21lbnRTaGFkZXI6djZ0LmRpc3RhbmNlUkdCQV9mcmFnfSxzaGFkb3c6e3VuaWZvcm1zOnQ2dChbYjZ0LmxpZ2h0cyxiNnQuZm9nLHtjb2xvcjp7dmFsdWU6bmV3IHM0dCgwKX0sb3BhY2l0eTp7dmFsdWU6MX19XSksdmVydGV4U2hhZGVyOnY2dC5zaGFkb3dfdmVydCxmcmFnbWVudFNoYWRlcjp2NnQuc2hhZG93X2ZyYWd9fTtmdW5jdGlvbiB3NnQodCxlLG4saSxyKXtjb25zdCBvPW5ldyBzNHQoMCk7bGV0IGEscyxsPTAsYz1udWxsLHU9MCxoPW51bGw7ZnVuY3Rpb24gZCh0LGUpe24uYnVmZmVycy5jb2xvci5zZXRDbGVhcih0LnIsdC5nLHQuYixlLHIpfXJldHVybntnZXRDbGVhckNvbG9yOmZ1bmN0aW9uKCl7cmV0dXJuIG99LHNldENsZWFyQ29sb3I6ZnVuY3Rpb24odCxlPTEpe28uc2V0KHQpLGw9ZSxkKG8sbCl9LGdldENsZWFyQWxwaGE6ZnVuY3Rpb24oKXtyZXR1cm4gbH0sc2V0Q2xlYXJBbHBoYTpmdW5jdGlvbih0KXtsPXQsZChvLGwpfSxyZW5kZXI6ZnVuY3Rpb24gcChuLHIpe2xldCBwPSExLGY9ITA9PT1yLmlzU2NlbmU/ci5iYWNrZ3JvdW5kOm51bGw7ZiYmZi5pc1RleHR1cmUmJihmPWUuZ2V0KGYpKTtjb25zdCBtPXQueHIsZz1tLmdldFNlc3Npb24mJm0uZ2V0U2Vzc2lvbigpO2cmJiJhZGRpdGl2ZSI9PT1nLmVudmlyb25tZW50QmxlbmRNb2RlJiYoZj1udWxsKSxudWxsPT09Zj9kKG8sbCk6ZiYmZi5pc0NvbG9yJiYoZChmLDEpLHA9ITApLCh0LmF1dG9DbGVhcnx8cCkmJnQuY2xlYXIodC5hdXRvQ2xlYXJDb2xvcix0LmF1dG9DbGVhckRlcHRoLHQuYXV0b0NsZWFyU3RlbmNpbCksZiYmKGYuaXNDdWJlVGV4dHVyZXx8Zi5tYXBwaW5nPT09bzJ0KT8odm9pZCAwPT09cyYmKHM9bmV3IEs0dChuZXcgSjR0KDEsMSwxKSxuZXcgbjZ0KHtuYW1lOiJCYWNrZ3JvdW5kQ3ViZU1hdGVyaWFsIix1bmlmb3JtczpRNHQoeDZ0LmN1YmUudW5pZm9ybXMpLHZlcnRleFNoYWRlcjp4NnQuY3ViZS52ZXJ0ZXhTaGFkZXIsZnJhZ21lbnRTaGFkZXI6eDZ0LmN1YmUuZnJhZ21lbnRTaGFkZXIsc2lkZToxLGRlcHRoVGVzdDohMSxkZXB0aFdyaXRlOiExLGZvZzohMX0pKSxzLmdlb21ldHJ5LmRlbGV0ZUF0dHJpYnV0ZSgibm9ybWFsIikscy5nZW9tZXRyeS5kZWxldGVBdHRyaWJ1dGUoInV2Iikscy5vbkJlZm9yZVJlbmRlcj1mdW5jdGlvbih0LGUsbil7dGhpcy5tYXRyaXhXb3JsZC5jb3B5UG9zaXRpb24obi5tYXRyaXhXb3JsZCl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzLm1hdGVyaWFsLCJlbnZNYXAiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy51bmlmb3Jtcy5lbnZNYXAudmFsdWV9fSksaS51cGRhdGUocykpLHMubWF0ZXJpYWwudW5pZm9ybXMuZW52TWFwLnZhbHVlPWYscy5tYXRlcmlhbC51bmlmb3Jtcy5mbGlwRW52TWFwLnZhbHVlPWYuaXNDdWJlVGV4dHVyZSYmITE9PT1mLmlzUmVuZGVyVGFyZ2V0VGV4dHVyZT8tMToxLGM9PT1mJiZ1PT09Zi52ZXJzaW9uJiZoPT09dC50b25lTWFwcGluZ3x8KHMubWF0ZXJpYWwubmVlZHNVcGRhdGU9ITAsYz1mLHU9Zi52ZXJzaW9uLGg9dC50b25lTWFwcGluZyksbi51bnNoaWZ0KHMscy5nZW9tZXRyeSxzLm1hdGVyaWFsLDAsMCxudWxsKSk6ZiYmZi5pc1RleHR1cmUmJih2b2lkIDA9PT1hJiYoYT1uZXcgSzR0KG5ldyB5NnQoMiwyKSxuZXcgbjZ0KHtuYW1lOiJCYWNrZ3JvdW5kTWF0ZXJpYWwiLHVuaWZvcm1zOlE0dCh4NnQuYmFja2dyb3VuZC51bmlmb3JtcyksdmVydGV4U2hhZGVyOng2dC5iYWNrZ3JvdW5kLnZlcnRleFNoYWRlcixmcmFnbWVudFNoYWRlcjp4NnQuYmFja2dyb3VuZC5mcmFnbWVudFNoYWRlcixzaWRlOjAsZGVwdGhUZXN0OiExLGRlcHRoV3JpdGU6ITEsZm9nOiExfSkpLGEuZ2VvbWV0cnkuZGVsZXRlQXR0cmlidXRlKCJub3JtYWwiKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoYS5tYXRlcmlhbCwibWFwIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudW5pZm9ybXMudDJELnZhbHVlfX0pLGkudXBkYXRlKGEpKSxhLm1hdGVyaWFsLnVuaWZvcm1zLnQyRC52YWx1ZT1mLCEwPT09Zi5tYXRyaXhBdXRvVXBkYXRlJiZmLnVwZGF0ZU1hdHJpeCgpLGEubWF0ZXJpYWwudW5pZm9ybXMudXZUcmFuc2Zvcm0udmFsdWUuY29weShmLm1hdHJpeCksYz09PWYmJnU9PT1mLnZlcnNpb24mJmg9PT10LnRvbmVNYXBwaW5nfHwoYS5tYXRlcmlhbC5uZWVkc1VwZGF0ZT0hMCxjPWYsdT1mLnZlcnNpb24saD10LnRvbmVNYXBwaW5nKSxuLnVuc2hpZnQoYSxhLmdlb21ldHJ5LGEubWF0ZXJpYWwsMCwwLG51bGwpKX19fWZ1bmN0aW9uIFM2dCh0LGUsbixpKXtjb25zdCByPXQuZ2V0UGFyYW1ldGVyKDM0OTIxKSxvPWkuaXNXZWJHTDI/bnVsbDplLmdldCgiT0VTX3ZlcnRleF9hcnJheV9vYmplY3QiKSxhPWkuaXNXZWJHTDJ8fG51bGwhPT1vLHM9e30sbD1kKG51bGwpO2xldCBjPWw7ZnVuY3Rpb24gdShlKXtyZXR1cm4gaS5pc1dlYkdMMj90LmJpbmRWZXJ0ZXhBcnJheShlKTpvLmJpbmRWZXJ0ZXhBcnJheU9FUyhlKX1mdW5jdGlvbiBoKGUpe3JldHVybiBpLmlzV2ViR0wyP3QuZGVsZXRlVmVydGV4QXJyYXkoZSk6by5kZWxldGVWZXJ0ZXhBcnJheU9FUyhlKX1mdW5jdGlvbiBkKHQpe2NvbnN0IGU9W10sbj1bXSxpPVtdO2ZvcihsZXQgdD0wO3Q8cjt0KyspZVt0XT0wLG5bdF09MCxpW3RdPTA7cmV0dXJue2dlb21ldHJ5Om51bGwscHJvZ3JhbTpudWxsLHdpcmVmcmFtZTohMSxuZXdBdHRyaWJ1dGVzOmUsZW5hYmxlZEF0dHJpYnV0ZXM6bixhdHRyaWJ1dGVEaXZpc29yczppLG9iamVjdDp0LGF0dHJpYnV0ZXM6e30saW5kZXg6bnVsbH19ZnVuY3Rpb24gcCgpe2NvbnN0IHQ9Yy5uZXdBdHRyaWJ1dGVzO2ZvcihsZXQgZT0wLG49dC5sZW5ndGg7ZTxuO2UrKyl0W2VdPTB9ZnVuY3Rpb24gZih0KXttKHQsMCl9ZnVuY3Rpb24gbShuLHIpe2NvbnN0IG89Yy5lbmFibGVkQXR0cmlidXRlcyxhPWMuYXR0cmlidXRlRGl2aXNvcnM7aWYoYy5uZXdBdHRyaWJ1dGVzW25dPTEsMD09PW9bbl0mJih0LmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KG4pLG9bbl09MSksYVtuXSE9PXIpeyhpLmlzV2ViR0wyP3Q6ZS5nZXQoIkFOR0xFX2luc3RhbmNlZF9hcnJheXMiKSlbaS5pc1dlYkdMMj8idmVydGV4QXR0cmliRGl2aXNvciI6InZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSJdKG4sciksYVtuXT1yfX1mdW5jdGlvbiBnKCl7Y29uc3QgZT1jLm5ld0F0dHJpYnV0ZXMsbj1jLmVuYWJsZWRBdHRyaWJ1dGVzO2ZvcihsZXQgaT0wLHI9bi5sZW5ndGg7aTxyO2krKyluW2ldIT09ZVtpXSYmKHQuZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KGkpLG5baV09MCl9ZnVuY3Rpb24gXyhlLG4scixvLGEscyl7ITAhPT1pLmlzV2ViR0wyfHw1MTI0IT09ciYmNTEyNSE9PXI/dC52ZXJ0ZXhBdHRyaWJQb2ludGVyKGUsbixyLG8sYSxzKTp0LnZlcnRleEF0dHJpYklQb2ludGVyKGUsbixyLGEscyl9ZnVuY3Rpb24geSgpe3YoKSxjIT09bCYmKGM9bCx1KGMub2JqZWN0KSl9ZnVuY3Rpb24gdigpe2wuZ2VvbWV0cnk9bnVsbCxsLnByb2dyYW09bnVsbCxsLndpcmVmcmFtZT0hMX1yZXR1cm57c2V0dXA6ZnVuY3Rpb24gYihyLGwsaCx5LHYpe2xldCBiPSExO2lmKGEpe2NvbnN0IGU9KGZ1bmN0aW9uIHgoZSxuLHIpe2NvbnN0IGE9ITA9PT1yLndpcmVmcmFtZTtsZXQgbD1zW2UuaWRdO3ZvaWQgMD09PWwmJihsPXt9LHNbZS5pZF09bCk7bGV0IGM9bFtuLmlkXTt2b2lkIDA9PT1jJiYoYz17fSxsW24uaWRdPWMpO2xldCB1PWNbYV07dm9pZCAwPT09dSYmKHU9ZCgoZnVuY3Rpb24gaCgpe3JldHVybiBpLmlzV2ViR0wyP3QuY3JlYXRlVmVydGV4QXJyYXkoKTpvLmNyZWF0ZVZlcnRleEFycmF5T0VTKCl9KSgpKSxjW2FdPXUpO3JldHVybiB1fSkoeSxoLGwpO2MhPT1lJiYoYz1lLHUoYy5vYmplY3QpKSxiPShmdW5jdGlvbiB3KHQsZSl7Y29uc3Qgbj1jLmF0dHJpYnV0ZXMsaT10LmF0dHJpYnV0ZXM7bGV0IHI9MDtmb3IoY29uc3QgdCBpbiBpKXtjb25zdCBlPW5bdF0sbz1pW3RdO2lmKHZvaWQgMD09PWUpcmV0dXJuITA7aWYoZS5hdHRyaWJ1dGUhPT1vKXJldHVybiEwO2lmKGUuZGF0YSE9PW8uZGF0YSlyZXR1cm4hMDtyKyt9cmV0dXJuIGMuYXR0cmlidXRlc051bSE9PXJ8fGMuaW5kZXghPT1lfSkoeSx2KSxiJiYoZnVuY3Rpb24gUyh0LGUpe2NvbnN0IG49e30saT10LmF0dHJpYnV0ZXM7bGV0IHI9MDtmb3IoY29uc3QgdCBpbiBpKXtjb25zdCBlPWlbdF0sbz17fTtvLmF0dHJpYnV0ZT1lLGUuZGF0YSYmKG8uZGF0YT1lLmRhdGEpLG5bdF09byxyKyt9Yy5hdHRyaWJ1dGVzPW4sYy5hdHRyaWJ1dGVzTnVtPXIsYy5pbmRleD1lfSkoeSx2KX1lbHNle2NvbnN0IHQ9ITA9PT1sLndpcmVmcmFtZTtjLmdlb21ldHJ5PT09eS5pZCYmYy5wcm9ncmFtPT09aC5pZCYmYy53aXJlZnJhbWU9PT10fHwoYy5nZW9tZXRyeT15LmlkLGMucHJvZ3JhbT1oLmlkLGMud2lyZWZyYW1lPXQsYj0hMCl9ITA9PT1yLmlzSW5zdGFuY2VkTWVzaCYmKGI9ITApLG51bGwhPT12JiZuLnVwZGF0ZSh2LDM0OTYzKSxiJiYoIShmdW5jdGlvbiBNKHIsbyxhLHMpe2lmKCExPT09aS5pc1dlYkdMMiYmKHIuaXNJbnN0YW5jZWRNZXNofHxzLmlzSW5zdGFuY2VkQnVmZmVyR2VvbWV0cnkpJiZudWxsPT09ZS5nZXQoIkFOR0xFX2luc3RhbmNlZF9hcnJheXMiKSlyZXR1cm47cCgpO2NvbnN0IGw9cy5hdHRyaWJ1dGVzLGM9YS5nZXRBdHRyaWJ1dGVzKCksdT1vLmRlZmF1bHRBdHRyaWJ1dGVWYWx1ZXM7Zm9yKGNvbnN0IGUgaW4gYyl7Y29uc3QgaT1jW2VdO2lmKGk+PTApe2NvbnN0IG89bFtlXTtpZih2b2lkIDAhPT1vKXtjb25zdCBlPW8ubm9ybWFsaXplZCxyPW8uaXRlbVNpemUsYT1uLmdldChvKTtpZih2b2lkIDA9PT1hKWNvbnRpbnVlO2NvbnN0IGw9YS5idWZmZXIsYz1hLnR5cGUsdT1hLmJ5dGVzUGVyRWxlbWVudDtpZihvLmlzSW50ZXJsZWF2ZWRCdWZmZXJBdHRyaWJ1dGUpe2NvbnN0IG49by5kYXRhLGE9bi5zdHJpZGUsaD1vLm9mZnNldDtuJiZuLmlzSW5zdGFuY2VkSW50ZXJsZWF2ZWRCdWZmZXI/KG0oaSxuLm1lc2hQZXJBdHRyaWJ1dGUpLHZvaWQgMD09PXMuX21heEluc3RhbmNlQ291bnQmJihzLl9tYXhJbnN0YW5jZUNvdW50PW4ubWVzaFBlckF0dHJpYnV0ZSpuLmNvdW50KSk6ZihpKSx0LmJpbmRCdWZmZXIoMzQ5NjIsbCksXyhpLHIsYyxlLGEqdSxoKnUpfWVsc2Ugby5pc0luc3RhbmNlZEJ1ZmZlckF0dHJpYnV0ZT8obShpLG8ubWVzaFBlckF0dHJpYnV0ZSksdm9pZCAwPT09cy5fbWF4SW5zdGFuY2VDb3VudCYmKHMuX21heEluc3RhbmNlQ291bnQ9by5tZXNoUGVyQXR0cmlidXRlKm8uY291bnQpKTpmKGkpLHQuYmluZEJ1ZmZlcigzNDk2MixsKSxfKGkscixjLGUsMCwwKX1lbHNlIGlmKCJpbnN0YW5jZU1hdHJpeCI9PT1lKXtjb25zdCBlPW4uZ2V0KHIuaW5zdGFuY2VNYXRyaXgpO2lmKHZvaWQgMD09PWUpY29udGludWU7Y29uc3Qgbz1lLmJ1ZmZlcixhPWUudHlwZTttKGkrMCwxKSxtKGkrMSwxKSxtKGkrMiwxKSxtKGkrMywxKSx0LmJpbmRCdWZmZXIoMzQ5NjIsbyksdC52ZXJ0ZXhBdHRyaWJQb2ludGVyKGkrMCw0LGEsITEsNjQsMCksdC52ZXJ0ZXhBdHRyaWJQb2ludGVyKGkrMSw0LGEsITEsNjQsMTYpLHQudmVydGV4QXR0cmliUG9pbnRlcihpKzIsNCxhLCExLDY0LDMyKSx0LnZlcnRleEF0dHJpYlBvaW50ZXIoaSszLDQsYSwhMSw2NCw0OCl9ZWxzZSBpZigiaW5zdGFuY2VDb2xvciI9PT1lKXtjb25zdCBlPW4uZ2V0KHIuaW5zdGFuY2VDb2xvcik7aWYodm9pZCAwPT09ZSljb250aW51ZTtjb25zdCBvPWUuYnVmZmVyLGE9ZS50eXBlO20oaSwxKSx0LmJpbmRCdWZmZXIoMzQ5NjIsbyksdC52ZXJ0ZXhBdHRyaWJQb2ludGVyKGksMyxhLCExLDEyLDApfWVsc2UgaWYodm9pZCAwIT09dSl7Y29uc3Qgbj11W2VdO2lmKHZvaWQgMCE9PW4pc3dpdGNoKG4ubGVuZ3RoKXtjYXNlIDI6dC52ZXJ0ZXhBdHRyaWIyZnYoaSxuKTticmVhaztjYXNlIDM6dC52ZXJ0ZXhBdHRyaWIzZnYoaSxuKTticmVhaztjYXNlIDQ6dC52ZXJ0ZXhBdHRyaWI0ZnYoaSxuKTticmVhaztkZWZhdWx0OnQudmVydGV4QXR0cmliMWZ2KGksbil9fX19ZygpfSkocixsLGgseSksbnVsbCE9PXYmJnQuYmluZEJ1ZmZlcigzNDk2MyxuLmdldCh2KS5idWZmZXIpKX0scmVzZXQ6eSxyZXNldERlZmF1bHRTdGF0ZTp2LGRpc3Bvc2U6ZnVuY3Rpb24geCgpe3koKTtmb3IoY29uc3QgdCBpbiBzKXtjb25zdCBlPXNbdF07Zm9yKGNvbnN0IHQgaW4gZSl7Y29uc3Qgbj1lW3RdO2Zvcihjb25zdCB0IGluIG4paChuW3RdLm9iamVjdCksZGVsZXRlIG5bdF07ZGVsZXRlIGVbdF19ZGVsZXRlIHNbdF19fSxyZWxlYXNlU3RhdGVzT2ZHZW9tZXRyeTpmdW5jdGlvbiB3KHQpe2lmKHZvaWQgMD09PXNbdC5pZF0pcmV0dXJuO2NvbnN0IGU9c1t0LmlkXTtmb3IoY29uc3QgdCBpbiBlKXtjb25zdCBuPWVbdF07Zm9yKGNvbnN0IHQgaW4gbiloKG5bdF0ub2JqZWN0KSxkZWxldGUgblt0XTtkZWxldGUgZVt0XX1kZWxldGUgc1t0LmlkXX0scmVsZWFzZVN0YXRlc09mUHJvZ3JhbTpmdW5jdGlvbiBTKHQpe2Zvcihjb25zdCBlIGluIHMpe2NvbnN0IG49c1tlXTtpZih2b2lkIDA9PT1uW3QuaWRdKWNvbnRpbnVlO2NvbnN0IGk9blt0LmlkXTtmb3IoY29uc3QgdCBpbiBpKWgoaVt0XS5vYmplY3QpLGRlbGV0ZSBpW3RdO2RlbGV0ZSBuW3QuaWRdfX0saW5pdEF0dHJpYnV0ZXM6cCxlbmFibGVBdHRyaWJ1dGU6ZixkaXNhYmxlVW51c2VkQXR0cmlidXRlczpnfX1mdW5jdGlvbiBNNnQodCxlLG4saSl7Y29uc3Qgcj1pLmlzV2ViR0wyO2xldCBvO3RoaXMuc2V0TW9kZT1mdW5jdGlvbiBhKHQpe289dH0sdGhpcy5yZW5kZXI9ZnVuY3Rpb24gcyhlLGkpe3QuZHJhd0FycmF5cyhvLGUsaSksbi51cGRhdGUoaSxvLDEpfSx0aGlzLnJlbmRlckluc3RhbmNlcz1mdW5jdGlvbiBsKGksYSxzKXtpZigwPT09cylyZXR1cm47bGV0IGwsYztpZihyKWw9dCxjPSJkcmF3QXJyYXlzSW5zdGFuY2VkIjtlbHNlIGlmKGw9ZS5nZXQoIkFOR0xFX2luc3RhbmNlZF9hcnJheXMiKSxjPSJkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUiLG51bGw9PT1sKXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMQnVmZmVyUmVuZGVyZXI6IHVzaW5nIFRIUkVFLkluc3RhbmNlZEJ1ZmZlckdlb21ldHJ5IGJ1dCBoYXJkd2FyZSBkb2VzIG5vdCBzdXBwb3J0IGV4dGVuc2lvbiBBTkdMRV9pbnN0YW5jZWRfYXJyYXlzLiIpO2xbY10obyxpLGEscyksbi51cGRhdGUoYSxvLHMpfX1mdW5jdGlvbiBFNnQodCxlLG4pe2xldCBpO2Z1bmN0aW9uIHIoZSl7aWYoImhpZ2hwIj09PWUpe2lmKHQuZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KDM1NjMzLDM2MzM4KS5wcmVjaXNpb24+MCYmdC5nZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoMzU2MzIsMzYzMzgpLnByZWNpc2lvbj4wKXJldHVybiJoaWdocCI7ZT0ibWVkaXVtcCJ9cmV0dXJuIm1lZGl1bXAiPT09ZSYmdC5nZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoMzU2MzMsMzYzMzcpLnByZWNpc2lvbj4wJiZ0LmdldFNoYWRlclByZWNpc2lvbkZvcm1hdCgzNTYzMiwzNjMzNykucHJlY2lzaW9uPjA/Im1lZGl1bXAiOiJsb3dwIn1jb25zdCBvPSJ1bmRlZmluZWQiIT10eXBlb2YgV2ViR0wyUmVuZGVyaW5nQ29udGV4dCYmdCBpbnN0YW5jZW9mIFdlYkdMMlJlbmRlcmluZ0NvbnRleHR8fCJ1bmRlZmluZWQiIT10eXBlb2YgV2ViR0wyQ29tcHV0ZVJlbmRlcmluZ0NvbnRleHQmJnQgaW5zdGFuY2VvZiBXZWJHTDJDb21wdXRlUmVuZGVyaW5nQ29udGV4dDtsZXQgYT12b2lkIDAhPT1uLnByZWNpc2lvbj9uLnByZWNpc2lvbjoiaGlnaHAiO2NvbnN0IHM9cihhKTtzIT09YSYmKGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjoiLGEsIm5vdCBzdXBwb3J0ZWQsIHVzaW5nIixzLCJpbnN0ZWFkLiIpLGE9cyk7Y29uc3QgbD1vfHxlLmhhcygiV0VCR0xfZHJhd19idWZmZXJzIiksYz0hMD09PW4ubG9nYXJpdGhtaWNEZXB0aEJ1ZmZlcix1PXQuZ2V0UGFyYW1ldGVyKDM0OTMwKSxoPXQuZ2V0UGFyYW1ldGVyKDM1NjYwKSxkPXQuZ2V0UGFyYW1ldGVyKDMzNzkpLHA9dC5nZXRQYXJhbWV0ZXIoMzQwNzYpLGY9dC5nZXRQYXJhbWV0ZXIoMzQ5MjEpLG09dC5nZXRQYXJhbWV0ZXIoMzYzNDcpLGc9dC5nZXRQYXJhbWV0ZXIoMzYzNDgpLF89dC5nZXRQYXJhbWV0ZXIoMzYzNDkpLHk9aD4wLHY9b3x8ZS5oYXMoIk9FU190ZXh0dXJlX2Zsb2F0Iik7cmV0dXJue2lzV2ViR0wyOm8sZHJhd0J1ZmZlcnM6bCxnZXRNYXhBbmlzb3Ryb3B5OmZ1bmN0aW9uIGIoKXtpZih2b2lkIDAhPT1pKXJldHVybiBpO2lmKCEwPT09ZS5oYXMoIkVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpKXtjb25zdCBuPWUuZ2V0KCJFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKTtpPXQuZ2V0UGFyYW1ldGVyKG4uTUFYX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUKX1lbHNlIGk9MDtyZXR1cm4gaX0sZ2V0TWF4UHJlY2lzaW9uOnIscHJlY2lzaW9uOmEsbG9nYXJpdGhtaWNEZXB0aEJ1ZmZlcjpjLG1heFRleHR1cmVzOnUsbWF4VmVydGV4VGV4dHVyZXM6aCxtYXhUZXh0dXJlU2l6ZTpkLG1heEN1YmVtYXBTaXplOnAsbWF4QXR0cmlidXRlczpmLG1heFZlcnRleFVuaWZvcm1zOm0sbWF4VmFyeWluZ3M6ZyxtYXhGcmFnbWVudFVuaWZvcm1zOl8sdmVydGV4VGV4dHVyZXM6eSxmbG9hdEZyYWdtZW50VGV4dHVyZXM6dixmbG9hdFZlcnRleFRleHR1cmVzOnkmJnYsbWF4U2FtcGxlczpvP3QuZ2V0UGFyYW1ldGVyKDM2MTgzKTowfX1mdW5jdGlvbiBUNnQodCl7Y29uc3QgZT10aGlzO2xldCBuPW51bGwsaT0wLHI9ITEsbz0hMTtjb25zdCBhPW5ldyBkNnQscz1uZXcgQTV0LGw9e3ZhbHVlOm51bGwsbmVlZHNVcGRhdGU6ITF9O2Z1bmN0aW9uIGMoKXtsLnZhbHVlIT09biYmKGwudmFsdWU9bixsLm5lZWRzVXBkYXRlPWk+MCksZS5udW1QbGFuZXM9aSxlLm51bUludGVyc2VjdGlvbj0wfWZ1bmN0aW9uIHUodCxuLGkscil7Y29uc3Qgbz1udWxsIT09dD90Lmxlbmd0aDowO2xldCBjPW51bGw7aWYoMCE9PW8pe2lmKGM9bC52YWx1ZSwhMCE9PXJ8fG51bGw9PT1jKXtjb25zdCBlPWkrNCpvLHI9bi5tYXRyaXhXb3JsZEludmVyc2U7cy5nZXROb3JtYWxNYXRyaXgociksKG51bGw9PT1jfHxjLmxlbmd0aDxlKSYmKGM9bmV3IEZsb2F0MzJBcnJheShlKSk7Zm9yKGxldCBlPTAsbj1pO2UhPT1vOysrZSxuKz00KWEuY29weSh0W2VdKS5hcHBseU1hdHJpeDQocixzKSxhLm5vcm1hbC50b0FycmF5KGMsbiksY1tuKzNdPWEuY29uc3RhbnR9bC52YWx1ZT1jLGwubmVlZHNVcGRhdGU9ITB9cmV0dXJuIGUubnVtUGxhbmVzPW8sZS5udW1JbnRlcnNlY3Rpb249MCxjfXRoaXMudW5pZm9ybT1sLHRoaXMubnVtUGxhbmVzPTAsdGhpcy5udW1JbnRlcnNlY3Rpb249MCx0aGlzLmluaXQ9ZnVuY3Rpb24odCxlLG8pe2NvbnN0IGE9MCE9PXQubGVuZ3RofHxlfHwwIT09aXx8cjtyZXR1cm4gcj1lLG49dSh0LG8sMCksaT10Lmxlbmd0aCxhfSx0aGlzLmJlZ2luU2hhZG93cz1mdW5jdGlvbigpe289ITAsdShudWxsKX0sdGhpcy5lbmRTaGFkb3dzPWZ1bmN0aW9uKCl7bz0hMSxjKCl9LHRoaXMuc2V0U3RhdGU9ZnVuY3Rpb24oZSxhLHMpe2NvbnN0IGg9ZS5jbGlwcGluZ1BsYW5lcyxkPWUuY2xpcEludGVyc2VjdGlvbixwPWUuY2xpcFNoYWRvd3MsZj10LmdldChlKTtpZighcnx8bnVsbD09PWh8fDA9PT1oLmxlbmd0aHx8byYmIXApbz91KG51bGwpOmMoKTtlbHNle2NvbnN0IHQ9bz8wOmksZT00KnQ7bGV0IHI9Zi5jbGlwcGluZ1N0YXRlfHxudWxsO2wudmFsdWU9cixyPXUoaCxhLGUscyk7Zm9yKGxldCB0PTA7dCE9PWU7Kyt0KXJbdF09blt0XTtmLmNsaXBwaW5nU3RhdGU9cix0aGlzLm51bUludGVyc2VjdGlvbj1kP3RoaXMubnVtUGxhbmVzOjAsdGhpcy5udW1QbGFuZXMrPXR9fX1mdW5jdGlvbiBDNnQodCl7bGV0IGU9bmV3IFdlYWtNYXA7ZnVuY3Rpb24gbih0LGUpe3JldHVybiBlPT09aTJ0P3QubWFwcGluZz1lMnQ6ZT09PXIydCYmKHQubWFwcGluZz1uMnQpLHR9ZnVuY3Rpb24gaSh0KXtjb25zdCBuPXQudGFyZ2V0O24ucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIsaSk7Y29uc3Qgcj1lLmdldChuKTt2b2lkIDAhPT1yJiYoZS5kZWxldGUobiksci5kaXNwb3NlKCkpfXJldHVybntnZXQ6ZnVuY3Rpb24gcihvKXtpZihvJiZvLmlzVGV4dHVyZSYmITE9PT1vLmlzUmVuZGVyVGFyZ2V0VGV4dHVyZSl7Y29uc3Qgcj1vLm1hcHBpbmc7aWYocj09PWkydHx8cj09PXIydCl7aWYoZS5oYXMobykpe3JldHVybiBuKGUuZ2V0KG8pLnRleHR1cmUsby5tYXBwaW5nKX17Y29uc3Qgcj1vLmltYWdlO2lmKHImJnIuaGVpZ2h0PjApe2NvbnN0IGE9dC5nZXRSZW5kZXJUYXJnZXQoKSxzPW5ldyBsNnQoci5oZWlnaHQvMik7cmV0dXJuIHMuZnJvbUVxdWlyZWN0YW5ndWxhclRleHR1cmUodCxvKSxlLnNldChvLHMpLHQuc2V0UmVuZGVyVGFyZ2V0KGEpLG8uYWRkRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIsaSksbihzLnRleHR1cmUsby5tYXBwaW5nKX1yZXR1cm4gbnVsbH19fXJldHVybiBvfSxkaXNwb3NlOmZ1bmN0aW9uIG8oKXtlPW5ldyBXZWFrTWFwfX19eDZ0LnBoeXNpY2FsPXt1bmlmb3Jtczp0NnQoW3g2dC5zdGFuZGFyZC51bmlmb3Jtcyx7Y2xlYXJjb2F0Ont2YWx1ZTowfSxjbGVhcmNvYXRNYXA6e3ZhbHVlOm51bGx9LGNsZWFyY29hdFJvdWdobmVzczp7dmFsdWU6MH0sY2xlYXJjb2F0Um91Z2huZXNzTWFwOnt2YWx1ZTpudWxsfSxjbGVhcmNvYXROb3JtYWxTY2FsZTp7dmFsdWU6bmV3IEM1dCgxLDEpfSxjbGVhcmNvYXROb3JtYWxNYXA6e3ZhbHVlOm51bGx9LHNoZWVuOnt2YWx1ZTpuZXcgczR0KDApfSx0cmFuc21pc3Npb246e3ZhbHVlOjB9LHRyYW5zbWlzc2lvbk1hcDp7dmFsdWU6bnVsbH0sdHJhbnNtaXNzaW9uU2FtcGxlclNpemU6e3ZhbHVlOm5ldyBDNXR9LHRyYW5zbWlzc2lvblNhbXBsZXJNYXA6e3ZhbHVlOm51bGx9LHRoaWNrbmVzczp7dmFsdWU6MH0sdGhpY2tuZXNzTWFwOnt2YWx1ZTpudWxsfSxhdHRlbnVhdGlvbkRpc3RhbmNlOnt2YWx1ZTowfSxhdHRlbnVhdGlvblRpbnQ6e3ZhbHVlOm5ldyBzNHQoMCl9LHNwZWN1bGFySW50ZW5zaXR5Ont2YWx1ZTowfSxzcGVjdWxhckludGVuc2l0eU1hcDp7dmFsdWU6bnVsbH0sc3BlY3VsYXJUaW50Ont2YWx1ZTpuZXcgczR0KDEsMSwxKX0sc3BlY3VsYXJUaW50TWFwOnt2YWx1ZTpudWxsfX1dKSx2ZXJ0ZXhTaGFkZXI6djZ0Lm1lc2hwaHlzaWNhbF92ZXJ0LGZyYWdtZW50U2hhZGVyOnY2dC5tZXNocGh5c2ljYWxfZnJhZ307Y2xhc3MgQTZ0IGV4dGVuZHMgaTZ0e2NvbnN0cnVjdG9yKHQ9LTEsZT0xLG49MSxpPS0xLHI9LjEsbz0yZTMpe3N1cGVyKCksdGhpcy50eXBlPSJPcnRob2dyYXBoaWNDYW1lcmEiLHRoaXMuem9vbT0xLHRoaXMudmlldz1udWxsLHRoaXMubGVmdD10LHRoaXMucmlnaHQ9ZSx0aGlzLnRvcD1uLHRoaXMuYm90dG9tPWksdGhpcy5uZWFyPXIsdGhpcy5mYXI9byx0aGlzLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKX1jb3B5KHQsZSl7cmV0dXJuIHN1cGVyLmNvcHkodCxlKSx0aGlzLmxlZnQ9dC5sZWZ0LHRoaXMucmlnaHQ9dC5yaWdodCx0aGlzLnRvcD10LnRvcCx0aGlzLmJvdHRvbT10LmJvdHRvbSx0aGlzLm5lYXI9dC5uZWFyLHRoaXMuZmFyPXQuZmFyLHRoaXMuem9vbT10Lnpvb20sdGhpcy52aWV3PW51bGw9PT10LnZpZXc/bnVsbDpPYmplY3QuYXNzaWduKHt9LHQudmlldyksdGhpc31zZXRWaWV3T2Zmc2V0KHQsZSxuLGkscixvKXtudWxsPT09dGhpcy52aWV3JiYodGhpcy52aWV3PXtlbmFibGVkOiEwLGZ1bGxXaWR0aDoxLGZ1bGxIZWlnaHQ6MSxvZmZzZXRYOjAsb2Zmc2V0WTowLHdpZHRoOjEsaGVpZ2h0OjF9KSx0aGlzLnZpZXcuZW5hYmxlZD0hMCx0aGlzLnZpZXcuZnVsbFdpZHRoPXQsdGhpcy52aWV3LmZ1bGxIZWlnaHQ9ZSx0aGlzLnZpZXcub2Zmc2V0WD1uLHRoaXMudmlldy5vZmZzZXRZPWksdGhpcy52aWV3LndpZHRoPXIsdGhpcy52aWV3LmhlaWdodD1vLHRoaXMudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpfWNsZWFyVmlld09mZnNldCgpe251bGwhPT10aGlzLnZpZXcmJih0aGlzLnZpZXcuZW5hYmxlZD0hMSksdGhpcy51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCl9dXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpe2NvbnN0IHQ9KHRoaXMucmlnaHQtdGhpcy5sZWZ0KS8oMip0aGlzLnpvb20pLGU9KHRoaXMudG9wLXRoaXMuYm90dG9tKS8oMip0aGlzLnpvb20pLG49KHRoaXMucmlnaHQrdGhpcy5sZWZ0KS8yLGk9KHRoaXMudG9wK3RoaXMuYm90dG9tKS8yO2xldCByPW4tdCxvPW4rdCxhPWkrZSxzPWktZTtpZihudWxsIT09dGhpcy52aWV3JiZ0aGlzLnZpZXcuZW5hYmxlZCl7Y29uc3QgdD0odGhpcy5yaWdodC10aGlzLmxlZnQpL3RoaXMudmlldy5mdWxsV2lkdGgvdGhpcy56b29tLGU9KHRoaXMudG9wLXRoaXMuYm90dG9tKS90aGlzLnZpZXcuZnVsbEhlaWdodC90aGlzLnpvb207cis9dCp0aGlzLnZpZXcub2Zmc2V0WCxvPXIrdCp0aGlzLnZpZXcud2lkdGgsYS09ZSp0aGlzLnZpZXcub2Zmc2V0WSxzPWEtZSp0aGlzLnZpZXcuaGVpZ2h0fXRoaXMucHJvamVjdGlvbk1hdHJpeC5tYWtlT3J0aG9ncmFwaGljKHIsbyxhLHMsdGhpcy5uZWFyLHRoaXMuZmFyKSx0aGlzLnByb2plY3Rpb25NYXRyaXhJbnZlcnNlLmNvcHkodGhpcy5wcm9qZWN0aW9uTWF0cml4KS5pbnZlcnQoKX10b0pTT04odCl7Y29uc3QgZT1zdXBlci50b0pTT04odCk7cmV0dXJuIGUub2JqZWN0Lnpvb209dGhpcy56b29tLGUub2JqZWN0LmxlZnQ9dGhpcy5sZWZ0LGUub2JqZWN0LnJpZ2h0PXRoaXMucmlnaHQsZS5vYmplY3QudG9wPXRoaXMudG9wLGUub2JqZWN0LmJvdHRvbT10aGlzLmJvdHRvbSxlLm9iamVjdC5uZWFyPXRoaXMubmVhcixlLm9iamVjdC5mYXI9dGhpcy5mYXIsbnVsbCE9PXRoaXMudmlldyYmKGUub2JqZWN0LnZpZXc9T2JqZWN0LmFzc2lnbih7fSx0aGlzLnZpZXcpKSxlfX1BNnQucHJvdG90eXBlLmlzT3J0aG9ncmFwaGljQ2FtZXJhPSEwO2NsYXNzIGs2dCBleHRlbmRzIG42dHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KSx0aGlzLnR5cGU9IlJhd1NoYWRlck1hdGVyaWFsIn19azZ0LnByb3RvdHlwZS5pc1Jhd1NoYWRlck1hdGVyaWFsPSEwO2NvbnN0IEw2dD1NYXRoLnBvdygyLDgpLFA2dD1bLjEyNSwuMjE1LC4zNSwuNDQ2LC41MjYsLjU4Ml0sTjZ0PTUrUDZ0Lmxlbmd0aCxJNnQ9MjAsUjZ0PXtbRzJ0XTowLFtXMnRdOjEsW1kydF06MixbWDJ0XTozLFskMnRdOjQsW0sydF06NSxbcTJ0XTo2fSxPNnQ9bmV3IGw0dCh7c2lkZToxLGRlcHRoV3JpdGU6ITEsZGVwdGhUZXN0OiExfSksejZ0PW5ldyBLNHQobmV3IEo0dCxPNnQpLEQ2dD1uZXcgQTZ0LHtfbG9kUGxhbmVzOkI2dCxfc2l6ZUxvZHM6SDZ0LF9zaWdtYXM6RjZ0fT0kNnQoKSxWNnQ9bmV3IHM0dDtsZXQgVTZ0PW51bGw7Y29uc3QgajZ0PSgxK01hdGguc3FydCg1KSkvMixHNnQ9MS9qNnQsVzZ0PVtuZXcgSDV0KDEsMSwxKSxuZXcgSDV0KC0xLDEsMSksbmV3IEg1dCgxLDEsLTEpLG5ldyBINXQoLTEsMSwtMSksbmV3IEg1dCgwLGo2dCxHNnQpLG5ldyBINXQoMCxqNnQsLUc2dCksbmV3IEg1dChHNnQsMCxqNnQpLG5ldyBINXQoLUc2dCwwLGo2dCksbmV3IEg1dChqNnQsRzZ0LDApLG5ldyBINXQoLWo2dCxHNnQsMCldO2Z1bmN0aW9uIHE2dCh0KXtjb25zdCBlPU1hdGgubWF4KHQucix0LmcsdC5iKSxuPU1hdGgubWluKE1hdGgubWF4KE1hdGguY2VpbChNYXRoLmxvZzIoZSkpLC0xMjgpLDEyNyk7dC5tdWx0aXBseVNjYWxhcihNYXRoLnBvdygyLC1uKSk7cmV0dXJuKG4rMTI4KS8yNTV9Y2xhc3MgWTZ0e2NvbnN0cnVjdG9yKHQpe3RoaXMuX3JlbmRlcmVyPXQsdGhpcy5fcGluZ1BvbmdSZW5kZXJUYXJnZXQ9bnVsbCx0aGlzLl9ibHVyTWF0ZXJpYWw9KGZ1bmN0aW9uIGUodCl7Y29uc3QgZT1uZXcgRmxvYXQzMkFycmF5KHQpLG49bmV3IEg1dCgwLDEsMCk7cmV0dXJuIG5ldyBrNnQoe25hbWU6IlNwaGVyaWNhbEdhdXNzaWFuQmx1ciIsZGVmaW5lczp7bjp0fSx1bmlmb3Jtczp7ZW52TWFwOnt2YWx1ZTpudWxsfSxzYW1wbGVzOnt2YWx1ZToxfSx3ZWlnaHRzOnt2YWx1ZTplfSxsYXRpdHVkaW5hbDp7dmFsdWU6ITF9LGRUaGV0YTp7dmFsdWU6MH0sbWlwSW50Ont2YWx1ZTowfSxwb2xlQXhpczp7dmFsdWU6bn0saW5wdXRFbmNvZGluZzp7dmFsdWU6UjZ0WzNlM119LG91dHB1dEVuY29kaW5nOnt2YWx1ZTpSNnRbM2UzXX19LHZlcnRleFNoYWRlcjp0OXQoKSxmcmFnbWVudFNoYWRlcjpgXG5cblx0XHRcdHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuXHRcdFx0cHJlY2lzaW9uIG1lZGl1bXAgaW50O1xuXG5cdFx0XHR2YXJ5aW5nIHZlYzMgdk91dHB1dERpcmVjdGlvbjtcblxuXHRcdFx0dW5pZm9ybSBzYW1wbGVyMkQgZW52TWFwO1xuXHRcdFx0dW5pZm9ybSBpbnQgc2FtcGxlcztcblx0XHRcdHVuaWZvcm0gZmxvYXQgd2VpZ2h0c1sgbiBdO1xuXHRcdFx0dW5pZm9ybSBib29sIGxhdGl0dWRpbmFsO1xuXHRcdFx0dW5pZm9ybSBmbG9hdCBkVGhldGE7XG5cdFx0XHR1bmlmb3JtIGZsb2F0IG1pcEludDtcblx0XHRcdHVuaWZvcm0gdmVjMyBwb2xlQXhpcztcblxuXHRcdFx0JHtlOXQoKX1cblxuXHRcdFx0I2RlZmluZSBFTlZNQVBfVFlQRV9DVUJFX1VWXG5cdFx0XHQjaW5jbHVkZSA8Y3ViZV91dl9yZWZsZWN0aW9uX2ZyYWdtZW50PlxuXG5cdFx0XHR2ZWMzIGdldFNhbXBsZSggZmxvYXQgdGhldGEsIHZlYzMgYXhpcyApIHtcblxuXHRcdFx0XHRmbG9hdCBjb3NUaGV0YSA9IGNvcyggdGhldGEgKTtcblx0XHRcdFx0Ly8gUm9kcmlndWVzJyBheGlzLWFuZ2xlIHJvdGF0aW9uXG5cdFx0XHRcdHZlYzMgc2FtcGxlRGlyZWN0aW9uID0gdk91dHB1dERpcmVjdGlvbiAqIGNvc1RoZXRhXG5cdFx0XHRcdFx0KyBjcm9zcyggYXhpcywgdk91dHB1dERpcmVjdGlvbiApICogc2luKCB0aGV0YSApXG5cdFx0XHRcdFx0KyBheGlzICogZG90KCBheGlzLCB2T3V0cHV0RGlyZWN0aW9uICkgKiAoIDEuMCAtIGNvc1RoZXRhICk7XG5cblx0XHRcdFx0cmV0dXJuIGJpbGluZWFyQ3ViZVVWKCBlbnZNYXAsIHNhbXBsZURpcmVjdGlvbiwgbWlwSW50ICk7XG5cblx0XHRcdH1cblxuXHRcdFx0dm9pZCBtYWluKCkge1xuXG5cdFx0XHRcdHZlYzMgYXhpcyA9IGxhdGl0dWRpbmFsID8gcG9sZUF4aXMgOiBjcm9zcyggcG9sZUF4aXMsIHZPdXRwdXREaXJlY3Rpb24gKTtcblxuXHRcdFx0XHRpZiAoIGFsbCggZXF1YWwoIGF4aXMsIHZlYzMoIDAuMCApICkgKSApIHtcblxuXHRcdFx0XHRcdGF4aXMgPSB2ZWMzKCB2T3V0cHV0RGlyZWN0aW9uLnosIDAuMCwgLSB2T3V0cHV0RGlyZWN0aW9uLnggKTtcblxuXHRcdFx0XHR9XG5cblx0XHRcdFx0YXhpcyA9IG5vcm1hbGl6ZSggYXhpcyApO1xuXG5cdFx0XHRcdGdsX0ZyYWdDb2xvciA9IHZlYzQoIDAuMCwgMC4wLCAwLjAsIDEuMCApO1xuXHRcdFx0XHRnbF9GcmFnQ29sb3IucmdiICs9IHdlaWdodHNbIDAgXSAqIGdldFNhbXBsZSggMC4wLCBheGlzICk7XG5cblx0XHRcdFx0Zm9yICggaW50IGkgPSAxOyBpIDwgbjsgaSsrICkge1xuXG5cdFx0XHRcdFx0aWYgKCBpID49IHNhbXBsZXMgKSB7XG5cblx0XHRcdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0ZmxvYXQgdGhldGEgPSBkVGhldGEgKiBmbG9hdCggaSApO1xuXHRcdFx0XHRcdGdsX0ZyYWdDb2xvci5yZ2IgKz0gd2VpZ2h0c1sgaSBdICogZ2V0U2FtcGxlKCAtMS4wICogdGhldGEsIGF4aXMgKTtcblx0XHRcdFx0XHRnbF9GcmFnQ29sb3IucmdiICs9IHdlaWdodHNbIGkgXSAqIGdldFNhbXBsZSggdGhldGEsIGF4aXMgKTtcblxuXHRcdFx0XHR9XG5cblx0XHRcdFx0Z2xfRnJhZ0NvbG9yID0gbGluZWFyVG9PdXRwdXRUZXhlbCggZ2xfRnJhZ0NvbG9yICk7XG5cblx0XHRcdH1cblx0XHRgLGJsZW5kaW5nOjAsZGVwdGhUZXN0OiExLGRlcHRoV3JpdGU6ITF9KX0pKEk2dCksdGhpcy5fZXF1aXJlY3RTaGFkZXI9bnVsbCx0aGlzLl9jdWJlbWFwU2hhZGVyPW51bGwsdGhpcy5fY29tcGlsZU1hdGVyaWFsKHRoaXMuX2JsdXJNYXRlcmlhbCl9ZnJvbVNjZW5lKHQsZT0wLG49LjEsaT0xMDApe1U2dD10aGlzLl9yZW5kZXJlci5nZXRSZW5kZXJUYXJnZXQoKTtjb25zdCByPXRoaXMuX2FsbG9jYXRlVGFyZ2V0cygpO3JldHVybiB0aGlzLl9zY2VuZVRvQ3ViZVVWKHQsbixpLHIpLGU+MCYmdGhpcy5fYmx1cihyLDAsMCxlKSx0aGlzLl9hcHBseVBNUkVNKHIpLHRoaXMuX2NsZWFudXAocikscn1mcm9tRXF1aXJlY3Rhbmd1bGFyKHQpe3JldHVybiB0aGlzLl9mcm9tVGV4dHVyZSh0KX1mcm9tQ3ViZW1hcCh0KXtyZXR1cm4gdGhpcy5fZnJvbVRleHR1cmUodCl9Y29tcGlsZUN1YmVtYXBTaGFkZXIoKXtudWxsPT09dGhpcy5fY3ViZW1hcFNoYWRlciYmKHRoaXMuX2N1YmVtYXBTaGFkZXI9UTZ0KCksdGhpcy5fY29tcGlsZU1hdGVyaWFsKHRoaXMuX2N1YmVtYXBTaGFkZXIpKX1jb21waWxlRXF1aXJlY3Rhbmd1bGFyU2hhZGVyKCl7bnVsbD09PXRoaXMuX2VxdWlyZWN0U2hhZGVyJiYodGhpcy5fZXF1aXJlY3RTaGFkZXI9SjZ0KCksdGhpcy5fY29tcGlsZU1hdGVyaWFsKHRoaXMuX2VxdWlyZWN0U2hhZGVyKSl9ZGlzcG9zZSgpe3RoaXMuX2JsdXJNYXRlcmlhbC5kaXNwb3NlKCksbnVsbCE9PXRoaXMuX2N1YmVtYXBTaGFkZXImJnRoaXMuX2N1YmVtYXBTaGFkZXIuZGlzcG9zZSgpLG51bGwhPT10aGlzLl9lcXVpcmVjdFNoYWRlciYmdGhpcy5fZXF1aXJlY3RTaGFkZXIuZGlzcG9zZSgpO2ZvcihsZXQgdD0wO3Q8QjZ0Lmxlbmd0aDt0KyspQjZ0W3RdLmRpc3Bvc2UoKX1fY2xlYW51cCh0KXt0aGlzLl9waW5nUG9uZ1JlbmRlclRhcmdldC5kaXNwb3NlKCksdGhpcy5fcmVuZGVyZXIuc2V0UmVuZGVyVGFyZ2V0KFU2dCksdC5zY2lzc29yVGVzdD0hMSxaNnQodCwwLDAsdC53aWR0aCx0LmhlaWdodCl9X2Zyb21UZXh0dXJlKHQpe1U2dD10aGlzLl9yZW5kZXJlci5nZXRSZW5kZXJUYXJnZXQoKTtjb25zdCBlPXRoaXMuX2FsbG9jYXRlVGFyZ2V0cyh0KTtyZXR1cm4gdGhpcy5fdGV4dHVyZVRvQ3ViZVVWKHQsZSksdGhpcy5fYXBwbHlQTVJFTShlKSx0aGlzLl9jbGVhbnVwKGUpLGV9X2FsbG9jYXRlVGFyZ2V0cyh0KXtjb25zdCBlPXttYWdGaWx0ZXI6dTJ0LG1pbkZpbHRlcjp1MnQsZ2VuZXJhdGVNaXBtYXBzOiExLHR5cGU6ZzJ0LGZvcm1hdDoxMDIzLGVuY29kaW5nOlg2dCh0KT90LmVuY29kaW5nOlkydCxkZXB0aEJ1ZmZlcjohMX0sbj1LNnQoZSk7cmV0dXJuIG4uZGVwdGhCdWZmZXI9IXQsdGhpcy5fcGluZ1BvbmdSZW5kZXJUYXJnZXQ9SzZ0KGUpLG59X2NvbXBpbGVNYXRlcmlhbCh0KXtjb25zdCBlPW5ldyBLNHQoQjZ0WzBdLHQpO3RoaXMuX3JlbmRlcmVyLmNvbXBpbGUoZSxENnQpfV9zY2VuZVRvQ3ViZVVWKHQsZSxuLGkpe2NvbnN0IHI9bmV3IHI2dCg5MCwxLGUsbiksbz1bMSwtMSwxLDEsMSwxXSxhPVsxLDEsMSwtMSwtMSwtMV0scz10aGlzLl9yZW5kZXJlcixsPXMuYXV0b0NsZWFyLGM9cy5vdXRwdXRFbmNvZGluZyx1PXMudG9uZU1hcHBpbmc7cy5nZXRDbGVhckNvbG9yKFY2dCkscy50b25lTWFwcGluZz0wLHMub3V0cHV0RW5jb2Rpbmc9RzJ0LHMuYXV0b0NsZWFyPSExO2xldCBoPSExO2NvbnN0IGQ9dC5iYWNrZ3JvdW5kO2lmKGQpe2lmKGQuaXNDb2xvcil7TzZ0LmNvbG9yLmNvcHkoZCkuY29udmVydFNSR0JUb0xpbmVhcigpLHQuYmFja2dyb3VuZD1udWxsO2NvbnN0IGU9cTZ0KE82dC5jb2xvcik7TzZ0Lm9wYWNpdHk9ZSxoPSEwfX1lbHNle082dC5jb2xvci5jb3B5KFY2dCkuY29udmVydFNSR0JUb0xpbmVhcigpO2NvbnN0IHQ9cTZ0KE82dC5jb2xvcik7TzZ0Lm9wYWNpdHk9dCxoPSEwfWZvcihsZXQgZT0wO2U8NjtlKyspe2NvbnN0IG49ZSUzOzA9PW4/KHIudXAuc2V0KDAsb1tlXSwwKSxyLmxvb2tBdChhW2VdLDAsMCkpOjE9PW4/KHIudXAuc2V0KDAsMCxvW2VdKSxyLmxvb2tBdCgwLGFbZV0sMCkpOihyLnVwLnNldCgwLG9bZV0sMCksci5sb29rQXQoMCwwLGFbZV0pKSxaNnQoaSxuKkw2dCxlPjI/TDZ0OjAsTDZ0LEw2dCkscy5zZXRSZW5kZXJUYXJnZXQoaSksaCYmcy5yZW5kZXIoejZ0LHIpLHMucmVuZGVyKHQscil9cy50b25lTWFwcGluZz11LHMub3V0cHV0RW5jb2Rpbmc9YyxzLmF1dG9DbGVhcj1sfV90ZXh0dXJlVG9DdWJlVVYodCxlKXtjb25zdCBuPXRoaXMuX3JlbmRlcmVyO3QuaXNDdWJlVGV4dHVyZT9udWxsPT10aGlzLl9jdWJlbWFwU2hhZGVyJiYodGhpcy5fY3ViZW1hcFNoYWRlcj1RNnQoKSk6bnVsbD09dGhpcy5fZXF1aXJlY3RTaGFkZXImJih0aGlzLl9lcXVpcmVjdFNoYWRlcj1KNnQoKSk7Y29uc3QgaT10LmlzQ3ViZVRleHR1cmU/dGhpcy5fY3ViZW1hcFNoYWRlcjp0aGlzLl9lcXVpcmVjdFNoYWRlcixyPW5ldyBLNHQoQjZ0WzBdLGkpLG89aS51bmlmb3JtcztvLmVudk1hcC52YWx1ZT10LHQuaXNDdWJlVGV4dHVyZXx8by50ZXhlbFNpemUudmFsdWUuc2V0KDEvdC5pbWFnZS53aWR0aCwxL3QuaW1hZ2UuaGVpZ2h0KSxvLmlucHV0RW5jb2RpbmcudmFsdWU9UjZ0W3QuZW5jb2RpbmddLG8ub3V0cHV0RW5jb2RpbmcudmFsdWU9UjZ0W2UudGV4dHVyZS5lbmNvZGluZ10sWjZ0KGUsMCwwLDMqTDZ0LDIqTDZ0KSxuLnNldFJlbmRlclRhcmdldChlKSxuLnJlbmRlcihyLEQ2dCl9X2FwcGx5UE1SRU0odCl7Y29uc3QgZT10aGlzLl9yZW5kZXJlcixuPWUuYXV0b0NsZWFyO2UuYXV0b0NsZWFyPSExO2ZvcihsZXQgZT0xO2U8TjZ0O2UrKyl7Y29uc3Qgbj1NYXRoLnNxcnQoRjZ0W2VdKkY2dFtlXS1GNnRbZS0xXSpGNnRbZS0xXSk7dGhpcy5fYmx1cih0LGUtMSxlLG4sVzZ0WyhlLTEpJVc2dC5sZW5ndGhdKX1lLmF1dG9DbGVhcj1ufV9ibHVyKHQsZSxuLGkscil7Y29uc3Qgbz10aGlzLl9waW5nUG9uZ1JlbmRlclRhcmdldDt0aGlzLl9oYWxmQmx1cih0LG8sZSxuLGksImxhdGl0dWRpbmFsIixyKSx0aGlzLl9oYWxmQmx1cihvLHQsbixuLGksImxvbmdpdHVkaW5hbCIscil9X2hhbGZCbHVyKHQsZSxuLGkscixvLGEpe2NvbnN0IHM9dGhpcy5fcmVuZGVyZXIsbD10aGlzLl9ibHVyTWF0ZXJpYWw7ImxhdGl0dWRpbmFsIiE9PW8mJiJsb25naXR1ZGluYWwiIT09byYmY29uc29sZS5lcnJvcigiYmx1ciBkaXJlY3Rpb24gbXVzdCBiZSBlaXRoZXIgbGF0aXR1ZGluYWwgb3IgbG9uZ2l0dWRpbmFsISIpO2NvbnN0IGM9bmV3IEs0dChCNnRbaV0sbCksdT1sLnVuaWZvcm1zLGg9SDZ0W25dLTEsZD1pc0Zpbml0ZShyKT9NYXRoLlBJLygyKmgpOjIqTWF0aC5QSS8zOSxwPXIvZCxmPWlzRmluaXRlKHIpPzErTWF0aC5mbG9vcigzKnApOkk2dDtmPkk2dCYmY29uc29sZS53YXJuKGBzaWdtYVJhZGlhbnMsICR7cn0sIGlzIHRvbyBsYXJnZSBhbmQgd2lsbCBjbGlwLCBhcyBpdCByZXF1ZXN0ZWQgJHtmfSBzYW1wbGVzIHdoZW4gdGhlIG1heGltdW0gaXMgc2V0IHRvIDIwYCk7Y29uc3QgbT1bXTtsZXQgZz0wO2ZvcihsZXQgdD0wO3Q8STZ0OysrdCl7Y29uc3QgZT10L3Asbj1NYXRoLmV4cCgtZSplLzIpO20ucHVzaChuKSwwPT10P2crPW46dDxmJiYoZys9MipuKX1mb3IobGV0IHQ9MDt0PG0ubGVuZ3RoO3QrKyltW3RdPW1bdF0vZzt1LmVudk1hcC52YWx1ZT10LnRleHR1cmUsdS5zYW1wbGVzLnZhbHVlPWYsdS53ZWlnaHRzLnZhbHVlPW0sdS5sYXRpdHVkaW5hbC52YWx1ZT0ibGF0aXR1ZGluYWwiPT09byxhJiYodS5wb2xlQXhpcy52YWx1ZT1hKSx1LmRUaGV0YS52YWx1ZT1kLHUubWlwSW50LnZhbHVlPTgtbix1LmlucHV0RW5jb2RpbmcudmFsdWU9UjZ0W3QudGV4dHVyZS5lbmNvZGluZ10sdS5vdXRwdXRFbmNvZGluZy52YWx1ZT1SNnRbdC50ZXh0dXJlLmVuY29kaW5nXTtjb25zdCBfPUg2dFtpXTtaNnQoZSwzKk1hdGgubWF4KDAsTDZ0LTIqXyksKDA9PT1pPzA6MipMNnQpKzIqXyooaT40P2ktOCs0OjApLDMqXywyKl8pLHMuc2V0UmVuZGVyVGFyZ2V0KGUpLHMucmVuZGVyKGMsRDZ0KX19ZnVuY3Rpb24gWDZ0KHQpe3JldHVybiB2b2lkIDAhPT10JiZ0LnR5cGU9PT1nMnQmJih0LmVuY29kaW5nPT09RzJ0fHx0LmVuY29kaW5nPT09VzJ0fHx0LmVuY29kaW5nPT09cTJ0KX1mdW5jdGlvbiAkNnQoKXtjb25zdCB0PVtdLGU9W10sbj1bXTtsZXQgaT04O2ZvcihsZXQgcj0wO3I8TjZ0O3IrKyl7Y29uc3Qgbz1NYXRoLnBvdygyLGkpO2UucHVzaChvKTtsZXQgYT0xL287cj40P2E9UDZ0W3ItOCs0LTFdOjA9PXImJihhPTApLG4ucHVzaChhKTtjb25zdCBzPTEvKG8tMSksbD0tcy8yLGM9MStzLzIsdT1bbCxsLGMsbCxjLGMsbCxsLGMsYyxsLGNdLGg9NixkPTYscD0zLGY9MixtPTEsZz1uZXcgRmxvYXQzMkFycmF5KHAqZCpoKSxfPW5ldyBGbG9hdDMyQXJyYXkoZipkKmgpLHk9bmV3IEZsb2F0MzJBcnJheShtKmQqaCk7Zm9yKGxldCB0PTA7dDxoO3QrKyl7Y29uc3QgZT10JTMqMi8zLTEsbj10PjI/MDotMTtnLnNldChbZSxuLDAsZSsyLzMsbiwwLGUrMi8zLG4rMSwwLGUsbiwwLGUrMi8zLG4rMSwwLGUsbisxLDBdLHAqZCp0KSxfLnNldCh1LGYqZCp0KTt5LnNldChbdCx0LHQsdCx0LHRdLG0qZCp0KX1jb25zdCB2PW5ldyBONHQ7di5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgaDR0KGcscCkpLHYuc2V0QXR0cmlidXRlKCJ1diIsbmV3IGg0dChfLGYpKSx2LnNldEF0dHJpYnV0ZSgiZmFjZUluZGV4IixuZXcgaDR0KHksbSkpLHQucHVzaCh2KSxpPjQmJmktLX1yZXR1cm57X2xvZFBsYW5lczp0LF9zaXplTG9kczplLF9zaWdtYXM6bn19ZnVuY3Rpb24gSzZ0KHQpe2NvbnN0IGU9bmV3IE81dCgzKkw2dCwzKkw2dCx0KTtyZXR1cm4gZS50ZXh0dXJlLm1hcHBpbmc9bzJ0LGUudGV4dHVyZS5uYW1lPSJQTVJFTS5jdWJlVXYiLGUuc2Npc3NvclRlc3Q9ITAsZX1mdW5jdGlvbiBaNnQodCxlLG4saSxyKXt0LnZpZXdwb3J0LnNldChlLG4saSxyKSx0LnNjaXNzb3Iuc2V0KGUsbixpLHIpfWZ1bmN0aW9uIEo2dCgpe2NvbnN0IHQ9bmV3IEM1dCgxLDEpO3JldHVybiBuZXcgazZ0KHtuYW1lOiJFcXVpcmVjdGFuZ3VsYXJUb0N1YmVVViIsdW5pZm9ybXM6e2Vudk1hcDp7dmFsdWU6bnVsbH0sdGV4ZWxTaXplOnt2YWx1ZTp0fSxpbnB1dEVuY29kaW5nOnt2YWx1ZTpSNnRbM2UzXX0sb3V0cHV0RW5jb2Rpbmc6e3ZhbHVlOlI2dFszZTNdfX0sdmVydGV4U2hhZGVyOnQ5dCgpLGZyYWdtZW50U2hhZGVyOmBcblxuXHRcdFx0cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG5cdFx0XHRwcmVjaXNpb24gbWVkaXVtcCBpbnQ7XG5cblx0XHRcdHZhcnlpbmcgdmVjMyB2T3V0cHV0RGlyZWN0aW9uO1xuXG5cdFx0XHR1bmlmb3JtIHNhbXBsZXIyRCBlbnZNYXA7XG5cdFx0XHR1bmlmb3JtIHZlYzIgdGV4ZWxTaXplO1xuXG5cdFx0XHQke2U5dCgpfVxuXG5cdFx0XHQjaW5jbHVkZSA8Y29tbW9uPlxuXG5cdFx0XHR2b2lkIG1haW4oKSB7XG5cblx0XHRcdFx0Z2xfRnJhZ0NvbG9yID0gdmVjNCggMC4wLCAwLjAsIDAuMCwgMS4wICk7XG5cblx0XHRcdFx0dmVjMyBvdXRwdXREaXJlY3Rpb24gPSBub3JtYWxpemUoIHZPdXRwdXREaXJlY3Rpb24gKTtcblx0XHRcdFx0dmVjMiB1diA9IGVxdWlyZWN0VXYoIG91dHB1dERpcmVjdGlvbiApO1xuXG5cdFx0XHRcdHZlYzIgZiA9IGZyYWN0KCB1diAvIHRleGVsU2l6ZSAtIDAuNSApO1xuXHRcdFx0XHR1diAtPSBmICogdGV4ZWxTaXplO1xuXHRcdFx0XHR2ZWMzIHRsID0gZW52TWFwVGV4ZWxUb0xpbmVhciggdGV4dHVyZTJEICggZW52TWFwLCB1diApICkucmdiO1xuXHRcdFx0XHR1di54ICs9IHRleGVsU2l6ZS54O1xuXHRcdFx0XHR2ZWMzIHRyID0gZW52TWFwVGV4ZWxUb0xpbmVhciggdGV4dHVyZTJEICggZW52TWFwLCB1diApICkucmdiO1xuXHRcdFx0XHR1di55ICs9IHRleGVsU2l6ZS55O1xuXHRcdFx0XHR2ZWMzIGJyID0gZW52TWFwVGV4ZWxUb0xpbmVhciggdGV4dHVyZTJEICggZW52TWFwLCB1diApICkucmdiO1xuXHRcdFx0XHR1di54IC09IHRleGVsU2l6ZS54O1xuXHRcdFx0XHR2ZWMzIGJsID0gZW52TWFwVGV4ZWxUb0xpbmVhciggdGV4dHVyZTJEICggZW52TWFwLCB1diApICkucmdiO1xuXG5cdFx0XHRcdHZlYzMgdG0gPSBtaXgoIHRsLCB0ciwgZi54ICk7XG5cdFx0XHRcdHZlYzMgYm0gPSBtaXgoIGJsLCBiciwgZi54ICk7XG5cdFx0XHRcdGdsX0ZyYWdDb2xvci5yZ2IgPSBtaXgoIHRtLCBibSwgZi55ICk7XG5cblx0XHRcdFx0Z2xfRnJhZ0NvbG9yID0gbGluZWFyVG9PdXRwdXRUZXhlbCggZ2xfRnJhZ0NvbG9yICk7XG5cblx0XHRcdH1cblx0XHRgLGJsZW5kaW5nOjAsZGVwdGhUZXN0OiExLGRlcHRoV3JpdGU6ITF9KX1mdW5jdGlvbiBRNnQoKXtyZXR1cm4gbmV3IGs2dCh7bmFtZToiQ3ViZW1hcFRvQ3ViZVVWIix1bmlmb3Jtczp7ZW52TWFwOnt2YWx1ZTpudWxsfSxpbnB1dEVuY29kaW5nOnt2YWx1ZTpSNnRbM2UzXX0sb3V0cHV0RW5jb2Rpbmc6e3ZhbHVlOlI2dFszZTNdfX0sdmVydGV4U2hhZGVyOnQ5dCgpLGZyYWdtZW50U2hhZGVyOmBcblxuXHRcdFx0cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG5cdFx0XHRwcmVjaXNpb24gbWVkaXVtcCBpbnQ7XG5cblx0XHRcdHZhcnlpbmcgdmVjMyB2T3V0cHV0RGlyZWN0aW9uO1xuXG5cdFx0XHR1bmlmb3JtIHNhbXBsZXJDdWJlIGVudk1hcDtcblxuXHRcdFx0JHtlOXQoKX1cblxuXHRcdFx0dm9pZCBtYWluKCkge1xuXG5cdFx0XHRcdGdsX0ZyYWdDb2xvciA9IHZlYzQoIDAuMCwgMC4wLCAwLjAsIDEuMCApO1xuXHRcdFx0XHRnbF9GcmFnQ29sb3IucmdiID0gZW52TWFwVGV4ZWxUb0xpbmVhciggdGV4dHVyZUN1YmUoIGVudk1hcCwgdmVjMyggLSB2T3V0cHV0RGlyZWN0aW9uLngsIHZPdXRwdXREaXJlY3Rpb24ueXogKSApICkucmdiO1xuXHRcdFx0XHRnbF9GcmFnQ29sb3IgPSBsaW5lYXJUb091dHB1dFRleGVsKCBnbF9GcmFnQ29sb3IgKTtcblxuXHRcdFx0fVxuXHRcdGAsYmxlbmRpbmc6MCxkZXB0aFRlc3Q6ITEsZGVwdGhXcml0ZTohMX0pfWZ1bmN0aW9uIHQ5dCgpe3JldHVybiJcblxuXHRcdHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuXHRcdHByZWNpc2lvbiBtZWRpdW1wIGludDtcblxuXHRcdGF0dHJpYnV0ZSB2ZWMzIHBvc2l0aW9uO1xuXHRcdGF0dHJpYnV0ZSB2ZWMyIHV2O1xuXHRcdGF0dHJpYnV0ZSBmbG9hdCBmYWNlSW5kZXg7XG5cblx0XHR2YXJ5aW5nIHZlYzMgdk91dHB1dERpcmVjdGlvbjtcblxuXHRcdC8vIFJIIGNvb3JkaW5hdGUgc3lzdGVtOyBQTVJFTSBmYWNlLWluZGV4aW5nIGNvbnZlbnRpb25cblx0XHR2ZWMzIGdldERpcmVjdGlvbiggdmVjMiB1diwgZmxvYXQgZmFjZSApIHtcblxuXHRcdFx0dXYgPSAyLjAgKiB1diAtIDEuMDtcblxuXHRcdFx0dmVjMyBkaXJlY3Rpb24gPSB2ZWMzKCB1diwgMS4wICk7XG5cblx0XHRcdGlmICggZmFjZSA9PSAwLjAgKSB7XG5cblx0XHRcdFx0ZGlyZWN0aW9uID0gZGlyZWN0aW9uLnp5eDsgLy8gKCAxLCB2LCB1ICkgcG9zIHhcblxuXHRcdFx0fSBlbHNlIGlmICggZmFjZSA9PSAxLjAgKSB7XG5cblx0XHRcdFx0ZGlyZWN0aW9uID0gZGlyZWN0aW9uLnh6eTtcblx0XHRcdFx0ZGlyZWN0aW9uLnh6ICo9IC0xLjA7IC8vICggLXUsIDEsIC12ICkgcG9zIHlcblxuXHRcdFx0fSBlbHNlIGlmICggZmFjZSA9PSAyLjAgKSB7XG5cblx0XHRcdFx0ZGlyZWN0aW9uLnggKj0gLTEuMDsgLy8gKCAtdSwgdiwgMSApIHBvcyB6XG5cblx0XHRcdH0gZWxzZSBpZiAoIGZhY2UgPT0gMy4wICkge1xuXG5cdFx0XHRcdGRpcmVjdGlvbiA9IGRpcmVjdGlvbi56eXg7XG5cdFx0XHRcdGRpcmVjdGlvbi54eiAqPSAtMS4wOyAvLyAoIC0xLCB2LCAtdSApIG5lZyB4XG5cblx0XHRcdH0gZWxzZSBpZiAoIGZhY2UgPT0gNC4wICkge1xuXG5cdFx0XHRcdGRpcmVjdGlvbiA9IGRpcmVjdGlvbi54enk7XG5cdFx0XHRcdGRpcmVjdGlvbi54eSAqPSAtMS4wOyAvLyAoIC11LCAtMSwgdiApIG5lZyB5XG5cblx0XHRcdH0gZWxzZSBpZiAoIGZhY2UgPT0gNS4wICkge1xuXG5cdFx0XHRcdGRpcmVjdGlvbi56ICo9IC0xLjA7IC8vICggdSwgdiwgLTEgKSBuZWcgelxuXG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBkaXJlY3Rpb247XG5cblx0XHR9XG5cblx0XHR2b2lkIG1haW4oKSB7XG5cblx0XHRcdHZPdXRwdXREaXJlY3Rpb24gPSBnZXREaXJlY3Rpb24oIHV2LCBmYWNlSW5kZXggKTtcblx0XHRcdGdsX1Bvc2l0aW9uID0gdmVjNCggcG9zaXRpb24sIDEuMCApO1xuXG5cdFx0fVxuXHQifWZ1bmN0aW9uIGU5dCgpe3JldHVybiJcblxuXHRcdHVuaWZvcm0gaW50IGlucHV0RW5jb2Rpbmc7XG5cdFx0dW5pZm9ybSBpbnQgb3V0cHV0RW5jb2Rpbmc7XG5cblx0XHQjaW5jbHVkZSA8ZW5jb2RpbmdzX3BhcnNfZnJhZ21lbnQ+XG5cblx0XHR2ZWM0IGlucHV0VGV4ZWxUb0xpbmVhciggdmVjNCB2YWx1ZSApIHtcblxuXHRcdFx0aWYgKCBpbnB1dEVuY29kaW5nID09IDAgKSB7XG5cblx0XHRcdFx0cmV0dXJuIHZhbHVlO1xuXG5cdFx0XHR9IGVsc2UgaWYgKCBpbnB1dEVuY29kaW5nID09IDEgKSB7XG5cblx0XHRcdFx0cmV0dXJuIHNSR0JUb0xpbmVhciggdmFsdWUgKTtcblxuXHRcdFx0fSBlbHNlIGlmICggaW5wdXRFbmNvZGluZyA9PSAyICkge1xuXG5cdFx0XHRcdHJldHVybiBSR0JFVG9MaW5lYXIoIHZhbHVlICk7XG5cblx0XHRcdH0gZWxzZSBpZiAoIGlucHV0RW5jb2RpbmcgPT0gMyApIHtcblxuXHRcdFx0XHRyZXR1cm4gUkdCTVRvTGluZWFyKCB2YWx1ZSwgNy4wICk7XG5cblx0XHRcdH0gZWxzZSBpZiAoIGlucHV0RW5jb2RpbmcgPT0gNCApIHtcblxuXHRcdFx0XHRyZXR1cm4gUkdCTVRvTGluZWFyKCB2YWx1ZSwgMTYuMCApO1xuXG5cdFx0XHR9IGVsc2UgaWYgKCBpbnB1dEVuY29kaW5nID09IDUgKSB7XG5cblx0XHRcdFx0cmV0dXJuIFJHQkRUb0xpbmVhciggdmFsdWUsIDI1Ni4wICk7XG5cblx0XHRcdH0gZWxzZSB7XG5cblx0XHRcdFx0cmV0dXJuIEdhbW1hVG9MaW5lYXIoIHZhbHVlLCAyLjIgKTtcblxuXHRcdFx0fVxuXG5cdFx0fVxuXG5cdFx0dmVjNCBsaW5lYXJUb091dHB1dFRleGVsKCB2ZWM0IHZhbHVlICkge1xuXG5cdFx0XHRpZiAoIG91dHB1dEVuY29kaW5nID09IDAgKSB7XG5cblx0XHRcdFx0cmV0dXJuIHZhbHVlO1xuXG5cdFx0XHR9IGVsc2UgaWYgKCBvdXRwdXRFbmNvZGluZyA9PSAxICkge1xuXG5cdFx0XHRcdHJldHVybiBMaW5lYXJUb3NSR0IoIHZhbHVlICk7XG5cblx0XHRcdH0gZWxzZSBpZiAoIG91dHB1dEVuY29kaW5nID09IDIgKSB7XG5cblx0XHRcdFx0cmV0dXJuIExpbmVhclRvUkdCRSggdmFsdWUgKTtcblxuXHRcdFx0fSBlbHNlIGlmICggb3V0cHV0RW5jb2RpbmcgPT0gMyApIHtcblxuXHRcdFx0XHRyZXR1cm4gTGluZWFyVG9SR0JNKCB2YWx1ZSwgNy4wICk7XG5cblx0XHRcdH0gZWxzZSBpZiAoIG91dHB1dEVuY29kaW5nID09IDQgKSB7XG5cblx0XHRcdFx0cmV0dXJuIExpbmVhclRvUkdCTSggdmFsdWUsIDE2LjAgKTtcblxuXHRcdFx0fSBlbHNlIGlmICggb3V0cHV0RW5jb2RpbmcgPT0gNSApIHtcblxuXHRcdFx0XHRyZXR1cm4gTGluZWFyVG9SR0JEKCB2YWx1ZSwgMjU2LjAgKTtcblxuXHRcdFx0fSBlbHNlIHtcblxuXHRcdFx0XHRyZXR1cm4gTGluZWFyVG9HYW1tYSggdmFsdWUsIDIuMiApO1xuXG5cdFx0XHR9XG5cblx0XHR9XG5cblx0XHR2ZWM0IGVudk1hcFRleGVsVG9MaW5lYXIoIHZlYzQgY29sb3IgKSB7XG5cblx0XHRcdHJldHVybiBpbnB1dFRleGVsVG9MaW5lYXIoIGNvbG9yICk7XG5cblx0XHR9XG5cdCJ9ZnVuY3Rpb24gbjl0KHQpe2xldCBlPW5ldyBXZWFrTWFwLG49bnVsbDtmdW5jdGlvbiBpKHQpe2NvbnN0IG49dC50YXJnZXQ7bi5yZW1vdmVFdmVudExpc3RlbmVyKCJkaXNwb3NlIixpKTtjb25zdCByPWUuZ2V0KG4pO3ZvaWQgMCE9PXImJihyLmRlbGV0ZShuKSxyLmRpc3Bvc2UoKSl9cmV0dXJue2dldDpmdW5jdGlvbiByKG8pe2lmKG8mJm8uaXNUZXh0dXJlJiYhMT09PW8uaXNSZW5kZXJUYXJnZXRUZXh0dXJlKXtjb25zdCByPW8ubWFwcGluZyxhPXI9PT1pMnR8fHI9PT1yMnQscz1yPT09ZTJ0fHxyPT09bjJ0O2lmKGF8fHMpe2lmKGUuaGFzKG8pKXJldHVybiBlLmdldChvKS50ZXh0dXJlO3tjb25zdCByPW8uaW1hZ2U7aWYoYSYmciYmci5oZWlnaHQ+MHx8cyYmciYmKGZ1bmN0aW9uIGEodCl7bGV0IGU9MDtjb25zdCBuPTY7Zm9yKGxldCBpPTA7aTxuO2krKyl2b2lkIDAhPT10W2ldJiZlKys7cmV0dXJuIGU9PT1ufSkocikpe2NvbnN0IHI9dC5nZXRSZW5kZXJUYXJnZXQoKTtudWxsPT09biYmKG49bmV3IFk2dCh0KSk7Y29uc3Qgcz1hP24uZnJvbUVxdWlyZWN0YW5ndWxhcihvKTpuLmZyb21DdWJlbWFwKG8pO3JldHVybiBlLnNldChvLHMpLHQuc2V0UmVuZGVyVGFyZ2V0KHIpLG8uYWRkRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIsaSkscy50ZXh0dXJlfXJldHVybiBudWxsfX19cmV0dXJuIG99LGRpc3Bvc2U6ZnVuY3Rpb24gbygpe2U9bmV3IFdlYWtNYXAsbnVsbCE9PW4mJihuLmRpc3Bvc2UoKSxuPW51bGwpfX19ZnVuY3Rpb24gaTl0KHQpe2NvbnN0IGU9e307ZnVuY3Rpb24gbihuKXtpZih2b2lkIDAhPT1lW25dKXJldHVybiBlW25dO2xldCBpO3N3aXRjaChuKXtjYXNlIldFQkdMX2RlcHRoX3RleHR1cmUiOmk9dC5nZXRFeHRlbnNpb24oIldFQkdMX2RlcHRoX3RleHR1cmUiKXx8dC5nZXRFeHRlbnNpb24oIk1PWl9XRUJHTF9kZXB0aF90ZXh0dXJlIil8fHQuZ2V0RXh0ZW5zaW9uKCJXRUJLSVRfV0VCR0xfZGVwdGhfdGV4dHVyZSIpO2JyZWFrO2Nhc2UiRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIjppPXQuZ2V0RXh0ZW5zaW9uKCJFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKXx8dC5nZXRFeHRlbnNpb24oIk1PWl9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKXx8dC5nZXRFeHRlbnNpb24oIldFQktJVF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKTticmVhaztjYXNlIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjIjppPXQuZ2V0RXh0ZW5zaW9uKCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YyIpfHx0LmdldEV4dGVuc2lvbigiTU9aX1dFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjIil8fHQuZ2V0RXh0ZW5zaW9uKCJXRUJLSVRfV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMiKTticmVhaztjYXNlIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9wdnJ0YyI6aT10LmdldEV4dGVuc2lvbigiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3B2cnRjIil8fHQuZ2V0RXh0ZW5zaW9uKCJXRUJLSVRfV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3B2cnRjIik7YnJlYWs7ZGVmYXVsdDppPXQuZ2V0RXh0ZW5zaW9uKG4pfXJldHVybiBlW25dPWksaX1yZXR1cm57aGFzOmZ1bmN0aW9uKHQpe3JldHVybiBudWxsIT09bih0KX0saW5pdDpmdW5jdGlvbih0KXt0LmlzV2ViR0wyP24oIkVYVF9jb2xvcl9idWZmZXJfZmxvYXQiKToobigiV0VCR0xfZGVwdGhfdGV4dHVyZSIpLG4oIk9FU190ZXh0dXJlX2Zsb2F0IiksbigiT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIpLG4oIk9FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIiksbigiT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzIiksbigiT0VTX2VsZW1lbnRfaW5kZXhfdWludCIpLG4oIk9FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0IiksbigiQU5HTEVfaW5zdGFuY2VkX2FycmF5cyIpKSxuKCJPRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiKSxuKCJFWFRfY29sb3JfYnVmZmVyX2hhbGZfZmxvYXQiKX0sZ2V0OmZ1bmN0aW9uKHQpe2NvbnN0IGU9bih0KTtyZXR1cm4gbnVsbD09PWUmJmNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogIit0KyIgZXh0ZW5zaW9uIG5vdCBzdXBwb3J0ZWQuIiksZX19fWZ1bmN0aW9uIHI5dCh0LGUsbixpKXtjb25zdCByPXt9LG89bmV3IFdlYWtNYXA7ZnVuY3Rpb24gYSh0KXtjb25zdCBzPXQudGFyZ2V0O251bGwhPT1zLmluZGV4JiZlLnJlbW92ZShzLmluZGV4KTtmb3IoY29uc3QgdCBpbiBzLmF0dHJpYnV0ZXMpZS5yZW1vdmUocy5hdHRyaWJ1dGVzW3RdKTtzLnJlbW92ZUV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLGEpLGRlbGV0ZSByW3MuaWRdO2NvbnN0IGw9by5nZXQocyk7bCYmKGUucmVtb3ZlKGwpLG8uZGVsZXRlKHMpKSxpLnJlbGVhc2VTdGF0ZXNPZkdlb21ldHJ5KHMpLCEwPT09cy5pc0luc3RhbmNlZEJ1ZmZlckdlb21ldHJ5JiZkZWxldGUgcy5fbWF4SW5zdGFuY2VDb3VudCxuLm1lbW9yeS5nZW9tZXRyaWVzLS19ZnVuY3Rpb24gcyh0KXtjb25zdCBuPVtdLGk9dC5pbmRleCxyPXQuYXR0cmlidXRlcy5wb3NpdGlvbjtsZXQgYT0wO2lmKG51bGwhPT1pKXtjb25zdCB0PWkuYXJyYXk7YT1pLnZlcnNpb247Zm9yKGxldCBlPTAsaT10Lmxlbmd0aDtlPGk7ZSs9Myl7Y29uc3QgaT10W2UrMF0scj10W2UrMV0sbz10W2UrMl07bi5wdXNoKGkscixyLG8sbyxpKX19ZWxzZXthPXIudmVyc2lvbjtmb3IobGV0IHQ9MCxlPXIuYXJyYXkubGVuZ3RoLzMtMTt0PGU7dCs9Myl7Y29uc3QgZT10KzAsaT10KzEscj10KzI7bi5wdXNoKGUsaSxpLHIscixlKX19Y29uc3Qgcz1uZXcodzR0KG4pPjY1NTM1P3k0dDpnNHQpKG4sMSk7cy52ZXJzaW9uPWE7Y29uc3QgbD1vLmdldCh0KTtsJiZlLnJlbW92ZShsKSxvLnNldCh0LHMpfXJldHVybntnZXQ6ZnVuY3Rpb24gbCh0LGUpe3JldHVybiEwPT09cltlLmlkXXx8KGUuYWRkRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIsYSkscltlLmlkXT0hMCxuLm1lbW9yeS5nZW9tZXRyaWVzKyspLGV9LHVwZGF0ZTpmdW5jdGlvbiBjKHQpe2NvbnN0IG49dC5hdHRyaWJ1dGVzO2Zvcihjb25zdCB0IGluIG4pZS51cGRhdGUoblt0XSwzNDk2Mik7Y29uc3QgaT10Lm1vcnBoQXR0cmlidXRlcztmb3IoY29uc3QgdCBpbiBpKXtjb25zdCBuPWlbdF07Zm9yKGxldCB0PTAsaT1uLmxlbmd0aDt0PGk7dCsrKWUudXBkYXRlKG5bdF0sMzQ5NjIpfX0sZ2V0V2lyZWZyYW1lQXR0cmlidXRlOmZ1bmN0aW9uIHUodCl7Y29uc3QgZT1vLmdldCh0KTtpZihlKXtjb25zdCBuPXQuaW5kZXg7bnVsbCE9PW4mJmUudmVyc2lvbjxuLnZlcnNpb24mJnModCl9ZWxzZSBzKHQpO3JldHVybiBvLmdldCh0KX19fWZ1bmN0aW9uIG85dCh0LGUsbixpKXtjb25zdCByPWkuaXNXZWJHTDI7bGV0IG8sYSxzO3RoaXMuc2V0TW9kZT1mdW5jdGlvbiBsKHQpe289dH0sdGhpcy5zZXRJbmRleD1mdW5jdGlvbiBjKHQpe2E9dC50eXBlLHM9dC5ieXRlc1BlckVsZW1lbnR9LHRoaXMucmVuZGVyPWZ1bmN0aW9uIHUoZSxpKXt0LmRyYXdFbGVtZW50cyhvLGksYSxlKnMpLG4udXBkYXRlKGksbywxKX0sdGhpcy5yZW5kZXJJbnN0YW5jZXM9ZnVuY3Rpb24gaChpLGwsYyl7aWYoMD09PWMpcmV0dXJuO2xldCB1LGg7aWYocil1PXQsaD0iZHJhd0VsZW1lbnRzSW5zdGFuY2VkIjtlbHNlIGlmKHU9ZS5nZXQoIkFOR0xFX2luc3RhbmNlZF9hcnJheXMiKSxoPSJkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSIsbnVsbD09PXUpcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xJbmRleGVkQnVmZmVyUmVuZGVyZXI6IHVzaW5nIFRIUkVFLkluc3RhbmNlZEJ1ZmZlckdlb21ldHJ5IGJ1dCBoYXJkd2FyZSBkb2VzIG5vdCBzdXBwb3J0IGV4dGVuc2lvbiBBTkdMRV9pbnN0YW5jZWRfYXJyYXlzLiIpO3VbaF0obyxsLGEsaSpzLGMpLG4udXBkYXRlKGwsbyxjKX19ZnVuY3Rpb24gYTl0KHQpe2NvbnN0IGU9e2ZyYW1lOjAsY2FsbHM6MCx0cmlhbmdsZXM6MCxwb2ludHM6MCxsaW5lczowfTtyZXR1cm57bWVtb3J5OntnZW9tZXRyaWVzOjAsdGV4dHVyZXM6MH0scmVuZGVyOmUscHJvZ3JhbXM6bnVsbCxhdXRvUmVzZXQ6ITAscmVzZXQ6ZnVuY3Rpb24gbigpe2UuZnJhbWUrKyxlLmNhbGxzPTAsZS50cmlhbmdsZXM9MCxlLnBvaW50cz0wLGUubGluZXM9MH0sdXBkYXRlOmZ1bmN0aW9uIGkodCxuLHIpe3N3aXRjaChlLmNhbGxzKyssbil7Y2FzZSA0OmUudHJpYW5nbGVzKz1yKih0LzMpO2JyZWFrO2Nhc2UgMTplLmxpbmVzKz1yKih0LzIpO2JyZWFrO2Nhc2UgMzplLmxpbmVzKz1yKih0LTEpO2JyZWFrO2Nhc2UgMjplLmxpbmVzKz1yKnQ7YnJlYWs7Y2FzZSAwOmUucG9pbnRzKz1yKnQ7YnJlYWs7ZGVmYXVsdDpjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTEluZm86IFVua25vd24gZHJhdyBtb2RlOiIsbil9fX19ZnVuY3Rpb24gczl0KHQsZSl7cmV0dXJuIHRbMF0tZVswXX1mdW5jdGlvbiBsOXQodCxlKXtyZXR1cm4gTWF0aC5hYnMoZVsxXSktTWF0aC5hYnModFsxXSl9ZnVuY3Rpb24gYzl0KHQpe2NvbnN0IGU9e30sbj1uZXcgRmxvYXQzMkFycmF5KDgpLGk9W107Zm9yKGxldCB0PTA7dDw4O3QrKylpW3RdPVt0LDBdO3JldHVybnt1cGRhdGU6ZnVuY3Rpb24gcihvLGEscyxsKXtjb25zdCBjPW8ubW9ycGhUYXJnZXRJbmZsdWVuY2VzLHU9dm9pZCAwPT09Yz8wOmMubGVuZ3RoO2xldCBoPWVbYS5pZF07aWYodm9pZCAwPT09aHx8aC5sZW5ndGghPT11KXtoPVtdO2ZvcihsZXQgdD0wO3Q8dTt0KyspaFt0XT1bdCwwXTtlW2EuaWRdPWh9Zm9yKGxldCB0PTA7dDx1O3QrKyl7Y29uc3QgZT1oW3RdO2VbMF09dCxlWzFdPWNbdF19aC5zb3J0KGw5dCk7Zm9yKGxldCB0PTA7dDw4O3QrKyl0PHUmJmhbdF1bMV0/KGlbdF1bMF09aFt0XVswXSxpW3RdWzFdPWhbdF1bMV0pOihpW3RdWzBdPU51bWJlci5NQVhfU0FGRV9JTlRFR0VSLGlbdF1bMV09MCk7aS5zb3J0KHM5dCk7Y29uc3QgZD1hLm1vcnBoQXR0cmlidXRlcy5wb3NpdGlvbixwPWEubW9ycGhBdHRyaWJ1dGVzLm5vcm1hbDtsZXQgZj0wO2ZvcihsZXQgdD0wO3Q8ODt0Kyspe2NvbnN0IGU9aVt0XSxyPWVbMF0sbz1lWzFdO3IhPT1OdW1iZXIuTUFYX1NBRkVfSU5URUdFUiYmbz8oZCYmYS5nZXRBdHRyaWJ1dGUoIm1vcnBoVGFyZ2V0Iit0KSE9PWRbcl0mJmEuc2V0QXR0cmlidXRlKCJtb3JwaFRhcmdldCIrdCxkW3JdKSxwJiZhLmdldEF0dHJpYnV0ZSgibW9ycGhOb3JtYWwiK3QpIT09cFtyXSYmYS5zZXRBdHRyaWJ1dGUoIm1vcnBoTm9ybWFsIit0LHBbcl0pLG5bdF09byxmKz1vKTooZCYmITA9PT1hLmhhc0F0dHJpYnV0ZSgibW9ycGhUYXJnZXQiK3QpJiZhLmRlbGV0ZUF0dHJpYnV0ZSgibW9ycGhUYXJnZXQiK3QpLHAmJiEwPT09YS5oYXNBdHRyaWJ1dGUoIm1vcnBoTm9ybWFsIit0KSYmYS5kZWxldGVBdHRyaWJ1dGUoIm1vcnBoTm9ybWFsIit0KSxuW3RdPTApfWNvbnN0IG09YS5tb3JwaFRhcmdldHNSZWxhdGl2ZT8xOjEtZjtsLmdldFVuaWZvcm1zKCkuc2V0VmFsdWUodCwibW9ycGhUYXJnZXRCYXNlSW5mbHVlbmNlIixtKSxsLmdldFVuaWZvcm1zKCkuc2V0VmFsdWUodCwibW9ycGhUYXJnZXRJbmZsdWVuY2VzIixuKX19fWZ1bmN0aW9uIHU5dCh0LGUsbixpKXtsZXQgcj1uZXcgV2Vha01hcDtmdW5jdGlvbiBvKHQpe2NvbnN0IGU9dC50YXJnZXQ7ZS5yZW1vdmVFdmVudExpc3RlbmVyKCJkaXNwb3NlIixvKSxuLnJlbW92ZShlLmluc3RhbmNlTWF0cml4KSxudWxsIT09ZS5pbnN0YW5jZUNvbG9yJiZuLnJlbW92ZShlLmluc3RhbmNlQ29sb3IpfXJldHVybnt1cGRhdGU6ZnVuY3Rpb24gYSh0KXtjb25zdCBhPWkucmVuZGVyLmZyYW1lLHM9ZS5nZXQodCx0Lmdlb21ldHJ5KTtyZXR1cm4gci5nZXQocykhPT1hJiYoZS51cGRhdGUocyksci5zZXQocyxhKSksdC5pc0luc3RhbmNlZE1lc2gmJighMT09PXQuaGFzRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIsbykmJnQuYWRkRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIsbyksbi51cGRhdGUodC5pbnN0YW5jZU1hdHJpeCwzNDk2MiksbnVsbCE9PXQuaW5zdGFuY2VDb2xvciYmbi51cGRhdGUodC5pbnN0YW5jZUNvbG9yLDM0OTYyKSksc30sZGlzcG9zZTpmdW5jdGlvbiBzKCl7cj1uZXcgV2Vha01hcH19fWNsYXNzIGg5dCBleHRlbmRzIE41dHtjb25zdHJ1Y3Rvcih0PW51bGwsZT0xLG49MSxpPTEpe3N1cGVyKG51bGwpLHRoaXMuaW1hZ2U9e2RhdGE6dCx3aWR0aDplLGhlaWdodDpuLGRlcHRoOml9LHRoaXMubWFnRmlsdGVyPXUydCx0aGlzLm1pbkZpbHRlcj11MnQsdGhpcy53cmFwUj1sMnQsdGhpcy5nZW5lcmF0ZU1pcG1hcHM9ITEsdGhpcy5mbGlwWT0hMSx0aGlzLnVucGFja0FsaWdubWVudD0xLHRoaXMubmVlZHNVcGRhdGU9ITB9fWg5dC5wcm90b3R5cGUuaXNEYXRhVGV4dHVyZTJEQXJyYXk9ITA7Y2xhc3MgZDl0IGV4dGVuZHMgTjV0e2NvbnN0cnVjdG9yKHQ9bnVsbCxlPTEsbj0xLGk9MSl7c3VwZXIobnVsbCksdGhpcy5pbWFnZT17ZGF0YTp0LHdpZHRoOmUsaGVpZ2h0Om4sZGVwdGg6aX0sdGhpcy5tYWdGaWx0ZXI9dTJ0LHRoaXMubWluRmlsdGVyPXUydCx0aGlzLndyYXBSPWwydCx0aGlzLmdlbmVyYXRlTWlwbWFwcz0hMSx0aGlzLmZsaXBZPSExLHRoaXMudW5wYWNrQWxpZ25tZW50PTEsdGhpcy5uZWVkc1VwZGF0ZT0hMH19ZDl0LnByb3RvdHlwZS5pc0RhdGFUZXh0dXJlM0Q9ITA7Y29uc3QgcDl0PW5ldyBONXQsZjl0PW5ldyBoOXQsbTl0PW5ldyBkOXQsZzl0PW5ldyBzNnQsXzl0PVtdLHk5dD1bXSx2OXQ9bmV3IEZsb2F0MzJBcnJheSgxNiksYjl0PW5ldyBGbG9hdDMyQXJyYXkoOSkseDl0PW5ldyBGbG9hdDMyQXJyYXkoNCk7ZnVuY3Rpb24gdzl0KHQsZSxuKXtjb25zdCBpPXRbMF07aWYoaTw9MHx8aT4wKXJldHVybiB0O2NvbnN0IHI9ZSpuO2xldCBvPV85dFtyXTtpZih2b2lkIDA9PT1vJiYobz1uZXcgRmxvYXQzMkFycmF5KHIpLF85dFtyXT1vKSwwIT09ZSl7aS50b0FycmF5KG8sMCk7Zm9yKGxldCBpPTEscj0wO2khPT1lOysraSlyKz1uLHRbaV0udG9BcnJheShvLHIpfXJldHVybiBvfWZ1bmN0aW9uIFM5dCh0LGUpe2lmKHQubGVuZ3RoIT09ZS5sZW5ndGgpcmV0dXJuITE7Zm9yKGxldCBuPTAsaT10Lmxlbmd0aDtuPGk7bisrKWlmKHRbbl0hPT1lW25dKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIE05dCh0LGUpe2ZvcihsZXQgbj0wLGk9ZS5sZW5ndGg7bjxpO24rKyl0W25dPWVbbl19ZnVuY3Rpb24gRTl0KHQsZSl7bGV0IG49eTl0W2VdO3ZvaWQgMD09PW4mJihuPW5ldyBJbnQzMkFycmF5KGUpLHk5dFtlXT1uKTtmb3IobGV0IGk9MDtpIT09ZTsrK2kpbltpXT10LmFsbG9jYXRlVGV4dHVyZVVuaXQoKTtyZXR1cm4gbn1mdW5jdGlvbiBUOXQodCxlKXtjb25zdCBuPXRoaXMuY2FjaGU7blswXSE9PWUmJih0LnVuaWZvcm0xZih0aGlzLmFkZHIsZSksblswXT1lKX1mdW5jdGlvbiBDOXQodCxlKXtjb25zdCBuPXRoaXMuY2FjaGU7aWYodm9pZCAwIT09ZS54KW5bMF09PT1lLngmJm5bMV09PT1lLnl8fCh0LnVuaWZvcm0yZih0aGlzLmFkZHIsZS54LGUueSksblswXT1lLngsblsxXT1lLnkpO2Vsc2V7aWYoUzl0KG4sZSkpcmV0dXJuO3QudW5pZm9ybTJmdih0aGlzLmFkZHIsZSksTTl0KG4sZSl9fWZ1bmN0aW9uIEE5dCh0LGUpe2NvbnN0IG49dGhpcy5jYWNoZTtpZih2b2lkIDAhPT1lLngpblswXT09PWUueCYmblsxXT09PWUueSYmblsyXT09PWUuenx8KHQudW5pZm9ybTNmKHRoaXMuYWRkcixlLngsZS55LGUueiksblswXT1lLngsblsxXT1lLnksblsyXT1lLnopO2Vsc2UgaWYodm9pZCAwIT09ZS5yKW5bMF09PT1lLnImJm5bMV09PT1lLmcmJm5bMl09PT1lLmJ8fCh0LnVuaWZvcm0zZih0aGlzLmFkZHIsZS5yLGUuZyxlLmIpLG5bMF09ZS5yLG5bMV09ZS5nLG5bMl09ZS5iKTtlbHNle2lmKFM5dChuLGUpKXJldHVybjt0LnVuaWZvcm0zZnYodGhpcy5hZGRyLGUpLE05dChuLGUpfX1mdW5jdGlvbiBrOXQodCxlKXtjb25zdCBuPXRoaXMuY2FjaGU7aWYodm9pZCAwIT09ZS54KW5bMF09PT1lLngmJm5bMV09PT1lLnkmJm5bMl09PT1lLnomJm5bM109PT1lLnd8fCh0LnVuaWZvcm00Zih0aGlzLmFkZHIsZS54LGUueSxlLnosZS53KSxuWzBdPWUueCxuWzFdPWUueSxuWzJdPWUueixuWzNdPWUudyk7ZWxzZXtpZihTOXQobixlKSlyZXR1cm47dC51bmlmb3JtNGZ2KHRoaXMuYWRkcixlKSxNOXQobixlKX19ZnVuY3Rpb24gTDl0KHQsZSl7Y29uc3Qgbj10aGlzLmNhY2hlLGk9ZS5lbGVtZW50cztpZih2b2lkIDA9PT1pKXtpZihTOXQobixlKSlyZXR1cm47dC51bmlmb3JtTWF0cml4MmZ2KHRoaXMuYWRkciwhMSxlKSxNOXQobixlKX1lbHNle2lmKFM5dChuLGkpKXJldHVybjt4OXQuc2V0KGkpLHQudW5pZm9ybU1hdHJpeDJmdih0aGlzLmFkZHIsITEseDl0KSxNOXQobixpKX19ZnVuY3Rpb24gUDl0KHQsZSl7Y29uc3Qgbj10aGlzLmNhY2hlLGk9ZS5lbGVtZW50cztpZih2b2lkIDA9PT1pKXtpZihTOXQobixlKSlyZXR1cm47dC51bmlmb3JtTWF0cml4M2Z2KHRoaXMuYWRkciwhMSxlKSxNOXQobixlKX1lbHNle2lmKFM5dChuLGkpKXJldHVybjtiOXQuc2V0KGkpLHQudW5pZm9ybU1hdHJpeDNmdih0aGlzLmFkZHIsITEsYjl0KSxNOXQobixpKX19ZnVuY3Rpb24gTjl0KHQsZSl7Y29uc3Qgbj10aGlzLmNhY2hlLGk9ZS5lbGVtZW50cztpZih2b2lkIDA9PT1pKXtpZihTOXQobixlKSlyZXR1cm47dC51bmlmb3JtTWF0cml4NGZ2KHRoaXMuYWRkciwhMSxlKSxNOXQobixlKX1lbHNle2lmKFM5dChuLGkpKXJldHVybjt2OXQuc2V0KGkpLHQudW5pZm9ybU1hdHJpeDRmdih0aGlzLmFkZHIsITEsdjl0KSxNOXQobixpKX19ZnVuY3Rpb24gSTl0KHQsZSl7Y29uc3Qgbj10aGlzLmNhY2hlO25bMF0hPT1lJiYodC51bmlmb3JtMWkodGhpcy5hZGRyLGUpLG5bMF09ZSl9ZnVuY3Rpb24gUjl0KHQsZSl7Y29uc3Qgbj10aGlzLmNhY2hlO1M5dChuLGUpfHwodC51bmlmb3JtMml2KHRoaXMuYWRkcixlKSxNOXQobixlKSl9ZnVuY3Rpb24gTzl0KHQsZSl7Y29uc3Qgbj10aGlzLmNhY2hlO1M5dChuLGUpfHwodC51bmlmb3JtM2l2KHRoaXMuYWRkcixlKSxNOXQobixlKSl9ZnVuY3Rpb24gejl0KHQsZSl7Y29uc3Qgbj10aGlzLmNhY2hlO1M5dChuLGUpfHwodC51bmlmb3JtNGl2KHRoaXMuYWRkcixlKSxNOXQobixlKSl9ZnVuY3Rpb24gRDl0KHQsZSl7Y29uc3Qgbj10aGlzLmNhY2hlO25bMF0hPT1lJiYodC51bmlmb3JtMXVpKHRoaXMuYWRkcixlKSxuWzBdPWUpfWZ1bmN0aW9uIEI5dCh0LGUpe2NvbnN0IG49dGhpcy5jYWNoZTtTOXQobixlKXx8KHQudW5pZm9ybTJ1aXYodGhpcy5hZGRyLGUpLE05dChuLGUpKX1mdW5jdGlvbiBIOXQodCxlKXtjb25zdCBuPXRoaXMuY2FjaGU7Uzl0KG4sZSl8fCh0LnVuaWZvcm0zdWl2KHRoaXMuYWRkcixlKSxNOXQobixlKSl9ZnVuY3Rpb24gRjl0KHQsZSl7Y29uc3Qgbj10aGlzLmNhY2hlO1M5dChuLGUpfHwodC51bmlmb3JtNHVpdih0aGlzLmFkZHIsZSksTTl0KG4sZSkpfWZ1bmN0aW9uIFY5dCh0LGUsbil7Y29uc3QgaT10aGlzLmNhY2hlLHI9bi5hbGxvY2F0ZVRleHR1cmVVbml0KCk7aVswXSE9PXImJih0LnVuaWZvcm0xaSh0aGlzLmFkZHIsciksaVswXT1yKSxuLnNhZmVTZXRUZXh0dXJlMkQoZXx8cDl0LHIpfWZ1bmN0aW9uIFU5dCh0LGUsbil7Y29uc3QgaT10aGlzLmNhY2hlLHI9bi5hbGxvY2F0ZVRleHR1cmVVbml0KCk7aVswXSE9PXImJih0LnVuaWZvcm0xaSh0aGlzLmFkZHIsciksaVswXT1yKSxuLnNldFRleHR1cmUzRChlfHxtOXQscil9ZnVuY3Rpb24gajl0KHQsZSxuKXtjb25zdCBpPXRoaXMuY2FjaGUscj1uLmFsbG9jYXRlVGV4dHVyZVVuaXQoKTtpWzBdIT09ciYmKHQudW5pZm9ybTFpKHRoaXMuYWRkcixyKSxpWzBdPXIpLG4uc2FmZVNldFRleHR1cmVDdWJlKGV8fGc5dCxyKX1mdW5jdGlvbiBHOXQodCxlLG4pe2NvbnN0IGk9dGhpcy5jYWNoZSxyPW4uYWxsb2NhdGVUZXh0dXJlVW5pdCgpO2lbMF0hPT1yJiYodC51bmlmb3JtMWkodGhpcy5hZGRyLHIpLGlbMF09ciksbi5zZXRUZXh0dXJlMkRBcnJheShlfHxmOXQscil9ZnVuY3Rpb24gVzl0KHQsZSl7dC51bmlmb3JtMWZ2KHRoaXMuYWRkcixlKX1mdW5jdGlvbiBxOXQodCxlKXtjb25zdCBuPXc5dChlLHRoaXMuc2l6ZSwyKTt0LnVuaWZvcm0yZnYodGhpcy5hZGRyLG4pfWZ1bmN0aW9uIFk5dCh0LGUpe2NvbnN0IG49dzl0KGUsdGhpcy5zaXplLDMpO3QudW5pZm9ybTNmdih0aGlzLmFkZHIsbil9ZnVuY3Rpb24gWDl0KHQsZSl7Y29uc3Qgbj13OXQoZSx0aGlzLnNpemUsNCk7dC51bmlmb3JtNGZ2KHRoaXMuYWRkcixuKX1mdW5jdGlvbiAkOXQodCxlKXtjb25zdCBuPXc5dChlLHRoaXMuc2l6ZSw0KTt0LnVuaWZvcm1NYXRyaXgyZnYodGhpcy5hZGRyLCExLG4pfWZ1bmN0aW9uIEs5dCh0LGUpe2NvbnN0IG49dzl0KGUsdGhpcy5zaXplLDkpO3QudW5pZm9ybU1hdHJpeDNmdih0aGlzLmFkZHIsITEsbil9ZnVuY3Rpb24gWjl0KHQsZSl7Y29uc3Qgbj13OXQoZSx0aGlzLnNpemUsMTYpO3QudW5pZm9ybU1hdHJpeDRmdih0aGlzLmFkZHIsITEsbil9ZnVuY3Rpb24gSjl0KHQsZSl7dC51bmlmb3JtMWl2KHRoaXMuYWRkcixlKX1mdW5jdGlvbiBROXQodCxlKXt0LnVuaWZvcm0yaXYodGhpcy5hZGRyLGUpfWZ1bmN0aW9uIHQ4dCh0LGUpe3QudW5pZm9ybTNpdih0aGlzLmFkZHIsZSl9ZnVuY3Rpb24gZTh0KHQsZSl7dC51bmlmb3JtNGl2KHRoaXMuYWRkcixlKX1mdW5jdGlvbiBuOHQodCxlKXt0LnVuaWZvcm0xdWl2KHRoaXMuYWRkcixlKX1mdW5jdGlvbiBpOHQodCxlKXt0LnVuaWZvcm0ydWl2KHRoaXMuYWRkcixlKX1mdW5jdGlvbiByOHQodCxlKXt0LnVuaWZvcm0zdWl2KHRoaXMuYWRkcixlKX1mdW5jdGlvbiBvOHQodCxlKXt0LnVuaWZvcm00dWl2KHRoaXMuYWRkcixlKX1mdW5jdGlvbiBhOHQodCxlLG4pe2NvbnN0IGk9ZS5sZW5ndGgscj1FOXQobixpKTt0LnVuaWZvcm0xaXYodGhpcy5hZGRyLHIpO2ZvcihsZXQgdD0wO3QhPT1pOysrdCluLnNhZmVTZXRUZXh0dXJlMkQoZVt0XXx8cDl0LHJbdF0pfWZ1bmN0aW9uIHM4dCh0LGUsbil7Y29uc3QgaT1lLmxlbmd0aCxyPUU5dChuLGkpO3QudW5pZm9ybTFpdih0aGlzLmFkZHIscik7Zm9yKGxldCB0PTA7dCE9PWk7Kyt0KW4uc2FmZVNldFRleHR1cmVDdWJlKGVbdF18fGc5dCxyW3RdKX1mdW5jdGlvbiBsOHQodCxlLG4pe3RoaXMuaWQ9dCx0aGlzLmFkZHI9bix0aGlzLmNhY2hlPVtdLHRoaXMuc2V0VmFsdWU9KGZ1bmN0aW9uIGkodCl7c3dpdGNoKHQpe2Nhc2UgNTEyNjpyZXR1cm4gVDl0O2Nhc2UgMzU2NjQ6cmV0dXJuIEM5dDtjYXNlIDM1NjY1OnJldHVybiBBOXQ7Y2FzZSAzNTY2NjpyZXR1cm4gazl0O2Nhc2UgMzU2NzQ6cmV0dXJuIEw5dDtjYXNlIDM1Njc1OnJldHVybiBQOXQ7Y2FzZSAzNTY3NjpyZXR1cm4gTjl0O2Nhc2UgNTEyNDpjYXNlIDM1NjcwOnJldHVybiBJOXQ7Y2FzZSAzNTY2NzpjYXNlIDM1NjcxOnJldHVybiBSOXQ7Y2FzZSAzNTY2ODpjYXNlIDM1NjcyOnJldHVybiBPOXQ7Y2FzZSAzNTY2OTpjYXNlIDM1NjczOnJldHVybiB6OXQ7Y2FzZSA1MTI1OnJldHVybiBEOXQ7Y2FzZSAzNjI5NDpyZXR1cm4gQjl0O2Nhc2UgMzYyOTU6cmV0dXJuIEg5dDtjYXNlIDM2Mjk2OnJldHVybiBGOXQ7Y2FzZSAzNTY3ODpjYXNlIDM2MTk4OmNhc2UgMzYyOTg6Y2FzZSAzNjMwNjpjYXNlIDM1NjgyOnJldHVybiBWOXQ7Y2FzZSAzNTY3OTpjYXNlIDM2Mjk5OmNhc2UgMzYzMDc6cmV0dXJuIFU5dDtjYXNlIDM1NjgwOmNhc2UgMzYzMDA6Y2FzZSAzNjMwODpjYXNlIDM2MjkzOnJldHVybiBqOXQ7Y2FzZSAzNjI4OTpjYXNlIDM2MzAzOmNhc2UgMzYzMTE6Y2FzZSAzNjI5MjpyZXR1cm4gRzl0fX0pKGUudHlwZSl9ZnVuY3Rpb24gYzh0KHQsZSxuKXt0aGlzLmlkPXQsdGhpcy5hZGRyPW4sdGhpcy5jYWNoZT1bXSx0aGlzLnNpemU9ZS5zaXplLHRoaXMuc2V0VmFsdWU9KGZ1bmN0aW9uIGkodCl7c3dpdGNoKHQpe2Nhc2UgNTEyNjpyZXR1cm4gVzl0O2Nhc2UgMzU2NjQ6cmV0dXJuIHE5dDtjYXNlIDM1NjY1OnJldHVybiBZOXQ7Y2FzZSAzNTY2NjpyZXR1cm4gWDl0O2Nhc2UgMzU2NzQ6cmV0dXJuICQ5dDtjYXNlIDM1Njc1OnJldHVybiBLOXQ7Y2FzZSAzNTY3NjpyZXR1cm4gWjl0O2Nhc2UgNTEyNDpjYXNlIDM1NjcwOnJldHVybiBKOXQ7Y2FzZSAzNTY2NzpjYXNlIDM1NjcxOnJldHVybiBROXQ7Y2FzZSAzNTY2ODpjYXNlIDM1NjcyOnJldHVybiB0OHQ7Y2FzZSAzNTY2OTpjYXNlIDM1NjczOnJldHVybiBlOHQ7Y2FzZSA1MTI1OnJldHVybiBuOHQ7Y2FzZSAzNjI5NDpyZXR1cm4gaTh0O2Nhc2UgMzYyOTU6cmV0dXJuIHI4dDtjYXNlIDM2Mjk2OnJldHVybiBvOHQ7Y2FzZSAzNTY3ODpjYXNlIDM2MTk4OmNhc2UgMzYyOTg6Y2FzZSAzNjMwNjpjYXNlIDM1NjgyOnJldHVybiBhOHQ7Y2FzZSAzNTY4MDpjYXNlIDM2MzAwOmNhc2UgMzYzMDg6Y2FzZSAzNjI5MzpyZXR1cm4gczh0fX0pKGUudHlwZSl9ZnVuY3Rpb24gdTh0KHQpe3RoaXMuaWQ9dCx0aGlzLnNlcT1bXSx0aGlzLm1hcD17fX1jOHQucHJvdG90eXBlLnVwZGF0ZUNhY2hlPWZ1bmN0aW9uKHQpe2NvbnN0IGU9dGhpcy5jYWNoZTt0IGluc3RhbmNlb2YgRmxvYXQzMkFycmF5JiZlLmxlbmd0aCE9PXQubGVuZ3RoJiYodGhpcy5jYWNoZT1uZXcgRmxvYXQzMkFycmF5KHQubGVuZ3RoKSksTTl0KGUsdCl9LHU4dC5wcm90b3R5cGUuc2V0VmFsdWU9ZnVuY3Rpb24odCxlLG4pe2NvbnN0IGk9dGhpcy5zZXE7Zm9yKGxldCByPTAsbz1pLmxlbmd0aDtyIT09bzsrK3Ipe2NvbnN0IG89aVtyXTtvLnNldFZhbHVlKHQsZVtvLmlkXSxuKX19O2NvbnN0IGg4dD0vKFx3KykoXF0pPyhcW3xcLik/L2c7ZnVuY3Rpb24gZDh0KHQsZSl7dC5zZXEucHVzaChlKSx0Lm1hcFtlLmlkXT1lfWZ1bmN0aW9uIHA4dCh0LGUsbil7Y29uc3QgaT10Lm5hbWUscj1pLmxlbmd0aDtmb3IoaDh0Lmxhc3RJbmRleD0wOzspe2NvbnN0IG89aDh0LmV4ZWMoaSksYT1oOHQubGFzdEluZGV4O2xldCBzPW9bMV07Y29uc3QgbD1vWzNdO2lmKCJdIj09PW9bMl0mJihzfD0wKSx2b2lkIDA9PT1sfHwiWyI9PT1sJiZhKzI9PT1yKXtkOHQobix2b2lkIDA9PT1sP25ldyBsOHQocyx0LGUpOm5ldyBjOHQocyx0LGUpKTticmVha317bGV0IHQ9bi5tYXBbc107dm9pZCAwPT09dCYmKHQ9bmV3IHU4dChzKSxkOHQobix0KSksbj10fX19ZnVuY3Rpb24gZjh0KHQsZSl7dGhpcy5zZXE9W10sdGhpcy5tYXA9e307Y29uc3Qgbj10LmdldFByb2dyYW1QYXJhbWV0ZXIoZSwzNTcxOCk7Zm9yKGxldCBpPTA7aTxuOysraSl7Y29uc3Qgbj10LmdldEFjdGl2ZVVuaWZvcm0oZSxpKTtwOHQobix0LmdldFVuaWZvcm1Mb2NhdGlvbihlLG4ubmFtZSksdGhpcyl9fWZ1bmN0aW9uIG04dCh0LGUsbil7Y29uc3QgaT10LmNyZWF0ZVNoYWRlcihlKTtyZXR1cm4gdC5zaGFkZXJTb3VyY2UoaSxuKSx0LmNvbXBpbGVTaGFkZXIoaSksaX1mOHQucHJvdG90eXBlLnNldFZhbHVlPWZ1bmN0aW9uKHQsZSxuLGkpe2NvbnN0IHI9dGhpcy5tYXBbZV07dm9pZCAwIT09ciYmci5zZXRWYWx1ZSh0LG4saSl9LGY4dC5wcm90b3R5cGUuc2V0T3B0aW9uYWw9ZnVuY3Rpb24odCxlLG4pe2NvbnN0IGk9ZVtuXTt2b2lkIDAhPT1pJiZ0aGlzLnNldFZhbHVlKHQsbixpKX0sZjh0LnVwbG9hZD1mdW5jdGlvbih0LGUsbixpKXtmb3IobGV0IHI9MCxvPWUubGVuZ3RoO3IhPT1vOysrcil7Y29uc3Qgbz1lW3JdLGE9bltvLmlkXTshMSE9PWEubmVlZHNVcGRhdGUmJm8uc2V0VmFsdWUodCxhLnZhbHVlLGkpfX0sZjh0LnNlcVdpdGhWYWx1ZT1mdW5jdGlvbih0LGUpe2NvbnN0IG49W107Zm9yKGxldCBpPTAscj10Lmxlbmd0aDtpIT09cjsrK2kpe2NvbnN0IHI9dFtpXTtyLmlkIGluIGUmJm4ucHVzaChyKX1yZXR1cm4gbn07bGV0IGc4dD0wO2Z1bmN0aW9uIF84dCh0KXtzd2l0Y2godCl7Y2FzZSBHMnQ6cmV0dXJuWyJMaW5lYXIiLCIoIHZhbHVlICkiXTtjYXNlIFcydDpyZXR1cm5bInNSR0IiLCIoIHZhbHVlICkiXTtjYXNlIFkydDpyZXR1cm5bIlJHQkUiLCIoIHZhbHVlICkiXTtjYXNlIFgydDpyZXR1cm5bIlJHQk0iLCIoIHZhbHVlLCA3LjAgKSJdO2Nhc2UgJDJ0OnJldHVyblsiUkdCTSIsIiggdmFsdWUsIDE2LjAgKSJdO2Nhc2UgSzJ0OnJldHVyblsiUkdCRCIsIiggdmFsdWUsIDI1Ni4wICkiXTtjYXNlIHEydDpyZXR1cm5bIkdhbW1hIiwiKCB2YWx1ZSwgZmxvYXQoIEdBTU1BX0ZBQ1RPUiApICkiXTtjYXNlIDMwMDM6cmV0dXJuWyJMb2dMdXYiLCIoIHZhbHVlICkiXTtkZWZhdWx0OnJldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUHJvZ3JhbTogVW5zdXBwb3J0ZWQgZW5jb2Rpbmc6Iix0KSxbIkxpbmVhciIsIiggdmFsdWUgKSJdfX1mdW5jdGlvbiB5OHQodCxlLG4pe2NvbnN0IGk9dC5nZXRTaGFkZXJQYXJhbWV0ZXIoZSwzNTcxMykscj10LmdldFNoYWRlckluZm9Mb2coZSkudHJpbSgpO2lmKGkmJiIiPT09cilyZXR1cm4iIjtyZXR1cm4iVEhSRUUuV2ViR0xTaGFkZXI6IGdsLmdldFNoYWRlckluZm9Mb2coKSAiK24rIlxuIityKyhmdW5jdGlvbiBvKHQpe2NvbnN0IGU9dC5zcGxpdCgiXG4iKTtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKyllW3RdPXQrMSsiOiAiK2VbdF07cmV0dXJuIGUuam9pbigiXG4iKX0pKHQuZ2V0U2hhZGVyU291cmNlKGUpKX1mdW5jdGlvbiB2OHQodCxlKXtjb25zdCBuPV84dChlKTtyZXR1cm4idmVjNCAiK3QrIiggdmVjNCB2YWx1ZSApIHsgcmV0dXJuICIrblswXSsiVG9MaW5lYXIiK25bMV0rIjsgfSJ9ZnVuY3Rpb24gYjh0KHQsZSl7Y29uc3Qgbj1fOHQoZSk7cmV0dXJuInZlYzQgIit0KyIoIHZlYzQgdmFsdWUgKSB7IHJldHVybiBMaW5lYXJUbyIrblswXStuWzFdKyI7IH0ifWZ1bmN0aW9uIHg4dCh0LGUpe2xldCBuO3N3aXRjaChlKXtjYXNlIDE6bj0iTGluZWFyIjticmVhaztjYXNlIDI6bj0iUmVpbmhhcmQiO2JyZWFrO2Nhc2UgMzpuPSJPcHRpbWl6ZWRDaW5lb24iO2JyZWFrO2Nhc2UgNDpuPSJBQ0VTRmlsbWljIjticmVhaztjYXNlIDU6bj0iQ3VzdG9tIjticmVhaztkZWZhdWx0OmNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xQcm9ncmFtOiBVbnN1cHBvcnRlZCB0b25lTWFwcGluZzoiLGUpLG49IkxpbmVhciJ9cmV0dXJuInZlYzMgIit0KyIoIHZlYzMgY29sb3IgKSB7IHJldHVybiAiK24rIlRvbmVNYXBwaW5nKCBjb2xvciApOyB9In1mdW5jdGlvbiB3OHQodCl7cmV0dXJuIiIhPT10fWZ1bmN0aW9uIFM4dCh0LGUpe3JldHVybiB0LnJlcGxhY2UoL05VTV9ESVJfTElHSFRTL2csZS5udW1EaXJMaWdodHMpLnJlcGxhY2UoL05VTV9TUE9UX0xJR0hUUy9nLGUubnVtU3BvdExpZ2h0cykucmVwbGFjZSgvTlVNX1JFQ1RfQVJFQV9MSUdIVFMvZyxlLm51bVJlY3RBcmVhTGlnaHRzKS5yZXBsYWNlKC9OVU1fUE9JTlRfTElHSFRTL2csZS5udW1Qb2ludExpZ2h0cykucmVwbGFjZSgvTlVNX0hFTUlfTElHSFRTL2csZS5udW1IZW1pTGlnaHRzKS5yZXBsYWNlKC9OVU1fRElSX0xJR0hUX1NIQURPV1MvZyxlLm51bURpckxpZ2h0U2hhZG93cykucmVwbGFjZSgvTlVNX1NQT1RfTElHSFRfU0hBRE9XUy9nLGUubnVtU3BvdExpZ2h0U2hhZG93cykucmVwbGFjZSgvTlVNX1BPSU5UX0xJR0hUX1NIQURPV1MvZyxlLm51bVBvaW50TGlnaHRTaGFkb3dzKX1mdW5jdGlvbiBNOHQodCxlKXtyZXR1cm4gdC5yZXBsYWNlKC9OVU1fQ0xJUFBJTkdfUExBTkVTL2csZS5udW1DbGlwcGluZ1BsYW5lcykucmVwbGFjZSgvVU5JT05fQ0xJUFBJTkdfUExBTkVTL2csZS5udW1DbGlwcGluZ1BsYW5lcy1lLm51bUNsaXBJbnRlcnNlY3Rpb24pfWNvbnN0IEU4dD0vXlsgXHRdKiNpbmNsdWRlICs8KFtcd1xkLi9dKyk+L2dtO2Z1bmN0aW9uIFQ4dCh0KXtyZXR1cm4gdC5yZXBsYWNlKEU4dCxDOHQpfWZ1bmN0aW9uIEM4dCh0LGUpe2NvbnN0IG49djZ0W2VdO2lmKHZvaWQgMD09PW4pdGhyb3cgbmV3IEVycm9yKCJDYW4gbm90IHJlc29sdmUgI2luY2x1ZGUgPCIrZSsiPiIpO3JldHVybiBUOHQobil9Y29uc3QgQTh0PS8jcHJhZ21hIHVucm9sbF9sb29wW1xzXSs/Zm9yIFwoIGludCBpIFw9IChcZCspXDsgaSA8IChcZCspXDsgaSBcK1wrIFwpIFx7KFtcc1xTXSs/KSg/PVx9KVx9L2csazh0PS8jcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0XHMrZm9yXHMqXChccyppbnRccytpXHMqPVxzKihcZCspXHMqO1xzKmlccyo8XHMqKFxkKylccyo7XHMqaVxzKlwrXCtccypcKVxzKnsoW1xzXFNdKz8pfVxzKyNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kL2c7ZnVuY3Rpb24gTDh0KHQpe3JldHVybiB0LnJlcGxhY2Uoazh0LE44dCkucmVwbGFjZShBOHQsUDh0KX1mdW5jdGlvbiBQOHQodCxlLG4saSl7cmV0dXJuIGNvbnNvbGUud2FybigiV2ViR0xQcm9ncmFtOiAjcHJhZ21hIHVucm9sbF9sb29wIHNoYWRlciBzeW50YXggaXMgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSAjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0IHN5bnRheCBpbnN0ZWFkLiIpLE44dCh0LGUsbixpKX1mdW5jdGlvbiBOOHQodCxlLG4saSl7bGV0IHI9IiI7Zm9yKGxldCB0PXBhcnNlSW50KGUpO3Q8cGFyc2VJbnQobik7dCsrKXIrPWkucmVwbGFjZSgvXFtccyppXHMqXF0vZywiWyAiK3QrIiBdIikucmVwbGFjZSgvVU5ST0xMRURfTE9PUF9JTkRFWC9nLHQpO3JldHVybiByfWZ1bmN0aW9uIEk4dCh0KXtsZXQgZT0icHJlY2lzaW9uICIrdC5wcmVjaXNpb24rIiBmbG9hdDtcbnByZWNpc2lvbiAiK3QucHJlY2lzaW9uKyIgaW50OyI7cmV0dXJuImhpZ2hwIj09PXQucHJlY2lzaW9uP2UrPSJcbiNkZWZpbmUgSElHSF9QUkVDSVNJT04iOiJtZWRpdW1wIj09PXQucHJlY2lzaW9uP2UrPSJcbiNkZWZpbmUgTUVESVVNX1BSRUNJU0lPTiI6Imxvd3AiPT09dC5wcmVjaXNpb24mJihlKz0iXG4jZGVmaW5lIExPV19QUkVDSVNJT04iKSxlfWZ1bmN0aW9uIFI4dCh0LGUsbixpKXtjb25zdCByPXQuZ2V0Q29udGV4dCgpLG89bi5kZWZpbmVzO2xldCBhPW4udmVydGV4U2hhZGVyLHM9bi5mcmFnbWVudFNoYWRlcjtjb25zdCBsPShmdW5jdGlvbiBjKHQpe2xldCBlPSJTSEFET1dNQVBfVFlQRV9CQVNJQyI7cmV0dXJuIDE9PT10LnNoYWRvd01hcFR5cGU/ZT0iU0hBRE9XTUFQX1RZUEVfUENGIjoyPT09dC5zaGFkb3dNYXBUeXBlP2U9IlNIQURPV01BUF9UWVBFX1BDRl9TT0ZUIjozPT09dC5zaGFkb3dNYXBUeXBlJiYoZT0iU0hBRE9XTUFQX1RZUEVfVlNNIiksZX0pKG4pLHU9KGZ1bmN0aW9uIGgodCl7bGV0IGU9IkVOVk1BUF9UWVBFX0NVQkUiO2lmKHQuZW52TWFwKXN3aXRjaCh0LmVudk1hcE1vZGUpe2Nhc2UgZTJ0OmNhc2UgbjJ0OmU9IkVOVk1BUF9UWVBFX0NVQkUiO2JyZWFrO2Nhc2UgbzJ0OmNhc2UgYTJ0OmU9IkVOVk1BUF9UWVBFX0NVQkVfVVYifXJldHVybiBlfSkobiksZD0oZnVuY3Rpb24gcCh0KXtsZXQgZT0iRU5WTUFQX01PREVfUkVGTEVDVElPTiI7aWYodC5lbnZNYXApc3dpdGNoKHQuZW52TWFwTW9kZSl7Y2FzZSBuMnQ6Y2FzZSBhMnQ6ZT0iRU5WTUFQX01PREVfUkVGUkFDVElPTiJ9cmV0dXJuIGV9KShuKSxmPShmdW5jdGlvbiBtKHQpe2xldCBlPSJFTlZNQVBfQkxFTkRJTkdfTk9ORSI7aWYodC5lbnZNYXApc3dpdGNoKHQuY29tYmluZSl7Y2FzZSAwOmU9IkVOVk1BUF9CTEVORElOR19NVUxUSVBMWSI7YnJlYWs7Y2FzZSAxOmU9IkVOVk1BUF9CTEVORElOR19NSVgiO2JyZWFrO2Nhc2UgMjplPSJFTlZNQVBfQkxFTkRJTkdfQUREIn1yZXR1cm4gZX0pKG4pLGc9dC5nYW1tYUZhY3Rvcj4wP3QuZ2FtbWFGYWN0b3I6MSxfPW4uaXNXZWJHTDI/IiI6KGZ1bmN0aW9uIHkodCl7cmV0dXJuW3QuZXh0ZW5zaW9uRGVyaXZhdGl2ZXN8fHQuZW52TWFwQ3ViZVVWfHx0LmJ1bXBNYXB8fHQudGFuZ2VudFNwYWNlTm9ybWFsTWFwfHx0LmNsZWFyY29hdE5vcm1hbE1hcHx8dC5mbGF0U2hhZGluZ3x8InBoeXNpY2FsIj09PXQuc2hhZGVySUQ/IiNleHRlbnNpb24gR0xfT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzIDogZW5hYmxlIjoiIiwodC5leHRlbnNpb25GcmFnRGVwdGh8fHQubG9nYXJpdGhtaWNEZXB0aEJ1ZmZlcikmJnQucmVuZGVyZXJFeHRlbnNpb25GcmFnRGVwdGg/IiNleHRlbnNpb24gR0xfRVhUX2ZyYWdfZGVwdGggOiBlbmFibGUiOiIiLHQuZXh0ZW5zaW9uRHJhd0J1ZmZlcnMmJnQucmVuZGVyZXJFeHRlbnNpb25EcmF3QnVmZmVycz8iI2V4dGVuc2lvbiBHTF9FWFRfZHJhd19idWZmZXJzIDogcmVxdWlyZSI6IiIsKHQuZXh0ZW5zaW9uU2hhZGVyVGV4dHVyZUxPRHx8dC5lbnZNYXB8fHQudHJhbnNtaXNzaW9uPjApJiZ0LnJlbmRlcmVyRXh0ZW5zaW9uU2hhZGVyVGV4dHVyZUxvZD8iI2V4dGVuc2lvbiBHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIDogZW5hYmxlIjoiIl0uZmlsdGVyKHc4dCkuam9pbigiXG4iKX0pKG4pLHY9KGZ1bmN0aW9uIGIodCl7Y29uc3QgZT1bXTtmb3IoY29uc3QgbiBpbiB0KXtjb25zdCBpPXRbbl07ITEhPT1pJiZlLnB1c2goIiNkZWZpbmUgIituKyIgIitpKX1yZXR1cm4gZS5qb2luKCJcbiIpfSkobykseD1yLmNyZWF0ZVByb2dyYW0oKTtsZXQgdyxTLE09bi5nbHNsVmVyc2lvbj8iI3ZlcnNpb24gIituLmdsc2xWZXJzaW9uKyJcbiI6IiI7bi5pc1Jhd1NoYWRlck1hdGVyaWFsPyh3PVt2XS5maWx0ZXIodzh0KS5qb2luKCJcbiIpLHcubGVuZ3RoPjAmJih3Kz0iXG4iKSxTPVtfLHZdLmZpbHRlcih3OHQpLmpvaW4oIlxuIiksUy5sZW5ndGg+MCYmKFMrPSJcbiIpKToodz1bSTh0KG4pLCIjZGVmaW5lIFNIQURFUl9OQU1FICIrbi5zaGFkZXJOYW1lLHYsbi5pbnN0YW5jaW5nPyIjZGVmaW5lIFVTRV9JTlNUQU5DSU5HIjoiIixuLmluc3RhbmNpbmdDb2xvcj8iI2RlZmluZSBVU0VfSU5TVEFOQ0lOR19DT0xPUiI6IiIsbi5zdXBwb3J0c1ZlcnRleFRleHR1cmVzPyIjZGVmaW5lIFZFUlRFWF9URVhUVVJFUyI6IiIsIiNkZWZpbmUgR0FNTUFfRkFDVE9SICIrZywiI2RlZmluZSBNQVhfQk9ORVMgIituLm1heEJvbmVzLG4udXNlRm9nJiZuLmZvZz8iI2RlZmluZSBVU0VfRk9HIjoiIixuLnVzZUZvZyYmbi5mb2dFeHAyPyIjZGVmaW5lIEZPR19FWFAyIjoiIixuLm1hcD8iI2RlZmluZSBVU0VfTUFQIjoiIixuLmVudk1hcD8iI2RlZmluZSBVU0VfRU5WTUFQIjoiIixuLmVudk1hcD8iI2RlZmluZSAiK2Q6IiIsbi5saWdodE1hcD8iI2RlZmluZSBVU0VfTElHSFRNQVAiOiIiLG4uYW9NYXA/IiNkZWZpbmUgVVNFX0FPTUFQIjoiIixuLmVtaXNzaXZlTWFwPyIjZGVmaW5lIFVTRV9FTUlTU0lWRU1BUCI6IiIsbi5idW1wTWFwPyIjZGVmaW5lIFVTRV9CVU1QTUFQIjoiIixuLm5vcm1hbE1hcD8iI2RlZmluZSBVU0VfTk9STUFMTUFQIjoiIixuLm5vcm1hbE1hcCYmbi5vYmplY3RTcGFjZU5vcm1hbE1hcD8iI2RlZmluZSBPQkpFQ1RTUEFDRV9OT1JNQUxNQVAiOiIiLG4ubm9ybWFsTWFwJiZuLnRhbmdlbnRTcGFjZU5vcm1hbE1hcD8iI2RlZmluZSBUQU5HRU5UU1BBQ0VfTk9STUFMTUFQIjoiIixuLmNsZWFyY29hdE1hcD8iI2RlZmluZSBVU0VfQ0xFQVJDT0FUTUFQIjoiIixuLmNsZWFyY29hdFJvdWdobmVzc01hcD8iI2RlZmluZSBVU0VfQ0xFQVJDT0FUX1JPVUdITkVTU01BUCI6IiIsbi5jbGVhcmNvYXROb3JtYWxNYXA/IiNkZWZpbmUgVVNFX0NMRUFSQ09BVF9OT1JNQUxNQVAiOiIiLG4uZGlzcGxhY2VtZW50TWFwJiZuLnN1cHBvcnRzVmVydGV4VGV4dHVyZXM/IiNkZWZpbmUgVVNFX0RJU1BMQUNFTUVOVE1BUCI6IiIsbi5zcGVjdWxhck1hcD8iI2RlZmluZSBVU0VfU1BFQ1VMQVJNQVAiOiIiLG4uc3BlY3VsYXJJbnRlbnNpdHlNYXA/IiNkZWZpbmUgVVNFX1NQRUNVTEFSSU5URU5TSVRZTUFQIjoiIixuLnNwZWN1bGFyVGludE1hcD8iI2RlZmluZSBVU0VfU1BFQ1VMQVJUSU5UTUFQIjoiIixuLnJvdWdobmVzc01hcD8iI2RlZmluZSBVU0VfUk9VR0hORVNTTUFQIjoiIixuLm1ldGFsbmVzc01hcD8iI2RlZmluZSBVU0VfTUVUQUxORVNTTUFQIjoiIixuLmFscGhhTWFwPyIjZGVmaW5lIFVTRV9BTFBIQU1BUCI6IiIsbi50cmFuc21pc3Npb24/IiNkZWZpbmUgVVNFX1RSQU5TTUlTU0lPTiI6IiIsbi50cmFuc21pc3Npb25NYXA/IiNkZWZpbmUgVVNFX1RSQU5TTUlTU0lPTk1BUCI6IiIsbi50aGlja25lc3NNYXA/IiNkZWZpbmUgVVNFX1RISUNLTkVTU01BUCI6IiIsbi52ZXJ0ZXhUYW5nZW50cz8iI2RlZmluZSBVU0VfVEFOR0VOVCI6IiIsbi52ZXJ0ZXhDb2xvcnM/IiNkZWZpbmUgVVNFX0NPTE9SIjoiIixuLnZlcnRleEFscGhhcz8iI2RlZmluZSBVU0VfQ09MT1JfQUxQSEEiOiIiLG4udmVydGV4VXZzPyIjZGVmaW5lIFVTRV9VViI6IiIsbi51dnNWZXJ0ZXhPbmx5PyIjZGVmaW5lIFVWU19WRVJURVhfT05MWSI6IiIsbi5mbGF0U2hhZGluZz8iI2RlZmluZSBGTEFUX1NIQURFRCI6IiIsbi5za2lubmluZz8iI2RlZmluZSBVU0VfU0tJTk5JTkciOiIiLG4udXNlVmVydGV4VGV4dHVyZT8iI2RlZmluZSBCT05FX1RFWFRVUkUiOiIiLG4ubW9ycGhUYXJnZXRzPyIjZGVmaW5lIFVTRV9NT1JQSFRBUkdFVFMiOiIiLG4ubW9ycGhOb3JtYWxzJiYhMT09PW4uZmxhdFNoYWRpbmc/IiNkZWZpbmUgVVNFX01PUlBITk9STUFMUyI6IiIsbi5kb3VibGVTaWRlZD8iI2RlZmluZSBET1VCTEVfU0lERUQiOiIiLG4uZmxpcFNpZGVkPyIjZGVmaW5lIEZMSVBfU0lERUQiOiIiLG4uc2hhZG93TWFwRW5hYmxlZD8iI2RlZmluZSBVU0VfU0hBRE9XTUFQIjoiIixuLnNoYWRvd01hcEVuYWJsZWQ/IiNkZWZpbmUgIitsOiIiLG4uc2l6ZUF0dGVudWF0aW9uPyIjZGVmaW5lIFVTRV9TSVpFQVRURU5VQVRJT04iOiIiLG4ubG9nYXJpdGhtaWNEZXB0aEJ1ZmZlcj8iI2RlZmluZSBVU0VfTE9HREVQVEhCVUYiOiIiLG4ubG9nYXJpdGhtaWNEZXB0aEJ1ZmZlciYmbi5yZW5kZXJlckV4dGVuc2lvbkZyYWdEZXB0aD8iI2RlZmluZSBVU0VfTE9HREVQVEhCVUZfRVhUIjoiIiwidW5pZm9ybSBtYXQ0IG1vZGVsTWF0cml4OyIsInVuaWZvcm0gbWF0NCBtb2RlbFZpZXdNYXRyaXg7IiwidW5pZm9ybSBtYXQ0IHByb2plY3Rpb25NYXRyaXg7IiwidW5pZm9ybSBtYXQ0IHZpZXdNYXRyaXg7IiwidW5pZm9ybSBtYXQzIG5vcm1hbE1hdHJpeDsiLCJ1bmlmb3JtIHZlYzMgY2FtZXJhUG9zaXRpb247IiwidW5pZm9ybSBib29sIGlzT3J0aG9ncmFwaGljOyIsIiNpZmRlZiBVU0VfSU5TVEFOQ0lORyIsIlx0YXR0cmlidXRlIG1hdDQgaW5zdGFuY2VNYXRyaXg7IiwiI2VuZGlmIiwiI2lmZGVmIFVTRV9JTlNUQU5DSU5HX0NPTE9SIiwiXHRhdHRyaWJ1dGUgdmVjMyBpbnN0YW5jZUNvbG9yOyIsIiNlbmRpZiIsImF0dHJpYnV0ZSB2ZWMzIHBvc2l0aW9uOyIsImF0dHJpYnV0ZSB2ZWMzIG5vcm1hbDsiLCJhdHRyaWJ1dGUgdmVjMiB1djsiLCIjaWZkZWYgVVNFX1RBTkdFTlQiLCJcdGF0dHJpYnV0ZSB2ZWM0IHRhbmdlbnQ7IiwiI2VuZGlmIiwiI2lmIGRlZmluZWQoIFVTRV9DT0xPUl9BTFBIQSApIiwiXHRhdHRyaWJ1dGUgdmVjNCBjb2xvcjsiLCIjZWxpZiBkZWZpbmVkKCBVU0VfQ09MT1IgKSIsIlx0YXR0cmlidXRlIHZlYzMgY29sb3I7IiwiI2VuZGlmIiwiI2lmZGVmIFVTRV9NT1JQSFRBUkdFVFMiLCJcdGF0dHJpYnV0ZSB2ZWMzIG1vcnBoVGFyZ2V0MDsiLCJcdGF0dHJpYnV0ZSB2ZWMzIG1vcnBoVGFyZ2V0MTsiLCJcdGF0dHJpYnV0ZSB2ZWMzIG1vcnBoVGFyZ2V0MjsiLCJcdGF0dHJpYnV0ZSB2ZWMzIG1vcnBoVGFyZ2V0MzsiLCJcdCNpZmRlZiBVU0VfTU9SUEhOT1JNQUxTIiwiXHRcdGF0dHJpYnV0ZSB2ZWMzIG1vcnBoTm9ybWFsMDsiLCJcdFx0YXR0cmlidXRlIHZlYzMgbW9ycGhOb3JtYWwxOyIsIlx0XHRhdHRyaWJ1dGUgdmVjMyBtb3JwaE5vcm1hbDI7IiwiXHRcdGF0dHJpYnV0ZSB2ZWMzIG1vcnBoTm9ybWFsMzsiLCJcdCNlbHNlIiwiXHRcdGF0dHJpYnV0ZSB2ZWMzIG1vcnBoVGFyZ2V0NDsiLCJcdFx0YXR0cmlidXRlIHZlYzMgbW9ycGhUYXJnZXQ1OyIsIlx0XHRhdHRyaWJ1dGUgdmVjMyBtb3JwaFRhcmdldDY7IiwiXHRcdGF0dHJpYnV0ZSB2ZWMzIG1vcnBoVGFyZ2V0NzsiLCJcdCNlbmRpZiIsIiNlbmRpZiIsIiNpZmRlZiBVU0VfU0tJTk5JTkciLCJcdGF0dHJpYnV0ZSB2ZWM0IHNraW5JbmRleDsiLCJcdGF0dHJpYnV0ZSB2ZWM0IHNraW5XZWlnaHQ7IiwiI2VuZGlmIiwiXG4iXS5maWx0ZXIodzh0KS5qb2luKCJcbiIpLFM9W18sSTh0KG4pLCIjZGVmaW5lIFNIQURFUl9OQU1FICIrbi5zaGFkZXJOYW1lLHYsbi5hbHBoYVRlc3Q/IiNkZWZpbmUgQUxQSEFURVNUICIrbi5hbHBoYVRlc3QrKG4uYWxwaGFUZXN0JTE/IiI6Ii4wIik6IiIsIiNkZWZpbmUgR0FNTUFfRkFDVE9SICIrZyxuLnVzZUZvZyYmbi5mb2c/IiNkZWZpbmUgVVNFX0ZPRyI6IiIsbi51c2VGb2cmJm4uZm9nRXhwMj8iI2RlZmluZSBGT0dfRVhQMiI6IiIsbi5tYXA/IiNkZWZpbmUgVVNFX01BUCI6IiIsbi5tYXRjYXA/IiNkZWZpbmUgVVNFX01BVENBUCI6IiIsbi5lbnZNYXA/IiNkZWZpbmUgVVNFX0VOVk1BUCI6IiIsbi5lbnZNYXA/IiNkZWZpbmUgIit1OiIiLG4uZW52TWFwPyIjZGVmaW5lICIrZDoiIixuLmVudk1hcD8iI2RlZmluZSAiK2Y6IiIsbi5saWdodE1hcD8iI2RlZmluZSBVU0VfTElHSFRNQVAiOiIiLG4uYW9NYXA/IiNkZWZpbmUgVVNFX0FPTUFQIjoiIixuLmVtaXNzaXZlTWFwPyIjZGVmaW5lIFVTRV9FTUlTU0lWRU1BUCI6IiIsbi5idW1wTWFwPyIjZGVmaW5lIFVTRV9CVU1QTUFQIjoiIixuLm5vcm1hbE1hcD8iI2RlZmluZSBVU0VfTk9STUFMTUFQIjoiIixuLm5vcm1hbE1hcCYmbi5vYmplY3RTcGFjZU5vcm1hbE1hcD8iI2RlZmluZSBPQkpFQ1RTUEFDRV9OT1JNQUxNQVAiOiIiLG4ubm9ybWFsTWFwJiZuLnRhbmdlbnRTcGFjZU5vcm1hbE1hcD8iI2RlZmluZSBUQU5HRU5UU1BBQ0VfTk9STUFMTUFQIjoiIixuLmNsZWFyY29hdE1hcD8iI2RlZmluZSBVU0VfQ0xFQVJDT0FUTUFQIjoiIixuLmNsZWFyY29hdFJvdWdobmVzc01hcD8iI2RlZmluZSBVU0VfQ0xFQVJDT0FUX1JPVUdITkVTU01BUCI6IiIsbi5jbGVhcmNvYXROb3JtYWxNYXA/IiNkZWZpbmUgVVNFX0NMRUFSQ09BVF9OT1JNQUxNQVAiOiIiLG4uc3BlY3VsYXJNYXA/IiNkZWZpbmUgVVNFX1NQRUNVTEFSTUFQIjoiIixuLnNwZWN1bGFySW50ZW5zaXR5TWFwPyIjZGVmaW5lIFVTRV9TUEVDVUxBUklOVEVOU0lUWU1BUCI6IiIsbi5zcGVjdWxhclRpbnRNYXA/IiNkZWZpbmUgVVNFX1NQRUNVTEFSVElOVE1BUCI6IiIsbi5yb3VnaG5lc3NNYXA/IiNkZWZpbmUgVVNFX1JPVUdITkVTU01BUCI6IiIsbi5tZXRhbG5lc3NNYXA/IiNkZWZpbmUgVVNFX01FVEFMTkVTU01BUCI6IiIsbi5hbHBoYU1hcD8iI2RlZmluZSBVU0VfQUxQSEFNQVAiOiIiLG4uc2hlZW4/IiNkZWZpbmUgVVNFX1NIRUVOIjoiIixuLnRyYW5zbWlzc2lvbj8iI2RlZmluZSBVU0VfVFJBTlNNSVNTSU9OIjoiIixuLnRyYW5zbWlzc2lvbk1hcD8iI2RlZmluZSBVU0VfVFJBTlNNSVNTSU9OTUFQIjoiIixuLnRoaWNrbmVzc01hcD8iI2RlZmluZSBVU0VfVEhJQ0tORVNTTUFQIjoiIixuLnZlcnRleFRhbmdlbnRzPyIjZGVmaW5lIFVTRV9UQU5HRU5UIjoiIixuLnZlcnRleENvbG9yc3x8bi5pbnN0YW5jaW5nQ29sb3I/IiNkZWZpbmUgVVNFX0NPTE9SIjoiIixuLnZlcnRleEFscGhhcz8iI2RlZmluZSBVU0VfQ09MT1JfQUxQSEEiOiIiLG4udmVydGV4VXZzPyIjZGVmaW5lIFVTRV9VViI6IiIsbi51dnNWZXJ0ZXhPbmx5PyIjZGVmaW5lIFVWU19WRVJURVhfT05MWSI6IiIsbi5ncmFkaWVudE1hcD8iI2RlZmluZSBVU0VfR1JBRElFTlRNQVAiOiIiLG4uZmxhdFNoYWRpbmc/IiNkZWZpbmUgRkxBVF9TSEFERUQiOiIiLG4uZG91YmxlU2lkZWQ/IiNkZWZpbmUgRE9VQkxFX1NJREVEIjoiIixuLmZsaXBTaWRlZD8iI2RlZmluZSBGTElQX1NJREVEIjoiIixuLnNoYWRvd01hcEVuYWJsZWQ/IiNkZWZpbmUgVVNFX1NIQURPV01BUCI6IiIsbi5zaGFkb3dNYXBFbmFibGVkPyIjZGVmaW5lICIrbDoiIixuLnByZW11bHRpcGxpZWRBbHBoYT8iI2RlZmluZSBQUkVNVUxUSVBMSUVEX0FMUEhBIjoiIixuLnBoeXNpY2FsbHlDb3JyZWN0TGlnaHRzPyIjZGVmaW5lIFBIWVNJQ0FMTFlfQ09SUkVDVF9MSUdIVFMiOiIiLG4ubG9nYXJpdGhtaWNEZXB0aEJ1ZmZlcj8iI2RlZmluZSBVU0VfTE9HREVQVEhCVUYiOiIiLG4ubG9nYXJpdGhtaWNEZXB0aEJ1ZmZlciYmbi5yZW5kZXJlckV4dGVuc2lvbkZyYWdEZXB0aD8iI2RlZmluZSBVU0VfTE9HREVQVEhCVUZfRVhUIjoiIiwobi5leHRlbnNpb25TaGFkZXJUZXh0dXJlTE9EfHxuLmVudk1hcCkmJm4ucmVuZGVyZXJFeHRlbnNpb25TaGFkZXJUZXh0dXJlTG9kPyIjZGVmaW5lIFRFWFRVUkVfTE9EX0VYVCI6IiIsInVuaWZvcm0gbWF0NCB2aWV3TWF0cml4OyIsInVuaWZvcm0gdmVjMyBjYW1lcmFQb3NpdGlvbjsiLCJ1bmlmb3JtIGJvb2wgaXNPcnRob2dyYXBoaWM7IiwwIT09bi50b25lTWFwcGluZz8iI2RlZmluZSBUT05FX01BUFBJTkciOiIiLDAhPT1uLnRvbmVNYXBwaW5nP3Y2dC50b25lbWFwcGluZ19wYXJzX2ZyYWdtZW50OiIiLDAhPT1uLnRvbmVNYXBwaW5nP3g4dCgidG9uZU1hcHBpbmciLG4udG9uZU1hcHBpbmcpOiIiLG4uZGl0aGVyaW5nPyIjZGVmaW5lIERJVEhFUklORyI6IiIsdjZ0LmVuY29kaW5nc19wYXJzX2ZyYWdtZW50LG4ubWFwP3Y4dCgibWFwVGV4ZWxUb0xpbmVhciIsbi5tYXBFbmNvZGluZyk6IiIsbi5tYXRjYXA/djh0KCJtYXRjYXBUZXhlbFRvTGluZWFyIixuLm1hdGNhcEVuY29kaW5nKToiIixuLmVudk1hcD92OHQoImVudk1hcFRleGVsVG9MaW5lYXIiLG4uZW52TWFwRW5jb2RpbmcpOiIiLG4uZW1pc3NpdmVNYXA/djh0KCJlbWlzc2l2ZU1hcFRleGVsVG9MaW5lYXIiLG4uZW1pc3NpdmVNYXBFbmNvZGluZyk6IiIsbi5zcGVjdWxhclRpbnRNYXA/djh0KCJzcGVjdWxhclRpbnRNYXBUZXhlbFRvTGluZWFyIixuLnNwZWN1bGFyVGludE1hcEVuY29kaW5nKToiIixuLmxpZ2h0TWFwP3Y4dCgibGlnaHRNYXBUZXhlbFRvTGluZWFyIixuLmxpZ2h0TWFwRW5jb2RpbmcpOiIiLGI4dCgibGluZWFyVG9PdXRwdXRUZXhlbCIsbi5vdXRwdXRFbmNvZGluZyksbi5kZXB0aFBhY2tpbmc/IiNkZWZpbmUgREVQVEhfUEFDS0lORyAiK24uZGVwdGhQYWNraW5nOiIiLCJcbiJdLmZpbHRlcih3OHQpLmpvaW4oIlxuIikpLGE9VDh0KGEpLGE9Uzh0KGEsbiksYT1NOHQoYSxuKSxzPVQ4dChzKSxzPVM4dChzLG4pLHM9TTh0KHMsbiksYT1MOHQoYSkscz1MOHQocyksbi5pc1dlYkdMMiYmITAhPT1uLmlzUmF3U2hhZGVyTWF0ZXJpYWwmJihNPSIjdmVyc2lvbiAzMDAgZXNcbiIsdz1bIiNkZWZpbmUgYXR0cmlidXRlIGluIiwiI2RlZmluZSB2YXJ5aW5nIG91dCIsIiNkZWZpbmUgdGV4dHVyZTJEIHRleHR1cmUiXS5qb2luKCJcbiIpKyJcbiIrdyxTPVsiI2RlZmluZSB2YXJ5aW5nIGluIixuLmdsc2xWZXJzaW9uPT09dDV0PyIiOiJvdXQgaGlnaHAgdmVjNCBwY19mcmFnQ29sb3I7IixuLmdsc2xWZXJzaW9uPT09dDV0PyIiOiIjZGVmaW5lIGdsX0ZyYWdDb2xvciBwY19mcmFnQ29sb3IiLCIjZGVmaW5lIGdsX0ZyYWdEZXB0aEVYVCBnbF9GcmFnRGVwdGgiLCIjZGVmaW5lIHRleHR1cmUyRCB0ZXh0dXJlIiwiI2RlZmluZSB0ZXh0dXJlQ3ViZSB0ZXh0dXJlIiwiI2RlZmluZSB0ZXh0dXJlMkRQcm9qIHRleHR1cmVQcm9qIiwiI2RlZmluZSB0ZXh0dXJlMkRMb2RFWFQgdGV4dHVyZUxvZCIsIiNkZWZpbmUgdGV4dHVyZTJEUHJvakxvZEVYVCB0ZXh0dXJlUHJvakxvZCIsIiNkZWZpbmUgdGV4dHVyZUN1YmVMb2RFWFQgdGV4dHVyZUxvZCIsIiNkZWZpbmUgdGV4dHVyZTJER3JhZEVYVCB0ZXh0dXJlR3JhZCIsIiNkZWZpbmUgdGV4dHVyZTJEUHJvakdyYWRFWFQgdGV4dHVyZVByb2pHcmFkIiwiI2RlZmluZSB0ZXh0dXJlQ3ViZUdyYWRFWFQgdGV4dHVyZUdyYWQiXS5qb2luKCJcbiIpKyJcbiIrUyk7Y29uc3QgRT1NK1MrcyxUPW04dChyLDM1NjMzLE0rdythKSxDPW04dChyLDM1NjMyLEUpO2lmKHIuYXR0YWNoU2hhZGVyKHgsVCksci5hdHRhY2hTaGFkZXIoeCxDKSx2b2lkIDAhPT1uLmluZGV4MEF0dHJpYnV0ZU5hbWU/ci5iaW5kQXR0cmliTG9jYXRpb24oeCwwLG4uaW5kZXgwQXR0cmlidXRlTmFtZSk6ITA9PT1uLm1vcnBoVGFyZ2V0cyYmci5iaW5kQXR0cmliTG9jYXRpb24oeCwwLCJwb3NpdGlvbiIpLHIubGlua1Byb2dyYW0oeCksdC5kZWJ1Zy5jaGVja1NoYWRlckVycm9ycyl7Y29uc3QgdD1yLmdldFByb2dyYW1JbmZvTG9nKHgpLnRyaW0oKSxlPXIuZ2V0U2hhZGVySW5mb0xvZyhUKS50cmltKCksbj1yLmdldFNoYWRlckluZm9Mb2coQykudHJpbSgpO2xldCBpPSEwLG89ITA7aWYoITE9PT1yLmdldFByb2dyYW1QYXJhbWV0ZXIoeCwzNTcxNCkpe2k9ITE7Y29uc3QgZT15OHQocixULCJ2ZXJ0ZXgiKSxuPXk4dChyLEMsImZyYWdtZW50Iik7Y29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xQcm9ncmFtOiBzaGFkZXIgZXJyb3I6ICIsci5nZXRFcnJvcigpLCIzNTcxNSIsci5nZXRQcm9ncmFtUGFyYW1ldGVyKHgsMzU3MTUpLCJnbC5nZXRQcm9ncmFtSW5mb0xvZyIsdCxlLG4pfWVsc2UiIiE9PXQ/Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFByb2dyYW06IGdsLmdldFByb2dyYW1JbmZvTG9nKCkiLHQpOiIiIT09ZSYmIiIhPT1ufHwobz0hMSk7byYmKHRoaXMuZGlhZ25vc3RpY3M9e3J1bm5hYmxlOmkscHJvZ3JhbUxvZzp0LHZlcnRleFNoYWRlcjp7bG9nOmUscHJlZml4Ond9LGZyYWdtZW50U2hhZGVyOntsb2c6bixwcmVmaXg6U319KX1sZXQgQSxrO3JldHVybiByLmRlbGV0ZVNoYWRlcihUKSxyLmRlbGV0ZVNoYWRlcihDKSx0aGlzLmdldFVuaWZvcm1zPWZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgMD09PUEmJihBPW5ldyBmOHQocix4KSksQX0sdGhpcy5nZXRBdHRyaWJ1dGVzPWZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgMD09PWsmJihrPShmdW5jdGlvbiB0KGUsbil7Y29uc3QgaT17fSxyPWUuZ2V0UHJvZ3JhbVBhcmFtZXRlcihuLDM1NzIxKTtmb3IobGV0IHQ9MDt0PHI7dCsrKXtjb25zdCByPWUuZ2V0QWN0aXZlQXR0cmliKG4sdCkubmFtZTtpW3JdPWUuZ2V0QXR0cmliTG9jYXRpb24obixyKX1yZXR1cm4gaX0pKHIseCkpLGt9LHRoaXMuZGVzdHJveT1mdW5jdGlvbigpe2kucmVsZWFzZVN0YXRlc09mUHJvZ3JhbSh0aGlzKSxyLmRlbGV0ZVByb2dyYW0oeCksdGhpcy5wcm9ncmFtPXZvaWQgMH0sdGhpcy5uYW1lPW4uc2hhZGVyTmFtZSx0aGlzLmlkPWc4dCsrLHRoaXMuY2FjaGVLZXk9ZSx0aGlzLnVzZWRUaW1lcz0xLHRoaXMucHJvZ3JhbT14LHRoaXMudmVydGV4U2hhZGVyPVQsdGhpcy5mcmFnbWVudFNoYWRlcj1DLHRoaXN9ZnVuY3Rpb24gTzh0KHQsZSxuLGkscixvLGEpe2NvbnN0IHM9W10sbD1yLmlzV2ViR0wyLGM9ci5sb2dhcml0aG1pY0RlcHRoQnVmZmVyLHU9ci5mbG9hdFZlcnRleFRleHR1cmVzLGg9ci5tYXhWZXJ0ZXhVbmlmb3JtcyxkPXIudmVydGV4VGV4dHVyZXM7bGV0IHA9ci5wcmVjaXNpb247Y29uc3QgZj17TWVzaERlcHRoTWF0ZXJpYWw6ImRlcHRoIixNZXNoRGlzdGFuY2VNYXRlcmlhbDoiZGlzdGFuY2VSR0JBIixNZXNoTm9ybWFsTWF0ZXJpYWw6Im5vcm1hbCIsTWVzaEJhc2ljTWF0ZXJpYWw6ImJhc2ljIixNZXNoTGFtYmVydE1hdGVyaWFsOiJsYW1iZXJ0IixNZXNoUGhvbmdNYXRlcmlhbDoicGhvbmciLE1lc2hUb29uTWF0ZXJpYWw6InRvb24iLE1lc2hTdGFuZGFyZE1hdGVyaWFsOiJwaHlzaWNhbCIsTWVzaFBoeXNpY2FsTWF0ZXJpYWw6InBoeXNpY2FsIixNZXNoTWF0Y2FwTWF0ZXJpYWw6Im1hdGNhcCIsTGluZUJhc2ljTWF0ZXJpYWw6ImJhc2ljIixMaW5lRGFzaGVkTWF0ZXJpYWw6ImRhc2hlZCIsUG9pbnRzTWF0ZXJpYWw6InBvaW50cyIsU2hhZG93TWF0ZXJpYWw6InNoYWRvdyIsU3ByaXRlTWF0ZXJpYWw6InNwcml0ZSJ9LG09WyJwcmVjaXNpb24iLCJpc1dlYkdMMiIsInN1cHBvcnRzVmVydGV4VGV4dHVyZXMiLCJvdXRwdXRFbmNvZGluZyIsImluc3RhbmNpbmciLCJpbnN0YW5jaW5nQ29sb3IiLCJtYXAiLCJtYXBFbmNvZGluZyIsIm1hdGNhcCIsIm1hdGNhcEVuY29kaW5nIiwiZW52TWFwIiwiZW52TWFwTW9kZSIsImVudk1hcEVuY29kaW5nIiwiZW52TWFwQ3ViZVVWIiwibGlnaHRNYXAiLCJsaWdodE1hcEVuY29kaW5nIiwiYW9NYXAiLCJlbWlzc2l2ZU1hcCIsImVtaXNzaXZlTWFwRW5jb2RpbmciLCJidW1wTWFwIiwibm9ybWFsTWFwIiwib2JqZWN0U3BhY2VOb3JtYWxNYXAiLCJ0YW5nZW50U3BhY2VOb3JtYWxNYXAiLCJjbGVhcmNvYXRNYXAiLCJjbGVhcmNvYXRSb3VnaG5lc3NNYXAiLCJjbGVhcmNvYXROb3JtYWxNYXAiLCJkaXNwbGFjZW1lbnRNYXAiLCJzcGVjdWxhck1hcCIsInNwZWN1bGFySW50ZW5zaXR5TWFwIiwic3BlY3VsYXJUaW50TWFwIiwic3BlY3VsYXJUaW50TWFwRW5jb2RpbmciLCJyb3VnaG5lc3NNYXAiLCJtZXRhbG5lc3NNYXAiLCJncmFkaWVudE1hcCIsImFscGhhTWFwIiwiY29tYmluZSIsInZlcnRleENvbG9ycyIsInZlcnRleEFscGhhcyIsInZlcnRleFRhbmdlbnRzIiwidmVydGV4VXZzIiwidXZzVmVydGV4T25seSIsImZvZyIsInVzZUZvZyIsImZvZ0V4cDIiLCJmbGF0U2hhZGluZyIsInNpemVBdHRlbnVhdGlvbiIsImxvZ2FyaXRobWljRGVwdGhCdWZmZXIiLCJza2lubmluZyIsIm1heEJvbmVzIiwidXNlVmVydGV4VGV4dHVyZSIsIm1vcnBoVGFyZ2V0cyIsIm1vcnBoTm9ybWFscyIsInByZW11bHRpcGxpZWRBbHBoYSIsIm51bURpckxpZ2h0cyIsIm51bVBvaW50TGlnaHRzIiwibnVtU3BvdExpZ2h0cyIsIm51bUhlbWlMaWdodHMiLCJudW1SZWN0QXJlYUxpZ2h0cyIsIm51bURpckxpZ2h0U2hhZG93cyIsIm51bVBvaW50TGlnaHRTaGFkb3dzIiwibnVtU3BvdExpZ2h0U2hhZG93cyIsInNoYWRvd01hcEVuYWJsZWQiLCJzaGFkb3dNYXBUeXBlIiwidG9uZU1hcHBpbmciLCJwaHlzaWNhbGx5Q29ycmVjdExpZ2h0cyIsImFscGhhVGVzdCIsImRvdWJsZVNpZGVkIiwiZmxpcFNpZGVkIiwibnVtQ2xpcHBpbmdQbGFuZXMiLCJudW1DbGlwSW50ZXJzZWN0aW9uIiwiZGVwdGhQYWNraW5nIiwiZGl0aGVyaW5nIiwic2hlZW4iLCJ0cmFuc21pc3Npb24iLCJ0cmFuc21pc3Npb25NYXAiLCJ0aGlja25lc3NNYXAiXTtmdW5jdGlvbiBnKHQpe2xldCBlO3JldHVybiB0JiZ0LmlzVGV4dHVyZT9lPXQuZW5jb2Rpbmc6dCYmdC5pc1dlYkdMUmVuZGVyVGFyZ2V0Pyhjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUHJvZ3JhbXMuZ2V0VGV4dHVyZUVuY29kaW5nRnJvbU1hcDogZG9uJ3QgdXNlIHJlbmRlciB0YXJnZXRzIGFzIHRleHR1cmVzLiBVc2UgdGhlaXIgLnRleHR1cmUgcHJvcGVydHkgaW5zdGVhZC4iKSxlPXQudGV4dHVyZS5lbmNvZGluZyk6ZT1HMnQsZX1yZXR1cm57Z2V0UGFyYW1ldGVyczpmdW5jdGlvbiBfKG8scyxtLHksdil7Y29uc3QgYj15LmZvZyx4PShvLmlzTWVzaFN0YW5kYXJkTWF0ZXJpYWw/bjplKS5nZXQoby5lbnZNYXB8fChvLmlzTWVzaFN0YW5kYXJkTWF0ZXJpYWw/eS5lbnZpcm9ubWVudDpudWxsKSksdz1mW28udHlwZV0sUz12LmlzU2tpbm5lZE1lc2g/KGZ1bmN0aW9uIE0odCl7Y29uc3QgZT10LnNrZWxldG9uLmJvbmVzO2lmKHUpcmV0dXJuIDEwMjQ7e2NvbnN0IHQ9TWF0aC5mbG9vcigoaC0yMCkvNCksbj1NYXRoLm1pbih0LGUubGVuZ3RoKTtyZXR1cm4gbjxlLmxlbmd0aD8oY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBTa2VsZXRvbiBoYXMgIitlLmxlbmd0aCsiIGJvbmVzLiBUaGlzIEdQVSBzdXBwb3J0cyAiK24rIi4iKSwwKTpufX0pKHYpOjA7bGV0IEUsVDtpZihudWxsIT09by5wcmVjaXNpb24mJihwPXIuZ2V0TWF4UHJlY2lzaW9uKG8ucHJlY2lzaW9uKSxwIT09by5wcmVjaXNpb24mJmNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xQcm9ncmFtLmdldFBhcmFtZXRlcnM6IixvLnByZWNpc2lvbiwibm90IHN1cHBvcnRlZCwgdXNpbmciLHAsImluc3RlYWQuIikpLHcpe2NvbnN0IHQ9eDZ0W3ddO0U9dC52ZXJ0ZXhTaGFkZXIsVD10LmZyYWdtZW50U2hhZGVyfWVsc2UgRT1vLnZlcnRleFNoYWRlcixUPW8uZnJhZ21lbnRTaGFkZXI7Y29uc3QgQz10LmdldFJlbmRlclRhcmdldCgpO3JldHVybntpc1dlYkdMMjpsLHNoYWRlcklEOncsc2hhZGVyTmFtZTpvLnR5cGUsdmVydGV4U2hhZGVyOkUsZnJhZ21lbnRTaGFkZXI6VCxkZWZpbmVzOm8uZGVmaW5lcyxpc1Jhd1NoYWRlck1hdGVyaWFsOiEwPT09by5pc1Jhd1NoYWRlck1hdGVyaWFsLGdsc2xWZXJzaW9uOm8uZ2xzbFZlcnNpb24scHJlY2lzaW9uOnAsaW5zdGFuY2luZzohMD09PXYuaXNJbnN0YW5jZWRNZXNoLGluc3RhbmNpbmdDb2xvcjohMD09PXYuaXNJbnN0YW5jZWRNZXNoJiZudWxsIT09di5pbnN0YW5jZUNvbG9yLHN1cHBvcnRzVmVydGV4VGV4dHVyZXM6ZCxvdXRwdXRFbmNvZGluZzpudWxsIT09Qz9nKEMudGV4dHVyZSk6dC5vdXRwdXRFbmNvZGluZyxtYXA6ISFvLm1hcCxtYXBFbmNvZGluZzpnKG8ubWFwKSxtYXRjYXA6ISFvLm1hdGNhcCxtYXRjYXBFbmNvZGluZzpnKG8ubWF0Y2FwKSxlbnZNYXA6ISF4LGVudk1hcE1vZGU6eCYmeC5tYXBwaW5nLGVudk1hcEVuY29kaW5nOmcoeCksZW52TWFwQ3ViZVVWOiEheCYmKHgubWFwcGluZz09PW8ydHx8eC5tYXBwaW5nPT09YTJ0KSxsaWdodE1hcDohIW8ubGlnaHRNYXAsbGlnaHRNYXBFbmNvZGluZzpnKG8ubGlnaHRNYXApLGFvTWFwOiEhby5hb01hcCxlbWlzc2l2ZU1hcDohIW8uZW1pc3NpdmVNYXAsZW1pc3NpdmVNYXBFbmNvZGluZzpnKG8uZW1pc3NpdmVNYXApLGJ1bXBNYXA6ISFvLmJ1bXBNYXAsbm9ybWFsTWFwOiEhby5ub3JtYWxNYXAsb2JqZWN0U3BhY2VOb3JtYWxNYXA6MT09PW8ubm9ybWFsTWFwVHlwZSx0YW5nZW50U3BhY2VOb3JtYWxNYXA6MD09PW8ubm9ybWFsTWFwVHlwZSxjbGVhcmNvYXRNYXA6ISFvLmNsZWFyY29hdE1hcCxjbGVhcmNvYXRSb3VnaG5lc3NNYXA6ISFvLmNsZWFyY29hdFJvdWdobmVzc01hcCxjbGVhcmNvYXROb3JtYWxNYXA6ISFvLmNsZWFyY29hdE5vcm1hbE1hcCxkaXNwbGFjZW1lbnRNYXA6ISFvLmRpc3BsYWNlbWVudE1hcCxyb3VnaG5lc3NNYXA6ISFvLnJvdWdobmVzc01hcCxtZXRhbG5lc3NNYXA6ISFvLm1ldGFsbmVzc01hcCxzcGVjdWxhck1hcDohIW8uc3BlY3VsYXJNYXAsc3BlY3VsYXJJbnRlbnNpdHlNYXA6ISFvLnNwZWN1bGFySW50ZW5zaXR5TWFwLHNwZWN1bGFyVGludE1hcDohIW8uc3BlY3VsYXJUaW50TWFwLHNwZWN1bGFyVGludE1hcEVuY29kaW5nOmcoby5zcGVjdWxhclRpbnRNYXApLGFscGhhTWFwOiEhby5hbHBoYU1hcCxncmFkaWVudE1hcDohIW8uZ3JhZGllbnRNYXAsc2hlZW46ISFvLnNoZWVuLHRyYW5zbWlzc2lvbjohIW8udHJhbnNtaXNzaW9uLHRyYW5zbWlzc2lvbk1hcDohIW8udHJhbnNtaXNzaW9uTWFwLHRoaWNrbmVzc01hcDohIW8udGhpY2tuZXNzTWFwLGNvbWJpbmU6by5jb21iaW5lLHZlcnRleFRhbmdlbnRzOiEhby5ub3JtYWxNYXAmJiEhdi5nZW9tZXRyeSYmISF2Lmdlb21ldHJ5LmF0dHJpYnV0ZXMudGFuZ2VudCx2ZXJ0ZXhDb2xvcnM6by52ZXJ0ZXhDb2xvcnMsdmVydGV4QWxwaGFzOiEwPT09by52ZXJ0ZXhDb2xvcnMmJiEhdi5nZW9tZXRyeSYmISF2Lmdlb21ldHJ5LmF0dHJpYnV0ZXMuY29sb3ImJjQ9PT12Lmdlb21ldHJ5LmF0dHJpYnV0ZXMuY29sb3IuaXRlbVNpemUsdmVydGV4VXZzOiEhKG8ubWFwfHxvLmJ1bXBNYXB8fG8ubm9ybWFsTWFwfHxvLnNwZWN1bGFyTWFwfHxvLmFscGhhTWFwfHxvLmVtaXNzaXZlTWFwfHxvLnJvdWdobmVzc01hcHx8by5tZXRhbG5lc3NNYXB8fG8uY2xlYXJjb2F0TWFwfHxvLmNsZWFyY29hdFJvdWdobmVzc01hcHx8by5jbGVhcmNvYXROb3JtYWxNYXB8fG8uZGlzcGxhY2VtZW50TWFwfHxvLnRyYW5zbWlzc2lvbk1hcHx8by50aGlja25lc3NNYXB8fG8uc3BlY3VsYXJJbnRlbnNpdHlNYXB8fG8uc3BlY3VsYXJUaW50TWFwKSx1dnNWZXJ0ZXhPbmx5OiEoby5tYXB8fG8uYnVtcE1hcHx8by5ub3JtYWxNYXB8fG8uc3BlY3VsYXJNYXB8fG8uYWxwaGFNYXB8fG8uZW1pc3NpdmVNYXB8fG8ucm91Z2huZXNzTWFwfHxvLm1ldGFsbmVzc01hcHx8by5jbGVhcmNvYXROb3JtYWxNYXB8fG8udHJhbnNtaXNzaW9ufHxvLnRyYW5zbWlzc2lvbk1hcHx8by50aGlja25lc3NNYXB8fG8uc3BlY3VsYXJJbnRlbnNpdHlNYXB8fG8uc3BlY3VsYXJUaW50TWFwfHwhby5kaXNwbGFjZW1lbnRNYXApLGZvZzohIWIsdXNlRm9nOm8uZm9nLGZvZ0V4cDI6YiYmYi5pc0ZvZ0V4cDIsZmxhdFNoYWRpbmc6ISFvLmZsYXRTaGFkaW5nLHNpemVBdHRlbnVhdGlvbjpvLnNpemVBdHRlbnVhdGlvbixsb2dhcml0aG1pY0RlcHRoQnVmZmVyOmMsc2tpbm5pbmc6ITA9PT12LmlzU2tpbm5lZE1lc2gmJlM+MCxtYXhCb25lczpTLHVzZVZlcnRleFRleHR1cmU6dSxtb3JwaFRhcmdldHM6ISF2Lmdlb21ldHJ5JiYhIXYuZ2VvbWV0cnkubW9ycGhBdHRyaWJ1dGVzLnBvc2l0aW9uLG1vcnBoTm9ybWFsczohIXYuZ2VvbWV0cnkmJiEhdi5nZW9tZXRyeS5tb3JwaEF0dHJpYnV0ZXMubm9ybWFsLG51bURpckxpZ2h0czpzLmRpcmVjdGlvbmFsLmxlbmd0aCxudW1Qb2ludExpZ2h0czpzLnBvaW50Lmxlbmd0aCxudW1TcG90TGlnaHRzOnMuc3BvdC5sZW5ndGgsbnVtUmVjdEFyZWFMaWdodHM6cy5yZWN0QXJlYS5sZW5ndGgsbnVtSGVtaUxpZ2h0czpzLmhlbWkubGVuZ3RoLG51bURpckxpZ2h0U2hhZG93czpzLmRpcmVjdGlvbmFsU2hhZG93TWFwLmxlbmd0aCxudW1Qb2ludExpZ2h0U2hhZG93czpzLnBvaW50U2hhZG93TWFwLmxlbmd0aCxudW1TcG90TGlnaHRTaGFkb3dzOnMuc3BvdFNoYWRvd01hcC5sZW5ndGgsbnVtQ2xpcHBpbmdQbGFuZXM6YS5udW1QbGFuZXMsbnVtQ2xpcEludGVyc2VjdGlvbjphLm51bUludGVyc2VjdGlvbixkaXRoZXJpbmc6by5kaXRoZXJpbmcsc2hhZG93TWFwRW5hYmxlZDp0LnNoYWRvd01hcC5lbmFibGVkJiZtLmxlbmd0aD4wLHNoYWRvd01hcFR5cGU6dC5zaGFkb3dNYXAudHlwZSx0b25lTWFwcGluZzpvLnRvbmVNYXBwZWQ/dC50b25lTWFwcGluZzowLHBoeXNpY2FsbHlDb3JyZWN0TGlnaHRzOnQucGh5c2ljYWxseUNvcnJlY3RMaWdodHMscHJlbXVsdGlwbGllZEFscGhhOm8ucHJlbXVsdGlwbGllZEFscGhhLGFscGhhVGVzdDpvLmFscGhhVGVzdCxkb3VibGVTaWRlZDoyPT09by5zaWRlLGZsaXBTaWRlZDoxPT09by5zaWRlLGRlcHRoUGFja2luZzp2b2lkIDAhPT1vLmRlcHRoUGFja2luZyYmby5kZXB0aFBhY2tpbmcsaW5kZXgwQXR0cmlidXRlTmFtZTpvLmluZGV4MEF0dHJpYnV0ZU5hbWUsZXh0ZW5zaW9uRGVyaXZhdGl2ZXM6by5leHRlbnNpb25zJiZvLmV4dGVuc2lvbnMuZGVyaXZhdGl2ZXMsZXh0ZW5zaW9uRnJhZ0RlcHRoOm8uZXh0ZW5zaW9ucyYmby5leHRlbnNpb25zLmZyYWdEZXB0aCxleHRlbnNpb25EcmF3QnVmZmVyczpvLmV4dGVuc2lvbnMmJm8uZXh0ZW5zaW9ucy5kcmF3QnVmZmVycyxleHRlbnNpb25TaGFkZXJUZXh0dXJlTE9EOm8uZXh0ZW5zaW9ucyYmby5leHRlbnNpb25zLnNoYWRlclRleHR1cmVMT0QscmVuZGVyZXJFeHRlbnNpb25GcmFnRGVwdGg6bHx8aS5oYXMoIkVYVF9mcmFnX2RlcHRoIikscmVuZGVyZXJFeHRlbnNpb25EcmF3QnVmZmVyczpsfHxpLmhhcygiV0VCR0xfZHJhd19idWZmZXJzIikscmVuZGVyZXJFeHRlbnNpb25TaGFkZXJUZXh0dXJlTG9kOmx8fGkuaGFzKCJFWFRfc2hhZGVyX3RleHR1cmVfbG9kIiksY3VzdG9tUHJvZ3JhbUNhY2hlS2V5Om8uY3VzdG9tUHJvZ3JhbUNhY2hlS2V5KCl9fSxnZXRQcm9ncmFtQ2FjaGVLZXk6ZnVuY3Rpb24geShlKXtjb25zdCBuPVtdO2lmKGUuc2hhZGVySUQ/bi5wdXNoKGUuc2hhZGVySUQpOihuLnB1c2goZS5mcmFnbWVudFNoYWRlciksbi5wdXNoKGUudmVydGV4U2hhZGVyKSksdm9pZCAwIT09ZS5kZWZpbmVzKWZvcihjb25zdCB0IGluIGUuZGVmaW5lcyluLnB1c2godCksbi5wdXNoKGUuZGVmaW5lc1t0XSk7aWYoITE9PT1lLmlzUmF3U2hhZGVyTWF0ZXJpYWwpe2ZvcihsZXQgdD0wO3Q8bS5sZW5ndGg7dCsrKW4ucHVzaChlW21bdF1dKTtuLnB1c2godC5vdXRwdXRFbmNvZGluZyksbi5wdXNoKHQuZ2FtbWFGYWN0b3IpfXJldHVybiBuLnB1c2goZS5jdXN0b21Qcm9ncmFtQ2FjaGVLZXkpLG4uam9pbigpfSxnZXRVbmlmb3JtczpmdW5jdGlvbiB2KHQpe2NvbnN0IGU9Zlt0LnR5cGVdO2xldCBuO2lmKGUpe249ZTZ0LmNsb25lKHg2dFtlXS51bmlmb3Jtcyl9ZWxzZSBuPXQudW5pZm9ybXM7cmV0dXJuIG59LGFjcXVpcmVQcm9ncmFtOmZ1bmN0aW9uIGIoZSxuKXtsZXQgaTtmb3IobGV0IHQ9MCxlPXMubGVuZ3RoO3Q8ZTt0Kyspe2NvbnN0IGU9c1t0XTtpZihlLmNhY2hlS2V5PT09bil7aT1lLCsraS51c2VkVGltZXM7YnJlYWt9fXJldHVybiB2b2lkIDA9PT1pJiYoaT1uZXcgUjh0KHQsbixlLG8pLHMucHVzaChpKSksaX0scmVsZWFzZVByb2dyYW06ZnVuY3Rpb24geCh0KXtpZigwPT0tLXQudXNlZFRpbWVzKXtjb25zdCBlPXMuaW5kZXhPZih0KTtzW2VdPXNbcy5sZW5ndGgtMV0scy5wb3AoKSx0LmRlc3Ryb3koKX19LHByb2dyYW1zOnN9fWZ1bmN0aW9uIHo4dCgpe2xldCB0PW5ldyBXZWFrTWFwO3JldHVybntnZXQ6ZnVuY3Rpb24gZShuKXtsZXQgaT10LmdldChuKTtyZXR1cm4gdm9pZCAwPT09aSYmKGk9e30sdC5zZXQobixpKSksaX0scmVtb3ZlOmZ1bmN0aW9uIG4oZSl7dC5kZWxldGUoZSl9LHVwZGF0ZTpmdW5jdGlvbiBpKGUsbixyKXt0LmdldChlKVtuXT1yfSxkaXNwb3NlOmZ1bmN0aW9uIHIoKXt0PW5ldyBXZWFrTWFwfX19ZnVuY3Rpb24gRDh0KHQsZSl7cmV0dXJuIHQuZ3JvdXBPcmRlciE9PWUuZ3JvdXBPcmRlcj90Lmdyb3VwT3JkZXItZS5ncm91cE9yZGVyOnQucmVuZGVyT3JkZXIhPT1lLnJlbmRlck9yZGVyP3QucmVuZGVyT3JkZXItZS5yZW5kZXJPcmRlcjp0LnByb2dyYW0hPT1lLnByb2dyYW0/dC5wcm9ncmFtLmlkLWUucHJvZ3JhbS5pZDp0Lm1hdGVyaWFsLmlkIT09ZS5tYXRlcmlhbC5pZD90Lm1hdGVyaWFsLmlkLWUubWF0ZXJpYWwuaWQ6dC56IT09ZS56P3Quei1lLno6dC5pZC1lLmlkfWZ1bmN0aW9uIEI4dCh0LGUpe3JldHVybiB0Lmdyb3VwT3JkZXIhPT1lLmdyb3VwT3JkZXI/dC5ncm91cE9yZGVyLWUuZ3JvdXBPcmRlcjp0LnJlbmRlck9yZGVyIT09ZS5yZW5kZXJPcmRlcj90LnJlbmRlck9yZGVyLWUucmVuZGVyT3JkZXI6dC56IT09ZS56P2Uuei10Lno6dC5pZC1lLmlkfWZ1bmN0aW9uIEg4dCh0KXtjb25zdCBlPVtdO2xldCBuPTA7Y29uc3QgaT1bXSxyPVtdLG89W10sYT17aWQ6LTF9O2Z1bmN0aW9uIHMoaSxyLG8scyxsLGMpe2xldCB1PWVbbl07Y29uc3QgaD10LmdldChvKTtyZXR1cm4gdm9pZCAwPT09dT8odT17aWQ6aS5pZCxvYmplY3Q6aSxnZW9tZXRyeTpyLG1hdGVyaWFsOm8scHJvZ3JhbTpoLnByb2dyYW18fGEsZ3JvdXBPcmRlcjpzLHJlbmRlck9yZGVyOmkucmVuZGVyT3JkZXIsejpsLGdyb3VwOmN9LGVbbl09dSk6KHUuaWQ9aS5pZCx1Lm9iamVjdD1pLHUuZ2VvbWV0cnk9cix1Lm1hdGVyaWFsPW8sdS5wcm9ncmFtPWgucHJvZ3JhbXx8YSx1Lmdyb3VwT3JkZXI9cyx1LnJlbmRlck9yZGVyPWkucmVuZGVyT3JkZXIsdS56PWwsdS5ncm91cD1jKSxuKyssdX1yZXR1cm57b3BhcXVlOmksdHJhbnNtaXNzaXZlOnIsdHJhbnNwYXJlbnQ6byxpbml0OmZ1bmN0aW9uIGwoKXtuPTAsaS5sZW5ndGg9MCxyLmxlbmd0aD0wLG8ubGVuZ3RoPTB9LHB1c2g6ZnVuY3Rpb24gYyh0LGUsbixhLGwsdSl7Y29uc3QgaD1zKHQsZSxuLGEsbCx1KTtuLnRyYW5zbWlzc2lvbj4wP3IucHVzaChoKTohMD09PW4udHJhbnNwYXJlbnQ/by5wdXNoKGgpOmkucHVzaChoKX0sdW5zaGlmdDpmdW5jdGlvbiB1KHQsZSxuLGEsbCxjKXtjb25zdCB1PXModCxlLG4sYSxsLGMpO24udHJhbnNtaXNzaW9uPjA/ci51bnNoaWZ0KHUpOiEwPT09bi50cmFuc3BhcmVudD9vLnVuc2hpZnQodSk6aS51bnNoaWZ0KHUpfSxmaW5pc2g6ZnVuY3Rpb24gaCgpe2ZvcihsZXQgdD1uLGk9ZS5sZW5ndGg7dDxpO3QrKyl7Y29uc3Qgbj1lW3RdO2lmKG51bGw9PT1uLmlkKWJyZWFrO24uaWQ9bnVsbCxuLm9iamVjdD1udWxsLG4uZ2VvbWV0cnk9bnVsbCxuLm1hdGVyaWFsPW51bGwsbi5wcm9ncmFtPW51bGwsbi5ncm91cD1udWxsfX0sc29ydDpmdW5jdGlvbiBkKHQsZSl7aS5sZW5ndGg+MSYmaS5zb3J0KHR8fEQ4dCksci5sZW5ndGg+MSYmci5zb3J0KGV8fEI4dCksby5sZW5ndGg+MSYmby5zb3J0KGV8fEI4dCl9fX1mdW5jdGlvbiBGOHQodCl7bGV0IGU9bmV3IFdlYWtNYXA7cmV0dXJue2dldDpmdW5jdGlvbiBuKGkscil7bGV0IG87cmV0dXJuITE9PT1lLmhhcyhpKT8obz1uZXcgSDh0KHQpLGUuc2V0KGksW29dKSk6cj49ZS5nZXQoaSkubGVuZ3RoPyhvPW5ldyBIOHQodCksZS5nZXQoaSkucHVzaChvKSk6bz1lLmdldChpKVtyXSxvfSxkaXNwb3NlOmZ1bmN0aW9uIGkoKXtlPW5ldyBXZWFrTWFwfX19ZnVuY3Rpb24gVjh0KCl7Y29uc3QgdD17fTtyZXR1cm57Z2V0OmZ1bmN0aW9uKGUpe2lmKHZvaWQgMCE9PXRbZS5pZF0pcmV0dXJuIHRbZS5pZF07bGV0IG47c3dpdGNoKGUudHlwZSl7Y2FzZSJEaXJlY3Rpb25hbExpZ2h0IjpuPXtkaXJlY3Rpb246bmV3IEg1dCxjb2xvcjpuZXcgczR0fTticmVhaztjYXNlIlNwb3RMaWdodCI6bj17cG9zaXRpb246bmV3IEg1dCxkaXJlY3Rpb246bmV3IEg1dCxjb2xvcjpuZXcgczR0LGRpc3RhbmNlOjAsY29uZUNvczowLHBlbnVtYnJhQ29zOjAsZGVjYXk6MH07YnJlYWs7Y2FzZSJQb2ludExpZ2h0IjpuPXtwb3NpdGlvbjpuZXcgSDV0LGNvbG9yOm5ldyBzNHQsZGlzdGFuY2U6MCxkZWNheTowfTticmVhaztjYXNlIkhlbWlzcGhlcmVMaWdodCI6bj17ZGlyZWN0aW9uOm5ldyBINXQsc2t5Q29sb3I6bmV3IHM0dCxncm91bmRDb2xvcjpuZXcgczR0fTticmVhaztjYXNlIlJlY3RBcmVhTGlnaHQiOm49e2NvbG9yOm5ldyBzNHQscG9zaXRpb246bmV3IEg1dCxoYWxmV2lkdGg6bmV3IEg1dCxoYWxmSGVpZ2h0Om5ldyBINXR9fXJldHVybiB0W2UuaWRdPW4sbn19fWxldCBVOHQ9MDtmdW5jdGlvbiBqOHQodCxlKXtyZXR1cm4oZS5jYXN0U2hhZG93PzE6MCktKHQuY2FzdFNoYWRvdz8xOjApfWZ1bmN0aW9uIEc4dCh0LGUpe2NvbnN0IG49bmV3IFY4dCxpPShmdW5jdGlvbiByKCl7Y29uc3QgdD17fTtyZXR1cm57Z2V0OmZ1bmN0aW9uKGUpe2lmKHZvaWQgMCE9PXRbZS5pZF0pcmV0dXJuIHRbZS5pZF07bGV0IG47c3dpdGNoKGUudHlwZSl7Y2FzZSJEaXJlY3Rpb25hbExpZ2h0IjpjYXNlIlNwb3RMaWdodCI6bj17c2hhZG93QmlhczowLHNoYWRvd05vcm1hbEJpYXM6MCxzaGFkb3dSYWRpdXM6MSxzaGFkb3dNYXBTaXplOm5ldyBDNXR9O2JyZWFrO2Nhc2UiUG9pbnRMaWdodCI6bj17c2hhZG93QmlhczowLHNoYWRvd05vcm1hbEJpYXM6MCxzaGFkb3dSYWRpdXM6MSxzaGFkb3dNYXBTaXplOm5ldyBDNXQsc2hhZG93Q2FtZXJhTmVhcjoxLHNoYWRvd0NhbWVyYUZhcjoxZTN9fXJldHVybiB0W2UuaWRdPW4sbn19fSkoKSxvPXt2ZXJzaW9uOjAsaGFzaDp7ZGlyZWN0aW9uYWxMZW5ndGg6LTEscG9pbnRMZW5ndGg6LTEsc3BvdExlbmd0aDotMSxyZWN0QXJlYUxlbmd0aDotMSxoZW1pTGVuZ3RoOi0xLG51bURpcmVjdGlvbmFsU2hhZG93czotMSxudW1Qb2ludFNoYWRvd3M6LTEsbnVtU3BvdFNoYWRvd3M6LTF9LGFtYmllbnQ6WzAsMCwwXSxwcm9iZTpbXSxkaXJlY3Rpb25hbDpbXSxkaXJlY3Rpb25hbFNoYWRvdzpbXSxkaXJlY3Rpb25hbFNoYWRvd01hcDpbXSxkaXJlY3Rpb25hbFNoYWRvd01hdHJpeDpbXSxzcG90OltdLHNwb3RTaGFkb3c6W10sc3BvdFNoYWRvd01hcDpbXSxzcG90U2hhZG93TWF0cml4OltdLHJlY3RBcmVhOltdLHJlY3RBcmVhTFRDMTpudWxsLHJlY3RBcmVhTFRDMjpudWxsLHBvaW50OltdLHBvaW50U2hhZG93OltdLHBvaW50U2hhZG93TWFwOltdLHBvaW50U2hhZG93TWF0cml4OltdLGhlbWk6W119O2ZvcihsZXQgdD0wO3Q8OTt0Kyspby5wcm9iZS5wdXNoKG5ldyBINXQpO2NvbnN0IGE9bmV3IEg1dCxzPW5ldyBnM3QsbD1uZXcgZzN0O3JldHVybntzZXR1cDpmdW5jdGlvbiBjKHIpe2xldCBhPTAscz0wLGw9MDtmb3IobGV0IHQ9MDt0PDk7dCsrKW8ucHJvYmVbdF0uc2V0KDAsMCwwKTtsZXQgYz0wLHU9MCxoPTAsZD0wLHA9MCxmPTAsbT0wLGc9MDtyLnNvcnQoajh0KTtmb3IobGV0IHQ9MCxlPXIubGVuZ3RoO3Q8ZTt0Kyspe2NvbnN0IGU9clt0XSxfPWUuY29sb3IseT1lLmludGVuc2l0eSx2PWUuZGlzdGFuY2UsYj1lLnNoYWRvdyYmZS5zaGFkb3cubWFwP2Uuc2hhZG93Lm1hcC50ZXh0dXJlOm51bGw7aWYoZS5pc0FtYmllbnRMaWdodClhKz1fLnIqeSxzKz1fLmcqeSxsKz1fLmIqeTtlbHNlIGlmKGUuaXNMaWdodFByb2JlKWZvcihsZXQgdD0wO3Q8OTt0Kyspby5wcm9iZVt0XS5hZGRTY2FsZWRWZWN0b3IoZS5zaC5jb2VmZmljaWVudHNbdF0seSk7ZWxzZSBpZihlLmlzRGlyZWN0aW9uYWxMaWdodCl7Y29uc3QgdD1uLmdldChlKTtpZih0LmNvbG9yLmNvcHkoZS5jb2xvcikubXVsdGlwbHlTY2FsYXIoZS5pbnRlbnNpdHkpLGUuY2FzdFNoYWRvdyl7Y29uc3QgdD1lLnNoYWRvdyxuPWkuZ2V0KGUpO24uc2hhZG93Qmlhcz10LmJpYXMsbi5zaGFkb3dOb3JtYWxCaWFzPXQubm9ybWFsQmlhcyxuLnNoYWRvd1JhZGl1cz10LnJhZGl1cyxuLnNoYWRvd01hcFNpemU9dC5tYXBTaXplLG8uZGlyZWN0aW9uYWxTaGFkb3dbY109bixvLmRpcmVjdGlvbmFsU2hhZG93TWFwW2NdPWIsby5kaXJlY3Rpb25hbFNoYWRvd01hdHJpeFtjXT1lLnNoYWRvdy5tYXRyaXgsZisrfW8uZGlyZWN0aW9uYWxbY109dCxjKyt9ZWxzZSBpZihlLmlzU3BvdExpZ2h0KXtjb25zdCB0PW4uZ2V0KGUpO2lmKHQucG9zaXRpb24uc2V0RnJvbU1hdHJpeFBvc2l0aW9uKGUubWF0cml4V29ybGQpLHQuY29sb3IuY29weShfKS5tdWx0aXBseVNjYWxhcih5KSx0LmRpc3RhbmNlPXYsdC5jb25lQ29zPU1hdGguY29zKGUuYW5nbGUpLHQucGVudW1icmFDb3M9TWF0aC5jb3MoZS5hbmdsZSooMS1lLnBlbnVtYnJhKSksdC5kZWNheT1lLmRlY2F5LGUuY2FzdFNoYWRvdyl7Y29uc3QgdD1lLnNoYWRvdyxuPWkuZ2V0KGUpO24uc2hhZG93Qmlhcz10LmJpYXMsbi5zaGFkb3dOb3JtYWxCaWFzPXQubm9ybWFsQmlhcyxuLnNoYWRvd1JhZGl1cz10LnJhZGl1cyxuLnNoYWRvd01hcFNpemU9dC5tYXBTaXplLG8uc3BvdFNoYWRvd1toXT1uLG8uc3BvdFNoYWRvd01hcFtoXT1iLG8uc3BvdFNoYWRvd01hdHJpeFtoXT1lLnNoYWRvdy5tYXRyaXgsZysrfW8uc3BvdFtoXT10LGgrK31lbHNlIGlmKGUuaXNSZWN0QXJlYUxpZ2h0KXtjb25zdCB0PW4uZ2V0KGUpO3QuY29sb3IuY29weShfKS5tdWx0aXBseVNjYWxhcih5KSx0LmhhbGZXaWR0aC5zZXQoLjUqZS53aWR0aCwwLDApLHQuaGFsZkhlaWdodC5zZXQoMCwuNSplLmhlaWdodCwwKSxvLnJlY3RBcmVhW2RdPXQsZCsrfWVsc2UgaWYoZS5pc1BvaW50TGlnaHQpe2NvbnN0IHQ9bi5nZXQoZSk7aWYodC5jb2xvci5jb3B5KGUuY29sb3IpLm11bHRpcGx5U2NhbGFyKGUuaW50ZW5zaXR5KSx0LmRpc3RhbmNlPWUuZGlzdGFuY2UsdC5kZWNheT1lLmRlY2F5LGUuY2FzdFNoYWRvdyl7Y29uc3QgdD1lLnNoYWRvdyxuPWkuZ2V0KGUpO24uc2hhZG93Qmlhcz10LmJpYXMsbi5zaGFkb3dOb3JtYWxCaWFzPXQubm9ybWFsQmlhcyxuLnNoYWRvd1JhZGl1cz10LnJhZGl1cyxuLnNoYWRvd01hcFNpemU9dC5tYXBTaXplLG4uc2hhZG93Q2FtZXJhTmVhcj10LmNhbWVyYS5uZWFyLG4uc2hhZG93Q2FtZXJhRmFyPXQuY2FtZXJhLmZhcixvLnBvaW50U2hhZG93W3VdPW4sby5wb2ludFNoYWRvd01hcFt1XT1iLG8ucG9pbnRTaGFkb3dNYXRyaXhbdV09ZS5zaGFkb3cubWF0cml4LG0rK31vLnBvaW50W3VdPXQsdSsrfWVsc2UgaWYoZS5pc0hlbWlzcGhlcmVMaWdodCl7Y29uc3QgdD1uLmdldChlKTt0LnNreUNvbG9yLmNvcHkoZS5jb2xvcikubXVsdGlwbHlTY2FsYXIoeSksdC5ncm91bmRDb2xvci5jb3B5KGUuZ3JvdW5kQ29sb3IpLm11bHRpcGx5U2NhbGFyKHkpLG8uaGVtaVtwXT10LHArK319ZD4wJiYoZS5pc1dlYkdMMnx8ITA9PT10LmhhcygiT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIik/KG8ucmVjdEFyZWFMVEMxPWI2dC5MVENfRkxPQVRfMSxvLnJlY3RBcmVhTFRDMj1iNnQuTFRDX0ZMT0FUXzIpOiEwPT09dC5oYXMoIk9FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIik/KG8ucmVjdEFyZWFMVEMxPWI2dC5MVENfSEFMRl8xLG8ucmVjdEFyZWFMVEMyPWI2dC5MVENfSEFMRl8yKTpjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBVbmFibGUgdG8gdXNlIFJlY3RBcmVhTGlnaHQuIE1pc3NpbmcgV2ViR0wgZXh0ZW5zaW9ucy4iKSksby5hbWJpZW50WzBdPWEsby5hbWJpZW50WzFdPXMsby5hbWJpZW50WzJdPWw7Y29uc3QgXz1vLmhhc2g7Xy5kaXJlY3Rpb25hbExlbmd0aD09PWMmJl8ucG9pbnRMZW5ndGg9PT11JiZfLnNwb3RMZW5ndGg9PT1oJiZfLnJlY3RBcmVhTGVuZ3RoPT09ZCYmXy5oZW1pTGVuZ3RoPT09cCYmXy5udW1EaXJlY3Rpb25hbFNoYWRvd3M9PT1mJiZfLm51bVBvaW50U2hhZG93cz09PW0mJl8ubnVtU3BvdFNoYWRvd3M9PT1nfHwoby5kaXJlY3Rpb25hbC5sZW5ndGg9YyxvLnNwb3QubGVuZ3RoPWgsby5yZWN0QXJlYS5sZW5ndGg9ZCxvLnBvaW50Lmxlbmd0aD11LG8uaGVtaS5sZW5ndGg9cCxvLmRpcmVjdGlvbmFsU2hhZG93Lmxlbmd0aD1mLG8uZGlyZWN0aW9uYWxTaGFkb3dNYXAubGVuZ3RoPWYsby5wb2ludFNoYWRvdy5sZW5ndGg9bSxvLnBvaW50U2hhZG93TWFwLmxlbmd0aD1tLG8uc3BvdFNoYWRvdy5sZW5ndGg9ZyxvLnNwb3RTaGFkb3dNYXAubGVuZ3RoPWcsby5kaXJlY3Rpb25hbFNoYWRvd01hdHJpeC5sZW5ndGg9ZixvLnBvaW50U2hhZG93TWF0cml4Lmxlbmd0aD1tLG8uc3BvdFNoYWRvd01hdHJpeC5sZW5ndGg9ZyxfLmRpcmVjdGlvbmFsTGVuZ3RoPWMsXy5wb2ludExlbmd0aD11LF8uc3BvdExlbmd0aD1oLF8ucmVjdEFyZWFMZW5ndGg9ZCxfLmhlbWlMZW5ndGg9cCxfLm51bURpcmVjdGlvbmFsU2hhZG93cz1mLF8ubnVtUG9pbnRTaGFkb3dzPW0sXy5udW1TcG90U2hhZG93cz1nLG8udmVyc2lvbj1VOHQrKyl9LHNldHVwVmlldzpmdW5jdGlvbiB1KHQsZSl7bGV0IG49MCxpPTAscj0wLGM9MCx1PTA7Y29uc3QgaD1lLm1hdHJpeFdvcmxkSW52ZXJzZTtmb3IobGV0IGU9MCxkPXQubGVuZ3RoO2U8ZDtlKyspe2NvbnN0IGQ9dFtlXTtpZihkLmlzRGlyZWN0aW9uYWxMaWdodCl7Y29uc3QgdD1vLmRpcmVjdGlvbmFsW25dO3QuZGlyZWN0aW9uLnNldEZyb21NYXRyaXhQb3NpdGlvbihkLm1hdHJpeFdvcmxkKSxhLnNldEZyb21NYXRyaXhQb3NpdGlvbihkLnRhcmdldC5tYXRyaXhXb3JsZCksdC5kaXJlY3Rpb24uc3ViKGEpLHQuZGlyZWN0aW9uLnRyYW5zZm9ybURpcmVjdGlvbihoKSxuKyt9ZWxzZSBpZihkLmlzU3BvdExpZ2h0KXtjb25zdCB0PW8uc3BvdFtyXTt0LnBvc2l0aW9uLnNldEZyb21NYXRyaXhQb3NpdGlvbihkLm1hdHJpeFdvcmxkKSx0LnBvc2l0aW9uLmFwcGx5TWF0cml4NChoKSx0LmRpcmVjdGlvbi5zZXRGcm9tTWF0cml4UG9zaXRpb24oZC5tYXRyaXhXb3JsZCksYS5zZXRGcm9tTWF0cml4UG9zaXRpb24oZC50YXJnZXQubWF0cml4V29ybGQpLHQuZGlyZWN0aW9uLnN1YihhKSx0LmRpcmVjdGlvbi50cmFuc2Zvcm1EaXJlY3Rpb24oaCkscisrfWVsc2UgaWYoZC5pc1JlY3RBcmVhTGlnaHQpe2NvbnN0IHQ9by5yZWN0QXJlYVtjXTt0LnBvc2l0aW9uLnNldEZyb21NYXRyaXhQb3NpdGlvbihkLm1hdHJpeFdvcmxkKSx0LnBvc2l0aW9uLmFwcGx5TWF0cml4NChoKSxsLmlkZW50aXR5KCkscy5jb3B5KGQubWF0cml4V29ybGQpLHMucHJlbXVsdGlwbHkoaCksbC5leHRyYWN0Um90YXRpb24ocyksdC5oYWxmV2lkdGguc2V0KC41KmQud2lkdGgsMCwwKSx0LmhhbGZIZWlnaHQuc2V0KDAsLjUqZC5oZWlnaHQsMCksdC5oYWxmV2lkdGguYXBwbHlNYXRyaXg0KGwpLHQuaGFsZkhlaWdodC5hcHBseU1hdHJpeDQobCksYysrfWVsc2UgaWYoZC5pc1BvaW50TGlnaHQpe2NvbnN0IHQ9by5wb2ludFtpXTt0LnBvc2l0aW9uLnNldEZyb21NYXRyaXhQb3NpdGlvbihkLm1hdHJpeFdvcmxkKSx0LnBvc2l0aW9uLmFwcGx5TWF0cml4NChoKSxpKyt9ZWxzZSBpZihkLmlzSGVtaXNwaGVyZUxpZ2h0KXtjb25zdCB0PW8uaGVtaVt1XTt0LmRpcmVjdGlvbi5zZXRGcm9tTWF0cml4UG9zaXRpb24oZC5tYXRyaXhXb3JsZCksdC5kaXJlY3Rpb24udHJhbnNmb3JtRGlyZWN0aW9uKGgpLHQuZGlyZWN0aW9uLm5vcm1hbGl6ZSgpLHUrK319fSxzdGF0ZTpvfX1mdW5jdGlvbiBXOHQodCxlKXtjb25zdCBuPW5ldyBHOHQodCxlKSxpPVtdLHI9W107cmV0dXJue2luaXQ6ZnVuY3Rpb24gbygpe2kubGVuZ3RoPTAsci5sZW5ndGg9MH0sc3RhdGU6e2xpZ2h0c0FycmF5Omksc2hhZG93c0FycmF5OnIsbGlnaHRzOm59LHNldHVwTGlnaHRzOmZ1bmN0aW9uIGEoKXtuLnNldHVwKGkpfSxzZXR1cExpZ2h0c1ZpZXc6ZnVuY3Rpb24gcyh0KXtuLnNldHVwVmlldyhpLHQpfSxwdXNoTGlnaHQ6ZnVuY3Rpb24gbCh0KXtpLnB1c2godCl9LHB1c2hTaGFkb3c6ZnVuY3Rpb24gYyh0KXtyLnB1c2godCl9fX1mdW5jdGlvbiBxOHQodCxlKXtsZXQgbj1uZXcgV2Vha01hcDtyZXR1cm57Z2V0OmZ1bmN0aW9uIGkocixvPTApe2xldCBhO3JldHVybiExPT09bi5oYXMocik/KGE9bmV3IFc4dCh0LGUpLG4uc2V0KHIsW2FdKSk6bz49bi5nZXQocikubGVuZ3RoPyhhPW5ldyBXOHQodCxlKSxuLmdldChyKS5wdXNoKGEpKTphPW4uZ2V0KHIpW29dLGF9LGRpc3Bvc2U6ZnVuY3Rpb24gcigpe249bmV3IFdlYWtNYXB9fX1jbGFzcyBZOHQgZXh0ZW5kcyB0NHR7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLnR5cGU9Ik1lc2hEZXB0aE1hdGVyaWFsIix0aGlzLmRlcHRoUGFja2luZz0zMjAwLHRoaXMubWFwPW51bGwsdGhpcy5hbHBoYU1hcD1udWxsLHRoaXMuZGlzcGxhY2VtZW50TWFwPW51bGwsdGhpcy5kaXNwbGFjZW1lbnRTY2FsZT0xLHRoaXMuZGlzcGxhY2VtZW50Qmlhcz0wLHRoaXMud2lyZWZyYW1lPSExLHRoaXMud2lyZWZyYW1lTGluZXdpZHRoPTEsdGhpcy5mb2c9ITEsdGhpcy5zZXRWYWx1ZXModCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmRlcHRoUGFja2luZz10LmRlcHRoUGFja2luZyx0aGlzLm1hcD10Lm1hcCx0aGlzLmFscGhhTWFwPXQuYWxwaGFNYXAsdGhpcy5kaXNwbGFjZW1lbnRNYXA9dC5kaXNwbGFjZW1lbnRNYXAsdGhpcy5kaXNwbGFjZW1lbnRTY2FsZT10LmRpc3BsYWNlbWVudFNjYWxlLHRoaXMuZGlzcGxhY2VtZW50Qmlhcz10LmRpc3BsYWNlbWVudEJpYXMsdGhpcy53aXJlZnJhbWU9dC53aXJlZnJhbWUsdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9dC53aXJlZnJhbWVMaW5ld2lkdGgsdGhpc319WTh0LnByb3RvdHlwZS5pc01lc2hEZXB0aE1hdGVyaWFsPSEwO2NsYXNzIFg4dCBleHRlbmRzIHQ0dHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMudHlwZT0iTWVzaERpc3RhbmNlTWF0ZXJpYWwiLHRoaXMucmVmZXJlbmNlUG9zaXRpb249bmV3IEg1dCx0aGlzLm5lYXJEaXN0YW5jZT0xLHRoaXMuZmFyRGlzdGFuY2U9MWUzLHRoaXMubWFwPW51bGwsdGhpcy5hbHBoYU1hcD1udWxsLHRoaXMuZGlzcGxhY2VtZW50TWFwPW51bGwsdGhpcy5kaXNwbGFjZW1lbnRTY2FsZT0xLHRoaXMuZGlzcGxhY2VtZW50Qmlhcz0wLHRoaXMuZm9nPSExLHRoaXMuc2V0VmFsdWVzKHQpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5yZWZlcmVuY2VQb3NpdGlvbi5jb3B5KHQucmVmZXJlbmNlUG9zaXRpb24pLHRoaXMubmVhckRpc3RhbmNlPXQubmVhckRpc3RhbmNlLHRoaXMuZmFyRGlzdGFuY2U9dC5mYXJEaXN0YW5jZSx0aGlzLm1hcD10Lm1hcCx0aGlzLmFscGhhTWFwPXQuYWxwaGFNYXAsdGhpcy5kaXNwbGFjZW1lbnRNYXA9dC5kaXNwbGFjZW1lbnRNYXAsdGhpcy5kaXNwbGFjZW1lbnRTY2FsZT10LmRpc3BsYWNlbWVudFNjYWxlLHRoaXMuZGlzcGxhY2VtZW50Qmlhcz10LmRpc3BsYWNlbWVudEJpYXMsdGhpc319WDh0LnByb3RvdHlwZS5pc01lc2hEaXN0YW5jZU1hdGVyaWFsPSEwO2Z1bmN0aW9uICQ4dCh0LGUsbil7bGV0IGk9bmV3IG02dDtjb25zdCByPW5ldyBDNXQsbz1uZXcgQzV0LGE9bmV3IFI1dCxzPW5ldyBZOHQoe2RlcHRoUGFja2luZzozMjAxfSksbD1uZXcgWDh0LGM9e30sdT1uLm1heFRleHR1cmVTaXplLGg9ezA6MSwxOjAsMjoyfSxkPW5ldyBuNnQoe2RlZmluZXM6e1NBTVBMRV9SQVRFOjIvOCxIQUxGX1NBTVBMRV9SQVRFOjEvOH0sdW5pZm9ybXM6e3NoYWRvd19wYXNzOnt2YWx1ZTpudWxsfSxyZXNvbHV0aW9uOnt2YWx1ZTpuZXcgQzV0fSxyYWRpdXM6e3ZhbHVlOjR9fSx2ZXJ0ZXhTaGFkZXI6InZvaWQgbWFpbigpIHtcblx0Z2xfUG9zaXRpb24gPSB2ZWM0KCBwb3NpdGlvbiwgMS4wICk7XG59IixmcmFnbWVudFNoYWRlcjoidW5pZm9ybSBzYW1wbGVyMkQgc2hhZG93X3Bhc3M7XG51bmlmb3JtIHZlYzIgcmVzb2x1dGlvbjtcbnVuaWZvcm0gZmxvYXQgcmFkaXVzO1xuI2luY2x1ZGUgPHBhY2tpbmc+XG52b2lkIG1haW4oKSB7XG5cdGZsb2F0IG1lYW4gPSAwLjA7XG5cdGZsb2F0IHNxdWFyZWRfbWVhbiA9IDAuMDtcblx0ZmxvYXQgZGVwdGggPSB1bnBhY2tSR0JBVG9EZXB0aCggdGV4dHVyZTJEKCBzaGFkb3dfcGFzcywgKCBnbF9GcmFnQ29vcmQueHkgKSAvIHJlc29sdXRpb24gKSApO1xuXHRmb3IgKCBmbG9hdCBpID0gLTEuMDsgaSA8IDEuMCA7IGkgKz0gU0FNUExFX1JBVEUpIHtcblx0XHQjaWZkZWYgSE9SSVpPTlRBTF9QQVNTXG5cdFx0XHR2ZWMyIGRpc3RyaWJ1dGlvbiA9IHVucGFja1JHQkFUbzJIYWxmKCB0ZXh0dXJlMkQoIHNoYWRvd19wYXNzLCAoIGdsX0ZyYWdDb29yZC54eSArIHZlYzIoIGksIDAuMCApICogcmFkaXVzICkgLyByZXNvbHV0aW9uICkgKTtcblx0XHRcdG1lYW4gKz0gZGlzdHJpYnV0aW9uLng7XG5cdFx0XHRzcXVhcmVkX21lYW4gKz0gZGlzdHJpYnV0aW9uLnkgKiBkaXN0cmlidXRpb24ueSArIGRpc3RyaWJ1dGlvbi54ICogZGlzdHJpYnV0aW9uLng7XG5cdFx0I2Vsc2Vcblx0XHRcdGZsb2F0IGRlcHRoID0gdW5wYWNrUkdCQVRvRGVwdGgoIHRleHR1cmUyRCggc2hhZG93X3Bhc3MsICggZ2xfRnJhZ0Nvb3JkLnh5ICsgdmVjMiggMC4wLCBpICkgKiByYWRpdXMgKSAvIHJlc29sdXRpb24gKSApO1xuXHRcdFx0bWVhbiArPSBkZXB0aDtcblx0XHRcdHNxdWFyZWRfbWVhbiArPSBkZXB0aCAqIGRlcHRoO1xuXHRcdCNlbmRpZlxuXHR9XG5cdG1lYW4gPSBtZWFuICogSEFMRl9TQU1QTEVfUkFURTtcblx0c3F1YXJlZF9tZWFuID0gc3F1YXJlZF9tZWFuICogSEFMRl9TQU1QTEVfUkFURTtcblx0ZmxvYXQgc3RkX2RldiA9IHNxcnQoIHNxdWFyZWRfbWVhbiAtIG1lYW4gKiBtZWFuICk7XG5cdGdsX0ZyYWdDb2xvciA9IHBhY2sySGFsZlRvUkdCQSggdmVjMiggbWVhbiwgc3RkX2RldiApICk7XG59In0pLHA9ZC5jbG9uZSgpO3AuZGVmaW5lcy5IT1JJWk9OVEFMX1BBU1M9MTtjb25zdCBmPW5ldyBONHQ7Zi5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgaDR0KG5ldyBGbG9hdDMyQXJyYXkoWy0xLC0xLC41LDMsLTEsLjUsLTEsMywuNV0pLDMpKTtjb25zdCBtPW5ldyBLNHQoZixkKSxnPXRoaXM7ZnVuY3Rpb24gXyhuLGkpe2NvbnN0IHI9ZS51cGRhdGUobSk7ZC51bmlmb3Jtcy5zaGFkb3dfcGFzcy52YWx1ZT1uLm1hcC50ZXh0dXJlLGQudW5pZm9ybXMucmVzb2x1dGlvbi52YWx1ZT1uLm1hcFNpemUsZC51bmlmb3Jtcy5yYWRpdXMudmFsdWU9bi5yYWRpdXMsdC5zZXRSZW5kZXJUYXJnZXQobi5tYXBQYXNzKSx0LmNsZWFyKCksdC5yZW5kZXJCdWZmZXJEaXJlY3QoaSxudWxsLHIsZCxtLG51bGwpLHAudW5pZm9ybXMuc2hhZG93X3Bhc3MudmFsdWU9bi5tYXBQYXNzLnRleHR1cmUscC51bmlmb3Jtcy5yZXNvbHV0aW9uLnZhbHVlPW4ubWFwU2l6ZSxwLnVuaWZvcm1zLnJhZGl1cy52YWx1ZT1uLnJhZGl1cyx0LnNldFJlbmRlclRhcmdldChuLm1hcCksdC5jbGVhcigpLHQucmVuZGVyQnVmZmVyRGlyZWN0KGksbnVsbCxyLHAsbSxudWxsKX1mdW5jdGlvbiB5KGUsbixpLHIsbyxhLHUpe2xldCBkPW51bGw7Y29uc3QgcD0hMD09PXIuaXNQb2ludExpZ2h0P2UuY3VzdG9tRGlzdGFuY2VNYXRlcmlhbDplLmN1c3RvbURlcHRoTWF0ZXJpYWw7aWYoZD12b2lkIDAhPT1wP3A6ITA9PT1yLmlzUG9pbnRMaWdodD9sOnMsdC5sb2NhbENsaXBwaW5nRW5hYmxlZCYmITA9PT1pLmNsaXBTaGFkb3dzJiYwIT09aS5jbGlwcGluZ1BsYW5lcy5sZW5ndGgpe2NvbnN0IHQ9ZC51dWlkLGU9aS51dWlkO2xldCBuPWNbdF07dm9pZCAwPT09biYmKG49e30sY1t0XT1uKTtsZXQgcj1uW2VdO3ZvaWQgMD09PXImJihyPWQuY2xvbmUoKSxuW2VdPXIpLGQ9cn1yZXR1cm4gZC52aXNpYmxlPWkudmlzaWJsZSxkLndpcmVmcmFtZT1pLndpcmVmcmFtZSxkLnNpZGU9Mz09PXU/bnVsbCE9PWkuc2hhZG93U2lkZT9pLnNoYWRvd1NpZGU6aS5zaWRlOm51bGwhPT1pLnNoYWRvd1NpZGU/aS5zaGFkb3dTaWRlOmhbaS5zaWRlXSxkLmNsaXBTaGFkb3dzPWkuY2xpcFNoYWRvd3MsZC5jbGlwcGluZ1BsYW5lcz1pLmNsaXBwaW5nUGxhbmVzLGQuY2xpcEludGVyc2VjdGlvbj1pLmNsaXBJbnRlcnNlY3Rpb24sZC53aXJlZnJhbWVMaW5ld2lkdGg9aS53aXJlZnJhbWVMaW5ld2lkdGgsZC5saW5ld2lkdGg9aS5saW5ld2lkdGgsITA9PT1yLmlzUG9pbnRMaWdodCYmITA9PT1kLmlzTWVzaERpc3RhbmNlTWF0ZXJpYWwmJihkLnJlZmVyZW5jZVBvc2l0aW9uLnNldEZyb21NYXRyaXhQb3NpdGlvbihyLm1hdHJpeFdvcmxkKSxkLm5lYXJEaXN0YW5jZT1vLGQuZmFyRGlzdGFuY2U9YSksZH1mdW5jdGlvbiB2KG4scixvLGEscyl7aWYoITE9PT1uLnZpc2libGUpcmV0dXJuO2lmKG4ubGF5ZXJzLnRlc3Qoci5sYXllcnMpJiYobi5pc01lc2h8fG4uaXNMaW5lfHxuLmlzUG9pbnRzKSYmKG4uY2FzdFNoYWRvd3x8bi5yZWNlaXZlU2hhZG93JiYzPT09cykmJighbi5mcnVzdHVtQ3VsbGVkfHxpLmludGVyc2VjdHNPYmplY3QobikpKXtuLm1vZGVsVmlld01hdHJpeC5tdWx0aXBseU1hdHJpY2VzKG8ubWF0cml4V29ybGRJbnZlcnNlLG4ubWF0cml4V29ybGQpO2NvbnN0IGk9ZS51cGRhdGUobikscj1uLm1hdGVyaWFsO2lmKEFycmF5LmlzQXJyYXkocikpe2NvbnN0IGU9aS5ncm91cHM7Zm9yKGxldCBsPTAsYz1lLmxlbmd0aDtsPGM7bCsrKXtjb25zdCBjPWVbbF0sdT1yW2MubWF0ZXJpYWxJbmRleF07aWYodSYmdS52aXNpYmxlKXtjb25zdCBlPXkobiwwLHUsYSxvLm5lYXIsby5mYXIscyk7dC5yZW5kZXJCdWZmZXJEaXJlY3QobyxudWxsLGksZSxuLGMpfX19ZWxzZSBpZihyLnZpc2libGUpe2NvbnN0IGU9eShuLDAscixhLG8ubmVhcixvLmZhcixzKTt0LnJlbmRlckJ1ZmZlckRpcmVjdChvLG51bGwsaSxlLG4sbnVsbCl9fWNvbnN0IGw9bi5jaGlsZHJlbjtmb3IobGV0IHQ9MCxlPWwubGVuZ3RoO3Q8ZTt0KyspdihsW3RdLHIsbyxhLHMpfXRoaXMuZW5hYmxlZD0hMSx0aGlzLmF1dG9VcGRhdGU9ITAsdGhpcy5uZWVkc1VwZGF0ZT0hMSx0aGlzLnR5cGU9MSx0aGlzLnJlbmRlcj1mdW5jdGlvbihlLG4scyl7aWYoITE9PT1nLmVuYWJsZWQpcmV0dXJuO2lmKCExPT09Zy5hdXRvVXBkYXRlJiYhMT09PWcubmVlZHNVcGRhdGUpcmV0dXJuO2lmKDA9PT1lLmxlbmd0aClyZXR1cm47Y29uc3QgbD10LmdldFJlbmRlclRhcmdldCgpLGM9dC5nZXRBY3RpdmVDdWJlRmFjZSgpLGg9dC5nZXRBY3RpdmVNaXBtYXBMZXZlbCgpLGQ9dC5zdGF0ZTtkLnNldEJsZW5kaW5nKDApLGQuYnVmZmVycy5jb2xvci5zZXRDbGVhcigxLDEsMSwxKSxkLmJ1ZmZlcnMuZGVwdGguc2V0VGVzdCghMCksZC5zZXRTY2lzc29yVGVzdCghMSk7Zm9yKGxldCBsPTAsYz1lLmxlbmd0aDtsPGM7bCsrKXtjb25zdCBjPWVbbF0saD1jLnNoYWRvdztpZih2b2lkIDA9PT1oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMU2hhZG93TWFwOiIsYywiaGFzIG5vIHNoYWRvdy4iKTtjb250aW51ZX1pZighMT09PWguYXV0b1VwZGF0ZSYmITE9PT1oLm5lZWRzVXBkYXRlKWNvbnRpbnVlO3IuY29weShoLm1hcFNpemUpO2NvbnN0IHA9aC5nZXRGcmFtZUV4dGVudHMoKTtpZihyLm11bHRpcGx5KHApLG8uY29weShoLm1hcFNpemUpLChyLng+dXx8ci55PnUpJiYoci54PnUmJihvLng9TWF0aC5mbG9vcih1L3AueCksci54PW8ueCpwLngsaC5tYXBTaXplLng9by54KSxyLnk+dSYmKG8ueT1NYXRoLmZsb29yKHUvcC55KSxyLnk9by55KnAueSxoLm1hcFNpemUueT1vLnkpKSxudWxsPT09aC5tYXAmJiFoLmlzUG9pbnRMaWdodFNoYWRvdyYmMz09PXRoaXMudHlwZSl7Y29uc3QgdD17bWluRmlsdGVyOnAydCxtYWdGaWx0ZXI6cDJ0LGZvcm1hdDpTMnR9O2gubWFwPW5ldyBPNXQoci54LHIueSx0KSxoLm1hcC50ZXh0dXJlLm5hbWU9Yy5uYW1lKyIuc2hhZG93TWFwIixoLm1hcFBhc3M9bmV3IE81dChyLngsci55LHQpLGguY2FtZXJhLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKX1pZihudWxsPT09aC5tYXApe2gubWFwPW5ldyBPNXQoci54LHIueSx7bWluRmlsdGVyOnUydCxtYWdGaWx0ZXI6dTJ0LGZvcm1hdDpTMnR9KSxoLm1hcC50ZXh0dXJlLm5hbWU9Yy5uYW1lKyIuc2hhZG93TWFwIixoLmNhbWVyYS51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCl9dC5zZXRSZW5kZXJUYXJnZXQoaC5tYXApLHQuY2xlYXIoKTtjb25zdCBmPWguZ2V0Vmlld3BvcnRDb3VudCgpO2ZvcihsZXQgdD0wO3Q8Zjt0Kyspe2NvbnN0IGU9aC5nZXRWaWV3cG9ydCh0KTthLnNldChvLngqZS54LG8ueSplLnksby54KmUueixvLnkqZS53KSxkLnZpZXdwb3J0KGEpLGgudXBkYXRlTWF0cmljZXMoYyx0KSxpPWguZ2V0RnJ1c3R1bSgpLHYobixzLGguY2FtZXJhLGMsdGhpcy50eXBlKX1oLmlzUG9pbnRMaWdodFNoYWRvd3x8MyE9PXRoaXMudHlwZXx8XyhoLHMpLGgubmVlZHNVcGRhdGU9ITF9Zy5uZWVkc1VwZGF0ZT0hMSx0LnNldFJlbmRlclRhcmdldChsLGMsaCl9fWZ1bmN0aW9uIEs4dCh0LGUsbil7Y29uc3QgaT1uLmlzV2ViR0wyO2NvbnN0IHI9bmV3KGZ1bmN0aW9uIG8oKXtsZXQgZT0hMTtjb25zdCBuPW5ldyBSNXQ7bGV0IGk9bnVsbDtjb25zdCByPW5ldyBSNXQoMCwwLDAsMCk7cmV0dXJue3NldE1hc2s6ZnVuY3Rpb24obil7aT09PW58fGV8fCh0LmNvbG9yTWFzayhuLG4sbixuKSxpPW4pfSxzZXRMb2NrZWQ6ZnVuY3Rpb24odCl7ZT10fSxzZXRDbGVhcjpmdW5jdGlvbihlLGksbyxhLHMpeyEwPT09cyYmKGUqPWEsaSo9YSxvKj1hKSxuLnNldChlLGksbyxhKSwhMT09PXIuZXF1YWxzKG4pJiYodC5jbGVhckNvbG9yKGUsaSxvLGEpLHIuY29weShuKSl9LHJlc2V0OmZ1bmN0aW9uKCl7ZT0hMSxpPW51bGwsci5zZXQoLTEsMCwwLDApfX19KSxhPW5ldyhmdW5jdGlvbiBzKCl7bGV0IGU9ITEsbj1udWxsLGk9bnVsbCxyPW51bGw7cmV0dXJue3NldFRlc3Q6ZnVuY3Rpb24odCl7dD9GKDI5MjkpOlYoMjkyOSl9LHNldE1hc2s6ZnVuY3Rpb24oaSl7bj09PWl8fGV8fCh0LmRlcHRoTWFzayhpKSxuPWkpfSxzZXRGdW5jOmZ1bmN0aW9uKGUpe2lmKGkhPT1lKXtpZihlKXN3aXRjaChlKXtjYXNlIDA6dC5kZXB0aEZ1bmMoNTEyKTticmVhaztjYXNlIDE6dC5kZXB0aEZ1bmMoNTE5KTticmVhaztjYXNlIDI6dC5kZXB0aEZ1bmMoNTEzKTticmVhaztjYXNlIDM6dC5kZXB0aEZ1bmMoNTE1KTticmVhaztjYXNlIDQ6dC5kZXB0aEZ1bmMoNTE0KTticmVhaztjYXNlIDU6dC5kZXB0aEZ1bmMoNTE4KTticmVhaztjYXNlIDY6dC5kZXB0aEZ1bmMoNTE2KTticmVhaztjYXNlIDc6dC5kZXB0aEZ1bmMoNTE3KTticmVhaztkZWZhdWx0OnQuZGVwdGhGdW5jKDUxNSl9ZWxzZSB0LmRlcHRoRnVuYyg1MTUpO2k9ZX19LHNldExvY2tlZDpmdW5jdGlvbih0KXtlPXR9LHNldENsZWFyOmZ1bmN0aW9uKGUpe3IhPT1lJiYodC5jbGVhckRlcHRoKGUpLHI9ZSl9LHJlc2V0OmZ1bmN0aW9uKCl7ZT0hMSxuPW51bGwsaT1udWxsLHI9bnVsbH19fSksbD1uZXcoZnVuY3Rpb24gYygpe2xldCBlPSExLG49bnVsbCxpPW51bGwscj1udWxsLG89bnVsbCxhPW51bGwscz1udWxsLGw9bnVsbCxjPW51bGw7cmV0dXJue3NldFRlc3Q6ZnVuY3Rpb24odCl7ZXx8KHQ/RigyOTYwKTpWKDI5NjApKX0sc2V0TWFzazpmdW5jdGlvbihpKXtuPT09aXx8ZXx8KHQuc3RlbmNpbE1hc2soaSksbj1pKX0sc2V0RnVuYzpmdW5jdGlvbihlLG4sYSl7aT09PWUmJnI9PT1uJiZvPT09YXx8KHQuc3RlbmNpbEZ1bmMoZSxuLGEpLGk9ZSxyPW4sbz1hKX0sc2V0T3A6ZnVuY3Rpb24oZSxuLGkpe2E9PT1lJiZzPT09biYmbD09PWl8fCh0LnN0ZW5jaWxPcChlLG4saSksYT1lLHM9bixsPWkpfSxzZXRMb2NrZWQ6ZnVuY3Rpb24odCl7ZT10fSxzZXRDbGVhcjpmdW5jdGlvbihlKXtjIT09ZSYmKHQuY2xlYXJTdGVuY2lsKGUpLGM9ZSl9LHJlc2V0OmZ1bmN0aW9uKCl7ZT0hMSxuPW51bGwsaT1udWxsLHI9bnVsbCxvPW51bGwsYT1udWxsLHM9bnVsbCxsPW51bGwsYz1udWxsfX19KTtsZXQgdT17fSxoPW51bGwsZD17fSxwPW51bGwsZj0hMSxtPW51bGwsZz1udWxsLF89bnVsbCx5PW51bGwsdj1udWxsLGI9bnVsbCx4PW51bGwsdz0hMSxTPW51bGwsTT1udWxsLEU9bnVsbCxUPW51bGwsQz1udWxsO2NvbnN0IEE9dC5nZXRQYXJhbWV0ZXIoMzU2NjEpO2xldCBrPSExLEw9MDtjb25zdCBQPXQuZ2V0UGFyYW1ldGVyKDc5MzgpOy0xIT09UC5pbmRleE9mKCJXZWJHTCIpPyhMPXBhcnNlRmxvYXQoL15XZWJHTCAoXGQpLy5leGVjKFApWzFdKSxrPUw+PTEpOi0xIT09UC5pbmRleE9mKCJPcGVuR0wgRVMiKSYmKEw9cGFyc2VGbG9hdCgvXk9wZW5HTCBFUyAoXGQpLy5leGVjKFApWzFdKSxrPUw+PTIpO2xldCBOPW51bGwsST17fTtjb25zdCBSPXQuZ2V0UGFyYW1ldGVyKDMwODgpLE89dC5nZXRQYXJhbWV0ZXIoMjk3OCksej0obmV3IFI1dCkuZnJvbUFycmF5KFIpLEQ9KG5ldyBSNXQpLmZyb21BcnJheShPKTtmdW5jdGlvbiBCKGUsbixpKXtjb25zdCByPW5ldyBVaW50OEFycmF5KDQpLG89dC5jcmVhdGVUZXh0dXJlKCk7dC5iaW5kVGV4dHVyZShlLG8pLHQudGV4UGFyYW1ldGVyaShlLDEwMjQxLDk3MjgpLHQudGV4UGFyYW1ldGVyaShlLDEwMjQwLDk3MjgpO2ZvcihsZXQgZT0wO2U8aTtlKyspdC50ZXhJbWFnZTJEKG4rZSwwLDY0MDgsMSwxLDAsNjQwOCw1MTIxLHIpO3JldHVybiBvfWNvbnN0IEg9e307ZnVuY3Rpb24gRihlKXshMCE9PXVbZV0mJih0LmVuYWJsZShlKSx1W2VdPSEwKX1mdW5jdGlvbiBWKGUpeyExIT09dVtlXSYmKHQuZGlzYWJsZShlKSx1W2VdPSExKX1IWzM1NTNdPUIoMzU1MywzNTUzLDEpLEhbMzQwNjddPUIoMzQwNjcsMzQwNjksNiksci5zZXRDbGVhcigwLDAsMCwxKSxhLnNldENsZWFyKDEpLGwuc2V0Q2xlYXIoMCksRigyOTI5KSxhLnNldEZ1bmMoMyksVyghMSkscSgxKSxGKDI4ODQpLEcoMCk7Y29uc3QgVT17W1EwdF06MzI3NzQsMTAxOjMyNzc4LDEwMjozMjc3OX07aWYoaSlVWzEwM109MzI3NzUsVVsxMDRdPTMyNzc2O2Vsc2V7Y29uc3QgdD1lLmdldCgiRVhUX2JsZW5kX21pbm1heCIpO251bGwhPT10JiYoVVsxMDNdPXQuTUlOX0VYVCxVWzEwNF09dC5NQVhfRVhUKX1jb25zdCBqPXsyMDA6MCwyMDE6MSwyMDI6NzY4LDIwNDo3NzAsMjEwOjc3NiwyMDg6Nzc0LDIwNjo3NzIsMjAzOjc2OSwyMDU6NzcxLDIwOTo3NzUsMjA3Ojc3M307ZnVuY3Rpb24gRyhlLG4saSxyLG8sYSxzLGwpe2lmKDAhPT1lKXtpZighMT09PWYmJihGKDMwNDIpLGY9ITApLDU9PT1lKW89b3x8bixhPWF8fGkscz1zfHxyLG49PT1nJiZvPT09dnx8KHQuYmxlbmRFcXVhdGlvblNlcGFyYXRlKFVbbl0sVVtvXSksZz1uLHY9byksaT09PV8mJnI9PT15JiZhPT09YiYmcz09PXh8fCh0LmJsZW5kRnVuY1NlcGFyYXRlKGpbaV0saltyXSxqW2FdLGpbc10pLF89aSx5PXIsYj1hLHg9cyksbT1lLHc9bnVsbDtlbHNlIGlmKGUhPT1tfHxsIT09dyl7aWYoZz09PVEwdCYmdj09PVEwdHx8KHQuYmxlbmRFcXVhdGlvbigzMjc3NCksZz1RMHQsdj1RMHQpLGwpc3dpdGNoKGUpe2Nhc2UgMTp0LmJsZW5kRnVuY1NlcGFyYXRlKDEsNzcxLDEsNzcxKTticmVhaztjYXNlIDI6dC5ibGVuZEZ1bmMoMSwxKTticmVhaztjYXNlIDM6dC5ibGVuZEZ1bmNTZXBhcmF0ZSgwLDAsNzY5LDc3MSk7YnJlYWs7Y2FzZSA0OnQuYmxlbmRGdW5jU2VwYXJhdGUoMCw3NjgsMCw3NzApO2JyZWFrO2RlZmF1bHQ6Y29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xTdGF0ZTogSW52YWxpZCBibGVuZGluZzogIixlKX1lbHNlIHN3aXRjaChlKXtjYXNlIDE6dC5ibGVuZEZ1bmNTZXBhcmF0ZSg3NzAsNzcxLDEsNzcxKTticmVhaztjYXNlIDI6dC5ibGVuZEZ1bmMoNzcwLDEpO2JyZWFrO2Nhc2UgMzp0LmJsZW5kRnVuYygwLDc2OSk7YnJlYWs7Y2FzZSA0OnQuYmxlbmRGdW5jKDAsNzY4KTticmVhaztkZWZhdWx0OmNvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMU3RhdGU6IEludmFsaWQgYmxlbmRpbmc6ICIsZSl9Xz1udWxsLHk9bnVsbCxiPW51bGwseD1udWxsLG09ZSx3PWx9fWVsc2UhMD09PWYmJihWKDMwNDIpLGY9ITEpfWZ1bmN0aW9uIFcoZSl7UyE9PWUmJih0LmZyb250RmFjZShlPzIzMDQ6MjMwNSksUz1lKX1mdW5jdGlvbiBxKGUpezAhPT1lPyhGKDI4ODQpLGUhPT1NJiZ0LmN1bGxGYWNlKDE9PT1lPzEwMjk6Mj09PWU/MTAyODoxMDMyKSk6VigyODg0KSxNPWV9ZnVuY3Rpb24gWShlLG4saSl7ZT8oRigzMjgyMyksVD09PW4mJkM9PT1pfHwodC5wb2x5Z29uT2Zmc2V0KG4saSksVD1uLEM9aSkpOlYoMzI4MjMpfWZ1bmN0aW9uIFgoZSl7dm9pZCAwPT09ZSYmKGU9MzM5ODQrQS0xKSxOIT09ZSYmKHQuYWN0aXZlVGV4dHVyZShlKSxOPWUpfXJldHVybntidWZmZXJzOntjb2xvcjpyLGRlcHRoOmEsc3RlbmNpbDpsfSxlbmFibGU6RixkaXNhYmxlOlYsYmluZEZyYW1lYnVmZmVyOmZ1bmN0aW9uICQoZSxuKXtyZXR1cm4gbnVsbD09PW4mJm51bGwhPT1oJiYobj1oKSxkW2VdIT09biYmKHQuYmluZEZyYW1lYnVmZmVyKGUsbiksZFtlXT1uLGkmJigzNjAwOT09PWUmJihkWzM2MTYwXT1uKSwzNjE2MD09PWUmJihkWzM2MDA5XT1uKSksITApfSxiaW5kWFJGcmFtZWJ1ZmZlcjpmdW5jdGlvbiBLKGUpe2UhPT1oJiYodC5iaW5kRnJhbWVidWZmZXIoMzYxNjAsZSksaD1lKX0sdXNlUHJvZ3JhbTpmdW5jdGlvbiBaKGUpe3JldHVybiBwIT09ZSYmKHQudXNlUHJvZ3JhbShlKSxwPWUsITApfSxzZXRCbGVuZGluZzpHLHNldE1hdGVyaWFsOmZ1bmN0aW9uIEoodCxlKXsyPT09dC5zaWRlP1YoMjg4NCk6RigyODg0KTtsZXQgbj0xPT09dC5zaWRlO2UmJihuPSFuKSxXKG4pLDE9PT10LmJsZW5kaW5nJiYhMT09PXQudHJhbnNwYXJlbnQ/RygwKTpHKHQuYmxlbmRpbmcsdC5ibGVuZEVxdWF0aW9uLHQuYmxlbmRTcmMsdC5ibGVuZERzdCx0LmJsZW5kRXF1YXRpb25BbHBoYSx0LmJsZW5kU3JjQWxwaGEsdC5ibGVuZERzdEFscGhhLHQucHJlbXVsdGlwbGllZEFscGhhKSxhLnNldEZ1bmModC5kZXB0aEZ1bmMpLGEuc2V0VGVzdCh0LmRlcHRoVGVzdCksYS5zZXRNYXNrKHQuZGVwdGhXcml0ZSksci5zZXRNYXNrKHQuY29sb3JXcml0ZSk7Y29uc3QgaT10LnN0ZW5jaWxXcml0ZTtsLnNldFRlc3QoaSksaSYmKGwuc2V0TWFzayh0LnN0ZW5jaWxXcml0ZU1hc2spLGwuc2V0RnVuYyh0LnN0ZW5jaWxGdW5jLHQuc3RlbmNpbFJlZix0LnN0ZW5jaWxGdW5jTWFzayksbC5zZXRPcCh0LnN0ZW5jaWxGYWlsLHQuc3RlbmNpbFpGYWlsLHQuc3RlbmNpbFpQYXNzKSksWSh0LnBvbHlnb25PZmZzZXQsdC5wb2x5Z29uT2Zmc2V0RmFjdG9yLHQucG9seWdvbk9mZnNldFVuaXRzKSwhMD09PXQuYWxwaGFUb0NvdmVyYWdlP0YoMzI5MjYpOlYoMzI5MjYpfSxzZXRGbGlwU2lkZWQ6VyxzZXRDdWxsRmFjZTpxLHNldExpbmVXaWR0aDpmdW5jdGlvbiBRKGUpe2UhPT1FJiYoayYmdC5saW5lV2lkdGgoZSksRT1lKX0sc2V0UG9seWdvbk9mZnNldDpZLHNldFNjaXNzb3JUZXN0OmZ1bmN0aW9uIHR0KHQpe3Q/RigzMDg5KTpWKDMwODkpfSxhY3RpdmVUZXh0dXJlOlgsYmluZFRleHR1cmU6ZnVuY3Rpb24gZXQoZSxuKXtudWxsPT09TiYmWCgpO2xldCBpPUlbTl07dm9pZCAwPT09aSYmKGk9e3R5cGU6dm9pZCAwLHRleHR1cmU6dm9pZCAwfSxJW05dPWkpLGkudHlwZT09PWUmJmkudGV4dHVyZT09PW58fCh0LmJpbmRUZXh0dXJlKGUsbnx8SFtlXSksaS50eXBlPWUsaS50ZXh0dXJlPW4pfSx1bmJpbmRUZXh0dXJlOmZ1bmN0aW9uIG50KCl7Y29uc3QgZT1JW05dO3ZvaWQgMCE9PWUmJnZvaWQgMCE9PWUudHlwZSYmKHQuYmluZFRleHR1cmUoZS50eXBlLG51bGwpLGUudHlwZT12b2lkIDAsZS50ZXh0dXJlPXZvaWQgMCl9LGNvbXByZXNzZWRUZXhJbWFnZTJEOmZ1bmN0aW9uIGl0KCl7dHJ5e3QuY29tcHJlc3NlZFRleEltYWdlMkQuYXBwbHkodCxhcmd1bWVudHMpfWNhdGNoKHQpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMU3RhdGU6Iix0KX19LHRleEltYWdlMkQ6ZnVuY3Rpb24gcnQoKXt0cnl7dC50ZXhJbWFnZTJELmFwcGx5KHQsYXJndW1lbnRzKX1jYXRjaCh0KXtjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFN0YXRlOiIsdCl9fSx0ZXhJbWFnZTNEOmZ1bmN0aW9uIG90KCl7dHJ5e3QudGV4SW1hZ2UzRC5hcHBseSh0LGFyZ3VtZW50cyl9Y2F0Y2godCl7Y29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xTdGF0ZToiLHQpfX0sc2Npc3NvcjpmdW5jdGlvbiBhdChlKXshMT09PXouZXF1YWxzKGUpJiYodC5zY2lzc29yKGUueCxlLnksZS56LGUudyksei5jb3B5KGUpKX0sdmlld3BvcnQ6ZnVuY3Rpb24gc3QoZSl7ITE9PT1ELmVxdWFscyhlKSYmKHQudmlld3BvcnQoZS54LGUueSxlLnosZS53KSxELmNvcHkoZSkpfSxyZXNldDpmdW5jdGlvbiBsdCgpe3QuZGlzYWJsZSgzMDQyKSx0LmRpc2FibGUoMjg4NCksdC5kaXNhYmxlKDI5MjkpLHQuZGlzYWJsZSgzMjgyMyksdC5kaXNhYmxlKDMwODkpLHQuZGlzYWJsZSgyOTYwKSx0LmRpc2FibGUoMzI5MjYpLHQuYmxlbmRFcXVhdGlvbigzMjc3NCksdC5ibGVuZEZ1bmMoMSwwKSx0LmJsZW5kRnVuY1NlcGFyYXRlKDEsMCwxLDApLHQuY29sb3JNYXNrKCEwLCEwLCEwLCEwKSx0LmNsZWFyQ29sb3IoMCwwLDAsMCksdC5kZXB0aE1hc2soITApLHQuZGVwdGhGdW5jKDUxMyksdC5jbGVhckRlcHRoKDEpLHQuc3RlbmNpbE1hc2soNDI5NDk2NzI5NSksdC5zdGVuY2lsRnVuYyg1MTksMCw0Mjk0OTY3Mjk1KSx0LnN0ZW5jaWxPcCg3NjgwLDc2ODAsNzY4MCksdC5jbGVhclN0ZW5jaWwoMCksdC5jdWxsRmFjZSgxMDI5KSx0LmZyb250RmFjZSgyMzA1KSx0LnBvbHlnb25PZmZzZXQoMCwwKSx0LmFjdGl2ZVRleHR1cmUoMzM5ODQpLHQuYmluZEZyYW1lYnVmZmVyKDM2MTYwLG51bGwpLCEwPT09aSYmKHQuYmluZEZyYW1lYnVmZmVyKDM2MDA5LG51bGwpLHQuYmluZEZyYW1lYnVmZmVyKDM2MDA4LG51bGwpKSx0LnVzZVByb2dyYW0obnVsbCksdC5saW5lV2lkdGgoMSksdC5zY2lzc29yKDAsMCx0LmNhbnZhcy53aWR0aCx0LmNhbnZhcy5oZWlnaHQpLHQudmlld3BvcnQoMCwwLHQuY2FudmFzLndpZHRoLHQuY2FudmFzLmhlaWdodCksdT17fSxOPW51bGwsST17fSxoPW51bGwsZD17fSxwPW51bGwsZj0hMSxtPW51bGwsZz1udWxsLF89bnVsbCx5PW51bGwsdj1udWxsLGI9bnVsbCx4PW51bGwsdz0hMSxTPW51bGwsTT1udWxsLEU9bnVsbCxUPW51bGwsQz1udWxsLHouc2V0KDAsMCx0LmNhbnZhcy53aWR0aCx0LmNhbnZhcy5oZWlnaHQpLEQuc2V0KDAsMCx0LmNhbnZhcy53aWR0aCx0LmNhbnZhcy5oZWlnaHQpLHIucmVzZXQoKSxhLnJlc2V0KCksbC5yZXNldCgpfX19ZnVuY3Rpb24gWjh0KHQsZSxuLGkscixvLGEpe2NvbnN0IHM9ci5pc1dlYkdMMixsPXIubWF4VGV4dHVyZXMsYz1yLm1heEN1YmVtYXBTaXplLHU9ci5tYXhUZXh0dXJlU2l6ZSxoPXIubWF4U2FtcGxlcyxkPW5ldyBXZWFrTWFwO2xldCBwLGY9ITE7dHJ5e2Y9InVuZGVmaW5lZCIhPXR5cGVvZiBPZmZzY3JlZW5DYW52YXMmJm51bGwhPT1uZXcgT2Zmc2NyZWVuQ2FudmFzKDEsMSkuZ2V0Q29udGV4dCgiMmQiKX1jYXRjaCh0KXt9ZnVuY3Rpb24gbSh0LGUpe3JldHVybiBmP25ldyBPZmZzY3JlZW5DYW52YXModCxlKTpkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiLCJjYW52YXMiKX1mdW5jdGlvbiBnKHQsZSxuLGkpe2xldCByPTE7aWYoKHQud2lkdGg+aXx8dC5oZWlnaHQ+aSkmJihyPWkvTWF0aC5tYXgodC53aWR0aCx0LmhlaWdodCkpLHI8MXx8ITA9PT1lKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIEhUTUxJbWFnZUVsZW1lbnQmJnQgaW5zdGFuY2VvZiBIVE1MSW1hZ2VFbGVtZW50fHwidW5kZWZpbmVkIiE9dHlwZW9mIEhUTUxDYW52YXNFbGVtZW50JiZ0IGluc3RhbmNlb2YgSFRNTENhbnZhc0VsZW1lbnR8fCJ1bmRlZmluZWQiIT10eXBlb2YgSW1hZ2VCaXRtYXAmJnQgaW5zdGFuY2VvZiBJbWFnZUJpdG1hcCl7Y29uc3QgaT1lP2Q1dDpNYXRoLmZsb29yLG89aShyKnQud2lkdGgpLGE9aShyKnQuaGVpZ2h0KTt2b2lkIDA9PT1wJiYocD1tKG8sYSkpO2NvbnN0IHM9bj9tKG8sYSk6cDtzLndpZHRoPW8scy5oZWlnaHQ9YTtyZXR1cm4gcy5nZXRDb250ZXh0KCIyZCIpLmRyYXdJbWFnZSh0LDAsMCxvLGEpLGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogVGV4dHVyZSBoYXMgYmVlbiByZXNpemVkIGZyb20gKCIrdC53aWR0aCsieCIrdC5oZWlnaHQrIikgdG8gKCIrbysieCIrYSsiKS4iKSxzfXJldHVybiJkYXRhImluIHQmJmNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogSW1hZ2UgaW4gRGF0YVRleHR1cmUgaXMgdG9vIGJpZyAoIit0LndpZHRoKyJ4Iit0LmhlaWdodCsiKS4iKSx0fXJldHVybiB0fWZ1bmN0aW9uIF8odCl7cmV0dXJuIHU1dCh0LndpZHRoKSYmdTV0KHQuaGVpZ2h0KX1mdW5jdGlvbiB5KHQsZSl7cmV0dXJuIHQuZ2VuZXJhdGVNaXBtYXBzJiZlJiZ0Lm1pbkZpbHRlciE9PXUydCYmdC5taW5GaWx0ZXIhPT1wMnR9ZnVuY3Rpb24gdihlLG4scixvLGE9MSl7dC5nZW5lcmF0ZU1pcG1hcChlKTtpLmdldChuKS5fX21heE1pcExldmVsPU1hdGgubG9nMihNYXRoLm1heChyLG8sYSkpfWZ1bmN0aW9uIGIobixpLHIpe2lmKCExPT09cylyZXR1cm4gaTtpZihudWxsIT09bil7aWYodm9pZCAwIT09dFtuXSlyZXR1cm4gdFtuXTtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IEF0dGVtcHQgdG8gdXNlIG5vbi1leGlzdGluZyBXZWJHTCBpbnRlcm5hbCBmb3JtYXQgJyIrbisiJyIpfWxldCBvPWk7cmV0dXJuIDY0MDM9PT1pJiYoNTEyNj09PXImJihvPTMzMzI2KSw1MTMxPT09ciYmKG89MzMzMjUpLDUxMjE9PT1yJiYobz0zMzMyMSkpLDY0MDc9PT1pJiYoNTEyNj09PXImJihvPTM0ODM3KSw1MTMxPT09ciYmKG89MzQ4NDMpLDUxMjE9PT1yJiYobz0zMjg0OSkpLDY0MDg9PT1pJiYoNTEyNj09PXImJihvPTM0ODM2KSw1MTMxPT09ciYmKG89MzQ4NDIpLDUxMjE9PT1yJiYobz0zMjg1NikpLDMzMzI1IT09byYmMzMzMjYhPT1vJiYzNDg0MiE9PW8mJjM0ODM2IT09b3x8ZS5nZXQoIkVYVF9jb2xvcl9idWZmZXJfZmxvYXQiKSxvfWZ1bmN0aW9uIHgodCl7cmV0dXJuIHQ9PT11MnR8fHQ9PT1oMnR8fHQ9PT1kMnQ/OTcyODo5NzI5fWZ1bmN0aW9uIHcoZSl7Y29uc3Qgbj1lLnRhcmdldDtuLnJlbW92ZUV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLHcpLChmdW5jdGlvbiByKGUpe2NvbnN0IG49aS5nZXQoZSk7aWYodm9pZCAwPT09bi5fX3dlYmdsSW5pdClyZXR1cm47dC5kZWxldGVUZXh0dXJlKG4uX193ZWJnbFRleHR1cmUpLGkucmVtb3ZlKGUpfSkobiksbi5pc1ZpZGVvVGV4dHVyZSYmZC5kZWxldGUobiksYS5tZW1vcnkudGV4dHVyZXMtLX1mdW5jdGlvbiBTKGUpe2NvbnN0IG49ZS50YXJnZXQ7bi5yZW1vdmVFdmVudExpc3RlbmVyKCJkaXNwb3NlIixTKSwoZnVuY3Rpb24gcihlKXtjb25zdCBuPWUudGV4dHVyZSxyPWkuZ2V0KGUpLG89aS5nZXQobik7aWYoIWUpcmV0dXJuO3ZvaWQgMCE9PW8uX193ZWJnbFRleHR1cmUmJih0LmRlbGV0ZVRleHR1cmUoby5fX3dlYmdsVGV4dHVyZSksYS5tZW1vcnkudGV4dHVyZXMtLSk7ZS5kZXB0aFRleHR1cmUmJmUuZGVwdGhUZXh0dXJlLmRpc3Bvc2UoKTtpZihlLmlzV2ViR0xDdWJlUmVuZGVyVGFyZ2V0KWZvcihsZXQgZT0wO2U8NjtlKyspdC5kZWxldGVGcmFtZWJ1ZmZlcihyLl9fd2ViZ2xGcmFtZWJ1ZmZlcltlXSksci5fX3dlYmdsRGVwdGhidWZmZXImJnQuZGVsZXRlUmVuZGVyYnVmZmVyKHIuX193ZWJnbERlcHRoYnVmZmVyW2VdKTtlbHNlIHQuZGVsZXRlRnJhbWVidWZmZXIoci5fX3dlYmdsRnJhbWVidWZmZXIpLHIuX193ZWJnbERlcHRoYnVmZmVyJiZ0LmRlbGV0ZVJlbmRlcmJ1ZmZlcihyLl9fd2ViZ2xEZXB0aGJ1ZmZlciksci5fX3dlYmdsTXVsdGlzYW1wbGVkRnJhbWVidWZmZXImJnQuZGVsZXRlRnJhbWVidWZmZXIoci5fX3dlYmdsTXVsdGlzYW1wbGVkRnJhbWVidWZmZXIpLHIuX193ZWJnbENvbG9yUmVuZGVyYnVmZmVyJiZ0LmRlbGV0ZVJlbmRlcmJ1ZmZlcihyLl9fd2ViZ2xDb2xvclJlbmRlcmJ1ZmZlciksci5fX3dlYmdsRGVwdGhSZW5kZXJidWZmZXImJnQuZGVsZXRlUmVuZGVyYnVmZmVyKHIuX193ZWJnbERlcHRoUmVuZGVyYnVmZmVyKTtpZihlLmlzV2ViR0xNdWx0aXBsZVJlbmRlclRhcmdldHMpZm9yKGxldCBlPTAscj1uLmxlbmd0aDtlPHI7ZSsrKXtjb25zdCByPWkuZ2V0KG5bZV0pO3IuX193ZWJnbFRleHR1cmUmJih0LmRlbGV0ZVRleHR1cmUoci5fX3dlYmdsVGV4dHVyZSksYS5tZW1vcnkudGV4dHVyZXMtLSksaS5yZW1vdmUobltlXSl9aS5yZW1vdmUobiksaS5yZW1vdmUoZSl9KShuKX1sZXQgTT0wO2Z1bmN0aW9uIEUodCxlKXtjb25zdCByPWkuZ2V0KHQpO2lmKHQuaXNWaWRlb1RleHR1cmUmJihmdW5jdGlvbiBvKHQpe2NvbnN0IGU9YS5yZW5kZXIuZnJhbWU7ZC5nZXQodCkhPT1lJiYoZC5zZXQodCxlKSx0LnVwZGF0ZSgpKX0pKHQpLHQudmVyc2lvbj4wJiZyLl9fdmVyc2lvbiE9PXQudmVyc2lvbil7Y29uc3Qgbj10LmltYWdlO2lmKHZvaWQgMD09PW4pY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBUZXh0dXJlIG1hcmtlZCBmb3IgdXBkYXRlIGJ1dCBpbWFnZSBpcyB1bmRlZmluZWQiKTtlbHNle2lmKCExIT09bi5jb21wbGV0ZSlyZXR1cm4gdm9pZCBQKHIsdCxlKTtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IFRleHR1cmUgbWFya2VkIGZvciB1cGRhdGUgYnV0IGltYWdlIGlzIGluY29tcGxldGUiKX19bi5hY3RpdmVUZXh0dXJlKDMzOTg0K2UpLG4uYmluZFRleHR1cmUoMzU1MyxyLl9fd2ViZ2xUZXh0dXJlKX1mdW5jdGlvbiBUKGUscil7Y29uc3QgYT1pLmdldChlKTtlLnZlcnNpb24+MCYmYS5fX3ZlcnNpb24hPT1lLnZlcnNpb24/KGZ1bmN0aW9uIGwoZSxpLHIpe2lmKDYhPT1pLmltYWdlLmxlbmd0aClyZXR1cm47TChlLGkpLG4uYWN0aXZlVGV4dHVyZSgzMzk4NCtyKSxuLmJpbmRUZXh0dXJlKDM0MDY3LGUuX193ZWJnbFRleHR1cmUpLHQucGl4ZWxTdG9yZWkoMzc0NDAsaS5mbGlwWSksdC5waXhlbFN0b3JlaSgzNzQ0MSxpLnByZW11bHRpcGx5QWxwaGEpLHQucGl4ZWxTdG9yZWkoMzMxNyxpLnVucGFja0FsaWdubWVudCksdC5waXhlbFN0b3JlaSgzNzQ0MywwKTtjb25zdCBhPWkmJihpLmlzQ29tcHJlc3NlZFRleHR1cmV8fGkuaW1hZ2VbMF0uaXNDb21wcmVzc2VkVGV4dHVyZSksbD1pLmltYWdlWzBdJiZpLmltYWdlWzBdLmlzRGF0YVRleHR1cmUsdT1bXTtmb3IobGV0IHQ9MDt0PDY7dCsrKXVbdF09YXx8bD9sP2kuaW1hZ2VbdF0uaW1hZ2U6aS5pbWFnZVt0XTpnKGkuaW1hZ2VbdF0sITEsITAsYyk7Y29uc3QgaD11WzBdLGQ9XyhoKXx8cyxwPW8uY29udmVydChpLmZvcm1hdCksZj1vLmNvbnZlcnQoaS50eXBlKSxtPWIoaS5pbnRlcm5hbEZvcm1hdCxwLGYpO2xldCB4O2lmKGsoMzQwNjcsaSxkKSxhKXtmb3IobGV0IHQ9MDt0PDY7dCsrKXt4PXVbdF0ubWlwbWFwcztmb3IobGV0IGU9MDtlPHgubGVuZ3RoO2UrKyl7Y29uc3Qgcj14W2VdO2kuZm9ybWF0IT09UzJ0JiZpLmZvcm1hdCE9PXcydD9udWxsIT09cD9uLmNvbXByZXNzZWRUZXhJbWFnZTJEKDM0MDY5K3QsZSxtLHIud2lkdGgsci5oZWlnaHQsMCxyLmRhdGEpOmNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogQXR0ZW1wdCB0byBsb2FkIHVuc3VwcG9ydGVkIGNvbXByZXNzZWQgdGV4dHVyZSBmb3JtYXQgaW4gLnNldFRleHR1cmVDdWJlKCkiKTpuLnRleEltYWdlMkQoMzQwNjkrdCxlLG0sci53aWR0aCxyLmhlaWdodCwwLHAsZixyLmRhdGEpfX1lLl9fbWF4TWlwTGV2ZWw9eC5sZW5ndGgtMX1lbHNle3g9aS5taXBtYXBzO2ZvcihsZXQgdD0wO3Q8Njt0KyspaWYobCl7bi50ZXhJbWFnZTJEKDM0MDY5K3QsMCxtLHVbdF0ud2lkdGgsdVt0XS5oZWlnaHQsMCxwLGYsdVt0XS5kYXRhKTtmb3IobGV0IGU9MDtlPHgubGVuZ3RoO2UrKyl7Y29uc3QgaT14W2VdLmltYWdlW3RdLmltYWdlO24udGV4SW1hZ2UyRCgzNDA2OSt0LGUrMSxtLGkud2lkdGgsaS5oZWlnaHQsMCxwLGYsaS5kYXRhKX19ZWxzZXtuLnRleEltYWdlMkQoMzQwNjkrdCwwLG0scCxmLHVbdF0pO2ZvcihsZXQgZT0wO2U8eC5sZW5ndGg7ZSsrKXtuLnRleEltYWdlMkQoMzQwNjkrdCxlKzEsbSxwLGYseFtlXS5pbWFnZVt0XSl9fWUuX19tYXhNaXBMZXZlbD14Lmxlbmd0aH15KGksZCkmJnYoMzQwNjcsaSxoLndpZHRoLGguaGVpZ2h0KTtlLl9fdmVyc2lvbj1pLnZlcnNpb24saS5vblVwZGF0ZSYmaS5vblVwZGF0ZShpKX0pKGEsZSxyKToobi5hY3RpdmVUZXh0dXJlKDMzOTg0K3IpLG4uYmluZFRleHR1cmUoMzQwNjcsYS5fX3dlYmdsVGV4dHVyZSkpfWNvbnN0IEM9e1tzMnRdOjEwNDk3LFtsMnRdOjMzMDcxLFtjMnRdOjMzNjQ4fSxBPXtbdTJ0XTo5NzI4LFtoMnRdOjk5ODQsW2QydF06OTk4NixbcDJ0XTo5NzI5LFtmMnRdOjk5ODUsW20ydF06OTk4N307ZnVuY3Rpb24gayhuLG8sYSl7aWYoYT8odC50ZXhQYXJhbWV0ZXJpKG4sMTAyNDIsQ1tvLndyYXBTXSksdC50ZXhQYXJhbWV0ZXJpKG4sMTAyNDMsQ1tvLndyYXBUXSksMzI4NzkhPT1uJiYzNTg2NiE9PW58fHQudGV4UGFyYW1ldGVyaShuLDMyODgyLENbby53cmFwUl0pLHQudGV4UGFyYW1ldGVyaShuLDEwMjQwLEFbby5tYWdGaWx0ZXJdKSx0LnRleFBhcmFtZXRlcmkobiwxMDI0MSxBW28ubWluRmlsdGVyXSkpOih0LnRleFBhcmFtZXRlcmkobiwxMDI0MiwzMzA3MSksdC50ZXhQYXJhbWV0ZXJpKG4sMTAyNDMsMzMwNzEpLDMyODc5IT09biYmMzU4NjYhPT1ufHx0LnRleFBhcmFtZXRlcmkobiwzMjg4MiwzMzA3MSksby53cmFwUz09PWwydCYmby53cmFwVD09PWwydHx8Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBUZXh0dXJlIGlzIG5vdCBwb3dlciBvZiB0d28uIFRleHR1cmUud3JhcFMgYW5kIFRleHR1cmUud3JhcFQgc2hvdWxkIGJlIHNldCB0byBUSFJFRS5DbGFtcFRvRWRnZVdyYXBwaW5nLiIpLHQudGV4UGFyYW1ldGVyaShuLDEwMjQwLHgoby5tYWdGaWx0ZXIpKSx0LnRleFBhcmFtZXRlcmkobiwxMDI0MSx4KG8ubWluRmlsdGVyKSksby5taW5GaWx0ZXIhPT11MnQmJm8ubWluRmlsdGVyIT09cDJ0JiZjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IFRleHR1cmUgaXMgbm90IHBvd2VyIG9mIHR3by4gVGV4dHVyZS5taW5GaWx0ZXIgc2hvdWxkIGJlIHNldCB0byBUSFJFRS5OZWFyZXN0RmlsdGVyIG9yIFRIUkVFLkxpbmVhckZpbHRlci4iKSksITA9PT1lLmhhcygiRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIikpe2NvbnN0IGE9ZS5nZXQoIkVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpO2lmKG8udHlwZT09PXYydCYmITE9PT1lLmhhcygiT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIikpcmV0dXJuO2lmKCExPT09cyYmby50eXBlPT09YjJ0JiYhMT09PWUuaGFzKCJPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xpbmVhciIpKXJldHVybjsoby5hbmlzb3Ryb3B5PjF8fGkuZ2V0KG8pLl9fY3VycmVudEFuaXNvdHJvcHkpJiYodC50ZXhQYXJhbWV0ZXJmKG4sYS5URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVCxNYXRoLm1pbihvLmFuaXNvdHJvcHksci5nZXRNYXhBbmlzb3Ryb3B5KCkpKSxpLmdldChvKS5fX2N1cnJlbnRBbmlzb3Ryb3B5PW8uYW5pc290cm9weSl9fWZ1bmN0aW9uIEwoZSxuKXt2b2lkIDA9PT1lLl9fd2ViZ2xJbml0JiYoZS5fX3dlYmdsSW5pdD0hMCxuLmFkZEV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLHcpLGUuX193ZWJnbFRleHR1cmU9dC5jcmVhdGVUZXh0dXJlKCksYS5tZW1vcnkudGV4dHVyZXMrKyl9ZnVuY3Rpb24gUChlLGkscil7bGV0IGE9MzU1MztpLmlzRGF0YVRleHR1cmUyREFycmF5JiYoYT0zNTg2NiksaS5pc0RhdGFUZXh0dXJlM0QmJihhPTMyODc5KSxMKGUsaSksbi5hY3RpdmVUZXh0dXJlKDMzOTg0K3IpLG4uYmluZFRleHR1cmUoYSxlLl9fd2ViZ2xUZXh0dXJlKSx0LnBpeGVsU3RvcmVpKDM3NDQwLGkuZmxpcFkpLHQucGl4ZWxTdG9yZWkoMzc0NDEsaS5wcmVtdWx0aXBseUFscGhhKSx0LnBpeGVsU3RvcmVpKDMzMTcsaS51bnBhY2tBbGlnbm1lbnQpLHQucGl4ZWxTdG9yZWkoMzc0NDMsMCk7Y29uc3QgbD0oZnVuY3Rpb24gYyh0KXtyZXR1cm4hcyYmKHQud3JhcFMhPT1sMnR8fHQud3JhcFQhPT1sMnR8fHQubWluRmlsdGVyIT09dTJ0JiZ0Lm1pbkZpbHRlciE9PXAydCl9KShpKSYmITE9PT1fKGkuaW1hZ2UpLGg9ZyhpLmltYWdlLGwsITEsdSksZD1fKGgpfHxzLHA9by5jb252ZXJ0KGkuZm9ybWF0KTtsZXQgZixtPW8uY29udmVydChpLnR5cGUpLHg9YihpLmludGVybmFsRm9ybWF0LHAsbSk7ayhhLGksZCk7Y29uc3Qgdz1pLm1pcG1hcHM7aWYoaS5pc0RlcHRoVGV4dHVyZSl4PTY0MDIscz94PWkudHlwZT09PXYydD8zNjAxMjppLnR5cGU9PT15MnQ/MzMxOTA6aS50eXBlPT09eDJ0PzM1MDU2OjMzMTg5OmkudHlwZT09PXYydCYmY29uc29sZS5lcnJvcigiV2ViR0xSZW5kZXJlcjogRmxvYXRpbmcgcG9pbnQgZGVwdGggdGV4dHVyZSByZXF1aXJlcyBXZWJHTDIuIiksaS5mb3JtYXQ9PT1NMnQmJjY0MDI9PT14JiZpLnR5cGUhPT1fMnQmJmkudHlwZSE9PXkydCYmKGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogVXNlIFVuc2lnbmVkU2hvcnRUeXBlIG9yIFVuc2lnbmVkSW50VHlwZSBmb3IgRGVwdGhGb3JtYXQgRGVwdGhUZXh0dXJlLiIpLGkudHlwZT1fMnQsbT1vLmNvbnZlcnQoaS50eXBlKSksaS5mb3JtYXQ9PT1FMnQmJjY0MDI9PT14JiYoeD0zNDA0MSxpLnR5cGUhPT14MnQmJihjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IFVzZSBVbnNpZ25lZEludDI0OFR5cGUgZm9yIERlcHRoU3RlbmNpbEZvcm1hdCBEZXB0aFRleHR1cmUuIiksaS50eXBlPXgydCxtPW8uY29udmVydChpLnR5cGUpKSksbi50ZXhJbWFnZTJEKDM1NTMsMCx4LGgud2lkdGgsaC5oZWlnaHQsMCxwLG0sbnVsbCk7ZWxzZSBpZihpLmlzRGF0YVRleHR1cmUpaWYody5sZW5ndGg+MCYmZCl7Zm9yKGxldCB0PTAsZT13Lmxlbmd0aDt0PGU7dCsrKWY9d1t0XSxuLnRleEltYWdlMkQoMzU1Myx0LHgsZi53aWR0aCxmLmhlaWdodCwwLHAsbSxmLmRhdGEpO2kuZ2VuZXJhdGVNaXBtYXBzPSExLGUuX19tYXhNaXBMZXZlbD13Lmxlbmd0aC0xfWVsc2Ugbi50ZXhJbWFnZTJEKDM1NTMsMCx4LGgud2lkdGgsaC5oZWlnaHQsMCxwLG0saC5kYXRhKSxlLl9fbWF4TWlwTGV2ZWw9MDtlbHNlIGlmKGkuaXNDb21wcmVzc2VkVGV4dHVyZSl7Zm9yKGxldCB0PTAsZT13Lmxlbmd0aDt0PGU7dCsrKWY9d1t0XSxpLmZvcm1hdCE9PVMydCYmaS5mb3JtYXQhPT13MnQ/bnVsbCE9PXA/bi5jb21wcmVzc2VkVGV4SW1hZ2UyRCgzNTUzLHQseCxmLndpZHRoLGYuaGVpZ2h0LDAsZi5kYXRhKTpjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IEF0dGVtcHQgdG8gbG9hZCB1bnN1cHBvcnRlZCBjb21wcmVzc2VkIHRleHR1cmUgZm9ybWF0IGluIC51cGxvYWRUZXh0dXJlKCkiKTpuLnRleEltYWdlMkQoMzU1Myx0LHgsZi53aWR0aCxmLmhlaWdodCwwLHAsbSxmLmRhdGEpO2UuX19tYXhNaXBMZXZlbD13Lmxlbmd0aC0xfWVsc2UgaWYoaS5pc0RhdGFUZXh0dXJlMkRBcnJheSluLnRleEltYWdlM0QoMzU4NjYsMCx4LGgud2lkdGgsaC5oZWlnaHQsaC5kZXB0aCwwLHAsbSxoLmRhdGEpLGUuX19tYXhNaXBMZXZlbD0wO2Vsc2UgaWYoaS5pc0RhdGFUZXh0dXJlM0Qpbi50ZXhJbWFnZTNEKDMyODc5LDAseCxoLndpZHRoLGguaGVpZ2h0LGguZGVwdGgsMCxwLG0saC5kYXRhKSxlLl9fbWF4TWlwTGV2ZWw9MDtlbHNlIGlmKHcubGVuZ3RoPjAmJmQpe2ZvcihsZXQgdD0wLGU9dy5sZW5ndGg7dDxlO3QrKylmPXdbdF0sbi50ZXhJbWFnZTJEKDM1NTMsdCx4LHAsbSxmKTtpLmdlbmVyYXRlTWlwbWFwcz0hMSxlLl9fbWF4TWlwTGV2ZWw9dy5sZW5ndGgtMX1lbHNlIG4udGV4SW1hZ2UyRCgzNTUzLDAseCxwLG0saCksZS5fX21heE1pcExldmVsPTA7eShpLGQpJiZ2KGEsaSxoLndpZHRoLGguaGVpZ2h0KSxlLl9fdmVyc2lvbj1pLnZlcnNpb24saS5vblVwZGF0ZSYmaS5vblVwZGF0ZShpKX1mdW5jdGlvbiBOKGUscixhLHMsbCl7Y29uc3QgYz1vLmNvbnZlcnQoYS5mb3JtYXQpLHU9by5jb252ZXJ0KGEudHlwZSksaD1iKGEuaW50ZXJuYWxGb3JtYXQsYyx1KTszMjg3OT09PWx8fDM1ODY2PT09bD9uLnRleEltYWdlM0QobCwwLGgsci53aWR0aCxyLmhlaWdodCxyLmRlcHRoLDAsYyx1LG51bGwpOm4udGV4SW1hZ2UyRChsLDAsaCxyLndpZHRoLHIuaGVpZ2h0LDAsYyx1LG51bGwpLG4uYmluZEZyYW1lYnVmZmVyKDM2MTYwLGUpLHQuZnJhbWVidWZmZXJUZXh0dXJlMkQoMzYxNjAscyxsLGkuZ2V0KGEpLl9fd2ViZ2xUZXh0dXJlLDApLG4uYmluZEZyYW1lYnVmZmVyKDM2MTYwLG51bGwpfWZ1bmN0aW9uIEkoZSxuLGkpe2lmKHQuYmluZFJlbmRlcmJ1ZmZlcigzNjE2MSxlKSxuLmRlcHRoQnVmZmVyJiYhbi5zdGVuY2lsQnVmZmVyKXtsZXQgcj0zMzE4OTtpZihpKXtjb25zdCBlPW4uZGVwdGhUZXh0dXJlO2UmJmUuaXNEZXB0aFRleHR1cmUmJihlLnR5cGU9PT12MnQ/cj0zNjAxMjplLnR5cGU9PT15MnQmJihyPTMzMTkwKSk7Y29uc3QgaT1PKG4pO3QucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKDM2MTYxLGkscixuLndpZHRoLG4uaGVpZ2h0KX1lbHNlIHQucmVuZGVyYnVmZmVyU3RvcmFnZSgzNjE2MSxyLG4ud2lkdGgsbi5oZWlnaHQpO3QuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoMzYxNjAsMzYwOTYsMzYxNjEsZSl9ZWxzZSBpZihuLmRlcHRoQnVmZmVyJiZuLnN0ZW5jaWxCdWZmZXIpe2lmKGkpe2NvbnN0IGU9TyhuKTt0LnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSgzNjE2MSxlLDM1MDU2LG4ud2lkdGgsbi5oZWlnaHQpfWVsc2UgdC5yZW5kZXJidWZmZXJTdG9yYWdlKDM2MTYxLDM0MDQxLG4ud2lkdGgsbi5oZWlnaHQpO3QuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoMzYxNjAsMzMzMDYsMzYxNjEsZSl9ZWxzZXtjb25zdCBlPSEwPT09bi5pc1dlYkdMTXVsdGlwbGVSZW5kZXJUYXJnZXRzP24udGV4dHVyZVswXTpuLnRleHR1cmUscj1vLmNvbnZlcnQoZS5mb3JtYXQpLGE9by5jb252ZXJ0KGUudHlwZSkscz1iKGUuaW50ZXJuYWxGb3JtYXQscixhKTtpZihpKXtjb25zdCBlPU8obik7dC5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoMzYxNjEsZSxzLG4ud2lkdGgsbi5oZWlnaHQpfWVsc2UgdC5yZW5kZXJidWZmZXJTdG9yYWdlKDM2MTYxLHMsbi53aWR0aCxuLmhlaWdodCl9dC5iaW5kUmVuZGVyYnVmZmVyKDM2MTYxLG51bGwpfWZ1bmN0aW9uIFIoZSl7Y29uc3Qgcj1pLmdldChlKSxvPSEwPT09ZS5pc1dlYkdMQ3ViZVJlbmRlclRhcmdldDtpZihlLmRlcHRoVGV4dHVyZSl7aWYobyl0aHJvdyBuZXcgRXJyb3IoInRhcmdldC5kZXB0aFRleHR1cmUgbm90IHN1cHBvcnRlZCBpbiBDdWJlIHJlbmRlciB0YXJnZXRzIik7IShmdW5jdGlvbiBhKGUscil7aWYociYmci5pc1dlYkdMQ3ViZVJlbmRlclRhcmdldCl0aHJvdyBuZXcgRXJyb3IoIkRlcHRoIFRleHR1cmUgd2l0aCBjdWJlIHJlbmRlciB0YXJnZXRzIGlzIG5vdCBzdXBwb3J0ZWQiKTtpZihuLmJpbmRGcmFtZWJ1ZmZlcigzNjE2MCxlKSwhci5kZXB0aFRleHR1cmV8fCFyLmRlcHRoVGV4dHVyZS5pc0RlcHRoVGV4dHVyZSl0aHJvdyBuZXcgRXJyb3IoInJlbmRlclRhcmdldC5kZXB0aFRleHR1cmUgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBUSFJFRS5EZXB0aFRleHR1cmUiKTtpLmdldChyLmRlcHRoVGV4dHVyZSkuX193ZWJnbFRleHR1cmUmJnIuZGVwdGhUZXh0dXJlLmltYWdlLndpZHRoPT09ci53aWR0aCYmci5kZXB0aFRleHR1cmUuaW1hZ2UuaGVpZ2h0PT09ci5oZWlnaHR8fChyLmRlcHRoVGV4dHVyZS5pbWFnZS53aWR0aD1yLndpZHRoLHIuZGVwdGhUZXh0dXJlLmltYWdlLmhlaWdodD1yLmhlaWdodCxyLmRlcHRoVGV4dHVyZS5uZWVkc1VwZGF0ZT0hMCksRShyLmRlcHRoVGV4dHVyZSwwKTtjb25zdCBvPWkuZ2V0KHIuZGVwdGhUZXh0dXJlKS5fX3dlYmdsVGV4dHVyZTtpZihyLmRlcHRoVGV4dHVyZS5mb3JtYXQ9PT1NMnQpdC5mcmFtZWJ1ZmZlclRleHR1cmUyRCgzNjE2MCwzNjA5NiwzNTUzLG8sMCk7ZWxzZXtpZihyLmRlcHRoVGV4dHVyZS5mb3JtYXQhPT1FMnQpdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIGRlcHRoVGV4dHVyZSBmb3JtYXQiKTt0LmZyYW1lYnVmZmVyVGV4dHVyZTJEKDM2MTYwLDMzMzA2LDM1NTMsbywwKX19KShyLl9fd2ViZ2xGcmFtZWJ1ZmZlcixlKX1lbHNlIGlmKG8pe3IuX193ZWJnbERlcHRoYnVmZmVyPVtdO2ZvcihsZXQgaT0wO2k8NjtpKyspbi5iaW5kRnJhbWVidWZmZXIoMzYxNjAsci5fX3dlYmdsRnJhbWVidWZmZXJbaV0pLHIuX193ZWJnbERlcHRoYnVmZmVyW2ldPXQuY3JlYXRlUmVuZGVyYnVmZmVyKCksSShyLl9fd2ViZ2xEZXB0aGJ1ZmZlcltpXSxlLCExKX1lbHNlIG4uYmluZEZyYW1lYnVmZmVyKDM2MTYwLHIuX193ZWJnbEZyYW1lYnVmZmVyKSxyLl9fd2ViZ2xEZXB0aGJ1ZmZlcj10LmNyZWF0ZVJlbmRlcmJ1ZmZlcigpLEkoci5fX3dlYmdsRGVwdGhidWZmZXIsZSwhMSk7bi5iaW5kRnJhbWVidWZmZXIoMzYxNjAsbnVsbCl9ZnVuY3Rpb24gTyh0KXtyZXR1cm4gcyYmdC5pc1dlYkdMTXVsdGlzYW1wbGVSZW5kZXJUYXJnZXQ/TWF0aC5taW4oaCx0LnNhbXBsZXMpOjB9bGV0IHo9ITEsRD0hMTt0aGlzLmFsbG9jYXRlVGV4dHVyZVVuaXQ9ZnVuY3Rpb24gQigpe2NvbnN0IHQ9TTtyZXR1cm4gdD49bCYmY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFRleHR1cmVzOiBUcnlpbmcgdG8gdXNlICIrdCsiIHRleHR1cmUgdW5pdHMgd2hpbGUgdGhpcyBHUFUgc3VwcG9ydHMgb25seSAiK2wpLE0rPTEsdH0sdGhpcy5yZXNldFRleHR1cmVVbml0cz1mdW5jdGlvbiBIKCl7TT0wfSx0aGlzLnNldFRleHR1cmUyRD1FLHRoaXMuc2V0VGV4dHVyZTJEQXJyYXk9ZnVuY3Rpb24gRih0LGUpe2NvbnN0IHI9aS5nZXQodCk7dC52ZXJzaW9uPjAmJnIuX192ZXJzaW9uIT09dC52ZXJzaW9uP1Aocix0LGUpOihuLmFjdGl2ZVRleHR1cmUoMzM5ODQrZSksbi5iaW5kVGV4dHVyZSgzNTg2NixyLl9fd2ViZ2xUZXh0dXJlKSl9LHRoaXMuc2V0VGV4dHVyZTNEPWZ1bmN0aW9uIFYodCxlKXtjb25zdCByPWkuZ2V0KHQpO3QudmVyc2lvbj4wJiZyLl9fdmVyc2lvbiE9PXQudmVyc2lvbj9QKHIsdCxlKToobi5hY3RpdmVUZXh0dXJlKDMzOTg0K2UpLG4uYmluZFRleHR1cmUoMzI4Nzksci5fX3dlYmdsVGV4dHVyZSkpfSx0aGlzLnNldFRleHR1cmVDdWJlPVQsdGhpcy5zZXR1cFJlbmRlclRhcmdldD1mdW5jdGlvbiBVKGUpe2NvbnN0IGw9ZS50ZXh0dXJlLGM9aS5nZXQoZSksdT1pLmdldChsKTtlLmFkZEV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLFMpLCEwIT09ZS5pc1dlYkdMTXVsdGlwbGVSZW5kZXJUYXJnZXRzJiYodS5fX3dlYmdsVGV4dHVyZT10LmNyZWF0ZVRleHR1cmUoKSx1Ll9fdmVyc2lvbj1sLnZlcnNpb24sYS5tZW1vcnkudGV4dHVyZXMrKyk7Y29uc3QgaD0hMD09PWUuaXNXZWJHTEN1YmVSZW5kZXJUYXJnZXQsZD0hMD09PWUuaXNXZWJHTE11bHRpcGxlUmVuZGVyVGFyZ2V0cyxwPSEwPT09ZS5pc1dlYkdMTXVsdGlzYW1wbGVSZW5kZXJUYXJnZXQsZj1sLmlzRGF0YVRleHR1cmUzRHx8bC5pc0RhdGFUZXh0dXJlMkRBcnJheSxtPV8oZSl8fHM7aWYoIXN8fGwuZm9ybWF0IT09dzJ0fHxsLnR5cGUhPT12MnQmJmwudHlwZSE9PWIydHx8KGwuZm9ybWF0PVMydCxjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IFJlbmRlcmluZyB0byB0ZXh0dXJlcyB3aXRoIFJHQiBmb3JtYXQgaXMgbm90IHN1cHBvcnRlZC4gVXNpbmcgUkdCQSBmb3JtYXQgaW5zdGVhZC4iKSksaCl7Yy5fX3dlYmdsRnJhbWVidWZmZXI9W107Zm9yKGxldCBlPTA7ZTw2O2UrKyljLl9fd2ViZ2xGcmFtZWJ1ZmZlcltlXT10LmNyZWF0ZUZyYW1lYnVmZmVyKCl9ZWxzZSBpZihjLl9fd2ViZ2xGcmFtZWJ1ZmZlcj10LmNyZWF0ZUZyYW1lYnVmZmVyKCksZClpZihyLmRyYXdCdWZmZXJzKXtjb25zdCBuPWUudGV4dHVyZTtmb3IobGV0IGU9MCxyPW4ubGVuZ3RoO2U8cjtlKyspe2NvbnN0IHI9aS5nZXQobltlXSk7dm9pZCAwPT09ci5fX3dlYmdsVGV4dHVyZSYmKHIuX193ZWJnbFRleHR1cmU9dC5jcmVhdGVUZXh0dXJlKCksYS5tZW1vcnkudGV4dHVyZXMrKyl9fWVsc2UgY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBXZWJHTE11bHRpcGxlUmVuZGVyVGFyZ2V0cyBjYW4gb25seSBiZSB1c2VkIHdpdGggV2ViR0wyIG9yIFdFQkdMX2RyYXdfYnVmZmVycyBleHRlbnNpb24uIik7ZWxzZSBpZihwKWlmKHMpe2MuX193ZWJnbE11bHRpc2FtcGxlZEZyYW1lYnVmZmVyPXQuY3JlYXRlRnJhbWVidWZmZXIoKSxjLl9fd2ViZ2xDb2xvclJlbmRlcmJ1ZmZlcj10LmNyZWF0ZVJlbmRlcmJ1ZmZlcigpLHQuYmluZFJlbmRlcmJ1ZmZlcigzNjE2MSxjLl9fd2ViZ2xDb2xvclJlbmRlcmJ1ZmZlcik7Y29uc3QgaT1vLmNvbnZlcnQobC5mb3JtYXQpLHI9by5jb252ZXJ0KGwudHlwZSksYT1iKGwuaW50ZXJuYWxGb3JtYXQsaSxyKSxzPU8oZSk7dC5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoMzYxNjEscyxhLGUud2lkdGgsZS5oZWlnaHQpLG4uYmluZEZyYW1lYnVmZmVyKDM2MTYwLGMuX193ZWJnbE11bHRpc2FtcGxlZEZyYW1lYnVmZmVyKSx0LmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKDM2MTYwLDM2MDY0LDM2MTYxLGMuX193ZWJnbENvbG9yUmVuZGVyYnVmZmVyKSx0LmJpbmRSZW5kZXJidWZmZXIoMzYxNjEsbnVsbCksZS5kZXB0aEJ1ZmZlciYmKGMuX193ZWJnbERlcHRoUmVuZGVyYnVmZmVyPXQuY3JlYXRlUmVuZGVyYnVmZmVyKCksSShjLl9fd2ViZ2xEZXB0aFJlbmRlcmJ1ZmZlcixlLCEwKSksbi5iaW5kRnJhbWVidWZmZXIoMzYxNjAsbnVsbCl9ZWxzZSBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IFdlYkdMTXVsdGlzYW1wbGVSZW5kZXJUYXJnZXQgY2FuIG9ubHkgYmUgdXNlZCB3aXRoIFdlYkdMMi4iKTtpZihoKXtuLmJpbmRUZXh0dXJlKDM0MDY3LHUuX193ZWJnbFRleHR1cmUpLGsoMzQwNjcsbCxtKTtmb3IobGV0IHQ9MDt0PDY7dCsrKU4oYy5fX3dlYmdsRnJhbWVidWZmZXJbdF0sZSxsLDM2MDY0LDM0MDY5K3QpO3kobCxtKSYmdigzNDA2NyxsLGUud2lkdGgsZS5oZWlnaHQpLG4uYmluZFRleHR1cmUoMzQwNjcsbnVsbCl9ZWxzZSBpZihkKXtjb25zdCB0PWUudGV4dHVyZTtmb3IobGV0IHI9MCxvPXQubGVuZ3RoO3I8bztyKyspe2NvbnN0IG89dFtyXSxhPWkuZ2V0KG8pO24uYmluZFRleHR1cmUoMzU1MyxhLl9fd2ViZ2xUZXh0dXJlKSxrKDM1NTMsbyxtKSxOKGMuX193ZWJnbEZyYW1lYnVmZmVyLGUsbywzNjA2NCtyLDM1NTMpLHkobyxtKSYmdigzNTUzLG8sZS53aWR0aCxlLmhlaWdodCl9bi5iaW5kVGV4dHVyZSgzNTUzLG51bGwpfWVsc2V7bGV0IHQ9MzU1MztpZihmKWlmKHMpe3Q9bC5pc0RhdGFUZXh0dXJlM0Q/MzI4Nzk6MzU4NjZ9ZWxzZSBjb25zb2xlLndhcm4oIlRIUkVFLkRhdGFUZXh0dXJlM0QgYW5kIFRIUkVFLkRhdGFUZXh0dXJlMkRBcnJheSBvbmx5IHN1cHBvcnRlZCB3aXRoIFdlYkdMMi4iKTtuLmJpbmRUZXh0dXJlKHQsdS5fX3dlYmdsVGV4dHVyZSksayh0LGwsbSksTihjLl9fd2ViZ2xGcmFtZWJ1ZmZlcixlLGwsMzYwNjQsdCkseShsLG0pJiZ2KHQsbCxlLndpZHRoLGUuaGVpZ2h0LGUuZGVwdGgpLG4uYmluZFRleHR1cmUodCxudWxsKX1lLmRlcHRoQnVmZmVyJiZSKGUpfSx0aGlzLnVwZGF0ZVJlbmRlclRhcmdldE1pcG1hcD1mdW5jdGlvbiBqKHQpe2NvbnN0IGU9Xyh0KXx8cyxyPSEwPT09dC5pc1dlYkdMTXVsdGlwbGVSZW5kZXJUYXJnZXRzP3QudGV4dHVyZTpbdC50ZXh0dXJlXTtmb3IobGV0IG89MCxhPXIubGVuZ3RoO288YTtvKyspe2NvbnN0IGE9cltvXTtpZih5KGEsZSkpe2NvbnN0IGU9dC5pc1dlYkdMQ3ViZVJlbmRlclRhcmdldD8zNDA2NzozNTUzLHI9aS5nZXQoYSkuX193ZWJnbFRleHR1cmU7bi5iaW5kVGV4dHVyZShlLHIpLHYoZSxhLHQud2lkdGgsdC5oZWlnaHQpLG4uYmluZFRleHR1cmUoZSxudWxsKX19fSx0aGlzLnVwZGF0ZU11bHRpc2FtcGxlUmVuZGVyVGFyZ2V0PWZ1bmN0aW9uIEcoZSl7aWYoZS5pc1dlYkdMTXVsdGlzYW1wbGVSZW5kZXJUYXJnZXQpaWYocyl7Y29uc3Qgcj1lLndpZHRoLG89ZS5oZWlnaHQ7bGV0IGE9MTYzODQ7ZS5kZXB0aEJ1ZmZlciYmKGF8PTI1NiksZS5zdGVuY2lsQnVmZmVyJiYoYXw9MTAyNCk7Y29uc3Qgcz1pLmdldChlKTtuLmJpbmRGcmFtZWJ1ZmZlcigzNjAwOCxzLl9fd2ViZ2xNdWx0aXNhbXBsZWRGcmFtZWJ1ZmZlciksbi5iaW5kRnJhbWVidWZmZXIoMzYwMDkscy5fX3dlYmdsRnJhbWVidWZmZXIpLHQuYmxpdEZyYW1lYnVmZmVyKDAsMCxyLG8sMCwwLHIsbyxhLDk3MjgpLG4uYmluZEZyYW1lYnVmZmVyKDM2MDA4LG51bGwpLG4uYmluZEZyYW1lYnVmZmVyKDM2MDA5LHMuX193ZWJnbE11bHRpc2FtcGxlZEZyYW1lYnVmZmVyKX1lbHNlIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogV2ViR0xNdWx0aXNhbXBsZVJlbmRlclRhcmdldCBjYW4gb25seSBiZSB1c2VkIHdpdGggV2ViR0wyLiIpfSx0aGlzLnNhZmVTZXRUZXh0dXJlMkQ9ZnVuY3Rpb24gVyh0LGUpe3QmJnQuaXNXZWJHTFJlbmRlclRhcmdldCYmKCExPT09eiYmKGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xUZXh0dXJlcy5zYWZlU2V0VGV4dHVyZTJEOiBkb24ndCB1c2UgcmVuZGVyIHRhcmdldHMgYXMgdGV4dHVyZXMuIFVzZSB0aGVpciAudGV4dHVyZSBwcm9wZXJ0eSBpbnN0ZWFkLiIpLHo9ITApLHQ9dC50ZXh0dXJlKSxFKHQsZSl9LHRoaXMuc2FmZVNldFRleHR1cmVDdWJlPWZ1bmN0aW9uIHEodCxlKXt0JiZ0LmlzV2ViR0xDdWJlUmVuZGVyVGFyZ2V0JiYoITE9PT1EJiYoY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFRleHR1cmVzLnNhZmVTZXRUZXh0dXJlQ3ViZTogZG9uJ3QgdXNlIGN1YmUgcmVuZGVyIHRhcmdldHMgYXMgdGV4dHVyZXMuIFVzZSB0aGVpciAudGV4dHVyZSBwcm9wZXJ0eSBpbnN0ZWFkLiIpLEQ9ITApLHQ9dC50ZXh0dXJlKSxUKHQsZSl9fWZ1bmN0aW9uIEo4dCh0LGUsbil7Y29uc3QgaT1uLmlzV2ViR0wyO3JldHVybntjb252ZXJ0OmZ1bmN0aW9uIHIodCl7bGV0IG47aWYodD09PWcydClyZXR1cm4gNTEyMTtpZigxMDE3PT09dClyZXR1cm4gMzI4MTk7aWYoMTAxOD09PXQpcmV0dXJuIDMyODIwO2lmKDEwMTk9PT10KXJldHVybiAzMzYzNTtpZigxMDEwPT09dClyZXR1cm4gNTEyMDtpZigxMDExPT09dClyZXR1cm4gNTEyMjtpZih0PT09XzJ0KXJldHVybiA1MTIzO2lmKDEwMTM9PT10KXJldHVybiA1MTI0O2lmKHQ9PT15MnQpcmV0dXJuIDUxMjU7aWYodD09PXYydClyZXR1cm4gNTEyNjtpZih0PT09YjJ0KXJldHVybiBpPzUxMzE6KG49ZS5nZXQoIk9FU190ZXh0dXJlX2hhbGZfZmxvYXQiKSxudWxsIT09bj9uLkhBTEZfRkxPQVRfT0VTOm51bGwpO2lmKDEwMjE9PT10KXJldHVybiA2NDA2O2lmKHQ9PT13MnQpcmV0dXJuIDY0MDc7aWYodD09PVMydClyZXR1cm4gNjQwODtpZigxMDI0PT09dClyZXR1cm4gNjQwOTtpZigxMDI1PT09dClyZXR1cm4gNjQxMDtpZih0PT09TTJ0KXJldHVybiA2NDAyO2lmKHQ9PT1FMnQpcmV0dXJuIDM0MDQxO2lmKDEwMjg9PT10KXJldHVybiA2NDAzO2lmKDEwMjk9PT10KXJldHVybiAzNjI0NDtpZigxMDMwPT09dClyZXR1cm4gMzMzMTk7aWYoMTAzMT09PXQpcmV0dXJuIDMzMzIwO2lmKDEwMzI9PT10KXJldHVybiAzNjI0ODtpZigxMDMzPT09dClyZXR1cm4gMzYyNDk7aWYodD09PVQydHx8dD09PUMydHx8dD09PUEydHx8dD09PWsydCl7aWYobj1lLmdldCgiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMiKSxudWxsPT09bilyZXR1cm4gbnVsbDtpZih0PT09VDJ0KXJldHVybiBuLkNPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQ7aWYodD09PUMydClyZXR1cm4gbi5DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVDtpZih0PT09QTJ0KXJldHVybiBuLkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfRVhUO2lmKHQ9PT1rMnQpcmV0dXJuIG4uQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9FWFR9aWYodD09PUwydHx8dD09PVAydHx8dD09PU4ydHx8dD09PUkydCl7aWYobj1lLmdldCgiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3B2cnRjIiksbnVsbD09PW4pcmV0dXJuIG51bGw7aWYodD09PUwydClyZXR1cm4gbi5DT01QUkVTU0VEX1JHQl9QVlJUQ180QlBQVjFfSU1HO2lmKHQ9PT1QMnQpcmV0dXJuIG4uQ09NUFJFU1NFRF9SR0JfUFZSVENfMkJQUFYxX0lNRztpZih0PT09TjJ0KXJldHVybiBuLkNPTVBSRVNTRURfUkdCQV9QVlJUQ180QlBQVjFfSU1HO2lmKHQ9PT1JMnQpcmV0dXJuIG4uQ09NUFJFU1NFRF9SR0JBX1BWUlRDXzJCUFBWMV9JTUd9aWYoMzYxOTY9PT10KXJldHVybiBuPWUuZ2V0KCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfZXRjMSIpLG51bGwhPT1uP24uQ09NUFJFU1NFRF9SR0JfRVRDMV9XRUJHTDpudWxsO2lmKCh0PT09UjJ0fHx0PT09TzJ0KSYmKG49ZS5nZXQoIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9ldGMiKSxudWxsIT09bikpe2lmKHQ9PT1SMnQpcmV0dXJuIG4uQ09NUFJFU1NFRF9SR0I4X0VUQzI7aWYodD09PU8ydClyZXR1cm4gbi5DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDfXJldHVybiAzNzgwOD09PXR8fDM3ODA5PT09dHx8Mzc4MTA9PT10fHwzNzgxMT09PXR8fDM3ODEyPT09dHx8Mzc4MTM9PT10fHwzNzgxND09PXR8fDM3ODE1PT09dHx8Mzc4MTY9PT10fHwzNzgxNz09PXR8fDM3ODE4PT09dHx8Mzc4MTk9PT10fHwzNzgyMD09PXR8fDM3ODIxPT09dHx8Mzc4NDA9PT10fHwzNzg0MT09PXR8fDM3ODQyPT09dHx8Mzc4NDM9PT10fHwzNzg0ND09PXR8fDM3ODQ1PT09dHx8Mzc4NDY9PT10fHwzNzg0Nz09PXR8fDM3ODQ4PT09dHx8Mzc4NDk9PT10fHwzNzg1MD09PXR8fDM3ODUxPT09dHx8Mzc4NTI9PT10fHwzNzg1Mz09PXQ/KG49ZS5nZXQoIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9hc3RjIiksbnVsbCE9PW4/dDpudWxsKTozNjQ5Mj09PXQ/KG49ZS5nZXQoIkVYVF90ZXh0dXJlX2NvbXByZXNzaW9uX2JwdGMiKSxudWxsIT09bj90Om51bGwpOnQ9PT14MnQ/aT8zNDA0Mjoobj1lLmdldCgiV0VCR0xfZGVwdGhfdGV4dHVyZSIpLG51bGwhPT1uP24uVU5TSUdORURfSU5UXzI0XzhfV0VCR0w6bnVsbCk6dm9pZCAwfX19Y2xhc3MgUTh0IGV4dGVuZHMgcjZ0e2NvbnN0cnVjdG9yKHQ9W10pe3N1cGVyKCksdGhpcy5jYW1lcmFzPXR9fVE4dC5wcm90b3R5cGUuaXNBcnJheUNhbWVyYT0hMDtjbGFzcyB0N3QgZXh0ZW5kcyBWM3R7Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMudHlwZT0iR3JvdXAifX10N3QucHJvdG90eXBlLmlzR3JvdXA9ITA7Y29uc3QgZTd0PXt0eXBlOiJtb3ZlIn07Y2xhc3Mgbjd0e2NvbnN0cnVjdG9yKCl7dGhpcy5fdGFyZ2V0UmF5PW51bGwsdGhpcy5fZ3JpcD1udWxsLHRoaXMuX2hhbmQ9bnVsbH1nZXRIYW5kU3BhY2UoKXtyZXR1cm4gbnVsbD09PXRoaXMuX2hhbmQmJih0aGlzLl9oYW5kPW5ldyB0N3QsdGhpcy5faGFuZC5tYXRyaXhBdXRvVXBkYXRlPSExLHRoaXMuX2hhbmQudmlzaWJsZT0hMSx0aGlzLl9oYW5kLmpvaW50cz17fSx0aGlzLl9oYW5kLmlucHV0U3RhdGU9e3BpbmNoaW5nOiExfSksdGhpcy5faGFuZH1nZXRUYXJnZXRSYXlTcGFjZSgpe3JldHVybiBudWxsPT09dGhpcy5fdGFyZ2V0UmF5JiYodGhpcy5fdGFyZ2V0UmF5PW5ldyB0N3QsdGhpcy5fdGFyZ2V0UmF5Lm1hdHJpeEF1dG9VcGRhdGU9ITEsdGhpcy5fdGFyZ2V0UmF5LnZpc2libGU9ITEsdGhpcy5fdGFyZ2V0UmF5Lmhhc0xpbmVhclZlbG9jaXR5PSExLHRoaXMuX3RhcmdldFJheS5saW5lYXJWZWxvY2l0eT1uZXcgSDV0LHRoaXMuX3RhcmdldFJheS5oYXNBbmd1bGFyVmVsb2NpdHk9ITEsdGhpcy5fdGFyZ2V0UmF5LmFuZ3VsYXJWZWxvY2l0eT1uZXcgSDV0KSx0aGlzLl90YXJnZXRSYXl9Z2V0R3JpcFNwYWNlKCl7cmV0dXJuIG51bGw9PT10aGlzLl9ncmlwJiYodGhpcy5fZ3JpcD1uZXcgdDd0LHRoaXMuX2dyaXAubWF0cml4QXV0b1VwZGF0ZT0hMSx0aGlzLl9ncmlwLnZpc2libGU9ITEsdGhpcy5fZ3JpcC5oYXNMaW5lYXJWZWxvY2l0eT0hMSx0aGlzLl9ncmlwLmxpbmVhclZlbG9jaXR5PW5ldyBINXQsdGhpcy5fZ3JpcC5oYXNBbmd1bGFyVmVsb2NpdHk9ITEsdGhpcy5fZ3JpcC5hbmd1bGFyVmVsb2NpdHk9bmV3IEg1dCksdGhpcy5fZ3JpcH1kaXNwYXRjaEV2ZW50KHQpe3JldHVybiBudWxsIT09dGhpcy5fdGFyZ2V0UmF5JiZ0aGlzLl90YXJnZXRSYXkuZGlzcGF0Y2hFdmVudCh0KSxudWxsIT09dGhpcy5fZ3JpcCYmdGhpcy5fZ3JpcC5kaXNwYXRjaEV2ZW50KHQpLG51bGwhPT10aGlzLl9oYW5kJiZ0aGlzLl9oYW5kLmRpc3BhdGNoRXZlbnQodCksdGhpc31kaXNjb25uZWN0KHQpe3JldHVybiB0aGlzLmRpc3BhdGNoRXZlbnQoe3R5cGU6ImRpc2Nvbm5lY3RlZCIsZGF0YTp0fSksbnVsbCE9PXRoaXMuX3RhcmdldFJheSYmKHRoaXMuX3RhcmdldFJheS52aXNpYmxlPSExKSxudWxsIT09dGhpcy5fZ3JpcCYmKHRoaXMuX2dyaXAudmlzaWJsZT0hMSksbnVsbCE9PXRoaXMuX2hhbmQmJih0aGlzLl9oYW5kLnZpc2libGU9ITEpLHRoaXN9dXBkYXRlKHQsZSxuKXtsZXQgaT1udWxsLHI9bnVsbCxvPW51bGw7Y29uc3QgYT10aGlzLl90YXJnZXRSYXkscz10aGlzLl9ncmlwLGw9dGhpcy5faGFuZDtpZih0JiYidmlzaWJsZS1ibHVycmVkIiE9PWUuc2Vzc2lvbi52aXNpYmlsaXR5U3RhdGUpaWYobnVsbCE9PWEmJihpPWUuZ2V0UG9zZSh0LnRhcmdldFJheVNwYWNlLG4pLG51bGwhPT1pJiYoYS5tYXRyaXguZnJvbUFycmF5KGkudHJhbnNmb3JtLm1hdHJpeCksYS5tYXRyaXguZGVjb21wb3NlKGEucG9zaXRpb24sYS5yb3RhdGlvbixhLnNjYWxlKSxpLmxpbmVhclZlbG9jaXR5PyhhLmhhc0xpbmVhclZlbG9jaXR5PSEwLGEubGluZWFyVmVsb2NpdHkuY29weShpLmxpbmVhclZlbG9jaXR5KSk6YS5oYXNMaW5lYXJWZWxvY2l0eT0hMSxpLmFuZ3VsYXJWZWxvY2l0eT8oYS5oYXNBbmd1bGFyVmVsb2NpdHk9ITAsYS5hbmd1bGFyVmVsb2NpdHkuY29weShpLmFuZ3VsYXJWZWxvY2l0eSkpOmEuaGFzQW5ndWxhclZlbG9jaXR5PSExLHRoaXMuZGlzcGF0Y2hFdmVudChlN3QpKSksbCYmdC5oYW5kKXtvPSEwO2Zvcihjb25zdCBpIG9mIHQuaGFuZC52YWx1ZXMoKSl7Y29uc3QgdD1lLmdldEpvaW50UG9zZShpLG4pO2lmKHZvaWQgMD09PWwuam9pbnRzW2kuam9pbnROYW1lXSl7Y29uc3QgdD1uZXcgdDd0O3QubWF0cml4QXV0b1VwZGF0ZT0hMSx0LnZpc2libGU9ITEsbC5qb2ludHNbaS5qb2ludE5hbWVdPXQsbC5hZGQodCl9Y29uc3Qgcj1sLmpvaW50c1tpLmpvaW50TmFtZV07bnVsbCE9PXQmJihyLm1hdHJpeC5mcm9tQXJyYXkodC50cmFuc2Zvcm0ubWF0cml4KSxyLm1hdHJpeC5kZWNvbXBvc2Uoci5wb3NpdGlvbixyLnJvdGF0aW9uLHIuc2NhbGUpLHIuam9pbnRSYWRpdXM9dC5yYWRpdXMpLHIudmlzaWJsZT1udWxsIT09dH1jb25zdCBpPWwuam9pbnRzWyJpbmRleC1maW5nZXItdGlwIl0ucG9zaXRpb24uZGlzdGFuY2VUbyhsLmpvaW50c1sidGh1bWItdGlwIl0ucG9zaXRpb24pLHI9LjAyLGE9LjAwNTtsLmlucHV0U3RhdGUucGluY2hpbmcmJmk+cithPyhsLmlucHV0U3RhdGUucGluY2hpbmc9ITEsdGhpcy5kaXNwYXRjaEV2ZW50KHt0eXBlOiJwaW5jaGVuZCIsaGFuZGVkbmVzczp0LmhhbmRlZG5lc3MsdGFyZ2V0OnRoaXN9KSk6IWwuaW5wdXRTdGF0ZS5waW5jaGluZyYmaTw9ci1hJiYobC5pbnB1dFN0YXRlLnBpbmNoaW5nPSEwLHRoaXMuZGlzcGF0Y2hFdmVudCh7dHlwZToicGluY2hzdGFydCIsaGFuZGVkbmVzczp0LmhhbmRlZG5lc3MsdGFyZ2V0OnRoaXN9KSl9ZWxzZSBudWxsIT09cyYmdC5ncmlwU3BhY2UmJihyPWUuZ2V0UG9zZSh0LmdyaXBTcGFjZSxuKSxudWxsIT09ciYmKHMubWF0cml4LmZyb21BcnJheShyLnRyYW5zZm9ybS5tYXRyaXgpLHMubWF0cml4LmRlY29tcG9zZShzLnBvc2l0aW9uLHMucm90YXRpb24scy5zY2FsZSksci5saW5lYXJWZWxvY2l0eT8ocy5oYXNMaW5lYXJWZWxvY2l0eT0hMCxzLmxpbmVhclZlbG9jaXR5LmNvcHkoci5saW5lYXJWZWxvY2l0eSkpOnMuaGFzTGluZWFyVmVsb2NpdHk9ITEsci5hbmd1bGFyVmVsb2NpdHk/KHMuaGFzQW5ndWxhclZlbG9jaXR5PSEwLHMuYW5ndWxhclZlbG9jaXR5LmNvcHkoci5hbmd1bGFyVmVsb2NpdHkpKTpzLmhhc0FuZ3VsYXJWZWxvY2l0eT0hMSkpO3JldHVybiBudWxsIT09YSYmKGEudmlzaWJsZT1udWxsIT09aSksbnVsbCE9PXMmJihzLnZpc2libGU9bnVsbCE9PXIpLG51bGwhPT1sJiYobC52aXNpYmxlPW51bGwhPT1vKSx0aGlzfX1jbGFzcyBpN3QgZXh0ZW5kcyBlNXR7Y29uc3RydWN0b3IodCxlKXtzdXBlcigpO2NvbnN0IG49dGhpcyxpPXQuc3RhdGU7bGV0IHI9bnVsbCxvPTEsYT1udWxsLHM9ImxvY2FsLWZsb29yIixsPW51bGwsYz1udWxsLHU9bnVsbCxoPW51bGwsZD1udWxsO2NvbnN0IHA9W10sZj1uZXcgTWFwLG09bmV3IHI2dDttLmxheWVycy5lbmFibGUoMSksbS52aWV3cG9ydD1uZXcgUjV0O2NvbnN0IGc9bmV3IHI2dDtnLmxheWVycy5lbmFibGUoMiksZy52aWV3cG9ydD1uZXcgUjV0O2NvbnN0IF89W20sZ10seT1uZXcgUTh0O3kubGF5ZXJzLmVuYWJsZSgxKSx5LmxheWVycy5lbmFibGUoMik7bGV0IHY9bnVsbCxiPW51bGw7ZnVuY3Rpb24geCh0KXtjb25zdCBlPWYuZ2V0KHQuaW5wdXRTb3VyY2UpO2UmJmUuZGlzcGF0Y2hFdmVudCh7dHlwZTp0LnR5cGUsZGF0YTp0LmlucHV0U291cmNlfSl9ZnVuY3Rpb24gdygpe2YuZm9yRWFjaCgoZnVuY3Rpb24odCxlKXt0LmRpc2Nvbm5lY3QoZSl9KSksZi5jbGVhcigpLHY9bnVsbCxiPW51bGwsaS5iaW5kWFJGcmFtZWJ1ZmZlcihudWxsKSx0LnNldFJlbmRlclRhcmdldCh0LmdldFJlbmRlclRhcmdldCgpKSxBLnN0b3AoKSxuLmlzUHJlc2VudGluZz0hMSxuLmRpc3BhdGNoRXZlbnQoe3R5cGU6InNlc3Npb25lbmQifSl9ZnVuY3Rpb24gUyh0KXtjb25zdCBlPXIuaW5wdXRTb3VyY2VzO2ZvcihsZXQgdD0wO3Q8cC5sZW5ndGg7dCsrKWYuc2V0KGVbdF0scFt0XSk7Zm9yKGxldCBlPTA7ZTx0LnJlbW92ZWQubGVuZ3RoO2UrKyl7Y29uc3Qgbj10LnJlbW92ZWRbZV0saT1mLmdldChuKTtpJiYoaS5kaXNwYXRjaEV2ZW50KHt0eXBlOiJkaXNjb25uZWN0ZWQiLGRhdGE6bn0pLGYuZGVsZXRlKG4pKX1mb3IobGV0IGU9MDtlPHQuYWRkZWQubGVuZ3RoO2UrKyl7Y29uc3Qgbj10LmFkZGVkW2VdLGk9Zi5nZXQobik7aSYmaS5kaXNwYXRjaEV2ZW50KHt0eXBlOiJjb25uZWN0ZWQiLGRhdGE6bn0pfX10aGlzLmNhbWVyYUF1dG9VcGRhdGU9ITAsdGhpcy5lbmFibGVkPSExLHRoaXMuaXNQcmVzZW50aW5nPSExLHRoaXMuZ2V0Q29udHJvbGxlcj1mdW5jdGlvbih0KXtsZXQgZT1wW3RdO3JldHVybiB2b2lkIDA9PT1lJiYoZT1uZXcgbjd0LHBbdF09ZSksZS5nZXRUYXJnZXRSYXlTcGFjZSgpfSx0aGlzLmdldENvbnRyb2xsZXJHcmlwPWZ1bmN0aW9uKHQpe2xldCBlPXBbdF07cmV0dXJuIHZvaWQgMD09PWUmJihlPW5ldyBuN3QscFt0XT1lKSxlLmdldEdyaXBTcGFjZSgpfSx0aGlzLmdldEhhbmQ9ZnVuY3Rpb24odCl7bGV0IGU9cFt0XTtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9bmV3IG43dCxwW3RdPWUpLGUuZ2V0SGFuZFNwYWNlKCl9LHRoaXMuc2V0RnJhbWVidWZmZXJTY2FsZUZhY3Rvcj1mdW5jdGlvbih0KXtvPXQsITA9PT1uLmlzUHJlc2VudGluZyYmY29uc29sZS53YXJuKCJUSFJFRS5XZWJYUk1hbmFnZXI6IENhbm5vdCBjaGFuZ2UgZnJhbWVidWZmZXIgc2NhbGUgd2hpbGUgcHJlc2VudGluZy4iKX0sdGhpcy5zZXRSZWZlcmVuY2VTcGFjZVR5cGU9ZnVuY3Rpb24odCl7cz10LCEwPT09bi5pc1ByZXNlbnRpbmcmJmNvbnNvbGUud2FybigiVEhSRUUuV2ViWFJNYW5hZ2VyOiBDYW5ub3QgY2hhbmdlIHJlZmVyZW5jZSBzcGFjZSB0eXBlIHdoaWxlIHByZXNlbnRpbmcuIil9LHRoaXMuZ2V0UmVmZXJlbmNlU3BhY2U9ZnVuY3Rpb24oKXtyZXR1cm4gYX0sdGhpcy5nZXRTZXNzaW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHJ9LHRoaXMuc2V0U2Vzc2lvbj1hc3luYyBmdW5jdGlvbih0KXtpZihyPXQsbnVsbCE9PXIpe3IuYWRkRXZlbnRMaXN0ZW5lcigic2VsZWN0Iix4KSxyLmFkZEV2ZW50TGlzdGVuZXIoInNlbGVjdHN0YXJ0Iix4KSxyLmFkZEV2ZW50TGlzdGVuZXIoInNlbGVjdGVuZCIseCksci5hZGRFdmVudExpc3RlbmVyKCJzcXVlZXplIix4KSxyLmFkZEV2ZW50TGlzdGVuZXIoInNxdWVlemVzdGFydCIseCksci5hZGRFdmVudExpc3RlbmVyKCJzcXVlZXplZW5kIix4KSxyLmFkZEV2ZW50TGlzdGVuZXIoImVuZCIsdyksci5hZGRFdmVudExpc3RlbmVyKCJpbnB1dHNvdXJjZXNjaGFuZ2UiLFMpO2NvbnN0IHQ9ZS5nZXRDb250ZXh0QXR0cmlidXRlcygpO2lmKCEwIT09dC54ckNvbXBhdGlibGUmJmF3YWl0IGUubWFrZVhSQ29tcGF0aWJsZSgpLHZvaWQgMD09PXIucmVuZGVyU3RhdGUubGF5ZXJzKXtkPW5ldyBYUldlYkdMTGF5ZXIocixlLHthbnRpYWxpYXM6dC5hbnRpYWxpYXMsYWxwaGE6dC5hbHBoYSxkZXB0aDp0LmRlcHRoLHN0ZW5jaWw6dC5zdGVuY2lsLGZyYW1lYnVmZmVyU2NhbGVGYWN0b3I6b30pLHIudXBkYXRlUmVuZGVyU3RhdGUoe2Jhc2VMYXllcjpkfSl9ZWxzZXtsZXQgbj0wO2lmKHQuYW50aWFsaWFzKXtkPW5ldyBYUldlYkdMTGF5ZXIocixlLHthbnRpYWxpYXM6ITAsYWxwaGE6dC5hbHBoYSxkZXB0aDp0LmRlcHRoLHN0ZW5jaWw6dC5zdGVuY2lsLGZyYW1lYnVmZmVyU2NhbGVGYWN0b3I6b30pLHIudXBkYXRlUmVuZGVyU3RhdGUoe2xheWVyczpbZF19KX1lbHNle3QuZGVwdGgmJihuPXQuc3RlbmNpbD8zNDA0MTo2NDAyKTtjb25zdCBpPXtjb2xvckZvcm1hdDp0LmFscGhhPzY0MDg6NjQwNyxkZXB0aEZvcm1hdDpuLHNjYWxlRmFjdG9yOm99O2M9bmV3IFhSV2ViR0xCaW5kaW5nKHIsZSksaD1jLmNyZWF0ZVByb2plY3Rpb25MYXllcihpKSx1PWUuY3JlYXRlRnJhbWVidWZmZXIoKSxyLnVwZGF0ZVJlbmRlclN0YXRlKHtsYXllcnM6W2hdfSl9fWE9YXdhaXQgci5yZXF1ZXN0UmVmZXJlbmNlU3BhY2UocyksQS5zZXRDb250ZXh0KHIpLEEuc3RhcnQoKSxuLmlzUHJlc2VudGluZz0hMCxuLmRpc3BhdGNoRXZlbnQoe3R5cGU6InNlc3Npb25zdGFydCJ9KX19O2NvbnN0IE09bmV3IEg1dCxFPW5ldyBINXQ7ZnVuY3Rpb24gVCh0LGUpe251bGw9PT1lP3QubWF0cml4V29ybGQuY29weSh0Lm1hdHJpeCk6dC5tYXRyaXhXb3JsZC5tdWx0aXBseU1hdHJpY2VzKGUubWF0cml4V29ybGQsdC5tYXRyaXgpLHQubWF0cml4V29ybGRJbnZlcnNlLmNvcHkodC5tYXRyaXhXb3JsZCkuaW52ZXJ0KCl9dGhpcy51cGRhdGVDYW1lcmE9ZnVuY3Rpb24odCl7aWYobnVsbD09PXIpcmV0dXJuO3kubmVhcj1nLm5lYXI9bS5uZWFyPXQubmVhcix5LmZhcj1nLmZhcj1tLmZhcj10LmZhcix2PT09eS5uZWFyJiZiPT09eS5mYXJ8fChyLnVwZGF0ZVJlbmRlclN0YXRlKHtkZXB0aE5lYXI6eS5uZWFyLGRlcHRoRmFyOnkuZmFyfSksdj15Lm5lYXIsYj15LmZhcik7Y29uc3QgZT10LnBhcmVudCxuPXkuY2FtZXJhcztUKHksZSk7Zm9yKGxldCB0PTA7dDxuLmxlbmd0aDt0KyspVChuW3RdLGUpO3kubWF0cml4V29ybGQuZGVjb21wb3NlKHkucG9zaXRpb24seS5xdWF0ZXJuaW9uLHkuc2NhbGUpLHQucG9zaXRpb24uY29weSh5LnBvc2l0aW9uKSx0LnF1YXRlcm5pb24uY29weSh5LnF1YXRlcm5pb24pLHQuc2NhbGUuY29weSh5LnNjYWxlKSx0Lm1hdHJpeC5jb3B5KHkubWF0cml4KSx0Lm1hdHJpeFdvcmxkLmNvcHkoeS5tYXRyaXhXb3JsZCk7Y29uc3QgaT10LmNoaWxkcmVuO2ZvcihsZXQgdD0wLGU9aS5sZW5ndGg7dDxlO3QrKylpW3RdLnVwZGF0ZU1hdHJpeFdvcmxkKCEwKTsyPT09bi5sZW5ndGg/KGZ1bmN0aW9uIG8odCxlLG4pe00uc2V0RnJvbU1hdHJpeFBvc2l0aW9uKGUubWF0cml4V29ybGQpLEUuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKG4ubWF0cml4V29ybGQpO2NvbnN0IGk9TS5kaXN0YW5jZVRvKEUpLHI9ZS5wcm9qZWN0aW9uTWF0cml4LmVsZW1lbnRzLG89bi5wcm9qZWN0aW9uTWF0cml4LmVsZW1lbnRzLGE9clsxNF0vKHJbMTBdLTEpLHM9clsxNF0vKHJbMTBdKzEpLGw9KHJbOV0rMSkvcls1XSxjPShyWzldLTEpL3JbNV0sdT0ocls4XS0xKS9yWzBdLGg9KG9bOF0rMSkvb1swXSxkPWEqdSxwPWEqaCxmPWkvKC11K2gpLG09ZiotdTtlLm1hdHJpeFdvcmxkLmRlY29tcG9zZSh0LnBvc2l0aW9uLHQucXVhdGVybmlvbix0LnNjYWxlKSx0LnRyYW5zbGF0ZVgobSksdC50cmFuc2xhdGVaKGYpLHQubWF0cml4V29ybGQuY29tcG9zZSh0LnBvc2l0aW9uLHQucXVhdGVybmlvbix0LnNjYWxlKSx0Lm1hdHJpeFdvcmxkSW52ZXJzZS5jb3B5KHQubWF0cml4V29ybGQpLmludmVydCgpO2NvbnN0IGc9YStmLF89cytmO3QucHJvamVjdGlvbk1hdHJpeC5tYWtlUGVyc3BlY3RpdmUoZC1tLHArKGktbSksbCpzL18qZyxjKnMvXypnLGcsXyl9KSh5LG0sZyk6eS5wcm9qZWN0aW9uTWF0cml4LmNvcHkobS5wcm9qZWN0aW9uTWF0cml4KX0sdGhpcy5nZXRDYW1lcmE9ZnVuY3Rpb24oKXtyZXR1cm4geX0sdGhpcy5nZXRGb3ZlYXRpb249ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbCE9PWg/aC5maXhlZEZvdmVhdGlvbjpudWxsIT09ZD9kLmZpeGVkRm92ZWF0aW9uOnZvaWQgMH0sdGhpcy5zZXRGb3ZlYXRpb249ZnVuY3Rpb24odCl7bnVsbCE9PWgmJihoLmZpeGVkRm92ZWF0aW9uPXQpLG51bGwhPT1kJiZ2b2lkIDAhPT1kLmZpeGVkRm92ZWF0aW9uJiYoZC5maXhlZEZvdmVhdGlvbj10KX07bGV0IEM9bnVsbDtjb25zdCBBPW5ldyBnNnQ7QS5zZXRBbmltYXRpb25Mb29wKChmdW5jdGlvbiBrKHQsbil7aWYobD1uLmdldFZpZXdlclBvc2UoYSksbnVsbCE9PWwpe2NvbnN0IHQ9bC52aWV3cztudWxsIT09ZCYmaS5iaW5kWFJGcmFtZWJ1ZmZlcihkLmZyYW1lYnVmZmVyKTtsZXQgbj0hMTt0Lmxlbmd0aCE9PXkuY2FtZXJhcy5sZW5ndGgmJih5LmNhbWVyYXMubGVuZ3RoPTAsbj0hMCk7Zm9yKGxldCByPTA7cjx0Lmxlbmd0aDtyKyspe2NvbnN0IG89dFtyXTtsZXQgYT1udWxsO2lmKG51bGwhPT1kKWE9ZC5nZXRWaWV3cG9ydChvKTtlbHNle2NvbnN0IHQ9Yy5nZXRWaWV3U3ViSW1hZ2UoaCxvKTtpLmJpbmRYUkZyYW1lYnVmZmVyKHUpLHZvaWQgMCE9PXQuZGVwdGhTdGVuY2lsVGV4dHVyZSYmZS5mcmFtZWJ1ZmZlclRleHR1cmUyRCgzNjE2MCwzNjA5NiwzNTUzLHQuZGVwdGhTdGVuY2lsVGV4dHVyZSwwKSxlLmZyYW1lYnVmZmVyVGV4dHVyZTJEKDM2MTYwLDM2MDY0LDM1NTMsdC5jb2xvclRleHR1cmUsMCksYT10LnZpZXdwb3J0fWNvbnN0IHM9X1tyXTtzLm1hdHJpeC5mcm9tQXJyYXkoby50cmFuc2Zvcm0ubWF0cml4KSxzLnByb2plY3Rpb25NYXRyaXguZnJvbUFycmF5KG8ucHJvamVjdGlvbk1hdHJpeCkscy52aWV3cG9ydC5zZXQoYS54LGEueSxhLndpZHRoLGEuaGVpZ2h0KSwwPT09ciYmeS5tYXRyaXguY29weShzLm1hdHJpeCksITA9PT1uJiZ5LmNhbWVyYXMucHVzaChzKX19Y29uc3Qgbz1yLmlucHV0U291cmNlcztmb3IobGV0IHQ9MDt0PHAubGVuZ3RoO3QrKyl7cFt0XS51cGRhdGUob1t0XSxuLGEpfUMmJkModCxuKX0pKSx0aGlzLnNldEFuaW1hdGlvbkxvb3A9ZnVuY3Rpb24odCl7Qz10fSx0aGlzLmRpc3Bvc2U9ZnVuY3Rpb24oKXt9fX1mdW5jdGlvbiByN3QodCl7ZnVuY3Rpb24gZShlLG4pe2Uub3BhY2l0eS52YWx1ZT1uLm9wYWNpdHksbi5jb2xvciYmZS5kaWZmdXNlLnZhbHVlLmNvcHkobi5jb2xvciksbi5lbWlzc2l2ZSYmZS5lbWlzc2l2ZS52YWx1ZS5jb3B5KG4uZW1pc3NpdmUpLm11bHRpcGx5U2NhbGFyKG4uZW1pc3NpdmVJbnRlbnNpdHkpLG4ubWFwJiYoZS5tYXAudmFsdWU9bi5tYXApLG4uYWxwaGFNYXAmJihlLmFscGhhTWFwLnZhbHVlPW4uYWxwaGFNYXApLG4uc3BlY3VsYXJNYXAmJihlLnNwZWN1bGFyTWFwLnZhbHVlPW4uc3BlY3VsYXJNYXApO2NvbnN0IGk9dC5nZXQobikuZW52TWFwO2lmKGkpe2UuZW52TWFwLnZhbHVlPWksZS5mbGlwRW52TWFwLnZhbHVlPWkuaXNDdWJlVGV4dHVyZSYmITE9PT1pLmlzUmVuZGVyVGFyZ2V0VGV4dHVyZT8tMToxLGUucmVmbGVjdGl2aXR5LnZhbHVlPW4ucmVmbGVjdGl2aXR5LGUucmVmcmFjdGlvblJhdGlvLnZhbHVlPW4ucmVmcmFjdGlvblJhdGlvO2NvbnN0IHI9dC5nZXQoaSkuX19tYXhNaXBMZXZlbDt2b2lkIDAhPT1yJiYoZS5tYXhNaXBMZXZlbC52YWx1ZT1yKX1sZXQgcixvO24ubGlnaHRNYXAmJihlLmxpZ2h0TWFwLnZhbHVlPW4ubGlnaHRNYXAsZS5saWdodE1hcEludGVuc2l0eS52YWx1ZT1uLmxpZ2h0TWFwSW50ZW5zaXR5KSxuLmFvTWFwJiYoZS5hb01hcC52YWx1ZT1uLmFvTWFwLGUuYW9NYXBJbnRlbnNpdHkudmFsdWU9bi5hb01hcEludGVuc2l0eSksbi5tYXA/cj1uLm1hcDpuLnNwZWN1bGFyTWFwP3I9bi5zcGVjdWxhck1hcDpuLmRpc3BsYWNlbWVudE1hcD9yPW4uZGlzcGxhY2VtZW50TWFwOm4ubm9ybWFsTWFwP3I9bi5ub3JtYWxNYXA6bi5idW1wTWFwP3I9bi5idW1wTWFwOm4ucm91Z2huZXNzTWFwP3I9bi5yb3VnaG5lc3NNYXA6bi5tZXRhbG5lc3NNYXA/cj1uLm1ldGFsbmVzc01hcDpuLmFscGhhTWFwP3I9bi5hbHBoYU1hcDpuLmVtaXNzaXZlTWFwP3I9bi5lbWlzc2l2ZU1hcDpuLmNsZWFyY29hdE1hcD9yPW4uY2xlYXJjb2F0TWFwOm4uY2xlYXJjb2F0Tm9ybWFsTWFwP3I9bi5jbGVhcmNvYXROb3JtYWxNYXA6bi5jbGVhcmNvYXRSb3VnaG5lc3NNYXA/cj1uLmNsZWFyY29hdFJvdWdobmVzc01hcDpuLnNwZWN1bGFySW50ZW5zaXR5TWFwP3I9bi5zcGVjdWxhckludGVuc2l0eU1hcDpuLnNwZWN1bGFyVGludE1hcCYmKHI9bi5zcGVjdWxhclRpbnRNYXApLHZvaWQgMCE9PXImJihyLmlzV2ViR0xSZW5kZXJUYXJnZXQmJihyPXIudGV4dHVyZSksITA9PT1yLm1hdHJpeEF1dG9VcGRhdGUmJnIudXBkYXRlTWF0cml4KCksZS51dlRyYW5zZm9ybS52YWx1ZS5jb3B5KHIubWF0cml4KSksbi5hb01hcD9vPW4uYW9NYXA6bi5saWdodE1hcCYmKG89bi5saWdodE1hcCksdm9pZCAwIT09byYmKG8uaXNXZWJHTFJlbmRlclRhcmdldCYmKG89by50ZXh0dXJlKSwhMD09PW8ubWF0cml4QXV0b1VwZGF0ZSYmby51cGRhdGVNYXRyaXgoKSxlLnV2MlRyYW5zZm9ybS52YWx1ZS5jb3B5KG8ubWF0cml4KSl9ZnVuY3Rpb24gbihlLG4pe2Uucm91Z2huZXNzLnZhbHVlPW4ucm91Z2huZXNzLGUubWV0YWxuZXNzLnZhbHVlPW4ubWV0YWxuZXNzLG4ucm91Z2huZXNzTWFwJiYoZS5yb3VnaG5lc3NNYXAudmFsdWU9bi5yb3VnaG5lc3NNYXApLG4ubWV0YWxuZXNzTWFwJiYoZS5tZXRhbG5lc3NNYXAudmFsdWU9bi5tZXRhbG5lc3NNYXApLG4uZW1pc3NpdmVNYXAmJihlLmVtaXNzaXZlTWFwLnZhbHVlPW4uZW1pc3NpdmVNYXApLG4uYnVtcE1hcCYmKGUuYnVtcE1hcC52YWx1ZT1uLmJ1bXBNYXAsZS5idW1wU2NhbGUudmFsdWU9bi5idW1wU2NhbGUsMT09PW4uc2lkZSYmKGUuYnVtcFNjYWxlLnZhbHVlKj0tMSkpLG4ubm9ybWFsTWFwJiYoZS5ub3JtYWxNYXAudmFsdWU9bi5ub3JtYWxNYXAsZS5ub3JtYWxTY2FsZS52YWx1ZS5jb3B5KG4ubm9ybWFsU2NhbGUpLDE9PT1uLnNpZGUmJmUubm9ybWFsU2NhbGUudmFsdWUubmVnYXRlKCkpLG4uZGlzcGxhY2VtZW50TWFwJiYoZS5kaXNwbGFjZW1lbnRNYXAudmFsdWU9bi5kaXNwbGFjZW1lbnRNYXAsZS5kaXNwbGFjZW1lbnRTY2FsZS52YWx1ZT1uLmRpc3BsYWNlbWVudFNjYWxlLGUuZGlzcGxhY2VtZW50Qmlhcy52YWx1ZT1uLmRpc3BsYWNlbWVudEJpYXMpO3QuZ2V0KG4pLmVudk1hcCYmKGUuZW52TWFwSW50ZW5zaXR5LnZhbHVlPW4uZW52TWFwSW50ZW5zaXR5KX1yZXR1cm57cmVmcmVzaEZvZ1VuaWZvcm1zOmZ1bmN0aW9uIGkodCxlKXt0LmZvZ0NvbG9yLnZhbHVlLmNvcHkoZS5jb2xvciksZS5pc0ZvZz8odC5mb2dOZWFyLnZhbHVlPWUubmVhcix0LmZvZ0Zhci52YWx1ZT1lLmZhcik6ZS5pc0ZvZ0V4cDImJih0LmZvZ0RlbnNpdHkudmFsdWU9ZS5kZW5zaXR5KX0scmVmcmVzaE1hdGVyaWFsVW5pZm9ybXM6ZnVuY3Rpb24gcih0LGksbyxhLHMpe2kuaXNNZXNoQmFzaWNNYXRlcmlhbD9lKHQsaSk6aS5pc01lc2hMYW1iZXJ0TWF0ZXJpYWw/KGUodCxpKSwoZnVuY3Rpb24gbCh0LGUpe2UuZW1pc3NpdmVNYXAmJih0LmVtaXNzaXZlTWFwLnZhbHVlPWUuZW1pc3NpdmVNYXApfSkodCxpKSk6aS5pc01lc2hUb29uTWF0ZXJpYWw/KGUodCxpKSwoZnVuY3Rpb24gYyh0LGUpe2UuZ3JhZGllbnRNYXAmJih0LmdyYWRpZW50TWFwLnZhbHVlPWUuZ3JhZGllbnRNYXApO2UuZW1pc3NpdmVNYXAmJih0LmVtaXNzaXZlTWFwLnZhbHVlPWUuZW1pc3NpdmVNYXApO2UuYnVtcE1hcCYmKHQuYnVtcE1hcC52YWx1ZT1lLmJ1bXBNYXAsdC5idW1wU2NhbGUudmFsdWU9ZS5idW1wU2NhbGUsMT09PWUuc2lkZSYmKHQuYnVtcFNjYWxlLnZhbHVlKj0tMSkpO2Uubm9ybWFsTWFwJiYodC5ub3JtYWxNYXAudmFsdWU9ZS5ub3JtYWxNYXAsdC5ub3JtYWxTY2FsZS52YWx1ZS5jb3B5KGUubm9ybWFsU2NhbGUpLDE9PT1lLnNpZGUmJnQubm9ybWFsU2NhbGUudmFsdWUubmVnYXRlKCkpO2UuZGlzcGxhY2VtZW50TWFwJiYodC5kaXNwbGFjZW1lbnRNYXAudmFsdWU9ZS5kaXNwbGFjZW1lbnRNYXAsdC5kaXNwbGFjZW1lbnRTY2FsZS52YWx1ZT1lLmRpc3BsYWNlbWVudFNjYWxlLHQuZGlzcGxhY2VtZW50Qmlhcy52YWx1ZT1lLmRpc3BsYWNlbWVudEJpYXMpfSkodCxpKSk6aS5pc01lc2hQaG9uZ01hdGVyaWFsPyhlKHQsaSksKGZ1bmN0aW9uIHUodCxlKXt0LnNwZWN1bGFyLnZhbHVlLmNvcHkoZS5zcGVjdWxhciksdC5zaGluaW5lc3MudmFsdWU9TWF0aC5tYXgoZS5zaGluaW5lc3MsMWUtNCksZS5lbWlzc2l2ZU1hcCYmKHQuZW1pc3NpdmVNYXAudmFsdWU9ZS5lbWlzc2l2ZU1hcCk7ZS5idW1wTWFwJiYodC5idW1wTWFwLnZhbHVlPWUuYnVtcE1hcCx0LmJ1bXBTY2FsZS52YWx1ZT1lLmJ1bXBTY2FsZSwxPT09ZS5zaWRlJiYodC5idW1wU2NhbGUudmFsdWUqPS0xKSk7ZS5ub3JtYWxNYXAmJih0Lm5vcm1hbE1hcC52YWx1ZT1lLm5vcm1hbE1hcCx0Lm5vcm1hbFNjYWxlLnZhbHVlLmNvcHkoZS5ub3JtYWxTY2FsZSksMT09PWUuc2lkZSYmdC5ub3JtYWxTY2FsZS52YWx1ZS5uZWdhdGUoKSk7ZS5kaXNwbGFjZW1lbnRNYXAmJih0LmRpc3BsYWNlbWVudE1hcC52YWx1ZT1lLmRpc3BsYWNlbWVudE1hcCx0LmRpc3BsYWNlbWVudFNjYWxlLnZhbHVlPWUuZGlzcGxhY2VtZW50U2NhbGUsdC5kaXNwbGFjZW1lbnRCaWFzLnZhbHVlPWUuZGlzcGxhY2VtZW50Qmlhcyl9KSh0LGkpKTppLmlzTWVzaFN0YW5kYXJkTWF0ZXJpYWw/KGUodCxpKSxpLmlzTWVzaFBoeXNpY2FsTWF0ZXJpYWw/KGZ1bmN0aW9uIGgodCxlLGkpe24odCxlKSx0LnJlZmxlY3Rpdml0eS52YWx1ZT1lLnJlZmxlY3Rpdml0eSx0LmNsZWFyY29hdC52YWx1ZT1lLmNsZWFyY29hdCx0LmNsZWFyY29hdFJvdWdobmVzcy52YWx1ZT1lLmNsZWFyY29hdFJvdWdobmVzcyxlLnNoZWVuJiZ0LnNoZWVuLnZhbHVlLmNvcHkoZS5zaGVlbik7ZS5jbGVhcmNvYXRNYXAmJih0LmNsZWFyY29hdE1hcC52YWx1ZT1lLmNsZWFyY29hdE1hcCk7ZS5jbGVhcmNvYXRSb3VnaG5lc3NNYXAmJih0LmNsZWFyY29hdFJvdWdobmVzc01hcC52YWx1ZT1lLmNsZWFyY29hdFJvdWdobmVzc01hcCk7ZS5jbGVhcmNvYXROb3JtYWxNYXAmJih0LmNsZWFyY29hdE5vcm1hbFNjYWxlLnZhbHVlLmNvcHkoZS5jbGVhcmNvYXROb3JtYWxTY2FsZSksdC5jbGVhcmNvYXROb3JtYWxNYXAudmFsdWU9ZS5jbGVhcmNvYXROb3JtYWxNYXAsMT09PWUuc2lkZSYmdC5jbGVhcmNvYXROb3JtYWxTY2FsZS52YWx1ZS5uZWdhdGUoKSk7dC50cmFuc21pc3Npb24udmFsdWU9ZS50cmFuc21pc3Npb24sZS50cmFuc21pc3Npb25NYXAmJih0LnRyYW5zbWlzc2lvbk1hcC52YWx1ZT1lLnRyYW5zbWlzc2lvbk1hcCk7ZS50cmFuc21pc3Npb24+MCYmKHQudHJhbnNtaXNzaW9uU2FtcGxlck1hcC52YWx1ZT1pLnRleHR1cmUsdC50cmFuc21pc3Npb25TYW1wbGVyU2l6ZS52YWx1ZS5zZXQoaS53aWR0aCxpLmhlaWdodCkpO3QudGhpY2tuZXNzLnZhbHVlPWUudGhpY2tuZXNzLGUudGhpY2tuZXNzTWFwJiYodC50aGlja25lc3NNYXAudmFsdWU9ZS50aGlja25lc3NNYXApO3QuYXR0ZW51YXRpb25EaXN0YW5jZS52YWx1ZT1lLmF0dGVudWF0aW9uRGlzdGFuY2UsdC5hdHRlbnVhdGlvblRpbnQudmFsdWUuY29weShlLmF0dGVudWF0aW9uVGludCksdC5zcGVjdWxhckludGVuc2l0eS52YWx1ZT1lLnNwZWN1bGFySW50ZW5zaXR5LHQuc3BlY3VsYXJUaW50LnZhbHVlLmNvcHkoZS5zcGVjdWxhclRpbnQpLGUuc3BlY3VsYXJJbnRlbnNpdHlNYXAmJih0LnNwZWN1bGFySW50ZW5zaXR5TWFwLnZhbHVlPWUuc3BlY3VsYXJJbnRlbnNpdHlNYXApO2Uuc3BlY3VsYXJUaW50TWFwJiYodC5zcGVjdWxhclRpbnRNYXAudmFsdWU9ZS5zcGVjdWxhclRpbnRNYXApfSkodCxpLHMpOm4odCxpKSk6aS5pc01lc2hNYXRjYXBNYXRlcmlhbD8oZSh0LGkpLChmdW5jdGlvbiBkKHQsZSl7ZS5tYXRjYXAmJih0Lm1hdGNhcC52YWx1ZT1lLm1hdGNhcCk7ZS5idW1wTWFwJiYodC5idW1wTWFwLnZhbHVlPWUuYnVtcE1hcCx0LmJ1bXBTY2FsZS52YWx1ZT1lLmJ1bXBTY2FsZSwxPT09ZS5zaWRlJiYodC5idW1wU2NhbGUudmFsdWUqPS0xKSk7ZS5ub3JtYWxNYXAmJih0Lm5vcm1hbE1hcC52YWx1ZT1lLm5vcm1hbE1hcCx0Lm5vcm1hbFNjYWxlLnZhbHVlLmNvcHkoZS5ub3JtYWxTY2FsZSksMT09PWUuc2lkZSYmdC5ub3JtYWxTY2FsZS52YWx1ZS5uZWdhdGUoKSk7ZS5kaXNwbGFjZW1lbnRNYXAmJih0LmRpc3BsYWNlbWVudE1hcC52YWx1ZT1lLmRpc3BsYWNlbWVudE1hcCx0LmRpc3BsYWNlbWVudFNjYWxlLnZhbHVlPWUuZGlzcGxhY2VtZW50U2NhbGUsdC5kaXNwbGFjZW1lbnRCaWFzLnZhbHVlPWUuZGlzcGxhY2VtZW50Qmlhcyl9KSh0LGkpKTppLmlzTWVzaERlcHRoTWF0ZXJpYWw/KGUodCxpKSwoZnVuY3Rpb24gcCh0LGUpe2UuZGlzcGxhY2VtZW50TWFwJiYodC5kaXNwbGFjZW1lbnRNYXAudmFsdWU9ZS5kaXNwbGFjZW1lbnRNYXAsdC5kaXNwbGFjZW1lbnRTY2FsZS52YWx1ZT1lLmRpc3BsYWNlbWVudFNjYWxlLHQuZGlzcGxhY2VtZW50Qmlhcy52YWx1ZT1lLmRpc3BsYWNlbWVudEJpYXMpfSkodCxpKSk6aS5pc01lc2hEaXN0YW5jZU1hdGVyaWFsPyhlKHQsaSksKGZ1bmN0aW9uIGYodCxlKXtlLmRpc3BsYWNlbWVudE1hcCYmKHQuZGlzcGxhY2VtZW50TWFwLnZhbHVlPWUuZGlzcGxhY2VtZW50TWFwLHQuZGlzcGxhY2VtZW50U2NhbGUudmFsdWU9ZS5kaXNwbGFjZW1lbnRTY2FsZSx0LmRpc3BsYWNlbWVudEJpYXMudmFsdWU9ZS5kaXNwbGFjZW1lbnRCaWFzKTt0LnJlZmVyZW5jZVBvc2l0aW9uLnZhbHVlLmNvcHkoZS5yZWZlcmVuY2VQb3NpdGlvbiksdC5uZWFyRGlzdGFuY2UudmFsdWU9ZS5uZWFyRGlzdGFuY2UsdC5mYXJEaXN0YW5jZS52YWx1ZT1lLmZhckRpc3RhbmNlfSkodCxpKSk6aS5pc01lc2hOb3JtYWxNYXRlcmlhbD8oZSh0LGkpLChmdW5jdGlvbiBtKHQsZSl7ZS5idW1wTWFwJiYodC5idW1wTWFwLnZhbHVlPWUuYnVtcE1hcCx0LmJ1bXBTY2FsZS52YWx1ZT1lLmJ1bXBTY2FsZSwxPT09ZS5zaWRlJiYodC5idW1wU2NhbGUudmFsdWUqPS0xKSk7ZS5ub3JtYWxNYXAmJih0Lm5vcm1hbE1hcC52YWx1ZT1lLm5vcm1hbE1hcCx0Lm5vcm1hbFNjYWxlLnZhbHVlLmNvcHkoZS5ub3JtYWxTY2FsZSksMT09PWUuc2lkZSYmdC5ub3JtYWxTY2FsZS52YWx1ZS5uZWdhdGUoKSk7ZS5kaXNwbGFjZW1lbnRNYXAmJih0LmRpc3BsYWNlbWVudE1hcC52YWx1ZT1lLmRpc3BsYWNlbWVudE1hcCx0LmRpc3BsYWNlbWVudFNjYWxlLnZhbHVlPWUuZGlzcGxhY2VtZW50U2NhbGUsdC5kaXNwbGFjZW1lbnRCaWFzLnZhbHVlPWUuZGlzcGxhY2VtZW50Qmlhcyl9KSh0LGkpKTppLmlzTGluZUJhc2ljTWF0ZXJpYWw/KCEoZnVuY3Rpb24gZyh0LGUpe3QuZGlmZnVzZS52YWx1ZS5jb3B5KGUuY29sb3IpLHQub3BhY2l0eS52YWx1ZT1lLm9wYWNpdHl9KSh0LGkpLGkuaXNMaW5lRGFzaGVkTWF0ZXJpYWwmJihmdW5jdGlvbiBfKHQsZSl7dC5kYXNoU2l6ZS52YWx1ZT1lLmRhc2hTaXplLHQudG90YWxTaXplLnZhbHVlPWUuZGFzaFNpemUrZS5nYXBTaXplLHQuc2NhbGUudmFsdWU9ZS5zY2FsZX0pKHQsaSkpOmkuaXNQb2ludHNNYXRlcmlhbD8oZnVuY3Rpb24geSh0LGUsbixpKXt0LmRpZmZ1c2UudmFsdWUuY29weShlLmNvbG9yKSx0Lm9wYWNpdHkudmFsdWU9ZS5vcGFjaXR5LHQuc2l6ZS52YWx1ZT1lLnNpemUqbix0LnNjYWxlLnZhbHVlPS41KmksZS5tYXAmJih0Lm1hcC52YWx1ZT1lLm1hcCk7ZS5hbHBoYU1hcCYmKHQuYWxwaGFNYXAudmFsdWU9ZS5hbHBoYU1hcCk7bGV0IHI7ZS5tYXA/cj1lLm1hcDplLmFscGhhTWFwJiYocj1lLmFscGhhTWFwKTt2b2lkIDAhPT1yJiYoITA9PT1yLm1hdHJpeEF1dG9VcGRhdGUmJnIudXBkYXRlTWF0cml4KCksdC51dlRyYW5zZm9ybS52YWx1ZS5jb3B5KHIubWF0cml4KSl9KSh0LGksbyxhKTppLmlzU3ByaXRlTWF0ZXJpYWw/KGZ1bmN0aW9uIHYodCxlKXt0LmRpZmZ1c2UudmFsdWUuY29weShlLmNvbG9yKSx0Lm9wYWNpdHkudmFsdWU9ZS5vcGFjaXR5LHQucm90YXRpb24udmFsdWU9ZS5yb3RhdGlvbixlLm1hcCYmKHQubWFwLnZhbHVlPWUubWFwKTtlLmFscGhhTWFwJiYodC5hbHBoYU1hcC52YWx1ZT1lLmFscGhhTWFwKTtsZXQgbjtlLm1hcD9uPWUubWFwOmUuYWxwaGFNYXAmJihuPWUuYWxwaGFNYXApO3ZvaWQgMCE9PW4mJighMD09PW4ubWF0cml4QXV0b1VwZGF0ZSYmbi51cGRhdGVNYXRyaXgoKSx0LnV2VHJhbnNmb3JtLnZhbHVlLmNvcHkobi5tYXRyaXgpKX0pKHQsaSk6aS5pc1NoYWRvd01hdGVyaWFsPyh0LmNvbG9yLnZhbHVlLmNvcHkoaS5jb2xvciksdC5vcGFjaXR5LnZhbHVlPWkub3BhY2l0eSk6aS5pc1NoYWRlck1hdGVyaWFsJiYoaS51bmlmb3Jtc05lZWRVcGRhdGU9ITEpfX19ZnVuY3Rpb24gbzd0KHQ9e30pe2NvbnN0IGU9dm9pZCAwIT09dC5jYW52YXM/dC5jYW52YXM6KGZ1bmN0aW9uIG4oKXtjb25zdCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIsImNhbnZhcyIpO3JldHVybiB0LnN0eWxlLmRpc3BsYXk9ImJsb2NrIix0fSkoKSxpPXZvaWQgMCE9PXQuY29udGV4dD90LmNvbnRleHQ6bnVsbCxyPXZvaWQgMCE9PXQuYWxwaGEmJnQuYWxwaGEsbz12b2lkIDA9PT10LmRlcHRofHx0LmRlcHRoLGE9dm9pZCAwPT09dC5zdGVuY2lsfHx0LnN0ZW5jaWwscz12b2lkIDAhPT10LmFudGlhbGlhcyYmdC5hbnRpYWxpYXMsbD12b2lkIDA9PT10LnByZW11bHRpcGxpZWRBbHBoYXx8dC5wcmVtdWx0aXBsaWVkQWxwaGEsYz12b2lkIDAhPT10LnByZXNlcnZlRHJhd2luZ0J1ZmZlciYmdC5wcmVzZXJ2ZURyYXdpbmdCdWZmZXIsdT12b2lkIDAhPT10LnBvd2VyUHJlZmVyZW5jZT90LnBvd2VyUHJlZmVyZW5jZToiZGVmYXVsdCIsaD12b2lkIDAhPT10LmZhaWxJZk1ham9yUGVyZm9ybWFuY2VDYXZlYXQmJnQuZmFpbElmTWFqb3JQZXJmb3JtYW5jZUNhdmVhdDtsZXQgZD1udWxsLHA9bnVsbDtjb25zdCBmPVtdLG09W107dGhpcy5kb21FbGVtZW50PWUsdGhpcy5kZWJ1Zz17Y2hlY2tTaGFkZXJFcnJvcnM6ITB9LHRoaXMuYXV0b0NsZWFyPSEwLHRoaXMuYXV0b0NsZWFyQ29sb3I9ITAsdGhpcy5hdXRvQ2xlYXJEZXB0aD0hMCx0aGlzLmF1dG9DbGVhclN0ZW5jaWw9ITAsdGhpcy5zb3J0T2JqZWN0cz0hMCx0aGlzLmNsaXBwaW5nUGxhbmVzPVtdLHRoaXMubG9jYWxDbGlwcGluZ0VuYWJsZWQ9ITEsdGhpcy5nYW1tYUZhY3Rvcj0yLHRoaXMub3V0cHV0RW5jb2Rpbmc9RzJ0LHRoaXMucGh5c2ljYWxseUNvcnJlY3RMaWdodHM9ITEsdGhpcy50b25lTWFwcGluZz0wLHRoaXMudG9uZU1hcHBpbmdFeHBvc3VyZT0xO2NvbnN0IGc9dGhpcztsZXQgXz0hMSx5PTAsdj0wLGI9bnVsbCx4PS0xLHc9bnVsbDtjb25zdCBTPW5ldyBSNXQsTT1uZXcgUjV0O2xldCBFPW51bGwsVD1lLndpZHRoLEM9ZS5oZWlnaHQsQT0xLGs9bnVsbCxMPW51bGw7Y29uc3QgUD1uZXcgUjV0KDAsMCxULEMpLE49bmV3IFI1dCgwLDAsVCxDKTtsZXQgST0hMTtjb25zdCBSPVtdLE89bmV3IG02dDtsZXQgej0hMSxEPSExLEI9bnVsbDtjb25zdCBIPW5ldyBnM3QsRj1uZXcgSDV0LFY9e2JhY2tncm91bmQ6bnVsbCxmb2c6bnVsbCxlbnZpcm9ubWVudDpudWxsLG92ZXJyaWRlTWF0ZXJpYWw6bnVsbCxpc1NjZW5lOiEwfTtmdW5jdGlvbiBVKCl7cmV0dXJuIG51bGw9PT1iP0E6MX1sZXQgaixHLFcscSxZLFgsJCxLLFosSixRLHR0LGV0LG50LGl0LHJ0LG90LGF0LHN0LGx0LGN0LHV0LGh0LGR0PWk7ZnVuY3Rpb24gcHQodCxuKXtmb3IobGV0IGk9MDtpPHQubGVuZ3RoO2krKyl7Y29uc3Qgcj1lLmdldENvbnRleHQodFtpXSxuKTtpZihudWxsIT09cilyZXR1cm4gcn1yZXR1cm4gbnVsbH10cnl7Y29uc3QgdD17YWxwaGE6cixkZXB0aDpvLHN0ZW5jaWw6YSxhbnRpYWxpYXM6cyxwcmVtdWx0aXBsaWVkQWxwaGE6bCxwcmVzZXJ2ZURyYXdpbmdCdWZmZXI6Yyxwb3dlclByZWZlcmVuY2U6dSxmYWlsSWZNYWpvclBlcmZvcm1hbmNlQ2F2ZWF0Omh9O2lmKGUuYWRkRXZlbnRMaXN0ZW5lcigid2ViZ2xjb250ZXh0bG9zdCIsZ3QsITEpLGUuYWRkRXZlbnRMaXN0ZW5lcigid2ViZ2xjb250ZXh0cmVzdG9yZWQiLF90LCExKSxudWxsPT09ZHQpe2NvbnN0IGU9WyJ3ZWJnbDIiLCJ3ZWJnbCIsImV4cGVyaW1lbnRhbC13ZWJnbCJdO2lmKCEwPT09Zy5pc1dlYkdMMVJlbmRlcmVyJiZlLnNoaWZ0KCksZHQ9cHQoZSx0KSxudWxsPT09ZHQpdGhyb3cgcHQoZSk/bmV3IEVycm9yKCJFcnJvciBjcmVhdGluZyBXZWJHTCBjb250ZXh0IHdpdGggeW91ciBzZWxlY3RlZCBhdHRyaWJ1dGVzLiIpOm5ldyBFcnJvcigiRXJyb3IgY3JlYXRpbmcgV2ViR0wgY29udGV4dC4iKX12b2lkIDA9PT1kdC5nZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQmJihkdC5nZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQ9ZnVuY3Rpb24oKXtyZXR1cm57cmFuZ2VNaW46MSxyYW5nZU1heDoxLHByZWNpc2lvbjoxfX0pfWNhdGNoKHQpe3Rocm93IGNvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMUmVuZGVyZXI6ICIrdC5tZXNzYWdlKSx0fWZ1bmN0aW9uIGZ0KCl7aj1uZXcgaTl0KGR0KSxHPW5ldyBFNnQoZHQsaix0KSxqLmluaXQoRyksdXQ9bmV3IEo4dChkdCxqLEcpLFc9bmV3IEs4dChkdCxqLEcpLFJbMF09MTAyOSxxPW5ldyBhOXQoZHQpLFk9bmV3IHo4dCxYPW5ldyBaOHQoZHQsaixXLFksRyx1dCxxKSwkPW5ldyBDNnQoZyksSz1uZXcgbjl0KGcpLFo9bmV3IF82dChkdCxHKSxodD1uZXcgUzZ0KGR0LGosWixHKSxKPW5ldyByOXQoZHQsWixxLGh0KSxRPW5ldyB1OXQoZHQsSixaLHEpLHN0PW5ldyBjOXQoZHQpLHJ0PW5ldyBUNnQoWSksdHQ9bmV3IE84dChnLCQsSyxqLEcsaHQscnQpLGV0PW5ldyByN3QoWSksbnQ9bmV3IEY4dChZKSxpdD1uZXcgcTh0KGosRyksYXQ9bmV3IHc2dChnLCQsVyxRLGwpLG90PW5ldyAkOHQoZyxRLEcpLGx0PW5ldyBNNnQoZHQsaixxLEcpLGN0PW5ldyBvOXQoZHQsaixxLEcpLHEucHJvZ3JhbXM9dHQucHJvZ3JhbXMsZy5jYXBhYmlsaXRpZXM9RyxnLmV4dGVuc2lvbnM9aixnLnByb3BlcnRpZXM9WSxnLnJlbmRlckxpc3RzPW50LGcuc2hhZG93TWFwPW90LGcuc3RhdGU9VyxnLmluZm89cX1mdCgpO2NvbnN0IG10PW5ldyBpN3QoZyxkdCk7ZnVuY3Rpb24gZ3QodCl7dC5wcmV2ZW50RGVmYXVsdCgpLGNvbnNvbGUubG9nKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBDb250ZXh0IExvc3QuIiksXz0hMH1mdW5jdGlvbiBfdCgpe2NvbnNvbGUubG9nKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBDb250ZXh0IFJlc3RvcmVkLiIpLF89ITE7Y29uc3QgdD1xLmF1dG9SZXNldCxlPW90LmVuYWJsZWQsbj1vdC5hdXRvVXBkYXRlLGk9b3QubmVlZHNVcGRhdGUscj1vdC50eXBlO2Z0KCkscS5hdXRvUmVzZXQ9dCxvdC5lbmFibGVkPWUsb3QuYXV0b1VwZGF0ZT1uLG90Lm5lZWRzVXBkYXRlPWksb3QudHlwZT1yfWZ1bmN0aW9uIHl0KHQpe2NvbnN0IGU9dC50YXJnZXQ7ZS5yZW1vdmVFdmVudExpc3RlbmVyKCJkaXNwb3NlIix5dCksKGZ1bmN0aW9uIG4odCl7KGZ1bmN0aW9uIGUodCl7Y29uc3QgZT1ZLmdldCh0KS5wcm9ncmFtczt2b2lkIDAhPT1lJiZlLmZvckVhY2goKGZ1bmN0aW9uKHQpe3R0LnJlbGVhc2VQcm9ncmFtKHQpfSkpfSkodCksWS5yZW1vdmUodCl9KShlKX10aGlzLnhyPW10LHRoaXMuZ2V0Q29udGV4dD1mdW5jdGlvbigpe3JldHVybiBkdH0sdGhpcy5nZXRDb250ZXh0QXR0cmlidXRlcz1mdW5jdGlvbigpe3JldHVybiBkdC5nZXRDb250ZXh0QXR0cmlidXRlcygpfSx0aGlzLmZvcmNlQ29udGV4dExvc3M9ZnVuY3Rpb24oKXtjb25zdCB0PWouZ2V0KCJXRUJHTF9sb3NlX2NvbnRleHQiKTt0JiZ0Lmxvc2VDb250ZXh0KCl9LHRoaXMuZm9yY2VDb250ZXh0UmVzdG9yZT1mdW5jdGlvbigpe2NvbnN0IHQ9ai5nZXQoIldFQkdMX2xvc2VfY29udGV4dCIpO3QmJnQucmVzdG9yZUNvbnRleHQoKX0sdGhpcy5nZXRQaXhlbFJhdGlvPWZ1bmN0aW9uKCl7cmV0dXJuIEF9LHRoaXMuc2V0UGl4ZWxSYXRpbz1mdW5jdGlvbih0KXt2b2lkIDAhPT10JiYoQT10LHRoaXMuc2V0U2l6ZShULEMsITEpKX0sdGhpcy5nZXRTaXplPWZ1bmN0aW9uKHQpe3JldHVybiB0LnNldChULEMpfSx0aGlzLnNldFNpemU9ZnVuY3Rpb24odCxuLGkpe210LmlzUHJlc2VudGluZz9jb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IENhbid0IGNoYW5nZSBzaXplIHdoaWxlIFZSIGRldmljZSBpcyBwcmVzZW50aW5nLiIpOihUPXQsQz1uLGUud2lkdGg9TWF0aC5mbG9vcih0KkEpLGUuaGVpZ2h0PU1hdGguZmxvb3IobipBKSwhMSE9PWkmJihlLnN0eWxlLndpZHRoPXQrInB4IixlLnN0eWxlLmhlaWdodD1uKyJweCIpLHRoaXMuc2V0Vmlld3BvcnQoMCwwLHQsbikpfSx0aGlzLmdldERyYXdpbmdCdWZmZXJTaXplPWZ1bmN0aW9uKHQpe3JldHVybiB0LnNldChUKkEsQypBKS5mbG9vcigpfSx0aGlzLnNldERyYXdpbmdCdWZmZXJTaXplPWZ1bmN0aW9uKHQsbixpKXtUPXQsQz1uLEE9aSxlLndpZHRoPU1hdGguZmxvb3IodCppKSxlLmhlaWdodD1NYXRoLmZsb29yKG4qaSksdGhpcy5zZXRWaWV3cG9ydCgwLDAsdCxuKX0sdGhpcy5nZXRDdXJyZW50Vmlld3BvcnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQuY29weShTKX0sdGhpcy5nZXRWaWV3cG9ydD1mdW5jdGlvbih0KXtyZXR1cm4gdC5jb3B5KFApfSx0aGlzLnNldFZpZXdwb3J0PWZ1bmN0aW9uKHQsZSxuLGkpe3QuaXNWZWN0b3I0P1Auc2V0KHQueCx0LnksdC56LHQudyk6UC5zZXQodCxlLG4saSksVy52aWV3cG9ydChTLmNvcHkoUCkubXVsdGlwbHlTY2FsYXIoQSkuZmxvb3IoKSl9LHRoaXMuZ2V0U2Npc3Nvcj1mdW5jdGlvbih0KXtyZXR1cm4gdC5jb3B5KE4pfSx0aGlzLnNldFNjaXNzb3I9ZnVuY3Rpb24odCxlLG4saSl7dC5pc1ZlY3RvcjQ/Ti5zZXQodC54LHQueSx0LnosdC53KTpOLnNldCh0LGUsbixpKSxXLnNjaXNzb3IoTS5jb3B5KE4pLm11bHRpcGx5U2NhbGFyKEEpLmZsb29yKCkpfSx0aGlzLmdldFNjaXNzb3JUZXN0PWZ1bmN0aW9uKCl7cmV0dXJuIEl9LHRoaXMuc2V0U2Npc3NvclRlc3Q9ZnVuY3Rpb24odCl7Vy5zZXRTY2lzc29yVGVzdChJPXQpfSx0aGlzLnNldE9wYXF1ZVNvcnQ9ZnVuY3Rpb24odCl7az10fSx0aGlzLnNldFRyYW5zcGFyZW50U29ydD1mdW5jdGlvbih0KXtMPXR9LHRoaXMuZ2V0Q2xlYXJDb2xvcj1mdW5jdGlvbih0KXtyZXR1cm4gdC5jb3B5KGF0LmdldENsZWFyQ29sb3IoKSl9LHRoaXMuc2V0Q2xlYXJDb2xvcj1mdW5jdGlvbigpe2F0LnNldENsZWFyQ29sb3IuYXBwbHkoYXQsYXJndW1lbnRzKX0sdGhpcy5nZXRDbGVhckFscGhhPWZ1bmN0aW9uKCl7cmV0dXJuIGF0LmdldENsZWFyQWxwaGEoKX0sdGhpcy5zZXRDbGVhckFscGhhPWZ1bmN0aW9uKCl7YXQuc2V0Q2xlYXJBbHBoYS5hcHBseShhdCxhcmd1bWVudHMpfSx0aGlzLmNsZWFyPWZ1bmN0aW9uKHQsZSxuKXtsZXQgaT0wOyh2b2lkIDA9PT10fHx0KSYmKGl8PTE2Mzg0KSwodm9pZCAwPT09ZXx8ZSkmJihpfD0yNTYpLCh2b2lkIDA9PT1ufHxuKSYmKGl8PTEwMjQpLGR0LmNsZWFyKGkpfSx0aGlzLmNsZWFyQ29sb3I9ZnVuY3Rpb24oKXt0aGlzLmNsZWFyKCEwLCExLCExKX0sdGhpcy5jbGVhckRlcHRoPWZ1bmN0aW9uKCl7dGhpcy5jbGVhcighMSwhMCwhMSl9LHRoaXMuY2xlYXJTdGVuY2lsPWZ1bmN0aW9uKCl7dGhpcy5jbGVhcighMSwhMSwhMCl9LHRoaXMuZGlzcG9zZT1mdW5jdGlvbigpe2UucmVtb3ZlRXZlbnRMaXN0ZW5lcigid2ViZ2xjb250ZXh0bG9zdCIsZ3QsITEpLGUucmVtb3ZlRXZlbnRMaXN0ZW5lcigid2ViZ2xjb250ZXh0cmVzdG9yZWQiLF90LCExKSxudC5kaXNwb3NlKCksaXQuZGlzcG9zZSgpLFkuZGlzcG9zZSgpLCQuZGlzcG9zZSgpLEsuZGlzcG9zZSgpLFEuZGlzcG9zZSgpLGh0LmRpc3Bvc2UoKSxtdC5kaXNwb3NlKCksbXQucmVtb3ZlRXZlbnRMaXN0ZW5lcigic2Vzc2lvbnN0YXJ0IixidCksbXQucmVtb3ZlRXZlbnRMaXN0ZW5lcigic2Vzc2lvbmVuZCIseHQpLEImJihCLmRpc3Bvc2UoKSxCPW51bGwpLHd0LnN0b3AoKX0sdGhpcy5yZW5kZXJCdWZmZXJJbW1lZGlhdGU9ZnVuY3Rpb24odCxlKXtodC5pbml0QXR0cmlidXRlcygpO2NvbnN0IG49WS5nZXQodCk7dC5oYXNQb3NpdGlvbnMmJiFuLnBvc2l0aW9uJiYobi5wb3NpdGlvbj1kdC5jcmVhdGVCdWZmZXIoKSksdC5oYXNOb3JtYWxzJiYhbi5ub3JtYWwmJihuLm5vcm1hbD1kdC5jcmVhdGVCdWZmZXIoKSksdC5oYXNVdnMmJiFuLnV2JiYobi51dj1kdC5jcmVhdGVCdWZmZXIoKSksdC5oYXNDb2xvcnMmJiFuLmNvbG9yJiYobi5jb2xvcj1kdC5jcmVhdGVCdWZmZXIoKSk7Y29uc3QgaT1lLmdldEF0dHJpYnV0ZXMoKTt0Lmhhc1Bvc2l0aW9ucyYmKGR0LmJpbmRCdWZmZXIoMzQ5NjIsbi5wb3NpdGlvbiksZHQuYnVmZmVyRGF0YSgzNDk2Mix0LnBvc2l0aW9uQXJyYXksMzUwNDgpLGh0LmVuYWJsZUF0dHJpYnV0ZShpLnBvc2l0aW9uKSxkdC52ZXJ0ZXhBdHRyaWJQb2ludGVyKGkucG9zaXRpb24sMyw1MTI2LCExLDAsMCkpLHQuaGFzTm9ybWFscyYmKGR0LmJpbmRCdWZmZXIoMzQ5NjIsbi5ub3JtYWwpLGR0LmJ1ZmZlckRhdGEoMzQ5NjIsdC5ub3JtYWxBcnJheSwzNTA0OCksaHQuZW5hYmxlQXR0cmlidXRlKGkubm9ybWFsKSxkdC52ZXJ0ZXhBdHRyaWJQb2ludGVyKGkubm9ybWFsLDMsNTEyNiwhMSwwLDApKSx0Lmhhc1V2cyYmKGR0LmJpbmRCdWZmZXIoMzQ5NjIsbi51diksZHQuYnVmZmVyRGF0YSgzNDk2Mix0LnV2QXJyYXksMzUwNDgpLGh0LmVuYWJsZUF0dHJpYnV0ZShpLnV2KSxkdC52ZXJ0ZXhBdHRyaWJQb2ludGVyKGkudXYsMiw1MTI2LCExLDAsMCkpLHQuaGFzQ29sb3JzJiYoZHQuYmluZEJ1ZmZlcigzNDk2MixuLmNvbG9yKSxkdC5idWZmZXJEYXRhKDM0OTYyLHQuY29sb3JBcnJheSwzNTA0OCksaHQuZW5hYmxlQXR0cmlidXRlKGkuY29sb3IpLGR0LnZlcnRleEF0dHJpYlBvaW50ZXIoaS5jb2xvciwzLDUxMjYsITEsMCwwKSksaHQuZGlzYWJsZVVudXNlZEF0dHJpYnV0ZXMoKSxkdC5kcmF3QXJyYXlzKDQsMCx0LmNvdW50KSx0LmNvdW50PTB9LHRoaXMucmVuZGVyQnVmZmVyRGlyZWN0PWZ1bmN0aW9uKHQsZSxuLGkscixvKXtudWxsPT09ZSYmKGU9Vik7Y29uc3QgYT1yLmlzTWVzaCYmci5tYXRyaXhXb3JsZC5kZXRlcm1pbmFudCgpPDAscz1BdCh0LGUsaSxyKTtXLnNldE1hdGVyaWFsKGksYSk7bGV0IGw9bi5pbmRleDtjb25zdCBjPW4uYXR0cmlidXRlcy5wb3NpdGlvbjtpZihudWxsPT09bCl7aWYodm9pZCAwPT09Y3x8MD09PWMuY291bnQpcmV0dXJufWVsc2UgaWYoMD09PWwuY291bnQpcmV0dXJuO2xldCB1LGg9MTshMD09PWkud2lyZWZyYW1lJiYobD1KLmdldFdpcmVmcmFtZUF0dHJpYnV0ZShuKSxoPTIpLHZvaWQgMD09PW4ubW9ycGhBdHRyaWJ1dGVzLnBvc2l0aW9uJiZ2b2lkIDA9PT1uLm1vcnBoQXR0cmlidXRlcy5ub3JtYWx8fHN0LnVwZGF0ZShyLG4saSxzKSxodC5zZXR1cChyLGkscyxuLGwpO2xldCBkPWx0O251bGwhPT1sJiYodT1aLmdldChsKSxkPWN0LGQuc2V0SW5kZXgodSkpO2NvbnN0IHA9bnVsbCE9PWw/bC5jb3VudDpjLmNvdW50LGY9bi5kcmF3UmFuZ2Uuc3RhcnQqaCxtPW4uZHJhd1JhbmdlLmNvdW50KmgsZz1udWxsIT09bz9vLnN0YXJ0Kmg6MCxfPW51bGwhPT1vP28uY291bnQqaDoxLzAseT1NYXRoLm1heChmLGcpLHY9TWF0aC5taW4ocCxmK20sZytfKS0xLGI9TWF0aC5tYXgoMCx2LXkrMSk7aWYoMCE9PWIpe2lmKHIuaXNNZXNoKSEwPT09aS53aXJlZnJhbWU/KFcuc2V0TGluZVdpZHRoKGkud2lyZWZyYW1lTGluZXdpZHRoKlUoKSksZC5zZXRNb2RlKDEpKTpkLnNldE1vZGUoNCk7ZWxzZSBpZihyLmlzTGluZSl7bGV0IHQ9aS5saW5ld2lkdGg7dm9pZCAwPT09dCYmKHQ9MSksVy5zZXRMaW5lV2lkdGgodCpVKCkpLGQuc2V0TW9kZShyLmlzTGluZVNlZ21lbnRzPzE6ci5pc0xpbmVMb29wPzI6Myl9ZWxzZSByLmlzUG9pbnRzP2Quc2V0TW9kZSgwKTpyLmlzU3ByaXRlJiZkLnNldE1vZGUoNCk7aWYoci5pc0luc3RhbmNlZE1lc2gpZC5yZW5kZXJJbnN0YW5jZXMoeSxiLHIuY291bnQpO2Vsc2UgaWYobi5pc0luc3RhbmNlZEJ1ZmZlckdlb21ldHJ5KXtjb25zdCB0PU1hdGgubWluKG4uaW5zdGFuY2VDb3VudCxuLl9tYXhJbnN0YW5jZUNvdW50KTtkLnJlbmRlckluc3RhbmNlcyh5LGIsdCl9ZWxzZSBkLnJlbmRlcih5LGIpfX0sdGhpcy5jb21waWxlPWZ1bmN0aW9uKHQsZSl7cD1pdC5nZXQodCkscC5pbml0KCksbS5wdXNoKHApLHQudHJhdmVyc2VWaXNpYmxlKChmdW5jdGlvbih0KXt0LmlzTGlnaHQmJnQubGF5ZXJzLnRlc3QoZS5sYXllcnMpJiYocC5wdXNoTGlnaHQodCksdC5jYXN0U2hhZG93JiZwLnB1c2hTaGFkb3codCkpfSkpLHAuc2V0dXBMaWdodHMoKSx0LnRyYXZlcnNlKChmdW5jdGlvbihlKXtjb25zdCBuPWUubWF0ZXJpYWw7aWYobilpZihBcnJheS5pc0FycmF5KG4pKWZvcihsZXQgaT0wO2k8bi5sZW5ndGg7aSsrKXtUdChuW2ldLHQsZSl9ZWxzZSBUdChuLHQsZSl9KSksbS5wb3AoKSxwPW51bGx9O2xldCB2dD1udWxsO2Z1bmN0aW9uIGJ0KCl7d3Quc3RvcCgpfWZ1bmN0aW9uIHh0KCl7d3Quc3RhcnQoKX1jb25zdCB3dD1uZXcgZzZ0O2Z1bmN0aW9uIFN0KHQsZSxuLGkpe2lmKCExPT09dC52aXNpYmxlKXJldHVybjtpZih0LmxheWVycy50ZXN0KGUubGF5ZXJzKSlpZih0LmlzR3JvdXApbj10LnJlbmRlck9yZGVyO2Vsc2UgaWYodC5pc0xPRCkhMD09PXQuYXV0b1VwZGF0ZSYmdC51cGRhdGUoZSk7ZWxzZSBpZih0LmlzTGlnaHQpcC5wdXNoTGlnaHQodCksdC5jYXN0U2hhZG93JiZwLnB1c2hTaGFkb3codCk7ZWxzZSBpZih0LmlzU3ByaXRlKXtpZighdC5mcnVzdHVtQ3VsbGVkfHxPLmludGVyc2VjdHNTcHJpdGUodCkpe2kmJkYuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKHQubWF0cml4V29ybGQpLmFwcGx5TWF0cml4NChIKTtjb25zdCBlPVEudXBkYXRlKHQpLHI9dC5tYXRlcmlhbDtyLnZpc2libGUmJmQucHVzaCh0LGUscixuLEYueixudWxsKX19ZWxzZSBpZih0LmlzSW1tZWRpYXRlUmVuZGVyT2JqZWN0KWkmJkYuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKHQubWF0cml4V29ybGQpLmFwcGx5TWF0cml4NChIKSxkLnB1c2godCxudWxsLHQubWF0ZXJpYWwsbixGLnosbnVsbCk7ZWxzZSBpZigodC5pc01lc2h8fHQuaXNMaW5lfHx0LmlzUG9pbnRzKSYmKHQuaXNTa2lubmVkTWVzaCYmdC5za2VsZXRvbi5mcmFtZSE9PXEucmVuZGVyLmZyYW1lJiYodC5za2VsZXRvbi51cGRhdGUoKSx0LnNrZWxldG9uLmZyYW1lPXEucmVuZGVyLmZyYW1lKSwhdC5mcnVzdHVtQ3VsbGVkfHxPLmludGVyc2VjdHNPYmplY3QodCkpKXtpJiZGLnNldEZyb21NYXRyaXhQb3NpdGlvbih0Lm1hdHJpeFdvcmxkKS5hcHBseU1hdHJpeDQoSCk7Y29uc3QgZT1RLnVwZGF0ZSh0KSxyPXQubWF0ZXJpYWw7aWYoQXJyYXkuaXNBcnJheShyKSl7Y29uc3QgaT1lLmdyb3Vwcztmb3IobGV0IG89MCxhPWkubGVuZ3RoO288YTtvKyspe2NvbnN0IGE9aVtvXSxzPXJbYS5tYXRlcmlhbEluZGV4XTtzJiZzLnZpc2libGUmJmQucHVzaCh0LGUscyxuLEYueixhKX19ZWxzZSByLnZpc2libGUmJmQucHVzaCh0LGUscixuLEYueixudWxsKX1jb25zdCByPXQuY2hpbGRyZW47Zm9yKGxldCB0PTAsbz1yLmxlbmd0aDt0PG87dCsrKVN0KHJbdF0sZSxuLGkpfWZ1bmN0aW9uIE10KHQsZSxuKXtjb25zdCBpPSEwPT09ZS5pc1NjZW5lP2Uub3ZlcnJpZGVNYXRlcmlhbDpudWxsO2lmKG4uaXNBcnJheUNhbWVyYSl7Y29uc3Qgcj1uLmNhbWVyYXM7Zm9yKGxldCBuPTAsbz1yLmxlbmd0aDtuPG87bisrKXtjb25zdCBvPXJbbl07Vy52aWV3cG9ydChTLmNvcHkoby52aWV3cG9ydCkpLHAuc2V0dXBMaWdodHNWaWV3KG8pO2ZvcihsZXQgbj0wLHI9dC5sZW5ndGg7bjxyO24rKyl7Y29uc3Qgcj10W25dLGE9ci5vYmplY3Qscz1yLmdlb21ldHJ5LGw9bnVsbD09PWk/ci5tYXRlcmlhbDppLGM9ci5ncm91cDthLmxheWVycy50ZXN0KG8ubGF5ZXJzKSYmRXQoYSxlLG8scyxsLGMpfX19ZWxzZSBmb3IobGV0IHI9MCxvPXQubGVuZ3RoO3I8bztyKyspe2NvbnN0IG89dFtyXTtFdChvLm9iamVjdCxlLG4sby5nZW9tZXRyeSxudWxsPT09aT9vLm1hdGVyaWFsOmksby5ncm91cCl9fWZ1bmN0aW9uIEV0KHQsZSxuLGkscixvKXtpZih0Lm9uQmVmb3JlUmVuZGVyKGcsZSxuLGkscixvKSx0Lm1vZGVsVmlld01hdHJpeC5tdWx0aXBseU1hdHJpY2VzKG4ubWF0cml4V29ybGRJbnZlcnNlLHQubWF0cml4V29ybGQpLHQubm9ybWFsTWF0cml4LmdldE5vcm1hbE1hdHJpeCh0Lm1vZGVsVmlld01hdHJpeCksdC5pc0ltbWVkaWF0ZVJlbmRlck9iamVjdCl7Y29uc3QgaT1BdChuLGUscix0KTtXLnNldE1hdGVyaWFsKHIpLGh0LnJlc2V0KCksKGZ1bmN0aW9uIGEodCxlKXt0LnJlbmRlcigoZnVuY3Rpb24odCl7Zy5yZW5kZXJCdWZmZXJJbW1lZGlhdGUodCxlKX0pKX0pKHQsaSl9ZWxzZSEwPT09ci50cmFuc3BhcmVudCYmMj09PXIuc2lkZT8oci5zaWRlPTEsci5uZWVkc1VwZGF0ZT0hMCxnLnJlbmRlckJ1ZmZlckRpcmVjdChuLGUsaSxyLHQsbyksci5zaWRlPTAsci5uZWVkc1VwZGF0ZT0hMCxnLnJlbmRlckJ1ZmZlckRpcmVjdChuLGUsaSxyLHQsbyksci5zaWRlPTIpOmcucmVuZGVyQnVmZmVyRGlyZWN0KG4sZSxpLHIsdCxvKTt0Lm9uQWZ0ZXJSZW5kZXIoZyxlLG4saSxyLG8pfWZ1bmN0aW9uIFR0KHQsZSxuKXshMCE9PWUuaXNTY2VuZSYmKGU9Vik7Y29uc3QgaT1ZLmdldCh0KSxyPXAuc3RhdGUubGlnaHRzLG89ci5zdGF0ZS52ZXJzaW9uLGE9dHQuZ2V0UGFyYW1ldGVycyh0LHIuc3RhdGUscC5zdGF0ZS5zaGFkb3dzQXJyYXksZSxuKSxzPXR0LmdldFByb2dyYW1DYWNoZUtleShhKTtsZXQgbD1pLnByb2dyYW1zO2kuZW52aXJvbm1lbnQ9dC5pc01lc2hTdGFuZGFyZE1hdGVyaWFsP2UuZW52aXJvbm1lbnQ6bnVsbCxpLmZvZz1lLmZvZyxpLmVudk1hcD0odC5pc01lc2hTdGFuZGFyZE1hdGVyaWFsP0s6JCkuZ2V0KHQuZW52TWFwfHxpLmVudmlyb25tZW50KSx2b2lkIDA9PT1sJiYodC5hZGRFdmVudExpc3RlbmVyKCJkaXNwb3NlIix5dCksbD1uZXcgTWFwLGkucHJvZ3JhbXM9bCk7bGV0IGM9bC5nZXQocyk7aWYodm9pZCAwIT09Yyl7aWYoaS5jdXJyZW50UHJvZ3JhbT09PWMmJmkubGlnaHRzU3RhdGVWZXJzaW9uPT09bylyZXR1cm4gQ3QodCxhKSxjfWVsc2UgYS51bmlmb3Jtcz10dC5nZXRVbmlmb3Jtcyh0KSx0Lm9uQnVpbGQoYSxnKSx0Lm9uQmVmb3JlQ29tcGlsZShhLGcpLGM9dHQuYWNxdWlyZVByb2dyYW0oYSxzKSxsLnNldChzLGMpLGkudW5pZm9ybXM9YS51bmlmb3Jtcztjb25zdCB1PWkudW5pZm9ybXM7KHQuaXNTaGFkZXJNYXRlcmlhbHx8dC5pc1Jhd1NoYWRlck1hdGVyaWFsKSYmITAhPT10LmNsaXBwaW5nfHwodS5jbGlwcGluZ1BsYW5lcz1ydC51bmlmb3JtKSxDdCh0LGEpLGkubmVlZHNMaWdodHM9KGZ1bmN0aW9uIGgodCl7cmV0dXJuIHQuaXNNZXNoTGFtYmVydE1hdGVyaWFsfHx0LmlzTWVzaFRvb25NYXRlcmlhbHx8dC5pc01lc2hQaG9uZ01hdGVyaWFsfHx0LmlzTWVzaFN0YW5kYXJkTWF0ZXJpYWx8fHQuaXNTaGFkb3dNYXRlcmlhbHx8dC5pc1NoYWRlck1hdGVyaWFsJiYhMD09PXQubGlnaHRzfSkodCksaS5saWdodHNTdGF0ZVZlcnNpb249byxpLm5lZWRzTGlnaHRzJiYodS5hbWJpZW50TGlnaHRDb2xvci52YWx1ZT1yLnN0YXRlLmFtYmllbnQsdS5saWdodFByb2JlLnZhbHVlPXIuc3RhdGUucHJvYmUsdS5kaXJlY3Rpb25hbExpZ2h0cy52YWx1ZT1yLnN0YXRlLmRpcmVjdGlvbmFsLHUuZGlyZWN0aW9uYWxMaWdodFNoYWRvd3MudmFsdWU9ci5zdGF0ZS5kaXJlY3Rpb25hbFNoYWRvdyx1LnNwb3RMaWdodHMudmFsdWU9ci5zdGF0ZS5zcG90LHUuc3BvdExpZ2h0U2hhZG93cy52YWx1ZT1yLnN0YXRlLnNwb3RTaGFkb3csdS5yZWN0QXJlYUxpZ2h0cy52YWx1ZT1yLnN0YXRlLnJlY3RBcmVhLHUubHRjXzEudmFsdWU9ci5zdGF0ZS5yZWN0QXJlYUxUQzEsdS5sdGNfMi52YWx1ZT1yLnN0YXRlLnJlY3RBcmVhTFRDMix1LnBvaW50TGlnaHRzLnZhbHVlPXIuc3RhdGUucG9pbnQsdS5wb2ludExpZ2h0U2hhZG93cy52YWx1ZT1yLnN0YXRlLnBvaW50U2hhZG93LHUuaGVtaXNwaGVyZUxpZ2h0cy52YWx1ZT1yLnN0YXRlLmhlbWksdS5kaXJlY3Rpb25hbFNoYWRvd01hcC52YWx1ZT1yLnN0YXRlLmRpcmVjdGlvbmFsU2hhZG93TWFwLHUuZGlyZWN0aW9uYWxTaGFkb3dNYXRyaXgudmFsdWU9ci5zdGF0ZS5kaXJlY3Rpb25hbFNoYWRvd01hdHJpeCx1LnNwb3RTaGFkb3dNYXAudmFsdWU9ci5zdGF0ZS5zcG90U2hhZG93TWFwLHUuc3BvdFNoYWRvd01hdHJpeC52YWx1ZT1yLnN0YXRlLnNwb3RTaGFkb3dNYXRyaXgsdS5wb2ludFNoYWRvd01hcC52YWx1ZT1yLnN0YXRlLnBvaW50U2hhZG93TWFwLHUucG9pbnRTaGFkb3dNYXRyaXgudmFsdWU9ci5zdGF0ZS5wb2ludFNoYWRvd01hdHJpeCk7Y29uc3QgZD1jLmdldFVuaWZvcm1zKCksZj1mOHQuc2VxV2l0aFZhbHVlKGQuc2VxLHUpO3JldHVybiBpLmN1cnJlbnRQcm9ncmFtPWMsaS51bmlmb3Jtc0xpc3Q9ZixjfWZ1bmN0aW9uIEN0KHQsZSl7Y29uc3Qgbj1ZLmdldCh0KTtuLm91dHB1dEVuY29kaW5nPWUub3V0cHV0RW5jb2Rpbmcsbi5pbnN0YW5jaW5nPWUuaW5zdGFuY2luZyxuLnNraW5uaW5nPWUuc2tpbm5pbmcsbi5tb3JwaFRhcmdldHM9ZS5tb3JwaFRhcmdldHMsbi5tb3JwaE5vcm1hbHM9ZS5tb3JwaE5vcm1hbHMsbi5udW1DbGlwcGluZ1BsYW5lcz1lLm51bUNsaXBwaW5nUGxhbmVzLG4ubnVtSW50ZXJzZWN0aW9uPWUubnVtQ2xpcEludGVyc2VjdGlvbixuLnZlcnRleEFscGhhcz1lLnZlcnRleEFscGhhcyxuLnZlcnRleFRhbmdlbnRzPWUudmVydGV4VGFuZ2VudHN9ZnVuY3Rpb24gQXQodCxlLG4saSl7ITAhPT1lLmlzU2NlbmUmJihlPVYpLFgucmVzZXRUZXh0dXJlVW5pdHMoKTtjb25zdCByPWUuZm9nLG89bnVsbD09PWI/Zy5vdXRwdXRFbmNvZGluZzpiLnRleHR1cmUuZW5jb2RpbmcsYT0obi5pc01lc2hTdGFuZGFyZE1hdGVyaWFsP0s6JCkuZ2V0KG4uZW52TWFwfHwobi5pc01lc2hTdGFuZGFyZE1hdGVyaWFsP2UuZW52aXJvbm1lbnQ6bnVsbCkpLHM9ITA9PT1uLnZlcnRleENvbG9ycyYmISFpLmdlb21ldHJ5JiYhIWkuZ2VvbWV0cnkuYXR0cmlidXRlcy5jb2xvciYmND09PWkuZ2VvbWV0cnkuYXR0cmlidXRlcy5jb2xvci5pdGVtU2l6ZSxsPSEhaS5nZW9tZXRyeSYmISFpLmdlb21ldHJ5LmF0dHJpYnV0ZXMudGFuZ2VudCxjPSEhaS5nZW9tZXRyeSYmISFpLmdlb21ldHJ5Lm1vcnBoQXR0cmlidXRlcy5wb3NpdGlvbix1PSEhaS5nZW9tZXRyeSYmISFpLmdlb21ldHJ5Lm1vcnBoQXR0cmlidXRlcy5ub3JtYWwsaD1ZLmdldChuKSxkPXAuc3RhdGUubGlnaHRzO2lmKCEwPT09eiYmKCEwPT09RHx8dCE9PXcpKXtydC5zZXRTdGF0ZShuLHQsdD09PXcmJm4uaWQ9PT14KX1sZXQgZj0hMTtuLnZlcnNpb249PT1oLl9fdmVyc2lvbj9oLm5lZWRzTGlnaHRzJiZoLmxpZ2h0c1N0YXRlVmVyc2lvbiE9PWQuc3RhdGUudmVyc2lvbnx8aC5vdXRwdXRFbmNvZGluZyE9PW98fGkuaXNJbnN0YW5jZWRNZXNoJiYhMT09PWguaW5zdGFuY2luZz9mPSEwOmkuaXNJbnN0YW5jZWRNZXNofHwhMCE9PWguaW5zdGFuY2luZz9pLmlzU2tpbm5lZE1lc2gmJiExPT09aC5za2lubmluZz9mPSEwOmkuaXNTa2lubmVkTWVzaHx8ITAhPT1oLnNraW5uaW5nP2guZW52TWFwIT09YXx8bi5mb2cmJmguZm9nIT09cj9mPSEwOnZvaWQgMD09PWgubnVtQ2xpcHBpbmdQbGFuZXN8fGgubnVtQ2xpcHBpbmdQbGFuZXM9PT1ydC5udW1QbGFuZXMmJmgubnVtSW50ZXJzZWN0aW9uPT09cnQubnVtSW50ZXJzZWN0aW9uPyhoLnZlcnRleEFscGhhcyE9PXN8fGgudmVydGV4VGFuZ2VudHMhPT1sfHxoLm1vcnBoVGFyZ2V0cyE9PWN8fGgubW9ycGhOb3JtYWxzIT09dSkmJihmPSEwKTpmPSEwOmY9ITA6Zj0hMDooZj0hMCxoLl9fdmVyc2lvbj1uLnZlcnNpb24pO2xldCBtPWguY3VycmVudFByb2dyYW07ITA9PT1mJiYobT1UdChuLGUsaSkpO2xldCBfPSExLHk9ITEsdj0hMTtjb25zdCBTPW0uZ2V0VW5pZm9ybXMoKSxNPWgudW5pZm9ybXM7aWYoVy51c2VQcm9ncmFtKG0ucHJvZ3JhbSkmJihfPSEwLHk9ITAsdj0hMCksbi5pZCE9PXgmJih4PW4uaWQseT0hMCksX3x8dyE9PXQpe2lmKFMuc2V0VmFsdWUoZHQsInByb2plY3Rpb25NYXRyaXgiLHQucHJvamVjdGlvbk1hdHJpeCksRy5sb2dhcml0aG1pY0RlcHRoQnVmZmVyJiZTLnNldFZhbHVlKGR0LCJsb2dEZXB0aEJ1ZkZDIiwyLyhNYXRoLmxvZyh0LmZhcisxKS9NYXRoLkxOMikpLHchPT10JiYodz10LHk9ITAsdj0hMCksbi5pc1NoYWRlck1hdGVyaWFsfHxuLmlzTWVzaFBob25nTWF0ZXJpYWx8fG4uaXNNZXNoVG9vbk1hdGVyaWFsfHxuLmlzTWVzaFN0YW5kYXJkTWF0ZXJpYWx8fG4uZW52TWFwKXtjb25zdCBlPVMubWFwLmNhbWVyYVBvc2l0aW9uO3ZvaWQgMCE9PWUmJmUuc2V0VmFsdWUoZHQsRi5zZXRGcm9tTWF0cml4UG9zaXRpb24odC5tYXRyaXhXb3JsZCkpfShuLmlzTWVzaFBob25nTWF0ZXJpYWx8fG4uaXNNZXNoVG9vbk1hdGVyaWFsfHxuLmlzTWVzaExhbWJlcnRNYXRlcmlhbHx8bi5pc01lc2hCYXNpY01hdGVyaWFsfHxuLmlzTWVzaFN0YW5kYXJkTWF0ZXJpYWx8fG4uaXNTaGFkZXJNYXRlcmlhbCkmJlMuc2V0VmFsdWUoZHQsImlzT3J0aG9ncmFwaGljIiwhMD09PXQuaXNPcnRob2dyYXBoaWNDYW1lcmEpLChuLmlzTWVzaFBob25nTWF0ZXJpYWx8fG4uaXNNZXNoVG9vbk1hdGVyaWFsfHxuLmlzTWVzaExhbWJlcnRNYXRlcmlhbHx8bi5pc01lc2hCYXNpY01hdGVyaWFsfHxuLmlzTWVzaFN0YW5kYXJkTWF0ZXJpYWx8fG4uaXNTaGFkZXJNYXRlcmlhbHx8bi5pc1NoYWRvd01hdGVyaWFsfHxpLmlzU2tpbm5lZE1lc2gpJiZTLnNldFZhbHVlKGR0LCJ2aWV3TWF0cml4Iix0Lm1hdHJpeFdvcmxkSW52ZXJzZSl9aWYoaS5pc1NraW5uZWRNZXNoKXtTLnNldE9wdGlvbmFsKGR0LGksImJpbmRNYXRyaXgiKSxTLnNldE9wdGlvbmFsKGR0LGksImJpbmRNYXRyaXhJbnZlcnNlIik7Y29uc3QgdD1pLnNrZWxldG9uO3QmJihHLmZsb2F0VmVydGV4VGV4dHVyZXM/KG51bGw9PT10LmJvbmVUZXh0dXJlJiZ0LmNvbXB1dGVCb25lVGV4dHVyZSgpLFMuc2V0VmFsdWUoZHQsImJvbmVUZXh0dXJlIix0LmJvbmVUZXh0dXJlLFgpLFMuc2V0VmFsdWUoZHQsImJvbmVUZXh0dXJlU2l6ZSIsdC5ib25lVGV4dHVyZVNpemUpKTpTLnNldE9wdGlvbmFsKGR0LHQsImJvbmVNYXRyaWNlcyIpKX1yZXR1cm4oeXx8aC5yZWNlaXZlU2hhZG93IT09aS5yZWNlaXZlU2hhZG93KSYmKGgucmVjZWl2ZVNoYWRvdz1pLnJlY2VpdmVTaGFkb3csUy5zZXRWYWx1ZShkdCwicmVjZWl2ZVNoYWRvdyIsaS5yZWNlaXZlU2hhZG93KSkseSYmKFMuc2V0VmFsdWUoZHQsInRvbmVNYXBwaW5nRXhwb3N1cmUiLGcudG9uZU1hcHBpbmdFeHBvc3VyZSksaC5uZWVkc0xpZ2h0cyYmKGZ1bmN0aW9uIEUodCxlKXt0LmFtYmllbnRMaWdodENvbG9yLm5lZWRzVXBkYXRlPWUsdC5saWdodFByb2JlLm5lZWRzVXBkYXRlPWUsdC5kaXJlY3Rpb25hbExpZ2h0cy5uZWVkc1VwZGF0ZT1lLHQuZGlyZWN0aW9uYWxMaWdodFNoYWRvd3MubmVlZHNVcGRhdGU9ZSx0LnBvaW50TGlnaHRzLm5lZWRzVXBkYXRlPWUsdC5wb2ludExpZ2h0U2hhZG93cy5uZWVkc1VwZGF0ZT1lLHQuc3BvdExpZ2h0cy5uZWVkc1VwZGF0ZT1lLHQuc3BvdExpZ2h0U2hhZG93cy5uZWVkc1VwZGF0ZT1lLHQucmVjdEFyZWFMaWdodHMubmVlZHNVcGRhdGU9ZSx0LmhlbWlzcGhlcmVMaWdodHMubmVlZHNVcGRhdGU9ZX0pKE0sdiksciYmbi5mb2cmJmV0LnJlZnJlc2hGb2dVbmlmb3JtcyhNLHIpLGV0LnJlZnJlc2hNYXRlcmlhbFVuaWZvcm1zKE0sbixBLEMsQiksZjh0LnVwbG9hZChkdCxoLnVuaWZvcm1zTGlzdCxNLFgpKSxuLmlzU2hhZGVyTWF0ZXJpYWwmJiEwPT09bi51bmlmb3Jtc05lZWRVcGRhdGUmJihmOHQudXBsb2FkKGR0LGgudW5pZm9ybXNMaXN0LE0sWCksbi51bmlmb3Jtc05lZWRVcGRhdGU9ITEpLG4uaXNTcHJpdGVNYXRlcmlhbCYmUy5zZXRWYWx1ZShkdCwiY2VudGVyIixpLmNlbnRlciksUy5zZXRWYWx1ZShkdCwibW9kZWxWaWV3TWF0cml4IixpLm1vZGVsVmlld01hdHJpeCksUy5zZXRWYWx1ZShkdCwibm9ybWFsTWF0cml4IixpLm5vcm1hbE1hdHJpeCksUy5zZXRWYWx1ZShkdCwibW9kZWxNYXRyaXgiLGkubWF0cml4V29ybGQpLG19d3Quc2V0QW5pbWF0aW9uTG9vcCgoZnVuY3Rpb24ga3QodCl7dnQmJnZ0KHQpfSkpLCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ3dC5zZXRDb250ZXh0KHdpbmRvdyksdGhpcy5zZXRBbmltYXRpb25Mb29wPWZ1bmN0aW9uKHQpe3Z0PXQsbXQuc2V0QW5pbWF0aW9uTG9vcCh0KSxudWxsPT09dD93dC5zdG9wKCk6d3Quc3RhcnQoKX0sbXQuYWRkRXZlbnRMaXN0ZW5lcigic2Vzc2lvbnN0YXJ0IixidCksbXQuYWRkRXZlbnRMaXN0ZW5lcigic2Vzc2lvbmVuZCIseHQpLHRoaXMucmVuZGVyPWZ1bmN0aW9uKHQsZSl7aWYodm9pZCAwIT09ZSYmITAhPT1lLmlzQ2FtZXJhKXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMUmVuZGVyZXIucmVuZGVyOiBjYW1lcmEgaXMgbm90IGFuIGluc3RhbmNlIG9mIFRIUkVFLkNhbWVyYS4iKTtpZighMD09PV8pcmV0dXJuOyEwPT09dC5hdXRvVXBkYXRlJiZ0LnVwZGF0ZU1hdHJpeFdvcmxkKCksbnVsbD09PWUucGFyZW50JiZlLnVwZGF0ZU1hdHJpeFdvcmxkKCksITA9PT1tdC5lbmFibGVkJiYhMD09PW10LmlzUHJlc2VudGluZyYmKCEwPT09bXQuY2FtZXJhQXV0b1VwZGF0ZSYmbXQudXBkYXRlQ2FtZXJhKGUpLGU9bXQuZ2V0Q2FtZXJhKCkpLCEwPT09dC5pc1NjZW5lJiZ0Lm9uQmVmb3JlUmVuZGVyKGcsdCxlLGIpLHA9aXQuZ2V0KHQsbS5sZW5ndGgpLHAuaW5pdCgpLG0ucHVzaChwKSxILm11bHRpcGx5TWF0cmljZXMoZS5wcm9qZWN0aW9uTWF0cml4LGUubWF0cml4V29ybGRJbnZlcnNlKSxPLnNldEZyb21Qcm9qZWN0aW9uTWF0cml4KEgpLEQ9dGhpcy5sb2NhbENsaXBwaW5nRW5hYmxlZCx6PXJ0LmluaXQodGhpcy5jbGlwcGluZ1BsYW5lcyxELGUpLGQ9bnQuZ2V0KHQsZi5sZW5ndGgpLGQuaW5pdCgpLGYucHVzaChkKSxTdCh0LGUsMCxnLnNvcnRPYmplY3RzKSxkLmZpbmlzaCgpLCEwPT09Zy5zb3J0T2JqZWN0cyYmZC5zb3J0KGssTCksITA9PT16JiZydC5iZWdpblNoYWRvd3MoKTtvdC5yZW5kZXIocC5zdGF0ZS5zaGFkb3dzQXJyYXksdCxlKSxwLnNldHVwTGlnaHRzKCkscC5zZXR1cExpZ2h0c1ZpZXcoZSksITA9PT16JiZydC5lbmRTaGFkb3dzKCksITA9PT10aGlzLmluZm8uYXV0b1Jlc2V0JiZ0aGlzLmluZm8ucmVzZXQoKSxhdC5yZW5kZXIoZCx0KTtjb25zdCBuPWQub3BhcXVlLGk9ZC50cmFuc21pc3NpdmUscj1kLnRyYW5zcGFyZW50O24ubGVuZ3RoPjAmJk10KG4sdCxlKSxpLmxlbmd0aD4wJiYoZnVuY3Rpb24gbyh0LGUsbixpKXtpZihudWxsPT09Qil7Qj1uZXcoITA9PT1zJiYhMD09PUcuaXNXZWJHTDI/RDV0Ok81dCkoMTAyNCwxMDI0LHtnZW5lcmF0ZU1pcG1hcHM6ITAsdHlwZTpudWxsIT09dXQuY29udmVydChiMnQpP2IydDpnMnQsbWluRmlsdGVyOm0ydCxtYWdGaWx0ZXI6dTJ0LHdyYXBTOmwydCx3cmFwVDpsMnR9KX1jb25zdCByPWcuZ2V0UmVuZGVyVGFyZ2V0KCk7Zy5zZXRSZW5kZXJUYXJnZXQoQiksZy5jbGVhcigpO2NvbnN0IG89Zy50b25lTWFwcGluZztnLnRvbmVNYXBwaW5nPTAsTXQodCxuLGkpLGcudG9uZU1hcHBpbmc9byxYLnVwZGF0ZU11bHRpc2FtcGxlUmVuZGVyVGFyZ2V0KEIpLFgudXBkYXRlUmVuZGVyVGFyZ2V0TWlwbWFwKEIpLGcuc2V0UmVuZGVyVGFyZ2V0KHIpLE10KGUsbixpKX0pKG4saSx0LGUpLHIubGVuZ3RoPjAmJk10KHIsdCxlKSxudWxsIT09YiYmKFgudXBkYXRlTXVsdGlzYW1wbGVSZW5kZXJUYXJnZXQoYiksWC51cGRhdGVSZW5kZXJUYXJnZXRNaXBtYXAoYikpLCEwPT09dC5pc1NjZW5lJiZ0Lm9uQWZ0ZXJSZW5kZXIoZyx0LGUpLFcuYnVmZmVycy5kZXB0aC5zZXRUZXN0KCEwKSxXLmJ1ZmZlcnMuZGVwdGguc2V0TWFzayghMCksVy5idWZmZXJzLmNvbG9yLnNldE1hc2soITApLFcuc2V0UG9seWdvbk9mZnNldCghMSksaHQucmVzZXREZWZhdWx0U3RhdGUoKSx4PS0xLHc9bnVsbCxtLnBvcCgpLHA9bS5sZW5ndGg+MD9tW20ubGVuZ3RoLTFdOm51bGwsZi5wb3AoKSxkPWYubGVuZ3RoPjA/ZltmLmxlbmd0aC0xXTpudWxsfSx0aGlzLmdldEFjdGl2ZUN1YmVGYWNlPWZ1bmN0aW9uKCl7cmV0dXJuIHl9LHRoaXMuZ2V0QWN0aXZlTWlwbWFwTGV2ZWw9ZnVuY3Rpb24oKXtyZXR1cm4gdn0sdGhpcy5nZXRSZW5kZXJUYXJnZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gYn0sdGhpcy5zZXRSZW5kZXJUYXJnZXQ9ZnVuY3Rpb24odCxlPTAsbj0wKXtiPXQseT1lLHY9bix0JiZ2b2lkIDA9PT1ZLmdldCh0KS5fX3dlYmdsRnJhbWVidWZmZXImJlguc2V0dXBSZW5kZXJUYXJnZXQodCk7bGV0IGk9bnVsbCxyPSExLG89ITE7aWYodCl7Y29uc3Qgbj10LnRleHR1cmU7KG4uaXNEYXRhVGV4dHVyZTNEfHxuLmlzRGF0YVRleHR1cmUyREFycmF5KSYmKG89ITApO2NvbnN0IGE9WS5nZXQodCkuX193ZWJnbEZyYW1lYnVmZmVyO3QuaXNXZWJHTEN1YmVSZW5kZXJUYXJnZXQ/KGk9YVtlXSxyPSEwKTppPXQuaXNXZWJHTE11bHRpc2FtcGxlUmVuZGVyVGFyZ2V0P1kuZ2V0KHQpLl9fd2ViZ2xNdWx0aXNhbXBsZWRGcmFtZWJ1ZmZlcjphLFMuY29weSh0LnZpZXdwb3J0KSxNLmNvcHkodC5zY2lzc29yKSxFPXQuc2Npc3NvclRlc3R9ZWxzZSBTLmNvcHkoUCkubXVsdGlwbHlTY2FsYXIoQSkuZmxvb3IoKSxNLmNvcHkoTikubXVsdGlwbHlTY2FsYXIoQSkuZmxvb3IoKSxFPUk7aWYoVy5iaW5kRnJhbWVidWZmZXIoMzYxNjAsaSkmJkcuZHJhd0J1ZmZlcnMpe2xldCBlPSExO2lmKHQpaWYodC5pc1dlYkdMTXVsdGlwbGVSZW5kZXJUYXJnZXRzKXtjb25zdCBuPXQudGV4dHVyZTtpZihSLmxlbmd0aCE9PW4ubGVuZ3RofHwzNjA2NCE9PVJbMF0pe2ZvcihsZXQgdD0wLGU9bi5sZW5ndGg7dDxlO3QrKylSW3RdPTM2MDY0K3Q7Ui5sZW5ndGg9bi5sZW5ndGgsZT0hMH19ZWxzZSAxPT09Ui5sZW5ndGgmJjM2MDY0PT09UlswXXx8KFJbMF09MzYwNjQsUi5sZW5ndGg9MSxlPSEwKTtlbHNlIDE9PT1SLmxlbmd0aCYmMTAyOT09PVJbMF18fChSWzBdPTEwMjksUi5sZW5ndGg9MSxlPSEwKTtlJiYoRy5pc1dlYkdMMj9kdC5kcmF3QnVmZmVycyhSKTpqLmdldCgiV0VCR0xfZHJhd19idWZmZXJzIikuZHJhd0J1ZmZlcnNXRUJHTChSKSl9aWYoVy52aWV3cG9ydChTKSxXLnNjaXNzb3IoTSksVy5zZXRTY2lzc29yVGVzdChFKSxyKXtjb25zdCBpPVkuZ2V0KHQudGV4dHVyZSk7ZHQuZnJhbWVidWZmZXJUZXh0dXJlMkQoMzYxNjAsMzYwNjQsMzQwNjkrZSxpLl9fd2ViZ2xUZXh0dXJlLG4pfWVsc2UgaWYobyl7Y29uc3QgaT1ZLmdldCh0LnRleHR1cmUpO2R0LmZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKDM2MTYwLDM2MDY0LGkuX193ZWJnbFRleHR1cmUsbnx8MCxlfHwwKX19LHRoaXMucmVhZFJlbmRlclRhcmdldFBpeGVscz1mdW5jdGlvbih0LGUsbixpLHIsbyxhKXtpZighdHx8IXQuaXNXZWJHTFJlbmRlclRhcmdldClyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFJlbmRlcmVyLnJlYWRSZW5kZXJUYXJnZXRQaXhlbHM6IHJlbmRlclRhcmdldCBpcyBub3QgVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQuIik7bGV0IHM9WS5nZXQodCkuX193ZWJnbEZyYW1lYnVmZmVyO2lmKHQuaXNXZWJHTEN1YmVSZW5kZXJUYXJnZXQmJnZvaWQgMCE9PWEmJihzPXNbYV0pLHMpe1cuYmluZEZyYW1lYnVmZmVyKDM2MTYwLHMpO3RyeXtjb25zdCBhPXQudGV4dHVyZSxzPWEuZm9ybWF0LGw9YS50eXBlO2lmKHMhPT1TMnQmJnV0LmNvbnZlcnQocykhPT1kdC5nZXRQYXJhbWV0ZXIoMzU3MzkpKXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMUmVuZGVyZXIucmVhZFJlbmRlclRhcmdldFBpeGVsczogcmVuZGVyVGFyZ2V0IGlzIG5vdCBpbiBSR0JBIG9yIGltcGxlbWVudGF0aW9uIGRlZmluZWQgZm9ybWF0LiIpO2NvbnN0IGM9bD09PWIydCYmKGouaGFzKCJFWFRfY29sb3JfYnVmZmVyX2hhbGZfZmxvYXQiKXx8Ry5pc1dlYkdMMiYmai5oYXMoIkVYVF9jb2xvcl9idWZmZXJfZmxvYXQiKSk7aWYoIShsPT09ZzJ0fHx1dC5jb252ZXJ0KGwpPT09ZHQuZ2V0UGFyYW1ldGVyKDM1NzM4KXx8bD09PXYydCYmKEcuaXNXZWJHTDJ8fGouaGFzKCJPRVNfdGV4dHVyZV9mbG9hdCIpfHxqLmhhcygiV0VCR0xfY29sb3JfYnVmZmVyX2Zsb2F0IikpfHxjKSlyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFJlbmRlcmVyLnJlYWRSZW5kZXJUYXJnZXRQaXhlbHM6IHJlbmRlclRhcmdldCBpcyBub3QgaW4gVW5zaWduZWRCeXRlVHlwZSBvciBpbXBsZW1lbnRhdGlvbiBkZWZpbmVkIHR5cGUuIik7MzYwNTM9PT1kdC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKDM2MTYwKT9lPj0wJiZlPD10LndpZHRoLWkmJm4+PTAmJm48PXQuaGVpZ2h0LXImJmR0LnJlYWRQaXhlbHMoZSxuLGkscix1dC5jb252ZXJ0KHMpLHV0LmNvbnZlcnQobCksbyk6Y29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xSZW5kZXJlci5yZWFkUmVuZGVyVGFyZ2V0UGl4ZWxzOiByZWFkUGl4ZWxzIGZyb20gcmVuZGVyVGFyZ2V0IGZhaWxlZC4gRnJhbWVidWZmZXIgbm90IGNvbXBsZXRlLiIpfWZpbmFsbHl7Y29uc3QgdD1udWxsIT09Yj9ZLmdldChiKS5fX3dlYmdsRnJhbWVidWZmZXI6bnVsbDtXLmJpbmRGcmFtZWJ1ZmZlcigzNjE2MCx0KX19fSx0aGlzLmNvcHlGcmFtZWJ1ZmZlclRvVGV4dHVyZT1mdW5jdGlvbih0LGUsbj0wKXtjb25zdCBpPU1hdGgucG93KDIsLW4pLHI9TWF0aC5mbG9vcihlLmltYWdlLndpZHRoKmkpLG89TWF0aC5mbG9vcihlLmltYWdlLmhlaWdodCppKTtsZXQgYT11dC5jb252ZXJ0KGUuZm9ybWF0KTtHLmlzV2ViR0wyJiYoNjQwNz09PWEmJihhPTMyODQ5KSw2NDA4PT09YSYmKGE9MzI4NTYpKSxYLnNldFRleHR1cmUyRChlLDApLGR0LmNvcHlUZXhJbWFnZTJEKDM1NTMsbixhLHQueCx0LnkscixvLDApLFcudW5iaW5kVGV4dHVyZSgpfSx0aGlzLmNvcHlUZXh0dXJlVG9UZXh0dXJlPWZ1bmN0aW9uKHQsZSxuLGk9MCl7Y29uc3Qgcj1lLmltYWdlLndpZHRoLG89ZS5pbWFnZS5oZWlnaHQsYT11dC5jb252ZXJ0KG4uZm9ybWF0KSxzPXV0LmNvbnZlcnQobi50eXBlKTtYLnNldFRleHR1cmUyRChuLDApLGR0LnBpeGVsU3RvcmVpKDM3NDQwLG4uZmxpcFkpLGR0LnBpeGVsU3RvcmVpKDM3NDQxLG4ucHJlbXVsdGlwbHlBbHBoYSksZHQucGl4ZWxTdG9yZWkoMzMxNyxuLnVucGFja0FsaWdubWVudCksZS5pc0RhdGFUZXh0dXJlP2R0LnRleFN1YkltYWdlMkQoMzU1MyxpLHQueCx0LnkscixvLGEscyxlLmltYWdlLmRhdGEpOmUuaXNDb21wcmVzc2VkVGV4dHVyZT9kdC5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCgzNTUzLGksdC54LHQueSxlLm1pcG1hcHNbMF0ud2lkdGgsZS5taXBtYXBzWzBdLmhlaWdodCxhLGUubWlwbWFwc1swXS5kYXRhKTpkdC50ZXhTdWJJbWFnZTJEKDM1NTMsaSx0LngsdC55LGEscyxlLmltYWdlKSwwPT09aSYmbi5nZW5lcmF0ZU1pcG1hcHMmJmR0LmdlbmVyYXRlTWlwbWFwKDM1NTMpLFcudW5iaW5kVGV4dHVyZSgpfSx0aGlzLmNvcHlUZXh0dXJlVG9UZXh0dXJlM0Q9ZnVuY3Rpb24odCxlLG4saSxyPTApe2lmKGcuaXNXZWJHTDFSZW5kZXJlcilyZXR1cm4gdm9pZCBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXIuY29weVRleHR1cmVUb1RleHR1cmUzRDogY2FuIG9ubHkgYmUgdXNlZCB3aXRoIFdlYkdMMi4iKTtjb25zdCBvPXQubWF4LngtdC5taW4ueCsxLGE9dC5tYXgueS10Lm1pbi55KzEscz10Lm1heC56LXQubWluLnorMSxsPXV0LmNvbnZlcnQoaS5mb3JtYXQpLGM9dXQuY29udmVydChpLnR5cGUpO2xldCB1O2lmKGkuaXNEYXRhVGV4dHVyZTNEKVguc2V0VGV4dHVyZTNEKGksMCksdT0zMjg3OTtlbHNle2lmKCFpLmlzRGF0YVRleHR1cmUyREFycmF5KXJldHVybiB2b2lkIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlci5jb3B5VGV4dHVyZVRvVGV4dHVyZTNEOiBvbmx5IHN1cHBvcnRzIFRIUkVFLkRhdGFUZXh0dXJlM0QgYW5kIFRIUkVFLkRhdGFUZXh0dXJlMkRBcnJheS4iKTtYLnNldFRleHR1cmUyREFycmF5KGksMCksdT0zNTg2Nn1kdC5waXhlbFN0b3JlaSgzNzQ0MCxpLmZsaXBZKSxkdC5waXhlbFN0b3JlaSgzNzQ0MSxpLnByZW11bHRpcGx5QWxwaGEpLGR0LnBpeGVsU3RvcmVpKDMzMTcsaS51bnBhY2tBbGlnbm1lbnQpO2NvbnN0IGg9ZHQuZ2V0UGFyYW1ldGVyKDMzMTQpLGQ9ZHQuZ2V0UGFyYW1ldGVyKDMyODc4KSxwPWR0LmdldFBhcmFtZXRlcigzMzE2KSxmPWR0LmdldFBhcmFtZXRlcigzMzE1KSxtPWR0LmdldFBhcmFtZXRlcigzMjg3NyksXz1uLmlzQ29tcHJlc3NlZFRleHR1cmU/bi5taXBtYXBzWzBdOm4uaW1hZ2U7ZHQucGl4ZWxTdG9yZWkoMzMxNCxfLndpZHRoKSxkdC5waXhlbFN0b3JlaSgzMjg3OCxfLmhlaWdodCksZHQucGl4ZWxTdG9yZWkoMzMxNix0Lm1pbi54KSxkdC5waXhlbFN0b3JlaSgzMzE1LHQubWluLnkpLGR0LnBpeGVsU3RvcmVpKDMyODc3LHQubWluLnopLG4uaXNEYXRhVGV4dHVyZXx8bi5pc0RhdGFUZXh0dXJlM0Q/ZHQudGV4U3ViSW1hZ2UzRCh1LHIsZS54LGUueSxlLnosbyxhLHMsbCxjLF8uZGF0YSk6bi5pc0NvbXByZXNzZWRUZXh0dXJlPyhjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXIuY29weVRleHR1cmVUb1RleHR1cmUzRDogdW50ZXN0ZWQgc3VwcG9ydCBmb3IgY29tcHJlc3NlZCBzcmNUZXh0dXJlLiIpLGR0LmNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKHUscixlLngsZS55LGUueixvLGEscyxsLF8uZGF0YSkpOmR0LnRleFN1YkltYWdlM0QodSxyLGUueCxlLnksZS56LG8sYSxzLGwsYyxfKSxkdC5waXhlbFN0b3JlaSgzMzE0LGgpLGR0LnBpeGVsU3RvcmVpKDMyODc4LGQpLGR0LnBpeGVsU3RvcmVpKDMzMTYscCksZHQucGl4ZWxTdG9yZWkoMzMxNSxmKSxkdC5waXhlbFN0b3JlaSgzMjg3NyxtKSwwPT09ciYmaS5nZW5lcmF0ZU1pcG1hcHMmJmR0LmdlbmVyYXRlTWlwbWFwKHUpLFcudW5iaW5kVGV4dHVyZSgpfSx0aGlzLmluaXRUZXh0dXJlPWZ1bmN0aW9uKHQpe1guc2V0VGV4dHVyZTJEKHQsMCksVy51bmJpbmRUZXh0dXJlKCl9LHRoaXMucmVzZXRTdGF0ZT1mdW5jdGlvbigpe3k9MCx2PTAsYj1udWxsLFcucmVzZXQoKSxodC5yZXNldCgpfSwidW5kZWZpbmVkIiE9dHlwZW9mIF9fVEhSRUVfREVWVE9PTFNfXyYmX19USFJFRV9ERVZUT09MU19fLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJvYnNlcnZlIix7ZGV0YWlsOnRoaXN9KSl9Y2xhc3MgYTd0IGV4dGVuZHMgbzd0e31hN3QucHJvdG90eXBlLmlzV2ViR0wxUmVuZGVyZXI9ITA7Y2xhc3Mgczd0e2NvbnN0cnVjdG9yKHQsZT0yNWUtNSl7dGhpcy5uYW1lPSIiLHRoaXMuY29sb3I9bmV3IHM0dCh0KSx0aGlzLmRlbnNpdHk9ZX1jbG9uZSgpe3JldHVybiBuZXcgczd0KHRoaXMuY29sb3IsdGhpcy5kZW5zaXR5KX10b0pTT04oKXtyZXR1cm57dHlwZToiRm9nRXhwMiIsY29sb3I6dGhpcy5jb2xvci5nZXRIZXgoKSxkZW5zaXR5OnRoaXMuZGVuc2l0eX19fXM3dC5wcm90b3R5cGUuaXNGb2dFeHAyPSEwO2NsYXNzIGw3dHtjb25zdHJ1Y3Rvcih0LGU9MSxuPTFlMyl7dGhpcy5uYW1lPSIiLHRoaXMuY29sb3I9bmV3IHM0dCh0KSx0aGlzLm5lYXI9ZSx0aGlzLmZhcj1ufWNsb25lKCl7cmV0dXJuIG5ldyBsN3QodGhpcy5jb2xvcix0aGlzLm5lYXIsdGhpcy5mYXIpfXRvSlNPTigpe3JldHVybnt0eXBlOiJGb2ciLGNvbG9yOnRoaXMuY29sb3IuZ2V0SGV4KCksbmVhcjp0aGlzLm5lYXIsZmFyOnRoaXMuZmFyfX19bDd0LnByb3RvdHlwZS5pc0ZvZz0hMDtjbGFzcyBjN3QgZXh0ZW5kcyBWM3R7Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMudHlwZT0iU2NlbmUiLHRoaXMuYmFja2dyb3VuZD1udWxsLHRoaXMuZW52aXJvbm1lbnQ9bnVsbCx0aGlzLmZvZz1udWxsLHRoaXMub3ZlcnJpZGVNYXRlcmlhbD1udWxsLHRoaXMuYXV0b1VwZGF0ZT0hMCwidW5kZWZpbmVkIiE9dHlwZW9mIF9fVEhSRUVfREVWVE9PTFNfXyYmX19USFJFRV9ERVZUT09MU19fLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJvYnNlcnZlIix7ZGV0YWlsOnRoaXN9KSl9Y29weSh0LGUpe3JldHVybiBzdXBlci5jb3B5KHQsZSksbnVsbCE9PXQuYmFja2dyb3VuZCYmKHRoaXMuYmFja2dyb3VuZD10LmJhY2tncm91bmQuY2xvbmUoKSksbnVsbCE9PXQuZW52aXJvbm1lbnQmJih0aGlzLmVudmlyb25tZW50PXQuZW52aXJvbm1lbnQuY2xvbmUoKSksbnVsbCE9PXQuZm9nJiYodGhpcy5mb2c9dC5mb2cuY2xvbmUoKSksbnVsbCE9PXQub3ZlcnJpZGVNYXRlcmlhbCYmKHRoaXMub3ZlcnJpZGVNYXRlcmlhbD10Lm92ZXJyaWRlTWF0ZXJpYWwuY2xvbmUoKSksdGhpcy5hdXRvVXBkYXRlPXQuYXV0b1VwZGF0ZSx0aGlzLm1hdHJpeEF1dG9VcGRhdGU9dC5tYXRyaXhBdXRvVXBkYXRlLHRoaXN9dG9KU09OKHQpe2NvbnN0IGU9c3VwZXIudG9KU09OKHQpO3JldHVybiBudWxsIT09dGhpcy5mb2cmJihlLm9iamVjdC5mb2c9dGhpcy5mb2cudG9KU09OKCkpLGV9fWM3dC5wcm90b3R5cGUuaXNTY2VuZT0hMDtjbGFzcyB1N3R7Y29uc3RydWN0b3IodCxlKXt0aGlzLmFycmF5PXQsdGhpcy5zdHJpZGU9ZSx0aGlzLmNvdW50PXZvaWQgMCE9PXQ/dC5sZW5ndGgvZTowLHRoaXMudXNhZ2U9SjJ0LHRoaXMudXBkYXRlUmFuZ2U9e29mZnNldDowLGNvdW50Oi0xfSx0aGlzLnZlcnNpb249MCx0aGlzLnV1aWQ9YTV0KCl9b25VcGxvYWRDYWxsYmFjaygpe31zZXQgbmVlZHNVcGRhdGUodCl7ITA9PT10JiZ0aGlzLnZlcnNpb24rK31zZXRVc2FnZSh0KXtyZXR1cm4gdGhpcy51c2FnZT10LHRoaXN9Y29weSh0KXtyZXR1cm4gdGhpcy5hcnJheT1uZXcgdC5hcnJheS5jb25zdHJ1Y3Rvcih0LmFycmF5KSx0aGlzLmNvdW50PXQuY291bnQsdGhpcy5zdHJpZGU9dC5zdHJpZGUsdGhpcy51c2FnZT10LnVzYWdlLHRoaXN9Y29weUF0KHQsZSxuKXt0Kj10aGlzLnN0cmlkZSxuKj1lLnN0cmlkZTtmb3IobGV0IGk9MCxyPXRoaXMuc3RyaWRlO2k8cjtpKyspdGhpcy5hcnJheVt0K2ldPWUuYXJyYXlbbitpXTtyZXR1cm4gdGhpc31zZXQodCxlPTApe3JldHVybiB0aGlzLmFycmF5LnNldCh0LGUpLHRoaXN9Y2xvbmUodCl7dm9pZCAwPT09dC5hcnJheUJ1ZmZlcnMmJih0LmFycmF5QnVmZmVycz17fSksdm9pZCAwPT09dGhpcy5hcnJheS5idWZmZXIuX3V1aWQmJih0aGlzLmFycmF5LmJ1ZmZlci5fdXVpZD1hNXQoKSksdm9pZCAwPT09dC5hcnJheUJ1ZmZlcnNbdGhpcy5hcnJheS5idWZmZXIuX3V1aWRdJiYodC5hcnJheUJ1ZmZlcnNbdGhpcy5hcnJheS5idWZmZXIuX3V1aWRdPXRoaXMuYXJyYXkuc2xpY2UoMCkuYnVmZmVyKTtjb25zdCBlPW5ldyB0aGlzLmFycmF5LmNvbnN0cnVjdG9yKHQuYXJyYXlCdWZmZXJzW3RoaXMuYXJyYXkuYnVmZmVyLl91dWlkXSksbj1uZXcgdGhpcy5jb25zdHJ1Y3RvcihlLHRoaXMuc3RyaWRlKTtyZXR1cm4gbi5zZXRVc2FnZSh0aGlzLnVzYWdlKSxufW9uVXBsb2FkKHQpe3JldHVybiB0aGlzLm9uVXBsb2FkQ2FsbGJhY2s9dCx0aGlzfXRvSlNPTih0KXtyZXR1cm4gdm9pZCAwPT09dC5hcnJheUJ1ZmZlcnMmJih0LmFycmF5QnVmZmVycz17fSksdm9pZCAwPT09dGhpcy5hcnJheS5idWZmZXIuX3V1aWQmJih0aGlzLmFycmF5LmJ1ZmZlci5fdXVpZD1hNXQoKSksdm9pZCAwPT09dC5hcnJheUJ1ZmZlcnNbdGhpcy5hcnJheS5idWZmZXIuX3V1aWRdJiYodC5hcnJheUJ1ZmZlcnNbdGhpcy5hcnJheS5idWZmZXIuX3V1aWRdPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKG5ldyBVaW50MzJBcnJheSh0aGlzLmFycmF5LmJ1ZmZlcikpKSx7dXVpZDp0aGlzLnV1aWQsYnVmZmVyOnRoaXMuYXJyYXkuYnVmZmVyLl91dWlkLHR5cGU6dGhpcy5hcnJheS5jb25zdHJ1Y3Rvci5uYW1lLHN0cmlkZTp0aGlzLnN0cmlkZX19fXU3dC5wcm90b3R5cGUuaXNJbnRlcmxlYXZlZEJ1ZmZlcj0hMDtjb25zdCBoN3Q9bmV3IEg1dDtjbGFzcyBkN3R7Y29uc3RydWN0b3IodCxlLG4saT0hMSl7dGhpcy5uYW1lPSIiLHRoaXMuZGF0YT10LHRoaXMuaXRlbVNpemU9ZSx0aGlzLm9mZnNldD1uLHRoaXMubm9ybWFsaXplZD0hMD09PWl9Z2V0IGNvdW50KCl7cmV0dXJuIHRoaXMuZGF0YS5jb3VudH1nZXQgYXJyYXkoKXtyZXR1cm4gdGhpcy5kYXRhLmFycmF5fXNldCBuZWVkc1VwZGF0ZSh0KXt0aGlzLmRhdGEubmVlZHNVcGRhdGU9dH1hcHBseU1hdHJpeDQodCl7Zm9yKGxldCBlPTAsbj10aGlzLmRhdGEuY291bnQ7ZTxuO2UrKyloN3QueD10aGlzLmdldFgoZSksaDd0Lnk9dGhpcy5nZXRZKGUpLGg3dC56PXRoaXMuZ2V0WihlKSxoN3QuYXBwbHlNYXRyaXg0KHQpLHRoaXMuc2V0WFlaKGUsaDd0LngsaDd0LnksaDd0LnopO3JldHVybiB0aGlzfWFwcGx5Tm9ybWFsTWF0cml4KHQpe2ZvcihsZXQgZT0wLG49dGhpcy5jb3VudDtlPG47ZSsrKWg3dC54PXRoaXMuZ2V0WChlKSxoN3QueT10aGlzLmdldFkoZSksaDd0Lno9dGhpcy5nZXRaKGUpLGg3dC5hcHBseU5vcm1hbE1hdHJpeCh0KSx0aGlzLnNldFhZWihlLGg3dC54LGg3dC55LGg3dC56KTtyZXR1cm4gdGhpc310cmFuc2Zvcm1EaXJlY3Rpb24odCl7Zm9yKGxldCBlPTAsbj10aGlzLmNvdW50O2U8bjtlKyspaDd0Lng9dGhpcy5nZXRYKGUpLGg3dC55PXRoaXMuZ2V0WShlKSxoN3Quej10aGlzLmdldFooZSksaDd0LnRyYW5zZm9ybURpcmVjdGlvbih0KSx0aGlzLnNldFhZWihlLGg3dC54LGg3dC55LGg3dC56KTtyZXR1cm4gdGhpc31zZXRYKHQsZSl7cmV0dXJuIHRoaXMuZGF0YS5hcnJheVt0KnRoaXMuZGF0YS5zdHJpZGUrdGhpcy5vZmZzZXRdPWUsdGhpc31zZXRZKHQsZSl7cmV0dXJuIHRoaXMuZGF0YS5hcnJheVt0KnRoaXMuZGF0YS5zdHJpZGUrdGhpcy5vZmZzZXQrMV09ZSx0aGlzfXNldFoodCxlKXtyZXR1cm4gdGhpcy5kYXRhLmFycmF5W3QqdGhpcy5kYXRhLnN0cmlkZSt0aGlzLm9mZnNldCsyXT1lLHRoaXN9c2V0Vyh0LGUpe3JldHVybiB0aGlzLmRhdGEuYXJyYXlbdCp0aGlzLmRhdGEuc3RyaWRlK3RoaXMub2Zmc2V0KzNdPWUsdGhpc31nZXRYKHQpe3JldHVybiB0aGlzLmRhdGEuYXJyYXlbdCp0aGlzLmRhdGEuc3RyaWRlK3RoaXMub2Zmc2V0XX1nZXRZKHQpe3JldHVybiB0aGlzLmRhdGEuYXJyYXlbdCp0aGlzLmRhdGEuc3RyaWRlK3RoaXMub2Zmc2V0KzFdfWdldFoodCl7cmV0dXJuIHRoaXMuZGF0YS5hcnJheVt0KnRoaXMuZGF0YS5zdHJpZGUrdGhpcy5vZmZzZXQrMl19Z2V0Vyh0KXtyZXR1cm4gdGhpcy5kYXRhLmFycmF5W3QqdGhpcy5kYXRhLnN0cmlkZSt0aGlzLm9mZnNldCszXX1zZXRYWSh0LGUsbil7cmV0dXJuIHRoaXMuZGF0YS5hcnJheVsodD10KnRoaXMuZGF0YS5zdHJpZGUrdGhpcy5vZmZzZXQpKzBdPWUsdGhpcy5kYXRhLmFycmF5W3QrMV09bix0aGlzfXNldFhZWih0LGUsbixpKXtyZXR1cm4gdGhpcy5kYXRhLmFycmF5Wyh0PXQqdGhpcy5kYXRhLnN0cmlkZSt0aGlzLm9mZnNldCkrMF09ZSx0aGlzLmRhdGEuYXJyYXlbdCsxXT1uLHRoaXMuZGF0YS5hcnJheVt0KzJdPWksdGhpc31zZXRYWVpXKHQsZSxuLGkscil7cmV0dXJuIHRoaXMuZGF0YS5hcnJheVsodD10KnRoaXMuZGF0YS5zdHJpZGUrdGhpcy5vZmZzZXQpKzBdPWUsdGhpcy5kYXRhLmFycmF5W3QrMV09bix0aGlzLmRhdGEuYXJyYXlbdCsyXT1pLHRoaXMuZGF0YS5hcnJheVt0KzNdPXIsdGhpc31jbG9uZSh0KXtpZih2b2lkIDA9PT10KXtjb25zb2xlLmxvZygiVEhSRUUuSW50ZXJsZWF2ZWRCdWZmZXJBdHRyaWJ1dGUuY2xvbmUoKTogQ2xvbmluZyBhbiBpbnRlcmxhdmVkIGJ1ZmZlciBhdHRyaWJ1dGUgd2lsbCBkZWludGVybGVhdmUgYnVmZmVyIGRhdGEuIik7Y29uc3QgdD1bXTtmb3IobGV0IGU9MDtlPHRoaXMuY291bnQ7ZSsrKXtjb25zdCBuPWUqdGhpcy5kYXRhLnN0cmlkZSt0aGlzLm9mZnNldDtmb3IobGV0IGU9MDtlPHRoaXMuaXRlbVNpemU7ZSsrKXQucHVzaCh0aGlzLmRhdGEuYXJyYXlbbitlXSl9cmV0dXJuIG5ldyBoNHQobmV3IHRoaXMuYXJyYXkuY29uc3RydWN0b3IodCksdGhpcy5pdGVtU2l6ZSx0aGlzLm5vcm1hbGl6ZWQpfXJldHVybiB2b2lkIDA9PT10LmludGVybGVhdmVkQnVmZmVycyYmKHQuaW50ZXJsZWF2ZWRCdWZmZXJzPXt9KSx2b2lkIDA9PT10LmludGVybGVhdmVkQnVmZmVyc1t0aGlzLmRhdGEudXVpZF0mJih0LmludGVybGVhdmVkQnVmZmVyc1t0aGlzLmRhdGEudXVpZF09dGhpcy5kYXRhLmNsb25lKHQpKSxuZXcgZDd0KHQuaW50ZXJsZWF2ZWRCdWZmZXJzW3RoaXMuZGF0YS51dWlkXSx0aGlzLml0ZW1TaXplLHRoaXMub2Zmc2V0LHRoaXMubm9ybWFsaXplZCl9dG9KU09OKHQpe2lmKHZvaWQgMD09PXQpe2NvbnNvbGUubG9nKCJUSFJFRS5JbnRlcmxlYXZlZEJ1ZmZlckF0dHJpYnV0ZS50b0pTT04oKTogU2VyaWFsaXppbmcgYW4gaW50ZXJsYXZlZCBidWZmZXIgYXR0cmlidXRlIHdpbGwgZGVpbnRlcmxlYXZlIGJ1ZmZlciBkYXRhLiIpO2NvbnN0IHQ9W107Zm9yKGxldCBlPTA7ZTx0aGlzLmNvdW50O2UrKyl7Y29uc3Qgbj1lKnRoaXMuZGF0YS5zdHJpZGUrdGhpcy5vZmZzZXQ7Zm9yKGxldCBlPTA7ZTx0aGlzLml0ZW1TaXplO2UrKyl0LnB1c2godGhpcy5kYXRhLmFycmF5W24rZV0pfXJldHVybntpdGVtU2l6ZTp0aGlzLml0ZW1TaXplLHR5cGU6dGhpcy5hcnJheS5jb25zdHJ1Y3Rvci5uYW1lLGFycmF5OnQsbm9ybWFsaXplZDp0aGlzLm5vcm1hbGl6ZWR9fXJldHVybiB2b2lkIDA9PT10LmludGVybGVhdmVkQnVmZmVycyYmKHQuaW50ZXJsZWF2ZWRCdWZmZXJzPXt9KSx2b2lkIDA9PT10LmludGVybGVhdmVkQnVmZmVyc1t0aGlzLmRhdGEudXVpZF0mJih0LmludGVybGVhdmVkQnVmZmVyc1t0aGlzLmRhdGEudXVpZF09dGhpcy5kYXRhLnRvSlNPTih0KSkse2lzSW50ZXJsZWF2ZWRCdWZmZXJBdHRyaWJ1dGU6ITAsaXRlbVNpemU6dGhpcy5pdGVtU2l6ZSxkYXRhOnRoaXMuZGF0YS51dWlkLG9mZnNldDp0aGlzLm9mZnNldCxub3JtYWxpemVkOnRoaXMubm9ybWFsaXplZH19fWQ3dC5wcm90b3R5cGUuaXNJbnRlcmxlYXZlZEJ1ZmZlckF0dHJpYnV0ZT0hMDtjbGFzcyBwN3QgZXh0ZW5kcyB0NHR7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLnR5cGU9IlNwcml0ZU1hdGVyaWFsIix0aGlzLmNvbG9yPW5ldyBzNHQoMTY3NzcyMTUpLHRoaXMubWFwPW51bGwsdGhpcy5hbHBoYU1hcD1udWxsLHRoaXMucm90YXRpb249MCx0aGlzLnNpemVBdHRlbnVhdGlvbj0hMCx0aGlzLnRyYW5zcGFyZW50PSEwLHRoaXMuc2V0VmFsdWVzKHQpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5jb2xvci5jb3B5KHQuY29sb3IpLHRoaXMubWFwPXQubWFwLHRoaXMuYWxwaGFNYXA9dC5hbHBoYU1hcCx0aGlzLnJvdGF0aW9uPXQucm90YXRpb24sdGhpcy5zaXplQXR0ZW51YXRpb249dC5zaXplQXR0ZW51YXRpb24sdGhpc319bGV0IGY3dDtwN3QucHJvdG90eXBlLmlzU3ByaXRlTWF0ZXJpYWw9ITA7Y29uc3QgbTd0PW5ldyBINXQsZzd0PW5ldyBINXQsXzd0PW5ldyBINXQseTd0PW5ldyBDNXQsdjd0PW5ldyBDNXQsYjd0PW5ldyBnM3QseDd0PW5ldyBINXQsdzd0PW5ldyBINXQsUzd0PW5ldyBINXQsTTd0PW5ldyBDNXQsRTd0PW5ldyBDNXQsVDd0PW5ldyBDNXQ7Y2xhc3MgQzd0IGV4dGVuZHMgVjN0e2NvbnN0cnVjdG9yKHQpe2lmKHN1cGVyKCksdGhpcy50eXBlPSJTcHJpdGUiLHZvaWQgMD09PWY3dCl7Zjd0PW5ldyBONHQ7Y29uc3QgdD1uZXcgRmxvYXQzMkFycmF5KFstLjUsLS41LDAsMCwwLC41LC0uNSwwLDEsMCwuNSwuNSwwLDEsMSwtLjUsLjUsMCwwLDFdKSxlPW5ldyB1N3QodCw1KTtmN3Quc2V0SW5kZXgoWzAsMSwyLDAsMiwzXSksZjd0LnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBkN3QoZSwzLDAsITEpKSxmN3Quc2V0QXR0cmlidXRlKCJ1diIsbmV3IGQ3dChlLDIsMywhMSkpfXRoaXMuZ2VvbWV0cnk9Zjd0LHRoaXMubWF0ZXJpYWw9dm9pZCAwIT09dD90Om5ldyBwN3QsdGhpcy5jZW50ZXI9bmV3IEM1dCguNSwuNSl9cmF5Y2FzdCh0LGUpe251bGw9PT10LmNhbWVyYSYmY29uc29sZS5lcnJvcignVEhSRUUuU3ByaXRlOiAiUmF5Y2FzdGVyLmNhbWVyYSIgbmVlZHMgdG8gYmUgc2V0IGluIG9yZGVyIHRvIHJheWNhc3QgYWdhaW5zdCBzcHJpdGVzLicpLGc3dC5zZXRGcm9tTWF0cml4U2NhbGUodGhpcy5tYXRyaXhXb3JsZCksYjd0LmNvcHkodC5jYW1lcmEubWF0cml4V29ybGQpLHRoaXMubW9kZWxWaWV3TWF0cml4Lm11bHRpcGx5TWF0cmljZXModC5jYW1lcmEubWF0cml4V29ybGRJbnZlcnNlLHRoaXMubWF0cml4V29ybGQpLF83dC5zZXRGcm9tTWF0cml4UG9zaXRpb24odGhpcy5tb2RlbFZpZXdNYXRyaXgpLHQuY2FtZXJhLmlzUGVyc3BlY3RpdmVDYW1lcmEmJiExPT09dGhpcy5tYXRlcmlhbC5zaXplQXR0ZW51YXRpb24mJmc3dC5tdWx0aXBseVNjYWxhcigtXzd0LnopO2NvbnN0IG49dGhpcy5tYXRlcmlhbC5yb3RhdGlvbjtsZXQgaSxyOzAhPT1uJiYocj1NYXRoLmNvcyhuKSxpPU1hdGguc2luKG4pKTtjb25zdCBvPXRoaXMuY2VudGVyO0E3dCh4N3Quc2V0KC0uNSwtLjUsMCksXzd0LG8sZzd0LGksciksQTd0KHc3dC5zZXQoLjUsLS41LDApLF83dCxvLGc3dCxpLHIpLEE3dChTN3Quc2V0KC41LC41LDApLF83dCxvLGc3dCxpLHIpLE03dC5zZXQoMCwwKSxFN3Quc2V0KDEsMCksVDd0LnNldCgxLDEpO2xldCBhPXQucmF5LmludGVyc2VjdFRyaWFuZ2xlKHg3dCx3N3QsUzd0LCExLG03dCk7aWYobnVsbD09PWEmJihBN3Qodzd0LnNldCgtLjUsLjUsMCksXzd0LG8sZzd0LGksciksRTd0LnNldCgwLDEpLGE9dC5yYXkuaW50ZXJzZWN0VHJpYW5nbGUoeDd0LFM3dCx3N3QsITEsbTd0KSxudWxsPT09YSkpcmV0dXJuO2NvbnN0IHM9dC5yYXkub3JpZ2luLmRpc3RhbmNlVG8obTd0KTtzPHQubmVhcnx8cz50LmZhcnx8ZS5wdXNoKHtkaXN0YW5jZTpzLHBvaW50Om03dC5jbG9uZSgpLHV2OkozdC5nZXRVVihtN3QseDd0LHc3dCxTN3QsTTd0LEU3dCxUN3QsbmV3IEM1dCksZmFjZTpudWxsLG9iamVjdDp0aGlzfSl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx2b2lkIDAhPT10LmNlbnRlciYmdGhpcy5jZW50ZXIuY29weSh0LmNlbnRlciksdGhpcy5tYXRlcmlhbD10Lm1hdGVyaWFsLHRoaXN9fWZ1bmN0aW9uIEE3dCh0LGUsbixpLHIsbyl7eTd0LnN1YlZlY3RvcnModCxuKS5hZGRTY2FsYXIoLjUpLm11bHRpcGx5KGkpLHZvaWQgMCE9PXI/KHY3dC54PW8qeTd0Lngtcip5N3QueSx2N3QueT1yKnk3dC54K28qeTd0LnkpOnY3dC5jb3B5KHk3dCksdC5jb3B5KGUpLHQueCs9djd0LngsdC55Kz12N3QueSx0LmFwcGx5TWF0cml4NChiN3QpfUM3dC5wcm90b3R5cGUuaXNTcHJpdGU9ITA7Y29uc3Qgazd0PW5ldyBINXQsTDd0PW5ldyBINXQ7Y2xhc3MgUDd0IGV4dGVuZHMgVjN0e2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLl9jdXJyZW50TGV2ZWw9MCx0aGlzLnR5cGU9IkxPRCIsT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGhpcyx7bGV2ZWxzOntlbnVtZXJhYmxlOiEwLHZhbHVlOltdfSxpc0xPRDp7dmFsdWU6ITB9fSksdGhpcy5hdXRvVXBkYXRlPSEwfWNvcHkodCl7c3VwZXIuY29weSh0LCExKTtjb25zdCBlPXQubGV2ZWxzO2ZvcihsZXQgdD0wLG49ZS5sZW5ndGg7dDxuO3QrKyl7Y29uc3Qgbj1lW3RdO3RoaXMuYWRkTGV2ZWwobi5vYmplY3QuY2xvbmUoKSxuLmRpc3RhbmNlKX1yZXR1cm4gdGhpcy5hdXRvVXBkYXRlPXQuYXV0b1VwZGF0ZSx0aGlzfWFkZExldmVsKHQsZT0wKXtlPU1hdGguYWJzKGUpO2NvbnN0IG49dGhpcy5sZXZlbHM7bGV0IGk7Zm9yKGk9MDtpPG4ubGVuZ3RoJiYhKGU8bltpXS5kaXN0YW5jZSk7aSsrKTtyZXR1cm4gbi5zcGxpY2UoaSwwLHtkaXN0YW5jZTplLG9iamVjdDp0fSksdGhpcy5hZGQodCksdGhpc31nZXRDdXJyZW50TGV2ZWwoKXtyZXR1cm4gdGhpcy5fY3VycmVudExldmVsfWdldE9iamVjdEZvckRpc3RhbmNlKHQpe2NvbnN0IGU9dGhpcy5sZXZlbHM7aWYoZS5sZW5ndGg+MCl7bGV0IG4saTtmb3Iobj0xLGk9ZS5sZW5ndGg7bjxpJiYhKHQ8ZVtuXS5kaXN0YW5jZSk7bisrKTtyZXR1cm4gZVtuLTFdLm9iamVjdH1yZXR1cm4gbnVsbH1yYXljYXN0KHQsZSl7aWYodGhpcy5sZXZlbHMubGVuZ3RoPjApe2s3dC5zZXRGcm9tTWF0cml4UG9zaXRpb24odGhpcy5tYXRyaXhXb3JsZCk7Y29uc3Qgbj10LnJheS5vcmlnaW4uZGlzdGFuY2VUbyhrN3QpO3RoaXMuZ2V0T2JqZWN0Rm9yRGlzdGFuY2UobikucmF5Y2FzdCh0LGUpfX11cGRhdGUodCl7Y29uc3QgZT10aGlzLmxldmVscztpZihlLmxlbmd0aD4xKXtrN3Quc2V0RnJvbU1hdHJpeFBvc2l0aW9uKHQubWF0cml4V29ybGQpLEw3dC5zZXRGcm9tTWF0cml4UG9zaXRpb24odGhpcy5tYXRyaXhXb3JsZCk7Y29uc3Qgbj1rN3QuZGlzdGFuY2VUbyhMN3QpL3Quem9vbTtsZXQgaSxyO2ZvcihlWzBdLm9iamVjdC52aXNpYmxlPSEwLGk9MSxyPWUubGVuZ3RoO2k8ciYmbj49ZVtpXS5kaXN0YW5jZTtpKyspZVtpLTFdLm9iamVjdC52aXNpYmxlPSExLGVbaV0ub2JqZWN0LnZpc2libGU9ITA7Zm9yKHRoaXMuX2N1cnJlbnRMZXZlbD1pLTE7aTxyO2krKyllW2ldLm9iamVjdC52aXNpYmxlPSExfX10b0pTT04odCl7Y29uc3QgZT1zdXBlci50b0pTT04odCk7ITE9PT10aGlzLmF1dG9VcGRhdGUmJihlLm9iamVjdC5hdXRvVXBkYXRlPSExKSxlLm9iamVjdC5sZXZlbHM9W107Y29uc3Qgbj10aGlzLmxldmVscztmb3IobGV0IHQ9MCxpPW4ubGVuZ3RoO3Q8aTt0Kyspe2NvbnN0IGk9blt0XTtlLm9iamVjdC5sZXZlbHMucHVzaCh7b2JqZWN0Omkub2JqZWN0LnV1aWQsZGlzdGFuY2U6aS5kaXN0YW5jZX0pfXJldHVybiBlfX1jb25zdCBON3Q9bmV3IEg1dCxJN3Q9bmV3IFI1dCxSN3Q9bmV3IFI1dCxPN3Q9bmV3IEg1dCx6N3Q9bmV3IGczdDtjbGFzcyBEN3QgZXh0ZW5kcyBLNHR7Y29uc3RydWN0b3IodCxlKXtzdXBlcih0LGUpLHRoaXMudHlwZT0iU2tpbm5lZE1lc2giLHRoaXMuYmluZE1vZGU9ImF0dGFjaGVkIix0aGlzLmJpbmRNYXRyaXg9bmV3IGczdCx0aGlzLmJpbmRNYXRyaXhJbnZlcnNlPW5ldyBnM3R9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmJpbmRNb2RlPXQuYmluZE1vZGUsdGhpcy5iaW5kTWF0cml4LmNvcHkodC5iaW5kTWF0cml4KSx0aGlzLmJpbmRNYXRyaXhJbnZlcnNlLmNvcHkodC5iaW5kTWF0cml4SW52ZXJzZSksdGhpcy5za2VsZXRvbj10LnNrZWxldG9uLHRoaXN9YmluZCh0LGUpe3RoaXMuc2tlbGV0b249dCx2b2lkIDA9PT1lJiYodGhpcy51cGRhdGVNYXRyaXhXb3JsZCghMCksdGhpcy5za2VsZXRvbi5jYWxjdWxhdGVJbnZlcnNlcygpLGU9dGhpcy5tYXRyaXhXb3JsZCksdGhpcy5iaW5kTWF0cml4LmNvcHkoZSksdGhpcy5iaW5kTWF0cml4SW52ZXJzZS5jb3B5KGUpLmludmVydCgpfXBvc2UoKXt0aGlzLnNrZWxldG9uLnBvc2UoKX1ub3JtYWxpemVTa2luV2VpZ2h0cygpe2NvbnN0IHQ9bmV3IFI1dCxlPXRoaXMuZ2VvbWV0cnkuYXR0cmlidXRlcy5za2luV2VpZ2h0O2ZvcihsZXQgbj0wLGk9ZS5jb3VudDtuPGk7bisrKXt0Lng9ZS5nZXRYKG4pLHQueT1lLmdldFkobiksdC56PWUuZ2V0WihuKSx0Lnc9ZS5nZXRXKG4pO2NvbnN0IGk9MS90Lm1hbmhhdHRhbkxlbmd0aCgpO2khPT0xLzA/dC5tdWx0aXBseVNjYWxhcihpKTp0LnNldCgxLDAsMCwwKSxlLnNldFhZWlcobix0LngsdC55LHQueix0LncpfX11cGRhdGVNYXRyaXhXb3JsZCh0KXtzdXBlci51cGRhdGVNYXRyaXhXb3JsZCh0KSwiYXR0YWNoZWQiPT09dGhpcy5iaW5kTW9kZT90aGlzLmJpbmRNYXRyaXhJbnZlcnNlLmNvcHkodGhpcy5tYXRyaXhXb3JsZCkuaW52ZXJ0KCk6ImRldGFjaGVkIj09PXRoaXMuYmluZE1vZGU/dGhpcy5iaW5kTWF0cml4SW52ZXJzZS5jb3B5KHRoaXMuYmluZE1hdHJpeCkuaW52ZXJ0KCk6Y29uc29sZS53YXJuKCJUSFJFRS5Ta2lubmVkTWVzaDogVW5yZWNvZ25pemVkIGJpbmRNb2RlOiAiK3RoaXMuYmluZE1vZGUpfWJvbmVUcmFuc2Zvcm0odCxlKXtjb25zdCBuPXRoaXMuc2tlbGV0b24saT10aGlzLmdlb21ldHJ5O0k3dC5mcm9tQnVmZmVyQXR0cmlidXRlKGkuYXR0cmlidXRlcy5za2luSW5kZXgsdCksUjd0LmZyb21CdWZmZXJBdHRyaWJ1dGUoaS5hdHRyaWJ1dGVzLnNraW5XZWlnaHQsdCksTjd0LmZyb21CdWZmZXJBdHRyaWJ1dGUoaS5hdHRyaWJ1dGVzLnBvc2l0aW9uLHQpLmFwcGx5TWF0cml4NCh0aGlzLmJpbmRNYXRyaXgpLGUuc2V0KDAsMCwwKTtmb3IobGV0IHQ9MDt0PDQ7dCsrKXtjb25zdCBpPVI3dC5nZXRDb21wb25lbnQodCk7aWYoMCE9PWkpe2NvbnN0IHI9STd0LmdldENvbXBvbmVudCh0KTt6N3QubXVsdGlwbHlNYXRyaWNlcyhuLmJvbmVzW3JdLm1hdHJpeFdvcmxkLG4uYm9uZUludmVyc2VzW3JdKSxlLmFkZFNjYWxlZFZlY3RvcihPN3QuY29weShON3QpLmFwcGx5TWF0cml4NCh6N3QpLGkpfX1yZXR1cm4gZS5hcHBseU1hdHJpeDQodGhpcy5iaW5kTWF0cml4SW52ZXJzZSl9fUQ3dC5wcm90b3R5cGUuaXNTa2lubmVkTWVzaD0hMDtjbGFzcyBCN3QgZXh0ZW5kcyBWM3R7Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMudHlwZT0iQm9uZSJ9fUI3dC5wcm90b3R5cGUuaXNCb25lPSEwO2NsYXNzIEg3dCBleHRlbmRzIE41dHtjb25zdHJ1Y3Rvcih0PW51bGwsZT0xLG49MSxpLHIsbyxhLHMsbD0xMDAzLGM9MTAwMyx1LGgpe3N1cGVyKG51bGwsbyxhLHMsbCxjLGkscix1LGgpLHRoaXMuaW1hZ2U9e2RhdGE6dCx3aWR0aDplLGhlaWdodDpufSx0aGlzLm1hZ0ZpbHRlcj1sLHRoaXMubWluRmlsdGVyPWMsdGhpcy5nZW5lcmF0ZU1pcG1hcHM9ITEsdGhpcy5mbGlwWT0hMSx0aGlzLnVucGFja0FsaWdubWVudD0xLHRoaXMubmVlZHNVcGRhdGU9ITB9fUg3dC5wcm90b3R5cGUuaXNEYXRhVGV4dHVyZT0hMDtjb25zdCBGN3Q9bmV3IGczdCxWN3Q9bmV3IGczdDtjbGFzcyBVN3R7Y29uc3RydWN0b3IodD1bXSxlPVtdKXt0aGlzLnV1aWQ9YTV0KCksdGhpcy5ib25lcz10LnNsaWNlKDApLHRoaXMuYm9uZUludmVyc2VzPWUsdGhpcy5ib25lTWF0cmljZXM9bnVsbCx0aGlzLmJvbmVUZXh0dXJlPW51bGwsdGhpcy5ib25lVGV4dHVyZVNpemU9MCx0aGlzLmZyYW1lPS0xLHRoaXMuaW5pdCgpfWluaXQoKXtjb25zdCB0PXRoaXMuYm9uZXMsZT10aGlzLmJvbmVJbnZlcnNlcztpZih0aGlzLmJvbmVNYXRyaWNlcz1uZXcgRmxvYXQzMkFycmF5KDE2KnQubGVuZ3RoKSwwPT09ZS5sZW5ndGgpdGhpcy5jYWxjdWxhdGVJbnZlcnNlcygpO2Vsc2UgaWYodC5sZW5ndGghPT1lLmxlbmd0aCl7Y29uc29sZS53YXJuKCJUSFJFRS5Ta2VsZXRvbjogTnVtYmVyIG9mIGludmVyc2UgYm9uZSBtYXRyaWNlcyBkb2VzIG5vdCBtYXRjaCBhbW91bnQgb2YgYm9uZXMuIiksdGhpcy5ib25lSW52ZXJzZXM9W107Zm9yKGxldCB0PTAsZT10aGlzLmJvbmVzLmxlbmd0aDt0PGU7dCsrKXRoaXMuYm9uZUludmVyc2VzLnB1c2gobmV3IGczdCl9fWNhbGN1bGF0ZUludmVyc2VzKCl7dGhpcy5ib25lSW52ZXJzZXMubGVuZ3RoPTA7Zm9yKGxldCB0PTAsZT10aGlzLmJvbmVzLmxlbmd0aDt0PGU7dCsrKXtjb25zdCBlPW5ldyBnM3Q7dGhpcy5ib25lc1t0XSYmZS5jb3B5KHRoaXMuYm9uZXNbdF0ubWF0cml4V29ybGQpLmludmVydCgpLHRoaXMuYm9uZUludmVyc2VzLnB1c2goZSl9fXBvc2UoKXtmb3IobGV0IHQ9MCxlPXRoaXMuYm9uZXMubGVuZ3RoO3Q8ZTt0Kyspe2NvbnN0IGU9dGhpcy5ib25lc1t0XTtlJiZlLm1hdHJpeFdvcmxkLmNvcHkodGhpcy5ib25lSW52ZXJzZXNbdF0pLmludmVydCgpfWZvcihsZXQgdD0wLGU9dGhpcy5ib25lcy5sZW5ndGg7dDxlO3QrKyl7Y29uc3QgZT10aGlzLmJvbmVzW3RdO2UmJihlLnBhcmVudCYmZS5wYXJlbnQuaXNCb25lPyhlLm1hdHJpeC5jb3B5KGUucGFyZW50Lm1hdHJpeFdvcmxkKS5pbnZlcnQoKSxlLm1hdHJpeC5tdWx0aXBseShlLm1hdHJpeFdvcmxkKSk6ZS5tYXRyaXguY29weShlLm1hdHJpeFdvcmxkKSxlLm1hdHJpeC5kZWNvbXBvc2UoZS5wb3NpdGlvbixlLnF1YXRlcm5pb24sZS5zY2FsZSkpfX11cGRhdGUoKXtjb25zdCB0PXRoaXMuYm9uZXMsZT10aGlzLmJvbmVJbnZlcnNlcyxuPXRoaXMuYm9uZU1hdHJpY2VzLGk9dGhpcy5ib25lVGV4dHVyZTtmb3IobGV0IGk9MCxyPXQubGVuZ3RoO2k8cjtpKyspe0Y3dC5tdWx0aXBseU1hdHJpY2VzKHRbaV0/dFtpXS5tYXRyaXhXb3JsZDpWN3QsZVtpXSksRjd0LnRvQXJyYXkobiwxNippKX1udWxsIT09aSYmKGkubmVlZHNVcGRhdGU9ITApfWNsb25lKCl7cmV0dXJuIG5ldyBVN3QodGhpcy5ib25lcyx0aGlzLmJvbmVJbnZlcnNlcyl9Y29tcHV0ZUJvbmVUZXh0dXJlKCl7bGV0IHQ9TWF0aC5zcXJ0KDQqdGhpcy5ib25lcy5sZW5ndGgpO3Q9aDV0KHQpLHQ9TWF0aC5tYXgodCw0KTtjb25zdCBlPW5ldyBGbG9hdDMyQXJyYXkodCp0KjQpO2Uuc2V0KHRoaXMuYm9uZU1hdHJpY2VzKTtjb25zdCBuPW5ldyBIN3QoZSx0LHQsUzJ0LHYydCk7cmV0dXJuIHRoaXMuYm9uZU1hdHJpY2VzPWUsdGhpcy5ib25lVGV4dHVyZT1uLHRoaXMuYm9uZVRleHR1cmVTaXplPXQsdGhpc31nZXRCb25lQnlOYW1lKHQpe2ZvcihsZXQgZT0wLG49dGhpcy5ib25lcy5sZW5ndGg7ZTxuO2UrKyl7Y29uc3Qgbj10aGlzLmJvbmVzW2VdO2lmKG4ubmFtZT09PXQpcmV0dXJuIG59fWRpc3Bvc2UoKXtudWxsIT09dGhpcy5ib25lVGV4dHVyZSYmKHRoaXMuYm9uZVRleHR1cmUuZGlzcG9zZSgpLHRoaXMuYm9uZVRleHR1cmU9bnVsbCl9ZnJvbUpTT04odCxlKXt0aGlzLnV1aWQ9dC51dWlkO2ZvcihsZXQgbj0wLGk9dC5ib25lcy5sZW5ndGg7bjxpO24rKyl7Y29uc3QgaT10LmJvbmVzW25dO2xldCByPWVbaV07dm9pZCAwPT09ciYmKGNvbnNvbGUud2FybigiVEhSRUUuU2tlbGV0b246IE5vIGJvbmUgZm91bmQgd2l0aCBVVUlEOiIsaSkscj1uZXcgQjd0KSx0aGlzLmJvbmVzLnB1c2gociksdGhpcy5ib25lSW52ZXJzZXMucHVzaCgobmV3IGczdCkuZnJvbUFycmF5KHQuYm9uZUludmVyc2VzW25dKSl9cmV0dXJuIHRoaXMuaW5pdCgpLHRoaXN9dG9KU09OKCl7Y29uc3QgdD17bWV0YWRhdGE6e3ZlcnNpb246NC41LHR5cGU6IlNrZWxldG9uIixnZW5lcmF0b3I6IlNrZWxldG9uLnRvSlNPTiJ9LGJvbmVzOltdLGJvbmVJbnZlcnNlczpbXX07dC51dWlkPXRoaXMudXVpZDtjb25zdCBlPXRoaXMuYm9uZXMsbj10aGlzLmJvbmVJbnZlcnNlcztmb3IobGV0IGk9MCxyPWUubGVuZ3RoO2k8cjtpKyspe3QuYm9uZXMucHVzaChlW2ldLnV1aWQpO3QuYm9uZUludmVyc2VzLnB1c2gobltpXS50b0FycmF5KCkpfXJldHVybiB0fX1jb25zdCBqN3Q9bmV3IGczdCxHN3Q9bmV3IGczdCxXN3Q9W10scTd0PW5ldyBLNHQ7Y2xhc3MgWTd0IGV4dGVuZHMgSzR0e2NvbnN0cnVjdG9yKHQsZSxuKXtzdXBlcih0LGUpLHRoaXMuaW5zdGFuY2VNYXRyaXg9bmV3IGg0dChuZXcgRmxvYXQzMkFycmF5KDE2Km4pLDE2KSx0aGlzLmluc3RhbmNlQ29sb3I9bnVsbCx0aGlzLmNvdW50PW4sdGhpcy5mcnVzdHVtQ3VsbGVkPSExfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5pbnN0YW5jZU1hdHJpeC5jb3B5KHQuaW5zdGFuY2VNYXRyaXgpLG51bGwhPT10Lmluc3RhbmNlQ29sb3ImJih0aGlzLmluc3RhbmNlQ29sb3I9dC5pbnN0YW5jZUNvbG9yLmNsb25lKCkpLHRoaXMuY291bnQ9dC5jb3VudCx0aGlzfWdldENvbG9yQXQodCxlKXtlLmZyb21BcnJheSh0aGlzLmluc3RhbmNlQ29sb3IuYXJyYXksMyp0KX1nZXRNYXRyaXhBdCh0LGUpe2UuZnJvbUFycmF5KHRoaXMuaW5zdGFuY2VNYXRyaXguYXJyYXksMTYqdCl9cmF5Y2FzdCh0LGUpe2NvbnN0IG49dGhpcy5tYXRyaXhXb3JsZCxpPXRoaXMuY291bnQ7aWYocTd0Lmdlb21ldHJ5PXRoaXMuZ2VvbWV0cnkscTd0Lm1hdGVyaWFsPXRoaXMubWF0ZXJpYWwsdm9pZCAwIT09cTd0Lm1hdGVyaWFsKWZvcihsZXQgcj0wO3I8aTtyKyspe3RoaXMuZ2V0TWF0cml4QXQocixqN3QpLEc3dC5tdWx0aXBseU1hdHJpY2VzKG4sajd0KSxxN3QubWF0cml4V29ybGQ9Rzd0LHE3dC5yYXljYXN0KHQsVzd0KTtmb3IobGV0IHQ9MCxuPVc3dC5sZW5ndGg7dDxuO3QrKyl7Y29uc3Qgbj1XN3RbdF07bi5pbnN0YW5jZUlkPXIsbi5vYmplY3Q9dGhpcyxlLnB1c2gobil9Vzd0Lmxlbmd0aD0wfX1zZXRDb2xvckF0KHQsZSl7bnVsbD09PXRoaXMuaW5zdGFuY2VDb2xvciYmKHRoaXMuaW5zdGFuY2VDb2xvcj1uZXcgaDR0KG5ldyBGbG9hdDMyQXJyYXkoMyp0aGlzLmluc3RhbmNlTWF0cml4LmNvdW50KSwzKSksZS50b0FycmF5KHRoaXMuaW5zdGFuY2VDb2xvci5hcnJheSwzKnQpfXNldE1hdHJpeEF0KHQsZSl7ZS50b0FycmF5KHRoaXMuaW5zdGFuY2VNYXRyaXguYXJyYXksMTYqdCl9dXBkYXRlTW9ycGhUYXJnZXRzKCl7fWRpc3Bvc2UoKXt0aGlzLmRpc3BhdGNoRXZlbnQoe3R5cGU6ImRpc3Bvc2UifSl9fVk3dC5wcm90b3R5cGUuaXNJbnN0YW5jZWRNZXNoPSEwO2NsYXNzIFg3dCBleHRlbmRzIHQ0dHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMudHlwZT0iTGluZUJhc2ljTWF0ZXJpYWwiLHRoaXMuY29sb3I9bmV3IHM0dCgxNjc3NzIxNSksdGhpcy5saW5ld2lkdGg9MSx0aGlzLmxpbmVjYXA9InJvdW5kIix0aGlzLmxpbmVqb2luPSJyb3VuZCIsdGhpcy5zZXRWYWx1ZXModCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmNvbG9yLmNvcHkodC5jb2xvciksdGhpcy5saW5ld2lkdGg9dC5saW5ld2lkdGgsdGhpcy5saW5lY2FwPXQubGluZWNhcCx0aGlzLmxpbmVqb2luPXQubGluZWpvaW4sdGhpc319WDd0LnByb3RvdHlwZS5pc0xpbmVCYXNpY01hdGVyaWFsPSEwO2NvbnN0ICQ3dD1uZXcgSDV0LEs3dD1uZXcgSDV0LFo3dD1uZXcgZzN0LEo3dD1uZXcgbTN0LFE3dD1uZXcgczN0O2NsYXNzIHR0ZSBleHRlbmRzIFYzdHtjb25zdHJ1Y3Rvcih0PW5ldyBONHQsZT1uZXcgWDd0KXtzdXBlcigpLHRoaXMudHlwZT0iTGluZSIsdGhpcy5nZW9tZXRyeT10LHRoaXMubWF0ZXJpYWw9ZSx0aGlzLnVwZGF0ZU1vcnBoVGFyZ2V0cygpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5tYXRlcmlhbD10Lm1hdGVyaWFsLHRoaXMuZ2VvbWV0cnk9dC5nZW9tZXRyeSx0aGlzfWNvbXB1dGVMaW5lRGlzdGFuY2VzKCl7Y29uc3QgdD10aGlzLmdlb21ldHJ5O2lmKHQuaXNCdWZmZXJHZW9tZXRyeSlpZihudWxsPT09dC5pbmRleCl7Y29uc3QgZT10LmF0dHJpYnV0ZXMucG9zaXRpb24sbj1bMF07Zm9yKGxldCB0PTEsaT1lLmNvdW50O3Q8aTt0KyspJDd0LmZyb21CdWZmZXJBdHRyaWJ1dGUoZSx0LTEpLEs3dC5mcm9tQnVmZmVyQXR0cmlidXRlKGUsdCksblt0XT1uW3QtMV0sblt0XSs9JDd0LmRpc3RhbmNlVG8oSzd0KTt0LnNldEF0dHJpYnV0ZSgibGluZURpc3RhbmNlIixuZXcgYjR0KG4sMSkpfWVsc2UgY29uc29sZS53YXJuKCJUSFJFRS5MaW5lLmNvbXB1dGVMaW5lRGlzdGFuY2VzKCk6IENvbXB1dGF0aW9uIG9ubHkgcG9zc2libGUgd2l0aCBub24taW5kZXhlZCBCdWZmZXJHZW9tZXRyeS4iKTtlbHNlIHQuaXNHZW9tZXRyeSYmY29uc29sZS5lcnJvcigiVEhSRUUuTGluZS5jb21wdXRlTGluZURpc3RhbmNlcygpIG5vIGxvbmdlciBzdXBwb3J0cyBUSFJFRS5HZW9tZXRyeS4gVXNlIFRIUkVFLkJ1ZmZlckdlb21ldHJ5IGluc3RlYWQuIik7cmV0dXJuIHRoaXN9cmF5Y2FzdCh0LGUpe2NvbnN0IG49dGhpcy5nZW9tZXRyeSxpPXRoaXMubWF0cml4V29ybGQscj10LnBhcmFtcy5MaW5lLnRocmVzaG9sZCxvPW4uZHJhd1JhbmdlO2lmKG51bGw9PT1uLmJvdW5kaW5nU3BoZXJlJiZuLmNvbXB1dGVCb3VuZGluZ1NwaGVyZSgpLFE3dC5jb3B5KG4uYm91bmRpbmdTcGhlcmUpLFE3dC5hcHBseU1hdHJpeDQoaSksUTd0LnJhZGl1cys9ciwhMT09PXQucmF5LmludGVyc2VjdHNTcGhlcmUoUTd0KSlyZXR1cm47Wjd0LmNvcHkoaSkuaW52ZXJ0KCksSjd0LmNvcHkodC5yYXkpLmFwcGx5TWF0cml4NChaN3QpO2NvbnN0IGE9ci8oKHRoaXMuc2NhbGUueCt0aGlzLnNjYWxlLnkrdGhpcy5zY2FsZS56KS8zKSxzPWEqYSxsPW5ldyBINXQsYz1uZXcgSDV0LHU9bmV3IEg1dCxoPW5ldyBINXQsZD10aGlzLmlzTGluZVNlZ21lbnRzPzI6MTtpZihuLmlzQnVmZmVyR2VvbWV0cnkpe2NvbnN0IGk9bi5pbmRleCxyPW4uYXR0cmlidXRlcy5wb3NpdGlvbjtpZihudWxsIT09aSl7Zm9yKGxldCBuPU1hdGgubWF4KDAsby5zdGFydCksYT1NYXRoLm1pbihpLmNvdW50LG8uc3RhcnQrby5jb3VudCktMTtuPGE7bis9ZCl7Y29uc3Qgbz1pLmdldFgobiksYT1pLmdldFgobisxKTtsLmZyb21CdWZmZXJBdHRyaWJ1dGUocixvKSxjLmZyb21CdWZmZXJBdHRyaWJ1dGUocixhKTtpZihKN3QuZGlzdGFuY2VTcVRvU2VnbWVudChsLGMsaCx1KT5zKWNvbnRpbnVlO2guYXBwbHlNYXRyaXg0KHRoaXMubWF0cml4V29ybGQpO2NvbnN0IGQ9dC5yYXkub3JpZ2luLmRpc3RhbmNlVG8oaCk7ZDx0Lm5lYXJ8fGQ+dC5mYXJ8fGUucHVzaCh7ZGlzdGFuY2U6ZCxwb2ludDp1LmNsb25lKCkuYXBwbHlNYXRyaXg0KHRoaXMubWF0cml4V29ybGQpLGluZGV4Om4sZmFjZTpudWxsLGZhY2VJbmRleDpudWxsLG9iamVjdDp0aGlzfSl9fWVsc2V7Zm9yKGxldCBuPU1hdGgubWF4KDAsby5zdGFydCksaT1NYXRoLm1pbihyLmNvdW50LG8uc3RhcnQrby5jb3VudCktMTtuPGk7bis9ZCl7bC5mcm9tQnVmZmVyQXR0cmlidXRlKHIsbiksYy5mcm9tQnVmZmVyQXR0cmlidXRlKHIsbisxKTtpZihKN3QuZGlzdGFuY2VTcVRvU2VnbWVudChsLGMsaCx1KT5zKWNvbnRpbnVlO2guYXBwbHlNYXRyaXg0KHRoaXMubWF0cml4V29ybGQpO2NvbnN0IGk9dC5yYXkub3JpZ2luLmRpc3RhbmNlVG8oaCk7aTx0Lm5lYXJ8fGk+dC5mYXJ8fGUucHVzaCh7ZGlzdGFuY2U6aSxwb2ludDp1LmNsb25lKCkuYXBwbHlNYXRyaXg0KHRoaXMubWF0cml4V29ybGQpLGluZGV4Om4sZmFjZTpudWxsLGZhY2VJbmRleDpudWxsLG9iamVjdDp0aGlzfSl9fX1lbHNlIG4uaXNHZW9tZXRyeSYmY29uc29sZS5lcnJvcigiVEhSRUUuTGluZS5yYXljYXN0KCkgbm8gbG9uZ2VyIHN1cHBvcnRzIFRIUkVFLkdlb21ldHJ5LiBVc2UgVEhSRUUuQnVmZmVyR2VvbWV0cnkgaW5zdGVhZC4iKX11cGRhdGVNb3JwaFRhcmdldHMoKXtjb25zdCB0PXRoaXMuZ2VvbWV0cnk7aWYodC5pc0J1ZmZlckdlb21ldHJ5KXtjb25zdCBlPXQubW9ycGhBdHRyaWJ1dGVzLG49T2JqZWN0LmtleXMoZSk7aWYobi5sZW5ndGg+MCl7Y29uc3QgdD1lW25bMF1dO2lmKHZvaWQgMCE9PXQpe3RoaXMubW9ycGhUYXJnZXRJbmZsdWVuY2VzPVtdLHRoaXMubW9ycGhUYXJnZXREaWN0aW9uYXJ5PXt9O2ZvcihsZXQgZT0wLG49dC5sZW5ndGg7ZTxuO2UrKyl7Y29uc3Qgbj10W2VdLm5hbWV8fFN0cmluZyhlKTt0aGlzLm1vcnBoVGFyZ2V0SW5mbHVlbmNlcy5wdXNoKDApLHRoaXMubW9ycGhUYXJnZXREaWN0aW9uYXJ5W25dPWV9fX19ZWxzZXtjb25zdCBlPXQubW9ycGhUYXJnZXRzO3ZvaWQgMCE9PWUmJmUubGVuZ3RoPjAmJmNvbnNvbGUuZXJyb3IoIlRIUkVFLkxpbmUudXBkYXRlTW9ycGhUYXJnZXRzKCkgZG9lcyBub3Qgc3VwcG9ydCBUSFJFRS5HZW9tZXRyeS4gVXNlIFRIUkVFLkJ1ZmZlckdlb21ldHJ5IGluc3RlYWQuIil9fX10dGUucHJvdG90eXBlLmlzTGluZT0hMDtjb25zdCBldGU9bmV3IEg1dCxudGU9bmV3IEg1dDtjbGFzcyBpdGUgZXh0ZW5kcyB0dGV7Y29uc3RydWN0b3IodCxlKXtzdXBlcih0LGUpLHRoaXMudHlwZT0iTGluZVNlZ21lbnRzIn1jb21wdXRlTGluZURpc3RhbmNlcygpe2NvbnN0IHQ9dGhpcy5nZW9tZXRyeTtpZih0LmlzQnVmZmVyR2VvbWV0cnkpaWYobnVsbD09PXQuaW5kZXgpe2NvbnN0IGU9dC5hdHRyaWJ1dGVzLnBvc2l0aW9uLG49W107Zm9yKGxldCB0PTAsaT1lLmNvdW50O3Q8aTt0Kz0yKWV0ZS5mcm9tQnVmZmVyQXR0cmlidXRlKGUsdCksbnRlLmZyb21CdWZmZXJBdHRyaWJ1dGUoZSx0KzEpLG5bdF09MD09PXQ/MDpuW3QtMV0sblt0KzFdPW5bdF0rZXRlLmRpc3RhbmNlVG8obnRlKTt0LnNldEF0dHJpYnV0ZSgibGluZURpc3RhbmNlIixuZXcgYjR0KG4sMSkpfWVsc2UgY29uc29sZS53YXJuKCJUSFJFRS5MaW5lU2VnbWVudHMuY29tcHV0ZUxpbmVEaXN0YW5jZXMoKTogQ29tcHV0YXRpb24gb25seSBwb3NzaWJsZSB3aXRoIG5vbi1pbmRleGVkIEJ1ZmZlckdlb21ldHJ5LiIpO2Vsc2UgdC5pc0dlb21ldHJ5JiZjb25zb2xlLmVycm9yKCJUSFJFRS5MaW5lU2VnbWVudHMuY29tcHV0ZUxpbmVEaXN0YW5jZXMoKSBubyBsb25nZXIgc3VwcG9ydHMgVEhSRUUuR2VvbWV0cnkuIFVzZSBUSFJFRS5CdWZmZXJHZW9tZXRyeSBpbnN0ZWFkLiIpO3JldHVybiB0aGlzfX1pdGUucHJvdG90eXBlLmlzTGluZVNlZ21lbnRzPSEwO2NsYXNzIHJ0ZSBleHRlbmRzIHR0ZXtjb25zdHJ1Y3Rvcih0LGUpe3N1cGVyKHQsZSksdGhpcy50eXBlPSJMaW5lTG9vcCJ9fXJ0ZS5wcm90b3R5cGUuaXNMaW5lTG9vcD0hMDtjbGFzcyBvdGUgZXh0ZW5kcyB0NHR7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLnR5cGU9IlBvaW50c01hdGVyaWFsIix0aGlzLmNvbG9yPW5ldyBzNHQoMTY3NzcyMTUpLHRoaXMubWFwPW51bGwsdGhpcy5hbHBoYU1hcD1udWxsLHRoaXMuc2l6ZT0xLHRoaXMuc2l6ZUF0dGVudWF0aW9uPSEwLHRoaXMuc2V0VmFsdWVzKHQpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5jb2xvci5jb3B5KHQuY29sb3IpLHRoaXMubWFwPXQubWFwLHRoaXMuYWxwaGFNYXA9dC5hbHBoYU1hcCx0aGlzLnNpemU9dC5zaXplLHRoaXMuc2l6ZUF0dGVudWF0aW9uPXQuc2l6ZUF0dGVudWF0aW9uLHRoaXN9fW90ZS5wcm90b3R5cGUuaXNQb2ludHNNYXRlcmlhbD0hMDtjb25zdCBhdGU9bmV3IGczdCxzdGU9bmV3IG0zdCxsdGU9bmV3IHMzdCxjdGU9bmV3IEg1dDtjbGFzcyB1dGUgZXh0ZW5kcyBWM3R7Y29uc3RydWN0b3IodD1uZXcgTjR0LGU9bmV3IG90ZSl7c3VwZXIoKSx0aGlzLnR5cGU9IlBvaW50cyIsdGhpcy5nZW9tZXRyeT10LHRoaXMubWF0ZXJpYWw9ZSx0aGlzLnVwZGF0ZU1vcnBoVGFyZ2V0cygpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5tYXRlcmlhbD10Lm1hdGVyaWFsLHRoaXMuZ2VvbWV0cnk9dC5nZW9tZXRyeSx0aGlzfXJheWNhc3QodCxlKXtjb25zdCBuPXRoaXMuZ2VvbWV0cnksaT10aGlzLm1hdHJpeFdvcmxkLHI9dC5wYXJhbXMuUG9pbnRzLnRocmVzaG9sZCxvPW4uZHJhd1JhbmdlO2lmKG51bGw9PT1uLmJvdW5kaW5nU3BoZXJlJiZuLmNvbXB1dGVCb3VuZGluZ1NwaGVyZSgpLGx0ZS5jb3B5KG4uYm91bmRpbmdTcGhlcmUpLGx0ZS5hcHBseU1hdHJpeDQoaSksbHRlLnJhZGl1cys9ciwhMT09PXQucmF5LmludGVyc2VjdHNTcGhlcmUobHRlKSlyZXR1cm47YXRlLmNvcHkoaSkuaW52ZXJ0KCksc3RlLmNvcHkodC5yYXkpLmFwcGx5TWF0cml4NChhdGUpO2NvbnN0IGE9ci8oKHRoaXMuc2NhbGUueCt0aGlzLnNjYWxlLnkrdGhpcy5zY2FsZS56KS8zKSxzPWEqYTtpZihuLmlzQnVmZmVyR2VvbWV0cnkpe2NvbnN0IHI9bi5pbmRleCxhPW4uYXR0cmlidXRlcy5wb3NpdGlvbjtpZihudWxsIT09cil7Zm9yKGxldCBuPU1hdGgubWF4KDAsby5zdGFydCksbD1NYXRoLm1pbihyLmNvdW50LG8uc3RhcnQrby5jb3VudCk7bjxsO24rKyl7Y29uc3Qgbz1yLmdldFgobik7Y3RlLmZyb21CdWZmZXJBdHRyaWJ1dGUoYSxvKSxodGUoY3RlLG8scyxpLHQsZSx0aGlzKX19ZWxzZXtmb3IobGV0IG49TWF0aC5tYXgoMCxvLnN0YXJ0KSxyPU1hdGgubWluKGEuY291bnQsby5zdGFydCtvLmNvdW50KTtuPHI7bisrKWN0ZS5mcm9tQnVmZmVyQXR0cmlidXRlKGEsbiksaHRlKGN0ZSxuLHMsaSx0LGUsdGhpcyl9fWVsc2UgY29uc29sZS5lcnJvcigiVEhSRUUuUG9pbnRzLnJheWNhc3QoKSBubyBsb25nZXIgc3VwcG9ydHMgVEhSRUUuR2VvbWV0cnkuIFVzZSBUSFJFRS5CdWZmZXJHZW9tZXRyeSBpbnN0ZWFkLiIpfXVwZGF0ZU1vcnBoVGFyZ2V0cygpe2NvbnN0IHQ9dGhpcy5nZW9tZXRyeTtpZih0LmlzQnVmZmVyR2VvbWV0cnkpe2NvbnN0IGU9dC5tb3JwaEF0dHJpYnV0ZXMsbj1PYmplY3Qua2V5cyhlKTtpZihuLmxlbmd0aD4wKXtjb25zdCB0PWVbblswXV07aWYodm9pZCAwIT09dCl7dGhpcy5tb3JwaFRhcmdldEluZmx1ZW5jZXM9W10sdGhpcy5tb3JwaFRhcmdldERpY3Rpb25hcnk9e307Zm9yKGxldCBlPTAsbj10Lmxlbmd0aDtlPG47ZSsrKXtjb25zdCBuPXRbZV0ubmFtZXx8U3RyaW5nKGUpO3RoaXMubW9ycGhUYXJnZXRJbmZsdWVuY2VzLnB1c2goMCksdGhpcy5tb3JwaFRhcmdldERpY3Rpb25hcnlbbl09ZX19fX1lbHNle2NvbnN0IGU9dC5tb3JwaFRhcmdldHM7dm9pZCAwIT09ZSYmZS5sZW5ndGg+MCYmY29uc29sZS5lcnJvcigiVEhSRUUuUG9pbnRzLnVwZGF0ZU1vcnBoVGFyZ2V0cygpIGRvZXMgbm90IHN1cHBvcnQgVEhSRUUuR2VvbWV0cnkuIFVzZSBUSFJFRS5CdWZmZXJHZW9tZXRyeSBpbnN0ZWFkLiIpfX19ZnVuY3Rpb24gaHRlKHQsZSxuLGkscixvLGEpe2NvbnN0IHM9c3RlLmRpc3RhbmNlU3FUb1BvaW50KHQpO2lmKHM8bil7Y29uc3Qgbj1uZXcgSDV0O3N0ZS5jbG9zZXN0UG9pbnRUb1BvaW50KHQsbiksbi5hcHBseU1hdHJpeDQoaSk7Y29uc3QgbD1yLnJheS5vcmlnaW4uZGlzdGFuY2VUbyhuKTtpZihsPHIubmVhcnx8bD5yLmZhcilyZXR1cm47by5wdXNoKHtkaXN0YW5jZTpsLGRpc3RhbmNlVG9SYXk6TWF0aC5zcXJ0KHMpLHBvaW50Om4saW5kZXg6ZSxmYWNlOm51bGwsb2JqZWN0OmF9KX19dXRlLnByb3RvdHlwZS5pc1BvaW50cz0hMDtjbGFzcyBkdGUgZXh0ZW5kcyBONXR7Y29uc3RydWN0b3IodCxlLG4saSxyLG8sYSxzLGwpe3N1cGVyKHQsZSxuLGkscixvLGEscyxsKSx0aGlzLmZvcm1hdD12b2lkIDAhPT1hP2E6dzJ0LHRoaXMubWluRmlsdGVyPXZvaWQgMCE9PW8/bzpwMnQsdGhpcy5tYWdGaWx0ZXI9dm9pZCAwIT09cj9yOnAydCx0aGlzLmdlbmVyYXRlTWlwbWFwcz0hMTtjb25zdCBjPXRoaXM7InJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2siaW4gdCYmdC5yZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrKChmdW5jdGlvbiBlKCl7Yy5uZWVkc1VwZGF0ZT0hMCx0LnJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2soZSl9KSl9Y2xvbmUoKXtyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IodGhpcy5pbWFnZSkuY29weSh0aGlzKX11cGRhdGUoKXtjb25zdCB0PXRoaXMuaW1hZ2U7ITE9PT0icmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFjayJpbiB0JiZ0LnJlYWR5U3RhdGU+PXQuSEFWRV9DVVJSRU5UX0RBVEEmJih0aGlzLm5lZWRzVXBkYXRlPSEwKX19ZHRlLnByb3RvdHlwZS5pc1ZpZGVvVGV4dHVyZT0hMDtjbGFzcyBwdGUgZXh0ZW5kcyBONXR7Y29uc3RydWN0b3IodCxlLG4saSxyLG8sYSxzLGwsYyx1LGgpe3N1cGVyKG51bGwsbyxhLHMsbCxjLGkscix1LGgpLHRoaXMuaW1hZ2U9e3dpZHRoOmUsaGVpZ2h0Om59LHRoaXMubWlwbWFwcz10LHRoaXMuZmxpcFk9ITEsdGhpcy5nZW5lcmF0ZU1pcG1hcHM9ITF9fXB0ZS5wcm90b3R5cGUuaXNDb21wcmVzc2VkVGV4dHVyZT0hMDtjbGFzcyBmdGUgZXh0ZW5kcyBONXR7Y29uc3RydWN0b3IodCxlLG4saSxyLG8sYSxzLGwpe3N1cGVyKHQsZSxuLGkscixvLGEscyxsKSx0aGlzLm5lZWRzVXBkYXRlPSEwfX1mdGUucHJvdG90eXBlLmlzQ2FudmFzVGV4dHVyZT0hMDtjbGFzcyBtdGUgZXh0ZW5kcyBONXR7Y29uc3RydWN0b3IodCxlLG4saSxyLG8sYSxzLGwsYyl7aWYoKGM9dm9pZCAwIT09Yz9jOk0ydCkhPT1NMnQmJmMhPT1FMnQpdGhyb3cgbmV3IEVycm9yKCJEZXB0aFRleHR1cmUgZm9ybWF0IG11c3QgYmUgZWl0aGVyIFRIUkVFLkRlcHRoRm9ybWF0IG9yIFRIUkVFLkRlcHRoU3RlbmNpbEZvcm1hdCIpO3ZvaWQgMD09PW4mJmM9PT1NMnQmJihuPV8ydCksdm9pZCAwPT09biYmYz09PUUydCYmKG49eDJ0KSxzdXBlcihudWxsLGkscixvLGEscyxjLG4sbCksdGhpcy5pbWFnZT17d2lkdGg6dCxoZWlnaHQ6ZX0sdGhpcy5tYWdGaWx0ZXI9dm9pZCAwIT09YT9hOnUydCx0aGlzLm1pbkZpbHRlcj12b2lkIDAhPT1zP3M6dTJ0LHRoaXMuZmxpcFk9ITEsdGhpcy5nZW5lcmF0ZU1pcG1hcHM9ITF9fW10ZS5wcm90b3R5cGUuaXNEZXB0aFRleHR1cmU9ITA7Y2xhc3MgZ3RlIGV4dGVuZHMgTjR0e2NvbnN0cnVjdG9yKHQ9MSxlPTgsbj0wLGk9MipNYXRoLlBJKXtzdXBlcigpLHRoaXMudHlwZT0iQ2lyY2xlR2VvbWV0cnkiLHRoaXMucGFyYW1ldGVycz17cmFkaXVzOnQsc2VnbWVudHM6ZSx0aGV0YVN0YXJ0Om4sdGhldGFMZW5ndGg6aX0sZT1NYXRoLm1heCgzLGUpO2NvbnN0IHI9W10sbz1bXSxhPVtdLHM9W10sbD1uZXcgSDV0LGM9bmV3IEM1dDtvLnB1c2goMCwwLDApLGEucHVzaCgwLDAsMSkscy5wdXNoKC41LC41KTtmb3IobGV0IHI9MCx1PTM7cjw9ZTtyKyssdSs9Myl7Y29uc3QgaD1uK3IvZSppO2wueD10Kk1hdGguY29zKGgpLGwueT10Kk1hdGguc2luKGgpLG8ucHVzaChsLngsbC55LGwueiksYS5wdXNoKDAsMCwxKSxjLng9KG9bdV0vdCsxKS8yLGMueT0ob1t1KzFdL3QrMSkvMixzLnB1c2goYy54LGMueSl9Zm9yKGxldCB0PTE7dDw9ZTt0Kyspci5wdXNoKHQsdCsxLDApO3RoaXMuc2V0SW5kZXgociksdGhpcy5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgYjR0KG8sMykpLHRoaXMuc2V0QXR0cmlidXRlKCJub3JtYWwiLG5ldyBiNHQoYSwzKSksdGhpcy5zZXRBdHRyaWJ1dGUoInV2IixuZXcgYjR0KHMsMikpfXN0YXRpYyBmcm9tSlNPTih0KXtyZXR1cm4gbmV3IGd0ZSh0LnJhZGl1cyx0LnNlZ21lbnRzLHQudGhldGFTdGFydCx0LnRoZXRhTGVuZ3RoKX19Y2xhc3MgX3RlIGV4dGVuZHMgTjR0e2NvbnN0cnVjdG9yKHQ9MSxlPTEsbj0xLGk9OCxyPTEsbz0hMSxhPTAscz0yKk1hdGguUEkpe3N1cGVyKCksdGhpcy50eXBlPSJDeWxpbmRlckdlb21ldHJ5Iix0aGlzLnBhcmFtZXRlcnM9e3JhZGl1c1RvcDp0LHJhZGl1c0JvdHRvbTplLGhlaWdodDpuLHJhZGlhbFNlZ21lbnRzOmksaGVpZ2h0U2VnbWVudHM6cixvcGVuRW5kZWQ6byx0aGV0YVN0YXJ0OmEsdGhldGFMZW5ndGg6c307Y29uc3QgbD10aGlzO2k9TWF0aC5mbG9vcihpKSxyPU1hdGguZmxvb3Iocik7Y29uc3QgYz1bXSx1PVtdLGg9W10sZD1bXTtsZXQgcD0wO2NvbnN0IGY9W10sbT1uLzI7bGV0IGc9MDtmdW5jdGlvbiBfKG4pe2NvbnN0IHI9cCxvPW5ldyBDNXQsZj1uZXcgSDV0O2xldCBfPTA7Y29uc3QgeT0hMD09PW4/dDplLHY9ITA9PT1uPzE6LTE7Zm9yKGxldCB0PTE7dDw9aTt0KyspdS5wdXNoKDAsbSp2LDApLGgucHVzaCgwLHYsMCksZC5wdXNoKC41LC41KSxwKys7Y29uc3QgYj1wO2ZvcihsZXQgdD0wO3Q8PWk7dCsrKXtjb25zdCBlPXQvaSpzK2Esbj1NYXRoLmNvcyhlKSxyPU1hdGguc2luKGUpO2YueD15KnIsZi55PW0qdixmLno9eSpuLHUucHVzaChmLngsZi55LGYueiksaC5wdXNoKDAsdiwwKSxvLng9LjUqbisuNSxvLnk9LjUqcip2Ky41LGQucHVzaChvLngsby55KSxwKyt9Zm9yKGxldCB0PTA7dDxpO3QrKyl7Y29uc3QgZT1yK3QsaT1iK3Q7ITA9PT1uP2MucHVzaChpLGkrMSxlKTpjLnB1c2goaSsxLGksZSksXys9M31sLmFkZEdyb3VwKGcsXywhMD09PW4/MToyKSxnKz1ffSEoZnVuY3Rpb24geSgpe2NvbnN0IG89bmV3IEg1dCxfPW5ldyBINXQ7bGV0IHk9MDtjb25zdCB2PShlLXQpL247Zm9yKGxldCBsPTA7bDw9cjtsKyspe2NvbnN0IGM9W10sZz1sL3IseT1nKihlLXQpK3Q7Zm9yKGxldCB0PTA7dDw9aTt0Kyspe2NvbnN0IGU9dC9pLHI9ZSpzK2EsbD1NYXRoLnNpbihyKSxmPU1hdGguY29zKHIpO18ueD15KmwsXy55PS1nKm4rbSxfLno9eSpmLHUucHVzaChfLngsXy55LF8ueiksby5zZXQobCx2LGYpLm5vcm1hbGl6ZSgpLGgucHVzaChvLngsby55LG8ueiksZC5wdXNoKGUsMS1nKSxjLnB1c2gocCsrKX1mLnB1c2goYyl9Zm9yKGxldCB0PTA7dDxpO3QrKylmb3IobGV0IGU9MDtlPHI7ZSsrKXtjb25zdCBuPWZbZSsxXVt0XSxpPWZbZSsxXVt0KzFdLHI9ZltlXVt0KzFdO2MucHVzaChmW2VdW3RdLG4sciksYy5wdXNoKG4saSxyKSx5Kz02fWwuYWRkR3JvdXAoZyx5LDApLGcrPXl9KSgpLCExPT09byYmKHQ+MCYmXyghMCksZT4wJiZfKCExKSksdGhpcy5zZXRJbmRleChjKSx0aGlzLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBiNHQodSwzKSksdGhpcy5zZXRBdHRyaWJ1dGUoIm5vcm1hbCIsbmV3IGI0dChoLDMpKSx0aGlzLnNldEF0dHJpYnV0ZSgidXYiLG5ldyBiNHQoZCwyKSl9c3RhdGljIGZyb21KU09OKHQpe3JldHVybiBuZXcgX3RlKHQucmFkaXVzVG9wLHQucmFkaXVzQm90dG9tLHQuaGVpZ2h0LHQucmFkaWFsU2VnbWVudHMsdC5oZWlnaHRTZWdtZW50cyx0Lm9wZW5FbmRlZCx0LnRoZXRhU3RhcnQsdC50aGV0YUxlbmd0aCl9fWNsYXNzIHl0ZSBleHRlbmRzIF90ZXtjb25zdHJ1Y3Rvcih0PTEsZT0xLG49OCxpPTEscj0hMSxvPTAsYT0yKk1hdGguUEkpe3N1cGVyKDAsdCxlLG4saSxyLG8sYSksdGhpcy50eXBlPSJDb25lR2VvbWV0cnkiLHRoaXMucGFyYW1ldGVycz17cmFkaXVzOnQsaGVpZ2h0OmUscmFkaWFsU2VnbWVudHM6bixoZWlnaHRTZWdtZW50czppLG9wZW5FbmRlZDpyLHRoZXRhU3RhcnQ6byx0aGV0YUxlbmd0aDphfX1zdGF0aWMgZnJvbUpTT04odCl7cmV0dXJuIG5ldyB5dGUodC5yYWRpdXMsdC5oZWlnaHQsdC5yYWRpYWxTZWdtZW50cyx0LmhlaWdodFNlZ21lbnRzLHQub3BlbkVuZGVkLHQudGhldGFTdGFydCx0LnRoZXRhTGVuZ3RoKX19Y2xhc3MgdnRlIGV4dGVuZHMgTjR0e2NvbnN0cnVjdG9yKHQsZSxuPTEsaT0wKXtzdXBlcigpLHRoaXMudHlwZT0iUG9seWhlZHJvbkdlb21ldHJ5Iix0aGlzLnBhcmFtZXRlcnM9e3ZlcnRpY2VzOnQsaW5kaWNlczplLHJhZGl1czpuLGRldGFpbDppfTtjb25zdCByPVtdLG89W107ZnVuY3Rpb24gYSh0LGUsbixpKXtjb25zdCByPWkrMSxvPVtdO2ZvcihsZXQgaT0wO2k8PXI7aSsrKXtvW2ldPVtdO2NvbnN0IGE9dC5jbG9uZSgpLmxlcnAobixpL3IpLHM9ZS5jbG9uZSgpLmxlcnAobixpL3IpLGw9ci1pO2ZvcihsZXQgdD0wO3Q8PWw7dCsrKW9baV1bdF09MD09PXQmJmk9PT1yP2E6YS5jbG9uZSgpLmxlcnAocyx0L2wpfWZvcihsZXQgdD0wO3Q8cjt0KyspZm9yKGxldCBlPTA7ZTwyKihyLXQpLTE7ZSsrKXtjb25zdCBuPU1hdGguZmxvb3IoZS8yKTtlJTI9PTA/KHMob1t0XVtuKzFdKSxzKG9bdCsxXVtuXSkscyhvW3RdW25dKSk6KHMob1t0XVtuKzFdKSxzKG9bdCsxXVtuKzFdKSxzKG9bdCsxXVtuXSkpfX1mdW5jdGlvbiBzKHQpe3IucHVzaCh0LngsdC55LHQueil9ZnVuY3Rpb24gbChlLG4pe2NvbnN0IGk9MyplO24ueD10W2krMF0sbi55PXRbaSsxXSxuLno9dFtpKzJdfWZ1bmN0aW9uIGModCxlLG4saSl7aTwwJiYxPT09dC54JiYob1tlXT10LngtMSksMD09PW4ueCYmMD09PW4ueiYmKG9bZV09aS8yL01hdGguUEkrLjUpfWZ1bmN0aW9uIHUodCl7cmV0dXJuIE1hdGguYXRhbjIodC56LC10LngpfSEoZnVuY3Rpb24gaCh0KXtjb25zdCBuPW5ldyBINXQsaT1uZXcgSDV0LHI9bmV3IEg1dDtmb3IobGV0IG89MDtvPGUubGVuZ3RoO28rPTMpbChlW28rMF0sbiksbChlW28rMV0saSksbChlW28rMl0sciksYShuLGkscix0KX0pKGkpLChmdW5jdGlvbiBkKHQpe2NvbnN0IGU9bmV3IEg1dDtmb3IobGV0IG49MDtuPHIubGVuZ3RoO24rPTMpZS54PXJbbiswXSxlLnk9cltuKzFdLGUuej1yW24rMl0sZS5ub3JtYWxpemUoKS5tdWx0aXBseVNjYWxhcih0KSxyW24rMF09ZS54LHJbbisxXT1lLnkscltuKzJdPWUuen0pKG4pLChmdW5jdGlvbiBwKCl7Y29uc3QgdD1uZXcgSDV0O2ZvcihsZXQgbj0wO248ci5sZW5ndGg7bis9Myl7dC54PXJbbiswXSx0Lnk9cltuKzFdLHQuej1yW24rMl07Y29uc3QgaT11KHQpLzIvTWF0aC5QSSsuNSxhPShlPXQsTWF0aC5hdGFuMigtZS55LE1hdGguc3FydChlLngqZS54K2UueiplLnopKS9NYXRoLlBJKy41KTtvLnB1c2goaSwxLWEpfXZhciBlOyhmdW5jdGlvbiBuKCl7Y29uc3QgdD1uZXcgSDV0LGU9bmV3IEg1dCxuPW5ldyBINXQsaT1uZXcgSDV0LGE9bmV3IEM1dCxzPW5ldyBDNXQsbD1uZXcgQzV0O2ZvcihsZXQgaD0wLGQ9MDtoPHIubGVuZ3RoO2grPTksZCs9Nil7dC5zZXQocltoKzBdLHJbaCsxXSxyW2grMl0pLGUuc2V0KHJbaCszXSxyW2grNF0scltoKzVdKSxuLnNldChyW2grNl0scltoKzddLHJbaCs4XSksYS5zZXQob1tkKzBdLG9bZCsxXSkscy5zZXQob1tkKzJdLG9bZCszXSksbC5zZXQob1tkKzRdLG9bZCs1XSksaS5jb3B5KHQpLmFkZChlKS5hZGQobikuZGl2aWRlU2NhbGFyKDMpO2NvbnN0IHA9dShpKTtjKGEsZCswLHQscCksYyhzLGQrMixlLHApLGMobCxkKzQsbixwKX19KSgpLChmdW5jdGlvbiBpKCl7Zm9yKGxldCB0PTA7dDxvLmxlbmd0aDt0Kz02KXtjb25zdCBlPW9bdCswXSxuPW9bdCsyXSxpPW9bdCs0XSxyPU1hdGgubWF4KGUsbixpKSxhPU1hdGgubWluKGUsbixpKTtyPi45JiZhPC4xJiYoZTwuMiYmKG9bdCswXSs9MSksbjwuMiYmKG9bdCsyXSs9MSksaTwuMiYmKG9bdCs0XSs9MSkpfX0pKCl9KSgpLHRoaXMuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IGI0dChyLDMpKSx0aGlzLnNldEF0dHJpYnV0ZSgibm9ybWFsIixuZXcgYjR0KHIuc2xpY2UoKSwzKSksdGhpcy5zZXRBdHRyaWJ1dGUoInV2IixuZXcgYjR0KG8sMikpLDA9PT1pP3RoaXMuY29tcHV0ZVZlcnRleE5vcm1hbHMoKTp0aGlzLm5vcm1hbGl6ZU5vcm1hbHMoKX1zdGF0aWMgZnJvbUpTT04odCl7cmV0dXJuIG5ldyB2dGUodC52ZXJ0aWNlcyx0LmluZGljZXMsdC5yYWRpdXMsdC5kZXRhaWxzKX19Y2xhc3MgYnRlIGV4dGVuZHMgdnRle2NvbnN0cnVjdG9yKHQ9MSxlPTApe2NvbnN0IG49KDErTWF0aC5zcXJ0KDUpKS8yLGk9MS9uO3N1cGVyKFstMSwtMSwtMSwtMSwtMSwxLC0xLDEsLTEsLTEsMSwxLDEsLTEsLTEsMSwtMSwxLDEsMSwtMSwxLDEsMSwwLC1pLC1uLDAsLWksbiwwLGksLW4sMCxpLG4sLWksLW4sMCwtaSxuLDAsaSwtbiwwLGksbiwwLC1uLDAsLWksbiwwLC1pLC1uLDAsaSxuLDAsaV0sWzMsMTEsNywzLDcsMTUsMywxNSwxMyw3LDE5LDE3LDcsMTcsNiw3LDYsMTUsMTcsNCw4LDE3LDgsMTAsMTcsMTAsNiw4LDAsMTYsOCwxNiwyLDgsMiwxMCwwLDEyLDEsMCwxLDE4LDAsMTgsMTYsNiwxMCwyLDYsMiwxMyw2LDEzLDE1LDIsMTYsMTgsMiwxOCwzLDIsMywxMywxOCwxLDksMTgsOSwxMSwxOCwxMSwzLDQsMTQsMTIsNCwxMiwwLDQsMCw4LDExLDksNSwxMSw1LDE5LDExLDE5LDcsMTksNSwxNCwxOSwxNCw0LDE5LDQsMTcsMSwxMiwxNCwxLDE0LDUsMSw1LDldLHQsZSksdGhpcy50eXBlPSJEb2RlY2FoZWRyb25HZW9tZXRyeSIsdGhpcy5wYXJhbWV0ZXJzPXtyYWRpdXM6dCxkZXRhaWw6ZX19c3RhdGljIGZyb21KU09OKHQpe3JldHVybiBuZXcgYnRlKHQucmFkaXVzLHQuZGV0YWlsKX19Y29uc3QgeHRlPW5ldyBINXQsd3RlPW5ldyBINXQsU3RlPW5ldyBINXQsTXRlPW5ldyBKM3Q7Y2xhc3MgRXRlIGV4dGVuZHMgTjR0e2NvbnN0cnVjdG9yKHQsZSl7aWYoc3VwZXIoKSx0aGlzLnR5cGU9IkVkZ2VzR2VvbWV0cnkiLHRoaXMucGFyYW1ldGVycz17dGhyZXNob2xkQW5nbGU6ZX0sZT12b2lkIDAhPT1lP2U6MSwhMD09PXQuaXNHZW9tZXRyeSlyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJUSFJFRS5FZGdlc0dlb21ldHJ5IG5vIGxvbmdlciBzdXBwb3J0cyBUSFJFRS5HZW9tZXRyeS4gVXNlIFRIUkVFLkJ1ZmZlckdlb21ldHJ5IGluc3RlYWQuIik7Y29uc3Qgbj1NYXRoLmNvcyhyNXQqZSksaT10LmdldEluZGV4KCkscj10LmdldEF0dHJpYnV0ZSgicG9zaXRpb24iKSxvPWk/aS5jb3VudDpyLmNvdW50LGE9WzAsMCwwXSxzPVsiYSIsImIiLCJjIl0sbD1uZXcgQXJyYXkoMyksYz17fSx1PVtdO2ZvcihsZXQgdD0wO3Q8bzt0Kz0zKXtpPyhhWzBdPWkuZ2V0WCh0KSxhWzFdPWkuZ2V0WCh0KzEpLGFbMl09aS5nZXRYKHQrMikpOihhWzBdPXQsYVsxXT10KzEsYVsyXT10KzIpO2NvbnN0e2E6ZSxiOm8sYzpofT1NdGU7aWYoZS5mcm9tQnVmZmVyQXR0cmlidXRlKHIsYVswXSksby5mcm9tQnVmZmVyQXR0cmlidXRlKHIsYVsxXSksaC5mcm9tQnVmZmVyQXR0cmlidXRlKHIsYVsyXSksTXRlLmdldE5vcm1hbChTdGUpLGxbMF09YCR7ZS54fSwke2UueX0sJHtlLnp9YCxsWzFdPWAke28ueH0sJHtvLnl9LCR7by56fWAsbFsyXT1gJHtoLnh9LCR7aC55fSwke2guen1gLGxbMF0hPT1sWzFdJiZsWzFdIT09bFsyXSYmbFsyXSE9PWxbMF0pZm9yKGxldCB0PTA7dDwzO3QrKyl7Y29uc3QgZT0odCsxKSUzLGk9bFt0XSxyPWxbZV0sbz1NdGVbc1t0XV0saD1NdGVbc1tlXV0sZD1gJHtpfV8ke3J9YCxwPWAke3J9XyR7aX1gO3AgaW4gYyYmY1twXT8oU3RlLmRvdChjW3BdLm5vcm1hbCk8PW4mJih1LnB1c2goby54LG8ueSxvLnopLHUucHVzaChoLngsaC55LGgueikpLGNbcF09bnVsbCk6ZCBpbiBjfHwoY1tkXT17aW5kZXgwOmFbdF0saW5kZXgxOmFbZV0sbm9ybWFsOlN0ZS5jbG9uZSgpfSl9fWZvcihjb25zdCB0IGluIGMpaWYoY1t0XSl7Y29uc3R7aW5kZXgwOmUsaW5kZXgxOm59PWNbdF07eHRlLmZyb21CdWZmZXJBdHRyaWJ1dGUocixlKSx3dGUuZnJvbUJ1ZmZlckF0dHJpYnV0ZShyLG4pLHUucHVzaCh4dGUueCx4dGUueSx4dGUueiksdS5wdXNoKHd0ZS54LHd0ZS55LHd0ZS56KX10aGlzLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBiNHQodSwzKSl9fWNsYXNzIFR0ZXtjb25zdHJ1Y3Rvcigpe3RoaXMudHlwZT0iQ3VydmUiLHRoaXMuYXJjTGVuZ3RoRGl2aXNpb25zPTIwMH1nZXRQb2ludCgpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkN1cnZlOiAuZ2V0UG9pbnQoKSBub3QgaW1wbGVtZW50ZWQuIiksbnVsbH1nZXRQb2ludEF0KHQsZSl7Y29uc3Qgbj10aGlzLmdldFV0b1RtYXBwaW5nKHQpO3JldHVybiB0aGlzLmdldFBvaW50KG4sZSl9Z2V0UG9pbnRzKHQ9NSl7Y29uc3QgZT1bXTtmb3IobGV0IG49MDtuPD10O24rKyllLnB1c2godGhpcy5nZXRQb2ludChuL3QpKTtyZXR1cm4gZX1nZXRTcGFjZWRQb2ludHModD01KXtjb25zdCBlPVtdO2ZvcihsZXQgbj0wO248PXQ7bisrKWUucHVzaCh0aGlzLmdldFBvaW50QXQobi90KSk7cmV0dXJuIGV9Z2V0TGVuZ3RoKCl7Y29uc3QgdD10aGlzLmdldExlbmd0aHMoKTtyZXR1cm4gdFt0Lmxlbmd0aC0xXX1nZXRMZW5ndGhzKHQ9dGhpcy5hcmNMZW5ndGhEaXZpc2lvbnMpe2lmKHRoaXMuY2FjaGVBcmNMZW5ndGhzJiZ0aGlzLmNhY2hlQXJjTGVuZ3Rocy5sZW5ndGg9PT10KzEmJiF0aGlzLm5lZWRzVXBkYXRlKXJldHVybiB0aGlzLmNhY2hlQXJjTGVuZ3Roczt0aGlzLm5lZWRzVXBkYXRlPSExO2NvbnN0IGU9W107bGV0IG4saT10aGlzLmdldFBvaW50KDApLHI9MDtlLnB1c2goMCk7Zm9yKGxldCBvPTE7bzw9dDtvKyspbj10aGlzLmdldFBvaW50KG8vdCkscis9bi5kaXN0YW5jZVRvKGkpLGUucHVzaChyKSxpPW47cmV0dXJuIHRoaXMuY2FjaGVBcmNMZW5ndGhzPWUsZX11cGRhdGVBcmNMZW5ndGhzKCl7dGhpcy5uZWVkc1VwZGF0ZT0hMCx0aGlzLmdldExlbmd0aHMoKX1nZXRVdG9UbWFwcGluZyh0LGUpe2NvbnN0IG49dGhpcy5nZXRMZW5ndGhzKCk7bGV0IGk9MDtjb25zdCByPW4ubGVuZ3RoO2xldCBvO289ZXx8dCpuW3ItMV07bGV0IGEscz0wLGw9ci0xO2Zvcig7czw9bDspaWYoaT1NYXRoLmZsb29yKHMrKGwtcykvMiksYT1uW2ldLW8sYTwwKXM9aSsxO2Vsc2V7aWYoIShhPjApKXtsPWk7YnJlYWt9bD1pLTF9aWYoaT1sLG5baV09PT1vKXJldHVybiBpLyhyLTEpO2NvbnN0IGM9bltpXTtyZXR1cm4oaSsoby1jKS8obltpKzFdLWMpKS8oci0xKX1nZXRUYW5nZW50KHQsZSl7Y29uc3Qgbj0xZS00O2xldCBpPXQtbixyPXQrbjtpPDAmJihpPTApLHI+MSYmKHI9MSk7Y29uc3Qgbz10aGlzLmdldFBvaW50KGkpLGE9dGhpcy5nZXRQb2ludChyKSxzPWV8fChvLmlzVmVjdG9yMj9uZXcgQzV0Om5ldyBINXQpO3JldHVybiBzLmNvcHkoYSkuc3ViKG8pLm5vcm1hbGl6ZSgpLHN9Z2V0VGFuZ2VudEF0KHQsZSl7Y29uc3Qgbj10aGlzLmdldFV0b1RtYXBwaW5nKHQpO3JldHVybiB0aGlzLmdldFRhbmdlbnQobixlKX1jb21wdXRlRnJlbmV0RnJhbWVzKHQsZSl7Y29uc3Qgbj1uZXcgSDV0LGk9W10scj1bXSxvPVtdLGE9bmV3IEg1dCxzPW5ldyBnM3Q7Zm9yKGxldCBlPTA7ZTw9dDtlKyspe2lbZV09dGhpcy5nZXRUYW5nZW50QXQoZS90LG5ldyBINXQpLGlbZV0ubm9ybWFsaXplKCl9clswXT1uZXcgSDV0LG9bMF09bmV3IEg1dDtsZXQgbD1OdW1iZXIuTUFYX1ZBTFVFO2NvbnN0IGM9TWF0aC5hYnMoaVswXS54KSx1PU1hdGguYWJzKGlbMF0ueSksaD1NYXRoLmFicyhpWzBdLnopO2M8PWwmJihsPWMsbi5zZXQoMSwwLDApKSx1PD1sJiYobD11LG4uc2V0KDAsMSwwKSksaDw9bCYmbi5zZXQoMCwwLDEpLGEuY3Jvc3NWZWN0b3JzKGlbMF0sbikubm9ybWFsaXplKCksclswXS5jcm9zc1ZlY3RvcnMoaVswXSxhKSxvWzBdLmNyb3NzVmVjdG9ycyhpWzBdLHJbMF0pO2ZvcihsZXQgZT0xO2U8PXQ7ZSsrKXtpZihyW2VdPXJbZS0xXS5jbG9uZSgpLG9bZV09b1tlLTFdLmNsb25lKCksYS5jcm9zc1ZlY3RvcnMoaVtlLTFdLGlbZV0pLGEubGVuZ3RoKCk+TnVtYmVyLkVQU0lMT04pe2Eubm9ybWFsaXplKCk7Y29uc3QgdD1NYXRoLmFjb3MoczV0KGlbZS0xXS5kb3QoaVtlXSksLTEsMSkpO3JbZV0uYXBwbHlNYXRyaXg0KHMubWFrZVJvdGF0aW9uQXhpcyhhLHQpKX1vW2VdLmNyb3NzVmVjdG9ycyhpW2VdLHJbZV0pfWlmKCEwPT09ZSl7bGV0IGU9TWF0aC5hY29zKHM1dChyWzBdLmRvdChyW3RdKSwtMSwxKSk7ZS89dCxpWzBdLmRvdChhLmNyb3NzVmVjdG9ycyhyWzBdLHJbdF0pKT4wJiYoZT0tZSk7Zm9yKGxldCBuPTE7bjw9dDtuKyspcltuXS5hcHBseU1hdHJpeDQocy5tYWtlUm90YXRpb25BeGlzKGlbbl0sZSpuKSksb1tuXS5jcm9zc1ZlY3RvcnMoaVtuXSxyW25dKX1yZXR1cm57dGFuZ2VudHM6aSxub3JtYWxzOnIsYmlub3JtYWxzOm99fWNsb25lKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMpfWNvcHkodCl7cmV0dXJuIHRoaXMuYXJjTGVuZ3RoRGl2aXNpb25zPXQuYXJjTGVuZ3RoRGl2aXNpb25zLHRoaXN9dG9KU09OKCl7Y29uc3QgdD17bWV0YWRhdGE6e3ZlcnNpb246NC41LHR5cGU6IkN1cnZlIixnZW5lcmF0b3I6IkN1cnZlLnRvSlNPTiJ9fTtyZXR1cm4gdC5hcmNMZW5ndGhEaXZpc2lvbnM9dGhpcy5hcmNMZW5ndGhEaXZpc2lvbnMsdC50eXBlPXRoaXMudHlwZSx0fWZyb21KU09OKHQpe3JldHVybiB0aGlzLmFyY0xlbmd0aERpdmlzaW9ucz10LmFyY0xlbmd0aERpdmlzaW9ucyx0aGlzfX1jbGFzcyBDdGUgZXh0ZW5kcyBUdGV7Y29uc3RydWN0b3IodD0wLGU9MCxuPTEsaT0xLHI9MCxvPTIqTWF0aC5QSSxhPSExLHM9MCl7c3VwZXIoKSx0aGlzLnR5cGU9IkVsbGlwc2VDdXJ2ZSIsdGhpcy5hWD10LHRoaXMuYVk9ZSx0aGlzLnhSYWRpdXM9bix0aGlzLnlSYWRpdXM9aSx0aGlzLmFTdGFydEFuZ2xlPXIsdGhpcy5hRW5kQW5nbGU9byx0aGlzLmFDbG9ja3dpc2U9YSx0aGlzLmFSb3RhdGlvbj1zfWdldFBvaW50KHQsZSl7Y29uc3Qgbj1lfHxuZXcgQzV0LGk9MipNYXRoLlBJO2xldCByPXRoaXMuYUVuZEFuZ2xlLXRoaXMuYVN0YXJ0QW5nbGU7Y29uc3Qgbz1NYXRoLmFicyhyKTxOdW1iZXIuRVBTSUxPTjtmb3IoO3I8MDspcis9aTtmb3IoO3I+aTspci09aTtyPE51bWJlci5FUFNJTE9OJiYocj1vPzA6aSksITAhPT10aGlzLmFDbG9ja3dpc2V8fG98fChyPT09aT9yPS1pOnItPWkpO2NvbnN0IGE9dGhpcy5hU3RhcnRBbmdsZSt0KnI7bGV0IHM9dGhpcy5hWCt0aGlzLnhSYWRpdXMqTWF0aC5jb3MoYSksbD10aGlzLmFZK3RoaXMueVJhZGl1cypNYXRoLnNpbihhKTtpZigwIT09dGhpcy5hUm90YXRpb24pe2NvbnN0IHQ9TWF0aC5jb3ModGhpcy5hUm90YXRpb24pLGU9TWF0aC5zaW4odGhpcy5hUm90YXRpb24pLG49cy10aGlzLmFYLGk9bC10aGlzLmFZO3M9bip0LWkqZSt0aGlzLmFYLGw9biplK2kqdCt0aGlzLmFZfXJldHVybiBuLnNldChzLGwpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5hWD10LmFYLHRoaXMuYVk9dC5hWSx0aGlzLnhSYWRpdXM9dC54UmFkaXVzLHRoaXMueVJhZGl1cz10LnlSYWRpdXMsdGhpcy5hU3RhcnRBbmdsZT10LmFTdGFydEFuZ2xlLHRoaXMuYUVuZEFuZ2xlPXQuYUVuZEFuZ2xlLHRoaXMuYUNsb2Nrd2lzZT10LmFDbG9ja3dpc2UsdGhpcy5hUm90YXRpb249dC5hUm90YXRpb24sdGhpc310b0pTT04oKXtjb25zdCB0PXN1cGVyLnRvSlNPTigpO3JldHVybiB0LmFYPXRoaXMuYVgsdC5hWT10aGlzLmFZLHQueFJhZGl1cz10aGlzLnhSYWRpdXMsdC55UmFkaXVzPXRoaXMueVJhZGl1cyx0LmFTdGFydEFuZ2xlPXRoaXMuYVN0YXJ0QW5nbGUsdC5hRW5kQW5nbGU9dGhpcy5hRW5kQW5nbGUsdC5hQ2xvY2t3aXNlPXRoaXMuYUNsb2Nrd2lzZSx0LmFSb3RhdGlvbj10aGlzLmFSb3RhdGlvbix0fWZyb21KU09OKHQpe3JldHVybiBzdXBlci5mcm9tSlNPTih0KSx0aGlzLmFYPXQuYVgsdGhpcy5hWT10LmFZLHRoaXMueFJhZGl1cz10LnhSYWRpdXMsdGhpcy55UmFkaXVzPXQueVJhZGl1cyx0aGlzLmFTdGFydEFuZ2xlPXQuYVN0YXJ0QW5nbGUsdGhpcy5hRW5kQW5nbGU9dC5hRW5kQW5nbGUsdGhpcy5hQ2xvY2t3aXNlPXQuYUNsb2Nrd2lzZSx0aGlzLmFSb3RhdGlvbj10LmFSb3RhdGlvbix0aGlzfX1DdGUucHJvdG90eXBlLmlzRWxsaXBzZUN1cnZlPSEwO2NsYXNzIEF0ZSBleHRlbmRzIEN0ZXtjb25zdHJ1Y3Rvcih0LGUsbixpLHIsbyl7c3VwZXIodCxlLG4sbixpLHIsbyksdGhpcy50eXBlPSJBcmNDdXJ2ZSJ9fWZ1bmN0aW9uIGt0ZSgpe2xldCB0PTAsZT0wLG49MCxpPTA7ZnVuY3Rpb24gcihyLG8sYSxzKXt0PXIsZT1hLG49LTMqciszKm8tMiphLXMsaT0yKnItMipvK2Erc31yZXR1cm57aW5pdENhdG11bGxSb206ZnVuY3Rpb24odCxlLG4saSxvKXtyKGUsbixvKihuLXQpLG8qKGktZSkpfSxpbml0Tm9udW5pZm9ybUNhdG11bGxSb206ZnVuY3Rpb24odCxlLG4saSxvLGEscyl7bGV0IGw9KGUtdCkvby0obi10KS8obythKSsobi1lKS9hLGM9KG4tZSkvYS0oaS1lKS8oYStzKSsoaS1uKS9zO2wqPWEsYyo9YSxyKGUsbixsLGMpfSxjYWxjOmZ1bmN0aW9uKHIpe2NvbnN0IG89cipyO3JldHVybiB0K2UqcituKm8raSoobypyKX19fUF0ZS5wcm90b3R5cGUuaXNBcmNDdXJ2ZT0hMDtjb25zdCBMdGU9bmV3IEg1dCxQdGU9bmV3IGt0ZSxOdGU9bmV3IGt0ZSxJdGU9bmV3IGt0ZTtjbGFzcyBSdGUgZXh0ZW5kcyBUdGV7Y29uc3RydWN0b3IodD1bXSxlPSExLG49ImNlbnRyaXBldGFsIixpPS41KXtzdXBlcigpLHRoaXMudHlwZT0iQ2F0bXVsbFJvbUN1cnZlMyIsdGhpcy5wb2ludHM9dCx0aGlzLmNsb3NlZD1lLHRoaXMuY3VydmVUeXBlPW4sdGhpcy50ZW5zaW9uPWl9Z2V0UG9pbnQodCxlPW5ldyBINXQpe2NvbnN0IG49ZSxpPXRoaXMucG9pbnRzLHI9aS5sZW5ndGgsbz0oci0odGhpcy5jbG9zZWQ/MDoxKSkqdDtsZXQgYSxzLGw9TWF0aC5mbG9vcihvKSxjPW8tbDt0aGlzLmNsb3NlZD9sKz1sPjA/MDooTWF0aC5mbG9vcihNYXRoLmFicyhsKS9yKSsxKSpyOjA9PT1jJiZsPT09ci0xJiYobD1yLTIsYz0xKSx0aGlzLmNsb3NlZHx8bD4wP2E9aVsobC0xKSVyXTooTHRlLnN1YlZlY3RvcnMoaVswXSxpWzFdKS5hZGQoaVswXSksYT1MdGUpO2NvbnN0IHU9aVtsJXJdLGg9aVsobCsxKSVyXTtpZih0aGlzLmNsb3NlZHx8bCsyPHI/cz1pWyhsKzIpJXJdOihMdGUuc3ViVmVjdG9ycyhpW3ItMV0saVtyLTJdKS5hZGQoaVtyLTFdKSxzPUx0ZSksImNlbnRyaXBldGFsIj09PXRoaXMuY3VydmVUeXBlfHwiY2hvcmRhbCI9PT10aGlzLmN1cnZlVHlwZSl7Y29uc3QgdD0iY2hvcmRhbCI9PT10aGlzLmN1cnZlVHlwZT8uNTouMjU7bGV0IGU9TWF0aC5wb3coYS5kaXN0YW5jZVRvU3F1YXJlZCh1KSx0KSxuPU1hdGgucG93KHUuZGlzdGFuY2VUb1NxdWFyZWQoaCksdCksaT1NYXRoLnBvdyhoLmRpc3RhbmNlVG9TcXVhcmVkKHMpLHQpO248MWUtNCYmKG49MSksZTwxZS00JiYoZT1uKSxpPDFlLTQmJihpPW4pLFB0ZS5pbml0Tm9udW5pZm9ybUNhdG11bGxSb20oYS54LHUueCxoLngscy54LGUsbixpKSxOdGUuaW5pdE5vbnVuaWZvcm1DYXRtdWxsUm9tKGEueSx1LnksaC55LHMueSxlLG4saSksSXRlLmluaXROb251bmlmb3JtQ2F0bXVsbFJvbShhLnosdS56LGgueixzLnosZSxuLGkpfWVsc2UiY2F0bXVsbHJvbSI9PT10aGlzLmN1cnZlVHlwZSYmKFB0ZS5pbml0Q2F0bXVsbFJvbShhLngsdS54LGgueCxzLngsdGhpcy50ZW5zaW9uKSxOdGUuaW5pdENhdG11bGxSb20oYS55LHUueSxoLnkscy55LHRoaXMudGVuc2lvbiksSXRlLmluaXRDYXRtdWxsUm9tKGEueix1LnosaC56LHMueix0aGlzLnRlbnNpb24pKTtyZXR1cm4gbi5zZXQoUHRlLmNhbGMoYyksTnRlLmNhbGMoYyksSXRlLmNhbGMoYykpLG59Y29weSh0KXtzdXBlci5jb3B5KHQpLHRoaXMucG9pbnRzPVtdO2ZvcihsZXQgZT0wLG49dC5wb2ludHMubGVuZ3RoO2U8bjtlKyspe3RoaXMucG9pbnRzLnB1c2godC5wb2ludHNbZV0uY2xvbmUoKSl9cmV0dXJuIHRoaXMuY2xvc2VkPXQuY2xvc2VkLHRoaXMuY3VydmVUeXBlPXQuY3VydmVUeXBlLHRoaXMudGVuc2lvbj10LnRlbnNpb24sdGhpc310b0pTT04oKXtjb25zdCB0PXN1cGVyLnRvSlNPTigpO3QucG9pbnRzPVtdO2ZvcihsZXQgZT0wLG49dGhpcy5wb2ludHMubGVuZ3RoO2U8bjtlKyspe3QucG9pbnRzLnB1c2godGhpcy5wb2ludHNbZV0udG9BcnJheSgpKX1yZXR1cm4gdC5jbG9zZWQ9dGhpcy5jbG9zZWQsdC5jdXJ2ZVR5cGU9dGhpcy5jdXJ2ZVR5cGUsdC50ZW5zaW9uPXRoaXMudGVuc2lvbix0fWZyb21KU09OKHQpe3N1cGVyLmZyb21KU09OKHQpLHRoaXMucG9pbnRzPVtdO2ZvcihsZXQgZT0wLG49dC5wb2ludHMubGVuZ3RoO2U8bjtlKyspe2NvbnN0IG49dC5wb2ludHNbZV07dGhpcy5wb2ludHMucHVzaCgobmV3IEg1dCkuZnJvbUFycmF5KG4pKX1yZXR1cm4gdGhpcy5jbG9zZWQ9dC5jbG9zZWQsdGhpcy5jdXJ2ZVR5cGU9dC5jdXJ2ZVR5cGUsdGhpcy50ZW5zaW9uPXQudGVuc2lvbix0aGlzfX1mdW5jdGlvbiBPdGUodCxlLG4saSxyKXtjb25zdCBvPS41KihpLWUpLGE9LjUqKHItbikscz10KnQ7cmV0dXJuKDIqbi0yKmkrbythKSoodCpzKSsoLTMqbiszKmktMipvLWEpKnMrbyp0K259ZnVuY3Rpb24genRlKHQsZSxuLGkpe3JldHVybihmdW5jdGlvbiByKHQsZSl7Y29uc3Qgbj0xLXQ7cmV0dXJuIG4qbiplfSkodCxlKSsoZnVuY3Rpb24gbyh0LGUpe3JldHVybiAyKigxLXQpKnQqZX0pKHQsbikrKGZ1bmN0aW9uIGEodCxlKXtyZXR1cm4gdCp0KmV9KSh0LGkpfWZ1bmN0aW9uIER0ZSh0LGUsbixpLHIpe3JldHVybihmdW5jdGlvbiBvKHQsZSl7Y29uc3Qgbj0xLXQ7cmV0dXJuIG4qbipuKmV9KSh0LGUpKyhmdW5jdGlvbiBhKHQsZSl7Y29uc3Qgbj0xLXQ7cmV0dXJuIDMqbipuKnQqZX0pKHQsbikrKGZ1bmN0aW9uIHModCxlKXtyZXR1cm4gMyooMS10KSp0KnQqZX0pKHQsaSkrKGZ1bmN0aW9uIGwodCxlKXtyZXR1cm4gdCp0KnQqZX0pKHQscil9UnRlLnByb3RvdHlwZS5pc0NhdG11bGxSb21DdXJ2ZTM9ITA7Y2xhc3MgQnRlIGV4dGVuZHMgVHRle2NvbnN0cnVjdG9yKHQ9bmV3IEM1dCxlPW5ldyBDNXQsbj1uZXcgQzV0LGk9bmV3IEM1dCl7c3VwZXIoKSx0aGlzLnR5cGU9IkN1YmljQmV6aWVyQ3VydmUiLHRoaXMudjA9dCx0aGlzLnYxPWUsdGhpcy52Mj1uLHRoaXMudjM9aX1nZXRQb2ludCh0LGU9bmV3IEM1dCl7Y29uc3Qgbj1lLGk9dGhpcy52MCxyPXRoaXMudjEsbz10aGlzLnYyLGE9dGhpcy52MztyZXR1cm4gbi5zZXQoRHRlKHQsaS54LHIueCxvLngsYS54KSxEdGUodCxpLnksci55LG8ueSxhLnkpKSxufWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy52MC5jb3B5KHQudjApLHRoaXMudjEuY29weSh0LnYxKSx0aGlzLnYyLmNvcHkodC52MiksdGhpcy52My5jb3B5KHQudjMpLHRoaXN9dG9KU09OKCl7Y29uc3QgdD1zdXBlci50b0pTT04oKTtyZXR1cm4gdC52MD10aGlzLnYwLnRvQXJyYXkoKSx0LnYxPXRoaXMudjEudG9BcnJheSgpLHQudjI9dGhpcy52Mi50b0FycmF5KCksdC52Mz10aGlzLnYzLnRvQXJyYXkoKSx0fWZyb21KU09OKHQpe3JldHVybiBzdXBlci5mcm9tSlNPTih0KSx0aGlzLnYwLmZyb21BcnJheSh0LnYwKSx0aGlzLnYxLmZyb21BcnJheSh0LnYxKSx0aGlzLnYyLmZyb21BcnJheSh0LnYyKSx0aGlzLnYzLmZyb21BcnJheSh0LnYzKSx0aGlzfX1CdGUucHJvdG90eXBlLmlzQ3ViaWNCZXppZXJDdXJ2ZT0hMDtjbGFzcyBIdGUgZXh0ZW5kcyBUdGV7Y29uc3RydWN0b3IodD1uZXcgSDV0LGU9bmV3IEg1dCxuPW5ldyBINXQsaT1uZXcgSDV0KXtzdXBlcigpLHRoaXMudHlwZT0iQ3ViaWNCZXppZXJDdXJ2ZTMiLHRoaXMudjA9dCx0aGlzLnYxPWUsdGhpcy52Mj1uLHRoaXMudjM9aX1nZXRQb2ludCh0LGU9bmV3IEg1dCl7Y29uc3Qgbj1lLGk9dGhpcy52MCxyPXRoaXMudjEsbz10aGlzLnYyLGE9dGhpcy52MztyZXR1cm4gbi5zZXQoRHRlKHQsaS54LHIueCxvLngsYS54KSxEdGUodCxpLnksci55LG8ueSxhLnkpLER0ZSh0LGkueixyLnosby56LGEueikpLG59Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLnYwLmNvcHkodC52MCksdGhpcy52MS5jb3B5KHQudjEpLHRoaXMudjIuY29weSh0LnYyKSx0aGlzLnYzLmNvcHkodC52MyksdGhpc310b0pTT04oKXtjb25zdCB0PXN1cGVyLnRvSlNPTigpO3JldHVybiB0LnYwPXRoaXMudjAudG9BcnJheSgpLHQudjE9dGhpcy52MS50b0FycmF5KCksdC52Mj10aGlzLnYyLnRvQXJyYXkoKSx0LnYzPXRoaXMudjMudG9BcnJheSgpLHR9ZnJvbUpTT04odCl7cmV0dXJuIHN1cGVyLmZyb21KU09OKHQpLHRoaXMudjAuZnJvbUFycmF5KHQudjApLHRoaXMudjEuZnJvbUFycmF5KHQudjEpLHRoaXMudjIuZnJvbUFycmF5KHQudjIpLHRoaXMudjMuZnJvbUFycmF5KHQudjMpLHRoaXN9fUh0ZS5wcm90b3R5cGUuaXNDdWJpY0JlemllckN1cnZlMz0hMDtjbGFzcyBGdGUgZXh0ZW5kcyBUdGV7Y29uc3RydWN0b3IodD1uZXcgQzV0LGU9bmV3IEM1dCl7c3VwZXIoKSx0aGlzLnR5cGU9IkxpbmVDdXJ2ZSIsdGhpcy52MT10LHRoaXMudjI9ZX1nZXRQb2ludCh0LGU9bmV3IEM1dCl7Y29uc3Qgbj1lO3JldHVybiAxPT09dD9uLmNvcHkodGhpcy52Mik6KG4uY29weSh0aGlzLnYyKS5zdWIodGhpcy52MSksbi5tdWx0aXBseVNjYWxhcih0KS5hZGQodGhpcy52MSkpLG59Z2V0UG9pbnRBdCh0LGUpe3JldHVybiB0aGlzLmdldFBvaW50KHQsZSl9Z2V0VGFuZ2VudCh0LGUpe2NvbnN0IG49ZXx8bmV3IEM1dDtyZXR1cm4gbi5jb3B5KHRoaXMudjIpLnN1Yih0aGlzLnYxKS5ub3JtYWxpemUoKSxufWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy52MS5jb3B5KHQudjEpLHRoaXMudjIuY29weSh0LnYyKSx0aGlzfXRvSlNPTigpe2NvbnN0IHQ9c3VwZXIudG9KU09OKCk7cmV0dXJuIHQudjE9dGhpcy52MS50b0FycmF5KCksdC52Mj10aGlzLnYyLnRvQXJyYXkoKSx0fWZyb21KU09OKHQpe3JldHVybiBzdXBlci5mcm9tSlNPTih0KSx0aGlzLnYxLmZyb21BcnJheSh0LnYxKSx0aGlzLnYyLmZyb21BcnJheSh0LnYyKSx0aGlzfX1GdGUucHJvdG90eXBlLmlzTGluZUN1cnZlPSEwO2NsYXNzIFZ0ZSBleHRlbmRzIFR0ZXtjb25zdHJ1Y3Rvcih0PW5ldyBINXQsZT1uZXcgSDV0KXtzdXBlcigpLHRoaXMudHlwZT0iTGluZUN1cnZlMyIsdGhpcy5pc0xpbmVDdXJ2ZTM9ITAsdGhpcy52MT10LHRoaXMudjI9ZX1nZXRQb2ludCh0LGU9bmV3IEg1dCl7Y29uc3Qgbj1lO3JldHVybiAxPT09dD9uLmNvcHkodGhpcy52Mik6KG4uY29weSh0aGlzLnYyKS5zdWIodGhpcy52MSksbi5tdWx0aXBseVNjYWxhcih0KS5hZGQodGhpcy52MSkpLG59Z2V0UG9pbnRBdCh0LGUpe3JldHVybiB0aGlzLmdldFBvaW50KHQsZSl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLnYxLmNvcHkodC52MSksdGhpcy52Mi5jb3B5KHQudjIpLHRoaXN9dG9KU09OKCl7Y29uc3QgdD1zdXBlci50b0pTT04oKTtyZXR1cm4gdC52MT10aGlzLnYxLnRvQXJyYXkoKSx0LnYyPXRoaXMudjIudG9BcnJheSgpLHR9ZnJvbUpTT04odCl7cmV0dXJuIHN1cGVyLmZyb21KU09OKHQpLHRoaXMudjEuZnJvbUFycmF5KHQudjEpLHRoaXMudjIuZnJvbUFycmF5KHQudjIpLHRoaXN9fWNsYXNzIFV0ZSBleHRlbmRzIFR0ZXtjb25zdHJ1Y3Rvcih0PW5ldyBDNXQsZT1uZXcgQzV0LG49bmV3IEM1dCl7c3VwZXIoKSx0aGlzLnR5cGU9IlF1YWRyYXRpY0JlemllckN1cnZlIix0aGlzLnYwPXQsdGhpcy52MT1lLHRoaXMudjI9bn1nZXRQb2ludCh0LGU9bmV3IEM1dCl7Y29uc3Qgbj1lLGk9dGhpcy52MCxyPXRoaXMudjEsbz10aGlzLnYyO3JldHVybiBuLnNldCh6dGUodCxpLngsci54LG8ueCksenRlKHQsaS55LHIueSxvLnkpKSxufWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy52MC5jb3B5KHQudjApLHRoaXMudjEuY29weSh0LnYxKSx0aGlzLnYyLmNvcHkodC52MiksdGhpc310b0pTT04oKXtjb25zdCB0PXN1cGVyLnRvSlNPTigpO3JldHVybiB0LnYwPXRoaXMudjAudG9BcnJheSgpLHQudjE9dGhpcy52MS50b0FycmF5KCksdC52Mj10aGlzLnYyLnRvQXJyYXkoKSx0fWZyb21KU09OKHQpe3JldHVybiBzdXBlci5mcm9tSlNPTih0KSx0aGlzLnYwLmZyb21BcnJheSh0LnYwKSx0aGlzLnYxLmZyb21BcnJheSh0LnYxKSx0aGlzLnYyLmZyb21BcnJheSh0LnYyKSx0aGlzfX1VdGUucHJvdG90eXBlLmlzUXVhZHJhdGljQmV6aWVyQ3VydmU9ITA7Y2xhc3MganRlIGV4dGVuZHMgVHRle2NvbnN0cnVjdG9yKHQ9bmV3IEg1dCxlPW5ldyBINXQsbj1uZXcgSDV0KXtzdXBlcigpLHRoaXMudHlwZT0iUXVhZHJhdGljQmV6aWVyQ3VydmUzIix0aGlzLnYwPXQsdGhpcy52MT1lLHRoaXMudjI9bn1nZXRQb2ludCh0LGU9bmV3IEg1dCl7Y29uc3Qgbj1lLGk9dGhpcy52MCxyPXRoaXMudjEsbz10aGlzLnYyO3JldHVybiBuLnNldCh6dGUodCxpLngsci54LG8ueCksenRlKHQsaS55LHIueSxvLnkpLHp0ZSh0LGkueixyLnosby56KSksbn1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMudjAuY29weSh0LnYwKSx0aGlzLnYxLmNvcHkodC52MSksdGhpcy52Mi5jb3B5KHQudjIpLHRoaXN9dG9KU09OKCl7Y29uc3QgdD1zdXBlci50b0pTT04oKTtyZXR1cm4gdC52MD10aGlzLnYwLnRvQXJyYXkoKSx0LnYxPXRoaXMudjEudG9BcnJheSgpLHQudjI9dGhpcy52Mi50b0FycmF5KCksdH1mcm9tSlNPTih0KXtyZXR1cm4gc3VwZXIuZnJvbUpTT04odCksdGhpcy52MC5mcm9tQXJyYXkodC52MCksdGhpcy52MS5mcm9tQXJyYXkodC52MSksdGhpcy52Mi5mcm9tQXJyYXkodC52MiksdGhpc319anRlLnByb3RvdHlwZS5pc1F1YWRyYXRpY0JlemllckN1cnZlMz0hMDtjbGFzcyBHdGUgZXh0ZW5kcyBUdGV7Y29uc3RydWN0b3IodD1bXSl7c3VwZXIoKSx0aGlzLnR5cGU9IlNwbGluZUN1cnZlIix0aGlzLnBvaW50cz10fWdldFBvaW50KHQsZT1uZXcgQzV0KXtjb25zdCBuPWUsaT10aGlzLnBvaW50cyxyPShpLmxlbmd0aC0xKSp0LG89TWF0aC5mbG9vcihyKSxhPXItbyxzPWlbMD09PW8/bzpvLTFdLGw9aVtvXSxjPWlbbz5pLmxlbmd0aC0yP2kubGVuZ3RoLTE6bysxXSx1PWlbbz5pLmxlbmd0aC0zP2kubGVuZ3RoLTE6bysyXTtyZXR1cm4gbi5zZXQoT3RlKGEscy54LGwueCxjLngsdS54KSxPdGUoYSxzLnksbC55LGMueSx1LnkpKSxufWNvcHkodCl7c3VwZXIuY29weSh0KSx0aGlzLnBvaW50cz1bXTtmb3IobGV0IGU9MCxuPXQucG9pbnRzLmxlbmd0aDtlPG47ZSsrKXt0aGlzLnBvaW50cy5wdXNoKHQucG9pbnRzW2VdLmNsb25lKCkpfXJldHVybiB0aGlzfXRvSlNPTigpe2NvbnN0IHQ9c3VwZXIudG9KU09OKCk7dC5wb2ludHM9W107Zm9yKGxldCBlPTAsbj10aGlzLnBvaW50cy5sZW5ndGg7ZTxuO2UrKyl7dC5wb2ludHMucHVzaCh0aGlzLnBvaW50c1tlXS50b0FycmF5KCkpfXJldHVybiB0fWZyb21KU09OKHQpe3N1cGVyLmZyb21KU09OKHQpLHRoaXMucG9pbnRzPVtdO2ZvcihsZXQgZT0wLG49dC5wb2ludHMubGVuZ3RoO2U8bjtlKyspe2NvbnN0IG49dC5wb2ludHNbZV07dGhpcy5wb2ludHMucHVzaCgobmV3IEM1dCkuZnJvbUFycmF5KG4pKX1yZXR1cm4gdGhpc319R3RlLnByb3RvdHlwZS5pc1NwbGluZUN1cnZlPSEwO3ZhciBXdGU9T2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsQXJjQ3VydmU6QXRlLENhdG11bGxSb21DdXJ2ZTM6UnRlLEN1YmljQmV6aWVyQ3VydmU6QnRlLEN1YmljQmV6aWVyQ3VydmUzOkh0ZSxFbGxpcHNlQ3VydmU6Q3RlLExpbmVDdXJ2ZTpGdGUsTGluZUN1cnZlMzpWdGUsUXVhZHJhdGljQmV6aWVyQ3VydmU6VXRlLFF1YWRyYXRpY0JlemllckN1cnZlMzpqdGUsU3BsaW5lQ3VydmU6R3RlfSk7Y29uc3QgcXRlPWZ1bmN0aW9uKHQsZSxuPTIpe2NvbnN0IGk9ZSYmZS5sZW5ndGgscj1pP2VbMF0qbjp0Lmxlbmd0aDtsZXQgbz1ZdGUodCwwLHIsbiwhMCk7Y29uc3QgYT1bXTtpZighb3x8by5uZXh0PT09by5wcmV2KXJldHVybiBhO2xldCBzLGwsYyx1LGgsZCxwO2lmKGkmJihvPShmdW5jdGlvbiBmKHQsZSxuLGkpe2NvbnN0IHI9W107bGV0IG8sYSxzLGwsYztmb3Iobz0wLGE9ZS5sZW5ndGg7bzxhO28rKylzPWVbb10qaSxsPW88YS0xP2VbbysxXSppOnQubGVuZ3RoLGM9WXRlKHQscyxsLGksITEpLGM9PT1jLm5leHQmJihjLnN0ZWluZXI9ITApLHIucHVzaChyZWUoYykpO2ZvcihyLnNvcnQodGVlKSxvPTA7bzxyLmxlbmd0aDtvKyspZWVlKHJbb10sbiksbj1YdGUobixuLm5leHQpO3JldHVybiBufSkodCxlLG8sbikpLHQubGVuZ3RoPjgwKm4pe3M9Yz10WzBdLGw9dT10WzFdO2ZvcihsZXQgZT1uO2U8cjtlKz1uKWg9dFtlXSxkPXRbZSsxXSxoPHMmJihzPWgpLGQ8bCYmKGw9ZCksaD5jJiYoYz1oKSxkPnUmJih1PWQpO3A9TWF0aC5tYXgoYy1zLHUtbCkscD0wIT09cD8xL3A6MH1yZXR1cm4gJHRlKG8sYSxuLHMsbCxwKSxhfTtmdW5jdGlvbiBZdGUodCxlLG4saSxyKXtsZXQgbyxhO2lmKHI9PT0oZnVuY3Rpb24gcyh0LGUsbixpKXtsZXQgcj0wO2ZvcihsZXQgbz1lLGE9bi1pO288bjtvKz1pKXIrPSh0W2FdLXRbb10pKih0W28rMV0rdFthKzFdKSxhPW87cmV0dXJuIHJ9KSh0LGUsbixpKT4wKWZvcihvPWU7bzxuO28rPWkpYT1mZWUobyx0W29dLHRbbysxXSxhKTtlbHNlIGZvcihvPW4taTtvPj1lO28tPWkpYT1mZWUobyx0W29dLHRbbysxXSxhKTtyZXR1cm4gYSYmbGVlKGEsYS5uZXh0KSYmKG1lZShhKSxhPWEubmV4dCksYX1mdW5jdGlvbiBYdGUodCxlKXtpZighdClyZXR1cm4gdDtlfHwoZT10KTtsZXQgbixpPXQ7ZG97aWYobj0hMSxpLnN0ZWluZXJ8fCFsZWUoaSxpLm5leHQpJiYwIT09c2VlKGkucHJldixpLGkubmV4dCkpaT1pLm5leHQ7ZWxzZXtpZihtZWUoaSksaT1lPWkucHJldixpPT09aS5uZXh0KWJyZWFrO249ITB9fXdoaWxlKG58fGkhPT1lKTtyZXR1cm4gZX1mdW5jdGlvbiAkdGUodCxlLG4saSxyLG8sYSl7aWYoIXQpcmV0dXJuOyFhJiZvJiYoZnVuY3Rpb24gcyh0LGUsbixpKXtsZXQgcj10O2Rve251bGw9PT1yLnomJihyLno9aWVlKHIueCxyLnksZSxuLGkpKSxyLnByZXZaPXIucHJldixyLm5leHRaPXIubmV4dCxyPXIubmV4dH13aGlsZShyIT09dCk7ci5wcmV2Wi5uZXh0Wj1udWxsLHIucHJldlo9bnVsbCwoZnVuY3Rpb24gbyh0KXtsZXQgZSxuLGkscixvLGEscyxsLGM9MTtkb3tmb3Iobj10LHQ9bnVsbCxvPW51bGwsYT0wO247KXtmb3IoYSsrLGk9bixzPTAsZT0wO2U8YyYmKHMrKyxpPWkubmV4dFosaSk7ZSsrKTtmb3IobD1jO3M+MHx8bD4wJiZpOykwIT09cyYmKDA9PT1sfHwhaXx8bi56PD1pLnopPyhyPW4sbj1uLm5leHRaLHMtLSk6KHI9aSxpPWkubmV4dFosbC0tKSxvP28ubmV4dFo9cjp0PXIsci5wcmV2Wj1vLG89cjtuPWl9by5uZXh0Wj1udWxsLGMqPTJ9d2hpbGUoYT4xKTtyZXR1cm4gdH0pKHIpfSkodCxpLHIsbyk7bGV0IGwsYyx1PXQ7Zm9yKDt0LnByZXYhPT10Lm5leHQ7KWlmKGw9dC5wcmV2LGM9dC5uZXh0LG8/WnRlKHQsaSxyLG8pOkt0ZSh0KSllLnB1c2gobC5pL24pLGUucHVzaCh0LmkvbiksZS5wdXNoKGMuaS9uKSxtZWUodCksdD1jLm5leHQsdT1jLm5leHQ7ZWxzZSBpZigodD1jKT09PXUpe2E/MT09PWE/JHRlKHQ9SnRlKFh0ZSh0KSxlLG4pLGUsbixpLHIsbywyKToyPT09YSYmUXRlKHQsZSxuLGkscixvKTokdGUoWHRlKHQpLGUsbixpLHIsbywxKTticmVha319ZnVuY3Rpb24gS3RlKHQpe2NvbnN0IGU9dC5wcmV2LG49dCxpPXQubmV4dDtpZihzZWUoZSxuLGkpPj0wKXJldHVybiExO2xldCByPXQubmV4dC5uZXh0O2Zvcig7ciE9PXQucHJldjspe2lmKG9lZShlLngsZS55LG4ueCxuLnksaS54LGkueSxyLngsci55KSYmc2VlKHIucHJldixyLHIubmV4dCk+PTApcmV0dXJuITE7cj1yLm5leHR9cmV0dXJuITB9ZnVuY3Rpb24gWnRlKHQsZSxuLGkpe2NvbnN0IHI9dC5wcmV2LG89dCxhPXQubmV4dDtpZihzZWUocixvLGEpPj0wKXJldHVybiExO2NvbnN0IHM9ci54Pm8ueD9yLng+YS54P3IueDphLng6by54PmEueD9vLng6YS54LGw9ci55Pm8ueT9yLnk+YS55P3IueTphLnk6by55PmEueT9vLnk6YS55LGM9aWVlKHIueDxvLng/ci54PGEueD9yLng6YS54Om8ueDxhLng/by54OmEueCxyLnk8by55P3IueTxhLnk/ci55OmEueTpvLnk8YS55P28ueTphLnksZSxuLGkpLHU9aWVlKHMsbCxlLG4saSk7bGV0IGg9dC5wcmV2WixkPXQubmV4dFo7Zm9yKDtoJiZoLno+PWMmJmQmJmQuejw9dTspe2lmKGghPT10LnByZXYmJmghPT10Lm5leHQmJm9lZShyLngsci55LG8ueCxvLnksYS54LGEueSxoLngsaC55KSYmc2VlKGgucHJldixoLGgubmV4dCk+PTApcmV0dXJuITE7aWYoaD1oLnByZXZaLGQhPT10LnByZXYmJmQhPT10Lm5leHQmJm9lZShyLngsci55LG8ueCxvLnksYS54LGEueSxkLngsZC55KSYmc2VlKGQucHJldixkLGQubmV4dCk+PTApcmV0dXJuITE7ZD1kLm5leHRafWZvcig7aCYmaC56Pj1jOyl7aWYoaCE9PXQucHJldiYmaCE9PXQubmV4dCYmb2VlKHIueCxyLnksby54LG8ueSxhLngsYS55LGgueCxoLnkpJiZzZWUoaC5wcmV2LGgsaC5uZXh0KT49MClyZXR1cm4hMTtoPWgucHJldlp9Zm9yKDtkJiZkLno8PXU7KXtpZihkIT09dC5wcmV2JiZkIT09dC5uZXh0JiZvZWUoci54LHIueSxvLngsby55LGEueCxhLnksZC54LGQueSkmJnNlZShkLnByZXYsZCxkLm5leHQpPj0wKXJldHVybiExO2Q9ZC5uZXh0Wn1yZXR1cm4hMH1mdW5jdGlvbiBKdGUodCxlLG4pe2xldCBpPXQ7ZG97Y29uc3Qgcj1pLnByZXYsbz1pLm5leHQubmV4dDshbGVlKHIsbykmJmNlZShyLGksaS5uZXh0LG8pJiZkZWUocixvKSYmZGVlKG8scikmJihlLnB1c2goci5pL24pLGUucHVzaChpLmkvbiksZS5wdXNoKG8uaS9uKSxtZWUoaSksbWVlKGkubmV4dCksaT10PW8pLGk9aS5uZXh0fXdoaWxlKGkhPT10KTtyZXR1cm4gWHRlKGkpfWZ1bmN0aW9uIFF0ZSh0LGUsbixpLHIsbyl7bGV0IGE9dDtkb3tsZXQgdD1hLm5leHQubmV4dDtmb3IoO3QhPT1hLnByZXY7KXtpZihhLmkhPT10LmkmJmFlZShhLHQpKXtsZXQgcz1wZWUoYSx0KTtyZXR1cm4gYT1YdGUoYSxhLm5leHQpLHM9WHRlKHMscy5uZXh0KSwkdGUoYSxlLG4saSxyLG8pLHZvaWQgJHRlKHMsZSxuLGkscixvKX10PXQubmV4dH1hPWEubmV4dH13aGlsZShhIT09dCl9ZnVuY3Rpb24gdGVlKHQsZSl7cmV0dXJuIHQueC1lLnh9ZnVuY3Rpb24gZWVlKHQsZSl7aWYoZT0oZnVuY3Rpb24gbih0LGUpe2xldCBuPWU7Y29uc3QgaT10Lngscj10Lnk7bGV0IG8sYT0tMS8wO2Rve2lmKHI8PW4ueSYmcj49bi5uZXh0LnkmJm4ubmV4dC55IT09bi55KXtjb25zdCB0PW4ueCsoci1uLnkpKihuLm5leHQueC1uLngpLyhuLm5leHQueS1uLnkpO2lmKHQ8PWkmJnQ+YSl7aWYoYT10LHQ9PT1pKXtpZihyPT09bi55KXJldHVybiBuO2lmKHI9PT1uLm5leHQueSlyZXR1cm4gbi5uZXh0fW89bi54PG4ubmV4dC54P246bi5uZXh0fX1uPW4ubmV4dH13aGlsZShuIT09ZSk7aWYoIW8pcmV0dXJuIG51bGw7aWYoaT09PWEpcmV0dXJuIG87Y29uc3Qgcz1vLGw9by54LGM9by55O2xldCB1LGg9MS8wO249bztkb3tpPj1uLngmJm4ueD49bCYmaSE9PW4ueCYmb2VlKHI8Yz9pOmEscixsLGMscjxjP2E6aSxyLG4ueCxuLnkpJiYodT1NYXRoLmFicyhyLW4ueSkvKGktbi54KSxkZWUobix0KSYmKHU8aHx8dT09PWgmJihuLng+by54fHxuLng9PT1vLngmJm5lZShvLG4pKSkmJihvPW4saD11KSksbj1uLm5leHR9d2hpbGUobiE9PXMpO3JldHVybiBvfSkodCxlKSl7Y29uc3Qgbj1wZWUoZSx0KTtYdGUoZSxlLm5leHQpLFh0ZShuLG4ubmV4dCl9fWZ1bmN0aW9uIG5lZSh0LGUpe3JldHVybiBzZWUodC5wcmV2LHQsZS5wcmV2KTwwJiZzZWUoZS5uZXh0LHQsdC5uZXh0KTwwfWZ1bmN0aW9uIGllZSh0LGUsbixpLHIpe3JldHVybih0PTE0MzE2NTU3NjUmKCh0PTg1ODk5MzQ1OSYoKHQ9MjUyNjQ1MTM1JigodD0xNjcxMTkzNSYoKHQ9MzI3NjcqKHQtbikqcil8dDw8OCkpfHQ8PDQpKXx0PDwyKSl8dDw8MSkpfChlPTE0MzE2NTU3NjUmKChlPTg1ODk5MzQ1OSYoKGU9MjUyNjQ1MTM1JigoZT0xNjcxMTkzNSYoKGU9MzI3NjcqKGUtaSkqcil8ZTw8OCkpfGU8PDQpKXxlPDwyKSl8ZTw8MSkpPDwxfWZ1bmN0aW9uIHJlZSh0KXtsZXQgZT10LG49dDtkb3soZS54PG4ueHx8ZS54PT09bi54JiZlLnk8bi55KSYmKG49ZSksZT1lLm5leHR9d2hpbGUoZSE9PXQpO3JldHVybiBufWZ1bmN0aW9uIG9lZSh0LGUsbixpLHIsbyxhLHMpe3JldHVybihyLWEpKihlLXMpLSh0LWEpKihvLXMpPj0wJiYodC1hKSooaS1zKS0obi1hKSooZS1zKT49MCYmKG4tYSkqKG8tcyktKHItYSkqKGktcyk+PTB9ZnVuY3Rpb24gYWVlKHQsZSl7cmV0dXJuIHQubmV4dC5pIT09ZS5pJiZ0LnByZXYuaSE9PWUuaSYmIShmdW5jdGlvbiBuKHQsZSl7bGV0IG49dDtkb3tpZihuLmkhPT10LmkmJm4ubmV4dC5pIT09dC5pJiZuLmkhPT1lLmkmJm4ubmV4dC5pIT09ZS5pJiZjZWUobixuLm5leHQsdCxlKSlyZXR1cm4hMDtuPW4ubmV4dH13aGlsZShuIT09dCk7cmV0dXJuITF9KSh0LGUpJiYoZGVlKHQsZSkmJmRlZShlLHQpJiYoZnVuY3Rpb24gaSh0LGUpe2xldCBuPXQsaT0hMTtjb25zdCByPSh0LngrZS54KS8yLG89KHQueStlLnkpLzI7ZG97bi55Pm8hPW4ubmV4dC55Pm8mJm4ubmV4dC55IT09bi55JiZyPChuLm5leHQueC1uLngpKihvLW4ueSkvKG4ubmV4dC55LW4ueSkrbi54JiYoaT0haSksbj1uLm5leHR9d2hpbGUobiE9PXQpO3JldHVybiBpfSkodCxlKSYmKHNlZSh0LnByZXYsdCxlLnByZXYpfHxzZWUodCxlLnByZXYsZSkpfHxsZWUodCxlKSYmc2VlKHQucHJldix0LHQubmV4dCk+MCYmc2VlKGUucHJldixlLGUubmV4dCk+MCl9ZnVuY3Rpb24gc2VlKHQsZSxuKXtyZXR1cm4oZS55LXQueSkqKG4ueC1lLngpLShlLngtdC54KSoobi55LWUueSl9ZnVuY3Rpb24gbGVlKHQsZSl7cmV0dXJuIHQueD09PWUueCYmdC55PT09ZS55fWZ1bmN0aW9uIGNlZSh0LGUsbixpKXtjb25zdCByPWhlZShzZWUodCxlLG4pKSxvPWhlZShzZWUodCxlLGkpKSxhPWhlZShzZWUobixpLHQpKSxzPWhlZShzZWUobixpLGUpKTtyZXR1cm4gciE9PW8mJmEhPT1zfHwoISgwIT09cnx8IXVlZSh0LG4sZSkpfHwoISgwIT09b3x8IXVlZSh0LGksZSkpfHwoISgwIT09YXx8IXVlZShuLHQsaSkpfHwhKDAhPT1zfHwhdWVlKG4sZSxpKSkpKSl9ZnVuY3Rpb24gdWVlKHQsZSxuKXtyZXR1cm4gZS54PD1NYXRoLm1heCh0Lngsbi54KSYmZS54Pj1NYXRoLm1pbih0Lngsbi54KSYmZS55PD1NYXRoLm1heCh0Lnksbi55KSYmZS55Pj1NYXRoLm1pbih0Lnksbi55KX1mdW5jdGlvbiBoZWUodCl7cmV0dXJuIHQ+MD8xOnQ8MD8tMTowfWZ1bmN0aW9uIGRlZSh0LGUpe3JldHVybiBzZWUodC5wcmV2LHQsdC5uZXh0KTwwP3NlZSh0LGUsdC5uZXh0KT49MCYmc2VlKHQsdC5wcmV2LGUpPj0wOnNlZSh0LGUsdC5wcmV2KTwwfHxzZWUodCx0Lm5leHQsZSk8MH1mdW5jdGlvbiBwZWUodCxlKXtjb25zdCBuPW5ldyBnZWUodC5pLHQueCx0LnkpLGk9bmV3IGdlZShlLmksZS54LGUueSkscj10Lm5leHQsbz1lLnByZXY7cmV0dXJuIHQubmV4dD1lLGUucHJldj10LG4ubmV4dD1yLHIucHJldj1uLGkubmV4dD1uLG4ucHJldj1pLG8ubmV4dD1pLGkucHJldj1vLGl9ZnVuY3Rpb24gZmVlKHQsZSxuLGkpe2NvbnN0IHI9bmV3IGdlZSh0LGUsbik7cmV0dXJuIGk/KHIubmV4dD1pLm5leHQsci5wcmV2PWksaS5uZXh0LnByZXY9cixpLm5leHQ9cik6KHIucHJldj1yLHIubmV4dD1yKSxyfWZ1bmN0aW9uIG1lZSh0KXt0Lm5leHQucHJldj10LnByZXYsdC5wcmV2Lm5leHQ9dC5uZXh0LHQucHJldlomJih0LnByZXZaLm5leHRaPXQubmV4dFopLHQubmV4dFomJih0Lm5leHRaLnByZXZaPXQucHJldlopfWZ1bmN0aW9uIGdlZSh0LGUsbil7dGhpcy5pPXQsdGhpcy54PWUsdGhpcy55PW4sdGhpcy5wcmV2PW51bGwsdGhpcy5uZXh0PW51bGwsdGhpcy56PW51bGwsdGhpcy5wcmV2Wj1udWxsLHRoaXMubmV4dFo9bnVsbCx0aGlzLnN0ZWluZXI9ITF9Y2xhc3MgX2Vle3N0YXRpYyBhcmVhKHQpe2NvbnN0IGU9dC5sZW5ndGg7bGV0IG49MDtmb3IobGV0IGk9ZS0xLHI9MDtyPGU7aT1yKyspbis9dFtpXS54KnRbcl0ueS10W3JdLngqdFtpXS55O3JldHVybi41Km59c3RhdGljIGlzQ2xvY2tXaXNlKHQpe3JldHVybiBfZWUuYXJlYSh0KTwwfXN0YXRpYyB0cmlhbmd1bGF0ZVNoYXBlKHQsZSl7Y29uc3Qgbj1bXSxpPVtdLHI9W107eWVlKHQpLHZlZShuLHQpO2xldCBvPXQubGVuZ3RoO2UuZm9yRWFjaCh5ZWUpO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKWkucHVzaChvKSxvKz1lW3RdLmxlbmd0aCx2ZWUobixlW3RdKTtjb25zdCBhPXF0ZShuLGkpO2ZvcihsZXQgdD0wO3Q8YS5sZW5ndGg7dCs9MylyLnB1c2goYS5zbGljZSh0LHQrMykpO3JldHVybiByfX1mdW5jdGlvbiB5ZWUodCl7Y29uc3QgZT10Lmxlbmd0aDtlPjImJnRbZS0xXS5lcXVhbHModFswXSkmJnQucG9wKCl9ZnVuY3Rpb24gdmVlKHQsZSl7Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKyspdC5wdXNoKGVbbl0ueCksdC5wdXNoKGVbbl0ueSl9Y2xhc3MgYmVlIGV4dGVuZHMgTjR0e2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIoKSx0aGlzLnR5cGU9IkV4dHJ1ZGVHZW9tZXRyeSIsdGhpcy5wYXJhbWV0ZXJzPXtzaGFwZXM6dCxvcHRpb25zOmV9LHQ9QXJyYXkuaXNBcnJheSh0KT90Olt0XTtjb25zdCBuPXRoaXMsaT1bXSxyPVtdO2ZvcihsZXQgZT0wLG49dC5sZW5ndGg7ZTxuO2UrKyl7byh0W2VdKX1mdW5jdGlvbiBvKHQpe2NvbnN0IG89W10sYT12b2lkIDAhPT1lLmN1cnZlU2VnbWVudHM/ZS5jdXJ2ZVNlZ21lbnRzOjEyLHM9dm9pZCAwIT09ZS5zdGVwcz9lLnN0ZXBzOjE7bGV0IGw9dm9pZCAwIT09ZS5kZXB0aD9lLmRlcHRoOjEwMCxjPXZvaWQgMD09PWUuYmV2ZWxFbmFibGVkfHxlLmJldmVsRW5hYmxlZCx1PXZvaWQgMCE9PWUuYmV2ZWxUaGlja25lc3M/ZS5iZXZlbFRoaWNrbmVzczo2LGg9dm9pZCAwIT09ZS5iZXZlbFNpemU/ZS5iZXZlbFNpemU6dS0yLGQ9dm9pZCAwIT09ZS5iZXZlbE9mZnNldD9lLmJldmVsT2Zmc2V0OjAscD12b2lkIDAhPT1lLmJldmVsU2VnbWVudHM/ZS5iZXZlbFNlZ21lbnRzOjM7Y29uc3QgZj1lLmV4dHJ1ZGVQYXRoLG09dm9pZCAwIT09ZS5VVkdlbmVyYXRvcj9lLlVWR2VuZXJhdG9yOnhlZTt2b2lkIDAhPT1lLmFtb3VudCYmKGNvbnNvbGUud2FybigiVEhSRUUuRXh0cnVkZUJ1ZmZlckdlb21ldHJ5OiBhbW91bnQgaGFzIGJlZW4gcmVuYW1lZCB0byBkZXB0aC4iKSxsPWUuYW1vdW50KTtsZXQgZyxfLHksdixiLHg9ITE7ZiYmKGc9Zi5nZXRTcGFjZWRQb2ludHMocykseD0hMCxjPSExLF89Zi5jb21wdXRlRnJlbmV0RnJhbWVzKHMsITEpLHk9bmV3IEg1dCx2PW5ldyBINXQsYj1uZXcgSDV0KSxjfHwocD0wLHU9MCxoPTAsZD0wKTtjb25zdCB3PXQuZXh0cmFjdFBvaW50cyhhKTtsZXQgUz13LnNoYXBlO2NvbnN0IE09dy5ob2xlcztpZighX2VlLmlzQ2xvY2tXaXNlKFMpKXtTPVMucmV2ZXJzZSgpO2ZvcihsZXQgdD0wLGU9TS5sZW5ndGg7dDxlO3QrKyl7Y29uc3QgZT1NW3RdO19lZS5pc0Nsb2NrV2lzZShlKSYmKE1bdF09ZS5yZXZlcnNlKCkpfX1jb25zdCBFPV9lZS50cmlhbmd1bGF0ZVNoYXBlKFMsTSksVD1TO2ZvcihsZXQgdD0wLGU9TS5sZW5ndGg7dDxlO3QrKyl7Uz1TLmNvbmNhdChNW3RdKX1mdW5jdGlvbiBDKHQsZSxuKXtyZXR1cm4gZXx8Y29uc29sZS5lcnJvcigiVEhSRUUuRXh0cnVkZUdlb21ldHJ5OiB2ZWMgZG9lcyBub3QgZXhpc3QiKSxlLmNsb25lKCkubXVsdGlwbHlTY2FsYXIobikuYWRkKHQpfWNvbnN0IEE9Uy5sZW5ndGgsaz1FLmxlbmd0aDtmdW5jdGlvbiBMKHQsZSxuKXtsZXQgaSxyLG87Y29uc3QgYT10LngtZS54LHM9dC55LWUueSxsPW4ueC10LngsYz1uLnktdC55LHU9YSphK3MqcztpZihNYXRoLmFicyhhKmMtcypsKT5OdW1iZXIuRVBTSUxPTil7Y29uc3QgaD1NYXRoLnNxcnQodSksZD1NYXRoLnNxcnQobCpsK2MqYykscD1lLngtcy9oLGY9ZS55K2EvaCxtPSgobi54LWMvZC1wKSpjLShuLnkrbC9kLWYpKmwpLyhhKmMtcypsKTtpPXArYSptLXQueCxyPWYrcyptLXQueTtjb25zdCBnPWkqaStyKnI7aWYoZzw9MilyZXR1cm4gbmV3IEM1dChpLHIpO289TWF0aC5zcXJ0KGcvMil9ZWxzZXtsZXQgdD0hMTthPk51bWJlci5FUFNJTE9OP2w+TnVtYmVyLkVQU0lMT04mJih0PSEwKTphPC1OdW1iZXIuRVBTSUxPTj9sPC1OdW1iZXIuRVBTSUxPTiYmKHQ9ITApOk1hdGguc2lnbihzKT09PU1hdGguc2lnbihjKSYmKHQ9ITApLHQ/KGk9LXMscj1hLG89TWF0aC5zcXJ0KHUpKTooaT1hLHI9cyxvPU1hdGguc3FydCh1LzIpKX1yZXR1cm4gbmV3IEM1dChpL28sci9vKX1jb25zdCBQPVtdO2ZvcihsZXQgdD0wLGU9VC5sZW5ndGgsbj1lLTEsaT10KzE7dDxlO3QrKyxuKyssaSsrKW49PT1lJiYobj0wKSxpPT09ZSYmKGk9MCksUFt0XT1MKFRbdF0sVFtuXSxUW2ldKTtjb25zdCBOPVtdO2xldCBJLFI9UC5jb25jYXQoKTtmb3IobGV0IHQ9MCxlPU0ubGVuZ3RoO3Q8ZTt0Kyspe2NvbnN0IGU9TVt0XTtJPVtdO2ZvcihsZXQgdD0wLG49ZS5sZW5ndGgsaT1uLTEscj10KzE7dDxuO3QrKyxpKysscisrKWk9PT1uJiYoaT0wKSxyPT09biYmKHI9MCksSVt0XT1MKGVbdF0sZVtpXSxlW3JdKTtOLnB1c2goSSksUj1SLmNvbmNhdChJKX1mb3IobGV0IHQ9MDt0PHA7dCsrKXtjb25zdCBlPXQvcCxuPXUqTWF0aC5jb3MoZSpNYXRoLlBJLzIpLGk9aCpNYXRoLnNpbihlKk1hdGguUEkvMikrZDtmb3IobGV0IHQ9MCxlPVQubGVuZ3RoO3Q8ZTt0Kyspe2NvbnN0IGU9QyhUW3RdLFBbdF0saSk7RChlLngsZS55LC1uKX1mb3IobGV0IHQ9MCxlPU0ubGVuZ3RoO3Q8ZTt0Kyspe2NvbnN0IGU9TVt0XTtJPU5bdF07Zm9yKGxldCB0PTAscj1lLmxlbmd0aDt0PHI7dCsrKXtjb25zdCByPUMoZVt0XSxJW3RdLGkpO0Qoci54LHIueSwtbil9fX1jb25zdCBPPWgrZDtmb3IobGV0IHQ9MDt0PEE7dCsrKXtjb25zdCBlPWM/QyhTW3RdLFJbdF0sTyk6U1t0XTt4Pyh2LmNvcHkoXy5ub3JtYWxzWzBdKS5tdWx0aXBseVNjYWxhcihlLngpLHkuY29weShfLmJpbm9ybWFsc1swXSkubXVsdGlwbHlTY2FsYXIoZS55KSxiLmNvcHkoZ1swXSkuYWRkKHYpLmFkZCh5KSxEKGIueCxiLnksYi56KSk6RChlLngsZS55LDApfWZvcihsZXQgdD0xO3Q8PXM7dCsrKWZvcihsZXQgZT0wO2U8QTtlKyspe2NvbnN0IG49Yz9DKFNbZV0sUltlXSxPKTpTW2VdO3g/KHYuY29weShfLm5vcm1hbHNbdF0pLm11bHRpcGx5U2NhbGFyKG4ueCkseS5jb3B5KF8uYmlub3JtYWxzW3RdKS5tdWx0aXBseVNjYWxhcihuLnkpLGIuY29weShnW3RdKS5hZGQodikuYWRkKHkpLEQoYi54LGIueSxiLnopKTpEKG4ueCxuLnksbC9zKnQpfWZvcihsZXQgdD1wLTE7dD49MDt0LS0pe2NvbnN0IGU9dC9wLG49dSpNYXRoLmNvcyhlKk1hdGguUEkvMiksaT1oKk1hdGguc2luKGUqTWF0aC5QSS8yKStkO2ZvcihsZXQgdD0wLGU9VC5sZW5ndGg7dDxlO3QrKyl7Y29uc3QgZT1DKFRbdF0sUFt0XSxpKTtEKGUueCxlLnksbCtuKX1mb3IobGV0IHQ9MCxlPU0ubGVuZ3RoO3Q8ZTt0Kyspe2NvbnN0IGU9TVt0XTtJPU5bdF07Zm9yKGxldCB0PTAscj1lLmxlbmd0aDt0PHI7dCsrKXtjb25zdCByPUMoZVt0XSxJW3RdLGkpO3g/RChyLngsci55K2dbcy0xXS55LGdbcy0xXS54K24pOkQoci54LHIueSxsK24pfX19ZnVuY3Rpb24geih0LGUpe2xldCBuPXQubGVuZ3RoO2Zvcig7LS1uPj0wOyl7Y29uc3QgaT1uO2xldCByPW4tMTtyPDAmJihyPXQubGVuZ3RoLTEpO2ZvcihsZXQgdD0wLG49cysyKnA7dDxuO3QrKyl7Y29uc3Qgbj1BKnQsbz1BKih0KzEpO0goZStpK24sZStyK24sZStyK28sZStpK28pfX19ZnVuY3Rpb24gRCh0LGUsbil7by5wdXNoKHQpLG8ucHVzaChlKSxvLnB1c2gobil9ZnVuY3Rpb24gQih0LGUscil7Rih0KSxGKGUpLEYocik7Y29uc3Qgbz1pLmxlbmd0aC8zLGE9bS5nZW5lcmF0ZVRvcFVWKG4saSxvLTMsby0yLG8tMSk7VihhWzBdKSxWKGFbMV0pLFYoYVsyXSl9ZnVuY3Rpb24gSCh0LGUscixvKXtGKHQpLEYoZSksRihvKSxGKGUpLEYociksRihvKTtjb25zdCBhPWkubGVuZ3RoLzMscz1tLmdlbmVyYXRlU2lkZVdhbGxVVihuLGksYS02LGEtMyxhLTIsYS0xKTtWKHNbMF0pLFYoc1sxXSksVihzWzNdKSxWKHNbMV0pLFYoc1syXSksVihzWzNdKX1mdW5jdGlvbiBGKHQpe2kucHVzaChvWzMqdCswXSksaS5wdXNoKG9bMyp0KzFdKSxpLnB1c2gob1szKnQrMl0pfWZ1bmN0aW9uIFYodCl7ci5wdXNoKHQueCksci5wdXNoKHQueSl9IShmdW5jdGlvbiBVKCl7Y29uc3QgdD1pLmxlbmd0aC8zO2lmKGMpe2xldCB0PTAsZT1BKnQ7Zm9yKGxldCB0PTA7dDxrO3QrKyl7Y29uc3Qgbj1FW3RdO0IoblsyXStlLG5bMV0rZSxuWzBdK2UpfXQ9cysyKnAsZT1BKnQ7Zm9yKGxldCB0PTA7dDxrO3QrKyl7Y29uc3Qgbj1FW3RdO0IoblswXStlLG5bMV0rZSxuWzJdK2UpfX1lbHNle2ZvcihsZXQgdD0wO3Q8azt0Kyspe2NvbnN0IGU9RVt0XTtCKGVbMl0sZVsxXSxlWzBdKX1mb3IobGV0IHQ9MDt0PGs7dCsrKXtjb25zdCBlPUVbdF07QihlWzBdK0EqcyxlWzFdK0EqcyxlWzJdK0Eqcyl9fW4uYWRkR3JvdXAodCxpLmxlbmd0aC8zLXQsMCl9KSgpLChmdW5jdGlvbiBqKCl7Y29uc3QgdD1pLmxlbmd0aC8zO2xldCBlPTA7eihULGUpLGUrPVQubGVuZ3RoO2ZvcihsZXQgdD0wLG49TS5sZW5ndGg7dDxuO3QrKyl7Y29uc3Qgbj1NW3RdO3oobixlKSxlKz1uLmxlbmd0aH1uLmFkZEdyb3VwKHQsaS5sZW5ndGgvMy10LDEpfSkoKX10aGlzLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBiNHQoaSwzKSksdGhpcy5zZXRBdHRyaWJ1dGUoInV2IixuZXcgYjR0KHIsMikpLHRoaXMuY29tcHV0ZVZlcnRleE5vcm1hbHMoKX10b0pTT04oKXtjb25zdCB0PXN1cGVyLnRvSlNPTigpO3JldHVybihmdW5jdGlvbiBlKHQsbixpKXtpZihpLnNoYXBlcz1bXSxBcnJheS5pc0FycmF5KHQpKWZvcihsZXQgZT0wLG49dC5sZW5ndGg7ZTxuO2UrKyl7aS5zaGFwZXMucHVzaCh0W2VdLnV1aWQpfWVsc2UgaS5zaGFwZXMucHVzaCh0LnV1aWQpO3ZvaWQgMCE9PW4uZXh0cnVkZVBhdGgmJihpLm9wdGlvbnMuZXh0cnVkZVBhdGg9bi5leHRydWRlUGF0aC50b0pTT04oKSk7cmV0dXJuIGl9KSh0aGlzLnBhcmFtZXRlcnMuc2hhcGVzLHRoaXMucGFyYW1ldGVycy5vcHRpb25zLHQpfXN0YXRpYyBmcm9tSlNPTih0LGUpe2NvbnN0IG49W107Zm9yKGxldCBpPTAscj10LnNoYXBlcy5sZW5ndGg7aTxyO2krKyl7bi5wdXNoKGVbdC5zaGFwZXNbaV1dKX1jb25zdCBpPXQub3B0aW9ucy5leHRydWRlUGF0aDtyZXR1cm4gdm9pZCAwIT09aSYmKHQub3B0aW9ucy5leHRydWRlUGF0aD0obmV3IFd0ZVtpLnR5cGVdKS5mcm9tSlNPTihpKSksbmV3IGJlZShuLHQub3B0aW9ucyl9fWNvbnN0IHhlZT17Z2VuZXJhdGVUb3BVVjpmdW5jdGlvbih0LGUsbixpLHIpe2NvbnN0IG89ZVszKmldLGE9ZVszKmkrMV0scz1lWzMqcl0sbD1lWzMqcisxXTtyZXR1cm5bbmV3IEM1dChlWzMqbl0sZVszKm4rMV0pLG5ldyBDNXQobyxhKSxuZXcgQzV0KHMsbCldfSxnZW5lcmF0ZVNpZGVXYWxsVVY6ZnVuY3Rpb24odCxlLG4saSxyLG8pe2NvbnN0IGE9ZVszKm5dLHM9ZVszKm4rMV0sbD1lWzMqbisyXSxjPWVbMyppXSx1PWVbMyppKzFdLGg9ZVszKmkrMl0sZD1lWzMqcl0scD1lWzMqcisxXSxmPWVbMypyKzJdLG09ZVszKm9dLGc9ZVszKm8rMV0sXz1lWzMqbysyXTtyZXR1cm4gTWF0aC5hYnMocy11KTxNYXRoLmFicyhhLWMpP1tuZXcgQzV0KGEsMS1sKSxuZXcgQzV0KGMsMS1oKSxuZXcgQzV0KGQsMS1mKSxuZXcgQzV0KG0sMS1fKV06W25ldyBDNXQocywxLWwpLG5ldyBDNXQodSwxLWgpLG5ldyBDNXQocCwxLWYpLG5ldyBDNXQoZywxLV8pXX19O2NsYXNzIHdlZSBleHRlbmRzIHZ0ZXtjb25zdHJ1Y3Rvcih0PTEsZT0wKXtjb25zdCBuPSgxK01hdGguc3FydCg1KSkvMjtzdXBlcihbLTEsbiwwLDEsbiwwLC0xLC1uLDAsMSwtbiwwLDAsLTEsbiwwLDEsbiwwLC0xLC1uLDAsMSwtbixuLDAsLTEsbiwwLDEsLW4sMCwtMSwtbiwwLDFdLFswLDExLDUsMCw1LDEsMCwxLDcsMCw3LDEwLDAsMTAsMTEsMSw1LDksNSwxMSw0LDExLDEwLDIsMTAsNyw2LDcsMSw4LDMsOSw0LDMsNCwyLDMsMiw2LDMsNiw4LDMsOCw5LDQsOSw1LDIsNCwxMSw2LDIsMTAsOCw2LDcsOSw4LDFdLHQsZSksdGhpcy50eXBlPSJJY29zYWhlZHJvbkdlb21ldHJ5Iix0aGlzLnBhcmFtZXRlcnM9e3JhZGl1czp0LGRldGFpbDplfX1zdGF0aWMgZnJvbUpTT04odCl7cmV0dXJuIG5ldyB3ZWUodC5yYWRpdXMsdC5kZXRhaWwpfX1jbGFzcyBTZWUgZXh0ZW5kcyBONHR7Y29uc3RydWN0b3IodCxlPTEyLG49MCxpPTIqTWF0aC5QSSl7c3VwZXIoKSx0aGlzLnR5cGU9IkxhdGhlR2VvbWV0cnkiLHRoaXMucGFyYW1ldGVycz17cG9pbnRzOnQsc2VnbWVudHM6ZSxwaGlTdGFydDpuLHBoaUxlbmd0aDppfSxlPU1hdGguZmxvb3IoZSksaT1zNXQoaSwwLDIqTWF0aC5QSSk7Y29uc3Qgcj1bXSxvPVtdLGE9W10scz0xL2UsbD1uZXcgSDV0LGM9bmV3IEM1dDtmb3IobGV0IHI9MDtyPD1lO3IrKyl7Y29uc3QgdT1uK3IqcyppLGg9TWF0aC5zaW4odSksZD1NYXRoLmNvcyh1KTtmb3IobGV0IG49MDtuPD10Lmxlbmd0aC0xO24rKylsLng9dFtuXS54KmgsbC55PXRbbl0ueSxsLno9dFtuXS54KmQsby5wdXNoKGwueCxsLnksbC56KSxjLng9ci9lLGMueT1uLyh0Lmxlbmd0aC0xKSxhLnB1c2goYy54LGMueSl9Zm9yKGxldCBuPTA7bjxlO24rKylmb3IobGV0IGU9MDtlPHQubGVuZ3RoLTE7ZSsrKXtjb25zdCBpPWUrbip0Lmxlbmd0aCxvPWkrdC5sZW5ndGgsYT1pK3QubGVuZ3RoKzEscz1pKzE7ci5wdXNoKGksbyxzKSxyLnB1c2gobyxhLHMpfWlmKHRoaXMuc2V0SW5kZXgociksdGhpcy5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgYjR0KG8sMykpLHRoaXMuc2V0QXR0cmlidXRlKCJ1diIsbmV3IGI0dChhLDIpKSx0aGlzLmNvbXB1dGVWZXJ0ZXhOb3JtYWxzKCksaT09PTIqTWF0aC5QSSl7Y29uc3Qgbj10aGlzLmF0dHJpYnV0ZXMubm9ybWFsLmFycmF5LGk9bmV3IEg1dCxyPW5ldyBINXQsbz1uZXcgSDV0LGE9ZSp0Lmxlbmd0aCozO2ZvcihsZXQgZT0wLHM9MDtlPHQubGVuZ3RoO2UrKyxzKz0zKWkueD1uW3MrMF0saS55PW5bcysxXSxpLno9bltzKzJdLHIueD1uW2ErcyswXSxyLnk9blthK3MrMV0sci56PW5bYStzKzJdLG8uYWRkVmVjdG9ycyhpLHIpLm5vcm1hbGl6ZSgpLG5bcyswXT1uW2ErcyswXT1vLngsbltzKzFdPW5bYStzKzFdPW8ueSxuW3MrMl09blthK3MrMl09by56fX1zdGF0aWMgZnJvbUpTT04odCl7cmV0dXJuIG5ldyBTZWUodC5wb2ludHMsdC5zZWdtZW50cyx0LnBoaVN0YXJ0LHQucGhpTGVuZ3RoKX19Y2xhc3MgTWVlIGV4dGVuZHMgdnRle2NvbnN0cnVjdG9yKHQ9MSxlPTApe3N1cGVyKFsxLDAsMCwtMSwwLDAsMCwxLDAsMCwtMSwwLDAsMCwxLDAsMCwtMV0sWzAsMiw0LDAsNCwzLDAsMyw1LDAsNSwyLDEsMiw1LDEsNSwzLDEsMyw0LDEsNCwyXSx0LGUpLHRoaXMudHlwZT0iT2N0YWhlZHJvbkdlb21ldHJ5Iix0aGlzLnBhcmFtZXRlcnM9e3JhZGl1czp0LGRldGFpbDplfX1zdGF0aWMgZnJvbUpTT04odCl7cmV0dXJuIG5ldyBNZWUodC5yYWRpdXMsdC5kZXRhaWwpfX1jbGFzcyBFZWUgZXh0ZW5kcyBONHR7Y29uc3RydWN0b3IodCxlLG4pe3N1cGVyKCksdGhpcy50eXBlPSJQYXJhbWV0cmljR2VvbWV0cnkiLHRoaXMucGFyYW1ldGVycz17ZnVuYzp0LHNsaWNlczplLHN0YWNrczpufTtjb25zdCBpPVtdLHI9W10sbz1bXSxhPVtdLHM9MWUtNSxsPW5ldyBINXQsYz1uZXcgSDV0LHU9bmV3IEg1dCxoPW5ldyBINXQsZD1uZXcgSDV0O3QubGVuZ3RoPDMmJmNvbnNvbGUuZXJyb3IoIlRIUkVFLlBhcmFtZXRyaWNHZW9tZXRyeTogRnVuY3Rpb24gbXVzdCBub3cgbW9kaWZ5IGEgVmVjdG9yMyBhcyB0aGlyZCBwYXJhbWV0ZXIuIik7Y29uc3QgcD1lKzE7Zm9yKGxldCBpPTA7aTw9bjtpKyspe2NvbnN0IHA9aS9uO2ZvcihsZXQgbj0wO248PWU7bisrKXtjb25zdCBpPW4vZTt0KGkscCxjKSxyLnB1c2goYy54LGMueSxjLnopLGktcz49MD8odChpLXMscCx1KSxoLnN1YlZlY3RvcnMoYyx1KSk6KHQoaStzLHAsdSksaC5zdWJWZWN0b3JzKHUsYykpLHAtcz49MD8odChpLHAtcyx1KSxkLnN1YlZlY3RvcnMoYyx1KSk6KHQoaSxwK3MsdSksZC5zdWJWZWN0b3JzKHUsYykpLGwuY3Jvc3NWZWN0b3JzKGgsZCkubm9ybWFsaXplKCksby5wdXNoKGwueCxsLnksbC56KSxhLnB1c2goaSxwKX19Zm9yKGxldCB0PTA7dDxuO3QrKylmb3IobGV0IG49MDtuPGU7bisrKXtjb25zdCBlPXQqcCtuKzEscj0odCsxKSpwK24rMSxvPSh0KzEpKnArbjtpLnB1c2godCpwK24sZSxvKSxpLnB1c2goZSxyLG8pfXRoaXMuc2V0SW5kZXgoaSksdGhpcy5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgYjR0KHIsMykpLHRoaXMuc2V0QXR0cmlidXRlKCJub3JtYWwiLG5ldyBiNHQobywzKSksdGhpcy5zZXRBdHRyaWJ1dGUoInV2IixuZXcgYjR0KGEsMikpfX1jbGFzcyBUZWUgZXh0ZW5kcyBONHR7Y29uc3RydWN0b3IodD0uNSxlPTEsbj04LGk9MSxyPTAsbz0yKk1hdGguUEkpe3N1cGVyKCksdGhpcy50eXBlPSJSaW5nR2VvbWV0cnkiLHRoaXMucGFyYW1ldGVycz17aW5uZXJSYWRpdXM6dCxvdXRlclJhZGl1czplLHRoZXRhU2VnbWVudHM6bixwaGlTZWdtZW50czppLHRoZXRhU3RhcnQ6cix0aGV0YUxlbmd0aDpvfSxuPU1hdGgubWF4KDMsbik7Y29uc3QgYT1bXSxzPVtdLGw9W10sYz1bXTtsZXQgdT10O2NvbnN0IGg9KGUtdCkvKGk9TWF0aC5tYXgoMSxpKSksZD1uZXcgSDV0LHA9bmV3IEM1dDtmb3IobGV0IHQ9MDt0PD1pO3QrKyl7Zm9yKGxldCB0PTA7dDw9bjt0Kyspe2NvbnN0IGk9cit0L24qbztkLng9dSpNYXRoLmNvcyhpKSxkLnk9dSpNYXRoLnNpbihpKSxzLnB1c2goZC54LGQueSxkLnopLGwucHVzaCgwLDAsMSkscC54PShkLngvZSsxKS8yLHAueT0oZC55L2UrMSkvMixjLnB1c2gocC54LHAueSl9dSs9aH1mb3IobGV0IHQ9MDt0PGk7dCsrKXtjb25zdCBlPXQqKG4rMSk7Zm9yKGxldCB0PTA7dDxuO3QrKyl7Y29uc3QgaT10K2Uscj1pK24rMSxvPWkrbisyLHM9aSsxO2EucHVzaChpLHIscyksYS5wdXNoKHIsbyxzKX19dGhpcy5zZXRJbmRleChhKSx0aGlzLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBiNHQocywzKSksdGhpcy5zZXRBdHRyaWJ1dGUoIm5vcm1hbCIsbmV3IGI0dChsLDMpKSx0aGlzLnNldEF0dHJpYnV0ZSgidXYiLG5ldyBiNHQoYywyKSl9c3RhdGljIGZyb21KU09OKHQpe3JldHVybiBuZXcgVGVlKHQuaW5uZXJSYWRpdXMsdC5vdXRlclJhZGl1cyx0LnRoZXRhU2VnbWVudHMsdC5waGlTZWdtZW50cyx0LnRoZXRhU3RhcnQsdC50aGV0YUxlbmd0aCl9fWNsYXNzIENlZSBleHRlbmRzIE40dHtjb25zdHJ1Y3Rvcih0LGU9MTIpe3N1cGVyKCksdGhpcy50eXBlPSJTaGFwZUdlb21ldHJ5Iix0aGlzLnBhcmFtZXRlcnM9e3NoYXBlczp0LGN1cnZlU2VnbWVudHM6ZX07Y29uc3Qgbj1bXSxpPVtdLHI9W10sbz1bXTtsZXQgYT0wLHM9MDtpZighMT09PUFycmF5LmlzQXJyYXkodCkpbCh0KTtlbHNlIGZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKWwodFtlXSksdGhpcy5hZGRHcm91cChhLHMsZSksYSs9cyxzPTA7ZnVuY3Rpb24gbCh0KXtjb25zdCBhPWkubGVuZ3RoLzMsbD10LmV4dHJhY3RQb2ludHMoZSk7bGV0IGM9bC5zaGFwZTtjb25zdCB1PWwuaG9sZXM7ITE9PT1fZWUuaXNDbG9ja1dpc2UoYykmJihjPWMucmV2ZXJzZSgpKTtmb3IobGV0IHQ9MCxlPXUubGVuZ3RoO3Q8ZTt0Kyspe2NvbnN0IGU9dVt0XTshMD09PV9lZS5pc0Nsb2NrV2lzZShlKSYmKHVbdF09ZS5yZXZlcnNlKCkpfWNvbnN0IGg9X2VlLnRyaWFuZ3VsYXRlU2hhcGUoYyx1KTtmb3IobGV0IHQ9MCxlPXUubGVuZ3RoO3Q8ZTt0Kyspe2M9Yy5jb25jYXQodVt0XSl9Zm9yKGxldCB0PTAsZT1jLmxlbmd0aDt0PGU7dCsrKXtjb25zdCBlPWNbdF07aS5wdXNoKGUueCxlLnksMCksci5wdXNoKDAsMCwxKSxvLnB1c2goZS54LGUueSl9Zm9yKGxldCB0PTAsZT1oLmxlbmd0aDt0PGU7dCsrKXtjb25zdCBlPWhbdF07bi5wdXNoKGVbMF0rYSxlWzFdK2EsZVsyXSthKSxzKz0zfX10aGlzLnNldEluZGV4KG4pLHRoaXMuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IGI0dChpLDMpKSx0aGlzLnNldEF0dHJpYnV0ZSgibm9ybWFsIixuZXcgYjR0KHIsMykpLHRoaXMuc2V0QXR0cmlidXRlKCJ1diIsbmV3IGI0dChvLDIpKX10b0pTT04oKXtjb25zdCB0PXN1cGVyLnRvSlNPTigpO3JldHVybihmdW5jdGlvbiBlKHQsbil7aWYobi5zaGFwZXM9W10sQXJyYXkuaXNBcnJheSh0KSlmb3IobGV0IGU9MCxpPXQubGVuZ3RoO2U8aTtlKyspe24uc2hhcGVzLnB1c2godFtlXS51dWlkKX1lbHNlIG4uc2hhcGVzLnB1c2godC51dWlkKTtyZXR1cm4gbn0pKHRoaXMucGFyYW1ldGVycy5zaGFwZXMsdCl9c3RhdGljIGZyb21KU09OKHQsZSl7Y29uc3Qgbj1bXTtmb3IobGV0IGk9MCxyPXQuc2hhcGVzLmxlbmd0aDtpPHI7aSsrKXtuLnB1c2goZVt0LnNoYXBlc1tpXV0pfXJldHVybiBuZXcgQ2VlKG4sdC5jdXJ2ZVNlZ21lbnRzKX19Y2xhc3MgQWVlIGV4dGVuZHMgTjR0e2NvbnN0cnVjdG9yKHQ9MSxlPTMyLG49MTYsaT0wLHI9MipNYXRoLlBJLG89MCxhPU1hdGguUEkpe3N1cGVyKCksdGhpcy50eXBlPSJTcGhlcmVHZW9tZXRyeSIsdGhpcy5wYXJhbWV0ZXJzPXtyYWRpdXM6dCx3aWR0aFNlZ21lbnRzOmUsaGVpZ2h0U2VnbWVudHM6bixwaGlTdGFydDppLHBoaUxlbmd0aDpyLHRoZXRhU3RhcnQ6byx0aGV0YUxlbmd0aDphfSxlPU1hdGgubWF4KDMsTWF0aC5mbG9vcihlKSksbj1NYXRoLm1heCgyLE1hdGguZmxvb3IobikpO2NvbnN0IHM9TWF0aC5taW4obythLE1hdGguUEkpO2xldCBsPTA7Y29uc3QgYz1bXSx1PW5ldyBINXQsaD1uZXcgSDV0LGQ9W10scD1bXSxmPVtdLG09W107Zm9yKGxldCBkPTA7ZDw9bjtkKyspe2NvbnN0IGc9W10sXz1kL247bGV0IHk9MDswPT1kJiYwPT1vP3k9LjUvZTpkPT1uJiZzPT1NYXRoLlBJJiYoeT0tLjUvZSk7Zm9yKGxldCBuPTA7bjw9ZTtuKyspe2NvbnN0IHM9bi9lO3UueD0tdCpNYXRoLmNvcyhpK3MqcikqTWF0aC5zaW4obytfKmEpLHUueT10Kk1hdGguY29zKG8rXyphKSx1Lno9dCpNYXRoLnNpbihpK3MqcikqTWF0aC5zaW4obytfKmEpLHAucHVzaCh1LngsdS55LHUueiksaC5jb3B5KHUpLm5vcm1hbGl6ZSgpLGYucHVzaChoLngsaC55LGgueiksbS5wdXNoKHMreSwxLV8pLGcucHVzaChsKyspfWMucHVzaChnKX1mb3IobGV0IHQ9MDt0PG47dCsrKWZvcihsZXQgaT0wO2k8ZTtpKyspe2NvbnN0IGU9Y1t0XVtpKzFdLHI9Y1t0XVtpXSxhPWNbdCsxXVtpXSxsPWNbdCsxXVtpKzFdOygwIT09dHx8bz4wKSYmZC5wdXNoKGUscixsKSwodCE9PW4tMXx8czxNYXRoLlBJKSYmZC5wdXNoKHIsYSxsKX10aGlzLnNldEluZGV4KGQpLHRoaXMuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IGI0dChwLDMpKSx0aGlzLnNldEF0dHJpYnV0ZSgibm9ybWFsIixuZXcgYjR0KGYsMykpLHRoaXMuc2V0QXR0cmlidXRlKCJ1diIsbmV3IGI0dChtLDIpKX1zdGF0aWMgZnJvbUpTT04odCl7cmV0dXJuIG5ldyBBZWUodC5yYWRpdXMsdC53aWR0aFNlZ21lbnRzLHQuaGVpZ2h0U2VnbWVudHMsdC5waGlTdGFydCx0LnBoaUxlbmd0aCx0LnRoZXRhU3RhcnQsdC50aGV0YUxlbmd0aCl9fWNsYXNzIGtlZSBleHRlbmRzIHZ0ZXtjb25zdHJ1Y3Rvcih0PTEsZT0wKXtzdXBlcihbMSwxLDEsLTEsLTEsMSwtMSwxLC0xLDEsLTEsLTFdLFsyLDEsMCwwLDMsMiwxLDMsMCwyLDMsMV0sdCxlKSx0aGlzLnR5cGU9IlRldHJhaGVkcm9uR2VvbWV0cnkiLHRoaXMucGFyYW1ldGVycz17cmFkaXVzOnQsZGV0YWlsOmV9fXN0YXRpYyBmcm9tSlNPTih0KXtyZXR1cm4gbmV3IGtlZSh0LnJhZGl1cyx0LmRldGFpbCl9fWNsYXNzIExlZSBleHRlbmRzIGJlZXtjb25zdHJ1Y3Rvcih0LGU9e30pe2NvbnN0IG49ZS5mb250O2lmKCFufHwhbi5pc0ZvbnQpcmV0dXJuIGNvbnNvbGUuZXJyb3IoIlRIUkVFLlRleHRHZW9tZXRyeTogZm9udCBwYXJhbWV0ZXIgaXMgbm90IGFuIGluc3RhbmNlIG9mIFRIUkVFLkZvbnQuIiksbmV3IE40dDtjb25zdCBpPW4uZ2VuZXJhdGVTaGFwZXModCxlLnNpemUpO2UuZGVwdGg9dm9pZCAwIT09ZS5oZWlnaHQ/ZS5oZWlnaHQ6NTAsdm9pZCAwPT09ZS5iZXZlbFRoaWNrbmVzcyYmKGUuYmV2ZWxUaGlja25lc3M9MTApLHZvaWQgMD09PWUuYmV2ZWxTaXplJiYoZS5iZXZlbFNpemU9OCksdm9pZCAwPT09ZS5iZXZlbEVuYWJsZWQmJihlLmJldmVsRW5hYmxlZD0hMSksc3VwZXIoaSxlKSx0aGlzLnR5cGU9IlRleHRHZW9tZXRyeSJ9fWNsYXNzIFBlZSBleHRlbmRzIE40dHtjb25zdHJ1Y3Rvcih0PTEsZT0uNCxuPTgsaT02LHI9MipNYXRoLlBJKXtzdXBlcigpLHRoaXMudHlwZT0iVG9ydXNHZW9tZXRyeSIsdGhpcy5wYXJhbWV0ZXJzPXtyYWRpdXM6dCx0dWJlOmUscmFkaWFsU2VnbWVudHM6bix0dWJ1bGFyU2VnbWVudHM6aSxhcmM6cn0sbj1NYXRoLmZsb29yKG4pLGk9TWF0aC5mbG9vcihpKTtjb25zdCBvPVtdLGE9W10scz1bXSxsPVtdLGM9bmV3IEg1dCx1PW5ldyBINXQsaD1uZXcgSDV0O2ZvcihsZXQgbz0wO288PW47bysrKWZvcihsZXQgZD0wO2Q8PWk7ZCsrKXtjb25zdCBwPWQvaSpyLGY9by9uKk1hdGguUEkqMjt1Lng9KHQrZSpNYXRoLmNvcyhmKSkqTWF0aC5jb3MocCksdS55PSh0K2UqTWF0aC5jb3MoZikpKk1hdGguc2luKHApLHUuej1lKk1hdGguc2luKGYpLGEucHVzaCh1LngsdS55LHUueiksYy54PXQqTWF0aC5jb3MocCksYy55PXQqTWF0aC5zaW4ocCksaC5zdWJWZWN0b3JzKHUsYykubm9ybWFsaXplKCkscy5wdXNoKGgueCxoLnksaC56KSxsLnB1c2goZC9pKSxsLnB1c2goby9uKX1mb3IobGV0IHQ9MTt0PD1uO3QrKylmb3IobGV0IGU9MTtlPD1pO2UrKyl7Y29uc3Qgbj0oaSsxKSoodC0xKStlLTEscj0oaSsxKSoodC0xKStlLGE9KGkrMSkqdCtlO28ucHVzaCgoaSsxKSp0K2UtMSxuLGEpLG8ucHVzaChuLHIsYSl9dGhpcy5zZXRJbmRleChvKSx0aGlzLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBiNHQoYSwzKSksdGhpcy5zZXRBdHRyaWJ1dGUoIm5vcm1hbCIsbmV3IGI0dChzLDMpKSx0aGlzLnNldEF0dHJpYnV0ZSgidXYiLG5ldyBiNHQobCwyKSl9c3RhdGljIGZyb21KU09OKHQpe3JldHVybiBuZXcgUGVlKHQucmFkaXVzLHQudHViZSx0LnJhZGlhbFNlZ21lbnRzLHQudHVidWxhclNlZ21lbnRzLHQuYXJjKX19Y2xhc3MgTmVlIGV4dGVuZHMgTjR0e2NvbnN0cnVjdG9yKHQ9MSxlPS40LG49NjQsaT04LHI9MixvPTMpe3N1cGVyKCksdGhpcy50eXBlPSJUb3J1c0tub3RHZW9tZXRyeSIsdGhpcy5wYXJhbWV0ZXJzPXtyYWRpdXM6dCx0dWJlOmUsdHVidWxhclNlZ21lbnRzOm4scmFkaWFsU2VnbWVudHM6aSxwOnIscTpvfSxuPU1hdGguZmxvb3IobiksaT1NYXRoLmZsb29yKGkpO2NvbnN0IGE9W10scz1bXSxsPVtdLGM9W10sdT1uZXcgSDV0LGg9bmV3IEg1dCxkPW5ldyBINXQscD1uZXcgSDV0LGY9bmV3IEg1dCxtPW5ldyBINXQsZz1uZXcgSDV0O2ZvcihsZXQgYT0wO2E8PW47KythKXtjb25zdCB5PWEvbipyKk1hdGguUEkqMjtfKHkscixvLHQsZCksXyh5Ky4wMSxyLG8sdCxwKSxtLnN1YlZlY3RvcnMocCxkKSxnLmFkZFZlY3RvcnMocCxkKSxmLmNyb3NzVmVjdG9ycyhtLGcpLGcuY3Jvc3NWZWN0b3JzKGYsbSksZi5ub3JtYWxpemUoKSxnLm5vcm1hbGl6ZSgpO2ZvcihsZXQgdD0wO3Q8PWk7Kyt0KXtjb25zdCByPXQvaSpNYXRoLlBJKjIsbz0tZSpNYXRoLmNvcyhyKSxwPWUqTWF0aC5zaW4ocik7dS54PWQueCsobypnLngrcCpmLngpLHUueT1kLnkrKG8qZy55K3AqZi55KSx1Lno9ZC56KyhvKmcueitwKmYueikscy5wdXNoKHUueCx1LnksdS56KSxoLnN1YlZlY3RvcnModSxkKS5ub3JtYWxpemUoKSxsLnB1c2goaC54LGgueSxoLnopLGMucHVzaChhL24pLGMucHVzaCh0L2kpfX1mb3IobGV0IHQ9MTt0PD1uO3QrKylmb3IobGV0IGU9MTtlPD1pO2UrKyl7Y29uc3Qgbj0oaSsxKSp0KyhlLTEpLHI9KGkrMSkqdCtlLG89KGkrMSkqKHQtMSkrZTthLnB1c2goKGkrMSkqKHQtMSkrKGUtMSksbixvKSxhLnB1c2gobixyLG8pfWZ1bmN0aW9uIF8odCxlLG4saSxyKXtjb25zdCBvPU1hdGguY29zKHQpLGE9TWF0aC5zaW4odCkscz1uL2UqdCxsPU1hdGguY29zKHMpO3IueD1pKigyK2wpKi41Km8sci55PWkqKDIrbCkqYSouNSxyLno9aSpNYXRoLnNpbihzKSouNX10aGlzLnNldEluZGV4KGEpLHRoaXMuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IGI0dChzLDMpKSx0aGlzLnNldEF0dHJpYnV0ZSgibm9ybWFsIixuZXcgYjR0KGwsMykpLHRoaXMuc2V0QXR0cmlidXRlKCJ1diIsbmV3IGI0dChjLDIpKX1zdGF0aWMgZnJvbUpTT04odCl7cmV0dXJuIG5ldyBOZWUodC5yYWRpdXMsdC50dWJlLHQudHVidWxhclNlZ21lbnRzLHQucmFkaWFsU2VnbWVudHMsdC5wLHQucSl9fWNsYXNzIEllZSBleHRlbmRzIE40dHtjb25zdHJ1Y3Rvcih0LGU9NjQsbj0xLGk9OCxyPSExKXtzdXBlcigpLHRoaXMudHlwZT0iVHViZUdlb21ldHJ5Iix0aGlzLnBhcmFtZXRlcnM9e3BhdGg6dCx0dWJ1bGFyU2VnbWVudHM6ZSxyYWRpdXM6bixyYWRpYWxTZWdtZW50czppLGNsb3NlZDpyfTtjb25zdCBvPXQuY29tcHV0ZUZyZW5ldEZyYW1lcyhlLHIpO3RoaXMudGFuZ2VudHM9by50YW5nZW50cyx0aGlzLm5vcm1hbHM9by5ub3JtYWxzLHRoaXMuYmlub3JtYWxzPW8uYmlub3JtYWxzO2NvbnN0IGE9bmV3IEg1dCxzPW5ldyBINXQsbD1uZXcgQzV0O2xldCBjPW5ldyBINXQ7Y29uc3QgdT1bXSxoPVtdLGQ9W10scD1bXTtmdW5jdGlvbiBmKHIpe2M9dC5nZXRQb2ludEF0KHIvZSxjKTtjb25zdCBsPW8ubm9ybWFsc1tyXSxkPW8uYmlub3JtYWxzW3JdO2ZvcihsZXQgdD0wO3Q8PWk7dCsrKXtjb25zdCBlPXQvaSpNYXRoLlBJKjIscj1NYXRoLnNpbihlKSxvPS1NYXRoLmNvcyhlKTtzLng9bypsLngrcipkLngscy55PW8qbC55K3IqZC55LHMuej1vKmwueityKmQueixzLm5vcm1hbGl6ZSgpLGgucHVzaChzLngscy55LHMueiksYS54PWMueCtuKnMueCxhLnk9Yy55K24qcy55LGEuej1jLnorbipzLnosdS5wdXNoKGEueCxhLnksYS56KX19IShmdW5jdGlvbiBtKCl7Zm9yKGxldCB0PTA7dDxlO3QrKylmKHQpO2YoITE9PT1yP2U6MCksKGZ1bmN0aW9uIHQoKXtmb3IobGV0IHQ9MDt0PD1lO3QrKylmb3IobGV0IG49MDtuPD1pO24rKylsLng9dC9lLGwueT1uL2ksZC5wdXNoKGwueCxsLnkpfSkoKSwoZnVuY3Rpb24gbigpe2ZvcihsZXQgdD0xO3Q8PWU7dCsrKWZvcihsZXQgZT0xO2U8PWk7ZSsrKXtjb25zdCBuPShpKzEpKnQrKGUtMSkscj0oaSsxKSp0K2Usbz0oaSsxKSoodC0xKStlO3AucHVzaCgoaSsxKSoodC0xKSsoZS0xKSxuLG8pLHAucHVzaChuLHIsbyl9fSkoKX0pKCksdGhpcy5zZXRJbmRleChwKSx0aGlzLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBiNHQodSwzKSksdGhpcy5zZXRBdHRyaWJ1dGUoIm5vcm1hbCIsbmV3IGI0dChoLDMpKSx0aGlzLnNldEF0dHJpYnV0ZSgidXYiLG5ldyBiNHQoZCwyKSl9dG9KU09OKCl7Y29uc3QgdD1zdXBlci50b0pTT04oKTtyZXR1cm4gdC5wYXRoPXRoaXMucGFyYW1ldGVycy5wYXRoLnRvSlNPTigpLHR9c3RhdGljIGZyb21KU09OKHQpe3JldHVybiBuZXcgSWVlKChuZXcgV3RlW3QucGF0aC50eXBlXSkuZnJvbUpTT04odC5wYXRoKSx0LnR1YnVsYXJTZWdtZW50cyx0LnJhZGl1cyx0LnJhZGlhbFNlZ21lbnRzLHQuY2xvc2VkKX19Y2xhc3MgUmVlIGV4dGVuZHMgTjR0e2NvbnN0cnVjdG9yKHQpe2lmKHN1cGVyKCksdGhpcy50eXBlPSJXaXJlZnJhbWVHZW9tZXRyeSIsITA9PT10LmlzR2VvbWV0cnkpcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcigiVEhSRUUuV2lyZWZyYW1lR2VvbWV0cnkgbm8gbG9uZ2VyIHN1cHBvcnRzIFRIUkVFLkdlb21ldHJ5LiBVc2UgVEhSRUUuQnVmZmVyR2VvbWV0cnkgaW5zdGVhZC4iKTtjb25zdCBlPVtdLG49bmV3IFNldCxpPW5ldyBINXQscj1uZXcgSDV0O2lmKG51bGwhPT10LmluZGV4KXtjb25zdCBvPXQuYXR0cmlidXRlcy5wb3NpdGlvbixhPXQuaW5kZXg7bGV0IHM9dC5ncm91cHM7MD09PXMubGVuZ3RoJiYocz1be3N0YXJ0OjAsY291bnQ6YS5jb3VudCxtYXRlcmlhbEluZGV4OjB9XSk7Zm9yKGxldCB0PTAsbD1zLmxlbmd0aDt0PGw7Kyt0KXtjb25zdCBsPXNbdF0sYz1sLnN0YXJ0O2ZvcihsZXQgdD1jLHM9YytsLmNvdW50O3Q8czt0Kz0zKWZvcihsZXQgcz0wO3M8MztzKyspe2NvbnN0IGw9YS5nZXRYKHQrcyksYz1hLmdldFgodCsocysxKSUzKTtpLmZyb21CdWZmZXJBdHRyaWJ1dGUobyxsKSxyLmZyb21CdWZmZXJBdHRyaWJ1dGUobyxjKSwhMD09PU9lZShpLHIsbikmJihlLnB1c2goaS54LGkueSxpLnopLGUucHVzaChyLngsci55LHIueikpfX19ZWxzZXtjb25zdCBvPXQuYXR0cmlidXRlcy5wb3NpdGlvbjtmb3IobGV0IHQ9MCxhPW8uY291bnQvMzt0PGE7dCsrKWZvcihsZXQgYT0wO2E8MzthKyspe2NvbnN0IHM9Myp0KyhhKzEpJTM7aS5mcm9tQnVmZmVyQXR0cmlidXRlKG8sMyp0K2EpLHIuZnJvbUJ1ZmZlckF0dHJpYnV0ZShvLHMpLCEwPT09T2VlKGkscixuKSYmKGUucHVzaChpLngsaS55LGkueiksZS5wdXNoKHIueCxyLnksci56KSl9fXRoaXMuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IGI0dChlLDMpKX19ZnVuY3Rpb24gT2VlKHQsZSxuKXtjb25zdCBpPWAke3QueH0sJHt0Lnl9LCR7dC56fS0ke2UueH0sJHtlLnl9LCR7ZS56fWAscj1gJHtlLnh9LCR7ZS55fSwke2Uuen0tJHt0Lnh9LCR7dC55fSwke3Quen1gO3JldHVybiEwIT09bi5oYXMoaSkmJiEwIT09bi5oYXMocikmJihuLmFkZChpLHIpLCEwKX12YXIgemVlPU9iamVjdC5mcmVlemUoe19fcHJvdG9fXzpudWxsLEJveEdlb21ldHJ5Oko0dCxCb3hCdWZmZXJHZW9tZXRyeTpKNHQsQ2lyY2xlR2VvbWV0cnk6Z3RlLENpcmNsZUJ1ZmZlckdlb21ldHJ5Omd0ZSxDb25lR2VvbWV0cnk6eXRlLENvbmVCdWZmZXJHZW9tZXRyeTp5dGUsQ3lsaW5kZXJHZW9tZXRyeTpfdGUsQ3lsaW5kZXJCdWZmZXJHZW9tZXRyeTpfdGUsRG9kZWNhaGVkcm9uR2VvbWV0cnk6YnRlLERvZGVjYWhlZHJvbkJ1ZmZlckdlb21ldHJ5OmJ0ZSxFZGdlc0dlb21ldHJ5OkV0ZSxFeHRydWRlR2VvbWV0cnk6YmVlLEV4dHJ1ZGVCdWZmZXJHZW9tZXRyeTpiZWUsSWNvc2FoZWRyb25HZW9tZXRyeTp3ZWUsSWNvc2FoZWRyb25CdWZmZXJHZW9tZXRyeTp3ZWUsTGF0aGVHZW9tZXRyeTpTZWUsTGF0aGVCdWZmZXJHZW9tZXRyeTpTZWUsT2N0YWhlZHJvbkdlb21ldHJ5Ok1lZSxPY3RhaGVkcm9uQnVmZmVyR2VvbWV0cnk6TWVlLFBhcmFtZXRyaWNHZW9tZXRyeTpFZWUsUGFyYW1ldHJpY0J1ZmZlckdlb21ldHJ5OkVlZSxQbGFuZUdlb21ldHJ5Onk2dCxQbGFuZUJ1ZmZlckdlb21ldHJ5Onk2dCxQb2x5aGVkcm9uR2VvbWV0cnk6dnRlLFBvbHloZWRyb25CdWZmZXJHZW9tZXRyeTp2dGUsUmluZ0dlb21ldHJ5OlRlZSxSaW5nQnVmZmVyR2VvbWV0cnk6VGVlLFNoYXBlR2VvbWV0cnk6Q2VlLFNoYXBlQnVmZmVyR2VvbWV0cnk6Q2VlLFNwaGVyZUdlb21ldHJ5OkFlZSxTcGhlcmVCdWZmZXJHZW9tZXRyeTpBZWUsVGV0cmFoZWRyb25HZW9tZXRyeTprZWUsVGV0cmFoZWRyb25CdWZmZXJHZW9tZXRyeTprZWUsVGV4dEdlb21ldHJ5OkxlZSxUZXh0QnVmZmVyR2VvbWV0cnk6TGVlLFRvcnVzR2VvbWV0cnk6UGVlLFRvcnVzQnVmZmVyR2VvbWV0cnk6UGVlLFRvcnVzS25vdEdlb21ldHJ5Ok5lZSxUb3J1c0tub3RCdWZmZXJHZW9tZXRyeTpOZWUsVHViZUdlb21ldHJ5OkllZSxUdWJlQnVmZmVyR2VvbWV0cnk6SWVlLFdpcmVmcmFtZUdlb21ldHJ5OlJlZX0pO2NsYXNzIERlZSBleHRlbmRzIHQ0dHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMudHlwZT0iU2hhZG93TWF0ZXJpYWwiLHRoaXMuY29sb3I9bmV3IHM0dCgwKSx0aGlzLnRyYW5zcGFyZW50PSEwLHRoaXMuc2V0VmFsdWVzKHQpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5jb2xvci5jb3B5KHQuY29sb3IpLHRoaXN9fURlZS5wcm90b3R5cGUuaXNTaGFkb3dNYXRlcmlhbD0hMDtjbGFzcyBCZWUgZXh0ZW5kcyB0NHR7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLmRlZmluZXM9e1NUQU5EQVJEOiIifSx0aGlzLnR5cGU9Ik1lc2hTdGFuZGFyZE1hdGVyaWFsIix0aGlzLmNvbG9yPW5ldyBzNHQoMTY3NzcyMTUpLHRoaXMucm91Z2huZXNzPTEsdGhpcy5tZXRhbG5lc3M9MCx0aGlzLm1hcD1udWxsLHRoaXMubGlnaHRNYXA9bnVsbCx0aGlzLmxpZ2h0TWFwSW50ZW5zaXR5PTEsdGhpcy5hb01hcD1udWxsLHRoaXMuYW9NYXBJbnRlbnNpdHk9MSx0aGlzLmVtaXNzaXZlPW5ldyBzNHQoMCksdGhpcy5lbWlzc2l2ZUludGVuc2l0eT0xLHRoaXMuZW1pc3NpdmVNYXA9bnVsbCx0aGlzLmJ1bXBNYXA9bnVsbCx0aGlzLmJ1bXBTY2FsZT0xLHRoaXMubm9ybWFsTWFwPW51bGwsdGhpcy5ub3JtYWxNYXBUeXBlPTAsdGhpcy5ub3JtYWxTY2FsZT1uZXcgQzV0KDEsMSksdGhpcy5kaXNwbGFjZW1lbnRNYXA9bnVsbCx0aGlzLmRpc3BsYWNlbWVudFNjYWxlPTEsdGhpcy5kaXNwbGFjZW1lbnRCaWFzPTAsdGhpcy5yb3VnaG5lc3NNYXA9bnVsbCx0aGlzLm1ldGFsbmVzc01hcD1udWxsLHRoaXMuYWxwaGFNYXA9bnVsbCx0aGlzLmVudk1hcD1udWxsLHRoaXMuZW52TWFwSW50ZW5zaXR5PTEsdGhpcy5yZWZyYWN0aW9uUmF0aW89Ljk4LHRoaXMud2lyZWZyYW1lPSExLHRoaXMud2lyZWZyYW1lTGluZXdpZHRoPTEsdGhpcy53aXJlZnJhbWVMaW5lY2FwPSJyb3VuZCIsdGhpcy53aXJlZnJhbWVMaW5lam9pbj0icm91bmQiLHRoaXMuZmxhdFNoYWRpbmc9ITEsdGhpcy5zZXRWYWx1ZXModCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmRlZmluZXM9e1NUQU5EQVJEOiIifSx0aGlzLmNvbG9yLmNvcHkodC5jb2xvciksdGhpcy5yb3VnaG5lc3M9dC5yb3VnaG5lc3MsdGhpcy5tZXRhbG5lc3M9dC5tZXRhbG5lc3MsdGhpcy5tYXA9dC5tYXAsdGhpcy5saWdodE1hcD10LmxpZ2h0TWFwLHRoaXMubGlnaHRNYXBJbnRlbnNpdHk9dC5saWdodE1hcEludGVuc2l0eSx0aGlzLmFvTWFwPXQuYW9NYXAsdGhpcy5hb01hcEludGVuc2l0eT10LmFvTWFwSW50ZW5zaXR5LHRoaXMuZW1pc3NpdmUuY29weSh0LmVtaXNzaXZlKSx0aGlzLmVtaXNzaXZlTWFwPXQuZW1pc3NpdmVNYXAsdGhpcy5lbWlzc2l2ZUludGVuc2l0eT10LmVtaXNzaXZlSW50ZW5zaXR5LHRoaXMuYnVtcE1hcD10LmJ1bXBNYXAsdGhpcy5idW1wU2NhbGU9dC5idW1wU2NhbGUsdGhpcy5ub3JtYWxNYXA9dC5ub3JtYWxNYXAsdGhpcy5ub3JtYWxNYXBUeXBlPXQubm9ybWFsTWFwVHlwZSx0aGlzLm5vcm1hbFNjYWxlLmNvcHkodC5ub3JtYWxTY2FsZSksdGhpcy5kaXNwbGFjZW1lbnRNYXA9dC5kaXNwbGFjZW1lbnRNYXAsdGhpcy5kaXNwbGFjZW1lbnRTY2FsZT10LmRpc3BsYWNlbWVudFNjYWxlLHRoaXMuZGlzcGxhY2VtZW50Qmlhcz10LmRpc3BsYWNlbWVudEJpYXMsdGhpcy5yb3VnaG5lc3NNYXA9dC5yb3VnaG5lc3NNYXAsdGhpcy5tZXRhbG5lc3NNYXA9dC5tZXRhbG5lc3NNYXAsdGhpcy5hbHBoYU1hcD10LmFscGhhTWFwLHRoaXMuZW52TWFwPXQuZW52TWFwLHRoaXMuZW52TWFwSW50ZW5zaXR5PXQuZW52TWFwSW50ZW5zaXR5LHRoaXMucmVmcmFjdGlvblJhdGlvPXQucmVmcmFjdGlvblJhdGlvLHRoaXMud2lyZWZyYW1lPXQud2lyZWZyYW1lLHRoaXMud2lyZWZyYW1lTGluZXdpZHRoPXQud2lyZWZyYW1lTGluZXdpZHRoLHRoaXMud2lyZWZyYW1lTGluZWNhcD10LndpcmVmcmFtZUxpbmVjYXAsdGhpcy53aXJlZnJhbWVMaW5lam9pbj10LndpcmVmcmFtZUxpbmVqb2luLHRoaXMuZmxhdFNoYWRpbmc9dC5mbGF0U2hhZGluZyx0aGlzfX1CZWUucHJvdG90eXBlLmlzTWVzaFN0YW5kYXJkTWF0ZXJpYWw9ITA7Y2xhc3MgSGVlIGV4dGVuZHMgQmVle2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy5kZWZpbmVzPXtTVEFOREFSRDoiIixQSFlTSUNBTDoiIn0sdGhpcy50eXBlPSJNZXNoUGh5c2ljYWxNYXRlcmlhbCIsdGhpcy5jbGVhcmNvYXQ9MCx0aGlzLmNsZWFyY29hdE1hcD1udWxsLHRoaXMuY2xlYXJjb2F0Um91Z2huZXNzPTAsdGhpcy5jbGVhcmNvYXRSb3VnaG5lc3NNYXA9bnVsbCx0aGlzLmNsZWFyY29hdE5vcm1hbFNjYWxlPW5ldyBDNXQoMSwxKSx0aGlzLmNsZWFyY29hdE5vcm1hbE1hcD1udWxsLHRoaXMucmVmbGVjdGl2aXR5PS41LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJpb3IiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4oMSsuNCp0aGlzLnJlZmxlY3Rpdml0eSkvKDEtLjQqdGhpcy5yZWZsZWN0aXZpdHkpfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5yZWZsZWN0aXZpdHk9czV0KDIuNSoodC0xKS8odCsxKSwwLDEpfX0pLHRoaXMuc2hlZW49bnVsbCx0aGlzLnRyYW5zbWlzc2lvbj0wLHRoaXMudHJhbnNtaXNzaW9uTWFwPW51bGwsdGhpcy50aGlja25lc3M9LjAxLHRoaXMudGhpY2tuZXNzTWFwPW51bGwsdGhpcy5hdHRlbnVhdGlvbkRpc3RhbmNlPTAsdGhpcy5hdHRlbnVhdGlvblRpbnQ9bmV3IHM0dCgxLDEsMSksdGhpcy5zcGVjdWxhckludGVuc2l0eT0xLHRoaXMuc3BlY3VsYXJJbnRlbnNpdHlNYXA9bnVsbCx0aGlzLnNwZWN1bGFyVGludD1uZXcgczR0KDEsMSwxKSx0aGlzLnNwZWN1bGFyVGludE1hcD1udWxsLHRoaXMuc2V0VmFsdWVzKHQpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5kZWZpbmVzPXtTVEFOREFSRDoiIixQSFlTSUNBTDoiIn0sdGhpcy5jbGVhcmNvYXQ9dC5jbGVhcmNvYXQsdGhpcy5jbGVhcmNvYXRNYXA9dC5jbGVhcmNvYXRNYXAsdGhpcy5jbGVhcmNvYXRSb3VnaG5lc3M9dC5jbGVhcmNvYXRSb3VnaG5lc3MsdGhpcy5jbGVhcmNvYXRSb3VnaG5lc3NNYXA9dC5jbGVhcmNvYXRSb3VnaG5lc3NNYXAsdGhpcy5jbGVhcmNvYXROb3JtYWxNYXA9dC5jbGVhcmNvYXROb3JtYWxNYXAsdGhpcy5jbGVhcmNvYXROb3JtYWxTY2FsZS5jb3B5KHQuY2xlYXJjb2F0Tm9ybWFsU2NhbGUpLHRoaXMucmVmbGVjdGl2aXR5PXQucmVmbGVjdGl2aXR5LHRoaXMuc2hlZW49dC5zaGVlbj8odGhpcy5zaGVlbnx8bmV3IHM0dCkuY29weSh0LnNoZWVuKTpudWxsLHRoaXMudHJhbnNtaXNzaW9uPXQudHJhbnNtaXNzaW9uLHRoaXMudHJhbnNtaXNzaW9uTWFwPXQudHJhbnNtaXNzaW9uTWFwLHRoaXMudGhpY2tuZXNzPXQudGhpY2tuZXNzLHRoaXMudGhpY2tuZXNzTWFwPXQudGhpY2tuZXNzTWFwLHRoaXMuYXR0ZW51YXRpb25EaXN0YW5jZT10LmF0dGVudWF0aW9uRGlzdGFuY2UsdGhpcy5hdHRlbnVhdGlvblRpbnQuY29weSh0LmF0dGVudWF0aW9uVGludCksdGhpcy5zcGVjdWxhckludGVuc2l0eT10LnNwZWN1bGFySW50ZW5zaXR5LHRoaXMuc3BlY3VsYXJJbnRlbnNpdHlNYXA9dC5zcGVjdWxhckludGVuc2l0eU1hcCx0aGlzLnNwZWN1bGFyVGludC5jb3B5KHQuc3BlY3VsYXJUaW50KSx0aGlzLnNwZWN1bGFyVGludE1hcD10LnNwZWN1bGFyVGludE1hcCx0aGlzfX1IZWUucHJvdG90eXBlLmlzTWVzaFBoeXNpY2FsTWF0ZXJpYWw9ITA7Y2xhc3MgRmVlIGV4dGVuZHMgdDR0e2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy50eXBlPSJNZXNoUGhvbmdNYXRlcmlhbCIsdGhpcy5jb2xvcj1uZXcgczR0KDE2Nzc3MjE1KSx0aGlzLnNwZWN1bGFyPW5ldyBzNHQoMTExODQ4MSksdGhpcy5zaGluaW5lc3M9MzAsdGhpcy5tYXA9bnVsbCx0aGlzLmxpZ2h0TWFwPW51bGwsdGhpcy5saWdodE1hcEludGVuc2l0eT0xLHRoaXMuYW9NYXA9bnVsbCx0aGlzLmFvTWFwSW50ZW5zaXR5PTEsdGhpcy5lbWlzc2l2ZT1uZXcgczR0KDApLHRoaXMuZW1pc3NpdmVJbnRlbnNpdHk9MSx0aGlzLmVtaXNzaXZlTWFwPW51bGwsdGhpcy5idW1wTWFwPW51bGwsdGhpcy5idW1wU2NhbGU9MSx0aGlzLm5vcm1hbE1hcD1udWxsLHRoaXMubm9ybWFsTWFwVHlwZT0wLHRoaXMubm9ybWFsU2NhbGU9bmV3IEM1dCgxLDEpLHRoaXMuZGlzcGxhY2VtZW50TWFwPW51bGwsdGhpcy5kaXNwbGFjZW1lbnRTY2FsZT0xLHRoaXMuZGlzcGxhY2VtZW50Qmlhcz0wLHRoaXMuc3BlY3VsYXJNYXA9bnVsbCx0aGlzLmFscGhhTWFwPW51bGwsdGhpcy5lbnZNYXA9bnVsbCx0aGlzLmNvbWJpbmU9MCx0aGlzLnJlZmxlY3Rpdml0eT0xLHRoaXMucmVmcmFjdGlvblJhdGlvPS45OCx0aGlzLndpcmVmcmFtZT0hMSx0aGlzLndpcmVmcmFtZUxpbmV3aWR0aD0xLHRoaXMud2lyZWZyYW1lTGluZWNhcD0icm91bmQiLHRoaXMud2lyZWZyYW1lTGluZWpvaW49InJvdW5kIix0aGlzLmZsYXRTaGFkaW5nPSExLHRoaXMuc2V0VmFsdWVzKHQpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5jb2xvci5jb3B5KHQuY29sb3IpLHRoaXMuc3BlY3VsYXIuY29weSh0LnNwZWN1bGFyKSx0aGlzLnNoaW5pbmVzcz10LnNoaW5pbmVzcyx0aGlzLm1hcD10Lm1hcCx0aGlzLmxpZ2h0TWFwPXQubGlnaHRNYXAsdGhpcy5saWdodE1hcEludGVuc2l0eT10LmxpZ2h0TWFwSW50ZW5zaXR5LHRoaXMuYW9NYXA9dC5hb01hcCx0aGlzLmFvTWFwSW50ZW5zaXR5PXQuYW9NYXBJbnRlbnNpdHksdGhpcy5lbWlzc2l2ZS5jb3B5KHQuZW1pc3NpdmUpLHRoaXMuZW1pc3NpdmVNYXA9dC5lbWlzc2l2ZU1hcCx0aGlzLmVtaXNzaXZlSW50ZW5zaXR5PXQuZW1pc3NpdmVJbnRlbnNpdHksdGhpcy5idW1wTWFwPXQuYnVtcE1hcCx0aGlzLmJ1bXBTY2FsZT10LmJ1bXBTY2FsZSx0aGlzLm5vcm1hbE1hcD10Lm5vcm1hbE1hcCx0aGlzLm5vcm1hbE1hcFR5cGU9dC5ub3JtYWxNYXBUeXBlLHRoaXMubm9ybWFsU2NhbGUuY29weSh0Lm5vcm1hbFNjYWxlKSx0aGlzLmRpc3BsYWNlbWVudE1hcD10LmRpc3BsYWNlbWVudE1hcCx0aGlzLmRpc3BsYWNlbWVudFNjYWxlPXQuZGlzcGxhY2VtZW50U2NhbGUsdGhpcy5kaXNwbGFjZW1lbnRCaWFzPXQuZGlzcGxhY2VtZW50Qmlhcyx0aGlzLnNwZWN1bGFyTWFwPXQuc3BlY3VsYXJNYXAsdGhpcy5hbHBoYU1hcD10LmFscGhhTWFwLHRoaXMuZW52TWFwPXQuZW52TWFwLHRoaXMuY29tYmluZT10LmNvbWJpbmUsdGhpcy5yZWZsZWN0aXZpdHk9dC5yZWZsZWN0aXZpdHksdGhpcy5yZWZyYWN0aW9uUmF0aW89dC5yZWZyYWN0aW9uUmF0aW8sdGhpcy53aXJlZnJhbWU9dC53aXJlZnJhbWUsdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9dC53aXJlZnJhbWVMaW5ld2lkdGgsdGhpcy53aXJlZnJhbWVMaW5lY2FwPXQud2lyZWZyYW1lTGluZWNhcCx0aGlzLndpcmVmcmFtZUxpbmVqb2luPXQud2lyZWZyYW1lTGluZWpvaW4sdGhpcy5mbGF0U2hhZGluZz10LmZsYXRTaGFkaW5nLHRoaXN9fUZlZS5wcm90b3R5cGUuaXNNZXNoUGhvbmdNYXRlcmlhbD0hMDtjbGFzcyBWZWUgZXh0ZW5kcyB0NHR7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLmRlZmluZXM9e1RPT046IiJ9LHRoaXMudHlwZT0iTWVzaFRvb25NYXRlcmlhbCIsdGhpcy5jb2xvcj1uZXcgczR0KDE2Nzc3MjE1KSx0aGlzLm1hcD1udWxsLHRoaXMuZ3JhZGllbnRNYXA9bnVsbCx0aGlzLmxpZ2h0TWFwPW51bGwsdGhpcy5saWdodE1hcEludGVuc2l0eT0xLHRoaXMuYW9NYXA9bnVsbCx0aGlzLmFvTWFwSW50ZW5zaXR5PTEsdGhpcy5lbWlzc2l2ZT1uZXcgczR0KDApLHRoaXMuZW1pc3NpdmVJbnRlbnNpdHk9MSx0aGlzLmVtaXNzaXZlTWFwPW51bGwsdGhpcy5idW1wTWFwPW51bGwsdGhpcy5idW1wU2NhbGU9MSx0aGlzLm5vcm1hbE1hcD1udWxsLHRoaXMubm9ybWFsTWFwVHlwZT0wLHRoaXMubm9ybWFsU2NhbGU9bmV3IEM1dCgxLDEpLHRoaXMuZGlzcGxhY2VtZW50TWFwPW51bGwsdGhpcy5kaXNwbGFjZW1lbnRTY2FsZT0xLHRoaXMuZGlzcGxhY2VtZW50Qmlhcz0wLHRoaXMuYWxwaGFNYXA9bnVsbCx0aGlzLndpcmVmcmFtZT0hMSx0aGlzLndpcmVmcmFtZUxpbmV3aWR0aD0xLHRoaXMud2lyZWZyYW1lTGluZWNhcD0icm91bmQiLHRoaXMud2lyZWZyYW1lTGluZWpvaW49InJvdW5kIix0aGlzLnNldFZhbHVlcyh0KX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMuY29sb3IuY29weSh0LmNvbG9yKSx0aGlzLm1hcD10Lm1hcCx0aGlzLmdyYWRpZW50TWFwPXQuZ3JhZGllbnRNYXAsdGhpcy5saWdodE1hcD10LmxpZ2h0TWFwLHRoaXMubGlnaHRNYXBJbnRlbnNpdHk9dC5saWdodE1hcEludGVuc2l0eSx0aGlzLmFvTWFwPXQuYW9NYXAsdGhpcy5hb01hcEludGVuc2l0eT10LmFvTWFwSW50ZW5zaXR5LHRoaXMuZW1pc3NpdmUuY29weSh0LmVtaXNzaXZlKSx0aGlzLmVtaXNzaXZlTWFwPXQuZW1pc3NpdmVNYXAsdGhpcy5lbWlzc2l2ZUludGVuc2l0eT10LmVtaXNzaXZlSW50ZW5zaXR5LHRoaXMuYnVtcE1hcD10LmJ1bXBNYXAsdGhpcy5idW1wU2NhbGU9dC5idW1wU2NhbGUsdGhpcy5ub3JtYWxNYXA9dC5ub3JtYWxNYXAsdGhpcy5ub3JtYWxNYXBUeXBlPXQubm9ybWFsTWFwVHlwZSx0aGlzLm5vcm1hbFNjYWxlLmNvcHkodC5ub3JtYWxTY2FsZSksdGhpcy5kaXNwbGFjZW1lbnRNYXA9dC5kaXNwbGFjZW1lbnRNYXAsdGhpcy5kaXNwbGFjZW1lbnRTY2FsZT10LmRpc3BsYWNlbWVudFNjYWxlLHRoaXMuZGlzcGxhY2VtZW50Qmlhcz10LmRpc3BsYWNlbWVudEJpYXMsdGhpcy5hbHBoYU1hcD10LmFscGhhTWFwLHRoaXMud2lyZWZyYW1lPXQud2lyZWZyYW1lLHRoaXMud2lyZWZyYW1lTGluZXdpZHRoPXQud2lyZWZyYW1lTGluZXdpZHRoLHRoaXMud2lyZWZyYW1lTGluZWNhcD10LndpcmVmcmFtZUxpbmVjYXAsdGhpcy53aXJlZnJhbWVMaW5lam9pbj10LndpcmVmcmFtZUxpbmVqb2luLHRoaXN9fVZlZS5wcm90b3R5cGUuaXNNZXNoVG9vbk1hdGVyaWFsPSEwO2NsYXNzIFVlZSBleHRlbmRzIHQ0dHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMudHlwZT0iTWVzaE5vcm1hbE1hdGVyaWFsIix0aGlzLmJ1bXBNYXA9bnVsbCx0aGlzLmJ1bXBTY2FsZT0xLHRoaXMubm9ybWFsTWFwPW51bGwsdGhpcy5ub3JtYWxNYXBUeXBlPTAsdGhpcy5ub3JtYWxTY2FsZT1uZXcgQzV0KDEsMSksdGhpcy5kaXNwbGFjZW1lbnRNYXA9bnVsbCx0aGlzLmRpc3BsYWNlbWVudFNjYWxlPTEsdGhpcy5kaXNwbGFjZW1lbnRCaWFzPTAsdGhpcy53aXJlZnJhbWU9ITEsdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9MSx0aGlzLmZvZz0hMSx0aGlzLmZsYXRTaGFkaW5nPSExLHRoaXMuc2V0VmFsdWVzKHQpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5idW1wTWFwPXQuYnVtcE1hcCx0aGlzLmJ1bXBTY2FsZT10LmJ1bXBTY2FsZSx0aGlzLm5vcm1hbE1hcD10Lm5vcm1hbE1hcCx0aGlzLm5vcm1hbE1hcFR5cGU9dC5ub3JtYWxNYXBUeXBlLHRoaXMubm9ybWFsU2NhbGUuY29weSh0Lm5vcm1hbFNjYWxlKSx0aGlzLmRpc3BsYWNlbWVudE1hcD10LmRpc3BsYWNlbWVudE1hcCx0aGlzLmRpc3BsYWNlbWVudFNjYWxlPXQuZGlzcGxhY2VtZW50U2NhbGUsdGhpcy5kaXNwbGFjZW1lbnRCaWFzPXQuZGlzcGxhY2VtZW50Qmlhcyx0aGlzLndpcmVmcmFtZT10LndpcmVmcmFtZSx0aGlzLndpcmVmcmFtZUxpbmV3aWR0aD10LndpcmVmcmFtZUxpbmV3aWR0aCx0aGlzLmZsYXRTaGFkaW5nPXQuZmxhdFNoYWRpbmcsdGhpc319VWVlLnByb3RvdHlwZS5pc01lc2hOb3JtYWxNYXRlcmlhbD0hMDtjbGFzcyBqZWUgZXh0ZW5kcyB0NHR7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLnR5cGU9Ik1lc2hMYW1iZXJ0TWF0ZXJpYWwiLHRoaXMuY29sb3I9bmV3IHM0dCgxNjc3NzIxNSksdGhpcy5tYXA9bnVsbCx0aGlzLmxpZ2h0TWFwPW51bGwsdGhpcy5saWdodE1hcEludGVuc2l0eT0xLHRoaXMuYW9NYXA9bnVsbCx0aGlzLmFvTWFwSW50ZW5zaXR5PTEsdGhpcy5lbWlzc2l2ZT1uZXcgczR0KDApLHRoaXMuZW1pc3NpdmVJbnRlbnNpdHk9MSx0aGlzLmVtaXNzaXZlTWFwPW51bGwsdGhpcy5zcGVjdWxhck1hcD1udWxsLHRoaXMuYWxwaGFNYXA9bnVsbCx0aGlzLmVudk1hcD1udWxsLHRoaXMuY29tYmluZT0wLHRoaXMucmVmbGVjdGl2aXR5PTEsdGhpcy5yZWZyYWN0aW9uUmF0aW89Ljk4LHRoaXMud2lyZWZyYW1lPSExLHRoaXMud2lyZWZyYW1lTGluZXdpZHRoPTEsdGhpcy53aXJlZnJhbWVMaW5lY2FwPSJyb3VuZCIsdGhpcy53aXJlZnJhbWVMaW5lam9pbj0icm91bmQiLHRoaXMuc2V0VmFsdWVzKHQpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5jb2xvci5jb3B5KHQuY29sb3IpLHRoaXMubWFwPXQubWFwLHRoaXMubGlnaHRNYXA9dC5saWdodE1hcCx0aGlzLmxpZ2h0TWFwSW50ZW5zaXR5PXQubGlnaHRNYXBJbnRlbnNpdHksdGhpcy5hb01hcD10LmFvTWFwLHRoaXMuYW9NYXBJbnRlbnNpdHk9dC5hb01hcEludGVuc2l0eSx0aGlzLmVtaXNzaXZlLmNvcHkodC5lbWlzc2l2ZSksdGhpcy5lbWlzc2l2ZU1hcD10LmVtaXNzaXZlTWFwLHRoaXMuZW1pc3NpdmVJbnRlbnNpdHk9dC5lbWlzc2l2ZUludGVuc2l0eSx0aGlzLnNwZWN1bGFyTWFwPXQuc3BlY3VsYXJNYXAsdGhpcy5hbHBoYU1hcD10LmFscGhhTWFwLHRoaXMuZW52TWFwPXQuZW52TWFwLHRoaXMuY29tYmluZT10LmNvbWJpbmUsdGhpcy5yZWZsZWN0aXZpdHk9dC5yZWZsZWN0aXZpdHksdGhpcy5yZWZyYWN0aW9uUmF0aW89dC5yZWZyYWN0aW9uUmF0aW8sdGhpcy53aXJlZnJhbWU9dC53aXJlZnJhbWUsdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9dC53aXJlZnJhbWVMaW5ld2lkdGgsdGhpcy53aXJlZnJhbWVMaW5lY2FwPXQud2lyZWZyYW1lTGluZWNhcCx0aGlzLndpcmVmcmFtZUxpbmVqb2luPXQud2lyZWZyYW1lTGluZWpvaW4sdGhpc319amVlLnByb3RvdHlwZS5pc01lc2hMYW1iZXJ0TWF0ZXJpYWw9ITA7Y2xhc3MgR2VlIGV4dGVuZHMgdDR0e2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy5kZWZpbmVzPXtNQVRDQVA6IiJ9LHRoaXMudHlwZT0iTWVzaE1hdGNhcE1hdGVyaWFsIix0aGlzLmNvbG9yPW5ldyBzNHQoMTY3NzcyMTUpLHRoaXMubWF0Y2FwPW51bGwsdGhpcy5tYXA9bnVsbCx0aGlzLmJ1bXBNYXA9bnVsbCx0aGlzLmJ1bXBTY2FsZT0xLHRoaXMubm9ybWFsTWFwPW51bGwsdGhpcy5ub3JtYWxNYXBUeXBlPTAsdGhpcy5ub3JtYWxTY2FsZT1uZXcgQzV0KDEsMSksdGhpcy5kaXNwbGFjZW1lbnRNYXA9bnVsbCx0aGlzLmRpc3BsYWNlbWVudFNjYWxlPTEsdGhpcy5kaXNwbGFjZW1lbnRCaWFzPTAsdGhpcy5hbHBoYU1hcD1udWxsLHRoaXMuZmxhdFNoYWRpbmc9ITEsdGhpcy5zZXRWYWx1ZXModCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmRlZmluZXM9e01BVENBUDoiIn0sdGhpcy5jb2xvci5jb3B5KHQuY29sb3IpLHRoaXMubWF0Y2FwPXQubWF0Y2FwLHRoaXMubWFwPXQubWFwLHRoaXMuYnVtcE1hcD10LmJ1bXBNYXAsdGhpcy5idW1wU2NhbGU9dC5idW1wU2NhbGUsdGhpcy5ub3JtYWxNYXA9dC5ub3JtYWxNYXAsdGhpcy5ub3JtYWxNYXBUeXBlPXQubm9ybWFsTWFwVHlwZSx0aGlzLm5vcm1hbFNjYWxlLmNvcHkodC5ub3JtYWxTY2FsZSksdGhpcy5kaXNwbGFjZW1lbnRNYXA9dC5kaXNwbGFjZW1lbnRNYXAsdGhpcy5kaXNwbGFjZW1lbnRTY2FsZT10LmRpc3BsYWNlbWVudFNjYWxlLHRoaXMuZGlzcGxhY2VtZW50Qmlhcz10LmRpc3BsYWNlbWVudEJpYXMsdGhpcy5hbHBoYU1hcD10LmFscGhhTWFwLHRoaXMuZmxhdFNoYWRpbmc9dC5mbGF0U2hhZGluZyx0aGlzfX1HZWUucHJvdG90eXBlLmlzTWVzaE1hdGNhcE1hdGVyaWFsPSEwO2NsYXNzIFdlZSBleHRlbmRzIFg3dHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMudHlwZT0iTGluZURhc2hlZE1hdGVyaWFsIix0aGlzLnNjYWxlPTEsdGhpcy5kYXNoU2l6ZT0zLHRoaXMuZ2FwU2l6ZT0xLHRoaXMuc2V0VmFsdWVzKHQpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5zY2FsZT10LnNjYWxlLHRoaXMuZGFzaFNpemU9dC5kYXNoU2l6ZSx0aGlzLmdhcFNpemU9dC5nYXBTaXplLHRoaXN9fVdlZS5wcm90b3R5cGUuaXNMaW5lRGFzaGVkTWF0ZXJpYWw9ITA7dmFyIHFlZT1PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxTaGFkb3dNYXRlcmlhbDpEZWUsU3ByaXRlTWF0ZXJpYWw6cDd0LFJhd1NoYWRlck1hdGVyaWFsOms2dCxTaGFkZXJNYXRlcmlhbDpuNnQsUG9pbnRzTWF0ZXJpYWw6b3RlLE1lc2hQaHlzaWNhbE1hdGVyaWFsOkhlZSxNZXNoU3RhbmRhcmRNYXRlcmlhbDpCZWUsTWVzaFBob25nTWF0ZXJpYWw6RmVlLE1lc2hUb29uTWF0ZXJpYWw6VmVlLE1lc2hOb3JtYWxNYXRlcmlhbDpVZWUsTWVzaExhbWJlcnRNYXRlcmlhbDpqZWUsTWVzaERlcHRoTWF0ZXJpYWw6WTh0LE1lc2hEaXN0YW5jZU1hdGVyaWFsOlg4dCxNZXNoQmFzaWNNYXRlcmlhbDpsNHQsTWVzaE1hdGNhcE1hdGVyaWFsOkdlZSxMaW5lRGFzaGVkTWF0ZXJpYWw6V2VlLExpbmVCYXNpY01hdGVyaWFsOlg3dCxNYXRlcmlhbDp0NHR9KTtjb25zdCBZZWU9e2FycmF5U2xpY2U6ZnVuY3Rpb24odCxlLG4pe3JldHVybiBZZWUuaXNUeXBlZEFycmF5KHQpP25ldyB0LmNvbnN0cnVjdG9yKHQuc3ViYXJyYXkoZSx2b2lkIDAhPT1uP246dC5sZW5ndGgpKTp0LnNsaWNlKGUsbil9LGNvbnZlcnRBcnJheTpmdW5jdGlvbih0LGUsbil7cmV0dXJuIXR8fCFuJiZ0LmNvbnN0cnVjdG9yPT09ZT90OiJudW1iZXIiPT10eXBlb2YgZS5CWVRFU19QRVJfRUxFTUVOVD9uZXcgZSh0KTpBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0KX0saXNUeXBlZEFycmF5OmZ1bmN0aW9uKHQpe3JldHVybiBBcnJheUJ1ZmZlci5pc1ZpZXcodCkmJiEodCBpbnN0YW5jZW9mIERhdGFWaWV3KX0sZ2V0S2V5ZnJhbWVPcmRlcjpmdW5jdGlvbih0KXtjb25zdCBlPXQubGVuZ3RoLG49bmV3IEFycmF5KGUpO2ZvcihsZXQgdD0wO3QhPT1lOysrdCluW3RdPXQ7cmV0dXJuIG4uc29ydCgoZnVuY3Rpb24gaShlLG4pe3JldHVybiB0W2VdLXRbbl19KSksbn0sc29ydGVkQXJyYXk6ZnVuY3Rpb24odCxlLG4pe2NvbnN0IGk9dC5sZW5ndGgscj1uZXcgdC5jb25zdHJ1Y3RvcihpKTtmb3IobGV0IG89MCxhPTA7YSE9PWk7KytvKXtjb25zdCBpPW5bb10qZTtmb3IobGV0IG49MDtuIT09ZTsrK24pclthKytdPXRbaStuXX1yZXR1cm4gcn0sZmxhdHRlbkpTT046ZnVuY3Rpb24odCxlLG4saSl7bGV0IHI9MSxvPXRbMF07Zm9yKDt2b2lkIDAhPT1vJiZ2b2lkIDA9PT1vW2ldOylvPXRbcisrXTtpZih2b2lkIDA9PT1vKXJldHVybjtsZXQgYT1vW2ldO2lmKHZvaWQgMCE9PWEpaWYoQXJyYXkuaXNBcnJheShhKSlkb3thPW9baV0sdm9pZCAwIT09YSYmKGUucHVzaChvLnRpbWUpLG4ucHVzaC5hcHBseShuLGEpKSxvPXRbcisrXX13aGlsZSh2b2lkIDAhPT1vKTtlbHNlIGlmKHZvaWQgMCE9PWEudG9BcnJheSlkb3thPW9baV0sdm9pZCAwIT09YSYmKGUucHVzaChvLnRpbWUpLGEudG9BcnJheShuLG4ubGVuZ3RoKSksbz10W3IrK119d2hpbGUodm9pZCAwIT09byk7ZWxzZSBkb3thPW9baV0sdm9pZCAwIT09YSYmKGUucHVzaChvLnRpbWUpLG4ucHVzaChhKSksbz10W3IrK119d2hpbGUodm9pZCAwIT09byl9LHN1YmNsaXA6ZnVuY3Rpb24odCxlLG4saSxyPTMwKXtjb25zdCBvPXQuY2xvbmUoKTtvLm5hbWU9ZTtjb25zdCBhPVtdO2ZvcihsZXQgdD0wO3Q8by50cmFja3MubGVuZ3RoOysrdCl7Y29uc3QgZT1vLnRyYWNrc1t0XSxzPWUuZ2V0VmFsdWVTaXplKCksbD1bXSxjPVtdO2ZvcihsZXQgdD0wO3Q8ZS50aW1lcy5sZW5ndGg7Kyt0KXtjb25zdCBvPWUudGltZXNbdF0qcjtpZighKG88bnx8bz49aSkpe2wucHVzaChlLnRpbWVzW3RdKTtmb3IobGV0IG49MDtuPHM7KytuKWMucHVzaChlLnZhbHVlc1t0KnMrbl0pfX0wIT09bC5sZW5ndGgmJihlLnRpbWVzPVllZS5jb252ZXJ0QXJyYXkobCxlLnRpbWVzLmNvbnN0cnVjdG9yKSxlLnZhbHVlcz1ZZWUuY29udmVydEFycmF5KGMsZS52YWx1ZXMuY29uc3RydWN0b3IpLGEucHVzaChlKSl9by50cmFja3M9YTtsZXQgcz0xLzA7Zm9yKGxldCB0PTA7dDxvLnRyYWNrcy5sZW5ndGg7Kyt0KXM+by50cmFja3NbdF0udGltZXNbMF0mJihzPW8udHJhY2tzW3RdLnRpbWVzWzBdKTtmb3IobGV0IHQ9MDt0PG8udHJhY2tzLmxlbmd0aDsrK3Qpby50cmFja3NbdF0uc2hpZnQoLTEqcyk7cmV0dXJuIG8ucmVzZXREdXJhdGlvbigpLG99LG1ha2VDbGlwQWRkaXRpdmU6ZnVuY3Rpb24odCxlPTAsbj10LGk9MzApe2k8PTAmJihpPTMwKTtjb25zdCByPW4udHJhY2tzLmxlbmd0aCxvPWUvaTtmb3IobGV0IGU9MDtlPHI7KytlKXtjb25zdCBpPW4udHJhY2tzW2VdLHI9aS5WYWx1ZVR5cGVOYW1lO2lmKCJib29sIj09PXJ8fCJzdHJpbmciPT09ciljb250aW51ZTtjb25zdCBhPXQudHJhY2tzLmZpbmQoKGZ1bmN0aW9uKHQpe3JldHVybiB0Lm5hbWU9PT1pLm5hbWUmJnQuVmFsdWVUeXBlTmFtZT09PXJ9KSk7aWYodm9pZCAwPT09YSljb250aW51ZTtsZXQgcz0wO2NvbnN0IGw9aS5nZXRWYWx1ZVNpemUoKTtpLmNyZWF0ZUludGVycG9sYW50LmlzSW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kR0xURkN1YmljU3BsaW5lJiYocz1sLzMpO2xldCBjPTA7Y29uc3QgdT1hLmdldFZhbHVlU2l6ZSgpO2EuY3JlYXRlSW50ZXJwb2xhbnQuaXNJbnRlcnBvbGFudEZhY3RvcnlNZXRob2RHTFRGQ3ViaWNTcGxpbmUmJihjPXUvMyk7Y29uc3QgaD1pLnRpbWVzLmxlbmd0aC0xO2xldCBkO2lmKG88PWkudGltZXNbMF0pe2Q9WWVlLmFycmF5U2xpY2UoaS52YWx1ZXMscyxsLXMpfWVsc2UgaWYobz49aS50aW1lc1toXSl7Y29uc3QgdD1oKmwrcztkPVllZS5hcnJheVNsaWNlKGkudmFsdWVzLHQsdCtsLXMpfWVsc2V7Y29uc3QgdD1pLmNyZWF0ZUludGVycG9sYW50KCksZT1zLG49bC1zO3QuZXZhbHVhdGUobyksZD1ZZWUuYXJyYXlTbGljZSh0LnJlc3VsdEJ1ZmZlcixlLG4pfWlmKCJxdWF0ZXJuaW9uIj09PXIpeyhuZXcgQjV0KS5mcm9tQXJyYXkoZCkubm9ybWFsaXplKCkuY29uanVnYXRlKCkudG9BcnJheShkKX1jb25zdCBwPWEudGltZXMubGVuZ3RoO2ZvcihsZXQgdD0wO3Q8cDsrK3Qpe2NvbnN0IGU9dCp1K2M7aWYoInF1YXRlcm5pb24iPT09cilCNXQubXVsdGlwbHlRdWF0ZXJuaW9uc0ZsYXQoYS52YWx1ZXMsZSxkLDAsYS52YWx1ZXMsZSk7ZWxzZXtjb25zdCB0PXUtMipjO2ZvcihsZXQgbj0wO248dDsrK24pYS52YWx1ZXNbZStuXS09ZFtuXX19fXJldHVybiB0LmJsZW5kTW9kZT1qMnQsdH19O2NsYXNzIFhlZXtjb25zdHJ1Y3Rvcih0LGUsbixpKXt0aGlzLnBhcmFtZXRlclBvc2l0aW9ucz10LHRoaXMuX2NhY2hlZEluZGV4PTAsdGhpcy5yZXN1bHRCdWZmZXI9dm9pZCAwIT09aT9pOm5ldyBlLmNvbnN0cnVjdG9yKG4pLHRoaXMuc2FtcGxlVmFsdWVzPWUsdGhpcy52YWx1ZVNpemU9bix0aGlzLnNldHRpbmdzPW51bGwsdGhpcy5EZWZhdWx0U2V0dGluZ3NfPXt9fWV2YWx1YXRlKHQpe2NvbnN0IGU9dGhpcy5wYXJhbWV0ZXJQb3NpdGlvbnM7bGV0IG49dGhpcy5fY2FjaGVkSW5kZXgsaT1lW25dLHI9ZVtuLTFdO3Q6e2U6e2xldCBvO246e2k6aWYoISh0PGkpKXtmb3IobGV0IG89bisyOzspe2lmKHZvaWQgMD09PWkpe2lmKHQ8cilicmVhayBpO3JldHVybiBuPWUubGVuZ3RoLHRoaXMuX2NhY2hlZEluZGV4PW4sdGhpcy5hZnRlckVuZF8obi0xLHQscil9aWYobj09PW8pYnJlYWs7aWYocj1pLGk9ZVsrK25dLHQ8aSlicmVhayBlfW89ZS5sZW5ndGg7YnJlYWsgbn1pZih0Pj1yKWJyZWFrIHQ7e2NvbnN0IGE9ZVsxXTt0PGEmJihuPTIscj1hKTtmb3IobGV0IG89bi0yOzspe2lmKHZvaWQgMD09PXIpcmV0dXJuIHRoaXMuX2NhY2hlZEluZGV4PTAsdGhpcy5iZWZvcmVTdGFydF8oMCx0LGkpO2lmKG49PT1vKWJyZWFrO2lmKGk9cixyPWVbLS1uLTFdLHQ+PXIpYnJlYWsgZX1vPW4sbj0wfX1mb3IoO248bzspe2NvbnN0IGk9bitvPj4+MTt0PGVbaV0/bz1pOm49aSsxfWlmKGk9ZVtuXSxyPWVbbi0xXSx2b2lkIDA9PT1yKXJldHVybiB0aGlzLl9jYWNoZWRJbmRleD0wLHRoaXMuYmVmb3JlU3RhcnRfKDAsdCxpKTtpZih2b2lkIDA9PT1pKXJldHVybiBuPWUubGVuZ3RoLHRoaXMuX2NhY2hlZEluZGV4PW4sdGhpcy5hZnRlckVuZF8obi0xLHIsdCl9dGhpcy5fY2FjaGVkSW5kZXg9bix0aGlzLmludGVydmFsQ2hhbmdlZF8obixyLGkpfXJldHVybiB0aGlzLmludGVycG9sYXRlXyhuLHIsdCxpKX1nZXRTZXR0aW5nc18oKXtyZXR1cm4gdGhpcy5zZXR0aW5nc3x8dGhpcy5EZWZhdWx0U2V0dGluZ3NffWNvcHlTYW1wbGVWYWx1ZV8odCl7Y29uc3QgZT10aGlzLnJlc3VsdEJ1ZmZlcixuPXRoaXMuc2FtcGxlVmFsdWVzLGk9dGhpcy52YWx1ZVNpemUscj10Kmk7Zm9yKGxldCB0PTA7dCE9PWk7Kyt0KWVbdF09bltyK3RdO3JldHVybiBlfWludGVycG9sYXRlXygpe3Rocm93IG5ldyBFcnJvcigiY2FsbCB0byBhYnN0cmFjdCBtZXRob2QiKX1pbnRlcnZhbENoYW5nZWRfKCl7fX1YZWUucHJvdG90eXBlLmJlZm9yZVN0YXJ0Xz1YZWUucHJvdG90eXBlLmNvcHlTYW1wbGVWYWx1ZV8sWGVlLnByb3RvdHlwZS5hZnRlckVuZF89WGVlLnByb3RvdHlwZS5jb3B5U2FtcGxlVmFsdWVfO2NsYXNzICRlZSBleHRlbmRzIFhlZXtjb25zdHJ1Y3Rvcih0LGUsbixpKXtzdXBlcih0LGUsbixpKSx0aGlzLl93ZWlnaHRQcmV2PS0wLHRoaXMuX29mZnNldFByZXY9LTAsdGhpcy5fd2VpZ2h0TmV4dD0tMCx0aGlzLl9vZmZzZXROZXh0PS0wLHRoaXMuRGVmYXVsdFNldHRpbmdzXz17ZW5kaW5nU3RhcnQ6SDJ0LGVuZGluZ0VuZDpIMnR9fWludGVydmFsQ2hhbmdlZF8odCxlLG4pe2NvbnN0IGk9dGhpcy5wYXJhbWV0ZXJQb3NpdGlvbnM7bGV0IHI9dC0yLG89dCsxLGE9aVtyXSxzPWlbb107aWYodm9pZCAwPT09YSlzd2l0Y2godGhpcy5nZXRTZXR0aW5nc18oKS5lbmRpbmdTdGFydCl7Y2FzZSBGMnQ6cj10LGE9MiplLW47YnJlYWs7Y2FzZSBWMnQ6cj1pLmxlbmd0aC0yLGE9ZStpW3JdLWlbcisxXTticmVhaztkZWZhdWx0OnI9dCxhPW59aWYodm9pZCAwPT09cylzd2l0Y2godGhpcy5nZXRTZXR0aW5nc18oKS5lbmRpbmdFbmQpe2Nhc2UgRjJ0Om89dCxzPTIqbi1lO2JyZWFrO2Nhc2UgVjJ0Om89MSxzPW4raVsxXS1pWzBdO2JyZWFrO2RlZmF1bHQ6bz10LTEscz1lfWNvbnN0IGw9LjUqKG4tZSksYz10aGlzLnZhbHVlU2l6ZTt0aGlzLl93ZWlnaHRQcmV2PWwvKGUtYSksdGhpcy5fd2VpZ2h0TmV4dD1sLyhzLW4pLHRoaXMuX29mZnNldFByZXY9cipjLHRoaXMuX29mZnNldE5leHQ9bypjfWludGVycG9sYXRlXyh0LGUsbixpKXtjb25zdCByPXRoaXMucmVzdWx0QnVmZmVyLG89dGhpcy5zYW1wbGVWYWx1ZXMsYT10aGlzLnZhbHVlU2l6ZSxzPXQqYSxsPXMtYSxjPXRoaXMuX29mZnNldFByZXYsdT10aGlzLl9vZmZzZXROZXh0LGg9dGhpcy5fd2VpZ2h0UHJldixkPXRoaXMuX3dlaWdodE5leHQscD0obi1lKS8oaS1lKSxmPXAqcCxtPWYqcCxnPS1oKm0rMipoKmYtaCpwLF89KDEraCkqbSsoLTEuNS0yKmgpKmYrKC0uNStoKSpwKzEseT0oLTEtZCkqbSsoMS41K2QpKmYrLjUqcCx2PWQqbS1kKmY7Zm9yKGxldCB0PTA7dCE9PWE7Kyt0KXJbdF09ZypvW2MrdF0rXypvW2wrdF0reSpvW3MrdF0rdipvW3UrdF07cmV0dXJuIHJ9fWNsYXNzIEtlZSBleHRlbmRzIFhlZXtjb25zdHJ1Y3Rvcih0LGUsbixpKXtzdXBlcih0LGUsbixpKX1pbnRlcnBvbGF0ZV8odCxlLG4saSl7Y29uc3Qgcj10aGlzLnJlc3VsdEJ1ZmZlcixvPXRoaXMuc2FtcGxlVmFsdWVzLGE9dGhpcy52YWx1ZVNpemUscz10KmEsbD1zLWEsYz0obi1lKS8oaS1lKSx1PTEtYztmb3IobGV0IHQ9MDt0IT09YTsrK3Qpclt0XT1vW2wrdF0qdStvW3MrdF0qYztyZXR1cm4gcn19Y2xhc3MgWmVlIGV4dGVuZHMgWGVle2NvbnN0cnVjdG9yKHQsZSxuLGkpe3N1cGVyKHQsZSxuLGkpfWludGVycG9sYXRlXyh0KXtyZXR1cm4gdGhpcy5jb3B5U2FtcGxlVmFsdWVfKHQtMSl9fWNsYXNzIEplZXtjb25zdHJ1Y3Rvcih0LGUsbixpKXtpZih2b2lkIDA9PT10KXRocm93IG5ldyBFcnJvcigiVEhSRUUuS2V5ZnJhbWVUcmFjazogdHJhY2sgbmFtZSBpcyB1bmRlZmluZWQiKTtpZih2b2lkIDA9PT1lfHwwPT09ZS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJUSFJFRS5LZXlmcmFtZVRyYWNrOiBubyBrZXlmcmFtZXMgaW4gdHJhY2sgbmFtZWQgIit0KTt0aGlzLm5hbWU9dCx0aGlzLnRpbWVzPVllZS5jb252ZXJ0QXJyYXkoZSx0aGlzLlRpbWVCdWZmZXJUeXBlKSx0aGlzLnZhbHVlcz1ZZWUuY29udmVydEFycmF5KG4sdGhpcy5WYWx1ZUJ1ZmZlclR5cGUpLHRoaXMuc2V0SW50ZXJwb2xhdGlvbihpfHx0aGlzLkRlZmF1bHRJbnRlcnBvbGF0aW9uKX1zdGF0aWMgdG9KU09OKHQpe2NvbnN0IGU9dC5jb25zdHJ1Y3RvcjtsZXQgbjtpZihlLnRvSlNPTiE9PXRoaXMudG9KU09OKW49ZS50b0pTT04odCk7ZWxzZXtuPXtuYW1lOnQubmFtZSx0aW1lczpZZWUuY29udmVydEFycmF5KHQudGltZXMsQXJyYXkpLHZhbHVlczpZZWUuY29udmVydEFycmF5KHQudmFsdWVzLEFycmF5KX07Y29uc3QgZT10LmdldEludGVycG9sYXRpb24oKTtlIT09dC5EZWZhdWx0SW50ZXJwb2xhdGlvbiYmKG4uaW50ZXJwb2xhdGlvbj1lKX1yZXR1cm4gbi50eXBlPXQuVmFsdWVUeXBlTmFtZSxufUludGVycG9sYW50RmFjdG9yeU1ldGhvZERpc2NyZXRlKHQpe3JldHVybiBuZXcgWmVlKHRoaXMudGltZXMsdGhpcy52YWx1ZXMsdGhpcy5nZXRWYWx1ZVNpemUoKSx0KX1JbnRlcnBvbGFudEZhY3RvcnlNZXRob2RMaW5lYXIodCl7cmV0dXJuIG5ldyBLZWUodGhpcy50aW1lcyx0aGlzLnZhbHVlcyx0aGlzLmdldFZhbHVlU2l6ZSgpLHQpfUludGVycG9sYW50RmFjdG9yeU1ldGhvZFNtb290aCh0KXtyZXR1cm4gbmV3ICRlZSh0aGlzLnRpbWVzLHRoaXMudmFsdWVzLHRoaXMuZ2V0VmFsdWVTaXplKCksdCl9c2V0SW50ZXJwb2xhdGlvbih0KXtsZXQgZTtzd2l0Y2godCl7Y2FzZSB6MnQ6ZT10aGlzLkludGVycG9sYW50RmFjdG9yeU1ldGhvZERpc2NyZXRlO2JyZWFrO2Nhc2UgRDJ0OmU9dGhpcy5JbnRlcnBvbGFudEZhY3RvcnlNZXRob2RMaW5lYXI7YnJlYWs7Y2FzZSBCMnQ6ZT10aGlzLkludGVycG9sYW50RmFjdG9yeU1ldGhvZFNtb290aH1pZih2b2lkIDA9PT1lKXtjb25zdCBlPSJ1bnN1cHBvcnRlZCBpbnRlcnBvbGF0aW9uIGZvciAiK3RoaXMuVmFsdWVUeXBlTmFtZSsiIGtleWZyYW1lIHRyYWNrIG5hbWVkICIrdGhpcy5uYW1lO2lmKHZvaWQgMD09PXRoaXMuY3JlYXRlSW50ZXJwb2xhbnQpe2lmKHQ9PT10aGlzLkRlZmF1bHRJbnRlcnBvbGF0aW9uKXRocm93IG5ldyBFcnJvcihlKTt0aGlzLnNldEludGVycG9sYXRpb24odGhpcy5EZWZhdWx0SW50ZXJwb2xhdGlvbil9cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuS2V5ZnJhbWVUcmFjazoiLGUpLHRoaXN9cmV0dXJuIHRoaXMuY3JlYXRlSW50ZXJwb2xhbnQ9ZSx0aGlzfWdldEludGVycG9sYXRpb24oKXtzd2l0Y2godGhpcy5jcmVhdGVJbnRlcnBvbGFudCl7Y2FzZSB0aGlzLkludGVycG9sYW50RmFjdG9yeU1ldGhvZERpc2NyZXRlOnJldHVybiB6MnQ7Y2FzZSB0aGlzLkludGVycG9sYW50RmFjdG9yeU1ldGhvZExpbmVhcjpyZXR1cm4gRDJ0O2Nhc2UgdGhpcy5JbnRlcnBvbGFudEZhY3RvcnlNZXRob2RTbW9vdGg6cmV0dXJuIEIydH19Z2V0VmFsdWVTaXplKCl7cmV0dXJuIHRoaXMudmFsdWVzLmxlbmd0aC90aGlzLnRpbWVzLmxlbmd0aH1zaGlmdCh0KXtpZigwIT09dCl7Y29uc3QgZT10aGlzLnRpbWVzO2ZvcihsZXQgbj0wLGk9ZS5sZW5ndGg7biE9PWk7KytuKWVbbl0rPXR9cmV0dXJuIHRoaXN9c2NhbGUodCl7aWYoMSE9PXQpe2NvbnN0IGU9dGhpcy50aW1lcztmb3IobGV0IG49MCxpPWUubGVuZ3RoO24hPT1pOysrbillW25dKj10fXJldHVybiB0aGlzfXRyaW0odCxlKXtjb25zdCBuPXRoaXMudGltZXMsaT1uLmxlbmd0aDtsZXQgcj0wLG89aS0xO2Zvcig7ciE9PWkmJm5bcl08dDspKytyO2Zvcig7LTEhPT1vJiZuW29dPmU7KS0tbztpZigrK28sMCE9PXJ8fG8hPT1pKXtyPj1vJiYobz1NYXRoLm1heChvLDEpLHI9by0xKTtjb25zdCB0PXRoaXMuZ2V0VmFsdWVTaXplKCk7dGhpcy50aW1lcz1ZZWUuYXJyYXlTbGljZShuLHIsbyksdGhpcy52YWx1ZXM9WWVlLmFycmF5U2xpY2UodGhpcy52YWx1ZXMscip0LG8qdCl9cmV0dXJuIHRoaXN9dmFsaWRhdGUoKXtsZXQgdD0hMDtjb25zdCBlPXRoaXMuZ2V0VmFsdWVTaXplKCk7ZS1NYXRoLmZsb29yKGUpIT0wJiYoY29uc29sZS5lcnJvcigiVEhSRUUuS2V5ZnJhbWVUcmFjazogSW52YWxpZCB2YWx1ZSBzaXplIGluIHRyYWNrLiIsdGhpcyksdD0hMSk7Y29uc3Qgbj10aGlzLnRpbWVzLGk9dGhpcy52YWx1ZXMscj1uLmxlbmd0aDswPT09ciYmKGNvbnNvbGUuZXJyb3IoIlRIUkVFLktleWZyYW1lVHJhY2s6IFRyYWNrIGlzIGVtcHR5LiIsdGhpcyksdD0hMSk7bGV0IG89bnVsbDtmb3IobGV0IGU9MDtlIT09cjtlKyspe2NvbnN0IGk9bltlXTtpZigibnVtYmVyIj09dHlwZW9mIGkmJmlzTmFOKGkpKXtjb25zb2xlLmVycm9yKCJUSFJFRS5LZXlmcmFtZVRyYWNrOiBUaW1lIGlzIG5vdCBhIHZhbGlkIG51bWJlci4iLHRoaXMsZSxpKSx0PSExO2JyZWFrfWlmKG51bGwhPT1vJiZvPmkpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLktleWZyYW1lVHJhY2s6IE91dCBvZiBvcmRlciBrZXlzLiIsdGhpcyxlLGksbyksdD0hMTticmVha31vPWl9aWYodm9pZCAwIT09aSYmWWVlLmlzVHlwZWRBcnJheShpKSlmb3IobGV0IGU9MCxuPWkubGVuZ3RoO2UhPT1uOysrZSl7Y29uc3Qgbj1pW2VdO2lmKGlzTmFOKG4pKXtjb25zb2xlLmVycm9yKCJUSFJFRS5LZXlmcmFtZVRyYWNrOiBWYWx1ZSBpcyBub3QgYSB2YWxpZCBudW1iZXIuIix0aGlzLGUsbiksdD0hMTticmVha319cmV0dXJuIHR9b3B0aW1pemUoKXtjb25zdCB0PVllZS5hcnJheVNsaWNlKHRoaXMudGltZXMpLGU9WWVlLmFycmF5U2xpY2UodGhpcy52YWx1ZXMpLG49dGhpcy5nZXRWYWx1ZVNpemUoKSxpPXRoaXMuZ2V0SW50ZXJwb2xhdGlvbigpPT09QjJ0LHI9dC5sZW5ndGgtMTtsZXQgbz0xO2ZvcihsZXQgYT0xO2E8cjsrK2Epe2xldCByPSExO2NvbnN0IHM9dFthXTtpZihzIT09dFthKzFdJiYoMSE9PWF8fHMhPT10WzBdKSlpZihpKXI9ITA7ZWxzZXtjb25zdCB0PWEqbixpPXQtbixvPXQrbjtmb3IobGV0IGE9MDthIT09bjsrK2Epe2NvbnN0IG49ZVt0K2FdO2lmKG4hPT1lW2krYV18fG4hPT1lW28rYV0pe3I9ITA7YnJlYWt9fX1pZihyKXtpZihhIT09byl7dFtvXT10W2FdO2NvbnN0IGk9YSpuLHI9bypuO2ZvcihsZXQgdD0wO3QhPT1uOysrdCllW3IrdF09ZVtpK3RdfSsrb319aWYocj4wKXt0W29dPXRbcl07Zm9yKGxldCB0PXIqbixpPW8qbixhPTA7YSE9PW47KythKWVbaSthXT1lW3QrYV07KytvfXJldHVybiBvIT09dC5sZW5ndGg/KHRoaXMudGltZXM9WWVlLmFycmF5U2xpY2UodCwwLG8pLHRoaXMudmFsdWVzPVllZS5hcnJheVNsaWNlKGUsMCxvKm4pKToodGhpcy50aW1lcz10LHRoaXMudmFsdWVzPWUpLHRoaXN9Y2xvbmUoKXtjb25zdCB0PVllZS5hcnJheVNsaWNlKHRoaXMudGltZXMsMCksZT1ZZWUuYXJyYXlTbGljZSh0aGlzLnZhbHVlcywwKSxuPW5ldygwLHRoaXMuY29uc3RydWN0b3IpKHRoaXMubmFtZSx0LGUpO3JldHVybiBuLmNyZWF0ZUludGVycG9sYW50PXRoaXMuY3JlYXRlSW50ZXJwb2xhbnQsbn19SmVlLnByb3RvdHlwZS5UaW1lQnVmZmVyVHlwZT1GbG9hdDMyQXJyYXksSmVlLnByb3RvdHlwZS5WYWx1ZUJ1ZmZlclR5cGU9RmxvYXQzMkFycmF5LEplZS5wcm90b3R5cGUuRGVmYXVsdEludGVycG9sYXRpb249RDJ0O2NsYXNzIFFlZSBleHRlbmRzIEplZXt9UWVlLnByb3RvdHlwZS5WYWx1ZVR5cGVOYW1lPSJib29sIixRZWUucHJvdG90eXBlLlZhbHVlQnVmZmVyVHlwZT1BcnJheSxRZWUucHJvdG90eXBlLkRlZmF1bHRJbnRlcnBvbGF0aW9uPXoydCxRZWUucHJvdG90eXBlLkludGVycG9sYW50RmFjdG9yeU1ldGhvZExpbmVhcj12b2lkIDAsUWVlLnByb3RvdHlwZS5JbnRlcnBvbGFudEZhY3RvcnlNZXRob2RTbW9vdGg9dm9pZCAwO2NsYXNzIHRuZSBleHRlbmRzIEplZXt9dG5lLnByb3RvdHlwZS5WYWx1ZVR5cGVOYW1lPSJjb2xvciI7Y2xhc3MgZW5lIGV4dGVuZHMgSmVle31lbmUucHJvdG90eXBlLlZhbHVlVHlwZU5hbWU9Im51bWJlciI7Y2xhc3Mgbm5lIGV4dGVuZHMgWGVle2NvbnN0cnVjdG9yKHQsZSxuLGkpe3N1cGVyKHQsZSxuLGkpfWludGVycG9sYXRlXyh0LGUsbixpKXtjb25zdCByPXRoaXMucmVzdWx0QnVmZmVyLG89dGhpcy5zYW1wbGVWYWx1ZXMsYT10aGlzLnZhbHVlU2l6ZSxzPShuLWUpLyhpLWUpO2xldCBsPXQqYTtmb3IobGV0IHQ9bCthO2whPT10O2wrPTQpQjV0LnNsZXJwRmxhdChyLDAsbyxsLWEsbyxsLHMpO3JldHVybiByfX1jbGFzcyBpbmUgZXh0ZW5kcyBKZWV7SW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kTGluZWFyKHQpe3JldHVybiBuZXcgbm5lKHRoaXMudGltZXMsdGhpcy52YWx1ZXMsdGhpcy5nZXRWYWx1ZVNpemUoKSx0KX19aW5lLnByb3RvdHlwZS5WYWx1ZVR5cGVOYW1lPSJxdWF0ZXJuaW9uIixpbmUucHJvdG90eXBlLkRlZmF1bHRJbnRlcnBvbGF0aW9uPUQydCxpbmUucHJvdG90eXBlLkludGVycG9sYW50RmFjdG9yeU1ldGhvZFNtb290aD12b2lkIDA7Y2xhc3Mgcm5lIGV4dGVuZHMgSmVle31ybmUucHJvdG90eXBlLlZhbHVlVHlwZU5hbWU9InN0cmluZyIscm5lLnByb3RvdHlwZS5WYWx1ZUJ1ZmZlclR5cGU9QXJyYXkscm5lLnByb3RvdHlwZS5EZWZhdWx0SW50ZXJwb2xhdGlvbj16MnQscm5lLnByb3RvdHlwZS5JbnRlcnBvbGFudEZhY3RvcnlNZXRob2RMaW5lYXI9dm9pZCAwLHJuZS5wcm90b3R5cGUuSW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kU21vb3RoPXZvaWQgMDtjbGFzcyBvbmUgZXh0ZW5kcyBKZWV7fW9uZS5wcm90b3R5cGUuVmFsdWVUeXBlTmFtZT0idmVjdG9yIjtjbGFzcyBhbmV7Y29uc3RydWN0b3IodCxlPS0xLG4saT0yNTAwKXt0aGlzLm5hbWU9dCx0aGlzLnRyYWNrcz1uLHRoaXMuZHVyYXRpb249ZSx0aGlzLmJsZW5kTW9kZT1pLHRoaXMudXVpZD1hNXQoKSx0aGlzLmR1cmF0aW9uPDAmJnRoaXMucmVzZXREdXJhdGlvbigpfXN0YXRpYyBwYXJzZSh0KXtjb25zdCBlPVtdLG49dC50cmFja3MsaT0xLyh0LmZwc3x8MSk7Zm9yKGxldCB0PTAscj1uLmxlbmd0aDt0IT09cjsrK3QpZS5wdXNoKHNuZShuW3RdKS5zY2FsZShpKSk7Y29uc3Qgcj1uZXcgdGhpcyh0Lm5hbWUsdC5kdXJhdGlvbixlLHQuYmxlbmRNb2RlKTtyZXR1cm4gci51dWlkPXQudXVpZCxyfXN0YXRpYyB0b0pTT04odCl7Y29uc3QgZT1bXSxuPXQudHJhY2tzLGk9e25hbWU6dC5uYW1lLGR1cmF0aW9uOnQuZHVyYXRpb24sdHJhY2tzOmUsdXVpZDp0LnV1aWQsYmxlbmRNb2RlOnQuYmxlbmRNb2RlfTtmb3IobGV0IHQ9MCxpPW4ubGVuZ3RoO3QhPT1pOysrdCllLnB1c2goSmVlLnRvSlNPTihuW3RdKSk7cmV0dXJuIGl9c3RhdGljIENyZWF0ZUZyb21Nb3JwaFRhcmdldFNlcXVlbmNlKHQsZSxuLGkpe2NvbnN0IHI9ZS5sZW5ndGgsbz1bXTtmb3IobGV0IHQ9MDt0PHI7dCsrKXtsZXQgYT1bXSxzPVtdO2EucHVzaCgodCtyLTEpJXIsdCwodCsxKSVyKSxzLnB1c2goMCwxLDApO2NvbnN0IGw9WWVlLmdldEtleWZyYW1lT3JkZXIoYSk7YT1ZZWUuc29ydGVkQXJyYXkoYSwxLGwpLHM9WWVlLnNvcnRlZEFycmF5KHMsMSxsKSxpfHwwIT09YVswXXx8KGEucHVzaChyKSxzLnB1c2goc1swXSkpLG8ucHVzaChuZXcgZW5lKCIubW9ycGhUYXJnZXRJbmZsdWVuY2VzWyIrZVt0XS5uYW1lKyJdIixhLHMpLnNjYWxlKDEvbikpfXJldHVybiBuZXcgdGhpcyh0LC0xLG8pfXN0YXRpYyBmaW5kQnlOYW1lKHQsZSl7bGV0IG49dDtpZighQXJyYXkuaXNBcnJheSh0KSl7Y29uc3QgZT10O249ZS5nZW9tZXRyeSYmZS5nZW9tZXRyeS5hbmltYXRpb25zfHxlLmFuaW1hdGlvbnN9Zm9yKGxldCB0PTA7dDxuLmxlbmd0aDt0KyspaWYoblt0XS5uYW1lPT09ZSlyZXR1cm4gblt0XTtyZXR1cm4gbnVsbH1zdGF0aWMgQ3JlYXRlQ2xpcHNGcm9tTW9ycGhUYXJnZXRTZXF1ZW5jZXModCxlLG4pe2NvbnN0IGk9e30scj0vXihbXHctXSo/KShbXGRdKykkLztmb3IobGV0IGU9MCxuPXQubGVuZ3RoO2U8bjtlKyspe2NvbnN0IG49dFtlXSxvPW4ubmFtZS5tYXRjaChyKTtpZihvJiZvLmxlbmd0aD4xKXtjb25zdCB0PW9bMV07bGV0IGU9aVt0XTtlfHwoaVt0XT1lPVtdKSxlLnB1c2gobil9fWNvbnN0IG89W107Zm9yKGNvbnN0IHQgaW4gaSlvLnB1c2godGhpcy5DcmVhdGVGcm9tTW9ycGhUYXJnZXRTZXF1ZW5jZSh0LGlbdF0sZSxuKSk7cmV0dXJuIG99c3RhdGljIHBhcnNlQW5pbWF0aW9uKHQsZSl7aWYoIXQpcmV0dXJuIGNvbnNvbGUuZXJyb3IoIlRIUkVFLkFuaW1hdGlvbkNsaXA6IE5vIGFuaW1hdGlvbiBpbiBKU09OTG9hZGVyIGRhdGEuIiksbnVsbDtjb25zdCBuPWZ1bmN0aW9uKHQsZSxuLGkscil7aWYoMCE9PW4ubGVuZ3RoKXtjb25zdCBvPVtdLGE9W107WWVlLmZsYXR0ZW5KU09OKG4sbyxhLGkpLDAhPT1vLmxlbmd0aCYmci5wdXNoKG5ldyB0KGUsbyxhKSl9fSxpPVtdLHI9dC5uYW1lfHwiZGVmYXVsdCIsbz10LmZwc3x8MzAsYT10LmJsZW5kTW9kZTtsZXQgcz10Lmxlbmd0aHx8LTE7Y29uc3QgbD10LmhpZXJhcmNoeXx8W107Zm9yKGxldCB0PTA7dDxsLmxlbmd0aDt0Kyspe2NvbnN0IHI9bFt0XS5rZXlzO2lmKHImJjAhPT1yLmxlbmd0aClpZihyWzBdLm1vcnBoVGFyZ2V0cyl7Y29uc3QgdD17fTtsZXQgZTtmb3IoZT0wO2U8ci5sZW5ndGg7ZSsrKWlmKHJbZV0ubW9ycGhUYXJnZXRzKWZvcihsZXQgbj0wO248cltlXS5tb3JwaFRhcmdldHMubGVuZ3RoO24rKyl0W3JbZV0ubW9ycGhUYXJnZXRzW25dXT0tMTtmb3IoY29uc3QgbiBpbiB0KXtjb25zdCB0PVtdLG89W107Zm9yKGxldCBpPTA7aSE9PXJbZV0ubW9ycGhUYXJnZXRzLmxlbmd0aDsrK2kpe2NvbnN0IGk9cltlXTt0LnB1c2goaS50aW1lKSxvLnB1c2goaS5tb3JwaFRhcmdldD09PW4/MTowKX1pLnB1c2gobmV3IGVuZSgiLm1vcnBoVGFyZ2V0SW5mbHVlbmNlWyIrbisiXSIsdCxvKSl9cz10Lmxlbmd0aCoob3x8MSl9ZWxzZXtjb25zdCBvPSIuYm9uZXNbIitlW3RdLm5hbWUrIl0iO24ob25lLG8rIi5wb3NpdGlvbiIsciwicG9zIixpKSxuKGluZSxvKyIucXVhdGVybmlvbiIsciwicm90IixpKSxuKG9uZSxvKyIuc2NhbGUiLHIsInNjbCIsaSl9fWlmKDA9PT1pLmxlbmd0aClyZXR1cm4gbnVsbDtyZXR1cm4gbmV3IHRoaXMocixzLGksYSl9cmVzZXREdXJhdGlvbigpe2xldCB0PTA7Zm9yKGxldCBlPTAsbj10aGlzLnRyYWNrcy5sZW5ndGg7ZSE9PW47KytlKXtjb25zdCBuPXRoaXMudHJhY2tzW2VdO3Q9TWF0aC5tYXgodCxuLnRpbWVzW24udGltZXMubGVuZ3RoLTFdKX1yZXR1cm4gdGhpcy5kdXJhdGlvbj10LHRoaXN9dHJpbSgpe2ZvcihsZXQgdD0wO3Q8dGhpcy50cmFja3MubGVuZ3RoO3QrKyl0aGlzLnRyYWNrc1t0XS50cmltKDAsdGhpcy5kdXJhdGlvbik7cmV0dXJuIHRoaXN9dmFsaWRhdGUoKXtsZXQgdD0hMDtmb3IobGV0IGU9MDtlPHRoaXMudHJhY2tzLmxlbmd0aDtlKyspdD10JiZ0aGlzLnRyYWNrc1tlXS52YWxpZGF0ZSgpO3JldHVybiB0fW9wdGltaXplKCl7Zm9yKGxldCB0PTA7dDx0aGlzLnRyYWNrcy5sZW5ndGg7dCsrKXRoaXMudHJhY2tzW3RdLm9wdGltaXplKCk7cmV0dXJuIHRoaXN9Y2xvbmUoKXtjb25zdCB0PVtdO2ZvcihsZXQgZT0wO2U8dGhpcy50cmFja3MubGVuZ3RoO2UrKyl0LnB1c2godGhpcy50cmFja3NbZV0uY2xvbmUoKSk7cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKHRoaXMubmFtZSx0aGlzLmR1cmF0aW9uLHQsdGhpcy5ibGVuZE1vZGUpfXRvSlNPTigpe3JldHVybiB0aGlzLmNvbnN0cnVjdG9yLnRvSlNPTih0aGlzKX19ZnVuY3Rpb24gc25lKHQpe2lmKHZvaWQgMD09PXQudHlwZSl0aHJvdyBuZXcgRXJyb3IoIlRIUkVFLktleWZyYW1lVHJhY2s6IHRyYWNrIHR5cGUgdW5kZWZpbmVkLCBjYW4gbm90IHBhcnNlIik7Y29uc3QgZT0oZnVuY3Rpb24gbih0KXtzd2l0Y2godC50b0xvd2VyQ2FzZSgpKXtjYXNlInNjYWxhciI6Y2FzZSJkb3VibGUiOmNhc2UiZmxvYXQiOmNhc2UibnVtYmVyIjpjYXNlImludGVnZXIiOnJldHVybiBlbmU7Y2FzZSJ2ZWN0b3IiOmNhc2UidmVjdG9yMiI6Y2FzZSJ2ZWN0b3IzIjpjYXNlInZlY3RvcjQiOnJldHVybiBvbmU7Y2FzZSJjb2xvciI6cmV0dXJuIHRuZTtjYXNlInF1YXRlcm5pb24iOnJldHVybiBpbmU7Y2FzZSJib29sIjpjYXNlImJvb2xlYW4iOnJldHVybiBRZWU7Y2FzZSJzdHJpbmciOnJldHVybiBybmV9dGhyb3cgbmV3IEVycm9yKCJUSFJFRS5LZXlmcmFtZVRyYWNrOiBVbnN1cHBvcnRlZCB0eXBlTmFtZTogIit0KX0pKHQudHlwZSk7aWYodm9pZCAwPT09dC50aW1lcyl7Y29uc3QgZT1bXSxuPVtdO1llZS5mbGF0dGVuSlNPTih0LmtleXMsZSxuLCJ2YWx1ZSIpLHQudGltZXM9ZSx0LnZhbHVlcz1ufXJldHVybiB2b2lkIDAhPT1lLnBhcnNlP2UucGFyc2UodCk6bmV3IGUodC5uYW1lLHQudGltZXMsdC52YWx1ZXMsdC5pbnRlcnBvbGF0aW9uKX1jb25zdCBsbmU9e2VuYWJsZWQ6ITEsZmlsZXM6e30sYWRkOmZ1bmN0aW9uKHQsZSl7ITEhPT10aGlzLmVuYWJsZWQmJih0aGlzLmZpbGVzW3RdPWUpfSxnZXQ6ZnVuY3Rpb24odCl7aWYoITEhPT10aGlzLmVuYWJsZWQpcmV0dXJuIHRoaXMuZmlsZXNbdF19LHJlbW92ZTpmdW5jdGlvbih0KXtkZWxldGUgdGhpcy5maWxlc1t0XX0sY2xlYXI6ZnVuY3Rpb24oKXt0aGlzLmZpbGVzPXt9fX07Y2xhc3MgY25le2NvbnN0cnVjdG9yKHQsZSxuKXtjb25zdCBpPXRoaXM7bGV0IHIsbz0hMSxhPTAscz0wO2NvbnN0IGw9W107dGhpcy5vblN0YXJ0PXZvaWQgMCx0aGlzLm9uTG9hZD10LHRoaXMub25Qcm9ncmVzcz1lLHRoaXMub25FcnJvcj1uLHRoaXMuaXRlbVN0YXJ0PWZ1bmN0aW9uKHQpe3MrKywhMT09PW8mJnZvaWQgMCE9PWkub25TdGFydCYmaS5vblN0YXJ0KHQsYSxzKSxvPSEwfSx0aGlzLml0ZW1FbmQ9ZnVuY3Rpb24odCl7YSsrLHZvaWQgMCE9PWkub25Qcm9ncmVzcyYmaS5vblByb2dyZXNzKHQsYSxzKSxhPT09cyYmKG89ITEsdm9pZCAwIT09aS5vbkxvYWQmJmkub25Mb2FkKCkpfSx0aGlzLml0ZW1FcnJvcj1mdW5jdGlvbih0KXt2b2lkIDAhPT1pLm9uRXJyb3ImJmkub25FcnJvcih0KX0sdGhpcy5yZXNvbHZlVVJMPWZ1bmN0aW9uKHQpe3JldHVybiByP3IodCk6dH0sdGhpcy5zZXRVUkxNb2RpZmllcj1mdW5jdGlvbih0KXtyZXR1cm4gcj10LHRoaXN9LHRoaXMuYWRkSGFuZGxlcj1mdW5jdGlvbih0LGUpe3JldHVybiBsLnB1c2godCxlKSx0aGlzfSx0aGlzLnJlbW92ZUhhbmRsZXI9ZnVuY3Rpb24odCl7Y29uc3QgZT1sLmluZGV4T2YodCk7cmV0dXJuLTEhPT1lJiZsLnNwbGljZShlLDIpLHRoaXN9LHRoaXMuZ2V0SGFuZGxlcj1mdW5jdGlvbih0KXtmb3IobGV0IGU9MCxuPWwubGVuZ3RoO2U8bjtlKz0yKXtjb25zdCBuPWxbZV0saT1sW2UrMV07aWYobi5nbG9iYWwmJihuLmxhc3RJbmRleD0wKSxuLnRlc3QodCkpcmV0dXJuIGl9cmV0dXJuIG51bGx9fX1jb25zdCB1bmU9bmV3IGNuZTtjbGFzcyBobmV7Y29uc3RydWN0b3IodCl7dGhpcy5tYW5hZ2VyPXZvaWQgMCE9PXQ/dDp1bmUsdGhpcy5jcm9zc09yaWdpbj0iYW5vbnltb3VzIix0aGlzLndpdGhDcmVkZW50aWFscz0hMSx0aGlzLnBhdGg9IiIsdGhpcy5yZXNvdXJjZVBhdGg9IiIsdGhpcy5yZXF1ZXN0SGVhZGVyPXt9fWxvYWQoKXt9bG9hZEFzeW5jKHQsZSl7Y29uc3Qgbj10aGlzO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24oaSxyKXtuLmxvYWQodCxpLGUscil9KSl9cGFyc2UoKXt9c2V0Q3Jvc3NPcmlnaW4odCl7cmV0dXJuIHRoaXMuY3Jvc3NPcmlnaW49dCx0aGlzfXNldFdpdGhDcmVkZW50aWFscyh0KXtyZXR1cm4gdGhpcy53aXRoQ3JlZGVudGlhbHM9dCx0aGlzfXNldFBhdGgodCl7cmV0dXJuIHRoaXMucGF0aD10LHRoaXN9c2V0UmVzb3VyY2VQYXRoKHQpe3JldHVybiB0aGlzLnJlc291cmNlUGF0aD10LHRoaXN9c2V0UmVxdWVzdEhlYWRlcih0KXtyZXR1cm4gdGhpcy5yZXF1ZXN0SGVhZGVyPXQsdGhpc319Y29uc3QgZG5lPXt9O2NsYXNzIHBuZSBleHRlbmRzIGhuZXtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KX1sb2FkKHQsZSxuLGkpe3ZvaWQgMD09PXQmJih0PSIiKSx2b2lkIDAhPT10aGlzLnBhdGgmJih0PXRoaXMucGF0aCt0KSx0PXRoaXMubWFuYWdlci5yZXNvbHZlVVJMKHQpO2NvbnN0IHI9dGhpcyxvPWxuZS5nZXQodCk7aWYodm9pZCAwIT09bylyZXR1cm4gci5tYW5hZ2VyLml0ZW1TdGFydCh0KSxzZXRUaW1lb3V0KChmdW5jdGlvbigpe2UmJmUobyksci5tYW5hZ2VyLml0ZW1FbmQodCl9KSwwKSxvO2lmKHZvaWQgMCE9PWRuZVt0XSlyZXR1cm4gdm9pZCBkbmVbdF0ucHVzaCh7b25Mb2FkOmUsb25Qcm9ncmVzczpuLG9uRXJyb3I6aX0pO2NvbnN0IGE9dC5tYXRjaCgvXmRhdGE6KC4qPykoO2Jhc2U2NCk/LCguKikkLyk7bGV0IHM7aWYoYSl7Y29uc3Qgbj1hWzFdLG89ISFhWzJdO2xldCBzPWFbM107cz1kZWNvZGVVUklDb21wb25lbnQocyksbyYmKHM9YXRvYihzKSk7dHJ5e2xldCBpO2NvbnN0IG89KHRoaXMucmVzcG9uc2VUeXBlfHwiIikudG9Mb3dlckNhc2UoKTtzd2l0Y2gobyl7Y2FzZSJhcnJheWJ1ZmZlciI6Y2FzZSJibG9iIjpjb25zdCB0PW5ldyBVaW50OEFycmF5KHMubGVuZ3RoKTtmb3IobGV0IGU9MDtlPHMubGVuZ3RoO2UrKyl0W2VdPXMuY2hhckNvZGVBdChlKTtpPSJibG9iIj09PW8/bmV3IEJsb2IoW3QuYnVmZmVyXSx7dHlwZTpufSk6dC5idWZmZXI7YnJlYWs7Y2FzZSJkb2N1bWVudCI6Y29uc3QgZT1uZXcgRE9NUGFyc2VyO2k9ZS5wYXJzZUZyb21TdHJpbmcocyxuKTticmVhaztjYXNlImpzb24iOmk9SlNPTi5wYXJzZShzKTticmVhaztkZWZhdWx0Omk9c31zZXRUaW1lb3V0KChmdW5jdGlvbigpe2UmJmUoaSksci5tYW5hZ2VyLml0ZW1FbmQodCl9KSwwKX1jYXRjaChlKXtzZXRUaW1lb3V0KChmdW5jdGlvbigpe2kmJmkoZSksci5tYW5hZ2VyLml0ZW1FcnJvcih0KSxyLm1hbmFnZXIuaXRlbUVuZCh0KX0pLDApfX1lbHNle2RuZVt0XT1bXSxkbmVbdF0ucHVzaCh7b25Mb2FkOmUsb25Qcm9ncmVzczpuLG9uRXJyb3I6aX0pLHM9bmV3IFhNTEh0dHBSZXF1ZXN0LHMub3BlbigiR0VUIix0LCEwKSxzLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLChmdW5jdGlvbihlKXtjb25zdCBuPXRoaXMucmVzcG9uc2UsaT1kbmVbdF07aWYoZGVsZXRlIGRuZVt0XSwyMDA9PT10aGlzLnN0YXR1c3x8MD09PXRoaXMuc3RhdHVzKXswPT09dGhpcy5zdGF0dXMmJmNvbnNvbGUud2FybigiVEhSRUUuRmlsZUxvYWRlcjogSFRUUCBTdGF0dXMgMCByZWNlaXZlZC4iKSxsbmUuYWRkKHQsbik7Zm9yKGxldCB0PTAsZT1pLmxlbmd0aDt0PGU7dCsrKXtjb25zdCBlPWlbdF07ZS5vbkxvYWQmJmUub25Mb2FkKG4pfXIubWFuYWdlci5pdGVtRW5kKHQpfWVsc2V7Zm9yKGxldCB0PTAsbj1pLmxlbmd0aDt0PG47dCsrKXtjb25zdCBuPWlbdF07bi5vbkVycm9yJiZuLm9uRXJyb3IoZSl9ci5tYW5hZ2VyLml0ZW1FcnJvcih0KSxyLm1hbmFnZXIuaXRlbUVuZCh0KX19KSwhMSkscy5hZGRFdmVudExpc3RlbmVyKCJwcm9ncmVzcyIsKGZ1bmN0aW9uKGUpe2NvbnN0IG49ZG5lW3RdO2ZvcihsZXQgdD0wLGk9bi5sZW5ndGg7dDxpO3QrKyl7Y29uc3QgaT1uW3RdO2kub25Qcm9ncmVzcyYmaS5vblByb2dyZXNzKGUpfX0pLCExKSxzLmFkZEV2ZW50TGlzdGVuZXIoImVycm9yIiwoZnVuY3Rpb24oZSl7Y29uc3Qgbj1kbmVbdF07ZGVsZXRlIGRuZVt0XTtmb3IobGV0IHQ9MCxpPW4ubGVuZ3RoO3Q8aTt0Kyspe2NvbnN0IGk9blt0XTtpLm9uRXJyb3ImJmkub25FcnJvcihlKX1yLm1hbmFnZXIuaXRlbUVycm9yKHQpLHIubWFuYWdlci5pdGVtRW5kKHQpfSksITEpLHMuYWRkRXZlbnRMaXN0ZW5lcigiYWJvcnQiLChmdW5jdGlvbihlKXtjb25zdCBuPWRuZVt0XTtkZWxldGUgZG5lW3RdO2ZvcihsZXQgdD0wLGk9bi5sZW5ndGg7dDxpO3QrKyl7Y29uc3QgaT1uW3RdO2kub25FcnJvciYmaS5vbkVycm9yKGUpfXIubWFuYWdlci5pdGVtRXJyb3IodCksci5tYW5hZ2VyLml0ZW1FbmQodCl9KSwhMSksdm9pZCAwIT09dGhpcy5yZXNwb25zZVR5cGUmJihzLnJlc3BvbnNlVHlwZT10aGlzLnJlc3BvbnNlVHlwZSksdm9pZCAwIT09dGhpcy53aXRoQ3JlZGVudGlhbHMmJihzLndpdGhDcmVkZW50aWFscz10aGlzLndpdGhDcmVkZW50aWFscykscy5vdmVycmlkZU1pbWVUeXBlJiZzLm92ZXJyaWRlTWltZVR5cGUodm9pZCAwIT09dGhpcy5taW1lVHlwZT90aGlzLm1pbWVUeXBlOiJ0ZXh0L3BsYWluIik7Zm9yKGNvbnN0IHQgaW4gdGhpcy5yZXF1ZXN0SGVhZGVyKXMuc2V0UmVxdWVzdEhlYWRlcih0LHRoaXMucmVxdWVzdEhlYWRlclt0XSk7cy5zZW5kKG51bGwpfXJldHVybiByLm1hbmFnZXIuaXRlbVN0YXJ0KHQpLHN9c2V0UmVzcG9uc2VUeXBlKHQpe3JldHVybiB0aGlzLnJlc3BvbnNlVHlwZT10LHRoaXN9c2V0TWltZVR5cGUodCl7cmV0dXJuIHRoaXMubWltZVR5cGU9dCx0aGlzfX1jbGFzcyBmbmUgZXh0ZW5kcyBobmV7Y29uc3RydWN0b3IodCl7c3VwZXIodCl9bG9hZCh0LGUsbixpKXt2b2lkIDAhPT10aGlzLnBhdGgmJih0PXRoaXMucGF0aCt0KSx0PXRoaXMubWFuYWdlci5yZXNvbHZlVVJMKHQpO2NvbnN0IHI9dGhpcyxvPWxuZS5nZXQodCk7aWYodm9pZCAwIT09bylyZXR1cm4gci5tYW5hZ2VyLml0ZW1TdGFydCh0KSxzZXRUaW1lb3V0KChmdW5jdGlvbigpe2UmJmUobyksci5tYW5hZ2VyLml0ZW1FbmQodCl9KSwwKSxvO2NvbnN0IGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiwiaW1nIik7ZnVuY3Rpb24gcygpe2EucmVtb3ZlRXZlbnRMaXN0ZW5lcigibG9hZCIscywhMSksYS5yZW1vdmVFdmVudExpc3RlbmVyKCJlcnJvciIsbCwhMSksbG5lLmFkZCh0LHRoaXMpLGUmJmUodGhpcyksci5tYW5hZ2VyLml0ZW1FbmQodCl9ZnVuY3Rpb24gbChlKXthLnJlbW92ZUV2ZW50TGlzdGVuZXIoImxvYWQiLHMsITEpLGEucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZXJyb3IiLGwsITEpLGkmJmkoZSksci5tYW5hZ2VyLml0ZW1FcnJvcih0KSxyLm1hbmFnZXIuaXRlbUVuZCh0KX1yZXR1cm4gYS5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixzLCExKSxhLmFkZEV2ZW50TGlzdGVuZXIoImVycm9yIixsLCExKSwiZGF0YToiIT09dC5zdWJzdHIoMCw1KSYmdm9pZCAwIT09dGhpcy5jcm9zc09yaWdpbiYmKGEuY3Jvc3NPcmlnaW49dGhpcy5jcm9zc09yaWdpbiksci5tYW5hZ2VyLml0ZW1TdGFydCh0KSxhLnNyYz10LGF9fWNsYXNzIG1uZSBleHRlbmRzIGhuZXtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KX1sb2FkKHQsZSxuLGkpe2NvbnN0IHI9bmV3IHM2dCxvPW5ldyBmbmUodGhpcy5tYW5hZ2VyKTtvLnNldENyb3NzT3JpZ2luKHRoaXMuY3Jvc3NPcmlnaW4pLG8uc2V0UGF0aCh0aGlzLnBhdGgpO2xldCBhPTA7ZnVuY3Rpb24gcyhuKXtvLmxvYWQodFtuXSwoZnVuY3Rpb24odCl7ci5pbWFnZXNbbl09dCxhKyssNj09PWEmJihyLm5lZWRzVXBkYXRlPSEwLGUmJmUocikpfSksdm9pZCAwLGkpfWZvcihsZXQgZT0wO2U8dC5sZW5ndGg7KytlKXMoZSk7cmV0dXJuIHJ9fWNsYXNzIGduZSBleHRlbmRzIGhuZXtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KX1sb2FkKHQsZSxuLGkpe2NvbnN0IHI9dGhpcyxvPW5ldyBIN3QsYT1uZXcgcG5lKHRoaXMubWFuYWdlcik7cmV0dXJuIGEuc2V0UmVzcG9uc2VUeXBlKCJhcnJheWJ1ZmZlciIpLGEuc2V0UmVxdWVzdEhlYWRlcih0aGlzLnJlcXVlc3RIZWFkZXIpLGEuc2V0UGF0aCh0aGlzLnBhdGgpLGEuc2V0V2l0aENyZWRlbnRpYWxzKHIud2l0aENyZWRlbnRpYWxzKSxhLmxvYWQodCwoZnVuY3Rpb24odCl7Y29uc3Qgbj1yLnBhcnNlKHQpO24mJih2b2lkIDAhPT1uLmltYWdlP28uaW1hZ2U9bi5pbWFnZTp2b2lkIDAhPT1uLmRhdGEmJihvLmltYWdlLndpZHRoPW4ud2lkdGgsby5pbWFnZS5oZWlnaHQ9bi5oZWlnaHQsby5pbWFnZS5kYXRhPW4uZGF0YSksby53cmFwUz12b2lkIDAhPT1uLndyYXBTP24ud3JhcFM6bDJ0LG8ud3JhcFQ9dm9pZCAwIT09bi53cmFwVD9uLndyYXBUOmwydCxvLm1hZ0ZpbHRlcj12b2lkIDAhPT1uLm1hZ0ZpbHRlcj9uLm1hZ0ZpbHRlcjpwMnQsby5taW5GaWx0ZXI9dm9pZCAwIT09bi5taW5GaWx0ZXI/bi5taW5GaWx0ZXI6cDJ0LG8uYW5pc290cm9weT12b2lkIDAhPT1uLmFuaXNvdHJvcHk/bi5hbmlzb3Ryb3B5OjEsdm9pZCAwIT09bi5lbmNvZGluZyYmKG8uZW5jb2Rpbmc9bi5lbmNvZGluZyksdm9pZCAwIT09bi5mbGlwWSYmKG8uZmxpcFk9bi5mbGlwWSksdm9pZCAwIT09bi5mb3JtYXQmJihvLmZvcm1hdD1uLmZvcm1hdCksdm9pZCAwIT09bi50eXBlJiYoby50eXBlPW4udHlwZSksdm9pZCAwIT09bi5taXBtYXBzJiYoby5taXBtYXBzPW4ubWlwbWFwcyxvLm1pbkZpbHRlcj1tMnQpLDE9PT1uLm1pcG1hcENvdW50JiYoby5taW5GaWx0ZXI9cDJ0KSx2b2lkIDAhPT1uLmdlbmVyYXRlTWlwbWFwcyYmKG8uZ2VuZXJhdGVNaXBtYXBzPW4uZ2VuZXJhdGVNaXBtYXBzKSxvLm5lZWRzVXBkYXRlPSEwLGUmJmUobyxuKSl9KSxuLGkpLG99fWNsYXNzIF9uZSBleHRlbmRzIGhuZXtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KX1sb2FkKHQsZSxuLGkpe2NvbnN0IHI9bmV3IE41dCxvPW5ldyBmbmUodGhpcy5tYW5hZ2VyKTtyZXR1cm4gby5zZXRDcm9zc09yaWdpbih0aGlzLmNyb3NzT3JpZ2luKSxvLnNldFBhdGgodGhpcy5wYXRoKSxvLmxvYWQodCwoZnVuY3Rpb24obil7ci5pbWFnZT1uO2NvbnN0IGk9dC5zZWFyY2goL1wuanBlP2coJHxcPykvaSk+MHx8MD09PXQuc2VhcmNoKC9eZGF0YVw6aW1hZ2VcL2pwZWcvKTtyLmZvcm1hdD1pP3cydDpTMnQsci5uZWVkc1VwZGF0ZT0hMCx2b2lkIDAhPT1lJiZlKHIpfSksbixpKSxyfX1jbGFzcyB5bmUgZXh0ZW5kcyBUdGV7Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMudHlwZT0iQ3VydmVQYXRoIix0aGlzLmN1cnZlcz1bXSx0aGlzLmF1dG9DbG9zZT0hMX1hZGQodCl7dGhpcy5jdXJ2ZXMucHVzaCh0KX1jbG9zZVBhdGgoKXtjb25zdCB0PXRoaXMuY3VydmVzWzBdLmdldFBvaW50KDApLGU9dGhpcy5jdXJ2ZXNbdGhpcy5jdXJ2ZXMubGVuZ3RoLTFdLmdldFBvaW50KDEpO3QuZXF1YWxzKGUpfHx0aGlzLmN1cnZlcy5wdXNoKG5ldyBGdGUoZSx0KSl9Z2V0UG9pbnQodCl7Y29uc3QgZT10KnRoaXMuZ2V0TGVuZ3RoKCksbj10aGlzLmdldEN1cnZlTGVuZ3RocygpO2xldCBpPTA7Zm9yKDtpPG4ubGVuZ3RoOyl7aWYobltpXT49ZSl7Y29uc3QgdD1uW2ldLWUscj10aGlzLmN1cnZlc1tpXSxvPXIuZ2V0TGVuZ3RoKCk7cmV0dXJuIHIuZ2V0UG9pbnRBdCgwPT09bz8wOjEtdC9vKX1pKyt9cmV0dXJuIG51bGx9Z2V0TGVuZ3RoKCl7Y29uc3QgdD10aGlzLmdldEN1cnZlTGVuZ3RocygpO3JldHVybiB0W3QubGVuZ3RoLTFdfXVwZGF0ZUFyY0xlbmd0aHMoKXt0aGlzLm5lZWRzVXBkYXRlPSEwLHRoaXMuY2FjaGVMZW5ndGhzPW51bGwsdGhpcy5nZXRDdXJ2ZUxlbmd0aHMoKX1nZXRDdXJ2ZUxlbmd0aHMoKXtpZih0aGlzLmNhY2hlTGVuZ3RocyYmdGhpcy5jYWNoZUxlbmd0aHMubGVuZ3RoPT09dGhpcy5jdXJ2ZXMubGVuZ3RoKXJldHVybiB0aGlzLmNhY2hlTGVuZ3Rocztjb25zdCB0PVtdO2xldCBlPTA7Zm9yKGxldCBuPTAsaT10aGlzLmN1cnZlcy5sZW5ndGg7bjxpO24rKyllKz10aGlzLmN1cnZlc1tuXS5nZXRMZW5ndGgoKSx0LnB1c2goZSk7cmV0dXJuIHRoaXMuY2FjaGVMZW5ndGhzPXQsdH1nZXRTcGFjZWRQb2ludHModD00MCl7Y29uc3QgZT1bXTtmb3IobGV0IG49MDtuPD10O24rKyllLnB1c2godGhpcy5nZXRQb2ludChuL3QpKTtyZXR1cm4gdGhpcy5hdXRvQ2xvc2UmJmUucHVzaChlWzBdKSxlfWdldFBvaW50cyh0PTEyKXtjb25zdCBlPVtdO2xldCBuO2ZvcihsZXQgaT0wLHI9dGhpcy5jdXJ2ZXM7aTxyLmxlbmd0aDtpKyspe2NvbnN0IG89cltpXSxhPW8uZ2V0UG9pbnRzKG8mJm8uaXNFbGxpcHNlQ3VydmU/Mip0Om8mJihvLmlzTGluZUN1cnZlfHxvLmlzTGluZUN1cnZlMyk/MTpvJiZvLmlzU3BsaW5lQ3VydmU/dCpvLnBvaW50cy5sZW5ndGg6dCk7Zm9yKGxldCB0PTA7dDxhLmxlbmd0aDt0Kyspe2NvbnN0IGk9YVt0XTtuJiZuLmVxdWFscyhpKXx8KGUucHVzaChpKSxuPWkpfX1yZXR1cm4gdGhpcy5hdXRvQ2xvc2UmJmUubGVuZ3RoPjEmJiFlW2UubGVuZ3RoLTFdLmVxdWFscyhlWzBdKSYmZS5wdXNoKGVbMF0pLGV9Y29weSh0KXtzdXBlci5jb3B5KHQpLHRoaXMuY3VydmVzPVtdO2ZvcihsZXQgZT0wLG49dC5jdXJ2ZXMubGVuZ3RoO2U8bjtlKyspe3RoaXMuY3VydmVzLnB1c2godC5jdXJ2ZXNbZV0uY2xvbmUoKSl9cmV0dXJuIHRoaXMuYXV0b0Nsb3NlPXQuYXV0b0Nsb3NlLHRoaXN9dG9KU09OKCl7Y29uc3QgdD1zdXBlci50b0pTT04oKTt0LmF1dG9DbG9zZT10aGlzLmF1dG9DbG9zZSx0LmN1cnZlcz1bXTtmb3IobGV0IGU9MCxuPXRoaXMuY3VydmVzLmxlbmd0aDtlPG47ZSsrKXt0LmN1cnZlcy5wdXNoKHRoaXMuY3VydmVzW2VdLnRvSlNPTigpKX1yZXR1cm4gdH1mcm9tSlNPTih0KXtzdXBlci5mcm9tSlNPTih0KSx0aGlzLmF1dG9DbG9zZT10LmF1dG9DbG9zZSx0aGlzLmN1cnZlcz1bXTtmb3IobGV0IGU9MCxuPXQuY3VydmVzLmxlbmd0aDtlPG47ZSsrKXtjb25zdCBuPXQuY3VydmVzW2VdO3RoaXMuY3VydmVzLnB1c2goKG5ldyBXdGVbbi50eXBlXSkuZnJvbUpTT04obikpfXJldHVybiB0aGlzfX1jbGFzcyB2bmUgZXh0ZW5kcyB5bmV7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLnR5cGU9IlBhdGgiLHRoaXMuY3VycmVudFBvaW50PW5ldyBDNXQsdCYmdGhpcy5zZXRGcm9tUG9pbnRzKHQpfXNldEZyb21Qb2ludHModCl7dGhpcy5tb3ZlVG8odFswXS54LHRbMF0ueSk7Zm9yKGxldCBlPTEsbj10Lmxlbmd0aDtlPG47ZSsrKXRoaXMubGluZVRvKHRbZV0ueCx0W2VdLnkpO3JldHVybiB0aGlzfW1vdmVUbyh0LGUpe3JldHVybiB0aGlzLmN1cnJlbnRQb2ludC5zZXQodCxlKSx0aGlzfWxpbmVUbyh0LGUpe2NvbnN0IG49bmV3IEZ0ZSh0aGlzLmN1cnJlbnRQb2ludC5jbG9uZSgpLG5ldyBDNXQodCxlKSk7cmV0dXJuIHRoaXMuY3VydmVzLnB1c2gobiksdGhpcy5jdXJyZW50UG9pbnQuc2V0KHQsZSksdGhpc31xdWFkcmF0aWNDdXJ2ZVRvKHQsZSxuLGkpe2NvbnN0IHI9bmV3IFV0ZSh0aGlzLmN1cnJlbnRQb2ludC5jbG9uZSgpLG5ldyBDNXQodCxlKSxuZXcgQzV0KG4saSkpO3JldHVybiB0aGlzLmN1cnZlcy5wdXNoKHIpLHRoaXMuY3VycmVudFBvaW50LnNldChuLGkpLHRoaXN9YmV6aWVyQ3VydmVUbyh0LGUsbixpLHIsbyl7Y29uc3QgYT1uZXcgQnRlKHRoaXMuY3VycmVudFBvaW50LmNsb25lKCksbmV3IEM1dCh0LGUpLG5ldyBDNXQobixpKSxuZXcgQzV0KHIsbykpO3JldHVybiB0aGlzLmN1cnZlcy5wdXNoKGEpLHRoaXMuY3VycmVudFBvaW50LnNldChyLG8pLHRoaXN9c3BsaW5lVGhydSh0KXtjb25zdCBlPVt0aGlzLmN1cnJlbnRQb2ludC5jbG9uZSgpXS5jb25jYXQodCksbj1uZXcgR3RlKGUpO3JldHVybiB0aGlzLmN1cnZlcy5wdXNoKG4pLHRoaXMuY3VycmVudFBvaW50LmNvcHkodFt0Lmxlbmd0aC0xXSksdGhpc31hcmModCxlLG4saSxyLG8pe3JldHVybiB0aGlzLmFic2FyYyh0K3RoaXMuY3VycmVudFBvaW50LngsZSt0aGlzLmN1cnJlbnRQb2ludC55LG4saSxyLG8pLHRoaXN9YWJzYXJjKHQsZSxuLGkscixvKXtyZXR1cm4gdGhpcy5hYnNlbGxpcHNlKHQsZSxuLG4saSxyLG8pLHRoaXN9ZWxsaXBzZSh0LGUsbixpLHIsbyxhLHMpe3JldHVybiB0aGlzLmFic2VsbGlwc2UodCt0aGlzLmN1cnJlbnRQb2ludC54LGUrdGhpcy5jdXJyZW50UG9pbnQueSxuLGkscixvLGEscyksdGhpc31hYnNlbGxpcHNlKHQsZSxuLGkscixvLGEscyl7Y29uc3QgbD1uZXcgQ3RlKHQsZSxuLGkscixvLGEscyk7aWYodGhpcy5jdXJ2ZXMubGVuZ3RoPjApe2NvbnN0IHQ9bC5nZXRQb2ludCgwKTt0LmVxdWFscyh0aGlzLmN1cnJlbnRQb2ludCl8fHRoaXMubGluZVRvKHQueCx0LnkpfXRoaXMuY3VydmVzLnB1c2gobCk7Y29uc3QgYz1sLmdldFBvaW50KDEpO3JldHVybiB0aGlzLmN1cnJlbnRQb2ludC5jb3B5KGMpLHRoaXN9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmN1cnJlbnRQb2ludC5jb3B5KHQuY3VycmVudFBvaW50KSx0aGlzfXRvSlNPTigpe2NvbnN0IHQ9c3VwZXIudG9KU09OKCk7cmV0dXJuIHQuY3VycmVudFBvaW50PXRoaXMuY3VycmVudFBvaW50LnRvQXJyYXkoKSx0fWZyb21KU09OKHQpe3JldHVybiBzdXBlci5mcm9tSlNPTih0KSx0aGlzLmN1cnJlbnRQb2ludC5mcm9tQXJyYXkodC5jdXJyZW50UG9pbnQpLHRoaXN9fWNsYXNzIGJuZSBleHRlbmRzIHZuZXtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KSx0aGlzLnV1aWQ9YTV0KCksdGhpcy50eXBlPSJTaGFwZSIsdGhpcy5ob2xlcz1bXX1nZXRQb2ludHNIb2xlcyh0KXtjb25zdCBlPVtdO2ZvcihsZXQgbj0wLGk9dGhpcy5ob2xlcy5sZW5ndGg7bjxpO24rKyllW25dPXRoaXMuaG9sZXNbbl0uZ2V0UG9pbnRzKHQpO3JldHVybiBlfWV4dHJhY3RQb2ludHModCl7cmV0dXJue3NoYXBlOnRoaXMuZ2V0UG9pbnRzKHQpLGhvbGVzOnRoaXMuZ2V0UG9pbnRzSG9sZXModCl9fWNvcHkodCl7c3VwZXIuY29weSh0KSx0aGlzLmhvbGVzPVtdO2ZvcihsZXQgZT0wLG49dC5ob2xlcy5sZW5ndGg7ZTxuO2UrKyl7dGhpcy5ob2xlcy5wdXNoKHQuaG9sZXNbZV0uY2xvbmUoKSl9cmV0dXJuIHRoaXN9dG9KU09OKCl7Y29uc3QgdD1zdXBlci50b0pTT04oKTt0LnV1aWQ9dGhpcy51dWlkLHQuaG9sZXM9W107Zm9yKGxldCBlPTAsbj10aGlzLmhvbGVzLmxlbmd0aDtlPG47ZSsrKXt0LmhvbGVzLnB1c2godGhpcy5ob2xlc1tlXS50b0pTT04oKSl9cmV0dXJuIHR9ZnJvbUpTT04odCl7c3VwZXIuZnJvbUpTT04odCksdGhpcy51dWlkPXQudXVpZCx0aGlzLmhvbGVzPVtdO2ZvcihsZXQgZT0wLG49dC5ob2xlcy5sZW5ndGg7ZTxuO2UrKyl7Y29uc3Qgbj10LmhvbGVzW2VdO3RoaXMuaG9sZXMucHVzaCgobmV3IHZuZSkuZnJvbUpTT04obikpfXJldHVybiB0aGlzfX1jbGFzcyB4bmUgZXh0ZW5kcyBWM3R7Y29uc3RydWN0b3IodCxlPTEpe3N1cGVyKCksdGhpcy50eXBlPSJMaWdodCIsdGhpcy5jb2xvcj1uZXcgczR0KHQpLHRoaXMuaW50ZW5zaXR5PWV9ZGlzcG9zZSgpe31jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMuY29sb3IuY29weSh0LmNvbG9yKSx0aGlzLmludGVuc2l0eT10LmludGVuc2l0eSx0aGlzfXRvSlNPTih0KXtjb25zdCBlPXN1cGVyLnRvSlNPTih0KTtyZXR1cm4gZS5vYmplY3QuY29sb3I9dGhpcy5jb2xvci5nZXRIZXgoKSxlLm9iamVjdC5pbnRlbnNpdHk9dGhpcy5pbnRlbnNpdHksdm9pZCAwIT09dGhpcy5ncm91bmRDb2xvciYmKGUub2JqZWN0Lmdyb3VuZENvbG9yPXRoaXMuZ3JvdW5kQ29sb3IuZ2V0SGV4KCkpLHZvaWQgMCE9PXRoaXMuZGlzdGFuY2UmJihlLm9iamVjdC5kaXN0YW5jZT10aGlzLmRpc3RhbmNlKSx2b2lkIDAhPT10aGlzLmFuZ2xlJiYoZS5vYmplY3QuYW5nbGU9dGhpcy5hbmdsZSksdm9pZCAwIT09dGhpcy5kZWNheSYmKGUub2JqZWN0LmRlY2F5PXRoaXMuZGVjYXkpLHZvaWQgMCE9PXRoaXMucGVudW1icmEmJihlLm9iamVjdC5wZW51bWJyYT10aGlzLnBlbnVtYnJhKSx2b2lkIDAhPT10aGlzLnNoYWRvdyYmKGUub2JqZWN0LnNoYWRvdz10aGlzLnNoYWRvdy50b0pTT04oKSksZX19eG5lLnByb3RvdHlwZS5pc0xpZ2h0PSEwO2NsYXNzIHduZSBleHRlbmRzIHhuZXtjb25zdHJ1Y3Rvcih0LGUsbil7c3VwZXIodCxuKSx0aGlzLnR5cGU9IkhlbWlzcGhlcmVMaWdodCIsdGhpcy5wb3NpdGlvbi5jb3B5KFYzdC5EZWZhdWx0VXApLHRoaXMudXBkYXRlTWF0cml4KCksdGhpcy5ncm91bmRDb2xvcj1uZXcgczR0KGUpfWNvcHkodCl7cmV0dXJuIHhuZS5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsdCksdGhpcy5ncm91bmRDb2xvci5jb3B5KHQuZ3JvdW5kQ29sb3IpLHRoaXN9fXduZS5wcm90b3R5cGUuaXNIZW1pc3BoZXJlTGlnaHQ9ITA7Y29uc3QgU25lPW5ldyBnM3QsTW5lPW5ldyBINXQsRW5lPW5ldyBINXQ7Y2xhc3MgVG5le2NvbnN0cnVjdG9yKHQpe3RoaXMuY2FtZXJhPXQsdGhpcy5iaWFzPTAsdGhpcy5ub3JtYWxCaWFzPTAsdGhpcy5yYWRpdXM9MSx0aGlzLm1hcFNpemU9bmV3IEM1dCg1MTIsNTEyKSx0aGlzLm1hcD1udWxsLHRoaXMubWFwUGFzcz1udWxsLHRoaXMubWF0cml4PW5ldyBnM3QsdGhpcy5hdXRvVXBkYXRlPSEwLHRoaXMubmVlZHNVcGRhdGU9ITEsdGhpcy5fZnJ1c3R1bT1uZXcgbTZ0LHRoaXMuX2ZyYW1lRXh0ZW50cz1uZXcgQzV0KDEsMSksdGhpcy5fdmlld3BvcnRDb3VudD0xLHRoaXMuX3ZpZXdwb3J0cz1bbmV3IFI1dCgwLDAsMSwxKV19Z2V0Vmlld3BvcnRDb3VudCgpe3JldHVybiB0aGlzLl92aWV3cG9ydENvdW50fWdldEZydXN0dW0oKXtyZXR1cm4gdGhpcy5fZnJ1c3R1bX11cGRhdGVNYXRyaWNlcyh0KXtjb25zdCBlPXRoaXMuY2FtZXJhLG49dGhpcy5tYXRyaXg7TW5lLnNldEZyb21NYXRyaXhQb3NpdGlvbih0Lm1hdHJpeFdvcmxkKSxlLnBvc2l0aW9uLmNvcHkoTW5lKSxFbmUuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKHQudGFyZ2V0Lm1hdHJpeFdvcmxkKSxlLmxvb2tBdChFbmUpLGUudXBkYXRlTWF0cml4V29ybGQoKSxTbmUubXVsdGlwbHlNYXRyaWNlcyhlLnByb2plY3Rpb25NYXRyaXgsZS5tYXRyaXhXb3JsZEludmVyc2UpLHRoaXMuX2ZydXN0dW0uc2V0RnJvbVByb2plY3Rpb25NYXRyaXgoU25lKSxuLnNldCguNSwwLDAsLjUsMCwuNSwwLC41LDAsMCwuNSwuNSwwLDAsMCwxKSxuLm11bHRpcGx5KGUucHJvamVjdGlvbk1hdHJpeCksbi5tdWx0aXBseShlLm1hdHJpeFdvcmxkSW52ZXJzZSl9Z2V0Vmlld3BvcnQodCl7cmV0dXJuIHRoaXMuX3ZpZXdwb3J0c1t0XX1nZXRGcmFtZUV4dGVudHMoKXtyZXR1cm4gdGhpcy5fZnJhbWVFeHRlbnRzfWRpc3Bvc2UoKXt0aGlzLm1hcCYmdGhpcy5tYXAuZGlzcG9zZSgpLHRoaXMubWFwUGFzcyYmdGhpcy5tYXBQYXNzLmRpc3Bvc2UoKX1jb3B5KHQpe3JldHVybiB0aGlzLmNhbWVyYT10LmNhbWVyYS5jbG9uZSgpLHRoaXMuYmlhcz10LmJpYXMsdGhpcy5yYWRpdXM9dC5yYWRpdXMsdGhpcy5tYXBTaXplLmNvcHkodC5tYXBTaXplKSx0aGlzfWNsb25lKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMpfXRvSlNPTigpe2NvbnN0IHQ9e307cmV0dXJuIDAhPT10aGlzLmJpYXMmJih0LmJpYXM9dGhpcy5iaWFzKSwwIT09dGhpcy5ub3JtYWxCaWFzJiYodC5ub3JtYWxCaWFzPXRoaXMubm9ybWFsQmlhcyksMSE9PXRoaXMucmFkaXVzJiYodC5yYWRpdXM9dGhpcy5yYWRpdXMpLDUxMj09PXRoaXMubWFwU2l6ZS54JiY1MTI9PT10aGlzLm1hcFNpemUueXx8KHQubWFwU2l6ZT10aGlzLm1hcFNpemUudG9BcnJheSgpKSx0LmNhbWVyYT10aGlzLmNhbWVyYS50b0pTT04oITEpLm9iamVjdCxkZWxldGUgdC5jYW1lcmEubWF0cml4LHR9fWNsYXNzIENuZSBleHRlbmRzIFRuZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKG5ldyByNnQoNTAsMSwuNSw1MDApKSx0aGlzLmZvY3VzPTF9dXBkYXRlTWF0cmljZXModCl7Y29uc3QgZT10aGlzLmNhbWVyYSxuPTIqbzV0KnQuYW5nbGUqdGhpcy5mb2N1cyxpPXRoaXMubWFwU2l6ZS53aWR0aC90aGlzLm1hcFNpemUuaGVpZ2h0LHI9dC5kaXN0YW5jZXx8ZS5mYXI7bj09PWUuZm92JiZpPT09ZS5hc3BlY3QmJnI9PT1lLmZhcnx8KGUuZm92PW4sZS5hc3BlY3Q9aSxlLmZhcj1yLGUudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpKSxzdXBlci51cGRhdGVNYXRyaWNlcyh0KX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMuZm9jdXM9dC5mb2N1cyx0aGlzfX1DbmUucHJvdG90eXBlLmlzU3BvdExpZ2h0U2hhZG93PSEwO2NsYXNzIEFuZSBleHRlbmRzIHhuZXtjb25zdHJ1Y3Rvcih0LGUsbj0wLGk9TWF0aC5QSS8zLHI9MCxvPTEpe3N1cGVyKHQsZSksdGhpcy50eXBlPSJTcG90TGlnaHQiLHRoaXMucG9zaXRpb24uY29weShWM3QuRGVmYXVsdFVwKSx0aGlzLnVwZGF0ZU1hdHJpeCgpLHRoaXMudGFyZ2V0PW5ldyBWM3QsdGhpcy5kaXN0YW5jZT1uLHRoaXMuYW5nbGU9aSx0aGlzLnBlbnVtYnJhPXIsdGhpcy5kZWNheT1vLHRoaXMuc2hhZG93PW5ldyBDbmV9Z2V0IHBvd2VyKCl7cmV0dXJuIHRoaXMuaW50ZW5zaXR5Kk1hdGguUEl9c2V0IHBvd2VyKHQpe3RoaXMuaW50ZW5zaXR5PXQvTWF0aC5QSX1kaXNwb3NlKCl7dGhpcy5zaGFkb3cuZGlzcG9zZSgpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5kaXN0YW5jZT10LmRpc3RhbmNlLHRoaXMuYW5nbGU9dC5hbmdsZSx0aGlzLnBlbnVtYnJhPXQucGVudW1icmEsdGhpcy5kZWNheT10LmRlY2F5LHRoaXMudGFyZ2V0PXQudGFyZ2V0LmNsb25lKCksdGhpcy5zaGFkb3c9dC5zaGFkb3cuY2xvbmUoKSx0aGlzfX1BbmUucHJvdG90eXBlLmlzU3BvdExpZ2h0PSEwO2NvbnN0IGtuZT1uZXcgZzN0LExuZT1uZXcgSDV0LFBuZT1uZXcgSDV0O2NsYXNzIE5uZSBleHRlbmRzIFRuZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKG5ldyByNnQoOTAsMSwuNSw1MDApKSx0aGlzLl9mcmFtZUV4dGVudHM9bmV3IEM1dCg0LDIpLHRoaXMuX3ZpZXdwb3J0Q291bnQ9Nix0aGlzLl92aWV3cG9ydHM9W25ldyBSNXQoMiwxLDEsMSksbmV3IFI1dCgwLDEsMSwxKSxuZXcgUjV0KDMsMSwxLDEpLG5ldyBSNXQoMSwxLDEsMSksbmV3IFI1dCgzLDAsMSwxKSxuZXcgUjV0KDEsMCwxLDEpXSx0aGlzLl9jdWJlRGlyZWN0aW9ucz1bbmV3IEg1dCgxLDAsMCksbmV3IEg1dCgtMSwwLDApLG5ldyBINXQoMCwwLDEpLG5ldyBINXQoMCwwLC0xKSxuZXcgSDV0KDAsMSwwKSxuZXcgSDV0KDAsLTEsMCldLHRoaXMuX2N1YmVVcHM9W25ldyBINXQoMCwxLDApLG5ldyBINXQoMCwxLDApLG5ldyBINXQoMCwxLDApLG5ldyBINXQoMCwxLDApLG5ldyBINXQoMCwwLDEpLG5ldyBINXQoMCwwLC0xKV19dXBkYXRlTWF0cmljZXModCxlPTApe2NvbnN0IG49dGhpcy5jYW1lcmEsaT10aGlzLm1hdHJpeCxyPXQuZGlzdGFuY2V8fG4uZmFyO3IhPT1uLmZhciYmKG4uZmFyPXIsbi51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCkpLExuZS5zZXRGcm9tTWF0cml4UG9zaXRpb24odC5tYXRyaXhXb3JsZCksbi5wb3NpdGlvbi5jb3B5KExuZSksUG5lLmNvcHkobi5wb3NpdGlvbiksUG5lLmFkZCh0aGlzLl9jdWJlRGlyZWN0aW9uc1tlXSksbi51cC5jb3B5KHRoaXMuX2N1YmVVcHNbZV0pLG4ubG9va0F0KFBuZSksbi51cGRhdGVNYXRyaXhXb3JsZCgpLGkubWFrZVRyYW5zbGF0aW9uKC1MbmUueCwtTG5lLnksLUxuZS56KSxrbmUubXVsdGlwbHlNYXRyaWNlcyhuLnByb2plY3Rpb25NYXRyaXgsbi5tYXRyaXhXb3JsZEludmVyc2UpLHRoaXMuX2ZydXN0dW0uc2V0RnJvbVByb2plY3Rpb25NYXRyaXgoa25lKX19Tm5lLnByb3RvdHlwZS5pc1BvaW50TGlnaHRTaGFkb3c9ITA7Y2xhc3MgSW5lIGV4dGVuZHMgeG5le2NvbnN0cnVjdG9yKHQsZSxuPTAsaT0xKXtzdXBlcih0LGUpLHRoaXMudHlwZT0iUG9pbnRMaWdodCIsdGhpcy5kaXN0YW5jZT1uLHRoaXMuZGVjYXk9aSx0aGlzLnNoYWRvdz1uZXcgTm5lfWdldCBwb3dlcigpe3JldHVybiA0KnRoaXMuaW50ZW5zaXR5Kk1hdGguUEl9c2V0IHBvd2VyKHQpe3RoaXMuaW50ZW5zaXR5PXQvKDQqTWF0aC5QSSl9ZGlzcG9zZSgpe3RoaXMuc2hhZG93LmRpc3Bvc2UoKX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMuZGlzdGFuY2U9dC5kaXN0YW5jZSx0aGlzLmRlY2F5PXQuZGVjYXksdGhpcy5zaGFkb3c9dC5zaGFkb3cuY2xvbmUoKSx0aGlzfX1JbmUucHJvdG90eXBlLmlzUG9pbnRMaWdodD0hMDtjbGFzcyBSbmUgZXh0ZW5kcyBUbmV7Y29uc3RydWN0b3IoKXtzdXBlcihuZXcgQTZ0KC01LDUsNSwtNSwuNSw1MDApKX19Um5lLnByb3RvdHlwZS5pc0RpcmVjdGlvbmFsTGlnaHRTaGFkb3c9ITA7Y2xhc3MgT25lIGV4dGVuZHMgeG5le2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIodCxlKSx0aGlzLnR5cGU9IkRpcmVjdGlvbmFsTGlnaHQiLHRoaXMucG9zaXRpb24uY29weShWM3QuRGVmYXVsdFVwKSx0aGlzLnVwZGF0ZU1hdHJpeCgpLHRoaXMudGFyZ2V0PW5ldyBWM3QsdGhpcy5zaGFkb3c9bmV3IFJuZX1kaXNwb3NlKCl7dGhpcy5zaGFkb3cuZGlzcG9zZSgpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy50YXJnZXQ9dC50YXJnZXQuY2xvbmUoKSx0aGlzLnNoYWRvdz10LnNoYWRvdy5jbG9uZSgpLHRoaXN9fU9uZS5wcm90b3R5cGUuaXNEaXJlY3Rpb25hbExpZ2h0PSEwO2NsYXNzIHpuZSBleHRlbmRzIHhuZXtjb25zdHJ1Y3Rvcih0LGUpe3N1cGVyKHQsZSksdGhpcy50eXBlPSJBbWJpZW50TGlnaHQifX16bmUucHJvdG90eXBlLmlzQW1iaWVudExpZ2h0PSEwO2NsYXNzIERuZSBleHRlbmRzIHhuZXtjb25zdHJ1Y3Rvcih0LGUsbj0xMCxpPTEwKXtzdXBlcih0LGUpLHRoaXMudHlwZT0iUmVjdEFyZWFMaWdodCIsdGhpcy53aWR0aD1uLHRoaXMuaGVpZ2h0PWl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLndpZHRoPXQud2lkdGgsdGhpcy5oZWlnaHQ9dC5oZWlnaHQsdGhpc310b0pTT04odCl7Y29uc3QgZT1zdXBlci50b0pTT04odCk7cmV0dXJuIGUub2JqZWN0LndpZHRoPXRoaXMud2lkdGgsZS5vYmplY3QuaGVpZ2h0PXRoaXMuaGVpZ2h0LGV9fURuZS5wcm90b3R5cGUuaXNSZWN0QXJlYUxpZ2h0PSEwO2NsYXNzIEJuZXtjb25zdHJ1Y3Rvcigpe3RoaXMuY29lZmZpY2llbnRzPVtdO2ZvcihsZXQgdD0wO3Q8OTt0KyspdGhpcy5jb2VmZmljaWVudHMucHVzaChuZXcgSDV0KX1zZXQodCl7Zm9yKGxldCBlPTA7ZTw5O2UrKyl0aGlzLmNvZWZmaWNpZW50c1tlXS5jb3B5KHRbZV0pO3JldHVybiB0aGlzfXplcm8oKXtmb3IobGV0IHQ9MDt0PDk7dCsrKXRoaXMuY29lZmZpY2llbnRzW3RdLnNldCgwLDAsMCk7cmV0dXJuIHRoaXN9Z2V0QXQodCxlKXtjb25zdCBuPXQueCxpPXQueSxyPXQueixvPXRoaXMuY29lZmZpY2llbnRzO3JldHVybiBlLmNvcHkob1swXSkubXVsdGlwbHlTY2FsYXIoLjI4MjA5NSksZS5hZGRTY2FsZWRWZWN0b3Iob1sxXSwuNDg4NjAzKmkpLGUuYWRkU2NhbGVkVmVjdG9yKG9bMl0sLjQ4ODYwMypyKSxlLmFkZFNjYWxlZFZlY3RvcihvWzNdLC40ODg2MDMqbiksZS5hZGRTY2FsZWRWZWN0b3Iob1s0XSxuKmkqMS4wOTI1NDgpLGUuYWRkU2NhbGVkVmVjdG9yKG9bNV0saSpyKjEuMDkyNTQ4KSxlLmFkZFNjYWxlZFZlY3RvcihvWzZdLC4zMTUzOTIqKDMqcipyLTEpKSxlLmFkZFNjYWxlZFZlY3RvcihvWzddLG4qcioxLjA5MjU0OCksZS5hZGRTY2FsZWRWZWN0b3Iob1s4XSwuNTQ2Mjc0KihuKm4taSppKSksZX1nZXRJcnJhZGlhbmNlQXQodCxlKXtjb25zdCBuPXQueCxpPXQueSxyPXQueixvPXRoaXMuY29lZmZpY2llbnRzO3JldHVybiBlLmNvcHkob1swXSkubXVsdGlwbHlTY2FsYXIoLjg4NjIyNyksZS5hZGRTY2FsZWRWZWN0b3Iob1sxXSwxLjAyMzMyOCppKSxlLmFkZFNjYWxlZFZlY3RvcihvWzJdLDEuMDIzMzI4KnIpLGUuYWRkU2NhbGVkVmVjdG9yKG9bM10sMS4wMjMzMjgqbiksZS5hZGRTY2FsZWRWZWN0b3Iob1s0XSwuODU4MDg2Km4qaSksZS5hZGRTY2FsZWRWZWN0b3Iob1s1XSwuODU4MDg2KmkqciksZS5hZGRTY2FsZWRWZWN0b3Iob1s2XSwuNzQzMTI1KnIqci0uMjQ3NzA4KSxlLmFkZFNjYWxlZFZlY3RvcihvWzddLC44NTgwODYqbipyKSxlLmFkZFNjYWxlZFZlY3RvcihvWzhdLC40MjkwNDMqKG4qbi1pKmkpKSxlfWFkZCh0KXtmb3IobGV0IGU9MDtlPDk7ZSsrKXRoaXMuY29lZmZpY2llbnRzW2VdLmFkZCh0LmNvZWZmaWNpZW50c1tlXSk7cmV0dXJuIHRoaXN9YWRkU2NhbGVkU0godCxlKXtmb3IobGV0IG49MDtuPDk7bisrKXRoaXMuY29lZmZpY2llbnRzW25dLmFkZFNjYWxlZFZlY3Rvcih0LmNvZWZmaWNpZW50c1tuXSxlKTtyZXR1cm4gdGhpc31zY2FsZSh0KXtmb3IobGV0IGU9MDtlPDk7ZSsrKXRoaXMuY29lZmZpY2llbnRzW2VdLm11bHRpcGx5U2NhbGFyKHQpO3JldHVybiB0aGlzfWxlcnAodCxlKXtmb3IobGV0IG49MDtuPDk7bisrKXRoaXMuY29lZmZpY2llbnRzW25dLmxlcnAodC5jb2VmZmljaWVudHNbbl0sZSk7cmV0dXJuIHRoaXN9ZXF1YWxzKHQpe2ZvcihsZXQgZT0wO2U8OTtlKyspaWYoIXRoaXMuY29lZmZpY2llbnRzW2VdLmVxdWFscyh0LmNvZWZmaWNpZW50c1tlXSkpcmV0dXJuITE7cmV0dXJuITB9Y29weSh0KXtyZXR1cm4gdGhpcy5zZXQodC5jb2VmZmljaWVudHMpfWNsb25lKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMpfWZyb21BcnJheSh0LGU9MCl7Y29uc3Qgbj10aGlzLmNvZWZmaWNpZW50cztmb3IobGV0IGk9MDtpPDk7aSsrKW5baV0uZnJvbUFycmF5KHQsZSszKmkpO3JldHVybiB0aGlzfXRvQXJyYXkodD1bXSxlPTApe2NvbnN0IG49dGhpcy5jb2VmZmljaWVudHM7Zm9yKGxldCBpPTA7aTw5O2krKyluW2ldLnRvQXJyYXkodCxlKzMqaSk7cmV0dXJuIHR9c3RhdGljIGdldEJhc2lzQXQodCxlKXtjb25zdCBuPXQueCxpPXQueSxyPXQuejtlWzBdPS4yODIwOTUsZVsxXT0uNDg4NjAzKmksZVsyXT0uNDg4NjAzKnIsZVszXT0uNDg4NjAzKm4sZVs0XT0xLjA5MjU0OCpuKmksZVs1XT0xLjA5MjU0OCppKnIsZVs2XT0uMzE1MzkyKigzKnIqci0xKSxlWzddPTEuMDkyNTQ4Km4qcixlWzhdPS41NDYyNzQqKG4qbi1pKmkpfX1CbmUucHJvdG90eXBlLmlzU3BoZXJpY2FsSGFybW9uaWNzMz0hMDtjbGFzcyBIbmUgZXh0ZW5kcyB4bmV7Y29uc3RydWN0b3IodD1uZXcgQm5lLGU9MSl7c3VwZXIodm9pZCAwLGUpLHRoaXMuc2g9dH1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMuc2guY29weSh0LnNoKSx0aGlzfWZyb21KU09OKHQpe3JldHVybiB0aGlzLmludGVuc2l0eT10LmludGVuc2l0eSx0aGlzLnNoLmZyb21BcnJheSh0LnNoKSx0aGlzfXRvSlNPTih0KXtjb25zdCBlPXN1cGVyLnRvSlNPTih0KTtyZXR1cm4gZS5vYmplY3Quc2g9dGhpcy5zaC50b0FycmF5KCksZX19SG5lLnByb3RvdHlwZS5pc0xpZ2h0UHJvYmU9ITA7Y2xhc3MgRm5lIGV4dGVuZHMgaG5le2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpLHRoaXMudGV4dHVyZXM9e319bG9hZCh0LGUsbixpKXtjb25zdCByPXRoaXMsbz1uZXcgcG5lKHIubWFuYWdlcik7by5zZXRQYXRoKHIucGF0aCksby5zZXRSZXF1ZXN0SGVhZGVyKHIucmVxdWVzdEhlYWRlciksby5zZXRXaXRoQ3JlZGVudGlhbHMoci53aXRoQ3JlZGVudGlhbHMpLG8ubG9hZCh0LChmdW5jdGlvbihuKXt0cnl7ZShyLnBhcnNlKEpTT04ucGFyc2UobikpKX1jYXRjaChlKXtpP2koZSk6Y29uc29sZS5lcnJvcihlKSxyLm1hbmFnZXIuaXRlbUVycm9yKHQpfX0pLG4saSl9cGFyc2UodCl7Y29uc3QgZT10aGlzLnRleHR1cmVzO2Z1bmN0aW9uIG4odCl7cmV0dXJuIHZvaWQgMD09PWVbdF0mJmNvbnNvbGUud2FybigiVEhSRUUuTWF0ZXJpYWxMb2FkZXI6IFVuZGVmaW5lZCB0ZXh0dXJlIix0KSxlW3RdfWNvbnN0IGk9bmV3IHFlZVt0LnR5cGVdO2lmKHZvaWQgMCE9PXQudXVpZCYmKGkudXVpZD10LnV1aWQpLHZvaWQgMCE9PXQubmFtZSYmKGkubmFtZT10Lm5hbWUpLHZvaWQgMCE9PXQuY29sb3ImJnZvaWQgMCE9PWkuY29sb3ImJmkuY29sb3Iuc2V0SGV4KHQuY29sb3IpLHZvaWQgMCE9PXQucm91Z2huZXNzJiYoaS5yb3VnaG5lc3M9dC5yb3VnaG5lc3MpLHZvaWQgMCE9PXQubWV0YWxuZXNzJiYoaS5tZXRhbG5lc3M9dC5tZXRhbG5lc3MpLHZvaWQgMCE9PXQuc2hlZW4mJihpLnNoZWVuPShuZXcgczR0KS5zZXRIZXgodC5zaGVlbikpLHZvaWQgMCE9PXQuZW1pc3NpdmUmJnZvaWQgMCE9PWkuZW1pc3NpdmUmJmkuZW1pc3NpdmUuc2V0SGV4KHQuZW1pc3NpdmUpLHZvaWQgMCE9PXQuc3BlY3VsYXImJnZvaWQgMCE9PWkuc3BlY3VsYXImJmkuc3BlY3VsYXIuc2V0SGV4KHQuc3BlY3VsYXIpLHZvaWQgMCE9PXQuc3BlY3VsYXJJbnRlbnNpdHkmJihpLnNwZWN1bGFySW50ZW5zaXR5PXQuc3BlY3VsYXJJbnRlbnNpdHkpLHZvaWQgMCE9PXQuc3BlY3VsYXJUaW50JiZ2b2lkIDAhPT1pLnNwZWN1bGFyVGludCYmaS5zcGVjdWxhclRpbnQuc2V0SGV4KHQuc3BlY3VsYXJUaW50KSx2b2lkIDAhPT10LnNoaW5pbmVzcyYmKGkuc2hpbmluZXNzPXQuc2hpbmluZXNzKSx2b2lkIDAhPT10LmNsZWFyY29hdCYmKGkuY2xlYXJjb2F0PXQuY2xlYXJjb2F0KSx2b2lkIDAhPT10LmNsZWFyY29hdFJvdWdobmVzcyYmKGkuY2xlYXJjb2F0Um91Z2huZXNzPXQuY2xlYXJjb2F0Um91Z2huZXNzKSx2b2lkIDAhPT10LnRyYW5zbWlzc2lvbiYmKGkudHJhbnNtaXNzaW9uPXQudHJhbnNtaXNzaW9uKSx2b2lkIDAhPT10LnRoaWNrbmVzcyYmKGkudGhpY2tuZXNzPXQudGhpY2tuZXNzKSx2b2lkIDAhPT10LmF0dGVudWF0aW9uRGlzdGFuY2UmJihpLmF0dGVudWF0aW9uRGlzdGFuY2U9dC5hdHRlbnVhdGlvbkRpc3RhbmNlKSx2b2lkIDAhPT10LmF0dGVudWF0aW9uVGludCYmdm9pZCAwIT09aS5hdHRlbnVhdGlvblRpbnQmJmkuYXR0ZW51YXRpb25UaW50LnNldEhleCh0LmF0dGVudWF0aW9uVGludCksdm9pZCAwIT09dC5mb2cmJihpLmZvZz10LmZvZyksdm9pZCAwIT09dC5mbGF0U2hhZGluZyYmKGkuZmxhdFNoYWRpbmc9dC5mbGF0U2hhZGluZyksdm9pZCAwIT09dC5ibGVuZGluZyYmKGkuYmxlbmRpbmc9dC5ibGVuZGluZyksdm9pZCAwIT09dC5jb21iaW5lJiYoaS5jb21iaW5lPXQuY29tYmluZSksdm9pZCAwIT09dC5zaWRlJiYoaS5zaWRlPXQuc2lkZSksdm9pZCAwIT09dC5zaGFkb3dTaWRlJiYoaS5zaGFkb3dTaWRlPXQuc2hhZG93U2lkZSksdm9pZCAwIT09dC5vcGFjaXR5JiYoaS5vcGFjaXR5PXQub3BhY2l0eSksdm9pZCAwIT09dC50cmFuc3BhcmVudCYmKGkudHJhbnNwYXJlbnQ9dC50cmFuc3BhcmVudCksdm9pZCAwIT09dC5hbHBoYVRlc3QmJihpLmFscGhhVGVzdD10LmFscGhhVGVzdCksdm9pZCAwIT09dC5kZXB0aFRlc3QmJihpLmRlcHRoVGVzdD10LmRlcHRoVGVzdCksdm9pZCAwIT09dC5kZXB0aFdyaXRlJiYoaS5kZXB0aFdyaXRlPXQuZGVwdGhXcml0ZSksdm9pZCAwIT09dC5jb2xvcldyaXRlJiYoaS5jb2xvcldyaXRlPXQuY29sb3JXcml0ZSksdm9pZCAwIT09dC5zdGVuY2lsV3JpdGUmJihpLnN0ZW5jaWxXcml0ZT10LnN0ZW5jaWxXcml0ZSksdm9pZCAwIT09dC5zdGVuY2lsV3JpdGVNYXNrJiYoaS5zdGVuY2lsV3JpdGVNYXNrPXQuc3RlbmNpbFdyaXRlTWFzayksdm9pZCAwIT09dC5zdGVuY2lsRnVuYyYmKGkuc3RlbmNpbEZ1bmM9dC5zdGVuY2lsRnVuYyksdm9pZCAwIT09dC5zdGVuY2lsUmVmJiYoaS5zdGVuY2lsUmVmPXQuc3RlbmNpbFJlZiksdm9pZCAwIT09dC5zdGVuY2lsRnVuY01hc2smJihpLnN0ZW5jaWxGdW5jTWFzaz10LnN0ZW5jaWxGdW5jTWFzayksdm9pZCAwIT09dC5zdGVuY2lsRmFpbCYmKGkuc3RlbmNpbEZhaWw9dC5zdGVuY2lsRmFpbCksdm9pZCAwIT09dC5zdGVuY2lsWkZhaWwmJihpLnN0ZW5jaWxaRmFpbD10LnN0ZW5jaWxaRmFpbCksdm9pZCAwIT09dC5zdGVuY2lsWlBhc3MmJihpLnN0ZW5jaWxaUGFzcz10LnN0ZW5jaWxaUGFzcyksdm9pZCAwIT09dC53aXJlZnJhbWUmJihpLndpcmVmcmFtZT10LndpcmVmcmFtZSksdm9pZCAwIT09dC53aXJlZnJhbWVMaW5ld2lkdGgmJihpLndpcmVmcmFtZUxpbmV3aWR0aD10LndpcmVmcmFtZUxpbmV3aWR0aCksdm9pZCAwIT09dC53aXJlZnJhbWVMaW5lY2FwJiYoaS53aXJlZnJhbWVMaW5lY2FwPXQud2lyZWZyYW1lTGluZWNhcCksdm9pZCAwIT09dC53aXJlZnJhbWVMaW5lam9pbiYmKGkud2lyZWZyYW1lTGluZWpvaW49dC53aXJlZnJhbWVMaW5lam9pbiksdm9pZCAwIT09dC5yb3RhdGlvbiYmKGkucm90YXRpb249dC5yb3RhdGlvbiksMSE9PXQubGluZXdpZHRoJiYoaS5saW5ld2lkdGg9dC5saW5ld2lkdGgpLHZvaWQgMCE9PXQuZGFzaFNpemUmJihpLmRhc2hTaXplPXQuZGFzaFNpemUpLHZvaWQgMCE9PXQuZ2FwU2l6ZSYmKGkuZ2FwU2l6ZT10LmdhcFNpemUpLHZvaWQgMCE9PXQuc2NhbGUmJihpLnNjYWxlPXQuc2NhbGUpLHZvaWQgMCE9PXQucG9seWdvbk9mZnNldCYmKGkucG9seWdvbk9mZnNldD10LnBvbHlnb25PZmZzZXQpLHZvaWQgMCE9PXQucG9seWdvbk9mZnNldEZhY3RvciYmKGkucG9seWdvbk9mZnNldEZhY3Rvcj10LnBvbHlnb25PZmZzZXRGYWN0b3IpLHZvaWQgMCE9PXQucG9seWdvbk9mZnNldFVuaXRzJiYoaS5wb2x5Z29uT2Zmc2V0VW5pdHM9dC5wb2x5Z29uT2Zmc2V0VW5pdHMpLHZvaWQgMCE9PXQuZGl0aGVyaW5nJiYoaS5kaXRoZXJpbmc9dC5kaXRoZXJpbmcpLHZvaWQgMCE9PXQuYWxwaGFUb0NvdmVyYWdlJiYoaS5hbHBoYVRvQ292ZXJhZ2U9dC5hbHBoYVRvQ292ZXJhZ2UpLHZvaWQgMCE9PXQucHJlbXVsdGlwbGllZEFscGhhJiYoaS5wcmVtdWx0aXBsaWVkQWxwaGE9dC5wcmVtdWx0aXBsaWVkQWxwaGEpLHZvaWQgMCE9PXQudmlzaWJsZSYmKGkudmlzaWJsZT10LnZpc2libGUpLHZvaWQgMCE9PXQudG9uZU1hcHBlZCYmKGkudG9uZU1hcHBlZD10LnRvbmVNYXBwZWQpLHZvaWQgMCE9PXQudXNlckRhdGEmJihpLnVzZXJEYXRhPXQudXNlckRhdGEpLHZvaWQgMCE9PXQudmVydGV4Q29sb3JzJiYoaS52ZXJ0ZXhDb2xvcnM9Im51bWJlciI9PXR5cGVvZiB0LnZlcnRleENvbG9ycz90LnZlcnRleENvbG9ycz4wOnQudmVydGV4Q29sb3JzKSx2b2lkIDAhPT10LnVuaWZvcm1zKWZvcihjb25zdCBlIGluIHQudW5pZm9ybXMpe2NvbnN0IHI9dC51bmlmb3Jtc1tlXTtzd2l0Y2goaS51bmlmb3Jtc1tlXT17fSxyLnR5cGUpe2Nhc2UidCI6aS51bmlmb3Jtc1tlXS52YWx1ZT1uKHIudmFsdWUpO2JyZWFrO2Nhc2UiYyI6aS51bmlmb3Jtc1tlXS52YWx1ZT0obmV3IHM0dCkuc2V0SGV4KHIudmFsdWUpO2JyZWFrO2Nhc2UidjIiOmkudW5pZm9ybXNbZV0udmFsdWU9KG5ldyBDNXQpLmZyb21BcnJheShyLnZhbHVlKTticmVhaztjYXNlInYzIjppLnVuaWZvcm1zW2VdLnZhbHVlPShuZXcgSDV0KS5mcm9tQXJyYXkoci52YWx1ZSk7YnJlYWs7Y2FzZSJ2NCI6aS51bmlmb3Jtc1tlXS52YWx1ZT0obmV3IFI1dCkuZnJvbUFycmF5KHIudmFsdWUpO2JyZWFrO2Nhc2UibTMiOmkudW5pZm9ybXNbZV0udmFsdWU9KG5ldyBBNXQpLmZyb21BcnJheShyLnZhbHVlKTticmVhaztjYXNlIm00IjppLnVuaWZvcm1zW2VdLnZhbHVlPShuZXcgZzN0KS5mcm9tQXJyYXkoci52YWx1ZSk7YnJlYWs7ZGVmYXVsdDppLnVuaWZvcm1zW2VdLnZhbHVlPXIudmFsdWV9fWlmKHZvaWQgMCE9PXQuZGVmaW5lcyYmKGkuZGVmaW5lcz10LmRlZmluZXMpLHZvaWQgMCE9PXQudmVydGV4U2hhZGVyJiYoaS52ZXJ0ZXhTaGFkZXI9dC52ZXJ0ZXhTaGFkZXIpLHZvaWQgMCE9PXQuZnJhZ21lbnRTaGFkZXImJihpLmZyYWdtZW50U2hhZGVyPXQuZnJhZ21lbnRTaGFkZXIpLHZvaWQgMCE9PXQuZXh0ZW5zaW9ucylmb3IoY29uc3QgZSBpbiB0LmV4dGVuc2lvbnMpaS5leHRlbnNpb25zW2VdPXQuZXh0ZW5zaW9uc1tlXTtpZih2b2lkIDAhPT10LnNoYWRpbmcmJihpLmZsYXRTaGFkaW5nPTE9PT10LnNoYWRpbmcpLHZvaWQgMCE9PXQuc2l6ZSYmKGkuc2l6ZT10LnNpemUpLHZvaWQgMCE9PXQuc2l6ZUF0dGVudWF0aW9uJiYoaS5zaXplQXR0ZW51YXRpb249dC5zaXplQXR0ZW51YXRpb24pLHZvaWQgMCE9PXQubWFwJiYoaS5tYXA9bih0Lm1hcCkpLHZvaWQgMCE9PXQubWF0Y2FwJiYoaS5tYXRjYXA9bih0Lm1hdGNhcCkpLHZvaWQgMCE9PXQuYWxwaGFNYXAmJihpLmFscGhhTWFwPW4odC5hbHBoYU1hcCkpLHZvaWQgMCE9PXQuYnVtcE1hcCYmKGkuYnVtcE1hcD1uKHQuYnVtcE1hcCkpLHZvaWQgMCE9PXQuYnVtcFNjYWxlJiYoaS5idW1wU2NhbGU9dC5idW1wU2NhbGUpLHZvaWQgMCE9PXQubm9ybWFsTWFwJiYoaS5ub3JtYWxNYXA9bih0Lm5vcm1hbE1hcCkpLHZvaWQgMCE9PXQubm9ybWFsTWFwVHlwZSYmKGkubm9ybWFsTWFwVHlwZT10Lm5vcm1hbE1hcFR5cGUpLHZvaWQgMCE9PXQubm9ybWFsU2NhbGUpe2xldCBlPXQubm9ybWFsU2NhbGU7ITE9PT1BcnJheS5pc0FycmF5KGUpJiYoZT1bZSxlXSksaS5ub3JtYWxTY2FsZT0obmV3IEM1dCkuZnJvbUFycmF5KGUpfXJldHVybiB2b2lkIDAhPT10LmRpc3BsYWNlbWVudE1hcCYmKGkuZGlzcGxhY2VtZW50TWFwPW4odC5kaXNwbGFjZW1lbnRNYXApKSx2b2lkIDAhPT10LmRpc3BsYWNlbWVudFNjYWxlJiYoaS5kaXNwbGFjZW1lbnRTY2FsZT10LmRpc3BsYWNlbWVudFNjYWxlKSx2b2lkIDAhPT10LmRpc3BsYWNlbWVudEJpYXMmJihpLmRpc3BsYWNlbWVudEJpYXM9dC5kaXNwbGFjZW1lbnRCaWFzKSx2b2lkIDAhPT10LnJvdWdobmVzc01hcCYmKGkucm91Z2huZXNzTWFwPW4odC5yb3VnaG5lc3NNYXApKSx2b2lkIDAhPT10Lm1ldGFsbmVzc01hcCYmKGkubWV0YWxuZXNzTWFwPW4odC5tZXRhbG5lc3NNYXApKSx2b2lkIDAhPT10LmVtaXNzaXZlTWFwJiYoaS5lbWlzc2l2ZU1hcD1uKHQuZW1pc3NpdmVNYXApKSx2b2lkIDAhPT10LmVtaXNzaXZlSW50ZW5zaXR5JiYoaS5lbWlzc2l2ZUludGVuc2l0eT10LmVtaXNzaXZlSW50ZW5zaXR5KSx2b2lkIDAhPT10LnNwZWN1bGFyTWFwJiYoaS5zcGVjdWxhck1hcD1uKHQuc3BlY3VsYXJNYXApKSx2b2lkIDAhPT10LnNwZWN1bGFySW50ZW5zaXR5TWFwJiYoaS5zcGVjdWxhckludGVuc2l0eU1hcD1uKHQuc3BlY3VsYXJJbnRlbnNpdHlNYXApKSx2b2lkIDAhPT10LnNwZWN1bGFyVGludE1hcCYmKGkuc3BlY3VsYXJUaW50TWFwPW4odC5zcGVjdWxhclRpbnRNYXApKSx2b2lkIDAhPT10LmVudk1hcCYmKGkuZW52TWFwPW4odC5lbnZNYXApKSx2b2lkIDAhPT10LmVudk1hcEludGVuc2l0eSYmKGkuZW52TWFwSW50ZW5zaXR5PXQuZW52TWFwSW50ZW5zaXR5KSx2b2lkIDAhPT10LnJlZmxlY3Rpdml0eSYmKGkucmVmbGVjdGl2aXR5PXQucmVmbGVjdGl2aXR5KSx2b2lkIDAhPT10LnJlZnJhY3Rpb25SYXRpbyYmKGkucmVmcmFjdGlvblJhdGlvPXQucmVmcmFjdGlvblJhdGlvKSx2b2lkIDAhPT10LmxpZ2h0TWFwJiYoaS5saWdodE1hcD1uKHQubGlnaHRNYXApKSx2b2lkIDAhPT10LmxpZ2h0TWFwSW50ZW5zaXR5JiYoaS5saWdodE1hcEludGVuc2l0eT10LmxpZ2h0TWFwSW50ZW5zaXR5KSx2b2lkIDAhPT10LmFvTWFwJiYoaS5hb01hcD1uKHQuYW9NYXApKSx2b2lkIDAhPT10LmFvTWFwSW50ZW5zaXR5JiYoaS5hb01hcEludGVuc2l0eT10LmFvTWFwSW50ZW5zaXR5KSx2b2lkIDAhPT10LmdyYWRpZW50TWFwJiYoaS5ncmFkaWVudE1hcD1uKHQuZ3JhZGllbnRNYXApKSx2b2lkIDAhPT10LmNsZWFyY29hdE1hcCYmKGkuY2xlYXJjb2F0TWFwPW4odC5jbGVhcmNvYXRNYXApKSx2b2lkIDAhPT10LmNsZWFyY29hdFJvdWdobmVzc01hcCYmKGkuY2xlYXJjb2F0Um91Z2huZXNzTWFwPW4odC5jbGVhcmNvYXRSb3VnaG5lc3NNYXApKSx2b2lkIDAhPT10LmNsZWFyY29hdE5vcm1hbE1hcCYmKGkuY2xlYXJjb2F0Tm9ybWFsTWFwPW4odC5jbGVhcmNvYXROb3JtYWxNYXApKSx2b2lkIDAhPT10LmNsZWFyY29hdE5vcm1hbFNjYWxlJiYoaS5jbGVhcmNvYXROb3JtYWxTY2FsZT0obmV3IEM1dCkuZnJvbUFycmF5KHQuY2xlYXJjb2F0Tm9ybWFsU2NhbGUpKSx2b2lkIDAhPT10LnRyYW5zbWlzc2lvbk1hcCYmKGkudHJhbnNtaXNzaW9uTWFwPW4odC50cmFuc21pc3Npb25NYXApKSx2b2lkIDAhPT10LnRoaWNrbmVzc01hcCYmKGkudGhpY2tuZXNzTWFwPW4odC50aGlja25lc3NNYXApKSxpfXNldFRleHR1cmVzKHQpe3JldHVybiB0aGlzLnRleHR1cmVzPXQsdGhpc319Y2xhc3MgVm5le3N0YXRpYyBkZWNvZGVUZXh0KHQpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgVGV4dERlY29kZXIpcmV0dXJuKG5ldyBUZXh0RGVjb2RlcikuZGVjb2RlKHQpO2xldCBlPSIiO2ZvcihsZXQgbj0wLGk9dC5sZW5ndGg7bjxpO24rKyllKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHRbbl0pO3RyeXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGVzY2FwZShlKSl9Y2F0Y2godCl7cmV0dXJuIGV9fXN0YXRpYyBleHRyYWN0VXJsQmFzZSh0KXtjb25zdCBlPXQubGFzdEluZGV4T2YoIi8iKTtyZXR1cm4tMT09PWU/Ii4vIjp0LnN1YnN0cigwLGUrMSl9fWNsYXNzIFVuZSBleHRlbmRzIE40dHtjb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy50eXBlPSJJbnN0YW5jZWRCdWZmZXJHZW9tZXRyeSIsdGhpcy5pbnN0YW5jZUNvdW50PTEvMH1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMuaW5zdGFuY2VDb3VudD10Lmluc3RhbmNlQ291bnQsdGhpc31jbG9uZSgpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3RvcikuY29weSh0aGlzKX10b0pTT04oKXtjb25zdCB0PXN1cGVyLnRvSlNPTih0aGlzKTtyZXR1cm4gdC5pbnN0YW5jZUNvdW50PXRoaXMuaW5zdGFuY2VDb3VudCx0LmlzSW5zdGFuY2VkQnVmZmVyR2VvbWV0cnk9ITAsdH19VW5lLnByb3RvdHlwZS5pc0luc3RhbmNlZEJ1ZmZlckdlb21ldHJ5PSEwO2NsYXNzIGpuZSBleHRlbmRzIGg0dHtjb25zdHJ1Y3Rvcih0LGUsbixpPTEpeyJudW1iZXIiPT10eXBlb2YgbiYmKGk9bixuPSExLGNvbnNvbGUuZXJyb3IoIlRIUkVFLkluc3RhbmNlZEJ1ZmZlckF0dHJpYnV0ZTogVGhlIGNvbnN0cnVjdG9yIG5vdyBleHBlY3RzIG5vcm1hbGl6ZWQgYXMgdGhlIHRoaXJkIGFyZ3VtZW50LiIpKSxzdXBlcih0LGUsbiksdGhpcy5tZXNoUGVyQXR0cmlidXRlPWl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLm1lc2hQZXJBdHRyaWJ1dGU9dC5tZXNoUGVyQXR0cmlidXRlLHRoaXN9dG9KU09OKCl7Y29uc3QgdD1zdXBlci50b0pTT04oKTtyZXR1cm4gdC5tZXNoUGVyQXR0cmlidXRlPXRoaXMubWVzaFBlckF0dHJpYnV0ZSx0LmlzSW5zdGFuY2VkQnVmZmVyQXR0cmlidXRlPSEwLHR9fWpuZS5wcm90b3R5cGUuaXNJbnN0YW5jZWRCdWZmZXJBdHRyaWJ1dGU9ITA7Y2xhc3MgR25lIGV4dGVuZHMgaG5le2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpfWxvYWQodCxlLG4saSl7Y29uc3Qgcj10aGlzLG89bmV3IHBuZShyLm1hbmFnZXIpO28uc2V0UGF0aChyLnBhdGgpLG8uc2V0UmVxdWVzdEhlYWRlcihyLnJlcXVlc3RIZWFkZXIpLG8uc2V0V2l0aENyZWRlbnRpYWxzKHIud2l0aENyZWRlbnRpYWxzKSxvLmxvYWQodCwoZnVuY3Rpb24obil7dHJ5e2Uoci5wYXJzZShKU09OLnBhcnNlKG4pKSl9Y2F0Y2goZSl7aT9pKGUpOmNvbnNvbGUuZXJyb3IoZSksci5tYW5hZ2VyLml0ZW1FcnJvcih0KX19KSxuLGkpfXBhcnNlKHQpe2NvbnN0IGU9e30sbj17fTtmdW5jdGlvbiBpKHQsaSl7aWYodm9pZCAwIT09ZVtpXSlyZXR1cm4gZVtpXTtjb25zdCByPXQuaW50ZXJsZWF2ZWRCdWZmZXJzW2ldLG89KGZ1bmN0aW9uIGEodCxlKXtpZih2b2lkIDAhPT1uW2VdKXJldHVybiBuW2VdO2NvbnN0IGk9bmV3IFVpbnQzMkFycmF5KHQuYXJyYXlCdWZmZXJzW2VdKS5idWZmZXI7cmV0dXJuIG5bZV09aSxpfSkodCxyLmJ1ZmZlcikscz1NNHQoci50eXBlLG8pLGw9bmV3IHU3dChzLHIuc3RyaWRlKTtyZXR1cm4gbC51dWlkPXIudXVpZCxlW2ldPWwsbH1jb25zdCByPXQuaXNJbnN0YW5jZWRCdWZmZXJHZW9tZXRyeT9uZXcgVW5lOm5ldyBONHQsbz10LmRhdGEuaW5kZXg7aWYodm9pZCAwIT09byl7Y29uc3QgdD1NNHQoby50eXBlLG8uYXJyYXkpO3Iuc2V0SW5kZXgobmV3IGg0dCh0LDEpKX1jb25zdCBhPXQuZGF0YS5hdHRyaWJ1dGVzO2Zvcihjb25zdCBlIGluIGEpe2NvbnN0IG49YVtlXTtsZXQgbztpZihuLmlzSW50ZXJsZWF2ZWRCdWZmZXJBdHRyaWJ1dGUpe2NvbnN0IGU9aSh0LmRhdGEsbi5kYXRhKTtvPW5ldyBkN3QoZSxuLml0ZW1TaXplLG4ub2Zmc2V0LG4ubm9ybWFsaXplZCl9ZWxzZXtjb25zdCB0PU00dChuLnR5cGUsbi5hcnJheSk7bz1uZXcobi5pc0luc3RhbmNlZEJ1ZmZlckF0dHJpYnV0ZT9qbmU6aDR0KSh0LG4uaXRlbVNpemUsbi5ub3JtYWxpemVkKX12b2lkIDAhPT1uLm5hbWUmJihvLm5hbWU9bi5uYW1lKSx2b2lkIDAhPT1uLnVzYWdlJiZvLnNldFVzYWdlKG4udXNhZ2UpLHZvaWQgMCE9PW4udXBkYXRlUmFuZ2UmJihvLnVwZGF0ZVJhbmdlLm9mZnNldD1uLnVwZGF0ZVJhbmdlLm9mZnNldCxvLnVwZGF0ZVJhbmdlLmNvdW50PW4udXBkYXRlUmFuZ2UuY291bnQpLHIuc2V0QXR0cmlidXRlKGUsbyl9Y29uc3Qgcz10LmRhdGEubW9ycGhBdHRyaWJ1dGVzO2lmKHMpZm9yKGNvbnN0IGUgaW4gcyl7Y29uc3Qgbj1zW2VdLG89W107Zm9yKGxldCBlPTAscj1uLmxlbmd0aDtlPHI7ZSsrKXtjb25zdCByPW5bZV07bGV0IGE7aWYoci5pc0ludGVybGVhdmVkQnVmZmVyQXR0cmlidXRlKXtjb25zdCBlPWkodC5kYXRhLHIuZGF0YSk7YT1uZXcgZDd0KGUsci5pdGVtU2l6ZSxyLm9mZnNldCxyLm5vcm1hbGl6ZWQpfWVsc2V7Y29uc3QgdD1NNHQoci50eXBlLHIuYXJyYXkpO2E9bmV3IGg0dCh0LHIuaXRlbVNpemUsci5ub3JtYWxpemVkKX12b2lkIDAhPT1yLm5hbWUmJihhLm5hbWU9ci5uYW1lKSxvLnB1c2goYSl9ci5tb3JwaEF0dHJpYnV0ZXNbZV09b310LmRhdGEubW9ycGhUYXJnZXRzUmVsYXRpdmUmJihyLm1vcnBoVGFyZ2V0c1JlbGF0aXZlPSEwKTtjb25zdCBsPXQuZGF0YS5ncm91cHN8fHQuZGF0YS5kcmF3Y2FsbHN8fHQuZGF0YS5vZmZzZXRzO2lmKHZvaWQgMCE9PWwpZm9yKGxldCB0PTAsZT1sLmxlbmd0aDt0IT09ZTsrK3Qpe2NvbnN0IGU9bFt0XTtyLmFkZEdyb3VwKGUuc3RhcnQsZS5jb3VudCxlLm1hdGVyaWFsSW5kZXgpfWNvbnN0IGM9dC5kYXRhLmJvdW5kaW5nU3BoZXJlO2lmKHZvaWQgMCE9PWMpe2NvbnN0IHQ9bmV3IEg1dDt2b2lkIDAhPT1jLmNlbnRlciYmdC5mcm9tQXJyYXkoYy5jZW50ZXIpLHIuYm91bmRpbmdTcGhlcmU9bmV3IHMzdCh0LGMucmFkaXVzKX1yZXR1cm4gdC5uYW1lJiYoci5uYW1lPXQubmFtZSksdC51c2VyRGF0YSYmKHIudXNlckRhdGE9dC51c2VyRGF0YSkscn19Y29uc3QgV25lPXtVVk1hcHBpbmc6dDJ0LEN1YmVSZWZsZWN0aW9uTWFwcGluZzplMnQsQ3ViZVJlZnJhY3Rpb25NYXBwaW5nOm4ydCxFcXVpcmVjdGFuZ3VsYXJSZWZsZWN0aW9uTWFwcGluZzppMnQsRXF1aXJlY3Rhbmd1bGFyUmVmcmFjdGlvbk1hcHBpbmc6cjJ0LEN1YmVVVlJlZmxlY3Rpb25NYXBwaW5nOm8ydCxDdWJlVVZSZWZyYWN0aW9uTWFwcGluZzphMnR9LHFuZT17UmVwZWF0V3JhcHBpbmc6czJ0LENsYW1wVG9FZGdlV3JhcHBpbmc6bDJ0LE1pcnJvcmVkUmVwZWF0V3JhcHBpbmc6YzJ0fSxZbmU9e05lYXJlc3RGaWx0ZXI6dTJ0LE5lYXJlc3RNaXBtYXBOZWFyZXN0RmlsdGVyOmgydCxOZWFyZXN0TWlwbWFwTGluZWFyRmlsdGVyOmQydCxMaW5lYXJGaWx0ZXI6cDJ0LExpbmVhck1pcG1hcE5lYXJlc3RGaWx0ZXI6ZjJ0LExpbmVhck1pcG1hcExpbmVhckZpbHRlcjptMnR9O2NsYXNzIFhuZSBleHRlbmRzIGhuZXtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KSwidW5kZWZpbmVkIj09dHlwZW9mIGNyZWF0ZUltYWdlQml0bWFwJiZjb25zb2xlLndhcm4oIlRIUkVFLkltYWdlQml0bWFwTG9hZGVyOiBjcmVhdGVJbWFnZUJpdG1hcCgpIG5vdCBzdXBwb3J0ZWQuIiksInVuZGVmaW5lZCI9PXR5cGVvZiBmZXRjaCYmY29uc29sZS53YXJuKCJUSFJFRS5JbWFnZUJpdG1hcExvYWRlcjogZmV0Y2goKSBub3Qgc3VwcG9ydGVkLiIpLHRoaXMub3B0aW9ucz17cHJlbXVsdGlwbHlBbHBoYToibm9uZSJ9fXNldE9wdGlvbnModCl7cmV0dXJuIHRoaXMub3B0aW9ucz10LHRoaXN9bG9hZCh0LGUsbixpKXt2b2lkIDA9PT10JiYodD0iIiksdm9pZCAwIT09dGhpcy5wYXRoJiYodD10aGlzLnBhdGgrdCksdD10aGlzLm1hbmFnZXIucmVzb2x2ZVVSTCh0KTtjb25zdCByPXRoaXMsbz1sbmUuZ2V0KHQpO2lmKHZvaWQgMCE9PW8pcmV0dXJuIHIubWFuYWdlci5pdGVtU3RhcnQodCksc2V0VGltZW91dCgoZnVuY3Rpb24oKXtlJiZlKG8pLHIubWFuYWdlci5pdGVtRW5kKHQpfSksMCksbztjb25zdCBhPXt9O2EuY3JlZGVudGlhbHM9ImFub255bW91cyI9PT10aGlzLmNyb3NzT3JpZ2luPyJzYW1lLW9yaWdpbiI6ImluY2x1ZGUiLGEuaGVhZGVycz10aGlzLnJlcXVlc3RIZWFkZXIsZmV0Y2godCxhKS50aGVuKChmdW5jdGlvbih0KXtyZXR1cm4gdC5ibG9iKCl9KSkudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIGNyZWF0ZUltYWdlQml0bWFwKHQsT2JqZWN0LmFzc2lnbihyLm9wdGlvbnMse2NvbG9yU3BhY2VDb252ZXJzaW9uOiJub25lIn0pKX0pKS50aGVuKChmdW5jdGlvbihuKXtsbmUuYWRkKHQsbiksZSYmZShuKSxyLm1hbmFnZXIuaXRlbUVuZCh0KX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7aSYmaShlKSxyLm1hbmFnZXIuaXRlbUVycm9yKHQpLHIubWFuYWdlci5pdGVtRW5kKHQpfSkpLHIubWFuYWdlci5pdGVtU3RhcnQodCl9fVhuZS5wcm90b3R5cGUuaXNJbWFnZUJpdG1hcExvYWRlcj0hMDtjbGFzcyAkbmV7Y29uc3RydWN0b3IoKXt0aGlzLnR5cGU9IlNoYXBlUGF0aCIsdGhpcy5jb2xvcj1uZXcgczR0LHRoaXMuc3ViUGF0aHM9W10sdGhpcy5jdXJyZW50UGF0aD1udWxsfW1vdmVUbyh0LGUpe3JldHVybiB0aGlzLmN1cnJlbnRQYXRoPW5ldyB2bmUsdGhpcy5zdWJQYXRocy5wdXNoKHRoaXMuY3VycmVudFBhdGgpLHRoaXMuY3VycmVudFBhdGgubW92ZVRvKHQsZSksdGhpc31saW5lVG8odCxlKXtyZXR1cm4gdGhpcy5jdXJyZW50UGF0aC5saW5lVG8odCxlKSx0aGlzfXF1YWRyYXRpY0N1cnZlVG8odCxlLG4saSl7cmV0dXJuIHRoaXMuY3VycmVudFBhdGgucXVhZHJhdGljQ3VydmVUbyh0LGUsbixpKSx0aGlzfWJlemllckN1cnZlVG8odCxlLG4saSxyLG8pe3JldHVybiB0aGlzLmN1cnJlbnRQYXRoLmJlemllckN1cnZlVG8odCxlLG4saSxyLG8pLHRoaXN9c3BsaW5lVGhydSh0KXtyZXR1cm4gdGhpcy5jdXJyZW50UGF0aC5zcGxpbmVUaHJ1KHQpLHRoaXN9dG9TaGFwZXModCxlKXtmdW5jdGlvbiBuKHQpe2NvbnN0IGU9W107Zm9yKGxldCBuPTAsaT10Lmxlbmd0aDtuPGk7bisrKXtjb25zdCBpPXRbbl0scj1uZXcgYm5lO3IuY3VydmVzPWkuY3VydmVzLGUucHVzaChyKX1yZXR1cm4gZX1mdW5jdGlvbiBpKHQsZSl7Y29uc3Qgbj1lLmxlbmd0aDtsZXQgaT0hMTtmb3IobGV0IHI9bi0xLG89MDtvPG47cj1vKyspe2xldCBuPWVbcl0sYT1lW29dLHM9YS54LW4ueCxsPWEueS1uLnk7aWYoTWF0aC5hYnMobCk+TnVtYmVyLkVQU0lMT04pe2lmKGw8MCYmKG49ZVtvXSxzPS1zLGE9ZVtyXSxsPS1sKSx0Lnk8bi55fHx0Lnk+YS55KWNvbnRpbnVlO2lmKHQueT09PW4ueSl7aWYodC54PT09bi54KXJldHVybiEwfWVsc2V7Y29uc3QgZT1sKih0Lngtbi54KS1zKih0Lnktbi55KTtpZigwPT09ZSlyZXR1cm4hMDtpZihlPDApY29udGludWU7aT0haX19ZWxzZXtpZih0LnkhPT1uLnkpY29udGludWU7aWYoYS54PD10LngmJnQueDw9bi54fHxuLng8PXQueCYmdC54PD1hLngpcmV0dXJuITB9fXJldHVybiBpfWNvbnN0IHI9X2VlLmlzQ2xvY2tXaXNlLG89dGhpcy5zdWJQYXRocztpZigwPT09by5sZW5ndGgpcmV0dXJuW107aWYoITA9PT1lKXJldHVybiBuKG8pO2xldCBhLHMsbDtjb25zdCBjPVtdO2lmKDE9PT1vLmxlbmd0aClyZXR1cm4gcz1vWzBdLGw9bmV3IGJuZSxsLmN1cnZlcz1zLmN1cnZlcyxjLnB1c2gobCksYztsZXQgdT0hcihvWzBdLmdldFBvaW50cygpKTt1PXQ/IXU6dTtjb25zdCBoPVtdLGQ9W107bGV0IHAsZixtPVtdLGc9MDtkW2ddPXZvaWQgMCxtW2ddPVtdO2ZvcihsZXQgZT0wLG49by5sZW5ndGg7ZTxuO2UrKylzPW9bZV0scD1zLmdldFBvaW50cygpLGE9cihwKSxhPXQ/IWE6YSxhPyghdSYmZFtnXSYmZysrLGRbZ109e3M6bmV3IGJuZSxwOnB9LGRbZ10ucy5jdXJ2ZXM9cy5jdXJ2ZXMsdSYmZysrLG1bZ109W10pOm1bZ10ucHVzaCh7aDpzLHA6cFswXX0pO2lmKCFkWzBdKXJldHVybiBuKG8pO2lmKGQubGVuZ3RoPjEpe2xldCB0PSExO2NvbnN0IGU9W107Zm9yKGxldCB0PTAsZT1kLmxlbmd0aDt0PGU7dCsrKWhbdF09W107Zm9yKGxldCBuPTAscj1kLmxlbmd0aDtuPHI7bisrKXtjb25zdCByPW1bbl07Zm9yKGxldCBvPTA7bzxyLmxlbmd0aDtvKyspe2NvbnN0IGE9cltvXTtsZXQgcz0hMDtmb3IobGV0IHI9MDtyPGQubGVuZ3RoO3IrKylpKGEucCxkW3JdLnApJiYobiE9PXImJmUucHVzaCh7ZnJvbXM6bix0b3M6cixob2xlOm99KSxzPyhzPSExLGhbcl0ucHVzaChhKSk6dD0hMCk7cyYmaFtuXS5wdXNoKGEpfX1lLmxlbmd0aD4wJiYodHx8KG09aCkpfWZvcihsZXQgdD0wLGU9ZC5sZW5ndGg7dDxlO3QrKyl7bD1kW3RdLnMsYy5wdXNoKGwpLGY9bVt0XTtmb3IobGV0IHQ9MCxlPWYubGVuZ3RoO3Q8ZTt0KyspbC5ob2xlcy5wdXNoKGZbdF0uaCl9cmV0dXJuIGN9fWNsYXNzIEtuZXtjb25zdHJ1Y3Rvcih0KXt0aGlzLnR5cGU9IkZvbnQiLHRoaXMuZGF0YT10fWdlbmVyYXRlU2hhcGVzKHQsZT0xMDApe2NvbnN0IG49W10saT0oZnVuY3Rpb24gcih0LGUsbil7Y29uc3QgaT1BcnJheS5mcm9tKHQpLHI9ZS9uLnJlc29sdXRpb24sbz0obi5ib3VuZGluZ0JveC55TWF4LW4uYm91bmRpbmdCb3gueU1pbituLnVuZGVybGluZVRoaWNrbmVzcykqcixhPVtdO2xldCBzPTAsbD0wO2ZvcihsZXQgdD0wO3Q8aS5sZW5ndGg7dCsrKXtjb25zdCBlPWlbdF07aWYoIlxuIj09PWUpcz0wLGwtPW87ZWxzZXtjb25zdCB0PVpuZShlLHIscyxsLG4pO3MrPXQub2Zmc2V0WCxhLnB1c2godC5wYXRoKX19cmV0dXJuIGF9KSh0LGUsdGhpcy5kYXRhKTtmb3IobGV0IHQ9MCxlPWkubGVuZ3RoO3Q8ZTt0KyspQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkobixpW3RdLnRvU2hhcGVzKCkpO3JldHVybiBufX1mdW5jdGlvbiBabmUodCxlLG4saSxyKXtjb25zdCBvPXIuZ2x5cGhzW3RdfHxyLmdseXBoc1siPyJdO2lmKCFvKXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoJ1RIUkVFLkZvbnQ6IGNoYXJhY3RlciAiJyt0KyciIGRvZXMgbm90IGV4aXN0cyBpbiBmb250IGZhbWlseSAnK3IuZmFtaWx5TmFtZSsiLiIpO2NvbnN0IGE9bmV3ICRuZTtsZXQgcyxsLGMsdSxoLGQscCxmO2lmKG8ubyl7Y29uc3QgdD1vLl9jYWNoZWRPdXRsaW5lfHwoby5fY2FjaGVkT3V0bGluZT1vLm8uc3BsaXQoIiAiKSk7Zm9yKGxldCByPTAsbz10Lmxlbmd0aDtyPG87KXtzd2l0Y2godFtyKytdKXtjYXNlIm0iOnM9dFtyKytdKmUrbixsPXRbcisrXSplK2ksYS5tb3ZlVG8ocyxsKTticmVhaztjYXNlImwiOnM9dFtyKytdKmUrbixsPXRbcisrXSplK2ksYS5saW5lVG8ocyxsKTticmVhaztjYXNlInEiOmM9dFtyKytdKmUrbix1PXRbcisrXSplK2ksaD10W3IrK10qZStuLGQ9dFtyKytdKmUraSxhLnF1YWRyYXRpY0N1cnZlVG8oaCxkLGMsdSk7YnJlYWs7Y2FzZSJiIjpjPXRbcisrXSplK24sdT10W3IrK10qZStpLGg9dFtyKytdKmUrbixkPXRbcisrXSplK2kscD10W3IrK10qZStuLGY9dFtyKytdKmUraSxhLmJlemllckN1cnZlVG8oaCxkLHAsZixjLHUpfX19cmV0dXJue29mZnNldFg6by5oYSplLHBhdGg6YX19S25lLnByb3RvdHlwZS5pc0ZvbnQ9ITA7bGV0IEpuZTtjb25zdCBRbmU9e2dldENvbnRleHQ6ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwPT09Sm5lJiYoSm5lPW5ldyh3aW5kb3cuQXVkaW9Db250ZXh0fHx3aW5kb3cud2Via2l0QXVkaW9Db250ZXh0KSksSm5lfSxzZXRDb250ZXh0OmZ1bmN0aW9uKHQpe0puZT10fX07Y2xhc3MgdGllIGV4dGVuZHMgaG5le2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpfWxvYWQodCxlLG4saSl7Y29uc3Qgcj10aGlzLG89bmV3IHBuZSh0aGlzLm1hbmFnZXIpO28uc2V0UmVzcG9uc2VUeXBlKCJhcnJheWJ1ZmZlciIpLG8uc2V0UGF0aCh0aGlzLnBhdGgpLG8uc2V0UmVxdWVzdEhlYWRlcih0aGlzLnJlcXVlc3RIZWFkZXIpLG8uc2V0V2l0aENyZWRlbnRpYWxzKHRoaXMud2l0aENyZWRlbnRpYWxzKSxvLmxvYWQodCwoZnVuY3Rpb24obil7dHJ5e2NvbnN0IHQ9bi5zbGljZSgwKTtRbmUuZ2V0Q29udGV4dCgpLmRlY29kZUF1ZGlvRGF0YSh0LChmdW5jdGlvbih0KXtlKHQpfSkpfWNhdGNoKGUpe2k/aShlKTpjb25zb2xlLmVycm9yKGUpLHIubWFuYWdlci5pdGVtRXJyb3IodCl9fSksbixpKX19Y2xhc3MgZWllIGV4dGVuZHMgSG5le2NvbnN0cnVjdG9yKHQsZSxuPTEpe3N1cGVyKHZvaWQgMCxuKTtjb25zdCBpPShuZXcgczR0KS5zZXQodCkscj0obmV3IHM0dCkuc2V0KGUpLG89bmV3IEg1dChpLnIsaS5nLGkuYiksYT1uZXcgSDV0KHIucixyLmcsci5iKSxzPU1hdGguc3FydChNYXRoLlBJKSxsPXMqTWF0aC5zcXJ0KC43NSk7dGhpcy5zaC5jb2VmZmljaWVudHNbMF0uY29weShvKS5hZGQoYSkubXVsdGlwbHlTY2FsYXIocyksdGhpcy5zaC5jb2VmZmljaWVudHNbMV0uY29weShvKS5zdWIoYSkubXVsdGlwbHlTY2FsYXIobCl9fWVpZS5wcm90b3R5cGUuaXNIZW1pc3BoZXJlTGlnaHRQcm9iZT0hMDtjbGFzcyBuaWUgZXh0ZW5kcyBIbmV7Y29uc3RydWN0b3IodCxlPTEpe3N1cGVyKHZvaWQgMCxlKTtjb25zdCBuPShuZXcgczR0KS5zZXQodCk7dGhpcy5zaC5jb2VmZmljaWVudHNbMF0uc2V0KG4ucixuLmcsbi5iKS5tdWx0aXBseVNjYWxhcigyKk1hdGguc3FydChNYXRoLlBJKSl9fW5pZS5wcm90b3R5cGUuaXNBbWJpZW50TGlnaHRQcm9iZT0hMDtjb25zdCBpaWU9bmV3IGczdCxyaWU9bmV3IGczdDtjbGFzcyBvaWV7Y29uc3RydWN0b3IodD0hMCl7dGhpcy5hdXRvU3RhcnQ9dCx0aGlzLnN0YXJ0VGltZT0wLHRoaXMub2xkVGltZT0wLHRoaXMuZWxhcHNlZFRpbWU9MCx0aGlzLnJ1bm5pbmc9ITF9c3RhcnQoKXt0aGlzLnN0YXJ0VGltZT1haWUoKSx0aGlzLm9sZFRpbWU9dGhpcy5zdGFydFRpbWUsdGhpcy5lbGFwc2VkVGltZT0wLHRoaXMucnVubmluZz0hMH1zdG9wKCl7dGhpcy5nZXRFbGFwc2VkVGltZSgpLHRoaXMucnVubmluZz0hMSx0aGlzLmF1dG9TdGFydD0hMX1nZXRFbGFwc2VkVGltZSgpe3JldHVybiB0aGlzLmdldERlbHRhKCksdGhpcy5lbGFwc2VkVGltZX1nZXREZWx0YSgpe2xldCB0PTA7aWYodGhpcy5hdXRvU3RhcnQmJiF0aGlzLnJ1bm5pbmcpcmV0dXJuIHRoaXMuc3RhcnQoKSwwO2lmKHRoaXMucnVubmluZyl7Y29uc3QgZT1haWUoKTt0PShlLXRoaXMub2xkVGltZSkvMWUzLHRoaXMub2xkVGltZT1lLHRoaXMuZWxhcHNlZFRpbWUrPXR9cmV0dXJuIHR9fWZ1bmN0aW9uIGFpZSgpe3JldHVybigidW5kZWZpbmVkIj09dHlwZW9mIHBlcmZvcm1hbmNlP0RhdGU6cGVyZm9ybWFuY2UpLm5vdygpfWNvbnN0IHNpZT1uZXcgSDV0LGxpZT1uZXcgQjV0LGNpZT1uZXcgSDV0LHVpZT1uZXcgSDV0O2NsYXNzIGhpZSBleHRlbmRzIFYzdHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMudHlwZT0iQXVkaW8iLHRoaXMubGlzdGVuZXI9dCx0aGlzLmNvbnRleHQ9dC5jb250ZXh0LHRoaXMuZ2Fpbj10aGlzLmNvbnRleHQuY3JlYXRlR2FpbigpLHRoaXMuZ2Fpbi5jb25uZWN0KHQuZ2V0SW5wdXQoKSksdGhpcy5hdXRvcGxheT0hMSx0aGlzLmJ1ZmZlcj1udWxsLHRoaXMuZGV0dW5lPTAsdGhpcy5sb29wPSExLHRoaXMubG9vcFN0YXJ0PTAsdGhpcy5sb29wRW5kPTAsdGhpcy5vZmZzZXQ9MCx0aGlzLmR1cmF0aW9uPXZvaWQgMCx0aGlzLnBsYXliYWNrUmF0ZT0xLHRoaXMuaXNQbGF5aW5nPSExLHRoaXMuaGFzUGxheWJhY2tDb250cm9sPSEwLHRoaXMuc291cmNlPW51bGwsdGhpcy5zb3VyY2VUeXBlPSJlbXB0eSIsdGhpcy5fc3RhcnRlZEF0PTAsdGhpcy5fcHJvZ3Jlc3M9MCx0aGlzLl9jb25uZWN0ZWQ9ITEsdGhpcy5maWx0ZXJzPVtdfWdldE91dHB1dCgpe3JldHVybiB0aGlzLmdhaW59c2V0Tm9kZVNvdXJjZSh0KXtyZXR1cm4gdGhpcy5oYXNQbGF5YmFja0NvbnRyb2w9ITEsdGhpcy5zb3VyY2VUeXBlPSJhdWRpb05vZGUiLHRoaXMuc291cmNlPXQsdGhpcy5jb25uZWN0KCksdGhpc31zZXRNZWRpYUVsZW1lbnRTb3VyY2UodCl7cmV0dXJuIHRoaXMuaGFzUGxheWJhY2tDb250cm9sPSExLHRoaXMuc291cmNlVHlwZT0ibWVkaWFOb2RlIix0aGlzLnNvdXJjZT10aGlzLmNvbnRleHQuY3JlYXRlTWVkaWFFbGVtZW50U291cmNlKHQpLHRoaXMuY29ubmVjdCgpLHRoaXN9c2V0TWVkaWFTdHJlYW1Tb3VyY2UodCl7cmV0dXJuIHRoaXMuaGFzUGxheWJhY2tDb250cm9sPSExLHRoaXMuc291cmNlVHlwZT0ibWVkaWFTdHJlYW1Ob2RlIix0aGlzLnNvdXJjZT10aGlzLmNvbnRleHQuY3JlYXRlTWVkaWFTdHJlYW1Tb3VyY2UodCksdGhpcy5jb25uZWN0KCksdGhpc31zZXRCdWZmZXIodCl7cmV0dXJuIHRoaXMuYnVmZmVyPXQsdGhpcy5zb3VyY2VUeXBlPSJidWZmZXIiLHRoaXMuYXV0b3BsYXkmJnRoaXMucGxheSgpLHRoaXN9cGxheSh0PTApe2lmKCEwPT09dGhpcy5pc1BsYXlpbmcpcmV0dXJuIHZvaWQgY29uc29sZS53YXJuKCJUSFJFRS5BdWRpbzogQXVkaW8gaXMgYWxyZWFkeSBwbGF5aW5nLiIpO2lmKCExPT09dGhpcy5oYXNQbGF5YmFja0NvbnRyb2wpcmV0dXJuIHZvaWQgY29uc29sZS53YXJuKCJUSFJFRS5BdWRpbzogdGhpcyBBdWRpbyBoYXMgbm8gcGxheWJhY2sgY29udHJvbC4iKTt0aGlzLl9zdGFydGVkQXQ9dGhpcy5jb250ZXh0LmN1cnJlbnRUaW1lK3Q7Y29uc3QgZT10aGlzLmNvbnRleHQuY3JlYXRlQnVmZmVyU291cmNlKCk7cmV0dXJuIGUuYnVmZmVyPXRoaXMuYnVmZmVyLGUubG9vcD10aGlzLmxvb3AsZS5sb29wU3RhcnQ9dGhpcy5sb29wU3RhcnQsZS5sb29wRW5kPXRoaXMubG9vcEVuZCxlLm9uZW5kZWQ9dGhpcy5vbkVuZGVkLmJpbmQodGhpcyksZS5zdGFydCh0aGlzLl9zdGFydGVkQXQsdGhpcy5fcHJvZ3Jlc3MrdGhpcy5vZmZzZXQsdGhpcy5kdXJhdGlvbiksdGhpcy5pc1BsYXlpbmc9ITAsdGhpcy5zb3VyY2U9ZSx0aGlzLnNldERldHVuZSh0aGlzLmRldHVuZSksdGhpcy5zZXRQbGF5YmFja1JhdGUodGhpcy5wbGF5YmFja1JhdGUpLHRoaXMuY29ubmVjdCgpfXBhdXNlKCl7aWYoITEhPT10aGlzLmhhc1BsYXliYWNrQ29udHJvbClyZXR1cm4hMD09PXRoaXMuaXNQbGF5aW5nJiYodGhpcy5fcHJvZ3Jlc3MrPU1hdGgubWF4KHRoaXMuY29udGV4dC5jdXJyZW50VGltZS10aGlzLl9zdGFydGVkQXQsMCkqdGhpcy5wbGF5YmFja1JhdGUsITA9PT10aGlzLmxvb3AmJih0aGlzLl9wcm9ncmVzcz10aGlzLl9wcm9ncmVzcyUodGhpcy5kdXJhdGlvbnx8dGhpcy5idWZmZXIuZHVyYXRpb24pKSx0aGlzLnNvdXJjZS5zdG9wKCksdGhpcy5zb3VyY2Uub25lbmRlZD1udWxsLHRoaXMuaXNQbGF5aW5nPSExKSx0aGlzO2NvbnNvbGUud2FybigiVEhSRUUuQXVkaW86IHRoaXMgQXVkaW8gaGFzIG5vIHBsYXliYWNrIGNvbnRyb2wuIil9c3RvcCgpe2lmKCExIT09dGhpcy5oYXNQbGF5YmFja0NvbnRyb2wpcmV0dXJuIHRoaXMuX3Byb2dyZXNzPTAsdGhpcy5zb3VyY2Uuc3RvcCgpLHRoaXMuc291cmNlLm9uZW5kZWQ9bnVsbCx0aGlzLmlzUGxheWluZz0hMSx0aGlzO2NvbnNvbGUud2FybigiVEhSRUUuQXVkaW86IHRoaXMgQXVkaW8gaGFzIG5vIHBsYXliYWNrIGNvbnRyb2wuIil9Y29ubmVjdCgpe2lmKHRoaXMuZmlsdGVycy5sZW5ndGg+MCl7dGhpcy5zb3VyY2UuY29ubmVjdCh0aGlzLmZpbHRlcnNbMF0pO2ZvcihsZXQgdD0xLGU9dGhpcy5maWx0ZXJzLmxlbmd0aDt0PGU7dCsrKXRoaXMuZmlsdGVyc1t0LTFdLmNvbm5lY3QodGhpcy5maWx0ZXJzW3RdKTt0aGlzLmZpbHRlcnNbdGhpcy5maWx0ZXJzLmxlbmd0aC0xXS5jb25uZWN0KHRoaXMuZ2V0T3V0cHV0KCkpfWVsc2UgdGhpcy5zb3VyY2UuY29ubmVjdCh0aGlzLmdldE91dHB1dCgpKTtyZXR1cm4gdGhpcy5fY29ubmVjdGVkPSEwLHRoaXN9ZGlzY29ubmVjdCgpe2lmKHRoaXMuZmlsdGVycy5sZW5ndGg+MCl7dGhpcy5zb3VyY2UuZGlzY29ubmVjdCh0aGlzLmZpbHRlcnNbMF0pO2ZvcihsZXQgdD0xLGU9dGhpcy5maWx0ZXJzLmxlbmd0aDt0PGU7dCsrKXRoaXMuZmlsdGVyc1t0LTFdLmRpc2Nvbm5lY3QodGhpcy5maWx0ZXJzW3RdKTt0aGlzLmZpbHRlcnNbdGhpcy5maWx0ZXJzLmxlbmd0aC0xXS5kaXNjb25uZWN0KHRoaXMuZ2V0T3V0cHV0KCkpfWVsc2UgdGhpcy5zb3VyY2UuZGlzY29ubmVjdCh0aGlzLmdldE91dHB1dCgpKTtyZXR1cm4gdGhpcy5fY29ubmVjdGVkPSExLHRoaXN9Z2V0RmlsdGVycygpe3JldHVybiB0aGlzLmZpbHRlcnN9c2V0RmlsdGVycyh0KXtyZXR1cm4gdHx8KHQ9W10pLCEwPT09dGhpcy5fY29ubmVjdGVkPyh0aGlzLmRpc2Nvbm5lY3QoKSx0aGlzLmZpbHRlcnM9dC5zbGljZSgpLHRoaXMuY29ubmVjdCgpKTp0aGlzLmZpbHRlcnM9dC5zbGljZSgpLHRoaXN9c2V0RGV0dW5lKHQpe2lmKHRoaXMuZGV0dW5lPXQsdm9pZCAwIT09dGhpcy5zb3VyY2UuZGV0dW5lKXJldHVybiEwPT09dGhpcy5pc1BsYXlpbmcmJnRoaXMuc291cmNlLmRldHVuZS5zZXRUYXJnZXRBdFRpbWUodGhpcy5kZXR1bmUsdGhpcy5jb250ZXh0LmN1cnJlbnRUaW1lLC4wMSksdGhpc31nZXREZXR1bmUoKXtyZXR1cm4gdGhpcy5kZXR1bmV9Z2V0RmlsdGVyKCl7cmV0dXJuIHRoaXMuZ2V0RmlsdGVycygpWzBdfXNldEZpbHRlcih0KXtyZXR1cm4gdGhpcy5zZXRGaWx0ZXJzKHQ/W3RdOltdKX1zZXRQbGF5YmFja1JhdGUodCl7aWYoITEhPT10aGlzLmhhc1BsYXliYWNrQ29udHJvbClyZXR1cm4gdGhpcy5wbGF5YmFja1JhdGU9dCwhMD09PXRoaXMuaXNQbGF5aW5nJiZ0aGlzLnNvdXJjZS5wbGF5YmFja1JhdGUuc2V0VGFyZ2V0QXRUaW1lKHRoaXMucGxheWJhY2tSYXRlLHRoaXMuY29udGV4dC5jdXJyZW50VGltZSwuMDEpLHRoaXM7Y29uc29sZS53YXJuKCJUSFJFRS5BdWRpbzogdGhpcyBBdWRpbyBoYXMgbm8gcGxheWJhY2sgY29udHJvbC4iKX1nZXRQbGF5YmFja1JhdGUoKXtyZXR1cm4gdGhpcy5wbGF5YmFja1JhdGV9b25FbmRlZCgpe3RoaXMuaXNQbGF5aW5nPSExfWdldExvb3AoKXtyZXR1cm4hMT09PXRoaXMuaGFzUGxheWJhY2tDb250cm9sPyhjb25zb2xlLndhcm4oIlRIUkVFLkF1ZGlvOiB0aGlzIEF1ZGlvIGhhcyBubyBwbGF5YmFjayBjb250cm9sLiIpLCExKTp0aGlzLmxvb3B9c2V0TG9vcCh0KXtpZighMSE9PXRoaXMuaGFzUGxheWJhY2tDb250cm9sKXJldHVybiB0aGlzLmxvb3A9dCwhMD09PXRoaXMuaXNQbGF5aW5nJiYodGhpcy5zb3VyY2UubG9vcD10aGlzLmxvb3ApLHRoaXM7Y29uc29sZS53YXJuKCJUSFJFRS5BdWRpbzogdGhpcyBBdWRpbyBoYXMgbm8gcGxheWJhY2sgY29udHJvbC4iKX1zZXRMb29wU3RhcnQodCl7cmV0dXJuIHRoaXMubG9vcFN0YXJ0PXQsdGhpc31zZXRMb29wRW5kKHQpe3JldHVybiB0aGlzLmxvb3BFbmQ9dCx0aGlzfWdldFZvbHVtZSgpe3JldHVybiB0aGlzLmdhaW4uZ2Fpbi52YWx1ZX1zZXRWb2x1bWUodCl7cmV0dXJuIHRoaXMuZ2Fpbi5nYWluLnNldFRhcmdldEF0VGltZSh0LHRoaXMuY29udGV4dC5jdXJyZW50VGltZSwuMDEpLHRoaXN9fWNvbnN0IGRpZT1uZXcgSDV0LHBpZT1uZXcgQjV0LGZpZT1uZXcgSDV0LG1pZT1uZXcgSDV0O2NsYXNzIGdpZXtjb25zdHJ1Y3Rvcih0LGU9MjA0OCl7dGhpcy5hbmFseXNlcj10LmNvbnRleHQuY3JlYXRlQW5hbHlzZXIoKSx0aGlzLmFuYWx5c2VyLmZmdFNpemU9ZSx0aGlzLmRhdGE9bmV3IFVpbnQ4QXJyYXkodGhpcy5hbmFseXNlci5mcmVxdWVuY3lCaW5Db3VudCksdC5nZXRPdXRwdXQoKS5jb25uZWN0KHRoaXMuYW5hbHlzZXIpfWdldEZyZXF1ZW5jeURhdGEoKXtyZXR1cm4gdGhpcy5hbmFseXNlci5nZXRCeXRlRnJlcXVlbmN5RGF0YSh0aGlzLmRhdGEpLHRoaXMuZGF0YX1nZXRBdmVyYWdlRnJlcXVlbmN5KCl7bGV0IHQ9MDtjb25zdCBlPXRoaXMuZ2V0RnJlcXVlbmN5RGF0YSgpO2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7bisrKXQrPWVbbl07cmV0dXJuIHQvZS5sZW5ndGh9fWNsYXNzIF9pZXtjb25zdHJ1Y3Rvcih0LGUsbil7bGV0IGkscixvO3N3aXRjaCh0aGlzLmJpbmRpbmc9dCx0aGlzLnZhbHVlU2l6ZT1uLGUpe2Nhc2UicXVhdGVybmlvbiI6aT10aGlzLl9zbGVycCxyPXRoaXMuX3NsZXJwQWRkaXRpdmUsbz10aGlzLl9zZXRBZGRpdGl2ZUlkZW50aXR5UXVhdGVybmlvbix0aGlzLmJ1ZmZlcj1uZXcgRmxvYXQ2NEFycmF5KDYqbiksdGhpcy5fd29ya0luZGV4PTU7YnJlYWs7Y2FzZSJzdHJpbmciOmNhc2UiYm9vbCI6aT10aGlzLl9zZWxlY3Qscj10aGlzLl9zZWxlY3Qsbz10aGlzLl9zZXRBZGRpdGl2ZUlkZW50aXR5T3RoZXIsdGhpcy5idWZmZXI9bmV3IEFycmF5KDUqbik7YnJlYWs7ZGVmYXVsdDppPXRoaXMuX2xlcnAscj10aGlzLl9sZXJwQWRkaXRpdmUsbz10aGlzLl9zZXRBZGRpdGl2ZUlkZW50aXR5TnVtZXJpYyx0aGlzLmJ1ZmZlcj1uZXcgRmxvYXQ2NEFycmF5KDUqbil9dGhpcy5fbWl4QnVmZmVyUmVnaW9uPWksdGhpcy5fbWl4QnVmZmVyUmVnaW9uQWRkaXRpdmU9cix0aGlzLl9zZXRJZGVudGl0eT1vLHRoaXMuX29yaWdJbmRleD0zLHRoaXMuX2FkZEluZGV4PTQsdGhpcy5jdW11bGF0aXZlV2VpZ2h0PTAsdGhpcy5jdW11bGF0aXZlV2VpZ2h0QWRkaXRpdmU9MCx0aGlzLnVzZUNvdW50PTAsdGhpcy5yZWZlcmVuY2VDb3VudD0wfWFjY3VtdWxhdGUodCxlKXtjb25zdCBuPXRoaXMuYnVmZmVyLGk9dGhpcy52YWx1ZVNpemUscj10KmkraTtsZXQgbz10aGlzLmN1bXVsYXRpdmVXZWlnaHQ7aWYoMD09PW8pe2ZvcihsZXQgdD0wO3QhPT1pOysrdCluW3IrdF09blt0XTtvPWV9ZWxzZXtvKz1lO3RoaXMuX21peEJ1ZmZlclJlZ2lvbihuLHIsMCxlL28saSl9dGhpcy5jdW11bGF0aXZlV2VpZ2h0PW99YWNjdW11bGF0ZUFkZGl0aXZlKHQpe2NvbnN0IGU9dGhpcy5idWZmZXIsbj10aGlzLnZhbHVlU2l6ZSxpPW4qdGhpcy5fYWRkSW5kZXg7MD09PXRoaXMuY3VtdWxhdGl2ZVdlaWdodEFkZGl0aXZlJiZ0aGlzLl9zZXRJZGVudGl0eSgpLHRoaXMuX21peEJ1ZmZlclJlZ2lvbkFkZGl0aXZlKGUsaSwwLHQsbiksdGhpcy5jdW11bGF0aXZlV2VpZ2h0QWRkaXRpdmUrPXR9YXBwbHkodCl7Y29uc3QgZT10aGlzLnZhbHVlU2l6ZSxuPXRoaXMuYnVmZmVyLGk9dCplK2Uscj10aGlzLmN1bXVsYXRpdmVXZWlnaHQsbz10aGlzLmN1bXVsYXRpdmVXZWlnaHRBZGRpdGl2ZSxhPXRoaXMuYmluZGluZztpZih0aGlzLmN1bXVsYXRpdmVXZWlnaHQ9MCx0aGlzLmN1bXVsYXRpdmVXZWlnaHRBZGRpdGl2ZT0wLHI8MSl7dGhpcy5fbWl4QnVmZmVyUmVnaW9uKG4saSxlKnRoaXMuX29yaWdJbmRleCwxLXIsZSl9bz4wJiZ0aGlzLl9taXhCdWZmZXJSZWdpb25BZGRpdGl2ZShuLGksdGhpcy5fYWRkSW5kZXgqZSwxLGUpO2ZvcihsZXQgdD1lLHI9ZStlO3QhPT1yOysrdClpZihuW3RdIT09blt0K2VdKXthLnNldFZhbHVlKG4saSk7YnJlYWt9fXNhdmVPcmlnaW5hbFN0YXRlKCl7Y29uc3QgdD10aGlzLmJ1ZmZlcixlPXRoaXMudmFsdWVTaXplLG49ZSp0aGlzLl9vcmlnSW5kZXg7dGhpcy5iaW5kaW5nLmdldFZhbHVlKHQsbik7Zm9yKGxldCBpPWUscj1uO2khPT1yOysraSl0W2ldPXRbbitpJWVdO3RoaXMuX3NldElkZW50aXR5KCksdGhpcy5jdW11bGF0aXZlV2VpZ2h0PTAsdGhpcy5jdW11bGF0aXZlV2VpZ2h0QWRkaXRpdmU9MH1yZXN0b3JlT3JpZ2luYWxTdGF0ZSgpe3RoaXMuYmluZGluZy5zZXRWYWx1ZSh0aGlzLmJ1ZmZlciwzKnRoaXMudmFsdWVTaXplKX1fc2V0QWRkaXRpdmVJZGVudGl0eU51bWVyaWMoKXtjb25zdCB0PXRoaXMuX2FkZEluZGV4KnRoaXMudmFsdWVTaXplLGU9dCt0aGlzLnZhbHVlU2l6ZTtmb3IobGV0IG49dDtuPGU7bisrKXRoaXMuYnVmZmVyW25dPTB9X3NldEFkZGl0aXZlSWRlbnRpdHlRdWF0ZXJuaW9uKCl7dGhpcy5fc2V0QWRkaXRpdmVJZGVudGl0eU51bWVyaWMoKSx0aGlzLmJ1ZmZlclt0aGlzLl9hZGRJbmRleCp0aGlzLnZhbHVlU2l6ZSszXT0xfV9zZXRBZGRpdGl2ZUlkZW50aXR5T3RoZXIoKXtjb25zdCB0PXRoaXMuX29yaWdJbmRleCp0aGlzLnZhbHVlU2l6ZSxlPXRoaXMuX2FkZEluZGV4KnRoaXMudmFsdWVTaXplO2ZvcihsZXQgbj0wO248dGhpcy52YWx1ZVNpemU7bisrKXRoaXMuYnVmZmVyW2Urbl09dGhpcy5idWZmZXJbdCtuXX1fc2VsZWN0KHQsZSxuLGkscil7aWYoaT49LjUpZm9yKGxldCBpPTA7aSE9PXI7KytpKXRbZStpXT10W24raV19X3NsZXJwKHQsZSxuLGkpe0I1dC5zbGVycEZsYXQodCxlLHQsZSx0LG4saSl9X3NsZXJwQWRkaXRpdmUodCxlLG4saSxyKXtjb25zdCBvPXRoaXMuX3dvcmtJbmRleCpyO0I1dC5tdWx0aXBseVF1YXRlcm5pb25zRmxhdCh0LG8sdCxlLHQsbiksQjV0LnNsZXJwRmxhdCh0LGUsdCxlLHQsbyxpKX1fbGVycCh0LGUsbixpLHIpe2NvbnN0IG89MS1pO2ZvcihsZXQgYT0wO2EhPT1yOysrYSl7Y29uc3Qgcj1lK2E7dFtyXT10W3JdKm8rdFtuK2FdKml9fV9sZXJwQWRkaXRpdmUodCxlLG4saSxyKXtmb3IobGV0IG89MDtvIT09cjsrK28pe2NvbnN0IHI9ZStvO3Rbcl09dFtyXSt0W24rb10qaX19fWNvbnN0IHlpZT0iXFxbXFxdXFwuOlxcLyIsdmllPW5ldyBSZWdFeHAoIltcXFtcXF1cXC46XFwvXSIsImciKSxiaWU9IlteXFxbXFxdXFwuOlxcL10iLHhpZT0iW14iK3lpZS5yZXBsYWNlKCJcXC4iLCIiKSsiXSIsd2llPS8oKD86V0MrW1wvOl0pKikvLnNvdXJjZS5yZXBsYWNlKCJXQyIsYmllKSxTaWU9LyhXQ09EKyk/Ly5zb3VyY2UucmVwbGFjZSgiV0NPRCIseGllKSxNaWU9Lyg/OlwuKFdDKykoPzpcWyguKylcXSk/KT8vLnNvdXJjZS5yZXBsYWNlKCJXQyIsYmllKSxFaWU9L1wuKFdDKykoPzpcWyguKylcXSk/Ly5zb3VyY2UucmVwbGFjZSgiV0MiLGJpZSksVGllPW5ldyBSZWdFeHAoIl4iK3dpZStTaWUrTWllK0VpZSsiJCIpLENpZT1bIm1hdGVyaWFsIiwibWF0ZXJpYWxzIiwiYm9uZXMiXTtjbGFzcyBBaWV7Y29uc3RydWN0b3IodCxlLG4pe3RoaXMucGF0aD1lLHRoaXMucGFyc2VkUGF0aD1ufHxBaWUucGFyc2VUcmFja05hbWUoZSksdGhpcy5ub2RlPUFpZS5maW5kTm9kZSh0LHRoaXMucGFyc2VkUGF0aC5ub2RlTmFtZSl8fHQsdGhpcy5yb290Tm9kZT10LHRoaXMuZ2V0VmFsdWU9dGhpcy5fZ2V0VmFsdWVfdW5ib3VuZCx0aGlzLnNldFZhbHVlPXRoaXMuX3NldFZhbHVlX3VuYm91bmR9c3RhdGljIGNyZWF0ZSh0LGUsbil7cmV0dXJuIHQmJnQuaXNBbmltYXRpb25PYmplY3RHcm91cD9uZXcgQWllLkNvbXBvc2l0ZSh0LGUsbik6bmV3IEFpZSh0LGUsbil9c3RhdGljIHNhbml0aXplTm9kZU5hbWUodCl7cmV0dXJuIHQucmVwbGFjZSgvXHMvZywiXyIpLnJlcGxhY2UodmllLCIiKX1zdGF0aWMgcGFyc2VUcmFja05hbWUodCl7Y29uc3QgZT1UaWUuZXhlYyh0KTtpZighZSl0aHJvdyBuZXcgRXJyb3IoIlByb3BlcnR5QmluZGluZzogQ2Fubm90IHBhcnNlIHRyYWNrTmFtZTogIit0KTtjb25zdCBuPXtub2RlTmFtZTplWzJdLG9iamVjdE5hbWU6ZVszXSxvYmplY3RJbmRleDplWzRdLHByb3BlcnR5TmFtZTplWzVdLHByb3BlcnR5SW5kZXg6ZVs2XX0saT1uLm5vZGVOYW1lJiZuLm5vZGVOYW1lLmxhc3RJbmRleE9mKCIuIik7aWYodm9pZCAwIT09aSYmLTEhPT1pKXtjb25zdCB0PW4ubm9kZU5hbWUuc3Vic3RyaW5nKGkrMSk7LTEhPT1DaWUuaW5kZXhPZih0KSYmKG4ubm9kZU5hbWU9bi5ub2RlTmFtZS5zdWJzdHJpbmcoMCxpKSxuLm9iamVjdE5hbWU9dCl9aWYobnVsbD09PW4ucHJvcGVydHlOYW1lfHwwPT09bi5wcm9wZXJ0eU5hbWUubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiUHJvcGVydHlCaW5kaW5nOiBjYW4gbm90IHBhcnNlIHByb3BlcnR5TmFtZSBmcm9tIHRyYWNrTmFtZTogIit0KTtyZXR1cm4gbn1zdGF0aWMgZmluZE5vZGUodCxlKXtpZighZXx8IiI9PT1lfHwiLiI9PT1lfHwtMT09PWV8fGU9PT10Lm5hbWV8fGU9PT10LnV1aWQpcmV0dXJuIHQ7aWYodC5za2VsZXRvbil7Y29uc3Qgbj10LnNrZWxldG9uLmdldEJvbmVCeU5hbWUoZSk7aWYodm9pZCAwIT09bilyZXR1cm4gbn1pZih0LmNoaWxkcmVuKXtjb25zdCBuPWZ1bmN0aW9uKHQpe2ZvcihsZXQgaT0wO2k8dC5sZW5ndGg7aSsrKXtjb25zdCByPXRbaV07aWYoci5uYW1lPT09ZXx8ci51dWlkPT09ZSlyZXR1cm4gcjtjb25zdCBvPW4oci5jaGlsZHJlbik7aWYobylyZXR1cm4gb31yZXR1cm4gbnVsbH0saT1uKHQuY2hpbGRyZW4pO2lmKGkpcmV0dXJuIGl9cmV0dXJuIG51bGx9X2dldFZhbHVlX3VuYXZhaWxhYmxlKCl7fV9zZXRWYWx1ZV91bmF2YWlsYWJsZSgpe31fZ2V0VmFsdWVfZGlyZWN0KHQsZSl7dFtlXT10aGlzLm5vZGVbdGhpcy5wcm9wZXJ0eU5hbWVdfV9nZXRWYWx1ZV9hcnJheSh0LGUpe2NvbnN0IG49dGhpcy5yZXNvbHZlZFByb3BlcnR5O2ZvcihsZXQgaT0wLHI9bi5sZW5ndGg7aSE9PXI7KytpKXRbZSsrXT1uW2ldfV9nZXRWYWx1ZV9hcnJheUVsZW1lbnQodCxlKXt0W2VdPXRoaXMucmVzb2x2ZWRQcm9wZXJ0eVt0aGlzLnByb3BlcnR5SW5kZXhdfV9nZXRWYWx1ZV90b0FycmF5KHQsZSl7dGhpcy5yZXNvbHZlZFByb3BlcnR5LnRvQXJyYXkodCxlKX1fc2V0VmFsdWVfZGlyZWN0KHQsZSl7dGhpcy50YXJnZXRPYmplY3RbdGhpcy5wcm9wZXJ0eU5hbWVdPXRbZV19X3NldFZhbHVlX2RpcmVjdF9zZXROZWVkc1VwZGF0ZSh0LGUpe3RoaXMudGFyZ2V0T2JqZWN0W3RoaXMucHJvcGVydHlOYW1lXT10W2VdLHRoaXMudGFyZ2V0T2JqZWN0Lm5lZWRzVXBkYXRlPSEwfV9zZXRWYWx1ZV9kaXJlY3Rfc2V0TWF0cml4V29ybGROZWVkc1VwZGF0ZSh0LGUpe3RoaXMudGFyZ2V0T2JqZWN0W3RoaXMucHJvcGVydHlOYW1lXT10W2VdLHRoaXMudGFyZ2V0T2JqZWN0Lm1hdHJpeFdvcmxkTmVlZHNVcGRhdGU9ITB9X3NldFZhbHVlX2FycmF5KHQsZSl7Y29uc3Qgbj10aGlzLnJlc29sdmVkUHJvcGVydHk7Zm9yKGxldCBpPTAscj1uLmxlbmd0aDtpIT09cjsrK2kpbltpXT10W2UrK119X3NldFZhbHVlX2FycmF5X3NldE5lZWRzVXBkYXRlKHQsZSl7Y29uc3Qgbj10aGlzLnJlc29sdmVkUHJvcGVydHk7Zm9yKGxldCBpPTAscj1uLmxlbmd0aDtpIT09cjsrK2kpbltpXT10W2UrK107dGhpcy50YXJnZXRPYmplY3QubmVlZHNVcGRhdGU9ITB9X3NldFZhbHVlX2FycmF5X3NldE1hdHJpeFdvcmxkTmVlZHNVcGRhdGUodCxlKXtjb25zdCBuPXRoaXMucmVzb2x2ZWRQcm9wZXJ0eTtmb3IobGV0IGk9MCxyPW4ubGVuZ3RoO2khPT1yOysraSluW2ldPXRbZSsrXTt0aGlzLnRhcmdldE9iamVjdC5tYXRyaXhXb3JsZE5lZWRzVXBkYXRlPSEwfV9zZXRWYWx1ZV9hcnJheUVsZW1lbnQodCxlKXt0aGlzLnJlc29sdmVkUHJvcGVydHlbdGhpcy5wcm9wZXJ0eUluZGV4XT10W2VdfV9zZXRWYWx1ZV9hcnJheUVsZW1lbnRfc2V0TmVlZHNVcGRhdGUodCxlKXt0aGlzLnJlc29sdmVkUHJvcGVydHlbdGhpcy5wcm9wZXJ0eUluZGV4XT10W2VdLHRoaXMudGFyZ2V0T2JqZWN0Lm5lZWRzVXBkYXRlPSEwfV9zZXRWYWx1ZV9hcnJheUVsZW1lbnRfc2V0TWF0cml4V29ybGROZWVkc1VwZGF0ZSh0LGUpe3RoaXMucmVzb2x2ZWRQcm9wZXJ0eVt0aGlzLnByb3BlcnR5SW5kZXhdPXRbZV0sdGhpcy50YXJnZXRPYmplY3QubWF0cml4V29ybGROZWVkc1VwZGF0ZT0hMH1fc2V0VmFsdWVfZnJvbUFycmF5KHQsZSl7dGhpcy5yZXNvbHZlZFByb3BlcnR5LmZyb21BcnJheSh0LGUpfV9zZXRWYWx1ZV9mcm9tQXJyYXlfc2V0TmVlZHNVcGRhdGUodCxlKXt0aGlzLnJlc29sdmVkUHJvcGVydHkuZnJvbUFycmF5KHQsZSksdGhpcy50YXJnZXRPYmplY3QubmVlZHNVcGRhdGU9ITB9X3NldFZhbHVlX2Zyb21BcnJheV9zZXRNYXRyaXhXb3JsZE5lZWRzVXBkYXRlKHQsZSl7dGhpcy5yZXNvbHZlZFByb3BlcnR5LmZyb21BcnJheSh0LGUpLHRoaXMudGFyZ2V0T2JqZWN0Lm1hdHJpeFdvcmxkTmVlZHNVcGRhdGU9ITB9X2dldFZhbHVlX3VuYm91bmQodCxlKXt0aGlzLmJpbmQoKSx0aGlzLmdldFZhbHVlKHQsZSl9X3NldFZhbHVlX3VuYm91bmQodCxlKXt0aGlzLmJpbmQoKSx0aGlzLnNldFZhbHVlKHQsZSl9YmluZCgpe2xldCB0PXRoaXMubm9kZTtjb25zdCBlPXRoaXMucGFyc2VkUGF0aCxuPWUub2JqZWN0TmFtZSxpPWUucHJvcGVydHlOYW1lO2xldCByPWUucHJvcGVydHlJbmRleDtpZih0fHwodD1BaWUuZmluZE5vZGUodGhpcy5yb290Tm9kZSxlLm5vZGVOYW1lKXx8dGhpcy5yb290Tm9kZSx0aGlzLm5vZGU9dCksdGhpcy5nZXRWYWx1ZT10aGlzLl9nZXRWYWx1ZV91bmF2YWlsYWJsZSx0aGlzLnNldFZhbHVlPXRoaXMuX3NldFZhbHVlX3VuYXZhaWxhYmxlLCF0KXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIlRIUkVFLlByb3BlcnR5QmluZGluZzogVHJ5aW5nIHRvIHVwZGF0ZSBub2RlIGZvciB0cmFjazogIit0aGlzLnBhdGgrIiBidXQgaXQgd2Fzbid0IGZvdW5kLiIpO2lmKG4pe2xldCBpPWUub2JqZWN0SW5kZXg7c3dpdGNoKG4pe2Nhc2UibWF0ZXJpYWxzIjppZighdC5tYXRlcmlhbClyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJUSFJFRS5Qcm9wZXJ0eUJpbmRpbmc6IENhbiBub3QgYmluZCB0byBtYXRlcmlhbCBhcyBub2RlIGRvZXMgbm90IGhhdmUgYSBtYXRlcmlhbC4iLHRoaXMpO2lmKCF0Lm1hdGVyaWFsLm1hdGVyaWFscylyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJUSFJFRS5Qcm9wZXJ0eUJpbmRpbmc6IENhbiBub3QgYmluZCB0byBtYXRlcmlhbC5tYXRlcmlhbHMgYXMgbm9kZS5tYXRlcmlhbCBkb2VzIG5vdCBoYXZlIGEgbWF0ZXJpYWxzIGFycmF5LiIsdGhpcyk7dD10Lm1hdGVyaWFsLm1hdGVyaWFsczticmVhaztjYXNlImJvbmVzIjppZighdC5za2VsZXRvbilyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJUSFJFRS5Qcm9wZXJ0eUJpbmRpbmc6IENhbiBub3QgYmluZCB0byBib25lcyBhcyBub2RlIGRvZXMgbm90IGhhdmUgYSBza2VsZXRvbi4iLHRoaXMpO3Q9dC5za2VsZXRvbi5ib25lcztmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKylpZih0W2VdLm5hbWU9PT1pKXtpPWU7YnJlYWt9YnJlYWs7ZGVmYXVsdDppZih2b2lkIDA9PT10W25dKXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIlRIUkVFLlByb3BlcnR5QmluZGluZzogQ2FuIG5vdCBiaW5kIHRvIG9iamVjdE5hbWUgb2Ygbm9kZSB1bmRlZmluZWQuIix0aGlzKTt0PXRbbl19aWYodm9pZCAwIT09aSl7aWYodm9pZCAwPT09dFtpXSlyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJUSFJFRS5Qcm9wZXJ0eUJpbmRpbmc6IFRyeWluZyB0byBiaW5kIHRvIG9iamVjdEluZGV4IG9mIG9iamVjdE5hbWUsIGJ1dCBpcyB1bmRlZmluZWQuIix0aGlzLHQpO3Q9dFtpXX19Y29uc3Qgbz10W2ldO2lmKHZvaWQgMD09PW8pe3JldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIlRIUkVFLlByb3BlcnR5QmluZGluZzogVHJ5aW5nIHRvIHVwZGF0ZSBwcm9wZXJ0eSBmb3IgdHJhY2s6ICIrZS5ub2RlTmFtZSsiLiIraSsiIGJ1dCBpdCB3YXNuJ3QgZm91bmQuIix0KX1sZXQgYT10aGlzLlZlcnNpb25pbmcuTm9uZTt0aGlzLnRhcmdldE9iamVjdD10LHZvaWQgMCE9PXQubmVlZHNVcGRhdGU/YT10aGlzLlZlcnNpb25pbmcuTmVlZHNVcGRhdGU6dm9pZCAwIT09dC5tYXRyaXhXb3JsZE5lZWRzVXBkYXRlJiYoYT10aGlzLlZlcnNpb25pbmcuTWF0cml4V29ybGROZWVkc1VwZGF0ZSk7bGV0IHM9dGhpcy5CaW5kaW5nVHlwZS5EaXJlY3Q7aWYodm9pZCAwIT09cil7aWYoIm1vcnBoVGFyZ2V0SW5mbHVlbmNlcyI9PT1pKXtpZighdC5nZW9tZXRyeSlyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJUSFJFRS5Qcm9wZXJ0eUJpbmRpbmc6IENhbiBub3QgYmluZCB0byBtb3JwaFRhcmdldEluZmx1ZW5jZXMgYmVjYXVzZSBub2RlIGRvZXMgbm90IGhhdmUgYSBnZW9tZXRyeS4iLHRoaXMpO2lmKCF0Lmdlb21ldHJ5LmlzQnVmZmVyR2VvbWV0cnkpcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcigiVEhSRUUuUHJvcGVydHlCaW5kaW5nOiBDYW4gbm90IGJpbmQgdG8gbW9ycGhUYXJnZXRJbmZsdWVuY2VzIG9uIFRIUkVFLkdlb21ldHJ5LiBVc2UgVEhSRUUuQnVmZmVyR2VvbWV0cnkgaW5zdGVhZC4iLHRoaXMpO2lmKCF0Lmdlb21ldHJ5Lm1vcnBoQXR0cmlidXRlcylyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJUSFJFRS5Qcm9wZXJ0eUJpbmRpbmc6IENhbiBub3QgYmluZCB0byBtb3JwaFRhcmdldEluZmx1ZW5jZXMgYmVjYXVzZSBub2RlIGRvZXMgbm90IGhhdmUgYSBnZW9tZXRyeS5tb3JwaEF0dHJpYnV0ZXMuIix0aGlzKTt2b2lkIDAhPT10Lm1vcnBoVGFyZ2V0RGljdGlvbmFyeVtyXSYmKHI9dC5tb3JwaFRhcmdldERpY3Rpb25hcnlbcl0pfXM9dGhpcy5CaW5kaW5nVHlwZS5BcnJheUVsZW1lbnQsdGhpcy5yZXNvbHZlZFByb3BlcnR5PW8sdGhpcy5wcm9wZXJ0eUluZGV4PXJ9ZWxzZSB2b2lkIDAhPT1vLmZyb21BcnJheSYmdm9pZCAwIT09by50b0FycmF5PyhzPXRoaXMuQmluZGluZ1R5cGUuSGFzRnJvbVRvQXJyYXksdGhpcy5yZXNvbHZlZFByb3BlcnR5PW8pOkFycmF5LmlzQXJyYXkobyk/KHM9dGhpcy5CaW5kaW5nVHlwZS5FbnRpcmVBcnJheSx0aGlzLnJlc29sdmVkUHJvcGVydHk9byk6dGhpcy5wcm9wZXJ0eU5hbWU9aTt0aGlzLmdldFZhbHVlPXRoaXMuR2V0dGVyQnlCaW5kaW5nVHlwZVtzXSx0aGlzLnNldFZhbHVlPXRoaXMuU2V0dGVyQnlCaW5kaW5nVHlwZUFuZFZlcnNpb25pbmdbc11bYV19dW5iaW5kKCl7dGhpcy5ub2RlPW51bGwsdGhpcy5nZXRWYWx1ZT10aGlzLl9nZXRWYWx1ZV91bmJvdW5kLHRoaXMuc2V0VmFsdWU9dGhpcy5fc2V0VmFsdWVfdW5ib3VuZH19QWllLkNvbXBvc2l0ZT1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUsbil7Y29uc3QgaT1ufHxBaWUucGFyc2VUcmFja05hbWUoZSk7dGhpcy5fdGFyZ2V0R3JvdXA9dCx0aGlzLl9iaW5kaW5ncz10LnN1YnNjcmliZV8oZSxpKX1nZXRWYWx1ZSh0LGUpe3RoaXMuYmluZCgpO2NvbnN0IG49dGhpcy5fYmluZGluZ3NbdGhpcy5fdGFyZ2V0R3JvdXAubkNhY2hlZE9iamVjdHNfXTt2b2lkIDAhPT1uJiZuLmdldFZhbHVlKHQsZSl9c2V0VmFsdWUodCxlKXtjb25zdCBuPXRoaXMuX2JpbmRpbmdzO2ZvcihsZXQgaT10aGlzLl90YXJnZXRHcm91cC5uQ2FjaGVkT2JqZWN0c18scj1uLmxlbmd0aDtpIT09cjsrK2kpbltpXS5zZXRWYWx1ZSh0LGUpfWJpbmQoKXtjb25zdCB0PXRoaXMuX2JpbmRpbmdzO2ZvcihsZXQgZT10aGlzLl90YXJnZXRHcm91cC5uQ2FjaGVkT2JqZWN0c18sbj10Lmxlbmd0aDtlIT09bjsrK2UpdFtlXS5iaW5kKCl9dW5iaW5kKCl7Y29uc3QgdD10aGlzLl9iaW5kaW5ncztmb3IobGV0IGU9dGhpcy5fdGFyZ2V0R3JvdXAubkNhY2hlZE9iamVjdHNfLG49dC5sZW5ndGg7ZSE9PW47KytlKXRbZV0udW5iaW5kKCl9fSxBaWUucHJvdG90eXBlLkJpbmRpbmdUeXBlPXtEaXJlY3Q6MCxFbnRpcmVBcnJheToxLEFycmF5RWxlbWVudDoyLEhhc0Zyb21Ub0FycmF5OjN9LEFpZS5wcm90b3R5cGUuVmVyc2lvbmluZz17Tm9uZTowLE5lZWRzVXBkYXRlOjEsTWF0cml4V29ybGROZWVkc1VwZGF0ZToyfSxBaWUucHJvdG90eXBlLkdldHRlckJ5QmluZGluZ1R5cGU9W0FpZS5wcm90b3R5cGUuX2dldFZhbHVlX2RpcmVjdCxBaWUucHJvdG90eXBlLl9nZXRWYWx1ZV9hcnJheSxBaWUucHJvdG90eXBlLl9nZXRWYWx1ZV9hcnJheUVsZW1lbnQsQWllLnByb3RvdHlwZS5fZ2V0VmFsdWVfdG9BcnJheV0sQWllLnByb3RvdHlwZS5TZXR0ZXJCeUJpbmRpbmdUeXBlQW5kVmVyc2lvbmluZz1bW0FpZS5wcm90b3R5cGUuX3NldFZhbHVlX2RpcmVjdCxBaWUucHJvdG90eXBlLl9zZXRWYWx1ZV9kaXJlY3Rfc2V0TmVlZHNVcGRhdGUsQWllLnByb3RvdHlwZS5fc2V0VmFsdWVfZGlyZWN0X3NldE1hdHJpeFdvcmxkTmVlZHNVcGRhdGVdLFtBaWUucHJvdG90eXBlLl9zZXRWYWx1ZV9hcnJheSxBaWUucHJvdG90eXBlLl9zZXRWYWx1ZV9hcnJheV9zZXROZWVkc1VwZGF0ZSxBaWUucHJvdG90eXBlLl9zZXRWYWx1ZV9hcnJheV9zZXRNYXRyaXhXb3JsZE5lZWRzVXBkYXRlXSxbQWllLnByb3RvdHlwZS5fc2V0VmFsdWVfYXJyYXlFbGVtZW50LEFpZS5wcm90b3R5cGUuX3NldFZhbHVlX2FycmF5RWxlbWVudF9zZXROZWVkc1VwZGF0ZSxBaWUucHJvdG90eXBlLl9zZXRWYWx1ZV9hcnJheUVsZW1lbnRfc2V0TWF0cml4V29ybGROZWVkc1VwZGF0ZV0sW0FpZS5wcm90b3R5cGUuX3NldFZhbHVlX2Zyb21BcnJheSxBaWUucHJvdG90eXBlLl9zZXRWYWx1ZV9mcm9tQXJyYXlfc2V0TmVlZHNVcGRhdGUsQWllLnByb3RvdHlwZS5fc2V0VmFsdWVfZnJvbUFycmF5X3NldE1hdHJpeFdvcmxkTmVlZHNVcGRhdGVdXTtjbGFzcyBraWV7Y29uc3RydWN0b3IoKXt0aGlzLnV1aWQ9YTV0KCksdGhpcy5fb2JqZWN0cz1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpLHRoaXMubkNhY2hlZE9iamVjdHNfPTA7Y29uc3QgdD17fTt0aGlzLl9pbmRpY2VzQnlVVUlEPXQ7Zm9yKGxldCBlPTAsbj1hcmd1bWVudHMubGVuZ3RoO2UhPT1uOysrZSl0W2FyZ3VtZW50c1tlXS51dWlkXT1lO3RoaXMuX3BhdGhzPVtdLHRoaXMuX3BhcnNlZFBhdGhzPVtdLHRoaXMuX2JpbmRpbmdzPVtdLHRoaXMuX2JpbmRpbmdzSW5kaWNlc0J5UGF0aD17fTtjb25zdCBlPXRoaXM7dGhpcy5zdGF0cz17b2JqZWN0czp7Z2V0IHRvdGFsKCl7cmV0dXJuIGUuX29iamVjdHMubGVuZ3RofSxnZXQgaW5Vc2UoKXtyZXR1cm4gdGhpcy50b3RhbC1lLm5DYWNoZWRPYmplY3RzX319LGdldCBiaW5kaW5nc1Blck9iamVjdCgpe3JldHVybiBlLl9iaW5kaW5ncy5sZW5ndGh9fX1hZGQoKXtjb25zdCB0PXRoaXMuX29iamVjdHMsZT10aGlzLl9pbmRpY2VzQnlVVUlELG49dGhpcy5fcGF0aHMsaT10aGlzLl9wYXJzZWRQYXRocyxyPXRoaXMuX2JpbmRpbmdzLG89ci5sZW5ndGg7bGV0IGEscz10Lmxlbmd0aCxsPXRoaXMubkNhY2hlZE9iamVjdHNfO2ZvcihsZXQgYz0wLHU9YXJndW1lbnRzLmxlbmd0aDtjIT09dTsrK2Mpe2NvbnN0IHU9YXJndW1lbnRzW2NdLGg9dS51dWlkO2xldCBkPWVbaF07aWYodm9pZCAwPT09ZCl7ZD1zKyssZVtoXT1kLHQucHVzaCh1KTtmb3IobGV0IHQ9MCxlPW87dCE9PWU7Kyt0KXJbdF0ucHVzaChuZXcgQWllKHUsblt0XSxpW3RdKSl9ZWxzZSBpZihkPGwpe2E9dFtkXTtjb25zdCBzPS0tbCxjPXRbc107ZVtjLnV1aWRdPWQsdFtkXT1jLGVbaF09cyx0W3NdPXU7Zm9yKGxldCB0PTAsZT1vO3QhPT1lOysrdCl7Y29uc3QgZT1yW3RdO2xldCBvPWVbZF07ZVtkXT1lW3NdLHZvaWQgMD09PW8mJihvPW5ldyBBaWUodSxuW3RdLGlbdF0pKSxlW3NdPW99fWVsc2UgdFtkXSE9PWEmJmNvbnNvbGUuZXJyb3IoIlRIUkVFLkFuaW1hdGlvbk9iamVjdEdyb3VwOiBEaWZmZXJlbnQgb2JqZWN0cyB3aXRoIHRoZSBzYW1lIFVVSUQgZGV0ZWN0ZWQuIENsZWFuIHRoZSBjYWNoZXMgb3IgcmVjcmVhdGUgeW91ciBpbmZyYXN0cnVjdHVyZSB3aGVuIHJlbG9hZGluZyBzY2VuZXMuIil9dGhpcy5uQ2FjaGVkT2JqZWN0c189bH1yZW1vdmUoKXtjb25zdCB0PXRoaXMuX29iamVjdHMsZT10aGlzLl9pbmRpY2VzQnlVVUlELG49dGhpcy5fYmluZGluZ3MsaT1uLmxlbmd0aDtsZXQgcj10aGlzLm5DYWNoZWRPYmplY3RzXztmb3IobGV0IG89MCxhPWFyZ3VtZW50cy5sZW5ndGg7byE9PWE7KytvKXtjb25zdCBhPWFyZ3VtZW50c1tvXSxzPWEudXVpZCxsPWVbc107aWYodm9pZCAwIT09bCYmbD49cil7Y29uc3Qgbz1yKyssYz10W29dO2VbYy51dWlkXT1sLHRbbF09YyxlW3NdPW8sdFtvXT1hO2ZvcihsZXQgdD0wLGU9aTt0IT09ZTsrK3Qpe2NvbnN0IGU9blt0XSxpPWVbbF07ZVtsXT1lW29dLGVbb109aX19fXRoaXMubkNhY2hlZE9iamVjdHNfPXJ9dW5jYWNoZSgpe2NvbnN0IHQ9dGhpcy5fb2JqZWN0cyxlPXRoaXMuX2luZGljZXNCeVVVSUQsbj10aGlzLl9iaW5kaW5ncyxpPW4ubGVuZ3RoO2xldCByPXRoaXMubkNhY2hlZE9iamVjdHNfLG89dC5sZW5ndGg7Zm9yKGxldCBhPTAscz1hcmd1bWVudHMubGVuZ3RoO2EhPT1zOysrYSl7Y29uc3Qgcz1hcmd1bWVudHNbYV0udXVpZCxsPWVbc107aWYodm9pZCAwIT09bClpZihkZWxldGUgZVtzXSxsPHIpe2NvbnN0IGE9LS1yLHM9dFthXSxjPS0tbyx1PXRbY107ZVtzLnV1aWRdPWwsdFtsXT1zLGVbdS51dWlkXT1hLHRbYV09dSx0LnBvcCgpO2ZvcihsZXQgdD0wLGU9aTt0IT09ZTsrK3Qpe2NvbnN0IGU9blt0XSxpPWVbY107ZVtsXT1lW2FdLGVbYV09aSxlLnBvcCgpfX1lbHNle2NvbnN0IHI9LS1vLGE9dFtyXTtyPjAmJihlW2EudXVpZF09bCksdFtsXT1hLHQucG9wKCk7Zm9yKGxldCB0PTAsZT1pO3QhPT1lOysrdCl7Y29uc3QgZT1uW3RdO2VbbF09ZVtyXSxlLnBvcCgpfX19dGhpcy5uQ2FjaGVkT2JqZWN0c189cn1zdWJzY3JpYmVfKHQsZSl7Y29uc3Qgbj10aGlzLl9iaW5kaW5nc0luZGljZXNCeVBhdGg7bGV0IGk9blt0XTtjb25zdCByPXRoaXMuX2JpbmRpbmdzO2lmKHZvaWQgMCE9PWkpcmV0dXJuIHJbaV07Y29uc3Qgbz10aGlzLl9wYXRocyxhPXRoaXMuX3BhcnNlZFBhdGhzLHM9dGhpcy5fb2JqZWN0cyxsPXRoaXMubkNhY2hlZE9iamVjdHNfLGM9bmV3IEFycmF5KHMubGVuZ3RoKTtpPXIubGVuZ3RoLG5bdF09aSxvLnB1c2godCksYS5wdXNoKGUpLHIucHVzaChjKTtmb3IobGV0IG49bCxpPXMubGVuZ3RoO24hPT1pOysrbil7Y1tuXT1uZXcgQWllKHNbbl0sdCxlKX1yZXR1cm4gY311bnN1YnNjcmliZV8odCl7Y29uc3QgZT10aGlzLl9iaW5kaW5nc0luZGljZXNCeVBhdGgsbj1lW3RdO2lmKHZvaWQgMCE9PW4pe2NvbnN0IGk9dGhpcy5fcGF0aHMscj10aGlzLl9wYXJzZWRQYXRocyxvPXRoaXMuX2JpbmRpbmdzLGE9by5sZW5ndGgtMSxzPW9bYV07ZVt0W2FdXT1uLG9bbl09cyxvLnBvcCgpLHJbbl09clthXSxyLnBvcCgpLGlbbl09aVthXSxpLnBvcCgpfX19a2llLnByb3RvdHlwZS5pc0FuaW1hdGlvbk9iamVjdEdyb3VwPSEwO2NsYXNzIExpZXtjb25zdHJ1Y3Rvcih0LGUsbj1udWxsLGk9ZS5ibGVuZE1vZGUpe3RoaXMuX21peGVyPXQsdGhpcy5fY2xpcD1lLHRoaXMuX2xvY2FsUm9vdD1uLHRoaXMuYmxlbmRNb2RlPWk7Y29uc3Qgcj1lLnRyYWNrcyxvPXIubGVuZ3RoLGE9bmV3IEFycmF5KG8pLHM9e2VuZGluZ1N0YXJ0OkgydCxlbmRpbmdFbmQ6SDJ0fTtmb3IobGV0IHQ9MDt0IT09bzsrK3Qpe2NvbnN0IGU9clt0XS5jcmVhdGVJbnRlcnBvbGFudChudWxsKTthW3RdPWUsZS5zZXR0aW5ncz1zfXRoaXMuX2ludGVycG9sYW50U2V0dGluZ3M9cyx0aGlzLl9pbnRlcnBvbGFudHM9YSx0aGlzLl9wcm9wZXJ0eUJpbmRpbmdzPW5ldyBBcnJheShvKSx0aGlzLl9jYWNoZUluZGV4PW51bGwsdGhpcy5fYnlDbGlwQ2FjaGVJbmRleD1udWxsLHRoaXMuX3RpbWVTY2FsZUludGVycG9sYW50PW51bGwsdGhpcy5fd2VpZ2h0SW50ZXJwb2xhbnQ9bnVsbCx0aGlzLmxvb3A9MjIwMSx0aGlzLl9sb29wQ291bnQ9LTEsdGhpcy5fc3RhcnRUaW1lPW51bGwsdGhpcy50aW1lPTAsdGhpcy50aW1lU2NhbGU9MSx0aGlzLl9lZmZlY3RpdmVUaW1lU2NhbGU9MSx0aGlzLndlaWdodD0xLHRoaXMuX2VmZmVjdGl2ZVdlaWdodD0xLHRoaXMucmVwZXRpdGlvbnM9MS8wLHRoaXMucGF1c2VkPSExLHRoaXMuZW5hYmxlZD0hMCx0aGlzLmNsYW1wV2hlbkZpbmlzaGVkPSExLHRoaXMuemVyb1Nsb3BlQXRTdGFydD0hMCx0aGlzLnplcm9TbG9wZUF0RW5kPSEwfXBsYXkoKXtyZXR1cm4gdGhpcy5fbWl4ZXIuX2FjdGl2YXRlQWN0aW9uKHRoaXMpLHRoaXN9c3RvcCgpe3JldHVybiB0aGlzLl9taXhlci5fZGVhY3RpdmF0ZUFjdGlvbih0aGlzKSx0aGlzLnJlc2V0KCl9cmVzZXQoKXtyZXR1cm4gdGhpcy5wYXVzZWQ9ITEsdGhpcy5lbmFibGVkPSEwLHRoaXMudGltZT0wLHRoaXMuX2xvb3BDb3VudD0tMSx0aGlzLl9zdGFydFRpbWU9bnVsbCx0aGlzLnN0b3BGYWRpbmcoKS5zdG9wV2FycGluZygpfWlzUnVubmluZygpe3JldHVybiB0aGlzLmVuYWJsZWQmJiF0aGlzLnBhdXNlZCYmMCE9PXRoaXMudGltZVNjYWxlJiZudWxsPT09dGhpcy5fc3RhcnRUaW1lJiZ0aGlzLl9taXhlci5faXNBY3RpdmVBY3Rpb24odGhpcyl9aXNTY2hlZHVsZWQoKXtyZXR1cm4gdGhpcy5fbWl4ZXIuX2lzQWN0aXZlQWN0aW9uKHRoaXMpfXN0YXJ0QXQodCl7cmV0dXJuIHRoaXMuX3N0YXJ0VGltZT10LHRoaXN9c2V0TG9vcCh0LGUpe3JldHVybiB0aGlzLmxvb3A9dCx0aGlzLnJlcGV0aXRpb25zPWUsdGhpc31zZXRFZmZlY3RpdmVXZWlnaHQodCl7cmV0dXJuIHRoaXMud2VpZ2h0PXQsdGhpcy5fZWZmZWN0aXZlV2VpZ2h0PXRoaXMuZW5hYmxlZD90OjAsdGhpcy5zdG9wRmFkaW5nKCl9Z2V0RWZmZWN0aXZlV2VpZ2h0KCl7cmV0dXJuIHRoaXMuX2VmZmVjdGl2ZVdlaWdodH1mYWRlSW4odCl7cmV0dXJuIHRoaXMuX3NjaGVkdWxlRmFkaW5nKHQsMCwxKX1mYWRlT3V0KHQpe3JldHVybiB0aGlzLl9zY2hlZHVsZUZhZGluZyh0LDEsMCl9Y3Jvc3NGYWRlRnJvbSh0LGUsbil7aWYodC5mYWRlT3V0KGUpLHRoaXMuZmFkZUluKGUpLG4pe2NvbnN0IG49dGhpcy5fY2xpcC5kdXJhdGlvbixpPXQuX2NsaXAuZHVyYXRpb24scj1uL2k7dC53YXJwKDEsaS9uLGUpLHRoaXMud2FycChyLDEsZSl9cmV0dXJuIHRoaXN9Y3Jvc3NGYWRlVG8odCxlLG4pe3JldHVybiB0LmNyb3NzRmFkZUZyb20odGhpcyxlLG4pfXN0b3BGYWRpbmcoKXtjb25zdCB0PXRoaXMuX3dlaWdodEludGVycG9sYW50O3JldHVybiBudWxsIT09dCYmKHRoaXMuX3dlaWdodEludGVycG9sYW50PW51bGwsdGhpcy5fbWl4ZXIuX3Rha2VCYWNrQ29udHJvbEludGVycG9sYW50KHQpKSx0aGlzfXNldEVmZmVjdGl2ZVRpbWVTY2FsZSh0KXtyZXR1cm4gdGhpcy50aW1lU2NhbGU9dCx0aGlzLl9lZmZlY3RpdmVUaW1lU2NhbGU9dGhpcy5wYXVzZWQ/MDp0LHRoaXMuc3RvcFdhcnBpbmcoKX1nZXRFZmZlY3RpdmVUaW1lU2NhbGUoKXtyZXR1cm4gdGhpcy5fZWZmZWN0aXZlVGltZVNjYWxlfXNldER1cmF0aW9uKHQpe3JldHVybiB0aGlzLnRpbWVTY2FsZT10aGlzLl9jbGlwLmR1cmF0aW9uL3QsdGhpcy5zdG9wV2FycGluZygpfXN5bmNXaXRoKHQpe3JldHVybiB0aGlzLnRpbWU9dC50aW1lLHRoaXMudGltZVNjYWxlPXQudGltZVNjYWxlLHRoaXMuc3RvcFdhcnBpbmcoKX1oYWx0KHQpe3JldHVybiB0aGlzLndhcnAodGhpcy5fZWZmZWN0aXZlVGltZVNjYWxlLDAsdCl9d2FycCh0LGUsbil7Y29uc3QgaT10aGlzLl9taXhlcixyPWkudGltZSxvPXRoaXMudGltZVNjYWxlO2xldCBhPXRoaXMuX3RpbWVTY2FsZUludGVycG9sYW50O251bGw9PT1hJiYoYT1pLl9sZW5kQ29udHJvbEludGVycG9sYW50KCksdGhpcy5fdGltZVNjYWxlSW50ZXJwb2xhbnQ9YSk7Y29uc3Qgcz1hLnBhcmFtZXRlclBvc2l0aW9ucyxsPWEuc2FtcGxlVmFsdWVzO3JldHVybiBzWzBdPXIsc1sxXT1yK24sbFswXT10L28sbFsxXT1lL28sdGhpc31zdG9wV2FycGluZygpe2NvbnN0IHQ9dGhpcy5fdGltZVNjYWxlSW50ZXJwb2xhbnQ7cmV0dXJuIG51bGwhPT10JiYodGhpcy5fdGltZVNjYWxlSW50ZXJwb2xhbnQ9bnVsbCx0aGlzLl9taXhlci5fdGFrZUJhY2tDb250cm9sSW50ZXJwb2xhbnQodCkpLHRoaXN9Z2V0TWl4ZXIoKXtyZXR1cm4gdGhpcy5fbWl4ZXJ9Z2V0Q2xpcCgpe3JldHVybiB0aGlzLl9jbGlwfWdldFJvb3QoKXtyZXR1cm4gdGhpcy5fbG9jYWxSb290fHx0aGlzLl9taXhlci5fcm9vdH1fdXBkYXRlKHQsZSxuLGkpe2lmKCF0aGlzLmVuYWJsZWQpcmV0dXJuIHZvaWQgdGhpcy5fdXBkYXRlV2VpZ2h0KHQpO2NvbnN0IHI9dGhpcy5fc3RhcnRUaW1lO2lmKG51bGwhPT1yKXtjb25zdCBpPSh0LXIpKm47aWYoaTwwfHwwPT09bilyZXR1cm47dGhpcy5fc3RhcnRUaW1lPW51bGwsZT1uKml9ZSo9dGhpcy5fdXBkYXRlVGltZVNjYWxlKHQpO2NvbnN0IG89dGhpcy5fdXBkYXRlVGltZShlKSxhPXRoaXMuX3VwZGF0ZVdlaWdodCh0KTtpZihhPjApe2NvbnN0IHQ9dGhpcy5faW50ZXJwb2xhbnRzLGU9dGhpcy5fcHJvcGVydHlCaW5kaW5ncztzd2l0Y2godGhpcy5ibGVuZE1vZGUpe2Nhc2UgajJ0OmZvcihsZXQgbj0wLGk9dC5sZW5ndGg7biE9PWk7KytuKXRbbl0uZXZhbHVhdGUobyksZVtuXS5hY2N1bXVsYXRlQWRkaXRpdmUoYSk7YnJlYWs7Y2FzZSBVMnQ6ZGVmYXVsdDpmb3IobGV0IG49MCxyPXQubGVuZ3RoO24hPT1yOysrbil0W25dLmV2YWx1YXRlKG8pLGVbbl0uYWNjdW11bGF0ZShpLGEpfX19X3VwZGF0ZVdlaWdodCh0KXtsZXQgZT0wO2lmKHRoaXMuZW5hYmxlZCl7ZT10aGlzLndlaWdodDtjb25zdCBuPXRoaXMuX3dlaWdodEludGVycG9sYW50O2lmKG51bGwhPT1uKXtjb25zdCBpPW4uZXZhbHVhdGUodClbMF07ZSo9aSx0Pm4ucGFyYW1ldGVyUG9zaXRpb25zWzFdJiYodGhpcy5zdG9wRmFkaW5nKCksMD09PWkmJih0aGlzLmVuYWJsZWQ9ITEpKX19cmV0dXJuIHRoaXMuX2VmZmVjdGl2ZVdlaWdodD1lLGV9X3VwZGF0ZVRpbWVTY2FsZSh0KXtsZXQgZT0wO2lmKCF0aGlzLnBhdXNlZCl7ZT10aGlzLnRpbWVTY2FsZTtjb25zdCBuPXRoaXMuX3RpbWVTY2FsZUludGVycG9sYW50O2lmKG51bGwhPT1uKXtlKj1uLmV2YWx1YXRlKHQpWzBdLHQ+bi5wYXJhbWV0ZXJQb3NpdGlvbnNbMV0mJih0aGlzLnN0b3BXYXJwaW5nKCksMD09PWU/dGhpcy5wYXVzZWQ9ITA6dGhpcy50aW1lU2NhbGU9ZSl9fXJldHVybiB0aGlzLl9lZmZlY3RpdmVUaW1lU2NhbGU9ZSxlfV91cGRhdGVUaW1lKHQpe2NvbnN0IGU9dGhpcy5fY2xpcC5kdXJhdGlvbixuPXRoaXMubG9vcDtsZXQgaT10aGlzLnRpbWUrdCxyPXRoaXMuX2xvb3BDb3VudDtjb25zdCBvPTIyMDI9PT1uO2lmKDA9PT10KXJldHVybi0xPT09cj9pOm8mJjE9PSgxJnIpP2UtaTppO2lmKDIyMDA9PT1uKXstMT09PXImJih0aGlzLl9sb29wQ291bnQ9MCx0aGlzLl9zZXRFbmRpbmdzKCEwLCEwLCExKSk7dDp7aWYoaT49ZSlpPWU7ZWxzZXtpZighKGk8MCkpe3RoaXMudGltZT1pO2JyZWFrIHR9aT0wfXRoaXMuY2xhbXBXaGVuRmluaXNoZWQ/dGhpcy5wYXVzZWQ9ITA6dGhpcy5lbmFibGVkPSExLHRoaXMudGltZT1pLHRoaXMuX21peGVyLmRpc3BhdGNoRXZlbnQoe3R5cGU6ImZpbmlzaGVkIixhY3Rpb246dGhpcyxkaXJlY3Rpb246dDwwPy0xOjF9KX19ZWxzZXtpZigtMT09PXImJih0Pj0wPyhyPTAsdGhpcy5fc2V0RW5kaW5ncyghMCwwPT09dGhpcy5yZXBldGl0aW9ucyxvKSk6dGhpcy5fc2V0RW5kaW5ncygwPT09dGhpcy5yZXBldGl0aW9ucywhMCxvKSksaT49ZXx8aTwwKXtjb25zdCBuPU1hdGguZmxvb3IoaS9lKTtpLT1lKm4scis9TWF0aC5hYnMobik7Y29uc3QgYT10aGlzLnJlcGV0aXRpb25zLXI7aWYoYTw9MCl0aGlzLmNsYW1wV2hlbkZpbmlzaGVkP3RoaXMucGF1c2VkPSEwOnRoaXMuZW5hYmxlZD0hMSxpPXQ+MD9lOjAsdGhpcy50aW1lPWksdGhpcy5fbWl4ZXIuZGlzcGF0Y2hFdmVudCh7dHlwZToiZmluaXNoZWQiLGFjdGlvbjp0aGlzLGRpcmVjdGlvbjp0PjA/MTotMX0pO2Vsc2V7aWYoMT09PWEpe2NvbnN0IGU9dDwwO3RoaXMuX3NldEVuZGluZ3MoZSwhZSxvKX1lbHNlIHRoaXMuX3NldEVuZGluZ3MoITEsITEsbyk7dGhpcy5fbG9vcENvdW50PXIsdGhpcy50aW1lPWksdGhpcy5fbWl4ZXIuZGlzcGF0Y2hFdmVudCh7dHlwZToibG9vcCIsYWN0aW9uOnRoaXMsbG9vcERlbHRhOm59KX19ZWxzZSB0aGlzLnRpbWU9aTtpZihvJiYxPT0oMSZyKSlyZXR1cm4gZS1pfXJldHVybiBpfV9zZXRFbmRpbmdzKHQsZSxuKXtjb25zdCBpPXRoaXMuX2ludGVycG9sYW50U2V0dGluZ3M7bj8oaS5lbmRpbmdTdGFydD1GMnQsaS5lbmRpbmdFbmQ9RjJ0KTooaS5lbmRpbmdTdGFydD10P3RoaXMuemVyb1Nsb3BlQXRTdGFydD9GMnQ6SDJ0OlYydCxpLmVuZGluZ0VuZD1lP3RoaXMuemVyb1Nsb3BlQXRFbmQ/RjJ0OkgydDpWMnQpfV9zY2hlZHVsZUZhZGluZyh0LGUsbil7Y29uc3QgaT10aGlzLl9taXhlcixyPWkudGltZTtsZXQgbz10aGlzLl93ZWlnaHRJbnRlcnBvbGFudDtudWxsPT09byYmKG89aS5fbGVuZENvbnRyb2xJbnRlcnBvbGFudCgpLHRoaXMuX3dlaWdodEludGVycG9sYW50PW8pO2NvbnN0IGE9by5wYXJhbWV0ZXJQb3NpdGlvbnMscz1vLnNhbXBsZVZhbHVlcztyZXR1cm4gYVswXT1yLHNbMF09ZSxhWzFdPXIrdCxzWzFdPW4sdGhpc319Y2xhc3MgUGllIGV4dGVuZHMgZTV0e2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy5fcm9vdD10LHRoaXMuX2luaXRNZW1vcnlNYW5hZ2VyKCksdGhpcy5fYWNjdUluZGV4PTAsdGhpcy50aW1lPTAsdGhpcy50aW1lU2NhbGU9MX1fYmluZEFjdGlvbih0LGUpe2NvbnN0IG49dC5fbG9jYWxSb290fHx0aGlzLl9yb290LGk9dC5fY2xpcC50cmFja3Mscj1pLmxlbmd0aCxvPXQuX3Byb3BlcnR5QmluZGluZ3MsYT10Ll9pbnRlcnBvbGFudHMscz1uLnV1aWQsbD10aGlzLl9iaW5kaW5nc0J5Um9vdEFuZE5hbWU7bGV0IGM9bFtzXTt2b2lkIDA9PT1jJiYoYz17fSxsW3NdPWMpO2ZvcihsZXQgdD0wO3QhPT1yOysrdCl7Y29uc3Qgcj1pW3RdLGw9ci5uYW1lO2xldCB1PWNbbF07aWYodm9pZCAwIT09dSlvW3RdPXU7ZWxzZXtpZih1PW9bdF0sdm9pZCAwIT09dSl7bnVsbD09PXUuX2NhY2hlSW5kZXgmJigrK3UucmVmZXJlbmNlQ291bnQsdGhpcy5fYWRkSW5hY3RpdmVCaW5kaW5nKHUscyxsKSk7Y29udGludWV9dT1uZXcgX2llKEFpZS5jcmVhdGUobixsLGUmJmUuX3Byb3BlcnR5QmluZGluZ3NbdF0uYmluZGluZy5wYXJzZWRQYXRoKSxyLlZhbHVlVHlwZU5hbWUsci5nZXRWYWx1ZVNpemUoKSksKyt1LnJlZmVyZW5jZUNvdW50LHRoaXMuX2FkZEluYWN0aXZlQmluZGluZyh1LHMsbCksb1t0XT11fWFbdF0ucmVzdWx0QnVmZmVyPXUuYnVmZmVyfX1fYWN0aXZhdGVBY3Rpb24odCl7aWYoIXRoaXMuX2lzQWN0aXZlQWN0aW9uKHQpKXtpZihudWxsPT09dC5fY2FjaGVJbmRleCl7Y29uc3QgZT0odC5fbG9jYWxSb290fHx0aGlzLl9yb290KS51dWlkLG49dC5fY2xpcC51dWlkLGk9dGhpcy5fYWN0aW9uc0J5Q2xpcFtuXTt0aGlzLl9iaW5kQWN0aW9uKHQsaSYmaS5rbm93bkFjdGlvbnNbMF0pLHRoaXMuX2FkZEluYWN0aXZlQWN0aW9uKHQsbixlKX1jb25zdCBlPXQuX3Byb3BlcnR5QmluZGluZ3M7Zm9yKGxldCB0PTAsbj1lLmxlbmd0aDt0IT09bjsrK3Qpe2NvbnN0IG49ZVt0XTswPT1uLnVzZUNvdW50KysmJih0aGlzLl9sZW5kQmluZGluZyhuKSxuLnNhdmVPcmlnaW5hbFN0YXRlKCkpfXRoaXMuX2xlbmRBY3Rpb24odCl9fV9kZWFjdGl2YXRlQWN0aW9uKHQpe2lmKHRoaXMuX2lzQWN0aXZlQWN0aW9uKHQpKXtjb25zdCBlPXQuX3Byb3BlcnR5QmluZGluZ3M7Zm9yKGxldCB0PTAsbj1lLmxlbmd0aDt0IT09bjsrK3Qpe2NvbnN0IG49ZVt0XTswPT0tLW4udXNlQ291bnQmJihuLnJlc3RvcmVPcmlnaW5hbFN0YXRlKCksdGhpcy5fdGFrZUJhY2tCaW5kaW5nKG4pKX10aGlzLl90YWtlQmFja0FjdGlvbih0KX19X2luaXRNZW1vcnlNYW5hZ2VyKCl7dGhpcy5fYWN0aW9ucz1bXSx0aGlzLl9uQWN0aXZlQWN0aW9ucz0wLHRoaXMuX2FjdGlvbnNCeUNsaXA9e30sdGhpcy5fYmluZGluZ3M9W10sdGhpcy5fbkFjdGl2ZUJpbmRpbmdzPTAsdGhpcy5fYmluZGluZ3NCeVJvb3RBbmROYW1lPXt9LHRoaXMuX2NvbnRyb2xJbnRlcnBvbGFudHM9W10sdGhpcy5fbkFjdGl2ZUNvbnRyb2xJbnRlcnBvbGFudHM9MDtjb25zdCB0PXRoaXM7dGhpcy5zdGF0cz17YWN0aW9uczp7Z2V0IHRvdGFsKCl7cmV0dXJuIHQuX2FjdGlvbnMubGVuZ3RofSxnZXQgaW5Vc2UoKXtyZXR1cm4gdC5fbkFjdGl2ZUFjdGlvbnN9fSxiaW5kaW5nczp7Z2V0IHRvdGFsKCl7cmV0dXJuIHQuX2JpbmRpbmdzLmxlbmd0aH0sZ2V0IGluVXNlKCl7cmV0dXJuIHQuX25BY3RpdmVCaW5kaW5nc319LGNvbnRyb2xJbnRlcnBvbGFudHM6e2dldCB0b3RhbCgpe3JldHVybiB0Ll9jb250cm9sSW50ZXJwb2xhbnRzLmxlbmd0aH0sZ2V0IGluVXNlKCl7cmV0dXJuIHQuX25BY3RpdmVDb250cm9sSW50ZXJwb2xhbnRzfX19fV9pc0FjdGl2ZUFjdGlvbih0KXtjb25zdCBlPXQuX2NhY2hlSW5kZXg7cmV0dXJuIG51bGwhPT1lJiZlPHRoaXMuX25BY3RpdmVBY3Rpb25zfV9hZGRJbmFjdGl2ZUFjdGlvbih0LGUsbil7Y29uc3QgaT10aGlzLl9hY3Rpb25zLHI9dGhpcy5fYWN0aW9uc0J5Q2xpcDtsZXQgbz1yW2VdO2lmKHZvaWQgMD09PW8pbz17a25vd25BY3Rpb25zOlt0XSxhY3Rpb25CeVJvb3Q6e319LHQuX2J5Q2xpcENhY2hlSW5kZXg9MCxyW2VdPW87ZWxzZXtjb25zdCBlPW8ua25vd25BY3Rpb25zO3QuX2J5Q2xpcENhY2hlSW5kZXg9ZS5sZW5ndGgsZS5wdXNoKHQpfXQuX2NhY2hlSW5kZXg9aS5sZW5ndGgsaS5wdXNoKHQpLG8uYWN0aW9uQnlSb290W25dPXR9X3JlbW92ZUluYWN0aXZlQWN0aW9uKHQpe2NvbnN0IGU9dGhpcy5fYWN0aW9ucyxuPWVbZS5sZW5ndGgtMV0saT10Ll9jYWNoZUluZGV4O24uX2NhY2hlSW5kZXg9aSxlW2ldPW4sZS5wb3AoKSx0Ll9jYWNoZUluZGV4PW51bGw7Y29uc3Qgcj10Ll9jbGlwLnV1aWQsbz10aGlzLl9hY3Rpb25zQnlDbGlwLGE9b1tyXSxzPWEua25vd25BY3Rpb25zLGw9c1tzLmxlbmd0aC0xXSxjPXQuX2J5Q2xpcENhY2hlSW5kZXg7bC5fYnlDbGlwQ2FjaGVJbmRleD1jLHNbY109bCxzLnBvcCgpLHQuX2J5Q2xpcENhY2hlSW5kZXg9bnVsbDtkZWxldGUgYS5hY3Rpb25CeVJvb3RbKHQuX2xvY2FsUm9vdHx8dGhpcy5fcm9vdCkudXVpZF0sMD09PXMubGVuZ3RoJiZkZWxldGUgb1tyXSx0aGlzLl9yZW1vdmVJbmFjdGl2ZUJpbmRpbmdzRm9yQWN0aW9uKHQpfV9yZW1vdmVJbmFjdGl2ZUJpbmRpbmdzRm9yQWN0aW9uKHQpe2NvbnN0IGU9dC5fcHJvcGVydHlCaW5kaW5ncztmb3IobGV0IHQ9MCxuPWUubGVuZ3RoO3QhPT1uOysrdCl7Y29uc3Qgbj1lW3RdOzA9PS0tbi5yZWZlcmVuY2VDb3VudCYmdGhpcy5fcmVtb3ZlSW5hY3RpdmVCaW5kaW5nKG4pfX1fbGVuZEFjdGlvbih0KXtjb25zdCBlPXRoaXMuX2FjdGlvbnMsbj10Ll9jYWNoZUluZGV4LGk9dGhpcy5fbkFjdGl2ZUFjdGlvbnMrKyxyPWVbaV07dC5fY2FjaGVJbmRleD1pLGVbaV09dCxyLl9jYWNoZUluZGV4PW4sZVtuXT1yfV90YWtlQmFja0FjdGlvbih0KXtjb25zdCBlPXRoaXMuX2FjdGlvbnMsbj10Ll9jYWNoZUluZGV4LGk9LS10aGlzLl9uQWN0aXZlQWN0aW9ucyxyPWVbaV07dC5fY2FjaGVJbmRleD1pLGVbaV09dCxyLl9jYWNoZUluZGV4PW4sZVtuXT1yfV9hZGRJbmFjdGl2ZUJpbmRpbmcodCxlLG4pe2NvbnN0IGk9dGhpcy5fYmluZGluZ3NCeVJvb3RBbmROYW1lLHI9dGhpcy5fYmluZGluZ3M7bGV0IG89aVtlXTt2b2lkIDA9PT1vJiYobz17fSxpW2VdPW8pLG9bbl09dCx0Ll9jYWNoZUluZGV4PXIubGVuZ3RoLHIucHVzaCh0KX1fcmVtb3ZlSW5hY3RpdmVCaW5kaW5nKHQpe2NvbnN0IGU9dGhpcy5fYmluZGluZ3Msbj10LmJpbmRpbmcsaT1uLnJvb3ROb2RlLnV1aWQscj1uLnBhdGgsbz10aGlzLl9iaW5kaW5nc0J5Um9vdEFuZE5hbWUsYT1vW2ldLHM9ZVtlLmxlbmd0aC0xXSxsPXQuX2NhY2hlSW5kZXg7cy5fY2FjaGVJbmRleD1sLGVbbF09cyxlLnBvcCgpLGRlbGV0ZSBhW3JdLDA9PT1PYmplY3Qua2V5cyhhKS5sZW5ndGgmJmRlbGV0ZSBvW2ldfV9sZW5kQmluZGluZyh0KXtjb25zdCBlPXRoaXMuX2JpbmRpbmdzLG49dC5fY2FjaGVJbmRleCxpPXRoaXMuX25BY3RpdmVCaW5kaW5ncysrLHI9ZVtpXTt0Ll9jYWNoZUluZGV4PWksZVtpXT10LHIuX2NhY2hlSW5kZXg9bixlW25dPXJ9X3Rha2VCYWNrQmluZGluZyh0KXtjb25zdCBlPXRoaXMuX2JpbmRpbmdzLG49dC5fY2FjaGVJbmRleCxpPS0tdGhpcy5fbkFjdGl2ZUJpbmRpbmdzLHI9ZVtpXTt0Ll9jYWNoZUluZGV4PWksZVtpXT10LHIuX2NhY2hlSW5kZXg9bixlW25dPXJ9X2xlbmRDb250cm9sSW50ZXJwb2xhbnQoKXtjb25zdCB0PXRoaXMuX2NvbnRyb2xJbnRlcnBvbGFudHMsZT10aGlzLl9uQWN0aXZlQ29udHJvbEludGVycG9sYW50cysrO2xldCBuPXRbZV07cmV0dXJuIHZvaWQgMD09PW4mJihuPW5ldyBLZWUobmV3IEZsb2F0MzJBcnJheSgyKSxuZXcgRmxvYXQzMkFycmF5KDIpLDEsdGhpcy5fY29udHJvbEludGVycG9sYW50c1Jlc3VsdEJ1ZmZlciksbi5fX2NhY2hlSW5kZXg9ZSx0W2VdPW4pLG59X3Rha2VCYWNrQ29udHJvbEludGVycG9sYW50KHQpe2NvbnN0IGU9dGhpcy5fY29udHJvbEludGVycG9sYW50cyxuPXQuX19jYWNoZUluZGV4LGk9LS10aGlzLl9uQWN0aXZlQ29udHJvbEludGVycG9sYW50cyxyPWVbaV07dC5fX2NhY2hlSW5kZXg9aSxlW2ldPXQsci5fX2NhY2hlSW5kZXg9bixlW25dPXJ9Y2xpcEFjdGlvbih0LGUsbil7Y29uc3QgaT1lfHx0aGlzLl9yb290LHI9aS51dWlkO2xldCBvPSJzdHJpbmciPT10eXBlb2YgdD9hbmUuZmluZEJ5TmFtZShpLHQpOnQ7Y29uc3QgYT1udWxsIT09bz9vLnV1aWQ6dCxzPXRoaXMuX2FjdGlvbnNCeUNsaXBbYV07bGV0IGw9bnVsbDtpZih2b2lkIDA9PT1uJiYobj1udWxsIT09bz9vLmJsZW5kTW9kZTpVMnQpLHZvaWQgMCE9PXMpe2NvbnN0IHQ9cy5hY3Rpb25CeVJvb3Rbcl07aWYodm9pZCAwIT09dCYmdC5ibGVuZE1vZGU9PT1uKXJldHVybiB0O2w9cy5rbm93bkFjdGlvbnNbMF0sbnVsbD09PW8mJihvPWwuX2NsaXApfWlmKG51bGw9PT1vKXJldHVybiBudWxsO2NvbnN0IGM9bmV3IExpZSh0aGlzLG8sZSxuKTtyZXR1cm4gdGhpcy5fYmluZEFjdGlvbihjLGwpLHRoaXMuX2FkZEluYWN0aXZlQWN0aW9uKGMsYSxyKSxjfWV4aXN0aW5nQWN0aW9uKHQsZSl7Y29uc3Qgbj1lfHx0aGlzLl9yb290LGk9bi51dWlkLHI9InN0cmluZyI9PXR5cGVvZiB0P2FuZS5maW5kQnlOYW1lKG4sdCk6dCxvPXRoaXMuX2FjdGlvbnNCeUNsaXBbcj9yLnV1aWQ6dF07cmV0dXJuIHZvaWQgMCE9PW8mJm8uYWN0aW9uQnlSb290W2ldfHxudWxsfXN0b3BBbGxBY3Rpb24oKXtjb25zdCB0PXRoaXMuX2FjdGlvbnM7Zm9yKGxldCBlPXRoaXMuX25BY3RpdmVBY3Rpb25zLTE7ZT49MDstLWUpdFtlXS5zdG9wKCk7cmV0dXJuIHRoaXN9dXBkYXRlKHQpe2NvbnN0IGU9dGhpcy5fYWN0aW9ucyxuPXRoaXMuX25BY3RpdmVBY3Rpb25zLGk9dGhpcy50aW1lKz10Kj10aGlzLnRpbWVTY2FsZSxyPU1hdGguc2lnbih0KSxvPXRoaXMuX2FjY3VJbmRleF49MTtmb3IobGV0IGE9MDthIT09bjsrK2Epe2VbYV0uX3VwZGF0ZShpLHQscixvKX1jb25zdCBhPXRoaXMuX2JpbmRpbmdzLHM9dGhpcy5fbkFjdGl2ZUJpbmRpbmdzO2ZvcihsZXQgdD0wO3QhPT1zOysrdClhW3RdLmFwcGx5KG8pO3JldHVybiB0aGlzfXNldFRpbWUodCl7dGhpcy50aW1lPTA7Zm9yKGxldCB0PTA7dDx0aGlzLl9hY3Rpb25zLmxlbmd0aDt0KyspdGhpcy5fYWN0aW9uc1t0XS50aW1lPTA7cmV0dXJuIHRoaXMudXBkYXRlKHQpfWdldFJvb3QoKXtyZXR1cm4gdGhpcy5fcm9vdH11bmNhY2hlQ2xpcCh0KXtjb25zdCBlPXRoaXMuX2FjdGlvbnMsbj10LnV1aWQsaT10aGlzLl9hY3Rpb25zQnlDbGlwLHI9aVtuXTtpZih2b2lkIDAhPT1yKXtjb25zdCB0PXIua25vd25BY3Rpb25zO2ZvcihsZXQgbj0wLGk9dC5sZW5ndGg7biE9PWk7KytuKXtjb25zdCBpPXRbbl07dGhpcy5fZGVhY3RpdmF0ZUFjdGlvbihpKTtjb25zdCByPWkuX2NhY2hlSW5kZXgsbz1lW2UubGVuZ3RoLTFdO2kuX2NhY2hlSW5kZXg9bnVsbCxpLl9ieUNsaXBDYWNoZUluZGV4PW51bGwsby5fY2FjaGVJbmRleD1yLGVbcl09byxlLnBvcCgpLHRoaXMuX3JlbW92ZUluYWN0aXZlQmluZGluZ3NGb3JBY3Rpb24oaSl9ZGVsZXRlIGlbbl19fXVuY2FjaGVSb290KHQpe2NvbnN0IGU9dC51dWlkLG49dGhpcy5fYWN0aW9uc0J5Q2xpcDtmb3IoY29uc3QgdCBpbiBuKXtjb25zdCBpPW5bdF0uYWN0aW9uQnlSb290W2VdO3ZvaWQgMCE9PWkmJih0aGlzLl9kZWFjdGl2YXRlQWN0aW9uKGkpLHRoaXMuX3JlbW92ZUluYWN0aXZlQWN0aW9uKGkpKX1jb25zdCBpPXRoaXMuX2JpbmRpbmdzQnlSb290QW5kTmFtZVtlXTtpZih2b2lkIDAhPT1pKWZvcihjb25zdCB0IGluIGkpe2NvbnN0IGU9aVt0XTtlLnJlc3RvcmVPcmlnaW5hbFN0YXRlKCksdGhpcy5fcmVtb3ZlSW5hY3RpdmVCaW5kaW5nKGUpfX11bmNhY2hlQWN0aW9uKHQsZSl7Y29uc3Qgbj10aGlzLmV4aXN0aW5nQWN0aW9uKHQsZSk7bnVsbCE9PW4mJih0aGlzLl9kZWFjdGl2YXRlQWN0aW9uKG4pLHRoaXMuX3JlbW92ZUluYWN0aXZlQWN0aW9uKG4pKX19UGllLnByb3RvdHlwZS5fY29udHJvbEludGVycG9sYW50c1Jlc3VsdEJ1ZmZlcj1uZXcgRmxvYXQzMkFycmF5KDEpO2NsYXNzIE5pZXtjb25zdHJ1Y3Rvcih0KXsic3RyaW5nIj09dHlwZW9mIHQmJihjb25zb2xlLndhcm4oIlRIUkVFLlVuaWZvcm06IFR5cGUgcGFyYW1ldGVyIGlzIG5vIGxvbmdlciBuZWVkZWQuIiksdD1hcmd1bWVudHNbMV0pLHRoaXMudmFsdWU9dH1jbG9uZSgpe3JldHVybiBuZXcgTmllKHZvaWQgMD09PXRoaXMudmFsdWUuY2xvbmU/dGhpcy52YWx1ZTp0aGlzLnZhbHVlLmNsb25lKCkpfX1jbGFzcyBJaWUgZXh0ZW5kcyB1N3R7Y29uc3RydWN0b3IodCxlLG49MSl7c3VwZXIodCxlKSx0aGlzLm1lc2hQZXJBdHRyaWJ1dGU9bn1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMubWVzaFBlckF0dHJpYnV0ZT10Lm1lc2hQZXJBdHRyaWJ1dGUsdGhpc31jbG9uZSh0KXtjb25zdCBlPXN1cGVyLmNsb25lKHQpO3JldHVybiBlLm1lc2hQZXJBdHRyaWJ1dGU9dGhpcy5tZXNoUGVyQXR0cmlidXRlLGV9dG9KU09OKHQpe2NvbnN0IGU9c3VwZXIudG9KU09OKHQpO3JldHVybiBlLmlzSW5zdGFuY2VkSW50ZXJsZWF2ZWRCdWZmZXI9ITAsZS5tZXNoUGVyQXR0cmlidXRlPXRoaXMubWVzaFBlckF0dHJpYnV0ZSxlfX1JaWUucHJvdG90eXBlLmlzSW5zdGFuY2VkSW50ZXJsZWF2ZWRCdWZmZXI9ITA7Y2xhc3MgUmlle2NvbnN0cnVjdG9yKHQsZSxuLGkscil7dGhpcy5idWZmZXI9dCx0aGlzLnR5cGU9ZSx0aGlzLml0ZW1TaXplPW4sdGhpcy5lbGVtZW50U2l6ZT1pLHRoaXMuY291bnQ9cix0aGlzLnZlcnNpb249MH1zZXQgbmVlZHNVcGRhdGUodCl7ITA9PT10JiZ0aGlzLnZlcnNpb24rK31zZXRCdWZmZXIodCl7cmV0dXJuIHRoaXMuYnVmZmVyPXQsdGhpc31zZXRUeXBlKHQsZSl7cmV0dXJuIHRoaXMudHlwZT10LHRoaXMuZWxlbWVudFNpemU9ZSx0aGlzfXNldEl0ZW1TaXplKHQpe3JldHVybiB0aGlzLml0ZW1TaXplPXQsdGhpc31zZXRDb3VudCh0KXtyZXR1cm4gdGhpcy5jb3VudD10LHRoaXN9fVJpZS5wcm90b3R5cGUuaXNHTEJ1ZmZlckF0dHJpYnV0ZT0hMDtmdW5jdGlvbiBPaWUodCxlKXtyZXR1cm4gdC5kaXN0YW5jZS1lLmRpc3RhbmNlfWZ1bmN0aW9uIHppZSh0LGUsbixpKXtpZih0LmxheWVycy50ZXN0KGUubGF5ZXJzKSYmdC5yYXljYXN0KGUsbiksITA9PT1pKXtjb25zdCBpPXQuY2hpbGRyZW47Zm9yKGxldCB0PTAscj1pLmxlbmd0aDt0PHI7dCsrKXppZShpW3RdLGUsbiwhMCl9fWNsYXNzIERpZXtjb25zdHJ1Y3Rvcih0PTEsZT0wLG49MCl7cmV0dXJuIHRoaXMucmFkaXVzPXQsdGhpcy5waGk9ZSx0aGlzLnRoZXRhPW4sdGhpc31zZXQodCxlLG4pe3JldHVybiB0aGlzLnJhZGl1cz10LHRoaXMucGhpPWUsdGhpcy50aGV0YT1uLHRoaXN9Y29weSh0KXtyZXR1cm4gdGhpcy5yYWRpdXM9dC5yYWRpdXMsdGhpcy5waGk9dC5waGksdGhpcy50aGV0YT10LnRoZXRhLHRoaXN9bWFrZVNhZmUoKXtjb25zdCB0PTFlLTY7cmV0dXJuIHRoaXMucGhpPU1hdGgubWF4KHQsTWF0aC5taW4oTWF0aC5QSS10LHRoaXMucGhpKSksdGhpc31zZXRGcm9tVmVjdG9yMyh0KXtyZXR1cm4gdGhpcy5zZXRGcm9tQ2FydGVzaWFuQ29vcmRzKHQueCx0LnksdC56KX1zZXRGcm9tQ2FydGVzaWFuQ29vcmRzKHQsZSxuKXtyZXR1cm4gdGhpcy5yYWRpdXM9TWF0aC5zcXJ0KHQqdCtlKmUrbipuKSwwPT09dGhpcy5yYWRpdXM/KHRoaXMudGhldGE9MCx0aGlzLnBoaT0wKToodGhpcy50aGV0YT1NYXRoLmF0YW4yKHQsbiksdGhpcy5waGk9TWF0aC5hY29zKHM1dChlL3RoaXMucmFkaXVzLC0xLDEpKSksdGhpc31jbG9uZSgpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3RvcikuY29weSh0aGlzKX19Y29uc3QgQmllPW5ldyBDNXQ7Y2xhc3MgSGlle2NvbnN0cnVjdG9yKHQ9bmV3IEM1dCgxLzAsMS8wKSxlPW5ldyBDNXQoLTEvMCwtMS8wKSl7dGhpcy5taW49dCx0aGlzLm1heD1lfXNldCh0LGUpe3JldHVybiB0aGlzLm1pbi5jb3B5KHQpLHRoaXMubWF4LmNvcHkoZSksdGhpc31zZXRGcm9tUG9pbnRzKHQpe3RoaXMubWFrZUVtcHR5KCk7Zm9yKGxldCBlPTAsbj10Lmxlbmd0aDtlPG47ZSsrKXRoaXMuZXhwYW5kQnlQb2ludCh0W2VdKTtyZXR1cm4gdGhpc31zZXRGcm9tQ2VudGVyQW5kU2l6ZSh0LGUpe2NvbnN0IG49QmllLmNvcHkoZSkubXVsdGlwbHlTY2FsYXIoLjUpO3JldHVybiB0aGlzLm1pbi5jb3B5KHQpLnN1YihuKSx0aGlzLm1heC5jb3B5KHQpLmFkZChuKSx0aGlzfWNsb25lKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMpfWNvcHkodCl7cmV0dXJuIHRoaXMubWluLmNvcHkodC5taW4pLHRoaXMubWF4LmNvcHkodC5tYXgpLHRoaXN9bWFrZUVtcHR5KCl7cmV0dXJuIHRoaXMubWluLng9dGhpcy5taW4ueT0xLzAsdGhpcy5tYXgueD10aGlzLm1heC55PS0xLzAsdGhpc31pc0VtcHR5KCl7cmV0dXJuIHRoaXMubWF4Lng8dGhpcy5taW4ueHx8dGhpcy5tYXgueTx0aGlzLm1pbi55fWdldENlbnRlcih0KXtyZXR1cm4gdGhpcy5pc0VtcHR5KCk/dC5zZXQoMCwwKTp0LmFkZFZlY3RvcnModGhpcy5taW4sdGhpcy5tYXgpLm11bHRpcGx5U2NhbGFyKC41KX1nZXRTaXplKHQpe3JldHVybiB0aGlzLmlzRW1wdHkoKT90LnNldCgwLDApOnQuc3ViVmVjdG9ycyh0aGlzLm1heCx0aGlzLm1pbil9ZXhwYW5kQnlQb2ludCh0KXtyZXR1cm4gdGhpcy5taW4ubWluKHQpLHRoaXMubWF4Lm1heCh0KSx0aGlzfWV4cGFuZEJ5VmVjdG9yKHQpe3JldHVybiB0aGlzLm1pbi5zdWIodCksdGhpcy5tYXguYWRkKHQpLHRoaXN9ZXhwYW5kQnlTY2FsYXIodCl7cmV0dXJuIHRoaXMubWluLmFkZFNjYWxhcigtdCksdGhpcy5tYXguYWRkU2NhbGFyKHQpLHRoaXN9Y29udGFpbnNQb2ludCh0KXtyZXR1cm4hKHQueDx0aGlzLm1pbi54fHx0Lng+dGhpcy5tYXgueHx8dC55PHRoaXMubWluLnl8fHQueT50aGlzLm1heC55KX1jb250YWluc0JveCh0KXtyZXR1cm4gdGhpcy5taW4ueDw9dC5taW4ueCYmdC5tYXgueDw9dGhpcy5tYXgueCYmdGhpcy5taW4ueTw9dC5taW4ueSYmdC5tYXgueTw9dGhpcy5tYXgueX1nZXRQYXJhbWV0ZXIodCxlKXtyZXR1cm4gZS5zZXQoKHQueC10aGlzLm1pbi54KS8odGhpcy5tYXgueC10aGlzLm1pbi54KSwodC55LXRoaXMubWluLnkpLyh0aGlzLm1heC55LXRoaXMubWluLnkpKX1pbnRlcnNlY3RzQm94KHQpe3JldHVybiEodC5tYXgueDx0aGlzLm1pbi54fHx0Lm1pbi54PnRoaXMubWF4Lnh8fHQubWF4Lnk8dGhpcy5taW4ueXx8dC5taW4ueT50aGlzLm1heC55KX1jbGFtcFBvaW50KHQsZSl7cmV0dXJuIGUuY29weSh0KS5jbGFtcCh0aGlzLm1pbix0aGlzLm1heCl9ZGlzdGFuY2VUb1BvaW50KHQpe3JldHVybiBCaWUuY29weSh0KS5jbGFtcCh0aGlzLm1pbix0aGlzLm1heCkuc3ViKHQpLmxlbmd0aCgpfWludGVyc2VjdCh0KXtyZXR1cm4gdGhpcy5taW4ubWF4KHQubWluKSx0aGlzLm1heC5taW4odC5tYXgpLHRoaXN9dW5pb24odCl7cmV0dXJuIHRoaXMubWluLm1pbih0Lm1pbiksdGhpcy5tYXgubWF4KHQubWF4KSx0aGlzfXRyYW5zbGF0ZSh0KXtyZXR1cm4gdGhpcy5taW4uYWRkKHQpLHRoaXMubWF4LmFkZCh0KSx0aGlzfWVxdWFscyh0KXtyZXR1cm4gdC5taW4uZXF1YWxzKHRoaXMubWluKSYmdC5tYXguZXF1YWxzKHRoaXMubWF4KX19SGllLnByb3RvdHlwZS5pc0JveDI9ITA7Y29uc3QgRmllPW5ldyBINXQsVmllPW5ldyBINXQ7Y2xhc3MgVWlle2NvbnN0cnVjdG9yKHQ9bmV3IEg1dCxlPW5ldyBINXQpe3RoaXMuc3RhcnQ9dCx0aGlzLmVuZD1lfXNldCh0LGUpe3JldHVybiB0aGlzLnN0YXJ0LmNvcHkodCksdGhpcy5lbmQuY29weShlKSx0aGlzfWNvcHkodCl7cmV0dXJuIHRoaXMuc3RhcnQuY29weSh0LnN0YXJ0KSx0aGlzLmVuZC5jb3B5KHQuZW5kKSx0aGlzfWdldENlbnRlcih0KXtyZXR1cm4gdC5hZGRWZWN0b3JzKHRoaXMuc3RhcnQsdGhpcy5lbmQpLm11bHRpcGx5U2NhbGFyKC41KX1kZWx0YSh0KXtyZXR1cm4gdC5zdWJWZWN0b3JzKHRoaXMuZW5kLHRoaXMuc3RhcnQpfWRpc3RhbmNlU3EoKXtyZXR1cm4gdGhpcy5zdGFydC5kaXN0YW5jZVRvU3F1YXJlZCh0aGlzLmVuZCl9ZGlzdGFuY2UoKXtyZXR1cm4gdGhpcy5zdGFydC5kaXN0YW5jZVRvKHRoaXMuZW5kKX1hdCh0LGUpe3JldHVybiB0aGlzLmRlbHRhKGUpLm11bHRpcGx5U2NhbGFyKHQpLmFkZCh0aGlzLnN0YXJ0KX1jbG9zZXN0UG9pbnRUb1BvaW50UGFyYW1ldGVyKHQsZSl7RmllLnN1YlZlY3RvcnModCx0aGlzLnN0YXJ0KSxWaWUuc3ViVmVjdG9ycyh0aGlzLmVuZCx0aGlzLnN0YXJ0KTtjb25zdCBuPVZpZS5kb3QoVmllKTtsZXQgaT1WaWUuZG90KEZpZSkvbjtyZXR1cm4gZSYmKGk9czV0KGksMCwxKSksaX1jbG9zZXN0UG9pbnRUb1BvaW50KHQsZSxuKXtjb25zdCBpPXRoaXMuY2xvc2VzdFBvaW50VG9Qb2ludFBhcmFtZXRlcih0LGUpO3JldHVybiB0aGlzLmRlbHRhKG4pLm11bHRpcGx5U2NhbGFyKGkpLmFkZCh0aGlzLnN0YXJ0KX1hcHBseU1hdHJpeDQodCl7cmV0dXJuIHRoaXMuc3RhcnQuYXBwbHlNYXRyaXg0KHQpLHRoaXMuZW5kLmFwcGx5TWF0cml4NCh0KSx0aGlzfWVxdWFscyh0KXtyZXR1cm4gdC5zdGFydC5lcXVhbHModGhpcy5zdGFydCkmJnQuZW5kLmVxdWFscyh0aGlzLmVuZCl9Y2xvbmUoKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IpLmNvcHkodGhpcyl9fWNsYXNzIGppZSBleHRlbmRzIFYzdHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMubWF0ZXJpYWw9dCx0aGlzLnJlbmRlcj1mdW5jdGlvbigpe30sdGhpcy5oYXNQb3NpdGlvbnM9ITEsdGhpcy5oYXNOb3JtYWxzPSExLHRoaXMuaGFzQ29sb3JzPSExLHRoaXMuaGFzVXZzPSExLHRoaXMucG9zaXRpb25BcnJheT1udWxsLHRoaXMubm9ybWFsQXJyYXk9bnVsbCx0aGlzLmNvbG9yQXJyYXk9bnVsbCx0aGlzLnV2QXJyYXk9bnVsbCx0aGlzLmNvdW50PTB9fWppZS5wcm90b3R5cGUuaXNJbW1lZGlhdGVSZW5kZXJPYmplY3Q9ITA7Y29uc3QgR2llPW5ldyBINXQ7Y29uc3QgV2llPW5ldyBINXQscWllPW5ldyBnM3QsWWllPW5ldyBnM3Q7Y2xhc3MgWGllIGV4dGVuZHMgaXRle2NvbnN0cnVjdG9yKHQpe2NvbnN0IGU9JGllKHQpLG49bmV3IE40dCxpPVtdLHI9W10sbz1uZXcgczR0KDAsMCwxKSxhPW5ldyBzNHQoMCwxLDApO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKXtjb25zdCBuPWVbdF07bi5wYXJlbnQmJm4ucGFyZW50LmlzQm9uZSYmKGkucHVzaCgwLDAsMCksaS5wdXNoKDAsMCwwKSxyLnB1c2goby5yLG8uZyxvLmIpLHIucHVzaChhLnIsYS5nLGEuYikpfW4uc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IGI0dChpLDMpKSxuLnNldEF0dHJpYnV0ZSgiY29sb3IiLG5ldyBiNHQociwzKSk7c3VwZXIobixuZXcgWDd0KHt2ZXJ0ZXhDb2xvcnM6ITAsZGVwdGhUZXN0OiExLGRlcHRoV3JpdGU6ITEsdG9uZU1hcHBlZDohMSx0cmFuc3BhcmVudDohMH0pKSx0aGlzLnR5cGU9IlNrZWxldG9uSGVscGVyIix0aGlzLmlzU2tlbGV0b25IZWxwZXI9ITAsdGhpcy5yb290PXQsdGhpcy5ib25lcz1lLHRoaXMubWF0cml4PXQubWF0cml4V29ybGQsdGhpcy5tYXRyaXhBdXRvVXBkYXRlPSExfXVwZGF0ZU1hdHJpeFdvcmxkKHQpe2NvbnN0IGU9dGhpcy5ib25lcyxuPXRoaXMuZ2VvbWV0cnksaT1uLmdldEF0dHJpYnV0ZSgicG9zaXRpb24iKTtZaWUuY29weSh0aGlzLnJvb3QubWF0cml4V29ybGQpLmludmVydCgpO2ZvcihsZXQgdD0wLG49MDt0PGUubGVuZ3RoO3QrKyl7Y29uc3Qgcj1lW3RdO3IucGFyZW50JiZyLnBhcmVudC5pc0JvbmUmJihxaWUubXVsdGlwbHlNYXRyaWNlcyhZaWUsci5tYXRyaXhXb3JsZCksV2llLnNldEZyb21NYXRyaXhQb3NpdGlvbihxaWUpLGkuc2V0WFlaKG4sV2llLngsV2llLnksV2llLnopLHFpZS5tdWx0aXBseU1hdHJpY2VzKFlpZSxyLnBhcmVudC5tYXRyaXhXb3JsZCksV2llLnNldEZyb21NYXRyaXhQb3NpdGlvbihxaWUpLGkuc2V0WFlaKG4rMSxXaWUueCxXaWUueSxXaWUueiksbis9Mil9bi5nZXRBdHRyaWJ1dGUoInBvc2l0aW9uIikubmVlZHNVcGRhdGU9ITAsc3VwZXIudXBkYXRlTWF0cml4V29ybGQodCl9fWZ1bmN0aW9uICRpZSh0KXtjb25zdCBlPVtdO3QmJnQuaXNCb25lJiZlLnB1c2godCk7Zm9yKGxldCBuPTA7bjx0LmNoaWxkcmVuLmxlbmd0aDtuKyspZS5wdXNoLmFwcGx5KGUsJGllKHQuY2hpbGRyZW5bbl0pKTtyZXR1cm4gZX1jb25zdCBLaWU9bmV3IEg1dCxaaWU9bmV3IHM0dCxKaWU9bmV3IHM0dDtjbGFzcyBRaWUgZXh0ZW5kcyBpdGV7Y29uc3RydWN0b3IodD0xMCxlPTEwLG49NDQ3MzkyNCxpPTg5NDc4NDgpe249bmV3IHM0dChuKSxpPW5ldyBzNHQoaSk7Y29uc3Qgcj1lLzIsbz10L2UsYT10LzIscz1bXSxsPVtdO2ZvcihsZXQgdD0wLGM9MCx1PS1hO3Q8PWU7dCsrLHUrPW8pe3MucHVzaCgtYSwwLHUsYSwwLHUpLHMucHVzaCh1LDAsLWEsdSwwLGEpO2NvbnN0IGU9dD09PXI/bjppO2UudG9BcnJheShsLGMpLGMrPTMsZS50b0FycmF5KGwsYyksYys9MyxlLnRvQXJyYXkobCxjKSxjKz0zLGUudG9BcnJheShsLGMpLGMrPTN9Y29uc3QgYz1uZXcgTjR0O2Muc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IGI0dChzLDMpKSxjLnNldEF0dHJpYnV0ZSgiY29sb3IiLG5ldyBiNHQobCwzKSk7c3VwZXIoYyxuZXcgWDd0KHt2ZXJ0ZXhDb2xvcnM6ITAsdG9uZU1hcHBlZDohMX0pKSx0aGlzLnR5cGU9IkdyaWRIZWxwZXIifX1jb25zdCB0cmU9bmV3IEg1dCxlcmU9bmV3IEg1dCxucmU9bmV3IEg1dDtjb25zdCBpcmU9bmV3IEg1dCxycmU9bmV3IGk2dDtmdW5jdGlvbiBvcmUodCxlLG4saSxyLG8sYSl7aXJlLnNldChyLG8sYSkudW5wcm9qZWN0KGkpO2NvbnN0IHM9ZVt0XTtpZih2b2lkIDAhPT1zKXtjb25zdCB0PW4uZ2V0QXR0cmlidXRlKCJwb3NpdGlvbiIpO2ZvcihsZXQgZT0wLG49cy5sZW5ndGg7ZTxuO2UrKyl0LnNldFhZWihzW2VdLGlyZS54LGlyZS55LGlyZS56KX19Y29uc3QgYXJlPW5ldyBVNXQ7Y2xhc3Mgc3JlIGV4dGVuZHMgaXRle2NvbnN0cnVjdG9yKHQsZT0xNjc3Njk2MCl7Y29uc3Qgbj1uZXcgVWludDE2QXJyYXkoWzAsMSwxLDIsMiwzLDMsMCw0LDUsNSw2LDYsNyw3LDQsMCw0LDEsNSwyLDYsMyw3XSksaT1uZXcgRmxvYXQzMkFycmF5KDI0KSxyPW5ldyBONHQ7ci5zZXRJbmRleChuZXcgaDR0KG4sMSkpLHIuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IGg0dChpLDMpKSxzdXBlcihyLG5ldyBYN3Qoe2NvbG9yOmUsdG9uZU1hcHBlZDohMX0pKSx0aGlzLm9iamVjdD10LHRoaXMudHlwZT0iQm94SGVscGVyIix0aGlzLm1hdHJpeEF1dG9VcGRhdGU9ITEsdGhpcy51cGRhdGUoKX11cGRhdGUodCl7aWYodm9pZCAwIT09dCYmY29uc29sZS53YXJuKCJUSFJFRS5Cb3hIZWxwZXI6IC51cGRhdGUoKSBoYXMgbm8gbG9uZ2VyIGFyZ3VtZW50cy4iKSx2b2lkIDAhPT10aGlzLm9iamVjdCYmYXJlLnNldEZyb21PYmplY3QodGhpcy5vYmplY3QpLGFyZS5pc0VtcHR5KCkpcmV0dXJuO2NvbnN0IGU9YXJlLm1pbixuPWFyZS5tYXgsaT10aGlzLmdlb21ldHJ5LmF0dHJpYnV0ZXMucG9zaXRpb24scj1pLmFycmF5O3JbMF09bi54LHJbMV09bi55LHJbMl09bi56LHJbM109ZS54LHJbNF09bi55LHJbNV09bi56LHJbNl09ZS54LHJbN109ZS55LHJbOF09bi56LHJbOV09bi54LHJbMTBdPWUueSxyWzExXT1uLnosclsxMl09bi54LHJbMTNdPW4ueSxyWzE0XT1lLnosclsxNV09ZS54LHJbMTZdPW4ueSxyWzE3XT1lLnosclsxOF09ZS54LHJbMTldPWUueSxyWzIwXT1lLnosclsyMV09bi54LHJbMjJdPWUueSxyWzIzXT1lLnosaS5uZWVkc1VwZGF0ZT0hMCx0aGlzLmdlb21ldHJ5LmNvbXB1dGVCb3VuZGluZ1NwaGVyZSgpfXNldEZyb21PYmplY3QodCl7cmV0dXJuIHRoaXMub2JqZWN0PXQsdGhpcy51cGRhdGUoKSx0aGlzfWNvcHkodCl7cmV0dXJuIGl0ZS5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsdCksdGhpcy5vYmplY3Q9dC5vYmplY3QsdGhpc319Y29uc3QgbHJlPW5ldyBINXQ7bGV0IGNyZSx1cmU7Y2xhc3MgaHJlIGV4dGVuZHMgaXRle2NvbnN0cnVjdG9yKHQ9MSl7Y29uc3QgZT1bMCwwLDAsdCwwLDAsMCwwLDAsMCx0LDAsMCwwLDAsMCwwLHRdLG49bmV3IE40dDtuLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBiNHQoZSwzKSksbi5zZXRBdHRyaWJ1dGUoImNvbG9yIixuZXcgYjR0KFsxLDAsMCwxLC42LDAsMCwxLDAsLjYsMSwwLDAsMCwxLDAsLjYsMV0sMykpO3N1cGVyKG4sbmV3IFg3dCh7dmVydGV4Q29sb3JzOiEwLHRvbmVNYXBwZWQ6ITF9KSksdGhpcy50eXBlPSJBeGVzSGVscGVyIn1zZXRDb2xvcnModCxlLG4pe2NvbnN0IGk9bmV3IHM0dCxyPXRoaXMuZ2VvbWV0cnkuYXR0cmlidXRlcy5jb2xvci5hcnJheTtyZXR1cm4gaS5zZXQodCksaS50b0FycmF5KHIsMCksaS50b0FycmF5KHIsMyksaS5zZXQoZSksaS50b0FycmF5KHIsNiksaS50b0FycmF5KHIsOSksaS5zZXQobiksaS50b0FycmF5KHIsMTIpLGkudG9BcnJheShyLDE1KSx0aGlzLmdlb21ldHJ5LmF0dHJpYnV0ZXMuY29sb3IubmVlZHNVcGRhdGU9ITAsdGhpc31kaXNwb3NlKCl7dGhpcy5nZW9tZXRyeS5kaXNwb3NlKCksdGhpcy5tYXRlcmlhbC5kaXNwb3NlKCl9fWNvbnN0IGRyZT1uZXcgRmxvYXQzMkFycmF5KDEpLHByZT1uZXcgSW50MzJBcnJheShkcmUuYnVmZmVyKTtUdGUuY3JlYXRlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGNvbnNvbGUubG9nKCJUSFJFRS5DdXJ2ZS5jcmVhdGUoKSBoYXMgYmVlbiBkZXByZWNhdGVkIiksdC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShUdGUucHJvdG90eXBlKSx0LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj10LHQucHJvdG90eXBlLmdldFBvaW50PWUsdH0sdm5lLnByb3RvdHlwZS5mcm9tUG9pbnRzPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlBhdGg6IC5mcm9tUG9pbnRzKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuc2V0RnJvbVBvaW50cygpLiIpLHRoaXMuc2V0RnJvbVBvaW50cyh0KX0sUWllLnByb3RvdHlwZS5zZXRDb2xvcnM9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5HcmlkSGVscGVyOiBzZXRDb2xvcnMoKSBoYXMgYmVlbiBkZXByZWNhdGVkLCBwYXNzIHRoZW0gaW4gdGhlIGNvbnN0cnVjdG9yIGluc3RlYWQuIil9LFhpZS5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuU2tlbGV0b25IZWxwZXI6IHVwZGF0ZSgpIG5vIGxvbmdlciBuZWVkcyB0byBiZSBjYWxsZWQuIil9LGhuZS5wcm90b3R5cGUuZXh0cmFjdFVybEJhc2U9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTG9hZGVyOiAuZXh0cmFjdFVybEJhc2UoKSBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgVEhSRUUuTG9hZGVyVXRpbHMuZXh0cmFjdFVybEJhc2UoKSBpbnN0ZWFkLiIpLFZuZS5leHRyYWN0VXJsQmFzZSh0KX0saG5lLkhhbmRsZXJzPXthZGQ6ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5Mb2FkZXI6IEhhbmRsZXJzLmFkZCgpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBMb2FkaW5nTWFuYWdlci5hZGRIYW5kbGVyKCkgaW5zdGVhZC4iKX0sZ2V0OmZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuTG9hZGVyOiBIYW5kbGVycy5nZXQoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgTG9hZGluZ01hbmFnZXIuZ2V0SGFuZGxlcigpIGluc3RlYWQuIil9fSxIaWUucHJvdG90eXBlLmNlbnRlcj1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5Cb3gyOiAuY2VudGVyKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuZ2V0Q2VudGVyKCkuIiksdGhpcy5nZXRDZW50ZXIodCl9LEhpZS5wcm90b3R5cGUuZW1wdHk9ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5Cb3gyOiAuZW1wdHkoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5pc0VtcHR5KCkuIiksdGhpcy5pc0VtcHR5KCl9LEhpZS5wcm90b3R5cGUuaXNJbnRlcnNlY3Rpb25Cb3g9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQm94MjogLmlzSW50ZXJzZWN0aW9uQm94KCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuaW50ZXJzZWN0c0JveCgpLiIpLHRoaXMuaW50ZXJzZWN0c0JveCh0KX0sSGllLnByb3RvdHlwZS5zaXplPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJveDI6IC5zaXplKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuZ2V0U2l6ZSgpLiIpLHRoaXMuZ2V0U2l6ZSh0KX0sVTV0LnByb3RvdHlwZS5jZW50ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQm94MzogLmNlbnRlcigpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdldENlbnRlcigpLiIpLHRoaXMuZ2V0Q2VudGVyKHQpfSxVNXQucHJvdG90eXBlLmVtcHR5PWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQm94MzogLmVtcHR5KCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuaXNFbXB0eSgpLiIpLHRoaXMuaXNFbXB0eSgpfSxVNXQucHJvdG90eXBlLmlzSW50ZXJzZWN0aW9uQm94PWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJveDM6IC5pc0ludGVyc2VjdGlvbkJveCgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmludGVyc2VjdHNCb3goKS4iKSx0aGlzLmludGVyc2VjdHNCb3godCl9LFU1dC5wcm90b3R5cGUuaXNJbnRlcnNlY3Rpb25TcGhlcmU9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQm94MzogLmlzSW50ZXJzZWN0aW9uU3BoZXJlKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuaW50ZXJzZWN0c1NwaGVyZSgpLiIpLHRoaXMuaW50ZXJzZWN0c1NwaGVyZSh0KX0sVTV0LnByb3RvdHlwZS5zaXplPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJveDM6IC5zaXplKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuZ2V0U2l6ZSgpLiIpLHRoaXMuZ2V0U2l6ZSh0KX0sczN0LnByb3RvdHlwZS5lbXB0eT1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlNwaGVyZTogLmVtcHR5KCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuaXNFbXB0eSgpLiIpLHRoaXMuaXNFbXB0eSgpfSxtNnQucHJvdG90eXBlLnNldEZyb21NYXRyaXg9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuRnJ1c3R1bTogLnNldEZyb21NYXRyaXgoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5zZXRGcm9tUHJvamVjdGlvbk1hdHJpeCgpLiIpLHRoaXMuc2V0RnJvbVByb2plY3Rpb25NYXRyaXgodCl9LFVpZS5wcm90b3R5cGUuY2VudGVyPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkxpbmUzOiAuY2VudGVyKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuZ2V0Q2VudGVyKCkuIiksdGhpcy5nZXRDZW50ZXIodCl9LEE1dC5wcm90b3R5cGUuZmxhdHRlblRvQXJyYXlPZmZzZXQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXgzOiAuZmxhdHRlblRvQXJyYXlPZmZzZXQoKSBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgLnRvQXJyYXkoKSBpbnN0ZWFkLiIpLHRoaXMudG9BcnJheSh0LGUpfSxBNXQucHJvdG90eXBlLm11bHRpcGx5VmVjdG9yMz1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXgzOiAubXVsdGlwbHlWZWN0b3IzKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIHZlY3Rvci5hcHBseU1hdHJpeDMoIG1hdHJpeCApIGluc3RlYWQuIiksdC5hcHBseU1hdHJpeDModGhpcyl9LEE1dC5wcm90b3R5cGUubXVsdGlwbHlWZWN0b3IzQXJyYXk9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5NYXRyaXgzOiAubXVsdGlwbHlWZWN0b3IzQXJyYXkoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxBNXQucHJvdG90eXBlLmFwcGx5VG9CdWZmZXJBdHRyaWJ1dGU9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4MzogLmFwcGx5VG9CdWZmZXJBdHRyaWJ1dGUoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgYXR0cmlidXRlLmFwcGx5TWF0cml4MyggbWF0cml4ICkgaW5zdGVhZC4iKSx0LmFwcGx5TWF0cml4Myh0aGlzKX0sQTV0LnByb3RvdHlwZS5hcHBseVRvVmVjdG9yM0FycmF5PWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuTWF0cml4MzogLmFwcGx5VG9WZWN0b3IzQXJyYXkoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxBNXQucHJvdG90eXBlLmdldEludmVyc2U9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4MzogLmdldEludmVyc2UoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgbWF0cml4SW52LmNvcHkoIG1hdHJpeCApLmludmVydCgpOyBpbnN0ZWFkLiIpLHRoaXMuY29weSh0KS5pbnZlcnQoKX0sZzN0LnByb3RvdHlwZS5leHRyYWN0UG9zaXRpb249ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4NDogLmV4dHJhY3RQb3NpdGlvbigpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmNvcHlQb3NpdGlvbigpLiIpLHRoaXMuY29weVBvc2l0aW9uKHQpfSxnM3QucHJvdG90eXBlLmZsYXR0ZW5Ub0FycmF5T2Zmc2V0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4NDogLmZsYXR0ZW5Ub0FycmF5T2Zmc2V0KCkgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIC50b0FycmF5KCkgaW5zdGVhZC4iKSx0aGlzLnRvQXJyYXkodCxlKX0sZzN0LnByb3RvdHlwZS5nZXRQb3NpdGlvbj1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDQ6IC5nZXRQb3NpdGlvbigpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBWZWN0b3IzLnNldEZyb21NYXRyaXhQb3NpdGlvbiggbWF0cml4ICkgaW5zdGVhZC4iKSwobmV3IEg1dCkuc2V0RnJvbU1hdHJpeENvbHVtbih0aGlzLDMpfSxnM3QucHJvdG90eXBlLnNldFJvdGF0aW9uRnJvbVF1YXRlcm5pb249ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4NDogLnNldFJvdGF0aW9uRnJvbVF1YXRlcm5pb24oKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5tYWtlUm90YXRpb25Gcm9tUXVhdGVybmlvbigpLiIpLHRoaXMubWFrZVJvdGF0aW9uRnJvbVF1YXRlcm5pb24odCl9LGczdC5wcm90b3R5cGUubXVsdGlwbHlUb0FycmF5PWZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXg0OiAubXVsdGlwbHlUb0FycmF5KCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sZzN0LnByb3RvdHlwZS5tdWx0aXBseVZlY3RvcjM9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4NDogLm11bHRpcGx5VmVjdG9yMygpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSB2ZWN0b3IuYXBwbHlNYXRyaXg0KCBtYXRyaXggKSBpbnN0ZWFkLiIpLHQuYXBwbHlNYXRyaXg0KHRoaXMpfSxnM3QucHJvdG90eXBlLm11bHRpcGx5VmVjdG9yND1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXg0OiAubXVsdGlwbHlWZWN0b3I0KCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIHZlY3Rvci5hcHBseU1hdHJpeDQoIG1hdHJpeCApIGluc3RlYWQuIiksdC5hcHBseU1hdHJpeDQodGhpcyl9LGczdC5wcm90b3R5cGUubXVsdGlwbHlWZWN0b3IzQXJyYXk9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5NYXRyaXg0OiAubXVsdGlwbHlWZWN0b3IzQXJyYXkoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxnM3QucHJvdG90eXBlLnJvdGF0ZUF4aXM9ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXg0OiAucm90YXRlQXhpcygpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBWZWN0b3IzLnRyYW5zZm9ybURpcmVjdGlvbiggbWF0cml4ICkgaW5zdGVhZC4iKSx0LnRyYW5zZm9ybURpcmVjdGlvbih0aGlzKX0sZzN0LnByb3RvdHlwZS5jcm9zc1ZlY3Rvcj1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXg0OiAuY3Jvc3NWZWN0b3IoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgdmVjdG9yLmFwcGx5TWF0cml4NCggbWF0cml4ICkgaW5zdGVhZC4iKSx0LmFwcGx5TWF0cml4NCh0aGlzKX0sZzN0LnByb3RvdHlwZS50cmFuc2xhdGU9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5NYXRyaXg0OiAudHJhbnNsYXRlKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sZzN0LnByb3RvdHlwZS5yb3RhdGVYPWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuTWF0cml4NDogLnJvdGF0ZVgoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxnM3QucHJvdG90eXBlLnJvdGF0ZVk9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5NYXRyaXg0OiAucm90YXRlWSgpIGhhcyBiZWVuIHJlbW92ZWQuIil9LGczdC5wcm90b3R5cGUucm90YXRlWj1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLk1hdHJpeDQ6IC5yb3RhdGVaKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sZzN0LnByb3RvdHlwZS5yb3RhdGVCeUF4aXM9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5NYXRyaXg0OiAucm90YXRlQnlBeGlzKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sZzN0LnByb3RvdHlwZS5hcHBseVRvQnVmZmVyQXR0cmlidXRlPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDQ6IC5hcHBseVRvQnVmZmVyQXR0cmlidXRlKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIGF0dHJpYnV0ZS5hcHBseU1hdHJpeDQoIG1hdHJpeCApIGluc3RlYWQuIiksdC5hcHBseU1hdHJpeDQodGhpcyl9LGczdC5wcm90b3R5cGUuYXBwbHlUb1ZlY3RvcjNBcnJheT1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLk1hdHJpeDQ6IC5hcHBseVRvVmVjdG9yM0FycmF5KCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sZzN0LnByb3RvdHlwZS5tYWtlRnJ1c3R1bT1mdW5jdGlvbih0LGUsbixpLHIsbyl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4NDogLm1ha2VGcnVzdHVtKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIC5tYWtlUGVyc3BlY3RpdmUoIGxlZnQsIHJpZ2h0LCB0b3AsIGJvdHRvbSwgbmVhciwgZmFyICkgaW5zdGVhZC4iKSx0aGlzLm1ha2VQZXJzcGVjdGl2ZSh0LGUsaSxuLHIsbyl9LGczdC5wcm90b3R5cGUuZ2V0SW52ZXJzZT1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXg0OiAuZ2V0SW52ZXJzZSgpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBtYXRyaXhJbnYuY29weSggbWF0cml4ICkuaW52ZXJ0KCk7IGluc3RlYWQuIiksdGhpcy5jb3B5KHQpLmludmVydCgpfSxkNnQucHJvdG90eXBlLmlzSW50ZXJzZWN0aW9uTGluZT1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5QbGFuZTogLmlzSW50ZXJzZWN0aW9uTGluZSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmludGVyc2VjdHNMaW5lKCkuIiksdGhpcy5pbnRlcnNlY3RzTGluZSh0KX0sQjV0LnByb3RvdHlwZS5tdWx0aXBseVZlY3RvcjM9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuUXVhdGVybmlvbjogLm11bHRpcGx5VmVjdG9yMygpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBpcyBub3cgdmVjdG9yLmFwcGx5UXVhdGVybmlvbiggcXVhdGVybmlvbiApIGluc3RlYWQuIiksdC5hcHBseVF1YXRlcm5pb24odGhpcyl9LEI1dC5wcm90b3R5cGUuaW52ZXJzZT1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlF1YXRlcm5pb246IC5pbnZlcnNlKCkgaGFzIGJlZW4gcmVuYW1lZCB0byBpbnZlcnQoKS4iKSx0aGlzLmludmVydCgpfSxtM3QucHJvdG90eXBlLmlzSW50ZXJzZWN0aW9uQm94PWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlJheTogLmlzSW50ZXJzZWN0aW9uQm94KCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuaW50ZXJzZWN0c0JveCgpLiIpLHRoaXMuaW50ZXJzZWN0c0JveCh0KX0sbTN0LnByb3RvdHlwZS5pc0ludGVyc2VjdGlvblBsYW5lPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlJheTogLmlzSW50ZXJzZWN0aW9uUGxhbmUoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5pbnRlcnNlY3RzUGxhbmUoKS4iKSx0aGlzLmludGVyc2VjdHNQbGFuZSh0KX0sbTN0LnByb3RvdHlwZS5pc0ludGVyc2VjdGlvblNwaGVyZT1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5SYXk6IC5pc0ludGVyc2VjdGlvblNwaGVyZSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmludGVyc2VjdHNTcGhlcmUoKS4iKSx0aGlzLmludGVyc2VjdHNTcGhlcmUodCl9LEozdC5wcm90b3R5cGUuYXJlYT1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlRyaWFuZ2xlOiAuYXJlYSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdldEFyZWEoKS4iKSx0aGlzLmdldEFyZWEoKX0sSjN0LnByb3RvdHlwZS5iYXJ5Y29vcmRGcm9tUG9pbnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5UcmlhbmdsZTogLmJhcnljb29yZEZyb21Qb2ludCgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdldEJhcnljb29yZCgpLiIpLHRoaXMuZ2V0QmFyeWNvb3JkKHQsZSl9LEozdC5wcm90b3R5cGUubWlkcG9pbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVHJpYW5nbGU6IC5taWRwb2ludCgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdldE1pZHBvaW50KCkuIiksdGhpcy5nZXRNaWRwb2ludCh0KX0sSjN0LnByb3RvdHlwZW5vcm1hbD1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5UcmlhbmdsZTogLm5vcm1hbCgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdldE5vcm1hbCgpLiIpLHRoaXMuZ2V0Tm9ybWFsKHQpfSxKM3QucHJvdG90eXBlLnBsYW5lPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlRyaWFuZ2xlOiAucGxhbmUoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5nZXRQbGFuZSgpLiIpLHRoaXMuZ2V0UGxhbmUodCl9LEozdC5iYXJ5Y29vcmRGcm9tUG9pbnQ9ZnVuY3Rpb24odCxlLG4saSxyKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5UcmlhbmdsZTogLmJhcnljb29yZEZyb21Qb2ludCgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdldEJhcnljb29yZCgpLiIpLEozdC5nZXRCYXJ5Y29vcmQodCxlLG4saSxyKX0sSjN0Lm5vcm1hbD1mdW5jdGlvbih0LGUsbixpKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5UcmlhbmdsZTogLm5vcm1hbCgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdldE5vcm1hbCgpLiIpLEozdC5nZXROb3JtYWwodCxlLG4saSl9LGJuZS5wcm90b3R5cGUuZXh0cmFjdEFsbFBvaW50cz1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5TaGFwZTogLmV4dHJhY3RBbGxQb2ludHMoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgLmV4dHJhY3RQb2ludHMoKSBpbnN0ZWFkLiIpLHRoaXMuZXh0cmFjdFBvaW50cyh0KX0sYm5lLnByb3RvdHlwZS5leHRydWRlPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlNoYXBlOiAuZXh0cnVkZSgpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBFeHRydWRlR2VvbWV0cnkoKSBpbnN0ZWFkLiIpLG5ldyBiZWUodGhpcyx0KX0sYm5lLnByb3RvdHlwZS5tYWtlR2VvbWV0cnk9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuU2hhcGU6IC5tYWtlR2VvbWV0cnkoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgU2hhcGVHZW9tZXRyeSgpIGluc3RlYWQuIiksbmV3IENlZSh0aGlzLHQpfSxDNXQucHJvdG90eXBlLmZyb21BdHRyaWJ1dGU9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjI6IC5mcm9tQXR0cmlidXRlKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuZnJvbUJ1ZmZlckF0dHJpYnV0ZSgpLiIpLHRoaXMuZnJvbUJ1ZmZlckF0dHJpYnV0ZSh0LGUsbil9LEM1dC5wcm90b3R5cGUuZGlzdGFuY2VUb01hbmhhdHRhbj1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IyOiAuZGlzdGFuY2VUb01hbmhhdHRhbigpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLm1hbmhhdHRhbkRpc3RhbmNlVG8oKS4iKSx0aGlzLm1hbmhhdHRhbkRpc3RhbmNlVG8odCl9LEM1dC5wcm90b3R5cGUubGVuZ3RoTWFuaGF0dGFuPWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMjogLmxlbmd0aE1hbmhhdHRhbigpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLm1hbmhhdHRhbkxlbmd0aCgpLiIpLHRoaXMubWFuaGF0dGFuTGVuZ3RoKCl9LEg1dC5wcm90b3R5cGUuc2V0RXVsZXJGcm9tUm90YXRpb25NYXRyaXg9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5WZWN0b3IzOiAuc2V0RXVsZXJGcm9tUm90YXRpb25NYXRyaXgoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgRXVsZXIuc2V0RnJvbVJvdGF0aW9uTWF0cml4KCkgaW5zdGVhZC4iKX0sSDV0LnByb3RvdHlwZS5zZXRFdWxlckZyb21RdWF0ZXJuaW9uPWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuVmVjdG9yMzogLnNldEV1bGVyRnJvbVF1YXRlcm5pb24oKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgRXVsZXIuc2V0RnJvbVF1YXRlcm5pb24oKSBpbnN0ZWFkLiIpfSxINXQucHJvdG90eXBlLmdldFBvc2l0aW9uRnJvbU1hdHJpeD1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IzOiAuZ2V0UG9zaXRpb25Gcm9tTWF0cml4KCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKCkuIiksdGhpcy5zZXRGcm9tTWF0cml4UG9zaXRpb24odCl9LEg1dC5wcm90b3R5cGUuZ2V0U2NhbGVGcm9tTWF0cml4PWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjM6IC5nZXRTY2FsZUZyb21NYXRyaXgoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5zZXRGcm9tTWF0cml4U2NhbGUoKS4iKSx0aGlzLnNldEZyb21NYXRyaXhTY2FsZSh0KX0sSDV0LnByb3RvdHlwZS5nZXRDb2x1bW5Gcm9tTWF0cml4PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMzogLmdldENvbHVtbkZyb21NYXRyaXgoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5zZXRGcm9tTWF0cml4Q29sdW1uKCkuIiksdGhpcy5zZXRGcm9tTWF0cml4Q29sdW1uKGUsdCl9LEg1dC5wcm90b3R5cGUuYXBwbHlQcm9qZWN0aW9uPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjM6IC5hcHBseVByb2plY3Rpb24oKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgLmFwcGx5TWF0cml4NCggbSApIGluc3RlYWQuIiksdGhpcy5hcHBseU1hdHJpeDQodCl9LEg1dC5wcm90b3R5cGUuZnJvbUF0dHJpYnV0ZT1mdW5jdGlvbih0LGUsbil7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMzogLmZyb21BdHRyaWJ1dGUoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5mcm9tQnVmZmVyQXR0cmlidXRlKCkuIiksdGhpcy5mcm9tQnVmZmVyQXR0cmlidXRlKHQsZSxuKX0sSDV0LnByb3RvdHlwZS5kaXN0YW5jZVRvTWFuaGF0dGFuPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjM6IC5kaXN0YW5jZVRvTWFuaGF0dGFuKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAubWFuaGF0dGFuRGlzdGFuY2VUbygpLiIpLHRoaXMubWFuaGF0dGFuRGlzdGFuY2VUbyh0KX0sSDV0LnByb3RvdHlwZS5sZW5ndGhNYW5oYXR0YW49ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IzOiAubGVuZ3RoTWFuaGF0dGFuKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAubWFuaGF0dGFuTGVuZ3RoKCkuIiksdGhpcy5tYW5oYXR0YW5MZW5ndGgoKX0sUjV0LnByb3RvdHlwZS5mcm9tQXR0cmlidXRlPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3I0OiAuZnJvbUF0dHJpYnV0ZSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmZyb21CdWZmZXJBdHRyaWJ1dGUoKS4iKSx0aGlzLmZyb21CdWZmZXJBdHRyaWJ1dGUodCxlLG4pfSxSNXQucHJvdG90eXBlLmxlbmd0aE1hbmhhdHRhbj1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjQ6IC5sZW5ndGhNYW5oYXR0YW4oKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5tYW5oYXR0YW5MZW5ndGgoKS4iKSx0aGlzLm1hbmhhdHRhbkxlbmd0aCgpfSxWM3QucHJvdG90eXBlLmdldENoaWxkQnlOYW1lPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk9iamVjdDNEOiAuZ2V0Q2hpbGRCeU5hbWUoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5nZXRPYmplY3RCeU5hbWUoKS4iKSx0aGlzLmdldE9iamVjdEJ5TmFtZSh0KX0sVjN0LnByb3RvdHlwZS5yZW5kZXJEZXB0aD1mdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuT2JqZWN0M0Q6IC5yZW5kZXJEZXB0aCBoYXMgYmVlbiByZW1vdmVkLiBVc2UgLnJlbmRlck9yZGVyLCBpbnN0ZWFkLiIpfSxWM3QucHJvdG90eXBlLnRyYW5zbGF0ZT1mdW5jdGlvbih0LGUpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk9iamVjdDNEOiAudHJhbnNsYXRlKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIC50cmFuc2xhdGVPbkF4aXMoIGF4aXMsIGRpc3RhbmNlICkgaW5zdGVhZC4iKSx0aGlzLnRyYW5zbGF0ZU9uQXhpcyhlLHQpfSxWM3QucHJvdG90eXBlLmdldFdvcmxkUm90YXRpb249ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5PYmplY3QzRDogLmdldFdvcmxkUm90YXRpb24oKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgVEhSRUUuT2JqZWN0M0QuZ2V0V29ybGRRdWF0ZXJuaW9uKCB0YXJnZXQgKSBpbnN0ZWFkLiIpfSxWM3QucHJvdG90eXBlLmFwcGx5TWF0cml4PWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk9iamVjdDNEOiAuYXBwbHlNYXRyaXgoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5hcHBseU1hdHJpeDQoKS4iKSx0aGlzLmFwcGx5TWF0cml4NCh0KX0sT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoVjN0LnByb3RvdHlwZSx7ZXVsZXJPcmRlcjp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuT2JqZWN0M0Q6IC5ldWxlck9yZGVyIGlzIG5vdyAucm90YXRpb24ub3JkZXIuIiksdGhpcy5yb3RhdGlvbi5vcmRlcn0sc2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuT2JqZWN0M0Q6IC5ldWxlck9yZGVyIGlzIG5vdyAucm90YXRpb24ub3JkZXIuIiksdGhpcy5yb3RhdGlvbi5vcmRlcj10fX0sdXNlUXVhdGVybmlvbjp7Z2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5PYmplY3QzRDogLnVzZVF1YXRlcm5pb24gaGFzIGJlZW4gcmVtb3ZlZC4gVGhlIGxpYnJhcnkgbm93IHVzZXMgcXVhdGVybmlvbnMgYnkgZGVmYXVsdC4iKX0sc2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5PYmplY3QzRDogLnVzZVF1YXRlcm5pb24gaGFzIGJlZW4gcmVtb3ZlZC4gVGhlIGxpYnJhcnkgbm93IHVzZXMgcXVhdGVybmlvbnMgYnkgZGVmYXVsdC4iKX19fSksSzR0LnByb3RvdHlwZS5zZXREcmF3TW9kZT1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLk1lc2g6IC5zZXREcmF3TW9kZSgpIGhhcyBiZWVuIHJlbW92ZWQuIFRoZSByZW5kZXJlciBub3cgYWx3YXlzIGFzc3VtZXMgVEhSRUUuVHJpYW5nbGVzRHJhd01vZGUuIFRyYW5zZm9ybSB5b3VyIGdlb21ldHJ5IHZpYSBCdWZmZXJHZW9tZXRyeVV0aWxzLnRvVHJpYW5nbGVzRHJhd01vZGUoKSBpZiBuZWNlc3NhcnkuIil9LE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKEs0dC5wcm90b3R5cGUse2RyYXdNb2RlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS5lcnJvcigiVEhSRUUuTWVzaDogLmRyYXdNb2RlIGhhcyBiZWVuIHJlbW92ZWQuIFRoZSByZW5kZXJlciBub3cgYWx3YXlzIGFzc3VtZXMgVEhSRUUuVHJpYW5nbGVzRHJhd01vZGUuIiksMH0sc2V0OmZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuTWVzaDogLmRyYXdNb2RlIGhhcyBiZWVuIHJlbW92ZWQuIFRoZSByZW5kZXJlciBub3cgYWx3YXlzIGFzc3VtZXMgVEhSRUUuVHJpYW5nbGVzRHJhd01vZGUuIFRyYW5zZm9ybSB5b3VyIGdlb21ldHJ5IHZpYSBCdWZmZXJHZW9tZXRyeVV0aWxzLnRvVHJpYW5nbGVzRHJhd01vZGUoKSBpZiBuZWNlc3NhcnkuIil9fX0pLEQ3dC5wcm90b3R5cGUuaW5pdEJvbmVzPWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuU2tpbm5lZE1lc2g6IGluaXRCb25lcygpIGhhcyBiZWVuIHJlbW92ZWQuIil9LHI2dC5wcm90b3R5cGUuc2V0TGVucz1mdW5jdGlvbih0LGUpe2NvbnNvbGUud2FybigiVEhSRUUuUGVyc3BlY3RpdmVDYW1lcmEuc2V0TGVucyBpcyBkZXByZWNhdGVkLiBVc2UgLnNldEZvY2FsTGVuZ3RoIGFuZCAuZmlsbUdhdWdlIGZvciBhIHBob3RvZ3JhcGhpYyBzZXR1cC4iKSx2b2lkIDAhPT1lJiYodGhpcy5maWxtR2F1Z2U9ZSksdGhpcy5zZXRGb2NhbExlbmd0aCh0KX0sT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoeG5lLnByb3RvdHlwZSx7b25seVNoYWRvdzp7c2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5MaWdodDogLm9ubHlTaGFkb3cgaGFzIGJlZW4gcmVtb3ZlZC4iKX19LHNoYWRvd0NhbWVyYUZvdjp7c2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuTGlnaHQ6IC5zaGFkb3dDYW1lcmFGb3YgaXMgbm93IC5zaGFkb3cuY2FtZXJhLmZvdi4iKSx0aGlzLnNoYWRvdy5jYW1lcmEuZm92PXR9fSxzaGFkb3dDYW1lcmFMZWZ0OntzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5MaWdodDogLnNoYWRvd0NhbWVyYUxlZnQgaXMgbm93IC5zaGFkb3cuY2FtZXJhLmxlZnQuIiksdGhpcy5zaGFkb3cuY2FtZXJhLmxlZnQ9dH19LHNoYWRvd0NhbWVyYVJpZ2h0OntzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5MaWdodDogLnNoYWRvd0NhbWVyYVJpZ2h0IGlzIG5vdyAuc2hhZG93LmNhbWVyYS5yaWdodC4iKSx0aGlzLnNoYWRvdy5jYW1lcmEucmlnaHQ9dH19LHNoYWRvd0NhbWVyYVRvcDp7c2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuTGlnaHQ6IC5zaGFkb3dDYW1lcmFUb3AgaXMgbm93IC5zaGFkb3cuY2FtZXJhLnRvcC4iKSx0aGlzLnNoYWRvdy5jYW1lcmEudG9wPXR9fSxzaGFkb3dDYW1lcmFCb3R0b206e3NldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLkxpZ2h0OiAuc2hhZG93Q2FtZXJhQm90dG9tIGlzIG5vdyAuc2hhZG93LmNhbWVyYS5ib3R0b20uIiksdGhpcy5zaGFkb3cuY2FtZXJhLmJvdHRvbT10fX0sc2hhZG93Q2FtZXJhTmVhcjp7c2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuTGlnaHQ6IC5zaGFkb3dDYW1lcmFOZWFyIGlzIG5vdyAuc2hhZG93LmNhbWVyYS5uZWFyLiIpLHRoaXMuc2hhZG93LmNhbWVyYS5uZWFyPXR9fSxzaGFkb3dDYW1lcmFGYXI6e3NldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLkxpZ2h0OiAuc2hhZG93Q2FtZXJhRmFyIGlzIG5vdyAuc2hhZG93LmNhbWVyYS5mYXIuIiksdGhpcy5zaGFkb3cuY2FtZXJhLmZhcj10fX0sc2hhZG93Q2FtZXJhVmlzaWJsZTp7c2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5MaWdodDogLnNoYWRvd0NhbWVyYVZpc2libGUgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIG5ldyBUSFJFRS5DYW1lcmFIZWxwZXIoIGxpZ2h0LnNoYWRvdy5jYW1lcmEgKSBpbnN0ZWFkLiIpfX0sc2hhZG93Qmlhczp7c2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuTGlnaHQ6IC5zaGFkb3dCaWFzIGlzIG5vdyAuc2hhZG93LmJpYXMuIiksdGhpcy5zaGFkb3cuYmlhcz10fX0sc2hhZG93RGFya25lc3M6e3NldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuTGlnaHQ6IC5zaGFkb3dEYXJrbmVzcyBoYXMgYmVlbiByZW1vdmVkLiIpfX0sc2hhZG93TWFwV2lkdGg6e3NldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLkxpZ2h0OiAuc2hhZG93TWFwV2lkdGggaXMgbm93IC5zaGFkb3cubWFwU2l6ZS53aWR0aC4iKSx0aGlzLnNoYWRvdy5tYXBTaXplLndpZHRoPXR9fSxzaGFkb3dNYXBIZWlnaHQ6e3NldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLkxpZ2h0OiAuc2hhZG93TWFwSGVpZ2h0IGlzIG5vdyAuc2hhZG93Lm1hcFNpemUuaGVpZ2h0LiIpLHRoaXMuc2hhZG93Lm1hcFNpemUuaGVpZ2h0PXR9fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGg0dC5wcm90b3R5cGUse2xlbmd0aDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyQXR0cmlidXRlOiAubGVuZ3RoIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSAuY291bnQgaW5zdGVhZC4iKSx0aGlzLmFycmF5Lmxlbmd0aH19LGR5bmFtaWM6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckF0dHJpYnV0ZTogLmR5bmFtaWMgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIC51c2FnZSBpbnN0ZWFkLiIpLHRoaXMudXNhZ2U9PT1RMnR9LHNldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyQXR0cmlidXRlOiAuZHluYW1pYyBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgLnVzYWdlIGluc3RlYWQuIiksdGhpcy5zZXRVc2FnZShRMnQpfX19KSxoNHQucHJvdG90eXBlLnNldER5bmFtaWM9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyQXR0cmlidXRlOiAuc2V0RHluYW1pYygpIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSAuc2V0VXNhZ2UoKSBpbnN0ZWFkLiIpLHRoaXMuc2V0VXNhZ2UoITA9PT10P1EydDpKMnQpLHRoaXN9LGg0dC5wcm90b3R5cGUuY29weUluZGljZXNBcnJheT1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLkJ1ZmZlckF0dHJpYnV0ZTogLmNvcHlJbmRpY2VzQXJyYXkoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxoNHQucHJvdG90eXBlLnNldEFycmF5PWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuQnVmZmVyQXR0cmlidXRlOiAuc2V0QXJyYXkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIEJ1ZmZlckdlb21ldHJ5IC5zZXRBdHRyaWJ1dGUgdG8gcmVwbGFjZS9yZXNpemUgYXR0cmlidXRlIGJ1ZmZlcnMiKX0sTjR0LnByb3RvdHlwZS5hZGRJbmRleD1mdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5OiAuYWRkSW5kZXgoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5zZXRJbmRleCgpLiIpLHRoaXMuc2V0SW5kZXgodCl9LE40dC5wcm90b3R5cGUuYWRkQXR0cmlidXRlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyR2VvbWV0cnk6IC5hZGRBdHRyaWJ1dGUoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5zZXRBdHRyaWJ1dGUoKS4iKSxlJiZlLmlzQnVmZmVyQXR0cmlidXRlfHxlJiZlLmlzSW50ZXJsZWF2ZWRCdWZmZXJBdHRyaWJ1dGU/ImluZGV4Ij09PXQ/KGNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyR2VvbWV0cnkuYWRkQXR0cmlidXRlOiBVc2UgLnNldEluZGV4KCkgZm9yIGluZGV4IGF0dHJpYnV0ZS4iKSx0aGlzLnNldEluZGV4KGUpLHRoaXMpOnRoaXMuc2V0QXR0cmlidXRlKHQsZSk6KGNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyR2VvbWV0cnk6IC5hZGRBdHRyaWJ1dGUoKSBub3cgZXhwZWN0cyAoIG5hbWUsIGF0dHJpYnV0ZSApLiIpLHRoaXMuc2V0QXR0cmlidXRlKHQsbmV3IGg0dChhcmd1bWVudHNbMV0sYXJndW1lbnRzWzJdKSkpfSxONHQucHJvdG90eXBlLmFkZERyYXdDYWxsPWZ1bmN0aW9uKHQsZSxuKXt2b2lkIDAhPT1uJiZjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5OiAuYWRkRHJhd0NhbGwoKSBubyBsb25nZXIgc3VwcG9ydHMgaW5kZXhPZmZzZXQuIiksY29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJHZW9tZXRyeTogLmFkZERyYXdDYWxsKCkgaXMgbm93IC5hZGRHcm91cCgpLiIpLHRoaXMuYWRkR3JvdXAodCxlKX0sTjR0LnByb3RvdHlwZS5jbGVhckRyYXdDYWxscz1mdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyR2VvbWV0cnk6IC5jbGVhckRyYXdDYWxscygpIGlzIG5vdyAuY2xlYXJHcm91cHMoKS4iKSx0aGlzLmNsZWFyR3JvdXBzKCl9LE40dC5wcm90b3R5cGUuY29tcHV0ZU9mZnNldHM9ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5OiAuY29tcHV0ZU9mZnNldHMoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxONHQucHJvdG90eXBlLnJlbW92ZUF0dHJpYnV0ZT1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJHZW9tZXRyeTogLnJlbW92ZUF0dHJpYnV0ZSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmRlbGV0ZUF0dHJpYnV0ZSgpLiIpLHRoaXMuZGVsZXRlQXR0cmlidXRlKHQpfSxONHQucHJvdG90eXBlLmFwcGx5TWF0cml4PWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5OiAuYXBwbHlNYXRyaXgoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5hcHBseU1hdHJpeDQoKS4iKSx0aGlzLmFwcGx5TWF0cml4NCh0KX0sT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoTjR0LnByb3RvdHlwZSx7ZHJhd2NhbGxzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS5lcnJvcigiVEhSRUUuQnVmZmVyR2VvbWV0cnk6IC5kcmF3Y2FsbHMgaGFzIGJlZW4gcmVuYW1lZCB0byAuZ3JvdXBzLiIpLHRoaXMuZ3JvdXBzfX0sb2Zmc2V0czp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyR2VvbWV0cnk6IC5vZmZzZXRzIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdyb3Vwcy4iKSx0aGlzLmdyb3Vwc319fSksdTd0LnByb3RvdHlwZS5zZXREeW5hbWljPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkludGVybGVhdmVkQnVmZmVyOiAuc2V0RHluYW1pYygpIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSAuc2V0VXNhZ2UoKSBpbnN0ZWFkLiIpLHRoaXMuc2V0VXNhZ2UoITA9PT10P1EydDpKMnQpLHRoaXN9LHU3dC5wcm90b3R5cGUuc2V0QXJyYXk9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5JbnRlcmxlYXZlZEJ1ZmZlcjogLnNldEFycmF5IGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBCdWZmZXJHZW9tZXRyeSAuc2V0QXR0cmlidXRlIHRvIHJlcGxhY2UvcmVzaXplIGF0dHJpYnV0ZSBidWZmZXJzIil9LGJlZS5wcm90b3R5cGUuZ2V0QXJyYXlzPWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuRXh0cnVkZUdlb21ldHJ5OiAuZ2V0QXJyYXlzKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sYmVlLnByb3RvdHlwZS5hZGRTaGFwZUxpc3Q9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5FeHRydWRlR2VvbWV0cnk6IC5hZGRTaGFwZUxpc3QoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxiZWUucHJvdG90eXBlLmFkZFNoYXBlPWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuRXh0cnVkZUdlb21ldHJ5OiAuYWRkU2hhcGUoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxjN3QucHJvdG90eXBlLmRpc3Bvc2U9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5TY2VuZTogLmRpc3Bvc2UoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxOaWUucHJvdG90eXBlLm9uVXBkYXRlPWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVW5pZm9ybTogLm9uVXBkYXRlKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIG9iamVjdC5vbkJlZm9yZVJlbmRlcigpIGluc3RlYWQuIiksdGhpc30sT2JqZWN0LmRlZmluZVByb3BlcnRpZXModDR0LnByb3RvdHlwZSx7d3JhcEFyb3VuZDp7Z2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5NYXRlcmlhbDogLndyYXBBcm91bmQgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sc2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5NYXRlcmlhbDogLndyYXBBcm91bmQgaGFzIGJlZW4gcmVtb3ZlZC4iKX19LG92ZXJkcmF3OntnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLk1hdGVyaWFsOiAub3ZlcmRyYXcgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sc2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5NYXRlcmlhbDogLm92ZXJkcmF3IGhhcyBiZWVuIHJlbW92ZWQuIil9fSx3cmFwUkdCOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5NYXRlcmlhbDogLndyYXBSR0IgaGFzIGJlZW4gcmVtb3ZlZC4iKSxuZXcgczR0fX0sc2hhZGluZzp7Z2V0OmZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuIit0aGlzLnR5cGUrIjogLnNoYWRpbmcgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIHRoZSBib29sZWFuIC5mbGF0U2hhZGluZyBpbnN0ZWFkLiIpfSxzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS4iK3RoaXMudHlwZSsiOiAuc2hhZGluZyBoYXMgYmVlbiByZW1vdmVkLiBVc2UgdGhlIGJvb2xlYW4gLmZsYXRTaGFkaW5nIGluc3RlYWQuIiksdGhpcy5mbGF0U2hhZGluZz0xPT09dH19LHN0ZW5jaWxNYXNrOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS4iK3RoaXMudHlwZSsiOiAuc3RlbmNpbE1hc2sgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIC5zdGVuY2lsRnVuY01hc2sgaW5zdGVhZC4iKSx0aGlzLnN0ZW5jaWxGdW5jTWFza30sc2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuIit0aGlzLnR5cGUrIjogLnN0ZW5jaWxNYXNrIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSAuc3RlbmNpbEZ1bmNNYXNrIGluc3RlYWQuIiksdGhpcy5zdGVuY2lsRnVuY01hc2s9dH19LHZlcnRleFRhbmdlbnRzOntnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLiIrdGhpcy50eXBlKyI6IC52ZXJ0ZXhUYW5nZW50cyBoYXMgYmVlbiByZW1vdmVkLiIpfSxzZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLiIrdGhpcy50eXBlKyI6IC52ZXJ0ZXhUYW5nZW50cyBoYXMgYmVlbiByZW1vdmVkLiIpfX19KSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhuNnQucHJvdG90eXBlLHtkZXJpdmF0aXZlczp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuU2hhZGVyTWF0ZXJpYWw6IC5kZXJpdmF0aXZlcyBoYXMgYmVlbiBtb3ZlZCB0byAuZXh0ZW5zaW9ucy5kZXJpdmF0aXZlcy4iKSx0aGlzLmV4dGVuc2lvbnMuZGVyaXZhdGl2ZXN9LHNldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLiBTaGFkZXJNYXRlcmlhbDogLmRlcml2YXRpdmVzIGhhcyBiZWVuIG1vdmVkIHRvIC5leHRlbnNpb25zLmRlcml2YXRpdmVzLiIpLHRoaXMuZXh0ZW5zaW9ucy5kZXJpdmF0aXZlcz10fX19KSxvN3QucHJvdG90eXBlLmNsZWFyVGFyZ2V0PWZ1bmN0aW9uKHQsZSxuLGkpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmNsZWFyVGFyZ2V0KCkgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIC5zZXRSZW5kZXJUYXJnZXQoKSBhbmQgLmNsZWFyKCkgaW5zdGVhZC4iKSx0aGlzLnNldFJlbmRlclRhcmdldCh0KSx0aGlzLmNsZWFyKGUsbixpKX0sbzd0LnByb3RvdHlwZS5hbmltYXRlPWZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmFuaW1hdGUoKSBpcyBub3cgLnNldEFuaW1hdGlvbkxvb3AoKS4iKSx0aGlzLnNldEFuaW1hdGlvbkxvb3AodCl9LG83dC5wcm90b3R5cGUuZ2V0Q3VycmVudFJlbmRlclRhcmdldD1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5nZXRDdXJyZW50UmVuZGVyVGFyZ2V0KCkgaXMgbm93IC5nZXRSZW5kZXJUYXJnZXQoKS4iKSx0aGlzLmdldFJlbmRlclRhcmdldCgpfSxvN3QucHJvdG90eXBlLmdldE1heEFuaXNvdHJvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuZ2V0TWF4QW5pc290cm9weSgpIGlzIG5vdyAuY2FwYWJpbGl0aWVzLmdldE1heEFuaXNvdHJvcHkoKS4iKSx0aGlzLmNhcGFiaWxpdGllcy5nZXRNYXhBbmlzb3Ryb3B5KCl9LG83dC5wcm90b3R5cGUuZ2V0UHJlY2lzaW9uPWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmdldFByZWNpc2lvbigpIGlzIG5vdyAuY2FwYWJpbGl0aWVzLnByZWNpc2lvbi4iKSx0aGlzLmNhcGFiaWxpdGllcy5wcmVjaXNpb259LG83dC5wcm90b3R5cGUucmVzZXRHTFN0YXRlPWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnJlc2V0R0xTdGF0ZSgpIGlzIG5vdyAuc3RhdGUucmVzZXQoKS4iKSx0aGlzLnN0YXRlLnJlc2V0KCl9LG83dC5wcm90b3R5cGUuc3VwcG9ydHNGbG9hdFRleHR1cmVzPWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnN1cHBvcnRzRmxvYXRUZXh0dXJlcygpIGlzIG5vdyAuZXh0ZW5zaW9ucy5nZXQoICdPRVNfdGV4dHVyZV9mbG9hdCcgKS4iKSx0aGlzLmV4dGVuc2lvbnMuZ2V0KCJPRVNfdGV4dHVyZV9mbG9hdCIpfSxvN3QucHJvdG90eXBlLnN1cHBvcnRzSGFsZkZsb2F0VGV4dHVyZXM9ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc3VwcG9ydHNIYWxmRmxvYXRUZXh0dXJlcygpIGlzIG5vdyAuZXh0ZW5zaW9ucy5nZXQoICdPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0JyApLiIpLHRoaXMuZXh0ZW5zaW9ucy5nZXQoIk9FU190ZXh0dXJlX2hhbGZfZmxvYXQiKX0sbzd0LnByb3RvdHlwZS5zdXBwb3J0c1N0YW5kYXJkRGVyaXZhdGl2ZXM9ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc3VwcG9ydHNTdGFuZGFyZERlcml2YXRpdmVzKCkgaXMgbm93IC5leHRlbnNpb25zLmdldCggJ09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcycgKS4iKSx0aGlzLmV4dGVuc2lvbnMuZ2V0KCJPRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiKX0sbzd0LnByb3RvdHlwZS5zdXBwb3J0c0NvbXByZXNzZWRUZXh0dXJlUzNUQz1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zdXBwb3J0c0NvbXByZXNzZWRUZXh0dXJlUzNUQygpIGlzIG5vdyAuZXh0ZW5zaW9ucy5nZXQoICdXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YycgKS4iKSx0aGlzLmV4dGVuc2lvbnMuZ2V0KCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YyIpfSxvN3QucHJvdG90eXBlLnN1cHBvcnRzQ29tcHJlc3NlZFRleHR1cmVQVlJUQz1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zdXBwb3J0c0NvbXByZXNzZWRUZXh0dXJlUFZSVEMoKSBpcyBub3cgLmV4dGVuc2lvbnMuZ2V0KCAnV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3B2cnRjJyApLiIpLHRoaXMuZXh0ZW5zaW9ucy5nZXQoIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9wdnJ0YyIpfSxvN3QucHJvdG90eXBlLnN1cHBvcnRzQmxlbmRNaW5NYXg9ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc3VwcG9ydHNCbGVuZE1pbk1heCgpIGlzIG5vdyAuZXh0ZW5zaW9ucy5nZXQoICdFWFRfYmxlbmRfbWlubWF4JyApLiIpLHRoaXMuZXh0ZW5zaW9ucy5nZXQoIkVYVF9ibGVuZF9taW5tYXgiKX0sbzd0LnByb3RvdHlwZS5zdXBwb3J0c1ZlcnRleFRleHR1cmVzPWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnN1cHBvcnRzVmVydGV4VGV4dHVyZXMoKSBpcyBub3cgLmNhcGFiaWxpdGllcy52ZXJ0ZXhUZXh0dXJlcy4iKSx0aGlzLmNhcGFiaWxpdGllcy52ZXJ0ZXhUZXh0dXJlc30sbzd0LnByb3RvdHlwZS5zdXBwb3J0c0luc3RhbmNlZEFycmF5cz1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zdXBwb3J0c0luc3RhbmNlZEFycmF5cygpIGlzIG5vdyAuZXh0ZW5zaW9ucy5nZXQoICdBTkdMRV9pbnN0YW5jZWRfYXJyYXlzJyApLiIpLHRoaXMuZXh0ZW5zaW9ucy5nZXQoIkFOR0xFX2luc3RhbmNlZF9hcnJheXMiKX0sbzd0LnByb3RvdHlwZS5lbmFibGVTY2lzc29yVGVzdD1mdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5lbmFibGVTY2lzc29yVGVzdCgpIGlzIG5vdyAuc2V0U2Npc3NvclRlc3QoKS4iKSx0aGlzLnNldFNjaXNzb3JUZXN0KHQpfSxvN3QucHJvdG90eXBlLmluaXRNYXRlcmlhbD1mdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmluaXRNYXRlcmlhbCgpIGhhcyBiZWVuIHJlbW92ZWQuIil9LG83dC5wcm90b3R5cGUuYWRkUHJlUGx1Z2luPWZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuYWRkUHJlUGx1Z2luKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sbzd0LnByb3RvdHlwZS5hZGRQb3N0UGx1Z2luPWZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuYWRkUG9zdFBsdWdpbigpIGhhcyBiZWVuIHJlbW92ZWQuIil9LG83dC5wcm90b3R5cGUudXBkYXRlU2hhZG93TWFwPWZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAudXBkYXRlU2hhZG93TWFwKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sbzd0LnByb3RvdHlwZS5zZXRGYWNlQ3VsbGluZz1mdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnNldEZhY2VDdWxsaW5nKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sbzd0LnByb3RvdHlwZS5hbGxvY1RleHR1cmVVbml0PWZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuYWxsb2NUZXh0dXJlVW5pdCgpIGhhcyBiZWVuIHJlbW92ZWQuIil9LG83dC5wcm90b3R5cGUuc2V0VGV4dHVyZT1mdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnNldFRleHR1cmUoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxvN3QucHJvdG90eXBlLnNldFRleHR1cmUyRD1mdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnNldFRleHR1cmUyRCgpIGhhcyBiZWVuIHJlbW92ZWQuIil9LG83dC5wcm90b3R5cGUuc2V0VGV4dHVyZUN1YmU9ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zZXRUZXh0dXJlQ3ViZSgpIGhhcyBiZWVuIHJlbW92ZWQuIil9LG83dC5wcm90b3R5cGUuZ2V0QWN0aXZlTWlwTWFwTGV2ZWw9ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuZ2V0QWN0aXZlTWlwTWFwTGV2ZWwoKSBpcyBub3cgLmdldEFjdGl2ZU1pcG1hcExldmVsKCkuIiksdGhpcy5nZXRBY3RpdmVNaXBtYXBMZXZlbCgpfSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhvN3QucHJvdG90eXBlLHtzaGFkb3dNYXBFbmFibGVkOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zaGFkb3dNYXAuZW5hYmxlZH0sc2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnNoYWRvd01hcEVuYWJsZWQgaXMgbm93IC5zaGFkb3dNYXAuZW5hYmxlZC4iKSx0aGlzLnNoYWRvd01hcC5lbmFibGVkPXR9fSxzaGFkb3dNYXBUeXBlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zaGFkb3dNYXAudHlwZX0sc2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnNoYWRvd01hcFR5cGUgaXMgbm93IC5zaGFkb3dNYXAudHlwZS4iKSx0aGlzLnNoYWRvd01hcC50eXBlPXR9fSxzaGFkb3dNYXBDdWxsRmFjZTp7Z2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2hhZG93TWFwQ3VsbEZhY2UgaGFzIGJlZW4gcmVtb3ZlZC4gU2V0IE1hdGVyaWFsLnNoYWRvd1NpZGUgaW5zdGVhZC4iKX0sc2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2hhZG93TWFwQ3VsbEZhY2UgaGFzIGJlZW4gcmVtb3ZlZC4gU2V0IE1hdGVyaWFsLnNoYWRvd1NpZGUgaW5zdGVhZC4iKX19LGNvbnRleHQ6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5jb250ZXh0IGhhcyBiZWVuIHJlbW92ZWQuIFVzZSAuZ2V0Q29udGV4dCgpIGluc3RlYWQuIiksdGhpcy5nZXRDb250ZXh0KCl9fSx2cjp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnZyIGhhcyBiZWVuIHJlbmFtZWQgdG8gLnhyIiksdGhpcy54cn19LGdhbW1hSW5wdXQ6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5nYW1tYUlucHV0IGhhcyBiZWVuIHJlbW92ZWQuIFNldCB0aGUgZW5jb2RpbmcgZm9yIHRleHR1cmVzIHZpYSBUZXh0dXJlLmVuY29kaW5nIGluc3RlYWQuIiksITF9LHNldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmdhbW1hSW5wdXQgaGFzIGJlZW4gcmVtb3ZlZC4gU2V0IHRoZSBlbmNvZGluZyBmb3IgdGV4dHVyZXMgdmlhIFRleHR1cmUuZW5jb2RpbmcgaW5zdGVhZC4iKX19LGdhbW1hT3V0cHV0OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuZ2FtbWFPdXRwdXQgaGFzIGJlZW4gcmVtb3ZlZC4gU2V0IFdlYkdMUmVuZGVyZXIub3V0cHV0RW5jb2RpbmcgaW5zdGVhZC4iKSwhMX0sc2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmdhbW1hT3V0cHV0IGhhcyBiZWVuIHJlbW92ZWQuIFNldCBXZWJHTFJlbmRlcmVyLm91dHB1dEVuY29kaW5nIGluc3RlYWQuIiksdGhpcy5vdXRwdXRFbmNvZGluZz0hMD09PXQ/VzJ0OkcydH19LHRvbmVNYXBwaW5nV2hpdGVQb2ludDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnRvbmVNYXBwaW5nV2hpdGVQb2ludCBoYXMgYmVlbiByZW1vdmVkLiIpLDF9LHNldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnRvbmVNYXBwaW5nV2hpdGVQb2ludCBoYXMgYmVlbiByZW1vdmVkLiIpfX19KSxPYmplY3QuZGVmaW5lUHJvcGVydGllcygkOHQucHJvdG90eXBlLHtjdWxsRmFjZTp7Z2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2hhZG93TWFwLmN1bGxGYWNlIGhhcyBiZWVuIHJlbW92ZWQuIFNldCBNYXRlcmlhbC5zaGFkb3dTaWRlIGluc3RlYWQuIil9LHNldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnNoYWRvd01hcC5jdWxsRmFjZSBoYXMgYmVlbiByZW1vdmVkLiBTZXQgTWF0ZXJpYWwuc2hhZG93U2lkZSBpbnN0ZWFkLiIpfX0scmVuZGVyUmV2ZXJzZVNpZGVkOntnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zaGFkb3dNYXAucmVuZGVyUmV2ZXJzZVNpZGVkIGhhcyBiZWVuIHJlbW92ZWQuIFNldCBNYXRlcmlhbC5zaGFkb3dTaWRlIGluc3RlYWQuIil9LHNldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnNoYWRvd01hcC5yZW5kZXJSZXZlcnNlU2lkZWQgaGFzIGJlZW4gcmVtb3ZlZC4gU2V0IE1hdGVyaWFsLnNoYWRvd1NpZGUgaW5zdGVhZC4iKX19LHJlbmRlclNpbmdsZVNpZGVkOntnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zaGFkb3dNYXAucmVuZGVyU2luZ2xlU2lkZWQgaGFzIGJlZW4gcmVtb3ZlZC4gU2V0IE1hdGVyaWFsLnNoYWRvd1NpZGUgaW5zdGVhZC4iKX0sc2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2hhZG93TWFwLnJlbmRlclNpbmdsZVNpZGVkIGhhcyBiZWVuIHJlbW92ZWQuIFNldCBNYXRlcmlhbC5zaGFkb3dTaWRlIGluc3RlYWQuIil9fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKE81dC5wcm90b3R5cGUse3dyYXBTOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLndyYXBTIGlzIG5vdyAudGV4dHVyZS53cmFwUy4iKSx0aGlzLnRleHR1cmUud3JhcFN9LHNldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAud3JhcFMgaXMgbm93IC50ZXh0dXJlLndyYXBTLiIpLHRoaXMudGV4dHVyZS53cmFwUz10fX0sd3JhcFQ6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAud3JhcFQgaXMgbm93IC50ZXh0dXJlLndyYXBULiIpLHRoaXMudGV4dHVyZS53cmFwVH0sc2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC53cmFwVCBpcyBub3cgLnRleHR1cmUud3JhcFQuIiksdGhpcy50ZXh0dXJlLndyYXBUPXR9fSxtYWdGaWx0ZXI6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAubWFnRmlsdGVyIGlzIG5vdyAudGV4dHVyZS5tYWdGaWx0ZXIuIiksdGhpcy50ZXh0dXJlLm1hZ0ZpbHRlcn0sc2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC5tYWdGaWx0ZXIgaXMgbm93IC50ZXh0dXJlLm1hZ0ZpbHRlci4iKSx0aGlzLnRleHR1cmUubWFnRmlsdGVyPXR9fSxtaW5GaWx0ZXI6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAubWluRmlsdGVyIGlzIG5vdyAudGV4dHVyZS5taW5GaWx0ZXIuIiksdGhpcy50ZXh0dXJlLm1pbkZpbHRlcn0sc2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC5taW5GaWx0ZXIgaXMgbm93IC50ZXh0dXJlLm1pbkZpbHRlci4iKSx0aGlzLnRleHR1cmUubWluRmlsdGVyPXR9fSxhbmlzb3Ryb3B5OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLmFuaXNvdHJvcHkgaXMgbm93IC50ZXh0dXJlLmFuaXNvdHJvcHkuIiksdGhpcy50ZXh0dXJlLmFuaXNvdHJvcHl9LHNldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAuYW5pc290cm9weSBpcyBub3cgLnRleHR1cmUuYW5pc290cm9weS4iKSx0aGlzLnRleHR1cmUuYW5pc290cm9weT10fX0sb2Zmc2V0OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLm9mZnNldCBpcyBub3cgLnRleHR1cmUub2Zmc2V0LiIpLHRoaXMudGV4dHVyZS5vZmZzZXR9LHNldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAub2Zmc2V0IGlzIG5vdyAudGV4dHVyZS5vZmZzZXQuIiksdGhpcy50ZXh0dXJlLm9mZnNldD10fX0scmVwZWF0OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLnJlcGVhdCBpcyBub3cgLnRleHR1cmUucmVwZWF0LiIpLHRoaXMudGV4dHVyZS5yZXBlYXR9LHNldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAucmVwZWF0IGlzIG5vdyAudGV4dHVyZS5yZXBlYXQuIiksdGhpcy50ZXh0dXJlLnJlcGVhdD10fX0sZm9ybWF0OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLmZvcm1hdCBpcyBub3cgLnRleHR1cmUuZm9ybWF0LiIpLHRoaXMudGV4dHVyZS5mb3JtYXR9LHNldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAuZm9ybWF0IGlzIG5vdyAudGV4dHVyZS5mb3JtYXQuIiksdGhpcy50ZXh0dXJlLmZvcm1hdD10fX0sdHlwZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC50eXBlIGlzIG5vdyAudGV4dHVyZS50eXBlLiIpLHRoaXMudGV4dHVyZS50eXBlfSxzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLnR5cGUgaXMgbm93IC50ZXh0dXJlLnR5cGUuIiksdGhpcy50ZXh0dXJlLnR5cGU9dH19LGdlbmVyYXRlTWlwbWFwczp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC5nZW5lcmF0ZU1pcG1hcHMgaXMgbm93IC50ZXh0dXJlLmdlbmVyYXRlTWlwbWFwcy4iKSx0aGlzLnRleHR1cmUuZ2VuZXJhdGVNaXBtYXBzfSxzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLmdlbmVyYXRlTWlwbWFwcyBpcyBub3cgLnRleHR1cmUuZ2VuZXJhdGVNaXBtYXBzLiIpLHRoaXMudGV4dHVyZS5nZW5lcmF0ZU1pcG1hcHM9dH19fSksaGllLnByb3RvdHlwZS5sb2FkPWZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuQXVkaW86IC5sb2FkIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSBUSFJFRS5BdWRpb0xvYWRlciBpbnN0ZWFkLiIpO2NvbnN0IGU9dGhpcztyZXR1cm4obmV3IHRpZSkubG9hZCh0LChmdW5jdGlvbih0KXtlLnNldEJ1ZmZlcih0KX0pKSx0aGlzfSxnaWUucHJvdG90eXBlLmdldERhdGE9ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5BdWRpb0FuYWx5c2VyOiAuZ2V0RGF0YSgpIGlzIG5vdyAuZ2V0RnJlcXVlbmN5RGF0YSgpLiIpLHRoaXMuZ2V0RnJlcXVlbmN5RGF0YSgpfSxhNnQucHJvdG90eXBlLnVwZGF0ZUN1YmVNYXA9ZnVuY3Rpb24odCxlKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5DdWJlQ2FtZXJhOiAudXBkYXRlQ3ViZU1hcCgpIGlzIG5vdyAudXBkYXRlKCkuIiksdGhpcy51cGRhdGUodCxlKX0sYTZ0LnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbih0LGUsbixpKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5DdWJlQ2FtZXJhOiAuY2xlYXIoKSBpcyBub3cgLnJlbmRlclRhcmdldC5jbGVhcigpLiIpLHRoaXMucmVuZGVyVGFyZ2V0LmNsZWFyKHQsZSxuLGkpfSxMNXQuY3Jvc3NPcmlnaW49dm9pZCAwLEw1dC5sb2FkVGV4dHVyZT1mdW5jdGlvbih0LGUsbixpKXtjb25zb2xlLndhcm4oIlRIUkVFLkltYWdlVXRpbHMubG9hZFRleHR1cmUgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIFRIUkVFLlRleHR1cmVMb2FkZXIoKSBpbnN0ZWFkLiIpO2NvbnN0IHI9bmV3IF9uZTtyLnNldENyb3NzT3JpZ2luKHRoaXMuY3Jvc3NPcmlnaW4pO2NvbnN0IG89ci5sb2FkKHQsbix2b2lkIDAsaSk7cmV0dXJuIGUmJihvLm1hcHBpbmc9ZSksb30sTDV0LmxvYWRUZXh0dXJlQ3ViZT1mdW5jdGlvbih0LGUsbixpKXtjb25zb2xlLndhcm4oIlRIUkVFLkltYWdlVXRpbHMubG9hZFRleHR1cmVDdWJlIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSBUSFJFRS5DdWJlVGV4dHVyZUxvYWRlcigpIGluc3RlYWQuIik7Y29uc3Qgcj1uZXcgbW5lO3Iuc2V0Q3Jvc3NPcmlnaW4odGhpcy5jcm9zc09yaWdpbik7Y29uc3Qgbz1yLmxvYWQodCxuLHZvaWQgMCxpKTtyZXR1cm4gZSYmKG8ubWFwcGluZz1lKSxvfSxMNXQubG9hZENvbXByZXNzZWRUZXh0dXJlPWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuSW1hZ2VVdGlscy5sb2FkQ29tcHJlc3NlZFRleHR1cmUgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIFRIUkVFLkREU0xvYWRlciBpbnN0ZWFkLiIpfSxMNXQubG9hZENvbXByZXNzZWRUZXh0dXJlQ3ViZT1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLkltYWdlVXRpbHMubG9hZENvbXByZXNzZWRUZXh0dXJlQ3ViZSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgVEhSRUUuRERTTG9hZGVyIGluc3RlYWQuIil9O2NvbnN0IGZyZT17Y3JlYXRlTXVsdGlNYXRlcmlhbE9iamVjdDpmdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLlNjZW5lVXRpbHMgaGFzIGJlZW4gbW92ZWQgdG8gL2V4YW1wbGVzL2pzbS91dGlscy9TY2VuZVV0aWxzLmpzIil9LGRldGFjaDpmdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLlNjZW5lVXRpbHMgaGFzIGJlZW4gbW92ZWQgdG8gL2V4YW1wbGVzL2pzbS91dGlscy9TY2VuZVV0aWxzLmpzIil9LGF0dGFjaDpmdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLlNjZW5lVXRpbHMgaGFzIGJlZW4gbW92ZWQgdG8gL2V4YW1wbGVzL2pzbS91dGlscy9TY2VuZVV0aWxzLmpzIil9fTsidW5kZWZpbmVkIiE9dHlwZW9mIF9fVEhSRUVfREVWVE9PTFNfXyYmX19USFJFRV9ERVZUT09MU19fLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJyZWdpc3RlciIse2RldGFpbDp7cmV2aXNpb246SzB0fX0pKSwidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmKHdpbmRvdy5fX1RIUkVFX18/Y29uc29sZS53YXJuKCJXQVJOSU5HOiBNdWx0aXBsZSBpbnN0YW5jZXMgb2YgVGhyZWUuanMgYmVpbmcgaW1wb3J0ZWQuIik6d2luZG93Ll9fVEhSRUVfXz1LMHQpO3ZhciBtcmU9T2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsQUNFU0ZpbG1pY1RvbmVNYXBwaW5nOjQsQWRkRXF1YXRpb246UTB0LEFkZE9wZXJhdGlvbjoyLEFkZGl0aXZlQW5pbWF0aW9uQmxlbmRNb2RlOmoydCxBZGRpdGl2ZUJsZW5kaW5nOjIsQWxwaGFGb3JtYXQ6MTAyMSxBbHdheXNEZXB0aDoxLEFsd2F5c1N0ZW5jaWxGdW5jOjUxOSxBbWJpZW50TGlnaHQ6em5lLEFtYmllbnRMaWdodFByb2JlOm5pZSxBbmltYXRpb25DbGlwOmFuZSxBbmltYXRpb25Mb2FkZXI6Y2xhc3MgZXh0ZW5kcyBobmV7Y29uc3RydWN0b3IodCl7c3VwZXIodCl9bG9hZCh0LGUsbixpKXtjb25zdCByPXRoaXMsbz1uZXcgcG5lKHRoaXMubWFuYWdlcik7by5zZXRQYXRoKHRoaXMucGF0aCksby5zZXRSZXF1ZXN0SGVhZGVyKHRoaXMucmVxdWVzdEhlYWRlciksby5zZXRXaXRoQ3JlZGVudGlhbHModGhpcy53aXRoQ3JlZGVudGlhbHMpLG8ubG9hZCh0LChmdW5jdGlvbihuKXt0cnl7ZShyLnBhcnNlKEpTT04ucGFyc2UobikpKX1jYXRjaChlKXtpP2koZSk6Y29uc29sZS5lcnJvcihlKSxyLm1hbmFnZXIuaXRlbUVycm9yKHQpfX0pLG4saSl9cGFyc2UodCl7Y29uc3QgZT1bXTtmb3IobGV0IG49MDtuPHQubGVuZ3RoO24rKyl7Y29uc3QgaT1hbmUucGFyc2UodFtuXSk7ZS5wdXNoKGkpfXJldHVybiBlfX0sQW5pbWF0aW9uTWl4ZXI6UGllLEFuaW1hdGlvbk9iamVjdEdyb3VwOmtpZSxBbmltYXRpb25VdGlsczpZZWUsQXJjQ3VydmU6QXRlLEFycmF5Q2FtZXJhOlE4dCxBcnJvd0hlbHBlcjpjbGFzcyBleHRlbmRzIFYzdHtjb25zdHJ1Y3Rvcih0PW5ldyBINXQoMCwwLDEpLGU9bmV3IEg1dCgwLDAsMCksbj0xLGk9MTY3NzY5NjAscj0uMipuLG89LjIqcil7c3VwZXIoKSx0aGlzLnR5cGU9IkFycm93SGVscGVyIix2b2lkIDA9PT1jcmUmJihjcmU9bmV3IE40dCxjcmUuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IGI0dChbMCwwLDAsMCwxLDBdLDMpKSx1cmU9bmV3IF90ZSgwLC41LDEsNSwxKSx1cmUudHJhbnNsYXRlKDAsLS41LDApKSx0aGlzLnBvc2l0aW9uLmNvcHkoZSksdGhpcy5saW5lPW5ldyB0dGUoY3JlLG5ldyBYN3Qoe2NvbG9yOmksdG9uZU1hcHBlZDohMX0pKSx0aGlzLmxpbmUubWF0cml4QXV0b1VwZGF0ZT0hMSx0aGlzLmFkZCh0aGlzLmxpbmUpLHRoaXMuY29uZT1uZXcgSzR0KHVyZSxuZXcgbDR0KHtjb2xvcjppLHRvbmVNYXBwZWQ6ITF9KSksdGhpcy5jb25lLm1hdHJpeEF1dG9VcGRhdGU9ITEsdGhpcy5hZGQodGhpcy5jb25lKSx0aGlzLnNldERpcmVjdGlvbih0KSx0aGlzLnNldExlbmd0aChuLHIsbyl9c2V0RGlyZWN0aW9uKHQpe2lmKHQueT4uOTk5OTkpdGhpcy5xdWF0ZXJuaW9uLnNldCgwLDAsMCwxKTtlbHNlIGlmKHQueTwtLjk5OTk5KXRoaXMucXVhdGVybmlvbi5zZXQoMSwwLDAsMCk7ZWxzZXtscmUuc2V0KHQueiwwLC10LngpLm5vcm1hbGl6ZSgpO2NvbnN0IGU9TWF0aC5hY29zKHQueSk7dGhpcy5xdWF0ZXJuaW9uLnNldEZyb21BeGlzQW5nbGUobHJlLGUpfX1zZXRMZW5ndGgodCxlPS4yKnQsbj0uMiplKXt0aGlzLmxpbmUuc2NhbGUuc2V0KDEsTWF0aC5tYXgoMWUtNCx0LWUpLDEpLHRoaXMubGluZS51cGRhdGVNYXRyaXgoKSx0aGlzLmNvbmUuc2NhbGUuc2V0KG4sZSxuKSx0aGlzLmNvbmUucG9zaXRpb24ueT10LHRoaXMuY29uZS51cGRhdGVNYXRyaXgoKX1zZXRDb2xvcih0KXt0aGlzLmxpbmUubWF0ZXJpYWwuY29sb3Iuc2V0KHQpLHRoaXMuY29uZS5tYXRlcmlhbC5jb2xvci5zZXQodCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0LCExKSx0aGlzLmxpbmUuY29weSh0LmxpbmUpLHRoaXMuY29uZS5jb3B5KHQuY29uZSksdGhpc319LEF1ZGlvOmhpZSxBdWRpb0FuYWx5c2VyOmdpZSxBdWRpb0NvbnRleHQ6UW5lLEF1ZGlvTGlzdGVuZXI6Y2xhc3MgZXh0ZW5kcyBWM3R7Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMudHlwZT0iQXVkaW9MaXN0ZW5lciIsdGhpcy5jb250ZXh0PVFuZS5nZXRDb250ZXh0KCksdGhpcy5nYWluPXRoaXMuY29udGV4dC5jcmVhdGVHYWluKCksdGhpcy5nYWluLmNvbm5lY3QodGhpcy5jb250ZXh0LmRlc3RpbmF0aW9uKSx0aGlzLmZpbHRlcj1udWxsLHRoaXMudGltZURlbHRhPTAsdGhpcy5fY2xvY2s9bmV3IG9pZX1nZXRJbnB1dCgpe3JldHVybiB0aGlzLmdhaW59cmVtb3ZlRmlsdGVyKCl7cmV0dXJuIG51bGwhPT10aGlzLmZpbHRlciYmKHRoaXMuZ2Fpbi5kaXNjb25uZWN0KHRoaXMuZmlsdGVyKSx0aGlzLmZpbHRlci5kaXNjb25uZWN0KHRoaXMuY29udGV4dC5kZXN0aW5hdGlvbiksdGhpcy5nYWluLmNvbm5lY3QodGhpcy5jb250ZXh0LmRlc3RpbmF0aW9uKSx0aGlzLmZpbHRlcj1udWxsKSx0aGlzfWdldEZpbHRlcigpe3JldHVybiB0aGlzLmZpbHRlcn1zZXRGaWx0ZXIodCl7cmV0dXJuIG51bGwhPT10aGlzLmZpbHRlcj8odGhpcy5nYWluLmRpc2Nvbm5lY3QodGhpcy5maWx0ZXIpLHRoaXMuZmlsdGVyLmRpc2Nvbm5lY3QodGhpcy5jb250ZXh0LmRlc3RpbmF0aW9uKSk6dGhpcy5nYWluLmRpc2Nvbm5lY3QodGhpcy5jb250ZXh0LmRlc3RpbmF0aW9uKSx0aGlzLmZpbHRlcj10LHRoaXMuZ2Fpbi5jb25uZWN0KHRoaXMuZmlsdGVyKSx0aGlzLmZpbHRlci5jb25uZWN0KHRoaXMuY29udGV4dC5kZXN0aW5hdGlvbiksdGhpc31nZXRNYXN0ZXJWb2x1bWUoKXtyZXR1cm4gdGhpcy5nYWluLmdhaW4udmFsdWV9c2V0TWFzdGVyVm9sdW1lKHQpe3JldHVybiB0aGlzLmdhaW4uZ2Fpbi5zZXRUYXJnZXRBdFRpbWUodCx0aGlzLmNvbnRleHQuY3VycmVudFRpbWUsLjAxKSx0aGlzfXVwZGF0ZU1hdHJpeFdvcmxkKHQpe3N1cGVyLnVwZGF0ZU1hdHJpeFdvcmxkKHQpO2NvbnN0IGU9dGhpcy5jb250ZXh0Lmxpc3RlbmVyLG49dGhpcy51cDtpZih0aGlzLnRpbWVEZWx0YT10aGlzLl9jbG9jay5nZXREZWx0YSgpLHRoaXMubWF0cml4V29ybGQuZGVjb21wb3NlKHNpZSxsaWUsY2llKSx1aWUuc2V0KDAsMCwtMSkuYXBwbHlRdWF0ZXJuaW9uKGxpZSksZS5wb3NpdGlvblgpe2NvbnN0IHQ9dGhpcy5jb250ZXh0LmN1cnJlbnRUaW1lK3RoaXMudGltZURlbHRhO2UucG9zaXRpb25YLmxpbmVhclJhbXBUb1ZhbHVlQXRUaW1lKHNpZS54LHQpLGUucG9zaXRpb25ZLmxpbmVhclJhbXBUb1ZhbHVlQXRUaW1lKHNpZS55LHQpLGUucG9zaXRpb25aLmxpbmVhclJhbXBUb1ZhbHVlQXRUaW1lKHNpZS56LHQpLGUuZm9yd2FyZFgubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUodWllLngsdCksZS5mb3J3YXJkWS5saW5lYXJSYW1wVG9WYWx1ZUF0VGltZSh1aWUueSx0KSxlLmZvcndhcmRaLmxpbmVhclJhbXBUb1ZhbHVlQXRUaW1lKHVpZS56LHQpLGUudXBYLmxpbmVhclJhbXBUb1ZhbHVlQXRUaW1lKG4ueCx0KSxlLnVwWS5saW5lYXJSYW1wVG9WYWx1ZUF0VGltZShuLnksdCksZS51cFoubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUobi56LHQpfWVsc2UgZS5zZXRQb3NpdGlvbihzaWUueCxzaWUueSxzaWUueiksZS5zZXRPcmllbnRhdGlvbih1aWUueCx1aWUueSx1aWUueixuLngsbi55LG4ueil9fSxBdWRpb0xvYWRlcjp0aWUsQXhlc0hlbHBlcjpocmUsQXhpc0hlbHBlcjpmdW5jdGlvbiBncmUodCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQXhpc0hlbHBlciBoYXMgYmVlbiByZW5hbWVkIHRvIFRIUkVFLkF4ZXNIZWxwZXIuIiksbmV3IGhyZSh0KX0sQmFja1NpZGU6MSxCYXNpY0RlcHRoUGFja2luZzozMjAwLEJhc2ljU2hhZG93TWFwOjAsQmluYXJ5VGV4dHVyZUxvYWRlcjpmdW5jdGlvbiBfcmUodCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQmluYXJ5VGV4dHVyZUxvYWRlciBoYXMgYmVlbiByZW5hbWVkIHRvIFRIUkVFLkRhdGFUZXh0dXJlTG9hZGVyLiIpLG5ldyBnbmUodCl9LEJvbmU6Qjd0LEJvb2xlYW5LZXlmcmFtZVRyYWNrOlFlZSxCb3VuZGluZ0JveEhlbHBlcjpmdW5jdGlvbiB5cmUodCxlKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5Cb3VuZGluZ0JveEhlbHBlciBoYXMgYmVlbiBkZXByZWNhdGVkLiBDcmVhdGluZyBhIFRIUkVFLkJveEhlbHBlciBpbnN0ZWFkLiIpLG5ldyBzcmUodCxlKX0sQm94MjpIaWUsQm94MzpVNXQsQm94M0hlbHBlcjpjbGFzcyBleHRlbmRzIGl0ZXtjb25zdHJ1Y3Rvcih0LGU9MTY3NzY5NjApe2NvbnN0IG49bmV3IFVpbnQxNkFycmF5KFswLDEsMSwyLDIsMywzLDAsNCw1LDUsNiw2LDcsNyw0LDAsNCwxLDUsMiw2LDMsN10pLGk9bmV3IE40dDtpLnNldEluZGV4KG5ldyBoNHQobiwxKSksaS5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgYjR0KFsxLDEsMSwtMSwxLDEsLTEsLTEsMSwxLC0xLDEsMSwxLC0xLC0xLDEsLTEsLTEsLTEsLTEsMSwtMSwtMV0sMykpLHN1cGVyKGksbmV3IFg3dCh7Y29sb3I6ZSx0b25lTWFwcGVkOiExfSkpLHRoaXMuYm94PXQsdGhpcy50eXBlPSJCb3gzSGVscGVyIix0aGlzLmdlb21ldHJ5LmNvbXB1dGVCb3VuZGluZ1NwaGVyZSgpfXVwZGF0ZU1hdHJpeFdvcmxkKHQpe2NvbnN0IGU9dGhpcy5ib3g7ZS5pc0VtcHR5KCl8fChlLmdldENlbnRlcih0aGlzLnBvc2l0aW9uKSxlLmdldFNpemUodGhpcy5zY2FsZSksdGhpcy5zY2FsZS5tdWx0aXBseVNjYWxhciguNSksc3VwZXIudXBkYXRlTWF0cml4V29ybGQodCkpfX0sQm94QnVmZmVyR2VvbWV0cnk6SjR0LEJveEdlb21ldHJ5Oko0dCxCb3hIZWxwZXI6c3JlLEJ1ZmZlckF0dHJpYnV0ZTpoNHQsQnVmZmVyR2VvbWV0cnk6TjR0LEJ1ZmZlckdlb21ldHJ5TG9hZGVyOkduZSxCeXRlVHlwZToxMDEwLENhY2hlOmxuZSxDYW1lcmE6aTZ0LENhbWVyYUhlbHBlcjpjbGFzcyBleHRlbmRzIGl0ZXtjb25zdHJ1Y3Rvcih0KXtjb25zdCBlPW5ldyBONHQsbj1uZXcgWDd0KHtjb2xvcjoxNjc3NzIxNSx2ZXJ0ZXhDb2xvcnM6ITAsdG9uZU1hcHBlZDohMX0pLGk9W10scj1bXSxvPXt9LGE9bmV3IHM0dCgxNjc1NTIwMCkscz1uZXcgczR0KDE2NzExNjgwKSxsPW5ldyBzNHQoNDM3NzUpLGM9bmV3IHM0dCgxNjc3NzIxNSksdT1uZXcgczR0KDMzNTU0NDMpO2Z1bmN0aW9uIGgodCxlLG4pe2QodCxuKSxkKGUsbil9ZnVuY3Rpb24gZCh0LGUpe2kucHVzaCgwLDAsMCksci5wdXNoKGUucixlLmcsZS5iKSx2b2lkIDA9PT1vW3RdJiYob1t0XT1bXSksb1t0XS5wdXNoKGkubGVuZ3RoLzMtMSl9aCgibjEiLCJuMiIsYSksaCgibjIiLCJuNCIsYSksaCgibjQiLCJuMyIsYSksaCgibjMiLCJuMSIsYSksaCgiZjEiLCJmMiIsYSksaCgiZjIiLCJmNCIsYSksaCgiZjQiLCJmMyIsYSksaCgiZjMiLCJmMSIsYSksaCgibjEiLCJmMSIsYSksaCgibjIiLCJmMiIsYSksaCgibjMiLCJmMyIsYSksaCgibjQiLCJmNCIsYSksaCgicCIsIm4xIixzKSxoKCJwIiwibjIiLHMpLGgoInAiLCJuMyIscyksaCgicCIsIm40IixzKSxoKCJ1MSIsInUyIixsKSxoKCJ1MiIsInUzIixsKSxoKCJ1MyIsInUxIixsKSxoKCJjIiwidCIsYyksaCgicCIsImMiLHUpLGgoImNuMSIsImNuMiIsdSksaCgiY24zIiwiY240Iix1KSxoKCJjZjEiLCJjZjIiLHUpLGgoImNmMyIsImNmNCIsdSksZS5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgYjR0KGksMykpLGUuc2V0QXR0cmlidXRlKCJjb2xvciIsbmV3IGI0dChyLDMpKSxzdXBlcihlLG4pLHRoaXMudHlwZT0iQ2FtZXJhSGVscGVyIix0aGlzLmNhbWVyYT10LHRoaXMuY2FtZXJhLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgmJnRoaXMuY2FtZXJhLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKSx0aGlzLm1hdHJpeD10Lm1hdHJpeFdvcmxkLHRoaXMubWF0cml4QXV0b1VwZGF0ZT0hMSx0aGlzLnBvaW50TWFwPW8sdGhpcy51cGRhdGUoKX11cGRhdGUoKXtjb25zdCB0PXRoaXMuZ2VvbWV0cnksZT10aGlzLnBvaW50TWFwO3JyZS5wcm9qZWN0aW9uTWF0cml4SW52ZXJzZS5jb3B5KHRoaXMuY2FtZXJhLnByb2plY3Rpb25NYXRyaXhJbnZlcnNlKSxvcmUoImMiLGUsdCxycmUsMCwwLC0xKSxvcmUoInQiLGUsdCxycmUsMCwwLDEpLG9yZSgibjEiLGUsdCxycmUsLTEsLTEsLTEpLG9yZSgibjIiLGUsdCxycmUsMSwtMSwtMSksb3JlKCJuMyIsZSx0LHJyZSwtMSwxLC0xKSxvcmUoIm40IixlLHQscnJlLDEsMSwtMSksb3JlKCJmMSIsZSx0LHJyZSwtMSwtMSwxKSxvcmUoImYyIixlLHQscnJlLDEsLTEsMSksb3JlKCJmMyIsZSx0LHJyZSwtMSwxLDEpLG9yZSgiZjQiLGUsdCxycmUsMSwxLDEpLG9yZSgidTEiLGUsdCxycmUsLjcsMS4xLC0xKSxvcmUoInUyIixlLHQscnJlLC0uNywxLjEsLTEpLG9yZSgidTMiLGUsdCxycmUsMCwyLC0xKSxvcmUoImNmMSIsZSx0LHJyZSwtMSwwLDEpLG9yZSgiY2YyIixlLHQscnJlLDEsMCwxKSxvcmUoImNmMyIsZSx0LHJyZSwwLC0xLDEpLG9yZSgiY2Y0IixlLHQscnJlLDAsMSwxKSxvcmUoImNuMSIsZSx0LHJyZSwtMSwwLC0xKSxvcmUoImNuMiIsZSx0LHJyZSwxLDAsLTEpLG9yZSgiY24zIixlLHQscnJlLDAsLTEsLTEpLG9yZSgiY240IixlLHQscnJlLDAsMSwtMSksdC5nZXRBdHRyaWJ1dGUoInBvc2l0aW9uIikubmVlZHNVcGRhdGU9ITB9ZGlzcG9zZSgpe3RoaXMuZ2VvbWV0cnkuZGlzcG9zZSgpLHRoaXMubWF0ZXJpYWwuZGlzcG9zZSgpfX0sQ2FudmFzUmVuZGVyZXI6ZnVuY3Rpb24gdnJlKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuQ2FudmFzUmVuZGVyZXIgaGFzIGJlZW4gcmVtb3ZlZCIpfSxDYW52YXNUZXh0dXJlOmZ0ZSxDYXRtdWxsUm9tQ3VydmUzOlJ0ZSxDaW5lb25Ub25lTWFwcGluZzozLENpcmNsZUJ1ZmZlckdlb21ldHJ5Omd0ZSxDaXJjbGVHZW9tZXRyeTpndGUsQ2xhbXBUb0VkZ2VXcmFwcGluZzpsMnQsQ2xvY2s6b2llLENvbG9yOnM0dCxDb2xvcktleWZyYW1lVHJhY2s6dG5lLENvbXByZXNzZWRUZXh0dXJlOnB0ZSxDb21wcmVzc2VkVGV4dHVyZUxvYWRlcjpjbGFzcyBleHRlbmRzIGhuZXtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KX1sb2FkKHQsZSxuLGkpe2NvbnN0IHI9dGhpcyxvPVtdLGE9bmV3IHB0ZSxzPW5ldyBwbmUodGhpcy5tYW5hZ2VyKTtzLnNldFBhdGgodGhpcy5wYXRoKSxzLnNldFJlc3BvbnNlVHlwZSgiYXJyYXlidWZmZXIiKSxzLnNldFJlcXVlc3RIZWFkZXIodGhpcy5yZXF1ZXN0SGVhZGVyKSxzLnNldFdpdGhDcmVkZW50aWFscyhyLndpdGhDcmVkZW50aWFscyk7bGV0IGw9MDtmdW5jdGlvbiBjKGMpe3MubG9hZCh0W2NdLChmdW5jdGlvbih0KXtjb25zdCBuPXIucGFyc2UodCwhMCk7b1tjXT17d2lkdGg6bi53aWR0aCxoZWlnaHQ6bi5oZWlnaHQsZm9ybWF0Om4uZm9ybWF0LG1pcG1hcHM6bi5taXBtYXBzfSxsKz0xLDY9PT1sJiYoMT09PW4ubWlwbWFwQ291bnQmJihhLm1pbkZpbHRlcj1wMnQpLGEuaW1hZ2U9byxhLmZvcm1hdD1uLmZvcm1hdCxhLm5lZWRzVXBkYXRlPSEwLGUmJmUoYSkpfSksbixpKX1pZihBcnJheS5pc0FycmF5KHQpKWZvcihsZXQgZT0wLG49dC5sZW5ndGg7ZTxuOysrZSljKGUpO2Vsc2Ugcy5sb2FkKHQsKGZ1bmN0aW9uKHQpe2NvbnN0IG49ci5wYXJzZSh0LCEwKTtpZihuLmlzQ3ViZW1hcCl7Y29uc3QgdD1uLm1pcG1hcHMubGVuZ3RoL24ubWlwbWFwQ291bnQ7Zm9yKGxldCBlPTA7ZTx0O2UrKyl7b1tlXT17bWlwbWFwczpbXX07Zm9yKGxldCB0PTA7dDxuLm1pcG1hcENvdW50O3QrKylvW2VdLm1pcG1hcHMucHVzaChuLm1pcG1hcHNbZSpuLm1pcG1hcENvdW50K3RdKSxvW2VdLmZvcm1hdD1uLmZvcm1hdCxvW2VdLndpZHRoPW4ud2lkdGgsb1tlXS5oZWlnaHQ9bi5oZWlnaHR9YS5pbWFnZT1vfWVsc2UgYS5pbWFnZS53aWR0aD1uLndpZHRoLGEuaW1hZ2UuaGVpZ2h0PW4uaGVpZ2h0LGEubWlwbWFwcz1uLm1pcG1hcHM7MT09PW4ubWlwbWFwQ291bnQmJihhLm1pbkZpbHRlcj1wMnQpLGEuZm9ybWF0PW4uZm9ybWF0LGEubmVlZHNVcGRhdGU9ITAsZSYmZShhKX0pLG4saSk7cmV0dXJuIGF9fSxDb25lQnVmZmVyR2VvbWV0cnk6eXRlLENvbmVHZW9tZXRyeTp5dGUsQ3ViZUNhbWVyYTphNnQsQ3ViZVJlZmxlY3Rpb25NYXBwaW5nOmUydCxDdWJlUmVmcmFjdGlvbk1hcHBpbmc6bjJ0LEN1YmVUZXh0dXJlOnM2dCxDdWJlVGV4dHVyZUxvYWRlcjptbmUsQ3ViZVVWUmVmbGVjdGlvbk1hcHBpbmc6bzJ0LEN1YmVVVlJlZnJhY3Rpb25NYXBwaW5nOmEydCxDdWJpY0JlemllckN1cnZlOkJ0ZSxDdWJpY0JlemllckN1cnZlMzpIdGUsQ3ViaWNJbnRlcnBvbGFudDokZWUsQ3VsbEZhY2VCYWNrOjEsQ3VsbEZhY2VGcm9udDoyLEN1bGxGYWNlRnJvbnRCYWNrOjMsQ3VsbEZhY2VOb25lOjAsQ3VydmU6VHRlLEN1cnZlUGF0aDp5bmUsQ3VzdG9tQmxlbmRpbmc6NSxDdXN0b21Ub25lTWFwcGluZzo1LEN5bGluZGVyQnVmZmVyR2VvbWV0cnk6X3RlLEN5bGluZGVyR2VvbWV0cnk6X3RlLEN5bGluZHJpY2FsOmNsYXNze2NvbnN0cnVjdG9yKHQ9MSxlPTAsbj0wKXtyZXR1cm4gdGhpcy5yYWRpdXM9dCx0aGlzLnRoZXRhPWUsdGhpcy55PW4sdGhpc31zZXQodCxlLG4pe3JldHVybiB0aGlzLnJhZGl1cz10LHRoaXMudGhldGE9ZSx0aGlzLnk9bix0aGlzfWNvcHkodCl7cmV0dXJuIHRoaXMucmFkaXVzPXQucmFkaXVzLHRoaXMudGhldGE9dC50aGV0YSx0aGlzLnk9dC55LHRoaXN9c2V0RnJvbVZlY3RvcjModCl7cmV0dXJuIHRoaXMuc2V0RnJvbUNhcnRlc2lhbkNvb3Jkcyh0LngsdC55LHQueil9c2V0RnJvbUNhcnRlc2lhbkNvb3Jkcyh0LGUsbil7cmV0dXJuIHRoaXMucmFkaXVzPU1hdGguc3FydCh0KnQrbipuKSx0aGlzLnRoZXRhPU1hdGguYXRhbjIodCxuKSx0aGlzLnk9ZSx0aGlzfWNsb25lKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMpfX0sRGF0YVRleHR1cmU6SDd0LERhdGFUZXh0dXJlMkRBcnJheTpoOXQsRGF0YVRleHR1cmUzRDpkOXQsRGF0YVRleHR1cmVMb2FkZXI6Z25lLERhdGFVdGlsczpjbGFzc3tzdGF0aWMgdG9IYWxmRmxvYXQodCl7ZHJlWzBdPXQ7Y29uc3QgZT1wcmVbMF07bGV0IG49ZT4+MTYmMzI3NjgsaT1lPj4xMiYyMDQ3O2NvbnN0IHI9ZT4+MjMmMjU1O3JldHVybiByPDEwMz9uOnI+MTQyPyhufD0zMTc0NCxufD0oMjU1PT1yPzA6MSkmJjgzODg2MDcmZSxuKTpyPDExMz8oaXw9MjA0OCxufD0oaT4+MTE0LXIpKyhpPj4xMTMtciYxKSxuKToobnw9ci0xMTI8PDEwfGk+PjEsbis9MSZpLG4pfX0sRGVjcmVtZW50U3RlbmNpbE9wOjc2ODMsRGVjcmVtZW50V3JhcFN0ZW5jaWxPcDozNDA1NixEZWZhdWx0TG9hZGluZ01hbmFnZXI6dW5lLERlcHRoRm9ybWF0Ok0ydCxEZXB0aFN0ZW5jaWxGb3JtYXQ6RTJ0LERlcHRoVGV4dHVyZTptdGUsRGlyZWN0aW9uYWxMaWdodDpPbmUsRGlyZWN0aW9uYWxMaWdodEhlbHBlcjpjbGFzcyBleHRlbmRzIFYzdHtjb25zdHJ1Y3Rvcih0LGUsbil7c3VwZXIoKSx0aGlzLmxpZ2h0PXQsdGhpcy5saWdodC51cGRhdGVNYXRyaXhXb3JsZCgpLHRoaXMubWF0cml4PXQubWF0cml4V29ybGQsdGhpcy5tYXRyaXhBdXRvVXBkYXRlPSExLHRoaXMuY29sb3I9bix2b2lkIDA9PT1lJiYoZT0xKTtsZXQgaT1uZXcgTjR0O2kuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IGI0dChbLWUsZSwwLGUsZSwwLGUsLWUsMCwtZSwtZSwwLC1lLGUsMF0sMykpO2NvbnN0IHI9bmV3IFg3dCh7Zm9nOiExLHRvbmVNYXBwZWQ6ITF9KTt0aGlzLmxpZ2h0UGxhbmU9bmV3IHR0ZShpLHIpLHRoaXMuYWRkKHRoaXMubGlnaHRQbGFuZSksaT1uZXcgTjR0LGkuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IGI0dChbMCwwLDAsMCwwLDFdLDMpKSx0aGlzLnRhcmdldExpbmU9bmV3IHR0ZShpLHIpLHRoaXMuYWRkKHRoaXMudGFyZ2V0TGluZSksdGhpcy51cGRhdGUoKX1kaXNwb3NlKCl7dGhpcy5saWdodFBsYW5lLmdlb21ldHJ5LmRpc3Bvc2UoKSx0aGlzLmxpZ2h0UGxhbmUubWF0ZXJpYWwuZGlzcG9zZSgpLHRoaXMudGFyZ2V0TGluZS5nZW9tZXRyeS5kaXNwb3NlKCksdGhpcy50YXJnZXRMaW5lLm1hdGVyaWFsLmRpc3Bvc2UoKX11cGRhdGUoKXt0cmUuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKHRoaXMubGlnaHQubWF0cml4V29ybGQpLGVyZS5zZXRGcm9tTWF0cml4UG9zaXRpb24odGhpcy5saWdodC50YXJnZXQubWF0cml4V29ybGQpLG5yZS5zdWJWZWN0b3JzKGVyZSx0cmUpLHRoaXMubGlnaHRQbGFuZS5sb29rQXQoZXJlKSx2b2lkIDAhPT10aGlzLmNvbG9yPyh0aGlzLmxpZ2h0UGxhbmUubWF0ZXJpYWwuY29sb3Iuc2V0KHRoaXMuY29sb3IpLHRoaXMudGFyZ2V0TGluZS5tYXRlcmlhbC5jb2xvci5zZXQodGhpcy5jb2xvcikpOih0aGlzLmxpZ2h0UGxhbmUubWF0ZXJpYWwuY29sb3IuY29weSh0aGlzLmxpZ2h0LmNvbG9yKSx0aGlzLnRhcmdldExpbmUubWF0ZXJpYWwuY29sb3IuY29weSh0aGlzLmxpZ2h0LmNvbG9yKSksdGhpcy50YXJnZXRMaW5lLmxvb2tBdChlcmUpLHRoaXMudGFyZ2V0TGluZS5zY2FsZS56PW5yZS5sZW5ndGgoKX19LERpc2NyZXRlSW50ZXJwb2xhbnQ6WmVlLERvZGVjYWhlZHJvbkJ1ZmZlckdlb21ldHJ5OmJ0ZSxEb2RlY2FoZWRyb25HZW9tZXRyeTpidGUsRG91YmxlU2lkZToyLERzdEFscGhhRmFjdG9yOjIwNixEc3RDb2xvckZhY3RvcjoyMDgsRHluYW1pY0J1ZmZlckF0dHJpYnV0ZTpmdW5jdGlvbiBicmUodCxlKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5EeW5hbWljQnVmZmVyQXR0cmlidXRlIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBuZXcgVEhSRUUuQnVmZmVyQXR0cmlidXRlKCkuc2V0VXNhZ2UoIFRIUkVFLkR5bmFtaWNEcmF3VXNhZ2UgKSBpbnN0ZWFkLiIpLG5ldyBoNHQodCxlKS5zZXRVc2FnZShRMnQpfSxEeW5hbWljQ29weVVzYWdlOjM1MDUwLER5bmFtaWNEcmF3VXNhZ2U6UTJ0LER5bmFtaWNSZWFkVXNhZ2U6MzUwNDksRWRnZXNHZW9tZXRyeTpFdGUsRWRnZXNIZWxwZXI6ZnVuY3Rpb24geHJlKHQsZSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuRWRnZXNIZWxwZXIgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIFRIUkVFLkVkZ2VzR2VvbWV0cnkgaW5zdGVhZC4iKSxuZXcgaXRlKG5ldyBFdGUodC5nZW9tZXRyeSksbmV3IFg3dCh7Y29sb3I6dm9pZCAwIT09ZT9lOjE2Nzc3MjE1fSkpfSxFbGxpcHNlQ3VydmU6Q3RlLEVxdWFsRGVwdGg6NCxFcXVhbFN0ZW5jaWxGdW5jOjUxNCxFcXVpcmVjdGFuZ3VsYXJSZWZsZWN0aW9uTWFwcGluZzppMnQsRXF1aXJlY3Rhbmd1bGFyUmVmcmFjdGlvbk1hcHBpbmc6cjJ0LEV1bGVyOlQzdCxFdmVudERpc3BhdGNoZXI6ZTV0LEV4dHJ1ZGVCdWZmZXJHZW9tZXRyeTpiZWUsRXh0cnVkZUdlb21ldHJ5OmJlZSxGYWNlQ29sb3JzOjEsRmlsZUxvYWRlcjpwbmUsRmxhdFNoYWRpbmc6MSxGbG9hdDE2QnVmZmVyQXR0cmlidXRlOnY0dCxGbG9hdDMyQXR0cmlidXRlOmZ1bmN0aW9uIHdyZSh0LGUpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkZsb2F0MzJBdHRyaWJ1dGUgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIG5ldyBUSFJFRS5GbG9hdDMyQnVmZmVyQXR0cmlidXRlKCkgaW5zdGVhZC4iKSxuZXcgYjR0KHQsZSl9LEZsb2F0MzJCdWZmZXJBdHRyaWJ1dGU6YjR0LEZsb2F0NjRBdHRyaWJ1dGU6ZnVuY3Rpb24gU3JlKHQsZSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuRmxvYXQ2NEF0dHJpYnV0ZSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgbmV3IFRIUkVFLkZsb2F0NjRCdWZmZXJBdHRyaWJ1dGUoKSBpbnN0ZWFkLiIpLG5ldyB4NHQodCxlKX0sRmxvYXQ2NEJ1ZmZlckF0dHJpYnV0ZTp4NHQsRmxvYXRUeXBlOnYydCxGb2c6bDd0LEZvZ0V4cDI6czd0LEZvbnQ6S25lLEZvbnRMb2FkZXI6Y2xhc3MgZXh0ZW5kcyBobmV7Y29uc3RydWN0b3IodCl7c3VwZXIodCl9bG9hZCh0LGUsbixpKXtjb25zdCByPXRoaXMsbz1uZXcgcG5lKHRoaXMubWFuYWdlcik7by5zZXRQYXRoKHRoaXMucGF0aCksby5zZXRSZXF1ZXN0SGVhZGVyKHRoaXMucmVxdWVzdEhlYWRlciksby5zZXRXaXRoQ3JlZGVudGlhbHMoci53aXRoQ3JlZGVudGlhbHMpLG8ubG9hZCh0LChmdW5jdGlvbih0KXtsZXQgbjt0cnl7bj1KU09OLnBhcnNlKHQpfWNhdGNoKGUpe2NvbnNvbGUud2FybigiVEhSRUUuRm9udExvYWRlcjogdHlwZWZhY2UuanMgc3VwcG9ydCBpcyBiZWluZyBkZXByZWNhdGVkLiBVc2UgdHlwZWZhY2UuanNvbiBpbnN0ZWFkLiIpLG49SlNPTi5wYXJzZSh0LnN1YnN0cmluZyg2NSx0Lmxlbmd0aC0yKSl9Y29uc3QgaT1yLnBhcnNlKG4pO2UmJmUoaSl9KSxuLGkpfXBhcnNlKHQpe3JldHVybiBuZXcgS25lKHQpfX0sRnJvbnRTaWRlOjAsRnJ1c3R1bTptNnQsR0xCdWZmZXJBdHRyaWJ1dGU6UmllLEdMU0wxOiIxMDAiLEdMU0wzOnQ1dCxHYW1tYUVuY29kaW5nOnEydCxHcmVhdGVyRGVwdGg6NixHcmVhdGVyRXF1YWxEZXB0aDo1LEdyZWF0ZXJFcXVhbFN0ZW5jaWxGdW5jOjUxOCxHcmVhdGVyU3RlbmNpbEZ1bmM6NTE2LEdyaWRIZWxwZXI6UWllLEdyb3VwOnQ3dCxIYWxmRmxvYXRUeXBlOmIydCxIZW1pc3BoZXJlTGlnaHQ6d25lLEhlbWlzcGhlcmVMaWdodEhlbHBlcjpjbGFzcyBleHRlbmRzIFYzdHtjb25zdHJ1Y3Rvcih0LGUsbil7c3VwZXIoKSx0aGlzLmxpZ2h0PXQsdGhpcy5saWdodC51cGRhdGVNYXRyaXhXb3JsZCgpLHRoaXMubWF0cml4PXQubWF0cml4V29ybGQsdGhpcy5tYXRyaXhBdXRvVXBkYXRlPSExLHRoaXMuY29sb3I9bjtjb25zdCBpPW5ldyBNZWUoZSk7aS5yb3RhdGVZKC41Kk1hdGguUEkpLHRoaXMubWF0ZXJpYWw9bmV3IGw0dCh7d2lyZWZyYW1lOiEwLGZvZzohMSx0b25lTWFwcGVkOiExfSksdm9pZCAwPT09dGhpcy5jb2xvciYmKHRoaXMubWF0ZXJpYWwudmVydGV4Q29sb3JzPSEwKTtjb25zdCByPWkuZ2V0QXR0cmlidXRlKCJwb3NpdGlvbiIpLG89bmV3IEZsb2F0MzJBcnJheSgzKnIuY291bnQpO2kuc2V0QXR0cmlidXRlKCJjb2xvciIsbmV3IGg0dChvLDMpKSx0aGlzLmFkZChuZXcgSzR0KGksdGhpcy5tYXRlcmlhbCkpLHRoaXMudXBkYXRlKCl9ZGlzcG9zZSgpe3RoaXMuY2hpbGRyZW5bMF0uZ2VvbWV0cnkuZGlzcG9zZSgpLHRoaXMuY2hpbGRyZW5bMF0ubWF0ZXJpYWwuZGlzcG9zZSgpfXVwZGF0ZSgpe2NvbnN0IHQ9dGhpcy5jaGlsZHJlblswXTtpZih2b2lkIDAhPT10aGlzLmNvbG9yKXRoaXMubWF0ZXJpYWwuY29sb3Iuc2V0KHRoaXMuY29sb3IpO2Vsc2V7Y29uc3QgZT10Lmdlb21ldHJ5LmdldEF0dHJpYnV0ZSgiY29sb3IiKTtaaWUuY29weSh0aGlzLmxpZ2h0LmNvbG9yKSxKaWUuY29weSh0aGlzLmxpZ2h0Lmdyb3VuZENvbG9yKTtmb3IobGV0IHQ9MCxuPWUuY291bnQ7dDxuO3QrKyl7Y29uc3QgaT10PG4vMj9aaWU6SmllO2Uuc2V0WFlaKHQsaS5yLGkuZyxpLmIpfWUubmVlZHNVcGRhdGU9ITB9dC5sb29rQXQoS2llLnNldEZyb21NYXRyaXhQb3NpdGlvbih0aGlzLmxpZ2h0Lm1hdHJpeFdvcmxkKS5uZWdhdGUoKSl9fSxIZW1pc3BoZXJlTGlnaHRQcm9iZTplaWUsSWNvc2FoZWRyb25CdWZmZXJHZW9tZXRyeTp3ZWUsSWNvc2FoZWRyb25HZW9tZXRyeTp3ZWUsSW1hZ2VCaXRtYXBMb2FkZXI6WG5lLEltYWdlTG9hZGVyOmZuZSxJbWFnZVV0aWxzOkw1dCxJbW1lZGlhdGVSZW5kZXJPYmplY3Q6amllLEluY3JlbWVudFN0ZW5jaWxPcDo3NjgyLEluY3JlbWVudFdyYXBTdGVuY2lsT3A6MzQwNTUsSW5zdGFuY2VkQnVmZmVyQXR0cmlidXRlOmpuZSxJbnN0YW5jZWRCdWZmZXJHZW9tZXRyeTpVbmUsSW5zdGFuY2VkSW50ZXJsZWF2ZWRCdWZmZXI6SWllLEluc3RhbmNlZE1lc2g6WTd0LEludDE2QXR0cmlidXRlOmZ1bmN0aW9uIE1yZSh0LGUpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkludDE2QXR0cmlidXRlIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBuZXcgVEhSRUUuSW50MTZCdWZmZXJBdHRyaWJ1dGUoKSBpbnN0ZWFkLiIpLG5ldyBtNHQodCxlKX0sSW50MTZCdWZmZXJBdHRyaWJ1dGU6bTR0LEludDMyQXR0cmlidXRlOmZ1bmN0aW9uIEVyZSh0LGUpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkludDMyQXR0cmlidXRlIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBuZXcgVEhSRUUuSW50MzJCdWZmZXJBdHRyaWJ1dGUoKSBpbnN0ZWFkLiIpLG5ldyBfNHQodCxlKX0sSW50MzJCdWZmZXJBdHRyaWJ1dGU6XzR0LEludDhBdHRyaWJ1dGU6ZnVuY3Rpb24gVHJlKHQsZSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuSW50OEF0dHJpYnV0ZSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgbmV3IFRIUkVFLkludDhCdWZmZXJBdHRyaWJ1dGUoKSBpbnN0ZWFkLiIpLG5ldyBkNHQodCxlKX0sSW50OEJ1ZmZlckF0dHJpYnV0ZTpkNHQsSW50VHlwZToxMDEzLEludGVybGVhdmVkQnVmZmVyOnU3dCxJbnRlcmxlYXZlZEJ1ZmZlckF0dHJpYnV0ZTpkN3QsSW50ZXJwb2xhbnQ6WGVlLEludGVycG9sYXRlRGlzY3JldGU6ejJ0LEludGVycG9sYXRlTGluZWFyOkQydCxJbnRlcnBvbGF0ZVNtb290aDpCMnQsSW52ZXJ0U3RlbmNpbE9wOjUzODYsSlNPTkxvYWRlcjpmdW5jdGlvbiBDcmUoKXtjb25zb2xlLmVycm9yKCJUSFJFRS5KU09OTG9hZGVyIGhhcyBiZWVuIHJlbW92ZWQuIil9LEtlZXBTdGVuY2lsT3A6WjJ0LEtleWZyYW1lVHJhY2s6SmVlLExPRDpQN3QsTGF0aGVCdWZmZXJHZW9tZXRyeTpTZWUsTGF0aGVHZW9tZXRyeTpTZWUsTGF5ZXJzOkMzdCxMZW5zRmxhcmU6ZnVuY3Rpb24gQXJlKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuTGVuc0ZsYXJlIGhhcyBiZWVuIG1vdmVkIHRvIC9leGFtcGxlcy9qc20vb2JqZWN0cy9MZW5zZmxhcmUuanMiKX0sTGVzc0RlcHRoOjIsTGVzc0VxdWFsRGVwdGg6MyxMZXNzRXF1YWxTdGVuY2lsRnVuYzo1MTUsTGVzc1N0ZW5jaWxGdW5jOjUxMyxMaWdodDp4bmUsTGlnaHRQcm9iZTpIbmUsTGluZTp0dGUsTGluZTM6VWllLExpbmVCYXNpY01hdGVyaWFsOlg3dCxMaW5lQ3VydmU6RnRlLExpbmVDdXJ2ZTM6VnRlLExpbmVEYXNoZWRNYXRlcmlhbDpXZWUsTGluZUxvb3A6cnRlLExpbmVQaWVjZXM6MSxMaW5lU2VnbWVudHM6aXRlLExpbmVTdHJpcDowLExpbmVhckVuY29kaW5nOkcydCxMaW5lYXJGaWx0ZXI6cDJ0LExpbmVhckludGVycG9sYW50OktlZSxMaW5lYXJNaXBNYXBMaW5lYXJGaWx0ZXI6MTAwOCxMaW5lYXJNaXBNYXBOZWFyZXN0RmlsdGVyOjEwMDcsTGluZWFyTWlwbWFwTGluZWFyRmlsdGVyOm0ydCxMaW5lYXJNaXBtYXBOZWFyZXN0RmlsdGVyOmYydCxMaW5lYXJUb25lTWFwcGluZzoxLExvYWRlcjpobmUsTG9hZGVyVXRpbHM6Vm5lLExvYWRpbmdNYW5hZ2VyOmNuZSxMb2dMdXZFbmNvZGluZzozMDAzLExvb3BPbmNlOjIyMDAsTG9vcFBpbmdQb25nOjIyMDIsTG9vcFJlcGVhdDoyMjAxLEx1bWluYW5jZUFscGhhRm9ybWF0OjEwMjUsTHVtaW5hbmNlRm9ybWF0OjEwMjQsTU9VU0U6WjB0LE1hdGVyaWFsOnQ0dCxNYXRlcmlhbExvYWRlcjpGbmUsTWF0aDpwNXQsTWF0aFV0aWxzOnA1dCxNYXRyaXgzOkE1dCxNYXRyaXg0OmczdCxNYXhFcXVhdGlvbjoxMDQsTWVzaDpLNHQsTWVzaEJhc2ljTWF0ZXJpYWw6bDR0LE1lc2hEZXB0aE1hdGVyaWFsOlk4dCxNZXNoRGlzdGFuY2VNYXRlcmlhbDpYOHQsTWVzaEZhY2VNYXRlcmlhbDpmdW5jdGlvbiBrcmUodCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTWVzaEZhY2VNYXRlcmlhbCBoYXMgYmVlbiByZW1vdmVkLiBVc2UgYW4gQXJyYXkgaW5zdGVhZC4iKSx0fSxNZXNoTGFtYmVydE1hdGVyaWFsOmplZSxNZXNoTWF0Y2FwTWF0ZXJpYWw6R2VlLE1lc2hOb3JtYWxNYXRlcmlhbDpVZWUsTWVzaFBob25nTWF0ZXJpYWw6RmVlLE1lc2hQaHlzaWNhbE1hdGVyaWFsOkhlZSxNZXNoU3RhbmRhcmRNYXRlcmlhbDpCZWUsTWVzaFRvb25NYXRlcmlhbDpWZWUsTWluRXF1YXRpb246MTAzLE1pcnJvcmVkUmVwZWF0V3JhcHBpbmc6YzJ0LE1peE9wZXJhdGlvbjoxLE11bHRpTWF0ZXJpYWw6ZnVuY3Rpb24gTHJlKHQ9W10pe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk11bHRpTWF0ZXJpYWwgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIGFuIEFycmF5IGluc3RlYWQuIiksdC5pc011bHRpTWF0ZXJpYWw9ITAsdC5tYXRlcmlhbHM9dCx0LmNsb25lPWZ1bmN0aW9uKCl7cmV0dXJuIHQuc2xpY2UoKX0sdH0sTXVsdGlwbHlCbGVuZGluZzo0LE11bHRpcGx5T3BlcmF0aW9uOjAsTmVhcmVzdEZpbHRlcjp1MnQsTmVhcmVzdE1pcE1hcExpbmVhckZpbHRlcjoxMDA1LE5lYXJlc3RNaXBNYXBOZWFyZXN0RmlsdGVyOjEwMDQsTmVhcmVzdE1pcG1hcExpbmVhckZpbHRlcjpkMnQsTmVhcmVzdE1pcG1hcE5lYXJlc3RGaWx0ZXI6aDJ0LE5ldmVyRGVwdGg6MCxOZXZlclN0ZW5jaWxGdW5jOjUxMixOb0JsZW5kaW5nOjAsTm9Db2xvcnM6MCxOb1RvbmVNYXBwaW5nOjAsTm9ybWFsQW5pbWF0aW9uQmxlbmRNb2RlOlUydCxOb3JtYWxCbGVuZGluZzoxLE5vdEVxdWFsRGVwdGg6NyxOb3RFcXVhbFN0ZW5jaWxGdW5jOjUxNyxOdW1iZXJLZXlmcmFtZVRyYWNrOmVuZSxPYmplY3QzRDpWM3QsT2JqZWN0TG9hZGVyOmNsYXNzIGV4dGVuZHMgaG5le2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpfWxvYWQodCxlLG4saSl7Y29uc3Qgcj10aGlzLG89IiI9PT10aGlzLnBhdGg/Vm5lLmV4dHJhY3RVcmxCYXNlKHQpOnRoaXMucGF0aDt0aGlzLnJlc291cmNlUGF0aD10aGlzLnJlc291cmNlUGF0aHx8bztjb25zdCBhPW5ldyBwbmUodGhpcy5tYW5hZ2VyKTthLnNldFBhdGgodGhpcy5wYXRoKSxhLnNldFJlcXVlc3RIZWFkZXIodGhpcy5yZXF1ZXN0SGVhZGVyKSxhLnNldFdpdGhDcmVkZW50aWFscyh0aGlzLndpdGhDcmVkZW50aWFscyksYS5sb2FkKHQsKGZ1bmN0aW9uKG4pe2xldCBvPW51bGw7dHJ5e289SlNPTi5wYXJzZShuKX1jYXRjaChlKXtyZXR1cm4gdm9pZCAwIT09aSYmaShlKSx2b2lkIGNvbnNvbGUuZXJyb3IoIlRIUkVFOk9iamVjdExvYWRlcjogQ2FuJ3QgcGFyc2UgIit0KyIuIixlLm1lc3NhZ2UpfWNvbnN0IGE9by5tZXRhZGF0YTt2b2lkIDAhPT1hJiZ2b2lkIDAhPT1hLnR5cGUmJiJnZW9tZXRyeSIhPT1hLnR5cGUudG9Mb3dlckNhc2UoKT9yLnBhcnNlKG8sZSk6Y29uc29sZS5lcnJvcigiVEhSRUUuT2JqZWN0TG9hZGVyOiBDYW4ndCBsb2FkICIrdCl9KSxuLGkpfWFzeW5jIGxvYWRBc3luYyh0LGUpe2NvbnN0IG49IiI9PT10aGlzLnBhdGg/Vm5lLmV4dHJhY3RVcmxCYXNlKHQpOnRoaXMucGF0aDt0aGlzLnJlc291cmNlUGF0aD10aGlzLnJlc291cmNlUGF0aHx8bjtjb25zdCBpPW5ldyBwbmUodGhpcy5tYW5hZ2VyKTtpLnNldFBhdGgodGhpcy5wYXRoKSxpLnNldFJlcXVlc3RIZWFkZXIodGhpcy5yZXF1ZXN0SGVhZGVyKSxpLnNldFdpdGhDcmVkZW50aWFscyh0aGlzLndpdGhDcmVkZW50aWFscyk7Y29uc3Qgcj1hd2FpdCBpLmxvYWRBc3luYyh0LGUpLG89SlNPTi5wYXJzZShyKSxhPW8ubWV0YWRhdGE7aWYodm9pZCAwPT09YXx8dm9pZCAwPT09YS50eXBlfHwiZ2VvbWV0cnkiPT09YS50eXBlLnRvTG93ZXJDYXNlKCkpdGhyb3cgbmV3IEVycm9yKCJUSFJFRS5PYmplY3RMb2FkZXI6IENhbid0IGxvYWQgIit0KTtyZXR1cm4gYXdhaXQgdGhpcy5wYXJzZUFzeW5jKG8pfXBhcnNlKHQsZSl7Y29uc3Qgbj10aGlzLnBhcnNlQW5pbWF0aW9ucyh0LmFuaW1hdGlvbnMpLGk9dGhpcy5wYXJzZVNoYXBlcyh0LnNoYXBlcykscj10aGlzLnBhcnNlR2VvbWV0cmllcyh0Lmdlb21ldHJpZXMsaSksbz10aGlzLnBhcnNlSW1hZ2VzKHQuaW1hZ2VzLChmdW5jdGlvbigpe3ZvaWQgMCE9PWUmJmUobCl9KSksYT10aGlzLnBhcnNlVGV4dHVyZXModC50ZXh0dXJlcyxvKSxzPXRoaXMucGFyc2VNYXRlcmlhbHModC5tYXRlcmlhbHMsYSksbD10aGlzLnBhcnNlT2JqZWN0KHQub2JqZWN0LHIscyxhLG4pLGM9dGhpcy5wYXJzZVNrZWxldG9ucyh0LnNrZWxldG9ucyxsKTtpZih0aGlzLmJpbmRTa2VsZXRvbnMobCxjKSx2b2lkIDAhPT1lKXtsZXQgdD0hMTtmb3IoY29uc3QgZSBpbiBvKWlmKG9bZV1pbnN0YW5jZW9mIEhUTUxJbWFnZUVsZW1lbnQpe3Q9ITA7YnJlYWt9ITE9PT10JiZlKGwpfXJldHVybiBsfWFzeW5jIHBhcnNlQXN5bmModCl7Y29uc3QgZT10aGlzLnBhcnNlQW5pbWF0aW9ucyh0LmFuaW1hdGlvbnMpLG49dGhpcy5wYXJzZVNoYXBlcyh0LnNoYXBlcyksaT10aGlzLnBhcnNlR2VvbWV0cmllcyh0Lmdlb21ldHJpZXMsbikscj1hd2FpdCB0aGlzLnBhcnNlSW1hZ2VzQXN5bmModC5pbWFnZXMpLG89dGhpcy5wYXJzZVRleHR1cmVzKHQudGV4dHVyZXMsciksYT10aGlzLnBhcnNlTWF0ZXJpYWxzKHQubWF0ZXJpYWxzLG8pLHM9dGhpcy5wYXJzZU9iamVjdCh0Lm9iamVjdCxpLGEsbyxlKSxsPXRoaXMucGFyc2VTa2VsZXRvbnModC5za2VsZXRvbnMscyk7cmV0dXJuIHRoaXMuYmluZFNrZWxldG9ucyhzLGwpLHN9cGFyc2VTaGFwZXModCl7Y29uc3QgZT17fTtpZih2b2lkIDAhPT10KWZvcihsZXQgbj0wLGk9dC5sZW5ndGg7bjxpO24rKyl7Y29uc3QgaT0obmV3IGJuZSkuZnJvbUpTT04odFtuXSk7ZVtpLnV1aWRdPWl9cmV0dXJuIGV9cGFyc2VTa2VsZXRvbnModCxlKXtjb25zdCBuPXt9LGk9e307aWYoZS50cmF2ZXJzZSgoZnVuY3Rpb24odCl7dC5pc0JvbmUmJihpW3QudXVpZF09dCl9KSksdm9pZCAwIT09dClmb3IobGV0IGU9MCxyPXQubGVuZ3RoO2U8cjtlKyspe2NvbnN0IHI9KG5ldyBVN3QpLmZyb21KU09OKHRbZV0saSk7bltyLnV1aWRdPXJ9cmV0dXJuIG59cGFyc2VHZW9tZXRyaWVzKHQsZSl7Y29uc3Qgbj17fTtpZih2b2lkIDAhPT10KXtjb25zdCBpPW5ldyBHbmU7Zm9yKGxldCByPTAsbz10Lmxlbmd0aDtyPG87cisrKXtsZXQgbztjb25zdCBhPXRbcl07c3dpdGNoKGEudHlwZSl7Y2FzZSJCdWZmZXJHZW9tZXRyeSI6Y2FzZSJJbnN0YW5jZWRCdWZmZXJHZW9tZXRyeSI6bz1pLnBhcnNlKGEpO2JyZWFrO2Nhc2UiR2VvbWV0cnkiOmNvbnNvbGUuZXJyb3IoIlRIUkVFLk9iamVjdExvYWRlcjogVGhlIGxlZ2FjeSBHZW9tZXRyeSB0eXBlIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQuIik7YnJlYWs7ZGVmYXVsdDphLnR5cGUgaW4gemVlP289emVlW2EudHlwZV0uZnJvbUpTT04oYSxlKTpjb25zb2xlLndhcm4oYFRIUkVFLk9iamVjdExvYWRlcjogVW5zdXBwb3J0ZWQgZ2VvbWV0cnkgdHlwZSAiJHthLnR5cGV9ImApfW8udXVpZD1hLnV1aWQsdm9pZCAwIT09YS5uYW1lJiYoby5uYW1lPWEubmFtZSksITA9PT1vLmlzQnVmZmVyR2VvbWV0cnkmJnZvaWQgMCE9PWEudXNlckRhdGEmJihvLnVzZXJEYXRhPWEudXNlckRhdGEpLG5bYS51dWlkXT1vfX1yZXR1cm4gbn1wYXJzZU1hdGVyaWFscyh0LGUpe2NvbnN0IG49e30saT17fTtpZih2b2lkIDAhPT10KXtjb25zdCByPW5ldyBGbmU7ci5zZXRUZXh0dXJlcyhlKTtmb3IobGV0IGU9MCxvPXQubGVuZ3RoO2U8bztlKyspe2NvbnN0IG89dFtlXTtpZigiTXVsdGlNYXRlcmlhbCI9PT1vLnR5cGUpe2NvbnN0IHQ9W107Zm9yKGxldCBlPTA7ZTxvLm1hdGVyaWFscy5sZW5ndGg7ZSsrKXtjb25zdCBpPW8ubWF0ZXJpYWxzW2VdO3ZvaWQgMD09PW5baS51dWlkXSYmKG5baS51dWlkXT1yLnBhcnNlKGkpKSx0LnB1c2gobltpLnV1aWRdKX1pW28udXVpZF09dH1lbHNlIHZvaWQgMD09PW5bby51dWlkXSYmKG5bby51dWlkXT1yLnBhcnNlKG8pKSxpW28udXVpZF09bltvLnV1aWRdfX1yZXR1cm4gaX1wYXJzZUFuaW1hdGlvbnModCl7Y29uc3QgZT17fTtpZih2b2lkIDAhPT10KWZvcihsZXQgbj0wO248dC5sZW5ndGg7bisrKXtjb25zdCBpPWFuZS5wYXJzZSh0W25dKTtlW2kudXVpZF09aX1yZXR1cm4gZX1wYXJzZUltYWdlcyh0LGUpe2NvbnN0IG49dGhpcyxpPXt9O2xldCByO2Z1bmN0aW9uIG8odCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXtjb25zdCBlPXQ7cmV0dXJuKGZ1bmN0aW9uIGkodCl7cmV0dXJuIG4ubWFuYWdlci5pdGVtU3RhcnQodCksci5sb2FkKHQsKGZ1bmN0aW9uKCl7bi5tYW5hZ2VyLml0ZW1FbmQodCl9KSx2b2lkIDAsKGZ1bmN0aW9uKCl7bi5tYW5hZ2VyLml0ZW1FcnJvcih0KSxuLm1hbmFnZXIuaXRlbUVuZCh0KX0pKX0pKC9eKFwvXC8pfChbYS16XSs6KFwvXC8pPykvaS50ZXN0KGUpP2U6bi5yZXNvdXJjZVBhdGgrZSl9cmV0dXJuIHQuZGF0YT97ZGF0YTpNNHQodC50eXBlLHQuZGF0YSksd2lkdGg6dC53aWR0aCxoZWlnaHQ6dC5oZWlnaHR9Om51bGx9aWYodm9pZCAwIT09dCYmdC5sZW5ndGg+MCl7Y29uc3Qgbj1uZXcgY25lKGUpO3I9bmV3IGZuZShuKSxyLnNldENyb3NzT3JpZ2luKHRoaXMuY3Jvc3NPcmlnaW4pO2ZvcihsZXQgZT0wLG49dC5sZW5ndGg7ZTxuO2UrKyl7Y29uc3Qgbj10W2VdLHI9bi51cmw7aWYoQXJyYXkuaXNBcnJheShyKSl7aVtuLnV1aWRdPVtdO2ZvcihsZXQgdD0wLGU9ci5sZW5ndGg7dDxlO3QrKyl7Y29uc3QgZT1vKHJbdF0pO251bGwhPT1lJiYoZSBpbnN0YW5jZW9mIEhUTUxJbWFnZUVsZW1lbnQ/aVtuLnV1aWRdLnB1c2goZSk6aVtuLnV1aWRdLnB1c2gobmV3IEg3dChlLmRhdGEsZS53aWR0aCxlLmhlaWdodCkpKX19ZWxzZXtjb25zdCB0PW8obi51cmwpO251bGwhPT10JiYoaVtuLnV1aWRdPXQpfX19cmV0dXJuIGl9YXN5bmMgcGFyc2VJbWFnZXNBc3luYyh0KXtjb25zdCBlPXRoaXMsbj17fTtsZXQgaTthc3luYyBmdW5jdGlvbiByKHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdCl7Y29uc3Qgbj10LHI9L14oXC9cLyl8KFthLXpdKzooXC9cLyk/KS9pLnRlc3Qobik/bjplLnJlc291cmNlUGF0aCtuO3JldHVybiBhd2FpdCBpLmxvYWRBc3luYyhyKX1yZXR1cm4gdC5kYXRhP3tkYXRhOk00dCh0LnR5cGUsdC5kYXRhKSx3aWR0aDp0LndpZHRoLGhlaWdodDp0LmhlaWdodH06bnVsbH1pZih2b2lkIDAhPT10JiZ0Lmxlbmd0aD4wKXtpPW5ldyBmbmUodGhpcy5tYW5hZ2VyKSxpLnNldENyb3NzT3JpZ2luKHRoaXMuY3Jvc3NPcmlnaW4pO2ZvcihsZXQgZT0wLGk9dC5sZW5ndGg7ZTxpO2UrKyl7Y29uc3QgaT10W2VdLG89aS51cmw7aWYoQXJyYXkuaXNBcnJheShvKSl7bltpLnV1aWRdPVtdO2ZvcihsZXQgdD0wLGU9by5sZW5ndGg7dDxlO3QrKyl7Y29uc3QgZT1vW3RdLGE9YXdhaXQgcihlKTtudWxsIT09YSYmKGEgaW5zdGFuY2VvZiBIVE1MSW1hZ2VFbGVtZW50P25baS51dWlkXS5wdXNoKGEpOm5baS51dWlkXS5wdXNoKG5ldyBIN3QoYS5kYXRhLGEud2lkdGgsYS5oZWlnaHQpKSl9fWVsc2V7Y29uc3QgdD1hd2FpdCByKGkudXJsKTtudWxsIT09dCYmKG5baS51dWlkXT10KX19fXJldHVybiBufXBhcnNlVGV4dHVyZXModCxlKXtmdW5jdGlvbiBuKHQsZSl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0P3Q6KGNvbnNvbGUud2FybigiVEhSRUUuT2JqZWN0TG9hZGVyLnBhcnNlVGV4dHVyZTogQ29uc3RhbnQgc2hvdWxkIGJlIGluIG51bWVyaWMgZm9ybS4iLHQpLGVbdF0pfWNvbnN0IGk9e307aWYodm9pZCAwIT09dClmb3IobGV0IHI9MCxvPXQubGVuZ3RoO3I8bztyKyspe2NvbnN0IG89dFtyXTtsZXQgYTt2b2lkIDA9PT1vLmltYWdlJiZjb25zb2xlLndhcm4oJ1RIUkVFLk9iamVjdExvYWRlcjogTm8gImltYWdlIiBzcGVjaWZpZWQgZm9yJyxvLnV1aWQpLHZvaWQgMD09PWVbby5pbWFnZV0mJmNvbnNvbGUud2FybigiVEhSRUUuT2JqZWN0TG9hZGVyOiBVbmRlZmluZWQgaW1hZ2UiLG8uaW1hZ2UpO2NvbnN0IHM9ZVtvLmltYWdlXTtBcnJheS5pc0FycmF5KHMpPyhhPW5ldyBzNnQocyksNj09PXMubGVuZ3RoJiYoYS5uZWVkc1VwZGF0ZT0hMCkpOihhPXMmJnMuZGF0YT9uZXcgSDd0KHMuZGF0YSxzLndpZHRoLHMuaGVpZ2h0KTpuZXcgTjV0KHMpLHMmJihhLm5lZWRzVXBkYXRlPSEwKSksYS51dWlkPW8udXVpZCx2b2lkIDAhPT1vLm5hbWUmJihhLm5hbWU9by5uYW1lKSx2b2lkIDAhPT1vLm1hcHBpbmcmJihhLm1hcHBpbmc9bihvLm1hcHBpbmcsV25lKSksdm9pZCAwIT09by5vZmZzZXQmJmEub2Zmc2V0LmZyb21BcnJheShvLm9mZnNldCksdm9pZCAwIT09by5yZXBlYXQmJmEucmVwZWF0LmZyb21BcnJheShvLnJlcGVhdCksdm9pZCAwIT09by5jZW50ZXImJmEuY2VudGVyLmZyb21BcnJheShvLmNlbnRlciksdm9pZCAwIT09by5yb3RhdGlvbiYmKGEucm90YXRpb249by5yb3RhdGlvbiksdm9pZCAwIT09by53cmFwJiYoYS53cmFwUz1uKG8ud3JhcFswXSxxbmUpLGEud3JhcFQ9bihvLndyYXBbMV0scW5lKSksdm9pZCAwIT09by5mb3JtYXQmJihhLmZvcm1hdD1vLmZvcm1hdCksdm9pZCAwIT09by50eXBlJiYoYS50eXBlPW8udHlwZSksdm9pZCAwIT09by5lbmNvZGluZyYmKGEuZW5jb2Rpbmc9by5lbmNvZGluZyksdm9pZCAwIT09by5taW5GaWx0ZXImJihhLm1pbkZpbHRlcj1uKG8ubWluRmlsdGVyLFluZSkpLHZvaWQgMCE9PW8ubWFnRmlsdGVyJiYoYS5tYWdGaWx0ZXI9bihvLm1hZ0ZpbHRlcixZbmUpKSx2b2lkIDAhPT1vLmFuaXNvdHJvcHkmJihhLmFuaXNvdHJvcHk9by5hbmlzb3Ryb3B5KSx2b2lkIDAhPT1vLmZsaXBZJiYoYS5mbGlwWT1vLmZsaXBZKSx2b2lkIDAhPT1vLnByZW11bHRpcGx5QWxwaGEmJihhLnByZW11bHRpcGx5QWxwaGE9by5wcmVtdWx0aXBseUFscGhhKSx2b2lkIDAhPT1vLnVucGFja0FsaWdubWVudCYmKGEudW5wYWNrQWxpZ25tZW50PW8udW5wYWNrQWxpZ25tZW50KSxpW28udXVpZF09YX1yZXR1cm4gaX1wYXJzZU9iamVjdCh0LGUsbixpLHIpe2xldCBvLGEscztmdW5jdGlvbiBsKHQpe3JldHVybiB2b2lkIDA9PT1lW3RdJiZjb25zb2xlLndhcm4oIlRIUkVFLk9iamVjdExvYWRlcjogVW5kZWZpbmVkIGdlb21ldHJ5Iix0KSxlW3RdfWZ1bmN0aW9uIGModCl7aWYodm9pZCAwIT09dCl7aWYoQXJyYXkuaXNBcnJheSh0KSl7Y29uc3QgZT1bXTtmb3IobGV0IGk9MCxyPXQubGVuZ3RoO2k8cjtpKyspe2NvbnN0IHI9dFtpXTt2b2lkIDA9PT1uW3JdJiZjb25zb2xlLndhcm4oIlRIUkVFLk9iamVjdExvYWRlcjogVW5kZWZpbmVkIG1hdGVyaWFsIixyKSxlLnB1c2gobltyXSl9cmV0dXJuIGV9cmV0dXJuIHZvaWQgMD09PW5bdF0mJmNvbnNvbGUud2FybigiVEhSRUUuT2JqZWN0TG9hZGVyOiBVbmRlZmluZWQgbWF0ZXJpYWwiLHQpLG5bdF19fWZ1bmN0aW9uIHUodCl7cmV0dXJuIHZvaWQgMD09PWlbdF0mJmNvbnNvbGUud2FybigiVEhSRUUuT2JqZWN0TG9hZGVyOiBVbmRlZmluZWQgdGV4dHVyZSIsdCksaVt0XX1zd2l0Y2godC50eXBlKXtjYXNlIlNjZW5lIjpvPW5ldyBjN3Qsdm9pZCAwIT09dC5iYWNrZ3JvdW5kJiYoby5iYWNrZ3JvdW5kPU51bWJlci5pc0ludGVnZXIodC5iYWNrZ3JvdW5kKT9uZXcgczR0KHQuYmFja2dyb3VuZCk6dSh0LmJhY2tncm91bmQpKSx2b2lkIDAhPT10LmVudmlyb25tZW50JiYoby5lbnZpcm9ubWVudD11KHQuZW52aXJvbm1lbnQpKSx2b2lkIDAhPT10LmZvZyYmKCJGb2ciPT09dC5mb2cudHlwZT9vLmZvZz1uZXcgbDd0KHQuZm9nLmNvbG9yLHQuZm9nLm5lYXIsdC5mb2cuZmFyKToiRm9nRXhwMiI9PT10LmZvZy50eXBlJiYoby5mb2c9bmV3IHM3dCh0LmZvZy5jb2xvcix0LmZvZy5kZW5zaXR5KSkpO2JyZWFrO2Nhc2UiUGVyc3BlY3RpdmVDYW1lcmEiOm89bmV3IHI2dCh0LmZvdix0LmFzcGVjdCx0Lm5lYXIsdC5mYXIpLHZvaWQgMCE9PXQuZm9jdXMmJihvLmZvY3VzPXQuZm9jdXMpLHZvaWQgMCE9PXQuem9vbSYmKG8uem9vbT10Lnpvb20pLHZvaWQgMCE9PXQuZmlsbUdhdWdlJiYoby5maWxtR2F1Z2U9dC5maWxtR2F1Z2UpLHZvaWQgMCE9PXQuZmlsbU9mZnNldCYmKG8uZmlsbU9mZnNldD10LmZpbG1PZmZzZXQpLHZvaWQgMCE9PXQudmlldyYmKG8udmlldz1PYmplY3QuYXNzaWduKHt9LHQudmlldykpO2JyZWFrO2Nhc2UiT3J0aG9ncmFwaGljQ2FtZXJhIjpvPW5ldyBBNnQodC5sZWZ0LHQucmlnaHQsdC50b3AsdC5ib3R0b20sdC5uZWFyLHQuZmFyKSx2b2lkIDAhPT10Lnpvb20mJihvLnpvb209dC56b29tKSx2b2lkIDAhPT10LnZpZXcmJihvLnZpZXc9T2JqZWN0LmFzc2lnbih7fSx0LnZpZXcpKTticmVhaztjYXNlIkFtYmllbnRMaWdodCI6bz1uZXcgem5lKHQuY29sb3IsdC5pbnRlbnNpdHkpO2JyZWFrO2Nhc2UiRGlyZWN0aW9uYWxMaWdodCI6bz1uZXcgT25lKHQuY29sb3IsdC5pbnRlbnNpdHkpO2JyZWFrO2Nhc2UiUG9pbnRMaWdodCI6bz1uZXcgSW5lKHQuY29sb3IsdC5pbnRlbnNpdHksdC5kaXN0YW5jZSx0LmRlY2F5KTticmVhaztjYXNlIlJlY3RBcmVhTGlnaHQiOm89bmV3IERuZSh0LmNvbG9yLHQuaW50ZW5zaXR5LHQud2lkdGgsdC5oZWlnaHQpO2JyZWFrO2Nhc2UiU3BvdExpZ2h0IjpvPW5ldyBBbmUodC5jb2xvcix0LmludGVuc2l0eSx0LmRpc3RhbmNlLHQuYW5nbGUsdC5wZW51bWJyYSx0LmRlY2F5KTticmVhaztjYXNlIkhlbWlzcGhlcmVMaWdodCI6bz1uZXcgd25lKHQuY29sb3IsdC5ncm91bmRDb2xvcix0LmludGVuc2l0eSk7YnJlYWs7Y2FzZSJMaWdodFByb2JlIjpvPShuZXcgSG5lKS5mcm9tSlNPTih0KTticmVhaztjYXNlIlNraW5uZWRNZXNoIjphPWwodC5nZW9tZXRyeSkscz1jKHQubWF0ZXJpYWwpLG89bmV3IEQ3dChhLHMpLHZvaWQgMCE9PXQuYmluZE1vZGUmJihvLmJpbmRNb2RlPXQuYmluZE1vZGUpLHZvaWQgMCE9PXQuYmluZE1hdHJpeCYmby5iaW5kTWF0cml4LmZyb21BcnJheSh0LmJpbmRNYXRyaXgpLHZvaWQgMCE9PXQuc2tlbGV0b24mJihvLnNrZWxldG9uPXQuc2tlbGV0b24pO2JyZWFrO2Nhc2UiTWVzaCI6YT1sKHQuZ2VvbWV0cnkpLHM9Yyh0Lm1hdGVyaWFsKSxvPW5ldyBLNHQoYSxzKTticmVhaztjYXNlIkluc3RhbmNlZE1lc2giOmE9bCh0Lmdlb21ldHJ5KSxzPWModC5tYXRlcmlhbCk7Y29uc3QgZT10Lmluc3RhbmNlTWF0cml4LG49dC5pbnN0YW5jZUNvbG9yO289bmV3IFk3dChhLHMsdC5jb3VudCksby5pbnN0YW5jZU1hdHJpeD1uZXcgaDR0KG5ldyBGbG9hdDMyQXJyYXkoZS5hcnJheSksMTYpLHZvaWQgMCE9PW4mJihvLmluc3RhbmNlQ29sb3I9bmV3IGg0dChuZXcgRmxvYXQzMkFycmF5KG4uYXJyYXkpLG4uaXRlbVNpemUpKTticmVhaztjYXNlIkxPRCI6bz1uZXcgUDd0O2JyZWFrO2Nhc2UiTGluZSI6bz1uZXcgdHRlKGwodC5nZW9tZXRyeSksYyh0Lm1hdGVyaWFsKSk7YnJlYWs7Y2FzZSJMaW5lTG9vcCI6bz1uZXcgcnRlKGwodC5nZW9tZXRyeSksYyh0Lm1hdGVyaWFsKSk7YnJlYWs7Y2FzZSJMaW5lU2VnbWVudHMiOm89bmV3IGl0ZShsKHQuZ2VvbWV0cnkpLGModC5tYXRlcmlhbCkpO2JyZWFrO2Nhc2UiUG9pbnRDbG91ZCI6Y2FzZSJQb2ludHMiOm89bmV3IHV0ZShsKHQuZ2VvbWV0cnkpLGModC5tYXRlcmlhbCkpO2JyZWFrO2Nhc2UiU3ByaXRlIjpvPW5ldyBDN3QoYyh0Lm1hdGVyaWFsKSk7YnJlYWs7Y2FzZSJHcm91cCI6bz1uZXcgdDd0O2JyZWFrO2Nhc2UiQm9uZSI6bz1uZXcgQjd0O2JyZWFrO2RlZmF1bHQ6bz1uZXcgVjN0fWlmKG8udXVpZD10LnV1aWQsdm9pZCAwIT09dC5uYW1lJiYoby5uYW1lPXQubmFtZSksdm9pZCAwIT09dC5tYXRyaXg/KG8ubWF0cml4LmZyb21BcnJheSh0Lm1hdHJpeCksdm9pZCAwIT09dC5tYXRyaXhBdXRvVXBkYXRlJiYoby5tYXRyaXhBdXRvVXBkYXRlPXQubWF0cml4QXV0b1VwZGF0ZSksby5tYXRyaXhBdXRvVXBkYXRlJiZvLm1hdHJpeC5kZWNvbXBvc2Uoby5wb3NpdGlvbixvLnF1YXRlcm5pb24sby5zY2FsZSkpOih2b2lkIDAhPT10LnBvc2l0aW9uJiZvLnBvc2l0aW9uLmZyb21BcnJheSh0LnBvc2l0aW9uKSx2b2lkIDAhPT10LnJvdGF0aW9uJiZvLnJvdGF0aW9uLmZyb21BcnJheSh0LnJvdGF0aW9uKSx2b2lkIDAhPT10LnF1YXRlcm5pb24mJm8ucXVhdGVybmlvbi5mcm9tQXJyYXkodC5xdWF0ZXJuaW9uKSx2b2lkIDAhPT10LnNjYWxlJiZvLnNjYWxlLmZyb21BcnJheSh0LnNjYWxlKSksdm9pZCAwIT09dC5jYXN0U2hhZG93JiYoby5jYXN0U2hhZG93PXQuY2FzdFNoYWRvdyksdm9pZCAwIT09dC5yZWNlaXZlU2hhZG93JiYoby5yZWNlaXZlU2hhZG93PXQucmVjZWl2ZVNoYWRvdyksdC5zaGFkb3cmJih2b2lkIDAhPT10LnNoYWRvdy5iaWFzJiYoby5zaGFkb3cuYmlhcz10LnNoYWRvdy5iaWFzKSx2b2lkIDAhPT10LnNoYWRvdy5ub3JtYWxCaWFzJiYoby5zaGFkb3cubm9ybWFsQmlhcz10LnNoYWRvdy5ub3JtYWxCaWFzKSx2b2lkIDAhPT10LnNoYWRvdy5yYWRpdXMmJihvLnNoYWRvdy5yYWRpdXM9dC5zaGFkb3cucmFkaXVzKSx2b2lkIDAhPT10LnNoYWRvdy5tYXBTaXplJiZvLnNoYWRvdy5tYXBTaXplLmZyb21BcnJheSh0LnNoYWRvdy5tYXBTaXplKSx2b2lkIDAhPT10LnNoYWRvdy5jYW1lcmEmJihvLnNoYWRvdy5jYW1lcmE9dGhpcy5wYXJzZU9iamVjdCh0LnNoYWRvdy5jYW1lcmEpKSksdm9pZCAwIT09dC52aXNpYmxlJiYoby52aXNpYmxlPXQudmlzaWJsZSksdm9pZCAwIT09dC5mcnVzdHVtQ3VsbGVkJiYoby5mcnVzdHVtQ3VsbGVkPXQuZnJ1c3R1bUN1bGxlZCksdm9pZCAwIT09dC5yZW5kZXJPcmRlciYmKG8ucmVuZGVyT3JkZXI9dC5yZW5kZXJPcmRlciksdm9pZCAwIT09dC51c2VyRGF0YSYmKG8udXNlckRhdGE9dC51c2VyRGF0YSksdm9pZCAwIT09dC5sYXllcnMmJihvLmxheWVycy5tYXNrPXQubGF5ZXJzKSx2b2lkIDAhPT10LmNoaWxkcmVuKXtjb25zdCBhPXQuY2hpbGRyZW47Zm9yKGxldCB0PTA7dDxhLmxlbmd0aDt0Kyspby5hZGQodGhpcy5wYXJzZU9iamVjdChhW3RdLGUsbixpLHIpKX1pZih2b2lkIDAhPT10LmFuaW1hdGlvbnMpe2NvbnN0IGU9dC5hbmltYXRpb25zO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKXtvLmFuaW1hdGlvbnMucHVzaChyW2VbdF1dKX19aWYoIkxPRCI9PT10LnR5cGUpe3ZvaWQgMCE9PXQuYXV0b1VwZGF0ZSYmKG8uYXV0b1VwZGF0ZT10LmF1dG9VcGRhdGUpO2NvbnN0IGU9dC5sZXZlbHM7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0Kyspe2NvbnN0IG49ZVt0XSxpPW8uZ2V0T2JqZWN0QnlQcm9wZXJ0eSgidXVpZCIsbi5vYmplY3QpO3ZvaWQgMCE9PWkmJm8uYWRkTGV2ZWwoaSxuLmRpc3RhbmNlKX19cmV0dXJuIG99YmluZFNrZWxldG9ucyh0LGUpezAhPT1PYmplY3Qua2V5cyhlKS5sZW5ndGgmJnQudHJhdmVyc2UoKGZ1bmN0aW9uKHQpe2lmKCEwPT09dC5pc1NraW5uZWRNZXNoJiZ2b2lkIDAhPT10LnNrZWxldG9uKXtjb25zdCBuPWVbdC5za2VsZXRvbl07dm9pZCAwPT09bj9jb25zb2xlLndhcm4oIlRIUkVFLk9iamVjdExvYWRlcjogTm8gc2tlbGV0b24gZm91bmQgd2l0aCBVVUlEOiIsdC5za2VsZXRvbik6dC5iaW5kKG4sdC5iaW5kTWF0cml4KX19KSl9c2V0VGV4dHVyZVBhdGgodCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuT2JqZWN0TG9hZGVyOiAuc2V0VGV4dHVyZVBhdGgoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5zZXRSZXNvdXJjZVBhdGgoKS4iKSx0aGlzLnNldFJlc291cmNlUGF0aCh0KX19LE9iamVjdFNwYWNlTm9ybWFsTWFwOjEsT2N0YWhlZHJvbkJ1ZmZlckdlb21ldHJ5Ok1lZSxPY3RhaGVkcm9uR2VvbWV0cnk6TWVlLE9uZUZhY3RvcjoyMDEsT25lTWludXNEc3RBbHBoYUZhY3RvcjoyMDcsT25lTWludXNEc3RDb2xvckZhY3RvcjoyMDksT25lTWludXNTcmNBbHBoYUZhY3RvcjoyMDUsT25lTWludXNTcmNDb2xvckZhY3RvcjoyMDMsT3J0aG9ncmFwaGljQ2FtZXJhOkE2dCxQQ0ZTaGFkb3dNYXA6MSxQQ0ZTb2Z0U2hhZG93TWFwOjIsUE1SRU1HZW5lcmF0b3I6WTZ0LFBhcmFtZXRyaWNCdWZmZXJHZW9tZXRyeTpFZWUsUGFyYW1ldHJpY0dlb21ldHJ5OkVlZSxQYXJ0aWNsZTpmdW5jdGlvbiBQcmUodCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuUGFydGljbGUgaGFzIGJlZW4gcmVuYW1lZCB0byBUSFJFRS5TcHJpdGUuIiksbmV3IEM3dCh0KX0sUGFydGljbGVCYXNpY01hdGVyaWFsOmZ1bmN0aW9uIE5yZSh0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5QYXJ0aWNsZUJhc2ljTWF0ZXJpYWwgaGFzIGJlZW4gcmVuYW1lZCB0byBUSFJFRS5Qb2ludHNNYXRlcmlhbC4iKSxuZXcgb3RlKHQpfSxQYXJ0aWNsZVN5c3RlbTpmdW5jdGlvbiBJcmUodCxlKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5QYXJ0aWNsZVN5c3RlbSBoYXMgYmVlbiByZW5hbWVkIHRvIFRIUkVFLlBvaW50cy4iKSxuZXcgdXRlKHQsZSl9LFBhcnRpY2xlU3lzdGVtTWF0ZXJpYWw6ZnVuY3Rpb24gUnJlKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlBhcnRpY2xlU3lzdGVtTWF0ZXJpYWwgaGFzIGJlZW4gcmVuYW1lZCB0byBUSFJFRS5Qb2ludHNNYXRlcmlhbC4iKSxuZXcgb3RlKHQpfSxQYXRoOnZuZSxQZXJzcGVjdGl2ZUNhbWVyYTpyNnQsUGxhbmU6ZDZ0LFBsYW5lQnVmZmVyR2VvbWV0cnk6eTZ0LFBsYW5lR2VvbWV0cnk6eTZ0LFBsYW5lSGVscGVyOmNsYXNzIGV4dGVuZHMgdHRle2NvbnN0cnVjdG9yKHQsZT0xLG49MTY3NzY5NjApe2NvbnN0IGk9bixyPW5ldyBONHQ7ci5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgYjR0KFsxLC0xLDEsLTEsMSwxLC0xLC0xLDEsMSwxLDEsLTEsMSwxLC0xLC0xLDEsMSwtMSwxLDEsMSwxLDAsMCwxLDAsMCwwXSwzKSksci5jb21wdXRlQm91bmRpbmdTcGhlcmUoKSxzdXBlcihyLG5ldyBYN3Qoe2NvbG9yOmksdG9uZU1hcHBlZDohMX0pKSx0aGlzLnR5cGU9IlBsYW5lSGVscGVyIix0aGlzLnBsYW5lPXQsdGhpcy5zaXplPWU7Y29uc3Qgbz1uZXcgTjR0O28uc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IGI0dChbMSwxLDEsLTEsMSwxLC0xLC0xLDEsMSwxLDEsLTEsLTEsMSwxLC0xLDFdLDMpKSxvLmNvbXB1dGVCb3VuZGluZ1NwaGVyZSgpLHRoaXMuYWRkKG5ldyBLNHQobyxuZXcgbDR0KHtjb2xvcjppLG9wYWNpdHk6LjIsdHJhbnNwYXJlbnQ6ITAsZGVwdGhXcml0ZTohMSx0b25lTWFwcGVkOiExfSkpKX11cGRhdGVNYXRyaXhXb3JsZCh0KXtsZXQgZT0tdGhpcy5wbGFuZS5jb25zdGFudDtNYXRoLmFicyhlKTwxZS04JiYoZT0xZS04KSx0aGlzLnNjYWxlLnNldCguNSp0aGlzLnNpemUsLjUqdGhpcy5zaXplLGUpLHRoaXMuY2hpbGRyZW5bMF0ubWF0ZXJpYWwuc2lkZT1lPDA/MTowLHRoaXMubG9va0F0KHRoaXMucGxhbmUubm9ybWFsKSxzdXBlci51cGRhdGVNYXRyaXhXb3JsZCh0KX19LFBvaW50Q2xvdWQ6ZnVuY3Rpb24gT3JlKHQsZSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuUG9pbnRDbG91ZCBoYXMgYmVlbiByZW5hbWVkIHRvIFRIUkVFLlBvaW50cy4iKSxuZXcgdXRlKHQsZSl9LFBvaW50Q2xvdWRNYXRlcmlhbDpmdW5jdGlvbiB6cmUodCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuUG9pbnRDbG91ZE1hdGVyaWFsIGhhcyBiZWVuIHJlbmFtZWQgdG8gVEhSRUUuUG9pbnRzTWF0ZXJpYWwuIiksbmV3IG90ZSh0KX0sUG9pbnRMaWdodDpJbmUsUG9pbnRMaWdodEhlbHBlcjpjbGFzcyBleHRlbmRzIEs0dHtjb25zdHJ1Y3Rvcih0LGUsbil7c3VwZXIobmV3IEFlZShlLDQsMiksbmV3IGw0dCh7d2lyZWZyYW1lOiEwLGZvZzohMSx0b25lTWFwcGVkOiExfSkpLHRoaXMubGlnaHQ9dCx0aGlzLmxpZ2h0LnVwZGF0ZU1hdHJpeFdvcmxkKCksdGhpcy5jb2xvcj1uLHRoaXMudHlwZT0iUG9pbnRMaWdodEhlbHBlciIsdGhpcy5tYXRyaXg9dGhpcy5saWdodC5tYXRyaXhXb3JsZCx0aGlzLm1hdHJpeEF1dG9VcGRhdGU9ITEsdGhpcy51cGRhdGUoKX1kaXNwb3NlKCl7dGhpcy5nZW9tZXRyeS5kaXNwb3NlKCksdGhpcy5tYXRlcmlhbC5kaXNwb3NlKCl9dXBkYXRlKCl7dm9pZCAwIT09dGhpcy5jb2xvcj90aGlzLm1hdGVyaWFsLmNvbG9yLnNldCh0aGlzLmNvbG9yKTp0aGlzLm1hdGVyaWFsLmNvbG9yLmNvcHkodGhpcy5saWdodC5jb2xvcil9fSxQb2ludHM6dXRlLFBvaW50c01hdGVyaWFsOm90ZSxQb2xhckdyaWRIZWxwZXI6Y2xhc3MgZXh0ZW5kcyBpdGV7Y29uc3RydWN0b3IodD0xMCxlPTE2LG49OCxpPTY0LHI9NDQ3MzkyNCxvPTg5NDc4NDgpe3I9bmV3IHM0dChyKSxvPW5ldyBzNHQobyk7Y29uc3QgYT1bXSxzPVtdO2ZvcihsZXQgbj0wO248PWU7bisrKXtjb25zdCBpPW4vZSooMipNYXRoLlBJKSxsPU1hdGguc2luKGkpKnQsYz1NYXRoLmNvcyhpKSp0O2EucHVzaCgwLDAsMCksYS5wdXNoKGwsMCxjKTtjb25zdCB1PTEmbj9yOm87cy5wdXNoKHUucix1LmcsdS5iKSxzLnB1c2godS5yLHUuZyx1LmIpfWZvcihsZXQgZT0wO2U8PW47ZSsrKXtjb25zdCBsPTEmZT9yOm8sYz10LXQvbiplO2ZvcihsZXQgdD0wO3Q8aTt0Kyspe2xldCBlPXQvaSooMipNYXRoLlBJKSxuPU1hdGguc2luKGUpKmMscj1NYXRoLmNvcyhlKSpjO2EucHVzaChuLDAscikscy5wdXNoKGwucixsLmcsbC5iKSxlPSh0KzEpL2kqKDIqTWF0aC5QSSksbj1NYXRoLnNpbihlKSpjLHI9TWF0aC5jb3MoZSkqYyxhLnB1c2gobiwwLHIpLHMucHVzaChsLnIsbC5nLGwuYil9fWNvbnN0IGw9bmV3IE40dDtsLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBiNHQoYSwzKSksbC5zZXRBdHRyaWJ1dGUoImNvbG9yIixuZXcgYjR0KHMsMykpO3N1cGVyKGwsbmV3IFg3dCh7dmVydGV4Q29sb3JzOiEwLHRvbmVNYXBwZWQ6ITF9KSksdGhpcy50eXBlPSJQb2xhckdyaWRIZWxwZXIifX0sUG9seWhlZHJvbkJ1ZmZlckdlb21ldHJ5OnZ0ZSxQb2x5aGVkcm9uR2VvbWV0cnk6dnRlLFBvc2l0aW9uYWxBdWRpbzpjbGFzcyBleHRlbmRzIGhpZXtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KSx0aGlzLnBhbm5lcj10aGlzLmNvbnRleHQuY3JlYXRlUGFubmVyKCksdGhpcy5wYW5uZXIucGFubmluZ01vZGVsPSJIUlRGIix0aGlzLnBhbm5lci5jb25uZWN0KHRoaXMuZ2Fpbil9Z2V0T3V0cHV0KCl7cmV0dXJuIHRoaXMucGFubmVyfWdldFJlZkRpc3RhbmNlKCl7cmV0dXJuIHRoaXMucGFubmVyLnJlZkRpc3RhbmNlfXNldFJlZkRpc3RhbmNlKHQpe3JldHVybiB0aGlzLnBhbm5lci5yZWZEaXN0YW5jZT10LHRoaXN9Z2V0Um9sbG9mZkZhY3Rvcigpe3JldHVybiB0aGlzLnBhbm5lci5yb2xsb2ZmRmFjdG9yfXNldFJvbGxvZmZGYWN0b3IodCl7cmV0dXJuIHRoaXMucGFubmVyLnJvbGxvZmZGYWN0b3I9dCx0aGlzfWdldERpc3RhbmNlTW9kZWwoKXtyZXR1cm4gdGhpcy5wYW5uZXIuZGlzdGFuY2VNb2RlbH1zZXREaXN0YW5jZU1vZGVsKHQpe3JldHVybiB0aGlzLnBhbm5lci5kaXN0YW5jZU1vZGVsPXQsdGhpc31nZXRNYXhEaXN0YW5jZSgpe3JldHVybiB0aGlzLnBhbm5lci5tYXhEaXN0YW5jZX1zZXRNYXhEaXN0YW5jZSh0KXtyZXR1cm4gdGhpcy5wYW5uZXIubWF4RGlzdGFuY2U9dCx0aGlzfXNldERpcmVjdGlvbmFsQ29uZSh0LGUsbil7cmV0dXJuIHRoaXMucGFubmVyLmNvbmVJbm5lckFuZ2xlPXQsdGhpcy5wYW5uZXIuY29uZU91dGVyQW5nbGU9ZSx0aGlzLnBhbm5lci5jb25lT3V0ZXJHYWluPW4sdGhpc311cGRhdGVNYXRyaXhXb3JsZCh0KXtpZihzdXBlci51cGRhdGVNYXRyaXhXb3JsZCh0KSwhMD09PXRoaXMuaGFzUGxheWJhY2tDb250cm9sJiYhMT09PXRoaXMuaXNQbGF5aW5nKXJldHVybjt0aGlzLm1hdHJpeFdvcmxkLmRlY29tcG9zZShkaWUscGllLGZpZSksbWllLnNldCgwLDAsMSkuYXBwbHlRdWF0ZXJuaW9uKHBpZSk7Y29uc3QgZT10aGlzLnBhbm5lcjtpZihlLnBvc2l0aW9uWCl7Y29uc3QgdD10aGlzLmNvbnRleHQuY3VycmVudFRpbWUrdGhpcy5saXN0ZW5lci50aW1lRGVsdGE7ZS5wb3NpdGlvblgubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUoZGllLngsdCksZS5wb3NpdGlvblkubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUoZGllLnksdCksZS5wb3NpdGlvbloubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUoZGllLnosdCksZS5vcmllbnRhdGlvblgubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUobWllLngsdCksZS5vcmllbnRhdGlvblkubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUobWllLnksdCksZS5vcmllbnRhdGlvbloubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUobWllLnosdCl9ZWxzZSBlLnNldFBvc2l0aW9uKGRpZS54LGRpZS55LGRpZS56KSxlLnNldE9yaWVudGF0aW9uKG1pZS54LG1pZS55LG1pZS56KX19LFByb3BlcnR5QmluZGluZzpBaWUsUHJvcGVydHlNaXhlcjpfaWUsUXVhZHJhdGljQmV6aWVyQ3VydmU6VXRlLFF1YWRyYXRpY0JlemllckN1cnZlMzpqdGUsUXVhdGVybmlvbjpCNXQsUXVhdGVybmlvbktleWZyYW1lVHJhY2s6aW5lLFF1YXRlcm5pb25MaW5lYXJJbnRlcnBvbGFudDpubmUsUkVWSVNJT046SzB0LFJHQkFEZXB0aFBhY2tpbmc6MzIwMSxSR0JBRm9ybWF0OlMydCxSR0JBSW50ZWdlckZvcm1hdDoxMDMzLFJHQkFfQVNUQ18xMHgxMF9Gb3JtYXQ6Mzc4MTksUkdCQV9BU1RDXzEweDVfRm9ybWF0OjM3ODE2LFJHQkFfQVNUQ18xMHg2X0Zvcm1hdDozNzgxNyxSR0JBX0FTVENfMTB4OF9Gb3JtYXQ6Mzc4MTgsUkdCQV9BU1RDXzEyeDEwX0Zvcm1hdDozNzgyMCxSR0JBX0FTVENfMTJ4MTJfRm9ybWF0OjM3ODIxLFJHQkFfQVNUQ180eDRfRm9ybWF0OjM3ODA4LFJHQkFfQVNUQ181eDRfRm9ybWF0OjM3ODA5LFJHQkFfQVNUQ181eDVfRm9ybWF0OjM3ODEwLFJHQkFfQVNUQ182eDVfRm9ybWF0OjM3ODExLFJHQkFfQVNUQ182eDZfRm9ybWF0OjM3ODEyLFJHQkFfQVNUQ184eDVfRm9ybWF0OjM3ODEzLFJHQkFfQVNUQ184eDZfRm9ybWF0OjM3ODE0LFJHQkFfQVNUQ184eDhfRm9ybWF0OjM3ODE1LFJHQkFfQlBUQ19Gb3JtYXQ6MzY0OTIsUkdCQV9FVEMyX0VBQ19Gb3JtYXQ6TzJ0LFJHQkFfUFZSVENfMkJQUFYxX0Zvcm1hdDpJMnQsUkdCQV9QVlJUQ180QlBQVjFfRm9ybWF0Ok4ydCxSR0JBX1MzVENfRFhUMV9Gb3JtYXQ6QzJ0LFJHQkFfUzNUQ19EWFQzX0Zvcm1hdDpBMnQsUkdCQV9TM1RDX0RYVDVfRm9ybWF0OmsydCxSR0JERW5jb2Rpbmc6SzJ0LFJHQkVFbmNvZGluZzpZMnQsUkdCRUZvcm1hdDoxMDIzLFJHQkZvcm1hdDp3MnQsUkdCSW50ZWdlckZvcm1hdDoxMDMyLFJHQk0xNkVuY29kaW5nOiQydCxSR0JNN0VuY29kaW5nOlgydCxSR0JfRVRDMV9Gb3JtYXQ6MzYxOTYsUkdCX0VUQzJfRm9ybWF0OlIydCxSR0JfUFZSVENfMkJQUFYxX0Zvcm1hdDpQMnQsUkdCX1BWUlRDXzRCUFBWMV9Gb3JtYXQ6TDJ0LFJHQl9TM1RDX0RYVDFfRm9ybWF0OlQydCxSR0Zvcm1hdDoxMDMwLFJHSW50ZWdlckZvcm1hdDoxMDMxLFJhd1NoYWRlck1hdGVyaWFsOms2dCxSYXk6bTN0LFJheWNhc3RlcjpjbGFzc3tjb25zdHJ1Y3Rvcih0LGUsbj0wLGk9MS8wKXt0aGlzLnJheT1uZXcgbTN0KHQsZSksdGhpcy5uZWFyPW4sdGhpcy5mYXI9aSx0aGlzLmNhbWVyYT1udWxsLHRoaXMubGF5ZXJzPW5ldyBDM3QsdGhpcy5wYXJhbXM9e01lc2g6e30sTGluZTp7dGhyZXNob2xkOjF9LExPRDp7fSxQb2ludHM6e3RocmVzaG9sZDoxfSxTcHJpdGU6e319fXNldCh0LGUpe3RoaXMucmF5LnNldCh0LGUpfXNldEZyb21DYW1lcmEodCxlKXtlJiZlLmlzUGVyc3BlY3RpdmVDYW1lcmE/KHRoaXMucmF5Lm9yaWdpbi5zZXRGcm9tTWF0cml4UG9zaXRpb24oZS5tYXRyaXhXb3JsZCksdGhpcy5yYXkuZGlyZWN0aW9uLnNldCh0LngsdC55LC41KS51bnByb2plY3QoZSkuc3ViKHRoaXMucmF5Lm9yaWdpbikubm9ybWFsaXplKCksdGhpcy5jYW1lcmE9ZSk6ZSYmZS5pc09ydGhvZ3JhcGhpY0NhbWVyYT8odGhpcy5yYXkub3JpZ2luLnNldCh0LngsdC55LChlLm5lYXIrZS5mYXIpLyhlLm5lYXItZS5mYXIpKS51bnByb2plY3QoZSksdGhpcy5yYXkuZGlyZWN0aW9uLnNldCgwLDAsLTEpLnRyYW5zZm9ybURpcmVjdGlvbihlLm1hdHJpeFdvcmxkKSx0aGlzLmNhbWVyYT1lKTpjb25zb2xlLmVycm9yKCJUSFJFRS5SYXljYXN0ZXI6IFVuc3VwcG9ydGVkIGNhbWVyYSB0eXBlOiAiK2UudHlwZSl9aW50ZXJzZWN0T2JqZWN0KHQsZT0hMSxuPVtdKXtyZXR1cm4gemllKHQsdGhpcyxuLGUpLG4uc29ydChPaWUpLG59aW50ZXJzZWN0T2JqZWN0cyh0LGU9ITEsbj1bXSl7Zm9yKGxldCBpPTAscj10Lmxlbmd0aDtpPHI7aSsrKXppZSh0W2ldLHRoaXMsbixlKTtyZXR1cm4gbi5zb3J0KE9pZSksbn19LFJlY3RBcmVhTGlnaHQ6RG5lLFJlZEZvcm1hdDoxMDI4LFJlZEludGVnZXJGb3JtYXQ6MTAyOSxSZWluaGFyZFRvbmVNYXBwaW5nOjIsUmVwZWF0V3JhcHBpbmc6czJ0LFJlcGxhY2VTdGVuY2lsT3A6NzY4MSxSZXZlcnNlU3VidHJhY3RFcXVhdGlvbjoxMDIsUmluZ0J1ZmZlckdlb21ldHJ5OlRlZSxSaW5nR2VvbWV0cnk6VGVlLFNSR0I4X0FMUEhBOF9BU1RDXzEweDEwX0Zvcm1hdDozNzg1MSxTUkdCOF9BTFBIQThfQVNUQ18xMHg1X0Zvcm1hdDozNzg0OCxTUkdCOF9BTFBIQThfQVNUQ18xMHg2X0Zvcm1hdDozNzg0OSxTUkdCOF9BTFBIQThfQVNUQ18xMHg4X0Zvcm1hdDozNzg1MCxTUkdCOF9BTFBIQThfQVNUQ18xMngxMF9Gb3JtYXQ6Mzc4NTIsU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTJfRm9ybWF0OjM3ODUzLFNSR0I4X0FMUEhBOF9BU1RDXzR4NF9Gb3JtYXQ6Mzc4NDAsU1JHQjhfQUxQSEE4X0FTVENfNXg0X0Zvcm1hdDozNzg0MSxTUkdCOF9BTFBIQThfQVNUQ181eDVfRm9ybWF0OjM3ODQyLFNSR0I4X0FMUEhBOF9BU1RDXzZ4NV9Gb3JtYXQ6Mzc4NDMsU1JHQjhfQUxQSEE4X0FTVENfNng2X0Zvcm1hdDozNzg0NCxTUkdCOF9BTFBIQThfQVNUQ184eDVfRm9ybWF0OjM3ODQ1LFNSR0I4X0FMUEhBOF9BU1RDXzh4Nl9Gb3JtYXQ6Mzc4NDYsU1JHQjhfQUxQSEE4X0FTVENfOHg4X0Zvcm1hdDozNzg0NyxTY2VuZTpjN3QsU2NlbmVVdGlsczpmcmUsU2hhZGVyQ2h1bms6djZ0LFNoYWRlckxpYjp4NnQsU2hhZGVyTWF0ZXJpYWw6bjZ0LFNoYWRvd01hdGVyaWFsOkRlZSxTaGFwZTpibmUsU2hhcGVCdWZmZXJHZW9tZXRyeTpDZWUsU2hhcGVHZW9tZXRyeTpDZWUsU2hhcGVQYXRoOiRuZSxTaGFwZVV0aWxzOl9lZSxTaG9ydFR5cGU6MTAxMSxTa2VsZXRvbjpVN3QsU2tlbGV0b25IZWxwZXI6WGllLFNraW5uZWRNZXNoOkQ3dCxTbW9vdGhTaGFkaW5nOjIsU3BoZXJlOnMzdCxTcGhlcmVCdWZmZXJHZW9tZXRyeTpBZWUsU3BoZXJlR2VvbWV0cnk6QWVlLFNwaGVyaWNhbDpEaWUsU3BoZXJpY2FsSGFybW9uaWNzMzpCbmUsU3BsaW5lQ3VydmU6R3RlLFNwb3RMaWdodDpBbmUsU3BvdExpZ2h0SGVscGVyOmNsYXNzIGV4dGVuZHMgVjN0e2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIoKSx0aGlzLmxpZ2h0PXQsdGhpcy5saWdodC51cGRhdGVNYXRyaXhXb3JsZCgpLHRoaXMubWF0cml4PXQubWF0cml4V29ybGQsdGhpcy5tYXRyaXhBdXRvVXBkYXRlPSExLHRoaXMuY29sb3I9ZTtjb25zdCBuPW5ldyBONHQsaT1bMCwwLDAsMCwwLDEsMCwwLDAsMSwwLDEsMCwwLDAsLTEsMCwxLDAsMCwwLDAsMSwxLDAsMCwwLDAsLTEsMV07Zm9yKGxldCB0PTAsZT0xLG49MzI7dDxuO3QrKyxlKyspe2NvbnN0IHI9dC9uKk1hdGguUEkqMixvPWUvbipNYXRoLlBJKjI7aS5wdXNoKE1hdGguY29zKHIpLE1hdGguc2luKHIpLDEsTWF0aC5jb3MobyksTWF0aC5zaW4obyksMSl9bi5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgYjR0KGksMykpO2NvbnN0IHI9bmV3IFg3dCh7Zm9nOiExLHRvbmVNYXBwZWQ6ITF9KTt0aGlzLmNvbmU9bmV3IGl0ZShuLHIpLHRoaXMuYWRkKHRoaXMuY29uZSksdGhpcy51cGRhdGUoKX1kaXNwb3NlKCl7dGhpcy5jb25lLmdlb21ldHJ5LmRpc3Bvc2UoKSx0aGlzLmNvbmUubWF0ZXJpYWwuZGlzcG9zZSgpfXVwZGF0ZSgpe3RoaXMubGlnaHQudXBkYXRlTWF0cml4V29ybGQoKTtjb25zdCB0PXRoaXMubGlnaHQuZGlzdGFuY2U/dGhpcy5saWdodC5kaXN0YW5jZToxZTMsZT10Kk1hdGgudGFuKHRoaXMubGlnaHQuYW5nbGUpO3RoaXMuY29uZS5zY2FsZS5zZXQoZSxlLHQpLEdpZS5zZXRGcm9tTWF0cml4UG9zaXRpb24odGhpcy5saWdodC50YXJnZXQubWF0cml4V29ybGQpLHRoaXMuY29uZS5sb29rQXQoR2llKSx2b2lkIDAhPT10aGlzLmNvbG9yP3RoaXMuY29uZS5tYXRlcmlhbC5jb2xvci5zZXQodGhpcy5jb2xvcik6dGhpcy5jb25lLm1hdGVyaWFsLmNvbG9yLmNvcHkodGhpcy5saWdodC5jb2xvcil9fSxTcHJpdGU6Qzd0LFNwcml0ZU1hdGVyaWFsOnA3dCxTcmNBbHBoYUZhY3RvcjoyMDQsU3JjQWxwaGFTYXR1cmF0ZUZhY3RvcjoyMTAsU3JjQ29sb3JGYWN0b3I6MjAyLFN0YXRpY0NvcHlVc2FnZTozNTA0NixTdGF0aWNEcmF3VXNhZ2U6SjJ0LFN0YXRpY1JlYWRVc2FnZTozNTA0NSxTdGVyZW9DYW1lcmE6Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLnR5cGU9IlN0ZXJlb0NhbWVyYSIsdGhpcy5hc3BlY3Q9MSx0aGlzLmV5ZVNlcD0uMDY0LHRoaXMuY2FtZXJhTD1uZXcgcjZ0LHRoaXMuY2FtZXJhTC5sYXllcnMuZW5hYmxlKDEpLHRoaXMuY2FtZXJhTC5tYXRyaXhBdXRvVXBkYXRlPSExLHRoaXMuY2FtZXJhUj1uZXcgcjZ0LHRoaXMuY2FtZXJhUi5sYXllcnMuZW5hYmxlKDIpLHRoaXMuY2FtZXJhUi5tYXRyaXhBdXRvVXBkYXRlPSExLHRoaXMuX2NhY2hlPXtmb2N1czpudWxsLGZvdjpudWxsLGFzcGVjdDpudWxsLG5lYXI6bnVsbCxmYXI6bnVsbCx6b29tOm51bGwsZXllU2VwOm51bGx9fXVwZGF0ZSh0KXtjb25zdCBlPXRoaXMuX2NhY2hlO2lmKGUuZm9jdXMhPT10LmZvY3VzfHxlLmZvdiE9PXQuZm92fHxlLmFzcGVjdCE9PXQuYXNwZWN0KnRoaXMuYXNwZWN0fHxlLm5lYXIhPT10Lm5lYXJ8fGUuZmFyIT09dC5mYXJ8fGUuem9vbSE9PXQuem9vbXx8ZS5leWVTZXAhPT10aGlzLmV5ZVNlcCl7ZS5mb2N1cz10LmZvY3VzLGUuZm92PXQuZm92LGUuYXNwZWN0PXQuYXNwZWN0KnRoaXMuYXNwZWN0LGUubmVhcj10Lm5lYXIsZS5mYXI9dC5mYXIsZS56b29tPXQuem9vbSxlLmV5ZVNlcD10aGlzLmV5ZVNlcDtjb25zdCBuPXQucHJvamVjdGlvbk1hdHJpeC5jbG9uZSgpLGk9ZS5leWVTZXAvMixyPWkqZS5uZWFyL2UuZm9jdXMsbz1lLm5lYXIqTWF0aC50YW4ocjV0KmUuZm92Ki41KS9lLnpvb207bGV0IGEscztyaWUuZWxlbWVudHNbMTJdPS1pLGlpZS5lbGVtZW50c1sxMl09aSxhPS1vKmUuYXNwZWN0K3Iscz1vKmUuYXNwZWN0K3Isbi5lbGVtZW50c1swXT0yKmUubmVhci8ocy1hKSxuLmVsZW1lbnRzWzhdPShzK2EpLyhzLWEpLHRoaXMuY2FtZXJhTC5wcm9qZWN0aW9uTWF0cml4LmNvcHkobiksYT0tbyplLmFzcGVjdC1yLHM9byplLmFzcGVjdC1yLG4uZWxlbWVudHNbMF09MiplLm5lYXIvKHMtYSksbi5lbGVtZW50c1s4XT0ocythKS8ocy1hKSx0aGlzLmNhbWVyYVIucHJvamVjdGlvbk1hdHJpeC5jb3B5KG4pfXRoaXMuY2FtZXJhTC5tYXRyaXhXb3JsZC5jb3B5KHQubWF0cml4V29ybGQpLm11bHRpcGx5KHJpZSksdGhpcy5jYW1lcmFSLm1hdHJpeFdvcmxkLmNvcHkodC5tYXRyaXhXb3JsZCkubXVsdGlwbHkoaWllKX19LFN0cmVhbUNvcHlVc2FnZTozNTA0MixTdHJlYW1EcmF3VXNhZ2U6MzUwNDAsU3RyZWFtUmVhZFVzYWdlOjM1MDQxLFN0cmluZ0tleWZyYW1lVHJhY2s6cm5lLFN1YnRyYWN0RXF1YXRpb246MTAxLFN1YnRyYWN0aXZlQmxlbmRpbmc6MyxUT1VDSDpKMHQsVGFuZ2VudFNwYWNlTm9ybWFsTWFwOjAsVGV0cmFoZWRyb25CdWZmZXJHZW9tZXRyeTprZWUsVGV0cmFoZWRyb25HZW9tZXRyeTprZWUsVGV4dEJ1ZmZlckdlb21ldHJ5OkxlZSxUZXh0R2VvbWV0cnk6TGVlLFRleHR1cmU6TjV0LFRleHR1cmVMb2FkZXI6X25lLFRvcnVzQnVmZmVyR2VvbWV0cnk6UGVlLFRvcnVzR2VvbWV0cnk6UGVlLFRvcnVzS25vdEJ1ZmZlckdlb21ldHJ5Ok5lZSxUb3J1c0tub3RHZW9tZXRyeTpOZWUsVHJpYW5nbGU6SjN0LFRyaWFuZ2xlRmFuRHJhd01vZGU6MixUcmlhbmdsZVN0cmlwRHJhd01vZGU6MSxUcmlhbmdsZXNEcmF3TW9kZTowLFR1YmVCdWZmZXJHZW9tZXRyeTpJZWUsVHViZUdlb21ldHJ5OkllZSxVVk1hcHBpbmc6dDJ0LFVpbnQxNkF0dHJpYnV0ZTpmdW5jdGlvbiBEcmUodCxlKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5VaW50MTZBdHRyaWJ1dGUgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIG5ldyBUSFJFRS5VaW50MTZCdWZmZXJBdHRyaWJ1dGUoKSBpbnN0ZWFkLiIpLG5ldyBnNHQodCxlKX0sVWludDE2QnVmZmVyQXR0cmlidXRlOmc0dCxVaW50MzJBdHRyaWJ1dGU6ZnVuY3Rpb24gQnJlKHQsZSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVWludDMyQXR0cmlidXRlIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBuZXcgVEhSRUUuVWludDMyQnVmZmVyQXR0cmlidXRlKCkgaW5zdGVhZC4iKSxuZXcgeTR0KHQsZSl9LFVpbnQzMkJ1ZmZlckF0dHJpYnV0ZTp5NHQsVWludDhBdHRyaWJ1dGU6ZnVuY3Rpb24gSHJlKHQsZSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVWludDhBdHRyaWJ1dGUgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIG5ldyBUSFJFRS5VaW50OEJ1ZmZlckF0dHJpYnV0ZSgpIGluc3RlYWQuIiksbmV3IHA0dCh0LGUpfSxVaW50OEJ1ZmZlckF0dHJpYnV0ZTpwNHQsVWludDhDbGFtcGVkQXR0cmlidXRlOmZ1bmN0aW9uIEZyZSh0LGUpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlVpbnQ4Q2xhbXBlZEF0dHJpYnV0ZSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgbmV3IFRIUkVFLlVpbnQ4Q2xhbXBlZEJ1ZmZlckF0dHJpYnV0ZSgpIGluc3RlYWQuIiksbmV3IGY0dCh0LGUpfSxVaW50OENsYW1wZWRCdWZmZXJBdHRyaWJ1dGU6ZjR0LFVuaWZvcm06TmllLFVuaWZvcm1zTGliOmI2dCxVbmlmb3Jtc1V0aWxzOmU2dCxVbnNpZ25lZEJ5dGVUeXBlOmcydCxVbnNpZ25lZEludDI0OFR5cGU6eDJ0LFVuc2lnbmVkSW50VHlwZTp5MnQsVW5zaWduZWRTaG9ydDQ0NDRUeXBlOjEwMTcsVW5zaWduZWRTaG9ydDU1NTFUeXBlOjEwMTgsVW5zaWduZWRTaG9ydDU2NVR5cGU6MTAxOSxVbnNpZ25lZFNob3J0VHlwZTpfMnQsVlNNU2hhZG93TWFwOjMsVmVjdG9yMjpDNXQsVmVjdG9yMzpINXQsVmVjdG9yNDpSNXQsVmVjdG9yS2V5ZnJhbWVUcmFjazpvbmUsVmVydGV4OmZ1bmN0aW9uIFZyZSh0LGUsbil7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVmVydGV4IGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBUSFJFRS5WZWN0b3IzIGluc3RlYWQuIiksbmV3IEg1dCh0LGUsbil9LFZlcnRleENvbG9yczoyLFZpZGVvVGV4dHVyZTpkdGUsV2ViR0wxUmVuZGVyZXI6YTd0LFdlYkdMQ3ViZVJlbmRlclRhcmdldDpsNnQsV2ViR0xNdWx0aXBsZVJlbmRlclRhcmdldHM6ejV0LFdlYkdMTXVsdGlzYW1wbGVSZW5kZXJUYXJnZXQ6RDV0LFdlYkdMUmVuZGVyVGFyZ2V0Ok81dCxXZWJHTFJlbmRlclRhcmdldEN1YmU6ZnVuY3Rpb24gVXJlKHQsZSxuKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldEN1YmUoIHdpZHRoLCBoZWlnaHQsIG9wdGlvbnMgKSBpcyBub3cgV2ViR0xDdWJlUmVuZGVyVGFyZ2V0KCBzaXplLCBvcHRpb25zICkuIiksbmV3IGw2dCh0LG4pfSxXZWJHTFJlbmRlcmVyOm83dCxXZWJHTFV0aWxzOko4dCxXaXJlZnJhbWVHZW9tZXRyeTpSZWUsV2lyZWZyYW1lSGVscGVyOmZ1bmN0aW9uIGpyZSh0LGUpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldpcmVmcmFtZUhlbHBlciBoYXMgYmVlbiByZW1vdmVkLiBVc2UgVEhSRUUuV2lyZWZyYW1lR2VvbWV0cnkgaW5zdGVhZC4iKSxuZXcgaXRlKG5ldyBSZWUodC5nZW9tZXRyeSksbmV3IFg3dCh7Y29sb3I6dm9pZCAwIT09ZT9lOjE2Nzc3MjE1fSkpfSxXcmFwQXJvdW5kRW5kaW5nOlYydCxYSFJMb2FkZXI6ZnVuY3Rpb24gR3JlKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlhIUkxvYWRlciBoYXMgYmVlbiByZW5hbWVkIHRvIFRIUkVFLkZpbGVMb2FkZXIuIiksbmV3IHBuZSh0KX0sWmVyb0N1cnZhdHVyZUVuZGluZzpIMnQsWmVyb0ZhY3RvcjoyMDAsWmVyb1Nsb3BlRW5kaW5nOkYydCxaZXJvU3RlbmNpbE9wOjAsc1JHQkVuY29kaW5nOlcydH0pO2NvbnN0IFdyZT17dHlwZToiY2hhbmdlIn0scXJlPXt0eXBlOiJzdGFydCJ9LFlyZT17dHlwZToiZW5kIn07Y2xhc3MgWHJlIGV4dGVuZHMgZTV0e2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIoKSx2b2lkIDA9PT1lJiZjb25zb2xlLndhcm4oJ1RIUkVFLk9yYml0Q29udHJvbHM6IFRoZSBzZWNvbmQgcGFyYW1ldGVyICJkb21FbGVtZW50IiBpcyBub3cgbWFuZGF0b3J5LicpLGU9PT1kb2N1bWVudCYmY29uc29sZS5lcnJvcignVEhSRUUuT3JiaXRDb250cm9sczogImRvY3VtZW50IiBzaG91bGQgbm90IGJlIHVzZWQgYXMgdGhlIHRhcmdldCAiZG9tRWxlbWVudCIuIFBsZWFzZSB1c2UgInJlbmRlcmVyLmRvbUVsZW1lbnQiIGluc3RlYWQuJyksdGhpcy5vYmplY3Q9dCx0aGlzLmRvbUVsZW1lbnQ9ZSx0aGlzLmRvbUVsZW1lbnQuc3R5bGUudG91Y2hBY3Rpb249Im5vbmUiLHRoaXMuZW5hYmxlZD0hMCx0aGlzLnRhcmdldD1uZXcgSDV0LHRoaXMubWluRGlzdGFuY2U9MCx0aGlzLm1heERpc3RhbmNlPTEvMCx0aGlzLm1pblpvb209MCx0aGlzLm1heFpvb209MS8wLHRoaXMubWluUG9sYXJBbmdsZT0wLHRoaXMubWF4UG9sYXJBbmdsZT1NYXRoLlBJLHRoaXMubWluQXppbXV0aEFuZ2xlPS0xLzAsdGhpcy5tYXhBemltdXRoQW5nbGU9MS8wLHRoaXMuZW5hYmxlRGFtcGluZz0hMSx0aGlzLmRhbXBpbmdGYWN0b3I9LjA1LHRoaXMuZW5hYmxlWm9vbT0hMCx0aGlzLnpvb21TcGVlZD0xLHRoaXMuZW5hYmxlUm90YXRlPSEwLHRoaXMucm90YXRlU3BlZWQ9MSx0aGlzLmVuYWJsZVBhbj0hMCx0aGlzLnBhblNwZWVkPTEsdGhpcy5zY3JlZW5TcGFjZVBhbm5pbmc9ITAsdGhpcy5rZXlQYW5TcGVlZD03LHRoaXMuYXV0b1JvdGF0ZT0hMSx0aGlzLmF1dG9Sb3RhdGVTcGVlZD0yLHRoaXMua2V5cz17TEVGVDoiQXJyb3dMZWZ0IixVUDoiQXJyb3dVcCIsUklHSFQ6IkFycm93UmlnaHQiLEJPVFRPTToiQXJyb3dEb3duIn0sdGhpcy5tb3VzZUJ1dHRvbnM9e0xFRlQ6WjB0LlJPVEFURSxNSURETEU6WjB0LkRPTExZLFJJR0hUOlowdC5QQU59LHRoaXMudG91Y2hlcz17T05FOkowdC5ST1RBVEUsVFdPOkowdC5ET0xMWV9QQU59LHRoaXMudGFyZ2V0MD10aGlzLnRhcmdldC5jbG9uZSgpLHRoaXMucG9zaXRpb24wPXRoaXMub2JqZWN0LnBvc2l0aW9uLmNsb25lKCksdGhpcy56b29tMD10aGlzLm9iamVjdC56b29tLHRoaXMuX2RvbUVsZW1lbnRLZXlFdmVudHM9bnVsbCx0aGlzLmdldFBvbGFyQW5nbGU9ZnVuY3Rpb24oKXtyZXR1cm4gYS5waGl9LHRoaXMuZ2V0QXppbXV0aGFsQW5nbGU9ZnVuY3Rpb24oKXtyZXR1cm4gYS50aGV0YX0sdGhpcy5nZXREaXN0YW5jZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLm9iamVjdC5wb3NpdGlvbi5kaXN0YW5jZVRvKHRoaXMudGFyZ2V0KX0sdGhpcy5saXN0ZW5Ub0tleUV2ZW50cz1mdW5jdGlvbih0KXt0LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLGopLHRoaXMuX2RvbUVsZW1lbnRLZXlFdmVudHM9dH0sdGhpcy5zYXZlU3RhdGU9ZnVuY3Rpb24oKXtuLnRhcmdldDAuY29weShuLnRhcmdldCksbi5wb3NpdGlvbjAuY29weShuLm9iamVjdC5wb3NpdGlvbiksbi56b29tMD1uLm9iamVjdC56b29tfSx0aGlzLnJlc2V0PWZ1bmN0aW9uKCl7bi50YXJnZXQuY29weShuLnRhcmdldDApLG4ub2JqZWN0LnBvc2l0aW9uLmNvcHkobi5wb3NpdGlvbjApLG4ub2JqZWN0Lnpvb209bi56b29tMCxuLm9iamVjdC51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCksbi5kaXNwYXRjaEV2ZW50KFdyZSksbi51cGRhdGUoKSxyPWkuTk9ORX0sdGhpcy51cGRhdGU9KGZ1bmN0aW9uKCl7Y29uc3QgZT1uZXcgSDV0LGg9KG5ldyBCNXQpLnNldEZyb21Vbml0VmVjdG9ycyh0LnVwLG5ldyBINXQoMCwxLDApKSxkPWguY2xvbmUoKS5pbnZlcnQoKSxwPW5ldyBINXQsZj1uZXcgQjV0LG09MipNYXRoLlBJO3JldHVybiBmdW5jdGlvbiB0KCl7Y29uc3QgZz1uLm9iamVjdC5wb3NpdGlvbjtlLmNvcHkoZykuc3ViKG4udGFyZ2V0KSxlLmFwcGx5UXVhdGVybmlvbihoKSxhLnNldEZyb21WZWN0b3IzKGUpLG4uYXV0b1JvdGF0ZSYmcj09PWkuTk9ORSYmUygoZnVuY3Rpb24gXygpe3JldHVybiAyKk1hdGguUEkvNjAvNjAqbi5hdXRvUm90YXRlU3BlZWR9KSgpKSxuLmVuYWJsZURhbXBpbmc/KGEudGhldGErPXMudGhldGEqbi5kYW1waW5nRmFjdG9yLGEucGhpKz1zLnBoaSpuLmRhbXBpbmdGYWN0b3IpOihhLnRoZXRhKz1zLnRoZXRhLGEucGhpKz1zLnBoaSk7bGV0IHk9bi5taW5BemltdXRoQW5nbGUsdj1uLm1heEF6aW11dGhBbmdsZTtyZXR1cm4gaXNGaW5pdGUoeSkmJmlzRmluaXRlKHYpJiYoeTwtTWF0aC5QST95Kz1tOnk+TWF0aC5QSSYmKHktPW0pLHY8LU1hdGguUEk/dis9bTp2Pk1hdGguUEkmJih2LT1tKSxhLnRoZXRhPXk8PXY/TWF0aC5tYXgoeSxNYXRoLm1pbih2LGEudGhldGEpKTphLnRoZXRhPih5K3YpLzI/TWF0aC5tYXgoeSxhLnRoZXRhKTpNYXRoLm1pbih2LGEudGhldGEpKSxhLnBoaT1NYXRoLm1heChuLm1pblBvbGFyQW5nbGUsTWF0aC5taW4obi5tYXhQb2xhckFuZ2xlLGEucGhpKSksYS5tYWtlU2FmZSgpLGEucmFkaXVzKj1sLGEucmFkaXVzPU1hdGgubWF4KG4ubWluRGlzdGFuY2UsTWF0aC5taW4obi5tYXhEaXN0YW5jZSxhLnJhZGl1cykpLCEwPT09bi5lbmFibGVEYW1waW5nP24udGFyZ2V0LmFkZFNjYWxlZFZlY3RvcihjLG4uZGFtcGluZ0ZhY3Rvcik6bi50YXJnZXQuYWRkKGMpLGUuc2V0RnJvbVNwaGVyaWNhbChhKSxlLmFwcGx5UXVhdGVybmlvbihkKSxnLmNvcHkobi50YXJnZXQpLmFkZChlKSxuLm9iamVjdC5sb29rQXQobi50YXJnZXQpLCEwPT09bi5lbmFibGVEYW1waW5nPyhzLnRoZXRhKj0xLW4uZGFtcGluZ0ZhY3RvcixzLnBoaSo9MS1uLmRhbXBpbmdGYWN0b3IsYy5tdWx0aXBseVNjYWxhcigxLW4uZGFtcGluZ0ZhY3RvcikpOihzLnNldCgwLDAsMCksYy5zZXQoMCwwLDApKSxsPTEsISEodXx8cC5kaXN0YW5jZVRvU3F1YXJlZChuLm9iamVjdC5wb3NpdGlvbik+b3x8OCooMS1mLmRvdChuLm9iamVjdC5xdWF0ZXJuaW9uKSk+bykmJihuLmRpc3BhdGNoRXZlbnQoV3JlKSxwLmNvcHkobi5vYmplY3QucG9zaXRpb24pLGYuY29weShuLm9iamVjdC5xdWF0ZXJuaW9uKSx1PSExLCEwKX19KSgpLHRoaXMuZGlzcG9zZT1mdW5jdGlvbigpe24uZG9tRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJjb250ZXh0bWVudSIsRyksbi5kb21FbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJkb3duIixCKSxuLmRvbUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9pbnRlcmNhbmNlbCIsViksbi5kb21FbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIndoZWVsIixVKSxuLmRvbUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9pbnRlcm1vdmUiLEgpLG4uZG9tRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJwb2ludGVydXAiLEYpLG51bGwhPT1uLl9kb21FbGVtZW50S2V5RXZlbnRzJiZuLl9kb21FbGVtZW50S2V5RXZlbnRzLnJlbW92ZUV2ZW50TGlzdGVuZXIoImtleWRvd24iLGopfTtjb25zdCBuPXRoaXMsaT17Tk9ORTotMSxST1RBVEU6MCxET0xMWToxLFBBTjoyLFRPVUNIX1JPVEFURTozLFRPVUNIX1BBTjo0LFRPVUNIX0RPTExZX1BBTjo1LFRPVUNIX0RPTExZX1JPVEFURTo2fTtsZXQgcj1pLk5PTkU7Y29uc3Qgbz0xZS02LGE9bmV3IERpZSxzPW5ldyBEaWU7bGV0IGw9MTtjb25zdCBjPW5ldyBINXQ7bGV0IHU9ITE7Y29uc3QgaD1uZXcgQzV0LGQ9bmV3IEM1dCxwPW5ldyBDNXQsZj1uZXcgQzV0LG09bmV3IEM1dCxnPW5ldyBDNXQsXz1uZXcgQzV0LHk9bmV3IEM1dCx2PW5ldyBDNXQsYj1bXSx4PXt9O2Z1bmN0aW9uIHcoKXtyZXR1cm4gTWF0aC5wb3coLjk1LG4uem9vbVNwZWVkKX1mdW5jdGlvbiBTKHQpe3MudGhldGEtPXR9ZnVuY3Rpb24gTSh0KXtzLnBoaS09dH1jb25zdCBFPShmdW5jdGlvbigpe2NvbnN0IHQ9bmV3IEg1dDtyZXR1cm4gZnVuY3Rpb24gZShuLGkpe3Quc2V0RnJvbU1hdHJpeENvbHVtbihpLDApLHQubXVsdGlwbHlTY2FsYXIoLW4pLGMuYWRkKHQpfX0pKCksVD0oZnVuY3Rpb24oKXtjb25zdCB0PW5ldyBINXQ7cmV0dXJuIGZ1bmN0aW9uIGUoaSxyKXshMD09PW4uc2NyZWVuU3BhY2VQYW5uaW5nP3Quc2V0RnJvbU1hdHJpeENvbHVtbihyLDEpOih0LnNldEZyb21NYXRyaXhDb2x1bW4ociwwKSx0LmNyb3NzVmVjdG9ycyhuLm9iamVjdC51cCx0KSksdC5tdWx0aXBseVNjYWxhcihpKSxjLmFkZCh0KX19KSgpLEM9KGZ1bmN0aW9uKCl7Y29uc3QgdD1uZXcgSDV0O3JldHVybiBmdW5jdGlvbiBlKGkscil7Y29uc3Qgbz1uLmRvbUVsZW1lbnQ7aWYobi5vYmplY3QuaXNQZXJzcGVjdGl2ZUNhbWVyYSl7dC5jb3B5KG4ub2JqZWN0LnBvc2l0aW9uKS5zdWIobi50YXJnZXQpO2xldCBlPXQubGVuZ3RoKCk7ZSo9TWF0aC50YW4obi5vYmplY3QuZm92LzIqTWF0aC5QSS8xODApLEUoMippKmUvby5jbGllbnRIZWlnaHQsbi5vYmplY3QubWF0cml4KSxUKDIqciplL28uY2xpZW50SGVpZ2h0LG4ub2JqZWN0Lm1hdHJpeCl9ZWxzZSBuLm9iamVjdC5pc09ydGhvZ3JhcGhpY0NhbWVyYT8oRShpKihuLm9iamVjdC5yaWdodC1uLm9iamVjdC5sZWZ0KS9uLm9iamVjdC56b29tL28uY2xpZW50V2lkdGgsbi5vYmplY3QubWF0cml4KSxUKHIqKG4ub2JqZWN0LnRvcC1uLm9iamVjdC5ib3R0b20pL24ub2JqZWN0Lnpvb20vby5jbGllbnRIZWlnaHQsbi5vYmplY3QubWF0cml4KSk6KGNvbnNvbGUud2FybigiV0FSTklORzogT3JiaXRDb250cm9scy5qcyBlbmNvdW50ZXJlZCBhbiB1bmtub3duIGNhbWVyYSB0eXBlIC0gcGFuIGRpc2FibGVkLiIpLG4uZW5hYmxlUGFuPSExKX19KSgpO2Z1bmN0aW9uIEEodCl7bi5vYmplY3QuaXNQZXJzcGVjdGl2ZUNhbWVyYT9sLz10Om4ub2JqZWN0LmlzT3J0aG9ncmFwaGljQ2FtZXJhPyhuLm9iamVjdC56b29tPU1hdGgubWF4KG4ubWluWm9vbSxNYXRoLm1pbihuLm1heFpvb20sbi5vYmplY3Quem9vbSp0KSksbi5vYmplY3QudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpLHU9ITApOihjb25zb2xlLndhcm4oIldBUk5JTkc6IE9yYml0Q29udHJvbHMuanMgZW5jb3VudGVyZWQgYW4gdW5rbm93biBjYW1lcmEgdHlwZSAtIGRvbGx5L3pvb20gZGlzYWJsZWQuIiksbi5lbmFibGVab29tPSExKX1mdW5jdGlvbiBrKHQpe24ub2JqZWN0LmlzUGVyc3BlY3RpdmVDYW1lcmE/bCo9dDpuLm9iamVjdC5pc09ydGhvZ3JhcGhpY0NhbWVyYT8obi5vYmplY3Quem9vbT1NYXRoLm1heChuLm1pblpvb20sTWF0aC5taW4obi5tYXhab29tLG4ub2JqZWN0Lnpvb20vdCkpLG4ub2JqZWN0LnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKSx1PSEwKTooY29uc29sZS53YXJuKCJXQVJOSU5HOiBPcmJpdENvbnRyb2xzLmpzIGVuY291bnRlcmVkIGFuIHVua25vd24gY2FtZXJhIHR5cGUgLSBkb2xseS96b29tIGRpc2FibGVkLiIpLG4uZW5hYmxlWm9vbT0hMSl9ZnVuY3Rpb24gTCh0KXtoLnNldCh0LmNsaWVudFgsdC5jbGllbnRZKX1mdW5jdGlvbiBQKHQpe2Yuc2V0KHQuY2xpZW50WCx0LmNsaWVudFkpfWZ1bmN0aW9uIE4oKXtpZigxPT09Yi5sZW5ndGgpaC5zZXQoYlswXS5wYWdlWCxiWzBdLnBhZ2VZKTtlbHNle2guc2V0KC41KihiWzBdLnBhZ2VYK2JbMV0ucGFnZVgpLC41KihiWzBdLnBhZ2VZK2JbMV0ucGFnZVkpKX19ZnVuY3Rpb24gSSgpe2lmKDE9PT1iLmxlbmd0aClmLnNldChiWzBdLnBhZ2VYLGJbMF0ucGFnZVkpO2Vsc2V7Zi5zZXQoLjUqKGJbMF0ucGFnZVgrYlsxXS5wYWdlWCksLjUqKGJbMF0ucGFnZVkrYlsxXS5wYWdlWSkpfX1mdW5jdGlvbiBSKCl7Y29uc3QgdD1iWzBdLnBhZ2VYLWJbMV0ucGFnZVgsZT1iWzBdLnBhZ2VZLWJbMV0ucGFnZVksbj1NYXRoLnNxcnQodCp0K2UqZSk7Xy5zZXQoMCxuKX1mdW5jdGlvbiBPKHQpe2lmKDE9PWIubGVuZ3RoKWQuc2V0KHQucGFnZVgsdC5wYWdlWSk7ZWxzZXtjb25zdCBlPVkodCk7ZC5zZXQoLjUqKHQucGFnZVgrZS54KSwuNSoodC5wYWdlWStlLnkpKX1wLnN1YlZlY3RvcnMoZCxoKS5tdWx0aXBseVNjYWxhcihuLnJvdGF0ZVNwZWVkKTtjb25zdCBlPW4uZG9tRWxlbWVudDtTKDIqTWF0aC5QSSpwLngvZS5jbGllbnRIZWlnaHQpLE0oMipNYXRoLlBJKnAueS9lLmNsaWVudEhlaWdodCksaC5jb3B5KGQpfWZ1bmN0aW9uIHoodCl7aWYoMT09PWIubGVuZ3RoKW0uc2V0KHQucGFnZVgsdC5wYWdlWSk7ZWxzZXtjb25zdCBlPVkodCk7bS5zZXQoLjUqKHQucGFnZVgrZS54KSwuNSoodC5wYWdlWStlLnkpKX1nLnN1YlZlY3RvcnMobSxmKS5tdWx0aXBseVNjYWxhcihuLnBhblNwZWVkKSxDKGcueCxnLnkpLGYuY29weShtKX1mdW5jdGlvbiBEKHQpe2NvbnN0IGU9WSh0KSxpPXQucGFnZVgtZS54LHI9dC5wYWdlWS1lLnksbz1NYXRoLnNxcnQoaSppK3Iqcik7eS5zZXQoMCxvKSx2LnNldCgwLE1hdGgucG93KHkueS9fLnksbi56b29tU3BlZWQpKSxBKHYueSksXy5jb3B5KHkpfWZ1bmN0aW9uIEIodCl7ITEhPT1uLmVuYWJsZWQmJigwPT09Yi5sZW5ndGgmJihuLmRvbUVsZW1lbnQuc2V0UG9pbnRlckNhcHR1cmUodC5wb2ludGVySWQpLG4uZG9tRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVybW92ZSIsSCksbi5kb21FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoInBvaW50ZXJ1cCIsRikpLChmdW5jdGlvbiBlKHQpe2IucHVzaCh0KX0pKHQpLCJ0b3VjaCI9PT10LnBvaW50ZXJUeXBlPyhmdW5jdGlvbiBvKHQpe3N3aXRjaChxKHQpLGIubGVuZ3RoKXtjYXNlIDE6c3dpdGNoKG4udG91Y2hlcy5PTkUpe2Nhc2UgSjB0LlJPVEFURTppZighMT09PW4uZW5hYmxlUm90YXRlKXJldHVybjtOKCkscj1pLlRPVUNIX1JPVEFURTticmVhaztjYXNlIEowdC5QQU46aWYoITE9PT1uLmVuYWJsZVBhbilyZXR1cm47SSgpLHI9aS5UT1VDSF9QQU47YnJlYWs7ZGVmYXVsdDpyPWkuTk9ORX1icmVhaztjYXNlIDI6c3dpdGNoKG4udG91Y2hlcy5UV08pe2Nhc2UgSjB0LkRPTExZX1BBTjppZighMT09PW4uZW5hYmxlWm9vbSYmITE9PT1uLmVuYWJsZVBhbilyZXR1cm47IShmdW5jdGlvbiB0KCl7bi5lbmFibGVab29tJiZSKCksbi5lbmFibGVQYW4mJkkoKX0pKCkscj1pLlRPVUNIX0RPTExZX1BBTjticmVhaztjYXNlIEowdC5ET0xMWV9ST1RBVEU6aWYoITE9PT1uLmVuYWJsZVpvb20mJiExPT09bi5lbmFibGVSb3RhdGUpcmV0dXJuOyEoZnVuY3Rpb24gZSgpe24uZW5hYmxlWm9vbSYmUigpLG4uZW5hYmxlUm90YXRlJiZOKCl9KSgpLHI9aS5UT1VDSF9ET0xMWV9ST1RBVEU7YnJlYWs7ZGVmYXVsdDpyPWkuTk9ORX1icmVhaztkZWZhdWx0OnI9aS5OT05FfXIhPT1pLk5PTkUmJm4uZGlzcGF0Y2hFdmVudChxcmUpfSkodCk6KGZ1bmN0aW9uIGEodCl7bGV0IGU7c3dpdGNoKHQuYnV0dG9uKXtjYXNlIDA6ZT1uLm1vdXNlQnV0dG9ucy5MRUZUO2JyZWFrO2Nhc2UgMTplPW4ubW91c2VCdXR0b25zLk1JRERMRTticmVhaztjYXNlIDI6ZT1uLm1vdXNlQnV0dG9ucy5SSUdIVDticmVhaztkZWZhdWx0OmU9LTF9c3dpdGNoKGUpe2Nhc2UgWjB0LkRPTExZOmlmKCExPT09bi5lbmFibGVab29tKXJldHVybjshKGZ1bmN0aW9uIGUodCl7Xy5zZXQodC5jbGllbnRYLHQuY2xpZW50WSl9KSh0KSxyPWkuRE9MTFk7YnJlYWs7Y2FzZSBaMHQuUk9UQVRFOmlmKHQuY3RybEtleXx8dC5tZXRhS2V5fHx0LnNoaWZ0S2V5KXtpZighMT09PW4uZW5hYmxlUGFuKXJldHVybjtQKHQpLHI9aS5QQU59ZWxzZXtpZighMT09PW4uZW5hYmxlUm90YXRlKXJldHVybjtMKHQpLHI9aS5ST1RBVEV9YnJlYWs7Y2FzZSBaMHQuUEFOOmlmKHQuY3RybEtleXx8dC5tZXRhS2V5fHx0LnNoaWZ0S2V5KXtpZighMT09PW4uZW5hYmxlUm90YXRlKXJldHVybjtMKHQpLHI9aS5ST1RBVEV9ZWxzZXtpZighMT09PW4uZW5hYmxlUGFuKXJldHVybjtQKHQpLHI9aS5QQU59YnJlYWs7ZGVmYXVsdDpyPWkuTk9ORX1yIT09aS5OT05FJiZuLmRpc3BhdGNoRXZlbnQocXJlKX0pKHQpKX1mdW5jdGlvbiBIKHQpeyExIT09bi5lbmFibGVkJiYoInRvdWNoIj09PXQucG9pbnRlclR5cGU/KGZ1bmN0aW9uIGUodCl7c3dpdGNoKHEodCkscil7Y2FzZSBpLlRPVUNIX1JPVEFURTppZighMT09PW4uZW5hYmxlUm90YXRlKXJldHVybjtPKHQpLG4udXBkYXRlKCk7YnJlYWs7Y2FzZSBpLlRPVUNIX1BBTjppZighMT09PW4uZW5hYmxlUGFuKXJldHVybjt6KHQpLG4udXBkYXRlKCk7YnJlYWs7Y2FzZSBpLlRPVUNIX0RPTExZX1BBTjppZighMT09PW4uZW5hYmxlWm9vbSYmITE9PT1uLmVuYWJsZVBhbilyZXR1cm47IShmdW5jdGlvbiBlKHQpe24uZW5hYmxlWm9vbSYmRCh0KSxuLmVuYWJsZVBhbiYmeih0KX0pKHQpLG4udXBkYXRlKCk7YnJlYWs7Y2FzZSBpLlRPVUNIX0RPTExZX1JPVEFURTppZighMT09PW4uZW5hYmxlWm9vbSYmITE9PT1uLmVuYWJsZVJvdGF0ZSlyZXR1cm47IShmdW5jdGlvbiBvKHQpe24uZW5hYmxlWm9vbSYmRCh0KSxuLmVuYWJsZVJvdGF0ZSYmTyh0KX0pKHQpLG4udXBkYXRlKCk7YnJlYWs7ZGVmYXVsdDpyPWkuTk9ORX19KSh0KTooZnVuY3Rpb24gbyh0KXtpZighMT09PW4uZW5hYmxlZClyZXR1cm47c3dpdGNoKHIpe2Nhc2UgaS5ST1RBVEU6aWYoITE9PT1uLmVuYWJsZVJvdGF0ZSlyZXR1cm47IShmdW5jdGlvbiBlKHQpe2Quc2V0KHQuY2xpZW50WCx0LmNsaWVudFkpLHAuc3ViVmVjdG9ycyhkLGgpLm11bHRpcGx5U2NhbGFyKG4ucm90YXRlU3BlZWQpO2NvbnN0IGU9bi5kb21FbGVtZW50O1MoMipNYXRoLlBJKnAueC9lLmNsaWVudEhlaWdodCksTSgyKk1hdGguUEkqcC55L2UuY2xpZW50SGVpZ2h0KSxoLmNvcHkoZCksbi51cGRhdGUoKX0pKHQpO2JyZWFrO2Nhc2UgaS5ET0xMWTppZighMT09PW4uZW5hYmxlWm9vbSlyZXR1cm47IShmdW5jdGlvbiByKHQpe3kuc2V0KHQuY2xpZW50WCx0LmNsaWVudFkpLHYuc3ViVmVjdG9ycyh5LF8pLHYueT4wP0EodygpKTp2Lnk8MCYmayh3KCkpLF8uY29weSh5KSxuLnVwZGF0ZSgpfSkodCk7YnJlYWs7Y2FzZSBpLlBBTjppZighMT09PW4uZW5hYmxlUGFuKXJldHVybjshKGZ1bmN0aW9uIG8odCl7bS5zZXQodC5jbGllbnRYLHQuY2xpZW50WSksZy5zdWJWZWN0b3JzKG0sZikubXVsdGlwbHlTY2FsYXIobi5wYW5TcGVlZCksQyhnLngsZy55KSxmLmNvcHkobSksbi51cGRhdGUoKX0pKHQpfX0pKHQpKX1mdW5jdGlvbiBGKHQpeyExIT09bi5lbmFibGVkJiYoInRvdWNoIj09PXQucG9pbnRlclR5cGU/KGZ1bmN0aW9uIGUodCl7bi5kaXNwYXRjaEV2ZW50KFlyZSkscj1pLk5PTkV9KSgpOihmdW5jdGlvbiBvKHQpe24uZGlzcGF0Y2hFdmVudChZcmUpLHI9aS5OT05FfSkoKSxXKHQpLDA9PT1iLmxlbmd0aCYmKG4uZG9tRWxlbWVudC5yZWxlYXNlUG9pbnRlckNhcHR1cmUodC5wb2ludGVySWQpLG4uZG9tRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJwb2ludGVybW92ZSIsSCksbi5kb21FbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJ1cCIsRikpKX1mdW5jdGlvbiBWKHQpe1codCl9ZnVuY3Rpb24gVSh0KXshMT09PW4uZW5hYmxlZHx8ITE9PT1uLmVuYWJsZVpvb218fHIhPT1pLk5PTkUmJnIhPT1pLlJPVEFURXx8KHQucHJldmVudERlZmF1bHQoKSxuLmRpc3BhdGNoRXZlbnQocXJlKSwoZnVuY3Rpb24gZSh0KXt0LmRlbHRhWTwwP2sodygpKTp0LmRlbHRhWT4wJiZBKHcoKSksbi51cGRhdGUoKX0pKHQpLG4uZGlzcGF0Y2hFdmVudChZcmUpKX1mdW5jdGlvbiBqKHQpeyExIT09bi5lbmFibGVkJiYhMSE9PW4uZW5hYmxlUGFuJiYoZnVuY3Rpb24gZSh0KXtsZXQgZT0hMTtzd2l0Y2godC5jb2RlKXtjYXNlIG4ua2V5cy5VUDpDKDAsbi5rZXlQYW5TcGVlZCksZT0hMDticmVhaztjYXNlIG4ua2V5cy5CT1RUT006QygwLC1uLmtleVBhblNwZWVkKSxlPSEwO2JyZWFrO2Nhc2Ugbi5rZXlzLkxFRlQ6QyhuLmtleVBhblNwZWVkLDApLGU9ITA7YnJlYWs7Y2FzZSBuLmtleXMuUklHSFQ6Qygtbi5rZXlQYW5TcGVlZCwwKSxlPSEwfWUmJih0LnByZXZlbnREZWZhdWx0KCksbi51cGRhdGUoKSl9KSh0KX1mdW5jdGlvbiBHKHQpeyExIT09bi5lbmFibGVkJiZ0LnByZXZlbnREZWZhdWx0KCl9ZnVuY3Rpb24gVyh0KXtkZWxldGUgeFt0LnBvaW50ZXJJZF07Zm9yKGxldCBlPTA7ZTxiLmxlbmd0aDtlKyspaWYoYltlXS5wb2ludGVySWQ9PXQucG9pbnRlcklkKXJldHVybiB2b2lkIGIuc3BsaWNlKGUsMSl9ZnVuY3Rpb24gcSh0KXtsZXQgZT14W3QucG9pbnRlcklkXTt2b2lkIDA9PT1lJiYoZT1uZXcgQzV0LHhbdC5wb2ludGVySWRdPWUpLGUuc2V0KHQucGFnZVgsdC5wYWdlWSl9ZnVuY3Rpb24gWSh0KXtyZXR1cm4geFsodC5wb2ludGVySWQ9PT1iWzBdLnBvaW50ZXJJZD9iWzFdOmJbMF0pLnBvaW50ZXJJZF19bi5kb21FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNvbnRleHRtZW51IixHKSxuLmRvbUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcmRvd24iLEIpLG4uZG9tRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVyY2FuY2VsIixWKSxuLmRvbUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigid2hlZWwiLFUse3Bhc3NpdmU6ITF9KSx0aGlzLnVwZGF0ZSgpfX1jbGFzcyAkcmUgZXh0ZW5kcyBlNXR7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLl9sYXN0TWVzaD1udWxsLHRoaXMuX2Nsb2NrPW5ldyBvaWUsdGhpcy5fY2FudmFzU2l6ZT1udWxsLHRoaXMuX2xheWVyc0NvbmZpZz1udWxsLHRoaXMuX3J1bkNvbG9yPXR9X2lzT2JqZWN0KHQpe3JldHVybiJvYmplY3QiPT10eXBlb2YgdCYmbnVsbCE9dCYmIUFycmF5LmlzQXJyYXkodCl9X2FwcGx5RGVmYXVsdHModCxlKXtsZXQgbj17fTtjb25zdCBpPVt0LGVdO2ZvcihsZXQgdD0wO3Q8aS5sZW5ndGg7dCsrKXtjb25zdCBlPWlbdF07Zm9yKGxldCB0IGluIGUpe2NvbnN0IGk9dCBpbiBuO3RoaXMuX2lzT2JqZWN0KGVbdF0pP25bdF09dGhpcy5fYXBwbHlEZWZhdWx0cyhuW3RdfHx7fSxlW3RdKTppfHwoblt0XT1lW3RdKX19cmV0dXJuIG59X2NyZWF0ZUxheWVycygpe2lmKHRoaXMuX2xheWVyc0NvbmZpZyYmdGhpcy5fc2NlbmUmJnRoaXMuX2xhc3RNZXNoKXtpZih0aGlzLl9sYXllcnNDb25maWcuc2hvd0JvdW5kaW5nQm94KXt2YXIgdD1uZXcgc3JlKHRoaXMuX2xhc3RNZXNoLG5ldyBzNHQoInJnYigwLCAwLCAyNTUpIikpO3RoaXMuX3NjZW5lLmFkZCh0KX1pZih0aGlzLl9sYXllcnNDb25maWcuc2hvd0F4ZXMpe3ZhciBlPW5ldyBocmUoNSk7dGhpcy5fc2NlbmUuYWRkKGUpfX19c2V0TGF5ZXJzQ29uZmlnKHQpe3RoaXMuX2xheWVyc0NvbmZpZz10aGlzLl9hcHBseURlZmF1bHRzKHQsdGhpcy5fbGF5ZXJzQ29uZmlnfHx7fSl9X2NyZWF0ZVdvcmxkKHQsZSl7aWYodGhpcy5pc1JlYWR5KCkpcmV0dXJuO3RoaXMuX3NjZW5lPW5ldyBjN3Q7dmFyIG49bmV3IG1yZVt0LmNhbWVyYS5jbHNdKHQuY2FtZXJhLmZvdix0aGlzLl9jYW52YXNTaXplLndpZHRoL3RoaXMuX2NhbnZhc1NpemUuaGVpZ2h0LHQuY2FtZXJhLm5lYXIsdC5jYW1lcmEuZmFyKTt0aGlzLl9jYW1lcmE9bix0aGlzLmluaXRDYW1lcmFQb3NpdGlvbj1udWxsLHQuY2FtZXJhLnBvc2l0aW9uJiYodGhpcy5pbml0Q2FtZXJhUG9zaXRpb249KG5ldyBINXQpLmZyb21BcnJheSh0LmNhbWVyYS5wb3NpdGlvbikpLHRoaXMuaW5pdENhbWVyYUxvb2tBdD1udWxsLHQuY2FtZXJhLmxvb2tBdCYmKHRoaXMuaW5pdENhbWVyYUxvb2tBdD0obmV3IEg1dCkuZnJvbUFycmF5KHQuY2FtZXJhLmxvb2tBdCkpO3ZhciBpPW5ldyBYcmUobixlKTtjb25zdCByPWk7ci5sb29rU3BlZWQ9LjQsci5tb3ZlbWVudFNwZWVkPTIwLHIubm9GbHk9ITAsci5sb29rVmVydGljYWw9ITAsci5jb25zdHJhaW5WZXJ0aWNhbD0hMCxyLnZlcnRpY2FsTWluPTEsci52ZXJ0aWNhbE1heD0yLHIuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIix0aGlzLl9vbkNhbWVyYVBvc2l0aW9uQ2hhbmdlLmJpbmQodGhpcykpLHRoaXMuX2NhbWVyYUNvbnRyb2xzPWksdGhpcy5fcmVuZGVyZXI9bmV3IG83dCh7YW50aWFsaWFzOiEwfSksdGhpcy5fcmVuZGVyZXIuc2V0UGl4ZWxSYXRpbyh3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyksdGhpcy5fcmVuZGVyZXIuc2V0U2l6ZSh0aGlzLl9jYW52YXNTaXplLndpZHRoLHRoaXMuX2NhbnZhc1NpemUuaGVpZ2h0KSx0aGlzLl9yZW5kZXJlci5zZXRDbGVhckNvbG9yKDE2Nzc3MjE1LDEpfV9jbGVhclNjZW5lKCl7Zm9yKDt0aGlzLl9zY2VuZS5jaGlsZHJlbi5sZW5ndGg+MDspdGhpcy5fc2NlbmUucmVtb3ZlKHRoaXMuX3NjZW5lLmNoaWxkcmVuWzBdKX1nZXRSZW5kZXJlcigpe3JldHVybiB0aGlzLl9yZW5kZXJlcn1nZXRDYW1lcmFDb250cm9scygpe3JldHVybiB0aGlzLl9jYW1lcmFDb250cm9sc31pc1JlYWR5KCl7cmV0dXJuISF0aGlzLl9jYW1lcmEmJiEhdGhpcy5fY2FtZXJhQ29udHJvbHN9Z2V0Q2FtZXJhUG9zaXRpb24oKXtyZXR1cm57ZmFyOnRoaXMuX2NhbWVyYS5mYXIscG9zaXRpb246dGhpcy5fY2FtZXJhLnBvc2l0aW9uLmNsb25lKCksdGFyZ2V0OnRoaXMuX2NhbWVyYUNvbnRyb2xzLnRhcmdldC5jbG9uZSgpfX1zZXRDYW52YXNTaXplKHQpe3RoaXMuX2NhbnZhc1NpemU9dH1kcmF3KCl7dGhpcy5fYW5pbWF0aW9uRnJhbWVJbmRleCYmY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5fYW5pbWF0aW9uRnJhbWVJbmRleCksdGhpcy5fY2FtZXJhLmFzcGVjdD10aGlzLl9jYW52YXNTaXplLndpZHRoL3RoaXMuX2NhbnZhc1NpemUuaGVpZ2h0LHRoaXMuX2NhbWVyYS51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCksdGhpcy5fcmVuZGVyZXIuc2V0U2l6ZSh0aGlzLl9jYW52YXNTaXplLndpZHRoLHRoaXMuX2NhbnZhc1NpemUuaGVpZ2h0KTtjb25zdCB0PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fY2xvY2suZ2V0RGVsdGEoKTt0aGlzLl9jYW1lcmFDb250cm9scy51cGRhdGUoZSksdGhpcy5fYW5pbWF0aW9uRnJhbWVJbmRleD1yZXF1ZXN0QW5pbWF0aW9uRnJhbWUodCksdGhpcy5fcmVuZGVyZXIucmVuZGVyKHRoaXMuX3NjZW5lLHRoaXMuX2NhbWVyYSl9LmJpbmQodGhpcyk7dCgpfXVwZGF0ZVNjZW5lKHQsZSl7bGV0IG49e307ImNvbmZpZyJpbiB0JiZ0LmNvbmZpZyYmKG49SlNPTi5wYXJzZSh0LmNvbmZpZykpLHRoaXMuZGlzcGF0Y2hFdmVudCh7dHlwZToiYmVmb3JlVXBkYXRlU2NlbmUifSk7bj10aGlzLl9hcHBseURlZmF1bHRzKG4se2NhbWVyYTp7Y2xzOiJQZXJzcGVjdGl2ZUNhbWVyYSIsZm92Ojc1LG5lYXI6LjEsZmFyOjFlM30sbGlnaHRzOlt7Y2xzOiJBbWJpZW50TGlnaHQiLGNvbG9yOiIjZmZmZmZmIixpbnRlbnNpdHk6Ljc1fSx7Y2xzOiJEaXJlY3Rpb25hbExpZ2h0Iixjb2xvcjoiI2ZmZmZmZiIsaW50ZW5zaXR5Oi43NSxwb3NpdGlvbjpbMCwtMSwyXX1dfSksdGhpcy5fY3JlYXRlV29ybGQobixlKSx0aGlzLl9jbGVhclNjZW5lKCksdGhpcy5fY3JlYXRlTGlnaHRzKHRoaXMuX3NjZW5lLG4pLHRoaXMuX2NyZWF0ZUdlb21ldHJ5KHQsbiksdGhpcy5fY3JlYXRlTGF5ZXJzKCksdGhpcy5kcmF3KCl9cmVzZXRWaWV3KHQpe2lmKCF0aGlzLmlzUmVhZHkoKSlyZXR1cm47bGV0IGU7dGhpcy5fY2FtZXJhQ29udHJvbHMucmVzZXQoKSwhdCYmdGhpcy5fbGFzdE1lc2gmJihlPXRoaXMuX2xhc3RNZXNoKSxlJiYodGhpcy5fZml0T2JqZWN0VG9WaWV3cG9ydChlKSx0aGlzLl9sYXN0TWVzaD1lKSx0aGlzLl9jYW1lcmFDb250cm9scy51cGRhdGUoKX1fY3JlYXRlR2VvbWV0cnkodCxlKXtjb25zdCBuPXQubWVzaDtuLnZlcnRpY2VzJiZuLmZhY2VzJiZuLmZhY2VzLmxlbmd0aD90aGlzLl9jcmVhdGVNZXNoKG4sZSk6dGhpcy5fY3JlYXRlUG9pbnRDbG91ZChuLGUpfV9jcmVhdGVQb2ludENsb3VkKHQsZSl7Y29uc3Qgbj10LnZlcnRpY2VzLGk9dC5jb2xvcnM7bGV0IHI9e21hdGVyaWFsOntjbHM6IlBvaW50c01hdGVyaWFsIixzaXplOi4wMDV9fTtpJiZpLmxlbmd0aD09bi5sZW5ndGg/ci5tYXRlcmlhbC52ZXJ0ZXhDb2xvcnM9ITA6ci5tYXRlcmlhbC5jb2xvcj10aGlzLl9ydW5Db2xvcjtjb25zdCBvPXRoaXMuX2FwcGx5RGVmYXVsdHMoZSxyKSxhPW5ldyBONHQscz1uZXcgRmxvYXQzMkFycmF5KG4uZmxhdCgpKTtpZihhLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBoNHQocywzKSksaSYmaS5sZW5ndGg9PW4ubGVuZ3RoKXtjb25zdCB0PW5ldyBGbG9hdDMyQXJyYXkoaS5mbGF0KCkpO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKXRbZV09dFtlXS8yNTU7YS5zZXRBdHRyaWJ1dGUoImNvbG9yIixuZXcgaDR0KHQsMykpfXZhciBsPW5ldyBtcmVbby5tYXRlcmlhbC5jbHNdKG8ubWF0ZXJpYWwpLGM9bmV3IHV0ZShhLGwpO3RoaXMuX3NjZW5lLmFkZChjKSx0aGlzLl9sYXN0TWVzaD1jfXNldENhbWVyYVZpZXdwb2ludCh0LGUsbil7dGhpcy5fc2lsZW50PSEwLHRoaXMuX2NhbWVyYS5mYXI9ZSx0aGlzLl9jYW1lcmEucG9zaXRpb24uc2V0KHQueCx0LnksdC56KSx0aGlzLl9jYW1lcmEubG9va0F0KG4uY2xvbmUoKSksdGhpcy5fY2FtZXJhLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKSx0aGlzLl9jYW1lcmFDb250cm9scy50YXJnZXQ9bi5jbG9uZSgpLHRoaXMuX2NhbWVyYUNvbnRyb2xzLnVwZGF0ZSgpLHRoaXMuX3NpbGVudD0hMX1fb25DYW1lcmFQb3NpdGlvbkNoYW5nZSh0KXt0aGlzLl9zaWxlbnR8fHRoaXMuZGlzcGF0Y2hFdmVudCh7dHlwZToiY2FtZXJhUG9zaXRpb25DaGFuZ2UiLGV2ZW50OnR9KX1fZml0T2JqZWN0VG9WaWV3cG9ydCh0KXt2YXIgZSxuO2NvbnN0IGk9bmV3IFU1dCxyPW5ldyBINXQsbz1uZXcgSDV0O2kuc2V0RnJvbU9iamVjdCh0KSxpLmdldENlbnRlcihyKSxpLmdldFNpemUobyk7Y29uc3QgYT1NYXRoLm1heChvLngsby55LG8ueikscz10aGlzLl9jYW1lcmEuZm92KihNYXRoLlBJLzE4MCk7bGV0IGw9MS4yNSpNYXRoLmFicyhhLygyKk1hdGgudGFuKHMvMikpKTtjb25zdCBjPWkubWluLnosdT1jPDA/LWMrbDpsLWMsaD1udWxsIT09KGU9dGhpcy5pbml0Q2FtZXJhUG9zaXRpb24pJiZ2b2lkIDAhPT1lP2U6bmV3IEg1dChyLngsci55LGwpLGQ9bnVsbCE9PShuPXRoaXMuaW5pdENhbWVyYUxvb2tBdCkmJnZvaWQgMCE9PW4/bjpyO3RoaXMuc2V0Q2FtZXJhVmlld3BvaW50KGgsMyp1LGQpfV9jcmVhdGVNZXNoKHQsZSl7Y29uc3Qgbj10LnZlcnRpY2VzLGk9dC5mYWNlcyxyPXQuY29sb3JzLG89dGhpcy5fYXBwbHlEZWZhdWx0cyhlLHttYXRlcmlhbDp7Y2xzOiJNZXNoU3RhbmRhcmRNYXRlcmlhbCIsY29sb3I6IiNhMGEwYTAiLHJvdWdobmVzczoxLG1ldGFsbmVzczowfX0pLGE9bmV3IE40dCxzPW5ldyBGbG9hdDMyQXJyYXkobi5mbGF0KCkpO2Euc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IGg0dChzLDMpKTtjb25zdCBsPW5ldyBVaW50MTZBcnJheShpLmZsYXQoKSk7aWYociYmci5sZW5ndGgpe2NvbnN0IHQ9ci5mbGF0KCk7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspdFtlXT10W2VdLzI1NTthLnNldEF0dHJpYnV0ZSgiY29sb3IiLG5ldyBoNHQobmV3IEZsb2F0MzJBcnJheSh0KSwzKSksby5tYXRlcmlhbD1vLm1hdGVyaWFsfHx7fSxvLm1hdGVyaWFsLnZlcnRleENvbG9ycz0hMH1hLmNlbnRlcigpLGEuY29tcHV0ZUJvdW5kaW5nU3BoZXJlKCksYS5zZXRJbmRleChuZXcgaDR0KGwsMSkpLGEuY29tcHV0ZVZlcnRleE5vcm1hbHMoKTtsZXQgYz1uZXcgbXJlW28ubWF0ZXJpYWwuY2xzXShvLm1hdGVyaWFsKSx1PW5ldyBLNHQoYSxjKTt1LmNhc3RTaGFkb3c9ITAsdS5yZWNlaXZlU2hhZG93PSEwLHRoaXMuX3NjZW5lLmFkZCh1KSx0aGlzLl9sYXN0TWVzaD11fV9jcmVhdGVMaWdodHModCxlKXtmb3IobGV0IG49MDtuPGUubGlnaHRzLmxlbmd0aDtuKyspe2NvbnN0IGk9ZS5saWdodHNbbl07bGV0IHI9bmV3IG1yZVtpLmNsc10oaS5jb2xvcixpLmludGVuc2l0eSk7aS5wb3NpdGlvbiYmci5wb3NpdGlvbi5zZXQoaS5wb3NpdGlvblswXSxpLnBvc2l0aW9uWzFdLGkucG9zaXRpb25bMl0pLHQuYWRkKHIpfX19bGV0IEtyZT1jbGFzcyBleHRlbmRzKGNyKHdlKSl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuc2VsZWN0ZWRWaWV3PSJhbGwiLHRoaXMuYWN0aXZlPSExLHRoaXMuX2NvbG9yU2NhbGVGdW5jdGlvbj1fTyx0aGlzLl9zdGVwcz1bXSx0aGlzLl9tZXNoVmlld2VyQXR0YWNoZWQ9ITEsdGhpcy5fY2FtZXJhUG9zaXRpb25Jbml0aWFsaXplZD0hMSx0aGlzLl9pc01lc2hMb2FkaW5nPSExfWdldCBfcnVuQ29sb3IoKXtyZXR1cm4gdGhpcy5fY29sb3JTY2FsZUZ1bmN0aW9uKHRoaXMucnVuKX1jb25uZWN0ZWRDYWxsYmFjaygpe3N1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCksdGhpcy5fZGF0YVByb3ZpZGVyPW5ldyAkMHQodGhpcy5yZXF1ZXN0TWFuYWdlcik7Y29uc3QgdD1uZXcgJHJlKHRoaXMuX3J1bkNvbG9yKTt0LmFkZEV2ZW50TGlzdGVuZXIoImJlZm9yZVVwZGF0ZVNjZW5lIix0aGlzLl91cGRhdGVDYW52YXNTaXplLmJpbmQodGhpcykpLHQuYWRkRXZlbnRMaXN0ZW5lcigiY2FtZXJhUG9zaXRpb25DaGFuZ2UiLHRoaXMuX29uQ2FtZXJhUG9zaXRpb25DaGFuZ2UuYmluZCh0aGlzKSksdGhpcy5fbWVzaFZpZXdlcj10fXJlbG9hZCgpe3RoaXMuYWN0aXZlJiZ0aGlzLl9kYXRhUHJvdmlkZXImJih0aGlzLl9pc01lc2hMb2FkaW5nPSEwLHRoaXMuX2RhdGFQcm92aWRlci5yZWxvYWQodGhpcy5ydW4sdGhpcy50YWcsdGhpcy5zYW1wbGUpLnRoZW4oKHQ9Pnt0JiYodGhpcy5fc3RlcHM9dCx0aGlzLl9zdGVwSW5kZXg9dC5sZW5ndGgtMSl9KSkuY2F0Y2goKHQ9PntpZighdHx8IXQuY29kZXx8dC5jb2RlIT1xMHQuQ0FOQ0VMTEVEKXRocm93IHQ9dHx8IlJlc3BvbnNlIHByb2Nlc3NpbmcgZmFpbGVkLiIsbmV3IEVycm9yKHQpfSkpKX1fdXBkYXRlU2NlbmUoKXtjb25zdCB0PXRoaXMuX2N1cnJlbnRTdGVwO3QmJnQubWVzaCYmKHRoaXMuX21lc2hWaWV3ZXIudXBkYXRlU2NlbmUodCx0aGlzKSx0aGlzLl9jYW1lcmFQb3NpdGlvbkluaXRpYWxpemVkfHwodGhpcy5fbWVzaFZpZXdlci5yZXNldFZpZXcoKSx0aGlzLl9jYW1lcmFQb3NpdGlvbkluaXRpYWxpemVkPSEwKSx0aGlzLl9tZXNoVmlld2VyQXR0YWNoZWR8fCh0aGlzLnNoYWRvd1Jvb3QuYXBwZW5kQ2hpbGQodGhpcy5fbWVzaFZpZXdlci5nZXRSZW5kZXJlcigpLmRvbUVsZW1lbnQpLHRoaXMuX21lc2hWaWV3ZXJBdHRhY2hlZD0hMCkpfV9kZWJvdW5jZWRGZXRjaE1lc2goKXt0aGlzLmRlYm91bmNlKCJmZXRjaE1lc2giLCgoKT0+dGhpcy5fbWF5YmVGZXRjaE1lc2goKSksMTAwKX1fbWF5YmVGZXRjaE1lc2goKXtyZXR1cm4gbih0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKigpe2NvbnN0IHQ9dGhpcy5fY3VycmVudFN0ZXA7aWYodCYmIXQubWVzaCYmIXQubWVzaEZldGNoaW5nKXt0Lm1lc2hGZXRjaGluZz0hMCx0aGlzLl9pc01lc2hMb2FkaW5nPSEwO3RyeXtjb25zdCBlPXlpZWxkIHRoaXMuX2RhdGFQcm92aWRlci5mZXRjaERhdGEodCx0aGlzLnJ1bix0aGlzLnRhZyx0aGlzLnNhbXBsZSk7dC5tZXNoPWVbMF0sdGhpcy5ub3RpZnlQYXRoKCJfY3VycmVudFN0ZXAubWVzaCIpfWNhdGNoKHQpe2lmKCF0fHwhdC5jb2RlfHx0LmNvZGUhPXEwdC5DQU5DRUxMRUQpdGhyb3cgdD10fHwiUmVzcG9uc2UgcHJvY2Vzc2luZyBmYWlsZWQuIixuZXcgRXJyb3IodCl9ZmluYWxseXt0aGlzLl9pc01lc2hMb2FkaW5nPSExLHQubWVzaEZldGNoaW5nPSExfX19KSl9X29uQ2FtZXJhUG9zaXRpb25DaGFuZ2UoKXtpZighdGhpcy5fbWVzaFZpZXdlci5pc1JlYWR5KCkpcmV0dXJuO2NvbnN0IHQ9bmV3IEN1c3RvbUV2ZW50KCJjYW1lcmEtcG9zaXRpb24tY2hhbmdlIix7ZGV0YWlsOnRoaXMuX21lc2hWaWV3ZXIuZ2V0Q2FtZXJhUG9zaXRpb24oKX0pO3RoaXMuZGlzcGF0Y2hFdmVudCh0KX1zZXRDYW1lcmFWaWV3cG9pbnQodCxlLG4pe3RoaXMuX21lc2hWaWV3ZXIuc2V0Q2FtZXJhVmlld3BvaW50KHQsZSxuKX1fdXBkYXRlQ2FudmFzU2l6ZSgpe2NvbnN0IHQ9dGhpcy5vZmZzZXRXaWR0aCxlPXQsbj10aGlzLiQkKCIudGYtbWVzaC1sb2FkZXItaGVhZGVyIikub2Zmc2V0SGVpZ2h0O3RoaXMuX21lc2hWaWV3ZXIuc2V0Q2FudmFzU2l6ZSh7d2lkdGg6dCxoZWlnaHQ6ZS1ufSl9cmVkcmF3KCl7dGhpcy5fdXBkYXRlQ2FudmFzU2l6ZSgpLHRoaXMuaXNDb25uZWN0ZWQmJnRoaXMuX21lc2hWaWV3ZXIuZHJhdygpfV9oYXNBdExlYXN0T25lU3RlcCh0KXtyZXR1cm4hIXQmJnQubGVuZ3RoPjB9X2hhc011bHRpcGxlU3RlcHModCl7cmV0dXJuISF0JiZ0Lmxlbmd0aD4xfWdldCBfY3VycmVudFN0ZXAoKXtyZXR1cm4gdGhpcy5fc3RlcHNbdGhpcy5fc3RlcEluZGV4XXx8bnVsbH1nZXQgX3N0ZXBWYWx1ZSgpe2NvbnN0IHQ9dGhpcy5fY3VycmVudFN0ZXA7cmV0dXJuIHQ/dC5zdGVwOjB9Z2V0IF9jdXJyZW50V2FsbFRpbWUoKXtjb25zdCB0PXRoaXMuX2N1cnJlbnRTdGVwO3JldHVybiB0P1NPKHQud2FsbF90aW1lKToiIn1fZ2V0TWF4U3RlcEluZGV4KHQpe3JldHVybiB0Lmxlbmd0aC0xfV9nZXRTYW1wbGVUZXh0KHQpe3JldHVybiBTdHJpbmcodCsxKX1faGFzTXVsdGlwbGVTYW1wbGVzKHQpe3JldHVybiB0PjF9X3VwZGF0ZVZpZXcoKXt0aGlzLl9tZXNoVmlld2VyJiYiYWxsIj09dGhpcy5zZWxlY3RlZFZpZXcmJnRoaXMuX21lc2hWaWV3ZXIucmVzZXRWaWV3KCl9dG9Mb2NhbGVTdHJpbmdfKHQpe3JldHVybiB0LnRvTG9jYWxlU3RyaW5nKCl9fTtLcmUudGVtcGxhdGU9eGVgCiAgICA8dGYtY2FyZC1oZWFkaW5nIGNvbG9yPSJbW19ydW5Db2xvcl1dIiBjbGFzcz0idGYtbWVzaC1sb2FkZXItaGVhZGVyIj4KICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19oYXNNdWx0aXBsZVNhbXBsZXMob2ZTYW1wbGVzKV1dIj4KICAgICAgICA8ZGl2PnNhbXBsZTogW1tfZ2V0U2FtcGxlVGV4dChzYW1wbGUpXV0gb2YgW1tvZlNhbXBsZXNdXTwvZGl2PgogICAgICA8L3RlbXBsYXRlPgogICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2hhc0F0TGVhc3RPbmVTdGVwKF9zdGVwcyldXSI+CiAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGluZy1yb3ciPgogICAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGluZy1sYWJlbCI+CiAgICAgICAgICAgIHN0ZXAKICAgICAgICAgICAgPHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkIgogICAgICAgICAgICAgID5bW3RvTG9jYWxlU3RyaW5nXyhfc3RlcFZhbHVlKV1dPC9zcGFuCiAgICAgICAgICAgID4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGluZy1sYWJlbCBoZWFkaW5nLXJpZ2h0Ij4KICAgICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19jdXJyZW50V2FsbFRpbWVdXSI+CiAgICAgICAgICAgICAgW1tfY3VycmVudFdhbGxUaW1lXV0KICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ibGFiZWwgcmlnaHQiPgogICAgICAgICAgICA8cGFwZXItc3Bpbm5lci1saXRlIGFjdGl2ZSBoaWRkZW4kPSJbWyFfaXNNZXNoTG9hZGluZ11dIj4KICAgICAgICAgICAgPC9wYXBlci1zcGlubmVyLWxpdGU+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19oYXNNdWx0aXBsZVN0ZXBzKF9zdGVwcyldXSI+CiAgICAgICAgPGRpdj4KICAgICAgICAgIDxwYXBlci1zbGlkZXIKICAgICAgICAgICAgaWQ9InN0ZXBzIgogICAgICAgICAgICBpbW1lZGlhdGUtdmFsdWU9Int7X3N0ZXBJbmRleH19IgogICAgICAgICAgICBtYXg9IltbX2dldE1heFN0ZXBJbmRleChfc3RlcHMpXV0iCiAgICAgICAgICAgIG1heC1tYXJrZXJzPSJbW19nZXRNYXhTdGVwSW5kZXgoX3N0ZXBzKV1dIgogICAgICAgICAgICBzbmFwcwogICAgICAgICAgICBzdGVwPSIxIgogICAgICAgICAgICB2YWx1ZT0ie3tfc3RlcEluZGV4fX0iCiAgICAgICAgICA+PC9wYXBlci1zbGlkZXI+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvdGVtcGxhdGU+CiAgICA8L3RmLWNhcmQtaGVhZGluZz4KICAgIDxzdHlsZT4KICAgICAgcGFwZXItc2xpZGVyIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBtYXJnaW4tbGVmdDogMXB4OwogICAgICAgIG1hcmdpbi1yaWdodDogMXB4OwogICAgICB9CiAgICAgIC50Zi1tZXNoLWxvYWRlci1oZWFkZXIgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIGhlaWdodDogMTA1cHg7CiAgICAgIH0KICAgICAgW2hpZGRlbl0gewogICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYCx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxLcmUucHJvdG90eXBlLCJydW4iLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sS3JlLnByb3RvdHlwZSwidGFnIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLEtyZS5wcm90b3R5cGUsInNhbXBsZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxLcmUucHJvdG90eXBlLCJvZlNhbXBsZXMiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sS3JlLnByb3RvdHlwZSwic2VsZWN0ZWRWaWV3Iix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sS3JlLnByb3RvdHlwZSwiYWN0aXZlIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLGJyKV0sS3JlLnByb3RvdHlwZSwicmVxdWVzdE1hbmFnZXIiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsJHJlKV0sS3JlLnByb3RvdHlwZSwiX21lc2hWaWV3ZXIiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsJDB0KV0sS3JlLnByb3RvdHlwZSwiX2RhdGFQcm92aWRlciIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxLcmUucHJvdG90eXBlLCJfY29sb3JTY2FsZUZ1bmN0aW9uIix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXksbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sS3JlLnByb3RvdHlwZSwiX3N0ZXBzIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyLG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxLcmUucHJvdG90eXBlLCJfc3RlcEluZGV4Iix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sS3JlLnByb3RvdHlwZSwiX21lc2hWaWV3ZXJBdHRhY2hlZCIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLEtyZS5wcm90b3R5cGUsIl9jYW1lcmFQb3NpdGlvbkluaXRpYWxpemVkIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sS3JlLnByb3RvdHlwZSwiX2lzTWVzaExvYWRpbmciLHZvaWQgMCksdChbcygicnVuIiksZSgiZGVzaWduOnR5cGUiLFN0cmluZyksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sS3JlLnByb3RvdHlwZSwiX3J1bkNvbG9yIixudWxsKSx0KFthKCJydW4iLCJ0YWciLCJhY3RpdmUiLCJfZGF0YVByb3ZpZGVyIiwiX21lc2hWaWV3ZXIiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLEtyZS5wcm90b3R5cGUsInJlbG9hZCIsbnVsbCksdChbYSgiX2N1cnJlbnRTdGVwLioiLCJfbWVzaFZpZXdlciIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sS3JlLnByb3RvdHlwZSwiX3VwZGF0ZVNjZW5lIixudWxsKSx0KFthKCJfY3VycmVudFN0ZXAiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLEtyZS5wcm90b3R5cGUsIl9kZWJvdW5jZWRGZXRjaE1lc2giLG51bGwpLHQoW3MoIl9zdGVwcyIsIl9zdGVwSW5kZXgiKSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxLcmUucHJvdG90eXBlLCJfY3VycmVudFN0ZXAiLG51bGwpLHQoW3MoIl9jdXJyZW50U3RlcCIpLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLEtyZS5wcm90b3R5cGUsIl9zdGVwVmFsdWUiLG51bGwpLHQoW3MoIl9jdXJyZW50U3RlcCIpLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLEtyZS5wcm90b3R5cGUsIl9jdXJyZW50V2FsbFRpbWUiLG51bGwpLHQoW2EoInNlbGVjdGVkVmlldyIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sS3JlLnByb3RvdHlwZSwiX3VwZGF0ZVZpZXciLG51bGwpLEtyZT10KFtpKCJ0Zi1tZXNoLWxvYWRlciIpXSxLcmUpO2xldCBacmU9Y2xhc3MgZXh0ZW5kcyB3ZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy5yZWxvYWRPblJlYWR5PSEwLHRoaXMuX3RhZ0ZpbHRlcj0iLioiLHRoaXMuX3NlbGVjdGVkVmlldz0iYWxsIix0aGlzLl9yZXF1ZXN0TWFuYWdlcj1uZXcgYnIsd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsKCgpPT57dGhpcy5faGFuZGxlV2luZG93UmVzaXplKCl9KSwhMSksdGhpcy5yZWxvYWRPblJlYWR5JiZ0aGlzLnJlbG9hZCgpfV9nZXRBbGxDaGlsZHJlbigpe3JldHVybiBBcnJheS5mcm9tKHRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yQWxsKCJ0Zi1tZXNoLWxvYWRlciIpKX1fb25DYW1lcmFQb3NpdGlvbkNoYW5nZWQodCl7InNoYXJlIj09dGhpcy5fc2VsZWN0ZWRWaWV3JiZ0aGlzLl9nZXRBbGxDaGlsZHJlbigpLmZvckVhY2goKGU9Pnt0LnRhcmdldCE9ZSYmZS5zZXRDYW1lcmFWaWV3cG9pbnQodC5kZXRhaWwucG9zaXRpb24sdC5kZXRhaWwuZmFyLHQuZGV0YWlsLnRhcmdldCl9KSl9X3Nob3VsZE9wZW4odCl7cmV0dXJuIHQ8PTJ9cmVsb2FkKCl7dGhpcy5fZmV0Y2hUYWdzKCkudGhlbih0aGlzLl9yZWxvYWRNZXNoZXMuYmluZCh0aGlzKSl9X2hhbmRsZVdpbmRvd1Jlc2l6ZSgpe3RoaXMuX2dldEFsbENoaWxkcmVuKCkuZm9yRWFjaCgodD0+e3QucmVkcmF3KCl9KSl9X2ZldGNoVGFncygpe2NvbnN0IHQ9RXIoKS5wbHVnaW5Sb3V0ZSgibWVzaCIsIi90YWdzIik7cmV0dXJuIHRoaXMuX3JlcXVlc3RNYW5hZ2VyLnJlcXVlc3QodCkudGhlbigodD0+e2lmKENlLmV4cG9ydHMuaXNFcXVhbCh0LHRoaXMuX3J1blRvVGFnSW5mbykpcmV0dXJuO2NvbnN0IGU9ZnIoQ2UuZXhwb3J0cy5tYXBWYWx1ZXModCwodD0+T2JqZWN0LmtleXModCkpKSk7dGhpcy5fZGF0YU5vdEZvdW5kPTA9PT1lLmxlbmd0aCx0aGlzLl9ydW5Ub1RhZ0luZm89dH0pKX1fcmVsb2FkTWVzaGVzKCl7dGhpcy5fZ2V0QWxsQ2hpbGRyZW4oKS5mb3JFYWNoKCh0PT57dC5yZWxvYWQoKX0pKX1nZXQgX2NhdGVnb3JpZXMoKXt2YXIgdD10aGlzLl9ydW5Ub1RhZ0luZm8sZT10aGlzLl9zZWxlY3RlZFJ1bnMsbj10aGlzLl90YWdGaWx0ZXI7ZnVuY3Rpb24gaShlKXtjb25zdCBuPXRbZS5ydW5dW2UudGFnXS5zYW1wbGVzO3JldHVybiBDZS5leHBvcnRzLnJhbmdlKG4pLm1hcCgodD0+T2JqZWN0LmFzc2lnbih7fSxlLHtzYW1wbGU6dCxvZlNhbXBsZXM6bn0pKSl9cmV0dXJuIElyKENlLmV4cG9ydHMubWFwVmFsdWVzKHQsKHQ9Pk9iamVjdC5rZXlzKHQpKSksZSxuKS5tYXAoKHQ9Pk9iamVjdC5hc3NpZ24oe30sdCx7aXRlbXM6W10uY29uY2F0LmFwcGx5KFtdLHQuaXRlbXMubWFwKGkpKX0pKSl9fTtacmUudGVtcGxhdGU9eGVgCiAgICA8dGYtZGFzaGJvYXJkLWxheW91dD4KICAgICAgPGRpdiBzbG90PSJzaWRlYmFyIiBjbGFzcz0iYWxsLWNvbnRyb2xzIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZXR0aW5ncyI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyLXNlY3Rpb24gdmlldy1jb250cm9sIj4KICAgICAgICAgICAgPGgzIGNsYXNzPSJ0aXRsZSI+UG9pbnQgb2YgdmlldzwvaDM+CiAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgPHBhcGVyLXJhZGlvLWdyb3VwCiAgICAgICAgICAgICAgICBpZD0idmlldy1yYWRpby1ncm91cCIKICAgICAgICAgICAgICAgIHNlbGVjdGVkPSJ7e19zZWxlY3RlZFZpZXd9fSIKICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICA8cGFwZXItcmFkaW8tYnV0dG9uIGlkPSJhbGwtcmFkaW8tYnV0dG9uIiBuYW1lPSJhbGwiPgogICAgICAgICAgICAgICAgICBEaXNwbGF5IGFsbCBwb2ludHMKICAgICAgICAgICAgICAgIDwvcGFwZXItcmFkaW8tYnV0dG9uPgogICAgICAgICAgICAgICAgPHBhcGVyLXRvb2x0aXAKICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uLWRlbGF5PSIwIgogICAgICAgICAgICAgICAgICBmb3I9ImFsbC1yYWRpby1idXR0b24iCiAgICAgICAgICAgICAgICAgIHBvc2l0aW9uPSJyaWdodCIKICAgICAgICAgICAgICAgICAgb2Zmc2V0PSIwIgogICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICBab29tIGFuZCBjZW50ZXIgY2FtZXJhIHRvIGRpc3BsYXkgYWxsIHBvaW50cyBhdCBvbmNlLiBOb3RlLAogICAgICAgICAgICAgICAgICB0aGF0IHNvbWUgcG9pbnRzIGNvdWxkIGJlIHRvbyBmYXIgKGkuZS4gdG9vIHNtYWxsKSB0byBiZQogICAgICAgICAgICAgICAgICB2aXNpYmxlLgogICAgICAgICAgICAgICAgPC9wYXBlci10b29sdGlwPgogICAgICAgICAgICAgICAgPHBhcGVyLXJhZGlvLWJ1dHRvbiBpZD0idXNlci1yYWRpby1idXR0b24iIG5hbWU9InVzZXIiPgogICAgICAgICAgICAgICAgICBDdXJyZW50IHZpZXcKICAgICAgICAgICAgICAgIDwvcGFwZXItcmFkaW8tYnV0dG9uPgogICAgICAgICAgICAgICAgPHBhcGVyLXRvb2x0aXAKICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uLWRlbGF5PSIwIgogICAgICAgICAgICAgICAgICBmb3I9InVzZXItcmFkaW8tYnV0dG9uIgogICAgICAgICAgICAgICAgICBwb3NpdGlvbj0icmlnaHQiCiAgICAgICAgICAgICAgICAgIG9mZnNldD0iMCIKICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgS2VlcCBjdXJyZW50IGNhbWVyYSBwb3NpdGlvbiBhbmQgem9vbSBsZXZlbC4KICAgICAgICAgICAgICAgIDwvcGFwZXItdG9vbHRpcD4KICAgICAgICAgICAgICAgIDxwYXBlci1yYWRpby1idXR0b24gaWQ9InNoYXJlLXJhZGlvLWJ1dHRvbiIgbmFtZT0ic2hhcmUiPgogICAgICAgICAgICAgICAgICBTaGFyZSB2aWV3cG9pbnQKICAgICAgICAgICAgICAgIDwvcGFwZXItcmFkaW8tYnV0dG9uPgogICAgICAgICAgICAgICAgPHBhcGVyLXRvb2x0aXAKICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uLWRlbGF5PSIwIgogICAgICAgICAgICAgICAgICBmb3I9InNoYXJlLXJhZGlvLWJ1dHRvbiIKICAgICAgICAgICAgICAgICAgcG9zaXRpb249InJpZ2h0IgogICAgICAgICAgICAgICAgICBvZmZzZXQ9IjAiCiAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgIFNoYXJlIHZpZXdwb2ludCBhbW9uZyBhbGwgY2FtZXJhcy4KICAgICAgICAgICAgICAgIDwvcGFwZXItdG9vbHRpcD4KICAgICAgICAgICAgICA8L3BhcGVyLXJhZGlvLWdyb3VwPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNpZGViYXItc2VjdGlvbiBydW5zLXNlbGVjdG9yIj4KICAgICAgICAgIDx0Zi1ydW5zLXNlbGVjdG9yIHNlbGVjdGVkLXJ1bnM9Int7X3NlbGVjdGVkUnVuc319Ij4KICAgICAgICAgIDwvdGYtcnVucy1zZWxlY3Rvcj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgc2xvdD0iY2VudGVyIj4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2RhdGFOb3RGb3VuZF1dIj4KICAgICAgICAgIDxkaXYgY2xhc3M9Im5vLWRhdGEtd2FybmluZyI+CiAgICAgICAgICAgIDxoMz5ObyBwb2ludCBjbG91ZCBkYXRhIHdhcyBmb3VuZC48L2gzPgogICAgICAgICAgICA8cD5Qcm9iYWJsZSBjYXVzZXM6PC9wPgogICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgWW91IGhhdmVu4oCZdCB3cml0dGVuIGFueSBwb2ludCBjbG91ZCBkYXRhIHRvIHlvdXIgZXZlbnQgZmlsZXMuCiAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICA8bGk+VGVuc29yQm9hcmQgY2Fu4oCZdCBmaW5kIHlvdXIgZXZlbnQgZmlsZXMuPC9saT4KICAgICAgICAgICAgPC91bD4KCiAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgIElmIHlvdeKAmXJlIG5ldyB0byB1c2luZyBUZW5zb3JCb2FyZCwgYW5kIHdhbnQgdG8gZmluZCBvdXQgaG93IHRvCiAgICAgICAgICAgICAgYWRkIGRhdGEgYW5kIHNldCB1cCB5b3VyIGV2ZW50IGZpbGVzLCBjaGVjayBvdXQgdGhlCiAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmJvYXJkL2Jsb2IvbWFzdGVyL1JFQURNRS5tZCIKICAgICAgICAgICAgICAgID5SRUFETUU8L2EKICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgYW5kIHBlcmhhcHMgdGhlCiAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vd3d3LnRlbnNvcmZsb3cub3JnL2dldF9zdGFydGVkL3N1bW1hcmllc19hbmRfdGVuc29yYm9hcmQiCiAgICAgICAgICAgICAgICA+VGVuc29yQm9hcmQgdHV0b3JpYWw8L2EKICAgICAgICAgICAgICA+LgogICAgICAgICAgICA8L3A+CgogICAgICAgICAgICA8cD4KICAgICAgICAgICAgICBJZiB5b3UgdGhpbmsgVGVuc29yQm9hcmQgaXMgY29uZmlndXJlZCBwcm9wZXJseSwgcGxlYXNlIHNlZQogICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vdGVuc29yZmxvdy90ZW5zb3Jib2FyZC9ibG9iL21hc3Rlci9SRUFETUUubWQjbXktdGVuc29yYm9hcmQtaXNudC1zaG93aW5nLWFueS1kYXRhLXdoYXRzLXdyb25nIgogICAgICAgICAgICAgICAgPnRoZSBzZWN0aW9uIG9mIHRoZSBSRUFETUUgZGV2b3RlZCB0byBtaXNzaW5nIGRhdGEgcHJvYmxlbXM8L2EKICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgYW5kIGNvbnNpZGVyIGZpbGluZyBhbiBpc3N1ZSBvbiBHaXRIdWIuCiAgICAgICAgICAgIDwvcD4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbWyFfZGF0YU5vdEZvdW5kXV0iPgogICAgICAgICAgPHRmLXRhZy1maWx0ZXJlciB0YWctZmlsdGVyPSJ7e190YWdGaWx0ZXJ9fSI+PC90Zi10YWctZmlsdGVyZXI+CiAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1yZXBlYXQiIGl0ZW1zPSJbW19jYXRlZ29yaWVzXV0iIGFzPSJjYXRlZ29yeSI+CiAgICAgICAgICAgIDx0Zi1jYXRlZ29yeS1wYWdpbmF0ZWQtdmlldwogICAgICAgICAgICAgIGNhdGVnb3J5PSJbW2NhdGVnb3J5XV0iCiAgICAgICAgICAgICAgaW5pdGlhbC1vcGVuZWQ9IltbX3Nob3VsZE9wZW4oaW5kZXgpXV0iCiAgICAgICAgICAgID4KICAgICAgICAgICAgICA8dGVtcGxhdGU+CiAgICAgICAgICAgICAgICA8dGYtbWVzaC1sb2FkZXIKICAgICAgICAgICAgICAgICAgYWN0aXZlPSJbW2FjdGl2ZV1dIgogICAgICAgICAgICAgICAgICBzZWxlY3RlZC12aWV3PSJbW19zZWxlY3RlZFZpZXddXSIKICAgICAgICAgICAgICAgICAgcnVuPSJbW2l0ZW0ucnVuXV0iCiAgICAgICAgICAgICAgICAgIHRhZz0iW1tpdGVtLnRhZ11dIgogICAgICAgICAgICAgICAgICBzYW1wbGU9IltbaXRlbS5zYW1wbGVdXSIKICAgICAgICAgICAgICAgICAgb2Ytc2FtcGxlcz0iW1tpdGVtLm9mU2FtcGxlc11dIgogICAgICAgICAgICAgICAgICByZXF1ZXN0LW1hbmFnZXI9IltbX3JlcXVlc3RNYW5hZ2VyXV0iCiAgICAgICAgICAgICAgICAgIGNsYXNzPSJ0Zi1tZXNoLWxvYWRlci1jb250YWluZXIiCiAgICAgICAgICAgICAgICAgIG9uLWNhbWVyYS1wb3NpdGlvbi1jaGFuZ2U9Il9vbkNhbWVyYVBvc2l0aW9uQ2hhbmdlZCIKICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgIDwvdGYtbWVzaC1sb2FkZXI+CiAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgPC90Zi1jYXRlZ29yeS1wYWdpbmF0ZWQtdmlldz4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPC9kaXY+CiAgICA8L3RmLWRhc2hib2FyZC1sYXlvdXQ+CgogICAgPHN0eWxlIGluY2x1ZGU9ImRhc2hib2FyZC1zdHlsZSI+PC9zdHlsZT4KICAgIDxzdHlsZT4KICAgICAgLm5vLWRhdGEtd2FybmluZyB7CiAgICAgICAgbWF4LXdpZHRoOiA1NDBweDsKICAgICAgICBtYXJnaW46IDgwcHggYXV0byAwIGF1dG87CiAgICAgIH0KICAgICAgcGFwZXItcmFkaW8tYnV0dG9uIHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBwYWRkaW5nOiA1cHg7CiAgICAgIH0KICAgICAgLnNpZGViYXItc2VjdGlvbiBoMyB7CiAgICAgICAgbWFyZ2luOiAwOwogICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIG1hcmdpbi1ib3R0b206IDVweDsKICAgICAgfQoKICAgICAgLnJ1bnMtc2VsZWN0b3IgewogICAgICAgIGZsZXgtZ3JvdzogMTsKICAgICAgfQoKICAgICAgdGYtcnVucy1zZWxlY3RvciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgfQoKICAgICAgLnZpZXctY29udHJvbCB7CiAgICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICAgICAgfQoKICAgICAgLnZpZXctY29udHJvbCBoMy50aXRsZSB7CiAgICAgICAgcGFkZGluZy10b3A6IDE2cHg7CiAgICAgICAgcGFkZGluZy1ib3R0b206IDE2cHg7CiAgICAgIH0KCiAgICAgIC5hbGxjb250cm9scyAudmlldy1jb250cm9sIHBhcGVyLXJhZGlvLWdyb3VwIHsKICAgICAgICBtYXJnaW4tdG9wOiA1cHg7CiAgICAgIH0KICAgICAgLyogTGF5b3V0IG11c3QgYmUgaG9yaXpvbnRhbCwgaS5lLiBpdGVtcyBhcnJhbmdlZCBpbiBhIHJvdy4gSWYgaXRlbXMgY2Fubm90IGZpdCBpbiBhIHJvdywKICAgICAgICogdGhleSBzaG91bGQgYmUgbW92ZWQgdG8gbmV4dCBsaW5lLiBBbGwgaXRlbXMgbXVzdCBiZSBzcXVhcmUgYXQgYWxsIHRpbWVzLiBNaW5pbXVtIHNpemUgb2YKICAgICAgICogdGhlIGl0ZW0gaXMgNDgwcHguIFRoaXMgbWVhbnMgdGhhdCBtYXhpbXVtIHNpemUgb2YgdGhlIGl0ZW0gbXVzdCBiZSA0ODBweCArIDQ3OXB4ID0gOTU5cHguCiAgICAgICAqICovCiAgICAgIC5ob3Jpem9udGFsIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAgICAgZmxleC13cmFwOiB3cmFwOwogICAgICB9CiAgICAgIHRmLW1lc2gtbG9hZGVyIHsKICAgICAgICB3aWR0aDogNDgwcHg7CiAgICAgICAgZmxleC1iYXNpczogNDgwcHg7CiAgICAgICAgZmxleC1ncm93OiAxOwogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CiAgICA8L3N0eWxlPgogIGAsdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxacmUucHJvdG90eXBlLCJyZWxvYWRPblJlYWR5Iix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxacmUucHJvdG90eXBlLCJfc2VsZWN0ZWRSdW5zIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLFpyZS5wcm90b3R5cGUsIl9ydW5Ub1RhZ0luZm8iLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxacmUucHJvdG90eXBlLCJfZGF0YU5vdEZvdW5kIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLFpyZS5wcm90b3R5cGUsIl90YWdGaWx0ZXIiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmcsbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLFpyZS5wcm90b3R5cGUsIl9zZWxlY3RlZFZpZXciLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sWnJlLnByb3RvdHlwZSwiX3JlcXVlc3RNYW5hZ2VyIix2b2lkIDApLHQoW3MoIl9ydW5Ub1RhZ0luZm8iLCJfc2VsZWN0ZWRSdW5zIiwiX3RhZ0ZpbHRlciIpLGUoImRlc2lnbjp0eXBlIixBcnJheSksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sWnJlLnByb3RvdHlwZSwiX2NhdGVnb3JpZXMiLG51bGwpLFpyZT10KFtpKCJtZXNoLWRhc2hib2FyZCIpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLFpyZSk7bGV0IEpyZT1jbGFzcyBleHRlbmRzKGNyKHdlKSl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuX2luc3RhbGxDb21tYW5kPSJwaXAgaW5zdGFsbCAtVSB0ZW5zb3Jib2FyZC1wbHVnaW4tcHJvZmlsZSJ9X2NvcHlJbnN0YWxsQ29tbWFuZCgpe3JldHVybiBuKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24qKCl7Y29uc3QgdD0oKT0+bih0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKigpe3RoaXMuJC5jb21tYW5kVGV4dGFyZWEuc2VsZWN0KCk7dHJ5e3lpZWxkIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHRoaXMuX2luc3RhbGxDb21tYW5kKX1jYXRjaCh0KXtpZighZG9jdW1lbnQuZXhlY0NvbW1hbmQoImNvcHkiKSlyZXR1cm4gUHJvbWlzZS5yZWplY3QoKX19KSksZT10aGlzLiQuY29waWVkTWVzc2FnZTt0cnl7eWllbGQgdCgpLGUuaW5uZXJUZXh0PSJDb3BpZWQuIn1jYXRjaCh0KXtlLmlubmVyVGV4dD0iRmFpbGVkIHRvIGNvcHkgdG8gY2xpcGJvYXJkLiJ9fSkpfV9yZW1vdmVDb3BpZWRNZXNzYWdlKCl7dGhpcy4kLmNvcGllZE1lc3NhZ2UuaW5uZXJUZXh0PSIifX07SnJlLnRlbXBsYXRlPXhlYAogICAgPGRpdiBjbGFzcz0ibWVzc2FnZSI+CiAgICAgIDxoMz5UaGUgcHJvZmlsZSBwbHVnaW4gaGFzIG1vdmVkLjwvaDM+CiAgICAgIDxwPgogICAgICAgIFBsZWFzZSBpbnN0YWxsIHRoZSBuZXcgdmVyc2lvbiBvZiB0aGUgcHJvZmlsZSBwbHVnaW4gZnJvbSBQeVBJIGJ5CiAgICAgICAgcnVubmluZyB0aGUgZm9sbG93aW5nIGNvbW1hbmQgZnJvbSB0aGUgbWFjaGluZSBydW5uaW5nIFRlbnNvckJvYXJkOgogICAgICA8L3A+CiAgICAgIDx0ZXh0YXJlYQogICAgICAgIGlkPSJjb21tYW5kVGV4dGFyZWEiCiAgICAgICAgcmVhZG9ubHk9IiIKICAgICAgICByb3dzPSIxIgogICAgICAgIG9uLWJsdXI9Il9yZW1vdmVDb3BpZWRNZXNzYWdlIgogICAgICA+CltbX2luc3RhbGxDb21tYW5kXV08L3RleHRhcmVhCiAgICAgID4KICAgICAgPGRpdiBpZD0iY29weUNvbnRhaW5lciI+CiAgICAgICAgPHNwYW4gaWQ9ImNvcGllZE1lc3NhZ2UiPjwvc3Bhbj4KICAgICAgICA8cGFwZXItYnV0dG9uIHJhaXNlZD0iIiBvbi10YXA9Il9jb3B5SW5zdGFsbENvbW1hbmQiCiAgICAgICAgICA+Q29weSB0byBjbGlwYm9hcmQ8L3BhcGVyLWJ1dHRvbgogICAgICAgID4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICB9CgogICAgICAubWVzc2FnZSB7CiAgICAgICAgbWFyZ2luOiA4MHB4IGF1dG8gMCBhdXRvOwogICAgICAgIG1heC13aWR0aDogNTQwcHg7CiAgICAgIH0KICAgICAgI2NvbW1hbmRUZXh0YXJlYSB7CiAgICAgICAgbWFyZ2luLXRvcDogMWV4OwogICAgICAgIHBhZGRpbmc6IDFleCAxZW07CiAgICAgICAgcmVzaXplOiB2ZXJ0aWNhbDsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgfQogICAgICAjY29weUNvbnRhaW5lciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgfQogICAgICAjY29waWVkTWVzc2FnZSB7CiAgICAgICAgYWxpZ24tc2VsZjogY2VudGVyOwogICAgICAgIGZsZXgtZ3JvdzogMTsKICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7CiAgICAgICAgcGFkZGluZy1yaWdodDogMWVtOwogICAgICAgIHRleHQtYWxpZ246IHJpZ2h0OwogICAgICB9CiAgICA8L3N0eWxlPgogIGAsdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sSnJlLnByb3RvdHlwZSwiX2luc3RhbGxDb21tYW5kIix2b2lkIDApLEpyZT10KFtpKCJ0Zi1wcm9maWxlLXJlZGlyZWN0LWRhc2hib2FyZCIpXSxKcmUpO2xldCBRcmU9Y2xhc3MgZXh0ZW5kcyB3ZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5fZXhwYW5kZWQ9ITEsdGhpcy5fcnVuVG9QckN1cnZlRW50cnk9e30sdGhpcy5fcHJldmlvdXNSdW5Ub1ByQ3VydmVFbnRyeT17fSx0aGlzLl9jb2xvclNjYWxlRnVuY3Rpb249e3NjYWxlOl9PfSx0aGlzLl9jYW5jZWxsZXI9bmV3IHhPLHRoaXMuX3hDb21wb25lbnRzQ3JlYXRpb25NZXRob2Q9KCk9Pntjb25zdCB0PW5ldyBOTy5TY2FsZXMuTGluZWFyO3JldHVybntzY2FsZTp0LGF4aXM6bmV3IE5PLkF4ZXMuTnVtZXJpYyh0LCJib3R0b20iKSxhY2Nlc3Nvcjp0PT50LnJlY2FsbH19LHRoaXMuX3lWYWx1ZUFjY2Vzc29yPXQ9PnQucHJlY2lzaW9uLHRoaXMuX3Rvb2x0aXBDb2x1bW5zPSgoKT0+e2NvbnN0IHQ9U0N0KDQpLGU9ZT0+aXNOYU4oZSk/Ik5hTiI6dChlKTtyZXR1cm5be3RpdGxlOiJSdW4iLGV2YWx1YXRlOnQ9PnQuZGF0YXNldC5tZXRhZGF0YSgpLm5hbWV9LHt0aXRsZToiVGhyZXNob2xkIixldmFsdWF0ZTp0PT5lKHQuZGF0dW0udGhyZXNob2xkcyl9LHt0aXRsZToiUHJlY2lzaW9uIixldmFsdWF0ZTp0PT5lKHQuZGF0dW0ucHJlY2lzaW9uKX0se3RpdGxlOiJSZWNhbGwiLGV2YWx1YXRlOnQ9PmUodC5kYXR1bS5yZWNhbGwpfSx7dGl0bGU6IlRQIixldmFsdWF0ZTp0PT50LmRhdHVtLnRydWVfcG9zaXRpdmVzfSx7dGl0bGU6IkZQIixldmFsdWF0ZTp0PT50LmRhdHVtLmZhbHNlX3Bvc2l0aXZlc30se3RpdGxlOiJUTiIsZXZhbHVhdGU6dD0+dC5kYXR1bS50cnVlX25lZ2F0aXZlc30se3RpdGxlOiJGTiIsZXZhbHVhdGU6dD0+dC5kYXR1bS5mYWxzZV9uZWdhdGl2ZXN9XX0pKCksdGhpcy5fc2VyaWVzRGF0YUZpZWxkcz1bInRocmVzaG9sZHMiLCJwcmVjaXNpb24iLCJyZWNhbGwiLCJ0cnVlX3Bvc2l0aXZlcyIsImZhbHNlX3Bvc2l0aXZlcyIsInRydWVfbmVnYXRpdmVzIiwiZmFsc2VfbmVnYXRpdmVzIl0sdGhpcy5fZGVmYXVsdFhSYW5nZT1bLS4wNSwxLjA1XSx0aGlzLl9kZWZhdWx0WVJhbmdlPVstLjA1LDEuMDVdLHRoaXMuX3JlcXVlc3REYXRhPSh0LGUsbik9Pntjb25zdCBpPUVyKCkucGx1Z2luUm91dGUoInByX2N1cnZlcyIsIi9wcl9jdXJ2ZXMiKTtQcm9taXNlLmFsbCh0Lm1hcCgodD0+e2NvbnN0IG49UE8oaSx7dGFnOnRoaXMudGFnLHJ1bjp0fSk7cmV0dXJuIHRoaXMucmVxdWVzdE1hbmFnZXIucmVxdWVzdChuKS50aGVuKChuPT57ZSh7aXRlbTp0LGRhdGE6bn0pfSkpfSkpKS5maW5hbGx5KCgoKT0+e24oKX0pKX0sdGhpcy5fc21vb3RoaW5nRW5hYmxlZD0hMX1fY3JlYXRlUHJvY2Vzc0RhdGFGdW5jdGlvbigpe3JldHVybih0LGUsbik9Pnt0aGlzLnNldCgiX3J1blRvRGF0YU92ZXJUaW1lIixPYmplY3QuYXNzaWduKHt9LHRoaXMuX3J1blRvRGF0YU92ZXJUaW1lLG4pKX19X2NvbXB1dGVSdW5Db2xvcih0KXtyZXR1cm4gX08odCl9Y29ubmVjdGVkQ2FsbGJhY2soKXtzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpLHRoaXMuX2F0dGFjaGVkPSEwLHRoaXMucmVsb2FkKCl9X2dldENoYXJ0RGF0YUxvYWRlcigpe3JldHVybiB0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigidGYtbGluZS1jaGFydC1kYXRhLWxvYWRlciIpfXJlbG9hZCgpe3RoaXMuX2F0dGFjaGVkJiYoMCE9PXRoaXMucnVucy5sZW5ndGg/dGhpcy5fZ2V0Q2hhcnREYXRhTG9hZGVyKCkucmVsb2FkKCk6dGhpcy5zZXQoIl9ydW5Ub0RhdGFPdmVyVGltZSIse30pKX1fc2V0Q2hhcnREYXRhKCl7dmFyIHQ9dGhpcy5fcnVuVG9QckN1cnZlRW50cnksZT10aGlzLl9wcmV2aW91c1J1blRvUHJDdXJ2ZUVudHJ5LG49dGhpcy5fc2V0T2ZSZWxldmFudFJ1bnM7Q2UuZXhwb3J0cy5mb3JPd24odCwoKGkscik9Pntjb25zdCBvPWVbcl07byYmdFtyXS5zdGVwPT09by5zdGVwfHwobltyXT90aGlzLl91cGRhdGVTZXJpZXNEYXRhRm9yUnVuKHIsaSk6dGhpcy5fY2xlYXJTZXJpZXNEYXRhKHIpKX0pKX1fdXBkYXRlU2VyaWVzRGF0YUZvclJ1bih0LGUpe2NvbnN0IG49Q2UuZXhwb3J0cy5yZWR1Y2UodGhpcy5fc2VyaWVzRGF0YUZpZWxkcywoKHQsbik9Pih0W25dPWVbbl0uc2xpY2UoKS5yZXZlcnNlKCksdCkpLHt9KSxpPW5ldyBBcnJheShuW3RoaXMuX3Nlcmllc0RhdGFGaWVsZHNbMF1dLmxlbmd0aCk7Zm9yKGxldCB0PTA7dDxpLmxlbmd0aDt0KyspaVt0XT1DZS5leHBvcnRzLm1hcFZhbHVlcyhuLChlPT5lW3RdKSk7Y29uc3Qgcj10aGlzLl9nZXRDaGFydERhdGFMb2FkZXIoKTtyLnNldFNlcmllc0RhdGEodCxpKSxyLmNvbW1pdENoYW5nZXMoKX1fY2xlYXJTZXJpZXNEYXRhKHQpe2NvbnN0IGU9dGhpcy5fZ2V0Q2hhcnREYXRhTG9hZGVyKCk7ZS5zZXRTZXJpZXNEYXRhKHQsW10pLGUuY29tbWl0Q2hhbmdlcygpfV91cGRhdGVSdW5Ub1ByQ3VydmVFbnRyeSgpe3ZhciB0PXRoaXMucnVuVG9TdGVwQ2FwO2NvbnN0IGU9e307Q2UuZXhwb3J0cy5mb3JPd24odGhpcy5fcnVuVG9EYXRhT3ZlclRpbWUsKChuLGkpPT57biYmbi5sZW5ndGgmJihlW2ldPXRoaXMuX2NvbXB1dGVFbnRyeUNsb3Nlc3RPckVxdWFsVG9TdGVwQ2FwKHRbaV0sbikpfSkpLHRoaXMuc2V0KCJfcHJldmlvdXNSdW5Ub1ByQ3VydmVFbnRyeSIsdGhpcy5fcnVuVG9QckN1cnZlRW50cnkpLHRoaXMuc2V0KCJfcnVuVG9QckN1cnZlRW50cnkiLGUpfV9ub3RpZnlEYXRhQ2hhbmdlKCl7dGhpcy5vbkRhdGFDaGFuZ2UmJnRoaXMub25EYXRhQ2hhbmdlKHRoaXMuX3J1blRvRGF0YU92ZXJUaW1lKX1fY29tcHV0ZUVudHJ5Q2xvc2VzdE9yRXF1YWxUb1N0ZXBDYXAodCxlKXtjb25zdCBuPU1hdGgubWluKENlLmV4cG9ydHMuc29ydGVkSW5kZXgoZS5tYXAoKHQ9PnQuc3RlcCkpLHQpLGUubGVuZ3RoLTEpO3JldHVybiBlW25dfWdldCBfcnVuc1dpdGhTdGVwQXZhaWxhYmxlKCl7dmFyIHQ9dGhpcy5fcnVuVG9QckN1cnZlRW50cnk7cmV0dXJuIENlLmV4cG9ydHMuZmlsdGVyKHRoaXMucnVucywoZT0+dFtlXSkpLnNvcnQoKX1nZXQgX3NldE9mUmVsZXZhbnRSdW5zKCl7Y29uc3QgdD17fTtyZXR1cm4gQ2UuZXhwb3J0cy5mb3JFYWNoKHRoaXMuX3J1bnNXaXRoU3RlcEF2YWlsYWJsZSwoZT0+e3RbZV09ITB9KSksdH1fY29tcHV0ZUN1cnJlbnRTdGVwRm9yUnVuKHQsZSl7Y29uc3Qgbj10W2VdO3JldHVybiBuP24uc3RlcDpudWxsfV9jb21wdXRlQ3VycmVudFdhbGxUaW1lRm9yUnVuKHQsZSl7Y29uc3Qgbj10W2VdO3JldHVybiBuP25ldyBEYXRlKDFlMypuLndhbGxfdGltZSkudG9TdHJpbmcoKTpudWxsfV90b2dnbGVFeHBhbmRlZCh0KXt0aGlzLnNldCgiX2V4cGFuZGVkIiwhdGhpcy5fZXhwYW5kZWQpLHRoaXMucmVkcmF3KCl9X3Jlc2V0RG9tYWluKCl7dGhpcy5fZ2V0Q2hhcnREYXRhTG9hZGVyKCkucmVzZXREb21haW4oKX1yZWRyYXcoKXt0aGlzLl9nZXRDaGFydERhdGFMb2FkZXIoKS5yZWRyYXcoKX19O1FyZS50ZW1wbGF0ZT14ZWAKICAgIDx0Zi1jYXJkLWhlYWRpbmcKICAgICAgdGFnPSJbW3RhZ11dIgogICAgICBkaXNwbGF5LW5hbWU9IltbdGFnTWV0YWRhdGEuZGlzcGxheU5hbWVdXSIKICAgICAgZGVzY3JpcHRpb249IltbdGFnTWV0YWRhdGEuZGVzY3JpcHRpb25dXSIKICAgID48L3RmLWNhcmQtaGVhZGluZz4KCiAgICA8dGYtbGluZS1jaGFydC1kYXRhLWxvYWRlcgogICAgICB4LWNvbXBvbmVudHMtY3JlYXRpb24tbWV0aG9kPSJbW194Q29tcG9uZW50c0NyZWF0aW9uTWV0aG9kXV0iCiAgICAgIHktdmFsdWUtYWNjZXNzb3I9IltbX3lWYWx1ZUFjY2Vzc29yXV0iCiAgICAgIHRvb2x0aXAtY29sdW1ucz0iW1tfdG9vbHRpcENvbHVtbnNdXSIKICAgICAgY29sb3Itc2NhbGU9IltbX2NvbG9yU2NhbGVGdW5jdGlvbl1dIgogICAgICBkZWZhdWx0LXgtcmFuZ2U9IltbX2RlZmF1bHRYUmFuZ2VdXSIKICAgICAgZGVmYXVsdC15LXJhbmdlPSJbW19kZWZhdWx0WVJhbmdlXV0iCiAgICAgIHNtb290aGluZy1lbmFibGVkPSJbW19zbW9vdGhpbmdFbmFibGVkXV0iCiAgICAgIHJlcXVlc3QtbWFuYWdlcj0iW1tyZXF1ZXN0TWFuYWdlcl1dIgogICAgICBkYXRhLXRvLWxvYWQ9IltbcnVuc11dIgogICAgICBkYXRhLXNlcmllcz0iW1tydW5zXV0iCiAgICAgIGxvYWQta2V5PSJbW3RhZ11dIgogICAgICByZXF1ZXN0LWRhdGE9IltbX3JlcXVlc3REYXRhXV0iCiAgICAgIGxvYWQtZGF0YS1jYWxsYmFjaz0iW1tfY3JlYXRlUHJvY2Vzc0RhdGFGdW5jdGlvbigpXV0iCiAgICAgIGFjdGl2ZT0iW1thY3RpdmVdXSIKICAgID48L3RmLWxpbmUtY2hhcnQtZGF0YS1sb2FkZXI+CgogICAgPGRpdiBpZD0iYnV0dG9ucy1yb3ciPgogICAgICA8cGFwZXItaWNvbi1idXR0b24KICAgICAgICBzZWxlY3RlZCQ9IltbX2V4cGFuZGVkXV0iCiAgICAgICAgaWNvbj0iZnVsbHNjcmVlbiIKICAgICAgICBvbi10YXA9Il90b2dnbGVFeHBhbmRlZCIKICAgICAgPjwvcGFwZXItaWNvbi1idXR0b24+CiAgICAgIDxwYXBlci1pY29uLWJ1dHRvbgogICAgICAgIGljb249InNldHRpbmdzLW92ZXJzY2FuIgogICAgICAgIG9uLXRhcD0iX3Jlc2V0RG9tYWluIgogICAgICAgIHRpdGxlPSJSZXNldCBheGVzIHRvIFswLCAxXS4iCiAgICAgID48L3BhcGVyLWljb24tYnV0dG9uPgogICAgPC9kaXY+CgogICAgPGRpdiBpZD0ic3RlcC1sZWdlbmQiPgogICAgICA8dGVtcGxhdGUgaXM9ImRvbS1yZXBlYXQiIGl0ZW1zPSJbW19ydW5zV2l0aFN0ZXBBdmFpbGFibGVdXSIgYXM9InJ1biI+CiAgICAgICAgPGRpdiBjbGFzcz0ibGVnZW5kLXJvdyI+CiAgICAgICAgICA8ZGl2CiAgICAgICAgICAgIGNsYXNzPSJjb2xvci1ib3giCiAgICAgICAgICAgIHN0eWxlPSJiYWNrZ3JvdW5kOiBbW19jb21wdXRlUnVuQ29sb3IocnVuKV1dOyIKICAgICAgICAgID48L2Rpdj4KICAgICAgICAgIFtbcnVuXV0gaXMgYXQKICAgICAgICAgIDxzcGFuIGNsYXNzPSJzdGVwLWxhYmVsLXRleHQiPgogICAgICAgICAgICBzdGVwIFtbX2NvbXB1dGVDdXJyZW50U3RlcEZvclJ1bihfcnVuVG9QckN1cnZlRW50cnksIHJ1bildXSA8L3NwYW4KICAgICAgICAgID48YnIgLz4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJ3YWxsLXRpbWUtbGFiZWwtdGV4dCI+CiAgICAgICAgICAgIChbW19jb21wdXRlQ3VycmVudFdhbGxUaW1lRm9yUnVuKF9ydW5Ub1ByQ3VydmVFbnRyeSwgcnVuKV1dKQogICAgICAgICAgPC9zcGFuPgogICAgICAgIDwvZGl2PgogICAgICA8L3RlbXBsYXRlPgogICAgPC9kaXY+CgogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIHdpZHRoOiA1MDBweDsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjVweDsKICAgICAgfQogICAgICA6aG9zdChbX2V4cGFuZGVkXSkgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICB9CiAgICAgIHRmLWxpbmUtY2hhcnQtZGF0YS1sb2FkZXIgewogICAgICAgIGhlaWdodDogMzAwcHg7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICB9CiAgICAgIDpob3N0KFtfZXhwYW5kZWRdKSB0Zi1saW5lLWNoYXJ0LWRhdGEtbG9hZGVyIHsKICAgICAgICBoZWlnaHQ6IDYwMHB4OwogICAgICB9CiAgICAgICNidXR0b25zLXJvdyB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93OwogICAgICB9CiAgICAgICNidXR0b25zLXJvdyBwYXBlci1pY29uLWJ1dHRvbiB7CiAgICAgICAgY29sb3I6ICMyMTk2ZjM7CiAgICAgICAgYm9yZGVyLXJhZGl1czogMTAwJTsKICAgICAgICB3aWR0aDogMzJweDsKICAgICAgICBoZWlnaHQ6IDMycHg7CiAgICAgICAgcGFkZGluZzogNHB4OwogICAgICB9CiAgICAgICNidXR0b25zLXJvdyBwYXBlci1pY29uLWJ1dHRvbltzZWxlY3RlZF0gewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXRiLXVpLWxpZ2h0LWFjY2VudCk7CiAgICAgIH0KICAgICAgI3N0ZXAtbGVnZW5kIHsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICAgIGZvbnQtc2l6ZTogMC44ZW07CiAgICAgICAgbWF4LWhlaWdodDogMjAwcHg7CiAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKICAgICAgICBwYWRkaW5nOiAwIDAgMCAxMHB4OwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICB9CiAgICAgIC5sZWdlbmQtcm93IHsKICAgICAgICBtYXJnaW46IDVweCAwIDVweCAwOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICB9CiAgICAgIC5jb2xvci1ib3ggewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICBib3JkZXItcmFkaXVzOiAxcHg7CiAgICAgICAgd2lkdGg6IDEwcHg7CiAgICAgICAgaGVpZ2h0OiAxMHB4OwogICAgICB9CiAgICAgIC5zdGVwLWxhYmVsLXRleHQgewogICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgICB9CiAgICAgIC53YWxsLXRpbWUtbGFiZWwtdGV4dCB7CiAgICAgICAgY29sb3I6ICM4ODg7CiAgICAgICAgZm9udC1zaXplOiAwLjhlbTsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxRcmUucHJvdG90eXBlLCJydW5zIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLFFyZS5wcm90b3R5cGUsInRhZyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxRcmUucHJvdG90eXBlLCJ0YWdNZXRhZGF0YSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxRcmUucHJvdG90eXBlLCJydW5Ub1N0ZXBDYXAiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsYnIpXSxRcmUucHJvdG90eXBlLCJyZXF1ZXN0TWFuYWdlciIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLFFyZS5wcm90b3R5cGUsImFjdGl2ZSIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW4scmVmbGVjdFRvQXR0cmlidXRlOiEwfSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxRcmUucHJvdG90eXBlLCJfZXhwYW5kZWQiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sUXJlLnByb3RvdHlwZSwiX3J1blRvUHJDdXJ2ZUVudHJ5Iix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLFFyZS5wcm90b3R5cGUsIl9wcmV2aW91c1J1blRvUHJDdXJ2ZUVudHJ5Iix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLFFyZS5wcm90b3R5cGUsIl9ydW5Ub0RhdGFPdmVyVGltZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbildLFFyZS5wcm90b3R5cGUsIm9uRGF0YUNoYW5nZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxRcmUucHJvdG90eXBlLCJfY29sb3JTY2FsZUZ1bmN0aW9uIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLHhPKV0sUXJlLnByb3RvdHlwZSwiX2NhbmNlbGxlciIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLFFyZS5wcm90b3R5cGUsIl9hdHRhY2hlZCIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxRcmUucHJvdG90eXBlLCJfeENvbXBvbmVudHNDcmVhdGlvbk1ldGhvZCIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxRcmUucHJvdG90eXBlLCJfeVZhbHVlQWNjZXNzb3IiLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheX0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLFFyZS5wcm90b3R5cGUsIl90b29sdGlwQ29sdW1ucyIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sUXJlLnByb3RvdHlwZSwiX3Nlcmllc0RhdGFGaWVsZHMiLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheX0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLFFyZS5wcm90b3R5cGUsIl9kZWZhdWx0WFJhbmdlIix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxRcmUucHJvdG90eXBlLCJfZGVmYXVsdFlSYW5nZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbildLFFyZS5wcm90b3R5cGUsIl9yZXF1ZXN0RGF0YSIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLFFyZS5wcm90b3R5cGUsIl9zbW9vdGhpbmdFbmFibGVkIix2b2lkIDApLHQoW2EoInJ1bnMiLCJ0YWciKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLFFyZS5wcm90b3R5cGUsInJlbG9hZCIsbnVsbCksdChbYSgiX3J1blRvUHJDdXJ2ZUVudHJ5IiwiX3ByZXZpb3VzUnVuVG9QckN1cnZlRW50cnkiLCJfc2V0T2ZSZWxldmFudFJ1bnMiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLFFyZS5wcm90b3R5cGUsIl9zZXRDaGFydERhdGEiLG51bGwpLHQoW2EoIl9ydW5Ub0RhdGFPdmVyVGltZSIsInJ1blRvU3RlcENhcCIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sUXJlLnByb3RvdHlwZSwiX3VwZGF0ZVJ1blRvUHJDdXJ2ZUVudHJ5IixudWxsKSx0KFthKCJfcnVuVG9EYXRhT3ZlclRpbWUiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLFFyZS5wcm90b3R5cGUsIl9ub3RpZnlEYXRhQ2hhbmdlIixudWxsKSx0KFtzKCJydW5zIiwiX3J1blRvUHJDdXJ2ZUVudHJ5IiksZSgiZGVzaWduOnR5cGUiLEFycmF5KSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxRcmUucHJvdG90eXBlLCJfcnVuc1dpdGhTdGVwQXZhaWxhYmxlIixudWxsKSx0KFtzKCJfcnVuc1dpdGhTdGVwQXZhaWxhYmxlIiksZSgiZGVzaWduOnR5cGUiLE9iamVjdCksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sUXJlLnByb3RvdHlwZSwiX3NldE9mUmVsZXZhbnRSdW5zIixudWxsKSxRcmU9dChbaSgidGYtcHItY3VydmUtY2FyZCIpXSxRcmUpO2xldCB0b2U9Y2xhc3MgZXh0ZW5kcyB3ZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5fcnVuVG9TdGVwSW5kZXg9e319X2NvbXB1dGVDb2xvckZvclJ1bih0KXtyZXR1cm4gX08odCl9X2NvbXB1dGVUaW1lVGV4dEZvclJ1bih0LGUsbixpKXtjb25zdCByPWVbbl07aWYoIUNlLmV4cG9ydHMuaXNOdW1iZXIocikpcmV0dXJuIiI7Y29uc3Qgbz10W25dO2lmKCFvKXJldHVybiIiO2NvbnN0IGE9b1tyXVtpXTtpZigic3RlcCI9PT1pKXJldHVybmBzdGVwICR7YX1gO2lmKCJyZWxhdGl2ZSI9PT1pKXJldHVybiBhPDE/YCR7KDFlMyphKS50b0ZpeGVkKDIpfSBtc2A6YCR7YS50b0ZpeGVkKDIpfSBzYDtpZigid2FsbF90aW1lIj09PWkpcmV0dXJuIG5ldyBEYXRlKDFlMyphKS50b1N0cmluZygpO3Rocm93IG5ldyBFcnJvcihgVGhlIGRpc3BsYXkgdHlwZSBvZiAke2l9IGlzIG5vdCByZWNvZ25pemVkLmApfV9zbGlkZXJWYWx1ZUNoYW5nZWQodCl7Y29uc3QgZT10LnRhcmdldC5kYXRhc2V0LnJ1bixuPXQudGFyZ2V0LmltbWVkaWF0ZVZhbHVlLGk9T2JqZWN0LmFzc2lnbih7fSx0aGlzLl9ydW5Ub1N0ZXBJbmRleCk7aXNOYU4obik/ZGVsZXRlIGlbZV06aVtlXT10LnRhcmdldC5pbW1lZGlhdGVWYWx1ZSx0aGlzLl9ydW5Ub1N0ZXBJbmRleD1pfV9jb21wdXRlTWF4U3RlcEluZGV4Rm9yUnVuKHQsZSl7Y29uc3Qgbj10W2VdO3JldHVybiBuJiZuLmxlbmd0aD9uLmxlbmd0aC0xOjB9X3VwZGF0ZVN0ZXBzRm9yTmV3UnVucygpe3ZhciB0PXRoaXMucnVuVG9BdmFpbGFibGVUaW1lRW50cmllcztjb25zdCBlPU9iamVjdC5hc3NpZ24oe30sdGhpcy5fcnVuVG9TdGVwSW5kZXgpO0NlLmV4cG9ydHMuZm9yT3duKHQsKCh0LG4pPT57Q2UuZXhwb3J0cy5pc051bWJlcihlW25dKXx8KGVbbl09dC5sZW5ndGgtMSl9KSksdGhpcy5fcnVuVG9TdGVwSW5kZXg9ZX1fZ2V0U3RlcCh0LGUpe3JldHVybiB0aGlzLl9ydW5Ub1N0ZXBJbmRleD90aGlzLl9ydW5Ub1N0ZXBJbmRleFtlXTowfV9jb21wdXRlUnVuVG9TdGVwKHQsZSl7Y29uc3Qgbj17fTtyZXR1cm4gQ2UuZXhwb3J0cy5mb3JPd24oZSwoKGUsaSk9Pntjb25zdCByPXRbaV07ciYmKG5baV09cltlXS5zdGVwKX0pKSxufWdldCBfcnVuc1dpdGhTbGlkZXJzKCl7dmFyIHQ9dGhpcy5ydW5Ub0F2YWlsYWJsZVRpbWVFbnRyaWVzO3JldHVybiB0aGlzLnJ1bnMuZmlsdGVyKChlPT50W2VdKSl9fTt0b2UudGVtcGxhdGU9eGVgCiAgICA8dGVtcGxhdGUgaXM9ImRvbS1yZXBlYXQiIGl0ZW1zPSJbW19ydW5zV2l0aFNsaWRlcnNdXSIgYXM9InJ1biI+CiAgICAgIDxkaXYgY2xhc3M9InJ1bi13aWRnZXQiPgogICAgICAgIDxkaXYgY2xhc3M9InJ1bi1kaXNwbGF5LWNvbnRhaW5lciI+CiAgICAgICAgICA8ZGl2CiAgICAgICAgICAgIGNsYXNzPSJydW4tY29sb3ItYm94IgogICAgICAgICAgICBzdHlsZT0iYmFja2dyb3VuZDpbW19jb21wdXRlQ29sb3JGb3JSdW4ocnVuKV1dOyIKICAgICAgICAgID48L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InJ1bi10ZXh0Ij5bW3J1bl1dPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic3RlcC1kaXNwbGF5LWNvbnRhaW5lciI+CiAgICAgICAgICBbW19jb21wdXRlVGltZVRleHRGb3JSdW4ocnVuVG9BdmFpbGFibGVUaW1lRW50cmllcywgX3J1blRvU3RlcEluZGV4LAogICAgICAgICAgcnVuLCB0aW1lRGlzcGxheVR5cGUpXV0KICAgICAgICA8L2Rpdj4KICAgICAgICA8cGFwZXItc2xpZGVyCiAgICAgICAgICBkYXRhLXJ1biQ9IltbcnVuXV0iCiAgICAgICAgICBzdGVwPSIxIgogICAgICAgICAgdHlwZT0ibnVtYmVyIgogICAgICAgICAgbWluPSIwIgogICAgICAgICAgbWF4PSJbW19jb21wdXRlTWF4U3RlcEluZGV4Rm9yUnVuKHJ1blRvQXZhaWxhYmxlVGltZUVudHJpZXMsIHJ1bildXSIKICAgICAgICAgIHZhbHVlPSJbW19nZXRTdGVwKF9ydW5Ub1N0ZXBJbmRleCwgcnVuKV1dIgogICAgICAgICAgb24taW1tZWRpYXRlLXZhbHVlLWNoYW5nZWQ9Il9zbGlkZXJWYWx1ZUNoYW5nZWQiCiAgICAgICAgPjwvcGFwZXItc2xpZGVyPgogICAgICA8L2Rpdj4KICAgIDwvdGVtcGxhdGU+CiAgICA8c3R5bGU+CiAgICAgIC5ydW4td2lkZ2V0IHsKICAgICAgICBtYXJnaW46IDEwcHggMCAwIDA7CiAgICAgIH0KICAgICAgcGFwZXItc2xpZGVyIHsKICAgICAgICBtYXJnaW46IC04cHggMCAwIC0xNXB4OwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICB9CiAgICAgIC5zdGVwLWRpc3BsYXktY29udGFpbmVyIHsKICAgICAgICBmb250LXNpemU6IDAuOWVtOwogICAgICAgIG1hcmdpbjogMCAxNXB4IDAgMDsKICAgICAgfQogICAgICAucnVuLXRleHQgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgfQogICAgICAucnVuLWNvbG9yLWJveCB7CiAgICAgICAgd2lkdGg6IDEycHg7CiAgICAgICAgaGVpZ2h0OiAxMnB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDNweDsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYCx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sdG9lLnByb3RvdHlwZSwicnVucyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSx0b2UucHJvdG90eXBlLCJydW5Ub0F2YWlsYWJsZVRpbWVFbnRyaWVzIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0LG5vdGlmeTohMCxjb21wdXRlZDoiX2NvbXB1dGVSdW5Ub1N0ZXAocnVuVG9BdmFpbGFibGVUaW1lRW50cmllcywgX3J1blRvU3RlcEluZGV4KSJ9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sdG9lLnByb3RvdHlwZSwicnVuVG9TdGVwIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLHRvZS5wcm90b3R5cGUsInRpbWVEaXNwbGF5VHlwZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSx0b2UucHJvdG90eXBlLCJfcnVuVG9TdGVwSW5kZXgiLHZvaWQgMCksdChbYSgicnVuVG9BdmFpbGFibGVUaW1lRW50cmllcyIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sdG9lLnByb3RvdHlwZSwiX3VwZGF0ZVN0ZXBzRm9yTmV3UnVucyIsbnVsbCksdChbcygicnVucyIsInJ1blRvQXZhaWxhYmxlVGltZUVudHJpZXMiKSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLHRvZS5wcm90b3R5cGUsIl9ydW5zV2l0aFNsaWRlcnMiLG51bGwpLHRvZT10KFtpKCJ0Zi1wci1jdXJ2ZS1zdGVwcy1zZWxlY3RvciIpXSx0b2UpO2xldCBlb2U9Y2xhc3MgZXh0ZW5kcyhjcih3ZSkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLnJlbG9hZE9uUmVhZHk9ITAsdGhpcy5fdGltZURpc3BsYXlUeXBlPSJzdGVwIix0aGlzLl9zZWxlY3RlZFJ1bnM9W10sdGhpcy5fcnVuVG9UYWdJbmZvPXt9LHRoaXMuX3RhZ1RvUnVuVG9EYXRhPXt9LHRoaXMuX2dldENhdGVnb3J5SXRlbUtleT10PT50LnRhZyx0aGlzLl9yZXF1ZXN0TWFuYWdlcj1uZXcgYnIsdGhpcy5fc3RlcD0wfXJlYWR5KCl7c3VwZXIucmVhZHkoKSx0aGlzLnJlbG9hZE9uUmVhZHkmJnRoaXMucmVsb2FkKCl9cmVsb2FkKCl7UHJvbWlzZS5hbGwoW3RoaXMuX2ZldGNoVGFncygpXSkudGhlbigoKCk9Pnt0aGlzLl9yZWxvYWRDYXJkcygpfSkpfV9zaG91bGRPcGVuKHQpe3JldHVybiB0PD0yfV9mZXRjaFRhZ3MoKXtjb25zdCB0PUVyKCkucGx1Z2luUm91dGUoInByX2N1cnZlcyIsIi90YWdzIik7cmV0dXJuIHRoaXMuX3JlcXVlc3RNYW5hZ2VyLnJlcXVlc3QodCkudGhlbigodD0+e2lmKENlLmV4cG9ydHMuaXNFcXVhbCh0LHRoaXMuX3J1blRvVGFnSW5mbykpcmV0dXJuO2NvbnN0IGU9ZnIoQ2UuZXhwb3J0cy5tYXBWYWx1ZXModCwodD0+Q2UuZXhwb3J0cy5rZXlzKHQpKSkpO3RoaXMuc2V0KCJfZGF0YU5vdEZvdW5kIiwwPT09ZS5sZW5ndGgpLHRoaXMuc2V0KCJfcnVuVG9UYWdJbmZvIix0KSx0aGlzLmFzeW5jKCgoKT0+e3RoaXMuc2V0KCJfY2F0ZWdvcmllc0RvbVJlYWR5IiwhMCl9KSl9KSl9X3JlbG9hZENhcmRzKCl7Q2UuZXhwb3J0cy5mb3JFYWNoKHRoaXMucm9vdC5xdWVyeVNlbGVjdG9yQWxsKCJ0Zi1wci1jdXJ2ZS1jYXJkIiksKHQ9Pnt0LnJlbG9hZCgpfSkpfWdldCBfY2F0ZWdvcmllcygpe3ZhciB0PXRoaXMuX3NlbGVjdGVkUnVucyxlPXRoaXMuX3RhZ0ZpbHRlcjtyZXR1cm4gUHIoQ2UuZXhwb3J0cy5tYXBWYWx1ZXModGhpcy5fcnVuVG9UYWdJbmZvLCh0PT5PYmplY3Qua2V5cyh0KSkpLHQsZSl9Z2V0IF9yZWxldmFudFNlbGVjdGVkUnVucygpe3ZhciB0PXRoaXMuX3J1blRvVGFnSW5mbztyZXR1cm4gdGhpcy5fc2VsZWN0ZWRSdW5zLmZpbHRlcigoZT0+dFtlXSkpfV90YWdNZXRhZGF0YSh0LGUsbil7Y29uc3QgaT17fTtlLmZvckVhY2goKGU9PntpW2VdPXRbZV1bbl19KSk7Y29uc3Qgcj1uLnJlcGxhY2UoL1wvcHJfY3VydmVzJC8sIiIpO3JldHVybiBrTyhpLHIpfV9jcmVhdGVEYXRhQ2hhbmdlQ2FsbGJhY2sodCl7cmV0dXJuIGU9Pnt0aGlzLnNldCgiX3RhZ1RvUnVuVG9EYXRhIixPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdGhpcy5fdGFnVG9SdW5Ub0RhdGEpLHtbdF06ZX0pKX19Z2V0IF9ydW5Ub0F2YWlsYWJsZVRpbWVFbnRyaWVzKCl7dmFyIHQ9dGhpcy5fdGFnVG9SdW5Ub0RhdGE7Y29uc3QgZT17fTtmb3IoY29uc3RbbixpXW9mIE9iamVjdC5lbnRyaWVzKHQpKWZvcihjb25zdFt0XW9mIE9iamVjdC5lbnRyaWVzKGkpKShudWxsPT1lW3RdfHxuPGVbdF0pJiYoZVt0XT1uKTtjb25zdCBuPXt9O2Zvcihjb25zdFtpLHJdb2YgT2JqZWN0LmVudHJpZXMoZSkpe2NvbnN0IGU9dFtyXVtpXTtuW2ldPWUubWFwKCh0PT4oe3N0ZXA6dC5zdGVwLHdhbGxfdGltZTp0LndhbGxfdGltZSxyZWxhdGl2ZTp0LndhbGxfdGltZS1lWzBdLndhbGxfdGltZX0pKSl9cmV0dXJuIG59fTtlb2UudGVtcGxhdGU9eGVgCiAgICA8dGYtZGFzaGJvYXJkLWxheW91dD4KICAgICAgPGRpdiBjbGFzcz0ic2lkZWJhciIgc2xvdD0ic2lkZWJhciI+CiAgICAgICAgPGRpdiBjbGFzcz0ic2V0dGluZ3MiPgogICAgICAgICAgPGRpdiBjbGFzcz0ic2lkZWJhci1zZWN0aW9uIj4KICAgICAgICAgICAgPHRmLW9wdGlvbi1zZWxlY3RvcgogICAgICAgICAgICAgIGlkPSJ0aW1lLXR5cGUtc2VsZWN0b3IiCiAgICAgICAgICAgICAgbmFtZT0iVGltZSBEaXNwbGF5IFR5cGUiCiAgICAgICAgICAgICAgc2VsZWN0ZWQtaWQ9Int7X3RpbWVEaXNwbGF5VHlwZX19IgogICAgICAgICAgICA+CiAgICAgICAgICAgICAgPHBhcGVyLWJ1dHRvbiBpZD0ic3RlcCI+c3RlcDwvcGFwZXItYnV0dG9uPgogICAgICAgICAgICAgIDwhLS0KICAgICAgICAgICAgLS0+CiAgICAgICAgICAgICAgPHBhcGVyLWJ1dHRvbiBpZD0icmVsYXRpdmUiPnJlbGF0aXZlPC9wYXBlci1idXR0b24+CiAgICAgICAgICAgICAgPCEtLQogICAgICAgICAgICAtLT4KICAgICAgICAgICAgICA8cGFwZXItYnV0dG9uIGlkPSJ3YWxsX3RpbWUiPndhbGw8L3BhcGVyLWJ1dHRvbj4KICAgICAgICAgICAgPC90Zi1vcHRpb24tc2VsZWN0b3I+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfcnVuVG9BdmFpbGFibGVUaW1lRW50cmllc11dIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2lkZWJhci1zZWN0aW9uIiBpZD0ic3RlcHMtc2VsZWN0b3ItY29udGFpbmVyIj4KICAgICAgICAgICAgICA8dGYtcHItY3VydmUtc3RlcHMtc2VsZWN0b3IKICAgICAgICAgICAgICAgIHJ1bnM9IltbX3JlbGV2YW50U2VsZWN0ZWRSdW5zXV0iCiAgICAgICAgICAgICAgICBydW4tdG8tc3RlcD0ie3tfcnVuVG9TdGVwfX0iCiAgICAgICAgICAgICAgICBydW4tdG8tYXZhaWxhYmxlLXRpbWUtZW50cmllcz0iW1tfcnVuVG9BdmFpbGFibGVUaW1lRW50cmllc11dIgogICAgICAgICAgICAgICAgdGltZS1kaXNwbGF5LXR5cGU9IltbX3RpbWVEaXNwbGF5VHlwZV1dIgogICAgICAgICAgICAgID4KICAgICAgICAgICAgICA8L3RmLXByLWN1cnZlLXN0ZXBzLXNlbGVjdG9yPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic2lkZWJhci1zZWN0aW9uIHJ1bnMtc2VsZWN0b3IiPgogICAgICAgICAgPHRmLXJ1bnMtc2VsZWN0b3Igc2VsZWN0ZWQtcnVucz0ie3tfc2VsZWN0ZWRSdW5zfX0iPgogICAgICAgICAgPC90Zi1ydW5zLXNlbGVjdG9yPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iY2VudGVyIiBzbG90PSJjZW50ZXIiPgogICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfZGF0YU5vdEZvdW5kXV0iPgogICAgICAgICAgPGRpdiBjbGFzcz0ibm8tZGF0YS13YXJuaW5nIj4KICAgICAgICAgICAgPGgzPk5vIHByZWNpc2lvbuKAk3JlY2FsbCBjdXJ2ZSBkYXRhIHdhcyBmb3VuZC48L2gzPgogICAgICAgICAgICA8cD5Qcm9iYWJsZSBjYXVzZXM6PC9wPgogICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgWW91IGhhdmVu4oCZdCB3cml0dGVuIGFueSBwcmVjaXNpb27igJNyZWNhbGwgZGF0YSB0byB5b3VyIGV2ZW50CiAgICAgICAgICAgICAgICBmaWxlcy4KICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgIDxsaT5UZW5zb3JCb2FyZCBjYW7igJl0IGZpbmQgeW91ciBldmVudCBmaWxlcy48L2xpPgogICAgICAgICAgICA8L3VsPgogICAgICAgICAgICA8cD4KICAgICAgICAgICAgICBJZiB5b3XigJlyZSBuZXcgdG8gdXNpbmcgVGVuc29yQm9hcmQsIGFuZCB3YW50IHRvIGZpbmQgb3V0IGhvdyB0bwogICAgICAgICAgICAgIGFkZCBkYXRhIGFuZCBzZXQgdXAgeW91ciBldmVudCBmaWxlcywgY2hlY2sgb3V0IHRoZQogICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vdGVuc29yZmxvdy90ZW5zb3Jib2FyZC9ibG9iL21hc3Rlci9SRUFETUUubWQiCiAgICAgICAgICAgICAgICA+UkVBRE1FPC9hCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgIGFuZCBwZXJoYXBzIHRoZQogICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICBocmVmPSJodHRwczovL3d3dy50ZW5zb3JmbG93Lm9yZy9nZXRfc3RhcnRlZC9zdW1tYXJpZXNfYW5kX3RlbnNvcmJvYXJkIgogICAgICAgICAgICAgICAgPlRlbnNvckJvYXJkIHR1dG9yaWFsPC9hCiAgICAgICAgICAgICAgPi4KICAgICAgICAgICAgPC9wPgoKICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgSWYgeW91IHRoaW5rIFRlbnNvckJvYXJkIGlzIGNvbmZpZ3VyZWQgcHJvcGVybHksIHBsZWFzZSBzZWUKICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29yYm9hcmQvYmxvYi9tYXN0ZXIvUkVBRE1FLm1kI215LXRlbnNvcmJvYXJkLWlzbnQtc2hvd2luZy1hbnktZGF0YS13aGF0cy13cm9uZyIKICAgICAgICAgICAgICAgID50aGUgc2VjdGlvbiBvZiB0aGUgUkVBRE1FIGRldm90ZWQgdG8gbWlzc2luZyBkYXRhIHByb2JsZW1zPC9hCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgIGFuZCBjb25zaWRlciBmaWxpbmcgYW4gaXNzdWUgb24gR2l0SHViLgogICAgICAgICAgICA8L3A+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1shX2RhdGFOb3RGb3VuZF1dIj4KICAgICAgICAgIDx0Zi10YWctZmlsdGVyZXIgdGFnLWZpbHRlcj0ie3tfdGFnRmlsdGVyfX0iPjwvdGYtdGFnLWZpbHRlcmVyPgogICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20tcmVwZWF0IiBpdGVtcz0iW1tfY2F0ZWdvcmllc11dIiBhcz0iY2F0ZWdvcnkiPgogICAgICAgICAgICA8dGYtY2F0ZWdvcnktcGFnaW5hdGVkLXZpZXcKICAgICAgICAgICAgICBjYXRlZ29yeT0iW1tjYXRlZ29yeV1dIgogICAgICAgICAgICAgIGluaXRpYWwtb3BlbmVkPSJbW19zaG91bGRPcGVuKGluZGV4KV1dIgogICAgICAgICAgICAgIGdldC1jYXRlZ29yeS1pdGVtLWtleT0iW1tfZ2V0Q2F0ZWdvcnlJdGVtS2V5XV0iCiAgICAgICAgICAgID4KICAgICAgICAgICAgICA8dGVtcGxhdGU+CiAgICAgICAgICAgICAgICA8dGYtcHItY3VydmUtY2FyZAogICAgICAgICAgICAgICAgICBhY3RpdmU9IltbYWN0aXZlXV0iCiAgICAgICAgICAgICAgICAgIHJ1bnM9IltbaXRlbS5ydW5zXV0iCiAgICAgICAgICAgICAgICAgIHRhZz0iW1tpdGVtLnRhZ11dIgogICAgICAgICAgICAgICAgICB0YWctbWV0YWRhdGE9IltbX3RhZ01ldGFkYXRhKF9ydW5Ub1RhZ0luZm8sIGl0ZW0ucnVucywgaXRlbS50YWcpXV0iCiAgICAgICAgICAgICAgICAgIHJlcXVlc3QtbWFuYWdlcj0iW1tfcmVxdWVzdE1hbmFnZXJdXSIKICAgICAgICAgICAgICAgICAgcnVuLXRvLXN0ZXAtY2FwPSJbW19ydW5Ub1N0ZXBdXSIKICAgICAgICAgICAgICAgICAgb24tZGF0YS1jaGFuZ2U9IltbX2NyZWF0ZURhdGFDaGFuZ2VDYWxsYmFjayhpdGVtLnRhZyldXSIKICAgICAgICAgICAgICAgID48L3RmLXByLWN1cnZlLWNhcmQ+CiAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgPC90Zi1jYXRlZ29yeS1wYWdpbmF0ZWQtdmlldz4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPC9kaXY+CiAgICA8L3RmLWRhc2hib2FyZC1sYXlvdXQ+CgogICAgPHN0eWxlIGluY2x1ZGU9ImRhc2hib2FyZC1zdHlsZSI+PC9zdHlsZT4KICAgIDxzdHlsZT4KICAgICAgLm5vLWRhdGEtd2FybmluZyB7CiAgICAgICAgbWF4LXdpZHRoOiA1NDBweDsKICAgICAgICBtYXJnaW46IDgwcHggYXV0byAwIGF1dG87CiAgICAgIH0KCiAgICAgIC8qKiBEbyBub3QgbGV0IHRoZSBzdGVwcyBzZWxlY3RvciBvY2NsdWRlIHRoZSBydW4gc2VsZWN0b3IuICovCiAgICAgICNzdGVwcy1zZWxlY3Rvci1jb250YWluZXIgewogICAgICAgIG1heC1oZWlnaHQ6IDYwJTsKICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgICB9CiAgICA8L3N0eWxlPgogIGAsdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxlb2UucHJvdG90eXBlLCJyZWxvYWRPblJlYWR5Iix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLGVvZS5wcm90b3R5cGUsIl90aW1lRGlzcGxheVR5cGUiLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheX0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLGVvZS5wcm90b3R5cGUsIl9zZWxlY3RlZFJ1bnMiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sZW9lLnByb3RvdHlwZSwiX3J1blRvVGFnSW5mbyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxlb2UucHJvdG90eXBlLCJfdGFnVG9SdW5Ub0RhdGEiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3Qsbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGVvZS5wcm90b3R5cGUsIl9ydW5Ub1N0ZXAiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxlb2UucHJvdG90eXBlLCJfZGF0YU5vdEZvdW5kIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLGVvZS5wcm90b3R5cGUsIl90YWdGaWx0ZXIiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxlb2UucHJvdG90eXBlLCJfY2F0ZWdvcmllc0RvbVJlYWR5Iix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGVvZS5wcm90b3R5cGUsIl9nZXRDYXRlZ29yeUl0ZW1LZXkiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsYnIpXSxlb2UucHJvdG90eXBlLCJfcmVxdWVzdE1hbmFnZXIiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXIsbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLGVvZS5wcm90b3R5cGUsIl9zdGVwIix2b2lkIDApLHQoW3MoIl9ydW5Ub1RhZ0luZm8iLCJfc2VsZWN0ZWRSdW5zIiwiX3RhZ0ZpbHRlciIsIl9jYXRlZ29yaWVzRG9tUmVhZHkiKSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLGVvZS5wcm90b3R5cGUsIl9jYXRlZ29yaWVzIixudWxsKSx0KFtzKCJfc2VsZWN0ZWRSdW5zIiwiX3J1blRvVGFnSW5mbyIpLGUoImRlc2lnbjp0eXBlIixBcnJheSksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sZW9lLnByb3RvdHlwZSwiX3JlbGV2YW50U2VsZWN0ZWRSdW5zIixudWxsKSx0KFtzKCJfdGFnVG9SdW5Ub0RhdGEiKSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxlb2UucHJvdG90eXBlLCJfcnVuVG9BdmFpbGFibGVUaW1lRW50cmllcyIsbnVsbCksZW9lPXQoW2koInRmLXByLWN1cnZlLWRhc2hib2FyZCIpXSxlb2UpO2xldCBub2U9Y2xhc3MgZXh0ZW5kcyhjcihFbCkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLnJlbG9hZE9uUmVhZHk9ITAsdGhpcy5fc2hvd0Rvd25sb2FkTGlua3M9UXMoIl9zaG93RG93bmxvYWRMaW5rcyIse2RlZmF1bHRWYWx1ZTohMSx1c2VMb2NhbFN0b3JhZ2U6ITB9KS5jYWxsKHRoaXMpLHRoaXMuX3Ntb290aGluZ1dlaWdodD1ybCgiX3Ntb290aGluZ1dlaWdodCIse2RlZmF1bHRWYWx1ZTouNn0pLmNhbGwodGhpcyksdGhpcy5faWdub3JlWU91dGxpZXJzPVFzKCJfaWdub3JlWU91dGxpZXJzIix7ZGVmYXVsdFZhbHVlOiEwLHVzZUxvY2FsU3RvcmFnZTohMH0pLmNhbGwodGhpcyksdGhpcy5feFR5cGU9d0N0LlNURVAsdGhpcy5fc2VsZWN0ZWRSdW5zPVtdLHRoaXMuX3RhZ0ZpbHRlcj0iIix0aGlzLl9jYXRlZ29yaWVzPVtdLHRoaXMuX2dldENhdGVnb3J5SXRlbUtleT10PT50LnRhZyx0aGlzLl9yZXF1ZXN0TWFuYWdlcj1uZXcgYnIoNTApLHRoaXMuX3Nob3dEb3dubG9hZExpbmtzT2JzZXJ2ZXI9dGwoIl9zaG93RG93bmxvYWRMaW5rcyIse2RlZmF1bHRWYWx1ZTohMSx1c2VMb2NhbFN0b3JhZ2U6ITB9KSx0aGlzLl9zbW9vdGhpbmdXZWlnaHRPYnNlcnZlcj1vbCgiX3Ntb290aGluZ1dlaWdodCIse2RlZmF1bHRWYWx1ZTouNn0pLHRoaXMuX2lnbm9yZVlPdXRsaWVyc09ic2VydmVyPXRsKCJfaWdub3JlWU91dGxpZXJzIix7ZGVmYXVsdFZhbHVlOiEwLHVzZUxvY2FsU3RvcmFnZTohMH0pfWdldCBfc21vb3RoaW5nRW5hYmxlZCgpe3JldHVybiB0aGlzLl9zbW9vdGhpbmdXZWlnaHQ+MH1fZ2V0Q2F0ZWdvcnlLZXkodCl7cmV0dXJuIHQubWV0YWRhdGEudHlwZT09QXIuU0VBUkNIX1JFU1VMVFM/IiI6dC5uYW1lfV9zaG91bGRPcGVuKHQpe3JldHVybiB0PD0yfXJlYWR5KCl7c3VwZXIucmVhZHkoKSx0aGlzLnJlbG9hZE9uUmVhZHkmJnRoaXMucmVsb2FkKCl9cmVsb2FkKCl7dGhpcy5fZmV0Y2hUYWdzKCkudGhlbigoKCk9Pnt0aGlzLl9yZWxvYWRDaGFydHMoKX0pKX1fZmV0Y2hUYWdzKCl7Y29uc3QgdD1FcigpLnBsdWdpblJvdXRlKCJzY2FsYXJzIiwiL3RhZ3MiKTtyZXR1cm4gdGhpcy5fcmVxdWVzdE1hbmFnZXIucmVxdWVzdCh0KS50aGVuKCh0PT57aWYoQ2UuZXhwb3J0cy5pc0VxdWFsKHQsdGhpcy5fcnVuVG9UYWdJbmZvKSlyZXR1cm47Y29uc3QgZT1mcihDZS5leHBvcnRzLm1hcFZhbHVlcyh0LCh0PT5PYmplY3Qua2V5cyh0KSkpKTt0aGlzLnNldCgiX2RhdGFOb3RGb3VuZCIsMD09PWUubGVuZ3RoKSx0aGlzLnNldCgiX3J1blRvVGFnSW5mbyIsdCksdGhpcy5hc3luYygoKCk9Pnt0aGlzLnNldCgiX2NhdGVnb3JpZXNEb21SZWFkeSIsITApfSkpfSkpfV9yZWxvYWRDaGFydHMoKXt0aGlzLnJvb3QucXVlcnlTZWxlY3RvckFsbCgidGYtc2NhbGFyLWNhcmQiKS5mb3JFYWNoKCh0PT57dC5yZWxvYWQoKX0pKX1fdXBkYXRlQ2F0ZWdvcmllcygpe3ZhciB0PXRoaXMuX3NlbGVjdGVkUnVucztsZXQgZSxuPXRoaXMuX3RhZ0ZpbHRlcjtlPVByKENlLmV4cG9ydHMubWFwVmFsdWVzKHRoaXMuX3J1blRvVGFnSW5mbywodD0+T2JqZWN0LmtleXModCkpKSx0LG4pLGUuZm9yRWFjaCgodD0+e3QuaXRlbXM9dC5pdGVtcy5tYXAoKHQ9Pih7dGFnOnQudGFnLHNlcmllczp0LnJ1bnMubWFwKChlPT4oe3J1bjplLHRhZzp0LnRhZ30pKSl9KSkpfSkpLHRoaXMudXBkYXRlQXJyYXlQcm9wKCJfY2F0ZWdvcmllcyIsZSx0aGlzLl9nZXRDYXRlZ29yeUtleSl9X3RhZ01ldGFkYXRhKHQsZSxuKXtjb25zdCBpPXQubmFtZSxyPW4udGFnLG89e307bi5zZXJpZXMuZm9yRWFjaCgoKHtydW46dH0pPT57b1t0XT1lW3RdW3JdfSkpO2NvbnN0IGE9ci5yZXBsYWNlKC9cL3NjYWxhcl9zdW1tYXJ5JC8sIiIpO2xldHtkZXNjcmlwdGlvbjpzLGRpc3BsYXlOYW1lOmx9PWtPKG8sYSk7cmV0dXJuIHQubWV0YWRhdGEudHlwZT09QXIuUFJFRklYX0dST1VQJiZsLnN0YXJ0c1dpdGgoaSsiLyIpJiYobD1sLnNsaWNlKGkubGVuZ3RoKzEpKSx7ZGVzY3JpcHRpb246cyxkaXNwbGF5TmFtZTpsfX19O25vZS50ZW1wbGF0ZT14ZWAKICAgIDx0Zi1kYXNoYm9hcmQtbGF5b3V0PgogICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyIiBzbG90PSJzaWRlYmFyIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZXR0aW5ncyI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyLXNlY3Rpb24iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJsaW5lLWl0ZW0iPgogICAgICAgICAgICAgIDxwYXBlci1jaGVja2JveAogICAgICAgICAgICAgICAgaWQ9InNob3ctZG93bmxvYWQtbGlua3MiCiAgICAgICAgICAgICAgICBjaGVja2VkPSJ7e19zaG93RG93bmxvYWRMaW5rc319IgogICAgICAgICAgICAgICAgPlNob3cgZGF0YSBkb3dubG9hZCBsaW5rczwvcGFwZXItY2hlY2tib3gKICAgICAgICAgICAgICA+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJsaW5lLWl0ZW0iPgogICAgICAgICAgICAgIDxwYXBlci1jaGVja2JveAogICAgICAgICAgICAgICAgaWQ9Imlnbm9yZS15LW91dGxpZXIiCiAgICAgICAgICAgICAgICBjaGVja2VkPSJ7e19pZ25vcmVZT3V0bGllcnN9fSIKICAgICAgICAgICAgICAgID5JZ25vcmUgb3V0bGllcnMgaW4gY2hhcnQgc2NhbGluZzwvcGFwZXItY2hlY2tib3gKICAgICAgICAgICAgICA+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGlkPSJ0b29sdGlwLXNvcnRpbmciPgogICAgICAgICAgICAgIDxkaXY+VG9vbHRpcCBzb3J0aW5nIG1ldGhvZDo8L2Rpdj4KICAgICAgICAgICAgICA8cGFwZXItZHJvcGRvd24tbWVudQogICAgICAgICAgICAgICAgbm8tbGFiZWwtZmxvYXQKICAgICAgICAgICAgICAgIHNlbGVjdGVkLWl0ZW0tbGFiZWw9Int7X3Rvb2x0aXBTb3J0aW5nTWV0aG9kfX0iCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgPHBhcGVyLWxpc3Rib3gKICAgICAgICAgICAgICAgICAgY2xhc3M9ImRyb3Bkb3duLWNvbnRlbnQiCiAgICAgICAgICAgICAgICAgIHNlbGVjdGVkPSIwIgogICAgICAgICAgICAgICAgICBzbG90PSJkcm9wZG93bi1jb250ZW50IgogICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICA8cGFwZXItaXRlbT5kZWZhdWx0PC9wYXBlci1pdGVtPgogICAgICAgICAgICAgICAgICA8cGFwZXItaXRlbT5kZXNjZW5kaW5nPC9wYXBlci1pdGVtPgogICAgICAgICAgICAgICAgICA8cGFwZXItaXRlbT5hc2NlbmRpbmc8L3BhcGVyLWl0ZW0+CiAgICAgICAgICAgICAgICAgIDxwYXBlci1pdGVtPm5lYXJlc3Q8L3BhcGVyLWl0ZW0+CiAgICAgICAgICAgICAgICA8L3BhcGVyLWxpc3Rib3g+CiAgICAgICAgICAgICAgPC9wYXBlci1kcm9wZG93bi1tZW51PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ic2lkZWJhci1zZWN0aW9uIj4KICAgICAgICAgICAgPHRmLXNtb290aGluZy1pbnB1dAogICAgICAgICAgICAgIHdlaWdodD0ie3tfc21vb3RoaW5nV2VpZ2h0fX0iCiAgICAgICAgICAgICAgc3RlcD0iMC4wMDEiCiAgICAgICAgICAgICAgbWluPSIwIgogICAgICAgICAgICAgIG1heD0iMC45OTkiCiAgICAgICAgICAgID48L3RmLXNtb290aGluZy1pbnB1dD4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ic2lkZWJhci1zZWN0aW9uIj4KICAgICAgICAgICAgPHRmLW9wdGlvbi1zZWxlY3RvcgogICAgICAgICAgICAgIGlkPSJ4LXR5cGUtc2VsZWN0b3IiCiAgICAgICAgICAgICAgbmFtZT0iSG9yaXpvbnRhbCBBeGlzIgogICAgICAgICAgICAgIHNlbGVjdGVkLWlkPSJ7e194VHlwZX19IgogICAgICAgICAgICA+CiAgICAgICAgICAgICAgPHBhcGVyLWJ1dHRvbiBpZD0ic3RlcCI+c3RlcDwvcGFwZXItYnV0dG9uCiAgICAgICAgICAgICAgPjwhLS0KICAgICAgICAgICAgLS0+PHBhcGVyLWJ1dHRvbiBpZD0icmVsYXRpdmUiPnJlbGF0aXZlPC9wYXBlci1idXR0b24KICAgICAgICAgICAgICA+PCEtLQogICAgICAgICAgICAtLT48cGFwZXItYnV0dG9uIGlkPSJ3YWxsX3RpbWUiPndhbGw8L3BhcGVyLWJ1dHRvbj4KICAgICAgICAgICAgPC90Zi1vcHRpb24tc2VsZWN0b3I+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyLXNlY3Rpb24gcnVucy1zZWxlY3RvciI+CiAgICAgICAgICA8dGYtcnVucy1zZWxlY3RvciBzZWxlY3RlZC1ydW5zPSJ7e19zZWxlY3RlZFJ1bnN9fSI+CiAgICAgICAgICA8L3RmLXJ1bnMtc2VsZWN0b3I+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJjZW50ZXIiIHNsb3Q9ImNlbnRlciI+CiAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19kYXRhTm90Rm91bmRdXSI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJuby1kYXRhLXdhcm5pbmciPgogICAgICAgICAgICA8aDM+Tm8gc2NhbGFyIGRhdGEgd2FzIGZvdW5kLjwvaDM+CiAgICAgICAgICAgIDxwPlByb2JhYmxlIGNhdXNlczo8L3A+CiAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICA8bGk+WW91IGhhdmVu4oCZdCB3cml0dGVuIGFueSBzY2FsYXIgZGF0YSB0byB5b3VyIGV2ZW50IGZpbGVzLjwvbGk+CiAgICAgICAgICAgICAgPGxpPlRlbnNvckJvYXJkIGNhbuKAmXQgZmluZCB5b3VyIGV2ZW50IGZpbGVzLjwvbGk+CiAgICAgICAgICAgIDwvdWw+CgogICAgICAgICAgICA8cD4KICAgICAgICAgICAgICBJZiB5b3XigJlyZSBuZXcgdG8gdXNpbmcgVGVuc29yQm9hcmQsIGFuZCB3YW50IHRvIGZpbmQgb3V0IGhvdyB0bwogICAgICAgICAgICAgIGFkZCBkYXRhIGFuZCBzZXQgdXAgeW91ciBldmVudCBmaWxlcywgY2hlY2sgb3V0IHRoZQogICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vdGVuc29yZmxvdy90ZW5zb3Jib2FyZC9ibG9iL21hc3Rlci9SRUFETUUubWQiCiAgICAgICAgICAgICAgICA+UkVBRE1FPC9hCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgIGFuZCBwZXJoYXBzIHRoZQogICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICBocmVmPSJodHRwczovL3d3dy50ZW5zb3JmbG93Lm9yZy9nZXRfc3RhcnRlZC9zdW1tYXJpZXNfYW5kX3RlbnNvcmJvYXJkIgogICAgICAgICAgICAgICAgPlRlbnNvckJvYXJkIHR1dG9yaWFsPC9hCiAgICAgICAgICAgICAgPi4KICAgICAgICAgICAgPC9wPgoKICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgSWYgeW91IHRoaW5rIFRlbnNvckJvYXJkIGlzIGNvbmZpZ3VyZWQgcHJvcGVybHksIHBsZWFzZSBzZWUKICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29yYm9hcmQvYmxvYi9tYXN0ZXIvUkVBRE1FLm1kI215LXRlbnNvcmJvYXJkLWlzbnQtc2hvd2luZy1hbnktZGF0YS13aGF0cy13cm9uZyIKICAgICAgICAgICAgICAgID50aGUgc2VjdGlvbiBvZiB0aGUgUkVBRE1FIGRldm90ZWQgdG8gbWlzc2luZyBkYXRhIHByb2JsZW1zPC9hCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgIGFuZCBjb25zaWRlciBmaWxpbmcgYW4gaXNzdWUgb24gR2l0SHViLgogICAgICAgICAgICA8L3A+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1shX2RhdGFOb3RGb3VuZF1dIj4KICAgICAgICAgIDx0Zi10YWctZmlsdGVyZXIgdGFnLWZpbHRlcj0ie3tfdGFnRmlsdGVyfX0iPjwvdGYtdGFnLWZpbHRlcmVyPgogICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20tcmVwZWF0IiBpdGVtcz0iW1tfY2F0ZWdvcmllc11dIiBhcz0iY2F0ZWdvcnkiPgogICAgICAgICAgICA8dGYtY2F0ZWdvcnktcGFnaW5hdGVkLXZpZXcKICAgICAgICAgICAgICBjYXRlZ29yeT0iW1tjYXRlZ29yeV1dIgogICAgICAgICAgICAgIGluaXRpYWwtb3BlbmVkPSJbW19zaG91bGRPcGVuKGluZGV4KV1dIgogICAgICAgICAgICAgIGdldC1jYXRlZ29yeS1pdGVtLWtleT0iW1tfZ2V0Q2F0ZWdvcnlJdGVtS2V5XV0iCiAgICAgICAgICAgID4KICAgICAgICAgICAgICA8dGVtcGxhdGU+CiAgICAgICAgICAgICAgICA8dGYtc2NhbGFyLWNhcmQKICAgICAgICAgICAgICAgICAgYWN0aXZlPSJbW2FjdGl2ZV1dIgogICAgICAgICAgICAgICAgICBkYXRhLXRvLWxvYWQ9IltbaXRlbS5zZXJpZXNdXSIKICAgICAgICAgICAgICAgICAgaWdub3JlLXktb3V0bGllcnM9IltbX2lnbm9yZVlPdXRsaWVyc11dIgogICAgICAgICAgICAgICAgICBtdWx0aS1leHBlcmltZW50cz0iW1tfZ2V0TXVsdGlFeHBlcmltZW50cyhkYXRhU2VsZWN0aW9uKV1dIgogICAgICAgICAgICAgICAgICByZXF1ZXN0LW1hbmFnZXI9IltbX3JlcXVlc3RNYW5hZ2VyXV0iCiAgICAgICAgICAgICAgICAgIHNob3ctZG93bmxvYWQtbGlua3M9IltbX3Nob3dEb3dubG9hZExpbmtzXV0iCiAgICAgICAgICAgICAgICAgIHNtb290aGluZy1lbmFibGVkPSJbW19zbW9vdGhpbmdFbmFibGVkXV0iCiAgICAgICAgICAgICAgICAgIHNtb290aGluZy13ZWlnaHQ9IltbX3Ntb290aGluZ1dlaWdodF1dIgogICAgICAgICAgICAgICAgICB0YWctbWV0YWRhdGE9IltbX3RhZ01ldGFkYXRhKGNhdGVnb3J5LCBfcnVuVG9UYWdJbmZvLCBpdGVtKV1dIgogICAgICAgICAgICAgICAgICB0YWc9IltbaXRlbS50YWddXSIKICAgICAgICAgICAgICAgICAgdG9vbHRpcC1zb3J0aW5nLW1ldGhvZD0iW1tfdG9vbHRpcFNvcnRpbmdNZXRob2RdXSIKICAgICAgICAgICAgICAgICAgeC10eXBlPSJbW194VHlwZV1dIgogICAgICAgICAgICAgICAgICBiYXRjaC1zaXplPSJbW2ZlYXR1cmVGbGFncy5zY2FsYXJzQmF0Y2hTaXplXV0iCiAgICAgICAgICAgICAgICAgIGluLWNvbGFiPSJbW2ZlYXR1cmVGbGFncy5pbkNvbGFiXV0iCiAgICAgICAgICAgICAgICA+PC90Zi1zY2FsYXItY2FyZD4KICAgICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICA8L3RmLWNhdGVnb3J5LXBhZ2luYXRlZC12aWV3PgogICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8L3RlbXBsYXRlPgogICAgICA8L2Rpdj4KICAgIDwvdGYtZGFzaGJvYXJkLWxheW91dD4KCiAgICA8c3R5bGUgaW5jbHVkZT0iZGFzaGJvYXJkLXN0eWxlIj48L3N0eWxlPgogICAgPHN0eWxlPgogICAgICAjdG9vbHRpcC1zb3J0aW5nIHsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIG1hcmdpbi10b3A6IDE1cHg7CiAgICAgIH0KCiAgICAgICN0b29sdGlwLXNvcnRpbmcgcGFwZXItZHJvcGRvd24tbWVudSB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDEwcHg7CiAgICAgICAgLS1wYXBlci1pbnB1dC1jb250YWluZXItZm9jdXMtY29sb3I6IHZhcigtLXRiLW9yYW5nZS1zdHJvbmcpOwogICAgICAgIHdpZHRoOiAxMDVweDsKICAgICAgfQoKICAgICAgLmxpbmUtaXRlbSB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgcGFkZGluZy10b3A6IDVweDsKICAgICAgfQogICAgICAubm8tZGF0YS13YXJuaW5nIHsKICAgICAgICBtYXgtd2lkdGg6IDU0MHB4OwogICAgICAgIG1hcmdpbjogODBweCBhdXRvIDAgYXV0bzsKICAgICAgfQogICAgICAuY2VudGVyIHsKICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYCx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLG5vZS5wcm90b3R5cGUsInJlbG9hZE9uUmVhZHkiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sbm9lLnByb3RvdHlwZSwiZmVhdHVyZUZsYWdzIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbixub3RpZnk6ITAsb2JzZXJ2ZXI6Il9zaG93RG93bmxvYWRMaW5rc09ic2VydmVyIn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sbm9lLnByb3RvdHlwZSwiX3Nob3dEb3dubG9hZExpbmtzIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyLG5vdGlmeTohMCxvYnNlcnZlcjoiX3Ntb290aGluZ1dlaWdodE9ic2VydmVyIn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxub2UucHJvdG90eXBlLCJfc21vb3RoaW5nV2VpZ2h0Iix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbixvYnNlcnZlcjoiX2lnbm9yZVlPdXRsaWVyc09ic2VydmVyIn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sbm9lLnByb3RvdHlwZSwiX2lnbm9yZVlPdXRsaWVycyIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxub2UucHJvdG90eXBlLCJfeFR5cGUiLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheX0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLG5vZS5wcm90b3R5cGUsIl9zZWxlY3RlZFJ1bnMiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sbm9lLnByb3RvdHlwZSwiX3J1blRvVGFnSW5mbyIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLG5vZS5wcm90b3R5cGUsIl9kYXRhTm90Rm91bmQiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sbm9lLnByb3RvdHlwZSwiX3RhZ0ZpbHRlciIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLG5vZS5wcm90b3R5cGUsIl9jYXRlZ29yaWVzRG9tUmVhZHkiLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheX0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLG5vZS5wcm90b3R5cGUsIl9jYXRlZ29yaWVzIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLG5vZS5wcm90b3R5cGUsIl9nZXRDYXRlZ29yeUl0ZW1LZXkiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsYnIpXSxub2UucHJvdG90eXBlLCJfcmVxdWVzdE1hbmFnZXIiLHZvaWQgMCksdChbcygiX3Ntb290aGluZ1dlaWdodCIpLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxub2UucHJvdG90eXBlLCJfc21vb3RoaW5nRW5hYmxlZCIsbnVsbCksdChbYSgiX3J1blRvVGFnSW5mbyIsIl9zZWxlY3RlZFJ1bnMiLCJfdGFnRmlsdGVyIiwiX2NhdGVnb3JpZXNEb21SZWFkeSIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sbm9lLnByb3RvdHlwZSwiX3VwZGF0ZUNhdGVnb3JpZXMiLG51bGwpLG5vZT10KFtpKCJ0Zi1zY2FsYXItZGFzaGJvYXJkIildLG5vZSk7bGV0IGlvZT1jbGFzcyBleHRlbmRzKGNyKHdlKSl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuX3RleHRzPVtdLHRoaXMuX2NhbmNlbGxlcj1uZXcgeE99Z2V0IF9ydW5Db2xvcigpe3JldHVybiBfTyh0aGlzLnJ1bil9X2NoYW5nZVJ1bkNvbG9yKCl7dGhpcy51cGRhdGVTdHlsZXMoeyItLXRiLXRleHQtbG9hZGVyLW91dGxpbmUiOnRoaXMuX3J1bkNvbG9yfSl9YXR0YWNoZWQoKXt0aGlzLnJlbG9hZCgpfXJlbG9hZCgpe2lmKCF0aGlzLmlzQXR0YWNoZWQpcmV0dXJuO3RoaXMuX2NhbmNlbGxlci5jYW5jZWxBbGwoKTtjb25zdCB0PVBPKEVyKCkucGx1Z2luUm91dGUoInRleHQiLCIvdGV4dCIpLHt0YWc6dGhpcy50YWcscnVuOnRoaXMucnVuLG1hcmtkb3duOnRoaXMubWFya2Rvd25FbmFibGVkPyJ0cnVlIjoiZmFsc2UifSksZT10aGlzLl9jYW5jZWxsZXIuY2FuY2VsbGFibGUoKHQ9PntpZih0LmNhbmNlbGxlZClyZXR1cm47Y29uc3QgZT10LnZhbHVlLm1hcCgodD0+KHt3YWxsX3RpbWU6bmV3IERhdGUoMWUzKnQud2FsbF90aW1lKSxzdGVwOnQuc3RlcCx0ZXh0OnQudGV4dH0pKSk7dGhpcy5zZXQoIl90ZXh0cyIsZS5zbGljZSgpLnJldmVyc2UoKSl9KSk7dGhpcy5yZXF1ZXN0TWFuYWdlci5yZXF1ZXN0KHQpLnRoZW4oZSl9X2Zvcm1hdFN0ZXAodCl7cmV0dXJuIER5KCIsIikodCl9fTtpb2UudGVtcGxhdGU9eGVgCiAgICA8dGYtY2FyZC1oZWFkaW5nIHJ1bj0iW1tydW5dXSIgdGFnPSJbW3RhZ11dIiBjb2xvcj0iW1tfcnVuQ29sb3JdXSI+CiAgICA8L3RmLWNhcmQtaGVhZGluZz4KICAgIDxwYXBlci1tYXRlcmlhbAogICAgICBlbGV2YXRpb249IjEiCiAgICAgIGlkPSJzdGVwcy1jb250YWluZXIiCiAgICAgIGNsYXNzPSJjb250YWluZXIgc2Nyb2xsYmFyIgogICAgPgogICAgICA8dGVtcGxhdGUgaXM9ImRvbS1yZXBlYXQiIGl0ZW1zPSJbW190ZXh0c11dIj4KICAgICAgICA8cGFwZXItbWF0ZXJpYWwgZWxldmF0aW9uPSIxIiBjbGFzcz0ic3RlcC1jb250YWluZXIiPgogICAgICAgICAgc3RlcCA8c3BhbiBjbGFzcz0ic3RlcC12YWx1ZSI+W1tfZm9ybWF0U3RlcChpdGVtLnN0ZXApXV08L3NwYW4+CiAgICAgICAgPC9wYXBlci1tYXRlcmlhbD4KICAgICAgICA8cGFwZXItbWF0ZXJpYWwgZWxldmF0aW9uPSIxIiBjbGFzcz0idGV4dCI+CiAgICAgICAgICA8dGYtbWFya2Rvd24tdmlldyBodG1sPSJbW2l0ZW0udGV4dF1dIj48L3RmLW1hcmtkb3duLXZpZXc+CiAgICAgICAgPC9wYXBlci1tYXRlcmlhbD4KICAgICAgPC90ZW1wbGF0ZT4KICAgIDwvcGFwZXItbWF0ZXJpYWw+CiAgICA8c3R5bGUgaW5jbHVkZT0ic2Nyb2xsYmFyLXN0eWxlIj48L3N0eWxlPgogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGhlaWdodDogYXV0bzsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTVweDsKICAgICAgfQogICAgICAuc2Nyb2xsYmFyIHsKICAgICAgICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtOwogICAgICB9CiAgICAgICNzdGVwcy1jb250YWluZXIgewogICAgICAgIGJvcmRlci1yYWRpdXM6IDNweDsKICAgICAgICBib3JkZXI6IDJweCBzb2xpZCAvKiBjb2xvciBjb21wdXRlZCBhbmQgc2V0IGFzIGlubGluZSBzdHlsZSAqLzsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBtYXgtaGVpZ2h0OiA1MDBweDsKICAgICAgICBvdmVyZmxvdzogYXV0bzsKICAgICAgICBwYWRkaW5nOiAxMHB4OwogICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGItdGV4dC1sb2FkZXItb3V0bGluZSk7CiAgICAgIH0KICAgICAgLnRleHQgewogICAgICAgIGJhY2tncm91bmQtY29sb3I6IGluaGVyaXQ7CiAgICAgICAgYm9yZGVyLXJhZGl1czogMCAzcHggM3B4IDNweDsKICAgICAgICBwYWRkaW5nOiA1cHg7CiAgICAgICAgd29yZC1icmVhazogYnJlYWstd29yZDsKICAgICAgfQogICAgICAuc3RlcC1jb250YWluZXIgewogICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRiLXVpLWxpZ2h0LWFjY2VudCk7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTsKICAgICAgICBib3JkZXItcmFkaXVzOiAzcHggM3B4IDAgMDsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS10Yi11aS1ib3JkZXIpOwogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgZm9udC1zdHlsZTogaXRhbGljOwogICAgICAgIG1hcmdpbi1sZWZ0OiAtMXB4OyAvKiB0byBjb3JyZWN0IGZvciBib3JkZXIgKi8KICAgICAgICBwYWRkaW5nOiAzcHg7CiAgICAgIH0KICAgICAgLnN0ZXAtY29udGFpbmVyOm5vdCg6Zmlyc3QtY2hpbGQpIHsKICAgICAgICBtYXJnaW4tdG9wOiAxNXB4OwogICAgICB9CgogICAgICB0Zi1jYXJkLWhlYWRpbmcgewogICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYCx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxpb2UucHJvdG90eXBlLCJydW4iLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0saW9lLnByb3RvdHlwZSwidGFnIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0saW9lLnByb3RvdHlwZSwibWFya2Rvd25FbmFibGVkIix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxpb2UucHJvdG90eXBlLCJfdGV4dHMiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsYnIpXSxpb2UucHJvdG90eXBlLCJyZXF1ZXN0TWFuYWdlciIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIix4TyldLGlvZS5wcm90b3R5cGUsIl9jYW5jZWxsZXIiLHZvaWQgMCksdChbcygicnVuIiksZSgiZGVzaWduOnR5cGUiLFN0cmluZyksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0saW9lLnByb3RvdHlwZSwiX3J1bkNvbG9yIixudWxsKSx0KFthKCJfcnVuQ29sb3IiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLGlvZS5wcm90b3R5cGUsIl9jaGFuZ2VSdW5Db2xvciIsbnVsbCksaW9lPXQoW2koInRmLXRleHQtbG9hZGVyIildLGlvZSk7bGV0IHJvZT1jbGFzcyBleHRlbmRzKGNyKHdlKSl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMucmVsb2FkT25SZWFkeT0hMCx0aGlzLl9tYXJrZG93bkVuYWJsZWQ9UXMoIl9tYXJrZG93bkVuYWJsZWQiLHtkZWZhdWx0VmFsdWU6ITAsdXNlTG9jYWxTdG9yYWdlOiEwfSkuY2FsbCh0aGlzKSx0aGlzLl9yZXF1ZXN0TWFuYWdlcj1uZXcgYnIsdGhpcy5fbWFya2Rvd25FbmFibGVkU3RvcmFnZU9ic2VydmVyPXRsKCJfbWFya2Rvd25FbmFibGVkIix7ZGVmYXVsdFZhbHVlOiEwLHVzZUxvY2FsU3RvcmFnZTohMH0pfXN0YXRpYyBnZXQgb2JzZXJ2ZXJzKCl7cmV0dXJuWyJfbWFya2Rvd25FbmFibGVkT2JzZXJ2ZXIoX21hcmtkb3duRW5hYmxlZCkiXX1yZWFkeSgpe3N1cGVyLnJlYWR5KCksdGhpcy5yZWxvYWRPblJlYWR5JiZ0aGlzLnJlbG9hZCgpfXJlbG9hZCgpe3RoaXMuX2ZldGNoVGFncygpLnRoZW4oKCgpPT57dGhpcy5fcmVsb2FkVGV4dHMoKX0pKX1fc2hvdWxkT3Blbih0KXtyZXR1cm4gdDw9Mn1fZmV0Y2hUYWdzKCl7Y29uc3QgdD1FcigpLnBsdWdpblJvdXRlKCJ0ZXh0IiwiL3RhZ3MiKTtyZXR1cm4gdGhpcy5fcmVxdWVzdE1hbmFnZXIucmVxdWVzdCh0KS50aGVuKCh0PT57aWYoQ2UuZXhwb3J0cy5pc0VxdWFsKHQsdGhpcy5fcnVuVG9UYWcpKXJldHVybjtjb25zdCBlPWZyKHQpO3RoaXMuc2V0KCJfZGF0YU5vdEZvdW5kIiwwPT09ZS5sZW5ndGgpLHRoaXMuc2V0KCJfcnVuVG9UYWciLHQpLHRoaXMuYXN5bmMoKCgpPT57dGhpcy5zZXQoIl9jYXRlZ29yaWVzRG9tUmVhZHkiLCEwKX0pKX0pKX1fcmVsb2FkVGV4dHMoKXt0aGlzLnJvb3QucXVlcnlTZWxlY3RvckFsbCgidGYtdGV4dC1sb2FkZXIiKS5mb3JFYWNoKCh0PT57dC5yZWxvYWQoKX0pKX1nZXQgX2NhdGVnb3JpZXMoKXtyZXR1cm4gSXIodGhpcy5fcnVuVG9UYWcsdGhpcy5fc2VsZWN0ZWRSdW5zLHRoaXMuX3RhZ0ZpbHRlcil9X21hcmtkb3duRW5hYmxlZE9ic2VydmVyKCl7dGhpcy5fcmVsb2FkVGV4dHMoKX19O3JvZS50ZW1wbGF0ZT14ZWAKICAgIDx0Zi1kYXNoYm9hcmQtbGF5b3V0PgogICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyIiBzbG90PSJzaWRlYmFyIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyLXNlY3Rpb24iPgogICAgICAgICAgPGRpdiBjbGFzcz0ibGluZS1pdGVtIj4KICAgICAgICAgICAgPHBhcGVyLWNoZWNrYm94IGNoZWNrZWQ9Int7X21hcmtkb3duRW5hYmxlZH19IgogICAgICAgICAgICAgID5FbmFibGUgTWFya2Rvd248L3BhcGVyLWNoZWNrYm94CiAgICAgICAgICAgID4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNpZGViYXItc2VjdGlvbiBydW5zLXNlbGVjdG9yIj4KICAgICAgICAgIDx0Zi1ydW5zLXNlbGVjdG9yIHNlbGVjdGVkLXJ1bnM9Int7X3NlbGVjdGVkUnVuc319Ij4KICAgICAgICAgIDwvdGYtcnVucy1zZWxlY3Rvcj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImNlbnRlciIgc2xvdD0iY2VudGVyIj4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2RhdGFOb3RGb3VuZF1dIj4KICAgICAgICAgIDxkaXYgY2xhc3M9Im5vLWRhdGEtd2FybmluZyI+CiAgICAgICAgICAgIDxoMz5ObyB0ZXh0IGRhdGEgd2FzIGZvdW5kLjwvaDM+CiAgICAgICAgICAgIDxwPlByb2JhYmxlIGNhdXNlczo8L3A+CiAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICA8bGk+WW91IGhhdmVu4oCZdCB3cml0dGVuIGFueSB0ZXh0IGRhdGEgdG8geW91ciBldmVudCBmaWxlcy48L2xpPgogICAgICAgICAgICAgIDxsaT5UZW5zb3JCb2FyZCBjYW7igJl0IGZpbmQgeW91ciBldmVudCBmaWxlcy48L2xpPgogICAgICAgICAgICA8L3VsPgoKICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgSWYgeW914oCZcmUgbmV3IHRvIHVzaW5nIFRlbnNvckJvYXJkLCBhbmQgd2FudCB0byBmaW5kIG91dCBob3cgdG8KICAgICAgICAgICAgICBhZGQgZGF0YSBhbmQgc2V0IHVwIHlvdXIgZXZlbnQgZmlsZXMsIGNoZWNrIG91dCB0aGUKICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29yYm9hcmQvYmxvYi9tYXN0ZXIvUkVBRE1FLm1kIgogICAgICAgICAgICAgICAgPlJFQURNRTwvYQogICAgICAgICAgICAgID4KICAgICAgICAgICAgICBhbmQgcGVyaGFwcyB0aGUKICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly93d3cudGVuc29yZmxvdy5vcmcvZ2V0X3N0YXJ0ZWQvc3VtbWFyaWVzX2FuZF90ZW5zb3Jib2FyZCIKICAgICAgICAgICAgICAgID5UZW5zb3JCb2FyZCB0dXRvcmlhbDwvYQogICAgICAgICAgICAgID4uCiAgICAgICAgICAgIDwvcD4KCiAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgIElmIHlvdSB0aGluayBUZW5zb3JCb2FyZCBpcyBjb25maWd1cmVkIHByb3Blcmx5LCBwbGVhc2Ugc2VlCiAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmJvYXJkL2Jsb2IvbWFzdGVyL1JFQURNRS5tZCNteS10ZW5zb3Jib2FyZC1pc250LXNob3dpbmctYW55LWRhdGEtd2hhdHMtd3JvbmciCiAgICAgICAgICAgICAgICA+dGhlIHNlY3Rpb24gb2YgdGhlIFJFQURNRSBkZXZvdGVkIHRvIG1pc3NpbmcgZGF0YSBwcm9ibGVtczwvYQogICAgICAgICAgICAgID4KICAgICAgICAgICAgICBhbmQgY29uc2lkZXIgZmlsaW5nIGFuIGlzc3VlIG9uIEdpdEh1Yi4KICAgICAgICAgICAgPC9wPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbIV9kYXRhTm90Rm91bmRdXSI+CiAgICAgICAgICA8dGYtdGFnLWZpbHRlcmVyIHRhZy1maWx0ZXI9Int7X3RhZ0ZpbHRlcn19Ij48L3RmLXRhZy1maWx0ZXJlcj4KICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLXJlcGVhdCIgaXRlbXM9IltbX2NhdGVnb3JpZXNdXSIgYXM9ImNhdGVnb3J5Ij4KICAgICAgICAgICAgPHRmLWNhdGVnb3J5LXBhZ2luYXRlZC12aWV3CiAgICAgICAgICAgICAgY2F0ZWdvcnk9IltbY2F0ZWdvcnldXSIKICAgICAgICAgICAgICBpbml0aWFsLW9wZW5lZD0iW1tfc2hvdWxkT3BlbihpbmRleCldXSIKICAgICAgICAgICAgPgogICAgICAgICAgICAgIDx0ZW1wbGF0ZT4KICAgICAgICAgICAgICAgIDx0Zi10ZXh0LWxvYWRlcgogICAgICAgICAgICAgICAgICBhY3RpdmU9IltbYWN0aXZlXV0iCiAgICAgICAgICAgICAgICAgIHRhZz0iW1tpdGVtLnRhZ11dIgogICAgICAgICAgICAgICAgICBydW49IltbaXRlbS5ydW5dXSIKICAgICAgICAgICAgICAgICAgcmVxdWVzdC1tYW5hZ2VyPSJbW19yZXF1ZXN0TWFuYWdlcl1dIgogICAgICAgICAgICAgICAgICBtYXJrZG93bi1lbmFibGVkPSJbW19tYXJrZG93bkVuYWJsZWRdXSIKICAgICAgICAgICAgICAgID48L3RmLXRleHQtbG9hZGVyPgogICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgIDwvdGYtY2F0ZWdvcnktcGFnaW5hdGVkLXZpZXc+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDwvZGl2PgogICAgPC90Zi1kYXNoYm9hcmQtbGF5b3V0PgogICAgPHN0eWxlIGluY2x1ZGU9ImRhc2hib2FyZC1zdHlsZSI+PC9zdHlsZT4KICAgIDxzdHlsZT4KICAgICAgLm5vLWRhdGEtd2FybmluZyB7CiAgICAgICAgbWF4LXdpZHRoOiA1NDBweDsKICAgICAgICBtYXJnaW46IDgwcHggYXV0byAwIGF1dG87CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYCx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLHJvZS5wcm90b3R5cGUsInJlbG9hZE9uUmVhZHkiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFuLG5vdGlmeTohMCxvYnNlcnZlcjoiX21hcmtkb3duRW5hYmxlZFN0b3JhZ2VPYnNlcnZlciJ9KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLHJvZS5wcm90b3R5cGUsIl9tYXJrZG93bkVuYWJsZWQiLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheX0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLHJvZS5wcm90b3R5cGUsIl9zZWxlY3RlZFJ1bnMiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0scm9lLnByb3RvdHlwZSwiX3J1blRvVGFnIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0scm9lLnByb3RvdHlwZSwiX2RhdGFOb3RGb3VuZCIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxyb2UucHJvdG90eXBlLCJfdGFnRmlsdGVyIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0scm9lLnByb3RvdHlwZSwiX2NhdGVnb3JpZXNEb21SZWFkeSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxyb2UucHJvdG90eXBlLCJfcmVxdWVzdE1hbmFnZXIiLHZvaWQgMCksdChbcygiX3J1blRvVGFnIiwiX3NlbGVjdGVkUnVucyIsIl90YWdGaWx0ZXIiLCJfY2F0ZWdvcmllc0RvbVJlYWR5IiksZSgiZGVzaWduOnR5cGUiLEFycmF5KSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxyb2UucHJvdG90eXBlLCJfY2F0ZWdvcmllcyIsbnVsbCkscm9lPXQoW2koInRmLXRleHQtZGFzaGJvYXJkIildLHJvZSk7bGV0IG9vZT1jbGFzcyBleHRlbmRzIHdle2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl90ZW1wbGF0ZT1udWxsLHRoaXMudGZfYmFja2VuZD1TQXR9fTtvb2U9dChbaSgidGYtYmFja2VuZCIpXSxvb2UpO2xldCBhb2U9Y2xhc3MgZXh0ZW5kcyB3ZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5fdGVtcGxhdGU9bnVsbCx0aGlzLnJ1bnNDb2xvclNjYWxlPV9PfX07YW9lPXQoW2koInRmLWNvbG9yLXNjYWxlIildLGFvZSk7bGV0IHNvZT1jbGFzcyBleHRlbmRzIHdle2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl90ZW1wbGF0ZT1udWxsLHRoaXMudGZfZ2xvYmFscz1Ec319O3NvZT10KFtpKCJ0Zi1nbG9iYWxzIildLHNvZSk7dmFyIGxvZT1PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxhZGRMaW1pdExpc3RlbmVyOndsLHJlbW92ZUxpbWl0TGlzdGVuZXI6U2wsZ2V0TGltaXQ6TWwsc2V0TGltaXQ6ZnVuY3Rpb24gY29lKHQpe2lmKHQhPT1NYXRoLmZsb29yKHQpKXRocm93IG5ldyBFcnJvcihgbGltaXQgbXVzdCBiZSBhbiBpbnRlZ2VyLCBidXQgZ290OiAke3R9YCk7aWYodDw9MCl0aHJvdyBuZXcgRXJyb3IoYGxpbWl0IG11c3QgYmUgcG9zaXRpdmUsIGJ1dCBnb3Q6ICR7dH1gKTt0IT09YmwmJihibD10LGlsKHZsLGJsLHt1c2VMb2NhbFN0b3JhZ2U6ITB9KSx4bC5mb3JFYWNoKCh0PT57dCgpfSkpKX0sVGZEb21SZXBlYXQ6VGx9KTtsZXQgdW9lPWNsYXNzIGV4dGVuZHMgd2V7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuX3RlbXBsYXRlPW51bGwsdGhpcy50Zl9wYWdpbmF0ZWRfdmlldz1sb2V9fTt1b2U9dChbaSgidGYtcGFnaW5hdGVkLXZpZXctc3RvcmUiKV0sdW9lKTtsZXQgaG9lPWNsYXNzIGV4dGVuZHMgd2V7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuX3RlbXBsYXRlPW51bGwsdGhpcy50Zl9zdG9yYWdlPUlBdH19O2hvZT10KFtpKCJ0Zi1zdG9yYWdlIildLGhvZSl9KSgpOwoKIShmdW5jdGlvbigpewovKiEgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLgoKICAgIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZC9vciBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueQogICAgcHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLgoKICAgIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBUSEUgQVVUSE9SIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUyBXSVRICiAgICBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkKICAgIEFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIERJUkVDVCwKICAgIElORElSRUNULCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMgV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTQogICAgTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1IKICAgIE9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IKICAgIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuCiAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwp2YXIgdD1mdW5jdGlvbihlLG4pe3JldHVybih0PU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbih0LGUpe3QuX19wcm90b19fPWV9fHxmdW5jdGlvbih0LGUpe2Zvcih2YXIgbiBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLG4pJiYodFtuXT1lW25dKX0pKGUsbil9O2Z1bmN0aW9uIGUoZSxuKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgbiYmbnVsbCE9PW4pdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSAiK1N0cmluZyhuKSsiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGwiKTtmdW5jdGlvbiBvKCl7dGhpcy5jb25zdHJ1Y3Rvcj1lfXQoZSxuKSxlLnByb3RvdHlwZT1udWxsPT09bj9PYmplY3QuY3JlYXRlKG4pOihvLnByb3RvdHlwZT1uLnByb3RvdHlwZSxuZXcgbyl9ZnVuY3Rpb24gbih0LGUsbixvKXtyZXR1cm4gbmV3KG58fChuPVByb21pc2UpKSgoZnVuY3Rpb24oaSxhKXtmdW5jdGlvbiByKHQpe3RyeXtsKG8ubmV4dCh0KSl9Y2F0Y2godCl7YSh0KX19ZnVuY3Rpb24gcyh0KXt0cnl7bChvLnRocm93KHQpKX1jYXRjaCh0KXthKHQpfX1mdW5jdGlvbiBsKHQpe3QuZG9uZT9pKHQudmFsdWUpOihmdW5jdGlvbiBlKHQpe3JldHVybiB0IGluc3RhbmNlb2Ygbj90Om5ldyBuKChmdW5jdGlvbihlKXtlKHQpfSkpfSkodC52YWx1ZSkudGhlbihyLHMpfWwoKG89by5hcHBseSh0LGV8fFtdKSkubmV4dCgpKX0pKX1mdW5jdGlvbiBvKHQsZSl7dmFyIG4sbyxpLGEscj17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZpWzBdKXRocm93IGlbMV07cmV0dXJuIGlbMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gYT17bmV4dDpzKDApLHRocm93OnMoMSkscmV0dXJuOnMoMil9LCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihhW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLGE7ZnVuY3Rpb24gcyhhKXtyZXR1cm4gZnVuY3Rpb24ocyl7cmV0dXJuKGZ1bmN0aW9uIGwoYSl7aWYobil0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7Zm9yKDtyOyl0cnl7aWYobj0xLG8mJihpPTImYVswXT9vLnJldHVybjphWzBdP28udGhyb3d8fCgoaT1vLnJldHVybikmJmkuY2FsbChvKSwwKTpvLm5leHQpJiYhKGk9aS5jYWxsKG8sYVsxXSkpLmRvbmUpcmV0dXJuIGk7c3dpdGNoKG89MCxpJiYoYT1bMiZhWzBdLGkudmFsdWVdKSxhWzBdKXtjYXNlIDA6Y2FzZSAxOmk9YTticmVhaztjYXNlIDQ6cmV0dXJuIHIubGFiZWwrKyx7dmFsdWU6YVsxXSxkb25lOiExfTtjYXNlIDU6ci5sYWJlbCsrLG89YVsxXSxhPVswXTtjb250aW51ZTtjYXNlIDc6YT1yLm9wcy5wb3AoKSxyLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKGk9ci50cnlzLChpPWkubGVuZ3RoPjAmJmlbaS5sZW5ndGgtMV0pfHw2IT09YVswXSYmMiE9PWFbMF0pKXtyPTA7Y29udGludWV9aWYoMz09PWFbMF0mJighaXx8YVsxXT5pWzBdJiZhWzFdPGlbM10pKXtyLmxhYmVsPWFbMV07YnJlYWt9aWYoNj09PWFbMF0mJnIubGFiZWw8aVsxXSl7ci5sYWJlbD1pWzFdLGk9YTticmVha31pZihpJiZyLmxhYmVsPGlbMl0pe3IubGFiZWw9aVsyXSxyLm9wcy5wdXNoKGEpO2JyZWFrfWlbMl0mJnIub3BzLnBvcCgpLHIudHJ5cy5wb3AoKTtjb250aW51ZX1hPWUuY2FsbCh0LHIpfWNhdGNoKHQpe2E9WzYsdF0sbz0wfWZpbmFsbHl7bj1pPTB9aWYoNSZhWzBdKXRocm93IGFbMV07cmV0dXJue3ZhbHVlOmFbMF0/YVsxXTp2b2lkIDAsZG9uZTohMH19KShbYSxzXSl9fX1mdW5jdGlvbiBpKHQpe3ZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5pdGVyYXRvcixuPWUmJnRbZV0sbz0wO2lmKG4pcmV0dXJuIG4uY2FsbCh0KTtpZih0JiYibnVtYmVyIj09dHlwZW9mIHQubGVuZ3RoKXJldHVybntuZXh0OmZ1bmN0aW9uKCl7cmV0dXJuIHQmJm8+PXQubGVuZ3RoJiYodD12b2lkIDApLHt2YWx1ZTp0JiZ0W28rK10sZG9uZTohdH19fTt0aHJvdyBuZXcgVHlwZUVycm9yKGU/Ik9iamVjdCBpcyBub3QgaXRlcmFibGUuIjoiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLiIpfWZ1bmN0aW9uIGEodCxlKXt2YXIgbj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0W1N5bWJvbC5pdGVyYXRvcl07aWYoIW4pcmV0dXJuIHQ7dmFyIG8saSxhPW4uY2FsbCh0KSxyPVtdO3RyeXtmb3IoOyh2b2lkIDA9PT1lfHxlLS0gPjApJiYhKG89YS5uZXh0KCkpLmRvbmU7KXIucHVzaChvLnZhbHVlKX1jYXRjaCh0KXtpPXtlcnJvcjp0fX1maW5hbGx5e3RyeXtvJiYhby5kb25lJiYobj1hLnJldHVybikmJm4uY2FsbChhKX1maW5hbGx5e2lmKGkpdGhyb3cgaS5lcnJvcn19cmV0dXJuIHJ9ZnVuY3Rpb24gcih0LGUpe2Zvcih2YXIgbj0wLG89ZS5sZW5ndGgsaT10Lmxlbmd0aDtuPG87bisrLGkrKyl0W2ldPWVbbl07cmV0dXJuIHR9ZnVuY3Rpb24gcyh0KXtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIHM/KHRoaXMudj10LHRoaXMpOm5ldyBzKHQpfWZ1bmN0aW9uIGwodCxlLG4pe2lmKCFTeW1ib2wuYXN5bmNJdGVyYXRvcil0aHJvdyBuZXcgVHlwZUVycm9yKCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC4iKTt2YXIgbyxpPW4uYXBwbHkodCxlfHxbXSksYT1bXTtyZXR1cm4gbz17fSxyKCJuZXh0IikscigidGhyb3ciKSxyKCJyZXR1cm4iKSxvW1N5bWJvbC5hc3luY0l0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxvO2Z1bmN0aW9uIHIodCl7aVt0XSYmKG9bdF09ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihuLG8pe2EucHVzaChbdCxlLG4sb10pPjF8fGwodCxlKX0pKX0pfWZ1bmN0aW9uIGwodCxlKXt0cnl7IShmdW5jdGlvbiBuKHQpe3QudmFsdWUgaW5zdGFuY2VvZiBzP1Byb21pc2UucmVzb2x2ZSh0LnZhbHVlLnYpLnRoZW4oYyxkKTpwKGFbMF1bMl0sdCl9KShpW3RdKGUpKX1jYXRjaCh0KXtwKGFbMF1bM10sdCl9fWZ1bmN0aW9uIGModCl7bCgibmV4dCIsdCl9ZnVuY3Rpb24gZCh0KXtsKCJ0aHJvdyIsdCl9ZnVuY3Rpb24gcCh0LGUpe3QoZSksYS5zaGlmdCgpLGEubGVuZ3RoJiZsKGFbMF1bMF0sYVswXVsxXSl9fWZ1bmN0aW9uIGModCl7aWYoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKXRocm93IG5ldyBUeXBlRXJyb3IoIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLiIpO3ZhciBlLG49dFtTeW1ib2wuYXN5bmNJdGVyYXRvcl07cmV0dXJuIG4/bi5jYWxsKHQpOih0PWkodCksZT17fSxvKCJuZXh0IiksbygidGhyb3ciKSxvKCJyZXR1cm4iKSxlW1N5bWJvbC5hc3luY0l0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxlKTtmdW5jdGlvbiBvKG4pe2Vbbl09dFtuXSYmZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihvLGkpeyhmdW5jdGlvbiBhKHQsZSxuLG8pe1Byb21pc2UucmVzb2x2ZShvKS50aGVuKChmdW5jdGlvbihlKXt0KHt2YWx1ZTplLGRvbmU6bn0pfSksZSl9KShvLGksKGU9dFtuXShlKSkuZG9uZSxlLnZhbHVlKX0pKX19fWZ1bmN0aW9uIGQodCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHR9ZnVuY3Rpb24gcCh0KXt2YXIgZT10KChmdW5jdGlvbih0KXtFcnJvci5jYWxsKHQpLHQuc3RhY2s9KG5ldyBFcnJvcikuc3RhY2t9KSk7cmV0dXJuIGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoRXJyb3IucHJvdG90eXBlKSxlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLGV9dmFyIG09cCgoZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uIGUobil7dCh0aGlzKSx0aGlzLm1lc3NhZ2U9bj9uLmxlbmd0aCsiIGVycm9ycyBvY2N1cnJlZCBkdXJpbmcgdW5zdWJzY3JpcHRpb246XG4iK24ubWFwKChmdW5jdGlvbih0LGUpe3JldHVybiBlKzErIikgIit0LnRvU3RyaW5nKCl9KSkuam9pbigiXG4gICIpOiIiLHRoaXMubmFtZT0iVW5zdWJzY3JpcHRpb25FcnJvciIsdGhpcy5lcnJvcnM9bn19KSk7ZnVuY3Rpb24gZih0LGUpe2lmKHQpe3ZhciBuPXQuaW5kZXhPZihlKTswPD1uJiZ0LnNwbGljZShuLDEpfX12YXIgdT0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMuaW5pdGlhbFRlYXJkb3duPXQsdGhpcy5jbG9zZWQ9ITEsdGhpcy5fcGFyZW50YWdlPW51bGwsdGhpcy5fdGVhcmRvd25zPW51bGx9cmV0dXJuIHQucHJvdG90eXBlLnVuc3Vic2NyaWJlPWZ1bmN0aW9uKCl7dmFyIHQsZSxuLG8scztpZighdGhpcy5jbG9zZWQpe3RoaXMuY2xvc2VkPSEwO3ZhciBsPXRoaXMuX3BhcmVudGFnZTtpZihsKWlmKHRoaXMuX3BhcmVudGFnZT1udWxsLEFycmF5LmlzQXJyYXkobCkpdHJ5e2Zvcih2YXIgYz1pKGwpLHA9Yy5uZXh0KCk7IXAuZG9uZTtwPWMubmV4dCgpKXtwLnZhbHVlLnJlbW92ZSh0aGlzKX19Y2F0Y2goZSl7dD17ZXJyb3I6ZX19ZmluYWxseXt0cnl7cCYmIXAuZG9uZSYmKGU9Yy5yZXR1cm4pJiZlLmNhbGwoYyl9ZmluYWxseXtpZih0KXRocm93IHQuZXJyb3J9fWVsc2UgbC5yZW1vdmUodGhpcyk7dmFyIGY9dGhpcy5pbml0aWFsVGVhcmRvd247aWYoZChmKSl0cnl7ZigpfWNhdGNoKHQpe3M9dCBpbnN0YW5jZW9mIG0/dC5lcnJvcnM6W3RdfXZhciB1PXRoaXMuX3RlYXJkb3ducztpZih1KXt0aGlzLl90ZWFyZG93bnM9bnVsbDt0cnl7Zm9yKHZhciBnPWkodSksaD1nLm5leHQoKTshaC5kb25lO2g9Zy5uZXh0KCkpe3ZhciB5PWgudmFsdWU7dHJ5e2IoeSl9Y2F0Y2godCl7cz1udWxsIT1zP3M6W10sdCBpbnN0YW5jZW9mIG0/cz1yKHIoW10sYShzKSksYSh0LmVycm9ycykpOnMucHVzaCh0KX19fWNhdGNoKHQpe249e2Vycm9yOnR9fWZpbmFsbHl7dHJ5e2gmJiFoLmRvbmUmJihvPWcucmV0dXJuKSYmby5jYWxsKGcpfWZpbmFsbHl7aWYobil0aHJvdyBuLmVycm9yfX19aWYocyl0aHJvdyBuZXcgbShzKX19LHQucHJvdG90eXBlLmFkZD1mdW5jdGlvbihlKXt2YXIgbjtpZihlJiZlIT09dGhpcylpZih0aGlzLmNsb3NlZCliKGUpO2Vsc2V7aWYoZSBpbnN0YW5jZW9mIHQpe2lmKGUuY2xvc2VkfHxlLl9oYXNQYXJlbnQodGhpcykpcmV0dXJuO2UuX2FkZFBhcmVudCh0aGlzKX0odGhpcy5fdGVhcmRvd25zPW51bGwhPT0obj10aGlzLl90ZWFyZG93bnMpJiZ2b2lkIDAhPT1uP246W10pLnB1c2goZSl9fSx0LnByb3RvdHlwZS5faGFzUGFyZW50PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3BhcmVudGFnZTtyZXR1cm4gZT09PXR8fEFycmF5LmlzQXJyYXkoZSkmJmUuaW5jbHVkZXModCl9LHQucHJvdG90eXBlLl9hZGRQYXJlbnQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fcGFyZW50YWdlO3RoaXMuX3BhcmVudGFnZT1BcnJheS5pc0FycmF5KGUpPyhlLnB1c2godCksZSk6ZT9bZSx0XTp0fSx0LnByb3RvdHlwZS5fcmVtb3ZlUGFyZW50PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3BhcmVudGFnZTtlPT09dD90aGlzLl9wYXJlbnRhZ2U9bnVsbDpBcnJheS5pc0FycmF5KGUpJiZmKGUsdCl9LHQucHJvdG90eXBlLnJlbW92ZT1mdW5jdGlvbihlKXt2YXIgbj10aGlzLl90ZWFyZG93bnM7biYmZihuLGUpLGUgaW5zdGFuY2VvZiB0JiZlLl9yZW1vdmVQYXJlbnQodGhpcyl9LHQuRU1QVFk9KGZ1bmN0aW9uKCl7dmFyIGU9bmV3IHQ7cmV0dXJuIGUuY2xvc2VkPSEwLGV9KSgpLHR9KSgpLGc9dS5FTVBUWTtmdW5jdGlvbiBoKHQpe3JldHVybiB0IGluc3RhbmNlb2YgdXx8dCYmImNsb3NlZCJpbiB0JiZkKHQucmVtb3ZlKSYmZCh0LmFkZCkmJmQodC51bnN1YnNjcmliZSl9ZnVuY3Rpb24gYih0KXtkKHQpP3QoKTp0LnVuc3Vic2NyaWJlKCl9dmFyIHk9e29uVW5oYW5kbGVkRXJyb3I6bnVsbCxvblN0b3BwZWROb3RpZmljYXRpb246bnVsbCxQcm9taXNlOnZvaWQgMCx1c2VEZXByZWNhdGVkU3luY2hyb25vdXNFcnJvckhhbmRsaW5nOiExLHVzZURlcHJlY2F0ZWROZXh0Q29udGV4dDohMX0sXz17c2V0VGltZW91dDpmdW5jdGlvbigpe2Zvcih2YXIgdD1bXSxlPTA7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl0W2VdPWFyZ3VtZW50c1tlXTt2YXIgbj1fLmRlbGVnYXRlO3JldHVybigobnVsbD09bj92b2lkIDA6bi5zZXRUaW1lb3V0KXx8c2V0VGltZW91dCkuYXBwbHkodm9pZCAwLHIoW10sYSh0KSkpfSxjbGVhclRpbWVvdXQ6ZnVuY3Rpb24odCl7dmFyIGU9Xy5kZWxlZ2F0ZTtyZXR1cm4oKG51bGw9PWU/dm9pZCAwOmUuY2xlYXJUaW1lb3V0KXx8Y2xlYXJUaW1lb3V0KSh0KX0sZGVsZWdhdGU6dm9pZCAwfTtmdW5jdGlvbiBDKHQpe18uc2V0VGltZW91dCgoZnVuY3Rpb24oKXt0aHJvdyB0fSkpfWZ1bmN0aW9uIE0oKXt9dmFyIHY9bnVsbDtmdW5jdGlvbiB4KHQpe2lmKHkudXNlRGVwcmVjYXRlZFN5bmNocm9ub3VzRXJyb3JIYW5kbGluZyl7dmFyIGU9IXY7aWYoZSYmKHY9e2Vycm9yVGhyb3duOiExLGVycm9yOm51bGx9KSx0KCksZSl7dmFyIG49djtpZih2PW51bGwsbi5lcnJvclRocm93bil0aHJvdyBuLmVycm9yfX1lbHNlIHQoKX12YXIgTz0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gbihlKXt2YXIgbj10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIG4uaXNTdG9wcGVkPSExLGU/KG4uZGVzdGluYXRpb249ZSxoKGUpJiZlLmFkZChuKSk6bi5kZXN0aW5hdGlvbj1TLG59cmV0dXJuIGUobix0KSxuLmNyZWF0ZT1mdW5jdGlvbih0LGUsbil7cmV0dXJuIG5ldyBQKHQsZSxuKX0sbi5wcm90b3R5cGUubmV4dD1mdW5jdGlvbih0KXt0aGlzLmlzU3RvcHBlZHx8dGhpcy5fbmV4dCh0KX0sbi5wcm90b3R5cGUuZXJyb3I9ZnVuY3Rpb24odCl7dGhpcy5pc1N0b3BwZWR8fCh0aGlzLmlzU3RvcHBlZD0hMCx0aGlzLl9lcnJvcih0KSl9LG4ucHJvdG90eXBlLmNvbXBsZXRlPWZ1bmN0aW9uKCl7dGhpcy5pc1N0b3BwZWR8fCh0aGlzLmlzU3RvcHBlZD0hMCx0aGlzLl9jb21wbGV0ZSgpKX0sbi5wcm90b3R5cGUudW5zdWJzY3JpYmU9ZnVuY3Rpb24oKXt0aGlzLmNsb3NlZHx8KHRoaXMuaXNTdG9wcGVkPSEwLHQucHJvdG90eXBlLnVuc3Vic2NyaWJlLmNhbGwodGhpcyksdGhpcy5kZXN0aW5hdGlvbj1udWxsKX0sbi5wcm90b3R5cGUuX25leHQ9ZnVuY3Rpb24odCl7dGhpcy5kZXN0aW5hdGlvbi5uZXh0KHQpfSxuLnByb3RvdHlwZS5fZXJyb3I9ZnVuY3Rpb24odCl7dHJ5e3RoaXMuZGVzdGluYXRpb24uZXJyb3IodCl9ZmluYWxseXt0aGlzLnVuc3Vic2NyaWJlKCl9fSxuLnByb3RvdHlwZS5fY29tcGxldGU9ZnVuY3Rpb24oKXt0cnl7dGhpcy5kZXN0aW5hdGlvbi5jb21wbGV0ZSgpfWZpbmFsbHl7dGhpcy51bnN1YnNjcmliZSgpfX0sbn0pKHUpLFA9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIG4oZSxuLG8pe3ZhciBpLGE9dC5jYWxsKHRoaXMpfHx0aGlzO2lmKGQoZSkpaT1lO2Vsc2UgaWYoZSl7dmFyIHI7aT1lLm5leHQsbj1lLmVycm9yLG89ZS5jb21wbGV0ZSxhJiZ5LnVzZURlcHJlY2F0ZWROZXh0Q29udGV4dD8ocj1PYmplY3QuY3JlYXRlKGUpKS51bnN1YnNjcmliZT1mdW5jdGlvbigpe3JldHVybiBhLnVuc3Vic2NyaWJlKCl9OnI9ZSxpPW51bGw9PWk/dm9pZCAwOmkuYmluZChyKSxuPW51bGw9PW4/dm9pZCAwOm4uYmluZChyKSxvPW51bGw9PW8/dm9pZCAwOm8uYmluZChyKX1yZXR1cm4gYS5kZXN0aW5hdGlvbj17bmV4dDppP3coaSk6TSxlcnJvcjp3KG51bGwhPW4/bjprKSxjb21wbGV0ZTpvP3cobyk6TX0sYX1yZXR1cm4gZShuLHQpLG59KShPKTtmdW5jdGlvbiB3KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciBlPVtdLG49MDtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKWVbbl09YXJndW1lbnRzW25dO3RyeXt0LmFwcGx5KHZvaWQgMCxyKFtdLGEoZSkpKX1jYXRjaCh0KXtDKHQpfX19ZnVuY3Rpb24gayh0KXt0aHJvdyB0fXZhciBTPXtjbG9zZWQ6ITAsbmV4dDpNLGVycm9yOmssY29tcGxldGU6TX0sRD0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wub2JzZXJ2YWJsZXx8IkBAb2JzZXJ2YWJsZSI7ZnVuY3Rpb24gUih0KXtyZXR1cm4gdH1mdW5jdGlvbiBFKCl7Zm9yKHZhciB0PVtdLGU9MDtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXRbZV09YXJndW1lbnRzW2VdO3JldHVybiBBKHQpfWZ1bmN0aW9uIEEodCl7cmV0dXJuIDA9PT10Lmxlbmd0aD9SOjE9PT10Lmxlbmd0aD90WzBdOmZ1bmN0aW9uIGUobil7cmV0dXJuIHQucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiBlKHQpfSksbil9fXZhciBUPShmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dCYmKHRoaXMuX3N1YnNjcmliZT10KX1yZXR1cm4gdC5wcm90b3R5cGUubGlmdD1mdW5jdGlvbihlKXt2YXIgbj1uZXcgdDtyZXR1cm4gbi5zb3VyY2U9dGhpcyxuLm9wZXJhdG9yPWUsbn0sdC5wcm90b3R5cGUuc3Vic2NyaWJlPWZ1bmN0aW9uKHQsZSxuKXt2YXIgbz10aGlzLGk9KGZ1bmN0aW9uIGEodCl7cmV0dXJuIHQmJnQgaW5zdGFuY2VvZiBPfHwoZnVuY3Rpb24gZSh0KXtyZXR1cm4gdCYmZCh0Lm5leHQpJiZkKHQuZXJyb3IpJiZkKHQuY29tcGxldGUpfSkodCkmJmgodCl9KSh0KT90Om5ldyBQKHQsZSxuKTtyZXR1cm4geCgoZnVuY3Rpb24oKXt2YXIgdD1vLm9wZXJhdG9yLGU9by5zb3VyY2U7aS5hZGQodD90LmNhbGwoaSxlKTplP28uX3N1YnNjcmliZShpKTpvLl90cnlTdWJzY3JpYmUoaSkpfSkpLGl9LHQucHJvdG90eXBlLl90cnlTdWJzY3JpYmU9ZnVuY3Rpb24odCl7dHJ5e3JldHVybiB0aGlzLl9zdWJzY3JpYmUodCl9Y2F0Y2goZSl7dC5lcnJvcihlKX19LHQucHJvdG90eXBlLmZvckVhY2g9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzO3JldHVybiBuZXcoZT1OKGUpKSgoZnVuY3Rpb24oZSxvKXt2YXIgaTtpPW4uc3Vic2NyaWJlKChmdW5jdGlvbihlKXt0cnl7dChlKX1jYXRjaCh0KXtvKHQpLG51bGw9PWl8fGkudW5zdWJzY3JpYmUoKX19KSxvLGUpfSkpfSx0LnByb3RvdHlwZS5fc3Vic2NyaWJlPWZ1bmN0aW9uKHQpe3ZhciBlO3JldHVybiBudWxsPT09KGU9dGhpcy5zb3VyY2UpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLnN1YnNjcmliZSh0KX0sdC5wcm90b3R5cGVbRF09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sdC5wcm90b3R5cGUucGlwZT1mdW5jdGlvbigpe2Zvcih2YXIgdD1bXSxlPTA7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl0W2VdPWFyZ3VtZW50c1tlXTtyZXR1cm4gQSh0KSh0aGlzKX0sdC5wcm90b3R5cGUudG9Qcm9taXNlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7cmV0dXJuIG5ldyh0PU4odCkpKChmdW5jdGlvbih0LG4pe3ZhciBvO2Uuc3Vic2NyaWJlKChmdW5jdGlvbih0KXtyZXR1cm4gbz10fSksKGZ1bmN0aW9uKHQpe3JldHVybiBuKHQpfSksKGZ1bmN0aW9uKCl7cmV0dXJuIHQobyl9KSl9KSl9LHQuY3JlYXRlPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgdChlKX0sdH0pKCk7ZnVuY3Rpb24gTih0KXt2YXIgZTtyZXR1cm4gbnVsbCE9PShlPW51bGwhPXQ/dDp5LlByb21pc2UpJiZ2b2lkIDAhPT1lP2U6UHJvbWlzZX1mdW5jdGlvbiB6KHQpe3JldHVybiBmdW5jdGlvbihlKXtpZigoZnVuY3Rpb24gbih0KXtyZXR1cm4gZChudWxsPT10P3ZvaWQgMDp0LmxpZnQpfSkoZSkpcmV0dXJuIGUubGlmdCgoZnVuY3Rpb24oZSl7dHJ5e3JldHVybiB0KGUsdGhpcyl9Y2F0Y2godCl7dGhpcy5lcnJvcih0KX19KSk7dGhyb3cgbmV3IFR5cGVFcnJvcigiVW5hYmxlIHRvIGxpZnQgdW5rbm93biBPYnNlcnZhYmxlIHR5cGUiKX19dmFyIEksSD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gbihlLG4sbyxpLGEpe3ZhciByPXQuY2FsbCh0aGlzLGUpfHx0aGlzO3JldHVybiByLm9uRmluYWxpemU9YSxyLl9uZXh0PW4/ZnVuY3Rpb24odCl7dHJ5e24odCl9Y2F0Y2godCl7ZS5lcnJvcih0KX19OnQucHJvdG90eXBlLl9uZXh0LHIuX2Vycm9yPWk/ZnVuY3Rpb24odCl7dHJ5e2kodCl9Y2F0Y2godCl7ZS5lcnJvcih0KX1maW5hbGx5e3RoaXMudW5zdWJzY3JpYmUoKX19OnQucHJvdG90eXBlLl9lcnJvcixyLl9jb21wbGV0ZT1vP2Z1bmN0aW9uKCl7dHJ5e28oKX1jYXRjaCh0KXtlLmVycm9yKHQpfWZpbmFsbHl7dGhpcy51bnN1YnNjcmliZSgpfX06dC5wcm90b3R5cGUuX2NvbXBsZXRlLHJ9cmV0dXJuIGUobix0KSxuLnByb3RvdHlwZS51bnN1YnNjcmliZT1mdW5jdGlvbigpe3ZhciBlLG49dGhpcy5jbG9zZWQ7dC5wcm90b3R5cGUudW5zdWJzY3JpYmUuY2FsbCh0aGlzKSwhbiYmKG51bGw9PT0oZT10aGlzLm9uRmluYWxpemUpfHx2b2lkIDA9PT1lfHxlLmNhbGwodGhpcykpfSxufSkoTyksRj17c2NoZWR1bGU6ZnVuY3Rpb24odCl7dmFyIGU9cmVxdWVzdEFuaW1hdGlvbkZyYW1lLG49Y2FuY2VsQW5pbWF0aW9uRnJhbWUsbz1GLmRlbGVnYXRlO28mJihlPW8ucmVxdWVzdEFuaW1hdGlvbkZyYW1lLG49by5jYW5jZWxBbmltYXRpb25GcmFtZSk7dmFyIGk9ZSgoZnVuY3Rpb24oZSl7bj12b2lkIDAsdChlKX0pKTtyZXR1cm4gbmV3IHUoKGZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PW4/dm9pZCAwOm4oaSl9KSl9LHJlcXVlc3RBbmltYXRpb25GcmFtZTpmdW5jdGlvbigpe2Zvcih2YXIgdD1bXSxlPTA7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl0W2VdPWFyZ3VtZW50c1tlXTt2YXIgbj1GLmRlbGVnYXRlO3JldHVybigobnVsbD09bj92b2lkIDA6bi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUpfHxyZXF1ZXN0QW5pbWF0aW9uRnJhbWUpLmFwcGx5KHZvaWQgMCxyKFtdLGEodCkpKX0sY2FuY2VsQW5pbWF0aW9uRnJhbWU6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9W10sZT0wO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspdFtlXT1hcmd1bWVudHNbZV07dmFyIG49Ri5kZWxlZ2F0ZTtyZXR1cm4oKG51bGw9PW4/dm9pZCAwOm4uY2FuY2VsQW5pbWF0aW9uRnJhbWUpfHxjYW5jZWxBbmltYXRpb25GcmFtZSkuYXBwbHkodm9pZCAwLHIoW10sYSh0KSkpfSxkZWxlZ2F0ZTp2b2lkIDB9LEw9cCgoZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uIGUoKXt0KHRoaXMpLHRoaXMubmFtZT0iT2JqZWN0VW5zdWJzY3JpYmVkRXJyb3IiLHRoaXMubWVzc2FnZT0ib2JqZWN0IHVuc3Vic2NyaWJlZCJ9fSkpLEI9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIG4oKXt2YXIgZT10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIGUuY2xvc2VkPSExLGUub2JzZXJ2ZXJzPVtdLGUuaXNTdG9wcGVkPSExLGUuaGFzRXJyb3I9ITEsZS50aHJvd25FcnJvcj1udWxsLGV9cmV0dXJuIGUobix0KSxuLnByb3RvdHlwZS5saWZ0PWZ1bmN0aW9uKHQpe3ZhciBlPW5ldyBWKHRoaXMsdGhpcyk7cmV0dXJuIGUub3BlcmF0b3I9dCxlfSxuLnByb3RvdHlwZS5fdGhyb3dJZkNsb3NlZD1mdW5jdGlvbigpe2lmKHRoaXMuY2xvc2VkKXRocm93IG5ldyBMfSxuLnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7eCgoZnVuY3Rpb24oKXt2YXIgbixvO2lmKGUuX3Rocm93SWZDbG9zZWQoKSwhZS5pc1N0b3BwZWQpe3ZhciBhPWUub2JzZXJ2ZXJzLnNsaWNlKCk7dHJ5e2Zvcih2YXIgcj1pKGEpLHM9ci5uZXh0KCk7IXMuZG9uZTtzPXIubmV4dCgpKXtzLnZhbHVlLm5leHQodCl9fWNhdGNoKHQpe249e2Vycm9yOnR9fWZpbmFsbHl7dHJ5e3MmJiFzLmRvbmUmJihvPXIucmV0dXJuKSYmby5jYWxsKHIpfWZpbmFsbHl7aWYobil0aHJvdyBuLmVycm9yfX19fSkpfSxuLnByb3RvdHlwZS5lcnJvcj1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3goKGZ1bmN0aW9uKCl7aWYoZS5fdGhyb3dJZkNsb3NlZCgpLCFlLmlzU3RvcHBlZCl7ZS5oYXNFcnJvcj1lLmlzU3RvcHBlZD0hMCxlLnRocm93bkVycm9yPXQ7Zm9yKHZhciBuPWUub2JzZXJ2ZXJzO24ubGVuZ3RoOyluLnNoaWZ0KCkuZXJyb3IodCl9fSkpfSxuLnByb3RvdHlwZS5jb21wbGV0ZT1mdW5jdGlvbigpe3ZhciB0PXRoaXM7eCgoZnVuY3Rpb24oKXtpZih0Ll90aHJvd0lmQ2xvc2VkKCksIXQuaXNTdG9wcGVkKXt0LmlzU3RvcHBlZD0hMDtmb3IodmFyIGU9dC5vYnNlcnZlcnM7ZS5sZW5ndGg7KWUuc2hpZnQoKS5jb21wbGV0ZSgpfX0pKX0sbi5wcm90b3R5cGUudW5zdWJzY3JpYmU9ZnVuY3Rpb24oKXt0aGlzLmlzU3RvcHBlZD10aGlzLmNsb3NlZD0hMCx0aGlzLm9ic2VydmVycz1udWxsfSxPYmplY3QuZGVmaW5lUHJvcGVydHkobi5wcm90b3R5cGUsIm9ic2VydmVkIix7Z2V0OmZ1bmN0aW9uKCl7dmFyIHQ7cmV0dXJuKG51bGw9PT0odD10aGlzLm9ic2VydmVycyl8fHZvaWQgMD09PXQ/dm9pZCAwOnQubGVuZ3RoKT4wfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLG4ucHJvdG90eXBlLl90cnlTdWJzY3JpYmU9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX3Rocm93SWZDbG9zZWQoKSx0LnByb3RvdHlwZS5fdHJ5U3Vic2NyaWJlLmNhbGwodGhpcyxlKX0sbi5wcm90b3R5cGUuX3N1YnNjcmliZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fdGhyb3dJZkNsb3NlZCgpLHRoaXMuX2NoZWNrRmluYWxpemVkU3RhdHVzZXModCksdGhpcy5faW5uZXJTdWJzY3JpYmUodCl9LG4ucHJvdG90eXBlLl9pbm5lclN1YnNjcmliZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLG49ZS5vYnNlcnZlcnM7cmV0dXJuIGUuaGFzRXJyb3J8fGUuaXNTdG9wcGVkP2c6KG4ucHVzaCh0KSxuZXcgdSgoZnVuY3Rpb24oKXtyZXR1cm4gZihuLHQpfSkpKX0sbi5wcm90b3R5cGUuX2NoZWNrRmluYWxpemVkU3RhdHVzZXM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxuPWUuaXNTdG9wcGVkO2UuaGFzRXJyb3I/dC5lcnJvcihlLnRocm93bkVycm9yKTpuJiZ0LmNvbXBsZXRlKCl9LG4ucHJvdG90eXBlLmFzT2JzZXJ2YWJsZT1mdW5jdGlvbigpe3ZhciB0PW5ldyBUO3JldHVybiB0LnNvdXJjZT10aGlzLHR9LG4uY3JlYXRlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG5ldyBWKHQsZSl9LG59KShUKSxWPShmdW5jdGlvbih0KXtmdW5jdGlvbiBuKGUsbil7dmFyIG89dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBvLmRlc3RpbmF0aW9uPWUsby5zb3VyY2U9bixvfXJldHVybiBlKG4sdCksbi5wcm90b3R5cGUubmV4dD1mdW5jdGlvbih0KXt2YXIgZSxuO251bGw9PT0obj1udWxsPT09KGU9dGhpcy5kZXN0aW5hdGlvbil8fHZvaWQgMD09PWU/dm9pZCAwOmUubmV4dCl8fHZvaWQgMD09PW58fG4uY2FsbChlLHQpfSxuLnByb3RvdHlwZS5lcnJvcj1mdW5jdGlvbih0KXt2YXIgZSxuO251bGw9PT0obj1udWxsPT09KGU9dGhpcy5kZXN0aW5hdGlvbil8fHZvaWQgMD09PWU/dm9pZCAwOmUuZXJyb3IpfHx2b2lkIDA9PT1ufHxuLmNhbGwoZSx0KX0sbi5wcm90b3R5cGUuY29tcGxldGU9ZnVuY3Rpb24oKXt2YXIgdCxlO251bGw9PT0oZT1udWxsPT09KHQ9dGhpcy5kZXN0aW5hdGlvbil8fHZvaWQgMD09PXQ/dm9pZCAwOnQuY29tcGxldGUpfHx2b2lkIDA9PT1lfHxlLmNhbGwodCl9LG4ucHJvdG90eXBlLl9zdWJzY3JpYmU9ZnVuY3Rpb24odCl7dmFyIGUsbjtyZXR1cm4gbnVsbCE9PShuPW51bGw9PT0oZT10aGlzLnNvdXJjZSl8fHZvaWQgMD09PWU/dm9pZCAwOmUuc3Vic2NyaWJlKHQpKSYmdm9pZCAwIT09bj9uOmd9LG59KShCKSxqPShmdW5jdGlvbih0KXtmdW5jdGlvbiBuKGUpe3ZhciBuPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gbi5fdmFsdWU9ZSxufXJldHVybiBlKG4sdCksT2JqZWN0LmRlZmluZVByb3BlcnR5KG4ucHJvdG90eXBlLCJ2YWx1ZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldFZhbHVlKCl9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksbi5wcm90b3R5cGUuX3N1YnNjcmliZT1mdW5jdGlvbihlKXt2YXIgbj10LnByb3RvdHlwZS5fc3Vic2NyaWJlLmNhbGwodGhpcyxlKTtyZXR1cm4hbi5jbG9zZWQmJmUubmV4dCh0aGlzLl92YWx1ZSksbn0sbi5wcm90b3R5cGUuZ2V0VmFsdWU9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dC5fdmFsdWU7aWYodC5oYXNFcnJvcil0aHJvdyB0LnRocm93bkVycm9yO3JldHVybiB0aGlzLl90aHJvd0lmQ2xvc2VkKCksZX0sbi5wcm90b3R5cGUubmV4dD1mdW5jdGlvbihlKXt0LnByb3RvdHlwZS5uZXh0LmNhbGwodGhpcyx0aGlzLl92YWx1ZT1lKX0sbn0pKEIpLFU9e25vdzpmdW5jdGlvbigpe3JldHVybihVLmRlbGVnYXRlfHxEYXRlKS5ub3coKX0sZGVsZWdhdGU6dm9pZCAwfSxXPShmdW5jdGlvbih0KXtmdW5jdGlvbiBuKGUsbixvKXt2b2lkIDA9PT1lJiYoZT0xLzApLHZvaWQgMD09PW4mJihuPTEvMCksdm9pZCAwPT09byYmKG89VSk7dmFyIGk9dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBpLl9idWZmZXJTaXplPWUsaS5fd2luZG93VGltZT1uLGkuX3RpbWVzdGFtcFByb3ZpZGVyPW8saS5fYnVmZmVyPVtdLGkuX2luZmluaXRlVGltZVdpbmRvdz0hMCxpLl9pbmZpbml0ZVRpbWVXaW5kb3c9bj09PTEvMCxpLl9idWZmZXJTaXplPU1hdGgubWF4KDEsZSksaS5fd2luZG93VGltZT1NYXRoLm1heCgxLG4pLGl9cmV0dXJuIGUobix0KSxuLnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKGUpe3ZhciBuPXRoaXMsbz1uLl9idWZmZXIsaT1uLl9pbmZpbml0ZVRpbWVXaW5kb3csYT1uLl90aW1lc3RhbXBQcm92aWRlcixyPW4uX3dpbmRvd1RpbWU7bi5pc1N0b3BwZWR8fChvLnB1c2goZSksIWkmJm8ucHVzaChhLm5vdygpK3IpKSx0aGlzLl90cmltQnVmZmVyKCksdC5wcm90b3R5cGUubmV4dC5jYWxsKHRoaXMsZSl9LG4ucHJvdG90eXBlLl9zdWJzY3JpYmU9ZnVuY3Rpb24odCl7dGhpcy5fdGhyb3dJZkNsb3NlZCgpLHRoaXMuX3RyaW1CdWZmZXIoKTtmb3IodmFyIGU9dGhpcy5faW5uZXJTdWJzY3JpYmUodCksbj10aGlzLl9pbmZpbml0ZVRpbWVXaW5kb3csbz10aGlzLl9idWZmZXIuc2xpY2UoKSxpPTA7aTxvLmxlbmd0aCYmIXQuY2xvc2VkO2krPW4/MToyKXQubmV4dChvW2ldKTtyZXR1cm4gdGhpcy5fY2hlY2tGaW5hbGl6ZWRTdGF0dXNlcyh0KSxlfSxuLnByb3RvdHlwZS5fdHJpbUJ1ZmZlcj1mdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10Ll9idWZmZXJTaXplLG49dC5fdGltZXN0YW1wUHJvdmlkZXIsbz10Ll9idWZmZXIsaT10Ll9pbmZpbml0ZVRpbWVXaW5kb3csYT0oaT8xOjIpKmU7aWYoZTwxLzAmJmE8by5sZW5ndGgmJm8uc3BsaWNlKDAsby5sZW5ndGgtYSksIWkpe2Zvcih2YXIgcj1uLm5vdygpLHM9MCxsPTE7bDxvLmxlbmd0aCYmb1tsXTw9cjtsKz0yKXM9bDtzJiZvLnNwbGljZSgwLHMrMSl9fSxufSkoQiksRz0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gbihlLG4pe3JldHVybiB0LmNhbGwodGhpcyl8fHRoaXN9cmV0dXJuIGUobix0KSxuLnByb3RvdHlwZS5zY2hlZHVsZT1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzfSxufSkodSksWT17c2V0SW50ZXJ2YWw6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9W10sZT0wO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspdFtlXT1hcmd1bWVudHNbZV07dmFyIG49WS5kZWxlZ2F0ZTtyZXR1cm4oKG51bGw9PW4/dm9pZCAwOm4uc2V0SW50ZXJ2YWwpfHxzZXRJbnRlcnZhbCkuYXBwbHkodm9pZCAwLHIoW10sYSh0KSkpfSxjbGVhckludGVydmFsOmZ1bmN0aW9uKHQpe3ZhciBlPVkuZGVsZWdhdGU7cmV0dXJuKChudWxsPT1lP3ZvaWQgMDplLmNsZWFySW50ZXJ2YWwpfHxjbGVhckludGVydmFsKSh0KX0sZGVsZWdhdGU6dm9pZCAwfSxxPShmdW5jdGlvbih0KXtmdW5jdGlvbiBuKGUsbil7dmFyIG89dC5jYWxsKHRoaXMsZSxuKXx8dGhpcztyZXR1cm4gby5zY2hlZHVsZXI9ZSxvLndvcms9bixvLnBlbmRpbmc9ITEsb31yZXR1cm4gZShuLHQpLG4ucHJvdG90eXBlLnNjaGVkdWxlPWZ1bmN0aW9uKHQsZSl7aWYodm9pZCAwPT09ZSYmKGU9MCksdGhpcy5jbG9zZWQpcmV0dXJuIHRoaXM7dGhpcy5zdGF0ZT10O3ZhciBuPXRoaXMuaWQsbz10aGlzLnNjaGVkdWxlcjtyZXR1cm4gbnVsbCE9biYmKHRoaXMuaWQ9dGhpcy5yZWN5Y2xlQXN5bmNJZChvLG4sZSkpLHRoaXMucGVuZGluZz0hMCx0aGlzLmRlbGF5PWUsdGhpcy5pZD10aGlzLmlkfHx0aGlzLnJlcXVlc3RBc3luY0lkKG8sdGhpcy5pZCxlKSx0aGlzfSxuLnByb3RvdHlwZS5yZXF1ZXN0QXN5bmNJZD1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHZvaWQgMD09PW4mJihuPTApLFkuc2V0SW50ZXJ2YWwodC5mbHVzaC5iaW5kKHQsdGhpcyksbil9LG4ucHJvdG90eXBlLnJlY3ljbGVBc3luY0lkPWZ1bmN0aW9uKHQsZSxuKXtpZih2b2lkIDA9PT1uJiYobj0wKSxudWxsIT1uJiZ0aGlzLmRlbGF5PT09biYmITE9PT10aGlzLnBlbmRpbmcpcmV0dXJuIGU7WS5jbGVhckludGVydmFsKGUpfSxuLnByb3RvdHlwZS5leGVjdXRlPWZ1bmN0aW9uKHQsZSl7aWYodGhpcy5jbG9zZWQpcmV0dXJuIG5ldyBFcnJvcigiZXhlY3V0aW5nIGEgY2FuY2VsbGVkIGFjdGlvbiIpO3RoaXMucGVuZGluZz0hMTt2YXIgbj10aGlzLl9leGVjdXRlKHQsZSk7aWYobilyZXR1cm4gbjshMT09PXRoaXMucGVuZGluZyYmbnVsbCE9dGhpcy5pZCYmKHRoaXMuaWQ9dGhpcy5yZWN5Y2xlQXN5bmNJZCh0aGlzLnNjaGVkdWxlcix0aGlzLmlkLG51bGwpKX0sbi5wcm90b3R5cGUuX2V4ZWN1dGU9ZnVuY3Rpb24odCxlKXt2YXIgbixvPSExO3RyeXt0aGlzLndvcmsodCl9Y2F0Y2godCl7bz0hMCxuPSEhdCYmdHx8bmV3IEVycm9yKHQpfWlmKG8pcmV0dXJuIHRoaXMudW5zdWJzY3JpYmUoKSxufSxuLnByb3RvdHlwZS51bnN1YnNjcmliZT1mdW5jdGlvbigpe2lmKCF0aGlzLmNsb3NlZCl7dmFyIGU9dGhpcy5pZCxuPXRoaXMuc2NoZWR1bGVyLG89bi5hY3Rpb25zO3RoaXMud29yaz10aGlzLnN0YXRlPXRoaXMuc2NoZWR1bGVyPW51bGwsdGhpcy5wZW5kaW5nPSExLGYobyx0aGlzKSxudWxsIT1lJiYodGhpcy5pZD10aGlzLnJlY3ljbGVBc3luY0lkKG4sZSxudWxsKSksdGhpcy5kZWxheT1udWxsLHQucHJvdG90eXBlLnVuc3Vic2NyaWJlLmNhbGwodGhpcyl9fSxufSkoRyksWj0xLFg9e307ZnVuY3Rpb24gSyh0KXtyZXR1cm4gdCBpbiBYJiYoZGVsZXRlIFhbdF0sITApfXZhciBKPWZ1bmN0aW9uKHQpe3ZhciBlPVorKztyZXR1cm4gWFtlXT0hMCxJfHwoST1Qcm9taXNlLnJlc29sdmUoKSksSS50aGVuKChmdW5jdGlvbigpe3JldHVybiBLKGUpJiZ0KCl9KSksZX0sUT1mdW5jdGlvbih0KXtLKHQpfSwkPXtzZXRJbW1lZGlhdGU6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9W10sZT0wO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspdFtlXT1hcmd1bWVudHNbZV07dmFyIG49JC5kZWxlZ2F0ZTtyZXR1cm4oKG51bGw9PW4/dm9pZCAwOm4uc2V0SW1tZWRpYXRlKXx8SikuYXBwbHkodm9pZCAwLHIoW10sYSh0KSkpfSxjbGVhckltbWVkaWF0ZTpmdW5jdGlvbih0KXt2YXIgZT0kLmRlbGVnYXRlO3JldHVybigobnVsbD09ZT92b2lkIDA6ZS5jbGVhckltbWVkaWF0ZSl8fFEpKHQpfSxkZWxlZ2F0ZTp2b2lkIDB9LHR0PShmdW5jdGlvbih0KXtmdW5jdGlvbiBuKGUsbil7dmFyIG89dC5jYWxsKHRoaXMsZSxuKXx8dGhpcztyZXR1cm4gby5zY2hlZHVsZXI9ZSxvLndvcms9bixvfXJldHVybiBlKG4sdCksbi5wcm90b3R5cGUucmVxdWVzdEFzeW5jSWQ9ZnVuY3Rpb24oZSxuLG8pe3JldHVybiB2b2lkIDA9PT1vJiYobz0wKSxudWxsIT09byYmbz4wP3QucHJvdG90eXBlLnJlcXVlc3RBc3luY0lkLmNhbGwodGhpcyxlLG4sbyk6KGUuYWN0aW9ucy5wdXNoKHRoaXMpLGUuX3NjaGVkdWxlZHx8KGUuX3NjaGVkdWxlZD0kLnNldEltbWVkaWF0ZShlLmZsdXNoLmJpbmQoZSx2b2lkIDApKSkpfSxuLnByb3RvdHlwZS5yZWN5Y2xlQXN5bmNJZD1mdW5jdGlvbihlLG4sbyl7aWYodm9pZCAwPT09byYmKG89MCksbnVsbCE9byYmbz4wfHxudWxsPT1vJiZ0aGlzLmRlbGF5PjApcmV0dXJuIHQucHJvdG90eXBlLnJlY3ljbGVBc3luY0lkLmNhbGwodGhpcyxlLG4sbyk7MD09PWUuYWN0aW9ucy5sZW5ndGgmJigkLmNsZWFySW1tZWRpYXRlKG4pLGUuX3NjaGVkdWxlZD12b2lkIDApfSxufSkocSksZXQ9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLG4pe3ZvaWQgMD09PW4mJihuPXQubm93KSx0aGlzLnNjaGVkdWxlckFjdGlvbkN0b3I9ZSx0aGlzLm5vdz1ufXJldHVybiB0LnByb3RvdHlwZS5zY2hlZHVsZT1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHZvaWQgMD09PWUmJihlPTApLG5ldyB0aGlzLnNjaGVkdWxlckFjdGlvbkN0b3IodGhpcyx0KS5zY2hlZHVsZShuLGUpfSx0Lm5vdz1VLm5vdyx0fSkoKSxudD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gbihlLG4pe3ZvaWQgMD09PW4mJihuPWV0Lm5vdyk7dmFyIG89dC5jYWxsKHRoaXMsZSxuKXx8dGhpcztyZXR1cm4gby5hY3Rpb25zPVtdLG8uX2FjdGl2ZT0hMSxvLl9zY2hlZHVsZWQ9dm9pZCAwLG99cmV0dXJuIGUobix0KSxuLnByb3RvdHlwZS5mbHVzaD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmFjdGlvbnM7aWYodGhpcy5fYWN0aXZlKWUucHVzaCh0KTtlbHNle3ZhciBuO3RoaXMuX2FjdGl2ZT0hMDtkb3tpZihuPXQuZXhlY3V0ZSh0LnN0YXRlLHQuZGVsYXkpKWJyZWFrfXdoaWxlKHQ9ZS5zaGlmdCgpKTtpZih0aGlzLl9hY3RpdmU9ITEsbil7Zm9yKDt0PWUuc2hpZnQoKTspdC51bnN1YnNjcmliZSgpO3Rocm93IG59fX0sbn0pKGV0KSxvdD1uZXcoKGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIG4oKXtyZXR1cm4gbnVsbCE9PXQmJnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfXJldHVybiBlKG4sdCksbi5wcm90b3R5cGUuZmx1c2g9ZnVuY3Rpb24odCl7dGhpcy5fYWN0aXZlPSEwLHRoaXMuX3NjaGVkdWxlZD12b2lkIDA7dmFyIGUsbj10aGlzLmFjdGlvbnMsbz0tMTt0PXR8fG4uc2hpZnQoKTt2YXIgaT1uLmxlbmd0aDtkb3tpZihlPXQuZXhlY3V0ZSh0LnN0YXRlLHQuZGVsYXkpKWJyZWFrfXdoaWxlKCsrbzxpJiYodD1uLnNoaWZ0KCkpKTtpZih0aGlzLl9hY3RpdmU9ITEsZSl7Zm9yKDsrK288aSYmKHQ9bi5zaGlmdCgpKTspdC51bnN1YnNjcmliZSgpO3Rocm93IGV9fSxufSkobnQpKSh0dCksaXQ9bmV3IG50KHEpLGF0PWl0LHJ0PShmdW5jdGlvbih0KXtmdW5jdGlvbiBuKGUsbil7dmFyIG89dC5jYWxsKHRoaXMsZSxuKXx8dGhpcztyZXR1cm4gby5zY2hlZHVsZXI9ZSxvLndvcms9bixvfXJldHVybiBlKG4sdCksbi5wcm90b3R5cGUuc2NoZWR1bGU9ZnVuY3Rpb24oZSxuKXtyZXR1cm4gdm9pZCAwPT09biYmKG49MCksbj4wP3QucHJvdG90eXBlLnNjaGVkdWxlLmNhbGwodGhpcyxlLG4pOih0aGlzLmRlbGF5PW4sdGhpcy5zdGF0ZT1lLHRoaXMuc2NoZWR1bGVyLmZsdXNoKHRoaXMpLHRoaXMpfSxuLnByb3RvdHlwZS5leGVjdXRlPWZ1bmN0aW9uKGUsbil7cmV0dXJuIG4+MHx8dGhpcy5jbG9zZWQ/dC5wcm90b3R5cGUuZXhlY3V0ZS5jYWxsKHRoaXMsZSxuKTp0aGlzLl9leGVjdXRlKGUsbil9LG4ucHJvdG90eXBlLnJlcXVlc3RBc3luY0lkPWZ1bmN0aW9uKGUsbixvKXtyZXR1cm4gdm9pZCAwPT09byYmKG89MCksbnVsbCE9byYmbz4wfHxudWxsPT1vJiZ0aGlzLmRlbGF5PjA/dC5wcm90b3R5cGUucmVxdWVzdEFzeW5jSWQuY2FsbCh0aGlzLGUsbixvKTplLmZsdXNoKHRoaXMpfSxufSkocSksc3Q9bmV3KChmdW5jdGlvbih0KXtmdW5jdGlvbiBuKCl7cmV0dXJuIG51bGwhPT10JiZ0LmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpc31yZXR1cm4gZShuLHQpLG59KShudCkpKHJ0KSxsdD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gbihlLG4pe3ZhciBvPXQuY2FsbCh0aGlzLGUsbil8fHRoaXM7cmV0dXJuIG8uc2NoZWR1bGVyPWUsby53b3JrPW4sb31yZXR1cm4gZShuLHQpLG4ucHJvdG90eXBlLnJlcXVlc3RBc3luY0lkPWZ1bmN0aW9uKGUsbixvKXtyZXR1cm4gdm9pZCAwPT09byYmKG89MCksbnVsbCE9PW8mJm8+MD90LnByb3RvdHlwZS5yZXF1ZXN0QXN5bmNJZC5jYWxsKHRoaXMsZSxuLG8pOihlLmFjdGlvbnMucHVzaCh0aGlzKSxlLl9zY2hlZHVsZWR8fChlLl9zY2hlZHVsZWQ9Ri5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKGZ1bmN0aW9uKCl7cmV0dXJuIGUuZmx1c2godm9pZCAwKX0pKSkpfSxuLnByb3RvdHlwZS5yZWN5Y2xlQXN5bmNJZD1mdW5jdGlvbihlLG4sbyl7aWYodm9pZCAwPT09byYmKG89MCksbnVsbCE9byYmbz4wfHxudWxsPT1vJiZ0aGlzLmRlbGF5PjApcmV0dXJuIHQucHJvdG90eXBlLnJlY3ljbGVBc3luY0lkLmNhbGwodGhpcyxlLG4sbyk7MD09PWUuYWN0aW9ucy5sZW5ndGgmJihGLmNhbmNlbEFuaW1hdGlvbkZyYW1lKG4pLGUuX3NjaGVkdWxlZD12b2lkIDApfSxufSkocSksY3Q9bmV3KChmdW5jdGlvbih0KXtmdW5jdGlvbiBuKCl7cmV0dXJuIG51bGwhPT10JiZ0LmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpc31yZXR1cm4gZShuLHQpLG4ucHJvdG90eXBlLmZsdXNoPWZ1bmN0aW9uKHQpe3RoaXMuX2FjdGl2ZT0hMCx0aGlzLl9zY2hlZHVsZWQ9dm9pZCAwO3ZhciBlLG49dGhpcy5hY3Rpb25zLG89LTE7dD10fHxuLnNoaWZ0KCk7dmFyIGk9bi5sZW5ndGg7ZG97aWYoZT10LmV4ZWN1dGUodC5zdGF0ZSx0LmRlbGF5KSlicmVha313aGlsZSgrK288aSYmKHQ9bi5zaGlmdCgpKSk7aWYodGhpcy5fYWN0aXZlPSExLGUpe2Zvcig7KytvPGkmJih0PW4uc2hpZnQoKSk7KXQudW5zdWJzY3JpYmUoKTt0aHJvdyBlfX0sbn0pKG50KSkobHQpLGR0PW5ldyBUKChmdW5jdGlvbih0KXtyZXR1cm4gdC5jb21wbGV0ZSgpfSkpO2Z1bmN0aW9uIHB0KHQsZSl7cmV0dXJuIG5ldyBUKChmdW5jdGlvbihuKXt2YXIgbz0wO3JldHVybiBlLnNjaGVkdWxlKChmdW5jdGlvbigpe289PT10Lmxlbmd0aD9uLmNvbXBsZXRlKCk6KG4ubmV4dCh0W28rK10pLG4uY2xvc2VkfHx0aGlzLnNjaGVkdWxlKCkpfSkpfSkpfXZhciBtdD1mdW5jdGlvbih0KXtyZXR1cm4gdCYmIm51bWJlciI9PXR5cGVvZiB0Lmxlbmd0aCYmImZ1bmN0aW9uIiE9dHlwZW9mIHR9O2Z1bmN0aW9uIGZ0KHQpe3JldHVybiBkKG51bGw9PXQ/dm9pZCAwOnQudGhlbil9dmFyIHV0LGd0PShmdW5jdGlvbiBodCgpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5pdGVyYXRvcj9TeW1ib2wuaXRlcmF0b3I6IkBAaXRlcmF0b3IifSkoKTtmdW5jdGlvbiBidCh0LGUpe2lmKCF0KXRocm93IG5ldyBFcnJvcigiSXRlcmFibGUgY2Fubm90IGJlIG51bGwiKTtyZXR1cm4gbmV3IFQoKGZ1bmN0aW9uKG4pe3ZhciBvPW5ldyB1O3JldHVybiBvLmFkZChlLnNjaGVkdWxlKChmdW5jdGlvbigpe3ZhciBpPXRbU3ltYm9sLmFzeW5jSXRlcmF0b3JdKCk7by5hZGQoZS5zY2hlZHVsZSgoZnVuY3Rpb24oKXt2YXIgdD10aGlzO2kubmV4dCgpLnRoZW4oKGZ1bmN0aW9uKGUpe2UuZG9uZT9uLmNvbXBsZXRlKCk6KG4ubmV4dChlLnZhbHVlKSx0LnNjaGVkdWxlKCkpfSkpfSkpKX0pKSksb30pKX1mdW5jdGlvbiB5dCh0KXtyZXR1cm4gZCh0W0RdKX1mdW5jdGlvbiBfdCh0KXtyZXR1cm4gZChudWxsPT10P3ZvaWQgMDp0W2d0XSl9ZnVuY3Rpb24gQ3QodCl7cmV0dXJuIFN5bWJvbC5hc3luY0l0ZXJhdG9yJiZkKG51bGw9PXQ/dm9pZCAwOnRbU3ltYm9sLmFzeW5jSXRlcmF0b3JdKX1mdW5jdGlvbiBNdCh0KXtyZXR1cm4gbmV3IFR5cGVFcnJvcigiWW91IHByb3ZpZGVkICIrKG51bGwhPT10JiYib2JqZWN0Ij09dHlwZW9mIHQ/ImFuIGludmFsaWQgb2JqZWN0IjoiJyIrdCsiJyIpKyIgd2hlcmUgYSBzdHJlYW0gd2FzIGV4cGVjdGVkLiBZb3UgY2FuIHByb3ZpZGUgYW4gT2JzZXJ2YWJsZSwgUHJvbWlzZSwgUmVhZGFibGVTdHJlYW0sIEFycmF5LCBBc3luY0l0ZXJhYmxlLCBvciBJdGVyYWJsZS4iKX1mdW5jdGlvbiB2dCh0KXtyZXR1cm4gbCh0aGlzLGFyZ3VtZW50cywoZnVuY3Rpb24gZSgpe3ZhciBuLGksYTtyZXR1cm4gbyh0aGlzLChmdW5jdGlvbihlKXtzd2l0Y2goZS5sYWJlbCl7Y2FzZSAwOm49dC5nZXRSZWFkZXIoKSxlLmxhYmVsPTE7Y2FzZSAxOmUudHJ5cy5wdXNoKFsxLCw5LDEwXSksZS5sYWJlbD0yO2Nhc2UgMjpyZXR1cm5bNCxzKG4ucmVhZCgpKV07Y2FzZSAzOnJldHVybiBpPWUuc2VudCgpLGE9aS52YWx1ZSxpLmRvbmU/WzQscyh2b2lkIDApXTpbMyw1XTtjYXNlIDQ6cmV0dXJuWzIsZS5zZW50KCldO2Nhc2UgNTpyZXR1cm5bNCxzKGEpXTtjYXNlIDY6cmV0dXJuWzQsZS5zZW50KCldO2Nhc2UgNzpyZXR1cm4gZS5zZW50KCksWzMsMl07Y2FzZSA4OnJldHVyblszLDEwXTtjYXNlIDk6cmV0dXJuIG4ucmVsZWFzZUxvY2soKSxbN107Y2FzZSAxMDpyZXR1cm5bMl19fSkpfSkpfWZ1bmN0aW9uIHh0KHQpe3JldHVybiBkKG51bGw9PXQ/dm9pZCAwOnQuZ2V0UmVhZGVyKX1mdW5jdGlvbiBPdCh0LGUpe2lmKG51bGwhPXQpe2lmKHl0KHQpKXJldHVybihmdW5jdGlvbiBuKHQsZSl7cmV0dXJuIG5ldyBUKChmdW5jdGlvbihuKXt2YXIgbz1uZXcgdTtyZXR1cm4gby5hZGQoZS5zY2hlZHVsZSgoZnVuY3Rpb24oKXt2YXIgaT10W0RdKCk7by5hZGQoaS5zdWJzY3JpYmUoe25leHQ6ZnVuY3Rpb24odCl7by5hZGQoZS5zY2hlZHVsZSgoZnVuY3Rpb24oKXtyZXR1cm4gbi5uZXh0KHQpfSkpKX0sZXJyb3I6ZnVuY3Rpb24odCl7by5hZGQoZS5zY2hlZHVsZSgoZnVuY3Rpb24oKXtyZXR1cm4gbi5lcnJvcih0KX0pKSl9LGNvbXBsZXRlOmZ1bmN0aW9uKCl7by5hZGQoZS5zY2hlZHVsZSgoZnVuY3Rpb24oKXtyZXR1cm4gbi5jb21wbGV0ZSgpfSkpKX19KSl9KSkpLG99KSl9KSh0LGUpO2lmKG10KHQpKXJldHVybiBwdCh0LGUpO2lmKGZ0KHQpKXJldHVybihmdW5jdGlvbiBvKHQsZSl7cmV0dXJuIG5ldyBUKChmdW5jdGlvbihuKXtyZXR1cm4gZS5zY2hlZHVsZSgoZnVuY3Rpb24oKXtyZXR1cm4gdC50aGVuKChmdW5jdGlvbih0KXtuLmFkZChlLnNjaGVkdWxlKChmdW5jdGlvbigpe24ubmV4dCh0KSxuLmFkZChlLnNjaGVkdWxlKChmdW5jdGlvbigpe3JldHVybiBuLmNvbXBsZXRlKCl9KSkpfSkpKX0pLChmdW5jdGlvbih0KXtuLmFkZChlLnNjaGVkdWxlKChmdW5jdGlvbigpe3JldHVybiBuLmVycm9yKHQpfSkpKX0pKX0pKX0pKX0pKHQsZSk7aWYoQ3QodCkpcmV0dXJuIGJ0KHQsZSk7aWYoX3QodCkpcmV0dXJuKGZ1bmN0aW9uIGkodCxlKXtyZXR1cm4gbmV3IFQoKGZ1bmN0aW9uKG4pe3ZhciBvO3JldHVybiBuLmFkZChlLnNjaGVkdWxlKChmdW5jdGlvbigpe289dFtndF0oKSwoZnVuY3Rpb24gaSh0LGUsbixvKXt2b2lkIDA9PT1vJiYobz0wKTt2YXIgaT1lLnNjaGVkdWxlKChmdW5jdGlvbigpe3RyeXtuLmNhbGwodGhpcyl9Y2F0Y2goZSl7dC5lcnJvcihlKX19KSxvKTt0LmFkZChpKX0pKG4sZSwoZnVuY3Rpb24oKXt2YXIgdD1vLm5leHQoKSxlPXQudmFsdWU7dC5kb25lP24uY29tcGxldGUoKToobi5uZXh0KGUpLHRoaXMuc2NoZWR1bGUoKSl9KSl9KSkpLGZ1bmN0aW9uKCl7cmV0dXJuIGQobnVsbD09bz92b2lkIDA6by5yZXR1cm4pJiZvLnJldHVybigpfX0pKX0pKHQsZSk7aWYoeHQodCkpcmV0dXJuKGZ1bmN0aW9uIGEodCxlKXtyZXR1cm4gYnQodnQodCksZSl9KSh0LGUpfXRocm93IE10KHQpfWZ1bmN0aW9uIFB0KHQsZSl7cmV0dXJuIGU/T3QodCxlKTp3dCh0KX1mdW5jdGlvbiB3dCh0KXtpZih0IGluc3RhbmNlb2YgVClyZXR1cm4gdDtpZihudWxsIT10KXtpZih5dCh0KSlyZXR1cm4oZnVuY3Rpb24gZSh0KXtyZXR1cm4gbmV3IFQoKGZ1bmN0aW9uKGUpe3ZhciBuPXRbRF0oKTtpZihkKG4uc3Vic2NyaWJlKSlyZXR1cm4gbi5zdWJzY3JpYmUoZSk7dGhyb3cgbmV3IFR5cGVFcnJvcigiUHJvdmlkZWQgb2JqZWN0IGRvZXMgbm90IGNvcnJlY3RseSBpbXBsZW1lbnQgU3ltYm9sLm9ic2VydmFibGUiKX0pKX0pKHQpO2lmKG10KHQpKXJldHVybiBrdCh0KTtpZihmdCh0KSlyZXR1cm4oZnVuY3Rpb24gbih0KXtyZXR1cm4gbmV3IFQoKGZ1bmN0aW9uKGUpe3QudGhlbigoZnVuY3Rpb24odCl7ZS5jbG9zZWR8fChlLm5leHQodCksZS5jb21wbGV0ZSgpKX0pLChmdW5jdGlvbih0KXtyZXR1cm4gZS5lcnJvcih0KX0pKS50aGVuKG51bGwsQyl9KSl9KSh0KTtpZihDdCh0KSlyZXR1cm4gU3QodCk7aWYoX3QodCkpcmV0dXJuKGZ1bmN0aW9uIG8odCl7cmV0dXJuIG5ldyBUKChmdW5jdGlvbihlKXt2YXIgbixvO3RyeXtmb3IodmFyIGE9aSh0KSxyPWEubmV4dCgpOyFyLmRvbmU7cj1hLm5leHQoKSl7aWYoZS5uZXh0KHIudmFsdWUpLGUuY2xvc2VkKXJldHVybn19Y2F0Y2godCl7bj17ZXJyb3I6dH19ZmluYWxseXt0cnl7ciYmIXIuZG9uZSYmKG89YS5yZXR1cm4pJiZvLmNhbGwoYSl9ZmluYWxseXtpZihuKXRocm93IG4uZXJyb3J9fWUuY29tcGxldGUoKX0pKX0pKHQpO2lmKHh0KHQpKXJldHVybihmdW5jdGlvbiBhKHQpe3JldHVybiBTdCh2dCh0KSl9KSh0KX10aHJvdyBNdCh0KX1mdW5jdGlvbiBrdCh0KXtyZXR1cm4gbmV3IFQoKGZ1bmN0aW9uKGUpe2Zvcih2YXIgbj0wO248dC5sZW5ndGgmJiFlLmNsb3NlZDtuKyspZS5uZXh0KHRbbl0pO2UuY29tcGxldGUoKX0pKX1mdW5jdGlvbiBTdCh0KXtyZXR1cm4gbmV3IFQoKGZ1bmN0aW9uKGUpeyhmdW5jdGlvbiBpKHQsZSl7dmFyIGksYSxyLHM7cmV0dXJuIG4odGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbigpe3ZhciBuO3JldHVybiBvKHRoaXMsKGZ1bmN0aW9uKG8pe3N3aXRjaChvLmxhYmVsKXtjYXNlIDA6by50cnlzLnB1c2goWzAsNSw2LDExXSksaT1jKHQpLG8ubGFiZWw9MTtjYXNlIDE6cmV0dXJuWzQsaS5uZXh0KCldO2Nhc2UgMjppZigoYT1vLnNlbnQoKSkuZG9uZSlyZXR1cm5bMyw0XTtpZihlLm5leHQoYS52YWx1ZSksZS5jbG9zZWQpcmV0dXJuWzJdO28ubGFiZWw9MztjYXNlIDM6cmV0dXJuWzMsMV07Y2FzZSA0OnJldHVyblszLDExXTtjYXNlIDU6cmV0dXJuIG49by5zZW50KCkscj17ZXJyb3I6bn0sWzMsMTFdO2Nhc2UgNjpyZXR1cm4gby50cnlzLnB1c2goWzYsLDksMTBdKSxhJiYhYS5kb25lJiYocz1pLnJldHVybik/WzQscy5jYWxsKGkpXTpbMyw4XTtjYXNlIDc6by5zZW50KCksby5sYWJlbD04O2Nhc2UgODpyZXR1cm5bMywxMF07Y2FzZSA5OmlmKHIpdGhyb3cgci5lcnJvcjtyZXR1cm5bN107Y2FzZSAxMDpyZXR1cm5bN107Y2FzZSAxMTpyZXR1cm4gZS5jb21wbGV0ZSgpLFsyXX19KSl9KSl9KSh0LGUpLmNhdGNoKChmdW5jdGlvbih0KXtyZXR1cm4gZS5lcnJvcih0KX0pKX0pKX1mdW5jdGlvbiBEdCh0LGUpe3JldHVybiBlP3B0KHQsZSk6a3QodCl9ZnVuY3Rpb24gUnQodCl7cmV0dXJuIHQmJmQodC5zY2hlZHVsZSl9ZnVuY3Rpb24gRXQodCl7cmV0dXJuIHRbdC5sZW5ndGgtMV19ZnVuY3Rpb24gQXQodCl7cmV0dXJuIGQoRXQodCkpP3QucG9wKCk6dm9pZCAwfWZ1bmN0aW9uIFR0KHQpe3JldHVybiBSdChFdCh0KSk/dC5wb3AoKTp2b2lkIDB9ZnVuY3Rpb24gTnQodCxlKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIEV0KHQpP3QucG9wKCk6ZX1mdW5jdGlvbiB6dCgpe2Zvcih2YXIgdD1bXSxlPTA7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl0W2VdPWFyZ3VtZW50c1tlXTt2YXIgbj1UdCh0KTtyZXR1cm4gbj9wdCh0LG4pOkR0KHQpfWZ1bmN0aW9uIEl0KHQsZSl7dmFyIG49ZCh0KT90OmZ1bmN0aW9uKCl7cmV0dXJuIHR9LG89ZnVuY3Rpb24odCl7cmV0dXJuIHQuZXJyb3IobigpKX07cmV0dXJuIG5ldyBUKGU/ZnVuY3Rpb24odCl7cmV0dXJuIGUuc2NoZWR1bGUobywwLHQpfTpvKX0hKGZ1bmN0aW9uKHQpe3QuTkVYVD0iTiIsdC5FUlJPUj0iRSIsdC5DT01QTEVURT0iQyJ9KSh1dHx8KHV0PXt9KSk7dmFyIEh0PShmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLG4pe3RoaXMua2luZD10LHRoaXMudmFsdWU9ZSx0aGlzLmVycm9yPW4sdGhpcy5oYXNWYWx1ZT0iTiI9PT10fXJldHVybiB0LnByb3RvdHlwZS5vYnNlcnZlPWZ1bmN0aW9uKHQpe3JldHVybiBGdCh0aGlzLHQpfSx0LnByb3RvdHlwZS5kbz1mdW5jdGlvbih0LGUsbil7dmFyIG89dGhpcyxpPW8ua2luZCxhPW8uZXJyb3I7cmV0dXJuIk4iPT09aT9udWxsPT10P3ZvaWQgMDp0KG8udmFsdWUpOiJFIj09PWk/bnVsbD09ZT92b2lkIDA6ZShhKTpudWxsPT1uP3ZvaWQgMDpuKCl9LHQucHJvdG90eXBlLmFjY2VwdD1mdW5jdGlvbih0LGUsbil7dmFyIG87cmV0dXJuIGQobnVsbD09PShvPXQpfHx2b2lkIDA9PT1vP3ZvaWQgMDpvLm5leHQpP3RoaXMub2JzZXJ2ZSh0KTp0aGlzLmRvKHQsZSxuKX0sdC5wcm90b3R5cGUudG9PYnNlcnZhYmxlPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXQua2luZCxuPXQuZXJyb3Isbz0iTiI9PT1lP3p0KHQudmFsdWUpOiJFIj09PWU/SXQoKGZ1bmN0aW9uKCl7cmV0dXJuIG59KSk6IkMiPT09ZT9kdDowO2lmKCFvKXRocm93IG5ldyBUeXBlRXJyb3IoIlVuZXhwZWN0ZWQgbm90aWZpY2F0aW9uIGtpbmQgIitlKTtyZXR1cm4gb30sdC5jcmVhdGVOZXh0PWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgdCgiTiIsZSl9LHQuY3JlYXRlRXJyb3I9ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyB0KCJFIix2b2lkIDAsZSl9LHQuY3JlYXRlQ29tcGxldGU9ZnVuY3Rpb24oKXtyZXR1cm4gdC5jb21wbGV0ZU5vdGlmaWNhdGlvbn0sdC5jb21wbGV0ZU5vdGlmaWNhdGlvbj1uZXcgdCgiQyIpLHR9KSgpO2Z1bmN0aW9uIEZ0KHQsZSl7dmFyIG4sbyxpLGE9dC5raW5kLHI9dC52YWx1ZSxzPXQuZXJyb3I7aWYoInN0cmluZyIhPXR5cGVvZiBhKXRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgbm90aWZpY2F0aW9uLCBtaXNzaW5nICJraW5kIicpOyJOIj09PWE/bnVsbD09PShuPWUubmV4dCl8fHZvaWQgMD09PW58fG4uY2FsbChlLHIpOiJFIj09PWE/bnVsbD09PShvPWUuZXJyb3IpfHx2b2lkIDA9PT1vfHxvLmNhbGwoZSxzKTpudWxsPT09KGk9ZS5jb21wbGV0ZSl8fHZvaWQgMD09PWl8fGkuY2FsbChlKX1mdW5jdGlvbiBMdCh0KXtyZXR1cm4hIXQmJih0IGluc3RhbmNlb2YgVHx8ZCh0LmxpZnQpJiZkKHQuc3Vic2NyaWJlKSl9dmFyIEJ0PXAoKGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbiBlKCl7dCh0aGlzKSx0aGlzLm5hbWU9IkVtcHR5RXJyb3IiLHRoaXMubWVzc2FnZT0ibm8gZWxlbWVudHMgaW4gc2VxdWVuY2UifX0pKTtmdW5jdGlvbiBWdCh0LGUpe3JldHVybiB6KChmdW5jdGlvbihuLG8pe3ZhciBpPTA7bi5zdWJzY3JpYmUobmV3IEgobywoZnVuY3Rpb24obil7by5uZXh0KHQuY2FsbChlLG4saSsrKSl9KSkpfSkpfXZhciBqdD1BcnJheS5pc0FycmF5O2Z1bmN0aW9uIFV0KHQpe3JldHVybiBWdCgoZnVuY3Rpb24oZSl7cmV0dXJuKGZ1bmN0aW9uIG4odCxlKXtyZXR1cm4ganQoZSk/dC5hcHBseSh2b2lkIDAscihbXSxhKGUpKSk6dChlKX0pKHQsZSl9KSl9dmFyIFd0PUFycmF5LmlzQXJyYXksR3Q9T2JqZWN0LmdldFByb3RvdHlwZU9mLFl0PU9iamVjdC5wcm90b3R5cGUscXQ9T2JqZWN0LmtleXM7ZnVuY3Rpb24gWnQodCl7aWYoMT09PXQubGVuZ3RoKXt2YXIgZT10WzBdO2lmKFd0KGUpKXJldHVybnthcmdzOmUsa2V5czpudWxsfTtpZigoZnVuY3Rpb24gbih0KXtyZXR1cm4gdCYmIm9iamVjdCI9PXR5cGVvZiB0JiZHdCh0KT09PVl0fSkoZSkpe3ZhciBvPXF0KGUpO3JldHVybnthcmdzOm8ubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gZVt0XX0pKSxrZXlzOm99fX1yZXR1cm57YXJnczp0LGtleXM6bnVsbH19ZnVuY3Rpb24gWHQodCxlKXtyZXR1cm4gdC5yZWR1Y2UoKGZ1bmN0aW9uKHQsbixvKXtyZXR1cm4gdFtuXT1lW29dLHR9KSx7fSl9ZnVuY3Rpb24gS3QoKXtmb3IodmFyIHQ9W10sZT0wO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspdFtlXT1hcmd1bWVudHNbZV07dmFyIG49VHQodCksbz1BdCh0KSxpPVp0KHQpLGE9aS5hcmdzLHI9aS5rZXlzO2lmKDA9PT1hLmxlbmd0aClyZXR1cm4gUHQoW10sbik7dmFyIHM9bmV3IFQoSnQoYSxuLHI/ZnVuY3Rpb24odCl7cmV0dXJuIFh0KHIsdCl9OlIpKTtyZXR1cm4gbz9zLnBpcGUoVXQobykpOnN9ZnVuY3Rpb24gSnQodCxlLG4pe3JldHVybiB2b2lkIDA9PT1uJiYobj1SKSxmdW5jdGlvbihvKXtRdChlLChmdW5jdGlvbigpe2Zvcih2YXIgaT10Lmxlbmd0aCxhPW5ldyBBcnJheShpKSxyPWkscz1pLGw9ZnVuY3Rpb24oaSl7UXQoZSwoZnVuY3Rpb24oKXt2YXIgbD1QdCh0W2ldLGUpLGM9ITE7bC5zdWJzY3JpYmUobmV3IEgobywoZnVuY3Rpb24odCl7YVtpXT10LGN8fChjPSEwLHMtLSksc3x8by5uZXh0KG4oYS5zbGljZSgpKSl9KSwoZnVuY3Rpb24oKXstLXJ8fG8uY29tcGxldGUoKX0pKSl9KSxvKX0sYz0wO2M8aTtjKyspbChjKX0pLG8pfX1mdW5jdGlvbiBRdCh0LGUsbil7dD9uLmFkZCh0LnNjaGVkdWxlKGUpKTplKCl9ZnVuY3Rpb24gJHQodCxlLG4pe3JldHVybiB2b2lkIDA9PT1uJiYobj0xLzApLGQoZSk/JHQoKGZ1bmN0aW9uKG4sbyl7cmV0dXJuIFZ0KChmdW5jdGlvbih0LGkpe3JldHVybiBlKG4sdCxvLGkpfSkpKHd0KHQobixvKSkpfSksbik6KCJudW1iZXIiPT10eXBlb2YgZSYmKG49ZSkseigoZnVuY3Rpb24oZSxvKXtyZXR1cm4oZnVuY3Rpb24gaSh0LGUsbixvLGEscixzLGwpe3ZhciBjPVtdLGQ9MCxwPTAsbT0hMSxmPWZ1bmN0aW9uKCl7IW18fGMubGVuZ3RofHxkfHxlLmNvbXBsZXRlKCl9LHU9ZnVuY3Rpb24odCl7cmV0dXJuIGQ8bz9nKHQpOmMucHVzaCh0KX0sZz1mdW5jdGlvbih0KXtyJiZlLm5leHQodCksZCsrO3ZhciBpPSExO3d0KG4odCxwKyspKS5zdWJzY3JpYmUobmV3IEgoZSwoZnVuY3Rpb24odCl7bnVsbD09YXx8YSh0KSxyP3UodCk6ZS5uZXh0KHQpfSksKGZ1bmN0aW9uKCl7aT0hMH0pLHZvaWQgMCwoZnVuY3Rpb24oKXtpZihpKXRyeXtkLS07Zm9yKHZhciB0PWZ1bmN0aW9uKCl7dmFyIHQ9Yy5zaGlmdCgpO3M/ZS5hZGQocy5zY2hlZHVsZSgoZnVuY3Rpb24oKXtyZXR1cm4gZyh0KX0pKSk6Zyh0KX07Yy5sZW5ndGgmJmQ8bzspdCgpO2YoKX1jYXRjaCh0KXtlLmVycm9yKHQpfX0pKSl9O3JldHVybiB0LnN1YnNjcmliZShuZXcgSChlLHUsKGZ1bmN0aW9uKCl7bT0hMCxmKCl9KSkpLGZ1bmN0aW9uKCl7bnVsbD09bHx8bCgpfX0pKGUsbyx0LG4pfSkpKX1mdW5jdGlvbiB0ZSh0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9MS8wKSwkdChSLHQpfWZ1bmN0aW9uIGVlKCl7cmV0dXJuIHRlKDEpfWZ1bmN0aW9uIG5lKCl7Zm9yKHZhciB0PVtdLGU9MDtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXRbZV09YXJndW1lbnRzW2VdO3JldHVybiBlZSgpKER0KHQsVHQodCkpKX1mdW5jdGlvbiBvZSh0KXtyZXR1cm4gbmV3IFQoKGZ1bmN0aW9uKGUpe3d0KHQoKSkuc3Vic2NyaWJlKGUpfSkpfWZ1bmN0aW9uIGllKCl7Zm9yKHZhciB0PVtdLGU9MDtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXRbZV09YXJndW1lbnRzW2VdO3ZhciBuPUF0KHQpLG89WnQodCksaT1vLmFyZ3MsYT1vLmtleXMscj1uZXcgVCgoZnVuY3Rpb24odCl7dmFyIGU9aS5sZW5ndGg7aWYoZSlmb3IodmFyIG49bmV3IEFycmF5KGUpLG89ZSxyPWUscz1mdW5jdGlvbihlKXt2YXIgcz0hMTt3dChpW2VdKS5zdWJzY3JpYmUobmV3IEgodCwoZnVuY3Rpb24odCl7c3x8KHM9ITAsci0tKSxuW2VdPXR9KSwoZnVuY3Rpb24oKXstLW8mJnN8fChyfHx0Lm5leHQoYT9YdChhLG4pOm4pLHQuY29tcGxldGUoKSl9KSkpfSxsPTA7bDxlO2wrKylzKGwpO2Vsc2UgdC5jb21wbGV0ZSgpfSkpO3JldHVybiBuP3IucGlwZShVdChuKSk6cn12YXIgYWU9WyJhZGRMaXN0ZW5lciIsInJlbW92ZUxpc3RlbmVyIl0scmU9WyJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciJdLHNlPVsib24iLCJvZmYiXTtmdW5jdGlvbiBsZSh0LGUsbixvKXtpZihkKG4pJiYobz1uLG49dm9pZCAwKSxvKXJldHVybiBsZSh0LGUsbikucGlwZShVdChvKSk7dmFyIGk9YSgoZnVuY3Rpb24gcih0KXtyZXR1cm4gZCh0LmFkZEV2ZW50TGlzdGVuZXIpJiZkKHQucmVtb3ZlRXZlbnRMaXN0ZW5lcil9KSh0KT9yZS5tYXAoKGZ1bmN0aW9uKG8pe3JldHVybiBmdW5jdGlvbihpKXtyZXR1cm4gdFtvXShlLGksbil9fSkpOihmdW5jdGlvbiBzKHQpe3JldHVybiBkKHQuYWRkTGlzdGVuZXIpJiZkKHQucmVtb3ZlTGlzdGVuZXIpfSkodCk/YWUubWFwKGNlKHQsZSkpOihmdW5jdGlvbiBsKHQpe3JldHVybiBkKHQub24pJiZkKHQub2ZmKX0pKHQpP3NlLm1hcChjZSh0LGUpKTpbXSwyKSxjPWlbMF0scD1pWzFdO2lmKCFjJiZtdCh0KSlyZXR1cm4gJHQoKGZ1bmN0aW9uKHQpe3JldHVybiBsZSh0LGUsbil9KSkoRHQodCkpO2lmKCFjKXRocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgZXZlbnQgdGFyZ2V0Iik7cmV0dXJuIG5ldyBUKChmdW5jdGlvbih0KXt2YXIgZT1mdW5jdGlvbigpe2Zvcih2YXIgZT1bXSxuPTA7bjxhcmd1bWVudHMubGVuZ3RoO24rKyllW25dPWFyZ3VtZW50c1tuXTtyZXR1cm4gdC5uZXh0KDE8ZS5sZW5ndGg/ZTplWzBdKX07cmV0dXJuIGMoZSksZnVuY3Rpb24oKXtyZXR1cm4gcChlKX19KSl9ZnVuY3Rpb24gY2UodCxlKXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIGZ1bmN0aW9uKG8pe3JldHVybiB0W25dKGUsbyl9fX1mdW5jdGlvbiBkZSh0LGUsbil7dm9pZCAwPT09dCYmKHQ9MCksdm9pZCAwPT09biYmKG49YXQpO3ZhciBvPS0xO3JldHVybiBudWxsIT1lJiYoUnQoZSk/bj1lOm89ZSksbmV3IFQoKGZ1bmN0aW9uKGUpe3ZhciBpPShmdW5jdGlvbiBhKHQpe3JldHVybiB0IGluc3RhbmNlb2YgRGF0ZSYmIWlzTmFOKHQpfSkodCk/K3Qtbi5ub3coKTp0O2k8MCYmKGk9MCk7dmFyIHI9MDtyZXR1cm4gbi5zY2hlZHVsZSgoZnVuY3Rpb24oKXtlLmNsb3NlZHx8KGUubmV4dChyKyspLDA8PW8/dGhpcy5zY2hlZHVsZSh2b2lkIDAsbyk6ZS5jb21wbGV0ZSgpKX0pLGkpfSkpfWZ1bmN0aW9uIHBlKCl7Zm9yKHZhciB0PVtdLGU9MDtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXRbZV09YXJndW1lbnRzW2VdO3ZhciBuPVR0KHQpLG89TnQodCwxLzApLGk9dDtyZXR1cm4gaS5sZW5ndGg/MT09PWkubGVuZ3RoP3d0KGlbMF0pOnRlKG8pKER0KGksbikpOmR0fXZhciBtZT1BcnJheS5pc0FycmF5O2Z1bmN0aW9uIGZlKHQpe3JldHVybiAxPT09dC5sZW5ndGgmJm1lKHRbMF0pP3RbMF06dH1mdW5jdGlvbiB1ZSh0LGUpe3JldHVybiB6KChmdW5jdGlvbihuLG8pe3ZhciBpPTA7bi5zdWJzY3JpYmUobmV3IEgobywoZnVuY3Rpb24obil7cmV0dXJuIHQuY2FsbChlLG4saSsrKSYmby5uZXh0KG4pfSkpKX0pKX1mdW5jdGlvbiBnZSh0LGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT1hdCksKGZ1bmN0aW9uIG4odCl7cmV0dXJuIHooKGZ1bmN0aW9uKGUsbil7dmFyIG89ITEsaT1udWxsLGE9bnVsbCxyPSExLHM9ZnVuY3Rpb24oKXtpZihudWxsPT1hfHxhLnVuc3Vic2NyaWJlKCksYT1udWxsLG8pe289ITE7dmFyIHQ9aTtpPW51bGwsbi5uZXh0KHQpfXImJm4uY29tcGxldGUoKX0sbD1mdW5jdGlvbigpe2E9bnVsbCxyJiZuLmNvbXBsZXRlKCl9O2Uuc3Vic2NyaWJlKG5ldyBIKG4sKGZ1bmN0aW9uKGUpe289ITAsaT1lLGF8fHd0KHQoZSkpLnN1YnNjcmliZShhPW5ldyBIKG4scyxsKSl9KSwoZnVuY3Rpb24oKXtyPSEwLCghb3x8IWF8fGEuY2xvc2VkKSYmbi5jb21wbGV0ZSgpfSkpKX0pKX0pKChmdW5jdGlvbigpe3JldHVybiBkZSh0LGUpfSkpfWZ1bmN0aW9uIGhlKHQpe3JldHVybiB6KChmdW5jdGlvbihlLG4pe3ZhciBvLGk9bnVsbCxhPSExO2k9ZS5zdWJzY3JpYmUobmV3IEgobix2b2lkIDAsdm9pZCAwLChmdW5jdGlvbihyKXtvPXd0KHQocixoZSh0KShlKSkpLGk/KGkudW5zdWJzY3JpYmUoKSxpPW51bGwsby5zdWJzY3JpYmUobikpOmE9ITB9KSkpLGEmJihpLnVuc3Vic2NyaWJlKCksaT1udWxsLG8uc3Vic2NyaWJlKG4pKX0pKX1mdW5jdGlvbiBiZSh0LGUsbixvLGkpe3JldHVybiBmdW5jdGlvbihhLHIpe3ZhciBzPW4sbD1lLGM9MDthLnN1YnNjcmliZShuZXcgSChyLChmdW5jdGlvbihlKXt2YXIgbj1jKys7bD1zP3QobCxlLG4pOihzPSEwLGUpLG8mJnIubmV4dChsKX0pLGkmJmZ1bmN0aW9uKCl7cyYmci5uZXh0KGwpLHIuY29tcGxldGUoKX0pKX19ZnVuY3Rpb24geWUoKXtmb3IodmFyIHQ9W10sZT0wO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspdFtlXT1hcmd1bWVudHNbZV07dmFyIG49QXQodCk7cmV0dXJuIG4/RSh5ZS5hcHBseSh2b2lkIDAscihbXSxhKHQpKSksVXQobikpOnooKGZ1bmN0aW9uKGUsbil7SnQocihbZV0sYShmZSh0KSkpKShuKX0pKX1mdW5jdGlvbiBfZSgpe2Zvcih2YXIgdD1bXSxlPTA7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl0W2VdPWFyZ3VtZW50c1tlXTtyZXR1cm4geWUuYXBwbHkodm9pZCAwLHIoW10sYSh0KSkpfWZ1bmN0aW9uIENlKHQsZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPWl0KSx6KChmdW5jdGlvbihuLG8pe3ZhciBpPW51bGwsYT1udWxsLHI9bnVsbCxzPWZ1bmN0aW9uKCl7aWYoaSl7aS51bnN1YnNjcmliZSgpLGk9bnVsbDt2YXIgdD1hO2E9bnVsbCxvLm5leHQodCl9fTtmdW5jdGlvbiBsKCl7dmFyIG49cit0LGE9ZS5ub3coKTtpZihhPG4pcmV0dXJuIGk9dGhpcy5zY2hlZHVsZSh2b2lkIDAsbi1hKSx2b2lkIG8uYWRkKGkpO3MoKX1uLnN1YnNjcmliZShuZXcgSChvLChmdW5jdGlvbihuKXthPW4scj1lLm5vdygpLGl8fChpPWUuc2NoZWR1bGUobCx0KSxvLmFkZChpKSl9KSwoZnVuY3Rpb24oKXtzKCksby5jb21wbGV0ZSgpfSksdm9pZCAwLChmdW5jdGlvbigpe2E9aT1udWxsfSkpKX0pKX1mdW5jdGlvbiBNZSh0KXtyZXR1cm4geigoZnVuY3Rpb24oZSxuKXt2YXIgbz0hMTtlLnN1YnNjcmliZShuZXcgSChuLChmdW5jdGlvbih0KXtvPSEwLG4ubmV4dCh0KX0pLChmdW5jdGlvbigpe298fG4ubmV4dCh0KSxuLmNvbXBsZXRlKCl9KSkpfSkpfWZ1bmN0aW9uIHZlKHQpe3JldHVybiB0PD0wP2Z1bmN0aW9uKCl7cmV0dXJuIGR0fTp6KChmdW5jdGlvbihlLG4pe3ZhciBvPTA7ZS5zdWJzY3JpYmUobmV3IEgobiwoZnVuY3Rpb24oZSl7KytvPD10JiYobi5uZXh0KGUpLHQ8PW8mJm4uY29tcGxldGUoKSl9KSkpfSkpfWZ1bmN0aW9uIHhlKCl7cmV0dXJuIHooKGZ1bmN0aW9uKHQsZSl7dC5zdWJzY3JpYmUobmV3IEgoZSxNKSl9KSl9ZnVuY3Rpb24gT2UodCxlKXtyZXR1cm4gZT9mdW5jdGlvbihuKXtyZXR1cm4gbmUoZS5waXBlKHZlKDEpLHhlKCkpLG4ucGlwZShPZSh0KSkpfTokdCgoZnVuY3Rpb24oZSxuKXtyZXR1cm4gdChlLG4pLnBpcGUodmUoMSksKGZ1bmN0aW9uIG8odCl7cmV0dXJuIFZ0KChmdW5jdGlvbigpe3JldHVybiB0fSkpfSkoZSkpfSkpfWZ1bmN0aW9uIFBlKHQsZSl7dm9pZCAwPT09ZSYmKGU9aXQpO3ZhciBuPWRlKHQsZSk7cmV0dXJuIE9lKChmdW5jdGlvbigpe3JldHVybiBufSkpfWZ1bmN0aW9uIHdlKHQsZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPVIpLHQ9bnVsbCE9dD90OmtlLHooKGZ1bmN0aW9uKG4sbyl7dmFyIGksYT0hMDtuLnN1YnNjcmliZShuZXcgSChvLChmdW5jdGlvbihuKXt2YXIgcj1lKG4pOyFhJiZ0KGkscil8fChhPSExLGk9cixvLm5leHQobikpfSkpKX0pKX1mdW5jdGlvbiBrZSh0LGUpe3JldHVybiB0PT09ZX1mdW5jdGlvbiBTZSh0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9RGUpLHooKGZ1bmN0aW9uKGUsbil7dmFyIG89ITE7ZS5zdWJzY3JpYmUobmV3IEgobiwoZnVuY3Rpb24odCl7bz0hMCxuLm5leHQodCl9KSwoZnVuY3Rpb24oKXtyZXR1cm4gbz9uLmNvbXBsZXRlKCk6bi5lcnJvcih0KCkpfSkpKX0pKX1mdW5jdGlvbiBEZSgpe3JldHVybiBuZXcgQnR9ZnVuY3Rpb24gUmUodCxlKXtyZXR1cm4gZT9mdW5jdGlvbihuKXtyZXR1cm4gbi5waXBlKFJlKChmdW5jdGlvbihuLG8pe3JldHVybiB3dCh0KG4sbykpLnBpcGUoVnQoKGZ1bmN0aW9uKHQsaSl7cmV0dXJuIGUobix0LG8saSl9KSkpfSkpKX06eigoZnVuY3Rpb24oZSxuKXt2YXIgbz0wLGk9bnVsbCxhPSExO2Uuc3Vic2NyaWJlKG5ldyBIKG4sKGZ1bmN0aW9uKGUpe2l8fChpPW5ldyBIKG4sdm9pZCAwLChmdW5jdGlvbigpe2k9bnVsbCxhJiZuLmNvbXBsZXRlKCl9KSksd3QodChlLG8rKykpLnN1YnNjcmliZShpKSl9KSwoZnVuY3Rpb24oKXthPSEwLCFpJiZuLmNvbXBsZXRlKCl9KSkpfSkpfWZ1bmN0aW9uIEVlKHQsZSxuLG8pe3JldHVybiB6KChmdW5jdGlvbihpLGEpe3ZhciByO2UmJiJmdW5jdGlvbiIhPXR5cGVvZiBlPyhuPWUuZHVyYXRpb24scj1lLmVsZW1lbnQsbz1lLmNvbm5lY3Rvcik6cj1lO3ZhciBzPW5ldyBNYXAsbD1mdW5jdGlvbih0KXtzLmZvckVhY2godCksdChhKX0sYz1mdW5jdGlvbih0KXtyZXR1cm4gbCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUuZXJyb3IodCl9KSl9LGQ9bmV3IEFlKGEsKGZ1bmN0aW9uKGUpe3RyeXt2YXIgaT10KGUpLGw9cy5nZXQoaSk7aWYoIWwpe3Muc2V0KGksbD1vP28oKTpuZXcgQik7dmFyIHA9KGZ1bmN0aW9uIG0odCxlKXt2YXIgbj1uZXcgVCgoZnVuY3Rpb24odCl7ZC5hY3RpdmVHcm91cHMrKzt2YXIgbj1lLnN1YnNjcmliZSh0KTtyZXR1cm4gZnVuY3Rpb24oKXtuLnVuc3Vic2NyaWJlKCksMD09LS1kLmFjdGl2ZUdyb3VwcyYmZC50ZWFyZG93bkF0dGVtcHRlZCYmZC51bnN1YnNjcmliZSgpfX0pKTtyZXR1cm4gbi5rZXk9dCxufSkoaSxsKTtpZihhLm5leHQocCksbil7dmFyIGY9bmV3IEgobCwoZnVuY3Rpb24oKXtsLmNvbXBsZXRlKCksbnVsbD09Znx8Zi51bnN1YnNjcmliZSgpfSksdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24oKXtyZXR1cm4gcy5kZWxldGUoaSl9KSk7ZC5hZGQod3QobihwKSkuc3Vic2NyaWJlKGYpKX19bC5uZXh0KHI/cihlKTplKX1jYXRjaCh0KXtjKHQpfX0pLChmdW5jdGlvbigpe3JldHVybiBsKChmdW5jdGlvbih0KXtyZXR1cm4gdC5jb21wbGV0ZSgpfSkpfSksYywoZnVuY3Rpb24oKXtyZXR1cm4gcy5jbGVhcigpfSkpO2kuc3Vic2NyaWJlKGQpfSkpfXZhciBBZT0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gbigpe3ZhciBlPW51bGwhPT10JiZ0LmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpcztyZXR1cm4gZS5hY3RpdmVHcm91cHM9MCxlLnRlYXJkb3duQXR0ZW1wdGVkPSExLGV9cmV0dXJuIGUobix0KSxuLnByb3RvdHlwZS51bnN1YnNjcmliZT1mdW5jdGlvbigpe3RoaXMudGVhcmRvd25BdHRlbXB0ZWQ9ITAsMD09PXRoaXMuYWN0aXZlR3JvdXBzJiZ0LnByb3RvdHlwZS51bnN1YnNjcmliZS5jYWxsKHRoaXMpfSxufSkoSCk7ZnVuY3Rpb24gVGUodCl7cmV0dXJuIHQ8PTA/ZnVuY3Rpb24oKXtyZXR1cm4gZHR9OnooKGZ1bmN0aW9uKGUsbil7dmFyIG89W107ZS5zdWJzY3JpYmUobmV3IEgobiwoZnVuY3Rpb24oZSl7by5wdXNoKGUpLHQ8by5sZW5ndGgmJm8uc2hpZnQoKX0pLChmdW5jdGlvbigpe3ZhciB0LGU7dHJ5e2Zvcih2YXIgYT1pKG8pLHI9YS5uZXh0KCk7IXIuZG9uZTtyPWEubmV4dCgpKXtuLm5leHQoci52YWx1ZSl9fWNhdGNoKGUpe3Q9e2Vycm9yOmV9fWZpbmFsbHl7dHJ5e3ImJiFyLmRvbmUmJihlPWEucmV0dXJuKSYmZS5jYWxsKGEpfWZpbmFsbHl7aWYodCl0aHJvdyB0LmVycm9yfX1uLmNvbXBsZXRlKCl9KSx2b2lkIDAsKGZ1bmN0aW9uKCl7bz1udWxsfSkpKX0pKX1mdW5jdGlvbiBOZSgpe3JldHVybiB6KChmdW5jdGlvbih0LGUpe3ZhciBuLG89ITE7dC5zdWJzY3JpYmUobmV3IEgoZSwoZnVuY3Rpb24odCl7dmFyIGk9bjtuPXQsbyYmZS5uZXh0KFtpLHRdKSxvPSEwfSkpKX0pKX1mdW5jdGlvbiB6ZSh0KXtyZXR1cm4geigoZnVuY3Rpb24oZSxuKXt2YXIgbyxpLGE9ITEscj0hMSxzPSExLGw9ZnVuY3Rpb24oKXtyZXR1cm4gcyYmciYmKG4uY29tcGxldGUoKSwhMCl9LGM9ZnVuY3Rpb24oKXtzPSExLG89ZS5zdWJzY3JpYmUobmV3IEgobix2b2lkIDAsKGZ1bmN0aW9uKCl7cz0hMCwhbCgpJiYoaXx8KGk9bmV3IEIsdChpKS5zdWJzY3JpYmUobmV3IEgobiwoZnVuY3Rpb24oKXtvP2MoKTphPSEwfSksKGZ1bmN0aW9uKCl7cj0hMCxsKCl9KSkpKSxpKS5uZXh0KCl9KSkpLGEmJihvLnVuc3Vic2NyaWJlKCksbz1udWxsLGE9ITEsYygpKX07YygpfSkpfWZ1bmN0aW9uIEllKHQpe3ZvaWQgMD09PXQmJih0PXt9KTt2YXIgZT10LmNvbm5lY3RvcixuPXZvaWQgMD09PWU/ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEJ9OmUsbz10LnJlc2V0T25FcnJvcixpPXZvaWQgMD09PW98fG8sYT10LnJlc2V0T25Db21wbGV0ZSxyPXZvaWQgMD09PWF8fGEscz10LnJlc2V0T25SZWZDb3VudFplcm8sbD12b2lkIDA9PT1zfHxzO3JldHVybiBmdW5jdGlvbih0KXt2YXIgZT1udWxsLG89bnVsbCxhPW51bGwscz0wLGM9ITEsZD0hMSxwPWZ1bmN0aW9uKCl7bnVsbD09b3x8by51bnN1YnNjcmliZSgpLG89bnVsbH0sbT1mdW5jdGlvbigpe3AoKSxlPWE9bnVsbCxjPWQ9ITF9LGY9ZnVuY3Rpb24oKXt2YXIgdD1lO20oKSxudWxsPT10fHx0LnVuc3Vic2NyaWJlKCl9O3JldHVybiB6KChmdW5jdGlvbih0LHUpe3MrKyxkfHxjfHxwKCk7dmFyIGc9YT1udWxsIT1hP2E6bigpO3UuYWRkKChmdW5jdGlvbigpezAhPT0tLXN8fGR8fGN8fChvPUhlKGYsbCkpfSkpLGcuc3Vic2NyaWJlKHUpLGV8fChlPW5ldyBQKHtuZXh0OmZ1bmN0aW9uKHQpe3JldHVybiBnLm5leHQodCl9LGVycm9yOmZ1bmN0aW9uKHQpe2Q9ITAscCgpLG89SGUobSxpLHQpLGcuZXJyb3IodCl9LGNvbXBsZXRlOmZ1bmN0aW9uKCl7Yz0hMCxwKCksbz1IZShtLHIpLGcuY29tcGxldGUoKX19KSxQdCh0KS5zdWJzY3JpYmUoZSkpfSkpKHQpfX1mdW5jdGlvbiBIZSh0LGUpe2Zvcih2YXIgbj1bXSxvPTI7bzxhcmd1bWVudHMubGVuZ3RoO28rKyluW28tMl09YXJndW1lbnRzW29dO3JldHVybiEwPT09ZT8odCgpLG51bGwpOiExPT09ZT9udWxsOmUuYXBwbHkodm9pZCAwLHIoW10sYShuKSkpLnBpcGUodmUoMSkpLnN1YnNjcmliZSgoZnVuY3Rpb24oKXtyZXR1cm4gdCgpfSkpfWZ1bmN0aW9uIEZlKHQsZSxuKXt2YXIgbyxpLGEscj0hMTtyZXR1cm4gdCYmIm9iamVjdCI9PXR5cGVvZiB0PyhhPW51bGwhPT0obz10LmJ1ZmZlclNpemUpJiZ2b2lkIDAhPT1vP286MS8wLGU9bnVsbCE9PShpPXQud2luZG93VGltZSkmJnZvaWQgMCE9PWk/aToxLzAscj0hIXQucmVmQ291bnQsbj10LnNjaGVkdWxlcik6YT1udWxsIT10P3Q6MS8wLEllKHtjb25uZWN0b3I6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFcoYSxlLG4pfSxyZXNldE9uRXJyb3I6ITAscmVzZXRPbkNvbXBsZXRlOiExLHJlc2V0T25SZWZDb3VudFplcm86cn0pfWZ1bmN0aW9uIExlKHQpe3JldHVybiB1ZSgoZnVuY3Rpb24oZSxuKXtyZXR1cm4gdDw9bn0pKX1mdW5jdGlvbiBCZSgpe2Zvcih2YXIgdD1bXSxlPTA7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl0W2VdPWFyZ3VtZW50c1tlXTt2YXIgbj1UdCh0KTtyZXR1cm4geigoZnVuY3Rpb24oZSxvKXsobj9uZSh0LGUsbik6bmUodCxlKSkuc3Vic2NyaWJlKG8pfSkpfWZ1bmN0aW9uIFZlKHQsZSl7cmV0dXJuIHooKGZ1bmN0aW9uKG4sbyl7dmFyIGk9bnVsbCxhPTAscj0hMSxzPWZ1bmN0aW9uKCl7cmV0dXJuIHImJiFpJiZvLmNvbXBsZXRlKCl9O24uc3Vic2NyaWJlKG5ldyBIKG8sKGZ1bmN0aW9uKG4pe251bGw9PWl8fGkudW5zdWJzY3JpYmUoKTt2YXIgcj0wLGw9YSsrO3d0KHQobixsKSkuc3Vic2NyaWJlKGk9bmV3IEgobywoZnVuY3Rpb24odCl7cmV0dXJuIG8ubmV4dChlP2Uobix0LGwscisrKTp0KX0pLChmdW5jdGlvbigpe2k9bnVsbCxzKCl9KSkpfSksKGZ1bmN0aW9uKCl7cj0hMCxzKCl9KSkpfSkpfWZ1bmN0aW9uIGplKHQpe3JldHVybiB6KChmdW5jdGlvbihlLG4pe3d0KHQpLnN1YnNjcmliZShuZXcgSChuLChmdW5jdGlvbigpe3JldHVybiBuLmNvbXBsZXRlKCl9KSxNKSksIW4uY2xvc2VkJiZlLnN1YnNjcmliZShuKX0pKX1mdW5jdGlvbiBVZSh0LGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT0hMSkseigoZnVuY3Rpb24obixvKXt2YXIgaT0wO24uc3Vic2NyaWJlKG5ldyBIKG8sKGZ1bmN0aW9uKG4pe3ZhciBhPXQobixpKyspOyhhfHxlKSYmby5uZXh0KG4pLCFhJiZvLmNvbXBsZXRlKCl9KSkpfSkpfWZ1bmN0aW9uIFdlKHQsZSxuKXt2YXIgbz1kKHQpfHxlfHxuP3tuZXh0OnQsZXJyb3I6ZSxjb21wbGV0ZTpufTp0O3JldHVybiBvP3ooKGZ1bmN0aW9uKHQsZSl7dmFyIG47bnVsbD09PShuPW8uc3Vic2NyaWJlKXx8dm9pZCAwPT09bnx8bi5jYWxsKG8pO3ZhciBpPSEwO3Quc3Vic2NyaWJlKG5ldyBIKGUsKGZ1bmN0aW9uKHQpe3ZhciBuO251bGw9PT0obj1vLm5leHQpfHx2b2lkIDA9PT1ufHxuLmNhbGwobyx0KSxlLm5leHQodCl9KSwoZnVuY3Rpb24oKXt2YXIgdDtpPSExLG51bGw9PT0odD1vLmNvbXBsZXRlKXx8dm9pZCAwPT09dHx8dC5jYWxsKG8pLGUuY29tcGxldGUoKX0pLChmdW5jdGlvbih0KXt2YXIgbjtpPSExLG51bGw9PT0obj1vLmVycm9yKXx8dm9pZCAwPT09bnx8bi5jYWxsKG8sdCksZS5lcnJvcih0KX0pLChmdW5jdGlvbigpe3ZhciB0LGU7aSYmKG51bGw9PT0odD1vLnVuc3Vic2NyaWJlKXx8dm9pZCAwPT09dHx8dC5jYWxsKG8pKSxudWxsPT09KGU9by5maW5hbGl6ZSl8fHZvaWQgMD09PWV8fGUuY2FsbChvKX0pKSl9KSk6Un12YXIgR2U9e2xlYWRpbmc6ITAsdHJhaWxpbmc6ITF9O2Z1bmN0aW9uIFllKHQsZSxuKXt2b2lkIDA9PT1lJiYoZT1pdCksdm9pZCAwPT09biYmKG49R2UpO3ZhciBvPWRlKHQsZSk7cmV0dXJuKGZ1bmN0aW9uIGkodCxlKXt2YXIgbj12b2lkIDA9PT1lP0dlOmUsbz1uLmxlYWRpbmcsaT1uLnRyYWlsaW5nO3JldHVybiB6KChmdW5jdGlvbihlLG4pe3ZhciBhPSExLHI9bnVsbCxzPW51bGwsbD0hMSxjPWZ1bmN0aW9uKCl7bnVsbD09c3x8cy51bnN1YnNjcmliZSgpLHM9bnVsbCxpJiYobSgpLGwmJm4uY29tcGxldGUoKSl9LGQ9ZnVuY3Rpb24oKXtzPW51bGwsbCYmbi5jb21wbGV0ZSgpfSxwPWZ1bmN0aW9uKGUpe3JldHVybiBzPXd0KHQoZSkpLnN1YnNjcmliZShuZXcgSChuLGMsZCkpfSxtPWZ1bmN0aW9uKCl7aWYoYSl7YT0hMTt2YXIgdD1yO3I9bnVsbCxuLm5leHQodCksIWwmJnAodCl9fTtlLnN1YnNjcmliZShuZXcgSChuLChmdW5jdGlvbih0KXthPSEwLHI9dCwoIXN8fHMuY2xvc2VkKSYmKG8/bSgpOnAodCkpfSksKGZ1bmN0aW9uKCl7bD0hMCwoIShpJiZhJiZzKXx8cy5jbG9zZWQpJiZuLmNvbXBsZXRlKCl9KSkpfSkpfSkoKGZ1bmN0aW9uKCl7cmV0dXJuIG99KSxuKX1mdW5jdGlvbiBxZSgpe2Zvcih2YXIgdD1bXSxlPTA7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl0W2VdPWFyZ3VtZW50c1tlXTt2YXIgbj1BdCh0KTtyZXR1cm4geigoZnVuY3Rpb24oZSxvKXtmb3IodmFyIGk9dC5sZW5ndGgscz1uZXcgQXJyYXkoaSksbD10Lm1hcCgoZnVuY3Rpb24oKXtyZXR1cm4hMX0pKSxjPSExLGQ9ZnVuY3Rpb24oZSl7d3QodFtlXSkuc3Vic2NyaWJlKG5ldyBIKG8sKGZ1bmN0aW9uKHQpe3NbZV09dCxjfHxsW2VdfHwobFtlXT0hMCwoYz1sLmV2ZXJ5KFIpKSYmKGw9bnVsbCkpfSksTSkpfSxwPTA7cDxpO3ArKylkKHApO2Uuc3Vic2NyaWJlKG5ldyBIKG8sKGZ1bmN0aW9uKHQpe2lmKGMpe3ZhciBlPXIoW3RdLGEocykpO28ubmV4dChuP24uYXBwbHkodm9pZCAwLHIoW10sYShlKSkpOmUpfX0pKSl9KSl9Ci8qKgogICAgICogQGxpY2Vuc2UgQW5ndWxhciB2MTIuMi4xCiAgICAgKiAoYykgMjAxMC0yMDIxIEdvb2dsZSBMTEMuIGh0dHBzOi8vYW5ndWxhci5pby8KICAgICAqIExpY2Vuc2U6IE1JVAogICAgICovCi8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIFplKHQpe2ZvcihsZXQgZSBpbiB0KWlmKHRbZV09PT1aZSlyZXR1cm4gZTt0aHJvdyBFcnJvcigiQ291bGQgbm90IGZpbmQgcmVuYW1lZCBwcm9wZXJ0eSBvbiB0YXJnZXQgb2JqZWN0LiIpfWZ1bmN0aW9uIFhlKHQsZSl7Zm9yKGNvbnN0IG4gaW4gZSllLmhhc093blByb3BlcnR5KG4pJiYhdC5oYXNPd25Qcm9wZXJ0eShuKSYmKHRbbl09ZVtuXSl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIEtlKHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gdDtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiJbIit0Lm1hcChLZSkuam9pbigiLCAiKSsiXSI7aWYobnVsbD09dClyZXR1cm4iIit0O2lmKHQub3ZlcnJpZGRlbk5hbWUpcmV0dXJuYCR7dC5vdmVycmlkZGVuTmFtZX1gO2lmKHQubmFtZSlyZXR1cm5gJHt0Lm5hbWV9YDtjb25zdCBlPXQudG9TdHJpbmcoKTtpZihudWxsPT1lKXJldHVybiIiK2U7Y29uc3Qgbj1lLmluZGV4T2YoIlxuIik7cmV0dXJuLTE9PT1uP2U6ZS5zdWJzdHJpbmcoMCxuKX1mdW5jdGlvbiBKZSh0LGUpe3JldHVybiBudWxsPT10fHwiIj09PXQ/bnVsbD09PWU/IiI6ZTpudWxsPT1lfHwiIj09PWU/dDp0KyIgIitlfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jb25zdCBRZT1aZSh7X19mb3J3YXJkX3JlZl9fOlplfSk7ZnVuY3Rpb24gJGUodCl7cmV0dXJuIHQuX19mb3J3YXJkX3JlZl9fPSRlLHQudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gS2UodGhpcygpKX0sdH1mdW5jdGlvbiB0bih0KXtyZXR1cm4gZW4odCk/dCgpOnR9ZnVuY3Rpb24gZW4odCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQmJnQuaGFzT3duUHJvcGVydHkoUWUpJiZ0Ll9fZm9yd2FyZF9yZWZfXz09PSRlfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBubiBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIoYW4odCxlKSksdGhpcy5jb2RlPXR9fWNvbnN0IG9uPW5ldyBTZXQoWyIxMDAiLCIyMDAiLCIyMDEiLCIzMDAiLCIzMDEiLCIzMDIiXSk7ZnVuY3Rpb24gYW4odCxlKXtsZXQgbj1gJHt0P2BORzAke3R9OiBgOiIifSR7ZX1gO3JldHVybiBuZ0Rldk1vZGUmJm9uLmhhcyh0KSYmKG49YCR7bn0uIEZpbmQgbW9yZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vZXJyb3JzL05HMCR7dH1gKSxufQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBybih0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQ/dDpudWxsPT10PyIiOlN0cmluZyh0KX1mdW5jdGlvbiBzbih0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdD90Lm5hbWV8fHQudG9TdHJpbmcoKToib2JqZWN0Ij09dHlwZW9mIHQmJm51bGwhPXQmJiJmdW5jdGlvbiI9PXR5cGVvZiB0LnR5cGU/dC50eXBlLm5hbWV8fHQudHlwZS50b1N0cmluZygpOnJuKHQpfWZ1bmN0aW9uIGxuKHQsZSl7Y29uc3Qgbj1lP2AuIERlcGVuZGVuY3kgcGF0aDogJHtlLmpvaW4oIiA+ICIpfSA+ICR7dH1gOiIiO3Rocm93IG5ldyBubigiMjAwIixgQ2lyY3VsYXIgZGVwZW5kZW5jeSBpbiBESSBkZXRlY3RlZCBmb3IgJHt0fSR7bn1gKX1mdW5jdGlvbiBjbigpe3Rocm93IG5ldyBFcnJvcigiQ2Fubm90IG1peCBtdWx0aSBwcm92aWRlcnMgYW5kIHJlZ3VsYXIgcHJvdmlkZXJzIil9ZnVuY3Rpb24gZG4odCxlKXtjb25zdCBuPWU/YCBpbiAke2V9YDoiIjt0aHJvdyBuZXcgbm4oIjIwMSIsYE5vIHByb3ZpZGVyIGZvciAke3NuKHQpfSBmb3VuZCR7bn1gKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gcG4odCxlKXsibnVtYmVyIiE9dHlwZW9mIHQmJk9uKGUsdHlwZW9mIHQsIm51bWJlciIsIj09PSIpfWZ1bmN0aW9uIG1uKHQsZSxuKXtwbih0LCJFeHBlY3RlZCBhIG51bWJlciIpLENuKHQsbiwiRXhwZWN0ZWQgbnVtYmVyIHRvIGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byIpLHZuKHQsZSwiRXhwZWN0ZWQgbnVtYmVyIHRvIGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byIpfWZ1bmN0aW9uIGZuKHQsZSl7InN0cmluZyIhPXR5cGVvZiB0JiZPbihlLG51bGw9PT10PyJudWxsIjp0eXBlb2YgdCwic3RyaW5nIiwiPT09Iil9ZnVuY3Rpb24gdW4odCxlKXsiZnVuY3Rpb24iIT10eXBlb2YgdCYmT24oZSxudWxsPT09dD8ibnVsbCI6dHlwZW9mIHQsImZ1bmN0aW9uIiwiPT09Iil9ZnVuY3Rpb24gZ24odCxlLG4pe3QhPWUmJk9uKG4sdCxlLCI9PSIpfWZ1bmN0aW9uIGhuKHQsZSxuKXt0PT1lJiZPbihuLHQsZSwiIT0iKX1mdW5jdGlvbiBibih0LGUsbil7dCE9PWUmJk9uKG4sdCxlLCI9PT0iKX1mdW5jdGlvbiB5bih0LGUsbil7dD09PWUmJk9uKG4sdCxlLCIhPT0iKX1mdW5jdGlvbiBfbih0LGUsbil7dDxlfHxPbihuLHQsZSwiPCIpfWZ1bmN0aW9uIENuKHQsZSxuKXt0PD1lfHxPbihuLHQsZSwiPD0iKX1mdW5jdGlvbiBNbih0LGUsbil7dD5lfHxPbihuLHQsZSwiPiIpfWZ1bmN0aW9uIHZuKHQsZSxuKXt0Pj1lfHxPbihuLHQsZSwiPj0iKX1mdW5jdGlvbiB4bih0LGUpe251bGw9PXQmJk9uKGUsdCxudWxsLCIhPSIpfWZ1bmN0aW9uIE9uKHQsZSxuLG8pe3Rocm93IG5ldyBFcnJvcihgQVNTRVJUSU9OIEVSUk9SOiAke3R9YCsobnVsbD09bz8iIjpgIFtFeHBlY3RlZD0+ICR7bn0gJHtvfSAke2V9IDw9QWN0dWFsXWApKX1mdW5jdGlvbiBQbih0KXsidW5kZWZpbmVkIiE9dHlwZW9mIE5vZGUmJnQgaW5zdGFuY2VvZiBOb2RlfHwib2JqZWN0Ij09dHlwZW9mIHQmJm51bGwhPXQmJiJXZWJXb3JrZXJSZW5kZXJOb2RlIj09PXQuY29uc3RydWN0b3IubmFtZXx8T24oYFRoZSBwcm92aWRlZCB2YWx1ZSBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIGEgRE9NIE5vZGUgYnV0IGdvdCAke0tlKHQpfWApfWZ1bmN0aW9uIHduKHQsZSl7eG4odCwiQXJyYXkgbXVzdCBiZSBkZWZpbmVkLiIpO2NvbnN0IG49dC5sZW5ndGg7KGU8MHx8ZT49bikmJk9uKGBJbmRleCBleHBlY3RlZCB0byBiZSBsZXNzIHRoYW4gJHtufSBidXQgZ290ICR7ZX1gKX1mdW5jdGlvbiBrbih0LC4uLmUpe2lmKC0xIT09ZS5pbmRleE9mKHQpKXJldHVybiEwO09uKGBFeHBlY3RlZCB2YWx1ZSB0byBiZSBvbmUgb2YgJHtKU09OLnN0cmluZ2lmeShlKX0gYnV0IHdhcyAke0pTT04uc3RyaW5naWZ5KHQpfS5gKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gU24odCl7cmV0dXJue3Rva2VuOnQudG9rZW4scHJvdmlkZWRJbjp0LnByb3ZpZGVkSW58fG51bGwsZmFjdG9yeTp0LmZhY3RvcnksdmFsdWU6dm9pZCAwfX1mdW5jdGlvbiBEbih0KXtyZXR1cm57cHJvdmlkZXJzOnQucHJvdmlkZXJzfHxbXSxpbXBvcnRzOnQuaW1wb3J0c3x8W119fWZ1bmN0aW9uIFJuKHQpe3JldHVybiBFbih0LFRuKXx8RW4odCx6bil9ZnVuY3Rpb24gRW4odCxlKXtyZXR1cm4gdC5oYXNPd25Qcm9wZXJ0eShlKT90W2VdOm51bGx9ZnVuY3Rpb24gQW4odCl7cmV0dXJuIHQmJih0Lmhhc093blByb3BlcnR5KE5uKXx8dC5oYXNPd25Qcm9wZXJ0eShJbikpP3RbTm5dOm51bGx9Y29uc3QgVG49WmUoeyLJtXByb3YiOlplfSksTm49WmUoeyLJtWluaiI6WmV9KSx6bj1aZSh7bmdJbmplY3RhYmxlRGVmOlplfSksSW49WmUoe25nSW5qZWN0b3JEZWY6WmV9KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCnZhciBIbjsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmxldCBGbjtmdW5jdGlvbiBMbih0KXtjb25zdCBlPUZuO3JldHVybiBGbj10LGV9ZnVuY3Rpb24gQm4odCxlLG4pe2NvbnN0IG89Um4odCk7cmV0dXJuIG8mJiJyb290Ij09by5wcm92aWRlZEluP3ZvaWQgMD09PW8udmFsdWU/by52YWx1ZT1vLmZhY3RvcnkoKTpvLnZhbHVlOm4mSG4uT3B0aW9uYWw/bnVsbDp2b2lkIDAhPT1lP2U6dm9pZCBkbihLZSh0KSwiSW5qZWN0b3IiKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmZ1bmN0aW9uIFZuKHQpe3JldHVybnt0b1N0cmluZzp0fS50b1N0cmluZygpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi92YXIgam4sVW4sV247IShmdW5jdGlvbih0KXt0W3QuRGVmYXVsdD0wXT0iRGVmYXVsdCIsdFt0Lkhvc3Q9MV09Ikhvc3QiLHRbdC5TZWxmPTJdPSJTZWxmIix0W3QuU2tpcFNlbGY9NF09IlNraXBTZWxmIix0W3QuT3B0aW9uYWw9OF09Ik9wdGlvbmFsIn0pKEhufHwoSG49e30pKSwoZnVuY3Rpb24odCl7dFt0Lk9uUHVzaD0wXT0iT25QdXNoIix0W3QuRGVmYXVsdD0xXT0iRGVmYXVsdCJ9KShqbnx8KGpuPXt9KSksKGZ1bmN0aW9uKHQpe3RbdC5DaGVja09uY2U9MF09IkNoZWNrT25jZSIsdFt0LkNoZWNrZWQ9MV09IkNoZWNrZWQiLHRbdC5DaGVja0Fsd2F5cz0yXT0iQ2hlY2tBbHdheXMiLHRbdC5EZXRhY2hlZD0zXT0iRGV0YWNoZWQiLHRbdC5FcnJvcmVkPTRdPSJFcnJvcmVkIix0W3QuRGVzdHJveWVkPTVdPSJEZXN0cm95ZWQifSkoVW58fChVbj17fSkpLChmdW5jdGlvbih0KXt0W3QuRW11bGF0ZWQ9MF09IkVtdWxhdGVkIix0W3QuTm9uZT0yXT0iTm9uZSIsdFt0LlNoYWRvd0RvbT0zXT0iU2hhZG93RG9tIn0pKFdufHwoV249e30pKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IEduPSJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsVGhpcyYmZ2xvYmFsVGhpcyxZbj0idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmd2luZG93LHFuPSJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZiYmInVuZGVmaW5lZCIhPXR5cGVvZiBXb3JrZXJHbG9iYWxTY29wZSYmc2VsZiBpbnN0YW5jZW9mIFdvcmtlckdsb2JhbFNjb3BlJiZzZWxmLFpuPSJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsJiZnbG9iYWwsWG49R258fFpufHxZbnx8cW47ZnVuY3Rpb24gS24oKXtyZXR1cm4hKCJ1bmRlZmluZWQiIT10eXBlb2YgbmdEZXZNb2RlJiYhbmdEZXZNb2RlKSYmKCJvYmplY3QiIT10eXBlb2YgbmdEZXZNb2RlJiYoCi8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpmdW5jdGlvbiB0KCl7Y29uc3QgdD0idW5kZWZpbmVkIiE9dHlwZW9mIGxvY2F0aW9uP2xvY2F0aW9uLnRvU3RyaW5nKCk6IiIsZT17bmFtZWRDb25zdHJ1Y3RvcnM6LTEhPXQuaW5kZXhPZigibmdEZXZNb2RlPW5hbWVkQ29uc3RydWN0b3JzIiksZmlyc3RDcmVhdGVQYXNzOjAsdE5vZGU6MCx0VmlldzowLHJlbmRlcmVyQ3JlYXRlVGV4dE5vZGU6MCxyZW5kZXJlclNldFRleHQ6MCxyZW5kZXJlckNyZWF0ZUVsZW1lbnQ6MCxyZW5kZXJlckFkZEV2ZW50TGlzdGVuZXI6MCxyZW5kZXJlclNldEF0dHJpYnV0ZTowLHJlbmRlcmVyUmVtb3ZlQXR0cmlidXRlOjAscmVuZGVyZXJTZXRQcm9wZXJ0eTowLHJlbmRlcmVyU2V0Q2xhc3NOYW1lOjAscmVuZGVyZXJBZGRDbGFzczowLHJlbmRlcmVyUmVtb3ZlQ2xhc3M6MCxyZW5kZXJlclNldFN0eWxlOjAscmVuZGVyZXJSZW1vdmVTdHlsZTowLHJlbmRlcmVyRGVzdHJveTowLHJlbmRlcmVyRGVzdHJveU5vZGU6MCxyZW5kZXJlck1vdmVOb2RlOjAscmVuZGVyZXJSZW1vdmVOb2RlOjAscmVuZGVyZXJBcHBlbmRDaGlsZDowLHJlbmRlcmVySW5zZXJ0QmVmb3JlOjAscmVuZGVyZXJDcmVhdGVDb21tZW50OjB9LG49LTE9PT10LmluZGV4T2YoIm5nRGV2TW9kZT1mYWxzZSIpO3JldHVybiBYbi5uZ0Rldk1vZGU9biYmZSxlfSkoKSwidW5kZWZpbmVkIiE9dHlwZW9mIG5nRGV2TW9kZSYmISFuZ0Rldk1vZGUpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jb25zdCBKbj17fSxRbj1bXTsoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJktuKCkmJihPYmplY3QuZnJlZXplKEpuKSxPYmplY3QuZnJlZXplKFFuKSkKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovO2NvbnN0ICRuPVplKHsiybVjbXAiOlplfSksdG89WmUoeyLJtWRpciI6WmV9KSxlbz1aZSh7Ism1cGlwZSI6WmV9KSxubz1aZSh7Ism1bW9kIjpaZX0pLG9vPVplKHsiybVsb2MiOlplfSksaW89WmUoeyLJtWZhYyI6WmV9KSxhbz1aZSh7X19OR19FTEVNRU5UX0lEX186WmV9KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmxldCBybz0wO2Z1bmN0aW9uIHNvKHQpe3JldHVybiBWbigoKCk9PnsoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJktuKCk7Y29uc3QgZT17fSxuPXt0eXBlOnQudHlwZSxwcm92aWRlcnNSZXNvbHZlcjpudWxsLGRlY2xzOnQuZGVjbHMsdmFyczp0LnZhcnMsZmFjdG9yeTpudWxsLHRlbXBsYXRlOnQudGVtcGxhdGV8fG51bGwsY29uc3RzOnQuY29uc3RzfHxudWxsLG5nQ29udGVudFNlbGVjdG9yczp0Lm5nQ29udGVudFNlbGVjdG9ycyxob3N0QmluZGluZ3M6dC5ob3N0QmluZGluZ3N8fG51bGwsaG9zdFZhcnM6dC5ob3N0VmFyc3x8MCxob3N0QXR0cnM6dC5ob3N0QXR0cnN8fG51bGwsY29udGVudFF1ZXJpZXM6dC5jb250ZW50UXVlcmllc3x8bnVsbCxkZWNsYXJlZElucHV0czplLGlucHV0czpudWxsLG91dHB1dHM6bnVsbCxleHBvcnRBczp0LmV4cG9ydEFzfHxudWxsLG9uUHVzaDp0LmNoYW5nZURldGVjdGlvbj09PWpuLk9uUHVzaCxkaXJlY3RpdmVEZWZzOm51bGwscGlwZURlZnM6bnVsbCxzZWxlY3RvcnM6dC5zZWxlY3RvcnN8fFFuLHZpZXdRdWVyeTp0LnZpZXdRdWVyeXx8bnVsbCxmZWF0dXJlczp0LmZlYXR1cmVzfHxudWxsLGRhdGE6dC5kYXRhfHx7fSxlbmNhcHN1bGF0aW9uOnQuZW5jYXBzdWxhdGlvbnx8V24uRW11bGF0ZWQsaWQ6ImMiLHN0eWxlczp0LnN0eWxlc3x8UW4sXzpudWxsLHNldElucHV0Om51bGwsc2NoZW1hczp0LnNjaGVtYXN8fG51bGwsdFZpZXc6bnVsbH0sbz10LmRpcmVjdGl2ZXMsaT10LmZlYXR1cmVzLGE9dC5waXBlcztyZXR1cm4gbi5pZCs9cm8rKyxuLmlucHV0cz1nbyh0LmlucHV0cyxlKSxuLm91dHB1dHM9Z28odC5vdXRwdXRzKSxpJiZpLmZvckVhY2goKHQ9PnQobikpKSxuLmRpcmVjdGl2ZURlZnM9bz8oKT0+KCJmdW5jdGlvbiI9PXR5cGVvZiBvP28oKTpvKS5tYXAoY28pOm51bGwsbi5waXBlRGVmcz1hPygpPT4oImZ1bmN0aW9uIj09dHlwZW9mIGE/YSgpOmEpLm1hcChwbyk6bnVsbCxufSkpfWZ1bmN0aW9uIGxvKHQsZSxuKXtjb25zdCBvPXQuybVjbXA7by5kaXJlY3RpdmVEZWZzPSgpPT5lLm1hcChjbyksby5waXBlRGVmcz0oKT0+bi5tYXAocG8pfWZ1bmN0aW9uIGNvKHQpe2NvbnN0IGU9eW8odCl8fF9vKHQpO2lmKG5nRGV2TW9kZSYmIWUpdGhyb3cgbmV3IEVycm9yKGAnJHt0Lm5hbWV9JyBpcyBuZWl0aGVyICdDb21wb25lbnRUeXBlJyBvciAnRGlyZWN0aXZlVHlwZScuYCk7cmV0dXJuIGV9ZnVuY3Rpb24gcG8odCl7Y29uc3QgZT1Dbyh0KTtpZihuZ0Rldk1vZGUmJiFlKXRocm93IG5ldyBFcnJvcihgJyR7dC5uYW1lfScgaXMgbm90IGEgJ1BpcGVUeXBlJy5gKTtyZXR1cm4gZX1jb25zdCBtbz17fTtmdW5jdGlvbiBmbyh0KXtyZXR1cm4gVm4oKCgpPT57Y29uc3QgZT17dHlwZTp0LnR5cGUsYm9vdHN0cmFwOnQuYm9vdHN0cmFwfHxRbixkZWNsYXJhdGlvbnM6dC5kZWNsYXJhdGlvbnN8fFFuLGltcG9ydHM6dC5pbXBvcnRzfHxRbixleHBvcnRzOnQuZXhwb3J0c3x8UW4sdHJhbnNpdGl2ZUNvbXBpbGVTY29wZXM6bnVsbCxzY2hlbWFzOnQuc2NoZW1hc3x8bnVsbCxpZDp0LmlkfHxudWxsfTtyZXR1cm4gbnVsbCE9dC5pZCYmKG1vW3QuaWRdPXQudHlwZSksZX0pKX1mdW5jdGlvbiB1byh0LGUpe3JldHVybiBWbigoKCk9Pntjb25zdCBuPU1vKHQsITApO24uZGVjbGFyYXRpb25zPWUuZGVjbGFyYXRpb25zfHxRbixuLmltcG9ydHM9ZS5pbXBvcnRzfHxRbixuLmV4cG9ydHM9ZS5leHBvcnRzfHxRbn0pKX1mdW5jdGlvbiBnbyh0LGUpe2lmKG51bGw9PXQpcmV0dXJuIEpuO2NvbnN0IG49e307Zm9yKGNvbnN0IG8gaW4gdClpZih0Lmhhc093blByb3BlcnR5KG8pKXtsZXQgaT10W29dLGE9aTtBcnJheS5pc0FycmF5KGkpJiYoYT1pWzFdLGk9aVswXSksbltpXT1vLGUmJihlW2ldPWEpfXJldHVybiBufWNvbnN0IGhvPXNvO2Z1bmN0aW9uIGJvKHQpe3JldHVybnt0eXBlOnQudHlwZSxuYW1lOnQubmFtZSxmYWN0b3J5Om51bGwscHVyZTohMSE9PXQucHVyZSxvbkRlc3Ryb3k6dC50eXBlLnByb3RvdHlwZS5uZ09uRGVzdHJveXx8bnVsbH19ZnVuY3Rpb24geW8odCl7cmV0dXJuIHRbJG5dfHxudWxsfWZ1bmN0aW9uIF9vKHQpe3JldHVybiB0W3RvXXx8bnVsbH1mdW5jdGlvbiBDbyh0KXtyZXR1cm4gdFtlb118fG51bGx9ZnVuY3Rpb24gTW8odCxlKXtjb25zdCBuPXRbbm9dfHxudWxsO2lmKCFuJiYhMD09PWUpdGhyb3cgbmV3IEVycm9yKGBUeXBlICR7S2UodCl9IGRvZXMgbm90IGhhdmUgJ8m1bW9kJyBwcm9wZXJ0eS5gKTtyZXR1cm4gbn0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IHZvPTIwLHhvPVsiUm9vdCIsIkNvbXBvbmVudCIsIkVtYmVkZGVkIl0sT289MTA7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpmdW5jdGlvbiBQbyh0KXtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KSYmIm9iamVjdCI9PXR5cGVvZiB0WzFdfWZ1bmN0aW9uIHdvKHQpe3JldHVybiBBcnJheS5pc0FycmF5KHQpJiYhMD09PXRbMV19ZnVuY3Rpb24ga28odCl7cmV0dXJuIDAhPSg4JnQuZmxhZ3MpfWZ1bmN0aW9uIFNvKHQpe3JldHVybiAyPT0oMiZ0LmZsYWdzKX1mdW5jdGlvbiBEbyh0KXtyZXR1cm4gMT09KDEmdC5mbGFncyl9ZnVuY3Rpb24gUm8odCl7cmV0dXJuIG51bGwhPT10LnRlbXBsYXRlfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KZnVuY3Rpb24gRW8odCxlKXtBbyh0LGVbMV0pfWZ1bmN0aW9uIEFvKHQsZSl7VG8odCksdC5oYXNPd25Qcm9wZXJ0eSgidFZpZXdfIikmJmduKHQudFZpZXdfLGUsIlRoaXMgVE5vZGUgZG9lcyBub3QgYmVsb25nIHRvIHRoaXMgVFZpZXcuIil9ZnVuY3Rpb24gVG8odCl7eG4odCwiVE5vZGUgbXVzdCBiZSBkZWZpbmVkIiksdCYmIm9iamVjdCI9PXR5cGVvZiB0JiZ0Lmhhc093blByb3BlcnR5KCJkaXJlY3RpdmVTdHlsaW5nTGFzdCIpfHxPbigiTm90IG9mIHR5cGUgVE5vZGUsIGdvdDogIit0KX1mdW5jdGlvbiBObyh0KXt4bih0LCJFeHBlY3RlZCBUSWN1IHRvIGJlIGRlZmluZWQiKSwibnVtYmVyIiE9dHlwZW9mIHQuY3VycmVudENhc2VMVmlld0luZGV4JiZPbigiT2JqZWN0IGlzIG5vdCBvZiBUSWN1IHR5cGUuIil9ZnVuY3Rpb24gem8odCl7eG4odCwiY3VycmVudFROb2RlIHNob3VsZCBleGlzdCEiKSx4bih0LnBhcmVudCwiY3VycmVudFROb2RlIHNob3VsZCBoYXZlIGEgcGFyZW50Iil9ZnVuY3Rpb24gSW8odCl7eG4odCwiTENvbnRhaW5lciBtdXN0IGJlIGRlZmluZWQiKSxnbih3byh0KSwhMCwiRXhwZWN0aW5nIExDb250YWluZXIiKX1mdW5jdGlvbiBIbyh0KXt0JiZnbihQbyh0KSwhMCwiRXhwZWN0aW5nIExWaWV3IG9yIHVuZGVmaW5lZCBvciBudWxsIil9ZnVuY3Rpb24gRm8odCl7eG4odCwiTFZpZXcgbXVzdCBiZSBkZWZpbmVkIiksZ24oUG8odCksITAsIkV4cGVjdGluZyBMVmlldyIpfWZ1bmN0aW9uIExvKHQsZSl7Z24odC5maXJzdENyZWF0ZVBhc3MsITAsZXx8IlNob3VsZCBvbmx5IGJlIGNhbGxlZCBpbiBmaXJzdCBjcmVhdGUgcGFzcy4iKX1mdW5jdGlvbiBCbyh0LGUpe2duKHQuZmlyc3RVcGRhdGVQYXNzLCEwLGV8fCJTaG91bGQgb25seSBiZSBjYWxsZWQgaW4gZmlyc3QgdXBkYXRlIHBhc3MuIil9ZnVuY3Rpb24gVm8odCxlKXtqbyh0WzFdLmV4cGFuZG9TdGFydEluZGV4LHQubGVuZ3RoLGUpfWZ1bmN0aW9uIGpvKHQsZSxuKXt0PD1uJiZuPGV8fE9uKGBJbmRleCBvdXQgb2YgcmFuZ2UgKGV4cGVjdGluZyAke3R9IDw9ICR7bn0gPCAke2V9KWApfWZ1bmN0aW9uIFVvKHQsZSl7eG4odCxlfHwiQ29tcG9uZW50IHZpZXdzIHNob3VsZCBhbHdheXMgaGF2ZSBhIHBhcmVudCB2aWV3IChjb21wb25lbnQncyBob3N0IHZpZXcpIil9ZnVuY3Rpb24gV28odCxlKXtWbyh0LGUpLFZvKHQsZSs4KSxwbih0W2UrMF0sImluamVjdG9ySW5kZXggc2hvdWxkIHBvaW50IHRvIGEgYmxvb20gZmlsdGVyIikscG4odFtlKzFdLCJpbmplY3RvckluZGV4IHNob3VsZCBwb2ludCB0byBhIGJsb29tIGZpbHRlciIpLHBuKHRbZSsyXSwiaW5qZWN0b3JJbmRleCBzaG91bGQgcG9pbnQgdG8gYSBibG9vbSBmaWx0ZXIiKSxwbih0W2UrM10sImluamVjdG9ySW5kZXggc2hvdWxkIHBvaW50IHRvIGEgYmxvb20gZmlsdGVyIikscG4odFtlKzRdLCJpbmplY3RvckluZGV4IHNob3VsZCBwb2ludCB0byBhIGJsb29tIGZpbHRlciIpLHBuKHRbZSs1XSwiaW5qZWN0b3JJbmRleCBzaG91bGQgcG9pbnQgdG8gYSBibG9vbSBmaWx0ZXIiKSxwbih0W2UrNl0sImluamVjdG9ySW5kZXggc2hvdWxkIHBvaW50IHRvIGEgYmxvb20gZmlsdGVyIikscG4odFtlKzddLCJpbmplY3RvckluZGV4IHNob3VsZCBwb2ludCB0byBhIGJsb29tIGZpbHRlciIpLHBuKHRbZSs4XSwiaW5qZWN0b3JJbmRleCBzaG91bGQgcG9pbnQgdG8gcGFyZW50IGluamVjdG9yIil9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIEdvKHQsZSl7Y29uc3Qgbj10Lmhhc093blByb3BlcnR5KGlvKTtpZighbiYmITA9PT1lJiZuZ0Rldk1vZGUpdGhyb3cgbmV3IEVycm9yKGBUeXBlICR7S2UodCl9IGRvZXMgbm90IGhhdmUgJ8m1ZmFjJyBwcm9wZXJ0eS5gKTtyZXR1cm4gbj90W2lvXTpudWxsfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBZb3tjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5wcmV2aW91c1ZhbHVlPXQsdGhpcy5jdXJyZW50VmFsdWU9ZSx0aGlzLmZpcnN0Q2hhbmdlPW59aXNGaXJzdENoYW5nZSgpe3JldHVybiB0aGlzLmZpcnN0Q2hhbmdlfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gcW8oKXtyZXR1cm4gWm99ZnVuY3Rpb24gWm8odCl7cmV0dXJuIHQudHlwZS5wcm90b3R5cGUubmdPbkNoYW5nZXMmJih0LnNldElucHV0PUtvKSxYb31mdW5jdGlvbiBYbygpe2NvbnN0IHQ9Sm8odGhpcyksZT1udWxsPT10P3ZvaWQgMDp0LmN1cnJlbnQ7aWYoZSl7Y29uc3Qgbj10LnByZXZpb3VzO2lmKG49PT1Kbil0LnByZXZpb3VzPWU7ZWxzZSBmb3IobGV0IHQgaW4gZSluW3RdPWVbdF07dC5jdXJyZW50PW51bGwsdGhpcy5uZ09uQ2hhbmdlcyhlKX19ZnVuY3Rpb24gS28odCxlLG4sbyl7Y29uc3QgaT1Kbyh0KXx8KGZ1bmN0aW9uIGEodCxlKXtyZXR1cm4gdC5fX25nU2ltcGxlQ2hhbmdlc19fPWV9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLykodCx7cHJldmlvdXM6Sm4sY3VycmVudDpudWxsfSkscj1pLmN1cnJlbnR8fChpLmN1cnJlbnQ9e30pLHM9aS5wcmV2aW91cyxsPXRoaXMuZGVjbGFyZWRJbnB1dHNbbl0sYz1zW2xdO3JbbF09bmV3IFlvKGMmJmMuY3VycmVudFZhbHVlLGUscz09PUpuKSx0W29dPWV9cW8ubmdJbmhlcml0PSEwO2Z1bmN0aW9uIEpvKHQpe3JldHVybiB0Ll9fbmdTaW1wbGVDaGFuZ2VzX198fG51bGx9bGV0IFFvPW51bGw7Y29uc3QgJG89dD0+e1FvPXR9LHRpPWZ1bmN0aW9uKHQsZSxuKXtudWxsIT1RbyYmUW8odCxlLG4pfSxlaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLG5pPSJodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGhNTC8iOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KbGV0IG9pO2Z1bmN0aW9uIGlpKCl7cmV0dXJuIHZvaWQgMCE9PW9pP29pOiJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQ/ZG9jdW1lbnQ6dm9pZCAwfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi92YXIgYWk7ZnVuY3Rpb24gcmkodCl7cmV0dXJuISF0Lmxpc3Rlbn0hKGZ1bmN0aW9uKHQpe3RbdC5JbXBvcnRhbnQ9MV09IkltcG9ydGFudCIsdFt0LkRhc2hDYXNlPTJdPSJEYXNoQ2FzZSJ9KShhaXx8KGFpPXt9KSk7Y29uc3Qgc2k9e2NyZWF0ZVJlbmRlcmVyOih0LGUpPT5paSgpfTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmZ1bmN0aW9uIGxpKHQpe2Zvcig7QXJyYXkuaXNBcnJheSh0KTspdD10WzBdO3JldHVybiB0fWZ1bmN0aW9uIGNpKHQsZSl7cmV0dXJuIG5nRGV2TW9kZSYmd24oZSx0KSxuZ0Rldk1vZGUmJnZuKHQsdm8sIkV4cGVjdGVkIHRvIGJlIHBhc3QgSEVBREVSX09GRlNFVCIpLGxpKGVbdF0pfWZ1bmN0aW9uIGRpKHQsZSl7bmdEZXZNb2RlJiZFbyh0LGUpLG5nRGV2TW9kZSYmd24oZSx0LmluZGV4KTtjb25zdCBuPWxpKGVbdC5pbmRleF0pO3JldHVybiBuZ0Rldk1vZGUmJiFyaShlWzExXSkmJlBuKG4pLG59ZnVuY3Rpb24gcGkodCxlKXtuZ0Rldk1vZGUmJk1uKGUsLTEsIndyb25nIGluZGV4IGZvciBUTm9kZSIpLG5nRGV2TW9kZSYmX24oZSx0LmRhdGEubGVuZ3RoLCJ3cm9uZyBpbmRleCBmb3IgVE5vZGUiKTtjb25zdCBuPXQuZGF0YVtlXTtyZXR1cm4gbmdEZXZNb2RlJiZudWxsIT09biYmVG8obiksbn1mdW5jdGlvbiBtaSh0LGUpe3JldHVybiBuZ0Rldk1vZGUmJnduKHQsZSksdFtlXX1mdW5jdGlvbiBmaSh0LGUpe25nRGV2TW9kZSYmd24oZSx0KTtjb25zdCBuPWVbdF07cmV0dXJuIFBvKG4pP246blswXX1mdW5jdGlvbiB1aSh0KXtyZXR1cm4gND09KDQmdFsyXSl9ZnVuY3Rpb24gZ2kodCl7cmV0dXJuIDEyOD09KDEyOCZ0WzJdKX1mdW5jdGlvbiBoaSh0LGUpe3JldHVybiBudWxsPT1lP251bGw6KG5nRGV2TW9kZSYmd24odCxlKSx0W2VdKX1mdW5jdGlvbiBiaSh0KXt0WzE4XT0wfWZ1bmN0aW9uIHlpKHQsZSl7dFs1XSs9ZTtsZXQgbj10LG89dFszXTtmb3IoO251bGwhPT1vJiYoMT09PWUmJjE9PT1uWzVdfHwtMT09PWUmJjA9PT1uWzVdKTspb1s1XSs9ZSxuPW8sbz1vWzNdfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jb25zdCBfaT17bEZyYW1lOlhpKG51bGwpLGJpbmRpbmdzRW5hYmxlZDohMCxpc0luQ2hlY2tOb0NoYW5nZXNNb2RlOiExfTtmdW5jdGlvbiBDaSgpe3JldHVybiBfaS5iaW5kaW5nc0VuYWJsZWR9ZnVuY3Rpb24gTWkoKXtfaS5iaW5kaW5nc0VuYWJsZWQ9ITB9ZnVuY3Rpb24gdmkoKXtfaS5iaW5kaW5nc0VuYWJsZWQ9ITF9ZnVuY3Rpb24geGkoKXtyZXR1cm4gX2kubEZyYW1lLmxWaWV3fWZ1bmN0aW9uIE9pKCl7cmV0dXJuIF9pLmxGcmFtZS50Vmlld31mdW5jdGlvbiBQaSh0KXtyZXR1cm4gX2kubEZyYW1lLmNvbnRleHRMVmlldz10LHRbOF19ZnVuY3Rpb24gd2koKXtsZXQgdD1raSgpO2Zvcig7bnVsbCE9PXQmJjY0PT09dC50eXBlOyl0PXQucGFyZW50O3JldHVybiB0fWZ1bmN0aW9uIGtpKCl7cmV0dXJuIF9pLmxGcmFtZS5jdXJyZW50VE5vZGV9ZnVuY3Rpb24gU2koKXtjb25zdCB0PV9pLmxGcmFtZSxlPXQuY3VycmVudFROb2RlO3JldHVybiB0LmlzUGFyZW50P2U6ZS5wYXJlbnR9ZnVuY3Rpb24gRGkodCxlKXtuZ0Rldk1vZGUmJnQmJkFvKHQsX2kubEZyYW1lLnRWaWV3KTtjb25zdCBuPV9pLmxGcmFtZTtuLmN1cnJlbnRUTm9kZT10LG4uaXNQYXJlbnQ9ZX1mdW5jdGlvbiBSaSgpe3JldHVybiBfaS5sRnJhbWUuaXNQYXJlbnR9ZnVuY3Rpb24gRWkoKXtfaS5sRnJhbWUuaXNQYXJlbnQ9ITF9ZnVuY3Rpb24gQWkoKXtyZXR1cm4gX2kuaXNJbkNoZWNrTm9DaGFuZ2VzTW9kZX1mdW5jdGlvbiBUaSh0KXtfaS5pc0luQ2hlY2tOb0NoYW5nZXNNb2RlPXR9ZnVuY3Rpb24gTmkoKXtjb25zdCB0PV9pLmxGcmFtZTtsZXQgZT10LmJpbmRpbmdSb290SW5kZXg7cmV0dXJuLTE9PT1lJiYoZT10LmJpbmRpbmdSb290SW5kZXg9dC50Vmlldy5iaW5kaW5nU3RhcnRJbmRleCksZX1mdW5jdGlvbiB6aSgpe3JldHVybiBfaS5sRnJhbWUuYmluZGluZ0luZGV4fWZ1bmN0aW9uIElpKHQpe3JldHVybiBfaS5sRnJhbWUuYmluZGluZ0luZGV4PXR9ZnVuY3Rpb24gSGkoKXtyZXR1cm4gX2kubEZyYW1lLmJpbmRpbmdJbmRleCsrfWZ1bmN0aW9uIEZpKHQpe2NvbnN0IGU9X2kubEZyYW1lLG49ZS5iaW5kaW5nSW5kZXg7cmV0dXJuIGUuYmluZGluZ0luZGV4PWUuYmluZGluZ0luZGV4K3Qsbn1mdW5jdGlvbiBMaSh0KXtfaS5sRnJhbWUuaW5JMThuPXR9ZnVuY3Rpb24gQmkodCxlKXtjb25zdCBuPV9pLmxGcmFtZTtuLmJpbmRpbmdJbmRleD1uLmJpbmRpbmdSb290SW5kZXg9dCxWaShlKX1mdW5jdGlvbiBWaSh0KXtfaS5sRnJhbWUuY3VycmVudERpcmVjdGl2ZUluZGV4PXR9ZnVuY3Rpb24gamkodCl7Y29uc3QgZT1faS5sRnJhbWUuY3VycmVudERpcmVjdGl2ZUluZGV4O3JldHVybi0xPT09ZT9udWxsOnRbZV19ZnVuY3Rpb24gVWkoKXtyZXR1cm4gX2kubEZyYW1lLmN1cnJlbnRRdWVyeUluZGV4fWZ1bmN0aW9uIFdpKHQpe19pLmxGcmFtZS5jdXJyZW50UXVlcnlJbmRleD10fWZ1bmN0aW9uIEdpKHQpe2NvbnN0IGU9dFsxXTtyZXR1cm4gMj09PWUudHlwZT8obmdEZXZNb2RlJiZ4bihlLmRlY2xUTm9kZSwiRW1iZWRkZWQgVE5vZGVzIHNob3VsZCBoYXZlIGRlY2xhcmF0aW9uIHBhcmVudHMuIiksZS5kZWNsVE5vZGUpOjE9PT1lLnR5cGU/dFs2XTpudWxsfWZ1bmN0aW9uIFlpKHQsZSxuKXtpZihuZ0Rldk1vZGUmJkhvKHQpLG4mSG4uU2tpcFNlbGYpe25nRGV2TW9kZSYmQW8oZSx0WzFdKTtsZXQgbz1lLGk9dDtmb3IoOyEobmdEZXZNb2RlJiZ4bihvLCJQYXJlbnQgVE5vZGUgc2hvdWxkIGJlIGRlZmluZWQiKSxvPW8ucGFyZW50LG51bGwhPT1vfHxuJkhuLkhvc3R8fChvPUdpKGkpLG51bGw9PT1vKXx8KG5nRGV2TW9kZSYmeG4oaSwiUGFyZW50IExWaWV3IHNob3VsZCBiZSBkZWZpbmVkIiksaT1pWzE1XSwxMCZvLnR5cGUpKTspO2lmKG51bGw9PT1vKXJldHVybiExO2U9byx0PWl9bmdEZXZNb2RlJiZFbyhlLHQpO2NvbnN0IG89X2kubEZyYW1lPVppKCk7cmV0dXJuIG8uY3VycmVudFROb2RlPWUsby5sVmlldz10LCEwfWZ1bmN0aW9uIHFpKHQpe25nRGV2TW9kZSYmaG4odFswXSx0WzFdLCI/Pz8/IiksbmdEZXZNb2RlJiZIbyh0KTtjb25zdCBlPVppKCk7bmdEZXZNb2RlJiYoZ24oZS5pc1BhcmVudCwhMCwiRXhwZWN0ZWQgY2xlYW4gTEZyYW1lIiksZ24oZS5sVmlldyxudWxsLCJFeHBlY3RlZCBjbGVhbiBMRnJhbWUiKSxnbihlLnRWaWV3LG51bGwsIkV4cGVjdGVkIGNsZWFuIExGcmFtZSIpLGduKGUuc2VsZWN0ZWRJbmRleCwtMSwiRXhwZWN0ZWQgY2xlYW4gTEZyYW1lIiksZ24oZS5lbGVtZW50RGVwdGhDb3VudCwwLCJFeHBlY3RlZCBjbGVhbiBMRnJhbWUiKSxnbihlLmN1cnJlbnREaXJlY3RpdmVJbmRleCwtMSwiRXhwZWN0ZWQgY2xlYW4gTEZyYW1lIiksZ24oZS5jdXJyZW50TmFtZXNwYWNlLG51bGwsIkV4cGVjdGVkIGNsZWFuIExGcmFtZSIpLGduKGUuYmluZGluZ1Jvb3RJbmRleCwtMSwiRXhwZWN0ZWQgY2xlYW4gTEZyYW1lIiksZ24oZS5jdXJyZW50UXVlcnlJbmRleCwwLCJFeHBlY3RlZCBjbGVhbiBMRnJhbWUiKSk7Y29uc3Qgbj10WzFdO19pLmxGcmFtZT1lLG5nRGV2TW9kZSYmbi5maXJzdENoaWxkJiZBbyhuLmZpcnN0Q2hpbGQsbiksZS5jdXJyZW50VE5vZGU9bi5maXJzdENoaWxkLGUubFZpZXc9dCxlLnRWaWV3PW4sZS5jb250ZXh0TFZpZXc9dCxlLmJpbmRpbmdJbmRleD1uLmJpbmRpbmdTdGFydEluZGV4LGUuaW5JMThuPSExfWZ1bmN0aW9uIFppKCl7Y29uc3QgdD1faS5sRnJhbWUsZT1udWxsPT09dD9udWxsOnQuY2hpbGQ7cmV0dXJuIG51bGw9PT1lP1hpKHQpOmV9ZnVuY3Rpb24gWGkodCl7Y29uc3QgZT17Y3VycmVudFROb2RlOm51bGwsaXNQYXJlbnQ6ITAsbFZpZXc6bnVsbCx0VmlldzpudWxsLHNlbGVjdGVkSW5kZXg6LTEsY29udGV4dExWaWV3Om51bGwsZWxlbWVudERlcHRoQ291bnQ6MCxjdXJyZW50TmFtZXNwYWNlOm51bGwsY3VycmVudERpcmVjdGl2ZUluZGV4Oi0xLGJpbmRpbmdSb290SW5kZXg6LTEsYmluZGluZ0luZGV4Oi0xLGN1cnJlbnRRdWVyeUluZGV4OjAscGFyZW50OnQsY2hpbGQ6bnVsbCxpbkkxOG46ITF9O3JldHVybiBudWxsIT09dCYmKHQuY2hpbGQ9ZSksZX1mdW5jdGlvbiBLaSgpe2NvbnN0IHQ9X2kubEZyYW1lO3JldHVybiBfaS5sRnJhbWU9dC5wYXJlbnQsdC5jdXJyZW50VE5vZGU9bnVsbCx0LmxWaWV3PW51bGwsdH1jb25zdCBKaT1LaTtmdW5jdGlvbiBRaSgpe2NvbnN0IHQ9S2koKTt0LmlzUGFyZW50PSEwLHQudFZpZXc9bnVsbCx0LnNlbGVjdGVkSW5kZXg9LTEsdC5jb250ZXh0TFZpZXc9bnVsbCx0LmVsZW1lbnREZXB0aENvdW50PTAsdC5jdXJyZW50RGlyZWN0aXZlSW5kZXg9LTEsdC5jdXJyZW50TmFtZXNwYWNlPW51bGwsdC5iaW5kaW5nUm9vdEluZGV4PS0xLHQuYmluZGluZ0luZGV4PS0xLHQuY3VycmVudFF1ZXJ5SW5kZXg9MH1mdW5jdGlvbiAkaSh0KXtyZXR1cm4oX2kubEZyYW1lLmNvbnRleHRMVmlldz0oZnVuY3Rpb24gZSh0LG4pe2Zvcig7dD4wOyluZ0Rldk1vZGUmJnhuKG5bMTVdLCJEZWNsYXJhdGlvbiB2aWV3IHNob3VsZCBiZSBkZWZpbmVkIGlmIG5lc3RpbmcgbGV2ZWwgaXMgZ3JlYXRlciB0aGFuIDAuIiksbj1uWzE1XSx0LS07cmV0dXJuIG59KSh0LF9pLmxGcmFtZS5jb250ZXh0TFZpZXcpKVs4XX1mdW5jdGlvbiB0YSgpe3JldHVybiBfaS5sRnJhbWUuc2VsZWN0ZWRJbmRleH1mdW5jdGlvbiBlYSh0KXtuZ0Rldk1vZGUmJi0xIT09dCYmdm4odCx2bywiSW5kZXggbXVzdCBiZSBwYXN0IEhFQURFUl9PRkZTRVQgKG9yIC0xKS4iKSxuZ0Rldk1vZGUmJl9uKHQsX2kubEZyYW1lLmxWaWV3Lmxlbmd0aCwiQ2FuJ3Qgc2V0IGluZGV4IHBhc3NlZCBlbmQgb2YgTFZpZXciKSxfaS5sRnJhbWUuc2VsZWN0ZWRJbmRleD10fWZ1bmN0aW9uIG5hKCl7Y29uc3QgdD1faS5sRnJhbWU7cmV0dXJuIHBpKHQudFZpZXcsdC5zZWxlY3RlZEluZGV4KX1mdW5jdGlvbiBvYSgpe19pLmxGcmFtZS5jdXJyZW50TmFtZXNwYWNlPWVpfWZ1bmN0aW9uIGlhKCl7X2kubEZyYW1lLmN1cnJlbnROYW1lc3BhY2U9bml9ZnVuY3Rpb24gYWEoKXshKGZ1bmN0aW9uIHQoKXtfaS5sRnJhbWUuY3VycmVudE5hbWVzcGFjZT1udWxsfSkoKX1mdW5jdGlvbiByYSh0LGUpe25nRGV2TW9kZSYmTG8odCk7Zm9yKGxldCBuPWUuZGlyZWN0aXZlU3RhcnQsbz1lLmRpcmVjdGl2ZUVuZDtuPG87bisrKXtjb25zdCBlPXQuZGF0YVtuXTtuZ0Rldk1vZGUmJnhuKGUsIkV4cGVjdGluZyBEaXJlY3RpdmVEZWYiKTtjb25zdCBvPWUudHlwZS5wcm90b3R5cGUse25nQWZ0ZXJDb250ZW50SW5pdDppLG5nQWZ0ZXJDb250ZW50Q2hlY2tlZDphLG5nQWZ0ZXJWaWV3SW5pdDpyLG5nQWZ0ZXJWaWV3Q2hlY2tlZDpzLG5nT25EZXN0cm95Omx9PW87aSYmKHQuY29udGVudEhvb2tzfHwodC5jb250ZW50SG9va3M9W10pKS5wdXNoKC1uLGkpLGEmJigodC5jb250ZW50SG9va3N8fCh0LmNvbnRlbnRIb29rcz1bXSkpLnB1c2gobixhKSwodC5jb250ZW50Q2hlY2tIb29rc3x8KHQuY29udGVudENoZWNrSG9va3M9W10pKS5wdXNoKG4sYSkpLHImJih0LnZpZXdIb29rc3x8KHQudmlld0hvb2tzPVtdKSkucHVzaCgtbixyKSxzJiYoKHQudmlld0hvb2tzfHwodC52aWV3SG9va3M9W10pKS5wdXNoKG4scyksKHQudmlld0NoZWNrSG9va3N8fCh0LnZpZXdDaGVja0hvb2tzPVtdKSkucHVzaChuLHMpKSxudWxsIT1sJiYodC5kZXN0cm95SG9va3N8fCh0LmRlc3Ryb3lIb29rcz1bXSkpLnB1c2gobixsKX19ZnVuY3Rpb24gc2EodCxlLG4pe2RhKHQsZSwzLG4pfWZ1bmN0aW9uIGxhKHQsZSxuLG8pe25nRGV2TW9kZSYmaG4obiwzLCJJbml0IHByZS1vcmRlciBob29rcyBzaG91bGQgbm90IGJlIGNhbGxlZCBtb3JlIHRoYW4gb25jZSIpLCgzJnRbMl0pPT09biYmZGEodCxlLG4sbyl9ZnVuY3Rpb24gY2EodCxlKXtuZ0Rldk1vZGUmJmhuKGUsMywiSW5pdCBob29rcyBwaGFzZSBzaG91bGQgbm90IGJlIGluY3JlbWVudGVkIGFmdGVyIGFsbCBpbml0IGhvb2tzIGhhdmUgYmVlbiBydW4uIik7bGV0IG49dFsyXTsoMyZuKT09PWUmJihuJj0yMDQ3LG4rPTEsdFsyXT1uKX1mdW5jdGlvbiBkYSh0LGUsbixvKXtuZ0Rldk1vZGUmJmduKEFpKCksITEsIkhvb2tzIHNob3VsZCBuZXZlciBiZSBydW4gd2hlbiBpbiBjaGVjayBubyBjaGFuZ2VzIG1vZGUuIik7Y29uc3QgaT1udWxsIT1vP286LTEsYT1lLmxlbmd0aC0xO2xldCByPTA7Zm9yKGxldCBzPXZvaWQgMCE9PW8/NjU1MzUmdFsxOF06MDtzPGE7cysrKXtpZigibnVtYmVyIj09dHlwZW9mIGVbcysxXSl7aWYocj1lW3NdLG51bGwhPW8mJnI+PW8pYnJlYWt9ZWxzZXtlW3NdPDAmJih0WzE4XSs9NjU1MzYpLChyPGl8fC0xPT1pKSYmKHBhKHQsbixlLHMpLHRbMThdPSg0Mjk0OTAxNzYwJnRbMThdKStzKzIpLHMrK319fWZ1bmN0aW9uIHBhKHQsZSxuLG8pe2NvbnN0IGk9bltvXTwwLGE9bltvKzFdLHI9dFtpPy1uW29dOm5bb11dO2lmKGkpe2lmKHRbMl0+PjExPHRbMThdPj4xNiYmKDMmdFsyXSk9PT1lKXt0WzJdKz0yMDQ4LHRpKDQscixhKTt0cnl7YS5jYWxsKHIpfWZpbmFsbHl7dGkoNSxyLGEpfX19ZWxzZXt0aSg0LHIsYSk7dHJ5e2EuY2FsbChyKX1maW5hbGx5e3RpKDUscixhKX19fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jb25zdCBtYT0tMTtjbGFzcyBmYXtjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5mYWN0b3J5PXQsdGhpcy5yZXNvbHZpbmc9ITEsbmdEZXZNb2RlJiZ4bih0LCJGYWN0b3J5IG5vdCBzcGVjaWZpZWQiKSxuZ0Rldk1vZGUmJmduKHR5cGVvZiB0LCJmdW5jdGlvbiIsIkV4cGVjdGVkIGZhY3RvcnkgZnVuY3Rpb24uIiksdGhpcy5jYW5TZWVWaWV3UHJvdmlkZXJzPWUsdGhpcy5pbmplY3RJbXBsPW59fWZ1bmN0aW9uIHVhKHQpe2xldCBlPSIiO3JldHVybiAxJnQmJihlKz0ifFRleHQiKSwyJnQmJihlKz0ifEVsZW1lbnQiKSw0JnQmJihlKz0ifENvbnRhaW5lciIpLDgmdCYmKGUrPSJ8RWxlbWVudENvbnRhaW5lciIpLDE2JnQmJihlKz0ifFByb2plY3Rpb24iKSwzMiZ0JiYoZSs9InxJY3VDb250YWluZXIiKSw2NCZ0JiYoZSs9InxQbGFjZWhvbGRlciIpLGUubGVuZ3RoPjA/ZS5zdWJzdHJpbmcoMSk6ZX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmZ1bmN0aW9uIGdhKHQsZSxuKXt4bih0LCJzaG91bGQgYmUgY2FsbGVkIHdpdGggYSBUTm9kZSIpLDA9PSh0LnR5cGUmZSkmJk9uKG58fGBFeHBlY3RlZCBbJHt1YShlKX1dIGJ1dCBnb3QgJHt1YSh0LnR5cGUpfS5gKX1mdW5jdGlvbiBoYSh0LGUsbil7Y29uc3Qgbz1yaSh0KTtsZXQgaT0wO2Zvcig7aTxuLmxlbmd0aDspe2NvbnN0IGE9bltpXTtpZigibnVtYmVyIj09dHlwZW9mIGEpe2lmKDAhPT1hKWJyZWFrO2krKztjb25zdCByPW5baSsrXSxzPW5baSsrXSxsPW5baSsrXTtuZ0Rldk1vZGUmJm5nRGV2TW9kZS5yZW5kZXJlclNldEF0dHJpYnV0ZSsrLG8/dC5zZXRBdHRyaWJ1dGUoZSxzLGwscik6ZS5zZXRBdHRyaWJ1dGVOUyhyLHMsbCl9ZWxzZXtjb25zdCByPWEscz1uWysraV07bmdEZXZNb2RlJiZuZ0Rldk1vZGUucmVuZGVyZXJTZXRBdHRyaWJ1dGUrKyx5YShyKT9vJiZ0LnNldFByb3BlcnR5KGUscixzKTpvP3Quc2V0QXR0cmlidXRlKGUscixzKTplLnNldEF0dHJpYnV0ZShyLHMpLGkrK319cmV0dXJuIGl9ZnVuY3Rpb24gYmEodCl7cmV0dXJuIDM9PT10fHw0PT09dHx8Nj09PXR9ZnVuY3Rpb24geWEodCl7cmV0dXJuIDY0PT09dC5jaGFyQ29kZUF0KDApfWZ1bmN0aW9uIF9hKHQsZSl7aWYobnVsbD09PWV8fDA9PT1lLmxlbmd0aCk7ZWxzZSBpZihudWxsPT09dHx8MD09PXQubGVuZ3RoKXQ9ZS5zbGljZSgpO2Vsc2V7bGV0IG49LTE7Zm9yKGxldCBvPTA7bzxlLmxlbmd0aDtvKyspe2NvbnN0IGk9ZVtvXTsibnVtYmVyIj09dHlwZW9mIGk/bj1pOjA9PT1ufHxDYSh0LG4saSxudWxsLC0xPT09bnx8Mj09PW4/ZVsrK29dOm51bGwpfX1yZXR1cm4gdH1mdW5jdGlvbiBDYSh0LGUsbixvLGkpe2xldCBhPTAscj10Lmxlbmd0aDtpZigtMT09PWUpcj0tMTtlbHNlIGZvcig7YTx0Lmxlbmd0aDspe2NvbnN0IG49dFthKytdO2lmKCJudW1iZXIiPT10eXBlb2Ygbil7aWYobj09PWUpe3I9LTE7YnJlYWt9aWYobj5lKXtyPWEtMTticmVha319fWZvcig7YTx0Lmxlbmd0aDspe2NvbnN0IGU9dFthXTtpZigibnVtYmVyIj09dHlwZW9mIGUpYnJlYWs7aWYoZT09PW4pe2lmKG51bGw9PT1vKXJldHVybiB2b2lkKG51bGwhPT1pJiYodFthKzFdPWkpKTtpZihvPT09dFthKzFdKXJldHVybiB2b2lkKHRbYSsyXT1pKX1hKyssbnVsbCE9PW8mJmErKyxudWxsIT09aSYmYSsrfS0xIT09ciYmKHQuc3BsaWNlKHIsMCxlKSxhPXIrMSksdC5zcGxpY2UoYSsrLDAsbiksbnVsbCE9PW8mJnQuc3BsaWNlKGErKywwLG8pLG51bGwhPT1pJiZ0LnNwbGljZShhKyssMCxpKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gTWEodCl7cmV0dXJuIHQhPT1tYX1mdW5jdGlvbiB2YSh0KXtuZ0Rldk1vZGUmJnBuKHQsIk51bWJlciBleHBlY3RlZCIpLG5nRGV2TW9kZSYmaG4odCwtMSwiTm90IGEgdmFsaWQgc3RhdGUuIik7cmV0dXJuIG5nRGV2TW9kZSYmTW4oMzI3NjcmdCx2bywiUGFyZW50IGluamVjdG9yIG11c3QgYmUgcG9pbnRpbmcgcGFzdCBIRUFERVJfT0ZGU0VULiIpLDMyNzY3JnR9ZnVuY3Rpb24geGEodCxlKXtsZXQgbj0oZnVuY3Rpb24gbyh0KXtyZXR1cm4gdD4+MTZ9KSh0KSxpPWU7Zm9yKDtuPjA7KWk9aVsxNV0sbi0tO3JldHVybiBpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9sZXQgT2E9ITA7ZnVuY3Rpb24gUGEodCl7Y29uc3QgZT1PYTtyZXR1cm4gT2E9dCxlfWxldCB3YT0wO2Z1bmN0aW9uIGthKHQsZSl7Y29uc3Qgbj1EYSh0LGUpO2lmKC0xIT09bilyZXR1cm4gbjtjb25zdCBvPWVbMV07by5maXJzdENyZWF0ZVBhc3MmJih0LmluamVjdG9ySW5kZXg9ZS5sZW5ndGgsU2Eoby5kYXRhLHQpLFNhKGUsbnVsbCksU2Eoby5ibHVlcHJpbnQsbnVsbCkpO2NvbnN0IGk9UmEodCxlKSxhPXQuaW5qZWN0b3JJbmRleDtpZihNYShpKSl7Y29uc3QgdD12YShpKSxuPXhhKGksZSksbz1uWzFdLmRhdGE7Zm9yKGxldCBpPTA7aTw4O2krKyllW2EraV09blt0K2ldfG9bdCtpXX1yZXR1cm4gZVthKzhdPWksYX1mdW5jdGlvbiBTYSh0LGUpe3QucHVzaCgwLDAsMCwwLDAsMCwwLDAsZSl9ZnVuY3Rpb24gRGEodCxlKXtyZXR1cm4tMT09PXQuaW5qZWN0b3JJbmRleHx8dC5wYXJlbnQmJnQucGFyZW50LmluamVjdG9ySW5kZXg9PT10LmluamVjdG9ySW5kZXh8fG51bGw9PT1lW3QuaW5qZWN0b3JJbmRleCs4XT8tMToobmdEZXZNb2RlJiZ3bihlLHQuaW5qZWN0b3JJbmRleCksdC5pbmplY3RvckluZGV4KX1mdW5jdGlvbiBSYSh0LGUpe2lmKHQucGFyZW50JiYtMSE9PXQucGFyZW50LmluamVjdG9ySW5kZXgpcmV0dXJuIHQucGFyZW50LmluamVjdG9ySW5kZXg7bGV0IG49MCxvPW51bGwsaT1lO2Zvcig7bnVsbCE9PWk7KXtjb25zdCB0PWlbMV0sZT10LnR5cGU7aWYoMj09PWU/KG5nRGV2TW9kZSYmeG4odC5kZWNsVE5vZGUsIkVtYmVkZGVkIFROb2RlcyBzaG91bGQgaGF2ZSBkZWNsYXJhdGlvbiBwYXJlbnRzLiIpLG89dC5kZWNsVE5vZGUpOjE9PT1lP289aVs2XToobmdEZXZNb2RlJiZnbih0LnR5cGUsMCwiUm9vdCB0eXBlIGV4cGVjdGVkIiksbz1udWxsKSxudWxsPT09bylyZXR1cm4gbWE7aWYobmdEZXZNb2RlJiZvJiZFbyhvLGlbMTVdKSxuKyssaT1pWzE1XSwtMSE9PW8uaW5qZWN0b3JJbmRleClyZXR1cm4gby5pbmplY3RvckluZGV4fG48PDE2fXJldHVybiBtYX1mdW5jdGlvbiBFYSh0LGUsbil7IShmdW5jdGlvbiBvKHQsZSxuKXtsZXQgbztuZ0Rldk1vZGUmJmduKGUuZmlyc3RDcmVhdGVQYXNzLCEwLCJleHBlY3RlZCBmaXJzdENyZWF0ZVBhc3MgdG8gYmUgdHJ1ZSIpLCJzdHJpbmciPT10eXBlb2Ygbj9vPW4uY2hhckNvZGVBdCgwKXx8MDpuLmhhc093blByb3BlcnR5KGFvKSYmKG89blthb10pLG51bGw9PW8mJihvPW5bYW9dPXdhKyspO2NvbnN0IGk9MjU1Jm87ZS5kYXRhW3QrKGk+PjUpXXw9MTw8aX0pKHQsZSxuKX1mdW5jdGlvbiBBYSh0LGUsbil7aWYobiZIbi5PcHRpb25hbClyZXR1cm4gdDtkbihlLCJOb2RlSW5qZWN0b3IiKX1mdW5jdGlvbiBUYSh0LGUsbixvKXtpZihuJkhuLk9wdGlvbmFsJiZ2b2lkIDA9PT1vJiYobz1udWxsKSwwPT0obiYoSG4uU2VsZnxIbi5Ib3N0KSkpe2NvbnN0IGk9dFs5XSxhPUxuKHZvaWQgMCk7dHJ5e3JldHVybiBpP2kuZ2V0KGUsbyxuJkhuLk9wdGlvbmFsKTpCbihlLG8sbiZIbi5PcHRpb25hbCl9ZmluYWxseXtMbihhKX19cmV0dXJuIEFhKG8sZSxuKX1mdW5jdGlvbiBOYSh0LGUsbixvPUhuLkRlZmF1bHQsaSl7aWYobnVsbCE9PXQpe2NvbnN0IGE9KGZ1bmN0aW9uIGEodCl7aWYobmdEZXZNb2RlJiZ4bih0LCJ0b2tlbiBtdXN0IGJlIGRlZmluZWQiKSwic3RyaW5nIj09dHlwZW9mIHQpcmV0dXJuIHQuY2hhckNvZGVBdCgwKXx8MDtjb25zdCBlPXQuaGFzT3duUHJvcGVydHkoYW8pP3RbYW9dOnZvaWQgMDtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGU/ZT49MD8yNTUmZToobmdEZXZNb2RlJiZnbihlLC0xLCJFeHBlY3RpbmcgdG8gZ2V0IFNwZWNpYWwgSW5qZWN0b3IgSWQiKSxJYSk6ZX0pKG4pO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBhKXtpZighWWkoZSx0LG8pKXJldHVybiBvJkhuLkhvc3Q/QWEoaSxuLG8pOlRhKGUsbixvLGkpO3RyeXtjb25zdCB0PWEobyk7aWYobnVsbCE9dHx8byZIbi5PcHRpb25hbClyZXR1cm4gdDtkbihuKX1maW5hbGx5e0ppKCl9fWVsc2UgaWYoIm51bWJlciI9PXR5cGVvZiBhKXtsZXQgaT1udWxsLHI9RGEodCxlKSxzPW1hLGw9byZIbi5Ib3N0P2VbMTZdWzZdOm51bGw7Zm9yKCgtMT09PXJ8fG8mSG4uU2tpcFNlbGYpJiYocz0tMT09PXI/UmEodCxlKTplW3IrOF0scyE9PW1hJiZWYShvLCExKT8oaT1lWzFdLHI9dmEocyksZT14YShzLGUpKTpyPS0xKTstMSE9PXI7KXtuZ0Rldk1vZGUmJldvKGUscik7Y29uc3QgdD1lWzFdO2lmKG5nRGV2TW9kZSYmRW8odC5kYXRhW3IrOF0sZSksQmEoYSxyLHQuZGF0YSkpe2NvbnN0IHQ9SGEocixlLG4saSxvLGwpO2lmKHQhPT16YSlyZXR1cm4gdH1zPWVbcis4XSxzIT09bWEmJlZhKG8sZVsxXS5kYXRhW3IrOF09PT1sKSYmQmEoYSxyLGUpPyhpPXQscj12YShzKSxlPXhhKHMsZSkpOnI9LTF9fX1yZXR1cm4gVGEoZSxuLG8saSl9Y29uc3QgemE9e307ZnVuY3Rpb24gSWEoKXtyZXR1cm4gbmV3IGphKHdpKCkseGkoKSl9ZnVuY3Rpb24gSGEodCxlLG4sbyxpLGEpe2NvbnN0IHI9ZVsxXSxzPXIuZGF0YVt0KzhdLGw9RmEocyxyLG4sbnVsbD09bz9TbyhzKSYmT2E6byE9ciYmMCE9KDMmcy50eXBlKSxpJkhuLkhvc3QmJmE9PT1zKTtyZXR1cm4gbnVsbCE9PWw/TGEoZSxyLGwscyk6emF9ZnVuY3Rpb24gRmEodCxlLG4sbyxpKXtjb25zdCBhPXQucHJvdmlkZXJJbmRleGVzLHI9ZS5kYXRhLHM9MTA0ODU3NSZhLGw9dC5kaXJlY3RpdmVTdGFydCxjPWE+PjIwLGQ9aT9zK2M6dC5kaXJlY3RpdmVFbmQ7Zm9yKGxldCB0PW8/czpzK2M7dDxkO3QrKyl7Y29uc3QgZT1yW3RdO2lmKHQ8bCYmbj09PWV8fHQ+PWwmJmUudHlwZT09PW4pcmV0dXJuIHR9aWYoaSl7Y29uc3QgdD1yW2xdO2lmKHQmJlJvKHQpJiZ0LnR5cGU9PT1uKXJldHVybiBsfXJldHVybiBudWxsfWZ1bmN0aW9uIExhKHQsZSxuLG8pe2xldCBpPXRbbl07Y29uc3QgYT1lLmRhdGE7aWYoKGZ1bmN0aW9uIHIodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBmYX0pKGkpKXtjb25zdCByPWk7ci5yZXNvbHZpbmcmJmxuKHNuKGFbbl0pKTtjb25zdCBzPVBhKHIuY2FuU2VlVmlld1Byb3ZpZGVycyk7ci5yZXNvbHZpbmc9ITA7Y29uc3QgbD1yLmluamVjdEltcGw/TG4oci5pbmplY3RJbXBsKTpudWxsLGM9WWkodCxvLEhuLkRlZmF1bHQpO25nRGV2TW9kZSYmZ24oYywhMCwiQmVjYXVzZSBmbGFncyBkbyBub3QgY29udGFpbiBgU2tpcFNlbGYnIHdlIGV4cGVjdCB0aGlzIHRvIGFsd2F5cyBzdWNjZWVkLiIpO3RyeXtpPXRbbl09ci5mYWN0b3J5KHZvaWQgMCxhLHQsbyksZS5maXJzdENyZWF0ZVBhc3MmJm4+PW8uZGlyZWN0aXZlU3RhcnQmJihuZ0Rldk1vZGUmJihmdW5jdGlvbiBzKHQpe3ZvaWQgMCE9PXQudHlwZSYmbnVsbCE9dC5zZWxlY3RvcnMmJnZvaWQgMCE9PXQuaW5wdXRzfHxPbigiRXhwZWN0ZWQgYSBEaXJlY3RpdmVEZWYvQ29tcG9uZW50RGVmIGFuZCB0aGlzIG9iamVjdCBkb2VzIG5vdCBzZWVtIHRvIGhhdmUgdGhlIGV4cGVjdGVkIHNoYXBlLiIpfSkoYVtuXSksKAovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KZnVuY3Rpb24gbCh0LGUsbil7bmdEZXZNb2RlJiZMbyhuKTtjb25zdHtuZ09uQ2hhbmdlczpvLG5nT25Jbml0OmksbmdEb0NoZWNrOmF9PWUudHlwZS5wcm90b3R5cGU7aWYobyl7Y29uc3Qgbz1abyhlKTsobi5wcmVPcmRlckhvb2tzfHwobi5wcmVPcmRlckhvb2tzPVtdKSkucHVzaCh0LG8pLChuLnByZU9yZGVyQ2hlY2tIb29rc3x8KG4ucHJlT3JkZXJDaGVja0hvb2tzPVtdKSkucHVzaCh0LG8pfWkmJihuLnByZU9yZGVySG9va3N8fChuLnByZU9yZGVySG9va3M9W10pKS5wdXNoKDAtdCxpKSxhJiYoKG4ucHJlT3JkZXJIb29rc3x8KG4ucHJlT3JkZXJIb29rcz1bXSkpLnB1c2godCxhKSwobi5wcmVPcmRlckNoZWNrSG9va3N8fChuLnByZU9yZGVyQ2hlY2tIb29rcz1bXSkpLnB1c2godCxhKSl9KShuLGFbbl0sZSkpfWZpbmFsbHl7bnVsbCE9PWwmJkxuKGwpLFBhKHMpLHIucmVzb2x2aW5nPSExLEppKCl9fXJldHVybiBpfWZ1bmN0aW9uIEJhKHQsZSxuKXtyZXR1cm4hIShuW2UrKHQ+PjUpXSYxPDx0KX1mdW5jdGlvbiBWYSh0LGUpe3JldHVybiEodCZIbi5TZWxmfHx0JkhuLkhvc3QmJmUpfWNsYXNzIGphe2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5fdE5vZGU9dCx0aGlzLl9sVmlldz1lfWdldCh0LGUpe3JldHVybiBOYSh0aGlzLl90Tm9kZSx0aGlzLl9sVmlldyx0LHZvaWQgMCxlKX19ZnVuY3Rpb24gVWEodCl7cmV0dXJuIFZuKCgoKT0+e2NvbnN0IGU9dC5wcm90b3R5cGUuY29uc3RydWN0b3Isbj1lW2lvXXx8V2EoZSksbz1PYmplY3QucHJvdG90eXBlO2xldCBpPU9iamVjdC5nZXRQcm90b3R5cGVPZih0LnByb3RvdHlwZSkuY29uc3RydWN0b3I7Zm9yKDtpJiZpIT09bzspe2NvbnN0IHQ9aVtpb118fFdhKGkpO2lmKHQmJnQhPT1uKXJldHVybiB0O2k9T2JqZWN0LmdldFByb3RvdHlwZU9mKGkpfXJldHVybiB0PT5uZXcgdH0pKX1mdW5jdGlvbiBXYSh0KXtyZXR1cm4gZW4odCk/KCk9Pntjb25zdCBlPVdhKHRuKHQpKTtyZXR1cm4gZSYmZSgpfTpHbyh0KX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gR2EodCl7cmV0dXJuKGZ1bmN0aW9uIGUodCxuKXtpZihuZ0Rldk1vZGUmJmdhKHQsMTUpLG5nRGV2TW9kZSYmeG4odCwiZXhwZWN0aW5nIHROb2RlIiksImNsYXNzIj09PW4pcmV0dXJuIHQuY2xhc3NlcztpZigic3R5bGUiPT09bilyZXR1cm4gdC5zdHlsZXM7Y29uc3Qgbz10LmF0dHJzO2lmKG8pe2NvbnN0IHQ9by5sZW5ndGg7bGV0IGU9MDtmb3IoO2U8dDspe2NvbnN0IGk9b1tlXTtpZihiYShpKSlicmVhaztpZigwPT09aSllKz0yO2Vsc2UgaWYoIm51bWJlciI9PXR5cGVvZiBpKWZvcihlKys7ZTx0JiYic3RyaW5nIj09dHlwZW9mIG9bZV07KWUrKztlbHNle2lmKGk9PT1uKXJldHVybiBvW2UrMV07ZSs9Mn19fXJldHVybiBudWxsfSkod2koKSx0KX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3QgWWE9Il9fYW5ub3RhdGlvbnNfXyIscWE9Il9fcGFyYW1ldGVyc19fIixaYT0iX19wcm9wX19tZXRhZGF0YV9fIjtmdW5jdGlvbiBYYSh0LGUsbixvLGkpe3JldHVybiBWbigoKCk9Pntjb25zdCBhPUthKGUpO2Z1bmN0aW9uIHIoLi4udCl7aWYodGhpcyBpbnN0YW5jZW9mIHIpcmV0dXJuIGEuY2FsbCh0aGlzLC4uLnQpLHRoaXM7Y29uc3QgZT1uZXcgciguLi50KTtyZXR1cm4gZnVuY3Rpb24gbihhKXtpJiZpKGEsLi4udCk7cmV0dXJuKGEuaGFzT3duUHJvcGVydHkoWWEpP2FbWWFdOk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFlhLHt2YWx1ZTpbXX0pW1lhXSkucHVzaChlKSxvJiZvKGEpLGF9fXJldHVybiBuJiYoci5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShuLnByb3RvdHlwZSkpLHIucHJvdG90eXBlLm5nTWV0YWRhdGFOYW1lPXQsci5hbm5vdGF0aW9uQ2xzPXIscn0pKX1mdW5jdGlvbiBLYSh0KXtyZXR1cm4gZnVuY3Rpb24gZSguLi5uKXtpZih0KXtjb25zdCBlPXQoLi4ubik7Zm9yKGNvbnN0IHQgaW4gZSl0aGlzW3RdPWVbdF19fX1mdW5jdGlvbiBKYSh0LGUsbil7cmV0dXJuIFZuKCgoKT0+e2NvbnN0IG89S2EoZSk7ZnVuY3Rpb24gaSguLi50KXtpZih0aGlzIGluc3RhbmNlb2YgaSlyZXR1cm4gby5hcHBseSh0aGlzLHQpLHRoaXM7Y29uc3QgZT1uZXcgaSguLi50KTtyZXR1cm4gbi5hbm5vdGF0aW9uPWUsbjtmdW5jdGlvbiBuKHQsbixvKXtjb25zdCBpPXQuaGFzT3duUHJvcGVydHkocWEpP3RbcWFdOk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LHFhLHt2YWx1ZTpbXX0pW3FhXTtmb3IoO2kubGVuZ3RoPD1vOylpLnB1c2gobnVsbCk7cmV0dXJuKGlbb109aVtvXXx8W10pLnB1c2goZSksdH19cmV0dXJuIG4mJihpLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKG4ucHJvdG90eXBlKSksaS5wcm90b3R5cGUubmdNZXRhZGF0YU5hbWU9dCxpLmFubm90YXRpb25DbHM9aSxpfSkpfWZ1bmN0aW9uIFFhKHQsZSxuLG8pe3JldHVybiBWbigoKCk9Pntjb25zdCBpPUthKGUpO2Z1bmN0aW9uIGEoLi4udCl7aWYodGhpcyBpbnN0YW5jZW9mIGEpcmV0dXJuIGkuYXBwbHkodGhpcyx0KSx0aGlzO2NvbnN0IGU9bmV3IGEoLi4udCk7cmV0dXJuIGZ1bmN0aW9uIG4oaSxhKXtjb25zdCByPWkuY29uc3RydWN0b3Iscz1yLmhhc093blByb3BlcnR5KFphKT9yW1phXTpPYmplY3QuZGVmaW5lUHJvcGVydHkocixaYSx7dmFsdWU6e319KVtaYV07c1thXT1zLmhhc093blByb3BlcnR5KGEpJiZzW2FdfHxbXSxzW2FdLnVuc2hpZnQoZSksbyYmbyhpLGEsLi4udCl9fXJldHVybiBuJiYoYS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShuLnByb3RvdHlwZSkpLGEucHJvdG90eXBlLm5nTWV0YWRhdGFOYW1lPXQsYS5hbm5vdGF0aW9uQ2xzPWEsYX0pKX1jb25zdCAkYT0oZnVuY3Rpb24gdHIoKXtyZXR1cm4gSmEoIkF0dHJpYnV0ZSIsKHQ9Pih7YXR0cmlidXRlTmFtZTp0LF9fTkdfRUxFTUVOVF9JRF9fOigpPT5HYSh0KX0pKSl9KSgpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgZXJ7Y29uc3RydWN0b3IodCxlKXt0aGlzLl9kZXNjPXQsdGhpcy5uZ01ldGFkYXRhTmFtZT0iSW5qZWN0aW9uVG9rZW4iLHRoaXMuybVwcm92PXZvaWQgMCwibnVtYmVyIj09dHlwZW9mIGU/KCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmX24oZSwwLCJPbmx5IG5lZ2F0aXZlIG51bWJlcnMgYXJlIHN1cHBvcnRlZCBoZXJlIiksdGhpcy5fX05HX0VMRU1FTlRfSURfXz1lKTp2b2lkIDAhPT1lJiYodGhpcy7JtXByb3Y9U24oe3Rva2VuOnRoaXMscHJvdmlkZWRJbjplLnByb3ZpZGVkSW58fCJyb290IixmYWN0b3J5OmUuZmFjdG9yeX0pKX10b1N0cmluZygpe3JldHVybmBJbmplY3Rpb25Ub2tlbiAke3RoaXMuX2Rlc2N9YH19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL25ldyBlcigiQW5hbHl6ZUZvckVudHJ5Q29tcG9uZW50cyIpO2NsYXNzIG5ye31jb25zdCBvcj1RYSgiQ29udGVudENoaWxkcmVuIiwoKHQsZT17fSk9Pk9iamVjdC5hc3NpZ24oe3NlbGVjdG9yOnQsZmlyc3Q6ITEsaXNWaWV3UXVlcnk6ITEsZGVzY2VuZGFudHM6ITEsZW1pdERpc3RpbmN0Q2hhbmdlc09ubHk6dHJ1ZX0sZSkpLG5yKSxpcj1RYSgiQ29udGVudENoaWxkIiwoKHQsZT17fSk9Pk9iamVjdC5hc3NpZ24oe3NlbGVjdG9yOnQsZmlyc3Q6ITAsaXNWaWV3UXVlcnk6ITEsZGVzY2VuZGFudHM6ITB9LGUpKSxucik7UWEoIlZpZXdDaGlsZHJlbiIsKCh0LGU9e30pPT5PYmplY3QuYXNzaWduKHtzZWxlY3Rvcjp0LGZpcnN0OiExLGlzVmlld1F1ZXJ5OiEwLGRlc2NlbmRhbnRzOiEwLGVtaXREaXN0aW5jdENoYW5nZXNPbmx5OnRydWV9LGUpKSxucik7Y29uc3QgYXI9UWEoIlZpZXdDaGlsZCIsKCh0LGUpPT5PYmplY3QuYXNzaWduKHtzZWxlY3Rvcjp0LGZpcnN0OiEwLGlzVmlld1F1ZXJ5OiEwLGRlc2NlbmRhbnRzOiEwfSxlKSksbnIpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KdmFyIHJyLHNyOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KZnVuY3Rpb24gbHIodCl7Y29uc3QgZT1Ybi5uZztpZihlJiZlLsm1Y29tcGlsZXJGYWNhZGUpcmV0dXJuIGUuybVjb21waWxlckZhY2FkZTtpZigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKXtjb25zb2xlLmVycm9yKGBKSVQgY29tcGlsYXRpb24gZmFpbGVkIGZvciAke3Qua2luZH1gLHQudHlwZSk7bGV0IGU9YFRoZSAke3Qua2luZH0gJyR7dC50eXBlLm5hbWV9JyBuZWVkcyB0byBiZSBjb21waWxlZCB1c2luZyB0aGUgSklUIGNvbXBpbGVyLCBidXQgJ0Bhbmd1bGFyL2NvbXBpbGVyJyBpcyBub3QgYXZhaWxhYmxlLlxuXG5gO3Rocm93IDE9PT10LnVzYWdlPyhlKz1gVGhlICR7dC5raW5kfSBpcyBwYXJ0IG9mIGEgbGlicmFyeSB0aGF0IGhhcyBiZWVuIHBhcnRpYWxseSBjb21waWxlZC5cbmAsZSs9Ikhvd2V2ZXIsIHRoZSBBbmd1bGFyIExpbmtlciBoYXMgbm90IHByb2Nlc3NlZCB0aGUgbGlicmFyeSBzdWNoIHRoYXQgSklUIGNvbXBpbGF0aW9uIGlzIHVzZWQgYXMgZmFsbGJhY2suXG4iLGUrPSJcbiIsZSs9IklkZWFsbHksIHRoZSBsaWJyYXJ5IGlzIHByb2Nlc3NlZCB1c2luZyB0aGUgQW5ndWxhciBMaW5rZXIgdG8gYmVjb21lIGZ1bGx5IEFPVCBjb21waWxlZC5cbiIpOmUrPSJKSVQgY29tcGlsYXRpb24gaXMgZGlzY291cmFnZWQgZm9yIHByb2R1Y3Rpb24gdXNlLWNhc2VzISBDb25zaWRlciB1c2luZyBBT1QgbW9kZSBpbnN0ZWFkLlxuIixlKz0iQWx0ZXJuYXRpdmVseSwgdGhlIEpJVCBjb21waWxlciBzaG91bGQgYmUgbG9hZGVkIGJ5IGJvb3RzdHJhcHBpbmcgdXNpbmcgJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXItZHluYW1pYycgb3IgJ0Bhbmd1bGFyL3BsYXRmb3JtLXNlcnZlcicsXG4iLGUrPSJvciBtYW51YWxseSBwcm92aWRlIHRoZSBjb21waWxlciB3aXRoICdpbXBvcnQgXCJAYW5ndWxhci9jb21waWxlclwiOycgYmVmb3JlIGJvb3RzdHJhcHBpbmcuIixuZXcgRXJyb3IoZSl9dGhyb3cgbmV3IEVycm9yKCJKSVQgY29tcGlsZXIgdW5hdmFpbGFibGUiKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovIShmdW5jdGlvbih0KXt0W3QuRGlyZWN0aXZlPTBdPSJEaXJlY3RpdmUiLHRbdC5Db21wb25lbnQ9MV09IkNvbXBvbmVudCIsdFt0LkluamVjdGFibGU9Ml09IkluamVjdGFibGUiLHRbdC5QaXBlPTNdPSJQaXBlIix0W3QuTmdNb2R1bGU9NF09Ik5nTW9kdWxlIn0pKHJyfHwocnI9e30pKSwoZnVuY3Rpb24odCl7dFt0LkVtdWxhdGVkPTBdPSJFbXVsYXRlZCIsdFt0Lk5vbmU9Ml09Ik5vbmUiLHRbdC5TaGFkb3dEb209M109IlNoYWRvd0RvbSJ9KShzcnx8KHNyPXt9KSk7Y29uc3QgY3I9RnVuY3Rpb247ZnVuY3Rpb24gZHIodCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHR9ZnVuY3Rpb24gcHIodCxlKXt2b2lkIDA9PT1lJiYoZT10KTtmb3IobGV0IG49MDtuPHQubGVuZ3RoO24rKyl7bGV0IG89dFtuXTtBcnJheS5pc0FycmF5KG8pPyhlPT09dCYmKGU9dC5zbGljZSgwLG4pKSxwcihvLGUpKTplIT09dCYmZS5wdXNoKG8pfXJldHVybiBlfWZ1bmN0aW9uIG1yKHQsZSl7dC5mb3JFYWNoKCh0PT5BcnJheS5pc0FycmF5KHQpP21yKHQsZSk6ZSh0KSkpfWZ1bmN0aW9uIGZyKHQsZSxuKXtlPj10Lmxlbmd0aD90LnB1c2gobik6dC5zcGxpY2UoZSwwLG4pfWZ1bmN0aW9uIHVyKHQsZSl7cmV0dXJuIGU+PXQubGVuZ3RoLTE/dC5wb3AoKTp0LnNwbGljZShlLDEpWzBdfWZ1bmN0aW9uIGdyKHQsZSl7Y29uc3Qgbj1bXTtmb3IobGV0IG89MDtvPHQ7bysrKW4ucHVzaChlKTtyZXR1cm4gbn1mdW5jdGlvbiBocih0LGUsbil7bGV0IG89eXIodCxlKTtyZXR1cm4gbz49MD90WzF8b109bjoobz1+bywoZnVuY3Rpb24gaSh0LGUsbixvKXtuZ0Rldk1vZGUmJkNuKGUsdC5sZW5ndGgsIkNhbid0IGluc2VydCBwYXN0IGFycmF5IGVuZC4iKTtsZXQgaT10Lmxlbmd0aDtpZihpPT1lKXQucHVzaChuLG8pO2Vsc2UgaWYoMT09PWkpdC5wdXNoKG8sdFswXSksdFswXT1uO2Vsc2V7Zm9yKGktLSx0LnB1c2godFtpLTFdLHRbaV0pO2k+ZTspdFtpXT10W2ktMl0saS0tO3RbZV09bix0W2UrMV09b319KSh0LG8sZSxuKSksb31mdW5jdGlvbiBicih0LGUpe2NvbnN0IG49eXIodCxlKTtpZihuPj0wKXJldHVybiB0WzF8bl19ZnVuY3Rpb24geXIodCxlKXtyZXR1cm4oZnVuY3Rpb24gbih0LGUsbyl7bmdEZXZNb2RlJiZnbihBcnJheS5pc0FycmF5KHQpLCEwLCJFeHBlY3RpbmcgYW4gYXJyYXkiKTtsZXQgaT0wLGE9dC5sZW5ndGg+Pm87Zm9yKDthIT09aTspe2NvbnN0IG49aSsoYS1pPj4xKSxyPXRbbjw8b107aWYoZT09PXIpcmV0dXJuIG48PG87cj5lP2E9bjppPW4rMX1yZXR1cm5+KGE8PG8pfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8pKHQsZSwxKX1jb25zdCBfcj0vXmZ1bmN0aW9uXHMrXFMrXChcKVxzKntbXHNcU10rXC5hcHBseVwodGhpcyxccyooYXJndW1lbnRzfCg/OlteKCldK1woXFtcXSwpP1teKCldK1woYXJndW1lbnRzXCkpXCkvLENyPS9eY2xhc3NccytbQS1aYS16XGQkX10qXHMqZXh0ZW5kc1xzK1tee10rey8sTXI9L15jbGFzc1xzK1tBLVphLXpcZCRfXSpccypleHRlbmRzXHMrW157XSt7W1xzXFNdKmNvbnN0cnVjdG9yXHMqXCgvLHZyPS9eY2xhc3NccytbQS1aYS16XGQkX10qXHMqZXh0ZW5kc1xzK1tee10re1tcc1xTXSpjb25zdHJ1Y3RvclxzKlwoXClccyp7XHMqc3VwZXJcKFwuXC5cLmFyZ3VtZW50c1wpLztjbGFzcyB4cntjb25zdHJ1Y3Rvcih0KXt0aGlzLl9yZWZsZWN0PXR8fFhuLlJlZmxlY3R9aXNSZWZsZWN0aW9uRW5hYmxlZCgpe3JldHVybiEwfWZhY3RvcnkodCl7cmV0dXJuKC4uLmUpPT5uZXcgdCguLi5lKX1femlwVHlwZXNBbmRBbm5vdGF0aW9ucyh0LGUpe2xldCBuO249Z3Iodm9pZCAwPT09dD9lLmxlbmd0aDp0Lmxlbmd0aCk7Zm9yKGxldCBvPTA7bzxuLmxlbmd0aDtvKyspbltvXT12b2lkIDA9PT10P1tdOnRbb10mJnRbb10hPU9iamVjdD9bdFtvXV06W10sZSYmbnVsbCE9ZVtvXSYmKG5bb109bltvXS5jb25jYXQoZVtvXSkpO3JldHVybiBufV9vd25QYXJhbWV0ZXJzKHQsZSl7aWYoKGZ1bmN0aW9uIG4odCl7cmV0dXJuIF9yLnRlc3QodCl8fHZyLnRlc3QodCl8fENyLnRlc3QodCkmJiFNci50ZXN0KHQpfSkodC50b1N0cmluZygpKSlyZXR1cm4gbnVsbDtpZih0LnBhcmFtZXRlcnMmJnQucGFyYW1ldGVycyE9PWUucGFyYW1ldGVycylyZXR1cm4gdC5wYXJhbWV0ZXJzO2NvbnN0IG89dC5jdG9yUGFyYW1ldGVycztpZihvJiZvIT09ZS5jdG9yUGFyYW1ldGVycyl7Y29uc3QgdD0iZnVuY3Rpb24iPT10eXBlb2Ygbz9vKCk6byxlPXQubWFwKCh0PT50JiZ0LnR5cGUpKSxuPXQubWFwKCh0PT50JiZPcih0LmRlY29yYXRvcnMpKSk7cmV0dXJuIHRoaXMuX3ppcFR5cGVzQW5kQW5ub3RhdGlvbnMoZSxuKX1jb25zdCBpPXQuaGFzT3duUHJvcGVydHkocWEpJiZ0W3FhXSxhPXRoaXMuX3JlZmxlY3QmJnRoaXMuX3JlZmxlY3QuZ2V0T3duTWV0YWRhdGEmJnRoaXMuX3JlZmxlY3QuZ2V0T3duTWV0YWRhdGEoImRlc2lnbjpwYXJhbXR5cGVzIix0KTtyZXR1cm4gYXx8aT90aGlzLl96aXBUeXBlc0FuZEFubm90YXRpb25zKGEsaSk6Z3IodC5sZW5ndGgpfXBhcmFtZXRlcnModCl7aWYoIWRyKHQpKXJldHVybltdO2NvbnN0IGU9UHIodCk7bGV0IG49dGhpcy5fb3duUGFyYW1ldGVycyh0LGUpO3JldHVybiBufHxlPT09T2JqZWN0fHwobj10aGlzLnBhcmFtZXRlcnMoZSkpLG58fFtdfV9vd25Bbm5vdGF0aW9ucyh0LGUpe2lmKHQuYW5ub3RhdGlvbnMmJnQuYW5ub3RhdGlvbnMhPT1lLmFubm90YXRpb25zKXtsZXQgZT10LmFubm90YXRpb25zO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBlJiZlLmFubm90YXRpb25zJiYoZT1lLmFubm90YXRpb25zKSxlfXJldHVybiB0LmRlY29yYXRvcnMmJnQuZGVjb3JhdG9ycyE9PWUuZGVjb3JhdG9ycz9Pcih0LmRlY29yYXRvcnMpOnQuaGFzT3duUHJvcGVydHkoWWEpP3RbWWFdOm51bGx9YW5ub3RhdGlvbnModCl7aWYoIWRyKHQpKXJldHVybltdO2NvbnN0IGU9UHIodCksbj10aGlzLl9vd25Bbm5vdGF0aW9ucyh0LGUpfHxbXTtyZXR1cm4oZSE9PU9iamVjdD90aGlzLmFubm90YXRpb25zKGUpOltdKS5jb25jYXQobil9X293blByb3BNZXRhZGF0YSh0LGUpe2lmKHQucHJvcE1ldGFkYXRhJiZ0LnByb3BNZXRhZGF0YSE9PWUucHJvcE1ldGFkYXRhKXtsZXQgZT10LnByb3BNZXRhZGF0YTtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZSYmZS5wcm9wTWV0YWRhdGEmJihlPWUucHJvcE1ldGFkYXRhKSxlfWlmKHQucHJvcERlY29yYXRvcnMmJnQucHJvcERlY29yYXRvcnMhPT1lLnByb3BEZWNvcmF0b3JzKXtjb25zdCBlPXQucHJvcERlY29yYXRvcnMsbj17fTtyZXR1cm4gT2JqZWN0LmtleXMoZSkuZm9yRWFjaCgodD0+e25bdF09T3IoZVt0XSl9KSksbn1yZXR1cm4gdC5oYXNPd25Qcm9wZXJ0eShaYSk/dFtaYV06bnVsbH1wcm9wTWV0YWRhdGEodCl7aWYoIWRyKHQpKXJldHVybnt9O2NvbnN0IGU9UHIodCksbj17fTtpZihlIT09T2JqZWN0KXtjb25zdCB0PXRoaXMucHJvcE1ldGFkYXRhKGUpO09iamVjdC5rZXlzKHQpLmZvckVhY2goKGU9PntuW2VdPXRbZV19KSl9Y29uc3Qgbz10aGlzLl9vd25Qcm9wTWV0YWRhdGEodCxlKTtyZXR1cm4gbyYmT2JqZWN0LmtleXMobykuZm9yRWFjaCgodD0+e2NvbnN0IGU9W107bi5oYXNPd25Qcm9wZXJ0eSh0KSYmZS5wdXNoKC4uLm5bdF0pLGUucHVzaCguLi5vW3RdKSxuW3RdPWV9KSksbn1vd25Qcm9wTWV0YWRhdGEodCl7cmV0dXJuIGRyKHQpJiZ0aGlzLl9vd25Qcm9wTWV0YWRhdGEodCxQcih0KSl8fHt9fWhhc0xpZmVjeWNsZUhvb2sodCxlKXtyZXR1cm4gdCBpbnN0YW5jZW9mIGNyJiZlIGluIHQucHJvdG90eXBlfWd1YXJkcyh0KXtyZXR1cm57fX1nZXR0ZXIodCl7cmV0dXJuIG5ldyBGdW5jdGlvbigibyIsInJldHVybiBvLiIrdCsiOyIpfXNldHRlcih0KXtyZXR1cm4gbmV3IEZ1bmN0aW9uKCJvIiwidiIsInJldHVybiBvLiIrdCsiID0gdjsiKX1tZXRob2QodCl7cmV0dXJuIG5ldyBGdW5jdGlvbigibyIsImFyZ3MiLGBpZiAoIW8uJHt0fSkgdGhyb3cgbmV3IEVycm9yKCciJHt0fSIgaXMgdW5kZWZpbmVkJyk7XG4gICAgICAgIHJldHVybiBvLiR7dH0uYXBwbHkobywgYXJncyk7YCl9aW1wb3J0VXJpKHQpe3JldHVybiJvYmplY3QiPT10eXBlb2YgdCYmdC5maWxlUGF0aD90LmZpbGVQYXRoOmAuLyR7S2UodCl9YH1yZXNvdXJjZVVyaSh0KXtyZXR1cm5gLi8ke0tlKHQpfWB9cmVzb2x2ZUlkZW50aWZpZXIodCxlLG4sbyl7cmV0dXJuIG99cmVzb2x2ZUVudW0odCxlKXtyZXR1cm4gdFtlXX19ZnVuY3Rpb24gT3IodCl7cmV0dXJuIHQ/dC5tYXAoKHQ9Pm5ldygwLHQudHlwZS5hbm5vdGF0aW9uQ2xzKSguLi50LmFyZ3M/dC5hcmdzOltdKSkpOltdfWZ1bmN0aW9uIFByKHQpe2NvbnN0IGU9dC5wcm90b3R5cGU/T2JqZWN0LmdldFByb3RvdHlwZU9mKHQucHJvdG90eXBlKTpudWxsO3JldHVybihlP2UuY29uc3RydWN0b3I6bnVsbCl8fE9iamVjdH0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3Qgd3I9e30sa3I9L1xuL2dtLFNyPSJfX3NvdXJjZSIsRHI9WmUoe3Byb3ZpZGU6U3RyaW5nLHVzZVZhbHVlOlplfSk7bGV0IFJyO2Z1bmN0aW9uIEVyKHQpe2NvbnN0IGU9UnI7cmV0dXJuIFJyPXQsZX1mdW5jdGlvbiBBcih0LGU9SG4uRGVmYXVsdCl7aWYodm9pZCAwPT09UnIpdGhyb3cgbmV3IEVycm9yKCJpbmplY3QoKSBtdXN0IGJlIGNhbGxlZCBmcm9tIGFuIGluamVjdGlvbiBjb250ZXh0Iik7cmV0dXJuIG51bGw9PT1Scj9Cbih0LHZvaWQgMCxlKTpSci5nZXQodCxlJkhuLk9wdGlvbmFsP251bGw6dm9pZCAwLGUpfWZ1bmN0aW9uIFRyKHQsZT1Ibi5EZWZhdWx0KXtyZXR1cm4oKGZ1bmN0aW9uIG4oKXtyZXR1cm4gRm59KSgpfHxBcikodG4odCksZSl9ZnVuY3Rpb24gTnIodCl7Y29uc3QgZT1uZ0Rldk1vZGU/YFRoaXMgY29uc3RydWN0b3IgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBBbmd1bGFyIERlcGVuZGVuY3kgSW5qZWN0aW9uIGJlY2F1c2UgaXRzIGRlcGVuZGVuY3kgYXQgaW5kZXggJHt0fSBvZiB0aGUgcGFyYW1ldGVyIGxpc3QgaXMgaW52YWxpZC5cblRoaXMgY2FuIGhhcHBlbiBpZiB0aGUgZGVwZW5kZW5jeSB0eXBlIGlzIGEgcHJpbWl0aXZlIGxpa2UgYSBzdHJpbmcgb3IgaWYgYW4gYW5jZXN0b3Igb2YgdGhpcyBjbGFzcyBpcyBtaXNzaW5nIGFuIEFuZ3VsYXIgZGVjb3JhdG9yLlxuXG5QbGVhc2UgY2hlY2sgdGhhdCAxKSB0aGUgdHlwZSBmb3IgdGhlIHBhcmFtZXRlciBhdCBpbmRleCAke3R9IGlzIGNvcnJlY3QgYW5kIDIpIHRoZSBjb3JyZWN0IEFuZ3VsYXIgZGVjb3JhdG9ycyBhcmUgZGVmaW5lZCBmb3IgdGhpcyBjbGFzcyBhbmQgaXRzIGFuY2VzdG9ycy5gOiJpbnZhbGlkIjt0aHJvdyBuZXcgRXJyb3IoZSl9Y29uc3QgenI9VHI7ZnVuY3Rpb24gSXIodCl7Y29uc3QgZT1bXTtmb3IobGV0IG49MDtuPHQubGVuZ3RoO24rKyl7Y29uc3Qgbz10bih0W25dKTtpZihBcnJheS5pc0FycmF5KG8pKXtpZigwPT09by5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJBcmd1bWVudHMgYXJyYXkgbXVzdCBoYXZlIGFyZ3VtZW50cy4iKTtsZXQgdCxuPUhuLkRlZmF1bHQ7Zm9yKGxldCBlPTA7ZTxvLmxlbmd0aDtlKyspe2NvbnN0IGk9b1tlXSxhPWkuX19OR19ESV9GTEFHX187Im51bWJlciI9PXR5cGVvZiBhPy0xPT09YT90PWkudG9rZW46bnw9YTp0PWl9ZS5wdXNoKFRyKHQsbikpfWVsc2UgZS5wdXNoKFRyKG8pKX1yZXR1cm4gZX1mdW5jdGlvbiBIcih0LGUpe3JldHVybiB0Ll9fTkdfRElfRkxBR19fPWUsdC5wcm90b3R5cGUuX19OR19ESV9GTEFHX189ZSx0fWZ1bmN0aW9uIEZyKHQsZSxuLG8pe2NvbnN0IGk9dC5uZ1RlbXBUb2tlblBhdGg7dGhyb3cgZVtTcl0mJmkudW5zaGlmdChlW1NyXSksdC5tZXNzYWdlPShmdW5jdGlvbiBhKHQsZSxuLG89bnVsbCl7dD10JiYiXG4iPT09dC5jaGFyQXQoMCkmJiLJtSI9PXQuY2hhckF0KDEpP3Quc3Vic3RyKDIpOnQ7bGV0IGk9S2UoZSk7aWYoQXJyYXkuaXNBcnJheShlKSlpPWUubWFwKEtlKS5qb2luKCIgLT4gIik7ZWxzZSBpZigib2JqZWN0Ij09dHlwZW9mIGUpe2xldCB0PVtdO2ZvcihsZXQgbiBpbiBlKWlmKGUuaGFzT3duUHJvcGVydHkobikpe2xldCBvPWVbbl07dC5wdXNoKG4rIjoiKygic3RyaW5nIj09dHlwZW9mIG8/SlNPTi5zdHJpbmdpZnkobyk6S2UobykpKX1pPWB7JHt0LmpvaW4oIiwgIil9fWB9cmV0dXJuYCR7bn0ke28/IigiK28rIikiOiIifVske2l9XTogJHt0LnJlcGxhY2Uoa3IsIlxuICAiKX1gfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8pKCJcbiIrdC5tZXNzYWdlLGksbixvKSx0Lm5nVG9rZW5QYXRoPWksdC5uZ1RlbXBUb2tlblBhdGg9bnVsbCx0fWNvbnN0IExyPUhyKEphKCJJbmplY3QiLCh0PT4oe3Rva2VuOnR9KSkpLC0xKSxCcj1IcihKYSgiT3B0aW9uYWwiKSw4KSxWcj1IcihKYSgiU2VsZiIpLDIpLGpyPUhyKEphKCJTa2lwU2VsZiIpLDQpLFVyPUhyKEphKCJIb3N0IiksMSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpsZXQgV3I9bnVsbDtmdW5jdGlvbiBHcigpe3JldHVybiBXcj1Xcnx8bmV3IHhyfWZ1bmN0aW9uIFlyKHQpe3JldHVybiBxcihHcigpLnBhcmFtZXRlcnModCkpfWZ1bmN0aW9uIHFyKHQpe3JldHVybiB0Lm1hcCgodD0+KGZ1bmN0aW9uIGUodCl7Y29uc3QgZT17dG9rZW46bnVsbCxhdHRyaWJ1dGU6bnVsbCxob3N0OiExLG9wdGlvbmFsOiExLHNlbGY6ITEsc2tpcFNlbGY6ITF9O2lmKEFycmF5LmlzQXJyYXkodCkmJnQubGVuZ3RoPjApZm9yKGxldCBuPTA7bjx0Lmxlbmd0aDtuKyspe2NvbnN0IG89dFtuXTtpZih2b2lkIDA9PT1vKWNvbnRpbnVlO2NvbnN0IGk9T2JqZWN0LmdldFByb3RvdHlwZU9mKG8pO2lmKG8gaW5zdGFuY2VvZiBCcnx8Ik9wdGlvbmFsIj09PWkubmdNZXRhZGF0YU5hbWUpZS5vcHRpb25hbD0hMDtlbHNlIGlmKG8gaW5zdGFuY2VvZiBqcnx8IlNraXBTZWxmIj09PWkubmdNZXRhZGF0YU5hbWUpZS5za2lwU2VsZj0hMDtlbHNlIGlmKG8gaW5zdGFuY2VvZiBWcnx8IlNlbGYiPT09aS5uZ01ldGFkYXRhTmFtZSllLnNlbGY9ITA7ZWxzZSBpZihvIGluc3RhbmNlb2YgVXJ8fCJIb3N0Ij09PWkubmdNZXRhZGF0YU5hbWUpZS5ob3N0PSEwO2Vsc2UgaWYobyBpbnN0YW5jZW9mIExyKWUudG9rZW49by50b2tlbjtlbHNlIGlmKG8gaW5zdGFuY2VvZiAkYSl7aWYodm9pZCAwPT09by5hdHRyaWJ1dGVOYW1lKXRocm93IG5ldyBFcnJvcigiQXR0cmlidXRlIG5hbWUgbXVzdCBiZSBkZWZpbmVkLiIpO2UuYXR0cmlidXRlPW8uYXR0cmlidXRlTmFtZX1lbHNlIGUudG9rZW49b31lbHNlIGUudG9rZW49dm9pZCAwPT09dHx8QXJyYXkuaXNBcnJheSh0KSYmMD09PXQubGVuZ3RoP251bGw6dDtyZXR1cm4gZX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovKSh0KSkpfWZ1bmN0aW9uIFpyKHQpe2NvbnN0IGU9W10sbj1uZXcgTWFwO2Z1bmN0aW9uIG8oZSl7bGV0IG89bi5nZXQoZSk7aWYoIW8pe2NvbnN0IGk9dChlKTtuLnNldChlLG89aS50aGVuKFFyKSl9cmV0dXJuIG99cmV0dXJuIFhyLmZvckVhY2goKCh0LG4pPT57Y29uc3QgaT1bXTt0LnRlbXBsYXRlVXJsJiZpLnB1c2gobyh0LnRlbXBsYXRlVXJsKS50aGVuKChlPT57dC50ZW1wbGF0ZT1lfSkpKTtjb25zdCBhPXQuc3R5bGVVcmxzLHI9dC5zdHlsZXN8fCh0LnN0eWxlcz1bXSkscz10LnN0eWxlcy5sZW5ndGg7YSYmYS5mb3JFYWNoKCgoZSxuKT0+e3IucHVzaCgiIiksaS5wdXNoKG8oZSkudGhlbigobz0+e3JbcytuXT1vLGEuc3BsaWNlKGEuaW5kZXhPZihlKSwxKSwwPT1hLmxlbmd0aCYmKHQuc3R5bGVVcmxzPXZvaWQgMCl9KSkpfSkpO2NvbnN0IGw9UHJvbWlzZS5hbGwoaSkudGhlbigoKCk9PihmdW5jdGlvbiB0KGUpe0tyLmRlbGV0ZShlKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovKShuKSkpO2UucHVzaChsKX0pKSwoZnVuY3Rpb24gaSgpe2NvbnN0IHQ9WHI7cmV0dXJuIFhyPW5ldyBNYXAsdH0pKCksUHJvbWlzZS5hbGwoZSkudGhlbigoKCk9Pnt9KSl9bGV0IFhyPW5ldyBNYXA7Y29uc3QgS3I9bmV3IFNldDtmdW5jdGlvbiBKcih0KXtyZXR1cm4hISh0LnRlbXBsYXRlVXJsJiYhdC5oYXNPd25Qcm9wZXJ0eSgidGVtcGxhdGUiKXx8dC5zdHlsZVVybHMmJnQuc3R5bGVVcmxzLmxlbmd0aCl9ZnVuY3Rpb24gUXIodCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0P3Q6dC50ZXh0KCl9bGV0ICRyLHRzO2Z1bmN0aW9uIGVzKCl7aWYodm9pZCAwPT09JHImJigkcj1udWxsLFhuLnRydXN0ZWRUeXBlcykpdHJ5eyRyPVhuLnRydXN0ZWRUeXBlcy5jcmVhdGVQb2xpY3koImFuZ3VsYXIiLHtjcmVhdGVIVE1MOnQ9PnQsY3JlYXRlU2NyaXB0OnQ9PnQsY3JlYXRlU2NyaXB0VVJMOnQ9PnR9KX1jYXRjaCh0KXt9cmV0dXJuICRyfWZ1bmN0aW9uIG5zKHQpe3ZhciBlO3JldHVybihudWxsPT09KGU9ZXMoKSl8fHZvaWQgMD09PWU/dm9pZCAwOmUuY3JlYXRlSFRNTCh0KSl8fHR9ZnVuY3Rpb24gb3MoLi4udCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGUpdGhyb3cgbmV3IEVycm9yKCJuZXdUcnVzdGVkRnVuY3Rpb25Gb3JEZXYgc2hvdWxkIG5ldmVyIGJlIGNhbGxlZCBpbiBwcm9kdWN0aW9uIik7aWYoIVhuLnRydXN0ZWRUeXBlcylyZXR1cm4gbmV3IEZ1bmN0aW9uKC4uLnQpO2NvbnN0IGU9YChmdW5jdGlvbiBhbm9ueW1vdXMoJHt0LnNsaWNlKDAsLTEpLmpvaW4oIiwiKX1cbikgeyAke3RbdC5sZW5ndGgtMV19XG59KWAsbj1Ybi5ldmFsKChmdW5jdGlvbiBvKHQpe3ZhciBlO3JldHVybihudWxsPT09KGU9ZXMoKSl8fHZvaWQgMD09PWU/dm9pZCAwOmUuY3JlYXRlU2NyaXB0KHQpKXx8dH0pKGUpKTtyZXR1cm4gdm9pZCAwPT09bi5iaW5kP25ldyBGdW5jdGlvbiguLi50KToobi50b1N0cmluZz0oKT0+ZSxuLmJpbmQoWG4pKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gaXMoKXtpZih2b2lkIDA9PT10cyYmKHRzPW51bGwsWG4udHJ1c3RlZFR5cGVzKSl0cnl7dHM9WG4udHJ1c3RlZFR5cGVzLmNyZWF0ZVBvbGljeSgiYW5ndWxhciN1bnNhZmUtYnlwYXNzIix7Y3JlYXRlSFRNTDp0PT50LGNyZWF0ZVNjcmlwdDp0PT50LGNyZWF0ZVNjcmlwdFVSTDp0PT50fSl9Y2F0Y2godCl7fXJldHVybiB0c31mdW5jdGlvbiBhcyh0KXt2YXIgZTtyZXR1cm4obnVsbD09PShlPWlzKCkpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLmNyZWF0ZUhUTUwodCkpfHx0fWZ1bmN0aW9uIHJzKHQpe3ZhciBlO3JldHVybihudWxsPT09KGU9aXMoKSl8fHZvaWQgMD09PWU/dm9pZCAwOmUuY3JlYXRlU2NyaXB0KHQpKXx8dH1mdW5jdGlvbiBzcyh0KXt2YXIgZTtyZXR1cm4obnVsbD09PShlPWlzKCkpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLmNyZWF0ZVNjcmlwdFVSTCh0KSl8fHR9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIGxze2NvbnN0cnVjdG9yKHQpe3RoaXMuY2hhbmdpbmdUaGlzQnJlYWtzQXBwbGljYXRpb25TZWN1cml0eT10fXRvU3RyaW5nKCl7cmV0dXJuYFNhZmVWYWx1ZSBtdXN0IHVzZSBbcHJvcGVydHldPWJpbmRpbmc6ICR7dGhpcy5jaGFuZ2luZ1RoaXNCcmVha3NBcHBsaWNhdGlvblNlY3VyaXR5fSAoc2VlIGh0dHBzOi8vZy5jby9uZy9zZWN1cml0eSN4c3MpYH19Y2xhc3MgY3MgZXh0ZW5kcyBsc3tnZXRUeXBlTmFtZSgpe3JldHVybiJIVE1MIn19Y2xhc3MgZHMgZXh0ZW5kcyBsc3tnZXRUeXBlTmFtZSgpe3JldHVybiJTdHlsZSJ9fWNsYXNzIHBzIGV4dGVuZHMgbHN7Z2V0VHlwZU5hbWUoKXtyZXR1cm4iU2NyaXB0In19Y2xhc3MgbXMgZXh0ZW5kcyBsc3tnZXRUeXBlTmFtZSgpe3JldHVybiJVUkwifX1jbGFzcyBmcyBleHRlbmRzIGxze2dldFR5cGVOYW1lKCl7cmV0dXJuIlJlc291cmNlVVJMIn19ZnVuY3Rpb24gdXModCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBscz90LmNoYW5naW5nVGhpc0JyZWFrc0FwcGxpY2F0aW9uU2VjdXJpdHk6dH1mdW5jdGlvbiBncyh0LGUpe2NvbnN0IG49aHModCk7aWYobnVsbCE9biYmbiE9PWUpe2lmKCJSZXNvdXJjZVVSTCI9PT1uJiYiVVJMIj09PWUpcmV0dXJuITA7dGhyb3cgbmV3IEVycm9yKGBSZXF1aXJlZCBhIHNhZmUgJHtlfSwgZ290IGEgJHtufSAoc2VlIGh0dHBzOi8vZy5jby9uZy9zZWN1cml0eSN4c3MpYCl9cmV0dXJuIG49PT1lfWZ1bmN0aW9uIGhzKHQpe3JldHVybiB0IGluc3RhbmNlb2YgbHMmJnQuZ2V0VHlwZU5hbWUoKXx8bnVsbH0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmZ1bmN0aW9uIGJzKHQpe2NvbnN0IGU9bmV3IF9zKHQpO3JldHVybihmdW5jdGlvbiBuKCl7dHJ5e3JldHVybiEhKG5ldyB3aW5kb3cuRE9NUGFyc2VyKS5wYXJzZUZyb21TdHJpbmcobnMoIiIpLCJ0ZXh0L2h0bWwiKX1jYXRjaCh0KXtyZXR1cm4hMX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLykoKT9uZXcgeXMoZSk6ZX1jbGFzcyB5c3tjb25zdHJ1Y3Rvcih0KXt0aGlzLmluZXJ0RG9jdW1lbnRIZWxwZXI9dH1nZXRJbmVydEJvZHlFbGVtZW50KHQpe3Q9Ijxib2R5PjxyZW1vdmU+PC9yZW1vdmU+Iit0O3RyeXtjb25zdCBlPShuZXcgd2luZG93LkRPTVBhcnNlcikucGFyc2VGcm9tU3RyaW5nKG5zKHQpLCJ0ZXh0L2h0bWwiKS5ib2R5O3JldHVybiBudWxsPT09ZT90aGlzLmluZXJ0RG9jdW1lbnRIZWxwZXIuZ2V0SW5lcnRCb2R5RWxlbWVudCh0KTooZS5yZW1vdmVDaGlsZChlLmZpcnN0Q2hpbGQpLGUpfWNhdGNoKHQpe3JldHVybiBudWxsfX19Y2xhc3MgX3N7Y29uc3RydWN0b3IodCl7aWYodGhpcy5kZWZhdWx0RG9jPXQsdGhpcy5pbmVydERvY3VtZW50PXRoaXMuZGVmYXVsdERvYy5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoInNhbml0aXphdGlvbi1pbmVydCIpLG51bGw9PXRoaXMuaW5lcnREb2N1bWVudC5ib2R5KXtjb25zdCB0PXRoaXMuaW5lcnREb2N1bWVudC5jcmVhdGVFbGVtZW50KCJodG1sIik7dGhpcy5pbmVydERvY3VtZW50LmFwcGVuZENoaWxkKHQpO2NvbnN0IGU9dGhpcy5pbmVydERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJvZHkiKTt0LmFwcGVuZENoaWxkKGUpfX1nZXRJbmVydEJvZHlFbGVtZW50KHQpe2NvbnN0IGU9dGhpcy5pbmVydERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRlbXBsYXRlIik7aWYoImNvbnRlbnQiaW4gZSlyZXR1cm4gZS5pbm5lckhUTUw9bnModCksZTtjb25zdCBuPXRoaXMuaW5lcnREb2N1bWVudC5jcmVhdGVFbGVtZW50KCJib2R5Iik7cmV0dXJuIG4uaW5uZXJIVE1MPW5zKHQpLHRoaXMuZGVmYXVsdERvYy5kb2N1bWVudE1vZGUmJnRoaXMuc3RyaXBDdXN0b21Oc0F0dHJzKG4pLG59c3RyaXBDdXN0b21Oc0F0dHJzKHQpe2NvbnN0IGU9dC5hdHRyaWJ1dGVzO2ZvcihsZXQgbj1lLmxlbmd0aC0xOzA8bjtuLS0pe2NvbnN0IG89ZS5pdGVtKG4pLm5hbWU7InhtbG5zOm5zMSIhPT1vJiYwIT09by5pbmRleE9mKCJuczE6Iil8fHQucmVtb3ZlQXR0cmlidXRlKG8pfWxldCBuPXQuZmlyc3RDaGlsZDtmb3IoO247KW4ubm9kZVR5cGU9PT1Ob2RlLkVMRU1FTlRfTk9ERSYmdGhpcy5zdHJpcEN1c3RvbU5zQXR0cnMobiksbj1uLm5leHRTaWJsaW5nfX1jb25zdCBDcz0vXig/Oig/Omh0dHBzP3xtYWlsdG98ZnRwfHRlbHxmaWxlfHNtcyk6fFteJjovPyNdKig/OlsvPyNdfCQpKS9naSxNcz0vXmRhdGE6KD86aW1hZ2VcLyg/OmJtcHxnaWZ8anBlZ3xqcGd8cG5nfHRpZmZ8d2VicCl8dmlkZW9cLyg/Om1wZWd8bXA0fG9nZ3x3ZWJtKXxhdWRpb1wvKD86bXAzfG9nYXxvZ2d8b3B1cykpO2Jhc2U2NCxbYS16MC05K1wvXSs9KiQvaTtmdW5jdGlvbiB2cyh0KXtyZXR1cm4odD1TdHJpbmcodCkpLm1hdGNoKENzKXx8dC5tYXRjaChNcyk/dDooKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZjb25zb2xlLndhcm4oYFdBUk5JTkc6IHNhbml0aXppbmcgdW5zYWZlIFVSTCB2YWx1ZSAke3R9IChzZWUgaHR0cHM6Ly9nLmNvL25nL3NlY3VyaXR5I3hzcylgKSwidW5zYWZlOiIrdCl9ZnVuY3Rpb24geHModCl7cmV0dXJuKHQ9U3RyaW5nKHQpKS5zcGxpdCgiLCIpLm1hcCgodD0+dnModC50cmltKCkpKSkuam9pbigiLCAiKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gT3ModCl7Y29uc3QgZT17fTtmb3IoY29uc3QgbiBvZiB0LnNwbGl0KCIsIikpZVtuXT0hMDtyZXR1cm4gZX1mdW5jdGlvbiBQcyguLi50KXtjb25zdCBlPXt9O2Zvcihjb25zdCBuIG9mIHQpZm9yKGNvbnN0IHQgaW4gbiluLmhhc093blByb3BlcnR5KHQpJiYoZVt0XT0hMCk7cmV0dXJuIGV9Y29uc3Qgd3M9T3MoImFyZWEsYnIsY29sLGhyLGltZyx3YnIiKSxrcz1PcygiY29sZ3JvdXAsZGQsZHQsbGkscCx0Ym9keSx0ZCx0Zm9vdCx0aCx0aGVhZCx0ciIpLFNzPU9zKCJycCxydCIpLERzPVBzKFNzLGtzKSxScz1QcyhrcyxPcygiYWRkcmVzcyxhcnRpY2xlLGFzaWRlLGJsb2NrcXVvdGUsY2FwdGlvbixjZW50ZXIsZGVsLGRldGFpbHMsZGlhbG9nLGRpcixkaXYsZGwsZmlndXJlLGZpZ2NhcHRpb24sZm9vdGVyLGgxLGgyLGgzLGg0LGg1LGg2LGhlYWRlcixoZ3JvdXAsaHIsaW5zLG1haW4sbWFwLG1lbnUsbmF2LG9sLHByZSxzZWN0aW9uLHN1bW1hcnksdGFibGUsdWwiKSksRXM9UHMoU3MsT3MoImEsYWJicixhY3JvbnltLGF1ZGlvLGIsYmRpLGJkbyxiaWcsYnIsY2l0ZSxjb2RlLGRlbCxkZm4sZW0sZm9udCxpLGltZyxpbnMsa2JkLGxhYmVsLG1hcCxtYXJrLHBpY3R1cmUscSxydWJ5LHJwLHJ0LHMsc2FtcCxzbWFsbCxzb3VyY2Usc3BhbixzdHJpa2Usc3Ryb25nLHN1YixzdXAsdGltZSx0cmFjayx0dCx1LHZhcix2aWRlbyIpKSxBcz1Qcyh3cyxScyxFcyxEcyksVHM9T3MoImJhY2tncm91bmQsY2l0ZSxocmVmLGl0ZW10eXBlLGxvbmdkZXNjLHBvc3RlcixzcmMseGxpbms6aHJlZiIpLE5zPU9zKCJzcmNzZXQiKSx6cz1PcygiYWJicixhY2Nlc3NrZXksYWxpZ24sYWx0LGF1dG9wbGF5LGF4aXMsYmdjb2xvcixib3JkZXIsY2VsbHBhZGRpbmcsY2VsbHNwYWNpbmcsY2xhc3MsY2xlYXIsY29sb3IsY29scyxjb2xzcGFuLGNvbXBhY3QsY29udHJvbHMsY29vcmRzLGRhdGV0aW1lLGRlZmF1bHQsZGlyLGRvd25sb2FkLGZhY2UsaGVhZGVycyxoZWlnaHQsaGlkZGVuLGhyZWZsYW5nLGhzcGFjZSxpc21hcCxpdGVtc2NvcGUsaXRlbXByb3Asa2luZCxsYWJlbCxsYW5nLGxhbmd1YWdlLGxvb3AsbWVkaWEsbXV0ZWQsbm9ocmVmLG5vd3JhcCxvcGVuLHByZWxvYWQscmVsLHJldixyb2xlLHJvd3Mscm93c3BhbixydWxlcyxzY29wZSxzY3JvbGxpbmcsc2hhcGUsc2l6ZSxzaXplcyxzcGFuLHNyY2xhbmcsc3RhcnQsc3VtbWFyeSx0YWJpbmRleCx0YXJnZXQsdGl0bGUsdHJhbnNsYXRlLHR5cGUsdXNlbWFwLHZhbGlnbix2YWx1ZSx2c3BhY2Usd2lkdGgiKSxJcz1PcygiYXJpYS1hY3RpdmVkZXNjZW5kYW50LGFyaWEtYXRvbWljLGFyaWEtYXV0b2NvbXBsZXRlLGFyaWEtYnVzeSxhcmlhLWNoZWNrZWQsYXJpYS1jb2xjb3VudCxhcmlhLWNvbGluZGV4LGFyaWEtY29sc3BhbixhcmlhLWNvbnRyb2xzLGFyaWEtY3VycmVudCxhcmlhLWRlc2NyaWJlZGJ5LGFyaWEtZGV0YWlscyxhcmlhLWRpc2FibGVkLGFyaWEtZHJvcGVmZmVjdCxhcmlhLWVycm9ybWVzc2FnZSxhcmlhLWV4cGFuZGVkLGFyaWEtZmxvd3RvLGFyaWEtZ3JhYmJlZCxhcmlhLWhhc3BvcHVwLGFyaWEtaGlkZGVuLGFyaWEtaW52YWxpZCxhcmlhLWtleXNob3J0Y3V0cyxhcmlhLWxhYmVsLGFyaWEtbGFiZWxsZWRieSxhcmlhLWxldmVsLGFyaWEtbGl2ZSxhcmlhLW1vZGFsLGFyaWEtbXVsdGlsaW5lLGFyaWEtbXVsdGlzZWxlY3RhYmxlLGFyaWEtb3JpZW50YXRpb24sYXJpYS1vd25zLGFyaWEtcGxhY2Vob2xkZXIsYXJpYS1wb3NpbnNldCxhcmlhLXByZXNzZWQsYXJpYS1yZWFkb25seSxhcmlhLXJlbGV2YW50LGFyaWEtcmVxdWlyZWQsYXJpYS1yb2xlZGVzY3JpcHRpb24sYXJpYS1yb3djb3VudCxhcmlhLXJvd2luZGV4LGFyaWEtcm93c3BhbixhcmlhLXNlbGVjdGVkLGFyaWEtc2V0c2l6ZSxhcmlhLXNvcnQsYXJpYS12YWx1ZW1heCxhcmlhLXZhbHVlbWluLGFyaWEtdmFsdWVub3csYXJpYS12YWx1ZXRleHQiKSxIcz1QcyhUcyxOcyx6cyxJcyksRnM9T3MoInNjcmlwdCxzdHlsZSx0ZW1wbGF0ZSIpO2NsYXNzIExze2NvbnN0cnVjdG9yKCl7dGhpcy5zYW5pdGl6ZWRTb21ldGhpbmc9ITEsdGhpcy5idWY9W119c2FuaXRpemVDaGlsZHJlbih0KXtsZXQgZT10LmZpcnN0Q2hpbGQsbj0hMDtmb3IoO2U7KWlmKGUubm9kZVR5cGU9PT1Ob2RlLkVMRU1FTlRfTk9ERT9uPXRoaXMuc3RhcnRFbGVtZW50KGUpOmUubm9kZVR5cGU9PT1Ob2RlLlRFWFRfTk9ERT90aGlzLmNoYXJzKGUubm9kZVZhbHVlKTp0aGlzLnNhbml0aXplZFNvbWV0aGluZz0hMCxuJiZlLmZpcnN0Q2hpbGQpZT1lLmZpcnN0Q2hpbGQ7ZWxzZSBmb3IoO2U7KXtlLm5vZGVUeXBlPT09Tm9kZS5FTEVNRU5UX05PREUmJnRoaXMuZW5kRWxlbWVudChlKTtsZXQgdD10aGlzLmNoZWNrQ2xvYmJlcmVkRWxlbWVudChlLGUubmV4dFNpYmxpbmcpO2lmKHQpe2U9dDticmVha31lPXRoaXMuY2hlY2tDbG9iYmVyZWRFbGVtZW50KGUsZS5wYXJlbnROb2RlKX1yZXR1cm4gdGhpcy5idWYuam9pbigiIil9c3RhcnRFbGVtZW50KHQpe2NvbnN0IGU9dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO2lmKCFBcy5oYXNPd25Qcm9wZXJ0eShlKSlyZXR1cm4gdGhpcy5zYW5pdGl6ZWRTb21ldGhpbmc9ITAsIUZzLmhhc093blByb3BlcnR5KGUpO3RoaXMuYnVmLnB1c2goIjwiKSx0aGlzLmJ1Zi5wdXNoKGUpO2NvbnN0IG49dC5hdHRyaWJ1dGVzO2ZvcihsZXQgdD0wO3Q8bi5sZW5ndGg7dCsrKXtjb25zdCBlPW4uaXRlbSh0KSxvPWUubmFtZSxpPW8udG9Mb3dlckNhc2UoKTtpZighSHMuaGFzT3duUHJvcGVydHkoaSkpe3RoaXMuc2FuaXRpemVkU29tZXRoaW5nPSEwO2NvbnRpbnVlfWxldCBhPWUudmFsdWU7VHNbaV0mJihhPXZzKGEpKSxOc1tpXSYmKGE9eHMoYSkpLHRoaXMuYnVmLnB1c2goIiAiLG8sJz0iJyxqcyhhKSwnIicpfXJldHVybiB0aGlzLmJ1Zi5wdXNoKCI+IiksITB9ZW5kRWxlbWVudCh0KXtjb25zdCBlPXQubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtBcy5oYXNPd25Qcm9wZXJ0eShlKSYmIXdzLmhhc093blByb3BlcnR5KGUpJiYodGhpcy5idWYucHVzaCgiPC8iKSx0aGlzLmJ1Zi5wdXNoKGUpLHRoaXMuYnVmLnB1c2goIj4iKSl9Y2hhcnModCl7dGhpcy5idWYucHVzaChqcyh0KSl9Y2hlY2tDbG9iYmVyZWRFbGVtZW50KHQsZSl7aWYoZSYmKHQuY29tcGFyZURvY3VtZW50UG9zaXRpb24oZSkmTm9kZS5ET0NVTUVOVF9QT1NJVElPTl9DT05UQUlORURfQlkpPT09Tm9kZS5ET0NVTUVOVF9QT1NJVElPTl9DT05UQUlORURfQlkpdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gc2FuaXRpemUgaHRtbCBiZWNhdXNlIHRoZSBlbGVtZW50IGlzIGNsb2JiZXJlZDogJHt0Lm91dGVySFRNTH1gKTtyZXR1cm4gZX19Y29uc3QgQnM9L1tcdUQ4MDAtXHVEQkZGXVtcdURDMDAtXHVERkZGXS9nLFZzPS8oW15cIy1+IHwhXSkvZztmdW5jdGlvbiBqcyh0KXtyZXR1cm4gdC5yZXBsYWNlKC8mL2csIiZhbXA7IikucmVwbGFjZShCcywoZnVuY3Rpb24odCl7cmV0dXJuIiYjIisoMTAyNCoodC5jaGFyQ29kZUF0KDApLTU1Mjk2KSsodC5jaGFyQ29kZUF0KDEpLTU2MzIwKSs2NTUzNikrIjsifSkpLnJlcGxhY2UoVnMsKGZ1bmN0aW9uKHQpe3JldHVybiImIyIrdC5jaGFyQ29kZUF0KDApKyI7In0pKS5yZXBsYWNlKC88L2csIiZsdDsiKS5yZXBsYWNlKC8+L2csIiZndDsiKX1sZXQgVXM7ZnVuY3Rpb24gV3ModCxlKXtsZXQgbj1udWxsO3RyeXtVcz1Vc3x8YnModCk7bGV0IG89ZT9TdHJpbmcoZSk6IiI7bj1Vcy5nZXRJbmVydEJvZHlFbGVtZW50KG8pO2xldCBpPTUsYT1vO2Rve2lmKDA9PT1pKXRocm93IG5ldyBFcnJvcigiRmFpbGVkIHRvIHNhbml0aXplIGh0bWwgYmVjYXVzZSB0aGUgaW5wdXQgaXMgdW5zdGFibGUiKTtpLS0sbz1hLGE9bi5pbm5lckhUTUwsbj1Vcy5nZXRJbmVydEJvZHlFbGVtZW50KG8pfXdoaWxlKG8hPT1hKTtjb25zdCByPW5ldyBMcyxzPXIuc2FuaXRpemVDaGlsZHJlbihHcyhuKXx8bik7cmV0dXJuKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZyLnNhbml0aXplZFNvbWV0aGluZyYmY29uc29sZS53YXJuKCJXQVJOSU5HOiBzYW5pdGl6aW5nIEhUTUwgc3RyaXBwZWQgc29tZSBjb250ZW50LCBzZWUgaHR0cHM6Ly9nLmNvL25nL3NlY3VyaXR5I3hzcyIpLG5zKHMpfWZpbmFsbHl7aWYobil7Y29uc3QgdD1HcyhuKXx8bjtmb3IoO3QuZmlyc3RDaGlsZDspdC5yZW1vdmVDaGlsZCh0LmZpcnN0Q2hpbGQpfX19ZnVuY3Rpb24gR3ModCl7cmV0dXJuImNvbnRlbnQiaW4gdCYmKGZ1bmN0aW9uIGUodCl7cmV0dXJuIHQubm9kZVR5cGU9PT1Ob2RlLkVMRU1FTlRfTk9ERSYmIlRFTVBMQVRFIj09PXQubm9kZU5hbWV9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLykodCk/dC5jb250ZW50Om51bGx9dmFyIFlzOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KZnVuY3Rpb24gcXModCl7Y29uc3QgZT1lbCgpO3JldHVybiBlP2FzKGUuc2FuaXRpemUoWXMuSFRNTCx0KXx8IiIpOmdzKHQsIkhUTUwiKT9hcyh1cyh0KSk6V3MoaWkoKSxybih0KSl9ZnVuY3Rpb24gWnModCl7Y29uc3QgZT1lbCgpO3JldHVybiBlP2Uuc2FuaXRpemUoWXMuU1RZTEUsdCl8fCIiOmdzKHQsIlN0eWxlIik/dXModCk6cm4odCl9ZnVuY3Rpb24gWHModCl7Y29uc3QgZT1lbCgpO3JldHVybiBlP2Uuc2FuaXRpemUoWXMuVVJMLHQpfHwiIjpncyh0LCJVUkwiKT91cyh0KTp2cyhybih0KSl9ZnVuY3Rpb24gS3ModCl7Y29uc3QgZT1lbCgpO2lmKGUpcmV0dXJuIHNzKGUuc2FuaXRpemUoWXMuUkVTT1VSQ0VfVVJMLHQpfHwiIik7aWYoZ3ModCwiUmVzb3VyY2VVUkwiKSlyZXR1cm4gc3ModXModCkpO3Rocm93IG5ldyBFcnJvcigidW5zYWZlIHZhbHVlIHVzZWQgaW4gYSByZXNvdXJjZSBVUkwgY29udGV4dCAoc2VlIGh0dHBzOi8vZy5jby9uZy9zZWN1cml0eSN4c3MpIil9ZnVuY3Rpb24gSnModCl7Y29uc3QgZT1lbCgpO2lmKGUpcmV0dXJuIHJzKGUuc2FuaXRpemUoWXMuU0NSSVBULHQpfHwiIik7aWYoZ3ModCwiU2NyaXB0IikpcmV0dXJuIHJzKHVzKHQpKTt0aHJvdyBuZXcgRXJyb3IoInVuc2FmZSB2YWx1ZSB1c2VkIGluIGEgc2NyaXB0IGNvbnRleHQiKX1mdW5jdGlvbiBRcyh0KXtpZihuZ0Rldk1vZGUmJighQXJyYXkuaXNBcnJheSh0KXx8IUFycmF5LmlzQXJyYXkodC5yYXcpfHwxIT09dC5sZW5ndGgpKXRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCBpbnRlcnBvbGF0aW9uIGluIHRydXN0ZWQgSFRNTCBjb25zdGFudDogJHt0LmpvaW4oIj8iKX1gKTtyZXR1cm4gbnModFswXSl9ZnVuY3Rpb24gJHModCl7aWYobmdEZXZNb2RlJiYoIUFycmF5LmlzQXJyYXkodCl8fCFBcnJheS5pc0FycmF5KHQucmF3KXx8MSE9PXQubGVuZ3RoKSl0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgaW50ZXJwb2xhdGlvbiBpbiB0cnVzdGVkIFVSTCBjb25zdGFudDogJHt0LmpvaW4oIj8iKX1gKTtyZXR1cm4oZnVuY3Rpb24gZSh0KXt2YXIgZTtyZXR1cm4obnVsbD09PShlPWVzKCkpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLmNyZWF0ZVNjcmlwdFVSTCh0KSl8fHR9KSh0WzBdKX1mdW5jdGlvbiB0bCh0LGUsbil7cmV0dXJuKGZ1bmN0aW9uIG8odCxlKXtyZXR1cm4ic3JjIj09PWUmJigiZW1iZWQiPT09dHx8ImZyYW1lIj09PXR8fCJpZnJhbWUiPT09dHx8Im1lZGlhIj09PXR8fCJzY3JpcHQiPT09dCl8fCJocmVmIj09PWUmJigiYmFzZSI9PT10fHwibGluayI9PT10KT9LczpYc30pKGUsbikodCl9ZnVuY3Rpb24gZWwoKXtjb25zdCB0PXhpKCk7cmV0dXJuIHQmJnRbMTJdfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBubCh0KXtsZXQgZT1ybCh0KTtpZihlKXtpZihBcnJheS5pc0FycmF5KGUpKXtjb25zdCBuPWU7bGV0IG8saSxhO2lmKChmdW5jdGlvbiBuKHQpe3JldHVybiB0JiZ0LmNvbnN0cnVjdG9yJiZ0LmNvbnN0cnVjdG9yLsm1Y21wfSkodCkpe2lmKG89ZGwobix0KSwtMT09byl0aHJvdyBuZXcgRXJyb3IoIlRoZSBwcm92aWRlZCBjb21wb25lbnQgd2FzIG5vdCBmb3VuZCBpbiB0aGUgYXBwbGljYXRpb24iKTtpPXR9ZWxzZSBpZigoZnVuY3Rpb24gbyh0KXtyZXR1cm4gdCYmdC5jb25zdHJ1Y3RvciYmdC5jb25zdHJ1Y3Rvci7JtWRpcn0pKHQpKXtpZihvPShmdW5jdGlvbiBpKHQsZSl7bGV0IG49dFsxXS5maXJzdENoaWxkO2Zvcig7bjspe2NvbnN0IG89bi5kaXJlY3RpdmVFbmQ7Zm9yKGxldCBpPW4uZGlyZWN0aXZlU3RhcnQ7aTxvO2krKylpZih0W2ldPT09ZSlyZXR1cm4gbi5pbmRleDtuPWNsKG4pfXJldHVybi0xfSkobix0KSwtMT09byl0aHJvdyBuZXcgRXJyb3IoIlRoZSBwcm92aWRlZCBkaXJlY3RpdmUgd2FzIG5vdCBmb3VuZCBpbiB0aGUgYXBwbGljYXRpb24iKTthPXBsKG8sbiwhMSl9ZWxzZSBpZihvPWxsKG4sdCksLTE9PW8pcmV0dXJuIG51bGw7Y29uc3Qgcj1saShuW29dKSxzPXJsKHIpLGw9cyYmIUFycmF5LmlzQXJyYXkocyk/czpvbChuLG8scik7aWYoaSYmdm9pZCAwPT09bC5jb21wb25lbnQmJihsLmNvbXBvbmVudD1pLGFsKGwuY29tcG9uZW50LGwpKSxhJiZ2b2lkIDA9PT1sLmRpcmVjdGl2ZXMpe2wuZGlyZWN0aXZlcz1hO2ZvcihsZXQgdD0wO3Q8YS5sZW5ndGg7dCsrKWFsKGFbdF0sbCl9YWwobC5uYXRpdmUsbCksZT1sfX1lbHNle2NvbnN0IG49dDtuZ0Rldk1vZGUmJlBuKG4pO2xldCBvPW47Zm9yKDtvPW8ucGFyZW50Tm9kZTspe2NvbnN0IHQ9cmwobyk7aWYodCl7bGV0IG87aWYobz1BcnJheS5pc0FycmF5KHQpP3Q6dC5sVmlldywhbylyZXR1cm4gbnVsbDtjb25zdCBpPWxsKG8sbik7aWYoaT49MCl7Y29uc3QgdD1saShvW2ldKSxuPW9sKG8saSx0KTthbCh0LG4pLGU9bjticmVha319fX1yZXR1cm4gZXx8bnVsbH1mdW5jdGlvbiBvbCh0LGUsbil7cmV0dXJue2xWaWV3OnQsbm9kZUluZGV4OmUsbmF0aXZlOm4sY29tcG9uZW50OnZvaWQgMCxkaXJlY3RpdmVzOnZvaWQgMCxsb2NhbFJlZnM6dm9pZCAwfX1mdW5jdGlvbiBpbCh0KXtsZXQgZSxuPXJsKHQpO2lmKEFycmF5LmlzQXJyYXkobikpe2NvbnN0IG89ZGwobix0KTtlPWZpKG8sbik7Y29uc3QgaT1vbChuLG8sZVswXSk7aS5jb21wb25lbnQ9dCxhbCh0LGkpLGFsKGkubmF0aXZlLGkpfWVsc2V7ZT1maShuLm5vZGVJbmRleCxuLmxWaWV3KX1yZXR1cm4gZX0hKGZ1bmN0aW9uKHQpe3RbdC5OT05FPTBdPSJOT05FIix0W3QuSFRNTD0xXT0iSFRNTCIsdFt0LlNUWUxFPTJdPSJTVFlMRSIsdFt0LlNDUklQVD0zXT0iU0NSSVBUIix0W3QuVVJMPTRdPSJVUkwiLHRbdC5SRVNPVVJDRV9VUkw9NV09IlJFU09VUkNFX1VSTCJ9KShZc3x8KFlzPXt9KSk7ZnVuY3Rpb24gYWwodCxlKXtuZ0Rldk1vZGUmJnhuKHQsIlRhcmdldCBleHBlY3RlZCIpLHQuX19uZ0NvbnRleHRfXz1lfWZ1bmN0aW9uIHJsKHQpe3JldHVybiBuZ0Rldk1vZGUmJnhuKHQsIlRhcmdldCBleHBlY3RlZCIpLHQuX19uZ0NvbnRleHRfX3x8bnVsbH1mdW5jdGlvbiBzbCh0KXtjb25zdCBlPXJsKHQpO3JldHVybiBlP0FycmF5LmlzQXJyYXkoZSk/ZTplLmxWaWV3Om51bGx9ZnVuY3Rpb24gbGwodCxlKXtjb25zdCBuPXRbMV07Zm9yKGxldCBvPXZvO288bi5iaW5kaW5nU3RhcnRJbmRleDtvKyspaWYobGkodFtvXSk9PT1lKXJldHVybiBvO3JldHVybi0xfWZ1bmN0aW9uIGNsKHQpe2lmKHQuY2hpbGQpcmV0dXJuIHQuY2hpbGQ7aWYodC5uZXh0KXJldHVybiB0Lm5leHQ7Zm9yKDt0LnBhcmVudCYmIXQucGFyZW50Lm5leHQ7KXQ9dC5wYXJlbnQ7cmV0dXJuIHQucGFyZW50JiZ0LnBhcmVudC5uZXh0fWZ1bmN0aW9uIGRsKHQsZSl7Y29uc3Qgbj10WzFdLmNvbXBvbmVudHM7aWYobilmb3IobGV0IG89MDtvPG4ubGVuZ3RoO28rKyl7Y29uc3QgaT1uW29dO2lmKGZpKGksdClbOF09PT1lKXJldHVybiBpfWVsc2V7aWYoZmkodm8sdClbOF09PT1lKXJldHVybiB2b31yZXR1cm4tMX1mdW5jdGlvbiBwbCh0LGUsbil7Y29uc3Qgbz1lWzFdLmRhdGFbdF07bGV0IGk9by5kaXJlY3RpdmVTdGFydDtpZigwPT1pKXJldHVybiBRbjtyZXR1cm4hbiYmMiZvLmZsYWdzJiZpKyssZS5zbGljZShpLG8uZGlyZWN0aXZlRW5kKX1mdW5jdGlvbiBtbCh0KXtyZXR1cm4gdC5uZ09yaWdpbmFsRXJyb3J9ZnVuY3Rpb24gZmwodCwuLi5lKXt0LmVycm9yKC4uLmUpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyB1bHtjb25zdHJ1Y3Rvcigpe3RoaXMuX2NvbnNvbGU9Y29uc29sZX1oYW5kbGVFcnJvcih0KXtjb25zdCBlPXRoaXMuX2ZpbmRPcmlnaW5hbEVycm9yKHQpLG49dGhpcy5fZmluZENvbnRleHQodCksbz0oZnVuY3Rpb24gaSh0KXtyZXR1cm4gdCYmdC5uZ0Vycm9yTG9nZ2VyfHxmbH0pKHQpO28odGhpcy5fY29uc29sZSwiRVJST1IiLHQpLGUmJm8odGhpcy5fY29uc29sZSwiT1JJR0lOQUwgRVJST1IiLGUpLG4mJm8odGhpcy5fY29uc29sZSwiRVJST1IgQ09OVEVYVCIsbil9X2ZpbmRDb250ZXh0KHQpe3JldHVybiB0PyhmdW5jdGlvbiBlKHQpe3JldHVybiB0Lm5nRGVidWdDb250ZXh0fSkodCl8fHRoaXMuX2ZpbmRDb250ZXh0KG1sKHQpKTpudWxsfV9maW5kT3JpZ2luYWxFcnJvcih0KXtsZXQgZT10JiZtbCh0KTtmb3IoO2UmJm1sKGUpOyllPW1sKGUpO3JldHVybiBlfHxudWxsfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3QgZ2w9e25hbWU6ImN1c3RvbS1lbGVtZW50cyJ9LGhsPXtuYW1lOiJuby1lcnJvcnMtc2NoZW1hIn0sYmw9L14+fF4tPnw8IS0tfC0tPnwtLSE+fDwhLSQvZyx5bD0vKDx8PikvO2Z1bmN0aW9uIF9sKHQpe3JldHVybiB0LnJlcGxhY2UoYmwsKHQ9PnQucmVwbGFjZSh5bCwi4oCLJDHigIsiKSkpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBDbCh0KXtpZighbmdEZXZNb2RlKXRocm93IG5ldyBFcnJvcigiTG9va3MgbGlrZSB3ZSBhcmUgaW4gJ3Byb2QgbW9kZScsIGJ1dCB3ZSBhcmUgY3JlYXRpbmcgYSBuYW1lZCBBcnJheSB0eXBlLCB3aGljaCBpcyB3cm9uZyEgQ2hlY2sgeW91ciBjb2RlIik7dHJ5e3JldHVybiBvcygiQXJyYXkiLGByZXR1cm4gY2xhc3MgJHt0fSBleHRlbmRzIEFycmF5e31gKShBcnJheSl9Y2F0Y2godCl7cmV0dXJuIEFycmF5fX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gTWwodCl7cmV0dXJuYG5nLXJlZmxlY3QtJHt0PShmdW5jdGlvbiBlKHQpe3JldHVybiB0LnJlcGxhY2UodmwsKCguLi50KT0+Ii0iK3RbMV0udG9Mb3dlckNhc2UoKSkpfSkodC5yZXBsYWNlKC9bJEBdL2csIl8iKSl9YH1jb25zdCB2bD0vKFtBLVpdKS9nOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgeGw9KCJ1bmRlZmluZWQiIT10eXBlb2YgcmVxdWVzdEFuaW1hdGlvbkZyYW1lJiZyZXF1ZXN0QW5pbWF0aW9uRnJhbWV8fHNldFRpbWVvdXQpLmJpbmQoWG4pO2Z1bmN0aW9uIE9sKHQpe3JldHVybiB0Lm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXd9ZnVuY3Rpb24gUGwodCl7cmV0dXJuIHQub3duZXJEb2N1bWVudH1mdW5jdGlvbiB3bCh0KXtyZXR1cm4gdC5vd25lckRvY3VtZW50LmJvZHl9Y29uc3Qga2w9Iu+/vSI7ZnVuY3Rpb24gU2wodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBGdW5jdGlvbj90KCk6dH0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gRGwodCl7dGhyb3cgbmV3IG5uKCIzMDAiLGBNdWx0aXBsZSBjb21wb25lbnRzIG1hdGNoIG5vZGUgd2l0aCB0YWduYW1lICR7dC52YWx1ZX1gKX1mdW5jdGlvbiBSbCh0LGUsbixvLGkpe2NvbnN0W2EsciwuLi5zXT1vLnNwbGl0KGtsKTtsZXQgbD1yLGM9cjtmb3IobGV0IG89MDtvPHMubGVuZ3RoO28rKyl7Y29uc3QgYT1lK287bCs9YCR7dFthXX0ke3Nbb119YCxjKz1gJHthPT09bj9pOnRbYV19JHtzW29dfWB9cmV0dXJue3Byb3BOYW1lOmEsb2xkVmFsdWU6bCxuZXdWYWx1ZTpjfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCnZhciBFbDsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmxldCBBbDtmdW5jdGlvbiBUbCh0LGUpe3JldHVybiBBbCh0LGUpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KZnVuY3Rpb24gTmwodCl7bmdEZXZNb2RlJiZGbyh0KTtjb25zdCBlPXRbM107cmV0dXJuIHdvKGUpP2VbM106ZX1mdW5jdGlvbiB6bCh0KXtjb25zdCBlPShmdW5jdGlvbiBuKHQpe25nRGV2TW9kZSYmeG4odCwiY29tcG9uZW50Iik7bGV0IGU9UG8odCk/dDpzbCh0KTtmb3IoO2UmJiEoNTEyJmVbMl0pOyllPU5sKGUpO3JldHVybiBuZ0Rldk1vZGUmJkZvKGUpLGV9KSh0KTtyZXR1cm4gbmdEZXZNb2RlJiZ4bihlWzhdLCJSb290VmlldyBoYXMgbm8gY29udGV4dC4gUGVyaGFwcyBpdCBpcyBkaXNjb25uZWN0ZWQ/IiksZVs4XX1mdW5jdGlvbiBJbCh0KXtyZXR1cm4gRmwodFsxM10pfWZ1bmN0aW9uIEhsKHQpe3JldHVybiBGbCh0WzRdKX1mdW5jdGlvbiBGbCh0KXtmb3IoO251bGwhPT10JiYhd28odCk7KXQ9dFs0XTtyZXR1cm4gdH1mdW5jdGlvbiBMbCh0LGUsbixvLGkpe2lmKG51bGwhPW8pe2xldCBhLHI9ITE7d28obyk/YT1vOlBvKG8pJiYocj0hMCxuZ0Rldk1vZGUmJnhuKG9bMF0sIkhPU1QgbXVzdCBiZSBkZWZpbmVkIGZvciBhIGNvbXBvbmVudCBMVmlldyIpLG89b1swXSk7Y29uc3Qgcz1saShvKTtuZ0Rldk1vZGUmJiFyaShlKSYmUG4ocyksMD09PXQmJm51bGwhPT1uP251bGw9PWk/UWwoZSxuLHMpOkpsKGUsbixzLGl8fG51bGwsITApOjE9PT10JiZudWxsIT09bj9KbChlLG4scyxpfHxudWxsLCEwKToyPT09dD9kYyhlLHMscik6Mz09PXQmJihuZ0Rldk1vZGUmJm5nRGV2TW9kZS5yZW5kZXJlckRlc3Ryb3lOb2RlKyssZS5kZXN0cm95Tm9kZShzKSksbnVsbCE9YSYmKGZ1bmN0aW9uIGEodCxlLG4sbyxpKXtuZ0Rldk1vZGUmJklvKG4pO2NvbnN0IGE9bls3XSxyPWxpKG4pO2EhPT1yJiZMbChlLHQsbyxhLGkpO2ZvcihsZXQgaT1PbztpPG4ubGVuZ3RoO2krKyl7Y29uc3Qgcj1uW2ldO21jKHJbMV0scix0LGUsbyxhKX19KShlLHQsYSxuLGkpfX1mdW5jdGlvbiBCbCh0LGUpe3JldHVybiBuZ0Rldk1vZGUmJm5nRGV2TW9kZS5yZW5kZXJlckNyZWF0ZVRleHROb2RlKyssbmdEZXZNb2RlJiZuZ0Rldk1vZGUucmVuZGVyZXJTZXRUZXh0KysscmkodCk/dC5jcmVhdGVUZXh0KGUpOnQuY3JlYXRlVGV4dE5vZGUoZSl9ZnVuY3Rpb24gVmwodCxlLG4pe25nRGV2TW9kZSYmbmdEZXZNb2RlLnJlbmRlcmVyU2V0VGV4dCsrLHJpKHQpP3Quc2V0VmFsdWUoZSxuKTplLnRleHRDb250ZW50PW59ZnVuY3Rpb24gamwodCxlKXtyZXR1cm4gbmdEZXZNb2RlJiZuZ0Rldk1vZGUucmVuZGVyZXJDcmVhdGVDb21tZW50KyssdC5jcmVhdGVDb21tZW50KF9sKGUpKX1mdW5jdGlvbiBVbCh0LGUsbil7cmV0dXJuIG5nRGV2TW9kZSYmbmdEZXZNb2RlLnJlbmRlcmVyQ3JlYXRlRWxlbWVudCsrLHJpKHQpP3QuY3JlYXRlRWxlbWVudChlLG4pOm51bGw9PT1uP3QuY3JlYXRlRWxlbWVudChlKTp0LmNyZWF0ZUVsZW1lbnROUyhuLGUpfWZ1bmN0aW9uIFdsKHQsZSxuLG8pe25nRGV2TW9kZSYmRm8oZSksbmdEZXZNb2RlJiZJbyhuKTtjb25zdCBpPU9vK28sYT1uLmxlbmd0aDtvPjAmJihuW2ktMV1bNF09ZSksbzxhLU9vPyhlWzRdPW5baV0sZnIobixPbytvLGUpKToobi5wdXNoKGUpLGVbNF09bnVsbCksZVszXT1uO2NvbnN0IHI9ZVsxN107bnVsbCE9PXImJm4hPT1yJiYoZnVuY3Rpb24gcyh0LGUpe25nRGV2TW9kZSYmeG4oZSwiTFZpZXcgcmVxdWlyZWQiKSxuZ0Rldk1vZGUmJklvKHQpO2NvbnN0IG49dFs5XSxvPWVbM107bmdEZXZNb2RlJiZJbyhvKTtjb25zdCBpPW9bM11bMTZdO25nRGV2TW9kZSYmeG4oaSwiTWlzc2luZyBpbnNlcnRlZENvbXBvbmVudExWaWV3Iik7Y29uc3QgYT1lWzE2XTtuZ0Rldk1vZGUmJnhuKGEsIk1pc3NpbmcgZGVjbGFyZWRDb21wb25lbnRMVmlldyIpLGEhPT1pJiYodFsyXT0hMCk7bnVsbD09PW4/dFs5XT1bZV06bi5wdXNoKGUpfSkocixlKTtjb25zdCBsPWVbMTldO251bGwhPT1sJiZsLmluc2VydFZpZXcodCksZVsyXXw9MTI4fWZ1bmN0aW9uIEdsKHQsZSl7bmdEZXZNb2RlJiZJbyh0KSxuZ0Rldk1vZGUmJnhuKHRbOV0sIkEgcHJvamVjdGVkIHZpZXcgc2hvdWxkIGJlbG9uZyB0byBhIG5vbi1lbXB0eSBwcm9qZWN0ZWQgdmlld3MgY29sbGVjdGlvbiIpO2NvbnN0IG49dFs5XSxvPW4uaW5kZXhPZihlKSxpPWVbM107bmdEZXZNb2RlJiZJbyhpKSwxMDI0JmVbMl0mJihlWzJdJj0tMTAyNSx5aShpLC0xKSksbi5zcGxpY2UobywxKX1mdW5jdGlvbiBZbCh0LGUpe2lmKHQubGVuZ3RoPD1PbylyZXR1cm47Y29uc3Qgbj1PbytlLG89dFtuXTtpZihvKXtjb25zdCBpPW9bMTddO251bGwhPT1pJiZpIT09dCYmR2woaSxvKSxlPjAmJih0W24tMV1bNF09b1s0XSk7Y29uc3QgYT11cih0LE9vK2UpOyEoZnVuY3Rpb24gaSh0LGUpe21jKHQsZSxlWzExXSwyLG51bGwsbnVsbCksZVswXT1udWxsLGVbNl09bnVsbH0pKG9bMV0sbyk7Y29uc3Qgcj1hWzE5XTtudWxsIT09ciYmci5kZXRhY2hWaWV3KGFbMV0pLG9bM109bnVsbCxvWzRdPW51bGwsb1syXSY9LTEyOX1yZXR1cm4gb31mdW5jdGlvbiBxbCh0LGUpe2lmKCEoMjU2JmVbMl0pKXtjb25zdCBuPWVbMTFdO3JpKG4pJiZuLmRlc3Ryb3lOb2RlJiZtYyh0LGUsbiwzLG51bGwsbnVsbCksKGZ1bmN0aW9uIG4odCl7bGV0IGU9dFsxM107aWYoIWUpcmV0dXJuIFpsKHRbMV0sdCk7Zm9yKDtlOyl7bGV0IG49bnVsbDtpZihQbyhlKSluPWVbMTNdO2Vsc2V7bmdEZXZNb2RlJiZJbyhlKTtjb25zdCB0PWVbMTBdO3QmJihuPXQpfWlmKCFuKXtmb3IoO2UmJiFlWzRdJiZlIT09dDspUG8oZSkmJlpsKGVbMV0sZSksZT1lWzNdO251bGw9PT1lJiYoZT10KSxQbyhlKSYmWmwoZVsxXSxlKSxuPWUmJmVbNF19ZT1ufX0pKGUpfX1mdW5jdGlvbiBabCh0LGUpe2lmKCEoMjU2JmVbMl0pKXtlWzJdJj0tMTI5LGVbMl18PTI1NiwoZnVuY3Rpb24gbih0LGUpe2xldCBuO2lmKG51bGwhPXQmJm51bGwhPShuPXQuZGVzdHJveUhvb2tzKSlmb3IobGV0IHQ9MDt0PG4ubGVuZ3RoO3QrPTIpe2NvbnN0IG89ZVtuW3RdXTtpZighKG8gaW5zdGFuY2VvZiBmYSkpe2NvbnN0IGU9blt0KzFdO2lmKEFycmF5LmlzQXJyYXkoZSkpZm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0Kz0yKXtjb25zdCBuPW9bZVt0XV0saT1lW3QrMV07dGkoNCxuLGkpO3RyeXtpLmNhbGwobil9ZmluYWxseXt0aSg1LG4saSl9fWVsc2V7dGkoNCxvLGUpO3RyeXtlLmNhbGwobyl9ZmluYWxseXt0aSg1LG8sZSl9fX19fSkodCxlKSwoZnVuY3Rpb24gbyh0LGUpe2NvbnN0IG49dC5jbGVhbnVwLG89ZVs3XTtsZXQgaT0tMTtpZihudWxsIT09bilmb3IobGV0IHQ9MDt0PG4ubGVuZ3RoLTE7dCs9MilpZigic3RyaW5nIj09dHlwZW9mIG5bdF0pe2NvbnN0IGE9blt0KzFdLHI9ImZ1bmN0aW9uIj09dHlwZW9mIGE/YShlKTpsaShlW2FdKSxzPW9baT1uW3QrMl1dLGw9blt0KzNdOyJib29sZWFuIj09dHlwZW9mIGw/ci5yZW1vdmVFdmVudExpc3RlbmVyKG5bdF0scyxsKTpsPj0wP29baT1sXSgpOm9baT0tbF0udW5zdWJzY3JpYmUoKSx0Kz0yfWVsc2V7Y29uc3QgZT1vW2k9blt0KzFdXTtuW3RdLmNhbGwoZSl9aWYobnVsbCE9PW8pe2ZvcihsZXQgdD1pKzE7dDxvLmxlbmd0aDt0Kyspe2NvbnN0IGU9b1t0XTtuZ0Rldk1vZGUmJnVuKGUsIkV4cGVjdGluZyBpbnN0YW5jZSBjbGVhbnVwIGZ1bmN0aW9uLiIpLGUoKX1lWzddPW51bGx9fSkodCxlKSwxPT09ZVsxXS50eXBlJiZyaShlWzExXSkmJihuZ0Rldk1vZGUmJm5nRGV2TW9kZS5yZW5kZXJlckRlc3Ryb3krKyxlWzExXS5kZXN0cm95KCkpO2NvbnN0IG49ZVsxN107aWYobnVsbCE9PW4mJndvKGVbM10pKXtuIT09ZVszXSYmR2wobixlKTtjb25zdCBvPWVbMTldO251bGwhPT1vJiZvLmRldGFjaFZpZXcodCl9fX1mdW5jdGlvbiBYbCh0LGUsbil7cmV0dXJuIEtsKHQsZS5wYXJlbnQsbil9ZnVuY3Rpb24gS2wodCxlLG4pe2xldCBvPWU7Zm9yKDtudWxsIT09byYmNDAmby50eXBlOylvPShlPW8pLnBhcmVudDtpZihudWxsPT09bylyZXR1cm4gblswXTtpZihuZ0Rldk1vZGUmJmdhKG8sNyksMiZvLmZsYWdzKXtuZ0Rldk1vZGUmJkVvKG8sbik7Y29uc3QgZT10LmRhdGFbby5kaXJlY3RpdmVTdGFydF0uZW5jYXBzdWxhdGlvbjtpZihlPT09V24uTm9uZXx8ZT09PVduLkVtdWxhdGVkKXJldHVybiBudWxsfXJldHVybiBkaShvLG4pfWZ1bmN0aW9uIEpsKHQsZSxuLG8saSl7bmdEZXZNb2RlJiZuZ0Rldk1vZGUucmVuZGVyZXJJbnNlcnRCZWZvcmUrKyxyaSh0KT90Lmluc2VydEJlZm9yZShlLG4sbyxpKTplLmluc2VydEJlZm9yZShuLG8saSl9ZnVuY3Rpb24gUWwodCxlLG4pe25nRGV2TW9kZSYmbmdEZXZNb2RlLnJlbmRlcmVyQXBwZW5kQ2hpbGQrKyxuZ0Rldk1vZGUmJnhuKGUsInBhcmVudCBub2RlIG11c3QgYmUgZGVmaW5lZCIpLHJpKHQpP3QuYXBwZW5kQ2hpbGQoZSxuKTplLmFwcGVuZENoaWxkKG4pfWZ1bmN0aW9uICRsKHQsZSxuLG8saSl7bnVsbCE9PW8/SmwodCxlLG4sbyxpKTpRbCh0LGUsbil9ZnVuY3Rpb24gdGModCxlKXtyZXR1cm4gcmkodCk/dC5wYXJlbnROb2RlKGUpOmUucGFyZW50Tm9kZX1mdW5jdGlvbiBlYyh0LGUsbil7cmV0dXJuIGljKHQsZSxuKX1mdW5jdGlvbiBuYyh0LGUsbil7cmV0dXJuIDQwJnQudHlwZT9kaSh0LG4pOm51bGx9IShmdW5jdGlvbih0KXt0W3QuSW1wb3J0YW50PTFdPSJJbXBvcnRhbnQiLHRbdC5EYXNoQ2FzZT0yXT0iRGFzaENhc2UifSkoRWx8fChFbD17fSkpO2xldCBvYyxpYz1uYztmdW5jdGlvbiBhYyh0LGUpe2ljPXQsb2M9ZX1mdW5jdGlvbiByYyh0LGUsbixvKXtjb25zdCBpPVhsKHQsbyxlKSxhPWVbMTFdLHI9ZWMoby5wYXJlbnR8fGVbNl0sbyxlKTtpZihudWxsIT1pKWlmKEFycmF5LmlzQXJyYXkobikpZm9yKGxldCB0PTA7dDxuLmxlbmd0aDt0KyspJGwoYSxpLG5bdF0sciwhMSk7ZWxzZSAkbChhLGksbixyLCExKTt2b2lkIDAhPT1vYyYmb2MoYSxvLGUsbixpKX1mdW5jdGlvbiBzYyh0LGUpe2lmKG51bGwhPT1lKXtuZ0Rldk1vZGUmJmdhKGUsNjMpO2NvbnN0IG49ZS50eXBlO2lmKDMmbilyZXR1cm4gZGkoZSx0KTtpZig0Jm4pcmV0dXJuIGNjKC0xLHRbZS5pbmRleF0pO2lmKDgmbil7Y29uc3Qgbj1lLmNoaWxkO2lmKG51bGwhPT1uKXJldHVybiBzYyh0LG4pO3tjb25zdCBuPXRbZS5pbmRleF07cmV0dXJuIHdvKG4pP2NjKC0xLG4pOmxpKG4pfX1pZigzMiZuKXtyZXR1cm4gVGwoZSx0KSgpfHxsaSh0W2UuaW5kZXhdKX17Y29uc3Qgbj1sYyh0LGUpO2lmKG51bGwhPT1uKXtpZihBcnJheS5pc0FycmF5KG4pKXJldHVybiBuWzBdO2NvbnN0IGU9TmwodFsxNl0pO3JldHVybiBuZ0Rldk1vZGUmJlVvKGUpLHNjKGUsbil9cmV0dXJuIHNjKHQsZS5uZXh0KX19cmV0dXJuIG51bGx9ZnVuY3Rpb24gbGModCxlKXtpZihudWxsIT09ZSl7Y29uc3Qgbj10WzE2XVs2XSxvPWUucHJvamVjdGlvbjtyZXR1cm4gbmdEZXZNb2RlJiYoZnVuY3Rpb24gbih0LGUpe3huKHRbMTZdLCJDb21wb25lbnQgdmlld3Mgc2hvdWxkIGV4aXN0LiIpLHhuKHRbMTZdWzZdLnByb2plY3Rpb24sZXx8IkNvbXBvbmVudHMgd2l0aCBwcm9qZWN0aW9uIG5vZGVzICg8bmctY29udGVudD4pIG11c3QgaGF2ZSBwcm9qZWN0aW9uIHNsb3RzIGRlZmluZWQuIil9KSh0KSxuLnByb2plY3Rpb25bb119cmV0dXJuIG51bGx9ZnVuY3Rpb24gY2ModCxlKXtjb25zdCBuPU9vK3QrMTtpZihuPGUubGVuZ3RoKXtjb25zdCB0PWVbbl0sbz10WzFdLmZpcnN0Q2hpbGQ7aWYobnVsbCE9PW8pcmV0dXJuIHNjKHQsbyl9cmV0dXJuIGVbN119ZnVuY3Rpb24gZGModCxlLG4pe25nRGV2TW9kZSYmbmdEZXZNb2RlLnJlbmRlcmVyUmVtb3ZlTm9kZSsrO2NvbnN0IG89dGModCxlKTtvJiYoZnVuY3Rpb24gaSh0LGUsbixvKXtyaSh0KT90LnJlbW92ZUNoaWxkKGUsbixvKTplLnJlbW92ZUNoaWxkKG4pfSkodCxvLGUsbil9ZnVuY3Rpb24gcGModCxlLG4sbyxpLGEscil7Zm9yKDtudWxsIT1uOyl7bmdEZXZNb2RlJiZFbyhuLG8pLG5nRGV2TW9kZSYmZ2Eobiw2Myk7Y29uc3Qgcz1vW24uaW5kZXhdLGw9bi50eXBlO2lmKHImJjA9PT1lJiYocyYmYWwobGkocyksbyksbi5mbGFnc3w9NCksNjQhPSg2NCZuLmZsYWdzKSlpZig4JmwpcGModCxlLG4uY2hpbGQsbyxpLGEsITEpLExsKGUsdCxpLHMsYSk7ZWxzZSBpZigzMiZsKXtjb25zdCByPVRsKG4sbyk7bGV0IGw7Zm9yKDtsPXIoKTspTGwoZSx0LGksbCxhKTtMbChlLHQsaSxzLGEpfWVsc2UgMTYmbD9mYyh0LGUsbyxuLGksYSk6KG5nRGV2TW9kZSYmZ2Eobiw3KSxMbChlLHQsaSxzLGEpKTtuPXI/bi5wcm9qZWN0aW9uTmV4dDpuLm5leHR9fWZ1bmN0aW9uIG1jKHQsZSxuLG8saSxhKXtwYyhuLG8sdC5maXJzdENoaWxkLGUsaSxhLCExKX1mdW5jdGlvbiBmYyh0LGUsbixvLGksYSl7Y29uc3Qgcj1uWzE2XSxzPXJbNl07bmdEZXZNb2RlJiZnbih0eXBlb2Ygby5wcm9qZWN0aW9uLCJudW1iZXIiLCJleHBlY3RpbmcgcHJvamVjdGlvbiBpbmRleCIpO2NvbnN0IGw9cy5wcm9qZWN0aW9uW28ucHJvamVjdGlvbl07aWYoQXJyYXkuaXNBcnJheShsKSlmb3IobGV0IG49MDtuPGwubGVuZ3RoO24rKyl7TGwoZSx0LGksbFtuXSxhKX1lbHNle3BjKHQsZSxsLHJbM10saSxhLCEwKX19ZnVuY3Rpb24gdWModCxlLG4pe25nRGV2TW9kZSYmZm4obiwiJ25ld1ZhbHVlJyBzaG91bGQgYmUgYSBzdHJpbmciKSxyaSh0KT90LnNldEF0dHJpYnV0ZShlLCJzdHlsZSIsbik6ZS5zdHlsZS5jc3NUZXh0PW4sbmdEZXZNb2RlJiZuZ0Rldk1vZGUucmVuZGVyZXJTZXRTdHlsZSsrfWZ1bmN0aW9uIGdjKHQsZSxuKXtuZ0Rldk1vZGUmJmZuKG4sIiduZXdWYWx1ZScgc2hvdWxkIGJlIGEgc3RyaW5nIikscmkodCk/IiI9PT1uP3QucmVtb3ZlQXR0cmlidXRlKGUsImNsYXNzIik6dC5zZXRBdHRyaWJ1dGUoZSwiY2xhc3MiLG4pOmUuY2xhc3NOYW1lPW4sbmdEZXZNb2RlJiZuZ0Rldk1vZGUucmVuZGVyZXJTZXRDbGFzc05hbWUrK30KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gaGModCxlLG4pe25nRGV2TW9kZSYmaG4oZSwiIiwnY2FuIG5vdCBsb29rIGZvciAiIiBzdHJpbmcuJyk7bGV0IG89dC5sZW5ndGg7Zm9yKDs7KXtjb25zdCBpPXQuaW5kZXhPZihlLG4pO2lmKC0xPT09aSlyZXR1cm4gaTtpZigwPT09aXx8dC5jaGFyQ29kZUF0KGktMSk8PTMyKXtjb25zdCBuPWUubGVuZ3RoO2lmKGkrbj09PW98fHQuY2hhckNvZGVBdChpK24pPD0zMilyZXR1cm4gaX1uPWkrMX19Y29uc3QgYmM9Im5nLXRlbXBsYXRlIjtmdW5jdGlvbiB5Yyh0LGUsbil7bmdEZXZNb2RlJiZnbihlLGUudG9Mb3dlckNhc2UoKSwiQ2xhc3MgbmFtZSBleHBlY3RlZCB0byBiZSBsb3dlcmNhc2UuIik7bGV0IG89MDtmb3IoO288dC5sZW5ndGg7KXtsZXQgaT10W28rK107aWYobiYmImNsYXNzIj09PWkpe2lmKGk9dFtvXSwtMSE9PWhjKGkudG9Mb3dlckNhc2UoKSxlLDApKXJldHVybiEwfWVsc2UgaWYoMT09PWkpe2Zvcig7bzx0Lmxlbmd0aCYmInN0cmluZyI9PXR5cGVvZihpPXRbbysrXSk7KWlmKGkudG9Mb3dlckNhc2UoKT09PWUpcmV0dXJuITA7cmV0dXJuITF9fXJldHVybiExfWZ1bmN0aW9uIF9jKHQpe3JldHVybiA0PT09dC50eXBlJiZ0LnZhbHVlIT09YmN9ZnVuY3Rpb24gQ2ModCxlLG4pe3JldHVybiBlPT09KDQhPT10LnR5cGV8fG4/dC52YWx1ZTpiYyl9ZnVuY3Rpb24gTWModCxlLG4pe25nRGV2TW9kZSYmeG4oZVswXSwiU2VsZWN0b3Igc2hvdWxkIGhhdmUgYSB0YWcgbmFtZSIpO2xldCBvPTQ7Y29uc3QgaT10LmF0dHJzfHxbXSxhPShmdW5jdGlvbiByKHQpe2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKXtpZihiYSh0W2VdKSlyZXR1cm4gZX1yZXR1cm4gdC5sZW5ndGh9KShpKTtsZXQgcz0hMTtmb3IobGV0IHI9MDtyPGUubGVuZ3RoO3IrKyl7Y29uc3QgbD1lW3JdO2lmKCJudW1iZXIiIT10eXBlb2YgbCl7aWYoIXMpaWYoNCZvKXtpZihvPTJ8MSZvLCIiIT09bCYmIUNjKHQsbCxuKXx8IiI9PT1sJiYxPT09ZS5sZW5ndGgpe2lmKHZjKG8pKXJldHVybiExO3M9ITB9fWVsc2V7Y29uc3QgYz04Jm8/bDplWysrcl07aWYoOCZvJiZudWxsIT09dC5hdHRycyl7aWYoIXljKHQuYXR0cnMsYyxuKSl7aWYodmMobykpcmV0dXJuITE7cz0hMH1jb250aW51ZX1jb25zdCBkPXhjKDgmbz8iY2xhc3MiOmwsaSxfYyh0KSxuKTtpZigtMT09PWQpe2lmKHZjKG8pKXJldHVybiExO3M9ITA7Y29udGludWV9aWYoIiIhPT1jKXtsZXQgdDtkPmE/dD0iIjoobmdEZXZNb2RlJiZobihpW2RdLDAsIldlIGRvIG5vdCBtYXRjaCBkaXJlY3RpdmVzIG9uIG5hbWVzcGFjZWQgYXR0cmlidXRlcyIpLHQ9aVtkKzFdLnRvTG93ZXJDYXNlKCkpO2NvbnN0IGU9OCZvP3Q6bnVsbDtpZihlJiYtMSE9PWhjKGUsYywwKXx8MiZvJiZjIT09dCl7aWYodmMobykpcmV0dXJuITE7cz0hMH19fX1lbHNle2lmKCFzJiYhdmMobykmJiF2YyhsKSlyZXR1cm4hMTtpZihzJiZ2YyhsKSljb250aW51ZTtzPSExLG89bHwxJm99fXJldHVybiB2YyhvKXx8c31mdW5jdGlvbiB2Yyh0KXtyZXR1cm4gMD09KDEmdCl9ZnVuY3Rpb24geGModCxlLG4sbyl7aWYobnVsbD09PWUpcmV0dXJuLTE7bGV0IGk9MDtpZihvfHwhbil7bGV0IG49ITE7Zm9yKDtpPGUubGVuZ3RoOyl7Y29uc3Qgbz1lW2ldO2lmKG89PT10KXJldHVybiBpO2lmKDM9PT1vfHw2PT09byluPSEwO2Vsc2V7aWYoMT09PW98fDI9PT1vKXtsZXQgdD1lWysraV07Zm9yKDsic3RyaW5nIj09dHlwZW9mIHQ7KXQ9ZVsrK2ldO2NvbnRpbnVlfWlmKDQ9PT1vKWJyZWFrO2lmKDA9PT1vKXtpKz00O2NvbnRpbnVlfX1pKz1uPzE6Mn1yZXR1cm4tMX1yZXR1cm4oZnVuY3Rpb24gYSh0LGUpe2xldCBuPXQuaW5kZXhPZig0KTtpZihuPi0xKWZvcihuKys7bjx0Lmxlbmd0aDspe2NvbnN0IG89dFtuXTtpZigibnVtYmVyIj09dHlwZW9mIG8pcmV0dXJuLTE7aWYobz09PWUpcmV0dXJuIG47bisrfXJldHVybi0xfSkoZSx0KX1mdW5jdGlvbiBPYyh0LGUsbj0hMSl7Zm9yKGxldCBvPTA7bzxlLmxlbmd0aDtvKyspaWYoTWModCxlW29dLG4pKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIFBjKHQsZSl7dDpmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rKyl7Y29uc3Qgbz1lW25dO2lmKHQubGVuZ3RoPT09by5sZW5ndGgpe2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKWlmKHRbZV0hPT1vW2VdKWNvbnRpbnVlIHQ7cmV0dXJuITB9fXJldHVybiExfWZ1bmN0aW9uIHdjKHQsZSl7cmV0dXJuIHQ/Ijpub3QoIitlLnRyaW0oKSsiKSI6ZX1mdW5jdGlvbiBrYyh0KXtsZXQgZT10WzBdLG49MSxvPTIsaT0iIixhPSExO2Zvcig7bjx0Lmxlbmd0aDspe2xldCByPXRbbl07aWYoInN0cmluZyI9PXR5cGVvZiByKWlmKDImbyl7Y29uc3QgZT10Wysrbl07aSs9IlsiK3IrKGUubGVuZ3RoPjA/Jz0iJytlKyciJzoiIikrIl0ifWVsc2UgOCZvP2krPSIuIityOjQmbyYmKGkrPSIgIityKTtlbHNlIiI9PT1pfHx2YyhyKXx8KGUrPXdjKGEsaSksaT0iIiksbz1yLGE9YXx8IXZjKG8pO24rK31yZXR1cm4iIiE9PWkmJihlKz13YyhhLGkpKSxlfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgU2M9InVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZT97X19icmFuZF9fOiJOT19DSEFOR0UifTp7fTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gRGModCl7bmdEZXZNb2RlJiZNbih0LDAsIkNhbiBvbmx5IGFkdmFuY2UgZm9yd2FyZCIpLFJjKE9pKCkseGkoKSx0YSgpK3QsQWkoKSl9ZnVuY3Rpb24gUmModCxlLG4sbyl7aWYobmdEZXZNb2RlJiYoZnVuY3Rpb24gaSh0LGUpe2pvKHZvLHRbMV0uYmluZGluZ1N0YXJ0SW5kZXgsZSl9KShlLG4pLCFvKXtpZigzPT0oMyZlWzJdKSl7Y29uc3Qgbz10LnByZU9yZGVyQ2hlY2tIb29rcztudWxsIT09byYmc2EoZSxvLG4pfWVsc2V7Y29uc3Qgbz10LnByZU9yZGVySG9va3M7bnVsbCE9PW8mJmxhKGUsbywwLG4pfX1lYShuKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gRWModCxlKXtyZXR1cm4gbmdEZXZNb2RlJiZtbih0LDAsMzI3NjcpLG5nRGV2TW9kZSYmbW4oZSwwLDMyNzY3KSx0PDwxN3xlPDwyfWZ1bmN0aW9uIEFjKHQpe3JldHVybiBuZ0Rldk1vZGUmJnBuKHQsImV4cGVjdGVkIG51bWJlciIpLHQ+PjE3JjMyNzY3fWZ1bmN0aW9uIFRjKHQpe3JldHVybiBuZ0Rldk1vZGUmJnBuKHQsImV4cGVjdGVkIG51bWJlciIpLDI9PSgyJnQpfWZ1bmN0aW9uIE5jKHQpe3JldHVybiBuZ0Rldk1vZGUmJnBuKHQsImV4cGVjdGVkIG51bWJlciIpLDJ8dH1mdW5jdGlvbiB6Yyh0KXtyZXR1cm4gbmdEZXZNb2RlJiZwbih0LCJleHBlY3RlZCBudW1iZXIiKSwoMTMxMDY4JnQpPj4yfWZ1bmN0aW9uIEljKHQsZSl7cmV0dXJuIG5nRGV2TW9kZSYmcG4odCwiZXhwZWN0ZWQgbnVtYmVyIiksbmdEZXZNb2RlJiZtbihlLDAsMzI3NjcpLC0xMzEwNjkmdHxlPDwyfWZ1bmN0aW9uIEhjKHQpe3JldHVybiBuZ0Rldk1vZGUmJnBuKHQsImV4cGVjdGVkIG51bWJlciIpLDE9PSgxJnQpfWZ1bmN0aW9uIEZjKHQpe3JldHVybiBuZ0Rldk1vZGUmJnBuKHQsImV4cGVjdGVkIG51bWJlciIpLDF8dH0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gTGModCxlKXtpZighbmdEZXZNb2RlKXRocm93IG5ldyBFcnJvcigiVGhpcyBtZXRob2Qgc2hvdWxkIGJlIGd1YXJkZWQgd2l0aCBgbmdEZXZNb2RlYCBzbyB0aGF0IGl0IGNhbiBiZSB0cmVlIHNoYWtlbiBpbiBwcm9kdWN0aW9uISIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJkZWJ1ZyIse3ZhbHVlOmUsZW51bWVyYWJsZTohMX0pfWZ1bmN0aW9uIEJjKHQsZSl7aWYoIW5nRGV2TW9kZSl0aHJvdyBuZXcgRXJyb3IoIlRoaXMgbWV0aG9kIHNob3VsZCBiZSBndWFyZGVkIHdpdGggYG5nRGV2TW9kZWAgc28gdGhhdCBpdCBjYW4gYmUgdHJlZSBzaGFrZW4gaW4gcHJvZHVjdGlvbiEiKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiZGVidWciLHtnZXQ6ZSxlbnVtZXJhYmxlOiExfSl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NvbnN0IFZjPSgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8ISFuZ0Rldk1vZGUpJiZLbigpO2xldCBqYyxVYyxXYztmdW5jdGlvbiBHYyh0KXtyZXR1cm4oZnVuY3Rpb24gZSh0LG4pe3N3aXRjaCh0KXtjYXNlIDA6cmV0dXJuIHZvaWQgMD09PVdjJiYoV2M9bmV3KENsKCJMUm9vdFZpZXciKSkpLFdjO2Nhc2UgMTp2b2lkIDA9PT1qYyYmKGpjPW5ldyBNYXApO2xldCB0PWpjLmdldChuKTtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9bmV3KENsKCJMQ29tcG9uZW50VmlldyIrWWMobikpKSxqYy5zZXQobix0KSksdDtjYXNlIDI6dm9pZCAwPT09VWMmJihVYz1uZXcgTWFwKTtsZXQgZT1VYy5nZXQobik7cmV0dXJuIHZvaWQgMD09PWUmJihlPW5ldyhDbCgiTEVtYmVkZGVkVmlldyIrWWMobikpKSxVYy5zZXQobixlKSksZX19KSh0LnR5cGUsdC50ZW1wbGF0ZSYmdC50ZW1wbGF0ZS5uYW1lKS5jb25jYXQodC5ibHVlcHJpbnQpfWZ1bmN0aW9uIFljKHQpe2lmKG51bGw9PXQpcmV0dXJuIiI7Y29uc3QgZT10Lmxhc3RJbmRleE9mKCJfVGVtcGxhdGUiKTtyZXR1cm4iXyIrKC0xPT09ZT90OnQuc3Vic3RyKDAsZSkpfWNvbnN0IHFjPWNsYXNze2NvbnN0cnVjdG9yKHQsZSxuLG8saSxhLHIscyxsLGMsZCxwLG0sZix1LGcsaCxiLHksXyxDLE0sdix4LE8sUCx3LGssUyxELFIsRSl7dGhpcy50Vmlld189dCx0aGlzLnR5cGU9ZSx0aGlzLmluZGV4PW4sdGhpcy5pbnNlcnRCZWZvcmVJbmRleD1vLHRoaXMuaW5qZWN0b3JJbmRleD1pLHRoaXMuZGlyZWN0aXZlU3RhcnQ9YSx0aGlzLmRpcmVjdGl2ZUVuZD1yLHRoaXMuZGlyZWN0aXZlU3R5bGluZ0xhc3Q9cyx0aGlzLnByb3BlcnR5QmluZGluZ3M9bCx0aGlzLmZsYWdzPWMsdGhpcy5wcm92aWRlckluZGV4ZXM9ZCx0aGlzLnZhbHVlPXAsdGhpcy5hdHRycz1tLHRoaXMubWVyZ2VkQXR0cnM9Zix0aGlzLmxvY2FsTmFtZXM9dSx0aGlzLmluaXRpYWxJbnB1dHM9Zyx0aGlzLmlucHV0cz1oLHRoaXMub3V0cHV0cz1iLHRoaXMudFZpZXdzPXksdGhpcy5uZXh0PV8sdGhpcy5wcm9qZWN0aW9uTmV4dD1DLHRoaXMuY2hpbGQ9TSx0aGlzLnBhcmVudD12LHRoaXMucHJvamVjdGlvbj14LHRoaXMuc3R5bGVzPU8sdGhpcy5zdHlsZXNXaXRob3V0SG9zdD1QLHRoaXMucmVzaWR1YWxTdHlsZXM9dyx0aGlzLmNsYXNzZXM9ayx0aGlzLmNsYXNzZXNXaXRob3V0SG9zdD1TLHRoaXMucmVzaWR1YWxDbGFzc2VzPUQsdGhpcy5jbGFzc0JpbmRpbmdzPVIsdGhpcy5zdHlsZUJpbmRpbmdzPUV9ZGVidWdOb2RlSW5qZWN0b3JQYXRoKHQpe2NvbnN0IGU9W107bGV0IG49RGEodGhpcyx0KTtpZigtMT09PW4pe2NvbnN0IGU9UmEodGhpcyx0KTtlIT09bWEmJihuPXZhKGUpLHQ9eGEoZSx0KSl9Zm9yKDstMSE9PW47KXtuZ0Rldk1vZGUmJldvKHQsbik7ZS5wdXNoKHBkKHRbMV0uZGF0YVtuKzhdLHQpKTtjb25zdCBvPXRbbis4XTtvPT09bWE/bj0tMToobj12YShvKSx0PXhhKG8sdCkpfXJldHVybiBlfWdldCB0eXBlXygpe3JldHVybiB1YSh0aGlzLnR5cGUpfHxgVE5vZGVUeXBlLj8ke3RoaXMudHlwZX0/YH1nZXQgZmxhZ3NfKCl7Y29uc3QgdD1bXTtyZXR1cm4gMTYmdGhpcy5mbGFncyYmdC5wdXNoKCJUTm9kZUZsYWdzLmhhc0NsYXNzSW5wdXQiKSw4JnRoaXMuZmxhZ3MmJnQucHVzaCgiVE5vZGVGbGFncy5oYXNDb250ZW50UXVlcnkiKSwzMiZ0aGlzLmZsYWdzJiZ0LnB1c2goIlROb2RlRmxhZ3MuaGFzU3R5bGVJbnB1dCIpLDEyOCZ0aGlzLmZsYWdzJiZ0LnB1c2goIlROb2RlRmxhZ3MuaGFzSG9zdEJpbmRpbmdzIiksMiZ0aGlzLmZsYWdzJiZ0LnB1c2goIlROb2RlRmxhZ3MuaXNDb21wb25lbnRIb3N0IiksMSZ0aGlzLmZsYWdzJiZ0LnB1c2goIlROb2RlRmxhZ3MuaXNEaXJlY3RpdmVIb3N0IiksNjQmdGhpcy5mbGFncyYmdC5wdXNoKCJUTm9kZUZsYWdzLmlzRGV0YWNoZWQiKSw0JnRoaXMuZmxhZ3MmJnQucHVzaCgiVE5vZGVGbGFncy5pc1Byb2plY3RlZCIpLHQuam9pbigifCIpfWdldCB0ZW1wbGF0ZV8oKXtpZigxJnRoaXMudHlwZSlyZXR1cm4gdGhpcy52YWx1ZTtjb25zdCB0PVtdLGU9InN0cmluZyI9PXR5cGVvZiB0aGlzLnZhbHVlJiZ0aGlzLnZhbHVlfHx0aGlzLnR5cGVfO2lmKHQucHVzaCgiPCIsZSksdGhpcy5mbGFncyYmdC5wdXNoKCIgIix0aGlzLmZsYWdzXyksdGhpcy5hdHRycylmb3IobGV0IGU9MDtlPHRoaXMuYXR0cnMubGVuZ3RoOyl7Y29uc3Qgbj10aGlzLmF0dHJzW2UrK107aWYoIm51bWJlciI9PXR5cGVvZiBuKWJyZWFrO2NvbnN0IG89dGhpcy5hdHRyc1tlKytdO3QucHVzaCgiICIsbiwnPSInLG8sJyInKX1yZXR1cm4gdC5wdXNoKCI+IiksWGModGhpcy5jaGlsZCx0KSx0LnB1c2goIjwvIixlLCI+IiksdC5qb2luKCIiKX1nZXQgc3R5bGVCaW5kaW5nc18oKXtyZXR1cm4gWmModGhpcywhMSl9Z2V0IGNsYXNzQmluZGluZ3NfKCl7cmV0dXJuIFpjKHRoaXMsITApfWdldCBwcm92aWRlckluZGV4U3RhcnRfKCl7cmV0dXJuIDEwNDg1NzUmdGhpcy5wcm92aWRlckluZGV4ZXN9Z2V0IHByb3ZpZGVySW5kZXhFbmRfKCl7cmV0dXJuIHRoaXMucHJvdmlkZXJJbmRleFN0YXJ0XysodGhpcy5wcm92aWRlckluZGV4ZXM+Pj4yMCl9fTtmdW5jdGlvbiBaYyh0LGUpe2NvbnN0IG49dC50Vmlld18uZGF0YSxvPVtdLGk9ZT90LmNsYXNzQmluZGluZ3M6dC5zdHlsZUJpbmRpbmdzLGE9QWMoaSkscj16YyhpKTtsZXQgcz0wIT09cixsPXM/cjphO2Zvcig7MCE9PWw7KXtjb25zdCB0PW5bbCsxXTtvLnVuc2hpZnQoe2tleTpuW2xdLGluZGV4OmwsaXNUZW1wbGF0ZTpzLHByZXZEdXBsaWNhdGU6VGModCksbmV4dER1cGxpY2F0ZTpIYyh0KSxuZXh0SW5kZXg6emModCkscHJldkluZGV4OkFjKHQpfSksbD09PWEmJihzPSExKSxsPUFjKHQpfXJldHVybiBvLnB1c2goKGU/dC5yZXNpZHVhbENsYXNzZXM6dC5yZXNpZHVhbFN0eWxlcyl8fG51bGwpLG99ZnVuY3Rpb24gWGModCxlKXtmb3IoO3Q7KWUucHVzaCh0LnRlbXBsYXRlXyksdD10Lm5leHR9Y29uc3QgS2M9VmMmJkNsKCJUVmlld0RhdGEiKXx8bnVsbDtsZXQgSmM7Y29uc3QgUWM9VmMmJkNsKCJMVmlld0JsdWVwcmludCIpfHxudWxsLCRjPVZjJiZDbCgiTWF0Y2hlc0FycmF5Iil8fG51bGwsdGQ9VmMmJkNsKCJUVmlld0NvbXBvbmVudHMiKXx8bnVsbCxlZD1WYyYmQ2woIlROb2RlTG9jYWxOYW1lcyIpfHxudWxsLG5kPVZjJiZDbCgiVE5vZGVJbml0aWFsSW5wdXRzIil8fG51bGw7VmMmJkNsKCJUTm9kZUluaXRpYWxEYXRhIik7Y29uc3Qgb2Q9VmMmJkNsKCJMQ2xlYW51cCIpfHxudWxsLGlkPVZjJiZDbCgiVENsZWFudXAiKXx8bnVsbDtmdW5jdGlvbiBhZCh0KXtpZih0KXtjb25zdCBlPXQuZGVidWc7cmV0dXJuIHhuKGUsIk9iamVjdCBkb2VzIG5vdCBoYXZlIGEgZGVidWcgcmVwcmVzZW50YXRpb24uIiksZX1yZXR1cm4gdH1mdW5jdGlvbiByZCh0LGU9ITEpe2NvbnN0IG49bGkodCk7aWYobilzd2l0Y2gobi5ub2RlVHlwZSl7Y2FzZSBOb2RlLlRFWFRfTk9ERTpyZXR1cm4gbi50ZXh0Q29udGVudDtjYXNlIE5vZGUuQ09NTUVOVF9OT0RFOnJldHVybmBceDNjIS0tJHtuLnRleHRDb250ZW50fS0tXHgzZWA7Y2FzZSBOb2RlLkVMRU1FTlRfTk9ERTpjb25zdCB0PW4ub3V0ZXJIVE1MO2lmKGUpcmV0dXJuIHQ7cmV0dXJuIHQuc3BsaXQoIj4iK24uaW5uZXJIVE1MKyI8IilbMF0rIj4ifXJldHVybiBudWxsfWNsYXNzIHNke2NvbnN0cnVjdG9yKHQpe3RoaXMuX3Jhd19sVmlldz10fWdldCBmbGFncygpe2NvbnN0IHQ9dGhpcy5fcmF3X2xWaWV3WzJdO3JldHVybntfX3Jhd19fZmxhZ3NfXzp0LGluaXRQaGFzZVN0YXRlOjMmdCxjcmVhdGlvbk1vZGU6ISEoNCZ0KSxmaXJzdFZpZXdQYXNzOiEhKDgmdCksY2hlY2tBbHdheXM6ISEoMTYmdCksZGlydHk6ISEoNjQmdCksYXR0YWNoZWQ6ISEoMTI4JnQpLGRlc3Ryb3llZDohISgyNTYmdCksaXNSb290OiEhKDUxMiZ0KSxpbmRleFdpdGhpbkluaXRQaGFzZTp0Pj4xMX19Z2V0IHBhcmVudCgpe3JldHVybiBhZCh0aGlzLl9yYXdfbFZpZXdbM10pfWdldCBob3N0SFRNTCgpe3JldHVybiByZCh0aGlzLl9yYXdfbFZpZXdbMF0sITApfWdldCBodG1sKCl7cmV0dXJuKHRoaXMubm9kZXN8fFtdKS5tYXAobGQpLmpvaW4oIiIpfWdldCBjb250ZXh0KCl7cmV0dXJuIHRoaXMuX3Jhd19sVmlld1s4XX1nZXQgbm9kZXMoKXtjb25zdCB0PXRoaXMuX3Jhd19sVmlldztyZXR1cm4gZGQodFsxXS5maXJzdENoaWxkLHQpfWdldCB0ZW1wbGF0ZSgpe3JldHVybiB0aGlzLnRWaWV3LnRlbXBsYXRlX31nZXQgdFZpZXcoKXtyZXR1cm4gdGhpcy5fcmF3X2xWaWV3WzFdfWdldCBjbGVhbnVwKCl7cmV0dXJuIHRoaXMuX3Jhd19sVmlld1s3XX1nZXQgaW5qZWN0b3IoKXtyZXR1cm4gdGhpcy5fcmF3X2xWaWV3WzldfWdldCByZW5kZXJlckZhY3RvcnkoKXtyZXR1cm4gdGhpcy5fcmF3X2xWaWV3WzEwXX1nZXQgcmVuZGVyZXIoKXtyZXR1cm4gdGhpcy5fcmF3X2xWaWV3WzExXX1nZXQgc2FuaXRpemVyKCl7cmV0dXJuIHRoaXMuX3Jhd19sVmlld1sxMl19Z2V0IGNoaWxkSGVhZCgpe3JldHVybiBhZCh0aGlzLl9yYXdfbFZpZXdbMTNdKX1nZXQgbmV4dCgpe3JldHVybiBhZCh0aGlzLl9yYXdfbFZpZXdbNF0pfWdldCBjaGlsZFRhaWwoKXtyZXR1cm4gYWQodGhpcy5fcmF3X2xWaWV3WzE0XSl9Z2V0IGRlY2xhcmF0aW9uVmlldygpe3JldHVybiBhZCh0aGlzLl9yYXdfbFZpZXdbMTVdKX1nZXQgcXVlcmllcygpe3JldHVybiB0aGlzLl9yYXdfbFZpZXdbMTldfWdldCB0SG9zdCgpe3JldHVybiB0aGlzLl9yYXdfbFZpZXdbNl19Z2V0IGRlY2xzKCl7cmV0dXJuIGNkKHRoaXMudFZpZXcsdGhpcy5fcmF3X2xWaWV3LHZvLHRoaXMudFZpZXcuYmluZGluZ1N0YXJ0SW5kZXgpfWdldCB2YXJzKCl7cmV0dXJuIGNkKHRoaXMudFZpZXcsdGhpcy5fcmF3X2xWaWV3LHRoaXMudFZpZXcuYmluZGluZ1N0YXJ0SW5kZXgsdGhpcy50Vmlldy5leHBhbmRvU3RhcnRJbmRleCl9Z2V0IGV4cGFuZG8oKXtyZXR1cm4gY2QodGhpcy50Vmlldyx0aGlzLl9yYXdfbFZpZXcsdGhpcy50Vmlldy5leHBhbmRvU3RhcnRJbmRleCx0aGlzLl9yYXdfbFZpZXcubGVuZ3RoKX1nZXQgY2hpbGRWaWV3cygpe2NvbnN0IHQ9W107bGV0IGU9dGhpcy5jaGlsZEhlYWQ7Zm9yKDtlOyl0LnB1c2goZSksZT1lLm5leHQ7cmV0dXJuIHR9fWZ1bmN0aW9uIGxkKHQpe2lmKCJFbGVtZW50Q29udGFpbmVyIj09PXQudHlwZSlyZXR1cm4odC5jaGlsZHJlbnx8W10pLm1hcChsZCkuam9pbigiIik7aWYoIkljdUNvbnRhaW5lciI9PT10LnR5cGUpdGhyb3cgbmV3IEVycm9yKCJOb3QgaW1wbGVtZW50ZWQiKTtyZXR1cm4gcmQodC5uYXRpdmUsITApfHwiIn1mdW5jdGlvbiBjZCh0LGUsbixvKXtsZXQgaT1bXTtmb3IobGV0IGE9bjthPG87YSsrKWkucHVzaCh7aW5kZXg6YSx0OnQuZGF0YVthXSxsOmVbYV19KTtyZXR1cm57c3RhcnQ6bixlbmQ6byxsZW5ndGg6by1uLGNvbnRlbnQ6aX19ZnVuY3Rpb24gZGQodCxlKXtpZih0KXtjb25zdCBuPVtdO2xldCBvPXQ7Zm9yKDtvOyluLnB1c2gocGQobyxlKSksbz1vLm5leHQ7cmV0dXJuIG59cmV0dXJuW119ZnVuY3Rpb24gcGQodCxlKXtjb25zdCBuPWxpKGVbdC5pbmRleF0pLG89W10saT1bXSxhPWVbMV07Zm9yKGxldCBuPXQuZGlyZWN0aXZlU3RhcnQ7bjx0LmRpcmVjdGl2ZUVuZDtuKyspe28ucHVzaChhLmRhdGFbbl0udHlwZSksaS5wdXNoKGVbbl0pfXJldHVybntodG1sOnJkKG4pLHR5cGU6dWEodC50eXBlKSx0Tm9kZTp0LG5hdGl2ZTpuLGNoaWxkcmVuOmRkKHQuY2hpbGQsZSksZmFjdG9yaWVzOm8saW5zdGFuY2VzOmksaW5qZWN0b3I6bWQodCxhLGUpLGdldCBpbmplY3RvclJlc29sdXRpb25QYXRoKCl7cmV0dXJuIHQuZGVidWdOb2RlSW5qZWN0b3JQYXRoKGUpfX19ZnVuY3Rpb24gbWQodCxlLG4pe2NvbnN0IG89W107Zm9yKGxldCBuPXQucHJvdmlkZXJJbmRleFN0YXJ0XztuPHQucHJvdmlkZXJJbmRleEVuZF87bisrKW8ucHVzaChlLmRhdGFbbl0pO2NvbnN0IGk9W107Zm9yKGxldCBuPXQucHJvdmlkZXJJbmRleEVuZF87bjx0LmRpcmVjdGl2ZUVuZDtuKyspaS5wdXNoKGUuZGF0YVtuXSk7cmV0dXJue2Jsb29tOnVkKG4sdC5pbmplY3RvckluZGV4KSxjdW11bGF0aXZlQmxvb206dWQoZS5kYXRhLHQuaW5qZWN0b3JJbmRleCkscHJvdmlkZXJzOmksdmlld1Byb3ZpZGVyczpvLHBhcmVudEluamVjdG9ySW5kZXg6blt0LnByb3ZpZGVySW5kZXhTdGFydF8tMV19fWZ1bmN0aW9uIGZkKHQsZSl7Y29uc3Qgbj10W2VdO2lmKCJudW1iZXIiIT10eXBlb2YgbilyZXR1cm4iPz8/Pz8/Pz8iO2NvbnN0IG89IjAwMDAwMDAwIituLnRvU3RyaW5nKDIpO3JldHVybiBvLnN1YnN0cmluZyhvLmxlbmd0aC04KX1mdW5jdGlvbiB1ZCh0LGUpe3JldHVybiBlPDA/Ik5PX05PREVfSU5KRUNUT1IiOmAke2ZkKHQsZSs3KX1fJHtmZCh0LGUrNil9XyR7ZmQodCxlKzUpfV8ke2ZkKHQsZSs0KX1fJHtmZCh0LGUrMyl9XyR7ZmQodCxlKzIpfV8ke2ZkKHQsZSsxKX1fJHtmZCh0LGUrMCl9YH1jbGFzcyBnZHtjb25zdHJ1Y3Rvcih0KXt0aGlzLl9yYXdfbENvbnRhaW5lcj10fWdldCBoYXNUcmFuc3BsYW50ZWRWaWV3cygpe3JldHVybiB0aGlzLl9yYXdfbENvbnRhaW5lclsyXX1nZXQgdmlld3MoKXtyZXR1cm4gdGhpcy5fcmF3X2xDb250YWluZXIuc2xpY2UoT28pLm1hcChhZCl9Z2V0IHBhcmVudCgpe3JldHVybiBhZCh0aGlzLl9yYXdfbENvbnRhaW5lclszXSl9Z2V0IG1vdmVkVmlld3MoKXtyZXR1cm4gdGhpcy5fcmF3X2xDb250YWluZXJbOV19Z2V0IGhvc3QoKXtyZXR1cm4gdGhpcy5fcmF3X2xDb250YWluZXJbMF19Z2V0IG5hdGl2ZSgpe3JldHVybiB0aGlzLl9yYXdfbENvbnRhaW5lcls3XX1nZXQgbmV4dCgpe3JldHVybiBhZCh0aGlzLl9yYXdfbENvbnRhaW5lcls0XSl9fWNvbnN0IGhkPVByb21pc2UucmVzb2x2ZShudWxsKTtmdW5jdGlvbiBiZCh0LGUpe2NvbnN0IG49dC5jb250ZW50UXVlcmllcztpZihudWxsIT09bilmb3IobGV0IG89MDtvPG4ubGVuZ3RoO28rPTIpe2NvbnN0IGk9bltvXSxhPW5bbysxXTtpZigtMSE9PWEpe2NvbnN0IG49dC5kYXRhW2FdO25nRGV2TW9kZSYmeG4obiwiRGlyZWN0aXZlRGVmIG5vdCBmb3VuZC4iKSxuZ0Rldk1vZGUmJnhuKG4uY29udGVudFF1ZXJpZXMsImNvbnRlbnRRdWVyaWVzIGZ1bmN0aW9uIHNob3VsZCBiZSBkZWZpbmVkIiksV2koaSksbi5jb250ZW50UXVlcmllcygyLGVbYV0sYSl9fX1mdW5jdGlvbiB5ZCh0LGUsbixvLGksYSxyLHMsbCxjKXtjb25zdCBkPW5nRGV2TW9kZT9HYyhlKTplLmJsdWVwcmludC5zbGljZSgpO3JldHVybiBkWzBdPWksZFsyXT0xNDB8byxiaShkKSxuZ0Rldk1vZGUmJmUuZGVjbFROb2RlJiZ0JiZFbyhlLmRlY2xUTm9kZSx0KSxkWzNdPWRbMTVdPXQsZFs4XT1uLGRbMTBdPXJ8fHQmJnRbMTBdLG5nRGV2TW9kZSYmeG4oZFsxMF0sIlJlbmRlcmVyRmFjdG9yeSBpcyByZXF1aXJlZCIpLGRbMTFdPXN8fHQmJnRbMTFdLG5nRGV2TW9kZSYmeG4oZFsxMV0sIlJlbmRlcmVyIGlzIHJlcXVpcmVkIiksZFsxMl09bHx8dCYmdFsxMl18fG51bGwsZFs5XT1jfHx0JiZ0WzldfHxudWxsLGRbNl09YSxuZ0Rldk1vZGUmJmduKDIhPWUudHlwZXx8bnVsbCE9PXQsITAsIkVtYmVkZGVkIHZpZXdzIG11c3QgaGF2ZSBwYXJlbnRMVmlldyIpLGRbMTZdPTI9PWUudHlwZT90WzE2XTpkLG5nRGV2TW9kZSYmKGZ1bmN0aW9uIHAodCl7TGModCxuZXcgc2QodCkpfSkoZCksZH1mdW5jdGlvbiBfZCh0LGUsbixvLGkpe25nRGV2TW9kZSYmMCE9PWUmJnZuKGUsdm8sIlROb2RlcyBjYW4ndCBiZSBpbiB0aGUgTFZpZXcgaGVhZGVyLiIpLG5nRGV2TW9kZSYmKGZ1bmN0aW9uIGEodCl7MiE9PXQmJjEhPT10JiY0IT09dCYmOCE9PXQmJjMyIT09dCYmMTYhPT10JiY2NCE9PXQmJk9uKGBFeHBlY3RlZCBUTm9kZVR5cGUgdG8gaGF2ZSBvbmx5IGEgc2luZ2xlIHR5cGUgc2VsZWN0ZWQsIGJ1dCBnb3QgJHt1YSh0KX0uYCl9KShuKTtsZXQgcj10LmRhdGFbZV07aWYobnVsbD09PXIpcj1DZCh0LGUsbixvLGkpLChmdW5jdGlvbiBzKCl7cmV0dXJuIF9pLmxGcmFtZS5pbkkxOG59KSgpJiYoci5mbGFnc3w9NjQpO2Vsc2UgaWYoNjQmci50eXBlKXtyLnR5cGU9bixyLnZhbHVlPW8sci5hdHRycz1pO2NvbnN0IGE9U2koKTtyLmluamVjdG9ySW5kZXg9bnVsbD09PWE/LTE6YS5pbmplY3RvckluZGV4LG5nRGV2TW9kZSYmQW8ocix0KSxuZ0Rldk1vZGUmJmduKGUsci5pbmRleCwiRXhwZWN0aW5nIHNhbWUgaW5kZXgiKX1yZXR1cm4gRGkociwhMCkscn1mdW5jdGlvbiBDZCh0LGUsbixvLGkpe2NvbnN0IGE9a2koKSxyPVJpKCkscz10LmRhdGFbZV09KGZ1bmN0aW9uIGwodCxlLG4sbyxpLGEpe25nRGV2TW9kZSYmMCE9PW8mJnZuKG8sdm8sIlROb2RlcyBjYW4ndCBiZSBpbiB0aGUgTFZpZXcgaGVhZGVyLiIpLG5nRGV2TW9kZSYmeW4oYSx2b2lkIDAsIid1bmRlZmluZWQnIGlzIG5vdCB2YWxpZCB2YWx1ZSBmb3IgJ2F0dHJzJyIpLG5nRGV2TW9kZSYmbmdEZXZNb2RlLnROb2RlKyssbmdEZXZNb2RlJiZlJiZBbyhlLHQpO2xldCByPWU/ZS5pbmplY3RvckluZGV4Oi0xO2NvbnN0IHM9bmdEZXZNb2RlP25ldyBxYyh0LG4sbyxudWxsLHIsLTEsLTEsLTEsbnVsbCwwLDAsaSxhLG51bGwsbnVsbCx2b2lkIDAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsZSxudWxsLG51bGwsbnVsbCx2b2lkIDAsbnVsbCxudWxsLHZvaWQgMCwwLDApOnt0eXBlOm4saW5kZXg6byxpbnNlcnRCZWZvcmVJbmRleDpudWxsLGluamVjdG9ySW5kZXg6cixkaXJlY3RpdmVTdGFydDotMSxkaXJlY3RpdmVFbmQ6LTEsZGlyZWN0aXZlU3R5bGluZ0xhc3Q6LTEscHJvcGVydHlCaW5kaW5nczpudWxsLGZsYWdzOjAscHJvdmlkZXJJbmRleGVzOjAsdmFsdWU6aSxhdHRyczphLG1lcmdlZEF0dHJzOm51bGwsbG9jYWxOYW1lczpudWxsLGluaXRpYWxJbnB1dHM6dm9pZCAwLGlucHV0czpudWxsLG91dHB1dHM6bnVsbCx0Vmlld3M6bnVsbCxuZXh0Om51bGwscHJvamVjdGlvbk5leHQ6bnVsbCxjaGlsZDpudWxsLHBhcmVudDplLHByb2plY3Rpb246bnVsbCxzdHlsZXM6bnVsbCxzdHlsZXNXaXRob3V0SG9zdDpudWxsLHJlc2lkdWFsU3R5bGVzOnZvaWQgMCxjbGFzc2VzOm51bGwsY2xhc3Nlc1dpdGhvdXRIb3N0Om51bGwscmVzaWR1YWxDbGFzc2VzOnZvaWQgMCxjbGFzc0JpbmRpbmdzOjAsc3R5bGVCaW5kaW5nczowfTtuZ0Rldk1vZGUmJk9iamVjdC5zZWFsKHMpO3JldHVybiBzfSkodCxyP2E6YSYmYS5wYXJlbnQsbixlLG8saSk7cmV0dXJuIG51bGw9PT10LmZpcnN0Q2hpbGQmJih0LmZpcnN0Q2hpbGQ9cyksbnVsbCE9PWEmJihyP251bGw9PWEuY2hpbGQmJm51bGwhPT1zLnBhcmVudCYmKGEuY2hpbGQ9cyk6bnVsbD09PWEubmV4dCYmKGEubmV4dD1zKSksc31mdW5jdGlvbiBNZCh0LGUsbixvKXtpZigwPT09bilyZXR1cm4tMTtuZ0Rldk1vZGUmJihMbyh0KSxibih0LGVbMV0sImBMVmlld2AgbXVzdCBiZSBhc3NvY2lhdGVkIHdpdGggYFRWaWV3YCEiKSxnbih0LmRhdGEubGVuZ3RoLGUubGVuZ3RoLCJFeHBlY3RpbmcgTFZpZXcgdG8gYmUgc2FtZSBzaXplIGFzIFRWaWV3IiksZ24odC5kYXRhLmxlbmd0aCx0LmJsdWVwcmludC5sZW5ndGgsIkV4cGVjdGluZyBCbHVlcHJpbnQgdG8gYmUgc2FtZSBzaXplIGFzIFRWaWV3IiksQm8odCkpO2NvbnN0IGk9ZS5sZW5ndGg7Zm9yKGxldCBpPTA7aTxuO2krKyllLnB1c2gobyksdC5ibHVlcHJpbnQucHVzaChvKSx0LmRhdGEucHVzaChudWxsKTtyZXR1cm4gaX1mdW5jdGlvbiB2ZCh0LGUsbil7bmdEZXZNb2RlJiZnbih1aShlKSwhMCwiU2hvdWxkIGJlIHJ1biBpbiBjcmVhdGlvbiBtb2RlIikscWkoZSk7dHJ5e2NvbnN0IG89dC52aWV3UXVlcnk7bnVsbCE9PW8mJnNwKDEsbyxuKTtjb25zdCBpPXQudGVtcGxhdGU7bnVsbCE9PWkmJlBkKHQsZSxpLDEsbiksdC5maXJzdENyZWF0ZVBhc3MmJih0LmZpcnN0Q3JlYXRlUGFzcz0hMSksdC5zdGF0aWNDb250ZW50UXVlcmllcyYmYmQodCxlKSx0LnN0YXRpY1ZpZXdRdWVyaWVzJiZzcCgyLHQudmlld1F1ZXJ5LG4pO2NvbnN0IGE9dC5jb21wb25lbnRzO251bGwhPT1hJiYoZnVuY3Rpb24gbyh0LGUpe2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7bisrKWVwKHQsZVtuXSl9KShlLGEpfWNhdGNoKGUpe3Rocm93IHQuZmlyc3RDcmVhdGVQYXNzJiYodC5pbmNvbXBsZXRlRmlyc3RQYXNzPSEwLHQuZmlyc3RDcmVhdGVQYXNzPSExKSxlfWZpbmFsbHl7ZVsyXSY9LTUsUWkoKX19ZnVuY3Rpb24geGQodCxlLG4sbyl7bmdEZXZNb2RlJiZnbih1aShlKSwhMSwiU2hvdWxkIGJlIHJ1biBpbiB1cGRhdGUgbW9kZSIpO2NvbnN0IGk9ZVsyXTtpZigyNTY9PSgyNTYmaSkpcmV0dXJuO3FpKGUpO2NvbnN0IGE9QWkoKTt0cnl7YmkoZSksSWkodC5iaW5kaW5nU3RhcnRJbmRleCksbnVsbCE9PW4mJlBkKHQsZSxuLDIsbyk7Y29uc3Qgcj0zPT0oMyZpKTtpZighYSlpZihyKXtjb25zdCBuPXQucHJlT3JkZXJDaGVja0hvb2tzO251bGwhPT1uJiZzYShlLG4sbnVsbCl9ZWxzZXtjb25zdCBuPXQucHJlT3JkZXJIb29rcztudWxsIT09biYmbGEoZSxuLDAsbnVsbCksY2EoZSwwKX1pZigoZnVuY3Rpb24gcih0KXtmb3IobGV0IGU9SWwodCk7bnVsbCE9PWU7ZT1IbChlKSl7aWYoIWVbMl0pY29udGludWU7Y29uc3QgdD1lWzldO25nRGV2TW9kZSYmeG4odCwiVHJhbnNwbGFudGVkIFZpZXcgZmxhZ3Mgc2V0IGJ1dCBtaXNzaW5nIE1PVkVEX1ZJRVdTIik7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspe2NvbnN0IG49dFtlXSxvPW5bM107bmdEZXZNb2RlJiZJbyhvKSwwPT0oMTAyNCZuWzJdKSYmeWkobywxKSxuWzJdfD0xMDI0fX19KShlKSwoZnVuY3Rpb24gcyh0KXtmb3IobGV0IGU9SWwodCk7bnVsbCE9PWU7ZT1IbChlKSlmb3IobGV0IHQ9T287dDxlLmxlbmd0aDt0Kyspe2NvbnN0IG49ZVt0XSxvPW5bMV07bmdEZXZNb2RlJiZ4bihvLCJUVmlldyBtdXN0IGJlIGFsbG9jYXRlZCIpLGdpKG4pJiZ4ZChvLG4sby50ZW1wbGF0ZSxuWzhdKX19KShlKSxudWxsIT09dC5jb250ZW50UXVlcmllcyYmYmQodCxlKSwhYSlpZihyKXtjb25zdCBuPXQuY29udGVudENoZWNrSG9va3M7bnVsbCE9PW4mJnNhKGUsbil9ZWxzZXtjb25zdCBuPXQuY29udGVudEhvb2tzO251bGwhPT1uJiZsYShlLG4sMSksY2EoZSwxKX0hKGZ1bmN0aW9uIGwodCxlKXtjb25zdCBuPXQuaG9zdEJpbmRpbmdPcENvZGVzO2lmKG51bGwhPT1uKXRyeXtmb3IobGV0IHQ9MDt0PG4ubGVuZ3RoO3QrKyl7Y29uc3Qgbz1uW3RdO2lmKG88MCllYSh+byk7ZWxzZXtjb25zdCBpPW8sYT1uWysrdF0scj1uWysrdF07QmkoYSxpKSxyKDIsZVtpXSl9fX1maW5hbGx5e2VhKC0xKX19KSh0LGUpO2NvbnN0IHM9dC5jb21wb25lbnRzO251bGwhPT1zJiYoZnVuY3Rpb24gYyh0LGUpe2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7bisrKSRkKHQsZVtuXSl9KShlLHMpO2NvbnN0IGw9dC52aWV3UXVlcnk7aWYobnVsbCE9PWwmJnNwKDIsbCxvKSwhYSlpZihyKXtjb25zdCBuPXQudmlld0NoZWNrSG9va3M7bnVsbCE9PW4mJnNhKGUsbil9ZWxzZXtjb25zdCBuPXQudmlld0hvb2tzO251bGwhPT1uJiZsYShlLG4sMiksY2EoZSwyKX0hMD09PXQuZmlyc3RVcGRhdGVQYXNzJiYodC5maXJzdFVwZGF0ZVBhc3M9ITEpLGF8fChlWzJdJj0tNzMpLDEwMjQmZVsyXSYmKGVbMl0mPS0xMDI1LHlpKGVbM10sLTEpKX1maW5hbGx5e1FpKCl9fWZ1bmN0aW9uIE9kKHQsZSxuLG8pe2NvbnN0IGk9ZVsxMF0sYT0hQWkoKSxyPXVpKGUpO3RyeXthJiYhciYmaS5iZWdpbiYmaS5iZWdpbigpLHImJnZkKHQsZSxvKSx4ZCh0LGUsbixvKX1maW5hbGx5e2EmJiFyJiZpLmVuZCYmaS5lbmQoKX19ZnVuY3Rpb24gUGQodCxlLG4sbyxpKXtjb25zdCBhPXRhKCkscj0yJm87dHJ5e2VhKC0xKSxyJiZlLmxlbmd0aD52byYmUmModCxlLHZvLEFpKCkpO3RpKHI/MjowLGkpLG4obyxpKX1maW5hbGx5e2VhKGEpO3RpKHI/MzoxLGkpfX1mdW5jdGlvbiB3ZCh0LGUsbil7aWYoa28oZSkpe2NvbnN0IG89ZS5kaXJlY3RpdmVFbmQ7Zm9yKGxldCBpPWUuZGlyZWN0aXZlU3RhcnQ7aTxvO2krKyl7Y29uc3QgZT10LmRhdGFbaV07ZS5jb250ZW50UXVlcmllcyYmZS5jb250ZW50UXVlcmllcygxLG5baV0saSl9fX1mdW5jdGlvbiBrZCh0LGUsbil7Q2koKSYmKCEoZnVuY3Rpb24gbyh0LGUsbixpKXtjb25zdCBhPW4uZGlyZWN0aXZlU3RhcnQscj1uLmRpcmVjdGl2ZUVuZDt0LmZpcnN0Q3JlYXRlUGFzc3x8a2EobixlKTthbChpLGUpO2NvbnN0IHM9bi5pbml0aWFsSW5wdXRzO2ZvcihsZXQgbz1hO288cjtvKyspe2NvbnN0IGk9dC5kYXRhW29dLHI9Um8oaSk7ciYmKG5nRGV2TW9kZSYmZ2EobiwzKSxZZChlLG4saSkpO2NvbnN0IGw9TGEoZSx0LG8sbik7aWYoYWwobCxlKSxudWxsIT09cyYmWGQoZSxvLWEsbCxpLG4scykscil7Zmkobi5pbmRleCxlKVs4XT1sfX19KSh0LGUsbixkaShuLGUpKSwxMjg9PSgxMjgmbi5mbGFncykmJihmdW5jdGlvbiBpKHQsZSxuKXtjb25zdCBvPW4uZGlyZWN0aXZlU3RhcnQsaT1uLmRpcmVjdGl2ZUVuZDtjb25zdCBhPW4uaW5kZXgscj0oZnVuY3Rpb24gcygpe3JldHVybiBfaS5sRnJhbWUuY3VycmVudERpcmVjdGl2ZUluZGV4fSkoKTt0cnl7ZWEoYSk7Zm9yKGxldCBuPW87bjxpO24rKyl7Y29uc3Qgbz10LmRhdGFbbl0saT1lW25dO1ZpKG4pLG51bGw9PT1vLmhvc3RCaW5kaW5ncyYmMD09PW8uaG9zdFZhcnMmJm51bGw9PT1vLmhvc3RBdHRyc3x8VmQobyxpKX19ZmluYWxseXtlYSgtMSksVmkocil9fSkodCxlLG4pKX1mdW5jdGlvbiBTZCh0LGUsbj1kaSl7Y29uc3Qgbz1lLmxvY2FsTmFtZXM7aWYobnVsbCE9PW8pe2xldCBpPWUuaW5kZXgrMTtmb3IobGV0IGE9MDthPG8ubGVuZ3RoO2ErPTIpe2NvbnN0IHI9b1thKzFdLHM9LTE9PT1yP24oZSx0KTp0W3JdO3RbaSsrXT1zfX19ZnVuY3Rpb24gRGQodCl7Y29uc3QgZT10LnRWaWV3O2lmKG51bGw9PT1lfHxlLmluY29tcGxldGVGaXJzdFBhc3Mpe3JldHVybiB0LnRWaWV3PVJkKDEsbnVsbCx0LnRlbXBsYXRlLHQuZGVjbHMsdC52YXJzLHQuZGlyZWN0aXZlRGVmcyx0LnBpcGVEZWZzLHQudmlld1F1ZXJ5LHQuc2NoZW1hcyx0LmNvbnN0cyl9cmV0dXJuIGV9ZnVuY3Rpb24gUmQodCxlLG4sbyxpLGEscixzLGwsYyl7bmdEZXZNb2RlJiZuZ0Rldk1vZGUudFZpZXcrKztjb25zdCBkPXZvK28scD1kK2ksbT0oZnVuY3Rpb24gZih0LGUpe2NvbnN0IG49bmdEZXZNb2RlP25ldyBRYzpbXTtmb3IobGV0IG89MDtvPGU7bysrKW4ucHVzaChvPHQ/bnVsbDpTYyk7cmV0dXJuIG59KShkLHApLHU9ImZ1bmN0aW9uIj09dHlwZW9mIGM/YygpOmMsZz1tWzFdPW5nRGV2TW9kZT9uZXcgY2xhc3N7Y29uc3RydWN0b3IodCxlLG4sbyxpLGEscixzLGwsYyxkLHAsbSxmLHUsZyxoLGIseSxfLEMsTSx2LHgsTyxQLHcsayxTLEQsUixFKXt0aGlzLnR5cGU9dCx0aGlzLmJsdWVwcmludD1lLHRoaXMudGVtcGxhdGU9bix0aGlzLnF1ZXJpZXM9byx0aGlzLnZpZXdRdWVyeT1pLHRoaXMuZGVjbFROb2RlPWEsdGhpcy5kYXRhPXIsdGhpcy5iaW5kaW5nU3RhcnRJbmRleD1zLHRoaXMuZXhwYW5kb1N0YXJ0SW5kZXg9bCx0aGlzLmhvc3RCaW5kaW5nT3BDb2Rlcz1jLHRoaXMuZmlyc3RDcmVhdGVQYXNzPWQsdGhpcy5maXJzdFVwZGF0ZVBhc3M9cCx0aGlzLnN0YXRpY1ZpZXdRdWVyaWVzPW0sdGhpcy5zdGF0aWNDb250ZW50UXVlcmllcz1mLHRoaXMucHJlT3JkZXJIb29rcz11LHRoaXMucHJlT3JkZXJDaGVja0hvb2tzPWcsdGhpcy5jb250ZW50SG9va3M9aCx0aGlzLmNvbnRlbnRDaGVja0hvb2tzPWIsdGhpcy52aWV3SG9va3M9eSx0aGlzLnZpZXdDaGVja0hvb2tzPV8sdGhpcy5kZXN0cm95SG9va3M9Qyx0aGlzLmNsZWFudXA9TSx0aGlzLmNvbnRlbnRRdWVyaWVzPXYsdGhpcy5jb21wb25lbnRzPXgsdGhpcy5kaXJlY3RpdmVSZWdpc3RyeT1PLHRoaXMucGlwZVJlZ2lzdHJ5PVAsdGhpcy5maXJzdENoaWxkPXcsdGhpcy5zY2hlbWFzPWssdGhpcy5jb25zdHM9Uyx0aGlzLmluY29tcGxldGVGaXJzdFBhc3M9RCx0aGlzLl9kZWNscz1SLHRoaXMuX3ZhcnM9RX1nZXQgdGVtcGxhdGVfKCl7Y29uc3QgdD1bXTtyZXR1cm4gWGModGhpcy5maXJzdENoaWxkLHQpLHQuam9pbigiIil9Z2V0IHR5cGVfKCl7cmV0dXJuIHhvW3RoaXMudHlwZV18fGBUVmlld1R5cGUuPyR7dGhpcy50eXBlfT9gfX0odCxtLG4sbnVsbCxzLGUsKGZ1bmN0aW9uIGgodCl7cmV0dXJuIHZvaWQgMD09PUpjJiYoSmM9bmV3IEtjKSxKYy5jb25jYXQodCl9KShtKS5maWxsKG51bGwsZCksZCxwLG51bGwsITAsITAsITEsITEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwiZnVuY3Rpb24iPT10eXBlb2YgYT9hKCk6YSwiZnVuY3Rpb24iPT10eXBlb2Ygcj9yKCk6cixudWxsLGwsdSwhMSxvLGkpOnt0eXBlOnQsYmx1ZXByaW50Om0sdGVtcGxhdGU6bixxdWVyaWVzOm51bGwsdmlld1F1ZXJ5OnMsZGVjbFROb2RlOmUsZGF0YTptLnNsaWNlKCkuZmlsbChudWxsLGQpLGJpbmRpbmdTdGFydEluZGV4OmQsZXhwYW5kb1N0YXJ0SW5kZXg6cCxob3N0QmluZGluZ09wQ29kZXM6bnVsbCxmaXJzdENyZWF0ZVBhc3M6ITAsZmlyc3RVcGRhdGVQYXNzOiEwLHN0YXRpY1ZpZXdRdWVyaWVzOiExLHN0YXRpY0NvbnRlbnRRdWVyaWVzOiExLHByZU9yZGVySG9va3M6bnVsbCxwcmVPcmRlckNoZWNrSG9va3M6bnVsbCxjb250ZW50SG9va3M6bnVsbCxjb250ZW50Q2hlY2tIb29rczpudWxsLHZpZXdIb29rczpudWxsLHZpZXdDaGVja0hvb2tzOm51bGwsZGVzdHJveUhvb2tzOm51bGwsY2xlYW51cDpudWxsLGNvbnRlbnRRdWVyaWVzOm51bGwsY29tcG9uZW50czpudWxsLGRpcmVjdGl2ZVJlZ2lzdHJ5OiJmdW5jdGlvbiI9PXR5cGVvZiBhP2EoKTphLHBpcGVSZWdpc3RyeToiZnVuY3Rpb24iPT10eXBlb2Ygcj9yKCk6cixmaXJzdENoaWxkOm51bGwsc2NoZW1hczpsLGNvbnN0czp1LGluY29tcGxldGVGaXJzdFBhc3M6ITF9O3JldHVybiBuZ0Rldk1vZGUmJk9iamVjdC5zZWFsKGcpLGd9ZnVuY3Rpb24gRWQodCxlKXtyZXR1cm4gbmV3IEVycm9yKGBSZW5kZXJlcjogJHt0fSBbJHtzbihlKX1dYCl9ZnVuY3Rpb24gQWQodCxlLG4pe2lmKHJpKHQpKXtyZXR1cm4gdC5zZWxlY3RSb290RWxlbWVudChlLG49PT1Xbi5TaGFkb3dEb20pfWxldCBvPSJzdHJpbmciPT10eXBlb2YgZT90LnF1ZXJ5U2VsZWN0b3IoZSk6ZTtyZXR1cm4gbmdEZXZNb2RlJiYoZnVuY3Rpb24gaSh0LGUpe2lmKCF0KXRocm93IEVkKCJzdHJpbmciPT10eXBlb2YgZT8iSG9zdCBub2RlIHdpdGggc2VsZWN0b3Igbm90IGZvdW5kOiI6Ikhvc3Qgbm9kZSBpcyByZXF1aXJlZDoiLGUpfSkobyxlKSxvLnRleHRDb250ZW50PSIiLG99ZnVuY3Rpb24gVGQodCxlLG4sbyl7Y29uc3QgaT1kcChlKTtudWxsPT09bj8obmdEZXZNb2RlJiZPYmplY3QuZnJlZXplKHBwKHQpKSxpLnB1c2gobykpOihpLnB1c2gobiksdC5maXJzdENyZWF0ZVBhc3MmJnBwKHQpLnB1c2gobyxpLmxlbmd0aC0xKSl9ZnVuY3Rpb24gTmQodCxlLG4pe2ZvcihsZXQgbyBpbiB0KWlmKHQuaGFzT3duUHJvcGVydHkobykpe2NvbnN0IGk9dFtvXTsobj1udWxsPT09bj97fTpuKS5oYXNPd25Qcm9wZXJ0eShvKT9uW29dLnB1c2goZSxpKTpuW29dPVtlLGldfXJldHVybiBufWZ1bmN0aW9uIHpkKHQsZSxuLG8saSxhLHIscyl7bmdEZXZNb2RlJiZ5bihpLFNjLCJJbmNvbWluZyB2YWx1ZSBzaG91bGQgbmV2ZXIgYmUgTk9fQ0hBTkdFLiIpO2NvbnN0IGw9ZGkoZSxuKTtsZXQgYyxkPWUuaW5wdXRzO2lmKCFzJiZudWxsIT1kJiYoYz1kW29dKSl1cCh0LG4sYyxvLGkpLFNvKGUpJiYoZnVuY3Rpb24gcCh0LGUpe25nRGV2TW9kZSYmRm8odCk7Y29uc3Qgbj1maShlLHQpOzE2Jm5bMl18fChuWzJdfD02NCl9KShuLGUuaW5kZXgpLG5nRGV2TW9kZSYmKGZ1bmN0aW9uIG0odCxlLG4sbyxpKXtpZig3Jm4pZm9yKGxldCBhPTA7YTxvLmxlbmd0aDthKz0yKUlkKHQsZSxuLG9bYSsxXSxpKX0pKG4sbCxlLnR5cGUsYyxpKTtlbHNlIGlmKDMmZS50eXBlKXtpZihvPShmdW5jdGlvbiBmKHQpe3JldHVybiJjbGFzcyI9PT10PyJjbGFzc05hbWUiOiJmb3IiPT09dD8iaHRtbEZvciI6ImZvcm1hY3Rpb24iPT09dD8iZm9ybUFjdGlvbiI6ImlubmVySHRtbCI9PT10PyJpbm5lckhUTUwiOiJyZWFkb25seSI9PT10PyJyZWFkT25seSI6InRhYmluZGV4Ij09PXQ/InRhYkluZGV4Ijp0fSkobyksbmdEZXZNb2RlKXtpZigoZnVuY3Rpb24gdSh0KXtpZih0LnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aCgib24iKSl7Y29uc3QgZT1gQmluZGluZyB0byBldmVudCBwcm9wZXJ0eSAnJHt0fScgaXMgZGlzYWxsb3dlZCBmb3Igc2VjdXJpdHkgcmVhc29ucywgcGxlYXNlIHVzZSAoJHt0LnNsaWNlKDIpfSk9Li4uXG5JZiAnJHt0fScgaXMgYSBkaXJlY3RpdmUgaW5wdXQsIG1ha2Ugc3VyZSB0aGUgZGlyZWN0aXZlIGlzIGltcG9ydGVkIGJ5IHRoZSBjdXJyZW50IG1vZHVsZS5gO3Rocm93IG5ldyBFcnJvcihlKX19KShvKSwhKGZ1bmN0aW9uIGcodCxlLG4sbyl7aWYobnVsbD09PXQuc2NoZW1hcylyZXR1cm4hMDtpZihIZCh0LG8udmFsdWUpfHxuIGluIGV8fHlhKG4pKXJldHVybiEwO3JldHVybiJ1bmRlZmluZWQiPT10eXBlb2YgTm9kZXx8bnVsbD09PU5vZGV8fCEoZSBpbnN0YW5jZW9mIE5vZGUpfSkodCxsLG8sZSkpcmV0dXJuIHZvaWQgRmQobyxlKTtuZ0Rldk1vZGUucmVuZGVyZXJTZXRQcm9wZXJ0eSsrfWk9bnVsbCE9cj9yKGksZS52YWx1ZXx8IiIsbyk6aSxyaShhKT9hLnNldFByb3BlcnR5KGwsbyxpKTp5YShvKXx8KGwuc2V0UHJvcGVydHk/bC5zZXRQcm9wZXJ0eShvLGkpOmxbb109aSl9ZWxzZSAxMiZlLnR5cGUmJm5nRGV2TW9kZSYmIUhkKHQsZS52YWx1ZSkmJkZkKG8sZSl9ZnVuY3Rpb24gSWQodCxlLG4sbyxpKXtjb25zdCBhPXRbMTFdO289TWwobyk7Y29uc3Qgcj0oZnVuY3Rpb24gcyh0KXt0cnl7cmV0dXJuIG51bGwhPXQ/dC50b1N0cmluZygpLnNsaWNlKDAsMzApOnR9Y2F0Y2godCl7cmV0dXJuIltFUlJPUl0gRXhjZXB0aW9uIHdoaWxlIHRyeWluZyB0byBzZXJpYWxpemUgdGhlIHZhbHVlIn19KShpKTtpZigzJm4pbnVsbD09aT9yaShhKT9hLnJlbW92ZUF0dHJpYnV0ZShlLG8pOmUucmVtb3ZlQXR0cmlidXRlKG8pOnJpKGEpP2Euc2V0QXR0cmlidXRlKGUsbyxyKTplLnNldEF0dHJpYnV0ZShvLHIpO2Vsc2V7Y29uc3QgdD1fbChgYmluZGluZ3M9JHtKU09OLnN0cmluZ2lmeSh7W29dOnJ9LG51bGwsMil9YCk7cmkoYSk/YS5zZXRWYWx1ZShlLHQpOmUudGV4dENvbnRlbnQ9dH19ZnVuY3Rpb24gSGQodCxlKXtjb25zdCBuPXQuc2NoZW1hcztpZihudWxsIT09bilmb3IobGV0IHQ9MDt0PG4ubGVuZ3RoO3QrKyl7Y29uc3Qgbz1uW3RdO2lmKG89PT1obHx8bz09PWdsJiZlJiZlLmluZGV4T2YoIi0iKT4tMSlyZXR1cm4hMH1yZXR1cm4hMX1mdW5jdGlvbiBGZCh0LGUpe2NvbnNvbGUuZXJyb3IoYW4oIjMwMyIsYENhbid0IGJpbmQgdG8gJyR7dH0nIHNpbmNlIGl0IGlzbid0IGEga25vd24gcHJvcGVydHkgb2YgJyR7ZS52YWx1ZX0nLmApKX1mdW5jdGlvbiBMZCh0LGUsbixvKXtuZ0Rldk1vZGUmJkxvKHQpO2xldCBpPSExO2lmKENpKCkpe2NvbnN0IGE9KGZ1bmN0aW9uIGEodCxlLG4pe25nRGV2TW9kZSYmTG8odCksbmdEZXZNb2RlJiZnYShuLDE1KTtjb25zdCBvPXQuZGlyZWN0aXZlUmVnaXN0cnk7bGV0IGk9bnVsbDtpZihvKWZvcihsZXQgYT0wO2E8by5sZW5ndGg7YSsrKXtjb25zdCByPW9bYV07T2MobixyLnNlbGVjdG9ycywhMSkmJihpfHwoaT1uZ0Rldk1vZGU/bmV3ICRjOltdKSxFYShrYShuLGUpLHQsci50eXBlKSxSbyhyKT8obmdEZXZNb2RlJiYoZ2EobiwyLGAiJHtuLnZhbHVlfSIgdGFncyBjYW5ub3QgYmUgdXNlZCBhcyBjb21wb25lbnQgaG9zdHMuIFBsZWFzZSB1c2UgYSBkaWZmZXJlbnQgdGFnIHRvIGFjdGl2YXRlIHRoZSAke0tlKHIudHlwZSl9IGNvbXBvbmVudC5gKSwyJm4uZmxhZ3MmJkRsKG4pKSxqZCh0LG4pLGkudW5zaGlmdChyKSk6aS5wdXNoKHIpKX1yZXR1cm4gaX0pKHQsZSxuKSxyPW51bGw9PT1vP251bGw6eyIiOi0xfTtpZihudWxsIT09YSl7aT0hMCxXZChuLHQuZGF0YS5sZW5ndGgsYS5sZW5ndGgpO2ZvcihsZXQgdD0wO3Q8YS5sZW5ndGg7dCsrKXtjb25zdCBlPWFbdF07ZS5wcm92aWRlcnNSZXNvbHZlciYmZS5wcm92aWRlcnNSZXNvbHZlcihlKX1sZXQgbz0hMSxzPSExLGw9TWQodCxlLGEubGVuZ3RoLG51bGwpO25nRGV2TW9kZSYmYm4obCxuLmRpcmVjdGl2ZVN0YXJ0LCJUTm9kZS5kaXJlY3RpdmVTdGFydCBzaG91bGQgcG9pbnQgdG8ganVzdCBhbGxvY2F0ZWQgc3BhY2UiKTtmb3IobGV0IGk9MDtpPGEubGVuZ3RoO2krKyl7Y29uc3QgYz1hW2ldO24ubWVyZ2VkQXR0cnM9X2Eobi5tZXJnZWRBdHRycyxjLmhvc3RBdHRycyksR2QodCxuLGUsbCxjKSxVZChsLGMsciksbnVsbCE9PWMuY29udGVudFF1ZXJpZXMmJihuLmZsYWdzfD04KSxudWxsPT09Yy5ob3N0QmluZGluZ3MmJm51bGw9PT1jLmhvc3RBdHRycyYmMD09PWMuaG9zdFZhcnN8fChuLmZsYWdzfD0xMjgpO2NvbnN0IGQ9Yy50eXBlLnByb3RvdHlwZTshbyYmKGQubmdPbkNoYW5nZXN8fGQubmdPbkluaXR8fGQubmdEb0NoZWNrKSYmKCh0LnByZU9yZGVySG9va3N8fCh0LnByZU9yZGVySG9va3M9W10pKS5wdXNoKG4uaW5kZXgpLG89ITApLHN8fCFkLm5nT25DaGFuZ2VzJiYhZC5uZ0RvQ2hlY2t8fCgodC5wcmVPcmRlckNoZWNrSG9va3N8fCh0LnByZU9yZGVyQ2hlY2tIb29rcz1bXSkpLnB1c2gobi5pbmRleCkscz0hMCksbCsrfSEoZnVuY3Rpb24gcih0LGUpe25nRGV2TW9kZSYmTG8odCk7Y29uc3Qgbj1lLmRpcmVjdGl2ZVN0YXJ0LG89ZS5kaXJlY3RpdmVFbmQsaT10LmRhdGEsYT1lLmF0dHJzLHI9bmdEZXZNb2RlP25ldyBuZDpbXTtsZXQgcz1udWxsLGw9bnVsbDtmb3IobGV0IHQ9bjt0PG87dCsrKXtjb25zdCBuPWlbdF0sbz1uLmlucHV0cyxjPW51bGw9PT1hfHxfYyhlKT9udWxsOktkKG8sYSk7ci5wdXNoKGMpLHM9TmQobyx0LHMpLGw9TmQobi5vdXRwdXRzLHQsbCl9bnVsbCE9PXMmJihzLmhhc093blByb3BlcnR5KCJjbGFzcyIpJiYoZS5mbGFnc3w9MTYpLHMuaGFzT3duUHJvcGVydHkoInN0eWxlIikmJihlLmZsYWdzfD0zMikpLGUuaW5pdGlhbElucHV0cz1yLGUuaW5wdXRzPXMsZS5vdXRwdXRzPWx9KSh0LG4pfXImJihmdW5jdGlvbiBzKHQsZSxuKXtpZihlKXtjb25zdCBvPXQubG9jYWxOYW1lcz1uZ0Rldk1vZGU/bmV3IGVkOltdO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCs9Mil7Y29uc3QgaT1uW2VbdCsxXV07aWYobnVsbD09aSl0aHJvdyBuZXcgbm4oIjMwMSIsYEV4cG9ydCBvZiBuYW1lICcke2VbdCsxXX0nIG5vdCBmb3VuZCFgKTtvLnB1c2goZVt0XSxpKX19fSkobixvLHIpfXJldHVybiBuLm1lcmdlZEF0dHJzPV9hKG4ubWVyZ2VkQXR0cnMsbi5hdHRycyksaX1mdW5jdGlvbiBCZCh0LGUsbixvLGksYSl7bmdEZXZNb2RlJiZMbyh0KTtjb25zdCByPWEuaG9zdEJpbmRpbmdzO2lmKHIpe2xldCBuPXQuaG9zdEJpbmRpbmdPcENvZGVzO251bGw9PT1uJiYobj10Lmhvc3RCaW5kaW5nT3BDb2Rlcz1bXSk7Y29uc3QgYT1+ZS5pbmRleDsoZnVuY3Rpb24gcyh0KXtsZXQgZT10Lmxlbmd0aDtmb3IoO2U+MDspe2NvbnN0IG49dFstLWVdO2lmKCJudW1iZXIiPT10eXBlb2YgbiYmbjwwKXJldHVybiBufXJldHVybiAwfSkobikhPWEmJm4ucHVzaChhKSxuLnB1c2gobyxpLHIpfX1mdW5jdGlvbiBWZCh0LGUpe251bGwhPT10Lmhvc3RCaW5kaW5ncyYmdC5ob3N0QmluZGluZ3MoMSxlKX1mdW5jdGlvbiBqZCh0LGUpe25nRGV2TW9kZSYmTG8odCksZS5mbGFnc3w9MiwodC5jb21wb25lbnRzfHwodC5jb21wb25lbnRzPW5nRGV2TW9kZT9uZXcgdGQ6W10pKS5wdXNoKGUuaW5kZXgpfWZ1bmN0aW9uIFVkKHQsZSxuKXtpZihuKXtpZihlLmV4cG9ydEFzKWZvcihsZXQgbz0wO288ZS5leHBvcnRBcy5sZW5ndGg7bysrKW5bZS5leHBvcnRBc1tvXV09dDtSbyhlKSYmKG5bIiJdPXQpfX1mdW5jdGlvbiBXZCh0LGUsbil7bmdEZXZNb2RlJiZobihuLHQuZGlyZWN0aXZlRW5kLXQuZGlyZWN0aXZlU3RhcnQsIlJlYWNoZWQgdGhlIG1heCBudW1iZXIgb2YgZGlyZWN0aXZlcyIpLHQuZmxhZ3N8PTEsdC5kaXJlY3RpdmVTdGFydD1lLHQuZGlyZWN0aXZlRW5kPWUrbix0LnByb3ZpZGVySW5kZXhlcz1lfWZ1bmN0aW9uIEdkKHQsZSxuLG8saSl7bmdEZXZNb2RlJiZ2bihvLHZvLCJNdXN0IGJlIGluIEV4cGFuZG8gc2VjdGlvbiIpLHQuZGF0YVtvXT1pO2NvbnN0IGE9aS5mYWN0b3J5fHwoaS5mYWN0b3J5PUdvKGkudHlwZSwhMCkpLHI9bmV3IGZhKGEsUm8oaSksbnVsbCk7dC5ibHVlcHJpbnRbb109cixuW29dPXIsQmQodCxlLDAsbyxNZCh0LG4saS5ob3N0VmFycyxTYyksaSl9ZnVuY3Rpb24gWWQodCxlLG4pe2NvbnN0IG89ZGkoZSx0KSxpPURkKG4pLGE9dFsxMF0scj1ucCh0LHlkKHQsaSxudWxsLG4ub25QdXNoPzY0OjE2LG8sZSxhLGEuY3JlYXRlUmVuZGVyZXIobyxuKSxudWxsLG51bGwpKTt0W2UuaW5kZXhdPXJ9ZnVuY3Rpb24gcWQodCxlLG4sbyxpLGEpe25nRGV2TW9kZSYmKHluKG8sU2MsIkluY29taW5nIHZhbHVlIHNob3VsZCBuZXZlciBiZSBOT19DSEFOR0UuIiksKGZ1bmN0aW9uIHIodCl7aWYodC50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoIm9uIikpe2NvbnN0IGU9YEJpbmRpbmcgdG8gZXZlbnQgYXR0cmlidXRlICcke3R9JyBpcyBkaXNhbGxvd2VkIGZvciBzZWN1cml0eSByZWFzb25zLCBwbGVhc2UgdXNlICgke3Quc2xpY2UoMil9KT0uLi5gO3Rocm93IG5ldyBFcnJvcihlKX19KShuKSxnYSh0LDIsYEF0dGVtcHRlZCB0byBzZXQgYXR0cmlidXRlIFxgJHtufVxgIG9uIGEgY29udGFpbmVyIG5vZGUuIEhvc3QgYmluZGluZ3MgYXJlIG5vdCB2YWxpZCBvbiBuZy1jb250YWluZXIgb3IgbmctdGVtcGxhdGUuYCkpO2NvbnN0IHM9ZGkodCxlKTtaZChlWzExXSxzLGEsdC52YWx1ZSxuLG8saSl9ZnVuY3Rpb24gWmQodCxlLG4sbyxpLGEscil7aWYobnVsbD09YSluZ0Rldk1vZGUmJm5nRGV2TW9kZS5yZW5kZXJlclJlbW92ZUF0dHJpYnV0ZSsrLHJpKHQpP3QucmVtb3ZlQXR0cmlidXRlKGUsaSxuKTplLnJlbW92ZUF0dHJpYnV0ZShpKTtlbHNle25nRGV2TW9kZSYmbmdEZXZNb2RlLnJlbmRlcmVyU2V0QXR0cmlidXRlKys7Y29uc3Qgcz1udWxsPT1yP3JuKGEpOnIoYSxvfHwiIixpKTtyaSh0KT90LnNldEF0dHJpYnV0ZShlLGkscyxuKTpuP2Uuc2V0QXR0cmlidXRlTlMobixpLHMpOmUuc2V0QXR0cmlidXRlKGkscyl9fWZ1bmN0aW9uIFhkKHQsZSxuLG8saSxhKXtjb25zdCByPWFbZV07aWYobnVsbCE9PXIpe2NvbnN0IGU9by5zZXRJbnB1dDtmb3IobGV0IGE9MDthPHIubGVuZ3RoOyl7Y29uc3Qgcz1yW2ErK10sbD1yW2ErK10sYz1yW2ErK107aWYobnVsbCE9PWU/by5zZXRJbnB1dChuLGMscyxsKTpuW2xdPWMsbmdEZXZNb2RlKXtJZCh0LGRpKGksdCksaS50eXBlLGwsYyl9fX19ZnVuY3Rpb24gS2QodCxlKXtsZXQgbj1udWxsLG89MDtmb3IoO288ZS5sZW5ndGg7KXtjb25zdCBpPWVbb107aWYoMCE9PWkpaWYoNSE9PWkpe2lmKCJudW1iZXIiPT10eXBlb2YgaSlicmVhazt0Lmhhc093blByb3BlcnR5KGkpJiYobnVsbD09PW4mJihuPVtdKSxuLnB1c2goaSx0W2ldLGVbbysxXSkpLG8rPTJ9ZWxzZSBvKz0yO2Vsc2Ugbys9NH1yZXR1cm4gbn1jb25zdCBKZD0oInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJktuKCkmJkNsKCJMQ29udGFpbmVyIik7ZnVuY3Rpb24gUWQodCxlLG4sbyl7bmdEZXZNb2RlJiZGbyhlKSxuZ0Rldk1vZGUmJiFyaShlWzExXSkmJlBuKG4pO2NvbnN0IGk9bmV3KG5nRGV2TW9kZT9KZDpBcnJheSkodCwhMCwhMSxlLG51bGwsMCxvLG4sbnVsbCxudWxsKTtyZXR1cm4gbmdEZXZNb2RlJiZnbihpLmxlbmd0aCxPbywiU2hvdWxkIGFsbG9jYXRlIGNvcnJlY3QgbnVtYmVyIG9mIHNsb3RzIGZvciBMQ29udGFpbmVyIGhlYWRlci4iKSxuZ0Rldk1vZGUmJihmdW5jdGlvbiBhKHQpe0xjKHQsbmV3IGdkKHQpKX0pKGkpLGl9ZnVuY3Rpb24gJGQodCxlKXtuZ0Rldk1vZGUmJmduKHVpKHQpLCExLCJTaG91bGQgYmUgcnVuIGluIHVwZGF0ZSBtb2RlIik7Y29uc3Qgbj1maShlLHQpO2lmKGdpKG4pKXtjb25zdCB0PW5bMV07ODAmblsyXT94ZCh0LG4sdC50ZW1wbGF0ZSxuWzhdKTpuWzVdPjAmJnRwKG4pfX1mdW5jdGlvbiB0cCh0KXtmb3IobGV0IGU9SWwodCk7bnVsbCE9PWU7ZT1IbChlKSlmb3IobGV0IHQ9T287dDxlLmxlbmd0aDt0Kyspe2NvbnN0IG49ZVt0XTtpZigxMDI0Jm5bMl0pe2NvbnN0IHQ9blsxXTtuZ0Rldk1vZGUmJnhuKHQsIlRWaWV3IG11c3QgYmUgYWxsb2NhdGVkIikseGQodCxuLHQudGVtcGxhdGUsbls4XSl9ZWxzZSBuWzVdPjAmJnRwKG4pfWNvbnN0IGU9dFsxXS5jb21wb25lbnRzO2lmKG51bGwhPT1lKWZvcihsZXQgbj0wO248ZS5sZW5ndGg7bisrKXtjb25zdCBvPWZpKGVbbl0sdCk7Z2kobykmJm9bNV0+MCYmdHAobyl9fWZ1bmN0aW9uIGVwKHQsZSl7bmdEZXZNb2RlJiZnbih1aSh0KSwhMCwiU2hvdWxkIGJlIHJ1biBpbiBjcmVhdGlvbiBtb2RlIik7Y29uc3Qgbj1maShlLHQpLG89blsxXTshKGZ1bmN0aW9uIGkodCxlKXtmb3IobGV0IG49ZS5sZW5ndGg7bjx0LmJsdWVwcmludC5sZW5ndGg7bisrKWUucHVzaCh0LmJsdWVwcmludFtuXSl9KShvLG4pLHZkKG8sbixuWzhdKX1mdW5jdGlvbiBucCh0LGUpe3JldHVybiB0WzEzXT90WzE0XVs0XT1lOnRbMTNdPWUsdFsxNF09ZSxlfWZ1bmN0aW9uIG9wKHQpe2Zvcig7dDspe3RbMl18PTY0O2NvbnN0IGU9TmwodCk7aWYoMCE9KDUxMiZ0WzJdKSYmIWUpcmV0dXJuIHQ7dD1lfXJldHVybiBudWxsfWZ1bmN0aW9uIGlwKHQpe2ZvcihsZXQgZT0wO2U8dC5jb21wb25lbnRzLmxlbmd0aDtlKyspe2NvbnN0IG49dC5jb21wb25lbnRzW2VdLG89c2wobiksaT1vWzFdO09kKGksbyxpLnRlbXBsYXRlLG4pfX1mdW5jdGlvbiBhcCh0LGUsbil7Y29uc3Qgbz1lWzEwXTtvLmJlZ2luJiZvLmJlZ2luKCk7dHJ5e3hkKHQsZSx0LnRlbXBsYXRlLG4pfWNhdGNoKHQpe3Rocm93IGZwKGUsdCksdH1maW5hbGx5e28uZW5kJiZvLmVuZCgpfX1mdW5jdGlvbiBycCh0KXtpcCh0WzhdKX1mdW5jdGlvbiBzcCh0LGUsbil7bmdEZXZNb2RlJiZ4bihlLCJWaWV3IHF1ZXJpZXMgZnVuY3Rpb24gdG8gZXhlY3V0ZSBtdXN0IGJlIGRlZmluZWQuIiksV2koMCksZSh0LG4pfWZ1bmN0aW9uIGxwKHQsZSxuLG8sLi4uaSl7aWYobnVsbD09PXRbb10mJihudWxsPT1lLmlucHV0c3x8IWUuaW5wdXRzW25dKSl7KGUucHJvcGVydHlCaW5kaW5nc3x8KGUucHJvcGVydHlCaW5kaW5ncz1bXSkpLnB1c2gobyk7bGV0IGE9bjtpLmxlbmd0aD4wJiYoYSs9a2wraS5qb2luKGtsKSksdFtvXT1hfX1jb25zdCBjcD1oZDtmdW5jdGlvbiBkcCh0KXtyZXR1cm4gdFs3XXx8KHRbN109bmdEZXZNb2RlP25ldyBvZDpbXSl9ZnVuY3Rpb24gcHAodCl7cmV0dXJuIHQuY2xlYW51cHx8KHQuY2xlYW51cD1uZ0Rldk1vZGU/bmV3IGlkOltdKX1mdW5jdGlvbiBtcCh0LGUsbil7cmV0dXJuKG51bGw9PT10fHxSbyh0KSkmJihuPShmdW5jdGlvbiBvKHQpe2Zvcig7QXJyYXkuaXNBcnJheSh0KTspe2lmKCJvYmplY3QiPT10eXBlb2YgdFsxXSlyZXR1cm4gdDt0PXRbMF19cmV0dXJuIG51bGx9KShuW2UuaW5kZXhdKSksblsxMV19ZnVuY3Rpb24gZnAodCxlKXtjb25zdCBuPXRbOV0sbz1uP24uZ2V0KHVsLG51bGwpOm51bGw7byYmby5oYW5kbGVFcnJvcihlKX1mdW5jdGlvbiB1cCh0LGUsbixvLGkpe2ZvcihsZXQgYT0wO2E8bi5sZW5ndGg7KXtjb25zdCByPW5bYSsrXSxzPW5bYSsrXSxsPWVbcl07bmdEZXZNb2RlJiZ3bihlLHIpO2NvbnN0IGM9dC5kYXRhW3JdO251bGwhPT1jLnNldElucHV0P2Muc2V0SW5wdXQobCxpLG8scyk6bFtzXT1pfX1mdW5jdGlvbiBncCh0LGUsbil7bmdEZXZNb2RlJiZmbihuLCJWYWx1ZSBzaG91bGQgYmUgYSBzdHJpbmciKSxuZ0Rldk1vZGUmJnluKG4sU2MsInZhbHVlIHNob3VsZCBub3QgYmUgTk9fQ0hBTkdFIiksbmdEZXZNb2RlJiZ3bih0LGUpO2NvbnN0IG89Y2koZSx0KTtuZ0Rldk1vZGUmJnhuKG8sIm5hdGl2ZSBlbGVtZW50IHNob3VsZCBleGlzdCIpLFZsKHRbMTFdLG8sbil9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIGhwKHQsZSxuKXtuZ0Rldk1vZGUmJkxvKE9pKCksIkV4cGVjdGluZyB0byBiZSBjYWxsZWQgaW4gZmlyc3QgdGVtcGxhdGUgcGFzcyBvbmx5Iik7bGV0IG89bj90LnN0eWxlczpudWxsLGk9bj90LmNsYXNzZXM6bnVsbCxhPTA7aWYobnVsbCE9PWUpZm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0Kyspe2NvbnN0IG49ZVt0XTtpZigibnVtYmVyIj09dHlwZW9mIG4pYT1uO2Vsc2UgaWYoMT09YSlpPUplKGksbik7ZWxzZSBpZigyPT1hKXtvPUplKG8sbisiOiAiK2VbKyt0XSsiOyIpfX1uP3Quc3R5bGVzPW86dC5zdHlsZXNXaXRob3V0SG9zdD1vLG4/dC5jbGFzc2VzPWk6dC5jbGFzc2VzV2l0aG91dEhvc3Q9aX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gYnAodCl7bmdEZXZNb2RlJiZ4bih0LCJjb21wb25lbnQiKTtjb25zdCBlPW9wKGlsKHQpKTtuZ0Rldk1vZGUmJnhuKGVbOF0sInJvb3RDb250ZXh0IHNob3VsZCBiZSBkZWZpbmVkIiksKGZ1bmN0aW9uIG4odCxlKXtpZigwPT09dC5mbGFncyYmdC5jbGVhbj09aGQpe2xldCBuO3QuZmxhZ3N8PWUsdC5jbGVhbj1uZXcgUHJvbWlzZSgodD0+bj10KSksdC5zY2hlZHVsZXIoKCgpPT57aWYoMSZ0LmZsYWdzJiYodC5mbGFncyY9LTIsaXAodCkpLDImdC5mbGFncyl7dC5mbGFncyY9LTM7Y29uc3QgZT10LnBsYXllckhhbmRsZXI7ZSYmZS5mbHVzaFBsYXllcnMoKX10LmNsZWFuPWhkLG4obnVsbCl9KSl9fSkoZVs4XSwxKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3QgeXA9bmV3IGVyKCJJTkpFQ1RPUiIsLTEpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBfcHtnZXQodCxlPXdyKXtpZihlPT09d3Ipe2NvbnN0IGU9bmV3IEVycm9yKGBOdWxsSW5qZWN0b3JFcnJvcjogTm8gcHJvdmlkZXIgZm9yICR7S2UodCl9IWApO3Rocm93IGUubmFtZT0iTnVsbEluamVjdG9yRXJyb3IiLGV9cmV0dXJuIGV9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jb25zdCBDcD1uZXcgZXIoIlNldCBJbmplY3RvciBzY29wZS4iKSxNcD17fSx2cD17fTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovbGV0IHhwO2Z1bmN0aW9uIE9wKCl7cmV0dXJuIHZvaWQgMD09PXhwJiYoeHA9bmV3IF9wKSx4cH1mdW5jdGlvbiBQcCh0LGU9bnVsbCxuPW51bGwsbyl7cmV0dXJuIG5ldyB3cCh0LG4sZXx8T3AoKSxvKX1jbGFzcyB3cHtjb25zdHJ1Y3Rvcih0LGUsbixvPW51bGwpe3RoaXMucGFyZW50PW4sdGhpcy5yZWNvcmRzPW5ldyBNYXAsdGhpcy5pbmplY3RvckRlZlR5cGVzPW5ldyBTZXQsdGhpcy5vbkRlc3Ryb3k9bmV3IFNldCx0aGlzLl9kZXN0cm95ZWQ9ITE7Y29uc3QgaT1bXTtlJiZtcihlLChuPT50aGlzLnByb2Nlc3NQcm92aWRlcihuLHQsZSkpKSxtcihbdF0sKHQ9PnRoaXMucHJvY2Vzc0luamVjdG9yVHlwZSh0LFtdLGkpKSksdGhpcy5yZWNvcmRzLnNldCh5cCxEcCh2b2lkIDAsdGhpcykpO2NvbnN0IGE9dGhpcy5yZWNvcmRzLmdldChDcCk7dGhpcy5zY29wZT1udWxsIT1hP2EudmFsdWU6bnVsbCx0aGlzLnNvdXJjZT1vfHwoIm9iamVjdCI9PXR5cGVvZiB0P251bGw6S2UodCkpfWdldCBkZXN0cm95ZWQoKXtyZXR1cm4gdGhpcy5fZGVzdHJveWVkfWRlc3Ryb3koKXt0aGlzLmFzc2VydE5vdERlc3Ryb3llZCgpLHRoaXMuX2Rlc3Ryb3llZD0hMDt0cnl7dGhpcy5vbkRlc3Ryb3kuZm9yRWFjaCgodD0+dC5uZ09uRGVzdHJveSgpKSl9ZmluYWxseXt0aGlzLnJlY29yZHMuY2xlYXIoKSx0aGlzLm9uRGVzdHJveS5jbGVhcigpLHRoaXMuaW5qZWN0b3JEZWZUeXBlcy5jbGVhcigpfX1nZXQodCxlPXdyLG49SG4uRGVmYXVsdCl7dGhpcy5hc3NlcnROb3REZXN0cm95ZWQoKTtjb25zdCBvPUVyKHRoaXMpLGk9TG4odm9pZCAwKTt0cnl7aWYoIShuJkhuLlNraXBTZWxmKSl7bGV0IGU9dGhpcy5yZWNvcmRzLmdldCh0KTtpZih2b2lkIDA9PT1lKXtjb25zdCBuPShmdW5jdGlvbiBvKHQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0fHwib2JqZWN0Ij09dHlwZW9mIHQmJnQgaW5zdGFuY2VvZiBlcn0pKHQpJiZSbih0KTtlPW4mJnRoaXMuaW5qZWN0YWJsZURlZkluU2NvcGUobik/RHAoa3AodCksTXApOm51bGwsdGhpcy5yZWNvcmRzLnNldCh0LGUpfWlmKG51bGwhPWUpcmV0dXJuIHRoaXMuaHlkcmF0ZSh0LGUpfXJldHVybihuJkhuLlNlbGY/T3AoKTp0aGlzLnBhcmVudCkuZ2V0KHQsZT1uJkhuLk9wdGlvbmFsJiZlPT09d3I/bnVsbDplKX1jYXRjaChlKXtpZigiTnVsbEluamVjdG9yRXJyb3IiPT09ZS5uYW1lKXtpZigoZS5uZ1RlbXBUb2tlblBhdGg9ZS5uZ1RlbXBUb2tlblBhdGh8fFtdKS51bnNoaWZ0KEtlKHQpKSxvKXRocm93IGU7cmV0dXJuIEZyKGUsdCwiUjNJbmplY3RvckVycm9yIix0aGlzLnNvdXJjZSl9dGhyb3cgZX1maW5hbGx5e0xuKGkpLEVyKG8pfX1fcmVzb2x2ZUluamVjdG9yRGVmVHlwZXMoKXt0aGlzLmluamVjdG9yRGVmVHlwZXMuZm9yRWFjaCgodD0+dGhpcy5nZXQodCkpKX10b1N0cmluZygpe2NvbnN0IHQ9W107cmV0dXJuIHRoaXMucmVjb3Jkcy5mb3JFYWNoKCgoZSxuKT0+dC5wdXNoKEtlKG4pKSkpLGBSM0luamVjdG9yWyR7dC5qb2luKCIsICIpfV1gfWFzc2VydE5vdERlc3Ryb3llZCgpe2lmKHRoaXMuX2Rlc3Ryb3llZCl0aHJvdyBuZXcgRXJyb3IoIkluamVjdG9yIGhhcyBhbHJlYWR5IGJlZW4gZGVzdHJveWVkLiIpfXByb2Nlc3NJbmplY3RvclR5cGUodCxlLG4pe2lmKCEodD10bih0KSkpcmV0dXJuITE7bGV0IG89QW4odCk7Y29uc3QgaT1udWxsPT1vJiZ0Lm5nTW9kdWxlfHx2b2lkIDAsYT12b2lkIDA9PT1pP3Q6aTtpZihuZ0Rldk1vZGUmJi0xIT09ZS5pbmRleE9mKGEpKXtsbihLZShhKSxlLm1hcChLZSkpfWNvbnN0IHI9LTEhPT1uLmluZGV4T2YoYSk7aWYodm9pZCAwIT09aSYmKG89QW4oaSkpLG51bGw9PW8pcmV0dXJuITE7aWYobnVsbCE9by5pbXBvcnRzJiYhcil7bGV0IHQ7bmdEZXZNb2RlJiZlLnB1c2goYSksbi5wdXNoKGEpO3RyeXttcihvLmltcG9ydHMsKG89Pnt0aGlzLnByb2Nlc3NJbmplY3RvclR5cGUobyxlLG4pJiYodm9pZCAwPT09dCYmKHQ9W10pLHQucHVzaChvKSl9KSl9ZmluYWxseXtuZ0Rldk1vZGUmJmUucG9wKCl9aWYodm9pZCAwIT09dClmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKyl7Y29uc3R7bmdNb2R1bGU6bixwcm92aWRlcnM6b309dFtlXTttcihvLCh0PT50aGlzLnByb2Nlc3NQcm92aWRlcih0LG4sb3x8UW4pKSl9fXRoaXMuaW5qZWN0b3JEZWZUeXBlcy5hZGQoYSk7Y29uc3Qgcz1HbyhhKXx8KCgpPT5uZXcgYSk7dGhpcy5yZWNvcmRzLnNldChhLERwKHMsTXApKTtjb25zdCBsPW8ucHJvdmlkZXJzO2lmKG51bGwhPWwmJiFyKXtjb25zdCBlPXQ7bXIobCwodD0+dGhpcy5wcm9jZXNzUHJvdmlkZXIodCxlLGwpKSl9cmV0dXJuIHZvaWQgMCE9PWkmJnZvaWQgMCE9PXQucHJvdmlkZXJzfXByb2Nlc3NQcm92aWRlcih0LGUsbil7bGV0IG89RXAodD10bih0KSk/dDp0bih0JiZ0LnByb3ZpZGUpO2NvbnN0IGk9KGZ1bmN0aW9uIGEodCxlLG4pe2lmKFJwKHQpKXJldHVybiBEcCh2b2lkIDAsdC51c2VWYWx1ZSk7cmV0dXJuIERwKFNwKHQsZSxuKSxNcCl9KSh0LGUsbik7aWYoRXAodCl8fCEwIT09dC5tdWx0aSl7Y29uc3QgdD10aGlzLnJlY29yZHMuZ2V0KG8pO25nRGV2TW9kZSYmdCYmdm9pZCAwIT09dC5tdWx0aSYmY24oKX1lbHNle2xldCBlPXRoaXMucmVjb3Jkcy5nZXQobyk7ZT9uZ0Rldk1vZGUmJnZvaWQgMD09PWUubXVsdGkmJmNuKCk6KGU9RHAodm9pZCAwLE1wLCEwKSxlLmZhY3Rvcnk9KCk9PklyKGUubXVsdGkpLHRoaXMucmVjb3Jkcy5zZXQobyxlKSksbz10LGUubXVsdGkucHVzaCh0KX10aGlzLnJlY29yZHMuc2V0KG8saSl9aHlkcmF0ZSh0LGUpe3JldHVybiBuZ0Rldk1vZGUmJmUudmFsdWU9PT12cD9sbihLZSh0KSk6ZS52YWx1ZT09PU1wJiYoZS52YWx1ZT12cCxlLnZhbHVlPWUuZmFjdG9yeSgpKSwib2JqZWN0Ij09dHlwZW9mIGUudmFsdWUmJmUudmFsdWUmJihmdW5jdGlvbiBuKHQpe3JldHVybiBudWxsIT09dCYmIm9iamVjdCI9PXR5cGVvZiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgdC5uZ09uRGVzdHJveX0pKGUudmFsdWUpJiZ0aGlzLm9uRGVzdHJveS5hZGQoZS52YWx1ZSksZS52YWx1ZX1pbmplY3RhYmxlRGVmSW5TY29wZSh0KXtpZighdC5wcm92aWRlZEluKXJldHVybiExO2NvbnN0IGU9dG4odC5wcm92aWRlZEluKTtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGU/ImFueSI9PT1lfHxlPT09dGhpcy5zY29wZTp0aGlzLmluamVjdG9yRGVmVHlwZXMuaGFzKGUpfX1mdW5jdGlvbiBrcCh0KXtjb25zdCBlPVJuKHQpLG49bnVsbCE9PWU/ZS5mYWN0b3J5OkdvKHQpO2lmKG51bGwhPT1uKXJldHVybiBuO2lmKHQgaW5zdGFuY2VvZiBlcil0aHJvdyBuZXcgRXJyb3IoYFRva2VuICR7S2UodCl9IGlzIG1pc3NpbmcgYSDJtXByb3YgZGVmaW5pdGlvbi5gKTtpZih0IGluc3RhbmNlb2YgRnVuY3Rpb24pcmV0dXJuKGZ1bmN0aW9uIG8odCl7Y29uc3QgZT10Lmxlbmd0aDtpZihlPjApe2NvbnN0IG49Z3IoZSwiPyIpO3Rocm93IG5ldyBFcnJvcihgQ2FuJ3QgcmVzb2x2ZSBhbGwgcGFyYW1ldGVycyBmb3IgJHtLZSh0KX06ICgke24uam9pbigiLCAiKX0pLmApfWNvbnN0IG49KGZ1bmN0aW9uIG8odCl7Y29uc3QgZT10JiYodFtUbl18fHRbem5dKTtpZihlKXtjb25zdCBuPShmdW5jdGlvbiBuKHQpe2lmKHQuaGFzT3duUHJvcGVydHkoIm5hbWUiKSlyZXR1cm4gdC5uYW1lO2NvbnN0IGU9KCIiK3QpLm1hdGNoKC9eZnVuY3Rpb25ccyooW15ccyhdKykvKTtyZXR1cm4gbnVsbD09PWU/IiI6ZVsxXX0pKHQpO3JldHVybiBjb25zb2xlLndhcm4oYERFUFJFQ0FURUQ6IERJIGlzIGluc3RhbnRpYXRpbmcgYSB0b2tlbiAiJHtufSIgdGhhdCBpbmhlcml0cyBpdHMgQEluamVjdGFibGUgZGVjb3JhdG9yIGJ1dCBkb2VzIG5vdCBwcm92aWRlIG9uZSBpdHNlbGYuXG5UaGlzIHdpbGwgYmVjb21lIGFuIGVycm9yIGluIGEgZnV0dXJlIHZlcnNpb24gb2YgQW5ndWxhci4gUGxlYXNlIGFkZCBASW5qZWN0YWJsZSgpIHRvIHRoZSAiJHtufSIgY2xhc3MuYCksZX1yZXR1cm4gbnVsbH0pKHQpO3JldHVybiBudWxsIT09bj8oKT0+bi5mYWN0b3J5KHQpOigpPT5uZXcgdH0pKHQpO3Rocm93IG5ldyBFcnJvcigidW5yZWFjaGFibGUiKX1mdW5jdGlvbiBTcCh0LGUsbil7bGV0IG87aWYoRXAodCkpe2NvbnN0IGU9dG4odCk7cmV0dXJuIEdvKGUpfHxrcChlKX1pZihScCh0KSlvPSgpPT50bih0LnVzZVZhbHVlKTtlbHNlIGlmKChmdW5jdGlvbiBpKHQpe3JldHVybiEoIXR8fCF0LnVzZUZhY3RvcnkpfSkodCkpbz0oKT0+dC51c2VGYWN0b3J5KC4uLklyKHQuZGVwc3x8W10pKTtlbHNlIGlmKChmdW5jdGlvbiBhKHQpe3JldHVybiEoIXR8fCF0LnVzZUV4aXN0aW5nKX0pKHQpKW89KCk9PlRyKHRuKHQudXNlRXhpc3RpbmcpKTtlbHNle2NvbnN0IGk9dG4odCYmKHQudXNlQ2xhc3N8fHQucHJvdmlkZSkpO2lmKG5nRGV2TW9kZSYmIWkmJihmdW5jdGlvbiByKHQsZSxuKXtsZXQgbz0iIjt0JiZlJiYobz1gIC0gb25seSBpbnN0YW5jZXMgb2YgUHJvdmlkZXIgYW5kIFR5cGUgYXJlIGFsbG93ZWQsIGdvdDogWyR7ZS5tYXAoKHQ9PnQ9PW4/Ij8iK24rIj8iOiIuLi4iKSkuam9pbigiLCAiKX1dYCk7dGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHByb3ZpZGVyIGZvciB0aGUgTmdNb2R1bGUgJyR7S2UodCl9J2Arbyl9KShlLG4sdCksIShmdW5jdGlvbiBzKHQpe3JldHVybiEhdC5kZXBzfSkodCkpcmV0dXJuIEdvKGkpfHxrcChpKTtvPSgpPT5uZXcgaSguLi5Jcih0LmRlcHMpKX1yZXR1cm4gb31mdW5jdGlvbiBEcCh0LGUsbj0hMSl7cmV0dXJue2ZhY3Rvcnk6dCx2YWx1ZTplLG11bHRpOm4/W106dm9pZCAwfX1mdW5jdGlvbiBScCh0KXtyZXR1cm4gbnVsbCE9PXQmJiJvYmplY3QiPT10eXBlb2YgdCYmRHIgaW4gdH1mdW5jdGlvbiBFcCh0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdH1jb25zdCBBcD1mdW5jdGlvbiBUcCh0LGUsbil7cmV0dXJuKGZ1bmN0aW9uIG8odCxlPW51bGwsbj1udWxsLGkpe2NvbnN0IGE9UHAodCxlLG4saSk7cmV0dXJuIGEuX3Jlc29sdmVJbmplY3RvckRlZlR5cGVzKCksYX0pKHtuYW1lOm59LGUsdCxuKX07Y2xhc3MgTnB7c3RhdGljIGNyZWF0ZSh0LGUpe3JldHVybiBBcnJheS5pc0FycmF5KHQpP0FwKHQsZSwiIik6QXAodC5wcm92aWRlcnMsdC5wYXJlbnQsdC5uYW1lfHwiIil9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KZnVuY3Rpb24genAodCl7R3AodCk7Y29uc3QgZT1ubCh0KTtyZXR1cm4gbnVsbD09PWU/bnVsbDoodm9pZCAwPT09ZS5jb21wb25lbnQmJihlLmNvbXBvbmVudD0oZnVuY3Rpb24gbih0LGUpe2NvbnN0IG49ZVsxXS5kYXRhW3RdO3JldHVybiAyJm4uZmxhZ3M/ZVtuLmRpcmVjdGl2ZVN0YXJ0XTpudWxsfSkoZS5ub2RlSW5kZXgsZS5sVmlldykpLGUuY29tcG9uZW50KX1mdW5jdGlvbiBJcCh0KXtHcCh0KTtjb25zdCBlPW5sKHQpO3JldHVybiBudWxsPT09ZT9udWxsOmUubFZpZXdbOF19ZnVuY3Rpb24gSHAodCl7Y29uc3QgZT1ubCh0KTtpZihudWxsPT09ZSlyZXR1cm4gbnVsbDtsZXQgbixvPWUubFZpZXc7Zm9yKG5nRGV2TW9kZSYmRm8obyk7Mj09PW9bMV0udHlwZSYmKG49TmwobykpOylvPW47cmV0dXJuIDUxMiZvWzJdP251bGw6b1s4XX1mdW5jdGlvbiBGcCh0KXtyZXR1cm5bLi4uemwodCkuY29tcG9uZW50c119ZnVuY3Rpb24gTHAodCl7Y29uc3QgZT1ubCh0KTtpZihudWxsPT09ZSlyZXR1cm4gTnAuTlVMTDtyZXR1cm4gbmV3IGphKGUubFZpZXdbMV0uZGF0YVtlLm5vZGVJbmRleF0sZS5sVmlldyl9ZnVuY3Rpb24gQnAodCl7aWYodCBpbnN0YW5jZW9mIFRleHQpcmV0dXJuW107Y29uc3QgZT1ubCh0KTtpZihudWxsPT09ZSlyZXR1cm5bXTtjb25zdCBuPWUubFZpZXcsbz1uWzFdLGk9ZS5ub2RlSW5kZXg7cmV0dXJuKG51bGw9PW8/dm9pZCAwOm8uZGF0YVtpXSk/KHZvaWQgMD09PWUuZGlyZWN0aXZlcyYmKGUuZGlyZWN0aXZlcz1wbChpLG4sITEpKSxudWxsPT09ZS5kaXJlY3RpdmVzP1tdOlsuLi5lLmRpcmVjdGl2ZXNdKTpbXX1mdW5jdGlvbiBWcCh0KXtjb25zdHtjb25zdHJ1Y3RvcjplfT10O2lmKCFlKXRocm93IG5ldyBFcnJvcigiVW5hYmxlIHRvIGZpbmQgdGhlIGluc3RhbmNlIGNvbnN0cnVjdG9yIik7Y29uc3Qgbj15byhlKTtpZihuKXJldHVybntpbnB1dHM6bi5pbnB1dHMsb3V0cHV0czpuLm91dHB1dHMsZW5jYXBzdWxhdGlvbjpuLmVuY2Fwc3VsYXRpb24sY2hhbmdlRGV0ZWN0aW9uOm4ub25QdXNoP2puLk9uUHVzaDpqbi5EZWZhdWx0fTtjb25zdCBvPV9vKGUpO3JldHVybiBvP3tpbnB1dHM6by5pbnB1dHMsb3V0cHV0czpvLm91dHB1dHN9Om51bGx9ZnVuY3Rpb24ganAodCl7cmV0dXJuIG5sKHQpLm5hdGl2ZX1mdW5jdGlvbiBVcCh0KXtHcCh0KTtjb25zdCBlPW5sKHQpO2lmKG51bGw9PT1lKXJldHVybltdO2NvbnN0IG49ZS5sVmlldyxvPW5bN10saT1uWzFdLmNsZWFudXAsYT1bXTtpZihpJiZvKWZvcihsZXQgZT0wO2U8aS5sZW5ndGg7KXtjb25zdCByPWlbZSsrXSxzPWlbZSsrXTtpZigic3RyaW5nIj09dHlwZW9mIHIpe2NvbnN0IGw9cixjPWxpKG5bc10pLGQ9b1tpW2UrK11dLHA9aVtlKytdLG09ImJvb2xlYW4iPT10eXBlb2YgcHx8cD49MD8iZG9tIjoib3V0cHV0IixmPSJib29sZWFuIj09dHlwZW9mIHAmJnA7dD09YyYmYS5wdXNoKHtlbGVtZW50OnQsbmFtZTpsLGNhbGxiYWNrOmQsdXNlQ2FwdHVyZTpmLHR5cGU6bX0pfX1yZXR1cm4gYS5zb3J0KFdwKSxhfWZ1bmN0aW9uIFdwKHQsZSl7cmV0dXJuIHQubmFtZT09ZS5uYW1lPzA6dC5uYW1lPGUubmFtZT8tMToxfWZ1bmN0aW9uIEdwKHQpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgRWxlbWVudCYmISh0IGluc3RhbmNlb2YgRWxlbWVudCkpdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RpbmcgaW5zdGFuY2Ugb2YgRE9NIEVsZW1lbnQiKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gWXAodCl7YnAodCksRnAodCkuZm9yRWFjaCgodD0+KGZ1bmN0aW9uIGUodCl7Y29uc3QgZT1pbCh0KTthcChlWzFdLGUsdCl9KSh0KSkpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9OcC5USFJPV19JRl9OT1RfRk9VTkQ9d3IsTnAuTlVMTD1uZXcgX3AsTnAuybVwcm92PVNuKHt0b2tlbjpOcCxwcm92aWRlZEluOiJhbnkiLGZhY3Rvcnk6KCk9PlRyKHlwKX0pLE5wLl9fTkdfRUxFTUVOVF9JRF9fPS0xO2xldCBxcD0hMTtmdW5jdGlvbiBacCh0LGUpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgQ09NUElMRUR8fCFDT01QSUxFRCl7Y29uc3Qgbj1YbjtpZihuZ0Rldk1vZGUmJnhuKGUsImZ1bmN0aW9uIG5vdCBkZWZpbmVkIiksbil7bGV0IG89bi5uZztvfHwobz1uLm5nPXt9KSxvW3RdPWV9fX1mdW5jdGlvbiBYcCh0LGUsbixvLGkpe2NvbnN0IGE9blsxXSxyPShmdW5jdGlvbiBzKHQsZSxuKXtjb25zdCBvPXdpKCk7aWYodC5maXJzdENyZWF0ZVBhc3Mpe24ucHJvdmlkZXJzUmVzb2x2ZXImJm4ucHJvdmlkZXJzUmVzb2x2ZXIobik7Y29uc3QgaT1NZCh0LGUsMSxudWxsKTtuZ0Rldk1vZGUmJmduKGksby5kaXJlY3RpdmVTdGFydCwiQmVjYXVzZSB0aGlzIGlzIGEgcm9vdCBjb21wb25lbnQgdGhlIGFsbG9jYXRlZCBleHBhbmRvIHNob3VsZCBtYXRjaCB0aGUgVE5vZGUgY29tcG9uZW50LiIpLEdkKHQsbyxlLGksbil9Y29uc3QgaT1MYShlLHQsby5kaXJlY3RpdmVTdGFydCxvKTthbChpLGUpO2NvbnN0IGE9ZGkobyxlKTtyZXR1cm4gYSYmYWwoYSxlKSxpfSkoYSxuLGUpO2lmKG8uY29tcG9uZW50cy5wdXNoKHIpLHRbOF09cixpJiZpLmZvckVhY2goKHQ9PnQocixlKSkpLGUuY29udGVudFF1ZXJpZXMpe2NvbnN0IHQ9d2koKTtuZ0Rldk1vZGUmJnhuKHQsIlROb2RlIGV4cGVjdGVkIiksZS5jb250ZW50UXVlcmllcygxLHIsdC5kaXJlY3RpdmVTdGFydCl9Y29uc3QgbD13aSgpO2lmKG5nRGV2TW9kZSYmeG4obCwidE5vZGUgc2hvdWxkIGhhdmUgYmVlbiBhbHJlYWR5IGNyZWF0ZWQiKSxhLmZpcnN0Q3JlYXRlUGFzcyYmKG51bGwhPT1lLmhvc3RCaW5kaW5nc3x8bnVsbCE9PWUuaG9zdEF0dHJzKSl7ZWEobC5pbmRleCk7QmQoblsxXSxsLDAsbC5kaXJlY3RpdmVTdGFydCxsLmRpcmVjdGl2ZUVuZCxlKSxWZChlLHIpfXJldHVybiByfWZ1bmN0aW9uIEtwKHQsZSl7Y29uc3Qgbj1zbCh0KTtuZ0Rldk1vZGUmJnhuKG4sIkxWaWV3IGlzIHJlcXVpcmVkIik7Y29uc3Qgbz1uWzFdLGk9d2koKTtuZ0Rldk1vZGUmJnhuKGksIlROb2RlIGlzIHJlcXVpcmVkIikscmEobyxpKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gSnAodCl7cmV0dXJuIE9iamVjdC5nZXRQcm90b3R5cGVPZih0LnByb3RvdHlwZSkuY29uc3RydWN0b3J9ZnVuY3Rpb24gUXAodCl7bGV0IGU9SnAodC50eXBlKSxuPSEwO2NvbnN0IG89W3RdO2Zvcig7ZTspe2xldCBpO2lmKFJvKHQpKWk9ZS7JtWNtcHx8ZS7JtWRpcjtlbHNle2lmKGUuybVjbXApdGhyb3cgbmV3IEVycm9yKCJEaXJlY3RpdmVzIGNhbm5vdCBpbmhlcml0IENvbXBvbmVudHMiKTtpPWUuybVkaXJ9aWYoaSl7aWYobil7by5wdXNoKGkpO2NvbnN0IGU9dDtlLmlucHV0cz0kcCh0LmlucHV0cyksZS5kZWNsYXJlZElucHV0cz0kcCh0LmRlY2xhcmVkSW5wdXRzKSxlLm91dHB1dHM9JHAodC5vdXRwdXRzKTtjb25zdCBuPWkuaG9zdEJpbmRpbmdzO24mJm5tKHQsbik7Y29uc3QgYT1pLnZpZXdRdWVyeSxyPWkuY29udGVudFF1ZXJpZXM7aWYoYSYmdG0odCxhKSxyJiZlbSh0LHIpLFhlKHQuaW5wdXRzLGkuaW5wdXRzKSxYZSh0LmRlY2xhcmVkSW5wdXRzLGkuZGVjbGFyZWRJbnB1dHMpLFhlKHQub3V0cHV0cyxpLm91dHB1dHMpLFJvKGkpJiZpLmRhdGEuYW5pbWF0aW9uKXtjb25zdCBlPXQuZGF0YTtlLmFuaW1hdGlvbj0oZS5hbmltYXRpb258fFtdKS5jb25jYXQoaS5kYXRhLmFuaW1hdGlvbil9fWNvbnN0IGU9aS5mZWF0dXJlcztpZihlKWZvcihsZXQgbz0wO288ZS5sZW5ndGg7bysrKXtjb25zdCBpPWVbb107aSYmaS5uZ0luaGVyaXQmJmkodCksaT09PVFwJiYobj0hMSl9fWU9T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpfSEoZnVuY3Rpb24gaSh0KXtsZXQgZT0wLG49bnVsbDtmb3IobGV0IG89dC5sZW5ndGgtMTtvPj0wO28tLSl7Y29uc3QgaT10W29dO2kuaG9zdFZhcnM9ZSs9aS5ob3N0VmFycyxpLmhvc3RBdHRycz1fYShpLmhvc3RBdHRycyxuPV9hKG4saS5ob3N0QXR0cnMpKX19KShvKX1mdW5jdGlvbiAkcCh0KXtyZXR1cm4gdD09PUpuP3t9OnQ9PT1Rbj9bXTp0fWZ1bmN0aW9uIHRtKHQsZSl7Y29uc3Qgbj10LnZpZXdRdWVyeTt0LnZpZXdRdWVyeT1uPyh0LG8pPT57ZSh0LG8pLG4odCxvKX06ZX1mdW5jdGlvbiBlbSh0LGUpe2NvbnN0IG49dC5jb250ZW50UXVlcmllczt0LmNvbnRlbnRRdWVyaWVzPW4/KHQsbyxpKT0+e2UodCxvLGkpLG4odCxvLGkpfTplfWZ1bmN0aW9uIG5tKHQsZSl7Y29uc3Qgbj10Lmhvc3RCaW5kaW5nczt0Lmhvc3RCaW5kaW5ncz1uPyh0LG8pPT57ZSh0LG8pLG4odCxvKX06ZX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3Qgb209WyJwcm92aWRlcnNSZXNvbHZlciJdLGltPVsidGVtcGxhdGUiLCJkZWNscyIsImNvbnN0cyIsInZhcnMiLCJvblB1c2giLCJuZ0NvbnRlbnRTZWxlY3RvcnMiLCJzdHlsZXMiLCJlbmNhcHN1bGF0aW9uIiwic2NoZW1hcyJdO2Z1bmN0aW9uIGFtKHQpe2xldCBlLG49SnAodC50eXBlKTtlPVJvKHQpP24uybVjbXA6bi7JtWRpcjtjb25zdCBvPXQ7Zm9yKGNvbnN0IHQgb2Ygb20pb1t0XT1lW3RdO2lmKFJvKGUpKWZvcihjb25zdCB0IG9mIGltKW9bdF09ZVt0XX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovbGV0IHJtPW51bGw7ZnVuY3Rpb24gc20oKXtpZighcm0pe2NvbnN0IHQ9WG4uU3ltYm9sO2lmKHQmJnQuaXRlcmF0b3Ipcm09dC5pdGVyYXRvcjtlbHNle2NvbnN0IHQ9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoTWFwLnByb3RvdHlwZSk7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDsrK2Upe2NvbnN0IG49dFtlXTsiZW50cmllcyIhPT1uJiYic2l6ZSIhPT1uJiZNYXAucHJvdG90eXBlW25dPT09TWFwLnByb3RvdHlwZS5lbnRyaWVzJiYocm09bil9fX1yZXR1cm4gcm19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIGxtKHQsZSl7Y29uc3Qgbj1kbSh0KSxvPWRtKGUpO2lmKG4mJm8pcmV0dXJuKGZ1bmN0aW9uIGkodCxlLG4pe2NvbnN0IG89dFtzbSgpXSgpLGk9ZVtzbSgpXSgpO2Zvcig7Oyl7Y29uc3QgdD1vLm5leHQoKSxlPWkubmV4dCgpO2lmKHQuZG9uZSYmZS5kb25lKXJldHVybiEwO2lmKHQuZG9uZXx8ZS5kb25lKXJldHVybiExO2lmKCFuKHQudmFsdWUsZS52YWx1ZSkpcmV0dXJuITF9fSkodCxlLGxtKTt7Y29uc3QgaT10JiYoIm9iamVjdCI9PXR5cGVvZiB0fHwiZnVuY3Rpb24iPT10eXBlb2YgdCksYT1lJiYoIm9iamVjdCI9PXR5cGVvZiBlfHwiZnVuY3Rpb24iPT10eXBlb2YgZSk7cmV0dXJuIShufHwhaXx8b3x8IWEpfHxPYmplY3QuaXModCxlKX19Y2xhc3MgY217Y29uc3RydWN0b3IodCl7dGhpcy53cmFwcGVkPXR9c3RhdGljIHdyYXAodCl7cmV0dXJuIG5ldyBjbSh0KX1zdGF0aWMgdW53cmFwKHQpe3JldHVybiBjbS5pc1dyYXBwZWQodCk/dC53cmFwcGVkOnR9c3RhdGljIGlzV3JhcHBlZCh0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIGNtfX1mdW5jdGlvbiBkbSh0KXtyZXR1cm4hIXBtKHQpJiYoQXJyYXkuaXNBcnJheSh0KXx8ISh0IGluc3RhbmNlb2YgTWFwKSYmc20oKWluIHQpfWZ1bmN0aW9uIHBtKHQpe3JldHVybiBudWxsIT09dCYmKCJmdW5jdGlvbiI9PXR5cGVvZiB0fHwib2JqZWN0Ij09dHlwZW9mIHQpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBtbSh0LGUsbil7cmV0dXJuIHRbZV09bn1mdW5jdGlvbiBmbSh0LGUpe3JldHVybiBuZ0Rldk1vZGUmJnduKHQsZSksbmdEZXZNb2RlJiZ5bih0W2VdLFNjLCJTdG9yZWQgdmFsdWUgc2hvdWxkIG5ldmVyIGJlIE5PX0NIQU5HRS4iKSx0W2VdfWZ1bmN0aW9uIHVtKHQsZSxuKXtuZ0Rldk1vZGUmJnluKG4sU2MsIkluY29taW5nIHZhbHVlIHNob3VsZCBuZXZlciBiZSBOT19DSEFOR0UuIiksbmdEZXZNb2RlJiZfbihlLHQubGVuZ3RoLCJTbG90IHNob3VsZCBoYXZlIGJlZW4gaW5pdGlhbGl6ZWQgdG8gTk9fQ0hBTkdFIik7Y29uc3Qgbz10W2VdO2lmKE9iamVjdC5pcyhvLG4pKXJldHVybiExO2lmKG5nRGV2TW9kZSYmQWkoKSl7Y29uc3QgaT1vIT09U2M/bzp2b2lkIDA7aWYoIWxtKGksbikpe2NvbnN0IGE9KGZ1bmN0aW9uIGkodCxlLG4sbyl7Y29uc3QgaT10WzFdLmRhdGEsYT1pW2VdO2lmKCJzdHJpbmciPT10eXBlb2YgYSlyZXR1cm4gYS5pbmRleE9mKGtsKT4tMT9SbCh0LGUsZSxhLG8pOntwcm9wTmFtZTphLG9sZFZhbHVlOm4sbmV3VmFsdWU6b307aWYobnVsbD09PWEpe2xldCBuPWUtMTtmb3IoOyJzdHJpbmciIT10eXBlb2YgaVtuXSYmbnVsbD09PWlbbisxXTspbi0tO2NvbnN0IGE9aVtuXTtpZigic3RyaW5nIj09dHlwZW9mIGEpe2NvbnN0IGk9YS5tYXRjaChuZXcgUmVnRXhwKGtsLCJnIikpO2lmKGkmJmkubGVuZ3RoLTE+ZS1uKXJldHVybiBSbCh0LG4sZSxhLG8pfX1yZXR1cm57cHJvcE5hbWU6dm9pZCAwLG9sZFZhbHVlOm4sbmV3VmFsdWU6b319KSh0LGUsaSxuKTshKGZ1bmN0aW9uIGEodCxlLG4sbyl7bGV0IGk9YEV4cHJlc3Npb25DaGFuZ2VkQWZ0ZXJJdEhhc0JlZW5DaGVja2VkRXJyb3I6IEV4cHJlc3Npb24gaGFzIGNoYW5nZWQgYWZ0ZXIgaXQgd2FzIGNoZWNrZWQuIFByZXZpb3VzIHZhbHVlJHtvP2AgZm9yICcke299J2A6IiJ9OiAnJHtlfScuIEN1cnJlbnQgdmFsdWU6ICcke259Jy5gO3Rocm93IHQmJihpKz0iIEl0IHNlZW1zIGxpa2UgdGhlIHZpZXcgaGFzIGJlZW4gY3JlYXRlZCBhZnRlciBpdHMgcGFyZW50IGFuZCBpdHMgY2hpbGRyZW4gaGF2ZSBiZWVuIGRpcnR5IGNoZWNrZWQuIEhhcyBpdCBiZWVuIGNyZWF0ZWQgaW4gYSBjaGFuZ2UgZGV0ZWN0aW9uIGhvb2s/IiksbmV3IG5uKCIxMDAiLGkpfSkobz09PVNjLGEub2xkVmFsdWUsYS5uZXdWYWx1ZSxhLnByb3BOYW1lKX1yZXR1cm4hMX1yZXR1cm4gdFtlXT1uLCEwfWZ1bmN0aW9uIGdtKHQsZSxuLG8pe2NvbnN0IGk9dW0odCxlLG4pO3JldHVybiB1bSh0LGUrMSxvKXx8aX1mdW5jdGlvbiBobSh0LGUsbixvLGkpe2NvbnN0IGE9Z20odCxlLG4sbyk7cmV0dXJuIHVtKHQsZSsyLGkpfHxhfWZ1bmN0aW9uIGJtKHQsZSxuLG8saSxhKXtjb25zdCByPWdtKHQsZSxuLG8pO3JldHVybiBnbSh0LGUrMixpLGEpfHxyfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiB5bSh0LGUsbixvKXtjb25zdCBpPXhpKCksYT1IaSgpO2lmKHVtKGksYSxlKSl7Y29uc3Qgcj1PaSgpLHM9bmEoKTtxZChzLGksdCxlLG4sbyksbmdEZXZNb2RlJiZscChyLmRhdGEscywiYXR0ci4iK3QsYSl9cmV0dXJuIHltfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBfbSh0LGUpe25nRGV2TW9kZSYmX24oMixlLmxlbmd0aCwic2hvdWxkIGhhdmUgYXQgbGVhc3QgMyB2YWx1ZXMiKSxuZ0Rldk1vZGUmJmduKGUubGVuZ3RoJTIsMSwic2hvdWxkIGhhdmUgYW4gb2RkIG51bWJlciBvZiB2YWx1ZXMiKTtsZXQgbj0hMSxvPXppKCk7Zm9yKGxldCBpPTE7aTxlLmxlbmd0aDtpKz0yKW49dW0odCxvKyssZVtpXSl8fG47aWYoSWkobyksIW4pcmV0dXJuIFNjO2xldCBpPWVbMF07Zm9yKGxldCB0PTE7dDxlLmxlbmd0aDt0Kz0yKWkrPXJuKGVbdF0pK2VbdCsxXTtyZXR1cm4gaX1mdW5jdGlvbiBDbSh0LGUsbixvKXtyZXR1cm4gdW0odCxIaSgpLG4pP2Urcm4obikrbzpTY31mdW5jdGlvbiBNbSh0LGUsbixvLGksYSl7Y29uc3Qgcj1nbSh0LHppKCksbixpKTtyZXR1cm4gRmkoMikscj9lK3JuKG4pK28rcm4oaSkrYTpTY31mdW5jdGlvbiB2bSh0LGUsbixvLGksYSxyLHMpe2NvbnN0IGw9aG0odCx6aSgpLG4saSxyKTtyZXR1cm4gRmkoMyksbD9lK3JuKG4pK28rcm4oaSkrYStybihyKStzOlNjfWZ1bmN0aW9uIHhtKHQsZSxuLG8saSxhLHIscyxsLGMpe2NvbnN0IGQ9Ym0odCx6aSgpLG4saSxyLGwpO3JldHVybiBGaSg0KSxkP2Urcm4obikrbytybihpKSthK3JuKHIpK3Mrcm4obCkrYzpTY31mdW5jdGlvbiBPbSh0LGUsbixvLGksYSxyLHMsbCxjLGQscCl7Y29uc3QgbT16aSgpO2xldCBmPWJtKHQsbSxuLGkscixsKTtyZXR1cm4gZj11bSh0LG0rNCxkKXx8ZixGaSg1KSxmP2Urcm4obikrbytybihpKSthK3JuKHIpK3Mrcm4obCkrYytybihkKStwOlNjfWZ1bmN0aW9uIFBtKHQsZSxuLG8saSxhLHIscyxsLGMsZCxwLG0sZil7Y29uc3QgdT16aSgpO2xldCBnPWJtKHQsdSxuLGkscixsKTtyZXR1cm4gZz1nbSh0LHUrNCxkLG0pfHxnLEZpKDYpLGc/ZStybihuKStvK3JuKGkpK2Ercm4ocikrcytybihsKStjK3JuKGQpK3Arcm4obSkrZjpTY31mdW5jdGlvbiB3bSh0LGUsbixvLGksYSxyLHMsbCxjLGQscCxtLGYsdSxnKXtjb25zdCBoPXppKCk7bGV0IGI9Ym0odCxoLG4saSxyLGwpO3JldHVybiBiPWhtKHQsaCs0LGQsbSx1KXx8YixGaSg3KSxiP2Urcm4obikrbytybihpKSthK3JuKHIpK3Mrcm4obCkrYytybihkKStwK3JuKG0pK2Yrcm4odSkrZzpTY31mdW5jdGlvbiBrbSh0LGUsbixvLGksYSxyLHMsbCxjLGQscCxtLGYsdSxnLGgsYil7Y29uc3QgeT16aSgpO2xldCBfPWJtKHQseSxuLGkscixsKTtyZXR1cm4gXz1ibSh0LHkrNCxkLG0sdSxoKXx8XyxGaSg4KSxfP2Urcm4obikrbytybihpKSthK3JuKHIpK3Mrcm4obCkrYytybihkKStwK3JuKG0pK2Yrcm4odSkrZytybihoKStiOlNjfWZ1bmN0aW9uIFNtKHQsZSxuLG8saSxhKXtjb25zdCByPXhpKCkscz1DbShyLGUsbixvKTtpZihzIT09U2Mpe2NvbnN0IG49bmEoKTtxZChuLHIsdCxzLGksYSksbmdEZXZNb2RlJiZscChPaSgpLmRhdGEsbiwiYXR0ci4iK3QsemkoKS0xLGUsbyl9cmV0dXJuIFNtfWZ1bmN0aW9uIERtKHQsZSxuLG8saSxhLHIscyl7Y29uc3QgbD14aSgpLGM9TW0obCxlLG4sbyxpLGEpO2lmKGMhPT1TYyl7Y29uc3Qgbj1uYSgpO3FkKG4sbCx0LGMscixzKSxuZ0Rldk1vZGUmJmxwKE9pKCkuZGF0YSxuLCJhdHRyLiIrdCx6aSgpLTIsZSxvLGEpfXJldHVybiBEbX1mdW5jdGlvbiBSbSh0LGUsbixvLGksYSxyLHMsbCxjKXtjb25zdCBkPXhpKCkscD12bShkLGUsbixvLGksYSxyLHMpO2lmKHAhPT1TYyl7Y29uc3Qgbj1uYSgpO3FkKG4sZCx0LHAsbCxjKSxuZ0Rldk1vZGUmJmxwKE9pKCkuZGF0YSxuLCJhdHRyLiIrdCx6aSgpLTMsZSxvLGEscyl9cmV0dXJuIFJtfWZ1bmN0aW9uIEVtKHQsZSxuLG8saSxhLHIscyxsLGMsZCxwKXtjb25zdCBtPXhpKCksZj14bShtLGUsbixvLGksYSxyLHMsbCxjKTtpZihmIT09U2Mpe2NvbnN0IG49bmEoKTtxZChuLG0sdCxmLGQscCksbmdEZXZNb2RlJiZscChPaSgpLmRhdGEsbiwiYXR0ci4iK3QsemkoKS00LGUsbyxhLHMsYyl9cmV0dXJuIEVtfWZ1bmN0aW9uIEFtKHQsZSxuLG8saSxhLHIscyxsLGMsZCxwLG0sZil7Y29uc3QgdT14aSgpLGc9T20odSxlLG4sbyxpLGEscixzLGwsYyxkLHApO2lmKGchPT1TYyl7Y29uc3Qgbj1uYSgpO3FkKG4sdSx0LGcsbSxmKSxuZ0Rldk1vZGUmJmxwKE9pKCkuZGF0YSxuLCJhdHRyLiIrdCx6aSgpLTUsZSxvLGEscyxjLHApfXJldHVybiBBbX1mdW5jdGlvbiBUbSh0LGUsbixvLGksYSxyLHMsbCxjLGQscCxtLGYsdSxnKXtjb25zdCBoPXhpKCksYj1QbShoLGUsbixvLGksYSxyLHMsbCxjLGQscCxtLGYpO2lmKGIhPT1TYyl7Y29uc3Qgbj1uYSgpO3FkKG4saCx0LGIsdSxnKSxuZ0Rldk1vZGUmJmxwKE9pKCkuZGF0YSxuLCJhdHRyLiIrdCx6aSgpLTYsZSxvLGEscyxjLHAsZil9cmV0dXJuIFRtfWZ1bmN0aW9uIE5tKHQsZSxuLG8saSxhLHIscyxsLGMsZCxwLG0sZix1LGcsaCxiKXtjb25zdCB5PXhpKCksXz13bSh5LGUsbixvLGksYSxyLHMsbCxjLGQscCxtLGYsdSxnKTtpZihfIT09U2Mpe2NvbnN0IG49bmEoKTtxZChuLHksdCxfLGgsYiksbmdEZXZNb2RlJiZscChPaSgpLmRhdGEsbiwiYXR0ci4iK3QsemkoKS03LGUsbyxhLHMsYyxwLGYsZyl9cmV0dXJuIE5tfWZ1bmN0aW9uIHptKHQsZSxuLG8saSxhLHIscyxsLGMsZCxwLG0sZix1LGcsaCxiLHksXyl7Y29uc3QgQz14aSgpLE09a20oQyxlLG4sbyxpLGEscixzLGwsYyxkLHAsbSxmLHUsZyxoLGIpO2lmKE0hPT1TYyl7Y29uc3Qgbj1uYSgpO3FkKG4sQyx0LE0seSxfKSxuZ0Rldk1vZGUmJmxwKE9pKCkuZGF0YSxuLCJhdHRyLiIrdCx6aSgpLTgsZSxvLGEscyxjLHAsZixnLGIpfXJldHVybiB6bX1mdW5jdGlvbiBJbSh0LGUsbixvKXtjb25zdCBpPXhpKCksYT1fbShpLGUpO2lmKGEhPT1TYyl7Y29uc3Qgcj1uYSgpO2lmKHFkKHIsaSx0LGEsbixvKSxuZ0Rldk1vZGUpe2NvbnN0IG49W2VbMF1dO2ZvcihsZXQgdD0yO3Q8ZS5sZW5ndGg7dCs9MiluLnB1c2goZVt0XSk7bHAoT2koKS5kYXRhLHIsImF0dHIuIit0LHppKCktbi5sZW5ndGgrMSwuLi5uKX19cmV0dXJuIEltfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBIbSh0LGUsbixvLGksYSxyLHMpe2NvbnN0IGw9eGkoKSxjPU9pKCksZD10K3ZvLHA9Yy5maXJzdENyZWF0ZVBhc3M/KGZ1bmN0aW9uIG0odCxlLG4sbyxpLGEscixzLGwpe25nRGV2TW9kZSYmTG8oZSksbmdEZXZNb2RlJiZuZ0Rldk1vZGUuZmlyc3RDcmVhdGVQYXNzKys7Y29uc3QgYz1lLmNvbnN0cyxkPV9kKGUsdCw0LHJ8fG51bGwsaGkoYyxzKSk7TGQoZSxuLGQsaGkoYyxsKSkscmEoZSxkKTtjb25zdCBwPWQudFZpZXdzPVJkKDIsZCxvLGksYSxlLmRpcmVjdGl2ZVJlZ2lzdHJ5LGUucGlwZVJlZ2lzdHJ5LG51bGwsZS5zY2hlbWFzLGMpO3JldHVybiBudWxsIT09ZS5xdWVyaWVzJiYoZS5xdWVyaWVzLnRlbXBsYXRlKGUsZCkscC5xdWVyaWVzPWUucXVlcmllcy5lbWJlZGRlZFRWaWV3KGQpKSxkfSkoZCxjLGwsZSxuLG8saSxhLHIpOmMuZGF0YVtkXTtEaShwLCExKTtjb25zdCBmPWxbMTFdLmNyZWF0ZUNvbW1lbnQobmdEZXZNb2RlPyJjb250YWluZXIiOiIiKTtyYyhjLGwsZixwKSxhbChmLGwpLG5wKGwsbFtkXT1RZChmLGwsZixwKSksRG8ocCkmJmtkKGMsbCxwKSxudWxsIT1yJiZTZChsLHAscyl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIEZtKHQpe3JldHVybiBtaSgoZnVuY3Rpb24gZSgpe3JldHVybiBfaS5sRnJhbWUuY29udGV4dExWaWV3fSkoKSx2byt0KX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3QgTG09eyLJtcm1ZGVmaW5lSW5qZWN0YWJsZSI6U24sIsm1ybVkZWZpbmVJbmplY3RvciI6RG4sIsm1ybVpbmplY3QiOlRyLCLJtcm1aW52YWxpZEZhY3RvcnlEZXAiOk5yLHJlc29sdmVGb3J3YXJkUmVmOnRufTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3QgQm09WmUoe3Byb3ZpZGU6U3RyaW5nLHVzZVZhbHVlOlplfSk7ZnVuY3Rpb24gVm0odCl7cmV0dXJuIHZvaWQgMCE9PXQudXNlQ2xhc3N9ZnVuY3Rpb24gam0odCl7cmV0dXJuIHZvaWQgMCE9PXQudXNlRmFjdG9yeX1aZSh7cHJvdmlkZTpTdHJpbmcsdXNlVmFsdWU6WmV9KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IFVtPVhhKCJJbmplY3RhYmxlIix2b2lkIDAsdm9pZCAwLHZvaWQgMCwoKHQsZSk9PldtKHQsZSkpKSxXbT1mdW5jdGlvbiBHbSh0LGUpe2xldCBuPW51bGwsbz1udWxsO3QuaGFzT3duUHJvcGVydHkoVG4pfHxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxUbix7Z2V0OigpPT57aWYobnVsbD09PW4pe2NvbnN0IG89bHIoe3VzYWdlOjAsa2luZDoiaW5qZWN0YWJsZSIsdHlwZTp0fSk7bj1vLmNvbXBpbGVJbmplY3RhYmxlKExtLGBuZzovLy8ke3QubmFtZX0vybVwcm92LmpzYCwoZnVuY3Rpb24gbyh0LGUpe2NvbnN0IG49ZXx8e3Byb3ZpZGVkSW46bnVsbH0sbz17bmFtZTp0Lm5hbWUsdHlwZTp0LHR5cGVBcmd1bWVudENvdW50OjAscHJvdmlkZWRJbjpuLnByb3ZpZGVkSW59OyhWbShuKXx8am0obikpJiZ2b2lkIDAhPT1uLmRlcHMmJihvLmRlcHM9cXIobi5kZXBzKSk7Vm0obik/by51c2VDbGFzcz1uLnVzZUNsYXNzOiEoZnVuY3Rpb24gaSh0KXtyZXR1cm4gQm0gaW4gdH0pKG4pP2ptKG4pP28udXNlRmFjdG9yeT1uLnVzZUZhY3Rvcnk6KGZ1bmN0aW9uIGEodCl7cmV0dXJuIHZvaWQgMCE9PXQudXNlRXhpc3Rpbmd9KShuKSYmKG8udXNlRXhpc3Rpbmc9bi51c2VFeGlzdGluZyk6by51c2VWYWx1ZT1uLnVzZVZhbHVlO3JldHVybiBvfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8pKHQsZSkpfXJldHVybiBufX0pLHQuaGFzT3duUHJvcGVydHkoaW8pfHxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxpbyx7Z2V0OigpPT57aWYobnVsbD09PW8pe2NvbnN0IGU9bHIoe3VzYWdlOjAsa2luZDoiaW5qZWN0YWJsZSIsdHlwZTp0fSk7bz1lLmNvbXBpbGVGYWN0b3J5KExtLGBuZzovLy8ke3QubmFtZX0vybVmYWMuanNgLHtuYW1lOnQubmFtZSx0eXBlOnQsdHlwZUFyZ3VtZW50Q291bnQ6MCxkZXBzOllyKHQpLHRhcmdldDplLkZhY3RvcnlUYXJnZXQuSW5qZWN0YWJsZX0pfXJldHVybiBvfSxjb25maWd1cmFibGU6ITB9KX07ZnVuY3Rpb24gWW0odCl7aWYodC5sZW5ndGg+MSl7cmV0dXJuIiAoIisoCi8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpmdW5jdGlvbiBlKHQpe2NvbnN0IGU9W107Zm9yKGxldCBuPTA7bjx0Lmxlbmd0aDsrK24pe2lmKGUuaW5kZXhPZih0W25dKT4tMSlyZXR1cm4gZS5wdXNoKHRbbl0pLGU7ZS5wdXNoKHRbbl0pfXJldHVybiBlfSkodC5zbGljZSgpLnJldmVyc2UoKSkubWFwKCh0PT5LZSh0LnRva2VuKSkpLmpvaW4oIiAtPiAiKSsiKSJ9cmV0dXJuIiJ9ZnVuY3Rpb24gcW0odCxlLG4sbyl7Y29uc3QgaT1bZV0sYT1uKGkpLHI9bz8oZnVuY3Rpb24gcyh0LGUpe2NvbnN0IG49YCR7dH0gY2F1c2VkIGJ5OiAke2UgaW5zdGFuY2VvZiBFcnJvcj9lLm1lc3NhZ2U6ZX1gLG89RXJyb3Iobik7cmV0dXJuIG8ubmdPcmlnaW5hbEVycm9yPWUsb30pKGEsbyk6RXJyb3IoYSk7cmV0dXJuIHIuYWRkS2V5PVptLHIua2V5cz1pLHIuaW5qZWN0b3JzPVt0XSxyLmNvbnN0cnVjdFJlc29sdmluZ01lc3NhZ2U9bixyLm5nT3JpZ2luYWxFcnJvcj1vLHJ9ZnVuY3Rpb24gWm0odCxlKXt0aGlzLmluamVjdG9ycy5wdXNoKHQpLHRoaXMua2V5cy5wdXNoKGUpLHRoaXMubWVzc2FnZT10aGlzLmNvbnN0cnVjdFJlc29sdmluZ01lc3NhZ2UodGhpcy5rZXlzKX1mdW5jdGlvbiBYbSh0LGUpe2NvbnN0IG49W107Zm9yKGxldCB0PTAsbz1lLmxlbmd0aDt0PG87dCsrKXtjb25zdCBvPWVbdF07bi5wdXNoKG8mJjAhPW8ubGVuZ3RoP28ubWFwKEtlKS5qb2luKCIgIik6Ij8iKX1yZXR1cm4gRXJyb3IoIkNhbm5vdCByZXNvbHZlIGFsbCBwYXJhbWV0ZXJzIGZvciAnIitLZSh0KSsiJygiK24uam9pbigiLCAiKSsiKS4gTWFrZSBzdXJlIHRoYXQgYWxsIHRoZSBwYXJhbWV0ZXJzIGFyZSBkZWNvcmF0ZWQgd2l0aCBJbmplY3Qgb3IgaGF2ZSB2YWxpZCB0eXBlIGFubm90YXRpb25zIGFuZCB0aGF0ICciK0tlKHQpKyInIGlzIGRlY29yYXRlZCB3aXRoIEluamVjdGFibGUuIil9ZnVuY3Rpb24gS20odCxlKXtyZXR1cm4gRXJyb3IoYENhbm5vdCBtaXggbXVsdGkgcHJvdmlkZXJzIGFuZCByZWd1bGFyIHByb3ZpZGVycywgZ290OiAke3R9ICR7ZX1gKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgSm17Y29uc3RydWN0b3IodCxlKXtpZih0aGlzLnRva2VuPXQsdGhpcy5pZD1lLCF0KXRocm93IG5ldyBFcnJvcigiVG9rZW4gbXVzdCBiZSBkZWZpbmVkISIpO3RoaXMuZGlzcGxheU5hbWU9S2UodGhpcy50b2tlbil9c3RhdGljIGdldCh0KXtyZXR1cm4gUW0uZ2V0KHRuKHQpKX1zdGF0aWMgZ2V0IG51bWJlck9mS2V5cygpe3JldHVybiBRbS5udW1iZXJPZktleXN9fWNvbnN0IFFtPW5ldyBjbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuX2FsbEtleXM9bmV3IE1hcH1nZXQodCl7aWYodCBpbnN0YW5jZW9mIEptKXJldHVybiB0O2lmKHRoaXMuX2FsbEtleXMuaGFzKHQpKXJldHVybiB0aGlzLl9hbGxLZXlzLmdldCh0KTtjb25zdCBlPW5ldyBKbSh0LEptLm51bWJlck9mS2V5cyk7cmV0dXJuIHRoaXMuX2FsbEtleXMuc2V0KHQsZSksZX1nZXQgbnVtYmVyT2ZLZXlzKCl7cmV0dXJuIHRoaXMuX2FsbEtleXMuc2l6ZX19OwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0ICRtPW5ldyBjbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLnJlZmxlY3Rpb25DYXBhYmlsaXRpZXM9dH11cGRhdGVDYXBhYmlsaXRpZXModCl7dGhpcy5yZWZsZWN0aW9uQ2FwYWJpbGl0aWVzPXR9ZmFjdG9yeSh0KXtyZXR1cm4gdGhpcy5yZWZsZWN0aW9uQ2FwYWJpbGl0aWVzLmZhY3RvcnkodCl9cGFyYW1ldGVycyh0KXtyZXR1cm4gdGhpcy5yZWZsZWN0aW9uQ2FwYWJpbGl0aWVzLnBhcmFtZXRlcnModCl9YW5ub3RhdGlvbnModCl7cmV0dXJuIHRoaXMucmVmbGVjdGlvbkNhcGFiaWxpdGllcy5hbm5vdGF0aW9ucyh0KX1wcm9wTWV0YWRhdGEodCl7cmV0dXJuIHRoaXMucmVmbGVjdGlvbkNhcGFiaWxpdGllcy5wcm9wTWV0YWRhdGEodCl9aGFzTGlmZWN5Y2xlSG9vayh0LGUpe3JldHVybiB0aGlzLnJlZmxlY3Rpb25DYXBhYmlsaXRpZXMuaGFzTGlmZWN5Y2xlSG9vayh0LGUpfWdldHRlcih0KXtyZXR1cm4gdGhpcy5yZWZsZWN0aW9uQ2FwYWJpbGl0aWVzLmdldHRlcih0KX1zZXR0ZXIodCl7cmV0dXJuIHRoaXMucmVmbGVjdGlvbkNhcGFiaWxpdGllcy5zZXR0ZXIodCl9bWV0aG9kKHQpe3JldHVybiB0aGlzLnJlZmxlY3Rpb25DYXBhYmlsaXRpZXMubWV0aG9kKHQpfWltcG9ydFVyaSh0KXtyZXR1cm4gdGhpcy5yZWZsZWN0aW9uQ2FwYWJpbGl0aWVzLmltcG9ydFVyaSh0KX1yZXNvdXJjZVVyaSh0KXtyZXR1cm4gdGhpcy5yZWZsZWN0aW9uQ2FwYWJpbGl0aWVzLnJlc291cmNlVXJpKHQpfXJlc29sdmVJZGVudGlmaWVyKHQsZSxuLG8pe3JldHVybiB0aGlzLnJlZmxlY3Rpb25DYXBhYmlsaXRpZXMucmVzb2x2ZUlkZW50aWZpZXIodCxlLG4sbyl9cmVzb2x2ZUVudW0odCxlKXtyZXR1cm4gdGhpcy5yZWZsZWN0aW9uQ2FwYWJpbGl0aWVzLnJlc29sdmVFbnVtKHQsZSl9fShuZXcgeHIpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyB0Zntjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5rZXk9dCx0aGlzLm9wdGlvbmFsPWUsdGhpcy52aXNpYmlsaXR5PW59c3RhdGljIGZyb21LZXkodCl7cmV0dXJuIG5ldyB0Zih0LCExLG51bGwpfX1jb25zdCBlZj1bXTtjbGFzcyBuZntjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5rZXk9dCx0aGlzLnJlc29sdmVkRmFjdG9yaWVzPWUsdGhpcy5tdWx0aVByb3ZpZGVyPW4sdGhpcy5yZXNvbHZlZEZhY3Rvcnk9dGhpcy5yZXNvbHZlZEZhY3Rvcmllc1swXX19Y2xhc3Mgb2Z7Y29uc3RydWN0b3IodCxlKXt0aGlzLmZhY3Rvcnk9dCx0aGlzLmRlcGVuZGVuY2llcz1lfX1mdW5jdGlvbiBhZih0KXtsZXQgZSxuO2lmKHQudXNlQ2xhc3Mpe2NvbnN0IG89dG4odC51c2VDbGFzcyk7ZT0kbS5mYWN0b3J5KG8pLG49Y2Yobyl9ZWxzZSB0LnVzZUV4aXN0aW5nPyhlPXQ9PnQsbj1bdGYuZnJvbUtleShKbS5nZXQodC51c2VFeGlzdGluZykpXSk6dC51c2VGYWN0b3J5PyhlPXQudXNlRmFjdG9yeSxuPShmdW5jdGlvbiBvKHQsZSl7aWYoZSl7Y29uc3Qgbj1lLm1hcCgodD0+W3RdKSk7cmV0dXJuIGUubWFwKChlPT5kZih0LGUsbikpKX1yZXR1cm4gY2YodCl9KSh0LnVzZUZhY3RvcnksdC5kZXBzKSk6KGU9KCk9PnQudXNlVmFsdWUsbj1lZik7cmV0dXJuIG5ldyBvZihlLG4pfWZ1bmN0aW9uIHJmKHQpe3JldHVybiBuZXcgbmYoSm0uZ2V0KHQucHJvdmlkZSksW2FmKHQpXSx0Lm11bHRpfHwhMSl9ZnVuY3Rpb24gc2YodCl7Y29uc3QgZT0oZnVuY3Rpb24gbih0LGUpe2ZvcihsZXQgbj0wO248dC5sZW5ndGg7bisrKXtjb25zdCBvPXRbbl0saT1lLmdldChvLmtleS5pZCk7aWYoaSl7aWYoby5tdWx0aVByb3ZpZGVyIT09aS5tdWx0aVByb3ZpZGVyKXRocm93IEttKGksbyk7aWYoby5tdWx0aVByb3ZpZGVyKWZvcihsZXQgdD0wO3Q8by5yZXNvbHZlZEZhY3Rvcmllcy5sZW5ndGg7dCsrKWkucmVzb2x2ZWRGYWN0b3JpZXMucHVzaChvLnJlc29sdmVkRmFjdG9yaWVzW3RdKTtlbHNlIGUuc2V0KG8ua2V5LmlkLG8pfWVsc2V7bGV0IHQ7dD1vLm11bHRpUHJvdmlkZXI/bmV3IG5mKG8ua2V5LG8ucmVzb2x2ZWRGYWN0b3JpZXMuc2xpY2UoKSxvLm11bHRpUHJvdmlkZXIpOm8sZS5zZXQoby5rZXkuaWQsdCl9fXJldHVybiBlfSkobGYodCxbXSkubWFwKHJmKSxuZXcgTWFwKTtyZXR1cm4gQXJyYXkuZnJvbShlLnZhbHVlcygpKX1mdW5jdGlvbiBsZih0LGUpe3JldHVybiB0LmZvckVhY2goKHQ9PntpZih0IGluc3RhbmNlb2YgY3IpZS5wdXNoKHtwcm92aWRlOnQsdXNlQ2xhc3M6dH0pO2Vsc2UgaWYodCYmIm9iamVjdCI9PXR5cGVvZiB0JiZ2b2lkIDAhPT10LnByb3ZpZGUpZS5wdXNoKHQpO2Vsc2V7aWYoIUFycmF5LmlzQXJyYXkodCkpdGhyb3coZnVuY3Rpb24gbih0KXtyZXR1cm4gRXJyb3IoYEludmFsaWQgcHJvdmlkZXIgLSBvbmx5IGluc3RhbmNlcyBvZiBQcm92aWRlciBhbmQgVHlwZSBhcmUgYWxsb3dlZCwgZ290OiAke3R9YCl9KSh0KTtsZih0LGUpfX0pKSxlfWZ1bmN0aW9uIGNmKHQpe2NvbnN0IGU9JG0ucGFyYW1ldGVycyh0KTtpZighZSlyZXR1cm5bXTtpZihlLnNvbWUoKHQ9Pm51bGw9PXQpKSl0aHJvdyBYbSh0LGUpO3JldHVybiBlLm1hcCgobj0+ZGYodCxuLGUpKSl9ZnVuY3Rpb24gZGYodCxlLG4pe2xldCBvPW51bGwsaT0hMTtpZighQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gcGYoZSBpbnN0YW5jZW9mIExyP2UudG9rZW46ZSxpLG51bGwpO2xldCBhPW51bGw7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDsrK3Qpe2NvbnN0IG49ZVt0XTtuIGluc3RhbmNlb2YgY3I/bz1uOm4gaW5zdGFuY2VvZiBMcj9vPW4udG9rZW46biBpbnN0YW5jZW9mIEJyP2k9ITA6biBpbnN0YW5jZW9mIFZyfHxuIGluc3RhbmNlb2YganI/YT1uOm4gaW5zdGFuY2VvZiBlciYmKG89bil9aWYobz10bihvKSxudWxsIT1vKXJldHVybiBwZihvLGksYSk7dGhyb3cgWG0odCxuKX1mdW5jdGlvbiBwZih0LGUsbil7cmV0dXJuIG5ldyB0ZihKbS5nZXQodCksZSxuKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3QgbWY9e307Y2xhc3MgZmZ7c3RhdGljIHJlc29sdmUodCl7cmV0dXJuIHNmKHQpfXN0YXRpYyByZXNvbHZlQW5kQ3JlYXRlKHQsZSl7Y29uc3Qgbj1mZi5yZXNvbHZlKHQpO3JldHVybiBmZi5mcm9tUmVzb2x2ZWRQcm92aWRlcnMobixlKX1zdGF0aWMgZnJvbVJlc29sdmVkUHJvdmlkZXJzKHQsZSl7cmV0dXJuIG5ldyB1Zih0LGUpfX1jbGFzcyB1Zntjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuX2NvbnN0cnVjdGlvbkNvdW50ZXI9MCx0aGlzLl9wcm92aWRlcnM9dCx0aGlzLnBhcmVudD1lfHxudWxsO2NvbnN0IG49dC5sZW5ndGg7dGhpcy5rZXlJZHM9W10sdGhpcy5vYmpzPVtdO2ZvcihsZXQgZT0wO2U8bjtlKyspdGhpcy5rZXlJZHNbZV09dFtlXS5rZXkuaWQsdGhpcy5vYmpzW2VdPW1mfWdldCh0LGU9d3Ipe3JldHVybiB0aGlzLl9nZXRCeUtleShKbS5nZXQodCksbnVsbCxlKX1yZXNvbHZlQW5kQ3JlYXRlQ2hpbGQodCl7Y29uc3QgZT1mZi5yZXNvbHZlKHQpO3JldHVybiB0aGlzLmNyZWF0ZUNoaWxkRnJvbVJlc29sdmVkKGUpfWNyZWF0ZUNoaWxkRnJvbVJlc29sdmVkKHQpe2NvbnN0IGU9bmV3IHVmKHQpO3JldHVybiBlLnBhcmVudD10aGlzLGV9cmVzb2x2ZUFuZEluc3RhbnRpYXRlKHQpe3JldHVybiB0aGlzLmluc3RhbnRpYXRlUmVzb2x2ZWQoZmYucmVzb2x2ZShbdF0pWzBdKX1pbnN0YW50aWF0ZVJlc29sdmVkKHQpe3JldHVybiB0aGlzLl9pbnN0YW50aWF0ZVByb3ZpZGVyKHQpfWdldFByb3ZpZGVyQXRJbmRleCh0KXtpZih0PDB8fHQ+PXRoaXMuX3Byb3ZpZGVycy5sZW5ndGgpdGhyb3coZnVuY3Rpb24gZSh0KXtyZXR1cm4gRXJyb3IoYEluZGV4ICR7dH0gaXMgb3V0LW9mLWJvdW5kcy5gKX0pKHQpO3JldHVybiB0aGlzLl9wcm92aWRlcnNbdF19X25ldyh0KXtpZih0aGlzLl9jb25zdHJ1Y3Rpb25Db3VudGVyKys+dGhpcy5fZ2V0TWF4TnVtYmVyT2ZPYmplY3RzKCkpdGhyb3coZnVuY3Rpb24gZSh0LG4pe3JldHVybiBxbSh0LG4sKGZ1bmN0aW9uKHQpe3JldHVybmBDYW5ub3QgaW5zdGFudGlhdGUgY3ljbGljIGRlcGVuZGVuY3khJHtZbSh0KX1gfSkpfSkodGhpcyx0LmtleSk7cmV0dXJuIHRoaXMuX2luc3RhbnRpYXRlUHJvdmlkZXIodCl9X2dldE1heE51bWJlck9mT2JqZWN0cygpe3JldHVybiB0aGlzLm9ianMubGVuZ3RofV9pbnN0YW50aWF0ZVByb3ZpZGVyKHQpe2lmKHQubXVsdGlQcm92aWRlcil7Y29uc3QgZT1bXTtmb3IobGV0IG49MDtuPHQucmVzb2x2ZWRGYWN0b3JpZXMubGVuZ3RoOysrbillW25dPXRoaXMuX2luc3RhbnRpYXRlKHQsdC5yZXNvbHZlZEZhY3Rvcmllc1tuXSk7cmV0dXJuIGV9cmV0dXJuIHRoaXMuX2luc3RhbnRpYXRlKHQsdC5yZXNvbHZlZEZhY3Rvcmllc1swXSl9X2luc3RhbnRpYXRlKHQsZSl7Y29uc3Qgbj1lLmZhY3Rvcnk7bGV0IG8saTt0cnl7bz1lLmRlcGVuZGVuY2llcy5tYXAoKHQ9PnRoaXMuX2dldEJ5UmVmbGVjdGl2ZURlcGVuZGVuY3kodCkpKX1jYXRjaChlKXt0aHJvdyBlLmFkZEtleSYmZS5hZGRLZXkodGhpcyx0LmtleSksZX10cnl7aT1uKC4uLm8pfWNhdGNoKGUpe3Rocm93KGZ1bmN0aW9uIG4odCxlLG8saSl7cmV0dXJuIHFtKHQsaSwoZnVuY3Rpb24odCl7Y29uc3Qgbj1LZSh0WzBdLnRva2VuKTtyZXR1cm5gJHtlLm1lc3NhZ2V9OiBFcnJvciBkdXJpbmcgaW5zdGFudGlhdGlvbiBvZiAke259ISR7WW0odCl9LmB9KSxlKX0pKHRoaXMsZSwwLHQua2V5KX1yZXR1cm4gaX1fZ2V0QnlSZWZsZWN0aXZlRGVwZW5kZW5jeSh0KXtyZXR1cm4gdGhpcy5fZ2V0QnlLZXkodC5rZXksdC52aXNpYmlsaXR5LHQub3B0aW9uYWw/bnVsbDp3cil9X2dldEJ5S2V5KHQsZSxuKXtyZXR1cm4gdD09PXVmLklOSkVDVE9SX0tFWT90aGlzOmUgaW5zdGFuY2VvZiBWcj90aGlzLl9nZXRCeUtleVNlbGYodCxuKTp0aGlzLl9nZXRCeUtleURlZmF1bHQodCxuLGUpfV9nZXRPYmpCeUtleUlkKHQpe2ZvcihsZXQgZT0wO2U8dGhpcy5rZXlJZHMubGVuZ3RoO2UrKylpZih0aGlzLmtleUlkc1tlXT09PXQpcmV0dXJuIHRoaXMub2Jqc1tlXT09PW1mJiYodGhpcy5vYmpzW2VdPXRoaXMuX25ldyh0aGlzLl9wcm92aWRlcnNbZV0pKSx0aGlzLm9ianNbZV07cmV0dXJuIG1mfV90aHJvd09yTnVsbCh0LGUpe2lmKGUhPT13cilyZXR1cm4gZTt0aHJvdyhmdW5jdGlvbiBuKHQsZSl7cmV0dXJuIHFtKHQsZSwoZnVuY3Rpb24odCl7cmV0dXJuYE5vIHByb3ZpZGVyIGZvciAke0tlKHRbMF0udG9rZW4pfSEke1ltKHQpfWB9KSl9KSh0aGlzLHQpfV9nZXRCeUtleVNlbGYodCxlKXtjb25zdCBuPXRoaXMuX2dldE9iakJ5S2V5SWQodC5pZCk7cmV0dXJuIG4hPT1tZj9uOnRoaXMuX3Rocm93T3JOdWxsKHQsZSl9X2dldEJ5S2V5RGVmYXVsdCh0LGUsbil7bGV0IG87Zm9yKG89biBpbnN0YW5jZW9mIGpyP3RoaXMucGFyZW50OnRoaXM7byBpbnN0YW5jZW9mIHVmOyl7Y29uc3QgZT1vLG49ZS5fZ2V0T2JqQnlLZXlJZCh0LmlkKTtpZihuIT09bWYpcmV0dXJuIG47bz1lLnBhcmVudH1yZXR1cm4gbnVsbCE9PW8/by5nZXQodC50b2tlbixlKTp0aGlzLl90aHJvd09yTnVsbCh0LGUpfWdldCBkaXNwbGF5TmFtZSgpe3JldHVybmBSZWZsZWN0aXZlSW5qZWN0b3IocHJvdmlkZXJzOiBbJHsoZnVuY3Rpb24gdChlLG4pe2NvbnN0IG89W107Zm9yKGxldCB0PTA7dDxlLl9wcm92aWRlcnMubGVuZ3RoOysrdClvW3RdPW4oZS5nZXRQcm92aWRlckF0SW5kZXgodCkpO3JldHVybiBvfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCi8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLykodGhpcywodD0+JyAiJyt0LmtleS5kaXNwbGF5TmFtZSsnIiAnKSkuam9pbigiLCAiKX1dKWB9dG9TdHJpbmcoKXtyZXR1cm4gdGhpcy5kaXNwbGF5TmFtZX19ZnVuY3Rpb24gZ2YodCxlPUhuLkRlZmF1bHQpe2NvbnN0IG49eGkoKTtpZihudWxsPT09bilyZXR1cm4gbmdEZXZNb2RlJiYoZnVuY3Rpb24gbyh0KXtuZ0Rldk1vZGUmJmhuKEZuLHQsIkNhbGxpbmcgybXJtWluamVjdCB3b3VsZCBjYXVzZSBpbmZpbml0ZSByZWN1cnNpb24iKX0pKGdmKSxUcih0LGUpO3JldHVybiBOYSh3aSgpLG4sdG4odCksZSl9ZnVuY3Rpb24gaGYoKXtjb25zdCB0PW5nRGV2TW9kZT8iVGhpcyBjb25zdHJ1Y3RvciB3YXMgbm90IGNvbXBhdGlibGUgd2l0aCBEZXBlbmRlbmN5IEluamVjdGlvbi4iOiJpbnZhbGlkIjt0aHJvdyBuZXcgRXJyb3IodCl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIGJmKHQsZSxuKXtjb25zdCBvPXhpKCksaT1IaSgpO2lmKHVtKG8saSxlKSl7Y29uc3QgYT1PaSgpLHI9bmEoKTt6ZChhLHIsbyx0LGUsb1sxMV0sbiwhMSksbmdEZXZNb2RlJiZscChhLmRhdGEscix0LGkpfXJldHVybiBiZn1mdW5jdGlvbiB5Zih0LGUsbixvLGkpe2NvbnN0IGE9aT8iY2xhc3MiOiJzdHlsZSI7dXAodCxuLGUuaW5wdXRzW2FdLGEsbyl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIF9mKHQsZSxuLG8saSxhLHIpe25nRGV2TW9kZSYmTG8oZSksbmdEZXZNb2RlJiZuZ0Rldk1vZGUuZmlyc3RDcmVhdGVQYXNzKys7Y29uc3Qgcz1lLmNvbnN0cyxsPV9kKGUsdCwyLGksaGkocyxhKSksYz1MZChlLG4sbCxoaShzLHIpKTtyZXR1cm4gbmdEZXZNb2RlJiYoZnVuY3Rpb24gZCh0LGUsbixvKXtpZihudWxsPT09dC5zY2hlbWFzKXJldHVybjtjb25zdCBpPW4udmFsdWU7aWYoIW8mJm51bGwhPT1pKXtpZigoInVuZGVmaW5lZCIhPXR5cGVvZiBIVE1MVW5rbm93bkVsZW1lbnQmJkhUTUxVbmtub3duRWxlbWVudCYmZSBpbnN0YW5jZW9mIEhUTUxVbmtub3duRWxlbWVudHx8InVuZGVmaW5lZCIhPXR5cGVvZiBjdXN0b21FbGVtZW50cyYmaS5pbmRleE9mKCItIik+LTEmJiFjdXN0b21FbGVtZW50cy5nZXQoaSkpJiYhSGQodCxpKSl7bGV0IHQ9YCcke2l9JyBpcyBub3QgYSBrbm93biBlbGVtZW50OlxuYDt0Kz1gMS4gSWYgJyR7aX0nIGlzIGFuIEFuZ3VsYXIgY29tcG9uZW50LCB0aGVuIHZlcmlmeSB0aGF0IGl0IGlzIHBhcnQgb2YgdGhpcyBtb2R1bGUuXG5gLGkmJmkuaW5kZXhPZigiLSIpPi0xP3QrPWAyLiBJZiAnJHtpfScgaXMgYSBXZWIgQ29tcG9uZW50IHRoZW4gYWRkICdDVVNUT01fRUxFTUVOVFNfU0NIRU1BJyB0byB0aGUgJ0BOZ01vZHVsZS5zY2hlbWFzJyBvZiB0aGlzIGNvbXBvbmVudCB0byBzdXBwcmVzcyB0aGlzIG1lc3NhZ2UuYDp0Kz0iMi4gVG8gYWxsb3cgYW55IGVsZW1lbnQgYWRkICdOT19FUlJPUlNfU0NIRU1BJyB0byB0aGUgJ0BOZ01vZHVsZS5zY2hlbWFzJyBvZiB0aGlzIGNvbXBvbmVudC4iLGNvbnNvbGUuZXJyb3IoYW4oIjMwNCIsdCkpfX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLykoZSxvLGwsYyksbnVsbCE9PWwuYXR0cnMmJmhwKGwsbC5hdHRycywhMSksbnVsbCE9PWwubWVyZ2VkQXR0cnMmJmhwKGwsbC5tZXJnZWRBdHRycywhMCksbnVsbCE9PWUucXVlcmllcyYmZS5xdWVyaWVzLmVsZW1lbnRTdGFydChlLGwpLGx9ZnVuY3Rpb24gQ2YodCxlLG4sbyl7Y29uc3QgaT14aSgpLGE9T2koKSxyPXZvK3Q7bmdEZXZNb2RlJiZnbih6aSgpLGEuYmluZGluZ1N0YXJ0SW5kZXgsImVsZW1lbnRzIHNob3VsZCBiZSBjcmVhdGVkIGJlZm9yZSBhbnkgYmluZGluZ3MiKSxuZ0Rldk1vZGUmJnduKGkscik7Y29uc3Qgcz1pWzExXSxsPWlbcl09VWwocyxlLChmdW5jdGlvbiBjKCl7cmV0dXJuIF9pLmxGcmFtZS5jdXJyZW50TmFtZXNwYWNlfSkoKSksZD1hLmZpcnN0Q3JlYXRlUGFzcz9fZihyLGEsaSxsLGUsbixvKTphLmRhdGFbcl07RGkoZCwhMCk7Y29uc3QgcD1kLm1lcmdlZEF0dHJzO251bGwhPT1wJiZoYShzLGwscCk7Y29uc3QgbT1kLmNsYXNzZXM7bnVsbCE9PW0mJmdjKHMsbCxtKTtjb25zdCBmPWQuc3R5bGVzO251bGwhPT1mJiZ1YyhzLGwsZiksNjQhPSg2NCZkLmZsYWdzKSYmcmMoYSxpLGwsZCksMD09PShmdW5jdGlvbiB1KCl7cmV0dXJuIF9pLmxGcmFtZS5lbGVtZW50RGVwdGhDb3VudH0pKCkmJmFsKGwsaSksKGZ1bmN0aW9uIGcoKXtfaS5sRnJhbWUuZWxlbWVudERlcHRoQ291bnQrK30pKCksRG8oZCkmJihrZChhLGksZCksd2QoYSxkLGkpKSxudWxsIT09byYmU2QoaSxkKX1mdW5jdGlvbiBNZigpe2xldCB0PXdpKCk7bmdEZXZNb2RlJiZ4bih0LCJObyBwYXJlbnQgbm9kZSB0byBjbG9zZS4iKSxSaSgpP0VpKCk6KG5nRGV2TW9kZSYmem8od2koKSksdD10LnBhcmVudCxEaSh0LCExKSk7Y29uc3QgZT10O25nRGV2TW9kZSYmZ2EoZSwzKSwoZnVuY3Rpb24gbigpe19pLmxGcmFtZS5lbGVtZW50RGVwdGhDb3VudC0tfSkoKTtjb25zdCBvPU9pKCk7by5maXJzdENyZWF0ZVBhc3MmJihyYShvLHQpLGtvKHQpJiZvLnF1ZXJpZXMuZWxlbWVudEVuZCh0KSksbnVsbCE9ZS5jbGFzc2VzV2l0aG91dEhvc3QmJihmdW5jdGlvbiBpKHQpe3JldHVybiAwIT0oMTYmdC5mbGFncyl9KShlKSYmeWYobyxlLHhpKCksZS5jbGFzc2VzV2l0aG91dEhvc3QsITApLG51bGwhPWUuc3R5bGVzV2l0aG91dEhvc3QmJihmdW5jdGlvbiBhKHQpe3JldHVybiAwIT0oMzImdC5mbGFncyl9KShlKSYmeWYobyxlLHhpKCksZS5zdHlsZXNXaXRob3V0SG9zdCwhMSl9ZnVuY3Rpb24gdmYodCxlLG4sbyl7Q2YodCxlLG4sbyksTWYoKX1mdW5jdGlvbiB4Zih0LGUsbil7Y29uc3Qgbz14aSgpLGk9T2koKSxhPXQrdm87bmdEZXZNb2RlJiZ3bihvLGEpLG5nRGV2TW9kZSYmZ24oemkoKSxpLmJpbmRpbmdTdGFydEluZGV4LCJlbGVtZW50IGNvbnRhaW5lcnMgc2hvdWxkIGJlIGNyZWF0ZWQgYmVmb3JlIGFueSBiaW5kaW5ncyIpO2NvbnN0IHI9aS5maXJzdENyZWF0ZVBhc3M/KGZ1bmN0aW9uIHModCxlLG4sbyxpKXtuZ0Rldk1vZGUmJm5nRGV2TW9kZS5maXJzdENyZWF0ZVBhc3MrKztjb25zdCBhPWUuY29uc3RzLHI9aGkoYSxvKSxzPV9kKGUsdCw4LCJuZy1jb250YWluZXIiLHIpO3JldHVybiBudWxsIT09ciYmaHAocyxyLCEwKSxMZChlLG4scyxoaShhLGkpKSxudWxsIT09ZS5xdWVyaWVzJiZlLnF1ZXJpZXMuZWxlbWVudFN0YXJ0KGUscyksc30pKGEsaSxvLGUsbik6aS5kYXRhW2FdO0RpKHIsITApLG5nRGV2TW9kZSYmbmdEZXZNb2RlLnJlbmRlcmVyQ3JlYXRlQ29tbWVudCsrO2NvbnN0IGw9b1thXT1vWzExXS5jcmVhdGVDb21tZW50KG5nRGV2TW9kZT8ibmctY29udGFpbmVyIjoiIik7cmMoaSxvLGwsciksYWwobCxvKSxEbyhyKSYmKGtkKGksbyxyKSx3ZChpLHIsbykpLG51bGwhPW4mJlNkKG8scil9ZnVuY3Rpb24gT2YoKXtsZXQgdD13aSgpO2NvbnN0IGU9T2koKTtSaSgpP0VpKCk6KG5nRGV2TW9kZSYmem8odCksdD10LnBhcmVudCxEaSh0LCExKSksbmdEZXZNb2RlJiZnYSh0LDgpLGUuZmlyc3RDcmVhdGVQYXNzJiYocmEoZSx0KSxrbyh0KSYmZS5xdWVyaWVzLmVsZW1lbnRFbmQodCkpfWZ1bmN0aW9uIFBmKHQsZSxuKXt4Zih0LGUsbiksT2YoKX1mdW5jdGlvbiB3Zigpe3JldHVybiB4aSgpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBrZih0KXtyZXR1cm4hIXQmJiJmdW5jdGlvbiI9PXR5cGVvZiB0LnRoZW59ZnVuY3Rpb24gU2YodCl7cmV0dXJuISF0JiYiZnVuY3Rpb24iPT10eXBlb2YgdC5zdWJzY3JpYmV9dWYuSU5KRUNUT1JfS0VZPUptLmdldChOcCk7Y29uc3QgRGY9U2Y7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIFJmKHQsZSxuLG8pe2NvbnN0IGk9eGkoKSxhPU9pKCkscj13aSgpO3JldHVybiBBZihhLGksaVsxMV0scix0LGUsISFuLG8pLFJmfWZ1bmN0aW9uIEVmKHQsZSl7Y29uc3Qgbj13aSgpLG89eGkoKSxpPU9pKCk7cmV0dXJuIEFmKGksbyxtcChqaShpLmRhdGEpLG4sbyksbix0LGUsITEpLEVmfWZ1bmN0aW9uIEFmKHQsZSxuLG8saSxhLHIscyl7Y29uc3QgbD1EbyhvKSxjPXQuZmlyc3RDcmVhdGVQYXNzJiZwcCh0KSxkPWVbOF0scD1kcChlKTtuZ0Rldk1vZGUmJmdhKG8sMTUpO2xldCBtPSEwO2lmKDMmby50eXBlfHxzKXtjb25zdCBmPWRpKG8sZSksdT1zP3MoZik6ZixnPXAubGVuZ3RoLGg9cz90PT5zKGxpKHRbby5pbmRleF0pKTpvLmluZGV4O2lmKHJpKG4pKXtsZXQgcj1udWxsO2lmKCFzJiZsJiYocj0oZnVuY3Rpb24gZih0LGUsbixvKXtjb25zdCBpPXQuY2xlYW51cDtpZihudWxsIT1pKWZvcihsZXQgdD0wO3Q8aS5sZW5ndGgtMTt0Kz0yKXtjb25zdCBhPWlbdF07aWYoYT09PW4mJmlbdCsxXT09PW8pe2NvbnN0IG49ZVs3XSxvPWlbdCsyXTtyZXR1cm4gbi5sZW5ndGg+bz9uW29dOm51bGx9InN0cmluZyI9PXR5cGVvZiBhJiYodCs9Mil9cmV0dXJuIG51bGx9KSh0LGUsaSxvLmluZGV4KSksbnVsbCE9PXIpeyhyLl9fbmdMYXN0TGlzdGVuZXJGbl9ffHxyKS5fX25nTmV4dExpc3RlbmVyRm5fXz1hLHIuX19uZ0xhc3RMaXN0ZW5lckZuX189YSxtPSExfWVsc2V7YT1OZihvLGUsZCxhLCExKTtjb25zdCB0PW4ubGlzdGVuKHUsaSxhKTtuZ0Rldk1vZGUmJm5nRGV2TW9kZS5yZW5kZXJlckFkZEV2ZW50TGlzdGVuZXIrKyxwLnB1c2goYSx0KSxjJiZjLnB1c2goaSxoLGcsZysxKX19ZWxzZSBhPU5mKG8sZSxkLGEsITApLHUuYWRkRXZlbnRMaXN0ZW5lcihpLGEsciksbmdEZXZNb2RlJiZuZ0Rldk1vZGUucmVuZGVyZXJBZGRFdmVudExpc3RlbmVyKysscC5wdXNoKGEpLGMmJmMucHVzaChpLGgsZyxyKX1lbHNlIGE9TmYobyxlLGQsYSwhMSk7Y29uc3QgdT1vLm91dHB1dHM7bGV0IGc7aWYobSYmbnVsbCE9PXUmJihnPXVbaV0pKXtjb25zdCB0PWcubGVuZ3RoO2lmKHQpZm9yKGxldCBuPTA7bjx0O24rPTIpe2NvbnN0IHQ9Z1tuXTtuZ0Rldk1vZGUmJnduKGUsdCk7Y29uc3Qgcj1nW24rMV0scz1lW3RdLGw9c1tyXTtpZihuZ0Rldk1vZGUmJiFEZihsKSl0aHJvdyBuZXcgRXJyb3IoYEBPdXRwdXQgJHtyfSBub3QgaW5pdGlhbGl6ZWQgaW4gJyR7cy5jb25zdHJ1Y3Rvci5uYW1lfScuYCk7Y29uc3QgZD1sLnN1YnNjcmliZShhKSxtPXAubGVuZ3RoO3AucHVzaChhLGQpLGMmJmMucHVzaChpLG8uaW5kZXgsbSwtKG0rMSkpfX19ZnVuY3Rpb24gVGYodCxlLG4sbyl7dHJ5e3JldHVybiB0aSg2LGUsbiksITEhPT1uKG8pfWNhdGNoKGUpe3JldHVybiBmcCh0LGUpLCExfWZpbmFsbHl7dGkoNyxlLG4pfX1mdW5jdGlvbiBOZih0LGUsbixvLGkpe3JldHVybiBmdW5jdGlvbiBhKHIpe2lmKHI9PT1GdW5jdGlvbilyZXR1cm4gbztjb25zdCBzPTImdC5mbGFncz9maSh0LmluZGV4LGUpOmU7MD09KDMyJmVbMl0pJiZvcChzKTtsZXQgbD1UZihlLG4sbyxyKSxjPWEuX19uZ05leHRMaXN0ZW5lckZuX187Zm9yKDtjOylsPVRmKGUsbixjLHIpJiZsLGM9Yy5fX25nTmV4dExpc3RlbmVyRm5fXztyZXR1cm4gaSYmITE9PT1sJiYoci5wcmV2ZW50RGVmYXVsdCgpLHIucmV0dXJuVmFsdWU9ITEpLGx9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gemYodD0xKXtyZXR1cm4gJGkodCl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIElmKHQsZSl7bGV0IG49bnVsbDtjb25zdCBvPShmdW5jdGlvbiBpKHQpe2NvbnN0IGU9dC5hdHRycztpZihudWxsIT1lKXtjb25zdCB0PWUuaW5kZXhPZig1KTtpZigwPT0oMSZ0KSlyZXR1cm4gZVt0KzFdfXJldHVybiBudWxsfSkodCk7Zm9yKGxldCBpPTA7aTxlLmxlbmd0aDtpKyspe2NvbnN0IGE9ZVtpXTtpZigiKiIhPT1hKXtpZihudWxsPT09bz9PYyh0LGEsITApOlBjKG8sYSkpcmV0dXJuIGl9ZWxzZSBuPWl9cmV0dXJuIG59ZnVuY3Rpb24gSGYodCl7Y29uc3QgZT14aSgpWzE2XVs2XTtpZighZS5wcm9qZWN0aW9uKXtjb25zdCBuPWUucHJvamVjdGlvbj1ncih0P3QubGVuZ3RoOjEsbnVsbCksbz1uLnNsaWNlKCk7bGV0IGk9ZS5jaGlsZDtmb3IoO251bGwhPT1pOyl7Y29uc3QgZT10P0lmKGksdCk6MDtudWxsIT09ZSYmKG9bZV0/b1tlXS5wcm9qZWN0aW9uTmV4dD1pOm5bZV09aSxvW2VdPWkpLGk9aS5uZXh0fX19ZnVuY3Rpb24gRmYodCxlPTAsbil7Y29uc3Qgbz14aSgpLGk9T2koKSxhPV9kKGksdm8rdCwxNixudWxsLG58fG51bGwpO251bGw9PT1hLnByb2plY3Rpb24mJihhLnByb2plY3Rpb249ZSksRWkoKSw2NCE9KDY0JmEuZmxhZ3MpJiYoZnVuY3Rpb24gcih0LGUsbil7ZmMoZVsxMV0sMCxlLG4sWGwodCxuLGUpLGVjKG4ucGFyZW50fHxlWzZdLG4sZSkpfSkoaSxvLGEpfWZ1bmN0aW9uIExmKHQsZSxuKXtyZXR1cm4gQmYodCwiIixlLCIiLG4pLExmfWZ1bmN0aW9uIEJmKHQsZSxuLG8saSl7Y29uc3QgYT14aSgpLHI9Q20oYSxlLG4sbyk7aWYociE9PVNjKXtjb25zdCBuPU9pKCkscz1uYSgpO3pkKG4scyxhLHQscixhWzExXSxpLCExKSxuZ0Rldk1vZGUmJmxwKG4uZGF0YSxzLHQsemkoKS0xLGUsbyl9cmV0dXJuIEJmfWZ1bmN0aW9uIFZmKHQsZSxuLG8saSxhLHIpe2NvbnN0IHM9eGkoKSxsPU1tKHMsZSxuLG8saSxhKTtpZihsIT09U2Mpe2NvbnN0IG49T2koKSxpPW5hKCk7emQobixpLHMsdCxsLHNbMTFdLHIsITEpLG5nRGV2TW9kZSYmbHAobi5kYXRhLGksdCx6aSgpLTIsZSxvLGEpfXJldHVybiBWZn1mdW5jdGlvbiBqZih0LGUsbixvLGksYSxyLHMsbCl7Y29uc3QgYz14aSgpLGQ9dm0oYyxlLG4sbyxpLGEscixzKTtpZihkIT09U2Mpe2NvbnN0IG49T2koKSxpPW5hKCk7emQobixpLGMsdCxkLGNbMTFdLGwsITEpLG5nRGV2TW9kZSYmbHAobi5kYXRhLGksdCx6aSgpLTMsZSxvLGEscyl9cmV0dXJuIGpmfWZ1bmN0aW9uIFVmKHQsZSxuLG8saSxhLHIscyxsLGMsZCl7Y29uc3QgcD14aSgpLG09eG0ocCxlLG4sbyxpLGEscixzLGwsYyk7aWYobSE9PVNjKXtjb25zdCBuPU9pKCksaT1uYSgpO3pkKG4saSxwLHQsbSxwWzExXSxkLCExKSxuZ0Rldk1vZGUmJmxwKG4uZGF0YSxpLHQsemkoKS00LGUsbyxhLHMsYyl9cmV0dXJuIFVmfWZ1bmN0aW9uIFdmKHQsZSxuLG8saSxhLHIscyxsLGMsZCxwLG0pe2NvbnN0IGY9eGkoKSx1PU9tKGYsZSxuLG8saSxhLHIscyxsLGMsZCxwKTtpZih1IT09U2Mpe2NvbnN0IG49T2koKSxpPW5hKCk7emQobixpLGYsdCx1LGZbMTFdLG0sITEpLG5nRGV2TW9kZSYmbHAobi5kYXRhLGksdCx6aSgpLTUsZSxvLGEscyxjLHApfXJldHVybiBXZn1mdW5jdGlvbiBHZih0LGUsbixvLGksYSxyLHMsbCxjLGQscCxtLGYsdSl7Y29uc3QgZz14aSgpLGg9UG0oZyxlLG4sbyxpLGEscixzLGwsYyxkLHAsbSxmKTtpZihoIT09U2Mpe2NvbnN0IG49T2koKSxpPW5hKCk7emQobixpLGcsdCxoLGdbMTFdLHUsITEpLG5nRGV2TW9kZSYmbHAobi5kYXRhLGksdCx6aSgpLTYsZSxvLGEscyxjLHAsZil9cmV0dXJuIEdmfWZ1bmN0aW9uIFlmKHQsZSxuLG8saSxhLHIscyxsLGMsZCxwLG0sZix1LGcsaCl7Y29uc3QgYj14aSgpLHk9d20oYixlLG4sbyxpLGEscixzLGwsYyxkLHAsbSxmLHUsZyk7aWYoeSE9PVNjKXtjb25zdCBuPU9pKCksaT1uYSgpO3pkKG4saSxiLHQseSxiWzExXSxoLCExKSxuZ0Rldk1vZGUmJmxwKG4uZGF0YSxpLHQsemkoKS03LGUsbyxhLHMsYyxwLGYsZyl9cmV0dXJuIFlmfWZ1bmN0aW9uIHFmKHQsZSxuLG8saSxhLHIscyxsLGMsZCxwLG0sZix1LGcsaCxiLHkpe2NvbnN0IF89eGkoKSxDPWttKF8sZSxuLG8saSxhLHIscyxsLGMsZCxwLG0sZix1LGcsaCxiKTtpZihDIT09U2Mpe2NvbnN0IG49T2koKSxpPW5hKCk7emQobixpLF8sdCxDLF9bMTFdLHksITEpLG5nRGV2TW9kZSYmbHAobi5kYXRhLGksdCx6aSgpLTgsZSxvLGEscyxjLHAsZixnLGIpfXJldHVybiBxZn1mdW5jdGlvbiBaZih0LGUsbil7Y29uc3Qgbz14aSgpLGk9X20obyxlKTtpZihpIT09U2Mpe2NvbnN0IGE9T2koKSxyPW5hKCk7aWYoemQoYSxyLG8sdCxpLG9bMTFdLG4sITEpLG5nRGV2TW9kZSl7Y29uc3Qgbj1bZVswXV07Zm9yKGxldCB0PTI7dDxlLmxlbmd0aDt0Kz0yKW4ucHVzaChlW3RdKTtscChhLmRhdGEscix0LHppKCktbi5sZW5ndGgrMSwuLi5uKX19cmV0dXJuIFpmfWZ1bmN0aW9uIFhmKHQsZSxuLG8saSxhKXtuZ0Rldk1vZGUmJkJvKE9pKCkpO2xldCByPWE/ZS5jbGFzc0JpbmRpbmdzOmUuc3R5bGVCaW5kaW5ncyxzPUFjKHIpLGw9emMocik7dFtvXT1uO2xldCBjLGQ9ITE7aWYoQXJyYXkuaXNBcnJheShuKSl7Y29uc3QgdD1uO2M9dFsxXSwobnVsbD09PWN8fHlyKHQsYyk+MCkmJihkPSEwKX1lbHNlIGM9bjtpZihpKXtpZigwIT09bCl7Y29uc3QgZT1BYyh0W3MrMV0pO3RbbysxXT1FYyhlLHMpLDAhPT1lJiYodFtlKzFdPUljKHRbZSsxXSxvKSksdFtzKzFdPShmdW5jdGlvbiBwKHQsZSl7cmV0dXJuIG5nRGV2TW9kZSYmcG4odCwiZXhwZWN0ZWQgbnVtYmVyIiksbmdEZXZNb2RlJiZtbihlLDAsMzI3NjcpLDEzMTA3MSZ0fGU8PDE3fSkodFtzKzFdLG8pfWVsc2UgdFtvKzFdPUVjKHMsMCksMCE9PXMmJih0W3MrMV09SWModFtzKzFdLG8pKSxzPW99ZWxzZSB0W28rMV09RWMobCwwKSxuZ0Rldk1vZGUmJmduKDAhPT1zJiYwPT09bCwhMSwiQWRkaW5nIHRlbXBsYXRlIGJpbmRpbmdzIGFmdGVyIGhvc3RCaW5kaW5ncyBpcyBub3QgYWxsb3dlZC4iKSwwPT09cz9zPW86dFtsKzFdPUljKHRbbCsxXSxvKSxsPW87ZCYmKHRbbysxXT1OYyh0W28rMV0pKSxLZih0LGMsbywhMCksS2YodCxjLG8sITEpLChmdW5jdGlvbiBtKHQsZSxuLG8saSl7Y29uc3QgYT1pP3QucmVzaWR1YWxDbGFzc2VzOnQucmVzaWR1YWxTdHlsZXM7bnVsbCE9YSYmInN0cmluZyI9PXR5cGVvZiBlJiZ5cihhLGUpPj0wJiYobltvKzFdPUZjKG5bbysxXSkpfSkoZSxjLHQsbyxhKSxyPUVjKHMsbCksYT9lLmNsYXNzQmluZGluZ3M9cjplLnN0eWxlQmluZGluZ3M9cn1mdW5jdGlvbiBLZih0LGUsbixvLGkpe2NvbnN0IGE9dFtuKzFdLHI9bnVsbD09PWU7bGV0IHM9bz9BYyhhKTp6YyhhKSxsPSExO2Zvcig7MCE9PXMmJighMT09PWx8fHIpOyl7bmdEZXZNb2RlJiZ3bih0LHMpO2NvbnN0IG49dFtzKzFdO0pmKHRbc10sZSkmJihsPSEwLHRbcysxXT1vP0ZjKG4pOk5jKG4pKSxzPW8/QWMobik6emMobil9bCYmKHRbbisxXT1vP05jKGEpOkZjKGEpKX1mdW5jdGlvbiBKZih0LGUpe3JldHVybiBuZ0Rldk1vZGUmJmhuKEFycmF5LmlzQXJyYXkoZSksITAsIkV4cGVjdGVkIHRoYXQgJ3RTdHlsaW5nS2V5JyBoYXMgYmVlbiB1bndyYXBwZWQiKSxudWxsPT09dHx8bnVsbD09ZXx8KEFycmF5LmlzQXJyYXkodCk/dFsxXTp0KT09PWV8fCEoIUFycmF5LmlzQXJyYXkodCl8fCJzdHJpbmciIT10eXBlb2YgZSkmJnlyKHQsZSk+PTB9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NvbnN0IFFmPXt0ZXh0RW5kOjAsa2V5OjAsa2V5RW5kOjAsdmFsdWU6MCx2YWx1ZUVuZDowfTtmdW5jdGlvbiAkZih0KXtyZXR1cm4gdC5zdWJzdHJpbmcoUWYua2V5LFFmLmtleUVuZCl9ZnVuY3Rpb24gdHUodCl7cmV0dXJuIHQuc3Vic3RyaW5nKFFmLnZhbHVlLFFmLnZhbHVlRW5kKX1mdW5jdGlvbiBldSh0LGUpe2NvbnN0IG49UWYudGV4dEVuZDtyZXR1cm4gbj09PWU/LTE6KGU9UWYua2V5RW5kPShmdW5jdGlvbiBvKHQsZSxuKXtmb3IoO2U8biYmdC5jaGFyQ29kZUF0KGUpPjMyOyllKys7cmV0dXJuIGV9KSh0LFFmLmtleT1lLG4pLGl1KHQsZSxuKSl9ZnVuY3Rpb24gbnUodCxlKXtjb25zdCBuPVFmLnRleHRFbmQ7bGV0IG89UWYua2V5PWl1KHQsZSxuKTtyZXR1cm4gbj09PW8/LTE6KG89UWYua2V5RW5kPShmdW5jdGlvbiBpKHQsZSxuKXtsZXQgbztmb3IoO2U8biYmKDQ1PT09KG89dC5jaGFyQ29kZUF0KGUpKXx8OTU9PT1vfHwoLTMzJm8pPj02NSYmKC0zMyZvKTw9OTB8fG8+PTQ4JiZvPD01Nyk7KWUrKztyZXR1cm4gZX0pKHQsbyxuKSxvPWF1KHQsbyxuLDU4KSxvPVFmLnZhbHVlPWl1KHQsbyxuKSxvPVFmLnZhbHVlRW5kPShmdW5jdGlvbiBhKHQsZSxuKXtsZXQgbz0tMSxpPS0xLGE9LTEscj1lLHM9cjtmb3IoO3I8bjspe2NvbnN0IGw9dC5jaGFyQ29kZUF0KHIrKyk7aWYoNTk9PT1sKXJldHVybiBzOzM0PT09bHx8Mzk9PT1sP3M9cj1ydSh0LGwscixuKTplPT09ci00JiY4NT09PWEmJjgyPT09aSYmNzY9PT1vJiY0MD09PWw/cz1yPXJ1KHQsNDEscixuKTpsPjMyJiYocz1yKSxhPWksaT1vLG89LTMzJmx9cmV0dXJuIHN9KSh0LG8sbiksYXUodCxvLG4sNTkpKX1mdW5jdGlvbiBvdSh0KXtRZi5rZXk9MCxRZi5rZXlFbmQ9MCxRZi52YWx1ZT0wLFFmLnZhbHVlRW5kPTAsUWYudGV4dEVuZD10Lmxlbmd0aH1mdW5jdGlvbiBpdSh0LGUsbil7Zm9yKDtlPG4mJnQuY2hhckNvZGVBdChlKTw9MzI7KWUrKztyZXR1cm4gZX1mdW5jdGlvbiBhdSh0LGUsbixvKXtyZXR1cm4oZT1pdSh0LGUsbikpPG4mJihuZ0Rldk1vZGUmJnQuY2hhckNvZGVBdChlKSE9PW8mJnN1KHQsU3RyaW5nLmZyb21DaGFyQ29kZShvKSxlKSxlKyspLGV9ZnVuY3Rpb24gcnUodCxlLG4sbyl7bGV0IGk9LTEsYT1uO2Zvcig7YTxvOyl7Y29uc3Qgbj10LmNoYXJDb2RlQXQoYSsrKTtpZihuPT1lJiY5MiE9PWkpcmV0dXJuIGE7aT05Mj09biYmOTI9PT1pPzA6bn10aHJvdyBuZ0Rldk1vZGU/c3UodCxTdHJpbmcuZnJvbUNoYXJDb2RlKGUpLG8pOm5ldyBFcnJvcn1mdW5jdGlvbiBzdSh0LGUsbil7dGhyb3cgbmdEZXZNb2RlJiZnbigic3RyaW5nIj09dHlwZW9mIHQsITAsIlN0cmluZyBleHBlY3RlZCBoZXJlIiksT24oYE1hbGZvcm1lZCBzdHlsZSBhdCBsb2NhdGlvbiAke259IGluIHN0cmluZyAnYCt0LnN1YnN0cmluZygwLG4pKyJbPj4iK3Quc3Vic3RyaW5nKG4sbisxKSsiPDxdIit0LnN1YnN0cihuKzEpK2AnLiBFeHBlY3RpbmcgJyR7ZX0nLmApfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBsdSh0LGUsbil7cmV0dXJuIHV1KHQsZSxuLCExKSxsdX1mdW5jdGlvbiBjdSh0LGUpe3JldHVybiB1dSh0LGUsbnVsbCwhMCksY3V9ZnVuY3Rpb24gZHUodCl7Z3UoQ3UscHUsdCwhMSl9ZnVuY3Rpb24gcHUodCxlKXtmb3IobGV0IG49KGZ1bmN0aW9uIG4odCl7cmV0dXJuIG91KHQpLG51KHQsaXUodCwwLFFmLnRleHRFbmQpKX0pKGUpO24+PTA7bj1udShlLG4pKUN1KHQsJGYoZSksdHUoZSkpfWZ1bmN0aW9uIG11KHQpe2d1KGhyLGZ1LHQsITApfWZ1bmN0aW9uIGZ1KHQsZSl7Zm9yKGxldCBuPShmdW5jdGlvbiBuKHQpe3JldHVybiBvdSh0KSxldSh0LGl1KHQsMCxRZi50ZXh0RW5kKSl9KShlKTtuPj0wO249ZXUoZSxuKSlocih0LCRmKGUpLCEwKX1mdW5jdGlvbiB1dSh0LGUsbixvKXtjb25zdCBpPXhpKCksYT1PaSgpLHI9RmkoMik7aWYoYS5maXJzdFVwZGF0ZVBhc3MmJmJ1KGEsdCxyLG8pLGUhPT1TYyYmdW0oaSxyLGUpKXtNdShhLGEuZGF0YVt0YSgpXSxpLGlbMTFdLHQsaVtyKzFdPShmdW5jdGlvbiBzKHQsZSl7bnVsbD09dHx8KCJzdHJpbmciPT10eXBlb2YgZT90Kz1lOiJvYmplY3QiPT10eXBlb2YgdCYmKHQ9S2UodXModCkpKSk7cmV0dXJuIHR9KShlLG4pLG8scil9fWZ1bmN0aW9uIGd1KHQsZSxuLG8pe2NvbnN0IGk9T2koKSxhPUZpKDIpO2kuZmlyc3RVcGRhdGVQYXNzJiZidShpLG51bGwsYSxvKTtjb25zdCByPXhpKCk7aWYobiE9PVNjJiZ1bShyLGEsbikpe2NvbnN0IHM9aS5kYXRhW3RhKCldO2lmKE91KHMsbykmJiFodShpLGEpKXtpZihuZ0Rldk1vZGUpe2NvbnN0IHQ9aS5kYXRhW2FdO2duKEFycmF5LmlzQXJyYXkodCk/dFsxXTp0LCExLCJTdHlsaW5nIGxpbmtlZCBsaXN0IHNoYWRvdyBpbnB1dCBzaG91bGQgYmUgbWFya2VkIGFzICdmYWxzZSciKX1sZXQgdD1vP3MuY2xhc3Nlc1dpdGhvdXRIb3N0OnMuc3R5bGVzV2l0aG91dEhvc3Q7bmdEZXZNb2RlJiYhMT09PW8mJm51bGwhPT10JiZnbih0LmVuZHNXaXRoKCI7IiksITAsIkV4cGVjdGluZyBzdGF0aWMgcG9ydGlvbiB0byBlbmQgd2l0aCAnOyciKSxudWxsIT09dCYmKG49SmUodCxufHwiIikpLHlmKGkscyxyLG4sbyl9ZWxzZSEoZnVuY3Rpb24gbCh0LGUsbixvLGksYSxyLHMpe2k9PT1TYyYmKGk9UW4pO2xldCBsPTAsYz0wLGQ9MDxpLmxlbmd0aD9pWzBdOm51bGwscD0wPGEubGVuZ3RoP2FbMF06bnVsbDtmb3IoO251bGwhPT1kfHxudWxsIT09cDspe25nRGV2TW9kZSYmX24obCw5OTksIkFyZSB3ZSBzdHVjayBpbiBpbmZpbml0ZSBsb29wPyIpLG5nRGV2TW9kZSYmX24oYyw5OTksIkFyZSB3ZSBzdHVjayBpbiBpbmZpbml0ZSBsb29wPyIpO2NvbnN0IG09bDxpLmxlbmd0aD9pW2wrMV06dm9pZCAwLGY9YzxhLmxlbmd0aD9hW2MrMV06dm9pZCAwO2xldCB1LGc9bnVsbDtkPT09cD8obCs9MixjKz0yLG0hPT1mJiYoZz1wLHU9ZikpOm51bGw9PT1wfHxudWxsIT09ZCYmZDxwPyhsKz0yLGc9ZCk6KG5nRGV2TW9kZSYmeG4ocCwiRXhwZWN0aW5nIHRvIGhhdmUgYSB2YWxpZCBrZXkiKSxjKz0yLGc9cCx1PWYpLG51bGwhPT1nJiZNdSh0LGUsbixvLGcsdSxyLHMpLGQ9bDxpLmxlbmd0aD9pW2xdOm51bGwscD1jPGEubGVuZ3RoP2FbY106bnVsbH19KShpLHMscixyWzExXSxyW2ErMV0sclthKzFdPShmdW5jdGlvbiBzKHQsZSxuKXtpZihudWxsPT1ufHwiIj09PW4pcmV0dXJuIFFuO2NvbnN0IG89W10saT11cyhuKTtpZihBcnJheS5pc0FycmF5KGkpKWZvcihsZXQgZT0wO2U8aS5sZW5ndGg7ZSsrKXQobyxpW2VdLCEwKTtlbHNlIGlmKCJvYmplY3QiPT10eXBlb2YgaSlmb3IoY29uc3QgZSBpbiBpKWkuaGFzT3duUHJvcGVydHkoZSkmJnQobyxlLGlbZV0pO2Vsc2Uic3RyaW5nIj09dHlwZW9mIGk/ZShvLGkpOm5nRGV2TW9kZSYmT24oIlVuc3VwcG9ydGVkIHN0eWxpbmcgdHlwZSAiK3R5cGVvZiBpKyI6ICIraSk7cmV0dXJuIG99KSh0LGUsbiksbyxhKX19ZnVuY3Rpb24gaHUodCxlKXtyZXR1cm4gZT49dC5leHBhbmRvU3RhcnRJbmRleH1mdW5jdGlvbiBidSh0LGUsbixvKXtuZ0Rldk1vZGUmJkJvKHQpO2NvbnN0IGk9dC5kYXRhO2lmKG51bGw9PT1pW24rMV0pe2NvbnN0IGE9aVt0YSgpXTtuZ0Rldk1vZGUmJnhuKGEsIlROb2RlIGV4cGVjdGVkIik7Y29uc3Qgcj1odSh0LG4pO091KGEsbykmJm51bGw9PT1lJiYhciYmKGU9ITEpLGU9KGZ1bmN0aW9uIGEodCxlLG4sbyl7Y29uc3QgaT1qaSh0KTtsZXQgYT1vP2UucmVzaWR1YWxDbGFzc2VzOmUucmVzaWR1YWxTdHlsZXM7aWYobnVsbD09PWkpezA9PT0obz9lLmNsYXNzQmluZGluZ3M6ZS5zdHlsZUJpbmRpbmdzKSYmKG49X3Uobj15dShudWxsLHQsZSxuLG8pLGUuYXR0cnMsbyksYT1udWxsKX1lbHNle2NvbnN0IHI9ZS5kaXJlY3RpdmVTdHlsaW5nTGFzdDtpZigtMT09PXJ8fHRbcl0hPT1pKWlmKG49eXUoaSx0LGUsbixvKSxudWxsPT09YSl7bGV0IG49KGZ1bmN0aW9uIHIodCxlLG4pe2NvbnN0IG89bj9lLmNsYXNzQmluZGluZ3M6ZS5zdHlsZUJpbmRpbmdzO2lmKDA9PT16YyhvKSlyZXR1cm47cmV0dXJuIHRbQWMobyldfSkodCxlLG8pO3ZvaWQgMCE9PW4mJkFycmF5LmlzQXJyYXkobikmJihuPXl1KG51bGwsdCxlLG5bMV0sbyksbj1fdShuLGUuYXR0cnMsbyksKGZ1bmN0aW9uIHModCxlLG4sbyl7Y29uc3QgaT1uP2UuY2xhc3NCaW5kaW5nczplLnN0eWxlQmluZGluZ3M7bmdEZXZNb2RlJiZobih6YyhpKSwwLCJFeHBlY3RpbmcgdG8gaGF2ZSBhdCBsZWFzdCBvbmUgdGVtcGxhdGUgc3R5bGluZyBiaW5kaW5nLiIpLHRbQWMoaSldPW99KSh0LGUsbyxuKSl9ZWxzZSBhPShmdW5jdGlvbiBsKHQsZSxuKXtsZXQgbztjb25zdCBpPWUuZGlyZWN0aXZlRW5kO25nRGV2TW9kZSYmaG4oZS5kaXJlY3RpdmVTdHlsaW5nTGFzdCwtMSwiQnkgdGhlIHRpbWUgdGhpcyBmdW5jdGlvbiBnZXRzIGNhbGxlZCBhdCBsZWFzdCBvbmUgaG9zdEJpbmRpbmdzLW5vZGUgc3R5bGluZyBpbnN0cnVjdGlvbiBtdXN0IGhhdmUgZXhlY3V0ZWQuIik7Zm9yKGxldCBhPTErZS5kaXJlY3RpdmVTdHlsaW5nTGFzdDthPGk7YSsrKXtvPV91KG8sdFthXS5ob3N0QXR0cnMsbil9cmV0dXJuIF91KG8sZS5hdHRycyxuKX0pKHQsZSxvKX12b2lkIDAhPT1hJiYobz9lLnJlc2lkdWFsQ2xhc3Nlcz1hOmUucmVzaWR1YWxTdHlsZXM9YSk7cmV0dXJuIG59KShpLGEsZSxvKSxYZihpLGEsZSxuLHIsbyl9fWZ1bmN0aW9uIHl1KHQsZSxuLG8saSl7bGV0IGE9bnVsbDtjb25zdCByPW4uZGlyZWN0aXZlRW5kO2xldCBzPW4uZGlyZWN0aXZlU3R5bGluZ0xhc3Q7Zm9yKC0xPT09cz9zPW4uZGlyZWN0aXZlU3RhcnQ6cysrO3M8ciYmKGE9ZVtzXSxuZ0Rldk1vZGUmJnhuKGEsImV4cGVjdGVkIHRvIGJlIGRlZmluZWQiKSxvPV91KG8sYS5ob3N0QXR0cnMsaSksYSE9PXQpOylzKys7cmV0dXJuIG51bGwhPT10JiYobi5kaXJlY3RpdmVTdHlsaW5nTGFzdD1zKSxvfWZ1bmN0aW9uIF91KHQsZSxuKXtjb25zdCBvPW4/MToyO2xldCBpPS0xO2lmKG51bGwhPT1lKWZvcihsZXQgYT0wO2E8ZS5sZW5ndGg7YSsrKXtjb25zdCByPWVbYV07Im51bWJlciI9PXR5cGVvZiByP2k9cjppPT09byYmKEFycmF5LmlzQXJyYXkodCl8fCh0PXZvaWQgMD09PXQ/W106WyIiLHRdKSxocih0LHIsISFufHxlWysrYV0pKX1yZXR1cm4gdm9pZCAwPT09dD9udWxsOnR9ZnVuY3Rpb24gQ3UodCxlLG4pe2hyKHQsZSx1cyhuKSl9ZnVuY3Rpb24gTXUodCxlLG4sbyxpLGEscixzKXtpZighKDMmZS50eXBlKSlyZXR1cm47Y29uc3QgbD10LmRhdGEsYz1sW3MrMV07aWYoIXh1KEhjKGMpP3Z1KGwsZSxuLGksemMoYykscik6dm9pZCAwKSl7eHUoYSl8fFRjKGMpJiYoYT12dShsLG51bGwsbixpLHMscikpOyEoZnVuY3Rpb24gZCh0LGUsbixvLGkpe2NvbnN0IGE9cmkodCk7aWYoZSlpPyhuZ0Rldk1vZGUmJm5nRGV2TW9kZS5yZW5kZXJlckFkZENsYXNzKyssYT90LmFkZENsYXNzKG4sbyk6KG5nRGV2TW9kZSYmeG4obi5jbGFzc0xpc3QsIkhUTUxFbGVtZW50IGV4cGVjdGVkIiksbi5jbGFzc0xpc3QuYWRkKG8pKSk6KG5nRGV2TW9kZSYmbmdEZXZNb2RlLnJlbmRlcmVyUmVtb3ZlQ2xhc3MrKyxhP3QucmVtb3ZlQ2xhc3MobixvKTpuLmNsYXNzTGlzdC5yZW1vdmUobykpO2Vsc2V7bGV0IGU9LTE9PT1vLmluZGV4T2YoIi0iKT92b2lkIDA6RWwuRGFzaENhc2U7aWYobnVsbD09aSluZ0Rldk1vZGUmJm5nRGV2TW9kZS5yZW5kZXJlclJlbW92ZVN0eWxlKyssYT90LnJlbW92ZVN0eWxlKG4sbyxlKTpuLnN0eWxlLnJlbW92ZVByb3BlcnR5KG8pO2Vsc2V7Y29uc3Qgcj0ic3RyaW5nIj09dHlwZW9mIGkmJmkuZW5kc1dpdGgoIiFpbXBvcnRhbnQiKTtyJiYoaT1pLnNsaWNlKDAsLTEwKSxlfD1FbC5JbXBvcnRhbnQpLG5nRGV2TW9kZSYmbmdEZXZNb2RlLnJlbmRlcmVyU2V0U3R5bGUrKyxhP3Quc2V0U3R5bGUobixvLGksZSk6KG5nRGV2TW9kZSYmeG4obi5zdHlsZSwiSFRNTEVsZW1lbnQgZXhwZWN0ZWQiKSxuLnN0eWxlLnNldFByb3BlcnR5KG8saSxyPyJpbXBvcnRhbnQiOiIiKSl9fX0pKG8scixjaSh0YSgpLG4pLGksYSl9fWZ1bmN0aW9uIHZ1KHQsZSxuLG8saSxhKXtjb25zdCByPW51bGw9PT1lO2xldCBzO2Zvcig7aT4wOyl7Y29uc3QgZT10W2ldLGE9QXJyYXkuaXNBcnJheShlKSxsPWE/ZVsxXTplLGM9bnVsbD09PWw7bGV0IGQ9bltpKzFdO2Q9PT1TYyYmKGQ9Yz9Rbjp2b2lkIDApO2xldCBwPWM/YnIoZCxvKTpsPT09bz9kOnZvaWQgMDtpZihhJiYheHUocCkmJihwPWJyKGUsbykpLHh1KHApJiYocz1wLHIpKXJldHVybiBzO2NvbnN0IG09dFtpKzFdO2k9cj9BYyhtKTp6YyhtKX1pZihudWxsIT09ZSl7bGV0IHQ9YT9lLnJlc2lkdWFsQ2xhc3NlczplLnJlc2lkdWFsU3R5bGVzO251bGwhPXQmJihzPWJyKHQsbykpfXJldHVybiBzfWZ1bmN0aW9uIHh1KHQpe3JldHVybiB2b2lkIDAhPT10fWZ1bmN0aW9uIE91KHQsZSl7cmV0dXJuIDAhPSh0LmZsYWdzJihlPzE2OjMyKSl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIFB1KHQsZT0iIil7Y29uc3Qgbj14aSgpLG89T2koKSxpPXQrdm87bmdEZXZNb2RlJiZnbih6aSgpLG8uYmluZGluZ1N0YXJ0SW5kZXgsInRleHQgbm9kZXMgc2hvdWxkIGJlIGNyZWF0ZWQgYmVmb3JlIGFueSBiaW5kaW5ncyIpLG5nRGV2TW9kZSYmd24obixpKTtjb25zdCBhPW8uZmlyc3RDcmVhdGVQYXNzP19kKG8saSwxLGUsbnVsbCk6by5kYXRhW2ldLHI9bltpXT1CbChuWzExXSxlKTtyYyhvLG4scixhKSxEaShhLCExKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gd3UodCl7cmV0dXJuIGt1KCIiLHQsIiIpLHd1fWZ1bmN0aW9uIGt1KHQsZSxuKXtjb25zdCBvPXhpKCksaT1DbShvLHQsZSxuKTtyZXR1cm4gaSE9PVNjJiZncChvLHRhKCksaSksa3V9ZnVuY3Rpb24gU3UodCxlLG4sbyxpKXtjb25zdCBhPXhpKCkscj1NbShhLHQsZSxuLG8saSk7cmV0dXJuIHIhPT1TYyYmZ3AoYSx0YSgpLHIpLFN1fWZ1bmN0aW9uIER1KHQsZSxuLG8saSxhLHIpe2NvbnN0IHM9eGkoKSxsPXZtKHMsdCxlLG4sbyxpLGEscik7cmV0dXJuIGwhPT1TYyYmZ3Aocyx0YSgpLGwpLER1fWZ1bmN0aW9uIFJ1KHQsZSxuLG8saSxhLHIscyxsKXtjb25zdCBjPXhpKCksZD14bShjLHQsZSxuLG8saSxhLHIscyxsKTtyZXR1cm4gZCE9PVNjJiZncChjLHRhKCksZCksUnV9ZnVuY3Rpb24gRXUodCxlLG4sbyxpLGEscixzLGwsYyxkKXtjb25zdCBwPXhpKCksbT1PbShwLHQsZSxuLG8saSxhLHIscyxsLGMsZCk7cmV0dXJuIG0hPT1TYyYmZ3AocCx0YSgpLG0pLEV1fWZ1bmN0aW9uIEF1KHQsZSxuLG8saSxhLHIscyxsLGMsZCxwLG0pe2NvbnN0IGY9eGkoKSx1PVBtKGYsdCxlLG4sbyxpLGEscixzLGwsYyxkLHAsbSk7cmV0dXJuIHUhPT1TYyYmZ3AoZix0YSgpLHUpLEF1fWZ1bmN0aW9uIFR1KHQsZSxuLG8saSxhLHIscyxsLGMsZCxwLG0sZix1KXtjb25zdCBnPXhpKCksaD13bShnLHQsZSxuLG8saSxhLHIscyxsLGMsZCxwLG0sZix1KTtyZXR1cm4gaCE9PVNjJiZncChnLHRhKCksaCksVHV9ZnVuY3Rpb24gTnUodCxlLG4sbyxpLGEscixzLGwsYyxkLHAsbSxmLHUsZyxoKXtjb25zdCBiPXhpKCkseT1rbShiLHQsZSxuLG8saSxhLHIscyxsLGMsZCxwLG0sZix1LGcsaCk7cmV0dXJuIHkhPT1TYyYmZ3AoYix0YSgpLHkpLE51fWZ1bmN0aW9uIHp1KHQpe2NvbnN0IGU9eGkoKSxuPV9tKGUsdCk7cmV0dXJuIG4hPT1TYyYmZ3AoZSx0YSgpLG4pLHp1fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBJdSh0LGUsbil7Z3UoaHIsZnUsQ20oeGkoKSx0LGUsbiksITApfWZ1bmN0aW9uIEh1KHQsZSxuLG8saSl7Z3UoaHIsZnUsTW0oeGkoKSx0LGUsbixvLGkpLCEwKX1mdW5jdGlvbiBGdSh0LGUsbixvLGksYSxyKXtndShocixmdSx2bSh4aSgpLHQsZSxuLG8saSxhLHIpLCEwKX1mdW5jdGlvbiBMdSh0LGUsbixvLGksYSxyLHMsbCl7Z3UoaHIsZnUseG0oeGkoKSx0LGUsbixvLGksYSxyLHMsbCksITApfWZ1bmN0aW9uIEJ1KHQsZSxuLG8saSxhLHIscyxsLGMsZCl7Z3UoaHIsZnUsT20oeGkoKSx0LGUsbixvLGksYSxyLHMsbCxjLGQpLCEwKX1mdW5jdGlvbiBWdSh0LGUsbixvLGksYSxyLHMsbCxjLGQscCxtKXtndShocixmdSxQbSh4aSgpLHQsZSxuLG8saSxhLHIscyxsLGMsZCxwLG0pLCEwKX1mdW5jdGlvbiBqdSh0LGUsbixvLGksYSxyLHMsbCxjLGQscCxtLGYsdSl7Z3UoaHIsZnUsd20oeGkoKSx0LGUsbixvLGksYSxyLHMsbCxjLGQscCxtLGYsdSksITApfWZ1bmN0aW9uIFV1KHQsZSxuLG8saSxhLHIscyxsLGMsZCxwLG0sZix1LGcsaCl7Z3UoaHIsZnUsa20oeGkoKSx0LGUsbixvLGksYSxyLHMsbCxjLGQscCxtLGYsdSxnLGgpLCEwKX1mdW5jdGlvbiBXdSh0KXtndShocixmdSxfbSh4aSgpLHQpLCEwKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gR3UodCxlLG4pe2R1KENtKHhpKCksdCxlLG4pKX1mdW5jdGlvbiBZdSh0LGUsbixvLGkpe2R1KE1tKHhpKCksdCxlLG4sbyxpKSl9ZnVuY3Rpb24gcXUodCxlLG4sbyxpLGEscil7ZHUodm0oeGkoKSx0LGUsbixvLGksYSxyKSl9ZnVuY3Rpb24gWnUodCxlLG4sbyxpLGEscixzLGwpe2R1KHhtKHhpKCksdCxlLG4sbyxpLGEscixzLGwpKX1mdW5jdGlvbiBYdSh0LGUsbixvLGksYSxyLHMsbCxjLGQpe2R1KE9tKHhpKCksdCxlLG4sbyxpLGEscixzLGwsYyxkKSl9ZnVuY3Rpb24gS3UodCxlLG4sbyxpLGEscixzLGwsYyxkLHAsbSl7ZHUoUG0oeGkoKSx0LGUsbixvLGksYSxyLHMsbCxjLGQscCxtKSl9ZnVuY3Rpb24gSnUodCxlLG4sbyxpLGEscixzLGwsYyxkLHAsbSxmLHUpe2R1KHdtKHhpKCksdCxlLG4sbyxpLGEscixzLGwsYyxkLHAsbSxmLHUpKX1mdW5jdGlvbiBRdSh0LGUsbixvLGksYSxyLHMsbCxjLGQscCxtLGYsdSxnLGgpe2R1KGttKHhpKCksdCxlLG4sbyxpLGEscixzLGwsYyxkLHAsbSxmLHUsZyxoKSl9ZnVuY3Rpb24gJHUodCl7ZHUoX20oeGkoKSx0KSl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIHRnKHQsZSxuLG8saSl7cmV0dXJuIHV1KHQsQ20oeGkoKSxlLG4sbyksaSwhMSksdGd9ZnVuY3Rpb24gZWcodCxlLG4sbyxpLGEscil7cmV0dXJuIHV1KHQsTW0oeGkoKSxlLG4sbyxpLGEpLHIsITEpLGVnfWZ1bmN0aW9uIG5nKHQsZSxuLG8saSxhLHIscyxsKXtyZXR1cm4gdXUodCx2bSh4aSgpLGUsbixvLGksYSxyLHMpLGwsITEpLG5nfWZ1bmN0aW9uIG9nKHQsZSxuLG8saSxhLHIscyxsLGMsZCl7cmV0dXJuIHV1KHQseG0oeGkoKSxlLG4sbyxpLGEscixzLGwsYyksZCwhMSksb2d9ZnVuY3Rpb24gaWcodCxlLG4sbyxpLGEscixzLGwsYyxkLHAsbSl7cmV0dXJuIHV1KHQsT20oeGkoKSxlLG4sbyxpLGEscixzLGwsYyxkLHApLG0sITEpLGlnfWZ1bmN0aW9uIGFnKHQsZSxuLG8saSxhLHIscyxsLGMsZCxwLG0sZix1KXtyZXR1cm4gdXUodCxQbSh4aSgpLGUsbixvLGksYSxyLHMsbCxjLGQscCxtLGYpLHUsITEpLGFnfWZ1bmN0aW9uIHJnKHQsZSxuLG8saSxhLHIscyxsLGMsZCxwLG0sZix1LGcsaCl7cmV0dXJuIHV1KHQsd20oeGkoKSxlLG4sbyxpLGEscixzLGwsYyxkLHAsbSxmLHUsZyksaCwhMSkscmd9ZnVuY3Rpb24gc2codCxlLG4sbyxpLGEscixzLGwsYyxkLHAsbSxmLHUsZyxoLGIseSl7cmV0dXJuIHV1KHQsa20oeGkoKSxlLG4sbyxpLGEscixzLGwsYyxkLHAsbSxmLHUsZyxoLGIpLHksITEpLHNnfWZ1bmN0aW9uIGxnKHQsZSxuKXtyZXR1cm4gdXUodCxfbSh4aSgpLGUpLG4sITEpLGxnfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBjZyh0LGUsbil7Y29uc3Qgbz14aSgpLGk9SGkoKTtpZih1bShvLGksZSkpe2NvbnN0IGE9T2koKSxyPW5hKCk7emQoYSxyLG8sdCxlLG9bMTFdLG4sITApLG5nRGV2TW9kZSYmbHAoYS5kYXRhLHIsdCxpKX1yZXR1cm4gY2d9ZnVuY3Rpb24gZGcodCxlLG4pe2NvbnN0IG89eGkoKSxpPUhpKCk7aWYodW0obyxpLGUpKXtjb25zdCBhPU9pKCkscj1uYSgpO3pkKGEscixvLHQsZSxtcChqaShhLmRhdGEpLHIsbyksbiwhMCksbmdEZXZNb2RlJiZscChhLmRhdGEscix0LGkpfXJldHVybiBkZ30KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0kxOG5DbG9zdXJlTW9kZSYmKFhuLm5nSTE4bkNsb3N1cmVNb2RlPSJ1bmRlZmluZWQiIT10eXBlb2YgZ29vZyYmImZ1bmN0aW9uIj09dHlwZW9mIGdvb2cuZ2V0TXNnKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3QgcGc9dm9pZCAwO3ZhciBtZz1bImVuIixbWyJhIiwicCJdLFsiQU0iLCJQTSJdLHBnXSxbWyJBTSIsIlBNIl0scGcscGddLFtbIlMiLCJNIiwiVCIsIlciLCJUIiwiRiIsIlMiXSxbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLFsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXSxbIlN1IiwiTW8iLCJUdSIsIldlIiwiVGgiLCJGciIsIlNhIl1dLHBnLFtbIkoiLCJGIiwiTSIsIkEiLCJNIiwiSiIsIkoiLCJBIiwiUyIsIk8iLCJOIiwiRCJdLFsiSmFuIiwiRmViIiwiTWFyIiwiQXByIiwiTWF5IiwiSnVuIiwiSnVsIiwiQXVnIiwiU2VwIiwiT2N0IiwiTm92IiwiRGVjIl0sWyJKYW51YXJ5IiwiRmVicnVhcnkiLCJNYXJjaCIsIkFwcmlsIiwiTWF5IiwiSnVuZSIsIkp1bHkiLCJBdWd1c3QiLCJTZXB0ZW1iZXIiLCJPY3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdXSxwZyxbWyJCIiwiQSJdLFsiQkMiLCJBRCJdLFsiQmVmb3JlIENocmlzdCIsIkFubm8gRG9taW5pIl1dLDAsWzYsMF0sWyJNL2QveXkiLCJNTU0gZCwgeSIsIk1NTU0gZCwgeSIsIkVFRUUsIE1NTU0gZCwgeSJdLFsiaDptbSBhIiwiaDptbTpzcyBhIiwiaDptbTpzcyBhIHoiLCJoOm1tOnNzIGEgenp6eiJdLFsiezF9LCB7MH0iLHBnLCJ7MX0gJ2F0JyB7MH0iLHBnXSxbIi4iLCIsIiwiOyIsIiUiLCIrIiwiLSIsIkUiLCLDlyIsIuKAsCIsIuKIniIsIk5hTiIsIjoiXSxbIiMsIyMwLiMjIyIsIiMsIyMwJSIsIsKkIywjIzAuMDAiLCIjRTAiXSwiVVNEIiwiJCIsIlVTIERvbGxhciIse30sImx0ciIsZnVuY3Rpb24gZmcodCl7Y29uc3QgZT1NYXRoLmZsb29yKE1hdGguYWJzKHQpKSxuPXQudG9TdHJpbmcoKS5yZXBsYWNlKC9eW14uXSpcLj8vLCIiKS5sZW5ndGg7cmV0dXJuIDE9PT1lJiYwPT09bj8xOjV9XTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovbGV0IHVnPXt9O2Z1bmN0aW9uIGdnKHQpe2NvbnN0IGU9KGZ1bmN0aW9uIG4odCl7cmV0dXJuIHQudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9fL2csIi0iKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovKSh0KTtsZXQgbz1iZyhlKTtpZihvKXJldHVybiBvO2NvbnN0IGk9ZS5zcGxpdCgiLSIpWzBdO2lmKG89YmcoaSksbylyZXR1cm4gbztpZigiZW4iPT09aSlyZXR1cm4gbWc7dGhyb3cgbmV3IEVycm9yKGBNaXNzaW5nIGxvY2FsZSBkYXRhIGZvciB0aGUgbG9jYWxlICIke3R9Ii5gKX1mdW5jdGlvbiBoZyh0KXtyZXR1cm4gZ2codClbeWcuUGx1cmFsQ2FzZV19ZnVuY3Rpb24gYmcodCl7cmV0dXJuIHQgaW4gdWd8fCh1Z1t0XT1Ybi5uZyYmWG4ubmcuY29tbW9uJiZYbi5uZy5jb21tb24ubG9jYWxlcyYmWG4ubmcuY29tbW9uLmxvY2FsZXNbdF0pLHVnW3RdfXZhciB5ZzshKGZ1bmN0aW9uKHQpe3RbdC5Mb2NhbGVJZD0wXT0iTG9jYWxlSWQiLHRbdC5EYXlQZXJpb2RzRm9ybWF0PTFdPSJEYXlQZXJpb2RzRm9ybWF0Iix0W3QuRGF5UGVyaW9kc1N0YW5kYWxvbmU9Ml09IkRheVBlcmlvZHNTdGFuZGFsb25lIix0W3QuRGF5c0Zvcm1hdD0zXT0iRGF5c0Zvcm1hdCIsdFt0LkRheXNTdGFuZGFsb25lPTRdPSJEYXlzU3RhbmRhbG9uZSIsdFt0Lk1vbnRoc0Zvcm1hdD01XT0iTW9udGhzRm9ybWF0Iix0W3QuTW9udGhzU3RhbmRhbG9uZT02XT0iTW9udGhzU3RhbmRhbG9uZSIsdFt0LkVyYXM9N109IkVyYXMiLHRbdC5GaXJzdERheU9mV2Vlaz04XT0iRmlyc3REYXlPZldlZWsiLHRbdC5XZWVrZW5kUmFuZ2U9OV09IldlZWtlbmRSYW5nZSIsdFt0LkRhdGVGb3JtYXQ9MTBdPSJEYXRlRm9ybWF0Iix0W3QuVGltZUZvcm1hdD0xMV09IlRpbWVGb3JtYXQiLHRbdC5EYXRlVGltZUZvcm1hdD0xMl09IkRhdGVUaW1lRm9ybWF0Iix0W3QuTnVtYmVyU3ltYm9scz0xM109Ik51bWJlclN5bWJvbHMiLHRbdC5OdW1iZXJGb3JtYXRzPTE0XT0iTnVtYmVyRm9ybWF0cyIsdFt0LkN1cnJlbmN5Q29kZT0xNV09IkN1cnJlbmN5Q29kZSIsdFt0LkN1cnJlbmN5U3ltYm9sPTE2XT0iQ3VycmVuY3lTeW1ib2wiLHRbdC5DdXJyZW5jeU5hbWU9MTddPSJDdXJyZW5jeU5hbWUiLHRbdC5DdXJyZW5jaWVzPTE4XT0iQ3VycmVuY2llcyIsdFt0LkRpcmVjdGlvbmFsaXR5PTE5XT0iRGlyZWN0aW9uYWxpdHkiLHRbdC5QbHVyYWxDYXNlPTIwXT0iUGx1cmFsQ2FzZSIsdFt0LkV4dHJhRGF0YT0yMV09IkV4dHJhRGF0YSJ9KSh5Z3x8KHlnPXt9KSk7Y29uc3QgX2c9WyJ6ZXJvIiwib25lIiwidHdvIiwiZmV3IiwibWFueSJdO2NvbnN0IENnPSJlbi1VUyIsTWc9e21hcmtlcjoiZWxlbWVudCJ9LHZnPXttYXJrZXI6IklDVSJ9O3ZhciB4ZzshKGZ1bmN0aW9uKHQpe3RbdC5TSElGVD0yXT0iU0hJRlQiLHRbdC5BUFBFTkRfRUFHRVJMWT0xXT0iQVBQRU5EX0VBR0VSTFkiLHRbdC5DT01NRU5UPTJdPSJDT01NRU5UIn0pKHhnfHwoeGc9e30pKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmxldCBPZz1DZztmdW5jdGlvbiBQZyh0KXt4bih0LCJFeHBlY3RlZCBsb2NhbGVJZCB0byBiZSBkZWZpbmVkIiksInN0cmluZyI9PXR5cGVvZiB0JiYoT2c9dC50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL18vZywiLSIpKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmZ1bmN0aW9uIHdnKHQsZSxuKXtjb25zdCBvPWUuaW5zZXJ0QmVmb3JlSW5kZXgsaT1BcnJheS5pc0FycmF5KG8pP29bMF06bztyZXR1cm4gbnVsbD09PWk/bmModCwwLG4pOihuZ0Rldk1vZGUmJnduKG4saSksbGkobltpXSkpfWZ1bmN0aW9uIGtnKHQsZSxuLG8saSl7Y29uc3QgYT1lLmluc2VydEJlZm9yZUluZGV4O2lmKEFycmF5LmlzQXJyYXkoYSkpe25nRGV2TW9kZSYmUG4obyk7bGV0IHI9byxzPW51bGw7aWYoMyZlLnR5cGV8fChzPXIscj1pKSxudWxsIT09ciYmMD09KDImZS5mbGFncykpZm9yKGxldCBlPTE7ZTxhLmxlbmd0aDtlKyspe0psKHQscixuW2FbZV1dLHMsITEpfX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIFNnKHQsZSl7aWYobmdEZXZNb2RlJiZnbihlLmluc2VydEJlZm9yZUluZGV4LG51bGwsIldlIGV4cGVjdCB0aGF0IGluc2VydEJlZm9yZUluZGV4IGlzIG5vdCBzZXQiKSx0LnB1c2goZSksdC5sZW5ndGg+MSlmb3IobGV0IG49dC5sZW5ndGgtMjtuPj0wO24tLSl7Y29uc3Qgbz10W25dO0RnKG8pfHxSZyhvLGUpJiZudWxsPT09RWcobykmJkFnKG8sZS5pbmRleCl9fWZ1bmN0aW9uIERnKHQpe3JldHVybiEoNjQmdC50eXBlKX1mdW5jdGlvbiBSZyh0LGUpe3JldHVybiBEZyhlKXx8dC5pbmRleD5lLmluZGV4fWZ1bmN0aW9uIEVnKHQpe2NvbnN0IGU9dC5pbnNlcnRCZWZvcmVJbmRleDtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9lWzBdOmV9ZnVuY3Rpb24gQWcodCxlKXtjb25zdCBuPXQuaW5zZXJ0QmVmb3JlSW5kZXg7QXJyYXkuaXNBcnJheShuKT9uWzBdPWU6KGFjKHdnLGtnKSx0Lmluc2VydEJlZm9yZUluZGV4PWUpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBUZyh0LGUpe2NvbnN0IG49dC5kYXRhW2VdO2lmKG51bGw9PT1ufHwic3RyaW5nIj09dHlwZW9mIG4pcmV0dXJuIG51bGw7IW5nRGV2TW9kZXx8bi5oYXNPd25Qcm9wZXJ0eSgidFZpZXdzIil8fG4uaGFzT3duUHJvcGVydHkoImN1cnJlbnRDYXNlTFZpZXdJbmRleCIpfHxPbigiV2UgZXhwZWN0IHRvIGdldCAnbnVsbCd8J1RJY3UnfCdUSWN1Q29udGFpbmVyJywgYnV0IGdvdDogIituKTtjb25zdCBvPW4uaGFzT3duUHJvcGVydHkoImN1cnJlbnRDYXNlTFZpZXdJbmRleCIpP246bi52YWx1ZTtyZXR1cm4gbmdEZXZNb2RlJiZObyhvKSxvfWZ1bmN0aW9uIE5nKHQsZSxuKXtjb25zdCBvPUNkKHQsbiw2NCxudWxsLG51bGwpO3JldHVybiBTZyhlLG8pLG99ZnVuY3Rpb24gemcodCxlKXtjb25zdCBuPWVbdC5jdXJyZW50Q2FzZUxWaWV3SW5kZXhdO3JldHVybiBudWxsPT09bj9uOm48MD9+bjpufWZ1bmN0aW9uIElnKHQpe3JldHVybiB0Pj4+MTd9ZnVuY3Rpb24gSGcodCl7cmV0dXJuKDEzMTA3MCZ0KT4+PjF9ZnVuY3Rpb24gRmcodCl7cmV0dXJuIDEmdH0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmxldCBMZz0wLEJnPTA7ZnVuY3Rpb24gVmcodCxlLG4sbyl7bmdEZXZNb2RlJiZQbihvKTtjb25zdCBpPW5bMTFdO2xldCBhLHI9bnVsbDtmb3IobGV0IHM9MDtzPGUubGVuZ3RoO3MrKyl7Y29uc3QgbD1lW3NdO2lmKCJzdHJpbmciPT10eXBlb2YgbCl7Y29uc3QgdD1lWysrc107bnVsbD09PW5bdF0mJihuZ0Rldk1vZGUmJm5nRGV2TW9kZS5yZW5kZXJlckNyZWF0ZVRleHROb2RlKyssbmdEZXZNb2RlJiZ3bihuLHQpLG5bdF09QmwoaSxsKSl9ZWxzZSBpZigibnVtYmVyIj09dHlwZW9mIGwpc3dpdGNoKDEmbCl7Y2FzZSAwOmNvbnN0IGM9SWcobCk7bGV0IGQscDtpZihudWxsPT09ciYmKHI9YyxhPXRjKGksbykpLGM9PT1yPyhkPW8scD1hKTooZD1udWxsLHA9bGkobltjXSkpLG51bGwhPT1wKXtuZ0Rldk1vZGUmJlBuKHApO2NvbnN0IGU9SGcobCk7bmdEZXZNb2RlJiZNbihlLHZvLCJNaXNzaW5nIHJlZiIpO2NvbnN0IG89bltlXTtuZ0Rldk1vZGUmJlBuKG8pLEpsKGkscCxvLGQsITEpO2NvbnN0IGE9VGcodCxlKTtpZihudWxsIT09YSYmIm9iamVjdCI9PXR5cGVvZiBhKXtuZ0Rldk1vZGUmJk5vKGEpO2NvbnN0IGU9emcoYSxuKTtudWxsIT09ZSYmVmcodCxhLmNyZWF0ZVtlXSxuLG5bYS5hbmNob3JJZHhdKX19YnJlYWs7Y2FzZSAxOmNvbnN0IG09ZVsrK3NdLGY9ZVsrK3NdO1pkKGksY2kobD4+PjEsbiksbnVsbCxudWxsLG0sZixudWxsKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIGRldGVybWluZSB0aGUgdHlwZSBvZiBtdXRhdGUgb3BlcmF0aW9uIGZvciAiJHtsfSJgKX1lbHNlIHN3aXRjaChsKXtjYXNlIHZnOmNvbnN0IHQ9ZVsrK3NdLG89ZVsrK3NdO2lmKG51bGw9PT1uW29dKXtuZ0Rldk1vZGUmJmduKHR5cGVvZiB0LCJzdHJpbmciLGBFeHBlY3RlZCAiJHt0fSIgdG8gYmUgYSBjb21tZW50IG5vZGUgdmFsdWVgKSxuZ0Rldk1vZGUmJm5nRGV2TW9kZS5yZW5kZXJlckNyZWF0ZUNvbW1lbnQrKyxuZ0Rldk1vZGUmJlZvKG4sbyk7YWwobltvXT1qbChpLHQpLG4pfWJyZWFrO2Nhc2UgTWc6Y29uc3QgYT1lWysrc10scj1lWysrc107aWYobnVsbD09PW5bcl0pe25nRGV2TW9kZSYmZ24odHlwZW9mIGEsInN0cmluZyIsYEV4cGVjdGVkICIke2F9IiB0byBiZSBhbiBlbGVtZW50IG5vZGUgdGFnIG5hbWVgKSxuZ0Rldk1vZGUmJm5nRGV2TW9kZS5yZW5kZXJlckNyZWF0ZUVsZW1lbnQrKyxuZ0Rldk1vZGUmJlZvKG4scik7YWwobltyXT1VbChpLGEsbnVsbCksbil9YnJlYWs7ZGVmYXVsdDpuZ0Rldk1vZGUmJk9uKGBVbmFibGUgdG8gZGV0ZXJtaW5lIHRoZSB0eXBlIG9mIG11dGF0ZSBvcGVyYXRpb24gZm9yICIke2x9ImApfX19ZnVuY3Rpb24gamcodCxlLG4sbyxpKXtmb3IobGV0IGE9MDthPG4ubGVuZ3RoO2ErKyl7Y29uc3Qgcj1uW2FdLHM9blsrK2FdO2lmKHImaSl7bGV0IGk9IiI7Zm9yKGxldCByPWErMTtyPD1hK3M7cisrKXtjb25zdCBhPW5bcl07aWYoInN0cmluZyI9PXR5cGVvZiBhKWkrPWE7ZWxzZSBpZigibnVtYmVyIj09dHlwZW9mIGEpaWYoYTwwKWkrPXJuKGVbby1hXSk7ZWxzZXtjb25zdCBzPWE+Pj4yO3N3aXRjaCgzJmEpe2Nhc2UgMTpjb25zdCBhPW5bKytyXSxsPW5bKytyXSxjPXQuZGF0YVtzXTtuZ0Rldk1vZGUmJnhuKGMsIkV4cGVydGluZyBUTm9kZSBvciBzdHJpbmciKSwic3RyaW5nIj09dHlwZW9mIGM/WmQoZVsxMV0sZVtzXSxudWxsLGMsYSxpLGwpOnpkKHQsYyxlLGEsaSxlWzExXSxsLCExKTticmVhaztjYXNlIDA6Y29uc3QgZD1lW3NdO251bGwhPT1kJiZWbChlWzExXSxkLGkpO2JyZWFrO2Nhc2UgMjpXZyh0LFRnKHQscyksZSxpKTticmVhaztjYXNlIDM6VWcodCxUZyh0LHMpLG8sZSl9fX19ZWxzZXtjb25zdCBpPW5bYSsxXTtpZihpPjAmJjM9PSgzJmkpKXtjb25zdCBuPVRnKHQsaT4+PjIpO2Vbbi5jdXJyZW50Q2FzZUxWaWV3SW5kZXhdPDAmJlVnKHQsbixvLGUpfX1hKz1zfX1mdW5jdGlvbiBVZyh0LGUsbixvKXtuZ0Rldk1vZGUmJnduKG8sZS5jdXJyZW50Q2FzZUxWaWV3SW5kZXgpO2xldCBpPW9bZS5jdXJyZW50Q2FzZUxWaWV3SW5kZXhdO2lmKG51bGwhPT1pKXtsZXQgYT1MZztpPDAmJihpPW9bZS5jdXJyZW50Q2FzZUxWaWV3SW5kZXhdPX5pLGE9LTEpLGpnKHQsbyxlLnVwZGF0ZVtpXSxuLGEpfX1mdW5jdGlvbiBXZyh0LGUsbixvKXtjb25zdCBpPShmdW5jdGlvbiBhKHQsZSl7bGV0IG49dC5jYXNlcy5pbmRleE9mKGUpO2lmKC0xPT09bilzd2l0Y2godC50eXBlKXtjYXNlIDE6e2NvbnN0IG89KGZ1bmN0aW9uIGkodCxlKXtjb25zdCBuPWhnKGUpKHBhcnNlSW50KHQsMTApKSxvPV9nW25dO3JldHVybiB2b2lkIDAhPT1vP286Im90aGVyIn0pKGUsKGZ1bmN0aW9uIG8oKXtyZXR1cm4gT2d9KSgpKTtuPXQuY2FzZXMuaW5kZXhPZihvKSwtMT09PW4mJiJvdGhlciIhPT1vJiYobj10LmNhc2VzLmluZGV4T2YoIm90aGVyIikpO2JyZWFrfWNhc2UgMDpuPXQuY2FzZXMuaW5kZXhPZigib3RoZXIiKX1yZXR1cm4tMT09PW4/bnVsbDpufQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8pKGUsbyk7aWYoemcoZSxuKSE9PWkmJihHZyh0LGUsbiksbltlLmN1cnJlbnRDYXNlTFZpZXdJbmRleF09bnVsbD09PWk/bnVsbDp+aSxudWxsIT09aSkpe2NvbnN0IG89bltlLmFuY2hvcklkeF07byYmKG5nRGV2TW9kZSYmUG4obyksVmcodCxlLmNyZWF0ZVtpXSxuLG8pKX19ZnVuY3Rpb24gR2codCxlLG4pe2xldCBvPXpnKGUsbik7aWYobnVsbCE9PW8pe2NvbnN0IGk9ZS5yZW1vdmVbb107Zm9yKGxldCBlPTA7ZTxpLmxlbmd0aDtlKyspe2NvbnN0IG89aVtlXTtpZihvPjApe2NvbnN0IHQ9Y2kobyxuKTtudWxsIT09dCYmZGMoblsxMV0sdCl9ZWxzZSBHZyh0LFRnKHQsfm8pLG4pfX19ZnVuY3Rpb24gWWcoKXtjb25zdCB0PVtdO2xldCBlLG4sbz0tMTtmdW5jdGlvbiBpKHQsZSl7bz0wO2NvbnN0IGk9emcodCxlKTtudWxsIT09aT8obmdEZXZNb2RlJiZtbihpLDAsdC5jYXNlcy5sZW5ndGgtMSksbj10LnJlbW92ZVtpXSk6bj1Rbn1mdW5jdGlvbiBhKCl7aWYobzxuLmxlbmd0aCl7Y29uc3Qgcj1uW28rK107aWYobmdEZXZNb2RlJiZwbihyLCJFeHBlY3RpbmcgT3BDb2RlIG51bWJlciIpLHI+MCl7Y29uc3QgdD1lW3JdO3JldHVybiBuZ0Rldk1vZGUmJlBuKHQpLHR9e3QucHVzaChvLG4pO2NvbnN0IHM9ZVsxXS5kYXRhW35yXTtyZXR1cm4gbmdEZXZNb2RlJiZObyhzKSxpKHMsZSksYSgpfX1yZXR1cm4gMD09PXQubGVuZ3RoP251bGw6KG49dC5wb3AoKSxvPXQucG9wKCksYSgpKX1yZXR1cm4gZnVuY3Rpb24gcihuLG8pe2ZvcihlPW87dC5sZW5ndGg7KXQucG9wKCk7cmV0dXJuIG5nRGV2TW9kZSYmRW8obixvKSxpKG4udmFsdWUsbyksYX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIHFnKHQpe2NvbnN0IGU9dHx8KEFycmF5LmlzQXJyYXkodGhpcyk/dGhpczpbXSk7bGV0IG49W107Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0Kyspe2NvbnN0IG89ZVt0KytdLGk9KG8meGcuQVBQRU5EX0VBR0VSTFkpPT09eGcuQVBQRU5EX0VBR0VSTFksYT1vPj4+eGcuU0hJRlQ7bi5wdXNoKGBsVmlld1ske2F9XSA9IGRvY3VtZW50LiR7KG8meGcuQ09NTUVOVCk9PT14Zy5DT01NRU5UPyJjcmVhdGVDb21tZW50IjoiY3JlYXRlVGV4dCJ9KCR7SlNPTi5zdHJpbmdpZnkoZVt0XSl9KTtgKSxpJiZuLnB1c2goYHBhcmVudC5hcHBlbmRDaGlsZChsVmlld1ske2F9XSk7YCl9cmV0dXJuIG59ZnVuY3Rpb24gWmcodCl7Y29uc3QgZT1uZXcgSmcodHx8KEFycmF5LmlzQXJyYXkodGhpcyk/dGhpczpbXSkpO2xldCBuPVtdO2Z1bmN0aW9uIG8odCl7Y29uc3Qgbj10Pj4+Mjtzd2l0Y2goMyZ0KXtjYXNlIDA6cmV0dXJuYChsVmlld1ske259XSBhcyBUZXh0KS50ZXh0Q29udGVudCA9ICQkJGA7Y2FzZSAxOmNvbnN0IHQ9ZS5jb25zdW1lU3RyaW5nKCksbz1lLmNvbnN1bWVGdW5jdGlvbigpO3JldHVybmAobFZpZXdbJHtufV0gYXMgRWxlbWVudCkuc2V0QXR0cmlidXRlKCcke3R9JywgJHtvP2AoJHtvfSkoJCQkKWA6IiQkJCJ9KWA7Y2FzZSAyOnJldHVybmBpY3VTd2l0Y2hDYXNlKCR7bn0sICQkJClgO2Nhc2UgMzpyZXR1cm5gaWN1VXBkYXRlQ2FzZSgke259KWB9dGhyb3cgbmV3IEVycm9yKCJ1bmV4cGVjdGVkIE9wQ29kZSIpfWZvcig7ZS5oYXNNb3JlKCk7KXtsZXQgdD1lLmNvbnN1bWVOdW1iZXIoKSxpPWUuY29uc3VtZU51bWJlcigpO2NvbnN0IGE9ZS5pK2kscj1bXTtsZXQgcz0iIjtmb3IoO2UuaTxhOyl7bGV0IHQ9ZS5jb25zdW1lTnVtYmVyT3JTdHJpbmcoKTtpZigic3RyaW5nIj09dHlwZW9mIHQpcys9dDtlbHNlIGlmKHQ8MClzKz0iJHtsVmlld1tpIit0KyJdfSI7ZWxzZXtjb25zdCBlPW8odCk7ci5wdXNoKGUucmVwbGFjZSgiJCQkIiwiYCIrcysiYCIpKyI7Iikscz0iIn19bi5wdXNoKGBpZiAobWFzayAmIDBiJHt0LnRvU3RyaW5nKDIpfSkgeyAke3Iuam9pbigiICIpfSB9YCl9cmV0dXJuIG59ZnVuY3Rpb24gWGcodCl7Y29uc3QgZT1uZXcgSmcodHx8KEFycmF5LmlzQXJyYXkodGhpcyk/dGhpczpbXSkpO2xldCBuPVtdO2Z1bmN0aW9uIG8odCl7Y29uc3Qgbj1JZyh0KSxvPUhnKHQpO3N3aXRjaChGZyh0KSl7Y2FzZSAwOnJldHVybmAobFZpZXdbJHtufV0gYXMgRWxlbWVudCkuYXBwZW5kQ2hpbGQobFZpZXdbJHtpfV0pYDtjYXNlIDE6cmV0dXJuYChsVmlld1ske299XSBhcyBFbGVtZW50KS5zZXRBdHRyaWJ1dGUoIiR7ZS5jb25zdW1lU3RyaW5nKCl9IiwgIiR7ZS5jb25zdW1lU3RyaW5nKCl9IilgfXRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCBPcENvZGU6ICIrRmcodCkpfWxldCBpPS0xO2Zvcig7ZS5oYXNNb3JlKCk7KXtsZXQgdD1lLmNvbnN1bWVOdW1iZXJTdHJpbmdPck1hcmtlcigpO2lmKHQ9PT12Zyl7Y29uc3QgdD1lLmNvbnN1bWVTdHJpbmcoKTtpPWUuY29uc3VtZU51bWJlcigpLG4ucHVzaChgbFZpZXdbJHtpfV0gPSBkb2N1bWVudC5jcmVhdGVDb21tZW50KCIke3R9IilgKX1lbHNlIGlmKHQ9PT1NZyl7Y29uc3QgdD1lLmNvbnN1bWVTdHJpbmcoKTtpPWUuY29uc3VtZU51bWJlcigpLG4ucHVzaChgbFZpZXdbJHtpfV0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCIke3R9IilgKX1lbHNlIGlmKCJzdHJpbmciPT10eXBlb2YgdClpPWUuY29uc3VtZU51bWJlcigpLG4ucHVzaChgbFZpZXdbJHtpfV0gPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiJHt0fSIpYCk7ZWxzZXtpZigibnVtYmVyIiE9dHlwZW9mIHQpdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIHZhbHVlIik7e2NvbnN0IGU9byh0KTtlJiZuLnB1c2goZSl9fX1yZXR1cm4gbn1mdW5jdGlvbiBLZyh0KXtjb25zdCBlPXR8fChBcnJheS5pc0FycmF5KHRoaXMpP3RoaXM6W10pO2xldCBuPVtdO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKXtjb25zdCBvPWVbdF07bi5wdXNoKG8+MD9gcmVtb3ZlKGxWaWV3WyR7b31dKWA6YHJlbW92ZU5lc3RlZElDVSgke35vfSlgKX1yZXR1cm4gbn1jbGFzcyBKZ3tjb25zdHJ1Y3Rvcih0KXt0aGlzLmk9MCx0aGlzLmNvZGVzPXR9aGFzTW9yZSgpe3JldHVybiB0aGlzLmk8dGhpcy5jb2Rlcy5sZW5ndGh9Y29uc3VtZU51bWJlcigpe2xldCB0PXRoaXMuY29kZXNbdGhpcy5pKytdO3JldHVybiBwbih0LCJleHBlY3RpbmcgbnVtYmVyIGluIE9wQ29kZSIpLHR9Y29uc3VtZVN0cmluZygpe2xldCB0PXRoaXMuY29kZXNbdGhpcy5pKytdO3JldHVybiBmbih0LCJleHBlY3Rpbmcgc3RyaW5nIGluIE9wQ29kZSIpLHR9Y29uc3VtZUZ1bmN0aW9uKCl7bGV0IHQ9dGhpcy5jb2Rlc1t0aGlzLmkrK107aWYobnVsbD09PXR8fCJmdW5jdGlvbiI9PXR5cGVvZiB0KXJldHVybiB0O3Rocm93IG5ldyBFcnJvcigiZXhwZWN0aW5nIGZ1bmN0aW9uIGluIE9wQ29kZSIpfWNvbnN1bWVOdW1iZXJPclN0cmluZygpe2xldCB0PXRoaXMuY29kZXNbdGhpcy5pKytdO3JldHVybiJzdHJpbmciPT10eXBlb2YgdHx8cG4odCwiZXhwZWN0aW5nIG51bWJlciBvciBzdHJpbmcgaW4gT3BDb2RlIiksdH1jb25zdW1lTnVtYmVyU3RyaW5nT3JNYXJrZXIoKXtsZXQgdD10aGlzLmNvZGVzW3RoaXMuaSsrXTtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHR8fCJudW1iZXIiPT10eXBlb2YgdHx8dD09dmd8fHQ9PU1nfHxwbih0LCJleHBlY3RpbmcgbnVtYmVyLCBzdHJpbmcsIElDVV9NQVJLRVIgb3IgRUxFTUVOVF9NQVJLRVIgaW4gT3BDb2RlIiksdH19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NvbnN0IFFnPS/vv70oXGQrKTo/XGQq77+9L2dpLCRnPS8oe1xzKu+/vVxkKzo/XGQq77+9XHMqLFxzKlxTezZ9XHMqLFtcc1xTXSp9KS9naSx0aD0v77+9KFxkKynvv70vLGVoPS9eXHMqKO+/vVxkKzo/XGQq77+9KVxzKixccyooc2VsZWN0fHBsdXJhbClccyosLyxuaD0v77+9XC8/XCooXGQrOlxkKynvv70vZ2ksb2g9L++/vShcLz9bIypdXGQrKTo/XGQq77+9L2dpLGloPS9cdUU1MDAvZztmdW5jdGlvbiBhaCh0LGUsbixvLGksYSl7Y29uc3Qgcj1TaSgpLHM9W10sbD1bXSxjPVtbXV07bmdEZXZNb2RlJiYoQmMocyxxZyksQmMobCxaZykpO2NvbnN0IGQ9KGZ1bmN0aW9uIG0odCl7cmV0dXJuIHQucmVwbGFjZShpaCwiICIpfSkoaT0oZnVuY3Rpb24gcCh0LGUpe2lmKChmdW5jdGlvbiBuKHQpe3JldHVybi0xPT09dH0pKGUpKXJldHVybiBwaCh0KTt7Y29uc3Qgbj10LmluZGV4T2YoYDoke2V977+9YCkrMitlLnRvU3RyaW5nKCkubGVuZ3RoLG89dC5zZWFyY2gobmV3IFJlZ0V4cChg77+9XFwvXFwqXFxkKzoke2V977+9YCkpO3JldHVybiBwaCh0LnN1YnN0cmluZyhuLG8pKX19KShpLGEpKS5zcGxpdChvaCk7Zm9yKGxldCBhPTA7YTxkLmxlbmd0aDthKyspe2xldCBwPWRbYV07aWYoMD09KDEmYSkpe2NvbnN0IGE9dWgocCk7Zm9yKGxldCBkPTA7ZDxhLmxlbmd0aDtkKyspe2xldCBwPWFbZF07aWYoMD09KDEmZCkpe2NvbnN0IGU9cDtuZ0Rldk1vZGUmJmZuKGUsIlBhcnNlZCBJQ1UgcGFydCBzaG91bGQgYmUgc3RyaW5nIiksIiIhPT1lJiZzaCh0LHIsY1swXSxzLGwsbixlKX1lbHNle2NvbnN0IGE9cDtpZigib2JqZWN0IiE9dHlwZW9mIGEpdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gcGFyc2UgSUNVIGV4cHJlc3Npb24gaW4gIiR7aX0iIG1lc3NhZ2UuYCk7Y29uc3QgZD1yaCh0LHIsY1swXSxuLHMsbmdEZXZNb2RlP2BJQ1UgJHtvfToke2EubWFpbkJpbmRpbmd9YDoiIiwhMCkuaW5kZXg7bmdEZXZNb2RlJiZ2bihkLHZvLCJJbmRleCBtdXN0IGJlIGluIGFic29sdXRlIExWaWV3IG9mZnNldCIpLG1oKHQsbixsLGUsYSxkKX19fWVsc2V7Y29uc3QgZT00Nz09PXAuY2hhckNvZGVBdCgwKSxuPXAuY2hhckNvZGVBdChlPzE6MCk7bmdEZXZNb2RlJiZrbihuLDQyLDM1KTtjb25zdCBvPXZvK051bWJlci5wYXJzZUludChwLnN1YnN0cmluZyhlPzI6MSkpO2lmKGUpYy5zaGlmdCgpLERpKFNpKCksITEpO2Vsc2V7Y29uc3QgZT1OZyh0LGNbMF0sbyk7Yy51bnNoaWZ0KFtdKSxEaShlLCEwKX19fXQuZGF0YVtvXT17Y3JlYXRlOnMsdXBkYXRlOmx9fWZ1bmN0aW9uIHJoKHQsZSxuLG8saSxhLHIpe2NvbnN0IHM9TWQodCxvLDEsbnVsbCk7bGV0IGw9czw8eGcuU0hJRlQsYz1TaSgpO2U9PT1jJiYoYz1udWxsKSxudWxsPT09YyYmKGx8PXhnLkFQUEVORF9FQUdFUkxZKSxyJiYobHw9eGcuQ09NTUVOVCwoZnVuY3Rpb24gZCh0KXt2b2lkIDA9PT1BbCYmKEFsPXQoKSl9KShZZykpLGkucHVzaChsLG51bGw9PT1hPyIiOmEpO2NvbnN0IHA9Q2QodCxzLHI/MzI6MSxudWxsPT09YT9uZ0Rldk1vZGU/Int7P319IjoiIjphLG51bGwpO1NnKG4scCk7Y29uc3QgbT1wLmluZGV4O3JldHVybiBEaShwLCExKSxudWxsIT09YyYmZSE9PWMmJihmdW5jdGlvbiBmKHQsZSl7bmdEZXZNb2RlJiZUbyh0KTtsZXQgbj10Lmluc2VydEJlZm9yZUluZGV4O251bGw9PT1uPyhhYyh3ZyxrZyksbj10Lmluc2VydEJlZm9yZUluZGV4PVtudWxsLGVdKTooZ24oQXJyYXkuaXNBcnJheShuKSwhMCwiRXhwZWN0aW5nIGFycmF5IGhlcmUiKSxuLnB1c2goZSkpfSkoYyxtKSxwfWZ1bmN0aW9uIHNoKHQsZSxuLG8saSxhLHIpe2NvbnN0IHM9ci5tYXRjaChRZyksbD1yaCh0LGUsbixhLG8scz9udWxsOnIsITEpO3MmJmxoKGkscixsLmluZGV4LG51bGwsMCxudWxsKX1mdW5jdGlvbiBsaCh0LGUsbixvLGksYSl7bmdEZXZNb2RlJiZ2bihuLHZvLCJJbmRleCBtdXN0IGJlIGluIGFic29sdXRlIExWaWV3IG9mZnNldCIpO2NvbnN0IHI9dC5sZW5ndGgscz1yKzE7dC5wdXNoKG51bGwsbnVsbCk7Y29uc3QgbD1yKzI7bmdEZXZNb2RlJiZCYyh0LFpnKTtjb25zdCBjPWUuc3BsaXQoUWcpO2xldCBkPTA7Zm9yKGxldCBlPTA7ZTxjLmxlbmd0aDtlKyspe2NvbnN0IG49Y1tlXTtpZigxJmUpe2NvbnN0IGU9aStwYXJzZUludChuLDEwKTt0LnB1c2goLTEtZSksZHw9ZGgoZSl9ZWxzZSIiIT09biYmdC5wdXNoKG4pfXJldHVybiB0LnB1c2gobjw8Mnwobz8xOjApKSxvJiZ0LnB1c2gobyxhKSx0W3JdPWQsdFtzXT10Lmxlbmd0aC1sLGR9ZnVuY3Rpb24gY2godCl7bGV0IGU9MDtmb3IobGV0IG49MDtuPHQubGVuZ3RoO24rKyl7Y29uc3Qgbz10W25dOyJudW1iZXIiPT10eXBlb2YgbyYmbzwwJiZlKyt9cmV0dXJuIGV9ZnVuY3Rpb24gZGgodCl7cmV0dXJuIDE8PE1hdGgubWluKHQsMzEpfWZ1bmN0aW9uIHBoKHQpe2xldCBlLG4sbz0iIixpPTAsYT0hMTtmb3IoO251bGwhPT0oZT1uaC5leGVjKHQpKTspYT9lWzBdPT09YO+/vS8qJHtufe+/vWAmJihpPWUuaW5kZXgsYT0hMSk6KG8rPXQuc3Vic3RyaW5nKGksZS5pbmRleCtlWzBdLmxlbmd0aCksbj1lWzFdLGE9ITApO3JldHVybiBuZ0Rldk1vZGUmJmduKGEsITEsYFRhZyBtaXNtYXRjaDogdW5hYmxlIHRvIGZpbmQgdGhlIGVuZCBvZiB0aGUgc3ViLXRlbXBsYXRlIGluIHRoZSB0cmFuc2xhdGlvbiAiJHt0fSJgKSxvKz10LnN1YnN0cihpKSxvfWZ1bmN0aW9uIG1oKHQsZSxuLG8saSxhKXtuZ0Rldk1vZGUmJnhuKGksIklDVSBleHByZXNzaW9uIG11c3QgYmUgZGVmaW5lZCIpO2xldCByPTA7Y29uc3Qgcz17dHlwZTppLnR5cGUsY3VycmVudENhc2VMVmlld0luZGV4Ok1kKHQsZSwxLG51bGwpLGFuY2hvcklkeDphLGNhc2VzOltdLGNyZWF0ZTpbXSxyZW1vdmU6W10sdXBkYXRlOltdfTshKGZ1bmN0aW9uIGwodCxlLG4pe3QucHVzaChkaChlLm1haW5CaW5kaW5nKSwyLC0xLWUubWFpbkJpbmRpbmcsbjw8MnwyKX0pKG4saSxhKSwoZnVuY3Rpb24gYyh0LGUsbil7Y29uc3Qgbz10LmRhdGFbZV07bmdEZXZNb2RlJiZnbihudWxsPT09b3x8by5oYXNPd25Qcm9wZXJ0eSgidFZpZXdzIiksITAsIldlIGV4cGVjdCB0byBnZXQgJ251bGwnfCdUSWN1Q29udGFpbmVyJyIpLG51bGw9PT1vP3QuZGF0YVtlXT1uOihuZ0Rldk1vZGUmJmdhKG8sMzIpLG8udmFsdWU9bil9KSh0LGEscyk7Y29uc3QgZD1pLnZhbHVlcztmb3IobGV0IGE9MDthPGQubGVuZ3RoO2ErKyl7Y29uc3QgbD1kW2FdLGM9W107Zm9yKGxldCB0PTA7dDxsLmxlbmd0aDt0Kyspe2NvbnN0IGU9bFt0XTtpZigic3RyaW5nIiE9dHlwZW9mIGUpe2NvbnN0IG49Yy5wdXNoKGUpLTE7bFt0XT1gXHgzYyEtLe+/vSR7bn3vv70tLVx4M2VgfX1yPWdoKHQscyxlLG4sbyxpLmNhc2VzW2FdLGwuam9pbigiIiksYyl8cn1yJiYoZnVuY3Rpb24gcCh0LGUsbil7dC5wdXNoKGUsMSxuPDwyfDMpfSkobixyLGEpfWZ1bmN0aW9uIGZoKHQpe2NvbnN0IGU9W10sbj1bXTtsZXQgbz0xLGk9MDtjb25zdCBhPXVoKHQ9dC5yZXBsYWNlKGVoLChmdW5jdGlvbih0LGUsbil7cmV0dXJuIG89InNlbGVjdCI9PT1uPzA6MSxpPXBhcnNlSW50KGUuc3Vic3RyKDEpLDEwKSwiIn0pKSk7Zm9yKGxldCB0PTA7dDxhLmxlbmd0aDspe2xldCBpPWFbdCsrXS50cmltKCk7MT09PW8mJihpPWkucmVwbGFjZSgvXHMqKD86PSk/KFx3KylccyovLCIkMSIpKSxpLmxlbmd0aCYmZS5wdXNoKGkpO2NvbnN0IHI9dWgoYVt0KytdKTtlLmxlbmd0aD5uLmxlbmd0aCYmbi5wdXNoKHIpfXJldHVybnt0eXBlOm8sbWFpbkJpbmRpbmc6aSxjYXNlczplLHZhbHVlczpufX1mdW5jdGlvbiB1aCh0KXtpZighdClyZXR1cm5bXTtsZXQgZT0wO2NvbnN0IG49W10sbz1bXSxpPS9be31dL2c7bGV0IGE7Zm9yKGkubGFzdEluZGV4PTA7YT1pLmV4ZWModCk7KXtjb25zdCBpPWEuaW5kZXg7aWYoIn0iPT1hWzBdKXtpZihuLnBvcCgpLDA9PW4ubGVuZ3RoKXtjb25zdCBuPXQuc3Vic3RyaW5nKGUsaSk7ZWgudGVzdChuKT9vLnB1c2goZmgobikpOm8ucHVzaChuKSxlPWkrMX19ZWxzZXtpZigwPT1uLmxlbmd0aCl7Y29uc3Qgbj10LnN1YnN0cmluZyhlLGkpO28ucHVzaChuKSxlPWkrMX1uLnB1c2goInsiKX19Y29uc3Qgcj10LnN1YnN0cmluZyhlKTtyZXR1cm4gby5wdXNoKHIpLG99ZnVuY3Rpb24gZ2godCxlLG4sbyxpLGEscixzKXtjb25zdCBsPVtdLGM9W10sZD1bXTtuZ0Rldk1vZGUmJihCYyhsLFhnKSxCYyhjLEtnKSxCYyhkLFpnKSksZS5jYXNlcy5wdXNoKGEpLGUuY3JlYXRlLnB1c2gobCksZS5yZW1vdmUucHVzaChjKSxlLnVwZGF0ZS5wdXNoKGQpO2NvbnN0IHA9YnMoaWkoKSkuZ2V0SW5lcnRCb2R5RWxlbWVudChyKTtuZ0Rldk1vZGUmJnhuKHAsIlVuYWJsZSB0byBnZW5lcmF0ZSBpbmVydCBib2R5IGVsZW1lbnQiKTtjb25zdCBtPUdzKHApfHxwO3JldHVybiBtP2hoKHQsZSxuLG8sbCxjLGQsbSxpLHMsMCk6MH1mdW5jdGlvbiBoaCh0LGUsbixvLGksYSxyLHMsbCxjLGQpe2xldCBwPTAsbT1zLmZpcnN0Q2hpbGQ7Zm9yKDttOyl7Y29uc3Qgcz1NZCh0LG4sMSxudWxsKTtzd2l0Y2gobS5ub2RlVHlwZSl7Y2FzZSBOb2RlLkVMRU1FTlRfTk9ERTpjb25zdCBmPW0sdT1mLnRhZ05hbWUudG9Mb3dlckNhc2UoKTtpZihBcy5oYXNPd25Qcm9wZXJ0eSh1KSl7X2goaSxNZyx1LGwscyksdC5kYXRhW3NdPXU7Y29uc3QgZz1mLmF0dHJpYnV0ZXM7Zm9yKGxldCB0PTA7dDxnLmxlbmd0aDt0Kyspe2NvbnN0IGU9Zy5pdGVtKHQpLG49ZS5uYW1lLnRvTG93ZXJDYXNlKCk7ISFlLnZhbHVlLm1hdGNoKFFnKT9Icy5oYXNPd25Qcm9wZXJ0eShuKT9saChyLGUudmFsdWUscyxlLm5hbWUsMCxUc1tuXT92czpOc1tuXT94czpudWxsKTpuZ0Rldk1vZGUmJmNvbnNvbGUud2FybihgV0FSTklORzogaWdub3JpbmcgdW5zYWZlIGF0dHJpYnV0ZSB2YWx1ZSAke259IG9uIGVsZW1lbnQgJHt1fSAoc2VlIGh0dHBzOi8vZy5jby9uZy9zZWN1cml0eSN4c3MpYCk6Q2goaSxzLGUpfXA9aGgodCxlLG4sbyxpLGEscixtLHMsYyxkKzEpfHAsYmgoYSxzLGQpfWJyZWFrO2Nhc2UgTm9kZS5URVhUX05PREU6Y29uc3QgZz1tLnRleHRDb250ZW50fHwiIixoPWcubWF0Y2goUWcpO19oKGksbnVsbCxoPyIiOmcsbCxzKSxiaChhLHMsZCksaCYmKHA9bGgocixnLHMsbnVsbCwwLG51bGwpfHApO2JyZWFrO2Nhc2UgTm9kZS5DT01NRU5UX05PREU6Y29uc3QgYj10aC5leGVjKG0udGV4dENvbnRlbnR8fCIiKTtpZihiKXtjb25zdCBlPXBhcnNlSW50KGJbMV0sMTApLHI9Y1tlXTtfaChpLHZnLG5nRGV2TW9kZT9gbmVzdGVkIElDVSAke2V9YDoiIixsLHMpLG1oKHQsbixvLGwscixzKSx5aChhLHMsZCl9fW09bS5uZXh0U2libGluZ31yZXR1cm4gcH1mdW5jdGlvbiBiaCh0LGUsbil7MD09PW4mJnQucHVzaChlKX1mdW5jdGlvbiB5aCh0LGUsbil7MD09PW4mJih0LnB1c2gofmUpLHQucHVzaChlKSl9ZnVuY3Rpb24gX2godCxlLG4sbyxpKXtudWxsIT09ZSYmdC5wdXNoKGUpLHQucHVzaChuLGksKGZ1bmN0aW9uIGEodCxlLG4pe3JldHVybiBuZ0Rldk1vZGUmJnZuKGUsMCwiTWlzc2luZyBwYXJlbnQgaW5kZXgiKSxuZ0Rldk1vZGUmJk1uKG4sMCwiTWlzc2luZyByZWYgaW5kZXgiKSx0fGU8PDE3fG48PDF9KSgwLG8saSkpfWZ1bmN0aW9uIENoKHQsZSxuKXt0LnB1c2goZTw8MXwxLG4ubmFtZSxuLnZhbHVlKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3QgTWg9L1xbKO+/vS4rP++/vT8pXF0vLHZoPS9cWyjvv70uKz/vv70/KVxdfCjvv71cLz9cKlxkKzpcZCvvv70pL2cseGg9Lyh7XHMqKShWQVJfKFBMVVJBTHxTRUxFQ1QpKF9cZCspPykoXHMqLCkvZyxPaD0veyhbQS1aMC05X10rKX0vZyxQaD0v77+9STE4Tl9FWFBfKElDVShfXGQrKT8p77+9L2csd2g9L1wvXCovLGtoPS9cZCtcOihcZCspLzsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmZ1bmN0aW9uIFNoKHQsZSxuPS0xKXtjb25zdCBvPU9pKCksaT14aSgpLGE9dm8rdDtuZ0Rldk1vZGUmJnhuKG8sInRWaWV3IHNob3VsZCBiZSBkZWZpbmVkIik7Y29uc3Qgcj1oaShvLmNvbnN0cyxlKSxzPVNpKCk7by5maXJzdENyZWF0ZVBhc3MmJmFoKG8sbnVsbD09PXM/MDpzLmluZGV4LGksYSxyLG4pO2NvbnN0IGw9by5kYXRhW2FdLGM9S2wobyxzPT09aVs2XT9udWxsOnMsaSk7IShmdW5jdGlvbiBkKHQsZSxuLG8pe2NvbnN0IGk9dFsxMV07Zm9yKGxldCBhPTA7YTxlLmxlbmd0aDthKyspe2NvbnN0IHI9ZVthKytdLHM9ZVthXSxsPShyJnhnLkNPTU1FTlQpPT09eGcuQ09NTUVOVCxjPShyJnhnLkFQUEVORF9FQUdFUkxZKT09PXhnLkFQUEVORF9FQUdFUkxZLGQ9cj4+PnhnLlNISUZUO2xldCBwPXRbZF07bnVsbD09PXAmJihwPXRbZF09bD9pLmNyZWF0ZUNvbW1lbnQocyk6QmwoaSxzKSksYyYmbnVsbCE9PW4mJkpsKGksbixwLG8sITEpfX0pKGksbC5jcmVhdGUsYyxzJiY4JnMudHlwZT9pW3MuaW5kZXhdOm51bGwpLExpKCEwKX1mdW5jdGlvbiBEaCgpe0xpKCExKX1mdW5jdGlvbiBSaCh0LGUsbil7U2godCxlLG4pLERoKCl9ZnVuY3Rpb24gRWgodCxlKXtjb25zdCBuPU9pKCk7bmdEZXZNb2RlJiZ4bihuLCJ0VmlldyBzaG91bGQgYmUgZGVmaW5lZCIpO2NvbnN0IG89aGkobi5jb25zdHMsZSk7IShmdW5jdGlvbiBpKHQsZSxuKXtjb25zdCBvPXdpKCkuaW5kZXgsaT1bXTtpZihuZ0Rldk1vZGUmJkJjKGksWmcpLHQuZmlyc3RDcmVhdGVQYXNzJiZudWxsPT09dC5kYXRhW2VdKXtmb3IobGV0IHQ9MDt0PG4ubGVuZ3RoO3QrPTIpe2NvbnN0IGU9blt0XSxhPW5bdCsxXTtpZigiIiE9PWEpe2lmKCRnLnRlc3QoYSkpdGhyb3cgbmV3IEVycm9yKGBJQ1UgZXhwcmVzc2lvbnMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gYXR0cmlidXRlcy4gTWVzc2FnZTogIiR7YX0iLmApO2xoKGksYSxvLGUsY2goaSksbnVsbCl9fXQuZGF0YVtlXT1pfX0pKG4sdCt2byxvKX1mdW5jdGlvbiBBaCh0KXtyZXR1cm4oZnVuY3Rpb24gZSh0KXt0JiYoTGd8PTE8PE1hdGgubWluKEJnLDMxKSksQmcrK30pKHVtKHhpKCksSGkoKSx0KSksQWh9ZnVuY3Rpb24gVGgodCl7IShmdW5jdGlvbiBlKHQsbixvKXtpZihCZz4wKXtuZ0Rldk1vZGUmJnhuKHQsInRWaWV3IHNob3VsZCBiZSBkZWZpbmVkIik7Y29uc3QgZT10LmRhdGFbb107amcodCxuLEFycmF5LmlzQXJyYXkoZSk/ZTplLnVwZGF0ZSx6aSgpLUJnLTEsTGcpfUxnPTAsQmc9MH0pKE9pKCkseGkoKSx0K3ZvKX1mdW5jdGlvbiBOaCh0LGU9e30pe3JldHVybihmdW5jdGlvbiBuKHQsZT17fSl7bGV0IG49dDtpZihNaC50ZXN0KHQpKXtjb25zdCB0PXt9LGU9WzBdO249bi5yZXBsYWNlKHZoLCgobixvLGkpPT57Y29uc3QgYT1vfHxpLHI9dFthXXx8W107aWYoci5sZW5ndGh8fChhLnNwbGl0KCJ8IikuZm9yRWFjaCgodD0+e2NvbnN0IGU9dC5tYXRjaChraCksbj1lP3BhcnNlSW50KGVbMV0sMTApOjAsbz13aC50ZXN0KHQpO3IucHVzaChbbixvLHRdKX0pKSx0W2FdPXIpLCFyLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoYGkxOG4gcG9zdHByb2Nlc3M6IHVubWF0Y2hlZCBwbGFjZWhvbGRlciAtICR7YX1gKTtjb25zdCBzPWVbZS5sZW5ndGgtMV07bGV0IGw9MDtmb3IobGV0IHQ9MDt0PHIubGVuZ3RoO3QrKylpZihyW3RdWzBdPT09cyl7bD10O2JyZWFrfWNvbnN0W2MsZCxwXT1yW2xdO3JldHVybiBkP2UucG9wKCk6cyE9PWMmJmUucHVzaChjKSxyLnNwbGljZShsLDEpLHB9KSl9cmV0dXJuIE9iamVjdC5rZXlzKGUpLmxlbmd0aD8obj1uLnJlcGxhY2UoeGgsKCh0LG4sbyxpLGEscik9PmUuaGFzT3duUHJvcGVydHkobyk/YCR7bn0ke2Vbb119JHtyfWA6dCkpLG49bi5yZXBsYWNlKE9oLCgodCxuKT0+ZS5oYXNPd25Qcm9wZXJ0eShuKT9lW25dOnQpKSxuPW4ucmVwbGFjZShQaCwoKHQsbik9PntpZihlLmhhc093blByb3BlcnR5KG4pKXtjb25zdCBvPWVbbl07aWYoIW8ubGVuZ3RoKXRocm93IG5ldyBFcnJvcihgaTE4biBwb3N0cHJvY2VzczogdW5tYXRjaGVkIElDVSAtICR7dH0gd2l0aCBrZXk6ICR7bn1gKTtyZXR1cm4gby5zaGlmdCgpfXJldHVybiB0fSkpLG4pOm59KSh0LGUpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gemgodCxlLG4sbyxpKXtpZih0PXRuKHQpLEFycmF5LmlzQXJyYXkodCkpZm9yKGxldCBhPTA7YTx0Lmxlbmd0aDthKyspemgodFthXSxlLG4sbyxpKTtlbHNle2NvbnN0IGE9T2koKSxyPXhpKCk7bGV0IHM9RXAodCk/dDp0bih0LnByb3ZpZGUpLGw9U3AodCk7Y29uc3QgYz13aSgpLGQ9MTA0ODU3NSZjLnByb3ZpZGVySW5kZXhlcyxwPWMuZGlyZWN0aXZlU3RhcnQsbT1jLnByb3ZpZGVySW5kZXhlcz4+MjA7aWYoRXAodCl8fCF0Lm11bHRpKXtjb25zdCBvPW5ldyBmYShsLGksZ2YpLGY9RmgocyxlLGk/ZDpkK20scCk7LTE9PT1mPyhFYShrYShjLHIpLGEscyksSWgoYSx0LGUubGVuZ3RoKSxlLnB1c2gocyksYy5kaXJlY3RpdmVTdGFydCsrLGMuZGlyZWN0aXZlRW5kKyssaSYmKGMucHJvdmlkZXJJbmRleGVzKz0xMDQ4NTc2KSxuLnB1c2gobyksci5wdXNoKG8pKToobltmXT1vLHJbZl09byl9ZWxzZXtjb25zdCBmPUZoKHMsZSxkK20scCksdT1GaChzLGUsZCxkK20pLGc9Zj49MCYmbltmXSxoPXU+PTAmJm5bdV07aWYoaSYmIWh8fCFpJiYhZyl7RWEoa2EoYyxyKSxhLHMpO2NvbnN0IGQ9KGZ1bmN0aW9uIGEodCxlLG4sbyxpKXtjb25zdCBhPW5ldyBmYSh0LG4sZ2YpO3JldHVybiBhLm11bHRpPVtdLGEuaW5kZXg9ZSxhLmNvbXBvbmVudFByb3ZpZGVycz0wLEhoKGEsaSxvJiYhbiksYX0pKGk/Qmg6TGgsbi5sZW5ndGgsaSxvLGwpOyFpJiZoJiYoblt1XS5wcm92aWRlckZhY3Rvcnk9ZCksSWgoYSx0LGUubGVuZ3RoLDApLGUucHVzaChzKSxjLmRpcmVjdGl2ZVN0YXJ0KyssYy5kaXJlY3RpdmVFbmQrKyxpJiYoYy5wcm92aWRlckluZGV4ZXMrPTEwNDg1NzYpLG4ucHVzaChkKSxyLnB1c2goZCl9ZWxzZXtJaChhLHQsZj4tMT9mOnUsSGgobltpP3U6Zl0sbCwhaSYmbykpfSFpJiZvJiZoJiZuW3VdLmNvbXBvbmVudFByb3ZpZGVycysrfX19ZnVuY3Rpb24gSWgodCxlLG4sbyl7Y29uc3QgaT1FcChlKTtpZihpfHwoZnVuY3Rpb24gYSh0KXtyZXR1cm4hIXQudXNlQ2xhc3N9KShlKSl7Y29uc3QgYT0oZS51c2VDbGFzc3x8ZSkucHJvdG90eXBlLm5nT25EZXN0cm95O2lmKGEpe2NvbnN0IHI9dC5kZXN0cm95SG9va3N8fCh0LmRlc3Ryb3lIb29rcz1bXSk7aWYoIWkmJmUubXVsdGkpe25nRGV2TW9kZSYmeG4obywiaW5kZXhJbkZhY3Rvcnkgd2hlbiByZWdpc3RlcmluZyBtdWx0aSBmYWN0b3J5IGRlc3Ryb3kgaG9vayIpO2NvbnN0IHQ9ci5pbmRleE9mKG4pOy0xPT09dD9yLnB1c2gobixbbyxhXSk6clt0KzFdLnB1c2gobyxhKX1lbHNlIHIucHVzaChuLGEpfX19ZnVuY3Rpb24gSGgodCxlLG4pe3JldHVybiBuJiZ0LmNvbXBvbmVudFByb3ZpZGVycysrLHQubXVsdGkucHVzaChlKS0xfWZ1bmN0aW9uIEZoKHQsZSxuLG8pe2ZvcihsZXQgaT1uO2k8bztpKyspaWYoZVtpXT09PXQpcmV0dXJuIGk7cmV0dXJuLTF9ZnVuY3Rpb24gTGgodCxlLG4sbyl7cmV0dXJuIFZoKHRoaXMubXVsdGksW10pfWZ1bmN0aW9uIEJoKHQsZSxuLG8pe2NvbnN0IGk9dGhpcy5tdWx0aTtsZXQgYTtpZih0aGlzLnByb3ZpZGVyRmFjdG9yeSl7Y29uc3QgdD10aGlzLnByb3ZpZGVyRmFjdG9yeS5jb21wb25lbnRQcm92aWRlcnMsZT1MYShuLG5bMV0sdGhpcy5wcm92aWRlckZhY3RvcnkuaW5kZXgsbyk7YT1lLnNsaWNlKDAsdCksVmgoaSxhKTtmb3IobGV0IG49dDtuPGUubGVuZ3RoO24rKylhLnB1c2goZVtuXSl9ZWxzZSBhPVtdLFZoKGksYSk7cmV0dXJuIGF9ZnVuY3Rpb24gVmgodCxlKXtmb3IobGV0IG49MDtuPHQubGVuZ3RoO24rKyl7ZS5wdXNoKCgwLHRbbl0pKCkpfXJldHVybiBlfWZ1bmN0aW9uIGpoKHQsZT1bXSl7cmV0dXJuIG49PntuLnByb3ZpZGVyc1Jlc29sdmVyPShuLG8pPT4oZnVuY3Rpb24gaSh0LGUsbil7Y29uc3Qgbz1PaSgpO2lmKG8uZmlyc3RDcmVhdGVQYXNzKXtjb25zdCBpPVJvKHQpO3poKG4sby5kYXRhLG8uYmx1ZXByaW50LGksITApLHpoKGUsby5kYXRhLG8uYmx1ZXByaW50LGksITEpfX0pKG4sbz9vKHQpOnQsZSl9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBVaHt9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NvbnN0IFdoPSJuZ0NvbXBvbmVudCI7Y2xhc3MgR2h7fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KZnVuY3Rpb24gWWgoLi4udCl7fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBxaCh0LGUpe3JldHVybiBuZXcgS2goZGkodCxlKSl9R2guTlVMTD1uZXcgY2xhc3N7cmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkodCl7dGhyb3coZnVuY3Rpb24gZSh0KXtjb25zdCBlPUVycm9yKGBObyBjb21wb25lbnQgZmFjdG9yeSBmb3VuZCBmb3IgJHtLZSh0KX0uIERpZCB5b3UgYWRkIGl0IHRvIEBOZ01vZHVsZS5lbnRyeUNvbXBvbmVudHM/YCk7cmV0dXJuIGVbV2hdPXQsZX0pKHQpfX07Y29uc3QgWmg9ZnVuY3Rpb24gWGgoKXtyZXR1cm4gcWgod2koKSx4aSgpKX07Y2xhc3MgS2h7Y29uc3RydWN0b3IodCl7dGhpcy5uYXRpdmVFbGVtZW50PXR9fWZ1bmN0aW9uIEpoKHQpe3JldHVybiB0IGluc3RhbmNlb2YgS2g/dC5uYXRpdmVFbGVtZW50OnR9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL0toLl9fTkdfRUxFTUVOVF9JRF9fPVpoLG5ldyBlcigiUmVuZGVyZXIySW50ZXJjZXB0b3IiKTtjbGFzcyBRaHt9Y2xhc3MgJGh7fSRoLl9fTkdfRUxFTUVOVF9JRF9fPSgpPT50YigpO2NvbnN0IHRiPWZ1bmN0aW9uIGViKCl7Y29uc3QgdD14aSgpLGU9Zmkod2koKS5pbmRleCx0KTtyZXR1cm4oZnVuY3Rpb24gbih0KXtjb25zdCBlPXRbMTFdO2lmKG5nRGV2TW9kZSYmIXJpKGUpKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IGluamVjdCBSZW5kZXJlcjIgd2hlbiB0aGUgYXBwbGljYXRpb24gdXNlcyBSZW5kZXJlcjMhIik7cmV0dXJuIGV9KShQbyhlKT9lOnQpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi87Y2xhc3MgbmJ7fW5iLsm1cHJvdj1Tbih7dG9rZW46bmIscHJvdmlkZWRJbjoicm9vdCIsZmFjdG9yeTooKT0+bnVsbH0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3Mgb2J7Y29uc3RydWN0b3IodCl7dGhpcy5mdWxsPXQsdGhpcy5tYWpvcj10LnNwbGl0KCIuIilbMF0sdGhpcy5taW5vcj10LnNwbGl0KCIuIilbMV0sdGhpcy5wYXRjaD10LnNwbGl0KCIuIikuc2xpY2UoMikuam9pbigiLiIpfX1jb25zdCBpYj1uZXcgb2IoIjEyLjIuMSIpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBhYntjb25zdHJ1Y3Rvcigpe31zdXBwb3J0cyh0KXtyZXR1cm4gZG0odCl9Y3JlYXRlKHQpe3JldHVybiBuZXcgc2IodCl9fWNvbnN0IHJiPSh0LGUpPT5lO2NsYXNzIHNie2NvbnN0cnVjdG9yKHQpe3RoaXMubGVuZ3RoPTAsdGhpcy5fbGlua2VkUmVjb3Jkcz1udWxsLHRoaXMuX3VubGlua2VkUmVjb3Jkcz1udWxsLHRoaXMuX3ByZXZpb3VzSXRIZWFkPW51bGwsdGhpcy5faXRIZWFkPW51bGwsdGhpcy5faXRUYWlsPW51bGwsdGhpcy5fYWRkaXRpb25zSGVhZD1udWxsLHRoaXMuX2FkZGl0aW9uc1RhaWw9bnVsbCx0aGlzLl9tb3Zlc0hlYWQ9bnVsbCx0aGlzLl9tb3Zlc1RhaWw9bnVsbCx0aGlzLl9yZW1vdmFsc0hlYWQ9bnVsbCx0aGlzLl9yZW1vdmFsc1RhaWw9bnVsbCx0aGlzLl9pZGVudGl0eUNoYW5nZXNIZWFkPW51bGwsdGhpcy5faWRlbnRpdHlDaGFuZ2VzVGFpbD1udWxsLHRoaXMuX3RyYWNrQnlGbj10fHxyYn1mb3JFYWNoSXRlbSh0KXtsZXQgZTtmb3IoZT10aGlzLl9pdEhlYWQ7bnVsbCE9PWU7ZT1lLl9uZXh0KXQoZSl9Zm9yRWFjaE9wZXJhdGlvbih0KXtsZXQgZT10aGlzLl9pdEhlYWQsbj10aGlzLl9yZW1vdmFsc0hlYWQsbz0wLGk9bnVsbDtmb3IoO2V8fG47KXtjb25zdCBhPSFufHxlJiZlLmN1cnJlbnRJbmRleDxwYihuLG8saSk/ZTpuLHI9cGIoYSxvLGkpLHM9YS5jdXJyZW50SW5kZXg7aWYoYT09PW4pby0tLG49bi5fbmV4dFJlbW92ZWQ7ZWxzZSBpZihlPWUuX25leHQsbnVsbD09YS5wcmV2aW91c0luZGV4KW8rKztlbHNle2l8fChpPVtdKTtjb25zdCB0PXItbyxlPXMtbztpZih0IT1lKXtmb3IobGV0IG49MDtuPHQ7bisrKXtjb25zdCBvPW48aS5sZW5ndGg/aVtuXTppW25dPTAsYT1vK247ZTw9YSYmYTx0JiYoaVtuXT1vKzEpfWlbYS5wcmV2aW91c0luZGV4XT1lLXR9fXIhPT1zJiZ0KGEscixzKX19Zm9yRWFjaFByZXZpb3VzSXRlbSh0KXtsZXQgZTtmb3IoZT10aGlzLl9wcmV2aW91c0l0SGVhZDtudWxsIT09ZTtlPWUuX25leHRQcmV2aW91cyl0KGUpfWZvckVhY2hBZGRlZEl0ZW0odCl7bGV0IGU7Zm9yKGU9dGhpcy5fYWRkaXRpb25zSGVhZDtudWxsIT09ZTtlPWUuX25leHRBZGRlZCl0KGUpfWZvckVhY2hNb3ZlZEl0ZW0odCl7bGV0IGU7Zm9yKGU9dGhpcy5fbW92ZXNIZWFkO251bGwhPT1lO2U9ZS5fbmV4dE1vdmVkKXQoZSl9Zm9yRWFjaFJlbW92ZWRJdGVtKHQpe2xldCBlO2ZvcihlPXRoaXMuX3JlbW92YWxzSGVhZDtudWxsIT09ZTtlPWUuX25leHRSZW1vdmVkKXQoZSl9Zm9yRWFjaElkZW50aXR5Q2hhbmdlKHQpe2xldCBlO2ZvcihlPXRoaXMuX2lkZW50aXR5Q2hhbmdlc0hlYWQ7bnVsbCE9PWU7ZT1lLl9uZXh0SWRlbnRpdHlDaGFuZ2UpdChlKX1kaWZmKHQpe2lmKG51bGw9PXQmJih0PVtdKSwhZG0odCkpdGhyb3cgbmV3IEVycm9yKGBFcnJvciB0cnlpbmcgdG8gZGlmZiAnJHtLZSh0KX0nLiBPbmx5IGFycmF5cyBhbmQgaXRlcmFibGVzIGFyZSBhbGxvd2VkYCk7cmV0dXJuIHRoaXMuY2hlY2sodCk/dGhpczpudWxsfW9uRGVzdHJveSgpe31jaGVjayh0KXt0aGlzLl9yZXNldCgpO2xldCBlLG4sbyxpPXRoaXMuX2l0SGVhZCxhPSExO2lmKEFycmF5LmlzQXJyYXkodCkpe3RoaXMubGVuZ3RoPXQubGVuZ3RoO2ZvcihsZXQgZT0wO2U8dGhpcy5sZW5ndGg7ZSsrKW49dFtlXSxvPXRoaXMuX3RyYWNrQnlGbihlLG4pLG51bGwhPT1pJiZPYmplY3QuaXMoaS50cmFja0J5SWQsbyk/KGEmJihpPXRoaXMuX3ZlcmlmeVJlaW5zZXJ0aW9uKGksbixvLGUpKSxPYmplY3QuaXMoaS5pdGVtLG4pfHx0aGlzLl9hZGRJZGVudGl0eUNoYW5nZShpLG4pKTooaT10aGlzLl9taXNtYXRjaChpLG4sbyxlKSxhPSEwKSxpPWkuX25leHR9ZWxzZSBlPTAsKGZ1bmN0aW9uIHIodCxlKXtpZihBcnJheS5pc0FycmF5KHQpKWZvcihsZXQgbj0wO248dC5sZW5ndGg7bisrKWUodFtuXSk7ZWxzZXtjb25zdCBuPXRbc20oKV0oKTtsZXQgbztmb3IoOyEobz1uLm5leHQoKSkuZG9uZTspZShvLnZhbHVlKX19KSh0LCh0PT57bz10aGlzLl90cmFja0J5Rm4oZSx0KSxudWxsIT09aSYmT2JqZWN0LmlzKGkudHJhY2tCeUlkLG8pPyhhJiYoaT10aGlzLl92ZXJpZnlSZWluc2VydGlvbihpLHQsbyxlKSksT2JqZWN0LmlzKGkuaXRlbSx0KXx8dGhpcy5fYWRkSWRlbnRpdHlDaGFuZ2UoaSx0KSk6KGk9dGhpcy5fbWlzbWF0Y2goaSx0LG8sZSksYT0hMCksaT1pLl9uZXh0LGUrK30pKSx0aGlzLmxlbmd0aD1lO3JldHVybiB0aGlzLl90cnVuY2F0ZShpKSx0aGlzLmNvbGxlY3Rpb249dCx0aGlzLmlzRGlydHl9Z2V0IGlzRGlydHkoKXtyZXR1cm4gbnVsbCE9PXRoaXMuX2FkZGl0aW9uc0hlYWR8fG51bGwhPT10aGlzLl9tb3Zlc0hlYWR8fG51bGwhPT10aGlzLl9yZW1vdmFsc0hlYWR8fG51bGwhPT10aGlzLl9pZGVudGl0eUNoYW5nZXNIZWFkfV9yZXNldCgpe2lmKHRoaXMuaXNEaXJ0eSl7bGV0IHQ7Zm9yKHQ9dGhpcy5fcHJldmlvdXNJdEhlYWQ9dGhpcy5faXRIZWFkO251bGwhPT10O3Q9dC5fbmV4dCl0Ll9uZXh0UHJldmlvdXM9dC5fbmV4dDtmb3IodD10aGlzLl9hZGRpdGlvbnNIZWFkO251bGwhPT10O3Q9dC5fbmV4dEFkZGVkKXQucHJldmlvdXNJbmRleD10LmN1cnJlbnRJbmRleDtmb3IodGhpcy5fYWRkaXRpb25zSGVhZD10aGlzLl9hZGRpdGlvbnNUYWlsPW51bGwsdD10aGlzLl9tb3Zlc0hlYWQ7bnVsbCE9PXQ7dD10Ll9uZXh0TW92ZWQpdC5wcmV2aW91c0luZGV4PXQuY3VycmVudEluZGV4O3RoaXMuX21vdmVzSGVhZD10aGlzLl9tb3Zlc1RhaWw9bnVsbCx0aGlzLl9yZW1vdmFsc0hlYWQ9dGhpcy5fcmVtb3ZhbHNUYWlsPW51bGwsdGhpcy5faWRlbnRpdHlDaGFuZ2VzSGVhZD10aGlzLl9pZGVudGl0eUNoYW5nZXNUYWlsPW51bGx9fV9taXNtYXRjaCh0LGUsbixvKXtsZXQgaTtyZXR1cm4gbnVsbD09PXQ/aT10aGlzLl9pdFRhaWw6KGk9dC5fcHJldix0aGlzLl9yZW1vdmUodCkpLG51bGwhPT0odD1udWxsPT09dGhpcy5fdW5saW5rZWRSZWNvcmRzP251bGw6dGhpcy5fdW5saW5rZWRSZWNvcmRzLmdldChuLG51bGwpKT8oT2JqZWN0LmlzKHQuaXRlbSxlKXx8dGhpcy5fYWRkSWRlbnRpdHlDaGFuZ2UodCxlKSx0aGlzLl9yZWluc2VydEFmdGVyKHQsaSxvKSk6bnVsbCE9PSh0PW51bGw9PT10aGlzLl9saW5rZWRSZWNvcmRzP251bGw6dGhpcy5fbGlua2VkUmVjb3Jkcy5nZXQobixvKSk/KE9iamVjdC5pcyh0Lml0ZW0sZSl8fHRoaXMuX2FkZElkZW50aXR5Q2hhbmdlKHQsZSksdGhpcy5fbW92ZUFmdGVyKHQsaSxvKSk6dD10aGlzLl9hZGRBZnRlcihuZXcgbGIoZSxuKSxpLG8pLHR9X3ZlcmlmeVJlaW5zZXJ0aW9uKHQsZSxuLG8pe2xldCBpPW51bGw9PT10aGlzLl91bmxpbmtlZFJlY29yZHM/bnVsbDp0aGlzLl91bmxpbmtlZFJlY29yZHMuZ2V0KG4sbnVsbCk7cmV0dXJuIG51bGwhPT1pP3Q9dGhpcy5fcmVpbnNlcnRBZnRlcihpLHQuX3ByZXYsbyk6dC5jdXJyZW50SW5kZXghPW8mJih0LmN1cnJlbnRJbmRleD1vLHRoaXMuX2FkZFRvTW92ZXModCxvKSksdH1fdHJ1bmNhdGUodCl7Zm9yKDtudWxsIT09dDspe2NvbnN0IGU9dC5fbmV4dDt0aGlzLl9hZGRUb1JlbW92YWxzKHRoaXMuX3VubGluayh0KSksdD1lfW51bGwhPT10aGlzLl91bmxpbmtlZFJlY29yZHMmJnRoaXMuX3VubGlua2VkUmVjb3Jkcy5jbGVhcigpLG51bGwhPT10aGlzLl9hZGRpdGlvbnNUYWlsJiYodGhpcy5fYWRkaXRpb25zVGFpbC5fbmV4dEFkZGVkPW51bGwpLG51bGwhPT10aGlzLl9tb3Zlc1RhaWwmJih0aGlzLl9tb3Zlc1RhaWwuX25leHRNb3ZlZD1udWxsKSxudWxsIT09dGhpcy5faXRUYWlsJiYodGhpcy5faXRUYWlsLl9uZXh0PW51bGwpLG51bGwhPT10aGlzLl9yZW1vdmFsc1RhaWwmJih0aGlzLl9yZW1vdmFsc1RhaWwuX25leHRSZW1vdmVkPW51bGwpLG51bGwhPT10aGlzLl9pZGVudGl0eUNoYW5nZXNUYWlsJiYodGhpcy5faWRlbnRpdHlDaGFuZ2VzVGFpbC5fbmV4dElkZW50aXR5Q2hhbmdlPW51bGwpfV9yZWluc2VydEFmdGVyKHQsZSxuKXtudWxsIT09dGhpcy5fdW5saW5rZWRSZWNvcmRzJiZ0aGlzLl91bmxpbmtlZFJlY29yZHMucmVtb3ZlKHQpO2NvbnN0IG89dC5fcHJldlJlbW92ZWQsaT10Ll9uZXh0UmVtb3ZlZDtyZXR1cm4gbnVsbD09PW8/dGhpcy5fcmVtb3ZhbHNIZWFkPWk6by5fbmV4dFJlbW92ZWQ9aSxudWxsPT09aT90aGlzLl9yZW1vdmFsc1RhaWw9bzppLl9wcmV2UmVtb3ZlZD1vLHRoaXMuX2luc2VydEFmdGVyKHQsZSxuKSx0aGlzLl9hZGRUb01vdmVzKHQsbiksdH1fbW92ZUFmdGVyKHQsZSxuKXtyZXR1cm4gdGhpcy5fdW5saW5rKHQpLHRoaXMuX2luc2VydEFmdGVyKHQsZSxuKSx0aGlzLl9hZGRUb01vdmVzKHQsbiksdH1fYWRkQWZ0ZXIodCxlLG4pe3JldHVybiB0aGlzLl9pbnNlcnRBZnRlcih0LGUsbiksdGhpcy5fYWRkaXRpb25zVGFpbD1udWxsPT09dGhpcy5fYWRkaXRpb25zVGFpbD90aGlzLl9hZGRpdGlvbnNIZWFkPXQ6dGhpcy5fYWRkaXRpb25zVGFpbC5fbmV4dEFkZGVkPXQsdH1faW5zZXJ0QWZ0ZXIodCxlLG4pe2NvbnN0IG89bnVsbD09PWU/dGhpcy5faXRIZWFkOmUuX25leHQ7cmV0dXJuIHQuX25leHQ9byx0Ll9wcmV2PWUsbnVsbD09PW8/dGhpcy5faXRUYWlsPXQ6by5fcHJldj10LG51bGw9PT1lP3RoaXMuX2l0SGVhZD10OmUuX25leHQ9dCxudWxsPT09dGhpcy5fbGlua2VkUmVjb3JkcyYmKHRoaXMuX2xpbmtlZFJlY29yZHM9bmV3IGRiKSx0aGlzLl9saW5rZWRSZWNvcmRzLnB1dCh0KSx0LmN1cnJlbnRJbmRleD1uLHR9X3JlbW92ZSh0KXtyZXR1cm4gdGhpcy5fYWRkVG9SZW1vdmFscyh0aGlzLl91bmxpbmsodCkpfV91bmxpbmsodCl7bnVsbCE9PXRoaXMuX2xpbmtlZFJlY29yZHMmJnRoaXMuX2xpbmtlZFJlY29yZHMucmVtb3ZlKHQpO2NvbnN0IGU9dC5fcHJldixuPXQuX25leHQ7cmV0dXJuIG51bGw9PT1lP3RoaXMuX2l0SGVhZD1uOmUuX25leHQ9bixudWxsPT09bj90aGlzLl9pdFRhaWw9ZTpuLl9wcmV2PWUsdH1fYWRkVG9Nb3Zlcyh0LGUpe3JldHVybiB0LnByZXZpb3VzSW5kZXg9PT1lfHwodGhpcy5fbW92ZXNUYWlsPW51bGw9PT10aGlzLl9tb3Zlc1RhaWw/dGhpcy5fbW92ZXNIZWFkPXQ6dGhpcy5fbW92ZXNUYWlsLl9uZXh0TW92ZWQ9dCksdH1fYWRkVG9SZW1vdmFscyh0KXtyZXR1cm4gbnVsbD09PXRoaXMuX3VubGlua2VkUmVjb3JkcyYmKHRoaXMuX3VubGlua2VkUmVjb3Jkcz1uZXcgZGIpLHRoaXMuX3VubGlua2VkUmVjb3Jkcy5wdXQodCksdC5jdXJyZW50SW5kZXg9bnVsbCx0Ll9uZXh0UmVtb3ZlZD1udWxsLG51bGw9PT10aGlzLl9yZW1vdmFsc1RhaWw/KHRoaXMuX3JlbW92YWxzVGFpbD10aGlzLl9yZW1vdmFsc0hlYWQ9dCx0Ll9wcmV2UmVtb3ZlZD1udWxsKToodC5fcHJldlJlbW92ZWQ9dGhpcy5fcmVtb3ZhbHNUYWlsLHRoaXMuX3JlbW92YWxzVGFpbD10aGlzLl9yZW1vdmFsc1RhaWwuX25leHRSZW1vdmVkPXQpLHR9X2FkZElkZW50aXR5Q2hhbmdlKHQsZSl7cmV0dXJuIHQuaXRlbT1lLHRoaXMuX2lkZW50aXR5Q2hhbmdlc1RhaWw9bnVsbD09PXRoaXMuX2lkZW50aXR5Q2hhbmdlc1RhaWw/dGhpcy5faWRlbnRpdHlDaGFuZ2VzSGVhZD10OnRoaXMuX2lkZW50aXR5Q2hhbmdlc1RhaWwuX25leHRJZGVudGl0eUNoYW5nZT10LHR9fWNsYXNzIGxie2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5pdGVtPXQsdGhpcy50cmFja0J5SWQ9ZSx0aGlzLmN1cnJlbnRJbmRleD1udWxsLHRoaXMucHJldmlvdXNJbmRleD1udWxsLHRoaXMuX25leHRQcmV2aW91cz1udWxsLHRoaXMuX3ByZXY9bnVsbCx0aGlzLl9uZXh0PW51bGwsdGhpcy5fcHJldkR1cD1udWxsLHRoaXMuX25leHREdXA9bnVsbCx0aGlzLl9wcmV2UmVtb3ZlZD1udWxsLHRoaXMuX25leHRSZW1vdmVkPW51bGwsdGhpcy5fbmV4dEFkZGVkPW51bGwsdGhpcy5fbmV4dE1vdmVkPW51bGwsdGhpcy5fbmV4dElkZW50aXR5Q2hhbmdlPW51bGx9fWNsYXNzIGNie2NvbnN0cnVjdG9yKCl7dGhpcy5faGVhZD1udWxsLHRoaXMuX3RhaWw9bnVsbH1hZGQodCl7bnVsbD09PXRoaXMuX2hlYWQ/KHRoaXMuX2hlYWQ9dGhpcy5fdGFpbD10LHQuX25leHREdXA9bnVsbCx0Ll9wcmV2RHVwPW51bGwpOih0aGlzLl90YWlsLl9uZXh0RHVwPXQsdC5fcHJldkR1cD10aGlzLl90YWlsLHQuX25leHREdXA9bnVsbCx0aGlzLl90YWlsPXQpfWdldCh0LGUpe2xldCBuO2ZvcihuPXRoaXMuX2hlYWQ7bnVsbCE9PW47bj1uLl9uZXh0RHVwKWlmKChudWxsPT09ZXx8ZTw9bi5jdXJyZW50SW5kZXgpJiZPYmplY3QuaXMobi50cmFja0J5SWQsdCkpcmV0dXJuIG47cmV0dXJuIG51bGx9cmVtb3ZlKHQpe2NvbnN0IGU9dC5fcHJldkR1cCxuPXQuX25leHREdXA7cmV0dXJuIG51bGw9PT1lP3RoaXMuX2hlYWQ9bjplLl9uZXh0RHVwPW4sbnVsbD09PW4/dGhpcy5fdGFpbD1lOm4uX3ByZXZEdXA9ZSxudWxsPT09dGhpcy5faGVhZH19Y2xhc3MgZGJ7Y29uc3RydWN0b3IoKXt0aGlzLm1hcD1uZXcgTWFwfXB1dCh0KXtjb25zdCBlPXQudHJhY2tCeUlkO2xldCBuPXRoaXMubWFwLmdldChlKTtufHwobj1uZXcgY2IsdGhpcy5tYXAuc2V0KGUsbikpLG4uYWRkKHQpfWdldCh0LGUpe2NvbnN0IG49dGhpcy5tYXAuZ2V0KHQpO3JldHVybiBuP24uZ2V0KHQsZSk6bnVsbH1yZW1vdmUodCl7Y29uc3QgZT10LnRyYWNrQnlJZDtyZXR1cm4gdGhpcy5tYXAuZ2V0KGUpLnJlbW92ZSh0KSYmdGhpcy5tYXAuZGVsZXRlKGUpLHR9Z2V0IGlzRW1wdHkoKXtyZXR1cm4gMD09PXRoaXMubWFwLnNpemV9Y2xlYXIoKXt0aGlzLm1hcC5jbGVhcigpfX1mdW5jdGlvbiBwYih0LGUsbil7Y29uc3Qgbz10LnByZXZpb3VzSW5kZXg7aWYobnVsbD09PW8pcmV0dXJuIG87bGV0IGk9MDtyZXR1cm4gbiYmbzxuLmxlbmd0aCYmKGk9bltvXSksbytlK2l9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIG1ie2NvbnN0cnVjdG9yKCl7fXN1cHBvcnRzKHQpe3JldHVybiB0IGluc3RhbmNlb2YgTWFwfHxwbSh0KX1jcmVhdGUoKXtyZXR1cm4gbmV3IGZifX1jbGFzcyBmYntjb25zdHJ1Y3Rvcigpe3RoaXMuX3JlY29yZHM9bmV3IE1hcCx0aGlzLl9tYXBIZWFkPW51bGwsdGhpcy5fYXBwZW5kQWZ0ZXI9bnVsbCx0aGlzLl9wcmV2aW91c01hcEhlYWQ9bnVsbCx0aGlzLl9jaGFuZ2VzSGVhZD1udWxsLHRoaXMuX2NoYW5nZXNUYWlsPW51bGwsdGhpcy5fYWRkaXRpb25zSGVhZD1udWxsLHRoaXMuX2FkZGl0aW9uc1RhaWw9bnVsbCx0aGlzLl9yZW1vdmFsc0hlYWQ9bnVsbCx0aGlzLl9yZW1vdmFsc1RhaWw9bnVsbH1nZXQgaXNEaXJ0eSgpe3JldHVybiBudWxsIT09dGhpcy5fYWRkaXRpb25zSGVhZHx8bnVsbCE9PXRoaXMuX2NoYW5nZXNIZWFkfHxudWxsIT09dGhpcy5fcmVtb3ZhbHNIZWFkfWZvckVhY2hJdGVtKHQpe2xldCBlO2ZvcihlPXRoaXMuX21hcEhlYWQ7bnVsbCE9PWU7ZT1lLl9uZXh0KXQoZSl9Zm9yRWFjaFByZXZpb3VzSXRlbSh0KXtsZXQgZTtmb3IoZT10aGlzLl9wcmV2aW91c01hcEhlYWQ7bnVsbCE9PWU7ZT1lLl9uZXh0UHJldmlvdXMpdChlKX1mb3JFYWNoQ2hhbmdlZEl0ZW0odCl7bGV0IGU7Zm9yKGU9dGhpcy5fY2hhbmdlc0hlYWQ7bnVsbCE9PWU7ZT1lLl9uZXh0Q2hhbmdlZCl0KGUpfWZvckVhY2hBZGRlZEl0ZW0odCl7bGV0IGU7Zm9yKGU9dGhpcy5fYWRkaXRpb25zSGVhZDtudWxsIT09ZTtlPWUuX25leHRBZGRlZCl0KGUpfWZvckVhY2hSZW1vdmVkSXRlbSh0KXtsZXQgZTtmb3IoZT10aGlzLl9yZW1vdmFsc0hlYWQ7bnVsbCE9PWU7ZT1lLl9uZXh0UmVtb3ZlZCl0KGUpfWRpZmYodCl7aWYodCl7aWYoISh0IGluc3RhbmNlb2YgTWFwfHxwbSh0KSkpdGhyb3cgbmV3IEVycm9yKGBFcnJvciB0cnlpbmcgdG8gZGlmZiAnJHtLZSh0KX0nLiBPbmx5IG1hcHMgYW5kIG9iamVjdHMgYXJlIGFsbG93ZWRgKX1lbHNlIHQ9bmV3IE1hcDtyZXR1cm4gdGhpcy5jaGVjayh0KT90aGlzOm51bGx9b25EZXN0cm95KCl7fWNoZWNrKHQpe3RoaXMuX3Jlc2V0KCk7bGV0IGU9dGhpcy5fbWFwSGVhZDtpZih0aGlzLl9hcHBlbmRBZnRlcj1udWxsLHRoaXMuX2ZvckVhY2godCwoKHQsbik9PntpZihlJiZlLmtleT09PW4pdGhpcy5fbWF5YmVBZGRUb0NoYW5nZXMoZSx0KSx0aGlzLl9hcHBlbmRBZnRlcj1lLGU9ZS5fbmV4dDtlbHNle2NvbnN0IG89dGhpcy5fZ2V0T3JDcmVhdGVSZWNvcmRGb3JLZXkobix0KTtlPXRoaXMuX2luc2VydEJlZm9yZU9yQXBwZW5kKGUsbyl9fSkpLGUpe2UuX3ByZXYmJihlLl9wcmV2Ll9uZXh0PW51bGwpLHRoaXMuX3JlbW92YWxzSGVhZD1lO2ZvcihsZXQgdD1lO251bGwhPT10O3Q9dC5fbmV4dFJlbW92ZWQpdD09PXRoaXMuX21hcEhlYWQmJih0aGlzLl9tYXBIZWFkPW51bGwpLHRoaXMuX3JlY29yZHMuZGVsZXRlKHQua2V5KSx0Ll9uZXh0UmVtb3ZlZD10Ll9uZXh0LHQucHJldmlvdXNWYWx1ZT10LmN1cnJlbnRWYWx1ZSx0LmN1cnJlbnRWYWx1ZT1udWxsLHQuX3ByZXY9bnVsbCx0Ll9uZXh0PW51bGx9cmV0dXJuIHRoaXMuX2NoYW5nZXNUYWlsJiYodGhpcy5fY2hhbmdlc1RhaWwuX25leHRDaGFuZ2VkPW51bGwpLHRoaXMuX2FkZGl0aW9uc1RhaWwmJih0aGlzLl9hZGRpdGlvbnNUYWlsLl9uZXh0QWRkZWQ9bnVsbCksdGhpcy5pc0RpcnR5fV9pbnNlcnRCZWZvcmVPckFwcGVuZCh0LGUpe2lmKHQpe2NvbnN0IG49dC5fcHJldjtyZXR1cm4gZS5fbmV4dD10LGUuX3ByZXY9bix0Ll9wcmV2PWUsbiYmKG4uX25leHQ9ZSksdD09PXRoaXMuX21hcEhlYWQmJih0aGlzLl9tYXBIZWFkPWUpLHRoaXMuX2FwcGVuZEFmdGVyPXQsdH1yZXR1cm4gdGhpcy5fYXBwZW5kQWZ0ZXI/KHRoaXMuX2FwcGVuZEFmdGVyLl9uZXh0PWUsZS5fcHJldj10aGlzLl9hcHBlbmRBZnRlcik6dGhpcy5fbWFwSGVhZD1lLHRoaXMuX2FwcGVuZEFmdGVyPWUsbnVsbH1fZ2V0T3JDcmVhdGVSZWNvcmRGb3JLZXkodCxlKXtpZih0aGlzLl9yZWNvcmRzLmhhcyh0KSl7Y29uc3Qgbj10aGlzLl9yZWNvcmRzLmdldCh0KTt0aGlzLl9tYXliZUFkZFRvQ2hhbmdlcyhuLGUpO2NvbnN0IG89bi5fcHJldixpPW4uX25leHQ7cmV0dXJuIG8mJihvLl9uZXh0PWkpLGkmJihpLl9wcmV2PW8pLG4uX25leHQ9bnVsbCxuLl9wcmV2PW51bGwsbn1jb25zdCBuPW5ldyB1Yih0KTtyZXR1cm4gdGhpcy5fcmVjb3Jkcy5zZXQodCxuKSxuLmN1cnJlbnRWYWx1ZT1lLHRoaXMuX2FkZFRvQWRkaXRpb25zKG4pLG59X3Jlc2V0KCl7aWYodGhpcy5pc0RpcnR5KXtsZXQgdDtmb3IodGhpcy5fcHJldmlvdXNNYXBIZWFkPXRoaXMuX21hcEhlYWQsdD10aGlzLl9wcmV2aW91c01hcEhlYWQ7bnVsbCE9PXQ7dD10Ll9uZXh0KXQuX25leHRQcmV2aW91cz10Ll9uZXh0O2Zvcih0PXRoaXMuX2NoYW5nZXNIZWFkO251bGwhPT10O3Q9dC5fbmV4dENoYW5nZWQpdC5wcmV2aW91c1ZhbHVlPXQuY3VycmVudFZhbHVlO2Zvcih0PXRoaXMuX2FkZGl0aW9uc0hlYWQ7bnVsbCE9dDt0PXQuX25leHRBZGRlZCl0LnByZXZpb3VzVmFsdWU9dC5jdXJyZW50VmFsdWU7dGhpcy5fY2hhbmdlc0hlYWQ9dGhpcy5fY2hhbmdlc1RhaWw9bnVsbCx0aGlzLl9hZGRpdGlvbnNIZWFkPXRoaXMuX2FkZGl0aW9uc1RhaWw9bnVsbCx0aGlzLl9yZW1vdmFsc0hlYWQ9bnVsbH19X21heWJlQWRkVG9DaGFuZ2VzKHQsZSl7T2JqZWN0LmlzKGUsdC5jdXJyZW50VmFsdWUpfHwodC5wcmV2aW91c1ZhbHVlPXQuY3VycmVudFZhbHVlLHQuY3VycmVudFZhbHVlPWUsdGhpcy5fYWRkVG9DaGFuZ2VzKHQpKX1fYWRkVG9BZGRpdGlvbnModCl7bnVsbD09PXRoaXMuX2FkZGl0aW9uc0hlYWQ/dGhpcy5fYWRkaXRpb25zSGVhZD10aGlzLl9hZGRpdGlvbnNUYWlsPXQ6KHRoaXMuX2FkZGl0aW9uc1RhaWwuX25leHRBZGRlZD10LHRoaXMuX2FkZGl0aW9uc1RhaWw9dCl9X2FkZFRvQ2hhbmdlcyh0KXtudWxsPT09dGhpcy5fY2hhbmdlc0hlYWQ/dGhpcy5fY2hhbmdlc0hlYWQ9dGhpcy5fY2hhbmdlc1RhaWw9dDoodGhpcy5fY2hhbmdlc1RhaWwuX25leHRDaGFuZ2VkPXQsdGhpcy5fY2hhbmdlc1RhaWw9dCl9X2ZvckVhY2godCxlKXt0IGluc3RhbmNlb2YgTWFwP3QuZm9yRWFjaChlKTpPYmplY3Qua2V5cyh0KS5mb3JFYWNoKChuPT5lKHRbbl0sbikpKX19Y2xhc3MgdWJ7Y29uc3RydWN0b3IodCl7dGhpcy5rZXk9dCx0aGlzLnByZXZpb3VzVmFsdWU9bnVsbCx0aGlzLmN1cnJlbnRWYWx1ZT1udWxsLHRoaXMuX25leHRQcmV2aW91cz1udWxsLHRoaXMuX25leHQ9bnVsbCx0aGlzLl9wcmV2PW51bGwsdGhpcy5fbmV4dEFkZGVkPW51bGwsdGhpcy5fbmV4dFJlbW92ZWQ9bnVsbCx0aGlzLl9uZXh0Q2hhbmdlZD1udWxsfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gZ2IoKXtyZXR1cm4gbmV3IGhiKFtuZXcgYWJdKX1jbGFzcyBoYntjb25zdHJ1Y3Rvcih0KXt0aGlzLmZhY3Rvcmllcz10fXN0YXRpYyBjcmVhdGUodCxlKXtpZihudWxsIT1lKXtjb25zdCBuPWUuZmFjdG9yaWVzLnNsaWNlKCk7dD10LmNvbmNhdChuKX1yZXR1cm4gbmV3IGhiKHQpfXN0YXRpYyBleHRlbmQodCl7cmV0dXJue3Byb3ZpZGU6aGIsdXNlRmFjdG9yeTplPT5oYi5jcmVhdGUodCxlfHxnYigpKSxkZXBzOltbaGIsbmV3IGpyLG5ldyBCcl1dfX1maW5kKHQpe2NvbnN0IGU9dGhpcy5mYWN0b3JpZXMuZmluZCgoZT0+ZS5zdXBwb3J0cyh0KSkpO2lmKG51bGwhPWUpcmV0dXJuIGU7dGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZmluZCBhIGRpZmZlciBzdXBwb3J0aW5nIG9iamVjdCAnJHt0fScgb2YgdHlwZSAnJHsoZnVuY3Rpb24gbih0KXtyZXR1cm4gdC5uYW1lfHx0eXBlb2YgdH0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovKSh0KX0nYCl9fWZ1bmN0aW9uIGJiKCl7cmV0dXJuIG5ldyB5YihbbmV3IG1iXSl9aGIuybVwcm92PVNuKHt0b2tlbjpoYixwcm92aWRlZEluOiJyb290IixmYWN0b3J5OmdifSk7Y2xhc3MgeWJ7Y29uc3RydWN0b3IodCl7dGhpcy5mYWN0b3JpZXM9dH1zdGF0aWMgY3JlYXRlKHQsZSl7aWYoZSl7Y29uc3Qgbj1lLmZhY3Rvcmllcy5zbGljZSgpO3Q9dC5jb25jYXQobil9cmV0dXJuIG5ldyB5Yih0KX1zdGF0aWMgZXh0ZW5kKHQpe3JldHVybntwcm92aWRlOnliLHVzZUZhY3Rvcnk6ZT0+eWIuY3JlYXRlKHQsZXx8YmIoKSksZGVwczpbW3liLG5ldyBqcixuZXcgQnJdXX19ZmluZCh0KXtjb25zdCBlPXRoaXMuZmFjdG9yaWVzLmZpbmQoKGU9PmUuc3VwcG9ydHModCkpKTtpZihlKXJldHVybiBlO3Rocm93IG5ldyBFcnJvcihgQ2Fubm90IGZpbmQgYSBkaWZmZXIgc3VwcG9ydGluZyBvYmplY3QgJyR7dH0nYCl9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KZnVuY3Rpb24gX2IodCxlLG4sbyxpPSExKXtmb3IoO251bGwhPT1uOyl7bmdEZXZNb2RlJiZnYShuLDYzKTtjb25zdCBhPWVbbi5pbmRleF07aWYobnVsbCE9PWEmJm8ucHVzaChsaShhKSksd28oYSkpZm9yKGxldCB0PU9vO3Q8YS5sZW5ndGg7dCsrKXtjb25zdCBlPWFbdF0sbj1lWzFdLmZpcnN0Q2hpbGQ7bnVsbCE9PW4mJl9iKGVbMV0sZSxuLG8pfWNvbnN0IHI9bi50eXBlO2lmKDgmcilfYih0LGUsbi5jaGlsZCxvKTtlbHNlIGlmKDMyJnIpe2NvbnN0IHQ9VGwobixlKTtsZXQgaTtmb3IoO2k9dCgpOylvLnB1c2goaSl9ZWxzZSBpZigxNiZyKXtjb25zdCB0PWxjKGUsbik7aWYoQXJyYXkuaXNBcnJheSh0KSlvLnB1c2goLi4udCk7ZWxzZXtjb25zdCBuPU5sKGVbMTZdKTtuZ0Rldk1vZGUmJlVvKG4pLF9iKG5bMV0sbix0LG8sITApfX1uPWk/bi5wcm9qZWN0aW9uTmV4dDpuLm5leHR9cmV0dXJuIG99Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL3liLsm1cHJvdj1Tbih7dG9rZW46eWIscHJvdmlkZWRJbjoicm9vdCIsZmFjdG9yeTpiYn0pO2NsYXNzIENie2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5fbFZpZXc9dCx0aGlzLl9jZFJlZkluamVjdGluZ1ZpZXc9ZSx0aGlzLl9hcHBSZWY9bnVsbCx0aGlzLl9hdHRhY2hlZFRvVmlld0NvbnRhaW5lcj0hMX1nZXQgcm9vdE5vZGVzKCl7Y29uc3QgdD10aGlzLl9sVmlldyxlPXRbMV07cmV0dXJuIF9iKGUsdCxlLmZpcnN0Q2hpbGQsW10pfWdldCBjb250ZXh0KCl7cmV0dXJuIHRoaXMuX2xWaWV3WzhdfXNldCBjb250ZXh0KHQpe3RoaXMuX2xWaWV3WzhdPXR9Z2V0IGRlc3Ryb3llZCgpe3JldHVybiAyNTY9PSgyNTYmdGhpcy5fbFZpZXdbMl0pfWRlc3Ryb3koKXtpZih0aGlzLl9hcHBSZWYpdGhpcy5fYXBwUmVmLmRldGFjaFZpZXcodGhpcyk7ZWxzZSBpZih0aGlzLl9hdHRhY2hlZFRvVmlld0NvbnRhaW5lcil7Y29uc3QgdD10aGlzLl9sVmlld1szXTtpZih3byh0KSl7Y29uc3QgZT10WzhdLG49ZT9lLmluZGV4T2YodGhpcyk6LTE7bj4tMSYmKG5nRGV2TW9kZSYmZ24obix0LmluZGV4T2YodGhpcy5fbFZpZXcpLU9vLCJBbiBhdHRhY2hlZCB2aWV3IHNob3VsZCBiZSBpbiB0aGUgc2FtZSBwb3NpdGlvbiB3aXRoaW4gaXRzIGNvbnRhaW5lciBhcyBpdHMgVmlld1JlZiBpbiB0aGUgVklFV19SRUZTIGFycmF5LiIpLFlsKHQsbiksdXIoZSxuKSl9dGhpcy5fYXR0YWNoZWRUb1ZpZXdDb250YWluZXI9ITF9cWwodGhpcy5fbFZpZXdbMV0sdGhpcy5fbFZpZXcpfW9uRGVzdHJveSh0KXtUZCh0aGlzLl9sVmlld1sxXSx0aGlzLl9sVmlldyxudWxsLHQpfW1hcmtGb3JDaGVjaygpe29wKHRoaXMuX2NkUmVmSW5qZWN0aW5nVmlld3x8dGhpcy5fbFZpZXcpfWRldGFjaCgpe3RoaXMuX2xWaWV3WzJdJj0tMTI5fXJlYXR0YWNoKCl7dGhpcy5fbFZpZXdbMl18PTEyOH1kZXRlY3RDaGFuZ2VzKCl7YXAodGhpcy5fbFZpZXdbMV0sdGhpcy5fbFZpZXcsdGhpcy5jb250ZXh0KX1jaGVja05vQ2hhbmdlcygpeyEoZnVuY3Rpb24gdChlLG4sbyl7VGkoITApO3RyeXthcChlLG4sbyl9ZmluYWxseXtUaSghMSl9fSkodGhpcy5fbFZpZXdbMV0sdGhpcy5fbFZpZXcsdGhpcy5jb250ZXh0KX1hdHRhY2hUb1ZpZXdDb250YWluZXJSZWYoKXtpZih0aGlzLl9hcHBSZWYpdGhyb3cgbmV3IEVycm9yKCJUaGlzIHZpZXcgaXMgYWxyZWFkeSBhdHRhY2hlZCBkaXJlY3RseSB0byB0aGUgQXBwbGljYXRpb25SZWYhIik7dGhpcy5fYXR0YWNoZWRUb1ZpZXdDb250YWluZXI9ITB9ZGV0YWNoRnJvbUFwcFJlZigpe3RoaXMuX2FwcFJlZj1udWxsLChmdW5jdGlvbiB0KGUsbil7bWMoZSxuLG5bMTFdLDIsbnVsbCxudWxsKX0pKHRoaXMuX2xWaWV3WzFdLHRoaXMuX2xWaWV3KX1hdHRhY2hUb0FwcFJlZih0KXtpZih0aGlzLl9hdHRhY2hlZFRvVmlld0NvbnRhaW5lcil0aHJvdyBuZXcgRXJyb3IoIlRoaXMgdmlldyBpcyBhbHJlYWR5IGF0dGFjaGVkIHRvIGEgVmlld0NvbnRhaW5lciEiKTt0aGlzLl9hcHBSZWY9dH19Y2xhc3MgTWIgZXh0ZW5kcyBDYntjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KSx0aGlzLl92aWV3PXR9ZGV0ZWN0Q2hhbmdlcygpe3JwKHRoaXMuX3ZpZXcpfWNoZWNrTm9DaGFuZ2VzKCl7IShmdW5jdGlvbiB0KGUpe1RpKCEwKTt0cnl7cnAoZSl9ZmluYWxseXtUaSghMSl9fSkodGhpcy5fdmlldyl9Z2V0IGNvbnRleHQoKXtyZXR1cm4gbnVsbH19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NvbnN0IHZiPWZ1bmN0aW9uIHhiKHQpe3JldHVybihmdW5jdGlvbiBlKHQsbixvKXtpZihTbyh0KSYmIW8pe2NvbnN0IGU9ZmkodC5pbmRleCxuKTtyZXR1cm4gbmV3IENiKGUsZSl9aWYoNDcmdC50eXBlKXtyZXR1cm4gbmV3IENiKG5bMTZdLG4pfXJldHVybiBudWxsfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8pKHdpKCkseGkoKSwxNj09KDE2JnQpKX07Y2xhc3MgT2J7fU9iLl9fTkdfRUxFTUVOVF9JRF9fPXZiO2NvbnN0IFBiPVtuZXcgbWJdLHdiPVtuZXcgYWJdLGtiPW5ldyBoYih3YiksU2I9bmV3IHliKFBiKSxEYj1mdW5jdGlvbiBSYigpe3JldHVybiBOYih3aSgpLHhpKCkpfTtjbGFzcyBFYnt9RWIuX19OR19FTEVNRU5UX0lEX189RGI7Y29uc3QgQWI9RWIsVGI9Y2xhc3MgZXh0ZW5kcyBBYntjb25zdHJ1Y3Rvcih0LGUsbil7c3VwZXIoKSx0aGlzLl9kZWNsYXJhdGlvbkxWaWV3PXQsdGhpcy5fZGVjbGFyYXRpb25UQ29udGFpbmVyPWUsdGhpcy5lbGVtZW50UmVmPW59Y3JlYXRlRW1iZWRkZWRWaWV3KHQpe2NvbnN0IGU9dGhpcy5fZGVjbGFyYXRpb25UQ29udGFpbmVyLnRWaWV3cyxuPXlkKHRoaXMuX2RlY2xhcmF0aW9uTFZpZXcsZSx0LDE2LG51bGwsZS5kZWNsVE5vZGUsbnVsbCxudWxsLG51bGwsbnVsbCksbz10aGlzLl9kZWNsYXJhdGlvbkxWaWV3W3RoaXMuX2RlY2xhcmF0aW9uVENvbnRhaW5lci5pbmRleF07bmdEZXZNb2RlJiZJbyhvKSxuWzE3XT1vO2NvbnN0IGk9dGhpcy5fZGVjbGFyYXRpb25MVmlld1sxOV07cmV0dXJuIG51bGwhPT1pJiYoblsxOV09aS5jcmVhdGVFbWJlZGRlZFZpZXcoZSkpLHZkKGUsbix0KSxuZXcgQ2Iobil9fTtmdW5jdGlvbiBOYih0LGUpe3JldHVybiA0JnQudHlwZT8obmdEZXZNb2RlJiZ4bih0LnRWaWV3cywiVFZpZXcgbXVzdCBiZSBhbGxvY2F0ZWQiKSxuZXcgVGIoZSx0LHFoKHQsZSkpKTpudWxsfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyB6Ynt9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCBJYj1mdW5jdGlvbiBIYigpe3JldHVybiBVYih3aSgpLHhpKCkpfTtjbGFzcyBGYnt9RmIuX19OR19FTEVNRU5UX0lEX189SWI7Y29uc3QgTGI9RmIsQmI9Y2xhc3MgZXh0ZW5kcyBMYntjb25zdHJ1Y3Rvcih0LGUsbil7c3VwZXIoKSx0aGlzLl9sQ29udGFpbmVyPXQsdGhpcy5faG9zdFROb2RlPWUsdGhpcy5faG9zdExWaWV3PW59Z2V0IGVsZW1lbnQoKXtyZXR1cm4gcWgodGhpcy5faG9zdFROb2RlLHRoaXMuX2hvc3RMVmlldyl9Z2V0IGluamVjdG9yKCl7cmV0dXJuIG5ldyBqYSh0aGlzLl9ob3N0VE5vZGUsdGhpcy5faG9zdExWaWV3KX1nZXQgcGFyZW50SW5qZWN0b3IoKXtjb25zdCB0PVJhKHRoaXMuX2hvc3RUTm9kZSx0aGlzLl9ob3N0TFZpZXcpO2lmKE1hKHQpKXtjb25zdCBlPXhhKHQsdGhpcy5faG9zdExWaWV3KSxuPXZhKHQpO25nRGV2TW9kZSYmV28oZSxuKTtyZXR1cm4gbmV3IGphKGVbMV0uZGF0YVtuKzhdLGUpfXJldHVybiBuZXcgamEobnVsbCx0aGlzLl9ob3N0TFZpZXcpfWNsZWFyKCl7Zm9yKDt0aGlzLmxlbmd0aD4wOyl0aGlzLnJlbW92ZSh0aGlzLmxlbmd0aC0xKX1nZXQodCl7Y29uc3QgZT1WYih0aGlzLl9sQ29udGFpbmVyKTtyZXR1cm4gbnVsbCE9PWUmJmVbdF18fG51bGx9Z2V0IGxlbmd0aCgpe3JldHVybiB0aGlzLl9sQ29udGFpbmVyLmxlbmd0aC1Pb31jcmVhdGVFbWJlZGRlZFZpZXcodCxlLG4pe2NvbnN0IG89dC5jcmVhdGVFbWJlZGRlZFZpZXcoZXx8e30pO3JldHVybiB0aGlzLmluc2VydChvLG4pLG99Y3JlYXRlQ29tcG9uZW50KHQsZSxuLG8saSl7Y29uc3QgYT1ufHx0aGlzLnBhcmVudEluamVjdG9yO2lmKCFpJiZudWxsPT10Lm5nTW9kdWxlJiZhKXtjb25zdCB0PWEuZ2V0KHpiLG51bGwpO3QmJihpPXQpfWNvbnN0IHI9dC5jcmVhdGUoYSxvLHZvaWQgMCxpKTtyZXR1cm4gdGhpcy5pbnNlcnQoci5ob3N0VmlldyxlKSxyfWluc2VydCh0LGUpe2NvbnN0IG49dC5fbFZpZXcsbz1uWzFdO2lmKG5nRGV2TW9kZSYmdC5kZXN0cm95ZWQpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgaW5zZXJ0IGEgZGVzdHJveWVkIFZpZXcgaW4gYSBWaWV3Q29udGFpbmVyISIpO2lmKChmdW5jdGlvbiBpKHQpe3JldHVybiB3byh0WzNdKX0pKG4pKXtjb25zdCBlPXRoaXMuaW5kZXhPZih0KTtpZigtMSE9PWUpdGhpcy5kZXRhY2goZSk7ZWxzZXtjb25zdCBlPW5bM107bmdEZXZNb2RlJiZnbih3byhlKSwhMCwiQW4gYXR0YWNoZWQgdmlldyBzaG91bGQgaGF2ZSBpdHMgUEFSRU5UIHBvaW50IHRvIGEgY29udGFpbmVyLiIpO2NvbnN0IG89bmV3IEJiKGUsZVs2XSxlWzNdKTtvLmRldGFjaChvLmluZGV4T2YodCkpfX1jb25zdCBhPXRoaXMuX2FkanVzdEluZGV4KGUpLHI9dGhpcy5fbENvbnRhaW5lcjtXbChvLG4scixhKTtjb25zdCBzPWNjKGEsciksbD1uWzExXSxjPXRjKGwscls3XSk7cmV0dXJuIG51bGwhPT1jJiYoZnVuY3Rpb24gZCh0LGUsbixvLGksYSl7b1swXT1pLG9bNl09ZSxtYyh0LG8sbiwxLGksYSl9KShvLHJbNl0sbCxuLGMscyksdC5hdHRhY2hUb1ZpZXdDb250YWluZXJSZWYoKSxmcihqYihyKSxhLHQpLHR9bW92ZSh0LGUpe2lmKG5nRGV2TW9kZSYmdC5kZXN0cm95ZWQpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgbW92ZSBhIGRlc3Ryb3llZCBWaWV3IGluIGEgVmlld0NvbnRhaW5lciEiKTtyZXR1cm4gdGhpcy5pbnNlcnQodCxlKX1pbmRleE9mKHQpe2NvbnN0IGU9VmIodGhpcy5fbENvbnRhaW5lcik7cmV0dXJuIG51bGwhPT1lP2UuaW5kZXhPZih0KTotMX1yZW1vdmUodCl7Y29uc3QgZT10aGlzLl9hZGp1c3RJbmRleCh0LC0xKSxuPVlsKHRoaXMuX2xDb250YWluZXIsZSk7biYmKHVyKGpiKHRoaXMuX2xDb250YWluZXIpLGUpLHFsKG5bMV0sbikpfWRldGFjaCh0KXtjb25zdCBlPXRoaXMuX2FkanVzdEluZGV4KHQsLTEpLG49WWwodGhpcy5fbENvbnRhaW5lcixlKTtyZXR1cm4gbiYmbnVsbCE9dXIoamIodGhpcy5fbENvbnRhaW5lciksZSk/bmV3IENiKG4pOm51bGx9X2FkanVzdEluZGV4KHQsZT0wKXtyZXR1cm4gbnVsbD09dD90aGlzLmxlbmd0aCtlOihuZ0Rldk1vZGUmJihNbih0LC0xLGBWaWV3UmVmIGluZGV4IG11c3QgYmUgcG9zaXRpdmUsIGdvdCAke3R9YCksX24odCx0aGlzLmxlbmd0aCsxK2UsImluZGV4IikpLHQpfX07ZnVuY3Rpb24gVmIodCl7cmV0dXJuIHRbOF19ZnVuY3Rpb24gamIodCl7cmV0dXJuIHRbOF18fCh0WzhdPVtdKX1mdW5jdGlvbiBVYih0LGUpe2xldCBuO25nRGV2TW9kZSYmZ2EodCwxNSk7Y29uc3Qgbz1lW3QuaW5kZXhdO2lmKHdvKG8pKW49bztlbHNle2xldCBpO2lmKDgmdC50eXBlKWk9bGkobyk7ZWxzZXtjb25zdCBuPWVbMTFdO25nRGV2TW9kZSYmbmdEZXZNb2RlLnJlbmRlcmVyQ3JlYXRlQ29tbWVudCsrLGk9bi5jcmVhdGVDb21tZW50KG5nRGV2TW9kZT8iY29udGFpbmVyIjoiIik7Y29uc3Qgbz1kaSh0LGUpO0psKG4sdGMobixvKSxpLChmdW5jdGlvbiBpKHQsZSl7cmV0dXJuIHJpKHQpP3QubmV4dFNpYmxpbmcoZSk6ZS5uZXh0U2libGluZ30pKG4sbyksITEpfWVbdC5pbmRleF09bj1RZChvLGUsaSx0KSxucChlLG4pfXJldHVybiBuZXcgQmIobix0LGUpfWNvbnN0IFdiPW5ldyBNYXA7ZnVuY3Rpb24gR2IodCl7bGV0IGU9V2IuZ2V0KHQpO3JldHVybiBlfHwoZT1LZSh0KSsiXyIrV2Iuc2l6ZSxXYi5zZXQodCxlKSksZX1HYihOcCksR2IoeXApLEdiKHpiKSwKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCkdiKCRoKSxHYihLaCksR2IoRmIpLEdiKEViKSxHYihPYiksR2IoTnApLEdiKHlwKTtjb25zdCBZYj17fTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgcWIgZXh0ZW5kcyBHaHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMubmdNb2R1bGU9dH1yZXNvbHZlQ29tcG9uZW50RmFjdG9yeSh0KXtuZ0Rldk1vZGUmJihmdW5jdGlvbiBlKHQsbj0iVHlwZSBwYXNzZWQgaW4gaXMgbm90IENvbXBvbmVudFR5cGUsIGl0IGRvZXMgbm90IGhhdmUgJ8m1Y21wJyBwcm9wZXJ0eS4iKXt5byh0KXx8T24obil9KSh0KTtjb25zdCBuPXlvKHQpO3JldHVybiBuZXcgS2Iobix0aGlzLm5nTW9kdWxlKX19ZnVuY3Rpb24gWmIodCl7Y29uc3QgZT1bXTtmb3IobGV0IG4gaW4gdClpZih0Lmhhc093blByb3BlcnR5KG4pKXtlLnB1c2goe3Byb3BOYW1lOnRbbl0sdGVtcGxhdGVOYW1lOm59KX1yZXR1cm4gZX1jb25zdCBYYj1uZXcgZXIoIlNDSEVEVUxFUl9UT0tFTiIse3Byb3ZpZGVkSW46InJvb3QiLGZhY3Rvcnk6KCk9PnhsfSk7Y2xhc3MgS2IgZXh0ZW5kcyBVaHtjb25zdHJ1Y3Rvcih0LGUpe3N1cGVyKCksdGhpcy5jb21wb25lbnREZWY9dCx0aGlzLm5nTW9kdWxlPWUsdGhpcy5jb21wb25lbnRUeXBlPXQudHlwZSx0aGlzLnNlbGVjdG9yPShmdW5jdGlvbiBuKHQpe3JldHVybiB0Lm1hcChrYykuam9pbigiLCIpfSkodC5zZWxlY3RvcnMpLHRoaXMubmdDb250ZW50U2VsZWN0b3JzPXQubmdDb250ZW50U2VsZWN0b3JzP3QubmdDb250ZW50U2VsZWN0b3JzOltdLHRoaXMuaXNCb3VuZFRvTW9kdWxlPSEhZX1nZXQgaW5wdXRzKCl7cmV0dXJuIFpiKHRoaXMuY29tcG9uZW50RGVmLmlucHV0cyl9Z2V0IG91dHB1dHMoKXtyZXR1cm4gWmIodGhpcy5jb21wb25lbnREZWYub3V0cHV0cyl9Y3JlYXRlKHQsZSxuLG8pe2NvbnN0IGk9KG89b3x8dGhpcy5uZ01vZHVsZSk/KGZ1bmN0aW9uIGEodCxlKXtyZXR1cm57Z2V0OihuLG8saSk9Pntjb25zdCBhPXQuZ2V0KG4sWWIsaSk7cmV0dXJuIGEhPT1ZYnx8bz09PVliP2E6ZS5nZXQobixvLGkpfX19KSh0LG8uaW5qZWN0b3IpOnQscj1pLmdldChRaCxzaSkscz1pLmdldChuYixudWxsKSxsPXIuY3JlYXRlUmVuZGVyZXIobnVsbCx0aGlzLmNvbXBvbmVudERlZiksYz10aGlzLmNvbXBvbmVudERlZi5zZWxlY3RvcnNbMF1bMF18fCJkaXYiLGQ9bj9BZChsLG4sdGhpcy5jb21wb25lbnREZWYuZW5jYXBzdWxhdGlvbik6VWwoci5jcmVhdGVSZW5kZXJlcihudWxsLHRoaXMuY29tcG9uZW50RGVmKSxjLChmdW5jdGlvbiBwKHQpe2NvbnN0IGU9dC50b0xvd2VyQ2FzZSgpO3JldHVybiJzdmciPT09ZT9laToibWF0aCI9PT1lP25pOm51bGx9KShjKSksbT10aGlzLmNvbXBvbmVudERlZi5vblB1c2g/NTc2OjUyOCxmPShmdW5jdGlvbiB1KHQsZSl7cmV0dXJue2NvbXBvbmVudHM6W10sc2NoZWR1bGVyOnR8fHhsLGNsZWFuOmNwLHBsYXllckhhbmRsZXI6ZXx8bnVsbCxmbGFnczowfX0pKCksZz1SZCgwLG51bGwsbnVsbCwxLDAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSxoPXlkKG51bGwsZyxmLG0sbnVsbCxudWxsLHIsbCxzLGkpO2xldCBiLHk7cWkoaCk7dHJ5e2NvbnN0IHQ9KGZ1bmN0aW9uIG8odCxlLG4saSxhLHIpe2NvbnN0IHM9blsxXTtuZ0Rldk1vZGUmJnduKG4sMjApLG5bMjBdPXQ7Y29uc3QgbD1fZChzLDIwLDIsIiNob3N0IixudWxsKSxjPWwubWVyZ2VkQXR0cnM9ZS5ob3N0QXR0cnM7bnVsbCE9PWMmJihocChsLGMsITApLG51bGwhPT10JiYoaGEoYSx0LGMpLG51bGwhPT1sLmNsYXNzZXMmJmdjKGEsdCxsLmNsYXNzZXMpLG51bGwhPT1sLnN0eWxlcyYmdWMoYSx0LGwuc3R5bGVzKSkpO2NvbnN0IGQ9aS5jcmVhdGVSZW5kZXJlcih0LGUpLHA9eWQobixEZChlKSxudWxsLGUub25QdXNoPzY0OjE2LG5bMjBdLGwsaSxkLHJ8fG51bGwsbnVsbCk7cmV0dXJuIHMuZmlyc3RDcmVhdGVQYXNzJiYoRWEoa2EobCxuKSxzLGUudHlwZSksamQocyxsKSxXZChsLG4ubGVuZ3RoLDEpKSxucChuLHApLG5bMjBdPXB9KShkLHRoaXMuY29tcG9uZW50RGVmLGgscixsKTtpZihkKWlmKG4paGEobCxkLFsibmctdmVyc2lvbiIsaWIuZnVsbF0pO2Vsc2V7Y29uc3R7YXR0cnM6dCxjbGFzc2VzOmV9PShmdW5jdGlvbiBuKHQpe2NvbnN0IGU9W10sbj1bXTtsZXQgbz0xLGk9Mjtmb3IoO288dC5sZW5ndGg7KXtsZXQgYT10W29dO2lmKCJzdHJpbmciPT10eXBlb2YgYSkyPT09aT8iIiE9PWEmJmUucHVzaChhLHRbKytvXSk6OD09PWkmJm4ucHVzaChhKTtlbHNle2lmKCF2YyhpKSlicmVhaztpPWF9bysrfXJldHVybnthdHRyczplLGNsYXNzZXM6bn19KSh0aGlzLmNvbXBvbmVudERlZi5zZWxlY3RvcnNbMF0pO3QmJmhhKGwsZCx0KSxlJiZlLmxlbmd0aD4wJiZnYyhsLGQsZS5qb2luKCIgIikpfWlmKHk9cGkoZyx2byksdm9pZCAwIT09ZSl7Y29uc3QgdD15LnByb2plY3Rpb249W107Zm9yKGxldCBuPTA7bjx0aGlzLm5nQ29udGVudFNlbGVjdG9ycy5sZW5ndGg7bisrKXtjb25zdCBvPWVbbl07dC5wdXNoKG51bGwhPW8/QXJyYXkuZnJvbShvKTpudWxsKX19Yj1YcCh0LHRoaXMuY29tcG9uZW50RGVmLGgsZixbS3BdKSx2ZChnLGgsbnVsbCl9ZmluYWxseXtRaSgpfXJldHVybiBuZXcgSmIodGhpcy5jb21wb25lbnRUeXBlLGIscWgoeSxoKSxoLHkpfX1uZXcgcWI7Y2xhc3MgSmIgZXh0ZW5kcyBjbGFzc3t9e2NvbnN0cnVjdG9yKHQsZSxuLG8saSl7c3VwZXIoKSx0aGlzLmxvY2F0aW9uPW4sdGhpcy5fcm9vdExWaWV3PW8sdGhpcy5fdE5vZGU9aSx0aGlzLmluc3RhbmNlPWUsdGhpcy5ob3N0Vmlldz10aGlzLmNoYW5nZURldGVjdG9yUmVmPW5ldyBNYihvKSx0aGlzLmNvbXBvbmVudFR5cGU9dH1nZXQgaW5qZWN0b3IoKXtyZXR1cm4gbmV3IGphKHRoaXMuX3ROb2RlLHRoaXMuX3Jvb3RMVmlldyl9ZGVzdHJveSgpe3RoaXMuaG9zdFZpZXcuZGVzdHJveSgpfW9uRGVzdHJveSh0KXt0aGlzLmhvc3RWaWV3Lm9uRGVzdHJveSh0KX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIFFiKHQsZSxuLG8pe3JldHVybiBWbigoKCk9Pntjb25zdCBpPXQ7bnVsbCE9PWUmJihpLmhhc093blByb3BlcnR5KCJkZWNvcmF0b3JzIikmJnZvaWQgMCE9PWkuZGVjb3JhdG9ycz9pLmRlY29yYXRvcnMucHVzaCguLi5lKTppLmRlY29yYXRvcnM9ZSksbnVsbCE9PW4mJihpLmN0b3JQYXJhbWV0ZXJzPW4pLG51bGwhPT1vJiYoaS5wcm9wRGVjb3JhdG9ycz1pLmhhc093blByb3BlcnR5KCJwcm9wRGVjb3JhdG9ycyIpJiZ2b2lkIDAhPT1pLnByb3BEZWNvcmF0b3JzP09iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxpLnByb3BEZWNvcmF0b3JzKSxvKTpvKX0pKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3QgJGI9bmV3IE1hcDtmdW5jdGlvbiB0eSh0KXtjb25zdCBlPW5ldyBTZXQ7IShmdW5jdGlvbiB0KG4pe2NvbnN0IG89TW8obiwhMCksaT1vLmlkO2lmKG51bGwhPT1pKXtjb25zdCB0PSRiLmdldChpKTshKGZ1bmN0aW9uIGEodCxlLG4pe2lmKGUmJmUhPT1uKXRocm93IG5ldyBFcnJvcihgRHVwbGljYXRlIG1vZHVsZSByZWdpc3RlcmVkIGZvciAke3R9IC0gJHtLZShlKX0gdnMgJHtLZShlLm5hbWUpfWApfSkoaSx0LG4pLCRiLnNldChpLG4pfWNvbnN0IHI9U2woby5pbXBvcnRzKTtmb3IoY29uc3QgbiBvZiByKWUuaGFzKG4pfHwoZS5hZGQobiksdChuKSl9KSh0KX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgZXkgZXh0ZW5kcyB6Yntjb25zdHJ1Y3Rvcih0LGUpe3N1cGVyKCksdGhpcy5fcGFyZW50PWUsdGhpcy5fYm9vdHN0cmFwQ29tcG9uZW50cz1bXSx0aGlzLmluamVjdG9yPXRoaXMsdGhpcy5kZXN0cm95Q2JzPVtdLHRoaXMuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyPW5ldyBxYih0aGlzKTtjb25zdCBuPU1vKHQpO25nRGV2TW9kZSYmeG4obixgTmdNb2R1bGUgJyR7S2UodCl9JyBpcyBub3QgYSBzdWJ0eXBlIG9mICdOZ01vZHVsZVR5cGUnLmApO2NvbnN0IG89KGZ1bmN0aW9uIGkodCl7cmV0dXJuIHRbb29dfHxudWxsfSkodCk7byYmUGcobyksdGhpcy5fYm9vdHN0cmFwQ29tcG9uZW50cz1TbChuLmJvb3RzdHJhcCksdGhpcy5fcjNJbmplY3Rvcj1QcCh0LGUsW3twcm92aWRlOnpiLHVzZVZhbHVlOnRoaXN9LHtwcm92aWRlOkdoLHVzZVZhbHVlOnRoaXMuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyfV0sS2UodCkpLHRoaXMuX3IzSW5qZWN0b3IuX3Jlc29sdmVJbmplY3RvckRlZlR5cGVzKCksdGhpcy5pbnN0YW5jZT10aGlzLmdldCh0KX1nZXQodCxlPU5wLlRIUk9XX0lGX05PVF9GT1VORCxuPUhuLkRlZmF1bHQpe3JldHVybiB0PT09TnB8fHQ9PT16Ynx8dD09PXlwP3RoaXM6dGhpcy5fcjNJbmplY3Rvci5nZXQodCxlLG4pfWRlc3Ryb3koKXtuZ0Rldk1vZGUmJnhuKHRoaXMuZGVzdHJveUNicywiTmdNb2R1bGUgYWxyZWFkeSBkZXN0cm95ZWQiKTtjb25zdCB0PXRoaXMuX3IzSW5qZWN0b3I7IXQuZGVzdHJveWVkJiZ0LmRlc3Ryb3koKSx0aGlzLmRlc3Ryb3lDYnMuZm9yRWFjaCgodD0+dCgpKSksdGhpcy5kZXN0cm95Q2JzPW51bGx9b25EZXN0cm95KHQpe25nRGV2TW9kZSYmeG4odGhpcy5kZXN0cm95Q2JzLCJOZ01vZHVsZSBhbHJlYWR5IGRlc3Ryb3llZCIpLHRoaXMuZGVzdHJveUNicy5wdXNoKHQpfX1jbGFzcyBueSBleHRlbmRzIGNsYXNze317Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLm1vZHVsZVR5cGU9dDtudWxsIT09TW8odCkmJnR5KHQpfWNyZWF0ZSh0KXtyZXR1cm4gbmV3IGV5KHRoaXMubW9kdWxlVHlwZSx0KX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIG95KHQsZSxuKXtjb25zdCBvPU5pKCkrdCxpPXhpKCk7cmV0dXJuIGlbb109PT1TYz9tbShpLG8sbj9lLmNhbGwobik6ZSgpKTpmbShpLG8pfWZ1bmN0aW9uIGl5KHQsZSxuLG8pe3JldHVybiB1eSh4aSgpLE5pKCksdCxlLG4sbyl9ZnVuY3Rpb24gYXkodCxlLG4sbyxpKXtyZXR1cm4gZ3koeGkoKSxOaSgpLHQsZSxuLG8saSl9ZnVuY3Rpb24gcnkodCxlLG4sbyxpLGEpe3JldHVybiBoeSh4aSgpLE5pKCksdCxlLG4sbyxpLGEpfWZ1bmN0aW9uIHN5KHQsZSxuLG8saSxhLHIpe3JldHVybiBieSh4aSgpLE5pKCksdCxlLG4sbyxpLGEscil9ZnVuY3Rpb24gbHkodCxlLG4sbyxpLGEscixzKXtjb25zdCBsPU5pKCkrdCxjPXhpKCksZD1ibShjLGwsbixvLGksYSk7cmV0dXJuIHVtKGMsbCs0LHIpfHxkP21tKGMsbCs1LHM/ZS5jYWxsKHMsbixvLGksYSxyKTplKG4sbyxpLGEscikpOmZtKGMsbCs1KX1mdW5jdGlvbiBjeSh0LGUsbixvLGksYSxyLHMsbCl7Y29uc3QgYz1OaSgpK3QsZD14aSgpLHA9Ym0oZCxjLG4sbyxpLGEpO3JldHVybiBnbShkLGMrNCxyLHMpfHxwP21tKGQsYys2LGw/ZS5jYWxsKGwsbixvLGksYSxyLHMpOmUobixvLGksYSxyLHMpKTpmbShkLGMrNil9ZnVuY3Rpb24gZHkodCxlLG4sbyxpLGEscixzLGwsYyl7Y29uc3QgZD1OaSgpK3QscD14aSgpO2xldCBtPWJtKHAsZCxuLG8saSxhKTtyZXR1cm4gaG0ocCxkKzQscixzLGwpfHxtP21tKHAsZCs3LGM/ZS5jYWxsKGMsbixvLGksYSxyLHMsbCk6ZShuLG8saSxhLHIscyxsKSk6Zm0ocCxkKzcpfWZ1bmN0aW9uIHB5KHQsZSxuLG8saSxhLHIscyxsLGMsZCl7Y29uc3QgcD1OaSgpK3QsbT14aSgpLGY9Ym0obSxwLG4sbyxpLGEpO3JldHVybiBibShtLHArNCxyLHMsbCxjKXx8Zj9tbShtLHArOCxkP2UuY2FsbChkLG4sbyxpLGEscixzLGwsYyk6ZShuLG8saSxhLHIscyxsLGMpKTpmbShtLHArOCl9ZnVuY3Rpb24gbXkodCxlLG4sbyl7cmV0dXJuIHl5KHhpKCksTmkoKSx0LGUsbixvKX1mdW5jdGlvbiBmeSh0LGUpe25nRGV2TW9kZSYmd24odCxlKTtjb25zdCBuPXRbZV07cmV0dXJuIG49PT1TYz92b2lkIDA6bn1mdW5jdGlvbiB1eSh0LGUsbixvLGksYSl7Y29uc3Qgcj1lK247cmV0dXJuIHVtKHQscixpKT9tbSh0LHIrMSxhP28uY2FsbChhLGkpOm8oaSkpOmZ5KHQscisxKX1mdW5jdGlvbiBneSh0LGUsbixvLGksYSxyKXtjb25zdCBzPWUrbjtyZXR1cm4gZ20odCxzLGksYSk/bW0odCxzKzIscj9vLmNhbGwocixpLGEpOm8oaSxhKSk6ZnkodCxzKzIpfWZ1bmN0aW9uIGh5KHQsZSxuLG8saSxhLHIscyl7Y29uc3QgbD1lK247cmV0dXJuIGhtKHQsbCxpLGEscik/bW0odCxsKzMscz9vLmNhbGwocyxpLGEscik6byhpLGEscikpOmZ5KHQsbCszKX1mdW5jdGlvbiBieSh0LGUsbixvLGksYSxyLHMsbCl7Y29uc3QgYz1lK247cmV0dXJuIGJtKHQsYyxpLGEscixzKT9tbSh0LGMrNCxsP28uY2FsbChsLGksYSxyLHMpOm8oaSxhLHIscykpOmZ5KHQsYys0KX1mdW5jdGlvbiB5eSh0LGUsbixvLGksYSl7bGV0IHI9ZStuLHM9ITE7Zm9yKGxldCBlPTA7ZTxpLmxlbmd0aDtlKyspdW0odCxyKyssaVtlXSkmJihzPSEwKTtyZXR1cm4gcz9tbSh0LHIsby5hcHBseShhLGkpKTpmeSh0LHIpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBfeSh0LGUpe2NvbnN0IG49T2koKTtsZXQgbztjb25zdCBpPXQrdm87bi5maXJzdENyZWF0ZVBhc3M/KG89KGZ1bmN0aW9uIGEodCxlKXtpZihlKWZvcihsZXQgbj1lLmxlbmd0aC0xO24+PTA7bi0tKXtjb25zdCBvPWVbbl07aWYodD09PW8ubmFtZSlyZXR1cm4gb310aHJvdyBuZXcgbm4oIjMwMiIsYFRoZSBwaXBlICcke3R9JyBjb3VsZCBub3QgYmUgZm91bmQhYCl9KShlLG4ucGlwZVJlZ2lzdHJ5KSxuLmRhdGFbaV09byxvLm9uRGVzdHJveSYmKG4uZGVzdHJveUhvb2tzfHwobi5kZXN0cm95SG9va3M9W10pKS5wdXNoKGksby5vbkRlc3Ryb3kpKTpvPW4uZGF0YVtpXTtjb25zdCByPW8uZmFjdG9yeXx8KG8uZmFjdG9yeT1HbyhvLnR5cGUsITApKSxzPUxuKGdmKTt0cnl7Y29uc3QgdD1QYSghMSksZT1yKCk7cmV0dXJuIFBhKHQpLChmdW5jdGlvbiBsKHQsZSxuLG8pe24+PXQuZGF0YS5sZW5ndGgmJih0LmRhdGFbbl09bnVsbCx0LmJsdWVwcmludFtuXT1udWxsKSxlW25dPW99KShuLHhpKCksaSxlKSxlfWZpbmFsbHl7TG4ocyl9fWZ1bmN0aW9uIEN5KHQsZSxuKXtjb25zdCBvPXQrdm8saT14aSgpLGE9bWkoaSxvKTtyZXR1cm4gd3koaSxQeShpLG8pP3V5KGksTmkoKSxlLGEudHJhbnNmb3JtLG4sYSk6YS50cmFuc2Zvcm0obikpfWZ1bmN0aW9uIE15KHQsZSxuLG8pe2NvbnN0IGk9dCt2byxhPXhpKCkscj1taShhLGkpO3JldHVybiB3eShhLFB5KGEsaSk/Z3koYSxOaSgpLGUsci50cmFuc2Zvcm0sbixvLHIpOnIudHJhbnNmb3JtKG4sbykpfWZ1bmN0aW9uIHZ5KHQsZSxuLG8saSl7Y29uc3QgYT10K3ZvLHI9eGkoKSxzPW1pKHIsYSk7cmV0dXJuIHd5KHIsUHkocixhKT9oeShyLE5pKCksZSxzLnRyYW5zZm9ybSxuLG8saSxzKTpzLnRyYW5zZm9ybShuLG8saSkpfWZ1bmN0aW9uIHh5KHQsZSxuLG8saSxhKXtjb25zdCByPXQrdm8scz14aSgpLGw9bWkocyxyKTtyZXR1cm4gd3kocyxQeShzLHIpP2J5KHMsTmkoKSxlLGwudHJhbnNmb3JtLG4sbyxpLGEsbCk6bC50cmFuc2Zvcm0obixvLGksYSkpfWZ1bmN0aW9uIE95KHQsZSxuKXtjb25zdCBvPXQrdm8saT14aSgpLGE9bWkoaSxvKTtyZXR1cm4gd3koaSxQeShpLG8pP3l5KGksTmkoKSxlLGEudHJhbnNmb3JtLG4sYSk6YS50cmFuc2Zvcm0uYXBwbHkoYSxuKSl9ZnVuY3Rpb24gUHkodCxlKXtyZXR1cm4gdFsxXS5kYXRhW2VdLnB1cmV9ZnVuY3Rpb24gd3kodCxlKXtpZihjbS5pc1dyYXBwZWQoZSkpe2U9Y20udW53cmFwKGUpO3RbemkoKV09U2N9cmV0dXJuIGV9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIGt5KHQpe3JldHVybiBlPT57c2V0VGltZW91dCh0LHZvaWQgMCxlKX19Y29uc3QgU3k9Y2xhc3MgZXh0ZW5kcyBCe2NvbnN0cnVjdG9yKHQ9ITEpe3N1cGVyKCksdGhpcy5fX2lzQXN5bmM9dH1lbWl0KHQpe3N1cGVyLm5leHQodCl9c3Vic2NyaWJlKHQsZSxuKXt2YXIgbyxpLGE7bGV0IHI9dCxzPWV8fCgoKT0+bnVsbCksbD1uO2lmKHQmJiJvYmplY3QiPT10eXBlb2YgdCl7Y29uc3QgZT10O3I9bnVsbD09PShvPWUubmV4dCl8fHZvaWQgMD09PW8/dm9pZCAwOm8uYmluZChlKSxzPW51bGw9PT0oaT1lLmVycm9yKXx8dm9pZCAwPT09aT92b2lkIDA6aS5iaW5kKGUpLGw9bnVsbD09PShhPWUuY29tcGxldGUpfHx2b2lkIDA9PT1hP3ZvaWQgMDphLmJpbmQoZSl9dGhpcy5fX2lzQXN5bmMmJihzPWt5KHMpLHImJihyPWt5KHIpKSxsJiYobD1reShsKSkpO2NvbnN0IGM9c3VwZXIuc3Vic2NyaWJlKHtuZXh0OnIsZXJyb3I6cyxjb21wbGV0ZTpsfSk7cmV0dXJuIHQgaW5zdGFuY2VvZiB1JiZ0LmFkZChjKSxjfX07Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIER5KCl7cmV0dXJuIHRoaXMuX3Jlc3VsdHNbc20oKV0oKX1jbGFzcyBSeXtjb25zdHJ1Y3Rvcih0PSExKXt0aGlzLl9lbWl0RGlzdGluY3RDaGFuZ2VzT25seT10LHRoaXMuZGlydHk9ITAsdGhpcy5fcmVzdWx0cz1bXSx0aGlzLl9jaGFuZ2VzRGV0ZWN0ZWQ9ITEsdGhpcy5fY2hhbmdlcz1udWxsLHRoaXMubGVuZ3RoPTAsdGhpcy5maXJzdD12b2lkIDAsdGhpcy5sYXN0PXZvaWQgMDtjb25zdCBlPXNtKCksbj1SeS5wcm90b3R5cGU7bltlXXx8KG5bZV09RHkpfWdldCBjaGFuZ2VzKCl7cmV0dXJuIHRoaXMuX2NoYW5nZXN8fCh0aGlzLl9jaGFuZ2VzPW5ldyBTeSl9Z2V0KHQpe3JldHVybiB0aGlzLl9yZXN1bHRzW3RdfW1hcCh0KXtyZXR1cm4gdGhpcy5fcmVzdWx0cy5tYXAodCl9ZmlsdGVyKHQpe3JldHVybiB0aGlzLl9yZXN1bHRzLmZpbHRlcih0KX1maW5kKHQpe3JldHVybiB0aGlzLl9yZXN1bHRzLmZpbmQodCl9cmVkdWNlKHQsZSl7cmV0dXJuIHRoaXMuX3Jlc3VsdHMucmVkdWNlKHQsZSl9Zm9yRWFjaCh0KXt0aGlzLl9yZXN1bHRzLmZvckVhY2godCl9c29tZSh0KXtyZXR1cm4gdGhpcy5fcmVzdWx0cy5zb21lKHQpfXRvQXJyYXkoKXtyZXR1cm4gdGhpcy5fcmVzdWx0cy5zbGljZSgpfXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMuX3Jlc3VsdHMudG9TdHJpbmcoKX1yZXNldCh0LGUpe2NvbnN0IG49dGhpcztuLmRpcnR5PSExO2NvbnN0IG89cHIodCk7KHRoaXMuX2NoYW5nZXNEZXRlY3RlZD0hKGZ1bmN0aW9uIGkodCxlLG4pe2lmKHQubGVuZ3RoIT09ZS5sZW5ndGgpcmV0dXJuITE7Zm9yKGxldCBvPTA7bzx0Lmxlbmd0aDtvKyspe2xldCBpPXRbb10sYT1lW29dO2lmKG4mJihpPW4oaSksYT1uKGEpKSxhIT09aSlyZXR1cm4hMX1yZXR1cm4hMH0pKG4uX3Jlc3VsdHMsbyxlKSkmJihuLl9yZXN1bHRzPW8sbi5sZW5ndGg9by5sZW5ndGgsbi5sYXN0PW9bdGhpcy5sZW5ndGgtMV0sbi5maXJzdD1vWzBdKX1ub3RpZnlPbkNoYW5nZXMoKXshdGhpcy5fY2hhbmdlc3x8IXRoaXMuX2NoYW5nZXNEZXRlY3RlZCYmdGhpcy5fZW1pdERpc3RpbmN0Q2hhbmdlc09ubHl8fHRoaXMuX2NoYW5nZXMuZW1pdCh0aGlzKX1zZXREaXJ0eSgpe3RoaXMuZGlydHk9ITB9ZGVzdHJveSgpe3RoaXMuY2hhbmdlcy5jb21wbGV0ZSgpLHRoaXMuY2hhbmdlcy51bnN1YnNjcmliZSgpfX1jbGFzcyBFeXtjb25zdHJ1Y3Rvcih0KXt0aGlzLnF1ZXJ5TGlzdD10LHRoaXMubWF0Y2hlcz1udWxsfWNsb25lKCl7cmV0dXJuIG5ldyBFeSh0aGlzLnF1ZXJ5TGlzdCl9c2V0RGlydHkoKXt0aGlzLnF1ZXJ5TGlzdC5zZXREaXJ0eSgpfX1jbGFzcyBBeXtjb25zdHJ1Y3Rvcih0PVtdKXt0aGlzLnF1ZXJpZXM9dH1jcmVhdGVFbWJlZGRlZFZpZXcodCl7Y29uc3QgZT10LnF1ZXJpZXM7aWYobnVsbCE9PWUpe2NvbnN0IG49bnVsbCE9PXQuY29udGVudFF1ZXJpZXM/dC5jb250ZW50UXVlcmllc1swXTplLmxlbmd0aCxvPVtdO2ZvcihsZXQgdD0wO3Q8bjt0Kyspe2NvbnN0IG49ZS5nZXRCeUluZGV4KHQpO28ucHVzaCh0aGlzLnF1ZXJpZXNbbi5pbmRleEluRGVjbGFyYXRpb25WaWV3XS5jbG9uZSgpKX1yZXR1cm4gbmV3IEF5KG8pfXJldHVybiBudWxsfWluc2VydFZpZXcodCl7dGhpcy5kaXJ0eVF1ZXJpZXNXaXRoTWF0Y2hlcyh0KX1kZXRhY2hWaWV3KHQpe3RoaXMuZGlydHlRdWVyaWVzV2l0aE1hdGNoZXModCl9ZGlydHlRdWVyaWVzV2l0aE1hdGNoZXModCl7Zm9yKGxldCBlPTA7ZTx0aGlzLnF1ZXJpZXMubGVuZ3RoO2UrKyludWxsIT09WXkodCxlKS5tYXRjaGVzJiZ0aGlzLnF1ZXJpZXNbZV0uc2V0RGlydHkoKX19Y2xhc3MgVHl7Y29uc3RydWN0b3IodCxlLG49bnVsbCl7dGhpcy5wcmVkaWNhdGU9dCx0aGlzLmZsYWdzPWUsdGhpcy5yZWFkPW59fWNsYXNzIE55e2NvbnN0cnVjdG9yKHQ9W10pe3RoaXMucXVlcmllcz10fWVsZW1lbnRTdGFydCh0LGUpe25nRGV2TW9kZSYmTG8odCwiUXVlcmllcyBzaG91bGQgY29sbGVjdCByZXN1bHRzIG9uIHRoZSBmaXJzdCB0ZW1wbGF0ZSBwYXNzIG9ubHkiKTtmb3IobGV0IG49MDtuPHRoaXMucXVlcmllcy5sZW5ndGg7bisrKXRoaXMucXVlcmllc1tuXS5lbGVtZW50U3RhcnQodCxlKX1lbGVtZW50RW5kKHQpe2ZvcihsZXQgZT0wO2U8dGhpcy5xdWVyaWVzLmxlbmd0aDtlKyspdGhpcy5xdWVyaWVzW2VdLmVsZW1lbnRFbmQodCl9ZW1iZWRkZWRUVmlldyh0KXtsZXQgZT1udWxsO2ZvcihsZXQgbj0wO248dGhpcy5sZW5ndGg7bisrKXtjb25zdCBvPW51bGwhPT1lP2UubGVuZ3RoOjAsaT10aGlzLmdldEJ5SW5kZXgobikuZW1iZWRkZWRUVmlldyh0LG8pO2kmJihpLmluZGV4SW5EZWNsYXJhdGlvblZpZXc9bixudWxsIT09ZT9lLnB1c2goaSk6ZT1baV0pfXJldHVybiBudWxsIT09ZT9uZXcgTnkoZSk6bnVsbH10ZW1wbGF0ZSh0LGUpe25nRGV2TW9kZSYmTG8odCwiUXVlcmllcyBzaG91bGQgY29sbGVjdCByZXN1bHRzIG9uIHRoZSBmaXJzdCB0ZW1wbGF0ZSBwYXNzIG9ubHkiKTtmb3IobGV0IG49MDtuPHRoaXMucXVlcmllcy5sZW5ndGg7bisrKXRoaXMucXVlcmllc1tuXS50ZW1wbGF0ZSh0LGUpfWdldEJ5SW5kZXgodCl7cmV0dXJuIG5nRGV2TW9kZSYmd24odGhpcy5xdWVyaWVzLHQpLHRoaXMucXVlcmllc1t0XX1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXMucXVlcmllcy5sZW5ndGh9dHJhY2sodCl7dGhpcy5xdWVyaWVzLnB1c2godCl9fWNsYXNzIHp5e2NvbnN0cnVjdG9yKHQsZT0tMSl7dGhpcy5tZXRhZGF0YT10LHRoaXMubWF0Y2hlcz1udWxsLHRoaXMuaW5kZXhJbkRlY2xhcmF0aW9uVmlldz0tMSx0aGlzLmNyb3NzZXNOZ1RlbXBsYXRlPSExLHRoaXMuX2FwcGxpZXNUb05leHROb2RlPSEwLHRoaXMuX2RlY2xhcmF0aW9uTm9kZUluZGV4PWV9ZWxlbWVudFN0YXJ0KHQsZSl7dGhpcy5pc0FwcGx5aW5nVG9Ob2RlKGUpJiZ0aGlzLm1hdGNoVE5vZGUodCxlKX1lbGVtZW50RW5kKHQpe3RoaXMuX2RlY2xhcmF0aW9uTm9kZUluZGV4PT09dC5pbmRleCYmKHRoaXMuX2FwcGxpZXNUb05leHROb2RlPSExKX10ZW1wbGF0ZSh0LGUpe3RoaXMuZWxlbWVudFN0YXJ0KHQsZSl9ZW1iZWRkZWRUVmlldyh0LGUpe3JldHVybiB0aGlzLmlzQXBwbHlpbmdUb05vZGUodCk/KHRoaXMuY3Jvc3Nlc05nVGVtcGxhdGU9ITAsdGhpcy5hZGRNYXRjaCgtdC5pbmRleCxlKSxuZXcgenkodGhpcy5tZXRhZGF0YSkpOm51bGx9aXNBcHBseWluZ1RvTm9kZSh0KXtpZih0aGlzLl9hcHBsaWVzVG9OZXh0Tm9kZSYmMSE9KDEmdGhpcy5tZXRhZGF0YS5mbGFncykpe2NvbnN0IGU9dGhpcy5fZGVjbGFyYXRpb25Ob2RlSW5kZXg7bGV0IG49dC5wYXJlbnQ7Zm9yKDtudWxsIT09biYmOCZuLnR5cGUmJm4uaW5kZXghPT1lOyluPW4ucGFyZW50O3JldHVybiBlPT09KG51bGwhPT1uP24uaW5kZXg6LTEpfXJldHVybiB0aGlzLl9hcHBsaWVzVG9OZXh0Tm9kZX1tYXRjaFROb2RlKHQsZSl7Y29uc3Qgbj10aGlzLm1ldGFkYXRhLnByZWRpY2F0ZTtpZihBcnJheS5pc0FycmF5KG4pKWZvcihsZXQgbz0wO288bi5sZW5ndGg7bysrKXtjb25zdCBpPW5bb107dGhpcy5tYXRjaFROb2RlV2l0aFJlYWRPcHRpb24odCxlLEl5KGUsaSkpLHRoaXMubWF0Y2hUTm9kZVdpdGhSZWFkT3B0aW9uKHQsZSxGYShlLHQsaSwhMSwhMSkpfWVsc2Ugbj09PUViPzQmZS50eXBlJiZ0aGlzLm1hdGNoVE5vZGVXaXRoUmVhZE9wdGlvbih0LGUsLTEpOnRoaXMubWF0Y2hUTm9kZVdpdGhSZWFkT3B0aW9uKHQsZSxGYShlLHQsbiwhMSwhMSkpfW1hdGNoVE5vZGVXaXRoUmVhZE9wdGlvbih0LGUsbil7aWYobnVsbCE9PW4pe2NvbnN0IG89dGhpcy5tZXRhZGF0YS5yZWFkO2lmKG51bGwhPT1vKWlmKG89PT1LaHx8bz09PUZifHxvPT09RWImJjQmZS50eXBlKXRoaXMuYWRkTWF0Y2goZS5pbmRleCwtMik7ZWxzZXtjb25zdCBuPUZhKGUsdCxvLCExLCExKTtudWxsIT09biYmdGhpcy5hZGRNYXRjaChlLmluZGV4LG4pfWVsc2UgdGhpcy5hZGRNYXRjaChlLmluZGV4LG4pfX1hZGRNYXRjaCh0LGUpe251bGw9PT10aGlzLm1hdGNoZXM/dGhpcy5tYXRjaGVzPVt0LGVdOnRoaXMubWF0Y2hlcy5wdXNoKHQsZSl9fWZ1bmN0aW9uIEl5KHQsZSl7Y29uc3Qgbj10LmxvY2FsTmFtZXM7aWYobnVsbCE9PW4pZm9yKGxldCB0PTA7dDxuLmxlbmd0aDt0Kz0yKWlmKG5bdF09PT1lKXJldHVybiBuW3QrMV07cmV0dXJuIG51bGx9ZnVuY3Rpb24gSHkodCxlLG4sbyl7cmV0dXJuLTE9PT1uPyhmdW5jdGlvbiBpKHQsZSl7cmV0dXJuIDExJnQudHlwZT9xaCh0LGUpOjQmdC50eXBlP05iKHQsZSk6bnVsbH0pKGUsdCk6LTI9PT1uPyhmdW5jdGlvbiBhKHQsZSxuKXtpZihuPT09S2gpcmV0dXJuIHFoKGUsdCk7aWYobj09PUViKXJldHVybiBOYihlLHQpO2lmKG49PT1GYilyZXR1cm4gbmdEZXZNb2RlJiZnYShlLDE1KSxVYihlLHQpO25nRGV2TW9kZSYmT24oYFNwZWNpYWwgdG9rZW4gdG8gcmVhZCBzaG91bGQgYmUgb25lIG9mIEVsZW1lbnRSZWYsIFRlbXBsYXRlUmVmIG9yIFZpZXdDb250YWluZXJSZWYgYnV0IGdvdCAke0tlKG4pfS5gKX0pKHQsZSxvKTpMYSh0LHRbMV0sbixlKX1mdW5jdGlvbiBGeSh0LGUsbixvKXtjb25zdCBpPWVbMTldLnF1ZXJpZXNbb107aWYobnVsbD09PWkubWF0Y2hlcyl7Y29uc3Qgbz10LmRhdGEsYT1uLm1hdGNoZXMscj1bXTtmb3IobGV0IHQ9MDt0PGEubGVuZ3RoO3QrPTIpe2NvbnN0IGk9YVt0XTtpZihpPDApci5wdXNoKG51bGwpO2Vsc2V7bmdEZXZNb2RlJiZ3bihvLGkpO3IucHVzaChIeShlLG9baV0sYVt0KzFdLG4ubWV0YWRhdGEucmVhZCkpfX1pLm1hdGNoZXM9cn1yZXR1cm4gaS5tYXRjaGVzfWZ1bmN0aW9uIEx5KHQsZSxuLG8pe2NvbnN0IGk9dC5xdWVyaWVzLmdldEJ5SW5kZXgobiksYT1pLm1hdGNoZXM7aWYobnVsbCE9PWEpe2NvbnN0IHI9RnkodCxlLGksbik7Zm9yKGxldCB0PTA7dDxhLmxlbmd0aDt0Kz0yKXtjb25zdCBuPWFbdF07aWYobj4wKW8ucHVzaChyW3QvMl0pO2Vsc2V7Y29uc3QgaT1hW3QrMV0scj1lWy1uXTtuZ0Rldk1vZGUmJklvKHIpO2ZvcihsZXQgdD1Pbzt0PHIubGVuZ3RoO3QrKyl7Y29uc3QgZT1yW3RdO2VbMTddPT09ZVszXSYmTHkoZVsxXSxlLGksbyl9aWYobnVsbCE9PXJbOV0pe2NvbnN0IHQ9cls5XTtmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKyl7Y29uc3Qgbj10W2VdO0x5KG5bMV0sbixpLG8pfX19fX1yZXR1cm4gb31mdW5jdGlvbiBCeSh0KXtjb25zdCBlPXhpKCksbj1PaSgpLG89VWkoKTtXaShvKzEpO2NvbnN0IGk9WXkobixvKTtpZih0LmRpcnR5JiZ1aShlKT09PSgyPT0oMiZpLm1ldGFkYXRhLmZsYWdzKSkpe2lmKG51bGw9PT1pLm1hdGNoZXMpdC5yZXNldChbXSk7ZWxzZXtjb25zdCBhPWkuY3Jvc3Nlc05nVGVtcGxhdGU/THkobixlLG8sW10pOkZ5KG4sZSxpLG8pO3QucmVzZXQoYSxKaCksdC5ub3RpZnlPbkNoYW5nZXMoKX1yZXR1cm4hMH1yZXR1cm4hMX1mdW5jdGlvbiBWeSh0LGUsbil7bmdEZXZNb2RlJiZwbihlLCJFeHBlY3RpbmcgZmxhZ3MiKTtjb25zdCBvPU9pKCk7by5maXJzdENyZWF0ZVBhc3MmJihHeShvLG5ldyBUeSh0LGUsbiksLTEpLDI9PSgyJmUpJiYoby5zdGF0aWNWaWV3UXVlcmllcz0hMCkpLFd5KG8seGkoKSxlKX1mdW5jdGlvbiBqeSh0LGUsbixvKXtuZ0Rldk1vZGUmJnBuKG4sIkV4cGVjdGluZyBmbGFncyIpO2NvbnN0IGk9T2koKTtpZihpLmZpcnN0Q3JlYXRlUGFzcyl7Y29uc3QgYT13aSgpO0d5KGksbmV3IFR5KGUsbixvKSxhLmluZGV4KSwoZnVuY3Rpb24gYSh0LGUpe2NvbnN0IG49dC5jb250ZW50UXVlcmllc3x8KHQuY29udGVudFF1ZXJpZXM9W10pO2UhPT0obi5sZW5ndGg/bltuLmxlbmd0aC0xXTotMSkmJm4ucHVzaCh0LnF1ZXJpZXMubGVuZ3RoLTEsZSl9KShpLHQpLDI9PSgyJm4pJiYoaS5zdGF0aWNDb250ZW50UXVlcmllcz0hMCl9V3koaSx4aSgpLG4pfWZ1bmN0aW9uIFV5KCl7cmV0dXJuKGZ1bmN0aW9uIHQoZSxuKXtyZXR1cm4gbmdEZXZNb2RlJiZ4bihlWzE5XSwiTFF1ZXJpZXMgc2hvdWxkIGJlIGRlZmluZWQgd2hlbiB0cnlpbmcgdG8gbG9hZCBhIHF1ZXJ5IiksbmdEZXZNb2RlJiZ3bihlWzE5XS5xdWVyaWVzLG4pLGVbMTldLnF1ZXJpZXNbbl0ucXVlcnlMaXN0fSkoeGkoKSxVaSgpKX1mdW5jdGlvbiBXeSh0LGUsbil7Y29uc3Qgbz1uZXcgUnkoND09KDQmbikpO1RkKHQsZSxvLG8uZGVzdHJveSksbnVsbD09PWVbMTldJiYoZVsxOV09bmV3IEF5KSxlWzE5XS5xdWVyaWVzLnB1c2gobmV3IEV5KG8pKX1mdW5jdGlvbiBHeSh0LGUsbil7bnVsbD09PXQucXVlcmllcyYmKHQucXVlcmllcz1uZXcgTnkpLHQucXVlcmllcy50cmFjayhuZXcgenkoZSxuKSl9ZnVuY3Rpb24gWXkodCxlKXtyZXR1cm4gbmdEZXZNb2RlJiZ4bih0LnF1ZXJpZXMsIlRRdWVyaWVzIG11c3QgYmUgZGVmaW5lZCB0byByZXRyaWV2ZSBhIFRRdWVyeSIpLHQucXVlcmllcy5nZXRCeUluZGV4KGUpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBxeSh0LGUpe3JldHVybiBOYih0LGUpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3QgWnk9eyLJtcm1YXR0cmlidXRlIjp5bSwiybXJtWF0dHJpYnV0ZUludGVycG9sYXRlMSI6U20sIsm1ybVhdHRyaWJ1dGVJbnRlcnBvbGF0ZTIiOkRtLCLJtcm1YXR0cmlidXRlSW50ZXJwb2xhdGUzIjpSbSwiybXJtWF0dHJpYnV0ZUludGVycG9sYXRlNCI6RW0sIsm1ybVhdHRyaWJ1dGVJbnRlcnBvbGF0ZTUiOkFtLCLJtcm1YXR0cmlidXRlSW50ZXJwb2xhdGU2IjpUbSwiybXJtWF0dHJpYnV0ZUludGVycG9sYXRlNyI6Tm0sIsm1ybVhdHRyaWJ1dGVJbnRlcnBvbGF0ZTgiOnptLCLJtcm1YXR0cmlidXRlSW50ZXJwb2xhdGVWIjpJbSwiybXJtWRlZmluZUNvbXBvbmVudCI6c28sIsm1ybVkZWZpbmVEaXJlY3RpdmUiOmhvLCLJtcm1ZGVmaW5lSW5qZWN0YWJsZSI6U24sIsm1ybVkZWZpbmVJbmplY3RvciI6RG4sIsm1ybVkZWZpbmVOZ01vZHVsZSI6Zm8sIsm1ybVkZWZpbmVQaXBlIjpibywiybXJtWRpcmVjdGl2ZUluamVjdCI6Z2YsIsm1ybVnZXRJbmhlcml0ZWRGYWN0b3J5IjpVYSwiybXJtWluamVjdCI6VHIsIsm1ybVpbmplY3RBdHRyaWJ1dGUiOkdhLCLJtcm1aW52YWxpZEZhY3RvcnkiOmhmLCLJtcm1aW52YWxpZEZhY3RvcnlEZXAiOk5yLCLJtcm1dGVtcGxhdGVSZWZFeHRyYWN0b3IiOnF5LCLJtcm1TmdPbkNoYW5nZXNGZWF0dXJlIjpxbywiybXJtVByb3ZpZGVyc0ZlYXR1cmUiOmpoLCLJtcm1Q29weURlZmluaXRpb25GZWF0dXJlIjphbSwiybXJtUluaGVyaXREZWZpbml0aW9uRmVhdHVyZSI6UXAsIsm1ybVuZXh0Q29udGV4dCI6emYsIsm1ybVuYW1lc3BhY2VIVE1MIjphYSwiybXJtW5hbWVzcGFjZU1hdGhNTCI6aWEsIsm1ybVuYW1lc3BhY2VTVkciOm9hLCLJtcm1ZW5hYmxlQmluZGluZ3MiOk1pLCLJtcm1ZGlzYWJsZUJpbmRpbmdzIjp2aSwiybXJtWVsZW1lbnRTdGFydCI6Q2YsIsm1ybVlbGVtZW50RW5kIjpNZiwiybXJtWVsZW1lbnQiOnZmLCLJtcm1ZWxlbWVudENvbnRhaW5lclN0YXJ0Ijp4ZiwiybXJtWVsZW1lbnRDb250YWluZXJFbmQiOk9mLCLJtcm1ZWxlbWVudENvbnRhaW5lciI6UGYsIsm1ybVwdXJlRnVuY3Rpb24wIjpveSwiybXJtXB1cmVGdW5jdGlvbjEiOml5LCLJtcm1cHVyZUZ1bmN0aW9uMiI6YXksIsm1ybVwdXJlRnVuY3Rpb24zIjpyeSwiybXJtXB1cmVGdW5jdGlvbjQiOnN5LCLJtcm1cHVyZUZ1bmN0aW9uNSI6bHksIsm1ybVwdXJlRnVuY3Rpb242IjpjeSwiybXJtXB1cmVGdW5jdGlvbjciOmR5LCLJtcm1cHVyZUZ1bmN0aW9uOCI6cHksIsm1ybVwdXJlRnVuY3Rpb25WIjpteSwiybXJtWdldEN1cnJlbnRWaWV3Ijp3ZiwiybXJtXJlc3RvcmVWaWV3IjpQaSwiybXJtWxpc3RlbmVyIjpSZiwiybXJtXByb2plY3Rpb24iOkZmLCLJtcm1c3ludGhldGljSG9zdFByb3BlcnR5IjpkZywiybXJtXN5bnRoZXRpY0hvc3RMaXN0ZW5lciI6RWYsIsm1ybVwaXBlQmluZDEiOkN5LCLJtcm1cGlwZUJpbmQyIjpNeSwiybXJtXBpcGVCaW5kMyI6dnksIsm1ybVwaXBlQmluZDQiOnh5LCLJtcm1cGlwZUJpbmRWIjpPeSwiybXJtXByb2plY3Rpb25EZWYiOkhmLCLJtcm1aG9zdFByb3BlcnR5IjpjZywiybXJtXByb3BlcnR5IjpiZiwiybXJtXByb3BlcnR5SW50ZXJwb2xhdGUiOkxmLCLJtcm1cHJvcGVydHlJbnRlcnBvbGF0ZTEiOkJmLCLJtcm1cHJvcGVydHlJbnRlcnBvbGF0ZTIiOlZmLCLJtcm1cHJvcGVydHlJbnRlcnBvbGF0ZTMiOmpmLCLJtcm1cHJvcGVydHlJbnRlcnBvbGF0ZTQiOlVmLCLJtcm1cHJvcGVydHlJbnRlcnBvbGF0ZTUiOldmLCLJtcm1cHJvcGVydHlJbnRlcnBvbGF0ZTYiOkdmLCLJtcm1cHJvcGVydHlJbnRlcnBvbGF0ZTciOllmLCLJtcm1cHJvcGVydHlJbnRlcnBvbGF0ZTgiOnFmLCLJtcm1cHJvcGVydHlJbnRlcnBvbGF0ZVYiOlpmLCLJtcm1cGlwZSI6X3ksIsm1ybVxdWVyeVJlZnJlc2giOkJ5LCLJtcm1dmlld1F1ZXJ5IjpWeSwiybXJtWxvYWRRdWVyeSI6VXksIsm1ybVjb250ZW50UXVlcnkiOmp5LCLJtcm1cmVmZXJlbmNlIjpGbSwiybXJtWNsYXNzTWFwIjptdSwiybXJtWNsYXNzTWFwSW50ZXJwb2xhdGUxIjpJdSwiybXJtWNsYXNzTWFwSW50ZXJwb2xhdGUyIjpIdSwiybXJtWNsYXNzTWFwSW50ZXJwb2xhdGUzIjpGdSwiybXJtWNsYXNzTWFwSW50ZXJwb2xhdGU0IjpMdSwiybXJtWNsYXNzTWFwSW50ZXJwb2xhdGU1IjpCdSwiybXJtWNsYXNzTWFwSW50ZXJwb2xhdGU2IjpWdSwiybXJtWNsYXNzTWFwSW50ZXJwb2xhdGU3IjpqdSwiybXJtWNsYXNzTWFwSW50ZXJwb2xhdGU4IjpVdSwiybXJtWNsYXNzTWFwSW50ZXJwb2xhdGVWIjpXdSwiybXJtXN0eWxlTWFwIjpkdSwiybXJtXN0eWxlTWFwSW50ZXJwb2xhdGUxIjpHdSwiybXJtXN0eWxlTWFwSW50ZXJwb2xhdGUyIjpZdSwiybXJtXN0eWxlTWFwSW50ZXJwb2xhdGUzIjpxdSwiybXJtXN0eWxlTWFwSW50ZXJwb2xhdGU0IjpadSwiybXJtXN0eWxlTWFwSW50ZXJwb2xhdGU1IjpYdSwiybXJtXN0eWxlTWFwSW50ZXJwb2xhdGU2IjpLdSwiybXJtXN0eWxlTWFwSW50ZXJwb2xhdGU3IjpKdSwiybXJtXN0eWxlTWFwSW50ZXJwb2xhdGU4IjpRdSwiybXJtXN0eWxlTWFwSW50ZXJwb2xhdGVWIjokdSwiybXJtXN0eWxlUHJvcCI6bHUsIsm1ybVzdHlsZVByb3BJbnRlcnBvbGF0ZTEiOnRnLCLJtcm1c3R5bGVQcm9wSW50ZXJwb2xhdGUyIjplZywiybXJtXN0eWxlUHJvcEludGVycG9sYXRlMyI6bmcsIsm1ybVzdHlsZVByb3BJbnRlcnBvbGF0ZTQiOm9nLCLJtcm1c3R5bGVQcm9wSW50ZXJwb2xhdGU1IjppZywiybXJtXN0eWxlUHJvcEludGVycG9sYXRlNiI6YWcsIsm1ybVzdHlsZVByb3BJbnRlcnBvbGF0ZTciOnJnLCLJtcm1c3R5bGVQcm9wSW50ZXJwb2xhdGU4IjpzZywiybXJtXN0eWxlUHJvcEludGVycG9sYXRlViI6bGcsIsm1ybVjbGFzc1Byb3AiOmN1LCLJtcm1YWR2YW5jZSI6RGMsIsm1ybV0ZW1wbGF0ZSI6SG0sIsm1ybV0ZXh0IjpQdSwiybXJtXRleHRJbnRlcnBvbGF0ZSI6d3UsIsm1ybV0ZXh0SW50ZXJwb2xhdGUxIjprdSwiybXJtXRleHRJbnRlcnBvbGF0ZTIiOlN1LCLJtcm1dGV4dEludGVycG9sYXRlMyI6RHUsIsm1ybV0ZXh0SW50ZXJwb2xhdGU0IjpSdSwiybXJtXRleHRJbnRlcnBvbGF0ZTUiOkV1LCLJtcm1dGV4dEludGVycG9sYXRlNiI6QXUsIsm1ybV0ZXh0SW50ZXJwb2xhdGU3IjpUdSwiybXJtXRleHRJbnRlcnBvbGF0ZTgiOk51LCLJtcm1dGV4dEludGVycG9sYXRlViI6enUsIsm1ybVpMThuIjpSaCwiybXJtWkxOG5BdHRyaWJ1dGVzIjpFaCwiybXJtWkxOG5FeHAiOkFoLCLJtcm1aTE4blN0YXJ0IjpTaCwiybXJtWkxOG5FbmQiOkRoLCLJtcm1aTE4bkFwcGx5IjpUaCwiybXJtWkxOG5Qb3N0cHJvY2VzcyI6TmgsIsm1ybVyZXNvbHZlV2luZG93IjpPbCwiybXJtXJlc29sdmVEb2N1bWVudCI6UGwsIsm1ybVyZXNvbHZlQm9keSI6d2wsIsm1ybVzZXRDb21wb25lbnRTY29wZSI6bG8sIsm1ybVzZXROZ01vZHVsZVNjb3BlIjp1bywiybXJtXNhbml0aXplSHRtbCI6cXMsIsm1ybVzYW5pdGl6ZVN0eWxlIjpacywiybXJtXNhbml0aXplUmVzb3VyY2VVcmwiOktzLCLJtcm1c2FuaXRpemVTY3JpcHQiOkpzLCLJtcm1c2FuaXRpemVVcmwiOlhzLCLJtcm1c2FuaXRpemVVcmxPclJlc291cmNlVXJsIjp0bCwiybXJtXRydXN0Q29uc3RhbnRIdG1sIjpRcywiybXJtXRydXN0Q29uc3RhbnRSZXNvdXJjZVVybCI6JHMsZm9yd2FyZFJlZjokZSxyZXNvbHZlRm9yd2FyZFJlZjp0bn07bGV0IFh5PW51bGw7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCBLeT1bXTtsZXQgSnk9ITE7ZnVuY3Rpb24gUXkodCl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCk/dC5ldmVyeShReSk6ISF0bih0KX1mdW5jdGlvbiAkeSh0LGUsbil7aWYob18uZ2V0KHQpKXJldHVybjtsZXQgbztpZihvXy5zZXQodCwhMCksdD10bih0KSxuKXtpZihvPU1vKHQpLCFvKXRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCB2YWx1ZSAnJHt0Lm5hbWV9JyBpbXBvcnRlZCBieSB0aGUgbW9kdWxlICcke24ubmFtZX0nLiBQbGVhc2UgYWRkIGFuIEBOZ01vZHVsZSBhbm5vdGF0aW9uLmApfWVsc2Ugbz1Nbyh0LCEwKTtjb25zdCBpPVtdLGE9U2woby5kZWNsYXJhdGlvbnMpLHI9U2woby5pbXBvcnRzKTtwcihyKS5tYXAodF8pLmZvckVhY2goKGU9PntoKGUsdCksJHkoZSwhMSx0KX0pKTtjb25zdCBzPVNsKG8uZXhwb3J0cyk7YS5mb3JFYWNoKChmdW5jdGlvbiBsKGUpe2U9dG4oZSk7eW8oZSl8fF9vKGUpfHxDbyhlKXx8aS5wdXNoKGBVbmV4cGVjdGVkIHZhbHVlICcke3NuKGUpfScgZGVjbGFyZWQgYnkgdGhlIG1vZHVsZSAnJHtzbih0KX0nLiBQbGVhc2UgYWRkIGEgQFBpcGUvQERpcmVjdGl2ZS9AQ29tcG9uZW50IGFubm90YXRpb24uYCl9KSksYS5mb3JFYWNoKChmdW5jdGlvbiBjKHQpe2NvbnN0IGU9X28odD10bih0KSk7IXlvKHQpJiZlJiYwPT1lLnNlbGVjdG9ycy5sZW5ndGgmJmkucHVzaChgRGlyZWN0aXZlICR7c24odCl9IGhhcyBubyBzZWxlY3RvciwgcGxlYXNlIGFkZCBpdCFgKX0pKTtjb25zdCBkPVsuLi5hLm1hcCh0biksLi4ucHIoci5tYXAoaV8pKS5tYXAodG4pXTtzLmZvckVhY2goKGZ1bmN0aW9uIHAoZSl7Y29uc3Qgbj0oeW8oZT10bihlKSk/ImNvbXBvbmVudCI6X28oZSkmJiJkaXJlY3RpdmUiKXx8Q28oZSkmJiJwaXBlIjtuJiYtMT09PWQubGFzdEluZGV4T2YoZSkmJmkucHVzaChgQ2FuJ3QgZXhwb3J0ICR7bn0gJHtzbihlKX0gZnJvbSAke3NuKHQpfSBhcyBpdCB3YXMgbmVpdGhlciBkZWNsYXJlZCBub3IgaW1wb3J0ZWQhYCl9KSksYS5mb3JFYWNoKChuPT4oZnVuY3Rpb24gbyhlLG4pe2U9dG4oZSk7Y29uc3Qgbz1uXy5nZXQoZSk7aWYobyYmbyE9PXQpe2lmKCFuKXtjb25zdCBuPVtvLHRdLm1hcChzbikuc29ydCgpO2kucHVzaChgVHlwZSAke3NuKGUpfSBpcyBwYXJ0IG9mIHRoZSBkZWNsYXJhdGlvbnMgb2YgMiBtb2R1bGVzOiAke25bMF19IGFuZCAke25bMV19ISBQbGVhc2UgY29uc2lkZXIgbW92aW5nICR7c24oZSl9IHRvIGEgaGlnaGVyIG1vZHVsZSB0aGF0IGltcG9ydHMgJHtuWzBdfSBhbmQgJHtuWzFdfS4gWW91IGNhbiBhbHNvIGNyZWF0ZSBhIG5ldyBOZ01vZHVsZSB0aGF0IGV4cG9ydHMgYW5kIGluY2x1ZGVzICR7c24oZSl9IHRoZW4gaW1wb3J0IHRoYXQgTmdNb2R1bGUgaW4gJHtuWzBdfSBhbmQgJHtuWzFdfS5gKX19ZWxzZSBuXy5zZXQoZSx0KX0pKG4sZSkpKSxhLmZvckVhY2goKGZ1bmN0aW9uIG0odCl7aWYoeW8odD10bih0KSkpe2NvbnN0IGU9ZV8odCwiQ29tcG9uZW50Iik7ZSYmZS5lbnRyeUNvbXBvbmVudHMmJm1yKGUuZW50cnlDb21wb25lbnRzLGcpfX0pKTtjb25zdCBmPWVfKHQsIk5nTW9kdWxlIik7aWYoZiYmKGYuaW1wb3J0cyYmcHIoZi5pbXBvcnRzKS5tYXAodF8pLmZvckVhY2goKGU9PntoKGUsdCksJHkoZSwhMSx0KX0pKSxmLmJvb3RzdHJhcCYmbXIoZi5ib290c3RyYXAsKGZ1bmN0aW9uIHUodCl7eW8odD10bih0KSl8fGkucHVzaChgJHtzbih0KX0gY2Fubm90IGJlIHVzZWQgYXMgYW4gZW50cnkgY29tcG9uZW50LmApfSkpLGYuYm9vdHN0cmFwJiZtcihmLmJvb3RzdHJhcCxnKSxmLmVudHJ5Q29tcG9uZW50cyYmbXIoZi5lbnRyeUNvbXBvbmVudHMsZykpLGkubGVuZ3RoKXRocm93IG5ldyBFcnJvcihpLmpvaW4oIlxuIikpO2Z1bmN0aW9uIGcodCl7dD10bih0KTtuXy5nZXQodCl8fGkucHVzaChgQ29tcG9uZW50ICR7c24odCl9IGlzIG5vdCBwYXJ0IG9mIGFueSBOZ01vZHVsZSBvciB0aGUgbW9kdWxlIGhhcyBub3QgYmVlbiBpbXBvcnRlZCBpbnRvIHlvdXIgbW9kdWxlLmApfWZ1bmN0aW9uIGgodCxlKXtpZih5byh0PXRuKHQpKXx8X28odCkpdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIGRpcmVjdGl2ZSAnJHt0Lm5hbWV9JyBpbXBvcnRlZCBieSB0aGUgbW9kdWxlICcke2UubmFtZX0nLiBQbGVhc2UgYWRkIGFuIEBOZ01vZHVsZSBhbm5vdGF0aW9uLmApO2lmKENvKHQpKXRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCBwaXBlICcke3QubmFtZX0nIGltcG9ydGVkIGJ5IHRoZSBtb2R1bGUgJyR7ZS5uYW1lfScuIFBsZWFzZSBhZGQgYW4gQE5nTW9kdWxlIGFubm90YXRpb24uYCl9fWZ1bmN0aW9uIHRfKHQpe3JldHVybih0PXRuKHQpKS5uZ01vZHVsZXx8dH1mdW5jdGlvbiBlXyh0LGUpe2xldCBuPW51bGw7cmV0dXJuIG8odC5fX2Fubm90YXRpb25zX18pLG8odC5kZWNvcmF0b3JzKSxuO2Z1bmN0aW9uIG8odCl7dCYmdC5mb3JFYWNoKGkpfWZ1bmN0aW9uIGkodCl7aWYoIW4pe2lmKE9iamVjdC5nZXRQcm90b3R5cGVPZih0KS5uZ01ldGFkYXRhTmFtZT09ZSluPXQ7ZWxzZSBpZih0LnR5cGUpe09iamVjdC5nZXRQcm90b3R5cGVPZih0LnR5cGUpLm5nTWV0YWRhdGFOYW1lPT1lJiYobj10LmFyZ3NbMF0pfX19fWxldCBuXz1uZXcgV2Vha01hcCxvXz1uZXcgV2Vha01hcDtmdW5jdGlvbiBpXyh0KXtyZXR1cm5bLi4ucHIoU2woTW8odD10bih0KSwhMCkuZXhwb3J0cykubWFwKCh0PT5Nbyh0KT8oJHkodCwhMSksaV8odCkpOnQpKSldfWZ1bmN0aW9uIGFfKHQsZSl7Y29uc3Qgbj1wcihlLmRlY2xhcmF0aW9uc3x8UW4pLG89c18odCk7bi5mb3JFYWNoKChlPT57aWYoZS5oYXNPd25Qcm9wZXJ0eSgkbikpe3JfKHlvKGUpLG8pfWVsc2UgZS5oYXNPd25Qcm9wZXJ0eSh0byl8fGUuaGFzT3duUHJvcGVydHkoZW8pfHwoZS5uZ1NlbGVjdG9yU2NvcGU9dCl9KSl9ZnVuY3Rpb24gcl8odCxlKXt0LmRpcmVjdGl2ZURlZnM9KCk9PkFycmF5LmZyb20oZS5jb21waWxhdGlvbi5kaXJlY3RpdmVzKS5tYXAoKHQ9PnQuaGFzT3duUHJvcGVydHkoJG4pP3lvKHQpOl9vKHQpKSkuZmlsdGVyKCh0PT4hIXQpKSx0LnBpcGVEZWZzPSgpPT5BcnJheS5mcm9tKGUuY29tcGlsYXRpb24ucGlwZXMpLm1hcCgodD0+Q28odCkpKSx0LnNjaGVtYXM9ZS5zY2hlbWFzLHQudFZpZXc9bnVsbH1mdW5jdGlvbiBzXyh0KXtpZighY18odCkpdGhyb3cgbmV3IEVycm9yKGAke3QubmFtZX0gZG9lcyBub3QgaGF2ZSBhIG1vZHVsZSBkZWYgKMm1bW9kIHByb3BlcnR5KWApO2NvbnN0IGU9TW8odCk7aWYobnVsbCE9PWUudHJhbnNpdGl2ZUNvbXBpbGVTY29wZXMpcmV0dXJuIGUudHJhbnNpdGl2ZUNvbXBpbGVTY29wZXM7Y29uc3Qgbj17c2NoZW1hczplLnNjaGVtYXN8fG51bGwsY29tcGlsYXRpb246e2RpcmVjdGl2ZXM6bmV3IFNldCxwaXBlczpuZXcgU2V0fSxleHBvcnRlZDp7ZGlyZWN0aXZlczpuZXcgU2V0LHBpcGVzOm5ldyBTZXR9fTtyZXR1cm4gU2woZS5pbXBvcnRzKS5mb3JFYWNoKCh0PT57Y29uc3QgZT10O2lmKCFjXyhlKSl0aHJvdyBuZXcgRXJyb3IoYEltcG9ydGluZyAke2UubmFtZX0gd2hpY2ggZG9lcyBub3QgaGF2ZSBhIMm1bW9kIHByb3BlcnR5YCk7Y29uc3Qgbz1zXyhlKTtvLmV4cG9ydGVkLmRpcmVjdGl2ZXMuZm9yRWFjaCgodD0+bi5jb21waWxhdGlvbi5kaXJlY3RpdmVzLmFkZCh0KSkpLG8uZXhwb3J0ZWQucGlwZXMuZm9yRWFjaCgodD0+bi5jb21waWxhdGlvbi5waXBlcy5hZGQodCkpKX0pKSxTbChlLmRlY2xhcmF0aW9ucykuZm9yRWFjaCgodD0+e0NvKHQpP24uY29tcGlsYXRpb24ucGlwZXMuYWRkKHQpOm4uY29tcGlsYXRpb24uZGlyZWN0aXZlcy5hZGQodCl9KSksU2woZS5leHBvcnRzKS5mb3JFYWNoKCh0PT57Y29uc3QgZT10O2lmKGNfKGUpKXtjb25zdCB0PXNfKGUpO3QuZXhwb3J0ZWQuZGlyZWN0aXZlcy5mb3JFYWNoKCh0PT57bi5jb21waWxhdGlvbi5kaXJlY3RpdmVzLmFkZCh0KSxuLmV4cG9ydGVkLmRpcmVjdGl2ZXMuYWRkKHQpfSkpLHQuZXhwb3J0ZWQucGlwZXMuZm9yRWFjaCgodD0+e24uY29tcGlsYXRpb24ucGlwZXMuYWRkKHQpLG4uZXhwb3J0ZWQucGlwZXMuYWRkKHQpfSkpfWVsc2UgQ28oZSk/bi5leHBvcnRlZC5waXBlcy5hZGQoZSk6bi5leHBvcnRlZC5kaXJlY3RpdmVzLmFkZChlKX0pKSxlLnRyYW5zaXRpdmVDb21waWxlU2NvcGVzPW4sbn1mdW5jdGlvbiBsXyh0KXtyZXR1cm4oZnVuY3Rpb24gZSh0KXtyZXR1cm4gdm9pZCAwIT09dC5uZ01vZHVsZX0pKHQpP3QubmdNb2R1bGU6dH1mdW5jdGlvbiBjXyh0KXtyZXR1cm4hIU1vKHQpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9sZXQgZF89MDtmdW5jdGlvbiBwXyh0LGUpe2xldCBuPW51bGw7Zl8odCxlfHx7fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsdG8se2dldDooKT0+e2lmKG51bGw9PT1uKXtjb25zdCBvPW1fKHQsZXx8e30pLGk9bHIoe3VzYWdlOjAsa2luZDoiZGlyZWN0aXZlIix0eXBlOnR9KTtuPWkuY29tcGlsZURpcmVjdGl2ZShaeSxvLnNvdXJjZU1hcFVybCxvLm1ldGFkYXRhKX1yZXR1cm4gbn0sY29uZmlndXJhYmxlOiEhbmdEZXZNb2RlfSl9ZnVuY3Rpb24gbV8odCxlKXtjb25zdCBuPXQmJnQubmFtZSxvPWBuZzovLy8ke259L8m1ZGlyLmpzYCxpPWxyKHt1c2FnZTowLGtpbmQ6ImRpcmVjdGl2ZSIsdHlwZTp0fSksYT1nXyh0LGUpO3JldHVybiBhLnR5cGVTb3VyY2VTcGFuPWkuY3JlYXRlUGFyc2VTb3VyY2VTcGFuKCJEaXJlY3RpdmUiLG4sbyksYS51c2VzSW5oZXJpdGFuY2UmJmhfKHQpLHttZXRhZGF0YTphLHNvdXJjZU1hcFVybDpvfX1mdW5jdGlvbiBmXyh0LGUpe2xldCBuPW51bGw7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsaW8se2dldDooKT0+e2lmKG51bGw9PT1uKXtjb25zdCBvPW1fKHQsZSksaT1scih7dXNhZ2U6MCxraW5kOiJkaXJlY3RpdmUiLHR5cGU6dH0pO249aS5jb21waWxlRmFjdG9yeShaeSxgbmc6Ly8vJHt0Lm5hbWV9L8m1ZmFjLmpzYCx7bmFtZTpvLm1ldGFkYXRhLm5hbWUsdHlwZTpvLm1ldGFkYXRhLnR5cGUsdHlwZUFyZ3VtZW50Q291bnQ6MCxkZXBzOllyKHQpLHRhcmdldDppLkZhY3RvcnlUYXJnZXQuRGlyZWN0aXZlfSl9cmV0dXJuIG59LGNvbmZpZ3VyYWJsZTohIW5nRGV2TW9kZX0pfWZ1bmN0aW9uIHVfKHQpe3JldHVybiBPYmplY3QuZ2V0UHJvdG90eXBlT2YodC5wcm90b3R5cGUpPT09T2JqZWN0LnByb3RvdHlwZX1mdW5jdGlvbiBnXyh0LGUpe2NvbnN0IG49R3IoKSxvPW4ub3duUHJvcE1ldGFkYXRhKHQpO3JldHVybntuYW1lOnQubmFtZSx0eXBlOnQsc2VsZWN0b3I6dm9pZCAwIT09ZS5zZWxlY3Rvcj9lLnNlbGVjdG9yOm51bGwsaG9zdDplLmhvc3R8fEpuLHByb3BNZXRhZGF0YTpvLGlucHV0czplLmlucHV0c3x8UW4sb3V0cHV0czplLm91dHB1dHN8fFFuLHF1ZXJpZXM6X18odCxvLENfKSxsaWZlY3ljbGU6e3VzZXNPbkNoYW5nZXM6bi5oYXNMaWZlY3ljbGVIb29rKHQsIm5nT25DaGFuZ2VzIil9LHR5cGVTb3VyY2VTcGFuOm51bGwsdXNlc0luaGVyaXRhbmNlOiF1Xyh0KSxleHBvcnRBczooaT1lLmV4cG9ydEFzLHZvaWQgMD09PWk/bnVsbDp4XyhpKSkscHJvdmlkZXJzOmUucHJvdmlkZXJzfHxudWxsLHZpZXdRdWVyaWVzOl9fKHQsbyxNXyl9O3ZhciBpfWZ1bmN0aW9uIGhfKHQpe2NvbnN0IGU9T2JqZWN0LnByb3RvdHlwZTtsZXQgbj1PYmplY3QuZ2V0UHJvdG90eXBlT2YodC5wcm90b3R5cGUpLmNvbnN0cnVjdG9yO2Zvcig7biYmbiE9PWU7KV9vKG4pfHx5byhuKXx8IVBfKG4pfHxwXyhuLG51bGwpLG49T2JqZWN0LmdldFByb3RvdHlwZU9mKG4pfWZ1bmN0aW9uIGJfKHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdD94Xyh0KTp0bih0KX1mdW5jdGlvbiB5Xyh0LGUpe3JldHVybntwcm9wZXJ0eU5hbWU6dCxwcmVkaWNhdGU6Yl8oZS5zZWxlY3RvciksZGVzY2VuZGFudHM6ZS5kZXNjZW5kYW50cyxmaXJzdDplLmZpcnN0LHJlYWQ6ZS5yZWFkP2UucmVhZDpudWxsLHN0YXRpYzohIWUuc3RhdGljLGVtaXREaXN0aW5jdENoYW5nZXNPbmx5OiEhZS5lbWl0RGlzdGluY3RDaGFuZ2VzT25seX19ZnVuY3Rpb24gX18odCxlLG4pe2NvbnN0IG89W107Zm9yKGNvbnN0IGkgaW4gZSlpZihlLmhhc093blByb3BlcnR5KGkpKXtjb25zdCBhPWVbaV07YS5mb3JFYWNoKChlPT57aWYobihlKSl7aWYoIWUuc2VsZWN0b3IpdGhyb3cgbmV3IEVycm9yKGBDYW4ndCBjb25zdHJ1Y3QgYSBxdWVyeSBmb3IgdGhlIHByb3BlcnR5ICIke2l9IiBvZiAiJHtzbih0KX0iIHNpbmNlIHRoZSBxdWVyeSBzZWxlY3RvciB3YXNuJ3QgZGVmaW5lZC5gKTtpZihhLnNvbWUodl8pKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IGNvbWJpbmUgQElucHV0IGRlY29yYXRvcnMgd2l0aCBxdWVyeSBkZWNvcmF0b3JzIik7by5wdXNoKHlfKGksZSkpfX0pKX1yZXR1cm4gb31mdW5jdGlvbiBDXyh0KXtjb25zdCBlPXQubmdNZXRhZGF0YU5hbWU7cmV0dXJuIkNvbnRlbnRDaGlsZCI9PT1lfHwiQ29udGVudENoaWxkcmVuIj09PWV9ZnVuY3Rpb24gTV8odCl7Y29uc3QgZT10Lm5nTWV0YWRhdGFOYW1lO3JldHVybiJWaWV3Q2hpbGQiPT09ZXx8IlZpZXdDaGlsZHJlbiI9PT1lfWZ1bmN0aW9uIHZfKHQpe3JldHVybiJJbnB1dCI9PT10Lm5nTWV0YWRhdGFOYW1lfWZ1bmN0aW9uIHhfKHQpe3JldHVybiB0LnNwbGl0KCIsIikubWFwKCh0PT50LnRyaW0oKSkpfWNvbnN0IE9fPVsibmdPbkNoYW5nZXMiLCJuZ09uSW5pdCIsIm5nT25EZXN0cm95IiwibmdEb0NoZWNrIiwibmdBZnRlclZpZXdJbml0IiwibmdBZnRlclZpZXdDaGVja2VkIiwibmdBZnRlckNvbnRlbnRJbml0IiwibmdBZnRlckNvbnRlbnRDaGVja2VkIl07ZnVuY3Rpb24gUF8odCl7Y29uc3QgZT1HcigpO2lmKE9fLnNvbWUoKG49PmUuaGFzTGlmZWN5Y2xlSG9vayh0LG4pKSkpcmV0dXJuITA7Y29uc3Qgbj1lLnByb3BNZXRhZGF0YSh0KTtmb3IoY29uc3QgdCBpbiBuKXtjb25zdCBlPW5bdF07Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0Kyspe2NvbnN0IG49ZVt0XSxvPW4ubmdNZXRhZGF0YU5hbWU7aWYodl8obil8fENfKG4pfHxNXyhuKXx8Ik91dHB1dCI9PT1vfHwiSG9zdEJpbmRpbmciPT09b3x8Ikhvc3RMaXN0ZW5lciI9PT1vKXJldHVybiEwfX1yZXR1cm4hMX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gd18odCxlKXtyZXR1cm57dHlwZTp0LG5hbWU6dC5uYW1lLHBpcGVOYW1lOmUubmFtZSxwdXJlOnZvaWQgMD09PWUucHVyZXx8ZS5wdXJlfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3Qga189WGEoIkRpcmVjdGl2ZSIsKCh0PXt9KT0+dCksdm9pZCAwLHZvaWQgMCwoKHQsZSk9PklfKHQsZSkpKSxTXz1YYSgiQ29tcG9uZW50IiwoKHQ9e30pPT5PYmplY3QuYXNzaWduKHtjaGFuZ2VEZXRlY3Rpb246am4uRGVmYXVsdH0sdCkpLGtfLHZvaWQgMCwoKHQsZSk9Pk5fKHQsZSkpKSxEXz1YYSgiUGlwZSIsKHQ9Pk9iamVjdC5hc3NpZ24oe3B1cmU6ITB9LHQpKSx2b2lkIDAsdm9pZCAwLCgodCxlKT0+SF8odCxlKSkpLFJfPVFhKCJJbnB1dCIsKHQ9Pih7YmluZGluZ1Byb3BlcnR5TmFtZTp0fSkpKSxFXz1RYSgiT3V0cHV0IiwodD0+KHtiaW5kaW5nUHJvcGVydHlOYW1lOnR9KSkpLEFfPVFhKCJIb3N0QmluZGluZyIsKHQ9Pih7aG9zdFByb3BlcnR5TmFtZTp0fSkpKSxUXz1RYSgiSG9zdExpc3RlbmVyIiwoKHQsZSk9Pih7ZXZlbnROYW1lOnQsYXJnczplfSkpKSxOXz1mdW5jdGlvbiB6Xyh0LGUpeygidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmS24oKTtsZXQgbj1udWxsOyEoZnVuY3Rpb24gbyh0LGUpe0pyKGUpJiYoWHIuc2V0KHQsZSksS3IuYWRkKHQpKX0pKHQsZSksZl8odCxlKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwkbix7Z2V0OigpPT57aWYobnVsbD09PW4pe2NvbnN0IG89bHIoe3VzYWdlOjAsa2luZDoiY29tcG9uZW50Iix0eXBlOnR9KTtpZihKcihlKSl7Y29uc3Qgbj1bYENvbXBvbmVudCAnJHt0Lm5hbWV9JyBpcyBub3QgcmVzb2x2ZWQ6YF07dGhyb3cgZS50ZW1wbGF0ZVVybCYmbi5wdXNoKGAgLSB0ZW1wbGF0ZVVybDogJHtlLnRlbXBsYXRlVXJsfWApLGUuc3R5bGVVcmxzJiZlLnN0eWxlVXJscy5sZW5ndGgmJm4ucHVzaChgIC0gc3R5bGVVcmxzOiAke0pTT04uc3RyaW5naWZ5KGUuc3R5bGVVcmxzKX1gKSxuLnB1c2goIkRpZCB5b3UgcnVuIGFuZCB3YWl0IGZvciAncmVzb2x2ZUNvbXBvbmVudFJlc291cmNlcygpJz8iKSxuZXcgRXJyb3Iobi5qb2luKCJcbiIpKX1jb25zdCBpPShmdW5jdGlvbiBvKCl7cmV0dXJuIFh5fSkoKTtsZXQgYT1lLnByZXNlcnZlV2hpdGVzcGFjZXM7dm9pZCAwPT09YSYmKGE9bnVsbCE9PWkmJnZvaWQgMCE9PWkucHJlc2VydmVXaGl0ZXNwYWNlcyYmaS5wcmVzZXJ2ZVdoaXRlc3BhY2VzKTtsZXQgcj1lLmVuY2Fwc3VsYXRpb247dm9pZCAwPT09ciYmKHI9bnVsbCE9PWkmJnZvaWQgMCE9PWkuZGVmYXVsdEVuY2Fwc3VsYXRpb24/aS5kZWZhdWx0RW5jYXBzdWxhdGlvbjpXbi5FbXVsYXRlZCk7Y29uc3Qgcz1lLnRlbXBsYXRlVXJsfHxgbmc6Ly8vJHt0Lm5hbWV9L3RlbXBsYXRlLmh0bWxgLGw9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGdfKHQsZSkpLHt0eXBlU291cmNlU3BhbjpvLmNyZWF0ZVBhcnNlU291cmNlU3BhbigiQ29tcG9uZW50Iix0Lm5hbWUscyksdGVtcGxhdGU6ZS50ZW1wbGF0ZXx8IiIscHJlc2VydmVXaGl0ZXNwYWNlczphLHN0eWxlczplLnN0eWxlc3x8UW4sYW5pbWF0aW9uczplLmFuaW1hdGlvbnMsZGlyZWN0aXZlczpbXSxjaGFuZ2VEZXRlY3Rpb246ZS5jaGFuZ2VEZXRlY3Rpb24scGlwZXM6bmV3IE1hcCxlbmNhcHN1bGF0aW9uOnIsaW50ZXJwb2xhdGlvbjplLmludGVycG9sYXRpb24sdmlld1Byb3ZpZGVyczplLnZpZXdQcm92aWRlcnN8fG51bGx9KTtkXysrO3RyeXtsLnVzZXNJbmhlcml0YW5jZSYmaF8odCksbj1vLmNvbXBpbGVDb21wb25lbnQoWnkscyxsKX1maW5hbGx5e2RfLS19aWYoMD09PWRfJiYoZnVuY3Rpb24gaSgpe2lmKCFKeSl7Snk9ITA7dHJ5e2ZvcihsZXQgdD1LeS5sZW5ndGgtMTt0Pj0wO3QtLSl7Y29uc3R7bW9kdWxlVHlwZTplLG5nTW9kdWxlOm59PUt5W3RdO24uZGVjbGFyYXRpb25zJiZuLmRlY2xhcmF0aW9ucy5ldmVyeShReSkmJihLeS5zcGxpY2UodCwxKSxhXyhlLG4pKX19ZmluYWxseXtKeT0hMX19fSkoKSwoZnVuY3Rpb24gYSh0KXtyZXR1cm4gdm9pZCAwIT09dC5uZ1NlbGVjdG9yU2NvcGV9KSh0KSl7Y29uc3QgZT1zXyh0Lm5nU2VsZWN0b3JTY29wZSk7cl8obixlKX19cmV0dXJuIG59LGNvbmZpZ3VyYWJsZTohIW5nRGV2TW9kZX0pfSxJXz1wXyxIXz1mdW5jdGlvbiBGXyh0LGUpe2xldCBuPW51bGwsbz1udWxsO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGlvLHtnZXQ6KCk9PntpZihudWxsPT09byl7Y29uc3Qgbj13Xyh0LGUpLGk9bHIoe3VzYWdlOjAsa2luZDoicGlwZSIsdHlwZTpuLnR5cGV9KTtvPWkuY29tcGlsZUZhY3RvcnkoWnksYG5nOi8vLyR7bi5uYW1lfS/JtWZhYy5qc2Ase25hbWU6bi5uYW1lLHR5cGU6bi50eXBlLHR5cGVBcmd1bWVudENvdW50OjAsZGVwczpZcih0KSx0YXJnZXQ6aS5GYWN0b3J5VGFyZ2V0LlBpcGV9KX1yZXR1cm4gb30sY29uZmlndXJhYmxlOiEhbmdEZXZNb2RlfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZW8se2dldDooKT0+e2lmKG51bGw9PT1uKXtjb25zdCBvPXdfKHQsZSksaT1scih7dXNhZ2U6MCxraW5kOiJwaXBlIix0eXBlOm8udHlwZX0pO249aS5jb21waWxlUGlwZShaeSxgbmc6Ly8vJHtvLm5hbWV9L8m1cGlwZS5qc2Asbyl9cmV0dXJuIG59LGNvbmZpZ3VyYWJsZTohIW5nRGV2TW9kZX0pfSxMXz1YYSgiTmdNb2R1bGUiLCh0PT50KSx2b2lkIDAsdm9pZCAwLCgodCxlKT0+Ql8odCxlKSkpLEJfPWZ1bmN0aW9uIFZfKHQsZT17fSl7IShmdW5jdGlvbiBuKHQsZSxvPSExKXtuZ0Rldk1vZGUmJnhuKHQsIlJlcXVpcmVkIHZhbHVlIG1vZHVsZVR5cGUiKSxuZ0Rldk1vZGUmJnhuKGUsIlJlcXVpcmVkIHZhbHVlIG5nTW9kdWxlIik7Y29uc3QgaT1wcihlLmRlY2xhcmF0aW9uc3x8UW4pO2xldCBhPW51bGw7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsbm8se2NvbmZpZ3VyYWJsZTohMCxnZXQ6KCk9PntpZihudWxsPT09YSl7aWYobmdEZXZNb2RlJiZlLmltcG9ydHMmJmUuaW1wb3J0cy5pbmRleE9mKHQpPi0xKXRocm93IG5ldyBFcnJvcihgJyR7c24odCl9JyBtb2R1bGUgY2FuJ3QgaW1wb3J0IGl0c2VsZmApO2NvbnN0IG49bHIoe3VzYWdlOjAsa2luZDoiTmdNb2R1bGUiLHR5cGU6dH0pO2E9bi5jb21waWxlTmdNb2R1bGUoWnksYG5nOi8vLyR7dC5uYW1lfS/JtW1vZC5qc2Ase3R5cGU6dCxib290c3RyYXA6cHIoZS5ib290c3RyYXB8fFFuKS5tYXAodG4pLGRlY2xhcmF0aW9uczppLm1hcCh0biksaW1wb3J0czpwcihlLmltcG9ydHN8fFFuKS5tYXAodG4pLm1hcChsXyksZXhwb3J0czpwcihlLmV4cG9ydHN8fFFuKS5tYXAodG4pLm1hcChsXyksc2NoZW1hczplLnNjaGVtYXM/cHIoZS5zY2hlbWFzKTpudWxsLGlkOmUuaWR8fG51bGx9KSxhLnNjaGVtYXN8fChhLnNjaGVtYXM9W10pfXJldHVybiBhfX0pO2xldCByPW51bGw7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsaW8se2dldDooKT0+e2lmKG51bGw9PT1yKXtjb25zdCBlPWxyKHt1c2FnZTowLGtpbmQ6Ik5nTW9kdWxlIix0eXBlOnR9KTtyPWUuY29tcGlsZUZhY3RvcnkoWnksYG5nOi8vLyR7dC5uYW1lfS/JtWZhYy5qc2Ase25hbWU6dC5uYW1lLHR5cGU6dCxkZXBzOllyKHQpLHRhcmdldDplLkZhY3RvcnlUYXJnZXQuTmdNb2R1bGUsdHlwZUFyZ3VtZW50Q291bnQ6MH0pfXJldHVybiByfSxjb25maWd1cmFibGU6ISFuZ0Rldk1vZGV9KTtsZXQgcz1udWxsO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LE5uLHtnZXQ6KCk9PntpZihudWxsPT09cyl7bmdEZXZNb2RlJiYkeSh0LG8pO2NvbnN0IG49e25hbWU6dC5uYW1lLHR5cGU6dCxwcm92aWRlcnM6ZS5wcm92aWRlcnN8fFFuLGltcG9ydHM6WyhlLmltcG9ydHN8fFFuKS5tYXAodG4pLChlLmV4cG9ydHN8fFFuKS5tYXAodG4pXX0saT1scih7dXNhZ2U6MCxraW5kOiJOZ01vZHVsZSIsdHlwZTp0fSk7cz1pLmNvbXBpbGVJbmplY3RvcihaeSxgbmc6Ly8vJHt0Lm5hbWV9L8m1aW5qLmpzYCxuKX1yZXR1cm4gc30sY29uZmlndXJhYmxlOiEhbmdEZXZNb2RlfSl9KSh0LGUpLChmdW5jdGlvbiBvKHQsZSl7S3kucHVzaCh7bW9kdWxlVHlwZTp0LG5nTW9kdWxlOmV9KX0pKHQsZSl9LGpfPW5ldyBlcigiQXBwbGljYXRpb24gSW5pdGlhbGl6ZXIiKTtjbGFzcyBVX3tjb25zdHJ1Y3Rvcih0KXt0aGlzLmFwcEluaXRzPXQsdGhpcy5yZXNvbHZlPVloLHRoaXMucmVqZWN0PVloLHRoaXMuaW5pdGlhbGl6ZWQ9ITEsdGhpcy5kb25lPSExLHRoaXMuZG9uZVByb21pc2U9bmV3IFByb21pc2UoKCh0LGUpPT57dGhpcy5yZXNvbHZlPXQsdGhpcy5yZWplY3Q9ZX0pKX1ydW5Jbml0aWFsaXplcnMoKXtpZih0aGlzLmluaXRpYWxpemVkKXJldHVybjtjb25zdCB0PVtdLGU9KCk9Pnt0aGlzLmRvbmU9ITAsdGhpcy5yZXNvbHZlKCl9O2lmKHRoaXMuYXBwSW5pdHMpZm9yKGxldCBlPTA7ZTx0aGlzLmFwcEluaXRzLmxlbmd0aDtlKyspe2NvbnN0IG49dGhpcy5hcHBJbml0c1tlXSgpO2lmKGtmKG4pKXQucHVzaChuKTtlbHNlIGlmKERmKG4pKXtjb25zdCBlPW5ldyBQcm9taXNlKCgodCxlKT0+e24uc3Vic2NyaWJlKHtjb21wbGV0ZTp0LGVycm9yOmV9KX0pKTt0LnB1c2goZSl9fVByb21pc2UuYWxsKHQpLnRoZW4oKCgpPT57ZSgpfSkpLmNhdGNoKCh0PT57dGhpcy5yZWplY3QodCl9KSksMD09PXQubGVuZ3RoJiZlKCksdGhpcy5pbml0aWFsaXplZD0hMH19VV8uybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFVfKShUcihqXyw4KSl9LFVfLsm1cHJvdj1Tbih7dG9rZW46VV8sZmFjdG9yeTpVXy7JtWZhY30pLFVfLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W2pfXX0se3R5cGU6QnJ9XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoVV8sW3t0eXBlOlVtfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltqX119LHt0eXBlOkJyfV19XX0pLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgV189bmV3IGVyKCJBcHBJZCIpO2NvbnN0IEdfPXtwcm92aWRlOldfLHVzZUZhY3Rvcnk6ZnVuY3Rpb24gWV8oKXtyZXR1cm5gJHtxXygpfSR7cV8oKX0ke3FfKCl9YH0sZGVwczpbXX07ZnVuY3Rpb24gcV8oKXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZSg5NytNYXRoLmZsb29yKDI1Kk1hdGgucmFuZG9tKCkpKX1jb25zdCBaXz1uZXcgZXIoIlBsYXRmb3JtIEluaXRpYWxpemVyIiksWF89bmV3IGVyKCJQbGF0Zm9ybSBJRCIpLEtfPW5ldyBlcigiYXBwQm9vdHN0cmFwTGlzdGVuZXIiKTtuZXcgZXIoIkFwcGxpY2F0aW9uIFBhY2thZ2VzIFJvb3QgVVJMIik7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBKX3tsb2codCl7Y29uc29sZS5sb2codCl9d2Fybih0KXtjb25zb2xlLndhcm4odCl9fUpfLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxKXyl9LEpfLsm1cHJvdj1Tbih7dG9rZW46Sl8sZmFjdG9yeTpKXy7JtWZhY30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoSl8sW3t0eXBlOlVtfV0sbnVsbCxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IFFfPW5ldyBlcigiTG9jYWxlSWQiKSwkXz1uZXcgZXIoIkRlZmF1bHRDdXJyZW5jeUNvZGUiKTt2YXIgdEM7bmV3IGVyKCJUcmFuc2xhdGlvbnMiKSxuZXcgZXIoIlRyYW5zbGF0aW9uc0Zvcm1hdCIpLChmdW5jdGlvbih0KXt0W3QuRXJyb3I9MF09IkVycm9yIix0W3QuV2FybmluZz0xXT0iV2FybmluZyIsdFt0Lklnbm9yZT0yXT0iSWdub3JlIn0pKHRDfHwodEM9e30pKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIGVDe2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5uZ01vZHVsZUZhY3Rvcnk9dCx0aGlzLmNvbXBvbmVudEZhY3Rvcmllcz1lfX1jb25zdCBuQz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IG55KHQpfSxvQz1uQyxpQz1mdW5jdGlvbih0KXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG5DKHQpKX0sYUM9ZnVuY3Rpb24odCl7Y29uc3QgZT1uQyh0KSxuPVNsKE1vKHQpLmRlY2xhcmF0aW9ucykucmVkdWNlKCgodCxlKT0+e2NvbnN0IG49eW8oZSk7cmV0dXJuIG4mJnQucHVzaChuZXcgS2IobikpLHR9KSxbXSk7cmV0dXJuIG5ldyBlQyhlLG4pfSxyQz1hQyxzQz1mdW5jdGlvbih0KXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGFDKHQpKX07Y2xhc3MgbEN7Y29uc3RydWN0b3IoKXt0aGlzLmNvbXBpbGVNb2R1bGVTeW5jPW9DLHRoaXMuY29tcGlsZU1vZHVsZUFzeW5jPWlDLHRoaXMuY29tcGlsZU1vZHVsZUFuZEFsbENvbXBvbmVudHNTeW5jPXJDLHRoaXMuY29tcGlsZU1vZHVsZUFuZEFsbENvbXBvbmVudHNBc3luYz1zQ31jbGVhckNhY2hlKCl7fWNsZWFyQ2FjaGVGb3IodCl7fWdldE1vZHVsZUlkKHQpe319bEMuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGxDKX0sbEMuybVwcm92PVNuKHt0b2tlbjpsQyxmYWN0b3J5OmxDLsm1ZmFjfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihsQyxbe3R5cGU6VW19XSwoZnVuY3Rpb24oKXtyZXR1cm5bXX0pLG51bGwpO2NvbnN0IGNDPW5ldyBlcigiY29tcGlsZXJPcHRpb25zIiksZEM9UHJvbWlzZS5yZXNvbHZlKDApOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBwQyh0KXsidW5kZWZpbmVkIj09dHlwZW9mIFpvbmU/ZEMudGhlbigoKCk9Pnt0JiZ0LmFwcGx5KG51bGwsbnVsbCl9KSk6Wm9uZS5jdXJyZW50LnNjaGVkdWxlTWljcm9UYXNrKCJzY2hlZHVsZU1pY3JvdGFzayIsdCl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgbUN7Y29uc3RydWN0b3Ioe2VuYWJsZUxvbmdTdGFja1RyYWNlOnQ9ITEsc2hvdWxkQ29hbGVzY2VFdmVudENoYW5nZURldGVjdGlvbjplPSExLHNob3VsZENvYWxlc2NlUnVuQ2hhbmdlRGV0ZWN0aW9uOm49ITF9KXtpZih0aGlzLmhhc1BlbmRpbmdNYWNyb3Rhc2tzPSExLHRoaXMuaGFzUGVuZGluZ01pY3JvdGFza3M9ITEsdGhpcy5pc1N0YWJsZT0hMCx0aGlzLm9uVW5zdGFibGU9bmV3IFN5KCExKSx0aGlzLm9uTWljcm90YXNrRW1wdHk9bmV3IFN5KCExKSx0aGlzLm9uU3RhYmxlPW5ldyBTeSghMSksdGhpcy5vbkVycm9yPW5ldyBTeSghMSksInVuZGVmaW5lZCI9PXR5cGVvZiBab25lKXRocm93IG5ldyBFcnJvcigiSW4gdGhpcyBjb25maWd1cmF0aW9uIEFuZ3VsYXIgcmVxdWlyZXMgWm9uZS5qcyIpO1pvbmUuYXNzZXJ0Wm9uZVBhdGNoZWQoKTtjb25zdCBvPXRoaXM7by5fbmVzdGluZz0wLG8uX291dGVyPW8uX2lubmVyPVpvbmUuY3VycmVudCxab25lLlRhc2tUcmFja2luZ1pvbmVTcGVjJiYoby5faW5uZXI9by5faW5uZXIuZm9yayhuZXcgWm9uZS5UYXNrVHJhY2tpbmdab25lU3BlYykpLHQmJlpvbmUubG9uZ1N0YWNrVHJhY2Vab25lU3BlYyYmKG8uX2lubmVyPW8uX2lubmVyLmZvcmsoWm9uZS5sb25nU3RhY2tUcmFjZVpvbmVTcGVjKSksby5zaG91bGRDb2FsZXNjZUV2ZW50Q2hhbmdlRGV0ZWN0aW9uPSFuJiZlLG8uc2hvdWxkQ29hbGVzY2VSdW5DaGFuZ2VEZXRlY3Rpb249bixvLmxhc3RSZXF1ZXN0QW5pbWF0aW9uRnJhbWVJZD0tMSxvLm5hdGl2ZVJlcXVlc3RBbmltYXRpb25GcmFtZT0oZnVuY3Rpb24gaSgpe2xldCB0PVhuLnJlcXVlc3RBbmltYXRpb25GcmFtZSxlPVhuLmNhbmNlbEFuaW1hdGlvbkZyYW1lO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgWm9uZSYmdCYmZSl7Y29uc3Qgbj10W1pvbmUuX19zeW1ib2xfXygiT3JpZ2luYWxEZWxlZ2F0ZSIpXTtuJiYodD1uKTtjb25zdCBvPWVbWm9uZS5fX3N5bWJvbF9fKCJPcmlnaW5hbERlbGVnYXRlIildO28mJihlPW8pfXJldHVybntuYXRpdmVSZXF1ZXN0QW5pbWF0aW9uRnJhbWU6dCxuYXRpdmVDYW5jZWxBbmltYXRpb25GcmFtZTplfX0pKCkubmF0aXZlUmVxdWVzdEFuaW1hdGlvbkZyYW1lLChmdW5jdGlvbiBhKHQpe2NvbnN0IGU9KCk9PnshKGZ1bmN0aW9uIGUodCl7aWYodC5pc0NoZWNrU3RhYmxlUnVubmluZ3x8LTEhPT10Lmxhc3RSZXF1ZXN0QW5pbWF0aW9uRnJhbWVJZClyZXR1cm47dC5sYXN0UmVxdWVzdEFuaW1hdGlvbkZyYW1lSWQ9dC5uYXRpdmVSZXF1ZXN0QW5pbWF0aW9uRnJhbWUuY2FsbChYbiwoKCk9Pnt0LmZha2VUb3BFdmVudFRhc2t8fCh0LmZha2VUb3BFdmVudFRhc2s9Wm9uZS5yb290LnNjaGVkdWxlRXZlbnRUYXNrKCJmYWtlVG9wRXZlbnRUYXNrIiwoKCk9Pnt0Lmxhc3RSZXF1ZXN0QW5pbWF0aW9uRnJhbWVJZD0tMSxnQyh0KSx0LmlzQ2hlY2tTdGFibGVSdW5uaW5nPSEwLHVDKHQpLHQuaXNDaGVja1N0YWJsZVJ1bm5pbmc9ITF9KSx2b2lkIDAsKCgpPT57fSksKCgpPT57fSkpKSx0LmZha2VUb3BFdmVudFRhc2suaW52b2tlKCl9KSksZ0ModCl9KSh0KX07dC5faW5uZXI9dC5faW5uZXIuZm9yayh7bmFtZToiYW5ndWxhciIscHJvcGVydGllczp7aXNBbmd1bGFyWm9uZTohMH0sb25JbnZva2VUYXNrOihuLG8saSxhLHIscyk9Pnt0cnl7cmV0dXJuIGhDKHQpLG4uaW52b2tlVGFzayhpLGEscixzKX1maW5hbGx5eyh0LnNob3VsZENvYWxlc2NlRXZlbnRDaGFuZ2VEZXRlY3Rpb24mJiJldmVudFRhc2siPT09YS50eXBlfHx0LnNob3VsZENvYWxlc2NlUnVuQ2hhbmdlRGV0ZWN0aW9uKSYmZSgpLGJDKHQpfX0sb25JbnZva2U6KG4sbyxpLGEscixzLGwpPT57dHJ5e3JldHVybiBoQyh0KSxuLmludm9rZShpLGEscixzLGwpfWZpbmFsbHl7dC5zaG91bGRDb2FsZXNjZVJ1bkNoYW5nZURldGVjdGlvbiYmZSgpLGJDKHQpfX0sb25IYXNUYXNrOihlLG4sbyxpKT0+e2UuaGFzVGFzayhvLGkpLG49PT1vJiYoIm1pY3JvVGFzayI9PWkuY2hhbmdlPyh0Ll9oYXNQZW5kaW5nTWljcm90YXNrcz1pLm1pY3JvVGFzayxnQyh0KSx1Qyh0KSk6Im1hY3JvVGFzayI9PWkuY2hhbmdlJiYodC5oYXNQZW5kaW5nTWFjcm90YXNrcz1pLm1hY3JvVGFzaykpfSxvbkhhbmRsZUVycm9yOihlLG4sbyxpKT0+KGUuaGFuZGxlRXJyb3IobyxpKSx0LnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+dC5vbkVycm9yLmVtaXQoaSkpKSwhMSl9KX0pKG8pfXN0YXRpYyBpc0luQW5ndWxhclpvbmUoKXtyZXR1cm4hMD09PVpvbmUuY3VycmVudC5nZXQoImlzQW5ndWxhclpvbmUiKX1zdGF0aWMgYXNzZXJ0SW5Bbmd1bGFyWm9uZSgpe2lmKCFtQy5pc0luQW5ndWxhclpvbmUoKSl0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIGJlIGluIEFuZ3VsYXIgWm9uZSwgYnV0IGl0IGlzIG5vdCEiKX1zdGF0aWMgYXNzZXJ0Tm90SW5Bbmd1bGFyWm9uZSgpe2lmKG1DLmlzSW5Bbmd1bGFyWm9uZSgpKXRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gbm90IGJlIGluIEFuZ3VsYXIgWm9uZSwgYnV0IGl0IGlzISIpfXJ1bih0LGUsbil7cmV0dXJuIHRoaXMuX2lubmVyLnJ1bih0LGUsbil9cnVuVGFzayh0LGUsbixvKXtjb25zdCBpPXRoaXMuX2lubmVyLGE9aS5zY2hlZHVsZUV2ZW50VGFzaygiTmdab25lRXZlbnQ6ICIrbyx0LGZDLFloLFloKTt0cnl7cmV0dXJuIGkucnVuVGFzayhhLGUsbil9ZmluYWxseXtpLmNhbmNlbFRhc2soYSl9fXJ1bkd1YXJkZWQodCxlLG4pe3JldHVybiB0aGlzLl9pbm5lci5ydW5HdWFyZGVkKHQsZSxuKX1ydW5PdXRzaWRlQW5ndWxhcih0KXtyZXR1cm4gdGhpcy5fb3V0ZXIucnVuKHQpfX1jb25zdCBmQz17fTtmdW5jdGlvbiB1Qyh0KXtpZigwPT10Ll9uZXN0aW5nJiYhdC5oYXNQZW5kaW5nTWljcm90YXNrcyYmIXQuaXNTdGFibGUpdHJ5e3QuX25lc3RpbmcrKyx0Lm9uTWljcm90YXNrRW1wdHkuZW1pdChudWxsKX1maW5hbGx5e2lmKHQuX25lc3RpbmctLSwhdC5oYXNQZW5kaW5nTWljcm90YXNrcyl0cnl7dC5ydW5PdXRzaWRlQW5ndWxhcigoKCk9PnQub25TdGFibGUuZW1pdChudWxsKSkpfWZpbmFsbHl7dC5pc1N0YWJsZT0hMH19fWZ1bmN0aW9uIGdDKHQpe3QuaGFzUGVuZGluZ01pY3JvdGFza3M9ISEodC5faGFzUGVuZGluZ01pY3JvdGFza3N8fCh0LnNob3VsZENvYWxlc2NlRXZlbnRDaGFuZ2VEZXRlY3Rpb258fHQuc2hvdWxkQ29hbGVzY2VSdW5DaGFuZ2VEZXRlY3Rpb24pJiYtMSE9PXQubGFzdFJlcXVlc3RBbmltYXRpb25GcmFtZUlkKX1mdW5jdGlvbiBoQyh0KXt0Ll9uZXN0aW5nKyssdC5pc1N0YWJsZSYmKHQuaXNTdGFibGU9ITEsdC5vblVuc3RhYmxlLmVtaXQobnVsbCkpfWZ1bmN0aW9uIGJDKHQpe3QuX25lc3RpbmctLSx1Qyh0KX1jbGFzcyB5Q3tjb25zdHJ1Y3Rvcigpe3RoaXMuaGFzUGVuZGluZ01pY3JvdGFza3M9ITEsdGhpcy5oYXNQZW5kaW5nTWFjcm90YXNrcz0hMSx0aGlzLmlzU3RhYmxlPSEwLHRoaXMub25VbnN0YWJsZT1uZXcgU3ksdGhpcy5vbk1pY3JvdGFza0VtcHR5PW5ldyBTeSx0aGlzLm9uU3RhYmxlPW5ldyBTeSx0aGlzLm9uRXJyb3I9bmV3IFN5fXJ1bih0LGUsbil7cmV0dXJuIHQuYXBwbHkoZSxuKX1ydW5HdWFyZGVkKHQsZSxuKXtyZXR1cm4gdC5hcHBseShlLG4pfXJ1bk91dHNpZGVBbmd1bGFyKHQpe3JldHVybiB0KCl9cnVuVGFzayh0LGUsbixvKXtyZXR1cm4gdC5hcHBseShlLG4pfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgX0N7Y29uc3RydWN0b3IodCl7dGhpcy5fbmdab25lPXQsdGhpcy5fcGVuZGluZ0NvdW50PTAsdGhpcy5faXNab25lU3RhYmxlPSEwLHRoaXMuX2RpZFdvcms9ITEsdGhpcy5fY2FsbGJhY2tzPVtdLHRoaXMudGFza1RyYWNraW5nWm9uZT1udWxsLHRoaXMuX3dhdGNoQW5ndWxhckV2ZW50cygpLHQucnVuKCgoKT0+e3RoaXMudGFza1RyYWNraW5nWm9uZT0idW5kZWZpbmVkIj09dHlwZW9mIFpvbmU/bnVsbDpab25lLmN1cnJlbnQuZ2V0KCJUYXNrVHJhY2tpbmdab25lIil9KSl9X3dhdGNoQW5ndWxhckV2ZW50cygpe3RoaXMuX25nWm9uZS5vblVuc3RhYmxlLnN1YnNjcmliZSh7bmV4dDooKT0+e3RoaXMuX2RpZFdvcms9ITAsdGhpcy5faXNab25lU3RhYmxlPSExfX0pLHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9Pnt0aGlzLl9uZ1pvbmUub25TdGFibGUuc3Vic2NyaWJlKHtuZXh0OigpPT57bUMuYXNzZXJ0Tm90SW5Bbmd1bGFyWm9uZSgpLHBDKCgoKT0+e3RoaXMuX2lzWm9uZVN0YWJsZT0hMCx0aGlzLl9ydW5DYWxsYmFja3NJZlJlYWR5KCl9KSl9fSl9KSl9aW5jcmVhc2VQZW5kaW5nUmVxdWVzdENvdW50KCl7cmV0dXJuIHRoaXMuX3BlbmRpbmdDb3VudCs9MSx0aGlzLl9kaWRXb3JrPSEwLHRoaXMuX3BlbmRpbmdDb3VudH1kZWNyZWFzZVBlbmRpbmdSZXF1ZXN0Q291bnQoKXtpZih0aGlzLl9wZW5kaW5nQ291bnQtPTEsdGhpcy5fcGVuZGluZ0NvdW50PDApdGhyb3cgbmV3IEVycm9yKCJwZW5kaW5nIGFzeW5jIHJlcXVlc3RzIGJlbG93IHplcm8iKTtyZXR1cm4gdGhpcy5fcnVuQ2FsbGJhY2tzSWZSZWFkeSgpLHRoaXMuX3BlbmRpbmdDb3VudH1pc1N0YWJsZSgpe3JldHVybiB0aGlzLl9pc1pvbmVTdGFibGUmJjA9PT10aGlzLl9wZW5kaW5nQ291bnQmJiF0aGlzLl9uZ1pvbmUuaGFzUGVuZGluZ01hY3JvdGFza3N9X3J1bkNhbGxiYWNrc0lmUmVhZHkoKXtpZih0aGlzLmlzU3RhYmxlKCkpcEMoKCgpPT57Zm9yKDswIT09dGhpcy5fY2FsbGJhY2tzLmxlbmd0aDspe2xldCB0PXRoaXMuX2NhbGxiYWNrcy5wb3AoKTtjbGVhclRpbWVvdXQodC50aW1lb3V0SWQpLHQuZG9uZUNiKHRoaXMuX2RpZFdvcmspfXRoaXMuX2RpZFdvcms9ITF9KSk7ZWxzZXtsZXQgdD10aGlzLmdldFBlbmRpbmdUYXNrcygpO3RoaXMuX2NhbGxiYWNrcz10aGlzLl9jYWxsYmFja3MuZmlsdGVyKChlPT4hZS51cGRhdGVDYnx8IWUudXBkYXRlQ2IodCl8fChjbGVhclRpbWVvdXQoZS50aW1lb3V0SWQpLCExKSkpLHRoaXMuX2RpZFdvcms9ITB9fWdldFBlbmRpbmdUYXNrcygpe3JldHVybiB0aGlzLnRhc2tUcmFja2luZ1pvbmU/dGhpcy50YXNrVHJhY2tpbmdab25lLm1hY3JvVGFza3MubWFwKCh0PT4oe3NvdXJjZTp0LnNvdXJjZSxjcmVhdGlvbkxvY2F0aW9uOnQuY3JlYXRpb25Mb2NhdGlvbixkYXRhOnQuZGF0YX0pKSk6W119YWRkQ2FsbGJhY2sodCxlLG4pe2xldCBvPS0xO2UmJmU+MCYmKG89c2V0VGltZW91dCgoKCk9Pnt0aGlzLl9jYWxsYmFja3M9dGhpcy5fY2FsbGJhY2tzLmZpbHRlcigodD0+dC50aW1lb3V0SWQhPT1vKSksdCh0aGlzLl9kaWRXb3JrLHRoaXMuZ2V0UGVuZGluZ1Rhc2tzKCkpfSksZSkpLHRoaXMuX2NhbGxiYWNrcy5wdXNoKHtkb25lQ2I6dCx0aW1lb3V0SWQ6byx1cGRhdGVDYjpufSl9d2hlblN0YWJsZSh0LGUsbil7aWYobiYmIXRoaXMudGFza1RyYWNraW5nWm9uZSl0aHJvdyBuZXcgRXJyb3IoJ1Rhc2sgdHJhY2tpbmcgem9uZSBpcyByZXF1aXJlZCB3aGVuIHBhc3NpbmcgYW4gdXBkYXRlIGNhbGxiYWNrIHRvIHdoZW5TdGFibGUoKS4gSXMgInpvbmUuanMvcGx1Z2lucy90YXNrLXRyYWNraW5nIiBsb2FkZWQ/Jyk7dGhpcy5hZGRDYWxsYmFjayh0LGUsbiksdGhpcy5fcnVuQ2FsbGJhY2tzSWZSZWFkeSgpfWdldFBlbmRpbmdSZXF1ZXN0Q291bnQoKXtyZXR1cm4gdGhpcy5fcGVuZGluZ0NvdW50fWZpbmRQcm92aWRlcnModCxlLG4pe3JldHVybltdfX1fQy7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8X0MpKFRyKG1DKSl9LF9DLsm1cHJvdj1Tbih7dG9rZW46X0MsZmFjdG9yeTpfQy7JtWZhY30pLF9DLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6bUN9XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKF9DLFt7dHlwZTpVbX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTptQ31dfSksbnVsbCk7Y2xhc3MgQ0N7Y29uc3RydWN0b3IoKXt0aGlzLl9hcHBsaWNhdGlvbnM9bmV3IE1hcCx2Qy5hZGRUb1dpbmRvdyh0aGlzKX1yZWdpc3RlckFwcGxpY2F0aW9uKHQsZSl7dGhpcy5fYXBwbGljYXRpb25zLnNldCh0LGUpfXVucmVnaXN0ZXJBcHBsaWNhdGlvbih0KXt0aGlzLl9hcHBsaWNhdGlvbnMuZGVsZXRlKHQpfXVucmVnaXN0ZXJBbGxBcHBsaWNhdGlvbnMoKXt0aGlzLl9hcHBsaWNhdGlvbnMuY2xlYXIoKX1nZXRUZXN0YWJpbGl0eSh0KXtyZXR1cm4gdGhpcy5fYXBwbGljYXRpb25zLmdldCh0KXx8bnVsbH1nZXRBbGxUZXN0YWJpbGl0aWVzKCl7cmV0dXJuIEFycmF5LmZyb20odGhpcy5fYXBwbGljYXRpb25zLnZhbHVlcygpKX1nZXRBbGxSb290RWxlbWVudHMoKXtyZXR1cm4gQXJyYXkuZnJvbSh0aGlzLl9hcHBsaWNhdGlvbnMua2V5cygpKX1maW5kVGVzdGFiaWxpdHlJblRyZWUodCxlPSEwKXtyZXR1cm4gdkMuZmluZFRlc3RhYmlsaXR5SW5UcmVlKHRoaXMsdCxlKX19Q0MuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fENDKX0sQ0MuybVwcm92PVNuKHt0b2tlbjpDQyxmYWN0b3J5OkNDLsm1ZmFjfSksQ0MuY3RvclBhcmFtZXRlcnM9KCk9PltdLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoQ0MsW3t0eXBlOlVtfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW119KSxudWxsKTtsZXQgTUMsdkM9bmV3IGNsYXNze2FkZFRvV2luZG93KHQpe31maW5kVGVzdGFiaWxpdHlJblRyZWUodCxlLG4pe3JldHVybiBudWxsfX0seEM9ITAsT0M9ITE7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIFBDKCl7cmV0dXJuIE9DPSEwLHhDfWxldCB3Qz1mdW5jdGlvbiBrQyh0LGUsbil7bmdEZXZNb2RlJiYoZnVuY3Rpb24gbyh0LGU9IlR5cGUgcGFzc2VkIGluIGlzIG5vdCBOZ01vZHVsZVR5cGUsIGl0IGRvZXMgbm90IGhhdmUgJ8m1bW9kJyBwcm9wZXJ0eS4iKXtNbyh0KXx8T24oZSl9KShuKTtjb25zdCBpPW5ldyBueShuKTtpZigidW5kZWZpbmVkIiE9dHlwZW9mIG5nSml0TW9kZSYmIW5nSml0TW9kZSlyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGkpO2NvbnN0IGE9dC5nZXQoY0MsW10pLmNvbmNhdChlKTtpZigoZnVuY3Rpb24gcih0KXtpZihudWxsIT09WHkpe2lmKHQuZGVmYXVsdEVuY2Fwc3VsYXRpb24hPT1YeS5kZWZhdWx0RW5jYXBzdWxhdGlvbilyZXR1cm4gdm9pZChuZ0Rldk1vZGUmJmNvbnNvbGUuZXJyb3IoIlByb3ZpZGVkIHZhbHVlIGZvciBgZGVmYXVsdEVuY2Fwc3VsYXRpb25gIGNhbiBub3QgYmUgY2hhbmdlZCBvbmNlIGl0IGhhcyBiZWVuIHNldC4iKSk7aWYodC5wcmVzZXJ2ZVdoaXRlc3BhY2VzIT09WHkucHJlc2VydmVXaGl0ZXNwYWNlcylyZXR1cm4gdm9pZChuZ0Rldk1vZGUmJmNvbnNvbGUuZXJyb3IoIlByb3ZpZGVkIHZhbHVlIGZvciBgcHJlc2VydmVXaGl0ZXNwYWNlc2AgY2FuIG5vdCBiZSBjaGFuZ2VkIG9uY2UgaXQgaGFzIGJlZW4gc2V0LiIpKX1YeT10fSkoe2RlZmF1bHRFbmNhcHN1bGF0aW9uOkxDKGEubWFwKCh0PT50LmRlZmF1bHRFbmNhcHN1bGF0aW9uKSkpLHByZXNlcnZlV2hpdGVzcGFjZXM6TEMoYS5tYXAoKHQ9PnQucHJlc2VydmVXaGl0ZXNwYWNlcykpKX0pLChmdW5jdGlvbiBzKCl7cmV0dXJuIDA9PT1Yci5zaXplfSkoKSlyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGkpO2NvbnN0IGw9KGZ1bmN0aW9uIGModCl7Y29uc3QgZT1bXTtyZXR1cm4gdC5mb3JFYWNoKCh0PT50JiZlLnB1c2goLi4udCkpKSxlfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8pKGEubWFwKCh0PT50LnByb3ZpZGVycykpKTtpZigwPT09bC5sZW5ndGgpcmV0dXJuIFByb21pc2UucmVzb2x2ZShpKTtjb25zdCBkPWxyKHt1c2FnZTowLGtpbmQ6Ik5nTW9kdWxlIix0eXBlOm59KSxwPU5wLmNyZWF0ZSh7cHJvdmlkZXJzOmx9KS5nZXQoZC5SZXNvdXJjZUxvYWRlcik7cmV0dXJuIFpyKCh0PT5Qcm9taXNlLnJlc29sdmUocC5nZXQodCkpKSkudGhlbigoKCk9PmkpKX07bGV0IFNDPWZ1bmN0aW9uIERDKCl7bmdEZXZNb2RlJiYoZnVuY3Rpb24gdCgpe3FwfHwocXA9ITAsWnAoIsm1c2V0UHJvZmlsZXIiLCRvKSxacCgiZ2V0RGlyZWN0aXZlTWV0YWRhdGEiLFZwKSxacCgiZ2V0Q29tcG9uZW50Iix6cCksWnAoImdldENvbnRleHQiLElwKSxacCgiZ2V0TGlzdGVuZXJzIixVcCksWnAoImdldE93bmluZ0NvbXBvbmVudCIsSHApLFpwKCJnZXRIb3N0RWxlbWVudCIsanApLFpwKCJnZXRJbmplY3RvciIsTHApLFpwKCJnZXRSb290Q29tcG9uZW50cyIsRnApLFpwKCJnZXREaXJlY3RpdmVzIixCcCksWnAoImFwcGx5Q2hhbmdlcyIsWXApKX0pKCl9LFJDPWZ1bmN0aW9uIEVDKHQpe3JldHVybiB0LmlzQm91bmRUb01vZHVsZX07Y29uc3QgQUM9bmV3IGVyKCJBbGxvd011bHRpcGxlVG9rZW4iKTtmdW5jdGlvbiBUQyh0LGUsbj1bXSl7Y29uc3Qgbz1gUGxhdGZvcm06ICR7ZX1gLGk9bmV3IGVyKG8pO3JldHVybihlPVtdKT0+e2xldCBhPU5DKCk7aWYoIWF8fGEuaW5qZWN0b3IuZ2V0KEFDLCExKSlpZih0KXQobi5jb25jYXQoZSkuY29uY2F0KHtwcm92aWRlOmksdXNlVmFsdWU6ITB9KSk7ZWxzZXtjb25zdCB0PW4uY29uY2F0KGUpLmNvbmNhdCh7cHJvdmlkZTppLHVzZVZhbHVlOiEwfSx7cHJvdmlkZTpDcCx1c2VWYWx1ZToicGxhdGZvcm0ifSk7IShmdW5jdGlvbiByKHQpe2lmKE1DJiYhTUMuZGVzdHJveWVkJiYhTUMuaW5qZWN0b3IuZ2V0KEFDLCExKSl0aHJvdyBuZXcgRXJyb3IoIlRoZXJlIGNhbiBiZSBvbmx5IG9uZSBwbGF0Zm9ybS4gRGVzdHJveSB0aGUgcHJldmlvdXMgb25lIHRvIGNyZWF0ZSBhIG5ldyBvbmUuIik7U0MoKSxNQz10LmdldCh6Qyk7Y29uc3QgZT10LmdldChaXyxudWxsKTtyZXR1cm4gZSYmZS5mb3JFYWNoKCh0PT50KCkpKSxNQ30pKE5wLmNyZWF0ZSh7cHJvdmlkZXJzOnQsbmFtZTpvfSkpfXJldHVybihmdW5jdGlvbiBzKHQpe2NvbnN0IGU9TkMoKTtpZighZSl0aHJvdyBuZXcgRXJyb3IoIk5vIHBsYXRmb3JtIGV4aXN0cyEiKTtpZighZS5pbmplY3Rvci5nZXQodCxudWxsKSl0aHJvdyBuZXcgRXJyb3IoIkEgcGxhdGZvcm0gd2l0aCBhIGRpZmZlcmVudCBjb25maWd1cmF0aW9uIGhhcyBiZWVuIGNyZWF0ZWQuIFBsZWFzZSBkZXN0cm95IGl0IGZpcnN0LiIpO3JldHVybiBlfSkoaSl9fWZ1bmN0aW9uIE5DKCl7cmV0dXJuIE1DJiYhTUMuZGVzdHJveWVkP01DOm51bGx9Y2xhc3MgekN7Y29uc3RydWN0b3IodCl7dGhpcy5faW5qZWN0b3I9dCx0aGlzLl9tb2R1bGVzPVtdLHRoaXMuX2Rlc3Ryb3lMaXN0ZW5lcnM9W10sdGhpcy5fZGVzdHJveWVkPSExfWJvb3RzdHJhcE1vZHVsZUZhY3RvcnkodCxlKXtjb25zdCBuPShmdW5jdGlvbiBvKHQsZSl7bGV0IG47bj0ibm9vcCI9PT10P25ldyB5QzooInpvbmUuanMiPT09dD92b2lkIDA6dCl8fG5ldyBtQyh7ZW5hYmxlTG9uZ1N0YWNrVHJhY2U6UEMoKSxzaG91bGRDb2FsZXNjZUV2ZW50Q2hhbmdlRGV0ZWN0aW9uOiEhKG51bGw9PWU/dm9pZCAwOmUubmdab25lRXZlbnRDb2FsZXNjaW5nKSxzaG91bGRDb2FsZXNjZVJ1bkNoYW5nZURldGVjdGlvbjohIShudWxsPT1lP3ZvaWQgMDplLm5nWm9uZVJ1bkNvYWxlc2NpbmcpfSk7cmV0dXJuIG59KShlP2Uubmdab25lOnZvaWQgMCx7bmdab25lRXZlbnRDb2FsZXNjaW5nOmUmJmUubmdab25lRXZlbnRDb2FsZXNjaW5nfHwhMSxuZ1pvbmVSdW5Db2FsZXNjaW5nOmUmJmUubmdab25lUnVuQ29hbGVzY2luZ3x8ITF9KSxpPVt7cHJvdmlkZTptQyx1c2VWYWx1ZTpufV07cmV0dXJuIG4ucnVuKCgoKT0+e2NvbnN0IGU9TnAuY3JlYXRlKHtwcm92aWRlcnM6aSxwYXJlbnQ6dGhpcy5pbmplY3RvcixuYW1lOnQubW9kdWxlVHlwZS5uYW1lfSksbz10LmNyZWF0ZShlKSxhPW8uaW5qZWN0b3IuZ2V0KHVsLG51bGwpO2lmKCFhKXRocm93IG5ldyBFcnJvcigiTm8gRXJyb3JIYW5kbGVyLiBJcyBwbGF0Zm9ybSBtb2R1bGUgKEJyb3dzZXJNb2R1bGUpIGluY2x1ZGVkPyIpO3JldHVybiBuLnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+e2NvbnN0IHQ9bi5vbkVycm9yLnN1YnNjcmliZSh7bmV4dDp0PT57YS5oYW5kbGVFcnJvcih0KX19KTtvLm9uRGVzdHJveSgoKCk9PntGQyh0aGlzLl9tb2R1bGVzLG8pLHQudW5zdWJzY3JpYmUoKX0pKX0pKSwoZnVuY3Rpb24gcih0LGUsbil7dHJ5e2NvbnN0IG89bigpO3JldHVybiBrZihvKT9vLmNhdGNoKChuPT57dGhyb3cgZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9PnQuaGFuZGxlRXJyb3IobikpKSxufSkpOm99Y2F0Y2gobil7dGhyb3cgZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9PnQuaGFuZGxlRXJyb3IobikpKSxufX0pKGEsbiwoKCk9Pntjb25zdCB0PW8uaW5qZWN0b3IuZ2V0KFVfKTtyZXR1cm4gdC5ydW5Jbml0aWFsaXplcnMoKSx0LmRvbmVQcm9taXNlLnRoZW4oKCgpPT57UGcoby5pbmplY3Rvci5nZXQoUV8sQ2cpfHxDZyk7cmV0dXJuIHRoaXMuX21vZHVsZURvQm9vdHN0cmFwKG8pLG99KSl9KSl9KSl9Ym9vdHN0cmFwTW9kdWxlKHQsZT1bXSl7Y29uc3Qgbj1JQyh7fSxlKTtyZXR1cm4gd0ModGhpcy5pbmplY3RvcixuLHQpLnRoZW4oKHQ9PnRoaXMuYm9vdHN0cmFwTW9kdWxlRmFjdG9yeSh0LG4pKSl9X21vZHVsZURvQm9vdHN0cmFwKHQpe2NvbnN0IGU9dC5pbmplY3Rvci5nZXQoSEMpO2lmKHQuX2Jvb3RzdHJhcENvbXBvbmVudHMubGVuZ3RoPjApdC5fYm9vdHN0cmFwQ29tcG9uZW50cy5mb3JFYWNoKCh0PT5lLmJvb3RzdHJhcCh0KSkpO2Vsc2V7aWYoIXQuaW5zdGFuY2UubmdEb0Jvb3RzdHJhcCl0aHJvdyBuZXcgRXJyb3IoYFRoZSBtb2R1bGUgJHtLZSh0Lmluc3RhbmNlLmNvbnN0cnVjdG9yKX0gd2FzIGJvb3RzdHJhcHBlZCwgYnV0IGl0IGRvZXMgbm90IGRlY2xhcmUgIkBOZ01vZHVsZS5ib290c3RyYXAiIGNvbXBvbmVudHMgbm9yIGEgIm5nRG9Cb290c3RyYXAiIG1ldGhvZC4gUGxlYXNlIGRlZmluZSBvbmUgb2YgdGhlc2UuYCk7dC5pbnN0YW5jZS5uZ0RvQm9vdHN0cmFwKGUpfXRoaXMuX21vZHVsZXMucHVzaCh0KX1vbkRlc3Ryb3kodCl7dGhpcy5fZGVzdHJveUxpc3RlbmVycy5wdXNoKHQpfWdldCBpbmplY3Rvcigpe3JldHVybiB0aGlzLl9pbmplY3Rvcn1kZXN0cm95KCl7aWYodGhpcy5fZGVzdHJveWVkKXRocm93IG5ldyBFcnJvcigiVGhlIHBsYXRmb3JtIGhhcyBhbHJlYWR5IGJlZW4gZGVzdHJveWVkISIpO3RoaXMuX21vZHVsZXMuc2xpY2UoKS5mb3JFYWNoKCh0PT50LmRlc3Ryb3koKSkpLHRoaXMuX2Rlc3Ryb3lMaXN0ZW5lcnMuZm9yRWFjaCgodD0+dCgpKSksdGhpcy5fZGVzdHJveWVkPSEwfWdldCBkZXN0cm95ZWQoKXtyZXR1cm4gdGhpcy5fZGVzdHJveWVkfX1mdW5jdGlvbiBJQyh0LGUpe3JldHVybiB0PUFycmF5LmlzQXJyYXkoZSk/ZS5yZWR1Y2UoSUMsdCk6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLGUpfXpDLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx6QykoVHIoTnApKX0sekMuybVwcm92PVNuKHt0b2tlbjp6QyxmYWN0b3J5OnpDLsm1ZmFjfSksekMuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpOcH1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoekMsW3t0eXBlOlVtfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOk5wfV19KSxudWxsKTtjbGFzcyBIQ3tjb25zdHJ1Y3Rvcih0LGUsbixvLGkpe3RoaXMuX3pvbmU9dCx0aGlzLl9pbmplY3Rvcj1lLHRoaXMuX2V4Y2VwdGlvbkhhbmRsZXI9bix0aGlzLl9jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI9byx0aGlzLl9pbml0U3RhdHVzPWksdGhpcy5fYm9vdHN0cmFwTGlzdGVuZXJzPVtdLHRoaXMuX3ZpZXdzPVtdLHRoaXMuX3J1bm5pbmdUaWNrPSExLHRoaXMuX3N0YWJsZT0hMCx0aGlzLmNvbXBvbmVudFR5cGVzPVtdLHRoaXMuY29tcG9uZW50cz1bXSx0aGlzLl9vbk1pY3JvdGFza0VtcHR5U3Vic2NyaXB0aW9uPXRoaXMuX3pvbmUub25NaWNyb3Rhc2tFbXB0eS5zdWJzY3JpYmUoe25leHQ6KCk9Pnt0aGlzLl96b25lLnJ1bigoKCk9Pnt0aGlzLnRpY2soKX0pKX19KTtjb25zdCBhPW5ldyBUKCh0PT57dGhpcy5fc3RhYmxlPXRoaXMuX3pvbmUuaXNTdGFibGUmJiF0aGlzLl96b25lLmhhc1BlbmRpbmdNYWNyb3Rhc2tzJiYhdGhpcy5fem9uZS5oYXNQZW5kaW5nTWljcm90YXNrcyx0aGlzLl96b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+e3QubmV4dCh0aGlzLl9zdGFibGUpLHQuY29tcGxldGUoKX0pKX0pKSxyPW5ldyBUKCh0PT57bGV0IGU7dGhpcy5fem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9PntlPXRoaXMuX3pvbmUub25TdGFibGUuc3Vic2NyaWJlKCgoKT0+e21DLmFzc2VydE5vdEluQW5ndWxhclpvbmUoKSxwQygoKCk9Pnt0aGlzLl9zdGFibGV8fHRoaXMuX3pvbmUuaGFzUGVuZGluZ01hY3JvdGFza3N8fHRoaXMuX3pvbmUuaGFzUGVuZGluZ01pY3JvdGFza3N8fCh0aGlzLl9zdGFibGU9ITAsdC5uZXh0KCEwKSl9KSl9KSl9KSk7Y29uc3Qgbj10aGlzLl96b25lLm9uVW5zdGFibGUuc3Vic2NyaWJlKCgoKT0+e21DLmFzc2VydEluQW5ndWxhclpvbmUoKSx0aGlzLl9zdGFibGUmJih0aGlzLl9zdGFibGU9ITEsdGhpcy5fem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9Pnt0Lm5leHQoITEpfSkpKX0pKTtyZXR1cm4oKT0+e2UudW5zdWJzY3JpYmUoKSxuLnVuc3Vic2NyaWJlKCl9fSkpO3RoaXMuaXNTdGFibGU9cGUoYSxyLnBpcGUoSWUoKSkpfWJvb3RzdHJhcCh0LGUpe2lmKCF0aGlzLl9pbml0U3RhdHVzLmRvbmUpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgYm9vdHN0cmFwIGFzIHRoZXJlIGFyZSBzdGlsbCBhc3luY2hyb25vdXMgaW5pdGlhbGl6ZXJzIHJ1bm5pbmcuIEJvb3RzdHJhcCBjb21wb25lbnRzIGluIHRoZSBgbmdEb0Jvb3RzdHJhcGAgbWV0aG9kIG9mIHRoZSByb290IG1vZHVsZS4iKTtsZXQgbjtuPXQgaW5zdGFuY2VvZiBVaD90OnRoaXMuX2NvbXBvbmVudEZhY3RvcnlSZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeSh0KSx0aGlzLmNvbXBvbmVudFR5cGVzLnB1c2gobi5jb21wb25lbnRUeXBlKTtjb25zdCBvPVJDKG4pP3ZvaWQgMDp0aGlzLl9pbmplY3Rvci5nZXQoemIpLGk9bi5jcmVhdGUoTnAuTlVMTCxbXSxlfHxuLnNlbGVjdG9yLG8pLGE9aS5sb2NhdGlvbi5uYXRpdmVFbGVtZW50LHI9aS5pbmplY3Rvci5nZXQoX0MsbnVsbCkscz1yJiZpLmluamVjdG9yLmdldChDQyk7aWYociYmcyYmcy5yZWdpc3RlckFwcGxpY2F0aW9uKGEsciksaS5vbkRlc3Ryb3koKCgpPT57dGhpcy5kZXRhY2hWaWV3KGkuaG9zdFZpZXcpLEZDKHRoaXMuY29tcG9uZW50cyxpKSxzJiZzLnVucmVnaXN0ZXJBcHBsaWNhdGlvbihhKX0pKSx0aGlzLl9sb2FkQ29tcG9uZW50KGkpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUEMoKSl7dGhpcy5faW5qZWN0b3IuZ2V0KEpfKS5sb2coIkFuZ3VsYXIgaXMgcnVubmluZyBpbiBkZXZlbG9wbWVudCBtb2RlLiBDYWxsIGVuYWJsZVByb2RNb2RlKCkgdG8gZW5hYmxlIHByb2R1Y3Rpb24gbW9kZS4iKX1yZXR1cm4gaX10aWNrKCl7aWYodGhpcy5fcnVubmluZ1RpY2spdGhyb3cgbmV3IEVycm9yKCJBcHBsaWNhdGlvblJlZi50aWNrIGlzIGNhbGxlZCByZWN1cnNpdmVseSIpO3RyeXt0aGlzLl9ydW5uaW5nVGljaz0hMDtmb3IobGV0IHQgb2YgdGhpcy5fdmlld3MpdC5kZXRlY3RDaGFuZ2VzKCk7aWYoKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZQQygpKWZvcihsZXQgdCBvZiB0aGlzLl92aWV3cyl0LmNoZWNrTm9DaGFuZ2VzKCl9Y2F0Y2godCl7dGhpcy5fem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9PnRoaXMuX2V4Y2VwdGlvbkhhbmRsZXIuaGFuZGxlRXJyb3IodCkpKX1maW5hbGx5e3RoaXMuX3J1bm5pbmdUaWNrPSExfX1hdHRhY2hWaWV3KHQpe2NvbnN0IGU9dDt0aGlzLl92aWV3cy5wdXNoKGUpLGUuYXR0YWNoVG9BcHBSZWYodGhpcyl9ZGV0YWNoVmlldyh0KXtjb25zdCBlPXQ7RkModGhpcy5fdmlld3MsZSksZS5kZXRhY2hGcm9tQXBwUmVmKCl9X2xvYWRDb21wb25lbnQodCl7dGhpcy5hdHRhY2hWaWV3KHQuaG9zdFZpZXcpLHRoaXMudGljaygpLHRoaXMuY29tcG9uZW50cy5wdXNoKHQpO3RoaXMuX2luamVjdG9yLmdldChLXyxbXSkuY29uY2F0KHRoaXMuX2Jvb3RzdHJhcExpc3RlbmVycykuZm9yRWFjaCgoZT0+ZSh0KSkpfW5nT25EZXN0cm95KCl7dGhpcy5fdmlld3Muc2xpY2UoKS5mb3JFYWNoKCh0PT50LmRlc3Ryb3koKSkpLHRoaXMuX29uTWljcm90YXNrRW1wdHlTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKX1nZXQgdmlld0NvdW50KCl7cmV0dXJuIHRoaXMuX3ZpZXdzLmxlbmd0aH19ZnVuY3Rpb24gRkModCxlKXtjb25zdCBuPXQuaW5kZXhPZihlKTtuPi0xJiZ0LnNwbGljZShuLDEpfWZ1bmN0aW9uIExDKHQpe2ZvcihsZXQgZT10Lmxlbmd0aC0xO2U+PTA7ZS0tKWlmKHZvaWQgMCE9PXRbZV0pcmV0dXJuIHRbZV19SEMuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEhDKShUcihtQyksVHIoTnApLFRyKHVsKSxUcihHaCksVHIoVV8pKX0sSEMuybVwcm92PVNuKHt0b2tlbjpIQyxmYWN0b3J5OkhDLsm1ZmFjfSksSEMuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTptQ30se3R5cGU6TnB9LHt0eXBlOnVsfSx7dHlwZTpHaH0se3R5cGU6VV99XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEhDLFt7dHlwZTpVbX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTptQ30se3R5cGU6TnB9LHt0eXBlOnVsfSx7dHlwZTpHaH0se3R5cGU6VV99XX0pLG51bGwpO2NsYXNzIEJDe31jb25zdCBWQz17ZmFjdG9yeVBhdGhQcmVmaXg6IiIsZmFjdG9yeVBhdGhTdWZmaXg6Ii5uZ2ZhY3RvcnkifTtjbGFzcyBqQ3tjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuX2NvbXBpbGVyPXQsdGhpcy5fY29uZmlnPWV8fFZDfWxvYWQodCl7cmV0dXJuIHRoaXMubG9hZEFuZENvbXBpbGUodCl9bG9hZEFuZENvbXBpbGUodCl7bGV0W2Usbl09dC5zcGxpdCgiIyIpO3JldHVybiB2b2lkIDA9PT1uJiYobj0iZGVmYXVsdCIpLFN5c3RlbS5pbXBvcnQoZSkudGhlbigodD0+dFtuXSkpLnRoZW4oKHQ9PlVDKHQsZSxuKSkpLnRoZW4oKHQ9PnRoaXMuX2NvbXBpbGVyLmNvbXBpbGVNb2R1bGVBc3luYyh0KSkpfWxvYWRGYWN0b3J5KHQpe2xldFtlLG5dPXQuc3BsaXQoIiMiKSxvPSJOZ0ZhY3RvcnkiO3JldHVybiB2b2lkIDA9PT1uJiYobj0iZGVmYXVsdCIsbz0iIiksU3lzdGVtLmltcG9ydCh0aGlzLl9jb25maWcuZmFjdG9yeVBhdGhQcmVmaXgrZSt0aGlzLl9jb25maWcuZmFjdG9yeVBhdGhTdWZmaXgpLnRoZW4oKHQ9PnRbbitvXSkpLnRoZW4oKHQ9PlVDKHQsZSxuKSkpfX1mdW5jdGlvbiBVQyh0LGUsbil7aWYoIXQpdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZmluZCAnJHtufScgaW4gJyR7ZX0nYCk7cmV0dXJuIHR9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2pDLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxqQykoVHIobEMpLFRyKEJDLDgpKX0sakMuybVwcm92PVNuKHt0b2tlbjpqQyxmYWN0b3J5OmpDLsm1ZmFjfSksakMuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpsQ30se3R5cGU6QkMsZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoakMsW3t0eXBlOlVtfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmxDfSx7dHlwZTpCQyxkZWNvcmF0b3JzOlt7dHlwZTpCcn1dfV19KSxudWxsKTtjb25zdCBXQz1UQyhudWxsLCJjb3JlIixbe3Byb3ZpZGU6WF8sdXNlVmFsdWU6InVua25vd24ifSx7cHJvdmlkZTp6QyxkZXBzOltOcF19LHtwcm92aWRlOkNDLGRlcHM6W119LHtwcm92aWRlOkpfLGRlcHM6W119XSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jb25zdCBHQz1be3Byb3ZpZGU6SEMsdXNlQ2xhc3M6SEMsZGVwczpbbUMsTnAsdWwsR2gsVV9dfSx7cHJvdmlkZTpYYixkZXBzOlttQ10sdXNlRmFjdG9yeTpmdW5jdGlvbiBZQyh0KXtsZXQgZT1bXTtyZXR1cm4gdC5vblN0YWJsZS5zdWJzY3JpYmUoKCgpPT57Zm9yKDtlLmxlbmd0aDspZS5wb3AoKSgpfSkpLGZ1bmN0aW9uKHQpe2UucHVzaCh0KX19fSx7cHJvdmlkZTpVXyx1c2VDbGFzczpVXyxkZXBzOltbbmV3IEJyLGpfXV19LHtwcm92aWRlOmxDLHVzZUNsYXNzOmxDLGRlcHM6W119LEdfLHtwcm92aWRlOmhiLHVzZUZhY3Rvcnk6Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpmdW5jdGlvbiBxQygpe3JldHVybiBrYn0sZGVwczpbXX0se3Byb3ZpZGU6eWIsdXNlRmFjdG9yeTpmdW5jdGlvbiBaQygpe3JldHVybiBTYn0sZGVwczpbXX0se3Byb3ZpZGU6UV8sdXNlRmFjdG9yeTpmdW5jdGlvbiBYQyh0KXtyZXR1cm4gUGcodD10fHwoZnVuY3Rpb24gZSgpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgbmdJMThuQ2xvc3VyZU1vZGUmJm5nSTE4bkNsb3N1cmVNb2RlJiYidW5kZWZpbmVkIiE9dHlwZW9mIGdvb2cmJiJlbiIhPT1nb29nLmdldExvY2FsZSgpP2dvb2cuZ2V0TG9jYWxlKCk6InVuZGVmaW5lZCIhPXR5cGVvZiAkbG9jYWxpemUmJiRsb2NhbGl6ZS5sb2NhbGV8fENnfSkoKSksdH0sZGVwczpbW25ldyBMcihRXyksbmV3IEJyLG5ldyBqcl1dfSx7cHJvdmlkZTokXyx1c2VWYWx1ZToiVVNEIn1dO2NsYXNzIEtDe2NvbnN0cnVjdG9yKHQpe319dmFyIEpDLFFDO0tDLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxLQykoVHIoSEMpKX0sS0MuybVtb2Q9Zm8oe3R5cGU6S0N9KSxLQy7JtWluaj1Ebih7cHJvdmlkZXJzOkdDfSksS0MuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpIQ31dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoS0MsW3t0eXBlOkxfLGFyZ3M6W3twcm92aWRlcnM6R0N9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpIQ31dfSksbnVsbCksKGZ1bmN0aW9uKHQpe3RbdC5DcmVhdGVWaWV3Tm9kZXM9MF09IkNyZWF0ZVZpZXdOb2RlcyIsdFt0LkNoZWNrTm9DaGFuZ2VzPTFdPSJDaGVja05vQ2hhbmdlcyIsdFt0LkNoZWNrTm9DaGFuZ2VzUHJvamVjdGVkVmlld3M9Ml09IkNoZWNrTm9DaGFuZ2VzUHJvamVjdGVkVmlld3MiLHRbdC5DaGVja0FuZFVwZGF0ZT0zXT0iQ2hlY2tBbmRVcGRhdGUiLHRbdC5DaGVja0FuZFVwZGF0ZVByb2plY3RlZFZpZXdzPTRdPSJDaGVja0FuZFVwZGF0ZVByb2plY3RlZFZpZXdzIix0W3QuRGVzdHJveT01XT0iRGVzdHJveSJ9KShKQ3x8KEpDPXt9KSksKGZ1bmN0aW9uKHQpe3RbdC5jcmVhdGU9MF09ImNyZWF0ZSIsdFt0LmRldGVjdENoYW5nZXM9MV09ImRldGVjdENoYW5nZXMiLHRbdC5jaGVja05vQ2hhbmdlcz0yXT0iY2hlY2tOb0NoYW5nZXMiLHRbdC5kZXN0cm95PTNdPSJkZXN0cm95Iix0W3QuaGFuZGxlRXZlbnQ9NF09ImhhbmRsZUV2ZW50In0pKFFDfHwoUUM9e30pKSwKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCi8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KInVuZGVmaW5lZCIhPXR5cGVvZiBuZ0Rldk1vZGUmJm5nRGV2TW9kZSYmKFhuLiRsb2NhbGl6ZT1Ybi4kbG9jYWxpemV8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJJdCBsb29rcyBsaWtlIHlvdXIgYXBwbGljYXRpb24gb3Igb25lIG9mIGl0cyBkZXBlbmRlbmNpZXMgaXMgdXNpbmcgaTE4bi5cbkFuZ3VsYXIgOSBpbnRyb2R1Y2VkIGEgZ2xvYmFsIGAkbG9jYWxpemUoKWAgZnVuY3Rpb24gdGhhdCBuZWVkcyB0byBiZSBsb2FkZWQuXG5QbGVhc2UgcnVuIGBuZyBhZGQgQGFuZ3VsYXIvbG9jYWxpemVgIGZyb20gdGhlIEFuZ3VsYXIgQ0xJLlxuKEZvciBub24tQ0xJIHByb2plY3RzLCBhZGQgYGltcG9ydCAnQGFuZ3VsYXIvbG9jYWxpemUvaW5pdCc7YCB0byB5b3VyIGBwb2x5ZmlsbHMudHNgIGZpbGUuXG5Gb3Igc2VydmVyLXNpZGUgcmVuZGVyaW5nIGFwcGxpY2F0aW9ucyBhZGQgdGhlIGltcG9ydCB0byB5b3VyIGBtYWluLnNlcnZlci50c2AgZmlsZS4pIil9KQovKioKICAgICAqIEBsaWNlbnNlIEFuZ3VsYXIgdjEyLjIuMQogICAgICogKGMpIDIwMTAtMjAyMSBHb29nbGUgTExDLiBodHRwczovL2FuZ3VsYXIuaW8vCiAgICAgKiBMaWNlbnNlOiBNSVQKICAgICAqLwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi87Y29uc3QgJEM9InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWxUaGlzJiZnbG9iYWxUaGlzLHRNPSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ3aW5kb3csZU09InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmJiYidW5kZWZpbmVkIiE9dHlwZW9mIFdvcmtlckdsb2JhbFNjb3BlJiZzZWxmIGluc3RhbmNlb2YgV29ya2VyR2xvYmFsU2NvcGUmJnNlbGYsbk09InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWwmJmdsb2JhbCxvTT1mdW5jdGlvbih0LC4uLmUpe2lmKG9NLnRyYW5zbGF0ZSl7Y29uc3Qgbj1vTS50cmFuc2xhdGUodCxlKTt0PW5bMF0sZT1uWzFdfWxldCBuPWlNKHRbMF0sdC5yYXdbMF0pO2ZvcihsZXQgbz0xO288dC5sZW5ndGg7bysrKW4rPWVbby0xXStpTSh0W29dLHQucmF3W29dKTtyZXR1cm4gbn07ZnVuY3Rpb24gaU0odCxlKXtyZXR1cm4iOiI9PT1lLmNoYXJBdCgwKT90LnN1YnN0cmluZygoZnVuY3Rpb24gbih0LGUpe2ZvcihsZXQgbj0xLG89MTtuPHQubGVuZ3RoO24rKyxvKyspaWYoIlxcIj09PWVbb10pbysrO2Vsc2UgaWYoIjoiPT09dFtuXSlyZXR1cm4gbjt0aHJvdyBuZXcgRXJyb3IoYFVudGVybWluYXRlZCAkbG9jYWxpemUgbWV0YWRhdGEgYmxvY2sgaW4gIiR7ZX0iLmApfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovKSh0LGUpKzEpOnR9KCRDfHxuTXx8dE18fGVNKS4kbG9jYWxpemU9b007Ci8qKgogICAgICogQGxpY2Vuc2UgQW5ndWxhciB2MTIuMi4xCiAgICAgKiAoYykgMjAxMC0yMDIxIEdvb2dsZSBMTEMuIGh0dHBzOi8vYW5ndWxhci5pby8KICAgICAqIExpY2Vuc2U6IE1JVAogICAgICovCmxldCBhTT1udWxsO2Z1bmN0aW9uIHJNKCl7cmV0dXJuIGFNfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3Qgc009bmV3IGVyKCJEb2N1bWVudFRva2VuIik7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIGxNe2hpc3RvcnlHbyh0KXt0aHJvdyBuZXcgRXJyb3IoIk5vdCBpbXBsZW1lbnRlZCIpfX1mdW5jdGlvbiBjTSgpe3JldHVybiBUcihkTSl9bE0uybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGxNKX0sbE0uybVwcm92PVNuKHtmYWN0b3J5OmNNLHRva2VuOmxNLHByb3ZpZGVkSW46InBsYXRmb3JtIn0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIobE0sW3t0eXBlOlVtLGFyZ3M6W3twcm92aWRlZEluOiJwbGF0Zm9ybSIsdXNlRmFjdG9yeTpjTX1dfV0sbnVsbCxudWxsKSxuZXcgZXIoIkxvY2F0aW9uIEluaXRpYWxpemVkIik7Y2xhc3MgZE0gZXh0ZW5kcyBsTXtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMuX2RvYz10LHRoaXMuX2luaXQoKX1faW5pdCgpe3RoaXMubG9jYXRpb249d2luZG93LmxvY2F0aW9uLHRoaXMuX2hpc3Rvcnk9d2luZG93Lmhpc3Rvcnl9Z2V0QmFzZUhyZWZGcm9tRE9NKCl7cmV0dXJuIHJNKCkuZ2V0QmFzZUhyZWYodGhpcy5fZG9jKX1vblBvcFN0YXRlKHQpe2NvbnN0IGU9ck0oKS5nZXRHbG9iYWxFdmVudFRhcmdldCh0aGlzLl9kb2MsIndpbmRvdyIpO3JldHVybiBlLmFkZEV2ZW50TGlzdGVuZXIoInBvcHN0YXRlIix0LCExKSwoKT0+ZS5yZW1vdmVFdmVudExpc3RlbmVyKCJwb3BzdGF0ZSIsdCl9b25IYXNoQ2hhbmdlKHQpe2NvbnN0IGU9ck0oKS5nZXRHbG9iYWxFdmVudFRhcmdldCh0aGlzLl9kb2MsIndpbmRvdyIpO3JldHVybiBlLmFkZEV2ZW50TGlzdGVuZXIoImhhc2hjaGFuZ2UiLHQsITEpLCgpPT5lLnJlbW92ZUV2ZW50TGlzdGVuZXIoImhhc2hjaGFuZ2UiLHQpfWdldCBocmVmKCl7cmV0dXJuIHRoaXMubG9jYXRpb24uaHJlZn1nZXQgcHJvdG9jb2woKXtyZXR1cm4gdGhpcy5sb2NhdGlvbi5wcm90b2NvbH1nZXQgaG9zdG5hbWUoKXtyZXR1cm4gdGhpcy5sb2NhdGlvbi5ob3N0bmFtZX1nZXQgcG9ydCgpe3JldHVybiB0aGlzLmxvY2F0aW9uLnBvcnR9Z2V0IHBhdGhuYW1lKCl7cmV0dXJuIHRoaXMubG9jYXRpb24ucGF0aG5hbWV9Z2V0IHNlYXJjaCgpe3JldHVybiB0aGlzLmxvY2F0aW9uLnNlYXJjaH1nZXQgaGFzaCgpe3JldHVybiB0aGlzLmxvY2F0aW9uLmhhc2h9c2V0IHBhdGhuYW1lKHQpe3RoaXMubG9jYXRpb24ucGF0aG5hbWU9dH1wdXNoU3RhdGUodCxlLG4pe3BNKCk/dGhpcy5faGlzdG9yeS5wdXNoU3RhdGUodCxlLG4pOnRoaXMubG9jYXRpb24uaGFzaD1ufXJlcGxhY2VTdGF0ZSh0LGUsbil7cE0oKT90aGlzLl9oaXN0b3J5LnJlcGxhY2VTdGF0ZSh0LGUsbik6dGhpcy5sb2NhdGlvbi5oYXNoPW59Zm9yd2FyZCgpe3RoaXMuX2hpc3RvcnkuZm9yd2FyZCgpfWJhY2soKXt0aGlzLl9oaXN0b3J5LmJhY2soKX1oaXN0b3J5R28odD0wKXt0aGlzLl9oaXN0b3J5LmdvKHQpfWdldFN0YXRlKCl7cmV0dXJuIHRoaXMuX2hpc3Rvcnkuc3RhdGV9fWZ1bmN0aW9uIHBNKCl7cmV0dXJuISF3aW5kb3cuaGlzdG9yeS5wdXNoU3RhdGV9ZnVuY3Rpb24gbU0oKXtyZXR1cm4gbmV3IGRNKFRyKHNNKSl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBmTSh0LGUpe2lmKDA9PXQubGVuZ3RoKXJldHVybiBlO2lmKDA9PWUubGVuZ3RoKXJldHVybiB0O2xldCBuPTA7cmV0dXJuIHQuZW5kc1dpdGgoIi8iKSYmbisrLGUuc3RhcnRzV2l0aCgiLyIpJiZuKyssMj09bj90K2Uuc3Vic3RyaW5nKDEpOjE9PW4/dCtlOnQrIi8iK2V9ZnVuY3Rpb24gdU0odCl7Y29uc3QgZT10Lm1hdGNoKC8jfFw/fCQvKSxuPWUmJmUuaW5kZXh8fHQubGVuZ3RoO3JldHVybiB0LnNsaWNlKDAsbi0oIi8iPT09dFtuLTFdPzE6MCkpK3Quc2xpY2Uobil9ZnVuY3Rpb24gZ00odCl7cmV0dXJuIHQmJiI/IiE9PXRbMF0/Ij8iK3Q6dH0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZE0uybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGRNKShUcihzTSkpfSxkTS7JtXByb3Y9U24oe2ZhY3Rvcnk6bU0sdG9rZW46ZE0scHJvdmlkZWRJbjoicGxhdGZvcm0ifSksZE0uY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGRNLFt7dHlwZTpVbSxhcmdzOlt7cHJvdmlkZWRJbjoicGxhdGZvcm0iLHVzZUZhY3Rvcnk6bU19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19XX0pLG51bGwpO2NsYXNzIGhNe2hpc3RvcnlHbyh0KXt0aHJvdyBuZXcgRXJyb3IoIk5vdCBpbXBsZW1lbnRlZCIpfX1mdW5jdGlvbiBiTSh0KXtjb25zdCBlPVRyKHNNKS5sb2NhdGlvbjtyZXR1cm4gbmV3IF9NKFRyKGxNKSxlJiZlLm9yaWdpbnx8IiIpfWhNLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxoTSl9LGhNLsm1cHJvdj1Tbih7ZmFjdG9yeTpiTSx0b2tlbjpoTSxwcm92aWRlZEluOiJyb290In0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoaE0sW3t0eXBlOlVtLGFyZ3M6W3twcm92aWRlZEluOiJyb290Iix1c2VGYWN0b3J5OmJNfV19XSxudWxsLG51bGwpO2NvbnN0IHlNPW5ldyBlcigiYXBwQmFzZUhyZWYiKTtjbGFzcyBfTSBleHRlbmRzIGhNe2NvbnN0cnVjdG9yKHQsZSl7aWYoc3VwZXIoKSx0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uPXQsdGhpcy5fcmVtb3ZlTGlzdGVuZXJGbnM9W10sbnVsbD09ZSYmKGU9dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5nZXRCYXNlSHJlZkZyb21ET00oKSksbnVsbD09ZSl0aHJvdyBuZXcgRXJyb3IoIk5vIGJhc2UgaHJlZiBzZXQuIFBsZWFzZSBwcm92aWRlIGEgdmFsdWUgZm9yIHRoZSBBUFBfQkFTRV9IUkVGIHRva2VuIG9yIGFkZCBhIGJhc2UgZWxlbWVudCB0byB0aGUgZG9jdW1lbnQuIik7dGhpcy5fYmFzZUhyZWY9ZX1uZ09uRGVzdHJveSgpe2Zvcig7dGhpcy5fcmVtb3ZlTGlzdGVuZXJGbnMubGVuZ3RoOyl0aGlzLl9yZW1vdmVMaXN0ZW5lckZucy5wb3AoKSgpfW9uUG9wU3RhdGUodCl7dGhpcy5fcmVtb3ZlTGlzdGVuZXJGbnMucHVzaCh0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLm9uUG9wU3RhdGUodCksdGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5vbkhhc2hDaGFuZ2UodCkpfWdldEJhc2VIcmVmKCl7cmV0dXJuIHRoaXMuX2Jhc2VIcmVmfXByZXBhcmVFeHRlcm5hbFVybCh0KXtyZXR1cm4gZk0odGhpcy5fYmFzZUhyZWYsdCl9cGF0aCh0PSExKXtjb25zdCBlPXRoaXMuX3BsYXRmb3JtTG9jYXRpb24ucGF0aG5hbWUrZ00odGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5zZWFyY2gpLG49dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5oYXNoO3JldHVybiBuJiZ0P2Ake2V9JHtufWA6ZX1wdXNoU3RhdGUodCxlLG4sbyl7Y29uc3QgaT10aGlzLnByZXBhcmVFeHRlcm5hbFVybChuK2dNKG8pKTt0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLnB1c2hTdGF0ZSh0LGUsaSl9cmVwbGFjZVN0YXRlKHQsZSxuLG8pe2NvbnN0IGk9dGhpcy5wcmVwYXJlRXh0ZXJuYWxVcmwobitnTShvKSk7dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5yZXBsYWNlU3RhdGUodCxlLGkpfWZvcndhcmQoKXt0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLmZvcndhcmQoKX1iYWNrKCl7dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5iYWNrKCl9aGlzdG9yeUdvKHQ9MCl7dmFyIGUsbjtudWxsPT09KG49KGU9dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbikuaGlzdG9yeUdvKXx8dm9pZCAwPT09bnx8bi5jYWxsKGUsdCl9fV9NLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxfTSkoVHIobE0pLFRyKHlNLDgpKX0sX00uybVwcm92PVNuKHt0b2tlbjpfTSxmYWN0b3J5Ol9NLsm1ZmFjfSksX00uY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpsTX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOlt5TV19XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoX00sW3t0eXBlOlVtfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmxNfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W3lNXX1dfV19KSxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIENNIGV4dGVuZHMgaE17Y29uc3RydWN0b3IodCxlKXtzdXBlcigpLHRoaXMuX3BsYXRmb3JtTG9jYXRpb249dCx0aGlzLl9iYXNlSHJlZj0iIix0aGlzLl9yZW1vdmVMaXN0ZW5lckZucz1bXSxudWxsIT1lJiYodGhpcy5fYmFzZUhyZWY9ZSl9bmdPbkRlc3Ryb3koKXtmb3IoO3RoaXMuX3JlbW92ZUxpc3RlbmVyRm5zLmxlbmd0aDspdGhpcy5fcmVtb3ZlTGlzdGVuZXJGbnMucG9wKCkoKX1vblBvcFN0YXRlKHQpe3RoaXMuX3JlbW92ZUxpc3RlbmVyRm5zLnB1c2godGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5vblBvcFN0YXRlKHQpLHRoaXMuX3BsYXRmb3JtTG9jYXRpb24ub25IYXNoQ2hhbmdlKHQpKX1nZXRCYXNlSHJlZigpe3JldHVybiB0aGlzLl9iYXNlSHJlZn1wYXRoKHQ9ITEpe2xldCBlPXRoaXMuX3BsYXRmb3JtTG9jYXRpb24uaGFzaDtyZXR1cm4gbnVsbD09ZSYmKGU9IiMiKSxlLmxlbmd0aD4wP2Uuc3Vic3RyaW5nKDEpOmV9cHJlcGFyZUV4dGVybmFsVXJsKHQpe2NvbnN0IGU9Zk0odGhpcy5fYmFzZUhyZWYsdCk7cmV0dXJuIGUubGVuZ3RoPjA/IiMiK2U6ZX1wdXNoU3RhdGUodCxlLG4sbyl7bGV0IGk9dGhpcy5wcmVwYXJlRXh0ZXJuYWxVcmwobitnTShvKSk7MD09aS5sZW5ndGgmJihpPXRoaXMuX3BsYXRmb3JtTG9jYXRpb24ucGF0aG5hbWUpLHRoaXMuX3BsYXRmb3JtTG9jYXRpb24ucHVzaFN0YXRlKHQsZSxpKX1yZXBsYWNlU3RhdGUodCxlLG4sbyl7bGV0IGk9dGhpcy5wcmVwYXJlRXh0ZXJuYWxVcmwobitnTShvKSk7MD09aS5sZW5ndGgmJihpPXRoaXMuX3BsYXRmb3JtTG9jYXRpb24ucGF0aG5hbWUpLHRoaXMuX3BsYXRmb3JtTG9jYXRpb24ucmVwbGFjZVN0YXRlKHQsZSxpKX1mb3J3YXJkKCl7dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5mb3J3YXJkKCl9YmFjaygpe3RoaXMuX3BsYXRmb3JtTG9jYXRpb24uYmFjaygpfWhpc3RvcnlHbyh0PTApe3ZhciBlLG47bnVsbD09PShuPShlPXRoaXMuX3BsYXRmb3JtTG9jYXRpb24pLmhpc3RvcnlHbyl8fHZvaWQgMD09PW58fG4uY2FsbChlLHQpfX1DTS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8Q00pKFRyKGxNKSxUcih5TSw4KSl9LENNLsm1cHJvdj1Tbih7dG9rZW46Q00sZmFjdG9yeTpDTS7JtWZhY30pLENNLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6bE19LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbeU1dfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKENNLFt7dHlwZTpVbX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpsTX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOlt5TV19XX1dfSksbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBNTXtjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuX3N1YmplY3Q9bmV3IFN5LHRoaXMuX3VybENoYW5nZUxpc3RlbmVycz1bXSx0aGlzLl9wbGF0Zm9ybVN0cmF0ZWd5PXQ7Y29uc3Qgbj10aGlzLl9wbGF0Zm9ybVN0cmF0ZWd5LmdldEJhc2VIcmVmKCk7dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbj1lLHRoaXMuX2Jhc2VIcmVmPXVNKHhNKG4pKSx0aGlzLl9wbGF0Zm9ybVN0cmF0ZWd5Lm9uUG9wU3RhdGUoKHQ9Pnt0aGlzLl9zdWJqZWN0LmVtaXQoe3VybDp0aGlzLnBhdGgoITApLHBvcDohMCxzdGF0ZTp0LnN0YXRlLHR5cGU6dC50eXBlfSl9KSl9cGF0aCh0PSExKXtyZXR1cm4gdGhpcy5ub3JtYWxpemUodGhpcy5fcGxhdGZvcm1TdHJhdGVneS5wYXRoKHQpKX1nZXRTdGF0ZSgpe3JldHVybiB0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLmdldFN0YXRlKCl9aXNDdXJyZW50UGF0aEVxdWFsVG8odCxlPSIiKXtyZXR1cm4gdGhpcy5wYXRoKCk9PXRoaXMubm9ybWFsaXplKHQrZ00oZSkpfW5vcm1hbGl6ZSh0KXtyZXR1cm4gTU0uc3RyaXBUcmFpbGluZ1NsYXNoKChmdW5jdGlvbiBlKHQsbil7cmV0dXJuIHQmJm4uc3RhcnRzV2l0aCh0KT9uLnN1YnN0cmluZyh0Lmxlbmd0aCk6bn0pKHRoaXMuX2Jhc2VIcmVmLHhNKHQpKSl9cHJlcGFyZUV4dGVybmFsVXJsKHQpe3JldHVybiB0JiYiLyIhPT10WzBdJiYodD0iLyIrdCksdGhpcy5fcGxhdGZvcm1TdHJhdGVneS5wcmVwYXJlRXh0ZXJuYWxVcmwodCl9Z28odCxlPSIiLG49bnVsbCl7dGhpcy5fcGxhdGZvcm1TdHJhdGVneS5wdXNoU3RhdGUobiwiIix0LGUpLHRoaXMuX25vdGlmeVVybENoYW5nZUxpc3RlbmVycyh0aGlzLnByZXBhcmVFeHRlcm5hbFVybCh0K2dNKGUpKSxuKX1yZXBsYWNlU3RhdGUodCxlPSIiLG49bnVsbCl7dGhpcy5fcGxhdGZvcm1TdHJhdGVneS5yZXBsYWNlU3RhdGUobiwiIix0LGUpLHRoaXMuX25vdGlmeVVybENoYW5nZUxpc3RlbmVycyh0aGlzLnByZXBhcmVFeHRlcm5hbFVybCh0K2dNKGUpKSxuKX1mb3J3YXJkKCl7dGhpcy5fcGxhdGZvcm1TdHJhdGVneS5mb3J3YXJkKCl9YmFjaygpe3RoaXMuX3BsYXRmb3JtU3RyYXRlZ3kuYmFjaygpfWhpc3RvcnlHbyh0PTApe3ZhciBlLG47bnVsbD09PShuPShlPXRoaXMuX3BsYXRmb3JtU3RyYXRlZ3kpLmhpc3RvcnlHbyl8fHZvaWQgMD09PW58fG4uY2FsbChlLHQpfW9uVXJsQ2hhbmdlKHQpe3RoaXMuX3VybENoYW5nZUxpc3RlbmVycy5wdXNoKHQpLHRoaXMuX3VybENoYW5nZVN1YnNjcmlwdGlvbnx8KHRoaXMuX3VybENoYW5nZVN1YnNjcmlwdGlvbj10aGlzLnN1YnNjcmliZSgodD0+e3RoaXMuX25vdGlmeVVybENoYW5nZUxpc3RlbmVycyh0LnVybCx0LnN0YXRlKX0pKSl9X25vdGlmeVVybENoYW5nZUxpc3RlbmVycyh0PSIiLGUpe3RoaXMuX3VybENoYW5nZUxpc3RlbmVycy5mb3JFYWNoKChuPT5uKHQsZSkpKX1zdWJzY3JpYmUodCxlLG4pe3JldHVybiB0aGlzLl9zdWJqZWN0LnN1YnNjcmliZSh7bmV4dDp0LGVycm9yOmUsY29tcGxldGU6bn0pfX1mdW5jdGlvbiB2TSgpe3JldHVybiBuZXcgTU0oVHIoaE0pLFRyKGxNKSl9ZnVuY3Rpb24geE0odCl7cmV0dXJuIHQucmVwbGFjZSgvXC9pbmRleC5odG1sJC8sIiIpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovTU0uybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fE1NKShUcihoTSksVHIobE0pKX0sTU0ubm9ybWFsaXplUXVlcnlQYXJhbXM9Z00sTU0uam9pbldpdGhTbGFzaD1mTSxNTS5zdHJpcFRyYWlsaW5nU2xhc2g9dU0sTU0uybVwcm92PVNuKHtmYWN0b3J5OnZNLHRva2VuOk1NLHByb3ZpZGVkSW46InJvb3QifSksTU0uY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpoTX0se3R5cGU6bE19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKE1NLFt7dHlwZTpVbSxhcmdzOlt7cHJvdmlkZWRJbjoicm9vdCIsdXNlRmFjdG9yeTp2TX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmhNfSx7dHlwZTpsTX1dfSksbnVsbCk7Y29uc3QgT009e0FEUDpbdm9pZCAwLHZvaWQgMCwwXSxBRk46W3ZvaWQgMCx2b2lkIDAsMF0sQUxMOlt2b2lkIDAsdm9pZCAwLDBdLEFNRDpbdm9pZCAwLHZvaWQgMCwyXSxBT0E6W3ZvaWQgMCwiS3oiXSxBUlM6W3ZvaWQgMCwiJCJdLEFVRDpbIkEkIiwiJCJdLEJBTTpbdm9pZCAwLCJLTSJdLEJCRDpbdm9pZCAwLCIkIl0sQkRUOlt2b2lkIDAsIuCnsyJdLEJIRDpbdm9pZCAwLHZvaWQgMCwzXSxCSUY6W3ZvaWQgMCx2b2lkIDAsMF0sQk1EOlt2b2lkIDAsIiQiXSxCTkQ6W3ZvaWQgMCwiJCJdLEJPQjpbdm9pZCAwLCJCcyJdLEJSTDpbIlIkIl0sQlNEOlt2b2lkIDAsIiQiXSxCV1A6W3ZvaWQgMCwiUCJdLEJZTjpbdm9pZCAwLCLRgC4iLDJdLEJZUjpbdm9pZCAwLHZvaWQgMCwwXSxCWkQ6W3ZvaWQgMCwiJCJdLENBRDpbIkNBJCIsIiQiLDJdLENIRjpbdm9pZCAwLHZvaWQgMCwyXSxDTEY6W3ZvaWQgMCx2b2lkIDAsNF0sQ0xQOlt2b2lkIDAsIiQiLDBdLENOWTpbIkNOwqUiLCLCpSJdLENPUDpbdm9pZCAwLCIkIiwyXSxDUkM6W3ZvaWQgMCwi4oKhIiwyXSxDVUM6W3ZvaWQgMCwiJCJdLENVUDpbdm9pZCAwLCIkIl0sQ1pLOlt2b2lkIDAsIkvEjSIsMl0sREpGOlt2b2lkIDAsdm9pZCAwLDBdLERLSzpbdm9pZCAwLCJrciIsMl0sRE9QOlt2b2lkIDAsIiQiXSxFR1A6W3ZvaWQgMCwiRcKjIl0sRVNQOlt2b2lkIDAsIuKCpyIsMF0sRVVSOlsi4oKsIl0sRkpEOlt2b2lkIDAsIiQiXSxGS1A6W3ZvaWQgMCwiwqMiXSxHQlA6WyLCoyJdLEdFTDpbdm9pZCAwLCLigr4iXSxHSVA6W3ZvaWQgMCwiwqMiXSxHTkY6W3ZvaWQgMCwiRkciLDBdLEdUUTpbdm9pZCAwLCJRIl0sR1lEOlt2b2lkIDAsIiQiLDJdLEhLRDpbIkhLJCIsIiQiXSxITkw6W3ZvaWQgMCwiTCJdLEhSSzpbdm9pZCAwLCJrbiJdLEhVRjpbdm9pZCAwLCJGdCIsMl0sSURSOlt2b2lkIDAsIlJwIiwyXSxJTFM6WyLigqoiXSxJTlI6WyLigrkiXSxJUUQ6W3ZvaWQgMCx2b2lkIDAsMF0sSVJSOlt2b2lkIDAsdm9pZCAwLDBdLElTSzpbdm9pZCAwLCJrciIsMF0sSVRMOlt2b2lkIDAsdm9pZCAwLDBdLEpNRDpbdm9pZCAwLCIkIl0sSk9EOlt2b2lkIDAsdm9pZCAwLDNdLEpQWTpbIsKlIix2b2lkIDAsMF0sS0hSOlt2b2lkIDAsIuGfmyJdLEtNRjpbdm9pZCAwLCJDRiIsMF0sS1BXOlt2b2lkIDAsIuKCqSIsMF0sS1JXOlsi4oKpIix2b2lkIDAsMF0sS1dEOlt2b2lkIDAsdm9pZCAwLDNdLEtZRDpbdm9pZCAwLCIkIl0sS1pUOlt2b2lkIDAsIuKCuCJdLExBSzpbdm9pZCAwLCLigq0iLDBdLExCUDpbdm9pZCAwLCJMwqMiLDBdLExLUjpbdm9pZCAwLCJScyJdLExSRDpbdm9pZCAwLCIkIl0sTFRMOlt2b2lkIDAsIkx0Il0sTFVGOlt2b2lkIDAsdm9pZCAwLDBdLExWTDpbdm9pZCAwLCJMcyJdLExZRDpbdm9pZCAwLHZvaWQgMCwzXSxNR0E6W3ZvaWQgMCwiQXIiLDBdLE1HRjpbdm9pZCAwLHZvaWQgMCwwXSxNTUs6W3ZvaWQgMCwiSyIsMF0sTU5UOlt2b2lkIDAsIuKCriIsMl0sTVJPOlt2b2lkIDAsdm9pZCAwLDBdLE1VUjpbdm9pZCAwLCJScyIsMl0sTVhOOlsiTVgkIiwiJCJdLE1ZUjpbdm9pZCAwLCJSTSJdLE5BRDpbdm9pZCAwLCIkIl0sTkdOOlt2b2lkIDAsIuKCpiJdLE5JTzpbdm9pZCAwLCJDJCJdLE5PSzpbdm9pZCAwLCJrciIsMl0sTlBSOlt2b2lkIDAsIlJzIl0sTlpEOlsiTlokIiwiJCJdLE9NUjpbdm9pZCAwLHZvaWQgMCwzXSxQSFA6W3ZvaWQgMCwi4oKxIl0sUEtSOlt2b2lkIDAsIlJzIiwyXSxQTE46W3ZvaWQgMCwiesWCIl0sUFlHOlt2b2lkIDAsIuKCsiIsMF0sUk9OOlt2b2lkIDAsImxlaSJdLFJTRDpbdm9pZCAwLHZvaWQgMCwwXSxSVUI6W3ZvaWQgMCwi4oK9Il0sUlVSOlt2b2lkIDAsItGALiJdLFJXRjpbdm9pZCAwLCJSRiIsMF0sU0JEOlt2b2lkIDAsIiQiXSxTRUs6W3ZvaWQgMCwia3IiLDJdLFNHRDpbdm9pZCAwLCIkIl0sU0hQOlt2b2lkIDAsIsKjIl0sU0xMOlt2b2lkIDAsdm9pZCAwLDBdLFNPUzpbdm9pZCAwLHZvaWQgMCwwXSxTUkQ6W3ZvaWQgMCwiJCJdLFNTUDpbdm9pZCAwLCLCoyJdLFNURDpbdm9pZCAwLHZvaWQgMCwwXSxTVE46W3ZvaWQgMCwiRGIiXSxTWVA6W3ZvaWQgMCwiwqMiLDBdLFRIQjpbdm9pZCAwLCLguL8iXSxUTU06W3ZvaWQgMCx2b2lkIDAsMF0sVE5EOlt2b2lkIDAsdm9pZCAwLDNdLFRPUDpbdm9pZCAwLCJUJCJdLFRSTDpbdm9pZCAwLHZvaWQgMCwwXSxUUlk6W3ZvaWQgMCwi4oK6Il0sVFREOlt2b2lkIDAsIiQiXSxUV0Q6WyJOVCQiLCIkIiwyXSxUWlM6W3ZvaWQgMCx2b2lkIDAsMl0sVUFIOlt2b2lkIDAsIuKCtCJdLFVHWDpbdm9pZCAwLHZvaWQgMCwwXSxVU0Q6WyIkIl0sVVlJOlt2b2lkIDAsdm9pZCAwLDBdLFVZVTpbdm9pZCAwLCIkIl0sVVlXOlt2b2lkIDAsdm9pZCAwLDRdLFVaUzpbdm9pZCAwLHZvaWQgMCwyXSxWRUY6W3ZvaWQgMCwiQnMiLDJdLFZORDpbIuKCqyIsdm9pZCAwLDBdLFZVVjpbdm9pZCAwLHZvaWQgMCwwXSxYQUY6WyJGQ0ZBIix2b2lkIDAsMF0sWENEOlsiRUMkIiwiJCJdLFhPRjpbIkNGQSIsdm9pZCAwLDBdLFhQRjpbIkNGUEYiLHZvaWQgMCwwXSxYWFg6WyLCpCJdLFlFUjpbdm9pZCAwLHZvaWQgMCwwXSxaQVI6W3ZvaWQgMCwiUiJdLFpNSzpbdm9pZCAwLHZvaWQgMCwwXSxaTVc6W3ZvaWQgMCwiWksiXSxaV0Q6W3ZvaWQgMCx2b2lkIDAsMF19OwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi92YXIgUE0sd00sa00sU00sRE0sUk0sRU07ZnVuY3Rpb24gQU0odCxlKXtyZXR1cm4gTE0oZ2codClbeWcuRGF0ZUZvcm1hdF0sZSl9ZnVuY3Rpb24gVE0odCxlKXtyZXR1cm4gTE0oZ2codClbeWcuVGltZUZvcm1hdF0sZSl9ZnVuY3Rpb24gTk0odCxlKXtyZXR1cm4gTE0oZ2codClbeWcuRGF0ZVRpbWVGb3JtYXRdLGUpfWZ1bmN0aW9uIHpNKHQsZSl7Y29uc3Qgbj1nZyh0KSxvPW5beWcuTnVtYmVyU3ltYm9sc11bZV07aWYodm9pZCAwPT09byl7aWYoZT09PVJNLkN1cnJlbmN5RGVjaW1hbClyZXR1cm4gblt5Zy5OdW1iZXJTeW1ib2xzXVtSTS5EZWNpbWFsXTtpZihlPT09Uk0uQ3VycmVuY3lHcm91cClyZXR1cm4gblt5Zy5OdW1iZXJTeW1ib2xzXVtSTS5Hcm91cF19cmV0dXJuIG99ZnVuY3Rpb24gSU0odCxlKXtyZXR1cm4gZ2codClbeWcuTnVtYmVyRm9ybWF0c11bZV19IShmdW5jdGlvbih0KXt0W3QuRGVjaW1hbD0wXT0iRGVjaW1hbCIsdFt0LlBlcmNlbnQ9MV09IlBlcmNlbnQiLHRbdC5DdXJyZW5jeT0yXT0iQ3VycmVuY3kiLHRbdC5TY2llbnRpZmljPTNdPSJTY2llbnRpZmljIn0pKFBNfHwoUE09e30pKSwoZnVuY3Rpb24odCl7dFt0Llplcm89MF09Ilplcm8iLHRbdC5PbmU9MV09Ik9uZSIsdFt0LlR3bz0yXT0iVHdvIix0W3QuRmV3PTNdPSJGZXciLHRbdC5NYW55PTRdPSJNYW55Iix0W3QuT3RoZXI9NV09Ik90aGVyIn0pKHdNfHwod009e30pKSwoZnVuY3Rpb24odCl7dFt0LkZvcm1hdD0wXT0iRm9ybWF0Iix0W3QuU3RhbmRhbG9uZT0xXT0iU3RhbmRhbG9uZSJ9KShrTXx8KGtNPXt9KSksKGZ1bmN0aW9uKHQpe3RbdC5OYXJyb3c9MF09Ik5hcnJvdyIsdFt0LkFiYnJldmlhdGVkPTFdPSJBYmJyZXZpYXRlZCIsdFt0LldpZGU9Ml09IldpZGUiLHRbdC5TaG9ydD0zXT0iU2hvcnQifSkoU018fChTTT17fSkpLChmdW5jdGlvbih0KXt0W3QuU2hvcnQ9MF09IlNob3J0Iix0W3QuTWVkaXVtPTFdPSJNZWRpdW0iLHRbdC5Mb25nPTJdPSJMb25nIix0W3QuRnVsbD0zXT0iRnVsbCJ9KShETXx8KERNPXt9KSksKGZ1bmN0aW9uKHQpe3RbdC5EZWNpbWFsPTBdPSJEZWNpbWFsIix0W3QuR3JvdXA9MV09Ikdyb3VwIix0W3QuTGlzdD0yXT0iTGlzdCIsdFt0LlBlcmNlbnRTaWduPTNdPSJQZXJjZW50U2lnbiIsdFt0LlBsdXNTaWduPTRdPSJQbHVzU2lnbiIsdFt0Lk1pbnVzU2lnbj01XT0iTWludXNTaWduIix0W3QuRXhwb25lbnRpYWw9Nl09IkV4cG9uZW50aWFsIix0W3QuU3VwZXJzY3JpcHRpbmdFeHBvbmVudD03XT0iU3VwZXJzY3JpcHRpbmdFeHBvbmVudCIsdFt0LlBlck1pbGxlPThdPSJQZXJNaWxsZSIsdFt0WzEvMF09OV09IkluZmluaXR5Iix0W3QuTmFOPTEwXT0iTmFOIix0W3QuVGltZVNlcGFyYXRvcj0xMV09IlRpbWVTZXBhcmF0b3IiLHRbdC5DdXJyZW5jeURlY2ltYWw9MTJdPSJDdXJyZW5jeURlY2ltYWwiLHRbdC5DdXJyZW5jeUdyb3VwPTEzXT0iQ3VycmVuY3lHcm91cCJ9KShSTXx8KFJNPXt9KSksKGZ1bmN0aW9uKHQpe3RbdC5TdW5kYXk9MF09IlN1bmRheSIsdFt0Lk1vbmRheT0xXT0iTW9uZGF5Iix0W3QuVHVlc2RheT0yXT0iVHVlc2RheSIsdFt0LldlZG5lc2RheT0zXT0iV2VkbmVzZGF5Iix0W3QuVGh1cnNkYXk9NF09IlRodXJzZGF5Iix0W3QuRnJpZGF5PTVdPSJGcmlkYXkiLHRbdC5TYXR1cmRheT02XT0iU2F0dXJkYXkifSkoRU18fChFTT17fSkpO2NvbnN0IEhNPWhnO2Z1bmN0aW9uIEZNKHQpe2lmKCF0W3lnLkV4dHJhRGF0YV0pdGhyb3cgbmV3IEVycm9yKGBNaXNzaW5nIGV4dHJhIGxvY2FsZSBkYXRhIGZvciB0aGUgbG9jYWxlICIke3RbeWcuTG9jYWxlSWRdfSIuIFVzZSAicmVnaXN0ZXJMb2NhbGVEYXRhIiB0byBsb2FkIG5ldyBkYXRhLiBTZWUgdGhlICJJMThuIGd1aWRlIiBvbiBhbmd1bGFyLmlvIHRvIGtub3cgbW9yZS5gKX1mdW5jdGlvbiBMTSh0LGUpe2ZvcihsZXQgbj1lO24+LTE7bi0tKWlmKHZvaWQgMCE9PXRbbl0pcmV0dXJuIHRbbl07dGhyb3cgbmV3IEVycm9yKCJMb2NhbGUgZGF0YSBBUEk6IGxvY2FsZSBkYXRhIHVuZGVmaW5lZCIpfWZ1bmN0aW9uIEJNKHQpe2NvbnN0W2Usbl09dC5zcGxpdCgiOiIpO3JldHVybntob3VyczorZSxtaW51dGVzOitufX1mdW5jdGlvbiBWTSh0LGUsbj0iZW4iKXtjb25zdCBvPShmdW5jdGlvbiBpKHQpe3JldHVybiBnZyh0KVt5Zy5DdXJyZW5jaWVzXX0pKG4pW3RdfHxPTVt0XXx8W10sYT1vWzFdO3JldHVybiJuYXJyb3ciPT09ZSYmInN0cmluZyI9PXR5cGVvZiBhP2E6b1swXXx8dH0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IGpNPS9eKFxkezR9KS0/KFxkXGQpLT8oXGRcZCkoPzpUKFxkXGQpKD86Oj8oXGRcZCkoPzo6PyhcZFxkKSg/OlwuKFxkKykpPyk/KT8oWnwoWystXSkoXGRcZCk6PyhcZFxkKSk/KT8kLyxVTT17fSxXTT0vKCg/OlteQkVHSExNT1NXWVphYmNkaG1zd3l6J10rKXwoPzonKD86W14nXXwnJykqJyl8KD86R3sxLDV9fHl7MSw0fXxZezEsNH18TXsxLDV9fEx7MSw1fXx3ezEsMn18V3sxfXxkezEsMn18RXsxLDZ9fGN7MSw2fXxhezEsNX18YnsxLDV9fEJ7MSw1fXxoezEsMn18SHsxLDJ9fG17MSwyfXxzezEsMn18U3sxLDN9fHp7MSw0fXxaezEsNX18T3sxLDR9KSkoW1xzXFNdKikvO3ZhciBHTSxZTSxxTTtmdW5jdGlvbiBaTSh0LGUsbixvKXtsZXQgaT0oZnVuY3Rpb24gYSh0KXtpZihzdih0KSlyZXR1cm4gdDtpZigibnVtYmVyIj09dHlwZW9mIHQmJiFpc05hTih0KSlyZXR1cm4gbmV3IERhdGUodCk7aWYoInN0cmluZyI9PXR5cGVvZiB0KXtpZih0PXQudHJpbSgpLC9eKFxkezR9KC1cZHsxLDJ9KC1cZHsxLDJ9KT8pPykkLy50ZXN0KHQpKXtjb25zdFtlLG49MSxvPTFdPXQuc3BsaXQoIi0iKS5tYXAoKHQ9Pit0KSk7cmV0dXJuIFhNKGUsbi0xLG8pfWNvbnN0IGU9cGFyc2VGbG9hdCh0KTtpZighaXNOYU4odC1lKSlyZXR1cm4gbmV3IERhdGUoZSk7bGV0IG47aWYobj10Lm1hdGNoKGpNKSlyZXR1cm4oZnVuY3Rpb24gZSh0KXtjb25zdCBlPW5ldyBEYXRlKDApO2xldCBuPTAsbz0wO2NvbnN0IGk9dFs4XT9lLnNldFVUQ0Z1bGxZZWFyOmUuc2V0RnVsbFllYXIsYT10WzhdP2Uuc2V0VVRDSG91cnM6ZS5zZXRIb3Vyczt0WzldJiYobj1OdW1iZXIodFs5XSt0WzEwXSksbz1OdW1iZXIodFs5XSt0WzExXSkpO2kuY2FsbChlLE51bWJlcih0WzFdKSxOdW1iZXIodFsyXSktMSxOdW1iZXIodFszXSkpO2NvbnN0IHI9TnVtYmVyKHRbNF18fDApLW4scz1OdW1iZXIodFs1XXx8MCktbyxsPU51bWJlcih0WzZdfHwwKSxjPU1hdGguZmxvb3IoMWUzKnBhcnNlRmxvYXQoIjAuIisodFs3XXx8MCkpKTtyZXR1cm4gYS5jYWxsKGUscixzLGwsYyksZX0pKG4pfWNvbnN0IG49bmV3IERhdGUodCk7aWYoIXN2KG4pKXRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIGNvbnZlcnQgIiR7dH0iIGludG8gYSBkYXRlYCk7cmV0dXJuIG59KSh0KTtlPUtNKG4sZSl8fGU7bGV0IHIscz1bXTtmb3IoO2U7KXtpZihyPVdNLmV4ZWMoZSksIXIpe3MucHVzaChlKTticmVha317cz1zLmNvbmNhdChyLnNsaWNlKDEpKTtjb25zdCB0PXMucG9wKCk7aWYoIXQpYnJlYWs7ZT10fX1sZXQgbD1pLmdldFRpbWV6b25lT2Zmc2V0KCk7byYmKGw9cnYobyxsKSxpPShmdW5jdGlvbiBjKHQsZSxuKXtjb25zdCBvPW4/LTE6MSxpPXQuZ2V0VGltZXpvbmVPZmZzZXQoKSxhPXJ2KGUsaSk7cmV0dXJuKGZ1bmN0aW9uIHIodCxlKXtyZXR1cm4odD1uZXcgRGF0ZSh0LmdldFRpbWUoKSkpLnNldE1pbnV0ZXModC5nZXRNaW51dGVzKCkrZSksdH0pKHQsbyooYS1pKSl9KShpLG8sITApKTtsZXQgZD0iIjtyZXR1cm4gcy5mb3JFYWNoKCh0PT57Y29uc3QgZT0oZnVuY3Rpb24gbyh0KXtpZihhdlt0XSlyZXR1cm4gYXZbdF07bGV0IGU7c3dpdGNoKHQpe2Nhc2UiRyI6Y2FzZSJHRyI6Y2FzZSJHR0ciOmU9dHYocU0uRXJhcyxTTS5BYmJyZXZpYXRlZCk7YnJlYWs7Y2FzZSJHR0dHIjplPXR2KHFNLkVyYXMsU00uV2lkZSk7YnJlYWs7Y2FzZSJHR0dHRyI6ZT10dihxTS5FcmFzLFNNLk5hcnJvdyk7YnJlYWs7Y2FzZSJ5IjplPSRNKFlNLkZ1bGxZZWFyLDEsMCwhMSwhMCk7YnJlYWs7Y2FzZSJ5eSI6ZT0kTShZTS5GdWxsWWVhciwyLDAsITAsITApO2JyZWFrO2Nhc2UieXl5IjplPSRNKFlNLkZ1bGxZZWFyLDMsMCwhMSwhMCk7YnJlYWs7Y2FzZSJ5eXl5IjplPSRNKFlNLkZ1bGxZZWFyLDQsMCwhMSwhMCk7YnJlYWs7Y2FzZSJZIjplPWl2KDEpO2JyZWFrO2Nhc2UiWVkiOmU9aXYoMiwhMCk7YnJlYWs7Y2FzZSJZWVkiOmU9aXYoMyk7YnJlYWs7Y2FzZSJZWVlZIjplPWl2KDQpO2JyZWFrO2Nhc2UiTSI6Y2FzZSJMIjplPSRNKFlNLk1vbnRoLDEsMSk7YnJlYWs7Y2FzZSJNTSI6Y2FzZSJMTCI6ZT0kTShZTS5Nb250aCwyLDEpO2JyZWFrO2Nhc2UiTU1NIjplPXR2KHFNLk1vbnRocyxTTS5BYmJyZXZpYXRlZCk7YnJlYWs7Y2FzZSJNTU1NIjplPXR2KHFNLk1vbnRocyxTTS5XaWRlKTticmVhaztjYXNlIk1NTU1NIjplPXR2KHFNLk1vbnRocyxTTS5OYXJyb3cpO2JyZWFrO2Nhc2UiTExMIjplPXR2KHFNLk1vbnRocyxTTS5BYmJyZXZpYXRlZCxrTS5TdGFuZGFsb25lKTticmVhaztjYXNlIkxMTEwiOmU9dHYocU0uTW9udGhzLFNNLldpZGUsa00uU3RhbmRhbG9uZSk7YnJlYWs7Y2FzZSJMTExMTCI6ZT10dihxTS5Nb250aHMsU00uTmFycm93LGtNLlN0YW5kYWxvbmUpO2JyZWFrO2Nhc2UidyI6ZT1vdigxKTticmVhaztjYXNlInd3IjplPW92KDIpO2JyZWFrO2Nhc2UiVyI6ZT1vdigxLCEwKTticmVhaztjYXNlImQiOmU9JE0oWU0uRGF0ZSwxKTticmVhaztjYXNlImRkIjplPSRNKFlNLkRhdGUsMik7YnJlYWs7Y2FzZSJjIjpjYXNlImNjIjplPSRNKFlNLkRheSwxKTticmVhaztjYXNlImNjYyI6ZT10dihxTS5EYXlzLFNNLkFiYnJldmlhdGVkLGtNLlN0YW5kYWxvbmUpO2JyZWFrO2Nhc2UiY2NjYyI6ZT10dihxTS5EYXlzLFNNLldpZGUsa00uU3RhbmRhbG9uZSk7YnJlYWs7Y2FzZSJjY2NjYyI6ZT10dihxTS5EYXlzLFNNLk5hcnJvdyxrTS5TdGFuZGFsb25lKTticmVhaztjYXNlImNjY2NjYyI6ZT10dihxTS5EYXlzLFNNLlNob3J0LGtNLlN0YW5kYWxvbmUpO2JyZWFrO2Nhc2UiRSI6Y2FzZSJFRSI6Y2FzZSJFRUUiOmU9dHYocU0uRGF5cyxTTS5BYmJyZXZpYXRlZCk7YnJlYWs7Y2FzZSJFRUVFIjplPXR2KHFNLkRheXMsU00uV2lkZSk7YnJlYWs7Y2FzZSJFRUVFRSI6ZT10dihxTS5EYXlzLFNNLk5hcnJvdyk7YnJlYWs7Y2FzZSJFRUVFRUUiOmU9dHYocU0uRGF5cyxTTS5TaG9ydCk7YnJlYWs7Y2FzZSJhIjpjYXNlImFhIjpjYXNlImFhYSI6ZT10dihxTS5EYXlQZXJpb2RzLFNNLkFiYnJldmlhdGVkKTticmVhaztjYXNlImFhYWEiOmU9dHYocU0uRGF5UGVyaW9kcyxTTS5XaWRlKTticmVhaztjYXNlImFhYWFhIjplPXR2KHFNLkRheVBlcmlvZHMsU00uTmFycm93KTticmVhaztjYXNlImIiOmNhc2UiYmIiOmNhc2UiYmJiIjplPXR2KHFNLkRheVBlcmlvZHMsU00uQWJicmV2aWF0ZWQsa00uU3RhbmRhbG9uZSwhMCk7YnJlYWs7Y2FzZSJiYmJiIjplPXR2KHFNLkRheVBlcmlvZHMsU00uV2lkZSxrTS5TdGFuZGFsb25lLCEwKTticmVhaztjYXNlImJiYmJiIjplPXR2KHFNLkRheVBlcmlvZHMsU00uTmFycm93LGtNLlN0YW5kYWxvbmUsITApO2JyZWFrO2Nhc2UiQiI6Y2FzZSJCQiI6Y2FzZSJCQkIiOmU9dHYocU0uRGF5UGVyaW9kcyxTTS5BYmJyZXZpYXRlZCxrTS5Gb3JtYXQsITApO2JyZWFrO2Nhc2UiQkJCQiI6ZT10dihxTS5EYXlQZXJpb2RzLFNNLldpZGUsa00uRm9ybWF0LCEwKTticmVhaztjYXNlIkJCQkJCIjplPXR2KHFNLkRheVBlcmlvZHMsU00uTmFycm93LGtNLkZvcm1hdCwhMCk7YnJlYWs7Y2FzZSJoIjplPSRNKFlNLkhvdXJzLDEsLTEyKTticmVhaztjYXNlImhoIjplPSRNKFlNLkhvdXJzLDIsLTEyKTticmVhaztjYXNlIkgiOmU9JE0oWU0uSG91cnMsMSk7YnJlYWs7Y2FzZSJISCI6ZT0kTShZTS5Ib3VycywyKTticmVhaztjYXNlIm0iOmU9JE0oWU0uTWludXRlcywxKTticmVhaztjYXNlIm1tIjplPSRNKFlNLk1pbnV0ZXMsMik7YnJlYWs7Y2FzZSJzIjplPSRNKFlNLlNlY29uZHMsMSk7YnJlYWs7Y2FzZSJzcyI6ZT0kTShZTS5TZWNvbmRzLDIpO2JyZWFrO2Nhc2UiUyI6ZT0kTShZTS5GcmFjdGlvbmFsU2Vjb25kcywxKTticmVhaztjYXNlIlNTIjplPSRNKFlNLkZyYWN0aW9uYWxTZWNvbmRzLDIpO2JyZWFrO2Nhc2UiU1NTIjplPSRNKFlNLkZyYWN0aW9uYWxTZWNvbmRzLDMpO2JyZWFrO2Nhc2UiWiI6Y2FzZSJaWiI6Y2FzZSJaWloiOmU9ZXYoR00uU2hvcnQpO2JyZWFrO2Nhc2UiWlpaWloiOmU9ZXYoR00uRXh0ZW5kZWQpO2JyZWFrO2Nhc2UiTyI6Y2FzZSJPTyI6Y2FzZSJPT08iOmNhc2UieiI6Y2FzZSJ6eiI6Y2FzZSJ6enoiOmU9ZXYoR00uU2hvcnRHTVQpO2JyZWFrO2Nhc2UiT09PTyI6Y2FzZSJaWlpaIjpjYXNlInp6enoiOmU9ZXYoR00uTG9uZyk7YnJlYWs7ZGVmYXVsdDpyZXR1cm4gbnVsbH1yZXR1cm4gYXZbdF09ZSxlfSkodCk7ZCs9ZT9lKGksbixsKToiJyciPT09dD8iJyI6dC5yZXBsYWNlKC8oXid8JyQpL2csIiIpLnJlcGxhY2UoLycnL2csIiciKX0pKSxkfWZ1bmN0aW9uIFhNKHQsZSxuKXtjb25zdCBvPW5ldyBEYXRlKDApO3JldHVybiBvLnNldEZ1bGxZZWFyKHQsZSxuKSxvLnNldEhvdXJzKDAsMCwwKSxvfWZ1bmN0aW9uIEtNKHQsZSl7Y29uc3Qgbj0oZnVuY3Rpb24gbyh0KXtyZXR1cm4gZ2codClbeWcuTG9jYWxlSWRdfSkodCk7aWYoVU1bbl09VU1bbl18fHt9LFVNW25dW2VdKXJldHVybiBVTVtuXVtlXTtsZXQgaT0iIjtzd2l0Y2goZSl7Y2FzZSJzaG9ydERhdGUiOmk9QU0odCxETS5TaG9ydCk7YnJlYWs7Y2FzZSJtZWRpdW1EYXRlIjppPUFNKHQsRE0uTWVkaXVtKTticmVhaztjYXNlImxvbmdEYXRlIjppPUFNKHQsRE0uTG9uZyk7YnJlYWs7Y2FzZSJmdWxsRGF0ZSI6aT1BTSh0LERNLkZ1bGwpO2JyZWFrO2Nhc2Uic2hvcnRUaW1lIjppPVRNKHQsRE0uU2hvcnQpO2JyZWFrO2Nhc2UibWVkaXVtVGltZSI6aT1UTSh0LERNLk1lZGl1bSk7YnJlYWs7Y2FzZSJsb25nVGltZSI6aT1UTSh0LERNLkxvbmcpO2JyZWFrO2Nhc2UiZnVsbFRpbWUiOmk9VE0odCxETS5GdWxsKTticmVhaztjYXNlInNob3J0Ijpjb25zdCBlPUtNKHQsInNob3J0VGltZSIpLG49S00odCwic2hvcnREYXRlIik7aT1KTShOTSh0LERNLlNob3J0KSxbZSxuXSk7YnJlYWs7Y2FzZSJtZWRpdW0iOmNvbnN0IG89S00odCwibWVkaXVtVGltZSIpLGE9S00odCwibWVkaXVtRGF0ZSIpO2k9Sk0oTk0odCxETS5NZWRpdW0pLFtvLGFdKTticmVhaztjYXNlImxvbmciOmNvbnN0IHI9S00odCwibG9uZ1RpbWUiKSxzPUtNKHQsImxvbmdEYXRlIik7aT1KTShOTSh0LERNLkxvbmcpLFtyLHNdKTticmVhaztjYXNlImZ1bGwiOmNvbnN0IGw9S00odCwiZnVsbFRpbWUiKSxjPUtNKHQsImZ1bGxEYXRlIik7aT1KTShOTSh0LERNLkZ1bGwpLFtsLGNdKX1yZXR1cm4gaSYmKFVNW25dW2VdPWkpLGl9ZnVuY3Rpb24gSk0odCxlKXtyZXR1cm4gZSYmKHQ9dC5yZXBsYWNlKC9ceyhbXn1dKyl9L2csKGZ1bmN0aW9uKHQsbil7cmV0dXJuIG51bGwhPWUmJm4gaW4gZT9lW25dOnR9KSkpLHR9ZnVuY3Rpb24gUU0odCxlLG49Ii0iLG8saSl7bGV0IGE9IiI7KHQ8MHx8aSYmdDw9MCkmJihpP3Q9MS10Oih0PS10LGE9bikpO2xldCByPVN0cmluZyh0KTtmb3IoO3IubGVuZ3RoPGU7KXI9IjAiK3I7cmV0dXJuIG8mJihyPXIuc3Vic3RyKHIubGVuZ3RoLWUpKSxhK3J9ZnVuY3Rpb24gJE0odCxlLG49MCxvPSExLGk9ITEpe3JldHVybiBmdW5jdGlvbihhLHIpe2xldCBzPShmdW5jdGlvbiBsKHQsZSl7c3dpdGNoKHQpe2Nhc2UgWU0uRnVsbFllYXI6cmV0dXJuIGUuZ2V0RnVsbFllYXIoKTtjYXNlIFlNLk1vbnRoOnJldHVybiBlLmdldE1vbnRoKCk7Y2FzZSBZTS5EYXRlOnJldHVybiBlLmdldERhdGUoKTtjYXNlIFlNLkhvdXJzOnJldHVybiBlLmdldEhvdXJzKCk7Y2FzZSBZTS5NaW51dGVzOnJldHVybiBlLmdldE1pbnV0ZXMoKTtjYXNlIFlNLlNlY29uZHM6cmV0dXJuIGUuZ2V0U2Vjb25kcygpO2Nhc2UgWU0uRnJhY3Rpb25hbFNlY29uZHM6cmV0dXJuIGUuZ2V0TWlsbGlzZWNvbmRzKCk7Y2FzZSBZTS5EYXk6cmV0dXJuIGUuZ2V0RGF5KCk7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gRGF0ZVR5cGUgdmFsdWUgIiR7dH0iLmApfX0pKHQsYSk7aWYoKG4+MHx8cz4tbikmJihzKz1uKSx0PT09WU0uSG91cnMpMD09PXMmJi0xMj09PW4mJihzPTEyKTtlbHNlIGlmKHQ9PT1ZTS5GcmFjdGlvbmFsU2Vjb25kcylyZXR1cm4oZnVuY3Rpb24gYyh0LGUpe3JldHVybiBRTSh0LDMpLnN1YnN0cigwLGUpfSkocyxlKTtjb25zdCBkPXpNKHIsUk0uTWludXNTaWduKTtyZXR1cm4gUU0ocyxlLGQsbyxpKX19ZnVuY3Rpb24gdHYodCxlLG49a00uRm9ybWF0LG89ITEpe3JldHVybiBmdW5jdGlvbihpLGEpe3JldHVybihmdW5jdGlvbiByKHQsZSxuLG8saSxhKXtzd2l0Y2gobil7Y2FzZSBxTS5Nb250aHM6cmV0dXJuKGZ1bmN0aW9uIHIodCxlLG4pe2NvbnN0IG89Z2codCksaT1MTShbb1t5Zy5Nb250aHNGb3JtYXRdLG9beWcuTW9udGhzU3RhbmRhbG9uZV1dLGUpO3JldHVybiBMTShpLG4pfSkoZSxpLG8pW3QuZ2V0TW9udGgoKV07Y2FzZSBxTS5EYXlzOnJldHVybihmdW5jdGlvbiBzKHQsZSxuKXtjb25zdCBvPWdnKHQpLGk9TE0oW29beWcuRGF5c0Zvcm1hdF0sb1t5Zy5EYXlzU3RhbmRhbG9uZV1dLGUpO3JldHVybiBMTShpLG4pfSkoZSxpLG8pW3QuZ2V0RGF5KCldO2Nhc2UgcU0uRGF5UGVyaW9kczpjb25zdCByPXQuZ2V0SG91cnMoKSxzPXQuZ2V0TWludXRlcygpO2lmKGEpe2NvbnN0IHQ9KGZ1bmN0aW9uIGwodCl7Y29uc3QgZT1nZyh0KTtyZXR1cm4gRk0oZSksKGVbeWcuRXh0cmFEYXRhXVsyXXx8W10pLm1hcCgodD0+InN0cmluZyI9PXR5cGVvZiB0P0JNKHQpOltCTSh0WzBdKSxCTSh0WzFdKV0pKX0pKGUpLG49KGZ1bmN0aW9uIGModCxlLG4pe2NvbnN0IG89Z2codCk7Rk0obyk7Y29uc3QgaT1MTShbb1t5Zy5FeHRyYURhdGFdWzBdLG9beWcuRXh0cmFEYXRhXVsxXV0sZSl8fFtdO3JldHVybiBMTShpLG4pfHxbXX0pKGUsaSxvKSxhPXQuZmluZEluZGV4KCh0PT57aWYoQXJyYXkuaXNBcnJheSh0KSl7Y29uc3RbZSxuXT10LG89cj49ZS5ob3VycyYmcz49ZS5taW51dGVzLGk9cjxuLmhvdXJzfHxyPT09bi5ob3VycyYmczxuLm1pbnV0ZXM7aWYoZS5ob3VyczxuLmhvdXJzKXtpZihvJiZpKXJldHVybiEwfWVsc2UgaWYob3x8aSlyZXR1cm4hMH1lbHNlIGlmKHQuaG91cnM9PT1yJiZ0Lm1pbnV0ZXM9PT1zKXJldHVybiEwO3JldHVybiExfSkpO2lmKC0xIT09YSlyZXR1cm4gblthXX1yZXR1cm4oZnVuY3Rpb24gZCh0LGUsbil7Y29uc3Qgbz1nZyh0KSxpPUxNKFtvW3lnLkRheVBlcmlvZHNGb3JtYXRdLG9beWcuRGF5UGVyaW9kc1N0YW5kYWxvbmVdXSxlKTtyZXR1cm4gTE0oaSxuKX0pKGUsaSxvKVtyPDEyPzA6MV07Y2FzZSBxTS5FcmFzOnJldHVybihmdW5jdGlvbiBwKHQsZSl7cmV0dXJuIExNKGdnKHQpW3lnLkVyYXNdLGUpfSkoZSxvKVt0LmdldEZ1bGxZZWFyKCk8PTA/MDoxXTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgdW5leHBlY3RlZCB0cmFuc2xhdGlvbiB0eXBlICR7bn1gKX19KShpLGEsdCxlLG4sbyl9fWZ1bmN0aW9uIGV2KHQpe3JldHVybiBmdW5jdGlvbihlLG4sbyl7Y29uc3QgaT0tMSpvLGE9ek0obixSTS5NaW51c1NpZ24pLHI9aT4wP01hdGguZmxvb3IoaS82MCk6TWF0aC5jZWlsKGkvNjApO3N3aXRjaCh0KXtjYXNlIEdNLlNob3J0OnJldHVybihpPj0wPyIrIjoiIikrUU0ociwyLGEpK1FNKE1hdGguYWJzKGklNjApLDIsYSk7Y2FzZSBHTS5TaG9ydEdNVDpyZXR1cm4iR01UIisoaT49MD8iKyI6IiIpK1FNKHIsMSxhKTtjYXNlIEdNLkxvbmc6cmV0dXJuIkdNVCIrKGk+PTA/IisiOiIiKStRTShyLDIsYSkrIjoiK1FNKE1hdGguYWJzKGklNjApLDIsYSk7Y2FzZSBHTS5FeHRlbmRlZDpyZXR1cm4gMD09PW8/IloiOihpPj0wPyIrIjoiIikrUU0ociwyLGEpKyI6IitRTShNYXRoLmFicyhpJTYwKSwyLGEpO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGBVbmtub3duIHpvbmUgd2lkdGggIiR7dH0iYCl9fX0hKGZ1bmN0aW9uKHQpe3RbdC5TaG9ydD0wXT0iU2hvcnQiLHRbdC5TaG9ydEdNVD0xXT0iU2hvcnRHTVQiLHRbdC5Mb25nPTJdPSJMb25nIix0W3QuRXh0ZW5kZWQ9M109IkV4dGVuZGVkIn0pKEdNfHwoR009e30pKSwoZnVuY3Rpb24odCl7dFt0LkZ1bGxZZWFyPTBdPSJGdWxsWWVhciIsdFt0Lk1vbnRoPTFdPSJNb250aCIsdFt0LkRhdGU9Ml09IkRhdGUiLHRbdC5Ib3Vycz0zXT0iSG91cnMiLHRbdC5NaW51dGVzPTRdPSJNaW51dGVzIix0W3QuU2Vjb25kcz01XT0iU2Vjb25kcyIsdFt0LkZyYWN0aW9uYWxTZWNvbmRzPTZdPSJGcmFjdGlvbmFsU2Vjb25kcyIsdFt0LkRheT03XT0iRGF5In0pKFlNfHwoWU09e30pKSwoZnVuY3Rpb24odCl7dFt0LkRheVBlcmlvZHM9MF09IkRheVBlcmlvZHMiLHRbdC5EYXlzPTFdPSJEYXlzIix0W3QuTW9udGhzPTJdPSJNb250aHMiLHRbdC5FcmFzPTNdPSJFcmFzIn0pKHFNfHwocU09e30pKTtmdW5jdGlvbiBudih0KXtyZXR1cm4gWE0odC5nZXRGdWxsWWVhcigpLHQuZ2V0TW9udGgoKSx0LmdldERhdGUoKSsoNC10LmdldERheSgpKSl9ZnVuY3Rpb24gb3YodCxlPSExKXtyZXR1cm4gZnVuY3Rpb24obixvKXtsZXQgaTtpZihlKXtjb25zdCB0PW5ldyBEYXRlKG4uZ2V0RnVsbFllYXIoKSxuLmdldE1vbnRoKCksMSkuZ2V0RGF5KCktMSxlPW4uZ2V0RGF0ZSgpO2k9MStNYXRoLmZsb29yKChlK3QpLzcpfWVsc2V7Y29uc3QgdD1udihuKSxlPShmdW5jdGlvbiBhKHQpe2NvbnN0IGU9WE0odCwwLDEpLmdldERheSgpO3JldHVybiBYTSh0LDAsMSsoZTw9ND80OjExKS1lKX0pKHQuZ2V0RnVsbFllYXIoKSksbz10LmdldFRpbWUoKS1lLmdldFRpbWUoKTtpPTErTWF0aC5yb3VuZChvLzYwNDhlNSl9cmV0dXJuIFFNKGksdCx6TShvLFJNLk1pbnVzU2lnbikpfX1mdW5jdGlvbiBpdih0LGU9ITEpe3JldHVybiBmdW5jdGlvbihuLG8pe3JldHVybiBRTShudihuKS5nZXRGdWxsWWVhcigpLHQsek0obyxSTS5NaW51c1NpZ24pLGUpfX1jb25zdCBhdj17fTtmdW5jdGlvbiBydih0LGUpe3Q9dC5yZXBsYWNlKC86L2csIiIpO2NvbnN0IG49RGF0ZS5wYXJzZSgiSmFuIDAxLCAxOTcwIDAwOjAwOjAwICIrdCkvNmU0O3JldHVybiBpc05hTihuKT9lOm59ZnVuY3Rpb24gc3YodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBEYXRlJiYhaXNOYU4odC52YWx1ZU9mKCkpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jb25zdCBsdj0vXihcZCspP1wuKChcZCspKC0oXGQrKSk/KT8kLyxjdj0iLiIsZHY9IjAiO2Z1bmN0aW9uIHB2KHQsZSxuLG8saSxhLHI9ITEpe2xldCBzPSIiLGw9ITE7aWYoaXNGaW5pdGUodCkpe2xldCBjPShmdW5jdGlvbiBjKHQpe2xldCBlLG4sbyxpLGEscj1NYXRoLmFicyh0KSsiIixzPTA7KG49ci5pbmRleE9mKGN2KSk+LTEmJihyPXIucmVwbGFjZShjdiwiIikpOyhvPXIuc2VhcmNoKC9lL2kpKT4wPyhuPDAmJihuPW8pLG4rPStyLnNsaWNlKG8rMSkscj1yLnN1YnN0cmluZygwLG8pKTpuPDAmJihuPXIubGVuZ3RoKTtmb3Iobz0wO3IuY2hhckF0KG8pPT09ZHY7bysrKTtpZihvPT09KGE9ci5sZW5ndGgpKWU9WzBdLG49MTtlbHNle2ZvcihhLS07ci5jaGFyQXQoYSk9PT1kdjspYS0tO2ZvcihuLT1vLGU9W10saT0wO288PWE7bysrLGkrKyllW2ldPU51bWJlcihyLmNoYXJBdChvKSl9bj4yMiYmKGU9ZS5zcGxpY2UoMCwyMSkscz1uLTEsbj0xKTtyZXR1cm57ZGlnaXRzOmUsZXhwb25lbnQ6cyxpbnRlZ2VyTGVuOm59fSkodCk7ciYmKGM9KGZ1bmN0aW9uIGQodCl7aWYoMD09PXQuZGlnaXRzWzBdKXJldHVybiB0O2NvbnN0IGU9dC5kaWdpdHMubGVuZ3RoLXQuaW50ZWdlckxlbjt0LmV4cG9uZW50P3QuZXhwb25lbnQrPTI6KDA9PT1lP3QuZGlnaXRzLnB1c2goMCwwKToxPT09ZSYmdC5kaWdpdHMucHVzaCgwKSx0LmludGVnZXJMZW4rPTIpO3JldHVybiB0fSkoYykpO2xldCBkPWUubWluSW50LHA9ZS5taW5GcmFjLG09ZS5tYXhGcmFjO2lmKGEpe2NvbnN0IHQ9YS5tYXRjaChsdik7aWYobnVsbD09PXQpdGhyb3cgbmV3IEVycm9yKGAke2F9IGlzIG5vdCBhIHZhbGlkIGRpZ2l0IGluZm9gKTtjb25zdCBlPXRbMV0sbj10WzNdLG89dFs1XTtudWxsIT1lJiYoZD1ndihlKSksbnVsbCE9biYmKHA9Z3YobikpLG51bGwhPW8/bT1ndihvKTpudWxsIT1uJiZwPm0mJihtPXApfSEoZnVuY3Rpb24gcCh0LGUsbil7aWYoZT5uKXRocm93IG5ldyBFcnJvcihgVGhlIG1pbmltdW0gbnVtYmVyIG9mIGRpZ2l0cyBhZnRlciBmcmFjdGlvbiAoJHtlfSkgaXMgaGlnaGVyIHRoYW4gdGhlIG1heGltdW0gKCR7bn0pLmApO2xldCBvPXQuZGlnaXRzLGk9by5sZW5ndGgtdC5pbnRlZ2VyTGVuO2NvbnN0IGE9TWF0aC5taW4oTWF0aC5tYXgoZSxpKSxuKTtsZXQgcj1hK3QuaW50ZWdlckxlbixzPW9bcl07aWYocj4wKXtvLnNwbGljZShNYXRoLm1heCh0LmludGVnZXJMZW4scikpO2ZvcihsZXQgdD1yO3Q8by5sZW5ndGg7dCsrKW9bdF09MH1lbHNle2k9TWF0aC5tYXgoMCxpKSx0LmludGVnZXJMZW49MSxvLmxlbmd0aD1NYXRoLm1heCgxLHI9YSsxKSxvWzBdPTA7Zm9yKGxldCB0PTE7dDxyO3QrKylvW3RdPTB9aWYocz49NSlpZihyLTE8MCl7Zm9yKGxldCBlPTA7ZT5yO2UtLSlvLnVuc2hpZnQoMCksdC5pbnRlZ2VyTGVuKys7by51bnNoaWZ0KDEpLHQuaW50ZWdlckxlbisrfWVsc2Ugb1tyLTFdKys7Zm9yKDtpPE1hdGgubWF4KDAsYSk7aSsrKW8ucHVzaCgwKTtsZXQgbD0wIT09YTtjb25zdCBjPWUrdC5pbnRlZ2VyTGVuLGQ9by5yZWR1Y2VSaWdodCgoZnVuY3Rpb24odCxlLG4sbyl7cmV0dXJuIG9bbl09KGUrPXQpPDEwP2U6ZS0xMCxsJiYoMD09PW9bbl0mJm4+PWM/by5wb3AoKTpsPSExKSxlPj0xMD8xOjB9KSwwKTtkJiYoby51bnNoaWZ0KGQpLHQuaW50ZWdlckxlbisrKX0pKGMscCxtKTtsZXQgZj1jLmRpZ2l0cyx1PWMuaW50ZWdlckxlbjtjb25zdCBnPWMuZXhwb25lbnQ7bGV0IGg9W107Zm9yKGw9Zi5ldmVyeSgodD0+IXQpKTt1PGQ7dSsrKWYudW5zaGlmdCgwKTtmb3IoO3U8MDt1KyspZi51bnNoaWZ0KDApO3U+MD9oPWYuc3BsaWNlKHUsZi5sZW5ndGgpOihoPWYsZj1bMF0pO2NvbnN0IGI9W107Zm9yKGYubGVuZ3RoPj1lLmxnU2l6ZSYmYi51bnNoaWZ0KGYuc3BsaWNlKC1lLmxnU2l6ZSxmLmxlbmd0aCkuam9pbigiIikpO2YubGVuZ3RoPmUuZ1NpemU7KWIudW5zaGlmdChmLnNwbGljZSgtZS5nU2l6ZSxmLmxlbmd0aCkuam9pbigiIikpO2YubGVuZ3RoJiZiLnVuc2hpZnQoZi5qb2luKCIiKSkscz1iLmpvaW4oek0obixvKSksaC5sZW5ndGgmJihzKz16TShuLGkpK2guam9pbigiIikpLGcmJihzKz16TShuLFJNLkV4cG9uZW50aWFsKSsiKyIrZyl9ZWxzZSBzPXpNKG4sUk0uSW5maW5pdHkpO3JldHVybiBzPXQ8MCYmIWw/ZS5uZWdQcmUrcytlLm5lZ1N1ZjplLnBvc1ByZStzK2UucG9zU3VmLHN9ZnVuY3Rpb24gbXYodCxlLG4sbyxpKXtjb25zdCBhPXV2KElNKGUsUE0uQ3VycmVuY3kpLHpNKGUsUk0uTWludXNTaWduKSk7YS5taW5GcmFjPShmdW5jdGlvbiByKHQpe2xldCBlO2NvbnN0IG49T01bdF07cmV0dXJuIG4mJihlPW5bMl0pLCJudW1iZXIiPT10eXBlb2YgZT9lOjJ9KShvKSxhLm1heEZyYWM9YS5taW5GcmFjO3JldHVybiBwdih0LGEsZSxSTS5DdXJyZW5jeUdyb3VwLFJNLkN1cnJlbmN5RGVjaW1hbCxpKS5yZXBsYWNlKCLCpCIsbikucmVwbGFjZSgiwqQiLCIiKS50cmltKCl9ZnVuY3Rpb24gZnYodCxlLG4pe3JldHVybiBwdih0LHV2KElNKGUsUE0uRGVjaW1hbCksek0oZSxSTS5NaW51c1NpZ24pKSxlLFJNLkdyb3VwLFJNLkRlY2ltYWwsbil9ZnVuY3Rpb24gdXYodCxlPSItIil7Y29uc3Qgbj17bWluSW50OjEsbWluRnJhYzowLG1heEZyYWM6MCxwb3NQcmU6IiIscG9zU3VmOiIiLG5lZ1ByZToiIixuZWdTdWY6IiIsZ1NpemU6MCxsZ1NpemU6MH0sbz10LnNwbGl0KCI7IiksaT1vWzBdLGE9b1sxXSxyPS0xIT09aS5pbmRleE9mKGN2KT9pLnNwbGl0KGN2KTpbaS5zdWJzdHJpbmcoMCxpLmxhc3RJbmRleE9mKGR2KSsxKSxpLnN1YnN0cmluZyhpLmxhc3RJbmRleE9mKGR2KSsxKV0scz1yWzBdLGw9clsxXXx8IiI7bi5wb3NQcmU9cy5zdWJzdHIoMCxzLmluZGV4T2YoIiMiKSk7Zm9yKGxldCB0PTA7dDxsLmxlbmd0aDt0Kyspe2NvbnN0IGU9bC5jaGFyQXQodCk7ZT09PWR2P24ubWluRnJhYz1uLm1heEZyYWM9dCsxOiIjIj09PWU/bi5tYXhGcmFjPXQrMTpuLnBvc1N1Zis9ZX1jb25zdCBjPXMuc3BsaXQoIiwiKTtpZihuLmdTaXplPWNbMV0/Y1sxXS5sZW5ndGg6MCxuLmxnU2l6ZT1jWzJdfHxjWzFdPyhjWzJdfHxjWzFdKS5sZW5ndGg6MCxhKXtjb25zdCB0PWkubGVuZ3RoLW4ucG9zUHJlLmxlbmd0aC1uLnBvc1N1Zi5sZW5ndGgsZT1hLmluZGV4T2YoIiMiKTtuLm5lZ1ByZT1hLnN1YnN0cigwLGUpLnJlcGxhY2UoLycvZywiIiksbi5uZWdTdWY9YS5zdWJzdHIoZSt0KS5yZXBsYWNlKC8nL2csIiIpfWVsc2Ugbi5uZWdQcmU9ZStuLnBvc1ByZSxuLm5lZ1N1Zj1uLnBvc1N1ZjtyZXR1cm4gbn1mdW5jdGlvbiBndih0KXtjb25zdCBlPXBhcnNlSW50KHQpO2lmKGlzTmFOKGUpKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBpbnRlZ2VyIGxpdGVyYWwgd2hlbiBwYXJzaW5nICIrdCk7cmV0dXJuIGV9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIGh2e31mdW5jdGlvbiBidih0LGUsbixvKXtsZXQgaT1gPSR7dH1gO2lmKGUuaW5kZXhPZihpKT4tMSlyZXR1cm4gaTtpZihpPW4uZ2V0UGx1cmFsQ2F0ZWdvcnkodCxvKSxlLmluZGV4T2YoaSk+LTEpcmV0dXJuIGk7aWYoZS5pbmRleE9mKCJvdGhlciIpPi0xKXJldHVybiJvdGhlciI7dGhyb3cgbmV3IEVycm9yKGBObyBwbHVyYWwgbWVzc2FnZSBmb3VuZCBmb3IgdmFsdWUgIiR7dH0iYCl9Y2xhc3MgeXYgZXh0ZW5kcyBodntjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMubG9jYWxlPXR9Z2V0UGx1cmFsQ2F0ZWdvcnkodCxlKXtzd2l0Y2goSE0oZXx8dGhpcy5sb2NhbGUpKHQpKXtjYXNlIHdNLlplcm86cmV0dXJuInplcm8iO2Nhc2Ugd00uT25lOnJldHVybiJvbmUiO2Nhc2Ugd00uVHdvOnJldHVybiJ0d28iO2Nhc2Ugd00uRmV3OnJldHVybiJmZXciO2Nhc2Ugd00uTWFueTpyZXR1cm4ibWFueSI7ZGVmYXVsdDpyZXR1cm4ib3RoZXIifX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpmdW5jdGlvbiBfdih0LGUpe2U9ZW5jb2RlVVJJQ29tcG9uZW50KGUpO2Zvcihjb25zdCBuIG9mIHQuc3BsaXQoIjsiKSl7Y29uc3QgdD1uLmluZGV4T2YoIj0iKSxbbyxpXT0tMT09dD9bbiwiIl06W24uc2xpY2UoMCx0KSxuLnNsaWNlKHQrMSldO2lmKG8udHJpbSgpPT09ZSlyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGkpfXJldHVybiBudWxsfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi95di7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8eXYpKFRyKFFfKSl9LHl2Lsm1cHJvdj1Tbih7dG9rZW46eXYsZmFjdG9yeTp5di7JtWZhY30pLHl2LmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W1FfXX1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih5dixbe3R5cGU6VW19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W1FfXX1dfV19KSxudWxsKTtjbGFzcyBDdntjb25zdHJ1Y3Rvcih0LGUsbixvKXt0aGlzLl9pdGVyYWJsZURpZmZlcnM9dCx0aGlzLl9rZXlWYWx1ZURpZmZlcnM9ZSx0aGlzLl9uZ0VsPW4sdGhpcy5fcmVuZGVyZXI9byx0aGlzLl9pdGVyYWJsZURpZmZlcj1udWxsLHRoaXMuX2tleVZhbHVlRGlmZmVyPW51bGwsdGhpcy5faW5pdGlhbENsYXNzZXM9W10sdGhpcy5fcmF3Q2xhc3M9bnVsbH1zZXQga2xhc3ModCl7dGhpcy5fcmVtb3ZlQ2xhc3Nlcyh0aGlzLl9pbml0aWFsQ2xhc3NlcyksdGhpcy5faW5pdGlhbENsYXNzZXM9InN0cmluZyI9PXR5cGVvZiB0P3Quc3BsaXQoL1xzKy8pOltdLHRoaXMuX2FwcGx5Q2xhc3Nlcyh0aGlzLl9pbml0aWFsQ2xhc3NlcyksdGhpcy5fYXBwbHlDbGFzc2VzKHRoaXMuX3Jhd0NsYXNzKX1zZXQgbmdDbGFzcyh0KXt0aGlzLl9yZW1vdmVDbGFzc2VzKHRoaXMuX3Jhd0NsYXNzKSx0aGlzLl9hcHBseUNsYXNzZXModGhpcy5faW5pdGlhbENsYXNzZXMpLHRoaXMuX2l0ZXJhYmxlRGlmZmVyPW51bGwsdGhpcy5fa2V5VmFsdWVEaWZmZXI9bnVsbCx0aGlzLl9yYXdDbGFzcz0ic3RyaW5nIj09dHlwZW9mIHQ/dC5zcGxpdCgvXHMrLyk6dCx0aGlzLl9yYXdDbGFzcyYmKGRtKHRoaXMuX3Jhd0NsYXNzKT90aGlzLl9pdGVyYWJsZURpZmZlcj10aGlzLl9pdGVyYWJsZURpZmZlcnMuZmluZCh0aGlzLl9yYXdDbGFzcykuY3JlYXRlKCk6dGhpcy5fa2V5VmFsdWVEaWZmZXI9dGhpcy5fa2V5VmFsdWVEaWZmZXJzLmZpbmQodGhpcy5fcmF3Q2xhc3MpLmNyZWF0ZSgpKX1uZ0RvQ2hlY2soKXtpZih0aGlzLl9pdGVyYWJsZURpZmZlcil7Y29uc3QgdD10aGlzLl9pdGVyYWJsZURpZmZlci5kaWZmKHRoaXMuX3Jhd0NsYXNzKTt0JiZ0aGlzLl9hcHBseUl0ZXJhYmxlQ2hhbmdlcyh0KX1lbHNlIGlmKHRoaXMuX2tleVZhbHVlRGlmZmVyKXtjb25zdCB0PXRoaXMuX2tleVZhbHVlRGlmZmVyLmRpZmYodGhpcy5fcmF3Q2xhc3MpO3QmJnRoaXMuX2FwcGx5S2V5VmFsdWVDaGFuZ2VzKHQpfX1fYXBwbHlLZXlWYWx1ZUNoYW5nZXModCl7dC5mb3JFYWNoQWRkZWRJdGVtKCh0PT50aGlzLl90b2dnbGVDbGFzcyh0LmtleSx0LmN1cnJlbnRWYWx1ZSkpKSx0LmZvckVhY2hDaGFuZ2VkSXRlbSgodD0+dGhpcy5fdG9nZ2xlQ2xhc3ModC5rZXksdC5jdXJyZW50VmFsdWUpKSksdC5mb3JFYWNoUmVtb3ZlZEl0ZW0oKHQ9Pnt0LnByZXZpb3VzVmFsdWUmJnRoaXMuX3RvZ2dsZUNsYXNzKHQua2V5LCExKX0pKX1fYXBwbHlJdGVyYWJsZUNoYW5nZXModCl7dC5mb3JFYWNoQWRkZWRJdGVtKCh0PT57aWYoInN0cmluZyIhPXR5cGVvZiB0Lml0ZW0pdGhyb3cgbmV3IEVycm9yKGBOZ0NsYXNzIGNhbiBvbmx5IHRvZ2dsZSBDU1MgY2xhc3NlcyBleHByZXNzZWQgYXMgc3RyaW5ncywgZ290ICR7S2UodC5pdGVtKX1gKTt0aGlzLl90b2dnbGVDbGFzcyh0Lml0ZW0sITApfSkpLHQuZm9yRWFjaFJlbW92ZWRJdGVtKCh0PT50aGlzLl90b2dnbGVDbGFzcyh0Lml0ZW0sITEpKSl9X2FwcGx5Q2xhc3Nlcyh0KXt0JiYoQXJyYXkuaXNBcnJheSh0KXx8dCBpbnN0YW5jZW9mIFNldD90LmZvckVhY2goKHQ9PnRoaXMuX3RvZ2dsZUNsYXNzKHQsITApKSk6T2JqZWN0LmtleXModCkuZm9yRWFjaCgoZT0+dGhpcy5fdG9nZ2xlQ2xhc3MoZSwhIXRbZV0pKSkpfV9yZW1vdmVDbGFzc2VzKHQpe3QmJihBcnJheS5pc0FycmF5KHQpfHx0IGluc3RhbmNlb2YgU2V0P3QuZm9yRWFjaCgodD0+dGhpcy5fdG9nZ2xlQ2xhc3ModCwhMSkpKTpPYmplY3Qua2V5cyh0KS5mb3JFYWNoKCh0PT50aGlzLl90b2dnbGVDbGFzcyh0LCExKSkpKX1fdG9nZ2xlQ2xhc3ModCxlKXsodD10LnRyaW0oKSkmJnQuc3BsaXQoL1xzKy9nKS5mb3JFYWNoKCh0PT57ZT90aGlzLl9yZW5kZXJlci5hZGRDbGFzcyh0aGlzLl9uZ0VsLm5hdGl2ZUVsZW1lbnQsdCk6dGhpcy5fcmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5fbmdFbC5uYXRpdmVFbGVtZW50LHQpfSkpfX1Ddi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8Q3YpKGdmKGhiKSxnZih5YiksZ2YoS2gpLGdmKCRoKSl9LEN2Lsm1ZGlyPWhvKHt0eXBlOkN2LHNlbGVjdG9yczpbWyIiLCJuZ0NsYXNzIiwiIl1dLGlucHV0czp7a2xhc3M6WyJjbGFzcyIsImtsYXNzIl0sbmdDbGFzczoibmdDbGFzcyJ9fSksQ3YuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpoYn0se3R5cGU6eWJ9LHt0eXBlOktofSx7dHlwZTokaH1dLEN2LnByb3BEZWNvcmF0b3JzPXtrbGFzczpbe3R5cGU6Ul8sYXJnczpbImNsYXNzIl19XSxuZ0NsYXNzOlt7dHlwZTpSXyxhcmdzOlsibmdDbGFzcyJdfV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoQ3YsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW25nQ2xhc3NdIn1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmhifSx7dHlwZTp5Yn0se3R5cGU6S2h9LHt0eXBlOiRofV19KSx7a2xhc3M6W3t0eXBlOlJfLGFyZ3M6WyJjbGFzcyJdfV0sbmdDbGFzczpbe3R5cGU6Ul8sYXJnczpbIm5nQ2xhc3MiXX1dfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBNdntjb25zdHJ1Y3Rvcih0KXt0aGlzLl92aWV3Q29udGFpbmVyUmVmPXQsdGhpcy5fY29tcG9uZW50UmVmPW51bGwsdGhpcy5fbW9kdWxlUmVmPW51bGx9bmdPbkNoYW5nZXModCl7aWYodGhpcy5fdmlld0NvbnRhaW5lclJlZi5jbGVhcigpLHRoaXMuX2NvbXBvbmVudFJlZj1udWxsLHRoaXMubmdDb21wb25lbnRPdXRsZXQpe2NvbnN0IGU9dGhpcy5uZ0NvbXBvbmVudE91dGxldEluamVjdG9yfHx0aGlzLl92aWV3Q29udGFpbmVyUmVmLnBhcmVudEluamVjdG9yO2lmKHQubmdDb21wb25lbnRPdXRsZXROZ01vZHVsZUZhY3RvcnkpaWYodGhpcy5fbW9kdWxlUmVmJiZ0aGlzLl9tb2R1bGVSZWYuZGVzdHJveSgpLHRoaXMubmdDb21wb25lbnRPdXRsZXROZ01vZHVsZUZhY3Rvcnkpe2NvbnN0IHQ9ZS5nZXQoemIpO3RoaXMuX21vZHVsZVJlZj10aGlzLm5nQ29tcG9uZW50T3V0bGV0TmdNb2R1bGVGYWN0b3J5LmNyZWF0ZSh0LmluamVjdG9yKX1lbHNlIHRoaXMuX21vZHVsZVJlZj1udWxsO2NvbnN0IG49KHRoaXMuX21vZHVsZVJlZj90aGlzLl9tb2R1bGVSZWYuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyOmUuZ2V0KEdoKSkucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkodGhpcy5uZ0NvbXBvbmVudE91dGxldCk7dGhpcy5fY29tcG9uZW50UmVmPXRoaXMuX3ZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KG4sdGhpcy5fdmlld0NvbnRhaW5lclJlZi5sZW5ndGgsZSx0aGlzLm5nQ29tcG9uZW50T3V0bGV0Q29udGVudCl9fW5nT25EZXN0cm95KCl7dGhpcy5fbW9kdWxlUmVmJiZ0aGlzLl9tb2R1bGVSZWYuZGVzdHJveSgpfX1Ndi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8TXYpKGdmKEZiKSl9LE12Lsm1ZGlyPWhvKHt0eXBlOk12LHNlbGVjdG9yczpbWyIiLCJuZ0NvbXBvbmVudE91dGxldCIsIiJdXSxpbnB1dHM6e25nQ29tcG9uZW50T3V0bGV0OiJuZ0NvbXBvbmVudE91dGxldCIsbmdDb21wb25lbnRPdXRsZXRJbmplY3RvcjoibmdDb21wb25lbnRPdXRsZXRJbmplY3RvciIsbmdDb21wb25lbnRPdXRsZXRDb250ZW50OiJuZ0NvbXBvbmVudE91dGxldENvbnRlbnQiLG5nQ29tcG9uZW50T3V0bGV0TmdNb2R1bGVGYWN0b3J5OiJuZ0NvbXBvbmVudE91dGxldE5nTW9kdWxlRmFjdG9yeSJ9LGZlYXR1cmVzOltxb119KSxNdi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkZifV0sTXYucHJvcERlY29yYXRvcnM9e25nQ29tcG9uZW50T3V0bGV0Olt7dHlwZTpSX31dLG5nQ29tcG9uZW50T3V0bGV0SW5qZWN0b3I6W3t0eXBlOlJffV0sbmdDb21wb25lbnRPdXRsZXRDb250ZW50Olt7dHlwZTpSX31dLG5nQ29tcG9uZW50T3V0bGV0TmdNb2R1bGVGYWN0b3J5Olt7dHlwZTpSX31dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKE12LFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6IltuZ0NvbXBvbmVudE91dGxldF0ifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6RmJ9XX0pLHtuZ0NvbXBvbmVudE91dGxldDpbe3R5cGU6Ul99XSxuZ0NvbXBvbmVudE91dGxldEluamVjdG9yOlt7dHlwZTpSX31dLG5nQ29tcG9uZW50T3V0bGV0Q29udGVudDpbe3R5cGU6Ul99XSxuZ0NvbXBvbmVudE91dGxldE5nTW9kdWxlRmFjdG9yeTpbe3R5cGU6Ul99XX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgdnZ7Y29uc3RydWN0b3IodCxlLG4sbyl7dGhpcy4kaW1wbGljaXQ9dCx0aGlzLm5nRm9yT2Y9ZSx0aGlzLmluZGV4PW4sdGhpcy5jb3VudD1vfWdldCBmaXJzdCgpe3JldHVybiAwPT09dGhpcy5pbmRleH1nZXQgbGFzdCgpe3JldHVybiB0aGlzLmluZGV4PT09dGhpcy5jb3VudC0xfWdldCBldmVuKCl7cmV0dXJuIHRoaXMuaW5kZXglMj09MH1nZXQgb2RkKCl7cmV0dXJuIXRoaXMuZXZlbn19Y2xhc3MgeHZ7Y29uc3RydWN0b3IodCxlLG4pe3RoaXMuX3ZpZXdDb250YWluZXI9dCx0aGlzLl90ZW1wbGF0ZT1lLHRoaXMuX2RpZmZlcnM9bix0aGlzLl9uZ0Zvck9mPW51bGwsdGhpcy5fbmdGb3JPZkRpcnR5PSEwLHRoaXMuX2RpZmZlcj1udWxsfXNldCBuZ0Zvck9mKHQpe3RoaXMuX25nRm9yT2Y9dCx0aGlzLl9uZ0Zvck9mRGlydHk9ITB9c2V0IG5nRm9yVHJhY2tCeSh0KXsidW5kZWZpbmVkIiE9dHlwZW9mIG5nRGV2TW9kZSYmIW5nRGV2TW9kZXx8bnVsbD09dHx8ImZ1bmN0aW9uIj09dHlwZW9mIHR8fGNvbnNvbGUmJmNvbnNvbGUud2FybiYmY29uc29sZS53YXJuKGB0cmFja0J5IG11c3QgYmUgYSBmdW5jdGlvbiwgYnV0IHJlY2VpdmVkICR7SlNPTi5zdHJpbmdpZnkodCl9LiBTZWUgaHR0cHM6Ly9hbmd1bGFyLmlvL2FwaS9jb21tb24vTmdGb3JPZiNjaGFuZ2UtcHJvcGFnYXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uYCksdGhpcy5fdHJhY2tCeUZuPXR9Z2V0IG5nRm9yVHJhY2tCeSgpe3JldHVybiB0aGlzLl90cmFja0J5Rm59c2V0IG5nRm9yVGVtcGxhdGUodCl7dCYmKHRoaXMuX3RlbXBsYXRlPXQpfW5nRG9DaGVjaygpe2lmKHRoaXMuX25nRm9yT2ZEaXJ0eSl7dGhpcy5fbmdGb3JPZkRpcnR5PSExO2NvbnN0IHQ9dGhpcy5fbmdGb3JPZjtpZighdGhpcy5fZGlmZmVyJiZ0KXRyeXt0aGlzLl9kaWZmZXI9dGhpcy5fZGlmZmVycy5maW5kKHQpLmNyZWF0ZSh0aGlzLm5nRm9yVHJhY2tCeSl9Y2F0Y2goZSl7dGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZmluZCBhIGRpZmZlciBzdXBwb3J0aW5nIG9iamVjdCAnJHt0fScgb2YgdHlwZSAnJHsoZnVuY3Rpb24gbih0KXtyZXR1cm4gdC5uYW1lfHx0eXBlb2YgdH0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovKSh0KX0nLiBOZ0ZvciBvbmx5IHN1cHBvcnRzIGJpbmRpbmcgdG8gSXRlcmFibGVzIHN1Y2ggYXMgQXJyYXlzLmApfX1pZih0aGlzLl9kaWZmZXIpe2NvbnN0IHQ9dGhpcy5fZGlmZmVyLmRpZmYodGhpcy5fbmdGb3JPZik7dCYmdGhpcy5fYXBwbHlDaGFuZ2VzKHQpfX1fYXBwbHlDaGFuZ2VzKHQpe2NvbnN0IGU9W107dC5mb3JFYWNoT3BlcmF0aW9uKCgodCxuLG8pPT57aWYobnVsbD09dC5wcmV2aW91c0luZGV4KXtjb25zdCBuPXRoaXMuX3ZpZXdDb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMuX3RlbXBsYXRlLG5ldyB2dihudWxsLHRoaXMuX25nRm9yT2YsLTEsLTEpLG51bGw9PT1vP3ZvaWQgMDpvKSxpPW5ldyBPdih0LG4pO2UucHVzaChpKX1lbHNlIGlmKG51bGw9PW8pdGhpcy5fdmlld0NvbnRhaW5lci5yZW1vdmUobnVsbD09PW4/dm9pZCAwOm4pO2Vsc2UgaWYobnVsbCE9PW4pe2NvbnN0IGk9dGhpcy5fdmlld0NvbnRhaW5lci5nZXQobik7dGhpcy5fdmlld0NvbnRhaW5lci5tb3ZlKGksbyk7Y29uc3QgYT1uZXcgT3YodCxpKTtlLnB1c2goYSl9fSkpO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKXRoaXMuX3BlclZpZXdDaGFuZ2UoZVt0XS52aWV3LGVbdF0ucmVjb3JkKTtmb3IobGV0IHQ9MCxlPXRoaXMuX3ZpZXdDb250YWluZXIubGVuZ3RoO3Q8ZTt0Kyspe2NvbnN0IG49dGhpcy5fdmlld0NvbnRhaW5lci5nZXQodCk7bi5jb250ZXh0LmluZGV4PXQsbi5jb250ZXh0LmNvdW50PWUsbi5jb250ZXh0Lm5nRm9yT2Y9dGhpcy5fbmdGb3JPZn10LmZvckVhY2hJZGVudGl0eUNoYW5nZSgodD0+e3RoaXMuX3ZpZXdDb250YWluZXIuZ2V0KHQuY3VycmVudEluZGV4KS5jb250ZXh0LiRpbXBsaWNpdD10Lml0ZW19KSl9X3BlclZpZXdDaGFuZ2UodCxlKXt0LmNvbnRleHQuJGltcGxpY2l0PWUuaXRlbX1zdGF0aWMgbmdUZW1wbGF0ZUNvbnRleHRHdWFyZCh0LGUpe3JldHVybiEwfX14di7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8eHYpKGdmKEZiKSxnZihFYiksZ2YoaGIpKX0seHYuybVkaXI9aG8oe3R5cGU6eHYsc2VsZWN0b3JzOltbIiIsIm5nRm9yIiwiIiwibmdGb3JPZiIsIiJdXSxpbnB1dHM6e25nRm9yT2Y6Im5nRm9yT2YiLG5nRm9yVHJhY2tCeToibmdGb3JUcmFja0J5IixuZ0ZvclRlbXBsYXRlOiJuZ0ZvclRlbXBsYXRlIn19KSx4di5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkZifSx7dHlwZTpFYn0se3R5cGU6aGJ9XSx4di5wcm9wRGVjb3JhdG9ycz17bmdGb3JPZjpbe3R5cGU6Ul99XSxuZ0ZvclRyYWNrQnk6W3t0eXBlOlJffV0sbmdGb3JUZW1wbGF0ZTpbe3R5cGU6Ul99XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih4dixbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJbbmdGb3JdW25nRm9yT2ZdIn1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkZifSx7dHlwZTpFYn0se3R5cGU6aGJ9XX0pLHtuZ0Zvck9mOlt7dHlwZTpSX31dLG5nRm9yVHJhY2tCeTpbe3R5cGU6Ul99XSxuZ0ZvclRlbXBsYXRlOlt7dHlwZTpSX31dfSk7Y2xhc3MgT3Z7Y29uc3RydWN0b3IodCxlKXt0aGlzLnJlY29yZD10LHRoaXMudmlldz1lfX1jbGFzcyBQdntjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuX3ZpZXdDb250YWluZXI9dCx0aGlzLl9jb250ZXh0PW5ldyB3dix0aGlzLl90aGVuVGVtcGxhdGVSZWY9bnVsbCx0aGlzLl9lbHNlVGVtcGxhdGVSZWY9bnVsbCx0aGlzLl90aGVuVmlld1JlZj1udWxsLHRoaXMuX2Vsc2VWaWV3UmVmPW51bGwsdGhpcy5fdGhlblRlbXBsYXRlUmVmPWV9c2V0IG5nSWYodCl7dGhpcy5fY29udGV4dC4kaW1wbGljaXQ9dGhpcy5fY29udGV4dC5uZ0lmPXQsdGhpcy5fdXBkYXRlVmlldygpfXNldCBuZ0lmVGhlbih0KXtrdigibmdJZlRoZW4iLHQpLHRoaXMuX3RoZW5UZW1wbGF0ZVJlZj10LHRoaXMuX3RoZW5WaWV3UmVmPW51bGwsdGhpcy5fdXBkYXRlVmlldygpfXNldCBuZ0lmRWxzZSh0KXtrdigibmdJZkVsc2UiLHQpLHRoaXMuX2Vsc2VUZW1wbGF0ZVJlZj10LHRoaXMuX2Vsc2VWaWV3UmVmPW51bGwsdGhpcy5fdXBkYXRlVmlldygpfV91cGRhdGVWaWV3KCl7dGhpcy5fY29udGV4dC4kaW1wbGljaXQ/dGhpcy5fdGhlblZpZXdSZWZ8fCh0aGlzLl92aWV3Q29udGFpbmVyLmNsZWFyKCksdGhpcy5fZWxzZVZpZXdSZWY9bnVsbCx0aGlzLl90aGVuVGVtcGxhdGVSZWYmJih0aGlzLl90aGVuVmlld1JlZj10aGlzLl92aWV3Q29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLl90aGVuVGVtcGxhdGVSZWYsdGhpcy5fY29udGV4dCkpKTp0aGlzLl9lbHNlVmlld1JlZnx8KHRoaXMuX3ZpZXdDb250YWluZXIuY2xlYXIoKSx0aGlzLl90aGVuVmlld1JlZj1udWxsLHRoaXMuX2Vsc2VUZW1wbGF0ZVJlZiYmKHRoaXMuX2Vsc2VWaWV3UmVmPXRoaXMuX3ZpZXdDb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMuX2Vsc2VUZW1wbGF0ZVJlZix0aGlzLl9jb250ZXh0KSkpfXN0YXRpYyBuZ1RlbXBsYXRlQ29udGV4dEd1YXJkKHQsZSl7cmV0dXJuITB9fVB2Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxQdikoZ2YoRmIpLGdmKEViKSl9LFB2Lsm1ZGlyPWhvKHt0eXBlOlB2LHNlbGVjdG9yczpbWyIiLCJuZ0lmIiwiIl1dLGlucHV0czp7bmdJZjoibmdJZiIsbmdJZlRoZW46Im5nSWZUaGVuIixuZ0lmRWxzZToibmdJZkVsc2UifX0pLFB2LmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6RmJ9LHt0eXBlOkVifV0sUHYucHJvcERlY29yYXRvcnM9e25nSWY6W3t0eXBlOlJffV0sbmdJZlRoZW46W3t0eXBlOlJffV0sbmdJZkVsc2U6W3t0eXBlOlJffV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoUHYsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW25nSWZdIn1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkZifSx7dHlwZTpFYn1dfSkse25nSWY6W3t0eXBlOlJffV0sbmdJZlRoZW46W3t0eXBlOlJffV0sbmdJZkVsc2U6W3t0eXBlOlJffV19KTtjbGFzcyB3dntjb25zdHJ1Y3Rvcigpe3RoaXMuJGltcGxpY2l0PW51bGwsdGhpcy5uZ0lmPW51bGx9fWZ1bmN0aW9uIGt2KHQsZSl7aWYoISEoZSYmIWUuY3JlYXRlRW1iZWRkZWRWaWV3KSl0aHJvdyBuZXcgRXJyb3IoYCR7dH0gbXVzdCBiZSBhIFRlbXBsYXRlUmVmLCBidXQgcmVjZWl2ZWQgJyR7S2UoZSl9Jy5gKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgU3Z7Y29uc3RydWN0b3IodCxlKXt0aGlzLl92aWV3Q29udGFpbmVyUmVmPXQsdGhpcy5fdGVtcGxhdGVSZWY9ZSx0aGlzLl9jcmVhdGVkPSExfWNyZWF0ZSgpe3RoaXMuX2NyZWF0ZWQ9ITAsdGhpcy5fdmlld0NvbnRhaW5lclJlZi5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5fdGVtcGxhdGVSZWYpfWRlc3Ryb3koKXt0aGlzLl9jcmVhdGVkPSExLHRoaXMuX3ZpZXdDb250YWluZXJSZWYuY2xlYXIoKX1lbmZvcmNlU3RhdGUodCl7dCYmIXRoaXMuX2NyZWF0ZWQ/dGhpcy5jcmVhdGUoKTohdCYmdGhpcy5fY3JlYXRlZCYmdGhpcy5kZXN0cm95KCl9fWNsYXNzIER2e2NvbnN0cnVjdG9yKCl7dGhpcy5fZGVmYXVsdFVzZWQ9ITEsdGhpcy5fY2FzZUNvdW50PTAsdGhpcy5fbGFzdENhc2VDaGVja0luZGV4PTAsdGhpcy5fbGFzdENhc2VzTWF0Y2hlZD0hMX1zZXQgbmdTd2l0Y2godCl7dGhpcy5fbmdTd2l0Y2g9dCwwPT09dGhpcy5fY2FzZUNvdW50JiZ0aGlzLl91cGRhdGVEZWZhdWx0Q2FzZXMoITApfV9hZGRDYXNlKCl7cmV0dXJuIHRoaXMuX2Nhc2VDb3VudCsrfV9hZGREZWZhdWx0KHQpe3RoaXMuX2RlZmF1bHRWaWV3c3x8KHRoaXMuX2RlZmF1bHRWaWV3cz1bXSksdGhpcy5fZGVmYXVsdFZpZXdzLnB1c2godCl9X21hdGNoQ2FzZSh0KXtjb25zdCBlPXQ9PXRoaXMuX25nU3dpdGNoO3JldHVybiB0aGlzLl9sYXN0Q2FzZXNNYXRjaGVkPXRoaXMuX2xhc3RDYXNlc01hdGNoZWR8fGUsdGhpcy5fbGFzdENhc2VDaGVja0luZGV4KyssdGhpcy5fbGFzdENhc2VDaGVja0luZGV4PT09dGhpcy5fY2FzZUNvdW50JiYodGhpcy5fdXBkYXRlRGVmYXVsdENhc2VzKCF0aGlzLl9sYXN0Q2FzZXNNYXRjaGVkKSx0aGlzLl9sYXN0Q2FzZUNoZWNrSW5kZXg9MCx0aGlzLl9sYXN0Q2FzZXNNYXRjaGVkPSExKSxlfV91cGRhdGVEZWZhdWx0Q2FzZXModCl7aWYodGhpcy5fZGVmYXVsdFZpZXdzJiZ0IT09dGhpcy5fZGVmYXVsdFVzZWQpe3RoaXMuX2RlZmF1bHRVc2VkPXQ7Zm9yKGxldCBlPTA7ZTx0aGlzLl9kZWZhdWx0Vmlld3MubGVuZ3RoO2UrKyl7dGhpcy5fZGVmYXVsdFZpZXdzW2VdLmVuZm9yY2VTdGF0ZSh0KX19fX1Edi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8RHYpfSxEdi7JtWRpcj1obyh7dHlwZTpEdixzZWxlY3RvcnM6W1siIiwibmdTd2l0Y2giLCIiXV0saW5wdXRzOntuZ1N3aXRjaDoibmdTd2l0Y2gifX0pLER2LnByb3BEZWNvcmF0b3JzPXtuZ1N3aXRjaDpbe3R5cGU6Ul99XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihEdixbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJbbmdTd2l0Y2hdIn1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW119KSx7bmdTd2l0Y2g6W3t0eXBlOlJffV19KTtjbGFzcyBSdntjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5uZ1N3aXRjaD1uLCJ1bmRlZmluZWQiIT10eXBlb2YgbmdEZXZNb2RlJiYhbmdEZXZNb2RlfHxufHxBdigibmdTd2l0Y2hDYXNlIiwiTmdTd2l0Y2hDYXNlIiksbi5fYWRkQ2FzZSgpLHRoaXMuX3ZpZXc9bmV3IFN2KHQsZSl9bmdEb0NoZWNrKCl7dGhpcy5fdmlldy5lbmZvcmNlU3RhdGUodGhpcy5uZ1N3aXRjaC5fbWF0Y2hDYXNlKHRoaXMubmdTd2l0Y2hDYXNlKSl9fVJ2Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxSdikoZ2YoRmIpLGdmKEViKSxnZihEdiw5KSl9LFJ2Lsm1ZGlyPWhvKHt0eXBlOlJ2LHNlbGVjdG9yczpbWyIiLCJuZ1N3aXRjaENhc2UiLCIiXV0saW5wdXRzOntuZ1N3aXRjaENhc2U6Im5nU3dpdGNoQ2FzZSJ9fSksUnYuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpGYn0se3R5cGU6RWJ9LHt0eXBlOkR2LGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpVcn1dfV0sUnYucHJvcERlY29yYXRvcnM9e25nU3dpdGNoQ2FzZTpbe3R5cGU6Ul99XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihSdixbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJbbmdTd2l0Y2hDYXNlXSJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpGYn0se3R5cGU6RWJ9LHt0eXBlOkR2LGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpVcn1dfV19KSx7bmdTd2l0Y2hDYXNlOlt7dHlwZTpSX31dfSk7Y2xhc3MgRXZ7Y29uc3RydWN0b3IodCxlLG4peyJ1bmRlZmluZWQiIT10eXBlb2YgbmdEZXZNb2RlJiYhbmdEZXZNb2RlfHxufHxBdigibmdTd2l0Y2hEZWZhdWx0IiwiTmdTd2l0Y2hEZWZhdWx0Iiksbi5fYWRkRGVmYXVsdChuZXcgU3YodCxlKSl9fWZ1bmN0aW9uIEF2KHQsZSl7dGhyb3cgbmV3IG5uKCIzMDUiLGBBbiBlbGVtZW50IHdpdGggdGhlICIke3R9IiBhdHRyaWJ1dGUgKG1hdGNoaW5nIHRoZSAiJHtlfSIgZGlyZWN0aXZlKSBtdXN0IGJlIGxvY2F0ZWQgaW5zaWRlIGFuIGVsZW1lbnQgd2l0aCB0aGUgIm5nU3dpdGNoIiBhdHRyaWJ1dGUgKG1hdGNoaW5nICJOZ1N3aXRjaCIgZGlyZWN0aXZlKWApfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9Fdi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8RXYpKGdmKEZiKSxnZihFYiksZ2YoRHYsOSkpfSxFdi7JtWRpcj1obyh7dHlwZTpFdixzZWxlY3RvcnM6W1siIiwibmdTd2l0Y2hEZWZhdWx0IiwiIl1dfSksRXYuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpGYn0se3R5cGU6RWJ9LHt0eXBlOkR2LGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpVcn1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihFdixbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJbbmdTd2l0Y2hEZWZhdWx0XSJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpGYn0se3R5cGU6RWJ9LHt0eXBlOkR2LGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpVcn1dfV19KSxudWxsKTtjbGFzcyBUdntjb25zdHJ1Y3Rvcih0KXt0aGlzLl9sb2NhbGl6YXRpb249dCx0aGlzLl9jYXNlVmlld3M9e319c2V0IG5nUGx1cmFsKHQpe3RoaXMuX3N3aXRjaFZhbHVlPXQsdGhpcy5fdXBkYXRlVmlldygpfWFkZENhc2UodCxlKXt0aGlzLl9jYXNlVmlld3NbdF09ZX1fdXBkYXRlVmlldygpe3RoaXMuX2NsZWFyVmlld3MoKTtjb25zdCB0PU9iamVjdC5rZXlzKHRoaXMuX2Nhc2VWaWV3cyksZT1idih0aGlzLl9zd2l0Y2hWYWx1ZSx0LHRoaXMuX2xvY2FsaXphdGlvbik7dGhpcy5fYWN0aXZhdGVWaWV3KHRoaXMuX2Nhc2VWaWV3c1tlXSl9X2NsZWFyVmlld3MoKXt0aGlzLl9hY3RpdmVWaWV3JiZ0aGlzLl9hY3RpdmVWaWV3LmRlc3Ryb3koKX1fYWN0aXZhdGVWaWV3KHQpe3QmJih0aGlzLl9hY3RpdmVWaWV3PXQsdGhpcy5fYWN0aXZlVmlldy5jcmVhdGUoKSl9fVR2Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxUdikoZ2YoaHYpKX0sVHYuybVkaXI9aG8oe3R5cGU6VHYsc2VsZWN0b3JzOltbIiIsIm5nUGx1cmFsIiwiIl1dLGlucHV0czp7bmdQbHVyYWw6Im5nUGx1cmFsIn19KSxUdi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOmh2fV0sVHYucHJvcERlY29yYXRvcnM9e25nUGx1cmFsOlt7dHlwZTpSX31dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFR2LFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6IltuZ1BsdXJhbF0ifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6aHZ9XX0pLHtuZ1BsdXJhbDpbe3R5cGU6Ul99XX0pO2NsYXNzIE52e2NvbnN0cnVjdG9yKHQsZSxuLG8pe3RoaXMudmFsdWU9dDtjb25zdCBpPSFpc05hTihOdW1iZXIodCkpO28uYWRkQ2FzZShpP2A9JHt0fWA6dCxuZXcgU3YobixlKSl9fU52Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxOdikoR2EoIm5nUGx1cmFsQ2FzZSIpLGdmKEViKSxnZihGYiksZ2YoVHYsMSkpfSxOdi7JtWRpcj1obyh7dHlwZTpOdixzZWxlY3RvcnM6W1siIiwibmdQbHVyYWxDYXNlIiwiIl1dfSksTnYuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6JGEsYXJnczpbIm5nUGx1cmFsQ2FzZSJdfV19LHt0eXBlOkVifSx7dHlwZTpGYn0se3R5cGU6VHYsZGVjb3JhdG9yczpbe3R5cGU6VXJ9XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoTnYsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW25nUGx1cmFsQ2FzZV0ifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOiRhLGFyZ3M6WyJuZ1BsdXJhbENhc2UiXX1dfSx7dHlwZTpFYn0se3R5cGU6RmJ9LHt0eXBlOlR2LGRlY29yYXRvcnM6W3t0eXBlOlVyfV19XX0pLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgenZ7Y29uc3RydWN0b3IodCxlLG4pe3RoaXMuX25nRWw9dCx0aGlzLl9kaWZmZXJzPWUsdGhpcy5fcmVuZGVyZXI9bix0aGlzLl9uZ1N0eWxlPW51bGwsdGhpcy5fZGlmZmVyPW51bGx9c2V0IG5nU3R5bGUodCl7dGhpcy5fbmdTdHlsZT10LCF0aGlzLl9kaWZmZXImJnQmJih0aGlzLl9kaWZmZXI9dGhpcy5fZGlmZmVycy5maW5kKHQpLmNyZWF0ZSgpKX1uZ0RvQ2hlY2soKXtpZih0aGlzLl9kaWZmZXIpe2NvbnN0IHQ9dGhpcy5fZGlmZmVyLmRpZmYodGhpcy5fbmdTdHlsZSk7dCYmdGhpcy5fYXBwbHlDaGFuZ2VzKHQpfX1fc2V0U3R5bGUodCxlKXtjb25zdFtuLG9dPXQuc3BsaXQoIi4iKTtudWxsIT0oZT1udWxsIT1lJiZvP2Ake2V9JHtvfWA6ZSk/dGhpcy5fcmVuZGVyZXIuc2V0U3R5bGUodGhpcy5fbmdFbC5uYXRpdmVFbGVtZW50LG4sZSk6dGhpcy5fcmVuZGVyZXIucmVtb3ZlU3R5bGUodGhpcy5fbmdFbC5uYXRpdmVFbGVtZW50LG4pfV9hcHBseUNoYW5nZXModCl7dC5mb3JFYWNoUmVtb3ZlZEl0ZW0oKHQ9PnRoaXMuX3NldFN0eWxlKHQua2V5LG51bGwpKSksdC5mb3JFYWNoQWRkZWRJdGVtKCh0PT50aGlzLl9zZXRTdHlsZSh0LmtleSx0LmN1cnJlbnRWYWx1ZSkpKSx0LmZvckVhY2hDaGFuZ2VkSXRlbSgodD0+dGhpcy5fc2V0U3R5bGUodC5rZXksdC5jdXJyZW50VmFsdWUpKSl9fXp2Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx6dikoZ2YoS2gpLGdmKHliKSxnZigkaCkpfSx6di7JtWRpcj1obyh7dHlwZTp6dixzZWxlY3RvcnM6W1siIiwibmdTdHlsZSIsIiJdXSxpbnB1dHM6e25nU3R5bGU6Im5nU3R5bGUifX0pLHp2LmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6S2h9LHt0eXBlOnlifSx7dHlwZTokaH1dLHp2LnByb3BEZWNvcmF0b3JzPXtuZ1N0eWxlOlt7dHlwZTpSXyxhcmdzOlsibmdTdHlsZSJdfV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoenYsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW25nU3R5bGVdIn1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOktofSx7dHlwZTp5Yn0se3R5cGU6JGh9XX0pLHtuZ1N0eWxlOlt7dHlwZTpSXyxhcmdzOlsibmdTdHlsZSJdfV19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIEl2e2NvbnN0cnVjdG9yKHQpe3RoaXMuX3ZpZXdDb250YWluZXJSZWY9dCx0aGlzLl92aWV3UmVmPW51bGwsdGhpcy5uZ1RlbXBsYXRlT3V0bGV0Q29udGV4dD1udWxsLHRoaXMubmdUZW1wbGF0ZU91dGxldD1udWxsfW5nT25DaGFuZ2VzKHQpe2lmKHQubmdUZW1wbGF0ZU91dGxldCl7Y29uc3QgdD10aGlzLl92aWV3Q29udGFpbmVyUmVmO3RoaXMuX3ZpZXdSZWYmJnQucmVtb3ZlKHQuaW5kZXhPZih0aGlzLl92aWV3UmVmKSksdGhpcy5fdmlld1JlZj10aGlzLm5nVGVtcGxhdGVPdXRsZXQ/dC5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5uZ1RlbXBsYXRlT3V0bGV0LHRoaXMubmdUZW1wbGF0ZU91dGxldENvbnRleHQpOm51bGx9ZWxzZSB0aGlzLl92aWV3UmVmJiZ0Lm5nVGVtcGxhdGVPdXRsZXRDb250ZXh0JiZ0aGlzLm5nVGVtcGxhdGVPdXRsZXRDb250ZXh0JiYodGhpcy5fdmlld1JlZi5jb250ZXh0PXRoaXMubmdUZW1wbGF0ZU91dGxldENvbnRleHQpfX1Jdi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8SXYpKGdmKEZiKSl9LEl2Lsm1ZGlyPWhvKHt0eXBlOkl2LHNlbGVjdG9yczpbWyIiLCJuZ1RlbXBsYXRlT3V0bGV0IiwiIl1dLGlucHV0czp7bmdUZW1wbGF0ZU91dGxldENvbnRleHQ6Im5nVGVtcGxhdGVPdXRsZXRDb250ZXh0IixuZ1RlbXBsYXRlT3V0bGV0OiJuZ1RlbXBsYXRlT3V0bGV0In0sZmVhdHVyZXM6W3FvXX0pLEl2LmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6RmJ9XSxJdi5wcm9wRGVjb3JhdG9ycz17bmdUZW1wbGF0ZU91dGxldENvbnRleHQ6W3t0eXBlOlJffV0sbmdUZW1wbGF0ZU91dGxldDpbe3R5cGU6Ul99XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihJdixbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJbbmdUZW1wbGF0ZU91dGxldF0ifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6RmJ9XX0pLHtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dDpbe3R5cGU6Ul99XSxuZ1RlbXBsYXRlT3V0bGV0Olt7dHlwZTpSX31dfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCBIdj1bQ3YsTXYseHYsUHYsSXYsenYsRHYsUnYsRXYsVHYsTnZdOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBGdih0LGUpe3JldHVybiBFcnJvcihgSW52YWxpZFBpcGVBcmd1bWVudDogJyR7ZX0nIGZvciBwaXBlICcke0tlKHQpfSdgKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3QgTHY9bmV3IGNsYXNze2NyZWF0ZVN1YnNjcmlwdGlvbih0LGUpe3JldHVybiB0LnRoZW4oZSwodD0+e3Rocm93IHR9KSl9ZGlzcG9zZSh0KXt9b25EZXN0cm95KHQpe319LEJ2PW5ldyBjbGFzc3tjcmVhdGVTdWJzY3JpcHRpb24odCxlKXtyZXR1cm4gdC5zdWJzY3JpYmUoe25leHQ6ZSxlcnJvcjp0PT57dGhyb3cgdH19KX1kaXNwb3NlKHQpe3QudW5zdWJzY3JpYmUoKX1vbkRlc3Ryb3kodCl7dC51bnN1YnNjcmliZSgpfX07Y2xhc3MgVnZ7Y29uc3RydWN0b3IodCl7dGhpcy5fcmVmPXQsdGhpcy5fbGF0ZXN0VmFsdWU9bnVsbCx0aGlzLl9zdWJzY3JpcHRpb249bnVsbCx0aGlzLl9vYmo9bnVsbCx0aGlzLl9zdHJhdGVneT1udWxsfW5nT25EZXN0cm95KCl7dGhpcy5fc3Vic2NyaXB0aW9uJiZ0aGlzLl9kaXNwb3NlKCl9dHJhbnNmb3JtKHQpe3JldHVybiB0aGlzLl9vYmo/dCE9PXRoaXMuX29iaj8odGhpcy5fZGlzcG9zZSgpLHRoaXMudHJhbnNmb3JtKHQpKTp0aGlzLl9sYXRlc3RWYWx1ZToodCYmdGhpcy5fc3Vic2NyaWJlKHQpLHRoaXMuX2xhdGVzdFZhbHVlKX1fc3Vic2NyaWJlKHQpe3RoaXMuX29iaj10LHRoaXMuX3N0cmF0ZWd5PXRoaXMuX3NlbGVjdFN0cmF0ZWd5KHQpLHRoaXMuX3N1YnNjcmlwdGlvbj10aGlzLl9zdHJhdGVneS5jcmVhdGVTdWJzY3JpcHRpb24odCwoZT0+dGhpcy5fdXBkYXRlTGF0ZXN0VmFsdWUodCxlKSkpfV9zZWxlY3RTdHJhdGVneSh0KXtpZihrZih0KSlyZXR1cm4gTHY7aWYoU2YodCkpcmV0dXJuIEJ2O3Rocm93IEZ2KFZ2LHQpfV9kaXNwb3NlKCl7dGhpcy5fc3RyYXRlZ3kuZGlzcG9zZSh0aGlzLl9zdWJzY3JpcHRpb24pLHRoaXMuX2xhdGVzdFZhbHVlPW51bGwsdGhpcy5fc3Vic2NyaXB0aW9uPW51bGwsdGhpcy5fb2JqPW51bGx9X3VwZGF0ZUxhdGVzdFZhbHVlKHQsZSl7dD09PXRoaXMuX29iaiYmKHRoaXMuX2xhdGVzdFZhbHVlPWUsdGhpcy5fcmVmLm1hcmtGb3JDaGVjaygpKX19VnYuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFZ2KShnZihPYiwxNikpfSxWdi7JtXBpcGU9Ym8oe25hbWU6ImFzeW5jIix0eXBlOlZ2LHB1cmU6ITF9KSxWdi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOk9ifV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihWdixbe3R5cGU6RF8sYXJnczpbe25hbWU6ImFzeW5jIixwdXJlOiExfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6T2J9XX0pLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MganZ7dHJhbnNmb3JtKHQpe2lmKG51bGw9PXQpcmV0dXJuIG51bGw7aWYoInN0cmluZyIhPXR5cGVvZiB0KXRocm93IEZ2KGp2LHQpO3JldHVybiB0LnRvTG93ZXJDYXNlKCl9fWp2Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxqdil9LGp2Lsm1cGlwZT1ibyh7bmFtZToibG93ZXJjYXNlIix0eXBlOmp2LHB1cmU6ITB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGp2LFt7dHlwZTpEXyxhcmdzOlt7bmFtZToibG93ZXJjYXNlIn1dfV0sbnVsbCxudWxsKTtjb25zdCBVdj0vKD86W0EtWmEtelx4QUFceEI1XHhCQVx4QzAtXHhENlx4RDgtXHhGNlx4RjgtXHUwMkMxXHUwMkM2LVx1MDJEMVx1MDJFMC1cdTAyRTRcdTAyRUNcdTAyRUVcdTAzNzAtXHUwMzc0XHUwMzc2XHUwMzc3XHUwMzdBLVx1MDM3RFx1MDM3Rlx1MDM4Nlx1MDM4OC1cdTAzOEFcdTAzOENcdTAzOEUtXHUwM0ExXHUwM0EzLVx1MDNGNVx1MDNGNy1cdTA0ODFcdTA0OEEtXHUwNTJGXHUwNTMxLVx1MDU1Nlx1MDU1OVx1MDU2MS1cdTA1ODdcdTA1RDAtXHUwNUVBXHUwNUYwLVx1MDVGMlx1MDYyMC1cdTA2NEFcdTA2NkVcdTA2NkZcdTA2NzEtXHUwNkQzXHUwNkQ1XHUwNkU1XHUwNkU2XHUwNkVFXHUwNkVGXHUwNkZBLVx1MDZGQ1x1MDZGRlx1MDcxMFx1MDcxMi1cdTA3MkZcdTA3NEQtXHUwN0E1XHUwN0IxXHUwN0NBLVx1MDdFQVx1MDdGNFx1MDdGNVx1MDdGQVx1MDgwMC1cdTA4MTVcdTA4MUFcdTA4MjRcdTA4MjhcdTA4NDAtXHUwODU4XHUwODYwLVx1MDg2QVx1MDhBMC1cdTA4QjRcdTA4QjYtXHUwOEJEXHUwOTA0LVx1MDkzOVx1MDkzRFx1MDk1MFx1MDk1OC1cdTA5NjFcdTA5NzEtXHUwOTgwXHUwOTg1LVx1MDk4Q1x1MDk4Rlx1MDk5MFx1MDk5My1cdTA5QThcdTA5QUEtXHUwOUIwXHUwOUIyXHUwOUI2LVx1MDlCOVx1MDlCRFx1MDlDRVx1MDlEQ1x1MDlERFx1MDlERi1cdTA5RTFcdTA5RjBcdTA5RjFcdTA5RkNcdTBBMDUtXHUwQTBBXHUwQTBGXHUwQTEwXHUwQTEzLVx1MEEyOFx1MEEyQS1cdTBBMzBcdTBBMzJcdTBBMzNcdTBBMzVcdTBBMzZcdTBBMzhcdTBBMzlcdTBBNTktXHUwQTVDXHUwQTVFXHUwQTcyLVx1MEE3NFx1MEE4NS1cdTBBOERcdTBBOEYtXHUwQTkxXHUwQTkzLVx1MEFBOFx1MEFBQS1cdTBBQjBcdTBBQjJcdTBBQjNcdTBBQjUtXHUwQUI5XHUwQUJEXHUwQUQwXHUwQUUwXHUwQUUxXHUwQUY5XHUwQjA1LVx1MEIwQ1x1MEIwRlx1MEIxMFx1MEIxMy1cdTBCMjhcdTBCMkEtXHUwQjMwXHUwQjMyXHUwQjMzXHUwQjM1LVx1MEIzOVx1MEIzRFx1MEI1Q1x1MEI1RFx1MEI1Ri1cdTBCNjFcdTBCNzFcdTBCODNcdTBCODUtXHUwQjhBXHUwQjhFLVx1MEI5MFx1MEI5Mi1cdTBCOTVcdTBCOTlcdTBCOUFcdTBCOUNcdTBCOUVcdTBCOUZcdTBCQTNcdTBCQTRcdTBCQTgtXHUwQkFBXHUwQkFFLVx1MEJCOVx1MEJEMFx1MEMwNS1cdTBDMENcdTBDMEUtXHUwQzEwXHUwQzEyLVx1MEMyOFx1MEMyQS1cdTBDMzlcdTBDM0RcdTBDNTgtXHUwQzVBXHUwQzYwXHUwQzYxXHUwQzgwXHUwQzg1LVx1MEM4Q1x1MEM4RS1cdTBDOTBcdTBDOTItXHUwQ0E4XHUwQ0FBLVx1MENCM1x1MENCNS1cdTBDQjlcdTBDQkRcdTBDREVcdTBDRTBcdTBDRTFcdTBDRjFcdTBDRjJcdTBEMDUtXHUwRDBDXHUwRDBFLVx1MEQxMFx1MEQxMi1cdTBEM0FcdTBEM0RcdTBENEVcdTBENTQtXHUwRDU2XHUwRDVGLVx1MEQ2MVx1MEQ3QS1cdTBEN0ZcdTBEODUtXHUwRDk2XHUwRDlBLVx1MERCMVx1MERCMy1cdTBEQkJcdTBEQkRcdTBEQzAtXHUwREM2XHUwRTAxLVx1MEUzMFx1MEUzMlx1MEUzM1x1MEU0MC1cdTBFNDZcdTBFODFcdTBFODJcdTBFODRcdTBFODdcdTBFODhcdTBFOEFcdTBFOERcdTBFOTQtXHUwRTk3XHUwRTk5LVx1MEU5Rlx1MEVBMS1cdTBFQTNcdTBFQTVcdTBFQTdcdTBFQUFcdTBFQUJcdTBFQUQtXHUwRUIwXHUwRUIyXHUwRUIzXHUwRUJEXHUwRUMwLVx1MEVDNFx1MEVDNlx1MEVEQy1cdTBFREZcdTBGMDBcdTBGNDAtXHUwRjQ3XHUwRjQ5LVx1MEY2Q1x1MEY4OC1cdTBGOENcdTEwMDAtXHUxMDJBXHUxMDNGXHUxMDUwLVx1MTA1NVx1MTA1QS1cdTEwNURcdTEwNjFcdTEwNjVcdTEwNjZcdTEwNkUtXHUxMDcwXHUxMDc1LVx1MTA4MVx1MTA4RVx1MTBBMC1cdTEwQzVcdTEwQzdcdTEwQ0RcdTEwRDAtXHUxMEZBXHUxMEZDLVx1MTI0OFx1MTI0QS1cdTEyNERcdTEyNTAtXHUxMjU2XHUxMjU4XHUxMjVBLVx1MTI1RFx1MTI2MC1cdTEyODhcdTEyOEEtXHUxMjhEXHUxMjkwLVx1MTJCMFx1MTJCMi1cdTEyQjVcdTEyQjgtXHUxMkJFXHUxMkMwXHUxMkMyLVx1MTJDNVx1MTJDOC1cdTEyRDZcdTEyRDgtXHUxMzEwXHUxMzEyLVx1MTMxNVx1MTMxOC1cdTEzNUFcdTEzODAtXHUxMzhGXHUxM0EwLVx1MTNGNVx1MTNGOC1cdTEzRkRcdTE0MDEtXHUxNjZDXHUxNjZGLVx1MTY3Rlx1MTY4MS1cdTE2OUFcdTE2QTAtXHUxNkVBXHUxNkYxLVx1MTZGOFx1MTcwMC1cdTE3MENcdTE3MEUtXHUxNzExXHUxNzIwLVx1MTczMVx1MTc0MC1cdTE3NTFcdTE3NjAtXHUxNzZDXHUxNzZFLVx1MTc3MFx1MTc4MC1cdTE3QjNcdTE3RDdcdTE3RENcdTE4MjAtXHUxODc3XHUxODgwLVx1MTg4NFx1MTg4Ny1cdTE4QThcdTE4QUFcdTE4QjAtXHUxOEY1XHUxOTAwLVx1MTkxRVx1MTk1MC1cdTE5NkRcdTE5NzAtXHUxOTc0XHUxOTgwLVx1MTlBQlx1MTlCMC1cdTE5QzlcdTFBMDAtXHUxQTE2XHUxQTIwLVx1MUE1NFx1MUFBN1x1MUIwNS1cdTFCMzNcdTFCNDUtXHUxQjRCXHUxQjgzLVx1MUJBMFx1MUJBRVx1MUJBRlx1MUJCQS1cdTFCRTVcdTFDMDAtXHUxQzIzXHUxQzRELVx1MUM0Rlx1MUM1QS1cdTFDN0RcdTFDODAtXHUxQzg4XHUxQ0U5LVx1MUNFQ1x1MUNFRS1cdTFDRjFcdTFDRjVcdTFDRjZcdTFEMDAtXHUxREJGXHUxRTAwLVx1MUYxNVx1MUYxOC1cdTFGMURcdTFGMjAtXHUxRjQ1XHUxRjQ4LVx1MUY0RFx1MUY1MC1cdTFGNTdcdTFGNTlcdTFGNUJcdTFGNURcdTFGNUYtXHUxRjdEXHUxRjgwLVx1MUZCNFx1MUZCNi1cdTFGQkNcdTFGQkVcdTFGQzItXHUxRkM0XHUxRkM2LVx1MUZDQ1x1MUZEMC1cdTFGRDNcdTFGRDYtXHUxRkRCXHUxRkUwLVx1MUZFQ1x1MUZGMi1cdTFGRjRcdTFGRjYtXHUxRkZDXHUyMDcxXHUyMDdGXHUyMDkwLVx1MjA5Q1x1MjEwMlx1MjEwN1x1MjEwQS1cdTIxMTNcdTIxMTVcdTIxMTktXHUyMTFEXHUyMTI0XHUyMTI2XHUyMTI4XHUyMTJBLVx1MjEyRFx1MjEyRi1cdTIxMzlcdTIxM0MtXHUyMTNGXHUyMTQ1LVx1MjE0OVx1MjE0RVx1MjE4M1x1MjE4NFx1MkMwMC1cdTJDMkVcdTJDMzAtXHUyQzVFXHUyQzYwLVx1MkNFNFx1MkNFQi1cdTJDRUVcdTJDRjJcdTJDRjNcdTJEMDAtXHUyRDI1XHUyRDI3XHUyRDJEXHUyRDMwLVx1MkQ2N1x1MkQ2Rlx1MkQ4MC1cdTJEOTZcdTJEQTAtXHUyREE2XHUyREE4LVx1MkRBRVx1MkRCMC1cdTJEQjZcdTJEQjgtXHUyREJFXHUyREMwLVx1MkRDNlx1MkRDOC1cdTJEQ0VcdTJERDAtXHUyREQ2XHUyREQ4LVx1MkRERVx1MkUyRlx1MzAwNVx1MzAwNlx1MzAzMS1cdTMwMzVcdTMwM0JcdTMwM0NcdTMwNDEtXHUzMDk2XHUzMDlELVx1MzA5Rlx1MzBBMS1cdTMwRkFcdTMwRkMtXHUzMEZGXHUzMTA1LVx1MzEyRVx1MzEzMS1cdTMxOEVcdTMxQTAtXHUzMUJBXHUzMUYwLVx1MzFGRlx1MzQwMC1cdTREQjVcdTRFMDAtXHU5RkVBXHVBMDAwLVx1QTQ4Q1x1QTREMC1cdUE0RkRcdUE1MDAtXHVBNjBDXHVBNjEwLVx1QTYxRlx1QTYyQVx1QTYyQlx1QTY0MC1cdUE2NkVcdUE2N0YtXHVBNjlEXHVBNkEwLVx1QTZFNVx1QTcxNy1cdUE3MUZcdUE3MjItXHVBNzg4XHVBNzhCLVx1QTdBRVx1QTdCMC1cdUE3QjdcdUE3RjctXHVBODAxXHVBODAzLVx1QTgwNVx1QTgwNy1cdUE4MEFcdUE4MEMtXHVBODIyXHVBODQwLVx1QTg3M1x1QTg4Mi1cdUE4QjNcdUE4RjItXHVBOEY3XHVBOEZCXHVBOEZEXHVBOTBBLVx1QTkyNVx1QTkzMC1cdUE5NDZcdUE5NjAtXHVBOTdDXHVBOTg0LVx1QTlCMlx1QTlDRlx1QTlFMC1cdUE5RTRcdUE5RTYtXHVBOUVGXHVBOUZBLVx1QTlGRVx1QUEwMC1cdUFBMjhcdUFBNDAtXHVBQTQyXHVBQTQ0LVx1QUE0Qlx1QUE2MC1cdUFBNzZcdUFBN0FcdUFBN0UtXHVBQUFGXHVBQUIxXHVBQUI1XHVBQUI2XHVBQUI5LVx1QUFCRFx1QUFDMFx1QUFDMlx1QUFEQi1cdUFBRERcdUFBRTAtXHVBQUVBXHVBQUYyLVx1QUFGNFx1QUIwMS1cdUFCMDZcdUFCMDktXHVBQjBFXHVBQjExLVx1QUIxNlx1QUIyMC1cdUFCMjZcdUFCMjgtXHVBQjJFXHVBQjMwLVx1QUI1QVx1QUI1Qy1cdUFCNjVcdUFCNzAtXHVBQkUyXHVBQzAwLVx1RDdBM1x1RDdCMC1cdUQ3QzZcdUQ3Q0ItXHVEN0ZCXHVGOTAwLVx1RkE2RFx1RkE3MC1cdUZBRDlcdUZCMDAtXHVGQjA2XHVGQjEzLVx1RkIxN1x1RkIxRFx1RkIxRi1cdUZCMjhcdUZCMkEtXHVGQjM2XHVGQjM4LVx1RkIzQ1x1RkIzRVx1RkI0MFx1RkI0MVx1RkI0M1x1RkI0NFx1RkI0Ni1cdUZCQjFcdUZCRDMtXHVGRDNEXHVGRDUwLVx1RkQ4Rlx1RkQ5Mi1cdUZEQzdcdUZERjAtXHVGREZCXHVGRTcwLVx1RkU3NFx1RkU3Ni1cdUZFRkNcdUZGMjEtXHVGRjNBXHVGRjQxLVx1RkY1QVx1RkY2Ni1cdUZGQkVcdUZGQzItXHVGRkM3XHVGRkNBLVx1RkZDRlx1RkZEMi1cdUZGRDdcdUZGREEtXHVGRkRDXXxcdUQ4MDBbXHVEQzAwLVx1REMwQlx1REMwRC1cdURDMjZcdURDMjgtXHVEQzNBXHVEQzNDXHVEQzNEXHVEQzNGLVx1REM0RFx1REM1MC1cdURDNURcdURDODAtXHVEQ0ZBXHVERTgwLVx1REU5Q1x1REVBMC1cdURFRDBcdURGMDAtXHVERjFGXHVERjJELVx1REY0MFx1REY0Mi1cdURGNDlcdURGNTAtXHVERjc1XHVERjgwLVx1REY5RFx1REZBMC1cdURGQzNcdURGQzgtXHVERkNGXXxcdUQ4MDFbXHVEQzAwLVx1REM5RFx1RENCMC1cdURDRDNcdURDRDgtXHVEQ0ZCXHVERDAwLVx1REQyN1x1REQzMC1cdURENjNcdURFMDAtXHVERjM2XHVERjQwLVx1REY1NVx1REY2MC1cdURGNjddfFx1RDgwMltcdURDMDAtXHVEQzA1XHVEQzA4XHVEQzBBLVx1REMzNVx1REMzN1x1REMzOFx1REMzQ1x1REMzRi1cdURDNTVcdURDNjAtXHVEQzc2XHVEQzgwLVx1REM5RVx1RENFMC1cdURDRjJcdURDRjRcdURDRjVcdUREMDAtXHVERDE1XHVERDIwLVx1REQzOVx1REQ4MC1cdUREQjdcdUREQkVcdUREQkZcdURFMDBcdURFMTAtXHVERTEzXHVERTE1LVx1REUxN1x1REUxOS1cdURFMzNcdURFNjAtXHVERTdDXHVERTgwLVx1REU5Q1x1REVDMC1cdURFQzdcdURFQzktXHVERUU0XHVERjAwLVx1REYzNVx1REY0MC1cdURGNTVcdURGNjAtXHVERjcyXHVERjgwLVx1REY5MV18XHVEODAzW1x1REMwMC1cdURDNDhcdURDODAtXHVEQ0IyXHVEQ0MwLVx1RENGMl18XHVEODA0W1x1REMwMy1cdURDMzdcdURDODMtXHVEQ0FGXHVEQ0QwLVx1RENFOFx1REQwMy1cdUREMjZcdURENTAtXHVERDcyXHVERDc2XHVERDgzLVx1RERCMlx1RERDMS1cdUREQzRcdUREREFcdURERENcdURFMDAtXHVERTExXHVERTEzLVx1REUyQlx1REU4MC1cdURFODZcdURFODhcdURFOEEtXHVERThEXHVERThGLVx1REU5RFx1REU5Ri1cdURFQThcdURFQjAtXHVERURFXHVERjA1LVx1REYwQ1x1REYwRlx1REYxMFx1REYxMy1cdURGMjhcdURGMkEtXHVERjMwXHVERjMyXHVERjMzXHVERjM1LVx1REYzOVx1REYzRFx1REY1MFx1REY1RC1cdURGNjFdfFx1RDgwNVtcdURDMDAtXHVEQzM0XHVEQzQ3LVx1REM0QVx1REM4MC1cdURDQUZcdURDQzRcdURDQzVcdURDQzdcdUREODAtXHVEREFFXHVEREQ4LVx1REREQlx1REUwMC1cdURFMkZcdURFNDRcdURFODAtXHVERUFBXHVERjAwLVx1REYxOV18XHVEODA2W1x1RENBMC1cdURDREZcdURDRkZcdURFMDBcdURFMEItXHVERTMyXHVERTNBXHVERTUwXHVERTVDLVx1REU4M1x1REU4Ni1cdURFODlcdURFQzAtXHVERUY4XXxcdUQ4MDdbXHVEQzAwLVx1REMwOFx1REMwQS1cdURDMkVcdURDNDBcdURDNzItXHVEQzhGXHVERDAwLVx1REQwNlx1REQwOFx1REQwOVx1REQwQi1cdUREMzBcdURENDZdfFx1RDgwOFtcdURDMDAtXHVERjk5XXxcdUQ4MDlbXHVEQzgwLVx1REQ0M118W1x1RDgwQ1x1RDgxQy1cdUQ4MjBcdUQ4NDAtXHVEODY4XHVEODZBLVx1RDg2Q1x1RDg2Ri1cdUQ4NzJcdUQ4NzQtXHVEODc5XVtcdURDMDAtXHVERkZGXXxcdUQ4MERbXHVEQzAwLVx1REMyRV18XHVEODExW1x1REMwMC1cdURFNDZdfFx1RDgxQVtcdURDMDAtXHVERTM4XHVERTQwLVx1REU1RVx1REVEMC1cdURFRURcdURGMDAtXHVERjJGXHVERjQwLVx1REY0M1x1REY2My1cdURGNzdcdURGN0QtXHVERjhGXXxcdUQ4MUJbXHVERjAwLVx1REY0NFx1REY1MFx1REY5My1cdURGOUZcdURGRTBcdURGRTFdfFx1RDgyMVtcdURDMDAtXHVERkVDXXxcdUQ4MjJbXHVEQzAwLVx1REVGMl18XHVEODJDW1x1REMwMC1cdUREMUVcdURENzAtXHVERUZCXXxcdUQ4MkZbXHVEQzAwLVx1REM2QVx1REM3MC1cdURDN0NcdURDODAtXHVEQzg4XHVEQzkwLVx1REM5OV18XHVEODM1W1x1REMwMC1cdURDNTRcdURDNTYtXHVEQzlDXHVEQzlFXHVEQzlGXHVEQ0EyXHVEQ0E1XHVEQ0E2XHVEQ0E5LVx1RENBQ1x1RENBRS1cdURDQjlcdURDQkJcdURDQkQtXHVEQ0MzXHVEQ0M1LVx1REQwNVx1REQwNy1cdUREMEFcdUREMEQtXHVERDE0XHVERDE2LVx1REQxQ1x1REQxRS1cdUREMzlcdUREM0ItXHVERDNFXHVERDQwLVx1REQ0NFx1REQ0Nlx1REQ0QS1cdURENTBcdURENTItXHVERUE1XHVERUE4LVx1REVDMFx1REVDMi1cdURFREFcdURFREMtXHVERUZBXHVERUZDLVx1REYxNFx1REYxNi1cdURGMzRcdURGMzYtXHVERjRFXHVERjUwLVx1REY2RVx1REY3MC1cdURGODhcdURGOEEtXHVERkE4XHVERkFBLVx1REZDMlx1REZDNC1cdURGQ0JdfFx1RDgzQVtcdURDMDAtXHVEQ0M0XHVERDAwLVx1REQ0M118XHVEODNCW1x1REUwMC1cdURFMDNcdURFMDUtXHVERTFGXHVERTIxXHVERTIyXHVERTI0XHVERTI3XHVERTI5LVx1REUzMlx1REUzNC1cdURFMzdcdURFMzlcdURFM0JcdURFNDJcdURFNDdcdURFNDlcdURFNEJcdURFNEQtXHVERTRGXHVERTUxXHVERTUyXHVERTU0XHVERTU3XHVERTU5XHVERTVCXHVERTVEXHVERTVGXHVERTYxXHVERTYyXHVERTY0XHVERTY3LVx1REU2QVx1REU2Qy1cdURFNzJcdURFNzQtXHVERTc3XHVERTc5LVx1REU3Q1x1REU3RVx1REU4MC1cdURFODlcdURFOEItXHVERTlCXHVERUExLVx1REVBM1x1REVBNS1cdURFQTlcdURFQUItXHVERUJCXXxcdUQ4NjlbXHVEQzAwLVx1REVENlx1REYwMC1cdURGRkZdfFx1RDg2RFtcdURDMDAtXHVERjM0XHVERjQwLVx1REZGRl18XHVEODZFW1x1REMwMC1cdURDMURcdURDMjAtXHVERkZGXXxcdUQ4NzNbXHVEQzAwLVx1REVBMVx1REVCMC1cdURGRkZdfFx1RDg3QVtcdURDMDAtXHVERkUwXXxcdUQ4N0VbXHVEQzAwLVx1REUxRF0pXFMqL2c7Y2xhc3MgV3Z7dHJhbnNmb3JtKHQpe2lmKG51bGw9PXQpcmV0dXJuIG51bGw7aWYoInN0cmluZyIhPXR5cGVvZiB0KXRocm93IEZ2KFd2LHQpO3JldHVybiB0LnJlcGxhY2UoVXYsKHQ9PnRbMF0udG9VcHBlckNhc2UoKSt0LnN1YnN0cigxKS50b0xvd2VyQ2FzZSgpKSl9fVd2Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxXdil9LFd2Lsm1cGlwZT1ibyh7bmFtZToidGl0bGVjYXNlIix0eXBlOld2LHB1cmU6ITB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFd2LFt7dHlwZTpEXyxhcmdzOlt7bmFtZToidGl0bGVjYXNlIn1dfV0sbnVsbCxudWxsKTtjbGFzcyBHdnt0cmFuc2Zvcm0odCl7aWYobnVsbD09dClyZXR1cm4gbnVsbDtpZigic3RyaW5nIiE9dHlwZW9mIHQpdGhyb3cgRnYoR3YsdCk7cmV0dXJuIHQudG9VcHBlckNhc2UoKX19R3YuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEd2KX0sR3YuybVwaXBlPWJvKHtuYW1lOiJ1cHBlcmNhc2UiLHR5cGU6R3YscHVyZTohMH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoR3YsW3t0eXBlOkRfLGFyZ3M6W3tuYW1lOiJ1cHBlcmNhc2UifV19XSxudWxsLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgWXZ7Y29uc3RydWN0b3IodCl7dGhpcy5sb2NhbGU9dH10cmFuc2Zvcm0odCxlPSJtZWRpdW1EYXRlIixuLG8pe2lmKG51bGw9PXR8fCIiPT09dHx8dCE9dClyZXR1cm4gbnVsbDt0cnl7cmV0dXJuIFpNKHQsZSxvfHx0aGlzLmxvY2FsZSxuKX1jYXRjaCh0KXt0aHJvdyBGdihZdix0Lm1lc3NhZ2UpfX19WXYuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFl2KShnZihRXywxNikpfSxZdi7JtXBpcGU9Ym8oe25hbWU6ImRhdGUiLHR5cGU6WXYscHVyZTohMH0pLFl2LmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W1FfXX1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihZdixbe3R5cGU6RF8sYXJnczpbe25hbWU6ImRhdGUiLHB1cmU6ITB9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbUV9dfV19XX0pLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgcXY9LyMvZztjbGFzcyBadntjb25zdHJ1Y3Rvcih0KXt0aGlzLl9sb2NhbGl6YXRpb249dH10cmFuc2Zvcm0odCxlLG4pe2lmKG51bGw9PXQpcmV0dXJuIiI7aWYoIm9iamVjdCIhPXR5cGVvZiBlfHxudWxsPT09ZSl0aHJvdyBGdihadixlKTtyZXR1cm4gZVtidih0LE9iamVjdC5rZXlzKGUpLHRoaXMuX2xvY2FsaXphdGlvbixuKV0ucmVwbGFjZShxdix0LnRvU3RyaW5nKCkpfX1adi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8WnYpKGdmKGh2LDE2KSl9LFp2Lsm1cGlwZT1ibyh7bmFtZToiaTE4blBsdXJhbCIsdHlwZTpadixwdXJlOiEwfSksWnYuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpodn1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoWnYsW3t0eXBlOkRfLGFyZ3M6W3tuYW1lOiJpMThuUGx1cmFsIixwdXJlOiEwfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6aHZ9XX0pLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgWHZ7dHJhbnNmb3JtKHQsZSl7aWYobnVsbD09dClyZXR1cm4iIjtpZigib2JqZWN0IiE9dHlwZW9mIGV8fCJzdHJpbmciIT10eXBlb2YgdCl0aHJvdyBGdihYdixlKTtyZXR1cm4gZS5oYXNPd25Qcm9wZXJ0eSh0KT9lW3RdOmUuaGFzT3duUHJvcGVydHkoIm90aGVyIik/ZS5vdGhlcjoiIn19WHYuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFh2KX0sWHYuybVwaXBlPWJvKHtuYW1lOiJpMThuU2VsZWN0Iix0eXBlOlh2LHB1cmU6ITB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFh2LFt7dHlwZTpEXyxhcmdzOlt7bmFtZToiaTE4blNlbGVjdCIscHVyZTohMH1dfV0sbnVsbCxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIEt2e3RyYW5zZm9ybSh0KXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkodCxudWxsLDIpfX1Ldi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8S3YpfSxLdi7JtXBpcGU9Ym8oe25hbWU6Impzb24iLHR5cGU6S3YscHVyZTohMX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoS3YsW3t0eXBlOkRfLGFyZ3M6W3tuYW1lOiJqc29uIixwdXJlOiExfV19XSxudWxsLG51bGwpO2NsYXNzIEp2e2NvbnN0cnVjdG9yKHQpe3RoaXMuZGlmZmVycz10LHRoaXMua2V5VmFsdWVzPVtdLHRoaXMuY29tcGFyZUZuPVF2fXRyYW5zZm9ybSh0LGU9UXYpe2lmKCF0fHwhKHQgaW5zdGFuY2VvZiBNYXApJiYib2JqZWN0IiE9dHlwZW9mIHQpcmV0dXJuIG51bGw7dGhpcy5kaWZmZXJ8fCh0aGlzLmRpZmZlcj10aGlzLmRpZmZlcnMuZmluZCh0KS5jcmVhdGUoKSk7Y29uc3Qgbj10aGlzLmRpZmZlci5kaWZmKHQpLG89ZSE9PXRoaXMuY29tcGFyZUZuO3JldHVybiBuJiYodGhpcy5rZXlWYWx1ZXM9W10sbi5mb3JFYWNoSXRlbSgodD0+e3RoaXMua2V5VmFsdWVzLnB1c2goKAovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KZnVuY3Rpb24gZSh0LG4pe3JldHVybntrZXk6dCx2YWx1ZTpufX0pKHQua2V5LHQuY3VycmVudFZhbHVlKSl9KSkpLChufHxvKSYmKHRoaXMua2V5VmFsdWVzLnNvcnQoZSksdGhpcy5jb21wYXJlRm49ZSksdGhpcy5rZXlWYWx1ZXN9fWZ1bmN0aW9uIFF2KHQsZSl7Y29uc3Qgbj10LmtleSxvPWUua2V5O2lmKG49PT1vKXJldHVybiAwO2lmKHZvaWQgMD09PW4pcmV0dXJuIDE7aWYodm9pZCAwPT09bylyZXR1cm4tMTtpZihudWxsPT09bilyZXR1cm4gMTtpZihudWxsPT09bylyZXR1cm4tMTtpZigic3RyaW5nIj09dHlwZW9mIG4mJiJzdHJpbmciPT10eXBlb2YgbylyZXR1cm4gbjxvPy0xOjE7aWYoIm51bWJlciI9PXR5cGVvZiBuJiYibnVtYmVyIj09dHlwZW9mIG8pcmV0dXJuIG4tbztpZigiYm9vbGVhbiI9PXR5cGVvZiBuJiYiYm9vbGVhbiI9PXR5cGVvZiBvKXJldHVybiBuPG8/LTE6MTtjb25zdCBpPVN0cmluZyhuKSxhPVN0cmluZyhvKTtyZXR1cm4gaT09YT8wOmk8YT8tMToxfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9Kdi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8SnYpKGdmKHliLDE2KSl9LEp2Lsm1cGlwZT1ibyh7bmFtZToia2V5dmFsdWUiLHR5cGU6SnYscHVyZTohMX0pLEp2LmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6eWJ9XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEp2LFt7dHlwZTpEXyxhcmdzOlt7bmFtZToia2V5dmFsdWUiLHB1cmU6ITF9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTp5Yn1dfSksbnVsbCk7Y2xhc3MgJHZ7Y29uc3RydWN0b3IodCl7dGhpcy5fbG9jYWxlPXR9dHJhbnNmb3JtKHQsZSxuKXtpZighbngodCkpcmV0dXJuIG51bGw7bj1ufHx0aGlzLl9sb2NhbGU7dHJ5e3JldHVybiBmdihveCh0KSxuLGUpfWNhdGNoKHQpe3Rocm93IEZ2KCR2LHQubWVzc2FnZSl9fX0kdi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8JHYpKGdmKFFfLDE2KSl9LCR2Lsm1cGlwZT1ibyh7bmFtZToibnVtYmVyIix0eXBlOiR2LHB1cmU6ITB9KSwkdi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltRX119XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoJHYsW3t0eXBlOkRfLGFyZ3M6W3tuYW1lOiJudW1iZXIifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W1FfXX1dfV19KSxudWxsKTtjbGFzcyB0eHtjb25zdHJ1Y3Rvcih0KXt0aGlzLl9sb2NhbGU9dH10cmFuc2Zvcm0odCxlLG4pe2lmKCFueCh0KSlyZXR1cm4gbnVsbDtuPW58fHRoaXMuX2xvY2FsZTt0cnl7cmV0dXJuKGZ1bmN0aW9uIG8odCxlLG4pe3JldHVybiBwdih0LHV2KElNKGUsUE0uUGVyY2VudCksek0oZSxSTS5NaW51c1NpZ24pKSxlLFJNLkdyb3VwLFJNLkRlY2ltYWwsbiwhMCkucmVwbGFjZShuZXcgUmVnRXhwKCIlIiwiZyIpLHpNKGUsUk0uUGVyY2VudFNpZ24pKX0pKG94KHQpLG4sZSl9Y2F0Y2godCl7dGhyb3cgRnYodHgsdC5tZXNzYWdlKX19fXR4Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx0eCkoZ2YoUV8sMTYpKX0sdHguybVwaXBlPWJvKHtuYW1lOiJwZXJjZW50Iix0eXBlOnR4LHB1cmU6ITB9KSx0eC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltRX119XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIodHgsW3t0eXBlOkRfLGFyZ3M6W3tuYW1lOiJwZXJjZW50In1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltRX119XX1dfSksbnVsbCk7Y2xhc3MgZXh7Y29uc3RydWN0b3IodCxlPSJVU0QiKXt0aGlzLl9sb2NhbGU9dCx0aGlzLl9kZWZhdWx0Q3VycmVuY3lDb2RlPWV9dHJhbnNmb3JtKHQsZT10aGlzLl9kZWZhdWx0Q3VycmVuY3lDb2RlLG49InN5bWJvbCIsbyxpKXtpZighbngodCkpcmV0dXJuIG51bGw7aT1pfHx0aGlzLl9sb2NhbGUsImJvb2xlYW4iPT10eXBlb2YgbiYmKCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmY29uc29sZSYmY29uc29sZS53YXJuJiZjb25zb2xlLndhcm4oJ1dhcm5pbmc6IHRoZSBjdXJyZW5jeSBwaXBlIGhhcyBiZWVuIGNoYW5nZWQgaW4gQW5ndWxhciB2NS4gVGhlIHN5bWJvbERpc3BsYXkgb3B0aW9uICh0aGlyZCBwYXJhbWV0ZXIpIGlzIG5vdyBhIHN0cmluZyBpbnN0ZWFkIG9mIGEgYm9vbGVhbi4gVGhlIGFjY2VwdGVkIHZhbHVlcyBhcmUgImNvZGUiLCAic3ltYm9sIiBvciAic3ltYm9sLW5hcnJvdyIuJyksbj1uPyJzeW1ib2wiOiJjb2RlIik7bGV0IGE9ZXx8dGhpcy5fZGVmYXVsdEN1cnJlbmN5Q29kZTsiY29kZSIhPT1uJiYoYT0ic3ltYm9sIj09PW58fCJzeW1ib2wtbmFycm93Ij09PW4/Vk0oYSwic3ltYm9sIj09PW4/IndpZGUiOiJuYXJyb3ciLGkpOm4pO3RyeXtyZXR1cm4gbXYob3godCksaSxhLGUsbyl9Y2F0Y2godCl7dGhyb3cgRnYoZXgsdC5tZXNzYWdlKX19fWZ1bmN0aW9uIG54KHQpe3JldHVybiEobnVsbD09dHx8IiI9PT10fHx0IT10KX1mdW5jdGlvbiBveCh0KXtpZigic3RyaW5nIj09dHlwZW9mIHQmJiFpc05hTihOdW1iZXIodCktcGFyc2VGbG9hdCh0KSkpcmV0dXJuIE51bWJlcih0KTtpZigibnVtYmVyIiE9dHlwZW9mIHQpdGhyb3cgbmV3IEVycm9yKGAke3R9IGlzIG5vdCBhIG51bWJlcmApO3JldHVybiB0fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9leC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8ZXgpKGdmKFFfLDE2KSxnZigkXywxNikpfSxleC7JtXBpcGU9Ym8oe25hbWU6ImN1cnJlbmN5Iix0eXBlOmV4LHB1cmU6ITB9KSxleC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltRX119XX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6WyRfXX1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihleCxbe3R5cGU6RF8sYXJnczpbe25hbWU6ImN1cnJlbmN5In1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltRX119XX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6WyRfXX1dfV19KSxudWxsKTtjbGFzcyBpeHt0cmFuc2Zvcm0odCxlLG4pe2lmKG51bGw9PXQpcmV0dXJuIG51bGw7aWYoIXRoaXMuc3VwcG9ydHModCkpdGhyb3cgRnYoaXgsdCk7cmV0dXJuIHQuc2xpY2UoZSxuKX1zdXBwb3J0cyh0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHR8fEFycmF5LmlzQXJyYXkodCl9fWl4Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxpeCl9LGl4Lsm1cGlwZT1ibyh7bmFtZToic2xpY2UiLHR5cGU6aXgscHVyZTohMX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoaXgsW3t0eXBlOkRfLGFyZ3M6W3tuYW1lOiJzbGljZSIscHVyZTohMX1dfV0sbnVsbCxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IGF4PVtWdixHdixqdixLdixpeCwkdix0eCxXdixleCxZdixadixYdixKdl07Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIHJ4e31yeC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8cngpfSxyeC7JtW1vZD1mbyh7dHlwZTpyeH0pLHJ4Lsm1aW5qPURuKHtwcm92aWRlcnM6W3twcm92aWRlOmh2LHVzZUNsYXNzOnl2fV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHJ4LFt7dHlwZTpMXyxhcmdzOlt7ZGVjbGFyYXRpb25zOltIdixheF0sZXhwb3J0czpbSHYsYXhdLHByb3ZpZGVyczpbe3Byb3ZpZGU6aHYsdXNlQ2xhc3M6eXZ9XX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKHJ4LHtkZWNsYXJhdGlvbnM6W0N2LE12LHh2LFB2LEl2LHp2LER2LFJ2LEV2LFR2LE52LFZ2LEd2LGp2LEt2LGl4LCR2LHR4LFd2LGV4LFl2LFp2LFh2LEp2XSxleHBvcnRzOltDdixNdix4dixQdixJdix6dixEdixSdixFdixUdixOdixWdixHdixqdixLdixpeCwkdix0eCxXdixleCxZdixadixYdixKdl19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IHN4PSJicm93c2VyIjsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCm5ldyBvYigiMTIuMi4xIik7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBseHt9bHguybVwcm92PVNuKHt0b2tlbjpseCxwcm92aWRlZEluOiJyb290IixmYWN0b3J5OigpPT5uZXcgY3goVHIoc00pLHdpbmRvdyl9KTtjbGFzcyBjeHtjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuZG9jdW1lbnQ9dCx0aGlzLndpbmRvdz1lLHRoaXMub2Zmc2V0PSgpPT5bMCwwXX1zZXRPZmZzZXQodCl7dGhpcy5vZmZzZXQ9QXJyYXkuaXNBcnJheSh0KT8oKT0+dDp0fWdldFNjcm9sbFBvc2l0aW9uKCl7cmV0dXJuIHRoaXMuc3VwcG9ydHNTY3JvbGxpbmcoKT9bdGhpcy53aW5kb3cucGFnZVhPZmZzZXQsdGhpcy53aW5kb3cucGFnZVlPZmZzZXRdOlswLDBdfXNjcm9sbFRvUG9zaXRpb24odCl7dGhpcy5zdXBwb3J0c1Njcm9sbGluZygpJiZ0aGlzLndpbmRvdy5zY3JvbGxUbyh0WzBdLHRbMV0pfXNjcm9sbFRvQW5jaG9yKHQpe2lmKCF0aGlzLnN1cHBvcnRzU2Nyb2xsaW5nKCkpcmV0dXJuO2NvbnN0IGU9KGZ1bmN0aW9uIG4odCxlKXtjb25zdCBuPXQuZ2V0RWxlbWVudEJ5SWQoZSl8fHQuZ2V0RWxlbWVudHNCeU5hbWUoZSlbMF07aWYobilyZXR1cm4gbjtpZigiZnVuY3Rpb24iPT10eXBlb2YgdC5jcmVhdGVUcmVlV2Fsa2VyJiZ0LmJvZHkmJih0LmJvZHkuY3JlYXRlU2hhZG93Um9vdHx8dC5ib2R5LmF0dGFjaFNoYWRvdykpe2NvbnN0IG49dC5jcmVhdGVUcmVlV2Fsa2VyKHQuYm9keSxOb2RlRmlsdGVyLlNIT1dfRUxFTUVOVCk7bGV0IG89bi5jdXJyZW50Tm9kZTtmb3IoO287KXtjb25zdCB0PW8uc2hhZG93Um9vdDtpZih0KXtjb25zdCBuPXQuZ2V0RWxlbWVudEJ5SWQoZSl8fHQucXVlcnlTZWxlY3RvcihgW25hbWU9IiR7ZX0iXWApO2lmKG4pcmV0dXJuIG59bz1uLm5leHROb2RlKCl9fXJldHVybiBudWxsfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8pKHRoaXMuZG9jdW1lbnQsdCk7ZSYmKHRoaXMuc2Nyb2xsVG9FbGVtZW50KGUpLHRoaXMuYXR0ZW1wdEZvY3VzKGUpKX1zZXRIaXN0b3J5U2Nyb2xsUmVzdG9yYXRpb24odCl7aWYodGhpcy5zdXBwb3J0U2Nyb2xsUmVzdG9yYXRpb24oKSl7Y29uc3QgZT10aGlzLndpbmRvdy5oaXN0b3J5O2UmJmUuc2Nyb2xsUmVzdG9yYXRpb24mJihlLnNjcm9sbFJlc3RvcmF0aW9uPXQpfX1zY3JvbGxUb0VsZW1lbnQodCl7Y29uc3QgZT10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG49ZS5sZWZ0K3RoaXMud2luZG93LnBhZ2VYT2Zmc2V0LG89ZS50b3ArdGhpcy53aW5kb3cucGFnZVlPZmZzZXQsaT10aGlzLm9mZnNldCgpO3RoaXMud2luZG93LnNjcm9sbFRvKG4taVswXSxvLWlbMV0pfWF0dGVtcHRGb2N1cyh0KXtyZXR1cm4gdC5mb2N1cygpLHRoaXMuZG9jdW1lbnQuYWN0aXZlRWxlbWVudD09PXR9c3VwcG9ydFNjcm9sbFJlc3RvcmF0aW9uKCl7dHJ5e2lmKCF0aGlzLnN1cHBvcnRzU2Nyb2xsaW5nKCkpcmV0dXJuITE7Y29uc3QgdD1keCh0aGlzLndpbmRvdy5oaXN0b3J5KXx8ZHgoT2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMud2luZG93Lmhpc3RvcnkpKTtyZXR1cm4hKCF0fHwhdC53cml0YWJsZSYmIXQuc2V0KX1jYXRjaCh0KXtyZXR1cm4hMX19c3VwcG9ydHNTY3JvbGxpbmcoKXt0cnl7cmV0dXJuISF0aGlzLndpbmRvdyYmISF0aGlzLndpbmRvdy5zY3JvbGxUbyYmInBhZ2VYT2Zmc2V0ImluIHRoaXMud2luZG93fWNhdGNoKHQpe3JldHVybiExfX19ZnVuY3Rpb24gZHgodCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCwic2Nyb2xsUmVzdG9yYXRpb24iKX1jbGFzcyBweHt9Ci8qKgogICAgICogQGxpY2Vuc2UgQW5ndWxhciB2MTIuMi4xCiAgICAgKiAoYykgMjAxMC0yMDIxIEdvb2dsZSBMTEMuIGh0dHBzOi8vYW5ndWxhci5pby8KICAgICAqIExpY2Vuc2U6IE1JVAogICAgICovCi8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgbXggZXh0ZW5kcyBjbGFzcyBleHRlbmRzIGNsYXNze317Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuc3VwcG9ydHNET01FdmVudHM9ITB9fXtzdGF0aWMgbWFrZUN1cnJlbnQoKXshKGZ1bmN0aW9uIHQoZSl7YU18fChhTT1lKX0pKG5ldyBteCl9b25BbmRDYW5jZWwodCxlLG4pe3JldHVybiB0LmFkZEV2ZW50TGlzdGVuZXIoZSxuLCExKSwoKT0+e3QucmVtb3ZlRXZlbnRMaXN0ZW5lcihlLG4sITEpfX1kaXNwYXRjaEV2ZW50KHQsZSl7dC5kaXNwYXRjaEV2ZW50KGUpfXJlbW92ZSh0KXt0LnBhcmVudE5vZGUmJnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0KX1jcmVhdGVFbGVtZW50KHQsZSl7cmV0dXJuKGU9ZXx8dGhpcy5nZXREZWZhdWx0RG9jdW1lbnQoKSkuY3JlYXRlRWxlbWVudCh0KX1jcmVhdGVIdG1sRG9jdW1lbnQoKXtyZXR1cm4gZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KCJmYWtlVGl0bGUiKX1nZXREZWZhdWx0RG9jdW1lbnQoKXtyZXR1cm4gZG9jdW1lbnR9aXNFbGVtZW50Tm9kZSh0KXtyZXR1cm4gdC5ub2RlVHlwZT09PU5vZGUuRUxFTUVOVF9OT0RFfWlzU2hhZG93Um9vdCh0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIERvY3VtZW50RnJhZ21lbnR9Z2V0R2xvYmFsRXZlbnRUYXJnZXQodCxlKXtyZXR1cm4id2luZG93Ij09PWU/d2luZG93OiJkb2N1bWVudCI9PT1lP3Q6ImJvZHkiPT09ZT90LmJvZHk6bnVsbH1nZXRCYXNlSHJlZih0KXtjb25zdCBlPShmdW5jdGlvbiBuKCl7cmV0dXJuIHV4PXV4fHxkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJiYXNlIiksdXg/dXguZ2V0QXR0cmlidXRlKCJocmVmIik6bnVsbH0pKCk7cmV0dXJuIG51bGw9PWU/bnVsbDooZnVuY3Rpb24gbyh0KXtmeD1meHx8ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpLGZ4LnNldEF0dHJpYnV0ZSgiaHJlZiIsdCk7Y29uc3QgZT1meC5wYXRobmFtZTtyZXR1cm4iLyI9PT1lLmNoYXJBdCgwKT9lOmAvJHtlfWB9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLykoZSl9cmVzZXRCYXNlRWxlbWVudCgpe3V4PW51bGx9Z2V0VXNlckFnZW50KCl7cmV0dXJuIHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50fWdldENvb2tpZSh0KXtyZXR1cm4gX3YoZG9jdW1lbnQuY29va2llLHQpfX1sZXQgZngsdXg9bnVsbDtjb25zdCBneD1uZXcgZXIoIlRSQU5TSVRJT05fSUQiKTtjb25zdCBoeD1be3Byb3ZpZGU6al8sdXNlRmFjdG9yeTpmdW5jdGlvbiBieCh0LGUsbil7cmV0dXJuKCk9PntuLmdldChVXykuZG9uZVByb21pc2UudGhlbigoKCk9Pntjb25zdCBuPXJNKCk7QXJyYXkucHJvdG90eXBlLnNsaWNlLmFwcGx5KGUucXVlcnlTZWxlY3RvckFsbCgic3R5bGVbbmctdHJhbnNpdGlvbl0iKSkuZmlsdGVyKChlPT5lLmdldEF0dHJpYnV0ZSgibmctdHJhbnNpdGlvbiIpPT09dCkpLmZvckVhY2goKHQ9Pm4ucmVtb3ZlKHQpKSl9KSl9fSxkZXBzOltneCxzTSxOcF0sbXVsdGk6ITB9XTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgeXh7c3RhdGljIGluaXQoKXshKGZ1bmN0aW9uIHQoZSl7dkM9ZX0pKG5ldyB5eCl9YWRkVG9XaW5kb3codCl7WG4uZ2V0QW5ndWxhclRlc3RhYmlsaXR5PShlLG49ITApPT57Y29uc3Qgbz10LmZpbmRUZXN0YWJpbGl0eUluVHJlZShlLG4pO2lmKG51bGw9PW8pdGhyb3cgbmV3IEVycm9yKCJDb3VsZCBub3QgZmluZCB0ZXN0YWJpbGl0eSBmb3IgZWxlbWVudC4iKTtyZXR1cm4gb30sWG4uZ2V0QWxsQW5ndWxhclRlc3RhYmlsaXRpZXM9KCk9PnQuZ2V0QWxsVGVzdGFiaWxpdGllcygpLFhuLmdldEFsbEFuZ3VsYXJSb290RWxlbWVudHM9KCk9PnQuZ2V0QWxsUm9vdEVsZW1lbnRzKCk7WG4uZnJhbWV3b3JrU3RhYmlsaXplcnN8fChYbi5mcmFtZXdvcmtTdGFiaWxpemVycz1bXSksWG4uZnJhbWV3b3JrU3RhYmlsaXplcnMucHVzaCgodD0+e2NvbnN0IGU9WG4uZ2V0QWxsQW5ndWxhclRlc3RhYmlsaXRpZXMoKTtsZXQgbj1lLmxlbmd0aCxvPSExO2NvbnN0IGk9ZnVuY3Rpb24oZSl7bz1vfHxlLG4tLSwwPT1uJiZ0KG8pfTtlLmZvckVhY2goKGZ1bmN0aW9uKHQpe3Qud2hlblN0YWJsZShpKX0pKX0pKX1maW5kVGVzdGFiaWxpdHlJblRyZWUodCxlLG4pe2lmKG51bGw9PWUpcmV0dXJuIG51bGw7Y29uc3Qgbz10LmdldFRlc3RhYmlsaXR5KGUpO3JldHVybiBudWxsIT1vP286bj9yTSgpLmlzU2hhZG93Um9vdChlKT90aGlzLmZpbmRUZXN0YWJpbGl0eUluVHJlZSh0LGUuaG9zdCwhMCk6dGhpcy5maW5kVGVzdGFiaWxpdHlJblRyZWUodCxlLnBhcmVudEVsZW1lbnQsITApOm51bGx9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBfeHtidWlsZCgpe3JldHVybiBuZXcgWE1MSHR0cFJlcXVlc3R9fV94Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxfeCl9LF94Lsm1cHJvdj1Tbih7dG9rZW46X3gsZmFjdG9yeTpfeC7JtWZhY30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoX3gsW3t0eXBlOlVtfV0sbnVsbCxudWxsKTtuZXcgQnI7Y29uc3QgQ3g9W10sTXg9bmV3IGVyKCJFdmVudE1hbmFnZXJQbHVnaW5zIik7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIHZ4e2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5fem9uZT1lLHRoaXMuX2V2ZW50TmFtZVRvUGx1Z2luPW5ldyBNYXAsdC5mb3JFYWNoKCh0PT50Lm1hbmFnZXI9dGhpcykpLHRoaXMuX3BsdWdpbnM9dC5zbGljZSgpLnJldmVyc2UoKX1hZGRFdmVudExpc3RlbmVyKHQsZSxuKXtyZXR1cm4gdGhpcy5fZmluZFBsdWdpbkZvcihlKS5hZGRFdmVudExpc3RlbmVyKHQsZSxuKX1hZGRHbG9iYWxFdmVudExpc3RlbmVyKHQsZSxuKXtyZXR1cm4gdGhpcy5fZmluZFBsdWdpbkZvcihlKS5hZGRHbG9iYWxFdmVudExpc3RlbmVyKHQsZSxuKX1nZXRab25lKCl7cmV0dXJuIHRoaXMuX3pvbmV9X2ZpbmRQbHVnaW5Gb3IodCl7Y29uc3QgZT10aGlzLl9ldmVudE5hbWVUb1BsdWdpbi5nZXQodCk7aWYoZSlyZXR1cm4gZTtjb25zdCBuPXRoaXMuX3BsdWdpbnM7Zm9yKGxldCBlPTA7ZTxuLmxlbmd0aDtlKyspe2NvbnN0IG89bltlXTtpZihvLnN1cHBvcnRzKHQpKXJldHVybiB0aGlzLl9ldmVudE5hbWVUb1BsdWdpbi5zZXQodCxvKSxvfXRocm93IG5ldyBFcnJvcihgTm8gZXZlbnQgbWFuYWdlciBwbHVnaW4gZm91bmQgZm9yIGV2ZW50ICR7dH1gKX19dnguybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHZ4KShUcihNeCksVHIobUMpKX0sdnguybVwcm92PVNuKHt0b2tlbjp2eCxmYWN0b3J5OnZ4Lsm1ZmFjfSksdnguY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltNeF19XX0se3R5cGU6bUN9XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHZ4LFt7dHlwZTpVbX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltNeF19XX0se3R5cGU6bUN9XX0pLG51bGwpO2NsYXNzIHh4e2NvbnN0cnVjdG9yKHQpe3RoaXMuX2RvYz10fWFkZEdsb2JhbEV2ZW50TGlzdGVuZXIodCxlLG4pe2NvbnN0IG89ck0oKS5nZXRHbG9iYWxFdmVudFRhcmdldCh0aGlzLl9kb2MsdCk7aWYoIW8pdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCBldmVudCB0YXJnZXQgJHtvfSBmb3IgZXZlbnQgJHtlfWApO3JldHVybiB0aGlzLmFkZEV2ZW50TGlzdGVuZXIobyxlLG4pfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgT3h7Y29uc3RydWN0b3IoKXt0aGlzLl9zdHlsZXNTZXQ9bmV3IFNldH1hZGRTdHlsZXModCl7Y29uc3QgZT1uZXcgU2V0O3QuZm9yRWFjaCgodD0+e3RoaXMuX3N0eWxlc1NldC5oYXModCl8fCh0aGlzLl9zdHlsZXNTZXQuYWRkKHQpLGUuYWRkKHQpKX0pKSx0aGlzLm9uU3R5bGVzQWRkZWQoZSl9b25TdHlsZXNBZGRlZCh0KXt9Z2V0QWxsU3R5bGVzKCl7cmV0dXJuIEFycmF5LmZyb20odGhpcy5fc3R5bGVzU2V0KX19T3guybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fE94KX0sT3guybVwcm92PVNuKHt0b2tlbjpPeCxmYWN0b3J5Ok94Lsm1ZmFjfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihPeCxbe3R5cGU6VW19XSwoZnVuY3Rpb24oKXtyZXR1cm5bXX0pLG51bGwpO2NsYXNzIFB4IGV4dGVuZHMgT3h7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLl9kb2M9dCx0aGlzLl9ob3N0Tm9kZXM9bmV3IE1hcCx0aGlzLl9ob3N0Tm9kZXMuc2V0KHQuaGVhZCxbXSl9X2FkZFN0eWxlc1RvSG9zdCh0LGUsbil7dC5mb3JFYWNoKCh0PT57Y29uc3Qgbz10aGlzLl9kb2MuY3JlYXRlRWxlbWVudCgic3R5bGUiKTtvLnRleHRDb250ZW50PXQsbi5wdXNoKGUuYXBwZW5kQ2hpbGQobykpfSkpfWFkZEhvc3QodCl7Y29uc3QgZT1bXTt0aGlzLl9hZGRTdHlsZXNUb0hvc3QodGhpcy5fc3R5bGVzU2V0LHQsZSksdGhpcy5faG9zdE5vZGVzLnNldCh0LGUpfXJlbW92ZUhvc3QodCl7Y29uc3QgZT10aGlzLl9ob3N0Tm9kZXMuZ2V0KHQpO2UmJmUuZm9yRWFjaCh3eCksdGhpcy5faG9zdE5vZGVzLmRlbGV0ZSh0KX1vblN0eWxlc0FkZGVkKHQpe3RoaXMuX2hvc3ROb2Rlcy5mb3JFYWNoKCgoZSxuKT0+e3RoaXMuX2FkZFN0eWxlc1RvSG9zdCh0LG4sZSl9KSl9bmdPbkRlc3Ryb3koKXt0aGlzLl9ob3N0Tm9kZXMuZm9yRWFjaCgodD0+dC5mb3JFYWNoKHd4KSkpfX1mdW5jdGlvbiB3eCh0KXtyTSgpLnJlbW92ZSh0KX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovUHguybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFB4KShUcihzTSkpfSxQeC7JtXByb3Y9U24oe3Rva2VuOlB4LGZhY3Rvcnk6UHguybVmYWN9KSxQeC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoUHgsW3t0eXBlOlVtfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX1dfSksbnVsbCk7Y29uc3Qga3g9e3N2ZzoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHhodG1sOiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIix4bGluazoiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIseG1sOiJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLyJ9LFN4PS8lQ09NUCUvZyxEeD0idW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8ISFuZ0Rldk1vZGUsUng9Il9uZ2hvc3QtJUNPTVAlIixFeD0iX25nY29udGVudC0lQ09NUCUiO2Z1bmN0aW9uIEF4KHQsZSxuKXtmb3IobGV0IG89MDtvPGUubGVuZ3RoO28rKyl7bGV0IGk9ZVtvXTtBcnJheS5pc0FycmF5KGkpP0F4KHQsaSxuKTooaT1pLnJlcGxhY2UoU3gsdCksbi5wdXNoKGkpKX1yZXR1cm4gbn1mdW5jdGlvbiBUeCh0KXtyZXR1cm4gZT0+e2lmKCJfX25nVW53cmFwX18iPT09ZSlyZXR1cm4gdDshMT09PXQoZSkmJihlLnByZXZlbnREZWZhdWx0KCksZS5yZXR1cm5WYWx1ZT0hMSl9fWxldCBOeD0hMTtjbGFzcyB6eHtjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5ldmVudE1hbmFnZXI9dCx0aGlzLnNoYXJlZFN0eWxlc0hvc3Q9ZSx0aGlzLmFwcElkPW4sdGhpcy5yZW5kZXJlckJ5Q29tcElkPW5ldyBNYXAsdGhpcy5kZWZhdWx0UmVuZGVyZXI9bmV3IEl4KHQpfWNyZWF0ZVJlbmRlcmVyKHQsZSl7aWYoIXR8fCFlKXJldHVybiB0aGlzLmRlZmF1bHRSZW5kZXJlcjtzd2l0Y2goZS5lbmNhcHN1bGF0aW9uKXtjYXNlIFduLkVtdWxhdGVkOntsZXQgbj10aGlzLnJlbmRlcmVyQnlDb21wSWQuZ2V0KGUuaWQpO3JldHVybiBufHwobj1uZXcgTHgodGhpcy5ldmVudE1hbmFnZXIsdGhpcy5zaGFyZWRTdHlsZXNIb3N0LGUsdGhpcy5hcHBJZCksdGhpcy5yZW5kZXJlckJ5Q29tcElkLnNldChlLmlkLG4pKSxuLmFwcGx5VG9Ib3N0KHQpLG59Y2FzZSAxOmNhc2UgV24uU2hhZG93RG9tOnJldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgbmdEZXZNb2RlJiYhbmdEZXZNb2RlfHxOeHx8MSE9PWUuZW5jYXBzdWxhdGlvbnx8KE54PSEwLGNvbnNvbGUud2FybigiVmlld0VuY2Fwc3VsYXRpb24uTmF0aXZlIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQuIEZhbGxpbmcgYmFjayB0byBWaWV3RW5jYXBzdWxhdGlvbi5TaGFkb3dEb20uIFRoZSBmYWxsYmFjayB3aWxsIGJlIHJlbW92ZWQgaW4gdjEyLiIpKSxuZXcgQngodGhpcy5ldmVudE1hbmFnZXIsdGhpcy5zaGFyZWRTdHlsZXNIb3N0LHQsZSk7ZGVmYXVsdDppZighdGhpcy5yZW5kZXJlckJ5Q29tcElkLmhhcyhlLmlkKSl7Y29uc3QgdD1BeChlLmlkLGUuc3R5bGVzLFtdKTt0aGlzLnNoYXJlZFN0eWxlc0hvc3QuYWRkU3R5bGVzKHQpLHRoaXMucmVuZGVyZXJCeUNvbXBJZC5zZXQoZS5pZCx0aGlzLmRlZmF1bHRSZW5kZXJlcil9cmV0dXJuIHRoaXMuZGVmYXVsdFJlbmRlcmVyfX1iZWdpbigpe31lbmQoKXt9fXp4Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx6eCkoVHIodngpLFRyKFB4KSxUcihXXykpfSx6eC7JtXByb3Y9U24oe3Rva2VuOnp4LGZhY3Rvcnk6enguybVmYWN9KSx6eC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnZ4fSx7dHlwZTpQeH0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W1dfXX1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih6eCxbe3R5cGU6VW19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dnh9LHt0eXBlOlB4fSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbV19dfV19XX0pLG51bGwpO2NsYXNzIEl4e2NvbnN0cnVjdG9yKHQpe3RoaXMuZXZlbnRNYW5hZ2VyPXQsdGhpcy5kYXRhPU9iamVjdC5jcmVhdGUobnVsbCl9ZGVzdHJveSgpe31jcmVhdGVFbGVtZW50KHQsZSl7cmV0dXJuIGU/ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKGt4W2VdfHxlLHQpOmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodCl9Y3JlYXRlQ29tbWVudCh0KXtyZXR1cm4gZG9jdW1lbnQuY3JlYXRlQ29tbWVudCh0KX1jcmVhdGVUZXh0KHQpe3JldHVybiBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0KX1hcHBlbmRDaGlsZCh0LGUpe3QuYXBwZW5kQ2hpbGQoZSl9aW5zZXJ0QmVmb3JlKHQsZSxuKXt0JiZ0Lmluc2VydEJlZm9yZShlLG4pfXJlbW92ZUNoaWxkKHQsZSl7dCYmdC5yZW1vdmVDaGlsZChlKX1zZWxlY3RSb290RWxlbWVudCh0LGUpe2xldCBuPSJzdHJpbmciPT10eXBlb2YgdD9kb2N1bWVudC5xdWVyeVNlbGVjdG9yKHQpOnQ7aWYoIW4pdGhyb3cgbmV3IEVycm9yKGBUaGUgc2VsZWN0b3IgIiR7dH0iIGRpZCBub3QgbWF0Y2ggYW55IGVsZW1lbnRzYCk7cmV0dXJuIGV8fChuLnRleHRDb250ZW50PSIiKSxufXBhcmVudE5vZGUodCl7cmV0dXJuIHQucGFyZW50Tm9kZX1uZXh0U2libGluZyh0KXtyZXR1cm4gdC5uZXh0U2libGluZ31zZXRBdHRyaWJ1dGUodCxlLG4sbyl7aWYobyl7ZT1vKyI6IitlO2NvbnN0IGk9a3hbb107aT90LnNldEF0dHJpYnV0ZU5TKGksZSxuKTp0LnNldEF0dHJpYnV0ZShlLG4pfWVsc2UgdC5zZXRBdHRyaWJ1dGUoZSxuKX1yZW1vdmVBdHRyaWJ1dGUodCxlLG4pe2lmKG4pe2NvbnN0IG89a3hbbl07bz90LnJlbW92ZUF0dHJpYnV0ZU5TKG8sZSk6dC5yZW1vdmVBdHRyaWJ1dGUoYCR7bn06JHtlfWApfWVsc2UgdC5yZW1vdmVBdHRyaWJ1dGUoZSl9YWRkQ2xhc3ModCxlKXt0LmNsYXNzTGlzdC5hZGQoZSl9cmVtb3ZlQ2xhc3ModCxlKXt0LmNsYXNzTGlzdC5yZW1vdmUoZSl9c2V0U3R5bGUodCxlLG4sbyl7byYoRWwuRGFzaENhc2V8RWwuSW1wb3J0YW50KT90LnN0eWxlLnNldFByb3BlcnR5KGUsbixvJkVsLkltcG9ydGFudD8iaW1wb3J0YW50IjoiIik6dC5zdHlsZVtlXT1ufXJlbW92ZVN0eWxlKHQsZSxuKXtuJkVsLkRhc2hDYXNlP3Quc3R5bGUucmVtb3ZlUHJvcGVydHkoZSk6dC5zdHlsZVtlXT0iIn1zZXRQcm9wZXJ0eSh0LGUsbil7RHgmJkZ4KGUsInByb3BlcnR5IiksdFtlXT1ufXNldFZhbHVlKHQsZSl7dC5ub2RlVmFsdWU9ZX1saXN0ZW4odCxlLG4pe3JldHVybiBEeCYmRngoZSwibGlzdGVuZXIiKSwic3RyaW5nIj09dHlwZW9mIHQ/dGhpcy5ldmVudE1hbmFnZXIuYWRkR2xvYmFsRXZlbnRMaXN0ZW5lcih0LGUsVHgobikpOnRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIodCxlLFR4KG4pKX19Y29uc3QgSHg9IkAiLmNoYXJDb2RlQXQoMCk7ZnVuY3Rpb24gRngodCxlKXtpZih0LmNoYXJDb2RlQXQoMCk9PT1IeCl0aHJvdyBuZXcgRXJyb3IoYEZvdW5kIHRoZSBzeW50aGV0aWMgJHtlfSAke3R9LiBQbGVhc2UgaW5jbHVkZSBlaXRoZXIgIkJyb3dzZXJBbmltYXRpb25zTW9kdWxlIiBvciAiTm9vcEFuaW1hdGlvbnNNb2R1bGUiIGluIHlvdXIgYXBwbGljYXRpb24uYCl9Y2xhc3MgTHggZXh0ZW5kcyBJeHtjb25zdHJ1Y3Rvcih0LGUsbixvKXtzdXBlcih0KSx0aGlzLmNvbXBvbmVudD1uO2NvbnN0IGk9QXgobysiLSIrbi5pZCxuLnN0eWxlcyxbXSk7ZS5hZGRTdHlsZXMoaSksdGhpcy5jb250ZW50QXR0cj0oZnVuY3Rpb24gYSh0KXtyZXR1cm4gRXgucmVwbGFjZShTeCx0KX0pKG8rIi0iK24uaWQpLHRoaXMuaG9zdEF0dHI9KGZ1bmN0aW9uIHIodCl7cmV0dXJuIFJ4LnJlcGxhY2UoU3gsdCl9KShvKyItIituLmlkKX1hcHBseVRvSG9zdCh0KXtzdXBlci5zZXRBdHRyaWJ1dGUodCx0aGlzLmhvc3RBdHRyLCIiKX1jcmVhdGVFbGVtZW50KHQsZSl7Y29uc3Qgbj1zdXBlci5jcmVhdGVFbGVtZW50KHQsZSk7cmV0dXJuIHN1cGVyLnNldEF0dHJpYnV0ZShuLHRoaXMuY29udGVudEF0dHIsIiIpLG59fWNsYXNzIEJ4IGV4dGVuZHMgSXh7Y29uc3RydWN0b3IodCxlLG4sbyl7c3VwZXIodCksdGhpcy5zaGFyZWRTdHlsZXNIb3N0PWUsdGhpcy5ob3N0RWw9bix0aGlzLnNoYWRvd1Jvb3Q9bi5hdHRhY2hTaGFkb3coe21vZGU6Im9wZW4ifSksdGhpcy5zaGFyZWRTdHlsZXNIb3N0LmFkZEhvc3QodGhpcy5zaGFkb3dSb290KTtjb25zdCBpPUF4KG8uaWQsby5zdHlsZXMsW10pO2ZvcihsZXQgdD0wO3Q8aS5sZW5ndGg7dCsrKXtjb25zdCBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7ZS50ZXh0Q29udGVudD1pW3RdLHRoaXMuc2hhZG93Um9vdC5hcHBlbmRDaGlsZChlKX19bm9kZU9yU2hhZG93Um9vdCh0KXtyZXR1cm4gdD09PXRoaXMuaG9zdEVsP3RoaXMuc2hhZG93Um9vdDp0fWRlc3Ryb3koKXt0aGlzLnNoYXJlZFN0eWxlc0hvc3QucmVtb3ZlSG9zdCh0aGlzLnNoYWRvd1Jvb3QpfWFwcGVuZENoaWxkKHQsZSl7cmV0dXJuIHN1cGVyLmFwcGVuZENoaWxkKHRoaXMubm9kZU9yU2hhZG93Um9vdCh0KSxlKX1pbnNlcnRCZWZvcmUodCxlLG4pe3JldHVybiBzdXBlci5pbnNlcnRCZWZvcmUodGhpcy5ub2RlT3JTaGFkb3dSb290KHQpLGUsbil9cmVtb3ZlQ2hpbGQodCxlKXtyZXR1cm4gc3VwZXIucmVtb3ZlQ2hpbGQodGhpcy5ub2RlT3JTaGFkb3dSb290KHQpLGUpfXBhcmVudE5vZGUodCl7cmV0dXJuIHRoaXMubm9kZU9yU2hhZG93Um9vdChzdXBlci5wYXJlbnROb2RlKHRoaXMubm9kZU9yU2hhZG93Um9vdCh0KSkpfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgVnggZXh0ZW5kcyB4eHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KX1zdXBwb3J0cyh0KXtyZXR1cm4hMH1hZGRFdmVudExpc3RlbmVyKHQsZSxuKXtyZXR1cm4gdC5hZGRFdmVudExpc3RlbmVyKGUsbiwhMSksKCk9PnRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LGUsbil9cmVtb3ZlRXZlbnRMaXN0ZW5lcih0LGUsbil7cmV0dXJuIHQucmVtb3ZlRXZlbnRMaXN0ZW5lcihlLG4pfX1WeC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8VngpKFRyKHNNKSl9LFZ4Lsm1cHJvdj1Tbih7dG9rZW46VngsZmFjdG9yeTpWeC7JtWZhY30pLFZ4LmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3NNXX1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihWeCxbe3R5cGU6VW19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3NNXX1dfV19KSxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IGp4PXtwYW46ITAscGFuc3RhcnQ6ITAscGFubW92ZTohMCxwYW5lbmQ6ITAscGFuY2FuY2VsOiEwLHBhbmxlZnQ6ITAscGFucmlnaHQ6ITAscGFudXA6ITAscGFuZG93bjohMCxwaW5jaDohMCxwaW5jaHN0YXJ0OiEwLHBpbmNobW92ZTohMCxwaW5jaGVuZDohMCxwaW5jaGNhbmNlbDohMCxwaW5jaGluOiEwLHBpbmNob3V0OiEwLHByZXNzOiEwLHByZXNzdXA6ITAscm90YXRlOiEwLHJvdGF0ZXN0YXJ0OiEwLHJvdGF0ZW1vdmU6ITAscm90YXRlZW5kOiEwLHJvdGF0ZWNhbmNlbDohMCxzd2lwZTohMCxzd2lwZWxlZnQ6ITAsc3dpcGVyaWdodDohMCxzd2lwZXVwOiEwLHN3aXBlZG93bjohMCx0YXA6ITAsZG91YmxldGFwOiEwfSxVeD1uZXcgZXIoIkhhbW1lckdlc3R1cmVDb25maWciKSxXeD1uZXcgZXIoIkhhbW1lckxvYWRlciIpO2NsYXNzIEd4e2NvbnN0cnVjdG9yKCl7dGhpcy5ldmVudHM9W10sdGhpcy5vdmVycmlkZXM9e319YnVpbGRIYW1tZXIodCl7Y29uc3QgZT1uZXcgSGFtbWVyKHQsdGhpcy5vcHRpb25zKTtlLmdldCgicGluY2giKS5zZXQoe2VuYWJsZTohMH0pLGUuZ2V0KCJyb3RhdGUiKS5zZXQoe2VuYWJsZTohMH0pO2Zvcihjb25zdCB0IGluIHRoaXMub3ZlcnJpZGVzKWUuZ2V0KHQpLnNldCh0aGlzLm92ZXJyaWRlc1t0XSk7cmV0dXJuIGV9fUd4Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxHeCl9LEd4Lsm1cHJvdj1Tbih7dG9rZW46R3gsZmFjdG9yeTpHeC7JtWZhY30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoR3gsW3t0eXBlOlVtfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW119KSxudWxsKTtjbGFzcyBZeCBleHRlbmRzIHh4e2NvbnN0cnVjdG9yKHQsZSxuLG8pe3N1cGVyKHQpLHRoaXMuX2NvbmZpZz1lLHRoaXMuY29uc29sZT1uLHRoaXMubG9hZGVyPW8sdGhpcy5fbG9hZGVyUHJvbWlzZT1udWxsfXN1cHBvcnRzKHQpe3JldHVybiEoIWp4Lmhhc093blByb3BlcnR5KHQudG9Mb3dlckNhc2UoKSkmJiF0aGlzLmlzQ3VzdG9tRXZlbnQodCkpJiYoISghd2luZG93LkhhbW1lciYmIXRoaXMubG9hZGVyKXx8KCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmdGhpcy5jb25zb2xlLndhcm4oYFRoZSAiJHt0fSIgZXZlbnQgY2Fubm90IGJlIGJvdW5kIGJlY2F1c2UgSGFtbWVyLkpTIGlzIG5vdCBsb2FkZWQgYW5kIG5vIGN1c3RvbSBsb2FkZXIgaGFzIGJlZW4gc3BlY2lmaWVkLmApLCExKSl9YWRkRXZlbnRMaXN0ZW5lcih0LGUsbil7Y29uc3Qgbz10aGlzLm1hbmFnZXIuZ2V0Wm9uZSgpO2lmKGU9ZS50b0xvd2VyQ2FzZSgpLCF3aW5kb3cuSGFtbWVyJiZ0aGlzLmxvYWRlcil7dGhpcy5fbG9hZGVyUHJvbWlzZT10aGlzLl9sb2FkZXJQcm9taXNlfHx0aGlzLmxvYWRlcigpO2xldCBvPSExLGk9KCk9PntvPSEwfTtyZXR1cm4gdGhpcy5fbG9hZGVyUHJvbWlzZS50aGVuKCgoKT0+e2lmKCF3aW5kb3cuSGFtbWVyKXJldHVybigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmdGhpcy5jb25zb2xlLndhcm4oIlRoZSBjdXN0b20gSEFNTUVSX0xPQURFUiBjb21wbGV0ZWQsIGJ1dCBIYW1tZXIuSlMgaXMgbm90IHByZXNlbnQuIiksdm9pZChpPSgpPT57fSk7b3x8KGk9dGhpcy5hZGRFdmVudExpc3RlbmVyKHQsZSxuKSl9KSkuY2F0Y2goKCgpPT57KCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZ0aGlzLmNvbnNvbGUud2FybihgVGhlICIke2V9IiBldmVudCBjYW5ub3QgYmUgYm91bmQgYmVjYXVzZSB0aGUgY3VzdG9tIEhhbW1lci5KUyBsb2FkZXIgZmFpbGVkLmApLGk9KCk9Pnt9fSkpLCgpPT57aSgpfX1yZXR1cm4gby5ydW5PdXRzaWRlQW5ndWxhcigoKCk9Pntjb25zdCBpPXRoaXMuX2NvbmZpZy5idWlsZEhhbW1lcih0KSxhPWZ1bmN0aW9uKHQpe28ucnVuR3VhcmRlZCgoZnVuY3Rpb24oKXtuKHQpfSkpfTtyZXR1cm4gaS5vbihlLGEpLCgpPT57aS5vZmYoZSxhKSwiZnVuY3Rpb24iPT10eXBlb2YgaS5kZXN0cm95JiZpLmRlc3Ryb3koKX19KSl9aXNDdXN0b21FdmVudCh0KXtyZXR1cm4gdGhpcy5fY29uZmlnLmV2ZW50cy5pbmRleE9mKHQpPi0xfX1ZeC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8WXgpKFRyKHNNKSxUcihVeCksVHIoSl8pLFRyKFd4LDgpKX0sWXguybVwcm92PVNuKHt0b2tlbjpZeCxmYWN0b3J5Oll4Lsm1ZmFjfSksWXguY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19LHt0eXBlOkd4LGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W1V4XX1dfSx7dHlwZTpKX30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltXeF19XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoWXgsW3t0eXBlOlVtfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX0se3R5cGU6R3gsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbVXhdfV19LHt0eXBlOkpffSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W1d4XX1dfV19KSxudWxsKTtjb25zdCBxeD1be3Byb3ZpZGU6TXgsdXNlQ2xhc3M6WXgsbXVsdGk6ITAsZGVwczpbc00sVXgsSl8sW25ldyBCcixXeF1dfSx7cHJvdmlkZTpVeCx1c2VDbGFzczpHeCxkZXBzOltdfV0sWng9W107Y2xhc3MgWHh7fVh4Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxYeCl9LFh4Lsm1bW9kPWZvKHt0eXBlOlh4fSksWHguybVpbmo9RG4oe3Byb3ZpZGVyczpxeH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoWHgsW3t0eXBlOkxfLGFyZ3M6W3twcm92aWRlcnM6cXh9XX1dLG51bGwsbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCBLeD1bImFsdCIsImNvbnRyb2wiLCJtZXRhIiwic2hpZnQiXSxKeD17IlxiIjoiQmFja3NwYWNlIiwiXHQiOiJUYWIiLCJ/IjoiRGVsZXRlIiwiGyI6IkVzY2FwZSIsRGVsOiJEZWxldGUiLEVzYzoiRXNjYXBlIixMZWZ0OiJBcnJvd0xlZnQiLFJpZ2h0OiJBcnJvd1JpZ2h0IixVcDoiQXJyb3dVcCIsRG93bjoiQXJyb3dEb3duIixNZW51OiJDb250ZXh0TWVudSIsU2Nyb2xsOiJTY3JvbGxMb2NrIixXaW46Ik9TIn0sUXg9e0E6IjEiLEI6IjIiLEM6IjMiLEQ6IjQiLEU6IjUiLEY6IjYiLEc6IjciLEg6IjgiLEk6IjkiLEo6IioiLEs6IisiLE06Ii0iLE46Ii4iLE86Ii8iLCJgIjoiMCIsIsKQIjoiTnVtTG9jayJ9LCR4PXthbHQ6dD0+dC5hbHRLZXksY29udHJvbDp0PT50LmN0cmxLZXksbWV0YTp0PT50Lm1ldGFLZXksc2hpZnQ6dD0+dC5zaGlmdEtleX07Y2xhc3MgdE8gZXh0ZW5kcyB4eHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KX1zdXBwb3J0cyh0KXtyZXR1cm4gbnVsbCE9dE8ucGFyc2VFdmVudE5hbWUodCl9YWRkRXZlbnRMaXN0ZW5lcih0LGUsbil7Y29uc3Qgbz10Ty5wYXJzZUV2ZW50TmFtZShlKSxpPXRPLmV2ZW50Q2FsbGJhY2soby5mdWxsS2V5LG4sdGhpcy5tYW5hZ2VyLmdldFpvbmUoKSk7cmV0dXJuIHRoaXMubWFuYWdlci5nZXRab25lKCkucnVuT3V0c2lkZUFuZ3VsYXIoKCgpPT5yTSgpLm9uQW5kQ2FuY2VsKHQsby5kb21FdmVudE5hbWUsaSkpKX1zdGF0aWMgcGFyc2VFdmVudE5hbWUodCl7Y29uc3QgZT10LnRvTG93ZXJDYXNlKCkuc3BsaXQoIi4iKSxuPWUuc2hpZnQoKTtpZigwPT09ZS5sZW5ndGh8fCJrZXlkb3duIiE9PW4mJiJrZXl1cCIhPT1uKXJldHVybiBudWxsO2NvbnN0IG89dE8uX25vcm1hbGl6ZUtleShlLnBvcCgpKTtsZXQgaT0iIjtpZihLeC5mb3JFYWNoKCh0PT57Y29uc3Qgbj1lLmluZGV4T2YodCk7bj4tMSYmKGUuc3BsaWNlKG4sMSksaSs9dCsiLiIpfSkpLGkrPW8sMCE9ZS5sZW5ndGh8fDA9PT1vLmxlbmd0aClyZXR1cm4gbnVsbDtjb25zdCBhPXt9O3JldHVybiBhLmRvbUV2ZW50TmFtZT1uLGEuZnVsbEtleT1pLGF9c3RhdGljIGdldEV2ZW50RnVsbEtleSh0KXtsZXQgZT0iIixuPShmdW5jdGlvbiBvKHQpe2xldCBlPXQua2V5O2lmKG51bGw9PWUpe2lmKGU9dC5rZXlJZGVudGlmaWVyLG51bGw9PWUpcmV0dXJuIlVuaWRlbnRpZmllZCI7ZS5zdGFydHNXaXRoKCJVKyIpJiYoZT1TdHJpbmcuZnJvbUNoYXJDb2RlKHBhcnNlSW50KGUuc3Vic3RyaW5nKDIpLDE2KSksMz09PXQubG9jYXRpb24mJlF4Lmhhc093blByb3BlcnR5KGUpJiYoZT1ReFtlXSkpfXJldHVybiBKeFtlXXx8ZX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovKSh0KTtyZXR1cm4gbj1uLnRvTG93ZXJDYXNlKCksIiAiPT09bj9uPSJzcGFjZSI6Ii4iPT09biYmKG49ImRvdCIpLEt4LmZvckVhY2goKG89PntpZihvIT1uKXsoMCwkeFtvXSkodCkmJihlKz1vKyIuIil9fSkpLGUrPW4sZX1zdGF0aWMgZXZlbnRDYWxsYmFjayh0LGUsbil7cmV0dXJuIG89Pnt0Ty5nZXRFdmVudEZ1bGxLZXkobyk9PT10JiZuLnJ1bkd1YXJkZWQoKCgpPT5lKG8pKSl9fXN0YXRpYyBfbm9ybWFsaXplS2V5KHQpe3N3aXRjaCh0KXtjYXNlImVzYyI6cmV0dXJuImVzY2FwZSI7ZGVmYXVsdDpyZXR1cm4gdH19fXRPLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx0TykoVHIoc00pKX0sdE8uybVwcm92PVNuKHt0b2tlbjp0TyxmYWN0b3J5OnRPLsm1ZmFjfSksdE8uY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHRPLFt7dHlwZTpVbX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19XX0pLG51bGwpO2NsYXNzIGVPe31mdW5jdGlvbiBuTyh0KXtyZXR1cm4gbmV3IG9PKHQuZ2V0KHNNKSl9ZU8uybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGVPKX0sZU8uybVwcm92PVNuKHtmYWN0b3J5OmZ1bmN0aW9uIHQoKXtyZXR1cm4gVHIob08pfSx0b2tlbjplTyxwcm92aWRlZEluOiJyb290In0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoZU8sW3t0eXBlOlVtLGFyZ3M6W3twcm92aWRlZEluOiJyb290Iix1c2VFeGlzdGluZzokZSgoKCk9Pm9PKSl9XX1dLG51bGwsbnVsbCk7Y2xhc3Mgb08gZXh0ZW5kcyBlT3tjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMuX2RvYz10fXNhbml0aXplKHQsZSl7aWYobnVsbD09ZSlyZXR1cm4gbnVsbDtzd2l0Y2godCl7Y2FzZSBZcy5OT05FOnJldHVybiBlO2Nhc2UgWXMuSFRNTDpyZXR1cm4gZ3MoZSwiSFRNTCIpP3VzKGUpOldzKHRoaXMuX2RvYyxTdHJpbmcoZSkpLnRvU3RyaW5nKCk7Y2FzZSBZcy5TVFlMRTpyZXR1cm4gZ3MoZSwiU3R5bGUiKT91cyhlKTplO2Nhc2UgWXMuU0NSSVBUOmlmKGdzKGUsIlNjcmlwdCIpKXJldHVybiB1cyhlKTt0aHJvdyBuZXcgRXJyb3IoInVuc2FmZSB2YWx1ZSB1c2VkIGluIGEgc2NyaXB0IGNvbnRleHQiKTtjYXNlIFlzLlVSTDpyZXR1cm4gaHMoZSksZ3MoZSwiVVJMIik/dXMoZSk6dnMoU3RyaW5nKGUpKTtjYXNlIFlzLlJFU09VUkNFX1VSTDppZihncyhlLCJSZXNvdXJjZVVSTCIpKXJldHVybiB1cyhlKTt0aHJvdyBuZXcgRXJyb3IoInVuc2FmZSB2YWx1ZSB1c2VkIGluIGEgcmVzb3VyY2UgVVJMIGNvbnRleHQgKHNlZSBodHRwczovL2cuY28vbmcvc2VjdXJpdHkjeHNzKSIpO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIFNlY3VyaXR5Q29udGV4dCAke3R9IChzZWUgaHR0cHM6Ly9nLmNvL25nL3NlY3VyaXR5I3hzcylgKX19YnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwodCl7cmV0dXJuKGZ1bmN0aW9uIGUodCl7cmV0dXJuIG5ldyBjcyh0KX0pKHQpfWJ5cGFzc1NlY3VyaXR5VHJ1c3RTdHlsZSh0KXtyZXR1cm4oZnVuY3Rpb24gZSh0KXtyZXR1cm4gbmV3IGRzKHQpfSkodCl9YnlwYXNzU2VjdXJpdHlUcnVzdFNjcmlwdCh0KXtyZXR1cm4oZnVuY3Rpb24gZSh0KXtyZXR1cm4gbmV3IHBzKHQpfSkodCl9YnlwYXNzU2VjdXJpdHlUcnVzdFVybCh0KXtyZXR1cm4oZnVuY3Rpb24gZSh0KXtyZXR1cm4gbmV3IG1zKHQpfSkodCl9YnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKHQpe3JldHVybihmdW5jdGlvbiBlKHQpe3JldHVybiBuZXcgZnModCl9KSh0KX19b08uybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fG9PKShUcihzTSkpfSxvTy7JtXByb3Y9U24oe2ZhY3Rvcnk6ZnVuY3Rpb24gdCgpe3JldHVybiBuTyhUcih5cCkpfSx0b2tlbjpvTyxwcm92aWRlZEluOiJyb290In0pLG9PLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3NNXX1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihvTyxbe3R5cGU6VW0sYXJnczpbe3Byb3ZpZGVkSW46InJvb3QiLHVzZUZhY3Rvcnk6bk8sZGVwczpbTnBdfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3NNXX1dfV19KSxudWxsKTtjb25zdCBpTz1bXSxhTz1UQyhXQywiYnJvd3NlciIsW3twcm92aWRlOlhfLHVzZVZhbHVlOiJicm93c2VyIn0se3Byb3ZpZGU6Wl8sdXNlVmFsdWU6Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpmdW5jdGlvbiByTygpe214Lm1ha2VDdXJyZW50KCkseXguaW5pdCgpfSxtdWx0aTohMH0se3Byb3ZpZGU6c00sdXNlRmFjdG9yeTpmdW5jdGlvbiBzTygpe3JldHVybihmdW5jdGlvbiB0KGUpe29pPWV9KShkb2N1bWVudCksZG9jdW1lbnR9LGRlcHM6W119XSksbE89W2lPLHtwcm92aWRlOkNwLHVzZVZhbHVlOiJyb290In0se3Byb3ZpZGU6dWwsdXNlRmFjdG9yeTpmdW5jdGlvbiBjTygpe3JldHVybiBuZXcgdWx9LGRlcHM6W119LHtwcm92aWRlOk14LHVzZUNsYXNzOlZ4LG11bHRpOiEwLGRlcHM6W3NNLG1DLFhfXX0se3Byb3ZpZGU6TXgsdXNlQ2xhc3M6dE8sbXVsdGk6ITAsZGVwczpbc01dfSxaeCx7cHJvdmlkZTp6eCx1c2VDbGFzczp6eCxkZXBzOlt2eCxQeCxXX119LHtwcm92aWRlOlFoLHVzZUV4aXN0aW5nOnp4fSx7cHJvdmlkZTpPeCx1c2VFeGlzdGluZzpQeH0se3Byb3ZpZGU6UHgsdXNlQ2xhc3M6UHgsZGVwczpbc01dfSx7cHJvdmlkZTpfQyx1c2VDbGFzczpfQyxkZXBzOlttQ119LHtwcm92aWRlOnZ4LHVzZUNsYXNzOnZ4LGRlcHM6W014LG1DXX0se3Byb3ZpZGU6cHgsdXNlQ2xhc3M6X3gsZGVwczpbXX0sQ3hdO2NsYXNzIGRPe2NvbnN0cnVjdG9yKHQpe2lmKHQpdGhyb3cgbmV3IEVycm9yKCJCcm93c2VyTW9kdWxlIGhhcyBhbHJlYWR5IGJlZW4gbG9hZGVkLiBJZiB5b3UgbmVlZCBhY2Nlc3MgdG8gY29tbW9uIGRpcmVjdGl2ZXMgc3VjaCBhcyBOZ0lmIGFuZCBOZ0ZvciBmcm9tIGEgbGF6eSBsb2FkZWQgbW9kdWxlLCBpbXBvcnQgQ29tbW9uTW9kdWxlIGluc3RlYWQuIil9c3RhdGljIHdpdGhTZXJ2ZXJUcmFuc2l0aW9uKHQpe3JldHVybntuZ01vZHVsZTpkTyxwcm92aWRlcnM6W3twcm92aWRlOldfLHVzZVZhbHVlOnQuYXBwSWR9LHtwcm92aWRlOmd4LHVzZUV4aXN0aW5nOldffSxoeF19fX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmZ1bmN0aW9uIHBPKCl7cmV0dXJuIG5ldyBtTyhUcihzTSkpfWRPLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxkTykoVHIoZE8sMTIpKX0sZE8uybVtb2Q9Zm8oe3R5cGU6ZE99KSxkTy7JtWluaj1Ebih7cHJvdmlkZXJzOmxPLGltcG9ydHM6W3J4LEtDXX0pLGRPLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6ZE8sZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOmpyfSx7dHlwZTpMcixhcmdzOltkT119XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoZE8sW3t0eXBlOkxfLGFyZ3M6W3twcm92aWRlcnM6bE8sZXhwb3J0czpbcngsS0NdfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6ZE8sZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOmpyfSx7dHlwZTpMcixhcmdzOltkT119XX1dfSksbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhkTyx7ZXhwb3J0czpmdW5jdGlvbigpe3JldHVybltyeCxLQ119fSk7Y2xhc3MgbU97Y29uc3RydWN0b3IodCl7dGhpcy5fZG9jPXQsdGhpcy5fZG9tPXJNKCl9YWRkVGFnKHQsZT0hMSl7cmV0dXJuIHQ/dGhpcy5fZ2V0T3JDcmVhdGVFbGVtZW50KHQsZSk6bnVsbH1hZGRUYWdzKHQsZT0hMSl7cmV0dXJuIHQ/dC5yZWR1Y2UoKCh0LG4pPT4obiYmdC5wdXNoKHRoaXMuX2dldE9yQ3JlYXRlRWxlbWVudChuLGUpKSx0KSksW10pOltdfWdldFRhZyh0KXtyZXR1cm4gdCYmdGhpcy5fZG9jLnF1ZXJ5U2VsZWN0b3IoYG1ldGFbJHt0fV1gKXx8bnVsbH1nZXRUYWdzKHQpe2lmKCF0KXJldHVybltdO2NvbnN0IGU9dGhpcy5fZG9jLnF1ZXJ5U2VsZWN0b3JBbGwoYG1ldGFbJHt0fV1gKTtyZXR1cm4gZT9bXS5zbGljZS5jYWxsKGUpOltdfXVwZGF0ZVRhZyh0LGUpe2lmKCF0KXJldHVybiBudWxsO2U9ZXx8dGhpcy5fcGFyc2VTZWxlY3Rvcih0KTtjb25zdCBuPXRoaXMuZ2V0VGFnKGUpO3JldHVybiBuP3RoaXMuX3NldE1ldGFFbGVtZW50QXR0cmlidXRlcyh0LG4pOnRoaXMuX2dldE9yQ3JlYXRlRWxlbWVudCh0LCEwKX1yZW1vdmVUYWcodCl7dGhpcy5yZW1vdmVUYWdFbGVtZW50KHRoaXMuZ2V0VGFnKHQpKX1yZW1vdmVUYWdFbGVtZW50KHQpe3QmJnRoaXMuX2RvbS5yZW1vdmUodCl9X2dldE9yQ3JlYXRlRWxlbWVudCh0LGU9ITEpe2lmKCFlKXtjb25zdCBlPXRoaXMuX3BhcnNlU2VsZWN0b3IodCksbj10aGlzLmdldFRhZ3MoZSkuZmlsdGVyKChlPT50aGlzLl9jb250YWluc0F0dHJpYnV0ZXModCxlKSkpWzBdO2lmKHZvaWQgMCE9PW4pcmV0dXJuIG59Y29uc3Qgbj10aGlzLl9kb20uY3JlYXRlRWxlbWVudCgibWV0YSIpO3RoaXMuX3NldE1ldGFFbGVtZW50QXR0cmlidXRlcyh0LG4pO3JldHVybiB0aGlzLl9kb2MuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXS5hcHBlbmRDaGlsZChuKSxufV9zZXRNZXRhRWxlbWVudEF0dHJpYnV0ZXModCxlKXtyZXR1cm4gT2JqZWN0LmtleXModCkuZm9yRWFjaCgobj0+ZS5zZXRBdHRyaWJ1dGUodGhpcy5fZ2V0TWV0YUtleU1hcChuKSx0W25dKSkpLGV9X3BhcnNlU2VsZWN0b3IodCl7Y29uc3QgZT10Lm5hbWU/Im5hbWUiOiJwcm9wZXJ0eSI7cmV0dXJuYCR7ZX09IiR7dFtlXX0iYH1fY29udGFpbnNBdHRyaWJ1dGVzKHQsZSl7cmV0dXJuIE9iamVjdC5rZXlzKHQpLmV2ZXJ5KChuPT5lLmdldEF0dHJpYnV0ZSh0aGlzLl9nZXRNZXRhS2V5TWFwKG4pKT09PXRbbl0pKX1fZ2V0TWV0YUtleU1hcCh0KXtyZXR1cm4gZk9bdF18fHR9fW1PLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxtTykoVHIoc00pKX0sbU8uybVwcm92PVNuKHtmYWN0b3J5OnBPLHRva2VuOm1PLHByb3ZpZGVkSW46InJvb3QifSksbU8uY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKG1PLFt7dHlwZTpVbSxhcmdzOlt7cHJvdmlkZWRJbjoicm9vdCIsdXNlRmFjdG9yeTpwTyxkZXBzOltdfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3NNXX1dfV19KSxudWxsKTtjb25zdCBmTz17aHR0cEVxdWl2OiJodHRwLWVxdWl2In07Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIHVPKCl7cmV0dXJuIG5ldyBnTyhUcihzTSkpfWNsYXNzIGdPe2NvbnN0cnVjdG9yKHQpe3RoaXMuX2RvYz10fWdldFRpdGxlKCl7cmV0dXJuIHRoaXMuX2RvYy50aXRsZX1zZXRUaXRsZSh0KXt0aGlzLl9kb2MudGl0bGU9dHx8IiJ9fWdPLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxnTykoVHIoc00pKX0sZ08uybVwcm92PVNuKHtmYWN0b3J5OnVPLHRva2VuOmdPLHByb3ZpZGVkSW46InJvb3QifSksZ08uY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGdPLFt7dHlwZTpVbSxhcmdzOlt7cHJvdmlkZWRJbjoicm9vdCIsdXNlRmFjdG9yeTp1TyxkZXBzOltdfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3NNXX1dfV19KSxudWxsKTtjbGFzcyBoT3tjb25zdHJ1Y3Rvcigpe3RoaXMuc3RvcmU9e30sdGhpcy5vblNlcmlhbGl6ZUNhbGxiYWNrcz17fX1zdGF0aWMgaW5pdCh0KXtjb25zdCBlPW5ldyBoTztyZXR1cm4gZS5zdG9yZT10LGV9Z2V0KHQsZSl7cmV0dXJuIHZvaWQgMCE9PXRoaXMuc3RvcmVbdF0/dGhpcy5zdG9yZVt0XTplfXNldCh0LGUpe3RoaXMuc3RvcmVbdF09ZX1yZW1vdmUodCl7ZGVsZXRlIHRoaXMuc3RvcmVbdF19aGFzS2V5KHQpe3JldHVybiB0aGlzLnN0b3JlLmhhc093blByb3BlcnR5KHQpfW9uU2VyaWFsaXplKHQsZSl7dGhpcy5vblNlcmlhbGl6ZUNhbGxiYWNrc1t0XT1lfXRvSnNvbigpe2Zvcihjb25zdCB0IGluIHRoaXMub25TZXJpYWxpemVDYWxsYmFja3MpaWYodGhpcy5vblNlcmlhbGl6ZUNhbGxiYWNrcy5oYXNPd25Qcm9wZXJ0eSh0KSl0cnl7dGhpcy5zdG9yZVt0XT10aGlzLm9uU2VyaWFsaXplQ2FsbGJhY2tzW3RdKCl9Y2F0Y2godCl7Y29uc29sZS53YXJuKCJFeGNlcHRpb24gaW4gb25TZXJpYWxpemUgY2FsbGJhY2s6ICIsdCl9cmV0dXJuIEpTT04uc3RyaW5naWZ5KHRoaXMuc3RvcmUpfX1mdW5jdGlvbiBiTyh0LGUpe2NvbnN0IG49dC5nZXRFbGVtZW50QnlJZChlKyItc3RhdGUiKTtsZXQgbz17fTtpZihuJiZuLnRleHRDb250ZW50KXRyeXtvPUpTT04ucGFyc2UoKGZ1bmN0aW9uIGkodCl7Y29uc3QgZT17IiZhOyI6IiYiLCImcTsiOiciJywiJnM7IjoiJyIsIiZsOyI6IjwiLCImZzsiOiI+In07cmV0dXJuIHQucmVwbGFjZSgvJlteO10rOy9nLCh0PT5lW3RdKSl9KShuLnRleHRDb250ZW50KSl9Y2F0Y2godCl7Y29uc29sZS53YXJuKCJFeGNlcHRpb24gd2hpbGUgcmVzdG9yaW5nIFRyYW5zZmVyU3RhdGUgZm9yIGFwcCAiK2UsdCl9cmV0dXJuIGhPLmluaXQobyl9aE8uybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGhPKX0saE8uybVwcm92PVNuKHt0b2tlbjpoTyxmYWN0b3J5OmhPLsm1ZmFjfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihoTyxbe3R5cGU6VW19XSwoZnVuY3Rpb24oKXtyZXR1cm5bXX0pLG51bGwpO2NsYXNzIHlPe315Ty7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8eU8pfSx5Ty7JtW1vZD1mbyh7dHlwZTp5T30pLHlPLsm1aW5qPURuKHtwcm92aWRlcnM6W3twcm92aWRlOmhPLHVzZUZhY3Rvcnk6Yk8sZGVwczpbc00sV19dfV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHlPLFt7dHlwZTpMXyxhcmdzOlt7cHJvdmlkZXJzOlt7cHJvdmlkZTpoTyx1c2VGYWN0b3J5OmJPLGRlcHM6W3NNLFdfXX1dfV19XSxudWxsLG51bGwpLAovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCm5ldyBvYigiMTIuMi4xIik7dmFyIF9PPSJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsVGhpcz9nbG9iYWxUaGlzOiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzoidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6e307ZnVuY3Rpb24gQ08odCl7aWYodC5fX2VzTW9kdWxlKXJldHVybiB0O3ZhciBlPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7cmV0dXJuIE9iamVjdC5rZXlzKHQpLmZvckVhY2goKGZ1bmN0aW9uKG4pe3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLG8uZ2V0P286e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSl9KSksZX0KLyoqCiAgICAgKiBAbGljZW5zZSBBbmd1bGFyIHYxMi4wLjAtbmV4dC4wCiAgICAgKiAoYykgMjAxMC0yMDIwIEdvb2dsZSBMTEMuIGh0dHBzOi8vYW5ndWxhci5pby8KICAgICAqIExpY2Vuc2U6IE1JVAogICAgICovIShmdW5jdGlvbigpewovKioKICAgICAgICAgKiBAbGljZW5zZQogICAgICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgICAgICoKICAgICAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAgICAgKi8KIShmdW5jdGlvbih0KXt2YXIgZT10LnBlcmZvcm1hbmNlO2Z1bmN0aW9uIG4odCl7ZSYmZS5tYXJrJiZlLm1hcmsodCl9ZnVuY3Rpb24gbyh0LG4pe2UmJmUubWVhc3VyZSYmZS5tZWFzdXJlKHQsbil9bigiWm9uZSIpO3ZhciBpPXQuX19ab25lX3N5bWJvbF9wcmVmaXh8fCJfX3pvbmVfc3ltYm9sX18iO2Z1bmN0aW9uIGEodCl7cmV0dXJuIGkrdH12YXIgcj0hMD09PXRbYSgiZm9yY2VEdXBsaWNhdGVab25lQ2hlY2siKV07aWYodC5ab25lKXtpZihyfHwiZnVuY3Rpb24iIT10eXBlb2YgdC5ab25lLl9fc3ltYm9sX18pdGhyb3cgbmV3IEVycm9yKCJab25lIGFscmVhZHkgbG9hZGVkLiIpO3JldHVybiB0LlpvbmV9dmFyIHM9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0LGUpe3RoaXMuX3BhcmVudD10LHRoaXMuX25hbWU9ZT9lLm5hbWV8fCJ1bm5hbWVkIjoiPHJvb3Q+Iix0aGlzLl9wcm9wZXJ0aWVzPWUmJmUucHJvcGVydGllc3x8e30sdGhpcy5fem9uZURlbGVnYXRlPW5ldyBkKHRoaXMsdGhpcy5fcGFyZW50JiZ0aGlzLl9wYXJlbnQuX3pvbmVEZWxlZ2F0ZSxlKX1yZXR1cm4gZS5hc3NlcnRab25lUGF0Y2hlZD1mdW5jdGlvbigpe2lmKHQuUHJvbWlzZSE9PUQuWm9uZUF3YXJlUHJvbWlzZSl0aHJvdyBuZXcgRXJyb3IoIlpvbmUuanMgaGFzIGRldGVjdGVkIHRoYXQgWm9uZUF3YXJlUHJvbWlzZSBgKHdpbmRvd3xnbG9iYWwpLlByb21pc2VgIGhhcyBiZWVuIG92ZXJ3cml0dGVuLlxuTW9zdCBsaWtlbHkgY2F1c2UgaXMgdGhhdCBhIFByb21pc2UgcG9seWZpbGwgaGFzIGJlZW4gbG9hZGVkIGFmdGVyIFpvbmUuanMgKFBvbHlmaWxsaW5nIFByb21pc2UgYXBpIGlzIG5vdCBuZWNlc3Nhcnkgd2hlbiB6b25lLmpzIGlzIGxvYWRlZC4gSWYgeW91IG11c3QgbG9hZCBvbmUsIGRvIHNvIGJlZm9yZSBsb2FkaW5nIHpvbmUuanMuKSIpfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwicm9vdCIse2dldDpmdW5jdGlvbigpe2Zvcih2YXIgdD1lLmN1cnJlbnQ7dC5wYXJlbnQ7KXQ9dC5wYXJlbnQ7cmV0dXJuIHR9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsImN1cnJlbnQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gRS56b25lfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJjdXJyZW50VGFzayIse2dldDpmdW5jdGlvbigpe3JldHVybiBBfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGUuX19sb2FkX3BhdGNoPWZ1bmN0aW9uKGksYSxzKXtpZih2b2lkIDA9PT1zJiYocz0hMSksRC5oYXNPd25Qcm9wZXJ0eShpKSl7aWYoIXMmJnIpdGhyb3cgRXJyb3IoIkFscmVhZHkgbG9hZGVkIHBhdGNoOiAiK2kpfWVsc2UgaWYoIXRbIl9fWm9uZV9kaXNhYmxlXyIraV0pe3ZhciBsPSJab25lOiIraTtuKGwpLERbaV09YSh0LGUsUiksbyhsLGwpfX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJwYXJlbnQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcGFyZW50fSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwibmFtZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9uYW1lfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmdldFpvbmVXaXRoKHQpO2lmKGUpcmV0dXJuIGUuX3Byb3BlcnRpZXNbdF19LGUucHJvdG90eXBlLmdldFpvbmVXaXRoPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzO2U7KXtpZihlLl9wcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KHQpKXJldHVybiBlO2U9ZS5fcGFyZW50fXJldHVybiBudWxsfSxlLnByb3RvdHlwZS5mb3JrPWZ1bmN0aW9uKHQpe2lmKCF0KXRocm93IG5ldyBFcnJvcigiWm9uZVNwZWMgcmVxdWlyZWQhIik7cmV0dXJuIHRoaXMuX3pvbmVEZWxlZ2F0ZS5mb3JrKHRoaXMsdCl9LGUucHJvdG90eXBlLndyYXA9ZnVuY3Rpb24odCxlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGluZyBmdW5jdGlvbiBnb3Q6ICIrdCk7dmFyIG49dGhpcy5fem9uZURlbGVnYXRlLmludGVyY2VwdCh0aGlzLHQsZSksbz10aGlzO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBvLnJ1bkd1YXJkZWQobix0aGlzLGFyZ3VtZW50cyxlKX19LGUucHJvdG90eXBlLnJ1bj1mdW5jdGlvbih0LGUsbixvKXtFPXtwYXJlbnQ6RSx6b25lOnRoaXN9O3RyeXtyZXR1cm4gdGhpcy5fem9uZURlbGVnYXRlLmludm9rZSh0aGlzLHQsZSxuLG8pfWZpbmFsbHl7RT1FLnBhcmVudH19LGUucHJvdG90eXBlLnJ1bkd1YXJkZWQ9ZnVuY3Rpb24odCxlLG4sbyl7dm9pZCAwPT09ZSYmKGU9bnVsbCksRT17cGFyZW50OkUsem9uZTp0aGlzfTt0cnl7dHJ5e3JldHVybiB0aGlzLl96b25lRGVsZWdhdGUuaW52b2tlKHRoaXMsdCxlLG4sbyl9Y2F0Y2godCl7aWYodGhpcy5fem9uZURlbGVnYXRlLmhhbmRsZUVycm9yKHRoaXMsdCkpdGhyb3cgdH19ZmluYWxseXtFPUUucGFyZW50fX0sZS5wcm90b3R5cGUucnVuVGFzaz1mdW5jdGlvbih0LGUsbil7aWYodC56b25lIT10aGlzKXRocm93IG5ldyBFcnJvcigiQSB0YXNrIGNhbiBvbmx5IGJlIHJ1biBpbiB0aGUgem9uZSBvZiBjcmVhdGlvbiEgKENyZWF0aW9uOiAiKyh0LnpvbmV8fF8pLm5hbWUrIjsgRXhlY3V0aW9uOiAiK3RoaXMubmFtZSsiKSIpO2lmKHQuc3RhdGUhPT1DfHx0LnR5cGUhPT1TJiZ0LnR5cGUhPT1rKXt2YXIgbz10LnN0YXRlIT14O28mJnQuX3RyYW5zaXRpb25Ubyh4LHYpLHQucnVuQ291bnQrKzt2YXIgaT1BO0E9dCxFPXtwYXJlbnQ6RSx6b25lOnRoaXN9O3RyeXt0LnR5cGU9PWsmJnQuZGF0YSYmIXQuZGF0YS5pc1BlcmlvZGljJiYodC5jYW5jZWxGbj12b2lkIDApO3RyeXtyZXR1cm4gdGhpcy5fem9uZURlbGVnYXRlLmludm9rZVRhc2sodGhpcyx0LGUsbil9Y2F0Y2godCl7aWYodGhpcy5fem9uZURlbGVnYXRlLmhhbmRsZUVycm9yKHRoaXMsdCkpdGhyb3cgdH19ZmluYWxseXt0LnN0YXRlIT09QyYmdC5zdGF0ZSE9PVAmJih0LnR5cGU9PVN8fHQuZGF0YSYmdC5kYXRhLmlzUGVyaW9kaWM/byYmdC5fdHJhbnNpdGlvblRvKHYseCk6KHQucnVuQ291bnQ9MCx0aGlzLl91cGRhdGVUYXNrQ291bnQodCwtMSksbyYmdC5fdHJhbnNpdGlvblRvKEMseCxDKSkpLEU9RS5wYXJlbnQsQT1pfX19LGUucHJvdG90eXBlLnNjaGVkdWxlVGFzaz1mdW5jdGlvbih0KXtpZih0LnpvbmUmJnQuem9uZSE9PXRoaXMpZm9yKHZhciBlPXRoaXM7ZTspe2lmKGU9PT10LnpvbmUpdGhyb3cgRXJyb3IoImNhbiBub3QgcmVzY2hlZHVsZSB0YXNrIHRvICIrdGhpcy5uYW1lKyIgd2hpY2ggaXMgZGVzY2VuZGFudHMgb2YgdGhlIG9yaWdpbmFsIHpvbmUgIit0LnpvbmUubmFtZSk7ZT1lLnBhcmVudH10Ll90cmFuc2l0aW9uVG8oTSxDKTt2YXIgbj1bXTt0Ll96b25lRGVsZWdhdGVzPW4sdC5fem9uZT10aGlzO3RyeXt0PXRoaXMuX3pvbmVEZWxlZ2F0ZS5zY2hlZHVsZVRhc2sodGhpcyx0KX1jYXRjaChlKXt0aHJvdyB0Ll90cmFuc2l0aW9uVG8oUCxNLEMpLHRoaXMuX3pvbmVEZWxlZ2F0ZS5oYW5kbGVFcnJvcih0aGlzLGUpLGV9cmV0dXJuIHQuX3pvbmVEZWxlZ2F0ZXM9PT1uJiZ0aGlzLl91cGRhdGVUYXNrQ291bnQodCwxKSx0LnN0YXRlPT1NJiZ0Ll90cmFuc2l0aW9uVG8odixNKSx0fSxlLnByb3RvdHlwZS5zY2hlZHVsZU1pY3JvVGFzaz1mdW5jdGlvbih0LGUsbixvKXtyZXR1cm4gdGhpcy5zY2hlZHVsZVRhc2sobmV3IHAodyx0LGUsbixvLHZvaWQgMCkpfSxlLnByb3RvdHlwZS5zY2hlZHVsZU1hY3JvVGFzaz1mdW5jdGlvbih0LGUsbixvLGkpe3JldHVybiB0aGlzLnNjaGVkdWxlVGFzayhuZXcgcChrLHQsZSxuLG8saSkpfSxlLnByb3RvdHlwZS5zY2hlZHVsZUV2ZW50VGFzaz1mdW5jdGlvbih0LGUsbixvLGkpe3JldHVybiB0aGlzLnNjaGVkdWxlVGFzayhuZXcgcChTLHQsZSxuLG8saSkpfSxlLnByb3RvdHlwZS5jYW5jZWxUYXNrPWZ1bmN0aW9uKHQpe2lmKHQuem9uZSE9dGhpcyl0aHJvdyBuZXcgRXJyb3IoIkEgdGFzayBjYW4gb25seSBiZSBjYW5jZWxsZWQgaW4gdGhlIHpvbmUgb2YgY3JlYXRpb24hIChDcmVhdGlvbjogIisodC56b25lfHxfKS5uYW1lKyI7IEV4ZWN1dGlvbjogIit0aGlzLm5hbWUrIikiKTt0Ll90cmFuc2l0aW9uVG8oTyx2LHgpO3RyeXt0aGlzLl96b25lRGVsZWdhdGUuY2FuY2VsVGFzayh0aGlzLHQpfWNhdGNoKGUpe3Rocm93IHQuX3RyYW5zaXRpb25UbyhQLE8pLHRoaXMuX3pvbmVEZWxlZ2F0ZS5oYW5kbGVFcnJvcih0aGlzLGUpLGV9cmV0dXJuIHRoaXMuX3VwZGF0ZVRhc2tDb3VudCh0LC0xKSx0Ll90cmFuc2l0aW9uVG8oQyxPKSx0LnJ1bkNvdW50PTAsdH0sZS5wcm90b3R5cGUuX3VwZGF0ZVRhc2tDb3VudD1mdW5jdGlvbih0LGUpe3ZhciBuPXQuX3pvbmVEZWxlZ2F0ZXM7LTE9PWUmJih0Ll96b25lRGVsZWdhdGVzPW51bGwpO2Zvcih2YXIgbz0wO288bi5sZW5ndGg7bysrKW5bb10uX3VwZGF0ZVRhc2tDb3VudCh0LnR5cGUsZSl9LGV9KSgpO3MuX19zeW1ib2xfXz1hO3ZhciBsLGM9e25hbWU6IiIsb25IYXNUYXNrOmZ1bmN0aW9uKHQsZSxuLG8pe3JldHVybiB0Lmhhc1Rhc2sobixvKX0sb25TY2hlZHVsZVRhc2s6ZnVuY3Rpb24odCxlLG4sbyl7cmV0dXJuIHQuc2NoZWR1bGVUYXNrKG4sbyl9LG9uSW52b2tlVGFzazpmdW5jdGlvbih0LGUsbixvLGksYSl7cmV0dXJuIHQuaW52b2tlVGFzayhuLG8saSxhKX0sb25DYW5jZWxUYXNrOmZ1bmN0aW9uKHQsZSxuLG8pe3JldHVybiB0LmNhbmNlbFRhc2sobixvKX19LGQ9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUsbil7dGhpcy5fdGFza0NvdW50cz17bWljcm9UYXNrOjAsbWFjcm9UYXNrOjAsZXZlbnRUYXNrOjB9LHRoaXMuem9uZT10LHRoaXMuX3BhcmVudERlbGVnYXRlPWUsdGhpcy5fZm9ya1pTPW4mJihuJiZuLm9uRm9yaz9uOmUuX2ZvcmtaUyksdGhpcy5fZm9ya0RsZ3Q9biYmKG4ub25Gb3JrP2U6ZS5fZm9ya0RsZ3QpLHRoaXMuX2ZvcmtDdXJyWm9uZT1uJiYobi5vbkZvcms/dGhpcy56b25lOmUuX2ZvcmtDdXJyWm9uZSksdGhpcy5faW50ZXJjZXB0WlM9biYmKG4ub25JbnRlcmNlcHQ/bjplLl9pbnRlcmNlcHRaUyksdGhpcy5faW50ZXJjZXB0RGxndD1uJiYobi5vbkludGVyY2VwdD9lOmUuX2ludGVyY2VwdERsZ3QpLHRoaXMuX2ludGVyY2VwdEN1cnJab25lPW4mJihuLm9uSW50ZXJjZXB0P3RoaXMuem9uZTplLl9pbnRlcmNlcHRDdXJyWm9uZSksdGhpcy5faW52b2tlWlM9biYmKG4ub25JbnZva2U/bjplLl9pbnZva2VaUyksdGhpcy5faW52b2tlRGxndD1uJiYobi5vbkludm9rZT9lOmUuX2ludm9rZURsZ3QpLHRoaXMuX2ludm9rZUN1cnJab25lPW4mJihuLm9uSW52b2tlP3RoaXMuem9uZTplLl9pbnZva2VDdXJyWm9uZSksdGhpcy5faGFuZGxlRXJyb3JaUz1uJiYobi5vbkhhbmRsZUVycm9yP246ZS5faGFuZGxlRXJyb3JaUyksdGhpcy5faGFuZGxlRXJyb3JEbGd0PW4mJihuLm9uSGFuZGxlRXJyb3I/ZTplLl9oYW5kbGVFcnJvckRsZ3QpLHRoaXMuX2hhbmRsZUVycm9yQ3VyclpvbmU9biYmKG4ub25IYW5kbGVFcnJvcj90aGlzLnpvbmU6ZS5faGFuZGxlRXJyb3JDdXJyWm9uZSksdGhpcy5fc2NoZWR1bGVUYXNrWlM9biYmKG4ub25TY2hlZHVsZVRhc2s/bjplLl9zY2hlZHVsZVRhc2taUyksdGhpcy5fc2NoZWR1bGVUYXNrRGxndD1uJiYobi5vblNjaGVkdWxlVGFzaz9lOmUuX3NjaGVkdWxlVGFza0RsZ3QpLHRoaXMuX3NjaGVkdWxlVGFza0N1cnJab25lPW4mJihuLm9uU2NoZWR1bGVUYXNrP3RoaXMuem9uZTplLl9zY2hlZHVsZVRhc2tDdXJyWm9uZSksdGhpcy5faW52b2tlVGFza1pTPW4mJihuLm9uSW52b2tlVGFzaz9uOmUuX2ludm9rZVRhc2taUyksdGhpcy5faW52b2tlVGFza0RsZ3Q9biYmKG4ub25JbnZva2VUYXNrP2U6ZS5faW52b2tlVGFza0RsZ3QpLHRoaXMuX2ludm9rZVRhc2tDdXJyWm9uZT1uJiYobi5vbkludm9rZVRhc2s/dGhpcy56b25lOmUuX2ludm9rZVRhc2tDdXJyWm9uZSksdGhpcy5fY2FuY2VsVGFza1pTPW4mJihuLm9uQ2FuY2VsVGFzaz9uOmUuX2NhbmNlbFRhc2taUyksdGhpcy5fY2FuY2VsVGFza0RsZ3Q9biYmKG4ub25DYW5jZWxUYXNrP2U6ZS5fY2FuY2VsVGFza0RsZ3QpLHRoaXMuX2NhbmNlbFRhc2tDdXJyWm9uZT1uJiYobi5vbkNhbmNlbFRhc2s/dGhpcy56b25lOmUuX2NhbmNlbFRhc2tDdXJyWm9uZSksdGhpcy5faGFzVGFza1pTPW51bGwsdGhpcy5faGFzVGFza0RsZ3Q9bnVsbCx0aGlzLl9oYXNUYXNrRGxndE93bmVyPW51bGwsdGhpcy5faGFzVGFza0N1cnJab25lPW51bGw7dmFyIG89biYmbi5vbkhhc1Rhc2s7KG98fGUmJmUuX2hhc1Rhc2taUykmJih0aGlzLl9oYXNUYXNrWlM9bz9uOmMsdGhpcy5faGFzVGFza0RsZ3Q9ZSx0aGlzLl9oYXNUYXNrRGxndE93bmVyPXRoaXMsdGhpcy5faGFzVGFza0N1cnJab25lPXQsbi5vblNjaGVkdWxlVGFza3x8KHRoaXMuX3NjaGVkdWxlVGFza1pTPWMsdGhpcy5fc2NoZWR1bGVUYXNrRGxndD1lLHRoaXMuX3NjaGVkdWxlVGFza0N1cnJab25lPXRoaXMuem9uZSksbi5vbkludm9rZVRhc2t8fCh0aGlzLl9pbnZva2VUYXNrWlM9Yyx0aGlzLl9pbnZva2VUYXNrRGxndD1lLHRoaXMuX2ludm9rZVRhc2tDdXJyWm9uZT10aGlzLnpvbmUpLG4ub25DYW5jZWxUYXNrfHwodGhpcy5fY2FuY2VsVGFza1pTPWMsdGhpcy5fY2FuY2VsVGFza0RsZ3Q9ZSx0aGlzLl9jYW5jZWxUYXNrQ3VyclpvbmU9dGhpcy56b25lKSl9cmV0dXJuIHQucHJvdG90eXBlLmZvcms9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5fZm9ya1pTP3RoaXMuX2ZvcmtaUy5vbkZvcmsodGhpcy5fZm9ya0RsZ3QsdGhpcy56b25lLHQsZSk6bmV3IHModCxlKX0sdC5wcm90b3R5cGUuaW50ZXJjZXB0PWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdGhpcy5faW50ZXJjZXB0WlM/dGhpcy5faW50ZXJjZXB0WlMub25JbnRlcmNlcHQodGhpcy5faW50ZXJjZXB0RGxndCx0aGlzLl9pbnRlcmNlcHRDdXJyWm9uZSx0LGUsbik6ZX0sdC5wcm90b3R5cGUuaW52b2tlPWZ1bmN0aW9uKHQsZSxuLG8saSl7cmV0dXJuIHRoaXMuX2ludm9rZVpTP3RoaXMuX2ludm9rZVpTLm9uSW52b2tlKHRoaXMuX2ludm9rZURsZ3QsdGhpcy5faW52b2tlQ3VyclpvbmUsdCxlLG4sbyxpKTplLmFwcGx5KG4sbyl9LHQucHJvdG90eXBlLmhhbmRsZUVycm9yPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIXRoaXMuX2hhbmRsZUVycm9yWlN8fHRoaXMuX2hhbmRsZUVycm9yWlMub25IYW5kbGVFcnJvcih0aGlzLl9oYW5kbGVFcnJvckRsZ3QsdGhpcy5faGFuZGxlRXJyb3JDdXJyWm9uZSx0LGUpfSx0LnByb3RvdHlwZS5zY2hlZHVsZVRhc2s9ZnVuY3Rpb24odCxlKXt2YXIgbj1lO2lmKHRoaXMuX3NjaGVkdWxlVGFza1pTKXRoaXMuX2hhc1Rhc2taUyYmbi5fem9uZURlbGVnYXRlcy5wdXNoKHRoaXMuX2hhc1Rhc2tEbGd0T3duZXIpLChuPXRoaXMuX3NjaGVkdWxlVGFza1pTLm9uU2NoZWR1bGVUYXNrKHRoaXMuX3NjaGVkdWxlVGFza0RsZ3QsdGhpcy5fc2NoZWR1bGVUYXNrQ3VyclpvbmUsdCxlKSl8fChuPWUpO2Vsc2UgaWYoZS5zY2hlZHVsZUZuKWUuc2NoZWR1bGVGbihlKTtlbHNle2lmKGUudHlwZSE9dyl0aHJvdyBuZXcgRXJyb3IoIlRhc2sgaXMgbWlzc2luZyBzY2hlZHVsZUZuLiIpO2IoZSl9cmV0dXJuIG59LHQucHJvdG90eXBlLmludm9rZVRhc2s9ZnVuY3Rpb24odCxlLG4sbyl7cmV0dXJuIHRoaXMuX2ludm9rZVRhc2taUz90aGlzLl9pbnZva2VUYXNrWlMub25JbnZva2VUYXNrKHRoaXMuX2ludm9rZVRhc2tEbGd0LHRoaXMuX2ludm9rZVRhc2tDdXJyWm9uZSx0LGUsbixvKTplLmNhbGxiYWNrLmFwcGx5KG4sbyl9LHQucHJvdG90eXBlLmNhbmNlbFRhc2s9ZnVuY3Rpb24odCxlKXt2YXIgbjtpZih0aGlzLl9jYW5jZWxUYXNrWlMpbj10aGlzLl9jYW5jZWxUYXNrWlMub25DYW5jZWxUYXNrKHRoaXMuX2NhbmNlbFRhc2tEbGd0LHRoaXMuX2NhbmNlbFRhc2tDdXJyWm9uZSx0LGUpO2Vsc2V7aWYoIWUuY2FuY2VsRm4pdGhyb3cgRXJyb3IoIlRhc2sgaXMgbm90IGNhbmNlbGFibGUiKTtuPWUuY2FuY2VsRm4oZSl9cmV0dXJuIG59LHQucHJvdG90eXBlLmhhc1Rhc2s9ZnVuY3Rpb24odCxlKXt0cnl7dGhpcy5faGFzVGFza1pTJiZ0aGlzLl9oYXNUYXNrWlMub25IYXNUYXNrKHRoaXMuX2hhc1Rhc2tEbGd0LHRoaXMuX2hhc1Rhc2tDdXJyWm9uZSx0LGUpfWNhdGNoKGUpe3RoaXMuaGFuZGxlRXJyb3IodCxlKX19LHQucHJvdG90eXBlLl91cGRhdGVUYXNrQ291bnQ9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLl90YXNrQ291bnRzLG89blt0XSxpPW5bdF09bytlO2lmKGk8MCl0aHJvdyBuZXcgRXJyb3IoIk1vcmUgdGFza3MgZXhlY3V0ZWQgdGhlbiB3ZXJlIHNjaGVkdWxlZC4iKTswIT1vJiYwIT1pfHx0aGlzLmhhc1Rhc2sodGhpcy56b25lLHttaWNyb1Rhc2s6bi5taWNyb1Rhc2s+MCxtYWNyb1Rhc2s6bi5tYWNyb1Rhc2s+MCxldmVudFRhc2s6bi5ldmVudFRhc2s+MCxjaGFuZ2U6dH0pfSx0fSkoKSxwPShmdW5jdGlvbigpe2Z1bmN0aW9uIGUobixvLGksYSxyLHMpe2lmKHRoaXMuX3pvbmU9bnVsbCx0aGlzLnJ1bkNvdW50PTAsdGhpcy5fem9uZURlbGVnYXRlcz1udWxsLHRoaXMuX3N0YXRlPSJub3RTY2hlZHVsZWQiLHRoaXMudHlwZT1uLHRoaXMuc291cmNlPW8sdGhpcy5kYXRhPWEsdGhpcy5zY2hlZHVsZUZuPXIsdGhpcy5jYW5jZWxGbj1zLCFpKXRocm93IG5ldyBFcnJvcigiY2FsbGJhY2sgaXMgbm90IGRlZmluZWQiKTt0aGlzLmNhbGxiYWNrPWk7dmFyIGw9dGhpczt0aGlzLmludm9rZT1uPT09UyYmYSYmYS51c2VHP2UuaW52b2tlVGFzazpmdW5jdGlvbigpe3JldHVybiBlLmludm9rZVRhc2suY2FsbCh0LGwsdGhpcyxhcmd1bWVudHMpfX1yZXR1cm4gZS5pbnZva2VUYXNrPWZ1bmN0aW9uKHQsZSxuKXt0fHwodD10aGlzKSxUKys7dHJ5e3JldHVybiB0LnJ1bkNvdW50KyssdC56b25lLnJ1blRhc2sodCxlLG4pfWZpbmFsbHl7MT09VCYmeSgpLFQtLX19LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiem9uZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl96b25lfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwic3RhdGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3RhdGV9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUuY2FuY2VsU2NoZWR1bGVSZXF1ZXN0PWZ1bmN0aW9uKCl7dGhpcy5fdHJhbnNpdGlvblRvKEMsTSl9LGUucHJvdG90eXBlLl90cmFuc2l0aW9uVG89ZnVuY3Rpb24odCxlLG4pe2lmKHRoaXMuX3N0YXRlIT09ZSYmdGhpcy5fc3RhdGUhPT1uKXRocm93IG5ldyBFcnJvcih0aGlzLnR5cGUrIiAnIit0aGlzLnNvdXJjZSsiJzogY2FuIG5vdCB0cmFuc2l0aW9uIHRvICciK3QrIicsIGV4cGVjdGluZyBzdGF0ZSAnIitlKyInIisobj8iIG9yICciK24rIiciOiIiKSsiLCB3YXMgJyIrdGhpcy5fc3RhdGUrIicuIik7dGhpcy5fc3RhdGU9dCx0PT1DJiYodGhpcy5fem9uZURlbGVnYXRlcz1udWxsKX0sZS5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kYXRhJiZ2b2lkIDAhPT10aGlzLmRhdGEuaGFuZGxlSWQ/dGhpcy5kYXRhLmhhbmRsZUlkLnRvU3RyaW5nKCk6T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHRoaXMpfSxlLnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oKXtyZXR1cm57dHlwZTp0aGlzLnR5cGUsc3RhdGU6dGhpcy5zdGF0ZSxzb3VyY2U6dGhpcy5zb3VyY2Usem9uZTp0aGlzLnpvbmUubmFtZSxydW5Db3VudDp0aGlzLnJ1bkNvdW50fX0sZX0pKCksbT1hKCJzZXRUaW1lb3V0IiksZj1hKCJQcm9taXNlIiksdT1hKCJ0aGVuIiksZz1bXSxoPSExO2Z1bmN0aW9uIGIoZSl7aWYoMD09PVQmJjA9PT1nLmxlbmd0aClpZihsfHx0W2ZdJiYobD10W2ZdLnJlc29sdmUoMCkpLGwpe3ZhciBuPWxbdV07bnx8KG49bC50aGVuKSxuLmNhbGwobCx5KX1lbHNlIHRbbV0oeSwwKTtlJiZnLnB1c2goZSl9ZnVuY3Rpb24geSgpe2lmKCFoKXtmb3IoaD0hMDtnLmxlbmd0aDspe3ZhciB0PWc7Zz1bXTtmb3IodmFyIGU9MDtlPHQubGVuZ3RoO2UrKyl7dmFyIG49dFtlXTt0cnl7bi56b25lLnJ1blRhc2sobixudWxsLG51bGwpfWNhdGNoKHQpe1Iub25VbmhhbmRsZWRFcnJvcih0KX19fVIubWljcm90YXNrRHJhaW5Eb25lKCksaD0hMX19dmFyIF89e25hbWU6Ik5PIFpPTkUifSxDPSJub3RTY2hlZHVsZWQiLE09InNjaGVkdWxpbmciLHY9InNjaGVkdWxlZCIseD0icnVubmluZyIsTz0iY2FuY2VsaW5nIixQPSJ1bmtub3duIix3PSJtaWNyb1Rhc2siLGs9Im1hY3JvVGFzayIsUz0iZXZlbnRUYXNrIixEPXt9LFI9e3N5bWJvbDphLGN1cnJlbnRab25lRnJhbWU6ZnVuY3Rpb24oKXtyZXR1cm4gRX0sb25VbmhhbmRsZWRFcnJvcjpOLG1pY3JvdGFza0RyYWluRG9uZTpOLHNjaGVkdWxlTWljcm9UYXNrOmIsc2hvd1VuY2F1Z2h0RXJyb3I6ZnVuY3Rpb24oKXtyZXR1cm4hc1thKCJpZ25vcmVDb25zb2xlRXJyb3JVbmNhdWdodEVycm9yIildfSxwYXRjaEV2ZW50VGFyZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuW119LHBhdGNoT25Qcm9wZXJ0aWVzOk4scGF0Y2hNZXRob2Q6ZnVuY3Rpb24oKXtyZXR1cm4gTn0sYmluZEFyZ3VtZW50czpmdW5jdGlvbigpe3JldHVybltdfSxwYXRjaFRoZW46ZnVuY3Rpb24oKXtyZXR1cm4gTn0scGF0Y2hNYWNyb1Rhc2s6ZnVuY3Rpb24oKXtyZXR1cm4gTn0scGF0Y2hFdmVudFByb3RvdHlwZTpmdW5jdGlvbigpe3JldHVybiBOfSxpc0lFT3JFZGdlOmZ1bmN0aW9uKCl7cmV0dXJuITF9LGdldEdsb2JhbE9iamVjdHM6ZnVuY3Rpb24oKXt9LE9iamVjdERlZmluZVByb3BlcnR5OmZ1bmN0aW9uKCl7cmV0dXJuIE59LE9iamVjdEdldE93blByb3BlcnR5RGVzY3JpcHRvcjpmdW5jdGlvbigpe30sT2JqZWN0Q3JlYXRlOmZ1bmN0aW9uKCl7fSxBcnJheVNsaWNlOmZ1bmN0aW9uKCl7cmV0dXJuW119LHBhdGNoQ2xhc3M6ZnVuY3Rpb24oKXtyZXR1cm4gTn0sd3JhcFdpdGhDdXJyZW50Wm9uZTpmdW5jdGlvbigpe3JldHVybiBOfSxmaWx0ZXJQcm9wZXJ0aWVzOmZ1bmN0aW9uKCl7cmV0dXJuW119LGF0dGFjaE9yaWdpblRvUGF0Y2hlZDpmdW5jdGlvbigpe3JldHVybiBOfSxfcmVkZWZpbmVQcm9wZXJ0eTpmdW5jdGlvbigpe3JldHVybiBOfSxwYXRjaENhbGxiYWNrczpmdW5jdGlvbigpe3JldHVybiBOfX0sRT17cGFyZW50Om51bGwsem9uZTpuZXcgcyhudWxsLG51bGwpfSxBPW51bGwsVD0wO2Z1bmN0aW9uIE4oKXt9bygiWm9uZSIsIlpvbmUiKSx0LlpvbmU9c30pKCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ3aW5kb3d8fCJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZiYmc2VsZnx8X08pOwovKioKICAgICAgICAgKiBAbGljZW5zZQogICAgICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgICAgICoKICAgICAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAgICAgKi8KdmFyIHQ9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixlPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxuPU9iamVjdC5nZXRQcm90b3R5cGVPZixvPU9iamVjdC5jcmVhdGUsaT1BcnJheS5wcm90b3R5cGUuc2xpY2UsYT0iYWRkRXZlbnRMaXN0ZW5lciIscj0icmVtb3ZlRXZlbnRMaXN0ZW5lciIscz1ab25lLl9fc3ltYm9sX18oYSksbD1ab25lLl9fc3ltYm9sX18ociksYz0idHJ1ZSIsZD0iZmFsc2UiLHA9Wm9uZS5fX3N5bWJvbF9fKCIiKTtmdW5jdGlvbiBtKHQsZSl7cmV0dXJuIFpvbmUuY3VycmVudC53cmFwKHQsZSl9ZnVuY3Rpb24gZih0LGUsbixvLGkpe3JldHVybiBab25lLmN1cnJlbnQuc2NoZWR1bGVNYWNyb1Rhc2sodCxlLG4sbyxpKX12YXIgdT1ab25lLl9fc3ltYm9sX18sZz0idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyxoPWc/d2luZG93OnZvaWQgMCxiPWcmJmh8fCJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZnx8X08seT0icmVtb3ZlQXR0cmlidXRlIixfPVtudWxsXTtmdW5jdGlvbiBDKHQsZSl7Zm9yKHZhciBuPXQubGVuZ3RoLTE7bj49MDtuLS0pImZ1bmN0aW9uIj09dHlwZW9mIHRbbl0mJih0W25dPW0odFtuXSxlKyJfIituKSk7cmV0dXJuIHR9ZnVuY3Rpb24gTShlLG4pe2Zvcih2YXIgbz1lLmNvbnN0cnVjdG9yLm5hbWUsaT1mdW5jdGlvbihpKXt2YXIgYT1uW2ldLHI9ZVthXTtpZihyKXtpZighdih0KGUsYSkpKXJldHVybiJjb250aW51ZSI7ZVthXT0oZnVuY3Rpb24odCl7dmFyIGU9ZnVuY3Rpb24oKXtyZXR1cm4gdC5hcHBseSh0aGlzLEMoYXJndW1lbnRzLG8rIi4iK2EpKX07cmV0dXJuIHooZSx0KSxlfSkocil9fSxhPTA7YTxuLmxlbmd0aDthKyspaShhKX1mdW5jdGlvbiB2KHQpe3JldHVybiF0fHwhMSE9PXQud3JpdGFibGUmJiEoImZ1bmN0aW9uIj09dHlwZW9mIHQuZ2V0JiZ2b2lkIDA9PT10LnNldCl9dmFyIHg9InVuZGVmaW5lZCIhPXR5cGVvZiBXb3JrZXJHbG9iYWxTY29wZSYmc2VsZiBpbnN0YW5jZW9mIFdvcmtlckdsb2JhbFNjb3BlLE89ISgibnciaW4gYikmJnZvaWQgMCE9PWIucHJvY2VzcyYmIltvYmplY3QgcHJvY2Vzc10iPT09e30udG9TdHJpbmcuY2FsbChiLnByb2Nlc3MpLFA9IU8mJiF4JiYhKCFnfHwhaC5IVE1MRWxlbWVudCksdz12b2lkIDAhPT1iLnByb2Nlc3MmJiJbb2JqZWN0IHByb2Nlc3NdIj09PXt9LnRvU3RyaW5nLmNhbGwoYi5wcm9jZXNzKSYmIXgmJiEoIWd8fCFoLkhUTUxFbGVtZW50KSxrPXt9LFM9ZnVuY3Rpb24odCl7aWYodD10fHxiLmV2ZW50KXt2YXIgZT1rW3QudHlwZV07ZXx8KGU9a1t0LnR5cGVdPXUoIk9OX1BST1BFUlRZIit0LnR5cGUpKTt2YXIgbixvPXRoaXN8fHQudGFyZ2V0fHxiLGk9b1tlXTtyZXR1cm4gUCYmbz09PWgmJiJlcnJvciI9PT10LnR5cGU/ITA9PT0obj1pJiZpLmNhbGwodGhpcyx0Lm1lc3NhZ2UsdC5maWxlbmFtZSx0LmxpbmVubyx0LmNvbG5vLHQuZXJyb3IpKSYmdC5wcmV2ZW50RGVmYXVsdCgpOm51bGw9PShuPWkmJmkuYXBwbHkodGhpcyxhcmd1bWVudHMpKXx8bnx8dC5wcmV2ZW50RGVmYXVsdCgpLG59fTtmdW5jdGlvbiBEKG4sbyxpKXt2YXIgYT10KG4sbyk7aWYoIWEmJmkmJnQoaSxvKSYmKGE9e2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksYSYmYS5jb25maWd1cmFibGUpe3ZhciByPXUoIm9uIitvKyJwYXRjaGVkIik7aWYoIW4uaGFzT3duUHJvcGVydHkocil8fCFuW3JdKXtkZWxldGUgYS53cml0YWJsZSxkZWxldGUgYS52YWx1ZTt2YXIgcz1hLmdldCxsPWEuc2V0LGM9by5zdWJzdHIoMiksZD1rW2NdO2R8fChkPWtbY109dSgiT05fUFJPUEVSVFkiK2MpKSxhLnNldD1mdW5jdGlvbih0KXt2YXIgZT10aGlzO2V8fG4hPT1ifHwoZT1iKSxlJiYoZVtkXSYmZS5yZW1vdmVFdmVudExpc3RlbmVyKGMsUyksbCYmbC5hcHBseShlLF8pLCJmdW5jdGlvbiI9PXR5cGVvZiB0PyhlW2RdPXQsZS5hZGRFdmVudExpc3RlbmVyKGMsUywhMSkpOmVbZF09bnVsbCl9LGEuZ2V0PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztpZih0fHxuIT09Ynx8KHQ9YiksIXQpcmV0dXJuIG51bGw7dmFyIGU9dFtkXTtpZihlKXJldHVybiBlO2lmKHMpe3ZhciBpPXMmJnMuY2FsbCh0aGlzKTtpZihpKXJldHVybiBhLnNldC5jYWxsKHRoaXMsaSksImZ1bmN0aW9uIj09dHlwZW9mIHRbeV0mJnQucmVtb3ZlQXR0cmlidXRlKG8pLGl9cmV0dXJuIG51bGx9LGUobixvLGEpLG5bcl09ITB9fX1mdW5jdGlvbiBSKHQsZSxuKXtpZihlKWZvcih2YXIgbz0wO288ZS5sZW5ndGg7bysrKUQodCwib24iK2Vbb10sbik7ZWxzZXt2YXIgaT1bXTtmb3IodmFyIGEgaW4gdCkib24iPT1hLnN1YnN0cigwLDIpJiZpLnB1c2goYSk7Zm9yKHZhciByPTA7cjxpLmxlbmd0aDtyKyspRCh0LGlbcl0sbil9fXZhciBFPXUoIm9yaWdpbmFsSW5zdGFuY2UiKTtmdW5jdGlvbiBBKHQpe3ZhciBuPWJbdF07aWYobil7Ylt1KHQpXT1uLGJbdF09ZnVuY3Rpb24oKXt2YXIgZT1DKGFyZ3VtZW50cyx0KTtzd2l0Y2goZS5sZW5ndGgpe2Nhc2UgMDp0aGlzW0VdPW5ldyBuO2JyZWFrO2Nhc2UgMTp0aGlzW0VdPW5ldyBuKGVbMF0pO2JyZWFrO2Nhc2UgMjp0aGlzW0VdPW5ldyBuKGVbMF0sZVsxXSk7YnJlYWs7Y2FzZSAzOnRoaXNbRV09bmV3IG4oZVswXSxlWzFdLGVbMl0pO2JyZWFrO2Nhc2UgNDp0aGlzW0VdPW5ldyBuKGVbMF0sZVsxXSxlWzJdLGVbM10pO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJBcmcgbGlzdCB0b28gbG9uZy4iKX19LHooYlt0XSxuKTt2YXIgbyxpPW5ldyBuKChmdW5jdGlvbigpe30pKTtmb3IobyBpbiBpKSJYTUxIdHRwUmVxdWVzdCI9PT10JiYicmVzcG9uc2VCbG9iIj09PW98fChmdW5jdGlvbihuKXsiZnVuY3Rpb24iPT10eXBlb2YgaVtuXT9iW3RdLnByb3RvdHlwZVtuXT1mdW5jdGlvbigpe3JldHVybiB0aGlzW0VdW25dLmFwcGx5KHRoaXNbRV0sYXJndW1lbnRzKX06ZShiW3RdLnByb3RvdHlwZSxuLHtzZXQ6ZnVuY3Rpb24oZSl7ImZ1bmN0aW9uIj09dHlwZW9mIGU/KHRoaXNbRV1bbl09bShlLHQrIi4iK24pLHoodGhpc1tFXVtuXSxlKSk6dGhpc1tFXVtuXT1lfSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc1tFXVtuXX19KX0pKG8pO2ZvcihvIGluIG4pInByb3RvdHlwZSIhPT1vJiZuLmhhc093blByb3BlcnR5KG8pJiYoYlt0XVtvXT1uW29dKX19ZnVuY3Rpb24gVChlLG8saSl7Zm9yKHZhciBhPWU7YSYmIWEuaGFzT3duUHJvcGVydHkobyk7KWE9bihhKTshYSYmZVtvXSYmKGE9ZSk7dmFyIHI9dShvKSxzPW51bGw7aWYoYSYmKCEocz1hW3JdKXx8IWEuaGFzT3duUHJvcGVydHkocikpJiYocz1hW3JdPWFbb10sdihhJiZ0KGEsbykpKSl7dmFyIGw9aShzLHIsbyk7YVtvXT1mdW5jdGlvbigpe3JldHVybiBsKHRoaXMsYXJndW1lbnRzKX0seihhW29dLHMpfXJldHVybiBzfWZ1bmN0aW9uIE4odCxlLG4pe3ZhciBvPW51bGw7ZnVuY3Rpb24gaSh0KXt2YXIgZT10LmRhdGE7cmV0dXJuIGUuYXJnc1tlLmNiSWR4XT1mdW5jdGlvbigpe3QuaW52b2tlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sby5hcHBseShlLnRhcmdldCxlLmFyZ3MpLHR9bz1UKHQsZSwoZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUsbyl7dmFyIGE9bihlLG8pO3JldHVybiBhLmNiSWR4Pj0wJiYiZnVuY3Rpb24iPT10eXBlb2Ygb1thLmNiSWR4XT9mKGEubmFtZSxvW2EuY2JJZHhdLGEsaSk6dC5hcHBseShlLG8pfX0pKX1mdW5jdGlvbiB6KHQsZSl7dFt1KCJPcmlnaW5hbERlbGVnYXRlIildPWV9dmFyIEk9ITEsSD0hMTtmdW5jdGlvbiBGKCl7dHJ5e3ZhciB0PWgubmF2aWdhdG9yLnVzZXJBZ2VudDtpZigtMSE9PXQuaW5kZXhPZigiTVNJRSAiKXx8LTEhPT10LmluZGV4T2YoIlRyaWRlbnQvIikpcmV0dXJuITB9Y2F0Y2godCl7fXJldHVybiExfWZ1bmN0aW9uIEwoKXtpZihJKXJldHVybiBIO0k9ITA7dHJ5e3ZhciB0PWgubmF2aWdhdG9yLnVzZXJBZ2VudDstMT09PXQuaW5kZXhPZigiTVNJRSAiKSYmLTE9PT10LmluZGV4T2YoIlRyaWRlbnQvIikmJi0xPT09dC5pbmRleE9mKCJFZGdlLyIpfHwoSD0hMCl9Y2F0Y2godCl7fXJldHVybiBIfQovKioKICAgICAgICAgKiBAbGljZW5zZQogICAgICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgICAgICoKICAgICAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAgICAgKi9ab25lLl9fbG9hZF9wYXRjaCgiWm9uZUF3YXJlUHJvbWlzZSIsKGZ1bmN0aW9uKHQsZSxuKXt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLGk9T2JqZWN0LmRlZmluZVByb3BlcnR5O2Z1bmN0aW9uIGEodCl7aWYodCYmdC50b1N0cmluZz09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcpe3ZhciBlPXQuY29uc3RydWN0b3ImJnQuY29uc3RydWN0b3IubmFtZTtyZXR1cm4oZXx8IiIpKyI6ICIrSlNPTi5zdHJpbmdpZnkodCl9cmV0dXJuIHQ/dC50b1N0cmluZygpOk9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX12YXIgcj1uLnN5bWJvbCxzPVtdLGw9ITA9PT10W3IoIkRJU0FCTEVfV1JBUFBJTkdfVU5DQVVHSFRfUFJPTUlTRV9SRUpFQ1RJT04iKV0sYz1yKCJQcm9taXNlIiksZD1yKCJ0aGVuIikscD0iX19jcmVhdGlvblRyYWNlX18iO24ub25VbmhhbmRsZWRFcnJvcj1mdW5jdGlvbih0KXtpZihuLnNob3dVbmNhdWdodEVycm9yKCkpe3ZhciBlPXQmJnQucmVqZWN0aW9uO2U/Y29uc29sZS5lcnJvcigiVW5oYW5kbGVkIFByb21pc2UgcmVqZWN0aW9uOiIsZSBpbnN0YW5jZW9mIEVycm9yP2UubWVzc2FnZTplLCI7IFpvbmU6Iix0LnpvbmUubmFtZSwiOyBUYXNrOiIsdC50YXNrJiZ0LnRhc2suc291cmNlLCI7IFZhbHVlOiIsZSxlIGluc3RhbmNlb2YgRXJyb3I/ZS5zdGFjazp2b2lkIDApOmNvbnNvbGUuZXJyb3IodCl9fSxuLm1pY3JvdGFza0RyYWluRG9uZT1mdW5jdGlvbigpe2Zvcih2YXIgdD1mdW5jdGlvbigpe3ZhciB0PXMuc2hpZnQoKTt0cnl7dC56b25lLnJ1bkd1YXJkZWQoKGZ1bmN0aW9uKCl7aWYodC50aHJvd09yaWdpbmFsKXRocm93IHQucmVqZWN0aW9uO3Rocm93IHR9KSl9Y2F0Y2godCl7Zih0KX19O3MubGVuZ3RoOyl0KCl9O3ZhciBtPXIoInVuaGFuZGxlZFByb21pc2VSZWplY3Rpb25IYW5kbGVyIik7ZnVuY3Rpb24gZih0KXtuLm9uVW5oYW5kbGVkRXJyb3IodCk7dHJ5e3ZhciBvPWVbbV07ImZ1bmN0aW9uIj09dHlwZW9mIG8mJm8uY2FsbCh0aGlzLHQpfWNhdGNoKHQpe319ZnVuY3Rpb24gdSh0KXtyZXR1cm4gdCYmdC50aGVufWZ1bmN0aW9uIGcodCl7cmV0dXJuIHR9ZnVuY3Rpb24gaCh0KXtyZXR1cm4gRi5yZWplY3QodCl9dmFyIGI9cigic3RhdGUiKSx5PXIoInZhbHVlIiksXz1yKCJmaW5hbGx5IiksQz1yKCJwYXJlbnRQcm9taXNlVmFsdWUiKSxNPXIoInBhcmVudFByb21pc2VTdGF0ZSIpLHY9IlByb21pc2UudGhlbiIseD1udWxsLE89ITAsUD0hMSx3PTA7ZnVuY3Rpb24gayh0LGUpe3JldHVybiBmdW5jdGlvbihuKXt0cnl7RSh0LGUsbil9Y2F0Y2goZSl7RSh0LCExLGUpfX19dmFyIFM9ZnVuY3Rpb24oKXt2YXIgdD0hMTtyZXR1cm4gZnVuY3Rpb24gZShuKXtyZXR1cm4gZnVuY3Rpb24oKXt0fHwodD0hMCxuLmFwcGx5KG51bGwsYXJndW1lbnRzKSl9fX0sRD0iUHJvbWlzZSByZXNvbHZlZCB3aXRoIGl0c2VsZiIsUj1yKCJjdXJyZW50VGFza1RyYWNlIik7ZnVuY3Rpb24gRSh0LG8scil7dmFyIGM9UygpO2lmKHQ9PT1yKXRocm93IG5ldyBUeXBlRXJyb3IoRCk7aWYodFtiXT09PXgpe3ZhciBkPW51bGw7dHJ5eyJvYmplY3QiIT10eXBlb2YgciYmImZ1bmN0aW9uIiE9dHlwZW9mIHJ8fChkPXImJnIudGhlbil9Y2F0Y2goZSl7cmV0dXJuIGMoKGZ1bmN0aW9uKCl7RSh0LCExLGUpfSkpKCksdH1pZihvIT09UCYmciBpbnN0YW5jZW9mIEYmJnIuaGFzT3duUHJvcGVydHkoYikmJnIuaGFzT3duUHJvcGVydHkoeSkmJnJbYl0hPT14KU4ociksRSh0LHJbYl0sclt5XSk7ZWxzZSBpZihvIT09UCYmImZ1bmN0aW9uIj09dHlwZW9mIGQpdHJ5e2QuY2FsbChyLGMoayh0LG8pKSxjKGsodCwhMSkpKX1jYXRjaChlKXtjKChmdW5jdGlvbigpe0UodCwhMSxlKX0pKSgpfWVsc2V7dFtiXT1vO3ZhciBtPXRbeV07aWYodFt5XT1yLHRbX109PT1fJiZvPT09TyYmKHRbYl09dFtNXSx0W3ldPXRbQ10pLG89PT1QJiZyIGluc3RhbmNlb2YgRXJyb3Ipe3ZhciBmPWUuY3VycmVudFRhc2smJmUuY3VycmVudFRhc2suZGF0YSYmZS5jdXJyZW50VGFzay5kYXRhW3BdO2YmJmkocixSLHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCx2YWx1ZTpmfSl9Zm9yKHZhciB1PTA7dTxtLmxlbmd0aDspeih0LG1bdSsrXSxtW3UrK10sbVt1KytdLG1bdSsrXSk7aWYoMD09bS5sZW5ndGgmJm89PVApe3RbYl09dzt2YXIgZz1yO3RyeXt0aHJvdyBuZXcgRXJyb3IoIlVuY2F1Z2h0IChpbiBwcm9taXNlKTogIithKHIpKyhyJiZyLnN0YWNrPyJcbiIrci5zdGFjazoiIikpfWNhdGNoKHQpe2c9dH1sJiYoZy50aHJvd09yaWdpbmFsPSEwKSxnLnJlamVjdGlvbj1yLGcucHJvbWlzZT10LGcuem9uZT1lLmN1cnJlbnQsZy50YXNrPWUuY3VycmVudFRhc2sscy5wdXNoKGcpLG4uc2NoZWR1bGVNaWNyb1Rhc2soKX19fXJldHVybiB0fXZhciBBPXIoInJlamVjdGlvbkhhbmRsZWRIYW5kbGVyIik7ZnVuY3Rpb24gTih0KXtpZih0W2JdPT09dyl7dHJ5e3ZhciBuPWVbQV07biYmImZ1bmN0aW9uIj09dHlwZW9mIG4mJm4uY2FsbCh0aGlzLHtyZWplY3Rpb246dFt5XSxwcm9taXNlOnR9KX1jYXRjaCh0KXt9dFtiXT1QO2Zvcih2YXIgbz0wO288cy5sZW5ndGg7bysrKXQ9PT1zW29dLnByb21pc2UmJnMuc3BsaWNlKG8sMSl9fWZ1bmN0aW9uIHoodCxlLG4sbyxpKXtOKHQpO3ZhciBhPXRbYl0scj1hPyJmdW5jdGlvbiI9PXR5cGVvZiBvP286ZzoiZnVuY3Rpb24iPT10eXBlb2YgaT9pOmg7ZS5zY2hlZHVsZU1pY3JvVGFzayh2LChmdW5jdGlvbigpe3RyeXt2YXIgbz10W3ldLGk9ISFuJiZfPT09bltfXTtpJiYobltDXT1vLG5bTV09YSk7dmFyIHM9ZS5ydW4ocix2b2lkIDAsaSYmciE9PWgmJnIhPT1nP1tdOltvXSk7RShuLCEwLHMpfWNhdGNoKHQpe0UobiwhMSx0KX19KSxuKX12YXIgST0iZnVuY3Rpb24gWm9uZUF3YXJlUHJvbWlzZSgpIHsgW25hdGl2ZSBjb2RlXSB9IixIPWZ1bmN0aW9uKCl7fSxGPShmdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7dmFyIG49dGhpcztpZighKG4gaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgRXJyb3IoIk11c3QgYmUgYW4gaW5zdGFuY2VvZiBQcm9taXNlLiIpO25bYl09eCxuW3ldPVtdO3RyeXtlJiZlKGsobixPKSxrKG4sUCkpfWNhdGNoKHQpe0UobiwhMSx0KX19cmV0dXJuIHQudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gSX0sdC5yZXNvbHZlPWZ1bmN0aW9uKHQpe3JldHVybiBFKG5ldyB0aGlzKG51bGwpLE8sdCl9LHQucmVqZWN0PWZ1bmN0aW9uKHQpe3JldHVybiBFKG5ldyB0aGlzKG51bGwpLFAsdCl9LHQucmFjZT1mdW5jdGlvbih0KXt2YXIgZSxuLG89bmV3IHRoaXMoKGZ1bmN0aW9uKHQsbyl7ZT10LG49b30pKTtmdW5jdGlvbiBpKHQpe2UodCl9ZnVuY3Rpb24gYSh0KXtuKHQpfWZvcih2YXIgcj0wLHM9dDtyPHMubGVuZ3RoO3IrKyl7dmFyIGw9c1tyXTt1KGwpfHwobD10aGlzLnJlc29sdmUobCkpLGwudGhlbihpLGEpfXJldHVybiBvfSx0LmFsbD1mdW5jdGlvbihlKXtyZXR1cm4gdC5hbGxXaXRoQ2FsbGJhY2soZSl9LHQuYWxsU2V0dGxlZD1mdW5jdGlvbihlKXtyZXR1cm4odGhpcyYmdGhpcy5wcm90b3R5cGUgaW5zdGFuY2VvZiB0P3RoaXM6dCkuYWxsV2l0aENhbGxiYWNrKGUse3RoZW5DYWxsYmFjazpmdW5jdGlvbih0KXtyZXR1cm57c3RhdHVzOiJmdWxmaWxsZWQiLHZhbHVlOnR9fSxlcnJvckNhbGxiYWNrOmZ1bmN0aW9uKHQpe3JldHVybntzdGF0dXM6InJlamVjdGVkIixyZWFzb246dH19fSl9LHQuYWxsV2l0aENhbGxiYWNrPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuLG8saT1uZXcgdGhpcygoZnVuY3Rpb24odCxlKXtuPXQsbz1lfSkpLGE9MixyPTAscz1bXSxsPWZ1bmN0aW9uKHQpe3UodCl8fCh0PWMucmVzb2x2ZSh0KSk7dmFyIGk9cjt0cnl7dC50aGVuKChmdW5jdGlvbih0KXtzW2ldPWU/ZS50aGVuQ2FsbGJhY2sodCk6dCwwPT0tLWEmJm4ocyl9KSwoZnVuY3Rpb24odCl7ZT8oc1tpXT1lLmVycm9yQ2FsbGJhY2sodCksMD09LS1hJiZuKHMpKTpvKHQpfSkpfWNhdGNoKHQpe28odCl9YSsrLHIrK30sYz10aGlzLGQ9MCxwPXQ7ZDxwLmxlbmd0aDtkKyspbChwW2RdKTtyZXR1cm4gMD09KGEtPTIpJiZuKHMpLGl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSxTeW1ib2wudG9TdHJpbmdUYWcse2dldDpmdW5jdGlvbigpe3JldHVybiJQcm9taXNlIn0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsU3ltYm9sLnNwZWNpZXMse2dldDpmdW5jdGlvbigpe3JldHVybiB0fSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLnRoZW49ZnVuY3Rpb24obixvKXt2YXIgaT10aGlzLmNvbnN0cnVjdG9yW1N5bWJvbC5zcGVjaWVzXTtpJiYiZnVuY3Rpb24iPT10eXBlb2YgaXx8KGk9dGhpcy5jb25zdHJ1Y3Rvcnx8dCk7dmFyIGE9bmV3IGkoSCkscj1lLmN1cnJlbnQ7cmV0dXJuIHRoaXNbYl09PXg/dGhpc1t5XS5wdXNoKHIsYSxuLG8pOnoodGhpcyxyLGEsbixvKSxhfSx0LnByb3RvdHlwZS5jYXRjaD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy50aGVuKG51bGwsdCl9LHQucHJvdG90eXBlLmZpbmFsbHk9ZnVuY3Rpb24obil7dmFyIG89dGhpcy5jb25zdHJ1Y3RvcltTeW1ib2wuc3BlY2llc107byYmImZ1bmN0aW9uIj09dHlwZW9mIG98fChvPXQpO3ZhciBpPW5ldyBvKEgpO2lbX109Xzt2YXIgYT1lLmN1cnJlbnQ7cmV0dXJuIHRoaXNbYl09PXg/dGhpc1t5XS5wdXNoKGEsaSxuLG4pOnoodGhpcyxhLGksbixuKSxpfSx0fSkoKTtGLnJlc29sdmU9Ri5yZXNvbHZlLEYucmVqZWN0PUYucmVqZWN0LEYucmFjZT1GLnJhY2UsRi5hbGw9Ri5hbGw7dmFyIEw9dFtjXT10LlByb21pc2U7dC5Qcm9taXNlPUY7dmFyIEI9cigidGhlblBhdGNoZWQiKTtmdW5jdGlvbiBWKHQpe3ZhciBlPXQucHJvdG90eXBlLG49byhlLCJ0aGVuIik7aWYoIW58fCExIT09bi53cml0YWJsZSYmbi5jb25maWd1cmFibGUpe3ZhciBpPWUudGhlbjtlW2RdPWksdC5wcm90b3R5cGUudGhlbj1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXM7cmV0dXJuIG5ldyBGKChmdW5jdGlvbih0LGUpe2kuY2FsbChuLHQsZSl9KSkudGhlbih0LGUpfSx0W0JdPSEwfX1mdW5jdGlvbiBqKHQpe3JldHVybiBmdW5jdGlvbihlLG4pe3ZhciBvPXQuYXBwbHkoZSxuKTtpZihvIGluc3RhbmNlb2YgRilyZXR1cm4gbzt2YXIgaT1vLmNvbnN0cnVjdG9yO3JldHVybiBpW0JdfHxWKGkpLG99fXJldHVybiBuLnBhdGNoVGhlbj1WLEwmJihWKEwpLFQodCwiZmV0Y2giLChmdW5jdGlvbih0KXtyZXR1cm4gaih0KX0pKSksUHJvbWlzZVtlLl9fc3ltYm9sX18oInVuY2F1Z2h0UHJvbWlzZUVycm9ycyIpXT1zLEZ9KSksCi8qKgogICAgICAgICAqIEBsaWNlbnNlCiAgICAgICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAgICAgKgogICAgICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICAgICAqLwpab25lLl9fbG9hZF9wYXRjaCgidG9TdHJpbmciLChmdW5jdGlvbih0KXt2YXIgZT1GdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcsbj11KCJPcmlnaW5hbERlbGVnYXRlIiksbz11KCJQcm9taXNlIiksaT11KCJFcnJvciIpLGE9ZnVuY3Rpb24gYSgpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzKXt2YXIgcj10aGlzW25dO2lmKHIpcmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHI/ZS5jYWxsKHIpOk9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChyKTtpZih0aGlzPT09UHJvbWlzZSl7dmFyIHM9dFtvXTtpZihzKXJldHVybiBlLmNhbGwocyl9aWYodGhpcz09PUVycm9yKXt2YXIgbD10W2ldO2lmKGwpcmV0dXJuIGUuY2FsbChsKX19cmV0dXJuIGUuY2FsbCh0aGlzKX07YVtuXT1lLEZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZz1hO3ZhciByPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcscz0iW29iamVjdCBQcm9taXNlXSI7T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBQcm9taXNlJiZ0aGlzIGluc3RhbmNlb2YgUHJvbWlzZT9zOnIuY2FsbCh0aGlzKX19KSk7Ci8qKgogICAgICAgICAqIEBsaWNlbnNlCiAgICAgICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAgICAgKgogICAgICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICAgICAqLwp2YXIgQj0hMTtpZigidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyl0cnl7dmFyIFY9T2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCJwYXNzaXZlIix7Z2V0OmZ1bmN0aW9uKCl7Qj0hMH19KTt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigidGVzdCIsVixWKSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigidGVzdCIsVixWKX1jYXRjaCh0KXtCPSExfXZhciBqPXt1c2VHOiEwfSxVPXt9LFc9e30sRz1uZXcgUmVnRXhwKCJeIitwKyIoXFx3KykodHJ1ZXxmYWxzZSkkIiksWT11KCJwcm9wYWdhdGlvblN0b3BwZWQiKTtmdW5jdGlvbiBxKHQsZSl7dmFyIG49KGU/ZSh0KTp0KStkLG89KGU/ZSh0KTp0KStjLGk9cCtuLGE9cCtvO1VbdF09e30sVVt0XVtkXT1pLFVbdF1bY109YX1mdW5jdGlvbiBaKHQsZSxvKXt2YXIgaT1vJiZvLmFkZHx8YSxzPW8mJm8ucm18fHIsbD1vJiZvLmxpc3RlbmVyc3x8ImV2ZW50TGlzdGVuZXJzIixtPW8mJm8ucm1BbGx8fCJyZW1vdmVBbGxMaXN0ZW5lcnMiLGY9dShpKSxnPSIuIitpKyI6IixoPSJwcmVwZW5kTGlzdGVuZXIiLGI9Ii4iK2grIjoiLHk9ZnVuY3Rpb24odCxlLG4pe2lmKCF0LmlzUmVtb3ZlZCl7dmFyIG89dC5jYWxsYmFjazsib2JqZWN0Ij09dHlwZW9mIG8mJm8uaGFuZGxlRXZlbnQmJih0LmNhbGxiYWNrPWZ1bmN0aW9uKHQpe3JldHVybiBvLmhhbmRsZUV2ZW50KHQpfSx0Lm9yaWdpbmFsRGVsZWdhdGU9byksdC5pbnZva2UodCxlLFtuXSk7dmFyIGk9dC5vcHRpb25zO2kmJiJvYmplY3QiPT10eXBlb2YgaSYmaS5vbmNlJiZlW3NdLmNhbGwoZSxuLnR5cGUsdC5vcmlnaW5hbERlbGVnYXRlP3Qub3JpZ2luYWxEZWxlZ2F0ZTp0LmNhbGxiYWNrLGkpfX0sXz1mdW5jdGlvbihlKXtpZihlPWV8fHQuZXZlbnQpe3ZhciBuPXRoaXN8fGUudGFyZ2V0fHx0LG89bltVW2UudHlwZV1bZF1dO2lmKG8paWYoMT09PW8ubGVuZ3RoKXkob1swXSxuLGUpO2Vsc2UgZm9yKHZhciBpPW8uc2xpY2UoKSxhPTA7YTxpLmxlbmd0aCYmKCFlfHwhMCE9PWVbWV0pO2ErKyl5KGlbYV0sbixlKX19LEM9ZnVuY3Rpb24oZSl7aWYoZT1lfHx0LmV2ZW50KXt2YXIgbj10aGlzfHxlLnRhcmdldHx8dCxvPW5bVVtlLnR5cGVdW2NdXTtpZihvKWlmKDE9PT1vLmxlbmd0aCl5KG9bMF0sbixlKTtlbHNlIGZvcih2YXIgaT1vLnNsaWNlKCksYT0wO2E8aS5sZW5ndGgmJighZXx8ITAhPT1lW1ldKTthKyspeShpW2FdLG4sZSl9fTtmdW5jdGlvbiBNKGUsbyl7aWYoIWUpcmV0dXJuITE7dmFyIGE9ITA7byYmdm9pZCAwIT09by51c2VHJiYoYT1vLnVzZUcpO3ZhciByPW8mJm8udmgseT0hMDtvJiZ2b2lkIDAhPT1vLmNoa0R1cCYmKHk9by5jaGtEdXApO3ZhciBNPSExO28mJnZvaWQgMCE9PW8ucnQmJihNPW8ucnQpO2Zvcih2YXIgdj1lO3YmJiF2Lmhhc093blByb3BlcnR5KGkpOyl2PW4odik7aWYoIXYmJmVbaV0mJih2PWUpLCF2KXJldHVybiExO2lmKHZbZl0pcmV0dXJuITE7dmFyIHgsUD1vJiZvLmV2ZW50TmFtZVRvU3RyaW5nLHc9e30saz12W2ZdPXZbaV0sUz12W3UocyldPXZbc10sRD12W3UobCldPXZbbF0sUj12W3UobSldPXZbbV07ZnVuY3Rpb24gRSh0LGUpe3JldHVybiFCJiYib2JqZWN0Ij09dHlwZW9mIHQmJnQ/ISF0LmNhcHR1cmU6QiYmZT8iYm9vbGVhbiI9PXR5cGVvZiB0P3tjYXB0dXJlOnQscGFzc2l2ZTohMH06dD8ib2JqZWN0Ij09dHlwZW9mIHQmJiExIT09dC5wYXNzaXZlP09iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7cGFzc2l2ZTohMH0pOnQ6e3Bhc3NpdmU6ITB9OnR9byYmby5wcmVwZW5kJiYoeD12W3Uoby5wcmVwZW5kKV09dltvLnByZXBlbmRdKTt2YXIgQT1mdW5jdGlvbih0KXtyZXR1cm4geC5jYWxsKHcudGFyZ2V0LHcuZXZlbnROYW1lLHQuaW52b2tlLHcub3B0aW9ucyl9LFQ9YT9mdW5jdGlvbih0KXtpZighdy5pc0V4aXN0aW5nKXJldHVybiBrLmNhbGwody50YXJnZXQsdy5ldmVudE5hbWUsdy5jYXB0dXJlP0M6Xyx3Lm9wdGlvbnMpfTpmdW5jdGlvbih0KXtyZXR1cm4gay5jYWxsKHcudGFyZ2V0LHcuZXZlbnROYW1lLHQuaW52b2tlLHcub3B0aW9ucyl9LE49YT9mdW5jdGlvbih0KXtpZighdC5pc1JlbW92ZWQpe3ZhciBlPVVbdC5ldmVudE5hbWVdLG49dm9pZCAwO2UmJihuPWVbdC5jYXB0dXJlP2M6ZF0pO3ZhciBvPW4mJnQudGFyZ2V0W25dO2lmKG8pZm9yKHZhciBpPTA7aTxvLmxlbmd0aDtpKyspaWYob1tpXT09PXQpe28uc3BsaWNlKGksMSksdC5pc1JlbW92ZWQ9ITAsMD09PW8ubGVuZ3RoJiYodC5hbGxSZW1vdmVkPSEwLHQudGFyZ2V0W25dPW51bGwpO2JyZWFrfX1pZih0LmFsbFJlbW92ZWQpcmV0dXJuIFMuY2FsbCh0LnRhcmdldCx0LmV2ZW50TmFtZSx0LmNhcHR1cmU/QzpfLHQub3B0aW9ucyl9OmZ1bmN0aW9uKHQpe3JldHVybiBTLmNhbGwodC50YXJnZXQsdC5ldmVudE5hbWUsdC5pbnZva2UsdC5vcHRpb25zKX0sST1vJiZvLmRpZmY/by5kaWZmOmZ1bmN0aW9uKHQsZSl7dmFyIG49dHlwZW9mIGU7cmV0dXJuImZ1bmN0aW9uIj09PW4mJnQuY2FsbGJhY2s9PT1lfHwib2JqZWN0Ij09PW4mJnQub3JpZ2luYWxEZWxlZ2F0ZT09PWV9LEg9Wm9uZVt1KCJVTlBBVENIRURfRVZFTlRTIildLEY9dFt1KCJQQVNTSVZFX0VWRU5UUyIpXSxMPWZ1bmN0aW9uKGUsbixpLHMsbCxwKXtyZXR1cm4gdm9pZCAwPT09bCYmKGw9ITEpLHZvaWQgMD09PXAmJihwPSExKSxmdW5jdGlvbigpe3ZhciBtPXRoaXN8fHQsZj1hcmd1bWVudHNbMF07byYmby50cmFuc2ZlckV2ZW50TmFtZSYmKGY9by50cmFuc2ZlckV2ZW50TmFtZShmKSk7dmFyIHU9YXJndW1lbnRzWzFdO2lmKCF1KXJldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtpZihPJiYidW5jYXVnaHRFeGNlcHRpb24iPT09ZilyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dmFyIGc9ITE7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHUpe2lmKCF1LmhhbmRsZUV2ZW50KXJldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtnPSEwfWlmKCFyfHxyKGUsdSxtLGFyZ3VtZW50cykpe3ZhciBoPUImJiEhRiYmLTEhPT1GLmluZGV4T2YoZiksYj1FKGFyZ3VtZW50c1syXSxoKTtpZihIKWZvcih2YXIgXz0wO188SC5sZW5ndGg7XysrKWlmKGY9PT1IW19dKXJldHVybiBoP2UuY2FsbChtLGYsdSxiKTplLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt2YXIgQz0hIWImJigiYm9vbGVhbiI9PXR5cGVvZiBifHxiLmNhcHR1cmUpLE09ISghYnx8Im9iamVjdCIhPXR5cGVvZiBiKSYmYi5vbmNlLHY9Wm9uZS5jdXJyZW50LHg9VVtmXTt4fHwocShmLFApLHg9VVtmXSk7dmFyIGssUz14W0M/YzpkXSxEPW1bU10sUj0hMTtpZihEKXtpZihSPSEwLHkpZm9yKF89MDtfPEQubGVuZ3RoO18rKylpZihJKERbX10sdSkpcmV0dXJufWVsc2UgRD1tW1NdPVtdO3ZhciBBPW0uY29uc3RydWN0b3IubmFtZSxUPVdbQV07VCYmKGs9VFtmXSksa3x8KGs9QStuKyhQP1AoZik6ZikpLHcub3B0aW9ucz1iLE0mJih3Lm9wdGlvbnMub25jZT0hMSksdy50YXJnZXQ9bSx3LmNhcHR1cmU9Qyx3LmV2ZW50TmFtZT1mLHcuaXNFeGlzdGluZz1SO3ZhciBOPWE/ajp2b2lkIDA7TiYmKE4udGFza0RhdGE9dyk7dmFyIHo9di5zY2hlZHVsZUV2ZW50VGFzayhrLHUsTixpLHMpO3JldHVybiB3LnRhcmdldD1udWxsLE4mJihOLnRhc2tEYXRhPW51bGwpLE0mJihiLm9uY2U9ITApLChCfHwiYm9vbGVhbiIhPXR5cGVvZiB6Lm9wdGlvbnMpJiYoei5vcHRpb25zPWIpLHoudGFyZ2V0PW0sei5jYXB0dXJlPUMsei5ldmVudE5hbWU9ZixnJiYoei5vcmlnaW5hbERlbGVnYXRlPXUpLHA/RC51bnNoaWZ0KHopOkQucHVzaCh6KSxsP206dm9pZCAwfX19O3JldHVybiB2W2ldPUwoayxnLFQsTixNKSx4JiYodltoXT1MKHgsYixBLE4sTSwhMCkpLHZbc109ZnVuY3Rpb24oKXt2YXIgZT10aGlzfHx0LG49YXJndW1lbnRzWzBdO28mJm8udHJhbnNmZXJFdmVudE5hbWUmJihuPW8udHJhbnNmZXJFdmVudE5hbWUobikpO3ZhciBpPWFyZ3VtZW50c1syXSxhPSEhaSYmKCJib29sZWFuIj09dHlwZW9mIGl8fGkuY2FwdHVyZSkscz1hcmd1bWVudHNbMV07aWYoIXMpcmV0dXJuIFMuYXBwbHkodGhpcyxhcmd1bWVudHMpO2lmKCFyfHxyKFMscyxlLGFyZ3VtZW50cykpe3ZhciBsLG09VVtuXTttJiYobD1tW2E/YzpkXSk7dmFyIGY9bCYmZVtsXTtpZihmKWZvcih2YXIgdT0wO3U8Zi5sZW5ndGg7dSsrKXt2YXIgZz1mW3VdO2lmKEkoZyxzKSlyZXR1cm4gZi5zcGxpY2UodSwxKSxnLmlzUmVtb3ZlZD0hMCwwPT09Zi5sZW5ndGgmJihnLmFsbFJlbW92ZWQ9ITAsZVtsXT1udWxsLCJzdHJpbmciPT10eXBlb2YgbiYmKGVbcCsiT05fUFJPUEVSVFkiK25dPW51bGwpKSxnLnpvbmUuY2FuY2VsVGFzayhnKSxNP2U6dm9pZCAwfXJldHVybiBTLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19LHZbbF09ZnVuY3Rpb24oKXt2YXIgZT10aGlzfHx0LG49YXJndW1lbnRzWzBdO28mJm8udHJhbnNmZXJFdmVudE5hbWUmJihuPW8udHJhbnNmZXJFdmVudE5hbWUobikpO2Zvcih2YXIgaT1bXSxhPVgoZSxQP1Aobik6bikscj0wO3I8YS5sZW5ndGg7cisrKXt2YXIgcz1hW3JdO2kucHVzaChzLm9yaWdpbmFsRGVsZWdhdGU/cy5vcmlnaW5hbERlbGVnYXRlOnMuY2FsbGJhY2spfXJldHVybiBpfSx2W21dPWZ1bmN0aW9uKCl7dmFyIGU9dGhpc3x8dCxuPWFyZ3VtZW50c1swXTtpZihuKXtvJiZvLnRyYW5zZmVyRXZlbnROYW1lJiYobj1vLnRyYW5zZmVyRXZlbnROYW1lKG4pKTt2YXIgaT1VW25dO2lmKGkpe3ZhciBhPWVbaVtkXV0scj1lW2lbY11dO2lmKGEpe3ZhciBsPWEuc2xpY2UoKTtmb3IodT0wO3U8bC5sZW5ndGg7dSsrKXRoaXNbc10uY2FsbCh0aGlzLG4sKHA9bFt1XSkub3JpZ2luYWxEZWxlZ2F0ZT9wLm9yaWdpbmFsRGVsZWdhdGU6cC5jYWxsYmFjayxwLm9wdGlvbnMpfWlmKHIpZm9yKGw9ci5zbGljZSgpLHU9MDt1PGwubGVuZ3RoO3UrKyl7dmFyIHA7dGhpc1tzXS5jYWxsKHRoaXMsbiwocD1sW3VdKS5vcmlnaW5hbERlbGVnYXRlP3Aub3JpZ2luYWxEZWxlZ2F0ZTpwLmNhbGxiYWNrLHAub3B0aW9ucyl9fX1lbHNle2Zvcih2YXIgZj1PYmplY3Qua2V5cyhlKSx1PTA7dTxmLmxlbmd0aDt1Kyspe3ZhciBnPUcuZXhlYyhmW3VdKSxoPWcmJmdbMV07aCYmInJlbW92ZUxpc3RlbmVyIiE9PWgmJnRoaXNbbV0uY2FsbCh0aGlzLGgpfXRoaXNbbV0uY2FsbCh0aGlzLCJyZW1vdmVMaXN0ZW5lciIpfWlmKE0pcmV0dXJuIHRoaXN9LHoodltpXSxrKSx6KHZbc10sUyksUiYmeih2W21dLFIpLEQmJnoodltsXSxEKSwhMH1mb3IodmFyIHY9W10seD0wO3g8ZS5sZW5ndGg7eCsrKXZbeF09TShlW3hdLG8pO3JldHVybiB2fWZ1bmN0aW9uIFgodCxlKXtpZighZSl7dmFyIG49W107Zm9yKHZhciBvIGluIHQpe3ZhciBpPUcuZXhlYyhvKSxhPWkmJmlbMV07aWYoYSYmKCFlfHxhPT09ZSkpe3ZhciByPXRbb107aWYocilmb3IodmFyIHM9MDtzPHIubGVuZ3RoO3MrKyluLnB1c2gocltzXSl9fXJldHVybiBufXZhciBsPVVbZV07bHx8KHEoZSksbD1VW2VdKTt2YXIgcD10W2xbZF1dLG09dFtsW2NdXTtyZXR1cm4gcD9tP3AuY29uY2F0KG0pOnAuc2xpY2UoKTptP20uc2xpY2UoKTpbXX1mdW5jdGlvbiBLKHQsZSl7dmFyIG49dC5FdmVudDtuJiZuLnByb3RvdHlwZSYmZS5wYXRjaE1ldGhvZChuLnByb3RvdHlwZSwic3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uIiwoZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUsbil7ZVtZXT0hMCx0JiZ0LmFwcGx5KGUsbil9fSkpfQovKioKICAgICAgICAgKiBAbGljZW5zZQogICAgICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgICAgICoKICAgICAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAgICAgKi9mdW5jdGlvbiBKKHQsZSxuLG8saSl7dmFyIGE9Wm9uZS5fX3N5bWJvbF9fKG8pO2lmKCFlW2FdKXt2YXIgcj1lW2FdPWVbb107ZVtvXT1mdW5jdGlvbihhLHMsbCl7cmV0dXJuIHMmJnMucHJvdG90eXBlJiZpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciBpPW4rIi4iK28rIjo6IitlLGE9cy5wcm90b3R5cGU7aWYoYS5oYXNPd25Qcm9wZXJ0eShlKSl7dmFyIHI9dC5PYmplY3RHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoYSxlKTtyJiZyLnZhbHVlPyhyLnZhbHVlPXQud3JhcFdpdGhDdXJyZW50Wm9uZShyLnZhbHVlLGkpLHQuX3JlZGVmaW5lUHJvcGVydHkocy5wcm90b3R5cGUsZSxyKSk6YVtlXSYmKGFbZV09dC53cmFwV2l0aEN1cnJlbnRab25lKGFbZV0saSkpfWVsc2UgYVtlXSYmKGFbZV09dC53cmFwV2l0aEN1cnJlbnRab25lKGFbZV0saSkpfSkpLHIuY2FsbChlLGEscyxsKX0sdC5hdHRhY2hPcmlnaW5Ub1BhdGNoZWQoZVtvXSxyKX19Ci8qKgogICAgICAgICAqIEBsaWNlbnNlCiAgICAgICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAgICAgKgogICAgICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICAgICAqL3ZhciBRLCQsdHQsZXQsbnQsb3Q9WyJhYnNvbHV0ZWRldmljZW9yaWVudGF0aW9uIiwiYWZ0ZXJpbnB1dCIsImFmdGVycHJpbnQiLCJhcHBpbnN0YWxsZWQiLCJiZWZvcmVpbnN0YWxscHJvbXB0IiwiYmVmb3JlcHJpbnQiLCJiZWZvcmV1bmxvYWQiLCJkZXZpY2VsaWdodCIsImRldmljZW1vdGlvbiIsImRldmljZW9yaWVudGF0aW9uIiwiZGV2aWNlb3JpZW50YXRpb25hYnNvbHV0ZSIsImRldmljZXByb3hpbWl0eSIsImhhc2hjaGFuZ2UiLCJsYW5ndWFnZWNoYW5nZSIsIm1lc3NhZ2UiLCJtb3piZWZvcmVwYWludCIsIm9mZmxpbmUiLCJvbmxpbmUiLCJwYWludCIsInBhZ2VzaG93IiwicGFnZWhpZGUiLCJwb3BzdGF0ZSIsInJlamVjdGlvbmhhbmRsZWQiLCJzdG9yYWdlIiwidW5oYW5kbGVkcmVqZWN0aW9uIiwidW5sb2FkIiwidXNlcnByb3hpbWl0eSIsInZyZGlzcGxheWNvbm5lY3RlZCIsInZyZGlzcGxheWRpc2Nvbm5lY3RlZCIsInZyZGlzcGxheXByZXNlbnRjaGFuZ2UiXSxpdD1bImVuY3J5cHRlZCIsIndhaXRpbmdmb3JrZXkiLCJtc25lZWRrZXkiLCJtb3ppbnRlcnJ1cHRiZWdpbiIsIm1vemludGVycnVwdGVuZCJdLGF0PVsibG9hZCJdLHJ0PVsiYmx1ciIsImVycm9yIiwiZm9jdXMiLCJsb2FkIiwicmVzaXplIiwic2Nyb2xsIiwibWVzc2FnZWVycm9yIl0sc3Q9WyJib3VuY2UiLCJmaW5pc2giLCJzdGFydCJdLGx0PVsibG9hZHN0YXJ0IiwicHJvZ3Jlc3MiLCJhYm9ydCIsImVycm9yIiwibG9hZCIsInByb2dyZXNzIiwidGltZW91dCIsImxvYWRlbmQiLCJyZWFkeXN0YXRlY2hhbmdlIl0sY3Q9WyJ1cGdyYWRlbmVlZGVkIiwiY29tcGxldGUiLCJhYm9ydCIsInN1Y2Nlc3MiLCJlcnJvciIsImJsb2NrZWQiLCJ2ZXJzaW9uY2hhbmdlIiwiY2xvc2UiXSxkdD1bImNsb3NlIiwiZXJyb3IiLCJvcGVuIiwibWVzc2FnZSJdLHB0PVsiZXJyb3IiLCJtZXNzYWdlIl0sbXQ9WyJhYm9ydCIsImFuaW1hdGlvbmNhbmNlbCIsImFuaW1hdGlvbmVuZCIsImFuaW1hdGlvbml0ZXJhdGlvbiIsImF1eGNsaWNrIiwiYmVmb3JlaW5wdXQiLCJibHVyIiwiY2FuY2VsIiwiY2FucGxheSIsImNhbnBsYXl0aHJvdWdoIiwiY2hhbmdlIiwiY29tcG9zaXRpb25zdGFydCIsImNvbXBvc2l0aW9udXBkYXRlIiwiY29tcG9zaXRpb25lbmQiLCJjdWVjaGFuZ2UiLCJjbGljayIsImNsb3NlIiwiY29udGV4dG1lbnUiLCJjdXJlY2hhbmdlIiwiZGJsY2xpY2siLCJkcmFnIiwiZHJhZ2VuZCIsImRyYWdlbnRlciIsImRyYWdleGl0IiwiZHJhZ2xlYXZlIiwiZHJhZ292ZXIiLCJkcm9wIiwiZHVyYXRpb25jaGFuZ2UiLCJlbXB0aWVkIiwiZW5kZWQiLCJlcnJvciIsImZvY3VzIiwiZm9jdXNpbiIsImZvY3Vzb3V0IiwiZ290cG9pbnRlcmNhcHR1cmUiLCJpbnB1dCIsImludmFsaWQiLCJrZXlkb3duIiwia2V5cHJlc3MiLCJrZXl1cCIsImxvYWQiLCJsb2Fkc3RhcnQiLCJsb2FkZWRkYXRhIiwibG9hZGVkbWV0YWRhdGEiLCJsb3N0cG9pbnRlcmNhcHR1cmUiLCJtb3VzZWRvd24iLCJtb3VzZWVudGVyIiwibW91c2VsZWF2ZSIsIm1vdXNlbW92ZSIsIm1vdXNlb3V0IiwibW91c2VvdmVyIiwibW91c2V1cCIsIm1vdXNld2hlZWwiLCJvcmllbnRhdGlvbmNoYW5nZSIsInBhdXNlIiwicGxheSIsInBsYXlpbmciLCJwb2ludGVyY2FuY2VsIiwicG9pbnRlcmRvd24iLCJwb2ludGVyZW50ZXIiLCJwb2ludGVybGVhdmUiLCJwb2ludGVybG9ja2NoYW5nZSIsIm1venBvaW50ZXJsb2NrY2hhbmdlIiwid2Via2l0cG9pbnRlcmxvY2tlcmNoYW5nZSIsInBvaW50ZXJsb2NrZXJyb3IiLCJtb3pwb2ludGVybG9ja2Vycm9yIiwid2Via2l0cG9pbnRlcmxvY2tlcnJvciIsInBvaW50ZXJtb3ZlIiwicG9pbnRvdXQiLCJwb2ludGVyb3ZlciIsInBvaW50ZXJ1cCIsInByb2dyZXNzIiwicmF0ZWNoYW5nZSIsInJlc2V0IiwicmVzaXplIiwic2Nyb2xsIiwic2Vla2VkIiwic2Vla2luZyIsInNlbGVjdCIsInNlbGVjdGlvbmNoYW5nZSIsInNlbGVjdHN0YXJ0Iiwic2hvdyIsInNvcnQiLCJzdGFsbGVkIiwic3VibWl0Iiwic3VzcGVuZCIsInRpbWV1cGRhdGUiLCJ2b2x1bWVjaGFuZ2UiLCJ0b3VjaGNhbmNlbCIsInRvdWNobW92ZSIsInRvdWNoc3RhcnQiLCJ0b3VjaGVuZCIsInRyYW5zaXRpb25jYW5jZWwiLCJ0cmFuc2l0aW9uZW5kIiwid2FpdGluZyIsIndoZWVsIl0uY29uY2F0KFsid2ViZ2xjb250ZXh0cmVzdG9yZWQiLCJ3ZWJnbGNvbnRleHRsb3N0Iiwid2ViZ2xjb250ZXh0Y3JlYXRpb25lcnJvciJdLFsiYXV0b2NvbXBsZXRlIiwiYXV0b2NvbXBsZXRlZXJyb3IiXSxbInRvZ2dsZSJdLFsiYWZ0ZXJzY3JpcHRleGVjdXRlIiwiYmVmb3Jlc2NyaXB0ZXhlY3V0ZSIsIkRPTUNvbnRlbnRMb2FkZWQiLCJmcmVlemUiLCJmdWxsc2NyZWVuY2hhbmdlIiwibW96ZnVsbHNjcmVlbmNoYW5nZSIsIndlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UiLCJtc2Z1bGxzY3JlZW5jaGFuZ2UiLCJmdWxsc2NyZWVuZXJyb3IiLCJtb3pmdWxsc2NyZWVuZXJyb3IiLCJ3ZWJraXRmdWxsc2NyZWVuZXJyb3IiLCJtc2Z1bGxzY3JlZW5lcnJvciIsInJlYWR5c3RhdGVjaGFuZ2UiLCJ2aXNpYmlsaXR5Y2hhbmdlIiwicmVzdW1lIl0sb3QsWyJiZWZvcmVjb3B5IiwiYmVmb3JlY3V0IiwiYmVmb3JlcGFzdGUiLCJjb3B5IiwiY3V0IiwicGFzdGUiLCJkcmFnc3RhcnQiLCJsb2FkZW5kIiwiYW5pbWF0aW9uc3RhcnQiLCJzZWFyY2giLCJ0cmFuc2l0aW9ucnVuIiwidHJhbnNpdGlvbnN0YXJ0Iiwid2Via2l0YW5pbWF0aW9uZW5kIiwid2Via2l0YW5pbWF0aW9uaXRlcmF0aW9uIiwid2Via2l0YW5pbWF0aW9uc3RhcnQiLCJ3ZWJraXR0cmFuc2l0aW9uZW5kIl0sWyJhY3RpdmF0ZSIsImFmdGVydXBkYXRlIiwiYXJpYXJlcXVlc3QiLCJiZWZvcmVhY3RpdmF0ZSIsImJlZm9yZWRlYWN0aXZhdGUiLCJiZWZvcmVlZGl0Zm9jdXMiLCJiZWZvcmV1cGRhdGUiLCJjZWxsY2hhbmdlIiwiY29udHJvbHNlbGVjdCIsImRhdGFhdmFpbGFibGUiLCJkYXRhc2V0Y2hhbmdlZCIsImRhdGFzZXRjb21wbGV0ZSIsImVycm9ydXBkYXRlIiwiZmlsdGVyY2hhbmdlIiwibGF5b3V0Y29tcGxldGUiLCJsb3NlY2FwdHVyZSIsIm1vdmUiLCJtb3ZlZW5kIiwibW92ZXN0YXJ0IiwicHJvcGVydHljaGFuZ2UiLCJyZXNpemVlbmQiLCJyZXNpemVzdGFydCIsInJvd2VudGVyIiwicm93ZXhpdCIsInJvd3NkZWxldGUiLCJyb3dzaW5zZXJ0ZWQiLCJjb21tYW5kIiwiY29tcGFzc25lZWRzY2FsaWJyYXRpb24iLCJkZWFjdGl2YXRlIiwiaGVscCIsIm1zY29udGVudHpvb20iLCJtc21hbmlwdWxhdGlvbnN0YXRlY2hhbmdlZCIsIm1zZ2VzdHVyZWNoYW5nZSIsIm1zZ2VzdHVyZWRvdWJsZXRhcCIsIm1zZ2VzdHVyZWVuZCIsIm1zZ2VzdHVyZWhvbGQiLCJtc2dlc3R1cmVzdGFydCIsIm1zZ2VzdHVyZXRhcCIsIm1zZ290cG9pbnRlcmNhcHR1cmUiLCJtc2luZXJ0aWFzdGFydCIsIm1zbG9zdHBvaW50ZXJjYXB0dXJlIiwibXNwb2ludGVyY2FuY2VsIiwibXNwb2ludGVyZG93biIsIm1zcG9pbnRlcmVudGVyIiwibXNwb2ludGVyaG92ZXIiLCJtc3BvaW50ZXJsZWF2ZSIsIm1zcG9pbnRlcm1vdmUiLCJtc3BvaW50ZXJvdXQiLCJtc3BvaW50ZXJvdmVyIiwibXNwb2ludGVydXAiLCJwb2ludGVyb3V0IiwibXNzaXRlbW9kZWp1bXBsaXN0aXRlbXJlbW92ZWQiLCJtc3RodW1ibmFpbGNsaWNrIiwic3RvcCIsInN0b3JhZ2Vjb21taXQiXSk7ZnVuY3Rpb24gZnQodCxlLG4pe2lmKCFufHwwPT09bi5sZW5ndGgpcmV0dXJuIGU7dmFyIG89bi5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBlLnRhcmdldD09PXR9KSk7aWYoIW98fDA9PT1vLmxlbmd0aClyZXR1cm4gZTt2YXIgaT1vWzBdLmlnbm9yZVByb3BlcnRpZXM7cmV0dXJuIGUuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4tMT09PWkuaW5kZXhPZih0KX0pKX1mdW5jdGlvbiB1dCh0LGUsbixvKXt0JiZSKHQsZnQodCxlLG4pLG8pfWZ1bmN0aW9uIGd0KHQsZSl7aWYoKCFPfHx3KSYmIVpvbmVbdC5zeW1ib2woInBhdGNoRXZlbnRzIildKXt2YXIgbz0idW5kZWZpbmVkIiE9dHlwZW9mIFdlYlNvY2tldCxpPWUuX19ab25lX2lnbm9yZV9vbl9wcm9wZXJ0aWVzO2lmKFApe3ZhciBhPXdpbmRvdyxyPUYoKT9be3RhcmdldDphLGlnbm9yZVByb3BlcnRpZXM6WyJlcnJvciJdfV06W107dXQoYSxtdC5jb25jYXQoWyJtZXNzYWdlZXJyb3IiXSksaT9pLmNvbmNhdChyKTppLG4oYSkpLHV0KERvY3VtZW50LnByb3RvdHlwZSxtdCxpKSx2b2lkIDAhPT1hLlNWR0VsZW1lbnQmJnV0KGEuU1ZHRWxlbWVudC5wcm90b3R5cGUsbXQsaSksdXQoRWxlbWVudC5wcm90b3R5cGUsbXQsaSksdXQoSFRNTEVsZW1lbnQucHJvdG90eXBlLG10LGkpLHV0KEhUTUxNZWRpYUVsZW1lbnQucHJvdG90eXBlLGl0LGkpLHV0KEhUTUxGcmFtZVNldEVsZW1lbnQucHJvdG90eXBlLG90LmNvbmNhdChydCksaSksdXQoSFRNTEJvZHlFbGVtZW50LnByb3RvdHlwZSxvdC5jb25jYXQocnQpLGkpLHV0KEhUTUxGcmFtZUVsZW1lbnQucHJvdG90eXBlLGF0LGkpLHV0KEhUTUxJRnJhbWVFbGVtZW50LnByb3RvdHlwZSxhdCxpKTt2YXIgcz1hLkhUTUxNYXJxdWVlRWxlbWVudDtzJiZ1dChzLnByb3RvdHlwZSxzdCxpKTt2YXIgbD1hLldvcmtlcjtsJiZ1dChsLnByb3RvdHlwZSxwdCxpKX12YXIgYz1lLlhNTEh0dHBSZXF1ZXN0O2MmJnV0KGMucHJvdG90eXBlLGx0LGkpO3ZhciBkPWUuWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldDtkJiZ1dChkJiZkLnByb3RvdHlwZSxsdCxpKSwidW5kZWZpbmVkIiE9dHlwZW9mIElEQkluZGV4JiYodXQoSURCSW5kZXgucHJvdG90eXBlLGN0LGkpLHV0KElEQlJlcXVlc3QucHJvdG90eXBlLGN0LGkpLHV0KElEQk9wZW5EQlJlcXVlc3QucHJvdG90eXBlLGN0LGkpLHV0KElEQkRhdGFiYXNlLnByb3RvdHlwZSxjdCxpKSx1dChJREJUcmFuc2FjdGlvbi5wcm90b3R5cGUsY3QsaSksdXQoSURCQ3Vyc29yLnByb3RvdHlwZSxjdCxpKSksbyYmdXQoV2ViU29ja2V0LnByb3RvdHlwZSxkdCxpKX19Ci8qKgogICAgICAgICAqIEBsaWNlbnNlCiAgICAgICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAgICAgKgogICAgICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICAgICAqL2Z1bmN0aW9uIGh0KCl7UT1ab25lLl9fc3ltYm9sX18sJD1PYmplY3RbUSgiZGVmaW5lUHJvcGVydHkiKV09T2JqZWN0LmRlZmluZVByb3BlcnR5LHR0PU9iamVjdFtRKCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiKV09T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixldD1PYmplY3QuY3JlYXRlLG50PVEoInVuY29uZmlndXJhYmxlcyIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eT1mdW5jdGlvbih0LGUsbil7aWYoeXQodCxlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYXNzaWduIHRvIHJlYWQgb25seSBwcm9wZXJ0eSAnIitlKyInIG9mICIrdCk7dmFyIG89bi5jb25maWd1cmFibGU7cmV0dXJuInByb3RvdHlwZSIhPT1lJiYobj1fdCh0LGUsbikpLEN0KHQsZSxuLG8pfSxPYmplY3QuZGVmaW5lUHJvcGVydGllcz1mdW5jdGlvbih0LGUpe3JldHVybiBPYmplY3Qua2V5cyhlKS5mb3JFYWNoKChmdW5jdGlvbihuKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxuLGVbbl0pfSkpLHR9LE9iamVjdC5jcmVhdGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4ib2JqZWN0IiE9dHlwZW9mIGV8fE9iamVjdC5pc0Zyb3plbihlKXx8T2JqZWN0LmtleXMoZSkuZm9yRWFjaCgoZnVuY3Rpb24obil7ZVtuXT1fdCh0LG4sZVtuXSl9KSksZXQodCxlKX0sT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcj1mdW5jdGlvbih0LGUpe3ZhciBuPXR0KHQsZSk7cmV0dXJuIG4mJnl0KHQsZSkmJihuLmNvbmZpZ3VyYWJsZT0hMSksbn19ZnVuY3Rpb24gYnQodCxlLG4pe3ZhciBvPW4uY29uZmlndXJhYmxlO3JldHVybiBDdCh0LGUsbj1fdCh0LGUsbiksbyl9ZnVuY3Rpb24geXQodCxlKXtyZXR1cm4gdCYmdFtudF0mJnRbbnRdW2VdfWZ1bmN0aW9uIF90KHQsZSxuKXtyZXR1cm4gT2JqZWN0LmlzRnJvemVuKG4pfHwobi5jb25maWd1cmFibGU9ITApLG4uY29uZmlndXJhYmxlfHwodFtudF18fE9iamVjdC5pc0Zyb3plbih0KXx8JCh0LG50LHt3cml0YWJsZTohMCx2YWx1ZTp7fX0pLHRbbnRdJiYodFtudF1bZV09ITApKSxufWZ1bmN0aW9uIEN0KHQsZSxuLG8pe3RyeXtyZXR1cm4gJCh0LGUsbil9Y2F0Y2gocil7aWYoIW4uY29uZmlndXJhYmxlKXRocm93IHI7dm9pZCAwPT09bz9kZWxldGUgbi5jb25maWd1cmFibGU6bi5jb25maWd1cmFibGU9bzt0cnl7cmV0dXJuICQodCxlLG4pfWNhdGNoKG8pe3ZhciBpPSExO2lmKCJjcmVhdGVkQ2FsbGJhY2siIT09ZSYmImF0dGFjaGVkQ2FsbGJhY2siIT09ZSYmImRldGFjaGVkQ2FsbGJhY2siIT09ZSYmImF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayIhPT1lfHwoaT0hMCksIWkpdGhyb3cgbzt2YXIgYT1udWxsO3RyeXthPUpTT04uc3RyaW5naWZ5KG4pfWNhdGNoKHQpe2E9bi50b1N0cmluZygpfWNvbnNvbGUubG9nKCJBdHRlbXB0aW5nIHRvIGNvbmZpZ3VyZSAnIitlKyInIHdpdGggZGVzY3JpcHRvciAnIithKyInIG9uIG9iamVjdCAnIit0KyInIGFuZCBnb3QgZXJyb3IsIGdpdmluZyB1cDogIitvKX19fQovKioKICAgICAgICAgKiBAbGljZW5zZQogICAgICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgICAgICoKICAgICAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAgICAgKi9mdW5jdGlvbiBNdCh0LGUpe3ZhciBuPWUuZ2V0R2xvYmFsT2JqZWN0cygpLG89bi5ldmVudE5hbWVzLGk9bi5nbG9iYWxTb3VyY2VzLGE9bi56b25lU3ltYm9sRXZlbnROYW1lcyxyPW4uVFJVRV9TVFIscz1uLkZBTFNFX1NUUixsPW4uWk9ORV9TWU1CT0xfUFJFRklYLGM9IkFuY2hvcixBcmVhLEF1ZGlvLEJSLEJhc2UsQmFzZUZvbnQsQm9keSxCdXR0b24sQ2FudmFzLENvbnRlbnQsRExpc3QsRGlyZWN0b3J5LERpdixFbWJlZCxGaWVsZFNldCxGb250LEZvcm0sRnJhbWUsRnJhbWVTZXQsSFIsSGVhZCxIZWFkaW5nLEh0bWwsSUZyYW1lLEltYWdlLElucHV0LEtleWdlbixMSSxMYWJlbCxMZWdlbmQsTGluayxNYXAsTWFycXVlZSxNZWRpYSxNZW51LE1ldGEsTWV0ZXIsTW9kLE9MaXN0LE9iamVjdCxPcHRHcm91cCxPcHRpb24sT3V0cHV0LFBhcmFncmFwaCxQcmUsUHJvZ3Jlc3MsUXVvdGUsU2NyaXB0LFNlbGVjdCxTb3VyY2UsU3BhbixTdHlsZSxUYWJsZUNhcHRpb24sVGFibGVDZWxsLFRhYmxlQ29sLFRhYmxlLFRhYmxlUm93LFRhYmxlU2VjdGlvbixUZXh0QXJlYSxUaXRsZSxUcmFjayxVTGlzdCxVbmtub3duLFZpZGVvIixkPSJBcHBsaWNhdGlvbkNhY2hlLEV2ZW50U291cmNlLEZpbGVSZWFkZXIsSW5wdXRNZXRob2RDb250ZXh0LE1lZGlhQ29udHJvbGxlcixNZXNzYWdlUG9ydCxOb2RlLFBlcmZvcm1hbmNlLFNWR0VsZW1lbnRJbnN0YW5jZSxTaGFyZWRXb3JrZXIsVGV4dFRyYWNrLFRleHRUcmFja0N1ZSxUZXh0VHJhY2tMaXN0LFdlYktpdE5hbWVkRmxvdyxXaW5kb3csV29ya2VyLFdvcmtlckdsb2JhbFNjb3BlLFhNTEh0dHBSZXF1ZXN0LFhNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQsWE1MSHR0cFJlcXVlc3RVcGxvYWQsSURCUmVxdWVzdCxJREJPcGVuREJSZXF1ZXN0LElEQkRhdGFiYXNlLElEQlRyYW5zYWN0aW9uLElEQkN1cnNvcixEQkluZGV4LFdlYlNvY2tldCIuc3BsaXQoIiwiKSxwPSJFdmVudFRhcmdldCIsbT1bXSxmPXQud3RmLHU9Yy5zcGxpdCgiLCIpO2Y/bT11Lm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIkhUTUwiK3QrIkVsZW1lbnQifSkpLmNvbmNhdChkKTp0W3BdP20ucHVzaChwKTptPWQ7Zm9yKHZhciBnPXQuX19ab25lX2Rpc2FibGVfSUVfY2hlY2t8fCExLGg9dC5fX1pvbmVfZW5hYmxlX2Nyb3NzX2NvbnRleHRfY2hlY2t8fCExLGI9ZS5pc0lFT3JFZGdlKCkseT0iLmFkZEV2ZW50TGlzdGVuZXI6IixfPSJbb2JqZWN0IEZ1bmN0aW9uV3JhcHBlcl0iLEM9ImZ1bmN0aW9uIF9fQlJPV1NFUlRPT0xTX0NPTlNPTEVfU0FGRUZVTkMoKSB7IFtuYXRpdmUgY29kZV0gfSIsTT17TVNQb2ludGVyQ2FuY2VsOiJwb2ludGVyY2FuY2VsIixNU1BvaW50ZXJEb3duOiJwb2ludGVyZG93biIsTVNQb2ludGVyRW50ZXI6InBvaW50ZXJlbnRlciIsTVNQb2ludGVySG92ZXI6InBvaW50ZXJob3ZlciIsTVNQb2ludGVyTGVhdmU6InBvaW50ZXJsZWF2ZSIsTVNQb2ludGVyTW92ZToicG9pbnRlcm1vdmUiLE1TUG9pbnRlck91dDoicG9pbnRlcm91dCIsTVNQb2ludGVyT3ZlcjoicG9pbnRlcm92ZXIiLE1TUG9pbnRlclVwOiJwb2ludGVydXAifSx2PTA7djxvLmxlbmd0aDt2Kyspe3ZhciB4PWwrKChTPW9bdl0pK3MpLE89bCsoUytyKTthW1NdPXt9LGFbU11bc109eCxhW1NdW3JdPU99Zm9yKHY9MDt2PHUubGVuZ3RoO3YrKylmb3IodmFyIFA9dVt2XSx3PWlbUF09e30saz0wO2s8by5sZW5ndGg7aysrKXt2YXIgUzt3W1M9b1trXV09UCt5K1N9dmFyIEQ9ZnVuY3Rpb24odCxlLG4sbyl7aWYoIWcmJmIpe2lmKGgpdHJ5e3ZhciBpO2lmKChpPWUudG9TdHJpbmcoKSk9PT1ffHxpPT1DKXJldHVybiB0LmFwcGx5KG4sbyksITF9Y2F0Y2goZSl7cmV0dXJuIHQuYXBwbHkobixvKSwhMX1lbHNlIGlmKChpPWUudG9TdHJpbmcoKSk9PT1ffHxpPT1DKXJldHVybiB0LmFwcGx5KG4sbyksITF9ZWxzZSBpZihoKXRyeXtlLnRvU3RyaW5nKCl9Y2F0Y2goZSl7cmV0dXJuIHQuYXBwbHkobixvKSwhMX1yZXR1cm4hMH0sUj1bXTtmb3Iodj0wO3Y8bS5sZW5ndGg7disrKXt2YXIgRT10W21bdl1dO1IucHVzaChFJiZFLnByb3RvdHlwZSl9cmV0dXJuIGUucGF0Y2hFdmVudFRhcmdldCh0LFIse3ZoOkQsdHJhbnNmZXJFdmVudE5hbWU6ZnVuY3Rpb24odCl7cmV0dXJuIE1bdF18fHR9fSksWm9uZVtlLnN5bWJvbCgicGF0Y2hFdmVudFRhcmdldCIpXT0hIXRbcF0sITB9Ci8qKgogICAgICAgICAqIEBsaWNlbnNlCiAgICAgICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAgICAgKgogICAgICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICAgICAqL2Z1bmN0aW9uIHZ0KHQsZSl7dmFyIG49dC5nZXRHbG9iYWxPYmplY3RzKCksbz1uLkFERF9FVkVOVF9MSVNURU5FUl9TVFIsaT1uLlJFTU9WRV9FVkVOVF9MSVNURU5FUl9TVFIsYT1lLldlYlNvY2tldDtlLkV2ZW50VGFyZ2V0fHx0LnBhdGNoRXZlbnRUYXJnZXQoZSxbYS5wcm90b3R5cGVdKSxlLldlYlNvY2tldD1mdW5jdGlvbihlLG4pe3ZhciByLHMsbD1hcmd1bWVudHMubGVuZ3RoPjE/bmV3IGEoZSxuKTpuZXcgYShlKSxjPXQuT2JqZWN0R2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGwsIm9ubWVzc2FnZSIpO3JldHVybiBjJiYhMT09PWMuY29uZmlndXJhYmxlPyhyPXQuT2JqZWN0Q3JlYXRlKGwpLHM9bCxbbyxpLCJzZW5kIiwiY2xvc2UiXS5mb3JFYWNoKChmdW5jdGlvbihlKXtyW2VdPWZ1bmN0aW9uKCl7dmFyIG49dC5BcnJheVNsaWNlLmNhbGwoYXJndW1lbnRzKTtpZihlPT09b3x8ZT09PWkpe3ZhciBhPW4ubGVuZ3RoPjA/blswXTp2b2lkIDA7aWYoYSl7dmFyIHM9Wm9uZS5fX3N5bWJvbF9fKCJPTl9QUk9QRVJUWSIrYSk7bFtzXT1yW3NdfX1yZXR1cm4gbFtlXS5hcHBseShsLG4pfX0pKSk6cj1sLHQucGF0Y2hPblByb3BlcnRpZXMocixbImNsb3NlIiwiZXJyb3IiLCJtZXNzYWdlIiwib3BlbiJdLHMpLHJ9O3ZhciByPWUuV2ViU29ja2V0O2Zvcih2YXIgcyBpbiBhKXJbc109YVtzXX0KLyoqCiAgICAgICAgICogQGxpY2Vuc2UKICAgICAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICAgICAqCiAgICAgICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgICAgICovZnVuY3Rpb24geHQodCxlKXt2YXIgbj10LmdldEdsb2JhbE9iamVjdHMoKTtpZigoIW4uaXNOb2RlfHxuLmlzTWl4KSYmIU90KHQsZSkpe3ZhciBvPSJ1bmRlZmluZWQiIT10eXBlb2YgV2ViU29ja2V0O1B0KHQpLHQucGF0Y2hDbGFzcygiWE1MSHR0cFJlcXVlc3QiKSxvJiZ2dCh0LGUpLFpvbmVbdC5zeW1ib2woInBhdGNoRXZlbnRzIildPSEwfX1mdW5jdGlvbiBPdCh0LGUpe3ZhciBuPXQuZ2V0R2xvYmFsT2JqZWN0cygpO2lmKChuLmlzQnJvd3Nlcnx8bi5pc01peCkmJiF0Lk9iamVjdEdldE93blByb3BlcnR5RGVzY3JpcHRvcihIVE1MRWxlbWVudC5wcm90b3R5cGUsIm9uY2xpY2siKSYmInVuZGVmaW5lZCIhPXR5cGVvZiBFbGVtZW50KXt2YXIgbz10Lk9iamVjdEdldE93blByb3BlcnR5RGVzY3JpcHRvcihFbGVtZW50LnByb3RvdHlwZSwib25jbGljayIpO2lmKG8mJiFvLmNvbmZpZ3VyYWJsZSlyZXR1cm4hMTtpZihvKXt0Lk9iamVjdERlZmluZVByb3BlcnR5KEVsZW1lbnQucHJvdG90eXBlLCJvbmNsaWNrIix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuITB9fSk7dmFyIGk9ISFkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKS5vbmNsaWNrO3JldHVybiB0Lk9iamVjdERlZmluZVByb3BlcnR5KEVsZW1lbnQucHJvdG90eXBlLCJvbmNsaWNrIixvKSxpfX12YXIgYT1lLlhNTEh0dHBSZXF1ZXN0O2lmKCFhKXJldHVybiExO3ZhciByPSJvbnJlYWR5c3RhdGVjaGFuZ2UiLHM9YS5wcm90b3R5cGUsbD10Lk9iamVjdEdldE93blByb3BlcnR5RGVzY3JpcHRvcihzLHIpO2lmKGwpcmV0dXJuIHQuT2JqZWN0RGVmaW5lUHJvcGVydHkocyxyLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4hMH19KSxpPSEhKGQ9bmV3IGEpLm9ucmVhZHlzdGF0ZWNoYW5nZSx0Lk9iamVjdERlZmluZVByb3BlcnR5KHMscixsfHx7fSksaTt2YXIgYz10LnN5bWJvbCgiZmFrZSIpO3QuT2JqZWN0RGVmaW5lUHJvcGVydHkocyxyLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc1tjXX0sc2V0OmZ1bmN0aW9uKHQpe3RoaXNbY109dH19KTt2YXIgZCxwPWZ1bmN0aW9uKCl7fTtyZXR1cm4oZD1uZXcgYSkub25yZWFkeXN0YXRlY2hhbmdlPXAsaT1kW2NdPT09cCxkLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsLGl9ZnVuY3Rpb24gUHQodCl7Zm9yKHZhciBlPXQuZ2V0R2xvYmFsT2JqZWN0cygpLmV2ZW50TmFtZXMsbj10LnN5bWJvbCgidW5ib3VuZCIpLG89ZnVuY3Rpb24obyl7dmFyIGk9ZVtvXSxhPSJvbiIraTtzZWxmLmFkZEV2ZW50TGlzdGVuZXIoaSwoZnVuY3Rpb24oZSl7dmFyIG8saSxyPWUudGFyZ2V0O2ZvcihpPXI/ci5jb25zdHJ1Y3Rvci5uYW1lKyIuIithOiJ1bmtub3duLiIrYTtyOylyW2FdJiYhclthXVtuXSYmKChvPXQud3JhcFdpdGhDdXJyZW50Wm9uZShyW2FdLGkpKVtuXT1yW2FdLHJbYV09bykscj1yLnBhcmVudEVsZW1lbnR9KSwhMCl9LGk9MDtpPGUubGVuZ3RoO2krKylvKGkpfQovKioKICAgICAgICAgKiBAbGljZW5zZQogICAgICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgICAgICoKICAgICAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAgICAgKi9mdW5jdGlvbiB3dCh0LGUpe3ZhciBuPWUuZ2V0R2xvYmFsT2JqZWN0cygpOyhuLmlzQnJvd3Nlcnx8bi5pc01peCkmJiJyZWdpc3RlckVsZW1lbnQiaW4gdC5kb2N1bWVudCYmZS5wYXRjaENhbGxiYWNrcyhlLGRvY3VtZW50LCJEb2N1bWVudCIsInJlZ2lzdGVyRWxlbWVudCIsWyJjcmVhdGVkQ2FsbGJhY2siLCJhdHRhY2hlZENhbGxiYWNrIiwiZGV0YWNoZWRDYWxsYmFjayIsImF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayJdKX0KLyoqCiAgICAgICAgICogQGxpY2Vuc2UKICAgICAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICAgICAqCiAgICAgICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgICAgICovWm9uZS5fX2xvYWRfcGF0Y2goInV0aWwiLChmdW5jdGlvbihuLHMsbCl7bC5wYXRjaE9uUHJvcGVydGllcz1SLGwucGF0Y2hNZXRob2Q9VCxsLmJpbmRBcmd1bWVudHM9QyxsLnBhdGNoTWFjcm9UYXNrPU47dmFyIGY9cy5fX3N5bWJvbF9fKCJCTEFDS19MSVNURURfRVZFTlRTIiksdT1zLl9fc3ltYm9sX18oIlVOUEFUQ0hFRF9FVkVOVFMiKTtuW3VdJiYobltmXT1uW3VdKSxuW2ZdJiYoc1tmXT1zW3VdPW5bZl0pLGwucGF0Y2hFdmVudFByb3RvdHlwZT1LLGwucGF0Y2hFdmVudFRhcmdldD1aLGwuaXNJRU9yRWRnZT1MLGwuT2JqZWN0RGVmaW5lUHJvcGVydHk9ZSxsLk9iamVjdEdldE93blByb3BlcnR5RGVzY3JpcHRvcj10LGwuT2JqZWN0Q3JlYXRlPW8sbC5BcnJheVNsaWNlPWksbC5wYXRjaENsYXNzPUEsbC53cmFwV2l0aEN1cnJlbnRab25lPW0sbC5maWx0ZXJQcm9wZXJ0aWVzPWZ0LGwuYXR0YWNoT3JpZ2luVG9QYXRjaGVkPXosbC5fcmVkZWZpbmVQcm9wZXJ0eT1PYmplY3QuZGVmaW5lUHJvcGVydHksbC5wYXRjaENhbGxiYWNrcz1KLGwuZ2V0R2xvYmFsT2JqZWN0cz1mdW5jdGlvbigpe3JldHVybntnbG9iYWxTb3VyY2VzOlcsem9uZVN5bWJvbEV2ZW50TmFtZXM6VSxldmVudE5hbWVzOm10LGlzQnJvd3NlcjpQLGlzTWl4OncsaXNOb2RlOk8sVFJVRV9TVFI6YyxGQUxTRV9TVFI6ZCxaT05FX1NZTUJPTF9QUkVGSVg6cCxBRERfRVZFTlRfTElTVEVORVJfU1RSOmEsUkVNT1ZFX0VWRU5UX0xJU1RFTkVSX1NUUjpyfX19KSksKGZ1bmN0aW9uKHQpe3ZhciBlPXQuX19ab25lX3N5bWJvbF9wcmVmaXh8fCJfX3pvbmVfc3ltYm9sX18iO2Z1bmN0aW9uIG4odCl7cmV0dXJuIGUrdH10W24oImxlZ2FjeVBhdGNoIildPWZ1bmN0aW9uKCl7dmFyIGU9dC5ab25lO2UuX19sb2FkX3BhdGNoKCJkZWZpbmVQcm9wZXJ0eSIsKGZ1bmN0aW9uKHQsZSxuKXtuLl9yZWRlZmluZVByb3BlcnR5PWJ0LGh0KCl9KSksZS5fX2xvYWRfcGF0Y2goInJlZ2lzdGVyRWxlbWVudCIsKGZ1bmN0aW9uKHQsZSxuKXt3dCh0LG4pfSkpLGUuX19sb2FkX3BhdGNoKCJFdmVudFRhcmdldExlZ2FjeSIsKGZ1bmN0aW9uKHQsZSxuKXtNdCh0LG4pLHh0KG4sdCl9KSl9fSkoInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93OnZvaWQgMCE9PV9PP19POiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOnt9KTsKLyoqCiAgICAgICAgICogQGxpY2Vuc2UKICAgICAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICAgICAqCiAgICAgICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgICAgICovCnZhciBrdD11KCJ6b25lVGFzayIpO2Z1bmN0aW9uIFN0KHQsZSxuLG8pe3ZhciBpPW51bGwsYT1udWxsO24rPW87dmFyIHI9e307ZnVuY3Rpb24gcyhlKXt2YXIgbj1lLmRhdGE7cmV0dXJuIG4uYXJnc1swXT1mdW5jdGlvbigpe3JldHVybiBlLmludm9rZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LG4uaGFuZGxlSWQ9aS5hcHBseSh0LG4uYXJncyksZX1mdW5jdGlvbiBsKGUpe3JldHVybiBhLmNhbGwodCxlLmRhdGEuaGFuZGxlSWQpfWk9VCh0LGUrPW8sKGZ1bmN0aW9uKG4pe3JldHVybiBmdW5jdGlvbihpLGEpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBhWzBdKXt2YXIgYz17aXNQZXJpb2RpYzoiSW50ZXJ2YWwiPT09byxkZWxheToiVGltZW91dCI9PT1vfHwiSW50ZXJ2YWwiPT09bz9hWzFdfHwwOnZvaWQgMCxhcmdzOmF9LGQ9YVswXTthWzBdPWZ1bmN0aW9uIHQoKXt0cnl7cmV0dXJuIGQuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZpbmFsbHl7Yy5pc1BlcmlvZGljfHwoIm51bWJlciI9PXR5cGVvZiBjLmhhbmRsZUlkP2RlbGV0ZSByW2MuaGFuZGxlSWRdOmMuaGFuZGxlSWQmJihjLmhhbmRsZUlkW2t0XT1udWxsKSl9fTt2YXIgcD1mKGUsYVswXSxjLHMsbCk7aWYoIXApcmV0dXJuIHA7dmFyIG09cC5kYXRhLmhhbmRsZUlkO3JldHVybiJudW1iZXIiPT10eXBlb2YgbT9yW21dPXA6bSYmKG1ba3RdPXApLG0mJm0ucmVmJiZtLnVucmVmJiYiZnVuY3Rpb24iPT10eXBlb2YgbS5yZWYmJiJmdW5jdGlvbiI9PXR5cGVvZiBtLnVucmVmJiYocC5yZWY9bS5yZWYuYmluZChtKSxwLnVucmVmPW0udW5yZWYuYmluZChtKSksIm51bWJlciI9PXR5cGVvZiBtfHxtP206cH1yZXR1cm4gbi5hcHBseSh0LGEpfX0pKSxhPVQodCxuLChmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24obixvKXt2YXIgaSxhPW9bMF07Im51bWJlciI9PXR5cGVvZiBhP2k9clthXTooaT1hJiZhW2t0XSl8fChpPWEpLGkmJiJzdHJpbmciPT10eXBlb2YgaS50eXBlPyJub3RTY2hlZHVsZWQiIT09aS5zdGF0ZSYmKGkuY2FuY2VsRm4mJmkuZGF0YS5pc1BlcmlvZGljfHwwPT09aS5ydW5Db3VudCkmJigibnVtYmVyIj09dHlwZW9mIGE/ZGVsZXRlIHJbYV06YSYmKGFba3RdPW51bGwpLGkuem9uZS5jYW5jZWxUYXNrKGkpKTplLmFwcGx5KHQsbyl9fSkpfQovKioKICAgICAgICAgKiBAbGljZW5zZQogICAgICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgICAgICoKICAgICAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAgICAgKi9mdW5jdGlvbiBEdCh0LGUpe3ZhciBuPWUuZ2V0R2xvYmFsT2JqZWN0cygpOyhuLmlzQnJvd3Nlcnx8bi5pc01peCkmJnQuY3VzdG9tRWxlbWVudHMmJiJjdXN0b21FbGVtZW50cyJpbiB0JiZlLnBhdGNoQ2FsbGJhY2tzKGUsdC5jdXN0b21FbGVtZW50cywiY3VzdG9tRWxlbWVudHMiLCJkZWZpbmUiLFsiY29ubmVjdGVkQ2FsbGJhY2siLCJkaXNjb25uZWN0ZWRDYWxsYmFjayIsImFkb3B0ZWRDYWxsYmFjayIsImF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayJdKX0KLyoqCiAgICAgICAgICogQGxpY2Vuc2UKICAgICAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICAgICAqCiAgICAgICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgICAgICovZnVuY3Rpb24gUnQodCxlKXtpZighWm9uZVtlLnN5bWJvbCgicGF0Y2hFdmVudFRhcmdldCIpXSl7Zm9yKHZhciBuPWUuZ2V0R2xvYmFsT2JqZWN0cygpLG89bi5ldmVudE5hbWVzLGk9bi56b25lU3ltYm9sRXZlbnROYW1lcyxhPW4uVFJVRV9TVFIscj1uLkZBTFNFX1NUUixzPW4uWk9ORV9TWU1CT0xfUFJFRklYLGw9MDtsPG8ubGVuZ3RoO2wrKyl7dmFyIGM9b1tsXSxkPXMrKGMrcikscD1zKyhjK2EpO2lbY109e30saVtjXVtyXT1kLGlbY11bYV09cH12YXIgbT10LkV2ZW50VGFyZ2V0O2lmKG0mJm0ucHJvdG90eXBlKXJldHVybiBlLnBhdGNoRXZlbnRUYXJnZXQodCxbbSYmbS5wcm90b3R5cGVdKSwhMH19ZnVuY3Rpb24gRXQodCxlKXtlLnBhdGNoRXZlbnRQcm90b3R5cGUodCxlKX0KLyoqCiAgICAgICAgICogQGxpY2Vuc2UKICAgICAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICAgICAqCiAgICAgICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgICAgICovWm9uZS5fX2xvYWRfcGF0Y2goImxlZ2FjeSIsKGZ1bmN0aW9uKHQpe3ZhciBlPXRbWm9uZS5fX3N5bWJvbF9fKCJsZWdhY3lQYXRjaCIpXTtlJiZlKCl9KSksWm9uZS5fX2xvYWRfcGF0Y2goInF1ZXVlTWljcm90YXNrIiwoZnVuY3Rpb24odCxlLG4pe24ucGF0Y2hNZXRob2QodCwicXVldWVNaWNyb3Rhc2siLChmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24odCxuKXtlLmN1cnJlbnQuc2NoZWR1bGVNaWNyb1Rhc2soInF1ZXVlTWljcm90YXNrIixuWzBdKX19KSl9KSksWm9uZS5fX2xvYWRfcGF0Y2goInRpbWVycyIsKGZ1bmN0aW9uKHQpe3ZhciBlPSJzZXQiLG49ImNsZWFyIjtTdCh0LGUsbiwiVGltZW91dCIpLFN0KHQsZSxuLCJJbnRlcnZhbCIpLFN0KHQsZSxuLCJJbW1lZGlhdGUiKX0pKSxab25lLl9fbG9hZF9wYXRjaCgicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwoZnVuY3Rpb24odCl7U3QodCwicmVxdWVzdCIsImNhbmNlbCIsIkFuaW1hdGlvbkZyYW1lIiksU3QodCwibW96UmVxdWVzdCIsIm1vekNhbmNlbCIsIkFuaW1hdGlvbkZyYW1lIiksU3QodCwid2Via2l0UmVxdWVzdCIsIndlYmtpdENhbmNlbCIsIkFuaW1hdGlvbkZyYW1lIil9KSksWm9uZS5fX2xvYWRfcGF0Y2goImJsb2NraW5nIiwoZnVuY3Rpb24odCxlKXtmb3IodmFyIG49WyJhbGVydCIsInByb21wdCIsImNvbmZpcm0iXSxvPTA7bzxuLmxlbmd0aDtvKyspVCh0LG5bb10sKGZ1bmN0aW9uKG4sbyxpKXtyZXR1cm4gZnVuY3Rpb24obyxhKXtyZXR1cm4gZS5jdXJyZW50LnJ1bihuLHQsYSxpKX19KSl9KSksWm9uZS5fX2xvYWRfcGF0Y2goIkV2ZW50VGFyZ2V0IiwoZnVuY3Rpb24odCxlLG4pe0V0KHQsbiksUnQodCxuKTt2YXIgbz10LlhNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQ7byYmby5wcm90b3R5cGUmJm4ucGF0Y2hFdmVudFRhcmdldCh0LFtvLnByb3RvdHlwZV0pfSkpLFpvbmUuX19sb2FkX3BhdGNoKCJNdXRhdGlvbk9ic2VydmVyIiwoZnVuY3Rpb24odCxlLG4pe0EoIk11dGF0aW9uT2JzZXJ2ZXIiKSxBKCJXZWJLaXRNdXRhdGlvbk9ic2VydmVyIil9KSksWm9uZS5fX2xvYWRfcGF0Y2goIkludGVyc2VjdGlvbk9ic2VydmVyIiwoZnVuY3Rpb24odCxlLG4pe0EoIkludGVyc2VjdGlvbk9ic2VydmVyIil9KSksWm9uZS5fX2xvYWRfcGF0Y2goIkZpbGVSZWFkZXIiLChmdW5jdGlvbih0LGUsbil7QSgiRmlsZVJlYWRlciIpfSkpLFpvbmUuX19sb2FkX3BhdGNoKCJvbl9wcm9wZXJ0eSIsKGZ1bmN0aW9uKHQsZSxuKXtndChuLHQpfSkpLFpvbmUuX19sb2FkX3BhdGNoKCJjdXN0b21FbGVtZW50cyIsKGZ1bmN0aW9uKHQsZSxuKXtEdCh0LG4pfSkpLFpvbmUuX19sb2FkX3BhdGNoKCJYSFIiLChmdW5jdGlvbih0LGUpe2QodCk7dmFyIG49dSgieGhyVGFzayIpLG89dSgieGhyU3luYyIpLGk9dSgieGhyTGlzdGVuZXIiKSxhPXUoInhoclNjaGVkdWxlZCIpLHI9dSgieGhyVVJMIiksYz11KCJ4aHJFcnJvckJlZm9yZVNjaGVkdWxlZCIpO2Z1bmN0aW9uIGQodCl7dmFyIGQ9dC5YTUxIdHRwUmVxdWVzdDtpZihkKXt2YXIgcD1kLnByb3RvdHlwZSxtPXBbc10sZz1wW2xdO2lmKCFtKXt2YXIgaD10LlhNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQ7aWYoaCl7dmFyIGI9aC5wcm90b3R5cGU7bT1iW3NdLGc9YltsXX19dmFyIHk9InJlYWR5c3RhdGVjaGFuZ2UiLF89InNjaGVkdWxlZCIsQz1UKHAsIm9wZW4iLChmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0LGUpe3JldHVybiB0W29dPTA9PWVbMl0sdFtyXT1lWzFdLEMuYXBwbHkodCxlKX19KSksTT0iWE1MSHR0cFJlcXVlc3Quc2VuZCIsdj11KCJmZXRjaFRhc2tBYm9ydGluZyIpLHg9dSgiZmV0Y2hUYXNrU2NoZWR1bGluZyIpLE89VChwLCJzZW5kIiwoZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24odCxuKXtpZighMD09PWUuY3VycmVudFt4XSlyZXR1cm4gTy5hcHBseSh0LG4pO2lmKHRbb10pcmV0dXJuIE8uYXBwbHkodCxuKTt2YXIgaT17dGFyZ2V0OnQsdXJsOnRbcl0saXNQZXJpb2RpYzohMSxhcmdzOm4sYWJvcnRlZDohMX0sYT1mKE0sUyxpLGssRCk7dCYmITA9PT10W2NdJiYhaS5hYm9ydGVkJiZhLnN0YXRlPT09XyYmYS5pbnZva2UoKX19KSksUD1UKHAsImFib3J0IiwoZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24odCxuKXt2YXIgbz13KHQpO2lmKG8mJiJzdHJpbmciPT10eXBlb2Ygby50eXBlKXtpZihudWxsPT1vLmNhbmNlbEZufHxvLmRhdGEmJm8uZGF0YS5hYm9ydGVkKXJldHVybjtvLnpvbmUuY2FuY2VsVGFzayhvKX1lbHNlIGlmKCEwPT09ZS5jdXJyZW50W3ZdKXJldHVybiBQLmFwcGx5KHQsbil9fSkpfWZ1bmN0aW9uIHcodCl7cmV0dXJuIHRbbl19ZnVuY3Rpb24gayh0KXt2YXIgbz10LmRhdGEscj1vLnRhcmdldDtyW2FdPSExLHJbY109ITE7dmFyIGQ9cltpXTttfHwobT1yW3NdLGc9cltsXSksZCYmZy5jYWxsKHIseSxkKTt2YXIgcD1yW2ldPWZ1bmN0aW9uKCl7aWYoci5yZWFkeVN0YXRlPT09ci5ET05FKWlmKCFvLmFib3J0ZWQmJnJbYV0mJnQuc3RhdGU9PT1fKXt2YXIgbj1yW2UuX19zeW1ib2xfXygibG9hZGZhbHNlIildO2lmKDAhPT1yLnN0YXR1cyYmbiYmbi5sZW5ndGg+MCl7dmFyIGk9dC5pbnZva2U7dC5pbnZva2U9ZnVuY3Rpb24oKXtmb3IodmFyIG49cltlLl9fc3ltYm9sX18oImxvYWRmYWxzZSIpXSxhPTA7YTxuLmxlbmd0aDthKyspblthXT09PXQmJm4uc3BsaWNlKGEsMSk7by5hYm9ydGVkfHx0LnN0YXRlIT09X3x8aS5jYWxsKHQpfSxuLnB1c2godCl9ZWxzZSB0Lmludm9rZSgpfWVsc2Ugby5hYm9ydGVkfHwhMSE9PXJbYV18fChyW2NdPSEwKX07cmV0dXJuIG0uY2FsbChyLHkscCkscltuXXx8KHJbbl09dCksTy5hcHBseShyLG8uYXJncyksclthXT0hMCx0fWZ1bmN0aW9uIFMoKXt9ZnVuY3Rpb24gRCh0KXt2YXIgZT10LmRhdGE7cmV0dXJuIGUuYWJvcnRlZD0hMCxQLmFwcGx5KGUudGFyZ2V0LGUuYXJncyl9fX0pKSxab25lLl9fbG9hZF9wYXRjaCgiZ2VvbG9jYXRpb24iLChmdW5jdGlvbih0KXt0Lm5hdmlnYXRvciYmdC5uYXZpZ2F0b3IuZ2VvbG9jYXRpb24mJk0odC5uYXZpZ2F0b3IuZ2VvbG9jYXRpb24sWyJnZXRDdXJyZW50UG9zaXRpb24iLCJ3YXRjaFBvc2l0aW9uIl0pfSkpLFpvbmUuX19sb2FkX3BhdGNoKCJQcm9taXNlUmVqZWN0aW9uRXZlbnQiLChmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4oZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe1godCxlKS5mb3JFYWNoKChmdW5jdGlvbihvKXt2YXIgaT10LlByb21pc2VSZWplY3Rpb25FdmVudDtpZihpKXt2YXIgYT1uZXcgaShlLHtwcm9taXNlOm4ucHJvbWlzZSxyZWFzb246bi5yZWplY3Rpb259KTtvLmludm9rZShhKX19KSl9fXQuUHJvbWlzZVJlamVjdGlvbkV2ZW50JiYoZVt1KCJ1bmhhbmRsZWRQcm9taXNlUmVqZWN0aW9uSGFuZGxlciIpXT1uKCJ1bmhhbmRsZWRyZWplY3Rpb24iKSxlW3UoInJlamVjdGlvbkhhbmRsZWRIYW5kbGVyIildPW4oInJlamVjdGlvbmhhbmRsZWQiKSl9KSl9KSgpOwovKioKICAgICAqIEBsaWNlbnNlIEFuZ3VsYXIgdjEyLjIuMQogICAgICogKGMpIDIwMTAtMjAyMSBHb29nbGUgTExDLiBodHRwczovL2FuZ3VsYXIuaW8vCiAgICAgKiBMaWNlbnNlOiBNSVQKICAgICAqLwpjbGFzcyBNT3t9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCB2Tz0iKiI7ZnVuY3Rpb24geE8odCxlKXtyZXR1cm57dHlwZTo3LG5hbWU6dCxkZWZpbml0aW9uczplLG9wdGlvbnM6e319fWZ1bmN0aW9uIE9PKHQsZT1udWxsKXtyZXR1cm57dHlwZTo0LHN0eWxlczplLHRpbWluZ3M6dH19ZnVuY3Rpb24gUE8odCxlPW51bGwpe3JldHVybnt0eXBlOjIsc3RlcHM6dCxvcHRpb25zOmV9fWZ1bmN0aW9uIHdPKHQpe3JldHVybnt0eXBlOjYsc3R5bGVzOnQsb2Zmc2V0Om51bGx9fWZ1bmN0aW9uIGtPKHQsZSxuKXtyZXR1cm57dHlwZTowLG5hbWU6dCxzdHlsZXM6ZSxvcHRpb25zOm59fWZ1bmN0aW9uIFNPKHQpe3JldHVybnt0eXBlOjUsc3RlcHM6dH19ZnVuY3Rpb24gRE8odCxlLG49bnVsbCl7cmV0dXJue3R5cGU6MSxleHByOnQsYW5pbWF0aW9uOmUsb3B0aW9uczpufX1mdW5jdGlvbiBSTyh0PW51bGwpe3JldHVybnt0eXBlOjksb3B0aW9uczp0fX1mdW5jdGlvbiBFTyh0LGUsbj1udWxsKXtyZXR1cm57dHlwZToxMSxzZWxlY3Rvcjp0LGFuaW1hdGlvbjplLG9wdGlvbnM6bn19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIEFPKHQpe1Byb21pc2UucmVzb2x2ZShudWxsKS50aGVuKHQpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBUT3tjb25zdHJ1Y3Rvcih0PTAsZT0wKXt0aGlzLl9vbkRvbmVGbnM9W10sdGhpcy5fb25TdGFydEZucz1bXSx0aGlzLl9vbkRlc3Ryb3lGbnM9W10sdGhpcy5fc3RhcnRlZD0hMSx0aGlzLl9kZXN0cm95ZWQ9ITEsdGhpcy5fZmluaXNoZWQ9ITEsdGhpcy5fcG9zaXRpb249MCx0aGlzLnBhcmVudFBsYXllcj1udWxsLHRoaXMudG90YWxUaW1lPXQrZX1fb25GaW5pc2goKXt0aGlzLl9maW5pc2hlZHx8KHRoaXMuX2ZpbmlzaGVkPSEwLHRoaXMuX29uRG9uZUZucy5mb3JFYWNoKCh0PT50KCkpKSx0aGlzLl9vbkRvbmVGbnM9W10pfW9uU3RhcnQodCl7dGhpcy5fb25TdGFydEZucy5wdXNoKHQpfW9uRG9uZSh0KXt0aGlzLl9vbkRvbmVGbnMucHVzaCh0KX1vbkRlc3Ryb3kodCl7dGhpcy5fb25EZXN0cm95Rm5zLnB1c2godCl9aGFzU3RhcnRlZCgpe3JldHVybiB0aGlzLl9zdGFydGVkfWluaXQoKXt9cGxheSgpe3RoaXMuaGFzU3RhcnRlZCgpfHwodGhpcy5fb25TdGFydCgpLHRoaXMudHJpZ2dlck1pY3JvdGFzaygpKSx0aGlzLl9zdGFydGVkPSEwfXRyaWdnZXJNaWNyb3Rhc2soKXtBTygoKCk9PnRoaXMuX29uRmluaXNoKCkpKX1fb25TdGFydCgpe3RoaXMuX29uU3RhcnRGbnMuZm9yRWFjaCgodD0+dCgpKSksdGhpcy5fb25TdGFydEZucz1bXX1wYXVzZSgpe31yZXN0YXJ0KCl7fWZpbmlzaCgpe3RoaXMuX29uRmluaXNoKCl9ZGVzdHJveSgpe3RoaXMuX2Rlc3Ryb3llZHx8KHRoaXMuX2Rlc3Ryb3llZD0hMCx0aGlzLmhhc1N0YXJ0ZWQoKXx8dGhpcy5fb25TdGFydCgpLHRoaXMuZmluaXNoKCksdGhpcy5fb25EZXN0cm95Rm5zLmZvckVhY2goKHQ9PnQoKSkpLHRoaXMuX29uRGVzdHJveUZucz1bXSl9cmVzZXQoKXt0aGlzLl9zdGFydGVkPSExfXNldFBvc2l0aW9uKHQpe3RoaXMuX3Bvc2l0aW9uPXRoaXMudG90YWxUaW1lP3QqdGhpcy50b3RhbFRpbWU6MX1nZXRQb3NpdGlvbigpe3JldHVybiB0aGlzLnRvdGFsVGltZT90aGlzLl9wb3NpdGlvbi90aGlzLnRvdGFsVGltZToxfXRyaWdnZXJDYWxsYmFjayh0KXtjb25zdCBlPSJzdGFydCI9PXQ/dGhpcy5fb25TdGFydEZuczp0aGlzLl9vbkRvbmVGbnM7ZS5mb3JFYWNoKCh0PT50KCkpKSxlLmxlbmd0aD0wfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgTk97Y29uc3RydWN0b3IodCl7dGhpcy5fb25Eb25lRm5zPVtdLHRoaXMuX29uU3RhcnRGbnM9W10sdGhpcy5fZmluaXNoZWQ9ITEsdGhpcy5fc3RhcnRlZD0hMSx0aGlzLl9kZXN0cm95ZWQ9ITEsdGhpcy5fb25EZXN0cm95Rm5zPVtdLHRoaXMucGFyZW50UGxheWVyPW51bGwsdGhpcy50b3RhbFRpbWU9MCx0aGlzLnBsYXllcnM9dDtsZXQgZT0wLG49MCxvPTA7Y29uc3QgaT10aGlzLnBsYXllcnMubGVuZ3RoOzA9PWk/QU8oKCgpPT50aGlzLl9vbkZpbmlzaCgpKSk6dGhpcy5wbGF5ZXJzLmZvckVhY2goKHQ9Pnt0Lm9uRG9uZSgoKCk9PnsrK2U9PWkmJnRoaXMuX29uRmluaXNoKCl9KSksdC5vbkRlc3Ryb3koKCgpPT57KytuPT1pJiZ0aGlzLl9vbkRlc3Ryb3koKX0pKSx0Lm9uU3RhcnQoKCgpPT57KytvPT1pJiZ0aGlzLl9vblN0YXJ0KCl9KSl9KSksdGhpcy50b3RhbFRpbWU9dGhpcy5wbGF5ZXJzLnJlZHVjZSgoKHQsZSk9Pk1hdGgubWF4KHQsZS50b3RhbFRpbWUpKSwwKX1fb25GaW5pc2goKXt0aGlzLl9maW5pc2hlZHx8KHRoaXMuX2ZpbmlzaGVkPSEwLHRoaXMuX29uRG9uZUZucy5mb3JFYWNoKCh0PT50KCkpKSx0aGlzLl9vbkRvbmVGbnM9W10pfWluaXQoKXt0aGlzLnBsYXllcnMuZm9yRWFjaCgodD0+dC5pbml0KCkpKX1vblN0YXJ0KHQpe3RoaXMuX29uU3RhcnRGbnMucHVzaCh0KX1fb25TdGFydCgpe3RoaXMuaGFzU3RhcnRlZCgpfHwodGhpcy5fc3RhcnRlZD0hMCx0aGlzLl9vblN0YXJ0Rm5zLmZvckVhY2goKHQ9PnQoKSkpLHRoaXMuX29uU3RhcnRGbnM9W10pfW9uRG9uZSh0KXt0aGlzLl9vbkRvbmVGbnMucHVzaCh0KX1vbkRlc3Ryb3kodCl7dGhpcy5fb25EZXN0cm95Rm5zLnB1c2godCl9aGFzU3RhcnRlZCgpe3JldHVybiB0aGlzLl9zdGFydGVkfXBsYXkoKXt0aGlzLnBhcmVudFBsYXllcnx8dGhpcy5pbml0KCksdGhpcy5fb25TdGFydCgpLHRoaXMucGxheWVycy5mb3JFYWNoKCh0PT50LnBsYXkoKSkpfXBhdXNlKCl7dGhpcy5wbGF5ZXJzLmZvckVhY2goKHQ9PnQucGF1c2UoKSkpfXJlc3RhcnQoKXt0aGlzLnBsYXllcnMuZm9yRWFjaCgodD0+dC5yZXN0YXJ0KCkpKX1maW5pc2goKXt0aGlzLl9vbkZpbmlzaCgpLHRoaXMucGxheWVycy5mb3JFYWNoKCh0PT50LmZpbmlzaCgpKSl9ZGVzdHJveSgpe3RoaXMuX29uRGVzdHJveSgpfV9vbkRlc3Ryb3koKXt0aGlzLl9kZXN0cm95ZWR8fCh0aGlzLl9kZXN0cm95ZWQ9ITAsdGhpcy5fb25GaW5pc2goKSx0aGlzLnBsYXllcnMuZm9yRWFjaCgodD0+dC5kZXN0cm95KCkpKSx0aGlzLl9vbkRlc3Ryb3lGbnMuZm9yRWFjaCgodD0+dCgpKSksdGhpcy5fb25EZXN0cm95Rm5zPVtdKX1yZXNldCgpe3RoaXMucGxheWVycy5mb3JFYWNoKCh0PT50LnJlc2V0KCkpKSx0aGlzLl9kZXN0cm95ZWQ9ITEsdGhpcy5fZmluaXNoZWQ9ITEsdGhpcy5fc3RhcnRlZD0hMX1zZXRQb3NpdGlvbih0KXtjb25zdCBlPXQqdGhpcy50b3RhbFRpbWU7dGhpcy5wbGF5ZXJzLmZvckVhY2goKHQ9Pntjb25zdCBuPXQudG90YWxUaW1lP01hdGgubWluKDEsZS90LnRvdGFsVGltZSk6MTt0LnNldFBvc2l0aW9uKG4pfSkpfWdldFBvc2l0aW9uKCl7Y29uc3QgdD10aGlzLnBsYXllcnMucmVkdWNlKCgodCxlKT0+bnVsbD09PXR8fGUudG90YWxUaW1lPnQudG90YWxUaW1lP2U6dCksbnVsbCk7cmV0dXJuIG51bGwhPXQ/dC5nZXRQb3NpdGlvbigpOjB9YmVmb3JlRGVzdHJveSgpe3RoaXMucGxheWVycy5mb3JFYWNoKCh0PT57dC5iZWZvcmVEZXN0cm95JiZ0LmJlZm9yZURlc3Ryb3koKX0pKX10cmlnZ2VyQ2FsbGJhY2sodCl7Y29uc3QgZT0ic3RhcnQiPT10P3RoaXMuX29uU3RhcnRGbnM6dGhpcy5fb25Eb25lRm5zO2UuZm9yRWFjaCgodD0+dCgpKSksZS5sZW5ndGg9MH19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwovKioKICAgICAqIEBsaWNlbnNlIEFuZ3VsYXIgdjEyLjIuMQogICAgICogKGMpIDIwMTAtMjAyMSBHb29nbGUgTExDLiBodHRwczovL2FuZ3VsYXIuaW8vCiAgICAgKiBMaWNlbnNlOiBNSVQKICAgICAqLwpmdW5jdGlvbiB6Tygpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ2b2lkIDAhPT13aW5kb3cuZG9jdW1lbnR9ZnVuY3Rpb24gSU8oKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIHByb2Nlc3MmJiJbb2JqZWN0IHByb2Nlc3NdIj09PXt9LnRvU3RyaW5nLmNhbGwocHJvY2Vzcyl9ZnVuY3Rpb24gSE8odCl7c3dpdGNoKHQubGVuZ3RoKXtjYXNlIDA6cmV0dXJuIG5ldyBUTztjYXNlIDE6cmV0dXJuIHRbMF07ZGVmYXVsdDpyZXR1cm4gbmV3IE5PKHQpfX1mdW5jdGlvbiBGTyh0LGUsbixvLGk9e30sYT17fSl7Y29uc3Qgcj1bXSxzPVtdO2xldCBsPS0xLGM9bnVsbDtpZihvLmZvckVhY2goKHQ9Pntjb25zdCBuPXQub2Zmc2V0LG89bj09bCxkPW8mJmN8fHt9O09iamVjdC5rZXlzKHQpLmZvckVhY2goKG49PntsZXQgbz1uLHM9dFtuXTtpZigib2Zmc2V0IiE9PW4pc3dpdGNoKG89ZS5ub3JtYWxpemVQcm9wZXJ0eU5hbWUobyxyKSxzKXtjYXNlIiEiOnM9aVtuXTticmVhaztjYXNlIHZPOnM9YVtuXTticmVhaztkZWZhdWx0OnM9ZS5ub3JtYWxpemVTdHlsZVZhbHVlKG4sbyxzLHIpfWRbb109c30pKSxvfHxzLnB1c2goZCksYz1kLGw9bn0pKSxyLmxlbmd0aCl7Y29uc3QgdD0iXG4gLSAiO3Rocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIGFuaW1hdGUgZHVlIHRvIHRoZSBmb2xsb3dpbmcgZXJyb3JzOiR7dH0ke3Iuam9pbih0KX1gKX1yZXR1cm4gc31mdW5jdGlvbiBMTyh0LGUsbixvKXtzd2l0Y2goZSl7Y2FzZSJzdGFydCI6dC5vblN0YXJ0KCgoKT0+byhuJiZCTyhuLCJzdGFydCIsdCkpKSk7YnJlYWs7Y2FzZSJkb25lIjp0Lm9uRG9uZSgoKCk9Pm8obiYmQk8obiwiZG9uZSIsdCkpKSk7YnJlYWs7Y2FzZSJkZXN0cm95Ijp0Lm9uRGVzdHJveSgoKCk9Pm8obiYmQk8obiwiZGVzdHJveSIsdCkpKSl9fWZ1bmN0aW9uIEJPKHQsZSxuKXtjb25zdCBvPW4udG90YWxUaW1lLGk9Vk8odC5lbGVtZW50LHQudHJpZ2dlck5hbWUsdC5mcm9tU3RhdGUsdC50b1N0YXRlLGV8fHQucGhhc2VOYW1lLG51bGw9PW8/dC50b3RhbFRpbWU6bywhIW4uZGlzYWJsZWQpLGE9dC5fZGF0YTtyZXR1cm4gbnVsbCE9YSYmKGkuX2RhdGE9YSksaX1mdW5jdGlvbiBWTyh0LGUsbixvLGk9IiIsYT0wLHIpe3JldHVybntlbGVtZW50OnQsdHJpZ2dlck5hbWU6ZSxmcm9tU3RhdGU6bix0b1N0YXRlOm8scGhhc2VOYW1lOmksdG90YWxUaW1lOmEsZGlzYWJsZWQ6ISFyfX1mdW5jdGlvbiBqTyh0LGUsbil7bGV0IG87cmV0dXJuIHQgaW5zdGFuY2VvZiBNYXA/KG89dC5nZXQoZSksb3x8dC5zZXQoZSxvPW4pKToobz10W2VdLG98fChvPXRbZV09bikpLG99ZnVuY3Rpb24gVU8odCl7Y29uc3QgZT10LmluZGV4T2YoIjoiKTtyZXR1cm5bdC5zdWJzdHJpbmcoMSxlKSx0LnN1YnN0cihlKzEpXX1sZXQgV089KHQsZSk9PiExLEdPPSh0LGUpPT4hMSxZTz0odCxlLG4pPT5bXTtjb25zdCBxTz1JTygpOyhxT3x8InVuZGVmaW5lZCIhPXR5cGVvZiBFbGVtZW50KSYmKFdPPXpPKCk/KHQsZSk9Pntmb3IoO2UmJmUhPT1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7KXtpZihlPT09dClyZXR1cm4hMDtlPWUucGFyZW50Tm9kZXx8ZS5ob3N0fXJldHVybiExfToodCxlKT0+dC5jb250YWlucyhlKSxHTz0oKCk9PntpZihxT3x8RWxlbWVudC5wcm90b3R5cGUubWF0Y2hlcylyZXR1cm4odCxlKT0+dC5tYXRjaGVzKGUpO3tjb25zdCB0PUVsZW1lbnQucHJvdG90eXBlLGU9dC5tYXRjaGVzU2VsZWN0b3J8fHQubW96TWF0Y2hlc1NlbGVjdG9yfHx0Lm1zTWF0Y2hlc1NlbGVjdG9yfHx0Lm9NYXRjaGVzU2VsZWN0b3J8fHQud2Via2l0TWF0Y2hlc1NlbGVjdG9yO3JldHVybiBlPyh0LG4pPT5lLmFwcGx5KHQsW25dKTpHT319KSgpLFlPPSh0LGUsbik9PntsZXQgbz1bXTtpZihuKXtjb25zdCBuPXQucXVlcnlTZWxlY3RvckFsbChlKTtmb3IobGV0IHQ9MDt0PG4ubGVuZ3RoO3QrKylvLnB1c2goblt0XSl9ZWxzZXtjb25zdCBuPXQucXVlcnlTZWxlY3RvcihlKTtuJiZvLnB1c2gobil9cmV0dXJuIG99KTtsZXQgWk89bnVsbCxYTz0hMTtmdW5jdGlvbiBLTyh0KXtaT3x8KFpPPShmdW5jdGlvbiBlKCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudClyZXR1cm4gZG9jdW1lbnQuYm9keTtyZXR1cm4gbnVsbH0pKCl8fHt9LFhPPSEhWk8uc3R5bGUmJiJXZWJraXRBcHBlYXJhbmNlImluIFpPLnN0eWxlKTtsZXQgbj0hMDtpZihaTy5zdHlsZSYmIShmdW5jdGlvbiBvKHQpe3JldHVybiJlYmtpdCI9PXQuc3Vic3RyaW5nKDEsNil9KSh0KSYmKG49dCBpbiBaTy5zdHlsZSwhbiYmWE8pKXtuPSJXZWJraXQiK3QuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrdC5zdWJzdHIoMSlpbiBaTy5zdHlsZX1yZXR1cm4gbn1jb25zdCBKTz1HTyxRTz1XTywkTz1ZTztmdW5jdGlvbiB0UCh0KXtjb25zdCBlPXt9O3JldHVybiBPYmplY3Qua2V5cyh0KS5mb3JFYWNoKChuPT57Y29uc3Qgbz1uLnJlcGxhY2UoLyhbYS16XSkoW0EtWl0pL2csIiQxLSQyIik7ZVtvXT10W25dfSkpLGV9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIGVQe3ZhbGlkYXRlU3R5bGVQcm9wZXJ0eSh0KXtyZXR1cm4gS08odCl9bWF0Y2hlc0VsZW1lbnQodCxlKXtyZXR1cm4gSk8odCxlKX1jb250YWluc0VsZW1lbnQodCxlKXtyZXR1cm4gUU8odCxlKX1xdWVyeSh0LGUsbil7cmV0dXJuICRPKHQsZSxuKX1jb21wdXRlU3R5bGUodCxlLG4pe3JldHVybiBufHwiIn1hbmltYXRlKHQsZSxuLG8saSxhPVtdLHIpe3JldHVybiBuZXcgVE8obixvKX19ZVAuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGVQKX0sZVAuybVwcm92PVNuKHt0b2tlbjplUCxmYWN0b3J5OmVQLsm1ZmFjfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihlUCxbe3R5cGU6VW19XSxudWxsLG51bGwpO2NsYXNzIG5Qe31uUC5OT09QPW5ldyBlUDsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IG9QPSJuZy1lbnRlciIsaVA9Im5nLWxlYXZlIixhUD0ibmctdHJpZ2dlciIsclA9Ii5uZy10cmlnZ2VyIixzUD0ibmctYW5pbWF0aW5nIixsUD0iLm5nLWFuaW1hdGluZyI7ZnVuY3Rpb24gY1AodCl7aWYoIm51bWJlciI9PXR5cGVvZiB0KXJldHVybiB0O2NvbnN0IGU9dC5tYXRjaCgvXigtP1tcLlxkXSspKG0/cykvKTtyZXR1cm4hZXx8ZS5sZW5ndGg8Mj8wOmRQKHBhcnNlRmxvYXQoZVsxXSksZVsyXSl9ZnVuY3Rpb24gZFAodCxlKXtzd2l0Y2goZSl7Y2FzZSJzIjpyZXR1cm4gMWUzKnQ7ZGVmYXVsdDpyZXR1cm4gdH19ZnVuY3Rpb24gcFAodCxlLG4pe3JldHVybiB0Lmhhc093blByb3BlcnR5KCJkdXJhdGlvbiIpP3Q6KGZ1bmN0aW9uIG8odCxlLG4pe2NvbnN0IG89L14oLT9bXC5cZF0rKShtP3MpKD86XHMrKC0/W1wuXGRdKykobT9zKSk/KD86XHMrKFstYS16XSsoPzpcKC4rP1wpKT8pKT8kL2k7bGV0IGksYT0wLHI9IiI7aWYoInN0cmluZyI9PXR5cGVvZiB0KXtjb25zdCBuPXQubWF0Y2gobyk7aWYobnVsbD09PW4pcmV0dXJuIGUucHVzaChgVGhlIHByb3ZpZGVkIHRpbWluZyB2YWx1ZSAiJHt0fSIgaXMgaW52YWxpZC5gKSx7ZHVyYXRpb246MCxkZWxheTowLGVhc2luZzoiIn07aT1kUChwYXJzZUZsb2F0KG5bMV0pLG5bMl0pO2NvbnN0IHM9blszXTtudWxsIT1zJiYoYT1kUChwYXJzZUZsb2F0KHMpLG5bNF0pKTtjb25zdCBsPW5bNV07bCYmKHI9bCl9ZWxzZSBpPXQ7aWYoIW4pe2xldCBuPSExLG89ZS5sZW5ndGg7aTwwJiYoZS5wdXNoKCJEdXJhdGlvbiB2YWx1ZXMgYmVsb3cgMCBhcmUgbm90IGFsbG93ZWQgZm9yIHRoaXMgYW5pbWF0aW9uIHN0ZXAuIiksbj0hMCksYTwwJiYoZS5wdXNoKCJEZWxheSB2YWx1ZXMgYmVsb3cgMCBhcmUgbm90IGFsbG93ZWQgZm9yIHRoaXMgYW5pbWF0aW9uIHN0ZXAuIiksbj0hMCksbiYmZS5zcGxpY2UobywwLGBUaGUgcHJvdmlkZWQgdGltaW5nIHZhbHVlICIke3R9IiBpcyBpbnZhbGlkLmApfXJldHVybntkdXJhdGlvbjppLGRlbGF5OmEsZWFzaW5nOnJ9fSkodCxlLG4pfWZ1bmN0aW9uIG1QKHQsZT17fSl7cmV0dXJuIE9iamVjdC5rZXlzKHQpLmZvckVhY2goKG49PntlW25dPXRbbl19KSksZX1mdW5jdGlvbiBmUCh0LGUsbj17fSl7aWYoZSlmb3IobGV0IGUgaW4gdCluW2VdPXRbZV07ZWxzZSBtUCh0LG4pO3JldHVybiBufWZ1bmN0aW9uIHVQKHQsZSxuKXtyZXR1cm4gbj9lKyI6IituKyI7IjoiIn1mdW5jdGlvbiBnUCh0KXtsZXQgZT0iIjtmb3IobGV0IG49MDtuPHQuc3R5bGUubGVuZ3RoO24rKyl7Y29uc3Qgbz10LnN0eWxlLml0ZW0obik7ZSs9dVAoMCxvLHQuc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShvKSl9Zm9yKGNvbnN0IG4gaW4gdC5zdHlsZSl7aWYoIXQuc3R5bGUuaGFzT3duUHJvcGVydHkobil8fG4uc3RhcnRzV2l0aCgiXyIpKWNvbnRpbnVlO2UrPXVQKDAsbi5yZXBsYWNlKC8oW2Etel0pKFtBLVpdKS9nLCIkMS0kMiIpLnRvTG93ZXJDYXNlKCksdC5zdHlsZVtuXSl9dC5zZXRBdHRyaWJ1dGUoInN0eWxlIixlKX1mdW5jdGlvbiBoUCh0LGUsbil7dC5zdHlsZSYmKE9iamVjdC5rZXlzKGUpLmZvckVhY2goKG89Pntjb25zdCBpPU9QKG8pO24mJiFuLmhhc093blByb3BlcnR5KG8pJiYobltvXT10LnN0eWxlW2ldKSx0LnN0eWxlW2ldPWVbb119KSksSU8oKSYmZ1AodCkpfWZ1bmN0aW9uIGJQKHQsZSl7dC5zdHlsZSYmKE9iamVjdC5rZXlzKGUpLmZvckVhY2goKGU9Pntjb25zdCBuPU9QKGUpO3Quc3R5bGVbbl09IiJ9KSksSU8oKSYmZ1AodCkpfWZ1bmN0aW9uIHlQKHQpe3JldHVybiBBcnJheS5pc0FycmF5KHQpPzE9PXQubGVuZ3RoP3RbMF06UE8odCk6dH1jb25zdCBfUD1uZXcgUmVnRXhwKCJ7e1xccyooLis/KVxccyp9fSIsImciKTtmdW5jdGlvbiBDUCh0KXtsZXQgZT1bXTtpZigic3RyaW5nIj09dHlwZW9mIHQpe2xldCBuO2Zvcig7bj1fUC5leGVjKHQpOyllLnB1c2goblsxXSk7X1AubGFzdEluZGV4PTB9cmV0dXJuIGV9ZnVuY3Rpb24gTVAodCxlLG4pe2NvbnN0IG89dC50b1N0cmluZygpLGk9by5yZXBsYWNlKF9QLCgodCxvKT0+e2xldCBpPWVbb107cmV0dXJuIGUuaGFzT3duUHJvcGVydHkobyl8fChuLnB1c2goYFBsZWFzZSBwcm92aWRlIGEgdmFsdWUgZm9yIHRoZSBhbmltYXRpb24gcGFyYW0gJHtvfWApLGk9IiIpLGkudG9TdHJpbmcoKX0pKTtyZXR1cm4gaT09bz90Oml9ZnVuY3Rpb24gdlAodCl7Y29uc3QgZT1bXTtsZXQgbj10Lm5leHQoKTtmb3IoOyFuLmRvbmU7KWUucHVzaChuLnZhbHVlKSxuPXQubmV4dCgpO3JldHVybiBlfWNvbnN0IHhQPS8tKyhbYS16MC05XSkvZztmdW5jdGlvbiBPUCh0KXtyZXR1cm4gdC5yZXBsYWNlKHhQLCgoLi4udCk9PnRbMV0udG9VcHBlckNhc2UoKSkpfWZ1bmN0aW9uIFBQKHQsZSl7cmV0dXJuIDA9PT10fHwwPT09ZX1mdW5jdGlvbiB3UCh0LGUsbil7Y29uc3Qgbz1PYmplY3Qua2V5cyhuKTtpZihvLmxlbmd0aCYmZS5sZW5ndGgpe2xldCBhPWVbMF0scj1bXTtpZihvLmZvckVhY2goKHQ9PnthLmhhc093blByb3BlcnR5KHQpfHxyLnB1c2godCksYVt0XT1uW3RdfSkpLHIubGVuZ3RoKWZvcih2YXIgaT0xO2k8ZS5sZW5ndGg7aSsrKXtsZXQgbj1lW2ldO3IuZm9yRWFjaCgoZnVuY3Rpb24oZSl7bltlXT1TUCh0LGUpfSkpfX1yZXR1cm4gZX1mdW5jdGlvbiBrUCh0LGUsbil7c3dpdGNoKGUudHlwZSl7Y2FzZSA3OnJldHVybiB0LnZpc2l0VHJpZ2dlcihlLG4pO2Nhc2UgMDpyZXR1cm4gdC52aXNpdFN0YXRlKGUsbik7Y2FzZSAxOnJldHVybiB0LnZpc2l0VHJhbnNpdGlvbihlLG4pO2Nhc2UgMjpyZXR1cm4gdC52aXNpdFNlcXVlbmNlKGUsbik7Y2FzZSAzOnJldHVybiB0LnZpc2l0R3JvdXAoZSxuKTtjYXNlIDQ6cmV0dXJuIHQudmlzaXRBbmltYXRlKGUsbik7Y2FzZSA1OnJldHVybiB0LnZpc2l0S2V5ZnJhbWVzKGUsbik7Y2FzZSA2OnJldHVybiB0LnZpc2l0U3R5bGUoZSxuKTtjYXNlIDg6cmV0dXJuIHQudmlzaXRSZWZlcmVuY2UoZSxuKTtjYXNlIDk6cmV0dXJuIHQudmlzaXRBbmltYXRlQ2hpbGQoZSxuKTtjYXNlIDEwOnJldHVybiB0LnZpc2l0QW5pbWF0ZVJlZihlLG4pO2Nhc2UgMTE6cmV0dXJuIHQudmlzaXRRdWVyeShlLG4pO2Nhc2UgMTI6cmV0dXJuIHQudmlzaXRTdGFnZ2VyKGUsbik7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byByZXNvbHZlIGFuaW1hdGlvbiBtZXRhZGF0YSBub2RlICMke2UudHlwZX1gKX19ZnVuY3Rpb24gU1AodCxlKXtyZXR1cm4gd2luZG93LmdldENvbXB1dGVkU3R5bGUodClbZV19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NvbnN0IERQPSIqIjtmdW5jdGlvbiBSUCh0LGUpe2NvbnN0IG49W107cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0P3Quc3BsaXQoL1xzKixccyovKS5mb3JFYWNoKCh0PT4oZnVuY3Rpb24gbyh0LGUsbil7aWYoIjoiPT10WzBdKXtjb25zdCBvPShmdW5jdGlvbiBvKHQsZSl7c3dpdGNoKHQpe2Nhc2UiOmVudGVyIjpyZXR1cm4idm9pZCA9PiAqIjtjYXNlIjpsZWF2ZSI6cmV0dXJuIiogPT4gdm9pZCI7Y2FzZSI6aW5jcmVtZW50IjpyZXR1cm4odCxlKT0+cGFyc2VGbG9hdChlKT5wYXJzZUZsb2F0KHQpO2Nhc2UiOmRlY3JlbWVudCI6cmV0dXJuKHQsZSk9PnBhcnNlRmxvYXQoZSk8cGFyc2VGbG9hdCh0KTtkZWZhdWx0OnJldHVybiBlLnB1c2goYFRoZSB0cmFuc2l0aW9uIGFsaWFzIHZhbHVlICIke3R9IiBpcyBub3Qgc3VwcG9ydGVkYCksIiogPT4gKiJ9fSkodCxuKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgbylyZXR1cm4gdm9pZCBlLnB1c2gobyk7dD1vfWNvbnN0IGk9dC5tYXRjaCgvXihcKnxbLVx3XSspXHMqKDw/Wz0tXT4pXHMqKFwqfFstXHddKykkLyk7aWYobnVsbD09aXx8aS5sZW5ndGg8NClyZXR1cm4gbi5wdXNoKGBUaGUgcHJvdmlkZWQgdHJhbnNpdGlvbiBleHByZXNzaW9uICIke3R9IiBpcyBub3Qgc3VwcG9ydGVkYCksZTtjb25zdCBhPWlbMV0scj1pWzJdLHM9aVszXTtlLnB1c2goVFAoYSxzKSk7Y29uc3QgbD1hPT1EUCYmcz09RFA7IjwiIT1yWzBdfHxsfHxlLnB1c2goVFAocyxhKSl9KSh0LG4sZSkpKTpuLnB1c2godCksbn1jb25zdCBFUD1uZXcgU2V0KFsidHJ1ZSIsIjEiXSksQVA9bmV3IFNldChbImZhbHNlIiwiMCJdKTtmdW5jdGlvbiBUUCh0LGUpe2NvbnN0IG49RVAuaGFzKHQpfHxBUC5oYXModCksbz1FUC5oYXMoZSl8fEFQLmhhcyhlKTtyZXR1cm4oaSxhKT0+e2xldCByPXQ9PURQfHx0PT1pLHM9ZT09RFB8fGU9PWE7cmV0dXJuIXImJm4mJiJib29sZWFuIj09dHlwZW9mIGkmJihyPWk/RVAuaGFzKHQpOkFQLmhhcyh0KSksIXMmJm8mJiJib29sZWFuIj09dHlwZW9mIGEmJihzPWE/RVAuaGFzKGUpOkFQLmhhcyhlKSksciYmc319Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NvbnN0IE5QPSI6c2VsZiIselA9bmV3IFJlZ0V4cCgicyo6c2VsZnMqLD8iLCJnIik7ZnVuY3Rpb24gSVAodCxlLG4pe3JldHVybiBuZXcgSFAodCkuYnVpbGQoZSxuKX1jbGFzcyBIUHtjb25zdHJ1Y3Rvcih0KXt0aGlzLl9kcml2ZXI9dH1idWlsZCh0LGUpe2NvbnN0IG49bmV3IEZQKGUpO3JldHVybiB0aGlzLl9yZXNldENvbnRleHRTdHlsZVRpbWluZ1N0YXRlKG4pLGtQKHRoaXMseVAodCksbil9X3Jlc2V0Q29udGV4dFN0eWxlVGltaW5nU3RhdGUodCl7dC5jdXJyZW50UXVlcnlTZWxlY3Rvcj0iIix0LmNvbGxlY3RlZFN0eWxlcz17fSx0LmNvbGxlY3RlZFN0eWxlc1siIl09e30sdC5jdXJyZW50VGltZT0wfXZpc2l0VHJpZ2dlcih0LGUpe2xldCBuPWUucXVlcnlDb3VudD0wLG89ZS5kZXBDb3VudD0wO2NvbnN0IGk9W10sYT1bXTtyZXR1cm4iQCI9PXQubmFtZS5jaGFyQXQoMCkmJmUuZXJyb3JzLnB1c2goImFuaW1hdGlvbiB0cmlnZ2VycyBjYW5ub3QgYmUgcHJlZml4ZWQgd2l0aCBhbiBgQGAgc2lnbiAoZS5nLiB0cmlnZ2VyKCdAZm9vJywgWy4uLl0pKSIpLHQuZGVmaW5pdGlvbnMuZm9yRWFjaCgodD0+e2lmKHRoaXMuX3Jlc2V0Q29udGV4dFN0eWxlVGltaW5nU3RhdGUoZSksMD09dC50eXBlKXtjb25zdCBuPXQsbz1uLm5hbWU7by50b1N0cmluZygpLnNwbGl0KC9ccyosXHMqLykuZm9yRWFjaCgodD0+e24ubmFtZT10LGkucHVzaCh0aGlzLnZpc2l0U3RhdGUobixlKSl9KSksbi5uYW1lPW99ZWxzZSBpZigxPT10LnR5cGUpe2NvbnN0IGk9dGhpcy52aXNpdFRyYW5zaXRpb24odCxlKTtuKz1pLnF1ZXJ5Q291bnQsbys9aS5kZXBDb3VudCxhLnB1c2goaSl9ZWxzZSBlLmVycm9ycy5wdXNoKCJvbmx5IHN0YXRlKCkgYW5kIHRyYW5zaXRpb24oKSBkZWZpbml0aW9ucyBjYW4gc2l0IGluc2lkZSBvZiBhIHRyaWdnZXIoKSIpfSkpLHt0eXBlOjcsbmFtZTp0Lm5hbWUsc3RhdGVzOmksdHJhbnNpdGlvbnM6YSxxdWVyeUNvdW50Om4sZGVwQ291bnQ6byxvcHRpb25zOm51bGx9fXZpc2l0U3RhdGUodCxlKXtjb25zdCBuPXRoaXMudmlzaXRTdHlsZSh0LnN0eWxlcyxlKSxvPXQub3B0aW9ucyYmdC5vcHRpb25zLnBhcmFtc3x8bnVsbDtpZihuLmNvbnRhaW5zRHluYW1pY1N0eWxlcyl7Y29uc3QgaT1uZXcgU2V0LGE9b3x8e307aWYobi5zdHlsZXMuZm9yRWFjaCgodD0+e2lmKExQKHQpKXtjb25zdCBlPXQ7T2JqZWN0LmtleXMoZSkuZm9yRWFjaCgodD0+e0NQKGVbdF0pLmZvckVhY2goKHQ9PnthLmhhc093blByb3BlcnR5KHQpfHxpLmFkZCh0KX0pKX0pKX19KSksaS5zaXplKXtjb25zdCBuPXZQKGkudmFsdWVzKCkpO2UuZXJyb3JzLnB1c2goYHN0YXRlKCIke3QubmFtZX0iLCAuLi4pIG11c3QgZGVmaW5lIGRlZmF1bHQgdmFsdWVzIGZvciBhbGwgdGhlIGZvbGxvd2luZyBzdHlsZSBzdWJzdGl0dXRpb25zOiAke24uam9pbigiLCAiKX1gKX19cmV0dXJue3R5cGU6MCxuYW1lOnQubmFtZSxzdHlsZTpuLG9wdGlvbnM6bz97cGFyYW1zOm99Om51bGx9fXZpc2l0VHJhbnNpdGlvbih0LGUpe2UucXVlcnlDb3VudD0wLGUuZGVwQ291bnQ9MDtjb25zdCBuPWtQKHRoaXMseVAodC5hbmltYXRpb24pLGUpO3JldHVybnt0eXBlOjEsbWF0Y2hlcnM6UlAodC5leHByLGUuZXJyb3JzKSxhbmltYXRpb246bixxdWVyeUNvdW50OmUucXVlcnlDb3VudCxkZXBDb3VudDplLmRlcENvdW50LG9wdGlvbnM6QlAodC5vcHRpb25zKX19dmlzaXRTZXF1ZW5jZSh0LGUpe3JldHVybnt0eXBlOjIsc3RlcHM6dC5zdGVwcy5tYXAoKHQ9PmtQKHRoaXMsdCxlKSkpLG9wdGlvbnM6QlAodC5vcHRpb25zKX19dmlzaXRHcm91cCh0LGUpe2NvbnN0IG49ZS5jdXJyZW50VGltZTtsZXQgbz0wO2NvbnN0IGk9dC5zdGVwcy5tYXAoKHQ9PntlLmN1cnJlbnRUaW1lPW47Y29uc3QgaT1rUCh0aGlzLHQsZSk7cmV0dXJuIG89TWF0aC5tYXgobyxlLmN1cnJlbnRUaW1lKSxpfSkpO3JldHVybiBlLmN1cnJlbnRUaW1lPW8se3R5cGU6MyxzdGVwczppLG9wdGlvbnM6QlAodC5vcHRpb25zKX19dmlzaXRBbmltYXRlKHQsZSl7Y29uc3Qgbj0oZnVuY3Rpb24gbyh0LGUpe2xldCBuPW51bGw7aWYodC5oYXNPd25Qcm9wZXJ0eSgiZHVyYXRpb24iKSluPXQ7ZWxzZSBpZigibnVtYmVyIj09dHlwZW9mIHQpe3JldHVybiBWUChwUCh0LGUpLmR1cmF0aW9uLDAsIiIpfWNvbnN0IG89dDtpZihvLnNwbGl0KC9ccysvKS5zb21lKCh0PT4ieyI9PXQuY2hhckF0KDApJiYieyI9PXQuY2hhckF0KDEpKSkpe2NvbnN0IHQ9VlAoMCwwLCIiKTtyZXR1cm4gdC5keW5hbWljPSEwLHQuc3RyVmFsdWU9byx0fXJldHVybiBuPW58fHBQKG8sZSksVlAobi5kdXJhdGlvbixuLmRlbGF5LG4uZWFzaW5nKX0pKHQudGltaW5ncyxlLmVycm9ycyk7bGV0IGk7ZS5jdXJyZW50QW5pbWF0ZVRpbWluZ3M9bjtsZXQgYT10LnN0eWxlcz90LnN0eWxlczp3Tyh7fSk7aWYoNT09YS50eXBlKWk9dGhpcy52aXNpdEtleWZyYW1lcyhhLGUpO2Vsc2V7bGV0IG89dC5zdHlsZXMsYT0hMTtpZighbyl7YT0hMDtjb25zdCB0PXt9O24uZWFzaW5nJiYodC5lYXNpbmc9bi5lYXNpbmcpLG89d08odCl9ZS5jdXJyZW50VGltZSs9bi5kdXJhdGlvbituLmRlbGF5O2NvbnN0IHI9dGhpcy52aXNpdFN0eWxlKG8sZSk7ci5pc0VtcHR5U3RlcD1hLGk9cn1yZXR1cm4gZS5jdXJyZW50QW5pbWF0ZVRpbWluZ3M9bnVsbCx7dHlwZTo0LHRpbWluZ3M6bixzdHlsZTppLG9wdGlvbnM6bnVsbH19dmlzaXRTdHlsZSh0LGUpe2NvbnN0IG49dGhpcy5fbWFrZVN0eWxlQXN0KHQsZSk7cmV0dXJuIHRoaXMuX3ZhbGlkYXRlU3R5bGVBc3QobixlKSxufV9tYWtlU3R5bGVBc3QodCxlKXtjb25zdCBuPVtdO0FycmF5LmlzQXJyYXkodC5zdHlsZXMpP3Quc3R5bGVzLmZvckVhY2goKHQ9Pnsic3RyaW5nIj09dHlwZW9mIHQ/dD09dk8/bi5wdXNoKHQpOmUuZXJyb3JzLnB1c2goYFRoZSBwcm92aWRlZCBzdHlsZSBzdHJpbmcgdmFsdWUgJHt0fSBpcyBub3QgYWxsb3dlZC5gKTpuLnB1c2godCl9KSk6bi5wdXNoKHQuc3R5bGVzKTtsZXQgbz0hMSxpPW51bGw7cmV0dXJuIG4uZm9yRWFjaCgodD0+e2lmKExQKHQpKXtjb25zdCBlPXQsbj1lLmVhc2luZztpZihuJiYoaT1uLGRlbGV0ZSBlLmVhc2luZyksIW8pZm9yKGxldCB0IGluIGUpe2lmKGVbdF0udG9TdHJpbmcoKS5pbmRleE9mKCJ7eyIpPj0wKXtvPSEwO2JyZWFrfX19fSkpLHt0eXBlOjYsc3R5bGVzOm4sZWFzaW5nOmksb2Zmc2V0OnQub2Zmc2V0LGNvbnRhaW5zRHluYW1pY1N0eWxlczpvLG9wdGlvbnM6bnVsbH19X3ZhbGlkYXRlU3R5bGVBc3QodCxlKXtjb25zdCBuPWUuY3VycmVudEFuaW1hdGVUaW1pbmdzO2xldCBvPWUuY3VycmVudFRpbWUsaT1lLmN1cnJlbnRUaW1lO24mJmk+MCYmKGktPW4uZHVyYXRpb24rbi5kZWxheSksdC5zdHlsZXMuZm9yRWFjaCgodD0+eyJzdHJpbmciIT10eXBlb2YgdCYmT2JqZWN0LmtleXModCkuZm9yRWFjaCgobj0+e2lmKCF0aGlzLl9kcml2ZXIudmFsaWRhdGVTdHlsZVByb3BlcnR5KG4pKXJldHVybiB2b2lkIGUuZXJyb3JzLnB1c2goYFRoZSBwcm92aWRlZCBhbmltYXRpb24gcHJvcGVydHkgIiR7bn0iIGlzIG5vdCBhIHN1cHBvcnRlZCBDU1MgcHJvcGVydHkgZm9yIGFuaW1hdGlvbnNgKTtjb25zdCBhPWUuY29sbGVjdGVkU3R5bGVzW2UuY3VycmVudFF1ZXJ5U2VsZWN0b3JdLHI9YVtuXTtsZXQgcz0hMDtyJiYoaSE9byYmaT49ci5zdGFydFRpbWUmJm88PXIuZW5kVGltZSYmKGUuZXJyb3JzLnB1c2goYFRoZSBDU1MgcHJvcGVydHkgIiR7bn0iIHRoYXQgZXhpc3RzIGJldHdlZW4gdGhlIHRpbWVzIG9mICIke3Iuc3RhcnRUaW1lfW1zIiBhbmQgIiR7ci5lbmRUaW1lfW1zIiBpcyBhbHNvIGJlaW5nIGFuaW1hdGVkIGluIGEgcGFyYWxsZWwgYW5pbWF0aW9uIGJldHdlZW4gdGhlIHRpbWVzIG9mICIke2l9bXMiIGFuZCAiJHtvfW1zImApLHM9ITEpLGk9ci5zdGFydFRpbWUpLHMmJihhW25dPXtzdGFydFRpbWU6aSxlbmRUaW1lOm99KSxlLm9wdGlvbnMmJihmdW5jdGlvbiBsKHQsZSxuKXtjb25zdCBvPWUucGFyYW1zfHx7fSxpPUNQKHQpO2kubGVuZ3RoJiZpLmZvckVhY2goKHQ9PntvLmhhc093blByb3BlcnR5KHQpfHxuLnB1c2goYFVuYWJsZSB0byByZXNvbHZlIHRoZSBsb2NhbCBhbmltYXRpb24gcGFyYW0gJHt0fSBpbiB0aGUgZ2l2ZW4gbGlzdCBvZiB2YWx1ZXNgKX0pKX0pKHRbbl0sZS5vcHRpb25zLGUuZXJyb3JzKX0pKX0pKX12aXNpdEtleWZyYW1lcyh0LGUpe2NvbnN0IG49e3R5cGU6NSxzdHlsZXM6W10sb3B0aW9uczpudWxsfTtpZighZS5jdXJyZW50QW5pbWF0ZVRpbWluZ3MpcmV0dXJuIGUuZXJyb3JzLnB1c2goImtleWZyYW1lcygpIG11c3QgYmUgcGxhY2VkIGluc2lkZSBvZiBhIGNhbGwgdG8gYW5pbWF0ZSgpIiksbjtsZXQgbz0wO2NvbnN0IGk9W107bGV0IGE9ITEscj0hMSxzPTA7Y29uc3QgbD10LnN0ZXBzLm1hcCgodD0+e2NvbnN0IG49dGhpcy5fbWFrZVN0eWxlQXN0KHQsZSk7bGV0IGw9bnVsbCE9bi5vZmZzZXQ/bi5vZmZzZXQ6KGZ1bmN0aW9uIGModCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiBudWxsO2xldCBlPW51bGw7aWYoQXJyYXkuaXNBcnJheSh0KSl0LmZvckVhY2goKHQ9PntpZihMUCh0KSYmdC5oYXNPd25Qcm9wZXJ0eSgib2Zmc2V0Iikpe2NvbnN0IG49dDtlPXBhcnNlRmxvYXQobi5vZmZzZXQpLGRlbGV0ZSBuLm9mZnNldH19KSk7ZWxzZSBpZihMUCh0KSYmdC5oYXNPd25Qcm9wZXJ0eSgib2Zmc2V0Iikpe2NvbnN0IG49dDtlPXBhcnNlRmxvYXQobi5vZmZzZXQpLGRlbGV0ZSBuLm9mZnNldH1yZXR1cm4gZX0pKG4uc3R5bGVzKSxkPTA7cmV0dXJuIG51bGwhPWwmJihvKyssZD1uLm9mZnNldD1sKSxyPXJ8fGQ8MHx8ZD4xLGE9YXx8ZDxzLHM9ZCxpLnB1c2goZCksbn0pKTtyJiZlLmVycm9ycy5wdXNoKCJQbGVhc2UgZW5zdXJlIHRoYXQgYWxsIGtleWZyYW1lIG9mZnNldHMgYXJlIGJldHdlZW4gMCBhbmQgMSIpLGEmJmUuZXJyb3JzLnB1c2goIlBsZWFzZSBlbnN1cmUgdGhhdCBhbGwga2V5ZnJhbWUgb2Zmc2V0cyBhcmUgaW4gb3JkZXIiKTtjb25zdCBjPXQuc3RlcHMubGVuZ3RoO2xldCBkPTA7bz4wJiZvPGM/ZS5lcnJvcnMucHVzaCgiTm90IGFsbCBzdHlsZSgpIHN0ZXBzIHdpdGhpbiB0aGUgZGVjbGFyZWQga2V5ZnJhbWVzKCkgY29udGFpbiBvZmZzZXRzIik6MD09byYmKGQ9MS8oYy0xKSk7Y29uc3QgcD1jLTEsbT1lLmN1cnJlbnRUaW1lLGY9ZS5jdXJyZW50QW5pbWF0ZVRpbWluZ3MsdT1mLmR1cmF0aW9uO3JldHVybiBsLmZvckVhY2goKCh0LG8pPT57Y29uc3QgYT1kPjA/bz09cD8xOmQqbzppW29dLHI9YSp1O2UuY3VycmVudFRpbWU9bStmLmRlbGF5K3IsZi5kdXJhdGlvbj1yLHRoaXMuX3ZhbGlkYXRlU3R5bGVBc3QodCxlKSx0Lm9mZnNldD1hLG4uc3R5bGVzLnB1c2godCl9KSksbn12aXNpdFJlZmVyZW5jZSh0LGUpe3JldHVybnt0eXBlOjgsYW5pbWF0aW9uOmtQKHRoaXMseVAodC5hbmltYXRpb24pLGUpLG9wdGlvbnM6QlAodC5vcHRpb25zKX19dmlzaXRBbmltYXRlQ2hpbGQodCxlKXtyZXR1cm4gZS5kZXBDb3VudCsrLHt0eXBlOjksb3B0aW9uczpCUCh0Lm9wdGlvbnMpfX12aXNpdEFuaW1hdGVSZWYodCxlKXtyZXR1cm57dHlwZToxMCxhbmltYXRpb246dGhpcy52aXNpdFJlZmVyZW5jZSh0LmFuaW1hdGlvbixlKSxvcHRpb25zOkJQKHQub3B0aW9ucyl9fXZpc2l0UXVlcnkodCxlKXtjb25zdCBuPWUuY3VycmVudFF1ZXJ5U2VsZWN0b3Isbz10Lm9wdGlvbnN8fHt9O2UucXVlcnlDb3VudCsrLGUuY3VycmVudFF1ZXJ5PXQ7Y29uc3RbaSxhXT0oZnVuY3Rpb24gcih0KXtjb25zdCBlPSEhdC5zcGxpdCgvXHMqLFxzKi8pLmZpbmQoKHQ9PnQ9PU5QKSk7ZSYmKHQ9dC5yZXBsYWNlKHpQLCIiKSk7cmV0dXJuW3Q9dC5yZXBsYWNlKC9AXCovZyxyUCkucmVwbGFjZSgvQFx3Ky9nLCh0PT4iLm5nLXRyaWdnZXItIit0LnN1YnN0cigxKSkpLnJlcGxhY2UoLzphbmltYXRpbmcvZyxsUCksZV19KSh0LnNlbGVjdG9yKTtlLmN1cnJlbnRRdWVyeVNlbGVjdG9yPW4ubGVuZ3RoP24rIiAiK2k6aSxqTyhlLmNvbGxlY3RlZFN0eWxlcyxlLmN1cnJlbnRRdWVyeVNlbGVjdG9yLHt9KTtjb25zdCBzPWtQKHRoaXMseVAodC5hbmltYXRpb24pLGUpO3JldHVybiBlLmN1cnJlbnRRdWVyeT1udWxsLGUuY3VycmVudFF1ZXJ5U2VsZWN0b3I9bix7dHlwZToxMSxzZWxlY3RvcjppLGxpbWl0Om8ubGltaXR8fDAsb3B0aW9uYWw6ISFvLm9wdGlvbmFsLGluY2x1ZGVTZWxmOmEsYW5pbWF0aW9uOnMsb3JpZ2luYWxTZWxlY3Rvcjp0LnNlbGVjdG9yLG9wdGlvbnM6QlAodC5vcHRpb25zKX19dmlzaXRTdGFnZ2VyKHQsZSl7ZS5jdXJyZW50UXVlcnl8fGUuZXJyb3JzLnB1c2goInN0YWdnZXIoKSBjYW4gb25seSBiZSB1c2VkIGluc2lkZSBvZiBxdWVyeSgpIik7Y29uc3Qgbj0iZnVsbCI9PT10LnRpbWluZ3M/e2R1cmF0aW9uOjAsZGVsYXk6MCxlYXNpbmc6ImZ1bGwifTpwUCh0LnRpbWluZ3MsZS5lcnJvcnMsITApO3JldHVybnt0eXBlOjEyLGFuaW1hdGlvbjprUCh0aGlzLHlQKHQuYW5pbWF0aW9uKSxlKSx0aW1pbmdzOm4sb3B0aW9uczpudWxsfX19Y2xhc3MgRlB7Y29uc3RydWN0b3IodCl7dGhpcy5lcnJvcnM9dCx0aGlzLnF1ZXJ5Q291bnQ9MCx0aGlzLmRlcENvdW50PTAsdGhpcy5jdXJyZW50VHJhbnNpdGlvbj1udWxsLHRoaXMuY3VycmVudFF1ZXJ5PW51bGwsdGhpcy5jdXJyZW50UXVlcnlTZWxlY3Rvcj1udWxsLHRoaXMuY3VycmVudEFuaW1hdGVUaW1pbmdzPW51bGwsdGhpcy5jdXJyZW50VGltZT0wLHRoaXMuY29sbGVjdGVkU3R5bGVzPXt9LHRoaXMub3B0aW9ucz1udWxsfX1mdW5jdGlvbiBMUCh0KXtyZXR1cm4hQXJyYXkuaXNBcnJheSh0KSYmIm9iamVjdCI9PXR5cGVvZiB0fWZ1bmN0aW9uIEJQKHQpe3JldHVybiB0Pyh0PW1QKHQpKS5wYXJhbXMmJih0LnBhcmFtcz0oZnVuY3Rpb24gZSh0KXtyZXR1cm4gdD9tUCh0KTpudWxsfSkodC5wYXJhbXMpKTp0PXt9LHR9ZnVuY3Rpb24gVlAodCxlLG4pe3JldHVybntkdXJhdGlvbjp0LGRlbGF5OmUsZWFzaW5nOm59fWZ1bmN0aW9uIGpQKHQsZSxuLG8saSxhLHI9bnVsbCxzPSExKXtyZXR1cm57dHlwZToxLGVsZW1lbnQ6dCxrZXlmcmFtZXM6ZSxwcmVTdHlsZVByb3BzOm4scG9zdFN0eWxlUHJvcHM6byxkdXJhdGlvbjppLGRlbGF5OmEsdG90YWxUaW1lOmkrYSxlYXNpbmc6cixzdWJUaW1lbGluZTpzfX1jbGFzcyBVUHtjb25zdHJ1Y3Rvcigpe3RoaXMuX21hcD1uZXcgTWFwfWNvbnN1bWUodCl7bGV0IGU9dGhpcy5fbWFwLmdldCh0KTtyZXR1cm4gZT90aGlzLl9tYXAuZGVsZXRlKHQpOmU9W10sZX1hcHBlbmQodCxlKXtsZXQgbj10aGlzLl9tYXAuZ2V0KHQpO258fHRoaXMuX21hcC5zZXQodCxuPVtdKSxuLnB1c2goLi4uZSl9aGFzKHQpe3JldHVybiB0aGlzLl9tYXAuaGFzKHQpfWNsZWFyKCl7dGhpcy5fbWFwLmNsZWFyKCl9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jb25zdCBXUD1uZXcgUmVnRXhwKCI6ZW50ZXIiLCJnIiksR1A9bmV3IFJlZ0V4cCgiOmxlYXZlIiwiZyIpO2Z1bmN0aW9uIFlQKHQsZSxuLG8saSxhPXt9LHI9e30scyxsLGM9W10pe3JldHVybihuZXcgcVApLmJ1aWxkS2V5ZnJhbWVzKHQsZSxuLG8saSxhLHIscyxsLGMpfWNsYXNzIHFQe2J1aWxkS2V5ZnJhbWVzKHQsZSxuLG8saSxhLHIscyxsLGM9W10pe2w9bHx8bmV3IFVQO2NvbnN0IGQ9bmV3IFhQKHQsZSxsLG8saSxjLFtdKTtkLm9wdGlvbnM9cyxkLmN1cnJlbnRUaW1lbGluZS5zZXRTdHlsZXMoW2FdLG51bGwsZC5lcnJvcnMscyksa1AodGhpcyxuLGQpO2NvbnN0IHA9ZC50aW1lbGluZXMuZmlsdGVyKCh0PT50LmNvbnRhaW5zQW5pbWF0aW9uKCkpKTtpZihwLmxlbmd0aCYmT2JqZWN0LmtleXMocikubGVuZ3RoKXtjb25zdCB0PXBbcC5sZW5ndGgtMV07dC5hbGxvd09ubHlUaW1lbGluZVN0eWxlcygpfHx0LnNldFN0eWxlcyhbcl0sbnVsbCxkLmVycm9ycyxzKX1yZXR1cm4gcC5sZW5ndGg/cC5tYXAoKHQ9PnQuYnVpbGRLZXlmcmFtZXMoKSkpOltqUChlLFtdLFtdLFtdLDAsMCwiIiwhMSldfXZpc2l0VHJpZ2dlcih0LGUpe312aXNpdFN0YXRlKHQsZSl7fXZpc2l0VHJhbnNpdGlvbih0LGUpe312aXNpdEFuaW1hdGVDaGlsZCh0LGUpe2NvbnN0IG49ZS5zdWJJbnN0cnVjdGlvbnMuY29uc3VtZShlLmVsZW1lbnQpO2lmKG4pe2NvbnN0IG89ZS5jcmVhdGVTdWJDb250ZXh0KHQub3B0aW9ucyksaT1lLmN1cnJlbnRUaW1lbGluZS5jdXJyZW50VGltZSxhPXRoaXMuX3Zpc2l0U3ViSW5zdHJ1Y3Rpb25zKG4sbyxvLm9wdGlvbnMpO2khPWEmJmUudHJhbnNmb3JtSW50b05ld1RpbWVsaW5lKGEpfWUucHJldmlvdXNOb2RlPXR9dmlzaXRBbmltYXRlUmVmKHQsZSl7Y29uc3Qgbj1lLmNyZWF0ZVN1YkNvbnRleHQodC5vcHRpb25zKTtuLnRyYW5zZm9ybUludG9OZXdUaW1lbGluZSgpLHRoaXMudmlzaXRSZWZlcmVuY2UodC5hbmltYXRpb24sbiksZS50cmFuc2Zvcm1JbnRvTmV3VGltZWxpbmUobi5jdXJyZW50VGltZWxpbmUuY3VycmVudFRpbWUpLGUucHJldmlvdXNOb2RlPXR9X3Zpc2l0U3ViSW5zdHJ1Y3Rpb25zKHQsZSxuKXtsZXQgbz1lLmN1cnJlbnRUaW1lbGluZS5jdXJyZW50VGltZTtjb25zdCBpPW51bGwhPW4uZHVyYXRpb24/Y1Aobi5kdXJhdGlvbik6bnVsbCxhPW51bGwhPW4uZGVsYXk/Y1Aobi5kZWxheSk6bnVsbDtyZXR1cm4gMCE9PWkmJnQuZm9yRWFjaCgodD0+e2NvbnN0IG49ZS5hcHBlbmRJbnN0cnVjdGlvblRvVGltZWxpbmUodCxpLGEpO289TWF0aC5tYXgobyxuLmR1cmF0aW9uK24uZGVsYXkpfSkpLG99dmlzaXRSZWZlcmVuY2UodCxlKXtlLnVwZGF0ZU9wdGlvbnModC5vcHRpb25zLCEwKSxrUCh0aGlzLHQuYW5pbWF0aW9uLGUpLGUucHJldmlvdXNOb2RlPXR9dmlzaXRTZXF1ZW5jZSh0LGUpe2NvbnN0IG49ZS5zdWJDb250ZXh0Q291bnQ7bGV0IG89ZTtjb25zdCBpPXQub3B0aW9ucztpZihpJiYoaS5wYXJhbXN8fGkuZGVsYXkpJiYobz1lLmNyZWF0ZVN1YkNvbnRleHQoaSksby50cmFuc2Zvcm1JbnRvTmV3VGltZWxpbmUoKSxudWxsIT1pLmRlbGF5KSl7Nj09by5wcmV2aW91c05vZGUudHlwZSYmKG8uY3VycmVudFRpbWVsaW5lLnNuYXBzaG90Q3VycmVudFN0eWxlcygpLG8ucHJldmlvdXNOb2RlPVpQKTtjb25zdCB0PWNQKGkuZGVsYXkpO28uZGVsYXlOZXh0U3RlcCh0KX10LnN0ZXBzLmxlbmd0aCYmKHQuc3RlcHMuZm9yRWFjaCgodD0+a1AodGhpcyx0LG8pKSksby5jdXJyZW50VGltZWxpbmUuYXBwbHlTdHlsZXNUb0tleWZyYW1lKCksby5zdWJDb250ZXh0Q291bnQ+biYmby50cmFuc2Zvcm1JbnRvTmV3VGltZWxpbmUoKSksZS5wcmV2aW91c05vZGU9dH12aXNpdEdyb3VwKHQsZSl7Y29uc3Qgbj1bXTtsZXQgbz1lLmN1cnJlbnRUaW1lbGluZS5jdXJyZW50VGltZTtjb25zdCBpPXQub3B0aW9ucyYmdC5vcHRpb25zLmRlbGF5P2NQKHQub3B0aW9ucy5kZWxheSk6MDt0LnN0ZXBzLmZvckVhY2goKGE9Pntjb25zdCByPWUuY3JlYXRlU3ViQ29udGV4dCh0Lm9wdGlvbnMpO2kmJnIuZGVsYXlOZXh0U3RlcChpKSxrUCh0aGlzLGEsciksbz1NYXRoLm1heChvLHIuY3VycmVudFRpbWVsaW5lLmN1cnJlbnRUaW1lKSxuLnB1c2goci5jdXJyZW50VGltZWxpbmUpfSkpLG4uZm9yRWFjaCgodD0+ZS5jdXJyZW50VGltZWxpbmUubWVyZ2VUaW1lbGluZUNvbGxlY3RlZFN0eWxlcyh0KSkpLGUudHJhbnNmb3JtSW50b05ld1RpbWVsaW5lKG8pLGUucHJldmlvdXNOb2RlPXR9X3Zpc2l0VGltaW5nKHQsZSl7aWYodC5keW5hbWljKXtjb25zdCBuPXQuc3RyVmFsdWU7cmV0dXJuIHBQKGUucGFyYW1zP01QKG4sZS5wYXJhbXMsZS5lcnJvcnMpOm4sZS5lcnJvcnMpfXJldHVybntkdXJhdGlvbjp0LmR1cmF0aW9uLGRlbGF5OnQuZGVsYXksZWFzaW5nOnQuZWFzaW5nfX12aXNpdEFuaW1hdGUodCxlKXtjb25zdCBuPWUuY3VycmVudEFuaW1hdGVUaW1pbmdzPXRoaXMuX3Zpc2l0VGltaW5nKHQudGltaW5ncyxlKSxvPWUuY3VycmVudFRpbWVsaW5lO24uZGVsYXkmJihlLmluY3JlbWVudFRpbWUobi5kZWxheSksby5zbmFwc2hvdEN1cnJlbnRTdHlsZXMoKSk7Y29uc3QgaT10LnN0eWxlOzU9PWkudHlwZT90aGlzLnZpc2l0S2V5ZnJhbWVzKGksZSk6KGUuaW5jcmVtZW50VGltZShuLmR1cmF0aW9uKSx0aGlzLnZpc2l0U3R5bGUoaSxlKSxvLmFwcGx5U3R5bGVzVG9LZXlmcmFtZSgpKSxlLmN1cnJlbnRBbmltYXRlVGltaW5ncz1udWxsLGUucHJldmlvdXNOb2RlPXR9dmlzaXRTdHlsZSh0LGUpe2NvbnN0IG49ZS5jdXJyZW50VGltZWxpbmUsbz1lLmN1cnJlbnRBbmltYXRlVGltaW5nczshbyYmbi5nZXRDdXJyZW50U3R5bGVQcm9wZXJ0aWVzKCkubGVuZ3RoJiZuLmZvcndhcmRGcmFtZSgpO2NvbnN0IGk9byYmby5lYXNpbmd8fHQuZWFzaW5nO3QuaXNFbXB0eVN0ZXA/bi5hcHBseUVtcHR5U3RlcChpKTpuLnNldFN0eWxlcyh0LnN0eWxlcyxpLGUuZXJyb3JzLGUub3B0aW9ucyksZS5wcmV2aW91c05vZGU9dH12aXNpdEtleWZyYW1lcyh0LGUpe2NvbnN0IG49ZS5jdXJyZW50QW5pbWF0ZVRpbWluZ3Msbz1lLmN1cnJlbnRUaW1lbGluZS5kdXJhdGlvbixpPW4uZHVyYXRpb24sYT1lLmNyZWF0ZVN1YkNvbnRleHQoKS5jdXJyZW50VGltZWxpbmU7YS5lYXNpbmc9bi5lYXNpbmcsdC5zdHlsZXMuZm9yRWFjaCgodD0+e2EuZm9yd2FyZFRpbWUoKHQub2Zmc2V0fHwwKSppKSxhLnNldFN0eWxlcyh0LnN0eWxlcyx0LmVhc2luZyxlLmVycm9ycyxlLm9wdGlvbnMpLGEuYXBwbHlTdHlsZXNUb0tleWZyYW1lKCl9KSksZS5jdXJyZW50VGltZWxpbmUubWVyZ2VUaW1lbGluZUNvbGxlY3RlZFN0eWxlcyhhKSxlLnRyYW5zZm9ybUludG9OZXdUaW1lbGluZShvK2kpLGUucHJldmlvdXNOb2RlPXR9dmlzaXRRdWVyeSh0LGUpe2NvbnN0IG49ZS5jdXJyZW50VGltZWxpbmUuY3VycmVudFRpbWUsbz10Lm9wdGlvbnN8fHt9LGk9by5kZWxheT9jUChvLmRlbGF5KTowO2kmJig2PT09ZS5wcmV2aW91c05vZGUudHlwZXx8MD09biYmZS5jdXJyZW50VGltZWxpbmUuZ2V0Q3VycmVudFN0eWxlUHJvcGVydGllcygpLmxlbmd0aCkmJihlLmN1cnJlbnRUaW1lbGluZS5zbmFwc2hvdEN1cnJlbnRTdHlsZXMoKSxlLnByZXZpb3VzTm9kZT1aUCk7bGV0IGE9bjtjb25zdCByPWUuaW52b2tlUXVlcnkodC5zZWxlY3Rvcix0Lm9yaWdpbmFsU2VsZWN0b3IsdC5saW1pdCx0LmluY2x1ZGVTZWxmLCEhby5vcHRpb25hbCxlLmVycm9ycyk7ZS5jdXJyZW50UXVlcnlUb3RhbD1yLmxlbmd0aDtsZXQgcz1udWxsO3IuZm9yRWFjaCgoKG4sbyk9PntlLmN1cnJlbnRRdWVyeUluZGV4PW87Y29uc3Qgcj1lLmNyZWF0ZVN1YkNvbnRleHQodC5vcHRpb25zLG4pO2kmJnIuZGVsYXlOZXh0U3RlcChpKSxuPT09ZS5lbGVtZW50JiYocz1yLmN1cnJlbnRUaW1lbGluZSksa1AodGhpcyx0LmFuaW1hdGlvbixyKSxyLmN1cnJlbnRUaW1lbGluZS5hcHBseVN0eWxlc1RvS2V5ZnJhbWUoKTthPU1hdGgubWF4KGEsci5jdXJyZW50VGltZWxpbmUuY3VycmVudFRpbWUpfSkpLGUuY3VycmVudFF1ZXJ5SW5kZXg9MCxlLmN1cnJlbnRRdWVyeVRvdGFsPTAsZS50cmFuc2Zvcm1JbnRvTmV3VGltZWxpbmUoYSkscyYmKGUuY3VycmVudFRpbWVsaW5lLm1lcmdlVGltZWxpbmVDb2xsZWN0ZWRTdHlsZXMocyksZS5jdXJyZW50VGltZWxpbmUuc25hcHNob3RDdXJyZW50U3R5bGVzKCkpLGUucHJldmlvdXNOb2RlPXR9dmlzaXRTdGFnZ2VyKHQsZSl7Y29uc3Qgbj1lLnBhcmVudENvbnRleHQsbz1lLmN1cnJlbnRUaW1lbGluZSxpPXQudGltaW5ncyxhPU1hdGguYWJzKGkuZHVyYXRpb24pLHI9YSooZS5jdXJyZW50UXVlcnlUb3RhbC0xKTtsZXQgcz1hKmUuY3VycmVudFF1ZXJ5SW5kZXg7c3dpdGNoKGkuZHVyYXRpb248MD8icmV2ZXJzZSI6aS5lYXNpbmcpe2Nhc2UicmV2ZXJzZSI6cz1yLXM7YnJlYWs7Y2FzZSJmdWxsIjpzPW4uY3VycmVudFN0YWdnZXJUaW1lfWNvbnN0IGw9ZS5jdXJyZW50VGltZWxpbmU7cyYmbC5kZWxheU5leHRTdGVwKHMpO2NvbnN0IGM9bC5jdXJyZW50VGltZTtrUCh0aGlzLHQuYW5pbWF0aW9uLGUpLGUucHJldmlvdXNOb2RlPXQsbi5jdXJyZW50U3RhZ2dlclRpbWU9by5jdXJyZW50VGltZS1jKyhvLnN0YXJ0VGltZS1uLmN1cnJlbnRUaW1lbGluZS5zdGFydFRpbWUpfX1jb25zdCBaUD17fTtjbGFzcyBYUHtjb25zdHJ1Y3Rvcih0LGUsbixvLGksYSxyLHMpe3RoaXMuX2RyaXZlcj10LHRoaXMuZWxlbWVudD1lLHRoaXMuc3ViSW5zdHJ1Y3Rpb25zPW4sdGhpcy5fZW50ZXJDbGFzc05hbWU9byx0aGlzLl9sZWF2ZUNsYXNzTmFtZT1pLHRoaXMuZXJyb3JzPWEsdGhpcy50aW1lbGluZXM9cix0aGlzLnBhcmVudENvbnRleHQ9bnVsbCx0aGlzLmN1cnJlbnRBbmltYXRlVGltaW5ncz1udWxsLHRoaXMucHJldmlvdXNOb2RlPVpQLHRoaXMuc3ViQ29udGV4dENvdW50PTAsdGhpcy5vcHRpb25zPXt9LHRoaXMuY3VycmVudFF1ZXJ5SW5kZXg9MCx0aGlzLmN1cnJlbnRRdWVyeVRvdGFsPTAsdGhpcy5jdXJyZW50U3RhZ2dlclRpbWU9MCx0aGlzLmN1cnJlbnRUaW1lbGluZT1zfHxuZXcgS1AodGhpcy5fZHJpdmVyLGUsMCksci5wdXNoKHRoaXMuY3VycmVudFRpbWVsaW5lKX1nZXQgcGFyYW1zKCl7cmV0dXJuIHRoaXMub3B0aW9ucy5wYXJhbXN9dXBkYXRlT3B0aW9ucyh0LGUpe2lmKCF0KXJldHVybjtjb25zdCBuPXQ7bGV0IG89dGhpcy5vcHRpb25zO251bGwhPW4uZHVyYXRpb24mJihvLmR1cmF0aW9uPWNQKG4uZHVyYXRpb24pKSxudWxsIT1uLmRlbGF5JiYoby5kZWxheT1jUChuLmRlbGF5KSk7Y29uc3QgaT1uLnBhcmFtcztpZihpKXtsZXQgdD1vLnBhcmFtczt0fHwodD10aGlzLm9wdGlvbnMucGFyYW1zPXt9KSxPYmplY3Qua2V5cyhpKS5mb3JFYWNoKChuPT57ZSYmdC5oYXNPd25Qcm9wZXJ0eShuKXx8KHRbbl09TVAoaVtuXSx0LHRoaXMuZXJyb3JzKSl9KSl9fV9jb3B5T3B0aW9ucygpe2NvbnN0IHQ9e307aWYodGhpcy5vcHRpb25zKXtjb25zdCBlPXRoaXMub3B0aW9ucy5wYXJhbXM7aWYoZSl7Y29uc3Qgbj10LnBhcmFtcz17fTtPYmplY3Qua2V5cyhlKS5mb3JFYWNoKCh0PT57blt0XT1lW3RdfSkpfX1yZXR1cm4gdH1jcmVhdGVTdWJDb250ZXh0KHQ9bnVsbCxlLG4pe2NvbnN0IG89ZXx8dGhpcy5lbGVtZW50LGk9bmV3IFhQKHRoaXMuX2RyaXZlcixvLHRoaXMuc3ViSW5zdHJ1Y3Rpb25zLHRoaXMuX2VudGVyQ2xhc3NOYW1lLHRoaXMuX2xlYXZlQ2xhc3NOYW1lLHRoaXMuZXJyb3JzLHRoaXMudGltZWxpbmVzLHRoaXMuY3VycmVudFRpbWVsaW5lLmZvcmsobyxufHwwKSk7cmV0dXJuIGkucHJldmlvdXNOb2RlPXRoaXMucHJldmlvdXNOb2RlLGkuY3VycmVudEFuaW1hdGVUaW1pbmdzPXRoaXMuY3VycmVudEFuaW1hdGVUaW1pbmdzLGkub3B0aW9ucz10aGlzLl9jb3B5T3B0aW9ucygpLGkudXBkYXRlT3B0aW9ucyh0KSxpLmN1cnJlbnRRdWVyeUluZGV4PXRoaXMuY3VycmVudFF1ZXJ5SW5kZXgsaS5jdXJyZW50UXVlcnlUb3RhbD10aGlzLmN1cnJlbnRRdWVyeVRvdGFsLGkucGFyZW50Q29udGV4dD10aGlzLHRoaXMuc3ViQ29udGV4dENvdW50KyssaX10cmFuc2Zvcm1JbnRvTmV3VGltZWxpbmUodCl7cmV0dXJuIHRoaXMucHJldmlvdXNOb2RlPVpQLHRoaXMuY3VycmVudFRpbWVsaW5lPXRoaXMuY3VycmVudFRpbWVsaW5lLmZvcmsodGhpcy5lbGVtZW50LHQpLHRoaXMudGltZWxpbmVzLnB1c2godGhpcy5jdXJyZW50VGltZWxpbmUpLHRoaXMuY3VycmVudFRpbWVsaW5lfWFwcGVuZEluc3RydWN0aW9uVG9UaW1lbGluZSh0LGUsbil7Y29uc3Qgbz17ZHVyYXRpb246bnVsbCE9ZT9lOnQuZHVyYXRpb24sZGVsYXk6dGhpcy5jdXJyZW50VGltZWxpbmUuY3VycmVudFRpbWUrKG51bGwhPW4/bjowKSt0LmRlbGF5LGVhc2luZzoiIn0saT1uZXcgSlAodGhpcy5fZHJpdmVyLHQuZWxlbWVudCx0LmtleWZyYW1lcyx0LnByZVN0eWxlUHJvcHMsdC5wb3N0U3R5bGVQcm9wcyxvLHQuc3RyZXRjaFN0YXJ0aW5nS2V5ZnJhbWUpO3JldHVybiB0aGlzLnRpbWVsaW5lcy5wdXNoKGkpLG99aW5jcmVtZW50VGltZSh0KXt0aGlzLmN1cnJlbnRUaW1lbGluZS5mb3J3YXJkVGltZSh0aGlzLmN1cnJlbnRUaW1lbGluZS5kdXJhdGlvbit0KX1kZWxheU5leHRTdGVwKHQpe3Q+MCYmdGhpcy5jdXJyZW50VGltZWxpbmUuZGVsYXlOZXh0U3RlcCh0KX1pbnZva2VRdWVyeSh0LGUsbixvLGksYSl7bGV0IHI9W107aWYobyYmci5wdXNoKHRoaXMuZWxlbWVudCksdC5sZW5ndGg+MCl7dD0odD10LnJlcGxhY2UoV1AsIi4iK3RoaXMuX2VudGVyQ2xhc3NOYW1lKSkucmVwbGFjZShHUCwiLiIrdGhpcy5fbGVhdmVDbGFzc05hbWUpO2xldCBlPXRoaXMuX2RyaXZlci5xdWVyeSh0aGlzLmVsZW1lbnQsdCwxIT1uKTswIT09biYmKGU9bjwwP2Uuc2xpY2UoZS5sZW5ndGgrbixlLmxlbmd0aCk6ZS5zbGljZSgwLG4pKSxyLnB1c2goLi4uZSl9cmV0dXJuIGl8fDAhPXIubGVuZ3RofHxhLnB1c2goYFxgcXVlcnkoIiR7ZX0iKVxgIHJldHVybmVkIHplcm8gZWxlbWVudHMuIChVc2UgXGBxdWVyeSgiJHtlfSIsIHsgb3B0aW9uYWw6IHRydWUgfSlcYCBpZiB5b3Ugd2lzaCB0byBhbGxvdyB0aGlzLilgKSxyfX1jbGFzcyBLUHtjb25zdHJ1Y3Rvcih0LGUsbixvKXt0aGlzLl9kcml2ZXI9dCx0aGlzLmVsZW1lbnQ9ZSx0aGlzLnN0YXJ0VGltZT1uLHRoaXMuX2VsZW1lbnRUaW1lbGluZVN0eWxlc0xvb2t1cD1vLHRoaXMuZHVyYXRpb249MCx0aGlzLl9wcmV2aW91c0tleWZyYW1lPXt9LHRoaXMuX2N1cnJlbnRLZXlmcmFtZT17fSx0aGlzLl9rZXlmcmFtZXM9bmV3IE1hcCx0aGlzLl9zdHlsZVN1bW1hcnk9e30sdGhpcy5fcGVuZGluZ1N0eWxlcz17fSx0aGlzLl9iYWNrRmlsbD17fSx0aGlzLl9jdXJyZW50RW1wdHlTdGVwS2V5ZnJhbWU9bnVsbCx0aGlzLl9lbGVtZW50VGltZWxpbmVTdHlsZXNMb29rdXB8fCh0aGlzLl9lbGVtZW50VGltZWxpbmVTdHlsZXNMb29rdXA9bmV3IE1hcCksdGhpcy5fbG9jYWxUaW1lbGluZVN0eWxlcz1PYmplY3QuY3JlYXRlKHRoaXMuX2JhY2tGaWxsLHt9KSx0aGlzLl9nbG9iYWxUaW1lbGluZVN0eWxlcz10aGlzLl9lbGVtZW50VGltZWxpbmVTdHlsZXNMb29rdXAuZ2V0KGUpLHRoaXMuX2dsb2JhbFRpbWVsaW5lU3R5bGVzfHwodGhpcy5fZ2xvYmFsVGltZWxpbmVTdHlsZXM9dGhpcy5fbG9jYWxUaW1lbGluZVN0eWxlcyx0aGlzLl9lbGVtZW50VGltZWxpbmVTdHlsZXNMb29rdXAuc2V0KGUsdGhpcy5fbG9jYWxUaW1lbGluZVN0eWxlcykpLHRoaXMuX2xvYWRLZXlmcmFtZSgpfWNvbnRhaW5zQW5pbWF0aW9uKCl7c3dpdGNoKHRoaXMuX2tleWZyYW1lcy5zaXplKXtjYXNlIDA6cmV0dXJuITE7Y2FzZSAxOnJldHVybiB0aGlzLmdldEN1cnJlbnRTdHlsZVByb3BlcnRpZXMoKS5sZW5ndGg+MDtkZWZhdWx0OnJldHVybiEwfX1nZXRDdXJyZW50U3R5bGVQcm9wZXJ0aWVzKCl7cmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuX2N1cnJlbnRLZXlmcmFtZSl9Z2V0IGN1cnJlbnRUaW1lKCl7cmV0dXJuIHRoaXMuc3RhcnRUaW1lK3RoaXMuZHVyYXRpb259ZGVsYXlOZXh0U3RlcCh0KXtjb25zdCBlPTE9PXRoaXMuX2tleWZyYW1lcy5zaXplJiZPYmplY3Qua2V5cyh0aGlzLl9wZW5kaW5nU3R5bGVzKS5sZW5ndGg7dGhpcy5kdXJhdGlvbnx8ZT8odGhpcy5mb3J3YXJkVGltZSh0aGlzLmN1cnJlbnRUaW1lK3QpLGUmJnRoaXMuc25hcHNob3RDdXJyZW50U3R5bGVzKCkpOnRoaXMuc3RhcnRUaW1lKz10fWZvcmsodCxlKXtyZXR1cm4gdGhpcy5hcHBseVN0eWxlc1RvS2V5ZnJhbWUoKSxuZXcgS1AodGhpcy5fZHJpdmVyLHQsZXx8dGhpcy5jdXJyZW50VGltZSx0aGlzLl9lbGVtZW50VGltZWxpbmVTdHlsZXNMb29rdXApfV9sb2FkS2V5ZnJhbWUoKXt0aGlzLl9jdXJyZW50S2V5ZnJhbWUmJih0aGlzLl9wcmV2aW91c0tleWZyYW1lPXRoaXMuX2N1cnJlbnRLZXlmcmFtZSksdGhpcy5fY3VycmVudEtleWZyYW1lPXRoaXMuX2tleWZyYW1lcy5nZXQodGhpcy5kdXJhdGlvbiksdGhpcy5fY3VycmVudEtleWZyYW1lfHwodGhpcy5fY3VycmVudEtleWZyYW1lPU9iamVjdC5jcmVhdGUodGhpcy5fYmFja0ZpbGwse30pLHRoaXMuX2tleWZyYW1lcy5zZXQodGhpcy5kdXJhdGlvbix0aGlzLl9jdXJyZW50S2V5ZnJhbWUpKX1mb3J3YXJkRnJhbWUoKXt0aGlzLmR1cmF0aW9uKz0xLHRoaXMuX2xvYWRLZXlmcmFtZSgpfWZvcndhcmRUaW1lKHQpe3RoaXMuYXBwbHlTdHlsZXNUb0tleWZyYW1lKCksdGhpcy5kdXJhdGlvbj10LHRoaXMuX2xvYWRLZXlmcmFtZSgpfV91cGRhdGVTdHlsZSh0LGUpe3RoaXMuX2xvY2FsVGltZWxpbmVTdHlsZXNbdF09ZSx0aGlzLl9nbG9iYWxUaW1lbGluZVN0eWxlc1t0XT1lLHRoaXMuX3N0eWxlU3VtbWFyeVt0XT17dGltZTp0aGlzLmN1cnJlbnRUaW1lLHZhbHVlOmV9fWFsbG93T25seVRpbWVsaW5lU3R5bGVzKCl7cmV0dXJuIHRoaXMuX2N1cnJlbnRFbXB0eVN0ZXBLZXlmcmFtZSE9PXRoaXMuX2N1cnJlbnRLZXlmcmFtZX1hcHBseUVtcHR5U3RlcCh0KXt0JiYodGhpcy5fcHJldmlvdXNLZXlmcmFtZS5lYXNpbmc9dCksT2JqZWN0LmtleXModGhpcy5fZ2xvYmFsVGltZWxpbmVTdHlsZXMpLmZvckVhY2goKHQ9Pnt0aGlzLl9iYWNrRmlsbFt0XT10aGlzLl9nbG9iYWxUaW1lbGluZVN0eWxlc1t0XXx8dk8sdGhpcy5fY3VycmVudEtleWZyYW1lW3RdPXZPfSkpLHRoaXMuX2N1cnJlbnRFbXB0eVN0ZXBLZXlmcmFtZT10aGlzLl9jdXJyZW50S2V5ZnJhbWV9c2V0U3R5bGVzKHQsZSxuLG8pe2UmJih0aGlzLl9wcmV2aW91c0tleWZyYW1lLmVhc2luZz1lKTtjb25zdCBpPW8mJm8ucGFyYW1zfHx7fSxhPShmdW5jdGlvbiByKHQsZSl7Y29uc3Qgbj17fTtsZXQgbztyZXR1cm4gdC5mb3JFYWNoKCh0PT57IioiPT09dD8obz1vfHxPYmplY3Qua2V5cyhlKSxvLmZvckVhY2goKHQ9PntuW3RdPXZPfSkpKTpmUCh0LCExLG4pfSkpLG59Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLykodCx0aGlzLl9nbG9iYWxUaW1lbGluZVN0eWxlcyk7T2JqZWN0LmtleXMoYSkuZm9yRWFjaCgodD0+e2NvbnN0IGU9TVAoYVt0XSxpLG4pO3RoaXMuX3BlbmRpbmdTdHlsZXNbdF09ZSx0aGlzLl9sb2NhbFRpbWVsaW5lU3R5bGVzLmhhc093blByb3BlcnR5KHQpfHwodGhpcy5fYmFja0ZpbGxbdF09dGhpcy5fZ2xvYmFsVGltZWxpbmVTdHlsZXMuaGFzT3duUHJvcGVydHkodCk/dGhpcy5fZ2xvYmFsVGltZWxpbmVTdHlsZXNbdF06dk8pLHRoaXMuX3VwZGF0ZVN0eWxlKHQsZSl9KSl9YXBwbHlTdHlsZXNUb0tleWZyYW1lKCl7Y29uc3QgdD10aGlzLl9wZW5kaW5nU3R5bGVzLGU9T2JqZWN0LmtleXModCk7MCE9ZS5sZW5ndGgmJih0aGlzLl9wZW5kaW5nU3R5bGVzPXt9LGUuZm9yRWFjaCgoZT0+e3RoaXMuX2N1cnJlbnRLZXlmcmFtZVtlXT10W2VdfSkpLE9iamVjdC5rZXlzKHRoaXMuX2xvY2FsVGltZWxpbmVTdHlsZXMpLmZvckVhY2goKHQ9Pnt0aGlzLl9jdXJyZW50S2V5ZnJhbWUuaGFzT3duUHJvcGVydHkodCl8fCh0aGlzLl9jdXJyZW50S2V5ZnJhbWVbdF09dGhpcy5fbG9jYWxUaW1lbGluZVN0eWxlc1t0XSl9KSkpfXNuYXBzaG90Q3VycmVudFN0eWxlcygpe09iamVjdC5rZXlzKHRoaXMuX2xvY2FsVGltZWxpbmVTdHlsZXMpLmZvckVhY2goKHQ9Pntjb25zdCBlPXRoaXMuX2xvY2FsVGltZWxpbmVTdHlsZXNbdF07dGhpcy5fcGVuZGluZ1N0eWxlc1t0XT1lLHRoaXMuX3VwZGF0ZVN0eWxlKHQsZSl9KSl9Z2V0RmluYWxLZXlmcmFtZSgpe3JldHVybiB0aGlzLl9rZXlmcmFtZXMuZ2V0KHRoaXMuZHVyYXRpb24pfWdldCBwcm9wZXJ0aWVzKCl7Y29uc3QgdD1bXTtmb3IobGV0IGUgaW4gdGhpcy5fY3VycmVudEtleWZyYW1lKXQucHVzaChlKTtyZXR1cm4gdH1tZXJnZVRpbWVsaW5lQ29sbGVjdGVkU3R5bGVzKHQpe09iamVjdC5rZXlzKHQuX3N0eWxlU3VtbWFyeSkuZm9yRWFjaCgoZT0+e2NvbnN0IG49dGhpcy5fc3R5bGVTdW1tYXJ5W2VdLG89dC5fc3R5bGVTdW1tYXJ5W2VdOyghbnx8by50aW1lPm4udGltZSkmJnRoaXMuX3VwZGF0ZVN0eWxlKGUsby52YWx1ZSl9KSl9YnVpbGRLZXlmcmFtZXMoKXt0aGlzLmFwcGx5U3R5bGVzVG9LZXlmcmFtZSgpO2NvbnN0IHQ9bmV3IFNldCxlPW5ldyBTZXQsbj0xPT09dGhpcy5fa2V5ZnJhbWVzLnNpemUmJjA9PT10aGlzLmR1cmF0aW9uO2xldCBvPVtdO3RoaXMuX2tleWZyYW1lcy5mb3JFYWNoKCgoaSxhKT0+e2NvbnN0IHI9ZlAoaSwhMCk7T2JqZWN0LmtleXMocikuZm9yRWFjaCgobj0+e2NvbnN0IG89cltuXTsiISI9PW8/dC5hZGQobik6bz09dk8mJmUuYWRkKG4pfSkpLG58fChyLm9mZnNldD1hL3RoaXMuZHVyYXRpb24pLG8ucHVzaChyKX0pKTtjb25zdCBpPXQuc2l6ZT92UCh0LnZhbHVlcygpKTpbXSxhPWUuc2l6ZT92UChlLnZhbHVlcygpKTpbXTtpZihuKXtjb25zdCB0PW9bMF0sZT1tUCh0KTt0Lm9mZnNldD0wLGUub2Zmc2V0PTEsbz1bdCxlXX1yZXR1cm4galAodGhpcy5lbGVtZW50LG8saSxhLHRoaXMuZHVyYXRpb24sdGhpcy5zdGFydFRpbWUsdGhpcy5lYXNpbmcsITEpfX1jbGFzcyBKUCBleHRlbmRzIEtQe2NvbnN0cnVjdG9yKHQsZSxuLG8saSxhLHI9ITEpe3N1cGVyKHQsZSxhLmRlbGF5KSx0aGlzLmtleWZyYW1lcz1uLHRoaXMucHJlU3R5bGVQcm9wcz1vLHRoaXMucG9zdFN0eWxlUHJvcHM9aSx0aGlzLl9zdHJldGNoU3RhcnRpbmdLZXlmcmFtZT1yLHRoaXMudGltaW5ncz17ZHVyYXRpb246YS5kdXJhdGlvbixkZWxheTphLmRlbGF5LGVhc2luZzphLmVhc2luZ319Y29udGFpbnNBbmltYXRpb24oKXtyZXR1cm4gdGhpcy5rZXlmcmFtZXMubGVuZ3RoPjF9YnVpbGRLZXlmcmFtZXMoKXtsZXQgdD10aGlzLmtleWZyYW1lcyx7ZGVsYXk6ZSxkdXJhdGlvbjpuLGVhc2luZzpvfT10aGlzLnRpbWluZ3M7aWYodGhpcy5fc3RyZXRjaFN0YXJ0aW5nS2V5ZnJhbWUmJmUpe2NvbnN0IGk9W10sYT1uK2Uscj1lL2Escz1mUCh0WzBdLCExKTtzLm9mZnNldD0wLGkucHVzaChzKTtjb25zdCBsPWZQKHRbMF0sITEpO2wub2Zmc2V0PVFQKHIpLGkucHVzaChsKTtjb25zdCBjPXQubGVuZ3RoLTE7Zm9yKGxldCBvPTE7bzw9YztvKyspe2xldCByPWZQKHRbb10sITEpO3Iub2Zmc2V0PVFQKChlK3Iub2Zmc2V0Km4pL2EpLGkucHVzaChyKX1uPWEsZT0wLG89IiIsdD1pfXJldHVybiBqUCh0aGlzLmVsZW1lbnQsdCx0aGlzLnByZVN0eWxlUHJvcHMsdGhpcy5wb3N0U3R5bGVQcm9wcyxuLGUsbywhMCl9fWZ1bmN0aW9uIFFQKHQsZT0zKXtjb25zdCBuPU1hdGgucG93KDEwLGUtMSk7cmV0dXJuIE1hdGgucm91bmQodCpuKS9ufWNsYXNzICRQe30KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgdHcgZXh0ZW5kcyAkUHtub3JtYWxpemVQcm9wZXJ0eU5hbWUodCxlKXtyZXR1cm4gT1AodCl9bm9ybWFsaXplU3R5bGVWYWx1ZSh0LGUsbixvKXtsZXQgaT0iIjtjb25zdCBhPW4udG9TdHJpbmcoKS50cmltKCk7aWYoZXdbZV0mJjAhPT1uJiYiMCIhPT1uKWlmKCJudW1iZXIiPT10eXBlb2YgbilpPSJweCI7ZWxzZXtjb25zdCBlPW4ubWF0Y2goL15bKy1dP1tcZFwuXSsoW2Etel0qKSQvKTtlJiYwPT1lWzFdLmxlbmd0aCYmby5wdXNoKGBQbGVhc2UgcHJvdmlkZSBhIENTUyB1bml0IHZhbHVlIGZvciAke3R9OiR7bn1gKX1yZXR1cm4gYStpfX1jb25zdCBldz0oZnVuY3Rpb24gbncodCl7Y29uc3QgZT17fTtyZXR1cm4gdC5mb3JFYWNoKCh0PT5lW3RdPSEwKSksZX0pKCJ3aWR0aCxoZWlnaHQsbWluV2lkdGgsbWluSGVpZ2h0LG1heFdpZHRoLG1heEhlaWdodCxsZWZ0LHRvcCxib3R0b20scmlnaHQsZm9udFNpemUsb3V0bGluZVdpZHRoLG91dGxpbmVPZmZzZXQscGFkZGluZ1RvcCxwYWRkaW5nTGVmdCxwYWRkaW5nQm90dG9tLHBhZGRpbmdSaWdodCxtYXJnaW5Ub3AsbWFyZ2luTGVmdCxtYXJnaW5Cb3R0b20sbWFyZ2luUmlnaHQsYm9yZGVyUmFkaXVzLGJvcmRlcldpZHRoLGJvcmRlclRvcFdpZHRoLGJvcmRlckxlZnRXaWR0aCxib3JkZXJSaWdodFdpZHRoLGJvcmRlckJvdHRvbVdpZHRoLHRleHRJbmRlbnQscGVyc3BlY3RpdmUiLnNwbGl0KCIsIikpO2Z1bmN0aW9uIG93KHQsZSxuLG8saSxhLHIscyxsLGMsZCxwLG0pe3JldHVybnt0eXBlOjAsZWxlbWVudDp0LHRyaWdnZXJOYW1lOmUsaXNSZW1vdmFsVHJhbnNpdGlvbjppLGZyb21TdGF0ZTpuLGZyb21TdHlsZXM6YSx0b1N0YXRlOm8sdG9TdHlsZXM6cix0aW1lbGluZXM6cyxxdWVyaWVkRWxlbWVudHM6bCxwcmVTdHlsZVByb3BzOmMscG9zdFN0eWxlUHJvcHM6ZCx0b3RhbFRpbWU6cCxlcnJvcnM6bX19Y29uc3QgaXc9e307Y2xhc3MgYXd7Y29uc3RydWN0b3IodCxlLG4pe3RoaXMuX3RyaWdnZXJOYW1lPXQsdGhpcy5hc3Q9ZSx0aGlzLl9zdGF0ZVN0eWxlcz1ufW1hdGNoKHQsZSxuLG8pe3JldHVybihmdW5jdGlvbiBpKHQsZSxuLG8sYSl7cmV0dXJuIHQuc29tZSgodD0+dChlLG4sbyxhKSkpfSkodGhpcy5hc3QubWF0Y2hlcnMsdCxlLG4sbyl9YnVpbGRTdHlsZXModCxlLG4pe2NvbnN0IG89dGhpcy5fc3RhdGVTdHlsZXNbIioiXSxpPXRoaXMuX3N0YXRlU3R5bGVzW3RdLGE9bz9vLmJ1aWxkU3R5bGVzKGUsbik6e307cmV0dXJuIGk/aS5idWlsZFN0eWxlcyhlLG4pOmF9YnVpbGQodCxlLG4sbyxpLGEscixzLGwsYyl7Y29uc3QgZD1bXSxwPXRoaXMuYXN0Lm9wdGlvbnMmJnRoaXMuYXN0Lm9wdGlvbnMucGFyYW1zfHxpdyxtPXRoaXMuYnVpbGRTdHlsZXMobixyJiZyLnBhcmFtc3x8aXcsZCksZj1zJiZzLnBhcmFtc3x8aXcsdT10aGlzLmJ1aWxkU3R5bGVzKG8sZixkKSxnPW5ldyBTZXQsaD1uZXcgTWFwLGI9bmV3IE1hcCx5PSJ2b2lkIj09PW8sXz17cGFyYW1zOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxwKSxmKX0sQz1jP1tdOllQKHQsZSx0aGlzLmFzdC5hbmltYXRpb24saSxhLG0sdSxfLGwsZCk7bGV0IE09MDtpZihDLmZvckVhY2goKHQ9PntNPU1hdGgubWF4KHQuZHVyYXRpb24rdC5kZWxheSxNKX0pKSxkLmxlbmd0aClyZXR1cm4gb3coZSx0aGlzLl90cmlnZ2VyTmFtZSxuLG8seSxtLHUsW10sW10saCxiLE0sZCk7Qy5mb3JFYWNoKCh0PT57Y29uc3Qgbj10LmVsZW1lbnQsbz1qTyhoLG4se30pO3QucHJlU3R5bGVQcm9wcy5mb3JFYWNoKCh0PT5vW3RdPSEwKSk7Y29uc3QgaT1qTyhiLG4se30pO3QucG9zdFN0eWxlUHJvcHMuZm9yRWFjaCgodD0+aVt0XT0hMCkpLG4hPT1lJiZnLmFkZChuKX0pKTtjb25zdCB2PXZQKGcudmFsdWVzKCkpO3JldHVybiBvdyhlLHRoaXMuX3RyaWdnZXJOYW1lLG4sbyx5LG0sdSxDLHYsaCxiLE0pfX1jbGFzcyByd3tjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5zdHlsZXM9dCx0aGlzLmRlZmF1bHRQYXJhbXM9ZSx0aGlzLm5vcm1hbGl6ZXI9bn1idWlsZFN0eWxlcyh0LGUpe2NvbnN0IG49e30sbz1tUCh0aGlzLmRlZmF1bHRQYXJhbXMpO3JldHVybiBPYmplY3Qua2V5cyh0KS5mb3JFYWNoKChlPT57Y29uc3Qgbj10W2VdO251bGwhPW4mJihvW2VdPW4pfSkpLHRoaXMuc3R5bGVzLnN0eWxlcy5mb3JFYWNoKCh0PT57aWYoInN0cmluZyIhPXR5cGVvZiB0KXtjb25zdCBpPXQ7T2JqZWN0LmtleXMoaSkuZm9yRWFjaCgodD0+e2xldCBhPWlbdF07YS5sZW5ndGg+MSYmKGE9TVAoYSxvLGUpKTtjb25zdCByPXRoaXMubm9ybWFsaXplci5ub3JtYWxpemVQcm9wZXJ0eU5hbWUodCxlKTthPXRoaXMubm9ybWFsaXplci5ub3JtYWxpemVTdHlsZVZhbHVlKHQscixhLGUpLG5bcl09YX0pKX19KSksbn19Y2xhc3Mgc3d7Y29uc3RydWN0b3IodCxlLG4pe3RoaXMubmFtZT10LHRoaXMuYXN0PWUsdGhpcy5fbm9ybWFsaXplcj1uLHRoaXMudHJhbnNpdGlvbkZhY3Rvcmllcz1bXSx0aGlzLnN0YXRlcz17fSxlLnN0YXRlcy5mb3JFYWNoKCh0PT57dGhpcy5zdGF0ZXNbdC5uYW1lXT1uZXcgcncodC5zdHlsZSx0Lm9wdGlvbnMmJnQub3B0aW9ucy5wYXJhbXN8fHt9LG4pfSkpLGx3KHRoaXMuc3RhdGVzLCJ0cnVlIiwiMSIpLGx3KHRoaXMuc3RhdGVzLCJmYWxzZSIsIjAiKSxlLnRyYW5zaXRpb25zLmZvckVhY2goKGU9Pnt0aGlzLnRyYW5zaXRpb25GYWN0b3JpZXMucHVzaChuZXcgYXcodCxlLHRoaXMuc3RhdGVzKSl9KSksdGhpcy5mYWxsYmFja1RyYW5zaXRpb249KGZ1bmN0aW9uIG8odCxlLG4pe3JldHVybiBuZXcgYXcodCx7dHlwZToxLGFuaW1hdGlvbjp7dHlwZToyLHN0ZXBzOltdLG9wdGlvbnM6bnVsbH0sbWF0Y2hlcnM6Wyh0LGUpPT4hMF0sb3B0aW9uczpudWxsLHF1ZXJ5Q291bnQ6MCxkZXBDb3VudDowfSxlKX0pKHQsdGhpcy5zdGF0ZXMpfWdldCBjb250YWluc1F1ZXJpZXMoKXtyZXR1cm4gdGhpcy5hc3QucXVlcnlDb3VudD4wfW1hdGNoVHJhbnNpdGlvbih0LGUsbixvKXtyZXR1cm4gdGhpcy50cmFuc2l0aW9uRmFjdG9yaWVzLmZpbmQoKGk9PmkubWF0Y2godCxlLG4sbykpKXx8bnVsbH1tYXRjaFN0eWxlcyh0LGUsbil7cmV0dXJuIHRoaXMuZmFsbGJhY2tUcmFuc2l0aW9uLmJ1aWxkU3R5bGVzKHQsZSxuKX19ZnVuY3Rpb24gbHcodCxlLG4pe3QuaGFzT3duUHJvcGVydHkoZSk/dC5oYXNPd25Qcm9wZXJ0eShuKXx8KHRbbl09dFtlXSk6dC5oYXNPd25Qcm9wZXJ0eShuKSYmKHRbZV09dFtuXSl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NvbnN0IGN3PW5ldyBVUDtjbGFzcyBkd3tjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5ib2R5Tm9kZT10LHRoaXMuX2RyaXZlcj1lLHRoaXMuX25vcm1hbGl6ZXI9bix0aGlzLl9hbmltYXRpb25zPXt9LHRoaXMuX3BsYXllcnNCeUlkPXt9LHRoaXMucGxheWVycz1bXX1yZWdpc3Rlcih0LGUpe2NvbnN0IG49W10sbz1JUCh0aGlzLl9kcml2ZXIsZSxuKTtpZihuLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBidWlsZCB0aGUgYW5pbWF0aW9uIGR1ZSB0byB0aGUgZm9sbG93aW5nIGVycm9yczogJHtuLmpvaW4oIlxuIil9YCk7dGhpcy5fYW5pbWF0aW9uc1t0XT1vfV9idWlsZFBsYXllcih0LGUsbil7Y29uc3Qgbz10LmVsZW1lbnQsaT1GTygwLHRoaXMuX25vcm1hbGl6ZXIsMCx0LmtleWZyYW1lcyxlLG4pO3JldHVybiB0aGlzLl9kcml2ZXIuYW5pbWF0ZShvLGksdC5kdXJhdGlvbix0LmRlbGF5LHQuZWFzaW5nLFtdLCEwKX1jcmVhdGUodCxlLG49e30pe2NvbnN0IG89W10saT10aGlzLl9hbmltYXRpb25zW3RdO2xldCBhO2NvbnN0IHI9bmV3IE1hcDtpZihpPyhhPVlQKHRoaXMuX2RyaXZlcixlLGksb1AsaVAse30se30sbixjdyxvKSxhLmZvckVhY2goKHQ9Pntjb25zdCBlPWpPKHIsdC5lbGVtZW50LHt9KTt0LnBvc3RTdHlsZVByb3BzLmZvckVhY2goKHQ9PmVbdF09bnVsbCkpfSkpKTooby5wdXNoKCJUaGUgcmVxdWVzdGVkIGFuaW1hdGlvbiBkb2Vzbid0IGV4aXN0IG9yIGhhcyBhbHJlYWR5IGJlZW4gZGVzdHJveWVkIiksYT1bXSksby5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gY3JlYXRlIHRoZSBhbmltYXRpb24gZHVlIHRvIHRoZSBmb2xsb3dpbmcgZXJyb3JzOiAke28uam9pbigiXG4iKX1gKTtyLmZvckVhY2goKCh0LGUpPT57T2JqZWN0LmtleXModCkuZm9yRWFjaCgobj0+e3Rbbl09dGhpcy5fZHJpdmVyLmNvbXB1dGVTdHlsZShlLG4sdk8pfSkpfSkpO2NvbnN0IHM9SE8oYS5tYXAoKHQ9Pntjb25zdCBlPXIuZ2V0KHQuZWxlbWVudCk7cmV0dXJuIHRoaXMuX2J1aWxkUGxheWVyKHQse30sZSl9KSkpO3JldHVybiB0aGlzLl9wbGF5ZXJzQnlJZFt0XT1zLHMub25EZXN0cm95KCgoKT0+dGhpcy5kZXN0cm95KHQpKSksdGhpcy5wbGF5ZXJzLnB1c2gocyksc31kZXN0cm95KHQpe2NvbnN0IGU9dGhpcy5fZ2V0UGxheWVyKHQpO2UuZGVzdHJveSgpLGRlbGV0ZSB0aGlzLl9wbGF5ZXJzQnlJZFt0XTtjb25zdCBuPXRoaXMucGxheWVycy5pbmRleE9mKGUpO24+PTAmJnRoaXMucGxheWVycy5zcGxpY2UobiwxKX1fZ2V0UGxheWVyKHQpe2NvbnN0IGU9dGhpcy5fcGxheWVyc0J5SWRbdF07aWYoIWUpdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gZmluZCB0aGUgdGltZWxpbmUgcGxheWVyIHJlZmVyZW5jZWQgYnkgJHt0fWApO3JldHVybiBlfWxpc3Rlbih0LGUsbixvKXtjb25zdCBpPVZPKGUsIiIsIiIsIiIpO3JldHVybiBMTyh0aGlzLl9nZXRQbGF5ZXIodCksbixpLG8pLCgpPT57fX1jb21tYW5kKHQsZSxuLG8pe2lmKCJyZWdpc3RlciI9PW4pcmV0dXJuIHZvaWQgdGhpcy5yZWdpc3Rlcih0LG9bMF0pO2lmKCJjcmVhdGUiPT1uKXtyZXR1cm4gdm9pZCB0aGlzLmNyZWF0ZSh0LGUsb1swXXx8e30pfWNvbnN0IGk9dGhpcy5fZ2V0UGxheWVyKHQpO3N3aXRjaChuKXtjYXNlInBsYXkiOmkucGxheSgpO2JyZWFrO2Nhc2UicGF1c2UiOmkucGF1c2UoKTticmVhaztjYXNlInJlc2V0IjppLnJlc2V0KCk7YnJlYWs7Y2FzZSJyZXN0YXJ0IjppLnJlc3RhcnQoKTticmVhaztjYXNlImZpbmlzaCI6aS5maW5pc2goKTticmVhaztjYXNlImluaXQiOmkuaW5pdCgpO2JyZWFrO2Nhc2Uic2V0UG9zaXRpb24iOmkuc2V0UG9zaXRpb24ocGFyc2VGbG9hdChvWzBdKSk7YnJlYWs7Y2FzZSJkZXN0cm95Ijp0aGlzLmRlc3Ryb3kodCl9fX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3QgcHc9Im5nLWFuaW1hdGUtcXVldWVkIixtdz0ibmctYW5pbWF0ZS1kaXNhYmxlZCIsZnc9Ii5uZy1hbmltYXRlLWRpc2FibGVkIix1dz1bXSxndz17bmFtZXNwYWNlSWQ6IiIsc2V0Rm9yUmVtb3ZhbDohMSxzZXRGb3JNb3ZlOiExLGhhc0FuaW1hdGlvbjohMSxyZW1vdmVkQmVmb3JlUXVlcmllZDohMX0saHc9e25hbWVzcGFjZUlkOiIiLHNldEZvck1vdmU6ITEsc2V0Rm9yUmVtb3ZhbDohMSxoYXNBbmltYXRpb246ITEscmVtb3ZlZEJlZm9yZVF1ZXJpZWQ6ITB9O2NsYXNzIGJ3e2NvbnN0cnVjdG9yKHQsZT0iIil7dGhpcy5uYW1lc3BhY2VJZD1lO2NvbnN0IG49dCYmdC5oYXNPd25Qcm9wZXJ0eSgidmFsdWUiKTtpZih0aGlzLnZhbHVlPShmdW5jdGlvbiBvKHQpe3JldHVybiBudWxsIT10P3Q6bnVsbH0pKG4/dC52YWx1ZTp0KSxuKXtjb25zdCBlPW1QKHQpO2RlbGV0ZSBlLnZhbHVlLHRoaXMub3B0aW9ucz1lfWVsc2UgdGhpcy5vcHRpb25zPXt9O3RoaXMub3B0aW9ucy5wYXJhbXN8fCh0aGlzLm9wdGlvbnMucGFyYW1zPXt9KX1nZXQgcGFyYW1zKCl7cmV0dXJuIHRoaXMub3B0aW9ucy5wYXJhbXN9YWJzb3JiT3B0aW9ucyh0KXtjb25zdCBlPXQucGFyYW1zO2lmKGUpe2NvbnN0IHQ9dGhpcy5vcHRpb25zLnBhcmFtcztPYmplY3Qua2V5cyhlKS5mb3JFYWNoKChuPT57bnVsbD09dFtuXSYmKHRbbl09ZVtuXSl9KSl9fX1jb25zdCB5dz0idm9pZCIsX3c9bmV3IGJ3KHl3KTtjbGFzcyBDd3tjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5pZD10LHRoaXMuaG9zdEVsZW1lbnQ9ZSx0aGlzLl9lbmdpbmU9bix0aGlzLnBsYXllcnM9W10sdGhpcy5fdHJpZ2dlcnM9e30sdGhpcy5fcXVldWU9W10sdGhpcy5fZWxlbWVudExpc3RlbmVycz1uZXcgTWFwLHRoaXMuX2hvc3RDbGFzc05hbWU9Im5nLXRucy0iK3Qsa3coZSx0aGlzLl9ob3N0Q2xhc3NOYW1lKX1saXN0ZW4odCxlLG4sbyl7aWYoIXRoaXMuX3RyaWdnZXJzLmhhc093blByb3BlcnR5KGUpKXRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIGxpc3RlbiBvbiB0aGUgYW5pbWF0aW9uIHRyaWdnZXIgZXZlbnQgIiR7bn0iIGJlY2F1c2UgdGhlIGFuaW1hdGlvbiB0cmlnZ2VyICIke2V9IiBkb2Vzbid0IGV4aXN0IWApO2lmKG51bGw9PW58fDA9PW4ubGVuZ3RoKXRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIGxpc3RlbiBvbiB0aGUgYW5pbWF0aW9uIHRyaWdnZXIgIiR7ZX0iIGJlY2F1c2UgdGhlIHByb3ZpZGVkIGV2ZW50IGlzIHVuZGVmaW5lZCFgKTtpZighKGZ1bmN0aW9uIGkodCl7cmV0dXJuInN0YXJ0Ij09dHx8ImRvbmUiPT10fSkobikpdGhyb3cgbmV3IEVycm9yKGBUaGUgcHJvdmlkZWQgYW5pbWF0aW9uIHRyaWdnZXIgZXZlbnQgIiR7bn0iIGZvciB0aGUgYW5pbWF0aW9uIHRyaWdnZXIgIiR7ZX0iIGlzIG5vdCBzdXBwb3J0ZWQhYCk7Y29uc3QgYT1qTyh0aGlzLl9lbGVtZW50TGlzdGVuZXJzLHQsW10pLHI9e25hbWU6ZSxwaGFzZTpuLGNhbGxiYWNrOm99O2EucHVzaChyKTtjb25zdCBzPWpPKHRoaXMuX2VuZ2luZS5zdGF0ZXNCeUVsZW1lbnQsdCx7fSk7cmV0dXJuIHMuaGFzT3duUHJvcGVydHkoZSl8fChrdyh0LGFQKSxrdyh0LCJuZy10cmlnZ2VyLSIrZSksc1tlXT1fdyksKCk9Pnt0aGlzLl9lbmdpbmUuYWZ0ZXJGbHVzaCgoKCk9Pntjb25zdCB0PWEuaW5kZXhPZihyKTt0Pj0wJiZhLnNwbGljZSh0LDEpLHRoaXMuX3RyaWdnZXJzW2VdfHxkZWxldGUgc1tlXX0pKX19cmVnaXN0ZXIodCxlKXtyZXR1cm4hdGhpcy5fdHJpZ2dlcnNbdF0mJih0aGlzLl90cmlnZ2Vyc1t0XT1lLCEwKX1fZ2V0VHJpZ2dlcih0KXtjb25zdCBlPXRoaXMuX3RyaWdnZXJzW3RdO2lmKCFlKXRocm93IG5ldyBFcnJvcihgVGhlIHByb3ZpZGVkIGFuaW1hdGlvbiB0cmlnZ2VyICIke3R9IiBoYXMgbm90IGJlZW4gcmVnaXN0ZXJlZCFgKTtyZXR1cm4gZX10cmlnZ2VyKHQsZSxuLG89ITApe2NvbnN0IGk9dGhpcy5fZ2V0VHJpZ2dlcihlKSxhPW5ldyB2dyh0aGlzLmlkLGUsdCk7bGV0IHI9dGhpcy5fZW5naW5lLnN0YXRlc0J5RWxlbWVudC5nZXQodCk7cnx8KGt3KHQsYVApLGt3KHQsIm5nLXRyaWdnZXItIitlKSx0aGlzLl9lbmdpbmUuc3RhdGVzQnlFbGVtZW50LnNldCh0LHI9e30pKTtsZXQgcz1yW2VdO2NvbnN0IGw9bmV3IGJ3KG4sdGhpcy5pZCk7IShuJiZuLmhhc093blByb3BlcnR5KCJ2YWx1ZSIpKSYmcyYmbC5hYnNvcmJPcHRpb25zKHMub3B0aW9ucykscltlXT1sLHN8fChzPV93KTtpZighKGwudmFsdWU9PT15dykmJnMudmFsdWU9PT1sLnZhbHVlKXtpZighKGZ1bmN0aW9uIGUodCxuKXtjb25zdCBvPU9iamVjdC5rZXlzKHQpLGk9T2JqZWN0LmtleXMobik7aWYoby5sZW5ndGghPWkubGVuZ3RoKXJldHVybiExO2ZvcihsZXQgZT0wO2U8by5sZW5ndGg7ZSsrKXtjb25zdCBpPW9bZV07aWYoIW4uaGFzT3duUHJvcGVydHkoaSl8fHRbaV0hPT1uW2ldKXJldHVybiExfXJldHVybiEwfSkocy5wYXJhbXMsbC5wYXJhbXMpKXtjb25zdCBlPVtdLG49aS5tYXRjaFN0eWxlcyhzLnZhbHVlLHMucGFyYW1zLGUpLG89aS5tYXRjaFN0eWxlcyhsLnZhbHVlLGwucGFyYW1zLGUpO2UubGVuZ3RoP3RoaXMuX2VuZ2luZS5yZXBvcnRFcnJvcihlKTp0aGlzLl9lbmdpbmUuYWZ0ZXJGbHVzaCgoKCk9PntiUCh0LG4pLGhQKHQsbyl9KSl9cmV0dXJufWNvbnN0IGM9ak8odGhpcy5fZW5naW5lLnBsYXllcnNCeUVsZW1lbnQsdCxbXSk7Yy5mb3JFYWNoKCh0PT57dC5uYW1lc3BhY2VJZD09dGhpcy5pZCYmdC50cmlnZ2VyTmFtZT09ZSYmdC5xdWV1ZWQmJnQuZGVzdHJveSgpfSkpO2xldCBkPWkubWF0Y2hUcmFuc2l0aW9uKHMudmFsdWUsbC52YWx1ZSx0LGwucGFyYW1zKSxwPSExO2lmKCFkKXtpZighbylyZXR1cm47ZD1pLmZhbGxiYWNrVHJhbnNpdGlvbixwPSEwfXJldHVybiB0aGlzLl9lbmdpbmUudG90YWxRdWV1ZWRQbGF5ZXJzKyssdGhpcy5fcXVldWUucHVzaCh7ZWxlbWVudDp0LHRyaWdnZXJOYW1lOmUsdHJhbnNpdGlvbjpkLGZyb21TdGF0ZTpzLHRvU3RhdGU6bCxwbGF5ZXI6YSxpc0ZhbGxiYWNrVHJhbnNpdGlvbjpwfSkscHx8KGt3KHQscHcpLGEub25TdGFydCgoKCk9PntTdyh0LHB3KX0pKSksYS5vbkRvbmUoKCgpPT57bGV0IGU9dGhpcy5wbGF5ZXJzLmluZGV4T2YoYSk7ZT49MCYmdGhpcy5wbGF5ZXJzLnNwbGljZShlLDEpO2NvbnN0IG49dGhpcy5fZW5naW5lLnBsYXllcnNCeUVsZW1lbnQuZ2V0KHQpO2lmKG4pe2xldCB0PW4uaW5kZXhPZihhKTt0Pj0wJiZuLnNwbGljZSh0LDEpfX0pKSx0aGlzLnBsYXllcnMucHVzaChhKSxjLnB1c2goYSksYX1kZXJlZ2lzdGVyKHQpe2RlbGV0ZSB0aGlzLl90cmlnZ2Vyc1t0XSx0aGlzLl9lbmdpbmUuc3RhdGVzQnlFbGVtZW50LmZvckVhY2goKChlLG4pPT57ZGVsZXRlIGVbdF19KSksdGhpcy5fZWxlbWVudExpc3RlbmVycy5mb3JFYWNoKCgoZSxuKT0+e3RoaXMuX2VsZW1lbnRMaXN0ZW5lcnMuc2V0KG4sZS5maWx0ZXIoKGU9PmUubmFtZSE9dCkpKX0pKX1jbGVhckVsZW1lbnRDYWNoZSh0KXt0aGlzLl9lbmdpbmUuc3RhdGVzQnlFbGVtZW50LmRlbGV0ZSh0KSx0aGlzLl9lbGVtZW50TGlzdGVuZXJzLmRlbGV0ZSh0KTtjb25zdCBlPXRoaXMuX2VuZ2luZS5wbGF5ZXJzQnlFbGVtZW50LmdldCh0KTtlJiYoZS5mb3JFYWNoKCh0PT50LmRlc3Ryb3koKSkpLHRoaXMuX2VuZ2luZS5wbGF5ZXJzQnlFbGVtZW50LmRlbGV0ZSh0KSl9X3NpZ25hbFJlbW92YWxGb3JJbm5lclRyaWdnZXJzKHQsZSl7Y29uc3Qgbj10aGlzLl9lbmdpbmUuZHJpdmVyLnF1ZXJ5KHQsclAsITApO24uZm9yRWFjaCgodD0+e2lmKHQuX19uZ19yZW1vdmVkKXJldHVybjtjb25zdCBuPXRoaXMuX2VuZ2luZS5mZXRjaE5hbWVzcGFjZXNCeUVsZW1lbnQodCk7bi5zaXplP24uZm9yRWFjaCgobj0+bi50cmlnZ2VyTGVhdmVBbmltYXRpb24odCxlLCExLCEwKSkpOnRoaXMuY2xlYXJFbGVtZW50Q2FjaGUodCl9KSksdGhpcy5fZW5naW5lLmFmdGVyRmx1c2hBbmltYXRpb25zRG9uZSgoKCk9Pm4uZm9yRWFjaCgodD0+dGhpcy5jbGVhckVsZW1lbnRDYWNoZSh0KSkpKSl9dHJpZ2dlckxlYXZlQW5pbWF0aW9uKHQsZSxuLG8pe2NvbnN0IGk9dGhpcy5fZW5naW5lLnN0YXRlc0J5RWxlbWVudC5nZXQodCk7aWYoaSl7Y29uc3QgYT1bXTtpZihPYmplY3Qua2V5cyhpKS5mb3JFYWNoKChlPT57aWYodGhpcy5fdHJpZ2dlcnNbZV0pe2NvbnN0IG49dGhpcy50cmlnZ2VyKHQsZSx5dyxvKTtuJiZhLnB1c2gobil9fSkpLGEubGVuZ3RoKXJldHVybiB0aGlzLl9lbmdpbmUubWFya0VsZW1lbnRBc1JlbW92ZWQodGhpcy5pZCx0LCEwLGUpLG4mJkhPKGEpLm9uRG9uZSgoKCk9PnRoaXMuX2VuZ2luZS5wcm9jZXNzTGVhdmVOb2RlKHQpKSksITB9cmV0dXJuITF9cHJlcGFyZUxlYXZlQW5pbWF0aW9uTGlzdGVuZXJzKHQpe2NvbnN0IGU9dGhpcy5fZWxlbWVudExpc3RlbmVycy5nZXQodCksbj10aGlzLl9lbmdpbmUuc3RhdGVzQnlFbGVtZW50LmdldCh0KTtpZihlJiZuKXtjb25zdCBvPW5ldyBTZXQ7ZS5mb3JFYWNoKChlPT57Y29uc3QgaT1lLm5hbWU7aWYoby5oYXMoaSkpcmV0dXJuO28uYWRkKGkpO2NvbnN0IGE9dGhpcy5fdHJpZ2dlcnNbaV0uZmFsbGJhY2tUcmFuc2l0aW9uLHI9bltpXXx8X3cscz1uZXcgYncoeXcpLGw9bmV3IHZ3KHRoaXMuaWQsaSx0KTt0aGlzLl9lbmdpbmUudG90YWxRdWV1ZWRQbGF5ZXJzKyssdGhpcy5fcXVldWUucHVzaCh7ZWxlbWVudDp0LHRyaWdnZXJOYW1lOmksdHJhbnNpdGlvbjphLGZyb21TdGF0ZTpyLHRvU3RhdGU6cyxwbGF5ZXI6bCxpc0ZhbGxiYWNrVHJhbnNpdGlvbjohMH0pfSkpfX1yZW1vdmVOb2RlKHQsZSl7Y29uc3Qgbj10aGlzLl9lbmdpbmU7aWYodC5jaGlsZEVsZW1lbnRDb3VudCYmdGhpcy5fc2lnbmFsUmVtb3ZhbEZvcklubmVyVHJpZ2dlcnModCxlKSx0aGlzLnRyaWdnZXJMZWF2ZUFuaW1hdGlvbih0LGUsITApKXJldHVybjtsZXQgbz0hMTtpZihuLnRvdGFsQW5pbWF0aW9ucyl7Y29uc3QgZT1uLnBsYXllcnMubGVuZ3RoP24ucGxheWVyc0J5UXVlcmllZEVsZW1lbnQuZ2V0KHQpOltdO2lmKGUmJmUubGVuZ3RoKW89ITA7ZWxzZXtsZXQgZT10O2Zvcig7ZT1lLnBhcmVudE5vZGU7KXtpZihuLnN0YXRlc0J5RWxlbWVudC5nZXQoZSkpe289ITA7YnJlYWt9fX19aWYodGhpcy5wcmVwYXJlTGVhdmVBbmltYXRpb25MaXN0ZW5lcnModCksbyluLm1hcmtFbGVtZW50QXNSZW1vdmVkKHRoaXMuaWQsdCwhMSxlKTtlbHNle2NvbnN0IG89dC5fX25nX3JlbW92ZWQ7byYmbyE9PWd3fHwobi5hZnRlckZsdXNoKCgoKT0+dGhpcy5jbGVhckVsZW1lbnRDYWNoZSh0KSkpLG4uZGVzdHJveUlubmVyQW5pbWF0aW9ucyh0KSxuLl9vblJlbW92YWxDb21wbGV0ZSh0LGUpKX19aW5zZXJ0Tm9kZSh0LGUpe2t3KHQsdGhpcy5faG9zdENsYXNzTmFtZSl9ZHJhaW5RdWV1ZWRUcmFuc2l0aW9ucyh0KXtjb25zdCBlPVtdO3JldHVybiB0aGlzLl9xdWV1ZS5mb3JFYWNoKChuPT57Y29uc3Qgbz1uLnBsYXllcjtpZihvLmRlc3Ryb3llZClyZXR1cm47Y29uc3QgaT1uLmVsZW1lbnQsYT10aGlzLl9lbGVtZW50TGlzdGVuZXJzLmdldChpKTthJiZhLmZvckVhY2goKGU9PntpZihlLm5hbWU9PW4udHJpZ2dlck5hbWUpe2NvbnN0IG89Vk8oaSxuLnRyaWdnZXJOYW1lLG4uZnJvbVN0YXRlLnZhbHVlLG4udG9TdGF0ZS52YWx1ZSk7by5fZGF0YT10LExPKG4ucGxheWVyLGUucGhhc2UsbyxlLmNhbGxiYWNrKX19KSksby5tYXJrZWRGb3JEZXN0cm95P3RoaXMuX2VuZ2luZS5hZnRlckZsdXNoKCgoKT0+e28uZGVzdHJveSgpfSkpOmUucHVzaChuKX0pKSx0aGlzLl9xdWV1ZT1bXSxlLnNvcnQoKCh0LGUpPT57Y29uc3Qgbj10LnRyYW5zaXRpb24uYXN0LmRlcENvdW50LG89ZS50cmFuc2l0aW9uLmFzdC5kZXBDb3VudDtyZXR1cm4gMD09bnx8MD09bz9uLW86dGhpcy5fZW5naW5lLmRyaXZlci5jb250YWluc0VsZW1lbnQodC5lbGVtZW50LGUuZWxlbWVudCk/MTotMX0pKX1kZXN0cm95KHQpe3RoaXMucGxheWVycy5mb3JFYWNoKCh0PT50LmRlc3Ryb3koKSkpLHRoaXMuX3NpZ25hbFJlbW92YWxGb3JJbm5lclRyaWdnZXJzKHRoaXMuaG9zdEVsZW1lbnQsdCl9ZWxlbWVudENvbnRhaW5zRGF0YSh0KXtsZXQgZT0hMTtyZXR1cm4gdGhpcy5fZWxlbWVudExpc3RlbmVycy5oYXModCkmJihlPSEwKSxlPSEhdGhpcy5fcXVldWUuZmluZCgoZT0+ZS5lbGVtZW50PT09dCkpfHxlLGV9fWNsYXNzIE13e2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLmJvZHlOb2RlPXQsdGhpcy5kcml2ZXI9ZSx0aGlzLl9ub3JtYWxpemVyPW4sdGhpcy5wbGF5ZXJzPVtdLHRoaXMubmV3SG9zdEVsZW1lbnRzPW5ldyBNYXAsdGhpcy5wbGF5ZXJzQnlFbGVtZW50PW5ldyBNYXAsdGhpcy5wbGF5ZXJzQnlRdWVyaWVkRWxlbWVudD1uZXcgTWFwLHRoaXMuc3RhdGVzQnlFbGVtZW50PW5ldyBNYXAsdGhpcy5kaXNhYmxlZE5vZGVzPW5ldyBTZXQsdGhpcy50b3RhbEFuaW1hdGlvbnM9MCx0aGlzLnRvdGFsUXVldWVkUGxheWVycz0wLHRoaXMuX25hbWVzcGFjZUxvb2t1cD17fSx0aGlzLl9uYW1lc3BhY2VMaXN0PVtdLHRoaXMuX2ZsdXNoRm5zPVtdLHRoaXMuX3doZW5RdWlldEZucz1bXSx0aGlzLm5hbWVzcGFjZXNCeUhvc3RFbGVtZW50PW5ldyBNYXAsdGhpcy5jb2xsZWN0ZWRFbnRlckVsZW1lbnRzPVtdLHRoaXMuY29sbGVjdGVkTGVhdmVFbGVtZW50cz1bXSx0aGlzLm9uUmVtb3ZhbENvbXBsZXRlPSh0LGUpPT57fX1fb25SZW1vdmFsQ29tcGxldGUodCxlKXt0aGlzLm9uUmVtb3ZhbENvbXBsZXRlKHQsZSl9Z2V0IHF1ZXVlZFBsYXllcnMoKXtjb25zdCB0PVtdO3JldHVybiB0aGlzLl9uYW1lc3BhY2VMaXN0LmZvckVhY2goKGU9PntlLnBsYXllcnMuZm9yRWFjaCgoZT0+e2UucXVldWVkJiZ0LnB1c2goZSl9KSl9KSksdH1jcmVhdGVOYW1lc3BhY2UodCxlKXtjb25zdCBuPW5ldyBDdyh0LGUsdGhpcyk7cmV0dXJuIHRoaXMuYm9keU5vZGUmJnRoaXMuZHJpdmVyLmNvbnRhaW5zRWxlbWVudCh0aGlzLmJvZHlOb2RlLGUpP3RoaXMuX2JhbGFuY2VOYW1lc3BhY2VMaXN0KG4sZSk6KHRoaXMubmV3SG9zdEVsZW1lbnRzLnNldChlLG4pLHRoaXMuY29sbGVjdEVudGVyRWxlbWVudChlKSksdGhpcy5fbmFtZXNwYWNlTG9va3VwW3RdPW59X2JhbGFuY2VOYW1lc3BhY2VMaXN0KHQsZSl7Y29uc3Qgbj10aGlzLl9uYW1lc3BhY2VMaXN0Lmxlbmd0aC0xO2lmKG4+PTApe2xldCBvPSExO2ZvcihsZXQgaT1uO2k+PTA7aS0tKXtpZih0aGlzLmRyaXZlci5jb250YWluc0VsZW1lbnQodGhpcy5fbmFtZXNwYWNlTGlzdFtpXS5ob3N0RWxlbWVudCxlKSl7dGhpcy5fbmFtZXNwYWNlTGlzdC5zcGxpY2UoaSsxLDAsdCksbz0hMDticmVha319b3x8dGhpcy5fbmFtZXNwYWNlTGlzdC5zcGxpY2UoMCwwLHQpfWVsc2UgdGhpcy5fbmFtZXNwYWNlTGlzdC5wdXNoKHQpO3JldHVybiB0aGlzLm5hbWVzcGFjZXNCeUhvc3RFbGVtZW50LnNldChlLHQpLHR9cmVnaXN0ZXIodCxlKXtsZXQgbj10aGlzLl9uYW1lc3BhY2VMb29rdXBbdF07cmV0dXJuIG58fChuPXRoaXMuY3JlYXRlTmFtZXNwYWNlKHQsZSkpLG59cmVnaXN0ZXJUcmlnZ2VyKHQsZSxuKXtsZXQgbz10aGlzLl9uYW1lc3BhY2VMb29rdXBbdF07byYmby5yZWdpc3RlcihlLG4pJiZ0aGlzLnRvdGFsQW5pbWF0aW9ucysrfWRlc3Ryb3kodCxlKXtpZighdClyZXR1cm47Y29uc3Qgbj10aGlzLl9mZXRjaE5hbWVzcGFjZSh0KTt0aGlzLmFmdGVyRmx1c2goKCgpPT57dGhpcy5uYW1lc3BhY2VzQnlIb3N0RWxlbWVudC5kZWxldGUobi5ob3N0RWxlbWVudCksZGVsZXRlIHRoaXMuX25hbWVzcGFjZUxvb2t1cFt0XTtjb25zdCBlPXRoaXMuX25hbWVzcGFjZUxpc3QuaW5kZXhPZihuKTtlPj0wJiZ0aGlzLl9uYW1lc3BhY2VMaXN0LnNwbGljZShlLDEpfSkpLHRoaXMuYWZ0ZXJGbHVzaEFuaW1hdGlvbnNEb25lKCgoKT0+bi5kZXN0cm95KGUpKSl9X2ZldGNoTmFtZXNwYWNlKHQpe3JldHVybiB0aGlzLl9uYW1lc3BhY2VMb29rdXBbdF19ZmV0Y2hOYW1lc3BhY2VzQnlFbGVtZW50KHQpe2NvbnN0IGU9bmV3IFNldCxuPXRoaXMuc3RhdGVzQnlFbGVtZW50LmdldCh0KTtpZihuKXtjb25zdCB0PU9iamVjdC5rZXlzKG4pO2ZvcihsZXQgbz0wO288dC5sZW5ndGg7bysrKXtjb25zdCBpPW5bdFtvXV0ubmFtZXNwYWNlSWQ7aWYoaSl7Y29uc3QgdD10aGlzLl9mZXRjaE5hbWVzcGFjZShpKTt0JiZlLmFkZCh0KX19fXJldHVybiBlfXRyaWdnZXIodCxlLG4sbyl7aWYoeHcoZSkpe2NvbnN0IGk9dGhpcy5fZmV0Y2hOYW1lc3BhY2UodCk7aWYoaSlyZXR1cm4gaS50cmlnZ2VyKGUsbixvKSwhMH1yZXR1cm4hMX1pbnNlcnROb2RlKHQsZSxuLG8pe2lmKCF4dyhlKSlyZXR1cm47Y29uc3QgaT1lLl9fbmdfcmVtb3ZlZDtpZihpJiZpLnNldEZvclJlbW92YWwpe2kuc2V0Rm9yUmVtb3ZhbD0hMSxpLnNldEZvck1vdmU9ITA7Y29uc3QgdD10aGlzLmNvbGxlY3RlZExlYXZlRWxlbWVudHMuaW5kZXhPZihlKTt0Pj0wJiZ0aGlzLmNvbGxlY3RlZExlYXZlRWxlbWVudHMuc3BsaWNlKHQsMSl9aWYodCl7Y29uc3Qgbz10aGlzLl9mZXRjaE5hbWVzcGFjZSh0KTtvJiZvLmluc2VydE5vZGUoZSxuKX1vJiZ0aGlzLmNvbGxlY3RFbnRlckVsZW1lbnQoZSl9Y29sbGVjdEVudGVyRWxlbWVudCh0KXt0aGlzLmNvbGxlY3RlZEVudGVyRWxlbWVudHMucHVzaCh0KX1tYXJrRWxlbWVudEFzRGlzYWJsZWQodCxlKXtlP3RoaXMuZGlzYWJsZWROb2Rlcy5oYXModCl8fCh0aGlzLmRpc2FibGVkTm9kZXMuYWRkKHQpLGt3KHQsbXcpKTp0aGlzLmRpc2FibGVkTm9kZXMuaGFzKHQpJiYodGhpcy5kaXNhYmxlZE5vZGVzLmRlbGV0ZSh0KSxTdyh0LG13KSl9cmVtb3ZlTm9kZSh0LGUsbixvKXtpZih4dyhlKSl7Y29uc3QgaT10P3RoaXMuX2ZldGNoTmFtZXNwYWNlKHQpOm51bGw7aWYoaT9pLnJlbW92ZU5vZGUoZSxvKTp0aGlzLm1hcmtFbGVtZW50QXNSZW1vdmVkKHQsZSwhMSxvKSxuKXtjb25zdCBuPXRoaXMubmFtZXNwYWNlc0J5SG9zdEVsZW1lbnQuZ2V0KGUpO24mJm4uaWQhPT10JiZuLnJlbW92ZU5vZGUoZSxvKX19ZWxzZSB0aGlzLl9vblJlbW92YWxDb21wbGV0ZShlLG8pfW1hcmtFbGVtZW50QXNSZW1vdmVkKHQsZSxuLG8pe3RoaXMuY29sbGVjdGVkTGVhdmVFbGVtZW50cy5wdXNoKGUpLGUuX19uZ19yZW1vdmVkPXtuYW1lc3BhY2VJZDp0LHNldEZvclJlbW92YWw6byxoYXNBbmltYXRpb246bixyZW1vdmVkQmVmb3JlUXVlcmllZDohMX19bGlzdGVuKHQsZSxuLG8saSl7cmV0dXJuIHh3KGUpP3RoaXMuX2ZldGNoTmFtZXNwYWNlKHQpLmxpc3RlbihlLG4sbyxpKTooKT0+e319X2J1aWxkSW5zdHJ1Y3Rpb24odCxlLG4sbyxpKXtyZXR1cm4gdC50cmFuc2l0aW9uLmJ1aWxkKHRoaXMuZHJpdmVyLHQuZWxlbWVudCx0LmZyb21TdGF0ZS52YWx1ZSx0LnRvU3RhdGUudmFsdWUsbixvLHQuZnJvbVN0YXRlLm9wdGlvbnMsdC50b1N0YXRlLm9wdGlvbnMsZSxpKX1kZXN0cm95SW5uZXJBbmltYXRpb25zKHQpe2xldCBlPXRoaXMuZHJpdmVyLnF1ZXJ5KHQsclAsITApO2UuZm9yRWFjaCgodD0+dGhpcy5kZXN0cm95QWN0aXZlQW5pbWF0aW9uc0ZvckVsZW1lbnQodCkpKSwwIT10aGlzLnBsYXllcnNCeVF1ZXJpZWRFbGVtZW50LnNpemUmJihlPXRoaXMuZHJpdmVyLnF1ZXJ5KHQsbFAsITApLGUuZm9yRWFjaCgodD0+dGhpcy5maW5pc2hBY3RpdmVRdWVyaWVkQW5pbWF0aW9uT25FbGVtZW50KHQpKSkpfWRlc3Ryb3lBY3RpdmVBbmltYXRpb25zRm9yRWxlbWVudCh0KXtjb25zdCBlPXRoaXMucGxheWVyc0J5RWxlbWVudC5nZXQodCk7ZSYmZS5mb3JFYWNoKCh0PT57dC5xdWV1ZWQ/dC5tYXJrZWRGb3JEZXN0cm95PSEwOnQuZGVzdHJveSgpfSkpfWZpbmlzaEFjdGl2ZVF1ZXJpZWRBbmltYXRpb25PbkVsZW1lbnQodCl7Y29uc3QgZT10aGlzLnBsYXllcnNCeVF1ZXJpZWRFbGVtZW50LmdldCh0KTtlJiZlLmZvckVhY2goKHQ9PnQuZmluaXNoKCkpKX13aGVuUmVuZGVyaW5nRG9uZSgpe3JldHVybiBuZXcgUHJvbWlzZSgodD0+e2lmKHRoaXMucGxheWVycy5sZW5ndGgpcmV0dXJuIEhPKHRoaXMucGxheWVycykub25Eb25lKCgoKT0+dCgpKSk7dCgpfSkpfXByb2Nlc3NMZWF2ZU5vZGUodCl7Y29uc3QgZT10Ll9fbmdfcmVtb3ZlZDtpZihlJiZlLnNldEZvclJlbW92YWwpe2lmKHQuX19uZ19yZW1vdmVkPWd3LGUubmFtZXNwYWNlSWQpe3RoaXMuZGVzdHJveUlubmVyQW5pbWF0aW9ucyh0KTtjb25zdCBuPXRoaXMuX2ZldGNoTmFtZXNwYWNlKGUubmFtZXNwYWNlSWQpO24mJm4uY2xlYXJFbGVtZW50Q2FjaGUodCl9dGhpcy5fb25SZW1vdmFsQ29tcGxldGUodCxlLnNldEZvclJlbW92YWwpfXRoaXMuZHJpdmVyLm1hdGNoZXNFbGVtZW50KHQsZncpJiZ0aGlzLm1hcmtFbGVtZW50QXNEaXNhYmxlZCh0LCExKSx0aGlzLmRyaXZlci5xdWVyeSh0LGZ3LCEwKS5mb3JFYWNoKCh0PT57dGhpcy5tYXJrRWxlbWVudEFzRGlzYWJsZWQodCwhMSl9KSl9Zmx1c2godD0tMSl7bGV0IGU9W107aWYodGhpcy5uZXdIb3N0RWxlbWVudHMuc2l6ZSYmKHRoaXMubmV3SG9zdEVsZW1lbnRzLmZvckVhY2goKCh0LGUpPT50aGlzLl9iYWxhbmNlTmFtZXNwYWNlTGlzdCh0LGUpKSksdGhpcy5uZXdIb3N0RWxlbWVudHMuY2xlYXIoKSksdGhpcy50b3RhbEFuaW1hdGlvbnMmJnRoaXMuY29sbGVjdGVkRW50ZXJFbGVtZW50cy5sZW5ndGgpZm9yKGxldCB0PTA7dDx0aGlzLmNvbGxlY3RlZEVudGVyRWxlbWVudHMubGVuZ3RoO3QrKyl7a3codGhpcy5jb2xsZWN0ZWRFbnRlckVsZW1lbnRzW3RdLCJuZy1zdGFyLWluc2VydGVkIil9aWYodGhpcy5fbmFtZXNwYWNlTGlzdC5sZW5ndGgmJih0aGlzLnRvdGFsUXVldWVkUGxheWVyc3x8dGhpcy5jb2xsZWN0ZWRMZWF2ZUVsZW1lbnRzLmxlbmd0aCkpe2NvbnN0IG49W107dHJ5e2U9dGhpcy5fZmx1c2hBbmltYXRpb25zKG4sdCl9ZmluYWxseXtmb3IobGV0IHQ9MDt0PG4ubGVuZ3RoO3QrKyluW3RdKCl9fWVsc2UgZm9yKGxldCB0PTA7dDx0aGlzLmNvbGxlY3RlZExlYXZlRWxlbWVudHMubGVuZ3RoO3QrKyl7dGhpcy5wcm9jZXNzTGVhdmVOb2RlKHRoaXMuY29sbGVjdGVkTGVhdmVFbGVtZW50c1t0XSl9aWYodGhpcy50b3RhbFF1ZXVlZFBsYXllcnM9MCx0aGlzLmNvbGxlY3RlZEVudGVyRWxlbWVudHMubGVuZ3RoPTAsdGhpcy5jb2xsZWN0ZWRMZWF2ZUVsZW1lbnRzLmxlbmd0aD0wLHRoaXMuX2ZsdXNoRm5zLmZvckVhY2goKHQ9PnQoKSkpLHRoaXMuX2ZsdXNoRm5zPVtdLHRoaXMuX3doZW5RdWlldEZucy5sZW5ndGgpe2NvbnN0IHQ9dGhpcy5fd2hlblF1aWV0Rm5zO3RoaXMuX3doZW5RdWlldEZucz1bXSxlLmxlbmd0aD9ITyhlKS5vbkRvbmUoKCgpPT57dC5mb3JFYWNoKCh0PT50KCkpKX0pKTp0LmZvckVhY2goKHQ9PnQoKSkpfX1yZXBvcnRFcnJvcih0KXt0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBwcm9jZXNzIGFuaW1hdGlvbnMgZHVlIHRvIHRoZSBmb2xsb3dpbmcgZmFpbGVkIHRyaWdnZXIgdHJhbnNpdGlvbnNcbiAke3Quam9pbigiXG4iKX1gKX1fZmx1c2hBbmltYXRpb25zKHQsZSl7Y29uc3Qgbj1uZXcgVVAsbz1bXSxpPW5ldyBNYXAsYT1bXSxyPW5ldyBNYXAscz1uZXcgTWFwLGw9bmV3IE1hcCxjPW5ldyBTZXQ7dGhpcy5kaXNhYmxlZE5vZGVzLmZvckVhY2goKHQ9PntjLmFkZCh0KTtjb25zdCBlPXRoaXMuZHJpdmVyLnF1ZXJ5KHQsIi5uZy1hbmltYXRlLXF1ZXVlZCIsITApO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKWMuYWRkKGVbdF0pfSkpO2NvbnN0IGQ9dGhpcy5ib2R5Tm9kZSxwPUFycmF5LmZyb20odGhpcy5zdGF0ZXNCeUVsZW1lbnQua2V5cygpKSxtPXd3KHAsdGhpcy5jb2xsZWN0ZWRFbnRlckVsZW1lbnRzKSxmPW5ldyBNYXA7bGV0IHU9MDttLmZvckVhY2goKCh0LGUpPT57Y29uc3Qgbj1vUCt1Kys7Zi5zZXQoZSxuKSx0LmZvckVhY2goKHQ9Pmt3KHQsbikpKX0pKTtjb25zdCBnPVtdLGg9bmV3IFNldCxiPW5ldyBTZXQ7Zm9yKGxldCB0PTA7dDx0aGlzLmNvbGxlY3RlZExlYXZlRWxlbWVudHMubGVuZ3RoO3QrKyl7Y29uc3QgZT10aGlzLmNvbGxlY3RlZExlYXZlRWxlbWVudHNbdF0sbj1lLl9fbmdfcmVtb3ZlZDtuJiZuLnNldEZvclJlbW92YWwmJihnLnB1c2goZSksaC5hZGQoZSksbi5oYXNBbmltYXRpb24/dGhpcy5kcml2ZXIucXVlcnkoZSwiLm5nLXN0YXItaW5zZXJ0ZWQiLCEwKS5mb3JFYWNoKCh0PT5oLmFkZCh0KSkpOmIuYWRkKGUpKX1jb25zdCB5PW5ldyBNYXAsXz13dyhwLEFycmF5LmZyb20oaCkpO18uZm9yRWFjaCgoKHQsZSk9Pntjb25zdCBuPWlQK3UrKzt5LnNldChlLG4pLHQuZm9yRWFjaCgodD0+a3codCxuKSkpfSkpLHQucHVzaCgoKCk9PnttLmZvckVhY2goKCh0LGUpPT57Y29uc3Qgbj1mLmdldChlKTt0LmZvckVhY2goKHQ9PlN3KHQsbikpKX0pKSxfLmZvckVhY2goKCh0LGUpPT57Y29uc3Qgbj15LmdldChlKTt0LmZvckVhY2goKHQ9PlN3KHQsbikpKX0pKSxnLmZvckVhY2goKHQ9Pnt0aGlzLnByb2Nlc3NMZWF2ZU5vZGUodCl9KSl9KSk7Y29uc3QgQz1bXSxNPVtdO2ZvcihsZXQgdD10aGlzLl9uYW1lc3BhY2VMaXN0Lmxlbmd0aC0xO3Q+PTA7dC0tKXt0aGlzLl9uYW1lc3BhY2VMaXN0W3RdLmRyYWluUXVldWVkVHJhbnNpdGlvbnMoZSkuZm9yRWFjaCgodD0+e2NvbnN0IGU9dC5wbGF5ZXIsaT10LmVsZW1lbnQ7aWYoQy5wdXNoKGUpLHRoaXMuY29sbGVjdGVkRW50ZXJFbGVtZW50cy5sZW5ndGgpe2NvbnN0IHQ9aS5fX25nX3JlbW92ZWQ7aWYodCYmdC5zZXRGb3JNb3ZlKXJldHVybiB2b2lkIGUuZGVzdHJveSgpfWNvbnN0IGM9IWR8fCF0aGlzLmRyaXZlci5jb250YWluc0VsZW1lbnQoZCxpKSxwPXkuZ2V0KGkpLG09Zi5nZXQoaSksdT10aGlzLl9idWlsZEluc3RydWN0aW9uKHQsbixtLHAsYyk7aWYodS5lcnJvcnMmJnUuZXJyb3JzLmxlbmd0aClyZXR1cm4gdm9pZCBNLnB1c2godSk7aWYoYylyZXR1cm4gZS5vblN0YXJ0KCgoKT0+YlAoaSx1LmZyb21TdHlsZXMpKSksZS5vbkRlc3Ryb3koKCgpPT5oUChpLHUudG9TdHlsZXMpKSksdm9pZCBvLnB1c2goZSk7aWYodC5pc0ZhbGxiYWNrVHJhbnNpdGlvbilyZXR1cm4gZS5vblN0YXJ0KCgoKT0+YlAoaSx1LmZyb21TdHlsZXMpKSksZS5vbkRlc3Ryb3koKCgpPT5oUChpLHUudG9TdHlsZXMpKSksdm9pZCBvLnB1c2goZSk7dS50aW1lbGluZXMuZm9yRWFjaCgodD0+dC5zdHJldGNoU3RhcnRpbmdLZXlmcmFtZT0hMCkpLG4uYXBwZW5kKGksdS50aW1lbGluZXMpO2EucHVzaCh7aW5zdHJ1Y3Rpb246dSxwbGF5ZXI6ZSxlbGVtZW50Oml9KSx1LnF1ZXJpZWRFbGVtZW50cy5mb3JFYWNoKCh0PT5qTyhyLHQsW10pLnB1c2goZSkpKSx1LnByZVN0eWxlUHJvcHMuZm9yRWFjaCgoKHQsZSk9Pntjb25zdCBuPU9iamVjdC5rZXlzKHQpO2lmKG4ubGVuZ3RoKXtsZXQgdD1zLmdldChlKTt0fHxzLnNldChlLHQ9bmV3IFNldCksbi5mb3JFYWNoKChlPT50LmFkZChlKSkpfX0pKSx1LnBvc3RTdHlsZVByb3BzLmZvckVhY2goKCh0LGUpPT57Y29uc3Qgbj1PYmplY3Qua2V5cyh0KTtsZXQgbz1sLmdldChlKTtvfHxsLnNldChlLG89bmV3IFNldCksbi5mb3JFYWNoKCh0PT5vLmFkZCh0KSkpfSkpfSkpfWlmKE0ubGVuZ3RoKXtjb25zdCB0PVtdO00uZm9yRWFjaCgoZT0+e3QucHVzaChgQCR7ZS50cmlnZ2VyTmFtZX0gaGFzIGZhaWxlZCBkdWUgdG86XG5gKSxlLmVycm9ycy5mb3JFYWNoKChlPT50LnB1c2goYC0gJHtlfVxuYCkpKX0pKSxDLmZvckVhY2goKHQ9PnQuZGVzdHJveSgpKSksdGhpcy5yZXBvcnRFcnJvcih0KX1jb25zdCB2PW5ldyBNYXAseD1uZXcgTWFwO2EuZm9yRWFjaCgodD0+e2NvbnN0IGU9dC5lbGVtZW50O24uaGFzKGUpJiYoeC5zZXQoZSxlKSx0aGlzLl9iZWZvcmVBbmltYXRpb25CdWlsZCh0LnBsYXllci5uYW1lc3BhY2VJZCx0Lmluc3RydWN0aW9uLHYpKX0pKSxvLmZvckVhY2goKHQ9Pntjb25zdCBlPXQuZWxlbWVudDt0aGlzLl9nZXRQcmV2aW91c1BsYXllcnMoZSwhMSx0Lm5hbWVzcGFjZUlkLHQudHJpZ2dlck5hbWUsbnVsbCkuZm9yRWFjaCgodD0+e2pPKHYsZSxbXSkucHVzaCh0KSx0LmRlc3Ryb3koKX0pKX0pKTtjb25zdCBPPWcuZmlsdGVyKCh0PT5Fdyh0LHMsbCkpKSxQPW5ldyBNYXA7UHcoUCx0aGlzLmRyaXZlcixiLGwsdk8pLmZvckVhY2goKHQ9PntFdyh0LHMsbCkmJk8ucHVzaCh0KX0pKTtjb25zdCB3PW5ldyBNYXA7bS5mb3JFYWNoKCgodCxlKT0+e1B3KHcsdGhpcy5kcml2ZXIsbmV3IFNldCh0KSxzLCIhIil9KSksTy5mb3JFYWNoKCh0PT57Y29uc3QgZT1QLmdldCh0KSxuPXcuZ2V0KHQpO1Auc2V0KHQsT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGUpLG4pKX0pKTtjb25zdCBrPVtdLFM9W10sRD17fTthLmZvckVhY2goKHQ9Pntjb25zdHtlbGVtZW50OmUscGxheWVyOmEsaW5zdHJ1Y3Rpb246cn09dDtpZihuLmhhcyhlKSl7aWYoYy5oYXMoZSkpcmV0dXJuIGEub25EZXN0cm95KCgoKT0+aFAoZSxyLnRvU3R5bGVzKSkpLGEuZGlzYWJsZWQ9ITAsYS5vdmVycmlkZVRvdGFsVGltZShyLnRvdGFsVGltZSksdm9pZCBvLnB1c2goYSk7bGV0IHQ9RDtpZih4LnNpemU+MSl7bGV0IG49ZTtjb25zdCBvPVtdO2Zvcig7bj1uLnBhcmVudE5vZGU7KXtjb25zdCBlPXguZ2V0KG4pO2lmKGUpe3Q9ZTticmVha31vLnB1c2gobil9by5mb3JFYWNoKChlPT54LnNldChlLHQpKSl9Y29uc3Qgbj10aGlzLl9idWlsZEFuaW1hdGlvbihhLm5hbWVzcGFjZUlkLHIsdixpLHcsUCk7aWYoYS5zZXRSZWFsUGxheWVyKG4pLHQ9PT1EKWsucHVzaChhKTtlbHNle2NvbnN0IGU9dGhpcy5wbGF5ZXJzQnlFbGVtZW50LmdldCh0KTtlJiZlLmxlbmd0aCYmKGEucGFyZW50UGxheWVyPUhPKGUpKSxvLnB1c2goYSl9fWVsc2UgYlAoZSxyLmZyb21TdHlsZXMpLGEub25EZXN0cm95KCgoKT0+aFAoZSxyLnRvU3R5bGVzKSkpLFMucHVzaChhKSxjLmhhcyhlKSYmby5wdXNoKGEpfSkpLFMuZm9yRWFjaCgodD0+e2NvbnN0IGU9aS5nZXQodC5lbGVtZW50KTtpZihlJiZlLmxlbmd0aCl7Y29uc3Qgbj1ITyhlKTt0LnNldFJlYWxQbGF5ZXIobil9fSkpLG8uZm9yRWFjaCgodD0+e3QucGFyZW50UGxheWVyP3Quc3luY1BsYXllckV2ZW50cyh0LnBhcmVudFBsYXllcik6dC5kZXN0cm95KCl9KSk7Zm9yKGxldCB0PTA7dDxnLmxlbmd0aDt0Kyspe2NvbnN0IGU9Z1t0XSxuPWUuX19uZ19yZW1vdmVkO2lmKFN3KGUsaVApLG4mJm4uaGFzQW5pbWF0aW9uKWNvbnRpbnVlO2xldCBvPVtdO2lmKHIuc2l6ZSl7bGV0IHQ9ci5nZXQoZSk7dCYmdC5sZW5ndGgmJm8ucHVzaCguLi50KTtsZXQgbj10aGlzLmRyaXZlci5xdWVyeShlLGxQLCEwKTtmb3IobGV0IHQ9MDt0PG4ubGVuZ3RoO3QrKyl7bGV0IGU9ci5nZXQoblt0XSk7ZSYmZS5sZW5ndGgmJm8ucHVzaCguLi5lKX19Y29uc3QgaT1vLmZpbHRlcigodD0+IXQuZGVzdHJveWVkKSk7aS5sZW5ndGg/RHcodGhpcyxlLGkpOnRoaXMucHJvY2Vzc0xlYXZlTm9kZShlKX1yZXR1cm4gZy5sZW5ndGg9MCxrLmZvckVhY2goKHQ9Pnt0aGlzLnBsYXllcnMucHVzaCh0KSx0Lm9uRG9uZSgoKCk9Pnt0LmRlc3Ryb3koKTtjb25zdCBlPXRoaXMucGxheWVycy5pbmRleE9mKHQpO3RoaXMucGxheWVycy5zcGxpY2UoZSwxKX0pKSx0LnBsYXkoKX0pKSxrfWVsZW1lbnRDb250YWluc0RhdGEodCxlKXtsZXQgbj0hMTtjb25zdCBvPWUuX19uZ19yZW1vdmVkO3JldHVybiBvJiZvLnNldEZvclJlbW92YWwmJihuPSEwKSx0aGlzLnBsYXllcnNCeUVsZW1lbnQuaGFzKGUpJiYobj0hMCksdGhpcy5wbGF5ZXJzQnlRdWVyaWVkRWxlbWVudC5oYXMoZSkmJihuPSEwKSx0aGlzLnN0YXRlc0J5RWxlbWVudC5oYXMoZSkmJihuPSEwKSx0aGlzLl9mZXRjaE5hbWVzcGFjZSh0KS5lbGVtZW50Q29udGFpbnNEYXRhKGUpfHxufWFmdGVyRmx1c2godCl7dGhpcy5fZmx1c2hGbnMucHVzaCh0KX1hZnRlckZsdXNoQW5pbWF0aW9uc0RvbmUodCl7dGhpcy5fd2hlblF1aWV0Rm5zLnB1c2godCl9X2dldFByZXZpb3VzUGxheWVycyh0LGUsbixvLGkpe2xldCBhPVtdO2lmKGUpe2NvbnN0IGU9dGhpcy5wbGF5ZXJzQnlRdWVyaWVkRWxlbWVudC5nZXQodCk7ZSYmKGE9ZSl9ZWxzZXtjb25zdCBlPXRoaXMucGxheWVyc0J5RWxlbWVudC5nZXQodCk7aWYoZSl7Y29uc3QgdD0haXx8aT09eXc7ZS5mb3JFYWNoKChlPT57ZS5xdWV1ZWR8fCh0fHxlLnRyaWdnZXJOYW1lPT1vKSYmYS5wdXNoKGUpfSkpfX1yZXR1cm4obnx8bykmJihhPWEuZmlsdGVyKCh0PT4oIW58fG49PXQubmFtZXNwYWNlSWQpJiYoIW98fG89PXQudHJpZ2dlck5hbWUpKSkpLGF9X2JlZm9yZUFuaW1hdGlvbkJ1aWxkKHQsZSxuKXtjb25zdCBvPWUuZWxlbWVudCxpPWUuaXNSZW1vdmFsVHJhbnNpdGlvbj92b2lkIDA6dCxhPWUuaXNSZW1vdmFsVHJhbnNpdGlvbj92b2lkIDA6ZS50cmlnZ2VyTmFtZTtmb3IoY29uc3QgdCBvZiBlLnRpbWVsaW5lcyl7Y29uc3Qgcj10LmVsZW1lbnQscz1yIT09byxsPWpPKG4scixbXSk7dGhpcy5fZ2V0UHJldmlvdXNQbGF5ZXJzKHIscyxpLGEsZS50b1N0YXRlKS5mb3JFYWNoKCh0PT57Y29uc3QgZT10LmdldFJlYWxQbGF5ZXIoKTtlLmJlZm9yZURlc3Ryb3kmJmUuYmVmb3JlRGVzdHJveSgpLHQuZGVzdHJveSgpLGwucHVzaCh0KX0pKX1iUChvLGUuZnJvbVN0eWxlcyl9X2J1aWxkQW5pbWF0aW9uKHQsZSxuLG8saSxhKXtjb25zdCByPWUudHJpZ2dlck5hbWUscz1lLmVsZW1lbnQsbD1bXSxjPW5ldyBTZXQsZD1uZXcgU2V0LHA9ZS50aW1lbGluZXMubWFwKChlPT57Y29uc3QgcD1lLmVsZW1lbnQ7Yy5hZGQocCk7Y29uc3QgbT1wLl9fbmdfcmVtb3ZlZDtpZihtJiZtLnJlbW92ZWRCZWZvcmVRdWVyaWVkKXJldHVybiBuZXcgVE8oZS5kdXJhdGlvbixlLmRlbGF5KTtjb25zdCBmPXAhPT1zLHU9KGZ1bmN0aW9uIGcodCl7Y29uc3QgZT1bXTtyZXR1cm4gUncodCxlKSxlfSkoKG4uZ2V0KHApfHx1dykubWFwKCh0PT50LmdldFJlYWxQbGF5ZXIoKSkpKS5maWx0ZXIoKHQ9PiEhdC5lbGVtZW50JiZ0LmVsZW1lbnQ9PT1wKSksaD1pLmdldChwKSxiPWEuZ2V0KHApLHk9Rk8oMCx0aGlzLl9ub3JtYWxpemVyLDAsZS5rZXlmcmFtZXMsaCxiKSxfPXRoaXMuX2J1aWxkUGxheWVyKGUseSx1KTtpZihlLnN1YlRpbWVsaW5lJiZvJiZkLmFkZChwKSxmKXtjb25zdCBlPW5ldyB2dyh0LHIscCk7ZS5zZXRSZWFsUGxheWVyKF8pLGwucHVzaChlKX1yZXR1cm4gX30pKTtsLmZvckVhY2goKHQ9PntqTyh0aGlzLnBsYXllcnNCeVF1ZXJpZWRFbGVtZW50LHQuZWxlbWVudCxbXSkucHVzaCh0KSx0Lm9uRG9uZSgoKCk9PihmdW5jdGlvbiBlKHQsbixvKXtsZXQgaTtpZih0IGluc3RhbmNlb2YgTWFwKXtpZihpPXQuZ2V0KG4pLGkpe2lmKGkubGVuZ3RoKXtjb25zdCB0PWkuaW5kZXhPZihvKTtpLnNwbGljZSh0LDEpfTA9PWkubGVuZ3RoJiZ0LmRlbGV0ZShuKX19ZWxzZSBpZihpPXRbbl0saSl7aWYoaS5sZW5ndGgpe2NvbnN0IHQ9aS5pbmRleE9mKG8pO2kuc3BsaWNlKHQsMSl9MD09aS5sZW5ndGgmJmRlbGV0ZSB0W25dfXJldHVybiBpfSkodGhpcy5wbGF5ZXJzQnlRdWVyaWVkRWxlbWVudCx0LmVsZW1lbnQsdCkpKX0pKSxjLmZvckVhY2goKHQ9Pmt3KHQsc1ApKSk7Y29uc3QgbT1ITyhwKTtyZXR1cm4gbS5vbkRlc3Ryb3koKCgpPT57Yy5mb3JFYWNoKCh0PT5Tdyh0LHNQKSkpLGhQKHMsZS50b1N0eWxlcyl9KSksZC5mb3JFYWNoKCh0PT57ak8obyx0LFtdKS5wdXNoKG0pfSkpLG19X2J1aWxkUGxheWVyKHQsZSxuKXtyZXR1cm4gZS5sZW5ndGg+MD90aGlzLmRyaXZlci5hbmltYXRlKHQuZWxlbWVudCxlLHQuZHVyYXRpb24sdC5kZWxheSx0LmVhc2luZyxuKTpuZXcgVE8odC5kdXJhdGlvbix0LmRlbGF5KX19Y2xhc3Mgdnd7Y29uc3RydWN0b3IodCxlLG4pe3RoaXMubmFtZXNwYWNlSWQ9dCx0aGlzLnRyaWdnZXJOYW1lPWUsdGhpcy5lbGVtZW50PW4sdGhpcy5fcGxheWVyPW5ldyBUTyx0aGlzLl9jb250YWluc1JlYWxQbGF5ZXI9ITEsdGhpcy5fcXVldWVkQ2FsbGJhY2tzPXt9LHRoaXMuZGVzdHJveWVkPSExLHRoaXMubWFya2VkRm9yRGVzdHJveT0hMSx0aGlzLmRpc2FibGVkPSExLHRoaXMucXVldWVkPSEwLHRoaXMudG90YWxUaW1lPTB9c2V0UmVhbFBsYXllcih0KXt0aGlzLl9jb250YWluc1JlYWxQbGF5ZXJ8fCh0aGlzLl9wbGF5ZXI9dCxPYmplY3Qua2V5cyh0aGlzLl9xdWV1ZWRDYWxsYmFja3MpLmZvckVhY2goKGU9Pnt0aGlzLl9xdWV1ZWRDYWxsYmFja3NbZV0uZm9yRWFjaCgobj0+TE8odCxlLHZvaWQgMCxuKSkpfSkpLHRoaXMuX3F1ZXVlZENhbGxiYWNrcz17fSx0aGlzLl9jb250YWluc1JlYWxQbGF5ZXI9ITAsdGhpcy5vdmVycmlkZVRvdGFsVGltZSh0LnRvdGFsVGltZSksdGhpcy5xdWV1ZWQ9ITEpfWdldFJlYWxQbGF5ZXIoKXtyZXR1cm4gdGhpcy5fcGxheWVyfW92ZXJyaWRlVG90YWxUaW1lKHQpe3RoaXMudG90YWxUaW1lPXR9c3luY1BsYXllckV2ZW50cyh0KXtjb25zdCBlPXRoaXMuX3BsYXllcjtlLnRyaWdnZXJDYWxsYmFjayYmdC5vblN0YXJ0KCgoKT0+ZS50cmlnZ2VyQ2FsbGJhY2soInN0YXJ0IikpKSx0Lm9uRG9uZSgoKCk9PnRoaXMuZmluaXNoKCkpKSx0Lm9uRGVzdHJveSgoKCk9PnRoaXMuZGVzdHJveSgpKSl9X3F1ZXVlRXZlbnQodCxlKXtqTyh0aGlzLl9xdWV1ZWRDYWxsYmFja3MsdCxbXSkucHVzaChlKX1vbkRvbmUodCl7dGhpcy5xdWV1ZWQmJnRoaXMuX3F1ZXVlRXZlbnQoImRvbmUiLHQpLHRoaXMuX3BsYXllci5vbkRvbmUodCl9b25TdGFydCh0KXt0aGlzLnF1ZXVlZCYmdGhpcy5fcXVldWVFdmVudCgic3RhcnQiLHQpLHRoaXMuX3BsYXllci5vblN0YXJ0KHQpfW9uRGVzdHJveSh0KXt0aGlzLnF1ZXVlZCYmdGhpcy5fcXVldWVFdmVudCgiZGVzdHJveSIsdCksdGhpcy5fcGxheWVyLm9uRGVzdHJveSh0KX1pbml0KCl7dGhpcy5fcGxheWVyLmluaXQoKX1oYXNTdGFydGVkKCl7cmV0dXJuIXRoaXMucXVldWVkJiZ0aGlzLl9wbGF5ZXIuaGFzU3RhcnRlZCgpfXBsYXkoKXshdGhpcy5xdWV1ZWQmJnRoaXMuX3BsYXllci5wbGF5KCl9cGF1c2UoKXshdGhpcy5xdWV1ZWQmJnRoaXMuX3BsYXllci5wYXVzZSgpfXJlc3RhcnQoKXshdGhpcy5xdWV1ZWQmJnRoaXMuX3BsYXllci5yZXN0YXJ0KCl9ZmluaXNoKCl7dGhpcy5fcGxheWVyLmZpbmlzaCgpfWRlc3Ryb3koKXt0aGlzLmRlc3Ryb3llZD0hMCx0aGlzLl9wbGF5ZXIuZGVzdHJveSgpfXJlc2V0KCl7IXRoaXMucXVldWVkJiZ0aGlzLl9wbGF5ZXIucmVzZXQoKX1zZXRQb3NpdGlvbih0KXt0aGlzLnF1ZXVlZHx8dGhpcy5fcGxheWVyLnNldFBvc2l0aW9uKHQpfWdldFBvc2l0aW9uKCl7cmV0dXJuIHRoaXMucXVldWVkPzA6dGhpcy5fcGxheWVyLmdldFBvc2l0aW9uKCl9dHJpZ2dlckNhbGxiYWNrKHQpe2NvbnN0IGU9dGhpcy5fcGxheWVyO2UudHJpZ2dlckNhbGxiYWNrJiZlLnRyaWdnZXJDYWxsYmFjayh0KX19ZnVuY3Rpb24geHcodCl7cmV0dXJuIHQmJjE9PT10Lm5vZGVUeXBlfWZ1bmN0aW9uIE93KHQsZSl7Y29uc3Qgbj10LnN0eWxlLmRpc3BsYXk7cmV0dXJuIHQuc3R5bGUuZGlzcGxheT1udWxsIT1lP2U6Im5vbmUiLG59ZnVuY3Rpb24gUHcodCxlLG4sbyxpKXtjb25zdCBhPVtdO24uZm9yRWFjaCgodD0+YS5wdXNoKE93KHQpKSkpO2NvbnN0IHI9W107by5mb3JFYWNoKCgobixvKT0+e2NvbnN0IGE9e307bi5mb3JFYWNoKCh0PT57Y29uc3Qgbj1hW3RdPWUuY29tcHV0ZVN0eWxlKG8sdCxpKTtuJiYwIT1uLmxlbmd0aHx8KG8uX19uZ19yZW1vdmVkPWh3LHIucHVzaChvKSl9KSksdC5zZXQobyxhKX0pKTtsZXQgcz0wO3JldHVybiBuLmZvckVhY2goKHQ9Pk93KHQsYVtzKytdKSkpLHJ9ZnVuY3Rpb24gd3codCxlKXtjb25zdCBuPW5ldyBNYXA7aWYodC5mb3JFYWNoKCh0PT5uLnNldCh0LFtdKSkpLDA9PWUubGVuZ3RoKXJldHVybiBuO2NvbnN0IG89bmV3IFNldChlKSxpPW5ldyBNYXA7ZnVuY3Rpb24gYSh0KXtpZighdClyZXR1cm4gMTtsZXQgZT1pLmdldCh0KTtpZihlKXJldHVybiBlO2NvbnN0IHI9dC5wYXJlbnROb2RlO3JldHVybiBlPW4uaGFzKHIpP3I6by5oYXMocik/MTphKHIpLGkuc2V0KHQsZSksZX1yZXR1cm4gZS5mb3JFYWNoKCh0PT57Y29uc3QgZT1hKHQpOzEhPT1lJiZuLmdldChlKS5wdXNoKHQpfSkpLG59ZnVuY3Rpb24ga3codCxlKXtpZih0LmNsYXNzTGlzdCl0LmNsYXNzTGlzdC5hZGQoZSk7ZWxzZXtsZXQgbj10LiQkY2xhc3NlcztufHwobj10LiQkY2xhc3Nlcz17fSksbltlXT0hMH19ZnVuY3Rpb24gU3codCxlKXtpZih0LmNsYXNzTGlzdCl0LmNsYXNzTGlzdC5yZW1vdmUoZSk7ZWxzZXtsZXQgbj10LiQkY2xhc3NlcztuJiZkZWxldGUgbltlXX19ZnVuY3Rpb24gRHcodCxlLG4pe0hPKG4pLm9uRG9uZSgoKCk9PnQucHJvY2Vzc0xlYXZlTm9kZShlKSkpfWZ1bmN0aW9uIFJ3KHQsZSl7Zm9yKGxldCBuPTA7bjx0Lmxlbmd0aDtuKyspe2NvbnN0IG89dFtuXTtvIGluc3RhbmNlb2YgTk8/Uncoby5wbGF5ZXJzLGUpOmUucHVzaChvKX19ZnVuY3Rpb24gRXcodCxlLG4pe2NvbnN0IG89bi5nZXQodCk7aWYoIW8pcmV0dXJuITE7bGV0IGk9ZS5nZXQodCk7cmV0dXJuIGk/by5mb3JFYWNoKCh0PT5pLmFkZCh0KSkpOmUuc2V0KHQsbyksbi5kZWxldGUodCksITB9Y2xhc3MgQXd7Y29uc3RydWN0b3IodCxlLG4pe3RoaXMuYm9keU5vZGU9dCx0aGlzLl9kcml2ZXI9ZSx0aGlzLl9ub3JtYWxpemVyPW4sdGhpcy5fdHJpZ2dlckNhY2hlPXt9LHRoaXMub25SZW1vdmFsQ29tcGxldGU9KHQsZSk9Pnt9LHRoaXMuX3RyYW5zaXRpb25FbmdpbmU9bmV3IE13KHQsZSxuKSx0aGlzLl90aW1lbGluZUVuZ2luZT1uZXcgZHcodCxlLG4pLHRoaXMuX3RyYW5zaXRpb25FbmdpbmUub25SZW1vdmFsQ29tcGxldGU9KHQsZSk9PnRoaXMub25SZW1vdmFsQ29tcGxldGUodCxlKX1yZWdpc3RlclRyaWdnZXIodCxlLG4sbyxpKXtjb25zdCBhPXQrIi0iK287bGV0IHI9dGhpcy5fdHJpZ2dlckNhY2hlW2FdO2lmKCFyKXtjb25zdCB0PVtdLGU9SVAodGhpcy5fZHJpdmVyLGksdCk7aWYodC5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKGBUaGUgYW5pbWF0aW9uIHRyaWdnZXIgIiR7b30iIGhhcyBmYWlsZWQgdG8gYnVpbGQgZHVlIHRvIHRoZSBmb2xsb3dpbmcgZXJyb3JzOlxuIC0gJHt0LmpvaW4oIlxuIC0gIil9YCk7cj0oZnVuY3Rpb24gbih0LGUsbyl7cmV0dXJuIG5ldyBzdyh0LGUsbyl9KShvLGUsdGhpcy5fbm9ybWFsaXplciksdGhpcy5fdHJpZ2dlckNhY2hlW2FdPXJ9dGhpcy5fdHJhbnNpdGlvbkVuZ2luZS5yZWdpc3RlclRyaWdnZXIoZSxvLHIpfXJlZ2lzdGVyKHQsZSl7dGhpcy5fdHJhbnNpdGlvbkVuZ2luZS5yZWdpc3Rlcih0LGUpfWRlc3Ryb3kodCxlKXt0aGlzLl90cmFuc2l0aW9uRW5naW5lLmRlc3Ryb3kodCxlKX1vbkluc2VydCh0LGUsbixvKXt0aGlzLl90cmFuc2l0aW9uRW5naW5lLmluc2VydE5vZGUodCxlLG4sbyl9b25SZW1vdmUodCxlLG4sbyl7dGhpcy5fdHJhbnNpdGlvbkVuZ2luZS5yZW1vdmVOb2RlKHQsZSxvfHwhMSxuKX1kaXNhYmxlQW5pbWF0aW9ucyh0LGUpe3RoaXMuX3RyYW5zaXRpb25FbmdpbmUubWFya0VsZW1lbnRBc0Rpc2FibGVkKHQsZSl9cHJvY2Vzcyh0LGUsbixvKXtpZigiQCI9PW4uY2hhckF0KDApKXtjb25zdFt0LGldPVVPKG4pO3RoaXMuX3RpbWVsaW5lRW5naW5lLmNvbW1hbmQodCxlLGksbyl9ZWxzZSB0aGlzLl90cmFuc2l0aW9uRW5naW5lLnRyaWdnZXIodCxlLG4sbyl9bGlzdGVuKHQsZSxuLG8saSl7aWYoIkAiPT1uLmNoYXJBdCgwKSl7Y29uc3RbdCxvXT1VTyhuKTtyZXR1cm4gdGhpcy5fdGltZWxpbmVFbmdpbmUubGlzdGVuKHQsZSxvLGkpfXJldHVybiB0aGlzLl90cmFuc2l0aW9uRW5naW5lLmxpc3Rlbih0LGUsbixvLGkpfWZsdXNoKHQ9LTEpe3RoaXMuX3RyYW5zaXRpb25FbmdpbmUuZmx1c2godCl9Z2V0IHBsYXllcnMoKXtyZXR1cm4gdGhpcy5fdHJhbnNpdGlvbkVuZ2luZS5wbGF5ZXJzLmNvbmNhdCh0aGlzLl90aW1lbGluZUVuZ2luZS5wbGF5ZXJzKX13aGVuUmVuZGVyaW5nRG9uZSgpe3JldHVybiB0aGlzLl90cmFuc2l0aW9uRW5naW5lLndoZW5SZW5kZXJpbmdEb25lKCl9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBUdyh0LGUpe2xldCBuPW51bGwsbz1udWxsO3JldHVybiBBcnJheS5pc0FycmF5KGUpJiZlLmxlbmd0aD8obj16dyhlWzBdKSxlLmxlbmd0aD4xJiYobz16dyhlW2UubGVuZ3RoLTFdKSkpOmUmJihuPXp3KGUpKSxufHxvP25ldyBOdyh0LG4sbyk6bnVsbH1jbGFzcyBOd3tjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5fZWxlbWVudD10LHRoaXMuX3N0YXJ0U3R5bGVzPWUsdGhpcy5fZW5kU3R5bGVzPW4sdGhpcy5fc3RhdGU9MDtsZXQgbz1Ody5pbml0aWFsU3R5bGVzQnlFbGVtZW50LmdldCh0KTtvfHxOdy5pbml0aWFsU3R5bGVzQnlFbGVtZW50LnNldCh0LG89e30pLHRoaXMuX2luaXRpYWxTdHlsZXM9b31zdGFydCgpe3RoaXMuX3N0YXRlPDEmJih0aGlzLl9zdGFydFN0eWxlcyYmaFAodGhpcy5fZWxlbWVudCx0aGlzLl9zdGFydFN0eWxlcyx0aGlzLl9pbml0aWFsU3R5bGVzKSx0aGlzLl9zdGF0ZT0xKX1maW5pc2goKXt0aGlzLnN0YXJ0KCksdGhpcy5fc3RhdGU8MiYmKGhQKHRoaXMuX2VsZW1lbnQsdGhpcy5faW5pdGlhbFN0eWxlcyksdGhpcy5fZW5kU3R5bGVzJiYoaFAodGhpcy5fZWxlbWVudCx0aGlzLl9lbmRTdHlsZXMpLHRoaXMuX2VuZFN0eWxlcz1udWxsKSx0aGlzLl9zdGF0ZT0xKX1kZXN0cm95KCl7dGhpcy5maW5pc2goKSx0aGlzLl9zdGF0ZTwzJiYoTncuaW5pdGlhbFN0eWxlc0J5RWxlbWVudC5kZWxldGUodGhpcy5fZWxlbWVudCksdGhpcy5fc3RhcnRTdHlsZXMmJihiUCh0aGlzLl9lbGVtZW50LHRoaXMuX3N0YXJ0U3R5bGVzKSx0aGlzLl9lbmRTdHlsZXM9bnVsbCksdGhpcy5fZW5kU3R5bGVzJiYoYlAodGhpcy5fZWxlbWVudCx0aGlzLl9lbmRTdHlsZXMpLHRoaXMuX2VuZFN0eWxlcz1udWxsKSxoUCh0aGlzLl9lbGVtZW50LHRoaXMuX2luaXRpYWxTdHlsZXMpLHRoaXMuX3N0YXRlPTMpfX1mdW5jdGlvbiB6dyh0KXtsZXQgZT1udWxsO2NvbnN0IG49T2JqZWN0LmtleXModCk7Zm9yKGxldCBvPTA7bzxuLmxlbmd0aDtvKyspe2NvbnN0IGk9bltvXTtJdyhpKSYmKGU9ZXx8e30sZVtpXT10W2ldKX1yZXR1cm4gZX1mdW5jdGlvbiBJdyh0KXtyZXR1cm4iZGlzcGxheSI9PT10fHwicG9zaXRpb24iPT09dH0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovTncuaW5pdGlhbFN0eWxlc0J5RWxlbWVudD1uZXcgV2Vha01hcDtjb25zdCBIdz0iYW5pbWF0aW9uIixGdz0iYW5pbWF0aW9uZW5kIjtjbGFzcyBMd3tjb25zdHJ1Y3Rvcih0LGUsbixvLGksYSxyKXt0aGlzLl9lbGVtZW50PXQsdGhpcy5fbmFtZT1lLHRoaXMuX2R1cmF0aW9uPW4sdGhpcy5fZGVsYXk9byx0aGlzLl9lYXNpbmc9aSx0aGlzLl9maWxsTW9kZT1hLHRoaXMuX29uRG9uZUZuPXIsdGhpcy5fZmluaXNoZWQ9ITEsdGhpcy5fZGVzdHJveWVkPSExLHRoaXMuX3N0YXJ0VGltZT0wLHRoaXMuX3Bvc2l0aW9uPTAsdGhpcy5fZXZlbnRGbj10PT50aGlzLl9oYW5kbGVDYWxsYmFjayh0KX1hcHBseSgpeyEoZnVuY3Rpb24gdChlLG4pe2NvbnN0IG89R3coZSwiIikudHJpbSgpO2xldCBpPTA7by5sZW5ndGgmJihpPShmdW5jdGlvbiBhKHQsZSl7bGV0IG49MDtmb3IobGV0IG89MDtvPHQubGVuZ3RoO28rKyl7dC5jaGFyQXQobyk9PT1lJiZuKyt9cmV0dXJuIG59KShvLCIsIikrMSxuPWAke299LCAke259YCk7cmV0dXJuIFd3KGUsIiIsbiksaX0pKHRoaXMuX2VsZW1lbnQsYCR7dGhpcy5fZHVyYXRpb259bXMgJHt0aGlzLl9lYXNpbmd9ICR7dGhpcy5fZGVsYXl9bXMgMSBub3JtYWwgJHt0aGlzLl9maWxsTW9kZX0gJHt0aGlzLl9uYW1lfWApLFV3KHRoaXMuX2VsZW1lbnQsdGhpcy5fZXZlbnRGbiwhMSksdGhpcy5fc3RhcnRUaW1lPURhdGUubm93KCl9cGF1c2UoKXtCdyh0aGlzLl9lbGVtZW50LHRoaXMuX25hbWUsInBhdXNlZCIpfXJlc3VtZSgpe0J3KHRoaXMuX2VsZW1lbnQsdGhpcy5fbmFtZSwicnVubmluZyIpfXNldFBvc2l0aW9uKHQpe2NvbnN0IGU9VncodGhpcy5fZWxlbWVudCx0aGlzLl9uYW1lKTt0aGlzLl9wb3NpdGlvbj10KnRoaXMuX2R1cmF0aW9uLFd3KHRoaXMuX2VsZW1lbnQsIkRlbGF5IixgLSR7dGhpcy5fcG9zaXRpb259bXNgLGUpfWdldFBvc2l0aW9uKCl7cmV0dXJuIHRoaXMuX3Bvc2l0aW9ufV9oYW5kbGVDYWxsYmFjayh0KXtjb25zdCBlPXQuX25nVGVzdE1hbnVhbFRpbWVzdGFtcHx8RGF0ZS5ub3coKSxuPTFlMypwYXJzZUZsb2F0KHQuZWxhcHNlZFRpbWUudG9GaXhlZCgzKSk7dC5hbmltYXRpb25OYW1lPT10aGlzLl9uYW1lJiZNYXRoLm1heChlLXRoaXMuX3N0YXJ0VGltZSwwKT49dGhpcy5fZGVsYXkmJm4+PXRoaXMuX2R1cmF0aW9uJiZ0aGlzLmZpbmlzaCgpfWZpbmlzaCgpe3RoaXMuX2ZpbmlzaGVkfHwodGhpcy5fZmluaXNoZWQ9ITAsdGhpcy5fb25Eb25lRm4oKSxVdyh0aGlzLl9lbGVtZW50LHRoaXMuX2V2ZW50Rm4sITApKX1kZXN0cm95KCl7dGhpcy5fZGVzdHJveWVkfHwodGhpcy5fZGVzdHJveWVkPSEwLHRoaXMuZmluaXNoKCksKGZ1bmN0aW9uIHQoZSxuKXtjb25zdCBvPUd3KGUsIiIpLnNwbGl0KCIsIiksaT1qdyhvLG4pO2lmKGk+PTApe28uc3BsaWNlKGksMSk7V3coZSwiIixvLmpvaW4oIiwiKSl9fSkodGhpcy5fZWxlbWVudCx0aGlzLl9uYW1lKSl9fWZ1bmN0aW9uIEJ3KHQsZSxuKXtXdyh0LCJQbGF5U3RhdGUiLG4sVncodCxlKSl9ZnVuY3Rpb24gVncodCxlKXtjb25zdCBuPUd3KHQsIiIpO2lmKG4uaW5kZXhPZigiLCIpPjApe3JldHVybiBqdyhuLnNwbGl0KCIsIiksZSl9cmV0dXJuIGp3KFtuXSxlKX1mdW5jdGlvbiBqdyh0LGUpe2ZvcihsZXQgbj0wO248dC5sZW5ndGg7bisrKWlmKHRbbl0uaW5kZXhPZihlKT49MClyZXR1cm4gbjtyZXR1cm4tMX1mdW5jdGlvbiBVdyh0LGUsbil7bj90LnJlbW92ZUV2ZW50TGlzdGVuZXIoRncsZSk6dC5hZGRFdmVudExpc3RlbmVyKEZ3LGUpfWZ1bmN0aW9uIFd3KHQsZSxuLG8pe2NvbnN0IGk9SHcrZTtpZihudWxsIT1vKXtjb25zdCBlPXQuc3R5bGVbaV07aWYoZS5sZW5ndGgpe2NvbnN0IHQ9ZS5zcGxpdCgiLCIpO3Rbb109bixuPXQuam9pbigiLCIpfX10LnN0eWxlW2ldPW59ZnVuY3Rpb24gR3codCxlKXtyZXR1cm4gdC5zdHlsZVtIdytlXXx8IiJ9Y2xhc3MgWXd7Y29uc3RydWN0b3IodCxlLG4sbyxpLGEscixzKXt0aGlzLmVsZW1lbnQ9dCx0aGlzLmtleWZyYW1lcz1lLHRoaXMuYW5pbWF0aW9uTmFtZT1uLHRoaXMuX2R1cmF0aW9uPW8sdGhpcy5fZGVsYXk9aSx0aGlzLl9maW5hbFN0eWxlcz1yLHRoaXMuX3NwZWNpYWxTdHlsZXM9cyx0aGlzLl9vbkRvbmVGbnM9W10sdGhpcy5fb25TdGFydEZucz1bXSx0aGlzLl9vbkRlc3Ryb3lGbnM9W10sdGhpcy5jdXJyZW50U25hcHNob3Q9e30sdGhpcy5fc3RhdGU9MCx0aGlzLmVhc2luZz1hfHwibGluZWFyIix0aGlzLnRvdGFsVGltZT1vK2ksdGhpcy5fYnVpbGRTdHlsZXIoKX1vblN0YXJ0KHQpe3RoaXMuX29uU3RhcnRGbnMucHVzaCh0KX1vbkRvbmUodCl7dGhpcy5fb25Eb25lRm5zLnB1c2godCl9b25EZXN0cm95KHQpe3RoaXMuX29uRGVzdHJveUZucy5wdXNoKHQpfWRlc3Ryb3koKXt0aGlzLmluaXQoKSx0aGlzLl9zdGF0ZT49NHx8KHRoaXMuX3N0YXRlPTQsdGhpcy5fc3R5bGVyLmRlc3Ryb3koKSx0aGlzLl9mbHVzaFN0YXJ0Rm5zKCksdGhpcy5fZmx1c2hEb25lRm5zKCksdGhpcy5fc3BlY2lhbFN0eWxlcyYmdGhpcy5fc3BlY2lhbFN0eWxlcy5kZXN0cm95KCksdGhpcy5fb25EZXN0cm95Rm5zLmZvckVhY2goKHQ9PnQoKSkpLHRoaXMuX29uRGVzdHJveUZucz1bXSl9X2ZsdXNoRG9uZUZucygpe3RoaXMuX29uRG9uZUZucy5mb3JFYWNoKCh0PT50KCkpKSx0aGlzLl9vbkRvbmVGbnM9W119X2ZsdXNoU3RhcnRGbnMoKXt0aGlzLl9vblN0YXJ0Rm5zLmZvckVhY2goKHQ9PnQoKSkpLHRoaXMuX29uU3RhcnRGbnM9W119ZmluaXNoKCl7dGhpcy5pbml0KCksdGhpcy5fc3RhdGU+PTN8fCh0aGlzLl9zdGF0ZT0zLHRoaXMuX3N0eWxlci5maW5pc2goKSx0aGlzLl9mbHVzaFN0YXJ0Rm5zKCksdGhpcy5fc3BlY2lhbFN0eWxlcyYmdGhpcy5fc3BlY2lhbFN0eWxlcy5maW5pc2goKSx0aGlzLl9mbHVzaERvbmVGbnMoKSl9c2V0UG9zaXRpb24odCl7dGhpcy5fc3R5bGVyLnNldFBvc2l0aW9uKHQpfWdldFBvc2l0aW9uKCl7cmV0dXJuIHRoaXMuX3N0eWxlci5nZXRQb3NpdGlvbigpfWhhc1N0YXJ0ZWQoKXtyZXR1cm4gdGhpcy5fc3RhdGU+PTJ9aW5pdCgpe3RoaXMuX3N0YXRlPj0xfHwodGhpcy5fc3RhdGU9MSx0aGlzLl9zdHlsZXIuYXBwbHkoKSx0aGlzLl9kZWxheSYmdGhpcy5fc3R5bGVyLnBhdXNlKCkpfXBsYXkoKXt0aGlzLmluaXQoKSx0aGlzLmhhc1N0YXJ0ZWQoKXx8KHRoaXMuX2ZsdXNoU3RhcnRGbnMoKSx0aGlzLl9zdGF0ZT0yLHRoaXMuX3NwZWNpYWxTdHlsZXMmJnRoaXMuX3NwZWNpYWxTdHlsZXMuc3RhcnQoKSksdGhpcy5fc3R5bGVyLnJlc3VtZSgpfXBhdXNlKCl7dGhpcy5pbml0KCksdGhpcy5fc3R5bGVyLnBhdXNlKCl9cmVzdGFydCgpe3RoaXMucmVzZXQoKSx0aGlzLnBsYXkoKX1yZXNldCgpe3RoaXMuX3N0YXRlPTAsdGhpcy5fc3R5bGVyLmRlc3Ryb3koKSx0aGlzLl9idWlsZFN0eWxlcigpLHRoaXMuX3N0eWxlci5hcHBseSgpfV9idWlsZFN0eWxlcigpe3RoaXMuX3N0eWxlcj1uZXcgTHcodGhpcy5lbGVtZW50LHRoaXMuYW5pbWF0aW9uTmFtZSx0aGlzLl9kdXJhdGlvbix0aGlzLl9kZWxheSx0aGlzLmVhc2luZywiZm9yd2FyZHMiLCgoKT0+dGhpcy5maW5pc2goKSkpfXRyaWdnZXJDYWxsYmFjayh0KXtjb25zdCBlPSJzdGFydCI9PXQ/dGhpcy5fb25TdGFydEZuczp0aGlzLl9vbkRvbmVGbnM7ZS5mb3JFYWNoKCh0PT50KCkpKSxlLmxlbmd0aD0wfWJlZm9yZURlc3Ryb3koKXt0aGlzLmluaXQoKTtjb25zdCB0PXt9O2lmKHRoaXMuaGFzU3RhcnRlZCgpKXtjb25zdCBlPXRoaXMuX3N0YXRlPj0zO09iamVjdC5rZXlzKHRoaXMuX2ZpbmFsU3R5bGVzKS5mb3JFYWNoKChuPT57Im9mZnNldCIhPW4mJih0W25dPWU/dGhpcy5fZmluYWxTdHlsZXNbbl06U1AodGhpcy5lbGVtZW50LG4pKX0pKX10aGlzLmN1cnJlbnRTbmFwc2hvdD10fX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgcXcgZXh0ZW5kcyBUT3tjb25zdHJ1Y3Rvcih0LGUpe3N1cGVyKCksdGhpcy5lbGVtZW50PXQsdGhpcy5fc3RhcnRpbmdTdHlsZXM9e30sdGhpcy5fX2luaXRpYWxpemVkPSExLHRoaXMuX3N0eWxlcz10UChlKX1pbml0KCl7IXRoaXMuX19pbml0aWFsaXplZCYmdGhpcy5fc3RhcnRpbmdTdHlsZXMmJih0aGlzLl9faW5pdGlhbGl6ZWQ9ITAsT2JqZWN0LmtleXModGhpcy5fc3R5bGVzKS5mb3JFYWNoKCh0PT57dGhpcy5fc3RhcnRpbmdTdHlsZXNbdF09dGhpcy5lbGVtZW50LnN0eWxlW3RdfSkpLHN1cGVyLmluaXQoKSl9cGxheSgpe3RoaXMuX3N0YXJ0aW5nU3R5bGVzJiYodGhpcy5pbml0KCksT2JqZWN0LmtleXModGhpcy5fc3R5bGVzKS5mb3JFYWNoKCh0PT50aGlzLmVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkodCx0aGlzLl9zdHlsZXNbdF0pKSksc3VwZXIucGxheSgpKX1kZXN0cm95KCl7dGhpcy5fc3RhcnRpbmdTdHlsZXMmJihPYmplY3Qua2V5cyh0aGlzLl9zdGFydGluZ1N0eWxlcykuZm9yRWFjaCgodD0+e2NvbnN0IGU9dGhpcy5fc3RhcnRpbmdTdHlsZXNbdF07ZT90aGlzLmVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkodCxlKTp0aGlzLmVsZW1lbnQuc3R5bGUucmVtb3ZlUHJvcGVydHkodCl9KSksdGhpcy5fc3RhcnRpbmdTdHlsZXM9bnVsbCxzdXBlci5kZXN0cm95KCkpfX1jbGFzcyBad3tjb25zdHJ1Y3Rvcigpe3RoaXMuX2NvdW50PTB9dmFsaWRhdGVTdHlsZVByb3BlcnR5KHQpe3JldHVybiBLTyh0KX1tYXRjaGVzRWxlbWVudCh0LGUpe3JldHVybiBKTyh0LGUpfWNvbnRhaW5zRWxlbWVudCh0LGUpe3JldHVybiBRTyh0LGUpfXF1ZXJ5KHQsZSxuKXtyZXR1cm4gJE8odCxlLG4pfWNvbXB1dGVTdHlsZSh0LGUsbil7cmV0dXJuIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHQpW2VdfWJ1aWxkS2V5ZnJhbWVFbGVtZW50KHQsZSxuKXtuPW4ubWFwKCh0PT50UCh0KSkpO2xldCBvPWBAa2V5ZnJhbWVzICR7ZX0ge1xuYCxpPSIiO24uZm9yRWFjaCgodD0+e2k9IiAiO2NvbnN0IGU9cGFyc2VGbG9hdCh0Lm9mZnNldCk7bys9YCR7aX0kezEwMCplfSUge1xuYCxpKz0iICIsT2JqZWN0LmtleXModCkuZm9yRWFjaCgoZT0+e2NvbnN0IG49dFtlXTtzd2l0Y2goZSl7Y2FzZSJvZmZzZXQiOnJldHVybjtjYXNlImVhc2luZyI6cmV0dXJuIHZvaWQobiYmKG8rPWAke2l9YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogJHtufTtcbmApKTtkZWZhdWx0OnJldHVybiB2b2lkKG8rPWAke2l9JHtlfTogJHtufTtcbmApfX0pKSxvKz1gJHtpfX1cbmB9KSksbys9In1cbiI7Y29uc3QgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO3JldHVybiBhLnRleHRDb250ZW50PW8sYX1hbmltYXRlKHQsZSxuLG8saSxhPVtdLHIpeygidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmciYmKGZ1bmN0aW9uIHMoKXtpZihYdylyZXR1cm47Y29uc29sZS53YXJuKCJAYW5ndWxhci9hbmltYXRpb25zOiBwbGVhc2UgbG9hZCB0aGUgd2ViLWFuaW1hdGlvbnMuanMgcG9seWZpbGwgdG8gYWxsb3cgcHJvZ3JhbW1hdGljIGFjY2Vzcy4uLlxuIiwiICB2aXNpdCBodHRwczovL2JpdC5seS9JV3VrYW0gdG8gbGVhcm4gbW9yZSBhYm91dCB1c2luZyB0aGUgd2ViLWFuaW1hdGlvbi1qcyBwb2x5ZmlsbC4iKSxYdz0hMH0pKCk7Y29uc3QgbD1hLmZpbHRlcigodD0+dCBpbnN0YW5jZW9mIFl3KSksYz17fTtQUChuLG8pJiZsLmZvckVhY2goKHQ9PntsZXQgZT10LmN1cnJlbnRTbmFwc2hvdDtPYmplY3Qua2V5cyhlKS5mb3JFYWNoKCh0PT5jW3RdPWVbdF0pKX0pKTtjb25zdCBkPShmdW5jdGlvbiBwKHQpe2xldCBlPXt9O2lmKHQpeyhBcnJheS5pc0FycmF5KHQpP3Q6W3RdKS5mb3JFYWNoKCh0PT57T2JqZWN0LmtleXModCkuZm9yRWFjaCgobj0+eyJvZmZzZXQiIT1uJiYiZWFzaW5nIiE9biYmKGVbbl09dFtuXSl9KSl9KSl9cmV0dXJuIGV9KShlPXdQKHQsZSxjKSk7aWYoMD09bilyZXR1cm4gbmV3IHF3KHQsZCk7Y29uc3QgbT0iZ2VuX2Nzc19rZl8iK3RoaXMuX2NvdW50KyssZj10aGlzLmJ1aWxkS2V5ZnJhbWVFbGVtZW50KHQsbSxlKTsoZnVuY3Rpb24gdSh0KXt2YXIgZTtjb25zdCBuPW51bGw9PT0oZT10LmdldFJvb3ROb2RlKXx8dm9pZCAwPT09ZT92b2lkIDA6ZS5jYWxsKHQpO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgU2hhZG93Um9vdCYmbiBpbnN0YW5jZW9mIFNoYWRvd1Jvb3QpcmV0dXJuIG47cmV0dXJuIGRvY3VtZW50LmhlYWR9KSh0KS5hcHBlbmRDaGlsZChmKTtjb25zdCBnPVR3KHQsZSksaD1uZXcgWXcodCxlLG0sbixvLGksZCxnKTtyZXR1cm4gaC5vbkRlc3Ryb3koKCgpPT4oZnVuY3Rpb24gdChlKXtlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZSl9KShmKSkpLGh9fWxldCBYdz0hMTtjbGFzcyBLd3tjb25zdHJ1Y3Rvcih0LGUsbixvKXt0aGlzLmVsZW1lbnQ9dCx0aGlzLmtleWZyYW1lcz1lLHRoaXMub3B0aW9ucz1uLHRoaXMuX3NwZWNpYWxTdHlsZXM9byx0aGlzLl9vbkRvbmVGbnM9W10sdGhpcy5fb25TdGFydEZucz1bXSx0aGlzLl9vbkRlc3Ryb3lGbnM9W10sdGhpcy5faW5pdGlhbGl6ZWQ9ITEsdGhpcy5fZmluaXNoZWQ9ITEsdGhpcy5fc3RhcnRlZD0hMSx0aGlzLl9kZXN0cm95ZWQ9ITEsdGhpcy50aW1lPTAsdGhpcy5wYXJlbnRQbGF5ZXI9bnVsbCx0aGlzLmN1cnJlbnRTbmFwc2hvdD17fSx0aGlzLl9kdXJhdGlvbj1uLmR1cmF0aW9uLHRoaXMuX2RlbGF5PW4uZGVsYXl8fDAsdGhpcy50aW1lPXRoaXMuX2R1cmF0aW9uK3RoaXMuX2RlbGF5fV9vbkZpbmlzaCgpe3RoaXMuX2ZpbmlzaGVkfHwodGhpcy5fZmluaXNoZWQ9ITAsdGhpcy5fb25Eb25lRm5zLmZvckVhY2goKHQ9PnQoKSkpLHRoaXMuX29uRG9uZUZucz1bXSl9aW5pdCgpe3RoaXMuX2J1aWxkUGxheWVyKCksdGhpcy5fcHJlcGFyZVBsYXllckJlZm9yZVN0YXJ0KCl9X2J1aWxkUGxheWVyKCl7aWYodGhpcy5faW5pdGlhbGl6ZWQpcmV0dXJuO3RoaXMuX2luaXRpYWxpemVkPSEwO2NvbnN0IHQ9dGhpcy5rZXlmcmFtZXM7dGhpcy5kb21QbGF5ZXI9dGhpcy5fdHJpZ2dlcldlYkFuaW1hdGlvbih0aGlzLmVsZW1lbnQsdCx0aGlzLm9wdGlvbnMpLHRoaXMuX2ZpbmFsS2V5ZnJhbWU9dC5sZW5ndGg/dFt0Lmxlbmd0aC0xXTp7fSx0aGlzLmRvbVBsYXllci5hZGRFdmVudExpc3RlbmVyKCJmaW5pc2giLCgoKT0+dGhpcy5fb25GaW5pc2goKSkpfV9wcmVwYXJlUGxheWVyQmVmb3JlU3RhcnQoKXt0aGlzLl9kZWxheT90aGlzLl9yZXNldERvbVBsYXllclN0YXRlKCk6dGhpcy5kb21QbGF5ZXIucGF1c2UoKX1fdHJpZ2dlcldlYkFuaW1hdGlvbih0LGUsbil7cmV0dXJuIHQuYW5pbWF0ZShlLG4pfW9uU3RhcnQodCl7dGhpcy5fb25TdGFydEZucy5wdXNoKHQpfW9uRG9uZSh0KXt0aGlzLl9vbkRvbmVGbnMucHVzaCh0KX1vbkRlc3Ryb3kodCl7dGhpcy5fb25EZXN0cm95Rm5zLnB1c2godCl9cGxheSgpe3RoaXMuX2J1aWxkUGxheWVyKCksdGhpcy5oYXNTdGFydGVkKCl8fCh0aGlzLl9vblN0YXJ0Rm5zLmZvckVhY2goKHQ9PnQoKSkpLHRoaXMuX29uU3RhcnRGbnM9W10sdGhpcy5fc3RhcnRlZD0hMCx0aGlzLl9zcGVjaWFsU3R5bGVzJiZ0aGlzLl9zcGVjaWFsU3R5bGVzLnN0YXJ0KCkpLHRoaXMuZG9tUGxheWVyLnBsYXkoKX1wYXVzZSgpe3RoaXMuaW5pdCgpLHRoaXMuZG9tUGxheWVyLnBhdXNlKCl9ZmluaXNoKCl7dGhpcy5pbml0KCksdGhpcy5fc3BlY2lhbFN0eWxlcyYmdGhpcy5fc3BlY2lhbFN0eWxlcy5maW5pc2goKSx0aGlzLl9vbkZpbmlzaCgpLHRoaXMuZG9tUGxheWVyLmZpbmlzaCgpfXJlc2V0KCl7dGhpcy5fcmVzZXREb21QbGF5ZXJTdGF0ZSgpLHRoaXMuX2Rlc3Ryb3llZD0hMSx0aGlzLl9maW5pc2hlZD0hMSx0aGlzLl9zdGFydGVkPSExfV9yZXNldERvbVBsYXllclN0YXRlKCl7dGhpcy5kb21QbGF5ZXImJnRoaXMuZG9tUGxheWVyLmNhbmNlbCgpfXJlc3RhcnQoKXt0aGlzLnJlc2V0KCksdGhpcy5wbGF5KCl9aGFzU3RhcnRlZCgpe3JldHVybiB0aGlzLl9zdGFydGVkfWRlc3Ryb3koKXt0aGlzLl9kZXN0cm95ZWR8fCh0aGlzLl9kZXN0cm95ZWQ9ITAsdGhpcy5fcmVzZXREb21QbGF5ZXJTdGF0ZSgpLHRoaXMuX29uRmluaXNoKCksdGhpcy5fc3BlY2lhbFN0eWxlcyYmdGhpcy5fc3BlY2lhbFN0eWxlcy5kZXN0cm95KCksdGhpcy5fb25EZXN0cm95Rm5zLmZvckVhY2goKHQ9PnQoKSkpLHRoaXMuX29uRGVzdHJveUZucz1bXSl9c2V0UG9zaXRpb24odCl7dm9pZCAwPT09dGhpcy5kb21QbGF5ZXImJnRoaXMuaW5pdCgpLHRoaXMuZG9tUGxheWVyLmN1cnJlbnRUaW1lPXQqdGhpcy50aW1lfWdldFBvc2l0aW9uKCl7cmV0dXJuIHRoaXMuZG9tUGxheWVyLmN1cnJlbnRUaW1lL3RoaXMudGltZX1nZXQgdG90YWxUaW1lKCl7cmV0dXJuIHRoaXMuX2RlbGF5K3RoaXMuX2R1cmF0aW9ufWJlZm9yZURlc3Ryb3koKXtjb25zdCB0PXt9O3RoaXMuaGFzU3RhcnRlZCgpJiZPYmplY3Qua2V5cyh0aGlzLl9maW5hbEtleWZyYW1lKS5mb3JFYWNoKChlPT57Im9mZnNldCIhPWUmJih0W2VdPXRoaXMuX2ZpbmlzaGVkP3RoaXMuX2ZpbmFsS2V5ZnJhbWVbZV06U1AodGhpcy5lbGVtZW50LGUpKX0pKSx0aGlzLmN1cnJlbnRTbmFwc2hvdD10fXRyaWdnZXJDYWxsYmFjayh0KXtjb25zdCBlPSJzdGFydCI9PXQ/dGhpcy5fb25TdGFydEZuczp0aGlzLl9vbkRvbmVGbnM7ZS5mb3JFYWNoKCh0PT50KCkpKSxlLmxlbmd0aD0wfX1jbGFzcyBKd3tjb25zdHJ1Y3Rvcigpe3RoaXMuX2lzTmF0aXZlSW1wbD0vXHtccypcW25hdGl2ZVxzK2NvZGVcXVxzKlx9Ly50ZXN0KFF3KCkudG9TdHJpbmcoKSksdGhpcy5fY3NzS2V5ZnJhbWVzRHJpdmVyPW5ldyBad312YWxpZGF0ZVN0eWxlUHJvcGVydHkodCl7cmV0dXJuIEtPKHQpfW1hdGNoZXNFbGVtZW50KHQsZSl7cmV0dXJuIEpPKHQsZSl9Y29udGFpbnNFbGVtZW50KHQsZSl7cmV0dXJuIFFPKHQsZSl9cXVlcnkodCxlLG4pe3JldHVybiAkTyh0LGUsbil9Y29tcHV0ZVN0eWxlKHQsZSxuKXtyZXR1cm4gd2luZG93LmdldENvbXB1dGVkU3R5bGUodClbZV19b3ZlcnJpZGVXZWJBbmltYXRpb25zU3VwcG9ydCh0KXt0aGlzLl9pc05hdGl2ZUltcGw9dH1hbmltYXRlKHQsZSxuLG8saSxhPVtdLHIpe2lmKCFyJiYhdGhpcy5faXNOYXRpdmVJbXBsKXJldHVybiB0aGlzLl9jc3NLZXlmcmFtZXNEcml2ZXIuYW5pbWF0ZSh0LGUsbixvLGksYSk7Y29uc3Qgcz17ZHVyYXRpb246bixkZWxheTpvLGZpbGw6MD09bz8iYm90aCI6ImZvcndhcmRzIn07aSYmKHMuZWFzaW5nPWkpO2NvbnN0IGw9e30sYz1hLmZpbHRlcigodD0+dCBpbnN0YW5jZW9mIEt3KSk7UFAobixvKSYmYy5mb3JFYWNoKCh0PT57bGV0IGU9dC5jdXJyZW50U25hcHNob3Q7T2JqZWN0LmtleXMoZSkuZm9yRWFjaCgodD0+bFt0XT1lW3RdKSl9KSk7Y29uc3QgZD1Udyh0LGU9d1AodCxlPWUubWFwKCh0PT5mUCh0LCExKSkpLGwpKTtyZXR1cm4gbmV3IEt3KHQsZSxzLGQpfX1mdW5jdGlvbiBRdygpe3JldHVybiB6TygpJiZFbGVtZW50LnByb3RvdHlwZS5hbmltYXRlfHx7fX0KLyoqCiAgICAgKiBAbGljZW5zZSBBbmd1bGFyIHYxMi4yLjEKICAgICAqIChjKSAyMDEwLTIwMjEgR29vZ2xlIExMQy4gaHR0cHM6Ly9hbmd1bGFyLmlvLwogICAgICogTGljZW5zZTogTUlUCiAgICAgKi9jbGFzcyAkdyBleHRlbmRzIE1Pe2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIoKSx0aGlzLl9uZXh0QW5pbWF0aW9uSWQ9MDt0aGlzLl9yZW5kZXJlcj10LmNyZWF0ZVJlbmRlcmVyKGUuYm9keSx7aWQ6IjAiLGVuY2Fwc3VsYXRpb246V24uTm9uZSxzdHlsZXM6W10sZGF0YTp7YW5pbWF0aW9uOltdfX0pfWJ1aWxkKHQpe2NvbnN0IGU9dGhpcy5fbmV4dEFuaW1hdGlvbklkLnRvU3RyaW5nKCk7dGhpcy5fbmV4dEFuaW1hdGlvbklkKys7Y29uc3Qgbj1BcnJheS5pc0FycmF5KHQpP1BPKHQpOnQ7cmV0dXJuIG5rKHRoaXMuX3JlbmRlcmVyLG51bGwsZSwicmVnaXN0ZXIiLFtuXSksbmV3IHRrKGUsdGhpcy5fcmVuZGVyZXIpfX0kdy7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8JHcpKFRyKFFoKSxUcihzTSkpfSwkdy7JtXByb3Y9U24oe3Rva2VuOiR3LGZhY3Rvcnk6JHcuybVmYWN9KSwkdy5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOlFofSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKCR3LFt7dHlwZTpVbX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpRaH0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3NNXX1dfV19KSxudWxsKTtjbGFzcyB0ayBleHRlbmRzIGNsYXNze317Y29uc3RydWN0b3IodCxlKXtzdXBlcigpLHRoaXMuX2lkPXQsdGhpcy5fcmVuZGVyZXI9ZX1jcmVhdGUodCxlKXtyZXR1cm4gbmV3IGVrKHRoaXMuX2lkLHQsZXx8e30sdGhpcy5fcmVuZGVyZXIpfX1jbGFzcyBla3tjb25zdHJ1Y3Rvcih0LGUsbixvKXt0aGlzLmlkPXQsdGhpcy5lbGVtZW50PWUsdGhpcy5fcmVuZGVyZXI9byx0aGlzLnBhcmVudFBsYXllcj1udWxsLHRoaXMuX3N0YXJ0ZWQ9ITEsdGhpcy50b3RhbFRpbWU9MCx0aGlzLl9jb21tYW5kKCJjcmVhdGUiLG4pfV9saXN0ZW4odCxlKXtyZXR1cm4gdGhpcy5fcmVuZGVyZXIubGlzdGVuKHRoaXMuZWxlbWVudCxgQEAke3RoaXMuaWR9OiR7dH1gLGUpfV9jb21tYW5kKHQsLi4uZSl7cmV0dXJuIG5rKHRoaXMuX3JlbmRlcmVyLHRoaXMuZWxlbWVudCx0aGlzLmlkLHQsZSl9b25Eb25lKHQpe3RoaXMuX2xpc3RlbigiZG9uZSIsdCl9b25TdGFydCh0KXt0aGlzLl9saXN0ZW4oInN0YXJ0Iix0KX1vbkRlc3Ryb3kodCl7dGhpcy5fbGlzdGVuKCJkZXN0cm95Iix0KX1pbml0KCl7dGhpcy5fY29tbWFuZCgiaW5pdCIpfWhhc1N0YXJ0ZWQoKXtyZXR1cm4gdGhpcy5fc3RhcnRlZH1wbGF5KCl7dGhpcy5fY29tbWFuZCgicGxheSIpLHRoaXMuX3N0YXJ0ZWQ9ITB9cGF1c2UoKXt0aGlzLl9jb21tYW5kKCJwYXVzZSIpfXJlc3RhcnQoKXt0aGlzLl9jb21tYW5kKCJyZXN0YXJ0Iil9ZmluaXNoKCl7dGhpcy5fY29tbWFuZCgiZmluaXNoIil9ZGVzdHJveSgpe3RoaXMuX2NvbW1hbmQoImRlc3Ryb3kiKX1yZXNldCgpe3RoaXMuX2NvbW1hbmQoInJlc2V0IiksdGhpcy5fc3RhcnRlZD0hMX1zZXRQb3NpdGlvbih0KXt0aGlzLl9jb21tYW5kKCJzZXRQb3NpdGlvbiIsdCl9Z2V0UG9zaXRpb24oKXt2YXIgdCxlO3JldHVybiBudWxsIT09KGU9bnVsbD09PSh0PXRoaXMuX3JlbmRlcmVyLmVuZ2luZS5wbGF5ZXJzWyt0aGlzLmlkXSl8fHZvaWQgMD09PXQ/dm9pZCAwOnQuZ2V0UG9zaXRpb24oKSkmJnZvaWQgMCE9PWU/ZTowfX1mdW5jdGlvbiBuayh0LGUsbixvLGkpe3JldHVybiB0LnNldFByb3BlcnR5KGUsYEBAJHtufToke299YCxpKX1jb25zdCBvaz0iQCIsaWs9IkAuZGlzYWJsZWQiO2NsYXNzIGFre2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLmRlbGVnYXRlPXQsdGhpcy5lbmdpbmU9ZSx0aGlzLl96b25lPW4sdGhpcy5fY3VycmVudElkPTAsdGhpcy5fbWljcm90YXNrSWQ9MSx0aGlzLl9hbmltYXRpb25DYWxsYmFja3NCdWZmZXI9W10sdGhpcy5fcmVuZGVyZXJDYWNoZT1uZXcgTWFwLHRoaXMuX2NkUmVjdXJEZXB0aD0wLHRoaXMucHJvbWlzZT1Qcm9taXNlLnJlc29sdmUoMCksZS5vblJlbW92YWxDb21wbGV0ZT0odCxlKT0+e2UmJmUucGFyZW50Tm9kZSh0KSYmZS5yZW1vdmVDaGlsZCh0LnBhcmVudE5vZGUsdCl9fWNyZWF0ZVJlbmRlcmVyKHQsZSl7Y29uc3Qgbj10aGlzLmRlbGVnYXRlLmNyZWF0ZVJlbmRlcmVyKHQsZSk7aWYoISh0JiZlJiZlLmRhdGEmJmUuZGF0YS5hbmltYXRpb24pKXtsZXQgdD10aGlzLl9yZW5kZXJlckNhY2hlLmdldChuKTtyZXR1cm4gdHx8KHQ9bmV3IHJrKCIiLG4sdGhpcy5lbmdpbmUpLHRoaXMuX3JlbmRlcmVyQ2FjaGUuc2V0KG4sdCkpLHR9Y29uc3Qgbz1lLmlkLGk9ZS5pZCsiLSIrdGhpcy5fY3VycmVudElkO3RoaXMuX2N1cnJlbnRJZCsrLHRoaXMuZW5naW5lLnJlZ2lzdGVyKGksdCk7Y29uc3QgYT1lPT57QXJyYXkuaXNBcnJheShlKT9lLmZvckVhY2goYSk6dGhpcy5lbmdpbmUucmVnaXN0ZXJUcmlnZ2VyKG8saSx0LGUubmFtZSxlKX07cmV0dXJuIGUuZGF0YS5hbmltYXRpb24uZm9yRWFjaChhKSxuZXcgc2sodGhpcyxpLG4sdGhpcy5lbmdpbmUpfWJlZ2luKCl7dGhpcy5fY2RSZWN1ckRlcHRoKyssdGhpcy5kZWxlZ2F0ZS5iZWdpbiYmdGhpcy5kZWxlZ2F0ZS5iZWdpbigpfV9zY2hlZHVsZUNvdW50VGFzaygpe3RoaXMucHJvbWlzZS50aGVuKCgoKT0+e3RoaXMuX21pY3JvdGFza0lkKyt9KSl9c2NoZWR1bGVMaXN0ZW5lckNhbGxiYWNrKHQsZSxuKXt0Pj0wJiZ0PHRoaXMuX21pY3JvdGFza0lkP3RoaXMuX3pvbmUucnVuKCgoKT0+ZShuKSkpOigwPT10aGlzLl9hbmltYXRpb25DYWxsYmFja3NCdWZmZXIubGVuZ3RoJiZQcm9taXNlLnJlc29sdmUobnVsbCkudGhlbigoKCk9Pnt0aGlzLl96b25lLnJ1bigoKCk9Pnt0aGlzLl9hbmltYXRpb25DYWxsYmFja3NCdWZmZXIuZm9yRWFjaCgodD0+e2NvbnN0W2Usbl09dDtlKG4pfSkpLHRoaXMuX2FuaW1hdGlvbkNhbGxiYWNrc0J1ZmZlcj1bXX0pKX0pKSx0aGlzLl9hbmltYXRpb25DYWxsYmFja3NCdWZmZXIucHVzaChbZSxuXSkpfWVuZCgpe3RoaXMuX2NkUmVjdXJEZXB0aC0tLDA9PXRoaXMuX2NkUmVjdXJEZXB0aCYmdGhpcy5fem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9Pnt0aGlzLl9zY2hlZHVsZUNvdW50VGFzaygpLHRoaXMuZW5naW5lLmZsdXNoKHRoaXMuX21pY3JvdGFza0lkKX0pKSx0aGlzLmRlbGVnYXRlLmVuZCYmdGhpcy5kZWxlZ2F0ZS5lbmQoKX13aGVuUmVuZGVyaW5nRG9uZSgpe3JldHVybiB0aGlzLmVuZ2luZS53aGVuUmVuZGVyaW5nRG9uZSgpfX1hay7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8YWspKFRyKFFoKSxUcihBdyksVHIobUMpKX0sYWsuybVwcm92PVNuKHt0b2tlbjphayxmYWN0b3J5OmFrLsm1ZmFjfSksYWsuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpRaH0se3R5cGU6QXd9LHt0eXBlOm1DfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihhayxbe3R5cGU6VW19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6UWh9LHt0eXBlOkF3fSx7dHlwZTptQ31dfSksbnVsbCk7Y2xhc3Mgcmt7Y29uc3RydWN0b3IodCxlLG4pe3RoaXMubmFtZXNwYWNlSWQ9dCx0aGlzLmRlbGVnYXRlPWUsdGhpcy5lbmdpbmU9bix0aGlzLmRlc3Ryb3lOb2RlPXRoaXMuZGVsZWdhdGUuZGVzdHJveU5vZGU/dD0+ZS5kZXN0cm95Tm9kZSh0KTpudWxsfWdldCBkYXRhKCl7cmV0dXJuIHRoaXMuZGVsZWdhdGUuZGF0YX1kZXN0cm95KCl7dGhpcy5lbmdpbmUuZGVzdHJveSh0aGlzLm5hbWVzcGFjZUlkLHRoaXMuZGVsZWdhdGUpLHRoaXMuZGVsZWdhdGUuZGVzdHJveSgpfWNyZWF0ZUVsZW1lbnQodCxlKXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZS5jcmVhdGVFbGVtZW50KHQsZSl9Y3JlYXRlQ29tbWVudCh0KXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZS5jcmVhdGVDb21tZW50KHQpfWNyZWF0ZVRleHQodCl7cmV0dXJuIHRoaXMuZGVsZWdhdGUuY3JlYXRlVGV4dCh0KX1hcHBlbmRDaGlsZCh0LGUpe3RoaXMuZGVsZWdhdGUuYXBwZW5kQ2hpbGQodCxlKSx0aGlzLmVuZ2luZS5vbkluc2VydCh0aGlzLm5hbWVzcGFjZUlkLGUsdCwhMSl9aW5zZXJ0QmVmb3JlKHQsZSxuLG89ITApe3RoaXMuZGVsZWdhdGUuaW5zZXJ0QmVmb3JlKHQsZSxuKSx0aGlzLmVuZ2luZS5vbkluc2VydCh0aGlzLm5hbWVzcGFjZUlkLGUsdCxvKX1yZW1vdmVDaGlsZCh0LGUsbil7dGhpcy5lbmdpbmUub25SZW1vdmUodGhpcy5uYW1lc3BhY2VJZCxlLHRoaXMuZGVsZWdhdGUsbil9c2VsZWN0Um9vdEVsZW1lbnQodCxlKXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZS5zZWxlY3RSb290RWxlbWVudCh0LGUpfXBhcmVudE5vZGUodCl7cmV0dXJuIHRoaXMuZGVsZWdhdGUucGFyZW50Tm9kZSh0KX1uZXh0U2libGluZyh0KXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZS5uZXh0U2libGluZyh0KX1zZXRBdHRyaWJ1dGUodCxlLG4sbyl7dGhpcy5kZWxlZ2F0ZS5zZXRBdHRyaWJ1dGUodCxlLG4sbyl9cmVtb3ZlQXR0cmlidXRlKHQsZSxuKXt0aGlzLmRlbGVnYXRlLnJlbW92ZUF0dHJpYnV0ZSh0LGUsbil9YWRkQ2xhc3ModCxlKXt0aGlzLmRlbGVnYXRlLmFkZENsYXNzKHQsZSl9cmVtb3ZlQ2xhc3ModCxlKXt0aGlzLmRlbGVnYXRlLnJlbW92ZUNsYXNzKHQsZSl9c2V0U3R5bGUodCxlLG4sbyl7dGhpcy5kZWxlZ2F0ZS5zZXRTdHlsZSh0LGUsbixvKX1yZW1vdmVTdHlsZSh0LGUsbil7dGhpcy5kZWxlZ2F0ZS5yZW1vdmVTdHlsZSh0LGUsbil9c2V0UHJvcGVydHkodCxlLG4pe2UuY2hhckF0KDApPT1vayYmZT09aWs/dGhpcy5kaXNhYmxlQW5pbWF0aW9ucyh0LCEhbik6dGhpcy5kZWxlZ2F0ZS5zZXRQcm9wZXJ0eSh0LGUsbil9c2V0VmFsdWUodCxlKXt0aGlzLmRlbGVnYXRlLnNldFZhbHVlKHQsZSl9bGlzdGVuKHQsZSxuKXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZS5saXN0ZW4odCxlLG4pfWRpc2FibGVBbmltYXRpb25zKHQsZSl7dGhpcy5lbmdpbmUuZGlzYWJsZUFuaW1hdGlvbnModCxlKX19Y2xhc3Mgc2sgZXh0ZW5kcyBya3tjb25zdHJ1Y3Rvcih0LGUsbixvKXtzdXBlcihlLG4sbyksdGhpcy5mYWN0b3J5PXQsdGhpcy5uYW1lc3BhY2VJZD1lfXNldFByb3BlcnR5KHQsZSxuKXtlLmNoYXJBdCgwKT09b2s/Ii4iPT1lLmNoYXJBdCgxKSYmZT09aWs/dGhpcy5kaXNhYmxlQW5pbWF0aW9ucyh0LG49dm9pZCAwPT09bnx8ISFuKTp0aGlzLmVuZ2luZS5wcm9jZXNzKHRoaXMubmFtZXNwYWNlSWQsdCxlLnN1YnN0cigxKSxuKTp0aGlzLmRlbGVnYXRlLnNldFByb3BlcnR5KHQsZSxuKX1saXN0ZW4odCxlLG4pe2lmKGUuY2hhckF0KDApPT1vayl7Y29uc3Qgbz0oZnVuY3Rpb24gaSh0KXtzd2l0Y2godCl7Y2FzZSJib2R5IjpyZXR1cm4gZG9jdW1lbnQuYm9keTtjYXNlImRvY3VtZW50IjpyZXR1cm4gZG9jdW1lbnQ7Y2FzZSJ3aW5kb3ciOnJldHVybiB3aW5kb3c7ZGVmYXVsdDpyZXR1cm4gdH19KSh0KTtsZXQgYT1lLnN1YnN0cigxKSxyPSIiO3JldHVybiBhLmNoYXJBdCgwKSE9b2smJihbYSxyXT0oZnVuY3Rpb24gcyh0KXtjb25zdCBlPXQuaW5kZXhPZigiLiIpLG49dC5zdWJzdHJpbmcoMCxlKSxvPXQuc3Vic3RyKGUrMSk7cmV0dXJuW24sb119Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLykoYSkpLHRoaXMuZW5naW5lLmxpc3Rlbih0aGlzLm5hbWVzcGFjZUlkLG8sYSxyLCh0PT57dGhpcy5mYWN0b3J5LnNjaGVkdWxlTGlzdGVuZXJDYWxsYmFjayh0Ll9kYXRhfHwtMSxuLHQpfSkpfXJldHVybiB0aGlzLmRlbGVnYXRlLmxpc3Rlbih0LGUsbil9fWNsYXNzIGxrIGV4dGVuZHMgQXd7Y29uc3RydWN0b3IodCxlLG4pe3N1cGVyKHQuYm9keSxlLG4pfW5nT25EZXN0cm95KCl7dGhpcy5mbHVzaCgpfX1say7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8bGspKFRyKHNNKSxUcihuUCksVHIoJFApKX0sbGsuybVwcm92PVNuKHt0b2tlbjpsayxmYWN0b3J5OmxrLsm1ZmFjfSksbGsuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19LHt0eXBlOm5QfSx7dHlwZTokUH1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIobGssW3t0eXBlOlVtfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX0se3R5cGU6blB9LHt0eXBlOiRQfV19KSxudWxsKTtjb25zdCBjaz1uZXcgZXIoIkFuaW1hdGlvbk1vZHVsZVR5cGUiKSxkaz1be3Byb3ZpZGU6TU8sdXNlQ2xhc3M6JHd9LHtwcm92aWRlOiRQLHVzZUZhY3Rvcnk6ZnVuY3Rpb24gcGsoKXtyZXR1cm4gbmV3IHR3fX0se3Byb3ZpZGU6QXcsdXNlQ2xhc3M6bGt9LHtwcm92aWRlOlFoLHVzZUZhY3Rvcnk6ZnVuY3Rpb24gbWsodCxlLG4pe3JldHVybiBuZXcgYWsodCxlLG4pfSxkZXBzOlt6eCxBdyxtQ119XSxmaz1be3Byb3ZpZGU6blAsdXNlRmFjdG9yeTpmdW5jdGlvbiB1aygpe3JldHVybihmdW5jdGlvbiB0KCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIFF3KCl9KSgpP25ldyBKdzpuZXcgWnd9fSx7cHJvdmlkZTpjayx1c2VWYWx1ZToiQnJvd3NlckFuaW1hdGlvbnMifSwuLi5ka10sZ2s9W3twcm92aWRlOm5QLHVzZUNsYXNzOmVQfSx7cHJvdmlkZTpjayx1c2VWYWx1ZToiTm9vcEFuaW1hdGlvbnMifSwuLi5ka107Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBoa3tzdGF0aWMgd2l0aENvbmZpZyh0KXtyZXR1cm57bmdNb2R1bGU6aGsscHJvdmlkZXJzOnQuZGlzYWJsZUFuaW1hdGlvbnM/Z2s6Zmt9fX1oay7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8aGspfSxoay7JtW1vZD1mbyh7dHlwZTpoa30pLGhrLsm1aW5qPURuKHtwcm92aWRlcnM6ZmssaW1wb3J0czpbZE9dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihoayxbe3R5cGU6TF8sYXJnczpbe2V4cG9ydHM6W2RPXSxwcm92aWRlcnM6Zmt9XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhoayx7ZXhwb3J0czpmdW5jdGlvbigpe3JldHVybltkT119fSk7Y2xhc3MgYmt7fWJrLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxiayl9LGJrLsm1bW9kPWZvKHt0eXBlOmJrfSksYmsuybVpbmo9RG4oe3Byb3ZpZGVyczpnayxpbXBvcnRzOltkT119KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGJrLFt7dHlwZTpMXyxhcmdzOlt7ZXhwb3J0czpbZE9dLHByb3ZpZGVyczpna31dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKGJrLHtleHBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW2RPXX19KTtjb25zdCB5az17fTtmdW5jdGlvbiBfayh0LGUpe2lmKHlrW3RdPSh5a1t0XXx8MCkrMSwiZnVuY3Rpb24iPT10eXBlb2YgZSlyZXR1cm4gQ2sodCwoKC4uLm4pPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sZSguLi5uKSkse3R5cGU6dH0pKSk7c3dpdGNoKGU/ZS5fYXM6ImVtcHR5Iil7Y2FzZSJlbXB0eSI6cmV0dXJuIENrKHQsKCgpPT4oe3R5cGU6dH0pKSk7Y2FzZSJwcm9wcyI6cmV0dXJuIENrKHQsKGU9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxlKSx7dHlwZTp0fSkpKTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCBjb25maWcuIil9fWZ1bmN0aW9uIENrKHQsZSl7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJ0eXBlIix7dmFsdWU6dCx3cml0YWJsZTohMX0pfWNvbnN0IE1rPSJAbmdyeC9zdG9yZS9pbml0IjtjbGFzcyB2ayBleHRlbmRzIGp7Y29uc3RydWN0b3IoKXtzdXBlcih7dHlwZTpNa30pfW5leHQodCl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcigiXG4gICAgICAgIERpc3BhdGNoIGV4cGVjdGVkIGFuIG9iamVjdCwgaW5zdGVhZCBpdCByZWNlaXZlZCBhIGZ1bmN0aW9uLlxuICAgICAgICBJZiB5b3UncmUgdXNpbmcgdGhlIGNyZWF0ZUFjdGlvbiBmdW5jdGlvbiwgbWFrZSBzdXJlIHRvIGludm9rZSB0aGUgZnVuY3Rpb25cbiAgICAgICAgYmVmb3JlIGRpc3BhdGNoaW5nIHRoZSBhY3Rpb24uIEZvciBleGFtcGxlLCBzb21lQWN0aW9uIHNob3VsZCBiZSBzb21lQWN0aW9uKCkuIik7aWYodm9pZCAwPT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJBY3Rpb25zIG11c3QgYmUgb2JqZWN0cyIpO2lmKHZvaWQgMD09PXQudHlwZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJBY3Rpb25zIG11c3QgaGF2ZSBhIHR5cGUgcHJvcGVydHkiKTtzdXBlci5uZXh0KHQpfWNvbXBsZXRlKCl7fW5nT25EZXN0cm95KCl7c3VwZXIuY29tcGxldGUoKX19dmsuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHZrKX0sdmsuybVwcm92PVNuKHt0b2tlbjp2ayxmYWN0b3J5OnZrLsm1ZmFjfSksdmsuY3RvclBhcmFtZXRlcnM9KCk9PltdLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIodmssW3t0eXBlOlVtfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW119KSxudWxsKTtjb25zdCB4az1bdmtdLE9rPW5ldyBlcigiQG5ncngvc3RvcmUgSW50ZXJuYWwgUm9vdCBHdWFyZCIpLFBrPW5ldyBlcigiQG5ncngvc3RvcmUgSW50ZXJuYWwgSW5pdGlhbCBTdGF0ZSIpLHdrPW5ldyBlcigiQG5ncngvc3RvcmUgSW5pdGlhbCBTdGF0ZSIpLGtrPW5ldyBlcigiQG5ncngvc3RvcmUgUmVkdWNlciBGYWN0b3J5IiksU2s9bmV3IGVyKCJAbmdyeC9zdG9yZSBJbnRlcm5hbCBSZWR1Y2VyIEZhY3RvcnkgUHJvdmlkZXIiKSxEaz1uZXcgZXIoIkBuZ3J4L3N0b3JlIEluaXRpYWwgUmVkdWNlcnMiKSxSaz1uZXcgZXIoIkBuZ3J4L3N0b3JlIEludGVybmFsIEluaXRpYWwgUmVkdWNlcnMiKSxFaz1uZXcgZXIoIkBuZ3J4L3N0b3JlIFN0b3JlIEZlYXR1cmVzIiksQWs9bmV3IGVyKCJAbmdyeC9zdG9yZSBJbnRlcm5hbCBTdG9yZSBSZWR1Y2VycyIpLFRrPW5ldyBlcigiQG5ncngvc3RvcmUgSW50ZXJuYWwgRmVhdHVyZSBSZWR1Y2VycyIpLE5rPW5ldyBlcigiQG5ncngvc3RvcmUgSW50ZXJuYWwgRmVhdHVyZSBDb25maWdzIiksems9bmV3IGVyKCJAbmdyeC9zdG9yZSBJbnRlcm5hbCBTdG9yZSBGZWF0dXJlcyIpLElrPW5ldyBlcigiQG5ncngvc3RvcmUgSW50ZXJuYWwgRmVhdHVyZSBSZWR1Y2VycyBUb2tlbiIpLEhrPW5ldyBlcigiQG5ncngvc3RvcmUgRmVhdHVyZSBSZWR1Y2VycyIpLEZrPW5ldyBlcigiQG5ncngvc3RvcmUgVXNlciBQcm92aWRlZCBNZXRhIFJlZHVjZXJzIiksTGs9bmV3IGVyKCJAbmdyeC9zdG9yZSBNZXRhIFJlZHVjZXJzIiksQms9bmV3IGVyKCJAbmdyeC9zdG9yZSBJbnRlcm5hbCBSZXNvbHZlZCBNZXRhIFJlZHVjZXJzIiksVms9bmV3IGVyKCJAbmdyeC9zdG9yZSBVc2VyIFJ1bnRpbWUgQ2hlY2tzIENvbmZpZyIpLGprPW5ldyBlcigiQG5ncngvc3RvcmUgSW50ZXJuYWwgVXNlciBSdW50aW1lIENoZWNrcyBDb25maWciKSxVaz1uZXcgZXIoIkBuZ3J4L3N0b3JlIEludGVybmFsIFJ1bnRpbWUgQ2hlY2tzIiksV2s9bmV3IGVyKCJAbmdyeC9zdG9yZSBDaGVjayBpZiBBY3Rpb24gdHlwZXMgYXJlIHVuaXF1ZSIpO2Z1bmN0aW9uIEdrKHQsZT17fSl7Y29uc3Qgbj1PYmplY3Qua2V5cyh0KSxvPXt9O2ZvcihsZXQgZT0wO2U8bi5sZW5ndGg7ZSsrKXtjb25zdCBpPW5bZV07ImZ1bmN0aW9uIj09dHlwZW9mIHRbaV0mJihvW2ldPXRbaV0pfWNvbnN0IGk9T2JqZWN0LmtleXMobyk7cmV0dXJuIGZ1bmN0aW9uIHQobixhKXtuPXZvaWQgMD09PW4/ZTpuO2xldCByPSExO2NvbnN0IHM9e307Zm9yKGxldCB0PTA7dDxpLmxlbmd0aDt0Kyspe2NvbnN0IGU9aVt0XSxsPW5bZV0sYz0oMCxvW2VdKShsLGEpO3NbZV09YyxyPXJ8fGMhPT1sfXJldHVybiByP3M6bn19ZnVuY3Rpb24gWWsoLi4udCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKDA9PT10Lmxlbmd0aClyZXR1cm4gZTtjb25zdCBuPXRbdC5sZW5ndGgtMV07cmV0dXJuIHQuc2xpY2UoMCwtMSkucmVkdWNlUmlnaHQoKCh0LGUpPT5lKHQpKSxuKGUpKX19ZnVuY3Rpb24gcWsodCxlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKSYmZS5sZW5ndGg+MCYmKHQ9WWsuYXBwbHkobnVsbCxbLi4uZSx0XSkpLChlLG4pPT57Y29uc3Qgbz10KGUpO3JldHVybih0LGUpPT5vKHQ9dm9pZCAwPT09dD9uOnQsZSl9fWNsYXNzIFprIGV4dGVuZHMgVHt9Y2xhc3MgWGsgZXh0ZW5kcyB2a3t9Y2xhc3MgS2sgZXh0ZW5kcyBqe2NvbnN0cnVjdG9yKHQsZSxuLG8pe3N1cGVyKG8obixlKSksdGhpcy5kaXNwYXRjaGVyPXQsdGhpcy5pbml0aWFsU3RhdGU9ZSx0aGlzLnJlZHVjZXJzPW4sdGhpcy5yZWR1Y2VyRmFjdG9yeT1vfWdldCBjdXJyZW50UmVkdWNlcnMoKXtyZXR1cm4gdGhpcy5yZWR1Y2Vyc31hZGRGZWF0dXJlKHQpe3RoaXMuYWRkRmVhdHVyZXMoW3RdKX1hZGRGZWF0dXJlcyh0KXtjb25zdCBlPXQucmVkdWNlKCgodCx7cmVkdWNlcnM6ZSxyZWR1Y2VyRmFjdG9yeTpuLG1ldGFSZWR1Y2VyczpvLGluaXRpYWxTdGF0ZTppLGtleTphfSk9Pntjb25zdCByPSJmdW5jdGlvbiI9PXR5cGVvZiBlPyhmdW5jdGlvbiBzKHQpe2NvbnN0IGU9QXJyYXkuaXNBcnJheSh0KSYmdC5sZW5ndGg+MD9ZayguLi50KTp0PT50O3JldHVybih0LG4pPT4odD1lKHQpLChlLG8pPT50KGU9dm9pZCAwPT09ZT9uOmUsbykpfSkobykoZSxpKTpxayhuLG8pKGUsaSk7cmV0dXJuIHRbYV09cix0fSkse30pO3RoaXMuYWRkUmVkdWNlcnMoZSl9cmVtb3ZlRmVhdHVyZSh0KXt0aGlzLnJlbW92ZUZlYXR1cmVzKFt0XSl9cmVtb3ZlRmVhdHVyZXModCl7dGhpcy5yZW1vdmVSZWR1Y2Vycyh0Lm1hcCgodD0+dC5rZXkpKSl9YWRkUmVkdWNlcih0LGUpe3RoaXMuYWRkUmVkdWNlcnMoe1t0XTplfSl9YWRkUmVkdWNlcnModCl7dGhpcy5yZWR1Y2Vycz1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdGhpcy5yZWR1Y2VycyksdCksdGhpcy51cGRhdGVSZWR1Y2VycyhPYmplY3Qua2V5cyh0KSl9cmVtb3ZlUmVkdWNlcih0KXt0aGlzLnJlbW92ZVJlZHVjZXJzKFt0XSl9cmVtb3ZlUmVkdWNlcnModCl7dC5mb3JFYWNoKCh0PT57dGhpcy5yZWR1Y2Vycz0oZnVuY3Rpb24gZSh0LG4pe3JldHVybiBPYmplY3Qua2V5cyh0KS5maWx0ZXIoKHQ9PnQhPT1uKSkucmVkdWNlKCgoZSxuKT0+T2JqZWN0LmFzc2lnbihlLHtbbl06dFtuXX0pKSx7fSl9KSh0aGlzLnJlZHVjZXJzLHQpfSkpLHRoaXMudXBkYXRlUmVkdWNlcnModCl9dXBkYXRlUmVkdWNlcnModCl7dGhpcy5uZXh0KHRoaXMucmVkdWNlckZhY3RvcnkodGhpcy5yZWR1Y2Vycyx0aGlzLmluaXRpYWxTdGF0ZSkpLHRoaXMuZGlzcGF0Y2hlci5uZXh0KHt0eXBlOiJAbmdyeC9zdG9yZS91cGRhdGUtcmVkdWNlcnMiLGZlYXR1cmVzOnR9KX1uZ09uRGVzdHJveSgpe3RoaXMuY29tcGxldGUoKX19S2suybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEtrKShUcihYayksVHIod2spLFRyKERrKSxUcihraykpfSxLay7JtXByb3Y9U24oe3Rva2VuOktrLGZhY3Rvcnk6S2suybVmYWN9KSxLay5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOlhrfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbd2tdfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltEa119XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W2trXX1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihLayxbe3R5cGU6VW19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6WGt9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOlt3a119XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W0RrXX1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpba2tdfV19XX0pLG51bGwpO2NvbnN0IEprPVtLayx7cHJvdmlkZTpaayx1c2VFeGlzdGluZzpLa30se3Byb3ZpZGU6WGssdXNlRXhpc3Rpbmc6dmt9XTtjbGFzcyBRayBleHRlbmRzIEJ7bmdPbkRlc3Ryb3koKXt0aGlzLmNvbXBsZXRlKCl9fVFrLsm1ZmFjPShmdW5jdGlvbigpe2xldCB0O3JldHVybiBmdW5jdGlvbiBlKG4pe3JldHVybih0fHwodD1VYShRaykpKShufHxRayl9fSkoKSxRay7JtXByb3Y9U24oe3Rva2VuOlFrLGZhY3Rvcnk6UWsuybVmYWN9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFFrLFt7dHlwZTpVbX1dLG51bGwsbnVsbCk7Y29uc3QgJGs9W1FrXTtjbGFzcyB0UyBleHRlbmRzIFR7fWNsYXNzIGVTIGV4dGVuZHMgantjb25zdHJ1Y3Rvcih0LGUsbixvKXtzdXBlcihvKTtjb25zdCBpPXQucGlwZSgoZnVuY3Rpb24gcih0LGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT0wKSx6KChmdW5jdGlvbihuLG8pe24uc3Vic2NyaWJlKG5ldyBIKG8sKGZ1bmN0aW9uKG4pe3JldHVybiBvLmFkZCh0LnNjaGVkdWxlKChmdW5jdGlvbigpe3JldHVybiBvLm5leHQobil9KSxlKSl9KSwoZnVuY3Rpb24oKXtyZXR1cm4gby5hZGQodC5zY2hlZHVsZSgoZnVuY3Rpb24oKXtyZXR1cm4gby5jb21wbGV0ZSgpfSksZSkpfSksKGZ1bmN0aW9uKG4pe3JldHVybiBvLmFkZCh0LnNjaGVkdWxlKChmdW5jdGlvbigpe3JldHVybiBvLmVycm9yKG4pfSksZSkpfSkpKX0pKX0pKHN0KSkucGlwZShxZShlKSkucGlwZSgoZnVuY3Rpb24gYSh0LGUpe3JldHVybiB6KGJlKHQsZSxhcmd1bWVudHMubGVuZ3RoPj0yLCEwKSl9KShuUyx7c3RhdGU6b30pKTt0aGlzLnN0YXRlU3Vic2NyaXB0aW9uPWkuc3Vic2NyaWJlKCgoe3N0YXRlOnQsYWN0aW9uOmV9KT0+e3RoaXMubmV4dCh0KSxuLm5leHQoZSl9KSl9bmdPbkRlc3Ryb3koKXt0aGlzLnN0YXRlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksdGhpcy5jb21wbGV0ZSgpfX1mdW5jdGlvbiBuUyh0PXtzdGF0ZTp2b2lkIDB9LFtlLG5dKXtjb25zdHtzdGF0ZTpvfT10O3JldHVybntzdGF0ZTpuKG8sZSksYWN0aW9uOmV9fWVTLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxlUykoVHIodmspLFRyKFprKSxUcihRayksVHIod2spKX0sZVMuybVwcm92PVNuKHt0b2tlbjplUyxmYWN0b3J5OmVTLsm1ZmFjfSksZVMuSU5JVD1NayxlUy5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnZrfSx7dHlwZTpaa30se3R5cGU6UWt9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOlt3a119XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoZVMsW3t0eXBlOlVtfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnZrfSx7dHlwZTpaa30se3R5cGU6UWt9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOlt3a119XX1dfSksbnVsbCk7Y29uc3Qgb1M9W2VTLHtwcm92aWRlOnRTLHVzZUV4aXN0aW5nOmVTfV07Y2xhc3MgaVMgZXh0ZW5kcyBUe2NvbnN0cnVjdG9yKHQsZSxuKXtzdXBlcigpLHRoaXMuYWN0aW9uc09ic2VydmVyPWUsdGhpcy5yZWR1Y2VyTWFuYWdlcj1uLHRoaXMuc291cmNlPXR9c2VsZWN0KHQsLi4uZSl7cmV0dXJuIHJTLmNhbGwobnVsbCx0LC4uLmUpKHRoaXMpfWxpZnQodCl7Y29uc3QgZT1uZXcgaVModGhpcyx0aGlzLmFjdGlvbnNPYnNlcnZlcix0aGlzLnJlZHVjZXJNYW5hZ2VyKTtyZXR1cm4gZS5vcGVyYXRvcj10LGV9ZGlzcGF0Y2godCl7dGhpcy5hY3Rpb25zT2JzZXJ2ZXIubmV4dCh0KX1uZXh0KHQpe3RoaXMuYWN0aW9uc09ic2VydmVyLm5leHQodCl9ZXJyb3IodCl7dGhpcy5hY3Rpb25zT2JzZXJ2ZXIuZXJyb3IodCl9Y29tcGxldGUoKXt0aGlzLmFjdGlvbnNPYnNlcnZlci5jb21wbGV0ZSgpfWFkZFJlZHVjZXIodCxlKXt0aGlzLnJlZHVjZXJNYW5hZ2VyLmFkZFJlZHVjZXIodCxlKX1yZW1vdmVSZWR1Y2VyKHQpe3RoaXMucmVkdWNlck1hbmFnZXIucmVtb3ZlUmVkdWNlcih0KX19aVMuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGlTKShUcih0UyksVHIodmspLFRyKEtrKSl9LGlTLsm1cHJvdj1Tbih7dG9rZW46aVMsZmFjdG9yeTppUy7JtWZhY30pLGlTLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6dFN9LHt0eXBlOnZrfSx7dHlwZTpLa31dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoaVMsW3t0eXBlOlVtfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnRTfSx7dHlwZTp2a30se3R5cGU6S2t9XX0pLG51bGwpO2NvbnN0IGFTPVtpU107ZnVuY3Rpb24gclModCxlLC4uLm4pe3JldHVybiBmdW5jdGlvbiBvKGkpe2xldCBhO2lmKCJzdHJpbmciPT10eXBlb2YgdCl7Y29uc3Qgbz1bZSwuLi5uXS5maWx0ZXIoQm9vbGVhbik7YT1pLnBpcGUoKGZ1bmN0aW9uIHIoKXtmb3IodmFyIHQ9W10sZT0wO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspdFtlXT1hcmd1bWVudHNbZV07dmFyIG49dC5sZW5ndGg7aWYoMD09PW4pdGhyb3cgbmV3IEVycm9yKCJsaXN0IG9mIHByb3BlcnRpZXMgY2Fubm90IGJlIGVtcHR5LiIpO3JldHVybiBWdCgoZnVuY3Rpb24oZSl7Zm9yKHZhciBvPWUsaT0wO2k8bjtpKyspe3ZhciBhPW51bGw9PW8/dm9pZCAwOm9bdFtpXV07aWYodm9pZCAwPT09YSlyZXR1cm47bz1hfXJldHVybiBvfSkpfSkodCwuLi5vKSl9ZWxzZXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKGBVbmV4cGVjdGVkIHR5cGUgJyR7dHlwZW9mIHR9JyBpbiBzZWxlY3Qgb3BlcmF0b3IsIGV4cGVjdGVkICdzdHJpbmcnIG9yICdmdW5jdGlvbidgKTthPWkucGlwZShWdCgobj0+dChuLGUpKSkpfXJldHVybiBhLnBpcGUod2UoKSl9fWNvbnN0IHNTPSJodHRwczovL25ncnguaW8vZ3VpZGUvc3RvcmUvY29uZmlndXJhdGlvbi9ydW50aW1lLWNoZWNrcyI7ZnVuY3Rpb24gbFModCl7cmV0dXJuIHZvaWQgMD09PXR9ZnVuY3Rpb24gY1ModCl7cmV0dXJuIG51bGw9PT10fWZ1bmN0aW9uIGRTKHQpe3JldHVybiBBcnJheS5pc0FycmF5KHQpfWZ1bmN0aW9uIHBTKHQpe3JldHVybiJvYmplY3QiPT10eXBlb2YgdCYmbnVsbCE9PXR9ZnVuY3Rpb24gbVModCl7aWYoIShmdW5jdGlvbiBlKHQpe3JldHVybiBwUyh0KSYmIWRTKHQpfSkodCkpcmV0dXJuITE7Y29uc3Qgbj1PYmplY3QuZ2V0UHJvdG90eXBlT2YodCk7cmV0dXJuIG49PT1PYmplY3QucHJvdG90eXBlfHxudWxsPT09bn1mdW5jdGlvbiBmUyh0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdH1mdW5jdGlvbiB1Uyh0LGUpe3JldHVybiB0PT09ZX1mdW5jdGlvbiBnUyh0LGUsbil7Zm9yKGxldCBvPTA7bzx0Lmxlbmd0aDtvKyspaWYoIW4odFtvXSxlW29dKSlyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiBoUyh0LGU9dVMsbj11Uyl7bGV0IG8saT1udWxsLGE9bnVsbDtyZXR1cm57bWVtb2l6ZWQ6ZnVuY3Rpb24gcigpe2lmKHZvaWQgMCE9PW8pcmV0dXJuIG8ucmVzdWx0O2lmKCFpKXJldHVybiBhPXQuYXBwbHkobnVsbCxhcmd1bWVudHMpLGk9YXJndW1lbnRzLGE7aWYoIWdTKGFyZ3VtZW50cyxpLGUpKXJldHVybiBhO2NvbnN0IHI9dC5hcHBseShudWxsLGFyZ3VtZW50cyk7cmV0dXJuIGk9YXJndW1lbnRzLG4oYSxyKT9hOihhPXIscil9LHJlc2V0OmZ1bmN0aW9uIHMoKXtpPW51bGwsYT1udWxsfSxzZXRSZXN1bHQ6ZnVuY3Rpb24gbCh0KXtvPXtyZXN1bHQ6dH19LGNsZWFyUmVzdWx0OmZ1bmN0aW9uIGMoKXtvPXZvaWQgMH19fWZ1bmN0aW9uIGJTKC4uLnQpe3JldHVybihmdW5jdGlvbiBlKHQsbj17c3RhdGVGbjp5U30pe3JldHVybiBmdW5jdGlvbiguLi5lKXtsZXQgbz1lO2lmKEFycmF5LmlzQXJyYXkob1swXSkpe2NvbnN0W3QsLi4uZV09bztvPVsuLi50LC4uLmVdfWNvbnN0IGk9by5zbGljZSgwLG8ubGVuZ3RoLTEpLGE9b1tvLmxlbmd0aC0xXSxyPWkuZmlsdGVyKCh0PT50LnJlbGVhc2UmJiJmdW5jdGlvbiI9PXR5cGVvZiB0LnJlbGVhc2UpKSxzPXQoKGZ1bmN0aW9uKC4uLnQpe3JldHVybiBhLmFwcGx5KG51bGwsdCl9KSksbD1oUygoZnVuY3Rpb24odCxlKXtyZXR1cm4gbi5zdGF0ZUZuLmFwcGx5KG51bGwsW3QsaSxlLHNdKX0pKTtmdW5jdGlvbiBjKCl7bC5yZXNldCgpLHMucmVzZXQoKSxyLmZvckVhY2goKHQ9PnQucmVsZWFzZSgpKSl9cmV0dXJuIE9iamVjdC5hc3NpZ24obC5tZW1vaXplZCx7cmVsZWFzZTpjLHByb2plY3RvcjpzLm1lbW9pemVkLHNldFJlc3VsdDpsLnNldFJlc3VsdCxjbGVhclJlc3VsdDpsLmNsZWFyUmVzdWx0fSl9fSkoaFMpKC4uLnQpfWZ1bmN0aW9uIHlTKHQsZSxuLG8pe2lmKHZvaWQgMD09PW4pe2NvbnN0IG49ZS5tYXAoKGU9PmUodCkpKTtyZXR1cm4gby5tZW1vaXplZC5hcHBseShudWxsLG4pfWNvbnN0IGk9ZS5tYXAoKGU9PmUodCxuKSkpO3JldHVybiBvLm1lbW9pemVkLmFwcGx5KG51bGwsWy4uLmksbl0pfWZ1bmN0aW9uIF9TKHQpe3JldHVybiBiUygoZT0+e2NvbnN0IG49ZVt0XTtyZXR1cm4gUEMoKSYmISh0IGluIGUpJiZjb25zb2xlLndhcm4oYEBuZ3J4L3N0b3JlOiBUaGUgZmVhdHVyZSBuYW1lICIke3R9IiBkb2VzIG5vdCBleGlzdCBpbiB0aGUgc3RhdGUsIHRoZXJlZm9yZSBjcmVhdGVGZWF0dXJlU2VsZWN0b3IgY2Fubm90IGFjY2VzcyBpdC4gIEJlIHN1cmUgaXQgaXMgaW1wb3J0ZWQgaW4gYSBsb2FkZWQgbW9kdWxlIHVzaW5nIFN0b3JlTW9kdWxlLmZvclJvb3QoJyR7dH0nLCAuLi4pIG9yIFN0b3JlTW9kdWxlLmZvckZlYXR1cmUoJyR7dH0nLCAuLi4pLiAgSWYgdGhlIGRlZmF1bHQgc3RhdGUgaXMgaW50ZW5kZWQgdG8gYmUgdW5kZWZpbmVkLCBhcyBpcyB0aGUgY2FzZSB3aXRoIHJvdXRlciBzdGF0ZSwgdGhpcyBkZXZlbG9wbWVudC1vbmx5IHdhcm5pbmcgbWVzc2FnZSBjYW4gYmUgaWdub3JlZC5gKSxufSksKHQ9PnQpKX1mdW5jdGlvbiBDUyh0KXtPYmplY3QuZnJlZXplKHQpO2NvbnN0IGU9ZlModCk7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHQpLmZvckVhY2goKG49PntpZighbi5zdGFydHNXaXRoKCLJtSIpJiYoZnVuY3Rpb24gbyh0LGUpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxlKX0pKHQsbikmJighZXx8ImNhbGxlciIhPT1uJiYiY2FsbGVlIiE9PW4mJiJhcmd1bWVudHMiIT09bikpe2NvbnN0IGU9dFtuXTshcFMoZSkmJiFmUyhlKXx8T2JqZWN0LmlzRnJvemVuKGUpfHxDUyhlKX19KSksdH1mdW5jdGlvbiBNUyh0LGU9W10pe2lmKChsUyh0KXx8Y1ModCkpJiYwPT09ZS5sZW5ndGgpcmV0dXJue3BhdGg6WyJyb290Il0sdmFsdWU6dH07cmV0dXJuIE9iamVjdC5rZXlzKHQpLnJlZHVjZSgoKG4sbyk9PntpZihuKXJldHVybiBuO2NvbnN0IGk9dFtvXTtyZXR1cm4oZnVuY3Rpb24gYSh0KXtyZXR1cm4gZlModCkmJnQuaGFzT3duUHJvcGVydHkoIsm1Y21wIil9KShpKT9uOiEobFMoaSl8fGNTKGkpfHwoZnVuY3Rpb24gcih0KXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIHR9KShpKXx8KGZ1bmN0aW9uIHModCl7cmV0dXJuImJvb2xlYW4iPT10eXBlb2YgdH0pKGkpfHwoZnVuY3Rpb24gbCh0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHR9KShpKXx8ZFMoaSkpJiYobVMoaSk/TVMoaSxbLi4uZSxvXSk6e3BhdGg6Wy4uLmUsb10sdmFsdWU6aX0pfSksITEpfWZ1bmN0aW9uIHZTKHQsZSl7aWYoITE9PT10KXJldHVybjtjb25zdCBuPXQucGF0aC5qb2luKCIuIiksbz1uZXcgRXJyb3IoYERldGVjdGVkIHVuc2VyaWFsaXphYmxlICR7ZX0gYXQgIiR7bn0iLiAke3NTfSNzdHJpY3Qke2V9c2VyaWFsaXphYmlsaXR5YCk7dGhyb3cgby52YWx1ZT10LnZhbHVlLG8udW5zZXJpYWxpemFibGVQYXRoPW4sb31mdW5jdGlvbiB4Uyh0KXtyZXR1cm4gUEMoKT9PYmplY3QuYXNzaWduKHtzdHJpY3RTdGF0ZVNlcmlhbGl6YWJpbGl0eTohMSxzdHJpY3RBY3Rpb25TZXJpYWxpemFiaWxpdHk6ITEsc3RyaWN0U3RhdGVJbW11dGFiaWxpdHk6ITAsc3RyaWN0QWN0aW9uSW1tdXRhYmlsaXR5OiEwLHN0cmljdEFjdGlvbldpdGhpbk5nWm9uZTohMSxzdHJpY3RBY3Rpb25UeXBlVW5pcXVlbmVzczohMX0sdCk6e3N0cmljdFN0YXRlU2VyaWFsaXphYmlsaXR5OiExLHN0cmljdEFjdGlvblNlcmlhbGl6YWJpbGl0eTohMSxzdHJpY3RTdGF0ZUltbXV0YWJpbGl0eTohMSxzdHJpY3RBY3Rpb25JbW11dGFiaWxpdHk6ITEsc3RyaWN0QWN0aW9uV2l0aGluTmdab25lOiExLHN0cmljdEFjdGlvblR5cGVVbmlxdWVuZXNzOiExfX1mdW5jdGlvbiBPUyh7c3RyaWN0QWN0aW9uU2VyaWFsaXphYmlsaXR5OnQsc3RyaWN0U3RhdGVTZXJpYWxpemFiaWxpdHk6ZX0pe3JldHVybiBuPT50fHxlPyhmdW5jdGlvbiBvKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4sbyl7ZS5hY3Rpb24obykmJnZTKE1TKG8pLCJhY3Rpb24iKTtjb25zdCBpPXQobixvKTtyZXR1cm4gZS5zdGF0ZSgpJiZ2UyhNUyhpKSwic3RhdGUiKSxpfX0pKG4se2FjdGlvbjplPT50JiYhd1MoZSksc3RhdGU6KCk9PmV9KTpufWZ1bmN0aW9uIFBTKHtzdHJpY3RBY3Rpb25JbW11dGFiaWxpdHk6dCxzdHJpY3RTdGF0ZUltbXV0YWJpbGl0eTplfSl7cmV0dXJuIG49PnR8fGU/KGZ1bmN0aW9uIG8odCxlKXtyZXR1cm4gZnVuY3Rpb24obixvKXtjb25zdCBpPWUuYWN0aW9uKG8pP0NTKG8pOm8sYT10KG4saSk7cmV0dXJuIGUuc3RhdGUoKT9DUyhhKTphfX0pKG4se2FjdGlvbjplPT50JiYhd1MoZSksc3RhdGU6KCk9PmV9KTpufWZ1bmN0aW9uIHdTKHQpe3JldHVybiB0LnR5cGUuc3RhcnRzV2l0aCgiQG5ncngiKX1mdW5jdGlvbiBrUyh7c3RyaWN0QWN0aW9uV2l0aGluTmdab25lOnR9KXtyZXR1cm4gZT0+dD8oZnVuY3Rpb24gbih0LGUpe3JldHVybiBmdW5jdGlvbihuLG8pe2lmKGUuYWN0aW9uKG8pJiYhbUMuaXNJbkFuZ3VsYXJab25lKCkpdGhyb3cgbmV3IEVycm9yKGBBY3Rpb24gJyR7by50eXBlfScgcnVubmluZyBvdXRzaWRlIE5nWm9uZS4gJHtzU30jc3RyaWN0YWN0aW9ud2l0aGlubmd6b25lYCk7cmV0dXJuIHQobixvKX19KShlLHthY3Rpb246ZT0+dCYmIXdTKGUpfSk6ZX1mdW5jdGlvbiBTUygpe3JldHVyblt7cHJvdmlkZTpXayxtdWx0aTohMCxkZXBzOltVa10sdXNlRmFjdG9yeTpSU31dfWZ1bmN0aW9uIERTKHQpe3JldHVybiB0fWZ1bmN0aW9uIFJTKHQpe2lmKCF0LnN0cmljdEFjdGlvblR5cGVVbmlxdWVuZXNzKXJldHVybjtjb25zdCBlPU9iamVjdC5lbnRyaWVzKHlrKS5maWx0ZXIoKChbLHRdKT0+dD4xKSkubWFwKCgoW3RdKT0+dCkpO2lmKGUubGVuZ3RoKXRocm93IG5ldyBFcnJvcihgQWN0aW9uIHR5cGVzIGFyZSByZWdpc3RlcmVkIG1vcmUgdGhhbiBvbmNlLCAke2UubWFwKCh0PT5gIiR7dH0iYCkpLmpvaW4oIiwgIil9LiAke3NTfSNzdHJpY3RhY3Rpb250eXBldW5pcXVlbmVzc2ApfWNsYXNzIEVTe2NvbnN0cnVjdG9yKHQsZSxuLG8saSxhKXt9fUVTLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxFUykoVHIodmspLFRyKFprKSxUcihRayksVHIoaVMpLFRyKE9rLDgpLFRyKFdrLDgpKX0sRVMuybVtb2Q9Zm8oe3R5cGU6RVN9KSxFUy7JtWluaj1Ebih7fSksRVMuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp2a30se3R5cGU6Wmt9LHt0eXBlOlFrfSx7dHlwZTppU30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltPa119XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltXa119XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoRVMsW3t0eXBlOkxfLGFyZ3M6W3t9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTp2a30se3R5cGU6Wmt9LHt0eXBlOlFrfSx7dHlwZTppU30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltPa119XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltXa119XX1dfSksbnVsbCk7Y2xhc3MgQVN7Y29uc3RydWN0b3IodCxlLG4sbyxpKXt0aGlzLmZlYXR1cmVzPXQsdGhpcy5mZWF0dXJlUmVkdWNlcnM9ZSx0aGlzLnJlZHVjZXJNYW5hZ2VyPW47Y29uc3QgYT10Lm1hcCgoKHQsbik9Pntjb25zdCBvPWUuc2hpZnQoKVtuXTtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtyZWR1Y2VyczpvLGluaXRpYWxTdGF0ZTpIUyh0LmluaXRpYWxTdGF0ZSl9KX0pKTtuLmFkZEZlYXR1cmVzKGEpfW5nT25EZXN0cm95KCl7dGhpcy5yZWR1Y2VyTWFuYWdlci5yZW1vdmVGZWF0dXJlcyh0aGlzLmZlYXR1cmVzKX19QVMuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEFTKShUcih6ayksVHIoSGspLFRyKEtrKSxUcihFUyksVHIoV2ssOCkpfSxBUy7JtW1vZD1mbyh7dHlwZTpBU30pLEFTLsm1aW5qPURuKHt9KSxBUy5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3prXX1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltIa119XX0se3R5cGU6S2t9LHt0eXBlOkVTfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W1drXX1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihBUyxbe3R5cGU6TF8sYXJnczpbe31dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3prXX1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltIa119XX0se3R5cGU6S2t9LHt0eXBlOkVTfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W1drXX1dfV19KSxudWxsKTtjbGFzcyBUU3tzdGF0aWMgZm9yUm9vdCh0LGU9e30pe3JldHVybntuZ01vZHVsZTpFUyxwcm92aWRlcnM6W3twcm92aWRlOk9rLHVzZUZhY3Rvcnk6TFMsZGVwczpbW2lTLG5ldyBCcixuZXcganJdXX0se3Byb3ZpZGU6UGssdXNlVmFsdWU6ZS5pbml0aWFsU3RhdGV9LHtwcm92aWRlOndrLHVzZUZhY3Rvcnk6SFMsZGVwczpbUGtdfSx7cHJvdmlkZTpSayx1c2VWYWx1ZTp0fSx7cHJvdmlkZTpBayx1c2VFeGlzdGluZzp0IGluc3RhbmNlb2YgZXI/dDpSa30se3Byb3ZpZGU6RGssZGVwczpbTnAsUmssW25ldyBMcihBayldXSx1c2VGYWN0b3J5Ok5TfSx7cHJvdmlkZTpGayx1c2VWYWx1ZTplLm1ldGFSZWR1Y2Vycz9lLm1ldGFSZWR1Y2VyczpbXX0se3Byb3ZpZGU6QmssZGVwczpbTGssRmtdLHVzZUZhY3Rvcnk6RlN9LHtwcm92aWRlOlNrLHVzZVZhbHVlOmUucmVkdWNlckZhY3Rvcnk/ZS5yZWR1Y2VyRmFjdG9yeTpHa30se3Byb3ZpZGU6a2ssZGVwczpbU2ssQmtdLHVzZUZhY3Rvcnk6cWt9LHhrLEprLCRrLG9TLGFTLChuPWUucnVudGltZUNoZWNrcyxbe3Byb3ZpZGU6amssdXNlVmFsdWU6bn0se3Byb3ZpZGU6VmssdXNlRmFjdG9yeTpEUyxkZXBzOltqa119LHtwcm92aWRlOlVrLGRlcHM6W1ZrXSx1c2VGYWN0b3J5OnhTfSx7cHJvdmlkZTpMayxtdWx0aTohMCxkZXBzOltVa10sdXNlRmFjdG9yeTpQU30se3Byb3ZpZGU6TGssbXVsdGk6ITAsZGVwczpbVWtdLHVzZUZhY3Rvcnk6T1N9LHtwcm92aWRlOkxrLG11bHRpOiEwLGRlcHM6W1VrXSx1c2VGYWN0b3J5OmtTfV0pLFNTKCldfTt2YXIgbn1zdGF0aWMgZm9yRmVhdHVyZSh0LGUsbj17fSl7cmV0dXJue25nTW9kdWxlOkFTLHByb3ZpZGVyczpbe3Byb3ZpZGU6TmssbXVsdGk6ITAsdXNlVmFsdWU6dCBpbnN0YW5jZW9mIE9iamVjdD97fTpufSx7cHJvdmlkZTpFayxtdWx0aTohMCx1c2VWYWx1ZTp7a2V5OnQgaW5zdGFuY2VvZiBPYmplY3Q/dC5uYW1lOnQscmVkdWNlckZhY3Rvcnk6biBpbnN0YW5jZW9mIGVyfHwhbi5yZWR1Y2VyRmFjdG9yeT9HazpuLnJlZHVjZXJGYWN0b3J5LG1ldGFSZWR1Y2VyczpuIGluc3RhbmNlb2YgZXJ8fCFuLm1ldGFSZWR1Y2Vycz9bXTpuLm1ldGFSZWR1Y2Vycyxpbml0aWFsU3RhdGU6biBpbnN0YW5jZW9mIGVyfHwhbi5pbml0aWFsU3RhdGU/dm9pZCAwOm4uaW5pdGlhbFN0YXRlfX0se3Byb3ZpZGU6emssZGVwczpbTnAsTmssRWtdLHVzZUZhY3Rvcnk6elN9LHtwcm92aWRlOlRrLG11bHRpOiEwLHVzZVZhbHVlOnQgaW5zdGFuY2VvZiBPYmplY3Q/dC5yZWR1Y2VyOmV9LHtwcm92aWRlOklrLG11bHRpOiEwLHVzZUV4aXN0aW5nOmUgaW5zdGFuY2VvZiBlcj9lOlRrfSx7cHJvdmlkZTpIayxtdWx0aTohMCxkZXBzOltOcCxUayxbbmV3IExyKElrKV1dLHVzZUZhY3Rvcnk6SVN9LFNTKCldfX19ZnVuY3Rpb24gTlModCxlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIGVyP3QuZ2V0KGUpOmV9ZnVuY3Rpb24gelModCxlLG4pe3JldHVybiBuLm1hcCgoKG4sbyk9PntpZihlW29daW5zdGFuY2VvZiBlcil7Y29uc3QgaT10LmdldChlW29dKTtyZXR1cm57a2V5Om4ua2V5LHJlZHVjZXJGYWN0b3J5OmkucmVkdWNlckZhY3Rvcnk/aS5yZWR1Y2VyRmFjdG9yeTpHayxtZXRhUmVkdWNlcnM6aS5tZXRhUmVkdWNlcnM/aS5tZXRhUmVkdWNlcnM6W10saW5pdGlhbFN0YXRlOmkuaW5pdGlhbFN0YXRlfX1yZXR1cm4gbn0pKX1mdW5jdGlvbiBJUyh0LGUpe3JldHVybiBlLm1hcCgoZT0+ZSBpbnN0YW5jZW9mIGVyP3QuZ2V0KGUpOmUpKX1mdW5jdGlvbiBIUyh0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdD90KCk6dH1mdW5jdGlvbiBGUyh0LGUpe3JldHVybiB0LmNvbmNhdChlKX1mdW5jdGlvbiBMUyh0KXtpZih0KXRocm93IG5ldyBUeXBlRXJyb3IoIlN0b3JlTW9kdWxlLmZvclJvb3QoKSBjYWxsZWQgdHdpY2UuIEZlYXR1cmUgbW9kdWxlcyBzaG91bGQgdXNlIFN0b3JlTW9kdWxlLmZvckZlYXR1cmUoKSBpbnN0ZWFkLiIpO3JldHVybiJndWFyZGVkIn1mdW5jdGlvbiBCUyguLi50KXtyZXR1cm57cmVkdWNlcjp0LnBvcCgpLHR5cGVzOnQubWFwKCh0PT50LnR5cGUpKX19ZnVuY3Rpb24gVlModCwuLi5lKXtjb25zdCBuPW5ldyBNYXA7Zm9yKGNvbnN0IHQgb2YgZSlmb3IoY29uc3QgZSBvZiB0LnR5cGVzKXtjb25zdCBvPW4uZ2V0KGUpO2lmKG8pe24uc2V0KGUsKChlLG4pPT50LnJlZHVjZXIobyhlLG4pLG4pKSl9ZWxzZSBuLnNldChlLHQucmVkdWNlcil9cmV0dXJuIGZ1bmN0aW9uKGU9dCxvKXtjb25zdCBpPW4uZ2V0KG8udHlwZSk7cmV0dXJuIGk/aShlLG8pOmV9fVRTLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxUUyl9LFRTLsm1bW9kPWZvKHt0eXBlOlRTfSksVFMuybVpbmo9RG4oe30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoVFMsW3t0eXBlOkxfLGFyZ3M6W3t9XX1dLG51bGwsbnVsbCk7Y29uc3QgalM9e2Rpc3BhdGNoOiEwLHVzZUVmZmVjdHNFcnJvckhhbmRsZXI6ITB9LFVTPSJfX0BuZ3J4L2VmZmVjdHNfY3JlYXRlX18iO2Z1bmN0aW9uIFdTKHQsZSl7Y29uc3Qgbj10KCksbz1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30salMpLGUpO3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkobixVUyx7dmFsdWU6b30pLG59ZnVuY3Rpb24gR1ModCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHQpLmZpbHRlcigoZT0+e2lmKHRbZV0mJnRbZV0uaGFzT3duUHJvcGVydHkoVVMpKXtyZXR1cm4gdFtlXVtVU10uaGFzT3duUHJvcGVydHkoImRpc3BhdGNoIil9cmV0dXJuITF9KSkubWFwKChlPT5PYmplY3QuYXNzaWduKHtwcm9wZXJ0eU5hbWU6ZX0sdFtlXVtVU10pKSl9ZnVuY3Rpb24gWVModCl7cmV0dXJuIE9iamVjdC5nZXRQcm90b3R5cGVPZih0KX1jb25zdCBxUz0iX19AbmdyeC9lZmZlY3RzX18iO2Z1bmN0aW9uIFpTKHQpe3JldHVybiBZayhYUyxZUykodCl9ZnVuY3Rpb24gWFModCl7cmV0dXJuKGZ1bmN0aW9uIGUodCl7cmV0dXJuIHQuY29uc3RydWN0b3IuaGFzT3duUHJvcGVydHkocVMpfSkodCk/dC5jb25zdHJ1Y3RvcltxU106W119ZnVuY3Rpb24gS1ModCxlLG4pe2NvbnN0IG89WVModCkuY29uc3RydWN0b3IubmFtZTtyZXR1cm4gcGUoLi4uKGZ1bmN0aW9uIGkodCl7cmV0dXJuW1pTLEdTXS5yZWR1Y2UoKChlLG4pPT5lLmNvbmNhdChuKHQpKSksW10pfSkodCkubWFwKCgoe3Byb3BlcnR5TmFtZTppLGRpc3BhdGNoOmEsdXNlRWZmZWN0c0Vycm9ySGFuZGxlcjpyfSk9Pntjb25zdCBzPSJmdW5jdGlvbiI9PXR5cGVvZiB0W2ldP3RbaV0oKTp0W2ldLGw9cj9uKHMsZSk6cztpZighMT09PWEpcmV0dXJuIGwucGlwZSh4ZSgpKTtyZXR1cm4gbC5waXBlKChmdW5jdGlvbiBjKCl7cmV0dXJuIHooKGZ1bmN0aW9uKHQsZSl7dC5zdWJzY3JpYmUobmV3IEgoZSwoZnVuY3Rpb24odCl7ZS5uZXh0KEh0LmNyZWF0ZU5leHQodCkpfSksKGZ1bmN0aW9uKCl7ZS5uZXh0KEh0LmNyZWF0ZUNvbXBsZXRlKCkpLGUuY29tcGxldGUoKX0pLChmdW5jdGlvbih0KXtlLm5leHQoSHQuY3JlYXRlRXJyb3IodCkpLGUuY29tcGxldGUoKX0pKSl9KSl9KSgpKS5waXBlKFZ0KChlPT4oe2VmZmVjdDp0W2ldLG5vdGlmaWNhdGlvbjplLHByb3BlcnR5TmFtZTppLHNvdXJjZU5hbWU6byxzb3VyY2VJbnN0YW5jZTp0fSkpKSl9KSkpfWZ1bmN0aW9uIEpTKHQsZSxuPTEwKXtyZXR1cm4gdC5waXBlKGhlKChvPT4oZSYmZS5oYW5kbGVFcnJvcihvKSxuPD0xP3Q6SlModCxlLG4tMSkpKSkpfWNsYXNzIFFTIGV4dGVuZHMgVHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHQmJih0aGlzLnNvdXJjZT10KX1saWZ0KHQpe2NvbnN0IGU9bmV3IFFTO3JldHVybiBlLnNvdXJjZT10aGlzLGUub3BlcmF0b3I9dCxlfX1mdW5jdGlvbiAkUyguLi50KXtyZXR1cm4gdWUoKGU9PnQuc29tZSgodD0+InN0cmluZyI9PXR5cGVvZiB0P3Q9PT1lLnR5cGU6dC50eXBlPT09ZS50eXBlKSkpKX1mdW5jdGlvbiB0RCh0LGUpe2lmKCJOIj09PXQubm90aWZpY2F0aW9uLmtpbmQpe2NvbnN0IG49dC5ub3RpZmljYXRpb24udmFsdWU7IShmdW5jdGlvbiBuKHQpe3JldHVybiJmdW5jdGlvbiIhPXR5cGVvZiB0JiZ0JiZ0LnR5cGUmJiJzdHJpbmciPT10eXBlb2YgdC50eXBlfSkobikmJmUuaGFuZGxlRXJyb3IobmV3IEVycm9yKGBFZmZlY3QgJHsoZnVuY3Rpb24gbyh7cHJvcGVydHlOYW1lOnQsc291cmNlSW5zdGFuY2U6ZSxzb3VyY2VOYW1lOm59KXtjb25zdCBvPSJmdW5jdGlvbiI9PXR5cGVvZiBlW3RdO3JldHVybmAiJHtufS4ke1N0cmluZyh0KX0ke28/IigpIjoiIn0iYH0pKHQpfSBkaXNwYXRjaGVkIGFuIGludmFsaWQgYWN0aW9uOiAkeyhmdW5jdGlvbiBpKHQpe3RyeXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkodCl9Y2F0Y2goZSl7cmV0dXJuIHR9fSkobil9YCkpfX1RUy7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8UVMpKFRyKFFrKSl9LFFTLsm1cHJvdj1Tbih7dG9rZW46UVMsZmFjdG9yeTpRUy7JtWZhY30pLFFTLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6VCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltRa119XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoUVMsW3t0eXBlOlVtfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOlQsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbUWtdfV19XX0pLG51bGwpO2Z1bmN0aW9uIGVEKHQpe3JldHVybiBuRCh0LCJuZ3J4T25Jbml0RWZmZWN0cyIpfWZ1bmN0aW9uIG5EKHQsZSl7cmV0dXJuIHQmJmUgaW4gdCYmImZ1bmN0aW9uIj09dHlwZW9mIHRbZV19Y29uc3Qgb0Q9bmV3IGVyKCJAbmdyeC9lZmZlY3RzIEludGVybmFsIFJvb3QgR3VhcmQiKSxpRD1uZXcgZXIoIkBuZ3J4L2VmZmVjdHMgVXNlciBQcm92aWRlZCBFZmZlY3RzIiksYUQ9bmV3IGVyKCJAbmdyeC9lZmZlY3RzIEludGVybmFsIFJvb3QgRWZmZWN0cyIpLHJEPW5ldyBlcigiQG5ncngvZWZmZWN0cyBSb290IEVmZmVjdHMiKSxzRD1uZXcgZXIoIkBuZ3J4L2VmZmVjdHMgSW50ZXJuYWwgRmVhdHVyZSBFZmZlY3RzIiksbEQ9bmV3IGVyKCJAbmdyeC9lZmZlY3RzIEZlYXR1cmUgRWZmZWN0cyIpLGNEPW5ldyBlcigiQG5ncngvZWZmZWN0cyBFZmZlY3RzIEVycm9yIEhhbmRsZXIiKTtjbGFzcyBkRCBleHRlbmRzIEJ7Y29uc3RydWN0b3IodCxlKXtzdXBlcigpLHRoaXMuZXJyb3JIYW5kbGVyPXQsdGhpcy5lZmZlY3RzRXJyb3JIYW5kbGVyPWV9YWRkRWZmZWN0cyh0KXt0aGlzLm5leHQodCl9dG9BY3Rpb25zKCl7cmV0dXJuIHRoaXMucGlwZShFZShZUyksJHQoKHQ9PnQucGlwZShFZShwRCkpKSksJHQoKHQ9PnBlKHQucGlwZShSZSgodD0+KGZ1bmN0aW9uIGUodCxuKXtyZXR1cm4gZT0+e2NvbnN0IG89S1MoZSx0LG4pO3JldHVybihmdW5jdGlvbiBpKHQpe3JldHVybiBuRCh0LCJuZ3J4T25SdW5FZmZlY3RzIil9KShlKT9lLm5ncnhPblJ1bkVmZmVjdHMobyk6b319KSh0aGlzLmVycm9ySGFuZGxlcix0aGlzLmVmZmVjdHNFcnJvckhhbmRsZXIpKHQpKSksVnQoKHQ9Pih0RCh0LHRoaXMuZXJyb3JIYW5kbGVyKSx0Lm5vdGlmaWNhdGlvbikpKSx1ZSgodD0+Ik4iPT09dC5raW5kJiZudWxsIT10LnZhbHVlKSksKGZ1bmN0aW9uIGUoKXtyZXR1cm4geigoZnVuY3Rpb24odCxlKXt0LnN1YnNjcmliZShuZXcgSChlLChmdW5jdGlvbih0KXtyZXR1cm4gRnQodCxlKX0pKSl9KSl9KSgpKSx0LnBpcGUodmUoMSksdWUoZUQpLFZ0KCh0PT50Lm5ncnhPbkluaXRFZmZlY3RzKCkpKSkpKSkpfX1mdW5jdGlvbiBwRCh0KXtyZXR1cm4oZnVuY3Rpb24gZSh0KXtyZXR1cm4gbkQodCwibmdyeE9uSWRlbnRpZnlFZmZlY3RzIil9KSh0KT90Lm5ncnhPbklkZW50aWZ5RWZmZWN0cygpOiIifWRELsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxkRCkoVHIodWwpLFRyKGNEKSl9LGRELsm1cHJvdj1Tbih7dG9rZW46ZEQsZmFjdG9yeTpkRC7JtWZhY30pLGRELmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6dWx9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltjRF19XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoZEQsW3t0eXBlOlVtfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnVsfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbY0RdfV19XX0pLG51bGwpO2NsYXNzIG1Ee2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5lZmZlY3RTb3VyY2VzPXQsdGhpcy5zdG9yZT1lLHRoaXMuZWZmZWN0c1N1YnNjcmlwdGlvbj1udWxsfXN0YXJ0KCl7dGhpcy5lZmZlY3RzU3Vic2NyaXB0aW9ufHwodGhpcy5lZmZlY3RzU3Vic2NyaXB0aW9uPXRoaXMuZWZmZWN0U291cmNlcy50b0FjdGlvbnMoKS5zdWJzY3JpYmUodGhpcy5zdG9yZSkpfW5nT25EZXN0cm95KCl7dGhpcy5lZmZlY3RzU3Vic2NyaXB0aW9uJiYodGhpcy5lZmZlY3RzU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksdGhpcy5lZmZlY3RzU3Vic2NyaXB0aW9uPW51bGwpfX1tRC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8bUQpKFRyKGREKSxUcihpUykpfSxtRC7JtXByb3Y9U24oe3Rva2VuOm1ELGZhY3Rvcnk6bUQuybVmYWN9KSxtRC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOmREfSx7dHlwZTppU31dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIobUQsW3t0eXBlOlVtfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmREfSx7dHlwZTppU31dfSksbnVsbCk7Y29uc3QgZkQ9IkBuZ3J4L2VmZmVjdHMvaW5pdCI7X2soZkQpO2NsYXNzIHVEe2NvbnN0cnVjdG9yKHQsZSxuLG8saSxhLHIpe3RoaXMuc291cmNlcz10LGUuc3RhcnQoKSxvLmZvckVhY2goKGU9PnQuYWRkRWZmZWN0cyhlKSkpLG4uZGlzcGF0Y2goe3R5cGU6ZkR9KX1hZGRFZmZlY3RzKHQpe3RoaXMuc291cmNlcy5hZGRFZmZlY3RzKHQpfX11RC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8dUQpKFRyKGREKSxUcihtRCksVHIoaVMpLFRyKHJEKSxUcihFUyw4KSxUcihBUyw4KSxUcihvRCw4KSl9LHVELsm1bW9kPWZvKHt0eXBlOnVEfSksdUQuybVpbmo9RG4oe30pLHVELmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6ZER9LHt0eXBlOm1EfSx7dHlwZTppU30se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbckRdfV19LHt0eXBlOkVTLGRlY29yYXRvcnM6W3t0eXBlOkJyfV19LHt0eXBlOkFTLGRlY29yYXRvcnM6W3t0eXBlOkJyfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbb0RdfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHVELFt7dHlwZTpMXyxhcmdzOlt7fV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6ZER9LHt0eXBlOm1EfSx7dHlwZTppU30se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbckRdfV19LHt0eXBlOkVTLGRlY29yYXRvcnM6W3t0eXBlOkJyfV19LHt0eXBlOkFTLGRlY29yYXRvcnM6W3t0eXBlOkJyfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbb0RdfV19XX0pLG51bGwpO2NsYXNzIGdEe2NvbnN0cnVjdG9yKHQsZSxuLG8pe2UuZm9yRWFjaCgoZT0+ZS5mb3JFYWNoKChlPT50LmFkZEVmZmVjdHMoZSkpKSkpfX1nRC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8Z0QpKFRyKHVEKSxUcihsRCksVHIoRVMsOCksVHIoQVMsOCkpfSxnRC7JtW1vZD1mbyh7dHlwZTpnRH0pLGdELsm1aW5qPURuKHt9KSxnRC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnVEfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltsRF19XX0se3R5cGU6RVMsZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX0se3R5cGU6QVMsZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoZ0QsW3t0eXBlOkxfLGFyZ3M6W3t9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTp1RH0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbbERdfV19LHt0eXBlOkVTLGRlY29yYXRvcnM6W3t0eXBlOkJyfV19LHt0eXBlOkFTLGRlY29yYXRvcnM6W3t0eXBlOkJyfV19XX0pLG51bGwpO2NsYXNzIGhEe3N0YXRpYyBmb3JGZWF0dXJlKHQ9W10pe3JldHVybntuZ01vZHVsZTpnRCxwcm92aWRlcnM6W3Qse3Byb3ZpZGU6c0QsbXVsdGk6ITAsdXNlVmFsdWU6dH0se3Byb3ZpZGU6aUQsbXVsdGk6ITAsdXNlVmFsdWU6W119LHtwcm92aWRlOmxELG11bHRpOiEwLHVzZUZhY3Rvcnk6YkQsZGVwczpbTnAsc0QsaURdfV19fXN0YXRpYyBmb3JSb290KHQ9W10pe3JldHVybntuZ01vZHVsZTp1RCxwcm92aWRlcnM6W3twcm92aWRlOmNELHVzZVZhbHVlOkpTfSxtRCxkRCxRUyx0LHtwcm92aWRlOmFELHVzZVZhbHVlOlt0XX0se3Byb3ZpZGU6b0QsdXNlRmFjdG9yeTp5RCxkZXBzOltbbUQsbmV3IEJyLG5ldyBqcl0sW2FELG5ldyBWcl1dfSx7cHJvdmlkZTppRCxtdWx0aTohMCx1c2VWYWx1ZTpbXX0se3Byb3ZpZGU6ckQsdXNlRmFjdG9yeTpiRCxkZXBzOltOcCxhRCxpRF19XX19fWZ1bmN0aW9uIGJEKHQsZSxuKXtjb25zdCBvPVtdO2Zvcihjb25zdCB0IG9mIGUpby5wdXNoKC4uLnQpO2Zvcihjb25zdCB0IG9mIG4pby5wdXNoKC4uLnQpO3JldHVybihmdW5jdGlvbiBpKHQsZSl7cmV0dXJuIGUubWFwKChlPT50LmdldChlKSkpfSkodCxvKX1mdW5jdGlvbiB5RCh0LGUpe2lmKCEoMT09PWUubGVuZ3RoJiYwPT09ZVswXS5sZW5ndGgpJiZ0KXRocm93IG5ldyBUeXBlRXJyb3IoIkVmZmVjdHNNb2R1bGUuZm9yUm9vdCgpIGNhbGxlZCB0d2ljZS4gRmVhdHVyZSBtb2R1bGVzIHNob3VsZCB1c2UgRWZmZWN0c01vZHVsZS5mb3JGZWF0dXJlKCkgaW5zdGVhZC4iKTtyZXR1cm4iZ3VhcmRlZCJ9dmFyIF9EO2hELsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxoRCl9LGhELsm1bW9kPWZvKHt0eXBlOmhEfSksaEQuybVpbmo9RG4oe30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoaEQsW3t0eXBlOkxfLGFyZ3M6W3t9XX1dLG51bGwsbnVsbCksKGZ1bmN0aW9uKHQpe3RbdC5VTktOT1dOPTBdPSJVTktOT1dOIix0W3QuRVhQRVJJTUVOVFM9MV09IkVYUEVSSU1FTlRTIix0W3QuRVhQRVJJTUVOVD0yXT0iRVhQRVJJTUVOVCIsdFt0LkNPTVBBUkVfRVhQRVJJTUVOVD0zXT0iQ09NUEFSRV9FWFBFUklNRU5UIix0W3QuTk9UX1NFVD00XT0iTk9UX1NFVCJ9KShfRHx8KF9EPXt9KSk7Y29uc3QgQ0Q9ImRlZmF1bHRFeHBlcmltZW50SWQiO2Z1bmN0aW9uIE1EKHQpe3JldHVybiB0LnNwbGl0KCIsIikubWFwKCh0PT57Y29uc3QgZT10LmluZGV4T2YoIjoiKTtpZihlPDApdGhyb3cgbmV3IEVycm9yKGBFeHBlY3QgY29sb24gZGVsaW1pdGluZyBuYW1lIGFuZCBJRDogJHt0fWApO2NvbnN0IG49dC5zbGljZSgwLGUpLG89dC5zbGljZShlKzEpO2lmKCFvKXRocm93IG5ldyBFcnJvcihgRXhwZWN0IGlkIHRvIGJlIG5vbi1mYWxzeTogJHt0fWApO3JldHVybntuYW1lOm4saWQ6b319KSl9ZnVuY3Rpb24gdkQodCxlKXtzd2l0Y2godCl7Y2FzZSBfRC5FWFBFUklNRU5UOnJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSwiZXhwZXJpbWVudElkIik/W2UuZXhwZXJpbWVudElkXTpbQ0RdO2Nhc2UgX0QuQ09NUEFSRV9FWFBFUklNRU5UOnJldHVybiBNRChlLmV4cGVyaW1lbnRJZHMpLm1hcCgoKHtpZDp0fSk9PnQpKTtjYXNlIF9ELkVYUEVSSU1FTlRTOmRlZmF1bHQ6cmV0dXJuIG51bGx9fWZ1bmN0aW9uIHhEKHQsZSl7aWYoIXR8fCFlKXJldHVybiB0PT09ZTtpZih0LnJvdXRlS2luZCE9PWUucm91dGVLaW5kKXJldHVybiExO2NvbnN0IG49dkQodC5yb3V0ZUtpbmQsdC5wYXJhbXMpLG89dkQoZS5yb3V0ZUtpbmQsZS5wYXJhbXMpO2lmKG51bGw9PT1ufHxudWxsPT09bylyZXR1cm4gbj09PW87aWYobi5sZW5ndGghPT1vLmxlbmd0aClyZXR1cm4hMTtjb25zdCBpPW8uc29ydCgpO3JldHVybiBuLnNvcnQoKS5ldmVyeSgoKHQsZSk9PmlbZV09PT10KSl9Y29uc3QgT0Q9e2dldEhyZWY6KCk9PndpbmRvdy5sb2NhdGlvbi5ocmVmfTtjbGFzcyBQRHtnZXRIcmVmKCl7cmV0dXJuIE9ELmdldEhyZWYoKX1nZXRTZWFyY2goKXtjb25zdCB0PW5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCksZT1bXTtyZXR1cm4gdC5mb3JFYWNoKCgodCxuKT0+e2UucHVzaCh7a2V5Om4sdmFsdWU6dH0pfSkpLGV9Z2V0SGFzaCgpe3JldHVybiB3aW5kb3cubG9jYXRpb24uaGFzaH1nZXRQYXRoKCl7cmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZX1nZXRIaXN0b3J5U3RhdGUoKXtyZXR1cm4gd2luZG93Lmhpc3Rvcnkuc3RhdGV9cmVwbGFjZVN0YXRlVXJsKHQpe3dpbmRvdy5oaXN0b3J5LnJlcGxhY2VTdGF0ZSh3aW5kb3cuaGlzdG9yeS5zdGF0ZSwiIix0KX1wdXNoU3RhdGVVcmwodCl7d2luZG93Lmhpc3RvcnkucHVzaFN0YXRlKG51bGwsIiIsdCl9cmVwbGFjZVN0YXRlRGF0YSh0KXt3aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUodCwiIil9b25Qb3BTdGF0ZSgpe3JldHVybiBsZSh3aW5kb3csInBvcHN0YXRlIikucGlwZShWdCgodD0+KHtwYXRobmFtZTp0aGlzLmdldFBhdGgoKSxzdGF0ZTp0LnN0YXRlfSkpKSl9Z2V0UmVzb2x2ZWRQYXRoKHQpe3JldHVybiBuZXcgVVJMKHQsT0QuZ2V0SHJlZigpKS5wYXRobmFtZX1nZXRGdWxsUGF0aEZyb21Sb3V0ZSh0LGUpe2NvbnN0IG49dGhpcy5nZXRSZXNvbHZlZFBhdGgodC5wYXRobmFtZSk7bGV0IG89IiI7dC5xdWVyeVBhcmFtcy5sZW5ndGgmJihvPSI/IisoZnVuY3Rpb24gaSh0KXtjb25zdCBlPW5ldyBVUkxTZWFyY2hQYXJhbXM7Zm9yKGNvbnN0e2tleTpuLHZhbHVlOm99b2YgdCllLmFwcGVuZChuLG8pO3JldHVybiBlfSkodC5xdWVyeVBhcmFtcykudG9TdHJpbmcoKSk7cmV0dXJuYCR7bn0ke299JHtlP3RoaXMuZ2V0SGFzaCgpOiIifWB9fVBELsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxQRCl9LFBELsm1cHJvdj1Tbih7dG9rZW46UEQsZmFjdG9yeTpQRC7JtWZhY30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoUEQsW3t0eXBlOlVtfV0sbnVsbCxudWxsKTtjbGFzcyB3RHtjb25zdHJ1Y3Rvcih0KXt0aGlzLmFwcFJvb3Q9dGhpcy5nZXRBcHBSb290RnJvbU1ldGFFbGVtZW50KHQpfWdldEFwcFJvb3RGcm9tTWV0YUVsZW1lbnQodCl7Y29uc3QgZT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdoZWFkIG1ldGFbbmFtZT0idGItcmVsYXRpdmUtcm9vdCJdJyk7aWYoIWUpcmV0dXJuIi8iO2NvbnN0e3BhdGhuYW1lOm59PW5ldyBVUkwoZS5jb250ZW50LHQuZ2V0SHJlZigpKTtyZXR1cm4gbi5yZXBsYWNlKC9cLyokLywiLyIpfWdldEFic1BhdGhuYW1lV2l0aEFwcFJvb3QodCl7cmV0dXJuIHRoaXMuYXBwUm9vdC5zbGljZSgwLC0xKSt0fWdldEFwcFJvb3RsZXNzUGF0aG5hbWUodCl7cmV0dXJuIHQuc3RhcnRzV2l0aCh0aGlzLmFwcFJvb3QpPyIvIit0LnNsaWNlKHRoaXMuYXBwUm9vdC5sZW5ndGgpOnR9fXdELsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx3RCkoVHIoUEQpKX0sd0QuybVwcm92PVNuKHt0b2tlbjp3RCxmYWN0b3J5OndELsm1ZmFjfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih3RCxbe3R5cGU6VW19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6UER9XX0pLG51bGwpO2NsYXNzIGtEIGV4dGVuZHMgd0R7Z2V0QXBwUm9vdCgpe3JldHVybiB0aGlzLmFwcFJvb3R9c2V0QXBwUm9vdCh0KXt0aGlzLmFwcFJvb3Q9dH19a0QuybVmYWM9KGZ1bmN0aW9uKCl7bGV0IHQ7cmV0dXJuIGZ1bmN0aW9uIGUobil7cmV0dXJuKHR8fCh0PVVhKGtEKSkpKG58fGtEKX19KSgpLGtELsm1cHJvdj1Tbih7dG9rZW46a0QsZmFjdG9yeTprRC7JtWZhY30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoa0QsW3t0eXBlOlVtfV0sbnVsbCxudWxsKTtjbGFzcyBTRHt9U0QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFNEKX0sU0QuybVtb2Q9Zm8oe3R5cGU6U0R9KSxTRC7JtWluaj1Ebih7cHJvdmlkZXJzOltQRF19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFNELFt7dHlwZTpMXyxhcmdzOlt7cHJvdmlkZXJzOltQRF19XX1dLG51bGwsbnVsbCk7Y2xhc3MgRER7fURELsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxERCl9LERELsm1bW9kPWZvKHt0eXBlOkREfSksREQuybVpbmo9RG4oe3Byb3ZpZGVyczpbd0RdLGltcG9ydHM6W1tTRF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihERCxbe3R5cGU6TF8sYXJnczpbe2ltcG9ydHM6W1NEXSxwcm92aWRlcnM6W3dEXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKERELHtpbXBvcnRzOltTRF19KTtjb25zdCBSRD1uZXcgZXIoIltBcHAgUm91dGluZ10gRGlydHkgVXBkYXRlcyIpO2NsYXNzIEVEe2NvbnN0cnVjdG9yKHQpe3RoaXMuZGlydHlVcGRhdGVzU2VsZWN0b3JGYWN0b3JpZXM9dH1nZXREaXJ0eVVwZGF0ZXNTZWxlY3RvcnMoKXt2YXIgdDtyZXR1cm4gbnVsbCE9PSh0PXRoaXMuZGlydHlVcGRhdGVzU2VsZWN0b3JGYWN0b3JpZXMpJiZ2b2lkIDAhPT10P3Q6W119c3RhdGljIHJlZ2lzdGVyRGlydHlVcGRhdGVzKHQpe3JldHVybntuZ01vZHVsZTpFRCxwcm92aWRlcnM6W3twcm92aWRlOlJELG11bHRpOiEwLHVzZUZhY3Rvcnk6dH1dfX19RUQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEVEKShUcihSRCw4KSl9LEVELsm1bW9kPWZvKHt0eXBlOkVEfSksRUQuybVpbmo9RG4oe30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoRUQsW3t0eXBlOkxffV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltSRF19XX1dfSksbnVsbCk7Y29uc3QgQUQ9ImZlYXR1cmUiLFREPV9TKEFEKSxORD1iUyhURCwodD0+dC5pc0ZlYXR1cmVGbGFnc0xvYWRlZCkpLHpEPWJTKFRELCh0PT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5kZWZhdWx0RmxhZ3MpLHQuZmxhZ092ZXJyaWRlcykpKSxJRD1iUyhURCwodD0+dC5mbGFnT3ZlcnJpZGVzfHx7fSkpLEhEPWJTKHpELCh0PT50LmlzQXV0b0RhcmtNb2RlQWxsb3dlZCkpLEZEPWJTKHpELCh0PT5udWxsIT09dC5lbmFibGVEYXJrTW9kZU92ZXJyaWRlP3QuZW5hYmxlRGFya01vZGVPdmVycmlkZTp0LmRlZmF1bHRFbmFibGVEYXJrTW9kZSkpLExEPWJTKHpELCh0PT50LmVuYWJsZURhcmtNb2RlT3ZlcnJpZGUpKSxCRD1iUyh6RCwodD0+dC5lbmFibGVkRXhwZXJpbWVudGFsUGx1Z2lucykpLFZEPWJTKHpELCh0PT50LmluQ29sYWIpKSxqRD1iUyh6RCwodD0+dC5lbmFibGVkQ29sb3JHcm91cCkpLFVEPWJTKHpELCh0PT50LmVuYWJsZWRDb2xvckdyb3VwQnlSZWdleCkpLFdEPWJTKHpELCh0PT50Lm1ldHJpY3NJbWFnZVN1cHBvcnRFbmFibGVkKSksR0Q9YlMoekQsKHQ9PnQuZW5hYmxlZExpbmtlZFRpbWUpKSxZRD1iUyh6RCwodD0+dC5lbmFibGVUaW1lU2VyaWVzUHJvbW90aW9uKSkscUQ9YlMoekQsKHQ9PnQuZW5hYmxlZENhcmRXaWR0aFNldHRpbmcpKSxaRD1iUyh6RCwodD0+dC5lbmFibGVkVGltZU5hbWVzcGFjZWRTdGF0ZSkpLFhEPV9rKCJbQXBwIFJvdXRpbmddIERpc2NhcmRpbmcgVW5zYXZlZCBVcGRhdGVzIiksS0Q9X2soIltBcHAgUm91dGluZ10gU3RhdGUgUmVoeWRyYXRlZCBGcm9tIFVybCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLEpEPV9rKCJbQXBwIFJvdXRpbmddIFJvdXRlIENvbmZpZyBMb2FkZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxRRD1faygiW0FwcCBSb3V0aW5nXSBJbiBBcHAgTmF2aWdhdGlvbiBSZXF1ZXN0ZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSwkRD1faygiW0FwcCBSb3V0aW5nXSBJbiBBcHAgTmF2aWdhdGluZyIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLHRSPV9rKCJbQXBwIFJvdXRpbmddIEluIEFwcCBOYXZpZ2F0ZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxlUj1uZXcgZXIoIltBcHAgUm91dGluZ10gUHJvZ3JhbW1hdGljYWwgTmF2aWdhdGlvbiBQcm92aWRlciIpO2NsYXNzIG5Se2NvbnN0cnVjdG9yKHQpe3RoaXMucHJvdmlkZXJzPW5ldyBNYXA7Zm9yKGNvbnN0IGUgb2YgdHx8W10pe2lmKHRoaXMucHJvdmlkZXJzLmhhcyhlLmFjdGlvbkNyZWF0b3IudHlwZSkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoYCIke2UuYWN0aW9uQ3JlYXRvci50eXBlfSIgaXMgYWxyZWFkeSByZWdpc3RlcmVkIGZvciBuYXYuIE11bHRpcGxlIG5hdmlnYXRpb25zIG9uIHNhbWUga2ljayBpcyBub3QgYWxsb3dlZC5gKTt0aGlzLnByb3ZpZGVycy5zZXQoZS5hY3Rpb25DcmVhdG9yLnR5cGUsZS5sYW1iZGEpfX1nZXROYXZpZ2F0aW9uKHQpe2NvbnN0IGU9dGhpcy5wcm92aWRlcnMuZ2V0KHQudHlwZSk7cmV0dXJuIGU/ZSh0KTpudWxsfXN0YXRpYyByZWdpc3RlclByb2dyYW1tYXRpY2FsTmF2aWdhdGlvbih0KXtyZXR1cm57bmdNb2R1bGU6blIscHJvdmlkZXJzOlt7cHJvdmlkZTplUixtdWx0aTohMCx1c2VGYWN0b3J5OnR9XX19fWZ1bmN0aW9uIG9SKHQpe3JldHVybiBudWxsIT10LnJvdXRlS2luZH1mdW5jdGlvbiBpUih0KXtyZXR1cm4gZFIodCkubWFwKCh0PT57Y29uc3QgZT10LnN0YXJ0c1dpdGgoIjoiKTtyZXR1cm4gZT97cGF0aFBhcnQ6dCxpc1BhcmFtOiEwLHBhcmFtTmFtZTp0LnNsaWNlKDEpfTp7cGF0aFBhcnQ6dCxpc1BhcmFtOmV9fSkpfW5SLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxuUikoVHIoZVIsOCkpfSxuUi7JtW1vZD1mbyh7dHlwZTpuUn0pLG5SLsm1aW5qPURuKHt9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKG5SLFt7dHlwZTpMXyxhcmdzOlt7fV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltlUl19XX1dfSksbnVsbCk7Y2xhc3MgYVJ7Y29uc3RydWN0b3IodCl7dGhpcy52YWxpZGF0ZUNvbmZpZyh0KSx0aGlzLnBhdGhGcmFnbWVudHM9aVIodC5wYXRoKSx0aGlzLnBhdGhNYXRjaGVycz10aGlzLmdldFBhdGhNYXRjaGVycyh0aGlzLnBhdGhGcmFnbWVudHMpfXN0YXRpYyBnZXRNYXRjaGVyKHQpe3JldHVybiBvUih0KT9uZXcgclIodCk6KGZ1bmN0aW9uIGUodCl7cmV0dXJuIHZvaWQgMCE9PXQucmVkaXJlY3Rpb25QYXRofSkodCk/bmV3IHNSKHQpOm5ldyBsUih0KX12YWxpZGF0ZUNvbmZpZyh7cGF0aDp0fSl7aWYoIXQuc3RhcnRzV2l0aCgiLyIpKXRocm93IG5ldyBSYW5nZUVycm9yKGBjb25maWcucGF0aCBzaG91bGQgc3RhcnQgd2l0aCAnLycuICR7dH1gKTtsZXQgZT0wO2Zvcig7KGU9dC5pbmRleE9mKCI6IixlKzEpKT49MDspe2lmKCIvIiE9PXRbZS0xXSl0aHJvdyBuZXcgUmFuZ2VFcnJvcihgY29uZmlnLnBhdGggcGFyYW1ldGVyIHNob3VsZCBjb21lIGFmdGVyICcvJy4gJHt0fWApO2lmKHZvaWQgMD09PXRbZSsxXXx8Ii8iPT09dFtlKzFdKXRocm93IG5ldyBSYW5nZUVycm9yKGBjb25maWcucGF0aCBwYXJhbWV0ZXIgc2hvdWxkIGhhdmUgbm9uLWVtcHR5IG5hbWUuICR7dH1gKX19Z2V0UGF0aE1hdGNoZXJzKHQpe3JldHVybiB0Lm1hcCgodD0+e2NvbnN0e3BhdGhQYXJ0OmV9PXQ7cmV0dXJuIHQuaXNQYXJhbT9lPT4oe2lzUGFyYW1QYXRoUGFydDohMCxwYXJ0TWF0Y2hlZDohMCxwYXJhbU5hbWU6dC5wYXJhbU5hbWUscGFyYW1WYWx1ZTplfSk6dD0+KHtpc1BhcmFtUGF0aFBhcnQ6ITEscGFydE1hdGNoZWQ6dD09PWV9KX0pKX1tYXRjaCh0KXtsZXQgZT17fTtpZih0aGlzLnBhdGhNYXRjaGVycy5sZW5ndGghPT10Lmxlbmd0aClyZXR1cm57cmVzdWx0OiExfTtsZXQgbj0wO2Zvcihjb25zdCBvIG9mIHRoaXMucGF0aE1hdGNoZXJzKXtjb25zdCBpPW8odFtuKytdKTtpZighaS5wYXJ0TWF0Y2hlZClyZXR1cm57cmVzdWx0OiExfTtpLmlzUGFyYW1QYXRoUGFydCYmKGU9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGUpLHtbaS5wYXJhbU5hbWVdOmkucGFyYW1WYWx1ZX0pKX1yZXR1cm57cmVzdWx0OiEwLHBhcmFtczplLHBhdGhQYXJ0czp0LGlzUmVkaXJlY3Rpb246ITEscmVkaXJlY3Rpb25RdWVyeVBhcmFtczp2b2lkIDB9fW1hdGNoQnlQYXJhbXModCl7cmV0dXJue3Jlc3VsdDohMCxwYXJhbXM6dCxwYXRoUGFydHM6dGhpcy5yZXByb2plY3RQYXRoQnlQYXJhbXModGhpcy5wYXRoRnJhZ21lbnRzLHQpLGlzUmVkaXJlY3Rpb246ITEscmVkaXJlY3Rpb25RdWVyeVBhcmFtczp2b2lkIDB9fXJlcHJvamVjdFBhdGhCeVBhcmFtcyh0LGUpe2NvbnN0IG49W107Zm9yKGNvbnN0IG8gb2YgdClpZihvLmlzUGFyYW0pe2NvbnN0e3BhcmFtTmFtZTp0fT1vO2lmKCFlLmhhc093blByb3BlcnR5KHQpKXRocm93IG5ldyBSYW5nZUVycm9yKGBGYWlsZWQgdG8gcmVwcm9qZWN0IHBhcmFtZXRlci4gIiR7dH0iIHBhcmFtZXRlciBzaG91bGQgYmUgcHJlc2VudC5gKTtuLnB1c2goZVt0XSl9ZWxzZSBuLnB1c2goby5wYXRoUGFydCk7cmV0dXJuIG59fWNsYXNzIHJSIGV4dGVuZHMgYVJ7Y29uc3RydWN0b3IodCl7c3VwZXIodCksdGhpcy5kZWZpbml0aW9uPXR9fWNsYXNzIHNSIGV4dGVuZHMgYVJ7Y29uc3RydWN0b3IodCl7c3VwZXIodCksdGhpcy5kZWZpbml0aW9uPXQsdGhpcy5yZWRpcmVjdGlvbkZyYWdtZW50cz1pUih0LnJlZGlyZWN0aW9uUGF0aCl9bWF0Y2godCl7Y29uc3QgZT1zdXBlci5tYXRjaCh0KTtpZighZS5yZXN1bHQpcmV0dXJuIGU7Y29uc3Qgbj10aGlzLnJlcHJvamVjdFBhdGhCeVBhcmFtcyh0aGlzLnJlZGlyZWN0aW9uRnJhZ21lbnRzLGUucGFyYW1zKTtyZXR1cm57cmVzdWx0OiEwLHBhcmFtczplLnBhcmFtcyxwYXRoUGFydHM6bixpc1JlZGlyZWN0aW9uOiEwLHJlZGlyZWN0aW9uUXVlcnlQYXJhbXM6dm9pZCAwfX19Y2xhc3MgbFIgZXh0ZW5kcyBhUntjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KSx0aGlzLmRlZmluaXRpb249dH1tYXRjaCh0KXtjb25zdCBlPXN1cGVyLm1hdGNoKHQpO2lmKCFlLnJlc3VsdClyZXR1cm4gZTtjb25zdHtwYXRoUGFydHM6bixxdWVyeVBhcmFtczpvfT10aGlzLmRlZmluaXRpb24ucmVkaXJlY3Rvcih0KTtyZXR1cm57cmVzdWx0OiEwLHBhcmFtczplLnBhcmFtcyxwYXRoUGFydHM6bixpc1JlZGlyZWN0aW9uOiEwLHJlZGlyZWN0aW9uUXVlcnlQYXJhbXM6b319fWNsYXNzIGNSe2NvbnN0cnVjdG9yKHQsZT0zKXtpZih0aGlzLm1heFJlZGlyZWN0aW9uPWUsZTwwKXRocm93IG5ldyBSYW5nZUVycm9yKCJtYXhSZWRpcmVjdGlvbiBoYXMgdG8gYmUgbm9uLW5lZ2F0aXZlIG51bWJlciIpO3RoaXMudmFsaWRhdGVSb3V0ZUNvbmZpZ3ModCksdGhpcy5kZWZhdWx0Um91dGVDb25maWc9bnVsbCx0aGlzLnJvdXRlS2luZFRvQ29uY3JldGVDb25maWdNYXRjaGVycz1uZXcgTWFwLHRoaXMuY29uZmlnTWF0Y2hlcnM9W107Zm9yKGNvbnN0IGUgb2YgdCl7Y29uc3QgdD1hUi5nZXRNYXRjaGVyKGUpO3RoaXMuY29uZmlnTWF0Y2hlcnMucHVzaCh0KSx0IGluc3RhbmNlb2YgclImJih0aGlzLnJvdXRlS2luZFRvQ29uY3JldGVDb25maWdNYXRjaGVycy5zZXQodC5kZWZpbml0aW9uLnJvdXRlS2luZCx0KSx0LmRlZmluaXRpb24uZGVmYXVsdFJvdXRlJiYodGhpcy5kZWZhdWx0Um91dGVDb25maWc9dCkpfX12YWxpZGF0ZVJvdXRlQ29uZmlncyh0KXtjb25zdCBlPXQuZmlsdGVyKG9SKSxuPWUuZmlsdGVyKCh0PT50LmRlZmF1bHRSb3V0ZSkpO2lmKG4ubGVuZ3RoPjEpe2NvbnN0IHQ9bi5tYXAoKCh7cGF0aDp0fSk9PnQpKS5qb2luKCIsICIpO3Rocm93IG5ldyBSYW5nZUVycm9yKGBUaGVyZSBhcmUgbW9yZSB0aGFuIG9uZSBkZWZhdWx0Um91dGVzLiAke3R9YCl9aWYoMT09PW4ubGVuZ3RoKXtjb25zdHtwYXRoOnR9PW5bMF07aWYoQm9vbGVhbihpUih0KS5maW5kKCgoe2lzUGFyYW06dH0pPT50KSkpKXRocm93IG5ldyBSYW5nZUVycm9yKGBBIGRlZmF1bHRSb3V0ZSBjYW5ub3QgaGF2ZSBhbnkgcGFyYW1zLiAke3R9YCl9Y29uc3Qgbz1uZXcgU2V0O2Zvcihjb25zdHtyb3V0ZUtpbmQ6dH1vZiBlKXtpZihvLmhhcyh0KSl0aHJvdyBuZXcgUmFuZ2VFcnJvcihgTXVsdGlwbGUgcm91dGUgY29uZmlndXJhdGlvbiBmb3Iga2luZDogJHt0fS4gQ29uZmlndXJhdGlvbnMgc2hvdWxkIGhhdmUgdW5pcXVlIHJvdXRlS2luZHNgKTtvLmFkZCh0KX19bWF0Y2godCl7dmFyIGU7aWYoIXQucGF0aG5hbWUuc3RhcnRzV2l0aCgiLyIpKXRocm93IG5ldyBSYW5nZUVycm9yKCdOYXZpZ2F0aW9uIGhhcyB0byBtYWRlIHdpdGggcGF0aG5hbWUgdGhhdCBzdGFydHMgd2l0aCAiLyInKTtsZXQgbixvPWRSKHQucGF0aG5hbWUpLGk9MCxhPSExO2Zvcig7Oyl7bGV0IHQ9ITE7Zm9yKGNvbnN0IGUgb2YgdGhpcy5jb25maWdNYXRjaGVycyl7Y29uc3QgaT1lLm1hdGNoKG8pO2lmKGkucmVzdWx0KXt0PSEwO2NvbnN0e3BhcmFtczpyLHBhdGhQYXJ0czpzLGlzUmVkaXJlY3Rpb246bH09aTtpZihsKXtvPXMsYT0hMCxuPWkucmVkaXJlY3Rpb25RdWVyeVBhcmFtczticmVha31pZighKGUgaW5zdGFuY2VvZiByUikpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIk5vIGNvbmNyZXRlIHJvdXRlIGRlZmluaXRpb24gYG1hdGNoYCByZXR1cm4gcmVkaXJlY3Rpb24iKTtjb25zdHtkZWZpbml0aW9uOmN9PWUsZD17cm91dGVLaW5kOmMucm91dGVLaW5kLHBhcmFtczpyLHBhdGhuYW1lOnBSKHMpLGRlZXBMaW5rUHJvdmlkZXI6Yy5kZWVwTGlua1Byb3ZpZGVyfHxudWxsfTtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGQpLGE/e29yaWdpbmF0ZUZyb21SZWRpcmVjdGlvbjohMCxyZWRpcmVjdGlvbk9ubHlRdWVyeVBhcmFtczpufTp7b3JpZ2luYXRlRnJvbVJlZGlyZWN0aW9uOiExfSl9fWlmKGEmJmkrKywhdHx8aT50aGlzLm1heFJlZGlyZWN0aW9uKWJyZWFrfWlmKGk+dGhpcy5tYXhSZWRpcmVjdGlvbil0aHJvdyBuZXcgRXJyb3IoYFBvdGVudGlhbCByZWRpcmVjdGlvbiBsb29wIChyZWRpcmVjdGluZyBtb3JlIHRoYW4gJHt0aGlzLm1heFJlZGlyZWN0aW9ufSB0aW1lcy4gUGxlYXNlIGRvIG5vdCBoYXZlIGN5Y2xlcyBpbiB0aGUgcm91dGVzLmApO2lmKHRoaXMuZGVmYXVsdFJvdXRlQ29uZmlnKXtjb25zdHtkZWZpbml0aW9uOnR9PXRoaXMuZGVmYXVsdFJvdXRlQ29uZmlnO3JldHVybntyb3V0ZUtpbmQ6dC5yb3V0ZUtpbmQsZGVlcExpbmtQcm92aWRlcjpudWxsIT09KGU9dC5kZWVwTGlua1Byb3ZpZGVyKSYmdm9pZCAwIT09ZT9lOm51bGwscGF0aG5hbWU6dC5wYXRoLHBhcmFtczp7fSxvcmlnaW5hdGVGcm9tUmVkaXJlY3Rpb246ITAscmVkaXJlY3Rpb25Pbmx5UXVlcnlQYXJhbXM6dm9pZCAwfX1yZXR1cm4gbnVsbH1tYXRjaEJ5Um91dGVLaW5kKHQsZSl7Y29uc3Qgbj10aGlzLnJvdXRlS2luZFRvQ29uY3JldGVDb25maWdNYXRjaGVycy5nZXQodCk7aWYoIW4pdGhyb3cgbmV3IFJhbmdlRXJyb3IoYFJlcXVpcmVzIGNvbmZpZ3VyYXRpb24gZm9yIHJvdXRlS2luZDogJHt0fWApO3JldHVybntyb3V0ZUtpbmQ6dCxwYXJhbXM6ZSxwYXRobmFtZTpwUihuLm1hdGNoQnlQYXJhbXMoZSkucGF0aFBhcnRzKSxkZWVwTGlua1Byb3ZpZGVyOm4uZGVmaW5pdGlvbi5kZWVwTGlua1Byb3ZpZGVyfHxudWxsLG9yaWdpbmF0ZUZyb21SZWRpcmVjdGlvbjohMX19fWZ1bmN0aW9uIGRSKHQpe3JldHVybiB0LnNwbGl0KCIvIikuc2xpY2UoMSl9ZnVuY3Rpb24gcFIodCl7cmV0dXJuIi8iK3Quam9pbigiLyIpfWNvbnN0IG1SPW5ldyBlcigiW0FwcCBSb3V0aW5nXSBSb3V0ZSBDb25maWciKTtjbGFzcyBmUntjb25zdHJ1Y3Rvcih0KXtpZih0aGlzLnJvdXRlS2luZFRvTmdDb21wb25lbnQ9bmV3IE1hcCwhdClyZXR1cm4gdm9pZCh0aGlzLnJvdXRlQ29uZmlncz1uZXcgY1IoW10pKTtjb25zdCBlPVtdO2Zvcihjb25zdCBuIG9mIHQpZm9yKGNvbnN0IHQgb2YgbillLnB1c2godCk7dGhpcy5yb3V0ZUNvbmZpZ3M9bmV3IGNSKGUpLGUuZm9yRWFjaCgodD0+e29SKHQpJiZ0aGlzLnJvdXRlS2luZFRvTmdDb21wb25lbnQuc2V0KHQucm91dGVLaW5kLHQubmdDb21wb25lbnQpfSkpfWdldFJlZ2lzdGVyZWRSb3V0ZUtpbmRzKCl7cmV0dXJuIHRoaXMucm91dGVLaW5kVG9OZ0NvbXBvbmVudC5rZXlzKCl9Z2V0Um91dGVDb25maWdzKCl7cmV0dXJuIHRoaXMucm91dGVDb25maWdzfWdldE5nQ29tcG9uZW50QnlSb3V0ZUtpbmQodCl7cmV0dXJuIHRoaXMucm91dGVLaW5kVG9OZ0NvbXBvbmVudC5nZXQodCl8fG51bGx9c3RhdGljIHJlZ2lzdGVyUm91dGVzKHQpe3JldHVybntuZ01vZHVsZTpmUixwcm92aWRlcnM6W3twcm92aWRlOm1SLG11bHRpOiEwLHVzZUZhY3Rvcnk6dH1dfX19ZlIuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGZSKShUcihtUiw4KSl9LGZSLsm1bW9kPWZvKHt0eXBlOmZSfSksZlIuybVpbmo9RG4oe30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoZlIsW3t0eXBlOkxfLGFyZ3M6W3t9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W21SXX1dfV19KSxudWxsKTtjb25zdCB1Uj0iYXBwX3JvdXRpbmciLGdSPV9TKHVSKSxoUj1iUyhnUiwodD0+dC5hY3RpdmVSb3V0ZSkpLGJSPWJTKGdSLCh0PT50Lm5leHRSb3V0ZSkpLHlSPWJTKGdSLCh0PT50LmFjdGl2ZU5hbWVzcGFjZUlkKSksX1I9YlMoZ1IsKHQ9PnQua25vd25OYW1lc3BhY2VJZHMpKSxDUj1iUyhnUiwodD0+dC5yZWdpc3RlcmVkUm91dGVLZXlzKSksTVI9YlMoaFIsKHQ9PnQ/dC5yb3V0ZUtpbmQ6X0QuTk9UX1NFVCkpLHZSPWJTKGhSLCh0PT50P3QucGFyYW1zOnt9KSkseFI9YlMoTVIsdlIsKCh0LGUpPT52RCh0LGUpKSk7YlMoTVIsdlIsKCh0LGUpPT57aWYodCE9PV9ELkNPTVBBUkVfRVhQRVJJTUVOVClyZXR1cm57fTtjb25zdCBuPShmdW5jdGlvbiBvKHQpe2NvbnN0IGU9bmV3IE1hcCxuPU1EKHQuZXhwZXJpbWVudElkcyk7Zm9yKGNvbnN0e2lkOnQsbmFtZTpvfW9mIG4pbyYmZS5zZXQodCxvKTtyZXR1cm4gZX0pKGUpO3JldHVybiBPYmplY3QuZnJvbUVudHJpZXMobi5lbnRyaWVzKCkpfSkpO2NvbnN0IE9SPWJTKE1SLHZSLCgodCxlKT0+e2lmKHQhPT1fRC5DT01QQVJFX0VYUEVSSU1FTlQpcmV0dXJue307Y29uc3Qgbj0oZnVuY3Rpb24gbyh0KXtjb25zdCBlPW5ldyBNYXAsbj1NRCh0LmV4cGVyaW1lbnRJZHMpO2xldCBvPTA7Zm9yKGNvbnN0e2lkOnQsbmFtZTppfW9mIG4pbysrLCFlLmhhcyh0KSYmaSYmZS5zZXQodCx7YWxpYXNUZXh0OmksYWxpYXNOdW1iZXI6b30pO3JldHVybiBlfSkoZSk7cmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhuLmVudHJpZXMoKSl9KSksUFI9X2soIltBcHAgUm91dGluZ10gRWZmZWN0cyBJbml0Iik7dmFyIHdSOyEoZnVuY3Rpb24odCl7dFt0LlVOQ0hBTkdFRD0wXT0iVU5DSEFOR0VEIix0W3QuTkVXPTFdPSJORVciLHRbdC5GUk9NX0hJU1RPUlk9Ml09IkZST01fSElTVE9SWSJ9KSh3Unx8KHdSPXt9KSk7Y2xhc3Mga1J7Y29uc3RydWN0b3IodCxlLG4sbyxpLGEscil7dGhpcy5hY3Rpb25zJD10LHRoaXMuc3RvcmU9ZSx0aGlzLmxvY2F0aW9uPW4sdGhpcy5kaXJ0eVVwZGF0ZXNSZWdpc3RyeT1vLHRoaXMucmVnaXN0cnk9aSx0aGlzLnByb2dyYW1tYXRpY2FsTmF2TW9kdWxlPWEsdGhpcy5hcHBSb290UHJvdmlkZXI9cix0aGlzLm9uTmF2aWdhdGlvblJlcXVlc3RlZCQ9dGhpcy5hY3Rpb25zJC5waXBlKCRTKFFEKSxWdCgodD0+e3ZhciBlO3JldHVybntwYXRobmFtZTp0LnBhdGhuYW1lLnN0YXJ0c1dpdGgoIi8iKT90aGlzLmFwcFJvb3RQcm92aWRlci5nZXRBYnNQYXRobmFtZVdpdGhBcHBSb290KHQucGF0aG5hbWUpOnRoaXMubG9jYXRpb24uZ2V0UmVzb2x2ZWRQYXRoKHQucGF0aG5hbWUpLG9wdGlvbnM6e2Jyb3dzZXJJbml0aWF0ZWQ6ITEscmVwbGFjZVN0YXRlOm51bGwhPT0oZT10LnJlcGxhY2VTdGF0ZSkmJnZvaWQgMCE9PWUmJmUsbmFtZXNwYWNlVXBkYXRlOntvcHRpb246dC5yZXNldE5hbWVzcGFjZWRTdGF0ZT93Ui5ORVc6d1IuVU5DSEFOR0VEfX19fSkpKSx0aGlzLmJvb3RzdHJhcFJlZHVjZXJzJD1XUygoKCk9PnRoaXMuYWN0aW9ucyQucGlwZSgkUyhQUiksVnQoKCgpPT5KRCh7cm91dGVLaW5kczpuZXcgU2V0KHRoaXMucmVnaXN0cnkuZ2V0UmVnaXN0ZXJlZFJvdXRlS2luZHMoKSl9KSkpKSkpLHRoaXMub25Jbml0JD10aGlzLmFjdGlvbnMkLnBpcGUoJFMoUFIpKS5waXBlKFBlKDApLFZ0KCgoKT0+e3ZhciB0O2NvbnN0IGU9bnVsbD09PSh0PXRoaXMubG9jYXRpb24uZ2V0SGlzdG9yeVN0YXRlKCkpfHx2b2lkIDA9PT10P3ZvaWQgMDp0Lm5hbWVzcGFjZUlkLG49dm9pZCAwPT09ZT97b3B0aW9uOndSLk5FV306e29wdGlvbjp3Ui5GUk9NX0hJU1RPUlksbmFtZXNwYWNlSWQ6ZX07cmV0dXJue3BhdGhuYW1lOnRoaXMubG9jYXRpb24uZ2V0UGF0aCgpLG9wdGlvbnM6e2Jyb3dzZXJJbml0aWF0ZWQ6ITAscmVwbGFjZVN0YXRlOiEwLG5hbWVzcGFjZVVwZGF0ZTpufX19KSkpLHRoaXMub25Qb3BTdGF0ZSQ9dGhpcy5sb2NhdGlvbi5vblBvcFN0YXRlKCkucGlwZShWdCgodD0+e3ZhciBlO3JldHVybntwYXRobmFtZTp0LnBhdGhuYW1lLG9wdGlvbnM6e2Jyb3dzZXJJbml0aWF0ZWQ6ITAscmVwbGFjZVN0YXRlOiEwLG5hbWVzcGFjZVVwZGF0ZTp7b3B0aW9uOndSLkZST01fSElTVE9SWSxuYW1lc3BhY2VJZDpudWxsPT09KGU9dC5zdGF0ZSl8fHZvaWQgMD09PWU/dm9pZCAwOmUubmFtZXNwYWNlSWR9fX19KSkpLHRoaXMudXNlckluaXROYXZSb3V0ZSQ9cGUodGhpcy5vbk5hdmlnYXRpb25SZXF1ZXN0ZWQkLHRoaXMub25Jbml0JCx0aGlzLm9uUG9wU3RhdGUkKS5waXBlKFZ0KCh0PT57aWYoIXQucGF0aG5hbWUuc3RhcnRzV2l0aCgiLyIpKXRocm93IG5ldyBFcnJvcihgW0FwcCByb3V0aW5nXSBwYXRobmFtZSBtdXN0IHN0YXJ0IHdpdGggJy8nLiBHb3Q6ICR7dC5wYXRobmFtZX1gKTtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtwYXRobmFtZTp0aGlzLmFwcFJvb3RQcm92aWRlci5nZXRBcHBSb290bGVzc1BhdGhuYW1lKHQucGF0aG5hbWUpfSl9KSksVnQoKHQ9Pih7cm91dGVNYXRjaDp0aGlzLnJvdXRlQ29uZmlncy5tYXRjaCh0KSxvcHRpb25zOnQub3B0aW9uc30pKSkpLHRoaXMucHJvZ3JhbW1hdGljYWxOYXZSb3V0ZSQ9dGhpcy5hY3Rpb25zJC5waXBlKFZ0KCh0PT50aGlzLnByb2dyYW1tYXRpY2FsTmF2TW9kdWxlLmdldE5hdmlnYXRpb24odCkpKSx1ZSgodD0+bnVsbCE9PXQpKSxWdCgodD0+e2NvbnN0IGU9dCxuPWUucm91dGVLaW5kO2xldCBvO3N3aXRjaChlLnJvdXRlS2luZCl7Y2FzZSBfRC5DT01QQVJFX0VYUEVSSU1FTlQ6bz17ZXhwZXJpbWVudElkczooaT1lLnJvdXRlUGFyYW1zLmFsaWFzQW5kRXhwZXJpbWVudElkcyxpLm1hcCgoKHthbGlhczp0LGlkOmV9KT0+YCR7dH06JHtlfWApKS5qb2luKCIsIikpfTticmVhaztkZWZhdWx0Om89ZS5yb3V0ZVBhcmFtc312YXIgaTtyZXR1cm57cm91dGVLaW5kOm4scm91dGVQYXJhbXM6b319KSksVnQoKCh7cm91dGVLaW5kOnQscm91dGVQYXJhbXM6ZX0pPT4oe3JvdXRlTWF0Y2g6dGhpcy5yb3V0ZUNvbmZpZ3M/dGhpcy5yb3V0ZUNvbmZpZ3MubWF0Y2hCeVJvdXRlS2luZCh0LGUpOm51bGwsb3B0aW9uczp7cmVwbGFjZVN0YXRlOiExLGJyb3dzZXJJbml0aWF0ZWQ6ITEsbmFtZXNwYWNlVXBkYXRlOntvcHRpb246d1IuVU5DSEFOR0VEfX19KSkpKSx0aGlzLnZhbGlkYXRlZFJvdXRlTWF0Y2gkPXBlKHRoaXMudXNlckluaXROYXZSb3V0ZSQsdGhpcy5wcm9ncmFtbWF0aWNhbE5hdlJvdXRlJCkucGlwZSh1ZSgoKHtyb3V0ZU1hdGNoOnR9KT0+Qm9vbGVhbih0KSkpLFZ0KCgoe3JvdXRlTWF0Y2g6dCxvcHRpb25zOmV9KT0+KHtyb3V0ZU1hdGNoOnQsb3B0aW9uczplfSkpKSksdGhpcy5uYXZpZ2F0ZSQ9V1MoKCgpPT50aGlzLnZhbGlkYXRlZFJvdXRlTWF0Y2gkLnBpcGUocWUodGhpcy5zdG9yZS5zZWxlY3QoaFIpKSwkdCgoKFt0LGVdKT0+e2NvbnN0IG49bnVsbCE9PWUmJnhEKGUsdC5yb3V0ZU1hdGNoKSxvPXRoaXMuZGlydHlVcGRhdGVzUmVnaXN0cnkuZ2V0RGlydHlVcGRhdGVzU2VsZWN0b3JzKCk7cmV0dXJuIG58fCFvLmxlbmd0aD96dCh0KTppZSh0aGlzLmRpcnR5VXBkYXRlc1JlZ2lzdHJ5LmdldERpcnR5VXBkYXRlc1NlbGVjdG9ycygpLm1hcCgodD0+dGhpcy5zdG9yZS5zZWxlY3QodCkucGlwZSh2ZSgxKSkpKSkucGlwZShWdCgodD0+dm9pZCAwIT09dFswXS5leHBlcmltZW50SWRzJiZ0WzBdLmV4cGVyaW1lbnRJZHMubGVuZ3RoPjApKSx1ZSgodD0+e2lmKHQpe2NvbnN0IHQ9d2luZG93LmNvbmZpcm0oIllvdSBoYXZlIHVuc2F2ZWQgZWRpdHMsIGFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkaXNjYXJkIHRoZW0/Iik7cmV0dXJuIHQmJnRoaXMuc3RvcmUuZGlzcGF0Y2goWEQoKSksdH1yZXR1cm4hMH0pKSxWdCgoKCk9PnQpKSl9KSkscWUodGhpcy5zdG9yZS5zZWxlY3QoX1IpKSxXZSgoKFt7cm91dGVNYXRjaDp0LG9wdGlvbnM6ZX0sbl0pPT57Y29uc3Qgbz1lLm5hbWVzcGFjZVVwZGF0ZS5vcHRpb249PT13Ui5GUk9NX0hJU1RPUlkmJm4uaGFzKGUubmFtZXNwYWNlVXBkYXRlLm5hbWVzcGFjZUlkKTtpZighZS5icm93c2VySW5pdGlhdGVkfHxvfHwhdC5kZWVwTGlua1Byb3ZpZGVyKXJldHVybjtjb25zdCBpPXQub3JpZ2luYXRlRnJvbVJlZGlyZWN0aW9uJiZ0LnJlZGlyZWN0aW9uT25seVF1ZXJ5UGFyYW1zP3QucmVkaXJlY3Rpb25Pbmx5UXVlcnlQYXJhbXM6dGhpcy5sb2NhdGlvbi5nZXRTZWFyY2goKSxhPXQuZGVlcExpbmtQcm92aWRlci5kZXNlcmlhbGl6ZVF1ZXJ5UGFyYW1zKGkpO3RoaXMuc3RvcmUuZGlzcGF0Y2goS0Qoe3JvdXRlS2luZDp0LnJvdXRlS2luZCxwYXJ0aWFsU3RhdGU6YX0pKX0pKSxWZSgoKFt7cm91dGVNYXRjaDp0LG9wdGlvbnM6ZX1dKT0+bnVsbD09PXQuZGVlcExpbmtQcm92aWRlcj96dCh7cm91dGU6e3JvdXRlS2luZDp0LnJvdXRlS2luZCxwYXJhbXM6dC5wYXJhbXMscGF0aG5hbWU6dC5wYXRobmFtZSxxdWVyeVBhcmFtczpbXX0sb3B0aW9uczplfSk6dC5kZWVwTGlua1Byb3ZpZGVyLnNlcmlhbGl6ZVN0YXRlVG9RdWVyeVBhcmFtcyh0aGlzLnN0b3JlKS5waXBlKFZ0KCgobixvKT0+KHtyb3V0ZTp7cm91dGVLaW5kOnQucm91dGVLaW5kLHBhcmFtczp0LnBhcmFtcyxwYXRobmFtZTp0LnBhdGhuYW1lLHF1ZXJ5UGFyYW1zOm59LG9wdGlvbnM6MD09PW8/ZTpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sZSkse3JlcGxhY2VTdGF0ZTohMCxyZXNldE5hbWVzcGFjZWRTdGF0ZTohMX0pfSkpKSkpKSxXZSgoKHtyb3V0ZTp0fSk9Pnt0aGlzLnN0b3JlLmRpc3BhdGNoKCREKHthZnRlcjp0fSkpfSkpLENlKDApKS5waXBlKHFlKHRoaXMuc3RvcmUuc2VsZWN0KGhSKSksVnQoKChbe3JvdXRlOnQsb3B0aW9uczplfSxuXSk9Pih7cHJlc2VydmVIYXNoOm51bGw9PT1ufHxudWxsPT09dHx8eEQobix0KSxyb3V0ZTp0LG9wdGlvbnM6ZX0pKSksV2UoKCh7cHJlc2VydmVIYXNoOnQscm91dGU6ZSxvcHRpb25zOm59KT0+eyEoZnVuY3Rpb24gbyh0LGUpe3JldHVybiB0LnBhdGhuYW1lPT09ZS5wYXRobmFtZSYmdC5xdWVyeVBhcmFtcy5sZW5ndGg9PT1lLnF1ZXJ5UGFyYW1zLmxlbmd0aCYmdC5xdWVyeVBhcmFtcy5ldmVyeSgoKHQsbik9Pntjb25zdCBvPWUucXVlcnlQYXJhbXNbbl07cmV0dXJuIHQua2V5PT09by5rZXkmJnQudmFsdWU9PT1vLnZhbHVlfSkpfSkoZSx7cGF0aG5hbWU6dGhpcy5hcHBSb290UHJvdmlkZXIuZ2V0QXBwUm9vdGxlc3NQYXRobmFtZSh0aGlzLmxvY2F0aW9uLmdldFBhdGgoKSkscXVlcnlQYXJhbXM6dGhpcy5sb2NhdGlvbi5nZXRTZWFyY2goKX0pJiYobi5yZXBsYWNlU3RhdGU/dGhpcy5sb2NhdGlvbi5yZXBsYWNlU3RhdGVVcmwodGhpcy5hcHBSb290UHJvdmlkZXIuZ2V0QWJzUGF0aG5hbWVXaXRoQXBwUm9vdCh0aGlzLmxvY2F0aW9uLmdldEZ1bGxQYXRoRnJvbVJvdXRlKGUsdCkpKTp0aGlzLmxvY2F0aW9uLnB1c2hTdGF0ZVVybCh0aGlzLmFwcFJvb3RQcm92aWRlci5nZXRBYnNQYXRobmFtZVdpdGhBcHBSb290KHRoaXMubG9jYXRpb24uZ2V0RnVsbFBhdGhGcm9tUm91dGUoZSx0KSkpKX0pKSkucGlwZShxZSh0aGlzLnN0b3JlLnNlbGVjdChoUiksdGhpcy5zdG9yZS5zZWxlY3QoeVIpLHRoaXMuc3RvcmUuc2VsZWN0KFpEKSksVnQoKChbe3JvdXRlOnQsb3B0aW9uczplfSxuLG8saV0pPT57Y29uc3QgYT0oZnVuY3Rpb24gcih0LGUsbixvKXtyZXR1cm4gdD9uLm5hbWVzcGFjZVVwZGF0ZS5vcHRpb249PT13Ui5GUk9NX0hJU1RPUlk/bi5uYW1lc3BhY2VVcGRhdGUubmFtZXNwYWNlSWQ6bnVsbD09b3x8bi5uYW1lc3BhY2VVcGRhdGUub3B0aW9uPT09d1IuTkVXP0RhdGUubm93KCkudG9TdHJpbmcoKTpvOihmdW5jdGlvbiBpKHQsZSl7dmFyIG47c3dpdGNoKHQpe2Nhc2UgX0QuQ09NUEFSRV9FWFBFUklNRU5UOmNhc2UgX0QuRVhQRVJJTUVOVDp7Y29uc3Qgbz1udWxsIT09KG49dkQodCxlKSkmJnZvaWQgMCE9PW4/bjpbXTtyZXR1cm4gby5zb3J0KCksYCR7dH0vJHtvLmpvaW4oIiwiKX1gfWNhc2UgX0QuRVhQRVJJTUVOVFM6cmV0dXJuIFN0cmluZyh0KTtjYXNlIF9ELk5PVF9TRVQ6cmV0dXJuIl9fbm90X3NldCI7ZGVmYXVsdDpyZXR1cm4iIn19KShlLnJvdXRlS2luZCxlLnBhcmFtcyl9KShpLHQsZSxvKTtyZXR1cm4gdGhpcy5sb2NhdGlvbi5yZXBsYWNlU3RhdGVEYXRhKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0aGlzLmxvY2F0aW9uLmdldEhpc3RvcnlTdGF0ZSgpKSx7bmFtZXNwYWNlSWQ6YX0pKSx0Uih7YmVmb3JlOm4sYWZ0ZXI6dCxiZWZvcmVOYW1lc3BhY2VJZDpvLGFmdGVyTmFtZXNwYWNlSWQ6YX0pfSkpKSkpLHRoaXMucm91dGVDb25maWdzPWkuZ2V0Um91dGVDb25maWdzKCl9bmdyeE9uSW5pdEVmZmVjdHMoKXtyZXR1cm4gUFIoKX19a1IuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGtSKShUcihRUyksVHIoaVMpLFRyKFBEKSxUcihFRCksVHIoZlIpLFRyKG5SKSxUcih3RCkpfSxrUi7JtXByb3Y9U24oe3Rva2VuOmtSLGZhY3Rvcnk6a1IuybVmYWN9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGtSLFt7dHlwZTpVbX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpRU30se3R5cGU6aVN9LHt0eXBlOlBEfSx7dHlwZTpFRH0se3R5cGU6ZlJ9LHt0eXBlOm5SfSx7dHlwZTp3RH1dfSksbnVsbCk7Y29uc3QgU1I9VlMoe2FjdGl2ZVJvdXRlOm51bGwsbmV4dFJvdXRlOm51bGwsYWN0aXZlTmFtZXNwYWNlSWQ6bnVsbCxrbm93bk5hbWVzcGFjZUlkczpuZXcgU2V0LHJlZ2lzdGVyZWRSb3V0ZUtleXM6bmV3IFNldH0sQlMoJEQsKCh0LHthZnRlcjplfSk9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7bmV4dFJvdXRlOmV9KSkpLEJTKHRSLCgodCx7YWZ0ZXI6ZSxhZnRlck5hbWVzcGFjZUlkOm59KT0+e2xldCBvPXQua25vd25OYW1lc3BhY2VJZHM7cmV0dXJuIHQua25vd25OYW1lc3BhY2VJZHMuaGFzKG4pfHwobz1uZXcgU2V0KHQua25vd25OYW1lc3BhY2VJZHMpLG8uYWRkKG4pKSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2FjdGl2ZVJvdXRlOmUsbmV4dFJvdXRlOm51bGwsYWN0aXZlTmFtZXNwYWNlSWQ6bixrbm93bk5hbWVzcGFjZUlkczpvfSl9KSksQlMoSkQsKCh0LHtyb3V0ZUtpbmRzOmV9KT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtyZWdpc3RlcmVkUm91dGVLZXlzOmV9KSkpKTtmdW5jdGlvbiBEUih0LGUpe3JldHVybiBTUih0LGUpfWNsYXNzIFJSe31SUi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8UlIpfSxSUi7JtW1vZD1mbyh7dHlwZTpSUn0pLFJSLsm1aW5qPURuKHtwcm92aWRlcnM6W0VELG5SXSxpbXBvcnRzOltbZlIsVFMuZm9yRmVhdHVyZSh1UixEUiksaEQuZm9yRmVhdHVyZShba1JdKSxERCxTRF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihSUixbe3R5cGU6TF8sYXJnczpbe2ltcG9ydHM6W2ZSLFRTLmZvckZlYXR1cmUodVIsRFIpLGhELmZvckZlYXR1cmUoW2tSXSksREQsU0RdLHByb3ZpZGVyczpbRUQsblJdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8oUlIse2ltcG9ydHM6W2ZSLEFTLGdELERELFNEXX0pO2NvbnN0IEVSPSJfX3RhYl9fIjtjbGFzcyBBUntjb25zdHJ1Y3Rvcigpe3RoaXMudGZTdG9yYWdlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRmLXN0b3JhZ2UiKTtkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0Zi1nbG9iYWxzIikudGZfZ2xvYmFscy5zZXRVc2VIYXNoKCEwKSx0aGlzLnRmU3RvcmFnZS50Zl9zdG9yYWdlLm1pZ3JhdGVMZWdhY3lVUkxTY2hlbWUoKX1nZXRTdHJpbmcodCl7cmV0dXJuIHRoaXMudGZTdG9yYWdlLnRmX3N0b3JhZ2UuZ2V0U3RyaW5nKHQpfXNldFN0cmluZyh0LGUsbil7dGhpcy50ZlN0b3JhZ2UudGZfc3RvcmFnZS5zZXRTdHJpbmcodCxlLG4pfWdldFBsdWdpbklkKCl7cmV0dXJuIHRoaXMuZ2V0U3RyaW5nKEVSKX1zZXRQbHVnaW5JZCh0LGUpe3RoaXMuc2V0U3RyaW5nKEVSLHQsZSl9fUFSLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxBUil9LEFSLsm1cHJvdj1Tbih7dG9rZW46QVIsZmFjdG9yeTpBUi7JtWZhY30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoQVIsW3t0eXBlOlVtfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW119KSxudWxsKTtjbGFzcyBUUnt9Y29uc3QgTlI9bmV3IGVyKCJbUGVyc2lzdGVudCBTZXR0aW5nc10gR2xvYmFsIFNldHRpbmdzIik7Y2xhc3MgelJ7Y29uc3RydWN0b3IodCl7dGhpcy5nbG9iYWxTZXR0aW5nU2VsZWN0b3JzPVtdLHQmJih0aGlzLmdsb2JhbFNldHRpbmdTZWxlY3RvcnM9dC5tYXAoKHQ9PnQoKSkpKX1nZXRHbG9iYWxTZXR0aW5nU2VsZWN0b3JzKCl7dmFyIHQ7cmV0dXJuIG51bGwhPT0odD10aGlzLmdsb2JhbFNldHRpbmdTZWxlY3RvcnMpJiZ2b2lkIDAhPT10P3Q6W119c3RhdGljIGRlZmluZUdsb2JhbFNldHRpbmcodCl7cmV0dXJue25nTW9kdWxlOnpSLHByb3ZpZGVyczpbe3Byb3ZpZGU6TlIsbXVsdGk6ITAsdXNlVmFsdWU6dH1dfX19elIuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHpSKShUcihOUiw4KSl9LHpSLsm1bW9kPWZvKHt0eXBlOnpSfSkselIuybVpbmo9RG4oe30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoelIsW3t0eXBlOkxffV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltOUl19XX1dfSksbnVsbCk7Y2xhc3MgSVJ7c2V0SXRlbSh0LGUpe2xvY2FsU3RvcmFnZS5zZXRJdGVtKHQsZSl9Z2V0SXRlbSh0KXtyZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0odCl9cmVtb3ZlSXRlbSh0KXtsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSh0KX19SVIuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fElSKX0sSVIuybVwcm92PVNuKHt0b2tlbjpJUixmYWN0b3J5OklSLsm1ZmFjfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihJUixbe3R5cGU6VW19XSxudWxsLG51bGwpO2NsYXNzIEhSe312YXIgRlI7SFIuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEhSKX0sSFIuybVtb2Q9Zm8oe3R5cGU6SFJ9KSxIUi7JtWluaj1Ebih7cHJvdmlkZXJzOltJUl19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEhSLFt7dHlwZTpMXyxhcmdzOlt7cHJvdmlkZXJzOltJUl19XX1dLG51bGwsbnVsbCksKGZ1bmN0aW9uKHQpe3QuQlJPV1NFUl9ERUZBVUxUPSJicm93c2VyX2RlZmF1bHQiLHQuTElHSFQ9ImxpZ2h0Iix0LkRBUks9ImRhcmsifSkoRlJ8fChGUj17fSkpO2NvbnN0IExSPSJfdGJfZ2xvYmFsX3NldHRpbmdzLnRpbWVzZXJpZXMiLEJSPSJfdGJfZ2xvYmFsX3NldHRpbmdzIixWUj0ibm90aWZpY2F0aW9uTGFzdFJlYWRUaW1lc3RhbXAiO2NsYXNzIGpSe31qUi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8alIpfSxqUi7JtXByb3Y9U24oe3Rva2VuOmpSLGZhY3Rvcnk6alIuybVmYWN9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGpSLFt7dHlwZTpVbX1dLG51bGwsbnVsbCk7Y2xhc3MgVVJ7fVVSLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxVUil9LFVSLsm1cHJvdj1Tbih7dG9rZW46VVIsZmFjdG9yeTpVUi7JtWZhY30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoVVIsW3t0eXBlOlVtfV0sbnVsbCxudWxsKTtjbGFzcyBXUiBleHRlbmRzIFVSe3VpVG9CYWNrZW5kKHQpe2NvbnN0IGU9e307cmV0dXJuIHZvaWQgMCE9PXQuaWdub3JlT3V0bGllcnMmJihlLmlnbm9yZU91dGxpZXJzPXQuaWdub3JlT3V0bGllcnMpLHZvaWQgMCE9PXQuc2NhbGFyU21vb3RoaW5nJiYoZS5zY2FsYXJTbW9vdGhpbmc9dC5zY2FsYXJTbW9vdGhpbmcpLHZvaWQgMCE9PXQudG9vbHRpcFNvcnRTdHJpbmcmJihlLnRvb2x0aXBTb3J0PXQudG9vbHRpcFNvcnRTdHJpbmcpLHZvaWQgMCE9PXQuYXV0b1JlbG9hZCYmKGUuYXV0b1JlbG9hZD10LmF1dG9SZWxvYWQpLHZvaWQgMCE9PXQuYXV0b1JlbG9hZFBlcmlvZEluTXMmJihlLmF1dG9SZWxvYWRQZXJpb2RJbk1zPXQuYXV0b1JlbG9hZFBlcmlvZEluTXMpLHZvaWQgMCE9PXQucGFnZVNpemUmJihlLnBhZ2luYXRpb25TaXplPXQucGFnZVNpemUpLHZvaWQgMCE9PXQudGhlbWVPdmVycmlkZSYmKGUudGhlbWU9dC50aGVtZU92ZXJyaWRlKSx2b2lkIDAhPT10Lm5vdGlmaWNhdGlvbkxhc3RSZWFkVGltZUluTXMmJihlLm5vdGlmaWNhdGlvbkxhc3RSZWFkVGltZUluTXM9dC5ub3RpZmljYXRpb25MYXN0UmVhZFRpbWVJbk1zKSx2b2lkIDAhPT10LnNpZGVCYXJXaWR0aEluUGVyY2VudCYmKGUuc2lkZUJhcldpZHRoSW5QZXJjZW50PXQuc2lkZUJhcldpZHRoSW5QZXJjZW50KSx2b2lkIDAhPT10LnRpbWVTZXJpZXNQcm9tb3Rpb25EaXNtaXNzZWQmJihlLnRpbWVTZXJpZXNQcm9tb3Rpb25EaXNtaXNzZWQ9dC50aW1lU2VyaWVzUHJvbW90aW9uRGlzbWlzc2VkKSx2b2lkIDAhPT10LnRpbWVTZXJpZXNTZXR0aW5nc1BhbmVPcGVuZWQmJihlLnRpbWVTZXJpZXNTZXR0aW5nc1BhbmVPcGVuZWQ9dC50aW1lU2VyaWVzU2V0dGluZ3NQYW5lT3BlbmVkKSx2b2lkIDAhPT10LnRpbWVTZXJpZXNDYXJkTWluV2lkdGgmJihlLnRpbWVTZXJpZXNDYXJkTWluV2lkdGg9dC50aW1lU2VyaWVzQ2FyZE1pbldpZHRoKSxlfWJhY2tlbmRUb1VpKHQpe2NvbnN0IGU9e307cmV0dXJuIHQuaGFzT3duUHJvcGVydHkoInNjYWxhclNtb290aGluZyIpJiYibnVtYmVyIj09dHlwZW9mIHQuc2NhbGFyU21vb3RoaW5nJiYoZS5zY2FsYXJTbW9vdGhpbmc9dC5zY2FsYXJTbW9vdGhpbmcpLHQuaGFzT3duUHJvcGVydHkoImlnbm9yZU91dGxpZXJzIikmJiJib29sZWFuIj09dHlwZW9mIHQuaWdub3JlT3V0bGllcnMmJihlLmlnbm9yZU91dGxpZXJzPXQuaWdub3JlT3V0bGllcnMpLHQuaGFzT3duUHJvcGVydHkoInRvb2x0aXBTb3J0IikmJiJzdHJpbmciPT10eXBlb2YgdC50b29sdGlwU29ydCYmKGUudG9vbHRpcFNvcnRTdHJpbmc9dC50b29sdGlwU29ydCksdC5oYXNPd25Qcm9wZXJ0eSgiYXV0b1JlbG9hZCIpJiYiYm9vbGVhbiI9PXR5cGVvZiB0LmF1dG9SZWxvYWQmJihlLmF1dG9SZWxvYWQ9dC5hdXRvUmVsb2FkKSx0Lmhhc093blByb3BlcnR5KCJhdXRvUmVsb2FkUGVyaW9kSW5NcyIpJiYibnVtYmVyIj09dHlwZW9mIHQuYXV0b1JlbG9hZFBlcmlvZEluTXMmJihlLmF1dG9SZWxvYWRQZXJpb2RJbk1zPXQuYXV0b1JlbG9hZFBlcmlvZEluTXMpLHQuaGFzT3duUHJvcGVydHkoInBhZ2luYXRpb25TaXplIikmJiJudW1iZXIiPT10eXBlb2YgdC5wYWdpbmF0aW9uU2l6ZSYmKGUucGFnZVNpemU9dC5wYWdpbmF0aW9uU2l6ZSksdC5oYXNPd25Qcm9wZXJ0eSgidGhlbWUiKSYmInN0cmluZyI9PXR5cGVvZiB0LnRoZW1lJiZuZXcgU2V0KE9iamVjdC52YWx1ZXMoRlIpKS5oYXModC50aGVtZSkmJihlLnRoZW1lT3ZlcnJpZGU9dC50aGVtZSksdC5oYXNPd25Qcm9wZXJ0eSgibm90aWZpY2F0aW9uTGFzdFJlYWRUaW1lSW5NcyIpJiYibnVtYmVyIj09dHlwZW9mIHQubm90aWZpY2F0aW9uTGFzdFJlYWRUaW1lSW5NcyYmKGUubm90aWZpY2F0aW9uTGFzdFJlYWRUaW1lSW5Ncz10Lm5vdGlmaWNhdGlvbkxhc3RSZWFkVGltZUluTXMpLHQuaGFzT3duUHJvcGVydHkoInNpZGVCYXJXaWR0aEluUGVyY2VudCIpJiYibnVtYmVyIj09dHlwZW9mIHQuc2lkZUJhcldpZHRoSW5QZXJjZW50JiYoZS5zaWRlQmFyV2lkdGhJblBlcmNlbnQ9dC5zaWRlQmFyV2lkdGhJblBlcmNlbnQpLHQuaGFzT3duUHJvcGVydHkoInRpbWVTZXJpZXNQcm9tb3Rpb25EaXNtaXNzZWQiKSYmImJvb2xlYW4iPT10eXBlb2YgdC50aW1lU2VyaWVzUHJvbW90aW9uRGlzbWlzc2VkJiYoZS50aW1lU2VyaWVzUHJvbW90aW9uRGlzbWlzc2VkPXQudGltZVNlcmllc1Byb21vdGlvbkRpc21pc3NlZCksdC5oYXNPd25Qcm9wZXJ0eSgidGltZVNlcmllc1NldHRpbmdzUGFuZU9wZW5lZCIpJiYiYm9vbGVhbiI9PXR5cGVvZiB0LnRpbWVTZXJpZXNTZXR0aW5nc1BhbmVPcGVuZWQmJihlLnRpbWVTZXJpZXNTZXR0aW5nc1BhbmVPcGVuZWQ9dC50aW1lU2VyaWVzU2V0dGluZ3NQYW5lT3BlbmVkKSx0Lmhhc093blByb3BlcnR5KCJ0aW1lU2VyaWVzQ2FyZE1pbldpZHRoIikmJiJudW1iZXIiPT10eXBlb2YgdC50aW1lU2VyaWVzQ2FyZE1pbldpZHRoJiYoZS50aW1lU2VyaWVzQ2FyZE1pbldpZHRoPXQudGltZVNlcmllc0NhcmRNaW5XaWR0aCksZX19V1IuybVmYWM9KGZ1bmN0aW9uKCl7bGV0IHQ7cmV0dXJuIGZ1bmN0aW9uIGUobil7cmV0dXJuKHR8fCh0PVVhKFdSKSkpKG58fFdSKX19KSgpLFdSLsm1cHJvdj1Tbih7dG9rZW46V1IsZmFjdG9yeTpXUi7JtWZhY30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoV1IsW3t0eXBlOlVtfV0sbnVsbCxudWxsKTtjbGFzcyBHUntjb25zdHJ1Y3Rvcih0LGUpe3RoaXMubG9jYWxTdG9yYWdlPXQsdGhpcy5jb252ZXJ0ZXI9ZX1zZXRTZXR0aW5ncyh0KXtyZXR1cm4gT2JqZWN0LmtleXModCk/dGhpcy5nZXRTZXR0aW5ncygpLnBpcGUoV2UoKGU9Pnt0aGlzLmxvY2FsU3RvcmFnZS5zZXRJdGVtKEJSLEpTT04uc3RyaW5naWZ5KHRoaXMuY29udmVydGVyLnVpVG9CYWNrZW5kKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxlKSx0KSkpKSx0aGlzLmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKExSKSx0aGlzLmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKFZSKX0pKSxWdCgoKCk9Pnt9KSkpOmR0fWRlc2VyaWFsaXplKHQpe3RyeXtyZXR1cm4gSlNPTi5wYXJzZSh0KX1jYXRjaCh0KXtyZXR1cm57fX19Z2V0U2V0dGluZ3MoKXt2YXIgdCxlO2NvbnN0IG49dGhpcy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShWUiksbz10aGlzLmNvbnZlcnRlci5iYWNrZW5kVG9VaSh0aGlzLmRlc2VyaWFsaXplKG4/SlNPTi5zdHJpbmdpZnkoe25vdGlmaWNhdGlvbkxhc3RSZWFkVGltZUluTXM6TnVtYmVyKG4pfSk6Int9IikpLGk9dGhpcy5jb252ZXJ0ZXIuYmFja2VuZFRvVWkodGhpcy5kZXNlcmlhbGl6ZShudWxsIT09KHQ9dGhpcy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShMUikpJiZ2b2lkIDAhPT10P3Q6Int9IikpLGE9dGhpcy5jb252ZXJ0ZXIuYmFja2VuZFRvVWkodGhpcy5kZXNlcmlhbGl6ZShudWxsIT09KGU9dGhpcy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShCUikpJiZ2b2lkIDAhPT1lP2U6Int9IikpO3JldHVybiB6dChPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxvKSxpKSxhKSl9fUdSLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxHUikoVHIoSVIpLFRyKFVSKSl9LEdSLsm1cHJvdj1Tbih7dG9rZW46R1IsZmFjdG9yeTpHUi7JtWZhY30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoR1IsW3t0eXBlOlVtfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOklSfSx7dHlwZTpVUn1dfSksbnVsbCk7Y2xhc3MgWVJ7fVlSLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxZUil9LFlSLsm1bW9kPWZvKHt0eXBlOllSfSksWVIuybVpbmo9RG4oe3Byb3ZpZGVyczpbe3Byb3ZpZGU6alIsdXNlQ2xhc3M6R1J9LFdSLHtwcm92aWRlOlVSLHVzZUV4aXN0aW5nOldSfV0saW1wb3J0czpbW0hSXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFlSLFt7dHlwZTpMXyxhcmdzOlt7aW1wb3J0czpbSFJdLHByb3ZpZGVyczpbe3Byb3ZpZGU6alIsdXNlQ2xhc3M6R1J9LFdSLHtwcm92aWRlOlVSLHVzZUV4aXN0aW5nOldSfV19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhZUix7aW1wb3J0czpbSFJdfSk7Y29uc3QgcVI9X2soIltQZXJzaXN0ZW50IFNldHRpbmdzXSBHbG9iYWwgU2V0dGluZ3MgTG9hZGVkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksWlI9X2soIltQZXJzaXN0ZW50IFNldHRpbmdzXSBFZmZlY3RzIEluaXQiKTtjbGFzcyBYUntjb25zdHJ1Y3Rvcih0LGUsbixvKXt0aGlzLmFjdGlvbnMkPXQsdGhpcy5zdG9yZT1lLHRoaXMuY29uZmlnTW9kdWxlPW4sdGhpcy5kYXRhU291cmNlPW8sdGhpcy5pbml0aWFsaXplQW5kVXBkYXRlU2V0dGluZ3MkPVdTKCgoKT0+e2NvbnN0IHQ9dGhpcy5hY3Rpb25zJC5waXBlKCRTKFpSKSwkdCgoKCk9PnRoaXMuZGF0YVNvdXJjZS5nZXRTZXR0aW5ncygpKSksV2UoKHQ9Pnt0aGlzLnN0b3JlLmRpc3BhdGNoKHFSKHtwYXJ0aWFsU2V0dGluZ3M6dH0pKX0pKSxQZSgwKSwkdCgoKCk9PnBlKC4uLnRoaXMuY29uZmlnTW9kdWxlLmdldEdsb2JhbFNldHRpbmdTZWxlY3RvcnMoKS5tYXAoKHQ9PnRoaXMuc3RvcmUuc2VsZWN0KHQpLnBpcGUod2UoKCh0LGUpPT57Y29uc3Qgbj1PYmplY3QudmFsdWVzKHQpLG89T2JqZWN0LnZhbHVlcyhlKTtyZXR1cm4gbi5sZW5ndGg9PT1vLmxlbmd0aCYmbi5ldmVyeSgoKHQsZSk9PnQ9PT1vW2VdKSl9KSksTGUoMSkpKSkpKSksSWUoKSk7cmV0dXJuIHQucGlwZSgoZnVuY3Rpb24gZSh0KXtyZXR1cm4geigoZnVuY3Rpb24oZSxuKXt2YXIgbz1bXTtyZXR1cm4gZS5zdWJzY3JpYmUobmV3IEgobiwoZnVuY3Rpb24odCl7cmV0dXJuIG8ucHVzaCh0KX0pLChmdW5jdGlvbigpe24ubmV4dChvKSxuLmNvbXBsZXRlKCl9KSkpLHQuc3Vic2NyaWJlKG5ldyBIKG4sKGZ1bmN0aW9uKCl7dmFyIHQ9bztvPVtdLG4ubmV4dCh0KX0pLE0pKSxmdW5jdGlvbigpe289bnVsbH19KSl9KSh0LnBpcGUoQ2UoNTAwKSkpLCR0KCh0PT57Y29uc3QgZT17fTtmb3IoY29uc3QgbiBvZiB0KU9iamVjdC5hc3NpZ24oZSxuKTtyZXR1cm4gdGhpcy5kYXRhU291cmNlLnNldFNldHRpbmdzKGUpfSkpKX0pLHtkaXNwYXRjaDohMX0pfW5ncnhPbkluaXRFZmZlY3RzKCl7cmV0dXJuIFpSKCl9fVhSLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxYUikoVHIoUVMpLFRyKGlTKSxUcih6UiksVHIoalIpKX0sWFIuybVwcm92PVNuKHt0b2tlbjpYUixmYWN0b3J5OlhSLsm1ZmFjfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihYUixbe3R5cGU6VW19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6UVN9LHt0eXBlOmlTfSx7dHlwZTp6Un0se3R5cGU6alJ9XX0pLG51bGwpO2NsYXNzIEtSe31LUi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8S1IpfSxLUi7JtW1vZD1mbyh7dHlwZTpLUn0pLEtSLsm1aW5qPURuKHtwcm92aWRlcnM6W3pSXSxpbXBvcnRzOltbaEQuZm9yRmVhdHVyZShbWFJdKSxZUl1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihLUixbe3R5cGU6TF8sYXJnczpbe2ltcG9ydHM6W2hELmZvckZlYXR1cmUoW1hSXSksWVJdLHByb3ZpZGVyczpbelJdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8oS1Ise2ltcG9ydHM6W2dELFlSXX0pOwovKioKICAgICAqIEBsaWNlbnNlIEFuZ3VsYXIgdjEyLjIuMQogICAgICogKGMpIDIwMTAtMjAyMSBHb29nbGUgTExDLiBodHRwczovL2FuZ3VsYXIuaW8vCiAgICAgKiBMaWNlbnNlOiBNSVQKICAgICAqLwpjbGFzcyBKUnt9Y2xhc3MgUVJ7fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyAkUntjb25zdHJ1Y3Rvcih0KXt0aGlzLm5vcm1hbGl6ZWROYW1lcz1uZXcgTWFwLHRoaXMubGF6eVVwZGF0ZT1udWxsLHQ/dGhpcy5sYXp5SW5pdD0ic3RyaW5nIj09dHlwZW9mIHQ/KCk9Pnt0aGlzLmhlYWRlcnM9bmV3IE1hcCx0LnNwbGl0KCJcbiIpLmZvckVhY2goKHQ9Pntjb25zdCBlPXQuaW5kZXhPZigiOiIpO2lmKGU+MCl7Y29uc3Qgbj10LnNsaWNlKDAsZSksbz1uLnRvTG93ZXJDYXNlKCksaT10LnNsaWNlKGUrMSkudHJpbSgpO3RoaXMubWF5YmVTZXROb3JtYWxpemVkTmFtZShuLG8pLHRoaXMuaGVhZGVycy5oYXMobyk/dGhpcy5oZWFkZXJzLmdldChvKS5wdXNoKGkpOnRoaXMuaGVhZGVycy5zZXQobyxbaV0pfX0pKX06KCk9Pnt0aGlzLmhlYWRlcnM9bmV3IE1hcCxPYmplY3Qua2V5cyh0KS5mb3JFYWNoKChlPT57bGV0IG49dFtlXTtjb25zdCBvPWUudG9Mb3dlckNhc2UoKTsic3RyaW5nIj09dHlwZW9mIG4mJihuPVtuXSksbi5sZW5ndGg+MCYmKHRoaXMuaGVhZGVycy5zZXQobyxuKSx0aGlzLm1heWJlU2V0Tm9ybWFsaXplZE5hbWUoZSxvKSl9KSl9OnRoaXMuaGVhZGVycz1uZXcgTWFwfWhhcyh0KXtyZXR1cm4gdGhpcy5pbml0KCksdGhpcy5oZWFkZXJzLmhhcyh0LnRvTG93ZXJDYXNlKCkpfWdldCh0KXt0aGlzLmluaXQoKTtjb25zdCBlPXRoaXMuaGVhZGVycy5nZXQodC50b0xvd2VyQ2FzZSgpKTtyZXR1cm4gZSYmZS5sZW5ndGg+MD9lWzBdOm51bGx9a2V5cygpe3JldHVybiB0aGlzLmluaXQoKSxBcnJheS5mcm9tKHRoaXMubm9ybWFsaXplZE5hbWVzLnZhbHVlcygpKX1nZXRBbGwodCl7cmV0dXJuIHRoaXMuaW5pdCgpLHRoaXMuaGVhZGVycy5nZXQodC50b0xvd2VyQ2FzZSgpKXx8bnVsbH1hcHBlbmQodCxlKXtyZXR1cm4gdGhpcy5jbG9uZSh7bmFtZTp0LHZhbHVlOmUsb3A6ImEifSl9c2V0KHQsZSl7cmV0dXJuIHRoaXMuY2xvbmUoe25hbWU6dCx2YWx1ZTplLG9wOiJzIn0pfWRlbGV0ZSh0LGUpe3JldHVybiB0aGlzLmNsb25lKHtuYW1lOnQsdmFsdWU6ZSxvcDoiZCJ9KX1tYXliZVNldE5vcm1hbGl6ZWROYW1lKHQsZSl7dGhpcy5ub3JtYWxpemVkTmFtZXMuaGFzKGUpfHx0aGlzLm5vcm1hbGl6ZWROYW1lcy5zZXQoZSx0KX1pbml0KCl7dGhpcy5sYXp5SW5pdCYmKHRoaXMubGF6eUluaXQgaW5zdGFuY2VvZiAkUj90aGlzLmNvcHlGcm9tKHRoaXMubGF6eUluaXQpOnRoaXMubGF6eUluaXQoKSx0aGlzLmxhenlJbml0PW51bGwsdGhpcy5sYXp5VXBkYXRlJiYodGhpcy5sYXp5VXBkYXRlLmZvckVhY2goKHQ9PnRoaXMuYXBwbHlVcGRhdGUodCkpKSx0aGlzLmxhenlVcGRhdGU9bnVsbCkpfWNvcHlGcm9tKHQpe3QuaW5pdCgpLEFycmF5LmZyb20odC5oZWFkZXJzLmtleXMoKSkuZm9yRWFjaCgoZT0+e3RoaXMuaGVhZGVycy5zZXQoZSx0LmhlYWRlcnMuZ2V0KGUpKSx0aGlzLm5vcm1hbGl6ZWROYW1lcy5zZXQoZSx0Lm5vcm1hbGl6ZWROYW1lcy5nZXQoZSkpfSkpfWNsb25lKHQpe2NvbnN0IGU9bmV3ICRSO3JldHVybiBlLmxhenlJbml0PXRoaXMubGF6eUluaXQmJnRoaXMubGF6eUluaXQgaW5zdGFuY2VvZiAkUj90aGlzLmxhenlJbml0OnRoaXMsZS5sYXp5VXBkYXRlPSh0aGlzLmxhenlVcGRhdGV8fFtdKS5jb25jYXQoW3RdKSxlfWFwcGx5VXBkYXRlKHQpe2NvbnN0IGU9dC5uYW1lLnRvTG93ZXJDYXNlKCk7c3dpdGNoKHQub3Ape2Nhc2UiYSI6Y2FzZSJzIjpsZXQgbj10LnZhbHVlO2lmKCJzdHJpbmciPT10eXBlb2YgbiYmKG49W25dKSwwPT09bi5sZW5ndGgpcmV0dXJuO3RoaXMubWF5YmVTZXROb3JtYWxpemVkTmFtZSh0Lm5hbWUsZSk7Y29uc3Qgbz0oImEiPT09dC5vcD90aGlzLmhlYWRlcnMuZ2V0KGUpOnZvaWQgMCl8fFtdO28ucHVzaCguLi5uKSx0aGlzLmhlYWRlcnMuc2V0KGUsbyk7YnJlYWs7Y2FzZSJkIjpjb25zdCBpPXQudmFsdWU7aWYoaSl7bGV0IHQ9dGhpcy5oZWFkZXJzLmdldChlKTtpZighdClyZXR1cm47dD10LmZpbHRlcigodD0+LTE9PT1pLmluZGV4T2YodCkpKSwwPT09dC5sZW5ndGg/KHRoaXMuaGVhZGVycy5kZWxldGUoZSksdGhpcy5ub3JtYWxpemVkTmFtZXMuZGVsZXRlKGUpKTp0aGlzLmhlYWRlcnMuc2V0KGUsdCl9ZWxzZSB0aGlzLmhlYWRlcnMuZGVsZXRlKGUpLHRoaXMubm9ybWFsaXplZE5hbWVzLmRlbGV0ZShlKX19Zm9yRWFjaCh0KXt0aGlzLmluaXQoKSxBcnJheS5mcm9tKHRoaXMubm9ybWFsaXplZE5hbWVzLmtleXMoKSkuZm9yRWFjaCgoZT0+dCh0aGlzLm5vcm1hbGl6ZWROYW1lcy5nZXQoZSksdGhpcy5oZWFkZXJzLmdldChlKSkpKX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIHRFe2VuY29kZUtleSh0KXtyZXR1cm4gZUUodCl9ZW5jb2RlVmFsdWUodCl7cmV0dXJuIGVFKHQpfWRlY29kZUtleSh0KXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHQpfWRlY29kZVZhbHVlKHQpe3JldHVybiBkZWNvZGVVUklDb21wb25lbnQodCl9fWZ1bmN0aW9uIGVFKHQpe3JldHVybiBlbmNvZGVVUklDb21wb25lbnQodCkucmVwbGFjZSgvJTQwL2dpLCJAIikucmVwbGFjZSgvJTNBL2dpLCI6IikucmVwbGFjZSgvJTI0L2dpLCIkIikucmVwbGFjZSgvJTJDL2dpLCIsIikucmVwbGFjZSgvJTNCL2dpLCI7IikucmVwbGFjZSgvJTJCL2dpLCIrIikucmVwbGFjZSgvJTNEL2dpLCI9IikucmVwbGFjZSgvJTNGL2dpLCI/IikucmVwbGFjZSgvJTJGL2dpLCIvIil9ZnVuY3Rpb24gbkUodCl7cmV0dXJuYCR7dH1gfWNsYXNzIG9Fe2NvbnN0cnVjdG9yKHQ9e30pe2lmKHRoaXMudXBkYXRlcz1udWxsLHRoaXMuY2xvbmVGcm9tPW51bGwsdGhpcy5lbmNvZGVyPXQuZW5jb2Rlcnx8bmV3IHRFLHQuZnJvbVN0cmluZyl7aWYodC5mcm9tT2JqZWN0KXRocm93IG5ldyBFcnJvcigiQ2Fubm90IHNwZWNpZnkgYm90aCBmcm9tU3RyaW5nIGFuZCBmcm9tT2JqZWN0LiIpO3RoaXMubWFwPShmdW5jdGlvbiBlKHQsbil7Y29uc3Qgbz1uZXcgTWFwO3QubGVuZ3RoPjAmJnQucmVwbGFjZSgvXlw/LywiIikuc3BsaXQoIiYiKS5mb3JFYWNoKCh0PT57Y29uc3QgZT10LmluZGV4T2YoIj0iKSxbaSxhXT0tMT09ZT9bbi5kZWNvZGVLZXkodCksIiJdOltuLmRlY29kZUtleSh0LnNsaWNlKDAsZSkpLG4uZGVjb2RlVmFsdWUodC5zbGljZShlKzEpKV0scj1vLmdldChpKXx8W107ci5wdXNoKGEpLG8uc2V0KGkscil9KSk7cmV0dXJuIG99KSh0LmZyb21TdHJpbmcsdGhpcy5lbmNvZGVyKX1lbHNlIHQuZnJvbU9iamVjdD8odGhpcy5tYXA9bmV3IE1hcCxPYmplY3Qua2V5cyh0LmZyb21PYmplY3QpLmZvckVhY2goKGU9Pntjb25zdCBuPXQuZnJvbU9iamVjdFtlXTt0aGlzLm1hcC5zZXQoZSxBcnJheS5pc0FycmF5KG4pP246W25dKX0pKSk6dGhpcy5tYXA9bnVsbH1oYXModCl7cmV0dXJuIHRoaXMuaW5pdCgpLHRoaXMubWFwLmhhcyh0KX1nZXQodCl7dGhpcy5pbml0KCk7Y29uc3QgZT10aGlzLm1hcC5nZXQodCk7cmV0dXJuIGU/ZVswXTpudWxsfWdldEFsbCh0KXtyZXR1cm4gdGhpcy5pbml0KCksdGhpcy5tYXAuZ2V0KHQpfHxudWxsfWtleXMoKXtyZXR1cm4gdGhpcy5pbml0KCksQXJyYXkuZnJvbSh0aGlzLm1hcC5rZXlzKCkpfWFwcGVuZCh0LGUpe3JldHVybiB0aGlzLmNsb25lKHtwYXJhbTp0LHZhbHVlOmUsb3A6ImEifSl9YXBwZW5kQWxsKHQpe2NvbnN0IGU9W107cmV0dXJuIE9iamVjdC5rZXlzKHQpLmZvckVhY2goKG49Pntjb25zdCBvPXRbbl07QXJyYXkuaXNBcnJheShvKT9vLmZvckVhY2goKHQ9PntlLnB1c2goe3BhcmFtOm4sdmFsdWU6dCxvcDoiYSJ9KX0pKTplLnB1c2goe3BhcmFtOm4sdmFsdWU6byxvcDoiYSJ9KX0pKSx0aGlzLmNsb25lKGUpfXNldCh0LGUpe3JldHVybiB0aGlzLmNsb25lKHtwYXJhbTp0LHZhbHVlOmUsb3A6InMifSl9ZGVsZXRlKHQsZSl7cmV0dXJuIHRoaXMuY2xvbmUoe3BhcmFtOnQsdmFsdWU6ZSxvcDoiZCJ9KX10b1N0cmluZygpe3JldHVybiB0aGlzLmluaXQoKSx0aGlzLmtleXMoKS5tYXAoKHQ9Pntjb25zdCBlPXRoaXMuZW5jb2Rlci5lbmNvZGVLZXkodCk7cmV0dXJuIHRoaXMubWFwLmdldCh0KS5tYXAoKHQ9PmUrIj0iK3RoaXMuZW5jb2Rlci5lbmNvZGVWYWx1ZSh0KSkpLmpvaW4oIiYiKX0pKS5maWx0ZXIoKHQ9PiIiIT09dCkpLmpvaW4oIiYiKX1jbG9uZSh0KXtjb25zdCBlPW5ldyBvRSh7ZW5jb2Rlcjp0aGlzLmVuY29kZXJ9KTtyZXR1cm4gZS5jbG9uZUZyb209dGhpcy5jbG9uZUZyb218fHRoaXMsZS51cGRhdGVzPSh0aGlzLnVwZGF0ZXN8fFtdKS5jb25jYXQodCksZX1pbml0KCl7bnVsbD09PXRoaXMubWFwJiYodGhpcy5tYXA9bmV3IE1hcCksbnVsbCE9PXRoaXMuY2xvbmVGcm9tJiYodGhpcy5jbG9uZUZyb20uaW5pdCgpLHRoaXMuY2xvbmVGcm9tLmtleXMoKS5mb3JFYWNoKCh0PT50aGlzLm1hcC5zZXQodCx0aGlzLmNsb25lRnJvbS5tYXAuZ2V0KHQpKSkpLHRoaXMudXBkYXRlcy5mb3JFYWNoKCh0PT57c3dpdGNoKHQub3Ape2Nhc2UiYSI6Y2FzZSJzIjpjb25zdCBlPSgiYSI9PT10Lm9wP3RoaXMubWFwLmdldCh0LnBhcmFtKTp2b2lkIDApfHxbXTtlLnB1c2gobkUodC52YWx1ZSkpLHRoaXMubWFwLnNldCh0LnBhcmFtLGUpO2JyZWFrO2Nhc2UiZCI6aWYodm9pZCAwPT09dC52YWx1ZSl7dGhpcy5tYXAuZGVsZXRlKHQucGFyYW0pO2JyZWFrfXtsZXQgZT10aGlzLm1hcC5nZXQodC5wYXJhbSl8fFtdO2NvbnN0IG49ZS5pbmRleE9mKG5FKHQudmFsdWUpKTstMSE9PW4mJmUuc3BsaWNlKG4sMSksZS5sZW5ndGg+MD90aGlzLm1hcC5zZXQodC5wYXJhbSxlKTp0aGlzLm1hcC5kZWxldGUodC5wYXJhbSl9fX0pKSx0aGlzLmNsb25lRnJvbT10aGlzLnVwZGF0ZXM9bnVsbCl9fWNsYXNzIGlFe2NvbnN0cnVjdG9yKCl7dGhpcy5tYXA9bmV3IE1hcH1zZXQodCxlKXtyZXR1cm4gdGhpcy5tYXAuc2V0KHQsZSksdGhpc31nZXQodCl7cmV0dXJuIHRoaXMubWFwLmhhcyh0KXx8dGhpcy5tYXAuc2V0KHQsdC5kZWZhdWx0VmFsdWUoKSksdGhpcy5tYXAuZ2V0KHQpfWRlbGV0ZSh0KXtyZXR1cm4gdGhpcy5tYXAuZGVsZXRlKHQpLHRoaXN9a2V5cygpe3JldHVybiB0aGlzLm1hcC5rZXlzKCl9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBhRSh0KXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIEFycmF5QnVmZmVyJiZ0IGluc3RhbmNlb2YgQXJyYXlCdWZmZXJ9ZnVuY3Rpb24gckUodCl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBCbG9iJiZ0IGluc3RhbmNlb2YgQmxvYn1mdW5jdGlvbiBzRSh0KXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIEZvcm1EYXRhJiZ0IGluc3RhbmNlb2YgRm9ybURhdGF9Y2xhc3MgbEV7Y29uc3RydWN0b3IodCxlLG4sbyl7bGV0IGk7aWYodGhpcy51cmw9ZSx0aGlzLmJvZHk9bnVsbCx0aGlzLnJlcG9ydFByb2dyZXNzPSExLHRoaXMud2l0aENyZWRlbnRpYWxzPSExLHRoaXMucmVzcG9uc2VUeXBlPSJqc29uIix0aGlzLm1ldGhvZD10LnRvVXBwZXJDYXNlKCksKGZ1bmN0aW9uIGEodCl7c3dpdGNoKHQpe2Nhc2UiREVMRVRFIjpjYXNlIkdFVCI6Y2FzZSJIRUFEIjpjYXNlIk9QVElPTlMiOmNhc2UiSlNPTlAiOnJldHVybiExO2RlZmF1bHQ6cmV0dXJuITB9fSkodGhpcy5tZXRob2QpfHxvPyh0aGlzLmJvZHk9dm9pZCAwIT09bj9uOm51bGwsaT1vKTppPW4saSYmKHRoaXMucmVwb3J0UHJvZ3Jlc3M9ISFpLnJlcG9ydFByb2dyZXNzLHRoaXMud2l0aENyZWRlbnRpYWxzPSEhaS53aXRoQ3JlZGVudGlhbHMsaS5yZXNwb25zZVR5cGUmJih0aGlzLnJlc3BvbnNlVHlwZT1pLnJlc3BvbnNlVHlwZSksaS5oZWFkZXJzJiYodGhpcy5oZWFkZXJzPWkuaGVhZGVycyksaS5jb250ZXh0JiYodGhpcy5jb250ZXh0PWkuY29udGV4dCksaS5wYXJhbXMmJih0aGlzLnBhcmFtcz1pLnBhcmFtcykpLHRoaXMuaGVhZGVyc3x8KHRoaXMuaGVhZGVycz1uZXcgJFIpLHRoaXMuY29udGV4dHx8KHRoaXMuY29udGV4dD1uZXcgaUUpLHRoaXMucGFyYW1zKXtjb25zdCB0PXRoaXMucGFyYW1zLnRvU3RyaW5nKCk7aWYoMD09PXQubGVuZ3RoKXRoaXMudXJsV2l0aFBhcmFtcz1lO2Vsc2V7Y29uc3Qgbj1lLmluZGV4T2YoIj8iKTt0aGlzLnVybFdpdGhQYXJhbXM9ZSsoLTE9PT1uPyI/IjpuPGUubGVuZ3RoLTE/IiYiOiIiKSt0fX1lbHNlIHRoaXMucGFyYW1zPW5ldyBvRSx0aGlzLnVybFdpdGhQYXJhbXM9ZX1zZXJpYWxpemVCb2R5KCl7cmV0dXJuIG51bGw9PT10aGlzLmJvZHk/bnVsbDphRSh0aGlzLmJvZHkpfHxyRSh0aGlzLmJvZHkpfHxzRSh0aGlzLmJvZHkpfHwoZnVuY3Rpb24gdChlKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIFVSTFNlYXJjaFBhcmFtcyYmZSBpbnN0YW5jZW9mIFVSTFNlYXJjaFBhcmFtc30pKHRoaXMuYm9keSl8fCJzdHJpbmciPT10eXBlb2YgdGhpcy5ib2R5P3RoaXMuYm9keTp0aGlzLmJvZHkgaW5zdGFuY2VvZiBvRT90aGlzLmJvZHkudG9TdHJpbmcoKToib2JqZWN0Ij09dHlwZW9mIHRoaXMuYm9keXx8ImJvb2xlYW4iPT10eXBlb2YgdGhpcy5ib2R5fHxBcnJheS5pc0FycmF5KHRoaXMuYm9keSk/SlNPTi5zdHJpbmdpZnkodGhpcy5ib2R5KTp0aGlzLmJvZHkudG9TdHJpbmcoKX1kZXRlY3RDb250ZW50VHlwZUhlYWRlcigpe3JldHVybiBudWxsPT09dGhpcy5ib2R5fHxzRSh0aGlzLmJvZHkpP251bGw6ckUodGhpcy5ib2R5KT90aGlzLmJvZHkudHlwZXx8bnVsbDphRSh0aGlzLmJvZHkpP251bGw6InN0cmluZyI9PXR5cGVvZiB0aGlzLmJvZHk/InRleHQvcGxhaW4iOnRoaXMuYm9keSBpbnN0YW5jZW9mIG9FPyJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD1VVEYtOCI6Im9iamVjdCI9PXR5cGVvZiB0aGlzLmJvZHl8fCJudW1iZXIiPT10eXBlb2YgdGhpcy5ib2R5fHwiYm9vbGVhbiI9PXR5cGVvZiB0aGlzLmJvZHk/ImFwcGxpY2F0aW9uL2pzb24iOm51bGx9Y2xvbmUodD17fSl7dmFyIGU7Y29uc3Qgbj10Lm1ldGhvZHx8dGhpcy5tZXRob2Qsbz10LnVybHx8dGhpcy51cmwsaT10LnJlc3BvbnNlVHlwZXx8dGhpcy5yZXNwb25zZVR5cGUsYT12b2lkIDAhPT10LmJvZHk/dC5ib2R5OnRoaXMuYm9keSxyPXZvaWQgMCE9PXQud2l0aENyZWRlbnRpYWxzP3Qud2l0aENyZWRlbnRpYWxzOnRoaXMud2l0aENyZWRlbnRpYWxzLHM9dm9pZCAwIT09dC5yZXBvcnRQcm9ncmVzcz90LnJlcG9ydFByb2dyZXNzOnRoaXMucmVwb3J0UHJvZ3Jlc3M7bGV0IGw9dC5oZWFkZXJzfHx0aGlzLmhlYWRlcnMsYz10LnBhcmFtc3x8dGhpcy5wYXJhbXM7Y29uc3QgZD1udWxsIT09KGU9dC5jb250ZXh0KSYmdm9pZCAwIT09ZT9lOnRoaXMuY29udGV4dDtyZXR1cm4gdm9pZCAwIT09dC5zZXRIZWFkZXJzJiYobD1PYmplY3Qua2V5cyh0LnNldEhlYWRlcnMpLnJlZHVjZSgoKGUsbik9PmUuc2V0KG4sdC5zZXRIZWFkZXJzW25dKSksbCkpLHQuc2V0UGFyYW1zJiYoYz1PYmplY3Qua2V5cyh0LnNldFBhcmFtcykucmVkdWNlKCgoZSxuKT0+ZS5zZXQobix0LnNldFBhcmFtc1tuXSkpLGMpKSxuZXcgbEUobixvLGEse3BhcmFtczpjLGhlYWRlcnM6bCxjb250ZXh0OmQscmVwb3J0UHJvZ3Jlc3M6cyxyZXNwb25zZVR5cGU6aSx3aXRoQ3JlZGVudGlhbHM6cn0pfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovdmFyIGNFOyEoZnVuY3Rpb24odCl7dFt0LlNlbnQ9MF09IlNlbnQiLHRbdC5VcGxvYWRQcm9ncmVzcz0xXT0iVXBsb2FkUHJvZ3Jlc3MiLHRbdC5SZXNwb25zZUhlYWRlcj0yXT0iUmVzcG9uc2VIZWFkZXIiLHRbdC5Eb3dubG9hZFByb2dyZXNzPTNdPSJEb3dubG9hZFByb2dyZXNzIix0W3QuUmVzcG9uc2U9NF09IlJlc3BvbnNlIix0W3QuVXNlcj01XT0iVXNlciJ9KShjRXx8KGNFPXt9KSk7Y2xhc3MgZEV7Y29uc3RydWN0b3IodCxlPTIwMCxuPSJPSyIpe3RoaXMuaGVhZGVycz10LmhlYWRlcnN8fG5ldyAkUix0aGlzLnN0YXR1cz12b2lkIDAhPT10LnN0YXR1cz90LnN0YXR1czplLHRoaXMuc3RhdHVzVGV4dD10LnN0YXR1c1RleHR8fG4sdGhpcy51cmw9dC51cmx8fG51bGwsdGhpcy5vaz10aGlzLnN0YXR1cz49MjAwJiZ0aGlzLnN0YXR1czwzMDB9fWNsYXNzIHBFIGV4dGVuZHMgZEV7Y29uc3RydWN0b3IodD17fSl7c3VwZXIodCksdGhpcy50eXBlPWNFLlJlc3BvbnNlSGVhZGVyfWNsb25lKHQ9e30pe3JldHVybiBuZXcgcEUoe2hlYWRlcnM6dC5oZWFkZXJzfHx0aGlzLmhlYWRlcnMsc3RhdHVzOnZvaWQgMCE9PXQuc3RhdHVzP3Quc3RhdHVzOnRoaXMuc3RhdHVzLHN0YXR1c1RleHQ6dC5zdGF0dXNUZXh0fHx0aGlzLnN0YXR1c1RleHQsdXJsOnQudXJsfHx0aGlzLnVybHx8dm9pZCAwfSl9fWNsYXNzIG1FIGV4dGVuZHMgZEV7Y29uc3RydWN0b3IodD17fSl7c3VwZXIodCksdGhpcy50eXBlPWNFLlJlc3BvbnNlLHRoaXMuYm9keT12b2lkIDAhPT10LmJvZHk/dC5ib2R5Om51bGx9Y2xvbmUodD17fSl7cmV0dXJuIG5ldyBtRSh7Ym9keTp2b2lkIDAhPT10LmJvZHk/dC5ib2R5OnRoaXMuYm9keSxoZWFkZXJzOnQuaGVhZGVyc3x8dGhpcy5oZWFkZXJzLHN0YXR1czp2b2lkIDAhPT10LnN0YXR1cz90LnN0YXR1czp0aGlzLnN0YXR1cyxzdGF0dXNUZXh0OnQuc3RhdHVzVGV4dHx8dGhpcy5zdGF0dXNUZXh0LHVybDp0LnVybHx8dGhpcy51cmx8fHZvaWQgMH0pfX1jbGFzcyBmRSBleHRlbmRzIGRFe2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQsMCwiVW5rbm93biBFcnJvciIpLHRoaXMubmFtZT0iSHR0cEVycm9yUmVzcG9uc2UiLHRoaXMub2s9ITEsdGhpcy5tZXNzYWdlPXRoaXMuc3RhdHVzPj0yMDAmJnRoaXMuc3RhdHVzPDMwMD9gSHR0cCBmYWlsdXJlIGR1cmluZyBwYXJzaW5nIGZvciAke3QudXJsfHwiKHVua25vd24gdXJsKSJ9YDpgSHR0cCBmYWlsdXJlIHJlc3BvbnNlIGZvciAke3QudXJsfHwiKHVua25vd24gdXJsKSJ9OiAke3Quc3RhdHVzfSAke3Quc3RhdHVzVGV4dH1gLHRoaXMuZXJyb3I9dC5lcnJvcnx8bnVsbH19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIHVFKHQsZSl7cmV0dXJue2JvZHk6ZSxoZWFkZXJzOnQuaGVhZGVycyxjb250ZXh0OnQuY29udGV4dCxvYnNlcnZlOnQub2JzZXJ2ZSxwYXJhbXM6dC5wYXJhbXMscmVwb3J0UHJvZ3Jlc3M6dC5yZXBvcnRQcm9ncmVzcyxyZXNwb25zZVR5cGU6dC5yZXNwb25zZVR5cGUsd2l0aENyZWRlbnRpYWxzOnQud2l0aENyZWRlbnRpYWxzfX1jbGFzcyBnRXtjb25zdHJ1Y3Rvcih0KXt0aGlzLmhhbmRsZXI9dH1yZXF1ZXN0KHQsZSxuPXt9KXtsZXQgbztpZih0IGluc3RhbmNlb2YgbEUpbz10O2Vsc2V7bGV0IGksYTtpPW4uaGVhZGVycyBpbnN0YW5jZW9mICRSP24uaGVhZGVyczpuZXcgJFIobi5oZWFkZXJzKSxuLnBhcmFtcyYmKGE9bi5wYXJhbXMgaW5zdGFuY2VvZiBvRT9uLnBhcmFtczpuZXcgb0Uoe2Zyb21PYmplY3Q6bi5wYXJhbXN9KSksbz1uZXcgbEUodCxlLHZvaWQgMCE9PW4uYm9keT9uLmJvZHk6bnVsbCx7aGVhZGVyczppLGNvbnRleHQ6bi5jb250ZXh0LHBhcmFtczphLHJlcG9ydFByb2dyZXNzOm4ucmVwb3J0UHJvZ3Jlc3MscmVzcG9uc2VUeXBlOm4ucmVzcG9uc2VUeXBlfHwianNvbiIsd2l0aENyZWRlbnRpYWxzOm4ud2l0aENyZWRlbnRpYWxzfSl9Y29uc3QgaT16dChvKS5waXBlKChmdW5jdGlvbiBhKHQsZSl7cmV0dXJuIGQoZSk/JHQodCxlLDEpOiR0KHQsMSl9KSgodD0+dGhpcy5oYW5kbGVyLmhhbmRsZSh0KSkpKTtpZih0IGluc3RhbmNlb2YgbEV8fCJldmVudHMiPT09bi5vYnNlcnZlKXJldHVybiBpO2NvbnN0IHI9aS5waXBlKHVlKCh0PT50IGluc3RhbmNlb2YgbUUpKSk7c3dpdGNoKG4ub2JzZXJ2ZXx8ImJvZHkiKXtjYXNlImJvZHkiOnN3aXRjaChvLnJlc3BvbnNlVHlwZSl7Y2FzZSJhcnJheWJ1ZmZlciI6cmV0dXJuIHIucGlwZShWdCgodD0+e2lmKG51bGwhPT10LmJvZHkmJiEodC5ib2R5IGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpKXRocm93IG5ldyBFcnJvcigiUmVzcG9uc2UgaXMgbm90IGFuIEFycmF5QnVmZmVyLiIpO3JldHVybiB0LmJvZHl9KSkpO2Nhc2UiYmxvYiI6cmV0dXJuIHIucGlwZShWdCgodD0+e2lmKG51bGwhPT10LmJvZHkmJiEodC5ib2R5IGluc3RhbmNlb2YgQmxvYikpdGhyb3cgbmV3IEVycm9yKCJSZXNwb25zZSBpcyBub3QgYSBCbG9iLiIpO3JldHVybiB0LmJvZHl9KSkpO2Nhc2UidGV4dCI6cmV0dXJuIHIucGlwZShWdCgodD0+e2lmKG51bGwhPT10LmJvZHkmJiJzdHJpbmciIT10eXBlb2YgdC5ib2R5KXRocm93IG5ldyBFcnJvcigiUmVzcG9uc2UgaXMgbm90IGEgc3RyaW5nLiIpO3JldHVybiB0LmJvZHl9KSkpO2Nhc2UianNvbiI6ZGVmYXVsdDpyZXR1cm4gci5waXBlKFZ0KCh0PT50LmJvZHkpKSl9Y2FzZSJyZXNwb25zZSI6cmV0dXJuIHI7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYFVucmVhY2hhYmxlOiB1bmhhbmRsZWQgb2JzZXJ2ZSB0eXBlICR7bi5vYnNlcnZlfX1gKX19ZGVsZXRlKHQsZT17fSl7cmV0dXJuIHRoaXMucmVxdWVzdCgiREVMRVRFIix0LGUpfWdldCh0LGU9e30pe3JldHVybiB0aGlzLnJlcXVlc3QoIkdFVCIsdCxlKX1oZWFkKHQsZT17fSl7cmV0dXJuIHRoaXMucmVxdWVzdCgiSEVBRCIsdCxlKX1qc29ucCh0LGUpe3JldHVybiB0aGlzLnJlcXVlc3QoIkpTT05QIix0LHtwYXJhbXM6KG5ldyBvRSkuYXBwZW5kKGUsIkpTT05QX0NBTExCQUNLIiksb2JzZXJ2ZToiYm9keSIscmVzcG9uc2VUeXBlOiJqc29uIn0pfW9wdGlvbnModCxlPXt9KXtyZXR1cm4gdGhpcy5yZXF1ZXN0KCJPUFRJT05TIix0LGUpfXBhdGNoKHQsZSxuPXt9KXtyZXR1cm4gdGhpcy5yZXF1ZXN0KCJQQVRDSCIsdCx1RShuLGUpKX1wb3N0KHQsZSxuPXt9KXtyZXR1cm4gdGhpcy5yZXF1ZXN0KCJQT1NUIix0LHVFKG4sZSkpfXB1dCh0LGUsbj17fSl7cmV0dXJuIHRoaXMucmVxdWVzdCgiUFVUIix0LHVFKG4sZSkpfX1nRS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8Z0UpKFRyKEpSKSl9LGdFLsm1cHJvdj1Tbih7dG9rZW46Z0UsZmFjdG9yeTpnRS7JtWZhY30pLGdFLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6SlJ9XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGdFLFt7dHlwZTpVbX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpKUn1dfSksbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBoRXtjb25zdHJ1Y3Rvcih0LGUpe3RoaXMubmV4dD10LHRoaXMuaW50ZXJjZXB0b3I9ZX1oYW5kbGUodCl7cmV0dXJuIHRoaXMuaW50ZXJjZXB0b3IuaW50ZXJjZXB0KHQsdGhpcy5uZXh0KX19Y29uc3QgYkU9bmV3IGVyKCJIVFRQX0lOVEVSQ0VQVE9SUyIpO2NsYXNzIHlFe2ludGVyY2VwdCh0LGUpe3JldHVybiBlLmhhbmRsZSh0KX19eUUuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHlFKX0seUUuybVwcm92PVNuKHt0b2tlbjp5RSxmYWN0b3J5OnlFLsm1ZmFjfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih5RSxbe3R5cGU6VW19XSxudWxsLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KbGV0IF9FPTA7Y2xhc3MgQ0V7fWNsYXNzIE1Fe2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5jYWxsYmFja01hcD10LHRoaXMuZG9jdW1lbnQ9ZSx0aGlzLnJlc29sdmVkUHJvbWlzZT1Qcm9taXNlLnJlc29sdmUoKX1uZXh0Q2FsbGJhY2soKXtyZXR1cm4ibmdfanNvbnBfY2FsbGJhY2tfIitfRSsrfWhhbmRsZSh0KXtpZigiSlNPTlAiIT09dC5tZXRob2QpdGhyb3cgbmV3IEVycm9yKCJKU09OUCByZXF1ZXN0cyBtdXN0IHVzZSBKU09OUCByZXF1ZXN0IG1ldGhvZC4iKTtpZigianNvbiIhPT10LnJlc3BvbnNlVHlwZSl0aHJvdyBuZXcgRXJyb3IoIkpTT05QIHJlcXVlc3RzIG11c3QgdXNlIEpzb24gcmVzcG9uc2UgdHlwZS4iKTtyZXR1cm4gbmV3IFQoKGU9Pntjb25zdCBuPXRoaXMubmV4dENhbGxiYWNrKCksbz10LnVybFdpdGhQYXJhbXMucmVwbGFjZSgvPUpTT05QX0NBTExCQUNLKCZ8JCkvLGA9JHtufSQxYCksaT10aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpO2kuc3JjPW87bGV0IGE9bnVsbCxyPSExLHM9ITE7dGhpcy5jYWxsYmFja01hcFtuXT10PT57ZGVsZXRlIHRoaXMuY2FsbGJhY2tNYXBbbl0sc3x8KGE9dCxyPSEwKX07Y29uc3QgbD0oKT0+e2kucGFyZW50Tm9kZSYmaS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGkpLGRlbGV0ZSB0aGlzLmNhbGxiYWNrTWFwW25dfSxjPXQ9PntzfHx0aGlzLnJlc29sdmVkUHJvbWlzZS50aGVuKCgoKT0+e2woKSxyPyhlLm5leHQobmV3IG1FKHtib2R5OmEsc3RhdHVzOjIwMCxzdGF0dXNUZXh0OiJPSyIsdXJsOm99KSksZS5jb21wbGV0ZSgpKTplLmVycm9yKG5ldyBmRSh7dXJsOm8sc3RhdHVzOjAsc3RhdHVzVGV4dDoiSlNPTlAgRXJyb3IiLGVycm9yOm5ldyBFcnJvcigiSlNPTlAgaW5qZWN0ZWQgc2NyaXB0IGRpZCBub3QgaW52b2tlIGNhbGxiYWNrLiIpfSkpfSkpfSxkPXQ9PntzfHwobCgpLGUuZXJyb3IobmV3IGZFKHtlcnJvcjp0LHN0YXR1czowLHN0YXR1c1RleHQ6IkpTT05QIEVycm9yIix1cmw6b30pKSl9O3JldHVybiBpLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLGMpLGkuYWRkRXZlbnRMaXN0ZW5lcigiZXJyb3IiLGQpLHRoaXMuZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpKSxlLm5leHQoe3R5cGU6Y0UuU2VudH0pLCgpPT57cz0hMCxpLnJlbW92ZUV2ZW50TGlzdGVuZXIoImxvYWQiLGMpLGkucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZXJyb3IiLGQpLGwoKX19KSl9fU1FLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxNRSkoVHIoQ0UpLFRyKHNNKSl9LE1FLsm1cHJvdj1Tbih7dG9rZW46TUUsZmFjdG9yeTpNRS7JtWZhY30pLE1FLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6Q0V9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoTUUsW3t0eXBlOlVtfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkNFfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19XX0pLG51bGwpO2NsYXNzIHZFe2NvbnN0cnVjdG9yKHQpe3RoaXMuanNvbnA9dH1pbnRlcmNlcHQodCxlKXtyZXR1cm4iSlNPTlAiPT09dC5tZXRob2Q/dGhpcy5qc29ucC5oYW5kbGUodCk6ZS5oYW5kbGUodCl9fXZFLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx2RSkoVHIoTUUpKX0sdkUuybVwcm92PVNuKHt0b2tlbjp2RSxmYWN0b3J5OnZFLsm1ZmFjfSksdkUuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpNRX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIodkUsW3t0eXBlOlVtfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOk1FfV19KSxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IHhFPS9eXClcXVx9Jyw/XG4vO2NsYXNzIE9Fe2NvbnN0cnVjdG9yKHQpe3RoaXMueGhyRmFjdG9yeT10fWhhbmRsZSh0KXtpZigiSlNPTlAiPT09dC5tZXRob2QpdGhyb3cgbmV3IEVycm9yKCJBdHRlbXB0ZWQgdG8gY29uc3RydWN0IEpzb25wIHJlcXVlc3Qgd2l0aG91dCBIdHRwQ2xpZW50SnNvbnBNb2R1bGUgaW5zdGFsbGVkLiIpO3JldHVybiBuZXcgVCgoZT0+e2NvbnN0IG49dGhpcy54aHJGYWN0b3J5LmJ1aWxkKCk7aWYobi5vcGVuKHQubWV0aG9kLHQudXJsV2l0aFBhcmFtcyksdC53aXRoQ3JlZGVudGlhbHMmJihuLndpdGhDcmVkZW50aWFscz0hMCksdC5oZWFkZXJzLmZvckVhY2goKCh0LGUpPT5uLnNldFJlcXVlc3RIZWFkZXIodCxlLmpvaW4oIiwiKSkpKSx0LmhlYWRlcnMuaGFzKCJBY2NlcHQiKXx8bi5zZXRSZXF1ZXN0SGVhZGVyKCJBY2NlcHQiLCJhcHBsaWNhdGlvbi9qc29uLCB0ZXh0L3BsYWluLCAqLyoiKSwhdC5oZWFkZXJzLmhhcygiQ29udGVudC1UeXBlIikpe2NvbnN0IGU9dC5kZXRlY3RDb250ZW50VHlwZUhlYWRlcigpO251bGwhPT1lJiZuLnNldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQtVHlwZSIsZSl9aWYodC5yZXNwb25zZVR5cGUpe2NvbnN0IGU9dC5yZXNwb25zZVR5cGUudG9Mb3dlckNhc2UoKTtuLnJlc3BvbnNlVHlwZT0ianNvbiIhPT1lP2U6InRleHQifWNvbnN0IG89dC5zZXJpYWxpemVCb2R5KCk7bGV0IGk9bnVsbDtjb25zdCBhPSgpPT57aWYobnVsbCE9PWkpcmV0dXJuIGk7Y29uc3QgZT0xMjIzPT09bi5zdGF0dXM/MjA0Om4uc3RhdHVzLG89bi5zdGF0dXNUZXh0fHwiT0siLGE9bmV3ICRSKG4uZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkpLHI9KGZ1bmN0aW9uIHModCl7cmV0dXJuInJlc3BvbnNlVVJMImluIHQmJnQucmVzcG9uc2VVUkw/dC5yZXNwb25zZVVSTDovXlgtUmVxdWVzdC1VUkw6L20udGVzdCh0LmdldEFsbFJlc3BvbnNlSGVhZGVycygpKT90LmdldFJlc3BvbnNlSGVhZGVyKCJYLVJlcXVlc3QtVVJMIik6bnVsbH0pKG4pfHx0LnVybDtyZXR1cm4gaT1uZXcgcEUoe2hlYWRlcnM6YSxzdGF0dXM6ZSxzdGF0dXNUZXh0Om8sdXJsOnJ9KSxpfSxyPSgpPT57bGV0e2hlYWRlcnM6byxzdGF0dXM6aSxzdGF0dXNUZXh0OnIsdXJsOnN9PWEoKSxsPW51bGw7MjA0IT09aSYmKGw9dm9pZCAwPT09bi5yZXNwb25zZT9uLnJlc3BvbnNlVGV4dDpuLnJlc3BvbnNlKSwwPT09aSYmKGk9bD8yMDA6MCk7bGV0IGM9aT49MjAwJiZpPDMwMDtpZigianNvbiI9PT10LnJlc3BvbnNlVHlwZSYmInN0cmluZyI9PXR5cGVvZiBsKXtjb25zdCB0PWw7bD1sLnJlcGxhY2UoeEUsIiIpO3RyeXtsPSIiIT09bD9KU09OLnBhcnNlKGwpOm51bGx9Y2F0Y2goZSl7bD10LGMmJihjPSExLGw9e2Vycm9yOmUsdGV4dDpsfSl9fWM/KGUubmV4dChuZXcgbUUoe2JvZHk6bCxoZWFkZXJzOm8sc3RhdHVzOmksc3RhdHVzVGV4dDpyLHVybDpzfHx2b2lkIDB9KSksZS5jb21wbGV0ZSgpKTplLmVycm9yKG5ldyBmRSh7ZXJyb3I6bCxoZWFkZXJzOm8sc3RhdHVzOmksc3RhdHVzVGV4dDpyLHVybDpzfHx2b2lkIDB9KSl9LHM9dD0+e2NvbnN0e3VybDpvfT1hKCksaT1uZXcgZkUoe2Vycm9yOnQsc3RhdHVzOm4uc3RhdHVzfHwwLHN0YXR1c1RleHQ6bi5zdGF0dXNUZXh0fHwiVW5rbm93biBFcnJvciIsdXJsOm98fHZvaWQgMH0pO2UuZXJyb3IoaSl9O2xldCBsPSExO2NvbnN0IGM9bz0+e2x8fChlLm5leHQoYSgpKSxsPSEwKTtsZXQgaT17dHlwZTpjRS5Eb3dubG9hZFByb2dyZXNzLGxvYWRlZDpvLmxvYWRlZH07by5sZW5ndGhDb21wdXRhYmxlJiYoaS50b3RhbD1vLnRvdGFsKSwidGV4dCI9PT10LnJlc3BvbnNlVHlwZSYmbi5yZXNwb25zZVRleHQmJihpLnBhcnRpYWxUZXh0PW4ucmVzcG9uc2VUZXh0KSxlLm5leHQoaSl9LGQ9dD0+e2xldCBuPXt0eXBlOmNFLlVwbG9hZFByb2dyZXNzLGxvYWRlZDp0LmxvYWRlZH07dC5sZW5ndGhDb21wdXRhYmxlJiYobi50b3RhbD10LnRvdGFsKSxlLm5leHQobil9O3JldHVybiBuLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLHIpLG4uYWRkRXZlbnRMaXN0ZW5lcigiZXJyb3IiLHMpLG4uYWRkRXZlbnRMaXN0ZW5lcigidGltZW91dCIscyksbi5hZGRFdmVudExpc3RlbmVyKCJhYm9ydCIscyksdC5yZXBvcnRQcm9ncmVzcyYmKG4uYWRkRXZlbnRMaXN0ZW5lcigicHJvZ3Jlc3MiLGMpLG51bGwhPT1vJiZuLnVwbG9hZCYmbi51cGxvYWQuYWRkRXZlbnRMaXN0ZW5lcigicHJvZ3Jlc3MiLGQpKSxuLnNlbmQobyksZS5uZXh0KHt0eXBlOmNFLlNlbnR9KSwoKT0+e24ucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZXJyb3IiLHMpLG4ucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYWJvcnQiLHMpLG4ucmVtb3ZlRXZlbnRMaXN0ZW5lcigibG9hZCIsciksbi5yZW1vdmVFdmVudExpc3RlbmVyKCJ0aW1lb3V0IixzKSx0LnJlcG9ydFByb2dyZXNzJiYobi5yZW1vdmVFdmVudExpc3RlbmVyKCJwcm9ncmVzcyIsYyksbnVsbCE9PW8mJm4udXBsb2FkJiZuLnVwbG9hZC5yZW1vdmVFdmVudExpc3RlbmVyKCJwcm9ncmVzcyIsZCkpLG4ucmVhZHlTdGF0ZSE9PW4uRE9ORSYmbi5hYm9ydCgpfX0pKX19T0UuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fE9FKShUcihweCkpfSxPRS7JtXByb3Y9U24oe3Rva2VuOk9FLGZhY3Rvcnk6T0UuybVmYWN9KSxPRS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnB4fV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihPRSxbe3R5cGU6VW19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6cHh9XX0pLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgUEU9bmV3IGVyKCJYU1JGX0NPT0tJRV9OQU1FIiksd0U9bmV3IGVyKCJYU1JGX0hFQURFUl9OQU1FIik7Y2xhc3Mga0V7fWNsYXNzIFNFe2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLmRvYz10LHRoaXMucGxhdGZvcm09ZSx0aGlzLmNvb2tpZU5hbWU9bix0aGlzLmxhc3RDb29raWVTdHJpbmc9IiIsdGhpcy5sYXN0VG9rZW49bnVsbCx0aGlzLnBhcnNlQ291bnQ9MH1nZXRUb2tlbigpe2lmKCJzZXJ2ZXIiPT09dGhpcy5wbGF0Zm9ybSlyZXR1cm4gbnVsbDtjb25zdCB0PXRoaXMuZG9jLmNvb2tpZXx8IiI7cmV0dXJuIHQhPT10aGlzLmxhc3RDb29raWVTdHJpbmcmJih0aGlzLnBhcnNlQ291bnQrKyx0aGlzLmxhc3RUb2tlbj1fdih0LHRoaXMuY29va2llTmFtZSksdGhpcy5sYXN0Q29va2llU3RyaW5nPXQpLHRoaXMubGFzdFRva2VufX1TRS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8U0UpKFRyKHNNKSxUcihYXyksVHIoUEUpKX0sU0UuybVwcm92PVNuKHt0b2tlbjpTRSxmYWN0b3J5OlNFLsm1ZmFjfSksU0UuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltYX119XX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W1BFXX1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihTRSxbe3R5cGU6VW19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3NNXX1dfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbWF9dfV19LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltQRV19XX1dfSksbnVsbCk7Y2xhc3MgREV7Y29uc3RydWN0b3IodCxlKXt0aGlzLnRva2VuU2VydmljZT10LHRoaXMuaGVhZGVyTmFtZT1lfWludGVyY2VwdCh0LGUpe2NvbnN0IG49dC51cmwudG9Mb3dlckNhc2UoKTtpZigiR0VUIj09PXQubWV0aG9kfHwiSEVBRCI9PT10Lm1ldGhvZHx8bi5zdGFydHNXaXRoKCJodHRwOi8vIil8fG4uc3RhcnRzV2l0aCgiaHR0cHM6Ly8iKSlyZXR1cm4gZS5oYW5kbGUodCk7Y29uc3Qgbz10aGlzLnRva2VuU2VydmljZS5nZXRUb2tlbigpO3JldHVybiBudWxsPT09b3x8dC5oZWFkZXJzLmhhcyh0aGlzLmhlYWRlck5hbWUpfHwodD10LmNsb25lKHtoZWFkZXJzOnQuaGVhZGVycy5zZXQodGhpcy5oZWFkZXJOYW1lLG8pfSkpLGUuaGFuZGxlKHQpfX1ERS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8REUpKFRyKGtFKSxUcih3RSkpfSxERS7JtXByb3Y9U24oe3Rva2VuOkRFLGZhY3Rvcnk6REUuybVmYWN9KSxERS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOmtFfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbd0VdfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKERFLFt7dHlwZTpVbX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTprRX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3dFXX1dfV19KSxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIFJFe2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5iYWNrZW5kPXQsdGhpcy5pbmplY3Rvcj1lLHRoaXMuY2hhaW49bnVsbH1oYW5kbGUodCl7aWYobnVsbD09PXRoaXMuY2hhaW4pe2NvbnN0IHQ9dGhpcy5pbmplY3Rvci5nZXQoYkUsW10pO3RoaXMuY2hhaW49dC5yZWR1Y2VSaWdodCgoKHQsZSk9Pm5ldyBoRSh0LGUpKSx0aGlzLmJhY2tlbmQpfXJldHVybiB0aGlzLmNoYWluLmhhbmRsZSh0KX19ZnVuY3Rpb24gRUUoKXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIHdpbmRvdz93aW5kb3c6e319UkUuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFJFKShUcihRUiksVHIoTnApKX0sUkUuybVwcm92PVNuKHt0b2tlbjpSRSxmYWN0b3J5OlJFLsm1ZmFjfSksUkUuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpRUn0se3R5cGU6TnB9XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFJFLFt7dHlwZTpVbX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpRUn0se3R5cGU6TnB9XX0pLG51bGwpO2NsYXNzIEFFe3N0YXRpYyBkaXNhYmxlKCl7cmV0dXJue25nTW9kdWxlOkFFLHByb3ZpZGVyczpbe3Byb3ZpZGU6REUsdXNlQ2xhc3M6eUV9XX19c3RhdGljIHdpdGhPcHRpb25zKHQ9e30pe3JldHVybntuZ01vZHVsZTpBRSxwcm92aWRlcnM6W3QuY29va2llTmFtZT97cHJvdmlkZTpQRSx1c2VWYWx1ZTp0LmNvb2tpZU5hbWV9OltdLHQuaGVhZGVyTmFtZT97cHJvdmlkZTp3RSx1c2VWYWx1ZTp0LmhlYWRlck5hbWV9OltdXX19fUFFLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxBRSl9LEFFLsm1bW9kPWZvKHt0eXBlOkFFfSksQUUuybVpbmo9RG4oe3Byb3ZpZGVyczpbREUse3Byb3ZpZGU6YkUsdXNlRXhpc3Rpbmc6REUsbXVsdGk6ITB9LHtwcm92aWRlOmtFLHVzZUNsYXNzOlNFfSx7cHJvdmlkZTpQRSx1c2VWYWx1ZToiWFNSRi1UT0tFTiJ9LHtwcm92aWRlOndFLHVzZVZhbHVlOiJYLVhTUkYtVE9LRU4ifV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEFFLFt7dHlwZTpMXyxhcmdzOlt7cHJvdmlkZXJzOltERSx7cHJvdmlkZTpiRSx1c2VFeGlzdGluZzpERSxtdWx0aTohMH0se3Byb3ZpZGU6a0UsdXNlQ2xhc3M6U0V9LHtwcm92aWRlOlBFLHVzZVZhbHVlOiJYU1JGLVRPS0VOIn0se3Byb3ZpZGU6d0UsdXNlVmFsdWU6IlgtWFNSRi1UT0tFTiJ9XX1dfV0sbnVsbCxudWxsKTtjbGFzcyBURXt9VEUuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFRFKX0sVEUuybVtb2Q9Zm8oe3R5cGU6VEV9KSxURS7JtWluaj1Ebih7cHJvdmlkZXJzOltnRSx7cHJvdmlkZTpKUix1c2VDbGFzczpSRX0sT0Use3Byb3ZpZGU6UVIsdXNlRXhpc3Rpbmc6T0V9XSxpbXBvcnRzOltbQUUud2l0aE9wdGlvbnMoe2Nvb2tpZU5hbWU6IlhTUkYtVE9LRU4iLGhlYWRlck5hbWU6IlgtWFNSRi1UT0tFTiJ9KV1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihURSxbe3R5cGU6TF8sYXJnczpbe2ltcG9ydHM6W0FFLndpdGhPcHRpb25zKHtjb29raWVOYW1lOiJYU1JGLVRPS0VOIixoZWFkZXJOYW1lOiJYLVhTUkYtVE9LRU4ifSldLHByb3ZpZGVyczpbZ0Use3Byb3ZpZGU6SlIsdXNlQ2xhc3M6UkV9LE9FLHtwcm92aWRlOlFSLHVzZUV4aXN0aW5nOk9FfV19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhURSx7aW1wb3J0czpbQUVdfSk7Y2xhc3MgTkV7fWZ1bmN0aW9uIHpFKHQpe2NvbnN0IGU9e307Zm9yKGNvbnN0W24sb11vZiB0LmVudHJpZXMoKSllW25dPW87cmV0dXJuIGV9TkUuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fE5FKX0sTkUuybVtb2Q9Zm8oe3R5cGU6TkV9KSxORS7JtWluaj1Ebih7cHJvdmlkZXJzOltNRSx7cHJvdmlkZTpDRSx1c2VGYWN0b3J5OkVFfSx7cHJvdmlkZTpiRSx1c2VDbGFzczp2RSxtdWx0aTohMH1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihORSxbe3R5cGU6TF8sYXJnczpbe3Byb3ZpZGVyczpbTUUse3Byb3ZpZGU6Q0UsdXNlRmFjdG9yeTpFRX0se3Byb3ZpZGU6YkUsdXNlQ2xhc3M6dkUsbXVsdGk6ITB9XX1dfV0sbnVsbCxudWxsKTtmdW5jdGlvbiBJRSh0KXtsZXQgZT10LmhlYWRlcnN8fG5ldyAkUjtyZXR1cm4gZT1lLmFwcGVuZCgiWC1YU1JGLVByb3RlY3RlZCIsIjEiKSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2hlYWRlcnM6ZX0pfWNsYXNzIEhFe2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLmFwcFJvb3RQcm92aWRlcj10LHRoaXMuaHR0cD1lLHRoaXMuc3RvcmU9bn1yZXNvbHZlQXBwUm9vdCh0KXtyZXR1cm4gdC5zdGFydHNXaXRoKCIvIik/dGhpcy5hcHBSb290UHJvdmlkZXIuZ2V0QWJzUGF0aG5hbWVXaXRoQXBwUm9vdCh0KTp0fWdldCh0LGU9e30pe3JldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMucmVzb2x2ZUFwcFJvb3QodCksZSl9cG9zdCh0LGUsbj17fSl7cmV0dXJuIG49SUUobiksdGhpcy5zdG9yZS5zZWxlY3QoTkQpLnBpcGUodWUoKHQ9PkJvb2xlYW4odCkpKSx2ZSgxKSxxZSh0aGlzLnN0b3JlLnNlbGVjdChWRCkpLCR0KCgoWyxvXSk9Pnt2YXIgaTtjb25zdCBhPXRoaXMucmVzb2x2ZUFwcFJvb3QodCk7cmV0dXJuIG8/dGhpcy5odHRwLmdldChhLHtoZWFkZXJzOm51bGwhPT0oaT1uLmhlYWRlcnMpJiZ2b2lkIDAhPT1pP2k6e30scGFyYW1zOnpFKGUpfSk6dGhpcy5odHRwLnBvc3QoYSxlLG4pfSkpKX1wdXQodCxlLG49e30pe3JldHVybiB0aGlzLmh0dHAucHV0KHRoaXMucmVzb2x2ZUFwcFJvb3QodCksZSxJRShuKSl9ZGVsZXRlKHQsZT17fSl7cmV0dXJuIHRoaXMuaHR0cC5kZWxldGUodGhpcy5yZXNvbHZlQXBwUm9vdCh0KSxJRShlKSl9fUhFLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxIRSkoVHIod0QpLFRyKGdFKSxUcihpUykpfSxIRS7JtXByb3Y9U24oe3Rva2VuOkhFLGZhY3Rvcnk6SEUuybVmYWN9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEhFLFt7dHlwZTpVbX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTp3RH0se3R5cGU6Z0V9LHt0eXBlOmlTfV19KSxudWxsKTtjbGFzcyBGRXt9dmFyIExFO0ZFLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxGRSl9LEZFLsm1bW9kPWZvKHt0eXBlOkZFfSksRkUuybVpbmo9RG4oe3Byb3ZpZGVyczpbSEVdLGltcG9ydHM6W1tURSxERF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihGRSxbe3R5cGU6TF8sYXJnczpbe2ltcG9ydHM6W1RFLEREXSxwcm92aWRlcnM6W0hFXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKEZFLHtpbXBvcnRzOltURSxERF19KSwoZnVuY3Rpb24odCl7dC5VTktOT1dOPSJVTktOT1dOIix0Lk5PVF9GT1VORD0iTk9UX0ZPVU5EIn0pKExFfHwoTEU9e30pKTtjb25zdCBCRT1uZXcgZXIoIlRlbnNvckJvYXJkIGJyYW5kIG5hbWUiKTt2YXIgVkUsakUsVUU7ZnVuY3Rpb24gV0UodCl7bGV0IGU9TEUuVU5LTk9XTjtyZXR1cm4gdCBpbnN0YW5jZW9mIGZFJiY0MDQ9PT10LnN0YXR1cyYmKGU9TEUuTk9UX0ZPVU5EKSxJdChuZXcgR0UoZSkpfSEoZnVuY3Rpb24odCl7dC5TVEVQPSJzdGVwIix0LldBTExfVElNRT0id2FsbF90aW1lIix0LlJFTEFUSVZFPSJyZWxhdGl2ZSJ9KShWRXx8KFZFPXt9KSksKGZ1bmN0aW9uKHQpe3QuT0ZGU0VUPSJvZmZzZXQiLHQuT1ZFUkxBWT0ib3ZlcmxheSJ9KShqRXx8KGpFPXt9KSk7Y2xhc3MgR0V7Y29uc3RydWN0b3IodCl7dGhpcy5mYWlsdXJlQ29kZT10fX1jbGFzcyBZRXtjb25zdHJ1Y3Rvcih0KXt0aGlzLmh0dHA9dCx0aGlzLnRmQmFja2VuZD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0Zi1iYWNrZW5kIikudGZfYmFja2VuZH1mZXRjaFBsdWdpbnNMaXN0aW5nKHQpe2NvbnN0IGU9KGZ1bmN0aW9uIG4odCl7aWYoIXQubGVuZ3RoKXJldHVybiBudWxsO2NvbnN0IGU9bmV3IFVSTFNlYXJjaFBhcmFtcztmb3IoY29uc3QgbiBvZiB0KWUuYXBwZW5kKCJleHBlcmltZW50YWxQbHVnaW4iLG4pO3JldHVybiBlfSkodCksbz1lP2BkYXRhL3BsdWdpbnNfbGlzdGluZz8ke2UudG9TdHJpbmcoKX1gOiJkYXRhL3BsdWdpbnNfbGlzdGluZyI7cmV0dXJuIHRoaXMuaHR0cC5nZXQobykucGlwZShoZShXRSkpfWZldGNoRW52aXJvbm1lbnQoKXtyZXR1cm4gaWUoW3RoaXMuaHR0cC5nZXQoImRhdGEvZW52aXJvbm1lbnQiKSxQdCh0aGlzLnRmQmFja2VuZC5lbnZpcm9ubWVudFN0b3JlLnJlZnJlc2goKSldKS5waXBlKFZ0KCgoW3RdKT0+dCkpLGhlKFdFKSl9fVlFLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxZRSkoVHIoSEUpKX0sWUUuybVwcm92PVNuKHt0b2tlbjpZRSxmYWN0b3J5OllFLsm1ZmFjfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihZRSxbe3R5cGU6VW19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6SEV9XX0pLG51bGwpO2NsYXNzIHFFe31xRS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8cUUpfSxxRS7JtW1vZD1mbyh7dHlwZTpxRX0pLHFFLsm1aW5qPURuKHtwcm92aWRlcnM6W1lFXSxpbXBvcnRzOltbRkVdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIocUUsW3t0eXBlOkxfLGFyZ3M6W3tpbXBvcnRzOltGRV0scHJvdmlkZXJzOltZRV19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhxRSx7aW1wb3J0czpbRkVdfSksKGZ1bmN0aW9uKHQpe3RbdC5OT1RfTE9BREVEPTBdPSJOT1RfTE9BREVEIix0W3QuTE9BREVEPTFdPSJMT0FERUQiLHRbdC5MT0FESU5HPTJdPSJMT0FESU5HIix0W3QuRkFJTEVEPTNdPSJGQUlMRUQifSkoVUV8fChVRT17fSkpO2NvbnN0IFpFPV9rKCJbQ29yZV0gUGx1Z2luIENoYW5nZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxYRT1faygiW0NvcmVdIFBsdWdpbiBVcmwgSGFzaCBDaGFuZ2VkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksS0U9X2soIltDb3JlXSBMb2FkZWQiKSxKRT1faygiW0NvcmVdIFVzZXIgVHJpZ2dlcmVkIFJlbG9hZCIpLFFFPV9rKCJbQ29yZV0gQXV0byBSZWxvYWQiKSwkRT1faygiW0NvcmVdIFBsdWdpbkxpc3RpbmcgRmV0Y2ggUmVxdWVzdGVkIiksdEE9X2soIltDb3JlXSBQbHVnaW5MaXN0aW5nIEZldGNoIFN1Y2Nlc3NmdWwiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxlQT1faygiW0NvcmVdIFBsdWdpbkxpc3RpbmcgRmV0Y2ggRmFpbGVkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksbkE9X2soIltDb3JlXSBQb2x5bWVyIENvbXBvbmVudCBSdW5zIEZldGNoIFJlcXVlc3RlZCIpLG9BPV9rKCJbQ29yZV0gUG9seW1lciBDb21wb25lbnQgUnVucyBGZXRjaCBTdWNjZXNzZnVsIiksaUE9X2soIltDb3JlXSBQb2x5bWVyIENvbXBvbmVudCBSdW5zIEZldGNoIEZhaWxlZCIpLGFBPV9rKCJbQ29yZV0gRW52aXJvbm1lbnQgRmV0Y2ggU3VjY2Vzc2Z1bCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLHJBPV9rKCJbQ29yZV0gUnVuIFNlbGVjdGlvbiBDaGFuZ2VkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksc0E9X2soIltDb3JlXSBSdW4gRmV0Y2ggU3VjY2Vzc2Z1bCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLGxBPV9rKCJbQ29yZV0gU2lkZSBCYXIgV2lkdGggQ2hhbmdlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pO2Z1bmN0aW9uIGNBKHQsZSxuKXtjb25zdCBvPU9iamVjdC5rZXlzKHQpLGk9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCksZSkse3ByaXZhdGVOYW1lc3BhY2VkU3RhdGU6e319KTtyZXR1cm57aW5pdGlhbFN0YXRlOmkscmVkdWNlcnM6VlMoaSxCUyh0UiwoKGUse2JlZm9yZTppLGFmdGVyOmEsYmVmb3JlTmFtZXNwYWNlSWQ6cixhZnRlck5hbWVzcGFjZUlkOnN9KT0+e2xldCBsPWU7cmV0dXJuIHIhPT1zJiYobD0oZnVuY3Rpb24gYyhlLG4saSl7dmFyIGE7bGV0IHI9T2JqZWN0LmFzc2lnbih7fSxlLnByaXZhdGVOYW1lc3BhY2VkU3RhdGUpO2lmKG4pe2NvbnN0IHQ9e307Zm9yKGNvbnN0IG4gb2Ygbyl0W25dPWVbbl07cj1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30scikse1tuXTp0fSl9bGV0IHM9e307cmV0dXJuKG51bGw9PT0oYT1lLnByaXZhdGVOYW1lc3BhY2VkU3RhdGUpfHx2b2lkIDA9PT1hP3ZvaWQgMDphW2ldKT9zPWUucHJpdmF0ZU5hbWVzcGFjZWRTdGF0ZVtpXTpuJiYocz10KSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxlKSxzKSx7cHJpdmF0ZU5hbWVzcGFjZWRTdGF0ZTpyfSl9KShlLHIscykpLCF4RChpLGEpJiZuJiYobD1uKGwsYSkpLGx9KSkpfX1jb25zdCBkQT1faygiW01ldHJpY3NdIE1ldHJpY3MgU2V0dGluZ3MgUGFuZSBDbG9zZWQiKSxwQT1faygiW01ldHJpY3NdIE1ldHJpY3MgU2V0dGluZ3MgUGFuZSBUb2dnbGVkIiksbUE9X2soIltNZXRyaWNzXSBNZXRyaWNzIFRhZyBNZXRhZGF0YSBSZXF1ZXN0ZWQiKSxmQT1faygiW01ldHJpY3NdIE1ldHJpY3MgVGFnIE1ldGFkYXRhIExvYWRlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLHVBPV9rKCJbTWV0cmljc10gTWV0cmljcyBUYWcgTWV0YWRhdGEgRmFpbGVkIiksZ0E9X2soIltNZXRyaWNzXSBNZXRyaWNzIFNldHRpbmdzIENoYW5nZSBUb29sdGlwIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSk7X2soIltNZXRyaWNzXSBNZXRyaWNzIFNldHRpbmdzIFRvZ2dsZSBTaG93IERhdGEgRG93bmxvYWQiKTtjb25zdCBoQT1faygiW01ldHJpY3NdIE1ldHJpY3MgU2V0dGluZyBUb2dnbGUgSWdub3JlIE91dGxpZXIiKSxiQT1faygiW01ldHJpY3NdIE1ldHJpY3MgU2V0dGluZyBDaGFuZ2UgWCBBeGlzIFR5cGUiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSx5QT1faygiW01ldHJpY3NdIE1ldHJpY3MgU2V0dGluZyBDaGFuZ2UgQ2FyZCBXaWR0aCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLF9BPV9rKCJbTWV0cmljc10gTWV0cmljcyBTZXR0aW5nIFJlc2V0IENhcmQgV2lkdGgiKSxDQT1faygiW01ldHJpY3NdIE1ldHJpY3MgU2V0dGluZyBDaGFuZ2UgU2NhbGFyIFNtb290aGluZyIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLE1BPV9rKCJbTWV0cmljc10gTWV0cmljcyBTZXR0aW5nIFBhcnRpdGlvbiBOb24gTW9ub3RvbmljIFggVG9nZ2xlZCIpLHZBPV9rKCJbTWV0cmljc10gTWV0cmljcyBTZXR0aW5nIENoYW5nZSBJbWFnZSBCcmlnaHRuZXNzIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSkseEE9X2soIltNZXRyaWNzXSBNZXRyaWNzIFNldHRpbmcgQ2hhbmdlIEltYWdlIENvbnRyYXN0Iix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksT0E9X2soIltNZXRyaWNzXSBJbWFnZSBCcmlnaHRuZXNzIFNldHRpbmcgUmVzZXQiKSxQQT1faygiW01ldHJpY3NdIEltYWdlIENvbnRyYXN0IFNldHRpbmcgUmVzZXQiKSx3QT1faygiW01ldHJpY3NdIE1ldHJpY3MgU2V0dGluZyBUb2dnbGUgSW1hZ2UgU2hvdyBBY3R1YWwgU2l6ZSIpLGtBPV9rKCJbTWV0cmljc10gTWV0cmljcyBTZXR0aW5nIENoYW5nZSBIaXN0b2dyYW0gTW9kZSIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLFNBPV9rKCJbTWV0cmljc10gTXVsdGlwbGUgVGltZSBTZXJpZXMgUmVxdWVzdGVkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksREE9X2soIltNZXRyaWNzXSBGZXRjaCBUaW1lIFNlcmllcyBSZXF1ZXN0IEZhaWxlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLFJBPV9rKCJbTWV0cmljc10gRmV0Y2ggVGltZSBTZXJpZXMgUmVzcG9uc2UgTG9hZGVkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksRUE9X2soIltNZXRyaWNzXSBDYXJkIFZpc2liaWxpdHkgQ2hhbmdlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLEFBPV9rKCJbTWV0cmljc10gQ2FyZCBTdGVwIFNsaWRlciBDaGFuZ2VkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksVEE9X2soIltNZXRyaWNzXSBUYWcgRmlsdGVyIENoYW5nZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxOQT1faygiW01ldHJpY3NdIE1ldHJpY3MgVGFnIEdyb3VwIEV4cGFuc2lvbiBDaGFuZ2VkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksekE9X2soIltNZXRyaWNzXSBDYXJkIFBpbiBTdGF0ZSBUb2dnbGVkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksSUE9X2soIltNZXRyaWNzXSBUb2dnbGUgVmlzaWJsZSBQbHVnaW4iLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxIQT1faygiW01ldHJpY3NdIFRvZ2dsZSBTaG93IEFsbCBQbHVnaW5zIiksRkE9X2soIltNZXRyaWNzXSBMaW5rZWQgVGltZSBTZWxlY3Rpb24gQ2hhbmdlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLExBPV9rKCJbTWV0cmljc10gTGlua2VkIFRpbWUgU2VsZWN0aW9uIENsZWFyZWQiKSxCQT1faygiW01ldHJpY3NdIFNlbGVjdCBUaW1lIEVuYWJsZSBUb2dnbGUiKSxWQT1faygiW01ldHJpY3NdIFVzZSBSYW5nZSBTZWxlY3QgVGltZSBUb2dnbGUiKSxqQT1faygiW01ldHJpY3NdIE1ldHJpY3MgUHJvbW8gRGlzbWlzc2VkIiksVUE9X2soIltNZXRyaWNzXSBNZXRyaWNzIFByb21vIEdvIFRvIFNjYWxhcnMiKTtmdW5jdGlvbiBXQSguLi50KXtyZXR1cm4oZSxuKT0+e2xldCBvPWU7Zm9yKGNvbnN0IGUgb2YgdClvPWUobyxuKTtyZXR1cm4gb319Y29uc3QgR0E9ImNvcmUiLFlBPXthY3RpdmVQbHVnaW46bnVsbCxwbHVnaW5zOnt9LGNvcmVEYXRhTG9hZFN0YXRlOntzdGF0ZTpVRS5OT1RfTE9BREVELGxhc3RMb2FkZWRUaW1lSW5NczpudWxsfSxwbHVnaW5zTGlzdExvYWRlZDp7c3RhdGU6VUUuTk9UX0xPQURFRCxsYXN0TG9hZGVkVGltZUluTXM6bnVsbCxmYWlsdXJlQ29kZTpudWxsfSxlbnZpcm9ubWVudDp7ZGF0YV9sb2NhdGlvbjoiIix3aW5kb3dfdGl0bGU6IiJ9LHBvbHltZXJSdW5zTG9hZFN0YXRlOntzdGF0ZTpVRS5OT1RfTE9BREVELGxhc3RMb2FkZWRUaW1lSW5NczpudWxsfSxwb2x5bWVySW50ZXJvcFJ1bnM6W10scG9seW1lckludGVyb3BSdW5TZWxlY3Rpb246bmV3IFNldCxzaWRlQmFyV2lkdGhJblBlcmNlbnQ6MjB9LHFBPVZTKFlBLEJTKFpFLFhFLCgodCx7cGx1Z2luOmV9KT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHthY3RpdmVQbHVnaW46ZX0pKSksQlMoJEUsKHQ9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7Y29yZURhdGFMb2FkU3RhdGU6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuY29yZURhdGFMb2FkU3RhdGUpLHtzdGF0ZTpVRS5MT0FESU5HfSkscGx1Z2luc0xpc3RMb2FkZWQ6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQucGx1Z2luc0xpc3RMb2FkZWQpLHtzdGF0ZTpVRS5MT0FESU5HfSl9KSkpLEJTKGVBLCgodCx7ZmFpbHVyZUNvZGU6ZX0pPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2NvcmVEYXRhTG9hZFN0YXRlOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmNvcmVEYXRhTG9hZFN0YXRlKSx7c3RhdGU6VUUuRkFJTEVEfSkscGx1Z2luc0xpc3RMb2FkZWQ6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQucGx1Z2luc0xpc3RMb2FkZWQpLHtzdGF0ZTpVRS5GQUlMRUQsZmFpbHVyZUNvZGU6ZX0pfSkpKSxCUyh0QSwoKHQse3BsdWdpbnM6ZX0pPT57Y29uc3Qgbj1PYmplY3Qua2V5cyhlKS5maW5kKCh0PT5lW3RdLmVuYWJsZWQpKXx8bnVsbCxvPXQuYWN0aXZlUGx1Z2lufHxuLGk9RGF0ZS5ub3coKTtsZXQgYT10LmNvcmVEYXRhTG9hZFN0YXRlO3JldHVybiB0LnBvbHltZXJSdW5zTG9hZFN0YXRlLnN0YXRlPT09VUUuTE9BREVEJiYoYT17c3RhdGU6VUUuTE9BREVELGxhc3RMb2FkZWRUaW1lSW5NczppfSksT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHthY3RpdmVQbHVnaW46byxjb3JlRGF0YUxvYWRTdGF0ZTphLHBsdWdpbnM6ZSxwbHVnaW5zTGlzdExvYWRlZDp7c3RhdGU6VUUuTE9BREVELGxhc3RMb2FkZWRUaW1lSW5NczppLGZhaWx1cmVDb2RlOm51bGx9fSl9KSksQlMobkEsKHQ9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7Y29yZURhdGFMb2FkU3RhdGU6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuY29yZURhdGFMb2FkU3RhdGUpLHtzdGF0ZTpVRS5MT0FESU5HfSkscG9seW1lclJ1bnNMb2FkU3RhdGU6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQucG9seW1lclJ1bnNMb2FkU3RhdGUpLHtzdGF0ZTpVRS5MT0FESU5HfSl9KSkpLEJTKG9BLCh0PT57Y29uc3QgZT1EYXRlLm5vdygpO2xldCBuPXQuY29yZURhdGFMb2FkU3RhdGU7cmV0dXJuIHQucGx1Z2luc0xpc3RMb2FkZWQuc3RhdGU9PT1VRS5MT0FERUQmJihuPXtzdGF0ZTpVRS5MT0FERUQsbGFzdExvYWRlZFRpbWVJbk1zOmV9KSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2NvcmVEYXRhTG9hZFN0YXRlOm4scG9seW1lclJ1bnNMb2FkU3RhdGU6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQucG9seW1lclJ1bnNMb2FkU3RhdGUpLHtzdGF0ZTpVRS5MT0FERUQsbGFzdExvYWRlZFRpbWVJbk1zOmV9KX0pfSkpLEJTKGlBLCh0PT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2NvcmVEYXRhTG9hZFN0YXRlOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmNvcmVEYXRhTG9hZFN0YXRlKSx7c3RhdGU6VUUuRkFJTEVEfSkscG9seW1lclJ1bnNMb2FkU3RhdGU6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQucG9seW1lclJ1bnNMb2FkU3RhdGUpLHtzdGF0ZTpVRS5GQUlMRUR9KX0pKSksQlMoYUEsKCh0LHtlbnZpcm9ubWVudDplfSk9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7ZW52aXJvbm1lbnQ6ZX0pKSksQlMoc0EsKCh0LHtydW5zOmV9KT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtwb2x5bWVySW50ZXJvcFJ1bnM6ZX0pKSksQlMockEsKCh0LHtuZXh0U2VsZWN0aW9uOmV9KT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtwb2x5bWVySW50ZXJvcFJ1blNlbGVjdGlvbjpuZXcgU2V0KGUpfSkpKSxCUyhsQSwoKHQse3dpZHRoSW5QZXJjZW50OmV9KT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtzaWRlQmFyV2lkdGhJblBlcmNlbnQ6TWF0aC5taW4oTWF0aC5tYXgoMCxlKSwxMDApfSkpKSxCUyhxUiwoKHQse3BhcnRpYWxTZXR0aW5nczplfSk9Pntjb25zdCBuPU9iamVjdC5hc3NpZ24oe30sdCksbz1lLnNpZGVCYXJXaWR0aEluUGVyY2VudDtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIG8mJm8+PTAmJm88PTEwMCYmKG4uc2lkZUJhcldpZHRoSW5QZXJjZW50PW8pLG59KSksQlMoVUEsKHQ9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7YWN0aXZlUGx1Z2luOiJzY2FsYXJzIn0pKSkpLHtyZWR1Y2VyczpaQX09Y0EoWUEse30pO2Z1bmN0aW9uIFhBKHQsZSl7cmV0dXJuIFdBKHFBLFpBKSh0LGUpfWNvbnN0IEtBPV9TKEdBKSxKQT1iUyhLQSwodD0+dC5wbHVnaW5zTGlzdExvYWRlZCkpLFFBPWJTKEtBLCh0PT50LnBvbHltZXJSdW5zTG9hZFN0YXRlKSksJEE9YlMoS0EsKHQ9PnQuY29yZURhdGFMb2FkU3RhdGUuc3RhdGUpKSx0VD1iUyhLQSwodD0+dC5jb3JlRGF0YUxvYWRTdGF0ZS5sYXN0TG9hZGVkVGltZUluTXMpKSxlVD1iUyhLQSwodD0+dC5hY3RpdmVQbHVnaW4pKSxuVD1iUyhLQSwodD0+dC5wbHVnaW5zKSksb1Q9YlMoS0EsKHQ9PnQuZW52aXJvbm1lbnQpKSxpVD1iUyhLQSwodD0+dC5zaWRlQmFyV2lkdGhJblBlcmNlbnQpKSxhVD1uZXcgU2V0KFtfRC5DT01QQVJFX0VYUEVSSU1FTlQsX0QuRVhQRVJJTUVOVCxfRC5OT1RfU0VUXSk7Y2xhc3MgclR7Y29uc3RydWN0b3IodCxlLG4pe3RoaXMuYWN0aW9ucyQ9dCx0aGlzLnN0b3JlPWUsdGhpcy53ZWJhcHBEYXRhU291cmNlPW4sdGhpcy50ZkJhY2tlbmQ9e3JlZjpkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0Zi1iYWNrZW5kIikudGZfYmFja2VuZH0sdGhpcy5vbkRhc2hib2FyZExvYWQkPXBlKHRoaXMuYWN0aW9ucyQucGlwZSgkUyhLRSx0UikscWUodGhpcy5zdG9yZS5zZWxlY3QoaFIpKSx3ZSgoKFssdF0sWyxlXSk9PnhEKHQsZSkpKSksdGhpcy5hY3Rpb25zJC5waXBlKCRTKFFFLEpFKSkpLnBpcGUocWUodGhpcy5zdG9yZS5zZWxlY3QoTVIpKSx1ZSgoKFssdF0pPT5hVC5oYXModCkpKSxZZSgxLHZvaWQgMCx7bGVhZGluZzohMH0pKSx0aGlzLmZldGNoV2ViQXBwRGF0YSQ9V1MoKCgpPT5wZSh0aGlzLm9uRGFzaGJvYXJkTG9hZCQucGlwZShxZSh0aGlzLnN0b3JlLnNlbGVjdChKQSksdGhpcy5zdG9yZS5zZWxlY3QoQkQpKSx1ZSgoKFsse3N0YXRlOnR9XSk9PnQhPT1VRS5MT0FESU5HKSksV2UoKCgpPT50aGlzLnN0b3JlLmRpc3BhdGNoKCRFKCkpKSksJHQoKChbLCx0XSk9PihmdW5jdGlvbiBlKCl7Zm9yKHZhciB0PVtdLGU9MDtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXRbZV09YXJndW1lbnRzW2VdO3ZhciBuPUF0KHQpLG89ZmUodCk7cmV0dXJuIG8ubGVuZ3RoP25ldyBUKChmdW5jdGlvbih0KXt2YXIgZT1vLm1hcCgoZnVuY3Rpb24oKXtyZXR1cm5bXX0pKSxpPW8ubWFwKChmdW5jdGlvbigpe3JldHVybiExfSkpO3QuYWRkKChmdW5jdGlvbigpe2U9aT1udWxsfSkpO2Zvcih2YXIgcz1mdW5jdGlvbihzKXt3dChvW3NdKS5zdWJzY3JpYmUobmV3IEgodCwoZnVuY3Rpb24obyl7aWYoZVtzXS5wdXNoKG8pLGUuZXZlcnkoKGZ1bmN0aW9uKHQpe3JldHVybiB0Lmxlbmd0aH0pKSl7dmFyIGw9ZS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnNoaWZ0KCl9KSk7dC5uZXh0KG4/bi5hcHBseSh2b2lkIDAscihbXSxhKGwpKSk6bCksZS5zb21lKChmdW5jdGlvbih0LGUpe3JldHVybiF0Lmxlbmd0aCYmaVtlXX0pKSYmdC5jb21wbGV0ZSgpfX0pLChmdW5jdGlvbigpe2lbc109ITAsIWVbc10ubGVuZ3RoJiZ0LmNvbXBsZXRlKCl9KSkpfSxsPTA7IXQuY2xvc2VkJiZsPG8ubGVuZ3RoO2wrKylzKGwpO3JldHVybiBmdW5jdGlvbigpe2U9aT1udWxsfX0pKTpkdH0pKHRoaXMud2ViYXBwRGF0YVNvdXJjZS5mZXRjaFBsdWdpbnNMaXN0aW5nKHQpLHRoaXMuZmV0Y2hFbnZpcm9ubWVudCgpKS5waXBlKFZ0KCgoW3RdKT0+e3RoaXMuc3RvcmUuZGlzcGF0Y2godEEoe3BsdWdpbnM6dH0pKX0pKSxoZSgodD0+KHRoaXMuc3RvcmUuZGlzcGF0Y2goZUEodCBpbnN0YW5jZW9mIEdFP3tmYWlsdXJlQ29kZTp0LmZhaWx1cmVDb2RlfTp7ZmFpbHVyZUNvZGU6TEUuVU5LTk9XTn0pKSxkdCkpKSkpKSksdGhpcy5vbkRhc2hib2FyZExvYWQkLnBpcGUoVnQoKChbLHRdKT0+dCkpLFZlKCh0PT50IT09X0QuQ09NUEFSRV9FWFBFUklNRU5UP3p0KFtdKTp0aGlzLnN0b3JlLnNlbGVjdChPUikucGlwZSh3ZSgoKHQsZSk9Pntjb25zdCBuPU9iamVjdC5lbnRyaWVzKHQpLG89bmV3IE1hcChPYmplY3QuZW50cmllcyhlKSk7aWYobi5sZW5ndGghPT1vLnNpemUpcmV0dXJuITE7Zm9yKGNvbnN0W3QsZV1vZiBuKXtpZighby5nZXQodCkpcmV0dXJuITE7aWYoby5nZXQodCkuYWxpYXNUZXh0IT09ZS5hbGlhc1RleHR8fG8uZ2V0KHQpLmFsaWFzTnVtYmVyIT09ZS5hbGlhc051bWJlcilyZXR1cm4hMX1yZXR1cm4hMH0pKSxQZSgwKSxZZSg1MDAsdm9pZCAwLHtsZWFkaW5nOiEwLHRyYWlsaW5nOiEwfSkpKSkscWUodGhpcy5zdG9yZS5zZWxlY3QoTVIpLHRoaXMuc3RvcmUuc2VsZWN0KFFBKSksdWUoKChbLHQsZV0pPT5hVC5oYXModCkmJmUuc3RhdGUhPT1VRS5MT0FESU5HKSksV2UoKCgpPT57dGhpcy5zdG9yZS5kaXNwYXRjaChuQSgpKX0pKSxWZSgoKCk9PnRoaXMucmVmcmVzaFBvbHltZXJSdW5zKCkpKSxXZSgoKCk9Pnt0aGlzLnN0b3JlLmRpc3BhdGNoKG9BKCkpfSkpLGhlKCgoKT0+KHRoaXMuc3RvcmUuZGlzcGF0Y2goaUEoKSksZHQpKSkpKSkse2Rpc3BhdGNoOiExfSksdGhpcy5kaXNwYXRjaENoYW5nZVBsdWdpbiQ9V1MoKCgpPT5wZSh0aGlzLm9uRGFzaGJvYXJkTG9hZCQsdGhpcy5hY3Rpb25zJC5waXBlKCRTKHRBKSkpLnBpcGUocWUodGhpcy5zdG9yZS5zZWxlY3QoZVQpKSxWdCgoKFssdF0pPT50KSksd2UoKSx1ZSgodD0+bnVsbCE9PXQpKSx2ZSgxKSxXZSgodD0+e3RoaXMuc3RvcmUuZGlzcGF0Y2goWkUoe3BsdWdpbjp0fSkpfSkpKSkse2Rpc3BhdGNoOiExfSl9cmVmcmVzaFBvbHltZXJSdW5zKCl7cmV0dXJuIFB0KHRoaXMudGZCYWNrZW5kLnJlZi5ydW5zU3RvcmUucmVmcmVzaCgpKX1mZXRjaEVudmlyb25tZW50KCl7cmV0dXJuIHRoaXMud2ViYXBwRGF0YVNvdXJjZS5mZXRjaEVudmlyb25tZW50KCkucGlwZShXZSgodD0+e3RoaXMuc3RvcmUuZGlzcGF0Y2goYUEoe2Vudmlyb25tZW50OnR9KSl9KSkpfX1yVC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8clQpKFRyKFFTKSxUcihpUyksVHIoWUUpKX0sclQuybVwcm92PVNuKHt0b2tlbjpyVCxmYWN0b3J5OnJULsm1ZmFjfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihyVCxbe3R5cGU6VW19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6UVN9LHt0eXBlOmlTfSx7dHlwZTpZRX1dfSksbnVsbCk7Y29uc3Qgc1Q9bmV3IGVyKCJDb3JlIEZlYXR1cmUgQ29uZmlnIik7ZnVuY3Rpb24gbFQodCl7cmV0dXJue2luaXRpYWxTdGF0ZTpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sWUEpLHthY3RpdmVQbHVnaW46dC5nZXRQbHVnaW5JZCgpfHxudWxsfSl9fWZ1bmN0aW9uIGNUKCl7cmV0dXJuIGJTKGlULCh0PT4oe3NpZGVCYXJXaWR0aEluUGVyY2VudDp0fSkpKX1jbGFzcyBkVHt9ZFQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGRUKX0sZFQuybVtb2Q9Zm8oe3R5cGU6ZFR9KSxkVC7JtWluaj1Ebih7cHJvdmlkZXJzOlt7cHJvdmlkZTpzVCxkZXBzOltUUl0sdXNlRmFjdG9yeTpsVH1dLGltcG9ydHM6W1toRC5mb3JGZWF0dXJlKFtyVF0pLFRTLmZvckZlYXR1cmUoR0EsWEEsc1QpLHFFLHpSLmRlZmluZUdsb2JhbFNldHRpbmcoY1QpXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGRULFt7dHlwZTpMXyxhcmdzOlt7aW1wb3J0czpbaEQuZm9yRmVhdHVyZShbclRdKSxUUy5mb3JGZWF0dXJlKEdBLFhBLHNUKSxxRSx6Ui5kZWZpbmVHbG9iYWxTZXR0aW5nKGNUKV0scHJvdmlkZXJzOlt7cHJvdmlkZTpzVCxkZXBzOltUUl0sdXNlRmFjdG9yeTpsVH1dfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8oZFQse2ltcG9ydHM6W2dELEFTLHFFLHpSXX0pO2NvbnN0IHBUPW5ldyBlcigiW0FsZXJ0XSBBY3Rpb24tVG8tQWxlcnQgUHJvdmlkZXIiKTtjbGFzcyBtVHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnByb3ZpZGVycz1uZXcgTWFwO2Zvcihjb25zdCBlIG9mIHR8fFtdKWZvcihjb25zdCB0IG9mIGUpe2lmKHRoaXMucHJvdmlkZXJzLmhhcyh0LmFjdGlvbkNyZWF0b3IudHlwZSkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoYCIke3QuYWN0aW9uQ3JlYXRvci50eXBlfSIgaXMgYWxyZWFkeSByZWdpc3RlcmVkIGZvciBhbGVydHMuIE11bHRpcGxlIGFsZXJ0cyBmb3IgdGhlIHNhbWUgYWN0aW9uIGlzIG5vdCBhbGxvd2VkLmApO3RoaXMucHJvdmlkZXJzLnNldCh0LmFjdGlvbkNyZWF0b3IudHlwZSx0LmFsZXJ0RnJvbUFjdGlvbil9fWdldEFsZXJ0RnJvbUFjdGlvbih0KXtjb25zdCBlPXRoaXMucHJvdmlkZXJzLmdldCh0LnR5cGUpO3JldHVybiBlP2UodCk6bnVsbH1zdGF0aWMgcmVnaXN0ZXJBbGVydEFjdGlvbnModCl7cmV0dXJue25nTW9kdWxlOm1ULHByb3ZpZGVyczpbe3Byb3ZpZGU6cFQsbXVsdGk6ITAsdXNlRmFjdG9yeTp0fV19fX1tVC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8bVQpKFRyKHBULDgpKX0sbVQuybVtb2Q9Zm8oe3R5cGU6bVR9KSxtVC7JtWluaj1Ebih7fSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihtVCxbe3R5cGU6TF8sYXJnczpbe31dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbcFRdfV19XX0pLG51bGwpO2NvbnN0IGZUPV9rKCJbUnVuc10gRmV0Y2ggUnVucyBSZXF1ZXN0ZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSx1VD1faygiW1J1bnNdIEZldGNoIFJ1bnMgU3VjY2VlZGVkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksZ1Q9X2soIltSdW5zXSBGZXRjaCBSdW5zIEZhaWxlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLGhUPV9rKCJbUnVuc10gUnVuIFNlbGVjdGlvbiBUb2dnbGVkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksYlQ9X2soIltSdW5zXSBSdW4gUGFnZSBTZWxlY3Rpb24gVG9nZ2xlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLHlUPV9rKCJbUnVuc10gUnVuIFNlbGVjdG9yIFBhZ2luYXRpb24gT3B0aW9uIENoYW5nZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxfVD1faygiW1J1bnNdIFJ1biBTZWxlY3RvciBTb3J0IENoYW5nZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxDVD1faygiW1J1bnNdIFJ1biBTZWxlY3RvciBSZWdleCBGaWx0ZXIgQ2hhbmdlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLE1UPV9rKCJbUnVuc10gUnVuIENvbG9yIENoYW5nZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSx2VD1faygiW1J1bnNdIFJ1biBUYWJsZSBTaG93biIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLHhUPV9rKCJbUnVuc10gUnVuIEdyb3VwIEJ5IENoYW5nZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KTt2YXIgT1QsUFQsd1Qsa1Q7IShmdW5jdGlvbih0KXt0LkRBVEFTRVRfVU5LTk9XTj0iREFUQVNFVF9VTktOT1dOIix0LkRBVEFTRVRfVFJBSU5JTkc9IkRBVEFTRVRfVFJBSU5JTkciLHQuREFUQVNFVF9WQUxJREFUSU9OPSJEQVRBU0VUX1ZBTElEQVRJT04ifSkoT1R8fChPVD17fSkpLChmdW5jdGlvbih0KXt0LlNUQVRVU19VTktOT1dOPSJTVEFUVVNfVU5LTk9XTiIsdC5TVEFUVVNfU1VDQ0VTUz0iU1RBVFVTX1NVQ0NFU1MiLHQuU1RBVFVTX0ZBSUxVUkU9IlNUQVRVU19GQUlMVVJFIix0LlNUQVRVU19SVU5OSU5HPSJTVEFUVVNfUlVOTklORyJ9KShQVHx8KFBUPXt9KSksKGZ1bmN0aW9uKHQpe3QuREFUQV9UWVBFX1VOU0VUPSJEQVRBX1RZUEVfVU5TRVQiLHQuREFUQV9UWVBFX1NUUklORz0iREFUQV9UWVBFX1NUUklORyIsdC5EQVRBX1RZUEVfQk9PTD0iREFUQV9UWVBFX0JPT0wiLHQuREFUQV9UWVBFX0ZMT0FUNjQ9IkRBVEFfVFlQRV9GTE9BVDY0In0pKHdUfHwod1Q9e30pKSwoZnVuY3Rpb24odCl7dFt0LkRJU0NSRVRFPTBdPSJESVNDUkVURSIsdFt0LklOVEVSVkFMPTFdPSJJTlRFUlZBTCJ9KShrVHx8KGtUPXt9KSk7Y2xhc3MgU1R7fVNULsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxTVCl9LFNULsm1cHJvdj1Tbih7dG9rZW46U1QsZmFjdG9yeTpTVC7JtWZhYyxwcm92aWRlZEluOiJyb290In0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoU1QsW3t0eXBlOlVtLGFyZ3M6W3twcm92aWRlZEluOiJyb290In1dfV0sbnVsbCxudWxsKTtjb25zdCBEVD1faygiW0hwYXJhbXNdIEhwYXJhbXMgRGlzY3JldGUgSHBhcmFtIEZpbHRlciBDaGFuZ2VkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksUlQ9X2soIltIcGFyYW1zXSBIcGFyYW1zIEludGVydmFsIEhwYXJhbSBGaWx0ZXIgQ2hhbmdlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLEVUPV9rKCJbSHBhcmFtc10gSHBhcmFtcyBNZXRyaWMgRmlsdGVyIENoYW5nZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KTtmdW5jdGlvbiBBVCh0KXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkoWy4uLnRdLnNvcnQoKSl9ZnVuY3Rpb24gVFQodCl7dmFyIGUsbixvLGk7Y29uc3QgYT1uZXcgTWFwLHI9bmV3IE1hcCxzPW5ldyBNYXA7Zm9yKGNvbnN0IGEgb2YgdClmb3IoY29uc3RbdCxsXW9mIGEpaWYobC50eXBlPT09a1QuRElTQ1JFVEUpe2NvbnN0e3Bvc3NpYmxlVmFsdWVzOmUsdmFsdWVzOm59PXIuZ2V0KHQpfHx7cG9zc2libGVWYWx1ZXM6bmV3IFNldCx2YWx1ZXM6bmV3IFNldH07Zm9yKGNvbnN0IHQgb2YgbC5maWx0ZXJWYWx1ZXMpbi5hZGQodCk7Zm9yKGNvbnN0IHQgb2YgbC5wb3NzaWJsZVZhbHVlcyllLmFkZCh0KTtyLnNldCh0LHtwb3NzaWJsZVZhbHVlczplLHZhbHVlczpufSl9ZWxzZXtjb25zdCBhPXMuZ2V0KHQpO3Muc2V0KHQse2ZpbHRlckxvd2VyVmFsdWU6TWF0aC5taW4obC5maWx0ZXJMb3dlclZhbHVlLG51bGwhPT0oZT1udWxsPT1hP3ZvaWQgMDphLmZpbHRlckxvd2VyVmFsdWUpJiZ2b2lkIDAhPT1lP2U6MS8wKSxmaWx0ZXJVcHBlclZhbHVlOk1hdGgubWF4KGwuZmlsdGVyVXBwZXJWYWx1ZSxudWxsIT09KG49bnVsbD09YT92b2lkIDA6YS5maWx0ZXJVcHBlclZhbHVlKSYmdm9pZCAwIT09bj9uOi0xLzApLG1pblZhbHVlOk1hdGgubWluKGwubWluVmFsdWUsbnVsbCE9PShvPW51bGw9PWE/dm9pZCAwOmEubWluVmFsdWUpJiZ2b2lkIDAhPT1vP286MS8wKSxtYXhWYWx1ZTpNYXRoLm1heChsLm1heFZhbHVlLG51bGwhPT0oaT1udWxsPT1hP3ZvaWQgMDphLm1heFZhbHVlKSYmdm9pZCAwIT09aT9pOi0xLzApfSl9Zm9yKGNvbnN0W3Qse3ZhbHVlczplLHBvc3NpYmxlVmFsdWVzOm59XW9mIHIpYS5zZXQodCx7dHlwZTprVC5ESVNDUkVURSxpbmNsdWRlVW5kZWZpbmVkOiEwLHBvc3NpYmxlVmFsdWVzOlsuLi5uXSxmaWx0ZXJWYWx1ZXM6Wy4uLmVdfSk7Zm9yKGNvbnN0W3Qse21pblZhbHVlOmUsbWF4VmFsdWU6bixmaWx0ZXJMb3dlclZhbHVlOm8sZmlsdGVyVXBwZXJWYWx1ZTppfV1vZiBzKXtpZihhLmhhcyh0KSl7Y29uc3QgZT1hLmdldCh0KTtpZihlLnR5cGU9PT1rVC5ESVNDUkVURSYmZS5wb3NzaWJsZVZhbHVlcy5zb21lKCh0PT50KSkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoYENhbm5vdCBjb21iaW5lIGhwYXJhbSwgJHt0fSwgYXMgaXQgaXMgb2YgbWl4ZWQgdHlwZXMuYCl9YS5zZXQodCx7dHlwZTprVC5JTlRFUlZBTCxpbmNsdWRlVW5kZWZpbmVkOiEwLG1pblZhbHVlOmUsbWF4VmFsdWU6bixmaWx0ZXJMb3dlclZhbHVlOm8sZmlsdGVyVXBwZXJWYWx1ZTppfSl9cmV0dXJuIGF9ZnVuY3Rpb24gTlQodCl7dmFyIGUsbixvLGk7Y29uc3QgYT1uZXcgTWFwO2Zvcihjb25zdCByIG9mIHQpZm9yKGNvbnN0W3Qsc11vZiByKXtjb25zdCByPWEuZ2V0KHQpO2Euc2V0KHQsT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt0eXBlOmtULklOVEVSVkFMLGluY2x1ZGVVbmRlZmluZWQ6ITB9LHIpLHttaW5WYWx1ZTpNYXRoLm1pbihzLm1pblZhbHVlLG51bGwhPT0oZT1udWxsPT1yP3ZvaWQgMDpyLm1pblZhbHVlKSYmdm9pZCAwIT09ZT9lOjEvMCksbWF4VmFsdWU6TWF0aC5tYXgocy5tYXhWYWx1ZSxudWxsIT09KG49bnVsbD09cj92b2lkIDA6ci5tYXhWYWx1ZSkmJnZvaWQgMCE9PW4/bjotMS8wKSxmaWx0ZXJMb3dlclZhbHVlOk1hdGgubWluKHMuZmlsdGVyTG93ZXJWYWx1ZSxudWxsIT09KG89bnVsbD09cj92b2lkIDA6ci5maWx0ZXJMb3dlclZhbHVlKSYmdm9pZCAwIT09bz9vOjEvMCksZmlsdGVyVXBwZXJWYWx1ZTpNYXRoLm1heChzLmZpbHRlclVwcGVyVmFsdWUsbnVsbCE9PShpPW51bGw9PXI/dm9pZCAwOnIuZmlsdGVyVXBwZXJWYWx1ZSkmJnZvaWQgMCE9PWk/aTotMS8wKX0pKX1yZXR1cm4gYX1jb25zdCB6VD1WUyh7c3BlY3M6e30sZmlsdGVyczp7fX0sQlMoRFQsKCh0LGUpPT57dmFyIG47Y29uc3R7ZXhwZXJpbWVudElkczpvLGhwYXJhbU5hbWU6aSxmaWx0ZXJWYWx1ZXM6YSxpbmNsdWRlVW5kZWZpbmVkOnJ9PWUscz1BVChvKSxsPW51bGwhPT0obj10LmZpbHRlcnNbc10pJiZ2b2lkIDAhPT1uP246e2hwYXJhbXM6bmV3IE1hcH0sYz1sLmhwYXJhbXMuZ2V0KGkpO2lmKGMmJmMudHlwZSE9PWtULkRJU0NSRVRFKXRocm93IG5ldyBSYW5nZUVycm9yKGBOZXcgZGlzY3JldGUgZmlsdGVyIG9mICR7aX0gY29uZmxpY3RzIGV4aXN0aW5nIGZpbHRlciBvZiBgK2tUW2MudHlwZV0pO2NvbnN0IGQ9VFQoby5maWx0ZXIoKGU9PkJvb2xlYW4odC5zcGVjc1tlXSkpKS5tYXAoKGU9PnQuc3BlY3NbZV0uaHBhcmFtLmRlZmF1bHRGaWx0ZXJzKSkpLmdldChpKTtpZighZCl0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBzZXQgaHBhcmFtLCAke2l9LCB3aGVuIGl0IGlzIG5vdCBrbm93biBmb3IgZXhwZXJpbWVudElkczogJHtvLmpvaW4oIiwgIil9YCk7aWYoZC50eXBlIT09a1QuRElTQ1JFVEUpdGhyb3cgbmV3IEVycm9yKGBDYW5ub3Qgc2V0ICR7aX0gd2hlbiBkZWZhdWx0IGZpbHRlciBpcyBub3Qgb2YgZGlzY3JldGUgdHlwZS5gKTtjb25zdCBwPW5ldyBTZXQoZC5wb3NzaWJsZVZhbHVlcyksbT1bLi4uYV0uZmlsdGVyKCh0PT4hcC5oYXModCkpKTtpZihtLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoYE5ldyBmaWx0ZXIgZm9yICR7aX0gaGFzIG1vcmUgdGhhbiBvbmUgdmFsdWUgdGhhdCBpcyBub3QgcHJlc2VudCBpbiB0aGUgc3BlYy4gQmFkIHZhbHVlczogJHttLmpvaW4oIiwgIil9YCk7Y29uc3QgZj1uZXcgTWFwKGwuaHBhcmFtcyk7cmV0dXJuIGYuc2V0KGksT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGMpLHt0eXBlOmtULkRJU0NSRVRFLGluY2x1ZGVVbmRlZmluZWQ6cixwb3NzaWJsZVZhbHVlczpbLi4ucF0sZmlsdGVyVmFsdWVzOmF9KSksT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtmaWx0ZXJzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmZpbHRlcnMpLHtbc106T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGwpLHtocGFyYW1zOmZ9KX0pfSl9KSksQlMoUlQsKCh0LGUpPT57dmFyIG47Y29uc3R7ZXhwZXJpbWVudElkczpvLGhwYXJhbU5hbWU6aSxmaWx0ZXJMb3dlclZhbHVlOmEsZmlsdGVyVXBwZXJWYWx1ZTpyLGluY2x1ZGVVbmRlZmluZWQ6c309ZSxsPUFUKG8pLGM9bnVsbCE9PShuPXQuZmlsdGVyc1tsXSkmJnZvaWQgMCE9PW4/bjp7bWV0cmljczpuZXcgTWFwLGhwYXJhbXM6bmV3IE1hcH0sZD1jLmhwYXJhbXMuZ2V0KGkpO2lmKGQmJmQudHlwZSE9PWtULklOVEVSVkFMKXRocm93IG5ldyBSYW5nZUVycm9yKGBOZXcgaW50ZXJ2YWwgZmlsdGVyIG9mICR7aX0gY29uZmxpY3RzIGV4aXN0aW5nIGZpbHRlciBvZiBgK2tUW2QudHlwZV0pO2NvbnN0IHA9VFQoby5maWx0ZXIoKGU9PkJvb2xlYW4odC5zcGVjc1tlXSkpKS5tYXAoKGU9PnQuc3BlY3NbZV0uaHBhcmFtLmRlZmF1bHRGaWx0ZXJzKSkpLmdldChpKTtpZighcCl0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBzZXQgaHBhcmEsICR7aX0sIHdoZW4gaXQgaXMgbm90IGtub3duIGZvciBleHBlcmltZW50SWRzOiAke28uam9pbigiLCAiKX1gKTtpZihwLnR5cGUhPT1rVC5JTlRFUlZBTCl0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBzZXQgJHtpfSB3aGVuIGRlZmF1bHQgZmlsdGVyIGlzIG5vdCBvZiBpbnRlcnZhbCB0eXBlLmApO2NvbnN0IG09bmV3IE1hcChjLmhwYXJhbXMpO3JldHVybiBtLnNldChpLE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxkKSx7dHlwZTprVC5JTlRFUlZBTCxpbmNsdWRlVW5kZWZpbmVkOnMsbWluVmFsdWU6cC5taW5WYWx1ZSxtYXhWYWx1ZTpwLm1heFZhbHVlLGZpbHRlckxvd2VyVmFsdWU6YSxmaWx0ZXJVcHBlclZhbHVlOnJ9KSksT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtmaWx0ZXJzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmZpbHRlcnMpLHtbbF06T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGMpLHtocGFyYW1zOm19KX0pfSl9KSksQlMoRVQsKCh0LGUpPT57dmFyIG47Y29uc3R7ZXhwZXJpbWVudElkczpvLG1ldHJpY1RhZzppLGZpbHRlckxvd2VyVmFsdWU6YSxmaWx0ZXJVcHBlclZhbHVlOnIsaW5jbHVkZVVuZGVmaW5lZDpzfT1lLGw9QVQobyksYz1udWxsIT09KG49dC5maWx0ZXJzW2xdKSYmdm9pZCAwIT09bj9uOnttZXRyaWNzOm5ldyBNYXAsaHBhcmFtczpuZXcgTWFwfSxkPU5UKG8uZmlsdGVyKChlPT5Cb29sZWFuKHQuc3BlY3NbZV0pKSkubWFwKChlPT50LnNwZWNzW2VdLm1ldHJpYy5kZWZhdWx0RmlsdGVycykpKS5nZXQoaSk7aWYoIWQpdGhyb3cgbmV3IEVycm9yKGBDYW5ub3Qgc2V0IG1ldHJpYywgJHtpfSwgd2hlbiBpdCBpcyBub3Qga25vd24gZm9yIGV4cGVyaW1lbnRJZHM6ICR7by5qb2luKCIsICIpfWApO2NvbnN0IHA9Yy5tZXRyaWNzLmdldChpKSxtPW5ldyBNYXAoYy5tZXRyaWNzKTtyZXR1cm4gbS5zZXQoaSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30scCkse3R5cGU6a1QuSU5URVJWQUwsaW5jbHVkZVVuZGVmaW5lZDpzLG1pblZhbHVlOmQubWluVmFsdWUsbWF4VmFsdWU6ZC5tYXhWYWx1ZSxmaWx0ZXJMb3dlclZhbHVlOmEsZmlsdGVyVXBwZXJWYWx1ZTpyfSkpLE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7ZmlsdGVyczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5maWx0ZXJzKSx7W2xdOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxjKSx7bWV0cmljczptfSl9KX0pfSkpLEJTKHVULCgodCxlKT0+e3ZhciBuLG8saSxhO2lmKDA9PT1PYmplY3Qua2V5cyhlLm5ld1J1bnNBbmRNZXRhZGF0YSkubGVuZ3RoKXJldHVybiB0O2NvbnN0IHI9T2JqZWN0LmFzc2lnbih7fSx0LnNwZWNzKSxzPW5ldyBNYXAsbD1uZXcgU2V0O2Zvcihjb25zdCB0IG9mIE9iamVjdC5rZXlzKGUubmV3UnVuc0FuZE1ldGFkYXRhKSl7Y29uc3QgYz1uZXcgTWFwLGQ9bmV3IE1hcCxwPW5ldyBNYXAsbT1uZXcgTWFwLHtydW5zOmYsbWV0YWRhdGE6dX09ZS5uZXdSdW5zQW5kTWV0YWRhdGFbdF07Zm9yKGNvbnN0IHQgb2YgZil7Y29uc3QgZT11LnJ1blRvSHBhcmFtc0FuZE1ldHJpY3NbdC5pZF07aWYoZSlmb3IoY29uc3QgdCBvZiBlLm1ldHJpY3Mpe2NvbnN0IGU9cy5nZXQodC50YWcpO3Muc2V0KHQudGFnLHttaW46ZT9NYXRoLm1pbihlLm1pbix0LnZhbHVlKTp0LnZhbHVlLG1heDplP01hdGgubWF4KGUubWF4LHQudmFsdWUpOnQudmFsdWV9KX19Zm9yKGNvbnN0e25hbWU6dCxkb21haW46ZX1vZiB1LmhwYXJhbVNwZWNzKWlmKGUudHlwZT09PWtULkRJU0NSRVRFKXtjb25zdCBuPXAuZ2V0KHQpfHxuZXcgU2V0O2Zvcihjb25zdCB0IG9mIGUudmFsdWVzKW4uYWRkKHQpO3Auc2V0KHQsbil9ZWxzZXtjb25zdCBuPW0uZ2V0KHQpO20uc2V0KHQse21pblZhbHVlOm4/TWF0aC5taW4oZS5taW5WYWx1ZSxuLm1pblZhbHVlKTplLm1pblZhbHVlLG1heFZhbHVlOm4/TWF0aC5tYXgoZS5tYXhWYWx1ZSxuLm1heFZhbHVlKTplLm1heFZhbHVlfSl9Zm9yKGNvbnN0IHQgb2YgdS5tZXRyaWNTcGVjcylsLmFkZCh0LnRhZyk7Zm9yKGNvbnN0W3QsZV1vZiBwKWMuc2V0KHQse3R5cGU6a1QuRElTQ1JFVEUsaW5jbHVkZVVuZGVmaW5lZDohMCxwb3NzaWJsZVZhbHVlczpbLi4uZV0sZmlsdGVyVmFsdWVzOlsuLi5lXX0pO2Zvcihjb25zdFt0LHttaW5WYWx1ZTplLG1heFZhbHVlOm59XW9mIG0pYy5zZXQodCx7dHlwZTprVC5JTlRFUlZBTCxpbmNsdWRlVW5kZWZpbmVkOiEwLG1pblZhbHVlOmUsbWF4VmFsdWU6bixmaWx0ZXJMb3dlclZhbHVlOmUsZmlsdGVyVXBwZXJWYWx1ZTpufSk7Zm9yKGNvbnN0IHQgb2YgbCl7Y29uc3QgZT1zLmdldCh0KSxpPW51bGwhPT0obj1udWxsPT1lP3ZvaWQgMDplLm1pbikmJnZvaWQgMCE9PW4/bjowLGE9bnVsbCE9PShvPW51bGw9PWU/dm9pZCAwOmUubWF4KSYmdm9pZCAwIT09bz9vOjA7ZC5zZXQodCx7dHlwZTprVC5JTlRFUlZBTCxpbmNsdWRlVW5kZWZpbmVkOiEwLG1pblZhbHVlOmksbWF4VmFsdWU6YSxmaWx0ZXJMb3dlclZhbHVlOmksZmlsdGVyVXBwZXJWYWx1ZTphfSl9clt0XT17aHBhcmFtOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxudWxsPT09KGk9clt0XSl8fHZvaWQgMD09PWk/dm9pZCAwOmkuaHBhcmFtKSx7c3BlY3M6dS5ocGFyYW1TcGVjcyxkZWZhdWx0RmlsdGVyczpjfSksbWV0cmljOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxudWxsPT09KGE9clt0XSl8fHZvaWQgMD09PWE/dm9pZCAwOmEubWV0cmljKSx7c3BlY3M6dS5tZXRyaWNTcGVjcyxkZWZhdWx0RmlsdGVyczpkfSl9fXJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3NwZWNzOnJ9KX0pKSk7ZnVuY3Rpb24gSVQodCxlKXtyZXR1cm4gelQodCxlKX1jb25zdCBIVD0iaHBhcmFtcyI7Y2xhc3MgRlR7fUZULsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxGVCl9LEZULsm1bW9kPWZvKHt0eXBlOkZUfSksRlQuybVpbmo9RG4oe2ltcG9ydHM6W1tUUy5mb3JGZWF0dXJlKEhULElUKV1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihGVCxbe3R5cGU6TF8sYXJnczpbe2ltcG9ydHM6W1RTLmZvckZlYXR1cmUoSFQsSVQpXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKEZULHtpbXBvcnRzOltBU119KTtjbGFzcyBMVHt9ZnVuY3Rpb24gQlQodCxlKXtyZXR1cm5gJHtlfS8ke3R9YH1MVC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8TFQpfSxMVC7JtW1vZD1mbyh7dHlwZTpMVH0pLExULsm1aW5qPURuKHtpbXBvcnRzOltbRlRdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoTFQsW3t0eXBlOkxfLGFyZ3M6W3tpbXBvcnRzOltGVF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhMVCx7aW1wb3J0czpbRlRdfSk7Y2xhc3MgVlR7Y29uc3RydWN0b3IodCl7dGhpcy5odHRwPXR9ZmV0Y2hSdW5zKHQpe3JldHVybiB0aGlzLmh0dHAuZ2V0KCJkYXRhL3J1bnMiKS5waXBlKFZ0KChlPT5lLm1hcCgoZT0+KHtpZDpCVChlLHQpLG5hbWU6ZSxzdGFydFRpbWU6MH0pKSkpKSl9ZmV0Y2hIcGFyYW1zTWV0YWRhdGEodCl7cmV0dXJuIHp0KHtocGFyYW1TcGVjczpbXSxtZXRyaWNTcGVjczpbXSxydW5Ub0hwYXJhbXNBbmRNZXRyaWNzOnt9fSl9fVZULsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxWVCkoVHIoSEUpKX0sVlQuybVwcm92PVNuKHt0b2tlbjpWVCxmYWN0b3J5OlZULsm1ZmFjfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihWVCxbe3R5cGU6VW19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6SEV9XX0pLG51bGwpO2NsYXNzIGpUe31qVC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8alQpfSxqVC7JtW1vZD1mbyh7dHlwZTpqVH0pLGpULsm1aW5qPURuKHtwcm92aWRlcnM6W3twcm92aWRlOlNULHVzZUNsYXNzOlZUfV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGpULFt7dHlwZTpMXyxhcmdzOlt7cHJvdmlkZXJzOlt7cHJvdmlkZTpTVCx1c2VDbGFzczpWVH1dfV19XSxudWxsLG51bGwpO2NvbnN0IFVUPSJhbGVydHMiLFdUPWJTKF9TKFVUKSwodD0+dC5sYXRlc3RBbGVydCkpLEdUPSJleHBlcmltZW50cyIsWVQ9YlMoX1MoR1QpLCh0PT50LmRhdGEpKSxxVD1iUyhZVCwoKHQsZSk9Pntjb25zdHtleHBlcmltZW50SWQ6bn09ZTtyZXR1cm4gdC5leHBlcmltZW50TWFwW25dfHxudWxsfSkpOwovKiEgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLgoKICAgIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZC9vciBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueQogICAgcHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLgoKICAgIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBUSEUgQVVUSE9SIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUyBXSVRICiAgICBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkKICAgIEFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIERJUkVDVCwKICAgIElORElSRUNULCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMgV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTQogICAgTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1IKICAgIE9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IKICAgIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuCiAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwpmdW5jdGlvbiBaVCh0LGUpe3ZhciBuPXt9O2Zvcih2YXIgbyBpbiB0KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG8pJiZlLmluZGV4T2Yobyk8MCYmKG5bb109dFtvXSk7aWYobnVsbCE9dCYmImZ1bmN0aW9uIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBpPTA7Zm9yKG89T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh0KTtpPG8ubGVuZ3RoO2krKyllLmluZGV4T2Yob1tpXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHQsb1tpXSkmJihuW29baV1dPXRbb1tpXV0pfXJldHVybiBufWZ1bmN0aW9uIFhUKHQsZSxuLG8pe3JldHVybiBuZXcobnx8KG49UHJvbWlzZSkpKChmdW5jdGlvbihpLGEpe2Z1bmN0aW9uIHIodCl7dHJ5e2woby5uZXh0KHQpKX1jYXRjaCh0KXthKHQpfX1mdW5jdGlvbiBzKHQpe3RyeXtsKG8udGhyb3codCkpfWNhdGNoKHQpe2EodCl9fWZ1bmN0aW9uIGwodCl7dC5kb25lP2kodC52YWx1ZSk6KGZ1bmN0aW9uIGUodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBuP3Q6bmV3IG4oKGZ1bmN0aW9uKGUpe2UodCl9KSl9KSh0LnZhbHVlKS50aGVuKHIscyl9bCgobz1vLmFwcGx5KHQsZXx8W10pKS5uZXh0KCkpfSkpfXZhciBLVCxKVCxRVDshKGZ1bmN0aW9uKHQpe3QuU0NBTEFSUz0ic2NhbGFycyIsdC5ISVNUT0dSQU1TPSJoaXN0b2dyYW1zIix0LklNQUdFUz0iaW1hZ2VzIn0pKEtUfHwoS1Q9e30pKSwoZnVuY3Rpb24odCl7dC5ERUZBVUxUPSJkZWZhdWx0Iix0LkFMUEhBQkVUSUNBTD0iYWxwaGFiZXRpY2FsIix0LkFTQ0VORElORz0iYXNjZW5kaW5nIix0LkRFU0NFTkRJTkc9ImRlc2NlbmRpbmciLHQuTkVBUkVTVD0ibmVhcmVzdCJ9KShKVHx8KEpUPXt9KSksKGZ1bmN0aW9uKHQpe3RbdC5TVEVQPTBdPSJTVEVQIix0W3QuUkVMQVRJVkU9MV09IlJFTEFUSVZFIix0W3QuV0FMTF9USU1FPTJdPSJXQUxMX1RJTUUifSkoUVR8fChRVD17fSkpO2NvbnN0ICRUPSJ0aW1lc2VyaWVzIjtjb25zdCB0Tj1bS1QuSU1BR0VTXTtmdW5jdGlvbiBlTih0KXtyZXR1cm4gdE4uaW5jbHVkZXModCl9Y29uc3Qgbk49W0tULkhJU1RPR1JBTVMsS1QuSU1BR0VTXTtmdW5jdGlvbiBvTih0KXtyZXR1cm4gbk4uaW5jbHVkZXModCl9ZnVuY3Rpb24gaU4odCl7cmV0dXJuIG9OKHQucGx1Z2luKX1jbGFzcyBhTnt9ZnVuY3Rpb24gck4odCl7cmV0dXJuIHQuaGFzT3duUHJvcGVydHkoImVycm9yIil9Y29uc3Qgc049ImRhdGEvcGx1Z2luL3RpbWVzZXJpZXMiO2Z1bmN0aW9uIGxOKHQpe2NvbnN0IGU9dC5pbmRleE9mKCIvIik7cmV0dXJue3J1bjp0LnN1YnN0cmluZyhlKzEpLGV4cGVyaW1lbnRJZDp0LnN1YnN0cmluZygwLGUpfX1mdW5jdGlvbiBjTih0LGUpe3JldHVybmAke2V9LyR7dH1gfWZ1bmN0aW9uIGROKHQsZSl7Y29uc3R7cnVuVG9TZXJpZXM6bixydW46b309dCxpPVpUKHQsWyJydW5Ub1NlcmllcyIsInJ1biJdKSxhPU9iamVjdC5hc3NpZ24oe30saSk7cmV0dXJuIG4mJihhLnJ1blRvU2VyaWVzPXBOKG4sZSkpLG8mJihhLnJ1bklkPWNOKG8sZSkpLGF9ZnVuY3Rpb24gcE4odCxlKXtjb25zdCBuPXt9O2Zvcihjb25zdCBvIGluIHQpaWYodC5oYXNPd25Qcm9wZXJ0eShvKSl7bltjTihvLGUpXT10W29dfXJldHVybiBufWNsYXNzIG1Oe2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5odHRwPXQsdGhpcy5zdG9yZT1lfWZldGNoVGFnTWV0YWRhdGEodCl7Y29uc3QgZT10Lm1hcCgodD0+dGhpcy5odHRwLmdldChgL2V4cGVyaW1lbnQvJHt0fS8ke3NOfS90YWdzYCkucGlwZShWdCgoZT0+KGZ1bmN0aW9uIG4odCxlKXtjb25zdCBuPXt9O2Zvcihjb25zdCBvIG9mIE9iamVjdC5rZXlzKHQpKXtjb25zdCBpPW87aWYoZU4oaSkpe2NvbnN0IG89dFtpXSx7dGFnUnVuU2FtcGxlZEluZm86YX09byxyPVpUKG8sWyJ0YWdSdW5TYW1wbGVkSW5mbyJdKSxzPXt9O2Zvcihjb25zdCB0IGluIGEpYS5oYXNPd25Qcm9wZXJ0eSh0KSYmKHNbdF09cE4oYVt0XSxlKSk7bltpXT1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30scikse3RhZ1J1blNhbXBsZWRJbmZvOnN9KX1lbHNle2NvbnN0IG89dFtpXSx7cnVuVGFnSW5mbzphfT1vLHI9WlQobyxbInJ1blRhZ0luZm8iXSk7bltpXT1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30scikse3J1blRhZ0luZm86cE4oYSxlKX0pfX1yZXR1cm4gbn0pKGUsdCkpKSkpKSxuPXRoaXMuc3RvcmUuc2VsZWN0KE5EKS5waXBlKHVlKEJvb2xlYW4pLHZlKDEpLHFlKHRoaXMuc3RvcmUuc2VsZWN0KFdEKSksVnQoKChbLHRdKT0+dCkpKTtyZXR1cm4gaWUoZSkucGlwZShxZShuKSxWdCgoKFt0LGVdKT0+e2NvbnN0IG49KGZ1bmN0aW9uIG8odCl7Y29uc3QgZT17fTtmb3IoY29uc3QgbiBvZiB0KWZvcihjb25zdCB0IG9mIE9iamVjdC52YWx1ZXMoS1QpKWlmKGVOKHQpKXtlW3RdPWVbdF18fHt0YWdEZXNjcmlwdGlvbnM6e30sdGFnUnVuU2FtcGxlZEluZm86e319O2NvbnN0e3RhZ0Rlc2NyaXB0aW9uczpvLHRhZ1J1blNhbXBsZWRJbmZvOml9PW5bdF07ZVt0XS50YWdEZXNjcmlwdGlvbnM9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGVbdF0udGFnRGVzY3JpcHRpb25zKSxvKTtjb25zdCBhPWVbdF0udGFnUnVuU2FtcGxlZEluZm87Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LmtleXMoaSkpe2FbdF09YVt0XXx8e307Zm9yKGNvbnN0IGUgb2YgT2JqZWN0LmtleXMoaVt0XSkpYVt0XVtlXT1pW3RdW2VdfX1lbHNle2VbdF09ZVt0XXx8e3RhZ0Rlc2NyaXB0aW9uczp7fSxydW5UYWdJbmZvOnt9fTtjb25zdHt0YWdEZXNjcmlwdGlvbnM6byxydW5UYWdJbmZvOml9PW5bdF07ZVt0XS50YWdEZXNjcmlwdGlvbnM9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGVbdF0udGFnRGVzY3JpcHRpb25zKSxvKSxlW3RdLnJ1blRhZ0luZm89T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGVbdF0ucnVuVGFnSW5mbyksaSl9cmV0dXJuIGV9KSh0KTtyZXR1cm4gZXx8KG5bS1QuSU1BR0VTXT17dGFnRGVzY3JpcHRpb25zOnt9LHRhZ1J1blNhbXBsZWRJbmZvOnt9fSksbn0pKSl9ZmV0Y2hUaW1lU2VyaWVzKHQpe2NvbnN0IGU9dC5tYXAoKHQ9PntpZihvTih0LnBsdWdpbikpe2NvbnN0IGU9dCx7cnVuSWQ6bn09ZSxvPVpUKGUsWyJydW5JZCJdKSx7cnVuOmksZXhwZXJpbWVudElkOmF9PWxOKG4pLHI9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG8pLHtydW46aX0pO3JldHVybiB0aGlzLmZldGNoVGltZVNlcmllc0JhY2tlbmRSZXF1ZXN0KHIsYSkucGlwZShWdCgoKHtyZXNwb25zZTp0LGV4cGVyaW1lbnRJZDplfSk9PmROKHQsZSkpKSl9Y29uc3QgZT10LHtleHBlcmltZW50SWRzOm59PWUsbz1aVChlLFsiZXhwZXJpbWVudElkcyJdKTtyZXR1cm4gaWUobi5tYXAoKHQ9PnRoaXMuZmV0Y2hUaW1lU2VyaWVzQmFja2VuZFJlcXVlc3Qobyx0KSkpKS5waXBlKFZ0KCh0PT57Y29uc3QgZT1aVCh0WzBdLnJlc3BvbnNlLFsicnVuVG9TZXJpZXMiLCJlcnJvciJdKTtmb3IoY29uc3R7cmVzcG9uc2U6bixleHBlcmltZW50SWQ6b31vZiB0KXtjb25zdCB0PWROKG4sbyk7aWYoZS5lcnJvciljb250aW51ZTtjb25zdHtydW5Ub1NlcmllczppLGVycm9yOmF9PXQ7aWYoYSllLmVycm9yPWEsZS5ydW5Ub1Nlcmllcz12b2lkIDA7ZWxzZXtlLnJ1blRvU2VyaWVzPWUucnVuVG9TZXJpZXN8fHt9O2Zvcihjb25zdCB0IG9mIE9iamVjdC5rZXlzKGkpKWUucnVuVG9TZXJpZXNbdF09aVt0XX19cmV0dXJuIGV9KSkpfSkpO3JldHVybiBpZShlKX1mZXRjaFRpbWVTZXJpZXNCYWNrZW5kUmVxdWVzdCh0LGUpe2NvbnN0IG49bmV3IEZvcm1EYXRhO3JldHVybiBuLmFwcGVuZCgicmVxdWVzdHMiLEpTT04uc3RyaW5naWZ5KFt0XSkpLHRoaXMuaHR0cC5wb3N0KGAvZXhwZXJpbWVudC8ke2V9LyR7c059L3RpbWVTZXJpZXNgLG4pLnBpcGUoVnQoKHQ9Pih7cmVzcG9uc2U6dFswXSxleHBlcmltZW50SWQ6ZX0pKSkpfWltYWdlVXJsKHQpe3JldHVybmAke3NOfS9pbWFnZURhdGE/aW1hZ2VJZD0ke3R9YH1kb3dubG9hZFVybCh0LGUsbixvKXtjb25zdHtydW46aSxleHBlcmltZW50SWQ6YX09bE4obik7bGV0IHI7c3dpdGNoKHQpe2Nhc2UgS1QuU0NBTEFSUzpyPSJzY2FsYXJzL3NjYWxhcnMiO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGBOb3QgaW1wbGVtZW50ZWQ6IGRvd25sb2FkVXJsIGZvciAke3R9IGlzIG5vdCBpbXBsZW1lbnRlZCB5ZXRgKX1pZighYSl0aHJvdyBuZXcgRXJyb3IoImV4cGVyaW1lbnRJZCBpcyBlbXB0eTsgaXQgaXMgcmVxdWlyZWQgdG8gZm9ybSBkb3dubG9hZFVybC4iKTtyZXR1cm5gL2V4cGVyaW1lbnQvJHthfS9kYXRhL3BsdWdpbi8ke3J9PyR7bmV3IFVSTFNlYXJjaFBhcmFtcyh7dGFnOmUscnVuOmksZm9ybWF0Om99KX1gfX1tTi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8bU4pKFRyKEhFKSxUcihpUykpfSxtTi7JtXByb3Y9U24oe3Rva2VuOm1OLGZhY3Rvcnk6bU4uybVmYWN9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKG1OLFt7dHlwZTpVbX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpIRX0se3R5cGU6aVN9XX0pLG51bGwpO2NvbnN0IGZOPW5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCk7Y2xhc3MgdU57Z2V0UGFyYW1zKCl7cmV0dXJuIGZOfX11Ti7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8dU4pfSx1Ti7JtXByb3Y9U24oe3Rva2VuOnVOLGZhY3Rvcnk6dU4uybVmYWN9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHVOLFt7dHlwZTpVbX1dLG51bGwsbnVsbCk7Y2xhc3MgZ057fWdOLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxnTil9LGdOLsm1cHJvdj1Tbih7dG9rZW46Z04sZmFjdG9yeTpnTi7JtWZhY30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoZ04sW3t0eXBlOlVtfV0sbnVsbCxudWxsKTtjb25zdCBoTj0iZXhwZXJpbWVudGFsUGx1Z2luIixiTj0ic2NhbGFyc0JhdGNoU2l6ZSIseU49ImVuYWJsZUNhcmRXaWR0aFNldHRpbmciLF9OPSJlbmFibGVDb2xvckdyb3VwIixDTj0iZW5hYmxlQ29sb3JHcm91cEJ5UmVnZXgiLE1OPSJkYXJrTW9kZSIsdk49ImVuYWJsZUxpbmtUaW1lIix4Tj0iZW5hYmxlVGltZU5hbWVzcGFjZWRTdGF0ZSI7Y2xhc3MgT057Y29uc3RydWN0b3IodCl7dGhpcy5xdWVyeVBhcmFtcz10fWdldEZlYXR1cmVzKHQ9ITEpe2NvbnN0IGU9dGhpcy5xdWVyeVBhcmFtcy5nZXRQYXJhbXMoKSxuPXQ/dGhpcy5nZXRQYXJ0aWFsRmVhdHVyZXNGcm9tTWVkaWFRdWVyeSgpOnt9O3JldHVybiBlLmhhcyhoTikmJihuLmVuYWJsZWRFeHBlcmltZW50YWxQbHVnaW5zPWUuZ2V0QWxsKGhOKSksZS5oYXMoInRlbnNvcmJvYXJkQ29sYWIiKSYmKG4uaW5Db2xhYj0idHJ1ZSI9PT1lLmdldCgidGVuc29yYm9hcmRDb2xhYiIpKSxlLmhhcyhiTikmJihuLnNjYWxhcnNCYXRjaFNpemU9TnVtYmVyKGUuZ2V0KGJOKSkpLGUuaGFzKF9OKSYmKG4uZW5hYmxlZENvbG9yR3JvdXA9ImZhbHNlIiE9PWUuZ2V0KF9OKSksZS5oYXMoQ04pJiYobi5lbmFibGVkQ29sb3JHcm91cEJ5UmVnZXg9ImZhbHNlIiE9PWUuZ2V0KENOKSksZS5oYXMoTU4pJiYobi5kZWZhdWx0RW5hYmxlRGFya01vZGU9ImZhbHNlIiE9PWUuZ2V0KE1OKSksZS5oYXModk4pJiYobi5lbmFibGVkTGlua2VkVGltZT0iZmFsc2UiIT09ZS5nZXQodk4pKSxlLmhhcyh5TikmJihuLmVuYWJsZWRDYXJkV2lkdGhTZXR0aW5nPSJmYWxzZSIhPT1lLmdldCh5TikpLGUuaGFzKHhOKSYmKG4uZW5hYmxlZFRpbWVOYW1lc3BhY2VkU3RhdGU9ImZhbHNlIiE9PWUuZ2V0KHhOKSksbn1nZXRQYXJ0aWFsRmVhdHVyZXNGcm9tTWVkaWFRdWVyeSgpe2NvbnN0IHQ9e307cmV0dXJuIHdpbmRvdy5tYXRjaE1lZGlhKCIocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIikubWF0Y2hlcyYmKHQuZGVmYXVsdEVuYWJsZURhcmtNb2RlPSEwKSx0fX1PTi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8T04pKFRyKHVOKSl9LE9OLsm1cHJvdj1Tbih7dG9rZW46T04sZmFjdG9yeTpPTi7JtWZhY30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoT04sW3t0eXBlOlVtfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnVOfV19KSxudWxsKTtjbGFzcyBQTnt9UE4uybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFBOKX0sUE4uybVtb2Q9Zm8oe3R5cGU6UE59KSxQTi7JtWluaj1Ebih7cHJvdmlkZXJzOltPTix1Tix7cHJvdmlkZTpnTix1c2VDbGFzczpPTn1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihQTixbe3R5cGU6TF8sYXJnczpbe3Byb3ZpZGVyczpbT04sdU4se3Byb3ZpZGU6Z04sdXNlQ2xhc3M6T059XX1dfV0sbnVsbCxudWxsKTtjb25zdCB3Tj1faygiW0ZFQVRVUkUgRkxBR10gUGFydGlhbCBGZWF0dXJlIEZsYWdzIExvYWRlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLGtOPV9rKCJbRkVBVFVSRSBGTEFHXSBFbmFibGUgRGFyayBNb2RlIE92ZXJyaWRlIENoYW5nZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxTTj1faygiW0ZFQVRVUkUgRkxBR10gRWZmZWN0cyBJbml0Iik7Y2xhc3MgRE57Y29uc3RydWN0b3IodCxlLG4pe3RoaXMuYWN0aW9ucyQ9dCx0aGlzLnN0b3JlPWUsdGhpcy5kYXRhU291cmNlPW4sdGhpcy5nZXRGZWF0dXJlRmxhZ3MkPVdTKCgoKT0+dGhpcy5hY3Rpb25zJC5waXBlKCRTKFNOKSxfZSh0aGlzLnN0b3JlLnNlbGVjdChIRCkpLFZ0KCgoWyx0XSk9Pntjb25zdCBlPXRoaXMuZGF0YVNvdXJjZS5nZXRGZWF0dXJlcyh0KTtyZXR1cm4gd04oe2ZlYXR1cmVzOmV9KX0pKSkpKX1uZ3J4T25Jbml0RWZmZWN0cygpe3JldHVybiBTTigpfX1ETi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8RE4pKFRyKFFTKSxUcihpUyksVHIoZ04pKX0sRE4uybVwcm92PVNuKHt0b2tlbjpETixmYWN0b3J5OkROLsm1ZmFjfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihETixbe3R5cGU6VW19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6UVN9LHt0eXBlOmlTfSx7dHlwZTpnTn1dfSksbnVsbCk7Y29uc3QgUk49e2lzRmVhdHVyZUZsYWdzTG9hZGVkOiExLGRlZmF1bHRGbGFnczp7aXNBdXRvRGFya01vZGVBbGxvd2VkOiEwLGRlZmF1bHRFbmFibGVEYXJrTW9kZTohMSxlbmFibGVEYXJrTW9kZU92ZXJyaWRlOm51bGwsZW5hYmxlZENvbG9yR3JvdXA6ITAsZW5hYmxlZENvbG9yR3JvdXBCeVJlZ2V4OiEwLGVuYWJsZWRFeHBlcmltZW50YWxQbHVnaW5zOltdLGluQ29sYWI6ITEsc2NhbGFyc0JhdGNoU2l6ZTp2b2lkIDAsbWV0cmljc0ltYWdlU3VwcG9ydEVuYWJsZWQ6ITAsZW5hYmxlZExpbmtlZFRpbWU6ITEsZW5hYmxlVGltZVNlcmllc1Byb21vdGlvbjohMSxlbmFibGVkQ2FyZFdpZHRoU2V0dGluZzohMCxlbmFibGVkVGltZU5hbWVzcGFjZWRTdGF0ZTohMX0sZmxhZ092ZXJyaWRlczp7fX0sRU49bmV3IGVyKCJbRmVhdHVyZSBGbGFnXSBTdG9yZSBDb25maWciKTtmdW5jdGlvbiBBTigpe3JldHVybntpbml0aWFsU3RhdGU6Uk59fWNvbnN0IFROPVZTKFJOLEJTKHdOLCgodCx7ZmVhdHVyZXM6ZX0pPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2lzRmVhdHVyZUZsYWdzTG9hZGVkOiEwLGZsYWdPdmVycmlkZXM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuZmxhZ092ZXJyaWRlcyksZSl9KSkpLEJTKGtOLCgodCx7ZW5hYmxlRGFya01vZGU6ZX0pPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2ZsYWdPdmVycmlkZXM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuZmxhZ092ZXJyaWRlcykse2VuYWJsZURhcmtNb2RlT3ZlcnJpZGU6ZX0pfSkpKSxCUyhxUiwoKHQse3BhcnRpYWxTZXR0aW5nczplfSk9PntpZighZS50aGVtZU92ZXJyaWRlKXJldHVybiB0O2xldCBuO3N3aXRjaChlLnRoZW1lT3ZlcnJpZGUpe2Nhc2UgRlIuQlJPV1NFUl9ERUZBVUxUOm49bnVsbDticmVhaztjYXNlIEZSLkRBUks6bj0hMDticmVhaztjYXNlIEZSLkxJR0hUOm49ITF9cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7ZmxhZ092ZXJyaWRlczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5mbGFnT3ZlcnJpZGVzKSx7ZW5hYmxlRGFya01vZGVPdmVycmlkZTpufSl9KX0pKSk7ZnVuY3Rpb24gTk4odCxlKXtyZXR1cm4gVE4odCxlKX1mdW5jdGlvbiB6Tigpe3JldHVybiBiUyhMRCwodD0+bnVsbD09PXQ/e3RoZW1lT3ZlcnJpZGU6RlIuQlJPV1NFUl9ERUZBVUxUfTp7dGhlbWVPdmVycmlkZTp0P0ZSLkRBUks6RlIuTElHSFR9KSl9Y2xhc3MgSU57fUlOLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxJTil9LElOLsm1bW9kPWZvKHt0eXBlOklOfSksSU4uybVpbmo9RG4oe3Byb3ZpZGVyczpbe3Byb3ZpZGU6RU4sdXNlRmFjdG9yeTpBTn1dLGltcG9ydHM6W1tQTixUUy5mb3JGZWF0dXJlKEFELE5OLEVOKSxoRC5mb3JGZWF0dXJlKFtETl0pLHpSLmRlZmluZUdsb2JhbFNldHRpbmcoek4pXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKElOLFt7dHlwZTpMXyxhcmdzOlt7aW1wb3J0czpbUE4sVFMuZm9yRmVhdHVyZShBRCxOTixFTiksaEQuZm9yRmVhdHVyZShbRE5dKSx6Ui5kZWZpbmVHbG9iYWxTZXR0aW5nKHpOKV0scHJvdmlkZXJzOlt7cHJvdmlkZTpFTix1c2VGYWN0b3J5OkFOfV19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhJTix7aW1wb3J0czpbUE4sQVMsZ0QselJdfSk7Y2xhc3MgSE57fWZ1bmN0aW9uIEZOKHQsZSxuLG8pe3JldHVybiB0W2VdLmhhc093blByb3BlcnR5KG4pP2VOKGUpP3RbZV1bbl0uaGFzT3duUHJvcGVydHkobyk/dFtlXVtuXVtvXTpudWxsOnRbZV1bbl06bnVsbH1mdW5jdGlvbiBMTih0LGUsbixvKXtpZihlTihlKSl7Y29uc3QgaT1PYmplY3QuYXNzaWduKHt9LHRbZV0pLGE9KGZ1bmN0aW9uIGkodCxlLG4pe2NvbnN0IG89dC5oYXNPd25Qcm9wZXJ0eShlKT9PYmplY3QuYXNzaWduKHt9LHRbZV0pOnt9LGk9by5oYXNPd25Qcm9wZXJ0eShuKTtyZXR1cm4gb1tuXT1pP09iamVjdC5hc3NpZ24oe30sb1tuXSk6e3J1blRvU2VyaWVzOnt9LHJ1blRvTG9hZFN0YXRlOnt9fSxvfSkoaSxuLG8pO3JldHVybiBpW25dPWEsaX1jb25zdCBhPU9iamVjdC5hc3NpZ24oe30sdFtlXSkscj1hLmhhc093blByb3BlcnR5KG4pO3JldHVybiBhW25dPXI/T2JqZWN0LmFzc2lnbih7fSxhW25dKTp7cnVuVG9TZXJpZXM6e30scnVuVG9Mb2FkU3RhdGU6e319LGF9ZnVuY3Rpb24gQk4odCl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KHQpfWZ1bmN0aW9uIFZOKHQsZSxuKXtjb25zdCBvPU9iamVjdC5hc3NpZ24oe30sbik7Zm9yKGNvbnN0IG4gb2YgZSlvW25dPXQ7cmV0dXJuIG99ZnVuY3Rpb24gak4odCxlLG4sbyl7aWYoZU4oZSkpe2NvbnN0IGk9dFtlXS50YWdSdW5TYW1wbGVkSW5mbztpZighaS5oYXNPd25Qcm9wZXJ0eShuKSlyZXR1cm5bXTtyZXR1cm4gT2JqZWN0LmtleXMoaVtuXSkuZmlsdGVyKCh0PT5vPGlbbl1bdF0ubWF4U2FtcGxlc1BlclN0ZXApKX1jb25zdCBpPXRbZV0udGFnVG9SdW5zO3JldHVybiBpLmhhc093blByb3BlcnR5KG4pP2lbbl06W119ZnVuY3Rpb24gVU4odCxlKXtyZXR1cm4gdC5wbHVnaW49PT1lLnBsdWdpbiYmdC50YWc9PT1lLnRhZyYmdC5zYW1wbGU9PT1lLnNhbXBsZSYmKHQucnVuSWQ9PT1lLnJ1bklkfHwhdC5ydW5JZCYmIWUucnVuSWQpfWZ1bmN0aW9uIFdOKHQsZSxuLG8saSxhKXtjb25zdCByPW5ldyBTZXQodCkscz1bXTtmb3IoY29uc3QgbyBvZiB0KWZvcihjb25zdCB0IG9mIGUpe2lmKFVOKG5bdF0sbykpe3MucHVzaCh0KSxyLmRlbGV0ZShvKTticmVha319aWYoIXMubGVuZ3RoKXJldHVybnt1bnJlc29sdmVkSW1wb3J0ZWRQaW5uZWRDYXJkczp0LGNhcmRNZXRhZGF0YU1hcDpuLGNhcmRUb1Bpbm5lZENvcHk6byxwaW5uZWRDYXJkVG9PcmlnaW5hbDppLGNhcmRTdGVwSW5kZXg6YX07bGV0IGw9e2NhcmRUb1Bpbm5lZENvcHk6byxwaW5uZWRDYXJkVG9PcmlnaW5hbDppLGNhcmRTdGVwSW5kZXg6YSxjYXJkTWV0YWRhdGFNYXA6bn07Zm9yKGNvbnN0IHQgb2YgcylsPUdOKHQsbC5jYXJkVG9QaW5uZWRDb3B5LGwucGlubmVkQ2FyZFRvT3JpZ2luYWwsbC5jYXJkU3RlcEluZGV4LGwuY2FyZE1ldGFkYXRhTWFwKTtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGwpLHt1bnJlc29sdmVkSW1wb3J0ZWRQaW5uZWRDYXJkczpbLi4ucl19KX1mdW5jdGlvbiBHTih0LGUsbixvLGkpe2lmKGUuaGFzKHQpKXJldHVybntjYXJkVG9QaW5uZWRDb3B5OmUscGlubmVkQ2FyZFRvT3JpZ2luYWw6bixjYXJkU3RlcEluZGV4Om8sY2FyZE1ldGFkYXRhTWFwOml9O2NvbnN0IGE9bmV3IE1hcChlKSxyPW5ldyBNYXAobikscz1PYmplY3QuYXNzaWduKHt9LG8pLGw9T2JqZWN0LmFzc2lnbih7fSxpKSxjPShmdW5jdGlvbiBkKHQpe3JldHVybiBKU09OLnN0cmluZ2lmeSh7YmFzZUNhcmRJZDp0fSl9KSh0KTthLnNldCh0LGMpLHIuc2V0KGMsdCksby5oYXNPd25Qcm9wZXJ0eSh0KSYmKHNbY109b1t0XSk7Y29uc3QgcD1pW3RdO2lmKCFwKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IHBpbiBhIGNhcmQgd2l0aG91dCBtZXRhZGF0YSIpO3JldHVybiBsW2NdPXAse2NhcmRUb1Bpbm5lZENvcHk6YSxwaW5uZWRDYXJkVG9PcmlnaW5hbDpyLGNhcmRTdGVwSW5kZXg6cyxjYXJkTWV0YWRhdGFNYXA6bH19SE4uybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEhOKX0sSE4uybVtb2Q9Zm8oe3R5cGU6SE59KSxITi7JtWluaj1Ebih7cHJvdmlkZXJzOlt7cHJvdmlkZTphTix1c2VDbGFzczptTn1dLGltcG9ydHM6W1tJTixGRV1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihITixbe3R5cGU6TF8sYXJnczpbe2ltcG9ydHM6W0lOLEZFXSxwcm92aWRlcnM6W3twcm92aWRlOmFOLHVzZUNsYXNzOm1OfV19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhITix7aW1wb3J0czpbSU4sRkVdfSk7Y29uc3QgWU49MTA7ZnVuY3Rpb24gcU4odCl7cmV0dXJuIHQucGlubmVkQ2FyZFRvT3JpZ2luYWwuc2l6ZSt0LnVucmVzb2x2ZWRJbXBvcnRlZFBpbm5lZENhcmRzLmxlbmd0aDxZTn1jb25zdCBaTj0ibWV0cmljcyIsWE49e2NhcmRNaW5XaWR0aDpudWxsLHRvb2x0aXBTb3J0OkpULkFMUEhBQkVUSUNBTCxpZ25vcmVPdXRsaWVyczohMCx4QXhpc1R5cGU6UVQuU1RFUCxzY2FsYXJTbW9vdGhpbmc6LjYsc2NhbGFyUGFydGl0aW9uTm9uTW9ub3RvbmljWDohMSxpbWFnZUJyaWdodG5lc3NJbk1pbGxpOjFlMyxpbWFnZUNvbnRyYXN0SW5NaWxsaToxZTMsaW1hZ2VTaG93QWN0dWFsU2l6ZTohMSxoaXN0b2dyYW1Nb2RlOmpFLk9GRlNFVH0sS049X1MoWk4pLEpOPWJTKEtOLCh0PT50LnRhZ01ldGFkYXRhTG9hZFN0YXRlKSk7YlMoS04sKHQ9PnQudGFnTWV0YWRhdGEpKTtjb25zdCBRTj1iUyhLTiwodD0+dC5jYXJkTGlzdCkpLCROPWJTKEtOLCgodCxlKT0+e2lmKCF0LmNhcmRNZXRhZGF0YU1hcC5oYXNPd25Qcm9wZXJ0eShlKSlyZXR1cm4gVUUuTk9UX0xPQURFRDtjb25zdHtwbHVnaW46bix0YWc6byxydW5JZDppLHNhbXBsZTphfT10LmNhcmRNZXRhZGF0YU1hcFtlXSxyPUZOKHQudGltZVNlcmllc0RhdGEsbixvLGEpO2lmKCFyKXJldHVybiBVRS5OT1RfTE9BREVEO2NvbnN0IHM9ci5ydW5Ub0xvYWRTdGF0ZTtpZihpKXJldHVybiBzLmhhc093blByb3BlcnR5KGkpP3NbaV06VUUuTk9UX0xPQURFRDtjb25zdCBsPWpOKHQudGFnTWV0YWRhdGEsbixvLGEpO2lmKCFsLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBsb2FkIGEgY2FyZCB3aG9zZSB0YWcgaGFzIG5vIHJ1bnMiKTtyZXR1cm4gbC5ldmVyeSgodD0+c1t0XT09PVVFLkxPQURFRCkpP1VFLkxPQURFRDpsLnNvbWUoKHQ9PnNbdF09PT1VRS5MT0FESU5HKSk/VUUuTE9BRElORzpVRS5OT1RfTE9BREVEfSkpLHR6PWJTKEtOLCgodCxlKT0+e2lmKCF0LmNhcmRNZXRhZGF0YU1hcC5oYXNPd25Qcm9wZXJ0eShlKSlyZXR1cm4gbnVsbDtjb25zdHtwbHVnaW46bix0YWc6byxzYW1wbGU6aX09dC5jYXJkTWV0YWRhdGFNYXBbZV0sYT1GTih0LnRpbWVTZXJpZXNEYXRhLG4sbyxpKTtyZXR1cm4gYT9hLnJ1blRvU2VyaWVzOm51bGx9KSksZXo9YlMoS04sKHQ9PnQuY2FyZE1ldGFkYXRhTWFwKSksbno9YlMoZXosKCh0LGUpPT50Lmhhc093blByb3BlcnR5KGUpP3RbZV06bnVsbCkpLG96PWJTKEtOLCh0PT50LnZpc2libGVDYXJkTWFwKSksaXo9YlMob3osKHQ9Pm5ldyBTZXQodC52YWx1ZXMoKSkpKSxhej1iUyhRTixleiwoKHQsZSk9PnQuZmlsdGVyKCh0PT5lLmhhc093blByb3BlcnR5KHQpKSkubWFwKCh0PT5PYmplY3QuYXNzaWduKHtjYXJkSWQ6dH0sZVt0XSkpKSkpLHJ6PWJTKEtOLCgodCxlKT0+dC5jYXJkU3RlcEluZGV4Lmhhc093blByb3BlcnR5KGUpP3QuY2FyZFN0ZXBJbmRleFtlXTpudWxsKSksc3o9YlMoS04sKHQ9PnQuY2FyZFRvUGlubmVkQ29weSkpLGx6PWJTKEtOLCh0PT50LnBpbm5lZENhcmRUb09yaWdpbmFsKSksY3o9YlMoc3osZXosKCh0LGUpPT5bLi4udC52YWx1ZXMoKV0uZmlsdGVyKCh0PT5lLmhhc093blByb3BlcnR5KHQpKSkubWFwKCh0PT5PYmplY3QuYXNzaWduKHtjYXJkSWQ6dH0sZVt0XSkpKSkpLGR6PWJTKHN6LGx6LCgodCxlLG4pPT50LmhhcyhuKXx8ZS5oYXMobikpKSxwej1iUyhLTiwodD0+dC51bnJlc29sdmVkSW1wb3J0ZWRQaW5uZWRDYXJkcykpLG16PWJTKEtOLCh0PT5xTih0KSkpLGZ6PWJTKEtOLCh0PT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5zZXR0aW5ncyksdC5zZXR0aW5nT3ZlcnJpZGVzKSkpLHV6PWJTKEtOLCh0PT50LnNldHRpbmdPdmVycmlkZXMpKSxnej1iUyhmeiwodD0+dC5jYXJkTWluV2lkdGgpKSxoej1iUyhmeiwodD0+dC50b29sdGlwU29ydCkpLGJ6PWJTKGZ6LCh0PT50Lmlnbm9yZU91dGxpZXJzKSkseXo9YlMoZnosKHQ9PnQueEF4aXNUeXBlKSksX3o9YlMoZnosKHQ9PnQuaGlzdG9ncmFtTW9kZSkpLEN6PWJTKGZ6LCh0PT50LnNjYWxhclNtb290aGluZykpLE16PWJTKGZ6LCh0PT50LnNjYWxhclBhcnRpdGlvbk5vbk1vbm90b25pY1gpKSx2ej1iUyhmeiwodD0+dC5pbWFnZUJyaWdodG5lc3NJbk1pbGxpKSkseHo9YlMoZnosKHQ9PnQuaW1hZ2VDb250cmFzdEluTWlsbGkpKSxPej1iUyhmeiwodD0+dC5pbWFnZVNob3dBY3R1YWxTaXplKSksUHo9YlMoS04sKHQ9PnQudGFnRmlsdGVyKSksd3o9YlMoS04sKCh0LGUpPT5Cb29sZWFuKHQudGFnR3JvdXBFeHBhbmRlZC5nZXQoZSkpKSksa3o9YlMoS04sKHQ9PnQuc2VsZWN0VGltZUVuYWJsZWQpKSxTej1iUyhLTiwodD0+dC51c2VSYW5nZVNlbGVjdFRpbWUpKSxEej1iUyhLTiwodD0+e2NvbnN0e21pbjplLG1heDpufT10LnN0ZXBNaW5NYXg7cmV0dXJue21pbjplPT09MS8wPzA6ZSxtYXg6bj09PS0xLzA/MWUzOm59fSkpLFJ6PWJTKEtOLER6LCgodCxlKT0+e3ZhciBuO3JldHVybiB0LnNlbGVjdGVkVGltZT9PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5zZWxlY3RlZFRpbWUpLHtlbmQ6bnVsbCE9PShuPXQuc2VsZWN0ZWRUaW1lLmVuZCkmJnZvaWQgMCE9PW4/bjp7c3RlcDplLm1heH19KTp7c3RhcnQ6e3N0ZXA6ZS5taW59LGVuZDp7c3RlcDplLm1heH19fSkpLEV6PWJTKEtOLFJ6LCgodCxlKT0+dC5zZWxlY3RUaW1lRW5hYmxlZD90LnVzZVJhbmdlU2VsZWN0VGltZT9lOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxlKSx7ZW5kOm51bGx9KTpudWxsKSksQXo9YlMoS04sKHQ9PnQuZmlsdGVyZWRQbHVnaW5UeXBlcykpLFR6PWJTKEtOLCh0PT50LnByb21vdGVUaW1lU2VyaWVzKSksTno9YlMoS04sKHQ9PnQuaXNTZXR0aW5nc1BhbmVPcGVuKSk7dmFyIHp6OyEoZnVuY3Rpb24odCl7dFt0Lk5PTkU9MF09Ik5PTkUiLHRbdC5XSEFUU19ORVc9MV09IldIQVRTX05FVyJ9KSh6enx8KHp6PXt9KSk7Y29uc3QgSXo9X1MoIm5vdGlmaWNhdGlvbiIpO2JTKEl6LCh0PT50Lm5vdGlmaWNhdGlvbnMpKSxiUyhJeiwodD0+e3ZhciBlO3JldHVybiBudWxsIT09KGU9dC5sYXN0UmVhZFRpbWVzdGFtcEluTXMpJiZ2b2lkIDAhPT1lP2U6LTF9KSk7Y29uc3QgSHo9InJ1bnMiO3ZhciBGeixMejtmdW5jdGlvbiBCeih0KXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkodC5zbGljZSgpLnNvcnQoKSl9ZnVuY3Rpb24gVnoodCxlLG4pe2NvbnN0IG89e30saT1bXSxhPXttYXRjaGVzOm8sbm9uTWF0Y2hlczppfTtzd2l0Y2godC5rZXkpe2Nhc2UgTHouUlVOOmZvcihjb25zdCB0IG9mIGUpb1t0LmlkXT1bdF07YnJlYWs7Y2FzZSBMei5FWFBFUklNRU5UOmZvcihjb25zdCB0IG9mIGUpe2NvbnN0IGU9blt0LmlkXSxpPW9bZV18fFtdO2kucHVzaCh0KSxvW2VdPWl9YnJlYWs7Y2FzZSBMei5SRUdFWDppZighdC5yZWdleFN0cmluZylicmVhaztsZXQgYTt0cnl7YT1uZXcgUmVnRXhwKHQucmVnZXhTdHJpbmcpfWNhdGNoKHQpe2JyZWFrfWZvcihjb25zdCB0IG9mIGUpe2NvbnN0IGU9dC5uYW1lLm1hdGNoKGEpO2lmKGUpe2NvbnN0IG49ZS5sZW5ndGg+MT9KU09OLnN0cmluZ2lmeShlLnNsaWNlKDEpKToicHNldWRvX2dyb3VwIixpPW9bbl18fFtdO2kucHVzaCh0KSxvW25dPWl9ZWxzZSBpLnB1c2godCl9fXJldHVybiBhfWZ1bmN0aW9uIGp6KHQsZSl7c3dpdGNoKHQpe2Nhc2UgTHouUkVHRVg6cmV0dXJue2tleTp0LHJlZ2V4U3RyaW5nOm51bGwhPWU/ZToiIn07Y2FzZSBMei5SVU46Y2FzZSBMei5FWFBFUklNRU5UOmRlZmF1bHQ6cmV0dXJue2tleTp0fX19IShmdW5jdGlvbih0KXt0W3QuRVhQRVJJTUVOVF9OQU1FPTBdPSJFWFBFUklNRU5UX05BTUUiLHRbdC5IUEFSQU09MV09IkhQQVJBTSIsdFt0Lk1FVFJJQz0yXT0iTUVUUklDIix0W3QuUlVOX05BTUU9M109IlJVTl9OQU1FIn0pKEZ6fHwoRno9e30pKSwoZnVuY3Rpb24odCl7dFt0LlJVTj0wXT0iUlVOIix0W3QuRVhQRVJJTUVOVD0xXT0iRVhQRVJJTUVOVCIsdFt0LlJFR0VYPTJdPSJSRUdFWCJ9KShMenx8KEx6PXt9KSk7Y29uc3QgVXo9X1MoSHopLFd6PWJTKFV6LCh0PT50LmRhdGEpKSxHej1iUyhXeiwoKHQsZSk9Pnt2YXIgbjtyZXR1cm4gbnVsbCE9PShuPXQucnVuSWRUb0V4cElkW2UucnVuSWRdKSYmdm9pZCAwIT09bj9uOm51bGx9KSksWXo9YlMoV3osKCh0LGUpPT57dmFyIG47cmV0dXJuIG51bGwhPT0obj10LnJ1bk1ldGFkYXRhW2UucnVuSWRdKSYmdm9pZCAwIT09bj9uOm51bGx9KSkscXo9YlMoV3osKCh0LGUpPT4odC5ydW5JZHNbZS5leHBlcmltZW50SWRdfHxbXSkuZmlsdGVyKChlPT5Cb29sZWFuKHQucnVuTWV0YWRhdGFbZV0pKSkubWFwKChlPT50LnJ1bk1ldGFkYXRhW2VdKSkpKSxaej1iUyhXeiwoKHQsZSk9Pnt2YXIgbjtyZXR1cm4gbnVsbCE9PShuPXQucnVuSWRzW2UuZXhwZXJpbWVudElkXSkmJnZvaWQgMCE9PW4/bjpbXX0pKSxYej1iUyhXeiwodD0+bmV3IE1hcChPYmplY3QuZW50cmllcyh0LnJ1bk1ldGFkYXRhKSkpKSxLej1iUyhXeiwoKHQsZSk9PnQucnVuc0xvYWRTdGF0ZVtlLmV4cGVyaW1lbnRJZF18fHtsYXN0TG9hZGVkVGltZUluTXM6bnVsbCxzdGF0ZTpVRS5OT1RfTE9BREVEfSkpLEp6PWJTKFd6LCgodCxlKT0+e2NvbnN0IG49QnooZS5leHBlcmltZW50SWRzKTtyZXR1cm4gdC5zZWxlY3Rpb25TdGF0ZS5nZXQobil8fG5ldyBNYXB9KSksUXo9YlMoV3osKHQ9Pm51bGwhPT10LnVzZXJTZXRHcm91cEJ5S2V5P2p6KHQudXNlclNldEdyb3VwQnlLZXksdC5jb2xvckdyb3VwUmVnZXhTdHJpbmcpOm51bGwpKSwkej1iUyhReixXeiwoKHQsZSk9Pm51bGwhPXQ/dDplLmluaXRpYWxHcm91cEJ5KSksdEk9YlMoV3osKHQ9PnQucmVnZXhGaWx0ZXIpKSxlST1iUyhVeiwodD0+dC51aSkpLG5JPWJTKGVJLCh0PT50LnBhZ2luYXRpb25PcHRpb24pKSxvST1iUyhlSSwodD0+dC5zb3J0KSksaUk9YlMoV3osKHQ9PnQucnVuQ29sb3JPdmVycmlkZUZvckdyb3VwQnkpKSxhST1iUyhXeiwodD0+dC5kZWZhdWx0UnVuQ29sb3JJZEZvckdyb3VwQnkpKSxyST1iUyhXeiwodD0+dC5jb2xvckdyb3VwUmVnZXhTdHJpbmcpKSxzST1faygiW1NldHRpbmdzXSBSZWxvYWQgRW5hYmxlIFRvZ2dsZWQiKSxsST1faygiW1NldHRpbmdzXSBSZWxvYWQgUGVyaW9kIENoYW5nZSIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLGNJPV9rKCJbU2V0dGluZ3NdIFBhZ2UgU2l6ZSBDaGFuZ2UiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxkST0ic2V0dGluZ3MiLHBJPXtzdGF0ZTpVRS5MT0FERUQsbGFzdExvYWRlZFRpbWVJbk1zOkRhdGUubm93KCksc2V0dGluZ3M6e3JlbG9hZFBlcmlvZEluTXM6M2U0LHJlbG9hZEVuYWJsZWQ6ITEscGFnZVNpemU6MTIsY29sb3JQYWxldHRlOntpZDoiZGVmYXVsdCIsbmFtZToiRGVmYWx0Iixjb2xvcnM6W3tuYW1lOiJTbGF0ZSIsbGlnaHRIZXg6IiM0MjUwNjYiLGRhcmtIZXg6IiM4ZTk4YTMifSx7bmFtZToiQ3lhbiIsbGlnaHRIZXg6IiMxMmI1Y2IiLGRhcmtIZXg6IiMxMmI1Y2IifSx7bmFtZToiUGluayIsbGlnaHRIZXg6IiNlNTI1OTIiLGRhcmtIZXg6IiNlNTI1OTIifSx7bmFtZToiWWVsbG93IixsaWdodEhleDoiI2Y5YWIwMCIsZGFya0hleDoiI2Y5YWIwMCJ9LHtuYW1lOiJQdXJwbGUiLGxpZ2h0SGV4OiIjOTMzNGU2IixkYXJrSGV4OiIjOTMzNGU2In0se25hbWU6IkxpZ2h0IEdyZWVuIixsaWdodEhleDoiIzdjYjM0MiIsZGFya0hleDoiIzdjYjM0MiJ9LHtuYW1lOiJPcmFuZ2UiLGxpZ2h0SGV4OiIjZTg3MTBhIixkYXJrSGV4OiIjZTg3MTBhIn1dLGluYWN0aXZlOntuYW1lOiJHcmF5IixsaWdodEhleDoiI2UwZTBlMCIsZGFya0hleDoiIzNiM2IzYiJ9fX19LG1JPV9TKGRJKSxmST1iUyhtSSwodD0+dC5zdGF0ZSkpLHVJPWJTKG1JLCh0PT50LnNldHRpbmdzLnJlbG9hZEVuYWJsZWQpKSxnST1iUyhtSSwodD0+dC5zZXR0aW5ncy5yZWxvYWRQZXJpb2RJbk1zKSksaEk9YlMobUksKHQ9PnQuc2V0dGluZ3MucGFnZVNpemUpKSxiST1iUyhtSSwodD0+dC5zZXR0aW5ncy5jb2xvclBhbGV0dGUpKTtmdW5jdGlvbiB5SSh0LGUsbil7aWYoIWUpcmV0dXJuITA7bGV0IG87dHJ5e289bmV3IFJlZ0V4cChlLCJpIil9Y2F0Y2godCl7cmV0dXJuITF9Y29uc3QgaT1bdC5ydW5OYW1lXTtyZXR1cm4gbiYmaS5wdXNoKHQuZXhwZXJpbWVudEFsaWFzLmFsaWFzVGV4dCxgJHt0LmV4cGVyaW1lbnRBbGlhcy5hbGlhc1RleHR9LyR7dC5ydW5OYW1lfWApLGkuc29tZSgodD0+by50ZXN0KHQpKSl9Y29uc3QgX0k9YlMoKHQ9Pntjb25zdCBlPXhSKHQpO3JldHVybiBlP0p6KHQse2V4cGVyaW1lbnRJZHM6ZX0pOm51bGx9KSx0SSwodD0+e3ZhciBlO2NvbnN0IG49bnVsbCE9PShlPXhSKHQpKSYmdm9pZCAwIT09ZT9lOltdLG89T1IodCksaT1uZXcgTWFwO2Zvcihjb25zdCBlIG9mIG4pe2NvbnN0IG49cXoodCx7ZXhwZXJpbWVudElkOmV9KTtmb3IoY29uc3QgdCBvZiBuKWkuc2V0KHQuaWQse3J1bk5hbWU6dC5uYW1lLGV4cGVyaW1lbnRBbGlhczpvW2VdfSl9cmV0dXJuIGl9KSxNUiwoKHQsZSxuLG8pPT57aWYoIXQpcmV0dXJuIG51bGw7Y29uc3QgaT1vPT09X0QuQ09NUEFSRV9FWFBFUklNRU5ULGE9bmV3IE1hcDtmb3IoY29uc3RbbyxyXW9mIHQuZW50cmllcygpKXtjb25zdCB0PW4uZ2V0KG8pO2Euc2V0KG8seUkodCxlLGkpJiZyKX1yZXR1cm4gYX0pKSxDST1iUyhiSSxhSSxpSSxGRCwoKHQsZSxuLG8pPT57Y29uc3QgaT17fTtyZXR1cm4gZS5mb3JFYWNoKCgoZSxhKT0+e2xldCByPW8/dC5pbmFjdGl2ZS5kYXJrSGV4OnQuaW5hY3RpdmUubGlnaHRIZXg7aWYobi5oYXMoYSkpcj1uLmdldChhKTtlbHNlIGlmKGU+PTApe2NvbnN0IG49dC5jb2xvcnNbZSV0LmNvbG9ycy5sZW5ndGhdO3I9bz9uLmRhcmtIZXg6bi5saWdodEhleH1pW2FdPXJ9KSksaX0pKTtjbGFzcyBNSXtjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5hY3Rpb25zJD10LHRoaXMuc3RvcmU9ZSx0aGlzLnJ1bnNEYXRhU291cmNlPW4sdGhpcy5sb2FkUnVuc09uUnVuVGFibGVTaG93biQ9V1MoKCgpPT50aGlzLmFjdGlvbnMkLnBpcGUoJFModlQpLCR0KCgoe2V4cGVyaW1lbnRJZHM6dH0pPT50aGlzLmdldEV4cGVyaW1lbnRzV2l0aExvYWRTdGF0ZSh0LCh0PT50PT09VUUuRkFJTEVEfHx0PT09VUUuTk9UX0xPQURFRCkpLnBpcGUodWUoKHQ9PiEhdC5sZW5ndGgpKSwkdCgoZT0+dGhpcy5mZXRjaEFsbFJ1bnNMaXN0KHQsZSkpKSkpKSkpLHtkaXNwYXRjaDohMX0pLHRoaXMuZXhwZXJpbWVudHNXaXRoU3RhbGVSdW5zT25Sb3V0ZUNoYW5nZSQ9dGhpcy5hY3Rpb25zJC5waXBlKCRTKHRSKSxxZSh0aGlzLnN0b3JlLnNlbGVjdChoUikpLHdlKCgoWyx0XSxbLGVdKT0+eEQodCxlKSkpLHFlKHRoaXMuc3RvcmUuc2VsZWN0KHhSKSksdWUoKChbLHRdKT0+ISF0KSksVnQoKChbLHRdKT0+dCkpLCR0KCh0PT50aGlzLmdldEV4cGVyaW1lbnRzV2l0aExvYWRTdGF0ZSh0LCh0PT50PT09VUUuRkFJTEVEfHx0PT09VUUuTk9UX0xPQURFRCkpLnBpcGUoVnQoKGU9Pih7ZXhwZXJpbWVudElkczp0LGV4cGVyaW1lbnRJZHNUb0JlRmV0Y2hlZDplfSkpKSkpKSksdGhpcy5leHBlcmltZW50c1dpdGhTdGFsZVJ1bnNPblJlbG9hZCQ9dGhpcy5hY3Rpb25zJC5waXBlKCRTKFFFLEpFKSxxZSh0aGlzLnN0b3JlLnNlbGVjdCh4UikpLHVlKCgoWyx0XSk9PiEhdCkpLFZ0KCgoWyx0XSk9PnQpKSwkdCgodD0+dGhpcy5nZXRFeHBlcmltZW50c1dpdGhMb2FkU3RhdGUodCwodD0+dCE9PVVFLkxPQURJTkcpKS5waXBlKFZ0KChlPT4oe2V4cGVyaW1lbnRJZHM6dCxleHBlcmltZW50SWRzVG9CZUZldGNoZWQ6ZX0pKSkpKSkpLHRoaXMubG9hZFJ1bnNPbk5hdmlnYXRpb25PclJlbG9hZCQ9V1MoKCgpPT5wZSh0aGlzLmV4cGVyaW1lbnRzV2l0aFN0YWxlUnVuc09uUm91dGVDaGFuZ2UkLHRoaXMuZXhwZXJpbWVudHNXaXRoU3RhbGVSdW5zT25SZWxvYWQkKS5waXBlKCR0KCgoe2V4cGVyaW1lbnRJZHM6dCxleHBlcmltZW50SWRzVG9CZUZldGNoZWQ6ZX0pPT50aGlzLmZldGNoQWxsUnVuc0xpc3QodCxlKSkpKSkse2Rpc3BhdGNoOiExfSl9Z2V0UnVuc0xpc3RMb2FkU3RhdGUodCl7cmV0dXJuIHRoaXMuc3RvcmUuc2VsZWN0KEt6LHtleHBlcmltZW50SWQ6dH0pLnBpcGUodmUoMSkpfWdldEV4cGVyaW1lbnRzV2l0aExvYWRTdGF0ZSh0LGUpe3JldHVybiBpZSh0Lm1hcCgodD0+dGhpcy5nZXRSdW5zTGlzdExvYWRTdGF0ZSh0KSkpKS5waXBlKFZ0KChuPT50LmZpbHRlcigoKHQsbyk9PmUobltvXS5zdGF0ZSkpKSkpKX1mZXRjaEFsbFJ1bnNMaXN0KHQsZSl7cmV0dXJuIHp0KHtleHBlcmltZW50SWRzOnQsZXhwZXJpbWVudElkc1RvQmVGZXRjaGVkOmV9KS5waXBlKFdlKCgoKT0+e3RoaXMuc3RvcmUuZGlzcGF0Y2goZlQoe2V4cGVyaW1lbnRJZHM6dCxyZXF1ZXN0ZWRFeHBlcmltZW50SWRzOmV9KSl9KSksJHQoKCgpPT57Y29uc3Qgbj1uZXcgU2V0KGUpO3JldHVybiBpZSh0Lm1hcCgodD0+bi5oYXModCk/dGhpcy5mZXRjaFJ1bnNGb3JFeHBlcmltZW50KHQpOnRoaXMubWF5YmVXYWl0Rm9yUnVuc0FuZEdldFJ1bnModCkpKSl9KSksVnQoKHQ9Pntjb25zdCBlPXt9LG49W107Zm9yKGNvbnN0IG8gb2YgdCluLnB1c2goLi4uby5ydW5zKSxvLmZyb21SZW1vdGUmJihlW28uZXhwZXJpbWVudElkXT17cnVuczpvLnJ1bnMsbWV0YWRhdGE6by5tZXRhZGF0YX0pO3JldHVybntuZXdSdW5zQW5kTWV0YWRhdGE6ZSxydW5zRm9yQWxsRXhwZXJpbWVudHM6bn19KSksV2UoKCh7bmV3UnVuc0FuZE1ldGFkYXRhOmUscnVuc0ZvckFsbEV4cGVyaW1lbnRzOm59KT0+e3RoaXMuc3RvcmUuZGlzcGF0Y2godVQoe2V4cGVyaW1lbnRJZHM6dCxuZXdSdW5zQW5kTWV0YWRhdGE6ZSxydW5zRm9yQWxsRXhwZXJpbWVudHM6bn0pKX0pKSxoZSgobj0+KHRoaXMuc3RvcmUuZGlzcGF0Y2goZ1Qoe2V4cGVyaW1lbnRJZHM6dCxyZXF1ZXN0ZWRFeHBlcmltZW50SWRzOmV9KSksenQobnVsbCkpKSksVnQoKCgpPT5udWxsKSkpfW1heWJlV2FpdEZvclJ1bnNBbmRHZXRSdW5zKHQpe3JldHVybiB0aGlzLnN0b3JlLnNlbGVjdChLeix7ZXhwZXJpbWVudElkOnR9KS5waXBlKHVlKCh0PT50LnN0YXRlIT09VUUuTE9BRElORykpLHZlKDEpLCR0KCh0PT50LnN0YXRlPT09VUUuRkFJTEVEP0l0KG5ldyBFcnJvcigiUGVuZGluZyByZXF1ZXN0IGZhaWxlZCIpKTp6dCh0KSkpLHFlKHRoaXMuc3RvcmUuc2VsZWN0KHF6LHtleHBlcmltZW50SWQ6dH0pKSxWdCgoKFssZV0pPT4oe2Zyb21SZW1vdGU6ITEsZXhwZXJpbWVudElkOnQscnVuczplfSkpKSl9ZmV0Y2hSdW5zRm9yRXhwZXJpbWVudCh0KXtyZXR1cm4gaWUoW3RoaXMucnVuc0RhdGFTb3VyY2UuZmV0Y2hSdW5zKHQpLHRoaXMucnVuc0RhdGFTb3VyY2UuZmV0Y2hIcGFyYW1zTWV0YWRhdGEodCldKS5waXBlKFZ0KCgoW2Usbl0pPT4oe2Zyb21SZW1vdGU6ITAsZXhwZXJpbWVudElkOnQscnVuczplLG1ldGFkYXRhOm59KSkpKX19dmFyIHZJLHhJO01JLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxNSSkoVHIoUVMpLFRyKGlTKSxUcihTVCkpfSxNSS7JtXByb3Y9U24oe3Rva2VuOk1JLGZhY3Rvcnk6TUkuybVmYWN9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKE1JLFt7dHlwZTpVbX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpRU30se3R5cGU6aVN9LHt0eXBlOlNUfV19KSxudWxsKSwoZnVuY3Rpb24odCl7dC5BU0M9ImFzYyIsdC5ERVNDPSJkZXNjIix0LlVOU0VUPSIifSkodkl8fCh2ST17fSkpLChmdW5jdGlvbih0KXt0LkVYUEVSSU1FTlRfSUQ9ImlkIix0LlVTRVI9InVzZXIiLHQuQkVGT1JFPSJiZWZvcmUiLHQuQUZURVI9ImFmdGVyIix0LlJFR0VYPSJyZWdleCJ9KSh4SXx8KHhJPXt9KSk7Y29uc3R7aW5pdGlhbFN0YXRlOk9JLHJlZHVjZXJzOlBJfT1jQSh7cnVuQ29sb3JPdmVycmlkZUZvckdyb3VwQnk6bmV3IE1hcCxkZWZhdWx0UnVuQ29sb3JJZEZvckdyb3VwQnk6bmV3IE1hcCxncm91cEtleVRvQ29sb3JJZDpuZXcgTWFwLGluaXRpYWxHcm91cEJ5OntrZXk6THouUlVOfSx1c2VyU2V0R3JvdXBCeUtleTpudWxsLGNvbG9yR3JvdXBSZWdleFN0cmluZzoiIixyZWdleEZpbHRlcjoiIn0se3J1bklkczp7fSxydW5JZFRvRXhwSWQ6e30scnVuTWV0YWRhdGE6e30scnVuc0xvYWRTdGF0ZTp7fSxzZWxlY3Rpb25TdGF0ZTpuZXcgTWFwfSwoKHQsZSk9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7aW5pdGlhbEdyb3VwQnk6e2tleTplLnJvdXRlS2luZD09PV9ELkNPTVBBUkVfRVhQRVJJTUVOVD9Mei5FWFBFUklNRU5UOkx6LlJVTn19KSkpLHdJPVdBKFZTKE9JLEJTKEtELCgodCx7cm91dGVLaW5kOmUscGFydGlhbFN0YXRlOm59KT0+e3ZhciBvLGk7aWYoZSE9PV9ELkNPTVBBUkVfRVhQRVJJTUVOVCYmZSE9PV9ELkVYUEVSSU1FTlQpcmV0dXJuIHQ7Y29uc3QgYT1uLnJ1bnMuZ3JvdXBCeSxyPW51bGwhPT0obz1uLnJ1bnMucmVnZXhGaWx0ZXIpJiZ2b2lkIDAhPT1vP286IiI7aWYoIWEmJiFyKXJldHVybiB0O2xldHtjb2xvckdyb3VwUmVnZXhTdHJpbmc6cyx1c2VyU2V0R3JvdXBCeUtleTpsfT10O2lmKGEpe3M9YS5rZXk9PT1Mei5SRUdFWD9hLnJlZ2V4U3RyaW5nOnQuY29sb3JHcm91cFJlZ2V4U3RyaW5nLGw9bnVsbCE9PShpPWEua2V5KSYmdm9pZCAwIT09aT9pOm51bGx9cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7Y29sb3JHcm91cFJlZ2V4U3RyaW5nOnMscmVnZXhGaWx0ZXI6cix1c2VyU2V0R3JvdXBCeUtleTpsfSl9KSksQlMoZlQsKCh0LGUpPT57Y29uc3Qgbj1PYmplY3QuYXNzaWduKHt9LHQucnVuc0xvYWRTdGF0ZSk7Zm9yKGNvbnN0IHQgb2YgZS5yZXF1ZXN0ZWRFeHBlcmltZW50SWRzKW5bdF09blt0XT9PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sblt0XSkse3N0YXRlOlVFLkxPQURJTkd9KTp7bGFzdExvYWRlZFRpbWVJbk1zOm51bGwsc3RhdGU6VUUuTE9BRElOR307cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7cnVuc0xvYWRTdGF0ZTpufSl9KSksQlModVQsKCh0LGUpPT57dmFyIG47Y29uc3Qgbz1PYmplY3QuYXNzaWduKHt9LHQucnVuSWRzKSxpPU9iamVjdC5hc3NpZ24oe30sdC5ydW5NZXRhZGF0YSksYT1PYmplY3QuYXNzaWduKHt9LHQucnVuSWRUb0V4cElkKSxyPU9iamVjdC5hc3NpZ24oe30sdC5ydW5zTG9hZFN0YXRlKSxzPW5ldyBNYXAodC5zZWxlY3Rpb25TdGF0ZSk7Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LmtleXMoZS5uZXdSdW5zQW5kTWV0YWRhdGEpKXtjb25zdHtydW5zOm4sbWV0YWRhdGE6c309ZS5uZXdSdW5zQW5kTWV0YWRhdGFbdF07b1t0XT1uLm1hcCgoKHtpZDp0fSk9PnQpKSxyW3RdPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxyW3RdKSx7bGFzdExvYWRlZFRpbWVJbk1zOkRhdGUubm93KCksc3RhdGU6VUUuTE9BREVEfSk7Zm9yKGNvbnN0IGUgb2Ygbil7Y29uc3Qgbj1zLnJ1blRvSHBhcmFtc0FuZE1ldHJpY3NbZS5pZF07aVtlLmlkXT1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sZSkse2hwYXJhbXM6bj9uLmhwYXJhbXM6bnVsbCxtZXRyaWNzOm4/bi5tZXRyaWNzOm51bGx9KSxhW2UuaWRdPXR9fWNvbnN0IGw9QnooZS5leHBlcmltZW50SWRzKSxjPW5ldyBNYXAobnVsbCE9PShuPXMuZ2V0KGwpKSYmdm9pZCAwIT09bj9uOltdKSxkPWUucnVuc0ZvckFsbEV4cGVyaW1lbnRzLmxlbmd0aDw9NTAwO2Zvcihjb25zdCB0IG9mIGUucnVuc0ZvckFsbEV4cGVyaW1lbnRzKWMuaGFzKHQuaWQpfHxjLnNldCh0LmlkLGQpO3JldHVybiBzLnNldChsLGMpLE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7cnVuSWRzOm8scnVuSWRUb0V4cElkOmEscnVuTWV0YWRhdGE6aSxydW5zTG9hZFN0YXRlOnIsc2VsZWN0aW9uU3RhdGU6c30pfSkpLEJTKGdULCgodCxlKT0+e2NvbnN0IG49T2JqZWN0LmFzc2lnbih7fSx0LnJ1bnNMb2FkU3RhdGUpO2Zvcihjb25zdCB0IG9mIGUucmVxdWVzdGVkRXhwZXJpbWVudElkcyluW3RdPW5bdF0/T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG5bdF0pLHtzdGF0ZTpVRS5GQUlMRUR9KTp7bGFzdExvYWRlZFRpbWVJbk1zOm51bGwsc3RhdGU6VUUuRkFJTEVEfTtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtydW5zTG9hZFN0YXRlOm59KX0pKSxCUyhoVCwoKHQse2V4cGVyaW1lbnRJZHM6ZSxydW5JZDpufSk9Pnt2YXIgbztjb25zdCBpPUJ6KGUpLGE9bmV3IE1hcCh0LnNlbGVjdGlvblN0YXRlKSxyPW5ldyBNYXAobnVsbCE9PShvPWEuZ2V0KGkpKSYmdm9pZCAwIT09bz9vOltdKTtyZXR1cm4gci5zZXQobiwhQm9vbGVhbihyLmdldChuKSkpLGEuc2V0KGksciksT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtzZWxlY3Rpb25TdGF0ZTphfSl9KSksQlMoYlQsKCh0LHtleHBlcmltZW50SWRzOmUscnVuSWRzOm59KT0+e3ZhciBvO2NvbnN0IGk9QnooZSksYT1uZXcgTWFwKHQuc2VsZWN0aW9uU3RhdGUpLHI9bmV3IE1hcChudWxsIT09KG89YS5nZXQoaSkpJiZ2b2lkIDAhPT1vP286W10pLHM9IW4uZXZlcnkoKHQ9PkJvb2xlYW4oci5nZXQodCkpKSk7Zm9yKGNvbnN0IHQgb2YgbilyLnNldCh0LHMpO3JldHVybiBhLnNldChpLHIpLE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7c2VsZWN0aW9uU3RhdGU6YX0pfSkpLEJTKHVULCgodCx7cnVuc0ZvckFsbEV4cGVyaW1lbnRzOmV9KT0+e2NvbnN0IG49bmV3IE1hcCh0Lmdyb3VwS2V5VG9Db2xvcklkKSxvPW5ldyBNYXAodC5kZWZhdWx0UnVuQ29sb3JJZEZvckdyb3VwQnkpO2xldCBpPXQuaW5pdGlhbEdyb3VwQnk7bnVsbCE9PXQudXNlclNldEdyb3VwQnlLZXkmJihpPWp6KHQudXNlclNldEdyb3VwQnlLZXksdC5jb2xvckdyb3VwUmVnZXhTdHJpbmcpKTtjb25zdCBhPVZ6KGksZSx0LnJ1bklkVG9FeHBJZCk7T2JqZWN0LmVudHJpZXMoYS5tYXRjaGVzKS5mb3JFYWNoKCgoW3QsZV0pPT57dmFyIGk7Y29uc3QgYT1udWxsIT09KGk9bi5nZXQodCkpJiZ2b2lkIDAhPT1pP2k6bi5zaXplO24uc2V0KHQsYSk7Zm9yKGNvbnN0IHQgb2YgZSlvLnNldCh0LmlkLGEpfSkpO2Zvcihjb25zdCB0IG9mIGEubm9uTWF0Y2hlcylvLnNldCh0LmlkLC0xKTtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtkZWZhdWx0UnVuQ29sb3JJZEZvckdyb3VwQnk6byxncm91cEtleVRvQ29sb3JJZDpufSl9KSksQlMoeFQsKCh0LHtleHBlcmltZW50SWRzOmUsZ3JvdXBCeTpufSk9Pntjb25zdCBvPW5ldyBNYXAsaT1uZXcgTWFwKHQuZGVmYXVsdFJ1bkNvbG9ySWRGb3JHcm91cEJ5KSxhPVZ6KG4sZS5mbGF0TWFwKChlPT50LnJ1bklkc1tlXSkpLm1hcCgoZT0+dC5ydW5NZXRhZGF0YVtlXSkpLHQucnVuSWRUb0V4cElkKTtPYmplY3QuZW50cmllcyhhLm1hdGNoZXMpLmZvckVhY2goKChbdCxlXSk9Pnt2YXIgbjtjb25zdCBhPW51bGwhPT0obj1vLmdldCh0KSkmJnZvaWQgMCE9PW4/bjpvLnNpemU7by5zZXQodCxhKTtmb3IoY29uc3QgdCBvZiBlKWkuc2V0KHQuaWQsYSl9KSk7Zm9yKGNvbnN0IHQgb2YgYS5ub25NYXRjaGVzKWkuc2V0KHQuaWQsLTEpO2NvbnN0IHI9bi5rZXk9PT1Mei5SRUdFWD9uLnJlZ2V4U3RyaW5nOnQuY29sb3JHcm91cFJlZ2V4U3RyaW5nO3JldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2NvbG9yR3JvdXBSZWdleFN0cmluZzpyLHVzZXJTZXRHcm91cEJ5S2V5Om4ua2V5LGRlZmF1bHRSdW5Db2xvcklkRm9yR3JvdXBCeTppLGdyb3VwS2V5VG9Db2xvcklkOm8scnVuQ29sb3JPdmVycmlkZUZvckdyb3VwQnk6bmV3IE1hcH0pfSkpLEJTKE1ULCgodCx7cnVuSWQ6ZSxuZXdDb2xvcjpufSk9Pntjb25zdCBvPW5ldyBNYXAodC5ydW5Db2xvck92ZXJyaWRlRm9yR3JvdXBCeSk7cmV0dXJuIG8uc2V0KGUsbiksT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtydW5Db2xvck92ZXJyaWRlRm9yR3JvdXBCeTpvfSl9KSksQlMoQ1QsKCh0LGUpPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3JlZ2V4RmlsdGVyOmUucmVnZXhTdHJpbmd9KSkpKSxQSSksa0k9e2tleTpudWxsLGRpcmVjdGlvbjp2SS5VTlNFVH0se2luaXRpYWxTdGF0ZTpTSSxyZWR1Y2VyczpESX09Y0Eoe3BhZ2luYXRpb25PcHRpb246e3BhZ2VJbmRleDowLHBhZ2VTaXplOjEwfSxzb3J0OmtJfSx7fSksUkk9V0EoVlMoU0ksQlMoeVQsKCh0LHtwYWdlU2l6ZTplLHBhZ2VJbmRleDpufSk9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7cGFnaW5hdGlvbk9wdGlvbjp7cGFnZVNpemU6ZSxwYWdlSW5kZXg6bn19KSkpLEJTKENULCgodCxlKT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtwYWdpbmF0aW9uT3B0aW9uOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LnBhZ2luYXRpb25PcHRpb24pLHtwYWdlSW5kZXg6MH0pfSkpKSxCUyhfVCwoKHQsZSk9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7c29ydDp7a2V5OmUua2V5LGRpcmVjdGlvbjplLmRpcmVjdGlvbn19KSkpKSxESSk7ZnVuY3Rpb24gRUkodCxlKXtyZXR1cm4gR2soe2RhdGE6d0ksdWk6Ukl9KSh0LGUpfWZ1bmN0aW9uIEFJKCl7cmV0dXJuW3thY3Rpb25DcmVhdG9yOmdULGFsZXJ0RnJvbUFjdGlvbjooKT0+KHtsb2NhbGl6ZWRNZXNzYWdlOiJGYWlsZWQgdG8gZmV0Y2ggcnVucyJ9KX1dfWNsYXNzIFRJe312YXIgTkk7VEkuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFRJKX0sVEkuybVtb2Q9Zm8oe3R5cGU6VEl9KSxUSS7JtWluaj1Ebih7aW1wb3J0czpbW1RTLmZvckZlYXR1cmUoSHosRUkpLGhELmZvckZlYXR1cmUoW01JXSksalQsbVQucmVnaXN0ZXJBbGVydEFjdGlvbnMoQUkpLExUXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFRJLFt7dHlwZTpMXyxhcmdzOlt7aW1wb3J0czpbVFMuZm9yRmVhdHVyZShIeixFSSksaEQuZm9yRmVhdHVyZShbTUldKSxqVCxtVC5yZWdpc3RlckFsZXJ0QWN0aW9ucyhBSSksTFRdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8oVEkse2ltcG9ydHM6W0FTLGdELGpULG1ULExUXX0pLChmdW5jdGlvbih0KXt0LlJVTlNfQ0hBTkdFRD0iZXhwZXJpbWVudGFsLlJ1bnNDaGFuZ2VkIix0LkdFVF9SVU5TPSJleHBlcmltZW50YWwuR2V0UnVucyIsdC5HRVRfVVJMX0RBVEE9ImV4cGVyaW1lbnRhbC5HZXRVUkxQbHVnaW5EYXRhIix0LkRBVEFfUkVMT0FERUQ9ImV4cGVyaW1lbnRhbC5EYXRhUmVsb2FkZWQifSkoTkl8fChOST17fSkpO2NsYXNzIHpJe2NvbnN0cnVjdG9yKHQpe3RoaXMucG9ydD10LHRoaXMuaWQ9MCx0aGlzLnJlc3BvbnNlV2FpdHM9bmV3IE1hcCx0aGlzLmxpc3RlbmVycz1uZXcgTWFwLHRoaXMucG9ydC5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwodD0+dGhpcy5vbk1lc3NhZ2UodCkpKX1saXN0ZW4odCxlKXt0aGlzLmxpc3RlbmVycy5zZXQodCxlKX11bmxpc3Rlbih0KXt0aGlzLmxpc3RlbmVycy5kZWxldGUodCl9b25NZXNzYWdlKHQpe3JldHVybiBYVCh0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKigpe2NvbnN0IGU9SlNPTi5wYXJzZSh0LmRhdGEpLG49ZS50eXBlLG89ZS5pZCxpPWUucGF5bG9hZCxhPWUuZXJyb3I7aWYoZS5pc1JlcGx5KXtpZighdGhpcy5yZXNwb25zZVdhaXRzLmhhcyhvKSlyZXR1cm47Y29uc3R7cmVzb2x2ZTp0LHJlamVjdDplfT10aGlzLnJlc3BvbnNlV2FpdHMuZ2V0KG8pO3JldHVybiB0aGlzLnJlc3BvbnNlV2FpdHMuZGVsZXRlKG8pLHZvaWQoYT9lKG5ldyBFcnJvcihhKSk6dChpKSl9bGV0IHI9bnVsbCxzPW51bGw7aWYodGhpcy5saXN0ZW5lcnMuaGFzKG4pKXtjb25zdCB0PXRoaXMubGlzdGVuZXJzLmdldChuKTt0cnl7cj15aWVsZCB0KGkpfWNhdGNoKHQpe3M9dH19dGhpcy5wb3N0TWVzc2FnZSh7dHlwZTpuLGlkOm8scGF5bG9hZDpyLGVycm9yOnMsaXNSZXBseTohMH0pfSkpfXBvc3RNZXNzYWdlKHQpe3RoaXMucG9ydC5wb3N0TWVzc2FnZShKU09OLnN0cmluZ2lmeSh0KSl9c2VuZE1lc3NhZ2UodCxlKXtjb25zdCBuPXRoaXMuaWQrKztyZXR1cm4gdGhpcy5wb3N0TWVzc2FnZSh7dHlwZTp0LGlkOm4scGF5bG9hZDplLGVycm9yOm51bGwsaXNSZXBseTohMX0pLG5ldyBQcm9taXNlKCgodCxlKT0+e3RoaXMucmVzcG9uc2VXYWl0cy5zZXQobix7cmVzb2x2ZTp0LHJlamVjdDplfSl9KSl9fWNvbnN0IElJPW5ldyBXZWFrTWFwLEhJPW5ldyBTZXQsRkk9bmV3IE1hcCxMST1uZXcgTWFwO2Z1bmN0aW9uIEJJKHQsZSl7cmV0dXJuIG49Pntjb25zdCBvPUxJLmdldChlKSxpPUlJLmdldChvKXx8bnVsbDtyZXR1cm4gdChpLG4pfX13aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsKHQ9PntpZigiZXhwZXJpbWVudGFsLmJvb3RzdHJhcCIhPT10LmRhdGEpcmV0dXJuO2NvbnN0IGU9dC5wb3J0c1swXTtpZighZSlyZXR1cm47Y29uc3Qgbj10LnNvdXJjZT90LnNvdXJjZS5mcmFtZUVsZW1lbnQ6bnVsbDtuJiYoZnVuY3Rpb24gbyh0LGUpe2NvbnN0IG49bmV3IHpJKHQpO0hJLmFkZChuKSxMSS5zZXQobixlKSx0LnN0YXJ0KCk7Zm9yKGNvbnN0W3QsZV1vZiBGSSl7Y29uc3Qgbz1CSShlLG4pO24ubGlzdGVuKHQsbyl9fSkoZSxuKX0pKTtjbGFzcyBWSXticm9hZGNhc3QodCxlKXtyZXR1cm4oZnVuY3Rpb24gbih0LGUpe2Zvcihjb25zdCB0IG9mIEhJKUxJLmdldCh0KS5pc0Nvbm5lY3RlZHx8KEhJLmRlbGV0ZSh0KSxMSS5kZWxldGUodCkpO2NvbnN0IG49Wy4uLkhJXS5tYXAoKG49Pm4uc2VuZE1lc3NhZ2UodCxlKSkpO3JldHVybiBQcm9taXNlLmFsbChuKX0pKHQsZSl9bGlzdGVuKHQsZSl7IShmdW5jdGlvbiBuKHQsZSl7Rkkuc2V0KHQsZSk7Zm9yKGNvbnN0IG4gb2YgSEkpe2NvbnN0IG89QkkoZSxuKTtuLmxpc3Rlbih0LG8pfX0pKHQsZSl9dW5saXN0ZW4odCl7IShmdW5jdGlvbiBlKHQpe0ZJLmRlbGV0ZSh0KTtmb3IoY29uc3QgZSBvZiBISSllLnVubGlzdGVuKHQpfSkodCl9fVZJLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxWSSl9LFZJLsm1cHJvdj1Tbih7dG9rZW46VkksZmFjdG9yeTpWSS7JtWZhY30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoVkksW3t0eXBlOlVtfV0sbnVsbCxudWxsKTtjbGFzcyBqSXtjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuaXBjPXQsdGhpcy5zdG9yZT1lfWluaXQoKXtjb25zdCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRmLXN0b3JhZ2UiKTt0aGlzLmlwYy5saXN0ZW4oTkkuR0VUX1VSTF9EQVRBLChlPT57aWYoIWUpcmV0dXJuO2NvbnN0IG49YHAuJHtlLnBsdWdpbk5hbWV9LmAsbz17fSxpPXQudGZfc3RvcmFnZS5nZXRVcmxIYXNoRGljdCgpO2ZvcihsZXQgdCBpbiBpKWlmKHQuc3RhcnRzV2l0aChuKSl7b1t0LnN1YnN0cmluZyhuLmxlbmd0aCldPWlbdF19cmV0dXJuIG99KSksdGhpcy5zdG9yZS5zZWxlY3QodFQpLnBpcGUodWUoKHQ9Pm51bGwhPT10KSksd2UoKSkuc3Vic2NyaWJlKCgoKT0+e3RoaXMuaXBjLmJyb2FkY2FzdChOSS5EQVRBX1JFTE9BREVELHZvaWQgMCl9KSl9fWpJLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxqSSkoVHIoVkkpLFRyKGlTKSl9LGpJLsm1cHJvdj1Tbih7dG9rZW46akksZmFjdG9yeTpqSS7JtWZhYyxwcm92aWRlZEluOiJyb290In0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoakksW3t0eXBlOlVtLGFyZ3M6W3twcm92aWRlZEluOiJyb290In1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOlZJfSx7dHlwZTppU31dfSksbnVsbCk7Y2xhc3MgVUl7Y29uc3RydWN0b3IodCxlKXt0aGlzLmlwYz10LHRoaXMuc3RvcmU9ZX1pbml0KCl7Y29uc3QgdD10aGlzLnN0b3JlLnNlbGVjdCh4UikucGlwZSgkdCgodD0+e2lmKCF0KXJldHVybiB6dChbXSk7cmV0dXJuIEt0KHQubWFwKCh0PT50aGlzLnN0b3JlLnNlbGVjdChxeix7ZXhwZXJpbWVudElkOnR9KSkpKS5waXBlKFZ0KCh0PT50LmZsYXQoKSkpLHdlKCgodCxlKT0+dC5sZW5ndGg9PT1lLmxlbmd0aCYmdC5ldmVyeSgoKHQsbik9PmVbbl0uaWQ9PT10LmlkKSkpKSxWdCgodD0+dC5tYXAoKCh7bmFtZTp0fSk9PnQpKSkpKX0pKSk7dC5zdWJzY3JpYmUoKHQ9Pnt0aGlzLmlwYy5icm9hZGNhc3QoTkkuUlVOU19DSEFOR0VELHQpfSkpLHRoaXMuaXBjLmxpc3RlbihOSS5HRVRfUlVOUywoKCk9PnQucGlwZSh2ZSgxKSkudG9Qcm9taXNlKCkpKX19VUkuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFVJKShUcihWSSksVHIoaVMpKX0sVUkuybVwcm92PVNuKHt0b2tlbjpVSSxmYWN0b3J5OlVJLsm1ZmFjLHByb3ZpZGVkSW46InJvb3QifSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihVSSxbe3R5cGU6VW0sYXJnczpbe3Byb3ZpZGVkSW46InJvb3QifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6Vkl9LHt0eXBlOmlTfV19KSxudWxsKTtjbGFzcyBXSXtjb25zdHJ1Y3Rvcih0LGUpe2UuaW5pdCgpLHQuaW5pdCgpfXJlZ2lzdGVyUGx1Z2luSWZyYW1lKHQsZSl7IShmdW5jdGlvbiBuKHQsZSl7SUkuc2V0KHQse3BsdWdpbk5hbWU6ZX0pfSkodCxlKX19V0kuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFdJKShUcihVSSksVHIoakkpKX0sV0kuybVtb2Q9Zm8oe3R5cGU6V0l9KSxXSS7JtWluaj1Ebih7cHJvdmlkZXJzOltWSSxqSSxVSV0saW1wb3J0czpbW1JSLGRULFRJXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFdJLFt7dHlwZTpMXyxhcmdzOlt7cHJvdmlkZXJzOltWSSxqSSxVSV0saW1wb3J0czpbUlIsZFQsVEldfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6VUl9LHt0eXBlOmpJfV19KSxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKFdJLHtpbXBvcnRzOltSUixkVCxUSV19KTtjb25zdCBHST1faygiW0FsZXJ0XSBBbGVydCBSZXBvcnRlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pO2NsYXNzIFlJe2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLmFjdGlvbnMkPXQsdGhpcy5zdG9yZT1lLHRoaXMuYWxlcnRBY3Rpb25Nb2R1bGU9bix0aGlzLnJlcG9ydFJlZ2lzdGVyZWRBY3Rpb25BbGVydHMkPVdTKCgoKT0+dGhpcy5hY3Rpb25zJC5waXBlKFdlKCh0PT57Y29uc3QgZT10aGlzLmFsZXJ0QWN0aW9uTW9kdWxlLmdldEFsZXJ0RnJvbUFjdGlvbih0KTtlJiZ0aGlzLnN0b3JlLmRpc3BhdGNoKEdJKGUpKX0pKSkpLHtkaXNwYXRjaDohMX0pfX1ZSS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8WUkpKFRyKFFTKSxUcihpUyksVHIobVQpKX0sWUkuybVwcm92PVNuKHt0b2tlbjpZSSxmYWN0b3J5OllJLsm1ZmFjfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihZSSxbe3R5cGU6VW19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6UVN9LHt0eXBlOmlTfSx7dHlwZTptVH1dfSksbnVsbCk7Y29uc3QgcUk9VlMoe2xhdGVzdEFsZXJ0Om51bGx9LEJTKEdJLCgodCx7bG9jYWxpemVkTWVzc2FnZTplLGZvbGxvd3VwQWN0aW9uOm59KT0+e2NvbnN0IG89e2xvY2FsaXplZE1lc3NhZ2U6ZSxjcmVhdGVkOkRhdGUubm93KCl9O3JldHVybiBuJiYoby5mb2xsb3d1cEFjdGlvbj1uKSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2xhdGVzdEFsZXJ0Om99KX0pKSk7ZnVuY3Rpb24gWkkodCxlKXtyZXR1cm4gcUkodCxlKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3QgWEk9MTMsS0k9MjcsSkk9MzIsUUk9MzgsJEk9NDA7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpmdW5jdGlvbiB0SCh0LC4uLmUpe3JldHVybiBlLmxlbmd0aD9lLnNvbWUoKGU9PnRbZV0pKTp0LmFsdEtleXx8dC5zaGlmdEtleXx8dC5jdHJsS2V5fHx0Lm1ldGFLZXl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIGVIKHQpe3JldHVybiBudWxsIT10JiYiZmFsc2UiIT1gJHt0fWB9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIG5IKHQsZT0wKXtyZXR1cm4gb0godCk/TnVtYmVyKHQpOmV9ZnVuY3Rpb24gb0godCl7cmV0dXJuIWlzTmFOKHBhcnNlRmxvYXQodCkpJiYhaXNOYU4oTnVtYmVyKHQpKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gaUgodCl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCk/dDpbdF19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIGFIKHQpe3JldHVybiBudWxsPT10PyIiOiJzdHJpbmciPT10eXBlb2YgdD90OmAke3R9cHhgfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBySCh0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIEtoP3QubmF0aXZlRWxlbWVudDp0fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9sZXQgc0gsbEg7dHJ5e3NIPSJ1bmRlZmluZWQiIT10eXBlb2YgSW50bCYmSW50bC52OEJyZWFrSXRlcmF0b3J9Y2F0Y2gobUN0KXtzSD0hMX1jbGFzcyBjSHtjb25zdHJ1Y3Rvcih0KXt0aGlzLl9wbGF0Zm9ybUlkPXQsdGhpcy5pc0Jyb3dzZXI9dGhpcy5fcGxhdGZvcm1JZD8oZnVuY3Rpb24gZSh0KXtyZXR1cm4gdD09PXN4fSkodGhpcy5fcGxhdGZvcm1JZCk6Im9iamVjdCI9PXR5cGVvZiBkb2N1bWVudCYmISFkb2N1bWVudCx0aGlzLkVER0U9dGhpcy5pc0Jyb3dzZXImJi8oZWRnZSkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpLHRoaXMuVFJJREVOVD10aGlzLmlzQnJvd3NlciYmLyhtc2llfHRyaWRlbnQpL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSx0aGlzLkJMSU5LPXRoaXMuaXNCcm93c2VyJiYhKCF3aW5kb3cuY2hyb21lJiYhc0gpJiYidW5kZWZpbmVkIiE9dHlwZW9mIENTUyYmIXRoaXMuRURHRSYmIXRoaXMuVFJJREVOVCx0aGlzLldFQktJVD10aGlzLmlzQnJvd3NlciYmL0FwcGxlV2ViS2l0L2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSYmIXRoaXMuQkxJTksmJiF0aGlzLkVER0UmJiF0aGlzLlRSSURFTlQsdGhpcy5JT1M9dGhpcy5pc0Jyb3dzZXImJi9pUGFkfGlQaG9uZXxpUG9kLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpJiYhKCJNU1N0cmVhbSJpbiB3aW5kb3cpLHRoaXMuRklSRUZPWD10aGlzLmlzQnJvd3NlciYmLyhmaXJlZm94fG1pbmVmaWVsZCkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpLHRoaXMuQU5EUk9JRD10aGlzLmlzQnJvd3NlciYmL2FuZHJvaWQvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpJiYhdGhpcy5UUklERU5ULHRoaXMuU0FGQVJJPXRoaXMuaXNCcm93c2VyJiYvc2FmYXJpL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSYmdGhpcy5XRUJLSVR9fWNILsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxjSCkoVHIoWF8pKX0sY0guybVwcm92PVNuKHtmYWN0b3J5OmZ1bmN0aW9uIHQoKXtyZXR1cm4gbmV3IGNIKFRyKFhfKSl9LHRva2VuOmNILHByb3ZpZGVkSW46InJvb3QifSksY0guY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpPYmplY3QsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbWF9dfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGNILFt7dHlwZTpVbSxhcmdzOlt7cHJvdmlkZWRJbjoicm9vdCJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpPYmplY3QsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbWF9dfV19XX0pLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgZEh7fWRILsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxkSCl9LGRILsm1bW9kPWZvKHt0eXBlOmRIfSksZEguybVpbmo9RG4oe30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoZEgsW3t0eXBlOkxfLGFyZ3M6W3t9XX1dLG51bGwsbnVsbCk7Y29uc3QgcEg9WyJjb2xvciIsImJ1dHRvbiIsImNoZWNrYm94IiwiZGF0ZSIsImRhdGV0aW1lLWxvY2FsIiwiZW1haWwiLCJmaWxlIiwiaGlkZGVuIiwiaW1hZ2UiLCJtb250aCIsIm51bWJlciIsInBhc3N3b3JkIiwicmFkaW8iLCJyYW5nZSIsInJlc2V0Iiwic2VhcmNoIiwic3VibWl0IiwidGVsIiwidGV4dCIsInRpbWUiLCJ1cmwiLCJ3ZWVrIl07ZnVuY3Rpb24gbUgoKXtpZihsSClyZXR1cm4gbEg7aWYoIm9iamVjdCIhPXR5cGVvZiBkb2N1bWVudHx8IWRvY3VtZW50KXJldHVybiBsSD1uZXcgU2V0KHBIKSxsSDtsZXQgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpO3JldHVybiBsSD1uZXcgU2V0KHBILmZpbHRlcigoZT0+KHQuc2V0QXR0cmlidXRlKCJ0eXBlIixlKSx0LnR5cGU9PT1lKSkpKSxsSH0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovbGV0IGZILHVILGdILGhIO2Z1bmN0aW9uIGJIKHQpe3JldHVybihmdW5jdGlvbiBlKCl7aWYobnVsbD09ZkgmJiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93KXRyeXt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigidGVzdCIsbnVsbCxPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sInBhc3NpdmUiLHtnZXQ6KCk9PmZIPSEwfSkpfWZpbmFsbHl7Zkg9Zkh8fCExfXJldHVybiBmSH0pKCk/dDohIXQuY2FwdHVyZX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24geUgoKXtpZihudWxsPT1nSCl7aWYoIm9iamVjdCIhPXR5cGVvZiBkb2N1bWVudHx8IWRvY3VtZW50fHwiZnVuY3Rpb24iIT10eXBlb2YgRWxlbWVudHx8IUVsZW1lbnQpcmV0dXJuIGdIPSExLGdIO2lmKCJzY3JvbGxCZWhhdmlvciJpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUpZ0g9ITA7ZWxzZXtjb25zdCB0PUVsZW1lbnQucHJvdG90eXBlLnNjcm9sbFRvO2dIPSEhdCYmIS9ce1xzKlxbbmF0aXZlIGNvZGVcXVxzKlx9Ly50ZXN0KHQudG9TdHJpbmcoKSl9fXJldHVybiBnSH1mdW5jdGlvbiBfSCgpe2lmKCJvYmplY3QiIT10eXBlb2YgZG9jdW1lbnR8fCFkb2N1bWVudClyZXR1cm4gMDtpZihudWxsPT11SCl7Y29uc3QgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSxlPXQuc3R5bGU7dC5kaXI9InJ0bCIsZS53aWR0aD0iMXB4IixlLm92ZXJmbG93PSJhdXRvIixlLnZpc2liaWxpdHk9ImhpZGRlbiIsZS5wb2ludGVyRXZlbnRzPSJub25lIixlLnBvc2l0aW9uPSJhYnNvbHV0ZSI7Y29uc3Qgbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSxvPW4uc3R5bGU7by53aWR0aD0iMnB4IixvLmhlaWdodD0iMXB4Iix0LmFwcGVuZENoaWxkKG4pLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodCksdUg9MCwwPT09dC5zY3JvbGxMZWZ0JiYodC5zY3JvbGxMZWZ0PTEsdUg9MD09PXQuc2Nyb2xsTGVmdD8xOjIpLHQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0KX1yZXR1cm4gdUh9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIENIKHQpe2lmKChmdW5jdGlvbiBlKCl7aWYobnVsbD09aEgpe2NvbnN0IHQ9InVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudD9kb2N1bWVudC5oZWFkOm51bGw7aEg9ISghdHx8IXQuY3JlYXRlU2hhZG93Um9vdCYmIXQuYXR0YWNoU2hhZG93KX1yZXR1cm4gaEh9KSgpKXtjb25zdCBlPXQuZ2V0Um9vdE5vZGU/dC5nZXRSb290Tm9kZSgpOm51bGw7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBTaGFkb3dSb290JiZTaGFkb3dSb290JiZlIGluc3RhbmNlb2YgU2hhZG93Um9vdClyZXR1cm4gZX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBNSCgpe2xldCB0PSJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQmJmRvY3VtZW50P2RvY3VtZW50LmFjdGl2ZUVsZW1lbnQ6bnVsbDtmb3IoO3QmJnQuc2hhZG93Um9vdDspe2NvbnN0IGU9dC5zaGFkb3dSb290LmFjdGl2ZUVsZW1lbnQ7aWYoZT09PXQpYnJlYWs7dD1lfXJldHVybiB0fWZ1bmN0aW9uIHZIKHQpe3JldHVybiB0LmNvbXBvc2VkUGF0aD90LmNvbXBvc2VkUGF0aCgpWzBdOnQudGFyZ2V0fWNsYXNzIHhIe2NyZWF0ZSh0KXtyZXR1cm4idW5kZWZpbmVkIj09dHlwZW9mIE11dGF0aW9uT2JzZXJ2ZXI/bnVsbDpuZXcgTXV0YXRpb25PYnNlcnZlcih0KX19eEguybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHhIKX0seEguybVwcm92PVNuKHtmYWN0b3J5OmZ1bmN0aW9uIHQoKXtyZXR1cm4gbmV3IHhIfSx0b2tlbjp4SCxwcm92aWRlZEluOiJyb290In0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoeEgsW3t0eXBlOlVtLGFyZ3M6W3twcm92aWRlZEluOiJyb290In1dfV0sbnVsbCxudWxsKTtjbGFzcyBPSHtjb25zdHJ1Y3Rvcih0KXt0aGlzLl9tdXRhdGlvbk9ic2VydmVyRmFjdG9yeT10LHRoaXMuX29ic2VydmVkRWxlbWVudHM9bmV3IE1hcH1uZ09uRGVzdHJveSgpe3RoaXMuX29ic2VydmVkRWxlbWVudHMuZm9yRWFjaCgoKHQsZSk9PnRoaXMuX2NsZWFudXBPYnNlcnZlcihlKSkpfW9ic2VydmUodCl7Y29uc3QgZT1ySCh0KTtyZXR1cm4gbmV3IFQoKHQ9Pntjb25zdCBuPXRoaXMuX29ic2VydmVFbGVtZW50KGUpLnN1YnNjcmliZSh0KTtyZXR1cm4oKT0+e24udW5zdWJzY3JpYmUoKSx0aGlzLl91bm9ic2VydmVFbGVtZW50KGUpfX0pKX1fb2JzZXJ2ZUVsZW1lbnQodCl7aWYodGhpcy5fb2JzZXJ2ZWRFbGVtZW50cy5oYXModCkpdGhpcy5fb2JzZXJ2ZWRFbGVtZW50cy5nZXQodCkuY291bnQrKztlbHNle2NvbnN0IGU9bmV3IEIsbj10aGlzLl9tdXRhdGlvbk9ic2VydmVyRmFjdG9yeS5jcmVhdGUoKHQ9PmUubmV4dCh0KSkpO24mJm4ub2JzZXJ2ZSh0LHtjaGFyYWN0ZXJEYXRhOiEwLGNoaWxkTGlzdDohMCxzdWJ0cmVlOiEwfSksdGhpcy5fb2JzZXJ2ZWRFbGVtZW50cy5zZXQodCx7b2JzZXJ2ZXI6bixzdHJlYW06ZSxjb3VudDoxfSl9cmV0dXJuIHRoaXMuX29ic2VydmVkRWxlbWVudHMuZ2V0KHQpLnN0cmVhbX1fdW5vYnNlcnZlRWxlbWVudCh0KXt0aGlzLl9vYnNlcnZlZEVsZW1lbnRzLmhhcyh0KSYmKHRoaXMuX29ic2VydmVkRWxlbWVudHMuZ2V0KHQpLmNvdW50LS0sdGhpcy5fb2JzZXJ2ZWRFbGVtZW50cy5nZXQodCkuY291bnR8fHRoaXMuX2NsZWFudXBPYnNlcnZlcih0KSl9X2NsZWFudXBPYnNlcnZlcih0KXtpZih0aGlzLl9vYnNlcnZlZEVsZW1lbnRzLmhhcyh0KSl7Y29uc3R7b2JzZXJ2ZXI6ZSxzdHJlYW06bn09dGhpcy5fb2JzZXJ2ZWRFbGVtZW50cy5nZXQodCk7ZSYmZS5kaXNjb25uZWN0KCksbi5jb21wbGV0ZSgpLHRoaXMuX29ic2VydmVkRWxlbWVudHMuZGVsZXRlKHQpfX19T0guybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fE9IKShUcih4SCkpfSxPSC7JtXByb3Y9U24oe2ZhY3Rvcnk6ZnVuY3Rpb24gdCgpe3JldHVybiBuZXcgT0goVHIoeEgpKX0sdG9rZW46T0gscHJvdmlkZWRJbjoicm9vdCJ9KSxPSC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnhIfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihPSCxbe3R5cGU6VW0sYXJnczpbe3Byb3ZpZGVkSW46InJvb3QifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6eEh9XX0pLG51bGwpO2NsYXNzIFBIe2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLl9jb250ZW50T2JzZXJ2ZXI9dCx0aGlzLl9lbGVtZW50UmVmPWUsdGhpcy5fbmdab25lPW4sdGhpcy5ldmVudD1uZXcgU3ksdGhpcy5fZGlzYWJsZWQ9ITEsdGhpcy5fY3VycmVudFN1YnNjcmlwdGlvbj1udWxsfWdldCBkaXNhYmxlZCgpe3JldHVybiB0aGlzLl9kaXNhYmxlZH1zZXQgZGlzYWJsZWQodCl7dGhpcy5fZGlzYWJsZWQ9ZUgodCksdGhpcy5fZGlzYWJsZWQ/dGhpcy5fdW5zdWJzY3JpYmUoKTp0aGlzLl9zdWJzY3JpYmUoKX1nZXQgZGVib3VuY2UoKXtyZXR1cm4gdGhpcy5fZGVib3VuY2V9c2V0IGRlYm91bmNlKHQpe3RoaXMuX2RlYm91bmNlPW5IKHQpLHRoaXMuX3N1YnNjcmliZSgpfW5nQWZ0ZXJDb250ZW50SW5pdCgpe3RoaXMuX2N1cnJlbnRTdWJzY3JpcHRpb258fHRoaXMuZGlzYWJsZWR8fHRoaXMuX3N1YnNjcmliZSgpfW5nT25EZXN0cm95KCl7dGhpcy5fdW5zdWJzY3JpYmUoKX1fc3Vic2NyaWJlKCl7dGhpcy5fdW5zdWJzY3JpYmUoKTtjb25zdCB0PXRoaXMuX2NvbnRlbnRPYnNlcnZlci5vYnNlcnZlKHRoaXMuX2VsZW1lbnRSZWYpO3RoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9Pnt0aGlzLl9jdXJyZW50U3Vic2NyaXB0aW9uPSh0aGlzLmRlYm91bmNlP3QucGlwZShDZSh0aGlzLmRlYm91bmNlKSk6dCkuc3Vic2NyaWJlKHRoaXMuZXZlbnQpfSkpfV91bnN1YnNjcmliZSgpe3ZhciB0O251bGw9PT0odD10aGlzLl9jdXJyZW50U3Vic2NyaXB0aW9uKXx8dm9pZCAwPT09dHx8dC51bnN1YnNjcmliZSgpfX1QSC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8UEgpKGdmKE9IKSxnZihLaCksZ2YobUMpKX0sUEguybVkaXI9aG8oe3R5cGU6UEgsc2VsZWN0b3JzOltbIiIsImNka09ic2VydmVDb250ZW50IiwiIl1dLGlucHV0czp7ZGlzYWJsZWQ6WyJjZGtPYnNlcnZlQ29udGVudERpc2FibGVkIiwiZGlzYWJsZWQiXSxkZWJvdW5jZToiZGVib3VuY2UifSxvdXRwdXRzOntldmVudDoiY2RrT2JzZXJ2ZUNvbnRlbnQifSxleHBvcnRBczpbImNka09ic2VydmVDb250ZW50Il19KSxQSC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOk9IfSx7dHlwZTpLaH0se3R5cGU6bUN9XSxQSC5wcm9wRGVjb3JhdG9ycz17ZXZlbnQ6W3t0eXBlOkVfLGFyZ3M6WyJjZGtPYnNlcnZlQ29udGVudCJdfV0sZGlzYWJsZWQ6W3t0eXBlOlJfLGFyZ3M6WyJjZGtPYnNlcnZlQ29udGVudERpc2FibGVkIl19XSxkZWJvdW5jZTpbe3R5cGU6Ul99XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihQSCxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJbY2RrT2JzZXJ2ZUNvbnRlbnRdIixleHBvcnRBczoiY2RrT2JzZXJ2ZUNvbnRlbnQifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6T0h9LHt0eXBlOktofSx7dHlwZTptQ31dfSkse2V2ZW50Olt7dHlwZTpFXyxhcmdzOlsiY2RrT2JzZXJ2ZUNvbnRlbnQiXX1dLGRpc2FibGVkOlt7dHlwZTpSXyxhcmdzOlsiY2RrT2JzZXJ2ZUNvbnRlbnREaXNhYmxlZCJdfV0sZGVib3VuY2U6W3t0eXBlOlJffV19KTtjbGFzcyB3SHt9d0guybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHdIKX0sd0guybVtb2Q9Zm8oe3R5cGU6d0h9KSx3SC7JtWluaj1Ebih7cHJvdmlkZXJzOlt4SF19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHdILFt7dHlwZTpMXyxhcmdzOlt7ZXhwb3J0czpbUEhdLGRlY2xhcmF0aW9uczpbUEhdLHByb3ZpZGVyczpbeEhdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8od0gse2RlY2xhcmF0aW9uczpbUEhdLGV4cG9ydHM6W1BIXX0pO2Z1bmN0aW9uIGtIKHQsZSl7cmV0dXJuKHQuZ2V0QXR0cmlidXRlKGUpfHwiIikubWF0Y2goL1xTKy9nKXx8W119Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NvbnN0IFNIPSJjZGstZGVzY3JpYmVkYnktbWVzc2FnZS1jb250YWluZXIiLERIPSJjZGstZGVzY3JpYmVkYnktbWVzc2FnZSIsUkg9ImNkay1kZXNjcmliZWRieS1ob3N0IjtsZXQgRUg9MDtjb25zdCBBSD1uZXcgTWFwO2xldCBUSD1udWxsO2NsYXNzIE5Ie2NvbnN0cnVjdG9yKHQpe3RoaXMuX2RvY3VtZW50PXR9ZGVzY3JpYmUodCxlLG4pe2lmKCF0aGlzLl9jYW5CZURlc2NyaWJlZCh0LGUpKXJldHVybjtjb25zdCBvPXpIKGUsbik7InN0cmluZyIhPXR5cGVvZiBlPyhJSChlKSxBSC5zZXQobyx7bWVzc2FnZUVsZW1lbnQ6ZSxyZWZlcmVuY2VDb3VudDowfSkpOkFILmhhcyhvKXx8dGhpcy5fY3JlYXRlTWVzc2FnZUVsZW1lbnQoZSxuKSx0aGlzLl9pc0VsZW1lbnREZXNjcmliZWRCeU1lc3NhZ2UodCxvKXx8dGhpcy5fYWRkTWVzc2FnZVJlZmVyZW5jZSh0LG8pfXJlbW92ZURlc2NyaXB0aW9uKHQsZSxuKXtpZighZXx8IXRoaXMuX2lzRWxlbWVudE5vZGUodCkpcmV0dXJuO2NvbnN0IG89ekgoZSxuKTtpZih0aGlzLl9pc0VsZW1lbnREZXNjcmliZWRCeU1lc3NhZ2UodCxvKSYmdGhpcy5fcmVtb3ZlTWVzc2FnZVJlZmVyZW5jZSh0LG8pLCJzdHJpbmciPT10eXBlb2YgZSl7Y29uc3QgdD1BSC5nZXQobyk7dCYmMD09PXQucmVmZXJlbmNlQ291bnQmJnRoaXMuX2RlbGV0ZU1lc3NhZ2VFbGVtZW50KG8pfVRIJiYwPT09VEguY2hpbGROb2Rlcy5sZW5ndGgmJnRoaXMuX2RlbGV0ZU1lc3NhZ2VzQ29udGFpbmVyKCl9bmdPbkRlc3Ryb3koKXtjb25zdCB0PXRoaXMuX2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIltjZGstZGVzY3JpYmVkYnktaG9zdF0iKTtmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKyl0aGlzLl9yZW1vdmVDZGtEZXNjcmliZWRCeVJlZmVyZW5jZUlkcyh0W2VdKSx0W2VdLnJlbW92ZUF0dHJpYnV0ZShSSCk7VEgmJnRoaXMuX2RlbGV0ZU1lc3NhZ2VzQ29udGFpbmVyKCksQUguY2xlYXIoKX1fY3JlYXRlTWVzc2FnZUVsZW1lbnQodCxlKXtjb25zdCBuPXRoaXMuX2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO0lIKG4pLG4udGV4dENvbnRlbnQ9dCxlJiZuLnNldEF0dHJpYnV0ZSgicm9sZSIsZSksdGhpcy5fY3JlYXRlTWVzc2FnZXNDb250YWluZXIoKSxUSC5hcHBlbmRDaGlsZChuKSxBSC5zZXQoekgodCxlKSx7bWVzc2FnZUVsZW1lbnQ6bixyZWZlcmVuY2VDb3VudDowfSl9X2RlbGV0ZU1lc3NhZ2VFbGVtZW50KHQpe2NvbnN0IGU9QUguZ2V0KHQpLG49ZSYmZS5tZXNzYWdlRWxlbWVudDtUSCYmbiYmVEgucmVtb3ZlQ2hpbGQobiksQUguZGVsZXRlKHQpfV9jcmVhdGVNZXNzYWdlc0NvbnRhaW5lcigpe2lmKCFUSCl7Y29uc3QgdD10aGlzLl9kb2N1bWVudC5nZXRFbGVtZW50QnlJZChTSCk7dCYmdC5wYXJlbnROb2RlJiZ0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodCksVEg9dGhpcy5fZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksVEguaWQ9U0gsVEguc3R5bGUudmlzaWJpbGl0eT0iaGlkZGVuIixUSC5jbGFzc0xpc3QuYWRkKCJjZGstdmlzdWFsbHktaGlkZGVuIiksdGhpcy5fZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChUSCl9fV9kZWxldGVNZXNzYWdlc0NvbnRhaW5lcigpe1RIJiZUSC5wYXJlbnROb2RlJiYoVEgucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChUSCksVEg9bnVsbCl9X3JlbW92ZUNka0Rlc2NyaWJlZEJ5UmVmZXJlbmNlSWRzKHQpe2NvbnN0IGU9a0godCwiYXJpYS1kZXNjcmliZWRieSIpLmZpbHRlcigodD0+MCE9dC5pbmRleE9mKERIKSkpO3Quc2V0QXR0cmlidXRlKCJhcmlhLWRlc2NyaWJlZGJ5IixlLmpvaW4oIiAiKSl9X2FkZE1lc3NhZ2VSZWZlcmVuY2UodCxlKXtjb25zdCBuPUFILmdldChlKTshKGZ1bmN0aW9uIG8odCxlLG4pe2NvbnN0IG89a0godCxlKTtvLnNvbWUoKHQ9PnQudHJpbSgpPT1uLnRyaW0oKSkpfHwoby5wdXNoKG4udHJpbSgpKSx0LnNldEF0dHJpYnV0ZShlLG8uam9pbigiICIpKSl9KSh0LCJhcmlhLWRlc2NyaWJlZGJ5IixuLm1lc3NhZ2VFbGVtZW50LmlkKSx0LnNldEF0dHJpYnV0ZShSSCwiIiksbi5yZWZlcmVuY2VDb3VudCsrfV9yZW1vdmVNZXNzYWdlUmVmZXJlbmNlKHQsZSl7Y29uc3Qgbj1BSC5nZXQoZSk7bi5yZWZlcmVuY2VDb3VudC0tLChmdW5jdGlvbiBvKHQsZSxuKXtjb25zdCBvPWtIKHQsZSkuZmlsdGVyKCh0PT50IT1uLnRyaW0oKSkpO28ubGVuZ3RoP3Quc2V0QXR0cmlidXRlKGUsby5qb2luKCIgIikpOnQucmVtb3ZlQXR0cmlidXRlKGUpfSkodCwiYXJpYS1kZXNjcmliZWRieSIsbi5tZXNzYWdlRWxlbWVudC5pZCksdC5yZW1vdmVBdHRyaWJ1dGUoUkgpfV9pc0VsZW1lbnREZXNjcmliZWRCeU1lc3NhZ2UodCxlKXtjb25zdCBuPWtIKHQsImFyaWEtZGVzY3JpYmVkYnkiKSxvPUFILmdldChlKSxpPW8mJm8ubWVzc2FnZUVsZW1lbnQuaWQ7cmV0dXJuISFpJiYtMSE9bi5pbmRleE9mKGkpfV9jYW5CZURlc2NyaWJlZCh0LGUpe2lmKCF0aGlzLl9pc0VsZW1lbnROb2RlKHQpKXJldHVybiExO2lmKGUmJiJvYmplY3QiPT10eXBlb2YgZSlyZXR1cm4hMDtjb25zdCBuPW51bGw9PWU/IiI6YCR7ZX1gLnRyaW0oKSxvPXQuZ2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIik7cmV0dXJuISFuJiYoIW98fG8udHJpbSgpIT09bil9X2lzRWxlbWVudE5vZGUodCl7cmV0dXJuIHQubm9kZVR5cGU9PT10aGlzLl9kb2N1bWVudC5FTEVNRU5UX05PREV9fWZ1bmN0aW9uIHpIKHQsZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0P2Ake2V8fCIifS8ke3R9YDp0fWZ1bmN0aW9uIElIKHQpe3QuaWR8fCh0LmlkPSJjZGstZGVzY3JpYmVkYnktbWVzc2FnZS0iK0VIKyspfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9OSC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8TkgpKFRyKHNNKSl9LE5ILsm1cHJvdj1Tbih7ZmFjdG9yeTpmdW5jdGlvbiB0KCl7cmV0dXJuIG5ldyBOSChUcihzTSkpfSx0b2tlbjpOSCxwcm92aWRlZEluOiJyb290In0pLE5ILmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3NNXX1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihOSCxbe3R5cGU6VW0sYXJnczpbe3Byb3ZpZGVkSW46InJvb3QifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3NNXX1dfV19KSxudWxsKTtjbGFzcyBISHtjb25zdHJ1Y3Rvcih0KXt0aGlzLl9pdGVtcz10LHRoaXMuX2FjdGl2ZUl0ZW1JbmRleD0tMSx0aGlzLl9hY3RpdmVJdGVtPW51bGwsdGhpcy5fd3JhcD0hMSx0aGlzLl9sZXR0ZXJLZXlTdHJlYW09bmV3IEIsdGhpcy5fdHlwZWFoZWFkU3Vic2NyaXB0aW9uPXUuRU1QVFksdGhpcy5fdmVydGljYWw9ITAsdGhpcy5fYWxsb3dlZE1vZGlmaWVyS2V5cz1bXSx0aGlzLl9ob21lQW5kRW5kPSExLHRoaXMuX3NraXBQcmVkaWNhdGVGbj10PT50LmRpc2FibGVkLHRoaXMuX3ByZXNzZWRMZXR0ZXJzPVtdLHRoaXMudGFiT3V0PW5ldyBCLHRoaXMuY2hhbmdlPW5ldyBCLHQgaW5zdGFuY2VvZiBSeSYmdC5jaGFuZ2VzLnN1YnNjcmliZSgodD0+e2lmKHRoaXMuX2FjdGl2ZUl0ZW0pe2NvbnN0IGU9dC50b0FycmF5KCkuaW5kZXhPZih0aGlzLl9hY3RpdmVJdGVtKTtlPi0xJiZlIT09dGhpcy5fYWN0aXZlSXRlbUluZGV4JiYodGhpcy5fYWN0aXZlSXRlbUluZGV4PWUpfX0pKX1za2lwUHJlZGljYXRlKHQpe3JldHVybiB0aGlzLl9za2lwUHJlZGljYXRlRm49dCx0aGlzfXdpdGhXcmFwKHQ9ITApe3JldHVybiB0aGlzLl93cmFwPXQsdGhpc313aXRoVmVydGljYWxPcmllbnRhdGlvbih0PSEwKXtyZXR1cm4gdGhpcy5fdmVydGljYWw9dCx0aGlzfXdpdGhIb3Jpem9udGFsT3JpZW50YXRpb24odCl7cmV0dXJuIHRoaXMuX2hvcml6b250YWw9dCx0aGlzfXdpdGhBbGxvd2VkTW9kaWZpZXJLZXlzKHQpe3JldHVybiB0aGlzLl9hbGxvd2VkTW9kaWZpZXJLZXlzPXQsdGhpc313aXRoVHlwZUFoZWFkKHQ9MjAwKXtpZigoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJnRoaXMuX2l0ZW1zLmxlbmd0aCYmdGhpcy5faXRlbXMuc29tZSgodD0+ImZ1bmN0aW9uIiE9dHlwZW9mIHQuZ2V0TGFiZWwpKSl0aHJvdyBFcnJvcigiTGlzdEtleU1hbmFnZXIgaXRlbXMgaW4gdHlwZWFoZWFkIG1vZGUgbXVzdCBpbXBsZW1lbnQgdGhlIGBnZXRMYWJlbGAgbWV0aG9kLiIpO3JldHVybiB0aGlzLl90eXBlYWhlYWRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLl90eXBlYWhlYWRTdWJzY3JpcHRpb249dGhpcy5fbGV0dGVyS2V5U3RyZWFtLnBpcGUoV2UoKHQ9PnRoaXMuX3ByZXNzZWRMZXR0ZXJzLnB1c2godCkpKSxDZSh0KSx1ZSgoKCk9PnRoaXMuX3ByZXNzZWRMZXR0ZXJzLmxlbmd0aD4wKSksVnQoKCgpPT50aGlzLl9wcmVzc2VkTGV0dGVycy5qb2luKCIiKSkpKS5zdWJzY3JpYmUoKHQ9Pntjb25zdCBlPXRoaXMuX2dldEl0ZW1zQXJyYXkoKTtmb3IobGV0IG49MTtuPGUubGVuZ3RoKzE7bisrKXtjb25zdCBvPSh0aGlzLl9hY3RpdmVJdGVtSW5kZXgrbiklZS5sZW5ndGgsaT1lW29dO2lmKCF0aGlzLl9za2lwUHJlZGljYXRlRm4oaSkmJjA9PT1pLmdldExhYmVsKCkudG9VcHBlckNhc2UoKS50cmltKCkuaW5kZXhPZih0KSl7dGhpcy5zZXRBY3RpdmVJdGVtKG8pO2JyZWFrfX10aGlzLl9wcmVzc2VkTGV0dGVycz1bXX0pKSx0aGlzfXdpdGhIb21lQW5kRW5kKHQ9ITApe3JldHVybiB0aGlzLl9ob21lQW5kRW5kPXQsdGhpc31zZXRBY3RpdmVJdGVtKHQpe2NvbnN0IGU9dGhpcy5fYWN0aXZlSXRlbTt0aGlzLnVwZGF0ZUFjdGl2ZUl0ZW0odCksdGhpcy5fYWN0aXZlSXRlbSE9PWUmJnRoaXMuY2hhbmdlLm5leHQodGhpcy5fYWN0aXZlSXRlbUluZGV4KX1vbktleWRvd24odCl7Y29uc3QgZT10LmtleUNvZGUsbj1bImFsdEtleSIsImN0cmxLZXkiLCJtZXRhS2V5Iiwic2hpZnRLZXkiXS5ldmVyeSgoZT0+IXRbZV18fHRoaXMuX2FsbG93ZWRNb2RpZmllcktleXMuaW5kZXhPZihlKT4tMSkpO3N3aXRjaChlKXtjYXNlIDk6cmV0dXJuIHZvaWQgdGhpcy50YWJPdXQubmV4dCgpO2Nhc2UgJEk6aWYodGhpcy5fdmVydGljYWwmJm4pe3RoaXMuc2V0TmV4dEl0ZW1BY3RpdmUoKTticmVha31yZXR1cm47Y2FzZSBRSTppZih0aGlzLl92ZXJ0aWNhbCYmbil7dGhpcy5zZXRQcmV2aW91c0l0ZW1BY3RpdmUoKTticmVha31yZXR1cm47Y2FzZSAzOTppZih0aGlzLl9ob3Jpem9udGFsJiZuKXsicnRsIj09PXRoaXMuX2hvcml6b250YWw/dGhpcy5zZXRQcmV2aW91c0l0ZW1BY3RpdmUoKTp0aGlzLnNldE5leHRJdGVtQWN0aXZlKCk7YnJlYWt9cmV0dXJuO2Nhc2UgMzc6aWYodGhpcy5faG9yaXpvbnRhbCYmbil7InJ0bCI9PT10aGlzLl9ob3Jpem9udGFsP3RoaXMuc2V0TmV4dEl0ZW1BY3RpdmUoKTp0aGlzLnNldFByZXZpb3VzSXRlbUFjdGl2ZSgpO2JyZWFrfXJldHVybjtjYXNlIDM2OmlmKHRoaXMuX2hvbWVBbmRFbmQmJm4pe3RoaXMuc2V0Rmlyc3RJdGVtQWN0aXZlKCk7YnJlYWt9cmV0dXJuO2Nhc2UgMzU6aWYodGhpcy5faG9tZUFuZEVuZCYmbil7dGhpcy5zZXRMYXN0SXRlbUFjdGl2ZSgpO2JyZWFrfXJldHVybjtkZWZhdWx0OnJldHVybiB2b2lkKChufHx0SCh0LCJzaGlmdEtleSIpKSYmKHQua2V5JiYxPT09dC5rZXkubGVuZ3RoP3RoaXMuX2xldHRlcktleVN0cmVhbS5uZXh0KHQua2V5LnRvTG9jYWxlVXBwZXJDYXNlKCkpOihlPj02NSYmZTw9OTB8fGU+PTQ4JiZlPD01NykmJnRoaXMuX2xldHRlcktleVN0cmVhbS5uZXh0KFN0cmluZy5mcm9tQ2hhckNvZGUoZSkpKSl9dGhpcy5fcHJlc3NlZExldHRlcnM9W10sdC5wcmV2ZW50RGVmYXVsdCgpfWdldCBhY3RpdmVJdGVtSW5kZXgoKXtyZXR1cm4gdGhpcy5fYWN0aXZlSXRlbUluZGV4fWdldCBhY3RpdmVJdGVtKCl7cmV0dXJuIHRoaXMuX2FjdGl2ZUl0ZW19aXNUeXBpbmcoKXtyZXR1cm4gdGhpcy5fcHJlc3NlZExldHRlcnMubGVuZ3RoPjB9c2V0Rmlyc3RJdGVtQWN0aXZlKCl7dGhpcy5fc2V0QWN0aXZlSXRlbUJ5SW5kZXgoMCwxKX1zZXRMYXN0SXRlbUFjdGl2ZSgpe3RoaXMuX3NldEFjdGl2ZUl0ZW1CeUluZGV4KHRoaXMuX2l0ZW1zLmxlbmd0aC0xLC0xKX1zZXROZXh0SXRlbUFjdGl2ZSgpe3RoaXMuX2FjdGl2ZUl0ZW1JbmRleDwwP3RoaXMuc2V0Rmlyc3RJdGVtQWN0aXZlKCk6dGhpcy5fc2V0QWN0aXZlSXRlbUJ5RGVsdGEoMSl9c2V0UHJldmlvdXNJdGVtQWN0aXZlKCl7dGhpcy5fYWN0aXZlSXRlbUluZGV4PDAmJnRoaXMuX3dyYXA/dGhpcy5zZXRMYXN0SXRlbUFjdGl2ZSgpOnRoaXMuX3NldEFjdGl2ZUl0ZW1CeURlbHRhKC0xKX11cGRhdGVBY3RpdmVJdGVtKHQpe2NvbnN0IGU9dGhpcy5fZ2V0SXRlbXNBcnJheSgpLG49Im51bWJlciI9PXR5cGVvZiB0P3Q6ZS5pbmRleE9mKHQpLG89ZVtuXTt0aGlzLl9hY3RpdmVJdGVtPW51bGw9PW8/bnVsbDpvLHRoaXMuX2FjdGl2ZUl0ZW1JbmRleD1ufV9zZXRBY3RpdmVJdGVtQnlEZWx0YSh0KXt0aGlzLl93cmFwP3RoaXMuX3NldEFjdGl2ZUluV3JhcE1vZGUodCk6dGhpcy5fc2V0QWN0aXZlSW5EZWZhdWx0TW9kZSh0KX1fc2V0QWN0aXZlSW5XcmFwTW9kZSh0KXtjb25zdCBlPXRoaXMuX2dldEl0ZW1zQXJyYXkoKTtmb3IobGV0IG49MTtuPD1lLmxlbmd0aDtuKyspe2NvbnN0IG89KHRoaXMuX2FjdGl2ZUl0ZW1JbmRleCt0Km4rZS5sZW5ndGgpJWUubGVuZ3RoO2lmKCF0aGlzLl9za2lwUHJlZGljYXRlRm4oZVtvXSkpcmV0dXJuIHZvaWQgdGhpcy5zZXRBY3RpdmVJdGVtKG8pfX1fc2V0QWN0aXZlSW5EZWZhdWx0TW9kZSh0KXt0aGlzLl9zZXRBY3RpdmVJdGVtQnlJbmRleCh0aGlzLl9hY3RpdmVJdGVtSW5kZXgrdCx0KX1fc2V0QWN0aXZlSXRlbUJ5SW5kZXgodCxlKXtjb25zdCBuPXRoaXMuX2dldEl0ZW1zQXJyYXkoKTtpZihuW3RdKXtmb3IoO3RoaXMuX3NraXBQcmVkaWNhdGVGbihuW3RdKTspaWYoIW5bdCs9ZV0pcmV0dXJuO3RoaXMuc2V0QWN0aXZlSXRlbSh0KX19X2dldEl0ZW1zQXJyYXkoKXtyZXR1cm4gdGhpcy5faXRlbXMgaW5zdGFuY2VvZiBSeT90aGlzLl9pdGVtcy50b0FycmF5KCk6dGhpcy5faXRlbXN9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBGSCBleHRlbmRzIEhIe3NldEFjdGl2ZUl0ZW0odCl7dGhpcy5hY3RpdmVJdGVtJiZ0aGlzLmFjdGl2ZUl0ZW0uc2V0SW5hY3RpdmVTdHlsZXMoKSxzdXBlci5zZXRBY3RpdmVJdGVtKHQpLHRoaXMuYWN0aXZlSXRlbSYmdGhpcy5hY3RpdmVJdGVtLnNldEFjdGl2ZVN0eWxlcygpfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgTEggZXh0ZW5kcyBISHtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5fb3JpZ2luPSJwcm9ncmFtIn1zZXRGb2N1c09yaWdpbih0KXtyZXR1cm4gdGhpcy5fb3JpZ2luPXQsdGhpc31zZXRBY3RpdmVJdGVtKHQpe3N1cGVyLnNldEFjdGl2ZUl0ZW0odCksdGhpcy5hY3RpdmVJdGVtJiZ0aGlzLmFjdGl2ZUl0ZW0uZm9jdXModGhpcy5fb3JpZ2luKX19Y2xhc3MgQkh7Y29uc3RydWN0b3IodCl7dGhpcy5fcGxhdGZvcm09dH1pc0Rpc2FibGVkKHQpe3JldHVybiB0Lmhhc0F0dHJpYnV0ZSgiZGlzYWJsZWQiKX1pc1Zpc2libGUodCl7cmV0dXJuKGZ1bmN0aW9uIGUodCl7cmV0dXJuISEodC5vZmZzZXRXaWR0aHx8dC5vZmZzZXRIZWlnaHR8fCJmdW5jdGlvbiI9PXR5cGVvZiB0LmdldENsaWVudFJlY3RzJiZ0LmdldENsaWVudFJlY3RzKCkubGVuZ3RoKX0pKHQpJiYidmlzaWJsZSI9PT1nZXRDb21wdXRlZFN0eWxlKHQpLnZpc2liaWxpdHl9aXNUYWJiYWJsZSh0KXtpZighdGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyKXJldHVybiExO2NvbnN0IGU9KGZ1bmN0aW9uIG8odCl7dHJ5e3JldHVybiB0LmZyYW1lRWxlbWVudH1jYXRjaCh0KXtyZXR1cm4gbnVsbH19KSgoZnVuY3Rpb24gbih0KXtyZXR1cm4gdC5vd25lckRvY3VtZW50JiZ0Lm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXd8fHdpbmRvd30KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovKSh0KSk7aWYoZSl7aWYoLTE9PT1qSChlKSlyZXR1cm4hMTtpZighdGhpcy5pc1Zpc2libGUoZSkpcmV0dXJuITF9bGV0IGk9dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLGE9akgodCk7cmV0dXJuIHQuaGFzQXR0cmlidXRlKCJjb250ZW50ZWRpdGFibGUiKT8tMSE9PWE6ImlmcmFtZSIhPT1pJiYib2JqZWN0IiE9PWkmJighKHRoaXMuX3BsYXRmb3JtLldFQktJVCYmdGhpcy5fcGxhdGZvcm0uSU9TJiYhKGZ1bmN0aW9uIHIodCl7bGV0IGU9dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLG49ImlucHV0Ij09PWUmJnQudHlwZTtyZXR1cm4idGV4dCI9PT1ufHwicGFzc3dvcmQiPT09bnx8InNlbGVjdCI9PT1lfHwidGV4dGFyZWEiPT09ZX0pKHQpKSYmKCJhdWRpbyI9PT1pPyEhdC5oYXNBdHRyaWJ1dGUoImNvbnRyb2xzIikmJi0xIT09YToidmlkZW8iPT09aT8tMSE9PWEmJihudWxsIT09YXx8KHRoaXMuX3BsYXRmb3JtLkZJUkVGT1h8fHQuaGFzQXR0cmlidXRlKCJjb250cm9scyIpKSk6dC50YWJJbmRleD49MCkpfWlzRm9jdXNhYmxlKHQsZSl7cmV0dXJuKGZ1bmN0aW9uIG4odCl7aWYoKGZ1bmN0aW9uIGUodCl7cmV0dXJuKGZ1bmN0aW9uIGUodCl7cmV0dXJuImlucHV0Ij09dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpfSkodCkmJiJoaWRkZW4iPT10LnR5cGV9KSh0KSlyZXR1cm4hMTtyZXR1cm4oZnVuY3Rpb24gbih0KXtsZXQgZT10Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImlucHV0Ij09PWV8fCJzZWxlY3QiPT09ZXx8ImJ1dHRvbiI9PT1lfHwidGV4dGFyZWEiPT09ZX0pKHQpfHwoZnVuY3Rpb24gbyh0KXtyZXR1cm4oZnVuY3Rpb24gZSh0KXtyZXR1cm4iYSI9PXQubm9kZU5hbWUudG9Mb3dlckNhc2UoKX0pKHQpJiZ0Lmhhc0F0dHJpYnV0ZSgiaHJlZiIpfSkodCl8fHQuaGFzQXR0cmlidXRlKCJjb250ZW50ZWRpdGFibGUiKXx8VkgodCl9KSh0KSYmIXRoaXMuaXNEaXNhYmxlZCh0KSYmKChudWxsPT1lP3ZvaWQgMDplLmlnbm9yZVZpc2liaWxpdHkpfHx0aGlzLmlzVmlzaWJsZSh0KSl9fWZ1bmN0aW9uIFZIKHQpe2lmKCF0Lmhhc0F0dHJpYnV0ZSgidGFiaW5kZXgiKXx8dm9pZCAwPT09dC50YWJJbmRleClyZXR1cm4hMTtsZXQgZT10LmdldEF0dHJpYnV0ZSgidGFiaW5kZXgiKTtyZXR1cm4iLTMyNzY4IiE9ZSYmISghZXx8aXNOYU4ocGFyc2VJbnQoZSwxMCkpKX1mdW5jdGlvbiBqSCh0KXtpZighVkgodCkpcmV0dXJuIG51bGw7Y29uc3QgZT1wYXJzZUludCh0LmdldEF0dHJpYnV0ZSgidGFiaW5kZXgiKXx8IiIsMTApO3JldHVybiBpc05hTihlKT8tMTplfUJILsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxCSCkoVHIoY0gpKX0sQkguybVwcm92PVNuKHtmYWN0b3J5OmZ1bmN0aW9uIHQoKXtyZXR1cm4gbmV3IEJIKFRyKGNIKSl9LHRva2VuOkJILHByb3ZpZGVkSW46InJvb3QifSksQkguY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpjSH1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoQkgsW3t0eXBlOlVtLGFyZ3M6W3twcm92aWRlZEluOiJyb290In1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmNIfV19KSxudWxsKTtjbGFzcyBVSHtjb25zdHJ1Y3Rvcih0LGUsbixvLGk9ITEpe3RoaXMuX2VsZW1lbnQ9dCx0aGlzLl9jaGVja2VyPWUsdGhpcy5fbmdab25lPW4sdGhpcy5fZG9jdW1lbnQ9byx0aGlzLl9oYXNBdHRhY2hlZD0hMSx0aGlzLnN0YXJ0QW5jaG9yTGlzdGVuZXI9KCk9PnRoaXMuZm9jdXNMYXN0VGFiYmFibGVFbGVtZW50KCksdGhpcy5lbmRBbmNob3JMaXN0ZW5lcj0oKT0+dGhpcy5mb2N1c0ZpcnN0VGFiYmFibGVFbGVtZW50KCksdGhpcy5fZW5hYmxlZD0hMCxpfHx0aGlzLmF0dGFjaEFuY2hvcnMoKX1nZXQgZW5hYmxlZCgpe3JldHVybiB0aGlzLl9lbmFibGVkfXNldCBlbmFibGVkKHQpe3RoaXMuX2VuYWJsZWQ9dCx0aGlzLl9zdGFydEFuY2hvciYmdGhpcy5fZW5kQW5jaG9yJiYodGhpcy5fdG9nZ2xlQW5jaG9yVGFiSW5kZXgodCx0aGlzLl9zdGFydEFuY2hvciksdGhpcy5fdG9nZ2xlQW5jaG9yVGFiSW5kZXgodCx0aGlzLl9lbmRBbmNob3IpKX1kZXN0cm95KCl7Y29uc3QgdD10aGlzLl9zdGFydEFuY2hvcixlPXRoaXMuX2VuZEFuY2hvcjt0JiYodC5yZW1vdmVFdmVudExpc3RlbmVyKCJmb2N1cyIsdGhpcy5zdGFydEFuY2hvckxpc3RlbmVyKSx0LnBhcmVudE5vZGUmJnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0KSksZSYmKGUucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZm9jdXMiLHRoaXMuZW5kQW5jaG9yTGlzdGVuZXIpLGUucGFyZW50Tm9kZSYmZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGUpKSx0aGlzLl9zdGFydEFuY2hvcj10aGlzLl9lbmRBbmNob3I9bnVsbCx0aGlzLl9oYXNBdHRhY2hlZD0hMX1hdHRhY2hBbmNob3JzKCl7cmV0dXJuISF0aGlzLl9oYXNBdHRhY2hlZHx8KHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9Pnt0aGlzLl9zdGFydEFuY2hvcnx8KHRoaXMuX3N0YXJ0QW5jaG9yPXRoaXMuX2NyZWF0ZUFuY2hvcigpLHRoaXMuX3N0YXJ0QW5jaG9yLmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzIix0aGlzLnN0YXJ0QW5jaG9yTGlzdGVuZXIpKSx0aGlzLl9lbmRBbmNob3J8fCh0aGlzLl9lbmRBbmNob3I9dGhpcy5fY3JlYXRlQW5jaG9yKCksdGhpcy5fZW5kQW5jaG9yLmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzIix0aGlzLmVuZEFuY2hvckxpc3RlbmVyKSl9KSksdGhpcy5fZWxlbWVudC5wYXJlbnROb2RlJiYodGhpcy5fZWxlbWVudC5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0aGlzLl9zdGFydEFuY2hvcix0aGlzLl9lbGVtZW50KSx0aGlzLl9lbGVtZW50LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRoaXMuX2VuZEFuY2hvcix0aGlzLl9lbGVtZW50Lm5leHRTaWJsaW5nKSx0aGlzLl9oYXNBdHRhY2hlZD0hMCksdGhpcy5faGFzQXR0YWNoZWQpfWZvY3VzSW5pdGlhbEVsZW1lbnRXaGVuUmVhZHkodCl7cmV0dXJuIG5ldyBQcm9taXNlKChlPT57dGhpcy5fZXhlY3V0ZU9uU3RhYmxlKCgoKT0+ZSh0aGlzLmZvY3VzSW5pdGlhbEVsZW1lbnQodCkpKSl9KSl9Zm9jdXNGaXJzdFRhYmJhYmxlRWxlbWVudFdoZW5SZWFkeSh0KXtyZXR1cm4gbmV3IFByb21pc2UoKGU9Pnt0aGlzLl9leGVjdXRlT25TdGFibGUoKCgpPT5lKHRoaXMuZm9jdXNGaXJzdFRhYmJhYmxlRWxlbWVudCh0KSkpKX0pKX1mb2N1c0xhc3RUYWJiYWJsZUVsZW1lbnRXaGVuUmVhZHkodCl7cmV0dXJuIG5ldyBQcm9taXNlKChlPT57dGhpcy5fZXhlY3V0ZU9uU3RhYmxlKCgoKT0+ZSh0aGlzLmZvY3VzTGFzdFRhYmJhYmxlRWxlbWVudCh0KSkpKX0pKX1fZ2V0UmVnaW9uQm91bmRhcnkodCl7bGV0IGU9dGhpcy5fZWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKGBbY2RrLWZvY3VzLXJlZ2lvbi0ke3R9XSwgW2Nka0ZvY3VzUmVnaW9uJHt0fV0sIFtjZGstZm9jdXMtJHt0fV1gKTtmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rKyllW25dLmhhc0F0dHJpYnV0ZShgY2RrLWZvY3VzLSR7dH1gKT9jb25zb2xlLndhcm4oYEZvdW5kIHVzZSBvZiBkZXByZWNhdGVkIGF0dHJpYnV0ZSAnY2RrLWZvY3VzLSR7dH0nLCB1c2UgJ2Nka0ZvY3VzUmVnaW9uJHt0fScgaW5zdGVhZC4gVGhlIGRlcHJlY2F0ZWQgYXR0cmlidXRlIHdpbGwgYmUgcmVtb3ZlZCBpbiA4LjAuMC5gLGVbbl0pOmVbbl0uaGFzQXR0cmlidXRlKGBjZGstZm9jdXMtcmVnaW9uLSR7dH1gKSYmY29uc29sZS53YXJuKGBGb3VuZCB1c2Ugb2YgZGVwcmVjYXRlZCBhdHRyaWJ1dGUgJ2Nkay1mb2N1cy1yZWdpb24tJHt0fScsIHVzZSAnY2RrRm9jdXNSZWdpb24ke3R9JyBpbnN0ZWFkLiBUaGUgZGVwcmVjYXRlZCBhdHRyaWJ1dGUgd2lsbCBiZSByZW1vdmVkIGluIDguMC4wLmAsZVtuXSk7cmV0dXJuInN0YXJ0Ij09dD9lLmxlbmd0aD9lWzBdOnRoaXMuX2dldEZpcnN0VGFiYmFibGVFbGVtZW50KHRoaXMuX2VsZW1lbnQpOmUubGVuZ3RoP2VbZS5sZW5ndGgtMV06dGhpcy5fZ2V0TGFzdFRhYmJhYmxlRWxlbWVudCh0aGlzLl9lbGVtZW50KX1mb2N1c0luaXRpYWxFbGVtZW50KHQpe2NvbnN0IGU9dGhpcy5fZWxlbWVudC5xdWVyeVNlbGVjdG9yKCJbY2RrLWZvY3VzLWluaXRpYWxdLCBbY2RrRm9jdXNJbml0aWFsXSIpO2lmKGUpe2lmKGUuaGFzQXR0cmlidXRlKCJjZGstZm9jdXMtaW5pdGlhbCIpJiZjb25zb2xlLndhcm4oIkZvdW5kIHVzZSBvZiBkZXByZWNhdGVkIGF0dHJpYnV0ZSAnY2RrLWZvY3VzLWluaXRpYWwnLCB1c2UgJ2Nka0ZvY3VzSW5pdGlhbCcgaW5zdGVhZC4gVGhlIGRlcHJlY2F0ZWQgYXR0cmlidXRlIHdpbGwgYmUgcmVtb3ZlZCBpbiA4LjAuMCIsZSksInVuZGVmaW5lZCIhPXR5cGVvZiBuZ0Rldk1vZGUmJiFuZ0Rldk1vZGV8fHRoaXMuX2NoZWNrZXIuaXNGb2N1c2FibGUoZSl8fGNvbnNvbGUud2FybigiRWxlbWVudCBtYXRjaGluZyAnW2Nka0ZvY3VzSW5pdGlhbF0nIGlzIG5vdCBmb2N1c2FibGUuIixlKSwhdGhpcy5fY2hlY2tlci5pc0ZvY3VzYWJsZShlKSl7Y29uc3Qgbj10aGlzLl9nZXRGaXJzdFRhYmJhYmxlRWxlbWVudChlKTtyZXR1cm4gbnVsbD09bnx8bi5mb2N1cyh0KSwhIW59cmV0dXJuIGUuZm9jdXModCksITB9cmV0dXJuIHRoaXMuZm9jdXNGaXJzdFRhYmJhYmxlRWxlbWVudCh0KX1mb2N1c0ZpcnN0VGFiYmFibGVFbGVtZW50KHQpe2NvbnN0IGU9dGhpcy5fZ2V0UmVnaW9uQm91bmRhcnkoInN0YXJ0Iik7cmV0dXJuIGUmJmUuZm9jdXModCksISFlfWZvY3VzTGFzdFRhYmJhYmxlRWxlbWVudCh0KXtjb25zdCBlPXRoaXMuX2dldFJlZ2lvbkJvdW5kYXJ5KCJlbmQiKTtyZXR1cm4gZSYmZS5mb2N1cyh0KSwhIWV9aGFzQXR0YWNoZWQoKXtyZXR1cm4gdGhpcy5faGFzQXR0YWNoZWR9X2dldEZpcnN0VGFiYmFibGVFbGVtZW50KHQpe2lmKHRoaXMuX2NoZWNrZXIuaXNGb2N1c2FibGUodCkmJnRoaXMuX2NoZWNrZXIuaXNUYWJiYWJsZSh0KSlyZXR1cm4gdDtsZXQgZT10LmNoaWxkcmVufHx0LmNoaWxkTm9kZXM7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0Kyspe2xldCBuPWVbdF0ubm9kZVR5cGU9PT10aGlzLl9kb2N1bWVudC5FTEVNRU5UX05PREU/dGhpcy5fZ2V0Rmlyc3RUYWJiYWJsZUVsZW1lbnQoZVt0XSk6bnVsbDtpZihuKXJldHVybiBufXJldHVybiBudWxsfV9nZXRMYXN0VGFiYmFibGVFbGVtZW50KHQpe2lmKHRoaXMuX2NoZWNrZXIuaXNGb2N1c2FibGUodCkmJnRoaXMuX2NoZWNrZXIuaXNUYWJiYWJsZSh0KSlyZXR1cm4gdDtsZXQgZT10LmNoaWxkcmVufHx0LmNoaWxkTm9kZXM7Zm9yKGxldCB0PWUubGVuZ3RoLTE7dD49MDt0LS0pe2xldCBuPWVbdF0ubm9kZVR5cGU9PT10aGlzLl9kb2N1bWVudC5FTEVNRU5UX05PREU/dGhpcy5fZ2V0TGFzdFRhYmJhYmxlRWxlbWVudChlW3RdKTpudWxsO2lmKG4pcmV0dXJuIG59cmV0dXJuIG51bGx9X2NyZWF0ZUFuY2hvcigpe2NvbnN0IHQ9dGhpcy5fZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7cmV0dXJuIHRoaXMuX3RvZ2dsZUFuY2hvclRhYkluZGV4KHRoaXMuX2VuYWJsZWQsdCksdC5jbGFzc0xpc3QuYWRkKCJjZGstdmlzdWFsbHktaGlkZGVuIiksdC5jbGFzc0xpc3QuYWRkKCJjZGstZm9jdXMtdHJhcC1hbmNob3IiKSx0LnNldEF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iLCJ0cnVlIiksdH1fdG9nZ2xlQW5jaG9yVGFiSW5kZXgodCxlKXt0P2Uuc2V0QXR0cmlidXRlKCJ0YWJpbmRleCIsIjAiKTplLnJlbW92ZUF0dHJpYnV0ZSgidGFiaW5kZXgiKX10b2dnbGVBbmNob3JzKHQpe3RoaXMuX3N0YXJ0QW5jaG9yJiZ0aGlzLl9lbmRBbmNob3ImJih0aGlzLl90b2dnbGVBbmNob3JUYWJJbmRleCh0LHRoaXMuX3N0YXJ0QW5jaG9yKSx0aGlzLl90b2dnbGVBbmNob3JUYWJJbmRleCh0LHRoaXMuX2VuZEFuY2hvcikpfV9leGVjdXRlT25TdGFibGUodCl7dGhpcy5fbmdab25lLmlzU3RhYmxlP3QoKTp0aGlzLl9uZ1pvbmUub25TdGFibGUucGlwZSh2ZSgxKSkuc3Vic2NyaWJlKHQpfX1jbGFzcyBXSHtjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5fY2hlY2tlcj10LHRoaXMuX25nWm9uZT1lLHRoaXMuX2RvY3VtZW50PW59Y3JlYXRlKHQsZT0hMSl7cmV0dXJuIG5ldyBVSCh0LHRoaXMuX2NoZWNrZXIsdGhpcy5fbmdab25lLHRoaXMuX2RvY3VtZW50LGUpfX1XSC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8V0gpKFRyKEJIKSxUcihtQyksVHIoc00pKX0sV0guybVwcm92PVNuKHtmYWN0b3J5OmZ1bmN0aW9uIHQoKXtyZXR1cm4gbmV3IFdIKFRyKEJIKSxUcihtQyksVHIoc00pKX0sdG9rZW46V0gscHJvdmlkZWRJbjoicm9vdCJ9KSxXSC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkJIfSx7dHlwZTptQ30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3NNXX1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihXSCxbe3R5cGU6VW0sYXJnczpbe3Byb3ZpZGVkSW46InJvb3QifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6Qkh9LHt0eXBlOm1DfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19XX0pLG51bGwpO2NsYXNzIEdIe2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLl9lbGVtZW50UmVmPXQsdGhpcy5fZm9jdXNUcmFwRmFjdG9yeT1lLHRoaXMuX3ByZXZpb3VzbHlGb2N1c2VkRWxlbWVudD1udWxsLHRoaXMuZm9jdXNUcmFwPXRoaXMuX2ZvY3VzVHJhcEZhY3RvcnkuY3JlYXRlKHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwhMCl9Z2V0IGVuYWJsZWQoKXtyZXR1cm4gdGhpcy5mb2N1c1RyYXAuZW5hYmxlZH1zZXQgZW5hYmxlZCh0KXt0aGlzLmZvY3VzVHJhcC5lbmFibGVkPWVIKHQpfWdldCBhdXRvQ2FwdHVyZSgpe3JldHVybiB0aGlzLl9hdXRvQ2FwdHVyZX1zZXQgYXV0b0NhcHR1cmUodCl7dGhpcy5fYXV0b0NhcHR1cmU9ZUgodCl9bmdPbkRlc3Ryb3koKXt0aGlzLmZvY3VzVHJhcC5kZXN0cm95KCksdGhpcy5fcHJldmlvdXNseUZvY3VzZWRFbGVtZW50JiYodGhpcy5fcHJldmlvdXNseUZvY3VzZWRFbGVtZW50LmZvY3VzKCksdGhpcy5fcHJldmlvdXNseUZvY3VzZWRFbGVtZW50PW51bGwpfW5nQWZ0ZXJDb250ZW50SW5pdCgpe3RoaXMuZm9jdXNUcmFwLmF0dGFjaEFuY2hvcnMoKSx0aGlzLmF1dG9DYXB0dXJlJiZ0aGlzLl9jYXB0dXJlRm9jdXMoKX1uZ0RvQ2hlY2soKXt0aGlzLmZvY3VzVHJhcC5oYXNBdHRhY2hlZCgpfHx0aGlzLmZvY3VzVHJhcC5hdHRhY2hBbmNob3JzKCl9bmdPbkNoYW5nZXModCl7Y29uc3QgZT10LmF1dG9DYXB0dXJlO2UmJiFlLmZpcnN0Q2hhbmdlJiZ0aGlzLmF1dG9DYXB0dXJlJiZ0aGlzLmZvY3VzVHJhcC5oYXNBdHRhY2hlZCgpJiZ0aGlzLl9jYXB0dXJlRm9jdXMoKX1fY2FwdHVyZUZvY3VzKCl7dGhpcy5fcHJldmlvdXNseUZvY3VzZWRFbGVtZW50PU1IKCksdGhpcy5mb2N1c1RyYXAuZm9jdXNJbml0aWFsRWxlbWVudFdoZW5SZWFkeSgpfX1HSC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8R0gpKGdmKEtoKSxnZihXSCksZ2Yoc00pKX0sR0guybVkaXI9aG8oe3R5cGU6R0gsc2VsZWN0b3JzOltbIiIsImNka1RyYXBGb2N1cyIsIiJdXSxpbnB1dHM6e2VuYWJsZWQ6WyJjZGtUcmFwRm9jdXMiLCJlbmFibGVkIl0sYXV0b0NhcHR1cmU6WyJjZGtUcmFwRm9jdXNBdXRvQ2FwdHVyZSIsImF1dG9DYXB0dXJlIl19LGV4cG9ydEFzOlsiY2RrVHJhcEZvY3VzIl0sZmVhdHVyZXM6W3FvXX0pLEdILmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6S2h9LHt0eXBlOldIfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19XSxHSC5wcm9wRGVjb3JhdG9ycz17ZW5hYmxlZDpbe3R5cGU6Ul8sYXJnczpbImNka1RyYXBGb2N1cyJdfV0sYXV0b0NhcHR1cmU6W3t0eXBlOlJfLGFyZ3M6WyJjZGtUcmFwRm9jdXNBdXRvQ2FwdHVyZSJdfV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoR0gsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW2Nka1RyYXBGb2N1c10iLGV4cG9ydEFzOiJjZGtUcmFwRm9jdXMifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6S2h9LHt0eXBlOldIfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19XX0pLHtlbmFibGVkOlt7dHlwZTpSXyxhcmdzOlsiY2RrVHJhcEZvY3VzIl19XSxhdXRvQ2FwdHVyZTpbe3R5cGU6Ul8sYXJnczpbImNka1RyYXBGb2N1c0F1dG9DYXB0dXJlIl19XX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgWUggZXh0ZW5kcyBVSHtjb25zdHJ1Y3Rvcih0LGUsbixvLGksYSxyKXtzdXBlcih0LGUsbixvLHIuZGVmZXIpLHRoaXMuX2ZvY3VzVHJhcE1hbmFnZXI9aSx0aGlzLl9pbmVydFN0cmF0ZWd5PWEsdGhpcy5fZm9jdXNUcmFwTWFuYWdlci5yZWdpc3Rlcih0aGlzKX1nZXQgZW5hYmxlZCgpe3JldHVybiB0aGlzLl9lbmFibGVkfXNldCBlbmFibGVkKHQpe3RoaXMuX2VuYWJsZWQ9dCx0aGlzLl9lbmFibGVkP3RoaXMuX2ZvY3VzVHJhcE1hbmFnZXIucmVnaXN0ZXIodGhpcyk6dGhpcy5fZm9jdXNUcmFwTWFuYWdlci5kZXJlZ2lzdGVyKHRoaXMpfWRlc3Ryb3koKXt0aGlzLl9mb2N1c1RyYXBNYW5hZ2VyLmRlcmVnaXN0ZXIodGhpcyksc3VwZXIuZGVzdHJveSgpfV9lbmFibGUoKXt0aGlzLl9pbmVydFN0cmF0ZWd5LnByZXZlbnRGb2N1cyh0aGlzKSx0aGlzLnRvZ2dsZUFuY2hvcnMoITApfV9kaXNhYmxlKCl7dGhpcy5faW5lcnRTdHJhdGVneS5hbGxvd0ZvY3VzKHRoaXMpLHRoaXMudG9nZ2xlQW5jaG9ycyghMSl9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3QgcUg9bmV3IGVyKCJGT0NVU19UUkFQX0lORVJUX1NUUkFURUdZIik7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIFpIKHQsZSl7aWYoISh0IGluc3RhbmNlb2YgTm9kZSkpcmV0dXJuIG51bGw7bGV0IG49dDtmb3IoO251bGwhPW4mJiEobiBpbnN0YW5jZW9mIEVsZW1lbnQpOyluPW4ucGFyZW50Tm9kZTtyZXR1cm4gbiYmKFhIP24uY2xvc2VzdChlKTooZnVuY3Rpb24gbyh0LGUpe2xldCBuPXQ7Zm9yKDtudWxsIT1uJiYhKG4gaW5zdGFuY2VvZiBFbGVtZW50JiZLSChuLGUpKTspbj1uLnBhcmVudE5vZGU7cmV0dXJuIG58fG51bGx9KShuLGUpKX1jb25zdCBYSD0idW5kZWZpbmVkIiE9dHlwZW9mIEVsZW1lbnQmJiEhRWxlbWVudC5wcm90b3R5cGUuY2xvc2VzdDtmdW5jdGlvbiBLSCh0LGUpe3JldHVybiB0Lm1hdGNoZXM/dC5tYXRjaGVzKGUpOnQubXNNYXRjaGVzU2VsZWN0b3IoZSl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIEpIe2NvbnN0cnVjdG9yKCl7dGhpcy5fbGlzdGVuZXI9bnVsbH1wcmV2ZW50Rm9jdXModCl7dGhpcy5fbGlzdGVuZXImJnQuX2RvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoImZvY3VzIix0aGlzLl9saXN0ZW5lciwhMCksdGhpcy5fbGlzdGVuZXI9ZT0+dGhpcy5fdHJhcEZvY3VzKHQsZSksdC5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+e3QuX2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzIix0aGlzLl9saXN0ZW5lciwhMCl9KSl9YWxsb3dGb2N1cyh0KXt0aGlzLl9saXN0ZW5lciYmKHQuX2RvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoImZvY3VzIix0aGlzLl9saXN0ZW5lciwhMCksdGhpcy5fbGlzdGVuZXI9bnVsbCl9X3RyYXBGb2N1cyh0LGUpe2NvbnN0IG49ZS50YXJnZXQsbz10Ll9lbGVtZW50O28uY29udGFpbnMobil8fG51bGwhPT1aSChuLCJkaXYuY2RrLW92ZXJsYXktcGFuZSIpfHxzZXRUaW1lb3V0KCgoKT0+e3QuZW5hYmxlZCYmIW8uY29udGFpbnModC5fZG9jdW1lbnQuYWN0aXZlRWxlbWVudCkmJnQuZm9jdXNGaXJzdFRhYmJhYmxlRWxlbWVudCgpfSkpfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgUUh7Y29uc3RydWN0b3IoKXt0aGlzLl9mb2N1c1RyYXBTdGFjaz1bXX1yZWdpc3Rlcih0KXt0aGlzLl9mb2N1c1RyYXBTdGFjaz10aGlzLl9mb2N1c1RyYXBTdGFjay5maWx0ZXIoKGU9PmUhPT10KSk7bGV0IGU9dGhpcy5fZm9jdXNUcmFwU3RhY2s7ZS5sZW5ndGgmJmVbZS5sZW5ndGgtMV0uX2Rpc2FibGUoKSxlLnB1c2godCksdC5fZW5hYmxlKCl9ZGVyZWdpc3Rlcih0KXt0Ll9kaXNhYmxlKCk7Y29uc3QgZT10aGlzLl9mb2N1c1RyYXBTdGFjayxuPWUuaW5kZXhPZih0KTstMSE9PW4mJihlLnNwbGljZShuLDEpLGUubGVuZ3RoJiZlW2UubGVuZ3RoLTFdLl9lbmFibGUoKSl9fVFILsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxRSCl9LFFILsm1cHJvdj1Tbih7ZmFjdG9yeTpmdW5jdGlvbiB0KCl7cmV0dXJuIG5ldyBRSH0sdG9rZW46UUgscHJvdmlkZWRJbjoicm9vdCJ9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFFILFt7dHlwZTpVbSxhcmdzOlt7cHJvdmlkZWRJbjoicm9vdCJ9XX1dLChmdW5jdGlvbigpe3JldHVybltdfSksbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyAkSHtjb25zdHJ1Y3Rvcih0LGUsbixvLGkpe3RoaXMuX2NoZWNrZXI9dCx0aGlzLl9uZ1pvbmU9ZSx0aGlzLl9mb2N1c1RyYXBNYW5hZ2VyPW4sdGhpcy5fZG9jdW1lbnQ9byx0aGlzLl9pbmVydFN0cmF0ZWd5PWl8fG5ldyBKSH1jcmVhdGUodCxlPXtkZWZlcjohMX0pe2xldCBuO3JldHVybiBuPSJib29sZWFuIj09dHlwZW9mIGU/e2RlZmVyOmV9OmUsbmV3IFlIKHQsdGhpcy5fY2hlY2tlcix0aGlzLl9uZ1pvbmUsdGhpcy5fZG9jdW1lbnQsdGhpcy5fZm9jdXNUcmFwTWFuYWdlcix0aGlzLl9pbmVydFN0cmF0ZWd5LG4pfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmZ1bmN0aW9uIHRGKHQpe3JldHVybiAwPT09dC5vZmZzZXRYJiYwPT09dC5vZmZzZXRZfWZ1bmN0aW9uIGVGKHQpe2NvbnN0IGU9dC50b3VjaGVzJiZ0LnRvdWNoZXNbMF18fHQuY2hhbmdlZFRvdWNoZXMmJnQuY2hhbmdlZFRvdWNoZXNbMF07cmV0dXJuISghZXx8LTEhPT1lLmlkZW50aWZpZXJ8fG51bGwhPWUucmFkaXVzWCYmMSE9PWUucmFkaXVzWHx8bnVsbCE9ZS5yYWRpdXNZJiYxIT09ZS5yYWRpdXNZKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovJEguybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fCRIKShUcihCSCksVHIobUMpLFRyKFFIKSxUcihzTSksVHIocUgsOCkpfSwkSC7JtXByb3Y9U24oe2ZhY3Rvcnk6ZnVuY3Rpb24gdCgpe3JldHVybiBuZXcgJEgoVHIoQkgpLFRyKG1DKSxUcihRSCksVHIoc00pLFRyKHFILDgpKX0sdG9rZW46JEgscHJvdmlkZWRJbjoicm9vdCJ9KSwkSC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkJIfSx7dHlwZTptQ30se3R5cGU6UUh9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltxSF19XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoJEgsW3t0eXBlOlVtLGFyZ3M6W3twcm92aWRlZEluOiJyb290In1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkJIfSx7dHlwZTptQ30se3R5cGU6UUh9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltxSF19XX1dfSksbnVsbCk7Y29uc3QgbkY9bmV3IGVyKCJjZGstaW5wdXQtbW9kYWxpdHktZGV0ZWN0b3Itb3B0aW9ucyIpLG9GPXtpZ25vcmVLZXlzOlsxOCwxNywyMjQsOTEsMTZdfSxpRj1iSCh7cGFzc2l2ZTohMCxjYXB0dXJlOiEwfSk7Y2xhc3MgYUZ7Y29uc3RydWN0b3IodCxlLG4sbyl7dGhpcy5fcGxhdGZvcm09dCx0aGlzLl9tb3N0UmVjZW50VGFyZ2V0PW51bGwsdGhpcy5fbW9kYWxpdHk9bmV3IGoobnVsbCksdGhpcy5fbGFzdFRvdWNoTXM9MCx0aGlzLl9vbktleWRvd249dD0+e3ZhciBlLG47KG51bGw9PT0obj1udWxsPT09KGU9dGhpcy5fb3B0aW9ucyl8fHZvaWQgMD09PWU/dm9pZCAwOmUuaWdub3JlS2V5cyl8fHZvaWQgMD09PW4/dm9pZCAwOm4uc29tZSgoZT0+ZT09PXQua2V5Q29kZSkpKXx8KHRoaXMuX21vZGFsaXR5Lm5leHQoImtleWJvYXJkIiksdGhpcy5fbW9zdFJlY2VudFRhcmdldD12SCh0KSl9LHRoaXMuX29uTW91c2Vkb3duPXQ9PntEYXRlLm5vdygpLXRoaXMuX2xhc3RUb3VjaE1zPDY1MHx8KHRoaXMuX21vZGFsaXR5Lm5leHQodEYodCk/ImtleWJvYXJkIjoibW91c2UiKSx0aGlzLl9tb3N0UmVjZW50VGFyZ2V0PXZIKHQpKX0sdGhpcy5fb25Ub3VjaHN0YXJ0PXQ9PntlRih0KT90aGlzLl9tb2RhbGl0eS5uZXh0KCJrZXlib2FyZCIpOih0aGlzLl9sYXN0VG91Y2hNcz1EYXRlLm5vdygpLHRoaXMuX21vZGFsaXR5Lm5leHQoInRvdWNoIiksdGhpcy5fbW9zdFJlY2VudFRhcmdldD12SCh0KSl9LHRoaXMuX29wdGlvbnM9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG9GKSxvKSx0aGlzLm1vZGFsaXR5RGV0ZWN0ZWQ9dGhpcy5fbW9kYWxpdHkucGlwZShMZSgxKSksdGhpcy5tb2RhbGl0eUNoYW5nZWQ9dGhpcy5tb2RhbGl0eURldGVjdGVkLnBpcGUod2UoKSksdC5pc0Jyb3dzZXImJmUucnVuT3V0c2lkZUFuZ3VsYXIoKCgpPT57bi5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIix0aGlzLl9vbktleWRvd24saUYpLG4uYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIix0aGlzLl9vbk1vdXNlZG93bixpRiksbi5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaHN0YXJ0Iix0aGlzLl9vblRvdWNoc3RhcnQsaUYpfSkpfWdldCBtb3N0UmVjZW50TW9kYWxpdHkoKXtyZXR1cm4gdGhpcy5fbW9kYWxpdHkudmFsdWV9bmdPbkRlc3Ryb3koKXt0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXImJihkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJrZXlkb3duIix0aGlzLl9vbktleWRvd24saUYpLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsdGhpcy5fb25Nb3VzZWRvd24saUYpLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRvdWNoc3RhcnQiLHRoaXMuX29uVG91Y2hzdGFydCxpRikpfX1hRi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8YUYpKFRyKGNIKSxUcihtQyksVHIoc00pLFRyKG5GLDgpKX0sYUYuybVwcm92PVNuKHtmYWN0b3J5OmZ1bmN0aW9uIHQoKXtyZXR1cm4gbmV3IGFGKFRyKGNIKSxUcihtQyksVHIoc00pLFRyKG5GLDgpKX0sdG9rZW46YUYscHJvdmlkZWRJbjoicm9vdCJ9KSxhRi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOmNIfSx7dHlwZTptQ30se3R5cGU6RG9jdW1lbnQsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbbkZdfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGFGLFt7dHlwZTpVbSxhcmdzOlt7cHJvdmlkZWRJbjoicm9vdCJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpjSH0se3R5cGU6bUN9LHt0eXBlOkRvY3VtZW50LGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3NNXX1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W25GXX1dfV19KSxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IHJGPW5ldyBlcigibGl2ZUFubm91bmNlckVsZW1lbnQiLHtwcm92aWRlZEluOiJyb290IixmYWN0b3J5OmZ1bmN0aW9uIHNGKCl7cmV0dXJuIG51bGx9fSk7Y29uc3QgbEY9bmV3IGVyKCJMSVZFX0FOTk9VTkNFUl9ERUZBVUxUX09QVElPTlMiKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgY0Z7Y29uc3RydWN0b3IodCxlLG4sbyl7dGhpcy5fbmdab25lPWUsdGhpcy5fZGVmYXVsdE9wdGlvbnM9byx0aGlzLl9kb2N1bWVudD1uLHRoaXMuX2xpdmVFbGVtZW50PXR8fHRoaXMuX2NyZWF0ZUxpdmVFbGVtZW50KCl9YW5ub3VuY2UodCwuLi5lKXtjb25zdCBuPXRoaXMuX2RlZmF1bHRPcHRpb25zO2xldCBvLGk7cmV0dXJuIDE9PT1lLmxlbmd0aCYmIm51bWJlciI9PXR5cGVvZiBlWzBdP2k9ZVswXTpbbyxpXT1lLHRoaXMuY2xlYXIoKSxjbGVhclRpbWVvdXQodGhpcy5fcHJldmlvdXNUaW1lb3V0KSxvfHwobz1uJiZuLnBvbGl0ZW5lc3M/bi5wb2xpdGVuZXNzOiJwb2xpdGUiKSxudWxsPT1pJiZuJiYoaT1uLmR1cmF0aW9uKSx0aGlzLl9saXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoImFyaWEtbGl2ZSIsbyksdGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+bmV3IFByb21pc2UoKGU9PntjbGVhclRpbWVvdXQodGhpcy5fcHJldmlvdXNUaW1lb3V0KSx0aGlzLl9wcmV2aW91c1RpbWVvdXQ9c2V0VGltZW91dCgoKCk9Pnt0aGlzLl9saXZlRWxlbWVudC50ZXh0Q29udGVudD10LGUoKSwibnVtYmVyIj09dHlwZW9mIGkmJih0aGlzLl9wcmV2aW91c1RpbWVvdXQ9c2V0VGltZW91dCgoKCk9PnRoaXMuY2xlYXIoKSksaSkpfSksMTAwKX0pKSkpfWNsZWFyKCl7dGhpcy5fbGl2ZUVsZW1lbnQmJih0aGlzLl9saXZlRWxlbWVudC50ZXh0Q29udGVudD0iIil9bmdPbkRlc3Ryb3koKXtjbGVhclRpbWVvdXQodGhpcy5fcHJldmlvdXNUaW1lb3V0KSx0aGlzLl9saXZlRWxlbWVudCYmdGhpcy5fbGl2ZUVsZW1lbnQucGFyZW50Tm9kZSYmKHRoaXMuX2xpdmVFbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5fbGl2ZUVsZW1lbnQpLHRoaXMuX2xpdmVFbGVtZW50PW51bGwpfV9jcmVhdGVMaXZlRWxlbWVudCgpe2NvbnN0IHQ9ImNkay1saXZlLWFubm91bmNlci1lbGVtZW50IixlPXRoaXMuX2RvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUodCksbj10aGlzLl9kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKyllW3RdLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZVt0XSk7cmV0dXJuIG4uY2xhc3NMaXN0LmFkZCh0KSxuLmNsYXNzTGlzdC5hZGQoImNkay12aXN1YWxseS1oaWRkZW4iKSxuLnNldEF0dHJpYnV0ZSgiYXJpYS1hdG9taWMiLCJ0cnVlIiksbi5zZXRBdHRyaWJ1dGUoImFyaWEtbGl2ZSIsInBvbGl0ZSIpLHRoaXMuX2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobiksbn19Y0YuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGNGKShUcihyRiw4KSxUcihtQyksVHIoc00pLFRyKGxGLDgpKX0sY0YuybVwcm92PVNuKHtmYWN0b3J5OmZ1bmN0aW9uIHQoKXtyZXR1cm4gbmV3IGNGKFRyKHJGLDgpLFRyKG1DKSxUcihzTSksVHIobEYsOCkpfSx0b2tlbjpjRixwcm92aWRlZEluOiJyb290In0pLGNGLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltyRl19XX0se3R5cGU6bUN9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltsRl19XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoY0YsW3t0eXBlOlVtLGFyZ3M6W3twcm92aWRlZEluOiJyb290In1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbckZdfV19LHt0eXBlOm1DfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbbEZdfV19XX0pLG51bGwpO2NsYXNzIGRGe2NvbnN0cnVjdG9yKHQsZSxuLG8pe3RoaXMuX2VsZW1lbnRSZWY9dCx0aGlzLl9saXZlQW5ub3VuY2VyPWUsdGhpcy5fY29udGVudE9ic2VydmVyPW4sdGhpcy5fbmdab25lPW8sdGhpcy5fcG9saXRlbmVzcz0icG9saXRlIn1nZXQgcG9saXRlbmVzcygpe3JldHVybiB0aGlzLl9wb2xpdGVuZXNzfXNldCBwb2xpdGVuZXNzKHQpe3RoaXMuX3BvbGl0ZW5lc3M9Im9mZiI9PT10fHwiYXNzZXJ0aXZlIj09PXQ/dDoicG9saXRlIiwib2ZmIj09PXRoaXMuX3BvbGl0ZW5lc3M/dGhpcy5fc3Vic2NyaXB0aW9uJiYodGhpcy5fc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksdGhpcy5fc3Vic2NyaXB0aW9uPW51bGwpOnRoaXMuX3N1YnNjcmlwdGlvbnx8KHRoaXMuX3N1YnNjcmlwdGlvbj10aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCgpPT50aGlzLl9jb250ZW50T2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLl9lbGVtZW50UmVmKS5zdWJzY3JpYmUoKCgpPT57Y29uc3QgdD10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQudGV4dENvbnRlbnQ7dCE9PXRoaXMuX3ByZXZpb3VzQW5ub3VuY2VkVGV4dCYmKHRoaXMuX2xpdmVBbm5vdW5jZXIuYW5ub3VuY2UodCx0aGlzLl9wb2xpdGVuZXNzKSx0aGlzLl9wcmV2aW91c0Fubm91bmNlZFRleHQ9dCl9KSkpKSl9bmdPbkRlc3Ryb3koKXt0aGlzLl9zdWJzY3JpcHRpb24mJnRoaXMuX3N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpfX1kRi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8ZEYpKGdmKEtoKSxnZihjRiksZ2YoT0gpLGdmKG1DKSl9LGRGLsm1ZGlyPWhvKHt0eXBlOmRGLHNlbGVjdG9yczpbWyIiLCJjZGtBcmlhTGl2ZSIsIiJdXSxpbnB1dHM6e3BvbGl0ZW5lc3M6WyJjZGtBcmlhTGl2ZSIsInBvbGl0ZW5lc3MiXX0sZXhwb3J0QXM6WyJjZGtBcmlhTGl2ZSJdfSksZEYuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpLaH0se3R5cGU6Y0Z9LHt0eXBlOk9IfSx7dHlwZTptQ31dLGRGLnByb3BEZWNvcmF0b3JzPXtwb2xpdGVuZXNzOlt7dHlwZTpSXyxhcmdzOlsiY2RrQXJpYUxpdmUiXX1dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGRGLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6IltjZGtBcmlhTGl2ZV0iLGV4cG9ydEFzOiJjZGtBcmlhTGl2ZSJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpLaH0se3R5cGU6Y0Z9LHt0eXBlOk9IfSx7dHlwZTptQ31dfSkse3BvbGl0ZW5lc3M6W3t0eXBlOlJfLGFyZ3M6WyJjZGtBcmlhTGl2ZSJdfV19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IHBGPW5ldyBlcigiY2RrLWZvY3VzLW1vbml0b3ItZGVmYXVsdC1vcHRpb25zIiksbUY9Ykgoe3Bhc3NpdmU6ITAsY2FwdHVyZTohMH0pO2NsYXNzIGZGe2NvbnN0cnVjdG9yKHQsZSxuLG8saSl7dGhpcy5fbmdab25lPXQsdGhpcy5fcGxhdGZvcm09ZSx0aGlzLl9pbnB1dE1vZGFsaXR5RGV0ZWN0b3I9bix0aGlzLl9vcmlnaW49bnVsbCx0aGlzLl93aW5kb3dGb2N1c2VkPSExLHRoaXMuX29yaWdpbkZyb21Ub3VjaEludGVyYWN0aW9uPSExLHRoaXMuX2VsZW1lbnRJbmZvPW5ldyBNYXAsdGhpcy5fbW9uaXRvcmVkRWxlbWVudENvdW50PTAsdGhpcy5fcm9vdE5vZGVGb2N1c0xpc3RlbmVyQ291bnQ9bmV3IE1hcCx0aGlzLl93aW5kb3dGb2N1c0xpc3RlbmVyPSgpPT57dGhpcy5fd2luZG93Rm9jdXNlZD0hMCx0aGlzLl93aW5kb3dGb2N1c1RpbWVvdXRJZD1zZXRUaW1lb3V0KCgoKT0+dGhpcy5fd2luZG93Rm9jdXNlZD0hMSkpfSx0aGlzLl9zdG9wSW5wdXRNb2RhbGl0eURldGVjdG9yPW5ldyBCLHRoaXMuX3Jvb3ROb2RlRm9jdXNBbmRCbHVyTGlzdGVuZXI9dD0+e2NvbnN0IGU9dkgodCksbj0iZm9jdXMiPT09dC50eXBlP3RoaXMuX29uRm9jdXM6dGhpcy5fb25CbHVyO2ZvcihsZXQgbz1lO287bz1vLnBhcmVudEVsZW1lbnQpbi5jYWxsKHRoaXMsdCxvKX0sdGhpcy5fZG9jdW1lbnQ9byx0aGlzLl9kZXRlY3Rpb25Nb2RlPShudWxsPT1pP3ZvaWQgMDppLmRldGVjdGlvbk1vZGUpfHwwfW1vbml0b3IodCxlPSExKXtjb25zdCBuPXJIKHQpO2lmKCF0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXJ8fDEhPT1uLm5vZGVUeXBlKXJldHVybiB6dChudWxsKTtjb25zdCBvPUNIKG4pfHx0aGlzLl9nZXREb2N1bWVudCgpLGk9dGhpcy5fZWxlbWVudEluZm8uZ2V0KG4pO2lmKGkpcmV0dXJuIGUmJihpLmNoZWNrQ2hpbGRyZW49ITApLGkuc3ViamVjdDtjb25zdCBhPXtjaGVja0NoaWxkcmVuOmUsc3ViamVjdDpuZXcgQixyb290Tm9kZTpvfTtyZXR1cm4gdGhpcy5fZWxlbWVudEluZm8uc2V0KG4sYSksdGhpcy5fcmVnaXN0ZXJHbG9iYWxMaXN0ZW5lcnMoYSksYS5zdWJqZWN0fXN0b3BNb25pdG9yaW5nKHQpe2NvbnN0IGU9ckgodCksbj10aGlzLl9lbGVtZW50SW5mby5nZXQoZSk7biYmKG4uc3ViamVjdC5jb21wbGV0ZSgpLHRoaXMuX3NldENsYXNzZXMoZSksdGhpcy5fZWxlbWVudEluZm8uZGVsZXRlKGUpLHRoaXMuX3JlbW92ZUdsb2JhbExpc3RlbmVycyhuKSl9Zm9jdXNWaWEodCxlLG4pe2NvbnN0IG89ckgodCk7bz09PXRoaXMuX2dldERvY3VtZW50KCkuYWN0aXZlRWxlbWVudD90aGlzLl9nZXRDbG9zZXN0RWxlbWVudHNJbmZvKG8pLmZvckVhY2goKChbdCxuXSk9PnRoaXMuX29yaWdpbkNoYW5nZWQodCxlLG4pKSk6KHRoaXMuX3NldE9yaWdpbihlKSwiZnVuY3Rpb24iPT10eXBlb2Ygby5mb2N1cyYmby5mb2N1cyhuKSl9bmdPbkRlc3Ryb3koKXt0aGlzLl9lbGVtZW50SW5mby5mb3JFYWNoKCgodCxlKT0+dGhpcy5zdG9wTW9uaXRvcmluZyhlKSkpfV9nZXREb2N1bWVudCgpe3JldHVybiB0aGlzLl9kb2N1bWVudHx8ZG9jdW1lbnR9X2dldFdpbmRvdygpe3JldHVybiB0aGlzLl9nZXREb2N1bWVudCgpLmRlZmF1bHRWaWV3fHx3aW5kb3d9X3RvZ2dsZUNsYXNzKHQsZSxuKXtuP3QuY2xhc3NMaXN0LmFkZChlKTp0LmNsYXNzTGlzdC5yZW1vdmUoZSl9X2dldEZvY3VzT3JpZ2luKHQpe3JldHVybiB0aGlzLl9vcmlnaW4/dGhpcy5fb3JpZ2luRnJvbVRvdWNoSW50ZXJhY3Rpb24/dGhpcy5fc2hvdWxkQmVBdHRyaWJ1dGVkVG9Ub3VjaCh0KT8idG91Y2giOiJwcm9ncmFtIjp0aGlzLl9vcmlnaW46dGhpcy5fd2luZG93Rm9jdXNlZCYmdGhpcy5fbGFzdEZvY3VzT3JpZ2luP3RoaXMuX2xhc3RGb2N1c09yaWdpbjoicHJvZ3JhbSJ9X3Nob3VsZEJlQXR0cmlidXRlZFRvVG91Y2godCl7cmV0dXJuIDE9PT10aGlzLl9kZXRlY3Rpb25Nb2RlfHwhIShudWxsPT10P3ZvaWQgMDp0LmNvbnRhaW5zKHRoaXMuX2lucHV0TW9kYWxpdHlEZXRlY3Rvci5fbW9zdFJlY2VudFRhcmdldCkpfV9zZXRDbGFzc2VzKHQsZSl7dGhpcy5fdG9nZ2xlQ2xhc3ModCwiY2RrLWZvY3VzZWQiLCEhZSksdGhpcy5fdG9nZ2xlQ2xhc3ModCwiY2RrLXRvdWNoLWZvY3VzZWQiLCJ0b3VjaCI9PT1lKSx0aGlzLl90b2dnbGVDbGFzcyh0LCJjZGsta2V5Ym9hcmQtZm9jdXNlZCIsImtleWJvYXJkIj09PWUpLHRoaXMuX3RvZ2dsZUNsYXNzKHQsImNkay1tb3VzZS1mb2N1c2VkIiwibW91c2UiPT09ZSksdGhpcy5fdG9nZ2xlQ2xhc3ModCwiY2RrLXByb2dyYW0tZm9jdXNlZCIsInByb2dyYW0iPT09ZSl9X3NldE9yaWdpbih0LGU9ITEpe3RoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9PntpZih0aGlzLl9vcmlnaW49dCx0aGlzLl9vcmlnaW5Gcm9tVG91Y2hJbnRlcmFjdGlvbj0idG91Y2giPT09dCYmZSwwPT09dGhpcy5fZGV0ZWN0aW9uTW9kZSl7Y2xlYXJUaW1lb3V0KHRoaXMuX29yaWdpblRpbWVvdXRJZCk7dGhpcy5fb3JpZ2luVGltZW91dElkPXNldFRpbWVvdXQoKCgpPT50aGlzLl9vcmlnaW49bnVsbCksdGhpcy5fb3JpZ2luRnJvbVRvdWNoSW50ZXJhY3Rpb24/NjUwOjEpfX0pKX1fb25Gb2N1cyh0LGUpe2NvbnN0IG49dGhpcy5fZWxlbWVudEluZm8uZ2V0KGUpLG89dkgodCk7biYmKG4uY2hlY2tDaGlsZHJlbnx8ZT09PW8pJiZ0aGlzLl9vcmlnaW5DaGFuZ2VkKGUsdGhpcy5fZ2V0Rm9jdXNPcmlnaW4obyksbil9X29uQmx1cih0LGUpe2NvbnN0IG49dGhpcy5fZWxlbWVudEluZm8uZ2V0KGUpOyFufHxuLmNoZWNrQ2hpbGRyZW4mJnQucmVsYXRlZFRhcmdldCBpbnN0YW5jZW9mIE5vZGUmJmUuY29udGFpbnModC5yZWxhdGVkVGFyZ2V0KXx8KHRoaXMuX3NldENsYXNzZXMoZSksdGhpcy5fZW1pdE9yaWdpbihuLnN1YmplY3QsbnVsbCkpfV9lbWl0T3JpZ2luKHQsZSl7dGhpcy5fbmdab25lLnJ1bigoKCk9PnQubmV4dChlKSkpfV9yZWdpc3Rlckdsb2JhbExpc3RlbmVycyh0KXtpZighdGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyKXJldHVybjtjb25zdCBlPXQucm9vdE5vZGUsbj10aGlzLl9yb290Tm9kZUZvY3VzTGlzdGVuZXJDb3VudC5nZXQoZSl8fDA7bnx8dGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+e2UuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLHRoaXMuX3Jvb3ROb2RlRm9jdXNBbmRCbHVyTGlzdGVuZXIsbUYpLGUuYWRkRXZlbnRMaXN0ZW5lcigiYmx1ciIsdGhpcy5fcm9vdE5vZGVGb2N1c0FuZEJsdXJMaXN0ZW5lcixtRil9KSksdGhpcy5fcm9vdE5vZGVGb2N1c0xpc3RlbmVyQ291bnQuc2V0KGUsbisxKSwxPT0rK3RoaXMuX21vbml0b3JlZEVsZW1lbnRDb3VudCYmKHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9Pnt0aGlzLl9nZXRXaW5kb3coKS5hZGRFdmVudExpc3RlbmVyKCJmb2N1cyIsdGhpcy5fd2luZG93Rm9jdXNMaXN0ZW5lcil9KSksdGhpcy5faW5wdXRNb2RhbGl0eURldGVjdG9yLm1vZGFsaXR5RGV0ZWN0ZWQucGlwZShqZSh0aGlzLl9zdG9wSW5wdXRNb2RhbGl0eURldGVjdG9yKSkuc3Vic2NyaWJlKCh0PT57dGhpcy5fc2V0T3JpZ2luKHQsITApfSkpKX1fcmVtb3ZlR2xvYmFsTGlzdGVuZXJzKHQpe2NvbnN0IGU9dC5yb290Tm9kZTtpZih0aGlzLl9yb290Tm9kZUZvY3VzTGlzdGVuZXJDb3VudC5oYXMoZSkpe2NvbnN0IHQ9dGhpcy5fcm9vdE5vZGVGb2N1c0xpc3RlbmVyQ291bnQuZ2V0KGUpO3Q+MT90aGlzLl9yb290Tm9kZUZvY3VzTGlzdGVuZXJDb3VudC5zZXQoZSx0LTEpOihlLnJlbW92ZUV2ZW50TGlzdGVuZXIoImZvY3VzIix0aGlzLl9yb290Tm9kZUZvY3VzQW5kQmx1ckxpc3RlbmVyLG1GKSxlLnJlbW92ZUV2ZW50TGlzdGVuZXIoImJsdXIiLHRoaXMuX3Jvb3ROb2RlRm9jdXNBbmRCbHVyTGlzdGVuZXIsbUYpLHRoaXMuX3Jvb3ROb2RlRm9jdXNMaXN0ZW5lckNvdW50LmRlbGV0ZShlKSl9aWYoIS0tdGhpcy5fbW9uaXRvcmVkRWxlbWVudENvdW50KXt0aGlzLl9nZXRXaW5kb3coKS5yZW1vdmVFdmVudExpc3RlbmVyKCJmb2N1cyIsdGhpcy5fd2luZG93Rm9jdXNMaXN0ZW5lciksdGhpcy5fc3RvcElucHV0TW9kYWxpdHlEZXRlY3Rvci5uZXh0KCksY2xlYXJUaW1lb3V0KHRoaXMuX3dpbmRvd0ZvY3VzVGltZW91dElkKSxjbGVhclRpbWVvdXQodGhpcy5fb3JpZ2luVGltZW91dElkKX19X29yaWdpbkNoYW5nZWQodCxlLG4pe3RoaXMuX3NldENsYXNzZXModCxlKSx0aGlzLl9lbWl0T3JpZ2luKG4uc3ViamVjdCxlKSx0aGlzLl9sYXN0Rm9jdXNPcmlnaW49ZX1fZ2V0Q2xvc2VzdEVsZW1lbnRzSW5mbyh0KXtjb25zdCBlPVtdO3JldHVybiB0aGlzLl9lbGVtZW50SW5mby5mb3JFYWNoKCgobixvKT0+eyhvPT09dHx8bi5jaGVja0NoaWxkcmVuJiZvLmNvbnRhaW5zKHQpKSYmZS5wdXNoKFtvLG5dKX0pKSxlfX1mRi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8ZkYpKFRyKG1DKSxUcihjSCksVHIoYUYpLFRyKHNNLDgpLFRyKHBGLDgpKX0sZkYuybVwcm92PVNuKHtmYWN0b3J5OmZ1bmN0aW9uIHQoKXtyZXR1cm4gbmV3IGZGKFRyKG1DKSxUcihjSCksVHIoYUYpLFRyKHNNLDgpLFRyKHBGLDgpKX0sdG9rZW46ZkYscHJvdmlkZWRJbjoicm9vdCJ9KSxmRi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOm1DfSx7dHlwZTpjSH0se3R5cGU6YUZ9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbc01dfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbcEZdfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGZGLFt7dHlwZTpVbSxhcmdzOlt7cHJvdmlkZWRJbjoicm9vdCJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTptQ30se3R5cGU6Y0h9LHt0eXBlOmFGfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W3NNXX1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W3BGXX1dfV19KSxudWxsKTtjbGFzcyB1Rntjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuX2VsZW1lbnRSZWY9dCx0aGlzLl9mb2N1c01vbml0b3I9ZSx0aGlzLmNka0ZvY3VzQ2hhbmdlPW5ldyBTeX1uZ0FmdGVyVmlld0luaXQoKXtjb25zdCB0PXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudDt0aGlzLl9tb25pdG9yU3Vic2NyaXB0aW9uPXRoaXMuX2ZvY3VzTW9uaXRvci5tb25pdG9yKHQsMT09PXQubm9kZVR5cGUmJnQuaGFzQXR0cmlidXRlKCJjZGtNb25pdG9yU3VidHJlZUZvY3VzIikpLnN1YnNjcmliZSgodD0+dGhpcy5jZGtGb2N1c0NoYW5nZS5lbWl0KHQpKSl9bmdPbkRlc3Ryb3koKXt0aGlzLl9mb2N1c01vbml0b3Iuc3RvcE1vbml0b3JpbmcodGhpcy5fZWxlbWVudFJlZiksdGhpcy5fbW9uaXRvclN1YnNjcmlwdGlvbiYmdGhpcy5fbW9uaXRvclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpfX11Ri7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8dUYpKGdmKEtoKSxnZihmRikpfSx1Ri7JtWRpcj1obyh7dHlwZTp1RixzZWxlY3RvcnM6W1siIiwiY2RrTW9uaXRvckVsZW1lbnRGb2N1cyIsIiJdLFsiIiwiY2RrTW9uaXRvclN1YnRyZWVGb2N1cyIsIiJdXSxvdXRwdXRzOntjZGtGb2N1c0NoYW5nZToiY2RrRm9jdXNDaGFuZ2UifX0pLHVGLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6S2h9LHt0eXBlOmZGfV0sdUYucHJvcERlY29yYXRvcnM9e2Nka0ZvY3VzQ2hhbmdlOlt7dHlwZTpFX31dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHVGLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6IltjZGtNb25pdG9yRWxlbWVudEZvY3VzXSwgW2Nka01vbml0b3JTdWJ0cmVlRm9jdXNdIn1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOktofSx7dHlwZTpmRn1dfSkse2Nka0ZvY3VzQ2hhbmdlOlt7dHlwZTpFX31dfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCBnRj0iY2RrLWhpZ2gtY29udHJhc3QtYmxhY2stb24td2hpdGUiLGhGPSJjZGstaGlnaC1jb250cmFzdC13aGl0ZS1vbi1ibGFjayIsYkY9ImNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSI7Y2xhc3MgeUZ7Y29uc3RydWN0b3IodCxlKXt0aGlzLl9wbGF0Zm9ybT10LHRoaXMuX2RvY3VtZW50PWV9Z2V0SGlnaENvbnRyYXN0TW9kZSgpe2lmKCF0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXIpcmV0dXJuIDA7Y29uc3QgdD10aGlzLl9kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTt0LnN0eWxlLmJhY2tncm91bmRDb2xvcj0icmdiKDEsMiwzKSIsdC5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiLHRoaXMuX2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodCk7Y29uc3QgZT10aGlzLl9kb2N1bWVudC5kZWZhdWx0Vmlld3x8d2luZG93LG49ZSYmZS5nZXRDb21wdXRlZFN0eWxlP2UuZ2V0Q29tcHV0ZWRTdHlsZSh0KTpudWxsLG89KG4mJm4uYmFja2dyb3VuZENvbG9yfHwiIikucmVwbGFjZSgvIC9nLCIiKTtzd2l0Y2godGhpcy5fZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh0KSxvKXtjYXNlInJnYigwLDAsMCkiOnJldHVybiAyO2Nhc2UicmdiKDI1NSwyNTUsMjU1KSI6cmV0dXJuIDF9cmV0dXJuIDB9X2FwcGx5Qm9keUhpZ2hDb250cmFzdE1vZGVDc3NDbGFzc2VzKCl7aWYoIXRoaXMuX2hhc0NoZWNrZWRIaWdoQ29udHJhc3RNb2RlJiZ0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXImJnRoaXMuX2RvY3VtZW50LmJvZHkpe2NvbnN0IHQ9dGhpcy5fZG9jdW1lbnQuYm9keS5jbGFzc0xpc3Q7dC5yZW1vdmUoYkYpLHQucmVtb3ZlKGdGKSx0LnJlbW92ZShoRiksdGhpcy5faGFzQ2hlY2tlZEhpZ2hDb250cmFzdE1vZGU9ITA7Y29uc3QgZT10aGlzLmdldEhpZ2hDb250cmFzdE1vZGUoKTsxPT09ZT8odC5hZGQoYkYpLHQuYWRkKGdGKSk6Mj09PWUmJih0LmFkZChiRiksdC5hZGQoaEYpKX19fXlGLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx5RikoVHIoY0gpLFRyKHNNKSl9LHlGLsm1cHJvdj1Tbih7ZmFjdG9yeTpmdW5jdGlvbiB0KCl7cmV0dXJuIG5ldyB5RihUcihjSCksVHIoc00pKX0sdG9rZW46eUYscHJvdmlkZWRJbjoicm9vdCJ9KSx5Ri5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOmNIfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHlGLFt7dHlwZTpVbSxhcmdzOlt7cHJvdmlkZWRJbjoicm9vdCJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpjSH0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3NNXX1dfV19KSxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIF9Ge2NvbnN0cnVjdG9yKHQpe3QuX2FwcGx5Qm9keUhpZ2hDb250cmFzdE1vZGVDc3NDbGFzc2VzKCl9fV9GLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxfRikoVHIoeUYpKX0sX0YuybVtb2Q9Zm8oe3R5cGU6X0Z9KSxfRi7JtWluaj1Ebih7aW1wb3J0czpbW2RILHdIXV19KSxfRi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnlGfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihfRixbe3R5cGU6TF8sYXJnczpbe2ltcG9ydHM6W2RILHdIXSxkZWNsYXJhdGlvbnM6W2RGLEdILHVGXSxleHBvcnRzOltkRixHSCx1Rl19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTp5Rn1dfSksbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhfRix7ZGVjbGFyYXRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuW2RGLEdILHVGXX0saW1wb3J0czpmdW5jdGlvbigpe3JldHVybltkSCx3SF19LGV4cG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bZEYsR0gsdUZdfX0pO2NvbnN0IENGPW5ldyBlcigiY2RrLWRpci1kb2MiLHtwcm92aWRlZEluOiJyb290IixmYWN0b3J5OmZ1bmN0aW9uIE1GKCl7cmV0dXJuIHpyKHNNKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovfSk7Y2xhc3MgdkZ7Y29uc3RydWN0b3IodCl7aWYodGhpcy52YWx1ZT0ibHRyIix0aGlzLmNoYW5nZT1uZXcgU3ksdCl7Y29uc3QgZT10LmRvY3VtZW50RWxlbWVudD90LmRvY3VtZW50RWxlbWVudC5kaXI6bnVsbCxuPSh0LmJvZHk/dC5ib2R5LmRpcjpudWxsKXx8ZTt0aGlzLnZhbHVlPSJsdHIiPT09bnx8InJ0bCI9PT1uP246Imx0ciJ9fW5nT25EZXN0cm95KCl7dGhpcy5jaGFuZ2UuY29tcGxldGUoKX19dkYuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHZGKShUcihDRiw4KSl9LHZGLsm1cHJvdj1Tbih7ZmFjdG9yeTpmdW5jdGlvbiB0KCl7cmV0dXJuIG5ldyB2RihUcihDRiw4KSl9LHRva2VuOnZGLHByb3ZpZGVkSW46InJvb3QifSksdkYuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W0NGXX1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih2Rixbe3R5cGU6VW0sYXJnczpbe3Byb3ZpZGVkSW46InJvb3QifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltDRl19XX1dfSksbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyB4Rntjb25zdHJ1Y3Rvcigpe3RoaXMuX2Rpcj0ibHRyIix0aGlzLl9pc0luaXRpYWxpemVkPSExLHRoaXMuY2hhbmdlPW5ldyBTeX1nZXQgZGlyKCl7cmV0dXJuIHRoaXMuX2Rpcn1zZXQgZGlyKHQpe2NvbnN0IGU9dGhpcy5fZGlyLG49dD90LnRvTG93ZXJDYXNlKCk6dDt0aGlzLl9yYXdEaXI9dCx0aGlzLl9kaXI9Imx0ciI9PT1ufHwicnRsIj09PW4/bjoibHRyIixlIT09dGhpcy5fZGlyJiZ0aGlzLl9pc0luaXRpYWxpemVkJiZ0aGlzLmNoYW5nZS5lbWl0KHRoaXMuX2Rpcil9Z2V0IHZhbHVlKCl7cmV0dXJuIHRoaXMuZGlyfW5nQWZ0ZXJDb250ZW50SW5pdCgpe3RoaXMuX2lzSW5pdGlhbGl6ZWQ9ITB9bmdPbkRlc3Ryb3koKXt0aGlzLmNoYW5nZS5jb21wbGV0ZSgpfX14Ri7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8eEYpfSx4Ri7JtWRpcj1obyh7dHlwZTp4RixzZWxlY3RvcnM6W1siIiwiZGlyIiwiIl1dLGhvc3RWYXJzOjEsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsyJmUmJnltKCJkaXIiLG4uX3Jhd0Rpcil9LGlucHV0czp7ZGlyOiJkaXIifSxvdXRwdXRzOntjaGFuZ2U6ImRpckNoYW5nZSJ9LGV4cG9ydEFzOlsiZGlyIl0sZmVhdHVyZXM6W2poKFt7cHJvdmlkZTp2Rix1c2VFeGlzdGluZzp4Rn1dKV19KSx4Ri5wcm9wRGVjb3JhdG9ycz17Y2hhbmdlOlt7dHlwZTpFXyxhcmdzOlsiZGlyQ2hhbmdlIl19XSxkaXI6W3t0eXBlOlJffV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoeEYsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW2Rpcl0iLHByb3ZpZGVyczpbe3Byb3ZpZGU6dkYsdXNlRXhpc3Rpbmc6eEZ9XSxob3N0OnsiW2F0dHIuZGlyXSI6Il9yYXdEaXIifSxleHBvcnRBczoiZGlyIn1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW119KSx7Y2hhbmdlOlt7dHlwZTpFXyxhcmdzOlsiZGlyQ2hhbmdlIl19XSxkaXI6W3t0eXBlOlJffV19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIE9Ge31PRi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8T0YpfSxPRi7JtW1vZD1mbyh7dHlwZTpPRn0pLE9GLsm1aW5qPURuKHt9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKE9GLFt7dHlwZTpMXyxhcmdzOlt7ZXhwb3J0czpbeEZdLGRlY2xhcmF0aW9uczpbeEZdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8oT0Yse2RlY2xhcmF0aW9uczpbeEZdLGV4cG9ydHM6W3hGXX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgUEY9bmV3IG9iKCIxMi4yLjEiKSx3Rj1bIioiLFtbIm1hdC1vcHRpb24iXSxbIm5nLWNvbnRhaW5lciJdXV07ZnVuY3Rpb24ga0YodCxlKXtpZigxJnQmJnZmKDAsIm1hdC1wc2V1ZG8tY2hlY2tib3giLDQpLDImdCl7Y29uc3QgdD16ZigpO2JmKCJzdGF0ZSIsdC5zZWxlY3RlZD8iY2hlY2tlZCI6InVuY2hlY2tlZCIpKCJkaXNhYmxlZCIsdC5kaXNhYmxlZCl9fWZ1bmN0aW9uIFNGKHQsZSl7aWYoMSZ0JiYoQ2YoMCwic3BhbiIsNSksUHUoMSksTWYoKSksMiZ0KXtjb25zdCB0PXpmKCk7RGMoMSksa3UoIigiLHQuZ3JvdXAubGFiZWwsIikiKX19bmV3IG9iKCIxMi4yLjMiKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIERGe31ERi5TVEFOREFSRF9DVVJWRT0iY3ViaWMtYmV6aWVyKDAuNCwwLjAsMC4yLDEpIixERi5ERUNFTEVSQVRJT05fQ1VSVkU9ImN1YmljLWJlemllcigwLjAsMC4wLDAuMiwxKSIsREYuQUNDRUxFUkFUSU9OX0NVUlZFPSJjdWJpYy1iZXppZXIoMC40LDAuMCwxLDEpIixERi5TSEFSUF9DVVJWRT0iY3ViaWMtYmV6aWVyKDAuNCwwLjAsMC42LDEpIjtjbGFzcyBSRnt9UkYuQ09NUExFWD0iMzc1bXMiLFJGLkVOVEVSSU5HPSIyMjVtcyIsUkYuRVhJVElORz0iMTk1bXMiOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgRUY9bmV3IG9iKCIxMi4yLjMiKTtjb25zdCBBRj1uZXcgZXIoIm1hdC1zYW5pdHktY2hlY2tzIix7cHJvdmlkZWRJbjoicm9vdCIsZmFjdG9yeTpmdW5jdGlvbiBURigpe3JldHVybiEwfX0pO2NsYXNzIE5Ge2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLl9oYXNEb25lR2xvYmFsQ2hlY2tzPSExLHRoaXMuX2RvY3VtZW50PW4sdC5fYXBwbHlCb2R5SGlnaENvbnRyYXN0TW9kZUNzc0NsYXNzZXMoKSx0aGlzLl9zYW5pdHlDaGVja3M9ZSx0aGlzLl9oYXNEb25lR2xvYmFsQ2hlY2tzfHwodGhpcy5fY2hlY2tEb2N0eXBlSXNEZWZpbmVkKCksdGhpcy5fY2hlY2tUaGVtZUlzUHJlc2VudCgpLHRoaXMuX2NoZWNrQ2RrVmVyc2lvbk1hdGNoKCksdGhpcy5faGFzRG9uZUdsb2JhbENoZWNrcz0hMCl9X2dldFdpbmRvdygpe2NvbnN0IHQ9dGhpcy5fZG9jdW1lbnQuZGVmYXVsdFZpZXd8fHdpbmRvdztyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIHQmJnQ/dDpudWxsfV9jaGVja0lzRW5hYmxlZCh0KXtyZXR1cm4hKCFQQygpfHx0aGlzLl9pc1Rlc3RFbnYoKSkmJigiYm9vbGVhbiI9PXR5cGVvZiB0aGlzLl9zYW5pdHlDaGVja3M/dGhpcy5fc2FuaXR5Q2hlY2tzOiEhdGhpcy5fc2FuaXR5Q2hlY2tzW3RdKX1faXNUZXN0RW52KCl7Y29uc3QgdD10aGlzLl9nZXRXaW5kb3coKTtyZXR1cm4gdCYmKHQuX19rYXJtYV9ffHx0Lmphc21pbmUpfV9jaGVja0RvY3R5cGVJc0RlZmluZWQoKXt0aGlzLl9jaGVja0lzRW5hYmxlZCgiZG9jdHlwZSIpJiYhdGhpcy5fZG9jdW1lbnQuZG9jdHlwZSYmY29uc29sZS53YXJuKCJDdXJyZW50IGRvY3VtZW50IGRvZXMgbm90IGhhdmUgYSBkb2N0eXBlLiBUaGlzIG1heSBjYXVzZSBzb21lIEFuZ3VsYXIgTWF0ZXJpYWwgY29tcG9uZW50cyBub3QgdG8gYmVoYXZlIGFzIGV4cGVjdGVkLiIpfV9jaGVja1RoZW1lSXNQcmVzZW50KCl7aWYoIXRoaXMuX2NoZWNrSXNFbmFibGVkKCJ0aGVtZSIpfHwhdGhpcy5fZG9jdW1lbnQuYm9keXx8ImZ1bmN0aW9uIiE9dHlwZW9mIGdldENvbXB1dGVkU3R5bGUpcmV0dXJuO2NvbnN0IHQ9dGhpcy5fZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7dC5jbGFzc0xpc3QuYWRkKCJtYXQtdGhlbWUtbG9hZGVkLW1hcmtlciIpLHRoaXMuX2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodCk7Y29uc3QgZT1nZXRDb21wdXRlZFN0eWxlKHQpO2UmJiJub25lIiE9PWUuZGlzcGxheSYmY29uc29sZS53YXJuKCJDb3VsZCBub3QgZmluZCBBbmd1bGFyIE1hdGVyaWFsIGNvcmUgdGhlbWUuIE1vc3QgTWF0ZXJpYWwgY29tcG9uZW50cyBtYXkgbm90IHdvcmsgYXMgZXhwZWN0ZWQuIEZvciBtb3JlIGluZm8gcmVmZXIgdG8gdGhlIHRoZW1pbmcgZ3VpZGU6IGh0dHBzOi8vbWF0ZXJpYWwuYW5ndWxhci5pby9ndWlkZS90aGVtaW5nIiksdGhpcy5fZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh0KX1fY2hlY2tDZGtWZXJzaW9uTWF0Y2goKXt0aGlzLl9jaGVja0lzRW5hYmxlZCgidmVyc2lvbiIpJiZFRi5mdWxsIT09UEYuZnVsbCYmY29uc29sZS53YXJuKCJUaGUgQW5ndWxhciBNYXRlcmlhbCB2ZXJzaW9uICgiK0VGLmZ1bGwrIikgZG9lcyBub3QgbWF0Y2ggdGhlIEFuZ3VsYXIgQ0RLIHZlcnNpb24gKCIrUEYuZnVsbCsiKS5cblBsZWFzZSBlbnN1cmUgdGhlIHZlcnNpb25zIG9mIHRoZXNlIHR3byBwYWNrYWdlcyBleGFjdGx5IG1hdGNoLiIpfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmZ1bmN0aW9uIHpGKHQpe3JldHVybiBjbGFzcyBleHRlbmRzIHR7Y29uc3RydWN0b3IoLi4udCl7c3VwZXIoLi4udCksdGhpcy5fZGlzYWJsZWQ9ITF9Z2V0IGRpc2FibGVkKCl7cmV0dXJuIHRoaXMuX2Rpc2FibGVkfXNldCBkaXNhYmxlZCh0KXt0aGlzLl9kaXNhYmxlZD1lSCh0KX19fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBJRih0LGUpe3JldHVybiBjbGFzcyBleHRlbmRzIHR7Y29uc3RydWN0b3IoLi4udCl7c3VwZXIoLi4udCksdGhpcy5kZWZhdWx0Q29sb3I9ZSx0aGlzLmNvbG9yPWV9Z2V0IGNvbG9yKCl7cmV0dXJuIHRoaXMuX2NvbG9yfXNldCBjb2xvcih0KXtjb25zdCBlPXR8fHRoaXMuZGVmYXVsdENvbG9yO2UhPT10aGlzLl9jb2xvciYmKHRoaXMuX2NvbG9yJiZ0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShgbWF0LSR7dGhpcy5fY29sb3J9YCksZSYmdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoYG1hdC0ke2V9YCksdGhpcy5fY29sb3I9ZSl9fX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gSEYodCl7cmV0dXJuIGNsYXNzIGV4dGVuZHMgdHtjb25zdHJ1Y3RvciguLi50KXtzdXBlciguLi50KSx0aGlzLl9kaXNhYmxlUmlwcGxlPSExfWdldCBkaXNhYmxlUmlwcGxlKCl7cmV0dXJuIHRoaXMuX2Rpc2FibGVSaXBwbGV9c2V0IGRpc2FibGVSaXBwbGUodCl7dGhpcy5fZGlzYWJsZVJpcHBsZT1lSCh0KX19fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBGRih0LGU9MCl7cmV0dXJuIGNsYXNzIGV4dGVuZHMgdHtjb25zdHJ1Y3RvciguLi50KXtzdXBlciguLi50KSx0aGlzLl90YWJJbmRleD1lLHRoaXMuZGVmYXVsdFRhYkluZGV4PWV9Z2V0IHRhYkluZGV4KCl7cmV0dXJuIHRoaXMuZGlzYWJsZWQ/LTE6dGhpcy5fdGFiSW5kZXh9c2V0IHRhYkluZGV4KHQpe3RoaXMuX3RhYkluZGV4PW51bGwhPXQ/bkgodCk6dGhpcy5kZWZhdWx0VGFiSW5kZXh9fX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gTEYodCl7cmV0dXJuIGNsYXNzIGV4dGVuZHMgdHtjb25zdHJ1Y3RvciguLi50KXtzdXBlciguLi50KSx0aGlzLnN0YXRlQ2hhbmdlcz1uZXcgQix0aGlzLmVycm9yU3RhdGU9ITF9dXBkYXRlRXJyb3JTdGF0ZSgpe2NvbnN0IHQ9dGhpcy5lcnJvclN0YXRlLGU9KHRoaXMuZXJyb3JTdGF0ZU1hdGNoZXJ8fHRoaXMuX2RlZmF1bHRFcnJvclN0YXRlTWF0Y2hlcikuaXNFcnJvclN0YXRlKHRoaXMubmdDb250cm9sP3RoaXMubmdDb250cm9sLmNvbnRyb2w6bnVsbCx0aGlzLl9wYXJlbnRGb3JtR3JvdXB8fHRoaXMuX3BhcmVudEZvcm0pO2UhPT10JiYodGhpcy5lcnJvclN0YXRlPWUsdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpKX19fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBCRih0KXtyZXR1cm4gY2xhc3MgZXh0ZW5kcyB0e2NvbnN0cnVjdG9yKC4uLnQpe3N1cGVyKC4uLnQpLHRoaXMuX2lzSW5pdGlhbGl6ZWQ9ITEsdGhpcy5fcGVuZGluZ1N1YnNjcmliZXJzPVtdLHRoaXMuaW5pdGlhbGl6ZWQ9bmV3IFQoKHQ9Pnt0aGlzLl9pc0luaXRpYWxpemVkP3RoaXMuX25vdGlmeVN1YnNjcmliZXIodCk6dGhpcy5fcGVuZGluZ1N1YnNjcmliZXJzLnB1c2godCl9KSl9X21hcmtJbml0aWFsaXplZCgpe2lmKHRoaXMuX2lzSW5pdGlhbGl6ZWQmJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSl0aHJvdyBFcnJvcigiVGhpcyBkaXJlY3RpdmUgaGFzIGFscmVhZHkgYmVlbiBtYXJrZWQgYXMgaW5pdGlhbGl6ZWQgYW5kIHNob3VsZCBub3QgYmUgY2FsbGVkIHR3aWNlLiIpO3RoaXMuX2lzSW5pdGlhbGl6ZWQ9ITAsdGhpcy5fcGVuZGluZ1N1YnNjcmliZXJzLmZvckVhY2godGhpcy5fbm90aWZ5U3Vic2NyaWJlciksdGhpcy5fcGVuZGluZ1N1YnNjcmliZXJzPW51bGx9X25vdGlmeVN1YnNjcmliZXIodCl7dC5uZXh0KCksdC5jb21wbGV0ZSgpfX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9ORi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8TkYpKFRyKHlGKSxUcihBRiw4KSxUcihzTSkpfSxORi7JtW1vZD1mbyh7dHlwZTpORn0pLE5GLsm1aW5qPURuKHtpbXBvcnRzOltbT0ZdLE9GXX0pLE5GLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6eUZ9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbQUZdfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoTkYsW3t0eXBlOkxfLGFyZ3M6W3tpbXBvcnRzOltPRl0sZXhwb3J0czpbT0ZdfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6eUZ9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbQUZdfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX1dfSksbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhORix7aW1wb3J0czpmdW5jdGlvbigpe3JldHVybltPRl19LGV4cG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bT0ZdfX0pO2NvbnN0IFZGPW5ldyBlcigiTUFUX0RBVEVfTE9DQUxFIix7cHJvdmlkZWRJbjoicm9vdCIsZmFjdG9yeTpmdW5jdGlvbiBqRigpe3JldHVybiB6cihRXyl9fSk7Y2xhc3MgVUZ7Y29uc3RydWN0b3IoKXt0aGlzLl9sb2NhbGVDaGFuZ2VzPW5ldyBCLHRoaXMubG9jYWxlQ2hhbmdlcz10aGlzLl9sb2NhbGVDaGFuZ2VzfWdldFZhbGlkRGF0ZU9yTnVsbCh0KXtyZXR1cm4gdGhpcy5pc0RhdGVJbnN0YW5jZSh0KSYmdGhpcy5pc1ZhbGlkKHQpP3Q6bnVsbH1kZXNlcmlhbGl6ZSh0KXtyZXR1cm4gbnVsbD09dHx8dGhpcy5pc0RhdGVJbnN0YW5jZSh0KSYmdGhpcy5pc1ZhbGlkKHQpP3Q6dGhpcy5pbnZhbGlkKCl9c2V0TG9jYWxlKHQpe3RoaXMubG9jYWxlPXQsdGhpcy5fbG9jYWxlQ2hhbmdlcy5uZXh0KCl9Y29tcGFyZURhdGUodCxlKXtyZXR1cm4gdGhpcy5nZXRZZWFyKHQpLXRoaXMuZ2V0WWVhcihlKXx8dGhpcy5nZXRNb250aCh0KS10aGlzLmdldE1vbnRoKGUpfHx0aGlzLmdldERhdGUodCktdGhpcy5nZXREYXRlKGUpfXNhbWVEYXRlKHQsZSl7aWYodCYmZSl7bGV0IG49dGhpcy5pc1ZhbGlkKHQpLG89dGhpcy5pc1ZhbGlkKGUpO3JldHVybiBuJiZvPyF0aGlzLmNvbXBhcmVEYXRlKHQsZSk6bj09b31yZXR1cm4gdD09ZX1jbGFtcERhdGUodCxlLG4pe3JldHVybiBlJiZ0aGlzLmNvbXBhcmVEYXRlKHQsZSk8MD9lOm4mJnRoaXMuY29tcGFyZURhdGUodCxuKT4wP246dH19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NvbnN0IFdGPW5ldyBlcigibWF0LWRhdGUtZm9ybWF0cyIpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9sZXQgR0Y7dHJ5e0dGPSJ1bmRlZmluZWQiIT10eXBlb2YgSW50bH1jYXRjaChtQ3Qpe0dGPSExfWNvbnN0IFlGPXtsb25nOlsiSmFudWFyeSIsIkZlYnJ1YXJ5IiwiTWFyY2giLCJBcHJpbCIsIk1heSIsIkp1bmUiLCJKdWx5IiwiQXVndXN0IiwiU2VwdGVtYmVyIiwiT2N0b2JlciIsIk5vdmVtYmVyIiwiRGVjZW1iZXIiXSxzaG9ydDpbIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1heSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9jdCIsIk5vdiIsIkRlYyJdLG5hcnJvdzpbIkoiLCJGIiwiTSIsIkEiLCJNIiwiSiIsIkoiLCJBIiwiUyIsIk8iLCJOIiwiRCJdfSxxRj1LRigzMSwodD0+U3RyaW5nKHQrMSkpKSxaRj17bG9uZzpbIlN1bmRheSIsIk1vbmRheSIsIlR1ZXNkYXkiLCJXZWRuZXNkYXkiLCJUaHVyc2RheSIsIkZyaWRheSIsIlNhdHVyZGF5Il0sc2hvcnQ6WyJTdW4iLCJNb24iLCJUdWUiLCJXZWQiLCJUaHUiLCJGcmkiLCJTYXQiXSxuYXJyb3c6WyJTIiwiTSIsIlQiLCJXIiwiVCIsIkYiLCJTIl19LFhGPS9eXGR7NH0tXGR7Mn0tXGR7Mn0oPzpUXGR7Mn06XGR7Mn06XGR7Mn0oPzpcLlxkKyk/KD86WnwoPzooPzpcK3wtKVxkezJ9OlxkezJ9KSk/KT8kLztmdW5jdGlvbiBLRih0LGUpe2NvbnN0IG49QXJyYXkodCk7Zm9yKGxldCBvPTA7bzx0O28rKyluW29dPWUobyk7cmV0dXJuIG59Y2xhc3MgSkYgZXh0ZW5kcyBVRntjb25zdHJ1Y3Rvcih0LGUpe3N1cGVyKCksdGhpcy51c2VVdGNGb3JEaXNwbGF5PSEwLHN1cGVyLnNldExvY2FsZSh0KSx0aGlzLnVzZVV0Y0ZvckRpc3BsYXk9IWUuVFJJREVOVCx0aGlzLl9jbGFtcERhdGU9ZS5UUklERU5UfHxlLkVER0V9Z2V0WWVhcih0KXtyZXR1cm4gdC5nZXRGdWxsWWVhcigpfWdldE1vbnRoKHQpe3JldHVybiB0LmdldE1vbnRoKCl9Z2V0RGF0ZSh0KXtyZXR1cm4gdC5nZXREYXRlKCl9Z2V0RGF5T2ZXZWVrKHQpe3JldHVybiB0LmdldERheSgpfWdldE1vbnRoTmFtZXModCl7aWYoR0Ype2NvbnN0IGU9bmV3IEludGwuRGF0ZVRpbWVGb3JtYXQodGhpcy5sb2NhbGUse21vbnRoOnQsdGltZVpvbmU6InV0YyJ9KTtyZXR1cm4gS0YoMTIsKHQ9PnRoaXMuX3N0cmlwRGlyZWN0aW9uYWxpdHlDaGFyYWN0ZXJzKHRoaXMuX2Zvcm1hdChlLG5ldyBEYXRlKDIwMTcsdCwxKSkpKSl9cmV0dXJuIFlGW3RdfWdldERhdGVOYW1lcygpe2lmKEdGKXtjb25zdCB0PW5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KHRoaXMubG9jYWxlLHtkYXk6Im51bWVyaWMiLHRpbWVab25lOiJ1dGMifSk7cmV0dXJuIEtGKDMxLChlPT50aGlzLl9zdHJpcERpcmVjdGlvbmFsaXR5Q2hhcmFjdGVycyh0aGlzLl9mb3JtYXQodCxuZXcgRGF0ZSgyMDE3LDAsZSsxKSkpKSl9cmV0dXJuIHFGfWdldERheU9mV2Vla05hbWVzKHQpe2lmKEdGKXtjb25zdCBlPW5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KHRoaXMubG9jYWxlLHt3ZWVrZGF5OnQsdGltZVpvbmU6InV0YyJ9KTtyZXR1cm4gS0YoNywodD0+dGhpcy5fc3RyaXBEaXJlY3Rpb25hbGl0eUNoYXJhY3RlcnModGhpcy5fZm9ybWF0KGUsbmV3IERhdGUoMjAxNywwLHQrMSkpKSkpfXJldHVybiBaRlt0XX1nZXRZZWFyTmFtZSh0KXtpZihHRil7Y29uc3QgZT1uZXcgSW50bC5EYXRlVGltZUZvcm1hdCh0aGlzLmxvY2FsZSx7eWVhcjoibnVtZXJpYyIsdGltZVpvbmU6InV0YyJ9KTtyZXR1cm4gdGhpcy5fc3RyaXBEaXJlY3Rpb25hbGl0eUNoYXJhY3RlcnModGhpcy5fZm9ybWF0KGUsdCkpfXJldHVybiBTdHJpbmcodGhpcy5nZXRZZWFyKHQpKX1nZXRGaXJzdERheU9mV2Vlaygpe3JldHVybiAwfWdldE51bURheXNJbk1vbnRoKHQpe3JldHVybiB0aGlzLmdldERhdGUodGhpcy5fY3JlYXRlRGF0ZVdpdGhPdmVyZmxvdyh0aGlzLmdldFllYXIodCksdGhpcy5nZXRNb250aCh0KSsxLDApKX1jbG9uZSh0KXtyZXR1cm4gbmV3IERhdGUodC5nZXRUaW1lKCkpfWNyZWF0ZURhdGUodCxlLG4pe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpe2lmKGU8MHx8ZT4xMSl0aHJvdyBFcnJvcihgSW52YWxpZCBtb250aCBpbmRleCAiJHtlfSIuIE1vbnRoIGluZGV4IGhhcyB0byBiZSBiZXR3ZWVuIDAgYW5kIDExLmApO2lmKG48MSl0aHJvdyBFcnJvcihgSW52YWxpZCBkYXRlICIke259Ii4gRGF0ZSBoYXMgdG8gYmUgZ3JlYXRlciB0aGFuIDAuYCl9bGV0IG89dGhpcy5fY3JlYXRlRGF0ZVdpdGhPdmVyZmxvdyh0LGUsbik7aWYoby5nZXRNb250aCgpIT1lJiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkpdGhyb3cgRXJyb3IoYEludmFsaWQgZGF0ZSAiJHtufSIgZm9yIG1vbnRoIHdpdGggaW5kZXggIiR7ZX0iLmApO3JldHVybiBvfXRvZGF5KCl7cmV0dXJuIG5ldyBEYXRlfXBhcnNlKHQpe3JldHVybiJudW1iZXIiPT10eXBlb2YgdD9uZXcgRGF0ZSh0KTp0P25ldyBEYXRlKERhdGUucGFyc2UodCkpOm51bGx9Zm9ybWF0KHQsZSl7aWYoIXRoaXMuaXNWYWxpZCh0KSl0aHJvdyBFcnJvcigiTmF0aXZlRGF0ZUFkYXB0ZXI6IENhbm5vdCBmb3JtYXQgaW52YWxpZCBkYXRlLiIpO2lmKEdGKXt0aGlzLl9jbGFtcERhdGUmJih0LmdldEZ1bGxZZWFyKCk8MXx8dC5nZXRGdWxsWWVhcigpPjk5OTkpJiYodD10aGlzLmNsb25lKHQpKS5zZXRGdWxsWWVhcihNYXRoLm1heCgxLE1hdGgubWluKDk5OTksdC5nZXRGdWxsWWVhcigpKSkpLGU9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGUpLHt0aW1lWm9uZToidXRjIn0pO2NvbnN0IG49bmV3IEludGwuRGF0ZVRpbWVGb3JtYXQodGhpcy5sb2NhbGUsZSk7cmV0dXJuIHRoaXMuX3N0cmlwRGlyZWN0aW9uYWxpdHlDaGFyYWN0ZXJzKHRoaXMuX2Zvcm1hdChuLHQpKX1yZXR1cm4gdGhpcy5fc3RyaXBEaXJlY3Rpb25hbGl0eUNoYXJhY3RlcnModC50b0RhdGVTdHJpbmcoKSl9YWRkQ2FsZW5kYXJZZWFycyh0LGUpe3JldHVybiB0aGlzLmFkZENhbGVuZGFyTW9udGhzKHQsMTIqZSl9YWRkQ2FsZW5kYXJNb250aHModCxlKXtsZXQgbj10aGlzLl9jcmVhdGVEYXRlV2l0aE92ZXJmbG93KHRoaXMuZ2V0WWVhcih0KSx0aGlzLmdldE1vbnRoKHQpK2UsdGhpcy5nZXREYXRlKHQpKTtyZXR1cm4gdGhpcy5nZXRNb250aChuKSE9KCh0aGlzLmdldE1vbnRoKHQpK2UpJTEyKzEyKSUxMiYmKG49dGhpcy5fY3JlYXRlRGF0ZVdpdGhPdmVyZmxvdyh0aGlzLmdldFllYXIobiksdGhpcy5nZXRNb250aChuKSwwKSksbn1hZGRDYWxlbmRhckRheXModCxlKXtyZXR1cm4gdGhpcy5fY3JlYXRlRGF0ZVdpdGhPdmVyZmxvdyh0aGlzLmdldFllYXIodCksdGhpcy5nZXRNb250aCh0KSx0aGlzLmdldERhdGUodCkrZSl9dG9Jc284NjAxKHQpe3JldHVyblt0LmdldFVUQ0Z1bGxZZWFyKCksdGhpcy5fMmRpZ2l0KHQuZ2V0VVRDTW9udGgoKSsxKSx0aGlzLl8yZGlnaXQodC5nZXRVVENEYXRlKCkpXS5qb2luKCItIil9ZGVzZXJpYWxpemUodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXtpZighdClyZXR1cm4gbnVsbDtpZihYRi50ZXN0KHQpKXtsZXQgZT1uZXcgRGF0ZSh0KTtpZih0aGlzLmlzVmFsaWQoZSkpcmV0dXJuIGV9fXJldHVybiBzdXBlci5kZXNlcmlhbGl6ZSh0KX1pc0RhdGVJbnN0YW5jZSh0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIERhdGV9aXNWYWxpZCh0KXtyZXR1cm4haXNOYU4odC5nZXRUaW1lKCkpfWludmFsaWQoKXtyZXR1cm4gbmV3IERhdGUoTmFOKX1fY3JlYXRlRGF0ZVdpdGhPdmVyZmxvdyh0LGUsbil7Y29uc3Qgbz1uZXcgRGF0ZTtyZXR1cm4gby5zZXRGdWxsWWVhcih0LGUsbiksby5zZXRIb3VycygwLDAsMCwwKSxvfV8yZGlnaXQodCl7cmV0dXJuKCIwMCIrdCkuc2xpY2UoLTIpfV9zdHJpcERpcmVjdGlvbmFsaXR5Q2hhcmFjdGVycyh0KXtyZXR1cm4gdC5yZXBsYWNlKC9bXHUyMDBlXHUyMDBmXS9nLCIiKX1fZm9ybWF0KHQsZSl7Y29uc3Qgbj1uZXcgRGF0ZTtyZXR1cm4gbi5zZXRVVENGdWxsWWVhcihlLmdldEZ1bGxZZWFyKCksZS5nZXRNb250aCgpLGUuZ2V0RGF0ZSgpKSxuLnNldFVUQ0hvdXJzKGUuZ2V0SG91cnMoKSxlLmdldE1pbnV0ZXMoKSxlLmdldFNlY29uZHMoKSxlLmdldE1pbGxpc2Vjb25kcygpKSx0LmZvcm1hdChuKX19SkYuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEpGKShUcihWRiw4KSxUcihjSCkpfSxKRi7JtXByb3Y9U24oe3Rva2VuOkpGLGZhY3Rvcnk6SkYuybVmYWN9KSxKRi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbVkZdfV19LHt0eXBlOmNIfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihKRixbe3R5cGU6VW19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltWRl19XX0se3R5cGU6Y0h9XX0pLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgUUZ7fVFGLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxRRil9LFFGLsm1bW9kPWZvKHt0eXBlOlFGfSksUUYuybVpbmo9RG4oe3Byb3ZpZGVyczpbe3Byb3ZpZGU6VUYsdXNlQ2xhc3M6SkZ9XSxpbXBvcnRzOltbZEhdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoUUYsW3t0eXBlOkxfLGFyZ3M6W3tpbXBvcnRzOltkSF0scHJvdmlkZXJzOlt7cHJvdmlkZTpVRix1c2VDbGFzczpKRn1dfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8oUUYse2ltcG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bZEhdfX0pO2NvbnN0ICRGPXtwYXJzZTp7ZGF0ZUlucHV0Om51bGx9LGRpc3BsYXk6e2RhdGVJbnB1dDp7eWVhcjoibnVtZXJpYyIsbW9udGg6Im51bWVyaWMiLGRheToibnVtZXJpYyJ9LG1vbnRoWWVhckxhYmVsOnt5ZWFyOiJudW1lcmljIixtb250aDoic2hvcnQifSxkYXRlQTExeUxhYmVsOnt5ZWFyOiJudW1lcmljIixtb250aDoibG9uZyIsZGF5OiJudW1lcmljIn0sbW9udGhZZWFyQTExeUxhYmVsOnt5ZWFyOiJudW1lcmljIixtb250aDoibG9uZyJ9fX07Y2xhc3MgdEx7fXRMLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx0TCl9LHRMLsm1bW9kPWZvKHt0eXBlOnRMfSksdEwuybVpbmo9RG4oe3Byb3ZpZGVyczpbe3Byb3ZpZGU6V0YsdXNlVmFsdWU6JEZ9XSxpbXBvcnRzOltbUUZdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIodEwsW3t0eXBlOkxfLGFyZ3M6W3tpbXBvcnRzOltRRl0scHJvdmlkZXJzOlt7cHJvdmlkZTpXRix1c2VWYWx1ZTokRn1dfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8odEwse2ltcG9ydHM6W1FGXX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgZUx7aXNFcnJvclN0YXRlKHQsZSl7cmV0dXJuISEodCYmdC5pbnZhbGlkJiYodC5kaXJ0eXx8ZSYmZS5zdWJtaXR0ZWQpKX19ZUwuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGVMKX0sZUwuybVwcm92PVNuKHt0b2tlbjplTCxmYWN0b3J5OmVMLsm1ZmFjfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihlTCxbe3R5cGU6VW19XSxudWxsLG51bGwpO2NsYXNzIG5Me2lzRXJyb3JTdGF0ZSh0LGUpe3JldHVybiEhKHQmJnQuaW52YWxpZCYmKHQudG91Y2hlZHx8ZSYmZS5zdWJtaXR0ZWQpKX19bkwuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fG5MKX0sbkwuybVwcm92PVNuKHtmYWN0b3J5OmZ1bmN0aW9uIHQoKXtyZXR1cm4gbmV3IG5MfSx0b2tlbjpuTCxwcm92aWRlZEluOiJyb290In0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIobkwsW3t0eXBlOlVtLGFyZ3M6W3twcm92aWRlZEluOiJyb290In1dfV0sbnVsbCxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIG9Me31vTC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8b0wpfSxvTC7JtWRpcj1obyh7dHlwZTpvTCxzZWxlY3RvcnM6W1siIiwibWF0LWxpbmUiLCIiXSxbIiIsIm1hdExpbmUiLCIiXV0saG9zdEF0dHJzOlsxLCJtYXQtbGluZSJdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihvTCxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJbbWF0LWxpbmVdLCBbbWF0TGluZV0iLGhvc3Q6e2NsYXNzOiJtYXQtbGluZSJ9fV19XSxudWxsLG51bGwpO2NsYXNzIGlMe31pTC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8aUwpfSxpTC7JtW1vZD1mbyh7dHlwZTppTH0pLGlMLsm1aW5qPURuKHtpbXBvcnRzOltbTkZdLE5GXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoaUwsW3t0eXBlOkxfLGFyZ3M6W3tpbXBvcnRzOltORl0sZXhwb3J0czpbb0wsTkZdLGRlY2xhcmF0aW9uczpbb0xdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8oaUwse2RlY2xhcmF0aW9uczpbb0xdLGltcG9ydHM6W05GXSxleHBvcnRzOltvTCxORl19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIGFMe2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLl9yZW5kZXJlcj10LHRoaXMuZWxlbWVudD1lLHRoaXMuY29uZmlnPW4sdGhpcy5zdGF0ZT0zfWZhZGVPdXQoKXt0aGlzLl9yZW5kZXJlci5mYWRlT3V0UmlwcGxlKHRoaXMpfX1jb25zdCByTD17ZW50ZXJEdXJhdGlvbjoyMjUsZXhpdER1cmF0aW9uOjE1MH0sc0w9Ykgoe3Bhc3NpdmU6ITB9KSxsTD1bIm1vdXNlZG93biIsInRvdWNoc3RhcnQiXSxjTD1bIm1vdXNldXAiLCJtb3VzZWxlYXZlIiwidG91Y2hlbmQiLCJ0b3VjaGNhbmNlbCJdO2NsYXNzIGRMe2NvbnN0cnVjdG9yKHQsZSxuLG8pe3RoaXMuX3RhcmdldD10LHRoaXMuX25nWm9uZT1lLHRoaXMuX2lzUG9pbnRlckRvd249ITEsdGhpcy5fYWN0aXZlUmlwcGxlcz1uZXcgU2V0LHRoaXMuX3BvaW50ZXJVcEV2ZW50c1JlZ2lzdGVyZWQ9ITEsby5pc0Jyb3dzZXImJih0aGlzLl9jb250YWluZXJFbGVtZW50PXJIKG4pKX1mYWRlSW5SaXBwbGUodCxlLG49e30pe2NvbnN0IG89dGhpcy5fY29udGFpbmVyUmVjdD10aGlzLl9jb250YWluZXJSZWN0fHx0aGlzLl9jb250YWluZXJFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGk9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHJMKSxuLmFuaW1hdGlvbik7bi5jZW50ZXJlZCYmKHQ9by5sZWZ0K28ud2lkdGgvMixlPW8udG9wK28uaGVpZ2h0LzIpO2NvbnN0IGE9bi5yYWRpdXN8fChmdW5jdGlvbiByKHQsZSxuKXtjb25zdCBvPU1hdGgubWF4KE1hdGguYWJzKHQtbi5sZWZ0KSxNYXRoLmFicyh0LW4ucmlnaHQpKSxpPU1hdGgubWF4KE1hdGguYWJzKGUtbi50b3ApLE1hdGguYWJzKGUtbi5ib3R0b20pKTtyZXR1cm4gTWF0aC5zcXJ0KG8qbytpKmkpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8pKHQsZSxvKSxzPXQtby5sZWZ0LGw9ZS1vLnRvcCxjPWkuZW50ZXJEdXJhdGlvbixkPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2QuY2xhc3NMaXN0LmFkZCgibWF0LXJpcHBsZS1lbGVtZW50IiksZC5zdHlsZS5sZWZ0PXMtYSsicHgiLGQuc3R5bGUudG9wPWwtYSsicHgiLGQuc3R5bGUuaGVpZ2h0PTIqYSsicHgiLGQuc3R5bGUud2lkdGg9MiphKyJweCIsbnVsbCE9bi5jb2xvciYmKGQuc3R5bGUuYmFja2dyb3VuZENvbG9yPW4uY29sb3IpLGQuc3R5bGUudHJhbnNpdGlvbkR1cmF0aW9uPWAke2N9bXNgLHRoaXMuX2NvbnRhaW5lckVsZW1lbnQuYXBwZW5kQ2hpbGQoZCksKGZ1bmN0aW9uIHAodCl7d2luZG93LmdldENvbXB1dGVkU3R5bGUodCkuZ2V0UHJvcGVydHlWYWx1ZSgib3BhY2l0eSIpfSkoZCksZC5zdHlsZS50cmFuc2Zvcm09InNjYWxlKDEpIjtjb25zdCBtPW5ldyBhTCh0aGlzLGQsbik7cmV0dXJuIG0uc3RhdGU9MCx0aGlzLl9hY3RpdmVSaXBwbGVzLmFkZChtKSxuLnBlcnNpc3RlbnR8fCh0aGlzLl9tb3N0UmVjZW50VHJhbnNpZW50UmlwcGxlPW0pLHRoaXMuX3J1blRpbWVvdXRPdXRzaWRlWm9uZSgoKCk9Pntjb25zdCB0PW09PT10aGlzLl9tb3N0UmVjZW50VHJhbnNpZW50UmlwcGxlO20uc3RhdGU9MSxuLnBlcnNpc3RlbnR8fHQmJnRoaXMuX2lzUG9pbnRlckRvd258fG0uZmFkZU91dCgpfSksYyksbX1mYWRlT3V0UmlwcGxlKHQpe2NvbnN0IGU9dGhpcy5fYWN0aXZlUmlwcGxlcy5kZWxldGUodCk7aWYodD09PXRoaXMuX21vc3RSZWNlbnRUcmFuc2llbnRSaXBwbGUmJih0aGlzLl9tb3N0UmVjZW50VHJhbnNpZW50UmlwcGxlPW51bGwpLHRoaXMuX2FjdGl2ZVJpcHBsZXMuc2l6ZXx8KHRoaXMuX2NvbnRhaW5lclJlY3Q9bnVsbCksIWUpcmV0dXJuO2NvbnN0IG49dC5lbGVtZW50LG89T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHJMKSx0LmNvbmZpZy5hbmltYXRpb24pO24uc3R5bGUudHJhbnNpdGlvbkR1cmF0aW9uPWAke28uZXhpdER1cmF0aW9ufW1zYCxuLnN0eWxlLm9wYWNpdHk9IjAiLHQuc3RhdGU9Mix0aGlzLl9ydW5UaW1lb3V0T3V0c2lkZVpvbmUoKCgpPT57dC5zdGF0ZT0zLG4ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChuKX0pLG8uZXhpdER1cmF0aW9uKX1mYWRlT3V0QWxsKCl7dGhpcy5fYWN0aXZlUmlwcGxlcy5mb3JFYWNoKCh0PT50LmZhZGVPdXQoKSkpfWZhZGVPdXRBbGxOb25QZXJzaXN0ZW50KCl7dGhpcy5fYWN0aXZlUmlwcGxlcy5mb3JFYWNoKCh0PT57dC5jb25maWcucGVyc2lzdGVudHx8dC5mYWRlT3V0KCl9KSl9c2V0dXBUcmlnZ2VyRXZlbnRzKHQpe2NvbnN0IGU9ckgodCk7ZSYmZSE9PXRoaXMuX3RyaWdnZXJFbGVtZW50JiYodGhpcy5fcmVtb3ZlVHJpZ2dlckV2ZW50cygpLHRoaXMuX3RyaWdnZXJFbGVtZW50PWUsdGhpcy5fcmVnaXN0ZXJFdmVudHMobEwpKX1oYW5kbGVFdmVudCh0KXsibW91c2Vkb3duIj09PXQudHlwZT90aGlzLl9vbk1vdXNlZG93bih0KToidG91Y2hzdGFydCI9PT10LnR5cGU/dGhpcy5fb25Ub3VjaFN0YXJ0KHQpOnRoaXMuX29uUG9pbnRlclVwKCksdGhpcy5fcG9pbnRlclVwRXZlbnRzUmVnaXN0ZXJlZHx8KHRoaXMuX3JlZ2lzdGVyRXZlbnRzKGNMKSx0aGlzLl9wb2ludGVyVXBFdmVudHNSZWdpc3RlcmVkPSEwKX1fb25Nb3VzZWRvd24odCl7Y29uc3QgZT10Rih0KSxuPXRoaXMuX2xhc3RUb3VjaFN0YXJ0RXZlbnQmJkRhdGUubm93KCk8dGhpcy5fbGFzdFRvdWNoU3RhcnRFdmVudCs4MDA7dGhpcy5fdGFyZ2V0LnJpcHBsZURpc2FibGVkfHxlfHxufHwodGhpcy5faXNQb2ludGVyRG93bj0hMCx0aGlzLmZhZGVJblJpcHBsZSh0LmNsaWVudFgsdC5jbGllbnRZLHRoaXMuX3RhcmdldC5yaXBwbGVDb25maWcpKX1fb25Ub3VjaFN0YXJ0KHQpe2lmKCF0aGlzLl90YXJnZXQucmlwcGxlRGlzYWJsZWQmJiFlRih0KSl7dGhpcy5fbGFzdFRvdWNoU3RhcnRFdmVudD1EYXRlLm5vdygpLHRoaXMuX2lzUG9pbnRlckRvd249ITA7Y29uc3QgZT10LmNoYW5nZWRUb3VjaGVzO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKXRoaXMuZmFkZUluUmlwcGxlKGVbdF0uY2xpZW50WCxlW3RdLmNsaWVudFksdGhpcy5fdGFyZ2V0LnJpcHBsZUNvbmZpZyl9fV9vblBvaW50ZXJVcCgpe3RoaXMuX2lzUG9pbnRlckRvd24mJih0aGlzLl9pc1BvaW50ZXJEb3duPSExLHRoaXMuX2FjdGl2ZVJpcHBsZXMuZm9yRWFjaCgodD0+eyF0LmNvbmZpZy5wZXJzaXN0ZW50JiYoMT09PXQuc3RhdGV8fHQuY29uZmlnLnRlcm1pbmF0ZU9uUG9pbnRlclVwJiYwPT09dC5zdGF0ZSkmJnQuZmFkZU91dCgpfSkpKX1fcnVuVGltZW91dE91dHNpZGVab25lKHQsZT0wKXt0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCgpPT5zZXRUaW1lb3V0KHQsZSkpKX1fcmVnaXN0ZXJFdmVudHModCl7dGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+e3QuZm9yRWFjaCgodD0+e3RoaXMuX3RyaWdnZXJFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIodCx0aGlzLHNMKX0pKX0pKX1fcmVtb3ZlVHJpZ2dlckV2ZW50cygpe3RoaXMuX3RyaWdnZXJFbGVtZW50JiYobEwuZm9yRWFjaCgodD0+e3RoaXMuX3RyaWdnZXJFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIodCx0aGlzLHNMKX0pKSx0aGlzLl9wb2ludGVyVXBFdmVudHNSZWdpc3RlcmVkJiZjTC5mb3JFYWNoKCh0PT57dGhpcy5fdHJpZ2dlckVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LHRoaXMsc0wpfSkpKX19Y29uc3QgcEw9bmV3IGVyKCJtYXQtcmlwcGxlLWdsb2JhbC1vcHRpb25zIik7Y2xhc3MgbUx7Y29uc3RydWN0b3IodCxlLG4sbyxpKXt0aGlzLl9lbGVtZW50UmVmPXQsdGhpcy5fYW5pbWF0aW9uTW9kZT1pLHRoaXMucmFkaXVzPTAsdGhpcy5fZGlzYWJsZWQ9ITEsdGhpcy5faXNJbml0aWFsaXplZD0hMSx0aGlzLl9nbG9iYWxPcHRpb25zPW98fHt9LHRoaXMuX3JpcHBsZVJlbmRlcmVyPW5ldyBkTCh0aGlzLGUsdCxuKX1nZXQgZGlzYWJsZWQoKXtyZXR1cm4gdGhpcy5fZGlzYWJsZWR9c2V0IGRpc2FibGVkKHQpe3QmJnRoaXMuZmFkZU91dEFsbE5vblBlcnNpc3RlbnQoKSx0aGlzLl9kaXNhYmxlZD10LHRoaXMuX3NldHVwVHJpZ2dlckV2ZW50c0lmRW5hYmxlZCgpfWdldCB0cmlnZ2VyKCl7cmV0dXJuIHRoaXMuX3RyaWdnZXJ8fHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudH1zZXQgdHJpZ2dlcih0KXt0aGlzLl90cmlnZ2VyPXQsdGhpcy5fc2V0dXBUcmlnZ2VyRXZlbnRzSWZFbmFibGVkKCl9bmdPbkluaXQoKXt0aGlzLl9pc0luaXRpYWxpemVkPSEwLHRoaXMuX3NldHVwVHJpZ2dlckV2ZW50c0lmRW5hYmxlZCgpfW5nT25EZXN0cm95KCl7dGhpcy5fcmlwcGxlUmVuZGVyZXIuX3JlbW92ZVRyaWdnZXJFdmVudHMoKX1mYWRlT3V0QWxsKCl7dGhpcy5fcmlwcGxlUmVuZGVyZXIuZmFkZU91dEFsbCgpfWZhZGVPdXRBbGxOb25QZXJzaXN0ZW50KCl7dGhpcy5fcmlwcGxlUmVuZGVyZXIuZmFkZU91dEFsbE5vblBlcnNpc3RlbnQoKX1nZXQgcmlwcGxlQ29uZmlnKCl7cmV0dXJue2NlbnRlcmVkOnRoaXMuY2VudGVyZWQscmFkaXVzOnRoaXMucmFkaXVzLGNvbG9yOnRoaXMuY29sb3IsYW5pbWF0aW9uOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHRoaXMuX2dsb2JhbE9wdGlvbnMuYW5pbWF0aW9uKSwiTm9vcEFuaW1hdGlvbnMiPT09dGhpcy5fYW5pbWF0aW9uTW9kZT97ZW50ZXJEdXJhdGlvbjowLGV4aXREdXJhdGlvbjowfTp7fSksdGhpcy5hbmltYXRpb24pLHRlcm1pbmF0ZU9uUG9pbnRlclVwOnRoaXMuX2dsb2JhbE9wdGlvbnMudGVybWluYXRlT25Qb2ludGVyVXB9fWdldCByaXBwbGVEaXNhYmxlZCgpe3JldHVybiB0aGlzLmRpc2FibGVkfHwhIXRoaXMuX2dsb2JhbE9wdGlvbnMuZGlzYWJsZWR9X3NldHVwVHJpZ2dlckV2ZW50c0lmRW5hYmxlZCgpeyF0aGlzLmRpc2FibGVkJiZ0aGlzLl9pc0luaXRpYWxpemVkJiZ0aGlzLl9yaXBwbGVSZW5kZXJlci5zZXR1cFRyaWdnZXJFdmVudHModGhpcy50cmlnZ2VyKX1sYXVuY2godCxlPTAsbil7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0P3RoaXMuX3JpcHBsZVJlbmRlcmVyLmZhZGVJblJpcHBsZSh0LGUsT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHRoaXMucmlwcGxlQ29uZmlnKSxuKSk6dGhpcy5fcmlwcGxlUmVuZGVyZXIuZmFkZUluUmlwcGxlKDAsMCxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdGhpcy5yaXBwbGVDb25maWcpLHQpKX19bUwuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fG1MKShnZihLaCksZ2YobUMpLGdmKGNIKSxnZihwTCw4KSxnZihjayw4KSl9LG1MLsm1ZGlyPWhvKHt0eXBlOm1MLHNlbGVjdG9yczpbWyIiLCJtYXQtcmlwcGxlIiwiIl0sWyIiLCJtYXRSaXBwbGUiLCIiXV0saG9zdEF0dHJzOlsxLCJtYXQtcmlwcGxlIl0saG9zdFZhcnM6Mixob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezImZSYmY3UoIm1hdC1yaXBwbGUtdW5ib3VuZGVkIixuLnVuYm91bmRlZCl9LGlucHV0czp7cmFkaXVzOlsibWF0UmlwcGxlUmFkaXVzIiwicmFkaXVzIl0sZGlzYWJsZWQ6WyJtYXRSaXBwbGVEaXNhYmxlZCIsImRpc2FibGVkIl0sdHJpZ2dlcjpbIm1hdFJpcHBsZVRyaWdnZXIiLCJ0cmlnZ2VyIl0sY29sb3I6WyJtYXRSaXBwbGVDb2xvciIsImNvbG9yIl0sdW5ib3VuZGVkOlsibWF0UmlwcGxlVW5ib3VuZGVkIiwidW5ib3VuZGVkIl0sY2VudGVyZWQ6WyJtYXRSaXBwbGVDZW50ZXJlZCIsImNlbnRlcmVkIl0sYW5pbWF0aW9uOlsibWF0UmlwcGxlQW5pbWF0aW9uIiwiYW5pbWF0aW9uIl19LGV4cG9ydEFzOlsibWF0UmlwcGxlIl19KSxtTC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOktofSx7dHlwZTptQ30se3R5cGU6Y0h9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbcExdfV19LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbY2tdfV19XSxtTC5wcm9wRGVjb3JhdG9ycz17Y29sb3I6W3t0eXBlOlJfLGFyZ3M6WyJtYXRSaXBwbGVDb2xvciJdfV0sdW5ib3VuZGVkOlt7dHlwZTpSXyxhcmdzOlsibWF0UmlwcGxlVW5ib3VuZGVkIl19XSxjZW50ZXJlZDpbe3R5cGU6Ul8sYXJnczpbIm1hdFJpcHBsZUNlbnRlcmVkIl19XSxyYWRpdXM6W3t0eXBlOlJfLGFyZ3M6WyJtYXRSaXBwbGVSYWRpdXMiXX1dLGFuaW1hdGlvbjpbe3R5cGU6Ul8sYXJnczpbIm1hdFJpcHBsZUFuaW1hdGlvbiJdfV0sZGlzYWJsZWQ6W3t0eXBlOlJfLGFyZ3M6WyJtYXRSaXBwbGVEaXNhYmxlZCJdfV0sdHJpZ2dlcjpbe3R5cGU6Ul8sYXJnczpbIm1hdFJpcHBsZVRyaWdnZXIiXX1dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKG1MLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6IlttYXQtcmlwcGxlXSwgW21hdFJpcHBsZV0iLGV4cG9ydEFzOiJtYXRSaXBwbGUiLGhvc3Q6e2NsYXNzOiJtYXQtcmlwcGxlIiwiW2NsYXNzLm1hdC1yaXBwbGUtdW5ib3VuZGVkXSI6InVuYm91bmRlZCJ9fV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6S2h9LHt0eXBlOm1DfSx7dHlwZTpjSH0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltwTF19XX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltja119XX1dfSkse3JhZGl1czpbe3R5cGU6Ul8sYXJnczpbIm1hdFJpcHBsZVJhZGl1cyJdfV0sZGlzYWJsZWQ6W3t0eXBlOlJfLGFyZ3M6WyJtYXRSaXBwbGVEaXNhYmxlZCJdfV0sdHJpZ2dlcjpbe3R5cGU6Ul8sYXJnczpbIm1hdFJpcHBsZVRyaWdnZXIiXX1dLGNvbG9yOlt7dHlwZTpSXyxhcmdzOlsibWF0UmlwcGxlQ29sb3IiXX1dLHVuYm91bmRlZDpbe3R5cGU6Ul8sYXJnczpbIm1hdFJpcHBsZVVuYm91bmRlZCJdfV0sY2VudGVyZWQ6W3t0eXBlOlJfLGFyZ3M6WyJtYXRSaXBwbGVDZW50ZXJlZCJdfV0sYW5pbWF0aW9uOlt7dHlwZTpSXyxhcmdzOlsibWF0UmlwcGxlQW5pbWF0aW9uIl19XX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgZkx7fWZMLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxmTCl9LGZMLsm1bW9kPWZvKHt0eXBlOmZMfSksZkwuybVpbmo9RG4oe2ltcG9ydHM6W1tORixkSF0sTkZdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihmTCxbe3R5cGU6TF8sYXJnczpbe2ltcG9ydHM6W05GLGRIXSxleHBvcnRzOlttTCxORl0sZGVjbGFyYXRpb25zOlttTF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhmTCx7ZGVjbGFyYXRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuW21MXX0saW1wb3J0czpmdW5jdGlvbigpe3JldHVybltORixkSF19LGV4cG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bbUwsTkZdfX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgdUx7Y29uc3RydWN0b3IodCl7dGhpcy5fYW5pbWF0aW9uTW9kZT10LHRoaXMuc3RhdGU9InVuY2hlY2tlZCIsdGhpcy5kaXNhYmxlZD0hMX19dUwuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHVMKShnZihjayw4KSl9LHVMLsm1Y21wPXNvKHt0eXBlOnVMLHNlbGVjdG9yczpbWyJtYXQtcHNldWRvLWNoZWNrYm94Il1dLGhvc3RBdHRyczpbMSwibWF0LXBzZXVkby1jaGVja2JveCJdLGhvc3RWYXJzOjgsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsyJmUmJmN1KCJtYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGUiLCJpbmRldGVybWluYXRlIj09PW4uc3RhdGUpKCJtYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWQiLCJjaGVja2VkIj09PW4uc3RhdGUpKCJtYXQtcHNldWRvLWNoZWNrYm94LWRpc2FibGVkIixuLmRpc2FibGVkKSgiX21hdC1hbmltYXRpb24tbm9vcGFibGUiLCJOb29wQW5pbWF0aW9ucyI9PT1uLl9hbmltYXRpb25Nb2RlKX0saW5wdXRzOntzdGF0ZToic3RhdGUiLGRpc2FibGVkOiJkaXNhYmxlZCJ9LGRlY2xzOjAsdmFyczowLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXt9LHN0eWxlczpbJy5tYXQtcHNldWRvLWNoZWNrYm94e3dpZHRoOjE2cHg7aGVpZ2h0OjE2cHg7Ym9yZGVyOjJweCBzb2xpZDtib3JkZXItcmFkaXVzOjJweDtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmlubGluZS1ibG9jazt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7Ym94LXNpemluZzpib3JkZXItYm94O3Bvc2l0aW9uOnJlbGF0aXZlO2ZsZXgtc2hyaW5rOjA7dHJhbnNpdGlvbjpib3JkZXItY29sb3IgOTBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAwLjEpLGJhY2tncm91bmQtY29sb3IgOTBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAwLjEpfS5tYXQtcHNldWRvLWNoZWNrYm94OjphZnRlcntwb3NpdGlvbjphYnNvbHV0ZTtvcGFjaXR5OjA7Y29udGVudDoiIjtib3JkZXItYm90dG9tOjJweCBzb2xpZCBjdXJyZW50Q29sb3I7dHJhbnNpdGlvbjpvcGFjaXR5IDkwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMC4xKX0ubWF0LXBzZXVkby1jaGVja2JveC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWQsLm1hdC1wc2V1ZG8tY2hlY2tib3gubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRle2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudH0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LXBzZXVkby1jaGVja2JveHt0cmFuc2l0aW9uOm5vbmU7YW5pbWF0aW9uOm5vbmV9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlLm1hdC1wc2V1ZG8tY2hlY2tib3g6OmFmdGVye3RyYW5zaXRpb246bm9uZX0ubWF0LXBzZXVkby1jaGVja2JveC1kaXNhYmxlZHtjdXJzb3I6ZGVmYXVsdH0ubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlOjphZnRlcnt0b3A6NXB4O2xlZnQ6MXB4O3dpZHRoOjEwcHg7b3BhY2l0eToxO2JvcmRlci1yYWRpdXM6MnB4fS5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWQ6OmFmdGVye3RvcDoyLjRweDtsZWZ0OjFweDt3aWR0aDo4cHg7aGVpZ2h0OjNweDtib3JkZXItbGVmdDoycHggc29saWQgY3VycmVudENvbG9yO3RyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKTtvcGFjaXR5OjE7Ym94LXNpemluZzpjb250ZW50LWJveH1cbiddLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLHVMLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltja119XX1dLHVMLnByb3BEZWNvcmF0b3JzPXtzdGF0ZTpbe3R5cGU6Ul99XSxkaXNhYmxlZDpbe3R5cGU6Ul99XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih1TCxbe3R5cGU6U18sYXJnczpbe2VuY2Fwc3VsYXRpb246V24uTm9uZSxjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNoLHNlbGVjdG9yOiJtYXQtcHNldWRvLWNoZWNrYm94Iix0ZW1wbGF0ZToiIixob3N0OntjbGFzczoibWF0LXBzZXVkby1jaGVja2JveCIsIltjbGFzcy5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGVdIjonc3RhdGUgPT09ICJpbmRldGVybWluYXRlIicsIltjbGFzcy5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWRdIjonc3RhdGUgPT09ICJjaGVja2VkIicsIltjbGFzcy5tYXQtcHNldWRvLWNoZWNrYm94LWRpc2FibGVkXSI6ImRpc2FibGVkIiwiW2NsYXNzLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlXSI6J19hbmltYXRpb25Nb2RlID09PSAiTm9vcEFuaW1hdGlvbnMiJ30sc3R5bGVzOlsnLm1hdC1wc2V1ZG8tY2hlY2tib3h7d2lkdGg6MTZweDtoZWlnaHQ6MTZweDtib3JkZXI6MnB4IHNvbGlkO2JvcmRlci1yYWRpdXM6MnB4O2N1cnNvcjpwb2ludGVyO2Rpc3BsYXk6aW5saW5lLWJsb2NrO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtib3gtc2l6aW5nOmJvcmRlci1ib3g7cG9zaXRpb246cmVsYXRpdmU7ZmxleC1zaHJpbms6MDt0cmFuc2l0aW9uOmJvcmRlci1jb2xvciA5MG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDAuMSksYmFja2dyb3VuZC1jb2xvciA5MG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDAuMSl9Lm1hdC1wc2V1ZG8tY2hlY2tib3g6OmFmdGVye3Bvc2l0aW9uOmFic29sdXRlO29wYWNpdHk6MDtjb250ZW50OiIiO2JvcmRlci1ib3R0b206MnB4IHNvbGlkIGN1cnJlbnRDb2xvcjt0cmFuc2l0aW9uOm9wYWNpdHkgOTBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAwLjEpfS5tYXQtcHNldWRvLWNoZWNrYm94Lm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZCwubWF0LXBzZXVkby1jaGVja2JveC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGV7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50fS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZS5tYXQtcHNldWRvLWNoZWNrYm94e3RyYW5zaXRpb246bm9uZTthbmltYXRpb246bm9uZX0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LXBzZXVkby1jaGVja2JveDo6YWZ0ZXJ7dHJhbnNpdGlvbjpub25lfS5tYXQtcHNldWRvLWNoZWNrYm94LWRpc2FibGVke2N1cnNvcjpkZWZhdWx0fS5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGU6OmFmdGVye3RvcDo1cHg7bGVmdDoxcHg7d2lkdGg6MTBweDtvcGFjaXR5OjE7Ym9yZGVyLXJhZGl1czoycHh9Lm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZDo6YWZ0ZXJ7dG9wOjIuNHB4O2xlZnQ6MXB4O3dpZHRoOjhweDtoZWlnaHQ6M3B4O2JvcmRlci1sZWZ0OjJweCBzb2xpZCBjdXJyZW50Q29sb3I7dHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpO29wYWNpdHk6MTtib3gtc2l6aW5nOmNvbnRlbnQtYm94fVxuJ119XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W2NrXX1dfV19KSx7c3RhdGU6W3t0eXBlOlJffV0sZGlzYWJsZWQ6W3t0eXBlOlJffV19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIGdMe31nTC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8Z0wpfSxnTC7JtW1vZD1mbyh7dHlwZTpnTH0pLGdMLsm1aW5qPURuKHtpbXBvcnRzOltbTkZdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoZ0wsW3t0eXBlOkxfLGFyZ3M6W3tpbXBvcnRzOltORl0sZXhwb3J0czpbdUxdLGRlY2xhcmF0aW9uczpbdUxdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8oZ0wse2RlY2xhcmF0aW9uczpbdUxdLGltcG9ydHM6W05GXSxleHBvcnRzOlt1TF19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IGhMPW5ldyBlcigiTUFUX09QVElPTl9QQVJFTlRfQ09NUE9ORU5UIiksYkw9ekYoY2xhc3N7fSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2xldCB5TD0wO2NsYXNzIF9MIGV4dGVuZHMgYkx7Y29uc3RydWN0b3IodCl7dmFyIGU7c3VwZXIoKSx0aGlzLl9sYWJlbElkPSJtYXQtb3B0Z3JvdXAtbGFiZWwtIit5TCsrLHRoaXMuX2luZXJ0PW51bGwhPT0oZT1udWxsPT10P3ZvaWQgMDp0LmluZXJ0R3JvdXBzKSYmdm9pZCAwIT09ZSYmZX19X0wuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fF9MKShnZihoTCw4KSl9LF9MLsm1ZGlyPWhvKHt0eXBlOl9MLGlucHV0czp7bGFiZWw6ImxhYmVsIn0sZmVhdHVyZXM6W1FwXX0pLF9MLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W2hMXX0se3R5cGU6QnJ9XX1dLF9MLnByb3BEZWNvcmF0b3JzPXtsYWJlbDpbe3R5cGU6Ul99XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihfTCxbe3R5cGU6a199XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W2hMXX0se3R5cGU6QnJ9XX1dfSkse2xhYmVsOlt7dHlwZTpSX31dfSk7Y29uc3QgQ0w9bmV3IGVyKCJNYXRPcHRncm91cCIpO2NsYXNzIE1MIGV4dGVuZHMgX0x7fU1MLsm1ZmFjPShmdW5jdGlvbigpe2xldCB0O3JldHVybiBmdW5jdGlvbiBlKG4pe3JldHVybih0fHwodD1VYShNTCkpKShufHxNTCl9fSkoKSxNTC7JtWNtcD1zbyh7dHlwZTpNTCxzZWxlY3RvcnM6W1sibWF0LW9wdGdyb3VwIl1dLGhvc3RBdHRyczpbMSwibWF0LW9wdGdyb3VwIl0saG9zdFZhcnM6NSxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezImZSYmKHltKCJyb2xlIixuLl9pbmVydD9udWxsOiJncm91cCIpKCJhcmlhLWRpc2FibGVkIixuLl9pbmVydD9udWxsOm4uZGlzYWJsZWQudG9TdHJpbmcoKSkoImFyaWEtbGFiZWxsZWRieSIsbi5faW5lcnQ/bnVsbDpuLl9sYWJlbElkKSxjdSgibWF0LW9wdGdyb3VwLWRpc2FibGVkIixuLmRpc2FibGVkKSl9LGlucHV0czp7ZGlzYWJsZWQ6ImRpc2FibGVkIn0sZXhwb3J0QXM6WyJtYXRPcHRncm91cCJdLGZlYXR1cmVzOltqaChbe3Byb3ZpZGU6Q0wsdXNlRXhpc3Rpbmc6TUx9XSksUXBdLG5nQ29udGVudFNlbGVjdG9yczpbIioiLCJtYXQtb3B0aW9uLCBuZy1jb250YWluZXIiXSxkZWNsczo0LHZhcnM6Mixjb25zdHM6W1siYXJpYS1oaWRkZW4iLCJ0cnVlIiwxLCJtYXQtb3B0Z3JvdXAtbGFiZWwiLDMsImlkIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihIZih3RiksQ2YoMCwic3BhbiIsMCksUHUoMSksRmYoMiksTWYoKSxGZigzLDEpKSwyJmUmJihiZigiaWQiLG4uX2xhYmVsSWQpLERjKDEpLGt1KCIiLG4ubGFiZWwsIiAiKSl9LHN0eWxlczpbIi5tYXQtb3B0Z3JvdXAtbGFiZWx7d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7bGluZS1oZWlnaHQ6NDhweDtoZWlnaHQ6NDhweDtwYWRkaW5nOjAgMTZweDt0ZXh0LWFsaWduOmxlZnQ7dGV4dC1kZWNvcmF0aW9uOm5vbmU7bWF4LXdpZHRoOjEwMCU7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO2N1cnNvcjpkZWZhdWx0fS5tYXQtb3B0Z3JvdXAtbGFiZWxbZGlzYWJsZWRde2N1cnNvcjpkZWZhdWx0fVtkaXI9cnRsXSAubWF0LW9wdGdyb3VwLWxhYmVse3RleHQtYWxpZ246cmlnaHR9Lm1hdC1vcHRncm91cC1sYWJlbCAubWF0LWljb257bWFyZ2luLXJpZ2h0OjE2cHg7dmVydGljYWwtYWxpZ246bWlkZGxlfS5tYXQtb3B0Z3JvdXAtbGFiZWwgLm1hdC1pY29uIHN2Z3t2ZXJ0aWNhbC1hbGlnbjp0b3B9W2Rpcj1ydGxdIC5tYXQtb3B0Z3JvdXAtbGFiZWwgLm1hdC1pY29ue21hcmdpbi1sZWZ0OjE2cHg7bWFyZ2luLXJpZ2h0OjB9XG4iXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKE1MLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Im1hdC1vcHRncm91cCIsZXhwb3J0QXM6Im1hdE9wdGdyb3VwIix0ZW1wbGF0ZTonPHNwYW4gY2xhc3M9Im1hdC1vcHRncm91cC1sYWJlbCIgYXJpYS1oaWRkZW49InRydWUiIFtpZF09Il9sYWJlbElkIj57eyBsYWJlbCB9fSA8bmctY29udGVudD48L25nLWNvbnRlbnQ+PC9zcGFuPlxuPG5nLWNvbnRlbnQgc2VsZWN0PSJtYXQtb3B0aW9uLCBuZy1jb250YWluZXIiPjwvbmctY29udGVudD5cbicsZW5jYXBzdWxhdGlvbjpXbi5Ob25lLGNoYW5nZURldGVjdGlvbjpqbi5PblB1c2gsaW5wdXRzOlsiZGlzYWJsZWQiXSxob3N0OntjbGFzczoibWF0LW9wdGdyb3VwIiwiW2F0dHIucm9sZV0iOidfaW5lcnQgPyBudWxsIDogImdyb3VwIicsIlthdHRyLmFyaWEtZGlzYWJsZWRdIjoiX2luZXJ0ID8gbnVsbCA6IGRpc2FibGVkLnRvU3RyaW5nKCkiLCJbYXR0ci5hcmlhLWxhYmVsbGVkYnldIjoiX2luZXJ0ID8gbnVsbCA6IF9sYWJlbElkIiwiW2NsYXNzLm1hdC1vcHRncm91cC1kaXNhYmxlZF0iOiJkaXNhYmxlZCJ9LHByb3ZpZGVyczpbe3Byb3ZpZGU6Q0wsdXNlRXhpc3Rpbmc6TUx9XSxzdHlsZXM6WyIubWF0LW9wdGdyb3VwLWxhYmVse3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2xpbmUtaGVpZ2h0OjQ4cHg7aGVpZ2h0OjQ4cHg7cGFkZGluZzowIDE2cHg7dGV4dC1hbGlnbjpsZWZ0O3RleHQtZGVjb3JhdGlvbjpub25lO21heC13aWR0aDoxMDAlOy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTtjdXJzb3I6ZGVmYXVsdH0ubWF0LW9wdGdyb3VwLWxhYmVsW2Rpc2FibGVkXXtjdXJzb3I6ZGVmYXVsdH1bZGlyPXJ0bF0gLm1hdC1vcHRncm91cC1sYWJlbHt0ZXh0LWFsaWduOnJpZ2h0fS5tYXQtb3B0Z3JvdXAtbGFiZWwgLm1hdC1pY29ue21hcmdpbi1yaWdodDoxNnB4O3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0ubWF0LW9wdGdyb3VwLWxhYmVsIC5tYXQtaWNvbiBzdmd7dmVydGljYWwtYWxpZ246dG9wfVtkaXI9cnRsXSAubWF0LW9wdGdyb3VwLWxhYmVsIC5tYXQtaWNvbnttYXJnaW4tbGVmdDoxNnB4O21hcmdpbi1yaWdodDowfVxuIl19XX1dLG51bGwsbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpsZXQgdkw9MDtjbGFzcyB4THtjb25zdHJ1Y3Rvcih0LGU9ITEpe3RoaXMuc291cmNlPXQsdGhpcy5pc1VzZXJJbnB1dD1lfX1jbGFzcyBPTHtjb25zdHJ1Y3Rvcih0LGUsbixvKXt0aGlzLl9lbGVtZW50PXQsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWY9ZSx0aGlzLl9wYXJlbnQ9bix0aGlzLmdyb3VwPW8sdGhpcy5fc2VsZWN0ZWQ9ITEsdGhpcy5fYWN0aXZlPSExLHRoaXMuX2Rpc2FibGVkPSExLHRoaXMuX21vc3RSZWNlbnRWaWV3VmFsdWU9IiIsdGhpcy5pZD0ibWF0LW9wdGlvbi0iK3ZMKyssdGhpcy5vblNlbGVjdGlvbkNoYW5nZT1uZXcgU3ksdGhpcy5fc3RhdGVDaGFuZ2VzPW5ldyBCfWdldCBtdWx0aXBsZSgpe3JldHVybiB0aGlzLl9wYXJlbnQmJnRoaXMuX3BhcmVudC5tdWx0aXBsZX1nZXQgc2VsZWN0ZWQoKXtyZXR1cm4gdGhpcy5fc2VsZWN0ZWR9Z2V0IGRpc2FibGVkKCl7cmV0dXJuIHRoaXMuZ3JvdXAmJnRoaXMuZ3JvdXAuZGlzYWJsZWR8fHRoaXMuX2Rpc2FibGVkfXNldCBkaXNhYmxlZCh0KXt0aGlzLl9kaXNhYmxlZD1lSCh0KX1nZXQgZGlzYWJsZVJpcHBsZSgpe3JldHVybiB0aGlzLl9wYXJlbnQmJnRoaXMuX3BhcmVudC5kaXNhYmxlUmlwcGxlfWdldCBhY3RpdmUoKXtyZXR1cm4gdGhpcy5fYWN0aXZlfWdldCB2aWV3VmFsdWUoKXtyZXR1cm4odGhpcy5fZ2V0SG9zdEVsZW1lbnQoKS50ZXh0Q29udGVudHx8IiIpLnRyaW0oKX1zZWxlY3QoKXt0aGlzLl9zZWxlY3RlZHx8KHRoaXMuX3NlbGVjdGVkPSEwLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpLHRoaXMuX2VtaXRTZWxlY3Rpb25DaGFuZ2VFdmVudCgpKX1kZXNlbGVjdCgpe3RoaXMuX3NlbGVjdGVkJiYodGhpcy5fc2VsZWN0ZWQ9ITEsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCksdGhpcy5fZW1pdFNlbGVjdGlvbkNoYW5nZUV2ZW50KCkpfWZvY3VzKHQsZSl7Y29uc3Qgbj10aGlzLl9nZXRIb3N0RWxlbWVudCgpOyJmdW5jdGlvbiI9PXR5cGVvZiBuLmZvY3VzJiZuLmZvY3VzKGUpfXNldEFjdGl2ZVN0eWxlcygpe3RoaXMuX2FjdGl2ZXx8KHRoaXMuX2FjdGl2ZT0hMCx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSl9c2V0SW5hY3RpdmVTdHlsZXMoKXt0aGlzLl9hY3RpdmUmJih0aGlzLl9hY3RpdmU9ITEsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCkpfWdldExhYmVsKCl7cmV0dXJuIHRoaXMudmlld1ZhbHVlfV9oYW5kbGVLZXlkb3duKHQpe3Qua2V5Q29kZSE9PVhJJiZ0LmtleUNvZGUhPT1KSXx8dEgodCl8fCh0aGlzLl9zZWxlY3RWaWFJbnRlcmFjdGlvbigpLHQucHJldmVudERlZmF1bHQoKSl9X3NlbGVjdFZpYUludGVyYWN0aW9uKCl7dGhpcy5kaXNhYmxlZHx8KHRoaXMuX3NlbGVjdGVkPSF0aGlzLm11bHRpcGxlfHwhdGhpcy5fc2VsZWN0ZWQsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCksdGhpcy5fZW1pdFNlbGVjdGlvbkNoYW5nZUV2ZW50KCEwKSl9X2dldEFyaWFTZWxlY3RlZCgpe3JldHVybiB0aGlzLnNlbGVjdGVkfHwhdGhpcy5tdWx0aXBsZSYmbnVsbH1fZ2V0VGFiSW5kZXgoKXtyZXR1cm4gdGhpcy5kaXNhYmxlZD8iLTEiOiIwIn1fZ2V0SG9zdEVsZW1lbnQoKXtyZXR1cm4gdGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50fW5nQWZ0ZXJWaWV3Q2hlY2tlZCgpe2lmKHRoaXMuX3NlbGVjdGVkKXtjb25zdCB0PXRoaXMudmlld1ZhbHVlO3QhPT10aGlzLl9tb3N0UmVjZW50Vmlld1ZhbHVlJiYodGhpcy5fbW9zdFJlY2VudFZpZXdWYWx1ZT10LHRoaXMuX3N0YXRlQ2hhbmdlcy5uZXh0KCkpfX1uZ09uRGVzdHJveSgpe3RoaXMuX3N0YXRlQ2hhbmdlcy5jb21wbGV0ZSgpfV9lbWl0U2VsZWN0aW9uQ2hhbmdlRXZlbnQodD0hMSl7dGhpcy5vblNlbGVjdGlvbkNoYW5nZS5lbWl0KG5ldyB4TCh0aGlzLHQpKX19T0wuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fE9MKShnZihLaCksZ2YoT2IpLGdmKHZvaWQgMCksZ2YoX0wpKX0sT0wuybVkaXI9aG8oe3R5cGU6T0wsaW5wdXRzOntpZDoiaWQiLGRpc2FibGVkOiJkaXNhYmxlZCIsdmFsdWU6InZhbHVlIn0sb3V0cHV0czp7b25TZWxlY3Rpb25DaGFuZ2U6Im9uU2VsZWN0aW9uQ2hhbmdlIn19KSxPTC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOktofSx7dHlwZTpPYn0se3R5cGU6dm9pZCAwfSx7dHlwZTpfTH1dLE9MLnByb3BEZWNvcmF0b3JzPXt2YWx1ZTpbe3R5cGU6Ul99XSxpZDpbe3R5cGU6Ul99XSxkaXNhYmxlZDpbe3R5cGU6Ul99XSxvblNlbGVjdGlvbkNoYW5nZTpbe3R5cGU6RV99XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihPTCxbe3R5cGU6a199XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6S2h9LHt0eXBlOk9ifSx7dHlwZTp2b2lkIDB9LHt0eXBlOl9MfV19KSx7aWQ6W3t0eXBlOlJffV0sb25TZWxlY3Rpb25DaGFuZ2U6W3t0eXBlOkVffV0sZGlzYWJsZWQ6W3t0eXBlOlJffV0sdmFsdWU6W3t0eXBlOlJffV19KTtjbGFzcyBQTCBleHRlbmRzIE9Me2NvbnN0cnVjdG9yKHQsZSxuLG8pe3N1cGVyKHQsZSxuLG8pfX1mdW5jdGlvbiB3TCh0LGUsbil7aWYobi5sZW5ndGgpe2xldCBvPWUudG9BcnJheSgpLGk9bi50b0FycmF5KCksYT0wO2ZvcihsZXQgZT0wO2U8dCsxO2UrKylvW2VdLmdyb3VwJiZvW2VdLmdyb3VwPT09aVthXSYmYSsrO3JldHVybiBhfXJldHVybiAwfWZ1bmN0aW9uIGtMKHQsZSxuLG8pe3JldHVybiB0PG4/dDp0K2U+bitvP01hdGgubWF4KDAsdC1vK2UpOm59Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL1BMLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxQTCkoZ2YoS2gpLGdmKE9iKSxnZihoTCw4KSxnZihDTCw4KSl9LFBMLsm1Y21wPXNvKHt0eXBlOlBMLHNlbGVjdG9yczpbWyJtYXQtb3B0aW9uIl1dLGhvc3RBdHRyczpbInJvbGUiLCJvcHRpb24iLDEsIm1hdC1vcHRpb24iLCJtYXQtZm9jdXMtaW5kaWNhdG9yIl0saG9zdFZhcnM6MTIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJlJmKCJjbGljayIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5fc2VsZWN0VmlhSW50ZXJhY3Rpb24oKX0pKSgia2V5ZG93biIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uX2hhbmRsZUtleWRvd24oZSl9KSksMiZlJiYoY2coImlkIixuLmlkKSx5bSgidGFiaW5kZXgiLG4uX2dldFRhYkluZGV4KCkpKCJhcmlhLXNlbGVjdGVkIixuLl9nZXRBcmlhU2VsZWN0ZWQoKSkoImFyaWEtZGlzYWJsZWQiLG4uZGlzYWJsZWQudG9TdHJpbmcoKSksY3UoIm1hdC1zZWxlY3RlZCIsbi5zZWxlY3RlZCkoIm1hdC1vcHRpb24tbXVsdGlwbGUiLG4ubXVsdGlwbGUpKCJtYXQtYWN0aXZlIixuLmFjdGl2ZSkoIm1hdC1vcHRpb24tZGlzYWJsZWQiLG4uZGlzYWJsZWQpKX0sZXhwb3J0QXM6WyJtYXRPcHRpb24iXSxmZWF0dXJlczpbUXBdLG5nQ29udGVudFNlbGVjdG9yczpbIioiXSxkZWNsczo1LHZhcnM6NCxjb25zdHM6W1siY2xhc3MiLCJtYXQtb3B0aW9uLXBzZXVkby1jaGVja2JveCIsMywic3RhdGUiLCJkaXNhYmxlZCIsNCwibmdJZiJdLFsxLCJtYXQtb3B0aW9uLXRleHQiXSxbImNsYXNzIiwiY2RrLXZpc3VhbGx5LWhpZGRlbiIsNCwibmdJZiJdLFsibWF0LXJpcHBsZSIsIiIsMSwibWF0LW9wdGlvbi1yaXBwbGUiLDMsIm1hdFJpcHBsZVRyaWdnZXIiLCJtYXRSaXBwbGVEaXNhYmxlZCJdLFsxLCJtYXQtb3B0aW9uLXBzZXVkby1jaGVja2JveCIsMywic3RhdGUiLCJkaXNhYmxlZCJdLFsxLCJjZGstdmlzdWFsbHktaGlkZGVuIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihIZigpLEhtKDAsa0YsMSwyLCJtYXQtcHNldWRvLWNoZWNrYm94IiwwKSxDZigxLCJzcGFuIiwxKSxGZigyKSxNZigpLEhtKDMsU0YsMiwxLCJzcGFuIiwyKSx2Zig0LCJkaXYiLDMpKSwyJmUmJihiZigibmdJZiIsbi5tdWx0aXBsZSksRGMoMyksYmYoIm5nSWYiLG4uZ3JvdXAmJm4uZ3JvdXAuX2luZXJ0KSxEYygxKSxiZigibWF0UmlwcGxlVHJpZ2dlciIsbi5fZ2V0SG9zdEVsZW1lbnQoKSkoIm1hdFJpcHBsZURpc2FibGVkIixuLmRpc2FibGVkfHxuLmRpc2FibGVSaXBwbGUpKX0sZGlyZWN0aXZlczpbUHYsbUwsdUxdLHN0eWxlczpbIi5tYXQtb3B0aW9ue3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2xpbmUtaGVpZ2h0OjQ4cHg7aGVpZ2h0OjQ4cHg7cGFkZGluZzowIDE2cHg7dGV4dC1hbGlnbjpsZWZ0O3RleHQtZGVjb3JhdGlvbjpub25lO21heC13aWR0aDoxMDAlO3Bvc2l0aW9uOnJlbGF0aXZlO2N1cnNvcjpwb2ludGVyO291dGxpbmU6bm9uZTtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246cm93O21heC13aWR0aDoxMDAlO2JveC1zaXppbmc6Ym9yZGVyLWJveDthbGlnbi1pdGVtczpjZW50ZXI7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50fS5tYXQtb3B0aW9uW2Rpc2FibGVkXXtjdXJzb3I6ZGVmYXVsdH1bZGlyPXJ0bF0gLm1hdC1vcHRpb257dGV4dC1hbGlnbjpyaWdodH0ubWF0LW9wdGlvbiAubWF0LWljb257bWFyZ2luLXJpZ2h0OjE2cHg7dmVydGljYWwtYWxpZ246bWlkZGxlfS5tYXQtb3B0aW9uIC5tYXQtaWNvbiBzdmd7dmVydGljYWwtYWxpZ246dG9wfVtkaXI9cnRsXSAubWF0LW9wdGlvbiAubWF0LWljb257bWFyZ2luLWxlZnQ6MTZweDttYXJnaW4tcmlnaHQ6MH0ubWF0LW9wdGlvblthcmlhLWRpc2FibGVkPXRydWVdey13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTtjdXJzb3I6ZGVmYXVsdH0ubWF0LW9wdGdyb3VwIC5tYXQtb3B0aW9uOm5vdCgubWF0LW9wdGlvbi1tdWx0aXBsZSl7cGFkZGluZy1sZWZ0OjMycHh9W2Rpcj1ydGxdIC5tYXQtb3B0Z3JvdXAgLm1hdC1vcHRpb246bm90KC5tYXQtb3B0aW9uLW11bHRpcGxlKXtwYWRkaW5nLWxlZnQ6MTZweDtwYWRkaW5nLXJpZ2h0OjMycHh9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LW9wdGlvbnttYXJnaW46MCAxcHh9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LW9wdGlvbi5tYXQtYWN0aXZle2JvcmRlcjpzb2xpZCAxcHggY3VycmVudENvbG9yO21hcmdpbjowfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1vcHRpb25bYXJpYS1kaXNhYmxlZD10cnVlXXtvcGFjaXR5Oi41fS5tYXQtb3B0aW9uLXRleHR7ZGlzcGxheTppbmxpbmUtYmxvY2s7ZmxleC1ncm93OjE7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXN9Lm1hdC1vcHRpb24gLm1hdC1vcHRpb24tcmlwcGxle3RvcDowO2xlZnQ6MDtyaWdodDowO2JvdHRvbTowO3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOm5vbmV9Lm1hdC1vcHRpb24tcHNldWRvLWNoZWNrYm94e21hcmdpbi1yaWdodDo4cHh9W2Rpcj1ydGxdIC5tYXQtb3B0aW9uLXBzZXVkby1jaGVja2JveHttYXJnaW4tbGVmdDo4cHg7bWFyZ2luLXJpZ2h0OjB9XG4iXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSxQTC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOktofSx7dHlwZTpPYn0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltoTF19XX0se3R5cGU6TUwsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W0NMXX1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihQTCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJtYXQtb3B0aW9uIixleHBvcnRBczoibWF0T3B0aW9uIixob3N0Ontyb2xlOiJvcHRpb24iLCJbYXR0ci50YWJpbmRleF0iOiJfZ2V0VGFiSW5kZXgoKSIsIltjbGFzcy5tYXQtc2VsZWN0ZWRdIjoic2VsZWN0ZWQiLCJbY2xhc3MubWF0LW9wdGlvbi1tdWx0aXBsZV0iOiJtdWx0aXBsZSIsIltjbGFzcy5tYXQtYWN0aXZlXSI6ImFjdGl2ZSIsIltpZF0iOiJpZCIsIlthdHRyLmFyaWEtc2VsZWN0ZWRdIjoiX2dldEFyaWFTZWxlY3RlZCgpIiwiW2F0dHIuYXJpYS1kaXNhYmxlZF0iOiJkaXNhYmxlZC50b1N0cmluZygpIiwiW2NsYXNzLm1hdC1vcHRpb24tZGlzYWJsZWRdIjoiZGlzYWJsZWQiLCIoY2xpY2spIjoiX3NlbGVjdFZpYUludGVyYWN0aW9uKCkiLCIoa2V5ZG93bikiOiJfaGFuZGxlS2V5ZG93bigkZXZlbnQpIixjbGFzczoibWF0LW9wdGlvbiBtYXQtZm9jdXMtaW5kaWNhdG9yIn0sdGVtcGxhdGU6JzxtYXQtcHNldWRvLWNoZWNrYm94ICpuZ0lmPSJtdWx0aXBsZSIgY2xhc3M9Im1hdC1vcHRpb24tcHNldWRvLWNoZWNrYm94IlxuICAgIFtzdGF0ZV09InNlbGVjdGVkID8gXCdjaGVja2VkXCcgOiBcJ3VuY2hlY2tlZFwnIiBbZGlzYWJsZWRdPSJkaXNhYmxlZCI+PC9tYXQtcHNldWRvLWNoZWNrYm94PlxuXG48c3BhbiBjbGFzcz0ibWF0LW9wdGlvbi10ZXh0Ij48bmctY29udGVudD48L25nLWNvbnRlbnQ+PC9zcGFuPlxuXG5ceDNjIS0tIFNlZSBhMTF5IG5vdGVzIGluc2lkZSBvcHRncm91cC50cyBmb3IgY29udGV4dCBiZWhpbmQgdGhpcyBlbGVtZW50LiAtLVx4M2VcbjxzcGFuIGNsYXNzPSJjZGstdmlzdWFsbHktaGlkZGVuIiAqbmdJZj0iZ3JvdXAgJiYgZ3JvdXAuX2luZXJ0Ij4oe3sgZ3JvdXAubGFiZWwgfX0pPC9zcGFuPlxuXG48ZGl2IGNsYXNzPSJtYXQtb3B0aW9uLXJpcHBsZSIgbWF0LXJpcHBsZVxuICAgICBbbWF0UmlwcGxlVHJpZ2dlcl09Il9nZXRIb3N0RWxlbWVudCgpIlxuICAgICBbbWF0UmlwcGxlRGlzYWJsZWRdPSJkaXNhYmxlZCB8fCBkaXNhYmxlUmlwcGxlIj5cbjwvZGl2PlxuJyxlbmNhcHN1bGF0aW9uOlduLk5vbmUsY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaCxzdHlsZXM6WyIubWF0LW9wdGlvbnt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztsaW5lLWhlaWdodDo0OHB4O2hlaWdodDo0OHB4O3BhZGRpbmc6MCAxNnB4O3RleHQtYWxpZ246bGVmdDt0ZXh0LWRlY29yYXRpb246bm9uZTttYXgtd2lkdGg6MTAwJTtwb3NpdGlvbjpyZWxhdGl2ZTtjdXJzb3I6cG9pbnRlcjtvdXRsaW5lOm5vbmU7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOnJvdzttYXgtd2lkdGg6MTAwJTtib3gtc2l6aW5nOmJvcmRlci1ib3g7YWxpZ24taXRlbXM6Y2VudGVyOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudH0ubWF0LW9wdGlvbltkaXNhYmxlZF17Y3Vyc29yOmRlZmF1bHR9W2Rpcj1ydGxdIC5tYXQtb3B0aW9ue3RleHQtYWxpZ246cmlnaHR9Lm1hdC1vcHRpb24gLm1hdC1pY29ue21hcmdpbi1yaWdodDoxNnB4O3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0ubWF0LW9wdGlvbiAubWF0LWljb24gc3Zne3ZlcnRpY2FsLWFsaWduOnRvcH1bZGlyPXJ0bF0gLm1hdC1vcHRpb24gLm1hdC1pY29ue21hcmdpbi1sZWZ0OjE2cHg7bWFyZ2luLXJpZ2h0OjB9Lm1hdC1vcHRpb25bYXJpYS1kaXNhYmxlZD10cnVlXXstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7Y3Vyc29yOmRlZmF1bHR9Lm1hdC1vcHRncm91cCAubWF0LW9wdGlvbjpub3QoLm1hdC1vcHRpb24tbXVsdGlwbGUpe3BhZGRpbmctbGVmdDozMnB4fVtkaXI9cnRsXSAubWF0LW9wdGdyb3VwIC5tYXQtb3B0aW9uOm5vdCgubWF0LW9wdGlvbi1tdWx0aXBsZSl7cGFkZGluZy1sZWZ0OjE2cHg7cGFkZGluZy1yaWdodDozMnB4fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1vcHRpb257bWFyZ2luOjAgMXB4fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1vcHRpb24ubWF0LWFjdGl2ZXtib3JkZXI6c29saWQgMXB4IGN1cnJlbnRDb2xvcjttYXJnaW46MH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtb3B0aW9uW2FyaWEtZGlzYWJsZWQ9dHJ1ZV17b3BhY2l0eTouNX0ubWF0LW9wdGlvbi10ZXh0e2Rpc3BsYXk6aW5saW5lLWJsb2NrO2ZsZXgtZ3JvdzoxO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzfS5tYXQtb3B0aW9uIC5tYXQtb3B0aW9uLXJpcHBsZXt0b3A6MDtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MDtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czpub25lfS5tYXQtb3B0aW9uLXBzZXVkby1jaGVja2JveHttYXJnaW4tcmlnaHQ6OHB4fVtkaXI9cnRsXSAubWF0LW9wdGlvbi1wc2V1ZG8tY2hlY2tib3h7bWFyZ2luLWxlZnQ6OHB4O21hcmdpbi1yaWdodDowfVxuIl19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpLaH0se3R5cGU6T2J9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbaExdfV19LHt0eXBlOk1MLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltDTF19XX1dfSksbnVsbCk7Y2xhc3MgU0x7fVNMLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxTTCl9LFNMLsm1bW9kPWZvKHt0eXBlOlNMfSksU0wuybVpbmo9RG4oe2ltcG9ydHM6W1tmTCxyeCxORixnTF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihTTCxbe3R5cGU6TF8sYXJnczpbe2ltcG9ydHM6W2ZMLHJ4LE5GLGdMXSxleHBvcnRzOltQTCxNTF0sZGVjbGFyYXRpb25zOltQTCxNTF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhTTCx7ZGVjbGFyYXRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuW1BMLE1MXX0saW1wb3J0czpmdW5jdGlvbigpe3JldHVybltmTCxyeCxORixnTF19LGV4cG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bUEwsTUxdfX0pO2NvbnN0IERMPVsibWF0LWJ1dHRvbiIsIiJdLFJMPVsiKiJdLEVMPSIubWF0LWJ1dHRvbiAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtaWNvbi1idXR0b24gLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXtvcGFjaXR5OjB9Lm1hdC1idXR0b246aG92ZXI6bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKSAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtc3Ryb2tlZC1idXR0b246aG92ZXI6bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKSAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e29wYWNpdHk6LjA0fUBtZWRpYShob3Zlcjogbm9uZSl7Lm1hdC1idXR0b246aG92ZXI6bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKSAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtc3Ryb2tlZC1idXR0b246aG92ZXI6bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKSAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e29wYWNpdHk6MH19Lm1hdC1idXR0b24sLm1hdC1pY29uLWJ1dHRvbiwubWF0LXN0cm9rZWQtYnV0dG9uLC5tYXQtZmxhdC1idXR0b257Ym94LXNpemluZzpib3JkZXItYm94O3Bvc2l0aW9uOnJlbGF0aXZlOy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTtjdXJzb3I6cG9pbnRlcjtvdXRsaW5lOm5vbmU7Ym9yZGVyOm5vbmU7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O2Rpc3BsYXk6aW5saW5lLWJsb2NrO3doaXRlLXNwYWNlOm5vd3JhcDt0ZXh0LWRlY29yYXRpb246bm9uZTt2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZTt0ZXh0LWFsaWduOmNlbnRlcjttYXJnaW46MDttaW4td2lkdGg6NjRweDtsaW5lLWhlaWdodDozNnB4O3BhZGRpbmc6MCAxNnB4O2JvcmRlci1yYWRpdXM6NHB4O292ZXJmbG93OnZpc2libGV9Lm1hdC1idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsLm1hdC1pY29uLWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lciwubWF0LXN0cm9rZWQtYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLC5tYXQtZmxhdC1idXR0b246Oi1tb3otZm9jdXMtaW5uZXJ7Ym9yZGVyOjB9Lm1hdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LWljb24tYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtZmxhdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZHtjdXJzb3I6ZGVmYXVsdH0ubWF0LWJ1dHRvbi5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtYnV0dG9uLmNkay1wcm9ncmFtLWZvY3VzZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LWljb24tYnV0dG9uLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1pY29uLWJ1dHRvbi5jZGstcHJvZ3JhbS1mb2N1c2VkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1zdHJva2VkLWJ1dHRvbi5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtc3Ryb2tlZC1idXR0b24uY2RrLXByb2dyYW0tZm9jdXNlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtZmxhdC1idXR0b24uY2RrLWtleWJvYXJkLWZvY3VzZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LWZsYXQtYnV0dG9uLmNkay1wcm9ncmFtLWZvY3VzZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXtvcGFjaXR5Oi4xMn0ubWF0LWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lciwubWF0LWljb24tYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLC5tYXQtc3Ryb2tlZC1idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsLm1hdC1mbGF0LWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcntib3JkZXI6MH0ubWF0LXJhaXNlZC1idXR0b257Ym94LXNpemluZzpib3JkZXItYm94O3Bvc2l0aW9uOnJlbGF0aXZlOy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTtjdXJzb3I6cG9pbnRlcjtvdXRsaW5lOm5vbmU7Ym9yZGVyOm5vbmU7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O2Rpc3BsYXk6aW5saW5lLWJsb2NrO3doaXRlLXNwYWNlOm5vd3JhcDt0ZXh0LWRlY29yYXRpb246bm9uZTt2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZTt0ZXh0LWFsaWduOmNlbnRlcjttYXJnaW46MDttaW4td2lkdGg6NjRweDtsaW5lLWhlaWdodDozNnB4O3BhZGRpbmc6MCAxNnB4O2JvcmRlci1yYWRpdXM6NHB4O292ZXJmbG93OnZpc2libGU7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsIDAsIDApO3RyYW5zaXRpb246YmFja2dyb3VuZCA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKSxib3gtc2hhZG93IDI4MG1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSl9Lm1hdC1yYWlzZWQtYnV0dG9uOjotbW96LWZvY3VzLWlubmVye2JvcmRlcjowfS5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVke2N1cnNvcjpkZWZhdWx0fS5tYXQtcmFpc2VkLWJ1dHRvbi5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtcmFpc2VkLWJ1dHRvbi5jZGstcHJvZ3JhbS1mb2N1c2VkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXl7b3BhY2l0eTouMTJ9Lm1hdC1yYWlzZWQtYnV0dG9uOjotbW96LWZvY3VzLWlubmVye2JvcmRlcjowfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZS5tYXQtcmFpc2VkLWJ1dHRvbnt0cmFuc2l0aW9uOm5vbmU7YW5pbWF0aW9uOm5vbmV9Lm1hdC1zdHJva2VkLWJ1dHRvbntib3JkZXI6MXB4IHNvbGlkIGN1cnJlbnRDb2xvcjtwYWRkaW5nOjAgMTVweDtsaW5lLWhlaWdodDozNHB4fS5tYXQtc3Ryb2tlZC1idXR0b24gLm1hdC1idXR0b24tcmlwcGxlLm1hdC1yaXBwbGUsLm1hdC1zdHJva2VkLWJ1dHRvbiAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e3RvcDotMXB4O2xlZnQ6LTFweDtyaWdodDotMXB4O2JvdHRvbTotMXB4fS5tYXQtZmFie2JveC1zaXppbmc6Ym9yZGVyLWJveDtwb3NpdGlvbjpyZWxhdGl2ZTstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7Y3Vyc29yOnBvaW50ZXI7b3V0bGluZTpub25lO2JvcmRlcjpub25lOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDtkaXNwbGF5OmlubGluZS1ibG9jazt3aGl0ZS1zcGFjZTpub3dyYXA7dGV4dC1kZWNvcmF0aW9uOm5vbmU7dmVydGljYWwtYWxpZ246YmFzZWxpbmU7dGV4dC1hbGlnbjpjZW50ZXI7bWFyZ2luOjA7bWluLXdpZHRoOjY0cHg7bGluZS1oZWlnaHQ6MzZweDtwYWRkaW5nOjAgMTZweDtib3JkZXItcmFkaXVzOjRweDtvdmVyZmxvdzp2aXNpYmxlO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLCAwLCAwKTt0cmFuc2l0aW9uOmJhY2tncm91bmQgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSksYm94LXNoYWRvdyAyODBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO21pbi13aWR0aDowO2JvcmRlci1yYWRpdXM6NTAlO3dpZHRoOjU2cHg7aGVpZ2h0OjU2cHg7cGFkZGluZzowO2ZsZXgtc2hyaW5rOjB9Lm1hdC1mYWI6Oi1tb3otZm9jdXMtaW5uZXJ7Ym9yZGVyOjB9Lm1hdC1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZHtjdXJzb3I6ZGVmYXVsdH0ubWF0LWZhYi5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtZmFiLmNkay1wcm9ncmFtLWZvY3VzZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXtvcGFjaXR5Oi4xMn0ubWF0LWZhYjo6LW1vei1mb2N1cy1pbm5lcntib3JkZXI6MH0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LWZhYnt0cmFuc2l0aW9uOm5vbmU7YW5pbWF0aW9uOm5vbmV9Lm1hdC1mYWIgLm1hdC1idXR0b24td3JhcHBlcntwYWRkaW5nOjE2cHggMDtkaXNwbGF5OmlubGluZS1ibG9jaztsaW5lLWhlaWdodDoyNHB4fS5tYXQtbWluaS1mYWJ7Ym94LXNpemluZzpib3JkZXItYm94O3Bvc2l0aW9uOnJlbGF0aXZlOy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTtjdXJzb3I6cG9pbnRlcjtvdXRsaW5lOm5vbmU7Ym9yZGVyOm5vbmU7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O2Rpc3BsYXk6aW5saW5lLWJsb2NrO3doaXRlLXNwYWNlOm5vd3JhcDt0ZXh0LWRlY29yYXRpb246bm9uZTt2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZTt0ZXh0LWFsaWduOmNlbnRlcjttYXJnaW46MDttaW4td2lkdGg6NjRweDtsaW5lLWhlaWdodDozNnB4O3BhZGRpbmc6MCAxNnB4O2JvcmRlci1yYWRpdXM6NHB4O292ZXJmbG93OnZpc2libGU7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsIDAsIDApO3RyYW5zaXRpb246YmFja2dyb3VuZCA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKSxib3gtc2hhZG93IDI4MG1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7bWluLXdpZHRoOjA7Ym9yZGVyLXJhZGl1czo1MCU7d2lkdGg6NDBweDtoZWlnaHQ6NDBweDtwYWRkaW5nOjA7ZmxleC1zaHJpbms6MH0ubWF0LW1pbmktZmFiOjotbW96LWZvY3VzLWlubmVye2JvcmRlcjowfS5tYXQtbWluaS1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZHtjdXJzb3I6ZGVmYXVsdH0ubWF0LW1pbmktZmFiLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1taW5pLWZhYi5jZGstcHJvZ3JhbS1mb2N1c2VkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXl7b3BhY2l0eTouMTJ9Lm1hdC1taW5pLWZhYjo6LW1vei1mb2N1cy1pbm5lcntib3JkZXI6MH0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LW1pbmktZmFie3RyYW5zaXRpb246bm9uZTthbmltYXRpb246bm9uZX0ubWF0LW1pbmktZmFiIC5tYXQtYnV0dG9uLXdyYXBwZXJ7cGFkZGluZzo4cHggMDtkaXNwbGF5OmlubGluZS1ibG9jaztsaW5lLWhlaWdodDoyNHB4fS5tYXQtaWNvbi1idXR0b257cGFkZGluZzowO21pbi13aWR0aDowO3dpZHRoOjQwcHg7aGVpZ2h0OjQwcHg7ZmxleC1zaHJpbms6MDtsaW5lLWhlaWdodDo0MHB4O2JvcmRlci1yYWRpdXM6NTAlfS5tYXQtaWNvbi1idXR0b24gaSwubWF0LWljb24tYnV0dG9uIC5tYXQtaWNvbntsaW5lLWhlaWdodDoyNHB4fS5tYXQtYnV0dG9uLXJpcHBsZS5tYXQtcmlwcGxlLC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXl7dG9wOjA7bGVmdDowO3JpZ2h0OjA7Ym90dG9tOjA7cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6bm9uZTtib3JkZXItcmFkaXVzOmluaGVyaXR9Lm1hdC1idXR0b24tcmlwcGxlLm1hdC1yaXBwbGU6bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXtvcGFjaXR5OjA7dHJhbnNpdGlvbjpvcGFjaXR5IDIwMG1zIGN1YmljLWJlemllcigwLjM1LCAwLCAwLjI1LCAxKSxiYWNrZ3JvdW5kLWNvbG9yIDIwMG1zIGN1YmljLWJlemllcigwLjM1LCAwLCAwLjI1LCAxKX0uX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXt0cmFuc2l0aW9uOm5vbmV9Lm1hdC1idXR0b24tcmlwcGxlLXJvdW5ke2JvcmRlci1yYWRpdXM6NTAlO3otaW5kZXg6MX0ubWF0LWJ1dHRvbiAubWF0LWJ1dHRvbi13cmFwcGVyPiosLm1hdC1mbGF0LWJ1dHRvbiAubWF0LWJ1dHRvbi13cmFwcGVyPiosLm1hdC1zdHJva2VkLWJ1dHRvbiAubWF0LWJ1dHRvbi13cmFwcGVyPiosLm1hdC1yYWlzZWQtYnV0dG9uIC5tYXQtYnV0dG9uLXdyYXBwZXI+KiwubWF0LWljb24tYnV0dG9uIC5tYXQtYnV0dG9uLXdyYXBwZXI+KiwubWF0LWZhYiAubWF0LWJ1dHRvbi13cmFwcGVyPiosLm1hdC1taW5pLWZhYiAubWF0LWJ1dHRvbi13cmFwcGVyPip7dmVydGljYWwtYWxpZ246bWlkZGxlfS5tYXQtZm9ybS1maWVsZDpub3QoLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5KSAubWF0LWZvcm0tZmllbGQtcHJlZml4IC5tYXQtaWNvbi1idXR0b24sLm1hdC1mb3JtLWZpZWxkOm5vdCgubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kpIC5tYXQtZm9ybS1maWVsZC1zdWZmaXggLm1hdC1pY29uLWJ1dHRvbntkaXNwbGF5OmlubGluZS1mbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO2ZvbnQtc2l6ZTppbmhlcml0O3dpZHRoOjIuNWVtO2hlaWdodDoyLjVlbX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtYnV0dG9uLC5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1mbGF0LWJ1dHRvbiwuY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtcmFpc2VkLWJ1dHRvbiwuY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtaWNvbi1idXR0b24sLmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWZhYiwuY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtbWluaS1mYWJ7b3V0bGluZTpzb2xpZCAxcHh9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWJ1dHRvbi1iYXNlLmNkay1rZXlib2FyZC1mb2N1c2VkLC5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1idXR0b24tYmFzZS5jZGstcHJvZ3JhbS1mb2N1c2Vke291dGxpbmU6c29saWQgM3B4fVxuIixBTD1bIm1hdC1idXR0b24iLCJtYXQtZmxhdC1idXR0b24iLCJtYXQtaWNvbi1idXR0b24iLCJtYXQtcmFpc2VkLWJ1dHRvbiIsIm1hdC1zdHJva2VkLWJ1dHRvbiIsIm1hdC1taW5pLWZhYiIsIm1hdC1mYWIiXSxUTD1JRih6RihIRihjbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLl9lbGVtZW50UmVmPXR9fSkpKTtjbGFzcyBOTCBleHRlbmRzIFRMe2NvbnN0cnVjdG9yKHQsZSxuKXtzdXBlcih0KSx0aGlzLl9mb2N1c01vbml0b3I9ZSx0aGlzLl9hbmltYXRpb25Nb2RlPW4sdGhpcy5pc1JvdW5kQnV0dG9uPXRoaXMuX2hhc0hvc3RBdHRyaWJ1dGVzKCJtYXQtZmFiIiwibWF0LW1pbmktZmFiIiksdGhpcy5pc0ljb25CdXR0b249dGhpcy5faGFzSG9zdEF0dHJpYnV0ZXMoIm1hdC1pY29uLWJ1dHRvbiIpO2Zvcihjb25zdCB0IG9mIEFMKXRoaXMuX2hhc0hvc3RBdHRyaWJ1dGVzKHQpJiZ0aGlzLl9nZXRIb3N0RWxlbWVudCgpLmNsYXNzTGlzdC5hZGQodCk7dC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoIm1hdC1idXR0b24tYmFzZSIpLHRoaXMuaXNSb3VuZEJ1dHRvbiYmKHRoaXMuY29sb3I9ImFjY2VudCIpfW5nQWZ0ZXJWaWV3SW5pdCgpe3RoaXMuX2ZvY3VzTW9uaXRvci5tb25pdG9yKHRoaXMuX2VsZW1lbnRSZWYsITApfW5nT25EZXN0cm95KCl7dGhpcy5fZm9jdXNNb25pdG9yLnN0b3BNb25pdG9yaW5nKHRoaXMuX2VsZW1lbnRSZWYpfWZvY3VzKHQsZSl7dD90aGlzLl9mb2N1c01vbml0b3IuZm9jdXNWaWEodGhpcy5fZ2V0SG9zdEVsZW1lbnQoKSx0LGUpOnRoaXMuX2dldEhvc3RFbGVtZW50KCkuZm9jdXMoZSl9X2dldEhvc3RFbGVtZW50KCl7cmV0dXJuIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudH1faXNSaXBwbGVEaXNhYmxlZCgpe3JldHVybiB0aGlzLmRpc2FibGVSaXBwbGV8fHRoaXMuZGlzYWJsZWR9X2hhc0hvc3RBdHRyaWJ1dGVzKC4uLnQpe3JldHVybiB0LnNvbWUoKHQ9PnRoaXMuX2dldEhvc3RFbGVtZW50KCkuaGFzQXR0cmlidXRlKHQpKSl9fU5MLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxOTCkoZ2YoS2gpLGdmKGZGKSxnZihjayw4KSl9LE5MLsm1Y21wPXNvKHt0eXBlOk5MLHNlbGVjdG9yczpbWyJidXR0b24iLCJtYXQtYnV0dG9uIiwiIl0sWyJidXR0b24iLCJtYXQtcmFpc2VkLWJ1dHRvbiIsIiJdLFsiYnV0dG9uIiwibWF0LWljb24tYnV0dG9uIiwiIl0sWyJidXR0b24iLCJtYXQtZmFiIiwiIl0sWyJidXR0b24iLCJtYXQtbWluaS1mYWIiLCIiXSxbImJ1dHRvbiIsIm1hdC1zdHJva2VkLWJ1dHRvbiIsIiJdLFsiYnV0dG9uIiwibWF0LWZsYXQtYnV0dG9uIiwiIl1dLHZpZXdRdWVyeTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiZWeShtTCw1KSwyJmUpe2xldCB0O0J5KHQ9VXkoKSkmJihuLnJpcHBsZT10LmZpcnN0KX19LGhvc3RBdHRyczpbMSwibWF0LWZvY3VzLWluZGljYXRvciJdLGhvc3RWYXJzOjUsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsyJmUmJih5bSgiZGlzYWJsZWQiLG4uZGlzYWJsZWR8fG51bGwpLGN1KCJfbWF0LWFuaW1hdGlvbi1ub29wYWJsZSIsIk5vb3BBbmltYXRpb25zIj09PW4uX2FuaW1hdGlvbk1vZGUpKCJtYXQtYnV0dG9uLWRpc2FibGVkIixuLmRpc2FibGVkKSl9LGlucHV0czp7ZGlzYWJsZWQ6ImRpc2FibGVkIixkaXNhYmxlUmlwcGxlOiJkaXNhYmxlUmlwcGxlIixjb2xvcjoiY29sb3IifSxleHBvcnRBczpbIm1hdEJ1dHRvbiJdLGZlYXR1cmVzOltRcF0sYXR0cnM6REwsbmdDb250ZW50U2VsZWN0b3JzOlJMLGRlY2xzOjQsdmFyczo1LGNvbnN0czpbWzEsIm1hdC1idXR0b24td3JhcHBlciJdLFsibWF0UmlwcGxlIiwiIiwxLCJtYXQtYnV0dG9uLXJpcHBsZSIsMywibWF0UmlwcGxlRGlzYWJsZWQiLCJtYXRSaXBwbGVDZW50ZXJlZCIsIm1hdFJpcHBsZVRyaWdnZXIiXSxbMSwibWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5Il1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihIZigpLENmKDAsInNwYW4iLDApLEZmKDEpLE1mKCksdmYoMiwic3BhbiIsMSksdmYoMywic3BhbiIsMikpLDImZSYmKERjKDIpLGN1KCJtYXQtYnV0dG9uLXJpcHBsZS1yb3VuZCIsbi5pc1JvdW5kQnV0dG9ufHxuLmlzSWNvbkJ1dHRvbiksYmYoIm1hdFJpcHBsZURpc2FibGVkIixuLl9pc1JpcHBsZURpc2FibGVkKCkpKCJtYXRSaXBwbGVDZW50ZXJlZCIsbi5pc0ljb25CdXR0b24pKCJtYXRSaXBwbGVUcmlnZ2VyIixuLl9nZXRIb3N0RWxlbWVudCgpKSl9LGRpcmVjdGl2ZXM6W21MXSxzdHlsZXM6W0VMXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSxOTC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOktofSx7dHlwZTpmRn0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltja119XX1dLE5MLnByb3BEZWNvcmF0b3JzPXtyaXBwbGU6W3t0eXBlOmFyLGFyZ3M6W21MXX1dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKE5MLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6ImJ1dHRvblttYXQtYnV0dG9uXSwgYnV0dG9uW21hdC1yYWlzZWQtYnV0dG9uXSwgYnV0dG9uW21hdC1pY29uLWJ1dHRvbl0sXG4gICAgICAgICAgICAgYnV0dG9uW21hdC1mYWJdLCBidXR0b25bbWF0LW1pbmktZmFiXSwgYnV0dG9uW21hdC1zdHJva2VkLWJ1dHRvbl0sXG4gICAgICAgICAgICAgYnV0dG9uW21hdC1mbGF0LWJ1dHRvbl0iLGV4cG9ydEFzOiJtYXRCdXR0b24iLGhvc3Q6eyJbYXR0ci5kaXNhYmxlZF0iOiJkaXNhYmxlZCB8fCBudWxsIiwiW2NsYXNzLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlXSI6J19hbmltYXRpb25Nb2RlID09PSAiTm9vcEFuaW1hdGlvbnMiJywiW2NsYXNzLm1hdC1idXR0b24tZGlzYWJsZWRdIjoiZGlzYWJsZWQiLGNsYXNzOiJtYXQtZm9jdXMtaW5kaWNhdG9yIn0sdGVtcGxhdGU6JzxzcGFuIGNsYXNzPSJtYXQtYnV0dG9uLXdyYXBwZXIiPjxuZy1jb250ZW50PjwvbmctY29udGVudD48L3NwYW4+XG48c3BhbiBtYXRSaXBwbGUgY2xhc3M9Im1hdC1idXR0b24tcmlwcGxlIlxuICAgICAgW2NsYXNzLm1hdC1idXR0b24tcmlwcGxlLXJvdW5kXT0iaXNSb3VuZEJ1dHRvbiB8fCBpc0ljb25CdXR0b24iXG4gICAgICBbbWF0UmlwcGxlRGlzYWJsZWRdPSJfaXNSaXBwbGVEaXNhYmxlZCgpIlxuICAgICAgW21hdFJpcHBsZUNlbnRlcmVkXT0iaXNJY29uQnV0dG9uIlxuICAgICAgW21hdFJpcHBsZVRyaWdnZXJdPSJfZ2V0SG9zdEVsZW1lbnQoKSI+PC9zcGFuPlxuPHNwYW4gY2xhc3M9Im1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSI+PC9zcGFuPlxuJyxpbnB1dHM6WyJkaXNhYmxlZCIsImRpc2FibGVSaXBwbGUiLCJjb2xvciJdLGVuY2Fwc3VsYXRpb246V24uTm9uZSxjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNoLHN0eWxlczpbIi5tYXQtYnV0dG9uIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1pY29uLWJ1dHRvbiAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e29wYWNpdHk6MH0ubWF0LWJ1dHRvbjpob3Zlcjpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1zdHJva2VkLWJ1dHRvbjpob3Zlcjpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXl7b3BhY2l0eTouMDR9QG1lZGlhKGhvdmVyOiBub25lKXsubWF0LWJ1dHRvbjpob3Zlcjpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1zdHJva2VkLWJ1dHRvbjpob3Zlcjpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXl7b3BhY2l0eTowfX0ubWF0LWJ1dHRvbiwubWF0LWljb24tYnV0dG9uLC5tYXQtc3Ryb2tlZC1idXR0b24sLm1hdC1mbGF0LWJ1dHRvbntib3gtc2l6aW5nOmJvcmRlci1ib3g7cG9zaXRpb246cmVsYXRpdmU7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO2N1cnNvcjpwb2ludGVyO291dGxpbmU6bm9uZTtib3JkZXI6bm9uZTstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2hpdGUtc3BhY2U6bm93cmFwO3RleHQtZGVjb3JhdGlvbjpub25lO3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lO3RleHQtYWxpZ246Y2VudGVyO21hcmdpbjowO21pbi13aWR0aDo2NHB4O2xpbmUtaGVpZ2h0OjM2cHg7cGFkZGluZzowIDE2cHg7Ym9yZGVyLXJhZGl1czo0cHg7b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lciwubWF0LWljb24tYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLC5tYXQtc3Ryb2tlZC1idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsLm1hdC1mbGF0LWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcntib3JkZXI6MH0ubWF0LWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtaWNvbi1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1mbGF0LWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVke2N1cnNvcjpkZWZhdWx0fS5tYXQtYnV0dG9uLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1idXR0b24uY2RrLXByb2dyYW0tZm9jdXNlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtaWNvbi1idXR0b24uY2RrLWtleWJvYXJkLWZvY3VzZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LWljb24tYnV0dG9uLmNkay1wcm9ncmFtLWZvY3VzZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LXN0cm9rZWQtYnV0dG9uLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1zdHJva2VkLWJ1dHRvbi5jZGstcHJvZ3JhbS1mb2N1c2VkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1mbGF0LWJ1dHRvbi5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtZmxhdC1idXR0b24uY2RrLXByb2dyYW0tZm9jdXNlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e29wYWNpdHk6LjEyfS5tYXQtYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLC5tYXQtaWNvbi1idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsLm1hdC1zdHJva2VkLWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lciwubWF0LWZsYXQtYnV0dG9uOjotbW96LWZvY3VzLWlubmVye2JvcmRlcjowfS5tYXQtcmFpc2VkLWJ1dHRvbntib3gtc2l6aW5nOmJvcmRlci1ib3g7cG9zaXRpb246cmVsYXRpdmU7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO2N1cnNvcjpwb2ludGVyO291dGxpbmU6bm9uZTtib3JkZXI6bm9uZTstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2hpdGUtc3BhY2U6bm93cmFwO3RleHQtZGVjb3JhdGlvbjpub25lO3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lO3RleHQtYWxpZ246Y2VudGVyO21hcmdpbjowO21pbi13aWR0aDo2NHB4O2xpbmUtaGVpZ2h0OjM2cHg7cGFkZGluZzowIDE2cHg7Ym9yZGVyLXJhZGl1czo0cHg7b3ZlcmZsb3c6dmlzaWJsZTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwgMCwgMCk7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kIDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpLGJveC1zaGFkb3cgMjgwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKX0ubWF0LXJhaXNlZC1idXR0b246Oi1tb3otZm9jdXMtaW5uZXJ7Ym9yZGVyOjB9Lm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWR7Y3Vyc29yOmRlZmF1bHR9Lm1hdC1yYWlzZWQtYnV0dG9uLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1yYWlzZWQtYnV0dG9uLmNkay1wcm9ncmFtLWZvY3VzZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXtvcGFjaXR5Oi4xMn0ubWF0LXJhaXNlZC1idXR0b246Oi1tb3otZm9jdXMtaW5uZXJ7Ym9yZGVyOjB9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlLm1hdC1yYWlzZWQtYnV0dG9ue3RyYW5zaXRpb246bm9uZTthbmltYXRpb246bm9uZX0ubWF0LXN0cm9rZWQtYnV0dG9ue2JvcmRlcjoxcHggc29saWQgY3VycmVudENvbG9yO3BhZGRpbmc6MCAxNXB4O2xpbmUtaGVpZ2h0OjM0cHh9Lm1hdC1zdHJva2VkLWJ1dHRvbiAubWF0LWJ1dHRvbi1yaXBwbGUubWF0LXJpcHBsZSwubWF0LXN0cm9rZWQtYnV0dG9uIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXl7dG9wOi0xcHg7bGVmdDotMXB4O3JpZ2h0Oi0xcHg7Ym90dG9tOi0xcHh9Lm1hdC1mYWJ7Ym94LXNpemluZzpib3JkZXItYm94O3Bvc2l0aW9uOnJlbGF0aXZlOy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTtjdXJzb3I6cG9pbnRlcjtvdXRsaW5lOm5vbmU7Ym9yZGVyOm5vbmU7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O2Rpc3BsYXk6aW5saW5lLWJsb2NrO3doaXRlLXNwYWNlOm5vd3JhcDt0ZXh0LWRlY29yYXRpb246bm9uZTt2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZTt0ZXh0LWFsaWduOmNlbnRlcjttYXJnaW46MDttaW4td2lkdGg6NjRweDtsaW5lLWhlaWdodDozNnB4O3BhZGRpbmc6MCAxNnB4O2JvcmRlci1yYWRpdXM6NHB4O292ZXJmbG93OnZpc2libGU7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsIDAsIDApO3RyYW5zaXRpb246YmFja2dyb3VuZCA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKSxib3gtc2hhZG93IDI4MG1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7bWluLXdpZHRoOjA7Ym9yZGVyLXJhZGl1czo1MCU7d2lkdGg6NTZweDtoZWlnaHQ6NTZweDtwYWRkaW5nOjA7ZmxleC1zaHJpbms6MH0ubWF0LWZhYjo6LW1vei1mb2N1cy1pbm5lcntib3JkZXI6MH0ubWF0LWZhYi5tYXQtYnV0dG9uLWRpc2FibGVke2N1cnNvcjpkZWZhdWx0fS5tYXQtZmFiLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1mYWIuY2RrLXByb2dyYW0tZm9jdXNlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e29wYWNpdHk6LjEyfS5tYXQtZmFiOjotbW96LWZvY3VzLWlubmVye2JvcmRlcjowfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZS5tYXQtZmFie3RyYW5zaXRpb246bm9uZTthbmltYXRpb246bm9uZX0ubWF0LWZhYiAubWF0LWJ1dHRvbi13cmFwcGVye3BhZGRpbmc6MTZweCAwO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1taW5pLWZhYntib3gtc2l6aW5nOmJvcmRlci1ib3g7cG9zaXRpb246cmVsYXRpdmU7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO2N1cnNvcjpwb2ludGVyO291dGxpbmU6bm9uZTtib3JkZXI6bm9uZTstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2hpdGUtc3BhY2U6bm93cmFwO3RleHQtZGVjb3JhdGlvbjpub25lO3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lO3RleHQtYWxpZ246Y2VudGVyO21hcmdpbjowO21pbi13aWR0aDo2NHB4O2xpbmUtaGVpZ2h0OjM2cHg7cGFkZGluZzowIDE2cHg7Ym9yZGVyLXJhZGl1czo0cHg7b3ZlcmZsb3c6dmlzaWJsZTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwgMCwgMCk7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kIDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpLGJveC1zaGFkb3cgMjgwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTttaW4td2lkdGg6MDtib3JkZXItcmFkaXVzOjUwJTt3aWR0aDo0MHB4O2hlaWdodDo0MHB4O3BhZGRpbmc6MDtmbGV4LXNocmluazowfS5tYXQtbWluaS1mYWI6Oi1tb3otZm9jdXMtaW5uZXJ7Ym9yZGVyOjB9Lm1hdC1taW5pLWZhYi5tYXQtYnV0dG9uLWRpc2FibGVke2N1cnNvcjpkZWZhdWx0fS5tYXQtbWluaS1mYWIuY2RrLWtleWJvYXJkLWZvY3VzZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LW1pbmktZmFiLmNkay1wcm9ncmFtLWZvY3VzZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXtvcGFjaXR5Oi4xMn0ubWF0LW1pbmktZmFiOjotbW96LWZvY3VzLWlubmVye2JvcmRlcjowfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZS5tYXQtbWluaS1mYWJ7dHJhbnNpdGlvbjpub25lO2FuaW1hdGlvbjpub25lfS5tYXQtbWluaS1mYWIgLm1hdC1idXR0b24td3JhcHBlcntwYWRkaW5nOjhweCAwO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1pY29uLWJ1dHRvbntwYWRkaW5nOjA7bWluLXdpZHRoOjA7d2lkdGg6NDBweDtoZWlnaHQ6NDBweDtmbGV4LXNocmluazowO2xpbmUtaGVpZ2h0OjQwcHg7Ym9yZGVyLXJhZGl1czo1MCV9Lm1hdC1pY29uLWJ1dHRvbiBpLC5tYXQtaWNvbi1idXR0b24gLm1hdC1pY29ue2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1idXR0b24tcmlwcGxlLm1hdC1yaXBwbGUsLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXt0b3A6MDtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MDtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czpub25lO2JvcmRlci1yYWRpdXM6aW5oZXJpdH0ubWF0LWJ1dHRvbi1yaXBwbGUubWF0LXJpcHBsZTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e29wYWNpdHk6MDt0cmFuc2l0aW9uOm9wYWNpdHkgMjAwbXMgY3ViaWMtYmV6aWVyKDAuMzUsIDAsIDAuMjUsIDEpLGJhY2tncm91bmQtY29sb3IgMjAwbXMgY3ViaWMtYmV6aWVyKDAuMzUsIDAsIDAuMjUsIDEpfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e3RyYW5zaXRpb246bm9uZX0ubWF0LWJ1dHRvbi1yaXBwbGUtcm91bmR7Ym9yZGVyLXJhZGl1czo1MCU7ei1pbmRleDoxfS5tYXQtYnV0dG9uIC5tYXQtYnV0dG9uLXdyYXBwZXI+KiwubWF0LWZsYXQtYnV0dG9uIC5tYXQtYnV0dG9uLXdyYXBwZXI+KiwubWF0LXN0cm9rZWQtYnV0dG9uIC5tYXQtYnV0dG9uLXdyYXBwZXI+KiwubWF0LXJhaXNlZC1idXR0b24gLm1hdC1idXR0b24td3JhcHBlcj4qLC5tYXQtaWNvbi1idXR0b24gLm1hdC1idXR0b24td3JhcHBlcj4qLC5tYXQtZmFiIC5tYXQtYnV0dG9uLXdyYXBwZXI+KiwubWF0LW1pbmktZmFiIC5tYXQtYnV0dG9uLXdyYXBwZXI+Knt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9Lm1hdC1mb3JtLWZpZWxkOm5vdCgubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kpIC5tYXQtZm9ybS1maWVsZC1wcmVmaXggLm1hdC1pY29uLWJ1dHRvbiwubWF0LWZvcm0tZmllbGQ6bm90KC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSkgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeCAubWF0LWljb24tYnV0dG9ue2Rpc3BsYXk6aW5saW5lLWZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7Zm9udC1zaXplOmluaGVyaXQ7d2lkdGg6Mi41ZW07aGVpZ2h0OjIuNWVtfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1idXR0b24sLmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWZsYXQtYnV0dG9uLC5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1yYWlzZWQtYnV0dG9uLC5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1pY29uLWJ1dHRvbiwuY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtZmFiLC5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1taW5pLWZhYntvdXRsaW5lOnNvbGlkIDFweH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtYnV0dG9uLWJhc2UuY2RrLWtleWJvYXJkLWZvY3VzZWQsLmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWJ1dHRvbi1iYXNlLmNkay1wcm9ncmFtLWZvY3VzZWR7b3V0bGluZTpzb2xpZCAzcHh9XG4iXX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOktofSx7dHlwZTpmRn0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltja119XX1dfSkse3JpcHBsZTpbe3R5cGU6YXIsYXJnczpbbUxdfV19KTtjbGFzcyB6TCBleHRlbmRzIE5Me2NvbnN0cnVjdG9yKHQsZSxuKXtzdXBlcihlLHQsbil9X2hhbHREaXNhYmxlZEV2ZW50cyh0KXt0aGlzLmRpc2FibGVkJiYodC5wcmV2ZW50RGVmYXVsdCgpLHQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCkpfX16TC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8ekwpKGdmKGZGKSxnZihLaCksZ2YoY2ssOCkpfSx6TC7JtWNtcD1zbyh7dHlwZTp6TCxzZWxlY3RvcnM6W1siYSIsIm1hdC1idXR0b24iLCIiXSxbImEiLCJtYXQtcmFpc2VkLWJ1dHRvbiIsIiJdLFsiYSIsIm1hdC1pY29uLWJ1dHRvbiIsIiJdLFsiYSIsIm1hdC1mYWIiLCIiXSxbImEiLCJtYXQtbWluaS1mYWIiLCIiXSxbImEiLCJtYXQtc3Ryb2tlZC1idXR0b24iLCIiXSxbImEiLCJtYXQtZmxhdC1idXR0b24iLCIiXV0saG9zdEF0dHJzOlsxLCJtYXQtZm9jdXMtaW5kaWNhdG9yIl0saG9zdFZhcnM6Nyxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezEmZSYmUmYoImNsaWNrIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5faGFsdERpc2FibGVkRXZlbnRzKGUpfSkpLDImZSYmKHltKCJ0YWJpbmRleCIsbi5kaXNhYmxlZD8tMTpuLnRhYkluZGV4fHwwKSgiZGlzYWJsZWQiLG4uZGlzYWJsZWR8fG51bGwpKCJhcmlhLWRpc2FibGVkIixuLmRpc2FibGVkLnRvU3RyaW5nKCkpLGN1KCJfbWF0LWFuaW1hdGlvbi1ub29wYWJsZSIsIk5vb3BBbmltYXRpb25zIj09PW4uX2FuaW1hdGlvbk1vZGUpKCJtYXQtYnV0dG9uLWRpc2FibGVkIixuLmRpc2FibGVkKSl9LGlucHV0czp7ZGlzYWJsZWQ6ImRpc2FibGVkIixkaXNhYmxlUmlwcGxlOiJkaXNhYmxlUmlwcGxlIixjb2xvcjoiY29sb3IiLHRhYkluZGV4OiJ0YWJJbmRleCJ9LGV4cG9ydEFzOlsibWF0QnV0dG9uIiwibWF0QW5jaG9yIl0sZmVhdHVyZXM6W1FwXSxhdHRyczpETCxuZ0NvbnRlbnRTZWxlY3RvcnM6UkwsZGVjbHM6NCx2YXJzOjUsY29uc3RzOltbMSwibWF0LWJ1dHRvbi13cmFwcGVyIl0sWyJtYXRSaXBwbGUiLCIiLDEsIm1hdC1idXR0b24tcmlwcGxlIiwzLCJtYXRSaXBwbGVEaXNhYmxlZCIsIm1hdFJpcHBsZUNlbnRlcmVkIiwibWF0UmlwcGxlVHJpZ2dlciJdLFsxLCJtYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXkiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKEhmKCksQ2YoMCwic3BhbiIsMCksRmYoMSksTWYoKSx2ZigyLCJzcGFuIiwxKSx2ZigzLCJzcGFuIiwyKSksMiZlJiYoRGMoMiksY3UoIm1hdC1idXR0b24tcmlwcGxlLXJvdW5kIixuLmlzUm91bmRCdXR0b258fG4uaXNJY29uQnV0dG9uKSxiZigibWF0UmlwcGxlRGlzYWJsZWQiLG4uX2lzUmlwcGxlRGlzYWJsZWQoKSkoIm1hdFJpcHBsZUNlbnRlcmVkIixuLmlzSWNvbkJ1dHRvbikoIm1hdFJpcHBsZVRyaWdnZXIiLG4uX2dldEhvc3RFbGVtZW50KCkpKX0sZGlyZWN0aXZlczpbbUxdLHN0eWxlczpbRUxdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLHpMLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6ZkZ9LHt0eXBlOktofSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W2NrXX1dfV0sekwucHJvcERlY29yYXRvcnM9e3RhYkluZGV4Olt7dHlwZTpSX31dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHpMLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6ImFbbWF0LWJ1dHRvbl0sIGFbbWF0LXJhaXNlZC1idXR0b25dLCBhW21hdC1pY29uLWJ1dHRvbl0sIGFbbWF0LWZhYl0sXG4gICAgICAgICAgICAgYVttYXQtbWluaS1mYWJdLCBhW21hdC1zdHJva2VkLWJ1dHRvbl0sIGFbbWF0LWZsYXQtYnV0dG9uXSIsZXhwb3J0QXM6Im1hdEJ1dHRvbiwgbWF0QW5jaG9yIixob3N0OnsiW2F0dHIudGFiaW5kZXhdIjoiZGlzYWJsZWQgPyAtMSA6ICh0YWJJbmRleCB8fCAwKSIsIlthdHRyLmRpc2FibGVkXSI6ImRpc2FibGVkIHx8IG51bGwiLCJbYXR0ci5hcmlhLWRpc2FibGVkXSI6ImRpc2FibGVkLnRvU3RyaW5nKCkiLCIoY2xpY2spIjoiX2hhbHREaXNhYmxlZEV2ZW50cygkZXZlbnQpIiwiW2NsYXNzLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlXSI6J19hbmltYXRpb25Nb2RlID09PSAiTm9vcEFuaW1hdGlvbnMiJywiW2NsYXNzLm1hdC1idXR0b24tZGlzYWJsZWRdIjoiZGlzYWJsZWQiLGNsYXNzOiJtYXQtZm9jdXMtaW5kaWNhdG9yIn0saW5wdXRzOlsiZGlzYWJsZWQiLCJkaXNhYmxlUmlwcGxlIiwiY29sb3IiXSx0ZW1wbGF0ZTonPHNwYW4gY2xhc3M9Im1hdC1idXR0b24td3JhcHBlciI+PG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50Pjwvc3Bhbj5cbjxzcGFuIG1hdFJpcHBsZSBjbGFzcz0ibWF0LWJ1dHRvbi1yaXBwbGUiXG4gICAgICBbY2xhc3MubWF0LWJ1dHRvbi1yaXBwbGUtcm91bmRdPSJpc1JvdW5kQnV0dG9uIHx8IGlzSWNvbkJ1dHRvbiJcbiAgICAgIFttYXRSaXBwbGVEaXNhYmxlZF09Il9pc1JpcHBsZURpc2FibGVkKCkiXG4gICAgICBbbWF0UmlwcGxlQ2VudGVyZWRdPSJpc0ljb25CdXR0b24iXG4gICAgICBbbWF0UmlwcGxlVHJpZ2dlcl09Il9nZXRIb3N0RWxlbWVudCgpIj48L3NwYW4+XG48c3BhbiBjbGFzcz0ibWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5Ij48L3NwYW4+XG4nLGVuY2Fwc3VsYXRpb246V24uTm9uZSxjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNoLHN0eWxlczpbIi5tYXQtYnV0dG9uIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1pY29uLWJ1dHRvbiAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e29wYWNpdHk6MH0ubWF0LWJ1dHRvbjpob3Zlcjpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1zdHJva2VkLWJ1dHRvbjpob3Zlcjpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXl7b3BhY2l0eTouMDR9QG1lZGlhKGhvdmVyOiBub25lKXsubWF0LWJ1dHRvbjpob3Zlcjpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1zdHJva2VkLWJ1dHRvbjpob3Zlcjpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXl7b3BhY2l0eTowfX0ubWF0LWJ1dHRvbiwubWF0LWljb24tYnV0dG9uLC5tYXQtc3Ryb2tlZC1idXR0b24sLm1hdC1mbGF0LWJ1dHRvbntib3gtc2l6aW5nOmJvcmRlci1ib3g7cG9zaXRpb246cmVsYXRpdmU7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO2N1cnNvcjpwb2ludGVyO291dGxpbmU6bm9uZTtib3JkZXI6bm9uZTstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2hpdGUtc3BhY2U6bm93cmFwO3RleHQtZGVjb3JhdGlvbjpub25lO3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lO3RleHQtYWxpZ246Y2VudGVyO21hcmdpbjowO21pbi13aWR0aDo2NHB4O2xpbmUtaGVpZ2h0OjM2cHg7cGFkZGluZzowIDE2cHg7Ym9yZGVyLXJhZGl1czo0cHg7b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lciwubWF0LWljb24tYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLC5tYXQtc3Ryb2tlZC1idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsLm1hdC1mbGF0LWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcntib3JkZXI6MH0ubWF0LWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtaWNvbi1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1mbGF0LWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVke2N1cnNvcjpkZWZhdWx0fS5tYXQtYnV0dG9uLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1idXR0b24uY2RrLXByb2dyYW0tZm9jdXNlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtaWNvbi1idXR0b24uY2RrLWtleWJvYXJkLWZvY3VzZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LWljb24tYnV0dG9uLmNkay1wcm9ncmFtLWZvY3VzZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LXN0cm9rZWQtYnV0dG9uLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1zdHJva2VkLWJ1dHRvbi5jZGstcHJvZ3JhbS1mb2N1c2VkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1mbGF0LWJ1dHRvbi5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtZmxhdC1idXR0b24uY2RrLXByb2dyYW0tZm9jdXNlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e29wYWNpdHk6LjEyfS5tYXQtYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLC5tYXQtaWNvbi1idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsLm1hdC1zdHJva2VkLWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lciwubWF0LWZsYXQtYnV0dG9uOjotbW96LWZvY3VzLWlubmVye2JvcmRlcjowfS5tYXQtcmFpc2VkLWJ1dHRvbntib3gtc2l6aW5nOmJvcmRlci1ib3g7cG9zaXRpb246cmVsYXRpdmU7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO2N1cnNvcjpwb2ludGVyO291dGxpbmU6bm9uZTtib3JkZXI6bm9uZTstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2hpdGUtc3BhY2U6bm93cmFwO3RleHQtZGVjb3JhdGlvbjpub25lO3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lO3RleHQtYWxpZ246Y2VudGVyO21hcmdpbjowO21pbi13aWR0aDo2NHB4O2xpbmUtaGVpZ2h0OjM2cHg7cGFkZGluZzowIDE2cHg7Ym9yZGVyLXJhZGl1czo0cHg7b3ZlcmZsb3c6dmlzaWJsZTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwgMCwgMCk7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kIDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpLGJveC1zaGFkb3cgMjgwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKX0ubWF0LXJhaXNlZC1idXR0b246Oi1tb3otZm9jdXMtaW5uZXJ7Ym9yZGVyOjB9Lm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWR7Y3Vyc29yOmRlZmF1bHR9Lm1hdC1yYWlzZWQtYnV0dG9uLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1yYWlzZWQtYnV0dG9uLmNkay1wcm9ncmFtLWZvY3VzZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXtvcGFjaXR5Oi4xMn0ubWF0LXJhaXNlZC1idXR0b246Oi1tb3otZm9jdXMtaW5uZXJ7Ym9yZGVyOjB9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlLm1hdC1yYWlzZWQtYnV0dG9ue3RyYW5zaXRpb246bm9uZTthbmltYXRpb246bm9uZX0ubWF0LXN0cm9rZWQtYnV0dG9ue2JvcmRlcjoxcHggc29saWQgY3VycmVudENvbG9yO3BhZGRpbmc6MCAxNXB4O2xpbmUtaGVpZ2h0OjM0cHh9Lm1hdC1zdHJva2VkLWJ1dHRvbiAubWF0LWJ1dHRvbi1yaXBwbGUubWF0LXJpcHBsZSwubWF0LXN0cm9rZWQtYnV0dG9uIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXl7dG9wOi0xcHg7bGVmdDotMXB4O3JpZ2h0Oi0xcHg7Ym90dG9tOi0xcHh9Lm1hdC1mYWJ7Ym94LXNpemluZzpib3JkZXItYm94O3Bvc2l0aW9uOnJlbGF0aXZlOy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTtjdXJzb3I6cG9pbnRlcjtvdXRsaW5lOm5vbmU7Ym9yZGVyOm5vbmU7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O2Rpc3BsYXk6aW5saW5lLWJsb2NrO3doaXRlLXNwYWNlOm5vd3JhcDt0ZXh0LWRlY29yYXRpb246bm9uZTt2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZTt0ZXh0LWFsaWduOmNlbnRlcjttYXJnaW46MDttaW4td2lkdGg6NjRweDtsaW5lLWhlaWdodDozNnB4O3BhZGRpbmc6MCAxNnB4O2JvcmRlci1yYWRpdXM6NHB4O292ZXJmbG93OnZpc2libGU7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsIDAsIDApO3RyYW5zaXRpb246YmFja2dyb3VuZCA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKSxib3gtc2hhZG93IDI4MG1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7bWluLXdpZHRoOjA7Ym9yZGVyLXJhZGl1czo1MCU7d2lkdGg6NTZweDtoZWlnaHQ6NTZweDtwYWRkaW5nOjA7ZmxleC1zaHJpbms6MH0ubWF0LWZhYjo6LW1vei1mb2N1cy1pbm5lcntib3JkZXI6MH0ubWF0LWZhYi5tYXQtYnV0dG9uLWRpc2FibGVke2N1cnNvcjpkZWZhdWx0fS5tYXQtZmFiLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1mYWIuY2RrLXByb2dyYW0tZm9jdXNlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e29wYWNpdHk6LjEyfS5tYXQtZmFiOjotbW96LWZvY3VzLWlubmVye2JvcmRlcjowfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZS5tYXQtZmFie3RyYW5zaXRpb246bm9uZTthbmltYXRpb246bm9uZX0ubWF0LWZhYiAubWF0LWJ1dHRvbi13cmFwcGVye3BhZGRpbmc6MTZweCAwO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1taW5pLWZhYntib3gtc2l6aW5nOmJvcmRlci1ib3g7cG9zaXRpb246cmVsYXRpdmU7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO2N1cnNvcjpwb2ludGVyO291dGxpbmU6bm9uZTtib3JkZXI6bm9uZTstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2hpdGUtc3BhY2U6bm93cmFwO3RleHQtZGVjb3JhdGlvbjpub25lO3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lO3RleHQtYWxpZ246Y2VudGVyO21hcmdpbjowO21pbi13aWR0aDo2NHB4O2xpbmUtaGVpZ2h0OjM2cHg7cGFkZGluZzowIDE2cHg7Ym9yZGVyLXJhZGl1czo0cHg7b3ZlcmZsb3c6dmlzaWJsZTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwgMCwgMCk7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kIDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpLGJveC1zaGFkb3cgMjgwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTttaW4td2lkdGg6MDtib3JkZXItcmFkaXVzOjUwJTt3aWR0aDo0MHB4O2hlaWdodDo0MHB4O3BhZGRpbmc6MDtmbGV4LXNocmluazowfS5tYXQtbWluaS1mYWI6Oi1tb3otZm9jdXMtaW5uZXJ7Ym9yZGVyOjB9Lm1hdC1taW5pLWZhYi5tYXQtYnV0dG9uLWRpc2FibGVke2N1cnNvcjpkZWZhdWx0fS5tYXQtbWluaS1mYWIuY2RrLWtleWJvYXJkLWZvY3VzZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LW1pbmktZmFiLmNkay1wcm9ncmFtLWZvY3VzZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXtvcGFjaXR5Oi4xMn0ubWF0LW1pbmktZmFiOjotbW96LWZvY3VzLWlubmVye2JvcmRlcjowfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZS5tYXQtbWluaS1mYWJ7dHJhbnNpdGlvbjpub25lO2FuaW1hdGlvbjpub25lfS5tYXQtbWluaS1mYWIgLm1hdC1idXR0b24td3JhcHBlcntwYWRkaW5nOjhweCAwO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1pY29uLWJ1dHRvbntwYWRkaW5nOjA7bWluLXdpZHRoOjA7d2lkdGg6NDBweDtoZWlnaHQ6NDBweDtmbGV4LXNocmluazowO2xpbmUtaGVpZ2h0OjQwcHg7Ym9yZGVyLXJhZGl1czo1MCV9Lm1hdC1pY29uLWJ1dHRvbiBpLC5tYXQtaWNvbi1idXR0b24gLm1hdC1pY29ue2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1idXR0b24tcmlwcGxlLm1hdC1yaXBwbGUsLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXt0b3A6MDtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MDtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czpub25lO2JvcmRlci1yYWRpdXM6aW5oZXJpdH0ubWF0LWJ1dHRvbi1yaXBwbGUubWF0LXJpcHBsZTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e29wYWNpdHk6MDt0cmFuc2l0aW9uOm9wYWNpdHkgMjAwbXMgY3ViaWMtYmV6aWVyKDAuMzUsIDAsIDAuMjUsIDEpLGJhY2tncm91bmQtY29sb3IgMjAwbXMgY3ViaWMtYmV6aWVyKDAuMzUsIDAsIDAuMjUsIDEpfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e3RyYW5zaXRpb246bm9uZX0ubWF0LWJ1dHRvbi1yaXBwbGUtcm91bmR7Ym9yZGVyLXJhZGl1czo1MCU7ei1pbmRleDoxfS5tYXQtYnV0dG9uIC5tYXQtYnV0dG9uLXdyYXBwZXI+KiwubWF0LWZsYXQtYnV0dG9uIC5tYXQtYnV0dG9uLXdyYXBwZXI+KiwubWF0LXN0cm9rZWQtYnV0dG9uIC5tYXQtYnV0dG9uLXdyYXBwZXI+KiwubWF0LXJhaXNlZC1idXR0b24gLm1hdC1idXR0b24td3JhcHBlcj4qLC5tYXQtaWNvbi1idXR0b24gLm1hdC1idXR0b24td3JhcHBlcj4qLC5tYXQtZmFiIC5tYXQtYnV0dG9uLXdyYXBwZXI+KiwubWF0LW1pbmktZmFiIC5tYXQtYnV0dG9uLXdyYXBwZXI+Knt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9Lm1hdC1mb3JtLWZpZWxkOm5vdCgubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kpIC5tYXQtZm9ybS1maWVsZC1wcmVmaXggLm1hdC1pY29uLWJ1dHRvbiwubWF0LWZvcm0tZmllbGQ6bm90KC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSkgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeCAubWF0LWljb24tYnV0dG9ue2Rpc3BsYXk6aW5saW5lLWZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7Zm9udC1zaXplOmluaGVyaXQ7d2lkdGg6Mi41ZW07aGVpZ2h0OjIuNWVtfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1idXR0b24sLmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWZsYXQtYnV0dG9uLC5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1yYWlzZWQtYnV0dG9uLC5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1pY29uLWJ1dHRvbiwuY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtZmFiLC5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1taW5pLWZhYntvdXRsaW5lOnNvbGlkIDFweH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtYnV0dG9uLWJhc2UuY2RrLWtleWJvYXJkLWZvY3VzZWQsLmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWJ1dHRvbi1iYXNlLmNkay1wcm9ncmFtLWZvY3VzZWR7b3V0bGluZTpzb2xpZCAzcHh9XG4iXX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmZGfSx7dHlwZTpLaH0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltja119XX1dfSkse3RhYkluZGV4Olt7dHlwZTpSX31dfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBJTHt9SUwuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fElMKX0sSUwuybVtb2Q9Zm8oe3R5cGU6SUx9KSxJTC7JtWluaj1Ebih7aW1wb3J0czpbW2ZMLE5GXSxORl19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKElMLFt7dHlwZTpMXyxhcmdzOlt7aW1wb3J0czpbZkwsTkZdLGV4cG9ydHM6W05MLHpMLE5GXSxkZWNsYXJhdGlvbnM6W05MLHpMXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKElMLHtkZWNsYXJhdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm5bTkwsekxdfSxpbXBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW2ZMLE5GXX0sZXhwb3J0czpmdW5jdGlvbigpe3JldHVybltOTCx6TCxORl19fSk7Y2xhc3MgSEx7fWZ1bmN0aW9uIEZMKHQpe3JldHVybiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgdC5jb25uZWN0fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBMTCBleHRlbmRzIEhMe2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy5fZGF0YT10fWNvbm5lY3QoKXtyZXR1cm4gTHQodGhpcy5fZGF0YSk/dGhpcy5fZGF0YTp6dCh0aGlzLl9kYXRhKX1kaXNjb25uZWN0KCl7fX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCi8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIEJMe2FwcGx5Q2hhbmdlcyh0LGUsbixvLGkpe3QuZm9yRWFjaE9wZXJhdGlvbigoKHQsbyxhKT0+e2xldCByLHM7aWYobnVsbD09dC5wcmV2aW91c0luZGV4KXtjb25zdCBpPW4odCxvLGEpO3I9ZS5jcmVhdGVFbWJlZGRlZFZpZXcoaS50ZW1wbGF0ZVJlZixpLmNvbnRleHQsaS5pbmRleCkscz0xfWVsc2UgbnVsbD09YT8oZS5yZW1vdmUobykscz0zKToocj1lLmdldChvKSxlLm1vdmUocixhKSxzPTIpO2kmJmkoe2NvbnRleHQ6bnVsbD09cj92b2lkIDA6ci5jb250ZXh0LG9wZXJhdGlvbjpzLHJlY29yZDp0fSl9KSl9ZGV0YWNoKCl7fX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgVkx7Y29uc3RydWN0b3IoKXt0aGlzLnZpZXdDYWNoZVNpemU9MjAsdGhpcy5fdmlld0NhY2hlPVtdfWFwcGx5Q2hhbmdlcyh0LGUsbixvLGkpe3QuZm9yRWFjaE9wZXJhdGlvbigoKHQsYSxyKT0+e2xldCBzLGw7aWYobnVsbD09dC5wcmV2aW91c0luZGV4KXtzPXRoaXMuX2luc2VydFZpZXcoKCgpPT5uKHQsYSxyKSkscixlLG8odCkpLGw9cz8xOjB9ZWxzZSBudWxsPT1yPyh0aGlzLl9kZXRhY2hBbmRDYWNoZVZpZXcoYSxlKSxsPTMpOihzPXRoaXMuX21vdmVWaWV3KGEscixlLG8odCkpLGw9Mik7aSYmaSh7Y29udGV4dDpudWxsPT1zP3ZvaWQgMDpzLmNvbnRleHQsb3BlcmF0aW9uOmwscmVjb3JkOnR9KX0pKX1kZXRhY2goKXtmb3IoY29uc3QgdCBvZiB0aGlzLl92aWV3Q2FjaGUpdC5kZXN0cm95KCk7dGhpcy5fdmlld0NhY2hlPVtdfV9pbnNlcnRWaWV3KHQsZSxuLG8pe2NvbnN0IGk9dGhpcy5faW5zZXJ0Vmlld0Zyb21DYWNoZShlLG4pO2lmKGkpcmV0dXJuIHZvaWQoaS5jb250ZXh0LiRpbXBsaWNpdD1vKTtjb25zdCBhPXQoKTtyZXR1cm4gbi5jcmVhdGVFbWJlZGRlZFZpZXcoYS50ZW1wbGF0ZVJlZixhLmNvbnRleHQsYS5pbmRleCl9X2RldGFjaEFuZENhY2hlVmlldyh0LGUpe2NvbnN0IG49ZS5kZXRhY2godCk7dGhpcy5fbWF5YmVDYWNoZVZpZXcobixlKX1fbW92ZVZpZXcodCxlLG4sbyl7Y29uc3QgaT1uLmdldCh0KTtyZXR1cm4gbi5tb3ZlKGksZSksaS5jb250ZXh0LiRpbXBsaWNpdD1vLGl9X21heWJlQ2FjaGVWaWV3KHQsZSl7aWYodGhpcy5fdmlld0NhY2hlLmxlbmd0aDx0aGlzLnZpZXdDYWNoZVNpemUpdGhpcy5fdmlld0NhY2hlLnB1c2godCk7ZWxzZXtjb25zdCBuPWUuaW5kZXhPZih0KTstMT09PW4/dC5kZXN0cm95KCk6ZS5yZW1vdmUobil9fV9pbnNlcnRWaWV3RnJvbUNhY2hlKHQsZSl7Y29uc3Qgbj10aGlzLl92aWV3Q2FjaGUucG9wKCk7cmV0dXJuIG4mJmUuaW5zZXJ0KG4sdCksbnx8bnVsbH19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIGpMe2NvbnN0cnVjdG9yKHQ9ITEsZSxuPSEwKXt0aGlzLl9tdWx0aXBsZT10LHRoaXMuX2VtaXRDaGFuZ2VzPW4sdGhpcy5fc2VsZWN0aW9uPW5ldyBTZXQsdGhpcy5fZGVzZWxlY3RlZFRvRW1pdD1bXSx0aGlzLl9zZWxlY3RlZFRvRW1pdD1bXSx0aGlzLmNoYW5nZWQ9bmV3IEIsZSYmZS5sZW5ndGgmJih0P2UuZm9yRWFjaCgodD0+dGhpcy5fbWFya1NlbGVjdGVkKHQpKSk6dGhpcy5fbWFya1NlbGVjdGVkKGVbMF0pLHRoaXMuX3NlbGVjdGVkVG9FbWl0Lmxlbmd0aD0wKX1nZXQgc2VsZWN0ZWQoKXtyZXR1cm4gdGhpcy5fc2VsZWN0ZWR8fCh0aGlzLl9zZWxlY3RlZD1BcnJheS5mcm9tKHRoaXMuX3NlbGVjdGlvbi52YWx1ZXMoKSkpLHRoaXMuX3NlbGVjdGVkfXNlbGVjdCguLi50KXt0aGlzLl92ZXJpZnlWYWx1ZUFzc2lnbm1lbnQodCksdC5mb3JFYWNoKCh0PT50aGlzLl9tYXJrU2VsZWN0ZWQodCkpKSx0aGlzLl9lbWl0Q2hhbmdlRXZlbnQoKX1kZXNlbGVjdCguLi50KXt0aGlzLl92ZXJpZnlWYWx1ZUFzc2lnbm1lbnQodCksdC5mb3JFYWNoKCh0PT50aGlzLl91bm1hcmtTZWxlY3RlZCh0KSkpLHRoaXMuX2VtaXRDaGFuZ2VFdmVudCgpfXRvZ2dsZSh0KXt0aGlzLmlzU2VsZWN0ZWQodCk/dGhpcy5kZXNlbGVjdCh0KTp0aGlzLnNlbGVjdCh0KX1jbGVhcigpe3RoaXMuX3VubWFya0FsbCgpLHRoaXMuX2VtaXRDaGFuZ2VFdmVudCgpfWlzU2VsZWN0ZWQodCl7cmV0dXJuIHRoaXMuX3NlbGVjdGlvbi5oYXModCl9aXNFbXB0eSgpe3JldHVybiAwPT09dGhpcy5fc2VsZWN0aW9uLnNpemV9aGFzVmFsdWUoKXtyZXR1cm4hdGhpcy5pc0VtcHR5KCl9c29ydCh0KXt0aGlzLl9tdWx0aXBsZSYmdGhpcy5zZWxlY3RlZCYmdGhpcy5fc2VsZWN0ZWQuc29ydCh0KX1pc011bHRpcGxlU2VsZWN0aW9uKCl7cmV0dXJuIHRoaXMuX211bHRpcGxlfV9lbWl0Q2hhbmdlRXZlbnQoKXt0aGlzLl9zZWxlY3RlZD1udWxsLCh0aGlzLl9zZWxlY3RlZFRvRW1pdC5sZW5ndGh8fHRoaXMuX2Rlc2VsZWN0ZWRUb0VtaXQubGVuZ3RoKSYmKHRoaXMuY2hhbmdlZC5uZXh0KHtzb3VyY2U6dGhpcyxhZGRlZDp0aGlzLl9zZWxlY3RlZFRvRW1pdCxyZW1vdmVkOnRoaXMuX2Rlc2VsZWN0ZWRUb0VtaXR9KSx0aGlzLl9kZXNlbGVjdGVkVG9FbWl0PVtdLHRoaXMuX3NlbGVjdGVkVG9FbWl0PVtdKX1fbWFya1NlbGVjdGVkKHQpe3RoaXMuaXNTZWxlY3RlZCh0KXx8KHRoaXMuX211bHRpcGxlfHx0aGlzLl91bm1hcmtBbGwoKSx0aGlzLl9zZWxlY3Rpb24uYWRkKHQpLHRoaXMuX2VtaXRDaGFuZ2VzJiZ0aGlzLl9zZWxlY3RlZFRvRW1pdC5wdXNoKHQpKX1fdW5tYXJrU2VsZWN0ZWQodCl7dGhpcy5pc1NlbGVjdGVkKHQpJiYodGhpcy5fc2VsZWN0aW9uLmRlbGV0ZSh0KSx0aGlzLl9lbWl0Q2hhbmdlcyYmdGhpcy5fZGVzZWxlY3RlZFRvRW1pdC5wdXNoKHQpKX1fdW5tYXJrQWxsKCl7dGhpcy5pc0VtcHR5KCl8fHRoaXMuX3NlbGVjdGlvbi5mb3JFYWNoKCh0PT50aGlzLl91bm1hcmtTZWxlY3RlZCh0KSkpfV92ZXJpZnlWYWx1ZUFzc2lnbm1lbnQodCl7aWYodC5sZW5ndGg+MSYmIXRoaXMuX211bHRpcGxlJiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkpdGhyb3coZnVuY3Rpb24gZSgpe3JldHVybiBFcnJvcigiQ2Fubm90IHBhc3MgbXVsdGlwbGUgdmFsdWVzIGludG8gU2VsZWN0aW9uTW9kZWwgd2l0aCBzaW5nbGUtdmFsdWUgbW9kZS4iKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovKSgpfX1jbGFzcyBVTHtjb25zdHJ1Y3Rvcigpe3RoaXMuX2xpc3RlbmVycz1bXX1ub3RpZnkodCxlKXtmb3IobGV0IG4gb2YgdGhpcy5fbGlzdGVuZXJzKW4odCxlKX1saXN0ZW4odCl7cmV0dXJuIHRoaXMuX2xpc3RlbmVycy5wdXNoKHQpLCgpPT57dGhpcy5fbGlzdGVuZXJzPXRoaXMuX2xpc3RlbmVycy5maWx0ZXIoKGU9PnQhPT1lKSl9fW5nT25EZXN0cm95KCl7dGhpcy5fbGlzdGVuZXJzPVtdfX1VTC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8VUwpfSxVTC7JtXByb3Y9U24oe2ZhY3Rvcnk6ZnVuY3Rpb24gdCgpe3JldHVybiBuZXcgVUx9LHRva2VuOlVMLHByb3ZpZGVkSW46InJvb3QifSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihVTCxbe3R5cGU6VW0sYXJnczpbe3Byb3ZpZGVkSW46InJvb3QifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5bXX0pLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IFdMPW5ldyBlcigiX1ZpZXdSZXBlYXRlciIpLEdMPVsiY29udGVudFdyYXBwZXIiXSxZTD1uZXcgZXIoIlZJUlRVQUxfU0NST0xMX1NUUkFURUdZIik7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBxTHtjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5fc2Nyb2xsZWRJbmRleENoYW5nZT1uZXcgQix0aGlzLnNjcm9sbGVkSW5kZXhDaGFuZ2U9dGhpcy5fc2Nyb2xsZWRJbmRleENoYW5nZS5waXBlKHdlKCkpLHRoaXMuX3ZpZXdwb3J0PW51bGwsdGhpcy5faXRlbVNpemU9dCx0aGlzLl9taW5CdWZmZXJQeD1lLHRoaXMuX21heEJ1ZmZlclB4PW59YXR0YWNoKHQpe3RoaXMuX3ZpZXdwb3J0PXQsdGhpcy5fdXBkYXRlVG90YWxDb250ZW50U2l6ZSgpLHRoaXMuX3VwZGF0ZVJlbmRlcmVkUmFuZ2UoKX1kZXRhY2goKXt0aGlzLl9zY3JvbGxlZEluZGV4Q2hhbmdlLmNvbXBsZXRlKCksdGhpcy5fdmlld3BvcnQ9bnVsbH11cGRhdGVJdGVtQW5kQnVmZmVyU2l6ZSh0LGUsbil7aWYobjxlJiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkpdGhyb3cgRXJyb3IoIkNESyB2aXJ0dWFsIHNjcm9sbDogbWF4QnVmZmVyUHggbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gbWluQnVmZmVyUHgiKTt0aGlzLl9pdGVtU2l6ZT10LHRoaXMuX21pbkJ1ZmZlclB4PWUsdGhpcy5fbWF4QnVmZmVyUHg9bix0aGlzLl91cGRhdGVUb3RhbENvbnRlbnRTaXplKCksdGhpcy5fdXBkYXRlUmVuZGVyZWRSYW5nZSgpfW9uQ29udGVudFNjcm9sbGVkKCl7dGhpcy5fdXBkYXRlUmVuZGVyZWRSYW5nZSgpfW9uRGF0YUxlbmd0aENoYW5nZWQoKXt0aGlzLl91cGRhdGVUb3RhbENvbnRlbnRTaXplKCksdGhpcy5fdXBkYXRlUmVuZGVyZWRSYW5nZSgpfW9uQ29udGVudFJlbmRlcmVkKCl7fW9uUmVuZGVyZWRPZmZzZXRDaGFuZ2VkKCl7fXNjcm9sbFRvSW5kZXgodCxlKXt0aGlzLl92aWV3cG9ydCYmdGhpcy5fdmlld3BvcnQuc2Nyb2xsVG9PZmZzZXQodCp0aGlzLl9pdGVtU2l6ZSxlKX1fdXBkYXRlVG90YWxDb250ZW50U2l6ZSgpe3RoaXMuX3ZpZXdwb3J0JiZ0aGlzLl92aWV3cG9ydC5zZXRUb3RhbENvbnRlbnRTaXplKHRoaXMuX3ZpZXdwb3J0LmdldERhdGFMZW5ndGgoKSp0aGlzLl9pdGVtU2l6ZSl9X3VwZGF0ZVJlbmRlcmVkUmFuZ2UoKXtpZighdGhpcy5fdmlld3BvcnQpcmV0dXJuO2NvbnN0IHQ9dGhpcy5fdmlld3BvcnQuZ2V0UmVuZGVyZWRSYW5nZSgpLGU9e3N0YXJ0OnQuc3RhcnQsZW5kOnQuZW5kfSxuPXRoaXMuX3ZpZXdwb3J0LmdldFZpZXdwb3J0U2l6ZSgpLG89dGhpcy5fdmlld3BvcnQuZ2V0RGF0YUxlbmd0aCgpO2xldCBpPXRoaXMuX3ZpZXdwb3J0Lm1lYXN1cmVTY3JvbGxPZmZzZXQoKSxhPXRoaXMuX2l0ZW1TaXplPjA/aS90aGlzLl9pdGVtU2l6ZTowO2lmKGUuZW5kPm8pe2NvbnN0IHQ9TWF0aC5jZWlsKG4vdGhpcy5faXRlbVNpemUpLHI9TWF0aC5tYXgoMCxNYXRoLm1pbihhLG8tdCkpO2EhPXImJihhPXIsaT1yKnRoaXMuX2l0ZW1TaXplLGUuc3RhcnQ9TWF0aC5mbG9vcihhKSksZS5lbmQ9TWF0aC5tYXgoMCxNYXRoLm1pbihvLGUuc3RhcnQrdCkpfWNvbnN0IHI9aS1lLnN0YXJ0KnRoaXMuX2l0ZW1TaXplO2lmKHI8dGhpcy5fbWluQnVmZmVyUHgmJjAhPWUuc3RhcnQpe2NvbnN0IHQ9TWF0aC5jZWlsKCh0aGlzLl9tYXhCdWZmZXJQeC1yKS90aGlzLl9pdGVtU2l6ZSk7ZS5zdGFydD1NYXRoLm1heCgwLGUuc3RhcnQtdCksZS5lbmQ9TWF0aC5taW4obyxNYXRoLmNlaWwoYSsobit0aGlzLl9taW5CdWZmZXJQeCkvdGhpcy5faXRlbVNpemUpKX1lbHNle2NvbnN0IHQ9ZS5lbmQqdGhpcy5faXRlbVNpemUtKGkrbik7aWYodDx0aGlzLl9taW5CdWZmZXJQeCYmZS5lbmQhPW8pe2NvbnN0IG49TWF0aC5jZWlsKCh0aGlzLl9tYXhCdWZmZXJQeC10KS90aGlzLl9pdGVtU2l6ZSk7bj4wJiYoZS5lbmQ9TWF0aC5taW4obyxlLmVuZCtuKSxlLnN0YXJ0PU1hdGgubWF4KDAsTWF0aC5mbG9vcihhLXRoaXMuX21pbkJ1ZmZlclB4L3RoaXMuX2l0ZW1TaXplKSkpfX10aGlzLl92aWV3cG9ydC5zZXRSZW5kZXJlZFJhbmdlKGUpLHRoaXMuX3ZpZXdwb3J0LnNldFJlbmRlcmVkQ29udGVudE9mZnNldCh0aGlzLl9pdGVtU2l6ZSplLnN0YXJ0KSx0aGlzLl9zY3JvbGxlZEluZGV4Q2hhbmdlLm5leHQoTWF0aC5mbG9vcihhKSl9fWZ1bmN0aW9uIFpMKHQpe3JldHVybiB0Ll9zY3JvbGxTdHJhdGVneX1jbGFzcyBYTHtjb25zdHJ1Y3Rvcigpe3RoaXMuX2l0ZW1TaXplPTIwLHRoaXMuX21pbkJ1ZmZlclB4PTEwMCx0aGlzLl9tYXhCdWZmZXJQeD0yMDAsdGhpcy5fc2Nyb2xsU3RyYXRlZ3k9bmV3IHFMKHRoaXMuaXRlbVNpemUsdGhpcy5taW5CdWZmZXJQeCx0aGlzLm1heEJ1ZmZlclB4KX1nZXQgaXRlbVNpemUoKXtyZXR1cm4gdGhpcy5faXRlbVNpemV9c2V0IGl0ZW1TaXplKHQpe3RoaXMuX2l0ZW1TaXplPW5IKHQpfWdldCBtaW5CdWZmZXJQeCgpe3JldHVybiB0aGlzLl9taW5CdWZmZXJQeH1zZXQgbWluQnVmZmVyUHgodCl7dGhpcy5fbWluQnVmZmVyUHg9bkgodCl9Z2V0IG1heEJ1ZmZlclB4KCl7cmV0dXJuIHRoaXMuX21heEJ1ZmZlclB4fXNldCBtYXhCdWZmZXJQeCh0KXt0aGlzLl9tYXhCdWZmZXJQeD1uSCh0KX1uZ09uQ2hhbmdlcygpe3RoaXMuX3Njcm9sbFN0cmF0ZWd5LnVwZGF0ZUl0ZW1BbmRCdWZmZXJTaXplKHRoaXMuaXRlbVNpemUsdGhpcy5taW5CdWZmZXJQeCx0aGlzLm1heEJ1ZmZlclB4KX19WEwuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFhMKX0sWEwuybVkaXI9aG8oe3R5cGU6WEwsc2VsZWN0b3JzOltbImNkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydCIsIml0ZW1TaXplIiwiIl1dLGlucHV0czp7aXRlbVNpemU6Iml0ZW1TaXplIixtaW5CdWZmZXJQeDoibWluQnVmZmVyUHgiLG1heEJ1ZmZlclB4OiJtYXhCdWZmZXJQeCJ9LGZlYXR1cmVzOltqaChbe3Byb3ZpZGU6WUwsdXNlRmFjdG9yeTpaTCxkZXBzOlskZSgoKCk9PlhMKSldfV0pLHFvXX0pLFhMLnByb3BEZWNvcmF0b3JzPXtpdGVtU2l6ZTpbe3R5cGU6Ul99XSxtaW5CdWZmZXJQeDpbe3R5cGU6Ul99XSxtYXhCdWZmZXJQeDpbe3R5cGU6Ul99XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihYTCxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnRbaXRlbVNpemVdIixwcm92aWRlcnM6W3twcm92aWRlOllMLHVzZUZhY3Rvcnk6WkwsZGVwczpbJGUoKCgpPT5YTCkpXX1dfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5bXX0pLHtpdGVtU2l6ZTpbe3R5cGU6Ul99XSxtaW5CdWZmZXJQeDpbe3R5cGU6Ul99XSxtYXhCdWZmZXJQeDpbe3R5cGU6Ul99XX0pO2NsYXNzIEtMe2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLl9uZ1pvbmU9dCx0aGlzLl9wbGF0Zm9ybT1lLHRoaXMuX3Njcm9sbGVkPW5ldyBCLHRoaXMuX2dsb2JhbFN1YnNjcmlwdGlvbj1udWxsLHRoaXMuX3Njcm9sbGVkQ291bnQ9MCx0aGlzLnNjcm9sbENvbnRhaW5lcnM9bmV3IE1hcCx0aGlzLl9kb2N1bWVudD1ufXJlZ2lzdGVyKHQpe3RoaXMuc2Nyb2xsQ29udGFpbmVycy5oYXModCl8fHRoaXMuc2Nyb2xsQ29udGFpbmVycy5zZXQodCx0LmVsZW1lbnRTY3JvbGxlZCgpLnN1YnNjcmliZSgoKCk9PnRoaXMuX3Njcm9sbGVkLm5leHQodCkpKSl9ZGVyZWdpc3Rlcih0KXtjb25zdCBlPXRoaXMuc2Nyb2xsQ29udGFpbmVycy5nZXQodCk7ZSYmKGUudW5zdWJzY3JpYmUoKSx0aGlzLnNjcm9sbENvbnRhaW5lcnMuZGVsZXRlKHQpKX1zY3JvbGxlZCh0PTIwKXtyZXR1cm4gdGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyP25ldyBUKChlPT57dGhpcy5fZ2xvYmFsU3Vic2NyaXB0aW9ufHx0aGlzLl9hZGRHbG9iYWxMaXN0ZW5lcigpO2NvbnN0IG49dD4wP3RoaXMuX3Njcm9sbGVkLnBpcGUoZ2UodCkpLnN1YnNjcmliZShlKTp0aGlzLl9zY3JvbGxlZC5zdWJzY3JpYmUoZSk7cmV0dXJuIHRoaXMuX3Njcm9sbGVkQ291bnQrKywoKT0+e24udW5zdWJzY3JpYmUoKSx0aGlzLl9zY3JvbGxlZENvdW50LS0sdGhpcy5fc2Nyb2xsZWRDb3VudHx8dGhpcy5fcmVtb3ZlR2xvYmFsTGlzdGVuZXIoKX19KSk6enQoKX1uZ09uRGVzdHJveSgpe3RoaXMuX3JlbW92ZUdsb2JhbExpc3RlbmVyKCksdGhpcy5zY3JvbGxDb250YWluZXJzLmZvckVhY2goKCh0LGUpPT50aGlzLmRlcmVnaXN0ZXIoZSkpKSx0aGlzLl9zY3JvbGxlZC5jb21wbGV0ZSgpfWFuY2VzdG9yU2Nyb2xsZWQodCxlKXtjb25zdCBuPXRoaXMuZ2V0QW5jZXN0b3JTY3JvbGxDb250YWluZXJzKHQpO3JldHVybiB0aGlzLnNjcm9sbGVkKGUpLnBpcGUodWUoKHQ9PiF0fHxuLmluZGV4T2YodCk+LTEpKSl9Z2V0QW5jZXN0b3JTY3JvbGxDb250YWluZXJzKHQpe2NvbnN0IGU9W107cmV0dXJuIHRoaXMuc2Nyb2xsQ29udGFpbmVycy5mb3JFYWNoKCgobixvKT0+e3RoaXMuX3Njcm9sbGFibGVDb250YWluc0VsZW1lbnQobyx0KSYmZS5wdXNoKG8pfSkpLGV9X2dldFdpbmRvdygpe3JldHVybiB0aGlzLl9kb2N1bWVudC5kZWZhdWx0Vmlld3x8d2luZG93fV9zY3JvbGxhYmxlQ29udGFpbnNFbGVtZW50KHQsZSl7bGV0IG49ckgoZSksbz10LmdldEVsZW1lbnRSZWYoKS5uYXRpdmVFbGVtZW50O2Rve2lmKG49PW8pcmV0dXJuITB9d2hpbGUobj1uLnBhcmVudEVsZW1lbnQpO3JldHVybiExfV9hZGRHbG9iYWxMaXN0ZW5lcigpe3RoaXMuX2dsb2JhbFN1YnNjcmlwdGlvbj10aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCgpPT5sZSh0aGlzLl9nZXRXaW5kb3coKS5kb2N1bWVudCwic2Nyb2xsIikuc3Vic2NyaWJlKCgoKT0+dGhpcy5fc2Nyb2xsZWQubmV4dCgpKSkpKX1fcmVtb3ZlR2xvYmFsTGlzdGVuZXIoKXt0aGlzLl9nbG9iYWxTdWJzY3JpcHRpb24mJih0aGlzLl9nbG9iYWxTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLl9nbG9iYWxTdWJzY3JpcHRpb249bnVsbCl9fUtMLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxLTCkoVHIobUMpLFRyKGNIKSxUcihzTSw4KSl9LEtMLsm1cHJvdj1Tbih7ZmFjdG9yeTpmdW5jdGlvbiB0KCl7cmV0dXJuIG5ldyBLTChUcihtQyksVHIoY0gpLFRyKHNNLDgpKX0sdG9rZW46S0wscHJvdmlkZWRJbjoicm9vdCJ9KSxLTC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOm1DfSx7dHlwZTpjSH0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltzTV19XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoS0wsW3t0eXBlOlVtLGFyZ3M6W3twcm92aWRlZEluOiJyb290In1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOm1DfSx7dHlwZTpjSH0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltzTV19XX1dfSksbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBKTHtjb25zdHJ1Y3Rvcih0LGUsbixvKXt0aGlzLmVsZW1lbnRSZWY9dCx0aGlzLnNjcm9sbERpc3BhdGNoZXI9ZSx0aGlzLm5nWm9uZT1uLHRoaXMuZGlyPW8sdGhpcy5fZGVzdHJveWVkPW5ldyBCLHRoaXMuX2VsZW1lbnRTY3JvbGxlZD1uZXcgVCgodD0+dGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCgpPT5sZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwic2Nyb2xsIikucGlwZShqZSh0aGlzLl9kZXN0cm95ZWQpKS5zdWJzY3JpYmUodCkpKSkpfW5nT25Jbml0KCl7dGhpcy5zY3JvbGxEaXNwYXRjaGVyLnJlZ2lzdGVyKHRoaXMpfW5nT25EZXN0cm95KCl7dGhpcy5zY3JvbGxEaXNwYXRjaGVyLmRlcmVnaXN0ZXIodGhpcyksdGhpcy5fZGVzdHJveWVkLm5leHQoKSx0aGlzLl9kZXN0cm95ZWQuY29tcGxldGUoKX1lbGVtZW50U2Nyb2xsZWQoKXtyZXR1cm4gdGhpcy5fZWxlbWVudFNjcm9sbGVkfWdldEVsZW1lbnRSZWYoKXtyZXR1cm4gdGhpcy5lbGVtZW50UmVmfXNjcm9sbFRvKHQpe2NvbnN0IGU9dGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsbj10aGlzLmRpciYmInJ0bCI9PXRoaXMuZGlyLnZhbHVlO251bGw9PXQubGVmdCYmKHQubGVmdD1uP3QuZW5kOnQuc3RhcnQpLG51bGw9PXQucmlnaHQmJih0LnJpZ2h0PW4/dC5zdGFydDp0LmVuZCksbnVsbCE9dC5ib3R0b20mJih0LnRvcD1lLnNjcm9sbEhlaWdodC1lLmNsaWVudEhlaWdodC10LmJvdHRvbSksbiYmMCE9X0goKT8obnVsbCE9dC5sZWZ0JiYodC5yaWdodD1lLnNjcm9sbFdpZHRoLWUuY2xpZW50V2lkdGgtdC5sZWZ0KSwyPT1fSCgpP3QubGVmdD10LnJpZ2h0OjE9PV9IKCkmJih0LmxlZnQ9dC5yaWdodD8tdC5yaWdodDp0LnJpZ2h0KSk6bnVsbCE9dC5yaWdodCYmKHQubGVmdD1lLnNjcm9sbFdpZHRoLWUuY2xpZW50V2lkdGgtdC5yaWdodCksdGhpcy5fYXBwbHlTY3JvbGxUb09wdGlvbnModCl9X2FwcGx5U2Nyb2xsVG9PcHRpb25zKHQpe2NvbnN0IGU9dGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7eUgoKT9lLnNjcm9sbFRvKHQpOihudWxsIT10LnRvcCYmKGUuc2Nyb2xsVG9wPXQudG9wKSxudWxsIT10LmxlZnQmJihlLnNjcm9sbExlZnQ9dC5sZWZ0KSl9bWVhc3VyZVNjcm9sbE9mZnNldCh0KXtjb25zdCBlPSJsZWZ0IixuPSJyaWdodCIsbz10aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtpZigidG9wIj09dClyZXR1cm4gby5zY3JvbGxUb3A7aWYoImJvdHRvbSI9PXQpcmV0dXJuIG8uc2Nyb2xsSGVpZ2h0LW8uY2xpZW50SGVpZ2h0LW8uc2Nyb2xsVG9wO2NvbnN0IGk9dGhpcy5kaXImJiJydGwiPT10aGlzLmRpci52YWx1ZTtyZXR1cm4ic3RhcnQiPT10P3Q9aT9uOmU6ImVuZCI9PXQmJih0PWk/ZTpuKSxpJiYyPT1fSCgpP3Q9PWU/by5zY3JvbGxXaWR0aC1vLmNsaWVudFdpZHRoLW8uc2Nyb2xsTGVmdDpvLnNjcm9sbExlZnQ6aSYmMT09X0goKT90PT1lP28uc2Nyb2xsTGVmdCtvLnNjcm9sbFdpZHRoLW8uY2xpZW50V2lkdGg6LW8uc2Nyb2xsTGVmdDp0PT1lP28uc2Nyb2xsTGVmdDpvLnNjcm9sbFdpZHRoLW8uY2xpZW50V2lkdGgtby5zY3JvbGxMZWZ0fX1KTC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8SkwpKGdmKEtoKSxnZihLTCksZ2YobUMpLGdmKHZGLDgpKX0sSkwuybVkaXI9aG8oe3R5cGU6Skwsc2VsZWN0b3JzOltbIiIsImNkay1zY3JvbGxhYmxlIiwiIl0sWyIiLCJjZGtTY3JvbGxhYmxlIiwiIl1dfSksSkwuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpLaH0se3R5cGU6S0x9LHt0eXBlOm1DfSx7dHlwZTp2RixkZWNvcmF0b3JzOlt7dHlwZTpCcn1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihKTCxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJbY2RrLXNjcm9sbGFibGVdLCBbY2RrU2Nyb2xsYWJsZV0ifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6S2h9LHt0eXBlOktMfSx7dHlwZTptQ30se3R5cGU6dkYsZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX1dfSksbnVsbCk7Y2xhc3MgUUx7Y29uc3RydWN0b3IodCxlLG4pe3RoaXMuX3BsYXRmb3JtPXQsdGhpcy5fY2hhbmdlPW5ldyBCLHRoaXMuX2NoYW5nZUxpc3RlbmVyPXQ9Pnt0aGlzLl9jaGFuZ2UubmV4dCh0KX0sdGhpcy5fZG9jdW1lbnQ9bixlLnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+e2lmKHQuaXNCcm93c2VyKXtjb25zdCB0PXRoaXMuX2dldFdpbmRvdygpO3QuYWRkRXZlbnRMaXN0ZW5lcigicmVzaXplIix0aGlzLl9jaGFuZ2VMaXN0ZW5lciksdC5hZGRFdmVudExpc3RlbmVyKCJvcmllbnRhdGlvbmNoYW5nZSIsdGhpcy5fY2hhbmdlTGlzdGVuZXIpfXRoaXMuY2hhbmdlKCkuc3Vic2NyaWJlKCgoKT0+dGhpcy5fdmlld3BvcnRTaXplPW51bGwpKX0pKX1uZ09uRGVzdHJveSgpe2lmKHRoaXMuX3BsYXRmb3JtLmlzQnJvd3Nlcil7Y29uc3QgdD10aGlzLl9nZXRXaW5kb3coKTt0LnJlbW92ZUV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsdGhpcy5fY2hhbmdlTGlzdGVuZXIpLHQucmVtb3ZlRXZlbnRMaXN0ZW5lcigib3JpZW50YXRpb25jaGFuZ2UiLHRoaXMuX2NoYW5nZUxpc3RlbmVyKX10aGlzLl9jaGFuZ2UuY29tcGxldGUoKX1nZXRWaWV3cG9ydFNpemUoKXt0aGlzLl92aWV3cG9ydFNpemV8fHRoaXMuX3VwZGF0ZVZpZXdwb3J0U2l6ZSgpO2NvbnN0IHQ9e3dpZHRoOnRoaXMuX3ZpZXdwb3J0U2l6ZS53aWR0aCxoZWlnaHQ6dGhpcy5fdmlld3BvcnRTaXplLmhlaWdodH07cmV0dXJuIHRoaXMuX3BsYXRmb3JtLmlzQnJvd3Nlcnx8KHRoaXMuX3ZpZXdwb3J0U2l6ZT1udWxsKSx0fWdldFZpZXdwb3J0UmVjdCgpe2NvbnN0IHQ9dGhpcy5nZXRWaWV3cG9ydFNjcm9sbFBvc2l0aW9uKCkse3dpZHRoOmUsaGVpZ2h0Om59PXRoaXMuZ2V0Vmlld3BvcnRTaXplKCk7cmV0dXJue3RvcDp0LnRvcCxsZWZ0OnQubGVmdCxib3R0b206dC50b3ArbixyaWdodDp0LmxlZnQrZSxoZWlnaHQ6bix3aWR0aDplfX1nZXRWaWV3cG9ydFNjcm9sbFBvc2l0aW9uKCl7aWYoIXRoaXMuX3BsYXRmb3JtLmlzQnJvd3NlcilyZXR1cm57dG9wOjAsbGVmdDowfTtjb25zdCB0PXRoaXMuX2RvY3VtZW50LGU9dGhpcy5fZ2V0V2luZG93KCksbj10LmRvY3VtZW50RWxlbWVudCxvPW4uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJue3RvcDotby50b3B8fHQuYm9keS5zY3JvbGxUb3B8fGUuc2Nyb2xsWXx8bi5zY3JvbGxUb3B8fDAsbGVmdDotby5sZWZ0fHx0LmJvZHkuc2Nyb2xsTGVmdHx8ZS5zY3JvbGxYfHxuLnNjcm9sbExlZnR8fDB9fWNoYW5nZSh0PTIwKXtyZXR1cm4gdD4wP3RoaXMuX2NoYW5nZS5waXBlKGdlKHQpKTp0aGlzLl9jaGFuZ2V9X2dldFdpbmRvdygpe3JldHVybiB0aGlzLl9kb2N1bWVudC5kZWZhdWx0Vmlld3x8d2luZG93fV91cGRhdGVWaWV3cG9ydFNpemUoKXtjb25zdCB0PXRoaXMuX2dldFdpbmRvdygpO3RoaXMuX3ZpZXdwb3J0U2l6ZT10aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXI/e3dpZHRoOnQuaW5uZXJXaWR0aCxoZWlnaHQ6dC5pbm5lckhlaWdodH06e3dpZHRoOjAsaGVpZ2h0OjB9fX1RTC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8UUwpKFRyKGNIKSxUcihtQyksVHIoc00sOCkpfSxRTC7JtXByb3Y9U24oe2ZhY3Rvcnk6ZnVuY3Rpb24gdCgpe3JldHVybiBuZXcgUUwoVHIoY0gpLFRyKG1DKSxUcihzTSw4KSl9LHRva2VuOlFMLHByb3ZpZGVkSW46InJvb3QifSksUUwuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpjSH0se3R5cGU6bUN9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbc01dfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFFMLFt7dHlwZTpVbSxhcmdzOlt7cHJvdmlkZWRJbjoicm9vdCJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpjSH0se3R5cGU6bUN9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbc01dfV19XX0pLG51bGwpO2NvbnN0ICRMPSJ1bmRlZmluZWQiIT10eXBlb2YgcmVxdWVzdEFuaW1hdGlvbkZyYW1lP2N0Om90O2NsYXNzIHRCIGV4dGVuZHMgSkx7Y29uc3RydWN0b3IodCxlLG4sbyxpLGEscil7aWYoc3VwZXIodCxhLG4saSksdGhpcy5lbGVtZW50UmVmPXQsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWY9ZSx0aGlzLl9zY3JvbGxTdHJhdGVneT1vLHRoaXMuX2RldGFjaGVkU3ViamVjdD1uZXcgQix0aGlzLl9yZW5kZXJlZFJhbmdlU3ViamVjdD1uZXcgQix0aGlzLl9vcmllbnRhdGlvbj0idmVydGljYWwiLHRoaXMuX2FwcGVuZE9ubHk9ITEsdGhpcy5zY3JvbGxlZEluZGV4Q2hhbmdlPW5ldyBUKCh0PT50aGlzLl9zY3JvbGxTdHJhdGVneS5zY3JvbGxlZEluZGV4Q2hhbmdlLnN1YnNjcmliZSgoZT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKCk9PnRoaXMubmdab25lLnJ1bigoKCk9PnQubmV4dChlKSkpKSkpKSkpLHRoaXMucmVuZGVyZWRSYW5nZVN0cmVhbT10aGlzLl9yZW5kZXJlZFJhbmdlU3ViamVjdCx0aGlzLl90b3RhbENvbnRlbnRTaXplPTAsdGhpcy5fdG90YWxDb250ZW50V2lkdGg9IiIsdGhpcy5fdG90YWxDb250ZW50SGVpZ2h0PSIiLHRoaXMuX3JlbmRlcmVkUmFuZ2U9e3N0YXJ0OjAsZW5kOjB9LHRoaXMuX2RhdGFMZW5ndGg9MCx0aGlzLl92aWV3cG9ydFNpemU9MCx0aGlzLl9yZW5kZXJlZENvbnRlbnRPZmZzZXQ9MCx0aGlzLl9yZW5kZXJlZENvbnRlbnRPZmZzZXROZWVkc1Jld3JpdGU9ITEsdGhpcy5faXNDaGFuZ2VEZXRlY3Rpb25QZW5kaW5nPSExLHRoaXMuX3J1bkFmdGVyQ2hhbmdlRGV0ZWN0aW9uPVtdLHRoaXMuX3ZpZXdwb3J0Q2hhbmdlcz11LkVNUFRZLCFvJiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkpdGhyb3cgRXJyb3IoJ0Vycm9yOiBjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQgcmVxdWlyZXMgdGhlICJpdGVtU2l6ZSIgcHJvcGVydHkgdG8gYmUgc2V0LicpO3RoaXMuX3ZpZXdwb3J0Q2hhbmdlcz1yLmNoYW5nZSgpLnN1YnNjcmliZSgoKCk9Pnt0aGlzLmNoZWNrVmlld3BvcnRTaXplKCl9KSl9Z2V0IG9yaWVudGF0aW9uKCl7cmV0dXJuIHRoaXMuX29yaWVudGF0aW9ufXNldCBvcmllbnRhdGlvbih0KXt0aGlzLl9vcmllbnRhdGlvbiE9PXQmJih0aGlzLl9vcmllbnRhdGlvbj10LHRoaXMuX2NhbGN1bGF0ZVNwYWNlclNpemUoKSl9Z2V0IGFwcGVuZE9ubHkoKXtyZXR1cm4gdGhpcy5fYXBwZW5kT25seX1zZXQgYXBwZW5kT25seSh0KXt0aGlzLl9hcHBlbmRPbmx5PWVIKHQpfW5nT25Jbml0KCl7c3VwZXIubmdPbkluaXQoKSx0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCgpPT57dGhpcy5fbWVhc3VyZVZpZXdwb3J0U2l6ZSgpLHRoaXMuX3Njcm9sbFN0cmF0ZWd5LmF0dGFjaCh0aGlzKSx0aGlzLmVsZW1lbnRTY3JvbGxlZCgpLnBpcGUoQmUobnVsbCksZ2UoMCwkTCkpLnN1YnNjcmliZSgoKCk9PnRoaXMuX3Njcm9sbFN0cmF0ZWd5Lm9uQ29udGVudFNjcm9sbGVkKCkpKSx0aGlzLl9tYXJrQ2hhbmdlRGV0ZWN0aW9uTmVlZGVkKCl9KSkpKX1uZ09uRGVzdHJveSgpe3RoaXMuZGV0YWNoKCksdGhpcy5fc2Nyb2xsU3RyYXRlZ3kuZGV0YWNoKCksdGhpcy5fcmVuZGVyZWRSYW5nZVN1YmplY3QuY29tcGxldGUoKSx0aGlzLl9kZXRhY2hlZFN1YmplY3QuY29tcGxldGUoKSx0aGlzLl92aWV3cG9ydENoYW5nZXMudW5zdWJzY3JpYmUoKSxzdXBlci5uZ09uRGVzdHJveSgpfWF0dGFjaCh0KXtpZih0aGlzLl9mb3JPZiYmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpKXRocm93IEVycm9yKCJDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQgaXMgYWxyZWFkeSBhdHRhY2hlZC4iKTt0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9Pnt0aGlzLl9mb3JPZj10LHRoaXMuX2Zvck9mLmRhdGFTdHJlYW0ucGlwZShqZSh0aGlzLl9kZXRhY2hlZFN1YmplY3QpKS5zdWJzY3JpYmUoKHQ9Pntjb25zdCBlPXQubGVuZ3RoO2UhPT10aGlzLl9kYXRhTGVuZ3RoJiYodGhpcy5fZGF0YUxlbmd0aD1lLHRoaXMuX3Njcm9sbFN0cmF0ZWd5Lm9uRGF0YUxlbmd0aENoYW5nZWQoKSksdGhpcy5fZG9DaGFuZ2VEZXRlY3Rpb24oKX0pKX0pKX1kZXRhY2goKXt0aGlzLl9mb3JPZj1udWxsLHRoaXMuX2RldGFjaGVkU3ViamVjdC5uZXh0KCl9Z2V0RGF0YUxlbmd0aCgpe3JldHVybiB0aGlzLl9kYXRhTGVuZ3RofWdldFZpZXdwb3J0U2l6ZSgpe3JldHVybiB0aGlzLl92aWV3cG9ydFNpemV9Z2V0UmVuZGVyZWRSYW5nZSgpe3JldHVybiB0aGlzLl9yZW5kZXJlZFJhbmdlfXNldFRvdGFsQ29udGVudFNpemUodCl7dGhpcy5fdG90YWxDb250ZW50U2l6ZSE9PXQmJih0aGlzLl90b3RhbENvbnRlbnRTaXplPXQsdGhpcy5fY2FsY3VsYXRlU3BhY2VyU2l6ZSgpLHRoaXMuX21hcmtDaGFuZ2VEZXRlY3Rpb25OZWVkZWQoKSl9c2V0UmVuZGVyZWRSYW5nZSh0KXsoCi8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpmdW5jdGlvbiBlKHQsbil7cmV0dXJuIHQuc3RhcnQ9PW4uc3RhcnQmJnQuZW5kPT1uLmVuZH0pKHRoaXMuX3JlbmRlcmVkUmFuZ2UsdCl8fCh0aGlzLmFwcGVuZE9ubHkmJih0PXtzdGFydDowLGVuZDpNYXRoLm1heCh0aGlzLl9yZW5kZXJlZFJhbmdlLmVuZCx0LmVuZCl9KSx0aGlzLl9yZW5kZXJlZFJhbmdlU3ViamVjdC5uZXh0KHRoaXMuX3JlbmRlcmVkUmFuZ2U9dCksdGhpcy5fbWFya0NoYW5nZURldGVjdGlvbk5lZWRlZCgoKCk9PnRoaXMuX3Njcm9sbFN0cmF0ZWd5Lm9uQ29udGVudFJlbmRlcmVkKCkpKSl9Z2V0T2Zmc2V0VG9SZW5kZXJlZENvbnRlbnRTdGFydCgpe3JldHVybiB0aGlzLl9yZW5kZXJlZENvbnRlbnRPZmZzZXROZWVkc1Jld3JpdGU/bnVsbDp0aGlzLl9yZW5kZXJlZENvbnRlbnRPZmZzZXR9c2V0UmVuZGVyZWRDb250ZW50T2Zmc2V0KHQsZT0idG8tc3RhcnQiKXtjb25zdCBuPSJob3Jpem9udGFsIj09dGhpcy5vcmllbnRhdGlvbixvPW4/IlgiOiJZIjtsZXQgaT1gdHJhbnNsYXRlJHtvfSgke051bWJlcigobiYmKHRoaXMuZGlyJiYicnRsIj09dGhpcy5kaXIudmFsdWUpPy0xOjEpKnQpfXB4KWA7dGhpcy5fcmVuZGVyZWRDb250ZW50T2Zmc2V0PXQsInRvLWVuZCI9PT1lJiYoaSs9YCB0cmFuc2xhdGUke299KC0xMDAlKWAsdGhpcy5fcmVuZGVyZWRDb250ZW50T2Zmc2V0TmVlZHNSZXdyaXRlPSEwKSx0aGlzLl9yZW5kZXJlZENvbnRlbnRUcmFuc2Zvcm0hPWkmJih0aGlzLl9yZW5kZXJlZENvbnRlbnRUcmFuc2Zvcm09aSx0aGlzLl9tYXJrQ2hhbmdlRGV0ZWN0aW9uTmVlZGVkKCgoKT0+e3RoaXMuX3JlbmRlcmVkQ29udGVudE9mZnNldE5lZWRzUmV3cml0ZT8odGhpcy5fcmVuZGVyZWRDb250ZW50T2Zmc2V0LT10aGlzLm1lYXN1cmVSZW5kZXJlZENvbnRlbnRTaXplKCksdGhpcy5fcmVuZGVyZWRDb250ZW50T2Zmc2V0TmVlZHNSZXdyaXRlPSExLHRoaXMuc2V0UmVuZGVyZWRDb250ZW50T2Zmc2V0KHRoaXMuX3JlbmRlcmVkQ29udGVudE9mZnNldCkpOnRoaXMuX3Njcm9sbFN0cmF0ZWd5Lm9uUmVuZGVyZWRPZmZzZXRDaGFuZ2VkKCl9KSkpfXNjcm9sbFRvT2Zmc2V0KHQsZT0iYXV0byIpe2NvbnN0IG49e2JlaGF2aW9yOmV9OyJob3Jpem9udGFsIj09PXRoaXMub3JpZW50YXRpb24/bi5zdGFydD10Om4udG9wPXQsdGhpcy5zY3JvbGxUbyhuKX1zY3JvbGxUb0luZGV4KHQsZT0iYXV0byIpe3RoaXMuX3Njcm9sbFN0cmF0ZWd5LnNjcm9sbFRvSW5kZXgodCxlKX1tZWFzdXJlU2Nyb2xsT2Zmc2V0KHQpe3JldHVybiBzdXBlci5tZWFzdXJlU2Nyb2xsT2Zmc2V0KHR8fCgiaG9yaXpvbnRhbCI9PT10aGlzLm9yaWVudGF0aW9uPyJzdGFydCI6InRvcCIpKX1tZWFzdXJlUmVuZGVyZWRDb250ZW50U2l6ZSgpe2NvbnN0IHQ9dGhpcy5fY29udGVudFdyYXBwZXIubmF0aXZlRWxlbWVudDtyZXR1cm4iaG9yaXpvbnRhbCI9PT10aGlzLm9yaWVudGF0aW9uP3Qub2Zmc2V0V2lkdGg6dC5vZmZzZXRIZWlnaHR9bWVhc3VyZVJhbmdlU2l6ZSh0KXtyZXR1cm4gdGhpcy5fZm9yT2Y/dGhpcy5fZm9yT2YubWVhc3VyZVJhbmdlU2l6ZSh0LHRoaXMub3JpZW50YXRpb24pOjB9Y2hlY2tWaWV3cG9ydFNpemUoKXt0aGlzLl9tZWFzdXJlVmlld3BvcnRTaXplKCksdGhpcy5fc2Nyb2xsU3RyYXRlZ3kub25EYXRhTGVuZ3RoQ2hhbmdlZCgpfV9tZWFzdXJlVmlld3BvcnRTaXplKCl7Y29uc3QgdD10aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDt0aGlzLl92aWV3cG9ydFNpemU9Imhvcml6b250YWwiPT09dGhpcy5vcmllbnRhdGlvbj90LmNsaWVudFdpZHRoOnQuY2xpZW50SGVpZ2h0fV9tYXJrQ2hhbmdlRGV0ZWN0aW9uTmVlZGVkKHQpe3QmJnRoaXMuX3J1bkFmdGVyQ2hhbmdlRGV0ZWN0aW9uLnB1c2godCksdGhpcy5faXNDaGFuZ2VEZXRlY3Rpb25QZW5kaW5nfHwodGhpcy5faXNDaGFuZ2VEZXRlY3Rpb25QZW5kaW5nPSEwLHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKCk9Pnt0aGlzLl9kb0NoYW5nZURldGVjdGlvbigpfSkpKSkpfV9kb0NoYW5nZURldGVjdGlvbigpe3RoaXMuX2lzQ2hhbmdlRGV0ZWN0aW9uUGVuZGluZz0hMSx0aGlzLl9jb250ZW50V3JhcHBlci5uYXRpdmVFbGVtZW50LnN0eWxlLnRyYW5zZm9ybT10aGlzLl9yZW5kZXJlZENvbnRlbnRUcmFuc2Zvcm0sdGhpcy5uZ1pvbmUucnVuKCgoKT0+dGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCkpKTtjb25zdCB0PXRoaXMuX3J1bkFmdGVyQ2hhbmdlRGV0ZWN0aW9uO3RoaXMuX3J1bkFmdGVyQ2hhbmdlRGV0ZWN0aW9uPVtdO2Zvcihjb25zdCBlIG9mIHQpZSgpfV9jYWxjdWxhdGVTcGFjZXJTaXplKCl7dGhpcy5fdG90YWxDb250ZW50SGVpZ2h0PSJob3Jpem9udGFsIj09PXRoaXMub3JpZW50YXRpb24/IiI6YCR7dGhpcy5fdG90YWxDb250ZW50U2l6ZX1weGAsdGhpcy5fdG90YWxDb250ZW50V2lkdGg9Imhvcml6b250YWwiPT09dGhpcy5vcmllbnRhdGlvbj9gJHt0aGlzLl90b3RhbENvbnRlbnRTaXplfXB4YDoiIn19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpmdW5jdGlvbiBlQih0LGUsbil7aWYoIW4uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KXJldHVybiAwO2NvbnN0IG89bi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm4iaG9yaXpvbnRhbCI9PT10PyJzdGFydCI9PT1lP28ubGVmdDpvLnJpZ2h0OiJzdGFydCI9PT1lP28udG9wOm8uYm90dG9tfXRCLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx0QikoZ2YoS2gpLGdmKE9iKSxnZihtQyksZ2YoWUwsOCksZ2YodkYsOCksZ2YoS0wpLGdmKFFMKSl9LHRCLsm1Y21wPXNvKHt0eXBlOnRCLHNlbGVjdG9yczpbWyJjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJlZ5KEdMLDcpLDImZSl7bGV0IHQ7QnkodD1VeSgpKSYmKG4uX2NvbnRlbnRXcmFwcGVyPXQuZmlyc3QpfX0saG9zdEF0dHJzOlsxLCJjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQiXSxob3N0VmFyczo0LGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MiZlJiZjdSgiY2RrLXZpcnR1YWwtc2Nyb2xsLW9yaWVudGF0aW9uLWhvcml6b250YWwiLCJob3Jpem9udGFsIj09PW4ub3JpZW50YXRpb24pKCJjZGstdmlydHVhbC1zY3JvbGwtb3JpZW50YXRpb24tdmVydGljYWwiLCJob3Jpem9udGFsIiE9PW4ub3JpZW50YXRpb24pfSxpbnB1dHM6e29yaWVudGF0aW9uOiJvcmllbnRhdGlvbiIsYXBwZW5kT25seToiYXBwZW5kT25seSJ9LG91dHB1dHM6e3Njcm9sbGVkSW5kZXhDaGFuZ2U6InNjcm9sbGVkSW5kZXhDaGFuZ2UifSxmZWF0dXJlczpbamgoW3twcm92aWRlOkpMLHVzZUV4aXN0aW5nOnRCfV0pLFFwXSxuZ0NvbnRlbnRTZWxlY3RvcnM6WyIqIl0sZGVjbHM6NCx2YXJzOjQsY29uc3RzOltbMSwiY2RrLXZpcnR1YWwtc2Nyb2xsLWNvbnRlbnQtd3JhcHBlciJdLFsiY29udGVudFdyYXBwZXIiLCIiXSxbMSwiY2RrLXZpcnR1YWwtc2Nyb2xsLXNwYWNlciJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoSGYoKSxDZigwLCJkaXYiLDAsMSksRmYoMiksTWYoKSx2ZigzLCJkaXYiLDIpKSwyJmUmJihEYygzKSxsdSgid2lkdGgiLG4uX3RvdGFsQ29udGVudFdpZHRoKSgiaGVpZ2h0IixuLl90b3RhbENvbnRlbnRIZWlnaHQpKX0sc3R5bGVzOlsiY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0e2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3c6YXV0bztjb250YWluOnN0cmljdDt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKTt3aWxsLWNoYW5nZTpzY3JvbGwtcG9zaXRpb247LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6dG91Y2h9LmNkay12aXJ0dWFsLXNjcm9sbC1jb250ZW50LXdyYXBwZXJ7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO2NvbnRhaW46Y29udGVudH1bZGlyPXJ0bF0gLmNkay12aXJ0dWFsLXNjcm9sbC1jb250ZW50LXdyYXBwZXJ7cmlnaHQ6MDtsZWZ0OmF1dG99LmNkay12aXJ0dWFsLXNjcm9sbC1vcmllbnRhdGlvbi1ob3Jpem9udGFsIC5jZGstdmlydHVhbC1zY3JvbGwtY29udGVudC13cmFwcGVye21pbi1oZWlnaHQ6MTAwJX0uY2RrLXZpcnR1YWwtc2Nyb2xsLW9yaWVudGF0aW9uLWhvcml6b250YWwgLmNkay12aXJ0dWFsLXNjcm9sbC1jb250ZW50LXdyYXBwZXI+ZGw6bm90KFtjZGtWaXJ0dWFsRm9yXSksLmNkay12aXJ0dWFsLXNjcm9sbC1vcmllbnRhdGlvbi1ob3Jpem9udGFsIC5jZGstdmlydHVhbC1zY3JvbGwtY29udGVudC13cmFwcGVyPm9sOm5vdChbY2RrVmlydHVhbEZvcl0pLC5jZGstdmlydHVhbC1zY3JvbGwtb3JpZW50YXRpb24taG9yaXpvbnRhbCAuY2RrLXZpcnR1YWwtc2Nyb2xsLWNvbnRlbnQtd3JhcHBlcj50YWJsZTpub3QoW2Nka1ZpcnR1YWxGb3JdKSwuY2RrLXZpcnR1YWwtc2Nyb2xsLW9yaWVudGF0aW9uLWhvcml6b250YWwgLmNkay12aXJ0dWFsLXNjcm9sbC1jb250ZW50LXdyYXBwZXI+dWw6bm90KFtjZGtWaXJ0dWFsRm9yXSl7cGFkZGluZy1sZWZ0OjA7cGFkZGluZy1yaWdodDowO21hcmdpbi1sZWZ0OjA7bWFyZ2luLXJpZ2h0OjA7Ym9yZGVyLWxlZnQtd2lkdGg6MDtib3JkZXItcmlnaHQtd2lkdGg6MDtvdXRsaW5lOm5vbmV9LmNkay12aXJ0dWFsLXNjcm9sbC1vcmllbnRhdGlvbi12ZXJ0aWNhbCAuY2RrLXZpcnR1YWwtc2Nyb2xsLWNvbnRlbnQtd3JhcHBlcnttaW4td2lkdGg6MTAwJX0uY2RrLXZpcnR1YWwtc2Nyb2xsLW9yaWVudGF0aW9uLXZlcnRpY2FsIC5jZGstdmlydHVhbC1zY3JvbGwtY29udGVudC13cmFwcGVyPmRsOm5vdChbY2RrVmlydHVhbEZvcl0pLC5jZGstdmlydHVhbC1zY3JvbGwtb3JpZW50YXRpb24tdmVydGljYWwgLmNkay12aXJ0dWFsLXNjcm9sbC1jb250ZW50LXdyYXBwZXI+b2w6bm90KFtjZGtWaXJ0dWFsRm9yXSksLmNkay12aXJ0dWFsLXNjcm9sbC1vcmllbnRhdGlvbi12ZXJ0aWNhbCAuY2RrLXZpcnR1YWwtc2Nyb2xsLWNvbnRlbnQtd3JhcHBlcj50YWJsZTpub3QoW2Nka1ZpcnR1YWxGb3JdKSwuY2RrLXZpcnR1YWwtc2Nyb2xsLW9yaWVudGF0aW9uLXZlcnRpY2FsIC5jZGstdmlydHVhbC1zY3JvbGwtY29udGVudC13cmFwcGVyPnVsOm5vdChbY2RrVmlydHVhbEZvcl0pe3BhZGRpbmctdG9wOjA7cGFkZGluZy1ib3R0b206MDttYXJnaW4tdG9wOjA7bWFyZ2luLWJvdHRvbTowO2JvcmRlci10b3Atd2lkdGg6MDtib3JkZXItYm90dG9tLXdpZHRoOjA7b3V0bGluZTpub25lfS5jZGstdmlydHVhbC1zY3JvbGwtc3BhY2Vye3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MXB4O3dpZHRoOjFweDt0cmFuc2Zvcm0tb3JpZ2luOjAgMH1bZGlyPXJ0bF0gLmNkay12aXJ0dWFsLXNjcm9sbC1zcGFjZXJ7cmlnaHQ6MDtsZWZ0OmF1dG87dHJhbnNmb3JtLW9yaWdpbjoxMDAlIDB9XG4iXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSx0Qi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOktofSx7dHlwZTpPYn0se3R5cGU6bUN9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbWUxdfV19LHt0eXBlOnZGLGRlY29yYXRvcnM6W3t0eXBlOkJyfV19LHt0eXBlOktMfSx7dHlwZTpRTH1dLHRCLnByb3BEZWNvcmF0b3JzPXtvcmllbnRhdGlvbjpbe3R5cGU6Ul99XSxhcHBlbmRPbmx5Olt7dHlwZTpSX31dLHNjcm9sbGVkSW5kZXhDaGFuZ2U6W3t0eXBlOkVffV0sX2NvbnRlbnRXcmFwcGVyOlt7dHlwZTphcixhcmdzOlsiY29udGVudFdyYXBwZXIiLHtzdGF0aWM6ITB9XX1dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHRCLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6ImNkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydCIsdGVtcGxhdGU6J1x4M2MhLS1cbiAgV3JhcCB0aGUgcmVuZGVyZWQgY29udGVudCBpbiBhbiBlbGVtZW50IHRoYXQgd2lsbCBiZSB1c2VkIHRvIG9mZnNldCBpdCBiYXNlZCBvbiB0aGUgc2Nyb2xsXG4gIHBvc2l0aW9uLlxuLS1ceDNlXG48ZGl2ICNjb250ZW50V3JhcHBlciBjbGFzcz0iY2RrLXZpcnR1YWwtc2Nyb2xsLWNvbnRlbnQtd3JhcHBlciI+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvZGl2PlxuXHgzYyEtLVxuICBTcGFjZXIgdXNlZCB0byBmb3JjZSB0aGUgc2Nyb2xsaW5nIGNvbnRhaW5lciB0byB0aGUgY29ycmVjdCBzaXplIGZvciB0aGUgKnRvdGFsKiBudW1iZXIgb2YgaXRlbXNcbiAgc28gdGhhdCB0aGUgc2Nyb2xsYmFyIGNhcHR1cmVzIHRoZSBzaXplIG9mIHRoZSBlbnRpcmUgZGF0YSBzZXQuXG4tLVx4M2VcbjxkaXYgY2xhc3M9ImNkay12aXJ0dWFsLXNjcm9sbC1zcGFjZXIiXG4gICAgIFtzdHlsZS53aWR0aF09Il90b3RhbENvbnRlbnRXaWR0aCIgW3N0eWxlLmhlaWdodF09Il90b3RhbENvbnRlbnRIZWlnaHQiPjwvZGl2PlxuJyxob3N0OntjbGFzczoiY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0IiwiW2NsYXNzLmNkay12aXJ0dWFsLXNjcm9sbC1vcmllbnRhdGlvbi1ob3Jpem9udGFsXSI6J29yaWVudGF0aW9uID09PSAiaG9yaXpvbnRhbCInLCJbY2xhc3MuY2RrLXZpcnR1YWwtc2Nyb2xsLW9yaWVudGF0aW9uLXZlcnRpY2FsXSI6J29yaWVudGF0aW9uICE9PSAiaG9yaXpvbnRhbCInfSxlbmNhcHN1bGF0aW9uOlduLk5vbmUsY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaCxwcm92aWRlcnM6W3twcm92aWRlOkpMLHVzZUV4aXN0aW5nOnRCfV0sc3R5bGVzOlsiY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0e2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3c6YXV0bztjb250YWluOnN0cmljdDt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKTt3aWxsLWNoYW5nZTpzY3JvbGwtcG9zaXRpb247LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6dG91Y2h9LmNkay12aXJ0dWFsLXNjcm9sbC1jb250ZW50LXdyYXBwZXJ7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO2NvbnRhaW46Y29udGVudH1bZGlyPXJ0bF0gLmNkay12aXJ0dWFsLXNjcm9sbC1jb250ZW50LXdyYXBwZXJ7cmlnaHQ6MDtsZWZ0OmF1dG99LmNkay12aXJ0dWFsLXNjcm9sbC1vcmllbnRhdGlvbi1ob3Jpem9udGFsIC5jZGstdmlydHVhbC1zY3JvbGwtY29udGVudC13cmFwcGVye21pbi1oZWlnaHQ6MTAwJX0uY2RrLXZpcnR1YWwtc2Nyb2xsLW9yaWVudGF0aW9uLWhvcml6b250YWwgLmNkay12aXJ0dWFsLXNjcm9sbC1jb250ZW50LXdyYXBwZXI+ZGw6bm90KFtjZGtWaXJ0dWFsRm9yXSksLmNkay12aXJ0dWFsLXNjcm9sbC1vcmllbnRhdGlvbi1ob3Jpem9udGFsIC5jZGstdmlydHVhbC1zY3JvbGwtY29udGVudC13cmFwcGVyPm9sOm5vdChbY2RrVmlydHVhbEZvcl0pLC5jZGstdmlydHVhbC1zY3JvbGwtb3JpZW50YXRpb24taG9yaXpvbnRhbCAuY2RrLXZpcnR1YWwtc2Nyb2xsLWNvbnRlbnQtd3JhcHBlcj50YWJsZTpub3QoW2Nka1ZpcnR1YWxGb3JdKSwuY2RrLXZpcnR1YWwtc2Nyb2xsLW9yaWVudGF0aW9uLWhvcml6b250YWwgLmNkay12aXJ0dWFsLXNjcm9sbC1jb250ZW50LXdyYXBwZXI+dWw6bm90KFtjZGtWaXJ0dWFsRm9yXSl7cGFkZGluZy1sZWZ0OjA7cGFkZGluZy1yaWdodDowO21hcmdpbi1sZWZ0OjA7bWFyZ2luLXJpZ2h0OjA7Ym9yZGVyLWxlZnQtd2lkdGg6MDtib3JkZXItcmlnaHQtd2lkdGg6MDtvdXRsaW5lOm5vbmV9LmNkay12aXJ0dWFsLXNjcm9sbC1vcmllbnRhdGlvbi12ZXJ0aWNhbCAuY2RrLXZpcnR1YWwtc2Nyb2xsLWNvbnRlbnQtd3JhcHBlcnttaW4td2lkdGg6MTAwJX0uY2RrLXZpcnR1YWwtc2Nyb2xsLW9yaWVudGF0aW9uLXZlcnRpY2FsIC5jZGstdmlydHVhbC1zY3JvbGwtY29udGVudC13cmFwcGVyPmRsOm5vdChbY2RrVmlydHVhbEZvcl0pLC5jZGstdmlydHVhbC1zY3JvbGwtb3JpZW50YXRpb24tdmVydGljYWwgLmNkay12aXJ0dWFsLXNjcm9sbC1jb250ZW50LXdyYXBwZXI+b2w6bm90KFtjZGtWaXJ0dWFsRm9yXSksLmNkay12aXJ0dWFsLXNjcm9sbC1vcmllbnRhdGlvbi12ZXJ0aWNhbCAuY2RrLXZpcnR1YWwtc2Nyb2xsLWNvbnRlbnQtd3JhcHBlcj50YWJsZTpub3QoW2Nka1ZpcnR1YWxGb3JdKSwuY2RrLXZpcnR1YWwtc2Nyb2xsLW9yaWVudGF0aW9uLXZlcnRpY2FsIC5jZGstdmlydHVhbC1zY3JvbGwtY29udGVudC13cmFwcGVyPnVsOm5vdChbY2RrVmlydHVhbEZvcl0pe3BhZGRpbmctdG9wOjA7cGFkZGluZy1ib3R0b206MDttYXJnaW4tdG9wOjA7bWFyZ2luLWJvdHRvbTowO2JvcmRlci10b3Atd2lkdGg6MDtib3JkZXItYm90dG9tLXdpZHRoOjA7b3V0bGluZTpub25lfS5jZGstdmlydHVhbC1zY3JvbGwtc3BhY2Vye3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MXB4O3dpZHRoOjFweDt0cmFuc2Zvcm0tb3JpZ2luOjAgMH1bZGlyPXJ0bF0gLmNkay12aXJ0dWFsLXNjcm9sbC1zcGFjZXJ7cmlnaHQ6MDtsZWZ0OmF1dG87dHJhbnNmb3JtLW9yaWdpbjoxMDAlIDB9XG4iXX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOktofSx7dHlwZTpPYn0se3R5cGU6bUN9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbWUxdfV19LHt0eXBlOnZGLGRlY29yYXRvcnM6W3t0eXBlOkJyfV19LHt0eXBlOktMfSx7dHlwZTpRTH1dfSkse3Njcm9sbGVkSW5kZXhDaGFuZ2U6W3t0eXBlOkVffV0sb3JpZW50YXRpb246W3t0eXBlOlJffV0sYXBwZW5kT25seTpbe3R5cGU6Ul99XSxfY29udGVudFdyYXBwZXI6W3t0eXBlOmFyLGFyZ3M6WyJjb250ZW50V3JhcHBlciIse3N0YXRpYzohMH1dfV19KTtjbGFzcyBuQntjb25zdHJ1Y3Rvcih0LGUsbixvLGksYSl7dGhpcy5fdmlld0NvbnRhaW5lclJlZj10LHRoaXMuX3RlbXBsYXRlPWUsdGhpcy5fZGlmZmVycz1uLHRoaXMuX3ZpZXdSZXBlYXRlcj1vLHRoaXMuX3ZpZXdwb3J0PWksdGhpcy52aWV3Q2hhbmdlPW5ldyBCLHRoaXMuX2RhdGFTb3VyY2VDaGFuZ2VzPW5ldyBCLHRoaXMuZGF0YVN0cmVhbT10aGlzLl9kYXRhU291cmNlQ2hhbmdlcy5waXBlKEJlKG51bGwpLE5lKCksVmUoKChbdCxlXSk9PnRoaXMuX2NoYW5nZURhdGFTb3VyY2UodCxlKSkpLEZlKDEpKSx0aGlzLl9kaWZmZXI9bnVsbCx0aGlzLl9uZWVkc1VwZGF0ZT0hMSx0aGlzLl9kZXN0cm95ZWQ9bmV3IEIsdGhpcy5kYXRhU3RyZWFtLnN1YnNjcmliZSgodD0+e3RoaXMuX2RhdGE9dCx0aGlzLl9vblJlbmRlcmVkRGF0YUNoYW5nZSgpfSkpLHRoaXMuX3ZpZXdwb3J0LnJlbmRlcmVkUmFuZ2VTdHJlYW0ucGlwZShqZSh0aGlzLl9kZXN0cm95ZWQpKS5zdWJzY3JpYmUoKHQ9Pnt0aGlzLl9yZW5kZXJlZFJhbmdlPXQsYS5ydW4oKCgpPT50aGlzLnZpZXdDaGFuZ2UubmV4dCh0aGlzLl9yZW5kZXJlZFJhbmdlKSkpLHRoaXMuX29uUmVuZGVyZWREYXRhQ2hhbmdlKCl9KSksdGhpcy5fdmlld3BvcnQuYXR0YWNoKHRoaXMpfWdldCBjZGtWaXJ0dWFsRm9yT2YoKXtyZXR1cm4gdGhpcy5fY2RrVmlydHVhbEZvck9mfXNldCBjZGtWaXJ0dWFsRm9yT2YodCl7dGhpcy5fY2RrVmlydHVhbEZvck9mPXQsRkwodCk/dGhpcy5fZGF0YVNvdXJjZUNoYW5nZXMubmV4dCh0KTp0aGlzLl9kYXRhU291cmNlQ2hhbmdlcy5uZXh0KG5ldyBMTChMdCh0KT90OkFycmF5LmZyb20odHx8W10pKSl9Z2V0IGNka1ZpcnR1YWxGb3JUcmFja0J5KCl7cmV0dXJuIHRoaXMuX2Nka1ZpcnR1YWxGb3JUcmFja0J5fXNldCBjZGtWaXJ0dWFsRm9yVHJhY2tCeSh0KXt0aGlzLl9uZWVkc1VwZGF0ZT0hMCx0aGlzLl9jZGtWaXJ0dWFsRm9yVHJhY2tCeT10PyhlLG4pPT50KGUrKHRoaXMuX3JlbmRlcmVkUmFuZ2U/dGhpcy5fcmVuZGVyZWRSYW5nZS5zdGFydDowKSxuKTp2b2lkIDB9c2V0IGNka1ZpcnR1YWxGb3JUZW1wbGF0ZSh0KXt0JiYodGhpcy5fbmVlZHNVcGRhdGU9ITAsdGhpcy5fdGVtcGxhdGU9dCl9Z2V0IGNka1ZpcnR1YWxGb3JUZW1wbGF0ZUNhY2hlU2l6ZSgpe3JldHVybiB0aGlzLl92aWV3UmVwZWF0ZXIudmlld0NhY2hlU2l6ZX1zZXQgY2RrVmlydHVhbEZvclRlbXBsYXRlQ2FjaGVTaXplKHQpe3RoaXMuX3ZpZXdSZXBlYXRlci52aWV3Q2FjaGVTaXplPW5IKHQpfW1lYXN1cmVSYW5nZVNpemUodCxlKXtpZih0LnN0YXJ0Pj10LmVuZClyZXR1cm4gMDtpZigodC5zdGFydDx0aGlzLl9yZW5kZXJlZFJhbmdlLnN0YXJ0fHx0LmVuZD50aGlzLl9yZW5kZXJlZFJhbmdlLmVuZCkmJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSl0aHJvdyBFcnJvcigiRXJyb3I6IGF0dGVtcHRlZCB0byBtZWFzdXJlIGFuIGl0ZW0gdGhhdCBpc24ndCByZW5kZXJlZC4iKTtjb25zdCBuPXQuc3RhcnQtdGhpcy5fcmVuZGVyZWRSYW5nZS5zdGFydCxvPXQuZW5kLXQuc3RhcnQ7bGV0IGksYTtmb3IobGV0IHQ9MDt0PG87dCsrKXtjb25zdCBlPXRoaXMuX3ZpZXdDb250YWluZXJSZWYuZ2V0KHQrbik7aWYoZSYmZS5yb290Tm9kZXMubGVuZ3RoKXtpPWE9ZS5yb290Tm9kZXNbMF07YnJlYWt9fWZvcihsZXQgdD1vLTE7dD4tMTt0LS0pe2NvbnN0IGU9dGhpcy5fdmlld0NvbnRhaW5lclJlZi5nZXQodCtuKTtpZihlJiZlLnJvb3ROb2Rlcy5sZW5ndGgpe2E9ZS5yb290Tm9kZXNbZS5yb290Tm9kZXMubGVuZ3RoLTFdO2JyZWFrfX1yZXR1cm4gaSYmYT9lQihlLCJlbmQiLGEpLWVCKGUsInN0YXJ0IixpKTowfW5nRG9DaGVjaygpe2lmKHRoaXMuX2RpZmZlciYmdGhpcy5fbmVlZHNVcGRhdGUpe2NvbnN0IHQ9dGhpcy5fZGlmZmVyLmRpZmYodGhpcy5fcmVuZGVyZWRJdGVtcyk7dD90aGlzLl9hcHBseUNoYW5nZXModCk6dGhpcy5fdXBkYXRlQ29udGV4dCgpLHRoaXMuX25lZWRzVXBkYXRlPSExfX1uZ09uRGVzdHJveSgpe3RoaXMuX3ZpZXdwb3J0LmRldGFjaCgpLHRoaXMuX2RhdGFTb3VyY2VDaGFuZ2VzLm5leHQodm9pZCAwKSx0aGlzLl9kYXRhU291cmNlQ2hhbmdlcy5jb21wbGV0ZSgpLHRoaXMudmlld0NoYW5nZS5jb21wbGV0ZSgpLHRoaXMuX2Rlc3Ryb3llZC5uZXh0KCksdGhpcy5fZGVzdHJveWVkLmNvbXBsZXRlKCksdGhpcy5fdmlld1JlcGVhdGVyLmRldGFjaCgpfV9vblJlbmRlcmVkRGF0YUNoYW5nZSgpe3RoaXMuX3JlbmRlcmVkUmFuZ2UmJih0aGlzLl9yZW5kZXJlZEl0ZW1zPXRoaXMuX2RhdGEuc2xpY2UodGhpcy5fcmVuZGVyZWRSYW5nZS5zdGFydCx0aGlzLl9yZW5kZXJlZFJhbmdlLmVuZCksdGhpcy5fZGlmZmVyfHwodGhpcy5fZGlmZmVyPXRoaXMuX2RpZmZlcnMuZmluZCh0aGlzLl9yZW5kZXJlZEl0ZW1zKS5jcmVhdGUoKCh0LGUpPT50aGlzLmNka1ZpcnR1YWxGb3JUcmFja0J5P3RoaXMuY2RrVmlydHVhbEZvclRyYWNrQnkodCxlKTplKSkpLHRoaXMuX25lZWRzVXBkYXRlPSEwKX1fY2hhbmdlRGF0YVNvdXJjZSh0LGUpe3JldHVybiB0JiZ0LmRpc2Nvbm5lY3QodGhpcyksdGhpcy5fbmVlZHNVcGRhdGU9ITAsZT9lLmNvbm5lY3QodGhpcyk6enQoKX1fdXBkYXRlQ29udGV4dCgpe2NvbnN0IHQ9dGhpcy5fZGF0YS5sZW5ndGg7bGV0IGU9dGhpcy5fdmlld0NvbnRhaW5lclJlZi5sZW5ndGg7Zm9yKDtlLS07KXtjb25zdCBuPXRoaXMuX3ZpZXdDb250YWluZXJSZWYuZ2V0KGUpO24uY29udGV4dC5pbmRleD10aGlzLl9yZW5kZXJlZFJhbmdlLnN0YXJ0K2Usbi5jb250ZXh0LmNvdW50PXQsdGhpcy5fdXBkYXRlQ29tcHV0ZWRDb250ZXh0UHJvcGVydGllcyhuLmNvbnRleHQpLG4uZGV0ZWN0Q2hhbmdlcygpfX1fYXBwbHlDaGFuZ2VzKHQpe3RoaXMuX3ZpZXdSZXBlYXRlci5hcHBseUNoYW5nZXModCx0aGlzLl92aWV3Q29udGFpbmVyUmVmLCgodCxlLG4pPT50aGlzLl9nZXRFbWJlZGRlZFZpZXdBcmdzKHQsbikpLCh0PT50Lml0ZW0pKSx0LmZvckVhY2hJZGVudGl0eUNoYW5nZSgodD0+e3RoaXMuX3ZpZXdDb250YWluZXJSZWYuZ2V0KHQuY3VycmVudEluZGV4KS5jb250ZXh0LiRpbXBsaWNpdD10Lml0ZW19KSk7Y29uc3QgZT10aGlzLl9kYXRhLmxlbmd0aDtsZXQgbj10aGlzLl92aWV3Q29udGFpbmVyUmVmLmxlbmd0aDtmb3IoO24tLTspe2NvbnN0IHQ9dGhpcy5fdmlld0NvbnRhaW5lclJlZi5nZXQobik7dC5jb250ZXh0LmluZGV4PXRoaXMuX3JlbmRlcmVkUmFuZ2Uuc3RhcnQrbix0LmNvbnRleHQuY291bnQ9ZSx0aGlzLl91cGRhdGVDb21wdXRlZENvbnRleHRQcm9wZXJ0aWVzKHQuY29udGV4dCl9fV91cGRhdGVDb21wdXRlZENvbnRleHRQcm9wZXJ0aWVzKHQpe3QuZmlyc3Q9MD09PXQuaW5kZXgsdC5sYXN0PXQuaW5kZXg9PT10LmNvdW50LTEsdC5ldmVuPXQuaW5kZXglMj09MCx0Lm9kZD0hdC5ldmVufV9nZXRFbWJlZGRlZFZpZXdBcmdzKHQsZSl7cmV0dXJue3RlbXBsYXRlUmVmOnRoaXMuX3RlbXBsYXRlLGNvbnRleHQ6eyRpbXBsaWNpdDp0Lml0ZW0sY2RrVmlydHVhbEZvck9mOnRoaXMuX2Nka1ZpcnR1YWxGb3JPZixpbmRleDotMSxjb3VudDotMSxmaXJzdDohMSxsYXN0OiExLG9kZDohMSxldmVuOiExfSxpbmRleDplfX19bkIuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fG5CKShnZihGYiksZ2YoRWIpLGdmKGhiKSxnZihXTCksZ2YodEIsNCksZ2YobUMpKX0sbkIuybVkaXI9aG8oe3R5cGU6bkIsc2VsZWN0b3JzOltbIiIsImNka1ZpcnR1YWxGb3IiLCIiLCJjZGtWaXJ0dWFsRm9yT2YiLCIiXV0saW5wdXRzOntjZGtWaXJ0dWFsRm9yT2Y6ImNka1ZpcnR1YWxGb3JPZiIsY2RrVmlydHVhbEZvclRyYWNrQnk6ImNka1ZpcnR1YWxGb3JUcmFja0J5IixjZGtWaXJ0dWFsRm9yVGVtcGxhdGU6ImNka1ZpcnR1YWxGb3JUZW1wbGF0ZSIsY2RrVmlydHVhbEZvclRlbXBsYXRlQ2FjaGVTaXplOiJjZGtWaXJ0dWFsRm9yVGVtcGxhdGVDYWNoZVNpemUifSxmZWF0dXJlczpbamgoW3twcm92aWRlOldMLHVzZUNsYXNzOlZMfV0pXX0pLG5CLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6RmJ9LHt0eXBlOkVifSx7dHlwZTpoYn0se3R5cGU6VkwsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbV0xdfV19LHt0eXBlOnRCLGRlY29yYXRvcnM6W3t0eXBlOmpyfV19LHt0eXBlOm1DfV0sbkIucHJvcERlY29yYXRvcnM9e2Nka1ZpcnR1YWxGb3JPZjpbe3R5cGU6Ul99XSxjZGtWaXJ0dWFsRm9yVHJhY2tCeTpbe3R5cGU6Ul99XSxjZGtWaXJ0dWFsRm9yVGVtcGxhdGU6W3t0eXBlOlJffV0sY2RrVmlydHVhbEZvclRlbXBsYXRlQ2FjaGVTaXplOlt7dHlwZTpSX31dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKG5CLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6IltjZGtWaXJ0dWFsRm9yXVtjZGtWaXJ0dWFsRm9yT2ZdIixwcm92aWRlcnM6W3twcm92aWRlOldMLHVzZUNsYXNzOlZMfV19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpGYn0se3R5cGU6RWJ9LHt0eXBlOmhifSx7dHlwZTpWTCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltXTF19XX0se3R5cGU6dEIsZGVjb3JhdG9yczpbe3R5cGU6anJ9XX0se3R5cGU6bUN9XX0pLHtjZGtWaXJ0dWFsRm9yT2Y6W3t0eXBlOlJffV0sY2RrVmlydHVhbEZvclRyYWNrQnk6W3t0eXBlOlJffV0sY2RrVmlydHVhbEZvclRlbXBsYXRlOlt7dHlwZTpSX31dLGNka1ZpcnR1YWxGb3JUZW1wbGF0ZUNhY2hlU2l6ZTpbe3R5cGU6Ul99XX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3Mgb0J7fW9CLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxvQil9LG9CLsm1bW9kPWZvKHt0eXBlOm9CfSksb0IuybVpbmo9RG4oe30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIob0IsW3t0eXBlOkxfLGFyZ3M6W3tleHBvcnRzOltKTF0sZGVjbGFyYXRpb25zOltKTF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhvQix7ZGVjbGFyYXRpb25zOltKTF0sZXhwb3J0czpbSkxdfSk7Y2xhc3MgaUJ7fWZ1bmN0aW9uIGFCKCl7dGhyb3cgRXJyb3IoIkhvc3QgYWxyZWFkeSBoYXMgYSBwb3J0YWwgYXR0YWNoZWQiKX1pQi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8aUIpfSxpQi7JtW1vZD1mbyh7dHlwZTppQn0pLGlCLsm1aW5qPURuKHtpbXBvcnRzOltbT0YsZEgsb0JdLE9GLG9CXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoaUIsW3t0eXBlOkxfLGFyZ3M6W3tpbXBvcnRzOltPRixkSCxvQl0sZXhwb3J0czpbT0Ysb0IsWEwsbkIsdEJdLGRlY2xhcmF0aW9uczpbWEwsbkIsdEJdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8oaUIse2RlY2xhcmF0aW9uczpmdW5jdGlvbigpe3JldHVybltYTCxuQix0Ql19LGltcG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bT0YsZEgsb0JdfSxleHBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW09GLG9CLFhMLG5CLHRCXX19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIHJCe2F0dGFjaCh0KXtyZXR1cm4oInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJihudWxsPT10JiYoZnVuY3Rpb24gZSgpe3Rocm93IEVycm9yKCJBdHRlbXB0aW5nIHRvIGF0dGFjaCBhIHBvcnRhbCB0byBhIG51bGwgUG9ydGFsT3V0bGV0Iil9KSgpLHQuaGFzQXR0YWNoZWQoKSYmYUIoKSksdGhpcy5fYXR0YWNoZWRIb3N0PXQsdC5hdHRhY2godGhpcyl9ZGV0YWNoKCl7bGV0IHQ9dGhpcy5fYXR0YWNoZWRIb3N0O251bGwhPXQ/KHRoaXMuX2F0dGFjaGVkSG9zdD1udWxsLHQuZGV0YWNoKCkpOigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmKGZ1bmN0aW9uIGUoKXt0aHJvdyBFcnJvcigiQXR0ZW1wdGluZyB0byBkZXRhY2ggYSBwb3J0YWwgdGhhdCBpcyBub3QgYXR0YWNoZWQgdG8gYSBob3N0Iil9KSgpfWdldCBpc0F0dGFjaGVkKCl7cmV0dXJuIG51bGwhPXRoaXMuX2F0dGFjaGVkSG9zdH1zZXRBdHRhY2hlZEhvc3QodCl7dGhpcy5fYXR0YWNoZWRIb3N0PXR9fWNsYXNzIHNCIGV4dGVuZHMgckJ7Y29uc3RydWN0b3IodCxlLG4sbyl7c3VwZXIoKSx0aGlzLmNvbXBvbmVudD10LHRoaXMudmlld0NvbnRhaW5lclJlZj1lLHRoaXMuaW5qZWN0b3I9bix0aGlzLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcj1vfX1jbGFzcyBsQiBleHRlbmRzIHJCe2NvbnN0cnVjdG9yKHQsZSxuKXtzdXBlcigpLHRoaXMudGVtcGxhdGVSZWY9dCx0aGlzLnZpZXdDb250YWluZXJSZWY9ZSx0aGlzLmNvbnRleHQ9bn1nZXQgb3JpZ2luKCl7cmV0dXJuIHRoaXMudGVtcGxhdGVSZWYuZWxlbWVudFJlZn1hdHRhY2godCxlPXRoaXMuY29udGV4dCl7cmV0dXJuIHRoaXMuY29udGV4dD1lLHN1cGVyLmF0dGFjaCh0KX1kZXRhY2goKXtyZXR1cm4gdGhpcy5jb250ZXh0PXZvaWQgMCxzdXBlci5kZXRhY2goKX19Y2xhc3MgY0IgZXh0ZW5kcyByQntjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMuZWxlbWVudD10IGluc3RhbmNlb2YgS2g/dC5uYXRpdmVFbGVtZW50OnR9fWNsYXNzIGRCe2NvbnN0cnVjdG9yKCl7dGhpcy5faXNEaXNwb3NlZD0hMSx0aGlzLmF0dGFjaERvbVBvcnRhbD1udWxsfWhhc0F0dGFjaGVkKCl7cmV0dXJuISF0aGlzLl9hdHRhY2hlZFBvcnRhbH1hdHRhY2godCl7cmV0dXJuKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiYodHx8KGZ1bmN0aW9uIGUoKXt0aHJvdyBFcnJvcigiTXVzdCBwcm92aWRlIGEgcG9ydGFsIHRvIGF0dGFjaCIpfSkoKSx0aGlzLmhhc0F0dGFjaGVkKCkmJmFCKCksdGhpcy5faXNEaXNwb3NlZCYmKGZ1bmN0aW9uIG4oKXt0aHJvdyBFcnJvcigiVGhpcyBQb3J0YWxPdXRsZXQgaGFzIGFscmVhZHkgYmVlbiBkaXNwb3NlZCIpfSkoKSksdCBpbnN0YW5jZW9mIHNCPyh0aGlzLl9hdHRhY2hlZFBvcnRhbD10LHRoaXMuYXR0YWNoQ29tcG9uZW50UG9ydGFsKHQpKTp0IGluc3RhbmNlb2YgbEI/KHRoaXMuX2F0dGFjaGVkUG9ydGFsPXQsdGhpcy5hdHRhY2hUZW1wbGF0ZVBvcnRhbCh0KSk6dGhpcy5hdHRhY2hEb21Qb3J0YWwmJnQgaW5zdGFuY2VvZiBjQj8odGhpcy5fYXR0YWNoZWRQb3J0YWw9dCx0aGlzLmF0dGFjaERvbVBvcnRhbCh0KSk6dm9pZCgoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJihmdW5jdGlvbiBvKCl7dGhyb3cgRXJyb3IoIkF0dGVtcHRpbmcgdG8gYXR0YWNoIGFuIHVua25vd24gUG9ydGFsIHR5cGUuIEJhc2VQb3J0YWxPdXRsZXQgYWNjZXB0cyBlaXRoZXIgYSBDb21wb25lbnRQb3J0YWwgb3IgYSBUZW1wbGF0ZVBvcnRhbC4iKX0pKCkpfWRldGFjaCgpe3RoaXMuX2F0dGFjaGVkUG9ydGFsJiYodGhpcy5fYXR0YWNoZWRQb3J0YWwuc2V0QXR0YWNoZWRIb3N0KG51bGwpLHRoaXMuX2F0dGFjaGVkUG9ydGFsPW51bGwpLHRoaXMuX2ludm9rZURpc3Bvc2VGbigpfWRpc3Bvc2UoKXt0aGlzLmhhc0F0dGFjaGVkKCkmJnRoaXMuZGV0YWNoKCksdGhpcy5faW52b2tlRGlzcG9zZUZuKCksdGhpcy5faXNEaXNwb3NlZD0hMH1zZXREaXNwb3NlRm4odCl7dGhpcy5fZGlzcG9zZUZuPXR9X2ludm9rZURpc3Bvc2VGbigpe3RoaXMuX2Rpc3Bvc2VGbiYmKHRoaXMuX2Rpc3Bvc2VGbigpLHRoaXMuX2Rpc3Bvc2VGbj1udWxsKX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIHBCIGV4dGVuZHMgZEJ7Y29uc3RydWN0b3IodCxlLG4sbyxpKXtzdXBlcigpLHRoaXMub3V0bGV0RWxlbWVudD10LHRoaXMuX2NvbXBvbmVudEZhY3RvcnlSZXNvbHZlcj1lLHRoaXMuX2FwcFJlZj1uLHRoaXMuX2RlZmF1bHRJbmplY3Rvcj1vLHRoaXMuYXR0YWNoRG9tUG9ydGFsPXQ9PntpZighdGhpcy5fZG9jdW1lbnQmJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSl0aHJvdyBFcnJvcigiQ2Fubm90IGF0dGFjaCBET00gcG9ydGFsIHdpdGhvdXQgX2RvY3VtZW50IGNvbnN0cnVjdG9yIHBhcmFtZXRlciIpO2NvbnN0IGU9dC5lbGVtZW50O2lmKCFlLnBhcmVudE5vZGUmJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSl0aHJvdyBFcnJvcigiRE9NIHBvcnRhbCBjb250ZW50IG11c3QgYmUgYXR0YWNoZWQgdG8gYSBwYXJlbnQgbm9kZS4iKTtjb25zdCBuPXRoaXMuX2RvY3VtZW50LmNyZWF0ZUNvbW1lbnQoImRvbS1wb3J0YWwiKTtlLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKG4sZSksdGhpcy5vdXRsZXRFbGVtZW50LmFwcGVuZENoaWxkKGUpLHRoaXMuX2F0dGFjaGVkUG9ydGFsPXQsc3VwZXIuc2V0RGlzcG9zZUZuKCgoKT0+e24ucGFyZW50Tm9kZSYmbi5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChlLG4pfSkpfSx0aGlzLl9kb2N1bWVudD1pfWF0dGFjaENvbXBvbmVudFBvcnRhbCh0KXtjb25zdCBlPSh0LmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcnx8dGhpcy5fY29tcG9uZW50RmFjdG9yeVJlc29sdmVyKS5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeSh0LmNvbXBvbmVudCk7bGV0IG47cmV0dXJuIHQudmlld0NvbnRhaW5lclJlZj8obj10LnZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KGUsdC52aWV3Q29udGFpbmVyUmVmLmxlbmd0aCx0LmluamVjdG9yfHx0LnZpZXdDb250YWluZXJSZWYuaW5qZWN0b3IpLHRoaXMuc2V0RGlzcG9zZUZuKCgoKT0+bi5kZXN0cm95KCkpKSk6KG49ZS5jcmVhdGUodC5pbmplY3Rvcnx8dGhpcy5fZGVmYXVsdEluamVjdG9yKSx0aGlzLl9hcHBSZWYuYXR0YWNoVmlldyhuLmhvc3RWaWV3KSx0aGlzLnNldERpc3Bvc2VGbigoKCk9Pnt0aGlzLl9hcHBSZWYuZGV0YWNoVmlldyhuLmhvc3RWaWV3KSxuLmRlc3Ryb3koKX0pKSksdGhpcy5vdXRsZXRFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2dldENvbXBvbmVudFJvb3ROb2RlKG4pKSx0aGlzLl9hdHRhY2hlZFBvcnRhbD10LG59YXR0YWNoVGVtcGxhdGVQb3J0YWwodCl7bGV0IGU9dC52aWV3Q29udGFpbmVyUmVmLG49ZS5jcmVhdGVFbWJlZGRlZFZpZXcodC50ZW1wbGF0ZVJlZix0LmNvbnRleHQpO3JldHVybiBuLnJvb3ROb2Rlcy5mb3JFYWNoKCh0PT50aGlzLm91dGxldEVsZW1lbnQuYXBwZW5kQ2hpbGQodCkpKSxuLmRldGVjdENoYW5nZXMoKSx0aGlzLnNldERpc3Bvc2VGbigoKCk9PntsZXQgdD1lLmluZGV4T2Yobik7LTEhPT10JiZlLnJlbW92ZSh0KX0pKSx0aGlzLl9hdHRhY2hlZFBvcnRhbD10LG59ZGlzcG9zZSgpe3N1cGVyLmRpc3Bvc2UoKSxudWxsIT10aGlzLm91dGxldEVsZW1lbnQucGFyZW50Tm9kZSYmdGhpcy5vdXRsZXRFbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5vdXRsZXRFbGVtZW50KX1fZ2V0Q29tcG9uZW50Um9vdE5vZGUodCl7cmV0dXJuIHQuaG9zdFZpZXcucm9vdE5vZGVzWzBdfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgbUIgZXh0ZW5kcyBsQntjb25zdHJ1Y3Rvcih0LGUpe3N1cGVyKHQsZSl9fW1CLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxtQikoZ2YoRWIpLGdmKEZiKSl9LG1CLsm1ZGlyPWhvKHt0eXBlOm1CLHNlbGVjdG9yczpbWyIiLCJjZGtQb3J0YWwiLCIiXV0sZXhwb3J0QXM6WyJjZGtQb3J0YWwiXSxmZWF0dXJlczpbUXBdfSksbUIuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpFYn0se3R5cGU6RmJ9XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKG1CLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6IltjZGtQb3J0YWxdIixleHBvcnRBczoiY2RrUG9ydGFsIn1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkVifSx7dHlwZTpGYn1dfSksbnVsbCk7Y2xhc3MgZkIgZXh0ZW5kcyBtQnt9ZkIuybVmYWM9KGZ1bmN0aW9uKCl7bGV0IHQ7cmV0dXJuIGZ1bmN0aW9uIGUobil7cmV0dXJuKHR8fCh0PVVhKGZCKSkpKG58fGZCKX19KSgpLGZCLsm1ZGlyPWhvKHt0eXBlOmZCLHNlbGVjdG9yczpbWyIiLCJjZGstcG9ydGFsIiwiIl0sWyIiLCJwb3J0YWwiLCIiXV0sZXhwb3J0QXM6WyJjZGtQb3J0YWwiXSxmZWF0dXJlczpbamgoW3twcm92aWRlOm1CLHVzZUV4aXN0aW5nOmZCfV0pLFFwXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoZkIsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW2Nkay1wb3J0YWxdLCBbcG9ydGFsXSIsZXhwb3J0QXM6ImNka1BvcnRhbCIscHJvdmlkZXJzOlt7cHJvdmlkZTptQix1c2VFeGlzdGluZzpmQn1dfV19XSxudWxsLG51bGwpO2NsYXNzIHVCIGV4dGVuZHMgZEJ7Y29uc3RydWN0b3IodCxlLG4pe3N1cGVyKCksdGhpcy5fY29tcG9uZW50RmFjdG9yeVJlc29sdmVyPXQsdGhpcy5fdmlld0NvbnRhaW5lclJlZj1lLHRoaXMuX2lzSW5pdGlhbGl6ZWQ9ITEsdGhpcy5hdHRhY2hlZD1uZXcgU3ksdGhpcy5hdHRhY2hEb21Qb3J0YWw9dD0+e2lmKCF0aGlzLl9kb2N1bWVudCYmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpKXRocm93IEVycm9yKCJDYW5ub3QgYXR0YWNoIERPTSBwb3J0YWwgd2l0aG91dCBfZG9jdW1lbnQgY29uc3RydWN0b3IgcGFyYW1ldGVyIik7Y29uc3QgZT10LmVsZW1lbnQ7aWYoIWUucGFyZW50Tm9kZSYmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpKXRocm93IEVycm9yKCJET00gcG9ydGFsIGNvbnRlbnQgbXVzdCBiZSBhdHRhY2hlZCB0byBhIHBhcmVudCBub2RlLiIpO2NvbnN0IG49dGhpcy5fZG9jdW1lbnQuY3JlYXRlQ29tbWVudCgiZG9tLXBvcnRhbCIpO3Quc2V0QXR0YWNoZWRIb3N0KHRoaXMpLGUucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUobixlKSx0aGlzLl9nZXRSb290Tm9kZSgpLmFwcGVuZENoaWxkKGUpLHRoaXMuX2F0dGFjaGVkUG9ydGFsPXQsc3VwZXIuc2V0RGlzcG9zZUZuKCgoKT0+e24ucGFyZW50Tm9kZSYmbi5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChlLG4pfSkpfSx0aGlzLl9kb2N1bWVudD1ufWdldCBwb3J0YWwoKXtyZXR1cm4gdGhpcy5fYXR0YWNoZWRQb3J0YWx9c2V0IHBvcnRhbCh0KXsoIXRoaXMuaGFzQXR0YWNoZWQoKXx8dHx8dGhpcy5faXNJbml0aWFsaXplZCkmJih0aGlzLmhhc0F0dGFjaGVkKCkmJnN1cGVyLmRldGFjaCgpLHQmJnN1cGVyLmF0dGFjaCh0KSx0aGlzLl9hdHRhY2hlZFBvcnRhbD10KX1nZXQgYXR0YWNoZWRSZWYoKXtyZXR1cm4gdGhpcy5fYXR0YWNoZWRSZWZ9bmdPbkluaXQoKXt0aGlzLl9pc0luaXRpYWxpemVkPSEwfW5nT25EZXN0cm95KCl7c3VwZXIuZGlzcG9zZSgpLHRoaXMuX2F0dGFjaGVkUG9ydGFsPW51bGwsdGhpcy5fYXR0YWNoZWRSZWY9bnVsbH1hdHRhY2hDb21wb25lbnRQb3J0YWwodCl7dC5zZXRBdHRhY2hlZEhvc3QodGhpcyk7Y29uc3QgZT1udWxsIT10LnZpZXdDb250YWluZXJSZWY/dC52aWV3Q29udGFpbmVyUmVmOnRoaXMuX3ZpZXdDb250YWluZXJSZWYsbj0odC5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXJ8fHRoaXMuX2NvbXBvbmVudEZhY3RvcnlSZXNvbHZlcikucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkodC5jb21wb25lbnQpLG89ZS5jcmVhdGVDb21wb25lbnQobixlLmxlbmd0aCx0LmluamVjdG9yfHxlLmluamVjdG9yKTtyZXR1cm4gZSE9PXRoaXMuX3ZpZXdDb250YWluZXJSZWYmJnRoaXMuX2dldFJvb3ROb2RlKCkuYXBwZW5kQ2hpbGQoby5ob3N0Vmlldy5yb290Tm9kZXNbMF0pLHN1cGVyLnNldERpc3Bvc2VGbigoKCk9Pm8uZGVzdHJveSgpKSksdGhpcy5fYXR0YWNoZWRQb3J0YWw9dCx0aGlzLl9hdHRhY2hlZFJlZj1vLHRoaXMuYXR0YWNoZWQuZW1pdChvKSxvfWF0dGFjaFRlbXBsYXRlUG9ydGFsKHQpe3Quc2V0QXR0YWNoZWRIb3N0KHRoaXMpO2NvbnN0IGU9dGhpcy5fdmlld0NvbnRhaW5lclJlZi5jcmVhdGVFbWJlZGRlZFZpZXcodC50ZW1wbGF0ZVJlZix0LmNvbnRleHQpO3JldHVybiBzdXBlci5zZXREaXNwb3NlRm4oKCgpPT50aGlzLl92aWV3Q29udGFpbmVyUmVmLmNsZWFyKCkpKSx0aGlzLl9hdHRhY2hlZFBvcnRhbD10LHRoaXMuX2F0dGFjaGVkUmVmPWUsdGhpcy5hdHRhY2hlZC5lbWl0KGUpLGV9X2dldFJvb3ROb2RlKCl7Y29uc3QgdD10aGlzLl92aWV3Q29udGFpbmVyUmVmLmVsZW1lbnQubmF0aXZlRWxlbWVudDtyZXR1cm4gdC5ub2RlVHlwZT09PXQuRUxFTUVOVF9OT0RFP3Q6dC5wYXJlbnROb2RlfX11Qi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8dUIpKGdmKEdoKSxnZihGYiksZ2Yoc00pKX0sdUIuybVkaXI9aG8oe3R5cGU6dUIsc2VsZWN0b3JzOltbIiIsImNka1BvcnRhbE91dGxldCIsIiJdXSxpbnB1dHM6e3BvcnRhbDpbImNka1BvcnRhbE91dGxldCIsInBvcnRhbCJdfSxvdXRwdXRzOnthdHRhY2hlZDoiYXR0YWNoZWQifSxleHBvcnRBczpbImNka1BvcnRhbE91dGxldCJdLGZlYXR1cmVzOltRcF19KSx1Qi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkdofSx7dHlwZTpGYn0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3NNXX1dfV0sdUIucHJvcERlY29yYXRvcnM9e2F0dGFjaGVkOlt7dHlwZTpFX31dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHVCLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6IltjZGtQb3J0YWxPdXRsZXRdIixleHBvcnRBczoiY2RrUG9ydGFsT3V0bGV0IixpbnB1dHM6WyJwb3J0YWw6IGNka1BvcnRhbE91dGxldCJdfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6R2h9LHt0eXBlOkZifSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19XX0pLHthdHRhY2hlZDpbe3R5cGU6RV99XX0pO2NsYXNzIGdCIGV4dGVuZHMgdUJ7fWdCLsm1ZmFjPShmdW5jdGlvbigpe2xldCB0O3JldHVybiBmdW5jdGlvbiBlKG4pe3JldHVybih0fHwodD1VYShnQikpKShufHxnQil9fSkoKSxnQi7JtWRpcj1obyh7dHlwZTpnQixzZWxlY3RvcnM6W1siIiwiY2RrUG9ydGFsSG9zdCIsIiJdLFsiIiwicG9ydGFsSG9zdCIsIiJdXSxpbnB1dHM6e3BvcnRhbDpbImNka1BvcnRhbEhvc3QiLCJwb3J0YWwiXX0sZXhwb3J0QXM6WyJjZGtQb3J0YWxIb3N0Il0sZmVhdHVyZXM6W2poKFt7cHJvdmlkZTp1Qix1c2VFeGlzdGluZzpnQn1dKSxRcF19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGdCLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6IltjZGtQb3J0YWxIb3N0XSwgW3BvcnRhbEhvc3RdIixleHBvcnRBczoiY2RrUG9ydGFsSG9zdCIsaW5wdXRzOlsicG9ydGFsOiBjZGtQb3J0YWxIb3N0Il0scHJvdmlkZXJzOlt7cHJvdmlkZTp1Qix1c2VFeGlzdGluZzpnQn1dfV19XSxudWxsLG51bGwpO2NsYXNzIGhCe31oQi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8aEIpfSxoQi7JtW1vZD1mbyh7dHlwZTpoQn0pLGhCLsm1aW5qPURuKHt9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGhCLFt7dHlwZTpMXyxhcmdzOlt7ZXhwb3J0czpbbUIsdUIsZkIsZ0JdLGRlY2xhcmF0aW9uczpbbUIsdUIsZkIsZ0JdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8oaEIse2RlY2xhcmF0aW9uczpbbUIsdUIsZkIsZ0JdLGV4cG9ydHM6W21CLHVCLGZCLGdCXX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgYkI9eUgoKTtjbGFzcyB5Qntjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuX3ZpZXdwb3J0UnVsZXI9dCx0aGlzLl9wcmV2aW91c0hUTUxTdHlsZXM9e3RvcDoiIixsZWZ0OiIifSx0aGlzLl9pc0VuYWJsZWQ9ITEsdGhpcy5fZG9jdW1lbnQ9ZX1hdHRhY2goKXt9ZW5hYmxlKCl7aWYodGhpcy5fY2FuQmVFbmFibGVkKCkpe2NvbnN0IHQ9dGhpcy5fZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O3RoaXMuX3ByZXZpb3VzU2Nyb2xsUG9zaXRpb249dGhpcy5fdmlld3BvcnRSdWxlci5nZXRWaWV3cG9ydFNjcm9sbFBvc2l0aW9uKCksdGhpcy5fcHJldmlvdXNIVE1MU3R5bGVzLmxlZnQ9dC5zdHlsZS5sZWZ0fHwiIix0aGlzLl9wcmV2aW91c0hUTUxTdHlsZXMudG9wPXQuc3R5bGUudG9wfHwiIix0LnN0eWxlLmxlZnQ9YUgoLXRoaXMuX3ByZXZpb3VzU2Nyb2xsUG9zaXRpb24ubGVmdCksdC5zdHlsZS50b3A9YUgoLXRoaXMuX3ByZXZpb3VzU2Nyb2xsUG9zaXRpb24udG9wKSx0LmNsYXNzTGlzdC5hZGQoImNkay1nbG9iYWwtc2Nyb2xsYmxvY2siKSx0aGlzLl9pc0VuYWJsZWQ9ITB9fWRpc2FibGUoKXtpZih0aGlzLl9pc0VuYWJsZWQpe2NvbnN0IHQ9dGhpcy5fZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LGU9dC5zdHlsZSxuPXRoaXMuX2RvY3VtZW50LmJvZHkuc3R5bGUsbz1lLnNjcm9sbEJlaGF2aW9yfHwiIixpPW4uc2Nyb2xsQmVoYXZpb3J8fCIiO3RoaXMuX2lzRW5hYmxlZD0hMSxlLmxlZnQ9dGhpcy5fcHJldmlvdXNIVE1MU3R5bGVzLmxlZnQsZS50b3A9dGhpcy5fcHJldmlvdXNIVE1MU3R5bGVzLnRvcCx0LmNsYXNzTGlzdC5yZW1vdmUoImNkay1nbG9iYWwtc2Nyb2xsYmxvY2siKSxiQiYmKGUuc2Nyb2xsQmVoYXZpb3I9bi5zY3JvbGxCZWhhdmlvcj0iYXV0byIpLHdpbmRvdy5zY3JvbGwodGhpcy5fcHJldmlvdXNTY3JvbGxQb3NpdGlvbi5sZWZ0LHRoaXMuX3ByZXZpb3VzU2Nyb2xsUG9zaXRpb24udG9wKSxiQiYmKGUuc2Nyb2xsQmVoYXZpb3I9byxuLnNjcm9sbEJlaGF2aW9yPWkpfX1fY2FuQmVFbmFibGVkKCl7aWYodGhpcy5fZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygiY2RrLWdsb2JhbC1zY3JvbGxibG9jayIpfHx0aGlzLl9pc0VuYWJsZWQpcmV0dXJuITE7Y29uc3QgdD10aGlzLl9kb2N1bWVudC5ib2R5LGU9dGhpcy5fdmlld3BvcnRSdWxlci5nZXRWaWV3cG9ydFNpemUoKTtyZXR1cm4gdC5zY3JvbGxIZWlnaHQ+ZS5oZWlnaHR8fHQuc2Nyb2xsV2lkdGg+ZS53aWR0aH19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIF9CKCl7cmV0dXJuIEVycm9yKCJTY3JvbGwgc3RyYXRlZ3kgaGFzIGFscmVhZHkgYmVlbiBhdHRhY2hlZC4iKX1jbGFzcyBDQntjb25zdHJ1Y3Rvcih0LGUsbixvKXt0aGlzLl9zY3JvbGxEaXNwYXRjaGVyPXQsdGhpcy5fbmdab25lPWUsdGhpcy5fdmlld3BvcnRSdWxlcj1uLHRoaXMuX2NvbmZpZz1vLHRoaXMuX3Njcm9sbFN1YnNjcmlwdGlvbj1udWxsLHRoaXMuX2RldGFjaD0oKT0+e3RoaXMuZGlzYWJsZSgpLHRoaXMuX292ZXJsYXlSZWYuaGFzQXR0YWNoZWQoKSYmdGhpcy5fbmdab25lLnJ1bigoKCk9PnRoaXMuX292ZXJsYXlSZWYuZGV0YWNoKCkpKX19YXR0YWNoKHQpe2lmKHRoaXMuX292ZXJsYXlSZWYmJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSl0aHJvdyBfQigpO3RoaXMuX292ZXJsYXlSZWY9dH1lbmFibGUoKXtpZih0aGlzLl9zY3JvbGxTdWJzY3JpcHRpb24pcmV0dXJuO2NvbnN0IHQ9dGhpcy5fc2Nyb2xsRGlzcGF0Y2hlci5zY3JvbGxlZCgwKTt0aGlzLl9jb25maWcmJnRoaXMuX2NvbmZpZy50aHJlc2hvbGQmJnRoaXMuX2NvbmZpZy50aHJlc2hvbGQ+MT8odGhpcy5faW5pdGlhbFNjcm9sbFBvc2l0aW9uPXRoaXMuX3ZpZXdwb3J0UnVsZXIuZ2V0Vmlld3BvcnRTY3JvbGxQb3NpdGlvbigpLnRvcCx0aGlzLl9zY3JvbGxTdWJzY3JpcHRpb249dC5zdWJzY3JpYmUoKCgpPT57Y29uc3QgdD10aGlzLl92aWV3cG9ydFJ1bGVyLmdldFZpZXdwb3J0U2Nyb2xsUG9zaXRpb24oKS50b3A7TWF0aC5hYnModC10aGlzLl9pbml0aWFsU2Nyb2xsUG9zaXRpb24pPnRoaXMuX2NvbmZpZy50aHJlc2hvbGQ/dGhpcy5fZGV0YWNoKCk6dGhpcy5fb3ZlcmxheVJlZi51cGRhdGVQb3NpdGlvbigpfSkpKTp0aGlzLl9zY3JvbGxTdWJzY3JpcHRpb249dC5zdWJzY3JpYmUodGhpcy5fZGV0YWNoKX1kaXNhYmxlKCl7dGhpcy5fc2Nyb2xsU3Vic2NyaXB0aW9uJiYodGhpcy5fc2Nyb2xsU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksdGhpcy5fc2Nyb2xsU3Vic2NyaXB0aW9uPW51bGwpfWRldGFjaCgpe3RoaXMuZGlzYWJsZSgpLHRoaXMuX292ZXJsYXlSZWY9bnVsbH19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIE1Ce2VuYWJsZSgpe31kaXNhYmxlKCl7fWF0dGFjaCgpe319Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIHZCKHQsZSl7cmV0dXJuIGUuc29tZSgoZT0+dC5ib3R0b208ZS50b3B8fHQudG9wPmUuYm90dG9tfHx0LnJpZ2h0PGUubGVmdHx8dC5sZWZ0PmUucmlnaHQpKX1mdW5jdGlvbiB4Qih0LGUpe3JldHVybiBlLnNvbWUoKGU9PnQudG9wPGUudG9wfHx0LmJvdHRvbT5lLmJvdHRvbXx8dC5sZWZ0PGUubGVmdHx8dC5yaWdodD5lLnJpZ2h0KSl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIE9Ce2NvbnN0cnVjdG9yKHQsZSxuLG8pe3RoaXMuX3Njcm9sbERpc3BhdGNoZXI9dCx0aGlzLl92aWV3cG9ydFJ1bGVyPWUsdGhpcy5fbmdab25lPW4sdGhpcy5fY29uZmlnPW8sdGhpcy5fc2Nyb2xsU3Vic2NyaXB0aW9uPW51bGx9YXR0YWNoKHQpe2lmKHRoaXMuX292ZXJsYXlSZWYmJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSl0aHJvdyBfQigpO3RoaXMuX292ZXJsYXlSZWY9dH1lbmFibGUoKXtpZighdGhpcy5fc2Nyb2xsU3Vic2NyaXB0aW9uKXt0aGlzLl9zY3JvbGxTdWJzY3JpcHRpb249dGhpcy5fc2Nyb2xsRGlzcGF0Y2hlci5zY3JvbGxlZCh0aGlzLl9jb25maWc/dGhpcy5fY29uZmlnLnNjcm9sbFRocm90dGxlOjApLnN1YnNjcmliZSgoKCk9PntpZih0aGlzLl9vdmVybGF5UmVmLnVwZGF0ZVBvc2l0aW9uKCksdGhpcy5fY29uZmlnJiZ0aGlzLl9jb25maWcuYXV0b0Nsb3NlKXtjb25zdCB0PXRoaXMuX292ZXJsYXlSZWYub3ZlcmxheUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkse3dpZHRoOmUsaGVpZ2h0Om59PXRoaXMuX3ZpZXdwb3J0UnVsZXIuZ2V0Vmlld3BvcnRTaXplKCk7dkIodCxbe3dpZHRoOmUsaGVpZ2h0Om4sYm90dG9tOm4scmlnaHQ6ZSx0b3A6MCxsZWZ0OjB9XSkmJih0aGlzLmRpc2FibGUoKSx0aGlzLl9uZ1pvbmUucnVuKCgoKT0+dGhpcy5fb3ZlcmxheVJlZi5kZXRhY2goKSkpKX19KSl9fWRpc2FibGUoKXt0aGlzLl9zY3JvbGxTdWJzY3JpcHRpb24mJih0aGlzLl9zY3JvbGxTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLl9zY3JvbGxTdWJzY3JpcHRpb249bnVsbCl9ZGV0YWNoKCl7dGhpcy5kaXNhYmxlKCksdGhpcy5fb3ZlcmxheVJlZj1udWxsfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgUEJ7Y29uc3RydWN0b3IodCxlLG4sbyl7dGhpcy5fc2Nyb2xsRGlzcGF0Y2hlcj10LHRoaXMuX3ZpZXdwb3J0UnVsZXI9ZSx0aGlzLl9uZ1pvbmU9bix0aGlzLm5vb3A9KCk9Pm5ldyBNQix0aGlzLmNsb3NlPXQ9Pm5ldyBDQih0aGlzLl9zY3JvbGxEaXNwYXRjaGVyLHRoaXMuX25nWm9uZSx0aGlzLl92aWV3cG9ydFJ1bGVyLHQpLHRoaXMuYmxvY2s9KCk9Pm5ldyB5Qih0aGlzLl92aWV3cG9ydFJ1bGVyLHRoaXMuX2RvY3VtZW50KSx0aGlzLnJlcG9zaXRpb249dD0+bmV3IE9CKHRoaXMuX3Njcm9sbERpc3BhdGNoZXIsdGhpcy5fdmlld3BvcnRSdWxlcix0aGlzLl9uZ1pvbmUsdCksdGhpcy5fZG9jdW1lbnQ9b319UEIuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFBCKShUcihLTCksVHIoUUwpLFRyKG1DKSxUcihzTSkpfSxQQi7JtXByb3Y9U24oe2ZhY3Rvcnk6ZnVuY3Rpb24gdCgpe3JldHVybiBuZXcgUEIoVHIoS0wpLFRyKFFMKSxUcihtQyksVHIoc00pKX0sdG9rZW46UEIscHJvdmlkZWRJbjoicm9vdCJ9KSxQQi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOktMfSx7dHlwZTpRTH0se3R5cGU6bUN9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoUEIsW3t0eXBlOlVtLGFyZ3M6W3twcm92aWRlZEluOiJyb290In1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOktMfSx7dHlwZTpRTH0se3R5cGU6bUN9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX1dfSksbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3Mgd0J7Y29uc3RydWN0b3IodCl7aWYodGhpcy5zY3JvbGxTdHJhdGVneT1uZXcgTUIsdGhpcy5wYW5lbENsYXNzPSIiLHRoaXMuaGFzQmFja2Ryb3A9ITEsdGhpcy5iYWNrZHJvcENsYXNzPSJjZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wIix0aGlzLmRpc3Bvc2VPbk5hdmlnYXRpb249ITEsdCl7Y29uc3QgZT1PYmplY3Qua2V5cyh0KTtmb3IoY29uc3QgbiBvZiBlKXZvaWQgMCE9PXRbbl0mJih0aGlzW25dPXRbbl0pfX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIGtCe2NvbnN0cnVjdG9yKHQsZSxuLG8saSl7dGhpcy5vZmZzZXRYPW4sdGhpcy5vZmZzZXRZPW8sdGhpcy5wYW5lbENsYXNzPWksdGhpcy5vcmlnaW5YPXQub3JpZ2luWCx0aGlzLm9yaWdpblk9dC5vcmlnaW5ZLHRoaXMub3ZlcmxheVg9ZS5vdmVybGF5WCx0aGlzLm92ZXJsYXlZPWUub3ZlcmxheVl9fWNsYXNzIFNCe31jbGFzcyBEQntjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuY29ubmVjdGlvblBhaXI9dCx0aGlzLnNjcm9sbGFibGVWaWV3UHJvcGVydGllcz1lfX1mdW5jdGlvbiBSQih0LGUpe2lmKCJ0b3AiIT09ZSYmImJvdHRvbSIhPT1lJiYiY2VudGVyIiE9PWUpdGhyb3cgRXJyb3IoYENvbm5lY3RlZFBvc2l0aW9uOiBJbnZhbGlkICR7dH0gIiR7ZX0iLiBFeHBlY3RlZCAidG9wIiwgImJvdHRvbSIgb3IgImNlbnRlciIuYCl9ZnVuY3Rpb24gRUIodCxlKXtpZigic3RhcnQiIT09ZSYmImVuZCIhPT1lJiYiY2VudGVyIiE9PWUpdGhyb3cgRXJyb3IoYENvbm5lY3RlZFBvc2l0aW9uOiBJbnZhbGlkICR7dH0gIiR7ZX0iLiBFeHBlY3RlZCAic3RhcnQiLCAiZW5kIiBvciAiY2VudGVyIi5gKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovREIuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTprQn0se3R5cGU6U0IsZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX1dO2NsYXNzIEFCe2NvbnN0cnVjdG9yKHQpe3RoaXMuX2F0dGFjaGVkT3ZlcmxheXM9W10sdGhpcy5fZG9jdW1lbnQ9dH1uZ09uRGVzdHJveSgpe3RoaXMuZGV0YWNoKCl9YWRkKHQpe3RoaXMucmVtb3ZlKHQpLHRoaXMuX2F0dGFjaGVkT3ZlcmxheXMucHVzaCh0KX1yZW1vdmUodCl7Y29uc3QgZT10aGlzLl9hdHRhY2hlZE92ZXJsYXlzLmluZGV4T2YodCk7ZT4tMSYmdGhpcy5fYXR0YWNoZWRPdmVybGF5cy5zcGxpY2UoZSwxKSwwPT09dGhpcy5fYXR0YWNoZWRPdmVybGF5cy5sZW5ndGgmJnRoaXMuZGV0YWNoKCl9fUFCLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxBQikoVHIoc00pKX0sQUIuybVwcm92PVNuKHtmYWN0b3J5OmZ1bmN0aW9uIHQoKXtyZXR1cm4gbmV3IEFCKFRyKHNNKSl9LHRva2VuOkFCLHByb3ZpZGVkSW46InJvb3QifSksQUIuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEFCLFt7dHlwZTpVbSxhcmdzOlt7cHJvdmlkZWRJbjoicm9vdCJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19XX0pLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgVEIgZXh0ZW5kcyBBQntjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KSx0aGlzLl9rZXlkb3duTGlzdGVuZXI9dD0+e2NvbnN0IGU9dGhpcy5fYXR0YWNoZWRPdmVybGF5cztmb3IobGV0IG49ZS5sZW5ndGgtMTtuPi0xO24tLSlpZihlW25dLl9rZXlkb3duRXZlbnRzLm9ic2VydmVycy5sZW5ndGg+MCl7ZVtuXS5fa2V5ZG93bkV2ZW50cy5uZXh0KHQpO2JyZWFrfX19YWRkKHQpe3N1cGVyLmFkZCh0KSx0aGlzLl9pc0F0dGFjaGVkfHwodGhpcy5fZG9jdW1lbnQuYm9keS5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIix0aGlzLl9rZXlkb3duTGlzdGVuZXIpLHRoaXMuX2lzQXR0YWNoZWQ9ITApfWRldGFjaCgpe3RoaXMuX2lzQXR0YWNoZWQmJih0aGlzLl9kb2N1bWVudC5ib2R5LnJlbW92ZUV2ZW50TGlzdGVuZXIoImtleWRvd24iLHRoaXMuX2tleWRvd25MaXN0ZW5lciksdGhpcy5faXNBdHRhY2hlZD0hMSl9fVRCLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxUQikoVHIoc00pKX0sVEIuybVwcm92PVNuKHtmYWN0b3J5OmZ1bmN0aW9uIHQoKXtyZXR1cm4gbmV3IFRCKFRyKHNNKSl9LHRva2VuOlRCLHByb3ZpZGVkSW46InJvb3QifSksVEIuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFRCLFt7dHlwZTpVbSxhcmdzOlt7cHJvdmlkZWRJbjoicm9vdCJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19XX0pLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgTkIgZXh0ZW5kcyBBQntjb25zdHJ1Y3Rvcih0LGUpe3N1cGVyKHQpLHRoaXMuX3BsYXRmb3JtPWUsdGhpcy5fY3Vyc29yU3R5bGVJc1NldD0hMSx0aGlzLl9jbGlja0xpc3RlbmVyPXQ9Pntjb25zdCBlPXZIKHQpLG49dGhpcy5fYXR0YWNoZWRPdmVybGF5cy5zbGljZSgpO2ZvcihsZXQgbz1uLmxlbmd0aC0xO28+LTE7by0tKXtjb25zdCBpPW5bb107aWYoIShpLl9vdXRzaWRlUG9pbnRlckV2ZW50cy5vYnNlcnZlcnMubGVuZ3RoPDEpJiZpLmhhc0F0dGFjaGVkKCkpe2lmKGkub3ZlcmxheUVsZW1lbnQuY29udGFpbnMoZSkpYnJlYWs7aS5fb3V0c2lkZVBvaW50ZXJFdmVudHMubmV4dCh0KX19fX1hZGQodCl7aWYoc3VwZXIuYWRkKHQpLCF0aGlzLl9pc0F0dGFjaGVkKXtjb25zdCB0PXRoaXMuX2RvY3VtZW50LmJvZHk7dC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsdGhpcy5fY2xpY2tMaXN0ZW5lciwhMCksdC5hZGRFdmVudExpc3RlbmVyKCJhdXhjbGljayIsdGhpcy5fY2xpY2tMaXN0ZW5lciwhMCksdC5hZGRFdmVudExpc3RlbmVyKCJjb250ZXh0bWVudSIsdGhpcy5fY2xpY2tMaXN0ZW5lciwhMCksdGhpcy5fcGxhdGZvcm0uSU9TJiYhdGhpcy5fY3Vyc29yU3R5bGVJc1NldCYmKHRoaXMuX2N1cnNvck9yaWdpbmFsVmFsdWU9dC5zdHlsZS5jdXJzb3IsdC5zdHlsZS5jdXJzb3I9InBvaW50ZXIiLHRoaXMuX2N1cnNvclN0eWxlSXNTZXQ9ITApLHRoaXMuX2lzQXR0YWNoZWQ9ITB9fWRldGFjaCgpe2lmKHRoaXMuX2lzQXR0YWNoZWQpe2NvbnN0IHQ9dGhpcy5fZG9jdW1lbnQuYm9keTt0LnJlbW92ZUV2ZW50TGlzdGVuZXIoImNsaWNrIix0aGlzLl9jbGlja0xpc3RlbmVyLCEwKSx0LnJlbW92ZUV2ZW50TGlzdGVuZXIoImF1eGNsaWNrIix0aGlzLl9jbGlja0xpc3RlbmVyLCEwKSx0LnJlbW92ZUV2ZW50TGlzdGVuZXIoImNvbnRleHRtZW51Iix0aGlzLl9jbGlja0xpc3RlbmVyLCEwKSx0aGlzLl9wbGF0Zm9ybS5JT1MmJnRoaXMuX2N1cnNvclN0eWxlSXNTZXQmJih0LnN0eWxlLmN1cnNvcj10aGlzLl9jdXJzb3JPcmlnaW5hbFZhbHVlLHRoaXMuX2N1cnNvclN0eWxlSXNTZXQ9ITEpLHRoaXMuX2lzQXR0YWNoZWQ9ITF9fX1OQi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8TkIpKFRyKHNNKSxUcihjSCkpfSxOQi7JtXByb3Y9U24oe2ZhY3Rvcnk6ZnVuY3Rpb24gdCgpe3JldHVybiBuZXcgTkIoVHIoc00pLFRyKGNIKSl9LHRva2VuOk5CLHByb3ZpZGVkSW46InJvb3QifSksTkIuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19LHt0eXBlOmNIfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihOQixbe3R5cGU6VW0sYXJnczpbe3Byb3ZpZGVkSW46InJvb3QifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3NNXX1dfSx7dHlwZTpjSH1dfSksbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCB6Qj0idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6e30sSUI9dm9pZCAwIT09ekIuX19rYXJtYV9fJiYhIXpCLl9fa2FybWFfX3x8dm9pZCAwIT09ekIuamFzbWluZSYmISF6Qi5qYXNtaW5lfHx2b2lkIDAhPT16Qi5qZXN0JiYhIXpCLmplc3R8fHZvaWQgMCE9PXpCLk1vY2hhJiYhIXpCLk1vY2hhO2NsYXNzIEhCe2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5fcGxhdGZvcm09ZSx0aGlzLl9kb2N1bWVudD10fW5nT25EZXN0cm95KCl7Y29uc3QgdD10aGlzLl9jb250YWluZXJFbGVtZW50O3QmJnQucGFyZW50Tm9kZSYmdC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHQpfWdldENvbnRhaW5lckVsZW1lbnQoKXtyZXR1cm4gdGhpcy5fY29udGFpbmVyRWxlbWVudHx8dGhpcy5fY3JlYXRlQ29udGFpbmVyKCksdGhpcy5fY29udGFpbmVyRWxlbWVudH1fY3JlYXRlQ29udGFpbmVyKCl7Y29uc3QgdD0iY2RrLW92ZXJsYXktY29udGFpbmVyIjtpZih0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXJ8fElCKXtjb25zdCBlPXRoaXMuX2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYC4ke3R9W3BsYXRmb3JtPSJzZXJ2ZXIiXSwgLiR7dH1bcGxhdGZvcm09InRlc3QiXWApO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKWVbdF0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlW3RdKX1jb25zdCBlPXRoaXMuX2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2UuY2xhc3NMaXN0LmFkZCh0KSxJQj9lLnNldEF0dHJpYnV0ZSgicGxhdGZvcm0iLCJ0ZXN0Iik6dGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyfHxlLnNldEF0dHJpYnV0ZSgicGxhdGZvcm0iLCJzZXJ2ZXIiKSx0aGlzLl9kb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGUpLHRoaXMuX2NvbnRhaW5lckVsZW1lbnQ9ZX19SEIuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEhCKShUcihzTSksVHIoY0gpKX0sSEIuybVwcm92PVNuKHtmYWN0b3J5OmZ1bmN0aW9uIHQoKXtyZXR1cm4gbmV3IEhCKFRyKHNNKSxUcihjSCkpfSx0b2tlbjpIQixwcm92aWRlZEluOiJyb290In0pLEhCLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3NNXX1dfSx7dHlwZTpjSH1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoSEIsW3t0eXBlOlVtLGFyZ3M6W3twcm92aWRlZEluOiJyb290In1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX0se3R5cGU6Y0h9XX0pLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgRkJ7Y29uc3RydWN0b3IodCxlLG4sbyxpLGEscixzLGwpe3RoaXMuX3BvcnRhbE91dGxldD10LHRoaXMuX2hvc3Q9ZSx0aGlzLl9wYW5lPW4sdGhpcy5fY29uZmlnPW8sdGhpcy5fbmdab25lPWksdGhpcy5fa2V5Ym9hcmREaXNwYXRjaGVyPWEsdGhpcy5fZG9jdW1lbnQ9cix0aGlzLl9sb2NhdGlvbj1zLHRoaXMuX291dHNpZGVDbGlja0Rpc3BhdGNoZXI9bCx0aGlzLl9iYWNrZHJvcEVsZW1lbnQ9bnVsbCx0aGlzLl9iYWNrZHJvcENsaWNrPW5ldyBCLHRoaXMuX2F0dGFjaG1lbnRzPW5ldyBCLHRoaXMuX2RldGFjaG1lbnRzPW5ldyBCLHRoaXMuX2xvY2F0aW9uQ2hhbmdlcz11LkVNUFRZLHRoaXMuX2JhY2tkcm9wQ2xpY2tIYW5kbGVyPXQ9PnRoaXMuX2JhY2tkcm9wQ2xpY2submV4dCh0KSx0aGlzLl9rZXlkb3duRXZlbnRzPW5ldyBCLHRoaXMuX291dHNpZGVQb2ludGVyRXZlbnRzPW5ldyBCLG8uc2Nyb2xsU3RyYXRlZ3kmJih0aGlzLl9zY3JvbGxTdHJhdGVneT1vLnNjcm9sbFN0cmF0ZWd5LHRoaXMuX3Njcm9sbFN0cmF0ZWd5LmF0dGFjaCh0aGlzKSksdGhpcy5fcG9zaXRpb25TdHJhdGVneT1vLnBvc2l0aW9uU3RyYXRlZ3l9Z2V0IG92ZXJsYXlFbGVtZW50KCl7cmV0dXJuIHRoaXMuX3BhbmV9Z2V0IGJhY2tkcm9wRWxlbWVudCgpe3JldHVybiB0aGlzLl9iYWNrZHJvcEVsZW1lbnR9Z2V0IGhvc3RFbGVtZW50KCl7cmV0dXJuIHRoaXMuX2hvc3R9YXR0YWNoKHQpe2xldCBlPXRoaXMuX3BvcnRhbE91dGxldC5hdHRhY2godCk7cmV0dXJuIXRoaXMuX2hvc3QucGFyZW50RWxlbWVudCYmdGhpcy5fcHJldmlvdXNIb3N0UGFyZW50JiZ0aGlzLl9wcmV2aW91c0hvc3RQYXJlbnQuYXBwZW5kQ2hpbGQodGhpcy5faG9zdCksdGhpcy5fcG9zaXRpb25TdHJhdGVneSYmdGhpcy5fcG9zaXRpb25TdHJhdGVneS5hdHRhY2godGhpcyksdGhpcy5fdXBkYXRlU3RhY2tpbmdPcmRlcigpLHRoaXMuX3VwZGF0ZUVsZW1lbnRTaXplKCksdGhpcy5fdXBkYXRlRWxlbWVudERpcmVjdGlvbigpLHRoaXMuX3Njcm9sbFN0cmF0ZWd5JiZ0aGlzLl9zY3JvbGxTdHJhdGVneS5lbmFibGUoKSx0aGlzLl9uZ1pvbmUub25TdGFibGUucGlwZSh2ZSgxKSkuc3Vic2NyaWJlKCgoKT0+e3RoaXMuaGFzQXR0YWNoZWQoKSYmdGhpcy51cGRhdGVQb3NpdGlvbigpfSkpLHRoaXMuX3RvZ2dsZVBvaW50ZXJFdmVudHMoITApLHRoaXMuX2NvbmZpZy5oYXNCYWNrZHJvcCYmdGhpcy5fYXR0YWNoQmFja2Ryb3AoKSx0aGlzLl9jb25maWcucGFuZWxDbGFzcyYmdGhpcy5fdG9nZ2xlQ2xhc3Nlcyh0aGlzLl9wYW5lLHRoaXMuX2NvbmZpZy5wYW5lbENsYXNzLCEwKSx0aGlzLl9hdHRhY2htZW50cy5uZXh0KCksdGhpcy5fa2V5Ym9hcmREaXNwYXRjaGVyLmFkZCh0aGlzKSx0aGlzLl9jb25maWcuZGlzcG9zZU9uTmF2aWdhdGlvbiYmKHRoaXMuX2xvY2F0aW9uQ2hhbmdlcz10aGlzLl9sb2NhdGlvbi5zdWJzY3JpYmUoKCgpPT50aGlzLmRpc3Bvc2UoKSkpKSx0aGlzLl9vdXRzaWRlQ2xpY2tEaXNwYXRjaGVyLmFkZCh0aGlzKSxlfWRldGFjaCgpe2lmKCF0aGlzLmhhc0F0dGFjaGVkKCkpcmV0dXJuO3RoaXMuZGV0YWNoQmFja2Ryb3AoKSx0aGlzLl90b2dnbGVQb2ludGVyRXZlbnRzKCExKSx0aGlzLl9wb3NpdGlvblN0cmF0ZWd5JiZ0aGlzLl9wb3NpdGlvblN0cmF0ZWd5LmRldGFjaCYmdGhpcy5fcG9zaXRpb25TdHJhdGVneS5kZXRhY2goKSx0aGlzLl9zY3JvbGxTdHJhdGVneSYmdGhpcy5fc2Nyb2xsU3RyYXRlZ3kuZGlzYWJsZSgpO2NvbnN0IHQ9dGhpcy5fcG9ydGFsT3V0bGV0LmRldGFjaCgpO3JldHVybiB0aGlzLl9kZXRhY2htZW50cy5uZXh0KCksdGhpcy5fa2V5Ym9hcmREaXNwYXRjaGVyLnJlbW92ZSh0aGlzKSx0aGlzLl9kZXRhY2hDb250ZW50V2hlblN0YWJsZSgpLHRoaXMuX2xvY2F0aW9uQ2hhbmdlcy51bnN1YnNjcmliZSgpLHRoaXMuX291dHNpZGVDbGlja0Rpc3BhdGNoZXIucmVtb3ZlKHRoaXMpLHR9ZGlzcG9zZSgpe2NvbnN0IHQ9dGhpcy5oYXNBdHRhY2hlZCgpO3RoaXMuX3Bvc2l0aW9uU3RyYXRlZ3kmJnRoaXMuX3Bvc2l0aW9uU3RyYXRlZ3kuZGlzcG9zZSgpLHRoaXMuX2Rpc3Bvc2VTY3JvbGxTdHJhdGVneSgpLHRoaXMuZGV0YWNoQmFja2Ryb3AoKSx0aGlzLl9sb2NhdGlvbkNoYW5nZXMudW5zdWJzY3JpYmUoKSx0aGlzLl9rZXlib2FyZERpc3BhdGNoZXIucmVtb3ZlKHRoaXMpLHRoaXMuX3BvcnRhbE91dGxldC5kaXNwb3NlKCksdGhpcy5fYXR0YWNobWVudHMuY29tcGxldGUoKSx0aGlzLl9iYWNrZHJvcENsaWNrLmNvbXBsZXRlKCksdGhpcy5fa2V5ZG93bkV2ZW50cy5jb21wbGV0ZSgpLHRoaXMuX291dHNpZGVQb2ludGVyRXZlbnRzLmNvbXBsZXRlKCksdGhpcy5fb3V0c2lkZUNsaWNrRGlzcGF0Y2hlci5yZW1vdmUodGhpcyksdGhpcy5faG9zdCYmdGhpcy5faG9zdC5wYXJlbnROb2RlJiYodGhpcy5faG9zdC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMuX2hvc3QpLHRoaXMuX2hvc3Q9bnVsbCksdGhpcy5fcHJldmlvdXNIb3N0UGFyZW50PXRoaXMuX3BhbmU9bnVsbCx0JiZ0aGlzLl9kZXRhY2htZW50cy5uZXh0KCksdGhpcy5fZGV0YWNobWVudHMuY29tcGxldGUoKX1oYXNBdHRhY2hlZCgpe3JldHVybiB0aGlzLl9wb3J0YWxPdXRsZXQuaGFzQXR0YWNoZWQoKX1iYWNrZHJvcENsaWNrKCl7cmV0dXJuIHRoaXMuX2JhY2tkcm9wQ2xpY2t9YXR0YWNobWVudHMoKXtyZXR1cm4gdGhpcy5fYXR0YWNobWVudHN9ZGV0YWNobWVudHMoKXtyZXR1cm4gdGhpcy5fZGV0YWNobWVudHN9a2V5ZG93bkV2ZW50cygpe3JldHVybiB0aGlzLl9rZXlkb3duRXZlbnRzfW91dHNpZGVQb2ludGVyRXZlbnRzKCl7cmV0dXJuIHRoaXMuX291dHNpZGVQb2ludGVyRXZlbnRzfWdldENvbmZpZygpe3JldHVybiB0aGlzLl9jb25maWd9dXBkYXRlUG9zaXRpb24oKXt0aGlzLl9wb3NpdGlvblN0cmF0ZWd5JiZ0aGlzLl9wb3NpdGlvblN0cmF0ZWd5LmFwcGx5KCl9dXBkYXRlUG9zaXRpb25TdHJhdGVneSh0KXt0IT09dGhpcy5fcG9zaXRpb25TdHJhdGVneSYmKHRoaXMuX3Bvc2l0aW9uU3RyYXRlZ3kmJnRoaXMuX3Bvc2l0aW9uU3RyYXRlZ3kuZGlzcG9zZSgpLHRoaXMuX3Bvc2l0aW9uU3RyYXRlZ3k9dCx0aGlzLmhhc0F0dGFjaGVkKCkmJih0LmF0dGFjaCh0aGlzKSx0aGlzLnVwZGF0ZVBvc2l0aW9uKCkpKX11cGRhdGVTaXplKHQpe3RoaXMuX2NvbmZpZz1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdGhpcy5fY29uZmlnKSx0KSx0aGlzLl91cGRhdGVFbGVtZW50U2l6ZSgpfXNldERpcmVjdGlvbih0KXt0aGlzLl9jb25maWc9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHRoaXMuX2NvbmZpZykse2RpcmVjdGlvbjp0fSksdGhpcy5fdXBkYXRlRWxlbWVudERpcmVjdGlvbigpfWFkZFBhbmVsQ2xhc3ModCl7dGhpcy5fcGFuZSYmdGhpcy5fdG9nZ2xlQ2xhc3Nlcyh0aGlzLl9wYW5lLHQsITApfXJlbW92ZVBhbmVsQ2xhc3ModCl7dGhpcy5fcGFuZSYmdGhpcy5fdG9nZ2xlQ2xhc3Nlcyh0aGlzLl9wYW5lLHQsITEpfWdldERpcmVjdGlvbigpe2NvbnN0IHQ9dGhpcy5fY29uZmlnLmRpcmVjdGlvbjtyZXR1cm4gdD8ic3RyaW5nIj09dHlwZW9mIHQ/dDp0LnZhbHVlOiJsdHIifXVwZGF0ZVNjcm9sbFN0cmF0ZWd5KHQpe3QhPT10aGlzLl9zY3JvbGxTdHJhdGVneSYmKHRoaXMuX2Rpc3Bvc2VTY3JvbGxTdHJhdGVneSgpLHRoaXMuX3Njcm9sbFN0cmF0ZWd5PXQsdGhpcy5oYXNBdHRhY2hlZCgpJiYodC5hdHRhY2godGhpcyksdC5lbmFibGUoKSkpfV91cGRhdGVFbGVtZW50RGlyZWN0aW9uKCl7dGhpcy5faG9zdC5zZXRBdHRyaWJ1dGUoImRpciIsdGhpcy5nZXREaXJlY3Rpb24oKSl9X3VwZGF0ZUVsZW1lbnRTaXplKCl7aWYoIXRoaXMuX3BhbmUpcmV0dXJuO2NvbnN0IHQ9dGhpcy5fcGFuZS5zdHlsZTt0LndpZHRoPWFIKHRoaXMuX2NvbmZpZy53aWR0aCksdC5oZWlnaHQ9YUgodGhpcy5fY29uZmlnLmhlaWdodCksdC5taW5XaWR0aD1hSCh0aGlzLl9jb25maWcubWluV2lkdGgpLHQubWluSGVpZ2h0PWFIKHRoaXMuX2NvbmZpZy5taW5IZWlnaHQpLHQubWF4V2lkdGg9YUgodGhpcy5fY29uZmlnLm1heFdpZHRoKSx0Lm1heEhlaWdodD1hSCh0aGlzLl9jb25maWcubWF4SGVpZ2h0KX1fdG9nZ2xlUG9pbnRlckV2ZW50cyh0KXt0aGlzLl9wYW5lLnN0eWxlLnBvaW50ZXJFdmVudHM9dD8iIjoibm9uZSJ9X2F0dGFjaEJhY2tkcm9wKCl7Y29uc3QgdD0iY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZyI7dGhpcy5fYmFja2Ryb3BFbGVtZW50PXRoaXMuX2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHRoaXMuX2JhY2tkcm9wRWxlbWVudC5jbGFzc0xpc3QuYWRkKCJjZGstb3ZlcmxheS1iYWNrZHJvcCIpLHRoaXMuX2NvbmZpZy5iYWNrZHJvcENsYXNzJiZ0aGlzLl90b2dnbGVDbGFzc2VzKHRoaXMuX2JhY2tkcm9wRWxlbWVudCx0aGlzLl9jb25maWcuYmFja2Ryb3BDbGFzcywhMCksdGhpcy5faG9zdC5wYXJlbnRFbGVtZW50Lmluc2VydEJlZm9yZSh0aGlzLl9iYWNrZHJvcEVsZW1lbnQsdGhpcy5faG9zdCksdGhpcy5fYmFja2Ryb3BFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIix0aGlzLl9iYWNrZHJvcENsaWNrSGFuZGxlciksInVuZGVmaW5lZCIhPXR5cGVvZiByZXF1ZXN0QW5pbWF0aW9uRnJhbWU/dGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+e3JlcXVlc3RBbmltYXRpb25GcmFtZSgoKCk9Pnt0aGlzLl9iYWNrZHJvcEVsZW1lbnQmJnRoaXMuX2JhY2tkcm9wRWxlbWVudC5jbGFzc0xpc3QuYWRkKHQpfSkpfSkpOnRoaXMuX2JhY2tkcm9wRWxlbWVudC5jbGFzc0xpc3QuYWRkKHQpfV91cGRhdGVTdGFja2luZ09yZGVyKCl7dGhpcy5faG9zdC5uZXh0U2libGluZyYmdGhpcy5faG9zdC5wYXJlbnROb2RlLmFwcGVuZENoaWxkKHRoaXMuX2hvc3QpfWRldGFjaEJhY2tkcm9wKCl7bGV0IHQsZT10aGlzLl9iYWNrZHJvcEVsZW1lbnQ7aWYoIWUpcmV0dXJuO2xldCBuPSgpPT57ZSYmKGUucmVtb3ZlRXZlbnRMaXN0ZW5lcigiY2xpY2siLHRoaXMuX2JhY2tkcm9wQ2xpY2tIYW5kbGVyKSxlLnJlbW92ZUV2ZW50TGlzdGVuZXIoInRyYW5zaXRpb25lbmQiLG4pLGUucGFyZW50Tm9kZSYmZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGUpKSx0aGlzLl9iYWNrZHJvcEVsZW1lbnQ9PWUmJih0aGlzLl9iYWNrZHJvcEVsZW1lbnQ9bnVsbCksdGhpcy5fY29uZmlnLmJhY2tkcm9wQ2xhc3MmJnRoaXMuX3RvZ2dsZUNsYXNzZXMoZSx0aGlzLl9jb25maWcuYmFja2Ryb3BDbGFzcywhMSksY2xlYXJUaW1lb3V0KHQpfTtlLmNsYXNzTGlzdC5yZW1vdmUoImNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmciKSx0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCgpPT57ZS5hZGRFdmVudExpc3RlbmVyKCJ0cmFuc2l0aW9uZW5kIixuKX0pKSxlLnN0eWxlLnBvaW50ZXJFdmVudHM9Im5vbmUiLHQ9dGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+c2V0VGltZW91dChuLDUwMCkpKX1fdG9nZ2xlQ2xhc3Nlcyh0LGUsbil7Y29uc3Qgbz10LmNsYXNzTGlzdDtpSChlKS5mb3JFYWNoKCh0PT57dCYmKG4/by5hZGQodCk6by5yZW1vdmUodCkpfSkpfV9kZXRhY2hDb250ZW50V2hlblN0YWJsZSgpe3RoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9Pntjb25zdCB0PXRoaXMuX25nWm9uZS5vblN0YWJsZS5waXBlKGplKHBlKHRoaXMuX2F0dGFjaG1lbnRzLHRoaXMuX2RldGFjaG1lbnRzKSkpLnN1YnNjcmliZSgoKCk9Pnt0aGlzLl9wYW5lJiZ0aGlzLl9ob3N0JiYwIT09dGhpcy5fcGFuZS5jaGlsZHJlbi5sZW5ndGh8fCh0aGlzLl9wYW5lJiZ0aGlzLl9jb25maWcucGFuZWxDbGFzcyYmdGhpcy5fdG9nZ2xlQ2xhc3Nlcyh0aGlzLl9wYW5lLHRoaXMuX2NvbmZpZy5wYW5lbENsYXNzLCExKSx0aGlzLl9ob3N0JiZ0aGlzLl9ob3N0LnBhcmVudEVsZW1lbnQmJih0aGlzLl9wcmV2aW91c0hvc3RQYXJlbnQ9dGhpcy5faG9zdC5wYXJlbnRFbGVtZW50LHRoaXMuX3ByZXZpb3VzSG9zdFBhcmVudC5yZW1vdmVDaGlsZCh0aGlzLl9ob3N0KSksdC51bnN1YnNjcmliZSgpKX0pKX0pKX1fZGlzcG9zZVNjcm9sbFN0cmF0ZWd5KCl7Y29uc3QgdD10aGlzLl9zY3JvbGxTdHJhdGVneTt0JiYodC5kaXNhYmxlKCksdC5kZXRhY2gmJnQuZGV0YWNoKCkpfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3QgTEI9ImNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3giLEJCPS8oW0EtWmEteiVdKykkLztjbGFzcyBWQntjb25zdHJ1Y3Rvcih0LGUsbixvLGkpe3RoaXMuX3ZpZXdwb3J0UnVsZXI9ZSx0aGlzLl9kb2N1bWVudD1uLHRoaXMuX3BsYXRmb3JtPW8sdGhpcy5fb3ZlcmxheUNvbnRhaW5lcj1pLHRoaXMuX2xhc3RCb3VuZGluZ0JveFNpemU9e3dpZHRoOjAsaGVpZ2h0OjB9LHRoaXMuX2lzUHVzaGVkPSExLHRoaXMuX2NhblB1c2g9ITAsdGhpcy5fZ3Jvd0FmdGVyT3Blbj0hMSx0aGlzLl9oYXNGbGV4aWJsZURpbWVuc2lvbnM9ITAsdGhpcy5fcG9zaXRpb25Mb2NrZWQ9ITEsdGhpcy5fdmlld3BvcnRNYXJnaW49MCx0aGlzLl9zY3JvbGxhYmxlcz1bXSx0aGlzLl9wcmVmZXJyZWRQb3NpdGlvbnM9W10sdGhpcy5fcG9zaXRpb25DaGFuZ2VzPW5ldyBCLHRoaXMuX3Jlc2l6ZVN1YnNjcmlwdGlvbj11LkVNUFRZLHRoaXMuX29mZnNldFg9MCx0aGlzLl9vZmZzZXRZPTAsdGhpcy5fYXBwbGllZFBhbmVsQ2xhc3Nlcz1bXSx0aGlzLnBvc2l0aW9uQ2hhbmdlcz10aGlzLl9wb3NpdGlvbkNoYW5nZXMsdGhpcy5zZXRPcmlnaW4odCl9Z2V0IHBvc2l0aW9ucygpe3JldHVybiB0aGlzLl9wcmVmZXJyZWRQb3NpdGlvbnN9YXR0YWNoKHQpe2lmKHRoaXMuX292ZXJsYXlSZWYmJnQhPT10aGlzLl9vdmVybGF5UmVmJiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkpdGhyb3cgRXJyb3IoIlRoaXMgcG9zaXRpb24gc3RyYXRlZ3kgaXMgYWxyZWFkeSBhdHRhY2hlZCB0byBhbiBvdmVybGF5Iik7dGhpcy5fdmFsaWRhdGVQb3NpdGlvbnMoKSx0Lmhvc3RFbGVtZW50LmNsYXNzTGlzdC5hZGQoTEIpLHRoaXMuX292ZXJsYXlSZWY9dCx0aGlzLl9ib3VuZGluZ0JveD10Lmhvc3RFbGVtZW50LHRoaXMuX3BhbmU9dC5vdmVybGF5RWxlbWVudCx0aGlzLl9pc0Rpc3Bvc2VkPSExLHRoaXMuX2lzSW5pdGlhbFJlbmRlcj0hMCx0aGlzLl9sYXN0UG9zaXRpb249bnVsbCx0aGlzLl9yZXNpemVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLl9yZXNpemVTdWJzY3JpcHRpb249dGhpcy5fdmlld3BvcnRSdWxlci5jaGFuZ2UoKS5zdWJzY3JpYmUoKCgpPT57dGhpcy5faXNJbml0aWFsUmVuZGVyPSEwLHRoaXMuYXBwbHkoKX0pKX1hcHBseSgpe2lmKHRoaXMuX2lzRGlzcG9zZWR8fCF0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXIpcmV0dXJuO2lmKCF0aGlzLl9pc0luaXRpYWxSZW5kZXImJnRoaXMuX3Bvc2l0aW9uTG9ja2VkJiZ0aGlzLl9sYXN0UG9zaXRpb24pcmV0dXJuIHZvaWQgdGhpcy5yZWFwcGx5TGFzdFBvc2l0aW9uKCk7dGhpcy5fY2xlYXJQYW5lbENsYXNzZXMoKSx0aGlzLl9yZXNldE92ZXJsYXlFbGVtZW50U3R5bGVzKCksdGhpcy5fcmVzZXRCb3VuZGluZ0JveFN0eWxlcygpLHRoaXMuX3ZpZXdwb3J0UmVjdD10aGlzLl9nZXROYXJyb3dlZFZpZXdwb3J0UmVjdCgpLHRoaXMuX29yaWdpblJlY3Q9dGhpcy5fZ2V0T3JpZ2luUmVjdCgpLHRoaXMuX292ZXJsYXlSZWN0PXRoaXMuX3BhbmUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7Y29uc3QgdD10aGlzLl9vcmlnaW5SZWN0LGU9dGhpcy5fb3ZlcmxheVJlY3Qsbj10aGlzLl92aWV3cG9ydFJlY3Qsbz1bXTtsZXQgaTtmb3IobGV0IGEgb2YgdGhpcy5fcHJlZmVycmVkUG9zaXRpb25zKXtsZXQgcj10aGlzLl9nZXRPcmlnaW5Qb2ludCh0LGEpLHM9dGhpcy5fZ2V0T3ZlcmxheVBvaW50KHIsZSxhKSxsPXRoaXMuX2dldE92ZXJsYXlGaXQocyxlLG4sYSk7aWYobC5pc0NvbXBsZXRlbHlXaXRoaW5WaWV3cG9ydClyZXR1cm4gdGhpcy5faXNQdXNoZWQ9ITEsdm9pZCB0aGlzLl9hcHBseVBvc2l0aW9uKGEscik7dGhpcy5fY2FuRml0V2l0aEZsZXhpYmxlRGltZW5zaW9ucyhsLHMsbik/by5wdXNoKHtwb3NpdGlvbjphLG9yaWdpbjpyLG92ZXJsYXlSZWN0OmUsYm91bmRpbmdCb3hSZWN0OnRoaXMuX2NhbGN1bGF0ZUJvdW5kaW5nQm94UmVjdChyLGEpfSk6KCFpfHxpLm92ZXJsYXlGaXQudmlzaWJsZUFyZWE8bC52aXNpYmxlQXJlYSkmJihpPXtvdmVybGF5Rml0Omwsb3ZlcmxheVBvaW50OnMsb3JpZ2luUG9pbnQ6cixwb3NpdGlvbjphLG92ZXJsYXlSZWN0OmV9KX1pZihvLmxlbmd0aCl7bGV0IHQ9bnVsbCxlPS0xO2Zvcihjb25zdCBuIG9mIG8pe2NvbnN0IG89bi5ib3VuZGluZ0JveFJlY3Qud2lkdGgqbi5ib3VuZGluZ0JveFJlY3QuaGVpZ2h0KihuLnBvc2l0aW9uLndlaWdodHx8MSk7bz5lJiYoZT1vLHQ9bil9cmV0dXJuIHRoaXMuX2lzUHVzaGVkPSExLHZvaWQgdGhpcy5fYXBwbHlQb3NpdGlvbih0LnBvc2l0aW9uLHQub3JpZ2luKX1pZih0aGlzLl9jYW5QdXNoKXJldHVybiB0aGlzLl9pc1B1c2hlZD0hMCx2b2lkIHRoaXMuX2FwcGx5UG9zaXRpb24oaS5wb3NpdGlvbixpLm9yaWdpblBvaW50KTt0aGlzLl9hcHBseVBvc2l0aW9uKGkucG9zaXRpb24saS5vcmlnaW5Qb2ludCl9ZGV0YWNoKCl7dGhpcy5fY2xlYXJQYW5lbENsYXNzZXMoKSx0aGlzLl9sYXN0UG9zaXRpb249bnVsbCx0aGlzLl9wcmV2aW91c1B1c2hBbW91bnQ9bnVsbCx0aGlzLl9yZXNpemVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKX1kaXNwb3NlKCl7dGhpcy5faXNEaXNwb3NlZHx8KHRoaXMuX2JvdW5kaW5nQm94JiZqQih0aGlzLl9ib3VuZGluZ0JveC5zdHlsZSx7dG9wOiIiLGxlZnQ6IiIscmlnaHQ6IiIsYm90dG9tOiIiLGhlaWdodDoiIix3aWR0aDoiIixhbGlnbkl0ZW1zOiIiLGp1c3RpZnlDb250ZW50OiIifSksdGhpcy5fcGFuZSYmdGhpcy5fcmVzZXRPdmVybGF5RWxlbWVudFN0eWxlcygpLHRoaXMuX292ZXJsYXlSZWYmJnRoaXMuX292ZXJsYXlSZWYuaG9zdEVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShMQiksdGhpcy5kZXRhY2goKSx0aGlzLl9wb3NpdGlvbkNoYW5nZXMuY29tcGxldGUoKSx0aGlzLl9vdmVybGF5UmVmPXRoaXMuX2JvdW5kaW5nQm94PW51bGwsdGhpcy5faXNEaXNwb3NlZD0hMCl9cmVhcHBseUxhc3RQb3NpdGlvbigpe2lmKCF0aGlzLl9pc0Rpc3Bvc2VkJiYoIXRoaXMuX3BsYXRmb3JtfHx0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXIpKXt0aGlzLl9vcmlnaW5SZWN0PXRoaXMuX2dldE9yaWdpblJlY3QoKSx0aGlzLl9vdmVybGF5UmVjdD10aGlzLl9wYW5lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHRoaXMuX3ZpZXdwb3J0UmVjdD10aGlzLl9nZXROYXJyb3dlZFZpZXdwb3J0UmVjdCgpO2NvbnN0IHQ9dGhpcy5fbGFzdFBvc2l0aW9ufHx0aGlzLl9wcmVmZXJyZWRQb3NpdGlvbnNbMF0sZT10aGlzLl9nZXRPcmlnaW5Qb2ludCh0aGlzLl9vcmlnaW5SZWN0LHQpO3RoaXMuX2FwcGx5UG9zaXRpb24odCxlKX19d2l0aFNjcm9sbGFibGVDb250YWluZXJzKHQpe3JldHVybiB0aGlzLl9zY3JvbGxhYmxlcz10LHRoaXN9d2l0aFBvc2l0aW9ucyh0KXtyZXR1cm4gdGhpcy5fcHJlZmVycmVkUG9zaXRpb25zPXQsLTE9PT10LmluZGV4T2YodGhpcy5fbGFzdFBvc2l0aW9uKSYmKHRoaXMuX2xhc3RQb3NpdGlvbj1udWxsKSx0aGlzLl92YWxpZGF0ZVBvc2l0aW9ucygpLHRoaXN9d2l0aFZpZXdwb3J0TWFyZ2luKHQpe3JldHVybiB0aGlzLl92aWV3cG9ydE1hcmdpbj10LHRoaXN9d2l0aEZsZXhpYmxlRGltZW5zaW9ucyh0PSEwKXtyZXR1cm4gdGhpcy5faGFzRmxleGlibGVEaW1lbnNpb25zPXQsdGhpc313aXRoR3Jvd0FmdGVyT3Blbih0PSEwKXtyZXR1cm4gdGhpcy5fZ3Jvd0FmdGVyT3Blbj10LHRoaXN9d2l0aFB1c2godD0hMCl7cmV0dXJuIHRoaXMuX2NhblB1c2g9dCx0aGlzfXdpdGhMb2NrZWRQb3NpdGlvbih0PSEwKXtyZXR1cm4gdGhpcy5fcG9zaXRpb25Mb2NrZWQ9dCx0aGlzfXNldE9yaWdpbih0KXtyZXR1cm4gdGhpcy5fb3JpZ2luPXQsdGhpc313aXRoRGVmYXVsdE9mZnNldFgodCl7cmV0dXJuIHRoaXMuX29mZnNldFg9dCx0aGlzfXdpdGhEZWZhdWx0T2Zmc2V0WSh0KXtyZXR1cm4gdGhpcy5fb2Zmc2V0WT10LHRoaXN9d2l0aFRyYW5zZm9ybU9yaWdpbk9uKHQpe3JldHVybiB0aGlzLl90cmFuc2Zvcm1PcmlnaW5TZWxlY3Rvcj10LHRoaXN9X2dldE9yaWdpblBvaW50KHQsZSl7bGV0IG4sbztpZigiY2VudGVyIj09ZS5vcmlnaW5YKW49dC5sZWZ0K3Qud2lkdGgvMjtlbHNle2NvbnN0IG89dGhpcy5faXNSdGwoKT90LnJpZ2h0OnQubGVmdCxpPXRoaXMuX2lzUnRsKCk/dC5sZWZ0OnQucmlnaHQ7bj0ic3RhcnQiPT1lLm9yaWdpblg/bzppfXJldHVybiBvPSJjZW50ZXIiPT1lLm9yaWdpblk/dC50b3ArdC5oZWlnaHQvMjoidG9wIj09ZS5vcmlnaW5ZP3QudG9wOnQuYm90dG9tLHt4Om4seTpvfX1fZ2V0T3ZlcmxheVBvaW50KHQsZSxuKXtsZXQgbyxpO3JldHVybiBvPSJjZW50ZXIiPT1uLm92ZXJsYXlYPy1lLndpZHRoLzI6InN0YXJ0Ij09PW4ub3ZlcmxheVg/dGhpcy5faXNSdGwoKT8tZS53aWR0aDowOnRoaXMuX2lzUnRsKCk/MDotZS53aWR0aCxpPSJjZW50ZXIiPT1uLm92ZXJsYXlZPy1lLmhlaWdodC8yOiJ0b3AiPT1uLm92ZXJsYXlZPzA6LWUuaGVpZ2h0LHt4OnQueCtvLHk6dC55K2l9fV9nZXRPdmVybGF5Rml0KHQsZSxuLG8pe2NvbnN0IGk9V0IoZSk7bGV0e3g6YSx5OnJ9PXQscz10aGlzLl9nZXRPZmZzZXQobywieCIpLGw9dGhpcy5fZ2V0T2Zmc2V0KG8sInkiKTtzJiYoYSs9cyksbCYmKHIrPWwpO2xldCBjPTAtcixkPXIraS5oZWlnaHQtbi5oZWlnaHQscD10aGlzLl9zdWJ0cmFjdE92ZXJmbG93cyhpLndpZHRoLDAtYSxhK2kud2lkdGgtbi53aWR0aCksbT10aGlzLl9zdWJ0cmFjdE92ZXJmbG93cyhpLmhlaWdodCxjLGQpLGY9cCptO3JldHVybnt2aXNpYmxlQXJlYTpmLGlzQ29tcGxldGVseVdpdGhpblZpZXdwb3J0Omkud2lkdGgqaS5oZWlnaHQ9PT1mLGZpdHNJblZpZXdwb3J0VmVydGljYWxseTptPT09aS5oZWlnaHQsZml0c0luVmlld3BvcnRIb3Jpem9udGFsbHk6cD09aS53aWR0aH19X2NhbkZpdFdpdGhGbGV4aWJsZURpbWVuc2lvbnModCxlLG4pe2lmKHRoaXMuX2hhc0ZsZXhpYmxlRGltZW5zaW9ucyl7Y29uc3Qgbz1uLmJvdHRvbS1lLnksaT1uLnJpZ2h0LWUueCxhPVVCKHRoaXMuX292ZXJsYXlSZWYuZ2V0Q29uZmlnKCkubWluSGVpZ2h0KSxyPVVCKHRoaXMuX292ZXJsYXlSZWYuZ2V0Q29uZmlnKCkubWluV2lkdGgpLHM9dC5maXRzSW5WaWV3cG9ydEhvcml6b250YWxseXx8bnVsbCE9ciYmcjw9aTtyZXR1cm4odC5maXRzSW5WaWV3cG9ydFZlcnRpY2FsbHl8fG51bGwhPWEmJmE8PW8pJiZzfXJldHVybiExfV9wdXNoT3ZlcmxheU9uU2NyZWVuKHQsZSxuKXtpZih0aGlzLl9wcmV2aW91c1B1c2hBbW91bnQmJnRoaXMuX3Bvc2l0aW9uTG9ja2VkKXJldHVybnt4OnQueCt0aGlzLl9wcmV2aW91c1B1c2hBbW91bnQueCx5OnQueSt0aGlzLl9wcmV2aW91c1B1c2hBbW91bnQueX07Y29uc3Qgbz1XQihlKSxpPXRoaXMuX3ZpZXdwb3J0UmVjdCxhPU1hdGgubWF4KHQueCtvLndpZHRoLWkud2lkdGgsMCkscj1NYXRoLm1heCh0Lnkrby5oZWlnaHQtaS5oZWlnaHQsMCkscz1NYXRoLm1heChpLnRvcC1uLnRvcC10LnksMCksbD1NYXRoLm1heChpLmxlZnQtbi5sZWZ0LXQueCwwKTtsZXQgYz0wLGQ9MDtyZXR1cm4gYz1vLndpZHRoPD1pLndpZHRoP2x8fC1hOnQueDx0aGlzLl92aWV3cG9ydE1hcmdpbj9pLmxlZnQtbi5sZWZ0LXQueDowLGQ9by5oZWlnaHQ8PWkuaGVpZ2h0P3N8fC1yOnQueTx0aGlzLl92aWV3cG9ydE1hcmdpbj9pLnRvcC1uLnRvcC10Lnk6MCx0aGlzLl9wcmV2aW91c1B1c2hBbW91bnQ9e3g6Yyx5OmR9LHt4OnQueCtjLHk6dC55K2R9fV9hcHBseVBvc2l0aW9uKHQsZSl7aWYodGhpcy5fc2V0VHJhbnNmb3JtT3JpZ2luKHQpLHRoaXMuX3NldE92ZXJsYXlFbGVtZW50U3R5bGVzKGUsdCksdGhpcy5fc2V0Qm91bmRpbmdCb3hTdHlsZXMoZSx0KSx0LnBhbmVsQ2xhc3MmJnRoaXMuX2FkZFBhbmVsQ2xhc3Nlcyh0LnBhbmVsQ2xhc3MpLHRoaXMuX2xhc3RQb3NpdGlvbj10LHRoaXMuX3Bvc2l0aW9uQ2hhbmdlcy5vYnNlcnZlcnMubGVuZ3RoKXtjb25zdCBlPXRoaXMuX2dldFNjcm9sbFZpc2liaWxpdHkoKSxuPW5ldyBEQih0LGUpO3RoaXMuX3Bvc2l0aW9uQ2hhbmdlcy5uZXh0KG4pfXRoaXMuX2lzSW5pdGlhbFJlbmRlcj0hMX1fc2V0VHJhbnNmb3JtT3JpZ2luKHQpe2lmKCF0aGlzLl90cmFuc2Zvcm1PcmlnaW5TZWxlY3RvcilyZXR1cm47Y29uc3QgZT10aGlzLl9ib3VuZGluZ0JveC5xdWVyeVNlbGVjdG9yQWxsKHRoaXMuX3RyYW5zZm9ybU9yaWdpblNlbGVjdG9yKTtsZXQgbixvPXQub3ZlcmxheVk7bj0iY2VudGVyIj09PXQub3ZlcmxheVg/ImNlbnRlciI6dGhpcy5faXNSdGwoKT8ic3RhcnQiPT09dC5vdmVybGF5WD8icmlnaHQiOiJsZWZ0Ijoic3RhcnQiPT09dC5vdmVybGF5WD8ibGVmdCI6InJpZ2h0Ijtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKyllW3RdLnN0eWxlLnRyYW5zZm9ybU9yaWdpbj1gJHtufSAke299YH1fY2FsY3VsYXRlQm91bmRpbmdCb3hSZWN0KHQsZSl7Y29uc3Qgbj10aGlzLl92aWV3cG9ydFJlY3Qsbz10aGlzLl9pc1J0bCgpO2xldCBpLGEscjtpZigidG9wIj09PWUub3ZlcmxheVkpYT10LnksaT1uLmhlaWdodC1hK3RoaXMuX3ZpZXdwb3J0TWFyZ2luO2Vsc2UgaWYoImJvdHRvbSI9PT1lLm92ZXJsYXlZKXI9bi5oZWlnaHQtdC55KzIqdGhpcy5fdmlld3BvcnRNYXJnaW4saT1uLmhlaWdodC1yK3RoaXMuX3ZpZXdwb3J0TWFyZ2luO2Vsc2V7Y29uc3QgZT1NYXRoLm1pbihuLmJvdHRvbS10Lnkrbi50b3AsdC55KSxvPXRoaXMuX2xhc3RCb3VuZGluZ0JveFNpemUuaGVpZ2h0O2k9MiplLGE9dC55LWUsaT5vJiYhdGhpcy5faXNJbml0aWFsUmVuZGVyJiYhdGhpcy5fZ3Jvd0FmdGVyT3BlbiYmKGE9dC55LW8vMil9bGV0IHMsbCxjO2lmKCJlbmQiPT09ZS5vdmVybGF5WCYmIW98fCJzdGFydCI9PT1lLm92ZXJsYXlYJiZvKWM9bi53aWR0aC10LngrdGhpcy5fdmlld3BvcnRNYXJnaW4scz10LngtdGhpcy5fdmlld3BvcnRNYXJnaW47ZWxzZSBpZigic3RhcnQiPT09ZS5vdmVybGF5WCYmIW98fCJlbmQiPT09ZS5vdmVybGF5WCYmbylsPXQueCxzPW4ucmlnaHQtdC54O2Vsc2V7Y29uc3QgZT1NYXRoLm1pbihuLnJpZ2h0LXQueCtuLmxlZnQsdC54KSxvPXRoaXMuX2xhc3RCb3VuZGluZ0JveFNpemUud2lkdGg7cz0yKmUsbD10LngtZSxzPm8mJiF0aGlzLl9pc0luaXRpYWxSZW5kZXImJiF0aGlzLl9ncm93QWZ0ZXJPcGVuJiYobD10Lngtby8yKX1yZXR1cm57dG9wOmEsbGVmdDpsLGJvdHRvbTpyLHJpZ2h0OmMsd2lkdGg6cyxoZWlnaHQ6aX19X3NldEJvdW5kaW5nQm94U3R5bGVzKHQsZSl7Y29uc3Qgbj10aGlzLl9jYWxjdWxhdGVCb3VuZGluZ0JveFJlY3QodCxlKTt0aGlzLl9pc0luaXRpYWxSZW5kZXJ8fHRoaXMuX2dyb3dBZnRlck9wZW58fChuLmhlaWdodD1NYXRoLm1pbihuLmhlaWdodCx0aGlzLl9sYXN0Qm91bmRpbmdCb3hTaXplLmhlaWdodCksbi53aWR0aD1NYXRoLm1pbihuLndpZHRoLHRoaXMuX2xhc3RCb3VuZGluZ0JveFNpemUud2lkdGgpKTtjb25zdCBvPXt9O2lmKHRoaXMuX2hhc0V4YWN0UG9zaXRpb24oKSlvLnRvcD1vLmxlZnQ9IjAiLG8uYm90dG9tPW8ucmlnaHQ9by5tYXhIZWlnaHQ9by5tYXhXaWR0aD0iIixvLndpZHRoPW8uaGVpZ2h0PSIxMDAlIjtlbHNle2NvbnN0IHQ9dGhpcy5fb3ZlcmxheVJlZi5nZXRDb25maWcoKS5tYXhIZWlnaHQsaT10aGlzLl9vdmVybGF5UmVmLmdldENvbmZpZygpLm1heFdpZHRoO28uaGVpZ2h0PWFIKG4uaGVpZ2h0KSxvLnRvcD1hSChuLnRvcCksby5ib3R0b209YUgobi5ib3R0b20pLG8ud2lkdGg9YUgobi53aWR0aCksby5sZWZ0PWFIKG4ubGVmdCksby5yaWdodD1hSChuLnJpZ2h0KSxvLmFsaWduSXRlbXM9ImNlbnRlciI9PT1lLm92ZXJsYXlYPyJjZW50ZXIiOiJlbmQiPT09ZS5vdmVybGF5WD8iZmxleC1lbmQiOiJmbGV4LXN0YXJ0IixvLmp1c3RpZnlDb250ZW50PSJjZW50ZXIiPT09ZS5vdmVybGF5WT8iY2VudGVyIjoiYm90dG9tIj09PWUub3ZlcmxheVk/ImZsZXgtZW5kIjoiZmxleC1zdGFydCIsdCYmKG8ubWF4SGVpZ2h0PWFIKHQpKSxpJiYoby5tYXhXaWR0aD1hSChpKSl9dGhpcy5fbGFzdEJvdW5kaW5nQm94U2l6ZT1uLGpCKHRoaXMuX2JvdW5kaW5nQm94LnN0eWxlLG8pfV9yZXNldEJvdW5kaW5nQm94U3R5bGVzKCl7akIodGhpcy5fYm91bmRpbmdCb3guc3R5bGUse3RvcDoiMCIsbGVmdDoiMCIscmlnaHQ6IjAiLGJvdHRvbToiMCIsaGVpZ2h0OiIiLHdpZHRoOiIiLGFsaWduSXRlbXM6IiIsanVzdGlmeUNvbnRlbnQ6IiJ9KX1fcmVzZXRPdmVybGF5RWxlbWVudFN0eWxlcygpe2pCKHRoaXMuX3BhbmUuc3R5bGUse3RvcDoiIixsZWZ0OiIiLGJvdHRvbToiIixyaWdodDoiIixwb3NpdGlvbjoiIix0cmFuc2Zvcm06IiJ9KX1fc2V0T3ZlcmxheUVsZW1lbnRTdHlsZXModCxlKXtjb25zdCBuPXt9LG89dGhpcy5faGFzRXhhY3RQb3NpdGlvbigpLGk9dGhpcy5faGFzRmxleGlibGVEaW1lbnNpb25zLGE9dGhpcy5fb3ZlcmxheVJlZi5nZXRDb25maWcoKTtpZihvKXtjb25zdCBvPXRoaXMuX3ZpZXdwb3J0UnVsZXIuZ2V0Vmlld3BvcnRTY3JvbGxQb3NpdGlvbigpO2pCKG4sdGhpcy5fZ2V0RXhhY3RPdmVybGF5WShlLHQsbykpLGpCKG4sdGhpcy5fZ2V0RXhhY3RPdmVybGF5WChlLHQsbykpfWVsc2Ugbi5wb3NpdGlvbj0ic3RhdGljIjtsZXQgcj0iIixzPXRoaXMuX2dldE9mZnNldChlLCJ4IiksbD10aGlzLl9nZXRPZmZzZXQoZSwieSIpO3MmJihyKz1gdHJhbnNsYXRlWCgke3N9cHgpIGApLGwmJihyKz1gdHJhbnNsYXRlWSgke2x9cHgpYCksbi50cmFuc2Zvcm09ci50cmltKCksYS5tYXhIZWlnaHQmJihvP24ubWF4SGVpZ2h0PWFIKGEubWF4SGVpZ2h0KTppJiYobi5tYXhIZWlnaHQ9IiIpKSxhLm1heFdpZHRoJiYobz9uLm1heFdpZHRoPWFIKGEubWF4V2lkdGgpOmkmJihuLm1heFdpZHRoPSIiKSksakIodGhpcy5fcGFuZS5zdHlsZSxuKX1fZ2V0RXhhY3RPdmVybGF5WSh0LGUsbil7bGV0IG89e3RvcDoiIixib3R0b206IiJ9LGk9dGhpcy5fZ2V0T3ZlcmxheVBvaW50KGUsdGhpcy5fb3ZlcmxheVJlY3QsdCk7dGhpcy5faXNQdXNoZWQmJihpPXRoaXMuX3B1c2hPdmVybGF5T25TY3JlZW4oaSx0aGlzLl9vdmVybGF5UmVjdCxuKSk7bGV0IGE9dGhpcy5fb3ZlcmxheUNvbnRhaW5lci5nZXRDb250YWluZXJFbGVtZW50KCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wO2lmKGkueS09YSwiYm90dG9tIj09PXQub3ZlcmxheVkpe28uYm90dG9tPXRoaXMuX2RvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQtKGkueSt0aGlzLl9vdmVybGF5UmVjdC5oZWlnaHQpKyJweCJ9ZWxzZSBvLnRvcD1hSChpLnkpO3JldHVybiBvfV9nZXRFeGFjdE92ZXJsYXlYKHQsZSxuKXtsZXQgbyxpPXtsZWZ0OiIiLHJpZ2h0OiIifSxhPXRoaXMuX2dldE92ZXJsYXlQb2ludChlLHRoaXMuX292ZXJsYXlSZWN0LHQpO2lmKHRoaXMuX2lzUHVzaGVkJiYoYT10aGlzLl9wdXNoT3ZlcmxheU9uU2NyZWVuKGEsdGhpcy5fb3ZlcmxheVJlY3QsbikpLG89dGhpcy5faXNSdGwoKT8iZW5kIj09PXQub3ZlcmxheVg/ImxlZnQiOiJyaWdodCI6ImVuZCI9PT10Lm92ZXJsYXlYPyJyaWdodCI6ImxlZnQiLCJyaWdodCI9PT1vKXtpLnJpZ2h0PXRoaXMuX2RvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aC0oYS54K3RoaXMuX292ZXJsYXlSZWN0LndpZHRoKSsicHgifWVsc2UgaS5sZWZ0PWFIKGEueCk7cmV0dXJuIGl9X2dldFNjcm9sbFZpc2liaWxpdHkoKXtjb25zdCB0PXRoaXMuX2dldE9yaWdpblJlY3QoKSxlPXRoaXMuX3BhbmUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbj10aGlzLl9zY3JvbGxhYmxlcy5tYXAoKHQ9PnQuZ2V0RWxlbWVudFJlZigpLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpKTtyZXR1cm57aXNPcmlnaW5DbGlwcGVkOnhCKHQsbiksaXNPcmlnaW5PdXRzaWRlVmlldzp2Qih0LG4pLGlzT3ZlcmxheUNsaXBwZWQ6eEIoZSxuKSxpc092ZXJsYXlPdXRzaWRlVmlldzp2QihlLG4pfX1fc3VidHJhY3RPdmVyZmxvd3ModCwuLi5lKXtyZXR1cm4gZS5yZWR1Y2UoKCh0LGUpPT50LU1hdGgubWF4KGUsMCkpLHQpfV9nZXROYXJyb3dlZFZpZXdwb3J0UmVjdCgpe2NvbnN0IHQ9dGhpcy5fZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoLGU9dGhpcy5fZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCxuPXRoaXMuX3ZpZXdwb3J0UnVsZXIuZ2V0Vmlld3BvcnRTY3JvbGxQb3NpdGlvbigpO3JldHVybnt0b3A6bi50b3ArdGhpcy5fdmlld3BvcnRNYXJnaW4sbGVmdDpuLmxlZnQrdGhpcy5fdmlld3BvcnRNYXJnaW4scmlnaHQ6bi5sZWZ0K3QtdGhpcy5fdmlld3BvcnRNYXJnaW4sYm90dG9tOm4udG9wK2UtdGhpcy5fdmlld3BvcnRNYXJnaW4sd2lkdGg6dC0yKnRoaXMuX3ZpZXdwb3J0TWFyZ2luLGhlaWdodDplLTIqdGhpcy5fdmlld3BvcnRNYXJnaW59fV9pc1J0bCgpe3JldHVybiJydGwiPT09dGhpcy5fb3ZlcmxheVJlZi5nZXREaXJlY3Rpb24oKX1faGFzRXhhY3RQb3NpdGlvbigpe3JldHVybiF0aGlzLl9oYXNGbGV4aWJsZURpbWVuc2lvbnN8fHRoaXMuX2lzUHVzaGVkfV9nZXRPZmZzZXQodCxlKXtyZXR1cm4ieCI9PT1lP251bGw9PXQub2Zmc2V0WD90aGlzLl9vZmZzZXRYOnQub2Zmc2V0WDpudWxsPT10Lm9mZnNldFk/dGhpcy5fb2Zmc2V0WTp0Lm9mZnNldFl9X3ZhbGlkYXRlUG9zaXRpb25zKCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSl7aWYoIXRoaXMuX3ByZWZlcnJlZFBvc2l0aW9ucy5sZW5ndGgpdGhyb3cgRXJyb3IoIkZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneTogQXQgbGVhc3Qgb25lIHBvc2l0aW9uIGlzIHJlcXVpcmVkLiIpO3RoaXMuX3ByZWZlcnJlZFBvc2l0aW9ucy5mb3JFYWNoKCh0PT57RUIoIm9yaWdpblgiLHQub3JpZ2luWCksUkIoIm9yaWdpblkiLHQub3JpZ2luWSksRUIoIm92ZXJsYXlYIix0Lm92ZXJsYXlYKSxSQigib3ZlcmxheVkiLHQub3ZlcmxheVkpfSkpfX1fYWRkUGFuZWxDbGFzc2VzKHQpe3RoaXMuX3BhbmUmJmlIKHQpLmZvckVhY2goKHQ9PnsiIiE9PXQmJi0xPT09dGhpcy5fYXBwbGllZFBhbmVsQ2xhc3Nlcy5pbmRleE9mKHQpJiYodGhpcy5fYXBwbGllZFBhbmVsQ2xhc3Nlcy5wdXNoKHQpLHRoaXMuX3BhbmUuY2xhc3NMaXN0LmFkZCh0KSl9KSl9X2NsZWFyUGFuZWxDbGFzc2VzKCl7dGhpcy5fcGFuZSYmKHRoaXMuX2FwcGxpZWRQYW5lbENsYXNzZXMuZm9yRWFjaCgodD0+e3RoaXMuX3BhbmUuY2xhc3NMaXN0LnJlbW92ZSh0KX0pKSx0aGlzLl9hcHBsaWVkUGFuZWxDbGFzc2VzPVtdKX1fZ2V0T3JpZ2luUmVjdCgpe2NvbnN0IHQ9dGhpcy5fb3JpZ2luO2lmKHQgaW5zdGFuY2VvZiBLaClyZXR1cm4gdC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2lmKHQgaW5zdGFuY2VvZiBFbGVtZW50KXJldHVybiB0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2NvbnN0IGU9dC53aWR0aHx8MCxuPXQuaGVpZ2h0fHwwO3JldHVybnt0b3A6dC55LGJvdHRvbTp0LnkrbixsZWZ0OnQueCxyaWdodDp0LngrZSxoZWlnaHQ6bix3aWR0aDplfX19ZnVuY3Rpb24gakIodCxlKXtmb3IobGV0IG4gaW4gZSllLmhhc093blByb3BlcnR5KG4pJiYodFtuXT1lW25dKTtyZXR1cm4gdH1mdW5jdGlvbiBVQih0KXtpZigibnVtYmVyIiE9dHlwZW9mIHQmJm51bGwhPXQpe2NvbnN0W2Usbl09dC5zcGxpdChCQik7cmV0dXJuIG4mJiJweCIhPT1uP251bGw6cGFyc2VGbG9hdChlKX1yZXR1cm4gdHx8bnVsbH1mdW5jdGlvbiBXQih0KXtyZXR1cm57dG9wOk1hdGguZmxvb3IodC50b3ApLHJpZ2h0Ok1hdGguZmxvb3IodC5yaWdodCksYm90dG9tOk1hdGguZmxvb3IodC5ib3R0b20pLGxlZnQ6TWF0aC5mbG9vcih0LmxlZnQpLHdpZHRoOk1hdGguZmxvb3IodC53aWR0aCksaGVpZ2h0Ok1hdGguZmxvb3IodC5oZWlnaHQpfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgR0J7Y29uc3RydWN0b3IodCxlLG4sbyxpLGEscil7dGhpcy5fcHJlZmVycmVkUG9zaXRpb25zPVtdLHRoaXMuX3Bvc2l0aW9uU3RyYXRlZ3k9bmV3IFZCKG4sbyxpLGEscikud2l0aEZsZXhpYmxlRGltZW5zaW9ucyghMSkud2l0aFB1c2goITEpLndpdGhWaWV3cG9ydE1hcmdpbigwKSx0aGlzLndpdGhGYWxsYmFja1Bvc2l0aW9uKHQsZSksdGhpcy5vblBvc2l0aW9uQ2hhbmdlPXRoaXMuX3Bvc2l0aW9uU3RyYXRlZ3kucG9zaXRpb25DaGFuZ2VzfWdldCBwb3NpdGlvbnMoKXtyZXR1cm4gdGhpcy5fcHJlZmVycmVkUG9zaXRpb25zfWF0dGFjaCh0KXt0aGlzLl9vdmVybGF5UmVmPXQsdGhpcy5fcG9zaXRpb25TdHJhdGVneS5hdHRhY2godCksdGhpcy5fZGlyZWN0aW9uJiYodC5zZXREaXJlY3Rpb24odGhpcy5fZGlyZWN0aW9uKSx0aGlzLl9kaXJlY3Rpb249bnVsbCl9ZGlzcG9zZSgpe3RoaXMuX3Bvc2l0aW9uU3RyYXRlZ3kuZGlzcG9zZSgpfWRldGFjaCgpe3RoaXMuX3Bvc2l0aW9uU3RyYXRlZ3kuZGV0YWNoKCl9YXBwbHkoKXt0aGlzLl9wb3NpdGlvblN0cmF0ZWd5LmFwcGx5KCl9cmVjYWxjdWxhdGVMYXN0UG9zaXRpb24oKXt0aGlzLl9wb3NpdGlvblN0cmF0ZWd5LnJlYXBwbHlMYXN0UG9zaXRpb24oKX13aXRoU2Nyb2xsYWJsZUNvbnRhaW5lcnModCl7dGhpcy5fcG9zaXRpb25TdHJhdGVneS53aXRoU2Nyb2xsYWJsZUNvbnRhaW5lcnModCl9d2l0aEZhbGxiYWNrUG9zaXRpb24odCxlLG4sbyl7Y29uc3QgaT1uZXcga0IodCxlLG4sbyk7cmV0dXJuIHRoaXMuX3ByZWZlcnJlZFBvc2l0aW9ucy5wdXNoKGkpLHRoaXMuX3Bvc2l0aW9uU3RyYXRlZ3kud2l0aFBvc2l0aW9ucyh0aGlzLl9wcmVmZXJyZWRQb3NpdGlvbnMpLHRoaXN9d2l0aERpcmVjdGlvbih0KXtyZXR1cm4gdGhpcy5fb3ZlcmxheVJlZj90aGlzLl9vdmVybGF5UmVmLnNldERpcmVjdGlvbih0KTp0aGlzLl9kaXJlY3Rpb249dCx0aGlzfXdpdGhPZmZzZXRYKHQpe3JldHVybiB0aGlzLl9wb3NpdGlvblN0cmF0ZWd5LndpdGhEZWZhdWx0T2Zmc2V0WCh0KSx0aGlzfXdpdGhPZmZzZXRZKHQpe3JldHVybiB0aGlzLl9wb3NpdGlvblN0cmF0ZWd5LndpdGhEZWZhdWx0T2Zmc2V0WSh0KSx0aGlzfXdpdGhMb2NrZWRQb3NpdGlvbih0KXtyZXR1cm4gdGhpcy5fcG9zaXRpb25TdHJhdGVneS53aXRoTG9ja2VkUG9zaXRpb24odCksdGhpc313aXRoUG9zaXRpb25zKHQpe3JldHVybiB0aGlzLl9wcmVmZXJyZWRQb3NpdGlvbnM9dC5zbGljZSgpLHRoaXMuX3Bvc2l0aW9uU3RyYXRlZ3kud2l0aFBvc2l0aW9ucyh0aGlzLl9wcmVmZXJyZWRQb3NpdGlvbnMpLHRoaXN9c2V0T3JpZ2luKHQpe3JldHVybiB0aGlzLl9wb3NpdGlvblN0cmF0ZWd5LnNldE9yaWdpbih0KSx0aGlzfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3QgWUI9ImNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyIjtjbGFzcyBxQntjb25zdHJ1Y3Rvcigpe3RoaXMuX2Nzc1Bvc2l0aW9uPSJzdGF0aWMiLHRoaXMuX3RvcE9mZnNldD0iIix0aGlzLl9ib3R0b21PZmZzZXQ9IiIsdGhpcy5fbGVmdE9mZnNldD0iIix0aGlzLl9yaWdodE9mZnNldD0iIix0aGlzLl9hbGlnbkl0ZW1zPSIiLHRoaXMuX2p1c3RpZnlDb250ZW50PSIiLHRoaXMuX3dpZHRoPSIiLHRoaXMuX2hlaWdodD0iIn1hdHRhY2godCl7Y29uc3QgZT10LmdldENvbmZpZygpO3RoaXMuX292ZXJsYXlSZWY9dCx0aGlzLl93aWR0aCYmIWUud2lkdGgmJnQudXBkYXRlU2l6ZSh7d2lkdGg6dGhpcy5fd2lkdGh9KSx0aGlzLl9oZWlnaHQmJiFlLmhlaWdodCYmdC51cGRhdGVTaXplKHtoZWlnaHQ6dGhpcy5faGVpZ2h0fSksdC5ob3N0RWxlbWVudC5jbGFzc0xpc3QuYWRkKFlCKSx0aGlzLl9pc0Rpc3Bvc2VkPSExfXRvcCh0PSIiKXtyZXR1cm4gdGhpcy5fYm90dG9tT2Zmc2V0PSIiLHRoaXMuX3RvcE9mZnNldD10LHRoaXMuX2FsaWduSXRlbXM9ImZsZXgtc3RhcnQiLHRoaXN9bGVmdCh0PSIiKXtyZXR1cm4gdGhpcy5fcmlnaHRPZmZzZXQ9IiIsdGhpcy5fbGVmdE9mZnNldD10LHRoaXMuX2p1c3RpZnlDb250ZW50PSJmbGV4LXN0YXJ0Iix0aGlzfWJvdHRvbSh0PSIiKXtyZXR1cm4gdGhpcy5fdG9wT2Zmc2V0PSIiLHRoaXMuX2JvdHRvbU9mZnNldD10LHRoaXMuX2FsaWduSXRlbXM9ImZsZXgtZW5kIix0aGlzfXJpZ2h0KHQ9IiIpe3JldHVybiB0aGlzLl9sZWZ0T2Zmc2V0PSIiLHRoaXMuX3JpZ2h0T2Zmc2V0PXQsdGhpcy5fanVzdGlmeUNvbnRlbnQ9ImZsZXgtZW5kIix0aGlzfXdpZHRoKHQ9IiIpe3JldHVybiB0aGlzLl9vdmVybGF5UmVmP3RoaXMuX292ZXJsYXlSZWYudXBkYXRlU2l6ZSh7d2lkdGg6dH0pOnRoaXMuX3dpZHRoPXQsdGhpc31oZWlnaHQodD0iIil7cmV0dXJuIHRoaXMuX292ZXJsYXlSZWY/dGhpcy5fb3ZlcmxheVJlZi51cGRhdGVTaXplKHtoZWlnaHQ6dH0pOnRoaXMuX2hlaWdodD10LHRoaXN9Y2VudGVySG9yaXpvbnRhbGx5KHQ9IiIpe3JldHVybiB0aGlzLmxlZnQodCksdGhpcy5fanVzdGlmeUNvbnRlbnQ9ImNlbnRlciIsdGhpc31jZW50ZXJWZXJ0aWNhbGx5KHQ9IiIpe3JldHVybiB0aGlzLnRvcCh0KSx0aGlzLl9hbGlnbkl0ZW1zPSJjZW50ZXIiLHRoaXN9YXBwbHkoKXtpZighdGhpcy5fb3ZlcmxheVJlZnx8IXRoaXMuX292ZXJsYXlSZWYuaGFzQXR0YWNoZWQoKSlyZXR1cm47Y29uc3QgdD10aGlzLl9vdmVybGF5UmVmLm92ZXJsYXlFbGVtZW50LnN0eWxlLGU9dGhpcy5fb3ZlcmxheVJlZi5ob3N0RWxlbWVudC5zdHlsZSxuPXRoaXMuX292ZXJsYXlSZWYuZ2V0Q29uZmlnKCkse3dpZHRoOm8saGVpZ2h0OmksbWF4V2lkdGg6YSxtYXhIZWlnaHQ6cn09bixzPSEoIjEwMCUiIT09byYmIjEwMHZ3IiE9PW98fGEmJiIxMDAlIiE9PWEmJiIxMDB2dyIhPT1hKSxsPSEoIjEwMCUiIT09aSYmIjEwMHZoIiE9PWl8fHImJiIxMDAlIiE9PXImJiIxMDB2aCIhPT1yKTt0LnBvc2l0aW9uPXRoaXMuX2Nzc1Bvc2l0aW9uLHQubWFyZ2luTGVmdD1zPyIwIjp0aGlzLl9sZWZ0T2Zmc2V0LHQubWFyZ2luVG9wPWw/IjAiOnRoaXMuX3RvcE9mZnNldCx0Lm1hcmdpbkJvdHRvbT10aGlzLl9ib3R0b21PZmZzZXQsdC5tYXJnaW5SaWdodD10aGlzLl9yaWdodE9mZnNldCxzP2UuanVzdGlmeUNvbnRlbnQ9ImZsZXgtc3RhcnQiOiJjZW50ZXIiPT09dGhpcy5fanVzdGlmeUNvbnRlbnQ/ZS5qdXN0aWZ5Q29udGVudD0iY2VudGVyIjoicnRsIj09PXRoaXMuX292ZXJsYXlSZWYuZ2V0Q29uZmlnKCkuZGlyZWN0aW9uPyJmbGV4LXN0YXJ0Ij09PXRoaXMuX2p1c3RpZnlDb250ZW50P2UuanVzdGlmeUNvbnRlbnQ9ImZsZXgtZW5kIjoiZmxleC1lbmQiPT09dGhpcy5fanVzdGlmeUNvbnRlbnQmJihlLmp1c3RpZnlDb250ZW50PSJmbGV4LXN0YXJ0Iik6ZS5qdXN0aWZ5Q29udGVudD10aGlzLl9qdXN0aWZ5Q29udGVudCxlLmFsaWduSXRlbXM9bD8iZmxleC1zdGFydCI6dGhpcy5fYWxpZ25JdGVtc31kaXNwb3NlKCl7aWYodGhpcy5faXNEaXNwb3NlZHx8IXRoaXMuX292ZXJsYXlSZWYpcmV0dXJuO2NvbnN0IHQ9dGhpcy5fb3ZlcmxheVJlZi5vdmVybGF5RWxlbWVudC5zdHlsZSxlPXRoaXMuX292ZXJsYXlSZWYuaG9zdEVsZW1lbnQsbj1lLnN0eWxlO2UuY2xhc3NMaXN0LnJlbW92ZShZQiksbi5qdXN0aWZ5Q29udGVudD1uLmFsaWduSXRlbXM9dC5tYXJnaW5Ub3A9dC5tYXJnaW5Cb3R0b209dC5tYXJnaW5MZWZ0PXQubWFyZ2luUmlnaHQ9dC5wb3NpdGlvbj0iIix0aGlzLl9vdmVybGF5UmVmPW51bGwsdGhpcy5faXNEaXNwb3NlZD0hMH19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIFpCe2NvbnN0cnVjdG9yKHQsZSxuLG8pe3RoaXMuX3ZpZXdwb3J0UnVsZXI9dCx0aGlzLl9kb2N1bWVudD1lLHRoaXMuX3BsYXRmb3JtPW4sdGhpcy5fb3ZlcmxheUNvbnRhaW5lcj1vfWdsb2JhbCgpe3JldHVybiBuZXcgcUJ9Y29ubmVjdGVkVG8odCxlLG4pe3JldHVybiBuZXcgR0IoZSxuLHQsdGhpcy5fdmlld3BvcnRSdWxlcix0aGlzLl9kb2N1bWVudCx0aGlzLl9wbGF0Zm9ybSx0aGlzLl9vdmVybGF5Q29udGFpbmVyKX1mbGV4aWJsZUNvbm5lY3RlZFRvKHQpe3JldHVybiBuZXcgVkIodCx0aGlzLl92aWV3cG9ydFJ1bGVyLHRoaXMuX2RvY3VtZW50LHRoaXMuX3BsYXRmb3JtLHRoaXMuX292ZXJsYXlDb250YWluZXIpfX1aQi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8WkIpKFRyKFFMKSxUcihzTSksVHIoY0gpLFRyKEhCKSl9LFpCLsm1cHJvdj1Tbih7ZmFjdG9yeTpmdW5jdGlvbiB0KCl7cmV0dXJuIG5ldyBaQihUcihRTCksVHIoc00pLFRyKGNIKSxUcihIQikpfSx0b2tlbjpaQixwcm92aWRlZEluOiJyb290In0pLFpCLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6UUx9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX0se3R5cGU6Y0h9LHt0eXBlOkhCfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihaQixbe3R5cGU6VW0sYXJnczpbe3Byb3ZpZGVkSW46InJvb3QifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6UUx9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX0se3R5cGU6Y0h9LHt0eXBlOkhCfV19KSxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmxldCBYQj0wO2NsYXNzIEtCe2NvbnN0cnVjdG9yKHQsZSxuLG8saSxhLHIscyxsLGMsZCl7dGhpcy5zY3JvbGxTdHJhdGVnaWVzPXQsdGhpcy5fb3ZlcmxheUNvbnRhaW5lcj1lLHRoaXMuX2NvbXBvbmVudEZhY3RvcnlSZXNvbHZlcj1uLHRoaXMuX3Bvc2l0aW9uQnVpbGRlcj1vLHRoaXMuX2tleWJvYXJkRGlzcGF0Y2hlcj1pLHRoaXMuX2luamVjdG9yPWEsdGhpcy5fbmdab25lPXIsdGhpcy5fZG9jdW1lbnQ9cyx0aGlzLl9kaXJlY3Rpb25hbGl0eT1sLHRoaXMuX2xvY2F0aW9uPWMsdGhpcy5fb3V0c2lkZUNsaWNrRGlzcGF0Y2hlcj1kfWNyZWF0ZSh0KXtjb25zdCBlPXRoaXMuX2NyZWF0ZUhvc3RFbGVtZW50KCksbj10aGlzLl9jcmVhdGVQYW5lRWxlbWVudChlKSxvPXRoaXMuX2NyZWF0ZVBvcnRhbE91dGxldChuKSxpPW5ldyB3Qih0KTtyZXR1cm4gaS5kaXJlY3Rpb249aS5kaXJlY3Rpb258fHRoaXMuX2RpcmVjdGlvbmFsaXR5LnZhbHVlLG5ldyBGQihvLGUsbixpLHRoaXMuX25nWm9uZSx0aGlzLl9rZXlib2FyZERpc3BhdGNoZXIsdGhpcy5fZG9jdW1lbnQsdGhpcy5fbG9jYXRpb24sdGhpcy5fb3V0c2lkZUNsaWNrRGlzcGF0Y2hlcil9cG9zaXRpb24oKXtyZXR1cm4gdGhpcy5fcG9zaXRpb25CdWlsZGVyfV9jcmVhdGVQYW5lRWxlbWVudCh0KXtjb25zdCBlPXRoaXMuX2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiBlLmlkPSJjZGstb3ZlcmxheS0iK1hCKyssZS5jbGFzc0xpc3QuYWRkKCJjZGstb3ZlcmxheS1wYW5lIiksdC5hcHBlbmRDaGlsZChlKSxlfV9jcmVhdGVIb3N0RWxlbWVudCgpe2NvbnN0IHQ9dGhpcy5fZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7cmV0dXJuIHRoaXMuX292ZXJsYXlDb250YWluZXIuZ2V0Q29udGFpbmVyRWxlbWVudCgpLmFwcGVuZENoaWxkKHQpLHR9X2NyZWF0ZVBvcnRhbE91dGxldCh0KXtyZXR1cm4gdGhpcy5fYXBwUmVmfHwodGhpcy5fYXBwUmVmPXRoaXMuX2luamVjdG9yLmdldChIQykpLG5ldyBwQih0LHRoaXMuX2NvbXBvbmVudEZhY3RvcnlSZXNvbHZlcix0aGlzLl9hcHBSZWYsdGhpcy5faW5qZWN0b3IsdGhpcy5fZG9jdW1lbnQpfX1LQi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8S0IpKFRyKFBCKSxUcihIQiksVHIoR2gpLFRyKFpCKSxUcihUQiksVHIoTnApLFRyKG1DKSxUcihzTSksVHIodkYpLFRyKE1NKSxUcihOQikpfSxLQi7JtXByb3Y9U24oe3Rva2VuOktCLGZhY3Rvcnk6S0IuybVmYWN9KSxLQi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOlBCfSx7dHlwZTpIQn0se3R5cGU6R2h9LHt0eXBlOlpCfSx7dHlwZTpUQn0se3R5cGU6TnB9LHt0eXBlOm1DfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19LHt0eXBlOnZGfSx7dHlwZTpNTX0se3R5cGU6TkJ9XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEtCLFt7dHlwZTpVbX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpQQn0se3R5cGU6SEJ9LHt0eXBlOkdofSx7dHlwZTpaQn0se3R5cGU6VEJ9LHt0eXBlOk5wfSx7dHlwZTptQ30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3NNXX1dfSx7dHlwZTp2Rn0se3R5cGU6TU19LHt0eXBlOk5CfV19KSxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IEpCPVt7b3JpZ2luWDoic3RhcnQiLG9yaWdpblk6ImJvdHRvbSIsb3ZlcmxheVg6InN0YXJ0IixvdmVybGF5WToidG9wIn0se29yaWdpblg6InN0YXJ0IixvcmlnaW5ZOiJ0b3AiLG92ZXJsYXlYOiJzdGFydCIsb3ZlcmxheVk6ImJvdHRvbSJ9LHtvcmlnaW5YOiJlbmQiLG9yaWdpblk6InRvcCIsb3ZlcmxheVg6ImVuZCIsb3ZlcmxheVk6ImJvdHRvbSJ9LHtvcmlnaW5YOiJlbmQiLG9yaWdpblk6ImJvdHRvbSIsb3ZlcmxheVg6ImVuZCIsb3ZlcmxheVk6InRvcCJ9XSxRQj1uZXcgZXIoImNkay1jb25uZWN0ZWQtb3ZlcmxheS1zY3JvbGwtc3RyYXRlZ3kiKTtjbGFzcyAkQntjb25zdHJ1Y3Rvcih0KXt0aGlzLmVsZW1lbnRSZWY9dH19JEIuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fCRCKShnZihLaCkpfSwkQi7JtWRpcj1obyh7dHlwZTokQixzZWxlY3RvcnM6W1siIiwiY2RrLW92ZXJsYXktb3JpZ2luIiwiIl0sWyIiLCJvdmVybGF5LW9yaWdpbiIsIiJdLFsiIiwiY2RrT3ZlcmxheU9yaWdpbiIsIiJdXSxleHBvcnRBczpbImNka092ZXJsYXlPcmlnaW4iXX0pLCRCLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6S2h9XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKCRCLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6IltjZGstb3ZlcmxheS1vcmlnaW5dLCBbb3ZlcmxheS1vcmlnaW5dLCBbY2RrT3ZlcmxheU9yaWdpbl0iLGV4cG9ydEFzOiJjZGtPdmVybGF5T3JpZ2luIn1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOktofV19KSxudWxsKTtjbGFzcyB0Vntjb25zdHJ1Y3Rvcih0LGUsbixvLGkpe3RoaXMuX292ZXJsYXk9dCx0aGlzLl9kaXI9aSx0aGlzLl9oYXNCYWNrZHJvcD0hMSx0aGlzLl9sb2NrUG9zaXRpb249ITEsdGhpcy5fZ3Jvd0FmdGVyT3Blbj0hMSx0aGlzLl9mbGV4aWJsZURpbWVuc2lvbnM9ITEsdGhpcy5fcHVzaD0hMSx0aGlzLl9iYWNrZHJvcFN1YnNjcmlwdGlvbj11LkVNUFRZLHRoaXMuX2F0dGFjaFN1YnNjcmlwdGlvbj11LkVNUFRZLHRoaXMuX2RldGFjaFN1YnNjcmlwdGlvbj11LkVNUFRZLHRoaXMuX3Bvc2l0aW9uU3Vic2NyaXB0aW9uPXUuRU1QVFksdGhpcy52aWV3cG9ydE1hcmdpbj0wLHRoaXMub3Blbj0hMSx0aGlzLmRpc2FibGVDbG9zZT0hMSx0aGlzLmJhY2tkcm9wQ2xpY2s9bmV3IFN5LHRoaXMucG9zaXRpb25DaGFuZ2U9bmV3IFN5LHRoaXMuYXR0YWNoPW5ldyBTeSx0aGlzLmRldGFjaD1uZXcgU3ksdGhpcy5vdmVybGF5S2V5ZG93bj1uZXcgU3ksdGhpcy5vdmVybGF5T3V0c2lkZUNsaWNrPW5ldyBTeSx0aGlzLl90ZW1wbGF0ZVBvcnRhbD1uZXcgbEIoZSxuKSx0aGlzLl9zY3JvbGxTdHJhdGVneUZhY3Rvcnk9byx0aGlzLnNjcm9sbFN0cmF0ZWd5PXRoaXMuX3Njcm9sbFN0cmF0ZWd5RmFjdG9yeSgpfWdldCBvZmZzZXRYKCl7cmV0dXJuIHRoaXMuX29mZnNldFh9c2V0IG9mZnNldFgodCl7dGhpcy5fb2Zmc2V0WD10LHRoaXMuX3Bvc2l0aW9uJiZ0aGlzLl91cGRhdGVQb3NpdGlvblN0cmF0ZWd5KHRoaXMuX3Bvc2l0aW9uKX1nZXQgb2Zmc2V0WSgpe3JldHVybiB0aGlzLl9vZmZzZXRZfXNldCBvZmZzZXRZKHQpe3RoaXMuX29mZnNldFk9dCx0aGlzLl9wb3NpdGlvbiYmdGhpcy5fdXBkYXRlUG9zaXRpb25TdHJhdGVneSh0aGlzLl9wb3NpdGlvbil9Z2V0IGhhc0JhY2tkcm9wKCl7cmV0dXJuIHRoaXMuX2hhc0JhY2tkcm9wfXNldCBoYXNCYWNrZHJvcCh0KXt0aGlzLl9oYXNCYWNrZHJvcD1lSCh0KX1nZXQgbG9ja1Bvc2l0aW9uKCl7cmV0dXJuIHRoaXMuX2xvY2tQb3NpdGlvbn1zZXQgbG9ja1Bvc2l0aW9uKHQpe3RoaXMuX2xvY2tQb3NpdGlvbj1lSCh0KX1nZXQgZmxleGlibGVEaW1lbnNpb25zKCl7cmV0dXJuIHRoaXMuX2ZsZXhpYmxlRGltZW5zaW9uc31zZXQgZmxleGlibGVEaW1lbnNpb25zKHQpe3RoaXMuX2ZsZXhpYmxlRGltZW5zaW9ucz1lSCh0KX1nZXQgZ3Jvd0FmdGVyT3Blbigpe3JldHVybiB0aGlzLl9ncm93QWZ0ZXJPcGVufXNldCBncm93QWZ0ZXJPcGVuKHQpe3RoaXMuX2dyb3dBZnRlck9wZW49ZUgodCl9Z2V0IHB1c2goKXtyZXR1cm4gdGhpcy5fcHVzaH1zZXQgcHVzaCh0KXt0aGlzLl9wdXNoPWVIKHQpfWdldCBvdmVybGF5UmVmKCl7cmV0dXJuIHRoaXMuX292ZXJsYXlSZWZ9Z2V0IGRpcigpe3JldHVybiB0aGlzLl9kaXI/dGhpcy5fZGlyLnZhbHVlOiJsdHIifW5nT25EZXN0cm95KCl7dGhpcy5fYXR0YWNoU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksdGhpcy5fZGV0YWNoU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksdGhpcy5fYmFja2Ryb3BTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLl9wb3NpdGlvblN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHRoaXMuX292ZXJsYXlSZWYmJnRoaXMuX292ZXJsYXlSZWYuZGlzcG9zZSgpfW5nT25DaGFuZ2VzKHQpe3RoaXMuX3Bvc2l0aW9uJiYodGhpcy5fdXBkYXRlUG9zaXRpb25TdHJhdGVneSh0aGlzLl9wb3NpdGlvbiksdGhpcy5fb3ZlcmxheVJlZi51cGRhdGVTaXplKHt3aWR0aDp0aGlzLndpZHRoLG1pbldpZHRoOnRoaXMubWluV2lkdGgsaGVpZ2h0OnRoaXMuaGVpZ2h0LG1pbkhlaWdodDp0aGlzLm1pbkhlaWdodH0pLHQub3JpZ2luJiZ0aGlzLm9wZW4mJnRoaXMuX3Bvc2l0aW9uLmFwcGx5KCkpLHQub3BlbiYmKHRoaXMub3Blbj90aGlzLl9hdHRhY2hPdmVybGF5KCk6dGhpcy5fZGV0YWNoT3ZlcmxheSgpKX1fY3JlYXRlT3ZlcmxheSgpe3RoaXMucG9zaXRpb25zJiZ0aGlzLnBvc2l0aW9ucy5sZW5ndGh8fCh0aGlzLnBvc2l0aW9ucz1KQik7Y29uc3QgdD10aGlzLl9vdmVybGF5UmVmPXRoaXMuX292ZXJsYXkuY3JlYXRlKHRoaXMuX2J1aWxkQ29uZmlnKCkpO3RoaXMuX2F0dGFjaFN1YnNjcmlwdGlvbj10LmF0dGFjaG1lbnRzKCkuc3Vic2NyaWJlKCgoKT0+dGhpcy5hdHRhY2guZW1pdCgpKSksdGhpcy5fZGV0YWNoU3Vic2NyaXB0aW9uPXQuZGV0YWNobWVudHMoKS5zdWJzY3JpYmUoKCgpPT50aGlzLmRldGFjaC5lbWl0KCkpKSx0LmtleWRvd25FdmVudHMoKS5zdWJzY3JpYmUoKHQ9Pnt0aGlzLm92ZXJsYXlLZXlkb3duLm5leHQodCksdC5rZXlDb2RlIT09S0l8fHRoaXMuZGlzYWJsZUNsb3NlfHx0SCh0KXx8KHQucHJldmVudERlZmF1bHQoKSx0aGlzLl9kZXRhY2hPdmVybGF5KCkpfSkpLHRoaXMuX292ZXJsYXlSZWYub3V0c2lkZVBvaW50ZXJFdmVudHMoKS5zdWJzY3JpYmUoKHQ9Pnt0aGlzLm92ZXJsYXlPdXRzaWRlQ2xpY2submV4dCh0KX0pKX1fYnVpbGRDb25maWcoKXtjb25zdCB0PXRoaXMuX3Bvc2l0aW9uPXRoaXMucG9zaXRpb25TdHJhdGVneXx8dGhpcy5fY3JlYXRlUG9zaXRpb25TdHJhdGVneSgpLGU9bmV3IHdCKHtkaXJlY3Rpb246dGhpcy5fZGlyLHBvc2l0aW9uU3RyYXRlZ3k6dCxzY3JvbGxTdHJhdGVneTp0aGlzLnNjcm9sbFN0cmF0ZWd5LGhhc0JhY2tkcm9wOnRoaXMuaGFzQmFja2Ryb3B9KTtyZXR1cm4odGhpcy53aWR0aHx8MD09PXRoaXMud2lkdGgpJiYoZS53aWR0aD10aGlzLndpZHRoKSwodGhpcy5oZWlnaHR8fDA9PT10aGlzLmhlaWdodCkmJihlLmhlaWdodD10aGlzLmhlaWdodCksKHRoaXMubWluV2lkdGh8fDA9PT10aGlzLm1pbldpZHRoKSYmKGUubWluV2lkdGg9dGhpcy5taW5XaWR0aCksKHRoaXMubWluSGVpZ2h0fHwwPT09dGhpcy5taW5IZWlnaHQpJiYoZS5taW5IZWlnaHQ9dGhpcy5taW5IZWlnaHQpLHRoaXMuYmFja2Ryb3BDbGFzcyYmKGUuYmFja2Ryb3BDbGFzcz10aGlzLmJhY2tkcm9wQ2xhc3MpLHRoaXMucGFuZWxDbGFzcyYmKGUucGFuZWxDbGFzcz10aGlzLnBhbmVsQ2xhc3MpLGV9X3VwZGF0ZVBvc2l0aW9uU3RyYXRlZ3kodCl7Y29uc3QgZT10aGlzLnBvc2l0aW9ucy5tYXAoKHQ9Pih7b3JpZ2luWDp0Lm9yaWdpblgsb3JpZ2luWTp0Lm9yaWdpblksb3ZlcmxheVg6dC5vdmVybGF5WCxvdmVybGF5WTp0Lm92ZXJsYXlZLG9mZnNldFg6dC5vZmZzZXRYfHx0aGlzLm9mZnNldFgsb2Zmc2V0WTp0Lm9mZnNldFl8fHRoaXMub2Zmc2V0WSxwYW5lbENsYXNzOnQucGFuZWxDbGFzc3x8dm9pZCAwfSkpKTtyZXR1cm4gdC5zZXRPcmlnaW4odGhpcy5vcmlnaW4uZWxlbWVudFJlZikud2l0aFBvc2l0aW9ucyhlKS53aXRoRmxleGlibGVEaW1lbnNpb25zKHRoaXMuZmxleGlibGVEaW1lbnNpb25zKS53aXRoUHVzaCh0aGlzLnB1c2gpLndpdGhHcm93QWZ0ZXJPcGVuKHRoaXMuZ3Jvd0FmdGVyT3Blbikud2l0aFZpZXdwb3J0TWFyZ2luKHRoaXMudmlld3BvcnRNYXJnaW4pLndpdGhMb2NrZWRQb3NpdGlvbih0aGlzLmxvY2tQb3NpdGlvbikud2l0aFRyYW5zZm9ybU9yaWdpbk9uKHRoaXMudHJhbnNmb3JtT3JpZ2luU2VsZWN0b3IpfV9jcmVhdGVQb3NpdGlvblN0cmF0ZWd5KCl7Y29uc3QgdD10aGlzLl9vdmVybGF5LnBvc2l0aW9uKCkuZmxleGlibGVDb25uZWN0ZWRUbyh0aGlzLm9yaWdpbi5lbGVtZW50UmVmKTtyZXR1cm4gdGhpcy5fdXBkYXRlUG9zaXRpb25TdHJhdGVneSh0KSx0fV9hdHRhY2hPdmVybGF5KCl7dGhpcy5fb3ZlcmxheVJlZj90aGlzLl9vdmVybGF5UmVmLmdldENvbmZpZygpLmhhc0JhY2tkcm9wPXRoaXMuaGFzQmFja2Ryb3A6dGhpcy5fY3JlYXRlT3ZlcmxheSgpLHRoaXMuX292ZXJsYXlSZWYuaGFzQXR0YWNoZWQoKXx8dGhpcy5fb3ZlcmxheVJlZi5hdHRhY2godGhpcy5fdGVtcGxhdGVQb3J0YWwpLHRoaXMuaGFzQmFja2Ryb3A/dGhpcy5fYmFja2Ryb3BTdWJzY3JpcHRpb249dGhpcy5fb3ZlcmxheVJlZi5iYWNrZHJvcENsaWNrKCkuc3Vic2NyaWJlKCh0PT57dGhpcy5iYWNrZHJvcENsaWNrLmVtaXQodCl9KSk6dGhpcy5fYmFja2Ryb3BTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLl9wb3NpdGlvblN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHRoaXMucG9zaXRpb25DaGFuZ2Uub2JzZXJ2ZXJzLmxlbmd0aD4wJiYodGhpcy5fcG9zaXRpb25TdWJzY3JpcHRpb249dGhpcy5fcG9zaXRpb24ucG9zaXRpb25DaGFuZ2VzLnBpcGUoVWUoKCgpPT50aGlzLnBvc2l0aW9uQ2hhbmdlLm9ic2VydmVycy5sZW5ndGg+MCkpKS5zdWJzY3JpYmUoKHQ9Pnt0aGlzLnBvc2l0aW9uQ2hhbmdlLmVtaXQodCksMD09PXRoaXMucG9zaXRpb25DaGFuZ2Uub2JzZXJ2ZXJzLmxlbmd0aCYmdGhpcy5fcG9zaXRpb25TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKX0pKSl9X2RldGFjaE92ZXJsYXkoKXt0aGlzLl9vdmVybGF5UmVmJiZ0aGlzLl9vdmVybGF5UmVmLmRldGFjaCgpLHRoaXMuX2JhY2tkcm9wU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksdGhpcy5fcG9zaXRpb25TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKX19dFYuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHRWKShnZihLQiksZ2YoRWIpLGdmKEZiKSxnZihRQiksZ2YodkYsOCkpfSx0Vi7JtWRpcj1obyh7dHlwZTp0VixzZWxlY3RvcnM6W1siIiwiY2RrLWNvbm5lY3RlZC1vdmVybGF5IiwiIl0sWyIiLCJjb25uZWN0ZWQtb3ZlcmxheSIsIiJdLFsiIiwiY2RrQ29ubmVjdGVkT3ZlcmxheSIsIiJdXSxpbnB1dHM6e3ZpZXdwb3J0TWFyZ2luOlsiY2RrQ29ubmVjdGVkT3ZlcmxheVZpZXdwb3J0TWFyZ2luIiwidmlld3BvcnRNYXJnaW4iXSxvcGVuOlsiY2RrQ29ubmVjdGVkT3ZlcmxheU9wZW4iLCJvcGVuIl0sZGlzYWJsZUNsb3NlOlsiY2RrQ29ubmVjdGVkT3ZlcmxheURpc2FibGVDbG9zZSIsImRpc2FibGVDbG9zZSJdLHNjcm9sbFN0cmF0ZWd5OlsiY2RrQ29ubmVjdGVkT3ZlcmxheVNjcm9sbFN0cmF0ZWd5Iiwic2Nyb2xsU3RyYXRlZ3kiXSxvZmZzZXRYOlsiY2RrQ29ubmVjdGVkT3ZlcmxheU9mZnNldFgiLCJvZmZzZXRYIl0sb2Zmc2V0WTpbImNka0Nvbm5lY3RlZE92ZXJsYXlPZmZzZXRZIiwib2Zmc2V0WSJdLGhhc0JhY2tkcm9wOlsiY2RrQ29ubmVjdGVkT3ZlcmxheUhhc0JhY2tkcm9wIiwiaGFzQmFja2Ryb3AiXSxsb2NrUG9zaXRpb246WyJjZGtDb25uZWN0ZWRPdmVybGF5TG9ja1Bvc2l0aW9uIiwibG9ja1Bvc2l0aW9uIl0sZmxleGlibGVEaW1lbnNpb25zOlsiY2RrQ29ubmVjdGVkT3ZlcmxheUZsZXhpYmxlRGltZW5zaW9ucyIsImZsZXhpYmxlRGltZW5zaW9ucyJdLGdyb3dBZnRlck9wZW46WyJjZGtDb25uZWN0ZWRPdmVybGF5R3Jvd0FmdGVyT3BlbiIsImdyb3dBZnRlck9wZW4iXSxwdXNoOlsiY2RrQ29ubmVjdGVkT3ZlcmxheVB1c2giLCJwdXNoIl0scG9zaXRpb25zOlsiY2RrQ29ubmVjdGVkT3ZlcmxheVBvc2l0aW9ucyIsInBvc2l0aW9ucyJdLG9yaWdpbjpbImNka0Nvbm5lY3RlZE92ZXJsYXlPcmlnaW4iLCJvcmlnaW4iXSxwb3NpdGlvblN0cmF0ZWd5OlsiY2RrQ29ubmVjdGVkT3ZlcmxheVBvc2l0aW9uU3RyYXRlZ3kiLCJwb3NpdGlvblN0cmF0ZWd5Il0sd2lkdGg6WyJjZGtDb25uZWN0ZWRPdmVybGF5V2lkdGgiLCJ3aWR0aCJdLGhlaWdodDpbImNka0Nvbm5lY3RlZE92ZXJsYXlIZWlnaHQiLCJoZWlnaHQiXSxtaW5XaWR0aDpbImNka0Nvbm5lY3RlZE92ZXJsYXlNaW5XaWR0aCIsIm1pbldpZHRoIl0sbWluSGVpZ2h0OlsiY2RrQ29ubmVjdGVkT3ZlcmxheU1pbkhlaWdodCIsIm1pbkhlaWdodCJdLGJhY2tkcm9wQ2xhc3M6WyJjZGtDb25uZWN0ZWRPdmVybGF5QmFja2Ryb3BDbGFzcyIsImJhY2tkcm9wQ2xhc3MiXSxwYW5lbENsYXNzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheVBhbmVsQ2xhc3MiLCJwYW5lbENsYXNzIl0sdHJhbnNmb3JtT3JpZ2luU2VsZWN0b3I6WyJjZGtDb25uZWN0ZWRPdmVybGF5VHJhbnNmb3JtT3JpZ2luT24iLCJ0cmFuc2Zvcm1PcmlnaW5TZWxlY3RvciJdfSxvdXRwdXRzOntiYWNrZHJvcENsaWNrOiJiYWNrZHJvcENsaWNrIixwb3NpdGlvbkNoYW5nZToicG9zaXRpb25DaGFuZ2UiLGF0dGFjaDoiYXR0YWNoIixkZXRhY2g6ImRldGFjaCIsb3ZlcmxheUtleWRvd246Im92ZXJsYXlLZXlkb3duIixvdmVybGF5T3V0c2lkZUNsaWNrOiJvdmVybGF5T3V0c2lkZUNsaWNrIn0sZXhwb3J0QXM6WyJjZGtDb25uZWN0ZWRPdmVybGF5Il0sZmVhdHVyZXM6W3FvXX0pLHRWLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6S0J9LHt0eXBlOkVifSx7dHlwZTpGYn0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W1FCXX1dfSx7dHlwZTp2RixkZWNvcmF0b3JzOlt7dHlwZTpCcn1dfV0sdFYucHJvcERlY29yYXRvcnM9e29yaWdpbjpbe3R5cGU6Ul8sYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlPcmlnaW4iXX1dLHBvc2l0aW9uczpbe3R5cGU6Ul8sYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlQb3NpdGlvbnMiXX1dLHBvc2l0aW9uU3RyYXRlZ3k6W3t0eXBlOlJfLGFyZ3M6WyJjZGtDb25uZWN0ZWRPdmVybGF5UG9zaXRpb25TdHJhdGVneSJdfV0sb2Zmc2V0WDpbe3R5cGU6Ul8sYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlPZmZzZXRYIl19XSxvZmZzZXRZOlt7dHlwZTpSXyxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheU9mZnNldFkiXX1dLHdpZHRoOlt7dHlwZTpSXyxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheVdpZHRoIl19XSxoZWlnaHQ6W3t0eXBlOlJfLGFyZ3M6WyJjZGtDb25uZWN0ZWRPdmVybGF5SGVpZ2h0Il19XSxtaW5XaWR0aDpbe3R5cGU6Ul8sYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlNaW5XaWR0aCJdfV0sbWluSGVpZ2h0Olt7dHlwZTpSXyxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheU1pbkhlaWdodCJdfV0sYmFja2Ryb3BDbGFzczpbe3R5cGU6Ul8sYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlCYWNrZHJvcENsYXNzIl19XSxwYW5lbENsYXNzOlt7dHlwZTpSXyxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheVBhbmVsQ2xhc3MiXX1dLHZpZXdwb3J0TWFyZ2luOlt7dHlwZTpSXyxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheVZpZXdwb3J0TWFyZ2luIl19XSxzY3JvbGxTdHJhdGVneTpbe3R5cGU6Ul8sYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlTY3JvbGxTdHJhdGVneSJdfV0sb3Blbjpbe3R5cGU6Ul8sYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlPcGVuIl19XSxkaXNhYmxlQ2xvc2U6W3t0eXBlOlJfLGFyZ3M6WyJjZGtDb25uZWN0ZWRPdmVybGF5RGlzYWJsZUNsb3NlIl19XSx0cmFuc2Zvcm1PcmlnaW5TZWxlY3Rvcjpbe3R5cGU6Ul8sYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlUcmFuc2Zvcm1PcmlnaW5PbiJdfV0saGFzQmFja2Ryb3A6W3t0eXBlOlJfLGFyZ3M6WyJjZGtDb25uZWN0ZWRPdmVybGF5SGFzQmFja2Ryb3AiXX1dLGxvY2tQb3NpdGlvbjpbe3R5cGU6Ul8sYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlMb2NrUG9zaXRpb24iXX1dLGZsZXhpYmxlRGltZW5zaW9uczpbe3R5cGU6Ul8sYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlGbGV4aWJsZURpbWVuc2lvbnMiXX1dLGdyb3dBZnRlck9wZW46W3t0eXBlOlJfLGFyZ3M6WyJjZGtDb25uZWN0ZWRPdmVybGF5R3Jvd0FmdGVyT3BlbiJdfV0scHVzaDpbe3R5cGU6Ul8sYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlQdXNoIl19XSxiYWNrZHJvcENsaWNrOlt7dHlwZTpFX31dLHBvc2l0aW9uQ2hhbmdlOlt7dHlwZTpFX31dLGF0dGFjaDpbe3R5cGU6RV99XSxkZXRhY2g6W3t0eXBlOkVffV0sb3ZlcmxheUtleWRvd246W3t0eXBlOkVffV0sb3ZlcmxheU91dHNpZGVDbGljazpbe3R5cGU6RV99XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih0Vixbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJbY2RrLWNvbm5lY3RlZC1vdmVybGF5XSwgW2Nvbm5lY3RlZC1vdmVybGF5XSwgW2Nka0Nvbm5lY3RlZE92ZXJsYXldIixleHBvcnRBczoiY2RrQ29ubmVjdGVkT3ZlcmxheSJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpLQn0se3R5cGU6RWJ9LHt0eXBlOkZifSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbUUJdfV19LHt0eXBlOnZGLGRlY29yYXRvcnM6W3t0eXBlOkJyfV19XX0pLHt2aWV3cG9ydE1hcmdpbjpbe3R5cGU6Ul8sYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlWaWV3cG9ydE1hcmdpbiJdfV0sb3Blbjpbe3R5cGU6Ul8sYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlPcGVuIl19XSxkaXNhYmxlQ2xvc2U6W3t0eXBlOlJfLGFyZ3M6WyJjZGtDb25uZWN0ZWRPdmVybGF5RGlzYWJsZUNsb3NlIl19XSxiYWNrZHJvcENsaWNrOlt7dHlwZTpFX31dLHBvc2l0aW9uQ2hhbmdlOlt7dHlwZTpFX31dLGF0dGFjaDpbe3R5cGU6RV99XSxkZXRhY2g6W3t0eXBlOkVffV0sb3ZlcmxheUtleWRvd246W3t0eXBlOkVffV0sb3ZlcmxheU91dHNpZGVDbGljazpbe3R5cGU6RV99XSxzY3JvbGxTdHJhdGVneTpbe3R5cGU6Ul8sYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlTY3JvbGxTdHJhdGVneSJdfV0sb2Zmc2V0WDpbe3R5cGU6Ul8sYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlPZmZzZXRYIl19XSxvZmZzZXRZOlt7dHlwZTpSXyxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheU9mZnNldFkiXX1dLGhhc0JhY2tkcm9wOlt7dHlwZTpSXyxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheUhhc0JhY2tkcm9wIl19XSxsb2NrUG9zaXRpb246W3t0eXBlOlJfLGFyZ3M6WyJjZGtDb25uZWN0ZWRPdmVybGF5TG9ja1Bvc2l0aW9uIl19XSxmbGV4aWJsZURpbWVuc2lvbnM6W3t0eXBlOlJfLGFyZ3M6WyJjZGtDb25uZWN0ZWRPdmVybGF5RmxleGlibGVEaW1lbnNpb25zIl19XSxncm93QWZ0ZXJPcGVuOlt7dHlwZTpSXyxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheUdyb3dBZnRlck9wZW4iXX1dLHB1c2g6W3t0eXBlOlJfLGFyZ3M6WyJjZGtDb25uZWN0ZWRPdmVybGF5UHVzaCJdfV0scG9zaXRpb25zOlt7dHlwZTpSXyxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheVBvc2l0aW9ucyJdfV0sb3JpZ2luOlt7dHlwZTpSXyxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheU9yaWdpbiJdfV0scG9zaXRpb25TdHJhdGVneTpbe3R5cGU6Ul8sYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlQb3NpdGlvblN0cmF0ZWd5Il19XSx3aWR0aDpbe3R5cGU6Ul8sYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlXaWR0aCJdfV0saGVpZ2h0Olt7dHlwZTpSXyxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheUhlaWdodCJdfV0sbWluV2lkdGg6W3t0eXBlOlJfLGFyZ3M6WyJjZGtDb25uZWN0ZWRPdmVybGF5TWluV2lkdGgiXX1dLG1pbkhlaWdodDpbe3R5cGU6Ul8sYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlNaW5IZWlnaHQiXX1dLGJhY2tkcm9wQ2xhc3M6W3t0eXBlOlJfLGFyZ3M6WyJjZGtDb25uZWN0ZWRPdmVybGF5QmFja2Ryb3BDbGFzcyJdfV0scGFuZWxDbGFzczpbe3R5cGU6Ul8sYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlQYW5lbENsYXNzIl19XSx0cmFuc2Zvcm1PcmlnaW5TZWxlY3Rvcjpbe3R5cGU6Ul8sYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlUcmFuc2Zvcm1PcmlnaW5PbiJdfV19KTtjb25zdCBlVj17cHJvdmlkZTpRQixkZXBzOltLQl0sdXNlRmFjdG9yeTpmdW5jdGlvbiBuVih0KXtyZXR1cm4oKT0+dC5zY3JvbGxTdHJhdGVnaWVzLnJlcG9zaXRpb24oKX19OwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBvVnt9b1YuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fG9WKX0sb1YuybVtb2Q9Zm8oe3R5cGU6b1Z9KSxvVi7JtWluaj1Ebih7cHJvdmlkZXJzOltLQixlVl0saW1wb3J0czpbW09GLGhCLGlCXSxpQl19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKG9WLFt7dHlwZTpMXyxhcmdzOlt7aW1wb3J0czpbT0YsaEIsaUJdLGV4cG9ydHM6W3RWLCRCLGlCXSxkZWNsYXJhdGlvbnM6W3RWLCRCXSxwcm92aWRlcnM6W0tCLGVWXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKG9WLHtkZWNsYXJhdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm5bdFYsJEJdfSxpbXBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW09GLGhCLGlCXX0sZXhwb3J0czpmdW5jdGlvbigpe3JldHVyblt0ViwkQixpQl19fSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgaVYgZXh0ZW5kcyBIQntjb25zdHJ1Y3Rvcih0LGUpe3N1cGVyKHQsZSl9bmdPbkRlc3Ryb3koKXtzdXBlci5uZ09uRGVzdHJveSgpLHRoaXMuX2Z1bGxTY3JlZW5FdmVudE5hbWUmJnRoaXMuX2Z1bGxTY3JlZW5MaXN0ZW5lciYmdGhpcy5fZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcih0aGlzLl9mdWxsU2NyZWVuRXZlbnROYW1lLHRoaXMuX2Z1bGxTY3JlZW5MaXN0ZW5lcil9X2NyZWF0ZUNvbnRhaW5lcigpe3N1cGVyLl9jcmVhdGVDb250YWluZXIoKSx0aGlzLl9hZGp1c3RQYXJlbnRGb3JGdWxsc2NyZWVuQ2hhbmdlKCksdGhpcy5fYWRkRnVsbHNjcmVlbkNoYW5nZUxpc3RlbmVyKCgoKT0+dGhpcy5fYWRqdXN0UGFyZW50Rm9yRnVsbHNjcmVlbkNoYW5nZSgpKSl9X2FkanVzdFBhcmVudEZvckZ1bGxzY3JlZW5DaGFuZ2UoKXtpZighdGhpcy5fY29udGFpbmVyRWxlbWVudClyZXR1cm47KHRoaXMuZ2V0RnVsbHNjcmVlbkVsZW1lbnQoKXx8dGhpcy5fZG9jdW1lbnQuYm9keSkuYXBwZW5kQ2hpbGQodGhpcy5fY29udGFpbmVyRWxlbWVudCl9X2FkZEZ1bGxzY3JlZW5DaGFuZ2VMaXN0ZW5lcih0KXtjb25zdCBlPXRoaXMuX2dldEV2ZW50TmFtZSgpO2UmJih0aGlzLl9mdWxsU2NyZWVuTGlzdGVuZXImJnRoaXMuX2RvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoZSx0aGlzLl9mdWxsU2NyZWVuTGlzdGVuZXIpLHRoaXMuX2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoZSx0KSx0aGlzLl9mdWxsU2NyZWVuTGlzdGVuZXI9dCl9X2dldEV2ZW50TmFtZSgpe2lmKCF0aGlzLl9mdWxsU2NyZWVuRXZlbnROYW1lKXtjb25zdCB0PXRoaXMuX2RvY3VtZW50O3QuZnVsbHNjcmVlbkVuYWJsZWQ/dGhpcy5fZnVsbFNjcmVlbkV2ZW50TmFtZT0iZnVsbHNjcmVlbmNoYW5nZSI6dC53ZWJraXRGdWxsc2NyZWVuRW5hYmxlZD90aGlzLl9mdWxsU2NyZWVuRXZlbnROYW1lPSJ3ZWJraXRmdWxsc2NyZWVuY2hhbmdlIjp0Lm1vekZ1bGxTY3JlZW5FbmFibGVkP3RoaXMuX2Z1bGxTY3JlZW5FdmVudE5hbWU9Im1vemZ1bGxzY3JlZW5jaGFuZ2UiOnQubXNGdWxsc2NyZWVuRW5hYmxlZCYmKHRoaXMuX2Z1bGxTY3JlZW5FdmVudE5hbWU9Ik1TRnVsbHNjcmVlbkNoYW5nZSIpfXJldHVybiB0aGlzLl9mdWxsU2NyZWVuRXZlbnROYW1lfWdldEZ1bGxzY3JlZW5FbGVtZW50KCl7Y29uc3QgdD10aGlzLl9kb2N1bWVudDtyZXR1cm4gdC5mdWxsc2NyZWVuRWxlbWVudHx8dC53ZWJraXRGdWxsc2NyZWVuRWxlbWVudHx8dC5tb3pGdWxsU2NyZWVuRWxlbWVudHx8dC5tc0Z1bGxzY3JlZW5FbGVtZW50fHxudWxsfX1pVi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8aVYpKFRyKHNNKSxUcihjSCkpfSxpVi7JtXByb3Y9U24oe2ZhY3Rvcnk6ZnVuY3Rpb24gdCgpe3JldHVybiBuZXcgaVYoVHIoc00pLFRyKGNIKSl9LHRva2VuOmlWLHByb3ZpZGVkSW46InJvb3QifSksaVYuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19LHt0eXBlOmNIfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihpVixbe3R5cGU6VW0sYXJnczpbe3Byb3ZpZGVkSW46InJvb3QifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3NNXX1dfSx7dHlwZTpjSH1dfSksbnVsbCk7Y2xhc3MgYVZ7fWFWLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxhVil9LGFWLsm1bW9kPWZvKHt0eXBlOmFWfSksYVYuybVpbmo9RG4oe30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoYVYsW3t0eXBlOkxfLGFyZ3M6W3t9XX1dLG51bGwsbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCByVj1uZXcgU2V0O2xldCBzVjtjbGFzcyBsVntjb25zdHJ1Y3Rvcih0KXt0aGlzLl9wbGF0Zm9ybT10LHRoaXMuX21hdGNoTWVkaWE9dGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyJiZ3aW5kb3cubWF0Y2hNZWRpYT93aW5kb3cubWF0Y2hNZWRpYS5iaW5kKHdpbmRvdyk6Y1Z9bWF0Y2hNZWRpYSh0KXtyZXR1cm4gdGhpcy5fcGxhdGZvcm0uV0VCS0lUJiYoZnVuY3Rpb24gZSh0KXtpZihyVi5oYXModCkpcmV0dXJuO3RyeXtzVnx8KHNWPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIiksc1Yuc2V0QXR0cmlidXRlKCJ0eXBlIiwidGV4dC9jc3MiKSxkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHNWKSksc1Yuc2hlZXQmJihzVi5zaGVldC5pbnNlcnRSdWxlKGBAbWVkaWEgJHt0fSB7LmZ4LXF1ZXJ5LXRlc3R7IH19YCwwKSxyVi5hZGQodCkpfWNhdGNoKHQpe2NvbnNvbGUuZXJyb3IodCl9fSkodCksdGhpcy5fbWF0Y2hNZWRpYSh0KX19ZnVuY3Rpb24gY1YodCl7cmV0dXJue21hdGNoZXM6ImFsbCI9PT10fHwiIj09PXQsbWVkaWE6dCxhZGRMaXN0ZW5lcjooKT0+e30scmVtb3ZlTGlzdGVuZXI6KCk9Pnt9fX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovbFYuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGxWKShUcihjSCkpfSxsVi7JtXByb3Y9U24oe2ZhY3Rvcnk6ZnVuY3Rpb24gdCgpe3JldHVybiBuZXcgbFYoVHIoY0gpKX0sdG9rZW46bFYscHJvdmlkZWRJbjoicm9vdCJ9KSxsVi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOmNIfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihsVixbe3R5cGU6VW0sYXJnczpbe3Byb3ZpZGVkSW46InJvb3QifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6Y0h9XX0pLG51bGwpO2NsYXNzIGRWe2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5fbWVkaWFNYXRjaGVyPXQsdGhpcy5fem9uZT1lLHRoaXMuX3F1ZXJpZXM9bmV3IE1hcCx0aGlzLl9kZXN0cm95U3ViamVjdD1uZXcgQn1uZ09uRGVzdHJveSgpe3RoaXMuX2Rlc3Ryb3lTdWJqZWN0Lm5leHQoKSx0aGlzLl9kZXN0cm95U3ViamVjdC5jb21wbGV0ZSgpfWlzTWF0Y2hlZCh0KXtyZXR1cm4gcFYoaUgodCkpLnNvbWUoKHQ9PnRoaXMuX3JlZ2lzdGVyUXVlcnkodCkubXFsLm1hdGNoZXMpKX1vYnNlcnZlKHQpe2xldCBlPUt0KHBWKGlIKHQpKS5tYXAoKHQ9PnRoaXMuX3JlZ2lzdGVyUXVlcnkodCkub2JzZXJ2YWJsZSkpKTtyZXR1cm4gZT1uZShlLnBpcGUodmUoMSkpLGUucGlwZShMZSgxKSxDZSgwKSkpLGUucGlwZShWdCgodD0+e2NvbnN0IGU9e21hdGNoZXM6ITEsYnJlYWtwb2ludHM6e319O3JldHVybiB0LmZvckVhY2goKCh7bWF0Y2hlczp0LHF1ZXJ5Om59KT0+e2UubWF0Y2hlcz1lLm1hdGNoZXN8fHQsZS5icmVha3BvaW50c1tuXT10fSkpLGV9KSkpfV9yZWdpc3RlclF1ZXJ5KHQpe2lmKHRoaXMuX3F1ZXJpZXMuaGFzKHQpKXJldHVybiB0aGlzLl9xdWVyaWVzLmdldCh0KTtjb25zdCBlPXRoaXMuX21lZGlhTWF0Y2hlci5tYXRjaE1lZGlhKHQpLG49e29ic2VydmFibGU6bmV3IFQoKHQ9Pntjb25zdCBuPWU9PnRoaXMuX3pvbmUucnVuKCgoKT0+dC5uZXh0KGUpKSk7cmV0dXJuIGUuYWRkTGlzdGVuZXIobiksKCk9PntlLnJlbW92ZUxpc3RlbmVyKG4pfX0pKS5waXBlKEJlKGUpLFZ0KCgoe21hdGNoZXM6ZX0pPT4oe3F1ZXJ5OnQsbWF0Y2hlczplfSkpKSxqZSh0aGlzLl9kZXN0cm95U3ViamVjdCkpLG1xbDplfTtyZXR1cm4gdGhpcy5fcXVlcmllcy5zZXQodCxuKSxufX1mdW5jdGlvbiBwVih0KXtyZXR1cm4gdC5tYXAoKHQ9PnQuc3BsaXQoIiwiKSkpLnJlZHVjZSgoKHQsZSk9PnQuY29uY2F0KGUpKSkubWFwKCh0PT50LnRyaW0oKSkpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9kVi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8ZFYpKFRyKGxWKSxUcihtQykpfSxkVi7JtXByb3Y9U24oe2ZhY3Rvcnk6ZnVuY3Rpb24gdCgpe3JldHVybiBuZXcgZFYoVHIobFYpLFRyKG1DKSl9LHRva2VuOmRWLHByb3ZpZGVkSW46InJvb3QifSksZFYuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpsVn0se3R5cGU6bUN9XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGRWLFt7dHlwZTpVbSxhcmdzOlt7cHJvdmlkZWRJbjoicm9vdCJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpsVn0se3R5cGU6bUN9XX0pLG51bGwpO2NvbnN0IG1WPSIobWF4LXdpZHRoOiA1OTkuOThweCkgYW5kIChvcmllbnRhdGlvbjogcG9ydHJhaXQpLCAobWF4LXdpZHRoOiA5NTkuOThweCkgYW5kIChvcmllbnRhdGlvbjogbGFuZHNjYXBlKSIsZlY9IihtYXgtd2lkdGg6IDU5OS45OHB4KSBhbmQgKG9yaWVudGF0aW9uOiBwb3J0cmFpdCkiO2Z1bmN0aW9uIHVWKHQsZSl7aWYoMSZ0KXtjb25zdCB0PXdmKCk7Q2YoMCwiZGl2IiwxKSxDZigxLCJidXR0b24iLDIpLFJmKCJjbGljayIsKGZ1bmN0aW9uIGUoKXtQaSh0KTtyZXR1cm4gemYoKS5hY3Rpb24oKX0pKSxQdSgyKSxNZigpLE1mKCl9aWYoMiZ0KXtjb25zdCB0PXpmKCk7RGMoMiksd3UodC5kYXRhLmFjdGlvbil9fWZ1bmN0aW9uIGdWKHQsZSl7fWNvbnN0IGhWPW5ldyBlcigiTWF0U25hY2tCYXJEYXRhIik7Y2xhc3MgYlZ7Y29uc3RydWN0b3IoKXt0aGlzLnBvbGl0ZW5lc3M9ImFzc2VydGl2ZSIsdGhpcy5hbm5vdW5jZW1lbnRNZXNzYWdlPSIiLHRoaXMuZHVyYXRpb249MCx0aGlzLmRhdGE9bnVsbCx0aGlzLmhvcml6b250YWxQb3NpdGlvbj0iY2VudGVyIix0aGlzLnZlcnRpY2FsUG9zaXRpb249ImJvdHRvbSJ9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jb25zdCB5Vj1NYXRoLnBvdygyLDMxKS0xO2NsYXNzIF9We2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5fb3ZlcmxheVJlZj1lLHRoaXMuX2FmdGVyRGlzbWlzc2VkPW5ldyBCLHRoaXMuX2FmdGVyT3BlbmVkPW5ldyBCLHRoaXMuX29uQWN0aW9uPW5ldyBCLHRoaXMuX2Rpc21pc3NlZEJ5QWN0aW9uPSExLHRoaXMuY29udGFpbmVySW5zdGFuY2U9dCx0aGlzLm9uQWN0aW9uKCkuc3Vic2NyaWJlKCgoKT0+dGhpcy5kaXNtaXNzKCkpKSx0Ll9vbkV4aXQuc3Vic2NyaWJlKCgoKT0+dGhpcy5fZmluaXNoRGlzbWlzcygpKSl9ZGlzbWlzcygpe3RoaXMuX2FmdGVyRGlzbWlzc2VkLmNsb3NlZHx8dGhpcy5jb250YWluZXJJbnN0YW5jZS5leGl0KCksY2xlYXJUaW1lb3V0KHRoaXMuX2R1cmF0aW9uVGltZW91dElkKX1kaXNtaXNzV2l0aEFjdGlvbigpe3RoaXMuX29uQWN0aW9uLmNsb3NlZHx8KHRoaXMuX2Rpc21pc3NlZEJ5QWN0aW9uPSEwLHRoaXMuX29uQWN0aW9uLm5leHQoKSx0aGlzLl9vbkFjdGlvbi5jb21wbGV0ZSgpKSxjbGVhclRpbWVvdXQodGhpcy5fZHVyYXRpb25UaW1lb3V0SWQpfWNsb3NlV2l0aEFjdGlvbigpe3RoaXMuZGlzbWlzc1dpdGhBY3Rpb24oKX1fZGlzbWlzc0FmdGVyKHQpe3RoaXMuX2R1cmF0aW9uVGltZW91dElkPXNldFRpbWVvdXQoKCgpPT50aGlzLmRpc21pc3MoKSksTWF0aC5taW4odCx5VikpfV9vcGVuKCl7dGhpcy5fYWZ0ZXJPcGVuZWQuY2xvc2VkfHwodGhpcy5fYWZ0ZXJPcGVuZWQubmV4dCgpLHRoaXMuX2FmdGVyT3BlbmVkLmNvbXBsZXRlKCkpfV9maW5pc2hEaXNtaXNzKCl7dGhpcy5fb3ZlcmxheVJlZi5kaXNwb3NlKCksdGhpcy5fb25BY3Rpb24uY2xvc2VkfHx0aGlzLl9vbkFjdGlvbi5jb21wbGV0ZSgpLHRoaXMuX2FmdGVyRGlzbWlzc2VkLm5leHQoe2Rpc21pc3NlZEJ5QWN0aW9uOnRoaXMuX2Rpc21pc3NlZEJ5QWN0aW9ufSksdGhpcy5fYWZ0ZXJEaXNtaXNzZWQuY29tcGxldGUoKSx0aGlzLl9kaXNtaXNzZWRCeUFjdGlvbj0hMX1hZnRlckRpc21pc3NlZCgpe3JldHVybiB0aGlzLl9hZnRlckRpc21pc3NlZH1hZnRlck9wZW5lZCgpe3JldHVybiB0aGlzLmNvbnRhaW5lckluc3RhbmNlLl9vbkVudGVyfW9uQWN0aW9uKCl7cmV0dXJuIHRoaXMuX29uQWN0aW9ufX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgQ1Z7Y29uc3RydWN0b3IodCxlKXt0aGlzLnNuYWNrQmFyUmVmPXQsdGhpcy5kYXRhPWV9YWN0aW9uKCl7dGhpcy5zbmFja0JhclJlZi5kaXNtaXNzV2l0aEFjdGlvbigpfWdldCBoYXNBY3Rpb24oKXtyZXR1cm4hIXRoaXMuZGF0YS5hY3Rpb259fUNWLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxDVikoZ2YoX1YpLGdmKGhWKSl9LENWLsm1Y21wPXNvKHt0eXBlOkNWLHNlbGVjdG9yczpbWyJzaW1wbGUtc25hY2stYmFyIl1dLGhvc3RBdHRyczpbMSwibWF0LXNpbXBsZS1zbmFja2JhciJdLGRlY2xzOjMsdmFyczoyLGNvbnN0czpbWyJjbGFzcyIsIm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uIiw0LCJuZ0lmIl0sWzEsIm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uIl0sWyJtYXQtYnV0dG9uIiwiIiwzLCJjbGljayJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoQ2YoMCwic3BhbiIpLFB1KDEpLE1mKCksSG0oMix1ViwzLDEsImRpdiIsMCkpLDImZSYmKERjKDEpLHd1KG4uZGF0YS5tZXNzYWdlKSxEYygxKSxiZigibmdJZiIsbi5oYXNBY3Rpb24pKX0sZGlyZWN0aXZlczpbUHYsTkxdLHN0eWxlczpbIi5tYXQtc2ltcGxlLXNuYWNrYmFye2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjthbGlnbi1pdGVtczpjZW50ZXI7bGluZS1oZWlnaHQ6MjBweDtvcGFjaXR5OjF9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9ue2ZsZXgtc2hyaW5rOjA7bWFyZ2luOi04cHggLThweCAtOHB4IDhweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb24gYnV0dG9ue21heC1oZWlnaHQ6MzZweDttaW4td2lkdGg6MH1bZGlyPXJ0bF0gLm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9ue21hcmdpbi1sZWZ0Oi04cHg7bWFyZ2luLXJpZ2h0OjhweH1cbiJdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLENWLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6X1Z9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltoVl19XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoQ1YsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3Rvcjoic2ltcGxlLXNuYWNrLWJhciIsdGVtcGxhdGU6JzxzcGFuPnt7ZGF0YS5tZXNzYWdlfX08L3NwYW4+XG48ZGl2IGNsYXNzPSJtYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbiIgICpuZ0lmPSJoYXNBY3Rpb24iPlxuICA8YnV0dG9uIG1hdC1idXR0b24gKGNsaWNrKT0iYWN0aW9uKCkiPnt7ZGF0YS5hY3Rpb259fTwvYnV0dG9uPlxuPC9kaXY+XG4nLGVuY2Fwc3VsYXRpb246V24uTm9uZSxjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNoLGhvc3Q6e2NsYXNzOiJtYXQtc2ltcGxlLXNuYWNrYmFyIn0sc3R5bGVzOlsiLm1hdC1zaW1wbGUtc25hY2tiYXJ7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2FsaWduLWl0ZW1zOmNlbnRlcjtsaW5lLWhlaWdodDoyMHB4O29wYWNpdHk6MX0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb257ZmxleC1zaHJpbms6MDttYXJnaW46LThweCAtOHB4IC04cHggOHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbiBidXR0b257bWF4LWhlaWdodDozNnB4O21pbi13aWR0aDowfVtkaXI9cnRsXSAubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb257bWFyZ2luLWxlZnQ6LThweDttYXJnaW4tcmlnaHQ6OHB4fVxuIl19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpfVn0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W2hWXX1dfV19KSxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IE1WPXtzbmFja0JhclN0YXRlOnhPKCJzdGF0ZSIsW2tPKCJ2b2lkLCBoaWRkZW4iLHdPKHt0cmFuc2Zvcm06InNjYWxlKDAuOCkiLG9wYWNpdHk6MH0pKSxrTygidmlzaWJsZSIsd08oe3RyYW5zZm9ybToic2NhbGUoMSkiLG9wYWNpdHk6MX0pKSxETygiKiA9PiB2aXNpYmxlIixPTygiMTUwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSkiKSksRE8oIiogPT4gdm9pZCwgKiA9PiBoaWRkZW4iLE9PKCI3NW1zIGN1YmljLWJlemllcigwLjQsIDAuMCwgMSwgMSkiLHdPKHtvcGFjaXR5OjB9KSkpXSl9OwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyB2ViBleHRlbmRzIGRCe2NvbnN0cnVjdG9yKHQsZSxuLG8saSl7c3VwZXIoKSx0aGlzLl9uZ1pvbmU9dCx0aGlzLl9lbGVtZW50UmVmPWUsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWY9bix0aGlzLl9wbGF0Zm9ybT1vLHRoaXMuc25hY2tCYXJDb25maWc9aSx0aGlzLl9hbm5vdW5jZURlbGF5PTE1MCx0aGlzLl9kZXN0cm95ZWQ9ITEsdGhpcy5fb25Bbm5vdW5jZT1uZXcgQix0aGlzLl9vbkV4aXQ9bmV3IEIsdGhpcy5fb25FbnRlcj1uZXcgQix0aGlzLl9hbmltYXRpb25TdGF0ZT0idm9pZCIsdGhpcy5hdHRhY2hEb21Qb3J0YWw9dD0+KHRoaXMuX2Fzc2VydE5vdEF0dGFjaGVkKCksdGhpcy5fYXBwbHlTbmFja0JhckNsYXNzZXMoKSx0aGlzLl9wb3J0YWxPdXRsZXQuYXR0YWNoRG9tUG9ydGFsKHQpKSx0aGlzLl9saXZlPSJhc3NlcnRpdmUiIT09aS5wb2xpdGVuZXNzfHxpLmFubm91bmNlbWVudE1lc3NhZ2U/Im9mZiI9PT1pLnBvbGl0ZW5lc3M/Im9mZiI6InBvbGl0ZSI6ImFzc2VydGl2ZSIsdGhpcy5fcGxhdGZvcm0uRklSRUZPWCYmKCJwb2xpdGUiPT09dGhpcy5fbGl2ZSYmKHRoaXMuX3JvbGU9InN0YXR1cyIpLCJhc3NlcnRpdmUiPT09dGhpcy5fbGl2ZSYmKHRoaXMuX3JvbGU9ImFsZXJ0IikpfWF0dGFjaENvbXBvbmVudFBvcnRhbCh0KXtyZXR1cm4gdGhpcy5fYXNzZXJ0Tm90QXR0YWNoZWQoKSx0aGlzLl9hcHBseVNuYWNrQmFyQ2xhc3NlcygpLHRoaXMuX3BvcnRhbE91dGxldC5hdHRhY2hDb21wb25lbnRQb3J0YWwodCl9YXR0YWNoVGVtcGxhdGVQb3J0YWwodCl7cmV0dXJuIHRoaXMuX2Fzc2VydE5vdEF0dGFjaGVkKCksdGhpcy5fYXBwbHlTbmFja0JhckNsYXNzZXMoKSx0aGlzLl9wb3J0YWxPdXRsZXQuYXR0YWNoVGVtcGxhdGVQb3J0YWwodCl9b25BbmltYXRpb25FbmQodCl7Y29uc3R7ZnJvbVN0YXRlOmUsdG9TdGF0ZTpufT10O2lmKCgidm9pZCI9PT1uJiYidm9pZCIhPT1lfHwiaGlkZGVuIj09PW4pJiZ0aGlzLl9jb21wbGV0ZUV4aXQoKSwidmlzaWJsZSI9PT1uKXtjb25zdCB0PXRoaXMuX29uRW50ZXI7dGhpcy5fbmdab25lLnJ1bigoKCk9Pnt0Lm5leHQoKSx0LmNvbXBsZXRlKCl9KSl9fWVudGVyKCl7dGhpcy5fZGVzdHJveWVkfHwodGhpcy5fYW5pbWF0aW9uU3RhdGU9InZpc2libGUiLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKSx0aGlzLl9zY3JlZW5SZWFkZXJBbm5vdW5jZSgpKX1leGl0KCl7cmV0dXJuIHRoaXMuX2FuaW1hdGlvblN0YXRlPSJoaWRkZW4iLHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoIm1hdC1leGl0IiwiIiksY2xlYXJUaW1lb3V0KHRoaXMuX2Fubm91bmNlVGltZW91dElkKSx0aGlzLl9vbkV4aXR9bmdPbkRlc3Ryb3koKXt0aGlzLl9kZXN0cm95ZWQ9ITAsdGhpcy5fY29tcGxldGVFeGl0KCl9X2NvbXBsZXRlRXhpdCgpe3RoaXMuX25nWm9uZS5vbk1pY3JvdGFza0VtcHR5LnBpcGUodmUoMSkpLnN1YnNjcmliZSgoKCk9Pnt0aGlzLl9vbkV4aXQubmV4dCgpLHRoaXMuX29uRXhpdC5jb21wbGV0ZSgpfSkpfV9hcHBseVNuYWNrQmFyQ2xhc3Nlcygpe2NvbnN0IHQ9dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LGU9dGhpcy5zbmFja0JhckNvbmZpZy5wYW5lbENsYXNzO2UmJihBcnJheS5pc0FycmF5KGUpP2UuZm9yRWFjaCgoZT0+dC5jbGFzc0xpc3QuYWRkKGUpKSk6dC5jbGFzc0xpc3QuYWRkKGUpKSwiY2VudGVyIj09PXRoaXMuc25hY2tCYXJDb25maWcuaG9yaXpvbnRhbFBvc2l0aW9uJiZ0LmNsYXNzTGlzdC5hZGQoIm1hdC1zbmFjay1iYXItY2VudGVyIiksInRvcCI9PT10aGlzLnNuYWNrQmFyQ29uZmlnLnZlcnRpY2FsUG9zaXRpb24mJnQuY2xhc3NMaXN0LmFkZCgibWF0LXNuYWNrLWJhci10b3AiKX1fYXNzZXJ0Tm90QXR0YWNoZWQoKXtpZih0aGlzLl9wb3J0YWxPdXRsZXQuaGFzQXR0YWNoZWQoKSYmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpKXRocm93IEVycm9yKCJBdHRlbXB0aW5nIHRvIGF0dGFjaCBzbmFjayBiYXIgY29udGVudCBhZnRlciBjb250ZW50IGlzIGFscmVhZHkgYXR0YWNoZWQiKX1fc2NyZWVuUmVhZGVyQW5ub3VuY2UoKXt0aGlzLl9hbm5vdW5jZVRpbWVvdXRJZHx8dGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+e3RoaXMuX2Fubm91bmNlVGltZW91dElkPXNldFRpbWVvdXQoKCgpPT57Y29uc3QgdD10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcigiW2FyaWEtaGlkZGVuXSIpLGU9dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoIlthcmlhLWxpdmVdIik7aWYodCYmZSl7bGV0IG49bnVsbDt0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXImJmRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCYmdC5jb250YWlucyhkb2N1bWVudC5hY3RpdmVFbGVtZW50KSYmKG49ZG9jdW1lbnQuYWN0aXZlRWxlbWVudCksdC5yZW1vdmVBdHRyaWJ1dGUoImFyaWEtaGlkZGVuIiksZS5hcHBlbmRDaGlsZCh0KSxudWxsPT1ufHxuLmZvY3VzKCksdGhpcy5fb25Bbm5vdW5jZS5uZXh0KCksdGhpcy5fb25Bbm5vdW5jZS5jb21wbGV0ZSgpfX0pLHRoaXMuX2Fubm91bmNlRGVsYXkpfSkpfX12Vi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8dlYpKGdmKG1DKSxnZihLaCksZ2YoT2IpLGdmKGNIKSxnZihiVikpfSx2Vi7JtWNtcD1zbyh7dHlwZTp2VixzZWxlY3RvcnM6W1sic25hY2stYmFyLWNvbnRhaW5lciJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmVnkodUIsNyksMiZlKXtsZXQgdDtCeSh0PVV5KCkpJiYobi5fcG9ydGFsT3V0bGV0PXQuZmlyc3QpfX0saG9zdEF0dHJzOlsxLCJtYXQtc25hY2stYmFyLWNvbnRhaW5lciJdLGhvc3RWYXJzOjEsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJkVmKCJAc3RhdGUuZG9uZSIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25BbmltYXRpb25FbmQoZSl9KSksMiZlJiZkZygiQHN0YXRlIixuLl9hbmltYXRpb25TdGF0ZSl9LGZlYXR1cmVzOltRcF0sZGVjbHM6Myx2YXJzOjIsY29uc3RzOltbImFyaWEtaGlkZGVuIiwidHJ1ZSJdLFsiY2RrUG9ydGFsT3V0bGV0IiwiIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihDZigwLCJkaXYiLDApLEhtKDEsZ1YsMCwwLCJuZy10ZW1wbGF0ZSIsMSksTWYoKSx2ZigyLCJkaXYiKSksMiZlJiYoRGMoMikseW0oImFyaWEtbGl2ZSIsbi5fbGl2ZSkoInJvbGUiLG4uX3JvbGUpKX0sZGlyZWN0aXZlczpbdUJdLHN0eWxlczpbIi5tYXQtc25hY2stYmFyLWNvbnRhaW5lcntib3JkZXItcmFkaXVzOjRweDtib3gtc2l6aW5nOmJvcmRlci1ib3g7ZGlzcGxheTpibG9jazttYXJnaW46MjRweDttYXgtd2lkdGg6MzN2dzttaW4td2lkdGg6MzQ0cHg7cGFkZGluZzoxNHB4IDE2cHg7bWluLWhlaWdodDo0OHB4O3RyYW5zZm9ybS1vcmlnaW46Y2VudGVyfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1zbmFjay1iYXItY29udGFpbmVye2JvcmRlcjpzb2xpZCAxcHh9Lm1hdC1zbmFjay1iYXItaGFuZHNldHt3aWR0aDoxMDAlfS5tYXQtc25hY2stYmFyLWhhbmRzZXQgLm1hdC1zbmFjay1iYXItY29udGFpbmVye21hcmdpbjo4cHg7bWF4LXdpZHRoOjEwMCU7bWluLXdpZHRoOjA7d2lkdGg6MTAwJX1cbiJdLGVuY2Fwc3VsYXRpb246MixkYXRhOnthbmltYXRpb246W01WLnNuYWNrQmFyU3RhdGVdfX0pLHZWLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6bUN9LHt0eXBlOktofSx7dHlwZTpPYn0se3R5cGU6Y0h9LHt0eXBlOmJWfV0sdlYucHJvcERlY29yYXRvcnM9e19wb3J0YWxPdXRsZXQ6W3t0eXBlOmFyLGFyZ3M6W3VCLHtzdGF0aWM6ITB9XX1dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHZWLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6InNuYWNrLWJhci1jb250YWluZXIiLHRlbXBsYXRlOidceDNjIS0tIEluaXRpYWxseSBob2xkcyB0aGUgc25hY2sgYmFyIGNvbnRlbnQsIHdpbGwgYmUgZW1wdHkgYWZ0ZXIgYW5ub3VuY2luZyB0byBzY3JlZW4gcmVhZGVycy4gLS1ceDNlXG48ZGl2IGFyaWEtaGlkZGVuPSJ0cnVlIj5cbiAgPG5nLXRlbXBsYXRlIGNka1BvcnRhbE91dGxldD48L25nLXRlbXBsYXRlPlxuPC9kaXY+XG5cblx4M2MhLS0gV2lsbCByZWNlaXZlIHRoZSBzbmFjayBiYXIgY29udGVudCBmcm9tIHRoZSBub24tbGl2ZSBkaXYsIG1vdmUgd2lsbCBoYXBwZW4gYSBzaG9ydCBkZWxheSBhZnRlciBvcGVuaW5nIC0tXHgzZVxuPGRpdiBbYXR0ci5hcmlhLWxpdmVdPSJfbGl2ZSIgW2F0dHIucm9sZV09Il9yb2xlIj48L2Rpdj5cbicsY2hhbmdlRGV0ZWN0aW9uOmpuLkRlZmF1bHQsZW5jYXBzdWxhdGlvbjpXbi5Ob25lLGFuaW1hdGlvbnM6W01WLnNuYWNrQmFyU3RhdGVdLGhvc3Q6e2NsYXNzOiJtYXQtc25hY2stYmFyLWNvbnRhaW5lciIsIltAc3RhdGVdIjoiX2FuaW1hdGlvblN0YXRlIiwiKEBzdGF0ZS5kb25lKSI6Im9uQW5pbWF0aW9uRW5kKCRldmVudCkifSxzdHlsZXM6WyIubWF0LXNuYWNrLWJhci1jb250YWluZXJ7Ym9yZGVyLXJhZGl1czo0cHg7Ym94LXNpemluZzpib3JkZXItYm94O2Rpc3BsYXk6YmxvY2s7bWFyZ2luOjI0cHg7bWF4LXdpZHRoOjMzdnc7bWluLXdpZHRoOjM0NHB4O3BhZGRpbmc6MTRweCAxNnB4O21pbi1oZWlnaHQ6NDhweDt0cmFuc2Zvcm0tb3JpZ2luOmNlbnRlcn0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtc25hY2stYmFyLWNvbnRhaW5lcntib3JkZXI6c29saWQgMXB4fS5tYXQtc25hY2stYmFyLWhhbmRzZXR7d2lkdGg6MTAwJX0ubWF0LXNuYWNrLWJhci1oYW5kc2V0IC5tYXQtc25hY2stYmFyLWNvbnRhaW5lcnttYXJnaW46OHB4O21heC13aWR0aDoxMDAlO21pbi13aWR0aDowO3dpZHRoOjEwMCV9XG4iXX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOm1DfSx7dHlwZTpLaH0se3R5cGU6T2J9LHt0eXBlOmNIfSx7dHlwZTpiVn1dfSkse19wb3J0YWxPdXRsZXQ6W3t0eXBlOmFyLGFyZ3M6W3VCLHtzdGF0aWM6ITB9XX1dfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyB4Vnt9eFYuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHhWKX0seFYuybVtb2Q9Zm8oe3R5cGU6eFZ9KSx4Vi7JtWluaj1Ebih7aW1wb3J0czpbW29WLGhCLHJ4LElMLE5GXSxORl19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHhWLFt7dHlwZTpMXyxhcmdzOlt7aW1wb3J0czpbb1YsaEIscngsSUwsTkZdLGV4cG9ydHM6W3ZWLE5GXSxkZWNsYXJhdGlvbnM6W3ZWLENWXSxlbnRyeUNvbXBvbmVudHM6W3ZWLENWXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKHhWLHtkZWNsYXJhdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm5bdlYsQ1ZdfSxpbXBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW29WLGhCLHJ4LElMLE5GXX0sZXhwb3J0czpmdW5jdGlvbigpe3JldHVyblt2VixORl19fSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCBPVj1uZXcgZXIoIm1hdC1zbmFjay1iYXItZGVmYXVsdC1vcHRpb25zIix7cHJvdmlkZWRJbjoicm9vdCIsZmFjdG9yeTpmdW5jdGlvbiBQVigpe3JldHVybiBuZXcgYlZ9fSk7Y2xhc3Mgd1Z7Y29uc3RydWN0b3IodCxlLG4sbyxpLGEpe3RoaXMuX292ZXJsYXk9dCx0aGlzLl9saXZlPWUsdGhpcy5faW5qZWN0b3I9bix0aGlzLl9icmVha3BvaW50T2JzZXJ2ZXI9byx0aGlzLl9wYXJlbnRTbmFja0Jhcj1pLHRoaXMuX2RlZmF1bHRDb25maWc9YSx0aGlzLl9zbmFja0JhclJlZkF0VGhpc0xldmVsPW51bGwsdGhpcy5zaW1wbGVTbmFja0JhckNvbXBvbmVudD1DVix0aGlzLnNuYWNrQmFyQ29udGFpbmVyQ29tcG9uZW50PXZWLHRoaXMuaGFuZHNldENzc0NsYXNzPSJtYXQtc25hY2stYmFyLWhhbmRzZXQifWdldCBfb3BlbmVkU25hY2tCYXJSZWYoKXtjb25zdCB0PXRoaXMuX3BhcmVudFNuYWNrQmFyO3JldHVybiB0P3QuX29wZW5lZFNuYWNrQmFyUmVmOnRoaXMuX3NuYWNrQmFyUmVmQXRUaGlzTGV2ZWx9c2V0IF9vcGVuZWRTbmFja0JhclJlZih0KXt0aGlzLl9wYXJlbnRTbmFja0Jhcj90aGlzLl9wYXJlbnRTbmFja0Jhci5fb3BlbmVkU25hY2tCYXJSZWY9dDp0aGlzLl9zbmFja0JhclJlZkF0VGhpc0xldmVsPXR9b3BlbkZyb21Db21wb25lbnQodCxlKXtyZXR1cm4gdGhpcy5fYXR0YWNoKHQsZSl9b3BlbkZyb21UZW1wbGF0ZSh0LGUpe3JldHVybiB0aGlzLl9hdHRhY2godCxlKX1vcGVuKHQsZT0iIixuKXtjb25zdCBvPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0aGlzLl9kZWZhdWx0Q29uZmlnKSxuKTtyZXR1cm4gby5kYXRhPXttZXNzYWdlOnQsYWN0aW9uOmV9LG8uYW5ub3VuY2VtZW50TWVzc2FnZT09PXQmJihvLmFubm91bmNlbWVudE1lc3NhZ2U9dm9pZCAwKSx0aGlzLm9wZW5Gcm9tQ29tcG9uZW50KHRoaXMuc2ltcGxlU25hY2tCYXJDb21wb25lbnQsbyl9ZGlzbWlzcygpe3RoaXMuX29wZW5lZFNuYWNrQmFyUmVmJiZ0aGlzLl9vcGVuZWRTbmFja0JhclJlZi5kaXNtaXNzKCl9bmdPbkRlc3Ryb3koKXt0aGlzLl9zbmFja0JhclJlZkF0VGhpc0xldmVsJiZ0aGlzLl9zbmFja0JhclJlZkF0VGhpc0xldmVsLmRpc21pc3MoKX1fYXR0YWNoU25hY2tCYXJDb250YWluZXIodCxlKXtjb25zdCBuPU5wLmNyZWF0ZSh7cGFyZW50OmUmJmUudmlld0NvbnRhaW5lclJlZiYmZS52aWV3Q29udGFpbmVyUmVmLmluamVjdG9yfHx0aGlzLl9pbmplY3Rvcixwcm92aWRlcnM6W3twcm92aWRlOmJWLHVzZVZhbHVlOmV9XX0pLG89bmV3IHNCKHRoaXMuc25hY2tCYXJDb250YWluZXJDb21wb25lbnQsZS52aWV3Q29udGFpbmVyUmVmLG4pLGk9dC5hdHRhY2gobyk7cmV0dXJuIGkuaW5zdGFuY2Uuc25hY2tCYXJDb25maWc9ZSxpLmluc3RhbmNlfV9hdHRhY2godCxlKXtjb25zdCBuPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG5ldyBiViksdGhpcy5fZGVmYXVsdENvbmZpZyksZSksbz10aGlzLl9jcmVhdGVPdmVybGF5KG4pLGk9dGhpcy5fYXR0YWNoU25hY2tCYXJDb250YWluZXIobyxuKSxhPW5ldyBfVihpLG8pO2lmKHQgaW5zdGFuY2VvZiBFYil7Y29uc3QgZT1uZXcgbEIodCxudWxsLHskaW1wbGljaXQ6bi5kYXRhLHNuYWNrQmFyUmVmOmF9KTthLmluc3RhbmNlPWkuYXR0YWNoVGVtcGxhdGVQb3J0YWwoZSl9ZWxzZXtjb25zdCBlPXRoaXMuX2NyZWF0ZUluamVjdG9yKG4sYSksbz1uZXcgc0IodCx2b2lkIDAsZSkscj1pLmF0dGFjaENvbXBvbmVudFBvcnRhbChvKTthLmluc3RhbmNlPXIuaW5zdGFuY2V9cmV0dXJuIHRoaXMuX2JyZWFrcG9pbnRPYnNlcnZlci5vYnNlcnZlKGZWKS5waXBlKGplKG8uZGV0YWNobWVudHMoKSkpLnN1YnNjcmliZSgodD0+e2NvbnN0IGU9by5vdmVybGF5RWxlbWVudC5jbGFzc0xpc3Q7dC5tYXRjaGVzP2UuYWRkKHRoaXMuaGFuZHNldENzc0NsYXNzKTplLnJlbW92ZSh0aGlzLmhhbmRzZXRDc3NDbGFzcyl9KSksbi5hbm5vdW5jZW1lbnRNZXNzYWdlJiZpLl9vbkFubm91bmNlLnN1YnNjcmliZSgoKCk9Pnt0aGlzLl9saXZlLmFubm91bmNlKG4uYW5ub3VuY2VtZW50TWVzc2FnZSxuLnBvbGl0ZW5lc3MpfSkpLHRoaXMuX2FuaW1hdGVTbmFja0JhcihhLG4pLHRoaXMuX29wZW5lZFNuYWNrQmFyUmVmPWEsdGhpcy5fb3BlbmVkU25hY2tCYXJSZWZ9X2FuaW1hdGVTbmFja0Jhcih0LGUpe3QuYWZ0ZXJEaXNtaXNzZWQoKS5zdWJzY3JpYmUoKCgpPT57dGhpcy5fb3BlbmVkU25hY2tCYXJSZWY9PXQmJih0aGlzLl9vcGVuZWRTbmFja0JhclJlZj1udWxsKSxlLmFubm91bmNlbWVudE1lc3NhZ2UmJnRoaXMuX2xpdmUuY2xlYXIoKX0pKSx0aGlzLl9vcGVuZWRTbmFja0JhclJlZj8odGhpcy5fb3BlbmVkU25hY2tCYXJSZWYuYWZ0ZXJEaXNtaXNzZWQoKS5zdWJzY3JpYmUoKCgpPT57dC5jb250YWluZXJJbnN0YW5jZS5lbnRlcigpfSkpLHRoaXMuX29wZW5lZFNuYWNrQmFyUmVmLmRpc21pc3MoKSk6dC5jb250YWluZXJJbnN0YW5jZS5lbnRlcigpLGUuZHVyYXRpb24mJmUuZHVyYXRpb24+MCYmdC5hZnRlck9wZW5lZCgpLnN1YnNjcmliZSgoKCk9PnQuX2Rpc21pc3NBZnRlcihlLmR1cmF0aW9uKSkpfV9jcmVhdGVPdmVybGF5KHQpe2NvbnN0IGU9bmV3IHdCO2UuZGlyZWN0aW9uPXQuZGlyZWN0aW9uO2xldCBuPXRoaXMuX292ZXJsYXkucG9zaXRpb24oKS5nbG9iYWwoKTtjb25zdCBvPSJydGwiPT09dC5kaXJlY3Rpb24saT0ibGVmdCI9PT10Lmhvcml6b250YWxQb3NpdGlvbnx8InN0YXJ0Ij09PXQuaG9yaXpvbnRhbFBvc2l0aW9uJiYhb3x8ImVuZCI9PT10Lmhvcml6b250YWxQb3NpdGlvbiYmbyxhPSFpJiYiY2VudGVyIiE9PXQuaG9yaXpvbnRhbFBvc2l0aW9uO3JldHVybiBpP24ubGVmdCgiMCIpOmE/bi5yaWdodCgiMCIpOm4uY2VudGVySG9yaXpvbnRhbGx5KCksInRvcCI9PT10LnZlcnRpY2FsUG9zaXRpb24/bi50b3AoIjAiKTpuLmJvdHRvbSgiMCIpLGUucG9zaXRpb25TdHJhdGVneT1uLHRoaXMuX292ZXJsYXkuY3JlYXRlKGUpfV9jcmVhdGVJbmplY3Rvcih0LGUpe3JldHVybiBOcC5jcmVhdGUoe3BhcmVudDp0JiZ0LnZpZXdDb250YWluZXJSZWYmJnQudmlld0NvbnRhaW5lclJlZi5pbmplY3Rvcnx8dGhpcy5faW5qZWN0b3IscHJvdmlkZXJzOlt7cHJvdmlkZTpfVix1c2VWYWx1ZTplfSx7cHJvdmlkZTpoVix1c2VWYWx1ZTp0LmRhdGF9XX0pfX13Vi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8d1YpKFRyKEtCKSxUcihjRiksVHIoTnApLFRyKGRWKSxUcih3ViwxMiksVHIoT1YpKX0sd1YuybVwcm92PVNuKHtmYWN0b3J5OmZ1bmN0aW9uIHQoKXtyZXR1cm4gbmV3IHdWKFRyKEtCKSxUcihjRiksVHIoeXApLFRyKGRWKSxUcih3ViwxMiksVHIoT1YpKX0sdG9rZW46d1YscHJvdmlkZWRJbjp4Vn0pLHdWLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6S0J9LHt0eXBlOmNGfSx7dHlwZTpOcH0se3R5cGU6ZFZ9LHt0eXBlOndWLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpqcn1dfSx7dHlwZTpiVixkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltPVl19XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIod1YsW3t0eXBlOlVtLGFyZ3M6W3twcm92aWRlZEluOnhWfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6S0J9LHt0eXBlOmNGfSx7dHlwZTpOcH0se3R5cGU6ZFZ9LHt0eXBlOndWLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpqcn1dfSx7dHlwZTpiVixkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltPVl19XX1dfSksbnVsbCk7Y29uc3Qga1Y9L1tcXF4kLiorPygpW1xde318XS9nO2NvbnN0IFNWPSJcXHUwMDAwLVxcdTAwMjBcXHUwMDdmLVxcdTAwOWYiLERWPW5ldyBSZWdFeHAoIig/OlthLXpBLVpdW2EtekEtWjAtOSsuLV17Mix9OlxcL1xcL3xkYXRhOnx3d3dcXC4pW15cXHMiK1NWKyciXXsyLH1bXlxccycrU1YrIlwiJyl9XFxdLDo7LiE/XSIsImd1Iik7ZnVuY3Rpb24gUlYodCl7cmV0dXJuKGZ1bmN0aW9uIGUodCxuKXtuLmZsYWdzLmluY2x1ZGVzKCJnIil8fChuPW5ldyBSZWdFeHAobixuLmZsYWdzKyJnIikpO2NvbnN0IG89W107bGV0IGk9MDtmb3IoY29uc3QgZSBvZiB0Lm1hdGNoQWxsKG4pKXtjb25zdCBuPWUuaW5kZXgsYT1lWzBdO24+aSYmby5wdXNoKHtpbmRleDppLHRleHQ6dC5zdWJzdHJpbmcoaSxuKSxtYXRjaGVzUmVnZXg6ITF9KSxvLnB1c2goe2luZGV4Om4sdGV4dDphLG1hdGNoZXNSZWdleDohMH0pLGk9bithLmxlbmd0aH1yZXR1cm4gdC5sZW5ndGg+aSYmby5wdXNoKHtpbmRleDppLHRleHQ6dC5zdWJzdHJpbmcoaSx0Lmxlbmd0aCksbWF0Y2hlc1JlZ2V4OiExfSksb30pKHQsRFYpLm1hcCgoKHttYXRjaGVzUmVnZXg6dCx0ZXh0OmV9KT0+KHtpc1VSTDp0LHRleHQ6ZX0pKSl9ZnVuY3Rpb24gRVYodCxlKXtpZigxJnQmJih4ZigwKSxQdSgxKSxPZigpKSwyJnQpe2NvbnN0IHQ9emYoKS4kaW1wbGljaXQ7RGMoMSksa3UoIiAiLHQudGV4dCwiICIpfX1mdW5jdGlvbiBBVih0LGUpe2lmKDEmdCYmKENmKDAsImEiLDcpLFB1KDEpLE1mKCkpLDImdCl7Y29uc3QgdD16ZigpLiRpbXBsaWNpdDtMZigiaHJlZiIsdC50ZXh0LFhzKSxEYygxKSx3dSh0LnRleHQpfX1mdW5jdGlvbiBUVih0LGUpe2lmKDEmdCYmKHhmKDApLEhtKDEsRVYsMiwxLCJuZy1jb250YWluZXIiLDUpLEhtKDIsQVYsMiwyLCJuZy10ZW1wbGF0ZSIsbnVsbCw2LHF5KSxPZigpKSwyJnQpe2NvbnN0IHQ9ZS4kaW1wbGljaXQsbj1GbSgzKTtEYygxKSxiZigibmdJZiIsIXQuaXNVUkwpKCJuZ0lmRWxzZSIsbil9fWZ1bmN0aW9uIE5WKHQsZSl7aWYoMSZ0KXtjb25zdCB0PXdmKCk7Q2YoMCwiYnV0dG9uIiw4KSxSZigiY2xpY2siLChmdW5jdGlvbiBlKCl7UGkodCk7cmV0dXJuIHpmKCkub25BY3Rpb25CdXR0b25DbGlja2VkKCl9KSksUHUoMSksTWYoKX1pZigyJnQpe2NvbnN0IHQ9emYoKTtEYygxKSxrdSgiICIsdC5hbGVydC5mb2xsb3d1cEFjdGlvbi5sb2NhbGl6ZWRMYWJlbCwiICIpfX1jbGFzcyB6Vntjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5zbmFja0JhclJlZj10LHRoaXMudW5rbm93bkRhdGE9ZSx0aGlzLnN0b3JlPW4sdGhpcy5zcGxpdEJ5VVJMPVJWLHRoaXMuYWxlcnQ9ZX1vbkFjdGlvbkJ1dHRvbkNsaWNrZWQoKXtyZXR1cm4gWFQodGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbiooKXt0aGlzLnNuYWNrQmFyUmVmLmRpc21pc3MoKTtjb25zdCB0PXlpZWxkIHRoaXMuYWxlcnQuZm9sbG93dXBBY3Rpb24uZ2V0Rm9sbG93dXBBY3Rpb24odGhpcy5zdG9yZSk7dGhpcy5zdG9yZS5kaXNwYXRjaCh0KX0pKX1vbkNsb3NlQnV0dG9uQ2xpY2tlZCgpe3RoaXMuc25hY2tCYXJSZWYuZGlzbWlzcygpfX16Vi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8elYpKGdmKF9WKSxnZihoViksZ2YoaVMpKX0selYuybVjbXA9c28oe3R5cGU6elYsc2VsZWN0b3JzOltbImFsZXJ0LWRpc3BsYXktc25hY2tiYXIiXV0sZGVjbHM6Nix2YXJzOjIsY29uc3RzOmZ1bmN0aW9uKCl7bGV0IHQ7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBuZ0kxOG5DbG9zdXJlTW9kZSYmbmdJMThuQ2xvc3VyZU1vZGUpe3Q9Z29vZy5nZXRNc2coIkRpc21pc3MiKX1lbHNlIHQ9JGxvY2FsaXplYDpBIGJ1dHRvbiB0byBjbG9zZSB0aGUgc25hY2tiYXIgbWVzc2FnZeKQn2VhNGQ5ZmU2MTQyMGEzZmNlODFjZjU0YzRjNjE1ZTNjMTljNjQ2YTbikJ8xNTM2MDg3NTE5NzQzNzA3MzYyOkRpc21pc3NgO3JldHVybltbMSwibWVzc2FnZSJdLFs0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbMSwiY29udHJvbHMiXSxbIm1hdC1idXR0b24iLCIiLCJjbGFzcyIsImZvbGxvd3VwLWJ1dHRvbiIsMywiY2xpY2siLDQsIm5nSWYiXSxbIm1hdC1idXR0b24iLCIiLCJhcmlhLWxhYmVsIix0LDEsImRpc21pc3MtYnV0dG9uIiwzLCJjbGljayJdLFs0LCJuZ0lmIiwibmdJZkVsc2UiXSxbImxpbmtQaWVjZSIsIiJdLFsicmVsIiwibm9yZWZlcnJlciBub29wZW5lciIsInRhcmdldCIsIl9ibGFuayIsMywiaHJlZiJdLFsibWF0LWJ1dHRvbiIsIiIsMSwiZm9sbG93dXAtYnV0dG9uIiwzLCJjbGljayJdXX0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKENmKDAsImRpdiIsMCksSG0oMSxUViw0LDIsIm5nLWNvbnRhaW5lciIsMSksTWYoKSxDZigyLCJkaXYiLDIpLEhtKDMsTlYsMiwxLCJidXR0b24iLDMpLENmKDQsImJ1dHRvbiIsNCksUmYoImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uQ2xvc2VCdXR0b25DbGlja2VkKCl9KSksUHUoNSwiIERpc21pc3MgIiksTWYoKSxNZigpKSwyJmUmJihEYygxKSxiZigibmdGb3JPZiIsbi5zcGxpdEJ5VVJMKG4uYWxlcnQubG9jYWxpemVkTWVzc2FnZSkpLERjKDIpLGJmKCJuZ0lmIixuLmFsZXJ0LmZvbGxvd3VwQWN0aW9uKSl9LGRpcmVjdGl2ZXM6W3h2LFB2LE5MXSxzdHlsZXM6WyJbX25naG9zdC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcH0ubWVzc2FnZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7YWxpZ24tc2VsZjpjZW50ZXI7bWFyZ2luOjVweCAwO3dvcmQtYnJlYWs6YnJlYWstd29yZH0ubWVzc2FnZVtfbmdjb250ZW50LSVDT01QJV0gICBhW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjppbmhlcml0fS5jb250cm9sc1tfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO21hcmdpbi1sZWZ0OmF1dG99YnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2V9Il0sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHpWLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6ImFsZXJ0LWRpc3BsYXktc25hY2tiYXIiLHRlbXBsYXRlVXJsOiIuL2FsZXJ0X2Rpc3BsYXlfc25hY2tiYXJfY29udGFpbmVyLm5nLmh0bWwiLHN0eWxlVXJsczpbIi4vYWxlcnRfZGlzcGxheV9zbmFja2Jhcl9jb250YWluZXIuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOl9WfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbaFZdfV19LHt0eXBlOmlTfV19KSxudWxsKTtjbGFzcyBJVntjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuc3RvcmU9dCx0aGlzLnNuYWNrQmFyPWUsdGhpcy5uZ1Vuc3Vic2NyaWJlPW5ldyBCfW5nT25Jbml0KCl7dGhpcy5zdG9yZS5zZWxlY3QoV1QpLnBpcGUoamUodGhpcy5uZ1Vuc3Vic2NyaWJlKSx1ZSgodD0+Qm9vbGVhbih0KSkpKS5zdWJzY3JpYmUoKHQ9Pnt0aGlzLnNob3dBbGVydCh0KX0pKX1uZ09uRGVzdHJveSgpe3RoaXMubmdVbnN1YnNjcmliZS5uZXh0KCksdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCl9c2hvd0FsZXJ0KHQpe3RoaXMuc25hY2tCYXIub3BlbkZyb21Db21wb25lbnQoelYse2R1cmF0aW9uOjVlMyxob3Jpem9udGFsUG9zaXRpb246InN0YXJ0Iix2ZXJ0aWNhbFBvc2l0aW9uOiJib3R0b20iLGRhdGE6dH0pfX1JVi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8SVYpKGdmKGlTKSxnZih3VikpfSxJVi7JtWNtcD1zbyh7dHlwZTpJVixzZWxlY3RvcnM6W1siYWxlcnQtc25hY2tiYXIiXV0sZGVjbHM6MCx2YXJzOjAsdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pe30sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihJVixbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJhbGVydC1zbmFja2JhciIsdGVtcGxhdGU6IiIsY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmlTfSx7dHlwZTp3Vn1dfSksbnVsbCk7Y2xhc3MgSFZ7fUhWLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxIVil9LEhWLsm1bW9kPWZvKHt0eXBlOkhWfSksSFYuybVpbmo9RG4oe2ltcG9ydHM6W1tyeCxJTCx4Vl1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihIVixbe3R5cGU6TF8sYXJnczpbe2RlY2xhcmF0aW9uczpbSVYselZdLGV4cG9ydHM6W0lWXSxpbXBvcnRzOltyeCxJTCx4Vl0sZW50cnlDb21wb25lbnRzOlt6Vl19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhIVix7ZGVjbGFyYXRpb25zOltJVix6Vl0saW1wb3J0czpbcngsSUwseFZdLGV4cG9ydHM6W0lWXX0pO2NsYXNzIEZWe31GVi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8RlYpfSxGVi7JtW1vZD1mbyh7dHlwZTpGVn0pLEZWLsm1aW5qPURuKHtpbXBvcnRzOltbbVQsSFYsVFMuZm9yRmVhdHVyZShVVCxaSSksaEQuZm9yRmVhdHVyZShbWUldKV1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihGVixbe3R5cGU6TF8sYXJnczpbe2ltcG9ydHM6W21ULEhWLFRTLmZvckZlYXR1cmUoVVQsWkkpLGhELmZvckZlYXR1cmUoW1lJXSldfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8oRlYse2ltcG9ydHM6W21ULEhWLEFTLGdEXX0pO2NvbnN0IExWPVsiKiIsW1sibWF0LXRvb2xiYXItcm93Il1dXSxCVj1JRihjbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLl9lbGVtZW50UmVmPXR9fSk7Y2xhc3MgVlZ7fVZWLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxWVil9LFZWLsm1ZGlyPWhvKHt0eXBlOlZWLHNlbGVjdG9yczpbWyJtYXQtdG9vbGJhci1yb3ciXV0saG9zdEF0dHJzOlsxLCJtYXQtdG9vbGJhci1yb3ciXSxleHBvcnRBczpbIm1hdFRvb2xiYXJSb3ciXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoVlYsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoibWF0LXRvb2xiYXItcm93IixleHBvcnRBczoibWF0VG9vbGJhclJvdyIsaG9zdDp7Y2xhc3M6Im1hdC10b29sYmFyLXJvdyJ9fV19XSxudWxsLG51bGwpO2NsYXNzIGpWIGV4dGVuZHMgQlZ7Y29uc3RydWN0b3IodCxlLG4pe3N1cGVyKHQpLHRoaXMuX3BsYXRmb3JtPWUsdGhpcy5fZG9jdW1lbnQ9bn1uZ0FmdGVyVmlld0luaXQoKXt0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXImJih0aGlzLl9jaGVja1Rvb2xiYXJNaXhlZE1vZGVzKCksdGhpcy5fdG9vbGJhclJvd3MuY2hhbmdlcy5zdWJzY3JpYmUoKCgpPT50aGlzLl9jaGVja1Rvb2xiYXJNaXhlZE1vZGVzKCkpKSl9X2NoZWNrVG9vbGJhck1peGVkTW9kZXMoKXtpZih0aGlzLl90b29sYmFyUm93cy5sZW5ndGgmJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSl7QXJyYXkuZnJvbSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2hpbGROb2RlcykuZmlsdGVyKCh0PT4hKHQuY2xhc3NMaXN0JiZ0LmNsYXNzTGlzdC5jb250YWlucygibWF0LXRvb2xiYXItcm93IikpKSkuZmlsdGVyKCh0PT50Lm5vZGVUeXBlIT09KHRoaXMuX2RvY3VtZW50P3RoaXMuX2RvY3VtZW50LkNPTU1FTlRfTk9ERTo4KSkpLnNvbWUoKHQ9PiEoIXQudGV4dENvbnRlbnR8fCF0LnRleHRDb250ZW50LnRyaW0oKSkpKSYmKGZ1bmN0aW9uIHQoKXt0aHJvdyBFcnJvcigiTWF0VG9vbGJhcjogQXR0ZW1wdGluZyB0byBjb21iaW5lIGRpZmZlcmVudCB0b29sYmFyIG1vZGVzLiBFaXRoZXIgc3BlY2lmeSBtdWx0aXBsZSBgPG1hdC10b29sYmFyLXJvdz5gIGVsZW1lbnRzIGV4cGxpY2l0bHkgb3IganVzdCBwbGFjZSBjb250ZW50IGluc2lkZSBvZiBhIGA8bWF0LXRvb2xiYXI+YCBmb3IgYSBzaW5nbGUgcm93LiIpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8pKCl9fX1qVi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8alYpKGdmKEtoKSxnZihjSCksZ2Yoc00pKX0salYuybVjbXA9c28oe3R5cGU6alYsc2VsZWN0b3JzOltbIm1hdC10b29sYmFyIl1dLGNvbnRlbnRRdWVyaWVzOmZ1bmN0aW9uIHQoZSxuLG8pe2lmKDEmZSYmankobyxWViw1KSwyJmUpe2xldCB0O0J5KHQ9VXkoKSkmJihuLl90b29sYmFyUm93cz10KX19LGhvc3RBdHRyczpbMSwibWF0LXRvb2xiYXIiXSxob3N0VmFyczo0LGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MiZlJiZjdSgibWF0LXRvb2xiYXItbXVsdGlwbGUtcm93cyIsbi5fdG9vbGJhclJvd3MubGVuZ3RoPjApKCJtYXQtdG9vbGJhci1zaW5nbGUtcm93IiwwPT09bi5fdG9vbGJhclJvd3MubGVuZ3RoKX0saW5wdXRzOntjb2xvcjoiY29sb3IifSxleHBvcnRBczpbIm1hdFRvb2xiYXIiXSxmZWF0dXJlczpbUXBdLG5nQ29udGVudFNlbGVjdG9yczpbIioiLCJtYXQtdG9vbGJhci1yb3ciXSxkZWNsczoyLHZhcnM6MCx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoSGYoTFYpLEZmKDApLEZmKDEsMSkpfSxzdHlsZXM6WyIuY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtdG9vbGJhcntvdXRsaW5lOnNvbGlkIDFweH0ubWF0LXRvb2xiYXItcm93LC5tYXQtdG9vbGJhci1zaW5nbGUtcm93e2Rpc3BsYXk6ZmxleDtib3gtc2l6aW5nOmJvcmRlci1ib3g7cGFkZGluZzowIDE2cHg7d2lkdGg6MTAwJTtmbGV4LWRpcmVjdGlvbjpyb3c7YWxpZ24taXRlbXM6Y2VudGVyO3doaXRlLXNwYWNlOm5vd3JhcH0ubWF0LXRvb2xiYXItbXVsdGlwbGUtcm93c3tkaXNwbGF5OmZsZXg7Ym94LXNpemluZzpib3JkZXItYm94O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjt3aWR0aDoxMDAlfVxuIl0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksalYuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpLaH0se3R5cGU6Y0h9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX1dLGpWLnByb3BEZWNvcmF0b3JzPXtfdG9vbGJhclJvd3M6W3t0eXBlOm9yLGFyZ3M6W1ZWLHtkZXNjZW5kYW50czohMH1dfV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoalYsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoibWF0LXRvb2xiYXIiLGV4cG9ydEFzOiJtYXRUb29sYmFyIix0ZW1wbGF0ZTonPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPG5nLWNvbnRlbnQgc2VsZWN0PSJtYXQtdG9vbGJhci1yb3ciPjwvbmctY29udGVudD5cbicsaW5wdXRzOlsiY29sb3IiXSxob3N0OntjbGFzczoibWF0LXRvb2xiYXIiLCJbY2xhc3MubWF0LXRvb2xiYXItbXVsdGlwbGUtcm93c10iOiJfdG9vbGJhclJvd3MubGVuZ3RoID4gMCIsIltjbGFzcy5tYXQtdG9vbGJhci1zaW5nbGUtcm93XSI6Il90b29sYmFyUm93cy5sZW5ndGggPT09IDAifSxjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNoLGVuY2Fwc3VsYXRpb246V24uTm9uZSxzdHlsZXM6WyIuY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtdG9vbGJhcntvdXRsaW5lOnNvbGlkIDFweH0ubWF0LXRvb2xiYXItcm93LC5tYXQtdG9vbGJhci1zaW5nbGUtcm93e2Rpc3BsYXk6ZmxleDtib3gtc2l6aW5nOmJvcmRlci1ib3g7cGFkZGluZzowIDE2cHg7d2lkdGg6MTAwJTtmbGV4LWRpcmVjdGlvbjpyb3c7YWxpZ24taXRlbXM6Y2VudGVyO3doaXRlLXNwYWNlOm5vd3JhcH0ubWF0LXRvb2xiYXItbXVsdGlwbGUtcm93c3tkaXNwbGF5OmZsZXg7Ym94LXNpemluZzpib3JkZXItYm94O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjt3aWR0aDoxMDAlfVxuIl19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpLaH0se3R5cGU6Y0h9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX1dfSkse190b29sYmFyUm93czpbe3R5cGU6b3IsYXJnczpbVlYse2Rlc2NlbmRhbnRzOiEwfV19XX0pO2NsYXNzIFVWe31mdW5jdGlvbiBXVih0LGUpezEmdCYmRmYoMCl9VVYuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFVWKX0sVVYuybVtb2Q9Zm8oe3R5cGU6VVZ9KSxVVi7JtWluaj1Ebih7aW1wb3J0czpbW05GXSxORl19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFVWLFt7dHlwZTpMXyxhcmdzOlt7aW1wb3J0czpbTkZdLGV4cG9ydHM6W2pWLFZWLE5GXSxkZWNsYXJhdGlvbnM6W2pWLFZWXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKFVWLHtkZWNsYXJhdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm5balYsVlZdfSxpbXBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW05GXX0sZXhwb3J0czpmdW5jdGlvbigpe3JldHVybltqVixWVixORl19fSk7Y29uc3QgR1Y9WyIqIl07ZnVuY3Rpb24gWVYodCxlKXt9Y29uc3QgcVY9ZnVuY3Rpb24odCl7cmV0dXJue2FuaW1hdGlvbkR1cmF0aW9uOnR9fSxaVj1mdW5jdGlvbih0LGUpe3JldHVybnt2YWx1ZTp0LHBhcmFtczplfX0sWFY9WyJ0YWJCb2R5V3JhcHBlciJdLEtWPVsidGFiSGVhZGVyIl07ZnVuY3Rpb24gSlYodCxlKXt9ZnVuY3Rpb24gUVYodCxlKXtpZigxJnQmJkhtKDAsSlYsMCwwLCJuZy10ZW1wbGF0ZSIsOSksMiZ0KXtiZigiY2RrUG9ydGFsT3V0bGV0Iix6ZigpLiRpbXBsaWNpdC50ZW1wbGF0ZUxhYmVsKX19ZnVuY3Rpb24gJFYodCxlKXtpZigxJnQmJlB1KDApLDImdCl7d3UoemYoKS4kaW1wbGljaXQudGV4dExhYmVsKX19ZnVuY3Rpb24gdGoodCxlKXtpZigxJnQpe2NvbnN0IHQ9d2YoKTtDZigwLCJkaXYiLDYpLFJmKCJjbGljayIsKGZ1bmN0aW9uIGUoKXtjb25zdCBuPVBpKHQpLG89bi4kaW1wbGljaXQsaT1uLmluZGV4LGE9emYoKSxyPUZtKDEpO3JldHVybiBhLl9oYW5kbGVDbGljayhvLHIsaSl9KSkoImNka0ZvY3VzQ2hhbmdlIiwoZnVuY3Rpb24gZShuKXtjb25zdCBvPVBpKHQpLmluZGV4O3JldHVybiB6ZigpLl90YWJGb2N1c0NoYW5nZWQobixvKX0pKSxDZigxLCJkaXYiLDcpLEhtKDIsUVYsMSwxLCJuZy10ZW1wbGF0ZSIsOCksSG0oMywkViwxLDEsIm5nLXRlbXBsYXRlIiw4KSxNZigpLE1mKCl9aWYoMiZ0KXtjb25zdCB0PWUuJGltcGxpY2l0LG49ZS5pbmRleCxvPXpmKCk7Y3UoIm1hdC10YWItbGFiZWwtYWN0aXZlIixvLnNlbGVjdGVkSW5kZXg9PW4pLGJmKCJpZCIsby5fZ2V0VGFiTGFiZWxJZChuKSkoImRpc2FibGVkIix0LmRpc2FibGVkKSgibWF0UmlwcGxlRGlzYWJsZWQiLHQuZGlzYWJsZWR8fG8uZGlzYWJsZVJpcHBsZSkseW0oInRhYkluZGV4IixvLl9nZXRUYWJJbmRleCh0LG4pKSgiYXJpYS1wb3NpbnNldCIsbisxKSgiYXJpYS1zZXRzaXplIixvLl90YWJzLmxlbmd0aCkoImFyaWEtY29udHJvbHMiLG8uX2dldFRhYkNvbnRlbnRJZChuKSkoImFyaWEtc2VsZWN0ZWQiLG8uc2VsZWN0ZWRJbmRleD09bikoImFyaWEtbGFiZWwiLHQuYXJpYUxhYmVsfHxudWxsKSgiYXJpYS1sYWJlbGxlZGJ5IiwhdC5hcmlhTGFiZWwmJnQuYXJpYUxhYmVsbGVkYnk/dC5hcmlhTGFiZWxsZWRieTpudWxsKSxEYygyKSxiZigibmdJZiIsdC50ZW1wbGF0ZUxhYmVsKSxEYygxKSxiZigibmdJZiIsIXQudGVtcGxhdGVMYWJlbCl9fWZ1bmN0aW9uIGVqKHQsZSl7aWYoMSZ0KXtjb25zdCB0PXdmKCk7Q2YoMCwibWF0LXRhYi1ib2R5IiwxMCksUmYoIl9vbkNlbnRlcmVkIiwoZnVuY3Rpb24gZSgpe1BpKHQpO3JldHVybiB6ZigpLl9yZW1vdmVUYWJCb2R5V3JhcHBlckhlaWdodCgpfSkpKCJfb25DZW50ZXJpbmciLChmdW5jdGlvbiBlKG4pe1BpKHQpO3JldHVybiB6ZigpLl9zZXRUYWJCb2R5V3JhcHBlckhlaWdodChuKX0pKSxNZigpfWlmKDImdCl7Y29uc3QgdD1lLiRpbXBsaWNpdCxuPWUuaW5kZXgsbz16ZigpO2N1KCJtYXQtdGFiLWJvZHktYWN0aXZlIixvLnNlbGVjdGVkSW5kZXg9PT1uKSxiZigiaWQiLG8uX2dldFRhYkNvbnRlbnRJZChuKSkoImNvbnRlbnQiLHQuY29udGVudCkoInBvc2l0aW9uIix0LnBvc2l0aW9uKSgib3JpZ2luIix0Lm9yaWdpbikoImFuaW1hdGlvbkR1cmF0aW9uIixvLmFuaW1hdGlvbkR1cmF0aW9uKSx5bSgidGFiaW5kZXgiLG51bGwhPW8uY29udGVudFRhYkluZGV4JiZvLnNlbGVjdGVkSW5kZXg9PT1uP28uY29udGVudFRhYkluZGV4Om51bGwpKCJhcmlhLWxhYmVsbGVkYnkiLG8uX2dldFRhYkxhYmVsSWQobikpfX1jb25zdCBuaj1bInRhYkxpc3RDb250YWluZXIiXSxvaj1bInRhYkxpc3QiXSxpaj1bIm5leHRQYWdpbmF0b3IiXSxhaj1bInByZXZpb3VzUGFnaW5hdG9yIl0scmo9bmV3IGVyKCJNYXRJbmtCYXJQb3NpdGlvbmVyIix7cHJvdmlkZWRJbjoicm9vdCIsZmFjdG9yeTpmdW5jdGlvbiBzaigpe3JldHVybiB0PT4oe2xlZnQ6dD8odC5vZmZzZXRMZWZ0fHwwKSsicHgiOiIwIix3aWR0aDp0Pyh0Lm9mZnNldFdpZHRofHwwKSsicHgiOiIwIn0pfX0pO2NsYXNzIGxqe2NvbnN0cnVjdG9yKHQsZSxuLG8pe3RoaXMuX2VsZW1lbnRSZWY9dCx0aGlzLl9uZ1pvbmU9ZSx0aGlzLl9pbmtCYXJQb3NpdGlvbmVyPW4sdGhpcy5fYW5pbWF0aW9uTW9kZT1vfWFsaWduVG9FbGVtZW50KHQpe3RoaXMuc2hvdygpLCJ1bmRlZmluZWQiIT10eXBlb2YgcmVxdWVzdEFuaW1hdGlvbkZyYW1lP3RoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9PntyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCgpPT50aGlzLl9zZXRTdHlsZXModCkpKX0pKTp0aGlzLl9zZXRTdHlsZXModCl9c2hvdygpe3RoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zdHlsZS52aXNpYmlsaXR5PSJ2aXNpYmxlIn1oaWRlKCl7dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLnZpc2liaWxpdHk9ImhpZGRlbiJ9X3NldFN0eWxlcyh0KXtjb25zdCBlPXRoaXMuX2lua0JhclBvc2l0aW9uZXIodCksbj10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7bi5zdHlsZS5sZWZ0PWUubGVmdCxuLnN0eWxlLndpZHRoPWUud2lkdGh9fWxqLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxsaikoZ2YoS2gpLGdmKG1DKSxnZihyaiksZ2YoY2ssOCkpfSxsai7JtWRpcj1obyh7dHlwZTpsaixzZWxlY3RvcnM6W1sibWF0LWluay1iYXIiXV0saG9zdEF0dHJzOlsxLCJtYXQtaW5rLWJhciJdLGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsyJmUmJmN1KCJfbWF0LWFuaW1hdGlvbi1ub29wYWJsZSIsIk5vb3BBbmltYXRpb25zIj09PW4uX2FuaW1hdGlvbk1vZGUpfX0pLGxqLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6S2h9LHt0eXBlOm1DfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbcmpdfV19LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbY2tdfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGxqLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6Im1hdC1pbmstYmFyIixob3N0OntjbGFzczoibWF0LWluay1iYXIiLCJbY2xhc3MuX21hdC1hbmltYXRpb24tbm9vcGFibGVdIjoiX2FuaW1hdGlvbk1vZGUgPT09ICdOb29wQW5pbWF0aW9ucycifX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOktofSx7dHlwZTptQ30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3JqXX1dfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W2NrXX1dfV19KSxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IGNqPW5ldyBlcigiTWF0VGFiQ29udGVudCIpO2NsYXNzIGRqe2NvbnN0cnVjdG9yKHQpe3RoaXMudGVtcGxhdGU9dH19ZGouybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGRqKShnZihFYikpfSxkai7JtWRpcj1obyh7dHlwZTpkaixzZWxlY3RvcnM6W1siIiwibWF0VGFiQ29udGVudCIsIiJdXSxmZWF0dXJlczpbamgoW3twcm92aWRlOmNqLHVzZUV4aXN0aW5nOmRqfV0pXX0pLGRqLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6RWJ9XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGRqLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6IlttYXRUYWJDb250ZW50XSIscHJvdmlkZXJzOlt7cHJvdmlkZTpjaix1c2VFeGlzdGluZzpkan1dfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6RWJ9XX0pLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgcGo9bmV3IGVyKCJNYXRUYWJMYWJlbCIpO2NsYXNzIG1qIGV4dGVuZHMgbUJ7fW1qLsm1ZmFjPShmdW5jdGlvbigpe2xldCB0O3JldHVybiBmdW5jdGlvbiBlKG4pe3JldHVybih0fHwodD1VYShtaikpKShufHxtail9fSkoKSxtai7JtWRpcj1obyh7dHlwZTptaixzZWxlY3RvcnM6W1siIiwibWF0LXRhYi1sYWJlbCIsIiJdLFsiIiwibWF0VGFiTGFiZWwiLCIiXV0sZmVhdHVyZXM6W2poKFt7cHJvdmlkZTpwaix1c2VFeGlzdGluZzptan1dKSxRcF19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKG1qLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6IlttYXQtdGFiLWxhYmVsXSwgW21hdFRhYkxhYmVsXSIscHJvdmlkZXJzOlt7cHJvdmlkZTpwaix1c2VFeGlzdGluZzptan1dfV19XSxudWxsLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgZmo9ekYoY2xhc3N7fSksdWo9bmV3IGVyKCJNQVRfVEFCX0dST1VQIik7Y2xhc3MgZ2ogZXh0ZW5kcyBmantjb25zdHJ1Y3Rvcih0LGUpe3N1cGVyKCksdGhpcy5fdmlld0NvbnRhaW5lclJlZj10LHRoaXMuX2Nsb3Nlc3RUYWJHcm91cD1lLHRoaXMudGV4dExhYmVsPSIiLHRoaXMuX2NvbnRlbnRQb3J0YWw9bnVsbCx0aGlzLl9zdGF0ZUNoYW5nZXM9bmV3IEIsdGhpcy5wb3NpdGlvbj1udWxsLHRoaXMub3JpZ2luPW51bGwsdGhpcy5pc0FjdGl2ZT0hMX1nZXQgdGVtcGxhdGVMYWJlbCgpe3JldHVybiB0aGlzLl90ZW1wbGF0ZUxhYmVsfXNldCB0ZW1wbGF0ZUxhYmVsKHQpe3RoaXMuX3NldFRlbXBsYXRlTGFiZWxJbnB1dCh0KX1nZXQgY29udGVudCgpe3JldHVybiB0aGlzLl9jb250ZW50UG9ydGFsfW5nT25DaGFuZ2VzKHQpeyh0Lmhhc093blByb3BlcnR5KCJ0ZXh0TGFiZWwiKXx8dC5oYXNPd25Qcm9wZXJ0eSgiZGlzYWJsZWQiKSkmJnRoaXMuX3N0YXRlQ2hhbmdlcy5uZXh0KCl9bmdPbkRlc3Ryb3koKXt0aGlzLl9zdGF0ZUNoYW5nZXMuY29tcGxldGUoKX1uZ09uSW5pdCgpe3RoaXMuX2NvbnRlbnRQb3J0YWw9bmV3IGxCKHRoaXMuX2V4cGxpY2l0Q29udGVudHx8dGhpcy5faW1wbGljaXRDb250ZW50LHRoaXMuX3ZpZXdDb250YWluZXJSZWYpfV9zZXRUZW1wbGF0ZUxhYmVsSW5wdXQodCl7dCYmKHRoaXMuX3RlbXBsYXRlTGFiZWw9dCl9fWdqLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxnaikoZ2YoRmIpLGdmKHVqLDgpKX0sZ2ouybVjbXA9c28oe3R5cGU6Z2osc2VsZWN0b3JzOltbIm1hdC10YWIiXV0sY29udGVudFF1ZXJpZXM6ZnVuY3Rpb24gdChlLG4sbyl7aWYoMSZlJiYoankobyxwaiw1KSxqeShvLGNqLDcsRWIpKSwyJmUpe2xldCB0O0J5KHQ9VXkoKSkmJihuLnRlbXBsYXRlTGFiZWw9dC5maXJzdCksQnkodD1VeSgpKSYmKG4uX2V4cGxpY2l0Q29udGVudD10LmZpcnN0KX19LHZpZXdRdWVyeTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiZWeShFYiw3KSwyJmUpe2xldCB0O0J5KHQ9VXkoKSkmJihuLl9pbXBsaWNpdENvbnRlbnQ9dC5maXJzdCl9fSxpbnB1dHM6e2Rpc2FibGVkOiJkaXNhYmxlZCIsdGV4dExhYmVsOlsibGFiZWwiLCJ0ZXh0TGFiZWwiXSxhcmlhTGFiZWw6WyJhcmlhLWxhYmVsIiwiYXJpYUxhYmVsIl0sYXJpYUxhYmVsbGVkYnk6WyJhcmlhLWxhYmVsbGVkYnkiLCJhcmlhTGFiZWxsZWRieSJdfSxleHBvcnRBczpbIm1hdFRhYiJdLGZlYXR1cmVzOltRcCxxb10sbmdDb250ZW50U2VsZWN0b3JzOkdWLGRlY2xzOjEsdmFyczowLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihIZigpLEhtKDAsV1YsMSwwLCJuZy10ZW1wbGF0ZSIpKX0sZW5jYXBzdWxhdGlvbjoyfSksZ2ouY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpGYn0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3VqXX0se3R5cGU6QnJ9XX1dLGdqLnByb3BEZWNvcmF0b3JzPXt0ZW1wbGF0ZUxhYmVsOlt7dHlwZTppcixhcmdzOltwal19XSxfZXhwbGljaXRDb250ZW50Olt7dHlwZTppcixhcmdzOltjaix7cmVhZDpFYixzdGF0aWM6ITB9XX1dLF9pbXBsaWNpdENvbnRlbnQ6W3t0eXBlOmFyLGFyZ3M6W0ViLHtzdGF0aWM6ITB9XX1dLHRleHRMYWJlbDpbe3R5cGU6Ul8sYXJnczpbImxhYmVsIl19XSxhcmlhTGFiZWw6W3t0eXBlOlJfLGFyZ3M6WyJhcmlhLWxhYmVsIl19XSxhcmlhTGFiZWxsZWRieTpbe3R5cGU6Ul8sYXJnczpbImFyaWEtbGFiZWxsZWRieSJdfV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoZ2osW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoibWF0LXRhYiIsdGVtcGxhdGU6Ilx4M2MhLS0gQ3JlYXRlIGEgdGVtcGxhdGUgZm9yIHRoZSBjb250ZW50IG9mIHRoZSA8bWF0LXRhYj4gc28gdGhhdCB3ZSBjYW4gZ3JhYiBhIHJlZmVyZW5jZSB0byB0aGlzXG4gICAgVGVtcGxhdGVSZWYgYW5kIHVzZSBpdCBpbiBhIFBvcnRhbCB0byByZW5kZXIgdGhlIHRhYiBjb250ZW50IGluIHRoZSBhcHByb3ByaWF0ZSBwbGFjZSBpbiB0aGVcbiAgICB0YWItZ3JvdXAuIC0tXHgzZVxuPG5nLXRlbXBsYXRlPjxuZy1jb250ZW50PjwvbmctY29udGVudD48L25nLXRlbXBsYXRlPlxuIixpbnB1dHM6WyJkaXNhYmxlZCJdLGNoYW5nZURldGVjdGlvbjpqbi5EZWZhdWx0LGVuY2Fwc3VsYXRpb246V24uTm9uZSxleHBvcnRBczoibWF0VGFiIn1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkZifSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbdWpdfSx7dHlwZTpCcn1dfV19KSx7dGV4dExhYmVsOlt7dHlwZTpSXyxhcmdzOlsibGFiZWwiXX1dLHRlbXBsYXRlTGFiZWw6W3t0eXBlOmlyLGFyZ3M6W3BqXX1dLF9leHBsaWNpdENvbnRlbnQ6W3t0eXBlOmlyLGFyZ3M6W2NqLHtyZWFkOkViLHN0YXRpYzohMH1dfV0sX2ltcGxpY2l0Q29udGVudDpbe3R5cGU6YXIsYXJnczpbRWIse3N0YXRpYzohMH1dfV0sYXJpYUxhYmVsOlt7dHlwZTpSXyxhcmdzOlsiYXJpYS1sYWJlbCJdfV0sYXJpYUxhYmVsbGVkYnk6W3t0eXBlOlJfLGFyZ3M6WyJhcmlhLWxhYmVsbGVkYnkiXX1dfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCBoaj17dHJhbnNsYXRlVGFiOnhPKCJ0cmFuc2xhdGVUYWIiLFtrTygiY2VudGVyLCB2b2lkLCBsZWZ0LW9yaWdpbi1jZW50ZXIsIHJpZ2h0LW9yaWdpbi1jZW50ZXIiLHdPKHt0cmFuc2Zvcm06Im5vbmUifSkpLGtPKCJsZWZ0Iix3Tyh7dHJhbnNmb3JtOiJ0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCkiLG1pbkhlaWdodDoiMXB4In0pKSxrTygicmlnaHQiLHdPKHt0cmFuc2Zvcm06InRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApIixtaW5IZWlnaHQ6IjFweCJ9KSksRE8oIiogPT4gbGVmdCwgKiA9PiByaWdodCwgbGVmdCA9PiBjZW50ZXIsIHJpZ2h0ID0+IGNlbnRlciIsT08oInt7YW5pbWF0aW9uRHVyYXRpb259fSBjdWJpYy1iZXppZXIoMC4zNSwgMCwgMC4yNSwgMSkiKSksRE8oInZvaWQgPT4gbGVmdC1vcmlnaW4tY2VudGVyIixbd08oe3RyYW5zZm9ybToidHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApIn0pLE9PKCJ7e2FuaW1hdGlvbkR1cmF0aW9ufX0gY3ViaWMtYmV6aWVyKDAuMzUsIDAsIDAuMjUsIDEpIildKSxETygidm9pZCA9PiByaWdodC1vcmlnaW4tY2VudGVyIixbd08oe3RyYW5zZm9ybToidHJhbnNsYXRlM2QoMTAwJSwgMCwgMCkifSksT08oInt7YW5pbWF0aW9uRHVyYXRpb259fSBjdWJpYy1iZXppZXIoMC4zNSwgMCwgMC4yNSwgMSkiKV0pXSl9OwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBiaiBleHRlbmRzIHVCe2NvbnN0cnVjdG9yKHQsZSxuLG8pe3N1cGVyKHQsZSxvKSx0aGlzLl9ob3N0PW4sdGhpcy5fY2VudGVyaW5nU3ViPXUuRU1QVFksdGhpcy5fbGVhdmluZ1N1Yj11LkVNUFRZfW5nT25Jbml0KCl7c3VwZXIubmdPbkluaXQoKSx0aGlzLl9jZW50ZXJpbmdTdWI9dGhpcy5faG9zdC5fYmVmb3JlQ2VudGVyaW5nLnBpcGUoQmUodGhpcy5faG9zdC5faXNDZW50ZXJQb3NpdGlvbih0aGlzLl9ob3N0Ll9wb3NpdGlvbikpKS5zdWJzY3JpYmUoKHQ9Pnt0JiYhdGhpcy5oYXNBdHRhY2hlZCgpJiZ0aGlzLmF0dGFjaCh0aGlzLl9ob3N0Ll9jb250ZW50KX0pKSx0aGlzLl9sZWF2aW5nU3ViPXRoaXMuX2hvc3QuX2FmdGVyTGVhdmluZ0NlbnRlci5zdWJzY3JpYmUoKCgpPT57dGhpcy5kZXRhY2goKX0pKX1uZ09uRGVzdHJveSgpe3N1cGVyLm5nT25EZXN0cm95KCksdGhpcy5fY2VudGVyaW5nU3ViLnVuc3Vic2NyaWJlKCksdGhpcy5fbGVhdmluZ1N1Yi51bnN1YnNjcmliZSgpfX1iai7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8YmopKGdmKEdoKSxnZihGYiksZ2YoJGUoKCgpPT5faikpKSxnZihzTSkpfSxiai7JtWRpcj1obyh7dHlwZTpiaixzZWxlY3RvcnM6W1siIiwibWF0VGFiQm9keUhvc3QiLCIiXV0sZmVhdHVyZXM6W1FwXX0pLGJqLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6R2h9LHt0eXBlOkZifSx7dHlwZTpfaixkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOlskZSgoKCk9Pl9qKSldfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoYmosW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW21hdFRhYkJvZHlIb3N0XSJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpHaH0se3R5cGU6RmJ9LHt0eXBlOl9qLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6WyRlKCgoKT0+X2opKV19XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3NNXX1dfV19KSxudWxsKTtjbGFzcyB5antjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5fZWxlbWVudFJlZj10LHRoaXMuX2Rpcj1lLHRoaXMuX2RpckNoYW5nZVN1YnNjcmlwdGlvbj11LkVNUFRZLHRoaXMuX3RyYW5zbGF0ZVRhYkNvbXBsZXRlPW5ldyBCLHRoaXMuX29uQ2VudGVyaW5nPW5ldyBTeSx0aGlzLl9iZWZvcmVDZW50ZXJpbmc9bmV3IFN5LHRoaXMuX2FmdGVyTGVhdmluZ0NlbnRlcj1uZXcgU3ksdGhpcy5fb25DZW50ZXJlZD1uZXcgU3koITApLHRoaXMuYW5pbWF0aW9uRHVyYXRpb249IjUwMG1zIixlJiYodGhpcy5fZGlyQ2hhbmdlU3Vic2NyaXB0aW9uPWUuY2hhbmdlLnN1YnNjcmliZSgodD0+e3RoaXMuX2NvbXB1dGVQb3NpdGlvbkFuaW1hdGlvblN0YXRlKHQpLG4ubWFya0ZvckNoZWNrKCl9KSkpLHRoaXMuX3RyYW5zbGF0ZVRhYkNvbXBsZXRlLnBpcGUod2UoKCh0LGUpPT50LmZyb21TdGF0ZT09PWUuZnJvbVN0YXRlJiZ0LnRvU3RhdGU9PT1lLnRvU3RhdGUpKSkuc3Vic2NyaWJlKCh0PT57dGhpcy5faXNDZW50ZXJQb3NpdGlvbih0LnRvU3RhdGUpJiZ0aGlzLl9pc0NlbnRlclBvc2l0aW9uKHRoaXMuX3Bvc2l0aW9uKSYmdGhpcy5fb25DZW50ZXJlZC5lbWl0KCksdGhpcy5faXNDZW50ZXJQb3NpdGlvbih0LmZyb21TdGF0ZSkmJiF0aGlzLl9pc0NlbnRlclBvc2l0aW9uKHRoaXMuX3Bvc2l0aW9uKSYmdGhpcy5fYWZ0ZXJMZWF2aW5nQ2VudGVyLmVtaXQoKX0pKX1zZXQgcG9zaXRpb24odCl7dGhpcy5fcG9zaXRpb25JbmRleD10LHRoaXMuX2NvbXB1dGVQb3NpdGlvbkFuaW1hdGlvblN0YXRlKCl9bmdPbkluaXQoKXsiY2VudGVyIj09dGhpcy5fcG9zaXRpb24mJm51bGwhPXRoaXMub3JpZ2luJiYodGhpcy5fcG9zaXRpb249dGhpcy5fY29tcHV0ZVBvc2l0aW9uRnJvbU9yaWdpbih0aGlzLm9yaWdpbikpfW5nT25EZXN0cm95KCl7dGhpcy5fZGlyQ2hhbmdlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksdGhpcy5fdHJhbnNsYXRlVGFiQ29tcGxldGUuY29tcGxldGUoKX1fb25UcmFuc2xhdGVUYWJTdGFydGVkKHQpe2NvbnN0IGU9dGhpcy5faXNDZW50ZXJQb3NpdGlvbih0LnRvU3RhdGUpO3RoaXMuX2JlZm9yZUNlbnRlcmluZy5lbWl0KGUpLGUmJnRoaXMuX29uQ2VudGVyaW5nLmVtaXQodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsaWVudEhlaWdodCl9X2dldExheW91dERpcmVjdGlvbigpe3JldHVybiB0aGlzLl9kaXImJiJydGwiPT09dGhpcy5fZGlyLnZhbHVlPyJydGwiOiJsdHIifV9pc0NlbnRlclBvc2l0aW9uKHQpe3JldHVybiJjZW50ZXIiPT10fHwibGVmdC1vcmlnaW4tY2VudGVyIj09dHx8InJpZ2h0LW9yaWdpbi1jZW50ZXIiPT10fV9jb21wdXRlUG9zaXRpb25BbmltYXRpb25TdGF0ZSh0PXRoaXMuX2dldExheW91dERpcmVjdGlvbigpKXt0aGlzLl9wb3NpdGlvbj10aGlzLl9wb3NpdGlvbkluZGV4PDA/Imx0ciI9PXQ/ImxlZnQiOiJyaWdodCI6dGhpcy5fcG9zaXRpb25JbmRleD4wPyJsdHIiPT10PyJyaWdodCI6ImxlZnQiOiJjZW50ZXIifV9jb21wdXRlUG9zaXRpb25Gcm9tT3JpZ2luKHQpe2NvbnN0IGU9dGhpcy5fZ2V0TGF5b3V0RGlyZWN0aW9uKCk7cmV0dXJuImx0ciI9PWUmJnQ8PTB8fCJydGwiPT1lJiZ0PjA/ImxlZnQtb3JpZ2luLWNlbnRlciI6InJpZ2h0LW9yaWdpbi1jZW50ZXIifX15ai7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8eWopKGdmKEtoKSxnZih2Riw4KSxnZihPYikpfSx5ai7JtWRpcj1obyh7dHlwZTp5aixpbnB1dHM6e2FuaW1hdGlvbkR1cmF0aW9uOiJhbmltYXRpb25EdXJhdGlvbiIscG9zaXRpb246InBvc2l0aW9uIixfY29udGVudDpbImNvbnRlbnQiLCJfY29udGVudCJdLG9yaWdpbjoib3JpZ2luIn0sb3V0cHV0czp7X29uQ2VudGVyaW5nOiJfb25DZW50ZXJpbmciLF9iZWZvcmVDZW50ZXJpbmc6Il9iZWZvcmVDZW50ZXJpbmciLF9hZnRlckxlYXZpbmdDZW50ZXI6Il9hZnRlckxlYXZpbmdDZW50ZXIiLF9vbkNlbnRlcmVkOiJfb25DZW50ZXJlZCJ9fSkseWouY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpLaH0se3R5cGU6dkYsZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX0se3R5cGU6T2J9XSx5ai5wcm9wRGVjb3JhdG9ycz17X29uQ2VudGVyaW5nOlt7dHlwZTpFX31dLF9iZWZvcmVDZW50ZXJpbmc6W3t0eXBlOkVffV0sX2FmdGVyTGVhdmluZ0NlbnRlcjpbe3R5cGU6RV99XSxfb25DZW50ZXJlZDpbe3R5cGU6RV99XSxfY29udGVudDpbe3R5cGU6Ul8sYXJnczpbImNvbnRlbnQiXX1dLG9yaWdpbjpbe3R5cGU6Ul99XSxhbmltYXRpb25EdXJhdGlvbjpbe3R5cGU6Ul99XSxwb3NpdGlvbjpbe3R5cGU6Ul99XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih5aixbe3R5cGU6a199XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6S2h9LHt0eXBlOnZGLGRlY29yYXRvcnM6W3t0eXBlOkJyfV19LHt0eXBlOk9ifV19KSx7X29uQ2VudGVyaW5nOlt7dHlwZTpFX31dLF9iZWZvcmVDZW50ZXJpbmc6W3t0eXBlOkVffV0sX2FmdGVyTGVhdmluZ0NlbnRlcjpbe3R5cGU6RV99XSxfb25DZW50ZXJlZDpbe3R5cGU6RV99XSxhbmltYXRpb25EdXJhdGlvbjpbe3R5cGU6Ul99XSxwb3NpdGlvbjpbe3R5cGU6Ul99XSxfY29udGVudDpbe3R5cGU6Ul8sYXJnczpbImNvbnRlbnQiXX1dLG9yaWdpbjpbe3R5cGU6Ul99XX0pO2NsYXNzIF9qIGV4dGVuZHMgeWp7Y29uc3RydWN0b3IodCxlLG4pe3N1cGVyKHQsZSxuKX19X2ouybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fF9qKShnZihLaCksZ2YodkYsOCksZ2YoT2IpKX0sX2ouybVjbXA9c28oe3R5cGU6X2osc2VsZWN0b3JzOltbIm1hdC10YWItYm9keSJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmVnkodUIsNSksMiZlKXtsZXQgdDtCeSh0PVV5KCkpJiYobi5fcG9ydGFsSG9zdD10LmZpcnN0KX19LGhvc3RBdHRyczpbMSwibWF0LXRhYi1ib2R5Il0sZmVhdHVyZXM6W1FwXSxkZWNsczozLHZhcnM6Nixjb25zdHM6W1siY2RrU2Nyb2xsYWJsZSIsIiIsMSwibWF0LXRhYi1ib2R5LWNvbnRlbnQiXSxbImNvbnRlbnQiLCIiXSxbIm1hdFRhYkJvZHlIb3N0IiwiIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihDZigwLCJkaXYiLDAsMSksUmYoIkB0cmFuc2xhdGVUYWIuc3RhcnQiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLl9vblRyYW5zbGF0ZVRhYlN0YXJ0ZWQoZSl9KSkoIkB0cmFuc2xhdGVUYWIuZG9uZSIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uX3RyYW5zbGF0ZVRhYkNvbXBsZXRlLm5leHQoZSl9KSksSG0oMixZViwwLDAsIm5nLXRlbXBsYXRlIiwyKSxNZigpKSwyJmUmJmJmKCJAdHJhbnNsYXRlVGFiIixheSgzLFpWLG4uX3Bvc2l0aW9uLGl5KDEscVYsbi5hbmltYXRpb25EdXJhdGlvbikpKX0sZGlyZWN0aXZlczpbYmpdLHN0eWxlczpbIi5tYXQtdGFiLWJvZHktY29udGVudHtoZWlnaHQ6MTAwJTtvdmVyZmxvdzphdXRvfS5tYXQtdGFiLWdyb3VwLWR5bmFtaWMtaGVpZ2h0IC5tYXQtdGFiLWJvZHktY29udGVudHtvdmVyZmxvdzpoaWRkZW59XG4iXSxlbmNhcHN1bGF0aW9uOjIsZGF0YTp7YW5pbWF0aW9uOltoai50cmFuc2xhdGVUYWJdfX0pLF9qLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6S2h9LHt0eXBlOnZGLGRlY29yYXRvcnM6W3t0eXBlOkJyfV19LHt0eXBlOk9ifV0sX2oucHJvcERlY29yYXRvcnM9e19wb3J0YWxIb3N0Olt7dHlwZTphcixhcmdzOlt1Ql19XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihfaixbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJtYXQtdGFiLWJvZHkiLHRlbXBsYXRlOic8ZGl2IGNsYXNzPSJtYXQtdGFiLWJvZHktY29udGVudCIgI2NvbnRlbnRcbiAgICAgW0B0cmFuc2xhdGVUYWJdPSJ7XG4gICAgICAgIHZhbHVlOiBfcG9zaXRpb24sXG4gICAgICAgIHBhcmFtczoge2FuaW1hdGlvbkR1cmF0aW9uOiBhbmltYXRpb25EdXJhdGlvbn1cbiAgICAgfSJcbiAgICAgKEB0cmFuc2xhdGVUYWIuc3RhcnQpPSJfb25UcmFuc2xhdGVUYWJTdGFydGVkKCRldmVudCkiXG4gICAgIChAdHJhbnNsYXRlVGFiLmRvbmUpPSJfdHJhbnNsYXRlVGFiQ29tcGxldGUubmV4dCgkZXZlbnQpIlxuICAgICBjZGtTY3JvbGxhYmxlPlxuICA8bmctdGVtcGxhdGUgbWF0VGFiQm9keUhvc3Q+PC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuJyxlbmNhcHN1bGF0aW9uOlduLk5vbmUsY2hhbmdlRGV0ZWN0aW9uOmpuLkRlZmF1bHQsYW5pbWF0aW9uczpbaGoudHJhbnNsYXRlVGFiXSxob3N0OntjbGFzczoibWF0LXRhYi1ib2R5In0sc3R5bGVzOlsiLm1hdC10YWItYm9keS1jb250ZW50e2hlaWdodDoxMDAlO292ZXJmbG93OmF1dG99Lm1hdC10YWItZ3JvdXAtZHluYW1pYy1oZWlnaHQgLm1hdC10YWItYm9keS1jb250ZW50e292ZXJmbG93OmhpZGRlbn1cbiJdfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6S2h9LHt0eXBlOnZGLGRlY29yYXRvcnM6W3t0eXBlOkJyfV19LHt0eXBlOk9ifV19KSx7X3BvcnRhbEhvc3Q6W3t0eXBlOmFyLGFyZ3M6W3VCXX1dfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCBDaj1uZXcgZXIoIk1BVF9UQUJTX0NPTkZJRyIpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9sZXQgTWo9MDtjbGFzcyB2ant9Y29uc3QgeGo9SUYoSEYoY2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy5fZWxlbWVudFJlZj10fX0pLCJwcmltYXJ5Iik7Y2xhc3MgT2ogZXh0ZW5kcyB4antjb25zdHJ1Y3Rvcih0LGUsbixvKXt2YXIgaTtzdXBlcih0KSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZj1lLHRoaXMuX2FuaW1hdGlvbk1vZGU9byx0aGlzLl90YWJzPW5ldyBSeSx0aGlzLl9pbmRleFRvU2VsZWN0PTAsdGhpcy5fdGFiQm9keVdyYXBwZXJIZWlnaHQ9MCx0aGlzLl90YWJzU3Vic2NyaXB0aW9uPXUuRU1QVFksdGhpcy5fdGFiTGFiZWxTdWJzY3JpcHRpb249dS5FTVBUWSx0aGlzLl9zZWxlY3RlZEluZGV4PW51bGwsdGhpcy5oZWFkZXJQb3NpdGlvbj0iYWJvdmUiLHRoaXMuc2VsZWN0ZWRJbmRleENoYW5nZT1uZXcgU3ksdGhpcy5mb2N1c0NoYW5nZT1uZXcgU3ksdGhpcy5hbmltYXRpb25Eb25lPW5ldyBTeSx0aGlzLnNlbGVjdGVkVGFiQ2hhbmdlPW5ldyBTeSghMCksdGhpcy5fZ3JvdXBJZD1NaisrLHRoaXMuYW5pbWF0aW9uRHVyYXRpb249biYmbi5hbmltYXRpb25EdXJhdGlvbj9uLmFuaW1hdGlvbkR1cmF0aW9uOiI1MDBtcyIsdGhpcy5kaXNhYmxlUGFnaW5hdGlvbj0hKCFufHxudWxsPT1uLmRpc2FibGVQYWdpbmF0aW9uKSYmbi5kaXNhYmxlUGFnaW5hdGlvbix0aGlzLmR5bmFtaWNIZWlnaHQ9ISghbnx8bnVsbD09bi5keW5hbWljSGVpZ2h0KSYmbi5keW5hbWljSGVpZ2h0LHRoaXMuY29udGVudFRhYkluZGV4PW51bGwhPT0oaT1udWxsPT1uP3ZvaWQgMDpuLmNvbnRlbnRUYWJJbmRleCkmJnZvaWQgMCE9PWk/aTpudWxsfWdldCBkeW5hbWljSGVpZ2h0KCl7cmV0dXJuIHRoaXMuX2R5bmFtaWNIZWlnaHR9c2V0IGR5bmFtaWNIZWlnaHQodCl7dGhpcy5fZHluYW1pY0hlaWdodD1lSCh0KX1nZXQgc2VsZWN0ZWRJbmRleCgpe3JldHVybiB0aGlzLl9zZWxlY3RlZEluZGV4fXNldCBzZWxlY3RlZEluZGV4KHQpe3RoaXMuX2luZGV4VG9TZWxlY3Q9bkgodCxudWxsKX1nZXQgYW5pbWF0aW9uRHVyYXRpb24oKXtyZXR1cm4gdGhpcy5fYW5pbWF0aW9uRHVyYXRpb259c2V0IGFuaW1hdGlvbkR1cmF0aW9uKHQpe3RoaXMuX2FuaW1hdGlvbkR1cmF0aW9uPS9eXGQrJC8udGVzdCh0KT90KyJtcyI6dH1nZXQgY29udGVudFRhYkluZGV4KCl7cmV0dXJuIHRoaXMuX2NvbnRlbnRUYWJJbmRleH1zZXQgY29udGVudFRhYkluZGV4KHQpe3RoaXMuX2NvbnRlbnRUYWJJbmRleD1uSCh0LG51bGwpfWdldCBiYWNrZ3JvdW5kQ29sb3IoKXtyZXR1cm4gdGhpcy5fYmFja2dyb3VuZENvbG9yfXNldCBiYWNrZ3JvdW5kQ29sb3IodCl7Y29uc3QgZT10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7ZS5jbGFzc0xpc3QucmVtb3ZlKGBtYXQtYmFja2dyb3VuZC0ke3RoaXMuYmFja2dyb3VuZENvbG9yfWApLHQmJmUuY2xhc3NMaXN0LmFkZChgbWF0LWJhY2tncm91bmQtJHt0fWApLHRoaXMuX2JhY2tncm91bmRDb2xvcj10fW5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpe2NvbnN0IHQ9dGhpcy5faW5kZXhUb1NlbGVjdD10aGlzLl9jbGFtcFRhYkluZGV4KHRoaXMuX2luZGV4VG9TZWxlY3QpO2lmKHRoaXMuX3NlbGVjdGVkSW5kZXghPXQpe2NvbnN0IGU9bnVsbD09dGhpcy5fc2VsZWN0ZWRJbmRleDtpZighZSl7dGhpcy5zZWxlY3RlZFRhYkNoYW5nZS5lbWl0KHRoaXMuX2NyZWF0ZUNoYW5nZUV2ZW50KHQpKTtjb25zdCBlPXRoaXMuX3RhYkJvZHlXcmFwcGVyLm5hdGl2ZUVsZW1lbnQ7ZS5zdHlsZS5taW5IZWlnaHQ9ZS5jbGllbnRIZWlnaHQrInB4In1Qcm9taXNlLnJlc29sdmUoKS50aGVuKCgoKT0+e3RoaXMuX3RhYnMuZm9yRWFjaCgoKGUsbik9PmUuaXNBY3RpdmU9bj09PXQpKSxlfHwodGhpcy5zZWxlY3RlZEluZGV4Q2hhbmdlLmVtaXQodCksdGhpcy5fdGFiQm9keVdyYXBwZXIubmF0aXZlRWxlbWVudC5zdHlsZS5taW5IZWlnaHQ9IiIpfSkpfXRoaXMuX3RhYnMuZm9yRWFjaCgoKGUsbik9PntlLnBvc2l0aW9uPW4tdCxudWxsPT10aGlzLl9zZWxlY3RlZEluZGV4fHwwIT1lLnBvc2l0aW9ufHxlLm9yaWdpbnx8KGUub3JpZ2luPXQtdGhpcy5fc2VsZWN0ZWRJbmRleCl9KSksdGhpcy5fc2VsZWN0ZWRJbmRleCE9PXQmJih0aGlzLl9zZWxlY3RlZEluZGV4PXQsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCkpfW5nQWZ0ZXJDb250ZW50SW5pdCgpe3RoaXMuX3N1YnNjcmliZVRvQWxsVGFiQ2hhbmdlcygpLHRoaXMuX3N1YnNjcmliZVRvVGFiTGFiZWxzKCksdGhpcy5fdGFic1N1YnNjcmlwdGlvbj10aGlzLl90YWJzLmNoYW5nZXMuc3Vic2NyaWJlKCgoKT0+e2lmKHRoaXMuX2NsYW1wVGFiSW5kZXgodGhpcy5faW5kZXhUb1NlbGVjdCk9PT10aGlzLl9zZWxlY3RlZEluZGV4KXtjb25zdCB0PXRoaXMuX3RhYnMudG9BcnJheSgpO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKWlmKHRbZV0uaXNBY3RpdmUpe3RoaXMuX2luZGV4VG9TZWxlY3Q9dGhpcy5fc2VsZWN0ZWRJbmRleD1lO2JyZWFrfX10aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKX0pKX1fc3Vic2NyaWJlVG9BbGxUYWJDaGFuZ2VzKCl7dGhpcy5fYWxsVGFicy5jaGFuZ2VzLnBpcGUoQmUodGhpcy5fYWxsVGFicykpLnN1YnNjcmliZSgodD0+e3RoaXMuX3RhYnMucmVzZXQodC5maWx0ZXIoKHQ9PnQuX2Nsb3Nlc3RUYWJHcm91cD09PXRoaXN8fCF0Ll9jbG9zZXN0VGFiR3JvdXApKSksdGhpcy5fdGFicy5ub3RpZnlPbkNoYW5nZXMoKX0pKX1uZ09uRGVzdHJveSgpe3RoaXMuX3RhYnMuZGVzdHJveSgpLHRoaXMuX3RhYnNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLl90YWJMYWJlbFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpfXJlYWxpZ25JbmtCYXIoKXt0aGlzLl90YWJIZWFkZXImJnRoaXMuX3RhYkhlYWRlci5fYWxpZ25JbmtCYXJUb1NlbGVjdGVkVGFiKCl9Zm9jdXNUYWIodCl7Y29uc3QgZT10aGlzLl90YWJIZWFkZXI7ZSYmKGUuZm9jdXNJbmRleD10KX1fZm9jdXNDaGFuZ2VkKHQpe3RoaXMuZm9jdXNDaGFuZ2UuZW1pdCh0aGlzLl9jcmVhdGVDaGFuZ2VFdmVudCh0KSl9X2NyZWF0ZUNoYW5nZUV2ZW50KHQpe2NvbnN0IGU9bmV3IHZqO3JldHVybiBlLmluZGV4PXQsdGhpcy5fdGFicyYmdGhpcy5fdGFicy5sZW5ndGgmJihlLnRhYj10aGlzLl90YWJzLnRvQXJyYXkoKVt0XSksZX1fc3Vic2NyaWJlVG9UYWJMYWJlbHMoKXt0aGlzLl90YWJMYWJlbFN1YnNjcmlwdGlvbiYmdGhpcy5fdGFiTGFiZWxTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLl90YWJMYWJlbFN1YnNjcmlwdGlvbj1wZSguLi50aGlzLl90YWJzLm1hcCgodD0+dC5fc3RhdGVDaGFuZ2VzKSkpLnN1YnNjcmliZSgoKCk9PnRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpKSl9X2NsYW1wVGFiSW5kZXgodCl7cmV0dXJuIE1hdGgubWluKHRoaXMuX3RhYnMubGVuZ3RoLTEsTWF0aC5tYXgodHx8MCwwKSl9X2dldFRhYkxhYmVsSWQodCl7cmV0dXJuYG1hdC10YWItbGFiZWwtJHt0aGlzLl9ncm91cElkfS0ke3R9YH1fZ2V0VGFiQ29udGVudElkKHQpe3JldHVybmBtYXQtdGFiLWNvbnRlbnQtJHt0aGlzLl9ncm91cElkfS0ke3R9YH1fc2V0VGFiQm9keVdyYXBwZXJIZWlnaHQodCl7aWYoIXRoaXMuX2R5bmFtaWNIZWlnaHR8fCF0aGlzLl90YWJCb2R5V3JhcHBlckhlaWdodClyZXR1cm47Y29uc3QgZT10aGlzLl90YWJCb2R5V3JhcHBlci5uYXRpdmVFbGVtZW50O2Uuc3R5bGUuaGVpZ2h0PXRoaXMuX3RhYkJvZHlXcmFwcGVySGVpZ2h0KyJweCIsdGhpcy5fdGFiQm9keVdyYXBwZXIubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQmJihlLnN0eWxlLmhlaWdodD10KyJweCIpfV9yZW1vdmVUYWJCb2R5V3JhcHBlckhlaWdodCgpe2NvbnN0IHQ9dGhpcy5fdGFiQm9keVdyYXBwZXIubmF0aXZlRWxlbWVudDt0aGlzLl90YWJCb2R5V3JhcHBlckhlaWdodD10LmNsaWVudEhlaWdodCx0LnN0eWxlLmhlaWdodD0iIix0aGlzLmFuaW1hdGlvbkRvbmUuZW1pdCgpfV9oYW5kbGVDbGljayh0LGUsbil7dC5kaXNhYmxlZHx8KHRoaXMuc2VsZWN0ZWRJbmRleD1lLmZvY3VzSW5kZXg9bil9X2dldFRhYkluZGV4KHQsZSl7cmV0dXJuIHQuZGlzYWJsZWQ/bnVsbDp0aGlzLnNlbGVjdGVkSW5kZXg9PT1lPzA6LTF9X3RhYkZvY3VzQ2hhbmdlZCh0LGUpe3QmJiJtb3VzZSIhPT10JiYidG91Y2giIT09dCYmKHRoaXMuX3RhYkhlYWRlci5mb2N1c0luZGV4PWUpfX1Pai7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8T2opKGdmKEtoKSxnZihPYiksZ2YoQ2osOCksZ2YoY2ssOCkpfSxPai7JtWRpcj1obyh7dHlwZTpPaixpbnB1dHM6e2hlYWRlclBvc2l0aW9uOiJoZWFkZXJQb3NpdGlvbiIsYW5pbWF0aW9uRHVyYXRpb246ImFuaW1hdGlvbkR1cmF0aW9uIixkaXNhYmxlUGFnaW5hdGlvbjoiZGlzYWJsZVBhZ2luYXRpb24iLGR5bmFtaWNIZWlnaHQ6ImR5bmFtaWNIZWlnaHQiLGNvbnRlbnRUYWJJbmRleDoiY29udGVudFRhYkluZGV4IixzZWxlY3RlZEluZGV4OiJzZWxlY3RlZEluZGV4IixiYWNrZ3JvdW5kQ29sb3I6ImJhY2tncm91bmRDb2xvciJ9LG91dHB1dHM6e3NlbGVjdGVkSW5kZXhDaGFuZ2U6InNlbGVjdGVkSW5kZXhDaGFuZ2UiLGZvY3VzQ2hhbmdlOiJmb2N1c0NoYW5nZSIsYW5pbWF0aW9uRG9uZToiYW5pbWF0aW9uRG9uZSIsc2VsZWN0ZWRUYWJDaGFuZ2U6InNlbGVjdGVkVGFiQ2hhbmdlIn0sZmVhdHVyZXM6W1FwXX0pLE9qLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6S2h9LHt0eXBlOk9ifSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbQ2pdfSx7dHlwZTpCcn1dfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W2NrXX1dfV0sT2oucHJvcERlY29yYXRvcnM9e2R5bmFtaWNIZWlnaHQ6W3t0eXBlOlJffV0sc2VsZWN0ZWRJbmRleDpbe3R5cGU6Ul99XSxoZWFkZXJQb3NpdGlvbjpbe3R5cGU6Ul99XSxhbmltYXRpb25EdXJhdGlvbjpbe3R5cGU6Ul99XSxjb250ZW50VGFiSW5kZXg6W3t0eXBlOlJffV0sZGlzYWJsZVBhZ2luYXRpb246W3t0eXBlOlJffV0sYmFja2dyb3VuZENvbG9yOlt7dHlwZTpSX31dLHNlbGVjdGVkSW5kZXhDaGFuZ2U6W3t0eXBlOkVffV0sZm9jdXNDaGFuZ2U6W3t0eXBlOkVffV0sYW5pbWF0aW9uRG9uZTpbe3R5cGU6RV99XSxzZWxlY3RlZFRhYkNoYW5nZTpbe3R5cGU6RV99XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihPaixbe3R5cGU6a199XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6S2h9LHt0eXBlOk9ifSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbQ2pdfSx7dHlwZTpCcn1dfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W2NrXX1dfV19KSx7aGVhZGVyUG9zaXRpb246W3t0eXBlOlJffV0sc2VsZWN0ZWRJbmRleENoYW5nZTpbe3R5cGU6RV99XSxmb2N1c0NoYW5nZTpbe3R5cGU6RV99XSxhbmltYXRpb25Eb25lOlt7dHlwZTpFX31dLHNlbGVjdGVkVGFiQ2hhbmdlOlt7dHlwZTpFX31dLGFuaW1hdGlvbkR1cmF0aW9uOlt7dHlwZTpSX31dLGRpc2FibGVQYWdpbmF0aW9uOlt7dHlwZTpSX31dLGR5bmFtaWNIZWlnaHQ6W3t0eXBlOlJffV0sY29udGVudFRhYkluZGV4Olt7dHlwZTpSX31dLHNlbGVjdGVkSW5kZXg6W3t0eXBlOlJffV0sYmFja2dyb3VuZENvbG9yOlt7dHlwZTpSX31dfSk7Y2xhc3MgUGogZXh0ZW5kcyBPantjb25zdHJ1Y3Rvcih0LGUsbixvKXtzdXBlcih0LGUsbixvKX19UGouybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFBqKShnZihLaCksZ2YoT2IpLGdmKENqLDgpLGdmKGNrLDgpKX0sUGouybVjbXA9c28oe3R5cGU6UGosc2VsZWN0b3JzOltbIm1hdC10YWItZ3JvdXAiXV0sY29udGVudFF1ZXJpZXM6ZnVuY3Rpb24gdChlLG4sbyl7aWYoMSZlJiZqeShvLGdqLDUpLDImZSl7bGV0IHQ7QnkodD1VeSgpKSYmKG4uX2FsbFRhYnM9dCl9fSx2aWV3UXVlcnk6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmKFZ5KFhWLDUpLFZ5KEtWLDUpKSwyJmUpe2xldCB0O0J5KHQ9VXkoKSkmJihuLl90YWJCb2R5V3JhcHBlcj10LmZpcnN0KSxCeSh0PVV5KCkpJiYobi5fdGFiSGVhZGVyPXQuZmlyc3QpfX0saG9zdEF0dHJzOlsxLCJtYXQtdGFiLWdyb3VwIl0saG9zdFZhcnM6NCxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezImZSYmY3UoIm1hdC10YWItZ3JvdXAtZHluYW1pYy1oZWlnaHQiLG4uZHluYW1pY0hlaWdodCkoIm1hdC10YWItZ3JvdXAtaW52ZXJ0ZWQtaGVhZGVyIiwiYmVsb3ciPT09bi5oZWFkZXJQb3NpdGlvbil9LGlucHV0czp7Y29sb3I6ImNvbG9yIixkaXNhYmxlUmlwcGxlOiJkaXNhYmxlUmlwcGxlIn0sZXhwb3J0QXM6WyJtYXRUYWJHcm91cCJdLGZlYXR1cmVzOltqaChbe3Byb3ZpZGU6dWosdXNlRXhpc3Rpbmc6UGp9XSksUXBdLGRlY2xzOjYsdmFyczo3LGNvbnN0czpbWzMsInNlbGVjdGVkSW5kZXgiLCJkaXNhYmxlUmlwcGxlIiwiZGlzYWJsZVBhZ2luYXRpb24iLCJpbmRleEZvY3VzZWQiLCJzZWxlY3RGb2N1c2VkSW5kZXgiXSxbInRhYkhlYWRlciIsIiJdLFsiY2xhc3MiLCJtYXQtdGFiLWxhYmVsIG1hdC1mb2N1cy1pbmRpY2F0b3IiLCJyb2xlIiwidGFiIiwibWF0VGFiTGFiZWxXcmFwcGVyIiwiIiwibWF0LXJpcHBsZSIsIiIsImNka01vbml0b3JFbGVtZW50Rm9jdXMiLCIiLDMsImlkIiwibWF0LXRhYi1sYWJlbC1hY3RpdmUiLCJkaXNhYmxlZCIsIm1hdFJpcHBsZURpc2FibGVkIiwiY2xpY2siLCJjZGtGb2N1c0NoYW5nZSIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWzEsIm1hdC10YWItYm9keS13cmFwcGVyIl0sWyJ0YWJCb2R5V3JhcHBlciIsIiJdLFsicm9sZSIsInRhYnBhbmVsIiwzLCJpZCIsIm1hdC10YWItYm9keS1hY3RpdmUiLCJjb250ZW50IiwicG9zaXRpb24iLCJvcmlnaW4iLCJhbmltYXRpb25EdXJhdGlvbiIsIl9vbkNlbnRlcmVkIiwiX29uQ2VudGVyaW5nIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbInJvbGUiLCJ0YWIiLCJtYXRUYWJMYWJlbFdyYXBwZXIiLCIiLCJtYXQtcmlwcGxlIiwiIiwiY2RrTW9uaXRvckVsZW1lbnRGb2N1cyIsIiIsMSwibWF0LXRhYi1sYWJlbCIsIm1hdC1mb2N1cy1pbmRpY2F0b3IiLDMsImlkIiwiZGlzYWJsZWQiLCJtYXRSaXBwbGVEaXNhYmxlZCIsImNsaWNrIiwiY2RrRm9jdXNDaGFuZ2UiXSxbMSwibWF0LXRhYi1sYWJlbC1jb250ZW50Il0sWzMsIm5nSWYiXSxbMywiY2RrUG9ydGFsT3V0bGV0Il0sWyJyb2xlIiwidGFicGFuZWwiLDMsImlkIiwiY29udGVudCIsInBvc2l0aW9uIiwib3JpZ2luIiwiYW5pbWF0aW9uRHVyYXRpb24iLCJfb25DZW50ZXJlZCIsIl9vbkNlbnRlcmluZyJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoQ2YoMCwibWF0LXRhYi1oZWFkZXIiLDAsMSksUmYoImluZGV4Rm9jdXNlZCIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uX2ZvY3VzQ2hhbmdlZChlKX0pKSgic2VsZWN0Rm9jdXNlZEluZGV4IiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5zZWxlY3RlZEluZGV4PWV9KSksSG0oMix0aiw0LDE0LCJkaXYiLDIpLE1mKCksQ2YoMywiZGl2IiwzLDQpLEhtKDUsZWosMSw5LCJtYXQtdGFiLWJvZHkiLDUpLE1mKCkpLDImZSYmKGJmKCJzZWxlY3RlZEluZGV4IixuLnNlbGVjdGVkSW5kZXh8fDApKCJkaXNhYmxlUmlwcGxlIixuLmRpc2FibGVSaXBwbGUpKCJkaXNhYmxlUGFnaW5hdGlvbiIsbi5kaXNhYmxlUGFnaW5hdGlvbiksRGMoMiksYmYoIm5nRm9yT2YiLG4uX3RhYnMpLERjKDEpLGN1KCJfbWF0LWFuaW1hdGlvbi1ub29wYWJsZSIsIk5vb3BBbmltYXRpb25zIj09PW4uX2FuaW1hdGlvbk1vZGUpLERjKDIpLGJmKCJuZ0Zvck9mIixuLl90YWJzKSl9LGRpcmVjdGl2ZXM6ZnVuY3Rpb24oKXtyZXR1cm5bRWoseHYsa2osbUwsdUYsUHYsdUIsX2pdfSxzdHlsZXM6WyIubWF0LXRhYi1ncm91cHtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21heC13aWR0aDoxMDAlfS5tYXQtdGFiLWdyb3VwLm1hdC10YWItZ3JvdXAtaW52ZXJ0ZWQtaGVhZGVye2ZsZXgtZGlyZWN0aW9uOmNvbHVtbi1yZXZlcnNlfS5tYXQtdGFiLWxhYmVse2hlaWdodDo0OHB4O3BhZGRpbmc6MCAyNHB4O2N1cnNvcjpwb2ludGVyO2JveC1zaXppbmc6Ym9yZGVyLWJveDtvcGFjaXR5Oi42O21pbi13aWR0aDoxNjBweDt0ZXh0LWFsaWduOmNlbnRlcjtkaXNwbGF5OmlubGluZS1mbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO3doaXRlLXNwYWNlOm5vd3JhcDtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXRhYi1sYWJlbDpmb2N1c3tvdXRsaW5lOm5vbmV9Lm1hdC10YWItbGFiZWw6Zm9jdXM6bm90KC5tYXQtdGFiLWRpc2FibGVkKXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXRhYi1sYWJlbDpmb2N1c3tvdXRsaW5lOmRvdHRlZCAycHg7b3V0bGluZS1vZmZzZXQ6LTJweH0ubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVke2N1cnNvcjpkZWZhdWx0fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZHtvcGFjaXR5Oi41fS5tYXQtdGFiLWxhYmVsIC5tYXQtdGFiLWxhYmVsLWNvbnRlbnR7ZGlzcGxheTppbmxpbmUtZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjt3aGl0ZS1zcGFjZTpub3dyYXB9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXRhYi1sYWJlbHtvcGFjaXR5OjF9QG1lZGlhKG1heC13aWR0aDogNTk5cHgpey5tYXQtdGFiLWxhYmVse3BhZGRpbmc6MCAxMnB4fX1AbWVkaWEobWF4LXdpZHRoOiA5NTlweCl7Lm1hdC10YWItbGFiZWx7cGFkZGluZzowIDEycHh9fS5tYXQtdGFiLWdyb3VwW21hdC1zdHJldGNoLXRhYnNdPi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1sYWJlbHtmbGV4LWJhc2lzOjA7ZmxleC1ncm93OjF9Lm1hdC10YWItYm9keS13cmFwcGVye3Bvc2l0aW9uOnJlbGF0aXZlO292ZXJmbG93OmhpZGRlbjtkaXNwbGF5OmZsZXg7dHJhbnNpdGlvbjpoZWlnaHQgNTAwbXMgY3ViaWMtYmV6aWVyKDAuMzUsIDAsIDAuMjUsIDEpfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZS5tYXQtdGFiLWJvZHktd3JhcHBlcnt0cmFuc2l0aW9uOm5vbmU7YW5pbWF0aW9uOm5vbmV9Lm1hdC10YWItYm9keXt0b3A6MDtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MDtwb3NpdGlvbjphYnNvbHV0ZTtkaXNwbGF5OmJsb2NrO292ZXJmbG93OmhpZGRlbjtvdXRsaW5lOjA7ZmxleC1iYXNpczoxMDAlfS5tYXQtdGFiLWJvZHkubWF0LXRhYi1ib2R5LWFjdGl2ZXtwb3NpdGlvbjpyZWxhdGl2ZTtvdmVyZmxvdy14OmhpZGRlbjtvdmVyZmxvdy15OmF1dG87ei1pbmRleDoxO2ZsZXgtZ3JvdzoxfS5tYXQtdGFiLWdyb3VwLm1hdC10YWItZ3JvdXAtZHluYW1pYy1oZWlnaHQgLm1hdC10YWItYm9keS5tYXQtdGFiLWJvZHktYWN0aXZle292ZXJmbG93LXk6aGlkZGVufVxuIl0sZW5jYXBzdWxhdGlvbjoyfSksUGouY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpLaH0se3R5cGU6T2J9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltDal19LHt0eXBlOkJyfV19LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbY2tdfV19XSxQai5wcm9wRGVjb3JhdG9ycz17X2FsbFRhYnM6W3t0eXBlOm9yLGFyZ3M6W2dqLHtkZXNjZW5kYW50czohMH1dfV0sX3RhYkJvZHlXcmFwcGVyOlt7dHlwZTphcixhcmdzOlsidGFiQm9keVdyYXBwZXIiXX1dLF90YWJIZWFkZXI6W3t0eXBlOmFyLGFyZ3M6WyJ0YWJIZWFkZXIiXX1dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFBqLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Im1hdC10YWItZ3JvdXAiLGV4cG9ydEFzOiJtYXRUYWJHcm91cCIsdGVtcGxhdGU6JzxtYXQtdGFiLWhlYWRlciAjdGFiSGVhZGVyXG4gICAgICAgICAgICAgICBbc2VsZWN0ZWRJbmRleF09InNlbGVjdGVkSW5kZXggfHwgMCJcbiAgICAgICAgICAgICAgIFtkaXNhYmxlUmlwcGxlXT0iZGlzYWJsZVJpcHBsZSJcbiAgICAgICAgICAgICAgIFtkaXNhYmxlUGFnaW5hdGlvbl09ImRpc2FibGVQYWdpbmF0aW9uIlxuICAgICAgICAgICAgICAgKGluZGV4Rm9jdXNlZCk9Il9mb2N1c0NoYW5nZWQoJGV2ZW50KSJcbiAgICAgICAgICAgICAgIChzZWxlY3RGb2N1c2VkSW5kZXgpPSJzZWxlY3RlZEluZGV4ID0gJGV2ZW50Ij5cbiAgPGRpdiBjbGFzcz0ibWF0LXRhYi1sYWJlbCBtYXQtZm9jdXMtaW5kaWNhdG9yIiByb2xlPSJ0YWIiIG1hdFRhYkxhYmVsV3JhcHBlciBtYXQtcmlwcGxlIGNka01vbml0b3JFbGVtZW50Rm9jdXNcbiAgICAgICAqbmdGb3I9ImxldCB0YWIgb2YgX3RhYnM7IGxldCBpID0gaW5kZXgiXG4gICAgICAgW2lkXT0iX2dldFRhYkxhYmVsSWQoaSkiXG4gICAgICAgW2F0dHIudGFiSW5kZXhdPSJfZ2V0VGFiSW5kZXgodGFiLCBpKSJcbiAgICAgICBbYXR0ci5hcmlhLXBvc2luc2V0XT0iaSArIDEiXG4gICAgICAgW2F0dHIuYXJpYS1zZXRzaXplXT0iX3RhYnMubGVuZ3RoIlxuICAgICAgIFthdHRyLmFyaWEtY29udHJvbHNdPSJfZ2V0VGFiQ29udGVudElkKGkpIlxuICAgICAgIFthdHRyLmFyaWEtc2VsZWN0ZWRdPSJzZWxlY3RlZEluZGV4ID09IGkiXG4gICAgICAgW2F0dHIuYXJpYS1sYWJlbF09InRhYi5hcmlhTGFiZWwgfHwgbnVsbCJcbiAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPSIoIXRhYi5hcmlhTGFiZWwgJiYgdGFiLmFyaWFMYWJlbGxlZGJ5KSA/IHRhYi5hcmlhTGFiZWxsZWRieSA6IG51bGwiXG4gICAgICAgW2NsYXNzLm1hdC10YWItbGFiZWwtYWN0aXZlXT0ic2VsZWN0ZWRJbmRleCA9PSBpIlxuICAgICAgIFtkaXNhYmxlZF09InRhYi5kaXNhYmxlZCJcbiAgICAgICBbbWF0UmlwcGxlRGlzYWJsZWRdPSJ0YWIuZGlzYWJsZWQgfHwgZGlzYWJsZVJpcHBsZSJcbiAgICAgICAoY2xpY2spPSJfaGFuZGxlQ2xpY2sodGFiLCB0YWJIZWFkZXIsIGkpIlxuICAgICAgIChjZGtGb2N1c0NoYW5nZSk9Il90YWJGb2N1c0NoYW5nZWQoJGV2ZW50LCBpKSI+XG5cblxuICAgIDxkaXYgY2xhc3M9Im1hdC10YWItbGFiZWwtY29udGVudCI+XG4gICAgICBceDNjIS0tIElmIHRoZXJlIGlzIGEgbGFiZWwgdGVtcGxhdGUsIHVzZSBpdC4gLS1ceDNlXG4gICAgICA8bmctdGVtcGxhdGUgW25nSWZdPSJ0YWIudGVtcGxhdGVMYWJlbCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbY2RrUG9ydGFsT3V0bGV0XT0idGFiLnRlbXBsYXRlTGFiZWwiPjwvbmctdGVtcGxhdGU+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICBceDNjIS0tIElmIHRoZXJlIGlzIG5vdCBhIGxhYmVsIHRlbXBsYXRlLCBmYWxsIGJhY2sgdG8gdGhlIHRleHQgbGFiZWwuIC0tXHgzZVxuICAgICAgPG5nLXRlbXBsYXRlIFtuZ0lmXT0iIXRhYi50ZW1wbGF0ZUxhYmVsIj57e3RhYi50ZXh0TGFiZWx9fTwvbmctdGVtcGxhdGU+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9tYXQtdGFiLWhlYWRlcj5cblxuPGRpdlxuICBjbGFzcz0ibWF0LXRhYi1ib2R5LXdyYXBwZXIiXG4gIFtjbGFzcy5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZV09Il9hbmltYXRpb25Nb2RlID09PSBcJ05vb3BBbmltYXRpb25zXCciXG4gICN0YWJCb2R5V3JhcHBlcj5cbiAgPG1hdC10YWItYm9keSByb2xlPSJ0YWJwYW5lbCJcbiAgICAgICAgICAgICAgICpuZ0Zvcj0ibGV0IHRhYiBvZiBfdGFiczsgbGV0IGkgPSBpbmRleCJcbiAgICAgICAgICAgICAgIFtpZF09Il9nZXRUYWJDb250ZW50SWQoaSkiXG4gICAgICAgICAgICAgICBbYXR0ci50YWJpbmRleF09Iihjb250ZW50VGFiSW5kZXggIT0gbnVsbCAmJiBzZWxlY3RlZEluZGV4ID09PSBpKSA/IGNvbnRlbnRUYWJJbmRleCA6IG51bGwiXG4gICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPSJfZ2V0VGFiTGFiZWxJZChpKSJcbiAgICAgICAgICAgICAgIFtjbGFzcy5tYXQtdGFiLWJvZHktYWN0aXZlXT0ic2VsZWN0ZWRJbmRleCA9PT0gaSJcbiAgICAgICAgICAgICAgIFtjb250ZW50XT0idGFiLmNvbnRlbnQhIlxuICAgICAgICAgICAgICAgW3Bvc2l0aW9uXT0idGFiLnBvc2l0aW9uISJcbiAgICAgICAgICAgICAgIFtvcmlnaW5dPSJ0YWIub3JpZ2luIlxuICAgICAgICAgICAgICAgW2FuaW1hdGlvbkR1cmF0aW9uXT0iYW5pbWF0aW9uRHVyYXRpb24iXG4gICAgICAgICAgICAgICAoX29uQ2VudGVyZWQpPSJfcmVtb3ZlVGFiQm9keVdyYXBwZXJIZWlnaHQoKSJcbiAgICAgICAgICAgICAgIChfb25DZW50ZXJpbmcpPSJfc2V0VGFiQm9keVdyYXBwZXJIZWlnaHQoJGV2ZW50KSI+XG4gIDwvbWF0LXRhYi1ib2R5PlxuPC9kaXY+XG4nLGVuY2Fwc3VsYXRpb246V24uTm9uZSxjaGFuZ2VEZXRlY3Rpb246am4uRGVmYXVsdCxpbnB1dHM6WyJjb2xvciIsImRpc2FibGVSaXBwbGUiXSxwcm92aWRlcnM6W3twcm92aWRlOnVqLHVzZUV4aXN0aW5nOlBqfV0saG9zdDp7Y2xhc3M6Im1hdC10YWItZ3JvdXAiLCJbY2xhc3MubWF0LXRhYi1ncm91cC1keW5hbWljLWhlaWdodF0iOiJkeW5hbWljSGVpZ2h0IiwiW2NsYXNzLm1hdC10YWItZ3JvdXAtaW52ZXJ0ZWQtaGVhZGVyXSI6J2hlYWRlclBvc2l0aW9uID09PSAiYmVsb3ciJ30sc3R5bGVzOlsiLm1hdC10YWItZ3JvdXB7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttYXgtd2lkdGg6MTAwJX0ubWF0LXRhYi1ncm91cC5tYXQtdGFiLWdyb3VwLWludmVydGVkLWhlYWRlcntmbGV4LWRpcmVjdGlvbjpjb2x1bW4tcmV2ZXJzZX0ubWF0LXRhYi1sYWJlbHtoZWlnaHQ6NDhweDtwYWRkaW5nOjAgMjRweDtjdXJzb3I6cG9pbnRlcjtib3gtc2l6aW5nOmJvcmRlci1ib3g7b3BhY2l0eTouNjttaW4td2lkdGg6MTYwcHg7dGV4dC1hbGlnbjpjZW50ZXI7ZGlzcGxheTppbmxpbmUtZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjt3aGl0ZS1zcGFjZTpub3dyYXA7cG9zaXRpb246cmVsYXRpdmV9Lm1hdC10YWItbGFiZWw6Zm9jdXN7b3V0bGluZTpub25lfS5tYXQtdGFiLWxhYmVsOmZvY3VzOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC10YWItbGFiZWw6Zm9jdXN7b3V0bGluZTpkb3R0ZWQgMnB4O291dGxpbmUtb2Zmc2V0Oi0ycHh9Lm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZHtjdXJzb3I6ZGVmYXVsdH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWR7b3BhY2l0eTouNX0ubWF0LXRhYi1sYWJlbCAubWF0LXRhYi1sYWJlbC1jb250ZW50e2Rpc3BsYXk6aW5saW5lLWZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7d2hpdGUtc3BhY2U6bm93cmFwfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC10YWItbGFiZWx7b3BhY2l0eToxfUBtZWRpYShtYXgtd2lkdGg6IDU5OXB4KXsubWF0LXRhYi1sYWJlbHtwYWRkaW5nOjAgMTJweH19QG1lZGlhKG1heC13aWR0aDogOTU5cHgpey5tYXQtdGFiLWxhYmVse3BhZGRpbmc6MCAxMnB4fX0ubWF0LXRhYi1ncm91cFttYXQtc3RyZXRjaC10YWJzXT4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItbGFiZWx7ZmxleC1iYXNpczowO2ZsZXgtZ3JvdzoxfS5tYXQtdGFiLWJvZHktd3JhcHBlcntwb3NpdGlvbjpyZWxhdGl2ZTtvdmVyZmxvdzpoaWRkZW47ZGlzcGxheTpmbGV4O3RyYW5zaXRpb246aGVpZ2h0IDUwMG1zIGN1YmljLWJlemllcigwLjM1LCAwLCAwLjI1LCAxKX0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LXRhYi1ib2R5LXdyYXBwZXJ7dHJhbnNpdGlvbjpub25lO2FuaW1hdGlvbjpub25lfS5tYXQtdGFiLWJvZHl7dG9wOjA7bGVmdDowO3JpZ2h0OjA7Ym90dG9tOjA7cG9zaXRpb246YWJzb2x1dGU7ZGlzcGxheTpibG9jaztvdmVyZmxvdzpoaWRkZW47b3V0bGluZTowO2ZsZXgtYmFzaXM6MTAwJX0ubWF0LXRhYi1ib2R5Lm1hdC10YWItYm9keS1hY3RpdmV7cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3cteDpoaWRkZW47b3ZlcmZsb3cteTphdXRvO3otaW5kZXg6MTtmbGV4LWdyb3c6MX0ubWF0LXRhYi1ncm91cC5tYXQtdGFiLWdyb3VwLWR5bmFtaWMtaGVpZ2h0IC5tYXQtdGFiLWJvZHkubWF0LXRhYi1ib2R5LWFjdGl2ZXtvdmVyZmxvdy15OmhpZGRlbn1cbiJdfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6S2h9LHt0eXBlOk9ifSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbQ2pdfSx7dHlwZTpCcn1dfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W2NrXX1dfV19KSx7X2FsbFRhYnM6W3t0eXBlOm9yLGFyZ3M6W2dqLHtkZXNjZW5kYW50czohMH1dfV0sX3RhYkJvZHlXcmFwcGVyOlt7dHlwZTphcixhcmdzOlsidGFiQm9keVdyYXBwZXIiXX1dLF90YWJIZWFkZXI6W3t0eXBlOmFyLGFyZ3M6WyJ0YWJIZWFkZXIiXX1dfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCB3aj16RihjbGFzc3t9KTtjbGFzcyBraiBleHRlbmRzIHdqe2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy5lbGVtZW50UmVmPXR9Zm9jdXMoKXt0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpfWdldE9mZnNldExlZnQoKXtyZXR1cm4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0TGVmdH1nZXRPZmZzZXRXaWR0aCgpe3JldHVybiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aH19a2ouybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGtqKShnZihLaCkpfSxrai7JtWRpcj1obyh7dHlwZTpraixzZWxlY3RvcnM6W1siIiwibWF0VGFiTGFiZWxXcmFwcGVyIiwiIl1dLGhvc3RWYXJzOjMsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsyJmUmJih5bSgiYXJpYS1kaXNhYmxlZCIsISFuLmRpc2FibGVkKSxjdSgibWF0LXRhYi1kaXNhYmxlZCIsbi5kaXNhYmxlZCkpfSxpbnB1dHM6e2Rpc2FibGVkOiJkaXNhYmxlZCJ9LGZlYXR1cmVzOltRcF19KSxrai5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOktofV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihraixbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJbbWF0VGFiTGFiZWxXcmFwcGVyXSIsaW5wdXRzOlsiZGlzYWJsZWQiXSxob3N0OnsiW2NsYXNzLm1hdC10YWItZGlzYWJsZWRdIjoiZGlzYWJsZWQiLCJbYXR0ci5hcmlhLWRpc2FibGVkXSI6IiEhZGlzYWJsZWQifX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOktofV19KSxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IFNqPWJIKHtwYXNzaXZlOiEwfSk7Y2xhc3MgRGp7Y29uc3RydWN0b3IodCxlLG4sbyxpLGEscil7dGhpcy5fZWxlbWVudFJlZj10LHRoaXMuX2NoYW5nZURldGVjdG9yUmVmPWUsdGhpcy5fdmlld3BvcnRSdWxlcj1uLHRoaXMuX2Rpcj1vLHRoaXMuX25nWm9uZT1pLHRoaXMuX3BsYXRmb3JtPWEsdGhpcy5fYW5pbWF0aW9uTW9kZT1yLHRoaXMuX3Njcm9sbERpc3RhbmNlPTAsdGhpcy5fc2VsZWN0ZWRJbmRleENoYW5nZWQ9ITEsdGhpcy5fZGVzdHJveWVkPW5ldyBCLHRoaXMuX3Nob3dQYWdpbmF0aW9uQ29udHJvbHM9ITEsdGhpcy5fZGlzYWJsZVNjcm9sbEFmdGVyPSEwLHRoaXMuX2Rpc2FibGVTY3JvbGxCZWZvcmU9ITAsdGhpcy5fc3RvcFNjcm9sbGluZz1uZXcgQix0aGlzLmRpc2FibGVQYWdpbmF0aW9uPSExLHRoaXMuX3NlbGVjdGVkSW5kZXg9MCx0aGlzLnNlbGVjdEZvY3VzZWRJbmRleD1uZXcgU3ksdGhpcy5pbmRleEZvY3VzZWQ9bmV3IFN5LGkucnVuT3V0c2lkZUFuZ3VsYXIoKCgpPT57bGUodC5uYXRpdmVFbGVtZW50LCJtb3VzZWxlYXZlIikucGlwZShqZSh0aGlzLl9kZXN0cm95ZWQpKS5zdWJzY3JpYmUoKCgpPT57dGhpcy5fc3RvcEludGVydmFsKCl9KSl9KSl9Z2V0IHNlbGVjdGVkSW5kZXgoKXtyZXR1cm4gdGhpcy5fc2VsZWN0ZWRJbmRleH1zZXQgc2VsZWN0ZWRJbmRleCh0KXt0PW5IKHQpLHRoaXMuX3NlbGVjdGVkSW5kZXghPXQmJih0aGlzLl9zZWxlY3RlZEluZGV4Q2hhbmdlZD0hMCx0aGlzLl9zZWxlY3RlZEluZGV4PXQsdGhpcy5fa2V5TWFuYWdlciYmdGhpcy5fa2V5TWFuYWdlci51cGRhdGVBY3RpdmVJdGVtKHQpKX1uZ0FmdGVyVmlld0luaXQoKXtsZSh0aGlzLl9wcmV2aW91c1BhZ2luYXRvci5uYXRpdmVFbGVtZW50LCJ0b3VjaHN0YXJ0IixTaikucGlwZShqZSh0aGlzLl9kZXN0cm95ZWQpKS5zdWJzY3JpYmUoKCgpPT57dGhpcy5faGFuZGxlUGFnaW5hdG9yUHJlc3MoImJlZm9yZSIpfSkpLGxlKHRoaXMuX25leHRQYWdpbmF0b3IubmF0aXZlRWxlbWVudCwidG91Y2hzdGFydCIsU2opLnBpcGUoamUodGhpcy5fZGVzdHJveWVkKSkuc3Vic2NyaWJlKCgoKT0+e3RoaXMuX2hhbmRsZVBhZ2luYXRvclByZXNzKCJhZnRlciIpfSkpfW5nQWZ0ZXJDb250ZW50SW5pdCgpe2NvbnN0IHQ9dGhpcy5fZGlyP3RoaXMuX2Rpci5jaGFuZ2U6enQoImx0ciIpLGU9dGhpcy5fdmlld3BvcnRSdWxlci5jaGFuZ2UoMTUwKSxuPSgpPT57dGhpcy51cGRhdGVQYWdpbmF0aW9uKCksdGhpcy5fYWxpZ25JbmtCYXJUb1NlbGVjdGVkVGFiKCl9O3RoaXMuX2tleU1hbmFnZXI9bmV3IExIKHRoaXMuX2l0ZW1zKS53aXRoSG9yaXpvbnRhbE9yaWVudGF0aW9uKHRoaXMuX2dldExheW91dERpcmVjdGlvbigpKS53aXRoSG9tZUFuZEVuZCgpLndpdGhXcmFwKCksdGhpcy5fa2V5TWFuYWdlci51cGRhdGVBY3RpdmVJdGVtKHRoaXMuX3NlbGVjdGVkSW5kZXgpLCJ1bmRlZmluZWQiIT10eXBlb2YgcmVxdWVzdEFuaW1hdGlvbkZyYW1lP3JlcXVlc3RBbmltYXRpb25GcmFtZShuKTpuKCkscGUodCxlLHRoaXMuX2l0ZW1zLmNoYW5nZXMpLnBpcGUoamUodGhpcy5fZGVzdHJveWVkKSkuc3Vic2NyaWJlKCgoKT0+e3RoaXMuX25nWm9uZS5ydW4oKCgpPT5Qcm9taXNlLnJlc29sdmUoKS50aGVuKG4pKSksdGhpcy5fa2V5TWFuYWdlci53aXRoSG9yaXpvbnRhbE9yaWVudGF0aW9uKHRoaXMuX2dldExheW91dERpcmVjdGlvbigpKX0pKSx0aGlzLl9rZXlNYW5hZ2VyLmNoYW5nZS5waXBlKGplKHRoaXMuX2Rlc3Ryb3llZCkpLnN1YnNjcmliZSgodD0+e3RoaXMuaW5kZXhGb2N1c2VkLmVtaXQodCksdGhpcy5fc2V0VGFiRm9jdXModCl9KSl9bmdBZnRlckNvbnRlbnRDaGVja2VkKCl7dGhpcy5fdGFiTGFiZWxDb3VudCE9dGhpcy5faXRlbXMubGVuZ3RoJiYodGhpcy51cGRhdGVQYWdpbmF0aW9uKCksdGhpcy5fdGFiTGFiZWxDb3VudD10aGlzLl9pdGVtcy5sZW5ndGgsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCkpLHRoaXMuX3NlbGVjdGVkSW5kZXhDaGFuZ2VkJiYodGhpcy5fc2Nyb2xsVG9MYWJlbCh0aGlzLl9zZWxlY3RlZEluZGV4KSx0aGlzLl9jaGVja1Njcm9sbGluZ0NvbnRyb2xzKCksdGhpcy5fYWxpZ25JbmtCYXJUb1NlbGVjdGVkVGFiKCksdGhpcy5fc2VsZWN0ZWRJbmRleENoYW5nZWQ9ITEsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCkpLHRoaXMuX3Njcm9sbERpc3RhbmNlQ2hhbmdlZCYmKHRoaXMuX3VwZGF0ZVRhYlNjcm9sbFBvc2l0aW9uKCksdGhpcy5fc2Nyb2xsRGlzdGFuY2VDaGFuZ2VkPSExLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpKX1uZ09uRGVzdHJveSgpe3RoaXMuX2Rlc3Ryb3llZC5uZXh0KCksdGhpcy5fZGVzdHJveWVkLmNvbXBsZXRlKCksdGhpcy5fc3RvcFNjcm9sbGluZy5jb21wbGV0ZSgpfV9oYW5kbGVLZXlkb3duKHQpe2lmKCF0SCh0KSlzd2l0Y2godC5rZXlDb2RlKXtjYXNlIFhJOmNhc2UgSkk6dGhpcy5mb2N1c0luZGV4IT09dGhpcy5zZWxlY3RlZEluZGV4JiYodGhpcy5zZWxlY3RGb2N1c2VkSW5kZXguZW1pdCh0aGlzLmZvY3VzSW5kZXgpLHRoaXMuX2l0ZW1TZWxlY3RlZCh0KSk7YnJlYWs7ZGVmYXVsdDp0aGlzLl9rZXlNYW5hZ2VyLm9uS2V5ZG93bih0KX19X29uQ29udGVudENoYW5nZXMoKXtjb25zdCB0PXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC50ZXh0Q29udGVudDt0IT09dGhpcy5fY3VycmVudFRleHRDb250ZW50JiYodGhpcy5fY3VycmVudFRleHRDb250ZW50PXR8fCIiLHRoaXMuX25nWm9uZS5ydW4oKCgpPT57dGhpcy51cGRhdGVQYWdpbmF0aW9uKCksdGhpcy5fYWxpZ25JbmtCYXJUb1NlbGVjdGVkVGFiKCksdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCl9KSkpfXVwZGF0ZVBhZ2luYXRpb24oKXt0aGlzLl9jaGVja1BhZ2luYXRpb25FbmFibGVkKCksdGhpcy5fY2hlY2tTY3JvbGxpbmdDb250cm9scygpLHRoaXMuX3VwZGF0ZVRhYlNjcm9sbFBvc2l0aW9uKCl9Z2V0IGZvY3VzSW5kZXgoKXtyZXR1cm4gdGhpcy5fa2V5TWFuYWdlcj90aGlzLl9rZXlNYW5hZ2VyLmFjdGl2ZUl0ZW1JbmRleDowfXNldCBmb2N1c0luZGV4KHQpe3RoaXMuX2lzVmFsaWRJbmRleCh0KSYmdGhpcy5mb2N1c0luZGV4IT09dCYmdGhpcy5fa2V5TWFuYWdlciYmdGhpcy5fa2V5TWFuYWdlci5zZXRBY3RpdmVJdGVtKHQpfV9pc1ZhbGlkSW5kZXgodCl7aWYoIXRoaXMuX2l0ZW1zKXJldHVybiEwO2NvbnN0IGU9dGhpcy5faXRlbXM/dGhpcy5faXRlbXMudG9BcnJheSgpW3RdOm51bGw7cmV0dXJuISFlJiYhZS5kaXNhYmxlZH1fc2V0VGFiRm9jdXModCl7aWYodGhpcy5fc2hvd1BhZ2luYXRpb25Db250cm9scyYmdGhpcy5fc2Nyb2xsVG9MYWJlbCh0KSx0aGlzLl9pdGVtcyYmdGhpcy5faXRlbXMubGVuZ3RoKXt0aGlzLl9pdGVtcy50b0FycmF5KClbdF0uZm9jdXMoKTtjb25zdCBlPXRoaXMuX3RhYkxpc3RDb250YWluZXIubmF0aXZlRWxlbWVudCxuPXRoaXMuX2dldExheW91dERpcmVjdGlvbigpO2Uuc2Nyb2xsTGVmdD0ibHRyIj09bj8wOmUuc2Nyb2xsV2lkdGgtZS5vZmZzZXRXaWR0aH19X2dldExheW91dERpcmVjdGlvbigpe3JldHVybiB0aGlzLl9kaXImJiJydGwiPT09dGhpcy5fZGlyLnZhbHVlPyJydGwiOiJsdHIifV91cGRhdGVUYWJTY3JvbGxQb3NpdGlvbigpe2lmKHRoaXMuZGlzYWJsZVBhZ2luYXRpb24pcmV0dXJuO2NvbnN0IHQ9dGhpcy5zY3JvbGxEaXN0YW5jZSxlPSJsdHIiPT09dGhpcy5fZ2V0TGF5b3V0RGlyZWN0aW9uKCk/LXQ6dDt0aGlzLl90YWJMaXN0Lm5hdGl2ZUVsZW1lbnQuc3R5bGUudHJhbnNmb3JtPWB0cmFuc2xhdGVYKCR7TWF0aC5yb3VuZChlKX1weClgLCh0aGlzLl9wbGF0Zm9ybS5UUklERU5UfHx0aGlzLl9wbGF0Zm9ybS5FREdFKSYmKHRoaXMuX3RhYkxpc3RDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0PTApfWdldCBzY3JvbGxEaXN0YW5jZSgpe3JldHVybiB0aGlzLl9zY3JvbGxEaXN0YW5jZX1zZXQgc2Nyb2xsRGlzdGFuY2UodCl7dGhpcy5fc2Nyb2xsVG8odCl9X3Njcm9sbEhlYWRlcih0KXtyZXR1cm4gdGhpcy5fc2Nyb2xsVG8odGhpcy5fc2Nyb2xsRGlzdGFuY2UrKCJiZWZvcmUiPT10Py0xOjEpKnRoaXMuX3RhYkxpc3RDb250YWluZXIubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aC8zKX1faGFuZGxlUGFnaW5hdG9yQ2xpY2sodCl7dGhpcy5fc3RvcEludGVydmFsKCksdGhpcy5fc2Nyb2xsSGVhZGVyKHQpfV9zY3JvbGxUb0xhYmVsKHQpe2lmKHRoaXMuZGlzYWJsZVBhZ2luYXRpb24pcmV0dXJuO2NvbnN0IGU9dGhpcy5faXRlbXM/dGhpcy5faXRlbXMudG9BcnJheSgpW3RdOm51bGw7aWYoIWUpcmV0dXJuO2NvbnN0IG49dGhpcy5fdGFiTGlzdENvbnRhaW5lci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoLHtvZmZzZXRMZWZ0Om8sb2Zmc2V0V2lkdGg6aX09ZS5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7bGV0IGEscjsibHRyIj09dGhpcy5fZ2V0TGF5b3V0RGlyZWN0aW9uKCk/KGE9byxyPWEraSk6KHI9dGhpcy5fdGFiTGlzdC5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoLW8sYT1yLWkpO2NvbnN0IHM9dGhpcy5zY3JvbGxEaXN0YW5jZSxsPXRoaXMuc2Nyb2xsRGlzdGFuY2UrbjthPHM/dGhpcy5zY3JvbGxEaXN0YW5jZS09cy1hKzYwOnI+bCYmKHRoaXMuc2Nyb2xsRGlzdGFuY2UrPXItbCs2MCl9X2NoZWNrUGFnaW5hdGlvbkVuYWJsZWQoKXtpZih0aGlzLmRpc2FibGVQYWdpbmF0aW9uKXRoaXMuX3Nob3dQYWdpbmF0aW9uQ29udHJvbHM9ITE7ZWxzZXtjb25zdCB0PXRoaXMuX3RhYkxpc3QubmF0aXZlRWxlbWVudC5zY3JvbGxXaWR0aD50aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7dHx8KHRoaXMuc2Nyb2xsRGlzdGFuY2U9MCksdCE9PXRoaXMuX3Nob3dQYWdpbmF0aW9uQ29udHJvbHMmJnRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpLHRoaXMuX3Nob3dQYWdpbmF0aW9uQ29udHJvbHM9dH19X2NoZWNrU2Nyb2xsaW5nQ29udHJvbHMoKXt0aGlzLmRpc2FibGVQYWdpbmF0aW9uP3RoaXMuX2Rpc2FibGVTY3JvbGxBZnRlcj10aGlzLl9kaXNhYmxlU2Nyb2xsQmVmb3JlPSEwOih0aGlzLl9kaXNhYmxlU2Nyb2xsQmVmb3JlPTA9PXRoaXMuc2Nyb2xsRGlzdGFuY2UsdGhpcy5fZGlzYWJsZVNjcm9sbEFmdGVyPXRoaXMuc2Nyb2xsRGlzdGFuY2U9PXRoaXMuX2dldE1heFNjcm9sbERpc3RhbmNlKCksdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCkpfV9nZXRNYXhTY3JvbGxEaXN0YW5jZSgpe3JldHVybiB0aGlzLl90YWJMaXN0Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsV2lkdGgtdGhpcy5fdGFiTGlzdENvbnRhaW5lci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRofHwwfV9hbGlnbklua0JhclRvU2VsZWN0ZWRUYWIoKXtjb25zdCB0PXRoaXMuX2l0ZW1zJiZ0aGlzLl9pdGVtcy5sZW5ndGg/dGhpcy5faXRlbXMudG9BcnJheSgpW3RoaXMuc2VsZWN0ZWRJbmRleF06bnVsbCxlPXQ/dC5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ6bnVsbDtlP3RoaXMuX2lua0Jhci5hbGlnblRvRWxlbWVudChlKTp0aGlzLl9pbmtCYXIuaGlkZSgpfV9zdG9wSW50ZXJ2YWwoKXt0aGlzLl9zdG9wU2Nyb2xsaW5nLm5leHQoKX1faGFuZGxlUGFnaW5hdG9yUHJlc3ModCxlKXtlJiZudWxsIT1lLmJ1dHRvbiYmMCE9PWUuYnV0dG9ufHwodGhpcy5fc3RvcEludGVydmFsKCksZGUoNjUwLDEwMCkucGlwZShqZShwZSh0aGlzLl9zdG9wU2Nyb2xsaW5nLHRoaXMuX2Rlc3Ryb3llZCkpKS5zdWJzY3JpYmUoKCgpPT57Y29uc3R7bWF4U2Nyb2xsRGlzdGFuY2U6ZSxkaXN0YW5jZTpufT10aGlzLl9zY3JvbGxIZWFkZXIodCk7KDA9PT1ufHxuPj1lKSYmdGhpcy5fc3RvcEludGVydmFsKCl9KSkpfV9zY3JvbGxUbyh0KXtpZih0aGlzLmRpc2FibGVQYWdpbmF0aW9uKXJldHVybnttYXhTY3JvbGxEaXN0YW5jZTowLGRpc3RhbmNlOjB9O2NvbnN0IGU9dGhpcy5fZ2V0TWF4U2Nyb2xsRGlzdGFuY2UoKTtyZXR1cm4gdGhpcy5fc2Nyb2xsRGlzdGFuY2U9TWF0aC5tYXgoMCxNYXRoLm1pbihlLHQpKSx0aGlzLl9zY3JvbGxEaXN0YW5jZUNoYW5nZWQ9ITAsdGhpcy5fY2hlY2tTY3JvbGxpbmdDb250cm9scygpLHttYXhTY3JvbGxEaXN0YW5jZTplLGRpc3RhbmNlOnRoaXMuX3Njcm9sbERpc3RhbmNlfX19RGouybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fERqKShnZihLaCksZ2YoT2IpLGdmKFFMKSxnZih2Riw4KSxnZihtQyksZ2YoY0gpLGdmKGNrLDgpKX0sRGouybVkaXI9aG8oe3R5cGU6RGosaW5wdXRzOntkaXNhYmxlUGFnaW5hdGlvbjoiZGlzYWJsZVBhZ2luYXRpb24ifX0pLERqLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6S2h9LHt0eXBlOk9ifSx7dHlwZTpRTH0se3R5cGU6dkYsZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX0se3R5cGU6bUN9LHt0eXBlOmNIfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W2NrXX1dfV0sRGoucHJvcERlY29yYXRvcnM9e2Rpc2FibGVQYWdpbmF0aW9uOlt7dHlwZTpSX31dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKERqLFt7dHlwZTprX31dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpLaH0se3R5cGU6T2J9LHt0eXBlOlFMfSx7dHlwZTp2RixkZWNvcmF0b3JzOlt7dHlwZTpCcn1dfSx7dHlwZTptQ30se3R5cGU6Y0h9LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbY2tdfV19XX0pLHtkaXNhYmxlUGFnaW5hdGlvbjpbe3R5cGU6Ul99XX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgUmogZXh0ZW5kcyBEantjb25zdHJ1Y3Rvcih0LGUsbixvLGksYSxyKXtzdXBlcih0LGUsbixvLGksYSxyKSx0aGlzLl9kaXNhYmxlUmlwcGxlPSExfWdldCBkaXNhYmxlUmlwcGxlKCl7cmV0dXJuIHRoaXMuX2Rpc2FibGVSaXBwbGV9c2V0IGRpc2FibGVSaXBwbGUodCl7dGhpcy5fZGlzYWJsZVJpcHBsZT1lSCh0KX1faXRlbVNlbGVjdGVkKHQpe3QucHJldmVudERlZmF1bHQoKX19UmouybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFJqKShnZihLaCksZ2YoT2IpLGdmKFFMKSxnZih2Riw4KSxnZihtQyksZ2YoY0gpLGdmKGNrLDgpKX0sUmouybVkaXI9aG8oe3R5cGU6UmosaW5wdXRzOntkaXNhYmxlUmlwcGxlOiJkaXNhYmxlUmlwcGxlIn0sZmVhdHVyZXM6W1FwXX0pLFJqLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6S2h9LHt0eXBlOk9ifSx7dHlwZTpRTH0se3R5cGU6dkYsZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX0se3R5cGU6bUN9LHt0eXBlOmNIfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W2NrXX1dfV0sUmoucHJvcERlY29yYXRvcnM9e2Rpc2FibGVSaXBwbGU6W3t0eXBlOlJffV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoUmosW3t0eXBlOmtffV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOktofSx7dHlwZTpPYn0se3R5cGU6UUx9LHt0eXBlOnZGLGRlY29yYXRvcnM6W3t0eXBlOkJyfV19LHt0eXBlOm1DfSx7dHlwZTpjSH0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltja119XX1dfSkse2Rpc2FibGVSaXBwbGU6W3t0eXBlOlJffV19KTtjbGFzcyBFaiBleHRlbmRzIFJqe2NvbnN0cnVjdG9yKHQsZSxuLG8saSxhLHIpe3N1cGVyKHQsZSxuLG8saSxhLHIpfX1Fai7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8RWopKGdmKEtoKSxnZihPYiksZ2YoUUwpLGdmKHZGLDgpLGdmKG1DKSxnZihjSCksZ2YoY2ssOCkpfSxFai7JtWNtcD1zbyh7dHlwZTpFaixzZWxlY3RvcnM6W1sibWF0LXRhYi1oZWFkZXIiXV0sY29udGVudFF1ZXJpZXM6ZnVuY3Rpb24gdChlLG4sbyl7aWYoMSZlJiZqeShvLGtqLDQpLDImZSl7bGV0IHQ7QnkodD1VeSgpKSYmKG4uX2l0ZW1zPXQpfX0sdmlld1F1ZXJ5OmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJihWeShsaiw3KSxWeShuaiw3KSxWeShvaiw3KSxWeShpaiw1KSxWeShhaiw1KSksMiZlKXtsZXQgdDtCeSh0PVV5KCkpJiYobi5faW5rQmFyPXQuZmlyc3QpLEJ5KHQ9VXkoKSkmJihuLl90YWJMaXN0Q29udGFpbmVyPXQuZmlyc3QpLEJ5KHQ9VXkoKSkmJihuLl90YWJMaXN0PXQuZmlyc3QpLEJ5KHQ9VXkoKSkmJihuLl9uZXh0UGFnaW5hdG9yPXQuZmlyc3QpLEJ5KHQ9VXkoKSkmJihuLl9wcmV2aW91c1BhZ2luYXRvcj10LmZpcnN0KX19LGhvc3RBdHRyczpbMSwibWF0LXRhYi1oZWFkZXIiXSxob3N0VmFyczo0LGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MiZlJiZjdSgibWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jb250cm9scy1lbmFibGVkIixuLl9zaG93UGFnaW5hdGlvbkNvbnRyb2xzKSgibWF0LXRhYi1oZWFkZXItcnRsIiwicnRsIj09bi5fZ2V0TGF5b3V0RGlyZWN0aW9uKCkpfSxpbnB1dHM6e3NlbGVjdGVkSW5kZXg6InNlbGVjdGVkSW5kZXgifSxvdXRwdXRzOntzZWxlY3RGb2N1c2VkSW5kZXg6InNlbGVjdEZvY3VzZWRJbmRleCIsaW5kZXhGb2N1c2VkOiJpbmRleEZvY3VzZWQifSxmZWF0dXJlczpbUXBdLG5nQ29udGVudFNlbGVjdG9yczpHVixkZWNsczoxMyx2YXJzOjgsY29uc3RzOltbImFyaWEtaGlkZGVuIiwidHJ1ZSIsIm1hdC1yaXBwbGUiLCIiLDEsIm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24iLCJtYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWJlZm9yZSIsIm1hdC1lbGV2YXRpb24tejQiLDMsIm1hdFJpcHBsZURpc2FibGVkIiwiY2xpY2siLCJtb3VzZWRvd24iLCJ0b3VjaGVuZCJdLFsicHJldmlvdXNQYWdpbmF0b3IiLCIiXSxbMSwibWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uIl0sWzEsIm1hdC10YWItbGFiZWwtY29udGFpbmVyIiwzLCJrZXlkb3duIl0sWyJ0YWJMaXN0Q29udGFpbmVyIiwiIl0sWyJyb2xlIiwidGFibGlzdCIsMSwibWF0LXRhYi1saXN0IiwzLCJjZGtPYnNlcnZlQ29udGVudCJdLFsidGFiTGlzdCIsIiJdLFsxLCJtYXQtdGFiLWxhYmVscyJdLFsiYXJpYS1oaWRkZW4iLCJ0cnVlIiwibWF0LXJpcHBsZSIsIiIsMSwibWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbiIsIm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tYWZ0ZXIiLCJtYXQtZWxldmF0aW9uLXo0IiwzLCJtYXRSaXBwbGVEaXNhYmxlZCIsIm1vdXNlZG93biIsImNsaWNrIiwidG91Y2hlbmQiXSxbIm5leHRQYWdpbmF0b3IiLCIiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKEhmKCksQ2YoMCwiZGl2IiwwLDEpLFJmKCJjbGljayIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5faGFuZGxlUGFnaW5hdG9yQ2xpY2soImJlZm9yZSIpfSkpKCJtb3VzZWRvd24iLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLl9oYW5kbGVQYWdpbmF0b3JQcmVzcygiYmVmb3JlIixlKX0pKSgidG91Y2hlbmQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4uX3N0b3BJbnRlcnZhbCgpfSkpLHZmKDIsImRpdiIsMiksTWYoKSxDZigzLCJkaXYiLDMsNCksUmYoImtleWRvd24iLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLl9oYW5kbGVLZXlkb3duKGUpfSkpLENmKDUsImRpdiIsNSw2KSxSZigiY2RrT2JzZXJ2ZUNvbnRlbnQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4uX29uQ29udGVudENoYW5nZXMoKX0pKSxDZig3LCJkaXYiLDcpLEZmKDgpLE1mKCksdmYoOSwibWF0LWluay1iYXIiKSxNZigpLE1mKCksQ2YoMTAsImRpdiIsOCw5KSxSZigibW91c2Vkb3duIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5faGFuZGxlUGFnaW5hdG9yUHJlc3MoImFmdGVyIixlKX0pKSgiY2xpY2siLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4uX2hhbmRsZVBhZ2luYXRvckNsaWNrKCJhZnRlciIpfSkpKCJ0b3VjaGVuZCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5fc3RvcEludGVydmFsKCl9KSksdmYoMTIsImRpdiIsMiksTWYoKSksMiZlJiYoY3UoIm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWQiLG4uX2Rpc2FibGVTY3JvbGxCZWZvcmUpLGJmKCJtYXRSaXBwbGVEaXNhYmxlZCIsbi5fZGlzYWJsZVNjcm9sbEJlZm9yZXx8bi5kaXNhYmxlUmlwcGxlKSxEYyg1KSxjdSgiX21hdC1hbmltYXRpb24tbm9vcGFibGUiLCJOb29wQW5pbWF0aW9ucyI9PT1uLl9hbmltYXRpb25Nb2RlKSxEYyg1KSxjdSgibWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZCIsbi5fZGlzYWJsZVNjcm9sbEFmdGVyKSxiZigibWF0UmlwcGxlRGlzYWJsZWQiLG4uX2Rpc2FibGVTY3JvbGxBZnRlcnx8bi5kaXNhYmxlUmlwcGxlKSl9LGRpcmVjdGl2ZXM6W21MLFBILGxqXSxzdHlsZXM6WycubWF0LXRhYi1oZWFkZXJ7ZGlzcGxheTpmbGV4O292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZTtmbGV4LXNocmluazowfS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uey13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5Om5vbmU7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7bWluLXdpZHRoOjMycHg7Y3Vyc29yOnBvaW50ZXI7ei1pbmRleDoyOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDt0b3VjaC1hY3Rpb246bm9uZX0ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jb250cm9scy1lbmFibGVkIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9ue2Rpc3BsYXk6ZmxleH0ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1iZWZvcmUsLm1hdC10YWItaGVhZGVyLXJ0bCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1hZnRlcntwYWRkaW5nLWxlZnQ6NHB4fS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWJlZm9yZSAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLC5tYXQtdGFiLWhlYWRlci1ydGwgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tYWZ0ZXIgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbnt0cmFuc2Zvcm06cm90YXRlKC0xMzVkZWcpfS5tYXQtdGFiLWhlYWRlci1ydGwgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tYmVmb3JlLC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWFmdGVye3BhZGRpbmctcmlnaHQ6NHB4fS5tYXQtdGFiLWhlYWRlci1ydGwgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tYmVmb3JlIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tYWZ0ZXIgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbnt0cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKX0ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9ue2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItd2lkdGg6MnB4IDJweCAwIDA7Y29udGVudDoiIjtoZWlnaHQ6OHB4O3dpZHRoOjhweH0ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZHtib3gtc2hhZG93Om5vbmU7Y3Vyc29yOmRlZmF1bHR9Lm1hdC10YWItbGlzdHtmbGV4LWdyb3c6MTtwb3NpdGlvbjpyZWxhdGl2ZTt0cmFuc2l0aW9uOnRyYW5zZm9ybSA1MDBtcyBjdWJpYy1iZXppZXIoMC4zNSwgMCwgMC4yNSwgMSl9Lm1hdC1pbmstYmFye3Bvc2l0aW9uOmFic29sdXRlO2JvdHRvbTowO2hlaWdodDoycHg7dHJhbnNpdGlvbjo1MDBtcyBjdWJpYy1iZXppZXIoMC4zNSwgMCwgMC4yNSwgMSl9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlLm1hdC1pbmstYmFye3RyYW5zaXRpb246bm9uZTthbmltYXRpb246bm9uZX0ubWF0LXRhYi1ncm91cC1pbnZlcnRlZC1oZWFkZXIgLm1hdC1pbmstYmFye2JvdHRvbTphdXRvO3RvcDowfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1pbmstYmFye291dGxpbmU6c29saWQgMnB4O2hlaWdodDowfS5tYXQtdGFiLWxhYmVsc3tkaXNwbGF5OmZsZXh9W21hdC1hbGlnbi10YWJzPWNlbnRlcl0+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWxhYmVsc3tqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfVttYXQtYWxpZ24tdGFicz1lbmRdPi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1sYWJlbHN7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kfS5tYXQtdGFiLWxhYmVsLWNvbnRhaW5lcntkaXNwbGF5OmZsZXg7ZmxleC1ncm93OjE7b3ZlcmZsb3c6aGlkZGVuO3otaW5kZXg6MX0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LXRhYi1saXN0e3RyYW5zaXRpb246bm9uZTthbmltYXRpb246bm9uZX0ubWF0LXRhYi1sYWJlbHtoZWlnaHQ6NDhweDtwYWRkaW5nOjAgMjRweDtjdXJzb3I6cG9pbnRlcjtib3gtc2l6aW5nOmJvcmRlci1ib3g7b3BhY2l0eTouNjttaW4td2lkdGg6MTYwcHg7dGV4dC1hbGlnbjpjZW50ZXI7ZGlzcGxheTppbmxpbmUtZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjt3aGl0ZS1zcGFjZTpub3dyYXA7cG9zaXRpb246cmVsYXRpdmV9Lm1hdC10YWItbGFiZWw6Zm9jdXN7b3V0bGluZTpub25lfS5tYXQtdGFiLWxhYmVsOmZvY3VzOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC10YWItbGFiZWw6Zm9jdXN7b3V0bGluZTpkb3R0ZWQgMnB4O291dGxpbmUtb2Zmc2V0Oi0ycHh9Lm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZHtjdXJzb3I6ZGVmYXVsdH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWR7b3BhY2l0eTouNX0ubWF0LXRhYi1sYWJlbCAubWF0LXRhYi1sYWJlbC1jb250ZW50e2Rpc3BsYXk6aW5saW5lLWZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7d2hpdGUtc3BhY2U6bm93cmFwfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC10YWItbGFiZWx7b3BhY2l0eToxfUBtZWRpYShtYXgtd2lkdGg6IDU5OXB4KXsubWF0LXRhYi1sYWJlbHttaW4td2lkdGg6NzJweH19XG4nXSxlbmNhcHN1bGF0aW9uOjJ9KSxFai5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOktofSx7dHlwZTpPYn0se3R5cGU6UUx9LHt0eXBlOnZGLGRlY29yYXRvcnM6W3t0eXBlOkJyfV19LHt0eXBlOm1DfSx7dHlwZTpjSH0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltja119XX1dLEVqLnByb3BEZWNvcmF0b3JzPXtfaXRlbXM6W3t0eXBlOm9yLGFyZ3M6W2tqLHtkZXNjZW5kYW50czohMX1dfV0sX2lua0Jhcjpbe3R5cGU6YXIsYXJnczpbbGose3N0YXRpYzohMH1dfV0sX3RhYkxpc3RDb250YWluZXI6W3t0eXBlOmFyLGFyZ3M6WyJ0YWJMaXN0Q29udGFpbmVyIix7c3RhdGljOiEwfV19XSxfdGFiTGlzdDpbe3R5cGU6YXIsYXJnczpbInRhYkxpc3QiLHtzdGF0aWM6ITB9XX1dLF9uZXh0UGFnaW5hdG9yOlt7dHlwZTphcixhcmdzOlsibmV4dFBhZ2luYXRvciJdfV0sX3ByZXZpb3VzUGFnaW5hdG9yOlt7dHlwZTphcixhcmdzOlsicHJldmlvdXNQYWdpbmF0b3IiXX1dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEVqLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Im1hdC10YWItaGVhZGVyIix0ZW1wbGF0ZTonPGRpdiBjbGFzcz0ibWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbiBtYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWJlZm9yZSBtYXQtZWxldmF0aW9uLXo0IlxuICAgICAjcHJldmlvdXNQYWdpbmF0b3JcbiAgICAgYXJpYS1oaWRkZW49InRydWUiXG4gICAgIG1hdC1yaXBwbGUgW21hdFJpcHBsZURpc2FibGVkXT0iX2Rpc2FibGVTY3JvbGxCZWZvcmUgfHwgZGlzYWJsZVJpcHBsZSJcbiAgICAgW2NsYXNzLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRdPSJfZGlzYWJsZVNjcm9sbEJlZm9yZSJcbiAgICAgKGNsaWNrKT0iX2hhbmRsZVBhZ2luYXRvckNsaWNrKFwnYmVmb3JlXCcpIlxuICAgICAobW91c2Vkb3duKT0iX2hhbmRsZVBhZ2luYXRvclByZXNzKFwnYmVmb3JlXCcsICRldmVudCkiXG4gICAgICh0b3VjaGVuZCk9Il9zdG9wSW50ZXJ2YWwoKSI+XG4gIDxkaXYgY2xhc3M9Im1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiI+PC9kaXY+XG48L2Rpdj5cblxuPGRpdiBjbGFzcz0ibWF0LXRhYi1sYWJlbC1jb250YWluZXIiICN0YWJMaXN0Q29udGFpbmVyIChrZXlkb3duKT0iX2hhbmRsZUtleWRvd24oJGV2ZW50KSI+XG4gIDxkaXZcbiAgICAjdGFiTGlzdFxuICAgIGNsYXNzPSJtYXQtdGFiLWxpc3QiXG4gICAgW2NsYXNzLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlXT0iX2FuaW1hdGlvbk1vZGUgPT09IFwnTm9vcEFuaW1hdGlvbnNcJyJcbiAgICByb2xlPSJ0YWJsaXN0IlxuICAgIChjZGtPYnNlcnZlQ29udGVudCk9Il9vbkNvbnRlbnRDaGFuZ2VzKCkiPlxuICAgIDxkaXYgY2xhc3M9Im1hdC10YWItbGFiZWxzIj5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgICA8bWF0LWluay1iYXI+PC9tYXQtaW5rLWJhcj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPGRpdiBjbGFzcz0ibWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbiBtYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWFmdGVyIG1hdC1lbGV2YXRpb24tejQiXG4gICAgICNuZXh0UGFnaW5hdG9yXG4gICAgIGFyaWEtaGlkZGVuPSJ0cnVlIlxuICAgICBtYXQtcmlwcGxlIFttYXRSaXBwbGVEaXNhYmxlZF09Il9kaXNhYmxlU2Nyb2xsQWZ0ZXIgfHwgZGlzYWJsZVJpcHBsZSJcbiAgICAgW2NsYXNzLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRdPSJfZGlzYWJsZVNjcm9sbEFmdGVyIlxuICAgICAobW91c2Vkb3duKT0iX2hhbmRsZVBhZ2luYXRvclByZXNzKFwnYWZ0ZXJcJywgJGV2ZW50KSJcbiAgICAgKGNsaWNrKT0iX2hhbmRsZVBhZ2luYXRvckNsaWNrKFwnYWZ0ZXJcJykiXG4gICAgICh0b3VjaGVuZCk9Il9zdG9wSW50ZXJ2YWwoKSI+XG4gIDxkaXYgY2xhc3M9Im1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiI+PC9kaXY+XG48L2Rpdj5cbicsaW5wdXRzOlsic2VsZWN0ZWRJbmRleCJdLG91dHB1dHM6WyJzZWxlY3RGb2N1c2VkSW5kZXgiLCJpbmRleEZvY3VzZWQiXSxlbmNhcHN1bGF0aW9uOlduLk5vbmUsY2hhbmdlRGV0ZWN0aW9uOmpuLkRlZmF1bHQsaG9zdDp7Y2xhc3M6Im1hdC10YWItaGVhZGVyIiwiW2NsYXNzLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY29udHJvbHMtZW5hYmxlZF0iOiJfc2hvd1BhZ2luYXRpb25Db250cm9scyIsIltjbGFzcy5tYXQtdGFiLWhlYWRlci1ydGxdIjoiX2dldExheW91dERpcmVjdGlvbigpID09ICdydGwnIn0sc3R5bGVzOlsnLm1hdC10YWItaGVhZGVye2Rpc3BsYXk6ZmxleDtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmU7ZmxleC1zaHJpbms6MH0ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbnstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpub25lO2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO21pbi13aWR0aDozMnB4O2N1cnNvcjpwb2ludGVyO3otaW5kZXg6Mjstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dG91Y2gtYWN0aW9uOm5vbmV9Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY29udHJvbHMtZW5hYmxlZCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbntkaXNwbGF5OmZsZXh9Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tYmVmb3JlLC5tYXQtdGFiLWhlYWRlci1ydGwgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tYWZ0ZXJ7cGFkZGluZy1sZWZ0OjRweH0ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1iZWZvcmUgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiwubWF0LXRhYi1oZWFkZXItcnRsIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWFmdGVyIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb257dHJhbnNmb3JtOnJvdGF0ZSgtMTM1ZGVnKX0ubWF0LXRhYi1oZWFkZXItcnRsIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWJlZm9yZSwubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1hZnRlcntwYWRkaW5nLXJpZ2h0OjRweH0ubWF0LXRhYi1oZWFkZXItcnRsIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWJlZm9yZSAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWFmdGVyIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb257dHJhbnNmb3JtOnJvdGF0ZSg0NWRlZyl9Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbntib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLXdpZHRoOjJweCAycHggMCAwO2NvbnRlbnQ6IiI7aGVpZ2h0OjhweDt3aWR0aDo4cHh9Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWR7Ym94LXNoYWRvdzpub25lO2N1cnNvcjpkZWZhdWx0fS5tYXQtdGFiLWxpc3R7ZmxleC1ncm93OjE7cG9zaXRpb246cmVsYXRpdmU7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gNTAwbXMgY3ViaWMtYmV6aWVyKDAuMzUsIDAsIDAuMjUsIDEpfS5tYXQtaW5rLWJhcntwb3NpdGlvbjphYnNvbHV0ZTtib3R0b206MDtoZWlnaHQ6MnB4O3RyYW5zaXRpb246NTAwbXMgY3ViaWMtYmV6aWVyKDAuMzUsIDAsIDAuMjUsIDEpfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZS5tYXQtaW5rLWJhcnt0cmFuc2l0aW9uOm5vbmU7YW5pbWF0aW9uOm5vbmV9Lm1hdC10YWItZ3JvdXAtaW52ZXJ0ZWQtaGVhZGVyIC5tYXQtaW5rLWJhcntib3R0b206YXV0bzt0b3A6MH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtaW5rLWJhcntvdXRsaW5lOnNvbGlkIDJweDtoZWlnaHQ6MH0ubWF0LXRhYi1sYWJlbHN7ZGlzcGxheTpmbGV4fVttYXQtYWxpZ24tdGFicz1jZW50ZXJdPi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1sYWJlbHN7anVzdGlmeS1jb250ZW50OmNlbnRlcn1bbWF0LWFsaWduLXRhYnM9ZW5kXT4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItbGFiZWxze2p1c3RpZnktY29udGVudDpmbGV4LWVuZH0ubWF0LXRhYi1sYWJlbC1jb250YWluZXJ7ZGlzcGxheTpmbGV4O2ZsZXgtZ3JvdzoxO292ZXJmbG93OmhpZGRlbjt6LWluZGV4OjF9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlLm1hdC10YWItbGlzdHt0cmFuc2l0aW9uOm5vbmU7YW5pbWF0aW9uOm5vbmV9Lm1hdC10YWItbGFiZWx7aGVpZ2h0OjQ4cHg7cGFkZGluZzowIDI0cHg7Y3Vyc29yOnBvaW50ZXI7Ym94LXNpemluZzpib3JkZXItYm94O29wYWNpdHk6LjY7bWluLXdpZHRoOjE2MHB4O3RleHQtYWxpZ246Y2VudGVyO2Rpc3BsYXk6aW5saW5lLWZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7d2hpdGUtc3BhY2U6bm93cmFwO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtdGFiLWxhYmVsOmZvY3Vze291dGxpbmU6bm9uZX0ubWF0LXRhYi1sYWJlbDpmb2N1czpub3QoLm1hdC10YWItZGlzYWJsZWQpe29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtdGFiLWxhYmVsOmZvY3Vze291dGxpbmU6ZG90dGVkIDJweDtvdXRsaW5lLW9mZnNldDotMnB4fS5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWR7Y3Vyc29yOmRlZmF1bHR9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVke29wYWNpdHk6LjV9Lm1hdC10YWItbGFiZWwgLm1hdC10YWItbGFiZWwtY29udGVudHtkaXNwbGF5OmlubGluZS1mbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO3doaXRlLXNwYWNlOm5vd3JhcH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtdGFiLWxhYmVse29wYWNpdHk6MX1AbWVkaWEobWF4LXdpZHRoOiA1OTlweCl7Lm1hdC10YWItbGFiZWx7bWluLXdpZHRoOjcycHh9fVxuJ119XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpLaH0se3R5cGU6T2J9LHt0eXBlOlFMfSx7dHlwZTp2RixkZWNvcmF0b3JzOlt7dHlwZTpCcn1dfSx7dHlwZTptQ30se3R5cGU6Y0h9LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbY2tdfV19XX0pLHtfaXRlbXM6W3t0eXBlOm9yLGFyZ3M6W2tqLHtkZXNjZW5kYW50czohMX1dfV0sX2lua0Jhcjpbe3R5cGU6YXIsYXJnczpbbGose3N0YXRpYzohMH1dfV0sX3RhYkxpc3RDb250YWluZXI6W3t0eXBlOmFyLGFyZ3M6WyJ0YWJMaXN0Q29udGFpbmVyIix7c3RhdGljOiEwfV19XSxfdGFiTGlzdDpbe3R5cGU6YXIsYXJnczpbInRhYkxpc3QiLHtzdGF0aWM6ITB9XX1dLF9uZXh0UGFnaW5hdG9yOlt7dHlwZTphcixhcmdzOlsibmV4dFBhZ2luYXRvciJdfV0sX3ByZXZpb3VzUGFnaW5hdG9yOlt7dHlwZTphcixhcmdzOlsicHJldmlvdXNQYWdpbmF0b3IiXX1dfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBBaiBleHRlbmRzIERqe2NvbnN0cnVjdG9yKHQsZSxuLG8saSxhLHIpe3N1cGVyKHQsbyxpLGUsbixhLHIpLHRoaXMuX2Rpc2FibGVSaXBwbGU9ITEsdGhpcy5jb2xvcj0icHJpbWFyeSJ9Z2V0IGJhY2tncm91bmRDb2xvcigpe3JldHVybiB0aGlzLl9iYWNrZ3JvdW5kQ29sb3J9c2V0IGJhY2tncm91bmRDb2xvcih0KXtjb25zdCBlPXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbGFzc0xpc3Q7ZS5yZW1vdmUoYG1hdC1iYWNrZ3JvdW5kLSR7dGhpcy5iYWNrZ3JvdW5kQ29sb3J9YCksdCYmZS5hZGQoYG1hdC1iYWNrZ3JvdW5kLSR7dH1gKSx0aGlzLl9iYWNrZ3JvdW5kQ29sb3I9dH1nZXQgZGlzYWJsZVJpcHBsZSgpe3JldHVybiB0aGlzLl9kaXNhYmxlUmlwcGxlfXNldCBkaXNhYmxlUmlwcGxlKHQpe3RoaXMuX2Rpc2FibGVSaXBwbGU9ZUgodCl9X2l0ZW1TZWxlY3RlZCgpe31uZ0FmdGVyQ29udGVudEluaXQoKXt0aGlzLl9pdGVtcy5jaGFuZ2VzLnBpcGUoQmUobnVsbCksamUodGhpcy5fZGVzdHJveWVkKSkuc3Vic2NyaWJlKCgoKT0+e3RoaXMudXBkYXRlQWN0aXZlTGluaygpfSkpLHN1cGVyLm5nQWZ0ZXJDb250ZW50SW5pdCgpfXVwZGF0ZUFjdGl2ZUxpbmsoKXtpZighdGhpcy5faXRlbXMpcmV0dXJuO2NvbnN0IHQ9dGhpcy5faXRlbXMudG9BcnJheSgpO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKWlmKHRbZV0uYWN0aXZlKXJldHVybiB0aGlzLnNlbGVjdGVkSW5kZXg9ZSx2b2lkIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO3RoaXMuc2VsZWN0ZWRJbmRleD0tMSx0aGlzLl9pbmtCYXIuaGlkZSgpfX1Bai7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8QWopKGdmKEtoKSxnZih2Riw4KSxnZihtQyksZ2YoT2IpLGdmKFFMKSxnZihjSCksZ2YoY2ssOCkpfSxBai7JtWRpcj1obyh7dHlwZTpBaixpbnB1dHM6e2NvbG9yOiJjb2xvciIsYmFja2dyb3VuZENvbG9yOiJiYWNrZ3JvdW5kQ29sb3IiLGRpc2FibGVSaXBwbGU6ImRpc2FibGVSaXBwbGUifSxmZWF0dXJlczpbUXBdfSksQWouY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpLaH0se3R5cGU6dkYsZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX0se3R5cGU6bUN9LHt0eXBlOk9ifSx7dHlwZTpRTH0se3R5cGU6Y0h9LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbY2tdfV19XSxBai5wcm9wRGVjb3JhdG9ycz17YmFja2dyb3VuZENvbG9yOlt7dHlwZTpSX31dLGRpc2FibGVSaXBwbGU6W3t0eXBlOlJffV0sY29sb3I6W3t0eXBlOlJffV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoQWosW3t0eXBlOmtffV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOktofSx7dHlwZTp2RixkZWNvcmF0b3JzOlt7dHlwZTpCcn1dfSx7dHlwZTptQ30se3R5cGU6T2J9LHt0eXBlOlFMfSx7dHlwZTpjSH0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltja119XX1dfSkse2NvbG9yOlt7dHlwZTpSX31dLGJhY2tncm91bmRDb2xvcjpbe3R5cGU6Ul99XSxkaXNhYmxlUmlwcGxlOlt7dHlwZTpSX31dfSk7Y2xhc3MgVGogZXh0ZW5kcyBBantjb25zdHJ1Y3Rvcih0LGUsbixvLGksYSxyKXtzdXBlcih0LGUsbixvLGksYSxyKX19VGouybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFRqKShnZihLaCksZ2YodkYsOCksZ2YobUMpLGdmKE9iKSxnZihRTCksZ2YoY0gpLGdmKGNrLDgpKX0sVGouybVjbXA9c28oe3R5cGU6VGosc2VsZWN0b3JzOltbIiIsIm1hdC10YWItbmF2LWJhciIsIiJdXSxjb250ZW50UXVlcmllczpmdW5jdGlvbiB0KGUsbixvKXtpZigxJmUmJmp5KG8sSWosNSksMiZlKXtsZXQgdDtCeSh0PVV5KCkpJiYobi5faXRlbXM9dCl9fSx2aWV3UXVlcnk6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmKFZ5KGxqLDcpLFZ5KG5qLDcpLFZ5KG9qLDcpLFZ5KGlqLDUpLFZ5KGFqLDUpKSwyJmUpe2xldCB0O0J5KHQ9VXkoKSkmJihuLl9pbmtCYXI9dC5maXJzdCksQnkodD1VeSgpKSYmKG4uX3RhYkxpc3RDb250YWluZXI9dC5maXJzdCksQnkodD1VeSgpKSYmKG4uX3RhYkxpc3Q9dC5maXJzdCksQnkodD1VeSgpKSYmKG4uX25leHRQYWdpbmF0b3I9dC5maXJzdCksQnkodD1VeSgpKSYmKG4uX3ByZXZpb3VzUGFnaW5hdG9yPXQuZmlyc3QpfX0saG9zdEF0dHJzOlsxLCJtYXQtdGFiLW5hdi1iYXIiLCJtYXQtdGFiLWhlYWRlciJdLGhvc3RWYXJzOjEwLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MiZlJiZjdSgibWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jb250cm9scy1lbmFibGVkIixuLl9zaG93UGFnaW5hdGlvbkNvbnRyb2xzKSgibWF0LXRhYi1oZWFkZXItcnRsIiwicnRsIj09bi5fZ2V0TGF5b3V0RGlyZWN0aW9uKCkpKCJtYXQtcHJpbWFyeSIsIndhcm4iIT09bi5jb2xvciYmImFjY2VudCIhPT1uLmNvbG9yKSgibWF0LWFjY2VudCIsImFjY2VudCI9PT1uLmNvbG9yKSgibWF0LXdhcm4iLCJ3YXJuIj09PW4uY29sb3IpfSxpbnB1dHM6e2NvbG9yOiJjb2xvciJ9LGV4cG9ydEFzOlsibWF0VGFiTmF2QmFyIiwibWF0VGFiTmF2Il0sZmVhdHVyZXM6W1FwXSxhdHRyczpbIm1hdC10YWItbmF2LWJhciIsIiJdLG5nQ29udGVudFNlbGVjdG9yczpHVixkZWNsczoxMyx2YXJzOjgsY29uc3RzOltbImFyaWEtaGlkZGVuIiwidHJ1ZSIsIm1hdC1yaXBwbGUiLCIiLDEsIm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24iLCJtYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWJlZm9yZSIsIm1hdC1lbGV2YXRpb24tejQiLDMsIm1hdFJpcHBsZURpc2FibGVkIiwiY2xpY2siLCJtb3VzZWRvd24iLCJ0b3VjaGVuZCJdLFsicHJldmlvdXNQYWdpbmF0b3IiLCIiXSxbMSwibWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uIl0sWzEsIm1hdC10YWItbGluay1jb250YWluZXIiLDMsImtleWRvd24iXSxbInRhYkxpc3RDb250YWluZXIiLCIiXSxbMSwibWF0LXRhYi1saXN0IiwzLCJjZGtPYnNlcnZlQ29udGVudCJdLFsidGFiTGlzdCIsIiJdLFsxLCJtYXQtdGFiLWxpbmtzIl0sWyJhcmlhLWhpZGRlbiIsInRydWUiLCJtYXQtcmlwcGxlIiwiIiwxLCJtYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uIiwibWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1hZnRlciIsIm1hdC1lbGV2YXRpb24tejQiLDMsIm1hdFJpcHBsZURpc2FibGVkIiwibW91c2Vkb3duIiwiY2xpY2siLCJ0b3VjaGVuZCJdLFsibmV4dFBhZ2luYXRvciIsIiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoSGYoKSxDZigwLCJkaXYiLDAsMSksUmYoImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLl9oYW5kbGVQYWdpbmF0b3JDbGljaygiYmVmb3JlIil9KSkoIm1vdXNlZG93biIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uX2hhbmRsZVBhZ2luYXRvclByZXNzKCJiZWZvcmUiLGUpfSkpKCJ0b3VjaGVuZCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5fc3RvcEludGVydmFsKCl9KSksdmYoMiwiZGl2IiwyKSxNZigpLENmKDMsImRpdiIsMyw0KSxSZigia2V5ZG93biIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uX2hhbmRsZUtleWRvd24oZSl9KSksQ2YoNSwiZGl2Iiw1LDYpLFJmKCJjZGtPYnNlcnZlQ29udGVudCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5fb25Db250ZW50Q2hhbmdlcygpfSkpLENmKDcsImRpdiIsNyksRmYoOCksTWYoKSx2Zig5LCJtYXQtaW5rLWJhciIpLE1mKCksTWYoKSxDZigxMCwiZGl2Iiw4LDkpLFJmKCJtb3VzZWRvd24iLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLl9oYW5kbGVQYWdpbmF0b3JQcmVzcygiYWZ0ZXIiLGUpfSkpKCJjbGljayIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5faGFuZGxlUGFnaW5hdG9yQ2xpY2soImFmdGVyIil9KSkoInRvdWNoZW5kIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLl9zdG9wSW50ZXJ2YWwoKX0pKSx2ZigxMiwiZGl2IiwyKSxNZigpKSwyJmUmJihjdSgibWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZCIsbi5fZGlzYWJsZVNjcm9sbEJlZm9yZSksYmYoIm1hdFJpcHBsZURpc2FibGVkIixuLl9kaXNhYmxlU2Nyb2xsQmVmb3JlfHxuLmRpc2FibGVSaXBwbGUpLERjKDUpLGN1KCJfbWF0LWFuaW1hdGlvbi1ub29wYWJsZSIsIk5vb3BBbmltYXRpb25zIj09PW4uX2FuaW1hdGlvbk1vZGUpLERjKDUpLGN1KCJtYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkIixuLl9kaXNhYmxlU2Nyb2xsQWZ0ZXIpLGJmKCJtYXRSaXBwbGVEaXNhYmxlZCIsbi5fZGlzYWJsZVNjcm9sbEFmdGVyfHxuLmRpc2FibGVSaXBwbGUpKX0sZGlyZWN0aXZlczpbbUwsUEgsbGpdLHN0eWxlczpbJy5tYXQtdGFiLWhlYWRlcntkaXNwbGF5OmZsZXg7b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlO2ZsZXgtc2hyaW5rOjB9Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb257LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6bm9uZTtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjttaW4td2lkdGg6MzJweDtjdXJzb3I6cG9pbnRlcjt6LWluZGV4OjI7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RvdWNoLWFjdGlvbjpub25lfS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNvbnRyb2xzLWVuYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb257ZGlzcGxheTpmbGV4fS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWJlZm9yZSwubWF0LXRhYi1oZWFkZXItcnRsIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWFmdGVye3BhZGRpbmctbGVmdDo0cHh9Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tYmVmb3JlIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sLm1hdC10YWItaGVhZGVyLXJ0bCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1hZnRlciAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9ue3RyYW5zZm9ybTpyb3RhdGUoLTEzNWRlZyl9Lm1hdC10YWItaGVhZGVyLXJ0bCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1iZWZvcmUsLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tYWZ0ZXJ7cGFkZGluZy1yaWdodDo0cHh9Lm1hdC10YWItaGVhZGVyLXJ0bCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1iZWZvcmUgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiwubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1hZnRlciAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9ue3RyYW5zZm9ybTpyb3RhdGUoNDVkZWcpfS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb257Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci13aWR0aDoycHggMnB4IDAgMDtjb250ZW50OiIiO2hlaWdodDo4cHg7d2lkdGg6OHB4fS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVke2JveC1zaGFkb3c6bm9uZTtjdXJzb3I6ZGVmYXVsdH0ubWF0LXRhYi1saXN0e2ZsZXgtZ3JvdzoxO3Bvc2l0aW9uOnJlbGF0aXZlO3RyYW5zaXRpb246dHJhbnNmb3JtIDUwMG1zIGN1YmljLWJlemllcigwLjM1LCAwLCAwLjI1LCAxKX0ubWF0LXRhYi1saW5rc3tkaXNwbGF5OmZsZXh9W21hdC1hbGlnbi10YWJzPWNlbnRlcl0+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC10YWItbGlua3N7anVzdGlmeS1jb250ZW50OmNlbnRlcn1bbWF0LWFsaWduLXRhYnM9ZW5kXT4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LXRhYi1saW5rc3tqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmR9Lm1hdC1pbmstYmFye3Bvc2l0aW9uOmFic29sdXRlO2JvdHRvbTowO2hlaWdodDoycHg7dHJhbnNpdGlvbjo1MDBtcyBjdWJpYy1iZXppZXIoMC4zNSwgMCwgMC4yNSwgMSl9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlLm1hdC1pbmstYmFye3RyYW5zaXRpb246bm9uZTthbmltYXRpb246bm9uZX0ubWF0LXRhYi1ncm91cC1pbnZlcnRlZC1oZWFkZXIgLm1hdC1pbmstYmFye2JvdHRvbTphdXRvO3RvcDowfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1pbmstYmFye291dGxpbmU6c29saWQgMnB4O2hlaWdodDowfS5tYXQtdGFiLWxpbmstY29udGFpbmVye2Rpc3BsYXk6ZmxleDtmbGV4LWdyb3c6MTtvdmVyZmxvdzpoaWRkZW47ei1pbmRleDoxfS5tYXQtdGFiLWxpbmt7aGVpZ2h0OjQ4cHg7cGFkZGluZzowIDI0cHg7Y3Vyc29yOnBvaW50ZXI7Ym94LXNpemluZzpib3JkZXItYm94O29wYWNpdHk6LjY7bWluLXdpZHRoOjE2MHB4O3RleHQtYWxpZ246Y2VudGVyO2Rpc3BsYXk6aW5saW5lLWZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7d2hpdGUtc3BhY2U6bm93cmFwO3ZlcnRpY2FsLWFsaWduOnRvcDt0ZXh0LWRlY29yYXRpb246bm9uZTtwb3NpdGlvbjpyZWxhdGl2ZTtvdmVyZmxvdzpoaWRkZW47LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50fS5tYXQtdGFiLWxpbms6Zm9jdXN7b3V0bGluZTpub25lfS5tYXQtdGFiLWxpbms6Zm9jdXM6bm90KC5tYXQtdGFiLWRpc2FibGVkKXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXRhYi1saW5rOmZvY3Vze291dGxpbmU6ZG90dGVkIDJweDtvdXRsaW5lLW9mZnNldDotMnB4fS5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZHtjdXJzb3I6ZGVmYXVsdH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZHtvcGFjaXR5Oi41fS5tYXQtdGFiLWxpbmsgLm1hdC10YWItbGFiZWwtY29udGVudHtkaXNwbGF5OmlubGluZS1mbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO3doaXRlLXNwYWNlOm5vd3JhcH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtdGFiLWxpbmt7b3BhY2l0eToxfVttYXQtc3RyZXRjaC10YWJzXSAubWF0LXRhYi1saW5re2ZsZXgtYmFzaXM6MDtmbGV4LWdyb3c6MX0ubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWR7cG9pbnRlci1ldmVudHM6bm9uZX1AbWVkaWEobWF4LXdpZHRoOiA1OTlweCl7Lm1hdC10YWItbGlua3ttaW4td2lkdGg6NzJweH19XG4nXSxlbmNhcHN1bGF0aW9uOjJ9KSxUai5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOktofSx7dHlwZTp2RixkZWNvcmF0b3JzOlt7dHlwZTpCcn1dfSx7dHlwZTptQ30se3R5cGU6T2J9LHt0eXBlOlFMfSx7dHlwZTpjSH0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltja119XX1dLFRqLnByb3BEZWNvcmF0b3JzPXtfaXRlbXM6W3t0eXBlOm9yLGFyZ3M6WyRlKCgoKT0+SWopKSx7ZGVzY2VuZGFudHM6ITB9XX1dLF9pbmtCYXI6W3t0eXBlOmFyLGFyZ3M6W2xqLHtzdGF0aWM6ITB9XX1dLF90YWJMaXN0Q29udGFpbmVyOlt7dHlwZTphcixhcmdzOlsidGFiTGlzdENvbnRhaW5lciIse3N0YXRpYzohMH1dfV0sX3RhYkxpc3Q6W3t0eXBlOmFyLGFyZ3M6WyJ0YWJMaXN0Iix7c3RhdGljOiEwfV19XSxfbmV4dFBhZ2luYXRvcjpbe3R5cGU6YXIsYXJnczpbIm5leHRQYWdpbmF0b3IiXX1dLF9wcmV2aW91c1BhZ2luYXRvcjpbe3R5cGU6YXIsYXJnczpbInByZXZpb3VzUGFnaW5hdG9yIl19XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihUaixbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJbbWF0LXRhYi1uYXYtYmFyXSIsZXhwb3J0QXM6Im1hdFRhYk5hdkJhciwgbWF0VGFiTmF2IixpbnB1dHM6WyJjb2xvciJdLHRlbXBsYXRlOic8ZGl2IGNsYXNzPSJtYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uIG1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tYmVmb3JlIG1hdC1lbGV2YXRpb24tejQiXG4gICAgICNwcmV2aW91c1BhZ2luYXRvclxuICAgICBhcmlhLWhpZGRlbj0idHJ1ZSJcbiAgICAgbWF0LXJpcHBsZSBbbWF0UmlwcGxlRGlzYWJsZWRdPSJfZGlzYWJsZVNjcm9sbEJlZm9yZSB8fCBkaXNhYmxlUmlwcGxlIlxuICAgICBbY2xhc3MubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZF09Il9kaXNhYmxlU2Nyb2xsQmVmb3JlIlxuICAgICAoY2xpY2spPSJfaGFuZGxlUGFnaW5hdG9yQ2xpY2soXCdiZWZvcmVcJykiXG4gICAgIChtb3VzZWRvd24pPSJfaGFuZGxlUGFnaW5hdG9yUHJlc3MoXCdiZWZvcmVcJywgJGV2ZW50KSJcbiAgICAgKHRvdWNoZW5kKT0iX3N0b3BJbnRlcnZhbCgpIj5cbiAgPGRpdiBjbGFzcz0ibWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uIj48L2Rpdj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPSJtYXQtdGFiLWxpbmstY29udGFpbmVyIiAjdGFiTGlzdENvbnRhaW5lciAoa2V5ZG93bik9Il9oYW5kbGVLZXlkb3duKCRldmVudCkiPlxuICA8ZGl2XG4gICAgY2xhc3M9Im1hdC10YWItbGlzdCJcbiAgICBbY2xhc3MuX21hdC1hbmltYXRpb24tbm9vcGFibGVdPSJfYW5pbWF0aW9uTW9kZSA9PT0gXCdOb29wQW5pbWF0aW9uc1wnIlxuICAgICN0YWJMaXN0XG4gICAgKGNka09ic2VydmVDb250ZW50KT0iX29uQ29udGVudENoYW5nZXMoKSI+XG4gICAgPGRpdiBjbGFzcz0ibWF0LXRhYi1saW5rcyI+XG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gICAgPG1hdC1pbmstYmFyPjwvbWF0LWluay1iYXI+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9Im1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24gbWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1hZnRlciBtYXQtZWxldmF0aW9uLXo0IlxuICAgICAjbmV4dFBhZ2luYXRvclxuICAgICBhcmlhLWhpZGRlbj0idHJ1ZSJcbiAgICAgbWF0LXJpcHBsZSBbbWF0UmlwcGxlRGlzYWJsZWRdPSJfZGlzYWJsZVNjcm9sbEFmdGVyIHx8IGRpc2FibGVSaXBwbGUiXG4gICAgIFtjbGFzcy5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkXT0iX2Rpc2FibGVTY3JvbGxBZnRlciJcbiAgICAgKG1vdXNlZG93bik9Il9oYW5kbGVQYWdpbmF0b3JQcmVzcyhcJ2FmdGVyXCcsICRldmVudCkiXG4gICAgIChjbGljayk9Il9oYW5kbGVQYWdpbmF0b3JDbGljayhcJ2FmdGVyXCcpIlxuICAgICAodG91Y2hlbmQpPSJfc3RvcEludGVydmFsKCkiPlxuICA8ZGl2IGNsYXNzPSJtYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24iPjwvZGl2PlxuPC9kaXY+XG4nLGhvc3Q6e2NsYXNzOiJtYXQtdGFiLW5hdi1iYXIgbWF0LXRhYi1oZWFkZXIiLCJbY2xhc3MubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jb250cm9scy1lbmFibGVkXSI6Il9zaG93UGFnaW5hdGlvbkNvbnRyb2xzIiwiW2NsYXNzLm1hdC10YWItaGVhZGVyLXJ0bF0iOiJfZ2V0TGF5b3V0RGlyZWN0aW9uKCkgPT0gJ3J0bCciLCJbY2xhc3MubWF0LXByaW1hcnldIjonY29sb3IgIT09ICJ3YXJuIiAmJiBjb2xvciAhPT0gImFjY2VudCInLCJbY2xhc3MubWF0LWFjY2VudF0iOidjb2xvciA9PT0gImFjY2VudCInLCJbY2xhc3MubWF0LXdhcm5dIjonY29sb3IgPT09ICJ3YXJuIid9LGVuY2Fwc3VsYXRpb246V24uTm9uZSxjaGFuZ2VEZXRlY3Rpb246am4uRGVmYXVsdCxzdHlsZXM6WycubWF0LXRhYi1oZWFkZXJ7ZGlzcGxheTpmbGV4O292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZTtmbGV4LXNocmluazowfS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uey13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5Om5vbmU7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7bWluLXdpZHRoOjMycHg7Y3Vyc29yOnBvaW50ZXI7ei1pbmRleDoyOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDt0b3VjaC1hY3Rpb246bm9uZX0ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jb250cm9scy1lbmFibGVkIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9ue2Rpc3BsYXk6ZmxleH0ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1iZWZvcmUsLm1hdC10YWItaGVhZGVyLXJ0bCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1hZnRlcntwYWRkaW5nLWxlZnQ6NHB4fS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWJlZm9yZSAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLC5tYXQtdGFiLWhlYWRlci1ydGwgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tYWZ0ZXIgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbnt0cmFuc2Zvcm06cm90YXRlKC0xMzVkZWcpfS5tYXQtdGFiLWhlYWRlci1ydGwgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tYmVmb3JlLC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWFmdGVye3BhZGRpbmctcmlnaHQ6NHB4fS5tYXQtdGFiLWhlYWRlci1ydGwgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tYmVmb3JlIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tYWZ0ZXIgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbnt0cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKX0ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9ue2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItd2lkdGg6MnB4IDJweCAwIDA7Y29udGVudDoiIjtoZWlnaHQ6OHB4O3dpZHRoOjhweH0ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZHtib3gtc2hhZG93Om5vbmU7Y3Vyc29yOmRlZmF1bHR9Lm1hdC10YWItbGlzdHtmbGV4LWdyb3c6MTtwb3NpdGlvbjpyZWxhdGl2ZTt0cmFuc2l0aW9uOnRyYW5zZm9ybSA1MDBtcyBjdWJpYy1iZXppZXIoMC4zNSwgMCwgMC4yNSwgMSl9Lm1hdC10YWItbGlua3N7ZGlzcGxheTpmbGV4fVttYXQtYWxpZ24tdGFicz1jZW50ZXJdPi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtdGFiLWxpbmtze2p1c3RpZnktY29udGVudDpjZW50ZXJ9W21hdC1hbGlnbi10YWJzPWVuZF0+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC10YWItbGlua3N7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kfS5tYXQtaW5rLWJhcntwb3NpdGlvbjphYnNvbHV0ZTtib3R0b206MDtoZWlnaHQ6MnB4O3RyYW5zaXRpb246NTAwbXMgY3ViaWMtYmV6aWVyKDAuMzUsIDAsIDAuMjUsIDEpfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZS5tYXQtaW5rLWJhcnt0cmFuc2l0aW9uOm5vbmU7YW5pbWF0aW9uOm5vbmV9Lm1hdC10YWItZ3JvdXAtaW52ZXJ0ZWQtaGVhZGVyIC5tYXQtaW5rLWJhcntib3R0b206YXV0bzt0b3A6MH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtaW5rLWJhcntvdXRsaW5lOnNvbGlkIDJweDtoZWlnaHQ6MH0ubWF0LXRhYi1saW5rLWNvbnRhaW5lcntkaXNwbGF5OmZsZXg7ZmxleC1ncm93OjE7b3ZlcmZsb3c6aGlkZGVuO3otaW5kZXg6MX0ubWF0LXRhYi1saW5re2hlaWdodDo0OHB4O3BhZGRpbmc6MCAyNHB4O2N1cnNvcjpwb2ludGVyO2JveC1zaXppbmc6Ym9yZGVyLWJveDtvcGFjaXR5Oi42O21pbi13aWR0aDoxNjBweDt0ZXh0LWFsaWduOmNlbnRlcjtkaXNwbGF5OmlubGluZS1mbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO3doaXRlLXNwYWNlOm5vd3JhcDt2ZXJ0aWNhbC1hbGlnbjp0b3A7dGV4dC1kZWNvcmF0aW9uOm5vbmU7cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3c6aGlkZGVuOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudH0ubWF0LXRhYi1saW5rOmZvY3Vze291dGxpbmU6bm9uZX0ubWF0LXRhYi1saW5rOmZvY3VzOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC10YWItbGluazpmb2N1c3tvdXRsaW5lOmRvdHRlZCAycHg7b3V0bGluZS1vZmZzZXQ6LTJweH0ubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWR7Y3Vyc29yOmRlZmF1bHR9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWR7b3BhY2l0eTouNX0ubWF0LXRhYi1saW5rIC5tYXQtdGFiLWxhYmVsLWNvbnRlbnR7ZGlzcGxheTppbmxpbmUtZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjt3aGl0ZS1zcGFjZTpub3dyYXB9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXRhYi1saW5re29wYWNpdHk6MX1bbWF0LXN0cmV0Y2gtdGFic10gLm1hdC10YWItbGlua3tmbGV4LWJhc2lzOjA7ZmxleC1ncm93OjF9Lm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVke3BvaW50ZXItZXZlbnRzOm5vbmV9QG1lZGlhKG1heC13aWR0aDogNTk5cHgpey5tYXQtdGFiLWxpbmt7bWluLXdpZHRoOjcycHh9fVxuJ119XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpLaH0se3R5cGU6dkYsZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX0se3R5cGU6bUN9LHt0eXBlOk9ifSx7dHlwZTpRTH0se3R5cGU6Y0h9LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbY2tdfV19XX0pLHtfaXRlbXM6W3t0eXBlOm9yLGFyZ3M6WyRlKCgoKT0+SWopKSx7ZGVzY2VuZGFudHM6ITB9XX1dLF9pbmtCYXI6W3t0eXBlOmFyLGFyZ3M6W2xqLHtzdGF0aWM6ITB9XX1dLF90YWJMaXN0Q29udGFpbmVyOlt7dHlwZTphcixhcmdzOlsidGFiTGlzdENvbnRhaW5lciIse3N0YXRpYzohMH1dfV0sX3RhYkxpc3Q6W3t0eXBlOmFyLGFyZ3M6WyJ0YWJMaXN0Iix7c3RhdGljOiEwfV19XSxfbmV4dFBhZ2luYXRvcjpbe3R5cGU6YXIsYXJnczpbIm5leHRQYWdpbmF0b3IiXX1dLF9wcmV2aW91c1BhZ2luYXRvcjpbe3R5cGU6YXIsYXJnczpbInByZXZpb3VzUGFnaW5hdG9yIl19XX0pO2NvbnN0IE5qPUZGKEhGKHpGKGNsYXNze30pKSk7Y2xhc3MgemogZXh0ZW5kcyBOantjb25zdHJ1Y3Rvcih0LGUsbixvLGksYSl7c3VwZXIoKSx0aGlzLl90YWJOYXZCYXI9dCx0aGlzLmVsZW1lbnRSZWY9ZSx0aGlzLl9mb2N1c01vbml0b3I9aSx0aGlzLl9pc0FjdGl2ZT0hMSx0aGlzLnJpcHBsZUNvbmZpZz1ufHx7fSx0aGlzLnRhYkluZGV4PXBhcnNlSW50KG8pfHwwLCJOb29wQW5pbWF0aW9ucyI9PT1hJiYodGhpcy5yaXBwbGVDb25maWcuYW5pbWF0aW9uPXtlbnRlckR1cmF0aW9uOjAsZXhpdER1cmF0aW9uOjB9KX1nZXQgYWN0aXZlKCl7cmV0dXJuIHRoaXMuX2lzQWN0aXZlfXNldCBhY3RpdmUodCl7ZUgodCkhPT10aGlzLl9pc0FjdGl2ZSYmKHRoaXMuX2lzQWN0aXZlPXQsdGhpcy5fdGFiTmF2QmFyLnVwZGF0ZUFjdGl2ZUxpbmsoKSl9Z2V0IHJpcHBsZURpc2FibGVkKCl7cmV0dXJuIHRoaXMuZGlzYWJsZWR8fHRoaXMuZGlzYWJsZVJpcHBsZXx8dGhpcy5fdGFiTmF2QmFyLmRpc2FibGVSaXBwbGV8fCEhdGhpcy5yaXBwbGVDb25maWcuZGlzYWJsZWR9Zm9jdXMoKXt0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpfW5nQWZ0ZXJWaWV3SW5pdCgpe3RoaXMuX2ZvY3VzTW9uaXRvci5tb25pdG9yKHRoaXMuZWxlbWVudFJlZil9bmdPbkRlc3Ryb3koKXt0aGlzLl9mb2N1c01vbml0b3Iuc3RvcE1vbml0b3JpbmcodGhpcy5lbGVtZW50UmVmKX1faGFuZGxlRm9jdXMoKXt0aGlzLl90YWJOYXZCYXIuZm9jdXNJbmRleD10aGlzLl90YWJOYXZCYXIuX2l0ZW1zLnRvQXJyYXkoKS5pbmRleE9mKHRoaXMpfX16ai7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8emopKGdmKEFqKSxnZihLaCksZ2YocEwsOCksR2EoInRhYmluZGV4IiksZ2YoZkYpLGdmKGNrLDgpKX0semouybVkaXI9aG8oe3R5cGU6emosaW5wdXRzOnthY3RpdmU6ImFjdGl2ZSJ9LGZlYXR1cmVzOltRcF19KSx6ai5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkFqfSx7dHlwZTpLaH0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltwTF19XX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOiRhLGFyZ3M6WyJ0YWJpbmRleCJdfV19LHt0eXBlOmZGfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W2NrXX1dfV0semoucHJvcERlY29yYXRvcnM9e2FjdGl2ZTpbe3R5cGU6Ul99XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih6aixbe3R5cGU6a199XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6QWp9LHt0eXBlOktofSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W3BMXX1dfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6JGEsYXJnczpbInRhYmluZGV4Il19XX0se3R5cGU6ZkZ9LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbY2tdfV19XX0pLHthY3RpdmU6W3t0eXBlOlJffV19KTtjbGFzcyBJaiBleHRlbmRzIHpqe2NvbnN0cnVjdG9yKHQsZSxuLG8saSxhLHIscyl7c3VwZXIodCxlLGksYSxyLHMpLHRoaXMuX3RhYkxpbmtSaXBwbGU9bmV3IGRMKHRoaXMsbixlLG8pLHRoaXMuX3RhYkxpbmtSaXBwbGUuc2V0dXBUcmlnZ2VyRXZlbnRzKGUubmF0aXZlRWxlbWVudCl9bmdPbkRlc3Ryb3koKXtzdXBlci5uZ09uRGVzdHJveSgpLHRoaXMuX3RhYkxpbmtSaXBwbGUuX3JlbW92ZVRyaWdnZXJFdmVudHMoKX19SWouybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fElqKShnZihUaiksZ2YoS2gpLGdmKG1DKSxnZihjSCksZ2YocEwsOCksR2EoInRhYmluZGV4IiksZ2YoZkYpLGdmKGNrLDgpKX0sSWouybVkaXI9aG8oe3R5cGU6SWosc2VsZWN0b3JzOltbIiIsIm1hdC10YWItbGluayIsIiJdLFsiIiwibWF0VGFiTGluayIsIiJdXSxob3N0QXR0cnM6WzEsIm1hdC10YWItbGluayIsIm1hdC1mb2N1cy1pbmRpY2F0b3IiXSxob3N0VmFyczo3LGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MSZlJiZSZigiZm9jdXMiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4uX2hhbmRsZUZvY3VzKCl9KSksMiZlJiYoeW0oImFyaWEtY3VycmVudCIsbi5hY3RpdmU/InBhZ2UiOm51bGwpKCJhcmlhLWRpc2FibGVkIixuLmRpc2FibGVkKSgidGFiSW5kZXgiLG4udGFiSW5kZXgpLGN1KCJtYXQtdGFiLWRpc2FibGVkIixuLmRpc2FibGVkKSgibWF0LXRhYi1sYWJlbC1hY3RpdmUiLG4uYWN0aXZlKSl9LGlucHV0czp7ZGlzYWJsZWQ6ImRpc2FibGVkIixkaXNhYmxlUmlwcGxlOiJkaXNhYmxlUmlwcGxlIix0YWJJbmRleDoidGFiSW5kZXgifSxleHBvcnRBczpbIm1hdFRhYkxpbmsiXSxmZWF0dXJlczpbUXBdfSksSWouY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpUan0se3R5cGU6S2h9LHt0eXBlOm1DfSx7dHlwZTpjSH0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltwTF19XX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOiRhLGFyZ3M6WyJ0YWJpbmRleCJdfV19LHt0eXBlOmZGfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W2NrXX1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihJaixbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJbbWF0LXRhYi1saW5rXSwgW21hdFRhYkxpbmtdIixleHBvcnRBczoibWF0VGFiTGluayIsaW5wdXRzOlsiZGlzYWJsZWQiLCJkaXNhYmxlUmlwcGxlIiwidGFiSW5kZXgiXSxob3N0OntjbGFzczoibWF0LXRhYi1saW5rIG1hdC1mb2N1cy1pbmRpY2F0b3IiLCJbYXR0ci5hcmlhLWN1cnJlbnRdIjonYWN0aXZlID8gInBhZ2UiIDogbnVsbCcsIlthdHRyLmFyaWEtZGlzYWJsZWRdIjoiZGlzYWJsZWQiLCJbYXR0ci50YWJJbmRleF0iOiJ0YWJJbmRleCIsIltjbGFzcy5tYXQtdGFiLWRpc2FibGVkXSI6ImRpc2FibGVkIiwiW2NsYXNzLm1hdC10YWItbGFiZWwtYWN0aXZlXSI6ImFjdGl2ZSIsIihmb2N1cykiOiJfaGFuZGxlRm9jdXMoKSJ9fV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6VGp9LHt0eXBlOktofSx7dHlwZTptQ30se3R5cGU6Y0h9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbcExdfV19LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTokYSxhcmdzOlsidGFiaW5kZXgiXX1dfSx7dHlwZTpmRn0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltja119XX1dfSksbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBIant9SGouybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEhqKX0sSGouybVtb2Q9Zm8oe3R5cGU6SGp9KSxIai7JtWluaj1Ebih7aW1wb3J0czpbW3J4LE5GLGhCLGZMLHdILF9GXSxORl19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEhqLFt7dHlwZTpMXyxhcmdzOlt7aW1wb3J0czpbcngsTkYsaEIsZkwsd0gsX0ZdLGV4cG9ydHM6W05GLFBqLG1qLGdqLFRqLElqLGRqXSxkZWNsYXJhdGlvbnM6W1BqLG1qLGdqLGxqLGtqLFRqLElqLF9qLGJqLEVqLGRqXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKEhqLHtkZWNsYXJhdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm5bUGosbWosZ2osbGosa2osVGosSWosX2osYmosRWosZGpdfSxpbXBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW3J4LE5GLGhCLGZMLHdILF9GXX0sZXhwb3J0czpmdW5jdGlvbigpe3JldHVybltORixQaixtaixnaixUaixJaixkal19fSk7Y29uc3QgRmo9WyJ1bmRlcmxpbmUiXSxMaj1bImNvbm5lY3Rpb25Db250YWluZXIiXSxCaj1bImlucHV0Q29udGFpbmVyIl0sVmo9WyJsYWJlbCJdO2Z1bmN0aW9uIGpqKHQsZSl7MSZ0JiYoeGYoMCksQ2YoMSwiZGl2IiwxNCksdmYoMiwiZGl2IiwxNSksdmYoMywiZGl2IiwxNiksdmYoNCwiZGl2IiwxNyksTWYoKSxDZig1LCJkaXYiLDE4KSx2Zig2LCJkaXYiLDE1KSx2Zig3LCJkaXYiLDE2KSx2Zig4LCJkaXYiLDE3KSxNZigpLE9mKCkpfWZ1bmN0aW9uIFVqKHQsZSl7MSZ0JiYoQ2YoMCwiZGl2IiwxOSksRmYoMSwxKSxNZigpKX1mdW5jdGlvbiBXaih0LGUpe2lmKDEmdCYmKHhmKDApLEZmKDEsMiksQ2YoMiwic3BhbiIpLFB1KDMpLE1mKCksT2YoKSksMiZ0KXtjb25zdCB0PXpmKDIpO0RjKDMpLHd1KHQuX2NvbnRyb2wucGxhY2Vob2xkZXIpfX1mdW5jdGlvbiBHaih0LGUpezEmdCYmRmYoMCwzLFsiKm5nU3dpdGNoQ2FzZSIsInRydWUiXSl9ZnVuY3Rpb24gWWoodCxlKXsxJnQmJihDZigwLCJzcGFuIiwyMyksUHUoMSwiICoiKSxNZigpKX1mdW5jdGlvbiBxaih0LGUpe2lmKDEmdCl7Y29uc3QgdD13ZigpO0NmKDAsImxhYmVsIiwyMCwyMSksUmYoImNka09ic2VydmVDb250ZW50IiwoZnVuY3Rpb24gZSgpe1BpKHQpO3JldHVybiB6ZigpLnVwZGF0ZU91dGxpbmVHYXAoKX0pKSxIbSgyLFdqLDQsMSwibmctY29udGFpbmVyIiwxMiksSG0oMyxHaiwxLDAsIm5nLWNvbnRlbnQiLDEyKSxIbSg0LFlqLDIsMCwic3BhbiIsMjIpLE1mKCl9aWYoMiZ0KXtjb25zdCB0PXpmKCk7Y3UoIm1hdC1lbXB0eSIsdC5fY29udHJvbC5lbXB0eSYmIXQuX3Nob3VsZEFsd2F5c0Zsb2F0KCkpKCJtYXQtZm9ybS1maWVsZC1lbXB0eSIsdC5fY29udHJvbC5lbXB0eSYmIXQuX3Nob3VsZEFsd2F5c0Zsb2F0KCkpKCJtYXQtYWNjZW50IiwiYWNjZW50Ij09dC5jb2xvcikoIm1hdC13YXJuIiwid2FybiI9PXQuY29sb3IpLGJmKCJjZGtPYnNlcnZlQ29udGVudERpc2FibGVkIiwib3V0bGluZSIhPXQuYXBwZWFyYW5jZSkoImlkIix0Ll9sYWJlbElkKSgibmdTd2l0Y2giLHQuX2hhc0xhYmVsKCkpLHltKCJmb3IiLHQuX2NvbnRyb2wuaWQpKCJhcmlhLW93bnMiLHQuX2NvbnRyb2wuaWQpLERjKDIpLGJmKCJuZ1N3aXRjaENhc2UiLCExKSxEYygxKSxiZigibmdTd2l0Y2hDYXNlIiwhMCksRGMoMSksYmYoIm5nSWYiLCF0LmhpZGVSZXF1aXJlZE1hcmtlciYmdC5fY29udHJvbC5yZXF1aXJlZCYmIXQuX2NvbnRyb2wuZGlzYWJsZWQpfX1mdW5jdGlvbiBaaih0LGUpezEmdCYmKENmKDAsImRpdiIsMjQpLEZmKDEsNCksTWYoKSl9ZnVuY3Rpb24gWGoodCxlKXtpZigxJnQmJihDZigwLCJkaXYiLDI1LDI2KSx2ZigyLCJzcGFuIiwyNyksTWYoKSksMiZ0KXtjb25zdCB0PXpmKCk7RGMoMiksY3UoIm1hdC1hY2NlbnQiLCJhY2NlbnQiPT10LmNvbG9yKSgibWF0LXdhcm4iLCJ3YXJuIj09dC5jb2xvcil9fWZ1bmN0aW9uIEtqKHQsZSl7aWYoMSZ0JiYoQ2YoMCwiZGl2IiksRmYoMSw1KSxNZigpKSwyJnQpe2JmKCJAdHJhbnNpdGlvbk1lc3NhZ2VzIix6ZigpLl9zdWJzY3JpcHRBbmltYXRpb25TdGF0ZSl9fWZ1bmN0aW9uIEpqKHQsZSl7aWYoMSZ0JiYoQ2YoMCwiZGl2IiwzMSksUHUoMSksTWYoKSksMiZ0KXtjb25zdCB0PXpmKDIpO2JmKCJpZCIsdC5faGludExhYmVsSWQpLERjKDEpLHd1KHQuaGludExhYmVsKX19ZnVuY3Rpb24gUWoodCxlKXtpZigxJnQmJihDZigwLCJkaXYiLDI4KSxIbSgxLEpqLDIsMiwiZGl2IiwyOSksRmYoMiw2KSx2ZigzLCJkaXYiLDMwKSxGZig0LDcpLE1mKCkpLDImdCl7Y29uc3QgdD16ZigpO2JmKCJAdHJhbnNpdGlvbk1lc3NhZ2VzIix0Ll9zdWJzY3JpcHRBbmltYXRpb25TdGF0ZSksRGMoMSksYmYoIm5nSWYiLHQuaGludExhYmVsKX19Y29uc3QgJGo9WyIqIixbWyIiLCJtYXRQcmVmaXgiLCIiXV0sW1sibWF0LXBsYWNlaG9sZGVyIl1dLFtbIm1hdC1sYWJlbCJdXSxbWyIiLCJtYXRTdWZmaXgiLCIiXV0sW1sibWF0LWVycm9yIl1dLFtbIm1hdC1oaW50IiwzLCJhbGlnbiIsImVuZCJdXSxbWyJtYXQtaGludCIsImFsaWduIiwiZW5kIl1dXTtsZXQgdFU9MDtjb25zdCBlVT1uZXcgZXIoIk1hdEVycm9yIik7Y2xhc3MgblV7Y29uc3RydWN0b3IodCxlKXt0aGlzLmlkPSJtYXQtZXJyb3ItIit0VSsrLHR8fGUubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoImFyaWEtbGl2ZSIsInBvbGl0ZSIpfX1uVS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8blUpKEdhKCJhcmlhLWxpdmUiKSxnZihLaCkpfSxuVS7JtWRpcj1obyh7dHlwZTpuVSxzZWxlY3RvcnM6W1sibWF0LWVycm9yIl1dLGhvc3RBdHRyczpbImFyaWEtYXRvbWljIiwidHJ1ZSIsMSwibWF0LWVycm9yIl0saG9zdFZhcnM6MSxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezImZSYmeW0oImlkIixuLmlkKX0saW5wdXRzOntpZDoiaWQifSxmZWF0dXJlczpbamgoW3twcm92aWRlOmVVLHVzZUV4aXN0aW5nOm5VfV0pXX0pLG5VLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOiRhLGFyZ3M6WyJhcmlhLWxpdmUiXX1dfSx7dHlwZTpLaH1dLG5VLnByb3BEZWNvcmF0b3JzPXtpZDpbe3R5cGU6Ul99XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihuVSxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJtYXQtZXJyb3IiLGhvc3Q6e2NsYXNzOiJtYXQtZXJyb3IiLCJbYXR0ci5pZF0iOiJpZCIsImFyaWEtYXRvbWljIjoidHJ1ZSJ9LHByb3ZpZGVyczpbe3Byb3ZpZGU6ZVUsdXNlRXhpc3Rpbmc6blV9XX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTokYSxhcmdzOlsiYXJpYS1saXZlIl19XX0se3R5cGU6S2h9XX0pLHtpZDpbe3R5cGU6Ul99XX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3Qgb1U9e3RyYW5zaXRpb25NZXNzYWdlczp4TygidHJhbnNpdGlvbk1lc3NhZ2VzIixba08oImVudGVyIix3Tyh7b3BhY2l0eToxLHRyYW5zZm9ybToidHJhbnNsYXRlWSgwJSkifSkpLERPKCJ2b2lkID0+IGVudGVyIixbd08oe29wYWNpdHk6MCx0cmFuc2Zvcm06InRyYW5zbGF0ZVkoLTVweCkifSksT08oIjMwMG1zIGN1YmljLWJlemllcigwLjU1LCAwLCAwLjU1LCAwLjIpIildKV0pfTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgaVV7fWZ1bmN0aW9uIGFVKHQpe3JldHVybiBFcnJvcihgQSBoaW50IHdhcyBhbHJlYWR5IGRlY2xhcmVkIGZvciAnYWxpZ249IiR7dH0iJy5gKX1pVS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8aVUpfSxpVS7JtWRpcj1obyh7dHlwZTppVX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoaVUsW3t0eXBlOmtffV0sbnVsbCxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmxldCByVT0wO2NvbnN0IHNVPW5ldyBlcigiTWF0SGludCIpO2NsYXNzIGxVe2NvbnN0cnVjdG9yKCl7dGhpcy5hbGlnbj0ic3RhcnQiLHRoaXMuaWQ9Im1hdC1oaW50LSIrclUrK319bFUuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGxVKX0sbFUuybVkaXI9aG8oe3R5cGU6bFUsc2VsZWN0b3JzOltbIm1hdC1oaW50Il1dLGhvc3RBdHRyczpbMSwibWF0LWhpbnQiXSxob3N0VmFyczo0LGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MiZlJiYoeW0oImlkIixuLmlkKSgiYWxpZ24iLG51bGwpLGN1KCJtYXQtZm9ybS1maWVsZC1oaW50LWVuZCIsImVuZCI9PT1uLmFsaWduKSl9LGlucHV0czp7YWxpZ246ImFsaWduIixpZDoiaWQifSxmZWF0dXJlczpbamgoW3twcm92aWRlOnNVLHVzZUV4aXN0aW5nOmxVfV0pXX0pLGxVLnByb3BEZWNvcmF0b3JzPXthbGlnbjpbe3R5cGU6Ul99XSxpZDpbe3R5cGU6Ul99XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihsVSxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJtYXQtaGludCIsaG9zdDp7Y2xhc3M6Im1hdC1oaW50IiwiW2NsYXNzLm1hdC1mb3JtLWZpZWxkLWhpbnQtZW5kXSI6J2FsaWduID09PSAiZW5kIicsIlthdHRyLmlkXSI6ImlkIiwiW2F0dHIuYWxpZ25dIjoibnVsbCJ9LHByb3ZpZGVyczpbe3Byb3ZpZGU6c1UsdXNlRXhpc3Rpbmc6bFV9XX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW119KSx7YWxpZ246W3t0eXBlOlJffV0saWQ6W3t0eXBlOlJffV19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIGNVe31jVS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8Y1UpfSxjVS7JtWRpcj1obyh7dHlwZTpjVSxzZWxlY3RvcnM6W1sibWF0LWxhYmVsIl1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihjVSxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJtYXQtbGFiZWwifV19XSxudWxsLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgZFV7fWRVLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxkVSl9LGRVLsm1ZGlyPWhvKHt0eXBlOmRVLHNlbGVjdG9yczpbWyJtYXQtcGxhY2Vob2xkZXIiXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGRVLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6Im1hdC1wbGFjZWhvbGRlciJ9XX1dLG51bGwsbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCBwVT1uZXcgZXIoIk1hdFByZWZpeCIpO2NsYXNzIG1Ve31tVS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8bVUpfSxtVS7JtWRpcj1obyh7dHlwZTptVSxzZWxlY3RvcnM6W1siIiwibWF0UHJlZml4IiwiIl1dLGZlYXR1cmVzOltqaChbe3Byb3ZpZGU6cFUsdXNlRXhpc3Rpbmc6bVV9XSldfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihtVSxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJbbWF0UHJlZml4XSIscHJvdmlkZXJzOlt7cHJvdmlkZTpwVSx1c2VFeGlzdGluZzptVX1dfV19XSxudWxsLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgZlU9bmV3IGVyKCJNYXRTdWZmaXgiKTtjbGFzcyB1VXt9dVUuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHVVKX0sdVUuybVkaXI9aG8oe3R5cGU6dVUsc2VsZWN0b3JzOltbIiIsIm1hdFN1ZmZpeCIsIiJdXSxmZWF0dXJlczpbamgoW3twcm92aWRlOmZVLHVzZUV4aXN0aW5nOnVVfV0pXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIodVUsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW21hdFN1ZmZpeF0iLHByb3ZpZGVyczpbe3Byb3ZpZGU6ZlUsdXNlRXhpc3Rpbmc6dVV9XX1dfV0sbnVsbCxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmxldCBnVT0wO2NvbnN0IGhVPUlGKGNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMuX2VsZW1lbnRSZWY9dH19LCJwcmltYXJ5IiksYlU9bmV3IGVyKCJNQVRfRk9STV9GSUVMRF9ERUZBVUxUX09QVElPTlMiKSx5VT1uZXcgZXIoIk1hdEZvcm1GaWVsZCIpO2NsYXNzIF9VIGV4dGVuZHMgaFV7Y29uc3RydWN0b3IodCxlLG4sbyxpLGEscixzKXtzdXBlcih0KSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZj1lLHRoaXMuX2Rpcj1vLHRoaXMuX2RlZmF1bHRzPWksdGhpcy5fcGxhdGZvcm09YSx0aGlzLl9uZ1pvbmU9cix0aGlzLl9vdXRsaW5lR2FwQ2FsY3VsYXRpb25OZWVkZWRJbW1lZGlhdGVseT0hMSx0aGlzLl9vdXRsaW5lR2FwQ2FsY3VsYXRpb25OZWVkZWRPblN0YWJsZT0hMSx0aGlzLl9kZXN0cm95ZWQ9bmV3IEIsdGhpcy5fc2hvd0Fsd2F5c0FuaW1hdGU9ITEsdGhpcy5fc3Vic2NyaXB0QW5pbWF0aW9uU3RhdGU9IiIsdGhpcy5faGludExhYmVsPSIiLHRoaXMuX2hpbnRMYWJlbElkPSJtYXQtaGludC0iK2dVKyssdGhpcy5fbGFiZWxJZD0ibWF0LWZvcm0tZmllbGQtbGFiZWwtIitnVSsrLHRoaXMuZmxvYXRMYWJlbD10aGlzLl9nZXREZWZhdWx0RmxvYXRMYWJlbFN0YXRlKCksdGhpcy5fYW5pbWF0aW9uc0VuYWJsZWQ9Ik5vb3BBbmltYXRpb25zIiE9PXMsdGhpcy5hcHBlYXJhbmNlPWkmJmkuYXBwZWFyYW5jZT9pLmFwcGVhcmFuY2U6ImxlZ2FjeSIsdGhpcy5faGlkZVJlcXVpcmVkTWFya2VyPSEoIWl8fG51bGw9PWkuaGlkZVJlcXVpcmVkTWFya2VyKSYmaS5oaWRlUmVxdWlyZWRNYXJrZXJ9Z2V0IGFwcGVhcmFuY2UoKXtyZXR1cm4gdGhpcy5fYXBwZWFyYW5jZX1zZXQgYXBwZWFyYW5jZSh0KXtjb25zdCBlPXRoaXMuX2FwcGVhcmFuY2U7dGhpcy5fYXBwZWFyYW5jZT10fHx0aGlzLl9kZWZhdWx0cyYmdGhpcy5fZGVmYXVsdHMuYXBwZWFyYW5jZXx8ImxlZ2FjeSIsIm91dGxpbmUiPT09dGhpcy5fYXBwZWFyYW5jZSYmZSE9PXQmJih0aGlzLl9vdXRsaW5lR2FwQ2FsY3VsYXRpb25OZWVkZWRPblN0YWJsZT0hMCl9Z2V0IGhpZGVSZXF1aXJlZE1hcmtlcigpe3JldHVybiB0aGlzLl9oaWRlUmVxdWlyZWRNYXJrZXJ9c2V0IGhpZGVSZXF1aXJlZE1hcmtlcih0KXt0aGlzLl9oaWRlUmVxdWlyZWRNYXJrZXI9ZUgodCl9X3Nob3VsZEFsd2F5c0Zsb2F0KCl7cmV0dXJuImFsd2F5cyI9PT10aGlzLmZsb2F0TGFiZWwmJiF0aGlzLl9zaG93QWx3YXlzQW5pbWF0ZX1fY2FuTGFiZWxGbG9hdCgpe3JldHVybiJuZXZlciIhPT10aGlzLmZsb2F0TGFiZWx9Z2V0IGhpbnRMYWJlbCgpe3JldHVybiB0aGlzLl9oaW50TGFiZWx9c2V0IGhpbnRMYWJlbCh0KXt0aGlzLl9oaW50TGFiZWw9dCx0aGlzLl9wcm9jZXNzSGludHMoKX1nZXQgZmxvYXRMYWJlbCgpe3JldHVybiJsZWdhY3kiIT09dGhpcy5hcHBlYXJhbmNlJiYibmV2ZXIiPT09dGhpcy5fZmxvYXRMYWJlbD8iYXV0byI6dGhpcy5fZmxvYXRMYWJlbH1zZXQgZmxvYXRMYWJlbCh0KXt0IT09dGhpcy5fZmxvYXRMYWJlbCYmKHRoaXMuX2Zsb2F0TGFiZWw9dHx8dGhpcy5fZ2V0RGVmYXVsdEZsb2F0TGFiZWxTdGF0ZSgpLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpKX1nZXQgX2NvbnRyb2woKXtyZXR1cm4gdGhpcy5fZXhwbGljaXRGb3JtRmllbGRDb250cm9sfHx0aGlzLl9jb250cm9sTm9uU3RhdGljfHx0aGlzLl9jb250cm9sU3RhdGljfXNldCBfY29udHJvbCh0KXt0aGlzLl9leHBsaWNpdEZvcm1GaWVsZENvbnRyb2w9dH1nZXRMYWJlbElkKCl7cmV0dXJuIHRoaXMuX2hhc0Zsb2F0aW5nTGFiZWwoKT90aGlzLl9sYWJlbElkOm51bGx9Z2V0Q29ubmVjdGVkT3ZlcmxheU9yaWdpbigpe3JldHVybiB0aGlzLl9jb25uZWN0aW9uQ29udGFpbmVyUmVmfHx0aGlzLl9lbGVtZW50UmVmfW5nQWZ0ZXJDb250ZW50SW5pdCgpe3RoaXMuX3ZhbGlkYXRlQ29udHJvbENoaWxkKCk7Y29uc3QgdD10aGlzLl9jb250cm9sO3QuY29udHJvbFR5cGUmJnRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKGBtYXQtZm9ybS1maWVsZC10eXBlLSR7dC5jb250cm9sVHlwZX1gKSx0LnN0YXRlQ2hhbmdlcy5waXBlKEJlKG51bGwpKS5zdWJzY3JpYmUoKCgpPT57dGhpcy5fdmFsaWRhdGVQbGFjZWhvbGRlcnMoKSx0aGlzLl9zeW5jRGVzY3JpYmVkQnlJZHMoKSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKX0pKSx0Lm5nQ29udHJvbCYmdC5uZ0NvbnRyb2wudmFsdWVDaGFuZ2VzJiZ0Lm5nQ29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShqZSh0aGlzLl9kZXN0cm95ZWQpKS5zdWJzY3JpYmUoKCgpPT50aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSkpLHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9Pnt0aGlzLl9uZ1pvbmUub25TdGFibGUucGlwZShqZSh0aGlzLl9kZXN0cm95ZWQpKS5zdWJzY3JpYmUoKCgpPT57dGhpcy5fb3V0bGluZUdhcENhbGN1bGF0aW9uTmVlZGVkT25TdGFibGUmJnRoaXMudXBkYXRlT3V0bGluZUdhcCgpfSkpfSkpLHBlKHRoaXMuX3ByZWZpeENoaWxkcmVuLmNoYW5nZXMsdGhpcy5fc3VmZml4Q2hpbGRyZW4uY2hhbmdlcykuc3Vic2NyaWJlKCgoKT0+e3RoaXMuX291dGxpbmVHYXBDYWxjdWxhdGlvbk5lZWRlZE9uU3RhYmxlPSEwLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpfSkpLHRoaXMuX2hpbnRDaGlsZHJlbi5jaGFuZ2VzLnBpcGUoQmUobnVsbCkpLnN1YnNjcmliZSgoKCk9Pnt0aGlzLl9wcm9jZXNzSGludHMoKSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKX0pKSx0aGlzLl9lcnJvckNoaWxkcmVuLmNoYW5nZXMucGlwZShCZShudWxsKSkuc3Vic2NyaWJlKCgoKT0+e3RoaXMuX3N5bmNEZXNjcmliZWRCeUlkcygpLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpfSkpLHRoaXMuX2RpciYmdGhpcy5fZGlyLmNoYW5nZS5waXBlKGplKHRoaXMuX2Rlc3Ryb3llZCkpLnN1YnNjcmliZSgoKCk9PnsiZnVuY3Rpb24iPT10eXBlb2YgcmVxdWVzdEFuaW1hdGlvbkZyYW1lP3RoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9PntyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCgpPT50aGlzLnVwZGF0ZU91dGxpbmVHYXAoKSkpfSkpOnRoaXMudXBkYXRlT3V0bGluZUdhcCgpfSkpfW5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpe3RoaXMuX3ZhbGlkYXRlQ29udHJvbENoaWxkKCksdGhpcy5fb3V0bGluZUdhcENhbGN1bGF0aW9uTmVlZGVkSW1tZWRpYXRlbHkmJnRoaXMudXBkYXRlT3V0bGluZUdhcCgpfW5nQWZ0ZXJWaWV3SW5pdCgpe3RoaXMuX3N1YnNjcmlwdEFuaW1hdGlvblN0YXRlPSJlbnRlciIsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpfW5nT25EZXN0cm95KCl7dGhpcy5fZGVzdHJveWVkLm5leHQoKSx0aGlzLl9kZXN0cm95ZWQuY29tcGxldGUoKX1fc2hvdWxkRm9yd2FyZCh0KXtjb25zdCBlPXRoaXMuX2NvbnRyb2w/dGhpcy5fY29udHJvbC5uZ0NvbnRyb2w6bnVsbDtyZXR1cm4gZSYmZVt0XX1faGFzUGxhY2Vob2xkZXIoKXtyZXR1cm4hISh0aGlzLl9jb250cm9sJiZ0aGlzLl9jb250cm9sLnBsYWNlaG9sZGVyfHx0aGlzLl9wbGFjZWhvbGRlckNoaWxkKX1faGFzTGFiZWwoKXtyZXR1cm4hKCF0aGlzLl9sYWJlbENoaWxkTm9uU3RhdGljJiYhdGhpcy5fbGFiZWxDaGlsZFN0YXRpYyl9X3Nob3VsZExhYmVsRmxvYXQoKXtyZXR1cm4gdGhpcy5fY2FuTGFiZWxGbG9hdCgpJiYodGhpcy5fY29udHJvbCYmdGhpcy5fY29udHJvbC5zaG91bGRMYWJlbEZsb2F0fHx0aGlzLl9zaG91bGRBbHdheXNGbG9hdCgpKX1faGlkZUNvbnRyb2xQbGFjZWhvbGRlcigpe3JldHVybiJsZWdhY3kiPT09dGhpcy5hcHBlYXJhbmNlJiYhdGhpcy5faGFzTGFiZWwoKXx8dGhpcy5faGFzTGFiZWwoKSYmIXRoaXMuX3Nob3VsZExhYmVsRmxvYXQoKX1faGFzRmxvYXRpbmdMYWJlbCgpe3JldHVybiB0aGlzLl9oYXNMYWJlbCgpfHwibGVnYWN5Ij09PXRoaXMuYXBwZWFyYW5jZSYmdGhpcy5faGFzUGxhY2Vob2xkZXIoKX1fZ2V0RGlzcGxheWVkTWVzc2FnZXMoKXtyZXR1cm4gdGhpcy5fZXJyb3JDaGlsZHJlbiYmdGhpcy5fZXJyb3JDaGlsZHJlbi5sZW5ndGg+MCYmdGhpcy5fY29udHJvbC5lcnJvclN0YXRlPyJlcnJvciI6ImhpbnQifV9hbmltYXRlQW5kTG9ja0xhYmVsKCl7dGhpcy5faGFzRmxvYXRpbmdMYWJlbCgpJiZ0aGlzLl9jYW5MYWJlbEZsb2F0KCkmJih0aGlzLl9hbmltYXRpb25zRW5hYmxlZCYmdGhpcy5fbGFiZWwmJih0aGlzLl9zaG93QWx3YXlzQW5pbWF0ZT0hMCxsZSh0aGlzLl9sYWJlbC5uYXRpdmVFbGVtZW50LCJ0cmFuc2l0aW9uZW5kIikucGlwZSh2ZSgxKSkuc3Vic2NyaWJlKCgoKT0+e3RoaXMuX3Nob3dBbHdheXNBbmltYXRlPSExfSkpKSx0aGlzLmZsb2F0TGFiZWw9ImFsd2F5cyIsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCkpfV92YWxpZGF0ZVBsYWNlaG9sZGVycygpe2lmKHRoaXMuX2NvbnRyb2wucGxhY2Vob2xkZXImJnRoaXMuX3BsYWNlaG9sZGVyQ2hpbGQmJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSkKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCnRocm93KGZ1bmN0aW9uIHQoKXtyZXR1cm4gRXJyb3IoIlBsYWNlaG9sZGVyIGF0dHJpYnV0ZSBhbmQgY2hpbGQgZWxlbWVudCB3ZXJlIGJvdGggc3BlY2lmaWVkLiIpfSkoKX1fcHJvY2Vzc0hpbnRzKCl7dGhpcy5fdmFsaWRhdGVIaW50cygpLHRoaXMuX3N5bmNEZXNjcmliZWRCeUlkcygpfV92YWxpZGF0ZUhpbnRzKCl7aWYodGhpcy5faGludENoaWxkcmVuJiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkpe2xldCB0LGU7dGhpcy5faGludENoaWxkcmVuLmZvckVhY2goKG49PntpZigic3RhcnQiPT09bi5hbGlnbil7aWYodHx8dGhpcy5oaW50TGFiZWwpdGhyb3cgYVUoInN0YXJ0Iik7dD1ufWVsc2UgaWYoImVuZCI9PT1uLmFsaWduKXtpZihlKXRocm93IGFVKCJlbmQiKTtlPW59fSkpfX1fZ2V0RGVmYXVsdEZsb2F0TGFiZWxTdGF0ZSgpe3JldHVybiB0aGlzLl9kZWZhdWx0cyYmdGhpcy5fZGVmYXVsdHMuZmxvYXRMYWJlbHx8ImF1dG8ifV9zeW5jRGVzY3JpYmVkQnlJZHMoKXtpZih0aGlzLl9jb250cm9sKXtsZXQgdD1bXTtpZih0aGlzLl9jb250cm9sLnVzZXJBcmlhRGVzY3JpYmVkQnkmJiJzdHJpbmciPT10eXBlb2YgdGhpcy5fY29udHJvbC51c2VyQXJpYURlc2NyaWJlZEJ5JiZ0LnB1c2goLi4udGhpcy5fY29udHJvbC51c2VyQXJpYURlc2NyaWJlZEJ5LnNwbGl0KCIgIikpLCJoaW50Ij09PXRoaXMuX2dldERpc3BsYXllZE1lc3NhZ2VzKCkpe2NvbnN0IGU9dGhpcy5faGludENoaWxkcmVuP3RoaXMuX2hpbnRDaGlsZHJlbi5maW5kKCh0PT4ic3RhcnQiPT09dC5hbGlnbikpOm51bGwsbj10aGlzLl9oaW50Q2hpbGRyZW4/dGhpcy5faGludENoaWxkcmVuLmZpbmQoKHQ9PiJlbmQiPT09dC5hbGlnbikpOm51bGw7ZT90LnB1c2goZS5pZCk6dGhpcy5faGludExhYmVsJiZ0LnB1c2godGhpcy5faGludExhYmVsSWQpLG4mJnQucHVzaChuLmlkKX1lbHNlIHRoaXMuX2Vycm9yQ2hpbGRyZW4mJnQucHVzaCguLi50aGlzLl9lcnJvckNoaWxkcmVuLm1hcCgodD0+dC5pZCkpKTt0aGlzLl9jb250cm9sLnNldERlc2NyaWJlZEJ5SWRzKHQpfX1fdmFsaWRhdGVDb250cm9sQ2hpbGQoKXtpZighdGhpcy5fY29udHJvbCYmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpKXRocm93KGZ1bmN0aW9uIHQoKXtyZXR1cm4gRXJyb3IoIm1hdC1mb3JtLWZpZWxkIG11c3QgY29udGFpbiBhIE1hdEZvcm1GaWVsZENvbnRyb2wuIil9KSgpfXVwZGF0ZU91dGxpbmVHYXAoKXtjb25zdCB0PXRoaXMuX2xhYmVsP3RoaXMuX2xhYmVsLm5hdGl2ZUVsZW1lbnQ6bnVsbDtpZigib3V0bGluZSIhPT10aGlzLmFwcGVhcmFuY2V8fCF0fHwhdC5jaGlsZHJlbi5sZW5ndGh8fCF0LnRleHRDb250ZW50LnRyaW0oKSlyZXR1cm47aWYoIXRoaXMuX3BsYXRmb3JtLmlzQnJvd3NlcilyZXR1cm47aWYoIXRoaXMuX2lzQXR0YWNoZWRUb0RPTSgpKXJldHVybiB2b2lkKHRoaXMuX291dGxpbmVHYXBDYWxjdWxhdGlvbk5lZWRlZEltbWVkaWF0ZWx5PSEwKTtsZXQgZT0wLG49MDtjb25zdCBvPXRoaXMuX2Nvbm5lY3Rpb25Db250YWluZXJSZWYubmF0aXZlRWxlbWVudCxpPW8ucXVlcnlTZWxlY3RvckFsbCgiLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtc3RhcnQiKSxhPW8ucXVlcnlTZWxlY3RvckFsbCgiLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtZ2FwIik7aWYodGhpcy5fbGFiZWwmJnRoaXMuX2xhYmVsLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoKXtjb25zdCBpPW8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7aWYoMD09PWkud2lkdGgmJjA9PT1pLmhlaWdodClyZXR1cm4gdGhpcy5fb3V0bGluZUdhcENhbGN1bGF0aW9uTmVlZGVkT25TdGFibGU9ITAsdm9pZCh0aGlzLl9vdXRsaW5lR2FwQ2FsY3VsYXRpb25OZWVkZWRJbW1lZGlhdGVseT0hMSk7Y29uc3QgYT10aGlzLl9nZXRTdGFydEVuZChpKSxyPXQuY2hpbGRyZW4scz10aGlzLl9nZXRTdGFydEVuZChyWzBdLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKTtsZXQgbD0wO2ZvcihsZXQgdD0wO3Q8ci5sZW5ndGg7dCsrKWwrPXJbdF0ub2Zmc2V0V2lkdGg7ZT1NYXRoLmFicyhzLWEpLTUsbj1sPjA/Ljc1KmwrMTA6MH1mb3IobGV0IHQ9MDt0PGkubGVuZ3RoO3QrKylpW3RdLnN0eWxlLndpZHRoPWAke2V9cHhgO2ZvcihsZXQgdD0wO3Q8YS5sZW5ndGg7dCsrKWFbdF0uc3R5bGUud2lkdGg9YCR7bn1weGA7dGhpcy5fb3V0bGluZUdhcENhbGN1bGF0aW9uTmVlZGVkT25TdGFibGU9dGhpcy5fb3V0bGluZUdhcENhbGN1bGF0aW9uTmVlZGVkSW1tZWRpYXRlbHk9ITF9X2dldFN0YXJ0RW5kKHQpe3JldHVybiB0aGlzLl9kaXImJiJydGwiPT09dGhpcy5fZGlyLnZhbHVlP3QucmlnaHQ6dC5sZWZ0fV9pc0F0dGFjaGVkVG9ET00oKXtjb25zdCB0PXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtpZih0LmdldFJvb3ROb2RlKXtjb25zdCBlPXQuZ2V0Um9vdE5vZGUoKTtyZXR1cm4gZSYmZSE9PXR9cmV0dXJuIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jb250YWlucyh0KX19X1UuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fF9VKShnZihLaCksZ2YoT2IpLGdmKEtoKSxnZih2Riw4KSxnZihiVSw4KSxnZihjSCksZ2YobUMpLGdmKGNrLDgpKX0sX1UuybVjbXA9c28oe3R5cGU6X1Usc2VsZWN0b3JzOltbIm1hdC1mb3JtLWZpZWxkIl1dLGNvbnRlbnRRdWVyaWVzOmZ1bmN0aW9uIHQoZSxuLG8pe2lmKDEmZSYmKGp5KG8saVUsNSksankobyxpVSw3KSxqeShvLGNVLDUpLGp5KG8sY1UsNyksankobyxkVSw1KSxqeShvLGVVLDUpLGp5KG8sc1UsNSksankobyxwVSw1KSxqeShvLGZVLDUpKSwyJmUpe2xldCB0O0J5KHQ9VXkoKSkmJihuLl9jb250cm9sTm9uU3RhdGljPXQuZmlyc3QpLEJ5KHQ9VXkoKSkmJihuLl9jb250cm9sU3RhdGljPXQuZmlyc3QpLEJ5KHQ9VXkoKSkmJihuLl9sYWJlbENoaWxkTm9uU3RhdGljPXQuZmlyc3QpLEJ5KHQ9VXkoKSkmJihuLl9sYWJlbENoaWxkU3RhdGljPXQuZmlyc3QpLEJ5KHQ9VXkoKSkmJihuLl9wbGFjZWhvbGRlckNoaWxkPXQuZmlyc3QpLEJ5KHQ9VXkoKSkmJihuLl9lcnJvckNoaWxkcmVuPXQpLEJ5KHQ9VXkoKSkmJihuLl9oaW50Q2hpbGRyZW49dCksQnkodD1VeSgpKSYmKG4uX3ByZWZpeENoaWxkcmVuPXQpLEJ5KHQ9VXkoKSkmJihuLl9zdWZmaXhDaGlsZHJlbj10KX19LHZpZXdRdWVyeTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiYoVnkoRmosNSksVnkoTGosNyksVnkoQmosNSksVnkoVmosNSkpLDImZSl7bGV0IHQ7QnkodD1VeSgpKSYmKG4udW5kZXJsaW5lUmVmPXQuZmlyc3QpLEJ5KHQ9VXkoKSkmJihuLl9jb25uZWN0aW9uQ29udGFpbmVyUmVmPXQuZmlyc3QpLEJ5KHQ9VXkoKSkmJihuLl9pbnB1dENvbnRhaW5lclJlZj10LmZpcnN0KSxCeSh0PVV5KCkpJiYobi5fbGFiZWw9dC5maXJzdCl9fSxob3N0QXR0cnM6WzEsIm1hdC1mb3JtLWZpZWxkIl0saG9zdFZhcnM6NDAsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsyJmUmJmN1KCJtYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLXN0YW5kYXJkIiwic3RhbmRhcmQiPT1uLmFwcGVhcmFuY2UpKCJtYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwiLCJmaWxsIj09bi5hcHBlYXJhbmNlKSgibWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIiwib3V0bGluZSI9PW4uYXBwZWFyYW5jZSkoIm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IiwibGVnYWN5Ij09bi5hcHBlYXJhbmNlKSgibWF0LWZvcm0tZmllbGQtaW52YWxpZCIsbi5fY29udHJvbC5lcnJvclN0YXRlKSgibWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IixuLl9jYW5MYWJlbEZsb2F0KCkpKCJtYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXQiLG4uX3Nob3VsZExhYmVsRmxvYXQoKSkoIm1hdC1mb3JtLWZpZWxkLWhhcy1sYWJlbCIsbi5faGFzRmxvYXRpbmdMYWJlbCgpKSgibWF0LWZvcm0tZmllbGQtaGlkZS1wbGFjZWhvbGRlciIsbi5faGlkZUNvbnRyb2xQbGFjZWhvbGRlcigpKSgibWF0LWZvcm0tZmllbGQtZGlzYWJsZWQiLG4uX2NvbnRyb2wuZGlzYWJsZWQpKCJtYXQtZm9ybS1maWVsZC1hdXRvZmlsbGVkIixuLl9jb250cm9sLmF1dG9maWxsZWQpKCJtYXQtZm9jdXNlZCIsbi5fY29udHJvbC5mb2N1c2VkKSgibmctdW50b3VjaGVkIixuLl9zaG91bGRGb3J3YXJkKCJ1bnRvdWNoZWQiKSkoIm5nLXRvdWNoZWQiLG4uX3Nob3VsZEZvcndhcmQoInRvdWNoZWQiKSkoIm5nLXByaXN0aW5lIixuLl9zaG91bGRGb3J3YXJkKCJwcmlzdGluZSIpKSgibmctZGlydHkiLG4uX3Nob3VsZEZvcndhcmQoImRpcnR5IikpKCJuZy12YWxpZCIsbi5fc2hvdWxkRm9yd2FyZCgidmFsaWQiKSkoIm5nLWludmFsaWQiLG4uX3Nob3VsZEZvcndhcmQoImludmFsaWQiKSkoIm5nLXBlbmRpbmciLG4uX3Nob3VsZEZvcndhcmQoInBlbmRpbmciKSkoIl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIiwhbi5fYW5pbWF0aW9uc0VuYWJsZWQpfSxpbnB1dHM6e2NvbG9yOiJjb2xvciIsZmxvYXRMYWJlbDoiZmxvYXRMYWJlbCIsYXBwZWFyYW5jZToiYXBwZWFyYW5jZSIsaGlkZVJlcXVpcmVkTWFya2VyOiJoaWRlUmVxdWlyZWRNYXJrZXIiLGhpbnRMYWJlbDoiaGludExhYmVsIn0sZXhwb3J0QXM6WyJtYXRGb3JtRmllbGQiXSxmZWF0dXJlczpbamgoW3twcm92aWRlOnlVLHVzZUV4aXN0aW5nOl9VfV0pLFFwXSxuZ0NvbnRlbnRTZWxlY3RvcnM6WyIqIiwiW21hdFByZWZpeF0iLCJtYXQtcGxhY2Vob2xkZXIiLCJtYXQtbGFiZWwiLCJbbWF0U3VmZml4XSIsIm1hdC1lcnJvciIsIm1hdC1oaW50Om5vdChbYWxpZ249J2VuZCddKSIsIm1hdC1oaW50W2FsaWduPSdlbmQnXSJdLGRlY2xzOjE1LHZhcnM6OCxjb25zdHM6W1sxLCJtYXQtZm9ybS1maWVsZC13cmFwcGVyIl0sWzEsIm1hdC1mb3JtLWZpZWxkLWZsZXgiLDMsImNsaWNrIl0sWyJjb25uZWN0aW9uQ29udGFpbmVyIiwiIl0sWzQsIm5nSWYiXSxbImNsYXNzIiwibWF0LWZvcm0tZmllbGQtcHJlZml4Iiw0LCJuZ0lmIl0sWzEsIm1hdC1mb3JtLWZpZWxkLWluZml4Il0sWyJpbnB1dENvbnRhaW5lciIsIiJdLFsxLCJtYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIl0sWyJjbGFzcyIsIm1hdC1mb3JtLWZpZWxkLWxhYmVsIiwzLCJjZGtPYnNlcnZlQ29udGVudERpc2FibGVkIiwiaWQiLCJtYXQtZW1wdHkiLCJtYXQtZm9ybS1maWVsZC1lbXB0eSIsIm1hdC1hY2NlbnQiLCJtYXQtd2FybiIsIm5nU3dpdGNoIiwiY2RrT2JzZXJ2ZUNvbnRlbnQiLDQsIm5nSWYiXSxbImNsYXNzIiwibWF0LWZvcm0tZmllbGQtc3VmZml4Iiw0LCJuZ0lmIl0sWyJjbGFzcyIsIm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZSIsNCwibmdJZiJdLFsxLCJtYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlciIsMywibmdTd2l0Y2giXSxbNCwibmdTd2l0Y2hDYXNlIl0sWyJjbGFzcyIsIm1hdC1mb3JtLWZpZWxkLWhpbnQtd3JhcHBlciIsNCwibmdTd2l0Y2hDYXNlIl0sWzEsIm1hdC1mb3JtLWZpZWxkLW91dGxpbmUiXSxbMSwibWF0LWZvcm0tZmllbGQtb3V0bGluZS1zdGFydCJdLFsxLCJtYXQtZm9ybS1maWVsZC1vdXRsaW5lLWdhcCJdLFsxLCJtYXQtZm9ybS1maWVsZC1vdXRsaW5lLWVuZCJdLFsxLCJtYXQtZm9ybS1maWVsZC1vdXRsaW5lIiwibWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGljayJdLFsxLCJtYXQtZm9ybS1maWVsZC1wcmVmaXgiXSxbMSwibWF0LWZvcm0tZmllbGQtbGFiZWwiLDMsImNka09ic2VydmVDb250ZW50RGlzYWJsZWQiLCJpZCIsIm5nU3dpdGNoIiwiY2RrT2JzZXJ2ZUNvbnRlbnQiXSxbImxhYmVsIiwiIl0sWyJjbGFzcyIsIm1hdC1wbGFjZWhvbGRlci1yZXF1aXJlZCBtYXQtZm9ybS1maWVsZC1yZXF1aXJlZC1tYXJrZXIiLCJhcmlhLWhpZGRlbiIsInRydWUiLDQsIm5nSWYiXSxbImFyaWEtaGlkZGVuIiwidHJ1ZSIsMSwibWF0LXBsYWNlaG9sZGVyLXJlcXVpcmVkIiwibWF0LWZvcm0tZmllbGQtcmVxdWlyZWQtbWFya2VyIl0sWzEsIm1hdC1mb3JtLWZpZWxkLXN1ZmZpeCJdLFsxLCJtYXQtZm9ybS1maWVsZC11bmRlcmxpbmUiXSxbInVuZGVybGluZSIsIiJdLFsxLCJtYXQtZm9ybS1maWVsZC1yaXBwbGUiXSxbMSwibWF0LWZvcm0tZmllbGQtaGludC13cmFwcGVyIl0sWyJjbGFzcyIsIm1hdC1oaW50IiwzLCJpZCIsNCwibmdJZiJdLFsxLCJtYXQtZm9ybS1maWVsZC1oaW50LXNwYWNlciJdLFsxLCJtYXQtaGludCIsMywiaWQiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKEhmKCRqKSxDZigwLCJkaXYiLDApLENmKDEsImRpdiIsMSwyKSxSZigiY2xpY2siLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLl9jb250cm9sLm9uQ29udGFpbmVyQ2xpY2smJm4uX2NvbnRyb2wub25Db250YWluZXJDbGljayhlKX0pKSxIbSgzLGpqLDksMCwibmctY29udGFpbmVyIiwzKSxIbSg0LFVqLDIsMCwiZGl2Iiw0KSxDZig1LCJkaXYiLDUsNiksRmYoNyksQ2YoOCwic3BhbiIsNyksSG0oOSxxaiw1LDE2LCJsYWJlbCIsOCksTWYoKSxNZigpLEhtKDEwLFpqLDIsMCwiZGl2Iiw5KSxNZigpLEhtKDExLFhqLDMsNCwiZGl2IiwxMCksQ2YoMTIsImRpdiIsMTEpLEhtKDEzLEtqLDIsMSwiZGl2IiwxMiksSG0oMTQsUWosNSwyLCJkaXYiLDEzKSxNZigpLE1mKCkpLDImZSYmKERjKDMpLGJmKCJuZ0lmIiwib3V0bGluZSI9PW4uYXBwZWFyYW5jZSksRGMoMSksYmYoIm5nSWYiLG4uX3ByZWZpeENoaWxkcmVuLmxlbmd0aCksRGMoNSksYmYoIm5nSWYiLG4uX2hhc0Zsb2F0aW5nTGFiZWwoKSksRGMoMSksYmYoIm5nSWYiLG4uX3N1ZmZpeENoaWxkcmVuLmxlbmd0aCksRGMoMSksYmYoIm5nSWYiLCJvdXRsaW5lIiE9bi5hcHBlYXJhbmNlKSxEYygxKSxiZigibmdTd2l0Y2giLG4uX2dldERpc3BsYXllZE1lc3NhZ2VzKCkpLERjKDEpLGJmKCJuZ1N3aXRjaENhc2UiLCJlcnJvciIpLERjKDEpLGJmKCJuZ1N3aXRjaENhc2UiLCJoaW50IikpfSxkaXJlY3RpdmVzOltQdixEdixSdixQSF0sc3R5bGVzOlsiLm1hdC1mb3JtLWZpZWxke2Rpc3BsYXk6aW5saW5lLWJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlO3RleHQtYWxpZ246bGVmdH1bZGlyPXJ0bF0gLm1hdC1mb3JtLWZpZWxke3RleHQtYWxpZ246cmlnaHR9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJ7cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1mb3JtLWZpZWxkLWZsZXh7ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpiYXNlbGluZTtib3gtc2l6aW5nOmJvcmRlci1ib3g7d2lkdGg6MTAwJX0ubWF0LWZvcm0tZmllbGQtcHJlZml4LC5tYXQtZm9ybS1maWVsZC1zdWZmaXh7d2hpdGUtc3BhY2U6bm93cmFwO2ZsZXg6bm9uZTtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LWZvcm0tZmllbGQtaW5maXh7ZGlzcGxheTpibG9jaztwb3NpdGlvbjpyZWxhdGl2ZTtmbGV4OmF1dG87bWluLXdpZHRoOjA7d2lkdGg6MTgwcHh9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWZvcm0tZmllbGQtaW5maXh7Ym9yZGVyLWltYWdlOmxpbmVhci1ncmFkaWVudCh0cmFuc3BhcmVudCwgdHJhbnNwYXJlbnQpfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVye3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDtib3gtc2l6aW5nOmNvbnRlbnQtYm94O3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7b3ZlcmZsb3c6aGlkZGVuO3BvaW50ZXItZXZlbnRzOm5vbmV9W2Rpcj1ydGxdIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVye2xlZnQ6YXV0bztyaWdodDowfS5tYXQtZm9ybS1maWVsZC1sYWJlbHtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7Zm9udDppbmhlcml0O3BvaW50ZXItZXZlbnRzOm5vbmU7d2lkdGg6MTAwJTt3aGl0ZS1zcGFjZTpub3dyYXA7dGV4dC1vdmVyZmxvdzplbGxpcHNpcztvdmVyZmxvdzpoaWRkZW47dHJhbnNmb3JtLW9yaWdpbjowIDA7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSksY29sb3IgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSksd2lkdGggNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7ZGlzcGxheTpub25lfVtkaXI9cnRsXSAubWF0LWZvcm0tZmllbGQtbGFiZWx7dHJhbnNmb3JtLW9yaWdpbjoxMDAlIDA7bGVmdDphdXRvO3JpZ2h0OjB9Lm1hdC1mb3JtLWZpZWxkLWVtcHR5Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0IC5tYXQtZm9ybS1maWVsZC1sYWJlbHtkaXNwbGF5OmJsb2NrfS5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sOi13ZWJraXQtYXV0b2ZpbGwrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVse2Rpc3BsYXk6bm9uZX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sOi13ZWJraXQtYXV0b2ZpbGwrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVse2Rpc3BsYXk6YmxvY2s7dHJhbnNpdGlvbjpub25lfS5tYXQtaW5wdXQtc2VydmVyOmZvY3VzKy5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbCwubWF0LWlucHV0LXNlcnZlcltwbGFjZWhvbGRlcl06bm90KDpwbGFjZWhvbGRlci1zaG93bikrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVse2Rpc3BsYXk6bm9uZX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtaW5wdXQtc2VydmVyOmZvY3VzKy5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbCwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtaW5wdXQtc2VydmVyW3BsYWNlaG9sZGVyXTpub3QoOnBsYWNlaG9sZGVyLXNob3duKSsubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7ZGlzcGxheTpibG9ja30ubWF0LWZvcm0tZmllbGQtbGFiZWw6bm90KC5tYXQtZm9ybS1maWVsZC1lbXB0eSl7dHJhbnNpdGlvbjpub25lfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmV7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MTAwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zZm9ybTpzY2FsZTNkKDEsIDEuMDAwMSwgMSl9Lm1hdC1mb3JtLWZpZWxkLXJpcHBsZXtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7d2lkdGg6MTAwJTt0cmFuc2Zvcm0tb3JpZ2luOjUwJTt0cmFuc2Zvcm06c2NhbGVYKDAuNSk7b3BhY2l0eTowO3RyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciAzMDBtcyBjdWJpYy1iZXppZXIoMC41NSwgMCwgMC41NSwgMC4yKX0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZSwubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZCAubWF0LWZvcm0tZmllbGQtcmlwcGxle29wYWNpdHk6MTt0cmFuc2Zvcm06bm9uZTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAzMDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKSxvcGFjaXR5IDEwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpLGJhY2tncm91bmQtY29sb3IgMzAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVye3Bvc2l0aW9uOmFic29sdXRlO2JveC1zaXppbmc6Ym9yZGVyLWJveDt3aWR0aDoxMDAlO292ZXJmbG93OmhpZGRlbn0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXIgLm1hdC1pY29uLC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtaWNvbnt3aWR0aDoxZW07aGVpZ2h0OjFlbTtmb250LXNpemU6aW5oZXJpdDt2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZX0ubWF0LWZvcm0tZmllbGQtaGludC13cmFwcGVye2Rpc3BsYXk6ZmxleH0ubWF0LWZvcm0tZmllbGQtaGludC1zcGFjZXJ7ZmxleDoxIDAgMWVtfS5tYXQtZXJyb3J7ZGlzcGxheTpibG9ja30ubWF0LWZvcm0tZmllbGQtY29udHJvbC13cmFwcGVye3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtZm9ybS1maWVsZC1oaW50LWVuZHtvcmRlcjoxfS5tYXQtZm9ybS1maWVsZC5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LWZvcm0tZmllbGQtbGFiZWwsLm1hdC1mb3JtLWZpZWxkLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtZm9ybS1maWVsZC1yaXBwbGV7dHJhbnNpdGlvbjpub25lfVxuIiwnLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbCAubWF0LWZvcm0tZmllbGQtZmxleHtib3JkZXItcmFkaXVzOjRweCA0cHggMCAwO3BhZGRpbmc6Ljc1ZW0gLjc1ZW0gMCAuNzVlbX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwgLm1hdC1mb3JtLWZpZWxkLWZsZXh7b3V0bGluZTpzb2xpZCAxcHh9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1mbGV4e291dGxpbmU6ZGFzaGVkIDNweH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmU6OmJlZm9yZXtjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246YWJzb2x1dGU7Ym90dG9tOjA7aGVpZ2h0OjFweDt3aWR0aDoxMDAlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZXtib3R0b206MDtoZWlnaHQ6MnB4fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbCAubWF0LWZvcm0tZmllbGQtcmlwcGxle2hlaWdodDowfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGw6bm90KC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCkgLm1hdC1mb3JtLWZpZWxkLWZsZXg6aG92ZXJ+Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZSAubWF0LWZvcm0tZmllbGQtcmlwcGxle29wYWNpdHk6MTt0cmFuc2Zvcm06bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHkgNjAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZTpub3QoLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkKSAubWF0LWZvcm0tZmllbGQtZmxleDpob3Zlcn4ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lIC5tYXQtZm9ybS1maWVsZC1yaXBwbGV7dHJhbnNpdGlvbjpub25lfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVye3BhZGRpbmc6MCAxZW19XG4nLCcubWF0LWlucHV0LWVsZW1lbnR7Zm9udDppbmhlcml0O2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Y29sb3I6Y3VycmVudENvbG9yO2JvcmRlcjpub25lO291dGxpbmU6bm9uZTtwYWRkaW5nOjA7bWFyZ2luOjA7d2lkdGg6MTAwJTttYXgtd2lkdGg6MTAwJTt2ZXJ0aWNhbC1hbGlnbjpib3R0b207dGV4dC1hbGlnbjppbmhlcml0O2JveC1zaXppbmc6Y29udGVudC1ib3h9Lm1hdC1pbnB1dC1lbGVtZW50Oi1tb3otdWktaW52YWxpZHtib3gtc2hhZG93Om5vbmV9Lm1hdC1pbnB1dC1lbGVtZW50OjotbXMtY2xlYXIsLm1hdC1pbnB1dC1lbGVtZW50OjotbXMtcmV2ZWFse2Rpc3BsYXk6bm9uZX0ubWF0LWlucHV0LWVsZW1lbnQsLm1hdC1pbnB1dC1lbGVtZW50Ojotd2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9uLC5tYXQtaW5wdXQtZWxlbWVudDo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiwubWF0LWlucHV0LWVsZW1lbnQ6Oi13ZWJraXQtc2VhcmNoLXJlc3VsdHMtYnV0dG9uLC5tYXQtaW5wdXQtZWxlbWVudDo6LXdlYmtpdC1zZWFyY2gtcmVzdWx0cy1kZWNvcmF0aW9uey13ZWJraXQtYXBwZWFyYW5jZTpub25lfS5tYXQtaW5wdXQtZWxlbWVudDo6LXdlYmtpdC1jb250YWN0cy1hdXRvLWZpbGwtYnV0dG9uLC5tYXQtaW5wdXQtZWxlbWVudDo6LXdlYmtpdC1jYXBzLWxvY2staW5kaWNhdG9yLC5tYXQtaW5wdXQtZWxlbWVudDo6LXdlYmtpdC1jcmVkZW50aWFscy1hdXRvLWZpbGwtYnV0dG9ue3Zpc2liaWxpdHk6aGlkZGVufS5tYXQtaW5wdXQtZWxlbWVudFt0eXBlPWRhdGVdLC5tYXQtaW5wdXQtZWxlbWVudFt0eXBlPWRhdGV0aW1lXSwubWF0LWlucHV0LWVsZW1lbnRbdHlwZT1kYXRldGltZS1sb2NhbF0sLm1hdC1pbnB1dC1lbGVtZW50W3R5cGU9bW9udGhdLC5tYXQtaW5wdXQtZWxlbWVudFt0eXBlPXdlZWtdLC5tYXQtaW5wdXQtZWxlbWVudFt0eXBlPXRpbWVde2xpbmUtaGVpZ2h0OjF9Lm1hdC1pbnB1dC1lbGVtZW50W3R5cGU9ZGF0ZV06OmFmdGVyLC5tYXQtaW5wdXQtZWxlbWVudFt0eXBlPWRhdGV0aW1lXTo6YWZ0ZXIsLm1hdC1pbnB1dC1lbGVtZW50W3R5cGU9ZGF0ZXRpbWUtbG9jYWxdOjphZnRlciwubWF0LWlucHV0LWVsZW1lbnRbdHlwZT1tb250aF06OmFmdGVyLC5tYXQtaW5wdXQtZWxlbWVudFt0eXBlPXdlZWtdOjphZnRlciwubWF0LWlucHV0LWVsZW1lbnRbdHlwZT10aW1lXTo6YWZ0ZXJ7Y29udGVudDoiICI7d2hpdGUtc3BhY2U6cHJlO3dpZHRoOjFweH0ubWF0LWlucHV0LWVsZW1lbnQ6Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24sLm1hdC1pbnB1dC1lbGVtZW50Ojotd2Via2l0LWNhbGVuZGFyLXBpY2tlci1pbmRpY2F0b3IsLm1hdC1pbnB1dC1lbGVtZW50Ojotd2Via2l0LWNsZWFyLWJ1dHRvbntmb250LXNpemU6Ljc1ZW19Lm1hdC1pbnB1dC1lbGVtZW50OjpwbGFjZWhvbGRlcnstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7dHJhbnNpdGlvbjpjb2xvciA0MDBtcyAxMzMuMzMzMzMzMzMzM21zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpfS5tYXQtaW5wdXQtZWxlbWVudDo6cGxhY2Vob2xkZXI6LW1zLWlucHV0LXBsYWNlaG9sZGVyey1tcy11c2VyLXNlbGVjdDp0ZXh0fS5tYXQtaW5wdXQtZWxlbWVudDo6LW1vei1wbGFjZWhvbGRlcnstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7dHJhbnNpdGlvbjpjb2xvciA0MDBtcyAxMzMuMzMzMzMzMzMzM21zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpfS5tYXQtaW5wdXQtZWxlbWVudDo6LW1vei1wbGFjZWhvbGRlcjotbXMtaW5wdXQtcGxhY2Vob2xkZXJ7LW1zLXVzZXItc2VsZWN0OnRleHR9Lm1hdC1pbnB1dC1lbGVtZW50Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyey13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTt0cmFuc2l0aW9uOmNvbG9yIDQwMG1zIDEzMy4zMzMzMzMzMzMzbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Lm1hdC1pbnB1dC1lbGVtZW50Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyOi1tcy1pbnB1dC1wbGFjZWhvbGRlcnstbXMtdXNlci1zZWxlY3Q6dGV4dH0ubWF0LWlucHV0LWVsZW1lbnQ6LW1zLWlucHV0LXBsYWNlaG9sZGVyey13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTt0cmFuc2l0aW9uOmNvbG9yIDQwMG1zIDEzMy4zMzMzMzMzMzMzbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Lm1hdC1pbnB1dC1lbGVtZW50Oi1tcy1pbnB1dC1wbGFjZWhvbGRlcjotbXMtaW5wdXQtcGxhY2Vob2xkZXJ7LW1zLXVzZXItc2VsZWN0OnRleHR9Lm1hdC1mb3JtLWZpZWxkLWhpZGUtcGxhY2Vob2xkZXIgLm1hdC1pbnB1dC1lbGVtZW50OjpwbGFjZWhvbGRlcntjb2xvcjp0cmFuc3BhcmVudCAhaW1wb3J0YW50Oy13ZWJraXQtdGV4dC1maWxsLWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246bm9uZX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtZm9ybS1maWVsZC1oaWRlLXBsYWNlaG9sZGVyIC5tYXQtaW5wdXQtZWxlbWVudDo6cGxhY2Vob2xkZXJ7b3BhY2l0eTowfS5tYXQtZm9ybS1maWVsZC1oaWRlLXBsYWNlaG9sZGVyIC5tYXQtaW5wdXQtZWxlbWVudDo6LW1vei1wbGFjZWhvbGRlcntjb2xvcjp0cmFuc3BhcmVudCAhaW1wb3J0YW50Oy13ZWJraXQtdGV4dC1maWxsLWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246bm9uZX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtZm9ybS1maWVsZC1oaWRlLXBsYWNlaG9sZGVyIC5tYXQtaW5wdXQtZWxlbWVudDo6LW1vei1wbGFjZWhvbGRlcntvcGFjaXR5OjB9Lm1hdC1mb3JtLWZpZWxkLWhpZGUtcGxhY2Vob2xkZXIgLm1hdC1pbnB1dC1lbGVtZW50Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVye2NvbG9yOnRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7LXdlYmtpdC10ZXh0LWZpbGwtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpub25lfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1mb3JtLWZpZWxkLWhpZGUtcGxhY2Vob2xkZXIgLm1hdC1pbnB1dC1lbGVtZW50Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVye29wYWNpdHk6MH0ubWF0LWZvcm0tZmllbGQtaGlkZS1wbGFjZWhvbGRlciAubWF0LWlucHV0LWVsZW1lbnQ6LW1zLWlucHV0LXBsYWNlaG9sZGVye2NvbG9yOnRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7LXdlYmtpdC10ZXh0LWZpbGwtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpub25lfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1mb3JtLWZpZWxkLWhpZGUtcGxhY2Vob2xkZXIgLm1hdC1pbnB1dC1lbGVtZW50Oi1tcy1pbnB1dC1wbGFjZWhvbGRlcntvcGFjaXR5OjB9dGV4dGFyZWEubWF0LWlucHV0LWVsZW1lbnR7cmVzaXplOnZlcnRpY2FsO292ZXJmbG93OmF1dG99dGV4dGFyZWEubWF0LWlucHV0LWVsZW1lbnQuY2RrLXRleHRhcmVhLWF1dG9zaXple3Jlc2l6ZTpub25lfXRleHRhcmVhLm1hdC1pbnB1dC1lbGVtZW50e3BhZGRpbmc6MnB4IDA7bWFyZ2luOi0ycHggMH1zZWxlY3QubWF0LWlucHV0LWVsZW1lbnR7LW1vei1hcHBlYXJhbmNlOm5vbmU7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7cG9zaXRpb246cmVsYXRpdmU7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtkaXNwbGF5OmlubGluZS1mbGV4O2JveC1zaXppbmc6Ym9yZGVyLWJveDtwYWRkaW5nLXRvcDoxZW07dG9wOi0xZW07bWFyZ2luLWJvdHRvbTotMWVtfXNlbGVjdC5tYXQtaW5wdXQtZWxlbWVudDo6LW1zLWV4cGFuZHtkaXNwbGF5Om5vbmV9c2VsZWN0Lm1hdC1pbnB1dC1lbGVtZW50OjotbW96LWZvY3VzLWlubmVye2JvcmRlcjowfXNlbGVjdC5tYXQtaW5wdXQtZWxlbWVudDpub3QoOmRpc2FibGVkKXtjdXJzb3I6cG9pbnRlcn1zZWxlY3QubWF0LWlucHV0LWVsZW1lbnQ6Oi1tcy12YWx1ZXtjb2xvcjppbmhlcml0O2JhY2tncm91bmQ6bm9uZX0ubWF0LWZvY3VzZWQgLmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSBzZWxlY3QubWF0LWlucHV0LWVsZW1lbnQ6Oi1tcy12YWx1ZXtjb2xvcjppbmhlcml0fS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0IC5tYXQtZm9ybS1maWVsZC1pbmZpeDo6YWZ0ZXJ7Y29udGVudDoiIjt3aWR0aDowO2hlaWdodDowO2JvcmRlci1sZWZ0OjVweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItcmlnaHQ6NXB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci10b3A6NXB4IHNvbGlkO3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1MCU7cmlnaHQ6MDttYXJnaW4tdG9wOi0yLjVweDtwb2ludGVyLWV2ZW50czpub25lfVtkaXI9cnRsXSAubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdCAubWF0LWZvcm0tZmllbGQtaW5maXg6OmFmdGVye3JpZ2h0OmF1dG87bGVmdDowfS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0IC5tYXQtaW5wdXQtZWxlbWVudHtwYWRkaW5nLXJpZ2h0OjE1cHh9W2Rpcj1ydGxdIC5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0IC5tYXQtaW5wdXQtZWxlbWVudHtwYWRkaW5nLXJpZ2h0OjA7cGFkZGluZy1sZWZ0OjE1cHh9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJ7bWF4LXdpZHRoOmNhbGMoMTAwJSAtIDEwcHgpfS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtaW5maXg6OmFmdGVye21hcmdpbi10b3A6LTVweH0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwgLm1hdC1mb3JtLWZpZWxkLWluZml4OjphZnRlcnttYXJnaW4tdG9wOi0xMHB4fVxuJywiLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtZm9ybS1maWVsZC1sYWJlbHt0cmFuc2Zvcm06cGVyc3BlY3RpdmUoMTAwcHgpOy1tcy10cmFuc2Zvcm06bm9uZX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kgLm1hdC1mb3JtLWZpZWxkLXByZWZpeCAubWF0LWljb24sLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtZm9ybS1maWVsZC1zdWZmaXggLm1hdC1pY29ue3dpZHRoOjFlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kgLm1hdC1mb3JtLWZpZWxkLXByZWZpeCAubWF0LWljb24tYnV0dG9uLC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtc3VmZml4IC5tYXQtaWNvbi1idXR0b257Zm9udDppbmhlcml0O3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtcHJlZml4IC5tYXQtaWNvbi1idXR0b24gLm1hdC1pY29uLC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtc3VmZml4IC5tYXQtaWNvbi1idXR0b24gLm1hdC1pY29ue2ZvbnQtc2l6ZTppbmhlcml0fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5le2hlaWdodDoxcHh9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZXtoZWlnaHQ6MDtib3JkZXItdG9wOnNvbGlkIDFweH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZXt0b3A6MDtoZWlnaHQ6MnB4O292ZXJmbG93OmhpZGRlbn0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtcmlwcGxle2hlaWdodDowO2JvcmRlci10b3A6c29saWQgMnB4fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5le2JhY2tncm91bmQtcG9zaXRpb246MDtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmV7Ym9yZGVyLXRvcC1zdHlsZTpkb3R0ZWQ7Ym9yZGVyLXRvcC13aWR0aDoycHh9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWludmFsaWQ6bm90KC5tYXQtZm9jdXNlZCkgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZXtoZWlnaHQ6MXB4fVxuIiwiLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtd3JhcHBlcnttYXJnaW46LjI1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1mbGV4e3BhZGRpbmc6MCAuNzVlbSAwIC43NWVtO21hcmdpbi10b3A6LTAuMjVlbTtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1wcmVmaXgsLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtc3VmZml4e3RvcDouMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5le2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6LjI1ZW07bGVmdDowO3JpZ2h0OjA7Ym90dG9tOjA7cG9pbnRlci1ldmVudHM6bm9uZX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXN0YXJ0LC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtZW5ke2JvcmRlcjoxcHggc29saWQgY3VycmVudENvbG9yO21pbi13aWR0aDo1cHh9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtb3V0bGluZS1zdGFydHtib3JkZXItcmFkaXVzOjVweCAwIDAgNXB4O2JvcmRlci1yaWdodC1zdHlsZTpub25lfVtkaXI9cnRsXSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXN0YXJ0e2JvcmRlci1yaWdodC1zdHlsZTpzb2xpZDtib3JkZXItbGVmdC1zdHlsZTpub25lO2JvcmRlci1yYWRpdXM6MCA1cHggNXB4IDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtb3V0bGluZS1lbmR7Ym9yZGVyLXJhZGl1czowIDVweCA1cHggMDtib3JkZXItbGVmdC1zdHlsZTpub25lO2ZsZXgtZ3JvdzoxfVtkaXI9cnRsXSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLWVuZHtib3JkZXItbGVmdC1zdHlsZTpzb2xpZDtib3JkZXItcmlnaHQtc3R5bGU6bm9uZTtib3JkZXItcmFkaXVzOjVweCAwIDAgNXB4fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtZ2Fwe2JvcmRlci1yYWRpdXM6LjAwMDAwMXB4O2JvcmRlcjoxcHggc29saWQgY3VycmVudENvbG9yO2JvcmRlci1sZWZ0LXN0eWxlOm5vbmU7Ym9yZGVyLXJpZ2h0LXN0eWxlOm5vbmV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0IC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLWdhcHtib3JkZXItdG9wLWNvbG9yOnRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2t7b3BhY2l0eTowfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2sgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtc3RhcnQsLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGljayAubWF0LWZvcm0tZmllbGQtb3V0bGluZS1lbmQsLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGljayAubWF0LWZvcm0tZmllbGQtb3V0bGluZS1nYXB7Ym9yZGVyLXdpZHRoOjJweH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtaW52YWxpZCAubWF0LWZvcm0tZmllbGQtb3V0bGluZXtvcGFjaXR5OjA7dHJhbnNpdGlvbjpvcGFjaXR5IDEwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvY3VzZWQgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2ssLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNre29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvY3VzZWQgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2t7Ym9yZGVyOjNweCBkYXNoZWR9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZTpub3QoLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkKSAubWF0LWZvcm0tZmllbGQtZmxleDpob3ZlciAubWF0LWZvcm0tZmllbGQtb3V0bGluZXtvcGFjaXR5OjA7dHJhbnNpdGlvbjpvcGFjaXR5IDYwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmU6bm90KC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCkgLm1hdC1mb3JtLWZpZWxkLWZsZXg6aG92ZXIgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2t7b3BhY2l0eToxfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVye3BhZGRpbmc6MCAxZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZTpub3QoLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkKSAubWF0LWZvcm0tZmllbGQtZmxleDpob3Zlcn4ubWF0LWZvcm0tZmllbGQtb3V0bGluZSwubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUuX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtc3RhcnQsLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LWZvcm0tZmllbGQtb3V0bGluZS1lbmQsLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LWZvcm0tZmllbGQtb3V0bGluZS1nYXB7dHJhbnNpdGlvbjpub25lfVxuIiwiLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmQgLm1hdC1mb3JtLWZpZWxkLWZsZXh7cGFkZGluZy10b3A6Ljc1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmQgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZXtoZWlnaHQ6MXB4fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmQgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZXtoZWlnaHQ6MDtib3JkZXItdG9wOnNvbGlkIDFweH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZCAubWF0LWZvcm0tZmllbGQtcmlwcGxle2JvdHRvbTowO2hlaWdodDoycHh9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZCAubWF0LWZvcm0tZmllbGQtcmlwcGxle2hlaWdodDowO2JvcmRlci10b3A6c29saWQgMnB4fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLXN0YW5kYXJkLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmV7YmFja2dyb3VuZC1wb3NpdGlvbjowO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5le2JvcmRlci10b3Atc3R5bGU6ZG90dGVkO2JvcmRlci10b3Atd2lkdGg6MnB4fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLXN0YW5kYXJkOm5vdCgubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQpIC5tYXQtZm9ybS1maWVsZC1mbGV4OmhvdmVyfi5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmUgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZXtvcGFjaXR5OjE7dHJhbnNmb3JtOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5IDYwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLXN0YW5kYXJkLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlOm5vdCgubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQpIC5tYXQtZm9ybS1maWVsZC1mbGV4OmhvdmVyfi5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmUgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZXt0cmFuc2l0aW9uOm5vbmV9XG4iXSxlbmNhcHN1bGF0aW9uOjIsZGF0YTp7YW5pbWF0aW9uOltvVS50cmFuc2l0aW9uTWVzc2FnZXNdfSxjaGFuZ2VEZXRlY3Rpb246MH0pLF9VLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6S2h9LHt0eXBlOk9ifSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbS2hdfV19LHt0eXBlOnZGLGRlY29yYXRvcnM6W3t0eXBlOkJyfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbYlVdfV19LHt0eXBlOmNIfSx7dHlwZTptQ30se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltja119XX1dLF9VLnByb3BEZWNvcmF0b3JzPXthcHBlYXJhbmNlOlt7dHlwZTpSX31dLGhpZGVSZXF1aXJlZE1hcmtlcjpbe3R5cGU6Ul99XSxoaW50TGFiZWw6W3t0eXBlOlJffV0sZmxvYXRMYWJlbDpbe3R5cGU6Ul99XSx1bmRlcmxpbmVSZWY6W3t0eXBlOmFyLGFyZ3M6WyJ1bmRlcmxpbmUiXX1dLF9jb25uZWN0aW9uQ29udGFpbmVyUmVmOlt7dHlwZTphcixhcmdzOlsiY29ubmVjdGlvbkNvbnRhaW5lciIse3N0YXRpYzohMH1dfV0sX2lucHV0Q29udGFpbmVyUmVmOlt7dHlwZTphcixhcmdzOlsiaW5wdXRDb250YWluZXIiXX1dLF9sYWJlbDpbe3R5cGU6YXIsYXJnczpbImxhYmVsIl19XSxfY29udHJvbE5vblN0YXRpYzpbe3R5cGU6aXIsYXJnczpbaVVdfV0sX2NvbnRyb2xTdGF0aWM6W3t0eXBlOmlyLGFyZ3M6W2lVLHtzdGF0aWM6ITB9XX1dLF9sYWJlbENoaWxkTm9uU3RhdGljOlt7dHlwZTppcixhcmdzOltjVV19XSxfbGFiZWxDaGlsZFN0YXRpYzpbe3R5cGU6aXIsYXJnczpbY1Use3N0YXRpYzohMH1dfV0sX3BsYWNlaG9sZGVyQ2hpbGQ6W3t0eXBlOmlyLGFyZ3M6W2RVXX1dLF9lcnJvckNoaWxkcmVuOlt7dHlwZTpvcixhcmdzOltlVSx7ZGVzY2VuZGFudHM6ITB9XX1dLF9oaW50Q2hpbGRyZW46W3t0eXBlOm9yLGFyZ3M6W3NVLHtkZXNjZW5kYW50czohMH1dfV0sX3ByZWZpeENoaWxkcmVuOlt7dHlwZTpvcixhcmdzOltwVSx7ZGVzY2VuZGFudHM6ITB9XX1dLF9zdWZmaXhDaGlsZHJlbjpbe3R5cGU6b3IsYXJnczpbZlUse2Rlc2NlbmRhbnRzOiEwfV19XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihfVSxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJtYXQtZm9ybS1maWVsZCIsZXhwb3J0QXM6Im1hdEZvcm1GaWVsZCIsdGVtcGxhdGU6JzxkaXYgY2xhc3M9Im1hdC1mb3JtLWZpZWxkLXdyYXBwZXIiPlxuICA8ZGl2IGNsYXNzPSJtYXQtZm9ybS1maWVsZC1mbGV4IiAjY29ubmVjdGlvbkNvbnRhaW5lclxuICAgICAgIChjbGljayk9Il9jb250cm9sLm9uQ29udGFpbmVyQ2xpY2sgJiYgX2NvbnRyb2wub25Db250YWluZXJDbGljaygkZXZlbnQpIj5cblxuICAgIFx4M2MhLS0gT3V0bGluZSB1c2VkIGZvciBvdXRsaW5lIGFwcGVhcmFuY2UuIC0tXHgzZVxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9ImFwcGVhcmFuY2UgPT0gXCdvdXRsaW5lXCciPlxuICAgICAgPGRpdiBjbGFzcz0ibWF0LWZvcm0tZmllbGQtb3V0bGluZSI+XG4gICAgICAgIDxkaXYgY2xhc3M9Im1hdC1mb3JtLWZpZWxkLW91dGxpbmUtc3RhcnQiPjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPSJtYXQtZm9ybS1maWVsZC1vdXRsaW5lLWdhcCI+PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9Im1hdC1mb3JtLWZpZWxkLW91dGxpbmUtZW5kIj48L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz0ibWF0LWZvcm0tZmllbGQtb3V0bGluZSBtYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrIj5cbiAgICAgICAgPGRpdiBjbGFzcz0ibWF0LWZvcm0tZmllbGQtb3V0bGluZS1zdGFydCI+PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9Im1hdC1mb3JtLWZpZWxkLW91dGxpbmUtZ2FwIj48L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz0ibWF0LWZvcm0tZmllbGQtb3V0bGluZS1lbmQiPjwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8ZGl2IGNsYXNzPSJtYXQtZm9ybS1maWVsZC1wcmVmaXgiICpuZ0lmPSJfcHJlZml4Q2hpbGRyZW4ubGVuZ3RoIj5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD0iW21hdFByZWZpeF0iPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9Im1hdC1mb3JtLWZpZWxkLWluZml4IiAjaW5wdXRDb250YWluZXI+XG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG5cbiAgICAgIDxzcGFuIGNsYXNzPSJtYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIj5cbiAgICAgICAgXHgzYyEtLSBXZSBhZGQgYXJpYS1vd25zIGFzIGEgd29ya2Fyb3VuZCBmb3IgYW4gaXNzdWUgaW4gSkFXUyAmIE5WREEgd2hlcmUgdGhlIGxhYmVsIGlzblwndFxuICAgICAgICAgICAgIHJlYWQgaWYgaXQgY29tZXMgYmVmb3JlIHRoZSBjb250cm9sIGluIHRoZSBET00uIC0tXHgzZVxuICAgICAgICA8bGFiZWwgY2xhc3M9Im1hdC1mb3JtLWZpZWxkLWxhYmVsIlxuICAgICAgICAgICAgICAgKGNka09ic2VydmVDb250ZW50KT0idXBkYXRlT3V0bGluZUdhcCgpIlxuICAgICAgICAgICAgICAgW2Nka09ic2VydmVDb250ZW50RGlzYWJsZWRdPSJhcHBlYXJhbmNlICE9IFwnb3V0bGluZVwnIlxuICAgICAgICAgICAgICAgW2lkXT0iX2xhYmVsSWQiXG4gICAgICAgICAgICAgICBbYXR0ci5mb3JdPSJfY29udHJvbC5pZCJcbiAgICAgICAgICAgICAgIFthdHRyLmFyaWEtb3duc109Il9jb250cm9sLmlkIlxuICAgICAgICAgICAgICAgW2NsYXNzLm1hdC1lbXB0eV09Il9jb250cm9sLmVtcHR5ICYmICFfc2hvdWxkQWx3YXlzRmxvYXQoKSJcbiAgICAgICAgICAgICAgIFtjbGFzcy5tYXQtZm9ybS1maWVsZC1lbXB0eV09Il9jb250cm9sLmVtcHR5ICYmICFfc2hvdWxkQWx3YXlzRmxvYXQoKSJcbiAgICAgICAgICAgICAgIFtjbGFzcy5tYXQtYWNjZW50XT0iY29sb3IgPT0gXCdhY2NlbnRcJyJcbiAgICAgICAgICAgICAgIFtjbGFzcy5tYXQtd2Fybl09ImNvbG9yID09IFwnd2FyblwnIlxuICAgICAgICAgICAgICAgI2xhYmVsXG4gICAgICAgICAgICAgICAqbmdJZj0iX2hhc0Zsb2F0aW5nTGFiZWwoKSJcbiAgICAgICAgICAgICAgIFtuZ1N3aXRjaF09Il9oYXNMYWJlbCgpIj5cblxuICAgICAgICAgIFx4M2MhLS0gQGJyZWFraW5nLWNoYW5nZSA4LjAuMCByZW1vdmUgaW4gZmF2b3Igb2YgbWF0LWxhYmVsIGVsZW1lbnQgYW4gcGxhY2Vob2xkZXIgYXR0ci4gLS1ceDNlXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPSJmYWxzZSI+XG4gICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9Im1hdC1wbGFjZWhvbGRlciI+PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgPHNwYW4+e3tfY29udHJvbC5wbGFjZWhvbGRlcn19PC9zcGFuPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PSJtYXQtbGFiZWwiICpuZ1N3aXRjaENhc2U9InRydWUiPjwvbmctY29udGVudD5cblxuICAgICAgICAgIFx4M2MhLS0gQGJyZWFraW5nLWNoYW5nZSA4LjAuMCByZW1vdmUgYG1hdC1wbGFjZWhvbGRlci1yZXF1aXJlZGAgY2xhc3MgLS1ceDNlXG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIGNsYXNzPSJtYXQtcGxhY2Vob2xkZXItcmVxdWlyZWQgbWF0LWZvcm0tZmllbGQtcmVxdWlyZWQtbWFya2VyIlxuICAgICAgICAgICAgYXJpYS1oaWRkZW49InRydWUiXG4gICAgICAgICAgICAqbmdJZj0iIWhpZGVSZXF1aXJlZE1hcmtlciAmJiBfY29udHJvbC5yZXF1aXJlZCAmJiAhX2NvbnRyb2wuZGlzYWJsZWQiPiYjMzI7Kjwvc3Bhbj5cbiAgICAgICAgPC9sYWJlbD5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9Im1hdC1mb3JtLWZpZWxkLXN1ZmZpeCIgKm5nSWY9Il9zdWZmaXhDaGlsZHJlbi5sZW5ndGgiPlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PSJbbWF0U3VmZml4XSI+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICBceDNjIS0tIFVuZGVybGluZSB1c2VkIGZvciBsZWdhY3ksIHN0YW5kYXJkLCBhbmQgYm94IGFwcGVhcmFuY2VzLiAtLVx4M2VcbiAgPGRpdiBjbGFzcz0ibWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lIiAjdW5kZXJsaW5lXG4gICAgICAgKm5nSWY9ImFwcGVhcmFuY2UgIT0gXCdvdXRsaW5lXCciPlxuICAgIDxzcGFuIGNsYXNzPSJtYXQtZm9ybS1maWVsZC1yaXBwbGUiXG4gICAgICAgICAgW2NsYXNzLm1hdC1hY2NlbnRdPSJjb2xvciA9PSBcJ2FjY2VudFwnIlxuICAgICAgICAgIFtjbGFzcy5tYXQtd2Fybl09ImNvbG9yID09IFwnd2FyblwnIj48L3NwYW4+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9Im1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyIlxuICAgICAgIFtuZ1N3aXRjaF09Il9nZXREaXNwbGF5ZWRNZXNzYWdlcygpIj5cbiAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9IlwnZXJyb3JcJyIgW0B0cmFuc2l0aW9uTWVzc2FnZXNdPSJfc3Vic2NyaXB0QW5pbWF0aW9uU3RhdGUiPlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PSJtYXQtZXJyb3IiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9Im1hdC1mb3JtLWZpZWxkLWhpbnQtd3JhcHBlciIgKm5nU3dpdGNoQ2FzZT0iXCdoaW50XCciXG4gICAgICBbQHRyYW5zaXRpb25NZXNzYWdlc109Il9zdWJzY3JpcHRBbmltYXRpb25TdGF0ZSI+XG4gICAgICBceDNjIS0tIFRPRE8obW1hbGVyYmEpOiB1c2UgYW4gYWN0dWFsIDxtYXQtaGludD4gb25jZSBhbGwgc2VsZWN0b3JzIGFyZSBzd2l0Y2hlZCB0byBtYXQtKiAtLVx4M2VcbiAgICAgIDxkaXYgKm5nSWY9ImhpbnRMYWJlbCIgW2lkXT0iX2hpbnRMYWJlbElkIiBjbGFzcz0ibWF0LWhpbnQiPnt7aGludExhYmVsfX08L2Rpdj5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD0ibWF0LWhpbnQ6bm90KFthbGlnbj1cJ2VuZFwnXSkiPjwvbmctY29udGVudD5cbiAgICAgIDxkaXYgY2xhc3M9Im1hdC1mb3JtLWZpZWxkLWhpbnQtc3BhY2VyIj48L2Rpdj5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD0ibWF0LWhpbnRbYWxpZ249XCdlbmRcJ10iPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbicsYW5pbWF0aW9uczpbb1UudHJhbnNpdGlvbk1lc3NhZ2VzXSxob3N0OntjbGFzczoibWF0LWZvcm0tZmllbGQiLCJbY2xhc3MubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZF0iOidhcHBlYXJhbmNlID09ICJzdGFuZGFyZCInLCJbY2xhc3MubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsXSI6J2FwcGVhcmFuY2UgPT0gImZpbGwiJywiW2NsYXNzLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZV0iOidhcHBlYXJhbmNlID09ICJvdXRsaW5lIicsIltjbGFzcy5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeV0iOidhcHBlYXJhbmNlID09ICJsZWdhY3kiJywiW2NsYXNzLm1hdC1mb3JtLWZpZWxkLWludmFsaWRdIjoiX2NvbnRyb2wuZXJyb3JTdGF0ZSIsIltjbGFzcy5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRdIjoiX2NhbkxhYmVsRmxvYXQoKSIsIltjbGFzcy5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRdIjoiX3Nob3VsZExhYmVsRmxvYXQoKSIsIltjbGFzcy5tYXQtZm9ybS1maWVsZC1oYXMtbGFiZWxdIjoiX2hhc0Zsb2F0aW5nTGFiZWwoKSIsIltjbGFzcy5tYXQtZm9ybS1maWVsZC1oaWRlLXBsYWNlaG9sZGVyXSI6Il9oaWRlQ29udHJvbFBsYWNlaG9sZGVyKCkiLCJbY2xhc3MubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRdIjoiX2NvbnRyb2wuZGlzYWJsZWQiLCJbY2xhc3MubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGxlZF0iOiJfY29udHJvbC5hdXRvZmlsbGVkIiwiW2NsYXNzLm1hdC1mb2N1c2VkXSI6Il9jb250cm9sLmZvY3VzZWQiLCJbY2xhc3MubmctdW50b3VjaGVkXSI6J19zaG91bGRGb3J3YXJkKCJ1bnRvdWNoZWQiKScsIltjbGFzcy5uZy10b3VjaGVkXSI6J19zaG91bGRGb3J3YXJkKCJ0b3VjaGVkIiknLCJbY2xhc3MubmctcHJpc3RpbmVdIjonX3Nob3VsZEZvcndhcmQoInByaXN0aW5lIiknLCJbY2xhc3MubmctZGlydHldIjonX3Nob3VsZEZvcndhcmQoImRpcnR5IiknLCJbY2xhc3MubmctdmFsaWRdIjonX3Nob3VsZEZvcndhcmQoInZhbGlkIiknLCJbY2xhc3MubmctaW52YWxpZF0iOidfc2hvdWxkRm9yd2FyZCgiaW52YWxpZCIpJywiW2NsYXNzLm5nLXBlbmRpbmddIjonX3Nob3VsZEZvcndhcmQoInBlbmRpbmciKScsIltjbGFzcy5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZV0iOiIhX2FuaW1hdGlvbnNFbmFibGVkIn0saW5wdXRzOlsiY29sb3IiXSxlbmNhcHN1bGF0aW9uOlduLk5vbmUsY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaCxwcm92aWRlcnM6W3twcm92aWRlOnlVLHVzZUV4aXN0aW5nOl9VfV0sc3R5bGVzOlsiLm1hdC1mb3JtLWZpZWxke2Rpc3BsYXk6aW5saW5lLWJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlO3RleHQtYWxpZ246bGVmdH1bZGlyPXJ0bF0gLm1hdC1mb3JtLWZpZWxke3RleHQtYWxpZ246cmlnaHR9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJ7cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1mb3JtLWZpZWxkLWZsZXh7ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpiYXNlbGluZTtib3gtc2l6aW5nOmJvcmRlci1ib3g7d2lkdGg6MTAwJX0ubWF0LWZvcm0tZmllbGQtcHJlZml4LC5tYXQtZm9ybS1maWVsZC1zdWZmaXh7d2hpdGUtc3BhY2U6bm93cmFwO2ZsZXg6bm9uZTtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LWZvcm0tZmllbGQtaW5maXh7ZGlzcGxheTpibG9jaztwb3NpdGlvbjpyZWxhdGl2ZTtmbGV4OmF1dG87bWluLXdpZHRoOjA7d2lkdGg6MTgwcHh9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWZvcm0tZmllbGQtaW5maXh7Ym9yZGVyLWltYWdlOmxpbmVhci1ncmFkaWVudCh0cmFuc3BhcmVudCwgdHJhbnNwYXJlbnQpfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVye3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDtib3gtc2l6aW5nOmNvbnRlbnQtYm94O3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7b3ZlcmZsb3c6aGlkZGVuO3BvaW50ZXItZXZlbnRzOm5vbmV9W2Rpcj1ydGxdIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVye2xlZnQ6YXV0bztyaWdodDowfS5tYXQtZm9ybS1maWVsZC1sYWJlbHtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7Zm9udDppbmhlcml0O3BvaW50ZXItZXZlbnRzOm5vbmU7d2lkdGg6MTAwJTt3aGl0ZS1zcGFjZTpub3dyYXA7dGV4dC1vdmVyZmxvdzplbGxpcHNpcztvdmVyZmxvdzpoaWRkZW47dHJhbnNmb3JtLW9yaWdpbjowIDA7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSksY29sb3IgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSksd2lkdGggNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7ZGlzcGxheTpub25lfVtkaXI9cnRsXSAubWF0LWZvcm0tZmllbGQtbGFiZWx7dHJhbnNmb3JtLW9yaWdpbjoxMDAlIDA7bGVmdDphdXRvO3JpZ2h0OjB9Lm1hdC1mb3JtLWZpZWxkLWVtcHR5Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0IC5tYXQtZm9ybS1maWVsZC1sYWJlbHtkaXNwbGF5OmJsb2NrfS5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sOi13ZWJraXQtYXV0b2ZpbGwrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVse2Rpc3BsYXk6bm9uZX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sOi13ZWJraXQtYXV0b2ZpbGwrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVse2Rpc3BsYXk6YmxvY2s7dHJhbnNpdGlvbjpub25lfS5tYXQtaW5wdXQtc2VydmVyOmZvY3VzKy5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbCwubWF0LWlucHV0LXNlcnZlcltwbGFjZWhvbGRlcl06bm90KDpwbGFjZWhvbGRlci1zaG93bikrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVse2Rpc3BsYXk6bm9uZX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtaW5wdXQtc2VydmVyOmZvY3VzKy5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbCwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtaW5wdXQtc2VydmVyW3BsYWNlaG9sZGVyXTpub3QoOnBsYWNlaG9sZGVyLXNob3duKSsubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7ZGlzcGxheTpibG9ja30ubWF0LWZvcm0tZmllbGQtbGFiZWw6bm90KC5tYXQtZm9ybS1maWVsZC1lbXB0eSl7dHJhbnNpdGlvbjpub25lfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmV7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MTAwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zZm9ybTpzY2FsZTNkKDEsIDEuMDAwMSwgMSl9Lm1hdC1mb3JtLWZpZWxkLXJpcHBsZXtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7d2lkdGg6MTAwJTt0cmFuc2Zvcm0tb3JpZ2luOjUwJTt0cmFuc2Zvcm06c2NhbGVYKDAuNSk7b3BhY2l0eTowO3RyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciAzMDBtcyBjdWJpYy1iZXppZXIoMC41NSwgMCwgMC41NSwgMC4yKX0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZSwubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZCAubWF0LWZvcm0tZmllbGQtcmlwcGxle29wYWNpdHk6MTt0cmFuc2Zvcm06bm9uZTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAzMDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKSxvcGFjaXR5IDEwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpLGJhY2tncm91bmQtY29sb3IgMzAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVye3Bvc2l0aW9uOmFic29sdXRlO2JveC1zaXppbmc6Ym9yZGVyLWJveDt3aWR0aDoxMDAlO292ZXJmbG93OmhpZGRlbn0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXIgLm1hdC1pY29uLC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtaWNvbnt3aWR0aDoxZW07aGVpZ2h0OjFlbTtmb250LXNpemU6aW5oZXJpdDt2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZX0ubWF0LWZvcm0tZmllbGQtaGludC13cmFwcGVye2Rpc3BsYXk6ZmxleH0ubWF0LWZvcm0tZmllbGQtaGludC1zcGFjZXJ7ZmxleDoxIDAgMWVtfS5tYXQtZXJyb3J7ZGlzcGxheTpibG9ja30ubWF0LWZvcm0tZmllbGQtY29udHJvbC13cmFwcGVye3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtZm9ybS1maWVsZC1oaW50LWVuZHtvcmRlcjoxfS5tYXQtZm9ybS1maWVsZC5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LWZvcm0tZmllbGQtbGFiZWwsLm1hdC1mb3JtLWZpZWxkLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtZm9ybS1maWVsZC1yaXBwbGV7dHJhbnNpdGlvbjpub25lfVxuIiwnLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbCAubWF0LWZvcm0tZmllbGQtZmxleHtib3JkZXItcmFkaXVzOjRweCA0cHggMCAwO3BhZGRpbmc6Ljc1ZW0gLjc1ZW0gMCAuNzVlbX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwgLm1hdC1mb3JtLWZpZWxkLWZsZXh7b3V0bGluZTpzb2xpZCAxcHh9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1mbGV4e291dGxpbmU6ZGFzaGVkIDNweH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmU6OmJlZm9yZXtjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246YWJzb2x1dGU7Ym90dG9tOjA7aGVpZ2h0OjFweDt3aWR0aDoxMDAlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZXtib3R0b206MDtoZWlnaHQ6MnB4fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbCAubWF0LWZvcm0tZmllbGQtcmlwcGxle2hlaWdodDowfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGw6bm90KC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCkgLm1hdC1mb3JtLWZpZWxkLWZsZXg6aG92ZXJ+Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZSAubWF0LWZvcm0tZmllbGQtcmlwcGxle29wYWNpdHk6MTt0cmFuc2Zvcm06bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHkgNjAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZTpub3QoLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkKSAubWF0LWZvcm0tZmllbGQtZmxleDpob3Zlcn4ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lIC5tYXQtZm9ybS1maWVsZC1yaXBwbGV7dHJhbnNpdGlvbjpub25lfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVye3BhZGRpbmc6MCAxZW19XG4nLCcubWF0LWlucHV0LWVsZW1lbnR7Zm9udDppbmhlcml0O2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Y29sb3I6Y3VycmVudENvbG9yO2JvcmRlcjpub25lO291dGxpbmU6bm9uZTtwYWRkaW5nOjA7bWFyZ2luOjA7d2lkdGg6MTAwJTttYXgtd2lkdGg6MTAwJTt2ZXJ0aWNhbC1hbGlnbjpib3R0b207dGV4dC1hbGlnbjppbmhlcml0O2JveC1zaXppbmc6Y29udGVudC1ib3h9Lm1hdC1pbnB1dC1lbGVtZW50Oi1tb3otdWktaW52YWxpZHtib3gtc2hhZG93Om5vbmV9Lm1hdC1pbnB1dC1lbGVtZW50OjotbXMtY2xlYXIsLm1hdC1pbnB1dC1lbGVtZW50OjotbXMtcmV2ZWFse2Rpc3BsYXk6bm9uZX0ubWF0LWlucHV0LWVsZW1lbnQsLm1hdC1pbnB1dC1lbGVtZW50Ojotd2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9uLC5tYXQtaW5wdXQtZWxlbWVudDo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiwubWF0LWlucHV0LWVsZW1lbnQ6Oi13ZWJraXQtc2VhcmNoLXJlc3VsdHMtYnV0dG9uLC5tYXQtaW5wdXQtZWxlbWVudDo6LXdlYmtpdC1zZWFyY2gtcmVzdWx0cy1kZWNvcmF0aW9uey13ZWJraXQtYXBwZWFyYW5jZTpub25lfS5tYXQtaW5wdXQtZWxlbWVudDo6LXdlYmtpdC1jb250YWN0cy1hdXRvLWZpbGwtYnV0dG9uLC5tYXQtaW5wdXQtZWxlbWVudDo6LXdlYmtpdC1jYXBzLWxvY2staW5kaWNhdG9yLC5tYXQtaW5wdXQtZWxlbWVudDo6LXdlYmtpdC1jcmVkZW50aWFscy1hdXRvLWZpbGwtYnV0dG9ue3Zpc2liaWxpdHk6aGlkZGVufS5tYXQtaW5wdXQtZWxlbWVudFt0eXBlPWRhdGVdLC5tYXQtaW5wdXQtZWxlbWVudFt0eXBlPWRhdGV0aW1lXSwubWF0LWlucHV0LWVsZW1lbnRbdHlwZT1kYXRldGltZS1sb2NhbF0sLm1hdC1pbnB1dC1lbGVtZW50W3R5cGU9bW9udGhdLC5tYXQtaW5wdXQtZWxlbWVudFt0eXBlPXdlZWtdLC5tYXQtaW5wdXQtZWxlbWVudFt0eXBlPXRpbWVde2xpbmUtaGVpZ2h0OjF9Lm1hdC1pbnB1dC1lbGVtZW50W3R5cGU9ZGF0ZV06OmFmdGVyLC5tYXQtaW5wdXQtZWxlbWVudFt0eXBlPWRhdGV0aW1lXTo6YWZ0ZXIsLm1hdC1pbnB1dC1lbGVtZW50W3R5cGU9ZGF0ZXRpbWUtbG9jYWxdOjphZnRlciwubWF0LWlucHV0LWVsZW1lbnRbdHlwZT1tb250aF06OmFmdGVyLC5tYXQtaW5wdXQtZWxlbWVudFt0eXBlPXdlZWtdOjphZnRlciwubWF0LWlucHV0LWVsZW1lbnRbdHlwZT10aW1lXTo6YWZ0ZXJ7Y29udGVudDoiICI7d2hpdGUtc3BhY2U6cHJlO3dpZHRoOjFweH0ubWF0LWlucHV0LWVsZW1lbnQ6Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24sLm1hdC1pbnB1dC1lbGVtZW50Ojotd2Via2l0LWNhbGVuZGFyLXBpY2tlci1pbmRpY2F0b3IsLm1hdC1pbnB1dC1lbGVtZW50Ojotd2Via2l0LWNsZWFyLWJ1dHRvbntmb250LXNpemU6Ljc1ZW19Lm1hdC1pbnB1dC1lbGVtZW50OjpwbGFjZWhvbGRlcnstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7dHJhbnNpdGlvbjpjb2xvciA0MDBtcyAxMzMuMzMzMzMzMzMzM21zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpfS5tYXQtaW5wdXQtZWxlbWVudDo6cGxhY2Vob2xkZXI6LW1zLWlucHV0LXBsYWNlaG9sZGVyey1tcy11c2VyLXNlbGVjdDp0ZXh0fS5tYXQtaW5wdXQtZWxlbWVudDo6LW1vei1wbGFjZWhvbGRlcnstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7dHJhbnNpdGlvbjpjb2xvciA0MDBtcyAxMzMuMzMzMzMzMzMzM21zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpfS5tYXQtaW5wdXQtZWxlbWVudDo6LW1vei1wbGFjZWhvbGRlcjotbXMtaW5wdXQtcGxhY2Vob2xkZXJ7LW1zLXVzZXItc2VsZWN0OnRleHR9Lm1hdC1pbnB1dC1lbGVtZW50Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyey13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTt0cmFuc2l0aW9uOmNvbG9yIDQwMG1zIDEzMy4zMzMzMzMzMzMzbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Lm1hdC1pbnB1dC1lbGVtZW50Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyOi1tcy1pbnB1dC1wbGFjZWhvbGRlcnstbXMtdXNlci1zZWxlY3Q6dGV4dH0ubWF0LWlucHV0LWVsZW1lbnQ6LW1zLWlucHV0LXBsYWNlaG9sZGVyey13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTt0cmFuc2l0aW9uOmNvbG9yIDQwMG1zIDEzMy4zMzMzMzMzMzMzbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Lm1hdC1pbnB1dC1lbGVtZW50Oi1tcy1pbnB1dC1wbGFjZWhvbGRlcjotbXMtaW5wdXQtcGxhY2Vob2xkZXJ7LW1zLXVzZXItc2VsZWN0OnRleHR9Lm1hdC1mb3JtLWZpZWxkLWhpZGUtcGxhY2Vob2xkZXIgLm1hdC1pbnB1dC1lbGVtZW50OjpwbGFjZWhvbGRlcntjb2xvcjp0cmFuc3BhcmVudCAhaW1wb3J0YW50Oy13ZWJraXQtdGV4dC1maWxsLWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246bm9uZX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtZm9ybS1maWVsZC1oaWRlLXBsYWNlaG9sZGVyIC5tYXQtaW5wdXQtZWxlbWVudDo6cGxhY2Vob2xkZXJ7b3BhY2l0eTowfS5tYXQtZm9ybS1maWVsZC1oaWRlLXBsYWNlaG9sZGVyIC5tYXQtaW5wdXQtZWxlbWVudDo6LW1vei1wbGFjZWhvbGRlcntjb2xvcjp0cmFuc3BhcmVudCAhaW1wb3J0YW50Oy13ZWJraXQtdGV4dC1maWxsLWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246bm9uZX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtZm9ybS1maWVsZC1oaWRlLXBsYWNlaG9sZGVyIC5tYXQtaW5wdXQtZWxlbWVudDo6LW1vei1wbGFjZWhvbGRlcntvcGFjaXR5OjB9Lm1hdC1mb3JtLWZpZWxkLWhpZGUtcGxhY2Vob2xkZXIgLm1hdC1pbnB1dC1lbGVtZW50Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVye2NvbG9yOnRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7LXdlYmtpdC10ZXh0LWZpbGwtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpub25lfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1mb3JtLWZpZWxkLWhpZGUtcGxhY2Vob2xkZXIgLm1hdC1pbnB1dC1lbGVtZW50Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVye29wYWNpdHk6MH0ubWF0LWZvcm0tZmllbGQtaGlkZS1wbGFjZWhvbGRlciAubWF0LWlucHV0LWVsZW1lbnQ6LW1zLWlucHV0LXBsYWNlaG9sZGVye2NvbG9yOnRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7LXdlYmtpdC10ZXh0LWZpbGwtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpub25lfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1mb3JtLWZpZWxkLWhpZGUtcGxhY2Vob2xkZXIgLm1hdC1pbnB1dC1lbGVtZW50Oi1tcy1pbnB1dC1wbGFjZWhvbGRlcntvcGFjaXR5OjB9dGV4dGFyZWEubWF0LWlucHV0LWVsZW1lbnR7cmVzaXplOnZlcnRpY2FsO292ZXJmbG93OmF1dG99dGV4dGFyZWEubWF0LWlucHV0LWVsZW1lbnQuY2RrLXRleHRhcmVhLWF1dG9zaXple3Jlc2l6ZTpub25lfXRleHRhcmVhLm1hdC1pbnB1dC1lbGVtZW50e3BhZGRpbmc6MnB4IDA7bWFyZ2luOi0ycHggMH1zZWxlY3QubWF0LWlucHV0LWVsZW1lbnR7LW1vei1hcHBlYXJhbmNlOm5vbmU7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7cG9zaXRpb246cmVsYXRpdmU7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtkaXNwbGF5OmlubGluZS1mbGV4O2JveC1zaXppbmc6Ym9yZGVyLWJveDtwYWRkaW5nLXRvcDoxZW07dG9wOi0xZW07bWFyZ2luLWJvdHRvbTotMWVtfXNlbGVjdC5tYXQtaW5wdXQtZWxlbWVudDo6LW1zLWV4cGFuZHtkaXNwbGF5Om5vbmV9c2VsZWN0Lm1hdC1pbnB1dC1lbGVtZW50OjotbW96LWZvY3VzLWlubmVye2JvcmRlcjowfXNlbGVjdC5tYXQtaW5wdXQtZWxlbWVudDpub3QoOmRpc2FibGVkKXtjdXJzb3I6cG9pbnRlcn1zZWxlY3QubWF0LWlucHV0LWVsZW1lbnQ6Oi1tcy12YWx1ZXtjb2xvcjppbmhlcml0O2JhY2tncm91bmQ6bm9uZX0ubWF0LWZvY3VzZWQgLmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSBzZWxlY3QubWF0LWlucHV0LWVsZW1lbnQ6Oi1tcy12YWx1ZXtjb2xvcjppbmhlcml0fS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0IC5tYXQtZm9ybS1maWVsZC1pbmZpeDo6YWZ0ZXJ7Y29udGVudDoiIjt3aWR0aDowO2hlaWdodDowO2JvcmRlci1sZWZ0OjVweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItcmlnaHQ6NXB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci10b3A6NXB4IHNvbGlkO3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1MCU7cmlnaHQ6MDttYXJnaW4tdG9wOi0yLjVweDtwb2ludGVyLWV2ZW50czpub25lfVtkaXI9cnRsXSAubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdCAubWF0LWZvcm0tZmllbGQtaW5maXg6OmFmdGVye3JpZ2h0OmF1dG87bGVmdDowfS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0IC5tYXQtaW5wdXQtZWxlbWVudHtwYWRkaW5nLXJpZ2h0OjE1cHh9W2Rpcj1ydGxdIC5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0IC5tYXQtaW5wdXQtZWxlbWVudHtwYWRkaW5nLXJpZ2h0OjA7cGFkZGluZy1sZWZ0OjE1cHh9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJ7bWF4LXdpZHRoOmNhbGMoMTAwJSAtIDEwcHgpfS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtaW5maXg6OmFmdGVye21hcmdpbi10b3A6LTVweH0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwgLm1hdC1mb3JtLWZpZWxkLWluZml4OjphZnRlcnttYXJnaW4tdG9wOi0xMHB4fVxuJywiLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtZm9ybS1maWVsZC1sYWJlbHt0cmFuc2Zvcm06cGVyc3BlY3RpdmUoMTAwcHgpOy1tcy10cmFuc2Zvcm06bm9uZX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kgLm1hdC1mb3JtLWZpZWxkLXByZWZpeCAubWF0LWljb24sLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtZm9ybS1maWVsZC1zdWZmaXggLm1hdC1pY29ue3dpZHRoOjFlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kgLm1hdC1mb3JtLWZpZWxkLXByZWZpeCAubWF0LWljb24tYnV0dG9uLC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtc3VmZml4IC5tYXQtaWNvbi1idXR0b257Zm9udDppbmhlcml0O3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtcHJlZml4IC5tYXQtaWNvbi1idXR0b24gLm1hdC1pY29uLC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtc3VmZml4IC5tYXQtaWNvbi1idXR0b24gLm1hdC1pY29ue2ZvbnQtc2l6ZTppbmhlcml0fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5le2hlaWdodDoxcHh9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZXtoZWlnaHQ6MDtib3JkZXItdG9wOnNvbGlkIDFweH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZXt0b3A6MDtoZWlnaHQ6MnB4O292ZXJmbG93OmhpZGRlbn0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtcmlwcGxle2hlaWdodDowO2JvcmRlci10b3A6c29saWQgMnB4fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5le2JhY2tncm91bmQtcG9zaXRpb246MDtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmV7Ym9yZGVyLXRvcC1zdHlsZTpkb3R0ZWQ7Ym9yZGVyLXRvcC13aWR0aDoycHh9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWludmFsaWQ6bm90KC5tYXQtZm9jdXNlZCkgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZXtoZWlnaHQ6MXB4fVxuIiwiLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtd3JhcHBlcnttYXJnaW46LjI1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1mbGV4e3BhZGRpbmc6MCAuNzVlbSAwIC43NWVtO21hcmdpbi10b3A6LTAuMjVlbTtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1wcmVmaXgsLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtc3VmZml4e3RvcDouMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5le2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6LjI1ZW07bGVmdDowO3JpZ2h0OjA7Ym90dG9tOjA7cG9pbnRlci1ldmVudHM6bm9uZX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXN0YXJ0LC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtZW5ke2JvcmRlcjoxcHggc29saWQgY3VycmVudENvbG9yO21pbi13aWR0aDo1cHh9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtb3V0bGluZS1zdGFydHtib3JkZXItcmFkaXVzOjVweCAwIDAgNXB4O2JvcmRlci1yaWdodC1zdHlsZTpub25lfVtkaXI9cnRsXSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXN0YXJ0e2JvcmRlci1yaWdodC1zdHlsZTpzb2xpZDtib3JkZXItbGVmdC1zdHlsZTpub25lO2JvcmRlci1yYWRpdXM6MCA1cHggNXB4IDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtb3V0bGluZS1lbmR7Ym9yZGVyLXJhZGl1czowIDVweCA1cHggMDtib3JkZXItbGVmdC1zdHlsZTpub25lO2ZsZXgtZ3JvdzoxfVtkaXI9cnRsXSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLWVuZHtib3JkZXItbGVmdC1zdHlsZTpzb2xpZDtib3JkZXItcmlnaHQtc3R5bGU6bm9uZTtib3JkZXItcmFkaXVzOjVweCAwIDAgNXB4fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtZ2Fwe2JvcmRlci1yYWRpdXM6LjAwMDAwMXB4O2JvcmRlcjoxcHggc29saWQgY3VycmVudENvbG9yO2JvcmRlci1sZWZ0LXN0eWxlOm5vbmU7Ym9yZGVyLXJpZ2h0LXN0eWxlOm5vbmV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0IC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLWdhcHtib3JkZXItdG9wLWNvbG9yOnRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2t7b3BhY2l0eTowfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2sgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtc3RhcnQsLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGljayAubWF0LWZvcm0tZmllbGQtb3V0bGluZS1lbmQsLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGljayAubWF0LWZvcm0tZmllbGQtb3V0bGluZS1nYXB7Ym9yZGVyLXdpZHRoOjJweH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtaW52YWxpZCAubWF0LWZvcm0tZmllbGQtb3V0bGluZXtvcGFjaXR5OjA7dHJhbnNpdGlvbjpvcGFjaXR5IDEwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvY3VzZWQgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2ssLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNre29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvY3VzZWQgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2t7Ym9yZGVyOjNweCBkYXNoZWR9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZTpub3QoLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkKSAubWF0LWZvcm0tZmllbGQtZmxleDpob3ZlciAubWF0LWZvcm0tZmllbGQtb3V0bGluZXtvcGFjaXR5OjA7dHJhbnNpdGlvbjpvcGFjaXR5IDYwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmU6bm90KC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCkgLm1hdC1mb3JtLWZpZWxkLWZsZXg6aG92ZXIgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2t7b3BhY2l0eToxfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVye3BhZGRpbmc6MCAxZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZTpub3QoLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkKSAubWF0LWZvcm0tZmllbGQtZmxleDpob3Zlcn4ubWF0LWZvcm0tZmllbGQtb3V0bGluZSwubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUuX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtc3RhcnQsLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LWZvcm0tZmllbGQtb3V0bGluZS1lbmQsLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LWZvcm0tZmllbGQtb3V0bGluZS1nYXB7dHJhbnNpdGlvbjpub25lfVxuIiwiLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmQgLm1hdC1mb3JtLWZpZWxkLWZsZXh7cGFkZGluZy10b3A6Ljc1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmQgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZXtoZWlnaHQ6MXB4fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmQgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZXtoZWlnaHQ6MDtib3JkZXItdG9wOnNvbGlkIDFweH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZCAubWF0LWZvcm0tZmllbGQtcmlwcGxle2JvdHRvbTowO2hlaWdodDoycHh9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZCAubWF0LWZvcm0tZmllbGQtcmlwcGxle2hlaWdodDowO2JvcmRlci10b3A6c29saWQgMnB4fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLXN0YW5kYXJkLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmV7YmFja2dyb3VuZC1wb3NpdGlvbjowO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5le2JvcmRlci10b3Atc3R5bGU6ZG90dGVkO2JvcmRlci10b3Atd2lkdGg6MnB4fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLXN0YW5kYXJkOm5vdCgubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQpIC5tYXQtZm9ybS1maWVsZC1mbGV4OmhvdmVyfi5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmUgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZXtvcGFjaXR5OjE7dHJhbnNmb3JtOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5IDYwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLXN0YW5kYXJkLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlOm5vdCgubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQpIC5tYXQtZm9ybS1maWVsZC1mbGV4OmhvdmVyfi5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmUgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZXt0cmFuc2l0aW9uOm5vbmV9XG4iXX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOktofSx7dHlwZTpPYn0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W0toXX1dfSx7dHlwZTp2RixkZWNvcmF0b3JzOlt7dHlwZTpCcn1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W2JVXX1dfSx7dHlwZTpjSH0se3R5cGU6bUN9LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbY2tdfV19XX0pLHtmbG9hdExhYmVsOlt7dHlwZTpSX31dLGFwcGVhcmFuY2U6W3t0eXBlOlJffV0saGlkZVJlcXVpcmVkTWFya2VyOlt7dHlwZTpSX31dLGhpbnRMYWJlbDpbe3R5cGU6Ul99XSx1bmRlcmxpbmVSZWY6W3t0eXBlOmFyLGFyZ3M6WyJ1bmRlcmxpbmUiXX1dLF9jb25uZWN0aW9uQ29udGFpbmVyUmVmOlt7dHlwZTphcixhcmdzOlsiY29ubmVjdGlvbkNvbnRhaW5lciIse3N0YXRpYzohMH1dfV0sX2lucHV0Q29udGFpbmVyUmVmOlt7dHlwZTphcixhcmdzOlsiaW5wdXRDb250YWluZXIiXX1dLF9sYWJlbDpbe3R5cGU6YXIsYXJnczpbImxhYmVsIl19XSxfY29udHJvbE5vblN0YXRpYzpbe3R5cGU6aXIsYXJnczpbaVVdfV0sX2NvbnRyb2xTdGF0aWM6W3t0eXBlOmlyLGFyZ3M6W2lVLHtzdGF0aWM6ITB9XX1dLF9sYWJlbENoaWxkTm9uU3RhdGljOlt7dHlwZTppcixhcmdzOltjVV19XSxfbGFiZWxDaGlsZFN0YXRpYzpbe3R5cGU6aXIsYXJnczpbY1Use3N0YXRpYzohMH1dfV0sX3BsYWNlaG9sZGVyQ2hpbGQ6W3t0eXBlOmlyLGFyZ3M6W2RVXX1dLF9lcnJvckNoaWxkcmVuOlt7dHlwZTpvcixhcmdzOltlVSx7ZGVzY2VuZGFudHM6ITB9XX1dLF9oaW50Q2hpbGRyZW46W3t0eXBlOm9yLGFyZ3M6W3NVLHtkZXNjZW5kYW50czohMH1dfV0sX3ByZWZpeENoaWxkcmVuOlt7dHlwZTpvcixhcmdzOltwVSx7ZGVzY2VuZGFudHM6ITB9XX1dLF9zdWZmaXhDaGlsZHJlbjpbe3R5cGU6b3IsYXJnczpbZlUse2Rlc2NlbmRhbnRzOiEwfV19XX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgQ1V7fUNVLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxDVSl9LENVLsm1bW9kPWZvKHt0eXBlOkNVfSksQ1UuybVpbmo9RG4oe2ltcG9ydHM6W1tyeCxORix3SF0sTkZdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihDVSxbe3R5cGU6TF8sYXJnczpbe2RlY2xhcmF0aW9uczpbblUsX1UsbFUsY1UsZFUsbVUsdVVdLGltcG9ydHM6W3J4LE5GLHdIXSxleHBvcnRzOltORixuVSxfVSxsVSxjVSxkVSxtVSx1VV19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhDVSx7ZGVjbGFyYXRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuW25VLF9VLGxVLGNVLGRVLG1VLHVVXX0saW1wb3J0czpmdW5jdGlvbigpe3JldHVybltyeCxORix3SF19LGV4cG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bTkYsblUsX1UsbFUsY1UsZFUsbVUsdVVdfX0pOwovKioKICAgICAqIEBsaWNlbnNlIEFuZ3VsYXIgdjEyLjIuMQogICAgICogKGMpIDIwMTAtMjAyMSBHb29nbGUgTExDLiBodHRwczovL2FuZ3VsYXIuaW8vCiAgICAgKiBMaWNlbnNlOiBNSVQKICAgICAqLwpjbGFzcyBNVXtjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuX3JlbmRlcmVyPXQsdGhpcy5fZWxlbWVudFJlZj1lLHRoaXMub25DaGFuZ2U9dD0+e30sdGhpcy5vblRvdWNoZWQ9KCk9Pnt9fXNldFByb3BlcnR5KHQsZSl7dGhpcy5fcmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LHQsZSl9cmVnaXN0ZXJPblRvdWNoZWQodCl7dGhpcy5vblRvdWNoZWQ9dH1yZWdpc3Rlck9uQ2hhbmdlKHQpe3RoaXMub25DaGFuZ2U9dH1zZXREaXNhYmxlZFN0YXRlKHQpe3RoaXMuc2V0UHJvcGVydHkoImRpc2FibGVkIix0KX19TVUuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fE1VKShnZigkaCksZ2YoS2gpKX0sTVUuybVkaXI9aG8oe3R5cGU6TVV9KSxNVS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOiRofSx7dHlwZTpLaH1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoTVUsW3t0eXBlOmtffV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOiRofSx7dHlwZTpLaH1dfSksbnVsbCk7Y2xhc3MgdlUgZXh0ZW5kcyBNVXt9dlUuybVmYWM9KGZ1bmN0aW9uKCl7bGV0IHQ7cmV0dXJuIGZ1bmN0aW9uIGUobil7cmV0dXJuKHR8fCh0PVVhKHZVKSkpKG58fHZVKX19KSgpLHZVLsm1ZGlyPWhvKHt0eXBlOnZVLGZlYXR1cmVzOltRcF19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHZVLFt7dHlwZTprX31dLG51bGwsbnVsbCk7Y29uc3QgeFU9bmV3IGVyKCJOZ1ZhbHVlQWNjZXNzb3IiKSxPVT17cHJvdmlkZTp4VSx1c2VFeGlzdGluZzokZSgoKCk9PlBVKSksbXVsdGk6ITB9OwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBQVSBleHRlbmRzIHZVe3dyaXRlVmFsdWUodCl7dGhpcy5zZXRQcm9wZXJ0eSgiY2hlY2tlZCIsdCl9fVBVLsm1ZmFjPShmdW5jdGlvbigpe2xldCB0O3JldHVybiBmdW5jdGlvbiBlKG4pe3JldHVybih0fHwodD1VYShQVSkpKShufHxQVSl9fSkoKSxQVS7JtWRpcj1obyh7dHlwZTpQVSxzZWxlY3RvcnM6W1siaW5wdXQiLCJ0eXBlIiwiY2hlY2tib3giLCJmb3JtQ29udHJvbE5hbWUiLCIiXSxbImlucHV0IiwidHlwZSIsImNoZWNrYm94IiwiZm9ybUNvbnRyb2wiLCIiXSxbImlucHV0IiwidHlwZSIsImNoZWNrYm94IiwibmdNb2RlbCIsIiJdXSxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezEmZSYmUmYoImNoYW5nZSIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25DaGFuZ2UoZS50YXJnZXQuY2hlY2tlZCl9KSkoImJsdXIiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25Ub3VjaGVkKCl9KSl9LGZlYXR1cmVzOltqaChbT1VdKSxRcF19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFBVLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6ImlucHV0W3R5cGU9Y2hlY2tib3hdW2Zvcm1Db250cm9sTmFtZV0saW5wdXRbdHlwZT1jaGVja2JveF1bZm9ybUNvbnRyb2xdLGlucHV0W3R5cGU9Y2hlY2tib3hdW25nTW9kZWxdIixob3N0OnsiKGNoYW5nZSkiOiJvbkNoYW5nZSgkZXZlbnQudGFyZ2V0LmNoZWNrZWQpIiwiKGJsdXIpIjoib25Ub3VjaGVkKCkifSxwcm92aWRlcnM6W09VXX1dfV0sbnVsbCxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IHdVPXtwcm92aWRlOnhVLHVzZUV4aXN0aW5nOiRlKCgoKT0+U1UpKSxtdWx0aTohMH07Y29uc3Qga1U9bmV3IGVyKCJDb21wb3NpdGlvbkV2ZW50TW9kZSIpO2NsYXNzIFNVIGV4dGVuZHMgTVV7Y29uc3RydWN0b3IodCxlLG4pe3N1cGVyKHQsZSksdGhpcy5fY29tcG9zaXRpb25Nb2RlPW4sdGhpcy5fY29tcG9zaW5nPSExLG51bGw9PXRoaXMuX2NvbXBvc2l0aW9uTW9kZSYmKHRoaXMuX2NvbXBvc2l0aW9uTW9kZT0hKGZ1bmN0aW9uIG8oKXtjb25zdCB0PXJNKCk/ck0oKS5nZXRVc2VyQWdlbnQoKToiIjtyZXR1cm4vYW5kcm9pZCAoXGQrKS8udGVzdCh0LnRvTG93ZXJDYXNlKCkpfSkoKSl9d3JpdGVWYWx1ZSh0KXt0aGlzLnNldFByb3BlcnR5KCJ2YWx1ZSIsbnVsbD09dD8iIjp0KX1faGFuZGxlSW5wdXQodCl7KCF0aGlzLl9jb21wb3NpdGlvbk1vZGV8fHRoaXMuX2NvbXBvc2l0aW9uTW9kZSYmIXRoaXMuX2NvbXBvc2luZykmJnRoaXMub25DaGFuZ2UodCl9X2NvbXBvc2l0aW9uU3RhcnQoKXt0aGlzLl9jb21wb3Npbmc9ITB9X2NvbXBvc2l0aW9uRW5kKHQpe3RoaXMuX2NvbXBvc2luZz0hMSx0aGlzLl9jb21wb3NpdGlvbk1vZGUmJnRoaXMub25DaGFuZ2UodCl9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KZnVuY3Rpb24gRFUodCl7cmV0dXJuIG51bGw9PXR8fDA9PT10Lmxlbmd0aH1mdW5jdGlvbiBSVSh0KXtyZXR1cm4gbnVsbCE9dCYmIm51bWJlciI9PXR5cGVvZiB0Lmxlbmd0aH1TVS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8U1UpKGdmKCRoKSxnZihLaCksZ2Yoa1UsOCkpfSxTVS7JtWRpcj1obyh7dHlwZTpTVSxzZWxlY3RvcnM6W1siaW5wdXQiLCJmb3JtQ29udHJvbE5hbWUiLCIiLDMsInR5cGUiLCJjaGVja2JveCJdLFsidGV4dGFyZWEiLCJmb3JtQ29udHJvbE5hbWUiLCIiXSxbImlucHV0IiwiZm9ybUNvbnRyb2wiLCIiLDMsInR5cGUiLCJjaGVja2JveCJdLFsidGV4dGFyZWEiLCJmb3JtQ29udHJvbCIsIiJdLFsiaW5wdXQiLCJuZ01vZGVsIiwiIiwzLCJ0eXBlIiwiY2hlY2tib3giXSxbInRleHRhcmVhIiwibmdNb2RlbCIsIiJdLFsiIiwibmdEZWZhdWx0Q29udHJvbCIsIiJdXSxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezEmZSYmUmYoImlucHV0IiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5faGFuZGxlSW5wdXQoZS50YXJnZXQudmFsdWUpfSkpKCJibHVyIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uVG91Y2hlZCgpfSkpKCJjb21wb3NpdGlvbnN0YXJ0IiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLl9jb21wb3NpdGlvblN0YXJ0KCl9KSkoImNvbXBvc2l0aW9uZW5kIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5fY29tcG9zaXRpb25FbmQoZS50YXJnZXQudmFsdWUpfSkpfSxmZWF0dXJlczpbamgoW3dVXSksUXBdfSksU1UuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTokaH0se3R5cGU6S2h9LHt0eXBlOkJvb2xlYW4sZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W2tVXX1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihTVSxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJpbnB1dDpub3QoW3R5cGU9Y2hlY2tib3hdKVtmb3JtQ29udHJvbE5hbWVdLHRleHRhcmVhW2Zvcm1Db250cm9sTmFtZV0saW5wdXQ6bm90KFt0eXBlPWNoZWNrYm94XSlbZm9ybUNvbnRyb2xdLHRleHRhcmVhW2Zvcm1Db250cm9sXSxpbnB1dDpub3QoW3R5cGU9Y2hlY2tib3hdKVtuZ01vZGVsXSx0ZXh0YXJlYVtuZ01vZGVsXSxbbmdEZWZhdWx0Q29udHJvbF0iLGhvc3Q6eyIoaW5wdXQpIjoiJGFueSh0aGlzKS5faGFuZGxlSW5wdXQoJGV2ZW50LnRhcmdldC52YWx1ZSkiLCIoYmx1cikiOiJvblRvdWNoZWQoKSIsIihjb21wb3NpdGlvbnN0YXJ0KSI6IiRhbnkodGhpcykuX2NvbXBvc2l0aW9uU3RhcnQoKSIsIihjb21wb3NpdGlvbmVuZCkiOiIkYW55KHRoaXMpLl9jb21wb3NpdGlvbkVuZCgkZXZlbnQudGFyZ2V0LnZhbHVlKSJ9LHByb3ZpZGVyczpbd1VdfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6JGh9LHt0eXBlOktofSx7dHlwZTpCb29sZWFuLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltrVV19XX1dfSksbnVsbCk7Y29uc3QgRVU9bmV3IGVyKCJOZ1ZhbGlkYXRvcnMiKSxBVT1uZXcgZXIoIk5nQXN5bmNWYWxpZGF0b3JzIiksVFU9L14oPz0uezEsMjU0fSQpKD89LnsxLDY0fUApW2EtekEtWjAtOSEjJCUmJyorLz0/Xl9ge3x9fi1dKyg/OlwuW2EtekEtWjAtOSEjJCUmJyorLz0/Xl9ge3x9fi1dKykqQFthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPyg/OlwuW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/KSokLztjbGFzcyBOVXtzdGF0aWMgbWluKHQpe3JldHVybiB6VSh0KX1zdGF0aWMgbWF4KHQpe3JldHVybiBJVSh0KX1zdGF0aWMgcmVxdWlyZWQodCl7cmV0dXJuIEhVKHQpfXN0YXRpYyByZXF1aXJlZFRydWUodCl7cmV0dXJuIEZVKHQpfXN0YXRpYyBlbWFpbCh0KXtyZXR1cm4gTFUodCl9c3RhdGljIG1pbkxlbmd0aCh0KXtyZXR1cm4gQlUodCl9c3RhdGljIG1heExlbmd0aCh0KXtyZXR1cm4gVlUodCl9c3RhdGljIHBhdHRlcm4odCl7cmV0dXJuIGpVKHQpfXN0YXRpYyBudWxsVmFsaWRhdG9yKHQpe3JldHVybiBudWxsfXN0YXRpYyBjb21wb3NlKHQpe3JldHVybiBYVSh0KX1zdGF0aWMgY29tcG9zZUFzeW5jKHQpe3JldHVybiBKVSh0KX19ZnVuY3Rpb24gelUodCl7cmV0dXJuIGU9PntpZihEVShlLnZhbHVlKXx8RFUodCkpcmV0dXJuIG51bGw7Y29uc3Qgbj1wYXJzZUZsb2F0KGUudmFsdWUpO3JldHVybiFpc05hTihuKSYmbjx0P3ttaW46e21pbjp0LGFjdHVhbDplLnZhbHVlfX06bnVsbH19ZnVuY3Rpb24gSVUodCl7cmV0dXJuIGU9PntpZihEVShlLnZhbHVlKXx8RFUodCkpcmV0dXJuIG51bGw7Y29uc3Qgbj1wYXJzZUZsb2F0KGUudmFsdWUpO3JldHVybiFpc05hTihuKSYmbj50P3ttYXg6e21heDp0LGFjdHVhbDplLnZhbHVlfX06bnVsbH19ZnVuY3Rpb24gSFUodCl7cmV0dXJuIERVKHQudmFsdWUpP3tyZXF1aXJlZDohMH06bnVsbH1mdW5jdGlvbiBGVSh0KXtyZXR1cm4hMD09PXQudmFsdWU/bnVsbDp7cmVxdWlyZWQ6ITB9fWZ1bmN0aW9uIExVKHQpe3JldHVybiBEVSh0LnZhbHVlKXx8VFUudGVzdCh0LnZhbHVlKT9udWxsOntlbWFpbDohMH19ZnVuY3Rpb24gQlUodCl7cmV0dXJuIGU9PkRVKGUudmFsdWUpfHwhUlUoZS52YWx1ZSk/bnVsbDplLnZhbHVlLmxlbmd0aDx0P3ttaW5sZW5ndGg6e3JlcXVpcmVkTGVuZ3RoOnQsYWN0dWFsTGVuZ3RoOmUudmFsdWUubGVuZ3RofX06bnVsbH1mdW5jdGlvbiBWVSh0KXtyZXR1cm4gZT0+UlUoZS52YWx1ZSkmJmUudmFsdWUubGVuZ3RoPnQ/e21heGxlbmd0aDp7cmVxdWlyZWRMZW5ndGg6dCxhY3R1YWxMZW5ndGg6ZS52YWx1ZS5sZW5ndGh9fTpudWxsfWZ1bmN0aW9uIGpVKHQpe2lmKCF0KXJldHVybiBVVTtsZXQgZSxuO3JldHVybiJzdHJpbmciPT10eXBlb2YgdD8obj0iIiwiXiIhPT10LmNoYXJBdCgwKSYmKG4rPSJeIiksbis9dCwiJCIhPT10LmNoYXJBdCh0Lmxlbmd0aC0xKSYmKG4rPSIkIiksZT1uZXcgUmVnRXhwKG4pKToobj10LnRvU3RyaW5nKCksZT10KSx0PT57aWYoRFUodC52YWx1ZSkpcmV0dXJuIG51bGw7Y29uc3Qgbz10LnZhbHVlO3JldHVybiBlLnRlc3Qobyk/bnVsbDp7cGF0dGVybjp7cmVxdWlyZWRQYXR0ZXJuOm4sYWN0dWFsVmFsdWU6b319fX1mdW5jdGlvbiBVVSh0KXtyZXR1cm4gbnVsbH1mdW5jdGlvbiBXVSh0KXtyZXR1cm4gbnVsbCE9dH1mdW5jdGlvbiBHVSh0KXtjb25zdCBlPWtmKHQpP1B0KHQpOnQ7aWYoIURmKGUpJiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkpdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB2YWxpZGF0b3IgdG8gcmV0dXJuIFByb21pc2Ugb3IgT2JzZXJ2YWJsZS4iKTtyZXR1cm4gZX1mdW5jdGlvbiBZVSh0KXtsZXQgZT17fTtyZXR1cm4gdC5mb3JFYWNoKCh0PT57ZT1udWxsIT10P09iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxlKSx0KTplfSkpLDA9PT1PYmplY3Qua2V5cyhlKS5sZW5ndGg/bnVsbDplfWZ1bmN0aW9uIHFVKHQsZSl7cmV0dXJuIGUubWFwKChlPT5lKHQpKSl9ZnVuY3Rpb24gWlUodCl7cmV0dXJuIHQubWFwKCh0PT4oZnVuY3Rpb24gZSh0KXtyZXR1cm4hdC52YWxpZGF0ZX0pKHQpP3Q6ZT0+dC52YWxpZGF0ZShlKSkpfWZ1bmN0aW9uIFhVKHQpe2lmKCF0KXJldHVybiBudWxsO2NvbnN0IGU9dC5maWx0ZXIoV1UpO3JldHVybiAwPT1lLmxlbmd0aD9udWxsOmZ1bmN0aW9uKHQpe3JldHVybiBZVShxVSh0LGUpKX19ZnVuY3Rpb24gS1UodCl7cmV0dXJuIG51bGwhPXQ/WFUoWlUodCkpOm51bGx9ZnVuY3Rpb24gSlUodCl7aWYoIXQpcmV0dXJuIG51bGw7Y29uc3QgZT10LmZpbHRlcihXVSk7cmV0dXJuIDA9PWUubGVuZ3RoP251bGw6ZnVuY3Rpb24odCl7cmV0dXJuIGllKHFVKHQsZSkubWFwKEdVKSkucGlwZShWdChZVSkpfX1mdW5jdGlvbiBRVSh0KXtyZXR1cm4gbnVsbCE9dD9KVShaVSh0KSk6bnVsbH1mdW5jdGlvbiAkVSh0LGUpe3JldHVybiBudWxsPT09dD9bZV06QXJyYXkuaXNBcnJheSh0KT9bLi4udCxlXTpbdCxlXX1mdW5jdGlvbiB0Vyh0KXtyZXR1cm4gdC5fcmF3VmFsaWRhdG9yc31mdW5jdGlvbiBlVyh0KXtyZXR1cm4gdC5fcmF3QXN5bmNWYWxpZGF0b3JzfWZ1bmN0aW9uIG5XKHQpe3JldHVybiB0P0FycmF5LmlzQXJyYXkodCk/dDpbdF06W119ZnVuY3Rpb24gb1codCxlKXtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KT90LmluY2x1ZGVzKGUpOnQ9PT1lfWZ1bmN0aW9uIGlXKHQsZSl7Y29uc3Qgbj1uVyhlKTtyZXR1cm4gblcodCkuZm9yRWFjaCgodD0+e29XKG4sdCl8fG4ucHVzaCh0KX0pKSxufWZ1bmN0aW9uIGFXKHQsZSl7cmV0dXJuIG5XKGUpLmZpbHRlcigoZT0+IW9XKHQsZSkpKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3Mgcld7Y29uc3RydWN0b3IoKXt0aGlzLl9yYXdWYWxpZGF0b3JzPVtdLHRoaXMuX3Jhd0FzeW5jVmFsaWRhdG9ycz1bXSx0aGlzLl9vbkRlc3Ryb3lDYWxsYmFja3M9W119Z2V0IHZhbHVlKCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wudmFsdWU6bnVsbH1nZXQgdmFsaWQoKXtyZXR1cm4gdGhpcy5jb250cm9sP3RoaXMuY29udHJvbC52YWxpZDpudWxsfWdldCBpbnZhbGlkKCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wuaW52YWxpZDpudWxsfWdldCBwZW5kaW5nKCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wucGVuZGluZzpudWxsfWdldCBkaXNhYmxlZCgpe3JldHVybiB0aGlzLmNvbnRyb2w/dGhpcy5jb250cm9sLmRpc2FibGVkOm51bGx9Z2V0IGVuYWJsZWQoKXtyZXR1cm4gdGhpcy5jb250cm9sP3RoaXMuY29udHJvbC5lbmFibGVkOm51bGx9Z2V0IGVycm9ycygpe3JldHVybiB0aGlzLmNvbnRyb2w/dGhpcy5jb250cm9sLmVycm9yczpudWxsfWdldCBwcmlzdGluZSgpe3JldHVybiB0aGlzLmNvbnRyb2w/dGhpcy5jb250cm9sLnByaXN0aW5lOm51bGx9Z2V0IGRpcnR5KCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wuZGlydHk6bnVsbH1nZXQgdG91Y2hlZCgpe3JldHVybiB0aGlzLmNvbnRyb2w/dGhpcy5jb250cm9sLnRvdWNoZWQ6bnVsbH1nZXQgc3RhdHVzKCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wuc3RhdHVzOm51bGx9Z2V0IHVudG91Y2hlZCgpe3JldHVybiB0aGlzLmNvbnRyb2w/dGhpcy5jb250cm9sLnVudG91Y2hlZDpudWxsfWdldCBzdGF0dXNDaGFuZ2VzKCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wuc3RhdHVzQ2hhbmdlczpudWxsfWdldCB2YWx1ZUNoYW5nZXMoKXtyZXR1cm4gdGhpcy5jb250cm9sP3RoaXMuY29udHJvbC52YWx1ZUNoYW5nZXM6bnVsbH1nZXQgcGF0aCgpe3JldHVybiBudWxsfV9zZXRWYWxpZGF0b3JzKHQpe3RoaXMuX3Jhd1ZhbGlkYXRvcnM9dHx8W10sdGhpcy5fY29tcG9zZWRWYWxpZGF0b3JGbj1LVSh0aGlzLl9yYXdWYWxpZGF0b3JzKX1fc2V0QXN5bmNWYWxpZGF0b3JzKHQpe3RoaXMuX3Jhd0FzeW5jVmFsaWRhdG9ycz10fHxbXSx0aGlzLl9jb21wb3NlZEFzeW5jVmFsaWRhdG9yRm49UVUodGhpcy5fcmF3QXN5bmNWYWxpZGF0b3JzKX1nZXQgdmFsaWRhdG9yKCl7cmV0dXJuIHRoaXMuX2NvbXBvc2VkVmFsaWRhdG9yRm58fG51bGx9Z2V0IGFzeW5jVmFsaWRhdG9yKCl7cmV0dXJuIHRoaXMuX2NvbXBvc2VkQXN5bmNWYWxpZGF0b3JGbnx8bnVsbH1fcmVnaXN0ZXJPbkRlc3Ryb3kodCl7dGhpcy5fb25EZXN0cm95Q2FsbGJhY2tzLnB1c2godCl9X2ludm9rZU9uRGVzdHJveUNhbGxiYWNrcygpe3RoaXMuX29uRGVzdHJveUNhbGxiYWNrcy5mb3JFYWNoKCh0PT50KCkpKSx0aGlzLl9vbkRlc3Ryb3lDYWxsYmFja3M9W119cmVzZXQodCl7dGhpcy5jb250cm9sJiZ0aGlzLmNvbnRyb2wucmVzZXQodCl9aGFzRXJyb3IodCxlKXtyZXR1cm4hIXRoaXMuY29udHJvbCYmdGhpcy5jb250cm9sLmhhc0Vycm9yKHQsZSl9Z2V0RXJyb3IodCxlKXtyZXR1cm4gdGhpcy5jb250cm9sP3RoaXMuY29udHJvbC5nZXRFcnJvcih0LGUpOm51bGx9fXJXLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxyVyl9LHJXLsm1ZGlyPWhvKHt0eXBlOnJXfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBzVyBleHRlbmRzIHJXe2dldCBmb3JtRGlyZWN0aXZlKCl7cmV0dXJuIG51bGx9Z2V0IHBhdGgoKXtyZXR1cm4gbnVsbH19c1cuybVmYWM9KGZ1bmN0aW9uKCl7bGV0IHQ7cmV0dXJuIGZ1bmN0aW9uIGUobil7cmV0dXJuKHR8fCh0PVVhKHNXKSkpKG58fHNXKX19KSgpLHNXLsm1ZGlyPWhvKHt0eXBlOnNXLGZlYXR1cmVzOltRcF19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIGxXIGV4dGVuZHMgcld7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuX3BhcmVudD1udWxsLHRoaXMubmFtZT1udWxsLHRoaXMudmFsdWVBY2Nlc3Nvcj1udWxsfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgY1d7Y29uc3RydWN0b3IodCl7dGhpcy5fY2Q9dH1pcyh0KXt2YXIgZSxuLG87cmV0dXJuInN1Ym1pdHRlZCI9PT10PyEhKG51bGw9PT0oZT10aGlzLl9jZCl8fHZvaWQgMD09PWU/dm9pZCAwOmUuc3VibWl0dGVkKTohIShudWxsPT09KG89bnVsbD09PShuPXRoaXMuX2NkKXx8dm9pZCAwPT09bj92b2lkIDA6bi5jb250cm9sKXx8dm9pZCAwPT09bz92b2lkIDA6b1t0XSl9fWNvbnN0IGRXPXsiW2NsYXNzLm5nLXVudG91Y2hlZF0iOidpcygidW50b3VjaGVkIiknLCJbY2xhc3MubmctdG91Y2hlZF0iOidpcygidG91Y2hlZCIpJywiW2NsYXNzLm5nLXByaXN0aW5lXSI6J2lzKCJwcmlzdGluZSIpJywiW2NsYXNzLm5nLWRpcnR5XSI6J2lzKCJkaXJ0eSIpJywiW2NsYXNzLm5nLXZhbGlkXSI6J2lzKCJ2YWxpZCIpJywiW2NsYXNzLm5nLWludmFsaWRdIjonaXMoImludmFsaWQiKScsIltjbGFzcy5uZy1wZW5kaW5nXSI6J2lzKCJwZW5kaW5nIiknfSxwVz17IltjbGFzcy5uZy11bnRvdWNoZWRdIjonaXMoInVudG91Y2hlZCIpJywiW2NsYXNzLm5nLXRvdWNoZWRdIjonaXMoInRvdWNoZWQiKScsIltjbGFzcy5uZy1wcmlzdGluZV0iOidpcygicHJpc3RpbmUiKScsIltjbGFzcy5uZy1kaXJ0eV0iOidpcygiZGlydHkiKScsIltjbGFzcy5uZy12YWxpZF0iOidpcygidmFsaWQiKScsIltjbGFzcy5uZy1pbnZhbGlkXSI6J2lzKCJpbnZhbGlkIiknLCJbY2xhc3MubmctcGVuZGluZ10iOidpcygicGVuZGluZyIpJywiW2NsYXNzLm5nLXN1Ym1pdHRlZF0iOidpcygic3VibWl0dGVkIiknfTtjbGFzcyBtVyBleHRlbmRzIGNXe2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpfX1tVy7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8bVcpKGdmKGxXLDIpKX0sbVcuybVkaXI9aG8oe3R5cGU6bVcsc2VsZWN0b3JzOltbIiIsImZvcm1Db250cm9sTmFtZSIsIiJdLFsiIiwibmdNb2RlbCIsIiJdLFsiIiwiZm9ybUNvbnRyb2wiLCIiXV0saG9zdFZhcnM6MTQsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsyJmUmJmN1KCJuZy11bnRvdWNoZWQiLG4uaXMoInVudG91Y2hlZCIpKSgibmctdG91Y2hlZCIsbi5pcygidG91Y2hlZCIpKSgibmctcHJpc3RpbmUiLG4uaXMoInByaXN0aW5lIikpKCJuZy1kaXJ0eSIsbi5pcygiZGlydHkiKSkoIm5nLXZhbGlkIixuLmlzKCJ2YWxpZCIpKSgibmctaW52YWxpZCIsbi5pcygiaW52YWxpZCIpKSgibmctcGVuZGluZyIsbi5pcygicGVuZGluZyIpKX0sZmVhdHVyZXM6W1FwXX0pLG1XLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6bFcsZGVjb3JhdG9yczpbe3R5cGU6VnJ9XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIobVcsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW2Zvcm1Db250cm9sTmFtZV0sW25nTW9kZWxdLFtmb3JtQ29udHJvbF0iLGhvc3Q6ZFd9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpsVyxkZWNvcmF0b3JzOlt7dHlwZTpWcn1dfV19KSxudWxsKTtjbGFzcyBmVyBleHRlbmRzIGNXe2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpfX1mVy7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8ZlcpKGdmKHNXLDEwKSl9LGZXLsm1ZGlyPWhvKHt0eXBlOmZXLHNlbGVjdG9yczpbWyIiLCJmb3JtR3JvdXBOYW1lIiwiIl0sWyIiLCJmb3JtQXJyYXlOYW1lIiwiIl0sWyIiLCJuZ01vZGVsR3JvdXAiLCIiXSxbIiIsImZvcm1Hcm91cCIsIiJdLFsiZm9ybSIsMywibmdOb0Zvcm0iLCIiXSxbIiIsIm5nRm9ybSIsIiJdXSxob3N0VmFyczoxNixob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezImZSYmY3UoIm5nLXVudG91Y2hlZCIsbi5pcygidW50b3VjaGVkIikpKCJuZy10b3VjaGVkIixuLmlzKCJ0b3VjaGVkIikpKCJuZy1wcmlzdGluZSIsbi5pcygicHJpc3RpbmUiKSkoIm5nLWRpcnR5IixuLmlzKCJkaXJ0eSIpKSgibmctdmFsaWQiLG4uaXMoInZhbGlkIikpKCJuZy1pbnZhbGlkIixuLmlzKCJpbnZhbGlkIikpKCJuZy1wZW5kaW5nIixuLmlzKCJwZW5kaW5nIikpKCJuZy1zdWJtaXR0ZWQiLG4uaXMoInN1Ym1pdHRlZCIpKX0sZmVhdHVyZXM6W1FwXX0pLGZXLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6c1csZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOlZyfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGZXLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6Iltmb3JtR3JvdXBOYW1lXSxbZm9ybUFycmF5TmFtZV0sW25nTW9kZWxHcm91cF0sW2Zvcm1Hcm91cF0sZm9ybTpub3QoW25nTm9Gb3JtXSksW25nRm9ybV0iLGhvc3Q6cFd9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpzVyxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6VnJ9XX1dfSksbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCB1Vz0nXG4gICAgPGRpdiBbZm9ybUdyb3VwXT0ibXlHcm91cCI+XG4gICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPSJmaXJzdE5hbWUiPlxuICAgIDwvZGl2PlxuXG4gICAgSW4geW91ciBjbGFzczpcblxuICAgIHRoaXMubXlHcm91cCA9IG5ldyBGb3JtR3JvdXAoe1xuICAgICAgIGZpcnN0TmFtZTogbmV3IEZvcm1Db250cm9sKClcbiAgICB9KTsnLGdXPSdcbiAgICA8ZGl2IFtmb3JtR3JvdXBdPSJteUdyb3VwIj5cbiAgICAgICA8ZGl2IGZvcm1Hcm91cE5hbWU9InBlcnNvbiI+XG4gICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT0iZmlyc3ROYW1lIj5cbiAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIEluIHlvdXIgY2xhc3M6XG5cbiAgICB0aGlzLm15R3JvdXAgPSBuZXcgRm9ybUdyb3VwKHtcbiAgICAgICBwZXJzb246IG5ldyBGb3JtR3JvdXAoeyBmaXJzdE5hbWU6IG5ldyBGb3JtQ29udHJvbCgpIH0pXG4gICAgfSk7JyxoVz0nXG4gICAgPGRpdiBbZm9ybUdyb3VwXT0ibXlHcm91cCI+XG4gICAgICA8ZGl2IGZvcm1BcnJheU5hbWU9ImNpdGllcyI+XG4gICAgICAgIDxkaXYgKm5nRm9yPSJsZXQgY2l0eSBvZiBjaXR5QXJyYXkuY29udHJvbHM7IGluZGV4IGFzIGkiPlxuICAgICAgICAgIDxpbnB1dCBbZm9ybUNvbnRyb2xOYW1lXT0iaSI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICBJbiB5b3VyIGNsYXNzOlxuXG4gICAgdGhpcy5jaXR5QXJyYXkgPSBuZXcgRm9ybUFycmF5KFtuZXcgRm9ybUNvbnRyb2woXCdTRlwnKV0pO1xuICAgIHRoaXMubXlHcm91cCA9IG5ldyBGb3JtR3JvdXAoe1xuICAgICAgY2l0aWVzOiB0aGlzLmNpdHlBcnJheVxuICAgIH0pOycsYlc9J1xuICAgIDxmb3JtPlxuICAgICAgIDxkaXYgbmdNb2RlbEdyb3VwPSJwZXJzb24iPlxuICAgICAgICAgIDxpbnB1dCBbKG5nTW9kZWwpXT0icGVyc29uLm5hbWUiIG5hbWU9ImZpcnN0TmFtZSI+XG4gICAgICAgPC9kaXY+XG4gICAgPC9mb3JtPicseVc9J1xuICAgIDxkaXYgW2Zvcm1Hcm91cF09Im15R3JvdXAiPlxuICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9ImZpcnN0TmFtZSI+XG4gICAgICAgPGlucHV0IFsobmdNb2RlbCldPSJzaG93TW9yZUNvbnRyb2xzIiBbbmdNb2RlbE9wdGlvbnNdPSJ7c3RhbmRhbG9uZTogdHJ1ZX0iPlxuICAgIDwvZGl2PlxuICAnOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBfV3tzdGF0aWMgY29udHJvbFBhcmVudEV4Y2VwdGlvbigpe3Rocm93IG5ldyBFcnJvcihgZm9ybUNvbnRyb2xOYW1lIG11c3QgYmUgdXNlZCB3aXRoIGEgcGFyZW50IGZvcm1Hcm91cCBkaXJlY3RpdmUuICBZb3UnbGwgd2FudCB0byBhZGQgYSBmb3JtR3JvdXBcbiAgICAgICBkaXJlY3RpdmUgYW5kIHBhc3MgaXQgYW4gZXhpc3RpbmcgRm9ybUdyb3VwIGluc3RhbmNlICh5b3UgY2FuIGNyZWF0ZSBvbmUgaW4geW91ciBjbGFzcykuXG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgICR7dVd9YCl9c3RhdGljIG5nTW9kZWxHcm91cEV4Y2VwdGlvbigpe3Rocm93IG5ldyBFcnJvcihgZm9ybUNvbnRyb2xOYW1lIGNhbm5vdCBiZSB1c2VkIHdpdGggYW4gbmdNb2RlbEdyb3VwIHBhcmVudC4gSXQgaXMgb25seSBjb21wYXRpYmxlIHdpdGggcGFyZW50c1xuICAgICAgIHRoYXQgYWxzbyBoYXZlIGEgImZvcm0iIHByZWZpeDogZm9ybUdyb3VwTmFtZSwgZm9ybUFycmF5TmFtZSwgb3IgZm9ybUdyb3VwLlxuXG4gICAgICAgT3B0aW9uIDE6ICBVcGRhdGUgdGhlIHBhcmVudCB0byBiZSBmb3JtR3JvdXBOYW1lIChyZWFjdGl2ZSBmb3JtIHN0cmF0ZWd5KVxuXG4gICAgICAgICR7Z1d9XG5cbiAgICAgICAgT3B0aW9uIDI6IFVzZSBuZ01vZGVsIGluc3RlYWQgb2YgZm9ybUNvbnRyb2xOYW1lICh0ZW1wbGF0ZS1kcml2ZW4gc3RyYXRlZ3kpXG5cbiAgICAgICAgJHtiV31gKX1zdGF0aWMgbWlzc2luZ0Zvcm1FeGNlcHRpb24oKXt0aHJvdyBuZXcgRXJyb3IoYGZvcm1Hcm91cCBleHBlY3RzIGEgRm9ybUdyb3VwIGluc3RhbmNlLiBQbGVhc2UgcGFzcyBvbmUgaW4uXG5cbiAgICAgICBFeGFtcGxlOlxuXG4gICAgICAgJHt1V31gKX1zdGF0aWMgZ3JvdXBQYXJlbnRFeGNlcHRpb24oKXt0aHJvdyBuZXcgRXJyb3IoYGZvcm1Hcm91cE5hbWUgbXVzdCBiZSB1c2VkIHdpdGggYSBwYXJlbnQgZm9ybUdyb3VwIGRpcmVjdGl2ZS4gIFlvdSdsbCB3YW50IHRvIGFkZCBhIGZvcm1Hcm91cFxuICAgICAgZGlyZWN0aXZlIGFuZCBwYXNzIGl0IGFuIGV4aXN0aW5nIEZvcm1Hcm91cCBpbnN0YW5jZSAoeW91IGNhbiBjcmVhdGUgb25lIGluIHlvdXIgY2xhc3MpLlxuXG4gICAgICBFeGFtcGxlOlxuXG4gICAgICAke2dXfWApfXN0YXRpYyBhcnJheVBhcmVudEV4Y2VwdGlvbigpe3Rocm93IG5ldyBFcnJvcihgZm9ybUFycmF5TmFtZSBtdXN0IGJlIHVzZWQgd2l0aCBhIHBhcmVudCBmb3JtR3JvdXAgZGlyZWN0aXZlLiAgWW91J2xsIHdhbnQgdG8gYWRkIGEgZm9ybUdyb3VwXG4gICAgICAgZGlyZWN0aXZlIGFuZCBwYXNzIGl0IGFuIGV4aXN0aW5nIEZvcm1Hcm91cCBpbnN0YW5jZSAoeW91IGNhbiBjcmVhdGUgb25lIGluIHlvdXIgY2xhc3MpLlxuXG4gICAgICAgIEV4YW1wbGU6XG5cbiAgICAgICAgJHtoV31gKX1zdGF0aWMgZGlzYWJsZWRBdHRyV2FybmluZygpe2NvbnNvbGUud2FybigiXG4gICAgICBJdCBsb29rcyBsaWtlIHlvdSdyZSB1c2luZyB0aGUgZGlzYWJsZWQgYXR0cmlidXRlIHdpdGggYSByZWFjdGl2ZSBmb3JtIGRpcmVjdGl2ZS4gSWYgeW91IHNldCBkaXNhYmxlZCB0byB0cnVlXG4gICAgICB3aGVuIHlvdSBzZXQgdXAgdGhpcyBjb250cm9sIGluIHlvdXIgY29tcG9uZW50IGNsYXNzLCB0aGUgZGlzYWJsZWQgYXR0cmlidXRlIHdpbGwgYWN0dWFsbHkgYmUgc2V0IGluIHRoZSBET00gZm9yXG4gICAgICB5b3UuIFdlIHJlY29tbWVuZCB1c2luZyB0aGlzIGFwcHJvYWNoIHRvIGF2b2lkICdjaGFuZ2VkIGFmdGVyIGNoZWNrZWQnIGVycm9ycy5cblxuICAgICAgRXhhbXBsZTpcbiAgICAgIGZvcm0gPSBuZXcgRm9ybUdyb3VwKHtcbiAgICAgICAgZmlyc3Q6IG5ldyBGb3JtQ29udHJvbCh7dmFsdWU6ICdOYW5jeScsIGRpc2FibGVkOiB0cnVlfSwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgICAgIGxhc3Q6IG5ldyBGb3JtQ29udHJvbCgnRHJldycsIFZhbGlkYXRvcnMucmVxdWlyZWQpXG4gICAgICB9KTtcbiAgICAiKX1zdGF0aWMgbmdNb2RlbFdhcm5pbmcodCl7Y29uc29sZS53YXJuKGBcbiAgICBJdCBsb29rcyBsaWtlIHlvdSdyZSB1c2luZyBuZ01vZGVsIG9uIHRoZSBzYW1lIGZvcm0gZmllbGQgYXMgJHt0fS5cbiAgICBTdXBwb3J0IGZvciB1c2luZyB0aGUgbmdNb2RlbCBpbnB1dCBwcm9wZXJ0eSBhbmQgbmdNb2RlbENoYW5nZSBldmVudCB3aXRoXG4gICAgcmVhY3RpdmUgZm9ybSBkaXJlY3RpdmVzIGhhcyBiZWVuIGRlcHJlY2F0ZWQgaW4gQW5ndWxhciB2NiBhbmQgd2lsbCBiZSByZW1vdmVkXG4gICAgaW4gYSBmdXR1cmUgdmVyc2lvbiBvZiBBbmd1bGFyLlxuXG4gICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhpcywgc2VlIG91ciBBUEkgZG9jcyBoZXJlOlxuICAgIGh0dHBzOi8vYW5ndWxhci5pby9hcGkvZm9ybXMvJHsiZm9ybUNvbnRyb2wiPT09dD8iRm9ybUNvbnRyb2xEaXJlY3RpdmUiOiJGb3JtQ29udHJvbE5hbWUifSN1c2Utd2l0aC1uZ21vZGVsXG4gICAgYCl9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBDVyh0LGUpe3JldHVyblsuLi5lLnBhdGgsdF19ZnVuY3Rpb24gTVcodCxlKXsoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJih0fHxTVyhlLCJDYW5ub3QgZmluZCBjb250cm9sIHdpdGgiKSxlLnZhbHVlQWNjZXNzb3J8fFNXKGUsIk5vIHZhbHVlIGFjY2Vzc29yIGZvciBmb3JtIGNvbnRyb2wgd2l0aCIpKSxPVyh0LGUpLGUudmFsdWVBY2Nlc3Nvci53cml0ZVZhbHVlKHQudmFsdWUpLChmdW5jdGlvbiBuKHQsZSl7ZS52YWx1ZUFjY2Vzc29yLnJlZ2lzdGVyT25DaGFuZ2UoKG49Pnt0Ll9wZW5kaW5nVmFsdWU9bix0Ll9wZW5kaW5nQ2hhbmdlPSEwLHQuX3BlbmRpbmdEaXJ0eT0hMCwiY2hhbmdlIj09PXQudXBkYXRlT24mJndXKHQsZSl9KSl9KSh0LGUpLChmdW5jdGlvbiBvKHQsZSl7Y29uc3Qgbj0odCxuKT0+e2UudmFsdWVBY2Nlc3Nvci53cml0ZVZhbHVlKHQpLG4mJmUudmlld1RvTW9kZWxVcGRhdGUodCl9O3QucmVnaXN0ZXJPbkNoYW5nZShuKSxlLl9yZWdpc3Rlck9uRGVzdHJveSgoKCk9Pnt0Ll91bnJlZ2lzdGVyT25DaGFuZ2Uobil9KSl9KSh0LGUpLChmdW5jdGlvbiBpKHQsZSl7ZS52YWx1ZUFjY2Vzc29yLnJlZ2lzdGVyT25Ub3VjaGVkKCgoKT0+e3QuX3BlbmRpbmdUb3VjaGVkPSEwLCJibHVyIj09PXQudXBkYXRlT24mJnQuX3BlbmRpbmdDaGFuZ2UmJndXKHQsZSksInN1Ym1pdCIhPT10LnVwZGF0ZU9uJiZ0Lm1hcmtBc1RvdWNoZWQoKX0pKX0pKHQsZSksKGZ1bmN0aW9uIGEodCxlKXtpZihlLnZhbHVlQWNjZXNzb3Iuc2V0RGlzYWJsZWRTdGF0ZSl7Y29uc3Qgbj10PT57ZS52YWx1ZUFjY2Vzc29yLnNldERpc2FibGVkU3RhdGUodCl9O3QucmVnaXN0ZXJPbkRpc2FibGVkQ2hhbmdlKG4pLGUuX3JlZ2lzdGVyT25EZXN0cm95KCgoKT0+e3QuX3VucmVnaXN0ZXJPbkRpc2FibGVkQ2hhbmdlKG4pfSkpfX0pKHQsZSl9ZnVuY3Rpb24gdlcodCxlLG49ITApe2NvbnN0IG89KCk9PntuJiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJihmdW5jdGlvbiB0KGUpe3JldHVybiBTVyhlLCJUaGVyZSBpcyBubyBGb3JtQ29udHJvbCBpbnN0YW5jZSBhdHRhY2hlZCB0byBmb3JtIGNvbnRyb2wgZWxlbWVudCB3aXRoIil9KShlKX07ZS52YWx1ZUFjY2Vzc29yJiYoZS52YWx1ZUFjY2Vzc29yLnJlZ2lzdGVyT25DaGFuZ2UobyksZS52YWx1ZUFjY2Vzc29yLnJlZ2lzdGVyT25Ub3VjaGVkKG8pKSxQVyh0LGUpLHQmJihlLl9pbnZva2VPbkRlc3Ryb3lDYWxsYmFja3MoKSx0Ll9yZWdpc3Rlck9uQ29sbGVjdGlvbkNoYW5nZSgoKCk9Pnt9KSkpfWZ1bmN0aW9uIHhXKHQsZSl7dC5mb3JFYWNoKCh0PT57dC5yZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlJiZ0LnJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UoZSl9KSl9ZnVuY3Rpb24gT1codCxlKXtjb25zdCBuPXRXKHQpO251bGwhPT1lLnZhbGlkYXRvcj90LnNldFZhbGlkYXRvcnMoJFUobixlLnZhbGlkYXRvcikpOiJmdW5jdGlvbiI9PXR5cGVvZiBuJiZ0LnNldFZhbGlkYXRvcnMoW25dKTtjb25zdCBvPWVXKHQpO251bGwhPT1lLmFzeW5jVmFsaWRhdG9yP3Quc2V0QXN5bmNWYWxpZGF0b3JzKCRVKG8sZS5hc3luY1ZhbGlkYXRvcikpOiJmdW5jdGlvbiI9PXR5cGVvZiBvJiZ0LnNldEFzeW5jVmFsaWRhdG9ycyhbb10pO2NvbnN0IGk9KCk9PnQudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO3hXKGUuX3Jhd1ZhbGlkYXRvcnMsaSkseFcoZS5fcmF3QXN5bmNWYWxpZGF0b3JzLGkpfWZ1bmN0aW9uIFBXKHQsZSl7bGV0IG49ITE7aWYobnVsbCE9PXQpe2lmKG51bGwhPT1lLnZhbGlkYXRvcil7Y29uc3Qgbz10Vyh0KTtpZihBcnJheS5pc0FycmF5KG8pJiZvLmxlbmd0aD4wKXtjb25zdCBpPW8uZmlsdGVyKCh0PT50IT09ZS52YWxpZGF0b3IpKTtpLmxlbmd0aCE9PW8ubGVuZ3RoJiYobj0hMCx0LnNldFZhbGlkYXRvcnMoaSkpfX1pZihudWxsIT09ZS5hc3luY1ZhbGlkYXRvcil7Y29uc3Qgbz1lVyh0KTtpZihBcnJheS5pc0FycmF5KG8pJiZvLmxlbmd0aD4wKXtjb25zdCBpPW8uZmlsdGVyKCh0PT50IT09ZS5hc3luY1ZhbGlkYXRvcikpO2kubGVuZ3RoIT09by5sZW5ndGgmJihuPSEwLHQuc2V0QXN5bmNWYWxpZGF0b3JzKGkpKX19fWNvbnN0IG89KCk9Pnt9O3JldHVybiB4VyhlLl9yYXdWYWxpZGF0b3JzLG8pLHhXKGUuX3Jhd0FzeW5jVmFsaWRhdG9ycyxvKSxufWZ1bmN0aW9uIHdXKHQsZSl7dC5fcGVuZGluZ0RpcnR5JiZ0Lm1hcmtBc0RpcnR5KCksdC5zZXRWYWx1ZSh0Ll9wZW5kaW5nVmFsdWUse2VtaXRNb2RlbFRvVmlld0NoYW5nZTohMX0pLGUudmlld1RvTW9kZWxVcGRhdGUodC5fcGVuZGluZ1ZhbHVlKSx0Ll9wZW5kaW5nQ2hhbmdlPSExfWZ1bmN0aW9uIGtXKHQsZSl7bnVsbCE9dHx8InVuZGVmaW5lZCIhPXR5cGVvZiBuZ0Rldk1vZGUmJiFuZ0Rldk1vZGV8fFNXKGUsIkNhbm5vdCBmaW5kIGNvbnRyb2wgd2l0aCIpLE9XKHQsZSl9ZnVuY3Rpb24gU1codCxlKXtsZXQgbjt0aHJvdyBuPXQucGF0aC5sZW5ndGg+MT9gcGF0aDogJyR7dC5wYXRoLmpvaW4oIiAtPiAiKX0nYDp0LnBhdGhbMF0/YG5hbWU6ICcke3QucGF0aH0nYDoidW5zcGVjaWZpZWQgbmFtZSBhdHRyaWJ1dGUiLG5ldyBFcnJvcihgJHtlfSAke259YCl9ZnVuY3Rpb24gRFcodCxlKXtpZighdC5oYXNPd25Qcm9wZXJ0eSgibW9kZWwiKSlyZXR1cm4hMTtjb25zdCBuPXQubW9kZWw7cmV0dXJuISFuLmlzRmlyc3RDaGFuZ2UoKXx8IU9iamVjdC5pcyhlLG4uY3VycmVudFZhbHVlKX1mdW5jdGlvbiBSVyh0LGUpe3QuX3N5bmNQZW5kaW5nQ29udHJvbHMoKSxlLmZvckVhY2goKHQ9Pntjb25zdCBlPXQuY29udHJvbDsic3VibWl0Ij09PWUudXBkYXRlT24mJmUuX3BlbmRpbmdDaGFuZ2UmJih0LnZpZXdUb01vZGVsVXBkYXRlKGUuX3BlbmRpbmdWYWx1ZSksZS5fcGVuZGluZ0NoYW5nZT0hMSl9KSl9ZnVuY3Rpb24gRVcodCxlKXtpZighZSlyZXR1cm4gbnVsbDtsZXQgbixvLGk7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSl8fCJ1bmRlZmluZWQiIT10eXBlb2YgbmdEZXZNb2RlJiYhbmdEZXZNb2RlfHxTVyh0LCJWYWx1ZSBhY2Nlc3NvciB3YXMgbm90IHByb3ZpZGVkIGFzIGFuIGFycmF5IGZvciBmb3JtIGNvbnRyb2wgd2l0aCIpLGUuZm9yRWFjaCgoZT0+e2UuY29uc3RydWN0b3I9PT1TVT9uPWU6IShmdW5jdGlvbiBhKHQpe3JldHVybiBPYmplY3QuZ2V0UHJvdG90eXBlT2YodC5jb25zdHJ1Y3Rvcik9PT12VX0pKGUpPyhpJiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlNXKHQsIk1vcmUgdGhhbiBvbmUgY3VzdG9tIHZhbHVlIGFjY2Vzc29yIG1hdGNoZXMgZm9ybSBjb250cm9sIHdpdGgiKSxpPWUpOihvJiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlNXKHQsIk1vcmUgdGhhbiBvbmUgYnVpbHQtaW4gdmFsdWUgYWNjZXNzb3IgbWF0Y2hlcyBmb3JtIGNvbnRyb2wgd2l0aCIpLG89ZSl9KSksaXx8KG98fChufHwoKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZTVyh0LCJObyB2YWxpZCB2YWx1ZSBhY2Nlc3NvciBmb3IgZm9ybSBjb250cm9sIHdpdGgiKSxudWxsKSkpfWZ1bmN0aW9uIEFXKHQsZSl7Y29uc3Qgbj10LmluZGV4T2YoZSk7bj4tMSYmdC5zcGxpY2UobiwxKX1mdW5jdGlvbiBUVyh0LGUsbixvKXsibmV2ZXIiIT09byYmKChudWxsIT09byYmIm9uY2UiIT09b3x8ZS5fbmdNb2RlbFdhcm5pbmdTZW50T25jZSkmJigiYWx3YXlzIiE9PW98fG4uX25nTW9kZWxXYXJuaW5nU2VudCl8fChfVy5uZ01vZGVsV2FybmluZyh0KSxlLl9uZ01vZGVsV2FybmluZ1NlbnRPbmNlPSEwLG4uX25nTW9kZWxXYXJuaW5nU2VudD0hMCkpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jb25zdCBOVz0iVkFMSUQiLHpXPSJJTlZBTElEIixJVz0iUEVORElORyIsSFc9IkRJU0FCTEVEIjtmdW5jdGlvbiBGVyh0KXtyZXR1cm4oalcodCk/dC52YWxpZGF0b3JzOnQpfHxudWxsfWZ1bmN0aW9uIExXKHQpe3JldHVybiBBcnJheS5pc0FycmF5KHQpP0tVKHQpOnR8fG51bGx9ZnVuY3Rpb24gQlcodCxlKXtyZXR1cm4oalcoZSk/ZS5hc3luY1ZhbGlkYXRvcnM6dCl8fG51bGx9ZnVuY3Rpb24gVlcodCl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCk/UVUodCk6dHx8bnVsbH1mdW5jdGlvbiBqVyh0KXtyZXR1cm4gbnVsbCE9dCYmIUFycmF5LmlzQXJyYXkodCkmJiJvYmplY3QiPT10eXBlb2YgdH1jbGFzcyBVV3tjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuX2hhc093blBlbmRpbmdBc3luY1ZhbGlkYXRvcj0hMSx0aGlzLl9vbkNvbGxlY3Rpb25DaGFuZ2U9KCk9Pnt9LHRoaXMuX3BhcmVudD1udWxsLHRoaXMucHJpc3RpbmU9ITAsdGhpcy50b3VjaGVkPSExLHRoaXMuX29uRGlzYWJsZWRDaGFuZ2U9W10sdGhpcy5fcmF3VmFsaWRhdG9ycz10LHRoaXMuX3Jhd0FzeW5jVmFsaWRhdG9ycz1lLHRoaXMuX2NvbXBvc2VkVmFsaWRhdG9yRm49TFcodGhpcy5fcmF3VmFsaWRhdG9ycyksdGhpcy5fY29tcG9zZWRBc3luY1ZhbGlkYXRvckZuPVZXKHRoaXMuX3Jhd0FzeW5jVmFsaWRhdG9ycyl9Z2V0IHZhbGlkYXRvcigpe3JldHVybiB0aGlzLl9jb21wb3NlZFZhbGlkYXRvckZufXNldCB2YWxpZGF0b3IodCl7dGhpcy5fcmF3VmFsaWRhdG9ycz10aGlzLl9jb21wb3NlZFZhbGlkYXRvckZuPXR9Z2V0IGFzeW5jVmFsaWRhdG9yKCl7cmV0dXJuIHRoaXMuX2NvbXBvc2VkQXN5bmNWYWxpZGF0b3JGbn1zZXQgYXN5bmNWYWxpZGF0b3IodCl7dGhpcy5fcmF3QXN5bmNWYWxpZGF0b3JzPXRoaXMuX2NvbXBvc2VkQXN5bmNWYWxpZGF0b3JGbj10fWdldCBwYXJlbnQoKXtyZXR1cm4gdGhpcy5fcGFyZW50fWdldCB2YWxpZCgpe3JldHVybiB0aGlzLnN0YXR1cz09PU5XfWdldCBpbnZhbGlkKCl7cmV0dXJuIHRoaXMuc3RhdHVzPT09eld9Z2V0IHBlbmRpbmcoKXtyZXR1cm4gdGhpcy5zdGF0dXM9PUlXfWdldCBkaXNhYmxlZCgpe3JldHVybiB0aGlzLnN0YXR1cz09PUhXfWdldCBlbmFibGVkKCl7cmV0dXJuIHRoaXMuc3RhdHVzIT09SFd9Z2V0IGRpcnR5KCl7cmV0dXJuIXRoaXMucHJpc3RpbmV9Z2V0IHVudG91Y2hlZCgpe3JldHVybiF0aGlzLnRvdWNoZWR9Z2V0IHVwZGF0ZU9uKCl7cmV0dXJuIHRoaXMuX3VwZGF0ZU9uP3RoaXMuX3VwZGF0ZU9uOnRoaXMucGFyZW50P3RoaXMucGFyZW50LnVwZGF0ZU9uOiJjaGFuZ2UifXNldFZhbGlkYXRvcnModCl7dGhpcy5fcmF3VmFsaWRhdG9ycz10LHRoaXMuX2NvbXBvc2VkVmFsaWRhdG9yRm49TFcodCl9c2V0QXN5bmNWYWxpZGF0b3JzKHQpe3RoaXMuX3Jhd0FzeW5jVmFsaWRhdG9ycz10LHRoaXMuX2NvbXBvc2VkQXN5bmNWYWxpZGF0b3JGbj1WVyh0KX1hZGRWYWxpZGF0b3JzKHQpe3RoaXMuc2V0VmFsaWRhdG9ycyhpVyh0LHRoaXMuX3Jhd1ZhbGlkYXRvcnMpKX1hZGRBc3luY1ZhbGlkYXRvcnModCl7dGhpcy5zZXRBc3luY1ZhbGlkYXRvcnMoaVcodCx0aGlzLl9yYXdBc3luY1ZhbGlkYXRvcnMpKX1yZW1vdmVWYWxpZGF0b3JzKHQpe3RoaXMuc2V0VmFsaWRhdG9ycyhhVyh0LHRoaXMuX3Jhd1ZhbGlkYXRvcnMpKX1yZW1vdmVBc3luY1ZhbGlkYXRvcnModCl7dGhpcy5zZXRBc3luY1ZhbGlkYXRvcnMoYVcodCx0aGlzLl9yYXdBc3luY1ZhbGlkYXRvcnMpKX1oYXNWYWxpZGF0b3IodCl7cmV0dXJuIG9XKHRoaXMuX3Jhd1ZhbGlkYXRvcnMsdCl9aGFzQXN5bmNWYWxpZGF0b3IodCl7cmV0dXJuIG9XKHRoaXMuX3Jhd0FzeW5jVmFsaWRhdG9ycyx0KX1jbGVhclZhbGlkYXRvcnMoKXt0aGlzLnZhbGlkYXRvcj1udWxsfWNsZWFyQXN5bmNWYWxpZGF0b3JzKCl7dGhpcy5hc3luY1ZhbGlkYXRvcj1udWxsfW1hcmtBc1RvdWNoZWQodD17fSl7dGhpcy50b3VjaGVkPSEwLHRoaXMuX3BhcmVudCYmIXQub25seVNlbGYmJnRoaXMuX3BhcmVudC5tYXJrQXNUb3VjaGVkKHQpfW1hcmtBbGxBc1RvdWNoZWQoKXt0aGlzLm1hcmtBc1RvdWNoZWQoe29ubHlTZWxmOiEwfSksdGhpcy5fZm9yRWFjaENoaWxkKCh0PT50Lm1hcmtBbGxBc1RvdWNoZWQoKSkpfW1hcmtBc1VudG91Y2hlZCh0PXt9KXt0aGlzLnRvdWNoZWQ9ITEsdGhpcy5fcGVuZGluZ1RvdWNoZWQ9ITEsdGhpcy5fZm9yRWFjaENoaWxkKCh0PT57dC5tYXJrQXNVbnRvdWNoZWQoe29ubHlTZWxmOiEwfSl9KSksdGhpcy5fcGFyZW50JiYhdC5vbmx5U2VsZiYmdGhpcy5fcGFyZW50Ll91cGRhdGVUb3VjaGVkKHQpfW1hcmtBc0RpcnR5KHQ9e30pe3RoaXMucHJpc3RpbmU9ITEsdGhpcy5fcGFyZW50JiYhdC5vbmx5U2VsZiYmdGhpcy5fcGFyZW50Lm1hcmtBc0RpcnR5KHQpfW1hcmtBc1ByaXN0aW5lKHQ9e30pe3RoaXMucHJpc3RpbmU9ITAsdGhpcy5fcGVuZGluZ0RpcnR5PSExLHRoaXMuX2ZvckVhY2hDaGlsZCgodD0+e3QubWFya0FzUHJpc3RpbmUoe29ubHlTZWxmOiEwfSl9KSksdGhpcy5fcGFyZW50JiYhdC5vbmx5U2VsZiYmdGhpcy5fcGFyZW50Ll91cGRhdGVQcmlzdGluZSh0KX1tYXJrQXNQZW5kaW5nKHQ9e30pe3RoaXMuc3RhdHVzPUlXLCExIT09dC5lbWl0RXZlbnQmJnRoaXMuc3RhdHVzQ2hhbmdlcy5lbWl0KHRoaXMuc3RhdHVzKSx0aGlzLl9wYXJlbnQmJiF0Lm9ubHlTZWxmJiZ0aGlzLl9wYXJlbnQubWFya0FzUGVuZGluZyh0KX1kaXNhYmxlKHQ9e30pe2NvbnN0IGU9dGhpcy5fcGFyZW50TWFya2VkRGlydHkodC5vbmx5U2VsZik7dGhpcy5zdGF0dXM9SFcsdGhpcy5lcnJvcnM9bnVsbCx0aGlzLl9mb3JFYWNoQ2hpbGQoKGU9PntlLmRpc2FibGUoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtvbmx5U2VsZjohMH0pKX0pKSx0aGlzLl91cGRhdGVWYWx1ZSgpLCExIT09dC5lbWl0RXZlbnQmJih0aGlzLnZhbHVlQ2hhbmdlcy5lbWl0KHRoaXMudmFsdWUpLHRoaXMuc3RhdHVzQ2hhbmdlcy5lbWl0KHRoaXMuc3RhdHVzKSksdGhpcy5fdXBkYXRlQW5jZXN0b3JzKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7c2tpcFByaXN0aW5lQ2hlY2s6ZX0pKSx0aGlzLl9vbkRpc2FibGVkQ2hhbmdlLmZvckVhY2goKHQ9PnQoITApKSl9ZW5hYmxlKHQ9e30pe2NvbnN0IGU9dGhpcy5fcGFyZW50TWFya2VkRGlydHkodC5vbmx5U2VsZik7dGhpcy5zdGF0dXM9TlcsdGhpcy5fZm9yRWFjaENoaWxkKChlPT57ZS5lbmFibGUoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtvbmx5U2VsZjohMH0pKX0pKSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe29ubHlTZWxmOiEwLGVtaXRFdmVudDp0LmVtaXRFdmVudH0pLHRoaXMuX3VwZGF0ZUFuY2VzdG9ycyhPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3NraXBQcmlzdGluZUNoZWNrOmV9KSksdGhpcy5fb25EaXNhYmxlZENoYW5nZS5mb3JFYWNoKCh0PT50KCExKSkpfV91cGRhdGVBbmNlc3RvcnModCl7dGhpcy5fcGFyZW50JiYhdC5vbmx5U2VsZiYmKHRoaXMuX3BhcmVudC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHQpLHQuc2tpcFByaXN0aW5lQ2hlY2t8fHRoaXMuX3BhcmVudC5fdXBkYXRlUHJpc3RpbmUoKSx0aGlzLl9wYXJlbnQuX3VwZGF0ZVRvdWNoZWQoKSl9c2V0UGFyZW50KHQpe3RoaXMuX3BhcmVudD10fXVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkodD17fSl7dGhpcy5fc2V0SW5pdGlhbFN0YXR1cygpLHRoaXMuX3VwZGF0ZVZhbHVlKCksdGhpcy5lbmFibGVkJiYodGhpcy5fY2FuY2VsRXhpc3RpbmdTdWJzY3JpcHRpb24oKSx0aGlzLmVycm9ycz10aGlzLl9ydW5WYWxpZGF0b3IoKSx0aGlzLnN0YXR1cz10aGlzLl9jYWxjdWxhdGVTdGF0dXMoKSx0aGlzLnN0YXR1cyE9PU5XJiZ0aGlzLnN0YXR1cyE9PUlXfHx0aGlzLl9ydW5Bc3luY1ZhbGlkYXRvcih0LmVtaXRFdmVudCkpLCExIT09dC5lbWl0RXZlbnQmJih0aGlzLnZhbHVlQ2hhbmdlcy5lbWl0KHRoaXMudmFsdWUpLHRoaXMuc3RhdHVzQ2hhbmdlcy5lbWl0KHRoaXMuc3RhdHVzKSksdGhpcy5fcGFyZW50JiYhdC5vbmx5U2VsZiYmdGhpcy5fcGFyZW50LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkodCl9X3VwZGF0ZVRyZWVWYWxpZGl0eSh0PXtlbWl0RXZlbnQ6ITB9KXt0aGlzLl9mb3JFYWNoQ2hpbGQoKGU9PmUuX3VwZGF0ZVRyZWVWYWxpZGl0eSh0KSkpLHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7b25seVNlbGY6ITAsZW1pdEV2ZW50OnQuZW1pdEV2ZW50fSl9X3NldEluaXRpYWxTdGF0dXMoKXt0aGlzLnN0YXR1cz10aGlzLl9hbGxDb250cm9sc0Rpc2FibGVkKCk/SFc6Tld9X3J1blZhbGlkYXRvcigpe3JldHVybiB0aGlzLnZhbGlkYXRvcj90aGlzLnZhbGlkYXRvcih0aGlzKTpudWxsfV9ydW5Bc3luY1ZhbGlkYXRvcih0KXtpZih0aGlzLmFzeW5jVmFsaWRhdG9yKXt0aGlzLnN0YXR1cz1JVyx0aGlzLl9oYXNPd25QZW5kaW5nQXN5bmNWYWxpZGF0b3I9ITA7Y29uc3QgZT1HVSh0aGlzLmFzeW5jVmFsaWRhdG9yKHRoaXMpKTt0aGlzLl9hc3luY1ZhbGlkYXRpb25TdWJzY3JpcHRpb249ZS5zdWJzY3JpYmUoKGU9Pnt0aGlzLl9oYXNPd25QZW5kaW5nQXN5bmNWYWxpZGF0b3I9ITEsdGhpcy5zZXRFcnJvcnMoZSx7ZW1pdEV2ZW50OnR9KX0pKX19X2NhbmNlbEV4aXN0aW5nU3Vic2NyaXB0aW9uKCl7dGhpcy5fYXN5bmNWYWxpZGF0aW9uU3Vic2NyaXB0aW9uJiYodGhpcy5fYXN5bmNWYWxpZGF0aW9uU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksdGhpcy5faGFzT3duUGVuZGluZ0FzeW5jVmFsaWRhdG9yPSExKX1zZXRFcnJvcnModCxlPXt9KXt0aGlzLmVycm9ycz10LHRoaXMuX3VwZGF0ZUNvbnRyb2xzRXJyb3JzKCExIT09ZS5lbWl0RXZlbnQpfWdldCh0KXtyZXR1cm4oZnVuY3Rpb24gZSh0LG4sbyl7aWYobnVsbD09bilyZXR1cm4gbnVsbDtpZihBcnJheS5pc0FycmF5KG4pfHwobj1uLnNwbGl0KG8pKSxBcnJheS5pc0FycmF5KG4pJiYwPT09bi5sZW5ndGgpcmV0dXJuIG51bGw7bGV0IGk9dDtyZXR1cm4gbi5mb3JFYWNoKCh0PT57aT1pIGluc3RhbmNlb2YgR1c/aS5jb250cm9scy5oYXNPd25Qcm9wZXJ0eSh0KT9pLmNvbnRyb2xzW3RdOm51bGw6aSBpbnN0YW5jZW9mIFlXJiZpLmF0KHQpfHxudWxsfSkpLGl9KSh0aGlzLHQsIi4iKX1nZXRFcnJvcih0LGUpe2NvbnN0IG49ZT90aGlzLmdldChlKTp0aGlzO3JldHVybiBuJiZuLmVycm9ycz9uLmVycm9yc1t0XTpudWxsfWhhc0Vycm9yKHQsZSl7cmV0dXJuISF0aGlzLmdldEVycm9yKHQsZSl9Z2V0IHJvb3QoKXtsZXQgdD10aGlzO2Zvcig7dC5fcGFyZW50Oyl0PXQuX3BhcmVudDtyZXR1cm4gdH1fdXBkYXRlQ29udHJvbHNFcnJvcnModCl7dGhpcy5zdGF0dXM9dGhpcy5fY2FsY3VsYXRlU3RhdHVzKCksdCYmdGhpcy5zdGF0dXNDaGFuZ2VzLmVtaXQodGhpcy5zdGF0dXMpLHRoaXMuX3BhcmVudCYmdGhpcy5fcGFyZW50Ll91cGRhdGVDb250cm9sc0Vycm9ycyh0KX1faW5pdE9ic2VydmFibGVzKCl7dGhpcy52YWx1ZUNoYW5nZXM9bmV3IFN5LHRoaXMuc3RhdHVzQ2hhbmdlcz1uZXcgU3l9X2NhbGN1bGF0ZVN0YXR1cygpe3JldHVybiB0aGlzLl9hbGxDb250cm9sc0Rpc2FibGVkKCk/SFc6dGhpcy5lcnJvcnM/elc6dGhpcy5faGFzT3duUGVuZGluZ0FzeW5jVmFsaWRhdG9yfHx0aGlzLl9hbnlDb250cm9sc0hhdmVTdGF0dXMoSVcpP0lXOnRoaXMuX2FueUNvbnRyb2xzSGF2ZVN0YXR1cyh6Vyk/elc6Tld9X2FueUNvbnRyb2xzSGF2ZVN0YXR1cyh0KXtyZXR1cm4gdGhpcy5fYW55Q29udHJvbHMoKGU9PmUuc3RhdHVzPT09dCkpfV9hbnlDb250cm9sc0RpcnR5KCl7cmV0dXJuIHRoaXMuX2FueUNvbnRyb2xzKCh0PT50LmRpcnR5KSl9X2FueUNvbnRyb2xzVG91Y2hlZCgpe3JldHVybiB0aGlzLl9hbnlDb250cm9scygodD0+dC50b3VjaGVkKSl9X3VwZGF0ZVByaXN0aW5lKHQ9e30pe3RoaXMucHJpc3RpbmU9IXRoaXMuX2FueUNvbnRyb2xzRGlydHkoKSx0aGlzLl9wYXJlbnQmJiF0Lm9ubHlTZWxmJiZ0aGlzLl9wYXJlbnQuX3VwZGF0ZVByaXN0aW5lKHQpfV91cGRhdGVUb3VjaGVkKHQ9e30pe3RoaXMudG91Y2hlZD10aGlzLl9hbnlDb250cm9sc1RvdWNoZWQoKSx0aGlzLl9wYXJlbnQmJiF0Lm9ubHlTZWxmJiZ0aGlzLl9wYXJlbnQuX3VwZGF0ZVRvdWNoZWQodCl9X2lzQm94ZWRWYWx1ZSh0KXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIHQmJm51bGwhPT10JiYyPT09T2JqZWN0LmtleXModCkubGVuZ3RoJiYidmFsdWUiaW4gdCYmImRpc2FibGVkImluIHR9X3JlZ2lzdGVyT25Db2xsZWN0aW9uQ2hhbmdlKHQpe3RoaXMuX29uQ29sbGVjdGlvbkNoYW5nZT10fV9zZXRVcGRhdGVTdHJhdGVneSh0KXtqVyh0KSYmbnVsbCE9dC51cGRhdGVPbiYmKHRoaXMuX3VwZGF0ZU9uPXQudXBkYXRlT24pfV9wYXJlbnRNYXJrZWREaXJ0eSh0KXtyZXR1cm4hdCYmISEodGhpcy5fcGFyZW50JiZ0aGlzLl9wYXJlbnQuZGlydHkpJiYhdGhpcy5fcGFyZW50Ll9hbnlDb250cm9sc0RpcnR5KCl9fWNsYXNzIFdXIGV4dGVuZHMgVVd7Y29uc3RydWN0b3IodD1udWxsLGUsbil7c3VwZXIoRlcoZSksQlcobixlKSksdGhpcy5fb25DaGFuZ2U9W10sdGhpcy5fYXBwbHlGb3JtU3RhdGUodCksdGhpcy5fc2V0VXBkYXRlU3RyYXRlZ3koZSksdGhpcy5faW5pdE9ic2VydmFibGVzKCksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtvbmx5U2VsZjohMCxlbWl0RXZlbnQ6ISF0aGlzLmFzeW5jVmFsaWRhdG9yfSl9c2V0VmFsdWUodCxlPXt9KXt0aGlzLnZhbHVlPXRoaXMuX3BlbmRpbmdWYWx1ZT10LHRoaXMuX29uQ2hhbmdlLmxlbmd0aCYmITEhPT1lLmVtaXRNb2RlbFRvVmlld0NoYW5nZSYmdGhpcy5fb25DaGFuZ2UuZm9yRWFjaCgodD0+dCh0aGlzLnZhbHVlLCExIT09ZS5lbWl0Vmlld1RvTW9kZWxDaGFuZ2UpKSksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KGUpfXBhdGNoVmFsdWUodCxlPXt9KXt0aGlzLnNldFZhbHVlKHQsZSl9cmVzZXQodD1udWxsLGU9e30pe3RoaXMuX2FwcGx5Rm9ybVN0YXRlKHQpLHRoaXMubWFya0FzUHJpc3RpbmUoZSksdGhpcy5tYXJrQXNVbnRvdWNoZWQoZSksdGhpcy5zZXRWYWx1ZSh0aGlzLnZhbHVlLGUpLHRoaXMuX3BlbmRpbmdDaGFuZ2U9ITF9X3VwZGF0ZVZhbHVlKCl7fV9hbnlDb250cm9scyh0KXtyZXR1cm4hMX1fYWxsQ29udHJvbHNEaXNhYmxlZCgpe3JldHVybiB0aGlzLmRpc2FibGVkfXJlZ2lzdGVyT25DaGFuZ2UodCl7dGhpcy5fb25DaGFuZ2UucHVzaCh0KX1fdW5yZWdpc3Rlck9uQ2hhbmdlKHQpe0FXKHRoaXMuX29uQ2hhbmdlLHQpfXJlZ2lzdGVyT25EaXNhYmxlZENoYW5nZSh0KXt0aGlzLl9vbkRpc2FibGVkQ2hhbmdlLnB1c2godCl9X3VucmVnaXN0ZXJPbkRpc2FibGVkQ2hhbmdlKHQpe0FXKHRoaXMuX29uRGlzYWJsZWRDaGFuZ2UsdCl9X2ZvckVhY2hDaGlsZCh0KXt9X3N5bmNQZW5kaW5nQ29udHJvbHMoKXtyZXR1cm4hKCJzdWJtaXQiIT09dGhpcy51cGRhdGVPbnx8KHRoaXMuX3BlbmRpbmdEaXJ0eSYmdGhpcy5tYXJrQXNEaXJ0eSgpLHRoaXMuX3BlbmRpbmdUb3VjaGVkJiZ0aGlzLm1hcmtBc1RvdWNoZWQoKSwhdGhpcy5fcGVuZGluZ0NoYW5nZSkpJiYodGhpcy5zZXRWYWx1ZSh0aGlzLl9wZW5kaW5nVmFsdWUse29ubHlTZWxmOiEwLGVtaXRNb2RlbFRvVmlld0NoYW5nZTohMX0pLCEwKX1fYXBwbHlGb3JtU3RhdGUodCl7dGhpcy5faXNCb3hlZFZhbHVlKHQpPyh0aGlzLnZhbHVlPXRoaXMuX3BlbmRpbmdWYWx1ZT10LnZhbHVlLHQuZGlzYWJsZWQ/dGhpcy5kaXNhYmxlKHtvbmx5U2VsZjohMCxlbWl0RXZlbnQ6ITF9KTp0aGlzLmVuYWJsZSh7b25seVNlbGY6ITAsZW1pdEV2ZW50OiExfSkpOnRoaXMudmFsdWU9dGhpcy5fcGVuZGluZ1ZhbHVlPXR9fWNsYXNzIEdXIGV4dGVuZHMgVVd7Y29uc3RydWN0b3IodCxlLG4pe3N1cGVyKEZXKGUpLEJXKG4sZSkpLHRoaXMuY29udHJvbHM9dCx0aGlzLl9pbml0T2JzZXJ2YWJsZXMoKSx0aGlzLl9zZXRVcGRhdGVTdHJhdGVneShlKSx0aGlzLl9zZXRVcENvbnRyb2xzKCksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtvbmx5U2VsZjohMCxlbWl0RXZlbnQ6ISF0aGlzLmFzeW5jVmFsaWRhdG9yfSl9cmVnaXN0ZXJDb250cm9sKHQsZSl7cmV0dXJuIHRoaXMuY29udHJvbHNbdF0/dGhpcy5jb250cm9sc1t0XToodGhpcy5jb250cm9sc1t0XT1lLGUuc2V0UGFyZW50KHRoaXMpLGUuX3JlZ2lzdGVyT25Db2xsZWN0aW9uQ2hhbmdlKHRoaXMuX29uQ29sbGVjdGlvbkNoYW5nZSksZSl9YWRkQ29udHJvbCh0LGUsbj17fSl7dGhpcy5yZWdpc3RlckNvbnRyb2wodCxlKSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe2VtaXRFdmVudDpuLmVtaXRFdmVudH0pLHRoaXMuX29uQ29sbGVjdGlvbkNoYW5nZSgpfXJlbW92ZUNvbnRyb2wodCxlPXt9KXt0aGlzLmNvbnRyb2xzW3RdJiZ0aGlzLmNvbnRyb2xzW3RdLl9yZWdpc3Rlck9uQ29sbGVjdGlvbkNoYW5nZSgoKCk9Pnt9KSksZGVsZXRlIHRoaXMuY29udHJvbHNbdF0sdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtlbWl0RXZlbnQ6ZS5lbWl0RXZlbnR9KSx0aGlzLl9vbkNvbGxlY3Rpb25DaGFuZ2UoKX1zZXRDb250cm9sKHQsZSxuPXt9KXt0aGlzLmNvbnRyb2xzW3RdJiZ0aGlzLmNvbnRyb2xzW3RdLl9yZWdpc3Rlck9uQ29sbGVjdGlvbkNoYW5nZSgoKCk9Pnt9KSksZGVsZXRlIHRoaXMuY29udHJvbHNbdF0sZSYmdGhpcy5yZWdpc3RlckNvbnRyb2wodCxlKSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe2VtaXRFdmVudDpuLmVtaXRFdmVudH0pLHRoaXMuX29uQ29sbGVjdGlvbkNoYW5nZSgpfWNvbnRhaW5zKHQpe3JldHVybiB0aGlzLmNvbnRyb2xzLmhhc093blByb3BlcnR5KHQpJiZ0aGlzLmNvbnRyb2xzW3RdLmVuYWJsZWR9c2V0VmFsdWUodCxlPXt9KXt0aGlzLl9jaGVja0FsbFZhbHVlc1ByZXNlbnQodCksT2JqZWN0LmtleXModCkuZm9yRWFjaCgobj0+e3RoaXMuX3Rocm93SWZDb250cm9sTWlzc2luZyhuKSx0aGlzLmNvbnRyb2xzW25dLnNldFZhbHVlKHRbbl0se29ubHlTZWxmOiEwLGVtaXRFdmVudDplLmVtaXRFdmVudH0pfSkpLHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eShlKX1wYXRjaFZhbHVlKHQsZT17fSl7bnVsbCE9dCYmKE9iamVjdC5rZXlzKHQpLmZvckVhY2goKG49Pnt0aGlzLmNvbnRyb2xzW25dJiZ0aGlzLmNvbnRyb2xzW25dLnBhdGNoVmFsdWUodFtuXSx7b25seVNlbGY6ITAsZW1pdEV2ZW50OmUuZW1pdEV2ZW50fSl9KSksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KGUpKX1yZXNldCh0PXt9LGU9e30pe3RoaXMuX2ZvckVhY2hDaGlsZCgoKG4sbyk9PntuLnJlc2V0KHRbb10se29ubHlTZWxmOiEwLGVtaXRFdmVudDplLmVtaXRFdmVudH0pfSkpLHRoaXMuX3VwZGF0ZVByaXN0aW5lKGUpLHRoaXMuX3VwZGF0ZVRvdWNoZWQoZSksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KGUpfWdldFJhd1ZhbHVlKCl7cmV0dXJuIHRoaXMuX3JlZHVjZUNoaWxkcmVuKHt9LCgodCxlLG4pPT4odFtuXT1lIGluc3RhbmNlb2YgV1c/ZS52YWx1ZTplLmdldFJhd1ZhbHVlKCksdCkpKX1fc3luY1BlbmRpbmdDb250cm9scygpe2xldCB0PXRoaXMuX3JlZHVjZUNoaWxkcmVuKCExLCgodCxlKT0+ISFlLl9zeW5jUGVuZGluZ0NvbnRyb2xzKCl8fHQpKTtyZXR1cm4gdCYmdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtvbmx5U2VsZjohMH0pLHR9X3Rocm93SWZDb250cm9sTWlzc2luZyh0KXtpZighT2JqZWN0LmtleXModGhpcy5jb250cm9scykubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiXG4gICAgICAgIFRoZXJlIGFyZSBubyBmb3JtIGNvbnRyb2xzIHJlZ2lzdGVyZWQgd2l0aCB0aGlzIGdyb3VwIHlldC4gSWYgeW91J3JlIHVzaW5nIG5nTW9kZWwsXG4gICAgICAgIHlvdSBtYXkgd2FudCB0byBjaGVjayBuZXh0IHRpY2sgKGUuZy4gdXNlIHNldFRpbWVvdXQpLlxuICAgICAgIik7aWYoIXRoaXMuY29udHJvbHNbdF0pdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZmluZCBmb3JtIGNvbnRyb2wgd2l0aCBuYW1lOiAke3R9LmApfV9mb3JFYWNoQ2hpbGQodCl7T2JqZWN0LmtleXModGhpcy5jb250cm9scykuZm9yRWFjaCgoZT0+e2NvbnN0IG49dGhpcy5jb250cm9sc1tlXTtuJiZ0KG4sZSl9KSl9X3NldFVwQ29udHJvbHMoKXt0aGlzLl9mb3JFYWNoQ2hpbGQoKHQ9Pnt0LnNldFBhcmVudCh0aGlzKSx0Ll9yZWdpc3Rlck9uQ29sbGVjdGlvbkNoYW5nZSh0aGlzLl9vbkNvbGxlY3Rpb25DaGFuZ2UpfSkpfV91cGRhdGVWYWx1ZSgpe3RoaXMudmFsdWU9dGhpcy5fcmVkdWNlVmFsdWUoKX1fYW55Q29udHJvbHModCl7Zm9yKGNvbnN0IGUgb2YgT2JqZWN0LmtleXModGhpcy5jb250cm9scykpe2NvbnN0IG49dGhpcy5jb250cm9sc1tlXTtpZih0aGlzLmNvbnRhaW5zKGUpJiZ0KG4pKXJldHVybiEwfXJldHVybiExfV9yZWR1Y2VWYWx1ZSgpe3JldHVybiB0aGlzLl9yZWR1Y2VDaGlsZHJlbih7fSwoKHQsZSxuKT0+KChlLmVuYWJsZWR8fHRoaXMuZGlzYWJsZWQpJiYodFtuXT1lLnZhbHVlKSx0KSkpfV9yZWR1Y2VDaGlsZHJlbih0LGUpe2xldCBuPXQ7cmV0dXJuIHRoaXMuX2ZvckVhY2hDaGlsZCgoKHQsbyk9PntuPWUobix0LG8pfSkpLG59X2FsbENvbnRyb2xzRGlzYWJsZWQoKXtmb3IoY29uc3QgdCBvZiBPYmplY3Qua2V5cyh0aGlzLmNvbnRyb2xzKSlpZih0aGlzLmNvbnRyb2xzW3RdLmVuYWJsZWQpcmV0dXJuITE7cmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuY29udHJvbHMpLmxlbmd0aD4wfHx0aGlzLmRpc2FibGVkfV9jaGVja0FsbFZhbHVlc1ByZXNlbnQodCl7dGhpcy5fZm9yRWFjaENoaWxkKCgoZSxuKT0+e2lmKHZvaWQgMD09PXRbbl0pdGhyb3cgbmV3IEVycm9yKGBNdXN0IHN1cHBseSBhIHZhbHVlIGZvciBmb3JtIGNvbnRyb2wgd2l0aCBuYW1lOiAnJHtufScuYCl9KSl9fWNsYXNzIFlXIGV4dGVuZHMgVVd7Y29uc3RydWN0b3IodCxlLG4pe3N1cGVyKEZXKGUpLEJXKG4sZSkpLHRoaXMuY29udHJvbHM9dCx0aGlzLl9pbml0T2JzZXJ2YWJsZXMoKSx0aGlzLl9zZXRVcGRhdGVTdHJhdGVneShlKSx0aGlzLl9zZXRVcENvbnRyb2xzKCksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtvbmx5U2VsZjohMCxlbWl0RXZlbnQ6ISF0aGlzLmFzeW5jVmFsaWRhdG9yfSl9YXQodCl7cmV0dXJuIHRoaXMuY29udHJvbHNbdF19cHVzaCh0LGU9e30pe3RoaXMuY29udHJvbHMucHVzaCh0KSx0aGlzLl9yZWdpc3RlckNvbnRyb2wodCksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtlbWl0RXZlbnQ6ZS5lbWl0RXZlbnR9KSx0aGlzLl9vbkNvbGxlY3Rpb25DaGFuZ2UoKX1pbnNlcnQodCxlLG49e30pe3RoaXMuY29udHJvbHMuc3BsaWNlKHQsMCxlKSx0aGlzLl9yZWdpc3RlckNvbnRyb2woZSksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtlbWl0RXZlbnQ6bi5lbWl0RXZlbnR9KX1yZW1vdmVBdCh0LGU9e30pe3RoaXMuY29udHJvbHNbdF0mJnRoaXMuY29udHJvbHNbdF0uX3JlZ2lzdGVyT25Db2xsZWN0aW9uQ2hhbmdlKCgoKT0+e30pKSx0aGlzLmNvbnRyb2xzLnNwbGljZSh0LDEpLHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7ZW1pdEV2ZW50OmUuZW1pdEV2ZW50fSl9c2V0Q29udHJvbCh0LGUsbj17fSl7dGhpcy5jb250cm9sc1t0XSYmdGhpcy5jb250cm9sc1t0XS5fcmVnaXN0ZXJPbkNvbGxlY3Rpb25DaGFuZ2UoKCgpPT57fSkpLHRoaXMuY29udHJvbHMuc3BsaWNlKHQsMSksZSYmKHRoaXMuY29udHJvbHMuc3BsaWNlKHQsMCxlKSx0aGlzLl9yZWdpc3RlckNvbnRyb2woZSkpLHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7ZW1pdEV2ZW50Om4uZW1pdEV2ZW50fSksdGhpcy5fb25Db2xsZWN0aW9uQ2hhbmdlKCl9Z2V0IGxlbmd0aCgpe3JldHVybiB0aGlzLmNvbnRyb2xzLmxlbmd0aH1zZXRWYWx1ZSh0LGU9e30pe3RoaXMuX2NoZWNrQWxsVmFsdWVzUHJlc2VudCh0KSx0LmZvckVhY2goKCh0LG4pPT57dGhpcy5fdGhyb3dJZkNvbnRyb2xNaXNzaW5nKG4pLHRoaXMuYXQobikuc2V0VmFsdWUodCx7b25seVNlbGY6ITAsZW1pdEV2ZW50OmUuZW1pdEV2ZW50fSl9KSksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KGUpfXBhdGNoVmFsdWUodCxlPXt9KXtudWxsIT10JiYodC5mb3JFYWNoKCgodCxuKT0+e3RoaXMuYXQobikmJnRoaXMuYXQobikucGF0Y2hWYWx1ZSh0LHtvbmx5U2VsZjohMCxlbWl0RXZlbnQ6ZS5lbWl0RXZlbnR9KX0pKSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoZSkpfXJlc2V0KHQ9W10sZT17fSl7dGhpcy5fZm9yRWFjaENoaWxkKCgobixvKT0+e24ucmVzZXQodFtvXSx7b25seVNlbGY6ITAsZW1pdEV2ZW50OmUuZW1pdEV2ZW50fSl9KSksdGhpcy5fdXBkYXRlUHJpc3RpbmUoZSksdGhpcy5fdXBkYXRlVG91Y2hlZChlKSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoZSl9Z2V0UmF3VmFsdWUoKXtyZXR1cm4gdGhpcy5jb250cm9scy5tYXAoKHQ9PnQgaW5zdGFuY2VvZiBXVz90LnZhbHVlOnQuZ2V0UmF3VmFsdWUoKSkpfWNsZWFyKHQ9e30pe3RoaXMuY29udHJvbHMubGVuZ3RoPDF8fCh0aGlzLl9mb3JFYWNoQ2hpbGQoKHQ9PnQuX3JlZ2lzdGVyT25Db2xsZWN0aW9uQ2hhbmdlKCgoKT0+e30pKSkpLHRoaXMuY29udHJvbHMuc3BsaWNlKDApLHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7ZW1pdEV2ZW50OnQuZW1pdEV2ZW50fSkpfV9zeW5jUGVuZGluZ0NvbnRyb2xzKCl7bGV0IHQ9dGhpcy5jb250cm9scy5yZWR1Y2UoKCh0LGUpPT4hIWUuX3N5bmNQZW5kaW5nQ29udHJvbHMoKXx8dCksITEpO3JldHVybiB0JiZ0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe29ubHlTZWxmOiEwfSksdH1fdGhyb3dJZkNvbnRyb2xNaXNzaW5nKHQpe2lmKCF0aGlzLmNvbnRyb2xzLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIlxuICAgICAgICBUaGVyZSBhcmUgbm8gZm9ybSBjb250cm9scyByZWdpc3RlcmVkIHdpdGggdGhpcyBhcnJheSB5ZXQuIElmIHlvdSdyZSB1c2luZyBuZ01vZGVsLFxuICAgICAgICB5b3UgbWF5IHdhbnQgdG8gY2hlY2sgbmV4dCB0aWNrIChlLmcuIHVzZSBzZXRUaW1lb3V0KS5cbiAgICAgICIpO2lmKCF0aGlzLmF0KHQpKXRocm93IG5ldyBFcnJvcihgQ2Fubm90IGZpbmQgZm9ybSBjb250cm9sIGF0IGluZGV4ICR7dH1gKX1fZm9yRWFjaENoaWxkKHQpe3RoaXMuY29udHJvbHMuZm9yRWFjaCgoKGUsbik9Pnt0KGUsbil9KSl9X3VwZGF0ZVZhbHVlKCl7dGhpcy52YWx1ZT10aGlzLmNvbnRyb2xzLmZpbHRlcigodD0+dC5lbmFibGVkfHx0aGlzLmRpc2FibGVkKSkubWFwKCh0PT50LnZhbHVlKSl9X2FueUNvbnRyb2xzKHQpe3JldHVybiB0aGlzLmNvbnRyb2xzLnNvbWUoKGU9PmUuZW5hYmxlZCYmdChlKSkpfV9zZXRVcENvbnRyb2xzKCl7dGhpcy5fZm9yRWFjaENoaWxkKCh0PT50aGlzLl9yZWdpc3RlckNvbnRyb2wodCkpKX1fY2hlY2tBbGxWYWx1ZXNQcmVzZW50KHQpe3RoaXMuX2ZvckVhY2hDaGlsZCgoKGUsbik9PntpZih2b2lkIDA9PT10W25dKXRocm93IG5ldyBFcnJvcihgTXVzdCBzdXBwbHkgYSB2YWx1ZSBmb3IgZm9ybSBjb250cm9sIGF0IGluZGV4OiAke259LmApfSkpfV9hbGxDb250cm9sc0Rpc2FibGVkKCl7Zm9yKGNvbnN0IHQgb2YgdGhpcy5jb250cm9scylpZih0LmVuYWJsZWQpcmV0dXJuITE7cmV0dXJuIHRoaXMuY29udHJvbHMubGVuZ3RoPjB8fHRoaXMuZGlzYWJsZWR9X3JlZ2lzdGVyQ29udHJvbCh0KXt0LnNldFBhcmVudCh0aGlzKSx0Ll9yZWdpc3Rlck9uQ29sbGVjdGlvbkNoYW5nZSh0aGlzLl9vbkNvbGxlY3Rpb25DaGFuZ2UpfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3QgcVc9e3Byb3ZpZGU6c1csdXNlRXhpc3Rpbmc6JGUoKCgpPT5YVykpfSxaVz1Qcm9taXNlLnJlc29sdmUobnVsbCk7Y2xhc3MgWFcgZXh0ZW5kcyBzV3tjb25zdHJ1Y3Rvcih0LGUpe3N1cGVyKCksdGhpcy5zdWJtaXR0ZWQ9ITEsdGhpcy5fZGlyZWN0aXZlcz1bXSx0aGlzLm5nU3VibWl0PW5ldyBTeSx0aGlzLmZvcm09bmV3IEdXKHt9LEtVKHQpLFFVKGUpKX1uZ0FmdGVyVmlld0luaXQoKXt0aGlzLl9zZXRVcGRhdGVTdHJhdGVneSgpfWdldCBmb3JtRGlyZWN0aXZlKCl7cmV0dXJuIHRoaXN9Z2V0IGNvbnRyb2woKXtyZXR1cm4gdGhpcy5mb3JtfWdldCBwYXRoKCl7cmV0dXJuW119Z2V0IGNvbnRyb2xzKCl7cmV0dXJuIHRoaXMuZm9ybS5jb250cm9sc31hZGRDb250cm9sKHQpe1pXLnRoZW4oKCgpPT57Y29uc3QgZT10aGlzLl9maW5kQ29udGFpbmVyKHQucGF0aCk7dC5jb250cm9sPWUucmVnaXN0ZXJDb250cm9sKHQubmFtZSx0LmNvbnRyb2wpLE1XKHQuY29udHJvbCx0KSx0LmNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7ZW1pdEV2ZW50OiExfSksdGhpcy5fZGlyZWN0aXZlcy5wdXNoKHQpfSkpfWdldENvbnRyb2wodCl7cmV0dXJuIHRoaXMuZm9ybS5nZXQodC5wYXRoKX1yZW1vdmVDb250cm9sKHQpe1pXLnRoZW4oKCgpPT57Y29uc3QgZT10aGlzLl9maW5kQ29udGFpbmVyKHQucGF0aCk7ZSYmZS5yZW1vdmVDb250cm9sKHQubmFtZSksQVcodGhpcy5fZGlyZWN0aXZlcyx0KX0pKX1hZGRGb3JtR3JvdXAodCl7WlcudGhlbigoKCk9Pntjb25zdCBlPXRoaXMuX2ZpbmRDb250YWluZXIodC5wYXRoKSxuPW5ldyBHVyh7fSk7a1cobix0KSxlLnJlZ2lzdGVyQ29udHJvbCh0Lm5hbWUsbiksbi51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtlbWl0RXZlbnQ6ITF9KX0pKX1yZW1vdmVGb3JtR3JvdXAodCl7WlcudGhlbigoKCk9Pntjb25zdCBlPXRoaXMuX2ZpbmRDb250YWluZXIodC5wYXRoKTtlJiZlLnJlbW92ZUNvbnRyb2wodC5uYW1lKX0pKX1nZXRGb3JtR3JvdXAodCl7cmV0dXJuIHRoaXMuZm9ybS5nZXQodC5wYXRoKX11cGRhdGVNb2RlbCh0LGUpe1pXLnRoZW4oKCgpPT57dGhpcy5mb3JtLmdldCh0LnBhdGgpLnNldFZhbHVlKGUpfSkpfXNldFZhbHVlKHQpe3RoaXMuY29udHJvbC5zZXRWYWx1ZSh0KX1vblN1Ym1pdCh0KXtyZXR1cm4gdGhpcy5zdWJtaXR0ZWQ9ITAsUlcodGhpcy5mb3JtLHRoaXMuX2RpcmVjdGl2ZXMpLHRoaXMubmdTdWJtaXQuZW1pdCh0KSwhMX1vblJlc2V0KCl7dGhpcy5yZXNldEZvcm0oKX1yZXNldEZvcm0odCl7dGhpcy5mb3JtLnJlc2V0KHQpLHRoaXMuc3VibWl0dGVkPSExfV9zZXRVcGRhdGVTdHJhdGVneSgpe3RoaXMub3B0aW9ucyYmbnVsbCE9dGhpcy5vcHRpb25zLnVwZGF0ZU9uJiYodGhpcy5mb3JtLl91cGRhdGVPbj10aGlzLm9wdGlvbnMudXBkYXRlT24pfV9maW5kQ29udGFpbmVyKHQpe3JldHVybiB0LnBvcCgpLHQubGVuZ3RoP3RoaXMuZm9ybS5nZXQodCk6dGhpcy5mb3JtfX1YVy7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8WFcpKGdmKEVVLDEwKSxnZihBVSwxMCkpfSxYVy7JtWRpcj1obyh7dHlwZTpYVyxzZWxlY3RvcnM6W1siZm9ybSIsMywibmdOb0Zvcm0iLCIiLDMsImZvcm1Hcm91cCIsIiJdLFsibmctZm9ybSJdLFsiIiwibmdGb3JtIiwiIl1dLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MSZlJiZSZigic3VibWl0IiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vblN1Ym1pdChlKX0pKSgicmVzZXQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25SZXNldCgpfSkpfSxpbnB1dHM6e29wdGlvbnM6WyJuZ0Zvcm1PcHRpb25zIiwib3B0aW9ucyJdfSxvdXRwdXRzOntuZ1N1Ym1pdDoibmdTdWJtaXQifSxleHBvcnRBczpbIm5nRm9ybSJdLGZlYXR1cmVzOltqaChbcVddKSxRcF19KSxYVy5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpWcn0se3R5cGU6THIsYXJnczpbRVVdfV19LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpWcn0se3R5cGU6THIsYXJnczpbQVVdfV19XSxYVy5wcm9wRGVjb3JhdG9ycz17b3B0aW9uczpbe3R5cGU6Ul8sYXJnczpbIm5nRm9ybU9wdGlvbnMiXX1dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFhXLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6ImZvcm06bm90KFtuZ05vRm9ybV0pOm5vdChbZm9ybUdyb3VwXSksbmctZm9ybSxbbmdGb3JtXSIscHJvdmlkZXJzOltxV10saG9zdDp7IihzdWJtaXQpIjoib25TdWJtaXQoJGV2ZW50KSIsIihyZXNldCkiOiJvblJlc2V0KCkifSxvdXRwdXRzOlsibmdTdWJtaXQiXSxleHBvcnRBczoibmdGb3JtIn1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpWcn0se3R5cGU6THIsYXJnczpbRVVdfV19LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpWcn0se3R5cGU6THIsYXJnczpbQVVdfV19XX0pLHtvcHRpb25zOlt7dHlwZTpSXyxhcmdzOlsibmdGb3JtT3B0aW9ucyJdfV19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIEtXIGV4dGVuZHMgc1d7bmdPbkluaXQoKXt0aGlzLl9jaGVja1BhcmVudFR5cGUoKSx0aGlzLmZvcm1EaXJlY3RpdmUuYWRkRm9ybUdyb3VwKHRoaXMpfW5nT25EZXN0cm95KCl7dGhpcy5mb3JtRGlyZWN0aXZlJiZ0aGlzLmZvcm1EaXJlY3RpdmUucmVtb3ZlRm9ybUdyb3VwKHRoaXMpfWdldCBjb250cm9sKCl7cmV0dXJuIHRoaXMuZm9ybURpcmVjdGl2ZS5nZXRGb3JtR3JvdXAodGhpcyl9Z2V0IHBhdGgoKXtyZXR1cm4gQ1cobnVsbD09dGhpcy5uYW1lP3RoaXMubmFtZTp0aGlzLm5hbWUudG9TdHJpbmcoKSx0aGlzLl9wYXJlbnQpfWdldCBmb3JtRGlyZWN0aXZlKCl7cmV0dXJuIHRoaXMuX3BhcmVudD90aGlzLl9wYXJlbnQuZm9ybURpcmVjdGl2ZTpudWxsfV9jaGVja1BhcmVudFR5cGUoKXt9fUtXLsm1ZmFjPShmdW5jdGlvbigpe2xldCB0O3JldHVybiBmdW5jdGlvbiBlKG4pe3JldHVybih0fHwodD1VYShLVykpKShufHxLVyl9fSkoKSxLVy7JtWRpcj1obyh7dHlwZTpLVyxmZWF0dXJlczpbUXBdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihLVyxbe3R5cGU6a199XSxudWxsLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgSld7c3RhdGljIG1vZGVsUGFyZW50RXhjZXB0aW9uKCl7dGhyb3cgbmV3IEVycm9yKGBcbiAgICAgIG5nTW9kZWwgY2Fubm90IGJlIHVzZWQgdG8gcmVnaXN0ZXIgZm9ybSBjb250cm9scyB3aXRoIGEgcGFyZW50IGZvcm1Hcm91cCBkaXJlY3RpdmUuICBUcnkgdXNpbmdcbiAgICAgIGZvcm1Hcm91cCdzIHBhcnRuZXIgZGlyZWN0aXZlICJmb3JtQ29udHJvbE5hbWUiIGluc3RlYWQuICBFeGFtcGxlOlxuXG4gICAgICAke3VXfVxuXG4gICAgICBPciwgaWYgeW91J2QgbGlrZSB0byBhdm9pZCByZWdpc3RlcmluZyB0aGlzIGZvcm0gY29udHJvbCwgaW5kaWNhdGUgdGhhdCBpdCdzIHN0YW5kYWxvbmUgaW4gbmdNb2RlbE9wdGlvbnM6XG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgICR7eVd9YCl9c3RhdGljIGZvcm1Hcm91cE5hbWVFeGNlcHRpb24oKXt0aHJvdyBuZXcgRXJyb3IoYFxuICAgICAgbmdNb2RlbCBjYW5ub3QgYmUgdXNlZCB0byByZWdpc3RlciBmb3JtIGNvbnRyb2xzIHdpdGggYSBwYXJlbnQgZm9ybUdyb3VwTmFtZSBvciBmb3JtQXJyYXlOYW1lIGRpcmVjdGl2ZS5cblxuICAgICAgT3B0aW9uIDE6IFVzZSBmb3JtQ29udHJvbE5hbWUgaW5zdGVhZCBvZiBuZ01vZGVsIChyZWFjdGl2ZSBzdHJhdGVneSk6XG5cbiAgICAgICR7Z1d9XG5cbiAgICAgIE9wdGlvbiAyOiAgVXBkYXRlIG5nTW9kZWwncyBwYXJlbnQgYmUgbmdNb2RlbEdyb3VwICh0ZW1wbGF0ZS1kcml2ZW4gc3RyYXRlZ3kpOlxuXG4gICAgICAke2JXfWApfXN0YXRpYyBtaXNzaW5nTmFtZUV4Y2VwdGlvbigpe3Rocm93IG5ldyBFcnJvcignSWYgbmdNb2RlbCBpcyB1c2VkIHdpdGhpbiBhIGZvcm0gdGFnLCBlaXRoZXIgdGhlIG5hbWUgYXR0cmlidXRlIG11c3QgYmUgc2V0IG9yIHRoZSBmb3JtXG4gICAgICBjb250cm9sIG11c3QgYmUgZGVmaW5lZCBhcyBcJ3N0YW5kYWxvbmVcJyBpbiBuZ01vZGVsT3B0aW9ucy5cblxuICAgICAgRXhhbXBsZSAxOiA8aW5wdXQgWyhuZ01vZGVsKV09InBlcnNvbi5maXJzdE5hbWUiIG5hbWU9ImZpcnN0Ij5cbiAgICAgIEV4YW1wbGUgMjogPGlucHV0IFsobmdNb2RlbCldPSJwZXJzb24uZmlyc3ROYW1lIiBbbmdNb2RlbE9wdGlvbnNdPSJ7c3RhbmRhbG9uZTogdHJ1ZX0iPicpfXN0YXRpYyBtb2RlbEdyb3VwUGFyZW50RXhjZXB0aW9uKCl7dGhyb3cgbmV3IEVycm9yKGBcbiAgICAgIG5nTW9kZWxHcm91cCBjYW5ub3QgYmUgdXNlZCB3aXRoIGEgcGFyZW50IGZvcm1Hcm91cCBkaXJlY3RpdmUuXG5cbiAgICAgIE9wdGlvbiAxOiBVc2UgZm9ybUdyb3VwTmFtZSBpbnN0ZWFkIG9mIG5nTW9kZWxHcm91cCAocmVhY3RpdmUgc3RyYXRlZ3kpOlxuXG4gICAgICAke2dXfVxuXG4gICAgICBPcHRpb24gMjogIFVzZSBhIHJlZ3VsYXIgZm9ybSB0YWcgaW5zdGVhZCBvZiB0aGUgZm9ybUdyb3VwIGRpcmVjdGl2ZSAodGVtcGxhdGUtZHJpdmVuIHN0cmF0ZWd5KTpcblxuICAgICAgJHtiV31gKX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NvbnN0IFFXPXtwcm92aWRlOnNXLHVzZUV4aXN0aW5nOiRlKCgoKT0+JFcpKX07Y2xhc3MgJFcgZXh0ZW5kcyBLV3tjb25zdHJ1Y3Rvcih0LGUsbil7c3VwZXIoKSx0aGlzLl9wYXJlbnQ9dCx0aGlzLl9zZXRWYWxpZGF0b3JzKGUpLHRoaXMuX3NldEFzeW5jVmFsaWRhdG9ycyhuKX1fY2hlY2tQYXJlbnRUeXBlKCl7dGhpcy5fcGFyZW50IGluc3RhbmNlb2YgJFd8fHRoaXMuX3BhcmVudCBpbnN0YW5jZW9mIFhXfHwidW5kZWZpbmVkIiE9dHlwZW9mIG5nRGV2TW9kZSYmIW5nRGV2TW9kZXx8SlcubW9kZWxHcm91cFBhcmVudEV4Y2VwdGlvbigpfX0kVy7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8JFcpKGdmKHNXLDUpLGdmKEVVLDEwKSxnZihBVSwxMCkpfSwkVy7JtWRpcj1obyh7dHlwZTokVyxzZWxlY3RvcnM6W1siIiwibmdNb2RlbEdyb3VwIiwiIl1dLGlucHV0czp7bmFtZTpbIm5nTW9kZWxHcm91cCIsIm5hbWUiXX0sZXhwb3J0QXM6WyJuZ01vZGVsR3JvdXAiXSxmZWF0dXJlczpbamgoW1FXXSksUXBdfSksJFcuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpzVyxkZWNvcmF0b3JzOlt7dHlwZTpVcn0se3R5cGU6anJ9XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOlZyfSx7dHlwZTpMcixhcmdzOltFVV19XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOlZyfSx7dHlwZTpMcixhcmdzOltBVV19XX1dLCRXLnByb3BEZWNvcmF0b3JzPXtuYW1lOlt7dHlwZTpSXyxhcmdzOlsibmdNb2RlbEdyb3VwIl19XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYigkVyxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJbbmdNb2RlbEdyb3VwXSIscHJvdmlkZXJzOltRV10sZXhwb3J0QXM6Im5nTW9kZWxHcm91cCJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpzVyxkZWNvcmF0b3JzOlt7dHlwZTpVcn0se3R5cGU6anJ9XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOlZyfSx7dHlwZTpMcixhcmdzOltFVV19XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOlZyfSx7dHlwZTpMcixhcmdzOltBVV19XX1dfSkse25hbWU6W3t0eXBlOlJfLGFyZ3M6WyJuZ01vZGVsR3JvdXAiXX1dfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCB0Rz17cHJvdmlkZTpsVyx1c2VFeGlzdGluZzokZSgoKCk9Pm5HKSl9LGVHPVByb21pc2UucmVzb2x2ZShudWxsKTtjbGFzcyBuRyBleHRlbmRzIGxXe2NvbnN0cnVjdG9yKHQsZSxuLG8pe3N1cGVyKCksdGhpcy5jb250cm9sPW5ldyBXVyx0aGlzLl9yZWdpc3RlcmVkPSExLHRoaXMudXBkYXRlPW5ldyBTeSx0aGlzLl9wYXJlbnQ9dCx0aGlzLl9zZXRWYWxpZGF0b3JzKGUpLHRoaXMuX3NldEFzeW5jVmFsaWRhdG9ycyhuKSx0aGlzLnZhbHVlQWNjZXNzb3I9RVcodGhpcyxvKX1uZ09uQ2hhbmdlcyh0KXt0aGlzLl9jaGVja0ZvckVycm9ycygpLHRoaXMuX3JlZ2lzdGVyZWR8fHRoaXMuX3NldFVwQ29udHJvbCgpLCJpc0Rpc2FibGVkImluIHQmJnRoaXMuX3VwZGF0ZURpc2FibGVkKHQpLERXKHQsdGhpcy52aWV3TW9kZWwpJiYodGhpcy5fdXBkYXRlVmFsdWUodGhpcy5tb2RlbCksdGhpcy52aWV3TW9kZWw9dGhpcy5tb2RlbCl9bmdPbkRlc3Ryb3koKXt0aGlzLmZvcm1EaXJlY3RpdmUmJnRoaXMuZm9ybURpcmVjdGl2ZS5yZW1vdmVDb250cm9sKHRoaXMpfWdldCBwYXRoKCl7cmV0dXJuIHRoaXMuX3BhcmVudD9DVyh0aGlzLm5hbWUsdGhpcy5fcGFyZW50KTpbdGhpcy5uYW1lXX1nZXQgZm9ybURpcmVjdGl2ZSgpe3JldHVybiB0aGlzLl9wYXJlbnQ/dGhpcy5fcGFyZW50LmZvcm1EaXJlY3RpdmU6bnVsbH12aWV3VG9Nb2RlbFVwZGF0ZSh0KXt0aGlzLnZpZXdNb2RlbD10LHRoaXMudXBkYXRlLmVtaXQodCl9X3NldFVwQ29udHJvbCgpe3RoaXMuX3NldFVwZGF0ZVN0cmF0ZWd5KCksdGhpcy5faXNTdGFuZGFsb25lKCk/dGhpcy5fc2V0VXBTdGFuZGFsb25lKCk6dGhpcy5mb3JtRGlyZWN0aXZlLmFkZENvbnRyb2wodGhpcyksdGhpcy5fcmVnaXN0ZXJlZD0hMH1fc2V0VXBkYXRlU3RyYXRlZ3koKXt0aGlzLm9wdGlvbnMmJm51bGwhPXRoaXMub3B0aW9ucy51cGRhdGVPbiYmKHRoaXMuY29udHJvbC5fdXBkYXRlT249dGhpcy5vcHRpb25zLnVwZGF0ZU9uKX1faXNTdGFuZGFsb25lKCl7cmV0dXJuIXRoaXMuX3BhcmVudHx8ISghdGhpcy5vcHRpb25zfHwhdGhpcy5vcHRpb25zLnN0YW5kYWxvbmUpfV9zZXRVcFN0YW5kYWxvbmUoKXtNVyh0aGlzLmNvbnRyb2wsdGhpcyksdGhpcy5jb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe2VtaXRFdmVudDohMX0pfV9jaGVja0ZvckVycm9ycygpe3RoaXMuX2lzU3RhbmRhbG9uZSgpfHx0aGlzLl9jaGVja1BhcmVudFR5cGUoKSx0aGlzLl9jaGVja05hbWUoKX1fY2hlY2tQYXJlbnRUeXBlKCl7KCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiYoISh0aGlzLl9wYXJlbnQgaW5zdGFuY2VvZiAkVykmJnRoaXMuX3BhcmVudCBpbnN0YW5jZW9mIEtXP0pXLmZvcm1Hcm91cE5hbWVFeGNlcHRpb24oKTp0aGlzLl9wYXJlbnQgaW5zdGFuY2VvZiAkV3x8dGhpcy5fcGFyZW50IGluc3RhbmNlb2YgWFd8fEpXLm1vZGVsUGFyZW50RXhjZXB0aW9uKCkpfV9jaGVja05hbWUoKXt0aGlzLm9wdGlvbnMmJnRoaXMub3B0aW9ucy5uYW1lJiYodGhpcy5uYW1lPXRoaXMub3B0aW9ucy5uYW1lKSx0aGlzLl9pc1N0YW5kYWxvbmUoKXx8dGhpcy5uYW1lfHwidW5kZWZpbmVkIiE9dHlwZW9mIG5nRGV2TW9kZSYmIW5nRGV2TW9kZXx8SlcubWlzc2luZ05hbWVFeGNlcHRpb24oKX1fdXBkYXRlVmFsdWUodCl7ZUcudGhlbigoKCk9Pnt0aGlzLmNvbnRyb2wuc2V0VmFsdWUodCx7ZW1pdFZpZXdUb01vZGVsQ2hhbmdlOiExfSl9KSl9X3VwZGF0ZURpc2FibGVkKHQpe2NvbnN0IGU9dC5pc0Rpc2FibGVkLmN1cnJlbnRWYWx1ZSxuPSIiPT09ZXx8ZSYmImZhbHNlIiE9PWU7ZUcudGhlbigoKCk9PntuJiYhdGhpcy5jb250cm9sLmRpc2FibGVkP3RoaXMuY29udHJvbC5kaXNhYmxlKCk6IW4mJnRoaXMuY29udHJvbC5kaXNhYmxlZCYmdGhpcy5jb250cm9sLmVuYWJsZSgpfSkpfX1uRy7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8bkcpKGdmKHNXLDkpLGdmKEVVLDEwKSxnZihBVSwxMCksZ2YoeFUsMTApKX0sbkcuybVkaXI9aG8oe3R5cGU6bkcsc2VsZWN0b3JzOltbIiIsIm5nTW9kZWwiLCIiLDMsImZvcm1Db250cm9sTmFtZSIsIiIsMywiZm9ybUNvbnRyb2wiLCIiXV0saW5wdXRzOntuYW1lOiJuYW1lIixpc0Rpc2FibGVkOlsiZGlzYWJsZWQiLCJpc0Rpc2FibGVkIl0sbW9kZWw6WyJuZ01vZGVsIiwibW9kZWwiXSxvcHRpb25zOlsibmdNb2RlbE9wdGlvbnMiLCJvcHRpb25zIl19LG91dHB1dHM6e3VwZGF0ZToibmdNb2RlbENoYW5nZSJ9LGV4cG9ydEFzOlsibmdNb2RlbCJdLGZlYXR1cmVzOltqaChbdEddKSxRcCxxb119KSxuRy5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnNXLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpVcn1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6VnJ9LHt0eXBlOkxyLGFyZ3M6W0VVXX1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6VnJ9LHt0eXBlOkxyLGFyZ3M6W0FVXX1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6VnJ9LHt0eXBlOkxyLGFyZ3M6W3hVXX1dfV0sbkcucHJvcERlY29yYXRvcnM9e25hbWU6W3t0eXBlOlJffV0saXNEaXNhYmxlZDpbe3R5cGU6Ul8sYXJnczpbImRpc2FibGVkIl19XSxtb2RlbDpbe3R5cGU6Ul8sYXJnczpbIm5nTW9kZWwiXX1dLG9wdGlvbnM6W3t0eXBlOlJfLGFyZ3M6WyJuZ01vZGVsT3B0aW9ucyJdfV0sdXBkYXRlOlt7dHlwZTpFXyxhcmdzOlsibmdNb2RlbENoYW5nZSJdfV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIobkcsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW25nTW9kZWxdOm5vdChbZm9ybUNvbnRyb2xOYW1lXSk6bm90KFtmb3JtQ29udHJvbF0pIixwcm92aWRlcnM6W3RHXSxleHBvcnRBczoibmdNb2RlbCJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpzVyxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6VXJ9XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOlZyfSx7dHlwZTpMcixhcmdzOltFVV19XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOlZyfSx7dHlwZTpMcixhcmdzOltBVV19XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOlZyfSx7dHlwZTpMcixhcmdzOlt4VV19XX1dfSkse3VwZGF0ZTpbe3R5cGU6RV8sYXJnczpbIm5nTW9kZWxDaGFuZ2UiXX1dLG5hbWU6W3t0eXBlOlJffV0saXNEaXNhYmxlZDpbe3R5cGU6Ul8sYXJnczpbImRpc2FibGVkIl19XSxtb2RlbDpbe3R5cGU6Ul8sYXJnczpbIm5nTW9kZWwiXX1dLG9wdGlvbnM6W3t0eXBlOlJfLGFyZ3M6WyJuZ01vZGVsT3B0aW9ucyJdfV19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIG9He31vRy7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8b0cpfSxvRy7JtWRpcj1obyh7dHlwZTpvRyxzZWxlY3RvcnM6W1siZm9ybSIsMywibmdOb0Zvcm0iLCIiLDMsIm5nTmF0aXZlVmFsaWRhdGUiLCIiXV0saG9zdEF0dHJzOlsibm92YWxpZGF0ZSIsIiJdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihvRyxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJmb3JtOm5vdChbbmdOb0Zvcm1dKTpub3QoW25nTmF0aXZlVmFsaWRhdGVdKSIsaG9zdDp7bm92YWxpZGF0ZToiIn19XX1dLG51bGwsbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCBpRz17cHJvdmlkZTp4VSx1c2VFeGlzdGluZzokZSgoKCk9PmFHKSksbXVsdGk6ITB9O2NsYXNzIGFHIGV4dGVuZHMgdlV7d3JpdGVWYWx1ZSh0KXt0aGlzLnNldFByb3BlcnR5KCJ2YWx1ZSIsbnVsbD09dD8iIjp0KX1yZWdpc3Rlck9uQ2hhbmdlKHQpe3RoaXMub25DaGFuZ2U9ZT0+e3QoIiI9PWU/bnVsbDpwYXJzZUZsb2F0KGUpKX19fWFHLsm1ZmFjPShmdW5jdGlvbigpe2xldCB0O3JldHVybiBmdW5jdGlvbiBlKG4pe3JldHVybih0fHwodD1VYShhRykpKShufHxhRyl9fSkoKSxhRy7JtWRpcj1obyh7dHlwZTphRyxzZWxlY3RvcnM6W1siaW5wdXQiLCJ0eXBlIiwibnVtYmVyIiwiZm9ybUNvbnRyb2xOYW1lIiwiIl0sWyJpbnB1dCIsInR5cGUiLCJudW1iZXIiLCJmb3JtQ29udHJvbCIsIiJdLFsiaW5wdXQiLCJ0eXBlIiwibnVtYmVyIiwibmdNb2RlbCIsIiJdXSxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezEmZSYmUmYoImlucHV0IiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vbkNoYW5nZShlLnRhcmdldC52YWx1ZSl9KSkoImJsdXIiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25Ub3VjaGVkKCl9KSl9LGZlYXR1cmVzOltqaChbaUddKSxRcF19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGFHLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6ImlucHV0W3R5cGU9bnVtYmVyXVtmb3JtQ29udHJvbE5hbWVdLGlucHV0W3R5cGU9bnVtYmVyXVtmb3JtQ29udHJvbF0saW5wdXRbdHlwZT1udW1iZXJdW25nTW9kZWxdIixob3N0OnsiKGlucHV0KSI6Im9uQ2hhbmdlKCRldmVudC50YXJnZXQudmFsdWUpIiwiKGJsdXIpIjoib25Ub3VjaGVkKCkifSxwcm92aWRlcnM6W2lHXX1dfV0sbnVsbCxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IHJHPXtwcm92aWRlOnhVLHVzZUV4aXN0aW5nOiRlKCgoKT0+Y0cpKSxtdWx0aTohMH07Y2xhc3Mgc0d7fXNHLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxzRyl9LHNHLsm1bW9kPWZvKHt0eXBlOnNHfSksc0cuybVpbmo9RG4oe30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoc0csW3t0eXBlOkxffV0sbnVsbCxudWxsKTtjbGFzcyBsR3tjb25zdHJ1Y3Rvcigpe3RoaXMuX2FjY2Vzc29ycz1bXX1hZGQodCxlKXt0aGlzLl9hY2Nlc3NvcnMucHVzaChbdCxlXSl9cmVtb3ZlKHQpe2ZvcihsZXQgZT10aGlzLl9hY2Nlc3NvcnMubGVuZ3RoLTE7ZT49MDstLWUpaWYodGhpcy5fYWNjZXNzb3JzW2VdWzFdPT09dClyZXR1cm4gdm9pZCB0aGlzLl9hY2Nlc3NvcnMuc3BsaWNlKGUsMSl9c2VsZWN0KHQpe3RoaXMuX2FjY2Vzc29ycy5mb3JFYWNoKChlPT57dGhpcy5faXNTYW1lR3JvdXAoZSx0KSYmZVsxXSE9PXQmJmVbMV0uZmlyZVVuY2hlY2sodC52YWx1ZSl9KSl9X2lzU2FtZUdyb3VwKHQsZSl7cmV0dXJuISF0WzBdLmNvbnRyb2wmJih0WzBdLl9wYXJlbnQ9PT1lLl9jb250cm9sLl9wYXJlbnQmJnRbMV0ubmFtZT09PWUubmFtZSl9fWxHLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxsRyl9LGxHLsm1cHJvdj1Tbih7ZmFjdG9yeTpmdW5jdGlvbiB0KCl7cmV0dXJuIG5ldyBsR30sdG9rZW46bEcscHJvdmlkZWRJbjpzR30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIobEcsW3t0eXBlOlVtLGFyZ3M6W3twcm92aWRlZEluOnNHfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5bXX0pLG51bGwpO2NsYXNzIGNHIGV4dGVuZHMgdlV7Y29uc3RydWN0b3IodCxlLG4sbyl7c3VwZXIodCxlKSx0aGlzLl9yZWdpc3RyeT1uLHRoaXMuX2luamVjdG9yPW8sdGhpcy5vbkNoYW5nZT0oKT0+e319bmdPbkluaXQoKXt0aGlzLl9jb250cm9sPXRoaXMuX2luamVjdG9yLmdldChsVyksdGhpcy5fY2hlY2tOYW1lKCksdGhpcy5fcmVnaXN0cnkuYWRkKHRoaXMuX2NvbnRyb2wsdGhpcyl9bmdPbkRlc3Ryb3koKXt0aGlzLl9yZWdpc3RyeS5yZW1vdmUodGhpcyl9d3JpdGVWYWx1ZSh0KXt0aGlzLl9zdGF0ZT10PT09dGhpcy52YWx1ZSx0aGlzLnNldFByb3BlcnR5KCJjaGVja2VkIix0aGlzLl9zdGF0ZSl9cmVnaXN0ZXJPbkNoYW5nZSh0KXt0aGlzLl9mbj10LHRoaXMub25DaGFuZ2U9KCk9Pnt0KHRoaXMudmFsdWUpLHRoaXMuX3JlZ2lzdHJ5LnNlbGVjdCh0aGlzKX19ZmlyZVVuY2hlY2sodCl7dGhpcy53cml0ZVZhbHVlKHQpfV9jaGVja05hbWUoKXt0aGlzLm5hbWUmJnRoaXMuZm9ybUNvbnRyb2xOYW1lJiZ0aGlzLm5hbWUhPT10aGlzLmZvcm1Db250cm9sTmFtZSYmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiYoZnVuY3Rpb24gdCgpe3Rocm93IG5ldyBFcnJvcignXG4gICAgICBJZiB5b3UgZGVmaW5lIGJvdGggYSBuYW1lIGFuZCBhIGZvcm1Db250cm9sTmFtZSBhdHRyaWJ1dGUgb24geW91ciByYWRpbyBidXR0b24sIHRoZWlyIHZhbHVlc1xuICAgICAgbXVzdCBtYXRjaC4gRXg6IDxpbnB1dCB0eXBlPSJyYWRpbyIgZm9ybUNvbnRyb2xOYW1lPSJmb29kIiBuYW1lPSJmb29kIj5cbiAgICAnKX0pKCksIXRoaXMubmFtZSYmdGhpcy5mb3JtQ29udHJvbE5hbWUmJih0aGlzLm5hbWU9dGhpcy5mb3JtQ29udHJvbE5hbWUpfX1jRy7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8Y0cpKGdmKCRoKSxnZihLaCksZ2YobEcpLGdmKE5wKSl9LGNHLsm1ZGlyPWhvKHt0eXBlOmNHLHNlbGVjdG9yczpbWyJpbnB1dCIsInR5cGUiLCJyYWRpbyIsImZvcm1Db250cm9sTmFtZSIsIiJdLFsiaW5wdXQiLCJ0eXBlIiwicmFkaW8iLCJmb3JtQ29udHJvbCIsIiJdLFsiaW5wdXQiLCJ0eXBlIiwicmFkaW8iLCJuZ01vZGVsIiwiIl1dLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MSZlJiZSZigiY2hhbmdlIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uQ2hhbmdlKCl9KSkoImJsdXIiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25Ub3VjaGVkKCl9KSl9LGlucHV0czp7bmFtZToibmFtZSIsZm9ybUNvbnRyb2xOYW1lOiJmb3JtQ29udHJvbE5hbWUiLHZhbHVlOiJ2YWx1ZSJ9LGZlYXR1cmVzOltqaChbckddKSxRcF19KSxjRy5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOiRofSx7dHlwZTpLaH0se3R5cGU6bEd9LHt0eXBlOk5wfV0sY0cucHJvcERlY29yYXRvcnM9e25hbWU6W3t0eXBlOlJffV0sZm9ybUNvbnRyb2xOYW1lOlt7dHlwZTpSX31dLHZhbHVlOlt7dHlwZTpSX31dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGNHLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6ImlucHV0W3R5cGU9cmFkaW9dW2Zvcm1Db250cm9sTmFtZV0saW5wdXRbdHlwZT1yYWRpb11bZm9ybUNvbnRyb2xdLGlucHV0W3R5cGU9cmFkaW9dW25nTW9kZWxdIixob3N0OnsiKGNoYW5nZSkiOiJvbkNoYW5nZSgpIiwiKGJsdXIpIjoib25Ub3VjaGVkKCkifSxwcm92aWRlcnM6W3JHXX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOiRofSx7dHlwZTpLaH0se3R5cGU6bEd9LHt0eXBlOk5wfV19KSx7bmFtZTpbe3R5cGU6Ul99XSxmb3JtQ29udHJvbE5hbWU6W3t0eXBlOlJffV0sdmFsdWU6W3t0eXBlOlJffV19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IGRHPXtwcm92aWRlOnhVLHVzZUV4aXN0aW5nOiRlKCgoKT0+cEcpKSxtdWx0aTohMH07Y2xhc3MgcEcgZXh0ZW5kcyB2VXt3cml0ZVZhbHVlKHQpe3RoaXMuc2V0UHJvcGVydHkoInZhbHVlIixwYXJzZUZsb2F0KHQpKX1yZWdpc3Rlck9uQ2hhbmdlKHQpe3RoaXMub25DaGFuZ2U9ZT0+e3QoIiI9PWU/bnVsbDpwYXJzZUZsb2F0KGUpKX19fXBHLsm1ZmFjPShmdW5jdGlvbigpe2xldCB0O3JldHVybiBmdW5jdGlvbiBlKG4pe3JldHVybih0fHwodD1VYShwRykpKShufHxwRyl9fSkoKSxwRy7JtWRpcj1obyh7dHlwZTpwRyxzZWxlY3RvcnM6W1siaW5wdXQiLCJ0eXBlIiwicmFuZ2UiLCJmb3JtQ29udHJvbE5hbWUiLCIiXSxbImlucHV0IiwidHlwZSIsInJhbmdlIiwiZm9ybUNvbnRyb2wiLCIiXSxbImlucHV0IiwidHlwZSIsInJhbmdlIiwibmdNb2RlbCIsIiJdXSxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezEmZSYmUmYoImNoYW5nZSIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25DaGFuZ2UoZS50YXJnZXQudmFsdWUpfSkpKCJpbnB1dCIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25DaGFuZ2UoZS50YXJnZXQudmFsdWUpfSkpKCJibHVyIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uVG91Y2hlZCgpfSkpfSxmZWF0dXJlczpbamgoW2RHXSksUXBdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihwRyxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJpbnB1dFt0eXBlPXJhbmdlXVtmb3JtQ29udHJvbE5hbWVdLGlucHV0W3R5cGU9cmFuZ2VdW2Zvcm1Db250cm9sXSxpbnB1dFt0eXBlPXJhbmdlXVtuZ01vZGVsXSIsaG9zdDp7IihjaGFuZ2UpIjoib25DaGFuZ2UoJGV2ZW50LnRhcmdldC52YWx1ZSkiLCIoaW5wdXQpIjoib25DaGFuZ2UoJGV2ZW50LnRhcmdldC52YWx1ZSkiLCIoYmx1cikiOiJvblRvdWNoZWQoKSJ9LHByb3ZpZGVyczpbZEddfV19XSxudWxsLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgbUc9bmV3IGVyKCJOZ01vZGVsV2l0aEZvcm1Db250cm9sV2FybmluZyIpLGZHPXtwcm92aWRlOmxXLHVzZUV4aXN0aW5nOiRlKCgoKT0+dUcpKX07Y2xhc3MgdUcgZXh0ZW5kcyBsV3tjb25zdHJ1Y3Rvcih0LGUsbixvKXtzdXBlcigpLHRoaXMuX25nTW9kZWxXYXJuaW5nQ29uZmlnPW8sdGhpcy51cGRhdGU9bmV3IFN5LHRoaXMuX25nTW9kZWxXYXJuaW5nU2VudD0hMSx0aGlzLl9zZXRWYWxpZGF0b3JzKHQpLHRoaXMuX3NldEFzeW5jVmFsaWRhdG9ycyhlKSx0aGlzLnZhbHVlQWNjZXNzb3I9RVcodGhpcyxuKX1zZXQgaXNEaXNhYmxlZCh0KXsoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJl9XLmRpc2FibGVkQXR0cldhcm5pbmcoKX1uZ09uQ2hhbmdlcyh0KXtpZih0aGlzLl9pc0NvbnRyb2xDaGFuZ2VkKHQpKXtjb25zdCBlPXQuZm9ybS5wcmV2aW91c1ZhbHVlO2UmJnZXKGUsdGhpcywhMSksTVcodGhpcy5mb3JtLHRoaXMpLHRoaXMuY29udHJvbC5kaXNhYmxlZCYmdGhpcy52YWx1ZUFjY2Vzc29yLnNldERpc2FibGVkU3RhdGUmJnRoaXMudmFsdWVBY2Nlc3Nvci5zZXREaXNhYmxlZFN0YXRlKCEwKSx0aGlzLmZvcm0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7ZW1pdEV2ZW50OiExfSl9RFcodCx0aGlzLnZpZXdNb2RlbCkmJigoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlRXKCJmb3JtQ29udHJvbCIsdUcsdGhpcyx0aGlzLl9uZ01vZGVsV2FybmluZ0NvbmZpZyksdGhpcy5mb3JtLnNldFZhbHVlKHRoaXMubW9kZWwpLHRoaXMudmlld01vZGVsPXRoaXMubW9kZWwpfW5nT25EZXN0cm95KCl7dGhpcy5mb3JtJiZ2Vyh0aGlzLmZvcm0sdGhpcywhMSl9Z2V0IHBhdGgoKXtyZXR1cm5bXX1nZXQgY29udHJvbCgpe3JldHVybiB0aGlzLmZvcm19dmlld1RvTW9kZWxVcGRhdGUodCl7dGhpcy52aWV3TW9kZWw9dCx0aGlzLnVwZGF0ZS5lbWl0KHQpfV9pc0NvbnRyb2xDaGFuZ2VkKHQpe3JldHVybiB0Lmhhc093blByb3BlcnR5KCJmb3JtIil9fXVHLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx1RykoZ2YoRVUsMTApLGdmKEFVLDEwKSxnZih4VSwxMCksZ2YobUcsOCkpfSx1Ry7JtWRpcj1obyh7dHlwZTp1RyxzZWxlY3RvcnM6W1siIiwiZm9ybUNvbnRyb2wiLCIiXV0saW5wdXRzOntpc0Rpc2FibGVkOlsiZGlzYWJsZWQiLCJpc0Rpc2FibGVkIl0sZm9ybTpbImZvcm1Db250cm9sIiwiZm9ybSJdLG1vZGVsOlsibmdNb2RlbCIsIm1vZGVsIl19LG91dHB1dHM6e3VwZGF0ZToibmdNb2RlbENoYW5nZSJ9LGV4cG9ydEFzOlsibmdGb3JtIl0sZmVhdHVyZXM6W2poKFtmR10pLFFwLHFvXX0pLHVHLl9uZ01vZGVsV2FybmluZ1NlbnRPbmNlPSExLHVHLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOlZyfSx7dHlwZTpMcixhcmdzOltFVV19XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOlZyfSx7dHlwZTpMcixhcmdzOltBVV19XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOlZyfSx7dHlwZTpMcixhcmdzOlt4VV19XX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOlttR119XX1dLHVHLnByb3BEZWNvcmF0b3JzPXtmb3JtOlt7dHlwZTpSXyxhcmdzOlsiZm9ybUNvbnRyb2wiXX1dLGlzRGlzYWJsZWQ6W3t0eXBlOlJfLGFyZ3M6WyJkaXNhYmxlZCJdfV0sbW9kZWw6W3t0eXBlOlJfLGFyZ3M6WyJuZ01vZGVsIl19XSx1cGRhdGU6W3t0eXBlOkVfLGFyZ3M6WyJuZ01vZGVsQ2hhbmdlIl19XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih1Ryxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJbZm9ybUNvbnRyb2xdIixwcm92aWRlcnM6W2ZHXSxleHBvcnRBczoibmdGb3JtIn1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpWcn0se3R5cGU6THIsYXJnczpbRVVdfV19LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpWcn0se3R5cGU6THIsYXJnczpbQVVdfV19LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpWcn0se3R5cGU6THIsYXJnczpbeFVdfV19LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbbUddfV19XX0pLHt1cGRhdGU6W3t0eXBlOkVfLGFyZ3M6WyJuZ01vZGVsQ2hhbmdlIl19XSxpc0Rpc2FibGVkOlt7dHlwZTpSXyxhcmdzOlsiZGlzYWJsZWQiXX1dLGZvcm06W3t0eXBlOlJfLGFyZ3M6WyJmb3JtQ29udHJvbCJdfV0sbW9kZWw6W3t0eXBlOlJfLGFyZ3M6WyJuZ01vZGVsIl19XX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgZ0c9e3Byb3ZpZGU6c1csdXNlRXhpc3Rpbmc6JGUoKCgpPT5oRykpfTtjbGFzcyBoRyBleHRlbmRzIHNXe2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIoKSx0aGlzLnZhbGlkYXRvcnM9dCx0aGlzLmFzeW5jVmFsaWRhdG9ycz1lLHRoaXMuc3VibWl0dGVkPSExLHRoaXMuX29uQ29sbGVjdGlvbkNoYW5nZT0oKT0+dGhpcy5fdXBkYXRlRG9tVmFsdWUoKSx0aGlzLmRpcmVjdGl2ZXM9W10sdGhpcy5mb3JtPW51bGwsdGhpcy5uZ1N1Ym1pdD1uZXcgU3ksdGhpcy5fc2V0VmFsaWRhdG9ycyh0KSx0aGlzLl9zZXRBc3luY1ZhbGlkYXRvcnMoZSl9bmdPbkNoYW5nZXModCl7dGhpcy5fY2hlY2tGb3JtUHJlc2VudCgpLHQuaGFzT3duUHJvcGVydHkoImZvcm0iKSYmKHRoaXMuX3VwZGF0ZVZhbGlkYXRvcnMoKSx0aGlzLl91cGRhdGVEb21WYWx1ZSgpLHRoaXMuX3VwZGF0ZVJlZ2lzdHJhdGlvbnMoKSx0aGlzLl9vbGRGb3JtPXRoaXMuZm9ybSl9bmdPbkRlc3Ryb3koKXt0aGlzLmZvcm0mJihQVyh0aGlzLmZvcm0sdGhpcyksdGhpcy5mb3JtLl9vbkNvbGxlY3Rpb25DaGFuZ2U9PT10aGlzLl9vbkNvbGxlY3Rpb25DaGFuZ2UmJnRoaXMuZm9ybS5fcmVnaXN0ZXJPbkNvbGxlY3Rpb25DaGFuZ2UoKCgpPT57fSkpKX1nZXQgZm9ybURpcmVjdGl2ZSgpe3JldHVybiB0aGlzfWdldCBjb250cm9sKCl7cmV0dXJuIHRoaXMuZm9ybX1nZXQgcGF0aCgpe3JldHVybltdfWFkZENvbnRyb2wodCl7Y29uc3QgZT10aGlzLmZvcm0uZ2V0KHQucGF0aCk7cmV0dXJuIE1XKGUsdCksZS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtlbWl0RXZlbnQ6ITF9KSx0aGlzLmRpcmVjdGl2ZXMucHVzaCh0KSxlfWdldENvbnRyb2wodCl7cmV0dXJuIHRoaXMuZm9ybS5nZXQodC5wYXRoKX1yZW1vdmVDb250cm9sKHQpe3ZXKHQuY29udHJvbHx8bnVsbCx0LCExKSxBVyh0aGlzLmRpcmVjdGl2ZXMsdCl9YWRkRm9ybUdyb3VwKHQpe3RoaXMuX3NldFVwRm9ybUNvbnRhaW5lcih0KX1yZW1vdmVGb3JtR3JvdXAodCl7dGhpcy5fY2xlYW5VcEZvcm1Db250YWluZXIodCl9Z2V0Rm9ybUdyb3VwKHQpe3JldHVybiB0aGlzLmZvcm0uZ2V0KHQucGF0aCl9YWRkRm9ybUFycmF5KHQpe3RoaXMuX3NldFVwRm9ybUNvbnRhaW5lcih0KX1yZW1vdmVGb3JtQXJyYXkodCl7dGhpcy5fY2xlYW5VcEZvcm1Db250YWluZXIodCl9Z2V0Rm9ybUFycmF5KHQpe3JldHVybiB0aGlzLmZvcm0uZ2V0KHQucGF0aCl9dXBkYXRlTW9kZWwodCxlKXt0aGlzLmZvcm0uZ2V0KHQucGF0aCkuc2V0VmFsdWUoZSl9b25TdWJtaXQodCl7cmV0dXJuIHRoaXMuc3VibWl0dGVkPSEwLFJXKHRoaXMuZm9ybSx0aGlzLmRpcmVjdGl2ZXMpLHRoaXMubmdTdWJtaXQuZW1pdCh0KSwhMX1vblJlc2V0KCl7dGhpcy5yZXNldEZvcm0oKX1yZXNldEZvcm0odCl7dGhpcy5mb3JtLnJlc2V0KHQpLHRoaXMuc3VibWl0dGVkPSExfV91cGRhdGVEb21WYWx1ZSgpe3RoaXMuZGlyZWN0aXZlcy5mb3JFYWNoKCh0PT57Y29uc3QgZT10LmNvbnRyb2wsbj10aGlzLmZvcm0uZ2V0KHQucGF0aCk7ZSE9PW4mJih2VyhlfHxudWxsLHQpLG4gaW5zdGFuY2VvZiBXVyYmKE1XKG4sdCksdC5jb250cm9sPW4pKX0pKSx0aGlzLmZvcm0uX3VwZGF0ZVRyZWVWYWxpZGl0eSh7ZW1pdEV2ZW50OiExfSl9X3NldFVwRm9ybUNvbnRhaW5lcih0KXtjb25zdCBlPXRoaXMuZm9ybS5nZXQodC5wYXRoKTtrVyhlLHQpLGUudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7ZW1pdEV2ZW50OiExfSl9X2NsZWFuVXBGb3JtQ29udGFpbmVyKHQpe2lmKHRoaXMuZm9ybSl7Y29uc3QgZT10aGlzLmZvcm0uZ2V0KHQucGF0aCk7aWYoZSl7KGZ1bmN0aW9uIG4odCxlKXtyZXR1cm4gUFcodCxlKX0pKGUsdCkmJmUudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7ZW1pdEV2ZW50OiExfSl9fX1fdXBkYXRlUmVnaXN0cmF0aW9ucygpe3RoaXMuZm9ybS5fcmVnaXN0ZXJPbkNvbGxlY3Rpb25DaGFuZ2UodGhpcy5fb25Db2xsZWN0aW9uQ2hhbmdlKSx0aGlzLl9vbGRGb3JtJiZ0aGlzLl9vbGRGb3JtLl9yZWdpc3Rlck9uQ29sbGVjdGlvbkNoYW5nZSgoKCk9Pnt9KSl9X3VwZGF0ZVZhbGlkYXRvcnMoKXtPVyh0aGlzLmZvcm0sdGhpcyksdGhpcy5fb2xkRm9ybSYmUFcodGhpcy5fb2xkRm9ybSx0aGlzKX1fY2hlY2tGb3JtUHJlc2VudCgpe3RoaXMuZm9ybXx8InVuZGVmaW5lZCIhPXR5cGVvZiBuZ0Rldk1vZGUmJiFuZ0Rldk1vZGV8fF9XLm1pc3NpbmdGb3JtRXhjZXB0aW9uKCl9fWhHLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxoRykoZ2YoRVUsMTApLGdmKEFVLDEwKSl9LGhHLsm1ZGlyPWhvKHt0eXBlOmhHLHNlbGVjdG9yczpbWyIiLCJmb3JtR3JvdXAiLCIiXV0saG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJlJmKCJzdWJtaXQiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uU3VibWl0KGUpfSkpKCJyZXNldCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vblJlc2V0KCl9KSl9LGlucHV0czp7Zm9ybTpbImZvcm1Hcm91cCIsImZvcm0iXX0sb3V0cHV0czp7bmdTdWJtaXQ6Im5nU3VibWl0In0sZXhwb3J0QXM6WyJuZ0Zvcm0iXSxmZWF0dXJlczpbamgoW2dHXSksUXAscW9dfSksaEcuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6VnJ9LHt0eXBlOkxyLGFyZ3M6W0VVXX1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6VnJ9LHt0eXBlOkxyLGFyZ3M6W0FVXX1dfV0saEcucHJvcERlY29yYXRvcnM9e2Zvcm06W3t0eXBlOlJfLGFyZ3M6WyJmb3JtR3JvdXAiXX1dLG5nU3VibWl0Olt7dHlwZTpFX31dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGhHLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6Iltmb3JtR3JvdXBdIixwcm92aWRlcnM6W2dHXSxob3N0OnsiKHN1Ym1pdCkiOiJvblN1Ym1pdCgkZXZlbnQpIiwiKHJlc2V0KSI6Im9uUmVzZXQoKSJ9LGV4cG9ydEFzOiJuZ0Zvcm0ifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOlZyfSx7dHlwZTpMcixhcmdzOltFVV19XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOlZyfSx7dHlwZTpMcixhcmdzOltBVV19XX1dfSkse2Zvcm06W3t0eXBlOlJfLGFyZ3M6WyJmb3JtR3JvdXAiXX1dLG5nU3VibWl0Olt7dHlwZTpFX31dfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCBiRz17cHJvdmlkZTpzVyx1c2VFeGlzdGluZzokZSgoKCk9PnlHKSl9O2NsYXNzIHlHIGV4dGVuZHMgS1d7Y29uc3RydWN0b3IodCxlLG4pe3N1cGVyKCksdGhpcy5fcGFyZW50PXQsdGhpcy5fc2V0VmFsaWRhdG9ycyhlKSx0aGlzLl9zZXRBc3luY1ZhbGlkYXRvcnMobil9X2NoZWNrUGFyZW50VHlwZSgpe01HKHRoaXMuX3BhcmVudCkmJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmX1cuZ3JvdXBQYXJlbnRFeGNlcHRpb24oKX19eUcuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHlHKShnZihzVywxMyksZ2YoRVUsMTApLGdmKEFVLDEwKSl9LHlHLsm1ZGlyPWhvKHt0eXBlOnlHLHNlbGVjdG9yczpbWyIiLCJmb3JtR3JvdXBOYW1lIiwiIl1dLGlucHV0czp7bmFtZTpbImZvcm1Hcm91cE5hbWUiLCJuYW1lIl19LGZlYXR1cmVzOltqaChbYkddKSxRcF19KSx5Ry5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnNXLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpVcn0se3R5cGU6anJ9XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOlZyfSx7dHlwZTpMcixhcmdzOltFVV19XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOlZyfSx7dHlwZTpMcixhcmdzOltBVV19XX1dLHlHLnByb3BEZWNvcmF0b3JzPXtuYW1lOlt7dHlwZTpSXyxhcmdzOlsiZm9ybUdyb3VwTmFtZSJdfV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoeUcsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW2Zvcm1Hcm91cE5hbWVdIixwcm92aWRlcnM6W2JHXX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnNXLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpVcn0se3R5cGU6anJ9XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOlZyfSx7dHlwZTpMcixhcmdzOltFVV19XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOlZyfSx7dHlwZTpMcixhcmdzOltBVV19XX1dfSkse25hbWU6W3t0eXBlOlJfLGFyZ3M6WyJmb3JtR3JvdXBOYW1lIl19XX0pO2NvbnN0IF9HPXtwcm92aWRlOnNXLHVzZUV4aXN0aW5nOiRlKCgoKT0+Q0cpKX07Y2xhc3MgQ0cgZXh0ZW5kcyBzV3tjb25zdHJ1Y3Rvcih0LGUsbil7c3VwZXIoKSx0aGlzLl9wYXJlbnQ9dCx0aGlzLl9zZXRWYWxpZGF0b3JzKGUpLHRoaXMuX3NldEFzeW5jVmFsaWRhdG9ycyhuKX1uZ09uSW5pdCgpe3RoaXMuX2NoZWNrUGFyZW50VHlwZSgpLHRoaXMuZm9ybURpcmVjdGl2ZS5hZGRGb3JtQXJyYXkodGhpcyl9bmdPbkRlc3Ryb3koKXt0aGlzLmZvcm1EaXJlY3RpdmUmJnRoaXMuZm9ybURpcmVjdGl2ZS5yZW1vdmVGb3JtQXJyYXkodGhpcyl9Z2V0IGNvbnRyb2woKXtyZXR1cm4gdGhpcy5mb3JtRGlyZWN0aXZlLmdldEZvcm1BcnJheSh0aGlzKX1nZXQgZm9ybURpcmVjdGl2ZSgpe3JldHVybiB0aGlzLl9wYXJlbnQ/dGhpcy5fcGFyZW50LmZvcm1EaXJlY3RpdmU6bnVsbH1nZXQgcGF0aCgpe3JldHVybiBDVyhudWxsPT10aGlzLm5hbWU/dGhpcy5uYW1lOnRoaXMubmFtZS50b1N0cmluZygpLHRoaXMuX3BhcmVudCl9X2NoZWNrUGFyZW50VHlwZSgpe01HKHRoaXMuX3BhcmVudCkmJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmX1cuYXJyYXlQYXJlbnRFeGNlcHRpb24oKX19ZnVuY3Rpb24gTUcodCl7cmV0dXJuISh0IGluc3RhbmNlb2YgeUd8fHQgaW5zdGFuY2VvZiBoR3x8dCBpbnN0YW5jZW9mIENHKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovQ0cuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fENHKShnZihzVywxMyksZ2YoRVUsMTApLGdmKEFVLDEwKSl9LENHLsm1ZGlyPWhvKHt0eXBlOkNHLHNlbGVjdG9yczpbWyIiLCJmb3JtQXJyYXlOYW1lIiwiIl1dLGlucHV0czp7bmFtZTpbImZvcm1BcnJheU5hbWUiLCJuYW1lIl19LGZlYXR1cmVzOltqaChbX0ddKSxRcF19KSxDRy5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnNXLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpVcn0se3R5cGU6anJ9XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOlZyfSx7dHlwZTpMcixhcmdzOltFVV19XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOlZyfSx7dHlwZTpMcixhcmdzOltBVV19XX1dLENHLnByb3BEZWNvcmF0b3JzPXtuYW1lOlt7dHlwZTpSXyxhcmdzOlsiZm9ybUFycmF5TmFtZSJdfV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoQ0csW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW2Zvcm1BcnJheU5hbWVdIixwcm92aWRlcnM6W19HXX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnNXLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpVcn0se3R5cGU6anJ9XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOlZyfSx7dHlwZTpMcixhcmdzOltFVV19XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOlZyfSx7dHlwZTpMcixhcmdzOltBVV19XX1dfSkse25hbWU6W3t0eXBlOlJfLGFyZ3M6WyJmb3JtQXJyYXlOYW1lIl19XX0pO2NvbnN0IHZHPXtwcm92aWRlOmxXLHVzZUV4aXN0aW5nOiRlKCgoKT0+eEcpKX07Y2xhc3MgeEcgZXh0ZW5kcyBsV3tjb25zdHJ1Y3Rvcih0LGUsbixvLGkpe3N1cGVyKCksdGhpcy5fbmdNb2RlbFdhcm5pbmdDb25maWc9aSx0aGlzLl9hZGRlZD0hMSx0aGlzLnVwZGF0ZT1uZXcgU3ksdGhpcy5fbmdNb2RlbFdhcm5pbmdTZW50PSExLHRoaXMuX3BhcmVudD10LHRoaXMuX3NldFZhbGlkYXRvcnMoZSksdGhpcy5fc2V0QXN5bmNWYWxpZGF0b3JzKG4pLHRoaXMudmFsdWVBY2Nlc3Nvcj1FVyh0aGlzLG8pfXNldCBpc0Rpc2FibGVkKHQpeygidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmX1cuZGlzYWJsZWRBdHRyV2FybmluZygpfW5nT25DaGFuZ2VzKHQpe3RoaXMuX2FkZGVkfHx0aGlzLl9zZXRVcENvbnRyb2woKSxEVyh0LHRoaXMudmlld01vZGVsKSYmKCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmVFcoImZvcm1Db250cm9sTmFtZSIseEcsdGhpcyx0aGlzLl9uZ01vZGVsV2FybmluZ0NvbmZpZyksdGhpcy52aWV3TW9kZWw9dGhpcy5tb2RlbCx0aGlzLmZvcm1EaXJlY3RpdmUudXBkYXRlTW9kZWwodGhpcyx0aGlzLm1vZGVsKSl9bmdPbkRlc3Ryb3koKXt0aGlzLmZvcm1EaXJlY3RpdmUmJnRoaXMuZm9ybURpcmVjdGl2ZS5yZW1vdmVDb250cm9sKHRoaXMpfXZpZXdUb01vZGVsVXBkYXRlKHQpe3RoaXMudmlld01vZGVsPXQsdGhpcy51cGRhdGUuZW1pdCh0KX1nZXQgcGF0aCgpe3JldHVybiBDVyhudWxsPT10aGlzLm5hbWU/dGhpcy5uYW1lOnRoaXMubmFtZS50b1N0cmluZygpLHRoaXMuX3BhcmVudCl9Z2V0IGZvcm1EaXJlY3RpdmUoKXtyZXR1cm4gdGhpcy5fcGFyZW50P3RoaXMuX3BhcmVudC5mb3JtRGlyZWN0aXZlOm51bGx9X2NoZWNrUGFyZW50VHlwZSgpeygidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmKCEodGhpcy5fcGFyZW50IGluc3RhbmNlb2YgeUcpJiZ0aGlzLl9wYXJlbnQgaW5zdGFuY2VvZiBLVz9fVy5uZ01vZGVsR3JvdXBFeGNlcHRpb24oKTp0aGlzLl9wYXJlbnQgaW5zdGFuY2VvZiB5R3x8dGhpcy5fcGFyZW50IGluc3RhbmNlb2YgaEd8fHRoaXMuX3BhcmVudCBpbnN0YW5jZW9mIENHfHxfVy5jb250cm9sUGFyZW50RXhjZXB0aW9uKCkpfV9zZXRVcENvbnRyb2woKXt0aGlzLl9jaGVja1BhcmVudFR5cGUoKSx0aGlzLmNvbnRyb2w9dGhpcy5mb3JtRGlyZWN0aXZlLmFkZENvbnRyb2wodGhpcyksdGhpcy5jb250cm9sLmRpc2FibGVkJiZ0aGlzLnZhbHVlQWNjZXNzb3Iuc2V0RGlzYWJsZWRTdGF0ZSYmdGhpcy52YWx1ZUFjY2Vzc29yLnNldERpc2FibGVkU3RhdGUoITApLHRoaXMuX2FkZGVkPSEwfX14Ry7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8eEcpKGdmKHNXLDEzKSxnZihFVSwxMCksZ2YoQVUsMTApLGdmKHhVLDEwKSxnZihtRyw4KSl9LHhHLsm1ZGlyPWhvKHt0eXBlOnhHLHNlbGVjdG9yczpbWyIiLCJmb3JtQ29udHJvbE5hbWUiLCIiXV0saW5wdXRzOntpc0Rpc2FibGVkOlsiZGlzYWJsZWQiLCJpc0Rpc2FibGVkIl0sbmFtZTpbImZvcm1Db250cm9sTmFtZSIsIm5hbWUiXSxtb2RlbDpbIm5nTW9kZWwiLCJtb2RlbCJdfSxvdXRwdXRzOnt1cGRhdGU6Im5nTW9kZWxDaGFuZ2UifSxmZWF0dXJlczpbamgoW3ZHXSksUXAscW9dfSkseEcuX25nTW9kZWxXYXJuaW5nU2VudE9uY2U9ITEseEcuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpzVyxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6VXJ9LHt0eXBlOmpyfV19LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpWcn0se3R5cGU6THIsYXJnczpbRVVdfV19LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpWcn0se3R5cGU6THIsYXJnczpbQVVdfV19LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpWcn0se3R5cGU6THIsYXJnczpbeFVdfV19LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbbUddfV19XSx4Ry5wcm9wRGVjb3JhdG9ycz17bmFtZTpbe3R5cGU6Ul8sYXJnczpbImZvcm1Db250cm9sTmFtZSJdfV0saXNEaXNhYmxlZDpbe3R5cGU6Ul8sYXJnczpbImRpc2FibGVkIl19XSxtb2RlbDpbe3R5cGU6Ul8sYXJnczpbIm5nTW9kZWwiXX1dLHVwZGF0ZTpbe3R5cGU6RV8sYXJnczpbIm5nTW9kZWxDaGFuZ2UiXX1dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHhHLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6Iltmb3JtQ29udHJvbE5hbWVdIixwcm92aWRlcnM6W3ZHXX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnNXLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpVcn0se3R5cGU6anJ9XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOlZyfSx7dHlwZTpMcixhcmdzOltFVV19XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOlZyfSx7dHlwZTpMcixhcmdzOltBVV19XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOlZyfSx7dHlwZTpMcixhcmdzOlt4VV19XX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOlttR119XX1dfSkse3VwZGF0ZTpbe3R5cGU6RV8sYXJnczpbIm5nTW9kZWxDaGFuZ2UiXX1dLGlzRGlzYWJsZWQ6W3t0eXBlOlJfLGFyZ3M6WyJkaXNhYmxlZCJdfV0sbmFtZTpbe3R5cGU6Ul8sYXJnczpbImZvcm1Db250cm9sTmFtZSJdfV0sbW9kZWw6W3t0eXBlOlJfLGFyZ3M6WyJuZ01vZGVsIl19XX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgT0c9e3Byb3ZpZGU6eFUsdXNlRXhpc3Rpbmc6JGUoKCgpPT53RykpLG11bHRpOiEwfTtmdW5jdGlvbiBQRyh0LGUpe3JldHVybiBudWxsPT10P2Ake2V9YDooZSYmIm9iamVjdCI9PXR5cGVvZiBlJiYoZT0iT2JqZWN0IiksYCR7dH06ICR7ZX1gLnNsaWNlKDAsNTApKX1jbGFzcyB3RyBleHRlbmRzIHZVe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9vcHRpb25NYXA9bmV3IE1hcCx0aGlzLl9pZENvdW50ZXI9MCx0aGlzLl9jb21wYXJlV2l0aD1PYmplY3QuaXN9c2V0IGNvbXBhcmVXaXRoKHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkpdGhyb3cgbmV3IEVycm9yKGBjb21wYXJlV2l0aCBtdXN0IGJlIGEgZnVuY3Rpb24sIGJ1dCByZWNlaXZlZCAke0pTT04uc3RyaW5naWZ5KHQpfWApO3RoaXMuX2NvbXBhcmVXaXRoPXR9d3JpdGVWYWx1ZSh0KXt0aGlzLnZhbHVlPXQ7Y29uc3QgZT10aGlzLl9nZXRPcHRpb25JZCh0KTtudWxsPT1lJiZ0aGlzLnNldFByb3BlcnR5KCJzZWxlY3RlZEluZGV4IiwtMSk7Y29uc3Qgbj1QRyhlLHQpO3RoaXMuc2V0UHJvcGVydHkoInZhbHVlIixuKX1yZWdpc3Rlck9uQ2hhbmdlKHQpe3RoaXMub25DaGFuZ2U9ZT0+e3RoaXMudmFsdWU9dGhpcy5fZ2V0T3B0aW9uVmFsdWUoZSksdCh0aGlzLnZhbHVlKX19X3JlZ2lzdGVyT3B0aW9uKCl7cmV0dXJuKHRoaXMuX2lkQ291bnRlcisrKS50b1N0cmluZygpfV9nZXRPcHRpb25JZCh0KXtmb3IoY29uc3QgZSBvZiBBcnJheS5mcm9tKHRoaXMuX29wdGlvbk1hcC5rZXlzKCkpKWlmKHRoaXMuX2NvbXBhcmVXaXRoKHRoaXMuX29wdGlvbk1hcC5nZXQoZSksdCkpcmV0dXJuIGU7cmV0dXJuIG51bGx9X2dldE9wdGlvblZhbHVlKHQpe2NvbnN0IGU9KGZ1bmN0aW9uIG4odCl7cmV0dXJuIHQuc3BsaXQoIjoiKVswXX0pKHQpO3JldHVybiB0aGlzLl9vcHRpb25NYXAuaGFzKGUpP3RoaXMuX29wdGlvbk1hcC5nZXQoZSk6dH19d0cuybVmYWM9KGZ1bmN0aW9uKCl7bGV0IHQ7cmV0dXJuIGZ1bmN0aW9uIGUobil7cmV0dXJuKHR8fCh0PVVhKHdHKSkpKG58fHdHKX19KSgpLHdHLsm1ZGlyPWhvKHt0eXBlOndHLHNlbGVjdG9yczpbWyJzZWxlY3QiLCJmb3JtQ29udHJvbE5hbWUiLCIiLDMsIm11bHRpcGxlIiwiIl0sWyJzZWxlY3QiLCJmb3JtQ29udHJvbCIsIiIsMywibXVsdGlwbGUiLCIiXSxbInNlbGVjdCIsIm5nTW9kZWwiLCIiLDMsIm11bHRpcGxlIiwiIl1dLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MSZlJiZSZigiY2hhbmdlIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vbkNoYW5nZShlLnRhcmdldC52YWx1ZSl9KSkoImJsdXIiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25Ub3VjaGVkKCl9KSl9LGlucHV0czp7Y29tcGFyZVdpdGg6ImNvbXBhcmVXaXRoIn0sZmVhdHVyZXM6W2poKFtPR10pLFFwXX0pLHdHLnByb3BEZWNvcmF0b3JzPXtjb21wYXJlV2l0aDpbe3R5cGU6Ul99XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih3Ryxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJzZWxlY3Q6bm90KFttdWx0aXBsZV0pW2Zvcm1Db250cm9sTmFtZV0sc2VsZWN0Om5vdChbbXVsdGlwbGVdKVtmb3JtQ29udHJvbF0sc2VsZWN0Om5vdChbbXVsdGlwbGVdKVtuZ01vZGVsXSIsaG9zdDp7IihjaGFuZ2UpIjoib25DaGFuZ2UoJGV2ZW50LnRhcmdldC52YWx1ZSkiLCIoYmx1cikiOiJvblRvdWNoZWQoKSJ9LHByb3ZpZGVyczpbT0ddfV19XSxudWxsLHtjb21wYXJlV2l0aDpbe3R5cGU6Ul99XX0pO2NsYXNzIGtHe2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLl9lbGVtZW50PXQsdGhpcy5fcmVuZGVyZXI9ZSx0aGlzLl9zZWxlY3Q9bix0aGlzLl9zZWxlY3QmJih0aGlzLmlkPXRoaXMuX3NlbGVjdC5fcmVnaXN0ZXJPcHRpb24oKSl9c2V0IG5nVmFsdWUodCl7bnVsbCE9dGhpcy5fc2VsZWN0JiYodGhpcy5fc2VsZWN0Ll9vcHRpb25NYXAuc2V0KHRoaXMuaWQsdCksdGhpcy5fc2V0RWxlbWVudFZhbHVlKFBHKHRoaXMuaWQsdCkpLHRoaXMuX3NlbGVjdC53cml0ZVZhbHVlKHRoaXMuX3NlbGVjdC52YWx1ZSkpfXNldCB2YWx1ZSh0KXt0aGlzLl9zZXRFbGVtZW50VmFsdWUodCksdGhpcy5fc2VsZWN0JiZ0aGlzLl9zZWxlY3Qud3JpdGVWYWx1ZSh0aGlzLl9zZWxlY3QudmFsdWUpfV9zZXRFbGVtZW50VmFsdWUodCl7dGhpcy5fcmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LCJ2YWx1ZSIsdCl9bmdPbkRlc3Ryb3koKXt0aGlzLl9zZWxlY3QmJih0aGlzLl9zZWxlY3QuX29wdGlvbk1hcC5kZWxldGUodGhpcy5pZCksdGhpcy5fc2VsZWN0LndyaXRlVmFsdWUodGhpcy5fc2VsZWN0LnZhbHVlKSl9fWtHLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxrRykoZ2YoS2gpLGdmKCRoKSxnZih3Ryw5KSl9LGtHLsm1ZGlyPWhvKHt0eXBlOmtHLHNlbGVjdG9yczpbWyJvcHRpb24iXV0saW5wdXRzOntuZ1ZhbHVlOiJuZ1ZhbHVlIix2YWx1ZToidmFsdWUifX0pLGtHLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6S2h9LHt0eXBlOiRofSx7dHlwZTp3RyxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6VXJ9XX1dLGtHLnByb3BEZWNvcmF0b3JzPXtuZ1ZhbHVlOlt7dHlwZTpSXyxhcmdzOlsibmdWYWx1ZSJdfV0sdmFsdWU6W3t0eXBlOlJfLGFyZ3M6WyJ2YWx1ZSJdfV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoa0csW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3Rvcjoib3B0aW9uIn1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOktofSx7dHlwZTokaH0se3R5cGU6d0csZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOlVyfV19XX0pLHtuZ1ZhbHVlOlt7dHlwZTpSXyxhcmdzOlsibmdWYWx1ZSJdfV0sdmFsdWU6W3t0eXBlOlJfLGFyZ3M6WyJ2YWx1ZSJdfV19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IFNHPXtwcm92aWRlOnhVLHVzZUV4aXN0aW5nOiRlKCgoKT0+UkcpKSxtdWx0aTohMH07ZnVuY3Rpb24gREcodCxlKXtyZXR1cm4gbnVsbD09dD9gJHtlfWA6KCJzdHJpbmciPT10eXBlb2YgZSYmKGU9YCcke2V9J2ApLGUmJiJvYmplY3QiPT10eXBlb2YgZSYmKGU9Ik9iamVjdCIpLGAke3R9OiAke2V9YC5zbGljZSgwLDUwKSl9Y2xhc3MgUkcgZXh0ZW5kcyB2VXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5fb3B0aW9uTWFwPW5ldyBNYXAsdGhpcy5faWRDb3VudGVyPTAsdGhpcy5fY29tcGFyZVdpdGg9T2JqZWN0LmlzfXNldCBjb21wYXJlV2l0aCh0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpKXRocm93IG5ldyBFcnJvcihgY29tcGFyZVdpdGggbXVzdCBiZSBhIGZ1bmN0aW9uLCBidXQgcmVjZWl2ZWQgJHtKU09OLnN0cmluZ2lmeSh0KX1gKTt0aGlzLl9jb21wYXJlV2l0aD10fXdyaXRlVmFsdWUodCl7bGV0IGU7aWYodGhpcy52YWx1ZT10LEFycmF5LmlzQXJyYXkodCkpe2NvbnN0IG49dC5tYXAoKHQ9PnRoaXMuX2dldE9wdGlvbklkKHQpKSk7ZT0odCxlKT0+e3QuX3NldFNlbGVjdGVkKG4uaW5kZXhPZihlLnRvU3RyaW5nKCkpPi0xKX19ZWxzZSBlPSh0LGUpPT57dC5fc2V0U2VsZWN0ZWQoITEpfTt0aGlzLl9vcHRpb25NYXAuZm9yRWFjaChlKX1yZWdpc3Rlck9uQ2hhbmdlKHQpe3RoaXMub25DaGFuZ2U9ZT0+e2NvbnN0IG49W107aWYodm9pZCAwIT09ZS5zZWxlY3RlZE9wdGlvbnMpe2NvbnN0IHQ9ZS5zZWxlY3RlZE9wdGlvbnM7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspe2NvbnN0IG89dC5pdGVtKGUpLGk9dGhpcy5fZ2V0T3B0aW9uVmFsdWUoby52YWx1ZSk7bi5wdXNoKGkpfX1lbHNle2NvbnN0IHQ9ZS5vcHRpb25zO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKXtjb25zdCBvPXQuaXRlbShlKTtpZihvLnNlbGVjdGVkKXtjb25zdCB0PXRoaXMuX2dldE9wdGlvblZhbHVlKG8udmFsdWUpO24ucHVzaCh0KX19fXRoaXMudmFsdWU9bix0KG4pfX1fcmVnaXN0ZXJPcHRpb24odCl7Y29uc3QgZT0odGhpcy5faWRDb3VudGVyKyspLnRvU3RyaW5nKCk7cmV0dXJuIHRoaXMuX29wdGlvbk1hcC5zZXQoZSx0KSxlfV9nZXRPcHRpb25JZCh0KXtmb3IoY29uc3QgZSBvZiBBcnJheS5mcm9tKHRoaXMuX29wdGlvbk1hcC5rZXlzKCkpKWlmKHRoaXMuX2NvbXBhcmVXaXRoKHRoaXMuX29wdGlvbk1hcC5nZXQoZSkuX3ZhbHVlLHQpKXJldHVybiBlO3JldHVybiBudWxsfV9nZXRPcHRpb25WYWx1ZSh0KXtjb25zdCBlPShmdW5jdGlvbiBuKHQpe3JldHVybiB0LnNwbGl0KCI6IilbMF19KSh0KTtyZXR1cm4gdGhpcy5fb3B0aW9uTWFwLmhhcyhlKT90aGlzLl9vcHRpb25NYXAuZ2V0KGUpLl92YWx1ZTp0fX1SRy7JtWZhYz0oZnVuY3Rpb24oKXtsZXQgdDtyZXR1cm4gZnVuY3Rpb24gZShuKXtyZXR1cm4odHx8KHQ9VWEoUkcpKSkobnx8UkcpfX0pKCksUkcuybVkaXI9aG8oe3R5cGU6Ukcsc2VsZWN0b3JzOltbInNlbGVjdCIsIm11bHRpcGxlIiwiIiwiZm9ybUNvbnRyb2xOYW1lIiwiIl0sWyJzZWxlY3QiLCJtdWx0aXBsZSIsIiIsImZvcm1Db250cm9sIiwiIl0sWyJzZWxlY3QiLCJtdWx0aXBsZSIsIiIsIm5nTW9kZWwiLCIiXV0saG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJlJmKCJjaGFuZ2UiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uQ2hhbmdlKGUudGFyZ2V0KX0pKSgiYmx1ciIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vblRvdWNoZWQoKX0pKX0saW5wdXRzOntjb21wYXJlV2l0aDoiY29tcGFyZVdpdGgifSxmZWF0dXJlczpbamgoW1NHXSksUXBdfSksUkcucHJvcERlY29yYXRvcnM9e2NvbXBhcmVXaXRoOlt7dHlwZTpSX31dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFJHLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6InNlbGVjdFttdWx0aXBsZV1bZm9ybUNvbnRyb2xOYW1lXSxzZWxlY3RbbXVsdGlwbGVdW2Zvcm1Db250cm9sXSxzZWxlY3RbbXVsdGlwbGVdW25nTW9kZWxdIixob3N0OnsiKGNoYW5nZSkiOiJvbkNoYW5nZSgkZXZlbnQudGFyZ2V0KSIsIihibHVyKSI6Im9uVG91Y2hlZCgpIn0scHJvdmlkZXJzOltTR119XX1dLG51bGwse2NvbXBhcmVXaXRoOlt7dHlwZTpSX31dfSk7Y2xhc3MgRUd7Y29uc3RydWN0b3IodCxlLG4pe3RoaXMuX2VsZW1lbnQ9dCx0aGlzLl9yZW5kZXJlcj1lLHRoaXMuX3NlbGVjdD1uLHRoaXMuX3NlbGVjdCYmKHRoaXMuaWQ9dGhpcy5fc2VsZWN0Ll9yZWdpc3Rlck9wdGlvbih0aGlzKSl9c2V0IG5nVmFsdWUodCl7bnVsbCE9dGhpcy5fc2VsZWN0JiYodGhpcy5fdmFsdWU9dCx0aGlzLl9zZXRFbGVtZW50VmFsdWUoREcodGhpcy5pZCx0KSksdGhpcy5fc2VsZWN0LndyaXRlVmFsdWUodGhpcy5fc2VsZWN0LnZhbHVlKSl9c2V0IHZhbHVlKHQpe3RoaXMuX3NlbGVjdD8odGhpcy5fdmFsdWU9dCx0aGlzLl9zZXRFbGVtZW50VmFsdWUoREcodGhpcy5pZCx0KSksdGhpcy5fc2VsZWN0LndyaXRlVmFsdWUodGhpcy5fc2VsZWN0LnZhbHVlKSk6dGhpcy5fc2V0RWxlbWVudFZhbHVlKHQpfV9zZXRFbGVtZW50VmFsdWUodCl7dGhpcy5fcmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LCJ2YWx1ZSIsdCl9X3NldFNlbGVjdGVkKHQpe3RoaXMuX3JlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudCwic2VsZWN0ZWQiLHQpfW5nT25EZXN0cm95KCl7dGhpcy5fc2VsZWN0JiYodGhpcy5fc2VsZWN0Ll9vcHRpb25NYXAuZGVsZXRlKHRoaXMuaWQpLHRoaXMuX3NlbGVjdC53cml0ZVZhbHVlKHRoaXMuX3NlbGVjdC52YWx1ZSkpfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmZ1bmN0aW9uIEFHKHQpe3JldHVybiJudW1iZXIiPT10eXBlb2YgdD90OnBhcnNlSW50KHQsMTApfUVHLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxFRykoZ2YoS2gpLGdmKCRoKSxnZihSRyw5KSl9LEVHLsm1ZGlyPWhvKHt0eXBlOkVHLHNlbGVjdG9yczpbWyJvcHRpb24iXV0saW5wdXRzOntuZ1ZhbHVlOiJuZ1ZhbHVlIix2YWx1ZToidmFsdWUifX0pLEVHLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6S2h9LHt0eXBlOiRofSx7dHlwZTpSRyxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6VXJ9XX1dLEVHLnByb3BEZWNvcmF0b3JzPXtuZ1ZhbHVlOlt7dHlwZTpSXyxhcmdzOlsibmdWYWx1ZSJdfV0sdmFsdWU6W3t0eXBlOlJfLGFyZ3M6WyJ2YWx1ZSJdfV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoRUcsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3Rvcjoib3B0aW9uIn1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOktofSx7dHlwZTokaH0se3R5cGU6UkcsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOlVyfV19XX0pLHtuZ1ZhbHVlOlt7dHlwZTpSXyxhcmdzOlsibmdWYWx1ZSJdfV0sdmFsdWU6W3t0eXBlOlJfLGFyZ3M6WyJ2YWx1ZSJdfV19KTtjbGFzcyBUR3tjb25zdHJ1Y3Rvcigpe3RoaXMuX3ZhbGlkYXRvcj1VVX1oYW5kbGVDaGFuZ2VzKHQpe2lmKHRoaXMuaW5wdXROYW1lIGluIHQpe2NvbnN0IGU9dGhpcy5ub3JtYWxpemVJbnB1dCh0W3RoaXMuaW5wdXROYW1lXS5jdXJyZW50VmFsdWUpO3RoaXMuX3ZhbGlkYXRvcj10aGlzLmNyZWF0ZVZhbGlkYXRvcihlKSx0aGlzLl9vbkNoYW5nZSYmdGhpcy5fb25DaGFuZ2UoKX19dmFsaWRhdGUodCl7cmV0dXJuIHRoaXMuX3ZhbGlkYXRvcih0KX1yZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlKHQpe3RoaXMuX29uQ2hhbmdlPXR9fVRHLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxURyl9LFRHLsm1ZGlyPWhvKHt0eXBlOlRHfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihURyxbe3R5cGU6a199XSwoZnVuY3Rpb24oKXtyZXR1cm5bXX0pLG51bGwpO2NvbnN0IE5HPXtwcm92aWRlOkVVLHVzZUV4aXN0aW5nOiRlKCgoKT0+ekcpKSxtdWx0aTohMH07Y2xhc3MgekcgZXh0ZW5kcyBUR3tjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5pbnB1dE5hbWU9Im1heCIsdGhpcy5ub3JtYWxpemVJbnB1dD10PT5wYXJzZUZsb2F0KHQpLHRoaXMuY3JlYXRlVmFsaWRhdG9yPXQ9PklVKHQpfW5nT25DaGFuZ2VzKHQpe3RoaXMuaGFuZGxlQ2hhbmdlcyh0KX19ekcuybVmYWM9KGZ1bmN0aW9uKCl7bGV0IHQ7cmV0dXJuIGZ1bmN0aW9uIGUobil7cmV0dXJuKHR8fCh0PVVhKHpHKSkpKG58fHpHKX19KSgpLHpHLsm1ZGlyPWhvKHt0eXBlOnpHLHNlbGVjdG9yczpbWyJpbnB1dCIsInR5cGUiLCJudW1iZXIiLCJtYXgiLCIiLCJmb3JtQ29udHJvbE5hbWUiLCIiXSxbImlucHV0IiwidHlwZSIsIm51bWJlciIsIm1heCIsIiIsImZvcm1Db250cm9sIiwiIl0sWyJpbnB1dCIsInR5cGUiLCJudW1iZXIiLCJtYXgiLCIiLCJuZ01vZGVsIiwiIl1dLGhvc3RWYXJzOjEsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXtpZigyJmUpe2xldCB0O3ltKCJtYXgiLG51bGwhPT0odD1uLm1heCkmJnZvaWQgMCE9PXQ/dDpudWxsKX19LGlucHV0czp7bWF4OiJtYXgifSxmZWF0dXJlczpbamgoW05HXSksUXAscW9dfSksekcucHJvcERlY29yYXRvcnM9e21heDpbe3R5cGU6Ul99XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih6Ryxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJpbnB1dFt0eXBlPW51bWJlcl1bbWF4XVtmb3JtQ29udHJvbE5hbWVdLGlucHV0W3R5cGU9bnVtYmVyXVttYXhdW2Zvcm1Db250cm9sXSxpbnB1dFt0eXBlPW51bWJlcl1bbWF4XVtuZ01vZGVsXSIscHJvdmlkZXJzOltOR10saG9zdDp7IlthdHRyLm1heF0iOiJtYXggPz8gbnVsbCJ9fV19XSxudWxsLHttYXg6W3t0eXBlOlJffV19KTtjb25zdCBJRz17cHJvdmlkZTpFVSx1c2VFeGlzdGluZzokZSgoKCk9PkhHKSksbXVsdGk6ITB9O2NsYXNzIEhHIGV4dGVuZHMgVEd7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuaW5wdXROYW1lPSJtaW4iLHRoaXMubm9ybWFsaXplSW5wdXQ9dD0+cGFyc2VGbG9hdCh0KSx0aGlzLmNyZWF0ZVZhbGlkYXRvcj10PT56VSh0KX1uZ09uQ2hhbmdlcyh0KXt0aGlzLmhhbmRsZUNoYW5nZXModCl9fUhHLsm1ZmFjPShmdW5jdGlvbigpe2xldCB0O3JldHVybiBmdW5jdGlvbiBlKG4pe3JldHVybih0fHwodD1VYShIRykpKShufHxIRyl9fSkoKSxIRy7JtWRpcj1obyh7dHlwZTpIRyxzZWxlY3RvcnM6W1siaW5wdXQiLCJ0eXBlIiwibnVtYmVyIiwibWluIiwiIiwiZm9ybUNvbnRyb2xOYW1lIiwiIl0sWyJpbnB1dCIsInR5cGUiLCJudW1iZXIiLCJtaW4iLCIiLCJmb3JtQ29udHJvbCIsIiJdLFsiaW5wdXQiLCJ0eXBlIiwibnVtYmVyIiwibWluIiwiIiwibmdNb2RlbCIsIiJdXSxob3N0VmFyczoxLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7aWYoMiZlKXtsZXQgdDt5bSgibWluIixudWxsIT09KHQ9bi5taW4pJiZ2b2lkIDAhPT10P3Q6bnVsbCl9fSxpbnB1dHM6e21pbjoibWluIn0sZmVhdHVyZXM6W2poKFtJR10pLFFwLHFvXX0pLEhHLnByb3BEZWNvcmF0b3JzPXttaW46W3t0eXBlOlJffV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoSEcsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiaW5wdXRbdHlwZT1udW1iZXJdW21pbl1bZm9ybUNvbnRyb2xOYW1lXSxpbnB1dFt0eXBlPW51bWJlcl1bbWluXVtmb3JtQ29udHJvbF0saW5wdXRbdHlwZT1udW1iZXJdW21pbl1bbmdNb2RlbF0iLHByb3ZpZGVyczpbSUddLGhvc3Q6eyJbYXR0ci5taW5dIjoibWluID8/IG51bGwifX1dfV0sbnVsbCx7bWluOlt7dHlwZTpSX31dfSk7Y29uc3QgRkc9e3Byb3ZpZGU6RVUsdXNlRXhpc3Rpbmc6JGUoKCgpPT5CRykpLG11bHRpOiEwfSxMRz17cHJvdmlkZTpFVSx1c2VFeGlzdGluZzokZSgoKCk9PlZHKSksbXVsdGk6ITB9O2NsYXNzIEJHe2NvbnN0cnVjdG9yKCl7dGhpcy5fcmVxdWlyZWQ9ITF9Z2V0IHJlcXVpcmVkKCl7cmV0dXJuIHRoaXMuX3JlcXVpcmVkfXNldCByZXF1aXJlZCh0KXt0aGlzLl9yZXF1aXJlZD1udWxsIT10JiYhMSE9PXQmJiJmYWxzZSIhPWAke3R9YCx0aGlzLl9vbkNoYW5nZSYmdGhpcy5fb25DaGFuZ2UoKX12YWxpZGF0ZSh0KXtyZXR1cm4gdGhpcy5yZXF1aXJlZD9IVSh0KTpudWxsfXJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UodCl7dGhpcy5fb25DaGFuZ2U9dH19QkcuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEJHKX0sQkcuybVkaXI9aG8oe3R5cGU6Qkcsc2VsZWN0b3JzOltbIiIsInJlcXVpcmVkIiwiIiwiZm9ybUNvbnRyb2xOYW1lIiwiIiwzLCJ0eXBlIiwiY2hlY2tib3giXSxbIiIsInJlcXVpcmVkIiwiIiwiZm9ybUNvbnRyb2wiLCIiLDMsInR5cGUiLCJjaGVja2JveCJdLFsiIiwicmVxdWlyZWQiLCIiLCJuZ01vZGVsIiwiIiwzLCJ0eXBlIiwiY2hlY2tib3giXV0saG9zdFZhcnM6MSxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezImZSYmeW0oInJlcXVpcmVkIixuLnJlcXVpcmVkPyIiOm51bGwpfSxpbnB1dHM6e3JlcXVpcmVkOiJyZXF1aXJlZCJ9LGZlYXR1cmVzOltqaChbRkddKV19KSxCRy5wcm9wRGVjb3JhdG9ycz17cmVxdWlyZWQ6W3t0eXBlOlJffV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoQkcsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiOm5vdChbdHlwZT1jaGVja2JveF0pW3JlcXVpcmVkXVtmb3JtQ29udHJvbE5hbWVdLDpub3QoW3R5cGU9Y2hlY2tib3hdKVtyZXF1aXJlZF1bZm9ybUNvbnRyb2xdLDpub3QoW3R5cGU9Y2hlY2tib3hdKVtyZXF1aXJlZF1bbmdNb2RlbF0iLHByb3ZpZGVyczpbRkddLGhvc3Q6eyJbYXR0ci5yZXF1aXJlZF0iOidyZXF1aXJlZCA/ICIiIDogbnVsbCd9fV19XSwoZnVuY3Rpb24oKXtyZXR1cm5bXX0pLHtyZXF1aXJlZDpbe3R5cGU6Ul99XX0pO2NsYXNzIFZHIGV4dGVuZHMgQkd7dmFsaWRhdGUodCl7cmV0dXJuIHRoaXMucmVxdWlyZWQ/RlUodCk6bnVsbH19VkcuybVmYWM9KGZ1bmN0aW9uKCl7bGV0IHQ7cmV0dXJuIGZ1bmN0aW9uIGUobil7cmV0dXJuKHR8fCh0PVVhKFZHKSkpKG58fFZHKX19KSgpLFZHLsm1ZGlyPWhvKHt0eXBlOlZHLHNlbGVjdG9yczpbWyJpbnB1dCIsInR5cGUiLCJjaGVja2JveCIsInJlcXVpcmVkIiwiIiwiZm9ybUNvbnRyb2xOYW1lIiwiIl0sWyJpbnB1dCIsInR5cGUiLCJjaGVja2JveCIsInJlcXVpcmVkIiwiIiwiZm9ybUNvbnRyb2wiLCIiXSxbImlucHV0IiwidHlwZSIsImNoZWNrYm94IiwicmVxdWlyZWQiLCIiLCJuZ01vZGVsIiwiIl1dLGhvc3RWYXJzOjEsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsyJmUmJnltKCJyZXF1aXJlZCIsbi5yZXF1aXJlZD8iIjpudWxsKX0sZmVhdHVyZXM6W2poKFtMR10pLFFwXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoVkcsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiaW5wdXRbdHlwZT1jaGVja2JveF1bcmVxdWlyZWRdW2Zvcm1Db250cm9sTmFtZV0saW5wdXRbdHlwZT1jaGVja2JveF1bcmVxdWlyZWRdW2Zvcm1Db250cm9sXSxpbnB1dFt0eXBlPWNoZWNrYm94XVtyZXF1aXJlZF1bbmdNb2RlbF0iLHByb3ZpZGVyczpbTEddLGhvc3Q6eyJbYXR0ci5yZXF1aXJlZF0iOidyZXF1aXJlZCA/ICIiIDogbnVsbCd9fV19XSxudWxsLG51bGwpO2NvbnN0IGpHPXtwcm92aWRlOkVVLHVzZUV4aXN0aW5nOiRlKCgoKT0+VUcpKSxtdWx0aTohMH07Y2xhc3MgVUd7Y29uc3RydWN0b3IoKXt0aGlzLl9lbmFibGVkPSExfXNldCBlbWFpbCh0KXt0aGlzLl9lbmFibGVkPSIiPT09dHx8ITA9PT10fHwidHJ1ZSI9PT10LHRoaXMuX29uQ2hhbmdlJiZ0aGlzLl9vbkNoYW5nZSgpfXZhbGlkYXRlKHQpe3JldHVybiB0aGlzLl9lbmFibGVkP0xVKHQpOm51bGx9cmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZSh0KXt0aGlzLl9vbkNoYW5nZT10fX1VRy7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8VUcpfSxVRy7JtWRpcj1obyh7dHlwZTpVRyxzZWxlY3RvcnM6W1siIiwiZW1haWwiLCIiLCJmb3JtQ29udHJvbE5hbWUiLCIiXSxbIiIsImVtYWlsIiwiIiwiZm9ybUNvbnRyb2wiLCIiXSxbIiIsImVtYWlsIiwiIiwibmdNb2RlbCIsIiJdXSxpbnB1dHM6e2VtYWlsOiJlbWFpbCJ9LGZlYXR1cmVzOltqaChbakddKV19KSxVRy5wcm9wRGVjb3JhdG9ycz17ZW1haWw6W3t0eXBlOlJffV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoVUcsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW2VtYWlsXVtmb3JtQ29udHJvbE5hbWVdLFtlbWFpbF1bZm9ybUNvbnRyb2xdLFtlbWFpbF1bbmdNb2RlbF0iLHByb3ZpZGVyczpbakddfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5bXX0pLHtlbWFpbDpbe3R5cGU6Ul99XX0pO2NvbnN0IFdHPXtwcm92aWRlOkVVLHVzZUV4aXN0aW5nOiRlKCgoKT0+R0cpKSxtdWx0aTohMH07Y2xhc3MgR0d7Y29uc3RydWN0b3IoKXt0aGlzLl92YWxpZGF0b3I9VVV9bmdPbkNoYW5nZXModCl7Im1pbmxlbmd0aCJpbiB0JiYodGhpcy5fY3JlYXRlVmFsaWRhdG9yKCksdGhpcy5fb25DaGFuZ2UmJnRoaXMuX29uQ2hhbmdlKCkpfXZhbGlkYXRlKHQpe3JldHVybiB0aGlzLmVuYWJsZWQoKT90aGlzLl92YWxpZGF0b3IodCk6bnVsbH1yZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlKHQpe3RoaXMuX29uQ2hhbmdlPXR9X2NyZWF0ZVZhbGlkYXRvcigpe3RoaXMuX3ZhbGlkYXRvcj10aGlzLmVuYWJsZWQoKT9CVShBRyh0aGlzLm1pbmxlbmd0aCkpOlVVfWVuYWJsZWQoKXtyZXR1cm4gbnVsbCE9dGhpcy5taW5sZW5ndGh9fUdHLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxHRyl9LEdHLsm1ZGlyPWhvKHt0eXBlOkdHLHNlbGVjdG9yczpbWyIiLCJtaW5sZW5ndGgiLCIiLCJmb3JtQ29udHJvbE5hbWUiLCIiXSxbIiIsIm1pbmxlbmd0aCIsIiIsImZvcm1Db250cm9sIiwiIl0sWyIiLCJtaW5sZW5ndGgiLCIiLCJuZ01vZGVsIiwiIl1dLGhvc3RWYXJzOjEsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsyJmUmJnltKCJtaW5sZW5ndGgiLG4uZW5hYmxlZCgpP24ubWlubGVuZ3RoOm51bGwpfSxpbnB1dHM6e21pbmxlbmd0aDoibWlubGVuZ3RoIn0sZmVhdHVyZXM6W2poKFtXR10pLHFvXX0pLEdHLnByb3BEZWNvcmF0b3JzPXttaW5sZW5ndGg6W3t0eXBlOlJffV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoR0csW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW21pbmxlbmd0aF1bZm9ybUNvbnRyb2xOYW1lXSxbbWlubGVuZ3RoXVtmb3JtQ29udHJvbF0sW21pbmxlbmd0aF1bbmdNb2RlbF0iLHByb3ZpZGVyczpbV0ddLGhvc3Q6eyJbYXR0ci5taW5sZW5ndGhdIjoiZW5hYmxlZCgpID8gbWlubGVuZ3RoIDogbnVsbCJ9fV19XSwoZnVuY3Rpb24oKXtyZXR1cm5bXX0pLHttaW5sZW5ndGg6W3t0eXBlOlJffV19KTtjb25zdCBZRz17cHJvdmlkZTpFVSx1c2VFeGlzdGluZzokZSgoKCk9PnFHKSksbXVsdGk6ITB9O2NsYXNzIHFHe2NvbnN0cnVjdG9yKCl7dGhpcy5fdmFsaWRhdG9yPVVVfW5nT25DaGFuZ2VzKHQpeyJtYXhsZW5ndGgiaW4gdCYmKHRoaXMuX2NyZWF0ZVZhbGlkYXRvcigpLHRoaXMuX29uQ2hhbmdlJiZ0aGlzLl9vbkNoYW5nZSgpKX12YWxpZGF0ZSh0KXtyZXR1cm4gdGhpcy5lbmFibGVkKCk/dGhpcy5fdmFsaWRhdG9yKHQpOm51bGx9cmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZSh0KXt0aGlzLl9vbkNoYW5nZT10fV9jcmVhdGVWYWxpZGF0b3IoKXt0aGlzLl92YWxpZGF0b3I9dGhpcy5lbmFibGVkKCk/VlUoQUcodGhpcy5tYXhsZW5ndGgpKTpVVX1lbmFibGVkKCl7cmV0dXJuIG51bGwhPXRoaXMubWF4bGVuZ3RofX1xRy7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8cUcpfSxxRy7JtWRpcj1obyh7dHlwZTpxRyxzZWxlY3RvcnM6W1siIiwibWF4bGVuZ3RoIiwiIiwiZm9ybUNvbnRyb2xOYW1lIiwiIl0sWyIiLCJtYXhsZW5ndGgiLCIiLCJmb3JtQ29udHJvbCIsIiJdLFsiIiwibWF4bGVuZ3RoIiwiIiwibmdNb2RlbCIsIiJdXSxob3N0VmFyczoxLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MiZlJiZ5bSgibWF4bGVuZ3RoIixuLmVuYWJsZWQoKT9uLm1heGxlbmd0aDpudWxsKX0saW5wdXRzOnttYXhsZW5ndGg6Im1heGxlbmd0aCJ9LGZlYXR1cmVzOltqaChbWUddKSxxb119KSxxRy5wcm9wRGVjb3JhdG9ycz17bWF4bGVuZ3RoOlt7dHlwZTpSX31dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHFHLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6IlttYXhsZW5ndGhdW2Zvcm1Db250cm9sTmFtZV0sW21heGxlbmd0aF1bZm9ybUNvbnRyb2xdLFttYXhsZW5ndGhdW25nTW9kZWxdIixwcm92aWRlcnM6W1lHXSxob3N0OnsiW2F0dHIubWF4bGVuZ3RoXSI6ImVuYWJsZWQoKSA/IG1heGxlbmd0aCA6IG51bGwifX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW119KSx7bWF4bGVuZ3RoOlt7dHlwZTpSX31dfSk7Y29uc3QgWkc9e3Byb3ZpZGU6RVUsdXNlRXhpc3Rpbmc6JGUoKCgpPT5YRykpLG11bHRpOiEwfTtjbGFzcyBYR3tjb25zdHJ1Y3Rvcigpe3RoaXMuX3ZhbGlkYXRvcj1VVX1uZ09uQ2hhbmdlcyh0KXsicGF0dGVybiJpbiB0JiYodGhpcy5fY3JlYXRlVmFsaWRhdG9yKCksdGhpcy5fb25DaGFuZ2UmJnRoaXMuX29uQ2hhbmdlKCkpfXZhbGlkYXRlKHQpe3JldHVybiB0aGlzLl92YWxpZGF0b3IodCl9cmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZSh0KXt0aGlzLl9vbkNoYW5nZT10fV9jcmVhdGVWYWxpZGF0b3IoKXt0aGlzLl92YWxpZGF0b3I9alUodGhpcy5wYXR0ZXJuKX19WEcuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFhHKX0sWEcuybVkaXI9aG8oe3R5cGU6WEcsc2VsZWN0b3JzOltbIiIsInBhdHRlcm4iLCIiLCJmb3JtQ29udHJvbE5hbWUiLCIiXSxbIiIsInBhdHRlcm4iLCIiLCJmb3JtQ29udHJvbCIsIiJdLFsiIiwicGF0dGVybiIsIiIsIm5nTW9kZWwiLCIiXV0saG9zdFZhcnM6MSxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezImZSYmeW0oInBhdHRlcm4iLG4ucGF0dGVybj9uLnBhdHRlcm46bnVsbCl9LGlucHV0czp7cGF0dGVybjoicGF0dGVybiJ9LGZlYXR1cmVzOltqaChbWkddKSxxb119KSxYRy5wcm9wRGVjb3JhdG9ycz17cGF0dGVybjpbe3R5cGU6Ul99XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihYRyxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJbcGF0dGVybl1bZm9ybUNvbnRyb2xOYW1lXSxbcGF0dGVybl1bZm9ybUNvbnRyb2xdLFtwYXR0ZXJuXVtuZ01vZGVsXSIscHJvdmlkZXJzOltaR10saG9zdDp7IlthdHRyLnBhdHRlcm5dIjoicGF0dGVybiA/IHBhdHRlcm4gOiBudWxsIn19XX1dLChmdW5jdGlvbigpe3JldHVybltdfSkse3BhdHRlcm46W3t0eXBlOlJffV19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IEtHPVtvRyxrRyxFRyxTVSxhRyxwRyxQVSx3RyxSRyxjRyxtVyxmVyxCRyxHRyxxRyxYRyxWRyxVRyxIRyx6R10sSkc9W25HLCRXLFhXXSxRRz1bdUcsaEcseEcseUcsQ0ddO2NsYXNzICRHe30kRy7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8JEcpfSwkRy7JtW1vZD1mbyh7dHlwZTokR30pLCRHLsm1aW5qPURuKHtpbXBvcnRzOltbc0ddXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoJEcsW3t0eXBlOkxfLGFyZ3M6W3tkZWNsYXJhdGlvbnM6S0csaW1wb3J0czpbc0ddLGV4cG9ydHM6S0d9XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1bygkRyx7ZGVjbGFyYXRpb25zOltvRyxrRyxFRyxTVSxhRyxwRyxQVSx3RyxSRyxjRyxtVyxmVyxCRyxHRyxxRyxYRyxWRyxVRyxIRyx6R10saW1wb3J0czpbc0ddLGV4cG9ydHM6W29HLGtHLEVHLFNVLGFHLHBHLFBVLHdHLFJHLGNHLG1XLGZXLEJHLEdHLHFHLFhHLFZHLFVHLEhHLHpHXX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgdFl7fXRZLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx0WSl9LHRZLsm1bW9kPWZvKHt0eXBlOnRZfSksdFkuybVpbmo9RG4oe2ltcG9ydHM6WyRHXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIodFksW3t0eXBlOkxfLGFyZ3M6W3tkZWNsYXJhdGlvbnM6SkcsZXhwb3J0czpbJEcsSkddfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8odFkse2RlY2xhcmF0aW9uczpbbkcsJFcsWFddLGV4cG9ydHM6WyRHLG5HLCRXLFhXXX0pO2NsYXNzIGVZe3N0YXRpYyB3aXRoQ29uZmlnKHQpe3JldHVybntuZ01vZHVsZTplWSxwcm92aWRlcnM6W3twcm92aWRlOm1HLHVzZVZhbHVlOnQud2Fybk9uTmdNb2RlbFdpdGhGb3JtQ29udHJvbH1dfX19ZVkuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGVZKX0sZVkuybVtb2Q9Zm8oe3R5cGU6ZVl9KSxlWS7JtWluaj1Ebih7aW1wb3J0czpbJEddfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihlWSxbe3R5cGU6TF8sYXJnczpbe2RlY2xhcmF0aW9uczpbUUddLGV4cG9ydHM6WyRHLFFHXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKGVZLHtkZWNsYXJhdGlvbnM6W3VHLGhHLHhHLHlHLENHXSxleHBvcnRzOlskRyx1RyxoRyx4Ryx5RyxDR119KTtjbGFzcyBuWXtncm91cCh0LGU9bnVsbCl7Y29uc3Qgbj10aGlzLl9yZWR1Y2VDb250cm9scyh0KTtsZXQgbyxpPW51bGwsYT1udWxsO3JldHVybiBudWxsIT1lJiYoISgKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmZ1bmN0aW9uIHIodCl7cmV0dXJuIHZvaWQgMCE9PXQuYXN5bmNWYWxpZGF0b3JzfHx2b2lkIDAhPT10LnZhbGlkYXRvcnN8fHZvaWQgMCE9PXQudXBkYXRlT259KShlKT8oaT1udWxsIT1lLnZhbGlkYXRvcj9lLnZhbGlkYXRvcjpudWxsLGE9bnVsbCE9ZS5hc3luY1ZhbGlkYXRvcj9lLmFzeW5jVmFsaWRhdG9yOm51bGwpOihpPW51bGwhPWUudmFsaWRhdG9ycz9lLnZhbGlkYXRvcnM6bnVsbCxhPW51bGwhPWUuYXN5bmNWYWxpZGF0b3JzP2UuYXN5bmNWYWxpZGF0b3JzOm51bGwsbz1udWxsIT1lLnVwZGF0ZU9uP2UudXBkYXRlT246dm9pZCAwKSksbmV3IEdXKG4se2FzeW5jVmFsaWRhdG9yczphLHVwZGF0ZU9uOm8sdmFsaWRhdG9yczppfSl9Y29udHJvbCh0LGUsbil7cmV0dXJuIG5ldyBXVyh0LGUsbil9YXJyYXkodCxlLG4pe2NvbnN0IG89dC5tYXAoKHQ9PnRoaXMuX2NyZWF0ZUNvbnRyb2wodCkpKTtyZXR1cm4gbmV3IFlXKG8sZSxuKX1fcmVkdWNlQ29udHJvbHModCl7Y29uc3QgZT17fTtyZXR1cm4gT2JqZWN0LmtleXModCkuZm9yRWFjaCgobj0+e2Vbbl09dGhpcy5fY3JlYXRlQ29udHJvbCh0W25dKX0pKSxlfV9jcmVhdGVDb250cm9sKHQpe2lmKHQgaW5zdGFuY2VvZiBXV3x8dCBpbnN0YW5jZW9mIEdXfHx0IGluc3RhbmNlb2YgWVcpcmV0dXJuIHQ7aWYoQXJyYXkuaXNBcnJheSh0KSl7cmV0dXJuIHRoaXMuY29udHJvbCh0WzBdLHQubGVuZ3RoPjE/dFsxXTpudWxsLHQubGVuZ3RoPjI/dFsyXTpudWxsKX1yZXR1cm4gdGhpcy5jb250cm9sKHQpfX1uWS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8blkpfSxuWS7JtXByb3Y9U24oe2ZhY3Rvcnk6ZnVuY3Rpb24gdCgpe3JldHVybiBuZXcgbll9LHRva2VuOm5ZLHByb3ZpZGVkSW46ZVl9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKG5ZLFt7dHlwZTpVbSxhcmdzOlt7cHJvdmlkZWRJbjplWX1dfV0sbnVsbCxudWxsKSwKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCm5ldyBvYigiMTIuMi4xIik7Y29uc3Qgb1k9WyJ0cmlnZ2VyIl0saVk9WyJwYW5lbCJdO2Z1bmN0aW9uIGFZKHQsZSl7aWYoMSZ0JiYoQ2YoMCwic3BhbiIsOCksUHUoMSksTWYoKSksMiZ0KXtjb25zdCB0PXpmKCk7RGMoMSksd3UodC5wbGFjZWhvbGRlcil9fWZ1bmN0aW9uIHJZKHQsZSl7aWYoMSZ0JiYoQ2YoMCwic3BhbiIsMTIpLFB1KDEpLE1mKCkpLDImdCl7Y29uc3QgdD16ZigyKTtEYygxKSx3dSh0LnRyaWdnZXJWYWx1ZSl9fWZ1bmN0aW9uIHNZKHQsZSl7MSZ0JiZGZigwLDAsWyIqbmdTd2l0Y2hDYXNlIiwidHJ1ZSJdKX1mdW5jdGlvbiBsWSh0LGUpe2lmKDEmdCYmKENmKDAsInNwYW4iLDkpLEhtKDEsclksMiwxLCJzcGFuIiwxMCksSG0oMixzWSwxLDAsIm5nLWNvbnRlbnQiLDExKSxNZigpKSwyJnQpe2JmKCJuZ1N3aXRjaCIsISF6ZigpLmN1c3RvbVRyaWdnZXIpLERjKDIpLGJmKCJuZ1N3aXRjaENhc2UiLCEwKX19ZnVuY3Rpb24gY1kodCxlKXtpZigxJnQpe2NvbnN0IHQ9d2YoKTtDZigwLCJkaXYiLDEzKSxDZigxLCJkaXYiLDE0LDE1KSxSZigiQHRyYW5zZm9ybVBhbmVsLmRvbmUiLChmdW5jdGlvbiBlKG4pe1BpKHQpO3JldHVybiB6ZigpLl9wYW5lbERvbmVBbmltYXRpbmdTdHJlYW0ubmV4dChuLnRvU3RhdGUpfSkpKCJrZXlkb3duIiwoZnVuY3Rpb24gZShuKXtQaSh0KTtyZXR1cm4gemYoKS5faGFuZGxlS2V5ZG93bihuKX0pKSxGZigzLDEpLE1mKCksTWYoKX1pZigyJnQpe2NvbnN0IHQ9emYoKTtiZigiQHRyYW5zZm9ybVBhbmVsV3JhcCIsdm9pZCAwKSxEYygxKSxJdSgibWF0LXNlbGVjdC1wYW5lbCAiLHQuX2dldFBhbmVsVGhlbWUoKSwiIiksbHUoInRyYW5zZm9ybS1vcmlnaW4iLHQuX3RyYW5zZm9ybU9yaWdpbikoImZvbnQtc2l6ZSIsdC5fdHJpZ2dlckZvbnRTaXplLCJweCIpLGJmKCJuZ0NsYXNzIix0LnBhbmVsQ2xhc3MpKCJAdHJhbnNmb3JtUGFuZWwiLHQubXVsdGlwbGU/InNob3dpbmctbXVsdGlwbGUiOiJzaG93aW5nIikseW0oImlkIix0LmlkKyItcGFuZWwiKSgiYXJpYS1tdWx0aXNlbGVjdGFibGUiLHQubXVsdGlwbGUpKCJhcmlhLWxhYmVsIix0LmFyaWFMYWJlbHx8bnVsbCkoImFyaWEtbGFiZWxsZWRieSIsdC5fZ2V0UGFuZWxBcmlhTGFiZWxsZWRieSgpKX19Y29uc3QgZFk9W1tbIm1hdC1zZWxlY3QtdHJpZ2dlciJdXSwiKiJdLHBZPXt0cmFuc2Zvcm1QYW5lbFdyYXA6eE8oInRyYW5zZm9ybVBhbmVsV3JhcCIsW0RPKCIqID0+IHZvaWQiLEVPKCJAdHJhbnNmb3JtUGFuZWwiLFtSTygpXSx7b3B0aW9uYWw6ITB9KSldKSx0cmFuc2Zvcm1QYW5lbDp4TygidHJhbnNmb3JtUGFuZWwiLFtrTygidm9pZCIsd08oe3RyYW5zZm9ybToic2NhbGVZKDAuOCkiLG1pbldpZHRoOiIxMDAlIixvcGFjaXR5OjB9KSksa08oInNob3dpbmciLHdPKHtvcGFjaXR5OjEsbWluV2lkdGg6ImNhbGMoMTAwJSArIDMycHgpIix0cmFuc2Zvcm06InNjYWxlWSgxKSJ9KSksa08oInNob3dpbmctbXVsdGlwbGUiLHdPKHtvcGFjaXR5OjEsbWluV2lkdGg6ImNhbGMoMTAwJSArIDY0cHgpIix0cmFuc2Zvcm06InNjYWxlWSgxKSJ9KSksRE8oInZvaWQgPT4gKiIsT08oIjEyMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpIikpLERPKCIqID0+IHZvaWQiLE9PKCIxMDBtcyAyNW1zIGxpbmVhciIsd08oe29wYWNpdHk6MH0pKSldKX07Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpsZXQgbVk9MDtjb25zdCBmWT0yNTYsdVk9MTYsZ1k9bmV3IGVyKCJtYXQtc2VsZWN0LXNjcm9sbC1zdHJhdGVneSIpO2NvbnN0IGhZPW5ldyBlcigiTUFUX1NFTEVDVF9DT05GSUciKSxiWT17cHJvdmlkZTpnWSxkZXBzOltLQl0sdXNlRmFjdG9yeTpmdW5jdGlvbiB5WSh0KXtyZXR1cm4oKT0+dC5zY3JvbGxTdHJhdGVnaWVzLnJlcG9zaXRpb24oKX19O2NsYXNzIF9Ze2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5zb3VyY2U9dCx0aGlzLnZhbHVlPWV9fWNvbnN0IENZPUhGKEZGKHpGKExGKGNsYXNze2NvbnN0cnVjdG9yKHQsZSxuLG8saSl7dGhpcy5fZWxlbWVudFJlZj10LHRoaXMuX2RlZmF1bHRFcnJvclN0YXRlTWF0Y2hlcj1lLHRoaXMuX3BhcmVudEZvcm09bix0aGlzLl9wYXJlbnRGb3JtR3JvdXA9byx0aGlzLm5nQ29udHJvbD1pfX0pKSkpLE1ZPW5ldyBlcigiTWF0U2VsZWN0VHJpZ2dlciIpO2NsYXNzIHZZe312WS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8dlkpfSx2WS7JtWRpcj1obyh7dHlwZTp2WSxzZWxlY3RvcnM6W1sibWF0LXNlbGVjdC10cmlnZ2VyIl1dLGZlYXR1cmVzOltqaChbe3Byb3ZpZGU6TVksdXNlRXhpc3Rpbmc6dll9XSldfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih2WSxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJtYXQtc2VsZWN0LXRyaWdnZXIiLHByb3ZpZGVyczpbe3Byb3ZpZGU6TVksdXNlRXhpc3Rpbmc6dll9XX1dfV0sbnVsbCxudWxsKTtjbGFzcyB4WSBleHRlbmRzIENZe2NvbnN0cnVjdG9yKHQsZSxuLG8saSxhLHIscyxsLGMsZCxwLG0sZil7dmFyIHUsZyxoO3N1cGVyKGksbyxyLHMsYyksdGhpcy5fdmlld3BvcnRSdWxlcj10LHRoaXMuX2NoYW5nZURldGVjdG9yUmVmPWUsdGhpcy5fbmdab25lPW4sdGhpcy5fZGlyPWEsdGhpcy5fcGFyZW50Rm9ybUZpZWxkPWwsdGhpcy5fbGl2ZUFubm91bmNlcj1tLHRoaXMuX2RlZmF1bHRPcHRpb25zPWYsdGhpcy5fcGFuZWxPcGVuPSExLHRoaXMuX2NvbXBhcmVXaXRoPSh0LGUpPT50PT09ZSx0aGlzLl91aWQ9Im1hdC1zZWxlY3QtIittWSsrLHRoaXMuX3RyaWdnZXJBcmlhTGFiZWxsZWRCeT1udWxsLHRoaXMuX2Rlc3Ryb3k9bmV3IEIsdGhpcy5fb25DaGFuZ2U9KCk9Pnt9LHRoaXMuX29uVG91Y2hlZD0oKT0+e30sdGhpcy5fdmFsdWVJZD0ibWF0LXNlbGVjdC12YWx1ZS0iK21ZKyssdGhpcy5fcGFuZWxEb25lQW5pbWF0aW5nU3RyZWFtPW5ldyBCLHRoaXMuX292ZXJsYXlQYW5lbENsYXNzPShudWxsPT09KHU9dGhpcy5fZGVmYXVsdE9wdGlvbnMpfHx2b2lkIDA9PT11P3ZvaWQgMDp1Lm92ZXJsYXlQYW5lbENsYXNzKXx8IiIsdGhpcy5fZm9jdXNlZD0hMSx0aGlzLmNvbnRyb2xUeXBlPSJtYXQtc2VsZWN0Iix0aGlzLl9yZXF1aXJlZD0hMSx0aGlzLl9tdWx0aXBsZT0hMSx0aGlzLl9kaXNhYmxlT3B0aW9uQ2VudGVyaW5nPW51bGwhPT0oaD1udWxsPT09KGc9dGhpcy5fZGVmYXVsdE9wdGlvbnMpfHx2b2lkIDA9PT1nP3ZvaWQgMDpnLmRpc2FibGVPcHRpb25DZW50ZXJpbmcpJiZ2b2lkIDAhPT1oJiZoLHRoaXMuYXJpYUxhYmVsPSIiLHRoaXMub3B0aW9uU2VsZWN0aW9uQ2hhbmdlcz1vZSgoKCk9Pntjb25zdCB0PXRoaXMub3B0aW9ucztyZXR1cm4gdD90LmNoYW5nZXMucGlwZShCZSh0KSxWZSgoKCk9PnBlKC4uLnQubWFwKCh0PT50Lm9uU2VsZWN0aW9uQ2hhbmdlKSkpKSkpOnRoaXMuX25nWm9uZS5vblN0YWJsZS5waXBlKHZlKDEpLFZlKCgoKT0+dGhpcy5vcHRpb25TZWxlY3Rpb25DaGFuZ2VzKSkpfSkpLHRoaXMub3BlbmVkQ2hhbmdlPW5ldyBTeSx0aGlzLl9vcGVuZWRTdHJlYW09dGhpcy5vcGVuZWRDaGFuZ2UucGlwZSh1ZSgodD0+dCkpLFZ0KCgoKT0+e30pKSksdGhpcy5fY2xvc2VkU3RyZWFtPXRoaXMub3BlbmVkQ2hhbmdlLnBpcGUodWUoKHQ9PiF0KSksVnQoKCgpPT57fSkpKSx0aGlzLnNlbGVjdGlvbkNoYW5nZT1uZXcgU3ksdGhpcy52YWx1ZUNoYW5nZT1uZXcgU3ksdGhpcy5uZ0NvbnRyb2wmJih0aGlzLm5nQ29udHJvbC52YWx1ZUFjY2Vzc29yPXRoaXMpLG51bGwhPShudWxsPT1mP3ZvaWQgMDpmLnR5cGVhaGVhZERlYm91bmNlSW50ZXJ2YWwpJiYodGhpcy5fdHlwZWFoZWFkRGVib3VuY2VJbnRlcnZhbD1mLnR5cGVhaGVhZERlYm91bmNlSW50ZXJ2YWwpLHRoaXMuX3Njcm9sbFN0cmF0ZWd5RmFjdG9yeT1wLHRoaXMuX3Njcm9sbFN0cmF0ZWd5PXRoaXMuX3Njcm9sbFN0cmF0ZWd5RmFjdG9yeSgpLHRoaXMudGFiSW5kZXg9cGFyc2VJbnQoZCl8fDAsdGhpcy5pZD10aGlzLmlkfWdldCBmb2N1c2VkKCl7cmV0dXJuIHRoaXMuX2ZvY3VzZWR8fHRoaXMuX3BhbmVsT3Blbn1nZXQgcGxhY2Vob2xkZXIoKXtyZXR1cm4gdGhpcy5fcGxhY2Vob2xkZXJ9c2V0IHBsYWNlaG9sZGVyKHQpe3RoaXMuX3BsYWNlaG9sZGVyPXQsdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpfWdldCByZXF1aXJlZCgpe3JldHVybiB0aGlzLl9yZXF1aXJlZH1zZXQgcmVxdWlyZWQodCl7dGhpcy5fcmVxdWlyZWQ9ZUgodCksdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpfWdldCBtdWx0aXBsZSgpe3JldHVybiB0aGlzLl9tdWx0aXBsZX1zZXQgbXVsdGlwbGUodCl7aWYodGhpcy5fc2VsZWN0aW9uTW9kZWwmJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSkKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCnRocm93KGZ1bmN0aW9uIGUoKXtyZXR1cm4gRXJyb3IoIkNhbm5vdCBjaGFuZ2UgYG11bHRpcGxlYCBtb2RlIG9mIHNlbGVjdCBhZnRlciBpbml0aWFsaXphdGlvbi4iKX0pKCk7dGhpcy5fbXVsdGlwbGU9ZUgodCl9Z2V0IGRpc2FibGVPcHRpb25DZW50ZXJpbmcoKXtyZXR1cm4gdGhpcy5fZGlzYWJsZU9wdGlvbkNlbnRlcmluZ31zZXQgZGlzYWJsZU9wdGlvbkNlbnRlcmluZyh0KXt0aGlzLl9kaXNhYmxlT3B0aW9uQ2VudGVyaW5nPWVIKHQpfWdldCBjb21wYXJlV2l0aCgpe3JldHVybiB0aGlzLl9jb21wYXJlV2l0aH1zZXQgY29tcGFyZVdpdGgodCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSl0aHJvdyhmdW5jdGlvbiBlKCl7cmV0dXJuIEVycm9yKCJgY29tcGFyZVdpdGhgIG11c3QgYmUgYSBmdW5jdGlvbi4iKX0pKCk7dGhpcy5fY29tcGFyZVdpdGg9dCx0aGlzLl9zZWxlY3Rpb25Nb2RlbCYmdGhpcy5faW5pdGlhbGl6ZVNlbGVjdGlvbigpfWdldCB2YWx1ZSgpe3JldHVybiB0aGlzLl92YWx1ZX1zZXQgdmFsdWUodCl7KHQhPT10aGlzLl92YWx1ZXx8dGhpcy5fbXVsdGlwbGUmJkFycmF5LmlzQXJyYXkodCkpJiYodGhpcy5vcHRpb25zJiZ0aGlzLl9zZXRTZWxlY3Rpb25CeVZhbHVlKHQpLHRoaXMuX3ZhbHVlPXQpfWdldCB0eXBlYWhlYWREZWJvdW5jZUludGVydmFsKCl7cmV0dXJuIHRoaXMuX3R5cGVhaGVhZERlYm91bmNlSW50ZXJ2YWx9c2V0IHR5cGVhaGVhZERlYm91bmNlSW50ZXJ2YWwodCl7dGhpcy5fdHlwZWFoZWFkRGVib3VuY2VJbnRlcnZhbD1uSCh0KX1nZXQgaWQoKXtyZXR1cm4gdGhpcy5faWR9c2V0IGlkKHQpe3RoaXMuX2lkPXR8fHRoaXMuX3VpZCx0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCl9bmdPbkluaXQoKXt0aGlzLl9zZWxlY3Rpb25Nb2RlbD1uZXcgakwodGhpcy5tdWx0aXBsZSksdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpLHRoaXMuX3BhbmVsRG9uZUFuaW1hdGluZ1N0cmVhbS5waXBlKHdlKCksamUodGhpcy5fZGVzdHJveSkpLnN1YnNjcmliZSgoKCk9PnRoaXMuX3BhbmVsRG9uZUFuaW1hdGluZyh0aGlzLnBhbmVsT3BlbikpKX1uZ0FmdGVyQ29udGVudEluaXQoKXt0aGlzLl9pbml0S2V5TWFuYWdlcigpLHRoaXMuX3NlbGVjdGlvbk1vZGVsLmNoYW5nZWQucGlwZShqZSh0aGlzLl9kZXN0cm95KSkuc3Vic2NyaWJlKCh0PT57dC5hZGRlZC5mb3JFYWNoKCh0PT50LnNlbGVjdCgpKSksdC5yZW1vdmVkLmZvckVhY2goKHQ9PnQuZGVzZWxlY3QoKSkpfSkpLHRoaXMub3B0aW9ucy5jaGFuZ2VzLnBpcGUoQmUobnVsbCksamUodGhpcy5fZGVzdHJveSkpLnN1YnNjcmliZSgoKCk9Pnt0aGlzLl9yZXNldE9wdGlvbnMoKSx0aGlzLl9pbml0aWFsaXplU2VsZWN0aW9uKCl9KSl9bmdEb0NoZWNrKCl7Y29uc3QgdD10aGlzLl9nZXRUcmlnZ2VyQXJpYUxhYmVsbGVkYnkoKTtpZih0IT09dGhpcy5fdHJpZ2dlckFyaWFMYWJlbGxlZEJ5KXtjb25zdCBlPXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudDt0aGlzLl90cmlnZ2VyQXJpYUxhYmVsbGVkQnk9dCx0P2Uuc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsbGVkYnkiLHQpOmUucmVtb3ZlQXR0cmlidXRlKCJhcmlhLWxhYmVsbGVkYnkiKX10aGlzLm5nQ29udHJvbCYmdGhpcy51cGRhdGVFcnJvclN0YXRlKCl9bmdPbkNoYW5nZXModCl7dC5kaXNhYmxlZCYmdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpLHQudHlwZWFoZWFkRGVib3VuY2VJbnRlcnZhbCYmdGhpcy5fa2V5TWFuYWdlciYmdGhpcy5fa2V5TWFuYWdlci53aXRoVHlwZUFoZWFkKHRoaXMuX3R5cGVhaGVhZERlYm91bmNlSW50ZXJ2YWwpfW5nT25EZXN0cm95KCl7dGhpcy5fZGVzdHJveS5uZXh0KCksdGhpcy5fZGVzdHJveS5jb21wbGV0ZSgpLHRoaXMuc3RhdGVDaGFuZ2VzLmNvbXBsZXRlKCl9dG9nZ2xlKCl7dGhpcy5wYW5lbE9wZW4/dGhpcy5jbG9zZSgpOnRoaXMub3BlbigpfW9wZW4oKXt0aGlzLl9jYW5PcGVuKCkmJih0aGlzLl9wYW5lbE9wZW49ITAsdGhpcy5fa2V5TWFuYWdlci53aXRoSG9yaXpvbnRhbE9yaWVudGF0aW9uKG51bGwpLHRoaXMuX2hpZ2hsaWdodENvcnJlY3RPcHRpb24oKSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSl9Y2xvc2UoKXt0aGlzLl9wYW5lbE9wZW4mJih0aGlzLl9wYW5lbE9wZW49ITEsdGhpcy5fa2V5TWFuYWdlci53aXRoSG9yaXpvbnRhbE9yaWVudGF0aW9uKHRoaXMuX2lzUnRsKCk/InJ0bCI6Imx0ciIpLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpLHRoaXMuX29uVG91Y2hlZCgpKX13cml0ZVZhbHVlKHQpe3RoaXMudmFsdWU9dH1yZWdpc3Rlck9uQ2hhbmdlKHQpe3RoaXMuX29uQ2hhbmdlPXR9cmVnaXN0ZXJPblRvdWNoZWQodCl7dGhpcy5fb25Ub3VjaGVkPXR9c2V0RGlzYWJsZWRTdGF0ZSh0KXt0aGlzLmRpc2FibGVkPXQsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCksdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpfWdldCBwYW5lbE9wZW4oKXtyZXR1cm4gdGhpcy5fcGFuZWxPcGVufWdldCBzZWxlY3RlZCgpe3JldHVybiB0aGlzLm11bHRpcGxlP3RoaXMuX3NlbGVjdGlvbk1vZGVsLnNlbGVjdGVkOnRoaXMuX3NlbGVjdGlvbk1vZGVsLnNlbGVjdGVkWzBdfWdldCB0cmlnZ2VyVmFsdWUoKXtpZih0aGlzLmVtcHR5KXJldHVybiIiO2lmKHRoaXMuX211bHRpcGxlKXtjb25zdCB0PXRoaXMuX3NlbGVjdGlvbk1vZGVsLnNlbGVjdGVkLm1hcCgodD0+dC52aWV3VmFsdWUpKTtyZXR1cm4gdGhpcy5faXNSdGwoKSYmdC5yZXZlcnNlKCksdC5qb2luKCIsICIpfXJldHVybiB0aGlzLl9zZWxlY3Rpb25Nb2RlbC5zZWxlY3RlZFswXS52aWV3VmFsdWV9X2lzUnRsKCl7cmV0dXJuISF0aGlzLl9kaXImJiJydGwiPT09dGhpcy5fZGlyLnZhbHVlfV9oYW5kbGVLZXlkb3duKHQpe3RoaXMuZGlzYWJsZWR8fCh0aGlzLnBhbmVsT3Blbj90aGlzLl9oYW5kbGVPcGVuS2V5ZG93bih0KTp0aGlzLl9oYW5kbGVDbG9zZWRLZXlkb3duKHQpKX1faGFuZGxlQ2xvc2VkS2V5ZG93bih0KXtjb25zdCBlPXQua2V5Q29kZSxuPWU9PT0kSXx8ZT09PVFJfHwzNz09PWV8fDM5PT09ZSxvPWU9PT1YSXx8ZT09PUpJLGk9dGhpcy5fa2V5TWFuYWdlcjtpZighaS5pc1R5cGluZygpJiZvJiYhdEgodCl8fCh0aGlzLm11bHRpcGxlfHx0LmFsdEtleSkmJm4pdC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMub3BlbigpO2Vsc2UgaWYoIXRoaXMubXVsdGlwbGUpe2NvbnN0IGU9dGhpcy5zZWxlY3RlZDtpLm9uS2V5ZG93bih0KTtjb25zdCBuPXRoaXMuc2VsZWN0ZWQ7biYmZSE9PW4mJnRoaXMuX2xpdmVBbm5vdW5jZXIuYW5ub3VuY2Uobi52aWV3VmFsdWUsMWU0KX19X2hhbmRsZU9wZW5LZXlkb3duKHQpe2NvbnN0IGU9dGhpcy5fa2V5TWFuYWdlcixuPXQua2V5Q29kZSxvPW49PT0kSXx8bj09PVFJLGk9ZS5pc1R5cGluZygpO2lmKG8mJnQuYWx0S2V5KXQucHJldmVudERlZmF1bHQoKSx0aGlzLmNsb3NlKCk7ZWxzZSBpZihpfHxuIT09WEkmJm4hPT1KSXx8IWUuYWN0aXZlSXRlbXx8dEgodCkpaWYoIWkmJnRoaXMuX211bHRpcGxlJiY2NT09PW4mJnQuY3RybEtleSl7dC5wcmV2ZW50RGVmYXVsdCgpO2NvbnN0IGU9dGhpcy5vcHRpb25zLnNvbWUoKHQ9PiF0LmRpc2FibGVkJiYhdC5zZWxlY3RlZCkpO3RoaXMub3B0aW9ucy5mb3JFYWNoKCh0PT57dC5kaXNhYmxlZHx8KGU/dC5zZWxlY3QoKTp0LmRlc2VsZWN0KCkpfSkpfWVsc2V7Y29uc3Qgbj1lLmFjdGl2ZUl0ZW1JbmRleDtlLm9uS2V5ZG93bih0KSx0aGlzLl9tdWx0aXBsZSYmbyYmdC5zaGlmdEtleSYmZS5hY3RpdmVJdGVtJiZlLmFjdGl2ZUl0ZW1JbmRleCE9PW4mJmUuYWN0aXZlSXRlbS5fc2VsZWN0VmlhSW50ZXJhY3Rpb24oKX1lbHNlIHQucHJldmVudERlZmF1bHQoKSxlLmFjdGl2ZUl0ZW0uX3NlbGVjdFZpYUludGVyYWN0aW9uKCl9X29uRm9jdXMoKXt0aGlzLmRpc2FibGVkfHwodGhpcy5fZm9jdXNlZD0hMCx0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCkpfV9vbkJsdXIoKXt0aGlzLl9mb2N1c2VkPSExLHRoaXMuZGlzYWJsZWR8fHRoaXMucGFuZWxPcGVufHwodGhpcy5fb25Ub3VjaGVkKCksdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCksdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpKX1fb25BdHRhY2hlZCgpe3RoaXMuX292ZXJsYXlEaXIucG9zaXRpb25DaGFuZ2UucGlwZSh2ZSgxKSkuc3Vic2NyaWJlKCgoKT0+e3RoaXMuX2NoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKSx0aGlzLl9wb3NpdGlvbmluZ1NldHRsZWQoKX0pKX1fZ2V0UGFuZWxUaGVtZSgpe3JldHVybiB0aGlzLl9wYXJlbnRGb3JtRmllbGQ/YG1hdC0ke3RoaXMuX3BhcmVudEZvcm1GaWVsZC5jb2xvcn1gOiIifWdldCBlbXB0eSgpe3JldHVybiF0aGlzLl9zZWxlY3Rpb25Nb2RlbHx8dGhpcy5fc2VsZWN0aW9uTW9kZWwuaXNFbXB0eSgpfV9pbml0aWFsaXplU2VsZWN0aW9uKCl7UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKCk9Pnt0aGlzLl9zZXRTZWxlY3Rpb25CeVZhbHVlKHRoaXMubmdDb250cm9sP3RoaXMubmdDb250cm9sLnZhbHVlOnRoaXMuX3ZhbHVlKSx0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCl9KSl9X3NldFNlbGVjdGlvbkJ5VmFsdWUodCl7aWYodGhpcy5fc2VsZWN0aW9uTW9kZWwuc2VsZWN0ZWQuZm9yRWFjaCgodD0+dC5zZXRJbmFjdGl2ZVN0eWxlcygpKSksdGhpcy5fc2VsZWN0aW9uTW9kZWwuY2xlYXIoKSx0aGlzLm11bHRpcGxlJiZ0KXtpZighQXJyYXkuaXNBcnJheSh0KSYmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpKXRocm93KGZ1bmN0aW9uIGUoKXtyZXR1cm4gRXJyb3IoIlZhbHVlIG11c3QgYmUgYW4gYXJyYXkgaW4gbXVsdGlwbGUtc2VsZWN0aW9uIG1vZGUuIil9KSgpO3QuZm9yRWFjaCgodD0+dGhpcy5fc2VsZWN0VmFsdWUodCkpKSx0aGlzLl9zb3J0VmFsdWVzKCl9ZWxzZXtjb25zdCBlPXRoaXMuX3NlbGVjdFZhbHVlKHQpO2U/dGhpcy5fa2V5TWFuYWdlci51cGRhdGVBY3RpdmVJdGVtKGUpOnRoaXMucGFuZWxPcGVufHx0aGlzLl9rZXlNYW5hZ2VyLnVwZGF0ZUFjdGl2ZUl0ZW0oLTEpfXRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpfV9zZWxlY3RWYWx1ZSh0KXtjb25zdCBlPXRoaXMub3B0aW9ucy5maW5kKChlPT57aWYodGhpcy5fc2VsZWN0aW9uTW9kZWwuaXNTZWxlY3RlZChlKSlyZXR1cm4hMTt0cnl7cmV0dXJuIG51bGwhPWUudmFsdWUmJnRoaXMuX2NvbXBhcmVXaXRoKGUudmFsdWUsdCl9Y2F0Y2godCl7cmV0dXJuKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZjb25zb2xlLndhcm4odCksITF9fSkpO3JldHVybiBlJiZ0aGlzLl9zZWxlY3Rpb25Nb2RlbC5zZWxlY3QoZSksZX1faW5pdEtleU1hbmFnZXIoKXt0aGlzLl9rZXlNYW5hZ2VyPW5ldyBGSCh0aGlzLm9wdGlvbnMpLndpdGhUeXBlQWhlYWQodGhpcy5fdHlwZWFoZWFkRGVib3VuY2VJbnRlcnZhbCkud2l0aFZlcnRpY2FsT3JpZW50YXRpb24oKS53aXRoSG9yaXpvbnRhbE9yaWVudGF0aW9uKHRoaXMuX2lzUnRsKCk/InJ0bCI6Imx0ciIpLndpdGhIb21lQW5kRW5kKCkud2l0aEFsbG93ZWRNb2RpZmllcktleXMoWyJzaGlmdEtleSJdKSx0aGlzLl9rZXlNYW5hZ2VyLnRhYk91dC5waXBlKGplKHRoaXMuX2Rlc3Ryb3kpKS5zdWJzY3JpYmUoKCgpPT57dGhpcy5wYW5lbE9wZW4mJighdGhpcy5tdWx0aXBsZSYmdGhpcy5fa2V5TWFuYWdlci5hY3RpdmVJdGVtJiZ0aGlzLl9rZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0uX3NlbGVjdFZpYUludGVyYWN0aW9uKCksdGhpcy5mb2N1cygpLHRoaXMuY2xvc2UoKSl9KSksdGhpcy5fa2V5TWFuYWdlci5jaGFuZ2UucGlwZShqZSh0aGlzLl9kZXN0cm95KSkuc3Vic2NyaWJlKCgoKT0+e3RoaXMuX3BhbmVsT3BlbiYmdGhpcy5wYW5lbD90aGlzLl9zY3JvbGxPcHRpb25JbnRvVmlldyh0aGlzLl9rZXlNYW5hZ2VyLmFjdGl2ZUl0ZW1JbmRleHx8MCk6dGhpcy5fcGFuZWxPcGVufHx0aGlzLm11bHRpcGxlfHwhdGhpcy5fa2V5TWFuYWdlci5hY3RpdmVJdGVtfHx0aGlzLl9rZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0uX3NlbGVjdFZpYUludGVyYWN0aW9uKCl9KSl9X3Jlc2V0T3B0aW9ucygpe2NvbnN0IHQ9cGUodGhpcy5vcHRpb25zLmNoYW5nZXMsdGhpcy5fZGVzdHJveSk7dGhpcy5vcHRpb25TZWxlY3Rpb25DaGFuZ2VzLnBpcGUoamUodCkpLnN1YnNjcmliZSgodD0+e3RoaXMuX29uU2VsZWN0KHQuc291cmNlLHQuaXNVc2VySW5wdXQpLHQuaXNVc2VySW5wdXQmJiF0aGlzLm11bHRpcGxlJiZ0aGlzLl9wYW5lbE9wZW4mJih0aGlzLmNsb3NlKCksdGhpcy5mb2N1cygpKX0pKSxwZSguLi50aGlzLm9wdGlvbnMubWFwKCh0PT50Ll9zdGF0ZUNoYW5nZXMpKSkucGlwZShqZSh0KSkuc3Vic2NyaWJlKCgoKT0+e3RoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpLHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKX0pKX1fb25TZWxlY3QodCxlKXtjb25zdCBuPXRoaXMuX3NlbGVjdGlvbk1vZGVsLmlzU2VsZWN0ZWQodCk7bnVsbCE9dC52YWx1ZXx8dGhpcy5fbXVsdGlwbGU/KG4hPT10LnNlbGVjdGVkJiYodC5zZWxlY3RlZD90aGlzLl9zZWxlY3Rpb25Nb2RlbC5zZWxlY3QodCk6dGhpcy5fc2VsZWN0aW9uTW9kZWwuZGVzZWxlY3QodCkpLGUmJnRoaXMuX2tleU1hbmFnZXIuc2V0QWN0aXZlSXRlbSh0KSx0aGlzLm11bHRpcGxlJiYodGhpcy5fc29ydFZhbHVlcygpLGUmJnRoaXMuZm9jdXMoKSkpOih0LmRlc2VsZWN0KCksdGhpcy5fc2VsZWN0aW9uTW9kZWwuY2xlYXIoKSxudWxsIT10aGlzLnZhbHVlJiZ0aGlzLl9wcm9wYWdhdGVDaGFuZ2VzKHQudmFsdWUpKSxuIT09dGhpcy5fc2VsZWN0aW9uTW9kZWwuaXNTZWxlY3RlZCh0KSYmdGhpcy5fcHJvcGFnYXRlQ2hhbmdlcygpLHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKX1fc29ydFZhbHVlcygpe2lmKHRoaXMubXVsdGlwbGUpe2NvbnN0IHQ9dGhpcy5vcHRpb25zLnRvQXJyYXkoKTt0aGlzLl9zZWxlY3Rpb25Nb2RlbC5zb3J0KCgoZSxuKT0+dGhpcy5zb3J0Q29tcGFyYXRvcj90aGlzLnNvcnRDb21wYXJhdG9yKGUsbix0KTp0LmluZGV4T2YoZSktdC5pbmRleE9mKG4pKSksdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpfX1fcHJvcGFnYXRlQ2hhbmdlcyh0KXtsZXQgZT1udWxsO2U9dGhpcy5tdWx0aXBsZT90aGlzLnNlbGVjdGVkLm1hcCgodD0+dC52YWx1ZSkpOnRoaXMuc2VsZWN0ZWQ/dGhpcy5zZWxlY3RlZC52YWx1ZTp0LHRoaXMuX3ZhbHVlPWUsdGhpcy52YWx1ZUNoYW5nZS5lbWl0KGUpLHRoaXMuX29uQ2hhbmdlKGUpLHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQodGhpcy5fZ2V0Q2hhbmdlRXZlbnQoZSkpLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpfV9oaWdobGlnaHRDb3JyZWN0T3B0aW9uKCl7dGhpcy5fa2V5TWFuYWdlciYmKHRoaXMuZW1wdHk/dGhpcy5fa2V5TWFuYWdlci5zZXRGaXJzdEl0ZW1BY3RpdmUoKTp0aGlzLl9rZXlNYW5hZ2VyLnNldEFjdGl2ZUl0ZW0odGhpcy5fc2VsZWN0aW9uTW9kZWwuc2VsZWN0ZWRbMF0pKX1fY2FuT3Blbigpe3ZhciB0O3JldHVybiF0aGlzLl9wYW5lbE9wZW4mJiF0aGlzLmRpc2FibGVkJiYobnVsbD09PSh0PXRoaXMub3B0aW9ucyl8fHZvaWQgMD09PXQ/dm9pZCAwOnQubGVuZ3RoKT4wfWZvY3VzKHQpe3RoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cyh0KX1fZ2V0UGFuZWxBcmlhTGFiZWxsZWRieSgpe3ZhciB0O2lmKHRoaXMuYXJpYUxhYmVsKXJldHVybiBudWxsO2NvbnN0IGU9bnVsbD09PSh0PXRoaXMuX3BhcmVudEZvcm1GaWVsZCl8fHZvaWQgMD09PXQ/dm9pZCAwOnQuZ2V0TGFiZWxJZCgpO3JldHVybiB0aGlzLmFyaWFMYWJlbGxlZGJ5PyhlP2UrIiAiOiIiKSt0aGlzLmFyaWFMYWJlbGxlZGJ5OmV9X2dldEFyaWFBY3RpdmVEZXNjZW5kYW50KCl7cmV0dXJuIHRoaXMucGFuZWxPcGVuJiZ0aGlzLl9rZXlNYW5hZ2VyJiZ0aGlzLl9rZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0/dGhpcy5fa2V5TWFuYWdlci5hY3RpdmVJdGVtLmlkOm51bGx9X2dldFRyaWdnZXJBcmlhTGFiZWxsZWRieSgpe3ZhciB0O2lmKHRoaXMuYXJpYUxhYmVsKXJldHVybiBudWxsO2NvbnN0IGU9bnVsbD09PSh0PXRoaXMuX3BhcmVudEZvcm1GaWVsZCl8fHZvaWQgMD09PXQ/dm9pZCAwOnQuZ2V0TGFiZWxJZCgpO2xldCBuPShlP2UrIiAiOiIiKSt0aGlzLl92YWx1ZUlkO3JldHVybiB0aGlzLmFyaWFMYWJlbGxlZGJ5JiYobis9IiAiK3RoaXMuYXJpYUxhYmVsbGVkYnkpLG59X3BhbmVsRG9uZUFuaW1hdGluZyh0KXt0aGlzLm9wZW5lZENoYW5nZS5lbWl0KHQpfXNldERlc2NyaWJlZEJ5SWRzKHQpe3RoaXMuX2FyaWFEZXNjcmliZWRieT10LmpvaW4oIiAiKX1vbkNvbnRhaW5lckNsaWNrKCl7dGhpcy5mb2N1cygpLHRoaXMub3BlbigpfWdldCBzaG91bGRMYWJlbEZsb2F0KCl7cmV0dXJuIHRoaXMuX3BhbmVsT3Blbnx8IXRoaXMuZW1wdHl8fHRoaXMuX2ZvY3VzZWQmJiEhdGhpcy5fcGxhY2Vob2xkZXJ9fXhZLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx4WSkoZ2YoUUwpLGdmKE9iKSxnZihtQyksZ2YobkwpLGdmKEtoKSxnZih2Riw4KSxnZihYVyw4KSxnZihoRyw4KSxnZih5VSw4KSxnZihsVywxMCksR2EoInRhYmluZGV4IiksZ2YoZ1kpLGdmKGNGKSxnZihoWSw4KSl9LHhZLsm1ZGlyPWhvKHt0eXBlOnhZLHZpZXdRdWVyeTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiYoVnkob1ksNSksVnkoaVksNSksVnkodFYsNSkpLDImZSl7bGV0IHQ7QnkodD1VeSgpKSYmKG4udHJpZ2dlcj10LmZpcnN0KSxCeSh0PVV5KCkpJiYobi5wYW5lbD10LmZpcnN0KSxCeSh0PVV5KCkpJiYobi5fb3ZlcmxheURpcj10LmZpcnN0KX19LGlucHV0czp7YXJpYUxhYmVsOlsiYXJpYS1sYWJlbCIsImFyaWFMYWJlbCJdLGlkOiJpZCIscGxhY2Vob2xkZXI6InBsYWNlaG9sZGVyIixyZXF1aXJlZDoicmVxdWlyZWQiLG11bHRpcGxlOiJtdWx0aXBsZSIsZGlzYWJsZU9wdGlvbkNlbnRlcmluZzoiZGlzYWJsZU9wdGlvbkNlbnRlcmluZyIsY29tcGFyZVdpdGg6ImNvbXBhcmVXaXRoIix2YWx1ZToidmFsdWUiLHR5cGVhaGVhZERlYm91bmNlSW50ZXJ2YWw6InR5cGVhaGVhZERlYm91bmNlSW50ZXJ2YWwiLHBhbmVsQ2xhc3M6InBhbmVsQ2xhc3MiLGFyaWFMYWJlbGxlZGJ5OlsiYXJpYS1sYWJlbGxlZGJ5IiwiYXJpYUxhYmVsbGVkYnkiXSxlcnJvclN0YXRlTWF0Y2hlcjoiZXJyb3JTdGF0ZU1hdGNoZXIiLHNvcnRDb21wYXJhdG9yOiJzb3J0Q29tcGFyYXRvciJ9LG91dHB1dHM6e29wZW5lZENoYW5nZToib3BlbmVkQ2hhbmdlIixfb3BlbmVkU3RyZWFtOiJvcGVuZWQiLF9jbG9zZWRTdHJlYW06ImNsb3NlZCIsc2VsZWN0aW9uQ2hhbmdlOiJzZWxlY3Rpb25DaGFuZ2UiLHZhbHVlQ2hhbmdlOiJ2YWx1ZUNoYW5nZSJ9LGZlYXR1cmVzOltRcCxxb119KSx4WS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOlFMfSx7dHlwZTpPYn0se3R5cGU6bUN9LHt0eXBlOm5MfSx7dHlwZTpLaH0se3R5cGU6dkYsZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX0se3R5cGU6WFcsZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX0se3R5cGU6aEcsZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX0se3R5cGU6X1UsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W3lVXX1dfSx7dHlwZTpsVyxkZWNvcmF0b3JzOlt7dHlwZTpWcn0se3R5cGU6QnJ9XX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOiRhLGFyZ3M6WyJ0YWJpbmRleCJdfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltnWV19XX0se3R5cGU6Y0Z9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbaFldfV19XSx4WS5wcm9wRGVjb3JhdG9ycz17dHJpZ2dlcjpbe3R5cGU6YXIsYXJnczpbInRyaWdnZXIiXX1dLHBhbmVsOlt7dHlwZTphcixhcmdzOlsicGFuZWwiXX1dLF9vdmVybGF5RGlyOlt7dHlwZTphcixhcmdzOlt0Vl19XSxwYW5lbENsYXNzOlt7dHlwZTpSX31dLHBsYWNlaG9sZGVyOlt7dHlwZTpSX31dLHJlcXVpcmVkOlt7dHlwZTpSX31dLG11bHRpcGxlOlt7dHlwZTpSX31dLGRpc2FibGVPcHRpb25DZW50ZXJpbmc6W3t0eXBlOlJffV0sY29tcGFyZVdpdGg6W3t0eXBlOlJffV0sdmFsdWU6W3t0eXBlOlJffV0sYXJpYUxhYmVsOlt7dHlwZTpSXyxhcmdzOlsiYXJpYS1sYWJlbCJdfV0sYXJpYUxhYmVsbGVkYnk6W3t0eXBlOlJfLGFyZ3M6WyJhcmlhLWxhYmVsbGVkYnkiXX1dLGVycm9yU3RhdGVNYXRjaGVyOlt7dHlwZTpSX31dLHR5cGVhaGVhZERlYm91bmNlSW50ZXJ2YWw6W3t0eXBlOlJffV0sc29ydENvbXBhcmF0b3I6W3t0eXBlOlJffV0saWQ6W3t0eXBlOlJffV0sb3BlbmVkQ2hhbmdlOlt7dHlwZTpFX31dLF9vcGVuZWRTdHJlYW06W3t0eXBlOkVfLGFyZ3M6WyJvcGVuZWQiXX1dLF9jbG9zZWRTdHJlYW06W3t0eXBlOkVfLGFyZ3M6WyJjbG9zZWQiXX1dLHNlbGVjdGlvbkNoYW5nZTpbe3R5cGU6RV99XSx2YWx1ZUNoYW5nZTpbe3R5cGU6RV99XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih4WSxbe3R5cGU6a199XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6UUx9LHt0eXBlOk9ifSx7dHlwZTptQ30se3R5cGU6bkx9LHt0eXBlOktofSx7dHlwZTp2RixkZWNvcmF0b3JzOlt7dHlwZTpCcn1dfSx7dHlwZTpYVyxkZWNvcmF0b3JzOlt7dHlwZTpCcn1dfSx7dHlwZTpoRyxkZWNvcmF0b3JzOlt7dHlwZTpCcn1dfSx7dHlwZTpfVSxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbeVVdfV19LHt0eXBlOmxXLGRlY29yYXRvcnM6W3t0eXBlOlZyfSx7dHlwZTpCcn1dfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6JGEsYXJnczpbInRhYmluZGV4Il19XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W2dZXX1dfSx7dHlwZTpjRn0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltoWV19XX1dfSkse2FyaWFMYWJlbDpbe3R5cGU6Ul8sYXJnczpbImFyaWEtbGFiZWwiXX1dLG9wZW5lZENoYW5nZTpbe3R5cGU6RV99XSxfb3BlbmVkU3RyZWFtOlt7dHlwZTpFXyxhcmdzOlsib3BlbmVkIl19XSxfY2xvc2VkU3RyZWFtOlt7dHlwZTpFXyxhcmdzOlsiY2xvc2VkIl19XSxzZWxlY3Rpb25DaGFuZ2U6W3t0eXBlOkVffV0sdmFsdWVDaGFuZ2U6W3t0eXBlOkVffV0saWQ6W3t0eXBlOlJffV0scGxhY2Vob2xkZXI6W3t0eXBlOlJffV0scmVxdWlyZWQ6W3t0eXBlOlJffV0sbXVsdGlwbGU6W3t0eXBlOlJffV0sZGlzYWJsZU9wdGlvbkNlbnRlcmluZzpbe3R5cGU6Ul99XSxjb21wYXJlV2l0aDpbe3R5cGU6Ul99XSx2YWx1ZTpbe3R5cGU6Ul99XSx0eXBlYWhlYWREZWJvdW5jZUludGVydmFsOlt7dHlwZTpSX31dLHRyaWdnZXI6W3t0eXBlOmFyLGFyZ3M6WyJ0cmlnZ2VyIl19XSxwYW5lbDpbe3R5cGU6YXIsYXJnczpbInBhbmVsIl19XSxfb3ZlcmxheURpcjpbe3R5cGU6YXIsYXJnczpbdFZdfV0scGFuZWxDbGFzczpbe3R5cGU6Ul99XSxhcmlhTGFiZWxsZWRieTpbe3R5cGU6Ul8sYXJnczpbImFyaWEtbGFiZWxsZWRieSJdfV0sZXJyb3JTdGF0ZU1hdGNoZXI6W3t0eXBlOlJffV0sc29ydENvbXBhcmF0b3I6W3t0eXBlOlJffV19KTtjbGFzcyBPWSBleHRlbmRzIHhZe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9zY3JvbGxUb3A9MCx0aGlzLl90cmlnZ2VyRm9udFNpemU9MCx0aGlzLl90cmFuc2Zvcm1PcmlnaW49InRvcCIsdGhpcy5fb2Zmc2V0WT0wLHRoaXMuX3Bvc2l0aW9ucz1be29yaWdpblg6InN0YXJ0IixvcmlnaW5ZOiJ0b3AiLG92ZXJsYXlYOiJzdGFydCIsb3ZlcmxheVk6InRvcCJ9LHtvcmlnaW5YOiJzdGFydCIsb3JpZ2luWToiYm90dG9tIixvdmVybGF5WDoic3RhcnQiLG92ZXJsYXlZOiJib3R0b20ifV19X2NhbGN1bGF0ZU92ZXJsYXlTY3JvbGwodCxlLG4pe2NvbnN0IG89dGhpcy5fZ2V0SXRlbUhlaWdodCgpO3JldHVybiBNYXRoLm1pbihNYXRoLm1heCgwLG8qdC1lK28vMiksbil9bmdPbkluaXQoKXtzdXBlci5uZ09uSW5pdCgpLHRoaXMuX3ZpZXdwb3J0UnVsZXIuY2hhbmdlKCkucGlwZShqZSh0aGlzLl9kZXN0cm95KSkuc3Vic2NyaWJlKCgoKT0+e3RoaXMucGFuZWxPcGVuJiYodGhpcy5fdHJpZ2dlclJlY3Q9dGhpcy50cmlnZ2VyLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCkpfSkpfW9wZW4oKXtzdXBlci5fY2FuT3BlbigpJiYoc3VwZXIub3BlbigpLHRoaXMuX3RyaWdnZXJSZWN0PXRoaXMudHJpZ2dlci5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHRoaXMuX3RyaWdnZXJGb250U2l6ZT1wYXJzZUludChnZXRDb21wdXRlZFN0eWxlKHRoaXMudHJpZ2dlci5uYXRpdmVFbGVtZW50KS5mb250U2l6ZXx8IjAiKSx0aGlzLl9jYWxjdWxhdGVPdmVybGF5UG9zaXRpb24oKSx0aGlzLl9uZ1pvbmUub25TdGFibGUucGlwZSh2ZSgxKSkuc3Vic2NyaWJlKCgoKT0+e3RoaXMuX3RyaWdnZXJGb250U2l6ZSYmdGhpcy5fb3ZlcmxheURpci5vdmVybGF5UmVmJiZ0aGlzLl9vdmVybGF5RGlyLm92ZXJsYXlSZWYub3ZlcmxheUVsZW1lbnQmJih0aGlzLl9vdmVybGF5RGlyLm92ZXJsYXlSZWYub3ZlcmxheUVsZW1lbnQuc3R5bGUuZm9udFNpemU9YCR7dGhpcy5fdHJpZ2dlckZvbnRTaXplfXB4YCl9KSkpfV9zY3JvbGxPcHRpb25JbnRvVmlldyh0KXtjb25zdCBlPXdMKHQsdGhpcy5vcHRpb25zLHRoaXMub3B0aW9uR3JvdXBzKSxuPXRoaXMuX2dldEl0ZW1IZWlnaHQoKTt0aGlzLnBhbmVsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wPTA9PT10JiYxPT09ZT8wOmtMKCh0K2UpKm4sbix0aGlzLnBhbmVsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wLGZZKX1fcG9zaXRpb25pbmdTZXR0bGVkKCl7dGhpcy5fY2FsY3VsYXRlT3ZlcmxheU9mZnNldFgoKSx0aGlzLnBhbmVsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wPXRoaXMuX3Njcm9sbFRvcH1fcGFuZWxEb25lQW5pbWF0aW5nKHQpe3RoaXMucGFuZWxPcGVuP3RoaXMuX3Njcm9sbFRvcD0wOih0aGlzLl9vdmVybGF5RGlyLm9mZnNldFg9MCx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSksc3VwZXIuX3BhbmVsRG9uZUFuaW1hdGluZyh0KX1fZ2V0Q2hhbmdlRXZlbnQodCl7cmV0dXJuIG5ldyBfWSh0aGlzLHQpfV9jYWxjdWxhdGVPdmVybGF5T2Zmc2V0WCgpe2NvbnN0IHQ9dGhpcy5fb3ZlcmxheURpci5vdmVybGF5UmVmLm92ZXJsYXlFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGU9dGhpcy5fdmlld3BvcnRSdWxlci5nZXRWaWV3cG9ydFNpemUoKSxuPXRoaXMuX2lzUnRsKCksbz10aGlzLm11bHRpcGxlPzU2OjMyO2xldCBpO2lmKHRoaXMubXVsdGlwbGUpaT00MDtlbHNlIGlmKHRoaXMuZGlzYWJsZU9wdGlvbkNlbnRlcmluZylpPXVZO2Vsc2V7bGV0IHQ9dGhpcy5fc2VsZWN0aW9uTW9kZWwuc2VsZWN0ZWRbMF18fHRoaXMub3B0aW9ucy5maXJzdDtpPXQmJnQuZ3JvdXA/MzI6dVl9bnx8KGkqPS0xKTtjb25zdCBhPTAtKHQubGVmdCtpLShuP286MCkpLHI9dC5yaWdodCtpLWUud2lkdGgrKG4/MDpvKTthPjA/aSs9YSs4OnI+MCYmKGktPXIrOCksdGhpcy5fb3ZlcmxheURpci5vZmZzZXRYPU1hdGgucm91bmQoaSksdGhpcy5fb3ZlcmxheURpci5vdmVybGF5UmVmLnVwZGF0ZVBvc2l0aW9uKCl9X2NhbGN1bGF0ZU92ZXJsYXlPZmZzZXRZKHQsZSxuKXtjb25zdCBvPXRoaXMuX2dldEl0ZW1IZWlnaHQoKSxpPShvLXRoaXMuX3RyaWdnZXJSZWN0LmhlaWdodCkvMixhPU1hdGguZmxvb3IoZlkvbyk7bGV0IHI7aWYodGhpcy5kaXNhYmxlT3B0aW9uQ2VudGVyaW5nKXJldHVybiAwO2lmKDA9PT10aGlzLl9zY3JvbGxUb3Apcj10Km87ZWxzZSBpZih0aGlzLl9zY3JvbGxUb3A9PT1uKXtyPSh0LSh0aGlzLl9nZXRJdGVtQ291bnQoKS1hKSkqbysoby0odGhpcy5fZ2V0SXRlbUNvdW50KCkqby1mWSklbyl9ZWxzZSByPWUtby8yO3JldHVybiBNYXRoLnJvdW5kKC0xKnItaSl9X2NoZWNrT3ZlcmxheVdpdGhpblZpZXdwb3J0KHQpe2NvbnN0IGU9dGhpcy5fZ2V0SXRlbUhlaWdodCgpLG49dGhpcy5fdmlld3BvcnRSdWxlci5nZXRWaWV3cG9ydFNpemUoKSxvPXRoaXMuX3RyaWdnZXJSZWN0LnRvcC04LGk9bi5oZWlnaHQtdGhpcy5fdHJpZ2dlclJlY3QuYm90dG9tLTgsYT1NYXRoLmFicyh0aGlzLl9vZmZzZXRZKSxyPU1hdGgubWluKHRoaXMuX2dldEl0ZW1Db3VudCgpKmUsZlkpLWEtdGhpcy5fdHJpZ2dlclJlY3QuaGVpZ2h0O3I+aT90aGlzLl9hZGp1c3RQYW5lbFVwKHIsaSk6YT5vP3RoaXMuX2FkanVzdFBhbmVsRG93bihhLG8sdCk6dGhpcy5fdHJhbnNmb3JtT3JpZ2luPXRoaXMuX2dldE9yaWdpbkJhc2VkT25PcHRpb24oKX1fYWRqdXN0UGFuZWxVcCh0LGUpe2NvbnN0IG49TWF0aC5yb3VuZCh0LWUpO3RoaXMuX3Njcm9sbFRvcC09bix0aGlzLl9vZmZzZXRZLT1uLHRoaXMuX3RyYW5zZm9ybU9yaWdpbj10aGlzLl9nZXRPcmlnaW5CYXNlZE9uT3B0aW9uKCksdGhpcy5fc2Nyb2xsVG9wPD0wJiYodGhpcy5fc2Nyb2xsVG9wPTAsdGhpcy5fb2Zmc2V0WT0wLHRoaXMuX3RyYW5zZm9ybU9yaWdpbj0iNTAlIGJvdHRvbSAwcHgiKX1fYWRqdXN0UGFuZWxEb3duKHQsZSxuKXtjb25zdCBvPU1hdGgucm91bmQodC1lKTtpZih0aGlzLl9zY3JvbGxUb3ArPW8sdGhpcy5fb2Zmc2V0WSs9byx0aGlzLl90cmFuc2Zvcm1PcmlnaW49dGhpcy5fZ2V0T3JpZ2luQmFzZWRPbk9wdGlvbigpLHRoaXMuX3Njcm9sbFRvcD49bilyZXR1cm4gdGhpcy5fc2Nyb2xsVG9wPW4sdGhpcy5fb2Zmc2V0WT0wLHZvaWQodGhpcy5fdHJhbnNmb3JtT3JpZ2luPSI1MCUgdG9wIDBweCIpfV9jYWxjdWxhdGVPdmVybGF5UG9zaXRpb24oKXtjb25zdCB0PXRoaXMuX2dldEl0ZW1IZWlnaHQoKSxlPXRoaXMuX2dldEl0ZW1Db3VudCgpLG49TWF0aC5taW4oZSp0LGZZKSxvPWUqdC1uO2xldCBpO2k9dGhpcy5lbXB0eT8wOk1hdGgubWF4KHRoaXMub3B0aW9ucy50b0FycmF5KCkuaW5kZXhPZih0aGlzLl9zZWxlY3Rpb25Nb2RlbC5zZWxlY3RlZFswXSksMCksaSs9d0woaSx0aGlzLm9wdGlvbnMsdGhpcy5vcHRpb25Hcm91cHMpO2NvbnN0IGE9bi8yO3RoaXMuX3Njcm9sbFRvcD10aGlzLl9jYWxjdWxhdGVPdmVybGF5U2Nyb2xsKGksYSxvKSx0aGlzLl9vZmZzZXRZPXRoaXMuX2NhbGN1bGF0ZU92ZXJsYXlPZmZzZXRZKGksYSxvKSx0aGlzLl9jaGVja092ZXJsYXlXaXRoaW5WaWV3cG9ydChvKX1fZ2V0T3JpZ2luQmFzZWRPbk9wdGlvbigpe2NvbnN0IHQ9dGhpcy5fZ2V0SXRlbUhlaWdodCgpLGU9KHQtdGhpcy5fdHJpZ2dlclJlY3QuaGVpZ2h0KS8yO3JldHVybmA1MCUgJHtNYXRoLmFicyh0aGlzLl9vZmZzZXRZKS1lK3QvMn1weCAwcHhgfV9nZXRJdGVtSGVpZ2h0KCl7cmV0dXJuIDMqdGhpcy5fdHJpZ2dlckZvbnRTaXplfV9nZXRJdGVtQ291bnQoKXtyZXR1cm4gdGhpcy5vcHRpb25zLmxlbmd0aCt0aGlzLm9wdGlvbkdyb3Vwcy5sZW5ndGh9fU9ZLsm1ZmFjPShmdW5jdGlvbigpe2xldCB0O3JldHVybiBmdW5jdGlvbiBlKG4pe3JldHVybih0fHwodD1VYShPWSkpKShufHxPWSl9fSkoKSxPWS7JtWNtcD1zbyh7dHlwZTpPWSxzZWxlY3RvcnM6W1sibWF0LXNlbGVjdCJdXSxjb250ZW50UXVlcmllczpmdW5jdGlvbiB0KGUsbixvKXtpZigxJmUmJihqeShvLE1ZLDUpLGp5KG8sUEwsNSksankobyxDTCw1KSksMiZlKXtsZXQgdDtCeSh0PVV5KCkpJiYobi5jdXN0b21UcmlnZ2VyPXQuZmlyc3QpLEJ5KHQ9VXkoKSkmJihuLm9wdGlvbnM9dCksQnkodD1VeSgpKSYmKG4ub3B0aW9uR3JvdXBzPXQpfX0saG9zdEF0dHJzOlsicm9sZSIsImNvbWJvYm94IiwiYXJpYS1hdXRvY29tcGxldGUiLCJub25lIiwiYXJpYS1oYXNwb3B1cCIsInRydWUiLDEsIm1hdC1zZWxlY3QiXSxob3N0VmFyczoyMCxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezEmZSYmUmYoImtleWRvd24iLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLl9oYW5kbGVLZXlkb3duKGUpfSkpKCJmb2N1cyIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5fb25Gb2N1cygpfSkpKCJibHVyIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLl9vbkJsdXIoKX0pKSwyJmUmJih5bSgiaWQiLG4uaWQpKCJ0YWJpbmRleCIsbi50YWJJbmRleCkoImFyaWEtY29udHJvbHMiLG4ucGFuZWxPcGVuP24uaWQrIi1wYW5lbCI6bnVsbCkoImFyaWEtZXhwYW5kZWQiLG4ucGFuZWxPcGVuKSgiYXJpYS1sYWJlbCIsbi5hcmlhTGFiZWx8fG51bGwpKCJhcmlhLXJlcXVpcmVkIixuLnJlcXVpcmVkLnRvU3RyaW5nKCkpKCJhcmlhLWRpc2FibGVkIixuLmRpc2FibGVkLnRvU3RyaW5nKCkpKCJhcmlhLWludmFsaWQiLG4uZXJyb3JTdGF0ZSkoImFyaWEtZGVzY3JpYmVkYnkiLG4uX2FyaWFEZXNjcmliZWRieXx8bnVsbCkoImFyaWEtYWN0aXZlZGVzY2VuZGFudCIsbi5fZ2V0QXJpYUFjdGl2ZURlc2NlbmRhbnQoKSksY3UoIm1hdC1zZWxlY3QtZGlzYWJsZWQiLG4uZGlzYWJsZWQpKCJtYXQtc2VsZWN0LWludmFsaWQiLG4uZXJyb3JTdGF0ZSkoIm1hdC1zZWxlY3QtcmVxdWlyZWQiLG4ucmVxdWlyZWQpKCJtYXQtc2VsZWN0LWVtcHR5IixuLmVtcHR5KSgibWF0LXNlbGVjdC1tdWx0aXBsZSIsbi5tdWx0aXBsZSkpfSxpbnB1dHM6e2Rpc2FibGVkOiJkaXNhYmxlZCIsZGlzYWJsZVJpcHBsZToiZGlzYWJsZVJpcHBsZSIsdGFiSW5kZXg6InRhYkluZGV4In0sZXhwb3J0QXM6WyJtYXRTZWxlY3QiXSxmZWF0dXJlczpbamgoW3twcm92aWRlOmlVLHVzZUV4aXN0aW5nOk9ZfSx7cHJvdmlkZTpoTCx1c2VFeGlzdGluZzpPWX1dKSxRcF0sbmdDb250ZW50U2VsZWN0b3JzOlsibWF0LXNlbGVjdC10cmlnZ2VyIiwiKiJdLGRlY2xzOjksdmFyczoxMixjb25zdHM6W1siY2RrLW92ZXJsYXktb3JpZ2luIiwiIiwxLCJtYXQtc2VsZWN0LXRyaWdnZXIiLDMsImNsaWNrIl0sWyJvcmlnaW4iLCJjZGtPdmVybGF5T3JpZ2luIiwidHJpZ2dlciIsIiJdLFsxLCJtYXQtc2VsZWN0LXZhbHVlIiwzLCJuZ1N3aXRjaCJdLFsiY2xhc3MiLCJtYXQtc2VsZWN0LXBsYWNlaG9sZGVyIG1hdC1zZWxlY3QtbWluLWxpbmUiLDQsIm5nU3dpdGNoQ2FzZSJdLFsiY2xhc3MiLCJtYXQtc2VsZWN0LXZhbHVlLXRleHQiLDMsIm5nU3dpdGNoIiw0LCJuZ1N3aXRjaENhc2UiXSxbMSwibWF0LXNlbGVjdC1hcnJvdy13cmFwcGVyIl0sWzEsIm1hdC1zZWxlY3QtYXJyb3ciXSxbImNkay1jb25uZWN0ZWQtb3ZlcmxheSIsIiIsImNka0Nvbm5lY3RlZE92ZXJsYXlMb2NrUG9zaXRpb24iLCIiLCJjZGtDb25uZWN0ZWRPdmVybGF5SGFzQmFja2Ryb3AiLCIiLCJjZGtDb25uZWN0ZWRPdmVybGF5QmFja2Ryb3BDbGFzcyIsImNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wIiwzLCJjZGtDb25uZWN0ZWRPdmVybGF5UGFuZWxDbGFzcyIsImNka0Nvbm5lY3RlZE92ZXJsYXlTY3JvbGxTdHJhdGVneSIsImNka0Nvbm5lY3RlZE92ZXJsYXlPcmlnaW4iLCJjZGtDb25uZWN0ZWRPdmVybGF5T3BlbiIsImNka0Nvbm5lY3RlZE92ZXJsYXlQb3NpdGlvbnMiLCJjZGtDb25uZWN0ZWRPdmVybGF5TWluV2lkdGgiLCJjZGtDb25uZWN0ZWRPdmVybGF5T2Zmc2V0WSIsImJhY2tkcm9wQ2xpY2siLCJhdHRhY2giLCJkZXRhY2giXSxbMSwibWF0LXNlbGVjdC1wbGFjZWhvbGRlciIsIm1hdC1zZWxlY3QtbWluLWxpbmUiXSxbMSwibWF0LXNlbGVjdC12YWx1ZS10ZXh0IiwzLCJuZ1N3aXRjaCJdLFsiY2xhc3MiLCJtYXQtc2VsZWN0LW1pbi1saW5lIiw0LCJuZ1N3aXRjaERlZmF1bHQiXSxbNCwibmdTd2l0Y2hDYXNlIl0sWzEsIm1hdC1zZWxlY3QtbWluLWxpbmUiXSxbMSwibWF0LXNlbGVjdC1wYW5lbC13cmFwIl0sWyJyb2xlIiwibGlzdGJveCIsInRhYmluZGV4IiwiLTEiLDMsIm5nQ2xhc3MiLCJrZXlkb3duIl0sWyJwYW5lbCIsIiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiYoSGYoZFkpLENmKDAsImRpdiIsMCwxKSxSZigiY2xpY2siLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4udG9nZ2xlKCl9KSksQ2YoMywiZGl2IiwyKSxIbSg0LGFZLDIsMSwic3BhbiIsMyksSG0oNSxsWSwzLDIsInNwYW4iLDQpLE1mKCksQ2YoNiwiZGl2Iiw1KSx2Zig3LCJkaXYiLDYpLE1mKCksTWYoKSxIbSg4LGNZLDQsMTQsIm5nLXRlbXBsYXRlIiw3KSxSZigiYmFja2Ryb3BDbGljayIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5jbG9zZSgpfSkpKCJhdHRhY2giLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4uX29uQXR0YWNoZWQoKX0pKSgiZGV0YWNoIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLmNsb3NlKCl9KSkpLDImZSl7Y29uc3QgdD1GbSgxKTt5bSgiYXJpYS1vd25zIixuLnBhbmVsT3Blbj9uLmlkKyItcGFuZWwiOm51bGwpLERjKDMpLGJmKCJuZ1N3aXRjaCIsbi5lbXB0eSkseW0oImlkIixuLl92YWx1ZUlkKSxEYygxKSxiZigibmdTd2l0Y2hDYXNlIiwhMCksRGMoMSksYmYoIm5nU3dpdGNoQ2FzZSIsITEpLERjKDMpLGJmKCJjZGtDb25uZWN0ZWRPdmVybGF5UGFuZWxDbGFzcyIsbi5fb3ZlcmxheVBhbmVsQ2xhc3MpKCJjZGtDb25uZWN0ZWRPdmVybGF5U2Nyb2xsU3RyYXRlZ3kiLG4uX3Njcm9sbFN0cmF0ZWd5KSgiY2RrQ29ubmVjdGVkT3ZlcmxheU9yaWdpbiIsdCkoImNka0Nvbm5lY3RlZE92ZXJsYXlPcGVuIixuLnBhbmVsT3BlbikoImNka0Nvbm5lY3RlZE92ZXJsYXlQb3NpdGlvbnMiLG4uX3Bvc2l0aW9ucykoImNka0Nvbm5lY3RlZE92ZXJsYXlNaW5XaWR0aCIsbnVsbD09bi5fdHJpZ2dlclJlY3Q/bnVsbDpuLl90cmlnZ2VyUmVjdC53aWR0aCkoImNka0Nvbm5lY3RlZE92ZXJsYXlPZmZzZXRZIixuLl9vZmZzZXRZKX19LGRpcmVjdGl2ZXM6WyRCLER2LFJ2LHRWLEV2LEN2XSxzdHlsZXM6WycubWF0LXNlbGVjdHtkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDoxMDAlO291dGxpbmU6bm9uZX0ubWF0LXNlbGVjdC10cmlnZ2Vye2Rpc3BsYXk6aW5saW5lLXRhYmxlO2N1cnNvcjpwb2ludGVyO3Bvc2l0aW9uOnJlbGF0aXZlO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LXNlbGVjdC1kaXNhYmxlZCAubWF0LXNlbGVjdC10cmlnZ2Vyey13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTtjdXJzb3I6ZGVmYXVsdH0ubWF0LXNlbGVjdC12YWx1ZXtkaXNwbGF5OnRhYmxlLWNlbGw7bWF4LXdpZHRoOjA7d2lkdGg6MTAwJTtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpczt3aGl0ZS1zcGFjZTpub3dyYXB9Lm1hdC1zZWxlY3QtdmFsdWUtdGV4dHt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXN9Lm1hdC1zZWxlY3QtYXJyb3ctd3JhcHBlcntkaXNwbGF5OnRhYmxlLWNlbGw7dmVydGljYWwtYWxpZ246bWlkZGxlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwgLm1hdC1zZWxlY3QtYXJyb3ctd3JhcHBlcnt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtc2VsZWN0LWFycm93LXdyYXBwZXJ7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTI1JSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmQubWF0LWZvcm0tZmllbGQtaGFzLWxhYmVsIC5tYXQtc2VsZWN0Om5vdCgubWF0LXNlbGVjdC1lbXB0eSkgLm1hdC1zZWxlY3QtYXJyb3ctd3JhcHBlcnt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZCAubWF0LXNlbGVjdC5tYXQtc2VsZWN0LWVtcHR5IC5tYXQtc2VsZWN0LWFycm93LXdyYXBwZXJ7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmQgLm1hdC1zZWxlY3QubWF0LXNlbGVjdC1lbXB0eSAubWF0LXNlbGVjdC1hcnJvdy13cmFwcGVye3RyYW5zaXRpb246bm9uZX0ubWF0LXNlbGVjdC1hcnJvd3t3aWR0aDowO2hlaWdodDowO2JvcmRlci1sZWZ0OjVweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItcmlnaHQ6NXB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci10b3A6NXB4IHNvbGlkO21hcmdpbjowIDRweH0ubWF0LXNlbGVjdC1wYW5lbC13cmFwe2ZsZXgtYmFzaXM6MTAwJX0ubWF0LXNlbGVjdC1wYW5lbHttaW4td2lkdGg6MTEycHg7bWF4LXdpZHRoOjI4MHB4O292ZXJmbG93OmF1dG87LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6dG91Y2g7cGFkZGluZy10b3A6MDtwYWRkaW5nLWJvdHRvbTowO21heC1oZWlnaHQ6MjU2cHg7bWluLXdpZHRoOjEwMCU7Ym9yZGVyLXJhZGl1czo0cHg7b3V0bGluZTowfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1zZWxlY3QtcGFuZWx7b3V0bGluZTpzb2xpZCAxcHh9Lm1hdC1zZWxlY3QtcGFuZWwgLm1hdC1vcHRncm91cC1sYWJlbCwubWF0LXNlbGVjdC1wYW5lbCAubWF0LW9wdGlvbntmb250LXNpemU6aW5oZXJpdDtsaW5lLWhlaWdodDozZW07aGVpZ2h0OjNlbX0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtc2VsZWN0Om5vdCgubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQpIC5tYXQtZm9ybS1maWVsZC1mbGV4e2N1cnNvcjpwb2ludGVyfS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1zZWxlY3QgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3dpZHRoOmNhbGMoMTAwJSAtIDE4cHgpfS5tYXQtc2VsZWN0LXBsYWNlaG9sZGVye3RyYW5zaXRpb246Y29sb3IgNDAwbXMgMTMzLjMzMzMzMzMzMzNtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKX0uX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1zZWxlY3QtcGxhY2Vob2xkZXJ7dHJhbnNpdGlvbjpub25lfS5tYXQtZm9ybS1maWVsZC1oaWRlLXBsYWNlaG9sZGVyIC5tYXQtc2VsZWN0LXBsYWNlaG9sZGVye2NvbG9yOnRyYW5zcGFyZW50Oy13ZWJraXQtdGV4dC1maWxsLWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246bm9uZTtkaXNwbGF5OmJsb2NrfS5tYXQtc2VsZWN0LW1pbi1saW5lOmVtcHR5OjpiZWZvcmV7Y29udGVudDoiICI7d2hpdGUtc3BhY2U6cHJlO3dpZHRoOjFweDtkaXNwbGF5OmlubGluZS1ibG9jaztvcGFjaXR5OjB9XG4nXSxlbmNhcHN1bGF0aW9uOjIsZGF0YTp7YW5pbWF0aW9uOltwWS50cmFuc2Zvcm1QYW5lbFdyYXAscFkudHJhbnNmb3JtUGFuZWxdfSxjaGFuZ2VEZXRlY3Rpb246MH0pLE9ZLnByb3BEZWNvcmF0b3JzPXtvcHRpb25zOlt7dHlwZTpvcixhcmdzOltQTCx7ZGVzY2VuZGFudHM6ITB9XX1dLG9wdGlvbkdyb3Vwczpbe3R5cGU6b3IsYXJnczpbQ0wse2Rlc2NlbmRhbnRzOiEwfV19XSxjdXN0b21UcmlnZ2VyOlt7dHlwZTppcixhcmdzOltNWV19XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihPWSxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJtYXQtc2VsZWN0IixleHBvcnRBczoibWF0U2VsZWN0Iix0ZW1wbGF0ZTonXHgzYyEtLVxuIE5vdGUgdGhhdCB0aGUgc2VsZWN0IHRyaWdnZXIgZWxlbWVudCBzcGVjaWZpZXMgYGFyaWEtb3duc2AgcG9pbnRpbmcgdG8gdGhlIGxpc3Rib3ggb3ZlcmxheS5cbiBXaGlsZSBhcmlhLW93bnMgaXMgbm90IHJlcXVpcmVkIGZvciB0aGUgQVJJQSAxLjIgYHJvbGU9ImNvbWJvYm94ImAgaW50ZXJhY3Rpb24gcGF0dGVybixcbiBpdCBmaXhlcyBhbiBpc3N1ZSB3aXRoIFZvaWNlT3ZlciB3aGVuIHRoZSBzZWxlY3QgYXBwZWFycyBpbnNpZGUgb2YgYW4gYGFyaWEtbW9kZWw9InRydWUiYFxuIGVsZW1lbnQgKGUuZy4gYSBkaWFsb2cpLiBXaXRob3V0IHRoaXMgYGFyaWEtb3duc2AsIHRoZSBgYXJpYS1tb2RhbGAgb24gYSBkaWFsb2cgcHJldmVudHNcbiBWb2ljZU92ZXIgZnJvbSAic2VlaW5nIiB0aGUgc2VsZWN0XCdzIGxpc3Rib3ggb3ZlcmxheSBmb3IgYXJpYS1hY3RpdmVkZXNjZW5kYW50LlxuIFVzaW5nIGBhcmlhLW93bnNgIHJlLXBhcmVudHMgdGhlIHNlbGVjdCBvdmVybGF5IHNvIHRoYXQgaXQgd29ya3MgYWdhaW4uXG4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2NvbXBvbmVudHMvaXNzdWVzLzIwNjk0XG4tLVx4M2VcbjxkaXYgY2RrLW92ZXJsYXktb3JpZ2luXG4gICAgIFthdHRyLmFyaWEtb3duc109InBhbmVsT3BlbiA/IGlkICsgXCctcGFuZWxcJyA6IG51bGwiXG4gICAgIGNsYXNzPSJtYXQtc2VsZWN0LXRyaWdnZXIiXG4gICAgIChjbGljayk9InRvZ2dsZSgpIlxuICAgICAjb3JpZ2luPSJjZGtPdmVybGF5T3JpZ2luIlxuICAgICAjdHJpZ2dlcj5cbiAgPGRpdiBjbGFzcz0ibWF0LXNlbGVjdC12YWx1ZSIgW25nU3dpdGNoXT0iZW1wdHkiIFthdHRyLmlkXT0iX3ZhbHVlSWQiPlxuICAgIDxzcGFuIGNsYXNzPSJtYXQtc2VsZWN0LXBsYWNlaG9sZGVyIG1hdC1zZWxlY3QtbWluLWxpbmUiICpuZ1N3aXRjaENhc2U9InRydWUiPnt7cGxhY2Vob2xkZXJ9fTwvc3Bhbj5cbiAgICA8c3BhbiBjbGFzcz0ibWF0LXNlbGVjdC12YWx1ZS10ZXh0IiAqbmdTd2l0Y2hDYXNlPSJmYWxzZSIgW25nU3dpdGNoXT0iISFjdXN0b21UcmlnZ2VyIj5cbiAgICAgIDxzcGFuIGNsYXNzPSJtYXQtc2VsZWN0LW1pbi1saW5lIiAqbmdTd2l0Y2hEZWZhdWx0Pnt7dHJpZ2dlclZhbHVlfX08L3NwYW4+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9Im1hdC1zZWxlY3QtdHJpZ2dlciIgKm5nU3dpdGNoQ2FzZT0idHJ1ZSI+PC9uZy1jb250ZW50PlxuICAgIDwvc3Bhbj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz0ibWF0LXNlbGVjdC1hcnJvdy13cmFwcGVyIj48ZGl2IGNsYXNzPSJtYXQtc2VsZWN0LWFycm93Ij48L2Rpdj48L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGVcbiAgY2RrLWNvbm5lY3RlZC1vdmVybGF5XG4gIGNka0Nvbm5lY3RlZE92ZXJsYXlMb2NrUG9zaXRpb25cbiAgY2RrQ29ubmVjdGVkT3ZlcmxheUhhc0JhY2tkcm9wXG4gIGNka0Nvbm5lY3RlZE92ZXJsYXlCYWNrZHJvcENsYXNzPSJjZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcCJcbiAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlQYW5lbENsYXNzXT0iX292ZXJsYXlQYW5lbENsYXNzIlxuICBbY2RrQ29ubmVjdGVkT3ZlcmxheVNjcm9sbFN0cmF0ZWd5XT0iX3Njcm9sbFN0cmF0ZWd5IlxuICBbY2RrQ29ubmVjdGVkT3ZlcmxheU9yaWdpbl09Im9yaWdpbiJcbiAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPcGVuXT0icGFuZWxPcGVuIlxuICBbY2RrQ29ubmVjdGVkT3ZlcmxheVBvc2l0aW9uc109Il9wb3NpdGlvbnMiXG4gIFtjZGtDb25uZWN0ZWRPdmVybGF5TWluV2lkdGhdPSJfdHJpZ2dlclJlY3Q/LndpZHRoISJcbiAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPZmZzZXRZXT0iX29mZnNldFkiXG4gIChiYWNrZHJvcENsaWNrKT0iY2xvc2UoKSJcbiAgKGF0dGFjaCk9Il9vbkF0dGFjaGVkKCkiXG4gIChkZXRhY2gpPSJjbG9zZSgpIj5cbiAgPGRpdiBjbGFzcz0ibWF0LXNlbGVjdC1wYW5lbC13cmFwIiBbQHRyYW5zZm9ybVBhbmVsV3JhcF0+XG4gICAgPGRpdlxuICAgICAgI3BhbmVsXG4gICAgICByb2xlPSJsaXN0Ym94IlxuICAgICAgdGFiaW5kZXg9Ii0xIlxuICAgICAgY2xhc3M9Im1hdC1zZWxlY3QtcGFuZWwge3sgX2dldFBhbmVsVGhlbWUoKSB9fSJcbiAgICAgIFthdHRyLmlkXT0iaWQgKyBcJy1wYW5lbFwnIlxuICAgICAgW2F0dHIuYXJpYS1tdWx0aXNlbGVjdGFibGVdPSJtdWx0aXBsZSJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPSJhcmlhTGFiZWwgfHwgbnVsbCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09Il9nZXRQYW5lbEFyaWFMYWJlbGxlZGJ5KCkiXG4gICAgICBbbmdDbGFzc109InBhbmVsQ2xhc3MiXG4gICAgICBbQHRyYW5zZm9ybVBhbmVsXT0ibXVsdGlwbGUgPyBcJ3Nob3dpbmctbXVsdGlwbGVcJyA6IFwnc2hvd2luZ1wnIlxuICAgICAgKEB0cmFuc2Zvcm1QYW5lbC5kb25lKT0iX3BhbmVsRG9uZUFuaW1hdGluZ1N0cmVhbS5uZXh0KCRldmVudC50b1N0YXRlKSJcbiAgICAgIFtzdHlsZS50cmFuc2Zvcm1PcmlnaW5dPSJfdHJhbnNmb3JtT3JpZ2luIlxuICAgICAgW3N0eWxlLmZvbnQtc2l6ZS5weF09Il90cmlnZ2VyRm9udFNpemUiXG4gICAgICAoa2V5ZG93bik9Il9oYW5kbGVLZXlkb3duKCRldmVudCkiPlxuICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4nLGlucHV0czpbImRpc2FibGVkIiwiZGlzYWJsZVJpcHBsZSIsInRhYkluZGV4Il0sZW5jYXBzdWxhdGlvbjpXbi5Ob25lLGNoYW5nZURldGVjdGlvbjpqbi5PblB1c2gsaG9zdDp7cm9sZToiY29tYm9ib3giLCJhcmlhLWF1dG9jb21wbGV0ZSI6Im5vbmUiLCJhcmlhLWhhc3BvcHVwIjoidHJ1ZSIsY2xhc3M6Im1hdC1zZWxlY3QiLCJbYXR0ci5pZF0iOiJpZCIsIlthdHRyLnRhYmluZGV4XSI6InRhYkluZGV4IiwiW2F0dHIuYXJpYS1jb250cm9sc10iOidwYW5lbE9wZW4gPyBpZCArICItcGFuZWwiIDogbnVsbCcsIlthdHRyLmFyaWEtZXhwYW5kZWRdIjoicGFuZWxPcGVuIiwiW2F0dHIuYXJpYS1sYWJlbF0iOiJhcmlhTGFiZWwgfHwgbnVsbCIsIlthdHRyLmFyaWEtcmVxdWlyZWRdIjoicmVxdWlyZWQudG9TdHJpbmcoKSIsIlthdHRyLmFyaWEtZGlzYWJsZWRdIjoiZGlzYWJsZWQudG9TdHJpbmcoKSIsIlthdHRyLmFyaWEtaW52YWxpZF0iOiJlcnJvclN0YXRlIiwiW2F0dHIuYXJpYS1kZXNjcmliZWRieV0iOiJfYXJpYURlc2NyaWJlZGJ5IHx8IG51bGwiLCJbYXR0ci5hcmlhLWFjdGl2ZWRlc2NlbmRhbnRdIjoiX2dldEFyaWFBY3RpdmVEZXNjZW5kYW50KCkiLCJbY2xhc3MubWF0LXNlbGVjdC1kaXNhYmxlZF0iOiJkaXNhYmxlZCIsIltjbGFzcy5tYXQtc2VsZWN0LWludmFsaWRdIjoiZXJyb3JTdGF0ZSIsIltjbGFzcy5tYXQtc2VsZWN0LXJlcXVpcmVkXSI6InJlcXVpcmVkIiwiW2NsYXNzLm1hdC1zZWxlY3QtZW1wdHldIjoiZW1wdHkiLCJbY2xhc3MubWF0LXNlbGVjdC1tdWx0aXBsZV0iOiJtdWx0aXBsZSIsIihrZXlkb3duKSI6Il9oYW5kbGVLZXlkb3duKCRldmVudCkiLCIoZm9jdXMpIjoiX29uRm9jdXMoKSIsIihibHVyKSI6Il9vbkJsdXIoKSJ9LGFuaW1hdGlvbnM6W3BZLnRyYW5zZm9ybVBhbmVsV3JhcCxwWS50cmFuc2Zvcm1QYW5lbF0scHJvdmlkZXJzOlt7cHJvdmlkZTppVSx1c2VFeGlzdGluZzpPWX0se3Byb3ZpZGU6aEwsdXNlRXhpc3Rpbmc6T1l9XSxzdHlsZXM6WycubWF0LXNlbGVjdHtkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDoxMDAlO291dGxpbmU6bm9uZX0ubWF0LXNlbGVjdC10cmlnZ2Vye2Rpc3BsYXk6aW5saW5lLXRhYmxlO2N1cnNvcjpwb2ludGVyO3Bvc2l0aW9uOnJlbGF0aXZlO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LXNlbGVjdC1kaXNhYmxlZCAubWF0LXNlbGVjdC10cmlnZ2Vyey13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTtjdXJzb3I6ZGVmYXVsdH0ubWF0LXNlbGVjdC12YWx1ZXtkaXNwbGF5OnRhYmxlLWNlbGw7bWF4LXdpZHRoOjA7d2lkdGg6MTAwJTtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpczt3aGl0ZS1zcGFjZTpub3dyYXB9Lm1hdC1zZWxlY3QtdmFsdWUtdGV4dHt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXN9Lm1hdC1zZWxlY3QtYXJyb3ctd3JhcHBlcntkaXNwbGF5OnRhYmxlLWNlbGw7dmVydGljYWwtYWxpZ246bWlkZGxlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwgLm1hdC1zZWxlY3QtYXJyb3ctd3JhcHBlcnt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtc2VsZWN0LWFycm93LXdyYXBwZXJ7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTI1JSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmQubWF0LWZvcm0tZmllbGQtaGFzLWxhYmVsIC5tYXQtc2VsZWN0Om5vdCgubWF0LXNlbGVjdC1lbXB0eSkgLm1hdC1zZWxlY3QtYXJyb3ctd3JhcHBlcnt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZCAubWF0LXNlbGVjdC5tYXQtc2VsZWN0LWVtcHR5IC5tYXQtc2VsZWN0LWFycm93LXdyYXBwZXJ7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmQgLm1hdC1zZWxlY3QubWF0LXNlbGVjdC1lbXB0eSAubWF0LXNlbGVjdC1hcnJvdy13cmFwcGVye3RyYW5zaXRpb246bm9uZX0ubWF0LXNlbGVjdC1hcnJvd3t3aWR0aDowO2hlaWdodDowO2JvcmRlci1sZWZ0OjVweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItcmlnaHQ6NXB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci10b3A6NXB4IHNvbGlkO21hcmdpbjowIDRweH0ubWF0LXNlbGVjdC1wYW5lbC13cmFwe2ZsZXgtYmFzaXM6MTAwJX0ubWF0LXNlbGVjdC1wYW5lbHttaW4td2lkdGg6MTEycHg7bWF4LXdpZHRoOjI4MHB4O292ZXJmbG93OmF1dG87LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6dG91Y2g7cGFkZGluZy10b3A6MDtwYWRkaW5nLWJvdHRvbTowO21heC1oZWlnaHQ6MjU2cHg7bWluLXdpZHRoOjEwMCU7Ym9yZGVyLXJhZGl1czo0cHg7b3V0bGluZTowfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1zZWxlY3QtcGFuZWx7b3V0bGluZTpzb2xpZCAxcHh9Lm1hdC1zZWxlY3QtcGFuZWwgLm1hdC1vcHRncm91cC1sYWJlbCwubWF0LXNlbGVjdC1wYW5lbCAubWF0LW9wdGlvbntmb250LXNpemU6aW5oZXJpdDtsaW5lLWhlaWdodDozZW07aGVpZ2h0OjNlbX0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtc2VsZWN0Om5vdCgubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQpIC5tYXQtZm9ybS1maWVsZC1mbGV4e2N1cnNvcjpwb2ludGVyfS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1zZWxlY3QgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3dpZHRoOmNhbGMoMTAwJSAtIDE4cHgpfS5tYXQtc2VsZWN0LXBsYWNlaG9sZGVye3RyYW5zaXRpb246Y29sb3IgNDAwbXMgMTMzLjMzMzMzMzMzMzNtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKX0uX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1zZWxlY3QtcGxhY2Vob2xkZXJ7dHJhbnNpdGlvbjpub25lfS5tYXQtZm9ybS1maWVsZC1oaWRlLXBsYWNlaG9sZGVyIC5tYXQtc2VsZWN0LXBsYWNlaG9sZGVye2NvbG9yOnRyYW5zcGFyZW50Oy13ZWJraXQtdGV4dC1maWxsLWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246bm9uZTtkaXNwbGF5OmJsb2NrfS5tYXQtc2VsZWN0LW1pbi1saW5lOmVtcHR5OjpiZWZvcmV7Y29udGVudDoiICI7d2hpdGUtc3BhY2U6cHJlO3dpZHRoOjFweDtkaXNwbGF5OmlubGluZS1ibG9jaztvcGFjaXR5OjB9XG4nXX1dfV0sbnVsbCx7b3B0aW9uczpbe3R5cGU6b3IsYXJnczpbUEwse2Rlc2NlbmRhbnRzOiEwfV19XSxvcHRpb25Hcm91cHM6W3t0eXBlOm9yLGFyZ3M6W0NMLHtkZXNjZW5kYW50czohMH1dfV0sY3VzdG9tVHJpZ2dlcjpbe3R5cGU6aXIsYXJnczpbTVldfV19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIFBZe31mdW5jdGlvbiB3WSh0LGUpe2lmKDEmdCl7Y29uc3QgdD13ZigpO0NmKDAsInNwYW4iLDUpLFJmKCJjbGljayIsKGZ1bmN0aW9uIGUobil7UGkodCk7Y29uc3Qgbz16ZigpLiRpbXBsaWNpdDtyZXR1cm4gemYoKS5vbkFjdGl2ZVBsdWdpblNlbGVjdGlvbihuLG8uaWQpfSkpLFB1KDEpLE1mKCl9aWYoMiZ0KXtjb25zdCB0PXpmKCkuJGltcGxpY2l0O3ltKCJkYXRhLXBsdWdpbi1pZCIsdC5pZCksRGMoMSksa3UoIiAiLHQudGFiX25hbWUsIiAiKX19ZnVuY3Rpb24ga1kodCxlKXtpZigxJnQmJihDZigwLCJtYXQtdGFiIiwzKSxIbSgxLHdZLDIsMiwibmctdGVtcGxhdGUiLDQpLE1mKCkpLDImdCl7YmYoImRpc2FibGVkIiwhZS4kaW1wbGljaXQuZW5hYmxlZCl9fWZ1bmN0aW9uIFNZKHQsZSl7aWYoMSZ0JiYoQ2YoMCwibWF0LW9wdGlvbiIsOSksUHUoMSksTWYoKSksMiZ0KXtjb25zdCB0PWUuJGltcGxpY2l0O2JmKCJ2YWx1ZSIsdC5pZCkseW0oImRhdGEtcGx1Z2luLWlkIix0LmlkKSxEYygxKSxrdSgiICIsdC50YWJfbmFtZSwiICIpfX1mdW5jdGlvbiBEWSh0LGUpe2lmKDEmdCl7Y29uc3QgdD13ZigpO0NmKDAsIm1hdC1mb3JtLWZpZWxkIiw2KSxDZigxLCJtYXQtbGFiZWwiKSxQdSgyLCJJbmFjdGl2ZSIpLE1mKCksQ2YoMywibWF0LXNlbGVjdCIsNyksUmYoInNlbGVjdGlvbkNoYW5nZSIsKGZ1bmN0aW9uIGUobil7UGkodCk7cmV0dXJuIHpmKCkub25EaXNhYmxlZFBsdWdpblNlbGVjdGlvbkNoYW5nZWQobil9KSksSG0oNCxTWSwyLDMsIm1hdC1vcHRpb24iLDgpLE1mKCksTWYoKX1pZigyJnQpe2NvbnN0IHQ9emYoKTtEYygzKSxiZigidmFsdWUiLHQuc2VsZWN0ZWRQbHVnaW4pLERjKDEpLGJmKCJuZ0Zvck9mIix0LmRpc2FibGVkUGx1Z2lucyl9fVBZLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxQWSl9LFBZLsm1bW9kPWZvKHt0eXBlOlBZfSksUFkuybVpbmo9RG4oe3Byb3ZpZGVyczpbYlldLGltcG9ydHM6W1tyeCxvVixTTCxORl0sb0IsQ1UsU0wsTkZdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihQWSxbe3R5cGU6TF8sYXJnczpbe2ltcG9ydHM6W3J4LG9WLFNMLE5GXSxleHBvcnRzOltvQixDVSxPWSx2WSxTTCxORl0sZGVjbGFyYXRpb25zOltPWSx2WV0scHJvdmlkZXJzOltiWV19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhQWSx7ZGVjbGFyYXRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuW09ZLHZZXX0saW1wb3J0czpmdW5jdGlvbigpe3JldHVybltyeCxvVixTTCxORl19LGV4cG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bb0IsQ1UsT1ksdlksU0wsTkZdfX0pO2NsYXNzIFJZe2NvbnN0cnVjdG9yKCl7dGhpcy5vblBsdWdpblNlbGVjdGlvbkNoYW5nZWQ9bmV3IFN5fWdldEFjdGl2ZVBsdWdpbkluZGV4KCl7cmV0dXJuIHRoaXMuYWN0aXZlUGx1Z2lucy5maW5kSW5kZXgoKCh7aWQ6dH0pPT50PT09dGhpcy5zZWxlY3RlZFBsdWdpbikpfW9uQWN0aXZlUGx1Z2luU2VsZWN0aW9uKHQsZSl7dC5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLm9uUGx1Z2luU2VsZWN0aW9uQ2hhbmdlZC5lbWl0KGUpfW9uRGlzYWJsZWRQbHVnaW5TZWxlY3Rpb25DaGFuZ2VkKHQpe3RoaXMub25QbHVnaW5TZWxlY3Rpb25DaGFuZ2VkLmVtaXQodC52YWx1ZSl9fVJZLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxSWSl9LFJZLsm1Y21wPXNvKHt0eXBlOlJZLHNlbGVjdG9yczpbWyJwbHVnaW4tc2VsZWN0b3ItY29tcG9uZW50Il1dLGlucHV0czp7YWN0aXZlUGx1Z2luczoiYWN0aXZlUGx1Z2lucyIsZGlzYWJsZWRQbHVnaW5zOiJkaXNhYmxlZFBsdWdpbnMiLHNlbGVjdGVkUGx1Z2luOiJzZWxlY3RlZFBsdWdpbiJ9LG91dHB1dHM6e29uUGx1Z2luU2VsZWN0aW9uQ2hhbmdlZDoib25QbHVnaW5TZWxlY3Rpb25DaGFuZ2VkIn0sZGVjbHM6Myx2YXJzOjMsY29uc3RzOltbImFuaW1hdGlvbkR1cmF0aW9uIiwiMTAwbXMiLDEsImFjdGl2ZS1wbHVnaW4tbGlzdCIsMywic2VsZWN0ZWRJbmRleCJdLFszLCJkaXNhYmxlZCIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWyJmbG9hdExhYmVsIiwibmV2ZXIiLDQsIm5nSWYiXSxbMywiZGlzYWJsZWQiXSxbIm1hdC10YWItbGFiZWwiLCIiXSxbMSwicGx1Z2luLW5hbWUiLDMsImNsaWNrIl0sWyJmbG9hdExhYmVsIiwibmV2ZXIiXSxbMywidmFsdWUiLCJzZWxlY3Rpb25DaGFuZ2UiXSxbMywidmFsdWUiLDQsIm5nRm9yIiwibmdGb3JPZiJdLFszLCJ2YWx1ZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoQ2YoMCwibWF0LXRhYi1ncm91cCIsMCksSG0oMSxrWSwyLDEsIm1hdC10YWIiLDEpLE1mKCksSG0oMixEWSw1LDIsIm1hdC1mb3JtLWZpZWxkIiwyKSksMiZlJiYoYmYoInNlbGVjdGVkSW5kZXgiLG4uZ2V0QWN0aXZlUGx1Z2luSW5kZXgoKSksRGMoMSksYmYoIm5nRm9yT2YiLG4uYWN0aXZlUGx1Z2lucyksRGMoMSksYmYoIm5nSWYiLG4uZGlzYWJsZWRQbHVnaW5zLmxlbmd0aD4wKSl9LGRpcmVjdGl2ZXM6W1BqLHh2LFB2LGdqLG1qLF9VLGNVLE9ZLFBMXSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX1bX25naG9zdC0lQ09NUCVde2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7ZmxleDoxIDEgYXV0bztmb250LXNpemU6MTRweDtoZWlnaHQ6MTAwJTtvdmVyZmxvdzpoaWRkZW59bWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZsZXg6MCAwO21hcmdpbi10b3A6NXB4O3dpZHRoOjEzMHB4fW1hdC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIG1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVdLCBtYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo1MDA7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlfS5hY3RpdmUtcGx1Z2luLWxpc3RbX25nY29udGVudC0lQ09NUCVde2FsaWduLXNlbGY6c3RyZXRjaDtmbGV4OjEgMSBhdXRvO292ZXJmbG93OmhpZGRlbn0ucGx1Z2luLW5hbWVbX25nY29udGVudC0lQ09NUCVde2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmlubGluZS1mbGV4O2hlaWdodDoxMDAlO2p1c3RpZnktY29udGVudDpjZW50ZXI7cGFkZGluZzowIDEycHg7d2lkdGg6MTAwJX1bX25naG9zdC0lQ09NUCVdICAgICAuYWN0aXZlLXBsdWdpbi1saXN0Lm1hdC1wcmltYXJ5IC5tYXQtdGFiLWxpc3QgLm1hdC1pbmstYmFye2JhY2tncm91bmQtY29sb3I6Y3VycmVudENvbG9yfVtfbmdob3N0LSVDT01QJV0gICAgIC5hY3RpdmUtcGx1Z2luLWxpc3QgLm1hdC10YWItbGFiZWwsIFtfbmdob3N0LSVDT01QJV0gICAgIC5hY3RpdmUtcGx1Z2luLWxpc3QgLm1hdC10YWItbGlua3tjb2xvcjppbmhlcml0O29wYWNpdHk6Ljd9W19uZ2hvc3QtJUNPTVAlXSAgICAgLmFjdGl2ZS1wbHVnaW4tbGlzdCAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWxhYmVsLWFjdGl2ZSwgW19uZ2hvc3QtJUNPTVAlXSAgICAgLmFjdGl2ZS1wbHVnaW4tbGlzdCAubWF0LXRhYi1saW5rLm1hdC10YWItbGFiZWwtYWN0aXZle29wYWNpdHk6MX1bX25naG9zdC0lQ09NUCVdICAgICAuYWN0aXZlLXBsdWdpbi1saXN0IC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb257Ym9yZGVyLWNvbG9yOmN1cnJlbnRDb2xvcn1bX25naG9zdC0lQ09NUCVdICAgICAuYWN0aXZlLXBsdWdpbi1saXN0IC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVke3Zpc2liaWxpdHk6aGlkZGVufVtfbmdob3N0LSVDT01QJV0gICAgIC5hY3RpdmUtcGx1Z2luLWxpc3QgLm1hdC10YWItZGlzYWJsZWR7ZGlzcGxheTpub25lfVtfbmdob3N0LSVDT01QJV0gICAgIC5hY3RpdmUtcGx1Z2luLWxpc3QgbWF0LXRhYi1saXN0LCBbX25naG9zdC0lQ09NUCVdICAgICAuYWN0aXZlLXBsdWdpbi1saXN0IC5tYXQtdGFiLWhlYWRlciwgW19uZ2hvc3QtJUNPTVAlXSAgICAgLmFjdGl2ZS1wbHVnaW4tbGlzdCAubWF0LXRhYi1sYWJlbHMsIFtfbmdob3N0LSVDT01QJV0gICAgIC5hY3RpdmUtcGx1Z2luLWxpc3QgLm1hdC10YWItbGFiZWx7aGVpZ2h0OjEwMCV9W19uZ2hvc3QtJUNPTVAlXSAgICAgLmFjdGl2ZS1wbHVnaW4tbGlzdCAubWF0LXRhYi1sYWJlbHttaW4td2lkdGg6NDhweDtwYWRkaW5nOjA7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlfVtfbmdob3N0LSVDT01QJV0gICAgIC5hY3RpdmUtcGx1Z2luLWxpc3QgLm1hdC10YWItbGFiZWwtY29udGVudHtoZWlnaHQ6MTAwJX1bX25naG9zdC0lQ09NUCVdICAgICAuYWN0aXZlLXBsdWdpbi1saXN0IG1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWxpc3R7cGFkZGluZzowIDM2cHh9W19uZ2hvc3QtJUNPTVAlXSAgICAgLmFjdGl2ZS1wbHVnaW4tbGlzdCBtYXQtdGFiLWhlYWRlcj46Zmlyc3QtY2hpbGQsIFtfbmdob3N0LSVDT01QJV0gICAgIC5hY3RpdmUtcGx1Z2luLWxpc3QgbWF0LXRhYi1oZWFkZXI+Lm1hdC10YWItbGFiZWwtY29udGFpbmVyLCBbX25naG9zdC0lQ09NUCVdICAgICAuYWN0aXZlLXBsdWdpbi1saXN0IG1hdC10YWItaGVhZGVyPjpsYXN0LWNoaWxke2JvdHRvbTowO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowfVtfbmdob3N0LSVDT01QJV0gICAgIC5hY3RpdmUtcGx1Z2luLWxpc3QgbWF0LXRhYi1oZWFkZXI+OmZpcnN0LWNoaWxkLCBbX25naG9zdC0lQ09NUCVdICAgICAuYWN0aXZlLXBsdWdpbi1saXN0IG1hdC10YWItaGVhZGVyPi5tYXQtdGFiLWxhYmVsLWNvbnRhaW5lcntsZWZ0OjB9W19uZ2hvc3QtJUNPTVAlXSAgICAgLmFjdGl2ZS1wbHVnaW4tbGlzdCBtYXQtdGFiLWhlYWRlcj46bGFzdC1jaGlsZCwgW19uZ2hvc3QtJUNPTVAlXSAgICAgLmFjdGl2ZS1wbHVnaW4tbGlzdCBtYXQtdGFiLWhlYWRlcj4ubWF0LXRhYi1sYWJlbC1jb250YWluZXJ7cmlnaHQ6MH1bX25naG9zdC0lQ09NUCVdICAgICAuYWN0aXZlLXBsdWdpbi1saXN0IG1hdC10YWItaGVhZGVyPi5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9ue2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH1ib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAgIC5hY3RpdmUtcGx1Z2luLWxpc3QgbWF0LXRhYi1oZWFkZXI+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb257YmFja2dyb3VuZC1jb2xvcjojZWY2YzAwfSddfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihSWSxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJwbHVnaW4tc2VsZWN0b3ItY29tcG9uZW50Iix0ZW1wbGF0ZVVybDoiLi9wbHVnaW5fc2VsZWN0b3JfY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbIi4vcGx1Z2luX3NlbGVjdG9yX2NvbXBvbmVudC5jc3MiXX1dfV0sbnVsbCx7YWN0aXZlUGx1Z2luczpbe3R5cGU6Ul99XSxkaXNhYmxlZFBsdWdpbnM6W3t0eXBlOlJffV0sc2VsZWN0ZWRQbHVnaW46W3t0eXBlOlJffV0sb25QbHVnaW5TZWxlY3Rpb25DaGFuZ2VkOlt7dHlwZTpFX31dfSk7Y29uc3QgRVk9YlMoblQsKHQ9Pk9iamVjdC5rZXlzKHQpLm1hcCgoZT0+T2JqZWN0LmFzc2lnbih7fSx7aWQ6ZX0sdFtlXSkpKSkpLEFZPWJTKEVZLCh0PT50LmZpbHRlcigodD0+IXQuZW5hYmxlZCkpKSk7Y2xhc3MgVFl7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMuYWN0aXZlUGx1Z2luJD10aGlzLnN0b3JlLnBpcGUoclMoZVQpKSx0aGlzLnBsdWdpbnMkPXRoaXMuc3RvcmUucGlwZShyUyhFWSkpLHRoaXMuZGlzYWJsZWRQbHVnaW5zJD10aGlzLnN0b3JlLnBpcGUoclMoQVkpKX1vblBsdWdpblNlbGVjdGlvbkNoYW5nZSh0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKFpFKHtwbHVnaW46dH0pKX19ZnVuY3Rpb24gTlkodCxlKXt9VFkuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFRZKShnZihpUykpfSxUWS7JtWNtcD1zbyh7dHlwZTpUWSxzZWxlY3RvcnM6W1sicGx1Z2luLXNlbGVjdG9yIl1dLGRlY2xzOjQsdmFyczo5LGNvbnN0czpbWzMsImFjdGl2ZVBsdWdpbnMiLCJkaXNhYmxlZFBsdWdpbnMiLCJzZWxlY3RlZFBsdWdpbiIsIm9uUGx1Z2luU2VsZWN0aW9uQ2hhbmdlZCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoQ2YoMCwicGx1Z2luLXNlbGVjdG9yLWNvbXBvbmVudCIsMCksUmYoIm9uUGx1Z2luU2VsZWN0aW9uQ2hhbmdlZCIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25QbHVnaW5TZWxlY3Rpb25DaGFuZ2UoZSl9KSksX3koMSwiYXN5bmMiKSxfeSgyLCJhc3luYyIpLF95KDMsImFzeW5jIiksTWYoKSksMiZlJiZiZigiYWN0aXZlUGx1Z2lucyIsQ3koMSwzLG4ucGx1Z2lucyQpKSgiZGlzYWJsZWRQbHVnaW5zIixDeSgyLDUsbi5kaXNhYmxlZFBsdWdpbnMkKSkoInNlbGVjdGVkUGx1Z2luIixDeSgzLDcsbi5hY3RpdmVQbHVnaW4kKSl9LGRpcmVjdGl2ZXM6W1JZXSxwaXBlczpbVnZdLGVuY2Fwc3VsYXRpb246Mn0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoVFksW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoicGx1Z2luLXNlbGVjdG9yIix0ZW1wbGF0ZTonXG4gICAgPHBsdWdpbi1zZWxlY3Rvci1jb21wb25lbnRcbiAgICAgIFthY3RpdmVQbHVnaW5zXT0icGx1Z2lucyQgfCBhc3luYyJcbiAgICAgIFtkaXNhYmxlZFBsdWdpbnNdPSJkaXNhYmxlZFBsdWdpbnMkIHwgYXN5bmMiXG4gICAgICBbc2VsZWN0ZWRQbHVnaW5dPSJhY3RpdmVQbHVnaW4kIHwgYXN5bmMiXG4gICAgICAob25QbHVnaW5TZWxlY3Rpb25DaGFuZ2VkKT0ib25QbHVnaW5TZWxlY3Rpb25DaGFuZ2UoJGV2ZW50KSJcbiAgICA+PC9wbHVnaW4tc2VsZWN0b3ItY29tcG9uZW50PlxuICAnfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6aVN9XX0pLG51bGwpO2NsYXNzIHpZe2NvbnN0cnVjdG9yKCl7dGhpcy5yb2xlPSJkaWFsb2ciLHRoaXMucGFuZWxDbGFzcz0iIix0aGlzLmhhc0JhY2tkcm9wPSEwLHRoaXMuYmFja2Ryb3BDbGFzcz0iIix0aGlzLmRpc2FibGVDbG9zZT0hMSx0aGlzLndpZHRoPSIiLHRoaXMuaGVpZ2h0PSIiLHRoaXMubWF4V2lkdGg9IjgwdnciLHRoaXMuZGF0YT1udWxsLHRoaXMuYXJpYURlc2NyaWJlZEJ5PW51bGwsdGhpcy5hcmlhTGFiZWxsZWRCeT1udWxsLHRoaXMuYXJpYUxhYmVsPW51bGwsdGhpcy5hdXRvRm9jdXM9ITAsdGhpcy5yZXN0b3JlRm9jdXM9ITAsdGhpcy5jbG9zZU9uTmF2aWdhdGlvbj0hMH19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NvbnN0IElZPXtkaWFsb2dDb250YWluZXI6eE8oImRpYWxvZ0NvbnRhaW5lciIsW2tPKCJ2b2lkLCBleGl0Iix3Tyh7b3BhY2l0eTowLHRyYW5zZm9ybToic2NhbGUoMC43KSJ9KSksa08oImVudGVyIix3Tyh7dHJhbnNmb3JtOiJub25lIn0pKSxETygiKiA9PiBlbnRlciIsT08oIjE1MG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpIix3Tyh7dHJhbnNmb3JtOiJub25lIixvcGFjaXR5OjF9KSkpLERPKCIqID0+IHZvaWQsICogPT4gZXhpdCIsT08oIjc1bXMgY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAwLjIsIDEpIix3Tyh7b3BhY2l0eTowfSkpKV0pfTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gSFkoKXt0aHJvdyBFcnJvcigiQXR0ZW1wdGluZyB0byBhdHRhY2ggZGlhbG9nIGNvbnRlbnQgYWZ0ZXIgY29udGVudCBpcyBhbHJlYWR5IGF0dGFjaGVkIil9Y2xhc3MgRlkgZXh0ZW5kcyBkQntjb25zdHJ1Y3Rvcih0LGUsbixvLGksYSl7c3VwZXIoKSx0aGlzLl9lbGVtZW50UmVmPXQsdGhpcy5fZm9jdXNUcmFwRmFjdG9yeT1lLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmPW4sdGhpcy5fY29uZmlnPWksdGhpcy5fZm9jdXNNb25pdG9yPWEsdGhpcy5fYW5pbWF0aW9uU3RhdGVDaGFuZ2VkPW5ldyBTeSx0aGlzLl9lbGVtZW50Rm9jdXNlZEJlZm9yZURpYWxvZ1dhc09wZW5lZD1udWxsLHRoaXMuX2Nsb3NlSW50ZXJhY3Rpb25UeXBlPW51bGwsdGhpcy5hdHRhY2hEb21Qb3J0YWw9dD0+KHRoaXMuX3BvcnRhbE91dGxldC5oYXNBdHRhY2hlZCgpJiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJkhZKCksdGhpcy5fcG9ydGFsT3V0bGV0LmF0dGFjaERvbVBvcnRhbCh0KSksdGhpcy5fYXJpYUxhYmVsbGVkQnk9aS5hcmlhTGFiZWxsZWRCeXx8bnVsbCx0aGlzLl9kb2N1bWVudD1vfV9pbml0aWFsaXplV2l0aEF0dGFjaGVkQ29udGVudCgpe3RoaXMuX3NldHVwRm9jdXNUcmFwKCksdGhpcy5fY2FwdHVyZVByZXZpb3VzbHlGb2N1c2VkRWxlbWVudCgpLHRoaXMuX2ZvY3VzRGlhbG9nQ29udGFpbmVyKCl9YXR0YWNoQ29tcG9uZW50UG9ydGFsKHQpe3JldHVybiB0aGlzLl9wb3J0YWxPdXRsZXQuaGFzQXR0YWNoZWQoKSYmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZIWSgpLHRoaXMuX3BvcnRhbE91dGxldC5hdHRhY2hDb21wb25lbnRQb3J0YWwodCl9YXR0YWNoVGVtcGxhdGVQb3J0YWwodCl7cmV0dXJuIHRoaXMuX3BvcnRhbE91dGxldC5oYXNBdHRhY2hlZCgpJiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJkhZKCksdGhpcy5fcG9ydGFsT3V0bGV0LmF0dGFjaFRlbXBsYXRlUG9ydGFsKHQpfV9yZWNhcHR1cmVGb2N1cygpe2lmKCF0aGlzLl9jb250YWluc0ZvY3VzKCkpeyghdGhpcy5fY29uZmlnLmF1dG9Gb2N1c3x8IXRoaXMuX2ZvY3VzVHJhcC5mb2N1c0luaXRpYWxFbGVtZW50KCkpJiZ0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKX19X3RyYXBGb2N1cygpe3RoaXMuX2NvbmZpZy5hdXRvRm9jdXM/dGhpcy5fZm9jdXNUcmFwLmZvY3VzSW5pdGlhbEVsZW1lbnRXaGVuUmVhZHkoKTp0aGlzLl9jb250YWluc0ZvY3VzKCl8fHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpfV9yZXN0b3JlRm9jdXMoKXtjb25zdCB0PXRoaXMuX2VsZW1lbnRGb2N1c2VkQmVmb3JlRGlhbG9nV2FzT3BlbmVkO2lmKHRoaXMuX2NvbmZpZy5yZXN0b3JlRm9jdXMmJnQmJiJmdW5jdGlvbiI9PXR5cGVvZiB0LmZvY3VzKXtjb25zdCBlPU1IKCksbj10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7ZSYmZSE9PXRoaXMuX2RvY3VtZW50LmJvZHkmJmUhPT1uJiYhbi5jb250YWlucyhlKXx8KHRoaXMuX2ZvY3VzTW9uaXRvcj8odGhpcy5fZm9jdXNNb25pdG9yLmZvY3VzVmlhKHQsdGhpcy5fY2xvc2VJbnRlcmFjdGlvblR5cGUpLHRoaXMuX2Nsb3NlSW50ZXJhY3Rpb25UeXBlPW51bGwpOnQuZm9jdXMoKSl9dGhpcy5fZm9jdXNUcmFwJiZ0aGlzLl9mb2N1c1RyYXAuZGVzdHJveSgpfV9zZXR1cEZvY3VzVHJhcCgpe3RoaXMuX2ZvY3VzVHJhcD10aGlzLl9mb2N1c1RyYXBGYWN0b3J5LmNyZWF0ZSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpfV9jYXB0dXJlUHJldmlvdXNseUZvY3VzZWRFbGVtZW50KCl7dGhpcy5fZG9jdW1lbnQmJih0aGlzLl9lbGVtZW50Rm9jdXNlZEJlZm9yZURpYWxvZ1dhc09wZW5lZD1NSCgpKX1fZm9jdXNEaWFsb2dDb250YWluZXIoKXt0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXMmJnRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpfV9jb250YWluc0ZvY3VzKCl7Y29uc3QgdD10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsZT1NSCgpO3JldHVybiB0PT09ZXx8dC5jb250YWlucyhlKX19RlkuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEZZKShnZihLaCksZ2YoV0gpLGdmKE9iKSxnZihzTSw4KSxnZih6WSksZ2YoZkYpKX0sRlkuybVkaXI9aG8oe3R5cGU6Rlksdmlld1F1ZXJ5OmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJlZ5KHVCLDcpLDImZSl7bGV0IHQ7QnkodD1VeSgpKSYmKG4uX3BvcnRhbE91dGxldD10LmZpcnN0KX19LGZlYXR1cmVzOltRcF19KSxGWS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOktofSx7dHlwZTpXSH0se3R5cGU6T2J9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbc01dfV19LHt0eXBlOnpZfSx7dHlwZTpmRn1dLEZZLnByb3BEZWNvcmF0b3JzPXtfcG9ydGFsT3V0bGV0Olt7dHlwZTphcixhcmdzOlt1Qix7c3RhdGljOiEwfV19XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihGWSxbe3R5cGU6a199XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6S2h9LHt0eXBlOldIfSx7dHlwZTpPYn0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltzTV19XX0se3R5cGU6ell9LHt0eXBlOmZGfV19KSx7X3BvcnRhbE91dGxldDpbe3R5cGU6YXIsYXJnczpbdUIse3N0YXRpYzohMH1dfV19KTtjbGFzcyBMWSBleHRlbmRzIEZZe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9zdGF0ZT0iZW50ZXIifV9vbkFuaW1hdGlvbkRvbmUoe3RvU3RhdGU6dCx0b3RhbFRpbWU6ZX0peyJlbnRlciI9PT10Pyh0aGlzLl90cmFwRm9jdXMoKSx0aGlzLl9hbmltYXRpb25TdGF0ZUNoYW5nZWQubmV4dCh7c3RhdGU6Im9wZW5lZCIsdG90YWxUaW1lOmV9KSk6ImV4aXQiPT09dCYmKHRoaXMuX3Jlc3RvcmVGb2N1cygpLHRoaXMuX2FuaW1hdGlvblN0YXRlQ2hhbmdlZC5uZXh0KHtzdGF0ZToiY2xvc2VkIix0b3RhbFRpbWU6ZX0pKX1fb25BbmltYXRpb25TdGFydCh7dG9TdGF0ZTp0LHRvdGFsVGltZTplfSl7ImVudGVyIj09PXQ/dGhpcy5fYW5pbWF0aW9uU3RhdGVDaGFuZ2VkLm5leHQoe3N0YXRlOiJvcGVuaW5nIix0b3RhbFRpbWU6ZX0pOiJleGl0IiE9PXQmJiJ2b2lkIiE9PXR8fHRoaXMuX2FuaW1hdGlvblN0YXRlQ2hhbmdlZC5uZXh0KHtzdGF0ZToiY2xvc2luZyIsdG90YWxUaW1lOmV9KX1fc3RhcnRFeGl0QW5pbWF0aW9uKCl7dGhpcy5fc3RhdGU9ImV4aXQiLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpfX1MWS7JtWZhYz0oZnVuY3Rpb24oKXtsZXQgdDtyZXR1cm4gZnVuY3Rpb24gZShuKXtyZXR1cm4odHx8KHQ9VWEoTFkpKSkobnx8TFkpfX0pKCksTFkuybVjbXA9c28oe3R5cGU6TFksc2VsZWN0b3JzOltbIm1hdC1kaWFsb2ctY29udGFpbmVyIl1dLGhvc3RBdHRyczpbInRhYmluZGV4IiwiLTEiLCJhcmlhLW1vZGFsIiwidHJ1ZSIsMSwibWF0LWRpYWxvZy1jb250YWluZXIiXSxob3N0VmFyczo2LGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MSZlJiZFZigiQGRpYWxvZ0NvbnRhaW5lci5zdGFydCIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uX29uQW5pbWF0aW9uU3RhcnQoZSl9KSkoIkBkaWFsb2dDb250YWluZXIuZG9uZSIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uX29uQW5pbWF0aW9uRG9uZShlKX0pKSwyJmUmJihjZygiaWQiLG4uX2lkKSx5bSgicm9sZSIsbi5fY29uZmlnLnJvbGUpKCJhcmlhLWxhYmVsbGVkYnkiLG4uX2NvbmZpZy5hcmlhTGFiZWw/bnVsbDpuLl9hcmlhTGFiZWxsZWRCeSkoImFyaWEtbGFiZWwiLG4uX2NvbmZpZy5hcmlhTGFiZWwpKCJhcmlhLWRlc2NyaWJlZGJ5IixuLl9jb25maWcuYXJpYURlc2NyaWJlZEJ5fHxudWxsKSxkZygiQGRpYWxvZ0NvbnRhaW5lciIsbi5fc3RhdGUpKX0sZmVhdHVyZXM6W1FwXSxkZWNsczoxLHZhcnM6MCxjb25zdHM6W1siY2RrUG9ydGFsT3V0bGV0IiwiIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJkhtKDAsTlksMCwwLCJuZy10ZW1wbGF0ZSIsMCl9LGRpcmVjdGl2ZXM6W3VCXSxzdHlsZXM6WyIubWF0LWRpYWxvZy1jb250YWluZXJ7ZGlzcGxheTpibG9jaztwYWRkaW5nOjI0cHg7Ym9yZGVyLXJhZGl1czo0cHg7Ym94LXNpemluZzpib3JkZXItYm94O292ZXJmbG93OmF1dG87b3V0bGluZTowO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7bWluLWhlaWdodDppbmhlcml0O21heC1oZWlnaHQ6aW5oZXJpdH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtZGlhbG9nLWNvbnRhaW5lcntvdXRsaW5lOnNvbGlkIDFweH0ubWF0LWRpYWxvZy1jb250ZW50e2Rpc3BsYXk6YmxvY2s7bWFyZ2luOjAgLTI0cHg7cGFkZGluZzowIDI0cHg7bWF4LWhlaWdodDo2NXZoO292ZXJmbG93OmF1dG87LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6dG91Y2h9Lm1hdC1kaWFsb2ctdGl0bGV7bWFyZ2luOjAgMCAyMHB4O2Rpc3BsYXk6YmxvY2t9Lm1hdC1kaWFsb2ctYWN0aW9uc3twYWRkaW5nOjhweCAwO2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDttaW4taGVpZ2h0OjUycHg7YWxpZ24taXRlbXM6Y2VudGVyO2JveC1zaXppbmc6Y29udGVudC1ib3g7bWFyZ2luLWJvdHRvbTotMjRweH0ubWF0LWRpYWxvZy1hY3Rpb25zW2FsaWduPWVuZF17anVzdGlmeS1jb250ZW50OmZsZXgtZW5kfS5tYXQtZGlhbG9nLWFjdGlvbnNbYWxpZ249Y2VudGVyXXtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS5tYXQtZGlhbG9nLWFjdGlvbnMgLm1hdC1idXR0b24tYmFzZSsubWF0LWJ1dHRvbi1iYXNlLC5tYXQtZGlhbG9nLWFjdGlvbnMgLm1hdC1tZGMtYnV0dG9uLWJhc2UrLm1hdC1tZGMtYnV0dG9uLWJhc2V7bWFyZ2luLWxlZnQ6OHB4fVtkaXI9cnRsXSAubWF0LWRpYWxvZy1hY3Rpb25zIC5tYXQtYnV0dG9uLWJhc2UrLm1hdC1idXR0b24tYmFzZSxbZGlyPXJ0bF0gLm1hdC1kaWFsb2ctYWN0aW9ucyAubWF0LW1kYy1idXR0b24tYmFzZSsubWF0LW1kYy1idXR0b24tYmFzZXttYXJnaW4tbGVmdDowO21hcmdpbi1yaWdodDo4cHh9XG4iXSxlbmNhcHN1bGF0aW9uOjIsZGF0YTp7YW5pbWF0aW9uOltJWS5kaWFsb2dDb250YWluZXJdfX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoTFksW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoibWF0LWRpYWxvZy1jb250YWluZXIiLHRlbXBsYXRlOiI8bmctdGVtcGxhdGUgY2RrUG9ydGFsT3V0bGV0PjwvbmctdGVtcGxhdGU+XG4iLGVuY2Fwc3VsYXRpb246V24uTm9uZSxjaGFuZ2VEZXRlY3Rpb246am4uRGVmYXVsdCxhbmltYXRpb25zOltJWS5kaWFsb2dDb250YWluZXJdLGhvc3Q6e2NsYXNzOiJtYXQtZGlhbG9nLWNvbnRhaW5lciIsdGFiaW5kZXg6Ii0xIiwiYXJpYS1tb2RhbCI6InRydWUiLCJbaWRdIjoiX2lkIiwiW2F0dHIucm9sZV0iOiJfY29uZmlnLnJvbGUiLCJbYXR0ci5hcmlhLWxhYmVsbGVkYnldIjoiX2NvbmZpZy5hcmlhTGFiZWwgPyBudWxsIDogX2FyaWFMYWJlbGxlZEJ5IiwiW2F0dHIuYXJpYS1sYWJlbF0iOiJfY29uZmlnLmFyaWFMYWJlbCIsIlthdHRyLmFyaWEtZGVzY3JpYmVkYnldIjoiX2NvbmZpZy5hcmlhRGVzY3JpYmVkQnkgfHwgbnVsbCIsIltAZGlhbG9nQ29udGFpbmVyXSI6Il9zdGF0ZSIsIihAZGlhbG9nQ29udGFpbmVyLnN0YXJ0KSI6Il9vbkFuaW1hdGlvblN0YXJ0KCRldmVudCkiLCIoQGRpYWxvZ0NvbnRhaW5lci5kb25lKSI6Il9vbkFuaW1hdGlvbkRvbmUoJGV2ZW50KSJ9LHN0eWxlczpbIi5tYXQtZGlhbG9nLWNvbnRhaW5lcntkaXNwbGF5OmJsb2NrO3BhZGRpbmc6MjRweDtib3JkZXItcmFkaXVzOjRweDtib3gtc2l6aW5nOmJvcmRlci1ib3g7b3ZlcmZsb3c6YXV0bztvdXRsaW5lOjA7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTttaW4taGVpZ2h0OmluaGVyaXQ7bWF4LWhlaWdodDppbmhlcml0fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1kaWFsb2ctY29udGFpbmVye291dGxpbmU6c29saWQgMXB4fS5tYXQtZGlhbG9nLWNvbnRlbnR7ZGlzcGxheTpibG9jazttYXJnaW46MCAtMjRweDtwYWRkaW5nOjAgMjRweDttYXgtaGVpZ2h0OjY1dmg7b3ZlcmZsb3c6YXV0bzstd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzp0b3VjaH0ubWF0LWRpYWxvZy10aXRsZXttYXJnaW46MCAwIDIwcHg7ZGlzcGxheTpibG9ja30ubWF0LWRpYWxvZy1hY3Rpb25ze3BhZGRpbmc6OHB4IDA7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO21pbi1oZWlnaHQ6NTJweDthbGlnbi1pdGVtczpjZW50ZXI7Ym94LXNpemluZzpjb250ZW50LWJveDttYXJnaW4tYm90dG9tOi0yNHB4fS5tYXQtZGlhbG9nLWFjdGlvbnNbYWxpZ249ZW5kXXtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmR9Lm1hdC1kaWFsb2ctYWN0aW9uc1thbGlnbj1jZW50ZXJde2p1c3RpZnktY29udGVudDpjZW50ZXJ9Lm1hdC1kaWFsb2ctYWN0aW9ucyAubWF0LWJ1dHRvbi1iYXNlKy5tYXQtYnV0dG9uLWJhc2UsLm1hdC1kaWFsb2ctYWN0aW9ucyAubWF0LW1kYy1idXR0b24tYmFzZSsubWF0LW1kYy1idXR0b24tYmFzZXttYXJnaW4tbGVmdDo4cHh9W2Rpcj1ydGxdIC5tYXQtZGlhbG9nLWFjdGlvbnMgLm1hdC1idXR0b24tYmFzZSsubWF0LWJ1dHRvbi1iYXNlLFtkaXI9cnRsXSAubWF0LWRpYWxvZy1hY3Rpb25zIC5tYXQtbWRjLWJ1dHRvbi1iYXNlKy5tYXQtbWRjLWJ1dHRvbi1iYXNle21hcmdpbi1sZWZ0OjA7bWFyZ2luLXJpZ2h0OjhweH1cbiJdfV19XSxudWxsLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KbGV0IEJZPTA7Y2xhc3MgVll7Y29uc3RydWN0b3IodCxlLG49Im1hdC1kaWFsb2ctIitCWSsrKXt0aGlzLl9vdmVybGF5UmVmPXQsdGhpcy5fY29udGFpbmVySW5zdGFuY2U9ZSx0aGlzLmlkPW4sdGhpcy5kaXNhYmxlQ2xvc2U9dGhpcy5fY29udGFpbmVySW5zdGFuY2UuX2NvbmZpZy5kaXNhYmxlQ2xvc2UsdGhpcy5fYWZ0ZXJPcGVuZWQ9bmV3IEIsdGhpcy5fYWZ0ZXJDbG9zZWQ9bmV3IEIsdGhpcy5fYmVmb3JlQ2xvc2VkPW5ldyBCLHRoaXMuX3N0YXRlPTAsZS5faWQ9bixlLl9hbmltYXRpb25TdGF0ZUNoYW5nZWQucGlwZSh1ZSgodD0+Im9wZW5lZCI9PT10LnN0YXRlKSksdmUoMSkpLnN1YnNjcmliZSgoKCk9Pnt0aGlzLl9hZnRlck9wZW5lZC5uZXh0KCksdGhpcy5fYWZ0ZXJPcGVuZWQuY29tcGxldGUoKX0pKSxlLl9hbmltYXRpb25TdGF0ZUNoYW5nZWQucGlwZSh1ZSgodD0+ImNsb3NlZCI9PT10LnN0YXRlKSksdmUoMSkpLnN1YnNjcmliZSgoKCk9PntjbGVhclRpbWVvdXQodGhpcy5fY2xvc2VGYWxsYmFja1RpbWVvdXQpLHRoaXMuX2ZpbmlzaERpYWxvZ0Nsb3NlKCl9KSksdC5kZXRhY2htZW50cygpLnN1YnNjcmliZSgoKCk9Pnt0aGlzLl9iZWZvcmVDbG9zZWQubmV4dCh0aGlzLl9yZXN1bHQpLHRoaXMuX2JlZm9yZUNsb3NlZC5jb21wbGV0ZSgpLHRoaXMuX2FmdGVyQ2xvc2VkLm5leHQodGhpcy5fcmVzdWx0KSx0aGlzLl9hZnRlckNsb3NlZC5jb21wbGV0ZSgpLHRoaXMuY29tcG9uZW50SW5zdGFuY2U9bnVsbCx0aGlzLl9vdmVybGF5UmVmLmRpc3Bvc2UoKX0pKSx0LmtleWRvd25FdmVudHMoKS5waXBlKHVlKCh0PT50LmtleUNvZGU9PT1LSSYmIXRoaXMuZGlzYWJsZUNsb3NlJiYhdEgodCkpKSkuc3Vic2NyaWJlKCh0PT57dC5wcmV2ZW50RGVmYXVsdCgpLGpZKHRoaXMsImtleWJvYXJkIil9KSksdC5iYWNrZHJvcENsaWNrKCkuc3Vic2NyaWJlKCgoKT0+e3RoaXMuZGlzYWJsZUNsb3NlP3RoaXMuX2NvbnRhaW5lckluc3RhbmNlLl9yZWNhcHR1cmVGb2N1cygpOmpZKHRoaXMsIm1vdXNlIil9KSl9Y2xvc2UodCl7dGhpcy5fcmVzdWx0PXQsdGhpcy5fY29udGFpbmVySW5zdGFuY2UuX2FuaW1hdGlvblN0YXRlQ2hhbmdlZC5waXBlKHVlKCh0PT4iY2xvc2luZyI9PT10LnN0YXRlKSksdmUoMSkpLnN1YnNjcmliZSgoZT0+e3RoaXMuX2JlZm9yZUNsb3NlZC5uZXh0KHQpLHRoaXMuX2JlZm9yZUNsb3NlZC5jb21wbGV0ZSgpLHRoaXMuX292ZXJsYXlSZWYuZGV0YWNoQmFja2Ryb3AoKSx0aGlzLl9jbG9zZUZhbGxiYWNrVGltZW91dD1zZXRUaW1lb3V0KCgoKT0+dGhpcy5fZmluaXNoRGlhbG9nQ2xvc2UoKSksZS50b3RhbFRpbWUrMTAwKX0pKSx0aGlzLl9zdGF0ZT0xLHRoaXMuX2NvbnRhaW5lckluc3RhbmNlLl9zdGFydEV4aXRBbmltYXRpb24oKX1hZnRlck9wZW5lZCgpe3JldHVybiB0aGlzLl9hZnRlck9wZW5lZH1hZnRlckNsb3NlZCgpe3JldHVybiB0aGlzLl9hZnRlckNsb3NlZH1iZWZvcmVDbG9zZWQoKXtyZXR1cm4gdGhpcy5fYmVmb3JlQ2xvc2VkfWJhY2tkcm9wQ2xpY2soKXtyZXR1cm4gdGhpcy5fb3ZlcmxheVJlZi5iYWNrZHJvcENsaWNrKCl9a2V5ZG93bkV2ZW50cygpe3JldHVybiB0aGlzLl9vdmVybGF5UmVmLmtleWRvd25FdmVudHMoKX11cGRhdGVQb3NpdGlvbih0KXtsZXQgZT10aGlzLl9nZXRQb3NpdGlvblN0cmF0ZWd5KCk7cmV0dXJuIHQmJih0LmxlZnR8fHQucmlnaHQpP3QubGVmdD9lLmxlZnQodC5sZWZ0KTplLnJpZ2h0KHQucmlnaHQpOmUuY2VudGVySG9yaXpvbnRhbGx5KCksdCYmKHQudG9wfHx0LmJvdHRvbSk/dC50b3A/ZS50b3AodC50b3ApOmUuYm90dG9tKHQuYm90dG9tKTplLmNlbnRlclZlcnRpY2FsbHkoKSx0aGlzLl9vdmVybGF5UmVmLnVwZGF0ZVBvc2l0aW9uKCksdGhpc311cGRhdGVTaXplKHQ9IiIsZT0iIil7cmV0dXJuIHRoaXMuX292ZXJsYXlSZWYudXBkYXRlU2l6ZSh7d2lkdGg6dCxoZWlnaHQ6ZX0pLHRoaXMuX292ZXJsYXlSZWYudXBkYXRlUG9zaXRpb24oKSx0aGlzfWFkZFBhbmVsQ2xhc3ModCl7cmV0dXJuIHRoaXMuX292ZXJsYXlSZWYuYWRkUGFuZWxDbGFzcyh0KSx0aGlzfXJlbW92ZVBhbmVsQ2xhc3ModCl7cmV0dXJuIHRoaXMuX292ZXJsYXlSZWYucmVtb3ZlUGFuZWxDbGFzcyh0KSx0aGlzfWdldFN0YXRlKCl7cmV0dXJuIHRoaXMuX3N0YXRlfV9maW5pc2hEaWFsb2dDbG9zZSgpe3RoaXMuX3N0YXRlPTIsdGhpcy5fb3ZlcmxheVJlZi5kaXNwb3NlKCl9X2dldFBvc2l0aW9uU3RyYXRlZ3koKXtyZXR1cm4gdGhpcy5fb3ZlcmxheVJlZi5nZXRDb25maWcoKS5wb3NpdGlvblN0cmF0ZWd5fX1mdW5jdGlvbiBqWSh0LGUsbil7cmV0dXJuIHZvaWQgMCE9PXQuX2NvbnRhaW5lckluc3RhbmNlJiYodC5fY29udGFpbmVySW5zdGFuY2UuX2Nsb3NlSW50ZXJhY3Rpb25UeXBlPWUpLHQuY2xvc2Uobil9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NvbnN0IFVZPW5ldyBlcigiTWF0RGlhbG9nRGF0YSIpLFdZPW5ldyBlcigibWF0LWRpYWxvZy1kZWZhdWx0LW9wdGlvbnMiKSxHWT1uZXcgZXIoIm1hdC1kaWFsb2ctc2Nyb2xsLXN0cmF0ZWd5Iik7Y29uc3QgWVk9e3Byb3ZpZGU6R1ksZGVwczpbS0JdLHVzZUZhY3Rvcnk6ZnVuY3Rpb24gcVkodCl7cmV0dXJuKCk9PnQuc2Nyb2xsU3RyYXRlZ2llcy5ibG9jaygpfX07Y2xhc3MgWll7Y29uc3RydWN0b3IodCxlLG4sbyxpLGEscixzLGwpe3RoaXMuX292ZXJsYXk9dCx0aGlzLl9pbmplY3Rvcj1lLHRoaXMuX2RlZmF1bHRPcHRpb25zPW4sdGhpcy5fcGFyZW50RGlhbG9nPW8sdGhpcy5fb3ZlcmxheUNvbnRhaW5lcj1pLHRoaXMuX2RpYWxvZ1JlZkNvbnN0cnVjdG9yPXIsdGhpcy5fZGlhbG9nQ29udGFpbmVyVHlwZT1zLHRoaXMuX2RpYWxvZ0RhdGFUb2tlbj1sLHRoaXMuX29wZW5EaWFsb2dzQXRUaGlzTGV2ZWw9W10sdGhpcy5fYWZ0ZXJBbGxDbG9zZWRBdFRoaXNMZXZlbD1uZXcgQix0aGlzLl9hZnRlck9wZW5lZEF0VGhpc0xldmVsPW5ldyBCLHRoaXMuX2FyaWFIaWRkZW5FbGVtZW50cz1uZXcgTWFwLHRoaXMuYWZ0ZXJBbGxDbG9zZWQ9b2UoKCgpPT50aGlzLm9wZW5EaWFsb2dzLmxlbmd0aD90aGlzLl9nZXRBZnRlckFsbENsb3NlZCgpOnRoaXMuX2dldEFmdGVyQWxsQ2xvc2VkKCkucGlwZShCZSh2b2lkIDApKSkpLHRoaXMuX3Njcm9sbFN0cmF0ZWd5PWF9Z2V0IG9wZW5EaWFsb2dzKCl7cmV0dXJuIHRoaXMuX3BhcmVudERpYWxvZz90aGlzLl9wYXJlbnREaWFsb2cub3BlbkRpYWxvZ3M6dGhpcy5fb3BlbkRpYWxvZ3NBdFRoaXNMZXZlbH1nZXQgYWZ0ZXJPcGVuZWQoKXtyZXR1cm4gdGhpcy5fcGFyZW50RGlhbG9nP3RoaXMuX3BhcmVudERpYWxvZy5hZnRlck9wZW5lZDp0aGlzLl9hZnRlck9wZW5lZEF0VGhpc0xldmVsfV9nZXRBZnRlckFsbENsb3NlZCgpe2NvbnN0IHQ9dGhpcy5fcGFyZW50RGlhbG9nO3JldHVybiB0P3QuX2dldEFmdGVyQWxsQ2xvc2VkKCk6dGhpcy5fYWZ0ZXJBbGxDbG9zZWRBdFRoaXNMZXZlbH1vcGVuKHQsZSl7aWYoKGU9KGZ1bmN0aW9uIG4odCxlKXtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGUpLHQpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8pKGUsdGhpcy5fZGVmYXVsdE9wdGlvbnN8fG5ldyB6WSkpLmlkJiZ0aGlzLmdldERpYWxvZ0J5SWQoZS5pZCkmJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSl0aHJvdyBFcnJvcihgRGlhbG9nIHdpdGggaWQgIiR7ZS5pZH0iIGV4aXN0cyBhbHJlYWR5LiBUaGUgZGlhbG9nIGlkIG11c3QgYmUgdW5pcXVlLmApO2NvbnN0IG89dGhpcy5fY3JlYXRlT3ZlcmxheShlKSxpPXRoaXMuX2F0dGFjaERpYWxvZ0NvbnRhaW5lcihvLGUpLGE9dGhpcy5fYXR0YWNoRGlhbG9nQ29udGVudCh0LGksbyxlKTtyZXR1cm4gdGhpcy5vcGVuRGlhbG9ncy5sZW5ndGh8fHRoaXMuX2hpZGVOb25EaWFsb2dDb250ZW50RnJvbUFzc2lzdGl2ZVRlY2hub2xvZ3koKSx0aGlzLm9wZW5EaWFsb2dzLnB1c2goYSksYS5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgoKCk9PnRoaXMuX3JlbW92ZU9wZW5EaWFsb2coYSkpKSx0aGlzLmFmdGVyT3BlbmVkLm5leHQoYSksaS5faW5pdGlhbGl6ZVdpdGhBdHRhY2hlZENvbnRlbnQoKSxhfWNsb3NlQWxsKCl7dGhpcy5fY2xvc2VEaWFsb2dzKHRoaXMub3BlbkRpYWxvZ3MpfWdldERpYWxvZ0J5SWQodCl7cmV0dXJuIHRoaXMub3BlbkRpYWxvZ3MuZmluZCgoZT0+ZS5pZD09PXQpKX1uZ09uRGVzdHJveSgpe3RoaXMuX2Nsb3NlRGlhbG9ncyh0aGlzLl9vcGVuRGlhbG9nc0F0VGhpc0xldmVsKSx0aGlzLl9hZnRlckFsbENsb3NlZEF0VGhpc0xldmVsLmNvbXBsZXRlKCksdGhpcy5fYWZ0ZXJPcGVuZWRBdFRoaXNMZXZlbC5jb21wbGV0ZSgpfV9jcmVhdGVPdmVybGF5KHQpe2NvbnN0IGU9dGhpcy5fZ2V0T3ZlcmxheUNvbmZpZyh0KTtyZXR1cm4gdGhpcy5fb3ZlcmxheS5jcmVhdGUoZSl9X2dldE92ZXJsYXlDb25maWcodCl7Y29uc3QgZT1uZXcgd0Ioe3Bvc2l0aW9uU3RyYXRlZ3k6dGhpcy5fb3ZlcmxheS5wb3NpdGlvbigpLmdsb2JhbCgpLHNjcm9sbFN0cmF0ZWd5OnQuc2Nyb2xsU3RyYXRlZ3l8fHRoaXMuX3Njcm9sbFN0cmF0ZWd5KCkscGFuZWxDbGFzczp0LnBhbmVsQ2xhc3MsaGFzQmFja2Ryb3A6dC5oYXNCYWNrZHJvcCxkaXJlY3Rpb246dC5kaXJlY3Rpb24sbWluV2lkdGg6dC5taW5XaWR0aCxtaW5IZWlnaHQ6dC5taW5IZWlnaHQsbWF4V2lkdGg6dC5tYXhXaWR0aCxtYXhIZWlnaHQ6dC5tYXhIZWlnaHQsZGlzcG9zZU9uTmF2aWdhdGlvbjp0LmNsb3NlT25OYXZpZ2F0aW9ufSk7cmV0dXJuIHQuYmFja2Ryb3BDbGFzcyYmKGUuYmFja2Ryb3BDbGFzcz10LmJhY2tkcm9wQ2xhc3MpLGV9X2F0dGFjaERpYWxvZ0NvbnRhaW5lcih0LGUpe2NvbnN0IG49TnAuY3JlYXRlKHtwYXJlbnQ6ZSYmZS52aWV3Q29udGFpbmVyUmVmJiZlLnZpZXdDb250YWluZXJSZWYuaW5qZWN0b3J8fHRoaXMuX2luamVjdG9yLHByb3ZpZGVyczpbe3Byb3ZpZGU6elksdXNlVmFsdWU6ZX1dfSksbz1uZXcgc0IodGhpcy5fZGlhbG9nQ29udGFpbmVyVHlwZSxlLnZpZXdDb250YWluZXJSZWYsbixlLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcik7cmV0dXJuIHQuYXR0YWNoKG8pLmluc3RhbmNlfV9hdHRhY2hEaWFsb2dDb250ZW50KHQsZSxuLG8pe2NvbnN0IGk9bmV3IHRoaXMuX2RpYWxvZ1JlZkNvbnN0cnVjdG9yKG4sZSxvLmlkKTtpZih0IGluc3RhbmNlb2YgRWIpZS5hdHRhY2hUZW1wbGF0ZVBvcnRhbChuZXcgbEIodCxudWxsLHskaW1wbGljaXQ6by5kYXRhLGRpYWxvZ1JlZjppfSkpO2Vsc2V7Y29uc3Qgbj10aGlzLl9jcmVhdGVJbmplY3RvcihvLGksZSksYT1lLmF0dGFjaENvbXBvbmVudFBvcnRhbChuZXcgc0IodCxvLnZpZXdDb250YWluZXJSZWYsbikpO2kuY29tcG9uZW50SW5zdGFuY2U9YS5pbnN0YW5jZX1yZXR1cm4gaS51cGRhdGVTaXplKG8ud2lkdGgsby5oZWlnaHQpLnVwZGF0ZVBvc2l0aW9uKG8ucG9zaXRpb24pLGl9X2NyZWF0ZUluamVjdG9yKHQsZSxuKXtjb25zdCBvPXQmJnQudmlld0NvbnRhaW5lclJlZiYmdC52aWV3Q29udGFpbmVyUmVmLmluamVjdG9yLGk9W3twcm92aWRlOnRoaXMuX2RpYWxvZ0NvbnRhaW5lclR5cGUsdXNlVmFsdWU6bn0se3Byb3ZpZGU6dGhpcy5fZGlhbG9nRGF0YVRva2VuLHVzZVZhbHVlOnQuZGF0YX0se3Byb3ZpZGU6dGhpcy5fZGlhbG9nUmVmQ29uc3RydWN0b3IsdXNlVmFsdWU6ZX1dO3JldHVybiF0LmRpcmVjdGlvbnx8byYmby5nZXQodkYsbnVsbCxIbi5PcHRpb25hbCl8fGkucHVzaCh7cHJvdmlkZTp2Rix1c2VWYWx1ZTp7dmFsdWU6dC5kaXJlY3Rpb24sY2hhbmdlOnp0KCl9fSksTnAuY3JlYXRlKHtwYXJlbnQ6b3x8dGhpcy5faW5qZWN0b3IscHJvdmlkZXJzOml9KX1fcmVtb3ZlT3BlbkRpYWxvZyh0KXtjb25zdCBlPXRoaXMub3BlbkRpYWxvZ3MuaW5kZXhPZih0KTtlPi0xJiYodGhpcy5vcGVuRGlhbG9ncy5zcGxpY2UoZSwxKSx0aGlzLm9wZW5EaWFsb2dzLmxlbmd0aHx8KHRoaXMuX2FyaWFIaWRkZW5FbGVtZW50cy5mb3JFYWNoKCgodCxlKT0+e3Q/ZS5zZXRBdHRyaWJ1dGUoImFyaWEtaGlkZGVuIix0KTplLnJlbW92ZUF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iKX0pKSx0aGlzLl9hcmlhSGlkZGVuRWxlbWVudHMuY2xlYXIoKSx0aGlzLl9nZXRBZnRlckFsbENsb3NlZCgpLm5leHQoKSkpfV9oaWRlTm9uRGlhbG9nQ29udGVudEZyb21Bc3Npc3RpdmVUZWNobm9sb2d5KCl7Y29uc3QgdD10aGlzLl9vdmVybGF5Q29udGFpbmVyLmdldENvbnRhaW5lckVsZW1lbnQoKTtpZih0LnBhcmVudEVsZW1lbnQpe2NvbnN0IGU9dC5wYXJlbnRFbGVtZW50LmNoaWxkcmVuO2ZvcihsZXQgbj1lLmxlbmd0aC0xO24+LTE7bi0tKXtsZXQgbz1lW25dO289PT10fHwiU0NSSVBUIj09PW8ubm9kZU5hbWV8fCJTVFlMRSI9PT1vLm5vZGVOYW1lfHxvLmhhc0F0dHJpYnV0ZSgiYXJpYS1saXZlIil8fCh0aGlzLl9hcmlhSGlkZGVuRWxlbWVudHMuc2V0KG8sby5nZXRBdHRyaWJ1dGUoImFyaWEtaGlkZGVuIikpLG8uc2V0QXR0cmlidXRlKCJhcmlhLWhpZGRlbiIsInRydWUiKSl9fX1fY2xvc2VEaWFsb2dzKHQpe2xldCBlPXQubGVuZ3RoO2Zvcig7ZS0tOyl0W2VdLmNsb3NlKCl9fVpZLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxaWSkoZ2YoS0IpLGdmKE5wKSxnZih2b2lkIDApLGdmKHZvaWQgMCksZ2YoSEIpLGdmKHZvaWQgMCksZ2YoY3IpLGdmKGNyKSxnZihlcikpfSxaWS7JtWRpcj1obyh7dHlwZTpaWX0pLFpZLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6S0J9LHt0eXBlOk5wfSx7dHlwZTp2b2lkIDB9LHt0eXBlOnZvaWQgMH0se3R5cGU6SEJ9LHt0eXBlOnZvaWQgMH0se3R5cGU6Y3J9LHt0eXBlOmNyfSx7dHlwZTplcn1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoWlksW3t0eXBlOmtffV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOktCfSx7dHlwZTpOcH0se3R5cGU6dm9pZCAwfSx7dHlwZTp2b2lkIDB9LHt0eXBlOkhCfSx7dHlwZTp2b2lkIDB9LHt0eXBlOmNyfSx7dHlwZTpjcn0se3R5cGU6ZXJ9XX0pLG51bGwpO2NsYXNzIFhZIGV4dGVuZHMgWll7Y29uc3RydWN0b3IodCxlLG4sbyxpLGEscil7c3VwZXIodCxlLG8sYSxyLGksVlksTFksVVkpfX1YWS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8WFkpKFRyKEtCKSxUcihOcCksVHIoTU0sOCksVHIoV1ksOCksVHIoR1kpLFRyKFhZLDEyKSxUcihIQikpfSxYWS7JtXByb3Y9U24oe3Rva2VuOlhZLGZhY3Rvcnk6WFkuybVmYWN9KSxYWS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOktCfSx7dHlwZTpOcH0se3R5cGU6TU0sZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX0se3R5cGU6elksZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W1dZXX1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbR1ldfV19LHt0eXBlOlhZLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpqcn1dfSx7dHlwZTpIQn1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoWFksW3t0eXBlOlVtfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOktCfSx7dHlwZTpOcH0se3R5cGU6TU0sZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX0se3R5cGU6elksZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W1dZXX1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbR1ldfV19LHt0eXBlOlhZLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpqcn1dfSx7dHlwZTpIQn1dfSksbnVsbCk7bGV0IEtZPTA7Y2xhc3MgSll7Y29uc3RydWN0b3IodCxlLG4pe3RoaXMuZGlhbG9nUmVmPXQsdGhpcy5fZWxlbWVudFJlZj1lLHRoaXMuX2RpYWxvZz1uLHRoaXMudHlwZT0iYnV0dG9uIn1uZ09uSW5pdCgpe3RoaXMuZGlhbG9nUmVmfHwodGhpcy5kaWFsb2dSZWY9ZXEodGhpcy5fZWxlbWVudFJlZix0aGlzLl9kaWFsb2cub3BlbkRpYWxvZ3MpKX1uZ09uQ2hhbmdlcyh0KXtjb25zdCBlPXQuX21hdERpYWxvZ0Nsb3NlfHx0Ll9tYXREaWFsb2dDbG9zZVJlc3VsdDtlJiYodGhpcy5kaWFsb2dSZXN1bHQ9ZS5jdXJyZW50VmFsdWUpfV9vbkJ1dHRvbkNsaWNrKHQpe2pZKHRoaXMuZGlhbG9nUmVmLDA9PT10LnNjcmVlblgmJjA9PT10LnNjcmVlblk/ImtleWJvYXJkIjoibW91c2UiLHRoaXMuZGlhbG9nUmVzdWx0KX19SlkuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEpZKShnZihWWSw4KSxnZihLaCksZ2YoWFkpKX0sSlkuybVkaXI9aG8oe3R5cGU6Slksc2VsZWN0b3JzOltbIiIsIm1hdC1kaWFsb2ctY2xvc2UiLCIiXSxbIiIsIm1hdERpYWxvZ0Nsb3NlIiwiIl1dLGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJlJmKCJjbGljayIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uX29uQnV0dG9uQ2xpY2soZSl9KSksMiZlJiZ5bSgiYXJpYS1sYWJlbCIsbi5hcmlhTGFiZWx8fG51bGwpKCJ0eXBlIixuLnR5cGUpfSxpbnB1dHM6e3R5cGU6InR5cGUiLGRpYWxvZ1Jlc3VsdDpbIm1hdC1kaWFsb2ctY2xvc2UiLCJkaWFsb2dSZXN1bHQiXSxhcmlhTGFiZWw6WyJhcmlhLWxhYmVsIiwiYXJpYUxhYmVsIl0sX21hdERpYWxvZ0Nsb3NlOlsibWF0RGlhbG9nQ2xvc2UiLCJfbWF0RGlhbG9nQ2xvc2UiXX0sZXhwb3J0QXM6WyJtYXREaWFsb2dDbG9zZSJdLGZlYXR1cmVzOltxb119KSxKWS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOlZZLGRlY29yYXRvcnM6W3t0eXBlOkJyfV19LHt0eXBlOktofSx7dHlwZTpYWX1dLEpZLnByb3BEZWNvcmF0b3JzPXthcmlhTGFiZWw6W3t0eXBlOlJfLGFyZ3M6WyJhcmlhLWxhYmVsIl19XSx0eXBlOlt7dHlwZTpSX31dLGRpYWxvZ1Jlc3VsdDpbe3R5cGU6Ul8sYXJnczpbIm1hdC1kaWFsb2ctY2xvc2UiXX1dLF9tYXREaWFsb2dDbG9zZTpbe3R5cGU6Ul8sYXJnczpbIm1hdERpYWxvZ0Nsb3NlIl19XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihKWSxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJbbWF0LWRpYWxvZy1jbG9zZV0sIFttYXREaWFsb2dDbG9zZV0iLGV4cG9ydEFzOiJtYXREaWFsb2dDbG9zZSIsaG9zdDp7IihjbGljaykiOiJfb25CdXR0b25DbGljaygkZXZlbnQpIiwiW2F0dHIuYXJpYS1sYWJlbF0iOiJhcmlhTGFiZWwgfHwgbnVsbCIsIlthdHRyLnR5cGVdIjoidHlwZSJ9fV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6VlksZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX0se3R5cGU6S2h9LHt0eXBlOlhZfV19KSx7dHlwZTpbe3R5cGU6Ul99XSxkaWFsb2dSZXN1bHQ6W3t0eXBlOlJfLGFyZ3M6WyJtYXQtZGlhbG9nLWNsb3NlIl19XSxhcmlhTGFiZWw6W3t0eXBlOlJfLGFyZ3M6WyJhcmlhLWxhYmVsIl19XSxfbWF0RGlhbG9nQ2xvc2U6W3t0eXBlOlJfLGFyZ3M6WyJtYXREaWFsb2dDbG9zZSJdfV19KTtjbGFzcyBRWXtjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5fZGlhbG9nUmVmPXQsdGhpcy5fZWxlbWVudFJlZj1lLHRoaXMuX2RpYWxvZz1uLHRoaXMuaWQ9Im1hdC1kaWFsb2ctdGl0bGUtIitLWSsrfW5nT25Jbml0KCl7dGhpcy5fZGlhbG9nUmVmfHwodGhpcy5fZGlhbG9nUmVmPWVxKHRoaXMuX2VsZW1lbnRSZWYsdGhpcy5fZGlhbG9nLm9wZW5EaWFsb2dzKSksdGhpcy5fZGlhbG9nUmVmJiZQcm9taXNlLnJlc29sdmUoKS50aGVuKCgoKT0+e2NvbnN0IHQ9dGhpcy5fZGlhbG9nUmVmLl9jb250YWluZXJJbnN0YW5jZTt0JiYhdC5fYXJpYUxhYmVsbGVkQnkmJih0Ll9hcmlhTGFiZWxsZWRCeT10aGlzLmlkKX0pKX19UVkuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFFZKShnZihWWSw4KSxnZihLaCksZ2YoWFkpKX0sUVkuybVkaXI9aG8oe3R5cGU6UVksc2VsZWN0b3JzOltbIiIsIm1hdC1kaWFsb2ctdGl0bGUiLCIiXSxbIiIsIm1hdERpYWxvZ1RpdGxlIiwiIl1dLGhvc3RBdHRyczpbMSwibWF0LWRpYWxvZy10aXRsZSJdLGhvc3RWYXJzOjEsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsyJmUmJmNnKCJpZCIsbi5pZCl9LGlucHV0czp7aWQ6ImlkIn0sZXhwb3J0QXM6WyJtYXREaWFsb2dUaXRsZSJdfSksUVkuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpWWSxkZWNvcmF0b3JzOlt7dHlwZTpCcn1dfSx7dHlwZTpLaH0se3R5cGU6WFl9XSxRWS5wcm9wRGVjb3JhdG9ycz17aWQ6W3t0eXBlOlJffV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoUVksW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW21hdC1kaWFsb2ctdGl0bGVdLCBbbWF0RGlhbG9nVGl0bGVdIixleHBvcnRBczoibWF0RGlhbG9nVGl0bGUiLGhvc3Q6e2NsYXNzOiJtYXQtZGlhbG9nLXRpdGxlIiwiW2lkXSI6ImlkIn19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpWWSxkZWNvcmF0b3JzOlt7dHlwZTpCcn1dfSx7dHlwZTpLaH0se3R5cGU6WFl9XX0pLHtpZDpbe3R5cGU6Ul99XX0pO2NsYXNzICRZe30kWS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8JFkpfSwkWS7JtWRpcj1obyh7dHlwZTokWSxzZWxlY3RvcnM6W1siIiwibWF0LWRpYWxvZy1jb250ZW50IiwiIl0sWyJtYXQtZGlhbG9nLWNvbnRlbnQiXSxbIiIsIm1hdERpYWxvZ0NvbnRlbnQiLCIiXV0saG9zdEF0dHJzOlsxLCJtYXQtZGlhbG9nLWNvbnRlbnQiXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoJFksW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW21hdC1kaWFsb2ctY29udGVudF0sIG1hdC1kaWFsb2ctY29udGVudCwgW21hdERpYWxvZ0NvbnRlbnRdIixob3N0OntjbGFzczoibWF0LWRpYWxvZy1jb250ZW50In19XX1dLG51bGwsbnVsbCk7Y2xhc3MgdHF7fWZ1bmN0aW9uIGVxKHQsZSl7bGV0IG49dC5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQ7Zm9yKDtuJiYhbi5jbGFzc0xpc3QuY29udGFpbnMoIm1hdC1kaWFsb2ctY29udGFpbmVyIik7KW49bi5wYXJlbnRFbGVtZW50O3JldHVybiBuP2UuZmluZCgodD0+dC5pZD09PW4uaWQpKTpudWxsfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi90cS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8dHEpfSx0cS7JtWRpcj1obyh7dHlwZTp0cSxzZWxlY3RvcnM6W1siIiwibWF0LWRpYWxvZy1hY3Rpb25zIiwiIl0sWyJtYXQtZGlhbG9nLWFjdGlvbnMiXSxbIiIsIm1hdERpYWxvZ0FjdGlvbnMiLCIiXV0saG9zdEF0dHJzOlsxLCJtYXQtZGlhbG9nLWFjdGlvbnMiXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIodHEsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW21hdC1kaWFsb2ctYWN0aW9uc10sIG1hdC1kaWFsb2ctYWN0aW9ucywgW21hdERpYWxvZ0FjdGlvbnNdIixob3N0OntjbGFzczoibWF0LWRpYWxvZy1hY3Rpb25zIn19XX1dLG51bGwsbnVsbCk7Y2xhc3MgbnF7fW5xLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxucSl9LG5xLsm1bW9kPWZvKHt0eXBlOm5xfSksbnEuybVpbmo9RG4oe3Byb3ZpZGVyczpbWFksWVldLGltcG9ydHM6W1tvVixoQixORl0sTkZdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihucSxbe3R5cGU6TF8sYXJnczpbe2ltcG9ydHM6W29WLGhCLE5GXSxleHBvcnRzOltMWSxKWSxRWSwkWSx0cSxORl0sZGVjbGFyYXRpb25zOltMWSxKWSxRWSx0cSwkWV0scHJvdmlkZXJzOltYWSxZWV0sZW50cnlDb21wb25lbnRzOltMWV19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhucSx7ZGVjbGFyYXRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuW0xZLEpZLFFZLHRxLCRZXX0saW1wb3J0czpmdW5jdGlvbigpe3JldHVybltvVixoQixORl19LGV4cG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bTFksSlksUVksJFksdHEsTkZdfX0pO2NsYXNzIG9xe2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5fZG9jdW1lbnQ9ZTtjb25zdCBuPXRoaXMuX3RleHRhcmVhPXRoaXMuX2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRleHRhcmVhIiksbz1uLnN0eWxlO28ucG9zaXRpb249ImZpeGVkIixvLnRvcD1vLm9wYWNpdHk9IjAiLG8ubGVmdD0iLTk5OWVtIixuLnNldEF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iLCJ0cnVlIiksbi52YWx1ZT10LHRoaXMuX2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobil9Y29weSgpe2NvbnN0IHQ9dGhpcy5fdGV4dGFyZWE7bGV0IGU9ITE7dHJ5e2lmKHQpe2NvbnN0IG49dGhpcy5fZG9jdW1lbnQuYWN0aXZlRWxlbWVudDt0LnNlbGVjdCgpLHQuc2V0U2VsZWN0aW9uUmFuZ2UoMCx0LnZhbHVlLmxlbmd0aCksZT10aGlzLl9kb2N1bWVudC5leGVjQ29tbWFuZCgiY29weSIpLG4mJm4uZm9jdXMoKX19Y2F0Y2godCl7fXJldHVybiBlfWRlc3Ryb3koKXtjb25zdCB0PXRoaXMuX3RleHRhcmVhO3QmJih0LnBhcmVudE5vZGUmJnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0KSx0aGlzLl90ZXh0YXJlYT12b2lkIDApfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgaXF7Y29uc3RydWN0b3IodCl7dGhpcy5fZG9jdW1lbnQ9dH1jb3B5KHQpe2NvbnN0IGU9dGhpcy5iZWdpbkNvcHkodCksbj1lLmNvcHkoKTtyZXR1cm4gZS5kZXN0cm95KCksbn1iZWdpbkNvcHkodCl7cmV0dXJuIG5ldyBvcSh0LHRoaXMuX2RvY3VtZW50KX19aXEuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGlxKShUcihzTSkpfSxpcS7JtXByb3Y9U24oe2ZhY3Rvcnk6ZnVuY3Rpb24gdCgpe3JldHVybiBuZXcgaXEoVHIoc00pKX0sdG9rZW46aXEscHJvdmlkZWRJbjoicm9vdCJ9KSxpcS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoaXEsW3t0eXBlOlVtLGFyZ3M6W3twcm92aWRlZEluOiJyb290In1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX1dfSksbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCBhcT1uZXcgZXIoIkNES19DT1BZX1RPX0NMSVBCT0FSRF9DT05GSUciKTtjbGFzcyBycXtjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5fY2xpcGJvYXJkPXQsdGhpcy5fbmdab25lPWUsdGhpcy50ZXh0PSIiLHRoaXMuYXR0ZW1wdHM9MSx0aGlzLmNvcGllZD1uZXcgU3ksdGhpcy5fcGVuZGluZz1uZXcgU2V0LG4mJm51bGwhPW4uYXR0ZW1wdHMmJih0aGlzLmF0dGVtcHRzPW4uYXR0ZW1wdHMpfWNvcHkodD10aGlzLmF0dGVtcHRzKXtpZih0PjEpe2xldCBlPXQ7Y29uc3Qgbj10aGlzLl9jbGlwYm9hcmQuYmVnaW5Db3B5KHRoaXMudGV4dCk7dGhpcy5fcGVuZGluZy5hZGQobik7Y29uc3Qgbz0oKT0+e2NvbnN0IHQ9bi5jb3B5KCk7dHx8IS0tZXx8dGhpcy5fZGVzdHJveWVkPyh0aGlzLl9jdXJyZW50VGltZW91dD1udWxsLHRoaXMuX3BlbmRpbmcuZGVsZXRlKG4pLG4uZGVzdHJveSgpLHRoaXMuY29waWVkLmVtaXQodCkpOnRoaXMuX2N1cnJlbnRUaW1lb3V0PXRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9PnNldFRpbWVvdXQobywxKSkpfTtvKCl9ZWxzZSB0aGlzLmNvcGllZC5lbWl0KHRoaXMuX2NsaXBib2FyZC5jb3B5KHRoaXMudGV4dCkpfW5nT25EZXN0cm95KCl7dGhpcy5fY3VycmVudFRpbWVvdXQmJmNsZWFyVGltZW91dCh0aGlzLl9jdXJyZW50VGltZW91dCksdGhpcy5fcGVuZGluZy5mb3JFYWNoKCh0PT50LmRlc3Ryb3koKSkpLHRoaXMuX3BlbmRpbmcuY2xlYXIoKSx0aGlzLl9kZXN0cm95ZWQ9ITB9fXJxLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxycSkoZ2YoaXEpLGdmKG1DKSxnZihhcSw4KSl9LHJxLsm1ZGlyPWhvKHt0eXBlOnJxLHNlbGVjdG9yczpbWyIiLCJjZGtDb3B5VG9DbGlwYm9hcmQiLCIiXV0saG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJlJmKCJjbGljayIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5jb3B5KCl9KSl9LGlucHV0czp7dGV4dDpbImNka0NvcHlUb0NsaXBib2FyZCIsInRleHQiXSxhdHRlbXB0czpbImNka0NvcHlUb0NsaXBib2FyZEF0dGVtcHRzIiwiYXR0ZW1wdHMiXX0sb3V0cHV0czp7Y29waWVkOiJjZGtDb3B5VG9DbGlwYm9hcmRDb3BpZWQifX0pLHJxLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6aXF9LHt0eXBlOm1DfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W2FxXX1dfV0scnEucHJvcERlY29yYXRvcnM9e3RleHQ6W3t0eXBlOlJfLGFyZ3M6WyJjZGtDb3B5VG9DbGlwYm9hcmQiXX1dLGF0dGVtcHRzOlt7dHlwZTpSXyxhcmdzOlsiY2RrQ29weVRvQ2xpcGJvYXJkQXR0ZW1wdHMiXX1dLGNvcGllZDpbe3R5cGU6RV8sYXJnczpbImNka0NvcHlUb0NsaXBib2FyZENvcGllZCJdfV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIocnEsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW2Nka0NvcHlUb0NsaXBib2FyZF0iLGhvc3Q6eyIoY2xpY2spIjoiY29weSgpIn19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTppcX0se3R5cGU6bUN9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbYXFdfV19XX0pLHt0ZXh0Olt7dHlwZTpSXyxhcmdzOlsiY2RrQ29weVRvQ2xpcGJvYXJkIl19XSxhdHRlbXB0czpbe3R5cGU6Ul8sYXJnczpbImNka0NvcHlUb0NsaXBib2FyZEF0dGVtcHRzIl19XSxjb3BpZWQ6W3t0eXBlOkVfLGFyZ3M6WyJjZGtDb3B5VG9DbGlwYm9hcmRDb3BpZWQiXX1dfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBzcXt9c3EuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHNxKX0sc3EuybVtb2Q9Zm8oe3R5cGU6c3F9KSxzcS7JtWluaj1Ebih7fSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihzcSxbe3R5cGU6TF8sYXJnczpbe2RlY2xhcmF0aW9uczpbcnFdLGV4cG9ydHM6W3JxXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKHNxLHtkZWNsYXJhdGlvbnM6W3JxXSxleHBvcnRzOltycV19KTtmdW5jdGlvbiBscSh0KXtyZXR1cm4gRXJyb3IoYFVuYWJsZSB0byBmaW5kIGljb24gd2l0aCB0aGUgbmFtZSAiJHt0fSJgKX1mdW5jdGlvbiBjcSh0KXtyZXR1cm4gRXJyb3IoYFRoZSBVUkwgcHJvdmlkZWQgdG8gTWF0SWNvblJlZ2lzdHJ5IHdhcyBub3QgdHJ1c3RlZCBhcyBhIHJlc291cmNlIFVSTCB2aWEgQW5ndWxhcidzIERvbVNhbml0aXplci4gQXR0ZW1wdGVkIFVSTCB3YXMgIiR7dH0iLmApfWZ1bmN0aW9uIGRxKHQpe3JldHVybiBFcnJvcihgVGhlIGxpdGVyYWwgcHJvdmlkZWQgdG8gTWF0SWNvblJlZ2lzdHJ5IHdhcyBub3QgdHJ1c3RlZCBhcyBzYWZlIEhUTUwgYnkgQW5ndWxhcidzIERvbVNhbml0aXplci4gQXR0ZW1wdGVkIGxpdGVyYWwgd2FzICIke3R9Ii5gKX1jbGFzcyBwcXtjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy51cmw9dCx0aGlzLnN2Z1RleHQ9ZSx0aGlzLm9wdGlvbnM9bn19Y2xhc3MgbXF7Y29uc3RydWN0b3IodCxlLG4sbyl7dGhpcy5faHR0cENsaWVudD10LHRoaXMuX3Nhbml0aXplcj1lLHRoaXMuX2Vycm9ySGFuZGxlcj1vLHRoaXMuX3N2Z0ljb25Db25maWdzPW5ldyBNYXAsdGhpcy5faWNvblNldENvbmZpZ3M9bmV3IE1hcCx0aGlzLl9jYWNoZWRJY29uc0J5VXJsPW5ldyBNYXAsdGhpcy5faW5Qcm9ncmVzc1VybEZldGNoZXM9bmV3IE1hcCx0aGlzLl9mb250Q3NzQ2xhc3Nlc0J5QWxpYXM9bmV3IE1hcCx0aGlzLl9yZXNvbHZlcnM9W10sdGhpcy5fZGVmYXVsdEZvbnRTZXRDbGFzcz0ibWF0ZXJpYWwtaWNvbnMiLHRoaXMuX2RvY3VtZW50PW59YWRkU3ZnSWNvbih0LGUsbil7cmV0dXJuIHRoaXMuYWRkU3ZnSWNvbkluTmFtZXNwYWNlKCIiLHQsZSxuKX1hZGRTdmdJY29uTGl0ZXJhbCh0LGUsbil7cmV0dXJuIHRoaXMuYWRkU3ZnSWNvbkxpdGVyYWxJbk5hbWVzcGFjZSgiIix0LGUsbil9YWRkU3ZnSWNvbkluTmFtZXNwYWNlKHQsZSxuLG8pe3JldHVybiB0aGlzLl9hZGRTdmdJY29uQ29uZmlnKHQsZSxuZXcgcHEobixudWxsLG8pKX1hZGRTdmdJY29uUmVzb2x2ZXIodCl7cmV0dXJuIHRoaXMuX3Jlc29sdmVycy5wdXNoKHQpLHRoaXN9YWRkU3ZnSWNvbkxpdGVyYWxJbk5hbWVzcGFjZSh0LGUsbixvKXtjb25zdCBpPXRoaXMuX3Nhbml0aXplci5zYW5pdGl6ZShZcy5IVE1MLG4pO2lmKCFpKXRocm93IGRxKG4pO3JldHVybiB0aGlzLl9hZGRTdmdJY29uQ29uZmlnKHQsZSxuZXcgcHEoIiIsaSxvKSl9YWRkU3ZnSWNvblNldCh0LGUpe3JldHVybiB0aGlzLmFkZFN2Z0ljb25TZXRJbk5hbWVzcGFjZSgiIix0LGUpfWFkZFN2Z0ljb25TZXRMaXRlcmFsKHQsZSl7cmV0dXJuIHRoaXMuYWRkU3ZnSWNvblNldExpdGVyYWxJbk5hbWVzcGFjZSgiIix0LGUpfWFkZFN2Z0ljb25TZXRJbk5hbWVzcGFjZSh0LGUsbil7cmV0dXJuIHRoaXMuX2FkZFN2Z0ljb25TZXRDb25maWcodCxuZXcgcHEoZSxudWxsLG4pKX1hZGRTdmdJY29uU2V0TGl0ZXJhbEluTmFtZXNwYWNlKHQsZSxuKXtjb25zdCBvPXRoaXMuX3Nhbml0aXplci5zYW5pdGl6ZShZcy5IVE1MLGUpO2lmKCFvKXRocm93IGRxKGUpO3JldHVybiB0aGlzLl9hZGRTdmdJY29uU2V0Q29uZmlnKHQsbmV3IHBxKCIiLG8sbikpfXJlZ2lzdGVyRm9udENsYXNzQWxpYXModCxlPXQpe3JldHVybiB0aGlzLl9mb250Q3NzQ2xhc3Nlc0J5QWxpYXMuc2V0KHQsZSksdGhpc31jbGFzc05hbWVGb3JGb250QWxpYXModCl7cmV0dXJuIHRoaXMuX2ZvbnRDc3NDbGFzc2VzQnlBbGlhcy5nZXQodCl8fHR9c2V0RGVmYXVsdEZvbnRTZXRDbGFzcyh0KXtyZXR1cm4gdGhpcy5fZGVmYXVsdEZvbnRTZXRDbGFzcz10LHRoaXN9Z2V0RGVmYXVsdEZvbnRTZXRDbGFzcygpe3JldHVybiB0aGlzLl9kZWZhdWx0Rm9udFNldENsYXNzfWdldFN2Z0ljb25Gcm9tVXJsKHQpe2NvbnN0IGU9dGhpcy5fc2FuaXRpemVyLnNhbml0aXplKFlzLlJFU09VUkNFX1VSTCx0KTtpZighZSl0aHJvdyBjcSh0KTtjb25zdCBuPXRoaXMuX2NhY2hlZEljb25zQnlVcmwuZ2V0KGUpO3JldHVybiBuP3p0KGZxKG4pKTp0aGlzLl9sb2FkU3ZnSWNvbkZyb21Db25maWcobmV3IHBxKHQsbnVsbCkpLnBpcGUoV2UoKHQ9PnRoaXMuX2NhY2hlZEljb25zQnlVcmwuc2V0KGUsdCkpKSxWdCgodD0+ZnEodCkpKSl9Z2V0TmFtZWRTdmdJY29uKHQsZT0iIil7Y29uc3Qgbj11cShlLHQpO2xldCBvPXRoaXMuX3N2Z0ljb25Db25maWdzLmdldChuKTtpZihvKXJldHVybiB0aGlzLl9nZXRTdmdGcm9tQ29uZmlnKG8pO2lmKG89dGhpcy5fZ2V0SWNvbkNvbmZpZ0Zyb21SZXNvbHZlcnMoZSx0KSxvKXJldHVybiB0aGlzLl9zdmdJY29uQ29uZmlncy5zZXQobixvKSx0aGlzLl9nZXRTdmdGcm9tQ29uZmlnKG8pO2NvbnN0IGk9dGhpcy5faWNvblNldENvbmZpZ3MuZ2V0KGUpO3JldHVybiBpP3RoaXMuX2dldFN2Z0Zyb21JY29uU2V0Q29uZmlncyh0LGkpOkl0KGxxKG4pKX1uZ09uRGVzdHJveSgpe3RoaXMuX3Jlc29sdmVycz1bXSx0aGlzLl9zdmdJY29uQ29uZmlncy5jbGVhcigpLHRoaXMuX2ljb25TZXRDb25maWdzLmNsZWFyKCksdGhpcy5fY2FjaGVkSWNvbnNCeVVybC5jbGVhcigpfV9nZXRTdmdGcm9tQ29uZmlnKHQpe3JldHVybiB0LnN2Z1RleHQ/enQoZnEodGhpcy5fc3ZnRWxlbWVudEZyb21Db25maWcodCkpKTp0aGlzLl9sb2FkU3ZnSWNvbkZyb21Db25maWcodCkucGlwZShWdCgodD0+ZnEodCkpKSl9X2dldFN2Z0Zyb21JY29uU2V0Q29uZmlncyh0LGUpe2NvbnN0IG49dGhpcy5fZXh0cmFjdEljb25XaXRoTmFtZUZyb21BbnlTZXQodCxlKTtpZihuKXJldHVybiB6dChuKTtyZXR1cm4gaWUoZS5maWx0ZXIoKHQ9PiF0LnN2Z1RleHQpKS5tYXAoKHQ9PnRoaXMuX2xvYWRTdmdJY29uU2V0RnJvbUNvbmZpZyh0KS5waXBlKGhlKChlPT57Y29uc3Qgbj10aGlzLl9zYW5pdGl6ZXIuc2FuaXRpemUoWXMuUkVTT1VSQ0VfVVJMLHQudXJsKTtyZXR1cm4gdGhpcy5fZXJyb3JIYW5kbGVyLmhhbmRsZUVycm9yKG5ldyBFcnJvcihgTG9hZGluZyBpY29uIHNldCBVUkw6ICR7bn0gZmFpbGVkOiAke2UubWVzc2FnZX1gKSksenQobnVsbCl9KSkpKSkpLnBpcGUoVnQoKCgpPT57Y29uc3Qgbj10aGlzLl9leHRyYWN0SWNvbldpdGhOYW1lRnJvbUFueVNldCh0LGUpO2lmKCFuKXRocm93IGxxKHQpO3JldHVybiBufSkpKX1fZXh0cmFjdEljb25XaXRoTmFtZUZyb21BbnlTZXQodCxlKXtmb3IobGV0IG49ZS5sZW5ndGgtMTtuPj0wO24tLSl7Y29uc3Qgbz1lW25dO2lmKG8uc3ZnVGV4dCYmby5zdmdUZXh0LmluZGV4T2YodCk+LTEpe2NvbnN0IGU9dGhpcy5fc3ZnRWxlbWVudEZyb21Db25maWcobyksbj10aGlzLl9leHRyYWN0U3ZnSWNvbkZyb21TZXQoZSx0LG8ub3B0aW9ucyk7aWYobilyZXR1cm4gbn19cmV0dXJuIG51bGx9X2xvYWRTdmdJY29uRnJvbUNvbmZpZyh0KXtyZXR1cm4gdGhpcy5fZmV0Y2hJY29uKHQpLnBpcGUoV2UoKGU9PnQuc3ZnVGV4dD1lKSksVnQoKCgpPT50aGlzLl9zdmdFbGVtZW50RnJvbUNvbmZpZyh0KSkpKX1fbG9hZFN2Z0ljb25TZXRGcm9tQ29uZmlnKHQpe3JldHVybiB0LnN2Z1RleHQ/enQobnVsbCk6dGhpcy5fZmV0Y2hJY29uKHQpLnBpcGUoV2UoKGU9PnQuc3ZnVGV4dD1lKSkpfV9leHRyYWN0U3ZnSWNvbkZyb21TZXQodCxlLG4pe2NvbnN0IG89dC5xdWVyeVNlbGVjdG9yKGBbaWQ9IiR7ZX0iXWApO2lmKCFvKXJldHVybiBudWxsO2NvbnN0IGk9by5jbG9uZU5vZGUoITApO2lmKGkucmVtb3ZlQXR0cmlidXRlKCJpZCIpLCJzdmciPT09aS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKXJldHVybiB0aGlzLl9zZXRTdmdBdHRyaWJ1dGVzKGksbik7aWYoInN5bWJvbCI9PT1pLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpcmV0dXJuIHRoaXMuX3NldFN2Z0F0dHJpYnV0ZXModGhpcy5fdG9TdmdFbGVtZW50KGkpLG4pO2NvbnN0IGE9dGhpcy5fc3ZnRWxlbWVudEZyb21TdHJpbmcoIjxzdmc+PC9zdmc+Iik7cmV0dXJuIGEuYXBwZW5kQ2hpbGQoaSksdGhpcy5fc2V0U3ZnQXR0cmlidXRlcyhhLG4pfV9zdmdFbGVtZW50RnJvbVN0cmluZyh0KXtjb25zdCBlPXRoaXMuX2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIkRJViIpO2UuaW5uZXJIVE1MPXQ7Y29uc3Qgbj1lLnF1ZXJ5U2VsZWN0b3IoInN2ZyIpO2lmKCFuKXRocm93IEVycm9yKCI8c3ZnPiB0YWcgbm90IGZvdW5kIik7cmV0dXJuIG59X3RvU3ZnRWxlbWVudCh0KXtjb25zdCBlPXRoaXMuX3N2Z0VsZW1lbnRGcm9tU3RyaW5nKCI8c3ZnPjwvc3ZnPiIpLG49dC5hdHRyaWJ1dGVzO2ZvcihsZXQgdD0wO3Q8bi5sZW5ndGg7dCsrKXtjb25zdHtuYW1lOm8sdmFsdWU6aX09blt0XTsiaWQiIT09byYmZS5zZXRBdHRyaWJ1dGUobyxpKX1mb3IobGV0IG49MDtuPHQuY2hpbGROb2Rlcy5sZW5ndGg7bisrKXQuY2hpbGROb2Rlc1tuXS5ub2RlVHlwZT09PXRoaXMuX2RvY3VtZW50LkVMRU1FTlRfTk9ERSYmZS5hcHBlbmRDaGlsZCh0LmNoaWxkTm9kZXNbbl0uY2xvbmVOb2RlKCEwKSk7cmV0dXJuIGV9X3NldFN2Z0F0dHJpYnV0ZXModCxlKXtyZXR1cm4gdC5zZXRBdHRyaWJ1dGUoImZpdCIsIiIpLHQuc2V0QXR0cmlidXRlKCJoZWlnaHQiLCIxMDAlIiksdC5zZXRBdHRyaWJ1dGUoIndpZHRoIiwiMTAwJSIpLHQuc2V0QXR0cmlidXRlKCJwcmVzZXJ2ZUFzcGVjdFJhdGlvIiwieE1pZFlNaWQgbWVldCIpLHQuc2V0QXR0cmlidXRlKCJmb2N1c2FibGUiLCJmYWxzZSIpLGUmJmUudmlld0JveCYmdC5zZXRBdHRyaWJ1dGUoInZpZXdCb3giLGUudmlld0JveCksdH1fZmV0Y2hJY29uKHQpe3ZhciBlO2NvbnN0e3VybDpuLG9wdGlvbnM6b309dCxpPW51bGwhPT0oZT1udWxsPT1vP3ZvaWQgMDpvLndpdGhDcmVkZW50aWFscykmJnZvaWQgMCE9PWUmJmU7aWYoIXRoaXMuX2h0dHBDbGllbnQpdGhyb3coZnVuY3Rpb24gYSgpe3JldHVybiBFcnJvcigiQ291bGQgbm90IGZpbmQgSHR0cENsaWVudCBwcm92aWRlciBmb3IgdXNlIHdpdGggQW5ndWxhciBNYXRlcmlhbCBpY29ucy4gUGxlYXNlIGluY2x1ZGUgdGhlIEh0dHBDbGllbnRNb2R1bGUgZnJvbSBAYW5ndWxhci9jb21tb24vaHR0cCBpbiB5b3VyIGFwcCBpbXBvcnRzLiIpfSkoKTtpZihudWxsPT1uKXRocm93IEVycm9yKGBDYW5ub3QgZmV0Y2ggaWNvbiBmcm9tIFVSTCAiJHtufSIuYCk7Y29uc3Qgcj10aGlzLl9zYW5pdGl6ZXIuc2FuaXRpemUoWXMuUkVTT1VSQ0VfVVJMLG4pO2lmKCFyKXRocm93IGNxKG4pO2NvbnN0IHM9dGhpcy5faW5Qcm9ncmVzc1VybEZldGNoZXMuZ2V0KHIpO2lmKHMpcmV0dXJuIHM7Y29uc3QgbD10aGlzLl9odHRwQ2xpZW50LmdldChyLHtyZXNwb25zZVR5cGU6InRleHQiLHdpdGhDcmVkZW50aWFsczppfSkucGlwZSgoZnVuY3Rpb24gYyh0KXtyZXR1cm4geigoZnVuY3Rpb24oZSxuKXt0cnl7ZS5zdWJzY3JpYmUobil9ZmluYWxseXtuLmFkZCh0KX19KSl9KSgoKCk9PnRoaXMuX2luUHJvZ3Jlc3NVcmxGZXRjaGVzLmRlbGV0ZShyKSkpLEllKCkpO3JldHVybiB0aGlzLl9pblByb2dyZXNzVXJsRmV0Y2hlcy5zZXQocixsKSxsfV9hZGRTdmdJY29uQ29uZmlnKHQsZSxuKXtyZXR1cm4gdGhpcy5fc3ZnSWNvbkNvbmZpZ3Muc2V0KHVxKHQsZSksbiksdGhpc31fYWRkU3ZnSWNvblNldENvbmZpZyh0LGUpe2NvbnN0IG49dGhpcy5faWNvblNldENvbmZpZ3MuZ2V0KHQpO3JldHVybiBuP24ucHVzaChlKTp0aGlzLl9pY29uU2V0Q29uZmlncy5zZXQodCxbZV0pLHRoaXN9X3N2Z0VsZW1lbnRGcm9tQ29uZmlnKHQpe2lmKCF0LnN2Z0VsZW1lbnQpe2NvbnN0IGU9dGhpcy5fc3ZnRWxlbWVudEZyb21TdHJpbmcodC5zdmdUZXh0KTt0aGlzLl9zZXRTdmdBdHRyaWJ1dGVzKGUsdC5vcHRpb25zKSx0LnN2Z0VsZW1lbnQ9ZX1yZXR1cm4gdC5zdmdFbGVtZW50fV9nZXRJY29uQ29uZmlnRnJvbVJlc29sdmVycyh0LGUpe2ZvcihsZXQgbz0wO288dGhpcy5fcmVzb2x2ZXJzLmxlbmd0aDtvKyspe2NvbnN0IGk9dGhpcy5fcmVzb2x2ZXJzW29dKGUsdCk7aWYoaSlyZXR1cm4obj1pKS51cmwmJm4ub3B0aW9ucz9uZXcgcHEoaS51cmwsbnVsbCxpLm9wdGlvbnMpOm5ldyBwcShpLG51bGwpfXZhciBuOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi99fWZ1bmN0aW9uIGZxKHQpe3JldHVybiB0LmNsb25lTm9kZSghMCl9ZnVuY3Rpb24gdXEodCxlKXtyZXR1cm4gdCsiOiIrZX1tcS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8bXEpKFRyKGdFLDgpLFRyKGVPKSxUcihzTSw4KSxUcih1bCkpfSxtcS7JtXByb3Y9U24oe2ZhY3Rvcnk6ZnVuY3Rpb24gdCgpe3JldHVybiBuZXcgbXEoVHIoZ0UsOCksVHIoZU8pLFRyKHNNLDgpLFRyKHVsKSl9LHRva2VuOm1xLHByb3ZpZGVkSW46InJvb3QifSksbXEuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpnRSxkZWNvcmF0b3JzOlt7dHlwZTpCcn1dfSx7dHlwZTplT30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltzTV19XX0se3R5cGU6dWx9XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKG1xLFt7dHlwZTpVbSxhcmdzOlt7cHJvdmlkZWRJbjoicm9vdCJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpnRSxkZWNvcmF0b3JzOlt7dHlwZTpCcn1dfSx7dHlwZTplT30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltzTV19XX0se3R5cGU6dWx9XX0pLG51bGwpLG5ldyBCcixuZXcganIsbmV3IEJyLG5ldyBCcjtjb25zdCBncT1JRihjbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLl9lbGVtZW50UmVmPXR9fSksaHE9bmV3IGVyKCJtYXQtaWNvbi1sb2NhdGlvbiIse3Byb3ZpZGVkSW46InJvb3QiLGZhY3Rvcnk6ZnVuY3Rpb24gYnEoKXtjb25zdCB0PXpyKHNNKSxlPXQ/dC5sb2NhdGlvbjpudWxsO3JldHVybntnZXRQYXRobmFtZTooKT0+ZT9lLnBhdGhuYW1lK2Uuc2VhcmNoOiIifX19KTtjb25zdCB5cT1bImNsaXAtcGF0aCIsImNvbG9yLXByb2ZpbGUiLCJzcmMiLCJjdXJzb3IiLCJmaWxsIiwiZmlsdGVyIiwibWFya2VyIiwibWFya2VyLXN0YXJ0IiwibWFya2VyLW1pZCIsIm1hcmtlci1lbmQiLCJtYXNrIiwic3Ryb2tlIl0sX3E9eXEubWFwKCh0PT5gWyR7dH1dYCkpLmpvaW4oIiwgIiksQ3E9L151cmxcKFsnIl0/IyguKj8pWyciXT9cKSQvO2NsYXNzIE1xIGV4dGVuZHMgZ3F7Y29uc3RydWN0b3IodCxlLG4sbyxpKXtzdXBlcih0KSx0aGlzLl9pY29uUmVnaXN0cnk9ZSx0aGlzLl9sb2NhdGlvbj1vLHRoaXMuX2Vycm9ySGFuZGxlcj1pLHRoaXMuX2lubGluZT0hMSx0aGlzLl9jdXJyZW50SWNvbkZldGNoPXUuRU1QVFksbnx8dC5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iLCJ0cnVlIil9Z2V0IGlubGluZSgpe3JldHVybiB0aGlzLl9pbmxpbmV9c2V0IGlubGluZSh0KXt0aGlzLl9pbmxpbmU9ZUgodCl9Z2V0IHN2Z0ljb24oKXtyZXR1cm4gdGhpcy5fc3ZnSWNvbn1zZXQgc3ZnSWNvbih0KXt0IT09dGhpcy5fc3ZnSWNvbiYmKHQ/dGhpcy5fdXBkYXRlU3ZnSWNvbih0KTp0aGlzLl9zdmdJY29uJiZ0aGlzLl9jbGVhclN2Z0VsZW1lbnQoKSx0aGlzLl9zdmdJY29uPXQpfWdldCBmb250U2V0KCl7cmV0dXJuIHRoaXMuX2ZvbnRTZXR9c2V0IGZvbnRTZXQodCl7Y29uc3QgZT10aGlzLl9jbGVhbnVwRm9udFZhbHVlKHQpO2UhPT10aGlzLl9mb250U2V0JiYodGhpcy5fZm9udFNldD1lLHRoaXMuX3VwZGF0ZUZvbnRJY29uQ2xhc3NlcygpKX1nZXQgZm9udEljb24oKXtyZXR1cm4gdGhpcy5fZm9udEljb259c2V0IGZvbnRJY29uKHQpe2NvbnN0IGU9dGhpcy5fY2xlYW51cEZvbnRWYWx1ZSh0KTtlIT09dGhpcy5fZm9udEljb24mJih0aGlzLl9mb250SWNvbj1lLHRoaXMuX3VwZGF0ZUZvbnRJY29uQ2xhc3NlcygpKX1fc3BsaXRJY29uTmFtZSh0KXtpZighdClyZXR1cm5bIiIsIiJdO2NvbnN0IGU9dC5zcGxpdCgiOiIpO3N3aXRjaChlLmxlbmd0aCl7Y2FzZSAxOnJldHVyblsiIixlWzBdXTtjYXNlIDI6cmV0dXJuIGU7ZGVmYXVsdDp0aHJvdyBFcnJvcihgSW52YWxpZCBpY29uIG5hbWU6ICIke3R9ImApfX1uZ09uSW5pdCgpe3RoaXMuX3VwZGF0ZUZvbnRJY29uQ2xhc3NlcygpfW5nQWZ0ZXJWaWV3Q2hlY2tlZCgpe2NvbnN0IHQ9dGhpcy5fZWxlbWVudHNXaXRoRXh0ZXJuYWxSZWZlcmVuY2VzO2lmKHQmJnQuc2l6ZSl7Y29uc3QgdD10aGlzLl9sb2NhdGlvbi5nZXRQYXRobmFtZSgpO3QhPT10aGlzLl9wcmV2aW91c1BhdGgmJih0aGlzLl9wcmV2aW91c1BhdGg9dCx0aGlzLl9wcmVwZW5kUGF0aFRvUmVmZXJlbmNlcyh0KSl9fW5nT25EZXN0cm95KCl7dGhpcy5fY3VycmVudEljb25GZXRjaC51bnN1YnNjcmliZSgpLHRoaXMuX2VsZW1lbnRzV2l0aEV4dGVybmFsUmVmZXJlbmNlcyYmdGhpcy5fZWxlbWVudHNXaXRoRXh0ZXJuYWxSZWZlcmVuY2VzLmNsZWFyKCl9X3VzaW5nRm9udEljb24oKXtyZXR1cm4hdGhpcy5zdmdJY29ufV9zZXRTdmdFbGVtZW50KHQpe3RoaXMuX2NsZWFyU3ZnRWxlbWVudCgpO2NvbnN0IGU9dC5xdWVyeVNlbGVjdG9yQWxsKCJzdHlsZSIpO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKWVbdF0udGV4dENvbnRlbnQrPSIgIjtjb25zdCBuPXRoaXMuX2xvY2F0aW9uLmdldFBhdGhuYW1lKCk7dGhpcy5fcHJldmlvdXNQYXRoPW4sdGhpcy5fY2FjaGVDaGlsZHJlbldpdGhFeHRlcm5hbFJlZmVyZW5jZXModCksdGhpcy5fcHJlcGVuZFBhdGhUb1JlZmVyZW5jZXMobiksdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmFwcGVuZENoaWxkKHQpfV9jbGVhclN2Z0VsZW1lbnQoKXtjb25zdCB0PXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtsZXQgZT10LmNoaWxkTm9kZXMubGVuZ3RoO2Zvcih0aGlzLl9lbGVtZW50c1dpdGhFeHRlcm5hbFJlZmVyZW5jZXMmJnRoaXMuX2VsZW1lbnRzV2l0aEV4dGVybmFsUmVmZXJlbmNlcy5jbGVhcigpO2UtLTspe2NvbnN0IG49dC5jaGlsZE5vZGVzW2VdOzE9PT1uLm5vZGVUeXBlJiYic3ZnIiE9PW4ubm9kZU5hbWUudG9Mb3dlckNhc2UoKXx8dC5yZW1vdmVDaGlsZChuKX19X3VwZGF0ZUZvbnRJY29uQ2xhc3Nlcygpe2lmKCF0aGlzLl91c2luZ0ZvbnRJY29uKCkpcmV0dXJuO2NvbnN0IHQ9dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LGU9dGhpcy5mb250U2V0P3RoaXMuX2ljb25SZWdpc3RyeS5jbGFzc05hbWVGb3JGb250QWxpYXModGhpcy5mb250U2V0KTp0aGlzLl9pY29uUmVnaXN0cnkuZ2V0RGVmYXVsdEZvbnRTZXRDbGFzcygpO2UhPXRoaXMuX3ByZXZpb3VzRm9udFNldENsYXNzJiYodGhpcy5fcHJldmlvdXNGb250U2V0Q2xhc3MmJnQuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLl9wcmV2aW91c0ZvbnRTZXRDbGFzcyksZSYmdC5jbGFzc0xpc3QuYWRkKGUpLHRoaXMuX3ByZXZpb3VzRm9udFNldENsYXNzPWUpLHRoaXMuZm9udEljb24hPXRoaXMuX3ByZXZpb3VzRm9udEljb25DbGFzcyYmKHRoaXMuX3ByZXZpb3VzRm9udEljb25DbGFzcyYmdC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuX3ByZXZpb3VzRm9udEljb25DbGFzcyksdGhpcy5mb250SWNvbiYmdC5jbGFzc0xpc3QuYWRkKHRoaXMuZm9udEljb24pLHRoaXMuX3ByZXZpb3VzRm9udEljb25DbGFzcz10aGlzLmZvbnRJY29uKX1fY2xlYW51cEZvbnRWYWx1ZSh0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQ/dC50cmltKCkuc3BsaXQoIiAiKVswXTp0fV9wcmVwZW5kUGF0aFRvUmVmZXJlbmNlcyh0KXtjb25zdCBlPXRoaXMuX2VsZW1lbnRzV2l0aEV4dGVybmFsUmVmZXJlbmNlcztlJiZlLmZvckVhY2goKChlLG4pPT57ZS5mb3JFYWNoKChlPT57bi5zZXRBdHRyaWJ1dGUoZS5uYW1lLGB1cmwoJyR7dH0jJHtlLnZhbHVlfScpYCl9KSl9KSl9X2NhY2hlQ2hpbGRyZW5XaXRoRXh0ZXJuYWxSZWZlcmVuY2VzKHQpe2NvbnN0IGU9dC5xdWVyeVNlbGVjdG9yQWxsKF9xKSxuPXRoaXMuX2VsZW1lbnRzV2l0aEV4dGVybmFsUmVmZXJlbmNlcz10aGlzLl9lbGVtZW50c1dpdGhFeHRlcm5hbFJlZmVyZW5jZXN8fG5ldyBNYXA7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0KyspeXEuZm9yRWFjaCgobz0+e2NvbnN0IGk9ZVt0XSxhPWkuZ2V0QXR0cmlidXRlKG8pLHI9YT9hLm1hdGNoKENxKTpudWxsO2lmKHIpe2xldCB0PW4uZ2V0KGkpO3R8fCh0PVtdLG4uc2V0KGksdCkpLHQucHVzaCh7bmFtZTpvLHZhbHVlOnJbMV19KX19KSl9X3VwZGF0ZVN2Z0ljb24odCl7aWYodGhpcy5fc3ZnTmFtZXNwYWNlPW51bGwsdGhpcy5fc3ZnTmFtZT1udWxsLHRoaXMuX2N1cnJlbnRJY29uRmV0Y2gudW5zdWJzY3JpYmUoKSx0KXtjb25zdFtlLG5dPXRoaXMuX3NwbGl0SWNvbk5hbWUodCk7ZSYmKHRoaXMuX3N2Z05hbWVzcGFjZT1lKSxuJiYodGhpcy5fc3ZnTmFtZT1uKSx0aGlzLl9jdXJyZW50SWNvbkZldGNoPXRoaXMuX2ljb25SZWdpc3RyeS5nZXROYW1lZFN2Z0ljb24obixlKS5waXBlKHZlKDEpKS5zdWJzY3JpYmUoKHQ9PnRoaXMuX3NldFN2Z0VsZW1lbnQodCkpLCh0PT57dGhpcy5fZXJyb3JIYW5kbGVyLmhhbmRsZUVycm9yKG5ldyBFcnJvcihgRXJyb3IgcmV0cmlldmluZyBpY29uICR7ZX06JHtufSEgJHt0Lm1lc3NhZ2V9YCkpfSkpfX19TXEuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fE1xKShnZihLaCksZ2YobXEpLEdhKCJhcmlhLWhpZGRlbiIpLGdmKGhxKSxnZih1bCkpfSxNcS7JtWNtcD1zbyh7dHlwZTpNcSxzZWxlY3RvcnM6W1sibWF0LWljb24iXV0saG9zdEF0dHJzOlsicm9sZSIsImltZyIsMSwibWF0LWljb24iLCJub3RyYW5zbGF0ZSJdLGhvc3RWYXJzOjcsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsyJmUmJih5bSgiZGF0YS1tYXQtaWNvbi10eXBlIixuLl91c2luZ0ZvbnRJY29uKCk/ImZvbnQiOiJzdmciKSgiZGF0YS1tYXQtaWNvbi1uYW1lIixuLl9zdmdOYW1lfHxuLmZvbnRJY29uKSgiZGF0YS1tYXQtaWNvbi1uYW1lc3BhY2UiLG4uX3N2Z05hbWVzcGFjZXx8bi5mb250U2V0KSxjdSgibWF0LWljb24taW5saW5lIixuLmlubGluZSkoIm1hdC1pY29uLW5vLWNvbG9yIiwicHJpbWFyeSIhPT1uLmNvbG9yJiYiYWNjZW50IiE9PW4uY29sb3ImJiJ3YXJuIiE9PW4uY29sb3IpKX0saW5wdXRzOntjb2xvcjoiY29sb3IiLGlubGluZToiaW5saW5lIixzdmdJY29uOiJzdmdJY29uIixmb250U2V0OiJmb250U2V0Iixmb250SWNvbjoiZm9udEljb24ifSxleHBvcnRBczpbIm1hdEljb24iXSxmZWF0dXJlczpbUXBdLG5nQ29udGVudFNlbGVjdG9yczpbIioiXSxkZWNsczoxLHZhcnM6MCx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoSGYoKSxGZigwKSl9LHN0eWxlczpbIi5tYXQtaWNvbntiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7ZGlzcGxheTppbmxpbmUtYmxvY2s7ZmlsbDpjdXJyZW50Q29sb3I7aGVpZ2h0OjI0cHg7d2lkdGg6MjRweH0ubWF0LWljb24ubWF0LWljb24taW5saW5le2ZvbnQtc2l6ZTppbmhlcml0O2hlaWdodDppbmhlcml0O2xpbmUtaGVpZ2h0OmluaGVyaXQ7d2lkdGg6aW5oZXJpdH1bZGlyPXJ0bF0gLm1hdC1pY29uLXJ0bC1taXJyb3J7dHJhbnNmb3JtOnNjYWxlKC0xLCAxKX0ubWF0LWZvcm0tZmllbGQ6bm90KC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSkgLm1hdC1mb3JtLWZpZWxkLXByZWZpeCAubWF0LWljb24sLm1hdC1mb3JtLWZpZWxkOm5vdCgubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kpIC5tYXQtZm9ybS1maWVsZC1zdWZmaXggLm1hdC1pY29ue2Rpc3BsYXk6YmxvY2t9Lm1hdC1mb3JtLWZpZWxkOm5vdCgubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kpIC5tYXQtZm9ybS1maWVsZC1wcmVmaXggLm1hdC1pY29uLWJ1dHRvbiAubWF0LWljb24sLm1hdC1mb3JtLWZpZWxkOm5vdCgubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kpIC5tYXQtZm9ybS1maWVsZC1zdWZmaXggLm1hdC1pY29uLWJ1dHRvbiAubWF0LWljb257bWFyZ2luOmF1dG99XG4iXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSxNcS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOktofSx7dHlwZTptcX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOiRhLGFyZ3M6WyJhcmlhLWhpZGRlbiJdfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltocV19XX0se3R5cGU6dWx9XSxNcS5wcm9wRGVjb3JhdG9ycz17aW5saW5lOlt7dHlwZTpSX31dLHN2Z0ljb246W3t0eXBlOlJffV0sZm9udFNldDpbe3R5cGU6Ul99XSxmb250SWNvbjpbe3R5cGU6Ul99XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihNcSxbe3R5cGU6U18sYXJnczpbe3RlbXBsYXRlOiI8bmctY29udGVudD48L25nLWNvbnRlbnQ+IixzZWxlY3RvcjoibWF0LWljb24iLGV4cG9ydEFzOiJtYXRJY29uIixpbnB1dHM6WyJjb2xvciJdLGhvc3Q6e3JvbGU6ImltZyIsY2xhc3M6Im1hdC1pY29uIG5vdHJhbnNsYXRlIiwiW2F0dHIuZGF0YS1tYXQtaWNvbi10eXBlXSI6J191c2luZ0ZvbnRJY29uKCkgPyAiZm9udCIgOiAic3ZnIicsIlthdHRyLmRhdGEtbWF0LWljb24tbmFtZV0iOiJfc3ZnTmFtZSB8fCBmb250SWNvbiIsIlthdHRyLmRhdGEtbWF0LWljb24tbmFtZXNwYWNlXSI6Il9zdmdOYW1lc3BhY2UgfHwgZm9udFNldCIsIltjbGFzcy5tYXQtaWNvbi1pbmxpbmVdIjoiaW5saW5lIiwiW2NsYXNzLm1hdC1pY29uLW5vLWNvbG9yXSI6J2NvbG9yICE9PSAicHJpbWFyeSIgJiYgY29sb3IgIT09ICJhY2NlbnQiICYmIGNvbG9yICE9PSAid2FybiInfSxlbmNhcHN1bGF0aW9uOlduLk5vbmUsY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaCxzdHlsZXM6WyIubWF0LWljb257YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O2Rpc3BsYXk6aW5saW5lLWJsb2NrO2ZpbGw6Y3VycmVudENvbG9yO2hlaWdodDoyNHB4O3dpZHRoOjI0cHh9Lm1hdC1pY29uLm1hdC1pY29uLWlubGluZXtmb250LXNpemU6aW5oZXJpdDtoZWlnaHQ6aW5oZXJpdDtsaW5lLWhlaWdodDppbmhlcml0O3dpZHRoOmluaGVyaXR9W2Rpcj1ydGxdIC5tYXQtaWNvbi1ydGwtbWlycm9ye3RyYW5zZm9ybTpzY2FsZSgtMSwgMSl9Lm1hdC1mb3JtLWZpZWxkOm5vdCgubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kpIC5tYXQtZm9ybS1maWVsZC1wcmVmaXggLm1hdC1pY29uLC5tYXQtZm9ybS1maWVsZDpub3QoLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5KSAubWF0LWZvcm0tZmllbGQtc3VmZml4IC5tYXQtaWNvbntkaXNwbGF5OmJsb2NrfS5tYXQtZm9ybS1maWVsZDpub3QoLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5KSAubWF0LWZvcm0tZmllbGQtcHJlZml4IC5tYXQtaWNvbi1idXR0b24gLm1hdC1pY29uLC5tYXQtZm9ybS1maWVsZDpub3QoLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5KSAubWF0LWZvcm0tZmllbGQtc3VmZml4IC5tYXQtaWNvbi1idXR0b24gLm1hdC1pY29ue21hcmdpbjphdXRvfVxuIl19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpLaH0se3R5cGU6bXF9LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTokYSxhcmdzOlsiYXJpYS1oaWRkZW4iXX1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbaHFdfV19LHt0eXBlOnVsfV19KSx7aW5saW5lOlt7dHlwZTpSX31dLHN2Z0ljb246W3t0eXBlOlJffV0sZm9udFNldDpbe3R5cGU6Ul99XSxmb250SWNvbjpbe3R5cGU6Ul99XX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgdnF7fXZxLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx2cSl9LHZxLsm1bW9kPWZvKHt0eXBlOnZxfSksdnEuybVpbmo9RG4oe2ltcG9ydHM6W1tORl0sTkZdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih2cSxbe3R5cGU6TF8sYXJnczpbe2ltcG9ydHM6W05GXSxleHBvcnRzOltNcSxORl0sZGVjbGFyYXRpb25zOltNcV19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byh2cSx7ZGVjbGFyYXRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuW01xXX0saW1wb3J0czpmdW5jdGlvbigpe3JldHVybltORl19LGV4cG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bTXEsTkZdfX0pO2NsYXNzIHhxe2NvbnN0cnVjdG9yKHQpe3RoaXMuZGlhbG9nUmVmPXQsdGhpcy50ZW5zb3Jib2FyZERvdERldlVybD0iaHR0cHM6Ly90ZW5zb3Jib2FyZC5kZXYvP3V0bV9zb3VyY2U9dGVuc29yYm9hcmQifW9uQ2xvc2UoKXt0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpfWdldENvbW1hbmRUZXh0KCl7aWYodGhpcy5sb2dkaXIpe3JldHVybiJ0ZW5zb3Jib2FyZCBkZXYgdXBsb2FkIC0tbG9nZGlyIFxcXG4gICAgJyIrdGhpcy5sb2dkaXIucmVwbGFjZSgvJy9nLCInXFwnJyIpKyInIn1yZXR1cm4idGVuc29yYm9hcmQgZGV2IHVwbG9hZCAtLWxvZ2RpciB7bG9nZGlyfSJ9fXhxLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx4cSkoZ2YoVlkpKX0seHEuybVjbXA9c28oe3R5cGU6eHEsc2VsZWN0b3JzOltbInRiZGV2LXVwbG9hZC1kaWFsb2ctY29tcG9uZW50Il1dLGlucHV0czp7bG9nZGlyOiJsb2dkaXIifSxkZWNsczoyMSx2YXJzOjQsY29uc3RzOltbInRhcmdldCIsIl9ibGFuayIsInJlbCIsIm5vcmVmZXJyZXIgbm9vcGVuZXIiLDEsImFuY2hvci10ZXh0IiwzLCJocmVmIl0sWzEsImNvbW1hbmQiXSxbIm1hdC1pY29uLWJ1dHRvbiIsIiIsInRpdGxlIiwiQ2xpY2sgdG8gY29weSB0aGUgY29tbWFuZCIsMSwiY29tbWFuZC1jb3B5IiwzLCJjZGtDb3B5VG9DbGlwYm9hcmQiXSxbInN2Z0ljb24iLCJjb250ZW50X2NvcHlfMjRweCJdLFsxLCJib3R0b20tYnV0dG9ucyJdLFsibWF0LWZsYXQtYnV0dG9uIiwiIiwxLCJjbG9zZS1idXR0b24iLDMsImNsaWNrIl0sWyJtYXQtZmxhdC1idXR0b24iLCIiLCJ0YXJnZXQiLCJfYmxhbmsiLCJyZWwiLCJub3JlZmVycmVyIG5vb3BlbmVyIiwxLCJsZWFybi1tb3JlLWJ1dHRvbiIsMywiaHJlZiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoQ2YoMCwiaDMiKSxQdSgxLCJVcGxvYWQgdG8gVGVuc29yQm9hcmQuZGV2IiksTWYoKSxDZigyLCJwIiksQ2YoMywiYSIsMCksUHUoNCwiIFRlbnNvckJvYXJkLmRldiIpLE1mKCksUHUoNSwiIGVuYWJsZXMgeW91IHRvIGVhc2lseSBob3N0LCB0cmFjaywgYW5kIHNoYXJlIHlvdXIgTUwgZXhwZXJpbWVudHMgd2l0aCBldmVyeW9uZS4gWW91IGNhbiBzaGFyZSBhIGxpbmsgdG8gdGhlIHVwbG9hZGVkIFRlbnNvckJvYXJkIGluIHBhcGVycywgYmxvZyBwb3N0cywgYW5kIHNvY2lhbCBtZWRpYS4gVGhpcyBjYW4gc2hvd2Nhc2UgdGhlIHJlc3VsdHMgbW9yZSBlZmZlY3RpdmVseSBhbmQgaGVscHMgcmVwcm9kdWNpYmlsaXR5LlxuIiksTWYoKSxDZig2LCJwIiksUHUoNywiVG8gdXBsb2FkIGEgbG9nZGlyIHRvIFRlbnNvckJvYXJkLmRldiwgcnVuIHRoZSBjb21tYW5kOiIpLE1mKCksQ2YoOCwiZGl2IiwxKSxDZig5LCJwcmUiKSxDZigxMCwiY29kZSIpLFB1KDExKSxNZigpLE1mKCksQ2YoMTIsImJ1dHRvbiIsMiksdmYoMTMsIm1hdC1pY29uIiwzKSxNZigpLE1mKCksQ2YoMTQsInAiKSxQdSgxNSwiIE9ubHkgY2VydGFpbiBwbHVnaW5zIGFyZSBjdXJyZW50bHkgc3VwcG9ydGVkLiBVcGxvYWRlZCBUZW5zb3JCb2FyZHMgYXJlIHB1YmxpYyBhbmQgdmlzaWJsZSB0byBldmVyeW9uZTsgZG8gbm90IHVwbG9hZCBzZW5zaXRpdmUgZGF0YS5cbiIpLE1mKCksQ2YoMTYsImRpdiIsNCksQ2YoMTcsImJ1dHRvbiIsNSksUmYoImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uQ2xvc2UoKX0pKSxQdSgxOCwiIENsb3NlICIpLE1mKCksQ2YoMTksImEiLDYpLFB1KDIwLCIgTGVhcm4gbW9yZSAiKSxNZigpLE1mKCkpLDImZSYmKERjKDMpLExmKCJocmVmIixuLnRlbnNvcmJvYXJkRG90RGV2VXJsLFhzKSxEYyg4KSx3dShuLmdldENvbW1hbmRUZXh0KCkpLERjKDEpLGJmKCJjZGtDb3B5VG9DbGlwYm9hcmQiLG4uZ2V0Q29tbWFuZFRleHQoKSksRGMoNyksTGYoImhyZWYiLG4udGVuc29yYm9hcmREb3REZXZVcmwsWHMpKX0sZGlyZWN0aXZlczpbTkwscnEsTXEsekxdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgdHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfWRpdltfbmdjb250ZW50LSVDT01QJV0sIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjoxNnB4IDB9W19uZ2hvc3QtJUNPTVAlXSA+IFtfbmdjb250ZW50LSVDT01QJV06Zmlyc3QtY2hpbGR7bWFyZ2luLXRvcDowfVtfbmdob3N0LSVDT01QJV0gPiBbX25nY29udGVudC0lQ09NUCVdOmxhc3QtY2hpbGR7bWFyZ2luLWJvdHRvbTowfWgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDA7bGluZS1oZWlnaHQ6MS41fXBbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjE7Zm9udC1zaXplOjEycHg7bGluZS1oZWlnaHQ6MS41fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5hbmNob3ItdGV4dFtfbmdjb250ZW50LSVDT01QJV17dGV4dC1kZWNvcmF0aW9uOm5vbmV9LmNvbW1hbmRbX25nY29udGVudC0lQ09NUCVde2FsaWduLWl0ZW1zOmNlbnRlcjtiYWNrZ3JvdW5kOiNmNWY2Zjc7Ym9yZGVyLXJhZGl1czo0cHg7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO3BhZGRpbmc6MnB4IDEycHh9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLmNvbW1hbmRbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuY29tbWFuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojNjE2MTYxfXByZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3cteDphdXRvfWNvZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2xpbmUtaGVpZ2h0OjEuNX0uYm90dG9tLWJ1dHRvbnNbX25nY29udGVudC0lQ09NUCVde2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kfS5jbG9zZS1idXR0b25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjE7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO21hcmdpbi1yaWdodDo4cHh9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLmNsb3NlLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5jbG9zZS1idXR0b25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfVtfbmdob3N0LSVDT01QJV0gICAubGVhcm4tbW9yZS1idXR0b25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMxOTc2ZDI7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlfWJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5sZWFybi1tb3JlLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzQyYTVmNX0nXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoeHEsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoidGJkZXYtdXBsb2FkLWRpYWxvZy1jb21wb25lbnQiLHRlbXBsYXRlVXJsOiIuL3RiZGV2X3VwbG9hZF9kaWFsb2dfY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbIi4vdGJkZXZfdXBsb2FkX2RpYWxvZ19jb21wb25lbnQuY3NzIl19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpWWX1dfSkse2xvZ2Rpcjpbe3R5cGU6Ul99XX0pO2NvbnN0IE9xPWJTKG9ULCh0PT50LmRhdGFfbG9jYXRpb24pKTtjbGFzcyBQcXtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5sb2dkaXIkPXRoaXMuc3RvcmUucGlwZShyUyhPcSkpfX1mdW5jdGlvbiB3cSh0LGUpe2lmKDEmdCl7Y29uc3QgdD13ZigpO0NmKDAsImJ1dHRvbiIsMSksUmYoImNsaWNrIiwoZnVuY3Rpb24gZSgpe1BpKHQpO3JldHVybiB6ZigpLm9wZW5EaWFsb2coKX0pKSxDZigxLCJzcGFuIiwyKSx2ZigyLCJtYXQtaWNvbiIsMyksUHUoMywiIFVwbG9hZCAiKSxNZigpLE1mKCl9fVBxLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxQcSkoZ2YoaVMpKX0sUHEuybVjbXA9c28oe3R5cGU6UHEsc2VsZWN0b3JzOltbInRiZGV2LXVwbG9hZC1kaWFsb2ciXV0sZGVjbHM6Mix2YXJzOjMsY29uc3RzOltbMywibG9nZGlyIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJih2ZigwLCJ0YmRldi11cGxvYWQtZGlhbG9nLWNvbXBvbmVudCIsMCksX3koMSwiYXN5bmMiKSksMiZlJiZiZigibG9nZGlyIixDeSgxLDEsbi5sb2dkaXIkKSl9LGRpcmVjdGl2ZXM6W3hxXSxwaXBlczpbVnZdLGVuY2Fwc3VsYXRpb246Mn0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoUHEsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoidGJkZXYtdXBsb2FkLWRpYWxvZyIsdGVtcGxhdGU6J1xuICAgIDx0YmRldi11cGxvYWQtZGlhbG9nLWNvbXBvbmVudFxuICAgICAgW2xvZ2Rpcl09ImxvZ2RpciQgfCBhc3luYyJcbiAgICA+PC90YmRldi11cGxvYWQtZGlhbG9nLWNvbXBvbmVudD5cbiAgJ31dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmlTfV19KSxudWxsKTtjb25zdCBrcT1bImxvY2FsaG9zdCIsIjEyNy4wLjAuMSJdO2NsYXNzIFNxe2NvbnN0cnVjdG9yKHQsZSl7dGhpcy53aW5kb3c9dCx0aGlzLmRpYWxvZz1lLHRoaXMuc2hvd249a3EuaW5jbHVkZXModC5sb2NhdGlvbi5ob3N0bmFtZSl9b3BlbkRpYWxvZygpe3RoaXMuZGlhbG9nLm9wZW4oUHEse3dpZHRoOiI1NjBweCJ9KX19U3EuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFNxKShnZigid2luZG93IiksZ2YoWFkpKX0sU3EuybVjbXA9c28oe3R5cGU6U3Esc2VsZWN0b3JzOltbInRiZGV2LXVwbG9hZC1idXR0b24iXV0saG9zdFZhcnM6Mixob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezImZSYmY3UoInNob3duIixuLnNob3duKX0sZGVjbHM6MSx2YXJzOjEsY29uc3RzOltbIm1hdC1zdHJva2VkLWJ1dHRvbiIsIiIsMywiY2xpY2siLDQsIm5nSWYiXSxbIm1hdC1zdHJva2VkLWJ1dHRvbiIsIiIsMywiY2xpY2siXSxbMSwiYnV0dG9uLWNvbnRlbnRzIl0sWyJzdmdJY29uIiwiaW5mb19vdXRsaW5lXzI0cHgiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmSG0oMCx3cSw0LDAsImJ1dHRvbiIsMCksMiZlJiZiZigibmdJZiIsbi5zaG93bil9LGRpcmVjdGl2ZXM6W1B2LE5MLE1xXSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX1bX25naG9zdC0lQ09NUCVdICAgYnV0dG9uLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwO2JvcmRlcjoxcHggc29saWQgI2ViZWJlYn1ib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICBidXR0b24ubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNlZjZjMDB9LmJ1dHRvbi1jb250ZW50c1tfbmdjb250ZW50LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleDt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2V9bWF0LWljb25bX25nY29udGVudC0lQ09NUCVde21hcmdpbi1yaWdodDo2cHh9J119KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFNxLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6InRiZGV2LXVwbG9hZC1idXR0b24iLHRlbXBsYXRlVXJsOiIuL3RiZGV2X3VwbG9hZF9idXR0b25fY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbIi4vdGJkZXZfdXBsb2FkX2J1dHRvbl9jb21wb25lbnQuY3NzIl19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpXaW5kb3csZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbIndpbmRvdyJdfV19LHt0eXBlOlhZfV19KSx7c2hvd246W3t0eXBlOkFfLGFyZ3M6WyJjbGFzcy5zaG93biJdfV19KTtmdW5jdGlvbiBEcSh0LGUpezEmdCYmKG9hKCksQ2YoMCwic3ZnIiwyKSx2ZigxLCJwb2x5Z29uIiwzKSxNZigpKX1jb25zdCBScT1bIioiXTtmdW5jdGlvbiBFcSh0LGUpe2lmKDEmdCl7Y29uc3QgdD13ZigpO0NmKDAsImRpdiIsMCksUmYoImtleWRvd24iLChmdW5jdGlvbiBlKG4pe1BpKHQpO3JldHVybiB6ZigpLl9oYW5kbGVLZXlkb3duKG4pfSkpKCJjbGljayIsKGZ1bmN0aW9uIGUoKXtQaSh0KTtyZXR1cm4gemYoKS5jbG9zZWQuZW1pdCgiY2xpY2siKX0pKSgiQHRyYW5zZm9ybU1lbnUuc3RhcnQiLChmdW5jdGlvbiBlKG4pe1BpKHQpO3JldHVybiB6ZigpLl9vbkFuaW1hdGlvblN0YXJ0KG4pfSkpKCJAdHJhbnNmb3JtTWVudS5kb25lIiwoZnVuY3Rpb24gZShuKXtQaSh0KTtyZXR1cm4gemYoKS5fb25BbmltYXRpb25Eb25lKG4pfSkpLENmKDEsImRpdiIsMSksRmYoMiksTWYoKSxNZigpfWlmKDImdCl7Y29uc3QgdD16ZigpO2JmKCJpZCIsdC5wYW5lbElkKSgibmdDbGFzcyIsdC5fY2xhc3NMaXN0KSgiQHRyYW5zZm9ybU1lbnUiLHQuX3BhbmVsQW5pbWF0aW9uU3RhdGUpLHltKCJhcmlhLWxhYmVsIix0LmFyaWFMYWJlbHx8bnVsbCkoImFyaWEtbGFiZWxsZWRieSIsdC5hcmlhTGFiZWxsZWRieXx8bnVsbCkoImFyaWEtZGVzY3JpYmVkYnkiLHQuYXJpYURlc2NyaWJlZGJ5fHxudWxsKX19Y29uc3QgQXE9e3RyYW5zZm9ybU1lbnU6eE8oInRyYW5zZm9ybU1lbnUiLFtrTygidm9pZCIsd08oe29wYWNpdHk6MCx0cmFuc2Zvcm06InNjYWxlKDAuOCkifSkpLERPKCJ2b2lkID0+IGVudGVyIixPTygiMTIwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSkiLHdPKHtvcGFjaXR5OjEsdHJhbnNmb3JtOiJzY2FsZSgxKSJ9KSkpLERPKCIqID0+IHZvaWQiLE9PKCIxMDBtcyAyNW1zIGxpbmVhciIsd08oe29wYWNpdHk6MH0pKSldKSxmYWRlSW5JdGVtczp4TygiZmFkZUluSXRlbXMiLFtrTygic2hvd2luZyIsd08oe29wYWNpdHk6MX0pKSxETygidm9pZCA9PiAqIixbd08oe29wYWNpdHk6MH0pLE9PKCI0MDBtcyAxMDBtcyBjdWJpYy1iZXppZXIoMC41NSwgMCwgMC41NSwgMC4yKSIpXSldKX0sVHE9bmV3IGVyKCJNYXRNZW51Q29udGVudCIpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBOcXtjb25zdHJ1Y3Rvcih0LGUsbixvLGksYSxyKXt0aGlzLl90ZW1wbGF0ZT10LHRoaXMuX2NvbXBvbmVudEZhY3RvcnlSZXNvbHZlcj1lLHRoaXMuX2FwcFJlZj1uLHRoaXMuX2luamVjdG9yPW8sdGhpcy5fdmlld0NvbnRhaW5lclJlZj1pLHRoaXMuX2RvY3VtZW50PWEsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWY9cix0aGlzLl9hdHRhY2hlZD1uZXcgQn1hdHRhY2godD17fSl7dGhpcy5fcG9ydGFsfHwodGhpcy5fcG9ydGFsPW5ldyBsQih0aGlzLl90ZW1wbGF0ZSx0aGlzLl92aWV3Q29udGFpbmVyUmVmKSksdGhpcy5kZXRhY2goKSx0aGlzLl9vdXRsZXR8fCh0aGlzLl9vdXRsZXQ9bmV3IHBCKHRoaXMuX2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHRoaXMuX2NvbXBvbmVudEZhY3RvcnlSZXNvbHZlcix0aGlzLl9hcHBSZWYsdGhpcy5faW5qZWN0b3IpKTtjb25zdCBlPXRoaXMuX3RlbXBsYXRlLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtlLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRoaXMuX291dGxldC5vdXRsZXRFbGVtZW50LGUpLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmJiZ0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSx0aGlzLl9wb3J0YWwuYXR0YWNoKHRoaXMuX291dGxldCx0KSx0aGlzLl9hdHRhY2hlZC5uZXh0KCl9ZGV0YWNoKCl7dGhpcy5fcG9ydGFsLmlzQXR0YWNoZWQmJnRoaXMuX3BvcnRhbC5kZXRhY2goKX1uZ09uRGVzdHJveSgpe3RoaXMuX291dGxldCYmdGhpcy5fb3V0bGV0LmRpc3Bvc2UoKX19TnEuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fE5xKShnZihFYiksZ2YoR2gpLGdmKEhDKSxnZihOcCksZ2YoRmIpLGdmKHNNKSxnZihPYikpfSxOcS7JtWRpcj1obyh7dHlwZTpOcSxzZWxlY3RvcnM6W1sibmctdGVtcGxhdGUiLCJtYXRNZW51Q29udGVudCIsIiJdXSxmZWF0dXJlczpbamgoW3twcm92aWRlOlRxLHVzZUV4aXN0aW5nOk5xfV0pXX0pLE5xLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6RWJ9LHt0eXBlOkdofSx7dHlwZTpIQ30se3R5cGU6TnB9LHt0eXBlOkZifSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19LHt0eXBlOk9ifV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihOcSxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJuZy10ZW1wbGF0ZVttYXRNZW51Q29udGVudF0iLHByb3ZpZGVyczpbe3Byb3ZpZGU6VHEsdXNlRXhpc3Rpbmc6TnF9XX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkVifSx7dHlwZTpHaH0se3R5cGU6SEN9LHt0eXBlOk5wfSx7dHlwZTpGYn0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3NNXX1dfSx7dHlwZTpPYn1dfSksbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCB6cT1uZXcgZXIoIk1BVF9NRU5VX1BBTkVMIiksSXE9SEYoekYoY2xhc3N7fSkpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBIcSBleHRlbmRzIElxe2NvbnN0cnVjdG9yKHQsZSxuLG8saSl7c3VwZXIoKSx0aGlzLl9lbGVtZW50UmVmPXQsdGhpcy5fZm9jdXNNb25pdG9yPW4sdGhpcy5fcGFyZW50TWVudT1vLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmPWksdGhpcy5yb2xlPSJtZW51aXRlbSIsdGhpcy5faG92ZXJlZD1uZXcgQix0aGlzLl9mb2N1c2VkPW5ldyBCLHRoaXMuX2hpZ2hsaWdodGVkPSExLHRoaXMuX3RyaWdnZXJzU3VibWVudT0hMSxvJiZvLmFkZEl0ZW0mJm8uYWRkSXRlbSh0aGlzKX1mb2N1cyh0LGUpe3RoaXMuX2ZvY3VzTW9uaXRvciYmdD90aGlzLl9mb2N1c01vbml0b3IuZm9jdXNWaWEodGhpcy5fZ2V0SG9zdEVsZW1lbnQoKSx0LGUpOnRoaXMuX2dldEhvc3RFbGVtZW50KCkuZm9jdXMoZSksdGhpcy5fZm9jdXNlZC5uZXh0KHRoaXMpfW5nQWZ0ZXJWaWV3SW5pdCgpe3RoaXMuX2ZvY3VzTW9uaXRvciYmdGhpcy5fZm9jdXNNb25pdG9yLm1vbml0b3IodGhpcy5fZWxlbWVudFJlZiwhMSl9bmdPbkRlc3Ryb3koKXt0aGlzLl9mb2N1c01vbml0b3ImJnRoaXMuX2ZvY3VzTW9uaXRvci5zdG9wTW9uaXRvcmluZyh0aGlzLl9lbGVtZW50UmVmKSx0aGlzLl9wYXJlbnRNZW51JiZ0aGlzLl9wYXJlbnRNZW51LnJlbW92ZUl0ZW0mJnRoaXMuX3BhcmVudE1lbnUucmVtb3ZlSXRlbSh0aGlzKSx0aGlzLl9ob3ZlcmVkLmNvbXBsZXRlKCksdGhpcy5fZm9jdXNlZC5jb21wbGV0ZSgpfV9nZXRUYWJJbmRleCgpe3JldHVybiB0aGlzLmRpc2FibGVkPyItMSI6IjAifV9nZXRIb3N0RWxlbWVudCgpe3JldHVybiB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnR9X2NoZWNrRGlzYWJsZWQodCl7dGhpcy5kaXNhYmxlZCYmKHQucHJldmVudERlZmF1bHQoKSx0LnN0b3BQcm9wYWdhdGlvbigpKX1faGFuZGxlTW91c2VFbnRlcigpe3RoaXMuX2hvdmVyZWQubmV4dCh0aGlzKX1nZXRMYWJlbCgpe3ZhciB0LGU7Y29uc3Qgbj10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xvbmVOb2RlKCEwKSxvPW4ucXVlcnlTZWxlY3RvckFsbCgibWF0LWljb24sIC5tYXRlcmlhbC1pY29ucyIpO2ZvcihsZXQgZT0wO2U8by5sZW5ndGg7ZSsrKXtjb25zdCBuPW9bZV07bnVsbD09PSh0PW4ucGFyZW50Tm9kZSl8fHZvaWQgMD09PXR8fHQucmVtb3ZlQ2hpbGQobil9cmV0dXJuKG51bGw9PT0oZT1uLnRleHRDb250ZW50KXx8dm9pZCAwPT09ZT92b2lkIDA6ZS50cmltKCkpfHwiIn1fc2V0SGlnaGxpZ2h0ZWQodCl7dmFyIGU7dGhpcy5faGlnaGxpZ2h0ZWQ9dCxudWxsPT09KGU9dGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYpfHx2b2lkIDA9PT1lfHxlLm1hcmtGb3JDaGVjaygpfX1IcS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8SHEpKGdmKEtoKSxnZihzTSksZ2YoZkYpLGdmKHpxLDgpLGdmKE9iKSl9LEhxLsm1Y21wPXNvKHt0eXBlOkhxLHNlbGVjdG9yczpbWyIiLCJtYXQtbWVudS1pdGVtIiwiIl1dLGhvc3RBdHRyczpbMSwibWF0LWZvY3VzLWluZGljYXRvciJdLGhvc3RWYXJzOjEwLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MSZlJiZSZigiY2xpY2siLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLl9jaGVja0Rpc2FibGVkKGUpfSkpKCJtb3VzZWVudGVyIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLl9oYW5kbGVNb3VzZUVudGVyKCl9KSksMiZlJiYoeW0oInJvbGUiLG4ucm9sZSkoInRhYmluZGV4IixuLl9nZXRUYWJJbmRleCgpKSgiYXJpYS1kaXNhYmxlZCIsbi5kaXNhYmxlZC50b1N0cmluZygpKSgiZGlzYWJsZWQiLG4uZGlzYWJsZWR8fG51bGwpLGN1KCJtYXQtbWVudS1pdGVtIiwhMCkoIm1hdC1tZW51LWl0ZW0taGlnaGxpZ2h0ZWQiLG4uX2hpZ2hsaWdodGVkKSgibWF0LW1lbnUtaXRlbS1zdWJtZW51LXRyaWdnZXIiLG4uX3RyaWdnZXJzU3VibWVudSkpfSxpbnB1dHM6e2Rpc2FibGVkOiJkaXNhYmxlZCIsZGlzYWJsZVJpcHBsZToiZGlzYWJsZVJpcHBsZSIscm9sZToicm9sZSJ9LGV4cG9ydEFzOlsibWF0TWVudUl0ZW0iXSxmZWF0dXJlczpbUXBdLGF0dHJzOlsibWF0LW1lbnUtaXRlbSIsIiJdLG5nQ29udGVudFNlbGVjdG9yczpScSxkZWNsczozLHZhcnM6Myxjb25zdHM6W1sibWF0UmlwcGxlIiwiIiwxLCJtYXQtbWVudS1yaXBwbGUiLDMsIm1hdFJpcHBsZURpc2FibGVkIiwibWF0UmlwcGxlVHJpZ2dlciJdLFsiY2xhc3MiLCJtYXQtbWVudS1zdWJtZW51LWljb24iLCJ2aWV3Qm94IiwiMCAwIDUgMTAiLCJmb2N1c2FibGUiLCJmYWxzZSIsNCwibmdJZiJdLFsidmlld0JveCIsIjAgMCA1IDEwIiwiZm9jdXNhYmxlIiwiZmFsc2UiLDEsIm1hdC1tZW51LXN1Ym1lbnUtaWNvbiJdLFsicG9pbnRzIiwiMCwwIDUsNSAwLDEwIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihIZigpLEZmKDApLHZmKDEsImRpdiIsMCksSG0oMixEcSwyLDAsInN2ZyIsMSkpLDImZSYmKERjKDEpLGJmKCJtYXRSaXBwbGVEaXNhYmxlZCIsbi5kaXNhYmxlUmlwcGxlfHxuLmRpc2FibGVkKSgibWF0UmlwcGxlVHJpZ2dlciIsbi5fZ2V0SG9zdEVsZW1lbnQoKSksRGMoMSksYmYoIm5nSWYiLG4uX3RyaWdnZXJzU3VibWVudSkpfSxkaXJlY3RpdmVzOlttTCxQdl0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksSHEuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpLaH0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3NNXX1dfSx7dHlwZTpmRn0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3pxXX0se3R5cGU6QnJ9XX0se3R5cGU6T2J9XSxIcS5wcm9wRGVjb3JhdG9ycz17cm9sZTpbe3R5cGU6Ul99XSxfY2hlY2tEaXNhYmxlZDpbe3R5cGU6VF8sYXJnczpbImNsaWNrIixbIiRldmVudCJdXX1dLF9oYW5kbGVNb3VzZUVudGVyOlt7dHlwZTpUXyxhcmdzOlsibW91c2VlbnRlciJdfV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoSHEsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoiW21hdC1tZW51LWl0ZW1dIixleHBvcnRBczoibWF0TWVudUl0ZW0iLGlucHV0czpbImRpc2FibGVkIiwiZGlzYWJsZVJpcHBsZSJdLGhvc3Q6eyJbYXR0ci5yb2xlXSI6InJvbGUiLCJbY2xhc3MubWF0LW1lbnUtaXRlbV0iOiJ0cnVlIiwiW2NsYXNzLm1hdC1tZW51LWl0ZW0taGlnaGxpZ2h0ZWRdIjoiX2hpZ2hsaWdodGVkIiwiW2NsYXNzLm1hdC1tZW51LWl0ZW0tc3VibWVudS10cmlnZ2VyXSI6Il90cmlnZ2Vyc1N1Ym1lbnUiLCJbYXR0ci50YWJpbmRleF0iOiJfZ2V0VGFiSW5kZXgoKSIsIlthdHRyLmFyaWEtZGlzYWJsZWRdIjoiZGlzYWJsZWQudG9TdHJpbmcoKSIsIlthdHRyLmRpc2FibGVkXSI6ImRpc2FibGVkIHx8IG51bGwiLGNsYXNzOiJtYXQtZm9jdXMtaW5kaWNhdG9yIn0sY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaCxlbmNhcHN1bGF0aW9uOlduLk5vbmUsdGVtcGxhdGU6JzxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjxkaXYgY2xhc3M9Im1hdC1tZW51LXJpcHBsZSIgbWF0UmlwcGxlXG4gICAgIFttYXRSaXBwbGVEaXNhYmxlZF09ImRpc2FibGVSaXBwbGUgfHwgZGlzYWJsZWQiXG4gICAgIFttYXRSaXBwbGVUcmlnZ2VyXT0iX2dldEhvc3RFbGVtZW50KCkiPlxuPC9kaXY+XG5cbjxzdmdcbiAgKm5nSWY9Il90cmlnZ2Vyc1N1Ym1lbnUiXG4gIGNsYXNzPSJtYXQtbWVudS1zdWJtZW51LWljb24iXG4gIHZpZXdCb3g9IjAgMCA1IDEwIlxuICBmb2N1c2FibGU9ImZhbHNlIj48cG9seWdvbiBwb2ludHM9IjAsMCA1LDUgMCwxMCIvPjwvc3ZnPlxuJ31dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOktofSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19LHt0eXBlOmZGfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbenFdfSx7dHlwZTpCcn1dfSx7dHlwZTpPYn1dfSkse3JvbGU6W3t0eXBlOlJffV0sX2NoZWNrRGlzYWJsZWQ6W3t0eXBlOlRfLGFyZ3M6WyJjbGljayIsWyIkZXZlbnQiXV19XSxfaGFuZGxlTW91c2VFbnRlcjpbe3R5cGU6VF8sYXJnczpbIm1vdXNlZW50ZXIiXX1dfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCBGcT1uZXcgZXIoIm1hdC1tZW51LWRlZmF1bHQtb3B0aW9ucyIse3Byb3ZpZGVkSW46InJvb3QiLGZhY3Rvcnk6ZnVuY3Rpb24gTHEoKXtyZXR1cm57b3ZlcmxhcFRyaWdnZXI6ITEseFBvc2l0aW9uOiJhZnRlciIseVBvc2l0aW9uOiJiZWxvdyIsYmFja2Ryb3BDbGFzczoiY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AifX19KTtsZXQgQnE9MDtjbGFzcyBWcXtjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5fZWxlbWVudFJlZj10LHRoaXMuX25nWm9uZT1lLHRoaXMuX2RlZmF1bHRPcHRpb25zPW4sdGhpcy5feFBvc2l0aW9uPXRoaXMuX2RlZmF1bHRPcHRpb25zLnhQb3NpdGlvbix0aGlzLl95UG9zaXRpb249dGhpcy5fZGVmYXVsdE9wdGlvbnMueVBvc2l0aW9uLHRoaXMuX2RpcmVjdERlc2NlbmRhbnRJdGVtcz1uZXcgUnksdGhpcy5fdGFiU3Vic2NyaXB0aW9uPXUuRU1QVFksdGhpcy5fY2xhc3NMaXN0PXt9LHRoaXMuX3BhbmVsQW5pbWF0aW9uU3RhdGU9InZvaWQiLHRoaXMuX2FuaW1hdGlvbkRvbmU9bmV3IEIsdGhpcy5vdmVybGF5UGFuZWxDbGFzcz10aGlzLl9kZWZhdWx0T3B0aW9ucy5vdmVybGF5UGFuZWxDbGFzc3x8IiIsdGhpcy5iYWNrZHJvcENsYXNzPXRoaXMuX2RlZmF1bHRPcHRpb25zLmJhY2tkcm9wQ2xhc3MsdGhpcy5fb3ZlcmxhcFRyaWdnZXI9dGhpcy5fZGVmYXVsdE9wdGlvbnMub3ZlcmxhcFRyaWdnZXIsdGhpcy5faGFzQmFja2Ryb3A9dGhpcy5fZGVmYXVsdE9wdGlvbnMuaGFzQmFja2Ryb3AsdGhpcy5jbG9zZWQ9bmV3IFN5LHRoaXMuY2xvc2U9dGhpcy5jbG9zZWQsdGhpcy5wYW5lbElkPSJtYXQtbWVudS1wYW5lbC0iK0JxKyt9Z2V0IHhQb3NpdGlvbigpe3JldHVybiB0aGlzLl94UG9zaXRpb259c2V0IHhQb3NpdGlvbih0KXsiYmVmb3JlIj09PXR8fCJhZnRlciI9PT10fHwidW5kZWZpbmVkIiE9dHlwZW9mIG5nRGV2TW9kZSYmIW5nRGV2TW9kZXx8KGZ1bmN0aW9uIGUoKXt0aHJvdyBFcnJvcigneFBvc2l0aW9uIHZhbHVlIG11c3QgYmUgZWl0aGVyIFwnYmVmb3JlXCcgb3IgYWZ0ZXJcJy5cbiAgICAgIEV4YW1wbGU6IDxtYXQtbWVudSB4UG9zaXRpb249ImJlZm9yZSIgI21lbnU9Im1hdE1lbnUiPjwvbWF0LW1lbnU+Jyl9KSgpLHRoaXMuX3hQb3NpdGlvbj10LHRoaXMuc2V0UG9zaXRpb25DbGFzc2VzKCl9Z2V0IHlQb3NpdGlvbigpe3JldHVybiB0aGlzLl95UG9zaXRpb259c2V0IHlQb3NpdGlvbih0KXsiYWJvdmUiPT09dHx8ImJlbG93Ij09PXR8fCJ1bmRlZmluZWQiIT10eXBlb2YgbmdEZXZNb2RlJiYhbmdEZXZNb2RlfHwoZnVuY3Rpb24gZSgpe3Rocm93IEVycm9yKCd5UG9zaXRpb24gdmFsdWUgbXVzdCBiZSBlaXRoZXIgXCdhYm92ZVwnIG9yIGJlbG93XCcuXG4gICAgICBFeGFtcGxlOiA8bWF0LW1lbnUgeVBvc2l0aW9uPSJhYm92ZSIgI21lbnU9Im1hdE1lbnUiPjwvbWF0LW1lbnU+Jyl9KSgpLHRoaXMuX3lQb3NpdGlvbj10LHRoaXMuc2V0UG9zaXRpb25DbGFzc2VzKCl9Z2V0IG92ZXJsYXBUcmlnZ2VyKCl7cmV0dXJuIHRoaXMuX292ZXJsYXBUcmlnZ2VyfXNldCBvdmVybGFwVHJpZ2dlcih0KXt0aGlzLl9vdmVybGFwVHJpZ2dlcj1lSCh0KX1nZXQgaGFzQmFja2Ryb3AoKXtyZXR1cm4gdGhpcy5faGFzQmFja2Ryb3B9c2V0IGhhc0JhY2tkcm9wKHQpe3RoaXMuX2hhc0JhY2tkcm9wPWVIKHQpfXNldCBwYW5lbENsYXNzKHQpe2NvbnN0IGU9dGhpcy5fcHJldmlvdXNQYW5lbENsYXNzO2UmJmUubGVuZ3RoJiZlLnNwbGl0KCIgIikuZm9yRWFjaCgodD0+e3RoaXMuX2NsYXNzTGlzdFt0XT0hMX0pKSx0aGlzLl9wcmV2aW91c1BhbmVsQ2xhc3M9dCx0JiZ0Lmxlbmd0aCYmKHQuc3BsaXQoIiAiKS5mb3JFYWNoKCh0PT57dGhpcy5fY2xhc3NMaXN0W3RdPSEwfSkpLHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbGFzc05hbWU9IiIpfWdldCBjbGFzc0xpc3QoKXtyZXR1cm4gdGhpcy5wYW5lbENsYXNzfXNldCBjbGFzc0xpc3QodCl7dGhpcy5wYW5lbENsYXNzPXR9bmdPbkluaXQoKXt0aGlzLnNldFBvc2l0aW9uQ2xhc3NlcygpfW5nQWZ0ZXJDb250ZW50SW5pdCgpe3RoaXMuX3VwZGF0ZURpcmVjdERlc2NlbmRhbnRzKCksdGhpcy5fa2V5TWFuYWdlcj1uZXcgTEgodGhpcy5fZGlyZWN0RGVzY2VuZGFudEl0ZW1zKS53aXRoV3JhcCgpLndpdGhUeXBlQWhlYWQoKS53aXRoSG9tZUFuZEVuZCgpLHRoaXMuX3RhYlN1YnNjcmlwdGlvbj10aGlzLl9rZXlNYW5hZ2VyLnRhYk91dC5zdWJzY3JpYmUoKCgpPT50aGlzLmNsb3NlZC5lbWl0KCJ0YWIiKSkpLHRoaXMuX2RpcmVjdERlc2NlbmRhbnRJdGVtcy5jaGFuZ2VzLnBpcGUoQmUodGhpcy5fZGlyZWN0RGVzY2VuZGFudEl0ZW1zKSxWZSgodD0+cGUoLi4udC5tYXAoKHQ9PnQuX2ZvY3VzZWQpKSkpKSkuc3Vic2NyaWJlKCh0PT50aGlzLl9rZXlNYW5hZ2VyLnVwZGF0ZUFjdGl2ZUl0ZW0odCkpKX1uZ09uRGVzdHJveSgpe3RoaXMuX2RpcmVjdERlc2NlbmRhbnRJdGVtcy5kZXN0cm95KCksdGhpcy5fdGFiU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksdGhpcy5jbG9zZWQuY29tcGxldGUoKX1faG92ZXJlZCgpe3JldHVybiB0aGlzLl9kaXJlY3REZXNjZW5kYW50SXRlbXMuY2hhbmdlcy5waXBlKEJlKHRoaXMuX2RpcmVjdERlc2NlbmRhbnRJdGVtcyksVmUoKHQ9PnBlKC4uLnQubWFwKCh0PT50Ll9ob3ZlcmVkKSkpKSkpfWFkZEl0ZW0odCl7fXJlbW92ZUl0ZW0odCl7fV9oYW5kbGVLZXlkb3duKHQpe2NvbnN0IGU9dC5rZXlDb2RlLG49dGhpcy5fa2V5TWFuYWdlcjtzd2l0Y2goZSl7Y2FzZSBLSTp0SCh0KXx8KHQucHJldmVudERlZmF1bHQoKSx0aGlzLmNsb3NlZC5lbWl0KCJrZXlkb3duIikpO2JyZWFrO2Nhc2UgMzc6dGhpcy5wYXJlbnRNZW51JiYibHRyIj09PXRoaXMuZGlyZWN0aW9uJiZ0aGlzLmNsb3NlZC5lbWl0KCJrZXlkb3duIik7YnJlYWs7Y2FzZSAzOTp0aGlzLnBhcmVudE1lbnUmJiJydGwiPT09dGhpcy5kaXJlY3Rpb24mJnRoaXMuY2xvc2VkLmVtaXQoImtleWRvd24iKTticmVhaztkZWZhdWx0OmUhPT1RSSYmZSE9PSRJfHxuLnNldEZvY3VzT3JpZ2luKCJrZXlib2FyZCIpLG4ub25LZXlkb3duKHQpfX1mb2N1c0ZpcnN0SXRlbSh0PSJwcm9ncmFtIil7dGhpcy5sYXp5Q29udGVudD90aGlzLl9uZ1pvbmUub25TdGFibGUucGlwZSh2ZSgxKSkuc3Vic2NyaWJlKCgoKT0+dGhpcy5fZm9jdXNGaXJzdEl0ZW0odCkpKTp0aGlzLl9mb2N1c0ZpcnN0SXRlbSh0KX1fZm9jdXNGaXJzdEl0ZW0odCl7Y29uc3QgZT10aGlzLl9rZXlNYW5hZ2VyO2lmKGUuc2V0Rm9jdXNPcmlnaW4odCkuc2V0Rmlyc3RJdGVtQWN0aXZlKCksIWUuYWN0aXZlSXRlbSYmdGhpcy5fZGlyZWN0RGVzY2VuZGFudEl0ZW1zLmxlbmd0aCl7bGV0IHQ9dGhpcy5fZGlyZWN0RGVzY2VuZGFudEl0ZW1zLmZpcnN0Ll9nZXRIb3N0RWxlbWVudCgpLnBhcmVudEVsZW1lbnQ7Zm9yKDt0Oyl7aWYoIm1lbnUiPT09dC5nZXRBdHRyaWJ1dGUoInJvbGUiKSl7dC5mb2N1cygpO2JyZWFrfXQ9dC5wYXJlbnRFbGVtZW50fX19cmVzZXRBY3RpdmVJdGVtKCl7dGhpcy5fa2V5TWFuYWdlci5zZXRBY3RpdmVJdGVtKC0xKX1zZXRFbGV2YXRpb24odCl7Y29uc3QgZT1NYXRoLm1pbih0aGlzLl9iYXNlRWxldmF0aW9uK3QsMjQpLG49YCR7dGhpcy5fZWxldmF0aW9uUHJlZml4fSR7ZX1gLG89T2JqZWN0LmtleXModGhpcy5fY2xhc3NMaXN0KS5maW5kKCh0PT50LnN0YXJ0c1dpdGgodGhpcy5fZWxldmF0aW9uUHJlZml4KSkpO28mJm8hPT10aGlzLl9wcmV2aW91c0VsZXZhdGlvbnx8KHRoaXMuX3ByZXZpb3VzRWxldmF0aW9uJiYodGhpcy5fY2xhc3NMaXN0W3RoaXMuX3ByZXZpb3VzRWxldmF0aW9uXT0hMSksdGhpcy5fY2xhc3NMaXN0W25dPSEwLHRoaXMuX3ByZXZpb3VzRWxldmF0aW9uPW4pfXNldFBvc2l0aW9uQ2xhc3Nlcyh0PXRoaXMueFBvc2l0aW9uLGU9dGhpcy55UG9zaXRpb24pe2NvbnN0IG49dGhpcy5fY2xhc3NMaXN0O25bIm1hdC1tZW51LWJlZm9yZSJdPSJiZWZvcmUiPT09dCxuWyJtYXQtbWVudS1hZnRlciJdPSJhZnRlciI9PT10LG5bIm1hdC1tZW51LWFib3ZlIl09ImFib3ZlIj09PWUsblsibWF0LW1lbnUtYmVsb3ciXT0iYmVsb3ciPT09ZX1fc3RhcnRBbmltYXRpb24oKXt0aGlzLl9wYW5lbEFuaW1hdGlvblN0YXRlPSJlbnRlciJ9X3Jlc2V0QW5pbWF0aW9uKCl7dGhpcy5fcGFuZWxBbmltYXRpb25TdGF0ZT0idm9pZCJ9X29uQW5pbWF0aW9uRG9uZSh0KXt0aGlzLl9hbmltYXRpb25Eb25lLm5leHQodCksdGhpcy5faXNBbmltYXRpbmc9ITF9X29uQW5pbWF0aW9uU3RhcnQodCl7dGhpcy5faXNBbmltYXRpbmc9ITAsImVudGVyIj09PXQudG9TdGF0ZSYmMD09PXRoaXMuX2tleU1hbmFnZXIuYWN0aXZlSXRlbUluZGV4JiYodC5lbGVtZW50LnNjcm9sbFRvcD0wKX1fdXBkYXRlRGlyZWN0RGVzY2VuZGFudHMoKXt0aGlzLl9hbGxJdGVtcy5jaGFuZ2VzLnBpcGUoQmUodGhpcy5fYWxsSXRlbXMpKS5zdWJzY3JpYmUoKHQ9Pnt0aGlzLl9kaXJlY3REZXNjZW5kYW50SXRlbXMucmVzZXQodC5maWx0ZXIoKHQ9PnQuX3BhcmVudE1lbnU9PT10aGlzKSkpLHRoaXMuX2RpcmVjdERlc2NlbmRhbnRJdGVtcy5ub3RpZnlPbkNoYW5nZXMoKX0pKX19VnEuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFZxKShnZihLaCksZ2YobUMpLGdmKEZxKSl9LFZxLsm1ZGlyPWhvKHt0eXBlOlZxLGNvbnRlbnRRdWVyaWVzOmZ1bmN0aW9uIHQoZSxuLG8pe2lmKDEmZSYmKGp5KG8sVHEsNSksankobyxIcSw1KSxqeShvLEhxLDQpKSwyJmUpe2xldCB0O0J5KHQ9VXkoKSkmJihuLmxhenlDb250ZW50PXQuZmlyc3QpLEJ5KHQ9VXkoKSkmJihuLl9hbGxJdGVtcz10KSxCeSh0PVV5KCkpJiYobi5pdGVtcz10KX19LHZpZXdRdWVyeTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiZWeShFYiw1KSwyJmUpe2xldCB0O0J5KHQ9VXkoKSkmJihuLnRlbXBsYXRlUmVmPXQuZmlyc3QpfX0saW5wdXRzOntiYWNrZHJvcENsYXNzOiJiYWNrZHJvcENsYXNzIix4UG9zaXRpb246InhQb3NpdGlvbiIseVBvc2l0aW9uOiJ5UG9zaXRpb24iLG92ZXJsYXBUcmlnZ2VyOiJvdmVybGFwVHJpZ2dlciIsaGFzQmFja2Ryb3A6Imhhc0JhY2tkcm9wIixwYW5lbENsYXNzOlsiY2xhc3MiLCJwYW5lbENsYXNzIl0sY2xhc3NMaXN0OiJjbGFzc0xpc3QiLGFyaWFMYWJlbDpbImFyaWEtbGFiZWwiLCJhcmlhTGFiZWwiXSxhcmlhTGFiZWxsZWRieTpbImFyaWEtbGFiZWxsZWRieSIsImFyaWFMYWJlbGxlZGJ5Il0sYXJpYURlc2NyaWJlZGJ5OlsiYXJpYS1kZXNjcmliZWRieSIsImFyaWFEZXNjcmliZWRieSJdfSxvdXRwdXRzOntjbG9zZWQ6ImNsb3NlZCIsY2xvc2U6ImNsb3NlIn19KSxWcS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOktofSx7dHlwZTptQ30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W0ZxXX1dfV0sVnEucHJvcERlY29yYXRvcnM9e19hbGxJdGVtczpbe3R5cGU6b3IsYXJnczpbSHEse2Rlc2NlbmRhbnRzOiEwfV19XSxiYWNrZHJvcENsYXNzOlt7dHlwZTpSX31dLGFyaWFMYWJlbDpbe3R5cGU6Ul8sYXJnczpbImFyaWEtbGFiZWwiXX1dLGFyaWFMYWJlbGxlZGJ5Olt7dHlwZTpSXyxhcmdzOlsiYXJpYS1sYWJlbGxlZGJ5Il19XSxhcmlhRGVzY3JpYmVkYnk6W3t0eXBlOlJfLGFyZ3M6WyJhcmlhLWRlc2NyaWJlZGJ5Il19XSx4UG9zaXRpb246W3t0eXBlOlJffV0seVBvc2l0aW9uOlt7dHlwZTpSX31dLHRlbXBsYXRlUmVmOlt7dHlwZTphcixhcmdzOltFYl19XSxpdGVtczpbe3R5cGU6b3IsYXJnczpbSHEse2Rlc2NlbmRhbnRzOiExfV19XSxsYXp5Q29udGVudDpbe3R5cGU6aXIsYXJnczpbVHFdfV0sb3ZlcmxhcFRyaWdnZXI6W3t0eXBlOlJffV0saGFzQmFja2Ryb3A6W3t0eXBlOlJffV0scGFuZWxDbGFzczpbe3R5cGU6Ul8sYXJnczpbImNsYXNzIl19XSxjbGFzc0xpc3Q6W3t0eXBlOlJffV0sY2xvc2VkOlt7dHlwZTpFX31dLGNsb3NlOlt7dHlwZTpFX31dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFZxLFt7dHlwZTprX31dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpLaH0se3R5cGU6bUN9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltGcV19XX1dfSkse2JhY2tkcm9wQ2xhc3M6W3t0eXBlOlJffV0sY2xvc2VkOlt7dHlwZTpFX31dLGNsb3NlOlt7dHlwZTpFX31dLHhQb3NpdGlvbjpbe3R5cGU6Ul99XSx5UG9zaXRpb246W3t0eXBlOlJffV0sb3ZlcmxhcFRyaWdnZXI6W3t0eXBlOlJffV0saGFzQmFja2Ryb3A6W3t0eXBlOlJffV0scGFuZWxDbGFzczpbe3R5cGU6Ul8sYXJnczpbImNsYXNzIl19XSxjbGFzc0xpc3Q6W3t0eXBlOlJffV0sX2FsbEl0ZW1zOlt7dHlwZTpvcixhcmdzOltIcSx7ZGVzY2VuZGFudHM6ITB9XX1dLGFyaWFMYWJlbDpbe3R5cGU6Ul8sYXJnczpbImFyaWEtbGFiZWwiXX1dLGFyaWFMYWJlbGxlZGJ5Olt7dHlwZTpSXyxhcmdzOlsiYXJpYS1sYWJlbGxlZGJ5Il19XSxhcmlhRGVzY3JpYmVkYnk6W3t0eXBlOlJfLGFyZ3M6WyJhcmlhLWRlc2NyaWJlZGJ5Il19XSx0ZW1wbGF0ZVJlZjpbe3R5cGU6YXIsYXJnczpbRWJdfV0saXRlbXM6W3t0eXBlOm9yLGFyZ3M6W0hxLHtkZXNjZW5kYW50czohMX1dfV0sbGF6eUNvbnRlbnQ6W3t0eXBlOmlyLGFyZ3M6W1RxXX1dfSk7Y2xhc3MganEgZXh0ZW5kcyBWcXtjb25zdHJ1Y3Rvcih0LGUsbil7c3VwZXIodCxlLG4pLHRoaXMuX2VsZXZhdGlvblByZWZpeD0ibWF0LWVsZXZhdGlvbi16Iix0aGlzLl9iYXNlRWxldmF0aW9uPTR9fWpxLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxqcSkoZ2YoS2gpLGdmKG1DKSxnZihGcSkpfSxqcS7JtWNtcD1zbyh7dHlwZTpqcSxzZWxlY3RvcnM6W1sibWF0LW1lbnUiXV0saG9zdFZhcnM6Myxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezImZSYmeW0oImFyaWEtbGFiZWwiLG51bGwpKCJhcmlhLWxhYmVsbGVkYnkiLG51bGwpKCJhcmlhLWRlc2NyaWJlZGJ5IixudWxsKX0sZXhwb3J0QXM6WyJtYXRNZW51Il0sZmVhdHVyZXM6W2poKFt7cHJvdmlkZTp6cSx1c2VFeGlzdGluZzpqcX1dKSxRcF0sbmdDb250ZW50U2VsZWN0b3JzOlJxLGRlY2xzOjEsdmFyczowLGNvbnN0czpbWyJ0YWJpbmRleCIsIi0xIiwicm9sZSIsIm1lbnUiLDEsIm1hdC1tZW51LXBhbmVsIiwzLCJpZCIsIm5nQ2xhc3MiLCJrZXlkb3duIiwiY2xpY2siXSxbMSwibWF0LW1lbnUtY29udGVudCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoSGYoKSxIbSgwLEVxLDMsNiwibmctdGVtcGxhdGUiKSl9LGRpcmVjdGl2ZXM6W0N2XSxzdHlsZXM6WyJtYXQtbWVudXtkaXNwbGF5Om5vbmV9Lm1hdC1tZW51LXBhbmVse21pbi13aWR0aDoxMTJweDttYXgtd2lkdGg6MjgwcHg7b3ZlcmZsb3c6YXV0bzstd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzp0b3VjaDttYXgtaGVpZ2h0OmNhbGMoMTAwdmggLSA0OHB4KTtib3JkZXItcmFkaXVzOjRweDtvdXRsaW5lOjA7bWluLWhlaWdodDo2NHB4fS5tYXQtbWVudS1wYW5lbC5uZy1hbmltYXRpbmd7cG9pbnRlci1ldmVudHM6bm9uZX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtbWVudS1wYW5lbHtvdXRsaW5lOnNvbGlkIDFweH0ubWF0LW1lbnUtY29udGVudDpub3QoOmVtcHR5KXtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbWVudS1pdGVtey13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTtjdXJzb3I6cG9pbnRlcjtvdXRsaW5lOm5vbmU7Ym9yZGVyOm5vbmU7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2xpbmUtaGVpZ2h0OjQ4cHg7aGVpZ2h0OjQ4cHg7cGFkZGluZzowIDE2cHg7dGV4dC1hbGlnbjpsZWZ0O3RleHQtZGVjb3JhdGlvbjpub25lO21heC13aWR0aDoxMDAlO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWVudS1pdGVtOjotbW96LWZvY3VzLWlubmVye2JvcmRlcjowfS5tYXQtbWVudS1pdGVtW2Rpc2FibGVkXXtjdXJzb3I6ZGVmYXVsdH1bZGlyPXJ0bF0gLm1hdC1tZW51LWl0ZW17dGV4dC1hbGlnbjpyaWdodH0ubWF0LW1lbnUtaXRlbSAubWF0LWljb257bWFyZ2luLXJpZ2h0OjE2cHg7dmVydGljYWwtYWxpZ246bWlkZGxlfS5tYXQtbWVudS1pdGVtIC5tYXQtaWNvbiBzdmd7dmVydGljYWwtYWxpZ246dG9wfVtkaXI9cnRsXSAubWF0LW1lbnUtaXRlbSAubWF0LWljb257bWFyZ2luLWxlZnQ6MTZweDttYXJnaW4tcmlnaHQ6MH0ubWF0LW1lbnUtaXRlbVtkaXNhYmxlZF17cG9pbnRlci1ldmVudHM6bm9uZX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtbWVudS1pdGVte21hcmdpbi10b3A6MXB4fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1tZW51LWl0ZW0uY2RrLXByb2dyYW0tZm9jdXNlZCwuY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtbWVudS1pdGVtLmNkay1rZXlib2FyZC1mb2N1c2VkLC5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1tZW51LWl0ZW0taGlnaGxpZ2h0ZWR7b3V0bGluZTpkb3R0ZWQgMXB4fS5tYXQtbWVudS1pdGVtLXN1Ym1lbnUtdHJpZ2dlcntwYWRkaW5nLXJpZ2h0OjMycHh9W2Rpcj1ydGxdIC5tYXQtbWVudS1pdGVtLXN1Ym1lbnUtdHJpZ2dlcntwYWRkaW5nLXJpZ2h0OjE2cHg7cGFkZGluZy1sZWZ0OjMycHh9Lm1hdC1tZW51LXN1Ym1lbnUtaWNvbntwb3NpdGlvbjphYnNvbHV0ZTt0b3A6NTAlO3JpZ2h0OjE2cHg7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSk7d2lkdGg6NXB4O2hlaWdodDoxMHB4O2ZpbGw6Y3VycmVudENvbG9yfVtkaXI9cnRsXSAubWF0LW1lbnUtc3VibWVudS1pY29ue3JpZ2h0OmF1dG87bGVmdDoxNnB4O3RyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpIHNjYWxlWCgtMSl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LW1lbnUtc3VibWVudS1pY29ue2ZpbGw6Q2FudmFzVGV4dH1idXR0b24ubWF0LW1lbnUtaXRlbXt3aWR0aDoxMDAlfS5tYXQtbWVudS1pdGVtIC5tYXQtbWVudS1yaXBwbGV7dG9wOjA7bGVmdDowO3JpZ2h0OjA7Ym90dG9tOjA7cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6bm9uZX1cbiJdLGVuY2Fwc3VsYXRpb246MixkYXRhOnthbmltYXRpb246W0FxLnRyYW5zZm9ybU1lbnUsQXEuZmFkZUluSXRlbXNdfSxjaGFuZ2VEZXRlY3Rpb246MH0pLGpxLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6S2h9LHt0eXBlOm1DfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbRnFdfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGpxLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Im1hdC1tZW51Iix0ZW1wbGF0ZTonPG5nLXRlbXBsYXRlPlxuICA8ZGl2XG4gICAgY2xhc3M9Im1hdC1tZW51LXBhbmVsIlxuICAgIFtpZF09InBhbmVsSWQiXG4gICAgW25nQ2xhc3NdPSJfY2xhc3NMaXN0IlxuICAgIChrZXlkb3duKT0iX2hhbmRsZUtleWRvd24oJGV2ZW50KSJcbiAgICAoY2xpY2spPSJjbG9zZWQuZW1pdChcJ2NsaWNrXCcpIlxuICAgIFtAdHJhbnNmb3JtTWVudV09Il9wYW5lbEFuaW1hdGlvblN0YXRlIlxuICAgIChAdHJhbnNmb3JtTWVudS5zdGFydCk9Il9vbkFuaW1hdGlvblN0YXJ0KCRldmVudCkiXG4gICAgKEB0cmFuc2Zvcm1NZW51LmRvbmUpPSJfb25BbmltYXRpb25Eb25lKCRldmVudCkiXG4gICAgdGFiaW5kZXg9Ii0xIlxuICAgIHJvbGU9Im1lbnUiXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09ImFyaWFMYWJlbCB8fCBudWxsIlxuICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09ImFyaWFMYWJlbGxlZGJ5IHx8IG51bGwiXG4gICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09ImFyaWFEZXNjcmliZWRieSB8fCBudWxsIj5cbiAgICA8ZGl2IGNsYXNzPSJtYXQtbWVudS1jb250ZW50Ij5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuJyxjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNoLGVuY2Fwc3VsYXRpb246V24uTm9uZSxleHBvcnRBczoibWF0TWVudSIsaG9zdDp7IlthdHRyLmFyaWEtbGFiZWxdIjoibnVsbCIsIlthdHRyLmFyaWEtbGFiZWxsZWRieV0iOiJudWxsIiwiW2F0dHIuYXJpYS1kZXNjcmliZWRieV0iOiJudWxsIn0sYW5pbWF0aW9uczpbQXEudHJhbnNmb3JtTWVudSxBcS5mYWRlSW5JdGVtc10scHJvdmlkZXJzOlt7cHJvdmlkZTp6cSx1c2VFeGlzdGluZzpqcX1dLHN0eWxlczpbIm1hdC1tZW51e2Rpc3BsYXk6bm9uZX0ubWF0LW1lbnUtcGFuZWx7bWluLXdpZHRoOjExMnB4O21heC13aWR0aDoyODBweDtvdmVyZmxvdzphdXRvOy13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOnRvdWNoO21heC1oZWlnaHQ6Y2FsYygxMDB2aCAtIDQ4cHgpO2JvcmRlci1yYWRpdXM6NHB4O291dGxpbmU6MDttaW4taGVpZ2h0OjY0cHh9Lm1hdC1tZW51LXBhbmVsLm5nLWFuaW1hdGluZ3twb2ludGVyLWV2ZW50czpub25lfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1tZW51LXBhbmVse291dGxpbmU6c29saWQgMXB4fS5tYXQtbWVudS1jb250ZW50Om5vdCg6ZW1wdHkpe3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1tZW51LWl0ZW17LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO2N1cnNvcjpwb2ludGVyO291dGxpbmU6bm9uZTtib3JkZXI6bm9uZTstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7bGluZS1oZWlnaHQ6NDhweDtoZWlnaHQ6NDhweDtwYWRkaW5nOjAgMTZweDt0ZXh0LWFsaWduOmxlZnQ7dGV4dC1kZWNvcmF0aW9uOm5vbmU7bWF4LXdpZHRoOjEwMCU7cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZW51LWl0ZW06Oi1tb3otZm9jdXMtaW5uZXJ7Ym9yZGVyOjB9Lm1hdC1tZW51LWl0ZW1bZGlzYWJsZWRde2N1cnNvcjpkZWZhdWx0fVtkaXI9cnRsXSAubWF0LW1lbnUtaXRlbXt0ZXh0LWFsaWduOnJpZ2h0fS5tYXQtbWVudS1pdGVtIC5tYXQtaWNvbnttYXJnaW4tcmlnaHQ6MTZweDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9Lm1hdC1tZW51LWl0ZW0gLm1hdC1pY29uIHN2Z3t2ZXJ0aWNhbC1hbGlnbjp0b3B9W2Rpcj1ydGxdIC5tYXQtbWVudS1pdGVtIC5tYXQtaWNvbnttYXJnaW4tbGVmdDoxNnB4O21hcmdpbi1yaWdodDowfS5tYXQtbWVudS1pdGVtW2Rpc2FibGVkXXtwb2ludGVyLWV2ZW50czpub25lfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1tZW51LWl0ZW17bWFyZ2luLXRvcDoxcHh9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LW1lbnUtaXRlbS5jZGstcHJvZ3JhbS1mb2N1c2VkLC5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1tZW51LWl0ZW0uY2RrLWtleWJvYXJkLWZvY3VzZWQsLmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LW1lbnUtaXRlbS1oaWdobGlnaHRlZHtvdXRsaW5lOmRvdHRlZCAxcHh9Lm1hdC1tZW51LWl0ZW0tc3VibWVudS10cmlnZ2Vye3BhZGRpbmctcmlnaHQ6MzJweH1bZGlyPXJ0bF0gLm1hdC1tZW51LWl0ZW0tc3VibWVudS10cmlnZ2Vye3BhZGRpbmctcmlnaHQ6MTZweDtwYWRkaW5nLWxlZnQ6MzJweH0ubWF0LW1lbnUtc3VibWVudS1pY29ue3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1MCU7cmlnaHQ6MTZweDt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKTt3aWR0aDo1cHg7aGVpZ2h0OjEwcHg7ZmlsbDpjdXJyZW50Q29sb3J9W2Rpcj1ydGxdIC5tYXQtbWVudS1zdWJtZW51LWljb257cmlnaHQ6YXV0bztsZWZ0OjE2cHg7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSkgc2NhbGVYKC0xKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtbWVudS1zdWJtZW51LWljb257ZmlsbDpDYW52YXNUZXh0fWJ1dHRvbi5tYXQtbWVudS1pdGVte3dpZHRoOjEwMCV9Lm1hdC1tZW51LWl0ZW0gLm1hdC1tZW51LXJpcHBsZXt0b3A6MDtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MDtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czpub25lfVxuIl19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpLaH0se3R5cGU6bUN9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltGcV19XX1dfSksbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCBVcT1uZXcgZXIoIm1hdC1tZW51LXNjcm9sbC1zdHJhdGVneSIpO2NvbnN0IFdxPXtwcm92aWRlOlVxLGRlcHM6W0tCXSx1c2VGYWN0b3J5OmZ1bmN0aW9uIEdxKHQpe3JldHVybigpPT50LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpfX0sWXE9Ykgoe3Bhc3NpdmU6ITB9KTtjbGFzcyBxcXtjb25zdHJ1Y3Rvcih0LGUsbixvLGksYSxyLHMpe3RoaXMuX292ZXJsYXk9dCx0aGlzLl9lbGVtZW50PWUsdGhpcy5fdmlld0NvbnRhaW5lclJlZj1uLHRoaXMuX21lbnVJdGVtSW5zdGFuY2U9YSx0aGlzLl9kaXI9cix0aGlzLl9mb2N1c01vbml0b3I9cyx0aGlzLl9vdmVybGF5UmVmPW51bGwsdGhpcy5fbWVudU9wZW49ITEsdGhpcy5fY2xvc2luZ0FjdGlvbnNTdWJzY3JpcHRpb249dS5FTVBUWSx0aGlzLl9ob3ZlclN1YnNjcmlwdGlvbj11LkVNUFRZLHRoaXMuX21lbnVDbG9zZVN1YnNjcmlwdGlvbj11LkVNUFRZLHRoaXMuX2hhbmRsZVRvdWNoU3RhcnQ9dD0+e2VGKHQpfHwodGhpcy5fb3BlbmVkQnk9InRvdWNoIil9LHRoaXMuX29wZW5lZEJ5PXZvaWQgMCx0aGlzLnJlc3RvcmVGb2N1cz0hMCx0aGlzLm1lbnVPcGVuZWQ9bmV3IFN5LHRoaXMub25NZW51T3Blbj10aGlzLm1lbnVPcGVuZWQsdGhpcy5tZW51Q2xvc2VkPW5ldyBTeSx0aGlzLm9uTWVudUNsb3NlPXRoaXMubWVudUNsb3NlZCx0aGlzLl9zY3JvbGxTdHJhdGVneT1vLHRoaXMuX3BhcmVudE1hdGVyaWFsTWVudT1pIGluc3RhbmNlb2YgVnE/aTp2b2lkIDAsZS5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoc3RhcnQiLHRoaXMuX2hhbmRsZVRvdWNoU3RhcnQsWXEpLGEmJihhLl90cmlnZ2Vyc1N1Ym1lbnU9dGhpcy50cmlnZ2Vyc1N1Ym1lbnUoKSl9Z2V0IF9kZXByZWNhdGVkTWF0TWVudVRyaWdnZXJGb3IoKXtyZXR1cm4gdGhpcy5tZW51fXNldCBfZGVwcmVjYXRlZE1hdE1lbnVUcmlnZ2VyRm9yKHQpe3RoaXMubWVudT10fWdldCBtZW51KCl7cmV0dXJuIHRoaXMuX21lbnV9c2V0IG1lbnUodCl7dCE9PXRoaXMuX21lbnUmJih0aGlzLl9tZW51PXQsdGhpcy5fbWVudUNsb3NlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksdCYmKHQhPT10aGlzLl9wYXJlbnRNYXRlcmlhbE1lbnV8fCJ1bmRlZmluZWQiIT10eXBlb2YgbmdEZXZNb2RlJiYhbmdEZXZNb2RlfHwoZnVuY3Rpb24gZSgpe3Rocm93IEVycm9yKCJtYXRNZW51VHJpZ2dlckZvcjogbWVudSBjYW5ub3QgY29udGFpbiBpdHMgb3duIHRyaWdnZXIuIEFzc2lnbiBhIG1lbnUgdGhhdCBpcyBub3QgYSBwYXJlbnQgb2YgdGhlIHRyaWdnZXIgb3IgbW92ZSB0aGUgdHJpZ2dlciBvdXRzaWRlIG9mIHRoZSBtZW51LiIpfSkoKSx0aGlzLl9tZW51Q2xvc2VTdWJzY3JpcHRpb249dC5jbG9zZS5zdWJzY3JpYmUoKHQ9Pnt0aGlzLl9kZXN0cm95TWVudSh0KSwiY2xpY2siIT09dCYmInRhYiIhPT10fHwhdGhpcy5fcGFyZW50TWF0ZXJpYWxNZW51fHx0aGlzLl9wYXJlbnRNYXRlcmlhbE1lbnUuY2xvc2VkLmVtaXQodCl9KSkpKX1uZ0FmdGVyQ29udGVudEluaXQoKXt0aGlzLl9jaGVja01lbnUoKSx0aGlzLl9oYW5kbGVIb3ZlcigpfW5nT25EZXN0cm95KCl7dGhpcy5fb3ZlcmxheVJlZiYmKHRoaXMuX292ZXJsYXlSZWYuZGlzcG9zZSgpLHRoaXMuX292ZXJsYXlSZWY9bnVsbCksdGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRvdWNoc3RhcnQiLHRoaXMuX2hhbmRsZVRvdWNoU3RhcnQsWXEpLHRoaXMuX21lbnVDbG9zZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHRoaXMuX2Nsb3NpbmdBY3Rpb25zU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksdGhpcy5faG92ZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKX1nZXQgbWVudU9wZW4oKXtyZXR1cm4gdGhpcy5fbWVudU9wZW59Z2V0IGRpcigpe3JldHVybiB0aGlzLl9kaXImJiJydGwiPT09dGhpcy5fZGlyLnZhbHVlPyJydGwiOiJsdHIifXRyaWdnZXJzU3VibWVudSgpe3JldHVybiEoIXRoaXMuX21lbnVJdGVtSW5zdGFuY2V8fCF0aGlzLl9wYXJlbnRNYXRlcmlhbE1lbnUpfXRvZ2dsZU1lbnUoKXtyZXR1cm4gdGhpcy5fbWVudU9wZW4/dGhpcy5jbG9zZU1lbnUoKTp0aGlzLm9wZW5NZW51KCl9b3Blbk1lbnUoKXtpZih0aGlzLl9tZW51T3BlbilyZXR1cm47dGhpcy5fY2hlY2tNZW51KCk7Y29uc3QgdD10aGlzLl9jcmVhdGVPdmVybGF5KCksZT10LmdldENvbmZpZygpO3RoaXMuX3NldFBvc2l0aW9uKGUucG9zaXRpb25TdHJhdGVneSksZS5oYXNCYWNrZHJvcD1udWxsPT10aGlzLm1lbnUuaGFzQmFja2Ryb3A/IXRoaXMudHJpZ2dlcnNTdWJtZW51KCk6dGhpcy5tZW51Lmhhc0JhY2tkcm9wLHQuYXR0YWNoKHRoaXMuX2dldFBvcnRhbCgpKSx0aGlzLm1lbnUubGF6eUNvbnRlbnQmJnRoaXMubWVudS5sYXp5Q29udGVudC5hdHRhY2godGhpcy5tZW51RGF0YSksdGhpcy5fY2xvc2luZ0FjdGlvbnNTdWJzY3JpcHRpb249dGhpcy5fbWVudUNsb3NpbmdBY3Rpb25zKCkuc3Vic2NyaWJlKCgoKT0+dGhpcy5jbG9zZU1lbnUoKSkpLHRoaXMuX2luaXRNZW51KCksdGhpcy5tZW51IGluc3RhbmNlb2YgVnEmJnRoaXMubWVudS5fc3RhcnRBbmltYXRpb24oKX1jbG9zZU1lbnUoKXt0aGlzLm1lbnUuY2xvc2UuZW1pdCgpfWZvY3VzKHQsZSl7dGhpcy5fZm9jdXNNb25pdG9yJiZ0P3RoaXMuX2ZvY3VzTW9uaXRvci5mb2N1c1ZpYSh0aGlzLl9lbGVtZW50LHQsZSk6dGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKGUpfXVwZGF0ZVBvc2l0aW9uKCl7dmFyIHQ7bnVsbD09PSh0PXRoaXMuX292ZXJsYXlSZWYpfHx2b2lkIDA9PT10fHx0LnVwZGF0ZVBvc2l0aW9uKCl9X2Rlc3Ryb3lNZW51KHQpe2lmKCF0aGlzLl9vdmVybGF5UmVmfHwhdGhpcy5tZW51T3BlbilyZXR1cm47Y29uc3QgZT10aGlzLm1lbnU7dGhpcy5fY2xvc2luZ0FjdGlvbnNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLl9vdmVybGF5UmVmLmRldGFjaCgpLCF0aGlzLnJlc3RvcmVGb2N1c3x8ImtleWRvd24iIT09dCYmdGhpcy5fb3BlbmVkQnkmJnRoaXMudHJpZ2dlcnNTdWJtZW51KCl8fHRoaXMuZm9jdXModGhpcy5fb3BlbmVkQnkpLHRoaXMuX29wZW5lZEJ5PXZvaWQgMCxlIGluc3RhbmNlb2YgVnE/KGUuX3Jlc2V0QW5pbWF0aW9uKCksZS5sYXp5Q29udGVudD9lLl9hbmltYXRpb25Eb25lLnBpcGUodWUoKHQ9PiJ2b2lkIj09PXQudG9TdGF0ZSkpLHZlKDEpLGplKGUubGF6eUNvbnRlbnQuX2F0dGFjaGVkKSkuc3Vic2NyaWJlKHtuZXh0OigpPT5lLmxhenlDb250ZW50LmRldGFjaCgpLGNvbXBsZXRlOigpPT50aGlzLl9zZXRJc01lbnVPcGVuKCExKX0pOnRoaXMuX3NldElzTWVudU9wZW4oITEpKToodGhpcy5fc2V0SXNNZW51T3BlbighMSksZS5sYXp5Q29udGVudCYmZS5sYXp5Q29udGVudC5kZXRhY2goKSl9X2luaXRNZW51KCl7dGhpcy5tZW51LnBhcmVudE1lbnU9dGhpcy50cmlnZ2Vyc1N1Ym1lbnUoKT90aGlzLl9wYXJlbnRNYXRlcmlhbE1lbnU6dm9pZCAwLHRoaXMubWVudS5kaXJlY3Rpb249dGhpcy5kaXIsdGhpcy5fc2V0TWVudUVsZXZhdGlvbigpLHRoaXMubWVudS5mb2N1c0ZpcnN0SXRlbSh0aGlzLl9vcGVuZWRCeXx8InByb2dyYW0iKSx0aGlzLl9zZXRJc01lbnVPcGVuKCEwKX1fc2V0TWVudUVsZXZhdGlvbigpe2lmKHRoaXMubWVudS5zZXRFbGV2YXRpb24pe2xldCB0PTAsZT10aGlzLm1lbnUucGFyZW50TWVudTtmb3IoO2U7KXQrKyxlPWUucGFyZW50TWVudTt0aGlzLm1lbnUuc2V0RWxldmF0aW9uKHQpfX1fc2V0SXNNZW51T3Blbih0KXt0aGlzLl9tZW51T3Blbj10LHRoaXMuX21lbnVPcGVuP3RoaXMubWVudU9wZW5lZC5lbWl0KCk6dGhpcy5tZW51Q2xvc2VkLmVtaXQoKSx0aGlzLnRyaWdnZXJzU3VibWVudSgpJiZ0aGlzLl9tZW51SXRlbUluc3RhbmNlLl9zZXRIaWdobGlnaHRlZCh0KX1fY2hlY2tNZW51KCl7dGhpcy5tZW51fHwidW5kZWZpbmVkIiE9dHlwZW9mIG5nRGV2TW9kZSYmIW5nRGV2TW9kZXx8KAovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KZnVuY3Rpb24gdCgpe3Rocm93IEVycm9yKCdtYXRNZW51VHJpZ2dlckZvcjogbXVzdCBwYXNzIGluIGFuIG1hdC1tZW51IGluc3RhbmNlLlxuXG4gICAgRXhhbXBsZTpcbiAgICAgIDxtYXQtbWVudSAjbWVudT0ibWF0TWVudSI+PC9tYXQtbWVudT5cbiAgICAgIDxidXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT0ibWVudSI+PC9idXR0b24+Jyl9KSgpfV9jcmVhdGVPdmVybGF5KCl7aWYoIXRoaXMuX292ZXJsYXlSZWYpe2NvbnN0IHQ9dGhpcy5fZ2V0T3ZlcmxheUNvbmZpZygpO3RoaXMuX3N1YnNjcmliZVRvUG9zaXRpb25zKHQucG9zaXRpb25TdHJhdGVneSksdGhpcy5fb3ZlcmxheVJlZj10aGlzLl9vdmVybGF5LmNyZWF0ZSh0KSx0aGlzLl9vdmVybGF5UmVmLmtleWRvd25FdmVudHMoKS5zdWJzY3JpYmUoKX1yZXR1cm4gdGhpcy5fb3ZlcmxheVJlZn1fZ2V0T3ZlcmxheUNvbmZpZygpe3JldHVybiBuZXcgd0Ioe3Bvc2l0aW9uU3RyYXRlZ3k6dGhpcy5fb3ZlcmxheS5wb3NpdGlvbigpLmZsZXhpYmxlQ29ubmVjdGVkVG8odGhpcy5fZWxlbWVudCkud2l0aExvY2tlZFBvc2l0aW9uKCkud2l0aEdyb3dBZnRlck9wZW4oKS53aXRoVHJhbnNmb3JtT3JpZ2luT24oIi5tYXQtbWVudS1wYW5lbCwgLm1hdC1tZGMtbWVudS1wYW5lbCIpLGJhY2tkcm9wQ2xhc3M6dGhpcy5tZW51LmJhY2tkcm9wQ2xhc3N8fCJjZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcCIscGFuZWxDbGFzczp0aGlzLm1lbnUub3ZlcmxheVBhbmVsQ2xhc3Msc2Nyb2xsU3RyYXRlZ3k6dGhpcy5fc2Nyb2xsU3RyYXRlZ3koKSxkaXJlY3Rpb246dGhpcy5fZGlyfSl9X3N1YnNjcmliZVRvUG9zaXRpb25zKHQpe3RoaXMubWVudS5zZXRQb3NpdGlvbkNsYXNzZXMmJnQucG9zaXRpb25DaGFuZ2VzLnN1YnNjcmliZSgodD0+e3RoaXMubWVudS5zZXRQb3NpdGlvbkNsYXNzZXMoInN0YXJ0Ij09PXQuY29ubmVjdGlvblBhaXIub3ZlcmxheVg/ImFmdGVyIjoiYmVmb3JlIiwidG9wIj09PXQuY29ubmVjdGlvblBhaXIub3ZlcmxheVk/ImJlbG93IjoiYWJvdmUiKX0pKX1fc2V0UG9zaXRpb24odCl7bGV0W2Usbl09ImJlZm9yZSI9PT10aGlzLm1lbnUueFBvc2l0aW9uP1siZW5kIiwic3RhcnQiXTpbInN0YXJ0IiwiZW5kIl0sW28saV09ImFib3ZlIj09PXRoaXMubWVudS55UG9zaXRpb24/WyJib3R0b20iLCJ0b3AiXTpbInRvcCIsImJvdHRvbSJdLFthLHJdPVtvLGldLFtzLGxdPVtlLG5dLGM9MDt0aGlzLnRyaWdnZXJzU3VibWVudSgpPyhsPWU9ImJlZm9yZSI9PT10aGlzLm1lbnUueFBvc2l0aW9uPyJzdGFydCI6ImVuZCIsbj1zPSJlbmQiPT09ZT8ic3RhcnQiOiJlbmQiLGM9ImJvdHRvbSI9PT1vPzg6LTgpOnRoaXMubWVudS5vdmVybGFwVHJpZ2dlcnx8KGE9InRvcCI9PT1vPyJib3R0b20iOiJ0b3AiLHI9InRvcCI9PT1pPyJib3R0b20iOiJ0b3AiKSx0LndpdGhQb3NpdGlvbnMoW3tvcmlnaW5YOmUsb3JpZ2luWTphLG92ZXJsYXlYOnMsb3ZlcmxheVk6byxvZmZzZXRZOmN9LHtvcmlnaW5YOm4sb3JpZ2luWTphLG92ZXJsYXlYOmwsb3ZlcmxheVk6byxvZmZzZXRZOmN9LHtvcmlnaW5YOmUsb3JpZ2luWTpyLG92ZXJsYXlYOnMsb3ZlcmxheVk6aSxvZmZzZXRZOi1jfSx7b3JpZ2luWDpuLG9yaWdpblk6cixvdmVybGF5WDpsLG92ZXJsYXlZOmksb2Zmc2V0WTotY31dKX1fbWVudUNsb3NpbmdBY3Rpb25zKCl7Y29uc3QgdD10aGlzLl9vdmVybGF5UmVmLmJhY2tkcm9wQ2xpY2soKSxlPXRoaXMuX292ZXJsYXlSZWYuZGV0YWNobWVudHMoKTtyZXR1cm4gcGUodCx0aGlzLl9wYXJlbnRNYXRlcmlhbE1lbnU/dGhpcy5fcGFyZW50TWF0ZXJpYWxNZW51LmNsb3NlZDp6dCgpLHRoaXMuX3BhcmVudE1hdGVyaWFsTWVudT90aGlzLl9wYXJlbnRNYXRlcmlhbE1lbnUuX2hvdmVyZWQoKS5waXBlKHVlKCh0PT50IT09dGhpcy5fbWVudUl0ZW1JbnN0YW5jZSkpLHVlKCgoKT0+dGhpcy5fbWVudU9wZW4pKSk6enQoKSxlKX1faGFuZGxlTW91c2Vkb3duKHQpe3RGKHQpfHwodGhpcy5fb3BlbmVkQnk9MD09PXQuYnV0dG9uPyJtb3VzZSI6dm9pZCAwLHRoaXMudHJpZ2dlcnNTdWJtZW51KCkmJnQucHJldmVudERlZmF1bHQoKSl9X2hhbmRsZUtleWRvd24odCl7Y29uc3QgZT10LmtleUNvZGU7ZSE9PVhJJiZlIT09Skl8fCh0aGlzLl9vcGVuZWRCeT0ia2V5Ym9hcmQiKSx0aGlzLnRyaWdnZXJzU3VibWVudSgpJiYoMzk9PT1lJiYibHRyIj09PXRoaXMuZGlyfHwzNz09PWUmJiJydGwiPT09dGhpcy5kaXIpJiYodGhpcy5fb3BlbmVkQnk9ImtleWJvYXJkIix0aGlzLm9wZW5NZW51KCkpfV9oYW5kbGVDbGljayh0KXt0aGlzLnRyaWdnZXJzU3VibWVudSgpPyh0LnN0b3BQcm9wYWdhdGlvbigpLHRoaXMub3Blbk1lbnUoKSk6dGhpcy50b2dnbGVNZW51KCl9X2hhbmRsZUhvdmVyKCl7dGhpcy50cmlnZ2Vyc1N1Ym1lbnUoKSYmdGhpcy5fcGFyZW50TWF0ZXJpYWxNZW51JiYodGhpcy5faG92ZXJTdWJzY3JpcHRpb249dGhpcy5fcGFyZW50TWF0ZXJpYWxNZW51Ll9ob3ZlcmVkKCkucGlwZSh1ZSgodD0+dD09PXRoaXMuX21lbnVJdGVtSW5zdGFuY2UmJiF0LmRpc2FibGVkKSksUGUoMCxvdCkpLnN1YnNjcmliZSgoKCk9Pnt0aGlzLl9vcGVuZWRCeT0ibW91c2UiLHRoaXMubWVudSBpbnN0YW5jZW9mIFZxJiZ0aGlzLm1lbnUuX2lzQW5pbWF0aW5nP3RoaXMubWVudS5fYW5pbWF0aW9uRG9uZS5waXBlKHZlKDEpLFBlKDAsb3QpLGplKHRoaXMuX3BhcmVudE1hdGVyaWFsTWVudS5faG92ZXJlZCgpKSkuc3Vic2NyaWJlKCgoKT0+dGhpcy5vcGVuTWVudSgpKSk6dGhpcy5vcGVuTWVudSgpfSkpKX1fZ2V0UG9ydGFsKCl7cmV0dXJuIHRoaXMuX3BvcnRhbCYmdGhpcy5fcG9ydGFsLnRlbXBsYXRlUmVmPT09dGhpcy5tZW51LnRlbXBsYXRlUmVmfHwodGhpcy5fcG9ydGFsPW5ldyBsQih0aGlzLm1lbnUudGVtcGxhdGVSZWYsdGhpcy5fdmlld0NvbnRhaW5lclJlZikpLHRoaXMuX3BvcnRhbH19cXEuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHFxKShnZihLQiksZ2YoS2gpLGdmKEZiKSxnZihVcSksZ2YoenEsOCksZ2YoSHEsMTApLGdmKHZGLDgpLGdmKGZGKSl9LHFxLsm1ZGlyPWhvKHt0eXBlOnFxLHNlbGVjdG9yczpbWyIiLCJtYXQtbWVudS10cmlnZ2VyLWZvciIsIiJdLFsiIiwibWF0TWVudVRyaWdnZXJGb3IiLCIiXV0saG9zdEF0dHJzOlsiYXJpYS1oYXNwb3B1cCIsInRydWUiLDEsIm1hdC1tZW51LXRyaWdnZXIiXSxob3N0VmFyczoyLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MSZlJiZSZigibW91c2Vkb3duIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5faGFuZGxlTW91c2Vkb3duKGUpfSkpKCJrZXlkb3duIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5faGFuZGxlS2V5ZG93bihlKX0pKSgiY2xpY2siLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLl9oYW5kbGVDbGljayhlKX0pKSwyJmUmJnltKCJhcmlhLWV4cGFuZGVkIixuLm1lbnVPcGVufHxudWxsKSgiYXJpYS1jb250cm9scyIsbi5tZW51T3Blbj9uLm1lbnUucGFuZWxJZDpudWxsKX0saW5wdXRzOntyZXN0b3JlRm9jdXM6WyJtYXRNZW51VHJpZ2dlclJlc3RvcmVGb2N1cyIsInJlc3RvcmVGb2N1cyJdLF9kZXByZWNhdGVkTWF0TWVudVRyaWdnZXJGb3I6WyJtYXQtbWVudS10cmlnZ2VyLWZvciIsIl9kZXByZWNhdGVkTWF0TWVudVRyaWdnZXJGb3IiXSxtZW51OlsibWF0TWVudVRyaWdnZXJGb3IiLCJtZW51Il0sbWVudURhdGE6WyJtYXRNZW51VHJpZ2dlckRhdGEiLCJtZW51RGF0YSJdfSxvdXRwdXRzOnttZW51T3BlbmVkOiJtZW51T3BlbmVkIixvbk1lbnVPcGVuOiJvbk1lbnVPcGVuIixtZW51Q2xvc2VkOiJtZW51Q2xvc2VkIixvbk1lbnVDbG9zZToib25NZW51Q2xvc2UifSxleHBvcnRBczpbIm1hdE1lbnVUcmlnZ2VyIl19KSxxcS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOktCfSx7dHlwZTpLaH0se3R5cGU6RmJ9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltVcV19XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3pxXX0se3R5cGU6QnJ9XX0se3R5cGU6SHEsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOlZyfV19LHt0eXBlOnZGLGRlY29yYXRvcnM6W3t0eXBlOkJyfV19LHt0eXBlOmZGfV0scXEucHJvcERlY29yYXRvcnM9e19kZXByZWNhdGVkTWF0TWVudVRyaWdnZXJGb3I6W3t0eXBlOlJfLGFyZ3M6WyJtYXQtbWVudS10cmlnZ2VyLWZvciJdfV0sbWVudTpbe3R5cGU6Ul8sYXJnczpbIm1hdE1lbnVUcmlnZ2VyRm9yIl19XSxtZW51RGF0YTpbe3R5cGU6Ul8sYXJnczpbIm1hdE1lbnVUcmlnZ2VyRGF0YSJdfV0scmVzdG9yZUZvY3VzOlt7dHlwZTpSXyxhcmdzOlsibWF0TWVudVRyaWdnZXJSZXN0b3JlRm9jdXMiXX1dLG1lbnVPcGVuZWQ6W3t0eXBlOkVffV0sb25NZW51T3Blbjpbe3R5cGU6RV99XSxtZW51Q2xvc2VkOlt7dHlwZTpFX31dLG9uTWVudUNsb3NlOlt7dHlwZTpFX31dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHFxLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6IlttYXQtbWVudS10cmlnZ2VyLWZvcl0sIFttYXRNZW51VHJpZ2dlckZvcl0iLGhvc3Q6e2NsYXNzOiJtYXQtbWVudS10cmlnZ2VyIiwiYXJpYS1oYXNwb3B1cCI6InRydWUiLCJbYXR0ci5hcmlhLWV4cGFuZGVkXSI6Im1lbnVPcGVuIHx8IG51bGwiLCJbYXR0ci5hcmlhLWNvbnRyb2xzXSI6Im1lbnVPcGVuID8gbWVudS5wYW5lbElkIDogbnVsbCIsIihtb3VzZWRvd24pIjoiX2hhbmRsZU1vdXNlZG93bigkZXZlbnQpIiwiKGtleWRvd24pIjoiX2hhbmRsZUtleWRvd24oJGV2ZW50KSIsIihjbGljaykiOiJfaGFuZGxlQ2xpY2soJGV2ZW50KSJ9LGV4cG9ydEFzOiJtYXRNZW51VHJpZ2dlciJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpLQn0se3R5cGU6S2h9LHt0eXBlOkZifSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbVXFdfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOlt6cV19LHt0eXBlOkJyfV19LHt0eXBlOkhxLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpWcn1dfSx7dHlwZTp2RixkZWNvcmF0b3JzOlt7dHlwZTpCcn1dfSx7dHlwZTpmRn1dfSkse3Jlc3RvcmVGb2N1czpbe3R5cGU6Ul8sYXJnczpbIm1hdE1lbnVUcmlnZ2VyUmVzdG9yZUZvY3VzIl19XSxtZW51T3BlbmVkOlt7dHlwZTpFX31dLG9uTWVudU9wZW46W3t0eXBlOkVffV0sbWVudUNsb3NlZDpbe3R5cGU6RV99XSxvbk1lbnVDbG9zZTpbe3R5cGU6RV99XSxfZGVwcmVjYXRlZE1hdE1lbnVUcmlnZ2VyRm9yOlt7dHlwZTpSXyxhcmdzOlsibWF0LW1lbnUtdHJpZ2dlci1mb3IiXX1dLG1lbnU6W3t0eXBlOlJfLGFyZ3M6WyJtYXRNZW51VHJpZ2dlckZvciJdfV0sbWVudURhdGE6W3t0eXBlOlJfLGFyZ3M6WyJtYXRNZW51VHJpZ2dlckRhdGEiXX1dfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBacXt9WnEuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFpxKX0sWnEuybVtb2Q9Zm8oe3R5cGU6WnF9KSxacS7JtWluaj1Ebih7cHJvdmlkZXJzOltXcV0saW1wb3J0czpbTkZdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihacSxbe3R5cGU6TF8sYXJnczpbe2V4cG9ydHM6W3FxLE5xLE5GXSxkZWNsYXJhdGlvbnM6W3FxLE5xXSxwcm92aWRlcnM6W1dxXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKFpxLHtkZWNsYXJhdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm5bcXEsTnFdfSxleHBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW3FxLE5xLE5GXX19KTtjbGFzcyBYcXt9ZnVuY3Rpb24gS3EodCxlKXsxJnQmJnZmKDAsIm1hdC1pY29uIiw4KX1mdW5jdGlvbiBKcSh0LGUpezEmdCYmdmYoMCwibWF0LWljb24iLDkpfWZ1bmN0aW9uIFFxKHQsZSl7MSZ0JiZ2ZigwLCJtYXQtaWNvbiIsMTApfXZhciAkcTtYcS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8WHEpfSxYcS7JtW1vZD1mbyh7dHlwZTpYcX0pLFhxLsm1aW5qPURuKHtwcm92aWRlcnM6W1dxXSxpbXBvcnRzOltbcngsTkYsZkwsb1YsWnFdLG9CLE5GLFpxXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoWHEsW3t0eXBlOkxfLGFyZ3M6W3tpbXBvcnRzOltyeCxORixmTCxvVixacV0sZXhwb3J0czpbb0IsTkYsanEsSHEsWnFdLGRlY2xhcmF0aW9uczpbanEsSHFdLHByb3ZpZGVyczpbV3FdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8oWHEse2RlY2xhcmF0aW9uczpmdW5jdGlvbigpe3JldHVybltqcSxIcV19LGltcG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bcngsTkYsZkwsb1YsWnFdfSxleHBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW29CLE5GLGpxLEhxLFpxXX19KSwoZnVuY3Rpb24odCl7dFt0LkRFRkFVTFQ9MF09IkRFRkFVTFQiLHRbdC5EQVJLX01PREVfT049MV09IkRBUktfTU9ERV9PTiIsdFt0LkRBUktfTU9ERV9PRkY9Ml09IkRBUktfTU9ERV9PRkYifSkoJHF8fCgkcT17fSkpO2NsYXNzIHRae2NvbnN0cnVjdG9yKCl7dGhpcy5EYXJrTW9kZU92ZXJyaWRlPSRxLHRoaXMub25PdmVycmlkZUNoYW5nZWQ9bmV3IFN5fWdldEJ1dHRvblRpdGxlKCl7bGV0IHQ7c3dpdGNoKHRoaXMuZGFya01vZGVPdmVycmlkZSl7Y2FzZSAkcS5ERUZBVUxUOnQ9IkJyb3dzZXIgZGVmYXVsdCI7YnJlYWs7Y2FzZSAkcS5EQVJLX01PREVfT046dD0iRGFyayBtb2RlIjticmVhaztjYXNlICRxLkRBUktfTU9ERV9PRkY6dD0iTGlnaHQgbW9kZSJ9cmV0dXJuYEN1cnJlbnQgbW9kZTogWyR7dH1dLiBTd2l0Y2ggYmV0d2VlbiBicm93c2VyIGRlZmF1bHQsIGxpZ2h0LCBvciBkYXJrIHRoZW1lLmB9fXRaLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx0Wil9LHRaLsm1Y21wPXNvKHt0eXBlOnRaLHNlbGVjdG9yczpbWyJhcHAtaGVhZGVyLWRhcmstbW9kZS10b2dnbGUtY29tcG9uZW50Il1dLGlucHV0czp7ZGFya01vZGVPdmVycmlkZToiZGFya01vZGVPdmVycmlkZSJ9LG91dHB1dHM6e29uT3ZlcnJpZGVDaGFuZ2VkOiJvbk92ZXJyaWRlQ2hhbmdlZCJ9LGRlY2xzOjE1LHZhcnM6Nixjb25zdHM6W1sibWF0LWljb24tYnV0dG9uIiwiIiwiYXJpYS1sYWJlbCIsIk1lbnUgZm9yIGNoYW5naW5nIGxpZ2h0IG9yIGRhcmsgdGhlbWUiLDMsIm1hdE1lbnVUcmlnZ2VyRm9yIiwibmdTd2l0Y2giLCJ0aXRsZSJdLFsic3ZnSWNvbiIsImJyaWdodG5lc3NfNl8yNHB4Iiw0LCJuZ1N3aXRjaENhc2UiXSxbInN2Z0ljb24iLCJsaWdodF9tb2RlXzI0cHgiLDQsIm5nU3dpdGNoQ2FzZSJdLFsic3ZnSWNvbiIsImRhcmtfbW9kZV8yNHB4Iiw0LCJuZ1N3aXRjaENhc2UiXSxbIm1lbnUiLCJtYXRNZW51Il0sWyJtYXQtbWVudS1pdGVtIiwiIiwidGl0bGUiLCJTZXQgdGhlIHRoZW1lIHRvIG1hdGNoIHRoZSBkZWZhdWx0IG1vZGUgaW4gdGhlIGJyb3dzZXIuIiwzLCJjbGljayJdLFsibWF0LW1lbnUtaXRlbSIsIiIsInRpdGxlIiwiRm9yY2UgbGlnaHQgVGVuc29yQm9hcmQgdGhlbWUuIiwzLCJjbGljayJdLFsibWF0LW1lbnUtaXRlbSIsIiIsInRpdGxlIiwiRm9yY2UgZGFyayBUZW5zb3JCb2FyZCB0aGVtZS4iLDMsImNsaWNrIl0sWyJzdmdJY29uIiwiYnJpZ2h0bmVzc182XzI0cHgiXSxbInN2Z0ljb24iLCJsaWdodF9tb2RlXzI0cHgiXSxbInN2Z0ljb24iLCJkYXJrX21vZGVfMjRweCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiYoQ2YoMCwiYnV0dG9uIiwwKSxIbSgxLEtxLDEsMCwibWF0LWljb24iLDEpLEhtKDIsSnEsMSwwLCJtYXQtaWNvbiIsMiksSG0oMyxRcSwxLDAsIm1hdC1pY29uIiwzKSxNZigpLENmKDQsIm1hdC1tZW51IixudWxsLDQpLENmKDYsImJ1dHRvbiIsNSksUmYoImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uT3ZlcnJpZGVDaGFuZ2VkLmVtaXQobi5EYXJrTW9kZU92ZXJyaWRlLkRFRkFVTFQpfSkpLENmKDcsImxhYmVsIiksUHUoOCwiQnJvd3NlciBkZWZhdWx0IiksTWYoKSxNZigpLENmKDksImJ1dHRvbiIsNiksUmYoImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uT3ZlcnJpZGVDaGFuZ2VkLmVtaXQobi5EYXJrTW9kZU92ZXJyaWRlLkRBUktfTU9ERV9PRkYpfSkpLENmKDEwLCJsYWJlbCIpLFB1KDExLCJMaWdodCIpLE1mKCksTWYoKSxDZigxMiwiYnV0dG9uIiw3KSxSZigiY2xpY2siLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25PdmVycmlkZUNoYW5nZWQuZW1pdChuLkRhcmtNb2RlT3ZlcnJpZGUuREFSS19NT0RFX09OKX0pKSxDZigxMywibGFiZWwiKSxQdSgxNCwiRGFyayIpLE1mKCksTWYoKSxNZigpKSwyJmUpe2JmKCJtYXRNZW51VHJpZ2dlckZvciIsRm0oNSkpKCJuZ1N3aXRjaCIsbi5kYXJrTW9kZU92ZXJyaWRlKSgidGl0bGUiLG4uZ2V0QnV0dG9uVGl0bGUoKSksRGMoMSksYmYoIm5nU3dpdGNoQ2FzZSIsbi5EYXJrTW9kZU92ZXJyaWRlLkRFRkFVTFQpLERjKDEpLGJmKCJuZ1N3aXRjaENhc2UiLG4uRGFya01vZGVPdmVycmlkZS5EQVJLX01PREVfT0ZGKSxEYygxKSxiZigibmdTd2l0Y2hDYXNlIixuLkRhcmtNb2RlT3ZlcnJpZGUuREFSS19NT0RFX09OKX19LGRpcmVjdGl2ZXM6W05MLHFxLER2LFJ2LGpxLEhxLE1xXSxlbmNhcHN1bGF0aW9uOjJ9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHRaLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6ImFwcC1oZWFkZXItZGFyay1tb2RlLXRvZ2dsZS1jb21wb25lbnQiLHRlbXBsYXRlOidcbiAgICA8YnV0dG9uXG4gICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgIFttYXRNZW51VHJpZ2dlckZvcl09Im1lbnUiXG4gICAgICBhcmlhLWxhYmVsPSJNZW51IGZvciBjaGFuZ2luZyBsaWdodCBvciBkYXJrIHRoZW1lIlxuICAgICAgW25nU3dpdGNoXT0iZGFya01vZGVPdmVycmlkZSJcbiAgICAgIFt0aXRsZV09ImdldEJ1dHRvblRpdGxlKCkiXG4gICAgPlxuICAgICAgPG1hdC1pY29uXG4gICAgICAgICpuZ1N3aXRjaENhc2U9IkRhcmtNb2RlT3ZlcnJpZGUuREVGQVVMVCJcbiAgICAgICAgc3ZnSWNvbj0iYnJpZ2h0bmVzc182XzI0cHgiXG4gICAgICA+PC9tYXQtaWNvbj5cbiAgICAgIDxtYXQtaWNvblxuICAgICAgICAqbmdTd2l0Y2hDYXNlPSJEYXJrTW9kZU92ZXJyaWRlLkRBUktfTU9ERV9PRkYiXG4gICAgICAgIHN2Z0ljb249ImxpZ2h0X21vZGVfMjRweCJcbiAgICAgID48L21hdC1pY29uPlxuICAgICAgPG1hdC1pY29uXG4gICAgICAgICpuZ1N3aXRjaENhc2U9IkRhcmtNb2RlT3ZlcnJpZGUuREFSS19NT0RFX09OIlxuICAgICAgICBzdmdJY29uPSJkYXJrX21vZGVfMjRweCJcbiAgICAgID48L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuICAgIDxtYXQtbWVudSAjbWVudT0ibWF0TWVudSI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgdGl0bGU9IlNldCB0aGUgdGhlbWUgdG8gbWF0Y2ggdGhlIGRlZmF1bHQgbW9kZSBpbiB0aGUgYnJvd3Nlci4iXG4gICAgICAgIChjbGljayk9Im9uT3ZlcnJpZGVDaGFuZ2VkLmVtaXQoRGFya01vZGVPdmVycmlkZS5ERUZBVUxUKSJcbiAgICAgID5cbiAgICAgICAgPGxhYmVsPkJyb3dzZXIgZGVmYXVsdDwvbGFiZWw+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICB0aXRsZT0iRm9yY2UgbGlnaHQgVGVuc29yQm9hcmQgdGhlbWUuIlxuICAgICAgICAoY2xpY2spPSJvbk92ZXJyaWRlQ2hhbmdlZC5lbWl0KERhcmtNb2RlT3ZlcnJpZGUuREFSS19NT0RFX09GRikiXG4gICAgICA+XG4gICAgICAgIDxsYWJlbD5MaWdodDwvbGFiZWw+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICB0aXRsZT0iRm9yY2UgZGFyayBUZW5zb3JCb2FyZCB0aGVtZS4iXG4gICAgICAgIChjbGljayk9Im9uT3ZlcnJpZGVDaGFuZ2VkLmVtaXQoRGFya01vZGVPdmVycmlkZS5EQVJLX01PREVfT04pIlxuICAgICAgPlxuICAgICAgICA8bGFiZWw+RGFyazwvbGFiZWw+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L21hdC1tZW51PlxuICAnfV19XSxudWxsLHtkYXJrTW9kZU92ZXJyaWRlOlt7dHlwZTpSX31dLG9uT3ZlcnJpZGVDaGFuZ2VkOlt7dHlwZTpFX31dfSk7Y2xhc3MgZVp7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMuZGFya01vZGVPdmVycmlkZSQ9dGhpcy5zdG9yZS5zZWxlY3QoTEQpLnBpcGUoVnQoKHQ9Pm51bGw9PT10PyRxLkRFRkFVTFQ6dD8kcS5EQVJLX01PREVfT046JHEuREFSS19NT0RFX09GRikpKX1jaGFuZ2VEYXJrTW9kZSh0KXtsZXQgZT1udWxsO3N3aXRjaCh0KXtjYXNlICRxLkRFRkFVTFQ6ZT1udWxsO2JyZWFrO2Nhc2UgJHEuREFSS19NT0RFX09GRjplPSExO2JyZWFrO2Nhc2UgJHEuREFSS19NT0RFX09OOmU9ITB9dGhpcy5zdG9yZS5kaXNwYXRjaChrTih7ZW5hYmxlRGFya01vZGU6ZX0pKX19ZVouybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGVaKShnZihpUykpfSxlWi7JtWNtcD1zbyh7dHlwZTplWixzZWxlY3RvcnM6W1siYXBwLWhlYWRlci1kYXJrLW1vZGUtdG9nZ2xlIl1dLGRlY2xzOjIsdmFyczozLGNvbnN0czpbWzMsImRhcmtNb2RlT3ZlcnJpZGUiLCJvbk92ZXJyaWRlQ2hhbmdlZCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoQ2YoMCwiYXBwLWhlYWRlci1kYXJrLW1vZGUtdG9nZ2xlLWNvbXBvbmVudCIsMCksUmYoIm9uT3ZlcnJpZGVDaGFuZ2VkIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5jaGFuZ2VEYXJrTW9kZShlKX0pKSxfeSgxLCJhc3luYyIpLE1mKCkpLDImZSYmYmYoImRhcmtNb2RlT3ZlcnJpZGUiLEN5KDEsMSxuLmRhcmtNb2RlT3ZlcnJpZGUkKSl9LGRpcmVjdGl2ZXM6W3RaXSxwaXBlczpbVnZdLGVuY2Fwc3VsYXRpb246Mn0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoZVosW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoiYXBwLWhlYWRlci1kYXJrLW1vZGUtdG9nZ2xlIix0ZW1wbGF0ZTonXG4gICAgPGFwcC1oZWFkZXItZGFyay1tb2RlLXRvZ2dsZS1jb21wb25lbnRcbiAgICAgIFtkYXJrTW9kZU92ZXJyaWRlXT0iZGFya01vZGVPdmVycmlkZSQgfCBhc3luYyJcbiAgICAgIChvbk92ZXJyaWRlQ2hhbmdlZCk9ImNoYW5nZURhcmtNb2RlKCRldmVudCkiXG4gICAgPlxuICAgIDwvYXBwLWhlYWRlci1kYXJrLW1vZGUtdG9nZ2xlLWNvbXBvbmVudD5cbiAgJ31dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmlTfV19KSxudWxsKTtjb25zdCBuWj1iUyhuVCxlVCwoKHQsZSk9PiEoIWV8fCF0W2VdKSYmdFtlXS5kaXNhYmxlX3JlbG9hZCkpO2NsYXNzIG9ae2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLnJlbG9hZERpc2FibGVkJD10aGlzLnN0b3JlLnNlbGVjdChuWiksdGhpcy5pc1JlbG9hZGluZyQ9dGhpcy5zdG9yZS5zZWxlY3QoJEEpLnBpcGUoX2UodGhpcy5yZWxvYWREaXNhYmxlZCQpLFZ0KCgoW3QsZV0pPT4hZSYmdD09PVVFLkxPQURJTkcpKSksdGhpcy5sYXN0TG9hZGVkVGltZUluTXMkPXRoaXMuc3RvcmUuc2VsZWN0KHRUKX10cmlnZ2VyUmVsb2FkKCl7dGhpcy5zdG9yZS5kaXNwYXRjaChKRSgpKX1nZXRSZWxvYWRUaXRsZSh0KXtyZXR1cm4gdD9gTGFzdCBVcGRhdGVkOiAke3R9YDoiTG9hZGluZy4uLiJ9fWZ1bmN0aW9uIGlaKHQpe3JldHVybiB0LnN0YXRlIT09VUUuTk9UX0xPQURFRCYmdC5zdGF0ZSE9PVVFLkxPQURJTkd9b1ouybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fG9aKShnZihpUykpfSxvWi7JtWNtcD1zbyh7dHlwZTpvWixzZWxlY3RvcnM6W1siYXBwLWhlYWRlci1yZWxvYWQiXV0sZGVjbHM6Nix2YXJzOjEzLGNvbnN0czpbWyJtYXQtaWNvbi1idXR0b24iLCIiLDEsInJlbG9hZC1idXR0b24iLDMsInRpdGxlIiwiZGlzYWJsZWQiLCJjbGljayJdLFsic3ZnSWNvbiIsInJlZnJlc2hfMjRweCIsMSwicmVmcmVzaC1pY29uIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihDZigwLCJidXR0b24iLDApLFJmKCJjbGljayIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi50cmlnZ2VyUmVsb2FkKCl9KSksX3koMSwiYXN5bmMiKSxfeSgyLCJkYXRlIiksX3koMywiYXN5bmMiKSxfeSg0LCJhc3luYyIpLHZmKDUsIm1hdC1pY29uIiwxKSxNZigpKSwyJmUmJihjdSgibG9hZGluZyIsQ3koMSw0LG4uaXNSZWxvYWRpbmckKSksYmYoInRpdGxlIixuLmdldFJlbG9hZFRpdGxlKE15KDIsNixDeSgzLDksbi5sYXN0TG9hZGVkVGltZUluTXMkKSwibWVkaXVtIikpKSgiZGlzYWJsZWQiLEN5KDQsMTEsbi5yZWxvYWREaXNhYmxlZCQpKSl9LGRpcmVjdGl2ZXM6W05MLE1xXSxwaXBlczpbVnYsWXZdLHN0eWxlczpbIi5yZWxvYWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLnJlZnJlc2gtaWNvbltfbmdjb250ZW50LSVDT01QJV0ge1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgIH1cblxuICAgICAgLnJlbG9hZC1idXR0b24ubG9hZGluZ1tfbmdjb250ZW50LSVDT01QJV0ge1xuICAgICAgICBhbmltYXRpb246IHJvdGF0ZSAycyBsaW5lYXIgaW5maW5pdGU7XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgcm90YXRlIHtcbiAgICAgICAgMCUge1xuICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xuICAgICAgICB9XG4gICAgICAgIDUwJSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTtcbiAgICAgICAgfVxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xuICAgICAgICB9XG4gICAgICB9Il19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKG9aLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6ImFwcC1oZWFkZXItcmVsb2FkIix0ZW1wbGF0ZTonXG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9InJlbG9hZC1idXR0b24iXG4gICAgICBbY2xhc3MubG9hZGluZ109ImlzUmVsb2FkaW5nJCB8IGFzeW5jIlxuICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAoY2xpY2spPSJ0cmlnZ2VyUmVsb2FkKCkiXG4gICAgICBbdGl0bGVdPSJnZXRSZWxvYWRUaXRsZShsYXN0TG9hZGVkVGltZUluTXMkIHwgYXN5bmMgfCBkYXRlOiBcJ21lZGl1bVwnKSJcbiAgICAgIFtkaXNhYmxlZF09InJlbG9hZERpc2FibGVkJCB8IGFzeW5jIlxuICAgID5cbiAgICAgIDxtYXQtaWNvbiBjbGFzcz0icmVmcmVzaC1pY29uIiBzdmdJY29uPSJyZWZyZXNoXzI0cHgiPjwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG4gICcsc3R5bGVzOlsiXG4gICAgICAucmVsb2FkLWJ1dHRvbixcbiAgICAgIC5yZWZyZXNoLWljb24ge1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgIH1cblxuICAgICAgLnJlbG9hZC1idXR0b24ubG9hZGluZyB7XG4gICAgICAgIGFuaW1hdGlvbjogcm90YXRlIDJzIGxpbmVhciBpbmZpbml0ZTtcbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyByb3RhdGUge1xuICAgICAgICAwJSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XG4gICAgICAgIH1cbiAgICAgICAgNTAlIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpO1xuICAgICAgICB9XG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAiXX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmlTfV19KSxudWxsKTtjb25zdCBhWj0zZTQsclo9VlMocEksQlMoc0ksKHQ9PmlaKHQpP09iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7c2V0dGluZ3M6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuc2V0dGluZ3MpLHtyZWxvYWRFbmFibGVkOiF0LnNldHRpbmdzLnJlbG9hZEVuYWJsZWR9KX0pOnQpKSxCUyhsSSwoKHQse3BlcmlvZEluTXM6ZX0pPT57aWYoIWlaKHQpKXJldHVybiB0O2NvbnN0IG49ZT49YVo/ZTp0LnNldHRpbmdzLnJlbG9hZFBlcmlvZEluTXM7cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7c2V0dGluZ3M6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuc2V0dGluZ3MpLHtyZWxvYWRQZXJpb2RJbk1zOm59KX0pfSkpLEJTKGNJLCgodCx7c2l6ZTplfSk9PntpZighaVoodCkpcmV0dXJuIHQ7Y29uc3Qgbj1lPjA/ZTp0LnNldHRpbmdzLnBhZ2VTaXplO3JldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3NldHRpbmdzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LnNldHRpbmdzKSx7cGFnZVNpemU6bn0pfSl9KSksQlMocVIsKCh0LHtwYXJ0aWFsU2V0dGluZ3M6ZX0pPT57Y29uc3Qgbj17fTtyZXR1cm4gTnVtYmVyLmlzRmluaXRlKGUucGFnZVNpemUpJiZlLnBhZ2VTaXplPjAmJihuLnBhZ2VTaXplPU51bWJlcihlLnBhZ2VTaXplKSksImJvb2xlYW4iPT10eXBlb2YgZS5hdXRvUmVsb2FkJiYobi5yZWxvYWRFbmFibGVkPWUuYXV0b1JlbG9hZCksTnVtYmVyLmlzRmluaXRlKGUuYXV0b1JlbG9hZFBlcmlvZEluTXMpJiZlLmF1dG9SZWxvYWRQZXJpb2RJbk1zPmFaJiYobi5yZWxvYWRQZXJpb2RJbk1zPU51bWJlcihlLmF1dG9SZWxvYWRQZXJpb2RJbk1zKSksT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtzZXR0aW5nczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5zZXR0aW5ncyksbil9KX0pKSk7ZnVuY3Rpb24gc1oodCxlKXtyZXR1cm4gcloodCxlKX1jb25zdCBsWj1bImlucHV0Il0sY1o9ZnVuY3Rpb24odCl7cmV0dXJue2VudGVyRHVyYXRpb246dH19LGRaPW5ldyBlcigibWF0LWNoZWNrYm94LWRlZmF1bHQtb3B0aW9ucyIse3Byb3ZpZGVkSW46InJvb3QiLGZhY3Rvcnk6cFp9KTtmdW5jdGlvbiBwWigpe3JldHVybntjb2xvcjoiYWNjZW50IixjbGlja0FjdGlvbjoiY2hlY2staW5kZXRlcm1pbmF0ZSJ9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9sZXQgbVo9MDtjb25zdCBmWj17Y29sb3I6ImFjY2VudCIsY2xpY2tBY3Rpb246ImNoZWNrLWluZGV0ZXJtaW5hdGUifSx1Wj17cHJvdmlkZTp4VSx1c2VFeGlzdGluZzokZSgoKCk9PmJaKSksbXVsdGk6ITB9O2NsYXNzIGdae31jb25zdCBoWj1GRihJRihIRih6RihjbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLl9lbGVtZW50UmVmPXR9fSkpKSk7Y2xhc3MgYlogZXh0ZW5kcyBoWntjb25zdHJ1Y3Rvcih0LGUsbixvLGksYSxyKXtzdXBlcih0KSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZj1lLHRoaXMuX2ZvY3VzTW9uaXRvcj1uLHRoaXMuX25nWm9uZT1vLHRoaXMuX2FuaW1hdGlvbk1vZGU9YSx0aGlzLl9vcHRpb25zPXIsdGhpcy5hcmlhTGFiZWw9IiIsdGhpcy5hcmlhTGFiZWxsZWRieT1udWxsLHRoaXMuX3VuaXF1ZUlkPSJtYXQtY2hlY2tib3gtIisgKyttWix0aGlzLmlkPXRoaXMuX3VuaXF1ZUlkLHRoaXMubGFiZWxQb3NpdGlvbj0iYWZ0ZXIiLHRoaXMubmFtZT1udWxsLHRoaXMuY2hhbmdlPW5ldyBTeSx0aGlzLmluZGV0ZXJtaW5hdGVDaGFuZ2U9bmV3IFN5LHRoaXMuX29uVG91Y2hlZD0oKT0+e30sdGhpcy5fY3VycmVudEFuaW1hdGlvbkNsYXNzPSIiLHRoaXMuX2N1cnJlbnRDaGVja1N0YXRlPTAsdGhpcy5fY29udHJvbFZhbHVlQWNjZXNzb3JDaGFuZ2VGbj0oKT0+e30sdGhpcy5fY2hlY2tlZD0hMSx0aGlzLl9kaXNhYmxlZD0hMSx0aGlzLl9pbmRldGVybWluYXRlPSExLHRoaXMuX29wdGlvbnM9dGhpcy5fb3B0aW9uc3x8ZlosdGhpcy5jb2xvcj10aGlzLmRlZmF1bHRDb2xvcj10aGlzLl9vcHRpb25zLmNvbG9yfHxmWi5jb2xvcix0aGlzLnRhYkluZGV4PXBhcnNlSW50KGkpfHwwfWdldCBpbnB1dElkKCl7cmV0dXJuYCR7dGhpcy5pZHx8dGhpcy5fdW5pcXVlSWR9LWlucHV0YH1nZXQgcmVxdWlyZWQoKXtyZXR1cm4gdGhpcy5fcmVxdWlyZWR9c2V0IHJlcXVpcmVkKHQpe3RoaXMuX3JlcXVpcmVkPWVIKHQpfW5nQWZ0ZXJWaWV3SW5pdCgpe3RoaXMuX2ZvY3VzTW9uaXRvci5tb25pdG9yKHRoaXMuX2VsZW1lbnRSZWYsITApLnN1YnNjcmliZSgodD0+e3R8fFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCgpPT57dGhpcy5fb25Ub3VjaGVkKCksdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCl9KSl9KSksdGhpcy5fc3luY0luZGV0ZXJtaW5hdGUodGhpcy5faW5kZXRlcm1pbmF0ZSl9bmdBZnRlclZpZXdDaGVja2VkKCl7fW5nT25EZXN0cm95KCl7dGhpcy5fZm9jdXNNb25pdG9yLnN0b3BNb25pdG9yaW5nKHRoaXMuX2VsZW1lbnRSZWYpfWdldCBjaGVja2VkKCl7cmV0dXJuIHRoaXMuX2NoZWNrZWR9c2V0IGNoZWNrZWQodCl7dCE9dGhpcy5jaGVja2VkJiYodGhpcy5fY2hlY2tlZD10LHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpKX1nZXQgZGlzYWJsZWQoKXtyZXR1cm4gdGhpcy5fZGlzYWJsZWR9c2V0IGRpc2FibGVkKHQpe2NvbnN0IGU9ZUgodCk7ZSE9PXRoaXMuZGlzYWJsZWQmJih0aGlzLl9kaXNhYmxlZD1lLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpKX1nZXQgaW5kZXRlcm1pbmF0ZSgpe3JldHVybiB0aGlzLl9pbmRldGVybWluYXRlfXNldCBpbmRldGVybWluYXRlKHQpe2NvbnN0IGU9dCE9dGhpcy5faW5kZXRlcm1pbmF0ZTt0aGlzLl9pbmRldGVybWluYXRlPWVIKHQpLGUmJih0aGlzLl90cmFuc2l0aW9uQ2hlY2tTdGF0ZSh0aGlzLl9pbmRldGVybWluYXRlPzM6dGhpcy5jaGVja2VkPzE6MiksdGhpcy5pbmRldGVybWluYXRlQ2hhbmdlLmVtaXQodGhpcy5faW5kZXRlcm1pbmF0ZSkpLHRoaXMuX3N5bmNJbmRldGVybWluYXRlKHRoaXMuX2luZGV0ZXJtaW5hdGUpfV9pc1JpcHBsZURpc2FibGVkKCl7cmV0dXJuIHRoaXMuZGlzYWJsZVJpcHBsZXx8dGhpcy5kaXNhYmxlZH1fb25MYWJlbFRleHRDaGFuZ2UoKXt0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCl9d3JpdGVWYWx1ZSh0KXt0aGlzLmNoZWNrZWQ9ISF0fXJlZ2lzdGVyT25DaGFuZ2UodCl7dGhpcy5fY29udHJvbFZhbHVlQWNjZXNzb3JDaGFuZ2VGbj10fXJlZ2lzdGVyT25Ub3VjaGVkKHQpe3RoaXMuX29uVG91Y2hlZD10fXNldERpc2FibGVkU3RhdGUodCl7dGhpcy5kaXNhYmxlZD10fV9nZXRBcmlhQ2hlY2tlZCgpe3JldHVybiB0aGlzLmNoZWNrZWQ/InRydWUiOnRoaXMuaW5kZXRlcm1pbmF0ZT8ibWl4ZWQiOiJmYWxzZSJ9X3RyYW5zaXRpb25DaGVja1N0YXRlKHQpe2xldCBlPXRoaXMuX2N1cnJlbnRDaGVja1N0YXRlLG49dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O2lmKGUhPT10JiYodGhpcy5fY3VycmVudEFuaW1hdGlvbkNsYXNzLmxlbmd0aD4wJiZuLmNsYXNzTGlzdC5yZW1vdmUodGhpcy5fY3VycmVudEFuaW1hdGlvbkNsYXNzKSx0aGlzLl9jdXJyZW50QW5pbWF0aW9uQ2xhc3M9dGhpcy5fZ2V0QW5pbWF0aW9uQ2xhc3NGb3JDaGVja1N0YXRlVHJhbnNpdGlvbihlLHQpLHRoaXMuX2N1cnJlbnRDaGVja1N0YXRlPXQsdGhpcy5fY3VycmVudEFuaW1hdGlvbkNsYXNzLmxlbmd0aD4wKSl7bi5jbGFzc0xpc3QuYWRkKHRoaXMuX2N1cnJlbnRBbmltYXRpb25DbGFzcyk7Y29uc3QgdD10aGlzLl9jdXJyZW50QW5pbWF0aW9uQ2xhc3M7dGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+e3NldFRpbWVvdXQoKCgpPT57bi5jbGFzc0xpc3QucmVtb3ZlKHQpfSksMWUzKX0pKX19X2VtaXRDaGFuZ2VFdmVudCgpe2NvbnN0IHQ9bmV3IGdaO3Quc291cmNlPXRoaXMsdC5jaGVja2VkPXRoaXMuY2hlY2tlZCx0aGlzLl9jb250cm9sVmFsdWVBY2Nlc3NvckNoYW5nZUZuKHRoaXMuY2hlY2tlZCksdGhpcy5jaGFuZ2UuZW1pdCh0KSx0aGlzLl9pbnB1dEVsZW1lbnQmJih0aGlzLl9pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5jaGVja2VkPXRoaXMuY2hlY2tlZCl9dG9nZ2xlKCl7dGhpcy5jaGVja2VkPSF0aGlzLmNoZWNrZWR9X29uSW5wdXRDbGljayh0KXt2YXIgZTtjb25zdCBuPW51bGw9PT0oZT10aGlzLl9vcHRpb25zKXx8dm9pZCAwPT09ZT92b2lkIDA6ZS5jbGlja0FjdGlvbjt0LnN0b3BQcm9wYWdhdGlvbigpLHRoaXMuZGlzYWJsZWR8fCJub29wIj09PW4/dGhpcy5kaXNhYmxlZHx8Im5vb3AiIT09bnx8KHRoaXMuX2lucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmNoZWNrZWQ9dGhpcy5jaGVja2VkLHRoaXMuX2lucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmluZGV0ZXJtaW5hdGU9dGhpcy5pbmRldGVybWluYXRlKToodGhpcy5pbmRldGVybWluYXRlJiYiY2hlY2siIT09biYmUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKCk9Pnt0aGlzLl9pbmRldGVybWluYXRlPSExLHRoaXMuaW5kZXRlcm1pbmF0ZUNoYW5nZS5lbWl0KHRoaXMuX2luZGV0ZXJtaW5hdGUpfSkpLHRoaXMudG9nZ2xlKCksdGhpcy5fdHJhbnNpdGlvbkNoZWNrU3RhdGUodGhpcy5fY2hlY2tlZD8xOjIpLHRoaXMuX2VtaXRDaGFuZ2VFdmVudCgpKX1mb2N1cyh0LGUpe3Q/dGhpcy5fZm9jdXNNb25pdG9yLmZvY3VzVmlhKHRoaXMuX2lucHV0RWxlbWVudCx0LGUpOnRoaXMuX2lucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKGUpfV9vbkludGVyYWN0aW9uRXZlbnQodCl7dC5zdG9wUHJvcGFnYXRpb24oKX1fZ2V0QW5pbWF0aW9uQ2xhc3NGb3JDaGVja1N0YXRlVHJhbnNpdGlvbih0LGUpe2lmKCJOb29wQW5pbWF0aW9ucyI9PT10aGlzLl9hbmltYXRpb25Nb2RlKXJldHVybiIiO2xldCBuPSIiO3N3aXRjaCh0KXtjYXNlIDA6aWYoMT09PWUpbj0idW5jaGVja2VkLWNoZWNrZWQiO2Vsc2V7aWYoMyE9ZSlyZXR1cm4iIjtuPSJ1bmNoZWNrZWQtaW5kZXRlcm1pbmF0ZSJ9YnJlYWs7Y2FzZSAyOm49MT09PWU/InVuY2hlY2tlZC1jaGVja2VkIjoidW5jaGVja2VkLWluZGV0ZXJtaW5hdGUiO2JyZWFrO2Nhc2UgMTpuPTI9PT1lPyJjaGVja2VkLXVuY2hlY2tlZCI6ImNoZWNrZWQtaW5kZXRlcm1pbmF0ZSI7YnJlYWs7Y2FzZSAzOm49MT09PWU/ImluZGV0ZXJtaW5hdGUtY2hlY2tlZCI6ImluZGV0ZXJtaW5hdGUtdW5jaGVja2VkIn1yZXR1cm5gbWF0LWNoZWNrYm94LWFuaW0tJHtufWB9X3N5bmNJbmRldGVybWluYXRlKHQpe2NvbnN0IGU9dGhpcy5faW5wdXRFbGVtZW50O2UmJihlLm5hdGl2ZUVsZW1lbnQuaW5kZXRlcm1pbmF0ZT10KX19YlouybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGJaKShnZihLaCksZ2YoT2IpLGdmKGZGKSxnZihtQyksR2EoInRhYmluZGV4IiksZ2YoY2ssOCksZ2YoZFosOCkpfSxiWi7JtWNtcD1zbyh7dHlwZTpiWixzZWxlY3RvcnM6W1sibWF0LWNoZWNrYm94Il1dLHZpZXdRdWVyeTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiYoVnkobFosNSksVnkobUwsNSkpLDImZSl7bGV0IHQ7QnkodD1VeSgpKSYmKG4uX2lucHV0RWxlbWVudD10LmZpcnN0KSxCeSh0PVV5KCkpJiYobi5yaXBwbGU9dC5maXJzdCl9fSxob3N0QXR0cnM6WzEsIm1hdC1jaGVja2JveCJdLGhvc3RWYXJzOjEyLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MiZlJiYoY2coImlkIixuLmlkKSx5bSgidGFiaW5kZXgiLG51bGwpLGN1KCJtYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZSIsbi5pbmRldGVybWluYXRlKSgibWF0LWNoZWNrYm94LWNoZWNrZWQiLG4uY2hlY2tlZCkoIm1hdC1jaGVja2JveC1kaXNhYmxlZCIsbi5kaXNhYmxlZCkoIm1hdC1jaGVja2JveC1sYWJlbC1iZWZvcmUiLCJiZWZvcmUiPT1uLmxhYmVsUG9zaXRpb24pKCJfbWF0LWFuaW1hdGlvbi1ub29wYWJsZSIsIk5vb3BBbmltYXRpb25zIj09PW4uX2FuaW1hdGlvbk1vZGUpKX0saW5wdXRzOntkaXNhYmxlUmlwcGxlOiJkaXNhYmxlUmlwcGxlIixjb2xvcjoiY29sb3IiLHRhYkluZGV4OiJ0YWJJbmRleCIsYXJpYUxhYmVsOlsiYXJpYS1sYWJlbCIsImFyaWFMYWJlbCJdLGFyaWFMYWJlbGxlZGJ5OlsiYXJpYS1sYWJlbGxlZGJ5IiwiYXJpYUxhYmVsbGVkYnkiXSxpZDoiaWQiLGxhYmVsUG9zaXRpb246ImxhYmVsUG9zaXRpb24iLG5hbWU6Im5hbWUiLHJlcXVpcmVkOiJyZXF1aXJlZCIsY2hlY2tlZDoiY2hlY2tlZCIsZGlzYWJsZWQ6ImRpc2FibGVkIixpbmRldGVybWluYXRlOiJpbmRldGVybWluYXRlIixhcmlhRGVzY3JpYmVkYnk6WyJhcmlhLWRlc2NyaWJlZGJ5IiwiYXJpYURlc2NyaWJlZGJ5Il0sdmFsdWU6InZhbHVlIn0sb3V0cHV0czp7Y2hhbmdlOiJjaGFuZ2UiLGluZGV0ZXJtaW5hdGVDaGFuZ2U6ImluZGV0ZXJtaW5hdGVDaGFuZ2UifSxleHBvcnRBczpbIm1hdENoZWNrYm94Il0sZmVhdHVyZXM6W2poKFt1Wl0pLFFwXSxuZ0NvbnRlbnRTZWxlY3RvcnM6WyIqIl0sZGVjbHM6MTcsdmFyczoyMSxjb25zdHM6W1sxLCJtYXQtY2hlY2tib3gtbGF5b3V0Il0sWyJsYWJlbCIsIiJdLFsxLCJtYXQtY2hlY2tib3gtaW5uZXItY29udGFpbmVyIl0sWyJ0eXBlIiwiY2hlY2tib3giLDEsIm1hdC1jaGVja2JveC1pbnB1dCIsImNkay12aXN1YWxseS1oaWRkZW4iLDMsImlkIiwicmVxdWlyZWQiLCJjaGVja2VkIiwiZGlzYWJsZWQiLCJ0YWJJbmRleCIsImNoYW5nZSIsImNsaWNrIl0sWyJpbnB1dCIsIiJdLFsibWF0UmlwcGxlIiwiIiwxLCJtYXQtY2hlY2tib3gtcmlwcGxlIiwibWF0LWZvY3VzLWluZGljYXRvciIsMywibWF0UmlwcGxlVHJpZ2dlciIsIm1hdFJpcHBsZURpc2FibGVkIiwibWF0UmlwcGxlUmFkaXVzIiwibWF0UmlwcGxlQ2VudGVyZWQiLCJtYXRSaXBwbGVBbmltYXRpb24iXSxbMSwibWF0LXJpcHBsZS1lbGVtZW50IiwibWF0LWNoZWNrYm94LXBlcnNpc3RlbnQtcmlwcGxlIl0sWzEsIm1hdC1jaGVja2JveC1mcmFtZSJdLFsxLCJtYXQtY2hlY2tib3gtYmFja2dyb3VuZCJdLFsidmVyc2lvbiIsIjEuMSIsImZvY3VzYWJsZSIsImZhbHNlIiwidmlld0JveCIsIjAgMCAyNCAyNCIsMCwieG1sIiwic3BhY2UiLCJwcmVzZXJ2ZSIsImFyaWEtaGlkZGVuIiwidHJ1ZSIsMSwibWF0LWNoZWNrYm94LWNoZWNrbWFyayJdLFsiZmlsbCIsIm5vbmUiLCJzdHJva2UiLCJ3aGl0ZSIsImQiLCJNNC4xLDEyLjcgOSwxNy42IDIwLjMsNi4zIiwxLCJtYXQtY2hlY2tib3gtY2hlY2ttYXJrLXBhdGgiXSxbMSwibWF0LWNoZWNrYm94LW1peGVkbWFyayJdLFsxLCJtYXQtY2hlY2tib3gtbGFiZWwiLDMsImNka09ic2VydmVDb250ZW50Il0sWyJjaGVja2JveExhYmVsIiwiIl0sWzIsImRpc3BsYXkiLCJub25lIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJihIZigpLENmKDAsImxhYmVsIiwwLDEpLENmKDIsInNwYW4iLDIpLENmKDMsImlucHV0IiwzLDQpLFJmKCJjaGFuZ2UiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLl9vbkludGVyYWN0aW9uRXZlbnQoZSl9KSkoImNsaWNrIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5fb25JbnB1dENsaWNrKGUpfSkpLE1mKCksQ2YoNSwic3BhbiIsNSksdmYoNiwic3BhbiIsNiksTWYoKSx2Zig3LCJzcGFuIiw3KSxDZig4LCJzcGFuIiw4KSxvYSgpLENmKDksInN2ZyIsOSksdmYoMTAsInBhdGgiLDEwKSxNZigpLGFhKCksdmYoMTEsInNwYW4iLDExKSxNZigpLE1mKCksQ2YoMTIsInNwYW4iLDEyLDEzKSxSZigiY2RrT2JzZXJ2ZUNvbnRlbnQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4uX29uTGFiZWxUZXh0Q2hhbmdlKCl9KSksQ2YoMTQsInNwYW4iLDE0KSxQdSgxNSwiwqAiKSxNZigpLEZmKDE2KSxNZigpLE1mKCkpLDImZSl7Y29uc3QgdD1GbSgxKSxlPUZtKDEzKTt5bSgiZm9yIixuLmlucHV0SWQpLERjKDIpLGN1KCJtYXQtY2hlY2tib3gtaW5uZXItY29udGFpbmVyLW5vLXNpZGUtbWFyZ2luIiwhZS50ZXh0Q29udGVudHx8IWUudGV4dENvbnRlbnQudHJpbSgpKSxEYygxKSxiZigiaWQiLG4uaW5wdXRJZCkoInJlcXVpcmVkIixuLnJlcXVpcmVkKSgiY2hlY2tlZCIsbi5jaGVja2VkKSgiZGlzYWJsZWQiLG4uZGlzYWJsZWQpKCJ0YWJJbmRleCIsbi50YWJJbmRleCkseW0oInZhbHVlIixuLnZhbHVlKSgibmFtZSIsbi5uYW1lKSgiYXJpYS1sYWJlbCIsbi5hcmlhTGFiZWx8fG51bGwpKCJhcmlhLWxhYmVsbGVkYnkiLG4uYXJpYUxhYmVsbGVkYnkpKCJhcmlhLWNoZWNrZWQiLG4uX2dldEFyaWFDaGVja2VkKCkpKCJhcmlhLWRlc2NyaWJlZGJ5IixuLmFyaWFEZXNjcmliZWRieSksRGMoMiksYmYoIm1hdFJpcHBsZVRyaWdnZXIiLHQpKCJtYXRSaXBwbGVEaXNhYmxlZCIsbi5faXNSaXBwbGVEaXNhYmxlZCgpKSgibWF0UmlwcGxlUmFkaXVzIiwyMCkoIm1hdFJpcHBsZUNlbnRlcmVkIiwhMCkoIm1hdFJpcHBsZUFuaW1hdGlvbiIsaXkoMTksY1osIk5vb3BBbmltYXRpb25zIj09PW4uX2FuaW1hdGlvbk1vZGU/MDoxNTApKX19LGRpcmVjdGl2ZXM6W21MLFBIXSxzdHlsZXM6WyJAa2V5ZnJhbWVzIG1hdC1jaGVja2JveC1mYWRlLWluLWJhY2tncm91bmR7MCV7b3BhY2l0eTowfTUwJXtvcGFjaXR5OjF9fUBrZXlmcmFtZXMgbWF0LWNoZWNrYm94LWZhZGUtb3V0LWJhY2tncm91bmR7MCUsNTAle29wYWNpdHk6MX0xMDAle29wYWNpdHk6MH19QGtleWZyYW1lcyBtYXQtY2hlY2tib3gtdW5jaGVja2VkLWNoZWNrZWQtY2hlY2ttYXJrLXBhdGh7MCUsNTAle3N0cm9rZS1kYXNob2Zmc2V0OjIyLjkxMDI1OX01MCV7YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAwLjEpfTEwMCV7c3Ryb2tlLWRhc2hvZmZzZXQ6MH19QGtleWZyYW1lcyBtYXQtY2hlY2tib3gtdW5jaGVja2VkLWluZGV0ZXJtaW5hdGUtbWl4ZWRtYXJrezAlLDY4LjIle3RyYW5zZm9ybTpzY2FsZVgoMCl9NjguMiV7YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoMCwgMCwgMCwgMSl9MTAwJXt0cmFuc2Zvcm06c2NhbGVYKDEpfX1Aa2V5ZnJhbWVzIG1hdC1jaGVja2JveC1jaGVja2VkLXVuY2hlY2tlZC1jaGVja21hcmstcGF0aHtmcm9te2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKDAuNCwgMCwgMSwgMSk7c3Ryb2tlLWRhc2hvZmZzZXQ6MH10b3tzdHJva2UtZGFzaG9mZnNldDotMjIuOTEwMjU5fX1Aa2V5ZnJhbWVzIG1hdC1jaGVja2JveC1jaGVja2VkLWluZGV0ZXJtaW5hdGUtY2hlY2ttYXJre2Zyb217YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAwLjEpO29wYWNpdHk6MTt0cmFuc2Zvcm06cm90YXRlKDBkZWcpfXRve29wYWNpdHk6MDt0cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKX19QGtleWZyYW1lcyBtYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS1jaGVja2VkLWNoZWNrbWFya3tmcm9te2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKDAuMTQsIDAsIDAsIDEpO29wYWNpdHk6MDt0cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKX10b3tvcGFjaXR5OjE7dHJhbnNmb3JtOnJvdGF0ZSgzNjBkZWcpfX1Aa2V5ZnJhbWVzIG1hdC1jaGVja2JveC1jaGVja2VkLWluZGV0ZXJtaW5hdGUtbWl4ZWRtYXJre2Zyb217YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAwLjEpO29wYWNpdHk6MDt0cmFuc2Zvcm06cm90YXRlKC00NWRlZyl9dG97b3BhY2l0eToxO3RyYW5zZm9ybTpyb3RhdGUoMGRlZyl9fUBrZXlmcmFtZXMgbWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUtY2hlY2tlZC1taXhlZG1hcmt7ZnJvbXthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllcigwLjE0LCAwLCAwLCAxKTtvcGFjaXR5OjE7dHJhbnNmb3JtOnJvdGF0ZSgwZGVnKX10b3tvcGFjaXR5OjA7dHJhbnNmb3JtOnJvdGF0ZSgzMTVkZWcpfX1Aa2V5ZnJhbWVzIG1hdC1jaGVja2JveC1pbmRldGVybWluYXRlLXVuY2hlY2tlZC1taXhlZG1hcmt7MCV7YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpsaW5lYXI7b3BhY2l0eToxO3RyYW5zZm9ybTpzY2FsZVgoMSl9MzIuOCUsMTAwJXtvcGFjaXR5OjA7dHJhbnNmb3JtOnNjYWxlWCgwKX19Lm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kLC5tYXQtY2hlY2tib3gtZnJhbWV7dG9wOjA7bGVmdDowO3JpZ2h0OjA7Ym90dG9tOjA7cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czoycHg7Ym94LXNpemluZzpib3JkZXItYm94O3BvaW50ZXItZXZlbnRzOm5vbmV9Lm1hdC1jaGVja2JveHtkaXNwbGF5OmlubGluZS1ibG9jazt0cmFuc2l0aW9uOmJhY2tncm91bmQgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSksYm94LXNoYWRvdyAyODBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO2N1cnNvcjpwb2ludGVyOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudH0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LWNoZWNrYm94e3RyYW5zaXRpb246bm9uZTthbmltYXRpb246bm9uZX0ubWF0LWNoZWNrYm94IC5tYXQtcmlwcGxlLWVsZW1lbnQ6bm90KC5tYXQtY2hlY2tib3gtcGVyc2lzdGVudC1yaXBwbGUpe29wYWNpdHk6LjE2fS5tYXQtY2hlY2tib3ggLm1hdC1jaGVja2JveC1yaXBwbGV7cG9zaXRpb246YWJzb2x1dGU7bGVmdDpjYWxjKDUwJSAtIDIwcHgpO3RvcDpjYWxjKDUwJSAtIDIwcHgpO2hlaWdodDo0MHB4O3dpZHRoOjQwcHg7ei1pbmRleDoxO3BvaW50ZXItZXZlbnRzOm5vbmV9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWNoZWNrYm94LmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtY2hlY2tib3gtcmlwcGxle291dGxpbmU6c29saWQgM3B4fS5tYXQtY2hlY2tib3gtbGF5b3V0ey13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTtjdXJzb3I6aW5oZXJpdDthbGlnbi1pdGVtczpiYXNlbGluZTt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7ZGlzcGxheTppbmxpbmUtZmxleDt3aGl0ZS1zcGFjZTpub3dyYXB9Lm1hdC1jaGVja2JveC1sYWJlbHstd2Via2l0LXVzZXItc2VsZWN0OmF1dG87LW1vei11c2VyLXNlbGVjdDphdXRvOy1tcy11c2VyLXNlbGVjdDphdXRvO3VzZXItc2VsZWN0OmF1dG99Lm1hdC1jaGVja2JveC1pbm5lci1jb250YWluZXJ7ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0OjE2cHg7bGluZS1oZWlnaHQ6MDttYXJnaW46YXV0bzttYXJnaW4tcmlnaHQ6OHB4O29yZGVyOjA7cG9zaXRpb246cmVsYXRpdmU7dmVydGljYWwtYWxpZ246bWlkZGxlO3doaXRlLXNwYWNlOm5vd3JhcDt3aWR0aDoxNnB4O2ZsZXgtc2hyaW5rOjB9W2Rpcj1ydGxdIC5tYXQtY2hlY2tib3gtaW5uZXItY29udGFpbmVye21hcmdpbi1sZWZ0OjhweDttYXJnaW4tcmlnaHQ6YXV0b30ubWF0LWNoZWNrYm94LWlubmVyLWNvbnRhaW5lci1uby1zaWRlLW1hcmdpbnttYXJnaW4tbGVmdDowO21hcmdpbi1yaWdodDowfS5tYXQtY2hlY2tib3gtZnJhbWV7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2l0aW9uOmJvcmRlci1jb2xvciA5MG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDAuMSk7Ym9yZGVyLXdpZHRoOjJweDtib3JkZXItc3R5bGU6c29saWR9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtY2hlY2tib3gtZnJhbWV7dHJhbnNpdGlvbjpub25lfS5tYXQtY2hlY2tib3gtYmFja2dyb3VuZHthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTppbmxpbmUtZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO3RyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciA5MG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDAuMSksb3BhY2l0eSA5MG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDAuMSk7LXdlYmtpdC1wcmludC1jb2xvci1hZGp1c3Q6ZXhhY3Q7Y29sb3ItYWRqdXN0OmV4YWN0fS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LWNoZWNrYm94LWJhY2tncm91bmR7dHJhbnNpdGlvbjpub25lfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1jaGVja2JveCAubWF0LWNoZWNrYm94LWJhY2tncm91bmR7YmFja2dyb3VuZDpub25lfS5tYXQtY2hlY2tib3gtcGVyc2lzdGVudC1yaXBwbGV7ZGlzcGxheTpibG9jazt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO3RyYW5zZm9ybTpub25lfS5tYXQtY2hlY2tib3gtaW5uZXItY29udGFpbmVyOmhvdmVyIC5tYXQtY2hlY2tib3gtcGVyc2lzdGVudC1yaXBwbGV7b3BhY2l0eTouMDR9Lm1hdC1jaGVja2JveC5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LWNoZWNrYm94LXBlcnNpc3RlbnQtcmlwcGxle29wYWNpdHk6LjEyfS5tYXQtY2hlY2tib3gtcGVyc2lzdGVudC1yaXBwbGUsLm1hdC1jaGVja2JveC5tYXQtY2hlY2tib3gtZGlzYWJsZWQgLm1hdC1jaGVja2JveC1pbm5lci1jb250YWluZXI6aG92ZXIgLm1hdC1jaGVja2JveC1wZXJzaXN0ZW50LXJpcHBsZXtvcGFjaXR5OjB9QG1lZGlhKGhvdmVyOiBub25lKXsubWF0LWNoZWNrYm94LWlubmVyLWNvbnRhaW5lcjpob3ZlciAubWF0LWNoZWNrYm94LXBlcnNpc3RlbnQtcmlwcGxle2Rpc3BsYXk6bm9uZX19Lm1hdC1jaGVja2JveC1jaGVja21hcmt7dG9wOjA7bGVmdDowO3JpZ2h0OjA7Ym90dG9tOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MTAwJX0ubWF0LWNoZWNrYm94LWNoZWNrbWFyay1wYXRoe3N0cm9rZS1kYXNob2Zmc2V0OjIyLjkxMDI1OTtzdHJva2UtZGFzaGFycmF5OjIyLjkxMDI1OTtzdHJva2Utd2lkdGg6Mi4xMzMzMzMzMzMzcHh9LmNkay1oaWdoLWNvbnRyYXN0LWJsYWNrLW9uLXdoaXRlIC5tYXQtY2hlY2tib3gtY2hlY2ttYXJrLXBhdGh7c3Ryb2tlOiMwMDAgIWltcG9ydGFudH0ubWF0LWNoZWNrYm94LW1peGVkbWFya3t3aWR0aDpjYWxjKDEwMCUgLSA2cHgpO2hlaWdodDoycHg7b3BhY2l0eTowO3RyYW5zZm9ybTpzY2FsZVgoMCkgcm90YXRlKDBkZWcpO2JvcmRlci1yYWRpdXM6MnB4fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1jaGVja2JveC1taXhlZG1hcmt7aGVpZ2h0OjA7Ym9yZGVyLXRvcDpzb2xpZCAycHg7bWFyZ2luLXRvcDoycHh9Lm1hdC1jaGVja2JveC1sYWJlbC1iZWZvcmUgLm1hdC1jaGVja2JveC1pbm5lci1jb250YWluZXJ7b3JkZXI6MTttYXJnaW4tbGVmdDo4cHg7bWFyZ2luLXJpZ2h0OmF1dG99W2Rpcj1ydGxdIC5tYXQtY2hlY2tib3gtbGFiZWwtYmVmb3JlIC5tYXQtY2hlY2tib3gtaW5uZXItY29udGFpbmVye21hcmdpbi1sZWZ0OmF1dG87bWFyZ2luLXJpZ2h0OjhweH0ubWF0LWNoZWNrYm94LWNoZWNrZWQgLm1hdC1jaGVja2JveC1jaGVja21hcmt7b3BhY2l0eToxfS5tYXQtY2hlY2tib3gtY2hlY2tlZCAubWF0LWNoZWNrYm94LWNoZWNrbWFyay1wYXRoe3N0cm9rZS1kYXNob2Zmc2V0OjB9Lm1hdC1jaGVja2JveC1jaGVja2VkIC5tYXQtY2hlY2tib3gtbWl4ZWRtYXJre3RyYW5zZm9ybTpzY2FsZVgoMSkgcm90YXRlKC00NWRlZyl9Lm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlIC5tYXQtY2hlY2tib3gtY2hlY2ttYXJre29wYWNpdHk6MDt0cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKX0ubWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUgLm1hdC1jaGVja2JveC1jaGVja21hcmstcGF0aHtzdHJva2UtZGFzaG9mZnNldDowfS5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZSAubWF0LWNoZWNrYm94LW1peGVkbWFya3tvcGFjaXR5OjE7dHJhbnNmb3JtOnNjYWxlWCgxKSByb3RhdGUoMGRlZyl9Lm1hdC1jaGVja2JveC11bmNoZWNrZWQgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5ke2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9Lm1hdC1jaGVja2JveC1kaXNhYmxlZHtjdXJzb3I6ZGVmYXVsdH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtY2hlY2tib3gtZGlzYWJsZWR7b3BhY2l0eTouNX0ubWF0LWNoZWNrYm94LWFuaW0tdW5jaGVja2VkLWNoZWNrZWQgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5ke2FuaW1hdGlvbjoxODBtcyBsaW5lYXIgMG1zIG1hdC1jaGVja2JveC1mYWRlLWluLWJhY2tncm91bmR9Lm1hdC1jaGVja2JveC1hbmltLXVuY2hlY2tlZC1jaGVja2VkIC5tYXQtY2hlY2tib3gtY2hlY2ttYXJrLXBhdGh7YW5pbWF0aW9uOjE4MG1zIGxpbmVhciAwbXMgbWF0LWNoZWNrYm94LXVuY2hlY2tlZC1jaGVja2VkLWNoZWNrbWFyay1wYXRofS5tYXQtY2hlY2tib3gtYW5pbS11bmNoZWNrZWQtaW5kZXRlcm1pbmF0ZSAubWF0LWNoZWNrYm94LWJhY2tncm91bmR7YW5pbWF0aW9uOjE4MG1zIGxpbmVhciAwbXMgbWF0LWNoZWNrYm94LWZhZGUtaW4tYmFja2dyb3VuZH0ubWF0LWNoZWNrYm94LWFuaW0tdW5jaGVja2VkLWluZGV0ZXJtaW5hdGUgLm1hdC1jaGVja2JveC1taXhlZG1hcmt7YW5pbWF0aW9uOjkwbXMgbGluZWFyIDBtcyBtYXQtY2hlY2tib3gtdW5jaGVja2VkLWluZGV0ZXJtaW5hdGUtbWl4ZWRtYXJrfS5tYXQtY2hlY2tib3gtYW5pbS1jaGVja2VkLXVuY2hlY2tlZCAubWF0LWNoZWNrYm94LWJhY2tncm91bmR7YW5pbWF0aW9uOjE4MG1zIGxpbmVhciAwbXMgbWF0LWNoZWNrYm94LWZhZGUtb3V0LWJhY2tncm91bmR9Lm1hdC1jaGVja2JveC1hbmltLWNoZWNrZWQtdW5jaGVja2VkIC5tYXQtY2hlY2tib3gtY2hlY2ttYXJrLXBhdGh7YW5pbWF0aW9uOjkwbXMgbGluZWFyIDBtcyBtYXQtY2hlY2tib3gtY2hlY2tlZC11bmNoZWNrZWQtY2hlY2ttYXJrLXBhdGh9Lm1hdC1jaGVja2JveC1hbmltLWNoZWNrZWQtaW5kZXRlcm1pbmF0ZSAubWF0LWNoZWNrYm94LWNoZWNrbWFya3thbmltYXRpb246OTBtcyBsaW5lYXIgMG1zIG1hdC1jaGVja2JveC1jaGVja2VkLWluZGV0ZXJtaW5hdGUtY2hlY2ttYXJrfS5tYXQtY2hlY2tib3gtYW5pbS1jaGVja2VkLWluZGV0ZXJtaW5hdGUgLm1hdC1jaGVja2JveC1taXhlZG1hcmt7YW5pbWF0aW9uOjkwbXMgbGluZWFyIDBtcyBtYXQtY2hlY2tib3gtY2hlY2tlZC1pbmRldGVybWluYXRlLW1peGVkbWFya30ubWF0LWNoZWNrYm94LWFuaW0taW5kZXRlcm1pbmF0ZS1jaGVja2VkIC5tYXQtY2hlY2tib3gtY2hlY2ttYXJre2FuaW1hdGlvbjo1MDBtcyBsaW5lYXIgMG1zIG1hdC1jaGVja2JveC1pbmRldGVybWluYXRlLWNoZWNrZWQtY2hlY2ttYXJrfS5tYXQtY2hlY2tib3gtYW5pbS1pbmRldGVybWluYXRlLWNoZWNrZWQgLm1hdC1jaGVja2JveC1taXhlZG1hcmt7YW5pbWF0aW9uOjUwMG1zIGxpbmVhciAwbXMgbWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUtY2hlY2tlZC1taXhlZG1hcmt9Lm1hdC1jaGVja2JveC1hbmltLWluZGV0ZXJtaW5hdGUtdW5jaGVja2VkIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZHthbmltYXRpb246MTgwbXMgbGluZWFyIDBtcyBtYXQtY2hlY2tib3gtZmFkZS1vdXQtYmFja2dyb3VuZH0ubWF0LWNoZWNrYm94LWFuaW0taW5kZXRlcm1pbmF0ZS11bmNoZWNrZWQgLm1hdC1jaGVja2JveC1taXhlZG1hcmt7YW5pbWF0aW9uOjMwMG1zIGxpbmVhciAwbXMgbWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUtdW5jaGVja2VkLW1peGVkbWFya30ubWF0LWNoZWNrYm94LWlucHV0e2JvdHRvbTowO2xlZnQ6NTAlfVxuIl0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksYlouY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpLaH0se3R5cGU6T2J9LHt0eXBlOmZGfSx7dHlwZTptQ30se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOiRhLGFyZ3M6WyJ0YWJpbmRleCJdfV19LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbY2tdfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbZFpdfV19XSxiWi5wcm9wRGVjb3JhdG9ycz17YXJpYUxhYmVsOlt7dHlwZTpSXyxhcmdzOlsiYXJpYS1sYWJlbCJdfV0sYXJpYUxhYmVsbGVkYnk6W3t0eXBlOlJfLGFyZ3M6WyJhcmlhLWxhYmVsbGVkYnkiXX1dLGFyaWFEZXNjcmliZWRieTpbe3R5cGU6Ul8sYXJnczpbImFyaWEtZGVzY3JpYmVkYnkiXX1dLGlkOlt7dHlwZTpSX31dLHJlcXVpcmVkOlt7dHlwZTpSX31dLGxhYmVsUG9zaXRpb246W3t0eXBlOlJffV0sbmFtZTpbe3R5cGU6Ul99XSxjaGFuZ2U6W3t0eXBlOkVffV0saW5kZXRlcm1pbmF0ZUNoYW5nZTpbe3R5cGU6RV99XSx2YWx1ZTpbe3R5cGU6Ul99XSxfaW5wdXRFbGVtZW50Olt7dHlwZTphcixhcmdzOlsiaW5wdXQiXX1dLHJpcHBsZTpbe3R5cGU6YXIsYXJnczpbbUxdfV0sY2hlY2tlZDpbe3R5cGU6Ul99XSxkaXNhYmxlZDpbe3R5cGU6Ul99XSxpbmRldGVybWluYXRlOlt7dHlwZTpSX31dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGJaLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Im1hdC1jaGVja2JveCIsdGVtcGxhdGU6JzxsYWJlbCBbYXR0ci5mb3JdPSJpbnB1dElkIiBjbGFzcz0ibWF0LWNoZWNrYm94LWxheW91dCIgI2xhYmVsPlxuICA8c3BhbiBjbGFzcz0ibWF0LWNoZWNrYm94LWlubmVyLWNvbnRhaW5lciJcbiAgICAgICBbY2xhc3MubWF0LWNoZWNrYm94LWlubmVyLWNvbnRhaW5lci1uby1zaWRlLW1hcmdpbl09IiFjaGVja2JveExhYmVsLnRleHRDb250ZW50IHx8ICFjaGVja2JveExhYmVsLnRleHRDb250ZW50LnRyaW0oKSI+XG4gICAgPGlucHV0ICNpbnB1dFxuICAgICAgICAgICBjbGFzcz0ibWF0LWNoZWNrYm94LWlucHV0IGNkay12aXN1YWxseS1oaWRkZW4iIHR5cGU9ImNoZWNrYm94IlxuICAgICAgICAgICBbaWRdPSJpbnB1dElkIlxuICAgICAgICAgICBbcmVxdWlyZWRdPSJyZXF1aXJlZCJcbiAgICAgICAgICAgW2NoZWNrZWRdPSJjaGVja2VkIlxuICAgICAgICAgICBbYXR0ci52YWx1ZV09InZhbHVlIlxuICAgICAgICAgICBbZGlzYWJsZWRdPSJkaXNhYmxlZCJcbiAgICAgICAgICAgW2F0dHIubmFtZV09Im5hbWUiXG4gICAgICAgICAgIFt0YWJJbmRleF09InRhYkluZGV4IlxuICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT0iYXJpYUxhYmVsIHx8IG51bGwiXG4gICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09ImFyaWFMYWJlbGxlZGJ5IlxuICAgICAgICAgICBbYXR0ci5hcmlhLWNoZWNrZWRdPSJfZ2V0QXJpYUNoZWNrZWQoKSJcbiAgICAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09ImFyaWFEZXNjcmliZWRieSJcbiAgICAgICAgICAgKGNoYW5nZSk9Il9vbkludGVyYWN0aW9uRXZlbnQoJGV2ZW50KSJcbiAgICAgICAgICAgKGNsaWNrKT0iX29uSW5wdXRDbGljaygkZXZlbnQpIj5cbiAgICA8c3BhbiBtYXRSaXBwbGUgY2xhc3M9Im1hdC1jaGVja2JveC1yaXBwbGUgbWF0LWZvY3VzLWluZGljYXRvciJcbiAgICAgICAgIFttYXRSaXBwbGVUcmlnZ2VyXT0ibGFiZWwiXG4gICAgICAgICBbbWF0UmlwcGxlRGlzYWJsZWRdPSJfaXNSaXBwbGVEaXNhYmxlZCgpIlxuICAgICAgICAgW21hdFJpcHBsZVJhZGl1c109IjIwIlxuICAgICAgICAgW21hdFJpcHBsZUNlbnRlcmVkXT0idHJ1ZSJcbiAgICAgICAgIFttYXRSaXBwbGVBbmltYXRpb25dPSJ7ZW50ZXJEdXJhdGlvbjogX2FuaW1hdGlvbk1vZGUgPT09IFwnTm9vcEFuaW1hdGlvbnNcJyA/IDAgOiAxNTB9Ij5cbiAgICAgIDxzcGFuIGNsYXNzPSJtYXQtcmlwcGxlLWVsZW1lbnQgbWF0LWNoZWNrYm94LXBlcnNpc3RlbnQtcmlwcGxlIj48L3NwYW4+XG4gICAgPC9zcGFuPlxuICAgIDxzcGFuIGNsYXNzPSJtYXQtY2hlY2tib3gtZnJhbWUiPjwvc3Bhbj5cbiAgICA8c3BhbiBjbGFzcz0ibWF0LWNoZWNrYm94LWJhY2tncm91bmQiPlxuICAgICAgPHN2ZyB2ZXJzaW9uPSIxLjEiXG4gICAgICAgICAgIGZvY3VzYWJsZT0iZmFsc2UiXG4gICAgICAgICAgIGNsYXNzPSJtYXQtY2hlY2tib3gtY2hlY2ttYXJrIlxuICAgICAgICAgICB2aWV3Qm94PSIwIDAgMjQgMjQiXG4gICAgICAgICAgIHhtbDpzcGFjZT0icHJlc2VydmUiXG4gICAgICAgICAgIGFyaWEtaGlkZGVuPSJ0cnVlIj5cbiAgICAgICAgPHBhdGggY2xhc3M9Im1hdC1jaGVja2JveC1jaGVja21hcmstcGF0aCJcbiAgICAgICAgICAgICAgZmlsbD0ibm9uZSJcbiAgICAgICAgICAgICAgc3Ryb2tlPSJ3aGl0ZSJcbiAgICAgICAgICAgICAgZD0iTTQuMSwxMi43IDksMTcuNiAyMC4zLDYuMyIvPlxuICAgICAgPC9zdmc+XG4gICAgICBceDNjIS0tIEVsZW1lbnQgZm9yIHJlbmRlcmluZyB0aGUgaW5kZXRlcm1pbmF0ZSBzdGF0ZSBjaGVja2JveC4gLS1ceDNlXG4gICAgICA8c3BhbiBjbGFzcz0ibWF0LWNoZWNrYm94LW1peGVkbWFyayI+PC9zcGFuPlxuICAgIDwvc3Bhbj5cbiAgPC9zcGFuPlxuICA8c3BhbiBjbGFzcz0ibWF0LWNoZWNrYm94LWxhYmVsIiAjY2hlY2tib3hMYWJlbCAoY2RrT2JzZXJ2ZUNvbnRlbnQpPSJfb25MYWJlbFRleHRDaGFuZ2UoKSI+XG4gICAgXHgzYyEtLSBBZGQgYW4gaW52aXNpYmxlIHNwYW4gc28gSkFXUyBjYW4gcmVhZCB0aGUgbGFiZWwgLS1ceDNlXG4gICAgPHNwYW4gc3R5bGU9ImRpc3BsYXk6bm9uZSI+Jm5ic3A7PC9zcGFuPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgPC9zcGFuPlxuPC9sYWJlbD5cbicsZXhwb3J0QXM6Im1hdENoZWNrYm94Iixob3N0OntjbGFzczoibWF0LWNoZWNrYm94IiwiW2lkXSI6ImlkIiwiW2F0dHIudGFiaW5kZXhdIjoibnVsbCIsIltjbGFzcy5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZV0iOiJpbmRldGVybWluYXRlIiwiW2NsYXNzLm1hdC1jaGVja2JveC1jaGVja2VkXSI6ImNoZWNrZWQiLCJbY2xhc3MubWF0LWNoZWNrYm94LWRpc2FibGVkXSI6ImRpc2FibGVkIiwiW2NsYXNzLm1hdC1jaGVja2JveC1sYWJlbC1iZWZvcmVdIjonbGFiZWxQb3NpdGlvbiA9PSAiYmVmb3JlIicsIltjbGFzcy5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZV0iOiJfYW5pbWF0aW9uTW9kZSA9PT0gJ05vb3BBbmltYXRpb25zJyJ9LHByb3ZpZGVyczpbdVpdLGlucHV0czpbImRpc2FibGVSaXBwbGUiLCJjb2xvciIsInRhYkluZGV4Il0sZW5jYXBzdWxhdGlvbjpXbi5Ob25lLGNoYW5nZURldGVjdGlvbjpqbi5PblB1c2gsc3R5bGVzOlsiQGtleWZyYW1lcyBtYXQtY2hlY2tib3gtZmFkZS1pbi1iYWNrZ3JvdW5kezAle29wYWNpdHk6MH01MCV7b3BhY2l0eToxfX1Aa2V5ZnJhbWVzIG1hdC1jaGVja2JveC1mYWRlLW91dC1iYWNrZ3JvdW5kezAlLDUwJXtvcGFjaXR5OjF9MTAwJXtvcGFjaXR5OjB9fUBrZXlmcmFtZXMgbWF0LWNoZWNrYm94LXVuY2hlY2tlZC1jaGVja2VkLWNoZWNrbWFyay1wYXRoezAlLDUwJXtzdHJva2UtZGFzaG9mZnNldDoyMi45MTAyNTl9NTAle2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMC4xKX0xMDAle3N0cm9rZS1kYXNob2Zmc2V0OjB9fUBrZXlmcmFtZXMgbWF0LWNoZWNrYm94LXVuY2hlY2tlZC1pbmRldGVybWluYXRlLW1peGVkbWFya3swJSw2OC4yJXt0cmFuc2Zvcm06c2NhbGVYKDApfTY4LjIle2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKDAsIDAsIDAsIDEpfTEwMCV7dHJhbnNmb3JtOnNjYWxlWCgxKX19QGtleWZyYW1lcyBtYXQtY2hlY2tib3gtY2hlY2tlZC11bmNoZWNrZWQtY2hlY2ttYXJrLXBhdGh7ZnJvbXthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllcigwLjQsIDAsIDEsIDEpO3N0cm9rZS1kYXNob2Zmc2V0OjB9dG97c3Ryb2tlLWRhc2hvZmZzZXQ6LTIyLjkxMDI1OX19QGtleWZyYW1lcyBtYXQtY2hlY2tib3gtY2hlY2tlZC1pbmRldGVybWluYXRlLWNoZWNrbWFya3tmcm9te2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMC4xKTtvcGFjaXR5OjE7dHJhbnNmb3JtOnJvdGF0ZSgwZGVnKX10b3tvcGFjaXR5OjA7dHJhbnNmb3JtOnJvdGF0ZSg0NWRlZyl9fUBrZXlmcmFtZXMgbWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUtY2hlY2tlZC1jaGVja21hcmt7ZnJvbXthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllcigwLjE0LCAwLCAwLCAxKTtvcGFjaXR5OjA7dHJhbnNmb3JtOnJvdGF0ZSg0NWRlZyl9dG97b3BhY2l0eToxO3RyYW5zZm9ybTpyb3RhdGUoMzYwZGVnKX19QGtleWZyYW1lcyBtYXQtY2hlY2tib3gtY2hlY2tlZC1pbmRldGVybWluYXRlLW1peGVkbWFya3tmcm9te2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMC4xKTtvcGFjaXR5OjA7dHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpfXRve29wYWNpdHk6MTt0cmFuc2Zvcm06cm90YXRlKDBkZWcpfX1Aa2V5ZnJhbWVzIG1hdC1jaGVja2JveC1pbmRldGVybWluYXRlLWNoZWNrZWQtbWl4ZWRtYXJre2Zyb217YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoMC4xNCwgMCwgMCwgMSk7b3BhY2l0eToxO3RyYW5zZm9ybTpyb3RhdGUoMGRlZyl9dG97b3BhY2l0eTowO3RyYW5zZm9ybTpyb3RhdGUoMzE1ZGVnKX19QGtleWZyYW1lcyBtYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS11bmNoZWNrZWQtbWl4ZWRtYXJrezAle2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246bGluZWFyO29wYWNpdHk6MTt0cmFuc2Zvcm06c2NhbGVYKDEpfTMyLjglLDEwMCV7b3BhY2l0eTowO3RyYW5zZm9ybTpzY2FsZVgoMCl9fS5tYXQtY2hlY2tib3gtYmFja2dyb3VuZCwubWF0LWNoZWNrYm94LWZyYW1le3RvcDowO2xlZnQ6MDtyaWdodDowO2JvdHRvbTowO3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6MnB4O2JveC1zaXppbmc6Ym9yZGVyLWJveDtwb2ludGVyLWV2ZW50czpub25lfS5tYXQtY2hlY2tib3h7ZGlzcGxheTppbmxpbmUtYmxvY2s7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kIDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpLGJveC1zaGFkb3cgMjgwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtjdXJzb3I6cG9pbnRlcjstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnR9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlLm1hdC1jaGVja2JveHt0cmFuc2l0aW9uOm5vbmU7YW5pbWF0aW9uOm5vbmV9Lm1hdC1jaGVja2JveCAubWF0LXJpcHBsZS1lbGVtZW50Om5vdCgubWF0LWNoZWNrYm94LXBlcnNpc3RlbnQtcmlwcGxlKXtvcGFjaXR5Oi4xNn0ubWF0LWNoZWNrYm94IC5tYXQtY2hlY2tib3gtcmlwcGxle3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6Y2FsYyg1MCUgLSAyMHB4KTt0b3A6Y2FsYyg1MCUgLSAyMHB4KTtoZWlnaHQ6NDBweDt3aWR0aDo0MHB4O3otaW5kZXg6MTtwb2ludGVyLWV2ZW50czpub25lfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1jaGVja2JveC5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LWNoZWNrYm94LXJpcHBsZXtvdXRsaW5lOnNvbGlkIDNweH0ubWF0LWNoZWNrYm94LWxheW91dHstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7Y3Vyc29yOmluaGVyaXQ7YWxpZ24taXRlbXM6YmFzZWxpbmU7dmVydGljYWwtYWxpZ246bWlkZGxlO2Rpc3BsYXk6aW5saW5lLWZsZXg7d2hpdGUtc3BhY2U6bm93cmFwfS5tYXQtY2hlY2tib3gtbGFiZWx7LXdlYmtpdC11c2VyLXNlbGVjdDphdXRvOy1tb3otdXNlci1zZWxlY3Q6YXV0bzstbXMtdXNlci1zZWxlY3Q6YXV0bzt1c2VyLXNlbGVjdDphdXRvfS5tYXQtY2hlY2tib3gtaW5uZXItY29udGFpbmVye2Rpc3BsYXk6aW5saW5lLWJsb2NrO2hlaWdodDoxNnB4O2xpbmUtaGVpZ2h0OjA7bWFyZ2luOmF1dG87bWFyZ2luLXJpZ2h0OjhweDtvcmRlcjowO3Bvc2l0aW9uOnJlbGF0aXZlO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTt3aGl0ZS1zcGFjZTpub3dyYXA7d2lkdGg6MTZweDtmbGV4LXNocmluazowfVtkaXI9cnRsXSAubWF0LWNoZWNrYm94LWlubmVyLWNvbnRhaW5lcnttYXJnaW4tbGVmdDo4cHg7bWFyZ2luLXJpZ2h0OmF1dG99Lm1hdC1jaGVja2JveC1pbm5lci1jb250YWluZXItbm8tc2lkZS1tYXJnaW57bWFyZ2luLWxlZnQ6MDttYXJnaW4tcmlnaHQ6MH0ubWF0LWNoZWNrYm94LWZyYW1le2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpib3JkZXItY29sb3IgOTBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAwLjEpO2JvcmRlci13aWR0aDoycHg7Ym9yZGVyLXN0eWxlOnNvbGlkfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LWNoZWNrYm94LWZyYW1le3RyYW5zaXRpb246bm9uZX0ubWF0LWNoZWNrYm94LWJhY2tncm91bmR7YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6aW5saW5lLWZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjt0cmFuc2l0aW9uOmJhY2tncm91bmQtY29sb3IgOTBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAwLjEpLG9wYWNpdHkgOTBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAwLjEpOy13ZWJraXQtcHJpbnQtY29sb3ItYWRqdXN0OmV4YWN0O2NvbG9yLWFkanVzdDpleGFjdH0uX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5ke3RyYW5zaXRpb246bm9uZX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtY2hlY2tib3ggLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5ke2JhY2tncm91bmQ6bm9uZX0ubWF0LWNoZWNrYm94LXBlcnNpc3RlbnQtcmlwcGxle2Rpc3BsYXk6YmxvY2s7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTt0cmFuc2Zvcm06bm9uZX0ubWF0LWNoZWNrYm94LWlubmVyLWNvbnRhaW5lcjpob3ZlciAubWF0LWNoZWNrYm94LXBlcnNpc3RlbnQtcmlwcGxle29wYWNpdHk6LjA0fS5tYXQtY2hlY2tib3guY2RrLWtleWJvYXJkLWZvY3VzZWQgLm1hdC1jaGVja2JveC1wZXJzaXN0ZW50LXJpcHBsZXtvcGFjaXR5Oi4xMn0ubWF0LWNoZWNrYm94LXBlcnNpc3RlbnQtcmlwcGxlLC5tYXQtY2hlY2tib3gubWF0LWNoZWNrYm94LWRpc2FibGVkIC5tYXQtY2hlY2tib3gtaW5uZXItY29udGFpbmVyOmhvdmVyIC5tYXQtY2hlY2tib3gtcGVyc2lzdGVudC1yaXBwbGV7b3BhY2l0eTowfUBtZWRpYShob3Zlcjogbm9uZSl7Lm1hdC1jaGVja2JveC1pbm5lci1jb250YWluZXI6aG92ZXIgLm1hdC1jaGVja2JveC1wZXJzaXN0ZW50LXJpcHBsZXtkaXNwbGF5Om5vbmV9fS5tYXQtY2hlY2tib3gtY2hlY2ttYXJre3RvcDowO2xlZnQ6MDtyaWdodDowO2JvdHRvbTowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjEwMCV9Lm1hdC1jaGVja2JveC1jaGVja21hcmstcGF0aHtzdHJva2UtZGFzaG9mZnNldDoyMi45MTAyNTk7c3Ryb2tlLWRhc2hhcnJheToyMi45MTAyNTk7c3Ryb2tlLXdpZHRoOjIuMTMzMzMzMzMzM3B4fS5jZGstaGlnaC1jb250cmFzdC1ibGFjay1vbi13aGl0ZSAubWF0LWNoZWNrYm94LWNoZWNrbWFyay1wYXRoe3N0cm9rZTojMDAwICFpbXBvcnRhbnR9Lm1hdC1jaGVja2JveC1taXhlZG1hcmt7d2lkdGg6Y2FsYygxMDAlIC0gNnB4KTtoZWlnaHQ6MnB4O29wYWNpdHk6MDt0cmFuc2Zvcm06c2NhbGVYKDApIHJvdGF0ZSgwZGVnKTtib3JkZXItcmFkaXVzOjJweH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtY2hlY2tib3gtbWl4ZWRtYXJre2hlaWdodDowO2JvcmRlci10b3A6c29saWQgMnB4O21hcmdpbi10b3A6MnB4fS5tYXQtY2hlY2tib3gtbGFiZWwtYmVmb3JlIC5tYXQtY2hlY2tib3gtaW5uZXItY29udGFpbmVye29yZGVyOjE7bWFyZ2luLWxlZnQ6OHB4O21hcmdpbi1yaWdodDphdXRvfVtkaXI9cnRsXSAubWF0LWNoZWNrYm94LWxhYmVsLWJlZm9yZSAubWF0LWNoZWNrYm94LWlubmVyLWNvbnRhaW5lcnttYXJnaW4tbGVmdDphdXRvO21hcmdpbi1yaWdodDo4cHh9Lm1hdC1jaGVja2JveC1jaGVja2VkIC5tYXQtY2hlY2tib3gtY2hlY2ttYXJre29wYWNpdHk6MX0ubWF0LWNoZWNrYm94LWNoZWNrZWQgLm1hdC1jaGVja2JveC1jaGVja21hcmstcGF0aHtzdHJva2UtZGFzaG9mZnNldDowfS5tYXQtY2hlY2tib3gtY2hlY2tlZCAubWF0LWNoZWNrYm94LW1peGVkbWFya3t0cmFuc2Zvcm06c2NhbGVYKDEpIHJvdGF0ZSgtNDVkZWcpfS5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZSAubWF0LWNoZWNrYm94LWNoZWNrbWFya3tvcGFjaXR5OjA7dHJhbnNmb3JtOnJvdGF0ZSg0NWRlZyl9Lm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlIC5tYXQtY2hlY2tib3gtY2hlY2ttYXJrLXBhdGh7c3Ryb2tlLWRhc2hvZmZzZXQ6MH0ubWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUgLm1hdC1jaGVja2JveC1taXhlZG1hcmt7b3BhY2l0eToxO3RyYW5zZm9ybTpzY2FsZVgoMSkgcm90YXRlKDBkZWcpfS5tYXQtY2hlY2tib3gtdW5jaGVja2VkIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZHtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5tYXQtY2hlY2tib3gtZGlzYWJsZWR7Y3Vyc29yOmRlZmF1bHR9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWNoZWNrYm94LWRpc2FibGVke29wYWNpdHk6LjV9Lm1hdC1jaGVja2JveC1hbmltLXVuY2hlY2tlZC1jaGVja2VkIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZHthbmltYXRpb246MTgwbXMgbGluZWFyIDBtcyBtYXQtY2hlY2tib3gtZmFkZS1pbi1iYWNrZ3JvdW5kfS5tYXQtY2hlY2tib3gtYW5pbS11bmNoZWNrZWQtY2hlY2tlZCAubWF0LWNoZWNrYm94LWNoZWNrbWFyay1wYXRoe2FuaW1hdGlvbjoxODBtcyBsaW5lYXIgMG1zIG1hdC1jaGVja2JveC11bmNoZWNrZWQtY2hlY2tlZC1jaGVja21hcmstcGF0aH0ubWF0LWNoZWNrYm94LWFuaW0tdW5jaGVja2VkLWluZGV0ZXJtaW5hdGUgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5ke2FuaW1hdGlvbjoxODBtcyBsaW5lYXIgMG1zIG1hdC1jaGVja2JveC1mYWRlLWluLWJhY2tncm91bmR9Lm1hdC1jaGVja2JveC1hbmltLXVuY2hlY2tlZC1pbmRldGVybWluYXRlIC5tYXQtY2hlY2tib3gtbWl4ZWRtYXJre2FuaW1hdGlvbjo5MG1zIGxpbmVhciAwbXMgbWF0LWNoZWNrYm94LXVuY2hlY2tlZC1pbmRldGVybWluYXRlLW1peGVkbWFya30ubWF0LWNoZWNrYm94LWFuaW0tY2hlY2tlZC11bmNoZWNrZWQgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5ke2FuaW1hdGlvbjoxODBtcyBsaW5lYXIgMG1zIG1hdC1jaGVja2JveC1mYWRlLW91dC1iYWNrZ3JvdW5kfS5tYXQtY2hlY2tib3gtYW5pbS1jaGVja2VkLXVuY2hlY2tlZCAubWF0LWNoZWNrYm94LWNoZWNrbWFyay1wYXRoe2FuaW1hdGlvbjo5MG1zIGxpbmVhciAwbXMgbWF0LWNoZWNrYm94LWNoZWNrZWQtdW5jaGVja2VkLWNoZWNrbWFyay1wYXRofS5tYXQtY2hlY2tib3gtYW5pbS1jaGVja2VkLWluZGV0ZXJtaW5hdGUgLm1hdC1jaGVja2JveC1jaGVja21hcmt7YW5pbWF0aW9uOjkwbXMgbGluZWFyIDBtcyBtYXQtY2hlY2tib3gtY2hlY2tlZC1pbmRldGVybWluYXRlLWNoZWNrbWFya30ubWF0LWNoZWNrYm94LWFuaW0tY2hlY2tlZC1pbmRldGVybWluYXRlIC5tYXQtY2hlY2tib3gtbWl4ZWRtYXJre2FuaW1hdGlvbjo5MG1zIGxpbmVhciAwbXMgbWF0LWNoZWNrYm94LWNoZWNrZWQtaW5kZXRlcm1pbmF0ZS1taXhlZG1hcmt9Lm1hdC1jaGVja2JveC1hbmltLWluZGV0ZXJtaW5hdGUtY2hlY2tlZCAubWF0LWNoZWNrYm94LWNoZWNrbWFya3thbmltYXRpb246NTAwbXMgbGluZWFyIDBtcyBtYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS1jaGVja2VkLWNoZWNrbWFya30ubWF0LWNoZWNrYm94LWFuaW0taW5kZXRlcm1pbmF0ZS1jaGVja2VkIC5tYXQtY2hlY2tib3gtbWl4ZWRtYXJre2FuaW1hdGlvbjo1MDBtcyBsaW5lYXIgMG1zIG1hdC1jaGVja2JveC1pbmRldGVybWluYXRlLWNoZWNrZWQtbWl4ZWRtYXJrfS5tYXQtY2hlY2tib3gtYW5pbS1pbmRldGVybWluYXRlLXVuY2hlY2tlZCAubWF0LWNoZWNrYm94LWJhY2tncm91bmR7YW5pbWF0aW9uOjE4MG1zIGxpbmVhciAwbXMgbWF0LWNoZWNrYm94LWZhZGUtb3V0LWJhY2tncm91bmR9Lm1hdC1jaGVja2JveC1hbmltLWluZGV0ZXJtaW5hdGUtdW5jaGVja2VkIC5tYXQtY2hlY2tib3gtbWl4ZWRtYXJre2FuaW1hdGlvbjozMDBtcyBsaW5lYXIgMG1zIG1hdC1jaGVja2JveC1pbmRldGVybWluYXRlLXVuY2hlY2tlZC1taXhlZG1hcmt9Lm1hdC1jaGVja2JveC1pbnB1dHtib3R0b206MDtsZWZ0OjUwJX1cbiJdfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6S2h9LHt0eXBlOk9ifSx7dHlwZTpmRn0se3R5cGU6bUN9LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTokYSxhcmdzOlsidGFiaW5kZXgiXX1dfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W2NrXX1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W2RaXX1dfV19KSx7YXJpYUxhYmVsOlt7dHlwZTpSXyxhcmdzOlsiYXJpYS1sYWJlbCJdfV0sYXJpYUxhYmVsbGVkYnk6W3t0eXBlOlJfLGFyZ3M6WyJhcmlhLWxhYmVsbGVkYnkiXX1dLGlkOlt7dHlwZTpSX31dLGxhYmVsUG9zaXRpb246W3t0eXBlOlJffV0sbmFtZTpbe3R5cGU6Ul99XSxjaGFuZ2U6W3t0eXBlOkVffV0saW5kZXRlcm1pbmF0ZUNoYW5nZTpbe3R5cGU6RV99XSxyZXF1aXJlZDpbe3R5cGU6Ul99XSxjaGVja2VkOlt7dHlwZTpSX31dLGRpc2FibGVkOlt7dHlwZTpSX31dLGluZGV0ZXJtaW5hdGU6W3t0eXBlOlJffV0sYXJpYURlc2NyaWJlZGJ5Olt7dHlwZTpSXyxhcmdzOlsiYXJpYS1kZXNjcmliZWRieSJdfV0sdmFsdWU6W3t0eXBlOlJffV0sX2lucHV0RWxlbWVudDpbe3R5cGU6YXIsYXJnczpbImlucHV0Il19XSxyaXBwbGU6W3t0eXBlOmFyLGFyZ3M6W21MXX1dfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCB5Wj17cHJvdmlkZTpFVSx1c2VFeGlzdGluZzokZSgoKCk9Pl9aKSksbXVsdGk6ITB9O2NsYXNzIF9aIGV4dGVuZHMgVkd7fV9aLsm1ZmFjPShmdW5jdGlvbigpe2xldCB0O3JldHVybiBmdW5jdGlvbiBlKG4pe3JldHVybih0fHwodD1VYShfWikpKShufHxfWil9fSkoKSxfWi7JtWRpcj1obyh7dHlwZTpfWixzZWxlY3RvcnM6W1sibWF0LWNoZWNrYm94IiwicmVxdWlyZWQiLCIiLCJmb3JtQ29udHJvbE5hbWUiLCIiXSxbIm1hdC1jaGVja2JveCIsInJlcXVpcmVkIiwiIiwiZm9ybUNvbnRyb2wiLCIiXSxbIm1hdC1jaGVja2JveCIsInJlcXVpcmVkIiwiIiwibmdNb2RlbCIsIiJdXSxmZWF0dXJlczpbamgoW3laXSksUXBdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihfWixbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJtYXQtY2hlY2tib3hbcmVxdWlyZWRdW2Zvcm1Db250cm9sTmFtZV0sXG4gICAgICAgICAgICAgbWF0LWNoZWNrYm94W3JlcXVpcmVkXVtmb3JtQ29udHJvbF0sIG1hdC1jaGVja2JveFtyZXF1aXJlZF1bbmdNb2RlbF0iLHByb3ZpZGVyczpbeVpdfV19XSxudWxsLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgQ1p7fUNaLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxDWil9LENaLsm1bW9kPWZvKHt0eXBlOkNafSksQ1ouybVpbmo9RG4oe30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoQ1osW3t0eXBlOkxfLGFyZ3M6W3tleHBvcnRzOltfWl0sZGVjbGFyYXRpb25zOltfWl19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhDWix7ZGVjbGFyYXRpb25zOltfWl0sZXhwb3J0czpbX1pdfSk7Y2xhc3MgTVp7fU1aLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxNWil9LE1aLsm1bW9kPWZvKHt0eXBlOk1afSksTVouybVpbmo9RG4oe2ltcG9ydHM6W1tmTCxORix3SCxDWl0sTkYsQ1pdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihNWixbe3R5cGU6TF8sYXJnczpbe2ltcG9ydHM6W2ZMLE5GLHdILENaXSxleHBvcnRzOltiWixORixDWl0sZGVjbGFyYXRpb25zOltiWl19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhNWix7ZGVjbGFyYXRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuW2JaXX0saW1wb3J0czpmdW5jdGlvbigpe3JldHVybltmTCxORix3SCxDWl19LGV4cG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bYlosTkYsQ1pdfX0pO2NvbnN0IHZaPWJIKHtwYXNzaXZlOiEwfSk7Y2xhc3MgeFp7Y29uc3RydWN0b3IodCxlKXt0aGlzLl9wbGF0Zm9ybT10LHRoaXMuX25nWm9uZT1lLHRoaXMuX21vbml0b3JlZEVsZW1lbnRzPW5ldyBNYXB9bW9uaXRvcih0KXtpZighdGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyKXJldHVybiBkdDtjb25zdCBlPXJIKHQpLG49dGhpcy5fbW9uaXRvcmVkRWxlbWVudHMuZ2V0KGUpO2lmKG4pcmV0dXJuIG4uc3ViamVjdDtjb25zdCBvPW5ldyBCLGk9ImNkay10ZXh0LWZpZWxkLWF1dG9maWxsZWQiLGE9dD0+eyJjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCIhPT10LmFuaW1hdGlvbk5hbWV8fGUuY2xhc3NMaXN0LmNvbnRhaW5zKGkpPyJjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQiPT09dC5hbmltYXRpb25OYW1lJiZlLmNsYXNzTGlzdC5jb250YWlucyhpKSYmKGUuY2xhc3NMaXN0LnJlbW92ZShpKSx0aGlzLl9uZ1pvbmUucnVuKCgoKT0+by5uZXh0KHt0YXJnZXQ6dC50YXJnZXQsaXNBdXRvZmlsbGVkOiExfSkpKSk6KGUuY2xhc3NMaXN0LmFkZChpKSx0aGlzLl9uZ1pvbmUucnVuKCgoKT0+by5uZXh0KHt0YXJnZXQ6dC50YXJnZXQsaXNBdXRvZmlsbGVkOiEwfSkpKSl9O3JldHVybiB0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCgpPT57ZS5hZGRFdmVudExpc3RlbmVyKCJhbmltYXRpb25zdGFydCIsYSx2WiksZS5jbGFzc0xpc3QuYWRkKCJjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWQiKX0pKSx0aGlzLl9tb25pdG9yZWRFbGVtZW50cy5zZXQoZSx7c3ViamVjdDpvLHVubGlzdGVuOigpPT57ZS5yZW1vdmVFdmVudExpc3RlbmVyKCJhbmltYXRpb25zdGFydCIsYSx2Wil9fSksb31zdG9wTW9uaXRvcmluZyh0KXtjb25zdCBlPXJIKHQpLG49dGhpcy5fbW9uaXRvcmVkRWxlbWVudHMuZ2V0KGUpO24mJihuLnVubGlzdGVuKCksbi5zdWJqZWN0LmNvbXBsZXRlKCksZS5jbGFzc0xpc3QucmVtb3ZlKCJjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWQiKSxlLmNsYXNzTGlzdC5yZW1vdmUoImNkay10ZXh0LWZpZWxkLWF1dG9maWxsZWQiKSx0aGlzLl9tb25pdG9yZWRFbGVtZW50cy5kZWxldGUoZSkpfW5nT25EZXN0cm95KCl7dGhpcy5fbW9uaXRvcmVkRWxlbWVudHMuZm9yRWFjaCgoKHQsZSk9PnRoaXMuc3RvcE1vbml0b3JpbmcoZSkpKX19eFouybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHhaKShUcihjSCksVHIobUMpKX0seFouybVwcm92PVNuKHtmYWN0b3J5OmZ1bmN0aW9uIHQoKXtyZXR1cm4gbmV3IHhaKFRyKGNIKSxUcihtQykpfSx0b2tlbjp4Wixwcm92aWRlZEluOiJyb290In0pLHhaLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6Y0h9LHt0eXBlOm1DfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih4Wixbe3R5cGU6VW0sYXJnczpbe3Byb3ZpZGVkSW46InJvb3QifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6Y0h9LHt0eXBlOm1DfV19KSxudWxsKTtjbGFzcyBPWntjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuX2VsZW1lbnRSZWY9dCx0aGlzLl9hdXRvZmlsbE1vbml0b3I9ZSx0aGlzLmNka0F1dG9maWxsPW5ldyBTeX1uZ09uSW5pdCgpe3RoaXMuX2F1dG9maWxsTW9uaXRvci5tb25pdG9yKHRoaXMuX2VsZW1lbnRSZWYpLnN1YnNjcmliZSgodD0+dGhpcy5jZGtBdXRvZmlsbC5lbWl0KHQpKSl9bmdPbkRlc3Ryb3koKXt0aGlzLl9hdXRvZmlsbE1vbml0b3Iuc3RvcE1vbml0b3JpbmcodGhpcy5fZWxlbWVudFJlZil9fU9aLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxPWikoZ2YoS2gpLGdmKHhaKSl9LE9aLsm1ZGlyPWhvKHt0eXBlOk9aLHNlbGVjdG9yczpbWyIiLCJjZGtBdXRvZmlsbCIsIiJdXSxvdXRwdXRzOntjZGtBdXRvZmlsbDoiY2RrQXV0b2ZpbGwifX0pLE9aLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6S2h9LHt0eXBlOnhafV0sT1oucHJvcERlY29yYXRvcnM9e2Nka0F1dG9maWxsOlt7dHlwZTpFX31dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKE9aLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6IltjZGtBdXRvZmlsbF0ifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6S2h9LHt0eXBlOnhafV19KSx7Y2RrQXV0b2ZpbGw6W3t0eXBlOkVffV19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIFBae2NvbnN0cnVjdG9yKHQsZSxuLG8pe3RoaXMuX2VsZW1lbnRSZWY9dCx0aGlzLl9wbGF0Zm9ybT1lLHRoaXMuX25nWm9uZT1uLHRoaXMuX2Rlc3Ryb3llZD1uZXcgQix0aGlzLl9lbmFibGVkPSEwLHRoaXMuX3ByZXZpb3VzTWluUm93cz0tMSx0aGlzLl9pc1ZpZXdJbml0ZWQ9ITEsdGhpcy5faGFuZGxlRm9jdXNFdmVudD10PT57dGhpcy5faGFzRm9jdXM9ImZvY3VzIj09PXQudHlwZX0sdGhpcy5fZG9jdW1lbnQ9byx0aGlzLl90ZXh0YXJlYUVsZW1lbnQ9dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50fWdldCBtaW5Sb3dzKCl7cmV0dXJuIHRoaXMuX21pblJvd3N9c2V0IG1pblJvd3ModCl7dGhpcy5fbWluUm93cz1uSCh0KSx0aGlzLl9zZXRNaW5IZWlnaHQoKX1nZXQgbWF4Um93cygpe3JldHVybiB0aGlzLl9tYXhSb3dzfXNldCBtYXhSb3dzKHQpe3RoaXMuX21heFJvd3M9bkgodCksdGhpcy5fc2V0TWF4SGVpZ2h0KCl9Z2V0IGVuYWJsZWQoKXtyZXR1cm4gdGhpcy5fZW5hYmxlZH1zZXQgZW5hYmxlZCh0KXt0PWVIKHQpLHRoaXMuX2VuYWJsZWQhPT10JiYoKHRoaXMuX2VuYWJsZWQ9dCk/dGhpcy5yZXNpemVUb0ZpdENvbnRlbnQoITApOnRoaXMucmVzZXQoKSl9Z2V0IHBsYWNlaG9sZGVyKCl7cmV0dXJuIHRoaXMuX3RleHRhcmVhRWxlbWVudC5wbGFjZWhvbGRlcn1zZXQgcGxhY2Vob2xkZXIodCl7dGhpcy5fY2FjaGVkUGxhY2Vob2xkZXJIZWlnaHQ9dm9pZCAwLHRoaXMuX3RleHRhcmVhRWxlbWVudC5wbGFjZWhvbGRlcj10LHRoaXMuX2NhY2hlVGV4dGFyZWFQbGFjZWhvbGRlckhlaWdodCgpfV9zZXRNaW5IZWlnaHQoKXtjb25zdCB0PXRoaXMubWluUm93cyYmdGhpcy5fY2FjaGVkTGluZUhlaWdodD90aGlzLm1pblJvd3MqdGhpcy5fY2FjaGVkTGluZUhlaWdodCsicHgiOm51bGw7dCYmKHRoaXMuX3RleHRhcmVhRWxlbWVudC5zdHlsZS5taW5IZWlnaHQ9dCl9X3NldE1heEhlaWdodCgpe2NvbnN0IHQ9dGhpcy5tYXhSb3dzJiZ0aGlzLl9jYWNoZWRMaW5lSGVpZ2h0P3RoaXMubWF4Um93cyp0aGlzLl9jYWNoZWRMaW5lSGVpZ2h0KyJweCI6bnVsbDt0JiYodGhpcy5fdGV4dGFyZWFFbGVtZW50LnN0eWxlLm1heEhlaWdodD10KX1uZ0FmdGVyVmlld0luaXQoKXt0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXImJih0aGlzLl9pbml0aWFsSGVpZ2h0PXRoaXMuX3RleHRhcmVhRWxlbWVudC5zdHlsZS5oZWlnaHQsdGhpcy5yZXNpemVUb0ZpdENvbnRlbnQoKSx0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCgpPT57bGUodGhpcy5fZ2V0V2luZG93KCksInJlc2l6ZSIpLnBpcGUoZ2UoMTYpLGplKHRoaXMuX2Rlc3Ryb3llZCkpLnN1YnNjcmliZSgoKCk9PnRoaXMucmVzaXplVG9GaXRDb250ZW50KCEwKSkpLHRoaXMuX3RleHRhcmVhRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJmb2N1cyIsdGhpcy5faGFuZGxlRm9jdXNFdmVudCksdGhpcy5fdGV4dGFyZWFFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImJsdXIiLHRoaXMuX2hhbmRsZUZvY3VzRXZlbnQpfSkpLHRoaXMuX2lzVmlld0luaXRlZD0hMCx0aGlzLnJlc2l6ZVRvRml0Q29udGVudCghMCkpfW5nT25EZXN0cm95KCl7dGhpcy5fdGV4dGFyZWFFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoImZvY3VzIix0aGlzLl9oYW5kbGVGb2N1c0V2ZW50KSx0aGlzLl90ZXh0YXJlYUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYmx1ciIsdGhpcy5faGFuZGxlRm9jdXNFdmVudCksdGhpcy5fZGVzdHJveWVkLm5leHQoKSx0aGlzLl9kZXN0cm95ZWQuY29tcGxldGUoKX1fY2FjaGVUZXh0YXJlYUxpbmVIZWlnaHQoKXtpZih0aGlzLl9jYWNoZWRMaW5lSGVpZ2h0KXJldHVybjtsZXQgdD10aGlzLl90ZXh0YXJlYUVsZW1lbnQuY2xvbmVOb2RlKCExKTt0LnJvd3M9MSx0LnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIsdC5zdHlsZS52aXNpYmlsaXR5PSJoaWRkZW4iLHQuc3R5bGUuYm9yZGVyPSJub25lIix0LnN0eWxlLnBhZGRpbmc9IjAiLHQuc3R5bGUuaGVpZ2h0PSIiLHQuc3R5bGUubWluSGVpZ2h0PSIiLHQuc3R5bGUubWF4SGVpZ2h0PSIiLHQuc3R5bGUub3ZlcmZsb3c9ImhpZGRlbiIsdGhpcy5fdGV4dGFyZWFFbGVtZW50LnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQodCksdGhpcy5fY2FjaGVkTGluZUhlaWdodD10LmNsaWVudEhlaWdodCx0aGlzLl90ZXh0YXJlYUVsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0KSx0aGlzLl9zZXRNaW5IZWlnaHQoKSx0aGlzLl9zZXRNYXhIZWlnaHQoKX1fbWVhc3VyZVNjcm9sbEhlaWdodCgpe2NvbnN0IHQ9dGhpcy5fdGV4dGFyZWFFbGVtZW50LGU9dC5zdHlsZS5tYXJnaW5Cb3R0b218fCIiLG49dGhpcy5fcGxhdGZvcm0uRklSRUZPWCxvPW4mJnRoaXMuX2hhc0ZvY3VzLGk9bj8iY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94IjoiY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZyI7byYmKHQuc3R5bGUubWFyZ2luQm90dG9tPWAke3QuY2xpZW50SGVpZ2h0fXB4YCksdC5jbGFzc0xpc3QuYWRkKGkpO2NvbnN0IGE9dC5zY3JvbGxIZWlnaHQtNDtyZXR1cm4gdC5jbGFzc0xpc3QucmVtb3ZlKGkpLG8mJih0LnN0eWxlLm1hcmdpbkJvdHRvbT1lKSxhfV9jYWNoZVRleHRhcmVhUGxhY2Vob2xkZXJIZWlnaHQoKXtpZighdGhpcy5faXNWaWV3SW5pdGVkfHxudWxsIT10aGlzLl9jYWNoZWRQbGFjZWhvbGRlckhlaWdodClyZXR1cm47aWYoIXRoaXMucGxhY2Vob2xkZXIpcmV0dXJuIHZvaWQodGhpcy5fY2FjaGVkUGxhY2Vob2xkZXJIZWlnaHQ9MCk7Y29uc3QgdD10aGlzLl90ZXh0YXJlYUVsZW1lbnQudmFsdWU7dGhpcy5fdGV4dGFyZWFFbGVtZW50LnZhbHVlPXRoaXMuX3RleHRhcmVhRWxlbWVudC5wbGFjZWhvbGRlcix0aGlzLl9jYWNoZWRQbGFjZWhvbGRlckhlaWdodD10aGlzLl9tZWFzdXJlU2Nyb2xsSGVpZ2h0KCksdGhpcy5fdGV4dGFyZWFFbGVtZW50LnZhbHVlPXR9bmdEb0NoZWNrKCl7dGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyJiZ0aGlzLnJlc2l6ZVRvRml0Q29udGVudCgpfXJlc2l6ZVRvRml0Q29udGVudCh0PSExKXtpZighdGhpcy5fZW5hYmxlZClyZXR1cm47aWYodGhpcy5fY2FjaGVUZXh0YXJlYUxpbmVIZWlnaHQoKSx0aGlzLl9jYWNoZVRleHRhcmVhUGxhY2Vob2xkZXJIZWlnaHQoKSwhdGhpcy5fY2FjaGVkTGluZUhlaWdodClyZXR1cm47Y29uc3QgZT10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsbj1lLnZhbHVlO2lmKCF0JiZ0aGlzLl9taW5Sb3dzPT09dGhpcy5fcHJldmlvdXNNaW5Sb3dzJiZuPT09dGhpcy5fcHJldmlvdXNWYWx1ZSlyZXR1cm47Y29uc3Qgbz10aGlzLl9tZWFzdXJlU2Nyb2xsSGVpZ2h0KCksaT1NYXRoLm1heChvLHRoaXMuX2NhY2hlZFBsYWNlaG9sZGVySGVpZ2h0fHwwKTtlLnN0eWxlLmhlaWdodD1gJHtpfXB4YCx0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCgpPT57InVuZGVmaW5lZCIhPXR5cGVvZiByZXF1ZXN0QW5pbWF0aW9uRnJhbWU/cmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgoKT0+dGhpcy5fc2Nyb2xsVG9DYXJldFBvc2l0aW9uKGUpKSk6c2V0VGltZW91dCgoKCk9PnRoaXMuX3Njcm9sbFRvQ2FyZXRQb3NpdGlvbihlKSkpfSkpLHRoaXMuX3ByZXZpb3VzVmFsdWU9bix0aGlzLl9wcmV2aW91c01pblJvd3M9dGhpcy5fbWluUm93c31yZXNldCgpe3ZvaWQgMCE9PXRoaXMuX2luaXRpYWxIZWlnaHQmJih0aGlzLl90ZXh0YXJlYUVsZW1lbnQuc3R5bGUuaGVpZ2h0PXRoaXMuX2luaXRpYWxIZWlnaHQpfV9ub29wSW5wdXRIYW5kbGVyKCl7fV9nZXREb2N1bWVudCgpe3JldHVybiB0aGlzLl9kb2N1bWVudHx8ZG9jdW1lbnR9X2dldFdpbmRvdygpe3JldHVybiB0aGlzLl9nZXREb2N1bWVudCgpLmRlZmF1bHRWaWV3fHx3aW5kb3d9X3Njcm9sbFRvQ2FyZXRQb3NpdGlvbih0KXtjb25zdHtzZWxlY3Rpb25TdGFydDplLHNlbGVjdGlvbkVuZDpufT10OyF0aGlzLl9kZXN0cm95ZWQuaXNTdG9wcGVkJiZ0aGlzLl9oYXNGb2N1cyYmdC5zZXRTZWxlY3Rpb25SYW5nZShlLG4pfX1QWi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8UFopKGdmKEtoKSxnZihjSCksZ2YobUMpLGdmKHNNLDgpKX0sUFouybVkaXI9aG8oe3R5cGU6UFosc2VsZWN0b3JzOltbInRleHRhcmVhIiwiY2RrVGV4dGFyZWFBdXRvc2l6ZSIsIiJdXSxob3N0QXR0cnM6WyJyb3dzIiwiMSIsMSwiY2RrLXRleHRhcmVhLWF1dG9zaXplIl0saG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJlJmKCJpbnB1dCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5fbm9vcElucHV0SGFuZGxlcigpfSkpfSxpbnB1dHM6e21pblJvd3M6WyJjZGtBdXRvc2l6ZU1pblJvd3MiLCJtaW5Sb3dzIl0sbWF4Um93czpbImNka0F1dG9zaXplTWF4Um93cyIsIm1heFJvd3MiXSxlbmFibGVkOlsiY2RrVGV4dGFyZWFBdXRvc2l6ZSIsImVuYWJsZWQiXSxwbGFjZWhvbGRlcjoicGxhY2Vob2xkZXIifSxleHBvcnRBczpbImNka1RleHRhcmVhQXV0b3NpemUiXX0pLFBaLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6S2h9LHt0eXBlOmNIfSx7dHlwZTptQ30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltzTV19XX1dLFBaLnByb3BEZWNvcmF0b3JzPXttaW5Sb3dzOlt7dHlwZTpSXyxhcmdzOlsiY2RrQXV0b3NpemVNaW5Sb3dzIl19XSxtYXhSb3dzOlt7dHlwZTpSXyxhcmdzOlsiY2RrQXV0b3NpemVNYXhSb3dzIl19XSxlbmFibGVkOlt7dHlwZTpSXyxhcmdzOlsiY2RrVGV4dGFyZWFBdXRvc2l6ZSJdfV0scGxhY2Vob2xkZXI6W3t0eXBlOlJffV0sX25vb3BJbnB1dEhhbmRsZXI6W3t0eXBlOlRfLGFyZ3M6WyJpbnB1dCJdfV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoUFosW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoidGV4dGFyZWFbY2RrVGV4dGFyZWFBdXRvc2l6ZV0iLGV4cG9ydEFzOiJjZGtUZXh0YXJlYUF1dG9zaXplIixob3N0OntjbGFzczoiY2RrLXRleHRhcmVhLWF1dG9zaXplIixyb3dzOiIxIn19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpLaH0se3R5cGU6Y0h9LHt0eXBlOm1DfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W3NNXX1dfV19KSx7bWluUm93czpbe3R5cGU6Ul8sYXJnczpbImNka0F1dG9zaXplTWluUm93cyJdfV0sbWF4Um93czpbe3R5cGU6Ul8sYXJnczpbImNka0F1dG9zaXplTWF4Um93cyJdfV0sZW5hYmxlZDpbe3R5cGU6Ul8sYXJnczpbImNka1RleHRhcmVhQXV0b3NpemUiXX1dLHBsYWNlaG9sZGVyOlt7dHlwZTpSX31dLF9ub29wSW5wdXRIYW5kbGVyOlt7dHlwZTpUXyxhcmdzOlsiaW5wdXQiXX1dfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyB3Wnt9d1ouybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHdaKX0sd1ouybVtb2Q9Zm8oe3R5cGU6d1p9KSx3Wi7JtWluaj1Ebih7aW1wb3J0czpbW2RIXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHdaLFt7dHlwZTpMXyxhcmdzOlt7ZGVjbGFyYXRpb25zOltPWixQWl0saW1wb3J0czpbZEhdLGV4cG9ydHM6W09aLFBaXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKHdaLHtkZWNsYXJhdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm5bT1osUFpdfSxpbXBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW2RIXX0sZXhwb3J0czpmdW5jdGlvbigpe3JldHVybltPWixQWl19fSk7Y2xhc3Mga1ogZXh0ZW5kcyBQWntnZXQgbWF0QXV0b3NpemVNaW5Sb3dzKCl7cmV0dXJuIHRoaXMubWluUm93c31zZXQgbWF0QXV0b3NpemVNaW5Sb3dzKHQpe3RoaXMubWluUm93cz10fWdldCBtYXRBdXRvc2l6ZU1heFJvd3MoKXtyZXR1cm4gdGhpcy5tYXhSb3dzfXNldCBtYXRBdXRvc2l6ZU1heFJvd3ModCl7dGhpcy5tYXhSb3dzPXR9Z2V0IG1hdEF1dG9zaXplKCl7cmV0dXJuIHRoaXMuZW5hYmxlZH1zZXQgbWF0QXV0b3NpemUodCl7dGhpcy5lbmFibGVkPXR9Z2V0IG1hdFRleHRhcmVhQXV0b3NpemUoKXtyZXR1cm4gdGhpcy5lbmFibGVkfXNldCBtYXRUZXh0YXJlYUF1dG9zaXplKHQpe3RoaXMuZW5hYmxlZD10fX1rWi7JtWZhYz0oZnVuY3Rpb24oKXtsZXQgdDtyZXR1cm4gZnVuY3Rpb24gZShuKXtyZXR1cm4odHx8KHQ9VWEoa1opKSkobnx8a1opfX0pKCksa1ouybVkaXI9aG8oe3R5cGU6a1osc2VsZWN0b3JzOltbInRleHRhcmVhIiwibWF0LWF1dG9zaXplIiwiIl0sWyJ0ZXh0YXJlYSIsIm1hdFRleHRhcmVhQXV0b3NpemUiLCIiXV0saG9zdEF0dHJzOlsicm93cyIsIjEiLDEsImNkay10ZXh0YXJlYS1hdXRvc2l6ZSIsIm1hdC1hdXRvc2l6ZSJdLGlucHV0czp7Y2RrQXV0b3NpemVNaW5Sb3dzOiJjZGtBdXRvc2l6ZU1pblJvd3MiLGNka0F1dG9zaXplTWF4Um93czoiY2RrQXV0b3NpemVNYXhSb3dzIixtYXRBdXRvc2l6ZU1pblJvd3M6Im1hdEF1dG9zaXplTWluUm93cyIsbWF0QXV0b3NpemVNYXhSb3dzOiJtYXRBdXRvc2l6ZU1heFJvd3MiLG1hdEF1dG9zaXplOlsibWF0LWF1dG9zaXplIiwibWF0QXV0b3NpemUiXSxtYXRUZXh0YXJlYUF1dG9zaXplOiJtYXRUZXh0YXJlYUF1dG9zaXplIn0sZXhwb3J0QXM6WyJtYXRUZXh0YXJlYUF1dG9zaXplIl0sZmVhdHVyZXM6W1FwXX0pLGtaLnByb3BEZWNvcmF0b3JzPXttYXRBdXRvc2l6ZU1pblJvd3M6W3t0eXBlOlJffV0sbWF0QXV0b3NpemVNYXhSb3dzOlt7dHlwZTpSX31dLG1hdEF1dG9zaXplOlt7dHlwZTpSXyxhcmdzOlsibWF0LWF1dG9zaXplIl19XSxtYXRUZXh0YXJlYUF1dG9zaXplOlt7dHlwZTpSX31dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGtaLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6InRleHRhcmVhW21hdC1hdXRvc2l6ZV0sIHRleHRhcmVhW21hdFRleHRhcmVhQXV0b3NpemVdIixleHBvcnRBczoibWF0VGV4dGFyZWFBdXRvc2l6ZSIsaW5wdXRzOlsiY2RrQXV0b3NpemVNaW5Sb3dzIiwiY2RrQXV0b3NpemVNYXhSb3dzIl0saG9zdDp7Y2xhc3M6ImNkay10ZXh0YXJlYS1hdXRvc2l6ZSBtYXQtYXV0b3NpemUiLHJvd3M6IjEifX1dfV0sbnVsbCx7bWF0QXV0b3NpemVNaW5Sb3dzOlt7dHlwZTpSX31dLG1hdEF1dG9zaXplTWF4Um93czpbe3R5cGU6Ul99XSxtYXRBdXRvc2l6ZTpbe3R5cGU6Ul8sYXJnczpbIm1hdC1hdXRvc2l6ZSJdfV0sbWF0VGV4dGFyZWFBdXRvc2l6ZTpbe3R5cGU6Ul99XX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgU1o9bmV3IGVyKCJNQVRfSU5QVVRfVkFMVUVfQUNDRVNTT1IiKSxEWj1bImJ1dHRvbiIsImNoZWNrYm94IiwiZmlsZSIsImhpZGRlbiIsImltYWdlIiwicmFkaW8iLCJyYW5nZSIsInJlc2V0Iiwic3VibWl0Il07Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2xldCBSWj0wO2NvbnN0IEVaPUxGKGNsYXNze2NvbnN0cnVjdG9yKHQsZSxuLG8pe3RoaXMuX2RlZmF1bHRFcnJvclN0YXRlTWF0Y2hlcj10LHRoaXMuX3BhcmVudEZvcm09ZSx0aGlzLl9wYXJlbnRGb3JtR3JvdXA9bix0aGlzLm5nQ29udHJvbD1vfX0pO2NsYXNzIEFaIGV4dGVuZHMgRVp7Y29uc3RydWN0b3IodCxlLG4sbyxpLGEscixzLGwsYyl7c3VwZXIoYSxvLGksbiksdGhpcy5fZWxlbWVudFJlZj10LHRoaXMuX3BsYXRmb3JtPWUsdGhpcy5fYXV0b2ZpbGxNb25pdG9yPXMsdGhpcy5fZm9ybUZpZWxkPWMsdGhpcy5fdWlkPSJtYXQtaW5wdXQtIitSWisrLHRoaXMuZm9jdXNlZD0hMSx0aGlzLnN0YXRlQ2hhbmdlcz1uZXcgQix0aGlzLmNvbnRyb2xUeXBlPSJtYXQtaW5wdXQiLHRoaXMuYXV0b2ZpbGxlZD0hMSx0aGlzLl9kaXNhYmxlZD0hMSx0aGlzLl9yZXF1aXJlZD0hMSx0aGlzLl90eXBlPSJ0ZXh0Iix0aGlzLl9yZWFkb25seT0hMSx0aGlzLl9uZXZlckVtcHR5SW5wdXRUeXBlcz1bImRhdGUiLCJkYXRldGltZSIsImRhdGV0aW1lLWxvY2FsIiwibW9udGgiLCJ0aW1lIiwid2VlayJdLmZpbHRlcigodD0+bUgoKS5oYXModCkpKTtjb25zdCBkPXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxwPWQubm9kZU5hbWUudG9Mb3dlckNhc2UoKTt0aGlzLl9pbnB1dFZhbHVlQWNjZXNzb3I9cnx8ZCx0aGlzLl9wcmV2aW91c05hdGl2ZVZhbHVlPXRoaXMudmFsdWUsdGhpcy5pZD10aGlzLmlkLGUuSU9TJiZsLnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+e3QubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJrZXl1cCIsKHQ9Pntjb25zdCBlPXQudGFyZ2V0O2UudmFsdWV8fDAhPT1lLnNlbGVjdGlvblN0YXJ0fHwwIT09ZS5zZWxlY3Rpb25FbmR8fChlLnNldFNlbGVjdGlvblJhbmdlKDEsMSksZS5zZXRTZWxlY3Rpb25SYW5nZSgwLDApKX0pKX0pKSx0aGlzLl9pc1NlcnZlcj0hdGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyLHRoaXMuX2lzTmF0aXZlU2VsZWN0PSJzZWxlY3QiPT09cCx0aGlzLl9pc1RleHRhcmVhPSJ0ZXh0YXJlYSI9PT1wLHRoaXMuX2lzSW5Gb3JtRmllbGQ9ISFjLHRoaXMuX2lzTmF0aXZlU2VsZWN0JiYodGhpcy5jb250cm9sVHlwZT1kLm11bHRpcGxlPyJtYXQtbmF0aXZlLXNlbGVjdC1tdWx0aXBsZSI6Im1hdC1uYXRpdmUtc2VsZWN0Iil9Z2V0IGRpc2FibGVkKCl7cmV0dXJuIHRoaXMubmdDb250cm9sJiZudWxsIT09dGhpcy5uZ0NvbnRyb2wuZGlzYWJsZWQ/dGhpcy5uZ0NvbnRyb2wuZGlzYWJsZWQ6dGhpcy5fZGlzYWJsZWR9c2V0IGRpc2FibGVkKHQpe3RoaXMuX2Rpc2FibGVkPWVIKHQpLHRoaXMuZm9jdXNlZCYmKHRoaXMuZm9jdXNlZD0hMSx0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCkpfWdldCBpZCgpe3JldHVybiB0aGlzLl9pZH1zZXQgaWQodCl7dGhpcy5faWQ9dHx8dGhpcy5fdWlkfWdldCByZXF1aXJlZCgpe3JldHVybiB0aGlzLl9yZXF1aXJlZH1zZXQgcmVxdWlyZWQodCl7dGhpcy5fcmVxdWlyZWQ9ZUgodCl9Z2V0IHR5cGUoKXtyZXR1cm4gdGhpcy5fdHlwZX1zZXQgdHlwZSh0KXt0aGlzLl90eXBlPXR8fCJ0ZXh0Iix0aGlzLl92YWxpZGF0ZVR5cGUoKSwhdGhpcy5faXNUZXh0YXJlYSYmbUgoKS5oYXModGhpcy5fdHlwZSkmJih0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQudHlwZT10aGlzLl90eXBlKX1nZXQgdmFsdWUoKXtyZXR1cm4gdGhpcy5faW5wdXRWYWx1ZUFjY2Vzc29yLnZhbHVlfXNldCB2YWx1ZSh0KXt0IT09dGhpcy52YWx1ZSYmKHRoaXMuX2lucHV0VmFsdWVBY2Nlc3Nvci52YWx1ZT10LHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKSl9Z2V0IHJlYWRvbmx5KCl7cmV0dXJuIHRoaXMuX3JlYWRvbmx5fXNldCByZWFkb25seSh0KXt0aGlzLl9yZWFkb25seT1lSCh0KX1uZ0FmdGVyVmlld0luaXQoKXt0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXImJnRoaXMuX2F1dG9maWxsTW9uaXRvci5tb25pdG9yKHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCkuc3Vic2NyaWJlKCh0PT57dGhpcy5hdXRvZmlsbGVkPXQuaXNBdXRvZmlsbGVkLHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKX0pKX1uZ09uQ2hhbmdlcygpe3RoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKX1uZ09uRGVzdHJveSgpe3RoaXMuc3RhdGVDaGFuZ2VzLmNvbXBsZXRlKCksdGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyJiZ0aGlzLl9hdXRvZmlsbE1vbml0b3Iuc3RvcE1vbml0b3JpbmcodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KX1uZ0RvQ2hlY2soKXt0aGlzLm5nQ29udHJvbCYmdGhpcy51cGRhdGVFcnJvclN0YXRlKCksdGhpcy5fZGlydHlDaGVja05hdGl2ZVZhbHVlKCksdGhpcy5fZGlydHlDaGVja1BsYWNlaG9sZGVyKCl9Zm9jdXModCl7dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKHQpfV9mb2N1c0NoYW5nZWQodCl7dCE9PXRoaXMuZm9jdXNlZCYmKHRoaXMuZm9jdXNlZD10LHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKSl9X29uSW5wdXQoKXt9X2RpcnR5Q2hlY2tQbGFjZWhvbGRlcigpe3ZhciB0LGU7Y29uc3Qgbj0obnVsbD09PShlPW51bGw9PT0odD10aGlzLl9mb3JtRmllbGQpfHx2b2lkIDA9PT10P3ZvaWQgMDp0Ll9oaWRlQ29udHJvbFBsYWNlaG9sZGVyKXx8dm9pZCAwPT09ZT92b2lkIDA6ZS5jYWxsKHQpKT9udWxsOnRoaXMucGxhY2Vob2xkZXI7aWYobiE9PXRoaXMuX3ByZXZpb3VzUGxhY2Vob2xkZXIpe2NvbnN0IHQ9dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O3RoaXMuX3ByZXZpb3VzUGxhY2Vob2xkZXI9bixuP3Quc2V0QXR0cmlidXRlKCJwbGFjZWhvbGRlciIsbik6dC5yZW1vdmVBdHRyaWJ1dGUoInBsYWNlaG9sZGVyIil9fV9kaXJ0eUNoZWNrTmF0aXZlVmFsdWUoKXtjb25zdCB0PXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC52YWx1ZTt0aGlzLl9wcmV2aW91c05hdGl2ZVZhbHVlIT09dCYmKHRoaXMuX3ByZXZpb3VzTmF0aXZlVmFsdWU9dCx0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCkpfV92YWxpZGF0ZVR5cGUoKXtpZihEWi5pbmRleE9mKHRoaXMuX3R5cGUpPi0xJiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkpCi8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwp0aHJvdyhmdW5jdGlvbiB0KGUpe3JldHVybiBFcnJvcihgSW5wdXQgdHlwZSAiJHtlfSIgaXNuJ3Qgc3VwcG9ydGVkIGJ5IG1hdElucHV0LmApfSkodGhpcy5fdHlwZSl9X2lzTmV2ZXJFbXB0eSgpe3JldHVybiB0aGlzLl9uZXZlckVtcHR5SW5wdXRUeXBlcy5pbmRleE9mKHRoaXMuX3R5cGUpPi0xfV9pc0JhZElucHV0KCl7bGV0IHQ9dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnZhbGlkaXR5O3JldHVybiB0JiZ0LmJhZElucHV0fWdldCBlbXB0eSgpe3JldHVybiEodGhpcy5faXNOZXZlckVtcHR5KCl8fHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC52YWx1ZXx8dGhpcy5faXNCYWRJbnB1dCgpfHx0aGlzLmF1dG9maWxsZWQpfWdldCBzaG91bGRMYWJlbEZsb2F0KCl7aWYodGhpcy5faXNOYXRpdmVTZWxlY3Qpe2NvbnN0IHQ9dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LGU9dC5vcHRpb25zWzBdO3JldHVybiB0aGlzLmZvY3VzZWR8fHQubXVsdGlwbGV8fCF0aGlzLmVtcHR5fHwhISh0LnNlbGVjdGVkSW5kZXg+LTEmJmUmJmUubGFiZWwpfXJldHVybiB0aGlzLmZvY3VzZWR8fCF0aGlzLmVtcHR5fXNldERlc2NyaWJlZEJ5SWRzKHQpe3QubGVuZ3RoP3RoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoImFyaWEtZGVzY3JpYmVkYnkiLHQuam9pbigiICIpKTp0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCJhcmlhLWRlc2NyaWJlZGJ5Iil9b25Db250YWluZXJDbGljaygpe3RoaXMuZm9jdXNlZHx8dGhpcy5mb2N1cygpfX1BWi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8QVopKGdmKEtoKSxnZihjSCksZ2YobFcsMTApLGdmKFhXLDgpLGdmKGhHLDgpLGdmKG5MKSxnZihTWiwxMCksZ2YoeFopLGdmKG1DKSxnZih5VSw4KSl9LEFaLsm1ZGlyPWhvKHt0eXBlOkFaLHNlbGVjdG9yczpbWyJpbnB1dCIsIm1hdElucHV0IiwiIl0sWyJ0ZXh0YXJlYSIsIm1hdElucHV0IiwiIl0sWyJzZWxlY3QiLCJtYXROYXRpdmVDb250cm9sIiwiIl0sWyJpbnB1dCIsIm1hdE5hdGl2ZUNvbnRyb2wiLCIiXSxbInRleHRhcmVhIiwibWF0TmF0aXZlQ29udHJvbCIsIiJdXSxob3N0QXR0cnM6WzEsIm1hdC1pbnB1dC1lbGVtZW50IiwibWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbCJdLGhvc3RWYXJzOjksaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJlJmKCJmb2N1cyIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5fZm9jdXNDaGFuZ2VkKCEwKX0pKSgiYmx1ciIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5fZm9jdXNDaGFuZ2VkKCExKX0pKSgiaW5wdXQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4uX29uSW5wdXQoKX0pKSwyJmUmJihjZygiZGlzYWJsZWQiLG4uZGlzYWJsZWQpKCJyZXF1aXJlZCIsbi5yZXF1aXJlZCkseW0oImlkIixuLmlkKSgiZGF0YS1wbGFjZWhvbGRlciIsbi5wbGFjZWhvbGRlcikoInJlYWRvbmx5IixuLnJlYWRvbmx5JiYhbi5faXNOYXRpdmVTZWxlY3R8fG51bGwpKCJhcmlhLWludmFsaWQiLG4uZW1wdHkmJm4ucmVxdWlyZWQ/bnVsbDpuLmVycm9yU3RhdGUpKCJhcmlhLXJlcXVpcmVkIixuLnJlcXVpcmVkKSxjdSgibWF0LWlucHV0LXNlcnZlciIsbi5faXNTZXJ2ZXIpKX0saW5wdXRzOntpZDoiaWQiLGRpc2FibGVkOiJkaXNhYmxlZCIscmVxdWlyZWQ6InJlcXVpcmVkIix0eXBlOiJ0eXBlIix2YWx1ZToidmFsdWUiLHJlYWRvbmx5OiJyZWFkb25seSIscGxhY2Vob2xkZXI6InBsYWNlaG9sZGVyIixlcnJvclN0YXRlTWF0Y2hlcjoiZXJyb3JTdGF0ZU1hdGNoZXIiLHVzZXJBcmlhRGVzY3JpYmVkQnk6WyJhcmlhLWRlc2NyaWJlZGJ5IiwidXNlckFyaWFEZXNjcmliZWRCeSJdfSxleHBvcnRBczpbIm1hdElucHV0Il0sZmVhdHVyZXM6W2poKFt7cHJvdmlkZTppVSx1c2VFeGlzdGluZzpBWn1dKSxRcCxxb119KSxBWi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOktofSx7dHlwZTpjSH0se3R5cGU6bFcsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOlZyfV19LHt0eXBlOlhXLGRlY29yYXRvcnM6W3t0eXBlOkJyfV19LHt0eXBlOmhHLGRlY29yYXRvcnM6W3t0eXBlOkJyfV19LHt0eXBlOm5MfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOlZyfSx7dHlwZTpMcixhcmdzOltTWl19XX0se3R5cGU6eFp9LHt0eXBlOm1DfSx7dHlwZTpfVSxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbeVVdfV19XSxBWi5wcm9wRGVjb3JhdG9ycz17ZGlzYWJsZWQ6W3t0eXBlOlJffV0saWQ6W3t0eXBlOlJffV0scGxhY2Vob2xkZXI6W3t0eXBlOlJffV0scmVxdWlyZWQ6W3t0eXBlOlJffV0sdHlwZTpbe3R5cGU6Ul99XSxlcnJvclN0YXRlTWF0Y2hlcjpbe3R5cGU6Ul99XSx1c2VyQXJpYURlc2NyaWJlZEJ5Olt7dHlwZTpSXyxhcmdzOlsiYXJpYS1kZXNjcmliZWRieSJdfV0sdmFsdWU6W3t0eXBlOlJffV0scmVhZG9ubHk6W3t0eXBlOlJffV0sX2ZvY3VzQ2hhbmdlZDpbe3R5cGU6VF8sYXJnczpbImZvY3VzIixbInRydWUiXV19LHt0eXBlOlRfLGFyZ3M6WyJibHVyIixbImZhbHNlIl1dfV0sX29uSW5wdXQ6W3t0eXBlOlRfLGFyZ3M6WyJpbnB1dCJdfV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoQVosW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiaW5wdXRbbWF0SW5wdXRdLCB0ZXh0YXJlYVttYXRJbnB1dF0sIHNlbGVjdFttYXROYXRpdmVDb250cm9sXSxcbiAgICAgIGlucHV0W21hdE5hdGl2ZUNvbnRyb2xdLCB0ZXh0YXJlYVttYXROYXRpdmVDb250cm9sXSIsZXhwb3J0QXM6Im1hdElucHV0Iixob3N0OntjbGFzczoibWF0LWlucHV0LWVsZW1lbnQgbWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbCIsIltjbGFzcy5tYXQtaW5wdXQtc2VydmVyXSI6Il9pc1NlcnZlciIsIlthdHRyLmlkXSI6ImlkIiwiW2F0dHIuZGF0YS1wbGFjZWhvbGRlcl0iOiJwbGFjZWhvbGRlciIsIltkaXNhYmxlZF0iOiJkaXNhYmxlZCIsIltyZXF1aXJlZF0iOiJyZXF1aXJlZCIsIlthdHRyLnJlYWRvbmx5XSI6InJlYWRvbmx5ICYmICFfaXNOYXRpdmVTZWxlY3QgfHwgbnVsbCIsIlthdHRyLmFyaWEtaW52YWxpZF0iOiIoZW1wdHkgJiYgcmVxdWlyZWQpID8gbnVsbCA6IGVycm9yU3RhdGUiLCJbYXR0ci5hcmlhLXJlcXVpcmVkXSI6InJlcXVpcmVkIn0scHJvdmlkZXJzOlt7cHJvdmlkZTppVSx1c2VFeGlzdGluZzpBWn1dfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6S2h9LHt0eXBlOmNIfSx7dHlwZTpsVyxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6VnJ9XX0se3R5cGU6WFcsZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX0se3R5cGU6aEcsZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX0se3R5cGU6bkx9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6VnJ9LHt0eXBlOkxyLGFyZ3M6W1NaXX1dfSx7dHlwZTp4Wn0se3R5cGU6bUN9LHt0eXBlOl9VLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOlt5VV19XX1dfSkse2lkOlt7dHlwZTpSX31dLGRpc2FibGVkOlt7dHlwZTpSX31dLHJlcXVpcmVkOlt7dHlwZTpSX31dLHR5cGU6W3t0eXBlOlJffV0sdmFsdWU6W3t0eXBlOlJffV0scmVhZG9ubHk6W3t0eXBlOlJffV0sX2ZvY3VzQ2hhbmdlZDpbe3R5cGU6VF8sYXJnczpbImZvY3VzIixbInRydWUiXV19LHt0eXBlOlRfLGFyZ3M6WyJibHVyIixbImZhbHNlIl1dfV0sX29uSW5wdXQ6W3t0eXBlOlRfLGFyZ3M6WyJpbnB1dCJdfV0scGxhY2Vob2xkZXI6W3t0eXBlOlJffV0sZXJyb3JTdGF0ZU1hdGNoZXI6W3t0eXBlOlJffV0sdXNlckFyaWFEZXNjcmliZWRCeTpbe3R5cGU6Ul8sYXJnczpbImFyaWEtZGVzY3JpYmVkYnkiXX1dfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBUWnt9ZnVuY3Rpb24gTloodCxlKXtpZigxJnQmJihDZigwLCJtYXQtZXJyb3IiKSxQdSgxKSxNZigpKSwyJnQpe2NvbnN0IHQ9emYoKTtEYygxKSxrdSgiIFJlbG9hZCBwZXJpb2QgaGFzIHRvIGJlIG1pbmltdW0gb2YgIix0Lk1JTl9SRUxPQURfUEVSSU9EX0lOX1MsIiBzZWNvbmRzLiAiKX19ZnVuY3Rpb24geloodCxlKXsxJnQmJihDZigwLCJtYXQtZXJyb3IiKSxQdSgxLCIgUGFnZSBzaXplIGhhcyB0byBiZSBhIHBvc2l0aXZlIGludGVnZXIuICIpLE1mKCkpfVRaLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxUWil9LFRaLsm1bW9kPWZvKHt0eXBlOlRafSksVFouybVpbmo9RG4oe3Byb3ZpZGVyczpbbkxdLGltcG9ydHM6W1t3WixDVSxORl0sd1osQ1VdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihUWixbe3R5cGU6TF8sYXJnczpbe2RlY2xhcmF0aW9uczpbQVosa1pdLGltcG9ydHM6W3daLENVLE5GXSxleHBvcnRzOlt3WixDVSxBWixrWl0scHJvdmlkZXJzOltuTF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhUWix7ZGVjbGFyYXRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuW0FaLGtaXX0saW1wb3J0czpmdW5jdGlvbigpe3JldHVyblt3WixDVSxORl19LGV4cG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bd1osQ1UsQVosa1pdfX0pO2NsYXNzIElae2NvbnN0cnVjdG9yKCl7dGhpcy5yZWxvYWRUb2dnbGVkPW5ldyBTeSx0aGlzLnJlbG9hZFBlcmlvZEluTXNDaGFuZ2VkPW5ldyBTeSx0aGlzLnBhZ2VTaXplQ2hhbmdlZD1uZXcgU3ksdGhpcy5NSU5fUkVMT0FEX1BFUklPRF9JTl9TPTMwLHRoaXMucmVsb2FkUGVyaW9kQ29udHJvbD1uZXcgV1codGhpcy5NSU5fUkVMT0FEX1BFUklPRF9JTl9TLFtOVS5yZXF1aXJlZCxOVS5taW4odGhpcy5NSU5fUkVMT0FEX1BFUklPRF9JTl9TKV0pLHRoaXMucGFnaW5hdGlvbkNvbnRyb2w9bmV3IFdXKDEsW05VLnJlcXVpcmVkLE5VLm1pbigxKSx0PT57Y29uc3QgZT1OdW1iZXIodC52YWx1ZSk7cmV0dXJuIE1hdGgucm91bmQoZSk9PT10LnZhbHVlP251bGw6e2ludGVnZXI6e3ZhbHVlOnQudmFsdWV9fX1dKSx0aGlzLm5nVW5zdWJzY3JpYmU9bmV3IEJ9bmdPbkluaXQoKXt0aGlzLnJlbG9hZFBlcmlvZENvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoamUodGhpcy5uZ1Vuc3Vic2NyaWJlKSxDZSg1MDApLHVlKCgoKT0+dGhpcy5yZWxvYWRQZXJpb2RDb250cm9sLnZhbGlkKSkpLnN1YnNjcmliZSgoKCk9PntpZighdGhpcy5yZWxvYWRQZXJpb2RDb250cm9sLnZhbGlkKXJldHVybjt0aGlzLnJlbG9hZFBlcmlvZEluTXNDaGFuZ2VkLmVtaXQoMWUzKnRoaXMucmVsb2FkUGVyaW9kQ29udHJvbC52YWx1ZSl9KSksdGhpcy5wYWdpbmF0aW9uQ29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShqZSh0aGlzLm5nVW5zdWJzY3JpYmUpLENlKDUwMCksdWUoKCgpPT50aGlzLnBhZ2luYXRpb25Db250cm9sLnZhbGlkKSkpLnN1YnNjcmliZSgoKCk9Pnt0aGlzLnBhZ2VTaXplQ2hhbmdlZC5lbWl0KHRoaXMucGFnaW5hdGlvbkNvbnRyb2wudmFsdWUpfSkpfW5nT25EZXN0cm95KCl7dGhpcy5uZ1Vuc3Vic2NyaWJlLm5leHQoKSx0aGlzLm5nVW5zdWJzY3JpYmUuY29tcGxldGUoKX1uZ09uQ2hhbmdlcyh0KXtpZih0LnJlbG9hZFBlcmlvZEluTXMpe2NvbnN0IGU9dC5yZWxvYWRQZXJpb2RJbk1zO2UucHJldmlvdXNWYWx1ZSE9PWUuY3VycmVudFZhbHVlJiZ0aGlzLnJlbG9hZFBlcmlvZENvbnRyb2wuc2V0VmFsdWUoZS5jdXJyZW50VmFsdWUvMWUzKX1pZih0LnJlbG9hZEVuYWJsZWQpe3QucmVsb2FkRW5hYmxlZC5jdXJyZW50VmFsdWU/dGhpcy5yZWxvYWRQZXJpb2RDb250cm9sLmVuYWJsZSgpOnRoaXMucmVsb2FkUGVyaW9kQ29udHJvbC5kaXNhYmxlKCl9aWYodC5wYWdlU2l6ZSl7Y29uc3QgZT10LnBhZ2VTaXplO2UucHJldmlvdXNWYWx1ZSE9PWUuY3VycmVudFZhbHVlJiZ0aGlzLnBhZ2luYXRpb25Db250cm9sLnNldFZhbHVlKGUuY3VycmVudFZhbHVlKX19b25SZWxvYWRUb2dnbGUoKXt0aGlzLnJlbG9hZFRvZ2dsZWQuZW1pdCgpfX1JWi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8SVopfSxJWi7JtWNtcD1zbyh7dHlwZTpJWixzZWxlY3RvcnM6W1sic2V0dGluZ3MtZGlhbG9nLWNvbXBvbmVudCJdXSxpbnB1dHM6e3JlbG9hZEVuYWJsZWQ6InJlbG9hZEVuYWJsZWQiLHJlbG9hZFBlcmlvZEluTXM6InJlbG9hZFBlcmlvZEluTXMiLHBhZ2VTaXplOiJwYWdlU2l6ZSJ9LG91dHB1dHM6e3JlbG9hZFRvZ2dsZWQ6InJlbG9hZFRvZ2dsZWQiLHJlbG9hZFBlcmlvZEluTXNDaGFuZ2VkOiJyZWxvYWRQZXJpb2RJbk1zQ2hhbmdlZCIscGFnZVNpemVDaGFuZ2VkOiJwYWdlU2l6ZUNoYW5nZWQifSxmZWF0dXJlczpbcW9dLGRlY2xzOjE0LHZhcnM6NSxjb25zdHM6W1sxLCJyZWxvYWQtdG9nZ2xlIl0sWzMsImNoZWNrZWQiLCJjaGFuZ2UiXSxbIm1hdElucHV0IiwiIiwidHlwZSIsIm51bWJlciIsInBsYWNlaG9sZGVyIiwiUmVsb2FkIFBlcmlvZCIsMSwicmVsb2FkLXBlcmlvZCIsMywiZm9ybUNvbnRyb2wiXSxbNCwibmdJZiJdLFsibWF0SW5wdXQiLCIiLCJ0eXBlIiwibnVtYmVyIiwicGxhY2Vob2xkZXIiLCJQYWdpbmF0aW9uIExpbWl0IiwxLCJwYWdlLXNpemUiLDMsImZvcm1Db250cm9sIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihDZigwLCJoMyIpLFB1KDEsIlNldHRpbmdzIiksTWYoKSxDZigyLCJkaXYiKSxDZigzLCJkaXYiLDApLENmKDQsIm1hdC1jaGVja2JveCIsMSksUmYoImNoYW5nZSIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vblJlbG9hZFRvZ2dsZSgpfSkpLFB1KDUsIlJlbG9hZCBkYXRhIiksTWYoKSxNZigpLENmKDYsImRpdiIpLENmKDcsIm1hdC1mb3JtLWZpZWxkIiksdmYoOCwiaW5wdXQiLDIpLE1mKCksSG0oOSxOWiwyLDEsIm1hdC1lcnJvciIsMyksTWYoKSxNZigpLENmKDEwLCJkaXYiKSxDZigxMSwibWF0LWZvcm0tZmllbGQiKSx2ZigxMiwiaW5wdXQiLDQpLE1mKCksSG0oMTMselosMiwwLCJtYXQtZXJyb3IiLDMpLE1mKCkpLDImZSYmKERjKDQpLGJmKCJjaGVja2VkIixuLnJlbG9hZEVuYWJsZWQpLERjKDQpLGJmKCJmb3JtQ29udHJvbCIsbi5yZWxvYWRQZXJpb2RDb250cm9sKSxEYygxKSxiZigibmdJZiIsbi5yZWxvYWRQZXJpb2RDb250cm9sLmhhc0Vycm9yKCJtaW4iKXx8bi5yZWxvYWRQZXJpb2RDb250cm9sLmhhc0Vycm9yKCJyZXF1aXJlZCIpKSxEYygzKSxiZigiZm9ybUNvbnRyb2wiLG4ucGFnaW5hdGlvbkNvbnRyb2wpLERjKDEpLGJmKCJuZ0lmIixuLnBhZ2luYXRpb25Db250cm9sLmludmFsaWQpKX0sZGlyZWN0aXZlczpbYlosX1UsQVosYUcsU1UsbVcsdUcsUHYsblVdLHN0eWxlczpbIltfbmdob3N0LSVDT01QJV0ge1xuICBmb250LXNpemU6IDE1cHg7XG59XG5cbltfbmdob3N0LSVDT01QJV0gICAgPiBkaXZbX25nY29udGVudC0lQ09NUCVdIHtcbiAgbWFyZ2luOiAxMHB4IDA7XG59XG5cbltfbmdob3N0LSVDT01QJV0gICAgPiBbX25nY29udGVudC0lQ09NUCVdOmZpcnN0LWNoaWxkIHtcbiAgbWFyZ2luLXRvcDogMDtcbn1cblxuW19uZ2hvc3QtJUNPTVAlXSAgICA+IFtfbmdjb250ZW50LSVDT01QJV06bGFzdC1jaGlsZCB7XG4gIG1hcmdpbi1ib3R0b206IDA7XG59XG5cbmgzW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGZvbnQtc2l6ZTogMjBweDtcbn1cblxuLnJlbG9hZC10b2dnbGVbX25nY29udGVudC0lQ09NUCVdIHtcbiAgbWFyZ2luLWJvdHRvbTogMTBweDtcbn0iXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoSVosW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3Rvcjoic2V0dGluZ3MtZGlhbG9nLWNvbXBvbmVudCIsdGVtcGxhdGVVcmw6InNldHRpbmdzX2RpYWxvZ19jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsiLi9zZXR0aW5nc19kaWFsb2dfY29tcG9uZW50LmNzcyJdfV19XSxudWxsLHtyZWxvYWRFbmFibGVkOlt7dHlwZTpSX31dLHJlbG9hZFBlcmlvZEluTXM6W3t0eXBlOlJffV0scGFnZVNpemU6W3t0eXBlOlJffV0scmVsb2FkVG9nZ2xlZDpbe3R5cGU6RV99XSxyZWxvYWRQZXJpb2RJbk1zQ2hhbmdlZDpbe3R5cGU6RV99XSxwYWdlU2l6ZUNoYW5nZWQ6W3t0eXBlOkVffV19KTtjbGFzcyBIWntjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5yZWxvYWRFbmFibGVkJD10aGlzLnN0b3JlLnNlbGVjdCh1SSksdGhpcy5yZWxvYWRQZXJpb2RJbk1zJD10aGlzLnN0b3JlLnNlbGVjdChnSSksdGhpcy5wYWdlU2l6ZSQ9dGhpcy5zdG9yZS5zZWxlY3QoaEkpfW9uUmVsb2FkVG9nZ2xlZCgpe3RoaXMuc3RvcmUuZGlzcGF0Y2goc0koKSl9b25SZWxvYWRQZXJpb2RJbk1zQ2hhbmdlZCh0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKGxJKHtwZXJpb2RJbk1zOnR9KSl9b25QYWdlU2l6ZUNoYW5nZWQodCl7dGhpcy5zdG9yZS5kaXNwYXRjaChjSSh7c2l6ZTp0fSkpfX1IWi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8SFopKGdmKGlTKSl9LEhaLsm1Y21wPXNvKHt0eXBlOkhaLHNlbGVjdG9yczpbWyJzZXR0aW5ncy1kaWFsb2ciXV0sZGVjbHM6NCx2YXJzOjksY29uc3RzOltbMywicmVsb2FkRW5hYmxlZCIsInJlbG9hZFBlcmlvZEluTXMiLCJwYWdlU2l6ZSIsInJlbG9hZFRvZ2dsZWQiLCJyZWxvYWRQZXJpb2RJbk1zQ2hhbmdlZCIsInBhZ2VTaXplQ2hhbmdlZCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoQ2YoMCwic2V0dGluZ3MtZGlhbG9nLWNvbXBvbmVudCIsMCksUmYoInJlbG9hZFRvZ2dsZWQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25SZWxvYWRUb2dnbGVkKCl9KSkoInJlbG9hZFBlcmlvZEluTXNDaGFuZ2VkIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vblJlbG9hZFBlcmlvZEluTXNDaGFuZ2VkKGUpfSkpKCJwYWdlU2l6ZUNoYW5nZWQiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uUGFnZVNpemVDaGFuZ2VkKGUpfSkpLF95KDEsImFzeW5jIiksX3koMiwiYXN5bmMiKSxfeSgzLCJhc3luYyIpLE1mKCkpLDImZSYmYmYoInJlbG9hZEVuYWJsZWQiLEN5KDEsMyxuLnJlbG9hZEVuYWJsZWQkKSkoInJlbG9hZFBlcmlvZEluTXMiLEN5KDIsNSxuLnJlbG9hZFBlcmlvZEluTXMkKSkoInBhZ2VTaXplIixDeSgzLDcsbi5wYWdlU2l6ZSQpKX0sZGlyZWN0aXZlczpbSVpdLHBpcGVzOltWdl0sZW5jYXBzdWxhdGlvbjoyfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihIWixbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJzZXR0aW5ncy1kaWFsb2ciLHRlbXBsYXRlOidcbiAgICA8c2V0dGluZ3MtZGlhbG9nLWNvbXBvbmVudFxuICAgICAgW3JlbG9hZEVuYWJsZWRdPSJyZWxvYWRFbmFibGVkJCB8IGFzeW5jIlxuICAgICAgW3JlbG9hZFBlcmlvZEluTXNdPSJyZWxvYWRQZXJpb2RJbk1zJCB8IGFzeW5jIlxuICAgICAgW3BhZ2VTaXplXT0icGFnZVNpemUkIHwgYXN5bmMiXG4gICAgICAocmVsb2FkVG9nZ2xlZCk9Im9uUmVsb2FkVG9nZ2xlZCgpIlxuICAgICAgKHJlbG9hZFBlcmlvZEluTXNDaGFuZ2VkKT0ib25SZWxvYWRQZXJpb2RJbk1zQ2hhbmdlZCgkZXZlbnQpIlxuICAgICAgKHBhZ2VTaXplQ2hhbmdlZCk9Im9uUGFnZVNpemVDaGFuZ2VkKCRldmVudCkiXG4gICAgPjwvc2V0dGluZ3MtZGlhbG9nLWNvbXBvbmVudD5cbiAgJ31dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmlTfV19KSxudWxsKTtjbGFzcyBGWntjb25zdHJ1Y3Rvcih0KXt0aGlzLmRpYWxvZz10fWlzQnV0dG9uRGlzYWJsZWQoKXtyZXR1cm4gdGhpcy5zZXR0aW5nc0xvYWRTdGF0ZT09PVVFLk5PVF9MT0FERUR8fHRoaXMuc2V0dGluZ3NMb2FkU3RhdGU9PT1VRS5MT0FESU5HfW9wZW5EaWFsb2coKXt0aGlzLmRpYWxvZy5vcGVuKEhaLHt3aWR0aDoiNDAwcHgifSl9fUZaLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxGWikoZ2YoWFkpKX0sRlouybVjbXA9c28oe3R5cGU6Rlosc2VsZWN0b3JzOltbInNldHRpbmdzLWJ1dHRvbi1jb21wb25lbnQiXV0saW5wdXRzOntzZXR0aW5nc0xvYWRTdGF0ZToic2V0dGluZ3NMb2FkU3RhdGUifSxkZWNsczoyLHZhcnM6MSxjb25zdHM6W1sibWF0LWljb24tYnV0dG9uIiwiIiwzLCJkaXNhYmxlZCIsImNsaWNrIl0sWyJzdmdJY29uIiwic2V0dGluZ3NfMjRweCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoQ2YoMCwiYnV0dG9uIiwwKSxSZigiY2xpY2siLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub3BlbkRpYWxvZygpfSkpLHZmKDEsIm1hdC1pY29uIiwxKSxNZigpKSwyJmUmJmJmKCJkaXNhYmxlZCIsbi5pc0J1dHRvbkRpc2FibGVkKCkpfSxkaXJlY3RpdmVzOltOTCxNcV0sZW5jYXBzdWxhdGlvbjoyfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihGWixbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJzZXR0aW5ncy1idXR0b24tY29tcG9uZW50Iix0ZW1wbGF0ZTonXG4gICAgPGJ1dHRvblxuICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICBbZGlzYWJsZWRdPSJpc0J1dHRvbkRpc2FibGVkKCkiXG4gICAgICAoY2xpY2spPSJvcGVuRGlhbG9nKCkiXG4gICAgPlxuICAgICAgPG1hdC1pY29uIHN2Z0ljb249InNldHRpbmdzXzI0cHgiPjwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG4gICd9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpYWX1dfSkse3NldHRpbmdzTG9hZFN0YXRlOlt7dHlwZTpSX31dfSk7Y2xhc3MgTFp7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMuc2V0dGluZ3NMb2FkU3RhdGUkPXRoaXMuc3RvcmUuc2VsZWN0KGZJKX19TFouybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fExaKShnZihpUykpfSxMWi7JtWNtcD1zbyh7dHlwZTpMWixzZWxlY3RvcnM6W1sic2V0dGluZ3MtYnV0dG9uIl1dLGRlY2xzOjIsdmFyczozLGNvbnN0czpbWzMsInNldHRpbmdzTG9hZFN0YXRlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJih2ZigwLCJzZXR0aW5ncy1idXR0b24tY29tcG9uZW50IiwwKSxfeSgxLCJhc3luYyIpKSwyJmUmJmJmKCJzZXR0aW5nc0xvYWRTdGF0ZSIsQ3koMSwxLG4uc2V0dGluZ3NMb2FkU3RhdGUkKSl9LGRpcmVjdGl2ZXM6W0ZaXSxwaXBlczpbVnZdLGVuY2Fwc3VsYXRpb246Mn0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoTFosW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3Rvcjoic2V0dGluZ3MtYnV0dG9uIix0ZW1wbGF0ZTonXG4gICAgPHNldHRpbmdzLWJ1dHRvbi1jb21wb25lbnRcbiAgICAgIFtzZXR0aW5nc0xvYWRTdGF0ZV09InNldHRpbmdzTG9hZFN0YXRlJCB8IGFzeW5jIlxuICAgID48L3NldHRpbmdzLWJ1dHRvbi1jb21wb25lbnQ+XG4gICd9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTppU31dfSksbnVsbCk7Y2xhc3MgQlp7fUJaLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxCWil9LEJaLsm1Y21wPXNvKHt0eXBlOkJaLHNlbGVjdG9yczpbWyJhcHAtaGVhZGVyIl1dLGRlY2xzOjEwLHZhcnM6MCxjb25zdHM6W1sxLCJicmFuZCJdLFsxLCJwbHVnaW5zIl0sWyJtYXQtaWNvbi1idXR0b24iLCIiLCJocmVmIiwiaHR0cHM6Ly9naXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29yYm9hcmQvYmxvYi9tYXN0ZXIvUkVBRE1FLm1kIiwicmVsIiwibm9vcGVuZXIgbm9yZWZlcnJlciIsInRhcmdldCIsIl9ibGFuayIsImFyaWEtbGFiZWwiLCJIZWxwIiwxLCJyZWFkbWUiXSxbInN2Z0ljb24iLCJoZWxwX291dGxpbmVfMjRweCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoQ2YoMCwibWF0LXRvb2xiYXIiKSxDZigxLCJzcGFuIiwwKSxQdSgyLCJUZW5zb3JCb2FyZCIpLE1mKCksdmYoMywicGx1Z2luLXNlbGVjdG9yIiwxKSx2Zig0LCJ0YmRldi11cGxvYWQtYnV0dG9uIiksdmYoNSwiYXBwLWhlYWRlci1kYXJrLW1vZGUtdG9nZ2xlIiksdmYoNiwiYXBwLWhlYWRlci1yZWxvYWQiKSx2Zig3LCJzZXR0aW5ncy1idXR0b24iKSxDZig4LCJhIiwyKSx2Zig5LCJtYXQtaWNvbiIsMyksTWYoKSxNZigpKX0sZGlyZWN0aXZlczpbalYsVFksU3EsZVosb1osTFosekwsTXFdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgdHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfW1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpjZW50ZXI7Y29sb3I6I2ZmZjtkaXNwbGF5OmZsZXg7aGVpZ2h0OjY0cHg7b3ZlcmZsb3c6aGlkZGVuO3dpZHRoOjEwMCV9dGJkZXYtdXBsb2FkLWJ1dHRvbi5zaG93bltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgOHB4IDAgMTZweH0uYnJhbmRbX25nY29udGVudC0lQ09NUCVdLCAucmVhZG1lW19uZ2NvbnRlbnQtJUNPTVAlXSwgYXBwLWhlYWRlci1yZWxvYWRbX25nY29udGVudC0lQ09NUCVdLCBzZXR0aW5ncy1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZsZXg6MCAwIGF1dG99LmJyYW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtsZXR0ZXItc3BhY2luZzotMC4wMjVlbTttYXJnaW4tbGVmdDoxMHB4O3RleHQtcmVuZGVyaW5nOm9wdGltaXplTGVnaWJpbGl0eX0ucGx1Z2luc1tfbmdjb250ZW50LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleDtmbGV4OjEgMSBhdXRvO2ZvbnQtc2l6ZToxNHB4O2hlaWdodDoxMDAlO292ZXJmbG93OmhpZGRlbn0nXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoQlosW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoiYXBwLWhlYWRlciIsdGVtcGxhdGU6J1xuICAgIDxtYXQtdG9vbGJhcj5cbiAgICAgIDxzcGFuIGNsYXNzPSJicmFuZCI+VGVuc29yQm9hcmQ8L3NwYW4+XG4gICAgICA8cGx1Z2luLXNlbGVjdG9yIGNsYXNzPSJwbHVnaW5zIj48L3BsdWdpbi1zZWxlY3Rvcj5cbiAgICAgIDx0YmRldi11cGxvYWQtYnV0dG9uPjwvdGJkZXYtdXBsb2FkLWJ1dHRvbj5cbiAgICAgIDxhcHAtaGVhZGVyLWRhcmstbW9kZS10b2dnbGU+PC9hcHAtaGVhZGVyLWRhcmstbW9kZS10b2dnbGU+XG4gICAgICA8YXBwLWhlYWRlci1yZWxvYWQ+PC9hcHAtaGVhZGVyLXJlbG9hZD5cbiAgICAgIDxzZXR0aW5ncy1idXR0b24+PC9zZXR0aW5ncy1idXR0b24+XG4gICAgICA8YVxuICAgICAgICBjbGFzcz0icmVhZG1lIlxuICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29yYm9hcmQvYmxvYi9tYXN0ZXIvUkVBRE1FLm1kIlxuICAgICAgICByZWw9Im5vb3BlbmVyIG5vcmVmZXJyZXIiXG4gICAgICAgIHRhcmdldD0iX2JsYW5rIlxuICAgICAgICBhcmlhLWxhYmVsPSJIZWxwIlxuICAgICAgPlxuICAgICAgICA8bWF0LWljb24gc3ZnSWNvbj0iaGVscF9vdXRsaW5lXzI0cHgiPjwvbWF0LWljb24+XG4gICAgICA8L2E+XG4gICAgPC9tYXQtdG9vbGJhcj5cbiAgJyxzdHlsZVVybHM6WyJoZWFkZXJfY29tcG9uZW50LmNzcyJdfV19XSxudWxsLG51bGwpO2NvbnN0IFZaPVsicm91dGVDb250YWluZXIiXTtjbGFzcyBqWntjb25zdHJ1Y3Rvcih0KXt0aGlzLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcj10fW5nT25DaGFuZ2VzKHQpe2NvbnN0IGU9dC5hY3RpdmVOZ0NvbXBvbmVudDtpZihlJiYodGhpcy5yb3V0ZUNvbnRhaW5lci5jbGVhcigpLGUuY3VycmVudFZhbHVlKSl7Y29uc3QgdD10aGlzLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShlLmN1cnJlbnRWYWx1ZSk7dGhpcy5yb3V0ZUNvbnRhaW5lci5jcmVhdGVDb21wb25lbnQodCl9fX1qWi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8alopKGdmKEdoKSl9LGpaLsm1Y21wPXNvKHt0eXBlOmpaLHNlbGVjdG9yczpbWyJyb3V0ZXItb3V0bGV0LWNvbXBvbmVudCJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmVnkoVlosNyxGYiksMiZlKXtsZXQgdDtCeSh0PVV5KCkpJiYobi5yb3V0ZUNvbnRhaW5lcj10LmZpcnN0KX19LGlucHV0czp7YWN0aXZlTmdDb21wb25lbnQ6ImFjdGl2ZU5nQ29tcG9uZW50In0sZmVhdHVyZXM6W3FvXSxkZWNsczoyLHZhcnM6MCxjb25zdHM6W1sicm91dGVDb250YWluZXIiLCIiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmUGYoMCxudWxsLDApfSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGpaLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6InJvdXRlci1vdXRsZXQtY29tcG9uZW50Iix0ZW1wbGF0ZToiIDxuZy1jb250YWluZXIgI3JvdXRlQ29udGFpbmVyPjwvbmctY29udGFpbmVyPiAiLGNoYW5nZURldGVjdGlvbjpqbi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpHaH1dfSkse3JvdXRlQ29udGFpbmVyOlt7dHlwZTphcixhcmdzOlsicm91dGVDb250YWluZXIiLHtzdGF0aWM6ITAscmVhZDpGYn1dfV0sYWN0aXZlTmdDb21wb25lbnQ6W3t0eXBlOlJffV19KTtjbGFzcyBVWntjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuc3RvcmU9dCx0aGlzLnJlZ2lzdHJ5PWUsdGhpcy5hY3RpdmVOZ0NvbXBvbmVudCQ9S3QoW3RoaXMuc3RvcmUuc2VsZWN0KGhSKSx0aGlzLnN0b3JlLnNlbGVjdChiUildKS5waXBlKFZ0KCgoW3QsZV0pPT57aWYoIXQpcmV0dXJuIG51bGw7cmV0dXJuIG51bGwhPT1lJiYheEQodCxlKT9udWxsOnRoaXMucmVnaXN0cnkuZ2V0TmdDb21wb25lbnRCeVJvdXRlS2luZCh0LnJvdXRlS2luZCl9KSkpfX12YXIgV1o7VVouybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFVaKShnZihpUyksZ2YoZlIpKX0sVVouybVjbXA9c28oe3R5cGU6VVosc2VsZWN0b3JzOltbInJvdXRlci1vdXRsZXQiXV0sZGVjbHM6Mix2YXJzOjMsY29uc3RzOltbMywiYWN0aXZlTmdDb21wb25lbnQiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKHZmKDAsInJvdXRlci1vdXRsZXQtY29tcG9uZW50IiwwKSxfeSgxLCJhc3luYyIpKSwyJmUmJmJmKCJhY3RpdmVOZ0NvbXBvbmVudCIsQ3koMSwxLG4uYWN0aXZlTmdDb21wb25lbnQkKSl9LGRpcmVjdGl2ZXM6W2paXSxwaXBlczpbVnZdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoVVosW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3Rvcjoicm91dGVyLW91dGxldCIsdGVtcGxhdGU6J1xuICAgIDxyb3V0ZXItb3V0bGV0LWNvbXBvbmVudFxuICAgICAgW2FjdGl2ZU5nQ29tcG9uZW50XT0iYWN0aXZlTmdDb21wb25lbnQkIHwgYXN5bmMiXG4gICAgPjwvcm91dGVyLW91dGxldC1jb21wb25lbnQ+XG4gICcsY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmlTfSx7dHlwZTpmUn1dfSksbnVsbCksKGZ1bmN0aW9uKHQpe3RbdC5BQ1RJVkVfUExVR0lOPTBdPSJBQ1RJVkVfUExVR0lOIn0pKFdafHwoV1o9e30pKTtjbGFzcyBHWntjb25zdHJ1Y3Rvcih0KXt0aGlzLmRlZXBMaW5rZXI9dCx0aGlzLm9uVmFsdWVDaGFuZ2U9bmV3IFN5LHRoaXMubmdVbnN1YnNjcmliZT1uZXcgQix0aGlzLm9uSGFzaENoYW5nZT1sZSh3aW5kb3csInBvcHN0YXRlIix7cGFzc2l2ZTohMH0pLnBpcGUoamUodGhpcy5uZ1Vuc3Vic2NyaWJlKSl9bmdPbkluaXQoKXt0aGlzLm9uSGFzaENoYW5nZS5zdWJzY3JpYmUoKCgpPT57Y29uc3QgdD10aGlzLmRlZXBMaW5rZXIuZ2V0UGx1Z2luSWQoKTt0IT09dGhpcy5hY3RpdmVQbHVnaW5JZCYmdGhpcy5vblZhbHVlQ2hhbmdlLmVtaXQoe3Byb3A6V1ouQUNUSVZFX1BMVUdJTix2YWx1ZTp0fSl9KSl9bmdPbkRlc3Ryb3koKXt0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpLHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpfW5nT25DaGFuZ2VzKHQpe2lmKHQuYWN0aXZlUGx1Z2luSWQpe2NvbnN0IGU9dC5hY3RpdmVQbHVnaW5JZDt0aGlzLmRlZXBMaW5rZXIuc2V0UGx1Z2luSWQobnVsbD09PWUuY3VycmVudFZhbHVlPyIiOmUuY3VycmVudFZhbHVlLHtkZWZhdWx0VmFsdWU6IiIsdXNlTG9jYXRpb25SZXBsYWNlOm51bGw9PT1lLnByZXZpb3VzVmFsdWV8fGUuZmlyc3RDaGFuZ2V9KX19fUdaLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxHWikoZ2YoVFIpKX0sR1ouybVjbXA9c28oe3R5cGU6R1osc2VsZWN0b3JzOltbImhhc2gtc3RvcmFnZS1jb21wb25lbnQiXV0saW5wdXRzOnthY3RpdmVQbHVnaW5JZDoiYWN0aXZlUGx1Z2luSWQifSxvdXRwdXRzOntvblZhbHVlQ2hhbmdlOiJvblZhbHVlQ2hhbmdlIn0sZmVhdHVyZXM6W3FvXSxkZWNsczowLHZhcnM6MCx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7fSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEdaLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Imhhc2gtc3RvcmFnZS1jb21wb25lbnQiLHRlbXBsYXRlOiIiLGNoYW5nZURldGVjdGlvbjpqbi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpUUn1dfSkse2FjdGl2ZVBsdWdpbklkOlt7dHlwZTpSX31dLG9uVmFsdWVDaGFuZ2U6W3t0eXBlOkVffV19KTtjbGFzcyBZWntjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5hY3RpdmVQbHVnaW5JZCQ9dGhpcy5zdG9yZS5waXBlKHJTKGVUKSl9b25WYWx1ZUNoYW5nZWQodCl7c3dpdGNoKHQucHJvcCl7Y2FzZSBXWi5BQ1RJVkVfUExVR0lOOnRoaXMuc3RvcmUuZGlzcGF0Y2goWEUoe3BsdWdpbjp0LnZhbHVlfSkpfX19WVouybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFlaKShnZihpUykpfSxZWi7JtWNtcD1zbyh7dHlwZTpZWixzZWxlY3RvcnM6W1siaGFzaC1zdG9yYWdlIl1dLGRlY2xzOjIsdmFyczozLGNvbnN0czpbWzMsImFjdGl2ZVBsdWdpbklkIiwib25WYWx1ZUNoYW5nZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoQ2YoMCwiaGFzaC1zdG9yYWdlLWNvbXBvbmVudCIsMCksUmYoIm9uVmFsdWVDaGFuZ2UiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uVmFsdWVDaGFuZ2VkKGUpfSkpLF95KDEsImFzeW5jIiksTWYoKSksMiZlJiZiZigiYWN0aXZlUGx1Z2luSWQiLEN5KDEsMSxuLmFjdGl2ZVBsdWdpbklkJCkpfSxkaXJlY3RpdmVzOltHWl0scGlwZXM6W1Z2XSxzdHlsZXM6WyJbX25naG9zdC0lQ09NUCVdIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIH0iXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoWVosW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoiaGFzaC1zdG9yYWdlIix0ZW1wbGF0ZTonXG4gICAgPGhhc2gtc3RvcmFnZS1jb21wb25lbnRcbiAgICAgIFthY3RpdmVQbHVnaW5JZF09ImFjdGl2ZVBsdWdpbklkJCB8IGFzeW5jIlxuICAgICAgKG9uVmFsdWVDaGFuZ2UpPSJvblZhbHVlQ2hhbmdlZCgkZXZlbnQpIlxuICAgID5cbiAgICA8L2hhc2gtc3RvcmFnZS1jb21wb25lbnQ+XG4gICcsc3R5bGVzOlsiXG4gICAgICA6aG9zdCB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICB9XG4gICAgIl0sY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmlTfV19KSxudWxsKTtjb25zdCBxWj17c2V0RG9jdW1lbnRUaXRsZTpmdW5jdGlvbiBaWih0KXtkb2N1bWVudC50aXRsZT10fX07Y2xhc3MgWFp7bmdPbkNoYW5nZXModCl7dC50aXRsZSYmcVouc2V0RG9jdW1lbnRUaXRsZSh0LnRpdGxlLmN1cnJlbnRWYWx1ZSl9fVhaLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxYWil9LFhaLsm1Y21wPXNvKHt0eXBlOlhaLHNlbGVjdG9yczpbWyJwYWdlLXRpdGxlLWNvbXBvbmVudCJdXSxpbnB1dHM6e3RpdGxlOiJ0aXRsZSJ9LGZlYXR1cmVzOltxb10sZGVjbHM6MCx2YXJzOjAsdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pe30sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihYWixbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJwYWdlLXRpdGxlLWNvbXBvbmVudCIsdGVtcGxhdGU6IiIsY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaH1dfV0sbnVsbCx7dGl0bGU6W3t0eXBlOlJffV19KTtjb25zdCBLWj0iVGVuc29yQm9hcmQiO2NsYXNzIEpae2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5zdG9yZT10LHRoaXMuY3VzdG9tQnJhbmROYW1lPWUsdGhpcy5nZXRFeHBlcmltZW50SWQkPXRoaXMuc3RvcmUuc2VsZWN0KHhSKS5waXBlKFZ0KCh0PT5udWxsPT10P3ZvaWQgMDp0WzBdKSkpLHRoaXMuZXhwZXJpbWVudE5hbWUkPXRoaXMuZ2V0RXhwZXJpbWVudElkJC5waXBlKHVlKEJvb2xlYW4pLCR0KCh0PT50aGlzLnN0b3JlLnNlbGVjdChxVCx7ZXhwZXJpbWVudElkOnR9KSkpLFZ0KCh0PT50P3QubmFtZTpudWxsKSkpLHRoaXMudGl0bGUkPXRoaXMuc3RvcmUuc2VsZWN0KG9UKS5waXBlKF9lKHRoaXMuc3RvcmUuc2VsZWN0KE1SKSx0aGlzLmV4cGVyaW1lbnROYW1lJCksVnQoKChbdCxlLG5dKT0+e2NvbnN0IG89dGhpcy5jdXN0b21CcmFuZE5hbWV8fEtaO3JldHVybiB0LndpbmRvd190aXRsZT90LndpbmRvd190aXRsZTplPT09X0QuRVhQRVJJTUVOVCYmbj9gJHtufSAtICR7b31gOm99KSksQmUodGhpcy5jdXN0b21CcmFuZE5hbWV8fEtaKSx3ZSgpKX19SlouybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEpaKShnZihpUyksZ2YoQkUsOCkpfSxKWi7JtWNtcD1zbyh7dHlwZTpKWixzZWxlY3RvcnM6W1sicGFnZS10aXRsZSJdXSxkZWNsczoyLHZhcnM6Myxjb25zdHM6W1szLCJ0aXRsZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYodmYoMCwicGFnZS10aXRsZS1jb21wb25lbnQiLDApLF95KDEsImFzeW5jIikpLDImZSYmYmYoInRpdGxlIixDeSgxLDEsbi50aXRsZSQpKX0sZGlyZWN0aXZlczpbWFpdLHBpcGVzOltWdl0sc3R5bGVzOlsiW19uZ2hvc3QtJUNPTVAlXSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICB9Il0sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEpaLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6InBhZ2UtdGl0bGUiLHRlbXBsYXRlOidcbiAgICA8cGFnZS10aXRsZS1jb21wb25lbnQgW3RpdGxlXT0idGl0bGUkIHwgYXN5bmMiPjwvcGFnZS10aXRsZS1jb21wb25lbnQ+XG4gICcsc3R5bGVzOlsiXG4gICAgICA6aG9zdCB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICB9XG4gICAgIl0sY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmlTfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W0JFXX1dfV19KSxudWxsKTtjbGFzcyBRWntjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5uZ1Vuc3Vic2NyaWJlPW5ldyBCLHRoaXMuZ2V0UGFnZVNpemUkPXRoaXMuc3RvcmUucGlwZShyUyhoSSkpLHRoaXMucGFnaW5hdGVkVmlld1N0b3JlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRmLXBhZ2luYXRlZC12aWV3LXN0b3JlIikudGZfcGFnaW5hdGVkX3ZpZXd9bmdPbkluaXQoKXt0aGlzLmdldFBhZ2VTaXplJC5waXBlKGplKHRoaXMubmdVbnN1YnNjcmliZSksd2UoKSkuc3Vic2NyaWJlKCh0PT57dGhpcy5wYWdpbmF0ZWRWaWV3U3RvcmUuc2V0TGltaXQodCl9KSl9bmdPbkRlc3Ryb3koKXt0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpLHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpfX1RWi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8UVopKGdmKGlTKSl9LFFaLsm1Y21wPXNvKHt0eXBlOlFaLHNlbGVjdG9yczpbWyJzZXR0aW5ncy1wb2x5bWVyLWludGVyb3AiXV0sZGVjbHM6MCx2YXJzOjAsdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pe30sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihRWixbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJzZXR0aW5ncy1wb2x5bWVyLWludGVyb3AiLHRlbXBsYXRlOiIiLGNoYW5nZURldGVjdGlvbjpqbi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTppU31dfSksbnVsbCk7Y2xhc3MgJFp7Y29uc3RydWN0b3IodCl7dC5zZWxlY3QoRkQpLnN1YnNjcmliZSgodD0+e2RvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnRvZ2dsZSgiZGFyay1tb2RlIix0KX0pKX19JFouybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fCRaKShnZihpUykpfSwkWi7JtWNtcD1zbyh7dHlwZTokWixzZWxlY3RvcnM6W1siZGFyay1tb2RlLXN1cHBvcnRlciJdXSxkZWNsczowLHZhcnM6MCx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7fSxzdHlsZXM6WyJbX25naG9zdC0lQ09NUCVdIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIH0iXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoJFosW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoiZGFyay1tb2RlLXN1cHBvcnRlciIsdGVtcGxhdGU6IiIsc3R5bGVzOlsiXG4gICAgICA6aG9zdCB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICB9XG4gICAgIl0sY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmlTfV19KSxudWxsKTtjbGFzcyB0WHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnZjUmVmPXR9fXRYLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx0WCkoZ2YoRmIpKX0sdFguybVjbXA9c28oe3R5cGU6dFgsc2VsZWN0b3JzOltbInRiLXdlYmFwcCJdXSxkZWNsczo4LHZhcnM6MCx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYodmYoMCwiYXBwLWhlYWRlciIpLENmKDEsIm1haW4iKSx2ZigyLCJyb3V0ZXItb3V0bGV0IiksTWYoKSx2ZigzLCJhbGVydC1zbmFja2JhciIpLHZmKDQsImhhc2gtc3RvcmFnZSIpLHZmKDUsInBhZ2UtdGl0bGUiKSx2Zig2LCJzZXR0aW5ncy1wb2x5bWVyLWludGVyb3AiKSx2Zig3LCJkYXJrLW1vZGUtc3VwcG9ydGVyIikpfSxkaXJlY3RpdmVzOltCWixVWixJVixZWixKWixRWiwkWl0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCB0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9aHRtbFtfbmdjb250ZW50LSVDT01QJV0sIGJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90byxzYW5zLXNlcmlmO2hlaWdodDoxMDAlO21hcmdpbjowO3BhZGRpbmc6MH1bX25naG9zdC0lQ09NUCVde2JhY2tncm91bmQ6I2Y1ZjVmNTtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2hlaWdodDoxMDAlfWFwcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MCAxcHggM3B4IDNweCByZ2JhKDAsMCwwLC4yNSk7ZmxleDowIDA7ei1pbmRleDoxfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIGFwcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICBhcHAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjAgMXB4IDNweCAzcHggcmdiYSgyNTUsMjU1LDI1NSwuMSl9bWFpbltfbmdjb250ZW50LSVDT01QJV17ZmxleC1ncm93OjE7b3ZlcmZsb3c6YXV0b30nXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIodFgsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoidGItd2ViYXBwIix0ZW1wbGF0ZVVybDoiLi9hcHBfY29udGFpbmVyLm5nLmh0bWwiLHN0eWxlVXJsczpbIi4vYXBwX2NvbnRhaW5lci5jc3MiXX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkZifV19KSxudWxsKTtjbGFzcyBlWHtjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5zdG9yZT10LHRoaXMubG9jYXRpb249ZSx0aGlzLmFwcFJvb3RQcm92aWRlcj1uLHRoaXMucGF0aG5hbWU9bnVsbCx0aGlzLnJlc2V0TmFtZXNwYWNlZFN0YXRlPSExfWhhbmRsZUNsaWNrKHQpeyF0aGlzLnBhdGhuYW1lfHx0LmN0cmxLZXl8fHQubWV0YUtleXx8KHQucHJldmVudERlZmF1bHQoKSx0LnN0b3BQcm9wYWdhdGlvbigpLHRoaXMuc3RvcmUuZGlzcGF0Y2goUUQoe3BhdGhuYW1lOnRoaXMucGF0aG5hbWUscmVzZXROYW1lc3BhY2VkU3RhdGU6dGhpcy5yZXNldE5hbWVzcGFjZWRTdGF0ZX0pKSl9Z2V0IGhyZWYoKXtyZXR1cm4gdGhpcy5wYXRobmFtZT90aGlzLmFwcFJvb3RQcm92aWRlci5nZXRBYnNQYXRobmFtZVdpdGhBcHBSb290KHRoaXMubG9jYXRpb24uZ2V0UmVzb2x2ZWRQYXRoKHRoaXMucGF0aG5hbWUpKTpudWxsfXNldCByb3V0ZXJMaW5rKHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdCYmKHQ9W3RdKSwwPT09dC5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoInJvdXRlTGluayBzaG91bGQgaGF2ZSBwcm9wZXIgcGF0aC4gR290IG5vdGhpbmcuIik7Y29uc3QgZT1bLi4udF0uam9pbigiLyIpO3RoaXMucGF0aG5hbWU9ZS5lbmRzV2l0aCgiLyIpP2U6ZSsiLyJ9fWVYLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxlWCkoZ2YoaVMpLGdmKFBEKSxnZih3RCkpfSxlWC7JtWRpcj1obyh7dHlwZTplWCxzZWxlY3RvcnM6W1siYSIsInJvdXRlckxpbmsiLCIiXV0saG9zdFZhcnM6MSxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezEmZSYmUmYoImNsaWNrIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5oYW5kbGVDbGljayhlKX0pKSwyJmUmJnltKCJocmVmIixuLmhyZWYsWHMpfSxpbnB1dHM6e3JvdXRlckxpbms6InJvdXRlckxpbmsiLHJlc2V0TmFtZXNwYWNlZFN0YXRlOiJyZXNldE5hbWVzcGFjZWRTdGF0ZSJ9fSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihlWCxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJhW3JvdXRlckxpbmtdIn1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmlTfSx7dHlwZTpQRH0se3R5cGU6d0R9XX0pLHtoYW5kbGVDbGljazpbe3R5cGU6VF8sYXJnczpbImNsaWNrIixbIiRldmVudCJdXX1dLGhyZWY6W3t0eXBlOkFfLGFyZ3M6WyJhdHRyLmhyZWYiXX1dLHJvdXRlckxpbms6W3t0eXBlOlJffV0scmVzZXROYW1lc3BhY2VkU3RhdGU6W3t0eXBlOlJffV19KTtjbGFzcyBuWHt9blguybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fG5YKX0sblguybVtb2Q9Zm8oe3R5cGU6blh9KSxuWC7JtWluaj1Ebih7aW1wb3J0czpbW3J4LERELFNELGZSXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKG5YLFt7dHlwZTpMXyxhcmdzOlt7aW1wb3J0czpbcngsREQsU0QsZlJdLGV4cG9ydHM6W1VaLGVYXSxkZWNsYXJhdGlvbnM6W1VaLGpaLGVYXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKG5YLHtkZWNsYXJhdGlvbnM6W1VaLGpaLGVYXSxpbXBvcnRzOltyeCxERCxTRCxmUl0sZXhwb3J0czpbVVosZVhdfSk7Y2xhc3Mgb1h7fW9YLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxvWCl9LG9YLsm1bW9kPWZvKHt0eXBlOm9YfSksb1guybVpbmo9RG4oe30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIob1gsW3t0eXBlOkxfLGFyZ3M6W3tkZWNsYXJhdGlvbnM6WyRaXSxleHBvcnRzOlskWl19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhvWCx7ZGVjbGFyYXRpb25zOlskWl0sZXhwb3J0czpbJFpdfSk7Y2xhc3MgaVh7fWlYLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxpWCl9LGlYLsm1bW9kPWZvKHt0eXBlOmlYfSksaVguybVpbmo9RG4oe3Byb3ZpZGVyczpbe3Byb3ZpZGU6VFIsdXNlQ2xhc3M6QVJ9XX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoaVgsW3t0eXBlOkxfLGFyZ3M6W3twcm92aWRlcnM6W3twcm92aWRlOlRSLHVzZUNsYXNzOkFSfV19XX1dLG51bGwsbnVsbCk7Y2xhc3MgYVh7fWFYLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxhWCl9LGFYLsm1bW9kPWZvKHt0eXBlOmFYfSksYVguybVpbmo9RG4oe2ltcG9ydHM6W1tyeCxpWF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihhWCxbe3R5cGU6TF8sYXJnczpbe2RlY2xhcmF0aW9uczpbWVosR1pdLGV4cG9ydHM6W1laXSxpbXBvcnRzOltyeCxpWF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhhWCx7ZGVjbGFyYXRpb25zOltZWixHWl0saW1wb3J0czpbcngsaVhdLGV4cG9ydHM6W1laXX0pO2NsYXNzIHJYe31yWC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8clgpfSxyWC7JtW1vZD1mbyh7dHlwZTpyWH0pLHJYLsm1aW5qPURuKHtpbXBvcnRzOltbcnhdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoclgsW3t0eXBlOkxfLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W0paLFhaXSxleHBvcnRzOltKWl0saW1wb3J0czpbcnhdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8oclgse2RlY2xhcmF0aW9uczpbSlosWFpdLGltcG9ydHM6W3J4XSxleHBvcnRzOltKWl19KTtjb25zdCBzWD17aWQ6Q0QsbmFtZToiIixzdGFydF90aW1lOjB9LGxYPVZTKHtleHBlcmltZW50TWFwOntbc1guaWRdOnNYfX0pO2Z1bmN0aW9uIGNYKHQsZSl7cmV0dXJuIEdrKHtkYXRhOmxYfSkodCxlKX1jbGFzcyBkWHt9ZFguybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGRYKX0sZFguybVtb2Q9Zm8oe3R5cGU6ZFh9KSxkWC7JtWluaj1Ebih7aW1wb3J0czpbW1RTLmZvckZlYXR1cmUoR1QsY1gpXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGRYLFt7dHlwZTpMXyxhcmdzOlt7aW1wb3J0czpbVFMuZm9yRmVhdHVyZShHVCxjWCldfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8oZFgse2ltcG9ydHM6W0FTXX0pO2NsYXNzIHBYe31mdW5jdGlvbiBtWCgpe3JldHVybiBiUyh1SSwodD0+KHthdXRvUmVsb2FkOnR9KSkpfWZ1bmN0aW9uIGZYKCl7cmV0dXJuIGJTKGdJLCh0PT4oe2F1dG9SZWxvYWRQZXJpb2RJbk1zOnR9KSkpfWZ1bmN0aW9uIHVYKCl7cmV0dXJuIGJTKGhJLCh0PT4oe3BhZ2VTaXplOnR9KSkpfXBYLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxwWCl9LHBYLsm1bW9kPWZvKHt0eXBlOnBYfSkscFguybVpbmo9RG4oe2ltcG9ydHM6W1tyeCx0WSxlWSxJTCxNWixucSx2cSxUWl1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihwWCxbe3R5cGU6TF8sYXJnczpbe2RlY2xhcmF0aW9uczpbRlosTFosSVosSFosUVpdLGV4cG9ydHM6W0ZaLExaLEhaLFFaXSxlbnRyeUNvbXBvbmVudHM6W0haXSxpbXBvcnRzOltyeCx0WSxlWSxJTCxNWixucSx2cSxUWl19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhwWCx7ZGVjbGFyYXRpb25zOltGWixMWixJWixIWixRWl0saW1wb3J0czpbcngsdFksZVksSUwsTVosbnEsdnEsVFpdLGV4cG9ydHM6W0ZaLExaLEhaLFFaXX0pO2NsYXNzIGdYe31nWC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8Z1gpfSxnWC7JtW1vZD1mbyh7dHlwZTpnWH0pLGdYLsm1aW5qPURuKHtpbXBvcnRzOltbVFMuZm9yRmVhdHVyZShkSSxzWikselIuZGVmaW5lR2xvYmFsU2V0dGluZyhtWCkselIuZGVmaW5lR2xvYmFsU2V0dGluZyhmWCkselIuZGVmaW5lR2xvYmFsU2V0dGluZyh1WCldLHBYXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoZ1gsW3t0eXBlOkxfLGFyZ3M6W3tleHBvcnRzOltwWF0saW1wb3J0czpbVFMuZm9yRmVhdHVyZShkSSxzWikselIuZGVmaW5lR2xvYmFsU2V0dGluZyhtWCkselIuZGVmaW5lR2xvYmFsU2V0dGluZyhmWCkselIuZGVmaW5lR2xvYmFsU2V0dGluZyh1WCldfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8oZ1gse2ltcG9ydHM6W0FTLHpSLHpSLHpSXSxleHBvcnRzOltwWF19KTtjbGFzcyBoWHt9aFguybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGhYKX0saFguybVtb2Q9Zm8oe3R5cGU6aFh9KSxoWC7JtWluaj1Ebih7cHJvdmlkZXJzOlt7cHJvdmlkZToid2luZG93Iix1c2VWYWx1ZTp3aW5kb3d9XSxpbXBvcnRzOltbc3EscngsSUwsbnEsdnFdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoaFgsW3t0eXBlOkxfLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W1NxLHhxLFBxXSxleHBvcnRzOltTcV0sZW50cnlDb21wb25lbnRzOltQcV0saW1wb3J0czpbc3EscngsSUwsbnEsdnFdLHByb3ZpZGVyczpbe3Byb3ZpZGU6IndpbmRvdyIsdXNlVmFsdWU6d2luZG93fV19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhoWCx7ZGVjbGFyYXRpb25zOltTcSx4cSxQcV0saW1wb3J0czpbc3EscngsSUwsbnEsdnFdLGV4cG9ydHM6W1NxXX0pO2NsYXNzIGJYe31iWC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8YlgpfSxiWC7JtW1vZD1mbyh7dHlwZTpiWH0pLGJYLsm1aW5qPURuKHtwcm92aWRlcnM6W10saW1wb3J0czpbW0lMLHZxLEhqLFVWLFBZLFhxLHJ4LGRULGdYLGhYXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGJYLFt7dHlwZTpMXyxhcmdzOlt7ZGVjbGFyYXRpb25zOlt0WixlWixCWixSWSxUWSxvWl0sZXhwb3J0czpbZVosQlosVFksb1pdLHByb3ZpZGVyczpbXSxpbXBvcnRzOltJTCx2cSxIaixVVixQWSxYcSxyeCxkVCxnWCxoWF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhiWCx7ZGVjbGFyYXRpb25zOlt0WixlWixCWixSWSxUWSxvWl0saW1wb3J0czpbSUwsdnEsSGosVVYsUFksWHEscngsZFQsZ1gsaFhdLGV4cG9ydHM6W2VaLEJaLFRZLG9aXX0pO2NsYXNzIHlYe2NvbnN0cnVjdG9yKHQsZSl7Y29uc3Qgbj10LmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybCgiLi9pY29uX2J1bmRsZS5zdmciKTtlLmFkZFN2Z0ljb25TZXQobil9fXlYLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx5WCkoVHIoZU8pLFRyKG1xKSl9LHlYLsm1bW9kPWZvKHt0eXBlOnlYfSkseVguybVpbmo9RG4oe2ltcG9ydHM6W1t2cV1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih5WCxbe3R5cGU6TF8sYXJnczpbe2ltcG9ydHM6W3ZxXX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmVPfSx7dHlwZTptcX1dfSksbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byh5WCx7aW1wb3J0czpbdnFdfSk7Y29uc3QgX1g9bmV3IGVyKCJbcGx1Z2luc10gUGx1Z2luIHJlZ2lzdHJ5IGNvbmZpZyIpLENYPW5ldyBNYXA7Y2xhc3MgTVh7Y29uc3RydWN0b3IodCl7aWYoIXQpcmV0dXJuO2NvbnN0IGU9bmV3IFNldCh0Lm1hcCgodD0+dC5wbHVnaW5OYW1lKSkpO2NvbnNvbGUuYXNzZXJ0KGUuc2l6ZT09PXQubGVuZ3RoLCJDYW5ub3QgcmVnaXN0ZXIgdGhlIHNhbWUgcGx1Z2luIG11bHRpcGxlIHRpbWVzLiIpO2Zvcihjb25zdCBlIG9mIHQpe2NvbnN0e3BsdWdpbk5hbWU6dCxjb21wb25lbnRDbGFzczpufT1lO0NYLnNldCh0LG4pfX1zdGF0aWMgZm9yUGx1Z2luKHQsZSl7cmV0dXJue25nTW9kdWxlOk1YLHByb3ZpZGVyczpbe3Byb3ZpZGU6X1gsbXVsdGk6ITAsdXNlVmFsdWU6e3BsdWdpbk5hbWU6dCxjb21wb25lbnRDbGFzczplfX1dfX1nZXRDb21wb25lbnQodCl7cmV0dXJuIENYLmdldCh0KXx8bnVsbH19TVguybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fE1YKShUcihfWCw4KSl9LE1YLsm1bW9kPWZvKHt0eXBlOk1YfSksTVguybVpbmo9RG4oe30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoTVgsW3t0eXBlOkxfLGFyZ3M6W3t9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W19YXX1dfV19KSxudWxsKTtjbGFzcyB2WHtjb25zdHJ1Y3Rvcih0KXt0aGlzLmh0dHA9dCx0aGlzLmh0dHBQYXRoUHJlZml4PSJkYXRhL3BsdWdpbi9kZWJ1Z2dlci12MiJ9ZmV0Y2hSdW5zKCl7cmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5odHRwUGF0aFByZWZpeCsiL3J1bnMiKX1mZXRjaEV4ZWN1dGlvbkRpZ2VzdHModCxlLG4pe3JldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuaHR0cFBhdGhQcmVmaXgrIi9leGVjdXRpb24vZGlnZXN0cyIse3BhcmFtczp7cnVuOnQsYmVnaW46U3RyaW5nKGUpLGVuZDpTdHJpbmcobil9fSl9ZmV0Y2hFeGVjdXRpb25EYXRhKHQsZSxuKXtyZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLmh0dHBQYXRoUHJlZml4KyIvZXhlY3V0aW9uL2RhdGEiLHtwYXJhbXM6e3J1bjp0LGJlZ2luOlN0cmluZyhlKSxlbmQ6U3RyaW5nKG4pfX0pfWZldGNoR3JhcGhFeGVjdXRpb25EaWdlc3RzKHQsZSxuLG8pe2lmKHZvaWQgMCE9PW8pdGhyb3cgbmV3IEVycm9yKCJ0cmFjZV9pZCBpcyBub3QgaW1wbGVtZW50ZWQgZm9yIGZldGNoR3JhcGhFeGVjdXRpb25EaWdlc3RzKCkgeWV0Iik7cmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5odHRwUGF0aFByZWZpeCsiL2dyYXBoX2V4ZWN1dGlvbi9kaWdlc3RzIix7cGFyYW1zOntydW46dCxiZWdpbjpTdHJpbmcoZSksZW5kOlN0cmluZyhuKX19KX1mZXRjaEdyYXBoRXhlY3V0aW9uRGF0YSh0LGUsbixvKXtpZih2b2lkIDAhPT1vKXRocm93IG5ldyBFcnJvcigidHJhY2VfaWQgaXMgbm90IGltcGxlbWVudGVkIGZvciBmZXRjaEdyYXBoRXhlY3V0aW9uRGF0YSgpIHlldCIpO3JldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuaHR0cFBhdGhQcmVmaXgrIi9ncmFwaF9leGVjdXRpb24vZGF0YSIse3BhcmFtczp7cnVuOnQsYmVnaW46U3RyaW5nKGUpLGVuZDpTdHJpbmcobil9fSl9ZmV0Y2hHcmFwaE9wSW5mbyh0LGUsbil7cmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5odHRwUGF0aFByZWZpeCsiL2dyYXBocy9vcF9pbmZvIix7cGFyYW1zOntydW46dCxncmFwaF9pZDplLG9wX25hbWU6bn19KX1mZXRjaFNvdXJjZUZpbGVMaXN0KHQpe3JldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuaHR0cFBhdGhQcmVmaXgrIi9zb3VyY2VfZmlsZXMvbGlzdCIse3BhcmFtczp7cnVuOnR9fSl9ZmV0Y2hTb3VyY2VGaWxlKHQsZSl7cmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5odHRwUGF0aFByZWZpeCsiL3NvdXJjZV9maWxlcy9maWxlIix7cGFyYW1zOntydW46dCxpbmRleDpTdHJpbmcoZSl9fSl9ZmV0Y2hTdGFja0ZyYW1lcyh0LGUpe3JldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuaHR0cFBhdGhQcmVmaXgrIi9zdGFja19mcmFtZXMvc3RhY2tfZnJhbWVzIix7cGFyYW1zOntydW46dCxzdGFja19mcmFtZV9pZHM6ZS5qb2luKCIsIil9fSkucGlwZShWdCgodD0+KHtzdGFja19mcmFtZXM6dC5zdGFja19mcmFtZXMubWFwKCh0PT4oZnVuY3Rpb24gZSh0KXtyZXR1cm57aG9zdF9uYW1lOnRbMF0sZmlsZV9wYXRoOnRbMV0sbGluZW5vOnRbMl0sZnVuY3Rpb25fbmFtZTp0WzNdfX0pKHQpKSl9KSkpKX1mZXRjaEFsZXJ0cyh0LGUsbixvKXtjb25zdCBpPXtydW46dCxiZWdpbjpTdHJpbmcoZSksZW5kOlN0cmluZyhuKX07cmV0dXJuIHZvaWQgMCE9PW8mJihpLmFsZXJ0X3R5cGU9byksdGhpcy5odHRwLmdldCh0aGlzLmh0dHBQYXRoUHJlZml4KyIvYWxlcnRzIix7cGFyYW1zOml9KX19dlguybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHZYKShUcihIRSkpfSx2WC7JtXByb3Y9U24oe3Rva2VuOnZYLGZhY3Rvcnk6dlguybVmYWN9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHZYLFt7dHlwZTpVbX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpIRX1dfSksbnVsbCk7Y2xhc3MgeFh7fXhYLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx4WCl9LHhYLsm1bW9kPWZvKHt0eXBlOnhYfSkseFguybVpbmo9RG4oe3Byb3ZpZGVyczpbdlhdLGltcG9ydHM6W1tGRV1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih4WCxbe3R5cGU6TF8sYXJnczpbe2ltcG9ydHM6W0ZFXSxwcm92aWRlcnM6W3ZYXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKHhYLHtpbXBvcnRzOltGRV19KTtjbGFzcyBPWHt9T1guybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fE9YKX0sT1guybVjbXA9c28oe3R5cGU6T1gsc2VsZWN0b3JzOltbImluYWN0aXZlLWNvbXBvbmVudCJdXSxkZWNsczo1NCx2YXJzOjAsY29uc3RzOltbMSwiY29udGFpbmVyIl0sWzEsInRpdGxlIl0sWzEsImNvZGUiXSxbMSwiYXJnIl0sWzEsImV4aGliaXRzLWNvbnRhaW5lciJdLFsxLCJleGhpYml0Il0sWzEsInNjcmVlbnNob3QiXSxbInNyYyIsImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBVFlBQUFFMkNBWUFBQURydkw2cEFBQW95SHBVV0hSU1lYY2djSEp2Wm1sc1pTQjBlWEJsSUdWNGFXWUFBSGphclp4cGRoeTVjb1gvWXhWZUF1WmhPUmdDNTNnSFhyNi9pMkpyZW1xcm4rMVdpNlNLeFV3a0VIR0hRSURPL3VzL3Ivc1AvaHV0WlpkTDYzWFU2dmt2anp6aTVJdnVQLytOOXpINC9ENisvMUw5K2lyOC9Mcjc5bzNJNTZSM2ZyN1I1dWR6bUx4ZXZ2L0FYL2NJNitmWFhmLzZUdXhmRi9yNkJoZitqRUIzMXRmbngwSHlldnk4SHZMWGhZWjl2cWlqdHgrSHVyNHV0TC9lK0lieTlUZC9HOWJuay83dGZucWhNVXVuY0tNVW82V1EvUHVZUHlOSW43K1R2KzE5akx3djhOcE1LUVgzK2ZSMU1TYmtwOGY3NjdQM1AwN1FUNVA4MTFmdTE5bi85dFV2a3gvbjErdnBsN21zWDNQazYrKy9FY292cjZkdnQ0ay9oY08zRWNXZnYzRjd6UC95T0Y5Lzd6MzlYdnM4M2N5VkdhMWZFZlVtKzY4WjBoc1hVNTdlajFYK05QNFd2bTd2eitCUDk5TnZsdno0N1JkL2RoZ2hzaXJYaFJ4T21PRUdlNTkzMkF3eFI0dU56ekh1bU41clBiVTQ0azVhcDZ3LzRjYVdSanFwczI0N21tUE5jb3JmeGhMZWZjZTczdzZkTzUvQVcyUGdZbHJxdi8zai9xZHYvanQvM0wxYlV4UjgvelpYakNzcXJobUdWazRmZVJkTEVPN1h1cFUzd1gvOStWcCsvMFA4RUtxc1lIblQzSG5BNmRmbkVxdUU3N0dWM2pvbjNsZjQvRm5qNE5yNXVnQlR4TDBMZ3dtSkZmQTFwQkpxOEMzR0ZnTHoyRm1neWNoanluR3hBcUdVZUJoa3pDblY2RnJzVWZmbVoxcDQ3NDBsMXFpWHdTWVdvcVJLYm5WV2FMSllPUmZpcCtWT0RNMlNTaTZsMU5KS2QyV1VXVlBOdGRSYVd4WEl6WlphYnFYVjFscHZvODJlZXU2bDE5NTY3NlBQRVVjQ0E4dW9vNDAreHBnenVzbU5KdGVhdkgveXlvb3JyYnpLcXF1dHZzYWFtL0RaZVpkZGQ5dDlqejFQUE9rQUU2ZWVkdm9aWjFwd0JsSll0bUxWbW5VYk5pK3hkdFBOdDl4NjIrMTMzUGx0MWI1VzlWLysvQnVyRnI1V0xiNlYwdnZhdDFYalZkZmFYNWNJZ3BPaU5XUEZZZzZzZU5NS0VOQlJhK1o3eURscTViUm1ma1NTb2tRR1diUTI3Z1N0R0V1WUxjUnl3N2UxKzc1eS8yamRYT24vYU4zaW4xYk9hZW4rUDFiT3NYVC91bTYvV2JVam50dHZ4VDVacURuMWlleTdaWnk0M0k1eDFUTG50SmxhUzJYdUZYTUxhWmVRV3oyMXJucUJrOXZQTHQzSHhyZTZaNVlQbk1Na0hMOXlQYUhvUXIybWZPUHhFM2hmcGQwMTAyRnBrNTZ5TTQ2OVRyNjUzMVVZTFpjRy84NDhPN1JqM0xTc3VGZFk1dG8wbml1bGZYbmtsdkkrbnFRc0J3QmRmVzhtZGQ4V29tK3NaT285NTU3KzRvWWtLTDlsbmpaakp5RDVPSFZ6bTZXdVdjNWNaWmVUSnludnpmTzQyWWM2Um84UnJTR1NQbmxNUzIzbmNRbTFmSS9DeGFVZVRpM3dkZHNnd3RwMzdicHV5TVhhWWJKcnYxWUE3dVhUYWNiVDVkRGEzS3pEQ20weWY1VXhNMzNiNVFrOWhGMW40YVozU1JTRXMyOGZ6V0k2Vm1lSXlXeHM0MXErcmg3V09DMGFWekRpdUsvR1BCRVF3U21KQ09uK3hFUmFZOTdNMEViYnZoeml0bmF5b0xHRVBNSnN1MXBpa1FmZ05jdGw2WHNJMXRmTmxoMXozRzhvZHBLRndjTWh1eTZQNGxFVFFPSHVNNDJ5N0I3TlNDSU9UN3A5WHlZL0hPWDJRaUsxZlJaejFIWUVPWGlZZmtyTithUmx1L2hWZlIrUm1HUnR5VEk3blptb2ljZzcvdVp5RDhHOUR6azZFb05vc2FHUGFneDVaUktOY1laOFd6bjdpQXZQOWJQWktHWWtKdmNOUE5EMW5ZYytQQ1J3UFkxUXlIRHRhdFhjNnJYQ3hKZEpiWk9STWhlVmRMQithMHVSbXhJUmhjbGsyT2UwYm9jdzdpeUVKK1p6Vk1EeWdmK2R4TjJZZXNycnIvWFR5Tmk5V3BuNTlNMDAzV09OQlNZVkV2ZFY2QmF1SFBaS0RETldHeFZZS2JlNFdFY1NjR3crRTZFa3hzbkowQk05dEJLWXQ2QWJWejFPR2d1Z0lmZnZIRVQ2SkZvTDR3UWN6bUN5Szh6V1NLTWFod2ZIeUdHR2txWUdFTllCVG5PRGpNdGNaeEZZMmJZVmNBT1FJMklodDd1TnBTUkY5a1JDZENZWVBPVHJHeUEvVnJjdVltSGNYYStGblJseU9Zblp0VkRTM2p3T29kcHRTZkFrd1U4eU55NloxWGpBS2FCWXVaK3doYlVrRkFoYUEvUkpGdm8rUVFWYkF6Q3ViU2NGb3lka0pwTi9iaUhtSElIT3R3dWh0bmRPZTBtRXdRZkxHOGhSMHdnbEt4UkoyMkp4RTFDRGZONFRlcmRid0VER3lQVldkRHN0QUdPMkM4TGI2Qy9tUmdQTG1KaDRnS3JXenlTbWdmNEZGbGZ3ajVjSlVGRGtLa3dPa1hQbmNZMVpKZ0tQRVZhZ0c2blFvSlNJZGtzeGQ4VlFPMW15K1M0a21TMkZ4QllFVk5ZdWx5UWtZNUZRL2lFTWI2Y1FqdU9za3hKaWxGZ0RNb3p3OEtZQkdWRTZSaGl4MWhJOXQyOWtYeWRLWWp5ekxsWWhJMnVZeXBHQ2dlTTFBWGZlR3lBMDg5T2txSnRNZW1mMGkxd0hNRjYrZjI0a0pNaEZoRVhRaWpnQ0hiRU81QnY4dUMvNUltSWxCZ09NQ21vQ2cyUDdUYWlCM0FFQUJWdFJtSk1GSmlTenFHSEFLYTd1QVVPUEJwcDBCbVNRNGdVTklSTmZZUDFGVk56Yy9ENEFkMEdlb28wclV1MENZUkFCVHlxV3UyazRVQlR0dFhoV0l3Uk5yQXN4RGpKM3JkMVg3Y0lLaFd1VEtTQVNlU0JtSDBpWXl0V05zQWFoaHJtamxTV1ZXQ0x6MnpKRU9zWTlGUTZyd3ZiZWJWOGlrRXVrc2xseUxOQ05zemFBNktZSjN5MkxBY3kydVJnMHlaaFdtdWlVeGhVRUFMVlpJbFFQY01UVkd6UlBzdkxvbXhDY0Z4QWFyV1JDd3RhMUNFbTZUUGdRdXhpL2phNnYrQUFlR3NRaXF3MThJdHBZUjBKZU9Dd1dBVWxMWXVyMktzTUkwbzRuSU5YTjVUU1kraHhaOVhQNUZwZGNDbGVnc0VQSFlHSmg0VWoyVWxZZy9OcmxHbk1zSm1NalZMaFpZRVhUbG1JREZWbVd4SlNqb3pBT3hCY3EyWVBsVVU0M041SFUvWWFGdi8vczlFVUd0a3NtYXJvQWRPOExCWkVFWnlJbGRrSlE5VEJyUlI4Y1VyYklYb01QTWszTVNnT3pab0ZGN0JJWEZ6RllHcU5ackJ4NnlMTmVnRXNpbi9xR3VJS3VqaHpQSFRteVJIQ0VCcmxtRWpSOGU5VGxrT2RubGF0WlBhdW53d2ZqbmR3OEkxb1dkQWI3b3lNazQ5QmVxWEhQR01sbEVtT1VSc0FNTkV3MzVxaEFud0J5T2NnOGtET1RtMnY0WXdVaGdLSElCS1VGcENEUEMvcXh0UDU2VUdSc1lMOEZDUThnTFRtSW5wOHhLWkF1ZE1DSThzT1hmQU9vQUxrOERnK1Z6amFXcDBwSG5BZVI2Q2xtNWFUWmk1WFRGOW0vejE3RUoxbU1jb2w1QXgxTUplQU93Y3E5NEIyUlBRZ0pRaGpVSHVnVnBCeU1kQVc0QUdXVU9IUHRqZ0k4Ly9LeVhtM0tBd3h3MlFOUVFocVFOOEZTWC9ub0ViR1c1V0E5MGE3TXJYY0xXMlZvU2lJeUNla3ZySCtUeEtvRXpnMWkxMFpXMkRwRzhnellkM2Q0STI4bWdYVWhjcVJkajBOaWlYZVFCbVErUzVvQnExU1FDUFBGdk1JRXpHNUZvclNSK0loRzVCd2lPeXRtRTdDQXJKODdPVGlJTllSbHhLOXozNW1ZOTdvV0lnZm9aa2FnTVM3TTRJQUpjQzRkbnBtQmNvdUw2WWRIdHRla3VDQnNxdWVBSk9RMnF5bnhESHNzekFEWVRIREJCd2huSHBVdkNJY05tUFlKODJFSWdoSXpTTnd2aDYyL3FGc3doYWVUa0NJMFlDeFNIV3lYK3I5RFRtS0JUajBiOEVBNHMrNHNDeCtoYzUrUmFYdkRJb2hoWTdxMTVIeGo0SnBLWVdhR3lVRVV5RHFzUmt4MTY1M0Z1TUlXeFhWRnpFR1pDSTJUSlhoZFFoekFXNENwdUFIeVpSUm9OQVlML1JnUDI1RVJnWGtvOEdmZWltK1VRMGZBTGNLU2pPQ0JRYkx0OW43Z2F2Q1RzZkRjbmpTMTlBWlZpSG5NRm9NZjh4UkJHcWc1R0JEZmcrbDZ3MDFKd203MHUxdGdXRldnWENSekp2MlJOUTJHSjlZbmlMbXc1MFJySmtpTXlRVnAwb0pLa1RRcXNzMG5Kb1ltM0JVRi9FQzk2TVlFU1VORzgwenh6UkRBakd0b09MdXFkVitFMkVsZDZvSDVLS3JUbGZEMTJZVmZYdmoxTTg4Qmtac25DbGp5eG1JeVVGSzN5dG9OTFE4cXNVK0Uxc0I0SUZnMnVoOCtSQkloRDhrZVJEaHZ3UzB1RkFUMlUrYXBpcThObzFnRFZnWHJwZVVETTJGSWMwQ2V4OUMwcCtQQkw2SVJUYTRNK2Qyckt5ZEV5bnhnalIwQ2JrRWFNQWRWeXd1SnJMeGRzNDdzeFh6aVVnbG1GbjRsd0JrN0FkSGphSnNQYlMydXdHQU54b0JlMGFHUUY3QkdISGtVb2ljeFR3ZlJWRUVCQUlvaXY0cEZpZkR0S3c0bjRTMEdFOXdKZFZnUmJEdG5zOEI0aWFUS1FITVhKWUlXNnZJc1RLN2hpdURDblFGSkpneTloN2NHUzBHNXhGdkp2cWFFaDNJbVNiZEltYXFVYU0xeDM0cmNRUGZpSTlDSHZVYUZqdzNtc2hLQWd4aEg1c0hPQURrMEVGUEFxUjVWaGRmWDB2SnhaZ2VNRWk2YnFTTWZFUzlkdzdFYjVDTWxSN2tkN0RQSVY3SUJHN3RFQ1pmd0dnMEZIQWNUZmdqQTdiQSt0NkpNSTR4dGsrbkVUbHkvSUkyRGwwMVpNcjBVNG5VRG5TajlQVUg5S2prUDlWd0VKaTVoZ0crT3Q2QVlLdmlCYkNETU10UW1kc3prdXlvdGQrRXZzWDVRTUltUDZpWDRXWktPOVFlbE8yQVo4VHU1T0d3NVVBeWgrUVpSamd1WGJpQk5kRWwrR3c2S0M0MUVrbTlpT1pBODFhOVIwWnk0TGloQWhXMVdGb0lrc1J2RSt5aTF3Vmt6TjJSakJ0K3d0Z1NTS2d1NkczR3lBZU83aENsSFZvaGJvWWFpYkpCTlJ3QTI1bzdjUmxlU3UxYzJoY1ZsWmdGZzFwMHhtT1Myblp3TmFnR0lXQlhRRWlXRlk2N2dzRExaVFRDOE5WVkJ5SDl1TFdGM3lId01mVlJkMTBmSWxEQkRCYWFTNWxCUS9lN216alEyd0xaQzE3OFoyei8rcnZzZnZvM2dIWmkzeWRSVUtMczJTUkNNak9GRXZDcER5TWs0VHdEemVuVG80SHQ1dEJWNU51Z2FUTjk4WjRtMjhZZnBDV0pzZjg4a2ZTakk2Z1QrSWtUQ1NJQXl1cmJzQnRnNWVETmwvR1Z0d1dxMURaVjFnZytkamhDend6eXBOb04wUWI1K2dMWFV2dlFWMmdYMlJWa3RlVXlFVnBtcVFudkJKOCtHaWNkKzRUd2J1blFUMndENUJXdHlSQThOVkJ2UFF5RGpJOUFhcjhhQVJXQXNqdHh2Q0VWNEVHL2pzUkZIUWtRQ0UrZWgwVi9CS2tsRFhCWFFNT0ZYVVZwZ0ZtU25Za1p2cW03OGJrU0FkRVNuSTZUSnhiaE5QbkxqcGcyc0JKY2JNbWc5TTA5aU56eTI3Y0JGSFhaVThnUjl4M1NyYXNFaUJsYnd4U1g0SlcwWGtDbmtlSW1JeGJMRkgrVEU1Q21aS1dWRkdzY2pqM0V1NEFnRElZTFIyQ1VPcEEvS0RLMkxZdVk5ZXlxdXF5MzQ0RjVMQjhPbFM3eVBjV0xJN2kxRWRnRzFmbFZyT0ttR2pPOHBRV212Mm5pSU54Z3g0N1RRUXd2elhQd3dINkpRaW9zNDNCKzQrRDdnQlBCSTZYTlJyb0NJR2ZLb3FSSWNoRWc0aVFCaC9ZSmxuUFRLRUJsU0NIWURLaHhra29UR2ozaE93V3lSU3dnejNtODVTQmtmQ0ZBZWhWczJwb21YcWt6OVFFQTErQUlLQmZ6TlhjZ2NqVGtoTXE4S0NuNGtraGhBUnBYckRQQzh5Qnk4eEFGTVpCYk9aSmNxZjRkd3c1aWhDdEVoSkMzeENRWlBSb3ZiNTJhQU92Zm43ZkJLMFZjQmpWRndQSjJuSXc1c1Y3UVhERUpBRUVFb3ZnaHk0bW1OTWJKUzRhcllTcnFxL25zbVM0WDVneDhMZW42QUg3dE1CV2Jnc2ZkVzlSUGtoc2tOa0x3NVl0Y0JKY3kyYXF3TlQwR3VIZFlEcFRWeG1zd2ZBRlFCK29reElRTHc0N1YyOEpNMXhER2VjRkYzR2VyT3ljV0FCT011aUdnRUVLcHF5Sm1RYXdOSzZVT0tHbUlqRXJhUGVFOUd2YmhDWFRsM01wSjFOSW5maW9oQTJ5MWtQSzRSK1lJTTQ1MVFUdVhmQ0hPVkVaSmtQSlBVV2RJTE1HUkJySHlyN0FWNkhVNjRyVHBaS213dlZITVNiSGV4ZWd1Ym5VT3ZTT25FeHpFUVl5dDY4WkxIQ1NBTGlXK0NCQVZNanNZWm5zNldqYnZJQVVNV2NHTXlxd2tIa1FnZUVpcXF2ZkNvd1BpUmVjSlRkZVViZ2dMaU9vUUl5UzNUVkYzUXM3QWl2ak9mczkvU29tMjRDMHNhSVllTG9tem5WVUhIRURrejVxeDYrZXg1QXhlcVEvaFpnWkZ3dE5raCtjZzZUR050VFNWZjhOeS9FaDJvZytoRFBiK3FKdlluUU12R2NyRUVRN1Y0THllOXRodTRicHhEd0EyZ1ZWQkJYcFZuTXYvakoxWHJCODJEWnlGSVhpL0JlQkx1QlRXSFlxL0llaVFVb3dMOHhkam5xSnlBZEF0RitRRlFza1pqU0NWRHJVaTNoSEt6RElGZ3NqekNvOHJ3a3ozanF0VEh1RjNEaVdPRThheFlIdXlvU0lKVVZIWDU3clZBUTYzOVVCMXNUT3ZvU0RqR0JrNys2NHZOdFU4MGdJMkhHdWhBeE5yVlpzRUowbVBNSUJHS0NHeHlwZmRnTFM3UHRVT2RxZ2hweDhaam9WUjNOMlRocks1Q1krT0JDTG8xdnkvMVJTRXlEY2tXK0RmakIrOUlqZmpBbFM5QnVsNEVuYnhpNVNHWVF4ZUc5N1crcUN5Vzl2YUVrcis5K0U4Ly9lMUhCYnZ1NjZkYlRLbytCRlJ4cmR0dlpCQjhwdklNTVlrNlJHYUdxKzJkRmpzcVRvVm5ySStzWFJmVjE0aUZHQkZ6cXQwZTZkTktsdGpXcm9CQzhFck5HUUJ6dURzMGIzRDAxZzVFT3BYcHFxck40TFFyVjNmaUNvS2lvM3VnUmtnVTBUb0FjOUlyUkJGWnNpelBnek1XOHhUVktyQTJrSTU4SHNhNkU1a1dyMHNKc0FocnFCb0N2MGtoSkhTV2FvbS9HMWw0U3ZQb1ZjVUpXWHVGSmdFWUdmQlV4TVpma2grZm04WXowb2g0TEFoY29rSkpQV21URVBDejEyNnFhbzNaZ3lhRVFCeXd6Q0lFbmZhMnQwcFI4QXlhUEwzU2tYUXljcnFYbXlLWWx5T3d3cGZvWTc1R09hSkFtREVZdmdGZEx5U3V3OTVGV0VGVnRneUt4YXpCTFBUOGxtYkU2U0hyUzBoZVZYU2dIWW1lc1FZcklhako1dkZZVnNiTC9ZNkVZWnA0eHVhS2VSRW1hQ1pCbnlsODhHYWtZekR1Yzg2SThQQ0FYQkdWYm5obUtpZzlxeHl6bkJtQVBCSGpxRmtUbXNCNVZzaUoxeVF5WmNaaE9TZ1RFSUFXeUhRVmZ4b3d3a3dEV0VBMHN1NG13SVhVVEhQQ21vQ3RxclJra3JnS0xESTVHV0FUeHN0UGhxT1hWWkJDN1Rpc1FZQitONmtFWlJ0TEtoUkVScU8vRm9NbGdRRThucFh3dy9zeE5pZ1E5cTRxeXV3bG1FWW1abm1SSHNsOU1rZENTK1VWeEwzMkV1NitNQ0wzYkNRSElRajFRYVg0aEE1dXBKTHhVRUhpRjRhdXpLMDI2Z3hGempLRGc3V2NqRE1uNDdSWmh0c2srdkYzQ1AyTDVnQ3A0WjJsblFrMEhpRmZNVERjcTRvcVhjWjBxdXdudlFJOVZOZ1hsa2xoeTZGY1pET0crdzZicHlEL3NMcEhtdy9ZeUNDcjI3WTIrSFpQK3lMWUkwTUh1Q2RpaEF0Z0V3blpDVjVXeEFoQktLT1hDcEZhWW9GaVgzS1FpdVEvT1lLZVpRV1FQT3BBV054ODVZdmIzdW81V05JVGcwRjZtWkl3aXFvMWhRZ0pTeG1OdDBKV0Z0RXZjaFRXa3JQeWkxd0QxSGU4ZW1ORVJuVnQyMTdwcTRrTVpoNFlFcm9maEJ5bDk2WktWZGNtTWhJSTVRMHFJNXo4d1dBNGVWNjBDN09aNE1vcnpVVEt6anVKeTUyYXNPWUU3UndpUnJURkZBTEVLSmxlVlV5T2pjV2ZSQ1pNU3c2U01RUGdERis3Y21IUFgzY2MvdnpaL2MwM1htSFNFNXcvU04ydmN1VXZyNnBIakNkeXFreWtsTENXYzJ6c1hjS0dJN25nUXBBRGEzRWFHTnFUZ2xKSUFwL0FzUU5OVW1QVHRyK3hGancrOHZnUUZSMVFnTkd5N0dZQ1FsUmd5MHdTcnArOGdlSUlERHlzb1RwMjJFOGNXMGZqc2M0TkVHNTRmVGZsV3JWbkpqZFZ0RHRkRDdKTEdhaUV2ZDZ5akpzQjdKaWhzSGJ2R2RPaktobWtzeUNUS05VK0hIU3Y0bVF3d0dtK1RYK3l0V0VqTmhtSm9vRngxZ3MxZkZHVDd1SG5rTmZKdzNLZElHVmNtRDB1aE1iY0lpaE1pQm5XYThtS1NxV055dU9CbVZmS0hCMkROc1pUdHpXSWtSclgxUDRLdUt4U0xmZU9yazN5R1dtTzMxUHhrZmpSTmh6RDV6NEJMd3BtSXp1MVZjZlBBSDJxRFFOSFFObFJ1d3hRYzNLSkhxZ0ZjZUdscXQyVTNobHdXREZCZkhoRzFJZ0s5eVNqdE93YkFnbU9oMk0yVUxza0xGUUppRi9GT2JsMm1WVFVJWXpieHVFeVRMTlhwcVBGVkpBUFN1NVc0T0JscXBLUkZkclNhZHBKQ1VjNGdpaTczU25BTU1DR3hzR081MUs4NGFvWEQ4Zno1M2FzN1BISVNGeFlWRkJTRldoRm5odEd4WkJtTWdXOGQraUpnVTBHQjRIYXVyRmZBQVBNcG5JZlFzMlBpWHNhVUFiVXJGS0FxY2hVYnhsM2VoVTNWQXcxZExzakVNdFpTRVVpSitNU3h6YjhPalBVQ0lQSmRHT3d5cCtLbFh4MmYzckQrNXpiVTBFL0VWejgrVlgzZVRtckN3RTFMTXdIU0dTM2VWazg4c2M4NC9NYkVkcjBkTDVvaWVBZWlKbmJTWnBUbVNCQWlIeXBRL1VtVm8ybGVjME9zb21nY3VTeFFTNGl2aWdVSFNxL0JrL1VSdUlaQThDaXdRR21iWkVJaFZvNW9seXV0MGxzRUJCWFNKVFd5VzBydDhRY1RmU3piYWZTMWxGVHlXaVZjRlJSQ1c3V1B1a2NRbEdZa3JRUDVFd0k2UGtCQUlqMTRHbUdoanhBU0VPdUN6RUt3ajVmalFyS2hRa2k2azBiaFR3L2RBNnBRSnZFZzk1VENUNlVOTStMV1VyeUhLai9oaFFuVFJ6QWpPSkNaR1FZYTZtS2ZER0pBQk42Zld0UEVmTzhrdTJDTGtFOU1PY2dRNUJwU1ZQa1dERUxyWTZ0elFPeTVMeVo1NUg5djQvV244L3UvNHJXbitqUWhWNkFJTjVlaUJEN3Y0bW1EZmVlRWJCdjJCWSthL0RhR3BvenY2NGVkSzUzMGhqd040WW1MTWdXYVlwcmtPL3J1SlZVK3V6cFpLK2V5Ym04ZHVteTloQ0taRG82bmlraDVUcjZ3cW5KRE5nWnVCVDFUWGpWN0dBWGRXQVl3dnVvMVlEQUF5bjR1WWxuRGIxTDNsUVZZVkdDL2FJYk54WUMyTFBYK1lBeFJLUGFSZTBsaExsS3Y5TURSaDZVMkVXOVVvQUF4dXlxazJHczBodTJaOVpTRnBOUjBVY3NPSk1Xc1dUQXdsak1RRk43QlJKK3FXbWt5NldpQWZqT1BnVDR4QVZtK0JvSXhvYmg0OUNUQ1B2dXdCY0dweDNxSExzdUxxL1oxUWdKbXRYTmNzRmFEWHZLYW5BWFZSWFUwem0xU2RCVTVzWFRJMG1Td3pLamgwL3RYYjA2blZERXR2TG9VTVpSRlloSHIxZWx2ZkRLNHZCdlVMK05qT3dabDhsRUE2cEx4bUhJNzl1MmV3VngrYkpqcjNxdkhXdkVJYWxMOGlCOUcxQnZ0Y2JwVlFkZm9BSitBZnI3Q2tEM3Z3N2xueU5ZWXZRM0lmeEx4ZTJIRVA0UjRJZ1RNTEloWG10UmkxNk8rR1A4ZUN5TDljWktWNVF2RDQ5VnE3YXJIRGlDMEJQQlhxVWNuRUJDQTdJQTBGbU1XQWh0bDNPaHMydGxQVnZIZktwWEVnRWF1am9zSnJvWTB1RTJQVmVWWm1CTkVBakVTMHVYWkFXWENoc3A1UnJVTXR6eDlBb2RtQ2hPUk9ZR2FJOHdWOXhWUUdCK0pEZXAvSml2akZocVRNQ0RmUnpIM1JJV016MkNIS2dZVFFXOGhUaE9GUVcwc0dUb0R6K3h5bDBOZmFCY1VrK2IvaTRRRG43VVprZGhOUkhTWXpnVkdEZnordmJhMFVmaFU2WEVEQmIrNzlwemozSFhyZFJWcVZjRGtMU2U0aDZpR3JFd3dJREFaTVBQVUhwN1pTcDhSWWpTWGdKbDhsTjdudHlsbzVIMHM0Qzh1cW53ZkpnV0ZhdHRxUDJOVkdwZ2RuNmRZdkF5d2tyOWt0cTNTeUpuaUFPUm9KMkRBOTFqUWZFVEpLUnlRclk5WTcxNFhsRDRZcDNkWkxWbXVuNnBsUTJsc3hUejFZTUc2clVpc0M3U1hwMTd2cXV2aTFFQWFVbm1VQW9HeGM2VHMvTFplUXpLM2xQY2J6cTNFQ2ZtRk8vZUZrL3pRd3I4S2NMZFAwMkJQMldBKzY2NUp6RkFrQmIxZEJncUdYYUN0dmREOUxZd0hOQWlHTWVIb3ViVlg2RGQvUXUyQTNTWVpnVDB4dWdGbWUwQTZrMFlMMnJuSGlTREg4cFNHR3NuL1ZXZG1XV25NaWdzZ0RndlNkMkNXNW9XVFF4b0V2cEZFQmRHWk9INTMyUUVNb0RmVkhvbEpxd2tOVlduMVlkRHprRXBFdi8xcXB6ZUVZSmphZGRoRXBuVnQ2Rk95MnEzUklYY0FSbW45bzZJMnlFc1o5eXY1OGdWYlEva0dsbHBobll6U1pLbHU1Y2hHZ3IzSzRYbkFSejVCbUc2TXRrMmNOWXdpWFpReUFpOE9DRGd1QXBFUHRST2NORE9mVExSUk9CYytMcklEWGlDSkgwYWRITGd6akNaYXJDL2c4cjFYQmdzWmd4alBtNW45ZmlOT3pMZUQ4SERpNjlmUzVWRXlHRTh6NHAxcVFuQjM5WHdlUlBMSVFIUDhoWGIwSjE2TlJ3alYvRnRta3BwaUgxU0tsMzFjUUh2eHljbXpBaDRGV2JnNG55bnlnN0UrVkJoYkRRUHdpK0diOEFJcGtmb3JqSUQ2UTFXb2F5RERoUGNYdFJBaHNJMjZXdnRwNWRaQTA0VkZjZWpxWDlwa0NwcTA1N05aZGJ1OWxmeHZyM0pES3NYaUp3cGFnR00yaVZJMmtKSzVvV1FoNGYwOEE1b0JhV3BDV1BDNkFDbnF3aFRWby9waG1NQndTVWRwZE0xVVR2Y1hmWDZCb1l2aENTZUFvU2VjM3oyM0h0Vm5YUjF0Q3ByNG5EMG1EVWNFRWE3NHRYQjFqVDd0NDM0Zi96Wi9jMDMvbkVIUVBjUlZSRVdUS3VlOENITGtyU0IxWkJCVmFVaWdLMEFLT1I0K29XaGdEcmQ4TEZKN0V4ZnFBTlpvMi9xY0FuQ3lxdWlGcjJha2hIS1JITHlhaWxSNDJwR2plRmFNSGRvS0J3ZFlsNGRIT0ZEN1RndEorOWNCK0hpdFZtTzk4UjJ0L3FxVk1nUE5Xek85Yng4WGdnUndjTHhPRGJBQ3A5L2tDQTRjaUk1NGlDemYvNFllSnJxQXQ3STRsN1UxeFl5RDZ2K1gzZ0xndEttcVRRTGtTbzJKWkVKOFM2Nnprd1o1bGlubjFqOHJrTTROWWxRaDdZbFZpbmkrNXEzNnAyS2Z2U2FRZmJocUtyWXlKNWR5MmNYSWRma3VFbUJVUHZDZU12S1hXM1lzQkxZZnVZOUlIYU9PdXlnQWpYTFFabHhuMC9IRjNDR2NpZC84VHpadTJ6dzVGb3lKK3JnWGMxNFoxUTV3UjZwNkZqS1ZJc2hkcDgxU0RMQ1pLR0Z2WGJ6UXkxeitFdWZuSHlrUi9oOStyOVJXbG1OOGlnT2kxUFpScVozYmF0VUJjNGVMS2k2TDBFMWtrQWRPOUFaQ0J1M2s5S056V3Q3cTZrM2w4eGdtdFdsSGRRdWh1TzRBV1M4SW1Jc2pxbStEa0hrckZ1Z1RCZWEwemVienZmWExYSzBjdW9OcS85V1luei83UDV2aWZFOUw5eTN4QWo0Uk9RL0RpbURtQWlURVY0RElsNjN2K1JJbURINVpkT1JNZVNacm5lZTE5TS9uSURBTnI0RGFRTDlxMXVNREF0TDRxbCtkaGplUDhSckJuSTJYQ0N6MWlRTHB0cE1rQ0RFZm5OZUxlc0l5c0p0Tzl4MmNZeFJPOUhNY28zcXRjY3E0MzRhY1lQZ1ltSURaQlFHTE1GZFdTaHR2K0NFQVRaN0hlbllHcEJkNTE5QWFSUjhLd2pEWVF1RkFmYm1nbEdHNzVPMHEwNDhxTzl5cVhZR0d1c3d5WFJYeDBSSXU2QkdXZmpiQXFGOGNNUVdrQVRxNDlldWRvWkJzVFBjUGh2dU5KUFVHVis3dFdIcHB6YitIZTdFOTVuZ09TUURvMndyOTc1MEtJWG9RZGRsRlVSaWJ3ZmszV0JwcXFxV29Va3dNQk5ZelVHbGlOSWN6d0JyQU11Z016bE50QUxTNnBEMUt1WWExTkpLVUhKNWJOWk40RDVLTnV5dFhzUWJNcE9nMHgrWW1taWVhYjd2dUNUMnBUSXo0R01KbUczRTR0WDJQTXQ1WHU4ekNTaU5oc3IwT2dUME5udkZFVWdBNXNoVXBCM3Ewb3dhNTZ2aXF2VmxGNTNDUEZzTlNpVE0rbkRIVUNFclZKUm5Kd3F6Q3VyKzFWMmNIZXRvZy8xNkNab2ttdHFyMGl6L3FJenovYlA3VFgzbmQ5V2RIMTk3cFIzTUpkYXU3cFhSYVlBSnk3K0JYaWtWTW1mc2pBaTFRZndVc21ab245bE9RSEdvS0ZpMHAzTFFZSFY0U2UzUzFCYXJuWGZzdEF2cXdrZi9xbHFwWGkva0lkWmF4dVlNc1NiWEJ4NW0wZUdLaVVBQ0pra1VRRnoxUTNCT0xaT3EvamdTcFduL0hOcVdKQXZpQUxSVWxaa1lhbVFGL2RXb1JGamhQR1RSMUxhaFJsa05IVFdGWmpqekhBY1RsWTVHclZqcFJwQ0NtK1I0bTdlOTB3N1ZKeHpHOTlFa1pROXNGWS9DcE5TbVBXbFpCTGRoa0tyeG9QMzk4QWRpcW5vV0s3eVpZUEhhbndzSlZPSEhkQmYxSXZZZ1p3dW5RYTJEL0sxSFVKdlUyNXZHYXlsL2JieERYYmg3YVljUXlGaVlrS0YyT2dGV3JYSmpUQ05jcTYzUnF0YW5UdlFXWnd3OG9xRG02K0RSOWdTdTRTSjhIbVRob2RZTlFXWW9QZGpHQ1pZTENJSkFvYWt5VFNaS20zcW5iVTBVZG1aQTZ0QU42ajVnK1JFUUdSTkhITVUrSUNwbVQ3M3RpR3F6dHFPMk45b3BVWEtQVUlhZWRYNHRxV1c5ZFo5ZjR4M3FLZXJmQ1p5UTcwRmdDQzNSbUZ4Q3g0VlcvNXlwMWxGd1NVaHNJL2JXU1NZam50WHBpK3lkYitXbTltNlV6RldWVlJ3TE1oblFqeGsvZ0hKWEd5eXBPdS9DSEVKSWt1L2RhWThMVFlHczFvYks3QzNxekp0d2oxemd2ZTBsSzU0bmdRVTZtWWNXNnRsWG5Td2RQSWZPa0xGc0h1NC9Gek9vR3JKT3dPbUlVMUVMNjZoSzQ2UGpCZHRRUUhVUDFNM1N4dUxybitTQm5vRUlrbFRBaXNzcUhrMDFQWU1XMHVPTUNRT3BwblVnbm9qQllDTm1vVDNlcGZYc0M3QmNHNVZtekI3NENBQ0dGcHdLcGR5Zmh3cmEybEhKQzhHRTZsVmp2NDVZUnBEMW5SbHAwa293M0lycVFkd3FNUFNrWXpYdm9JNUxCRHJXZzJBR2pEVFFGZFdzaVl3anUzbHN4V3NpS0ZGK2hiUWhqeit0bkJlVjNsRVEyN1RwaFJWZHFhdEJ3VlRvZ2oySzlpQjErby9rMDZteXJoYWNQeHc2ZUovZHJ5L005THVkMi9FM3I3T2VxSnVHbDNPZWh3R3NWSVpZdGhJY3FiTmhwWXlrVXdGRVhLNXFHQXlxZE1FM3BpTmpxRkI3dS9OcU1EYlpCdnhhOE5ORDE3dkwvY2s2TWpqMU9FaUJialZvUytzT25ZOVVwSVdHNkQxRmlLQitWQWxFd3BwL2RLZDhKV1lqL09FSkxrbFRuZW5EMGxpb1IzWkp2VzFCRnErVC93RktVNnBsakJqeUJCdEU3c3Z2dWxXSWEvUnBtOEFOWVVGV3ZnWGRFcGtaOEVDOElna200cFVNVzhHdnJqT01ZYXNyQ0FEUTBTQUFEMzJFYmh6S3BsNVFRS0FuajAwRUdHTXg5VnV5Nk9yMXdIbGxIV3U5d042Vkt1OWxJS1hxYStVTndKUmpQZFNUcno2bnJhMFMxVUVLUU9WNVo1L29SQkRRZ3A3Z3lOb2lPV1dscG9TMnBXaGJKWXNPUWp1OGJxaGRsbk9oWDh0V1I3anN2Rnc3czZ6ejZJUzJDRncxQWVndnFXYVRYNmRSd0JLaTBPZnJpWWhadmZsSmhqQXh2MXEyT3NMTVY4M21yOU9DcEFRbWN0b2RKVVRlYlIxbkpLbTZqblF3ejZCV3l1YlVkcmluQXFkbWdIcngrSk1sQlpzZ1YvV0E0THEzZlB4bEZDU2Nlb0o3ZjNRRVovS2Rxak9YSXpwQ1U2azZuZ3ByYWpTS2tuMldkZm9MMnBpdnNxNU5nMlpiQWd6M1BKcGtxK3FGRWFRbDZkVVBTVTR2OVVsai9PUFY0UXhGL2xUZm9qYjgwSHVHeG9NVFpvU3BKMitwWUhsOGpXRkxUV2JjOGJVRU9mSmJKMTZBRVNPSmwxcEljQVozRTBYYTF6cWZRajVDT3dlVUtnWXBNOWNYczR4ZXJWRERWZUVlZ25MSTZsZHEwakdmNUYrUE9nQ0t3UENBVFh6dDE4aEtLT2tkU24wSFVPTWVDUmZlV05Ld0paRkx4ZmZQdEhHSVVlNzBDME9ISGdLRnJPT0hPb1h4cmltMkFMTlJPR3IzVVJkTWZtMzdPZ0JVTTRiUGZXN1pzRHM2akR0MUlyUEtQbzFJTW5ENXc0cnNxZTBySXAyNWI2bzJ2T08vK00ycmZqRUdpdlNBKzYrT2hiR3NDeXR3R2ZSZ0RVR0pGZ09HTFJsOEFIZXkzTWp0dzgrbEYxczZqd2xwNDRhSWFsWFEzSzA2SnNQVWtpSjg1SnVIUkFPUGp4Nm9pek1CSHlHMk9vUzlQQXlXc0d2VnA4NG5JYWdRTmI0NmozTWsrSEJyeUUxQ2ZhcHd5OUJFdDR4WVBRVjRrSUpPUHlwUUZCMFAxVzdUaHZrQlpsUjhFbGNXTG9SOWtsYkRxZjBCbG45Q1kzN2lnN3RDWGJDWXlKYXRWbGxoRTZGQko0ZVpFeDN6RzJBR3l6KzBWMkllb0YwQmtVMHVCektBbjJMd09wYW1rM2g0U3ZEbzZLd25ZWTJoVklPS2dFMEt0S21BWFZ0VzZUY0RzV1NjamtzT25ocEpvVUtqam9TK3ZnZlVTSEpFQWg1Nlh2Vm5EMEMzNlZpZ05JeUtGc0Fxcm5vZG5SYnM2dFhJMWxxR0owYVh6SHRPU3NlWFJ5bHV2aE1ES2VvYWdWVTY3OGpNdWtYblVMWVJFc2dpdUpqNXlmbWRrOUZPVEkwNHlxc3lzN3F4dFJQc0pKU2hBclZTVjBtRmhlUFdyNjI1NnQ3UHFobnZaRStiQS93MXFidEtuU2lpSnBBY3lPa2dJdUh0VkRjSlJ5YzVNc0dUbVlaeUZFOXhERFd1RVFvb3RLUTZkYml2WmZNcGJWVEc4VHJZcitvMWRKeW1XK0NsS3ZQQUhnWTBKamtxNExFdWRVMlRyb3I1T0tzaVZoeUtlckRQZm5aV1I0eUJST0tDdDhIUzFGUSs5UXNJTWhuOGRqOVZxaVBSWjFDSHRhb1hxQVVKVDlQdnFDRFJnSE5XaTRUU3IySkk2cUVFYWhrZFdWUlAyYS95QSs5Y0RXUU83ZkhMdnBPNEJFL1NNYnNkbWVXVnRCc2NNSlVIWWEwVEkvNkMyVk9IWC9Ec3dPVzRiNGNCTzRvOE5rblFxOU5HTnBOYTNsL2ZLTm1nTTJNQTF3RjhWVkt4TEFSdEZhYkZlQ1BCQ2srUEwwbUszdTVmK1g2dDE0TkNXSHkwQjZScXFQcnhkVjkxM00ybnhuWHZ0OEh5NiszVjRNWUFqclF5bksvRGpKTHdFUnRRNitmNHE5cml3TkpmeTRkcFpLVVpNWVgxdFQ3R1VjeThaVldoYTBvSkJwQWtMY0dpdWc2NURHOEkrdDBOREV2S2YrbjNWRFMxMzZvU0VnUk5iWVhQK1Q0Y0hjZ1QxZEdpWHNKUWxCZkkzWGNtMGRUT05QeCtIY1U2VG4zZWhvcllweDZOaVNUZjJ1a0RNSnZPVm1vZlVJQ3ZYN1lCWlZicFZjRU9VZTYxSjQ0Q3VNeXhtMTd0T1BoczlCYjZCQXA4OUlPS2FXckMwV1pQbDNnRjE4QTRSTmRhOEJLbzYwZFBIUytONkFFbHN0TzJWd096V2FEWHVRdHZYMi9JMFVTR0tOUGlpam9CSDFHRW9LRWVHUThFOFJIeGFxV2FSQmpMa1Z3UlBML3FCYTVOT3h3NGYvMCtEWlYyZWxFbEFSYUVFb1BNVTlwUGhPRmR1Vi9mWDdVQTJUMEJXM2o5SmloU0xFMUNGOXV1T3ErbDN4UVE5QnQrNXRhdnBqQVUzMmc2RTN1Zkw3MEhVYmtNUzBWMHhLNytvL2RUcjU2b0k5ZjhHeFJsVGhFK1RTNVNwZThoUVlwcTRPblJ2VjNTUUQwL3JFWlFYd3h4YWc3dW5Jb1FKQ3BmcUtYNjg3c2ZqbjZ6Q1c5YThBc29kWmR5R3JRaDlYRWRXK2NLY2xUYnNrNEdBYTZPV2ZTTVl1aFg2YWh6WDRwMWZCMGdJTWFBQ0l1U25UbXJaQnJIZk16NzJWZmxXZFJ2dEl3bmRYM2ppZkRxYW1OcUtNQUlUT3R3SWlLVm1OK1cvWTZDZkdndmFnOTZwUFNNNEg2U0Z5eUR3TlUwNS9DQ0FkRFdXWkNzTGR3dWNhSGZ6aFdDVHFxb2s2UWhNVmo4aGJoQytwYWpYeUtoQmhCMVdPZ2IyTGdWbkZ3cTRrNlRxczR0cG5hdFhaWitwWWM2NS9WZHNhNU9DNkpsbU9oY2xVZ3JhYWNDa0dvK2VUMmpBeEszMnM5WDBMbU5kRmpOZ1JObnBwcnlROGR3MVN5Y1ZDTXNQREpKa0xYRnFaTnhPakx6MTYvTWNnaUU5ZmVWSVJ3ajV0VDlOOUN1dGhqZzZ0MTRBQUFCZzJsRFExQkpRME1nY0hKdlptbHNaUUFBZUp4OWtUMUl3MEFjeFY5VHBhSVZCVHVJT0dTb1RoWkVSUnkxQ2tXb0VHcUZWaDFNTHYyQ0pnMUppb3VqNEZwdzhHT3g2dURpckt1RHF5QUlmb0E0T1RvcHVraUovMHNLTFdJOE9PN0h1M3VQdTNlQVVDOHp6ZW9ZQnpUZE5sT0p1SmpKcm9xaFY0UWdvQjg5Q01qTU11WWtLUW5mOFhXUEFGL3ZZanpMLzl5Zm8xZk5XUXdJaU1TenpEQnQ0ZzNpNlUzYjRMeFBIR0ZGV1NVK0p4NHo2WUxFajF4WFBIN2pYSEJaNEprUk01MmFKNDRRaTRVMlZ0cVlGVTJOZUlvNHFtbzY1UXNaajFYT1c1eTFjcFUxNzhsZkdNN3BLOHRjcHptTUJCYXhCQWtpRkZSUlFoazJZclRxcEZoSTBYN2N4ei9rK2lWeUtlUXFnWkZqQVJWb2tGMC8rQi84N3RiS1QwNTRTZUU0MFBuaU9COGpRR2dYYU5RYzUvdlljUm9uUVBBWnVOSmIva29kbVBra3ZkYlNva2RBM3pad2NkM1NsRDNnY2djWWZESmtVM2FsSUUwaG53ZmV6K2lic3NEQUxkQzk1dlhXM01mcEE1Q21ycEkzd01FaE1GcWc3SFdmZDNlMTkvYnZtV1ovUDhhN2NtTHcwWHh2QUFBQUJtSkxSMFFBL3dEL0FQK2d2YWVUQUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUFCM1JKVFVVSDVBY0NFQjhmQlZ4SHRBQUFJQUJKUkVGVWVOcnNuWGw4Vk9XOS85L1BtUzA3a0lXd2hNVUVBUkVFcEFXMEltb1JwWXExaUZXdy9rVEZ1clNpWGNDNjBOcUNYYkQxdXR3cVdtcXhyZEQySXJkWHNiVEk5WXBMQ3lpaVV0a0RFUklnZXpLVFdjK2M4L3orbUhNbUo1TUppeUlrOEx4ZnIvTUtaQ1l6a3pOblB2bnVYL0g5cjEzQW1xMVZSSDE5R1RieFp1WmQrQUczejF0RjBSMnJXRHR2R0ZETGlobmptTGRoSElzK1dNNzBQS0Q4R2E2NDlGSEtMMTNNOW1jbjA0cWZGYlBHTXUvTjBTellzSndiaXV6dlJ5bGZzWUNIRnIvQzVqMEJmSVZuTWY3bWU3aW1iZ0YzL0M3S3pHVWJXVGllTGtrNEhPYkFnUVBVMU5SUVYxZEhZMk1qVFUxTkJBSUJXbHBhQ0FhRGhNTmh3dUV3MFdpVWFEUktMQllqRm91aDZ6cTZyaE9QeDVPSFlSakpyNFpoWUpxbTg5L0NORTJjaDVUUy9pcWtsTmdISUZLL0FrZ3BoZlhTazE5VHZpZDI3ZHBWWEZCUTBOdm44eFc3WEs1aVRkT0tORTByRUVMa0F6MkFQQ0ZFSHBBTlpBR1pnTmM2WElCbVBaNEpHRURNT3NKQUNBaEtLZjJBWDByWkpLVnNrRkxXRzRaUnArdDZkU1FTcVRsNDhPREJrU05IMWxpUEl4MUh1LzhMSVZKdnM3OEhJSVVRN2I0NkRxbHBHa0lJTkUxTFBhVEw1Y0xsY3FGcEd2YS8zVzUzOHF0OWVEd2UzRzQzaG1IUXZYdDNmRDRmUHArUHpNeE1Nak16eWM3T0ppY25oOXpjWExwMzcwNlBIajBvTEN5a1o4K2U5T25UaDh6TXpHTzQ2dnlzbXp1Sm16ZFBaZFhhK1F4RGtZcDkwYmVlc2hXekdEdnZUVVl2Mk1EeVZtWDZISWl5YnM1WWJsNVZ4QjJyMWpLdmk3MDdzVmlNQXdjT2NPalFJZXJxNm1ob2FLQ3BxUW0vMzU4VXRGQW9SQ1FTSVJLSkhGSFFuR0xtUEV6VEZMYkFwWWhaR3lHenhja3BVcW1DNWZ4L1RVM040SnljbkVGdXQ3dE0wN1JTSWNSQUljUUFZQUNRMFVsT2N3VFlKNlg4eERUTkNzTXc5c1ppc1QyTmpZM2xBd1lNMkowaWNQSXdndGRPQUczaEUwSzBFVHBOMDJTcXlGbkNsaFE1NStFVU41ZkxoV0VZNU9YbDRmVjY4WHE5K0h3K01qSXl5TWpJSUNzckt5bHdlWGw1ZE8vZW5mejhmQW9MQytuVnF4ZDkrdlRCNi9VZVZ0QzJybmlSbDk1Y3hZcFZsUXhiOENyTGJ5aFJLcFlHZHkzUWFsaHRaZkh2MWhQakxDNGNYM1RjQkd6ck0zTlpWaktQK1ZOTDhObmZMVi9CNG5VQjZEdVZTN3VZcU8zZnY1OURodzVSVzF0TGZYMDlqWTJOK1AxK0FvRkFVdERDNGZCaEJVM1g5YVIxbGlwcTZjVE10c3BzWWJQL0tLVVJzamIvMzdWclY4OCtmZnFNOEhnOEkxd3UxOWxDaUxPQnN5RDVWblJtTW9EQlFvakJ0cEI0dlY1eWNuSXdUVE1LYkROTmMyczhIdDhhRG9jLzNybHo1OGZqeG8ycnN5eEZLUk1uU3RyL2Q0cWNsRklLSWV6N0pBWE9NSXlrOVdaYmM5WWhPaEk1cDdDWnBvbW1hWGc4SGp3ZUQxNnZsM0E0ak0vbkl4UUtFUXdHYVdscElSQUk0UGY3YVdwcW9yR3hrWWFHQm1wcmErblZxeGY5K3ZYcitMTzA2Z2wrdDc2SWNUYy95Wk5LMURxMjJJWmNjRDJUSnc2amlGbzJyMXZEQjFWUWV2TlNWczRmVDk1eGVZcEtWc3lheHJ3My9mUWROWkdKbzB2QXY1WDFyMnhnVDZ3dlZ5NWV5Wk9UaTdyRXlhcXVybTduZGpZM055ZmRUcWVnUlNLUmRvSjJCQ3ROMkc1bmlxQ0pEcXl5ZGhiWnRkZGU2MXF5Wk1rWE16SXl2dUJ5dWNZSUljNEZCcDltMS9RdTB6VGYxM1Y5czkvdmYvL3JYLy82Kyt2V3JUTWQ0cFlVT1NHRW1jNmlTMmZOYVpvbTAxaHh1Rnl1TmlJbnBTUXJLeXZwbmpvRnp1djFKcTIzek14TXNyS3lrdTVwdDI3ZDJybW54Y1hGU3FFK3JiQjkvNmF2c0c3OU51cklwYkJzTkZOdm5zYzkwNGNkSjFHenFXWDlpMCt3ZU5rNk5wZFhFYUNRMHZHVHVmbWVlN2hoZE9jWHRlYm1acXFxcXBKV1dqcTNNMTBjVGRkMVlyRlkwa0pMRTBjVHpqaGFHc3RNcEltWDJWYVorTjczdnVkNitPR0hML0Q1Zk9kcG1uYStFT0k4SUVkZDFtMW9rVkt1ajhmajZ3T0J3TWE3N3Jwci9WLys4cGQ0R3FFem5hNnJRK1NjY1RtWmFzbWx4TitrbEpLTWpJeDJzVGV2MTVzVXVJN2liMDczdEtpb2lGNjlldEczYjErNmRldW0zc1hQR21OVHRLTHJPdnYzNzI5anBUVTFOU1d0dEtPSm82VkxEdGlDbG1LZEpkMU1oMFdHVThpa2xGcERROE93bkp5Y2kxd3UxNFZDaUltQXV1cVA4ZStVYVpwdjZicitkblYxOWRzREJ3N2Nib2xiTzZ2T2FkSFoxcHZ6MzNhQ3dTbHlVa3A4UHA5TWwxeEl0ZDdTeGQ5czY2MTc5KzV0ckxkKy9mcmg4WGpVdTZlRTdiTng2TkFoS2lzcjJ5VUhuRzZuTFdxMmxXWmJhRWNyYUlaaEpOMU0welE3RkxOUUtIU3gxK3VkcEduYUpHQ0VlbmVPSy8rT3grT3YrLzMrTndvTEM5OG1rY1UxVThXdUk1R3prdzIydXdyZzlYcVRGbHhIQW1kYmNMYjFab3ViMHoxTlRTNlVsSlRRcTFjdjlZNHBZVHQyZ3NFZysvYnQ0OENCQTFSWFY2ZE5EaHlwZkNQRjdSUXBpUUduZFNaU0xMU2ttSVhENFNsZXIzZUtFR0lLMEZlOU15ZUVLc013L2hFSUJOYm01K2V2cGJWY0phM0lPV055dHFzSzRIYTdwYk04eEJhNUkxbHZxZTVwYm00dWVYbDU5T2pSZzRLQ0FvcUxpK25UcHcvOSsvY25PenRidlZ0SzJJNk8vZnYzSjYwMFp5d3RYWElnTlphV3hrbzdrcUNKMUpoWk1CaTh4T2Z6WFNXRXVGS0pXYWNRdWRWTlRVMnJpNHFLYkV1dWpjaWxXbkgydngzdWFUdUJjN3ZkSFFxYzAzcExUUzZreHQ1S1Nrb09rejFWS0dFREFvRUFuM3p5Q1ZWVlZXMnN0T2JtNWpZMWFVZFpaQ3RzMTlOMk53OWpuV21OalkzRGMzSnl2cVpwMnRXZ2FpMDdLZHRpc2RnckJ3NGMrRnRwYWVsV2g4QVpEcEZ6eHViYVdIRjI5dFFXT1V2WVpEcjNOTlY2YzlhKzJabFQyM3JyMjdjdkF3WU1JRGMzVjcxRFN0amFXMmwyZ2lCZHhyT2pFZzViMU5JSm1yTkx3Q2xvdHBpdFdyVXFZOUtrU2RlNjNlN3BRb2pMMUdYWWRUQk5jMDBvRkhyNXFhZWVldVhCQng4TUEvR09SQzZkd0RscjROSUpuQzF1SFpXR3BHWk83Y1NDc3Q2VXNBRVFDb1hZdTNkdnV3U0JiYVcxdExRa1kybEg2Qnc0bktBSnA5dloxTlEwSWpzNyt6cE4wNjREMUpYWXhmOG02cnIrMHY3OSsvODZhTkNnYlE1WDFVaDFWUjBDSjQ4a2NCMWxUdTNZVzA1T1R0SjZTMDBzbkhIR0dXUmxaYWwzNW5RVnRvTUhEeVpkejVxYW1qWUpnaVBWcFRsRUxhMmdXUVcxYmR6TlVDZzB4ZXYxemhCQ1hLc3V1VlBTaWx2WjFOVDBVbUZoNGV0U3lyZ1F3aWx3aHRPQ3M0WE9HWWRMRmJpT1ltL3A2dDVzMTdSbno1NUoxN1IzNzk2bi9YdmlQcDErV2NNd0tDOHZaOSsrZlJ3OGVERFpFdFhjM0l6Zjd5Y1lEQ1pGTFJxTnB1MGVzQVhORVVkTEsyZzMzbmlqYThtU0pUZTYzZTRiZ1F2VXgvL1VSZE8wYWZuNStkTmlzZGc3TzNmdS9QTXR0OXp5MHNhTkcrT1dtMnBJS2R0bFZnM0RrS1pwU2szVDdGaXNkSllFeGVOeDZTd1hzajBFWnlqRS9xTnIveEVPaFVMSmRxMnlzakpjTHBjU3RsT2RwcVltOXV6WjB5YnI2V3lKT2xLeGJScTNVemk2QkpLQ3RtblRwdHdSSTBiTWNybGNONkZxems0djkwZUlMMlZuWjMvcFgvLzYxemNqa2NqeVpjdVcvZVcyMjI3elc5WmJ2Q09CazFKS1I2RzJVK0JrYWd1ZXM5ZjRTQUpYV2xwSzkrN2RsU3Q2cWxKWldVbEZSUVdWbFpWcGE5UFNGZHNleGtwTEcwUGJ0bTFiajdLeXNsdGNMdGN0d0NEMU1ULzlNQXlEeXNwS0Jnd1lZSCtyUEJLSi9PR1ZWMTc1ODNYWFhkZG9XM0QyWWNYZ3pIUXhPR2ZkbTlNOVRTMExzWXQ2MDlXOGxaU1VNSERnUUVwS1NwU3duVXBJS2RtNWN5ZWZmUEpKc3VEMmNGblAxQTZDRHR4T084dXBTU25GaHg5K21IZldXV2ZOZHJsY3M0RXk5ZkZXd3VZUU5wczk0WEQ0OTMvNjA1K1czM3JycmMxSEVEalQwWFNmMnJrZzAzVXNkSlExdFF0NkJ3d1l3T0RCZzdHNkpaU3dkV1VDZ1FDN2QrOU94dE5xYW1xU1dVOW53VzBIcnFkSWJZVktzZEswK2ZQbnUrYlBuLzlObDh2MVRWVDkyUWw4WXc5QjlRNW9xSUJ3VStJQXlPeWVPUElIUXZFUXlPM1ZtWVROL2tPN0xSUUt2ZkQxcjM5OTJlclZxMk9Xd05raVp6b0V6a3kxM3B3QzUvRjRaRWY5cHM1cElmbjUrZlRzMlpQZXZYdlR2MzkvQmcwYWROclV2SjJTd2xaZFhVMTVlVG43OSsvbjRNR0Q3VW81VXVOcHpvQnNPcmZUVGd6WVdjNUlKSEs5eCtPNUV4aW5sT1lFMFZBQnU5Y2x2aDROK1FOaDBNVEUxMDRpYkE2QjIrajMrNWQyNzk3OUZTR0VuaUp3N1Z4VVJ3ZURUTFhlVW12ZVVndDY3WktRM3IxNzA2OWZQOHJLeWs2TGNVaW5YUEtnb3FLaVRaTEFucHZXVVR6TmFhWFpnVm1uMitsSURHaWhVT2dTcjlkN2w5WHlwRGhSYlBrclZIMTQ3RUs0c1FMNmpvSVJYKzFjMW9RUVk3dDE2emJXTUl3cmEycHFsdmJ1M2Z1ZlRvRkxUVExZQ1FacldJSk1tZDluLy8rb2tneVJTSVJ3T016QWdRT1ZzSFdWZU5xT0hUdllzMmRQc2pYS0hqUFVVVHl0QTllem5kdlowTkF3T0M4djcxdENpRHVVeXB4QTRoSFk4RUxDL2Z5MFZIMlFjRmZQdlE3Y0daM3ExOU0wN1N1OWV2WDZTaXdXVy9MeHh4Ly9mdlRvMGVVT2diUExSQXpBTkUzVHRQZGIyTmxUdTJYUEtXNnBJbWNud0ZMRkxSS0pNR1RJa0ZNMjduWktDRnM0SEdiSGpoMVVWRlMwNmZlMDY5TTZpcWVsV21tV3FDWGR6bG16WnJtZWUrNjV1MTB1MXh4QXpXRSswV3hZQ29IcTQrUEd2djluR0h0VHAvdzFQUjdQN0ZHalJrMEpCb1BQVHBndzRmZWJOMitPQWJwbHZXbTJpeXFsTk8xeDVsWUNTenFISzZRS1hMcFNFV2ZZeFJhM1kxc2tvNFR0aE5EWTJNak9uVHVwcUtoSURvUjBUdVZJVjU5bS9SVnppcHJUU3RPa2xDSVVDazMyK1h6M0FsOVdDbk9TM00vaklXcE9jZHZ5UDUzT0xYWFFOeXNyNnlmdnZ2dnV4VFUxTlV0NjkrNzlsaEFpNW5CUEJhMDlxVExGZ25NS25FeTNGQ2lkZTJwWEFRd2VQSmdlUFhxY1lzTG1YOEdNVWZQWWtIc052L3Z3VVNaMm9SZGZYVjNkcHB6RGJtSlBWM1RyS09VUXRubWV4a3JUS2lzcmV4VVhGOStyYWRwM2xMcWNKQm9xamoybWRyUnVhZCtSSnpTaDhDbmMwNHQ3OWVwMWNUUWEvZlhycjcvK3V5bFRwaHl5M0ZQTktYQ0pYVFRDN01oNmM3aXFISTJiT25qdzRGTXFxZEJsTGJiOSsvZXphOWN1UHZua2syUTVoN09USUYyU0lOVktNd3pEYWFWcGtVaGt1c2ZqK1E0d1JxbkxTV1RYRzYzLzFnL3gwSS8vd2JJR0dEZmo2eXlma0FrWVZINjRpWWRlM2N2NnlnaGtaak42NUFqbVRSL0NhS3NIUExwL053dFdiT0dWdlg0Q1pGQTZ1RDkzVEIvTDlOM3JZT3pBVG44S3ZGN3Z0eTY3N0xMejYrdnJueTBvS0ZndGhIQlo3cW51aUwwSlovd3RqY0IxR0h0THRlQnNnZXZ5VTBMODVheDdaUm51U2FQbXNRY2c4QkkzbDY1ajVrc2JXVmkybFJjWFBNVGlOVnVwaXZyb08yd2lOODlmeUMyajh6ckZheTh2TDJmMzd0MUpVYlBMT1ZLYjJEc1NOV2ZHVTBxcFZWZFg5eXNvS1BpdUVPSXVwU29ubWNBaGFQd2srZCt0cjI5a1JVUEt0ZnZ4djVqeGJEbFZlQ2dkV0l5dm9aWU42OWN6b3g3V2ZtY0lKYzE3bWZQNE83d1doc0xpWW9iUnpJYXRPNW4zZUl5OEg3cVlmTmFoazFMbmRxd0lJVWJuNStjdmpzVml2M25ublhlZXYvamlpeXVGRUpyRFBZMWp0ZkxaazBUc3pLbFQzSnhiejV6TGcrellzbk80UXl3V282eXNLOWFabDdOaXpod1dyZG1HMzVlTGUrYk1DL25kc2plcDhwWnk2UTNYY0dtUm4zVVB6V0wrS2o5OUw1ek9IU1hsdkxKc0ZRdG4rY2xidTVUcEozbXAxUGJ0MjVPRnQ4NmV6OE5rUG9XejE5TlJsNlpKS1VVa0Vwbm04WGkrQjN4QnFVcG5pQzlzYi8xMy9RNFd2TnBJTE9VdVc3ZldFczNMNXNJckxtZnBoQndJN1diV0Q5N2h6YjM3V0I4YXd1U0tmV3oxWk5CMzJGaFczbm9HUmJUdy9LS1hXRmhSeGFxOU1MbStva3NJbTQzSDQ3bHQ0c1NKWTJwcmF4Y1hGUld0c1dKdm1pVnF0dlZHd25DVHFkYWJTSW5Ea2VxaU9qZW4yUUkzZE9qUUxuYmhSS0hvR3VZdm44cmt2Qlc0YjVsM0phOHRlNU1xMzJobXpyK1RpWlR6VEhrZFVNclVlZk9aTnl6S3BXY3RadFdlWFBMOE9MWXJuMWlrbEh6ODhjZnMzcjI3emNKaWUydVVQWmtqSlVtUUttckplTnIyN2R1N2w1V1ZmVi9UdEhsS1RUb1I5UlhXUDJLcytlc0hiS0FINHdhMnNLRkNUOTVsL0xWZlkyTzZBVkFlTDNrZXlCczVrYmRHcG50d0Yza2VTendIanU5U3AwVUljVzVoWWVGemtVamtpVC8rOFkrL25UMTdkcU5sdmVtMGpzZ3liRUZ6eHQ3c1FhZE9jVXRkKzVnUXVTaE5GZS95NXlmMlVqanJQM2xzNXRsZHFCeGtHTlBuRDdPTnQzUXh0akltWGptS0o3Wjl3T0lyeDdKbTFIakdYM29OTSsrWnpMQ1Q1SW5xdXM3SEgzK2M3Q1pJTGJ4TkxlZXcwdG1wV2M5a2dpQVlERjdvOC9ubUNpRW1LeVhwWkZndFV0RzltMWl3S1VMZkN5WnljM3hkRzJHenFmMXdFd3ZlYTZaMmJ4VWI0aGxjZU8wb0pqczMxQjNhelVPdlZsRlpmNGoxRlJwOXg0emxqc0ZBUE5wbFQ0L1A1N3ZuNXB0dlBudlNwRW5QRGh3NDhGMHI5aGF6WEZNaGhEQVNobHByM00zcG1xWk1Fa2tJV3p4QzNkNHR2TDUvUHdmOEp1Nk1Ya3lkdklNUFA0eHo5dGxuZDhtMWYybVRCOFB1WE03YTBTdFl0dXcxMXExZng3SkhYMlBaNzY1azhkb25tWHlDeFMwU2lhUVZOYnZ3TnQwK0FvZWxsdXA2YXJGWTdIYVh5M1VmMEVlcFNDY2swZ3cwOC96eTNWUmw5dU9KcTN1UnR5TDlYZjE3OTdGcWt6L3huN3h1REN0T3FjZnkxN0ptVXdWMUFPNXNocDNSTGJFSS9MTVUvSFlDTkUyYk5HREFnR0Yrdi84LzgvTHkvZ3hvbG51YXROeHdKQlpzajhleTNvVGxzbUthVVJxcnlxbHRDcU9qNGMzcnlhQnpoelAyM0hNNFM2dGc1ODZFcTNyMjJXZVRrWkhSdGM0UmdNL3lVYU5Sd0wrZVorYk1aZEZyZWN4OGNpbXZibHpMUTZPQXVuV3MybnhpWDF3d0dPU2pqejQ2YkoxYVNseE54R0l4WWZkOFdtYTJacHFtVmxWVjFTY2Vqei9tY3JtZVVLTFd1YW45MTBZV1Y4SzRxOGN5OVRDVHJzdXUvaHA3bnY0R0crNDlpN05DMVN4KzlsK3NDVG51TVBnOE5qNTlFOXNXWE13MUJVRmVXL0U2aS9ZYXA4cHA2cE9ibS92VGFEUjYvNnBWcTBxa2xCbldSOWtMZUtTVUxpbWxabC8vVmd4TjJONU1KQklSNFdBejFRMGhvcVlnbytnTVJvNFl6QmtGR2VqTk5SdzRjSUNLaWdwMjd0ekpSeDk5UkRBWTdHSVdtNitJdkZ3Z3NJWUYwMlpSdm5BaGViVnJXTFZxSFZzclAyQnlTUzNyeWdGdkdhTk9ZTElrRUFpMHNkU2NMVksyb0RuSGQ5dXVwMVdmMWlickdRd0dKL2g4dnZ1RUVKY3EyZWprWkJpcytMOERCSUFOeTEraWRIbnJUUnVXLzRVSis3L0NxNWQ1cWRWZDVCWGtVT1J4VVRSNEdOZVViR05oUlMwYnFtRmlmZ3VWWVFOZlhqZEtzc0JYMEorWnc3SjVxVHJJNXAwdGNNN2dVK1owZWIzZTJWT21UQ25kdTNmdk0yZWNjY1o3VnR6TlRpd0lJWVJobXFacEwzaHVHM2R6aVc3ZE1tVkxNRUs0ZWpjYmF6OGh0N0F2WldjT1lxakRYYldQczg4K3U4dE1CM0hqbThnOTg2OWs2NEkxN0NrdnB5cGF3cDFQTHNYLzBBSit0KzUzTEk1NUtUenJVdTZZdDVCYlRsQlRVWE56YzFMVTdHYjIrdnI2ZHU3bllUS2Z5WGhhTkJyOWh0dnR2aDgxL0xGcmtObVRzalA3Y0tFajVGRmJlWWh0ZnBQYzRtTEdueUZZcy94bDVtMkZjVE8reHZJSk9SQnE0SU1HQUMrRm1WQzUvblV1L1o5R2NzZGN6RnUzOWllUE1PWFZZVUFqTDgvYjZYcEdqNE5yZXNtQUFRTUdORFEwUEpXZm4vK0s1WnFLRk5jVVo5ek5Gam1QSjFOMEwrd21QZWdFQTM2YWF6L2hnOW9xYXVPWGNxSFYyZURzVVQzNzdMUHAxcTFiMTRpeGxVMS9rclhUbmQ4ZXo1M1B2c3FkSitFRk5UVTFmV3BSY3lRSnRGdHV1Y1cxZVBIaUgyaWE5aUNuMlc2SExrM0JjQ1pmZXluT3JNNzYzLytabWVzakRMdGtJbytlbDBtdHB5K0ZXL2V6WWZuTFRIb3ZIMTkxTGR2OGtIdm1FS2IyZ2hMUEVNYXRXYytHVGV1WVZGMUVtZDdNaG1vVDh2b3hjMWdtRkE4OTVVNmJFS0tzUjQ4ZXZ3eUZRbjNHangrLzVLT1BQdEljMXB0dWlWa3k3aGFQeDl0a1RLWFhLM01LZWxQWUcyTEJJTzVvTTQyTnliS1JOc2ZaWjUvZDZVZU9kNm9QZkdOajR4RkZMWjM3bVpva09IVG9VTCtDZ29MN2hSQ3psVkowTVlxSEp1YXVIWWFpTDB4a09adFlzR1l2NjNkVlEyWWU0eTRZd2Z5ckJ5VW1GUlFNNGRsN1hTeGFzWVUxZTZ2WlFBWm5EVHVMTzZhUFlXbzNvR0RncVhyMjNKbVptZlBlZSsrOTR0ZGZmLzAzbDE5K2VhVnR1Vm5XVzl5K1k3cWtRdUtMajh6Y0FqSmxDODNONllYTkZyZk8zRi9hYVFaTk9rWE56bjdhb3VhTXFhV3gxT3pXS00wMFRSRUlCTDZRbVpuNWdKcVoxb1hac0xSTjk4RnhwY2NBR0RmcmMzbm9veDAwZVNJd0RHUDF6cDA3Rnc4Yk5td0xFTFd5cGpxUVhBK29hWm9VUXBqV2RGNXA3VlNRenBIajlrVGU3dDI3VTFCUVFLOWV2WklES3p1enVIVUtpODNwZnFhSzJ1SGNUNnZmTStsK2hzUGh5N3hlNzRPb3liWmRtek12Z28wdmZINlBmUnJnY3JtbURCMDZ0S0N5c3ZMcGtwS1N0NnhFZ20yNUlZVEFtVlN3ZzI2dGxsc3lGc2ZoakovaHc0ZDNTcmYwcEF1Yk0xSGdGTFhHeHNhMEV6cFMzTStrcUVXajBSbHV0L3RCNEV5bERGMmMvSUdKS1J6SGU4SkhKNS9zOFRuRTNjYjI2ZE1udjY2dTdxbkN3c0svU1NtZFNRVWRSMUxCSVdEU2NsM2JxVms2Z1JOQ01IejQ4RTZYVURpcHd1WXM2WERHMUd4Uk81ejc2UlMxV0N4Mmg4dmxlb2lUMXZDbE9PNk11QnI4aDQ3ZlRMWWVBeEtQZVpvaGhCaFVVRkR3VUZOVFUwNzM3dDMveTJHNXRRbEYyZUlXajhmVGlsdEhvbVlmSTBhTTZGU2xJQ2ROMklMQllJZUpnalIxYXNLNTQ5TXBhcnF1ejlVMDdTRWdRNm5CS2NhNFdjZG5pbTZQQVREbSt0UDVUQloxNjladGZrdExTM1pPVHM3dm5XNnBVN1RTaVp1ZFhFZ1Z0RlJoMHpTTkVTTkdrSjJkM1NsK1llMWtQS216VGVvb3NwL0N1VUhLanFrOS9mVFRIbDNYZjZocDJrSWxhcWNvN2d6NDBoMEpGL0t6dUovalpwMXl0V3VmZ296czdPd0hRcUhRN1ZkZWVXVzJvMVBCQTdpdFRnV1hhWnJDTUF6aDZGSWdHbzBLKy9NWURBYngrLzAwTlRWUlgxL1BvVU9IcUt5c3BMeThuSTgvL3BoSUpOSXBmbG5Yd3c4L2ZFS2ZVTmQxL3YzdmY3Y1pQZVMwMUZKaWFzTGV5RzRuQ3FTVTR0MTMzODM1eWxlKzhpTk4wMzZnUHYybkFjVkRFN0d4VUpQVlMzcVVWdG81VjUvUUtSNVNTdngrZjZldThmSjRQT2RObXpZTmw4dTFkZDI2ZGZFT3BuZklOSWtEa2VxU09wcnMyeHhGUlVXNFhLN1RSOWlrbEd6WnNxV05xS1hiSkpVNmRzZ3BhanQyN09neGRPalFIMnFhOWwzMWlUK055T3dPSmFNU0l1ZkxTVGhLbmd5SVdUMk11Y1dRWFpnUXNpR1RvUFNDeE0rY1FMcUNzQUc0M2U2eDU1OS92aWd1THQ3K3Q3LzlUWGRtUmpzU042Y0FPdXZaVWdYTy9scGNYSHhTUng2ZDBCaGJSNzJmVHZlem81SU9LYVVvTHk4djZOKy8vNE5DaUx2VkovMDBKYmRYNGxBTmNwOEpuODkzKzIyMzNhWjV2ZDRsdDk5K2V5MjB4czRjVnBsaEdJYnRhYlZKS0RqamE4NDRtOHZsd3Q1YVAzejQ4Rk5mMk96SnR4Mk5IanBNOFczU1VsT2lwbEFjVjNHNzdhYWJiaUlhalQ0M1o4NmNCcWRsbGs3Y2NHUkxPeEsyVkhFN1daTjRUNGdyV2w1ZW50d21kZkRnd1E3SGVhY3I2YkJqYXBiN09VZGRqb3JPU2xkeFJWUGMwakVqUjQ2VVFvaC92L25tbTRabGpiVnpTMVBFcmwyOHpYa09uTzZweStVaVB6Ly8xTFBZOXUvZmY5UXh0WFIxYWs4Ly9iUm41TWlSRDJxYWRvLzY2Q2dVeDUrTWpJemJIM2pnZ2ZpbVRadWVYYjE2TmVrc045TTBEV2d0QmJIS1JlVGgzRkdYeTRYVnBuWEN0MTk5cnNKV1hWMmRYSkdYdW5qbGNERTFaNTNhN05tekg5UTA3ZnZxOGxNb1BqOHlNek8vdFdMRmlsaDJkdlp2YlVGemlKdkVXdEpzK2FiSm1Kc1FRanJkVU9kaHU2TzJ1SjNJdmFXZm03RFpHOXFkN21kSDQ3eFRZMm9weGJjUHFzdE9vZmo4eWNySytrNGdFSWprNXViK2tiWlpVcGxheEd0L1h5U1FIY1haYkt2TkZyY1QxVFQvdVFoYk9CeHVJMnIyNHBYbTV1YkR1cC9XS085a201VFZVYUJRS0U0UU9UazUzMmxzYkF6MTZORmpwV1cxU1ZKaWJKYTRPUzAySVlTUXRxZzVCYzYyMkd4aE8rZWNjOGpNek94NndpYWxaTWVPSGUxMkZLUmFhdFkyS2VjU1kreUZLOUZvZEliVis2azZDaFNLRTB0RzkrN2Q1MVJYVndlTGk0di9MaFA5VjIwKzMvWlhlMkNsWmEyMXNkeWNGcHZUSmZYNWZJd2NPZkp6cjNFNzdzTG1GTFhVN0tlOTk3T2p5YmVtYVlwd09IeVpOYVZETmJRckZDZUhvcUtpb3J2Mjd0M3JQK09NTS82Wllyblo4VGE3OUFPSG9BbE4wMlJIY1RaYjJESXlNajczTXBEakttd1ZGUlhzMmJPSHFxcXFwS1dXNm40NnVncElLZXZRQW9IQUY2eDVhbXIwa0VKeEVoRkNET3Jmdi8vdG16ZHZiaG85ZXZUSGx1V1duTnNtaEdoanRaR1NJVTJOczduZGJ0eHVOMTZ2RjYvWFMwWkdCZ01IRHV6OHdsWmRYWjBVdGVycTZxU28yZjJmRHZlelRhdVVjNXgzWm1ibUE2Z2hrUXBGcDBEVHRDK09HREZpOXNxVkt4K2RObTFhbFVQY3BHTjJHNlpwbW5hbU5KM1Zac2ZhbkJsU2UwTHY1NVVwUFM3Q0ZnZ0VrcE02cXF1cjJ6UzFPMk5xNmNvNnBKVGlsbHR1Y1ZrN0N0UTRiNFdpRStGeXVTNi80b29yYW9jT0hmclk5dTNielJSeHN6T24wdDRxYjR1Yk01bGdXMnoyVjYvWG0zUkpzN0t5UHBjNWJwOVoyS1NVN1ZxbG5KWmF1cWIyMUF6bzRzV0xmNkFXcnlnVW5ST3YxM3ZqdSsrK1c1T2JtL3Q3UzlETUZIR1RxWmxTVGRQYVdHN3BTajk4UGgrWm1abU1HalhxdUNjVFByT3c3ZHk1azMzNzlpWExPbzVtVFY1S0J2UWJxbFpOb2VqYzVPVGszRk5kWFgyb3VMajQ3NENaeGkxdEUzT3p5ajZTNG5hNFdGdFdWaFpEaGd6cFBNSldXVm5acmxhdGcxWXAwbVZBZzhIZ0JHdVpzZHI3cVZCMGJ0eEZSVVYzYk4yNjlkQ3dZY1BldDZ3ejIwcHJseW1OeCtPeW80TGRkTEcyN094c1NrcU8zMGIyVHkwb1RVMU5hV3ZWT2hBMWtiS2xYVHR3NEVBZm44OTNIMm9BalVMUkpSQkNsQTBlUFBpV0YxOTg4Y0FOTjl4d3dPR1NKaTI0bFBxMnBFdWFUdGljNHBhVmxVVk9UczV4R3lEZy9qVDdHdzNUWk0rL3QxSzVldy9WKzZ0b09GUkRjMzA5Z2FabVF2NEFrV0NJU0NoRU5CSkJqOFNFcnNlSTYzRmhHcWFRTWlGc1BUM2hlYUpwMzZYcWNsR2NuRStwQmk0UGFKN0V3RXB2dGpvblI0SEw1YnA0MnJScEZjQlR0TWJiVE5Ja0UxTEZ6WmxJY0xxa3prVEN5SkVqajh2MDNVOWxzWlh2L1lUS3FvTlUxOVRSME5CSXM5OVBTMHVRVUNoTU9CSWhFbzBTamNYUVk3clE0M0hpY1NNeE5saEtJU1ZhckhyMzdVS0l1OVJsb2pocFNCUGlVU0FLc1JZSU5VSkdMbVRrMmQ2VW9nTXlNakp1cnErdnJ5Z29LUGdyWUhTVVRCQkNTRHZlbG1xNU9kMVJwN0RsNU9Rd2VQRGdFeTlzQjZ0cjJGZFp4YUhxV3VvYkdtbHE5aE1JdEJBTWhRaUZJMFFpVWFMUkdIcE1KeUZxY1JJeE5TbWtsQ0pZdGUxQ2w4dDFuN284RkoxTDZBd0lONEVlaHB5ZUNZdE8wU0g1K2ZsM2JOMjZ0Y0tLdDVrcGg1UlN5b1MyQ2VMeGVESTdHbzFHNlVqY01qTXprK1Vmdlh2M1BuSENGZ3FGK1dSL0pRY1AxVkJiWDA5alV6TW9NaklCQUFBZ0FFbEVRVlQrUUFzdFNWR0xFSTNGaU9reDlIaGM2UEU0aHRFNmdtajdodi90N3ZQNTVnSjkxS1doNkpURW8rQS9tQkEzbCtkemY3cDE2OVoxbWwvOW9vc3VPcGE3OXdadUF2YVNpTEcxRVRaQVdpVmRwbUVZeE9OeEdZdkZSRFFhbGZhMnE1YVdsdVMycStycWFxcXFxcWlvcUdEbnpwMlVsWldSa2ZIcFc4V1BTZGoyN3R0UDFjRnFhdXRzVVF2UUVuUllhckVZc1ppT3JzZUZyc2N4REJORFdpNG9pTEl6Qm54ZndHVDE2VkYwYXN3NGhPb1R1eFZPQUdWbmZyYSt5ZkpkMndIdzlmM2lwMzZNYU5XN0FGU2QrZVN4L05nbFlUTzJiVkQ1OTM5TFlxdThnWjFJQUNrUVVrZ3BNRTFKWEVMVWdHQmNhQ0ltTldKb0lvSkxoSENKSUc2WEg3ZXJDWStuRG8vM0VBY1haWEhHR1dkdzVtMGZmYXJmNTZqdDdmMVZCNmlzT2toTmJSMzFqVTAwK3dNRVdvS0V3bUVpNFVSY0xSYUxFZE4xZEQxTzNEQXdERk5JTXhGWGl4emNPVTNUdEhucVU2UG9NcGJiMGE3Nk80M0oxTHpmZW5mZ2p5ZVFtTVRqQTd5V3dlU1NTSmNFVFNLRmlSUUdramdtT2dZeDRrUmxuSWpVQ2Nzb1FUTkt3QXpUYUFTcGkvdXByYTJscHFibVU3K3VveEsyUUVzTCt5c1BjS2ltbHZyNlJwcWIvUVJhV2hMSkFxZW9XZFphc2w3TnlvQlc3M2l2bjhmai9wNjZEQlJkaW5CeklzbWdPTHhQNnVrKzY5bWlXYjA3RURkTmdtWTZ4RTJYcGtpS0d6b1JxUk9TVVZyTUNINGpUR004bUhSUFc0eFB0NEQ1cUZ6UlQvWlZjYUM2aHJyNkJocWJFM0cxWURCTXlKRUJqU1dTQmJhb1lab1NLYVdRU0swZ3Y4ZDNnUytvUytBVTh0YWFZd1NlMjBIa1g5VVlWYUV1OFpwZGZiUEpPSzhudWQ4Y2d0Yk5leFEvSVJON1MzMjVKKzAxZi9MWEozbUdhL241MWIxUDl0bkQ5L09iS0xpaWpzWXhMeE9PdGQ0aUVLTXZ6UnZ4ZFdyNXRlMlNTakNFTTVrQTBrUktBeE1CYU5JUUxpR2tTMnE0aFlaYnV2Q1lVYnpDamM5d296VTNrNW1aU2FVZVlhanIyRVB5UjdUWTlsY2RwT3JnSVdycjZtbXdrZ1dKREtpenNWMXY2NEphR2RDRUM3cHJ1aXJ0T1BYd1AvRXh3UlY3dTR5b0FSaFZRWUlyOXVKLzR1T2oveUU5ck43c284Q25lVzUrYitCUEpqZ3NOaS9nQWR3U3FRR2FCR0ZDV3BjMEtuWENVcmRjMGdoK3Y1K21waVlPNlUwYzBCdVByOFVXRElhb1BIQ1E2dG82R2hxYWt2VnF3WkF0YWpHaWxxakY0M0VSTjZ3c3FPV0NWbjY4dnBmSDQvNk9ldHRQUFNML3F1bXlyejI2cWY3bzd4eVBkc25mc2ZvZmovRFMzbUlLM0g1YUdnTzRoMDFrY0dBTGU1cjhOSWVMR2YrTm16aTM2UGhtZlh0NXV0MEVmSnpPYXBOSUNVS2FTRk1BQmxMR3BTazBZVWczY2FKb3VIRVJsaTY4cGhzUkROTGMzRXl0SGlWSHk2QzdLNHNzelhkOExMWkV2VnBOc2w3TkZyVkVFVzRzVVlTYkdCaHB1YUFtcGpSdEYxUVVGeFhkQzR4Uk1uQnFJUU02WmtPMHk3NStvemFNR2RDUDhwZnR1akcyZU9HWCtPcnM3M0xydHk4blkrTmE2cys5Z3h2dWVKQ1pZLzI4dmE3aXVEK2ZRSXdDcGx0V213L3dTaXZXWm1tTklHRzFZVnR0Y1dtSUdBWXhhUkNWT2hFWkl5U2poRUloV2xwYWFJd0hxWTM3cVlvMUhCOVg5RkIxTFFjT1ZWTmIxNUFvN1docG9TVVlJaHdKRTdXS2NHTkphODJ3dXd2c0xLZ0lIZGd4V2RPRXN0Wk9RVVN1cDJ2L0FvWkU2K3Evd3hIeGtKMmJtMWdha3BsUGRrNHgvZnNsZnVlYzNFemlrYy9OeGY3bUgvLzR4M1BUdUtSMmxsU2taa25qR09qRWlVa3JVMnJxUkNJUlFxRVFUVWFJK25pQVEzb3pOYnIvc3dtYkhvOWJMbWc5RFZacHh5ZnZyT0t2ZjkvQTN1WW9rVmcwVVlTcjY4U2pBZEhVN0Nlc3QzWVh6SnB4amN2bjlkNmI3ckUzLy9SNlNzKzdseGNQcE54UTl6SXp6cHZHUSsrbGNSMys3eWVNdldrWjVVcFRUaU95eVBqMUxmVForVFd5Q3gwWDdJVHp5Rjk5QzcxMzNrM3ZkNjZueHpmN3Q3bUlqM1M3NHZPblQ1OCtNd2VJN2hrT3E4MWpoYjAwYWNYYVpFTFlFdUxXSmtzYUowSkMyTUxoY0tJRUpCNmlMaDdnb041SVhCcWZYdGlTcFIwTmpUVDUvYlFFZzBSMEEwdy9GZVhWaEdLNm5RVWxiaVJNZGRsYWlLczk5L2pQN3dhKzNPR3p4ajVrMGE5ZXAvYW9YbUlMYTFaOVFNblVTeWhUMTh6cFl4Vk9ta0MzUzFNYTAwdkhrUC8wQ0Z3Yi8wbjlWWCtrN3BkMXVPKytuTzVmeXpxNjJ4VW5CRTNUSnE0KzR3ZFRIVmFicDFYY3BJdWt1TFc2cERwRzRwQnhZbEluR28wU2lVUUlHaEg4Um9qR2VJdmxralorT21GcjlnYzRjS2c2VWRyUjFKem9BdzJHaU1STnBBRFpjcENxeG9qZEJ5cmloa3k0MTFJS3BCUU41UjhNZHJsY2N3NzdyRG5aOE1aL3N1aWZMVWQraFhWdjg5SjdnNWg1VVM5MXhad3U1UFluNzRFQkdLOVZZanBDZWU1SlorS3AzVW56STl1SmJXOUUvKzgzYWRuZ3dqZXA3MUhkcmpoeGRITmwzZlRINHR2N09jV050clZ0d2xuYjVyVGFZc1NKeFdKRW8xRkNNa2FMR2FIWkNGRWZiNkU2M2tUQUNCKzdzRlVkU0hRWE5EUTJPVnFtd3NUaUpyaTdrWjhoQ2RmWEVkVGoxdURJNUtRU0laRmFYcDc0MXVabFB5bVpObmt5cFdNbU0vYWFlU3o2Wjl2QW4zZmdWZHd6R1Y3NjZYTnNQa0lNdXZhTnY3UDVDNWN6dWZCdzRyZVB6VnYyNFZmWFV5Y1RxQjU0Si9URjdTd0RHM3NSUmUvZFFON1lqa2JUdVBEY1BZSE11azAwLzNmYlVwTDQwdi9pME9WdkVZdWwvSWpQZFZTM2QwVUdYRDNuVTlXd0ZWODJqMXN2c3djM25zbVZjKy9tSEd0UHNmdWNPL251Tjg0NXhrYzBpUDdnZVE2TWFGdkRkaGo2bnA4eitHcFNFd2xDdUt4RFF4TkpxODFJSkJLSVc0a0VYZGVKeFdLRVpZeVFHU1ZnUkdpS0I2azdveS9oMzF4RXo5ZHZTaDVGLzNGbXUza3NiY285cW12ck9GUlRTNTA5dGNOcW1RcEhvc1RpRWt4QlpsRTNYQWVhOERlN1JKYTN0UThVaVFnZjJINUozYXI1ZDh4Nk5zWU5QMXZDczROaDYvS2ZNK2YreHpocjFVS21KaS93ZkNaLzc5dHN1T2JuUFBUY1ZieDZkMGV6SmcveHlpdjdHRDlyTEhuMnR3Njh6WUtmTG1OenJEL1gzUDF0SmdlZVk4N1NGc3A2dDdENXFWRTgrdFJNaHZtVXBweHd2SVZrL2VKaXNrdmp4RmYraytZTlJYVDd5Wm13SjRycmdiRkV2dk15TGRzTnFOcEg1TlVvK3A0T1lpVkR4OUo5R29SdS9RQzlhRkpLQ01OQU9nVFFOV0VjT2VPaVJPN2JkM1MzbnlZYzJGZkJDOC8reHhIdk4rbUtyL0hGOHk4NnFzZjBYVFNRZ3VlbUFoQmF1WTJtSDZ3OThzOW9ucHZlNlBmQU94ZnQvK2ttSUc0ZGlYNVNwQW5DTkVHQXhBQnBJSVdPSVYzRUVaYXdSV1Nja0JuREp5SmtHbDZhbTNiUXdCZW85NFNURzY1aWRhT1E3T3BZMkE0Y1RHUkJtNXFhQ2JRa0NuSERZYXNJMTVCSWFhRExESEo5UWpSR3drUTBqOUJNS1VpOE9NM3I5ZDZWZDk2M1diazhuN0krT1FCTW5IRTV3NVl0NDRNS21EckM4V1NGbHpELzdwZVo5S3ZIZVA2YXA3a2xYU0g0M3RkNTZlQW81cDJmay96VytxWEw0UGJIV2RsN0s0c2V1SXNadWRONTlybXJLQVBXLy9SZVh0bzVrMkVqbE02YzhMakt0UFBKcW4yVDJ2dGlaUHppTW9xdTkrUC8xbjhUM2dQaWExZFJjRVVQV3JiWFFkVWVBai9hMDhHajlDRDdKeU1Rci82ZHdJY0dUT3JBb252Z2VncG41Q044Y2VJci8wSHozMExIY1B1cFQ1LytBN24va1NlTzYyTkczNmpnd09Dbmp2bm5TbjA5cndIK0RlaUFMcVdNQzd2T1RhS1I2RXJBQk9LWVVwTkN4SVVoUlR5ZXNOcGtuQWh1UW1iQ0pXMm9yR0hIZFM4UXp5aG1lR2EvSTd1aSs2dGFYZEJtZjhJRlRmU0JKa1lSNllZRWFSQ1B4OEhud3lVa2hoN0hxdkxSN3YvYnJ1dUZFRmY2Q25Pby9jZGpUTHZ5U29hZU41blN5LzZERGJFWTZUek9rdW5mNXA2QnUzbmlwMytuTXMzdFcxZjlIZjlGVnpIZVlZSDV2RkM1WXg5YmQrNm1QT29sTDdDUHlnQkFDLzVBNG5iRmlVZjY0NGlpSG5oSEZlUHJDMmJNaDZjdzhXWm9lUzVrNE1qWkxOZjFFOGp0K3duK1grNXpXRjd0WFNMOXViOVJlKzFmYVBqaEx1U2tTZlM0cWNjeDNLNDRrYmlFZHRtbWdUKzV3T0dTZWxwcjI1SWRDWmhPbDVURTlGMWQxNU5kQ1JFWlMzUWxHR0dhakNCMWV1Q3dIUWx1Z0ppdWM2aTZwdFVGRGJaT3c3WHIxZUptUXRpTWVGekVEWUhISllRUk40VmhDbTFvWHFGTGM3bnZCQ2hmOWhDelh1ckZ3bC85bnFsRDh2RUYvczZNeWM5MThQU0R1T1dCcTNocDFuTXNlbU42cXF5eDdCOHhKdjlzRkU3UGN2VGRQK0RLNTVieHU0cEIzUHlySll5dWY1bTUzNzZMeGJRUUhUaUxKNGVvaStta0NOdmYzc0JmZEQ3Wk0rTEVubnFWNW0wOXlQdVBhUlRsdVlCcUFuY2RJWnZsTFNiN213UFFpcURIUDB1dHYySnVCTkR0Lys0a2ErbC9VZnVyT2l1bTJraThEdUxiNnpEUDZrdkJ0S0c0WC9nWDhXVE05UWkzSzA0b1BUM2RyaDJoOWY3WEZ2T2dibGx1VHBkVWdwQVNhVnJpSnVQU0ZDSWVseTZYQ3gwelVRSWlkY0ptakJZalFyTVdwc0Zvb1VadnBzaWRoMGU0MGd2YkFhc1h0TEdweVdwd1Q4eFlpOW9ON3JwTzNBQ2thWThqd2hRdU5CRVhwcFRDazkvdm04QTRhR0h6UDNlVE4rYWJUQitTbjNpR1FBdUh5dy80UnN4aS9wV3ZjL05UeThpTmVaTWxIZEgzWG1hTjd4S1dwcnFWdnY1TXZmc0hURTI2dEZmeDVBdFhFWTJDVDhYV1RpSWhvaStzSmZxQy9mOEEvaHYzZ2RjRnNhT29QWXJWMFRKN09TR254VDNxZkFwL2trWHcxcldFOS9qeFBuQTkzVXUzMFREN3c2Ukl5U2lKbkJzdXZBOWNlNWpiRlNjdFRJSDQ0cklCZDA4ZXNmZUJWVW1YRkd5WDFHcTVRaVJNcDBUNWg1WVlUb2t1VFhSY1JORUp5eGcrMDBPTEViRUtkMXM0cERmUnoxdlEvam5Ea1FpSGFscG5yTFVFZzRuQmtkRldhMDNYZGVKU0lqR0ZFVTh1T2haQ0NIRk5XZSs4RmlHK21YaTRITW9HNWxQM3IyVTgvOC9kYkgzdjd6eDAvMUkraUVHMFEzWExZZUxkMytaU2dnUmFyM0xXdmJTUm9pc3ZaOWhSbmp3bGFwMlVWRkhyVzBydXo4L0RWOWpleFRUMzFCSGY3ampxb2hDTkpyNWZGMFBmV0ljWU40YThiNWJpTHUyQlo5Slk4cTdJSXY3V25rVDErbUZ2VjV4TWVyaXpyNzA3NTh1NXBEVElKMXhScWFWMkpCaUdJUXpEd0ZrQ2ttaVVqeEUwSXdTczhVYTF1cCtJMmI0OVRtdFhzNVpjbmRjcWFyb2V4N0NHajVpbWFTMW1RVWlFZUd6dTJObGVXdlZuOU8wLzVLRVJoM2ppZTdjeDdZRVYrQytieGN6aE9VVHJEMU96Vm5nSjgrOGUyZnFITmZBMkwvMnpGOWRjMWw5ZEVhY2FmZnVUT2FrVVg5OWpMOEdRYS8rUCtoL3VRWHh0RWtWLy93YUZQeTVGdnJxV3hsOVdIOVh0aXBPSFFBeTlzK2VsbDlLMmFMZE5INmxkdEdzbWhBM0RTSlIvNk5MdUpVMklXOGgyU1kwUTlVWUwxWHBUKytmNzV6OWVZbGQ1UmJzRkxmNFd5eVZ0M1R3bG90SEVMb080WVFocFNtM3Jodi9OSDF4MnhqdHduSnNDRHJ6TjgvL01ZZXIwVVJTcGE2SlRjbURjeTEzNjlmZlpjTlV4bUJzRGp1cHVobUZRV1ZuSmdBRURqdnFodS9ET2d3NTU0NDAzMHY5aGtuTFBILzd3aHp1ZWYvNzVPaUFJaElDd0VDSm11YWlHRU1LMHRsbEphOUdMdExkWTJjdGVjbkp5Nk5hdEcvbjUrUlFYRjFOU1VzS2dRWVBhN0VodzE5VzNyMW16VnVjbHJEVnIwMVE4Ym1CWTFwcVVDWFV0R3pqZ2x1TXVhZ0I5THVDVzZVbzhGS2MrRXlkTzdEU3ZwWFV0Nk9kRzZhaFJveVk5Ly96eksrMVlteEJDeHlyL0VFS1lRb2prbWo3bjNsRjdXM3hPVGc1NWVYbms1K2RUVkZSRTc5Njk2ZCsvUDRNR0RhS3NyRldLTkhzcFN6RG9xRm16ZHhmWW9tYjV1NlpwQ3ROcW5kcjBmNnR5WFM3dEZuVnBLaFNLbzZWYnQyN1h6SjA3TnpmcGprcnBzZHpScEV1YVdOZHBDbXU3bGJCTFB4THJCeEt0VnZhbUs3L2ZUMk5qSXpVMU5ZUkNyZldLbWoxbkxSUU90NDc1dHVKcXVwNFV0bmJXMm9oaFEyWUJnOVJiZFhyaTZwVjFlcngyemFYZTdPT0lFS0xzdnZ2dXU1ajJTUVNYbEZKTFRONld3alJOTEdGTDFyVFo0bVkzeU5zejIrd1Zmb2NPSFdwOTJ4SWRCZ2tYTkdLTitVNjRvRHB4bzYyMUppMXI3Y2F2WCsxeXVWdzNxYmZwOU1VM3BxRHJ2dll2RkI2RENxcGFrZU5OZm43K1YwdExTNzFwckRiTnR0b3NjV3RudGRuaVpvODFDZ2FEQkFJQkdoc2JxYTJ0SlJKSkxIL1JuTmFhTXd0cUQ0ODBEQVBUTUszbExBbHJiY21UaTI0RVZPUFNhVXplUFdlVGRYVi9YSDJ6dTQ2bDFqZUw3T2xua0RkbjJOSC9rQ2RUdmRuSDMybzcrKzIzMzU1d05GYmI0U3czcDlYVzNOemN4bXB6Si9ZWFJOUEcxaEsxSkNhR1phMVpGcHZtZHJ0dlZHL1A2WTNXelV2MyswZWQ0cDlBRGJ3NTZzMytIQ2d1THI0Q2VOTVN0cGlVMGkyRWNKTklKR2d5Z2JES1BxUmhHQ0llajh2VVdGc2tFbWxqdGRYVjFWRlNVb0xiS3VXd2Q0SW1sVEZ1MVpFWXBvRXBKVkpLSklqUXdSMVRnQXZVVzZNNDVjbnNCa0o4L3M5akduQm9LN1RVbkRaYnNUUTRiK2VyaTBjTnZ1S09qWmJGNWtGS0hZRkxTZ3dTaGhTbU5ER2tnU0YxNG1hVXVCRW1IZytpeHdQRVlrMUVvZzJFSXpXMGhBL1FIUHlFK3BiZEhQTC9PeUZzeVdMY3VHMnRHUmkyRzJwS3BKbFl6Z0pTZUQyZUdlcUtWNXp5dUgzZ3kvdjhueWZVQ0pXYlFRK2RkcWQ0WU4vaVNjQUhTYXNOUEVJU1IwZ1hDRk1paFpSZ1Npa053OFF3VE9LR2lXNFk2THBCVEk4VDFYWENrU2pCY0pSQU1FeFRvSVc2eG1hMGFDVGhndXB4dlcwVzFISkRyYVFCVWlLYTltNFpJWVM0VmwzMWlsUGJuSEJCVHM4VDgxd3ROYWVscUFGNDNPNnIvdmUzQy9zbExiWkVuQzFsTndLWVVnb2pFV3NUY1NNUis5ZU5PSG84VGl5bUU0MVo0aFlLMHh3STBkQVVRSE9XZHlRTGNXMFgxRFFUYm1qQ1d0T3lzN091VTFlOTRwUzMxUEo2SitKcko0TG1BNmYxNlI0N1lzaUZwR3l6UWxvWlVva21wUlNtbEppbXhMQVRDYmE0eFExaThUalJtRTRrR2lNWWlSSUlobWdNQk5HU1RlNU9VVXRhYTNiQ0FMSHFUNy9MMERSTkNadmkxRVM0d0pzTnViMFMvejVSbk9hYjVuT3lNcTZZT1dWQ2htMjFTVnZjRXJQYUJJbVpSaUpodFVrTXd4UUpsOVNhL3FISGllbHhJcGJWMWhLTzRBOEUwZXdzcUc2NW9IYlNJR210V1NVZWt5NjY0RnFnbi9vRUtFNE5JZE1TMXBrM0I3SUxvWHNKYmZiOG5TaTY4RUxtNDBUSm8zTnZIWmZHSFhWSjBLUzBoWTJrMVJZM1RPSnhFOTIyMnZSV3F5MFVqaElJaFhIcnVJbmp4c0JGWEFvTUtZUWhCWVlsYUpacWF1N0MwdWtuSkVPa1VDaE9LM29XZEw4RWVOdGh0Ym1GeElXUVd1SXZrSlJTSWd3cE1Vd3BEZE1RY2NPUXR1V214MU9zdGxBRXJkVU5qU2RIaFNSYXA2UjlpTWJHeHVGQ2lNdlVXNkJRZEQyaWIvNkdvWGU4ek5aTyt2cmNMdGNsYTVjc1NFMGl1Q3lyTFRuT1NKclNLdGcxTGN1dE5kWm1KeElTVmxzRWQ3SnV6UkkyTTlrVG1oQTFRT1RrNUh4TlhSNEt4UW1rOGpXdXVQTVZ0clYrL01udE9aREowNmN4ZjBvSmh5MUVhZHpGaS8vclovejBNU2R3eWZndUhycnhLWmFsamtiem5NdmlsYk9ZZklTZi91THd3ZU9BVDFLc05oMkJoaVJSK2lHUXBta2xFcXpTRHp0ODFqYldGbXNWdHRha2dUWEZ3elJ0TjFSb21uYTF1dElVaWhPTVp4QUxmanVIRzNvQTZGUnVXczJjUjU5aWJ2YVBlUGJDd3pUeU4yN2pkOHVxeUx0OERHVW50SEhDemFVUFBzYXo0NC85SjNPek15Y0IvMDNiT0pzYlpOeXFraGFtRldzelRGTWFpVDVTbVlpM0dlaEdhNnd0SEkyaHBicWc5b0hWaUJvTUJpOEJocW1yVEtFNHFTcEh5WmdwM0R4RVovT1dHaXIvNTFkdDNjdnFONWcyN1JmODhyK2VZZXdEYjdCSDM4WGMyUTh6ZDVOMXUxN05TNC8vaWduVDVqRDArb1hNV1Z1ZDNFVVNyZHpFUS9jL3pNaHAzMlhvamIvZzloVzdxTFZ1Vy8vNGc0ejkwWitaZS84dm1IVGpmWXk4NHhtZTMzNk1kWGV4U3A2WjgxMnVXRnFaZU03R1RkeCsvWVBjL3FhMTRyejZJeFkrOE1qUVFmMzZEYlVFcmRVZGxiaE1LVFhEbENKdW1DSnFtQmlteE5RakhLenpVeCt6eXovQzdQN3czN3k1UDhUdURXK2gyYUtXTHI0R0NKL1BkNVc2cUJTS2s0MU83ZlozV0xiRHc3QWgrWlJjT0k3Uk5SK3h5bHJSV3Z2K1Iyd3RPWmV2WFhzbkczOTZFYVdlTTNsMHljTThPc2I2OFpvcWFvZC9nMWRYL29xMXM0dFp2K1JsMXJRQXNRb1dMZndMVzRmY3dOcVZqL0hoenliaFc3MkVPYXZyazg5Y1Z4bm0wbnZ2WSswZkZySjBURDJMWG5nL0tYeEhoYmVFVys2OUNQNytaMTZzOUxQdU55dlpQUHdxRmw2WUI3RUtGdnpvUlRZUHVZN1gvL3I0ZWM0NG03UXlvNENtQ1NGY0FqQk5Jb2JFTUVGQ011YVdHSzBHcG1IUzgreHpFNjZvdy8zRWJuYTNEazBJY2FXNnFCU0trNkZsdTVuLy8rWXdQeGxqNjh2RTZiT1pQeWtQT0lkcmhxeGs4WnVWekN2Tlo5MzZLc291dks3am1GcmZjN2xqVWpGNVFONlljeWg3K2cxcWd4RGQ4VFlyZ2lONGR1YVppVEg4SldPWVAvMGRKcXgrbi9JcGx3SlFPT0pMVEM1T1dJMmpSNVRBK21vcUljM1kvaml2UFRLSFVzZDNMcnpuNXl5ZGxJV3ZkQXFQWHI2TkdRdWZKQzlZd3J3bngxRUVSTGU4d1lyZ0NKNmNlU2I5dkZ3Q0xFMjEyb1JJZENJZ2hLbUJRRXJNaFBVbFRNT1VpVGliaGlIQnRGeFNkNnExWnJ1aGdBaUh3MU9BdnVvS1V5aE9kb3d0bFR3bWZ2bE1Gcnk4amZMcCtieTJJNThyYnlzK1dxODI0WUxxRUcwTUVDMCtpeExIMkxtaW52bjRHcXM3dE1wOG55ckc1bUhZVnk5aTlNc3ZVdjdsNjVodS9VN1JSaitCcGdwdXYvNTlnRDREQnZRZjhja24rOTVyRzJkREJ3UVNJWVFRbWtDYTFoUnowelN0amdRd3BVd0ttNVlxYXBhbEJpQzhYdThVZFhVcEZKMlRvdkZqR1YzelBzdit2b1hOSmVPWVduTHNqK0hya1ltdnVwcktXT3YzYW1zYWlQWW9QczZMbEVLc1g3YWF6U1VEOEwyMW1oZXR4V0crbkR4eWUzNko1U3NmWS92S3g5aSs4aisrbUdxeFNkbmFpV0JLaVNHbE1HV3FLMm9tRnBTYWlkSVB6UkkwZTZpYnNNczhMRGRVQ1p0QzBWbkpPWXRyaGpmdzRyS1BLSmt3Z3FTdWVUUHhFYUt5NmNoQmZ0K0lpNWp1Zlo5Rnl5cW9CYUxWbTFpd29vclJVODQ5cnFVaTBTMnZNUGV0Zk9ZOU9JZEh2K3huMGVOdlV3bjRobzlsTWh0WnRLSUNQNUNoTjE2VVlxMGxWL1JKcEdaYW9tYUNFRWlpRVYzb1JweHd3RTlkSEtTWnFHdHpweVlOYkRjMEZBcGRyTnhRaGFJems4WEVTWVB3YmZCejVYakhxUGFTYzdqNTNIZDQ2TTRmcyszQmhUeDZ1SWZ3RG1UZWo3L09nbDh2WmRJMFA5SHNmQ1orZFRaUFR2azBvOS9ieDlqZ0xCYTlNSWtQZnIyQm9objNjVU94QjJaTVkvSTlMekIzOVZrc256S01oVCtleG9KZkwyWENNajlSYjE2ZnkyWitlOGcvbHYzbmh5VDdSbkZKbVJnWmpoQkNBeUdsa0Y2WElLcEhPVmdmdytWeTQ5TWtwbFgrSVhyMjdFazBHaFd4V0l4NFBDNU0wOVNrbEM1ZDEzK21hZHAzMU1XalVCd2RuMmF2S0IrditteVcwS1kvTW1sNUNjdC9lUkVscDhoNURJWWlTM0xHWHZzaTBBSUVnS0NBTUlLb1FPaENZR2hDbUc2WEpyMGVGejZ2UjJiNnZHVDZmR1JsK3NqT3pFQkx6WWFTcUYvVE5FMmJwQzVWaGFMekVtMnM0UGtWMnlqNThybW5qS2dCWkdYNnprdm5pbUxOYWNOdXM1SlNKRG9SVEd1RmdaSHNSTkJTaW5LUlVvcUdob1pocUdVdENrWG5aYy9MWEhIck03elU0eW9XVHNrN3BYNDFJY1RacTUvNVVlOE94RTFJaVVDQ0thMU1xTE9IMURyY3FRM3ZKSHBETDFKWGprTFJpU205aXJVclQ5M2ErVEZubnprTTJHOExtd1NYa0dnSTIyS1RRb0tVZHUrb2RkaGJyWkpaVVZwSEZBbVh5M1dodW5JVUNzWEpvbnRlemlqTFNrdE8ra2djc2xXcnBOMC9LcE9WSFlaMWFLa1cyL2UrOXoyWEVHS2lPclVLaGVKazRYRzd6aHQ1WnIrVWh2aGtuSzExbEJHV0t5cmJ1cU5haWh2S3d3OC9mQUhRVFoxYWhVSnhFdW4yL0NQZkxYVmFiVExSRkovWUZpL0JtcTZMdEVRdE9kTElhYkZaQ0ovUGQ1NDZwd3FGNG1SVFd0SnJTSHRYRkszVkhVMFlaYVoxR0xJMUVhbzV5enhJekY0N1g1MVNoVUp4c3NuSnpqekhZYkcxS2Z1dzlVcGFXVkpwN1Q4MlpHS3NrV1piYTFKS2NlMjExN3FFRU1waVV5Z1VKeDIzeS9XRkFiM3lYU2tXbThzU05FMUtCRmh4dGpidWFHdU1UUUJpeVpJbFh3UnkxQ2xWS0JTZHdXaGI5dWg5L1oyaUpxMTlvemhXOHlYaWJNNmFOb2ZGQnBDUmtmRUZkUzRWQ2tWbjRjd0JmZHNrRUdnYlp5TTF6aWFsaVNuTlZ1VWpVYjgyUnAxS2hVTFJXZWlXbXpXRWRzbUR0bkUySEhFMjAweTBXYmtkWTRxRUVPSmNkU29WQ2tWbndlTjJENmQ5akMzWkw0cXpuaTNwanJaYWJPemF0YXNuTUZpZFNvVkMwVmtRUWd6NjVmZG01WFFrYmlSVUxWblBacnVsZG94TjlPblRSelc5S3hTS1RzZWw1NS9ieHhJeWErQWtHaEpoVDlXVldKVWRWaGVDbEk3c2dzZmpVY0ttVUNnNkhYMkxDL283ckxSMnRXeFlJNHhhdXhBU3dvYVVVcmhjcnJQVktWUW9GSjJObkt6TU14eWkxa2JZckRoYndpT1ZDTXNWRlpyZEl5cUVVTUttVUNnNkhSNlBlMUNLcUxrY0ZodXQ0cFpJSU5pdUtOWWR6bEtuVUtGUWREWTBJWVk0ckxUMkpSOXBFZ2dhSUdwcWFnWnp1SFdCQ29WQ2NTU3FOekYzem9NTW5Yb2ZjOWJyeC9PUmZTc2Z2Ny9RS1dqU21zZEdzdVREVGlBNExMYWNuSnhCNmwxUktFNVgvTHg0L3k5WVZBbFV2OEcwNzc5QjVURS9oczZhRi83Q3VwNVhzZmFsWC9Ea2VFL2JtN2UveElRYmw3SW05dWxlNGREU2ZrV2tMZEsxT3hBU2dxYnJCdUc0WmJHNTNlNHk5ZVlxRktjcExidDRzM0VnRjVaQTdaWnRSSWNQK2hUTFljTFVOdXFVakJqVVpxdDhrdEtMZUhMZUZNWjdQOTFMTE95UlY1ekdIUlZ0RHlrTTB4UzZBVzRwcGRBMHJWUzl1d3JGNmNaVzV0NzZJdXVDWWVwaUhqYmYrQkhSWUlDb3Q1SUpOZGV4ZHQ0NWJlTlRzVXBlZlByUExGNWZSUzJaRER0M0NndnZ1b0JoT1pVODgvMW5lR0pIbk5pT1JZeGRQWlpuRjEvRGFPZlA3bGpMN1kvb1BQcW5iekQremQ4d2NobmNVQnBtM1k1cWFtT1pUTHpwTmg2ZFZJeXY4VzFtM1BvT2VSZG1Vcm05Z2RvbUtQdnlOQmJjT0tSUFcwc3RHVjhUSmxKb2dHN2F4bU0wNFlvS0lRYXFOMW1oT04wWXhxTy9mWVNWTS9veWF1WjMyZmlIT2R4Uk1vajV6enpDVzZtaVJvZzFqei9ERTQxamVIYkpZMnhmY2lmWEJGY3o2L0ZOMUZMQ25iKzhqL25EM1l5NmFSNGJVMFV0SFRVTk1HVVdhMy83Q0cvZE81RDFTMTVtVFV1cmE4endHMWk1K0dFMlBqT05vdlV2OHBNM1E3MHR5Nnk5dUFGU0NPRjJpY1FkM043RURVS0lBZXBOVmloT1IzUzI3Z2hRZGtZeHRGVHlRYXd2dzNxa2MxZTNzR3g5SnROdnVvaGhPVUJPQ1RmY05vNjg5OTloWGVPbmVOcWVaM0hOaU1UYXdMelNNeW1MTlZBYnRHOHM1c0l4QlFsaDdYRU9kMHpJWmVNN08wbzZFRFY3c1Fza0J4VkozTllOU3RnVWl0T015dFhQTUdOWkpmNm1NR3g1a0hXRXFRdDYySHhyQlRjLytEM3VkQWFvbXZ6VVVrQnBUNmM0OWFXRWo5alRDUFQ0REMvRXlqTkVkU0JOREs2b09BLytIZW1YWXJFSkNacEltYVpyeTV1MmE5ZXVZaUJEdmMwS3hlbEZ5WlE3ZWV1WmFZenYreVdXL3VFUlhwMTVKbWRkZFRjYmY1c2lhZ0RkOHlpaW5qMDFiZDNKV3ZJbzdmSDV2czdLeWdiSXpzMzQyYnhiY2pxMDJGTFFDZ29LZXF1M1dLRTRUYW1wb0prdkJxQUFBQ0FBU1VSQlZMeTRoREtnZkU4OUphWEY2ZStYTTRLWjQ4T3NlT0Z0dHJZQUxaVzh1UFFOYXMvOUVoT1B1N0JWc2VwL0svQUQwY3EzZWVMTk1PTW5uTWtYQjUrUjV4Q3kxbnEyRktScDR2YjVmTVhxM1ZVb1RrLzhsUTFRTW9ZOC9KUlhlaWliNHVuZ25sbE12dmRPYXAvK003Tm1yOFFmeTZScy9CU2V2V3NNUmNmOVZlV1NWN21hYWRmdm9qS1d4K2dwTi9Eb3BEeWFkL2ZJNjhCYWExMUdKUkNHYVVnUmpVYnY5SHE5VDZ1M1dLSDRiQmlHUVdWbEpRTUdIRVBJK3VOVjZzUTVhWHliR2JlK3o1Vy9uY01OS1paZ1pYWGRnbjVmdnZrZElHQWZBa0lJSWdJUkV3SkRFOEowYVpwMGE1cFdwTTZtUXFIbzdHUmwrUEljYm1nYlM4MDU1UU1rbXFacEJlcVVLUlNLem83WDQyNFhZeU5kakExd0N5SHkxU2xUS0JTZGdoNFhzSHpsQldsdmNydmJDRnY3UXlKc21kUDRiQlVvQ29WQ2NVSndhVm82VjVRMlZwdFZxS3NCZWVxVUtSU0t6bzZtaVJ6U3hkWmtHM0VURXRDRUVFcllGQXBGcDBlSTlzS1dhcm5aWFZVYWtLMU9tVUtoNlBUQ2x0QXFwL3VacHV0QUpvVXRTNTB5aFVMUkJTeTJ6QlJSYzJpZWJDTndHcENwVHBsQ29lZ0NaQnpHRFcxanRXbWs3YWRYS0JTS1RvZTN2WGVhVHRaUXdxWlFLSTZHRUp0WFBNT0U2Ny9MME8rL1J2bkpFN1oyQ1lOMkFpZGI1NGNyRklwVGxTMS9adExDajRpaXMyN1JRdVp1K2hRYnBDcmY0YUZsZmlZL3ZKRHR2N3lVNDdja3BaNTEvL01HYTZxUDZzNnV3MWhzMWtaNE1HbHRTMUFvRktjb1d6ZFZVRFJtSUQ2cWVHMVBNUmNPOFJ6N2d6UTJVSnZkbHd1SEh1OWNZd092clZqTmEwZTNGa3ZyMEVxelRMWEVKbmdRVWtxcDNucUY0clBUMmFaN2xQL1BrOHhZVVlXL1NjZlhQUk9mbmxqYVVwamRrNXQvM0g2WVpPMm1sNW43bTNkWVg2UGo2M2ttMDJkOW5mbmpDNGl1WDhxRXh6K2lMZ2k1MlptTW4zMGZ6MDVxVy80YXJkekVnbCsvd2lzNy9FU3ppNW40MVdrc25ING1SY0M2UmZjeE4zczJHNzkxWnVMTzYzL0QwTi9rcy96SGVTeTRmeTFibThLUW5Vdlo1YmZ4NmxjcjB5NXplZlMyY3lnQnhQQ3AwNEFnaWVrZWZxQUZDQXFJU3RDQk9DQTFFcGFiUXFFNHhTajc2aHcyL3ZZbXB2WThoMGQvK3dodjNYc09mUytjemNZL3BKbVFXL2thc3g3OWlKSlo4L2h3NVM5WWUxcys2eDVmd3FJOTRCcy9pNDBQanFPdys3azgrYWRIMm9rYXNRb1dMZndMVzRmY3dOcVZqL0hoenliaFc3MkVPYXZyRC84Q1N5NWw1UjltTTcxN0psUG5Qc0tyc3daYU43UmY1dkxRV2orSDFTcVJtQk9lR01xbW9RR0d1Z1FVaWxPVW1pcktldzVpbUJmS3QxZFROcnh2MnJ0dFh2ME9sY09uTUc5OEFUNDhGSTJaeXJ6aERheFlYWEhFcDRodWVac1Z3UkhNbTVtdzBId2xZNWcvdlMrYlY3Ly9LWk1NN1plNXJIOXJHLzcyV3RXK1Y5VENEY1JJcmxOUUtCU25CbHQ1Nkk2L3NLYkpUMTBzazJrM3JrN3NETTEraEFudlQrUFZlV1BhTkluWE5vYkpLeTV3ZkMrTGtwSmMvSlgxUkJtWXNvb3ZSZGdhQTBTTHoycXpLTG1vWno2K3htcHFqOE52a2xqbUVzYWYwS3FqUXVNWTdxeFFLTG9LdzFpNCtHR1dmam1mQys5NmtJMS9tTVhVbmlNU0xtbUtxQUVVOWNqRVgxMlBQL2tkbmNxYUFIazlDZzRyYWdDK0hwbjRxcXVwZENoSmJVMEQwUjdGaWJIaG43R2d6RnJtUWw1N3JaSXBYOXNJVzFoZEJBckZxVWlJOG1vb0s4bUN4bXJLdmNXVWRTQXlvNmQ4aVpKL3IyWFJKajlSRW9tRUo5N1BaL3FVZ1VkOEZ0K0lpNWp1Zlo5Rnl5cW9CYUxWbTFpd29vclJVODZsRENncHljZS81U1BXTitwRUd5dDRmbldGUTZFOCtMdzZ0VFgxUkpQZlM3L01KUThpUi9Wcnk0UXJHbElYZ0VKeEt0TEFCNVVGbkZVQzdLMml0dWVnanV2UFNpNWw2ZHd3YzMvekNDTWZzYktpOTg1bVh1bFJQSTEzSVBOKy9IVVcvSG9wazZiNWlXYm5NL0dyczNseVNtSTRkOW5sMTNIUGxxWGMvdi9XRWUwK2dLa2o4c2xOL25CZnJwa3lrRm0vZVlSSmUrN2tyWm5RMFRJWEtXVTRqWFhtK0w5QUNJa3BUU21rbEI4QUk5VkZvRkI4TnRReWwrUEFZWmE1bUZKdWNZMjQ2b2UwbG5zNEY3cEVCVUlYZ3JnbWhLbEpLZjNxYkNvVWlzNk9sTEtsWTJ2Tm5wMmJRQU9Vc0NrVWlrNlBhY29XaDRESmRJSm1lYVM0cFpSTlFnaDExaFFLeGNubk1NdGNETU1JSE1aaWMrb2FtcFN5UVoxTmhVTFIyWWtiaGovRllwUHB4VTJnU1NucjFTbFRLQlNkbldoTTkzZmdma3JIdWdNQU5NTXc2dFFwVXlnVW5aMVFKQnFnZld4TnRuZEVRZE4xdlZxZE1vVkMwZGxwOGdjN2NrV1RZbWRuQzl5UlNLUW1KeWRIblRXRm9oUHh5WUVhZFJKUytHRDdua0RIb2lhdEZhT0pRV3p1Z3djUEhpd3NMRlJuVGFIb1JBem8wMU9kaEJTcTZ4dnRjZy9URmpXUjhENmw3WUlLSWRBMGdUWnk1TWdhanJZSFM2RlFLRTRPa2JtL1dobzZqQ3Y2Lzl0NzgvaW82bnYvLy9VNTIreExsc2tlRWhLV0VFUkFLK0R2aWxoLzZOV3FiUzlZV3JTOVNsdSthUHVyMUc4TDFRcTl0cUJ0b2N0RmJ5dFdyMWhic0ZxZ1ZXcFJSQlRVRmxjVU5TeWFSQ0FRUXNqQ3pHU1ptWFBPNS9mSG5IUHltWk16U2JCc3d1ZjFlQndUQW1hWk0vUE02NzE5M3RUYUNZKytvM2IzODhlTmk0dnJUQldsOUlBTlpEcmozREpFRExCUlN1aysvdEJ4Y1hHZHFkSjAvYUFOYWhsdXpkeVliQVNrYWJEcHV2NHhmK2k0dUxqT1ZDV1Rhck9EWTNOcytTQWt2Zk9BYXByV3lCODZMaTZ1TTFYeDdwNW1oeEEwYSt1SGxLWmhza0ZSK041a0xpNnVNMEVwYkZqNkE4eC9UVTMvc1dBYWZuN0haMW94aEJ3YklTUmRHUVZBT3pvNjZ2bUR5Y1YxWmluUjlCWVczWGszeGw5M0cycSs5a3NzMk56RW5ESTdORURVYlg0ZWEzZWZyTE5rVzdCcDdTdlkzbkdpUDYrTTZ4YjlDcnZXL1JMdkxCZ0hCVUJEL2I0MkJtWTIxMmFPVXhIcnZ3SUFXbEZSOFJGd25JOFpGeGZYeVZQeVF5eForaVIyVk0zQStzZC9oczBMejBmVHd3OWd3ZmJqZ1ZRUGRyeXdFV3Yybkt6VC8xdXdiczFMMk5aeGNqNjdTNUVSVEFlU2lUdSt2N3pEN3RRSW9JTms5TFNsQ3dna0hZcWExbTRYZ0FuOEdjWEZkZm9WM2Y0U05tQVNIcDE3ZnZvNDczRlhZT24xYitPYXA5NUQ2NVRKaURpY05MdHA2Zi9Ga3NMYjhQTGNTdXg0OU9lWTkydzdvbDBxa251V1lmempBT1FSV0h6ZlhGeWZBMFEzUDRCSmF5VmNWOWlPSFEzdGFGVktjZjNjRzdGNFN2bzQ3OFMyaHpCK1RTSFdyL3c4YWdFQUgyTFIxeDVHOUxzL3gzMFh0dUNSTysvRGlrWVZpVlFQdHY3d0IxZ053RFg4YWp6KzA4dXlIeitlb1c1c1g3c2FTNTdhaGZvdUlGZzJCblBtZmhtM2pnczYvRnU2eHdZMUhZQk9BUW9LQ3FTM3ZoTmlMQmFsZWpySGhuUmx0RTRRQkE0MkxxNHpRRTBOTFVEVlpBTXFhVldQcmtUd3FROVJqOG5wN1U4RGFPTE5QOERyTjBleCtzNjdzVzdLUXF6L1FsNy9mOVNwWXNLaS80dmxaVEphdHorS0dmKzlHbFVyYnNPTmhZTjlkNFg0K2svdndkZXhFL05tUEkzcWV4Y05iVGNDRzJhL3RSNjNQUVVzL09uUGNYMVpDblViZjQrYjcxbVA2b2R2eHBXMkNVOWQxK3ZSUDdlbUE5Q0oyWlJMUVRWS0lZR0FDQ0lFUWdnRlFGVlZyZU5QSnk2dU0wT0pMaFV1UmNwY2ZlZVQ0RXFwSnk1blZEQUNVOHJTSzRValU2N0dEUVVmNDIvdm5hSUR0UlVacmxRUFdqdWlpTUtMMnF1L2ljMFB6TUkwaDdGMVhVdnVRLy84R2hPQ0Vpb1FBSlJDQTFNOEFFQjdlbm8rNEU4bkxxNHpReTZmaEVUU0JyRXVGUWxaR25UUDV5ZFRBR1U1UUxUejFHempkSTJiZ2NlL093YTcxanlBNlYrNUM5UC9hejAydEtpT1AxdXlOMzdRQmpRTjlwWVBRaWhKVDhKVFF2cEdxdWpldlhzNTJMaTR6aEJWMXhRQ2V6NUVYVVo0Mm9SbzJVZ2poeVVEU0NGeHd0YWR4OURVQWdURG5qUjRGQm11Vk9xa1ZSUVRMUzFJakw0TTkvMTBFVjcvMDEyNGIyb1BWdDY5R21zZENoSFI5Z010QnNBMEJtckdaVlJFS1FVRklCQ1N2a3ppVFo0OCtTaUFEL2xUaW92ckRIQnNGMXlCNitYWHNlU2hPdFRIdTlHNit5VXNXTnVPSzc4d0xwMWZ5eWxGYmNGQi9PM2xKa1NSUXV2dTU3SHFmZFgyV1R3b3k1RlIvL1l1MUNlQlJEeUtLQXZDSXp1eGFYYzNnQlRxTnorTlZVY3FjYTJadkI5ZWllcU9YZmpiZTkwQXVsRzMrU1ZzNnJSL2wwR1U1YlJqKzl0TmlBS0lkblFQR1lTdDI1L0FOWGMrZ1UwdEtRQmVSQW9EY0NYN2c3UTNnWStPSGQ3Wmc2eXRIdWxMcHdDSUFKbWtpd2hXOFFDQXJ1djYyNElnak9SUEt5NnUweXlsRWdzWHpjS1MzenlKYTJhM0ErRlNYSG5EclZnK3hXdjhnekxNLy9abG1QZmZ2OEtFMzhzb1BlOENYSGxlQUUwWm4wVEd0SnRtNE1wN25zWTFNNThFd2hXWWY5ZjNjR3VOOGRjK0wzWTkvaXRNZXE4ZDBaeEtYTC93eHI3Q1FlRy9ZZWxOSCtLMmV4WmhWZEtEQ1pkZWdDbWw5bSt5RXJmTW5ZeDV2L2tWSnZ3ZUNKVCtHKzY3YnlhbURhSFh2K3dMTitQQmp2Vlk5djBmNExZdXdGVlFpZXUvZTZOUjRlMXIwS1dVZnVBVWhwSjBWVlNuNmVQWEFFS29MS2JkR2lFRVJCUkZXZGQxQ1lEYzA5TnpxOHZsK2hsL1ZuRnhIYjgrVFF1VG81c2Z3S1NuUitDWis2NFlZbnZHNmRIaG94Mi9MTDdzUDE5RmVrbHlISmxMa25zQmtoSUlWRUtJTGdrQ1ZTU0JLb3FjenJHWmxkRm9OUG8yZjNweWNYR2RLZHJkY0dDZnphMnhPVFpLakpFcW96R1hrblNPalFwc25EcHIxcXkzRFNweWNYRnhuVzdGdi9hRDVTM0lySVJtZ00yOENDR1VrTDRUZENWQ2lIRktPUFN0VzdmcWxOTHRoSkRwL0RIbDRqcDdGWngrSzNhZjRhOXlWZFBlYW1ydDdBYzFZNVNLQXNSd2JlYU1hQnBxYkI4YmpMZTZxcXJiK1czbjR1STYzWXJHdTk5M0NFUFpjSlNtWTFCWWJvMlk3UjdHSDZpWlo0dkZZcS96aDVTTGkrdDBhKy9IQnhzR2dockpPRG1YUUNCR0g1c2dJQ1BIQmtELzFyZSt0UjNBTWY2d2NuRnhuVVlkKzhhaVh6ZGxnWnBEamcyVUNBU0NRS2dnR0k2TkVYM3l5U2RWWGRkZjVvOHJGeGVYa3lnOStWOGpwYXF2MVRVZVlzTlFOUk51Zldld01lRW5DQkVnRUNGZFBDQ0VtSDF1RklDZVNxVmVjYmxjMS9KYnlNWEZCYVM3WVErblBEaVNVS0NCSUo3UVR1clhhMnRyMjVrdERLWHBBZ0tsNXRRQkNGS1VBRlFFcUFpcWkybXdBVll2bTA0cHBTMHRMYThNR3phTTMwMHVMaTdvRk5nUkN3S3VBUHg1UWZoOGZoU2U1Sy81NFVkL3IzZUFtZ1pBTTFsRkNLRkVFQ0FJQW1SWmhxSzQ0SEs1NEhhNzA4Y1dtWVVEMDdGVlZsYnVCdkErdjZWY1hGeUhVMjdBRlVCaFVRbDhQdjhwQ0hWcDNkeHZmcjNORm9hcUJ0UnNSeGFaUFd5Q2tWOUxnMDRRQkFGTW5zMkNtNnFxVy9ndDVlTGlPcEpRNEE4RVQ5blg2K3JxZWczT3ViVytpbWpha0JrdEhnSUVnY0NDbWloWTdSNW1LQXJqZjlTajBlaEwvSlp5Y1ozYm9oVFFxSkRkcWJWdHg4cnZmUVdmdS94aVRML3FQL0REdnpjREFKcWYvQ1l1dmVSaTQvb20vdHc4OUs5WlgvOVJIVEx6YTdiQ0FYVExpQm1UQm9JZ2dCaFFFd1VSa3VuWUdMaFJTcW1lbjUvL2lwN2V2bHpLYnk4WDE3a3BRb0I0VXN1U1U0dmg1ZnNXNDFsOEN5dWUrZytNVkdLSUlRQUFLSjcxTUxaOUlZRkUrOSt4NE1abmp1ZExIcnIyYzFmdHQ0V2d4bVVQUXlrMFZZY2twNkVtc283TnNHOU9TMGMxVGRPZTQ3ZVdpNHZMV2MzNDRNTWthcS8rSEVZR0FMZ0NDTEJINExwY2NCM251dUtlbnA1dDJkd2FJZENRc1hLUFVsM1hxSjUyYkZRUVJJaUNDRkh2N08vWXpMbFJBSG9zRnRzY0RvZS96bThnRnhjWEUzOWk0NTMvaWZ0M0pKR01KNEZmWEl2UC9RS0FNZ1YzL25rSnBycUc5amxlKytNeVBQamtkdXlQS3lpYWVBM21mZis3eU85c2ZOY0dOYXR3WUxSNTZBUklBODM0VE1sNEhPM3hPQVJQQkZWbFBvakVuUWFiZWVtNm5nRzMzTnpjelR3YzVlTGl5bFFlcnY3cE03Z2FlN0h5aHJuWS8vVy80ZDdweDdlSllkK1RQOENQLzE2Qk94L2NoS201Y2J5MjhuYjgrSHUvUGZUZTFwODBHc1pLdFlNTmxPb2doSUlRS2dvaVJLSWhxUko0d2lFRWpUWVBVUlFnZW5JZ3BDMmNrREV2eXBSVWRVM1ROdklieWNYRmRlSzBGeHYvK2lGcXYvcGRUQzEyQWE0OFRMN2xHNWg0OU9tWDRKaGI2ejlLUlVoNk94VWhBREhDVUVFVUlZb2lSRW1DSUlxaTVkak1rQlI5Ky91MHpzNU9Eall1THE0VHFIYTB0L3RSVkJ6bys1Q3JBZ0Z2MjQ1c1lhZ0Z0NHcyRHdBZ1NFTXRYUTBWUlJHU0tLYkJac0tOZ1pyVnp4YUpSRjVCZWtzOEZ4Y1gxd2xRTG5KejR6amNGck0rUW51Yjkvem1qUVAyYW1qS2hCckpQREhYT0NrMy9mK3lVQk5GQ1pJVzY2dUttbStaWTR5c0FkUmtNcm1CM3d3dUxxNVBySXcxZ2FOdzlSZEhvdTZSMytMbDVnU0FOcnp5MndkZVF2OUpnNHpDZ1hXd3BNRW9RUlJBb05ORWtrSVVDWFFLU0pJSWljWWdzWTZOeWJVUnBqcXFIVHAwNk8rVmxaVUwrZDNoNHVJYWlwcWYvQ2ErZkYvZnF1SjNicndZOXdPWTlNTk4rTVhuQXFpWTlYUDhWOXNTM0QvdlN2dzRya0FMalhqWHdhM1pHM01wVE9NbENCQmtCWDZ0Ry9HT0kyanNKSkQ5WlJpWG13TTVNQkpreElnUjZPM3RSVzl2TDBra0VraWxVa1JWVmFMcnVrQXBsWkRlek9wU1ZmV1BnaUJjeVc4WkY1ZXpQazFicW9ZcVNvRzNZMkVVVnB5OHJaeXFxcjQ0dktKc0pZQmU5RzJqTXE5dVFrZ0NRSW9Rb2hKQ2RGRVVxU1RKVkZFVXVOd3U2bmE3NFhGNzRQVjY0ZlA3RVF3RUlFaVNaRHEyak9xb1BSenQ3dTUrbWo5MXViak9MUkVDU0VSSFY5ZkoyL0hVM0h6b1ZZY1FOQVZBSllSa2JxVXkyQ1FJQWtSUm9GWnVUUkloU1JKa1NZS3NLSDNGQTNzUndWWWQxZSsvLy80TkFBN3dXODNGZFc2cFFFbWdLM1p5RHRXbWxEYjkxNDhXNzJMQWxyS0ZvVHJNSTRyTW5RYlcyRlFmdHlSUlNvTk5scUVvU3A5alkvTnNnaUNBb2FNT1FMdnJycnQ2VXFuVU9uNmJ1YmpPTFJVcENkQkVIRWVhbTA2NGM0dkg0ODg5dittNWxKTmJBNGc5djVhR216RVhhb2VhSk11UUZRVXVsd3VTSktVL2FQd2pLb29pMFRTTkNvSUFUZE1vNDlyVUF3Y08vTFdxcXVxNy9GWnpjWjFiNGVnRmdTaU9KTHB4dUMyTzJGRVJYY2tUYzRMdUs2Kzg4bllXdDZZQzFCeDhUM09JR3RKMWFKcEdOVTJGcXFhUVNvbElKa1ZJdlNKNlpRazlMcVVQYkV5dWpRMUhNMlpIUjR3WXNVdFYxZldDSU16Z3Q1dUw2OXlDVzZGYlJhRTdCa3FCekZVcG4weUpaT3B2bHkxYWROVG0xRklBVWdSUVFjd3dGRlFnb0NJQlpCRlFKTUN0RUhnVXdPc0N2RzRnNEFWQ2ZpQTNDQlRrQUlJc3k3QzVOdGdINDQxUkt3M3BTUVFlam5KeG5lT1FPeEhhM1hqZ1ZRZTNsdEhta2JGaXp6aDNUUlRUb2Fna2lwQWtFYklrUXBZa0tJb010MHVCMStQdUE1c29pdVpiYW9hbHpKSGhWblUwUHo5L0M2WDBWWDU3dWJpNFBxazBUZDgrWWViOHhnSGNtdFozL2xyYVhJbUVVRkVnRUFXUlNxSUlVVXpEVFpZa0tMSUV0eUxENDNiQjczVkRVQlFGc2l6RDd0eHNEYnRXRVFHQTJ0WFY5UVMvTlZ4Y1hKOVVCdzYzdmpDQVcxTU50NmFUOUpaM0toQkFFSWpoMUFSSWttQTROUkdLTE1GbHVUVVhBbDVQSDlnY2lnam1pRlhHN0NnQWJmcjA2ZXNvcFh6WkN4Y1gxM0ZMcDdSdTZsZS8vMzRXdDJiTWgvWVZEZEpnTTl5YUtGRFRxYVhiTzJ4dXplTkdNT0NENEhLNWtBVnVHYTZORFVkZmYvMTF0YmUzOTNGK2k3aTR1STVYUjlvNm4yMXE3V1NobGpTdU5OU0llWkpIdW45Tk1QWWFtQzBlYkc1TmtmcmNtcy90UXNEblJZNGRiRGE0c2E3TlBoaXZybG16NWtrQTlmdzJjWEZ4RFZXVTBvWWYzZitISFlPRW9kWkp1UVJBMnEwSkVNVjBiazJTUk1paVpCVU1YSVpiODNrOUNBVzh5QTBISUhnOEhqakJ6VlloWlVOU0RZQTJkKzdjYUc5djd4LzRyZUxpNGhxcVdqdWlHeDVhOTN6Q3lhMFJJR1VVRFRUQVBFZ3k3ZGhFVVRDS0JRSmtVWVFzRzdrMTJZQ2F4NFdBejROd3dJLzhuRkFhYkc2M3UxODRtcVg5STZQMVk4T0dEVThBYU9DM2k0dUxhd2h1clhIWncwKytaWU1hNjlqNldqelNSUU1JaEVDMGlnWnB0MmJPaENxeURMZExoc2Vsd08vMUlCVHdJUzhjUUZGZURnU2Z6d2UzMjIyNU5oWnc5dFlQVzY1Ti9mS1h2OXpSMDlQekdMOWxYRnhjZzdxMTltTlAvL0t4cDN0dElhanAxbFNRdmhWN3Bsc1RCVUxUYmkwZGhxYUJsbGtKOVhuY0NQZzh5QW1tM1pva2lSRDhmais4WG0rR2F6dWUxbzgvL2VsUGoxTksrUW03WEZ4Y0E3bTFQWGYvNW85dk9rRE5kRzBPTFI1RzBVQVVqUllQZXpPdURLL2JCYi9QY0d1aEFJcnljd0FBUWlBUWdNL25nejBrWmVEbTFQcGhWVWkvOFkxdkhPdnU3djQ5djNWY1hGeloxTnphL3ZRRFR6NDNXRzR0b3lGWE1OeWFKQXEwSDlRVUdSNlhLOE90UlhKRGNCdUxUSVZ3T0F6V3RRMVFKYzNxMm1iTm1yV0dVdm82djMxY1hGeDI2YnIrNXZSdi9IQ0hBOVFHY0d1QUtCQklnamxkMERkaDRKSmx1SlYwTTY3ZjUwRTQ0RU5lT0lpaS9GenJhd281T1RrSUJvT1dhM1BLdGJHdWpka2FiMjFyM3JoeFl6SWFqVDdLYnlFWEY1ZGREVTJIbjluVmVFakY0SlZRSFNCVVNCOGtTVVZCZ0NTSmhsdExRMDJSbWZZT2p4dEJueGM1d1FBS2NzUHdldnAybXdyNStma0loOE1JQkFMd2VyMFczRXpITmxUWEZnNkhOK2k2L25kK0c3bTR1RXlsVlBYNWtaK2J0OHZCcVEzdTFzUk10eVliQlFPUDJ4aWQ4bmtRRHZxUW54TkVVU1FuNCtzS0JRVUZ5TTNOUlRBWWhOL3Z0M0p0RGhNSkE3azJsUkNTT25Ma0NIZHRYRnhjbG5ic3F0K0V6R1pjQzJ5R1cxT0g2dFpjVm51SE1Ucmw5eUkzRkVCQlhoZytqenNUYkNVbEpjalB6MGRPVGc3TVFzSlFjbTFtTVlGMWJjWEZ4ZjlJcFZJUDg5dkp4Y1hWMWRPN1p2THM3eCt3UVMyUnphMEpSaVhVeWEwcHNnU1h5Mnp2Y0NIZzkxcnRIU1dSdkg1ZlcvQjRQQ2dxS2tKZVhoNUNvVkRXUW9KVGhkVGUxMFlJU1gzd3dRZVBBVGpJYnlzWDE3a3JDaHo4NitaL2JvTnp3WUIxYXhsOWExWWwxTzdXRktOZzRIYW4yenY4WHVTRmdpakt6NEhIcmZRSEd3Q1VsSlFnRW9tQUxTUjR2VjY0WEM1a0c1TFBsbXViT0hGaWZYZDM5NFA4MW5KeG5iczZjclRqeWEvZSthc09tMVBMNnRaSWhsc1RNODVaY3lreVhJb0NyMXVCejJzVURFSUJSSEpES0NuSWMvejZBZ0FvaW9LaW9pSmtLeVRZcXFUVW5FcXdyK2d6WGR2VXFWTWYwM1g5Ulg1N3ViZ0drZUk3NjM0a1ZkTmUvc3lYYm50akNHNU5NOXlhYms0WlNFYmZXcjhxcUhFeWJzQ2JidS9JRHdkUkZNbUZJa3Zad1FZQTVlWGxNQXNKWmtqcVZFaGdoK1NaR1ZLZGRXMDdkdXhJSGpseWhPZmF1TGdHVTZqa3JQdVJkdTVwZkthcHRkTStYWkFBa0NETUJpckRyZW5FT2tTU1dFNU50bzFOZVR6cGszSE4wenNLOHNJb0w4clArajBJN0IvTWtOUjBiUVAwdGxtdWpabElZSjFicXJpNCtPVmtNdmtiL3N6bDRocEFrWkZubFd1THhyc2Z2WERXN1I4YmJvMkZXdC9BZS8vejFxaElDRTBQdUlzMGZTcXVuT0hXMGhNR1hvU0Rma1J5c29lZ2ptQXJMQ3pNR3BJNmpGdFJTWkl5Q2dtc2F5T0VKTGRzMmJLS1VycURQM3U1dUxLSUNFRDFwVUJPQlNCN1B0VS9pcTdUZHgvNDB6UDJnb0dWV3lOQTBneEJtZlBXcUdDRm9HbW9aWnlLNnhTQzV1ZWlNQzg4NFBmU0wwQXRMUzFGZTNzN290RW80dkU0ZW5wNmtFZ2trRXdta1V3bWtVcWxvS29xVkZXRnBtblFOQTI2cm9OWjA2ZFJTZ1VBNnRWWFgzMjRyYTN0d2R6YzNKWDhHY3pGbGMxZWlFREp1RS85ai9IaG5qM3I3L2p2eCtJT1VFczdOa0xTQlFOQ05DTjlSUVZSaENqTGtGd3VTQzRYWkk4SGl0Y0xsOThQZHpBSWJ6Z01mMTRlZ29XRnlCMDJEQVVqUnFCMDNEZ2dGQnE2WXdPQVVDZ0VwOTYyTEkyN0dTRXBISnAyOC9MeU5xWlNxWWY0czVlTDYreFZQQjVmWFZOVHM0Y0pRVE9nUmdoaDErcnBBTktOdUtKSXpWWXlXWmFoR0p2YzNXNDNQQjRQZkQ0ZkFvRUFjbkp5a0orZmo1S1NFb1FHZ1pvajJJQjBJY0hzYldPSDVMUE5rdHFhZG5WQ2lOVnBUQWhKdmZycXE0OVFTdC9tdDUrTDYreVRydXZ2UFByb295K2lmMTZOaFZyS01Ec2FJVVEzSnBpc3RaOG0xRXl3ZVR3ZWVMMWUrUDEraE1OaDVPWGxvYWlvQ09YbDVVTXp3VTRmbEdVWlpXVmxLQ3dzN0ZjbGRUaHhkNkJDZ2dvZzlkblBmcmFwcmEyTmg2TmNYR2VoOXV6WnMvNDczL2xPTkdzSTJ0ZTNabXgySjFuZG11blVQQjRQL0g0L1FxRVFjbk56VVZoWWlMS3lNc2l5UEtUdlNjcjJGMFZGUmVqbzZFQTBHa1ZYVjFmV1hCdWJaOU4xbmVxNmJtNjEwaWlseEhCdFFpUVMyZFRiMjd2QzVYTE41MDhGTHE2elE4ZU9IWHU0dHJaMjd3QnV6ZG8rWmJnMWFvTE5iUGhublpycDF2eCtQNExCSUhKeWNoQ0pSRkJTVW9LaW9xSWhmMS9TUUg4NWJOZ3dkSFoySWhhTG9idTdPd051WmdIQnVLaXU2OFJXU0tBQWRFcXBWU1g5NHgvLytMOXo1c3daS3dqQ2RQNlU0T0lDOXUzYjk2bjkzbFZWZmVtZWUrNTUyUWExWHB0Ynk4aXJBYUNFRU90ekdDWUlBSkRHUnZxdHdSSHJZOGY3V0EwSU5wL1BoN0t5TXN1MWRYZDNXMkJMcFZKMjEwWTFUU082cmxQakc5TU54MmJtMjRSdmZ2T2JIZE9uVDMrd29xS2lGa0FKZjFwem5ldXFxS2o0dEg3cnphKysrdXFHVmF0VzlUaUVvTDJ3RlF5TXZKcHVPRFZxT0RScTV0TE1Ja0U0SEVadWJpNEtDZ3BRVmxhR3Fxb3ExTmJXRGptM05pU3dBZWxDd3JGanh5elgxdHZibXdFM3R2WERDRWRCMDRMUjEwWW9wV29hemtTb3JLeDhJeHFOL2s4Z0VMaVhQNjI1dUQ2ZE9uanc0Qjh2dWVTU0pnTnFMTkRzSWFocVRpWVJRcXk4bXIxWTRIYTdMY0FGZzBIazV1WWlFb21ndExUMHVLRUdaQ2tlT1AxV1lWdEEyRUY1V3dzSWRSaVNaOGV0VW9TUVpEQVlmQ0taVFBLUkt5NnVNMVIxUzZhaXF1cG1ySTMyLzd0NFBMNjZyS3pzYldTMmRsZ2hxQzJ2WmtITlZnV2wyYURHdG5aOFVrYzdKTEFGQW9HTUZwQlFLT1E0bFdDRG0xa2x6UmlTTngrSTU1OS8vbUZkMTdmd3B4QVhWMXJSdXJWWU11OGFUQjFmZzZxcUdveWZOQjJ6Rnp5Q3JhMW56dmVvcXVyV2xTdFhib0Z6QmRTQUcwMVNTbFZLcWFicnVxNXBtcTVwT3RWaHVUV3FLQXBFdFF2dDdURWs1WFE0R2dnRUVBcUZNbG83QW9IQUovbytwYUgrdy9MeWNzZHBCSWRjVzdhUUZFYk9UU1dFSksrOTl0cERqWTJORDFSVVZGUVFRcXI1MDVyclhGYnIxZ1dZUFc4ZEdvSVRjTzMxODNGREtSRGJ0UTBiTml6Rm5LMnZZY1V6RCtLNnlPbjlIaW1sRGR1M2IzOTZ3WUlGTVljUXRCZnBJZmNrcFdiQmdHaUVwRWVuS05WcEt0R0RoTWVIZ0dHQ3hHZ3ptbzhvQ05lY2x3RTFNNy8yU1VMUTR3WWJBQXdmUHR5eFF1b3daa1YxWFNkbVpRTUExWFdkYlFFaGhCQmgrUERoYjdhM3Q5K2ZrNVB6aStQOVhyaTR6aDZydGhYTEZxeERRMlFtVnExZmpta1d3RzdGTFRjc3dZeVpxN0JrMlZaY3VYd2FYS2ZSckRVMk5xNlpPblZxazgydFpZYWdsS1lMQmtUUVJNSHFWNE1rYU9qdVNhRTNucUJDWGhBdWx3dWlMSUFRRVc1dlptdEhhV2twaGc4Zi9pOTlzOEx4L0dPdjE0dUtpZ29VRnhkbkhFeVo1ZFJkS3N0eXY1RFVOcFdReU0zTjNkRFQwL01yL3V6bU9uZTV0Z1liamlxNGRQNUMwU0F4c2dBQUlBQkpSRUZVQm1wcEJTZmVnc1VMYnNDVmtRUmFiZm12WmFzWFlNYlVHbFNOWDRDdGFkK0hyUS9jaGhsVHg2T21xZ28xazY3QnpVczJvU25CZk1LdHQyRjgxWFFzV3JzYWkyWlB4L2lhS3RTTW40b1pDOWFpemlHZmxxamZnRVd6cDJQc2lJcUhxcXVyMzJlY1dpOTdFVUlTWUErUVRKL2NvWnVOdUxMTEI3OGtVSUhxSUhvNzluN3dBZDQ3bEFRaGNieS82Uzk0NUsvdkl4V0pvUGpJVTVnemF3NXUvLzJmY05zMWsxQlROUlZMNmdCc21vZWFxa2xZc0Qzeis5dTZZRHlxYXVaaEUvdkJwcTNINzVLS2k0c0hkRzFtT01xR3BHWUxpQkdhc3ZrMkFZQXdaY3FVaDk5ODg4MUNXWlp2NGs5enJuTk5kYS90UUJLMXVHS0tVNndad2JSYmwySmF2NDl2dzhwbFZiamkrdmxZVkZXTGFrU3hkZEVNekZtVHdPUWI1bVBwQkJkYVgxdUhsYXR1d2V6b0ttek9jSHNOV0xOb0ZhNmRQeC8zelE4aXVtMFZscTFjaU5sUkZ6WS9lQjM2dm92dFdIWnpIU28rKy9rbjlyZjhnKzFYNnhlQ3NsQURvRk1LU296RlQrbThtZ0ovVVNtS3ZWNzRQQkp5eHBZQnh4cnd3V0UzeGw0eEhSZVBIb054UlVVWTVnMUJrUko0ZnZrS2pMbjJSc3lmV1lXSkVRQk5RM2UvQzJiUCtXVGhYM1YxTmVMeGVOYjJEd1pzR1NFcHBaVHF1bTV2QVNFN2QrNFV0bXpaOHREMDZkTUxSRkc4bWovVnVjNGRKZERhR2dXVUNDSXMxNkt0YUdXZEZsd0lSb0lNbkVveDg3NzFXRDR0YVB6N1RWaXhIWmh3eTRONGRPSEU5TCs3L2pwRVdpZGg0YWEvWWZ2eWFRd2NGVXhlL0RqdXU5SDRnbE9tb0N3eEhUTlhyY0NxdXV1d3NMYnZhNDYvODRuTm56bXk0ZmtOOFI2blhqVjdGVlFsQXRHaFU1MVNuYVpTS1ZBSVVFUVpzaXhUYTdqZGx3NDlKYmtadTQ1NFVUbHVJaTQ1dndMRHk4cFFmU3k5UnEvcWxzZXhmbUh0Y1lmZWRTdVhZTjNCcWs4R05sRVVVVlZWMVE5czdEU0NiY3lLbUlVRUkrZkdGaE1JSVVTNDZxcXJtdXJxNmxiVzFOVGtFVUltOFNjODE3a0N0a1FpRFJFWDh5cmV2dVFhM0xEdWFOOEhBak94NnQzbERKeXFNWGxpa0lsWnI4VHl6VmZhUG5jUTFXVVJZSHNyb2dtZ2p4SXVSTW9pR2RDY09QTTZWSzFhaWUwN1dvRmE4KzhtdkZXdTdIMTYvdno1VVZ0T3JjZTRlbTM5YXVsR1hJbFFVSjFxdWs3VlpDK090U2RvM09WSFVYa0llVVpyUnlBUWdCU1ZJWW91QlBNTHJXWmM4VjBDSUlEYXliV2ZJSjlZajYxYkc0QXhDejU1d2o0Y0RxT3lzdEtDVzdZS0tldmNUTGdaVXdrZ2hKakZCSUVRUW1wcmE5OXJhbXI2YlVsSlNTNGhaQVIvMG5PZC9US0JaZ0RPZURYWDNuSWZWbDJiQUJERnRtWHpzV29vb1ZpMERtdFhyTUNhVGR0UmR6Q0dwR1hRcXROSUdvZ1VaVlVvQTFEZjBBUWdBa3BSMzlQVDl1ZDdaMTdWWW9OYVh3V1V5YXNadVhNcnJ5YkxMaXJMTW1SQnAycWlGL0dlT0pvYlBnTDFUY2Jra3JSamt6c1VTSklMNGNJU1ZGWldJaHdPLzR1UFpTc2FXZ0ZsWXZXL1Zva3NLeXV6QnVSWnVHWEx0UmxRTTRlL3pMQlVNeDRjQWtBb0t5dDcrZWpSby9mbjVlVXRBaERoVDN5dXN4MXNrVWdRU0RhaHFSVkFtZUcxcXFkZ1dqVUFSTkc2U2hsQ2pxa09EOHllZ2VXdEV6Rm40WElzckM1RDBBWFVyYndaQ3pjTjFUdGFPbnFndlh2MTRjT3ZOQ0p6c0wzWElhK1dNdk5xNWpKMWRyckE3WGJEazErRVNpV0ZwcjM3Y0tUaE1EQ2hDams1T1ZEYVhaQWtEL0xMS2xCV1ZuWkNIOVYvdWNWaTFLaFJHYTZORFVudEozOVFTdGw4bTI0T3d4cmhLU0dFRUVvcHljL1AvM3RuWjZjL0ZBb3RCdURtVDM2dXMxbTFsMDVFWU0xVy9HMVRFNzcrOVUvNEF0K3hCbXQyQVpldWVCQ0xyK3NMVVJQQklRWjA5ZStnQ1VDa3FxejM0TUdEcTY1ZThYWWQrdG82elBDVGRXdjlRbEJDcUs0bWswaUpMbmg5TWhSRnNmSnEza0FleXZNUG9MTXRpVlFnalB6OGZMaU91cUVvUGhSVmpSclNMd0Fna1VIZi9vcWdLZ0lrbTVxT3I5M0RTWVFRakJneHdwcE15TS9QdHlZVDdHTlhaZ3VJYmZHeU9YSmx0b0FrQVNUQzRmQ2Z1N3E2ZUJzSTExbXY0TFJiY0gxcEV1K3NXSUJINmhMOXdxdlcxdVFRN0ZZQ1VRQ0pLUFAvSitydy9JNVd1eHNERUVOOVhUMGJ3MkxUcWswNGlER1lNZ29QR2VOU0xOUjZHYmhsbkxGbXZuN05maldCZ0ZJOWhTVHBLeFo0dlY3NFBDbkU0Z1NDUHc5bGhma29LaXBDUldFSWlxSWdtU1NELzN5UkNDS0lvYjYrS2VQbmU2MHV4dnlqYWt5YlZnWHNXbk5pbW1JRGdRQ3FxNnY3RlJJMFRjczJJRDlZTVlGUVNvbmY3MytzdTd2YjQvRjRidWRQZjY2ek54cWRpSVVQTGtMZDdLVllPbU02bnIvdVNsdzZwaFE0Mm9EWE5tM0F0b1lBSnR3eUV4TUh0SDNYNHNyOGRWaTNaRGJtTlZ5SmFyUml4NllOMkhFd0NTQ0tSQlFBVTJ2WXRYdzJaalJjajJzbjVPUG9hMnV3K205SEViNzA5Z2QvTUtuZ0h3Nmhadzh5anlPeU9UV3pFVmVpYmg4UTYwclMrTkVXSkx1RHlBbW4wQk5ydzc3Mk5yUW5YYWllUGhVWEdJZEdqblNOUXVpSkxWaXpaQWx3eGFXNDdzWnBLQnZvNXl0ZGhWWExic2E4Z3pNeHdYVVE3MnphZ09jYkFEQ0w0R3R2V1l5WkcrYWN1Rzcvd3NKQ3gxeWJxcXBzUDF0R1dNb1dFNHhQbzluRDBsbXpaajM4NXovL1dYRzczZC9tcndDdXM1WnR0Vi9INDV0cjhjaXlGVml6ZFMxV3JJc2hxZVNqcW5ZYWJsazVIL092ckI2NFNoaWNocVdQTDROcjBRcHNXTDBTVzExVm1ITDlmWGg4d3ZOWXRMSUpCNW44SFJEQUZZc1dvMnpiQ3F4YzBvQ29xeFFqcjczN2tmcFhmN2tWL2FjS3JCQ1VFQ1FvTlZmb1dWRHJhOEtWWlNpS2o1YUdLSHFpY2NSN1kyZzlITU5SUVVHNHNBcFRwMTZPYS85dEpFcExTMUZWVllYeXkrL0U0amVic1d6REtxeG96Y2UwRzZjTkRQOUhseUc2WUFVMnJWcU9yWUVxVEx4dU1aWk5YSUdGR3pJZmgrV1Byd1JoRDNJN0VkcTllemQyNzk2TnhzWkdIRHAwQ0VlT0hFRjdlM3ZHMFVjR0FBa0RRR0wwdXdrQVJFcXBCRUFHNEtLVXVuLzBveCtGZi9qREg5N2ljcm5tOFpjQTE1a3FUZFBRMU5SMFpwK3h0dlUyakorekZkTld2WXY3REk3RVlySGZmL3ZiMzk3OGh6LzhvWWR4WlQwQXVvMjNQWVFRcTJCQWpHMVQ3UGxxek5IZTFobHI1dnluZWI1YVNVa0poZzhmanBxYUd0VFUxSnpVSC9PRXoyZU9IajNhQ2tudDdSOVpYSnQ1NGk2UVdTbTF3dEtmL09Rbm5aRkk1T0c1YytjS0xwZHJMbjhKY1hHZEdNVmlzVDhzWHJ4NGl3RzFKQU8xSGdacS9VN0RkYXFBc3NVQ244L25lTHgzWldVbFJvOGVmZEovcmhNT05rSUlSbzhlYllITjN2cWhhWnAxNUMrVGI4dFdLYlUrNTNlKzg1MDJSVkVldnVtbW04RGh4c1YxWXFDMmRPblN6U3RXck9oQ1pxR0FiY0RObGxmVEJVRmdOMHhSY3hHTC9jQkkwNjJaVUdPUEJ2L1VnQTBBUEI0UFJvMGExYTlwMTliUDFxK1lZTGcwMDdXeGNDT0VFREp2M3J6V1JDTHh1N2x6NStwdXQ1dUhwVnhjbjFESjd0anZGeTlldkdVQXFMRk9yZC9xUE9QQVNHcDNhdWJLdkZBb1pCMFlXVnhjaklxS0Nvd2FOUW9lejZuWmRpL2VmZmZkSitVVG13ZFFtbkF6SzZRczNHelhZQmluQUxCeDQ4WVVJZVQ5aXkrK1dKVmxtWTllY1oweG9wUWlHbzJlZ0E3Nms2aktxM0hEelRjODh2U3kvMi9MNzM3M3UrNXNUZzBPa3dWc29jQ0Vtc3Zsb3V3SnVQYVZlV2FoWU15WU1jalB6ejlsUCtaSlBRT3RzTEN3M3pTQ1E0VVVUSjdOcXBRQ2dHMWdIb1FRVUVxeGRPbFN2UFhXV3crdVhiczI2ZlY2ZVNzSUY5Y1ExZEhSOGVBVlYxeXg5YTIzM2twbWMycXdIVVBFVmo4eks2QjlUczNjMnM3bTFJcUtpbEJSVVlHUkkwZWlzTER3bFA2Y0ovMXd4L0x5OGd6WHhrNGoyRjFiK3BjZUpRQ29xcW9tM0RRMkxEWGh0bkhqUnZoOHZ2K054V0s5ZnIvL2R2QUpCUzZ1Z2RUYjJ0cjZVRUZCd1QvUS8vVGJnYUNtRVVJMG9lOElvcXpoWnpBWVJEaWNuaW9vS2lyQ3NHSERyT2I5VTYxVGNtcHRkWFYxMXVQRG1WTjJUVHR2NWRwVVZUWC96aEZ1QUJBSUJQN1kwZEhSSFE2SGJ3T2ZMZVhpY3RMUmd3Y1ByakltQ3RqWnp4NWIrT2tJTldiQmNRYlVuRmJubVZBckx5L0hpQkVqVUYxOWVrNzlQMlhIY2RmVTFHVGJpK0RvM0V5NEFlbitvQUhnUm5OeWN0YTN0TFIwUlNLUmIvRlRRYmk0d0JxRit2cjYrdFVqUjQ2c0c4U3BKYkpCamMycFpRcy9uYUIyc252VnpnaXdBY0RZc1dQN3dTMEwyQ3k0bVFtM2JIQXovMXhZV1Boc1kyTmpkTml3WWZNRVFiaUlQNlc1em5WcG12Yld1KysrKytjTEw3eXdFZjFuUHdkcjZiQ2dObGhPellSYVlXRWh5c3ZMVVYxZGpiRmp4NTdXbi8yVWdvMFFnckZqeDJaMWJRNi9iVmdINXdnMzQvTlNTaWtkUG56NFAzYnMyTkU1YnR5NGI0cWllQlYvYW5PZDhUcjJ1NVB5YVZNcGJmT1diYnVldm1ybS9TMU0rR21mL2V3aHhycThUS2hSalJCS1JZRlFVYUJVbG5USW9nNlhwTUl0cS9BcUtmamRTUVE5Q1lTOVBjanpkNkV3RkVkNVhoVFZoWjBZVzk0R0VuMzkzQUViQU1peWJNRnRFTWZHNXR1eXdZMGFINmRtYURweDRzUVAxcTlmdi95YWE2NXBWUlRsYS95VnczV3VxYnM3K2NURGoyMTdmdjRkZjQ0T0FMVmVBaVJBWUt0K1FpTUVhYWlKaE1xeUFFVVc0WEpKMU8yVzRmVW84UGxjQ1BqZENJZTh5TXYxbzZnd2hQTFNYRlFQTDhEWW1sTElrbmphSDRQVHN2TE83WFpqN05peGpuazIxcTJ4SVNraEJLbFVLbjBVU1ByLzAvcllsdW5jWnN5WWNiQ21wdVpYYjd6eHhoRy8zejhmZkxVZjE3a2h0YTA5L3RENGYvdXZsdzgyeCswN0N0anoxRXlvMlp3YWRJR0FDZ0toa2dFMVdSYVE2RXpRenFBTFkzTFNVQXNHR0tnVmhGQldtb3ZxNFJHTUhWTUN0MXMrSXg2STAvYUM5L2w4RnR6c1lMT0hwWVFRYXVUVDdLMGc5Z2tGYXNKdDkrN2RlaUFRZUt5bHBlVndKQks1aFM5bDVqcFR0ZjJlKzNIejBmOFg3LzY2OWhQdkRhV1VOalR1TzdxbWVzS2k5NUc1VGFyZmVXb00xTlNCb0tZb0luVXBJcWlRUkZLUjRmZTVFVENobHVkSFVVR3dEMm8xcGZCNVhhaC85cC9Zbmo4T04zN0c3L0JkeHJIMXZtZXc1T245YUlwSmlJd2JoOFUvbVk0clM4NGlzQUhwYzl6R2poM3I2TmpZdkJ4Ny93YUJHMldkR3dCYVdGajRiRjFkM2VGUm8wWjlYUlRGei9LWEVkZFpaOU5VYmV2Mk54cWVubnIxTDV5V0dkdVA4MDZBOUIzcDNRYzFRZ1VCVkpJRUtrdkVnSm9NdDF1QUpoS0lMaGNDQVRkeVdLZFcxZ2UxUU1BTlFFWGRjNjlnWlVtVkk5aGFuMzBHdHowdFllbGp0K082a2w1cy9kRWF6THZqRFd4KzdDS1VuVTFnQTRCUUtHVEJiUkNvOVlPYmtXOWp6M096Z0diQVRRZWcxOWJXdnIxNjllcERNMmJNK05qdGRzL2hMd1d1TTFXSlo5ZGgvSVBBamFNVDJMcXpEYTFKRjZiZE5oUExQNThIRjFxdzdEL1dZUHZvS3JqMnRLQXBsb0JZTldiMWVTUFZMYis1NXk4eFpMWnoyTU5QYSs2VFVxUUVRalFRNkNiVVJBRlVUZWswbWRRQlFxZ2dFNVNWeXZCNlJHZ1MwTzEyR1ZEelFEdTBIMzk2TG9aTzNZdnlDOGZqaHo4ZWp1dUMrN0hrUDU3QzJrTWFZbGlEU1hzdXdlTVBYNFMrTUVuRmp1Y09JZmp2czNCZGlRVEFqMmx6eHFINkt4OWllK3dpWEorb3c3eXZiRVhrWjdkaTZXZk9BckFCNlkxWEE1V0hUY0FSUXN5TEVrS0ltWE16YzIyNnJsTzJ2NDExYmpmZWVPTWhBUGUzdGJWOW5KdWJld3VBWXY0eTRqb2pkZWdZY05jc2JQNlpIOUZYbjhIME8xN0Nwcy9PeEhVQkFFaWdWUm1EOVgvNVFuUHk0LzEvTEp0d3o5dGIrNWFxSkJtSXNVZDVKd2hCa2xLa1FLQUtJQm9JTklHQUVvSG9va0JBVXhyVmlJQ2NQQmYxU3hUdHJRbTBkSXNvSzNCQmxRVW8zblQ0NlRuNk1WYnZDdUsySDgvQXZNdHo4ZkZqeitMbWIyOUc1QzlYWWZGZmJzV0UyMytOWlNVMzRPVUY5aEdxWHJUR1ZFUktHQ2VYNzBjRXZXZzlDbUQ0TU54eTE3OGpPTzRzY1d5bWNuSnlNdURHUUt3ZjJPek9EUUJoNWtyN09UY0F1dUhlYUY1ZTNsL3I2dW8rSGpWcTFFMmlLRjdPWDBWY1o1eEtxakRUQ09XQ280ZWhPdmtHV21NQUFnQWdvbVp5eFV0N3QzKzQ0WktyZnRHRWdiZXo5OXBDVHhWSWg1NkVRQmNFUWdXQlFKSUlKUnBCVWdjbGdnaVgzNFVSdVVFb1hpK0NBUWtwUlVEVTcwTnhnUXYxcjNXaCtrdWZ4N3pMaHlFbjdFWE9iWmZodXFmWFljMC9wbVBLWUltZWZxc2JSQUFxWWtrQThHUGlaLzFuVHlocWg5dDU1NTNYRDJvRFFJNlN0UHJsM0N3YjE5Y09Zb2FtV20xdDdkcy8rOW5QR3Ivem5lL3M4bnE5L01oeHJqTlhSalVoWVd4ajZVbHBENy95Mk5xWEgzNXVXNDh0bjlaLzd5ZVFwRUNLV0ZDRER2UkJUUlFKbFNRQ1dSS2dlQ1hxN2traDJ0Nk56clllQkNLNU9ML1lqWnl3Z3FSYlJHY29pUEl5TnhwVUwyb3ZISUdjc05kTUpxR3FSTVh6UjNzeDZMaTJZditBQmtCQ1FEbnhEOXNaMXdZUkRvZUhCRGQ3V0dxK2J4eU5wSnRBWTRvS09pSEVkRzc2SFhmY29kOXh4eDMvZStEQWdiMmxwYVUzRTBJbThsY1IxNWtxcXROM2R1MDVzdjd1VnhyM0FvMnFRejR0dzZVUmdpU29CVFNORUdpZzBFRkFCWkZRU1NCVWt0THRISW9pVWdrRXZrSS95djBLZkxLTzVvK080dDJtZkV3WTRVZlNJNkV0TndjanF2TVFyWGdmcjBaMTVqdUxvK0dvaEVqK1lHZFF1QkhKbDlCNktBNGdsUDdRMFRoYTRVUGtKSnhtSkp5Sk56RVVDbUhjdUhFWU9YSWtoZzBiaHVMaVlrUWlFZVRrNUdSYjdVY1ZSUUd6Mm84eXEvMDA0NHoyRklBa0lTUkJDREhQYys4dUx5L2Z1bTdkdWgvMjl2YXU0aThmcmpOUnFxNnRmdkdKTGY5VE8vbC9kaU56ejZmMVBHWXVhMFVlTloyYWNaWmEraGM4Mjg0aEdJMjNJbExIZXJDL1RZWHNkU09VNDBlK1g0TGk4Nkc0S0loOG40SkFRVDdHamFuQkYyY1BSOTJxRjdEaGtBcWdGenNlMllvTkdJTWIvaDhKZ0FTWFMwS2k3UmhhRS8wOTFKVExoaUg2M0hhc2JWU0J4REZzV3ZVTzZzZU53cFJBR3BBN1hteEFmZUlzZFd5bUFvRUF4bzBiQjBFUUhDOUNpUDJ0NWR4U3FaUlpNV1dMQ3BRSlRVMzNwZ0hRdnZTbEx6VUIrRTFUVTlQT2twS1Ntd2doRS9qTGlldDBTOWZwdXgvV3Q2OWYrK0diZTdEc1RaVUpQWk9PTG8yQkdhVjkrd2xJdWo5TkZ5aEZTdGRwVDFLRXp5dENVU1RxZGtsd3UyWGtqMUNnSEl6aG5UZmpvS0tNZ29waG1IMVZHU3JLdlVnRVhEaFlXb0pBd0kzQTU3K0FCNDgrZ3lYLytXc3NpRW1JakI2RHhiK1pqaWxHeUR6bCtuRW91K01wVFAzUFMvRE1FeGVEYlI0Tlh2WHZlUERRYzFnMDk5ZFlaUFN4M2ZlVGllbFdqNlA3c2ZKSFcxSDJtMXV4K1B4Ly9iRTc0VnVxVHJSNmUzdnh3UWNmb0w2K0hnY09ITURodzRkeDlPaFJkSFoySWhxTm9xdXJ5OXA4bFVna3pGMExoTmwrQlYzWENhVlVNQzhqYXlrQmtDbWxpcEhKY0FGd3JWcTFLakpyMXF6cnZWN3YvK0V2TGE3ajBTZmFVcFZsVmpRYTYzbjBnZjk5Y2RzZGR6OFZSMStCZ0IyUFlzUFFkT2dKTnZRa09rSC9Jb0VzQ1pCbGticVV0THZ5dUdWNHZhNk1pWUw4dkFDS0NrSW9MOHV4eHFUT2xJbUNUNzFqc3lKenR4dm5uMzgrUkZIc2Q3SHV6ZWJnc2hVVktKTjdNNHNLT3RKVlV3MkFPbWZPSEczT25Ea1A3ZDI3OTYycXFxb2JSRkdjeGwreVhLY3M3RlQxbDNlK2YrQ1pDeSs3OTJNRFVuYVh4dWJVa2dSSVprd1JvSzgvelhCcVZCU1lJb0VpVWtXUjRIYkpjQnRROC90Y0NBWTh5QWw1a1ovSHpINVdGV0RzbUROajl2T3NBeHVRSHB3ZlAzNDhKRW5xQnpiN1d3WjJWQkFFSWdnQ1ZGV2x6TDZGOU42L3Z0RFVxQlFSelF4TkFhaWpSbzE2ZmNTSUVUdGZmLzMxNjNKeWNtNENVTXBmZGx3blM1VGk0SkhXWTA5K1p0cFAzbWhLejNteVVFczRYRWtIbDlZWGVwcVRCR0pma1NEdDFHUzQzUkxjYmdVK2IzcjJNeFR3SUJ6MklXSkNyU3dYSTRZWFl1eVlVcHlDaFZMbkx0aUFkSHZIZWVlZEIwbVNqZ2R3L1NxbWhCQnFoS1pnblp1WmQwTjZHNzBHUVAzb280L1UzTnpjOVJzM2Juempzc3N1KzZMYjdiNkp2d1M1VHFoQy93ZGRYVjFyL3ZyWHYyNzc2bGZuZFF6aTBneWdFUk5vS2VNWHNYVitHck9iQUpJa09lNzhORSsrdGUvOVpJL3pQcDJIUko1VFlETlZVMU1EV1piTkNpaU1OV0NPSWFvSk4rTXRZZUFHUFMzclNDU3pnZGZKdlYxOTlkV05BSDViVjFmMzZzaVJJMmRLa3ZUdi9CWEo5YThxbFVvOXYyUEhqazJUSjA4K3dBQXRHOVNTRE5SVTlBMndteEdIdFd6Rk9NYmJmSjFRUlZGZ1B5RFNoRnB1Ym03R2lyelRlWnozT1EwMklMMUR3V3p2TUM4V2NFNmhxWEhEcmRDVXFacGFybzBKVFRYR3ZWbFBvdHJhMnJjQXZOL1UxUFJDY1hIeGwvaEp2VnlmUkxxdXY5blEwUERNeUpFamQ1bS9QRzFBU3pxNHRKU0RTOU9aaXhxLzJMTkN6ZXYxd3V2MUloQUlXSHMvQ3dvS0xLaU5IRG55dEN4ZTRXQmpWRjVlbmdFMzgyYWFvYXJkeFJtZ3MrQ1dTcVVvSWNRODhOSmVXTkFad0dXNE53Q3Bzckt5RnkrODhNSi9QdnZzczFmbTVlVjlpUkJTdzErdVhJUG4wZWllNXVibXA2ZFBuNzVqMTY1ZEtwTWZZM05wN051a0RXb3E4MHZYQXBxNUVrOFVSZmFYUFhXNVhCbFFNNWV1bUhzL0k1RUlTa3BLckdYR3AzcEYzc25VU1Z1WWZDcGsybW1uZkp6NWRvQnhMSHRhMUp3cmhRRTRHSEN6R24xTjJBSFFtNXVidGVYTGx6ZWtVcWtYTHJqZ2dtYTMyMTFDQ01uaEw5OXpHbHlPQzVNcHBZMnRyYTJQTFZ5NDhFK3paOC9lZi9Ub1Vic3I2M2RrTjlMTFZYcnQrVFJtY2JIVFJuWW9pa0lWUmVtWFMyT0J4aTVkcWE2dVB1WExqTGxqRzRKeWNuSncvdm5udy96dHhFd2daT1RoMkN1UlNEaUdwb3g3TTRmckJWdDRxZ0ZRamZBMEJTQjE3NzMzSnUrOTk5Ni9MRjI2OUlWdmYvdmIwME9oMEV4K3FDV1hBYlNHMXRiV0RjdVdMWHZybDcvOFpTK1RHM1BLcGJGaGFBcnA0NFZVUW1CR0N4cEEra1lGQVVwQWFQcXBTa0JCUUNtb1RnRktDWFFLYURxRnBnT3FScEhTZ0pRR0pGV0toQW9rVWtCdmlxQW5SYkQ3b3dNQURweFZqLzJuMnJHWmttVVpoWVdGanFlQURISGUxRzdnekJONzJSTkM3TlZUeTcwQjBMWnMyWkw0K2M5L3ZyZTd1L3Y1Q3k2NG9Nbmo4ZVFTUWdyNHkvdmNjMnpCWUxDdXBhWGxEOS83M3ZjZW56MTdkdU0vLy9uUFhnZUgxbStucHkybnBoSmlnZERJcDZXZmk0UUlFQVdSaXBJSVNUSnlhYklNUlVuL2NuZTUzWEM3UGZCNmZmRDUvQWdFQXdpRndzakp5VVYrcEFERnhTVW9IellNVmRVaklFbnlXWGt2enZqSmcrUFZ4eDkvaklhR0JqUTFOVmxUQ2gwZEhZaEdvNGpGWXVqdTdrWjNkemQ2ZTN1UlNDU1FUQ2JOVGZXRVhlcXM2em94TCtOeE1xY1cyTWtGaVZJcUE1Q1JQcnZBdXFxcXFwUlhYbmxsYW1GaDRUV0NJRnpNWC9abnY1TEo1UFkzM25qamhhOTg1U3Z2TnpVMW1TTk5yRU96RndneUhKb3gwOHlNUWhIemx5aGxLNTVtb1l3dEVHUXJFcGp0SEdiNFdWWldocXFxS2xSV1ZwN1Y5K0tzVzNKU1dWa0pqOGRqRHNlYmVZZWhGQmlvVVUwbHFxcGE0YW5aOTJhNk5TTTgxUWNJVDVNQWxJYUdCcVdrcE9RRkFOdjI3dDA3b2JLeWNyb3N5NS9uTC8relQ0bEU0bSs3ZCs5K2RjS0VDWTBNek5pd00ra0FOUloycWdFMXE5cHBnSTJheFFIanVVbVo1NjRGTkRPbnhoWUovSDUvUms2dHVMall5cW1kVFVXQ2N3WnNBRkJZV0FpdjEyc0J6dTEyZzMwUzJPSFcyOXRyQVM2WlRHYkx2VkZLS1dIUGVEUFBkMk9lbUNuRHdWbUFBNkNNR2pYcWRRRHZ2UERDQzA5TW1qVHBVci9mZncxd3dvOTU1enExWVdkVExCWjc3c1VYWDN6N2kxLzg0dEVzUUhPQ211bk9yR0YxSTQrbTI2dWRCdFJnVmp6TjU2dVRTek9oWmk4VW1PMGNadU50SUJBNEorN1BXUmVLMm5NZWUvZnV4YjU5KzNEbzBDRzB0TFNndmIzZEdxQ1B4K1BXQUwwWm1ocEQ5RWdtazFCVjFYUnZHZUdwc1hoR29KUVN3OEdaNGFsNXNTRXFHNnJLQUpRYmJyakJ2WHo1OHNrRkJRV1hTNUxFVC9IOUZFbFYxUmNQSERqdzZ1MjMzNzdycWFlZVNnMFJhQ2s3MEFDMktKQUJNOTJjZDJiRFR0YWx5YklNdHBYRFBra1FEb2VSbTV1THdzTENqSFlPOG1tZGorSmdjMVpUVXhNKy92aGpORFUxb2FXbEJXMXRiUVBtM2N6Y1d5cVZnbmxLQ0FNNFlxd01KT3cxQU9Da0xJQ1RBY2liTjI4dXYraWlpeVlIQW9IcHZCL3VqUDBGdWFlenMvT2xiZHUydmZ2RkwzNnhqUUdTRTlCU1dZQ20yb0ZtSG54cWhwdDJsOFlDemV4UE0xM2FRUG0wdkx3OEZCWVdvcXlzREpXVmxTZ3JPL2VDZzNNQ2JBRFEyZG1aVVZSb2JXMUZSMGNIamgwN2hsZ3NaaDEvMU52YjYxUllnQUUyWXJvM0ZuQk1nWUVGSEZ0a0VBMEhaNGRjeHZYZWUrL1ZWRmRYWCt6eGVDNEhVTUtSY2xwaGRxaTd1L3VsdXJxNkhaTW1UZHFQdmlyNFlFQ3o1ODVZVjJjUE9hbDVJQU9UNDJWZEdqdnI2Umg2c2syMzdNeW5XU1N3OTlSeHNKMkYwalFOOWZYMTJMOS9QNXFibTlIYTJvcTJ0alljTzNiTU90dXRxNnZMT3R1dHQ3YzNBMjRPN3MwTVQ4MHozd1lDM0ZBZ1ozNU0ycjE3OTdpS2lvcUwzRzczWlJ4eXB3NW1QVDA5Mno3NjZLTjN4NDhmMzJnTEY1MkFwZzRSWnYyQUJtc1BCeWdSQ0JSWjdoZDJzaTdOTEJDNFhDNXIzdFBuOHlFWURDSVVDaUV2THcrUlNNVEtwMVZYVjBNVXhYUDJYcDVUWURQVjNOeU1mZnYyNGVEQmd6aHk1RWhHYUJxUHh5MjRzWWRYc25CakFjY1VGd1lDSERIQUpqaUVxWklOYXJMdFk5TE9uVHRIVjFWVlRmQjZ2UmNUUXNaeUJKMDQ2YnBlMTlYVjlkcWVQWHZxTHJyb0l0YVo2UXlZQmdLYXlnQk5wWlNxUnFYYzZuRTBONld4UURNcm5icXVVMEVRNFhhNytnSE5IbnA2UEo1K1EreG02RmxRVUlEUzBsSlVWRlNndUpodmxqd253UVlBM2QzZGFHeHN6T2gzYTI5dng3Rmp4eENQeHhHUHh5MjRPWVdtV2NKVEMzQU9PVGpDT0xpTVhCd0RPQ2ZRWmZ6ZHhvMGJpeSs4OE1MYWNEZzhRWmJsaTJGdHh1QWFvbzZsVXFuWDJ0cmFkdjd6bi8rc256RmpScHNCSUgwQWQrWUVOZmFFalg3RkFNYWhXYmt6Tm9kbUZnWTBUWWNvaXZENXZPendlci9RMDRTYTMrL3YxOHBoaHA3RGh3K0gxK3ZsZC9oY0JwdXBBd2NPNE1DQkF6aDA2QkJhVzFzSHJKcXlvYWt0OXpZWTRNQVdHV3lRTTUyY0dhYUtkcGc1QVE2QU9INzhlUG1SUng2cHFxcXFHdTMzKzgrWEpPa3pBUHo4YVoyaHVLcXFiMFdqMGZmMzd0M2I4STF2ZktPcHJxNnUzK1NJTFhUTUJqUVdadXovbzl1QVpqazA0NElkYUdiWXFhb2FGU1VKQWI4dkEyaHNiMXEycXFjNXhGNWVYbjdXbk1yQndYWUNGWXZGck5DVXJacWE3czFwcjBJVzk1WUJPRjNYN1ZWVVpBbFQ3WkF6UTFVckwrY0FOc24yZDJKRlJZVzRaczJhWVNOSGpxd0toVUtqWlZrK2p4QXk0aHpMazMyVVRDWS82T2pvK0dqMzd0Mzd2dmExcjdVME5UWHBObGZtNU02eXVUVHI3OHhtYk52bnlJQ1p6YUdCclhLYXgybXhoWUZrU29Va1NRaUhnaGt1elF3OTdRMjNiTlhUREQzUGxkNDBEclovd2IyeFZWUFR2Y1Zpc2F3OWJ3NjVOd3R3cG5zeklXY1BVeG5BT1lXcTluQlZ0QUhPNlgzUmZ2M2lGNy93WDNIRkZTV2xwYVhEL0g3L2NGbVdSd2lDTUJyV0t0NVByUks2cnU5SkpwUDFzVmhzMy83OSt3OCs5OXh6TFhmZGRWZVBDWmhCWUpZTmFobnZNODRzSTh4a1EwM1k1b21adzAySXBRaVhBQUFHR1VsRVFWUXRtREV1alRLTnRrZ2tVNUFrR1htNTRheTlhWUZBSU1PbG1hRW5kMmtjYkVOV1YxY1g5dS9mYnpYMDJudmVzaFVXc2dGTzA3VEJBR2QzY1NiZ2lBUGtCQWZJRGZhKzZPQUdoZlhyMStmWDFOUkU4dlB6Qy8xK2Y0a3N5OFdpS0pZUlFzb3g2RXJ2VTZaZVN1a0JUZE1PSnBQSjVuZzgzbnpreUpIV3VycTZ0aTkvK2NzZFlBNG1HQVJtMlJ5YTQvdjI1RDhMTS9RdEFLSnNNY0IwWndBZ1NWSS9vTEY5YVd4eG9LYzNtVDdFb1NDL1g0SEFxVGV0cEtRRXc0WU5nOC9uNHk5V0RyYmoxK0hEaC9zVkZ1enV6ZDdVYTA0c09MZzNxL2VOQlp5bWFTYll3UFRDd2NIRjJTRm5BWXFCM0dDWFlIdGZzTDF2NWY5Ky9ldGYrOGVOR3hjc0tpb0toa0tob05mckRTcUtFcFFrS1NpS1lsQVFCRDhoeEU4SThSRkNQQVlJelFNQXpNOEpCZ3pXMmpoS2FRK2x0SXRTR3RkMVBhNXBXa3hWMVdnaWtZaDJkM2ZIT2pzN284M056YkdkTzNmR0Z5eFkwTTNBaTlwQVJnZUFtVzV6V05wZ2wvMjh2V3d3WTBGbXVqTm1TeG9GQUVWUkxKalpXamd5aWdPeUxLTzdKd2xGVVZCU1hHQTEyOXBkR2xzZ0tDb3E0aTlPRHJaL1RhbFV5aW9zSERseXhOcG5PdFNtM3FFQ3p1YmlXQWMzRU9RY1ljZE1Qd2dEUUUxMEFKdjlZci9PUUJjYzN0cmZ6MGlET2J6UHZoM29zb1BNZm1WemFmM2VONDkrZDRMWVlEQXozN2Z0MUlBb2lxQ1V3dVZ5WlFXYXZlSVo3K3FGeStWQ3hiRFNqR2JiY0RpTS9QeDhGQlFVV0FVQ1daYjVpNUtEN2NUcDJMRmpPSGp3WUwvYzIxRDYzb3laVTN0NG1oR21HdTdOZ3B3eHpXQ0Zxc3g5c3Vma2lBT0Vzc0ZPeUFJemNRaGdZd0VuT0VCdElNQU5CRGM3ME9BQXNZRWNtcDdGcmRrVCs0TkNqQ2tBVUZ1WWFjTE1LZ1F3RmM2TUhSdWlLRkpLS2R4dWR3YlFKRW15SEpxOU9CQ05kY1B0OFdEVWlPSDlLcDVGUlVVb0xTMUZLTVE3ZWpqWVRxSmFXbG95M0JzN2tqVlFhMGcyOThhMmg1alZVNXVMQXpOMGI3bzNlMDRPRG81dVVPRFpxckZPUUJzSWJzZmozSTRIYk1jVGRqb0NqcWxPWmdVWUF5OFdubUJ6WnVhZjJUQ1RYUTdFQUkyeXVUUktLYnhlYjFhWFptL2g2SXgyd2V2MTRmenphcXh6MDB5WGRpNGNMOFRCZGdicHdJRURsbnR6S2k3WXE2ZE9yU0dwVk1weWJqYkFRZGQxNGdBNDFzbkJGcXJhM1p6OXozWW9aWFZpRHVFdUdRUnMyVnliUFNTbEE4QnRJTURwVG45bW9EU1FzN1AvUHhsZmkvMnpMZFNFM1puWmdFWnRsVTdyYkQ5ZDErSHorUVpzdEdWblBOczZZZ2dFZ3BneWFhTGwwbmkxazRQdHRDbVpUT0xRb1VQOWlndHNlRHBZL20wQTl6WWc1TXhpQStQazdHNE9XUnlkSFVSTzE2RE9qQTJIVDBhT3piWlVodzRSZVBZTHRpUGRZUWVaM1pXWnpvekpuMldGbVIxcUp0ZzBUVU13R0J4d2FKMXR0RzA1ZWd6aGNBNnV1UHdTbEpTVVFGRVUvdUxpWUR2OTZ1bnA2UmVlc3RYVG9iU0gyT0ZtbTJCd21rZTFRNDV0SFlGRFhnNDJLTUhCMldFQUp6YlVmSm9UekxJNXRxRVdFdXlBd3dBQWd4MWM5andaa3krRExXOW0zME9iQVRPMmZZTmQxRzNQcFdtYWhuQTRuSFcrMDZ4Mm1tSG53Y1B0eUk4VTRMSkwrSXJhRXltSlB3VC9tandlRDZxcnExRlVWSVREaHc5bkROV3orVGNUY0hZSE4xRDExQUZ3bE1uREVSdmdxQTEwNWtWTm9GRkt6Y01HMlY5b2c0TEtDWVlEd0d5b3B4blNvVUxPWVMwaWJDRWwrMjh6M21lY21TUElISUJHN1V1M0J3TWFlMm1haHB5Y25INWIxOW1qaGN5aDlhS2lJa0NxNXk4aURyWXpWejZmRDlYVjFTZ3VMdTZYZjJQYlEreUFzOCtlWm1rUGNRcFJxUWsxVGRPcy9Kc1Q2RXpBTWE3T2hGMC8xODVBYkRCb1pRUFlKd1ZiVnNBeEo3LzIwYmdQZHJBNXNneUkyY0xNZmlBek42amJROC9Cd2s1N0RzMjhWRlZGZm42K2RheVFIV2htSG8wUHEzT3dmYXJrOVhwUlZWV0ZrcElTSy8vVzF0YVcwZi9tVkVFOUhnZG5DMDh6M0J5YmczTndjSGJZbVhCajMyWkFqLzI3VTVIQ1lCMlg3V1A5NEdWNzZ3Z3hCNkJsNU5CWXFObkR6c0VjbWoySDVuYTdrVXFsVUZKU2t0R1BscGVYWnpYWnV0MXUvaUxoWVB2MHl1MTJXOGN5c3dVR3RvTEtBdTU0Y25BTzdzMnBUY1FPdW40RkI5UFoyUUhIL0preVJRblcxZldqbWhQOGh1TFVuTTdoWnovR2dzdm14dXp1TEFObWJJdEdsdnlaWTdnNVZJZG16NkdaVXdPcFZBcVZsWlhJeWNuSm1CcVFKUDVTTzVYNi93SEYxRm5aOGoxaXh3QUFBQUJKUlU1RXJrSmdnZz09Il0sWzEsImRlc2NyaXB0aW9uIl0sWyJzcmMiLCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQVRZQUFBRTJDQVlBQUFEcnZMNnBBQUJNQzNwVVdIUlNZWGNnY0hKdlptbHNaU0IwZVhCbElHVjRhV1lBQUhqYXJmMVp0aVc1bFdVTC9rc3JvZ2tpcUFSb0Rpb1o0L1VnbTU5ejRpaU5SdEk5SXZ4bG1sSUwzbnV1Rk1BdTF0b1ZydjMvK1grKzYzLzlyLy8xdktta0srVzNsbGJLelgrcHBSWTYvNmozNzc5Mi9uenVkUDQ4LzhYeTUxL1B2Mzc5K3VzYmdiK2puL3g5NCsyL3Y1L08xL00vZitBZjkzakd2Mzc5cW4rK0UrcWZDLzM1QmhmK1BZRjM5dC9yN3cvSjE4UHY2MC82YzZHMmYvOG9yYjUvZjlUeDUwTHp6d2ZQby96NW5mNTZyTjlmL3Yvclg3N3dza29yYzZNWXdvNVB2TStmNmZjRThmZTc4L3M5ZndZKzkvQzFIbU1zRjM4OThmMXpNUmJrWDE3dkgzL2Y5OThYNkY4VytSLy91djU5OWYvNjE3OHRmdWgvdmg3L2JTM0xuelc2eTMvOWpTZi8yOWZqWDdjSi95SU9mejFSK05kdjNDSEYvM2lkUDcrL2I5WHYyNyszNjBoaFMrV1BSSjNGZnY1eEdUNDRXUEo0ZnF6dzYrVjM1dC92K2RYNFZlOStUN1o4M2ZNZS9KcFBld0s3OGwxUGV0YlRuKy9aNSsvNVRCNHhoUjFlL2c1aGhuaStWdU1iV3BqUmZVcitlcjd3eGhaWHJPemJEUHRpNjFJTWZ6M0xjKzdienYzbVU3bnpldmhvZUxpWVcvM2YvcnIrZDkvOG4veTZ2bSs2Uk05ZC8xb3JuaXNvMXp5R08rZWZmSW9OZWI0Lys1YlBBdi9qMTUvdHYvOG1QNGdxTzVqUE1sZGVzTi9qZDRtUm4zL0tWano3SFBsYzV1K2ZDajNYdS81Y2dDWGkzcG1IZVNJN2NKY241cWM4OXh2Qyt6eXNZMldET2s4ZVlncURIWGh5RG91SFJGNWlDZGNiYXZEZS9NejduTStHSEVyd3k5Z21OaUxIZ201VmRxaXpXU2xsNU9kTkZSbnFPZWFVY3k3NXpmWEtMZmNTU3lxNWxQSVdqVngvNDV2ZS9KYjNmZXZiM2w1alRUWFhVdDlhYTZ1OWhSYXhnYm1WOXJiYVd1czlYSjBiZGE3VitYem5LeU9NT05MSW80eDMxTkZHbjRqUFREUFBNdDlaWjV0OWhSVVhabUtWOWE2NjJ1cjd1VGFXWXFlZGQ5bnZycnZ0L2lGclgvelNsNy95dlYvOTJ0Zi8yclUvdS9vZnYvNEh1L2I4MmJWd2RzclB2WC90R2wrOTN2Y2ZsM2cwSjlrOVk4ZENldGp4MXgxQW9JTjdkdGNucGVET3VXZDNDeWhGRGp4a2RtK3U5YmhqYkdIYVQ4amY4OWZlL1hQbi9xLzI3Y3IxLzJyZnd2OXA1eTYzN3Y4Zk8zZXhkZis1Yi8vRnJpMzkzRHc3OXROQzEvU09hQitmNmFGZS9MNXYvdmpyYng2cDdwN0w2SG4xa1dkZXFhTWk5NzdmRjRmeWNObVpZbjkzdjFOWU82VXZocFRlSzliUWE4Wk81YStOc2Q1N2JOYzhzRFp2K3VwVDhGclBkcW5penBVMXJuMitiWS82MUw3ak84dkhoM2R1VjRtNHlCRXdaWVZscjJGekU0eGYvN2hvU3l6QnlPL3FmYzMwM2pQdzFud1hieHZZMGR4YS9ZbytPbzc3WXNPL09ubVorTDVmcVd6RDJobWZIc1lJdmV5TVJ3UUlQTHhsbmFPdHROTllMZk9jdVlYTXBuN0lFd0pVcjRFUlhwWG5DcW4xUFYvZXVlYjFmbThyOWV1MWpQWStYMEVvSXErNVcxOGRPOU16Ky9IdVozQ2hOMjA4d1hzOTdCNHVvdll2NTQ4djFQeWw4ZDFuVC9IZ2RjZTYyVS8ycnFlRW9JNVVTd2hydHZmRncxUldaQjNkdWNvN25sMTR6VmxIaWp6TllBay8xQUlkd0g0OXBha01uMUw1N2Z6bCtaWEpvOFZudDd6MnF1K2VIMXRjVUpGNWYzM3R3ZDUrTWRZNzl6QlN1dG1kOTVsMXphVVhXdC9kZWNiOERsNXZmVWhQV09OYisvbG1yeXU5Kzd0NGlxeDQ3UGNwNzNkdmZNSEx6OHhSMm14WXlQZDk0c2F2enBCdjlndWREM2ZKZGFQckc2ZjI3SW5FUFN0Y0kwMWVrajhpdCtvKzloZm5qWmNiM3JPbFhka3lkaTZ1Kzlzam9Wbzk4WWc3c0lNWWx6SkNyU0d4L1JPUmFDbjB2VldudVQ3V2xsdVArYjBvM1U0RnVZajM3clBpZFhkZ0M5QzV3YzY5TGgxWHcvWWdGL25DUG9Ua3hTcHFGbmZ4L2R0dXdiL1hOOC8vZjNwaHM1Nm5aVFM3M1RFMmZYZ1liM2kvMkhkZUk2MXJMRjRtM1BWTHJHRmlEenNPS2JjUmUvdFFjT0J1VzJOZ21DYmJ3Zjh3Vm14VGIvRWJvV0Nwa0tuVTN0d3ZmTk5DTXdjN0hWSkJxZ2VHQjdBQXNwdklGelp1YllUanJldkxBMlVaZS9LWU55L2xEU0pyMitabXQ2K05UajF6RlV4YlExYjd5bHZkZjdGSTkrQlJFS0cxUUl4ejhyRTNIRDBzV0krZXhoeiticXYwOWFDMDJpYmM1NDVlTGN6R005MnJwcktScjRhdGlieDFmN25MZzB6c2pxbGFxN1FXTUZBcGxkcnZ2TGdPeUw5aXhQWWNEeVlaUk5YQlZ4R2JJaTVlNmR0UC9saFdWZ3ZKU2JraU1hM3hrYlhxTE9sN0VOUVhGVTF4UWlFKzNqUnJUQkhWK21Jd3NBWCtMOFRCNXM0K1o4UWZvTHgzVGhnbDlCZ2wzOXc5THBUM2V3RjZvUTlzZHJ2ZFl2UVQrTVhiOCsrWSsxMnd6YkgzdDk1alloZmkzZG8zSzR2Q1U5MjVZVTE0aFRsQi9yRXNsdnZDek1YTmpzeGNucFI3VFJqcThLUTNJSU1kTHFDSHV3dUxneWZJZzQwYWhlY2N1d0ZXeHV4bGxZU0hBRVRVbVBKNGNrVFVKMnBYc084VDNMcmJmTit1TUxIM3JPUERzaURzdlBsdUdBM1cwVjNFcDdFay9VWXZMcGE1cE1ETEQyMUw0c1ZRSUM1MmYvNTRYaXhmd2dFTlJHVy8yTitNU3FMMGZLNDJibzZ3aDgwRjl0VzRZNHQ1cnJjTzFCem5zSEJ5dURLRUR1L1YwZmZZNTUxS0tNL0h2MnY1VUY5TU9UOHhQOXhGM0R2anhhRlpHNXVYRTUvQUFLWStzRTY4YnVVdlRENWVBdUY4ZTZxajNCT0ZCbVVETmpGeGVYd0ZiVVlpTXo3andXV3ZoUnRwWGg5bm05N2FlbVpWMFFoV0Z2SEg2bUtHZmVmQk15TmhyNUx4ZklNbmEvVjQzdlcxV2E5SEN5S3c1eG5SRnN4NUx3RkJ3STY2L0E4K0d5ZVJ0SWpOVmVUYkJiRFBXN0RTN0ZoVDBsNFpwRnVNVVFOS1lIa2p0cFJYeTFoUlZpYS82RCtDV1ZyR2tDTSsrR0YwclFxbnY3bGJTWURSa2p2T1pWelNndzlHOElZUlpzVUF5VlhDOXVJZG1VSmxrSjVVUGtES2hpdjBnWWdqSDBYUDlXSE1jWWhMYTMwOXFPVVJwWFhqejlhSDJyZHYrWUg3UXhLaEVBVVFrR0NtTENieXhZOGhBN21pTkI4cnpSODM5dll0MTFzbkYwY0pWd2U4N2JleUl3cmRNeFl1ODFiZXNONVR3SUF2akJxMnIyYzgyQXg0eHc5UitmYis4Q0s4SytnQTRJSVJ3b2hqOFlCbGoyNmQ3V3Y3Z3gwTkVNOUNLRUZCS0M2QzhHMFdQN0o2SDc0Qng5QVJodXZHQ29SM0RGejBERHpqM1dOUkZWa3NTQUtQMnBDRDJZb2NXQlB6WWNBQk9Ed1M5OGFWWWtqdzdSSGp2M2paamRGSndDVllJVGRhZU8xajlNZUdaUDM5SnhyS3picC83NUdma0F1N2dZWlhEUGVGN2VVaURTZ3hwRVRsUlZ0QkZHOTlYTlZieGVkR1BDdTdFU2FlVDBjTGF2eGFqZ3BPeGcxaTBGOEFPeVlVQlh1ZlVQQUtlQSswbGdzQXk5Qlp4SGgvZ3hYTEdLRGVubmV5K3FrOEQ1Z25nVGg1SWxaUWczYTlFL1BMT3BaUFUrbEs3YWNDSDBabDYzc3JlYlQwRnFBVzBvaWZIamp5K1FEWXBqR0NxcmlpM1R3WFFHdlA5dUVBRmV3RjZzR2xjR0hVRkNlUGlSTTVndDJ3VDAvSEZVajlVRHBzVlB0dXR2RURmTU9Obm5JMW5BWXFnM0haQmJERjVvQWZzVnFaalgzQU9NMTM1MllWZzg0LzhYMlFYY3dsL2pHT3dpYmphUkhBZENIdFNGbGNRVU1PbW4vVGdpRUNWc1E0b1VBcWNvQktsSXhqdUpWdGRBaVpQOGdETkFFdUwySGdsYTVibUlOb0taTVF4M0dXSGhkWGdhWW85WU92QmdLK0dHTitQSlNXbG55UzF3c1pnY1gvSWNaM25lbWFGVE8xVmU4bXdjZER4L3VOMEZYV1RjU1IwVXpFSFMvT1ZvTlhjcGh6QXdyeGlZSEwzQ3c3TnFpVks3SUhXTGdHL0FNN0k3MW9PU3Yxdks3eWc1NkhoZy9EK0FZd05nUVB1UHNoZWVLdG1yazVxcFVnVFB2cTZCUXdJUmVjV0FJeklBZ29QcThGT1lZYUpZZ0hkMEh5SjJDVkhaL0lGWmoxdzNOdnZBSGZPVngrWFZpbXg4akpDeVg1eDllUHZ5NTFQVEtHOWZzQUZ1VHZINW5IcHYzdEo2Ly85ei82cno5NW5SL2RvK1M3WWd4N2F0aWVDSnFjWTJKT1lTbUk2SVBSaFphQzlMRGZDR25MRUlDWEhTcWlrZC9iWHZOSUs5Ymh4ZTIvOCtBQWRMVCtZeVYrMzRCRitDMlY5MEFaVE5ETnphS2F6eTNuVGhjQ09QRnlvTCtBSG1GdFhpQXI2b082SHVUSFBrSms4Z3NkMkYySGt6SHU3S0M0SFVCWC9mUERNMStMN1VHNzN4VUVkZy9NQU1VT01zOGN2VFdrWmVEbWNXOTR1dyt2SkU2TGdNUTNkamowRFJBZlJqb3VjSERCR1dPQnNac05nY0dBaHhlNENLWm1LYmduZG0wQWNnR2JQR3BNY1dnVEVxaDFwTHVCYWhOeTNPTjFieTRGcWNHUGJSWm5vQzJzQk9hUGp3VEpJSzQrUkZ3WVZvbEhHYkFqckxEUlQ0aGpiM3VQdmRhbzMyWG9DdUFxb0ZMUDBTelVEWjRjV0JBWU5adGJFbWF2cy8wTkdaMDRwcG1mTU1TbjdEUFVHMk4wZi9tcWNHdUFKZENndmtwSmlobjNCUHY0S3A0NUQ1eCtydHh6ZGhGWVNWS01oQ0dhK203czBvSTJMNjU5VFRRU1NsamZJVHBpalhDV2NUenBHOUQvUGxnMWVQNkh6TUNTeDFmeGRqc0hIQlppMVdTUkQyNityUEZnMkxqekIrd0FqZUJESUFqdm01OThLQVIrQWxTR0NQWENZdDBpL1RkTTlMNjlBVjVRUlNKdzZ3UmtYeGVxSGZSVUJidUJ0SDFmKzRQSEFPOXhZNWphRVZoZ0lkWXN3bmcvWE5QODhEdm9pQnl4QXRUWnp5dGovUnF3SDZ6K3BNQnQ1ZUxuaDFHS0cvekE0K1hJM21ON2VDM2VuMzFubFo4TUZvcEE4WTRGRGUwRnNiRWZRRTJlQTFvQjJVS3FOb1JpcHdSNVlVZUN6QXVVOG9DY01KNll4QWc5d3RtaHVDelhEZVNTb2x6RlhjZkRBWFIxbkJtbUpibzNwaWd3TGVnZnNBR1V6dTQwT0lBc21wL2xIYll1YWNKOU1XUGh1WDc4ck9MdG9KYTd2MndUb3BCNWQ1VDFabFZ1VER1MjFUQUdEQjZ6Q1ppTE9NQ2huMDI4WGtxbzdydzZJQnRFaGs0VWJTK09DSGpUV1V6OENZNUJ6b1RvWWVqaE14MUVDQk9GVGtpMjJNNEhhQVhrZkRSc0NUM283eDRzUFJzeThLcUdIOUNXRFBERGMyRW5CTU0za09jYjJBQnNUeEFuZWowZUwyRE1XYjN5WG1VamU5c2NBekNzMyt4U3llOUJoMi9HdjdGRU9OWlZXUkxqYnM4TFRPa2JHN0x3ZExPQWpockVtblcvUU5aWWlpQlpLdm5CaVJvMUFhYkEyTytXSDNYemhNTEV2RGpZd3JPM0ZjTXFBRng0Q2VqdlpRM3ZjcTNxSG1TbGNIVE1Sb1hpSkw0SUJJMlNZdkFOc0czaGpZYVNBdHlJaWdXaTlPb0gxUW53ejQyS0hDWVBtTUpVOFNCcnZTQjZsQi9oNEw2YlZjS0pZYzRDQ2kwWkc1V05CY0hOVzdXOTN3RWhoRzdzQzRJTDlrSFV3ZGY1L011ZGcrT3pZcENxZ0kxR1lQa1NXTmVRNHR3dk9CZWJuc0V1aGlSUVhBUzhYNENZZ0YvQUM1YU5QT0NLdFZ0VG1NRHl1ZXlvVGw4R0NtS29idzRxY3BlMnNtNExFUXlWRndQNnNUZ1lEVVFNdFVSY3VUZXlFUnFNSE13R2FoQ2xWR3c4SGtxdml6MWx6WkNNelRibWdUSFJoT1BicjVNNkFhQXZzUld3Qm16NUhTZ2RjQ0RmMjNIdXJDRzYvQUVPY0pPZjRmWVhIS2tDQVg0MmN1Sy9UVUpwRU1ieFo0TmJJZnBZZm9CV1FMNXF5TytFTFhXOERsNElLNDJkbCtrQkdQazhKQUtXaVZLOXo1VmcrVGphdHU3ZHE2ckFOcUlEckdMSUlqak1icm1CS3dOZXQ5bkhKUDJHb2Y3alNmN3hJTmVmSjBFUCtyR0tCbjBFMVh5SzNVRkl2N3hPZkplMWhnMFhTRFBZQzhWaWRlSmROSjYzRHYzS01GZE1yczVBRXQxUWJYNmcxSUpBWTdaaGM0akFnNmJmZmNsWnZ2TG4xbmp4OVAzejl0ZmY3eDgvd0sxb0F5TEtBcDBGN1N2ajBnRzZCbG1rUWMzb21ORS9CYlBINTJ1WXROd3ZURnFTaWhiSWZ4TkFnOEZiZERGbHNDOE1EUG4rak9nbTZhQ3hJSmdqdHBVdE5jUjlGbjIwY0NVOFVPQ3hmRGZNTnFBVi93YWlEcytJUU9JQWoxUm1jYWI1T1NMellzV2hWTU9jNE4vQ0dwZHhqZFlibmdIZmNvUmdISkFsc1AwRHQvNXRmLzdyN2JuKzJoOHQvd0NCNEN6eWcvK0YzK0JaRjZRSEd3YnN5TFZnT2xJNFVjVWJwTERuMFU4ajZTakx0YkNRYStiS0MwekRCZ0hsWWRNYjJzYzJicnhVbEZzY29MNm1pQXQrTm5CNzZBQVB4eGFEVEZoWUxPUytIeUQ5MHpvdktNM0xFM3M0MEV5TWJOREh3MGw1NmdlSzYxN2lZOS96cW8veDhyMzdUMW11dTVRNzdxckZFeGd2dlB0RUd5RzFrcTRURTRPWHlScll1eE9kVG51QU96NXN6RjVWNW84Q2xIcE5IQ0hLWFRMd3B3Q1RFSVEzd25OQnFCQVVLSGRmVDNCdEIxNk42L085VlFXdWZDTHlUT3dydXJrMEk0anlQV0RBS0JSbW1MWHBFU0tNbTB3UlVJSGx1Q1Zhc21EZUh5dUUxUVVsU1lDZVZlSEtHM2YwakF1RU53d2FHTjFIWmhkcUpOVjh4MmQ4R0JRTWJPblF3aGhpVWRrTldBL2o4SzlCbEtYeGI2dUVkU0hOTUdtRG5Ed2prZzFkZ0thT2IyWWM3YU5aNkJXeWdLeGxLTXFlMHFHeXNaUEdwa1BTbmlKVkkxMUd6bHBubFg1N1d4dE9RQWdIcW1oUWQ3T3JyQ0Uvelpla3B4aGhRK25pdXNERmNaVGdLL2pLVlJzVzJEVDMvYXBMb3J4dkYwWFlUQVJNc3FPQ09JcVYyc2J3c3pOQTA2NVMzRkJsdkRyUGlud1lRS2g0aW5yamJpclVxT25raGlRS1JJKzNpUk1VQTdQN01zdUNnWTN6Qjd3Z2VSR29rbVlBOEVNbzZoVkVRaER1bGNGUCsyQTE0T3YzYmlRYVVpd0kzem5pOHlGbkgxcXc4Ym52QjVUaEpoK1dISk5UOEpoVHhKYkJIK3JzUE9xNGpTMFhWZzI4T1NlMGMrQWpqQUZEUW5HdllHTjR4c2RGY2VHWXpGWnJpZERRQzE3OExwZGQwYTA0RGZnUnEyaUFrNFZQT0dXZUZ3K3dZaDlyNTJXQXc0MVBPck9HRUppb3h0NWY0Snh0M0NFMGJyaGtMM2xVMEUweUFZQVRPK0lYUG53c1duaVhiNlBhS1R6b2Z0WG56VGRXZ05LYVY5MjRiMURZbDJ0Q3NjRE1DTzhOOFgxZ05pdHh1N3FCT3hEdS9EN2dINU1uY0RVdzJNMXRBQXREM1dueE1qUTBaY2NRNm9DdHdEd2x0UmlTZ0dEK0kzUmZzVTFQaHRpKzBFaDBialhFUndlUVZvc2dqU2RmQVMxeVlUZGVlRWltOTZ0MTI1aUNEREsrTzdnVWZ3cnZpMGEwUUxJYkMzaFhjekdGSmZwKzBQN2tSWkJnby9PUEllMG5KYUF6QXNVK0JoMHkwZzNPM2RLQ1J6ZGw0bjdNOVFCSmNWTy9uQkpMbks4aEdETGtnUkZwaUJ2YWJqRHhSSStCSlZKWUVGWXZFcGtRVVNIZUQ1SEZ0Y016dExwUVg2U3FYeGlVa1JBRVZnRi9OdlBocjF0bkFMaUlRcldGSEdKM3NSY0w4OGJydzlJU3VBaWZlWnM0ZUJhVWFGKzZTendIMndTSGhvYTJwMFlBUENKeWcwL3lFWGJJTDZ6dzQ0RmZTQ0FmUUdLNWIwYnVRZjVnUlJ6WkJYcGNieXFEYjQwSi94NzhSalc1aEtIbkFxb0VSeGovdUxHendNY25MK0g0L1Z2aXB4cWdXeXc0K0tpYXQ5ZWNpWE1OdjJoMHFrYkpid0J4bnR1ZzI5MTF5WWFsMEg1WTJtNXhQWGxHSlFIbHVNU01ZS0tOMFVSV09oQnFwaStFYm5YTjFwMXJ0K2FTR2d5SkFQaVVaY05oY1MrTWNZakJqRW9HUkZTd1pQOFA0UlBuLzIzZE1BaDhNR09ySS9BaG9vV1ovOTdYZVBhZEowK0s4VzhtcGRDeEpkbXl4Q2ViSkdXZkRURmhGZmNHNjBNUEJDYi9manNFOHNjRDQ2VTR4bi9lL2NGVFlDbnJNSTJrU0p0clN5Y3FBaitCZE1TVGhHTFhhOCt4Ui9OK3JZZnhYcCtGTGJWalAxSFIyOWcxUk9NRi9KZit6OXVkdTAyREFGdDRPdXVCRUR3UTNuUGh1d0JQRjhKZkUzZ2Y0SVE1eDhzVUF3SjREM3dxZnROMFg2eVloMSt1RDdNWmtzOHdOL0tCUWdCVnh0RFdYUHpiVDZZdllpaTNBZnp2WkFsOTE3TWdmeTBIK0pnSGlUZHdQT0NDc1cyNDFsWngxWERrKzJLSHh6M2h1cmp6cmFpQk5iV3ZrbzErdGg0OGhkbHIvNGViWFArNFN6NFNBVWptM1lFR2FMVUxEOFpENFRDWXVMc09UOG5uOFYvQS9NdDJBQTdteWZMaGZDN2diUnpZNTR4dmVqNFVHb3ZzbXM2VGpmM1hCL2pidHYvTGU4WWFRUDRzRFJ3REl3Rml3b1ZrVGZHSjZXQXlHOXVDRFVIWlFaZEdrYnFrNWUrN2gvWEMrdlN4TDBnNldvbFV5dEFOT09LWEkyWVZNWmJzakNkQzVORkY3REc4NTMyQnYrQTVKS2RYNUMvcXZrenhLWkQ0YnpZQUlpU016bFdhTnF1R3pqaUNGQkZZQnJvcVg5RUdoWm54UkRqdzl5OVFXaWFROFNyQ3VmRUhtcU9WRTRxTFA4VWxRNUFiMmdRVktDK1diVXYvYnBPRnoxR0NabUprUDloUmRIYysxNUJjR01xQnd0enhYdWptTU04SzFvVE5taHpCaEpaM2M5Rzh6d2FBUlQ0enRaQWhQMzFqUExBb2x6NXZtT21ZK0lOOUloRGNqMlhHeDZmNjRXNHhsU2JKd0NhTlp3UTVyY0x5c3VLc25RVmxHYVRSOTJYQWNuMG1ia3J2WEFWbmhJaU1lbWRaRlR1QzZaOW8wSy9LWmZMcTIxZ1lQamF6UWRVOHZrWVN1cjRUeGlQd1hpYlJYK09kNFBScFRka1RQak5VOG9yZXNaWGJJQnY4MzJqWlNRVWE2Q3JyYWV3UHFMWUI4aDgwZnhnOWovMEJFTEd6Y24xY1NHZGpKcVprakNQU1ZVSWhpREFTemNydllPWTRocThIdkVnNzlZbHd1ME1sUHJqbGhMc1ZUR1FHcFVXcjZmZ1paQzByS1ZQSlI2WndhOXorUzVnU3J2Mll6bEE0VFRWSGxwMVZnU3hiaHZDTGFZSDd1NVVqM0RzTmdCNTcyTER5TDh4UlB3aGdCdFVDTFo1OVJlQWxaQ0dEeE9SNG90MjNJWGxKWklodkxTdkRxMXFZNlFTbjJFeUFDK3lETlRTK1h2UEo1RDJtNlJ0MExCWFRHY2FvOFMxY1RFdHV2WU4wVlN5cytjUEhyRU9WWUlOZ2p2UWtCSjM3NDIyeGtkZnptSFNva3gzQVdJeGpXOFBQKzhLanVPTWI0SU1MaElDSUFIQlJhTVRydFdnbWZnQXpBQW52SFBjRlJ2QmJxSk5xdytzaGpMTjNKQjhvQmwrdGVMWnZRZUdXZ1k3OEdMSlMvLys2NDdtZnlVejkweERpb3lUb2RjVHg0TEFnL2pIaGJzVmhpVjJER0NCSCtIU1RnUG5GVTZNQmo5OFB4a3UrZmpYOE5ONW5BblhhKzVqNkJDV0M4WEEyUXFCUWpBTHhMbENXdUZHa2x2QlhKOWxkQVErZ3laR0tNT3JpVVlCd0E0dUREdDVZVThnQ05HcURBU3JZTytYNFlMYVEvMmNOOXEwY0hnYktRWW5CNFA2NUVKaUpQZnBiamtIY0QwQkt0NG5vWDhidnh4VWp5cHpMNFlxWUdmalJCL1FCNUpna1MrOER3Uy9YMXdjWUtpMWVDU2tDSWdMU3A3YnpPWWtIeGRtNm9CdWptdzB5Z3preGozbGpKdzJyOFB3WStyb25oaTNrb1o1dU1XMHlWN3RNdTNmTE9VQ0NTR1FVdExlbDdSUm5Md1AzM1NEaFNVekdYOHIrMHZGSGpPVUh1TTNscERSK2JQN0J1ZTRIQk1iM3Y2YVIrcjJNMG94d3ZMb0JNVFJlQS9xTzBsYVVITitiSVNuV3ZTQ2tCaTd4aVR4L1J5eXl0VXlnRi9CQnJnQ2h1azRCTlVDTHI0RGg0YTVKTk5KTWVrUlVKUFZYVHplTnpnRmFVNDl2d2lJaWdZWWhlU3VVdmNSa3JBNXZQWUJJMGJEY1l4WVJRbnhGODVQc1RyQktSY3FLalZZTnhoaStoN1JCcnhLTHNWV2NTTVhaWW1DeExqaTdjcTlmREtDVUN3c0NyVGdMRmtvK1A0UVJnT2dCL2pDL3JBK0FBNXVCYU93RjhBY0NBcUVtR2phd0pwZ1M3aHRHWFNCL2ZLSkpBTmxOUlJSV3g2RVpOK0RkYmpsQ040akJicUhYVm9weHp3UytFbTZNdjczNEJVK0hHRm1PdHdZdzRzRk9mTUhhRlRnak1tNGxqd2dKbSszV205RUFxeVFnR080WXVDaGVoSzNkMjByZnVBQUZ0UjVCNFBkU0g3SDRIK2dQQUc3cXE4UGxBK3hyak00aWxjejZXRHRpNlZHMFhNRDgyZ2N1aEd3K3hnQS85dVhCcVBQS3JHUnNRMFdDa3FOZ3dMSnlGcTJlOVFQUW16cWYzSVJyWVJMcTFhQVBrSU1ialc4dzluTFNveDlXRVhPSDgrTDN4cDRNakg5OVRmbnZDbWZsZmdLYzIwVFc4YjRqWHRFUTFYbVg4UDZXTUJzVndIWkIzVzVqN29BdGtDTW9CRVNVZ2hsQlNCR2NXNS95R3ZaK2tKNThJWmEzRjBMZVlEd3NVTG9iajlqUjduYkNFam1mdEJhMElxQjdWaXhpa3RrTHNhakpVdlBGT05lejJKWEw1SGREaTRlbEFZY1ZRU0JBRWF3S3lHNXVFSXFBUWJMQVhtQUxjQjVJc01WU1pSbzltWmVSUVpacytkN28xUnJzY0RReXRBeWU2VG0ybVFjNG82Vi9vby83TTBzeEFhdDgwWW9qci9kZE1JV2VyZUVTTW9kYWNJbzMxczJ5aHdTQTJQR1lpUnRuQXhQY2x2NEJDbnZkRFU4Q1dNMElHRVJ0dGdzTGJFUkdlSmg3TlErRlBxTG5HTFo2U20wQXl0V0VOSStYWXNaNkEvQkFoVkNqOVZoU2NHUHVNQWlBQ0o4SDZHRFdMWnJiUndicVFoYkJUK1UrSmRrWnNqMXcyaGJJWTdBTndBRDhkVVliRnkzZ3llT2FXSWVOQi84c21RSlUxMnJBUWIyTTNDSVhnekhmSVJHc3RlbDYxamRYby9pbXdaRHFWSkc0TmkremY1dDdmNERLOXZaaTZHcytJRHVYR0E2QUlOekJNT1g5amZHcjNMOTNISllWQ3NuTnY3SnFMMDhVNzdSUHJTRWdoMGV0cHJjTTJRd2xQT0NkTUtVR2kzQWNpYlY5bXFVTXhnaTNWZWdBc1g1cVF5K3NNcFRLekUweUNtbHBPbERBU2dZeGlMY0hZbVJFeitvQjYzYkFRUjBFanMxN0UzSTF1blVYRDd0V1VUME1NRGZNMnpJelh1M1JqbjI4UGpDaFdTZG9jQTJ2MExSZFlMM0JUc09WbGNOVmVYYkFON3EydDZVVkpvWUFZNy9rUE1TZWEvbyswTGREQTVCa05CYy9oSERMQkxKNTcySlFOb1lUdVYyc2tmZ0llUVludkJWUVBqSkVKQmpEZkRBZ3dMTStoNldURmVqRzZrSUYrNHVBRnhZWkV6YjdBeUR1YjduMkN4UkZiZ0EyWnJSYTNOTTBtcFV2Z0IzaklkKzB3SEVhY0R2NTBSUGJUMzU1TEdReEh3VDJvR3RUSjQxTzdveHQ0WGRTcmpWOGVLWUVlOENXM01naVd4V01WdFlwU2VhS0FsM1E2N1FjTmdmcklRM001WEkva0JaV2hFdmkrcE5PYW9mT3ZyQVh0NFdsNzdES3cyenVsRHVlY0hzM2pKaGVFT0ZsTmVTZnJFUFYxa2JyUmZqaUwxZUwwVFNDekplZzVjbXlhYXRXMUFSNWk2V2UrME1KY0R3Zy93Y0VCUy9PMll2MXRuR01PTS8zUmErbjRSS1RaRHdRV0FBRDJ3empyMmd4Z0xWalNpVk1qQVc4MHZydkh2YmZuMVZUYlREelZ5TVJiaFpDN3d3UVp6L0RaWmhMYVR4MW1LZzlHS0Nua0tCKzBEUTBLV0NacGd5bDUxTyswR1JCVmpKTlhBZG1Ca0lGQTQvcENtd0NnQWhROWVpcXpCQWExZWFudnYvcXFmNDgvbC9KalQ4dk1QSmwwZnc2M3dJcEhCdUZtQlJjNllrQ2hjT3RjenN4M21DVUVvcWJtb0YxSE9EM0V6TGp3Zmw2MVhkMFBJckhrVEVBeWR4OFNzZ0tsSHQxMDEyc2dyeTk3TU1OMTFxditCV29CL01HQjdNb3NLT3EyWVA4VDR2cUJDalZOSElDL21KdThzbGdKK1N2WWVzQVFCYXZKUFBxa05NTUdKbFkrRzRjQjNka08wRDY2VWI0ZmtwUWZsVnN1azZBblJVMXI3c2FUelhiOGF6YjZrRTRMRitZRFNkWjhnVUJZTjlnUmV3WXptSGpBbmx6WEhFQ3lHUFo1MHdnbmhNUldzYWVIMnM1Z1IxQVZaYm13Nyt4YXZsYjEwa1BRRnh1cUhUYkp0T01oVUFzc0grUHhaTGhHMko4bnE3OEl4bjExNk1kMGpST1U4bUZoRXR1VDJ6OXMwSmxHUWxvL3JpUDBIbzB2NkkxSHZoTXN6bTV6aUFWVXZqNXMwNDg0dXFYRnVqR3dUYXd1dVdrMVlMbFZYaE5pQXQyQmM2RUh3WlNscHdOQ2NrT0FpNGlXL0J6M2hIT0JBYStEQTdNZitUSlhPWHh5NkQ5YzVYLzgyVitVT2JGb1lsc29rYjVRWTRPMjhERUE2QlNNTXp5enZITFZvbS9oQ213aHBGWnhWQnV1OFFDNjgxYW5DUkNBd0ZqUHRFMXl4NEVJVkNiKzFldkx1ZEZzd0xNQmljZnNSd3dDQUFsUUJQNkF2Y01tbGFXaDFkRDlMRmFzb01yS1hRNG5BZEVpSWdpaWpDQS9QNWFmVjVERWMxQThuZGFackNTMnR3aGZZYnlCMUNwVFB3R0YxNUdPSU5PMDRRRmFONW1rLy9wcW8wT3AvMUxPTlAzV3pZWWJJNTJKeVRRL1lpamJMTmtKcGZTdEpRQlMyTWR2dVd5ZVJvZEttMWo4VnpzbUc1Z1dNTkNza0R1UFdhUzJ4c1BBMzBYaUdyRy9YSVIvQU9Zb2dQTit1RVcxb1ZEN0VMZ0JhOW45T2VuWWN0V2pHS2NnL1VWclUwNDlyT2EvbnZITzFjdk8wVVArRGFjTDVRWHNIbi85SE9mcEhnL0pGTmptdUl2NEcySjJIRzEvVFV6S1RWM0RmQ01acFBZNWJidUNlZTAxSHh1Q0NPNkZxcmRWY2JPY1VDMkpKZzNlMW13WllrTW9CMUVqZ3V3akJta2lnQmFZR1kwNXpIcmZVUlR2M0VwT1hIVzMxNTgzQlVlUE8yQ1lUMStYN1BraEZkQWhJOFh4VWppUW5oM05nTHppRU8yL21GZUZyN3hxaFhrcjc0OXVNME9vUVF2c1Y3TE5FblpBOXFDRmJFYWN6MW1IaXhtZk15K1ZlUHQ3T29ET1k0NjBQRWZxd01xdjMreWhHRndFYlg4K1FDVytBdmF3YWp2MzRMWk9IQk4yelVSdTN0TGFSQXZaQmJNaEttd3pjc2FJOGpEampnUkMxOTdmV2Y4UUkvc0t5eENYdnZsWW16NytsanhhaTJMelNSWlBwdngwYmZ0TGkvT0FlLzE5dnNFVlgydUIzS04yMnRZbTEydEFVSEYwVHN3TUo2Mnd3M1JSVjU4V2M5a2p1WlRwbUlwa0M0QlNZVGdQbmlhaWRtTDJDalFLMWJpQkdhbXhkNUFMeE4xMml6OGVRbWdKTU5LcGxUdmFtMEFVTHNBWTRWWXRoeFptd0pJKzdSKzRLenZUNUxsdDdzWEx0UTBtWjRudlBCUGxobWJ6MlpJK0FNcktWNkRackhoRnYxSTBvSEttUFFuVnd0ajd0ZmkvejJ1ekRmYk5vQWM1ZytUdlVheE9raFpKQUFUQ0xZbHhYeHlXZmlXK2t6SXJFVlFBZnJiakI1YW9IOHRnQVVnSVNCZDFlUjlZWGRuTFR3RkdQUzI1OHNWV0pZSmdqS0xKWW80WHcwVlZoWEEvaHBWZzNkY3I5MFhjZ0owcWhpUmg4RStXaXBUTGpPQ1NOZW9keHNOaWRnYlc4bHF2OFppbzQwVnBXTlN4b1BzWHRrNkJIemQrMkJ5Z2xIQitTdkFRYmFCRzQvMTNValQ5QVhaZDVNSXNCbXJkTmtIYkhoa2I4Q2J6OVhNVkcxb3h5bTNoc3MrVm1qRENrQjdvSE13R3JUaWZubkJ0NTMvaSt3OHdJZkM0NWI3eTgrbzJKUUpZcHQyUFVCcWpvdkVmaUVxN0NuSU52Q0R2QWI4aTMxL0Nnd01lbXY1MHdPaGd5c0F2bkpHMEFPWUxkNlhqMnpqajdsTWtOakhtMWRiUWxsTGtWMHhEbjRiZGhrbm1vK2t0bWJlRklsNVBvc1dSQzZQRHZKVEVjNDJjbWZ3RDQ3TnFzTXRSOVNzeFpQWHQwVUxGTmpFZmJOYVVNSUw1OU1qOHV3S283dXlyWFFEeTEveUNDZ1M1aXpmS1ExZkIwYkFRMmJjOTJNczB0b1JNMVJ2ejZlMUNkTTVnRkxSeXFyN21paE5BcXdIaVNEMk5PT2EwaTgzYW1yZjZrbzA1OWxOeW1SZWZwWmZkVmNDYzMwTFd3a2wrdVVnc1VVL2ExT3M5VWtuUFduOVpZVDkzeWM2Rk4vL3ZOamY3bm51ZUV3dHlCWklhY0V2bG9WZGVMSFJvVC80K1JmOEJhS0d0UmdOQk12SUNic0I5OWZvaUltUmIwNlVOVi90Ly9LTy83d2grQVlUdml4RHJTYTg3YzVGYWEzd1NSSFBnREIydUdjSGZleW84N3J4QXljYTlWb2hnYW5VdW9TVFBaQWduU0lDRVlOZUNRWlpRSGw5TmE2UC83VDdnMGMyM1JsaHNSRGZvVnRLRWR4eGVqOHdVYk5ZSklXaFJ5Y0JlQmxrYlJFdHZoOVl4N1hjL0lCMVEyM1JWOVFPbWRQNk50OEQwcCtSLzJVN0ZwK0hwRTE0NUVKYjhaSmNHOFp4d1NXVEtkaGZLOVFHWHFIcEZ2MW1TR0RoU3NzTU1wU1l4MEJoaDJuYlVYRExCWE13Wmg0R2NRVVJ6ekJuY1dCTHNYQ25tVHAvMFVVOGNMYXdEM2lDOEQzUmN0YmJMUFJ0bjJOUGFMaWhTalFScWxXUTdGUWI3OXZTblpHemQxbHpjb3YzT2g5ZkZVS2F0dlY1Q1JObk1NeGtxc0VHNjlnQ1hzVU9UdnZQcnJzZ0hiYStueHdQL3k0ejdPM0RBV1hRUW4wcFc0YmMvT3FScFU1NGw5UFJDcjh3QXdlbnVOc1YwQXRydU5Lako3NFBUbjRWb2JFTUFVRXQ4ZjRiUkpPZko3MFdMNXJBd3loQUt1dmRyWm01YlhpNUxNTXg3V3I0OUhQYnJIdVozUzVsaUxpdG9XWWR6Ly9rODM3QlVoYWtJRFpBVmx0OCtFRXFMNzBremdHaWpWTkRIbitVWloyWUNzOVhzbDAxdHNXODJVNndiOThMNjQ3ODNnYVFSb21vVk5peEE5Z25iZ21pZ3hldnZCeUdOZHZMdGF6N2U1QzlPN1lLbEY2R1RTZlMxSzF1Wkd0aE11aW1WWE8zelpHWHdBQXRPRzA0M1M0NFdJaTE0QWFBeStoSlRtaWpkYlVOVkZ6SGZvN0dTeGE4R2dhQ1MvRXlrSnBxWVVlMFR0Z1FOV3NIZU9rZDN3cUJ3NDNWOXJKSkEzRTBoSG9IYlBtOHhRc1p0cnB2T1N6dmsyYTZVS014dWpLQVkwRWlZSkJXQmtQanpLMmNlcEtWTEtCQjhLMXJRTXBDTWRVL2JCL2IvdUJudzlZRnYzaGF0Sm5Gc29rQXhjM0JlUmYzcjlidVJuZnRkc2FpUG5iZEJRdFJjbzg4S0x4MlFwTXR0T0VScmxvd1hKYUw1ZklyNGx0VzRDZjRLeXNRQkZiVHd2VngrbTROUDBBZlpoSjNSQi9KZm9udEY2NXBFQ3lDUEFNN3lRNmR2SVVKSWR1T3JkaFd1RzhiWG80K2RvakhpWjBsYkRJMDZaVVRBQ2NhaUMzYkNZVWtBOWNBQ3ZNR2wvSmNHS2JIUWtUK0Z5SFpFMkNMYnpzWGh1R2hTSjkxcHNrY0J1UWVNUHE5eTQ2QnZaZUZFVHh3MDZIanZMQitFN2VRd3BrZmczSkdheFhTeEQ4Nm9jTW5xVkNjKzdITE9kMFhUSFBxUjVMSkt2WUhEeFAxMHlDR1lZSHpLb2FnNUErMVlRVWVwOGRnVEIzK1lldkdON1hJNzNkZnRqbEE2Y3FKTTBGVTY3QktwMzVyMWV3NjFjOE12c2g0L1lDQnFNbHNBQ0RsRVdBQXd1NDA4MVY5bTJ3N245NzBzL2UxL0JyWDVtNkdsUnFMZ0sycDVvd2UrTTNhVWxOSkZMU2ExWURlRyt3RytWdkdZNzdIM21BMGtLZDVnRlZmaXZZTVRzdUVPeUsxb3kzaEZRT2FkZmpXMmUzYkpCNm9kd1BKcm1KVlNtT0RiNlhSdmNCbnJiQ2JuWlh3M1c3VmtCR0s3TndJNjdRRm90RTFLOUFkSU9MSE5oVjgvelRpakUxOGJQSkh5SGwrOERPU1p2a2IzcVRaK1hCcXRZQkdwdy84Tlo3UDB4a0gyWGsvTDFoM1h3NmpFTk4rMDU3Sk5uUWt4WWc2R0JuUUFZNDNhMmZhK2IxMXhVRjJEWFlBVU5wNTNwTFY5M2RmMXRXZWR0MWhXNER4WTc0Tk9zTU5JSXdmYm5uV2hCV1BCZ1FRZUFQb0ZkWlJtcGp6VFNrT25TbFUxTmdzUDVBQTYxZ3RLOGJITkVsclZwZWwvekJoUm5kcjBoNThBTnBuV1hsLzkvWktYSGpZZUtvVnJ4V3RJUWkxc0JlZ1k2Zzdvb0FPZ1RkZmROT3VOaXo5YWNROWxCMVViVHZMQnpFQWgyQzVYeXZWNTc3YStCV1pEbXNQZGJ0bXhnUG10cUFaN1o4QmoxOVY4bXQxQ0FvZ285c0YycmJtYTZRNVAxNEkwYmp6MDRDY3ZHK3lwdmdCdFg4RkRXVDVnTDQxb0dHUHIvdVlxYnF0Uzc3TmVlZFdPZzdJZlBuMS9xcnhoNE5jOERsUEhJWURwb0hvejNRREtzSnF1dFJnak1lSW5WV3RwcFFOa3RoaW5ubjUrVnc0QlR1UldBdWNyQ0pxdEJOMStVNWhFbTRjQjJBUExONm0zS2dDcUw0cVU3Y0Y0U2lJVVVCem5sZTI2djdyanJWd3B0T3ZJanR1eWZnN3NYamdlREFHdUczaDY3Q2p1T1JpTlFPMFl1c1owMzc3aGpkY1dDS00xTVFzN1JhNEsvY0ZhQ0diZ3FLVEdMVFVZYkZJOVFiRmZraVY3UENKb0NORXIvRkpmTUtLRjVhZGwwSUoyVXRjb0ROTE9tK0thaTV6NmFjRkhYc045YmVieFhqTXRPTUM4Y0w1N2RIdDlXUTN3b1VUc2Nwaldlc0lXMlB2UU9vTDA3Vk1jdHBtanBHMGZBVCtEN1JmV2VVd2lZQVhlaHhLMEZLSEp0Y0xrTm1xZVNxdzl2MUFsRjQ3eVJxdXhraE5ONHhnZWJ3c09laVgrTmZEVXE1VHBldGJQalpqM2VXeWxla3RQNmxGZ3NISHhoTGk5eE8yQlVuL0pyTFBBd3dqK3JvS3FCNXVHUmRtbmhSMGhIM285NFZmL0xhanZuZ0ExdGU1Tm05SmVpSk10L2xJYS9WUS9mYldkVHVNQnZDVjlPV2dNRVF1Yjl0Zys4YlRzc3ZSeGdRdzlPbi9LRnpEZkgwMndqenN0dWtuczVxc1h4Qms4WDc3QVBvTndaNGlnNDFEdjlBZnE0cmlabHRmRUhKSTNEajVpbVpqV0RTZ3haTlBCOGs3ZVV3YjZONWs4M0VDOUo3WUp0YmlUbGMxeExiakVjVFhDb2J5TEhOMm16VjVPdVRPTWxKOVg1ejJHSlFUMjRoQUFXTWtDYkxDRG9BWnRpb0NKbTAyNFFGdmwyTnFESWFGVTRzTWpnY293bVpWOTNVeU5MeFVzRFNqbi9BOWdORWVSejV4L1I4K01qVjRqaFZ3QkUyMjlRbDZISVRQdVFnVG12U2c3VEV1bHVPRWt1b25BRDVZSFAvUXJWNXpoQXZDYkR3K0FUeFo3aTdFd2p3Q2NEQWVlbDVuTmZRT2w3MldOVnZMSG5XMjNqamo1NVFTU0REbU5waUtyS2U2NmdSMGJMbEIrT0VxQmdoNUpKTjZFOU1BNmRhd0xXTXhXRmNnQnNZODNGYStOMXcrWkFiYk5MdVc2Yk5DTEM1OFZiWlFxanFKQjVjSEFnSzJodzFndHlZa3VndjVzWnFrVDhFTU9qMDZTQXlpNEpnTmk5YmdReG5sQWtuQU5CQ0xHMUF2OXVqSUdSRHh1d0xpL3FIengrWTFhUjBQaiswelBsVW4ydzZrUU9vVHB2UERKSnRZMFgxdHl4ZmduY1hDT0V6dGdJc0FLOUgzZnFyUkM3b2hjUi9WK241OGJNYUJRTCtlSUZuWXAyOHJhd3M2QUdvTHE0OFZBb2RmV2xyOUV0TEhTMWg2K0oxRjVnYnZ2NGlEZEREYkFTOXpTSFl5c2s3b0FCQUhyQUFWeGM5ejlSSE5LNE1WeXd0d0dNRVVCMjRmSzNTZnlVaC9YVk42YnpEMng1WEdMMExBQ2x4bjJKSlZhNWhhczByclYzUno2bDMvN2N2RzBITDlieTU1L2ZPYS83OWQ4dnF2SHZQL3pTV3YvLzJiczd5b0lpUTBZRzV2YStLRTBpZjZrSDRMZVRjY24zRklKejhzZyt6MytJL0wvQ3lIY3hCK3RzTXNwZTIrTVBlZ252ZmY0SUJUdTN6OSs5Y05IdjBYTDJ1ZEpPWUZOZDZJbzUxVXVmMW8xN0xNOUF1WFExdWdaSmdpZkNkVzBNTG5Qait3SWh3cGgybzhoSFd3Wk85VEZHMW0xQ1RvaDBRVHVEV3JOc3ZWM20wUEtmYndYTisrS0J6eHJLNFpvR1pWc0RVZUQ3dXd3cHdPdlVHWjRKSExrbmowUmtoczZPYjZiT2I3ckhVR1c1U0JaZGhXZ3pWNzlEc2VheHNVL09JeDNWWnliSXRoYjl1QkhQMFJzRG1mSTVRc3EzN3QrZnF3elJsc2lFTkV4Wko5YXYxNUxJUUFEZk0xVE1vQ2htclA3Q2ZBQW42R21kakU2YlNEMUM4c2FJZkR0RlFDak8wV2pqdEQ3eGpPTjd6THJqSEwvWUp4TlNjZzdRRGdkdnJNNTJ3MTUwN0FDWnBnRk9XSENzT3VvZzJyZU96UDhIODUxWnJSQnVwa21mVm5kYUxmMUNkRE81Rkt5STNKMHUva3RpNFdDNE1KN3Rxd1NDaUNwc2R3ZExGMHlkaTVmdmZPUHB3ellaQkE4UWtJeUM0bDJ5QUNIaUdZcDUxbjlscTNsWDdjRWtNcHhiUXF4Z2Q3VHFPRkpYcXV6MGtmbWRHRUFkejFjTXJIbUR3c0hONlBpdVR1OXA5Q1dNVHh3MlZEN1NQR1pqeXVaUlVHRnlpcDJhdzE4QU1CcDFLQlIxQkV4ZkNiVmlBNDYwTU90VXdhaFZPZkc1emZ4ZzRub3phVzRTNG43U1FMR3V4VWorQXNiUE50UlFxK3JEM3c0eXZjZ29xU3dRYThUY1R4NXo4Vm8zc3NpZFp0WU1PeHBILzl6Zk82RzlYSmZBQnJLT2Q2KzJrNlpZc0ZLamY3QnZDMFZ1aXpNc1FhVllBOGtFYWkxRSt2L3lmYTNXQk9tT1NMVHp5N0NFLzhlRFVUZElvanFNbm04NDRvZ2M1aWJhQkI1eVhzYWY4RlBnWFFCNUp1eHJUZ0NwSzc1THlPamg5YSs4cllvd25LZi9LcDFFZ1dQeWN1RVIxamd4cW5XRXl6Qk9kQ0RXdlljVTdnOVR3aDNSVStMRlYyVE5hRmxDYzI2OHVIcVlJZGRGK0RIWjIrSDhBR2pKWWN1bW1GRFI1OGRoT2lmaFZENHJnWk5JbWRYSmRSSWhNUW9KaU5YSDJ2cERuZXpyNTY0WDRxVjA4akE2YWRXY1crckZTY0ZLZ0REWTVYbTg0OEt0bW8zOWRPSTlkMkxnK3lETDhRbTIyTVUxYjlUMjJ0ZzV6QTNOemxEbVhQMCtBMnNKbVFLR3U4OXJwMHE5QWpPT1pHSmV5N0dNQWdlSkRCTXJHM1JvRFhXYzZGM2ZPa3VrOXgyTnJQbVRsa3JSRlk1bkxTaGZrdExyRGhmMWdpVUt3OXJvNGNhbGhHN004d0NnUVlTaCs2RDIxaC9leGJDZllKWXRjL2N5QVhhQkwvMEU5UzFwQ1ZMc0ZhdFdMT3o1UkR3VmFjVVlmOU9mV2RJZzZ6UVFzQXI3a3JnSVFTeDNWaW5MRllDZHJ2VmNvOWZHM2N1SE1FNnNNWGlnR3RaQVZBZkQ2UXJ6MHM2N1NQYUtqR3I5UXpYVGFyWlhZQk84SnRSc0MyZDJmZzJhMThRMWJ0ZVVnZENXZEo0VkNBYlg4WTJ4a21ycVpOMlBZMFQyUy95Qm03QnVGN0R4NTZONHNrUTg2aVZNU3UyS2pGbi9kb0xMSnhOaU5ucDZNcG41U01jMENRYkpocXNMYnZrTjdxYUtUMWE4MEY5Wm5ZUEpNNVdqVmRtaUhoblo5dk1lUG53bE1iaU1iWmNuMlB5d1FlNzRrdk5uUTUyc24rTzUzUWNWdFlBc2NFYXA0c2NqMnp3Nnh6Y3ppRjB4ak9hdy9SS2RBUDlKNmp5cE5ZNTJVMzFRamxRY1N4VHJFa3kzcHU3MitGNlBQc1dqRDhUcmw3TFNacnR4TjJIcmp0ZGFmakQ4dy9yejJqdFZIZHlISjJobDl1em5jS1JVTGZUNWs5aG5qeDJmdXhiUGlaaGc2YzZ3VmQvL25YZWlxYkhjVmg0ZWRuL3dYNm9iSUgrK2JMWTVQeGQ0dnBIWGgxaGlnYUhyVmMwMExDbmk5WEptRUxNL3R1YkxMYk8zUjNqSThpblo2K2tuT3k3dXhrcEZoNEcyQUpCaW80ZCtwR3E4Nk9MOW1SUGRZMkNaY1BVQXBzeHJJajdOREtZRWtHUGhkYmJWSHJOSXI5dnBGcnB2WWFjc0NsWUFaUlpCemVaWWtRSnBkZnh0anc2Z2dYcERTYmNJeEFHa0dXeVFNY0UwYldHVWRMaWV0Mkx5Sy9xWnJEUi9pdkh0OWpkNFdEZVZ2Q3NoeXlkaGVuRmpxV1l0c0Q4Q0MyR2FZNzdhZVAwYkdNRmlmYUFZeHd3SG4yOVNURnlqSTJRelN2UmFaV3RGblpDV000Q1ZVYkh4elhOL01OSTMyek5YeHMxVDR6Ry9qQmJ1bm1sYzR3UDd1VExhRnc3aGxMNTU3ajNuU01mQXREWWVVc2l6OC95NTk1OU9lTVQwVFJxMmxBVEVtNEZvNm5JMXloTzIvcVBVbUo5U3dzbXoyR1RrZUM3VXdzTnM0aldyeWFMVWFTejhDRjdER2NKclhMZDdHcEFkRWNmQmljQlNiQWU3Q3I5Mm1CZ0pEZ3pzemtETXpZc2xyRE1rellDaUp1bEd3WVlhaldLRjdSOFpOdlNoTllaREwvTnhjeXNxbjZLQTBscEZ1ZG5mWjhuZ0dnYjNST1N2dWdheGpqTUhyQUZrSkY0V3UzMC92TWlnS2dINmpxWjBzTTJtd3I4R09zekM3MVlWTDJzZllyNUk3VzI1WGk0Rm9NZkovOXNvL0hvVzdRK2ZLY1dBSzJIbmdGRkhvNmNtckxTM1JpREFidlVEVTg4SXZCc3NEVEVHZVZRdS8yWHY5KzE2YzVqTEtPdi9jOGZZYm1ZL3lYai83NnN2NzY4SHV0OTlkVy8xOSsyb28ybTJZY3MyRTIwWG04dU05OU85UmdSSXhMZXh6WFluRUZGZzhuc2o0aHB5WGIrMUVOWUFzWmZ5QkJmTWRVdXZsak9rdXRtalVCeWlLbXhjRmZyOVdhVmVMMzNkVnFKZENRUFBxSGplS2ZSTUZwZEJIQ0c3ZGF6YWhzTXFBRU5FaC9taW02NGNocEVnb2R4dVUxaDhvNHRndGJheGNNTG1WYnhCckFSc3ZlZFdjVW1WZDAxSWR3ekVsc2dGZm5XWHd2YkpnMVNoWnhPbm9EVmNkdk81bkYydVFIWTVmNEY1UTRkSWUxMmd6bkZJVzdDZzJSSFQ2emJLaTNjdmU3T202a3h0amRWRXdGTmxhaHRvUnhWa3lpcWZmZEg1Tmh3QlV3eTBRSFR2QjQyQzJCcDhyMloyS1BCdHVHR1J5T3RJTHl4OU15UEgvVk0vdXpFRktKRjlDZU52UDNoeS90TU1nc084c2F1cFBhL296aytYM2l6L2Vmdnk3WC8zNDVuRUw5MTd2NTdiL3VkZjF1OXU4WCszT3pZWnY3KzRBNXdWbzRHSUM1ZnRZSmV1dTBBSm5RUWNEYm50ZWZCV25sdjdqZC8rM0xPWFhwTW1nSkttR2xMVEhGQm1sZklVYWZVb1ZYaGhYQ1g5N3o5ZGFIeGN0RGFobFAvTkZSRFRndDAvU25nK1kzWFhTViswOWxKazl3aXNrUTAxT3lqSE0zRHY0Q2NFYzZVVDRINTVuM2h1RmFIeEZRMnBGTzJXaHp1RkpDbVVCM1RsdnFqckxVNFJ6QVA3czVxWk1NZ1AwKy9UUGJacmV2ZFJ3MzhEcGV1Nlh0dUJIczJENnIwK2RaZk50Sy96enM3MUZ0MVhQU2I5UmxPaThRZC9SYVpmZllmRjJ1VXV1WVozelV2RSt6VE5vQ01qMDJTL0hzcms1N3lBTm9CUHk1bmFXS0FZZEFSTjFXL2NmY0U1RC9mejRKcE5zaEtkRVorZEJ1YTN1TElkb2MwWFZuWUJRMEpGbjNaSjNLWjA5NXU4Qkx2cXdlSXI0aUhpOW9tOG5FYnlaVEozek1OaVY4VzBOZzdFWlhkRWFNelp6M3dOb0tqSzVvYk1GSm1OYitQK0FTcDVjMHAwM01GSVVXay9mb2o2MjExWEc0SVFHUU1USHhWR25nMjRlOWZXVmNqOFBFQnRwbEZCaW9hT1U4Zmo5aGtuTUZhNHJOeStoeWhkMTJjWnpTRkJra0VCN290STZZdWcyMGw2MVYzU1lDUG4xTTFZMG5ldXhtNDRraXZpZndvbkQxM2NOcnRQZ2RDYnJqcXQ0T2NWYjZNRXRmdll6em5xNnp4eXBIVUtqMW5lY2dDZXhLa0gvYjBkUUJHZFpKWWUxNFRJK1hlREIzRDg0WFI4NFNMVlRFZEFBT3lFamx4NElEY2Ezc2M5ekZzbitUSmNNM2RTSENWZ2Ewejh1U1FHN3NTSVIvekNmSEhUbWtDY0M1Q2p6ZXdZZmdGNFVrR3ZBM2JlSElqZkE2d2hoOFVSMXVCcjIwUUxJMWdLVXpYKzFydHUzTStsN0FvNTFyeHIyWDRSQ2JvMWFSa2JYeHE2Und0eDNmaEMxWmpyYnNOdDA2bXJUWkpoMHV4eCtFaEg4RklJSUNiOGU2R01rNEpZb3hPeGtITUhVYjRyUnJhY3ZHckJoNlBXakRnbjBUREVqOGhZWVg2Yk1KV3JNWUMzTDE4R0pwREljQlliZC9NNkRPZkkvYlFWcE9ZZ05RU0hZVjd3ZVozMjFkZGErVFJuZWtLcHdqTy9kMU9FWWt2bzREZGhqK0djRTBucnV5dUdjMkZvRFNzckU3OVpxbFdPV2N3dkR1bk9ZNE15dXpnL0dCYXdyaTQ5em1NNGhrbEYvaG5vYlVtSVVzSHdQZ3pDelRTaGlDQmRHLzBFaFFITlRWdVRaQ25MYVBWZXY2dVhRN1p2Nk1lVisyemZJU29oZHJZVnQzSUlLbGFyQktRT2pGN2pkc2UvSkpIL2t4OStuamNkemN0b0tGMVRlU2J3R1Vsc2lBRkFyOG1DT2Jwb1k3dEFjb0VDNlA0bkE2aHVVTXAxUlNaQXUxL1pWTXZHY3k3ZW5yZDlhVk9lbmwrUS9RUWg3dHBIczYzaFk1WWRmczNPZS9aYk1pVW1TZ1dDNEQvTXZSbWppSFg2RDMzNGtyNlZKTVhyWlNMRmdLMWlzaXM3a0RqNDA3T2t3aE9CaXVRSHZDeWVNNW9VTHNhbkhhWWd1ZEZ2QnQzUUo3S2tWdlR0aVMrRmwyczY1ZG0wMDF3UmpQNUhtZHZNdWwzcE1iZzBBNTNXN0FPRHFJWTlvTEVneldMSHZjc2pLNk16QUE4Ym84cldHaVhzVmhQZ2tFYmwwd0dJR2ZldTM5QSt0SDUyMWlEcjVwODJNcGdoRWJwTzFTYmJhUGFnSXVQcEhuTktYY25QLytBdmRaVVpPUTJRNTlGSGFoM0V1MzdieVFWTGNRMEs0SkdOeGZZNnNReVBjNHhYOGJYU1U3TmdCNUI4ZFEyQnpDbDE5WDNjd29QdEVDQjE4K1FVMjNTWmIzUWw4dytzV3VKMjluSGF3VG1DcytvVGtZMzk2WmFuK2VrUmhkcTEzOWF4Z3lmUzN5UDJWTWQ3b3YwVlpsMjUyNlpnc05FcThZdjZmZGFUazN4dk9Gd3EvQkhxWUU3Ri9SbWhTbk85OUdmZmNKbjF4bzl3ZU4rRHl5Qld6czNNdHpwc2lYbm1pUnFaMGsyUmR5dE42L0pJTnQ0UG5uOUtyckgrT3JUS0RDR1ROY1o3RzVEaWMwL0dYenRPYzFGQ3YxK002MkpnWlB3UVo4VHRSeElqUU9NYldyQkFzNllNUGZWL0swWVE3U1o5UTFzejBRNHJVMTNwYk9Jay93WFNFUUsycHJFdHVLeW1wRTBhekxtY2VtaW02TXFIUFFVU3hXODhYcllhdTFOZEdPdTU0ek1vQjJzOEFzVnJIYkdHeGcvL2hJNHdNMlgvekViZ1dLZHVielduSUwvd3c0clhMR0w3L0FzQWFZRlpwaG84YXRNTllEWlhHMlJsRVFQbEJMdXh5MVpXOHlaSHBiWFZ4US9TQmN5cGEvcy8rc2lpMHNFK1Z6cUluaXNrOVN6V0J4YzJnNE9qNDMwSzh0eStudEdKeVc3ejdPdUxUekZsS0NKUGRqZHJHWThqMEVGa3A0VzhnVzdTMHZkalZhN3ZhT0s1WnNsNS9sbHVaYkxWcEhzT3B2c3VGdGRHSGdZdkNkR3ZjWm5aZFRuSXlRNjNJOVR3Sk5ZQWluL1pPNk94bGQwVU5VTVIwYTR1a1ZSdHFHRXdhaHFvZ2J6Z1FENUtEdzRXd3g0SktqVkR3bTVESzAvMWl0Q1RNMWh1ZjhWNHdHckFUcVlEN0U2Z04rMnFrZ0huNnc5bTVOUDJER0huVlBJempMT1Y5R2N3VmF4YzRzWHVqTVZpeUNZWFNXbDEvT202MU9sd3ptTVQzSVkySnRicTRNamlwWWFSczdXN3lTSmN3V2UzZ1NUN2RkeHE2Wnp3SkI1Nzg3MkRlbHoyS1U3cUJvVzVSOXdBWVE4WkFKamJyenZMN0w3cDdITWo5ci9lMVl6YzV0QmtMd0FqZHd4RzVlNEtUZGNmZm5EQlI3MjdOczEra2tnS2xsRnRTb0g1TG9kSGVZUFU0ME9lcjZYbzdkNG9HcUk1UU02emxWeGxaT0FGV1Foajl2cWc2akFzS01BWjVCQ0s4Y3ExV2p4OHJaTGZJdHAvS2lBT09NZER6YW5mcDYwalRnbUFxUW96alV5cWJGS0RjbzQ0VGpyN2dkTlpSQWpzYWg4Q0dhTlJ2MzdQVzMwdmFjS3VBRXlSSzVQZThlSGd2UERYTy80YlI0bm5rV0YwaU1hK05ieTRCMHoxMnRyTm0ybnpza0paaitCM0k1dTk2aFA5aU1kaVl1QThHclUwT0FBVHJxV2ZCcjRjbkcrZmM2UlgrYWZGYmx6QUZ3aERsNjVVU284Zm9zemFsYzFlbkhqNTJjRS92blJ2Q0NrSnJQU2FMZENiMjJ3L01Hd2VnaDdCZFcvc3lGRllxWkpXdmwxcnc2dE43REVTQWFxS2I5cEkrVHR1TzRUa2xqUGlOdGVYVUhFUlM3a3M0RzhNcjl6SVhVVE85VHkrR0V0MkszK1BLNEJZQklldkZ2MElQTGVwZDU2dGlzcGtBRnN4bDJHM2lUNGNWMHlwMUJ5S2MxcmhlYkdCOXIyRUcraUFZd3J0NW5jUDNGYXRnNmNzVFplcTBqMEZiTW1pZHF2L1RKZzVmL2paMCtFWXBkQnliQzNwdS82Y0FGTk1oT3JuQW9POThZOVVGcDU2K3QrKzNoc3gzODN5NTUzTVcvL0JUN2Z2MVRxSjczRGhXYzhadGZZckZyLy9kTDVwOVgvdHZQOFBRT3g1N3JPbTJUKzBhZHNSdFNhdERGdWoxbUFTY2QyK256WDh0SjFyRmdYdS84cGpQTzRIWkduYk9qMmpodmVQMXpYWDd2S0VQOVBlLy83UG11ZjMzQWZ6eGZCQXkxVlJ5bSs4QVQrMnRhYmp2SXltcmhRMXl6aFdUM2hIZ0hlKzh2Si9hbDkwK2IxOUVXREdob1dIL2tlK1V6Z2p3QWRvS1JHbmI5SElqenJDK2ZTanFMYUNOUTlKa1hacVpGQi9zdW85Vm5Ndmo0NEVleHZ0bm9mTFVrc1owT2lnZU54Rm5EUkR5MkIzNjZmS0w2RnVOL09NaHpSb1V6MVZ5YU5OZzdRTy9lVHA1ajllMVhyTGFpbndwcGlFVURuajhOV2pyMGZjMTRDY3YzWGF2Vlg1djA5MXRJQ2E3elVESXdkd3RPUUFnVGtRZC9ZV3FEWFp2WWs5Y1JCbVU3Ui9nSTZjMGFtV3Q1REV6djRUU3p3Q3Fpc3RZYkJ0Ti9Ob0VOY1VYVnZ3V25yR0VmdjM0N0ZOUVJjSjQwOGE1d2RZODYrdXhmOEFYT21GdkxWbmZ3K0ozdDZ6Nk92SE0yY1hWMkpaWUVZTHVhQ25lT0g5aW5GaVZmbHFQYVRIeE9mTE4xSU5qQ2J3SUVQYmYwZnZ4NjUrQjJtQ3Nza29YUnhlcFE0KzFHdzlLUksvdjd2OXVoSXlmYnlzOVpCV2pmb3FNWnJDMndXVDJmVXlhSDFYVk8vLzh6YXVXY0paWnhwZTB0OGJJWXhrazUzUW01TmlUb3pWNGpNN2dBOGU5WDg2L3lvUUFxTXErRGV3TDBKUHNFdUFOYytuR3c5OFVLZUpsdDdRRTNQNE94c3pkK2s0ZXN4TjRobUNGM1l6cmRvc2o4Y1p2eFdGenVYSWJqeDVEMHF6dkdjejhuaUtIdnJUYm1aTFBpYk13Wk1tcXpUZ2Rhb25RQlJ1bm8zZjQ2WGRKdW1uRG5DY1Z0VHF0K3pWREpIZU1haGp5QmRmYW1PRWpRR0M4S2dWbSsyN2JjYWxxQ09VNWVFRGZhOFJQR3doY28rS3IxeklhWVFxVG1DSU8yeHVOSktmSUttNVF4SXUxZEh0amxxVkZHMEl5L0EvS2NNeFZDZGd5RXNSR1dZWTFpQXl0SzQ4UUE1NDJiQzdZTFlOdEo2SW1ZemRQV0tqaW1DMTBkaXJlc0szRGUza25Jd1duWm1OZFl6YXRCeHNGQkdCMTlaUWUzalh6T0ZzV0ZoWFBnbUFIV1J6RGtsT3BxLzQ1VEJWN0lTZ2NlNHpsWE94cnlaL1N1cDJ2QWR4T0FFTjRJYnVGQy9PY2NEUWRjUEwybWF1TnBIcFpRWVFYcVBuWCtzTmd6NldlOURqVEJ2TDRPRUpsUS9XV0I5N1pIUERudTFRbW1BOUtQNlFBQ2R0WURhY0pwclFlcGdFSmc5QUtJSlRzWFpNOEhON2xnSlU5ZTZEWTR5NVkrYkxUSFVEUlBXektHSEhqR3gzSnBRZloyd0Jpa0pqdEVibjNPemJiSDdBN2I0SlBSRmRUVzdybGx6WnFKdzVGc3REdmI5OERaUEJPdzVXankzOU5WMkRVNzNMZW54bGh3NGlHc096bnpGdkF5RUIzbnpOZ0RjM3VjWEMvL01ndmJ3cVl5L3ZUVHJyK1pzNXovL3ExLy9jNFptbW5hMElIWXcrRjRTOVNRem5sc0ZqSlZxRGtneTU0OUozNGoxL0VjMVZOdFFSdW5yZ1loVHNueDBKYmNJQWpiM3JMVkZwN2Y4ZXpEYWNUMWdqMEQ4bkowSU1ZcGJiSkw1VDBaaVBramR1Q2svKzdyRzNRS0NhczlOb2Nwc0pvNVFKNnFjMlphc01FNnozTjQwV3RJTldHN25qNGQ2M3BtVE5zMGRRcElteFgvQUc4ZStZa1hGc3l3OFRZMWZsc045ajk4cG1LZmZCd0RtcldPcTBxMVNxOGZFSmVlRnhLQVpRNnZoWXlmQjl2QkFaYjcxb0tWQWw4emNPdEpUWFo1UEU0WnhvUlg2eUtBMG0xRDBXMHlkNmJTaVNMWFgyVFlzMjRNVW5pNG5tTWg0NWxZZ3BOMHJ2Q0p1K1Z3cllWN21WYm9POW9SOFppdjRZUHFxQmN3Tjl0NG5qLy82YS8vRFFhM21lc2M5MlVtNk1oTHZJNjRIR0ZoMWY0cFNQSGZ2aTU5M2JxcWZCRC9hMEdEVll0V21zQUVlcnlLM1NnQTh3cTczc1hJMkZxZUJ3QnlIQTcvZENZemJNMDVkbllreE5xQ25pT1krUmVkUDVLaENJVzROZHJzV0xJWWY4azFrM05qMlYvRGljTW12QS9XMEkyS25LbXJ3VnJuNHJGY0ZsSTRJZVdrMWEvL05xL3VtWGIyWWV1NFVZY3prQW9HNGxRVXlQUDBFS1VCV2hTTTQ4UHlKZkMrblV4Z0JiZlJRS2VncmVuOFM2T1pnODEzcUxlVkx2czljNnN0MDlKYWFFL0RtOUY5UXdZWE1LTURUQ1FRY0xKdUlIS2hoUG11VGxWL25DTnVCMkg5bkwvRXowaEwwam5BemtIb0EvNTlnNGJnSW13aE8zWG5BdXBvNW4wL1IxNkJOWndVTmswR2RTbmU2N3dMUkpBMTNBWnJzRWlHcnozaVlJQXNjNGNjODNPbUwvczlTbUczcG1jdW5CcG0yTFZJQmF2bHFaaUlQSTZTSGZIY1NLZytUc3ltclZHSHVZam53b0FCY1l6ZExOU2dUVXc4cmcvbytTNEw4WjdIdHVuaTNOeHNPKzNub0JnYjd5d1pibmZCVEJlanAvQitUS2FuQVZUcmhMTjFFL0djM2dPZ3ZIZkZjSDlHSEVCaVdGV0xXSVlENDdkRE1MbjE2N2xOc0U3ZUJGMnp2QitIZXRjS0JuRzBlUDg4eEk3bk5HY1RuMmRZWi9mbnlDdVB3b0hTL3M3SWFyZ293K1hoSEp5RXE3SC8rM01NdHVld05tZTA0QzdSWUtSb2ZSVWJ3U1dkVStRWXpISnlMYTloeUF6QkJlMTRFa091bDNQSFc3V1h3bmx0ck84SHRrYWVuWWtsbFB0ekdpT2dFUTd4MDd4UExPM1FobmVkempsWTUwVDdiNFBtT3g2bGdmLzliMzdVb0hZOThZVHFKSlhpYVdmQlRuZFcxTUM0VSs2c25KYm1lOUFkZ3Y3OEFOV050Sm5nRzhsTUNWemRtd0h0SEFFenpsR1JxNkRZb0RHbkREZjcweE13cVlLUW5EWDdIQ0x0eU5LN2ZkWFRPejA1OWN4M1FmcnJjRHlEZHJMQUxJRDdEbEQ1S3J1bXhKeUlpWlRIczE4OFpRL2s3YUc0dytIK3dTRkw4VDdCbHBvZHZnZUtWNTVQZHZCclRxcXpXMHhvNFBTNjRjUkZEMGV0UUtLNlBDUFM4U3hkc3V5cjhrOUFoVlUvejMwYUFUeWYwN3A0YkVudjdUcUpGOUNsZzJhVmllaWg1WkM5UitvdkI3REJBb2RRN0hBby9WUWEyMEpsMVE4bTBIR0pTTjFiQUtOcm56TW5vR0JCL1p1Ty9Cb3ZiQnNEYWsyZFo1M1lsb3ZpUEFHaTFQM0JkZWJWb2pPZXc0YkphNWZwL2pySzQwUUtYTXp6TEQzZEVna0oydTNhVC9ZemRyUGxZR2d3RkovSmY1MTNXcitUKzIrWGRZSDNPZHJIQks1UlRNdTFxb25pWUR0TFlWMkFOcERJSTJKL0JBeGt6RlliY3dkbDJpQ1lFY2hUc1c4OThmQW93SGxLWmw2bkhqaFFFMlZ6aXA1OXlSQ2RmV3V0djJqRjdqNk5uTk9CZFpDdmpvWHN2NGtoeTlFUDZWK1Z3b2cvTUJiejI2b0htb0phV2NFRG5XMTVsWDBYNXp4N0NvTVRiMDZ4Mll1dUJ5VVZNMncweFZOdVlyQUZyVnJwNDZrdGtBZnJHZi8yaWtlSGpnWmQ5emxDcHRXRDZJc1RLb0taaXZ2YnhUa1ljWGhnQVlUVUh1dlg4ZGU1ZUE0Wmh0VVUrdHhXaUdEQjM4dVdCQ2R3Mld0NzZ2L3pMMGJDNHRaUWYyWHAzNS8zenZpUCtEcGtPR0liWXJubFpmMTBIcS9MZzJYUVZDZlFUSDRZeEZxc1Q0Mi9uaFljMWZyZlhmcmtyWUtEMDY4bCtMWnRBUmlNT0ZyZGhqbVl4NDk1Mk5BNTZRNi9GZlJYNW91dHpFUHpEVnhDQVlQdE9pYkFMMzJDZ1NlRGpZNmJEeDRQZ0dMQ2NzN1p3STdBZkR6cEdMVjUwMWgydUtmYndmYnY4YTNnVzZoV0hGYzk3V2FtZE9YeVJWeGN6UzNvZjdjVkVjT2h3Q2ExQzQ3S2s1QTlabU1iZ0JxZVZYc0x1a3l3T0hJWExDbjdpNmJjUHFjdEd0TXNRVXAwVGlscUo2ZDVvMzJtSXg4blY1YUQ1aEgrYUlOem1QUDZwU29GYXNIMHROT2YwMkQ5bHFOM25kRWI0enJUbWMyc3RUT1l6VURmNDRtb3poN3BKeTN6b212ak50MWpxV0p4aXFPbE0veVk4MU1xSy9VQXBSMm1XVytQdXdSSEZEdGNBQmt0Z2ZkZTV5SzNQL05xZVVpWThNblF6TlNkQzJTZStINHdBTHVlU1BHTXU4YmtNYjdaREJlT3VucWVGTXpRTXQxNENtRytDd2RXSCtjQ3ZtVTFzQTk0Mm41YnozNTF2TUE2WTF3ODBleHhMay8rZFZNOGY4N1Z3c0J0VDY0QmRGMVdUTnVRNy9HQXJMT1QvZmM1SE9aOHRCNjNQSm9ub0p3SVRzQzdyNG9yaTU1NitwMVJxeDdNbU9EOVZyRkFRSjBYamJleWlMLzhUUzA5Ly91RkJNZm1hUXBPZFRRRVpxT0RTZnVURVR4RFVDOU1qR2JaZVFmSXlHMEZuUU9tSEhhMFR6cXQ1Tjg1UHRaZEZhZXMyMEg0bi9wLzZVS2RvL0NkdlAzZks4M2ZadkFXUkhMYUJUM2w3VTM0eFZvZFRGQTgzdkp6T1BuNzRnKzNaL253bzlwS2VJaGQzazZVQ3c1OXkwaVEyNDM4VktNcjAyTlZzSDhuVHZTZTA3V2hDajFZRGNvbnJuaHFUWkRrVTNuVG5aNTRzeUxvd0x6UElRT2oyVzZKRUU4bktOcDhiM0d5SWJieU9Ea1poZ0RvU0pjTkx0YVBXVG0yaHZQaGtzZmtnYUVmaDhNSEo1YS9uZ3I2Mmd6ZG5PMnBMM0w2cVJXWW5yV0J2RUhYMzlmanc4VHhqL044K1Jtbk8rQ0lkYVpXN0s3b3NNOXUvUTRPK3daMk8zcjhPY1Z5ZUFCMmFEcE00RG9oRkFDNStHVTYyZ0ZnNWJBZ2c5UFJVOEtEeHhFNS9NekRUNnl0aE94Nzh0M3lhRGxJaEFLUzhQMC8wb0tjTjFOaWdHWkQxMkU2cmNhSjJxK05EaW44OHRIMmJpZlU4UFdjS1N1dGNlWEpRdWRRN3N0Y2RRd1oxbStlZHppdVl0M0NRanZSRGV1Yks1SXh6eE9UdzMyV09UQWxveDhrMGV1SUtET28xck1Ta1dYZFRJRkkyS2xSREpuK0NpdzFUTTZlM3RGRGZLM3g3UmFFYnVNTDJHSGtkVHYwc1RuWjY4OWswN25QSVhNZTBwREZhR3hyR3lmVmhLa2YyOWxtRW1qUFMweW1mOHpqLzg0N0F1cjlacks4QzFPQmVTMmUrUHhyZ2JRbXBKNGhua1hHNlFHTjFWbmlGaVpoNHExbWZteDF4S2ZiakhRNldLWm52enpid1ZPNGpUZWVmQjJ2M2U5d3N1YU9uclJvekJTVnc1ejVUQTdBaHZyMWc5YnZEeVhEdFhtMldKYVlwdGtTQW96bU90SGZFNmxONFFHbHpwRkdOcFFBOHl3TEhSNjEzaDJpM0o1cXM0SDlXTTZybFdBODV0M1J5eGgyUUdNTW5qMm1EeDNRVUIyY1d5eWVsdVp0TEhnemNlRXVPNURXSkNPc3RsMW53aXcyMi9PL3krZTVndmFOVEpkbHRHTTVrY1BuOUkwNkNPSjJCb09EWWhUTlpGdnJPUXNsTFk5eWFpZjV4MjRhWGJIeHFXbmVUdnJPWkp3elJ0WFk3V25BVmt4Z0V1SDEvdGpkalZMakE2dERGSk1CYnE5L2gyTWhEcEhTWEVIZWx0bjltTTVSV3g3QXhMN1pHOHU3MnJpaHF6WWN1YkgybDlVZXJ6bnpjelM5REdlbk03YXBXZk53Q2xkVzV6WGY5M1I4WTVGd21kbkdHNk9BbnZzVHo3SGZGK1ROZ2pWTFM1cjhJdU81N3p3OGRDSmo2UlpiWUNWRkVoMDYrUTAzalgzVElYZ3YrWkJkcDlhd3Z4N2VpZzJ3RU1hS0pydzZUMlgwZEZwMyttWHJZVDh1Q01IQ3VaZmxvUjNZeDlJTlpUM3VnTW5UeTAxWVo5Nzk0TW51NVpFWUNJQnpSb1NrRm0rSm9MZkYzR2RtMWhsbzdSQ3d1czhCMzFhN2xQWmRBUy9aN00wS1R0d2Q5em5zT1ZuVHREekJRalY5ekN1YkVuUzRQUGFlYjJlSHdsYjcxN09uRmZlK0w5dWpIVCtGM21WUDMrck9CdkRjUC90WHduTU9WUExRR0E5eHFpYmcyRi9KWnZmSWVnK3R3YXpwZjY1ekxDckk1ZnIvQXBZVHFBOGFKZXJZQUFBQmcybERRMUJKUTBNZ2NISnZabWxzWlFBQWVKeDlrVDFJdzBBY3hWOVRwYUlWQlR1SU9HU29UaFpFUlJ5MUNrV29FR3FGVmgxTUx2MkNKZzFKaW91ajRGcHc4R094NnVEaXJLdURxeUFJZm9BNE9Ub3B1a2lKLzBzS0xXSThPTzdIdTN1UHUzZUFVQzh6emVvWUJ6VGRObE9KdUpqSnJvcWhWNFFnb0I4OUNNak1NdVlrS1FuZjhYV1BBRi92WWp6TC85eWZvMWZOV1F3SWlNU3p6REJ0NGczaTZVM2I0THhQSEdGRldTVStKeDR6NllMRWoxeFhQSDdqWEhCWjRKa1JNNTJhSjQ0UWk0VTJWdHFZRlUyTmVJbzRxbW82NVFzWmoxWE9XNXkxY3BVMTc4bGZHTTdwSzh0Y3B6bU1CQmF4QkFraUZGUlJRaGsyWXJUcXBGaEkwWDdjeHovaytpVnlLZVFxZ1pGakFSVm9rRjAvK0IvODd0YktUMDU0U2VFNDBQbmlPQjhqUUdnWGFOUWM1L3ZZY1JvblFQQVp1TkpiL2tvZG1Qa2t2ZGJTb2tkQTN6WndjZDNTbEQzZ2NnY1lmREprVTNhbElFMGhud2ZleitpYnNzREFMZEM5NXZYVzNNZnBBNUNtcnBJM3dNRWhNRnFnN0hXZmQzZTE5L2J2bVdaL1A4YTdjbUx3MFh4dkFBQUFCbUpMUjBRQS93RC9BUCtndmFlVEFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFBQjNSSlRVVUg1QWNDRUNRU1IxL1VNUUFBSUFCSlJFRlVlTnJzWFdkNEZGWGJ2cy9NMW5UU0V3SkpxRUtvU3ErQ1NGRXNLS0orb29DZ2lJclN1d2d2dlNnZFFTa1dSSDFGUklvRkMvS0NnQ0NDUWlDMGtKQzJ1OGx1eXZhZGNyNGZPek5zR29ZU2l1eHpYWE50c2p1N00zUG1uSHVlZWorRVVvcTdWZjc4ODArTUdERUNmLy85TjhMRHc5R3paMC9FeHNiaXE2Kyt3dG16WndFQUd6ZHV4T3paczVHYm00dEhIMzBVTE1zaUpDUUVhOWFzQVFEczNic1hJMGVPeE9uVHA1R1ltSWhHalJyaHQ5OSt3OWl4WTJHejJiQjU4MllVRmhiaTBVY2ZoZHZ0aHNQaHdOR2pSMkV5bVFBQW9hR2hTRTVPaGlpSzRIa2VnaUFvcjRJZ1FCUkYzNytKS0lydzNTaWw4aXVobEVMZUFKQ3lyd0JBS1NYUzVTdXZaZDRqNTg2ZGk0bUlpSWpUYXJVeExNdkdNQXdUeFRCTUJDRWtIRUFOQUNHRWtCQUFnUUFDQU9nQmFLU05CY0JJdnljQ0VBQjRwTTBKd0FIQVRpa3RBVkJDS1MyaWxGb29wV1pCRUFvNGpqTzZYQzVUWGw1ZVh2UG16VTNTNzFDZnJkei9oSkN5bjhudkFRQWxoSlI3OWRrb3d6QWdoSUJobUxJYlpWa1dMTXVDWVJqSWY2dFVLdVZWM3RScU5kUnFOVFFhRFRRYURiUmFMYlJhTGZSNlBmUjZQUUlEQXhFVUZJVGc0R0NFaFlXaFJvMGFpSXlNUkhSME5PTGo0M0g0OEdIVXJYOFAvSEpqaE56TndIWTk0dkY0a0p1YkM0UEJnSUtDQWxnc0ZoUVZGYUdrcEFRMm13MTJ1eDBPaHdNdWx3c3Vsd3R1dHhzZWp3Y2Vqd2NjeDRIak9QQThYMnFUQWN4M0UwV1J5QUJYQnN4S0FabjhmeGtBS3dWWXZ2OXYyN2F0Z1Y2dnI4ZXliRjJHWWVvQVNDS0VKQUpJQktDN1RZYlpCZUFTcFRTVFVwb2hpdUpGanVQU3JWYnJoUUVEQnB5WHdjMEgyQ29EdkhJQVNBaWgwbmhSRUhKNVlBZ3BCWHkrSU9jTGVtWEJ6aGYwZk1GT3A5ZERwOVVpTkRRVU1URXhDc0NGaElRZ0xDd000ZUhoaUl5TVJFWkdCdHEyN3dTMVd1MWZYSDVndTNZWk9YSWtWcTVjZVZ1ZFUzUjB0RmZOcVFETVpLMU1CamI1M3NtYW1pOTQrZjYvYi8vQjZKalkyS1pxdGJvcHd6QXBoSkFVQUkwQWFPL3dXK2dHY0ZvVXhWT0NJSnh5dVp5cDZSZlNVeC9wMjZkQTBoUjlRVTBzQTRDZ2xDci9YMEdqbzRSaHdCQUdERVBBTURLWU1aUmgyQXBCalZXeFVLblVVS3RVVUtuVjBLalZFaGdTcURVYTFFcElRRUJBQUFJREF4RWNISXlRa0JEVXFGRURPVGs1YU5xc0pRUkJRRXhNakIrWi9NQjI4OFJvTkNJM054Y21rd2tGQlFVb0xDeEVjWEV4ckZZcmJEWWJIQTRIbkU2bm9xV1YxZEQrUVVzanN0bFpCdEI4TmJOUzJsaFpVSHU0N3lQczRuZVd0TmJwZEswWWhybVBFSEl2Z0FaMzJXMDZKNHJpbjdrNVdjYzBHdldmWThlTStYUHYzcjJpRDlpSmxRQ2VaTVlTU2dnb1FFQklaU0RIZ0dFWnNBd0RobUZwS1lCVHNWQ3hsN1UybFd5aXF0VVFSUkhCd1VHSWlJaUFYcTlIUUVDQVlwNGFqVWJVYjNBUGFrZ2FYR3hNTENLam92eUx6ZzlzMVNmRnhjWEl5Y21Cd1dCQWZuNStoV2FuMCttRTArbUUyKzFXekU2TzQrRHhlTUR6ZkNsUTgvR2pFVjgvV2dXYUdhbkFYNlpvWm1QSGptVWZlK3p4VHVHUlVlMkRnb0k3RUVMYUF3ankzekhBYnJmQldsS01WdmZkYTZPVUh1SjUvcERWYWozODZxdXZIdnJpaXk5NFFraFpvQk1yTW0zTGFIRzBsRitPVWNBTkxNdUFZYjBncDJKWnNMN2dKZ0Vjd3pCZ2lGY3pMK3QvTTV2TnFGVTdDYUdob1Y0VE5TSUMwZEhSaUl1TFEzQndpUCtHK29IdHhnbkhjY2pLeWlxbHBSVVZGU2xhV2xYOGFHVzFORms3OHcwT3lKcVpiR2I2YUdTK3ZqSkNLV1VzRmt2am9LQ2crMW1XN1FLUXJrZU9IQW1OVDZqdHYxa1ZTRzdPSmJScDNicmNjK3JRNzRmM1JVWEg3aThveU4vZnZtM3JOQW5VS3RMcXhFcEE3cklteHpDVUlUNGFITXVDbGJXNGN0cWJDcUlnSWpJeVFna3c2SFE2NkhRNkZCVVZJUzZ1SmdLREFoRWNISUxRMEZCRmU0dUppVVZ3VUJDeXN6Smh0OXNxdmQ3QXdDQWtKZGRGU0dqb0xSdnprdUppWkZ5OGNNdlBVM1czVFhaS0tRd0dBMHdtRTNoQmdNMXFyWEEvaThVQ2s4bFVTanV6MisyS2R1WUxaUDhBWWhWR05XV0h2MlQvZ1BqNHg4cUNtY1BoNktiUmFIb3dETk1EUUZQZjgzUTZIWDRFcTBTY2pnckhKdFR0Y3ZiVmFyVjlhOVpNd0tYc3ZKTTh6LzlpczlsK2JaclNhRDhoRUh5QmpsSmFUcU9UL0hNQUlaU0lJa1JDd0lnTUJNSlFoaEhBc2d4aEdCWXN6MUtlNWFGU1NSb2NwNElnOExEWnROQm9OSXAyNzNLNVVGSlNBcTFPRDZmTHEvazdITjY1WnJOYVVWSlNnaUpMQVFJREF4RVdGblpGTFRYajRnVTBhM0h2TFJ2emkrbm40WERZLzFHYnJ1N3pWTjF0b0hiczJER0FNQWdNQ2taZ1lCQmlZa3Z2NDNBNGtKT1REYmVIQjhlTDRBUVJna2doVWlpdkZLVDBSbEZtbzZBVUVDbUZLRklpS3BGTDcxYld4S1NVRWlxWm1jUWJybU9jVG1jZmpVYlRoeERTQjBETmE3M21IM2YvZ0kwYjFzTmtNaUkrUGg0ZmIvb001ODZkeGRBaGc1UjlKazJaaG9jZWV2aHV4YjhtS3BXcVNWaFkyQnRaT1hrNWdpRDhZTGZiZjBwcDFPQW55VndWS2dVNVNpa0ZvZDRBS3dVaElrU1JRQkI4QUk1bHdmTXNXQlZQVmJ3S29pakE0WENBNHppbzFXckZYV0czMjZFcExsYUFUblp0T0J4MjJPdzJGSmlNQ0EwTmhjMW1RMlJrSkhRNlhhV2djU3ZsbjBEdFpwM25YUVZzQm9NQklBeWlZK0lxTmwxeWM1R1htd3RUdmdsbXN4bEZoWVdLSDgzaHNNTXBtNTF1Tnp4dU56eWNCNXhIMHRaNEh4OGFMMEFRZU1uY0ZDR0tzc2xKQ2FVaUtBVUJLTGxzY25yLy8rMjNBOTBURTJzL0doOGYzL2Q2d016M2VoYk1uNHVacythZ2RlczJLQ2twQVFEVXExY2ZQLzc4S3dEZ3BhR0RxMjI4TjZ4Zmg4Y2U3NGVJaUloeTU3VnN5VHM0Y2VKdmFEUWE5SGl3RjBhOCtocFlsZ1VBWkdkblk4V3lKVGh4OGdTMFdpMTY5dXlGbDRlUFVENnZEcEdPV2ZQRXlSTXZhclhhRjZkTW5aWXpkTmpMMzludDl1K2FOV20wWHdJNG9ZelpXbGFMazRJUElrU1JnU2dTeWdnQ0JJWUZLekJFWUhtSW9raWRUbWM1WUhNNEhGQ3JOVjVYaGpTLzNHNDNuRTRYSEE0bkNpMEZFdEE1WUxmYkVSRVJnY2pJU0w5YTdnYzJ3R1RLUjJCUWNMbjNiVFlic3JPenZEbHArZm13RkZwUVhDVDcwUzVITzkwdUY5d2VOenh1anhmVU9BNDh4NEZUQUkwSEx3Y0VGRkFUSlRDVEUyaTlJQ2FibWFkT24yMFNFQmpZajJHWXgrMTJXK1A4L0h6RXg4ZmZrT3M5azNZYWtaR1I2Tml4RXdBb0M0RVFBcTFXcS94ZFhmTGh4dlhvM0tWTE9XQ2I4ZlkwTkduU0ZQK1pQUmZGUlVVWU0vcE4xRXlvaVg3OW5vUW9pcGcwWVJ5NmRYOEFzK2JNZzhsb3hMaXhveEFWRlkzK1R3Mm9sdk9zNUpnMW82S2loL1YvYXNDd3JCekQ2YzRkMiszNHoreTUzNzR3OFA5T0FSQWs3VTBneEt1WVg5YmtLS1dVVUVJRVNpa2hvaWhTUWtRSUFrTloxdXVPY0xsY1VLbFVWQTRxcWRWcXVGd3VxTlIyeWFYaDlkTzZQUjdKWEhXaHVLaFEwZVpjTGhjY0RnY2NEZ2Vpb3FLZzErdXY2YnEvMnZJbDNsdTlFai85c2hjQThNckx3MkN4V0VxNVl5Wk5ub0llRC9ZRUFKdytmUXE3ZHU1QTgrWXQ4R0RQWHRXK1hoZk1uNHR2ZCsxVTV1anJJOTlFLzZjR0lEMDlIVXZlWFl5UzRpSUVoNFJpNHFUSnFGWEw2MmMrZU9BM3JGbXordTRDTmw3Z0VSZ1lWRVo3eUVGdVRpNk1SaVBNWm04S2gxZExzMTcycDhuUlRvL2tVL1BJL2pRdnFBazhENTczRFFnSXZta2FwSFJBQU14SEgzK2k2OXlsNjFNc3kvWW5oUFR5ZGFyYVNvcXUrenFQSHorR0dkT25LWnJBNDQ5NnpjeCtUL1RIb01GRHF2UWJodzRld01vVnkyRXc1Q0V4TVFsanhvNUhTcE1teXVkN2Y5MkREUnZXSWQ5a1FreHNMSVlQSDRGMjdUc0FBRWErL2lxeUxtVUNBRWEvK1FaVUtoWUpDYld3Y3ZVYWlLS0lybDI3NGVHK2ZhSFZhaEVkRTROV3JWdmo3Smt6eW1LcUVSNk81d1lPaEVhalFVS3RXdWpZcVRQUzBrNVgyN3lvd2pFYkVVSWF4Y2JHVHJpVW5iZmI2WFJzbnpIOXJSMmZmYmJaQ1lDWE5EY1o3QlNRazMxeGhGQlE2alZUS2FYVTdYYUQ1M2tpQlJVb3ovTnd1OTFnV1JWNE5RK092K3l6NWFSZ2xMV2tSQWxNZVR5ZVVnQVhHUmxab2ZZbWlpSVloaW4zTndEazVlWGgyMTA3UysyLzV2MTF5dDl1bHd0REJyK0FqcDA2QXdCV3IxcUo5UFFMY05qdHFGZXYvdFhaK2syYUtJbnNWenJIc3Y5YnpHYTh0K1lETkU1SktmV2RXZjk1RzZOR2pVSHpGaTJ4YStjT0xGKzJGSXNXdnd1WHk0bUZDK1poNWVxMVlPNG1ZUE1ORkRpZFRwdzVjd1puejU3RnhZdnB5TTdPUWw1ZUh2THpUUXJBRlJjWHd5cVpvamE3SFE2N0EwNkgweWRYelEyMzIwM2NiZy94QmhFODRIbU9TRGxwUkJSRlJoUkZobExLVWtyWjFOTm5tMmRjeXA3ZHJmc0RKMVFxMVFlK29PYXJQVjZ2dEdqUkV0dTI3OEtibzhhZ1pzMEViTnUrQzl1Mjc2b3lxRjA0Zng1dlRadUNFYSs5amwzZjdjWlRBNTdHbU5GdndHUTBBZ0F5TXpNd2U5Wk1USnc0QlR1Ly9RR1BQUElZcGs2ZERJZmtyRit4Y2pXMmJkOEZBRml5YkRtMmJkK0ZsYXU5SldnTXcrQzVnYzhqTEt5RzE5bDhNUjBIZnZzTmJkdTJVN1RLRlN0WFE2ZlRLeFA5K0xGamFOYXNlYlhOaTZzNUppR2taMEJBNE1vRmk5N1pYNzlCZ3lscjMxL1hqRktxaFRmaFdRTkFEVkFWcFZRbDMzZDVIa2h6Z25BY1J6eVNOdVp5dVlqTDVTSXlXRG1kVGpnZFRqanNEdGpzZHRoc05saWx3SlhOWmtOeGNURUtDd3RoTnB0aE1wbVFsNWVIckt3c1hMcDBDVzYzV3puUEkwY09ZK3JraWVBNERoYUxCUzhOSFZKS0cxdTBjRDVHdnZGbXBXUHkzWGZmb2xQbkxvbzJPT3lsbDdING5TV29VN2Z1Vlk5dlNFZ0lOQnBOaFordFgvYytObis2Q1FCdzRzVGZlUE9OMThzOWNNcjZ5Ujk5N0hFMGI5RVNBSERQUFkxZ2xnQXpMeThQWVdFMVVMTm16YnN2S3VvMVNZM0l6c3FXbmlMNUtDeTA0TUtGQzlqOXcvZm8xdTBCdUZ4T09GMnV5NmFucEtWbFptWWdyRVlORUVJZzhEemhlYStHNXZHNElRZ0NZVlVxOEJ4SFpKSE56ZDY5Ky9SWis4SDZaL2Y5Yis5VEgyN2NBSTdqVUxkZVBVeWFQRVZaVExlVDdOeTVIVjN2NzZhWXNMMzdQSVR2dnR1RjNidC93TURuWDBCRVJDUTJiUHdZdFdwNzFmOUhIbjBNUzVlOGc2eXNTMmpZc0dyMWpxa25UMkwwcUpGd3VWeTR2MXQzZE9sNmY0WDdyWGx2RmZRQkFYam80YjQzN2ZxcmNreENTSzJJOEloUlFjSEJvekt6Y3JlV2xCUi8xVFNsMFM4QTRhWElxaUJwYllLdkJnZUE4anhQR1lhUjh4ZXBsTmRJR0lZQkw2Z29ML2dtY1h2OXQwNkhvMVErcEt6UmVSUnoxV3VtUmtsSnZhMWF0Y2F2ZTM3QnpCblRrWk9UalNlZmZBcmhFa2hzLzJZYjZ0YXRoMGFOVXlvMXpiZCs5U1VXTG41WGVhOHlZTHBlZWZiL0JtTDBxRGRnTmhkZzMvLytoMWx6NWlxZm1TMW1USjgyQldhTEdXM2F0TVhvTWVPZzFXclJyOStUeWo1ZmZQNFpldmJ1RFFDSWpZMkR4V0pHZW5yNjNhV3hpYUtJOVBRTE9IUG1qS1NsWFVKZVhoNU1KaFBPcEtXQjUzbGN5cnFrVkJMSWVXcE9oeE5PbHhPVVVuamNIdUp4dTB0cGFGTGFCcUdpeUJCQ0dFb3AwKytKSjFVWExsNGFQRzc4aEIrN2RMMS9xOWxzZm1yRjhtVjRkK2t5ZlBMcFoxQ3IxTmo2MVZlM2JaQWxMcTYwbjY5MjdTUVlESGtBZ0tDZ0lCdzkrZ2VHdnp3VXp6MzdOQWEvTUZBWjM2cEtTcE1tMlAzVEhueng1VmJrNWVWaHcvcDE1ZmI1K0tNUDhmdnZoekIzN255b1ZEZm5HVnpWWTFKS1lTbTBJQ2d3Q0F6RFBCRVdWdVBUUzlsNVc5TE9ubisyZWZNV2VrcXBEcGVKQVh3MU9JWlN5Z2lDd1BBOFQzaWVKeHpIRVo3bjVjQUJjYnZjeE9WeWVWTS9IRTRsVjFJT0h2QThyMVFzaElhR1FxL1h3MlF5SVRjM0YxbFpXVWhQdndCS0tZWVBINEUvai80QnJVYXJnTFRSYU1DTzdkOWcyTENYS3IyMjMvYnZRMUp5SGNUR3hsM1hXUGJ1M1J2OSsvZEhmSHc4T25Ub2dQNzkrNk54NDhhbDlna0tDc0lycjd5S0wvLzdCYnAxNzE3cXdUaCsvRVM4OCs1U2JQcjBjNWpOWm55OWRVdXA3Mjc1OHI4b01CZmdxYWVlQmdEbzlYcE1uaklOOCtmTnZuczB0cUtpSXB3L2Z4NnNTZ3RUdmhFV3N6Yy96V3IxbXBwWldaY1FHeGVIM053Y3hNVEVLRTlDUTE0ZU9JNERJUVNVVXNKeEhnQUVITWNSUWVDQjBqV2FaUE5uWHdRdldqaC84SktseXdjUlFwb2VQSGdBOCtZdkJCVkZ2REZxdEdLQ05iem5IdVRsNWQ2V1l4VVRFd05EWGw2cDkzSnlzdEd5cFRmdmFOLy85dUxUVFo5Z3lkTGxTS2hWQ3dEUXBWUDdpclNhY21EbmRybnczWGZmb2srZmg2RFY2UkFYRjRjZVBSN0UvdjM3eWszYUgzZi9nR1VyVnQyMGhOT3JPZWFSSTRlaFVhdlJvR0ZEMyt2dEdCZ1kySEg3em05ZmRydmRuMzM5OVZmL25UQnViQWtoUkpCOGNiSVdwL2ppQkVHZ2xGSXFpaUk0am9NZ2lKUmxSUWlpUUFSQm9JSktnQ0I0UWM4M0o5SnV0ME9qMFVDbjB5bmxXYkwvN2Z5NTh5aklMOENhTmFzdzhQbEJPSHNtRFF2bXo4V2t5Vk94YzhjT1dHMVd2REw4SllCNHlSeUdESG9lYTlaK0FLMlVRdkxGNTUvaDVWZEdYUGQ0ZnYvOTl3Q0FEaDA2SUNNakE3bTU1ZWY3aFFzWE1IL2VIUHhuMWh4czNMQU90Uk9UOFBERGZTRUlBbHEwdkZjeGhYdjI3SVhEdi8rdWZPL1hQYi9neHg5L3dMdExscGVLbHJkcjN3SHQybmU0T3pTMjdPeHNuRHg1RWxsWldjakt1b1M4M0R5WVRKZURCVWFEQVlJZ0lpZ3dDRVdGaFlvZnJTQS9INElnSUNRa2xHaTFPa0lwaFNBSWhCZDRJZ2c4WVNRQndEejVaUC93aTVuWll6dDE3bklvSmpaMmNkcnBVMDJ6c2k0QkFKS1NraEVWSFkzT25ic29pM3ZIam0vUW84ZUR0eTZRSXBrNkFFQWx5aVFaaEI3dSt3ajI3dDJEdzRkL0I4L3orT1dYbjVGNjhnUjY5dks2Qk0xbU13Z0JHSlpGY1hHUjRpT2hZdWtxbHJqNGVCdzZlQkFjeHlGZm9tblNhTFg0NU9PUDhQbm5tOEZ4SElxS0NyRnYzLy9RckZtenk2YndqdTNZOXZWV0xGMitVakdmcXQzOHJ1SXgzVzQzZmo5MEVQUG56Y0h3VjE1RllHQmdSWURlUktmVHpYbjIyZWUrUDM4aFk4VHE5OVpHU1JxY2xsS3FvWlNxZlRVNHlRL0xlTWtQZU1MeEhQRUdEZHpFN1hZVGw4c05INTljS2UzTmJyZkRLaVh4eXI2M3JLeExPSFRvQU9yVXFZdHUzUi9BdE9rem9ORm9ZYkZZTUhUWVMvajhpeTNZK05FbldMTjJIVFFhRFRaKzlJa0NhcWRQbllMYjQ2bFduNmF2SFAzakNDWk5ub3I3dTNYSHUwdFg0RlRxU1ZCS1VWeGNqQmNHL3ArU29uVDgrREVrSlNjcmYzLzA0VWJNWDdDb3d2RUgvdVhwSHBSU25EMTdGcG1abVFyRkVLdFNvNlM0QkZhYkZRNjdIUTZuRTlrNTJRZ0kwRXZPVjRMaTRtSVFoc0RsY2hPMVdnVVA1NEVvQ2dCQWZPaUJHQURraHg5L0NibDBLWFBZZ2YzN2hqRU1VeGNBT25ic2pJTUhEeUl3TUJDZE8zY3RadzdQbVRNTER6elFvMUlmUjNWTDJRVGRCZlBuWXNIOHVYaXdaeSs4TlgwRzZ0ZHZnTGRuenNKN3ExZkNrSmVIMm9tSldMajRYY1JJMmN4OUhub1lKMCtld05BaEw0QmxWWGpzOFg2b1g3OEJMSVdXVXNjWk0yWWNGaTlhNkgwUzE2Nk5kUnMrZ2thandZS0ZpN0Z5eFRKODhmbG5VS3ZWNkhwL053d2EvQ0lBUUJBRUxGcm9OUU9mZmJwL2FUTngwK2JyTm84cWtxb2VjK1JycjRJUUlERXhDV1BIVFZCOGtGZVF1bHFkYmtiZlJ4NTlvY2VEUFQvK1p0dlhuNDBiTzdwWTF0NGsvNXVpeFhsVFE0aElLQVgxVnFoUVFSUWhpZ0xoZVI0c3kxSzVjcVVpaWl2NVlXVXc1S0ZHalhBMGFOQVFaOCtlZ2NQaHdKaXg0NnFVMnZQNVo1L2lxUnVjVm5QZ3dJRktQeHZ3OURQSzN4RVJFUmcvWVJJQUlEdzhIQzhPRzRiWFh4ME9Tb0hrT25YUTd3bXZiMjMrdkRsd3U5MFk1Uk5vbVByVzIyalFvQ0VLQ3kxNGVkalFmMit0cU5WcXhmbno1M0hwMG1VLzJsOS8vUVdHVmNGdXM4SHVrNXVXbG5iNnN2WkNLZFJxTmRIcGRMQmFyVEx2RnBHSUlBbkRNSVJTeWlRbEpiRjc5dTUvbVdYWmwzLzY2Y2ZHKy8rM0Z6UCtNeHNBa0o2ZWpubHpaeU1vTUJDRFh4eUs1czFiS09lMWJPbTc0RGdPNDhaUHJEZ2llUzROWGJ0MnJmSjE3dDI3MTA5UVdJbFVOcGEzY014T3A1NDQvdEh5NWNzM2YvZmRkeDRKNEJRVEZkN2FWUG1WeXNYMkRNTlFRUkFVL2plVlNrVlpsb1ZhcllaS3BWTElMV1hUTkNtNWpzVDNKcEZaeHNTZ1pzMEVKQ2NubFV0M3V0Rnk4TGYvVlhuZjloMjdWTnQ1L0NzMU5xUFJpQXNYTGlBcnk1dkM0VXNFeWJBcXJ6UFc2WVRMN1lMZGJnZlA4NGlPaVFIUGNYQzZYTVJodDROaFdSQkNpQ0FJY2k2YUV1VThmZWI4TXk4TS9MOFJScU94Ylh4OFBQTEsrQTdxMUtrRHU4Mkdnb0o4TkcxNjJjVGEvT2ttbU0xbXpKZzU2NFpkcTE0ZjRFZXdxeHliV3pobWpXclVDSisvYytmT0owcEtTajRNQ3d2YlFRamhmQUZPMHVLSVY0c0RwVlNnb2xTckovbmpJSW9pVWFsVTFKY1ZSdGJhQUlLaW9pTHdISzhrKzdyZGJyaGRMcmhjVGlRbEpsVXJIVkpBUUdDVnlxb0NBZ0tyZGFEL2RjQ1drWkdCOVBSMFpHZG5LMG1CY3RLdDFXb0Z3N0JLS29mSDQ0SEZiSUZLcFlMYjVTWTh6NE5LQmVyZXRBMkdpQ0pQQkVFZ0FKZzJiZHAyZjJmSjBsY0RBd1A3VHBveUZWTW5UMFNOOEhDb1ZDd0N5aXlXanAwNm82UzRTRWsyTkJvTldQUGVLaVFrMU1LUVFkNG9Jc093MlBqUko5ZDF2U3pMd202M1ZmdVQrRTRUdTgxYWFRa1djNHZHekc2emdsV3BRQWhwRXhvYTJrWVFoTDRtaytuRHVMaTRBNFFRamxMS0UwSmtnQk5CSUlKQ2hDZ3FCSm1pNk0wYWthbXRSRkZVekZNQTBPbjBzSmFVZUZOQ2VEa2xoTHRjeWVCeXcrbHlvWllVOUxuUmtseW4zajhXd2djRUJDSzVUcjFxSGV0L2pTbEtLY1daTTJlUW5wNk9uSndjR0kxR2hXWklydmZNeWNrQllSZ3ZLMGVwc2lpZWVOazRlRi82SUZsTFkwNmtwalVJRGc1K2pSRHl5cTB5bnlvSDhreVlMUmJFeE1iNzBjeFhhemZrSWpJeUFvbTF5MU02WldSbXdteSsrV05tTk9RaUlpSUNTWW1sejRuanVIV3BxYWtmdDJ6WjhnSUFEZ0F2UlZJVkg1ek1IK2ZMQ2VkRGNFbkxtcVV5SlpJY01aVlRROExEd3hFVkZZVzR1RGpVcmwyN1drdnFicVg4S3pRMnVZb2dJeU5EQVRXejJZemk0bUtmSW5ZSDNHNDNSRXA5eTZJSXovUGdCUjZpUWl0RUNRVWxvSlQwZjJvQXUzRFJPeU5abG4wRFFNTE51SmFnNE9DcjJqOHhzVGJ5ODAwd0duSVJGQnh5MTJ0dWRwc1ZOcHNWQXM5WENHb0FrSlNZQ0pQcDVvMlpmRTZpSUpRRE5RQlFxOVhEV3JSbzBjZHV0Ni90M0xueng4ZU9IZlBJQUFkdmtNcTNBRi9oaHBOQmptRVlJdm5mcUV4Ujd0dGNSZ1k0WDlaZXVlZEN3NFlOcjduVzlIYVdPMTVqS3l3c3hObXpaNVU4R1Y4T3RiSmtrSVdGaGZCV0MvRGdLdGZTR0FEazNJV01uaHFOWmhTQUIyN21vblM3bldqV3RPbFZhNnNYTXpKaHNaZ2g4Q0pjcnJ1VG8wMnZEd0REc29pTWlFUmlZcTEvMUVZeU15OGh2NkFBQWk5VTI1anA5UUZnVmFvS05iV0tSQlRGUFNhVGFWMWNYTncrUW9odmdJR1hORGRCQWpSUkRpNndMRXQ5d0l5cTFlcFNKSmErUFJia0JqSnlkNnlrcENRMGFOQUFOV3JVOEFQYmJXTnVHSTJsMGpsazJ1NktHRzdkYmpmc2RqdGNMaGNSS1lVZ0VVRXFXaHFsQktETWthUEhZcU9pb2tjUlFrYmY3T3N4R2ZNUUZ4dUR1TGc0K09YdUZvL0hzK3FYWDM3WjJLZFBINE1VWUpBMU9NRW5jaXFERzVXMU5WbFRVNnZWVkc0QldCYmNmRTNTK1BoNEpDWW1va0dEQnYrcUpqSjNyQ21hbFpXRmMrZk9JVE16VTBubjhHMnVJdE82K0RMZENvSkFQQjZ1SXZZTkJnQno0ZUtsL2lxVmFqU0ErMjdtdFRqc050aXNKUUNvSDlUOEFnRFFhRFN2OWVyVnE0UFpiRjRiRVJIeEhTR0VsY0NOODhsL0kxNGxUeFI5R3Y1UUg2cDVXbG11VzJWMXA5VVZWUEFEV3hYa3dvVUxPSC8rdkFKcWNqcEgyZVlxWmVpN0NjZHhBS2g4MCtVdVQ4eTJiZHRxaFlTRWpNbThlUDdWbTMwdHdjSEJVS2xVaUkrUFEyeHNySDlGKytXeU9VVkl5L0R3OERVZWorZUQzMzc3YlVPM2J0MnlDU0dNYkpwU1NubGNabDRXdlY0SjZoc3BKYjVSMDdMcElUSjl2UysxdmNmalFkMXJZUER3QTl0MVNscGFtcEo0SzNlTktpekZkT3NvQzJyRXB4ZUI0a3VEVkRuZ2RydWZVS3ZWWXdHMDhpOGx2OXlPb2xhclgrcmF0ZXQ5K2ZuNWE2S2lvblpMdmpkR0FqVlplNU5UUWNwcWIrWFNRc3BXTHZoMlRwTUI3cDU3N3V5a2I1S1JrWEZIbktoY0hpVUhDWHo5YVdXMU5KOU9VY1JiV096dERDV25jRkJLeWM4Ly94eVdtSmc0am1HWUNmNmw0NWM3eVBlMmJPdldyZXNuVFpwVUNNRGprK0FyeVA0M3VXcEJTZ254OWIxUjN3b0Z1ZlZmVUZCUU9iK2JIRlM0VTlOQlZJbUppYmY5U1hJY2g5VFVWTVYzVmxHSHFBcTZRdmwyVS9jRk5jWnV0M2ZSYXJYakNTRTkvVXZGTDNlWXZEbCsvUGlVWjU1NVptMVNVdElSQUN3QU9YcEtVSnJKRjZJb2doQWlsMlFSbWYrdHJJYm1XMlR2Y0RoZ3RWcFJWRlNFbEpRVXFOVnF2eWw2bzhYbGNpRTFOVlVwa1pLckNYeGI0aWs5Q1NUQ1BWbFRrMDFQQ2RnWVNpbmo4WGlHc3l3N0VZQS9vOVV2ZDZRd0ROTWpNVEd4Y1VsSnljcVFrSkF2QURDU2VTb25sWmNLTE1nV0QvVUtrYXNYZlByWTRrckY5U2twS1pWMnhicHRUZEhiT2QzRGJyZVhBcld5MVFSbEd4YkwvalRKL0pUclBCbFJGRWx1Ym01OGRIVDBCRUxJcS82bDRaZmIxZDFpTUJoZ05Kb2dDQUpzTnVzL2ZvZm4rWFZIamh4Wk4zbnk1RnhKYzVNckY1VGllcCs4TjBpcElYSVNyNUx6Sm5lbUwxdWxFQjBkalpvMWF5STVPZm0yQUxmZzRCQ3dMSVBvNk9nclpoRGN0aHFiMVdxdEZOUmtobHU1OTZKdmtFQUdOWi9JSjJPMzJ6dHJ0ZHFKaEpBSC9jdkhMN2NycUIwN2Rnd1VSS21HcUdKVzJiRDZEUnZYNmRydGdmYzZ0R3Z6QndBRzNzaXBUSURxcFVYeS9rT2x2cmRlalkxU0wwT1MxQWRYM3VRZXVvSkl3UXNVSEMvQzdSR1FtSnlBb0tCYlg5bGl0OXVRbTJkQWJsNGU3cnYzM2pzSDJJcUxpeFZRazR2WnpXWnpoWnBhSlpGUHhaL21kcnNIcWxTcXlRRHErWmVQWDI1WE1SZ01vQ0RYVkwvS01FejNXclZxSjU1TVRWdlJKT1dlSGFDVW9ZQnYzdzFCb2dzUnZiRUFDc2tDQmJ6cmhDb21xUnhSbGN4VVVhUVFxUlJOcFNJYU5taUk0SkNRV3pwV2dZRkJDQXdNZ3NtWUI0UEJVR0dhMUczRm9QdkREeitnZmZ2MmlJbUpRZGV1WFRGaHdnVHMyYk5IWWVpb0tBTHFWdm9QZUgxcTBzYUlvcWlhUDMvK2xQVDA5TFhmZi8vOWJRTnFQTTlqMUtoUmlJNk9SbWhvS0lZUEg2NTBkL0xMM1NzbVV6NkNncThMTU9xR2hvVXRQbmYrNHZDRzl6UUtBS0NUdW1mSlBSZFlTc0ZTS25mTEVnalBjL0J3bkplcDErV1dlaXg0dTJOWnJWWVVGeFhCWWpIRFpEUWhKeWNIR1Jjdkl1MU1Ha3FLaTIrTE1Rc01Db1pSNnB4V1Z0Z1pNMmJjRmllNWQrOWU5T3paRXlrcEtYamdnUWVRbEpTRW9xSWlIRDU4V0k3c0tJQlcxdnlVdFRRdnRiTEFwS1NrMVByODg4L25kdTNhZGN5QUFRT1lrSkFRZE9uUzViYTR6b2tUSjJMYnRtMzQ5Tk5QOGV5enoyTHAwcVU0ZGVvVUhudnNNZi9xdm9zbE56Y1hOY0lqcnZwN3AwK2xZdDVVN01lSEFBQWdBRWxFUVZTYzJlalZ1dzhBTUNxMXV1T3ovL2RjU0t2V2JTNTh2ZlVyQitCVjNTb3pmeWxBY0xtUnQyU08wc3VicEtrVkZPVGowTUdES0N3c1JFUkVCSUtDZ3FIVDZmRDExMTloL3R6WjJMWnRLd290aFdncG1ZYjUrZmw0YTlvVWJONjhDVC8vOUJPYU5HMkswTkF3QU1CZmZ4M0h0Q21Uc0hYckZody85aWRhdDJsN1RWMndOQm9Ock5aaXhGZmdhN3R0VE5HMWE5ZWlhZE9tZU9hWlo1Q1ZsUVZDQ0ZxMmJJbUNnZ0tjT1hNR0tTa3BsU1hlbGdvU1BQamdnNjBhTldvMHBWdTNibjNsbTNlN2lOMXV4NnBWcTdCcDB5YUZtdWo5OTk5SHo1NDlzV0RCZ2dxYjN2cmw3aENydFFUUjEyQ0dOcnluRWQ2ZStaOVM3Nm5WNmtGZHVuU0ovdVhYLzYzcGZuK1hFNVJTUmtJM3hUU1ZzVTBVQkpHWGZHMkE5OVVMZUJLd2dlSkMrZ1Z3SEFlV1lSRVJFWUdNakF4UUFJR0JnZGk2WlF2V2ZyQWVHbzBHWThlOGlTTkhEcU4xNnpaWXZXb0Z1bmQvQUgwZmVSUi8vSEVFQytiTnhhcjMxb0xuZWN5Yk13dnpGeTVHVWxJeTFuM2c3U3Y2MHN2RHIybmNmSHNGMzNhbWFGRlJFZXgyTzNKeWNuRGh3b1ZTUHJYRXhFUWtKaVlxS1IxMnV4MzUrZm1rc0xBUU5wdU51Rnd1SWdnQ0k0b2lrNVNVMVB2SEgzOWNzbno1OHI2RUVIVHAwZ1ZIang3RlcyKzloWGJ0dkExNTI3VnJoOW16WjZONzkrNElDQWhBdlhyMThQMzMzMlBac21WSVNFaEFhR2dvaGcwYnBoRDNVVW94Yjk0ODFLOWZIeHFOQmhFUkVSZzBhQkRzZGpzOEhnK2FObTJLQngrOEhKUFl0R2tUdEZvdGpoOC9EZ0RvMzc4L1dyWHlGalVjTzNZTVRxZXpGTjlhNTg3ZVR0c0hEeDcwcjI2L2xCT3oyWXl4WTBaaDBQUC9oOEdEQnVMM1E5NTVrcDJkalFIOW44Q1QvUjdGcURkR2x2ck81SW5qTVdUUTgzMW0vMmZHMUpTVWxDNEFkS0RVdDVFTUs0b2lLNjhicFlrTXg2R2twSmdZREhsZVFrcW50M0Z6WkdRa0dqWm9DSTFXZzVLU0V1VG01aUF6SXdPN2YvZ0JLVTJhSUNEQVM3SmFJNndHL3BMbS9WOS9IVWVYTHQ1NUhob2FpclMwMC9CNFBERGs1VUduMXlNcHlkdVlKVHc4SEg4ZFAzYkR4KzJXYTJ4eW9LQmR1M2I0OXR0dk1YZnVYTVRGeFNFa0pBUjZ2UjR5MTd1YzBtRTJtd2tBcUZRcVFpbVZ1NjR6VnF2MVdZMUdNN1Z2Mzc3MUd6WnNpRVdMRm9GaEdMUnYzeDZQUFBJSXBreVpvaHh6L3Z6NTJMRmpCenAxNm9SWFhua0YvZnIxdytPUFA0N1RwMC9qMUtsVDZOYXRHeDU2NkNFODhjUVRXTFZxRlJZdVhJak5temVqY2VQR09INzhPQVlPSElqbXpadGp6Smd4K1BEREQ5R3VYVHQ4OHNrbjZONjlPMGFPSEltWk0yZWlSWXNXQ3JBVkZoWUNBSEp5Y2hSdzlIbTZJaUlpQXRuWjJmNVY3SmR5OHNYbm05R3NXVE1NR3Z3aTB0UFRzWHJWQ3JSdDF4NEpDUW40NzVhdE9IZnVMT2JPTGswMVAyL0JJbWx0RmJVWi90TFE4QTgvK21URjRFSFBmeXNwTWtTeVRqa0tDTjRIT0JHbGZGNFFRcWhLcFNKdXQ5dXJ4QUdnb0NDRWdkdmxnczFtUTc0cEh3QkJabVlHQWdJQ2NQRmlPbFlzV3dwQkZCQXMrUW1MaTR1aDFlbXdZL3MzK09tbjNkQm9OTERaYkNncEtZRldxNFhINDhIS0ZjdVFtNXVMb3FLaUd6NXV0MVJqODAzcEVFVVJBd2NPUk4yNmRXRXltWERxMUNrY1BYb1VxYW1wS0NrcGdkdnRSa2xKQ1pIQVFJbjRNQXpEQkFjSHYvTGxsMTh1MG1nMDllV0dGenFkRGhxTkJvUVFoVmxVbG43OStxRmJ0MjVRcTlWNDRva240SEs1TUhmdVhBUUhCNk50MjdabzBxUUpVbE5UQVFCSlNVbFl2MzQ5K3ZUcGc4VEVSRHoyMkdQbzJyV3I4dmw5OTkySFNaTW1ZZno0OFJneVpBaWFOR21DQ1JNdVYyazk4OHd6R0RIQzI2UFI0WEJVbUF1azFXcWxEbGwrOFV0cGFkMm1MWDcrNlVkODlPRkd1RjB1TEg1blNaVytKNG9pWnM1NEd3LzNmYlRlQXowZW5IWXE3ZHdBQURwcDAxQksxYUJVQllBRktLT2tSd0dFWlZYZ09BL3h1RDArcmY3c2NIczhjRGdjc0JSYWtKOXZRbEZSRVU3OC9SZkdqeHVENTU1L0FkMjZsYVl1bkRkbkZqSXlMbUx4TzB1aDFXcExLVE5qUnIrSnhvMVRNUEtOTjZ0bDNHNFpzUGttMzhvcEhTNlhDM1hxMUVHclZxM1F1SEZqUkVSRVFCQUVHSTFHNG5hN0pYWU83eE5IemxIak9HNThTa3JLZ3RUVTFDcDNxUEF0STVNSFBDRWhvWlJUVWdhYXZuMzdvbmJ0MnBnNWN5YWVlKzQ1dEdqUkF0OTk5NTNVT01NcjA2ZFBSMFJFQlBiczJZT1BQLzVZNlhOUVZ2UjZQVHdlVDduMzNXNTNwZjBSL1hLWEExdnJObGk1YWcxcUppVGc0NDgyNHUyM3BsYnBlK3ZYdlErZFRvZUJ6NzhBQUZIQndjRnZmZjNOOXNFQTlCSzRhUWtoYWtLSWlsTEtBbUI4QW5DRTQzaDRPQTlSSXFaT0p6aVBGK2hLaW90aHNWamdjYnRSWEZLQ3h4OS9BZ1FFSmRZU2hJYUZLZVpuaDQ2ZE1QS05VVkNyMWZCNFBBcHpiMGx4TVVhUEdZZmVmUjZDeStWQ21QU2RPeDdZZk11a3NyT3prWk9UZ3kxYnR1RGl4WXRLbmhySGNkRHI5UWdKQ1NHQWwvN2JGOVJXcjE2dDVqaHVPc013czBWUjFKWHRPSDVGKzF0VjNnS3ZyTmgzeVpJbDZOQ2hBekl6TTlHaFF3ZXNYYnNXdlh2M0xyV1AwV2hFVGs0T0tLWDQ5ZGRmS3oxdVFrSUNYQzVYS2RXYjR6aVl6V2JVckZuVHY0cjlVazdteloyTncwY09vMGVQQnpGNXlqUWNPblFRL3pUWDkrL2ZoNzIvL29vcFU5L3luZGU2SmsyYVRybjMzbnVITjJ2V1BCQlNPZ2lsVkEwcEhRUUFTMFdSOER4SEJJRW5QRmM2SFlUbmViamRic1drVkdzMGNEZ2NLQ2pJeDhXTDZkajl3L2RvMUxneEFLQkZpNWJLZWY1NTlDaVNrcEtoMFdnUUd4ZUgwTEF3YUNVTGF2KytmV2plb3NXZDcyT1RDOXA5YXorTGlvcVFuNThQaDhPQjVPUmszK1JiSW1zNGN2czdBR1RuenAxQlBYdjJuTW93ekxpaW9pS2NPblVLUTRjT3JmQjQxOHRPc0dUSkVreWVQQmt6Wjg1VTNzdkl5Q2dWd1h6cHBaZlFva1VMOU92WEQ2TkhqMGJQbmowckJLcVdMVnRDcjlkajM3NTllT1NSUjZSSnVCOE13eWpCRGIvNHhWY0dEbndCaXhjdndPZWJQNFVvaWhnemRqd1loa0YyZGpiR2pIb0RIT2RCY1hFeEJ2Ui9BdmZlZHg4bVRaNktsY3VYd3VWeTRiVVJMeXUvczNMMVdnUUhCMlBCb25kR3Y3Tm9vYWFnSUg5ZGJtNnUvSVNWbzZXOHROWUViMk1zd2V0aWsvYmhlWUY2T0s4NUNnSUVCd1VqTGk0ZW4yN3lkcEsvOTk3N0VCd2NESjduOGVwckl6Ri8zaHg4K2Q4dm9OZnJNWEh5RkVXcG1ETDFMY3lhTlFPY2gwT3RXclV3WWRLVU94dllLS1hseXFUazZHZHljakxPbnorUDFOUlVCQVFFUUJBRXVOM2Vwd1FoUkNiVEl5a3BLVFZtejU0OU5TSWk0azIxV28wcFU2WWdKQ1FFQXdaVTNMMDZLQ2dJQnc4ZXhLRkRoNjRKUE1MRHczSGd3QUhrNXVaQ0VBUXNYTGdRcDA2ZFFsT3BMOEg2OWV1eFo4OGUvUDMzMzZoWHJ4NDJiZHFFbDE1NkNkOSsreTBBNFBQUFAwZGhZU0ZHakJpQndNQkFEQjA2RksrLy9qcUNnNE9oMFdnd2ZQaHdEQmt5Qk9IaDRmNVY3SmR5VXF0MmJTeGJ2cXBDN2YrL1c3WlcrSjNQLy90VnBiOTN6ejJOOE1INmphKzUzVzdWNWs4M3JadisxbFN6dExaOGxBRUdsSXFDS0RLbHdDMG9LQWdhclVhMm5rQkFVQ01zREVsSlNZaUlpRUJNVEN3eU16TEFzaXdhTjA2cDFCL1l0R2t6ckgxL2ZiV08yMDAxUmE5VTBCNFVGSVRZMkZpSW9paWJvMFFHTlpabENhV1VYTGh3SWVMNzc3OS9LeTR1N3MwSEhuZ0FYYnAwZ1ZhcnhmNzkreXUxMDE5NzdUVWNPSEFBZ3djUHZxWnozckJoQTBwS1NsQzNibDIwYTljT05wc05reVpOd3A5Ly9vbXNyQ3lNR1RNR1U2ZE9SWU1HRGNBd0RENzQ0QVA4K09PUDJMQmhBd0JneTVZdFdMLys4azFjdkhneEhucm9JVHorK09QbzI3Y3Y3ci8vZml4YnRzeS9ndjF5VTBXcjFRNS9idURBbCtjdFdCUUZRQ3RWS2FpOXlvNVNwVUJFMFp0NTRHM0E3QTBvdU4zZUtnV0h3K0UxU3lXZm04bGtRbTV1TGpJeU1uRDJ6SmxiZW4wM2pkMGpMUzBOYVdscFNvczh1WnVVWENibHkzeGJKdm1XVUVySm1UTm5hdFNwVStjdFFzaEkvN1FzTGFJb0lpUHpFaXdXQ3dSQmdNdDVkNVpvNmZSNnNDeUw4Qm9SU0VxcVhXa1FSN1lldkdObUJzOVgzNWpwOUhxb1ZDcEVoRWNnS2FseTdzTzllL2VpYnYyYnoxcnJjYnMvMkxUcGsvZmZuajdOQXNCRkNIRkRhUnhEQkVJZ0VNSW9EV1BVYWhYVUdnM1ZhcVMrcFFFQkNBb01STERVemk4aUloS3hzYkdvWGJzMjZ0YXJqM3IxcXJlYXNiSSt2RGZGRkpWN0ZKVGxVNU03U1IwL2Z0eTNRb0Q0MnYzU0ZsU3ZYcjJwQVA3Vm9HWXdHSzY2VTVEYjdjRmZmLzBGVnFWQ2NFaW92NitvM1liQ29rSVVITTFIaStZdG9OR29Ld1MxUC80NENvWmxFUlJjL1dObXQ5dGd0bGlRWDVDUDFxMnV6RUNmYy9QekdWL3ExcTI3ZUhISWkycy8zTGhCV1lkZTA5UmJZZ1dJZ2loU1VHOHhQQlVFa1FpOFFKVnU4ejRrbFU2SEEzYTdEVlpyQ1lvS2kyQXVLQ2lWY1hBanBlWVZmcmZhZ1Mwcks2dFVqNEt5M2RrZERnZHExNjZ0YUdvZWo2ZFU3ZWZxMWF2Vnc0WU5tOG93ekp2d1N6bkpNK1NCVmFuOG5lQWxrWmtmaklaYzVPYmxJcWtDaHVpTEdabGdXUGFtalpudk9XVm1Ya0xpRmZxTDFreEl1QlhETm56cXRPbDhSa2JHMmwvMy9GS1poaXRjQmp1UlVpb1NTc3YzVWVBbFpsNlBoNFBMNDgyQkk0UWcvaVpIL2FzVjJJeEdvOUlpcjJ6amxRbzZTWkdLdU5Ra1VCdm5YN0lWaTduQWpLQ1FVUDlBbEpHZzRCQVVGSmdyQkRhTHhZTGdXekJtUWNFaEtEQVhYQkhZYnBrWnI5Tzk5djRINnowTjZpV3ZsN1ZhT2FCQXZkRUZLcGJLTXlFVUlBUWdjbGQ2RUVMQWVNa3N3VEFzV0phRmlsVkI1VFZmRVJVVmRlY0RtOXloWFc2Umw1K2ZYeW1kZDFtZm1tL3lMY013VS8zTHRESS9FU0FJd2wxdmZsYW1KUlVYV1NyODdGYU5XV0JnRUlvTExkZjAzWkxpWW1SY3ZBQzczWGJGMzA5S3JvdVEwR3NEYmIxZVB6cnQ3QVhYUFEzcWJwTHdUSmxxUG1NblhtN2Z4MUdPOHhBSitFQVlBc0l3RXJBeFlGa0dLcFhDMWd1TlJvUFEwTkE3RjlpY1RtY3BVQ3ZMcDFZSlNhVGNmSVZJdlFsZVlSaG0ycFVYOXRWVEtkOXVVbFdxNDRxRUVNRHA5SE81VlRvUEsrRzV1NVhCbFd1OVh4ZlR6OFBoc0Y5eEg3dmRob3lMRjlDc3hiM1hBYjZCbzArZU91Tm8wcmpoVmg5UW8yVTBPQkVBRlVXUjhEeFBuVTRIWVZtV01vU0FFQVlNUXlDWE5ubzNGVlJxTlRScURSbzFibnhUS01adk9MQlJTbkhtekJtbFRaNGMvU3lycVpXSmZzcU5KUmlKOWZaWmxtV253VnY2VWVseHJwRksrYmFUcWxBZFg2djh1UHNIYk55d0hpYVRFZkh4OGZoNDAyYzRkKzRzaGc0WnBPd3phY28wUFBUUXczNGt2STNsbjBETmR5NWRyMVVhR2hyNnhyRy9UdHBiTm0veXZhKzJWZ2JjQUVDa2xIcDlhcHlIZUhzclhBWTJobVhCTWhLd3lWcWJWb1BHalZPcXZhM2ZEUWMyWDFBcjI4ellicmRYU09mdDYxZHpPcDI5VkNyVlZBQlhOTWl2aDByNWRqU2Ivb25xK0Zva056Y1hDK2JQeGN4WmM5QzZkUnVVbEpRQUFPclZxNDhmZi80VkFQRFMwTUhWZGwwYjFxL0RZNC8zSzhWbUlwL1hzaVh2NE1TSnY2SFJhTkRqd1Y0WThlcHJZRmtXZ0plU1o4V3lKVGh4OGdTMFdpMTY5dXlGbDRlUFVENnZEdm1uWTNicDFCNXF0UnFFTUVoS1NzS1FvY1BRc1dPbmZ5dU9Sa1ZFUkx5NmN1WEtrdGRmZi8xQUdjMk5Fa0tvOUQrUm0yRHhIT2ZsSW1jSUpRd0JReVEvbTZTNUtjQ20xa0NyMGFKZS9mclZlZ0UzTkVFM0l5TUQ2ZW5wbGVhcHlkUkRVb3M4K0xMZlVrb1pxOVhhU3FQUlRBWHdqMWQ5QTZpVWJ6K0F1d0xWOFRVOVpOSk9Jekl5RWgwN2RvSkdvMUhLd0FnaFNtZWk2bnh5ZnJoeFBTd1djN24zWjd3OURUVVRFdkQxTnp2eC9nY2JjT2pnQVd6ZnZnMkFOeWR2MG9SeGFORHdIbXo3WmlkV3JGaU52Yi91d2RkYnY2cTI4NnpxTVZldVhvTWR1NzdEa0tIRHNIamhmR3o5YXNzdG1TZUVFTng3NzczbzJiTW5ldlRvZ2ZqNHEzdTRDNEtBMzM3Ymo4a1R4eU03SzZ1eVk5U0xpb29hdm1EQmdzYVM1U1RUakt1VnVsSks1VzcwaE9kNThKdzM5Y05US3ZYRGpzS2lRdnowNDI2c1hmTWU1cytmZy8zNzl5RkxPbTdXcFVzWStmcXJlUGFacHpCbTFCc29LaXBVenVHakR6Zml1V2VmeGpOUDk4ZXVuVHR1amNabU5Cb1ZVRE1halFxb3libHF2bDNhZlRxMEs2Qm1NQmhxNmZYNktRRGFWdlhtL051YzVvR0JRYkJacjU5UC92anhZNWd4ZlJvOEVzM000NDk2emN4K1QvVEhvTUZEcXZRYmh3NGV3TW9WeTJFdzVDRXhNUWxqeG81SFNwTW15dWQ3ZjkyRERSdldJZDlrUWt4c0xJWVBINEYyN1RzQUFFYSsvaXF5TG1VQ0FFYS8rUVpVS2hZSkNiV3djdlVhaUtLSXJsMjc0ZUcrZmFIVmFoRWRFNE5XclZzcm1lb1dpd1Uxd3NQeDNNQ0IwR2cwU0toVkN4MDdkVVphMnVscUcvZXJPYVplcjBmSGpwMmduaklOYjArZmhsNjkrOXgwWnBiazVHU3dMSXZkdTNkRHE5V2llL2Z1eU0vUGg4UitVd3F3NVNSbDM3L2ZmT04xMUt4WkU2ZFBuNElnQ2xjQzBOYUppWW5EeG80ZHUraWRkOTdKa2JVMkg1K2JIR0FRQlVFRUlieTM3cEV3bERBTUNFUEFzQXh5YzNOQkNNRURQWG9BbEdMRCtuV29WNzgrOURvZGxpNTVCNDg5M2c4OWVqeUlMejcvRE8rdFhvWEpVNmJoeEltL3ZYTnM0MGR3dTkwWVBud1lXdDU3WDVWQi9JWm9iRmFyVldIcThLMy9sRHUzWHltdGcxSktYbnp4UlRZaUltSXlJYVJ2MVk5WmNrTW5pOWxzeHVSSkUvRGNzMDlqM3R6WnR3emNLcU02dmhwcDBhSWx0bTNmaFRkSGpVSE5tZ25ZdG4wWHRtM2ZWV1ZRdTNEK1BONmFOZ1VqWG5zZHU3N2JqYWNHUEkweG85K0FTZEltTXpNek1IdldURXljT0FVN3YvMEJqenp5R0taT25hdzBwVm14Y2pXMmJkOEZBRml5YkRtMmJkK0ZsYXZYZUNjY3crQzVnYzhqTEt5RzF5bCtNUjBIZnZzTmJkdDY2M2dqSXlPeFl1VnE2SFI2WlVFZVAzWU16Wm8xcjdZeHY1Wmp0bTdURmg2T3V5V2xRNUdSa2NqTnpWVjhYYUlvb2thTkdxWDJPWExrTUtaT25naU80MkN4V1BEUzBDR3dXTHdSMlhlWExNUGtLZE9xcEJnd0ROUDd2dnZ1R3h3VEU2T1h0RGFmMGl1d0FCaHZSemlSdUZ3dTRuSzV3SEVlWWpHYmtaZWJDNWZUaGVMaUlnUUdCcUtrcEFRcXRScUNJQ0QxNUFsa1pHWWdMZTIwY3U4ZmVyZ3ZEdjkrQ0FCdy90eFp0R2paRWxxZERpR2hvV2pmdmdQK09ITDQ1cG1pbE5KeVZRVyttcHB2Qk5TM1E3dHZCSFRObWpXVENDSERic1JOLzJyTGwzanUyYWZ4N0ROUFlmNjhPWEM3WEZYNjN2dHIzOE05OXpUQ3A1OTlnYkhqTGhORm1veEc3Tnl4L2E1eVZPL2N1UjFkNysrR2poMDdRYXZWb25lZmgzQlBvMGJZdmZzSEFFQkVSQ1EyYlB3WWpWTlN3REFNSG5uME1YQWVEN0t5TGxYNUdLa25UNkpuajI0WTlQeHp1S2RSSTNUcGVuK0YrNjE1YnhYMEFRRjQ2T0crTiszNnEzSk1RZ2pDYTRURGR2M08rcXNXalVZRFFSQVFFUkdCVHAwNlFSVEZVa1NPQU5DcVZXdUVSMFJnNW96cEdEdm1UZlI3NGttRmFPRnFHNmVvVktybkZ5MWFOQkJlTGpkZmsxUWxZUWdqVWtvWWhvSEg0eUUybXcwdWw0c0VCZ2JDN1haRHBWTEJZTWlEMVdwRmRuWTJDZ3N0eU0zTlJXNU9EaUlqb3lBbkJSODZlQUJXcTNjODY5U3RoNk4vSEZFb2tsSlRUOEptczkwOFlEdDc5aXd1WGJxa3BIVlVwZmRubVFqb3dCdVZxM2JpeE4vWXN1Vy9XUHZCZW55NitRc3dESVAxNjlkVjZidm56NTFEaDQ0ZHk5MzQvUHg4N05qeHpWMEZiQWFEQVhGeHBWWCsycldUWUREa0FmQ3lQQnc5K2dlR3Z6d1V6ejM3TkFhL01GRFJkS29xS1UyYVlQZFBlL0RGbDF1Umw1ZUhEUlhjcDQ4LytoQy8vMzRJYytmT3I1QkRyenFrcXNla2xNSlNhRUhRTFhLSEpDY25vMUdqUnZqdHQ5K1VvRkJaNEIwK2ZBVCtQUG9IdEJydGRUMFk5SG85Qmc0YytLYkJZT2haZ2IvTnE3bDUvVzBNSVFTQ0lFQ3Qxa0FRQk9MeHVCRVVGQXhlRUhENDkwTTRmU29WRE1QQTRYREFaREtoVjYvZStPYWJyekZrOFBOSVRUMkp3RUJ2LzRUbXpWdWdaNjgrR1BuNkNFeWZOZ1VCK2dEb0EvUTN4OGVXbloxZExsZk50MVRLQjlSUVVRVFVicmQzbHBvWjM1QlphN05hRVJRVWpJQ0FBREFNZ3hlSHZvU0xGOU9seFpxSFJRc1hJTjlrUkdoWURZd2JQd0dKaVVuNCtlZWY4Tjh2UGtObVppYm16cGtGalVhRDU1NTdIbDI2M28rbFM5N0JzVCtQd21Bd1lQakxYcjYzdGUrdng0YjE2L0RubjBkaE5CaVEwcVFKTHFaZlFHUlVOTjU1ZHlrb3BWaTlhaVgrK09Nd09BK0g5aDA2NHJYWFI0SlNpbkZqUnVIK2J0M3h5S09QNGNTSnZ6Rm45bit3YnYySHQwVjNiVitKaVltQklTK3YxSHM1T2RsbzJkS2Jpckx2ZjN2eDZhWlBzR1RwY2lUVXFnWEFHeldzYUhHVkJUdTN5NFh2dnZzV2ZmbzhCSzFPaDdpNE9QVG84U0QyNzk5WGFyOHRYLzRYUCs3K0FjdFdyTHJtaE5PcmxhczU1cEVqaDZGUnE5R2dZY09iZm4ra3NrUDgrZWVmQUFDV1pjdFJ5OXRzTm93ZlB3WURueCtFczJmU3NHRCtYRXlhUFBXYWdrVk9weE5idG14UkFYamxyNy8rTWpSdjN2eFB5ZGNtU3Y0MkpXSktLU1VNdzhMamNWT24wOXVVbmpBTW9xS2lFQkFRQUoxT2g3Ly8rZ3VpSU1KaU1VTWJGNC9uWHhpTUJnMGE0bUo2T2k1bFppckhmVzdnODNodTRQTUFnSmVHdllpNmRhdGVVSC9OR2x0UlVWR0Z1V3FWZ0JvcDA2V2R5YzNOamRkcXRSTnhBenUwdDI3VEZqVnIxc1RMdzE3RTExdTNRS2ZUb1hYck5nQ0FPYk5ub1dmUFh2aDQwMmQ0L29WQm1DNVJMRC93UUErc2ZYODlhdGFNeDdTM1ptRHQrK3NWczJqVTZMR1lNSEVLa3BLVHNmYjk5YVU0cE5xMmJZY1pNMmNoTXpNREgzMnlHWmN5TTJHeFdHQTBHaEFZR0lBTkd6L0d4NXMySS9Ya0NSdy9mZ3lFRUV5Wk5oMmZidm9ZYVdtbk1YZk9MRXg3NisxYkJtclMvZkJxSDZLb2FOSUE4SERmUjdCMzd4NGNQdnc3ZUo3SEw3LzhqTlNUSjlDelZ5L0ZIMGtJd0xBc2lvdUxzUG5UVGRMdmxHYUtpWXVQeDZHREI4RnhIUEpOSnE4MnJOWGlrNDgvd3VlZmJ3YkhjU2dxS3NTK2ZmOURzMmJOTHB2Q083WmoyOWRic1hUNXlwdkdVMWZWWTdyZGJ2eCs2Q0RtejV1RDRhKzhla3NvM2ZQejh4V0EwbWcwQ0FzTEs5Y1E1Y0tGOCtqYXRSdis3N21CbURaOUJqUWFyZUpqdXc2cFc3OSsvUmRIalJvVlc1Ry9qVkxLTUF6RHlGUmpIbzhISE04UnpzUEI0M2JEWVhmZ3pKa3ppSXFLZ3QxaFIxRlJFUW9LQ21BMEdQREhIMGV3Zk5rU1BQbFVhVjVGanVPdzZaT1BRWWlYeDYxYU5UWkJFSkNlbnE0RUMzd2pvQldrZFpBeWFSMkVVc3BFUjBkUElJUThlQ052dUVxbHdveVpzM0Q2VkNxKy9mWmJESDVoSUdiTm5vczZkZXZpN0prMDlGemhKZXhyMDZZdDNuVzVZRElhRVIxemJXbTlXcTBXT3IxZU1Wc0RBdlRnT1E2eHNYR0lqSXpDeEFsandUSXNERWF2MzlIcm00ckE2REhqOFBxcnIrRDVGd2FqU1pPbXR3VFV5aWJvTHBnL0Z3dm16OFdEUFh2aHJla3pVTDkrQTd3OWN4YmVXNzBTaHJ3ODFFNU14TUxGN3lJbXhwdGYxK2VoaDNIeTVBa01IZklDV0ZhRnh4N3ZoL3IxRzhCU3BseG96Smh4V0x4b0lUWnVXSWZhdFd0ajNZYVBvTkZvc0dEaFlxeGNzUXhmZlA0WjFHbzF1dDdmRFlNR3Y2ak1yVVVMdldiZ3MwLzNMMjBtYnRxTTJOaTRHejRlVlQzbXlOZGVCU0ZBWW1JU3hvNmJjRVB6MklLRGc2dThiMFpHQnNMQ3d0Q2pSdzhBd1BIang4djEwbWpldkFXYU4yK2hySXV4NDhiZklQL3J6bTZ0VzdmT0FMRENSMnNUQVZCQ2lEZEdTa1VxMTR2eVBFOFp3cEFTYXdubE9RNmhvV0dJam9tRjNXNkhXcVdHV3EzR3JsMDd3RElzbm5yNmFiU1hJdXVBbCtKOCtkSjMwYng1Uzh4ZnNMaENiYk95Y2JzbVlQT05nRmJHcVZZRzFHUUdBTGxjYWpnaDVOVWJQVUZQbno0Rm5VNkhSbzFUMEtoeENyNzl0akUrK0dBdDVzMWJvSmhHaXBuRU1LQzQ4VngwZi8xMUhMdDI3c0RTWlN1ZzFla3dZM3JwcWpDSHd3RzFXZzJYeTFudEFOYXJkeCs1UTNncHFWKy9BZjYzLzhwOVREdDI3RlRwd3RWcXRaajIxdHVsM3F1bzRXMmJ0dTBxWkhtdFY3OCtsaTVmV2VGdnN5eUx2ZnNPM0ZTZ3I4b3gvMm04YnNRNTJPMjJLa1VxNWFxYjY1VlBQL3ZpbXI2blZxdUhiTml3SWVQRkYxL2NCaS9GcmtnQktyV1NwL0NtZ1lpaUtGS0JGOEFURG9FQkFVU3IxVkdkWGdlMzJ3V253MXVOb0ZLcjBLMWJkOFRHeHFGV3Jkckl5TGlJT25YcUFnQTZkZXFNVHAwNlYzb2VkcHUxVWovb1ZadWllWGw1Q2dXUmIxcEhCUkZRK0lDYW9xM1o3Zll1TE10T3JJN0prWFhwRWhiT253ZTczVnQrWWk0b1FHaG9LTFE2SGVvM2FJZ2ZwYWplSDM4Y2dWcWxRblQwUDJ0cm9hR2hLTWd2cUxDN1ZFVmlOcHVoMSt1aDFtaVFuNS92ellXU2lva05oank4dDNvbDN2OWdBdzcvL2p1T1hFWDR1bkxIYmdEOGNuVmpjeXZIckxKalIwZEh3M0dGV3VlQWdLcVp2RlhkNzNwL0t5Z282SlYzMzMyM2hSSk1rSnJDeUNhcG5BSWlpZ0xoZVFFY3o0UGpQUEI0WkFaZUZ4d09CK3cyRzBxS1M3d012UGxHS2JtL2FrbnFkcHNWMGRIUjF3OXNEb2VqRkZ2SFB3UUx5aVhocHFXbGhXbTEydkVBcXFVT3FtZXYzdWpjcFN0ZUh2WWlubjNtS2FTZVBJSFhSM3BwM0taT200NXZkKzNFNEVFRHNYSDlPc3o0ejV3cU9WSVRhdFZDMjNidDhQU0FKL0hDd0dkaE5CcXV1SCtuVHAyaDArdngxSlA5TUgzYUZOU3RWeDkydXgwOHoyUG0yOVB4MHN1dm9GYnQycGo2MXR0WXZIRCtkZnM5NUNlOVg4cFArc3BLc0poYk5HWjJteFZzSlJwR1hGd2NLQldSYjh5cjhOeVM2OVQ3UjlBS0NBaEVjcDBieDFqN0Q4ZU1pNCtQSC9UQ0M0TnF5T0JHeTRNYlF5a2xvaWdRZ2VmQmNiemtiL1BBN1hMQjVYVEM3bkRBYXJPaXVMZ0lGck1GSnFNUjJWblpTbCtGeXNiUlpNZ0ZDQ290UDd3cWF2RFUxRlNrcGFVaE16TlRxUVgxTlVWOUtneUlyTFZKdmpWR29pR2F4VERNaEJzeDZMZUtTcm02cFRLcTQ4cjlMWmt3V3l4K29za3lZalRrSWpJeUFvbTF5M09mWldSbXdteSsrV05tTk9RaUlpSUNTVmZnWXpPWlREQVlET0I1SGxicjdjOVc0M0s1VnZYdTNYczlBSWUwdVFCNENDRWNBSjRRSWhKQ1JJbGFYS1l2b2xxdGwxbzhJQ0FBZ1lHQkNBNE9SbzBhTlJBUkVZRzR1RGpVcmwwYnljbko1VFhGNEdDb1ZTckV4c1pXcXExZGxZOHRLeXNMMmRuWk1KbE1NSnZORlFZTFBCNVB1ZFFPT1ZqZ2NybWV1RkdnZHJYTzFqdEpydmE2RWhOckl6L2ZCS01oVjJFNXVkczFOWnZOQ29Ibkt3UTFBRWhLVElUSmRQUEdURDRuVVJDdUNHcXlTWHFsQlhzYnltdFpXVmxuYTlXcXRWZjJ0eEZDbElBQ0FIaFpQd2hrY0ZPcFZOQm9OTkJxdGREcjlRcXdoWWFHSWp3OEhGRlJVWWlMaTBPZE9uVlFTMG9udWxxcEVyQlpyVmFsc3FBc3FQbldnUHFtZHZpYW9FYWpzWlphclI1N3E1eXRkOUtpdk5wRVZFSUlXclZxaFlzWm1iQll6Q2l5V09CeTNaMGNiWHA5QUJpV1JXUkVKQklUcjd3ZzJyUnVqY3pNUzhndktLaldNZFByQThDcVZQK29xZDNKVXJObXpjRmZmdm5sMmFlZWVpb2JsNk9rTXJCUk9aTGdKYWZrS2NNd2hHVlp5cklzWEM1WEtTSktHZXdDQWdJUUhKdGcwTndBQUNBQVNVUkJWQnlNc0xDd2ExSmlxclNLWk5QVE53bTNnc29DWDFDVHF3c0lwWlNKaUlnWUE2RFZqUnpNNk9ob0dBekdmeDJ3eGNkZmZUb0RJUVIxa3BOUUp6bkpiNE5lcGJhYitDOEZtNXNwaEpDV2ZmdjJIUUJnRlFCQjZvL2dqWlpLcEpUd0VsTlNDZHpBY1p3Q2JpcVZxa0p3Q3d3TVJFaElDSnI0a0M5VVZmNHhlSkNWbFlXY25CekZuMVlacUYzQkJPMWZIYWtkaXJQVlpJRGpEbmVlTyt3MnJ6TVU5SVp4c2ZuRkx6ZFRkRHJka096czdNNlF5cTBvcFJwSXlidStnUVJCRUlnRWJBcHV5QjJ1SEJMTlVVbUpOMHFhbjUrUG5Kd2NoZUxvaG1sc2RydTl3bncxWDhKSUdkaDRuaTluZ21ablo4ZXExZXJSMVRXWTk5NTdMNHhHSTR3bUU2d2x4WGNrTmJqc0RFMUlxSG1uK1ZiODRwZFNFaDhmUDJqanhvMnBRNFlNRVNSL20rQnJscFkxU2FYcUJPcExSR20zMnhXdFRRNHNoSVNFSUR3OC9LcXFQSzRJYkdYejFjcEVQbjN6MVNveVFVbE1UTXdvQVBkVjUyREd4TVJjZFM5T3YvakZMOVZpa3JZWU1HQkEveUZEaG53QWdQY3hTUVhKSkJYaFpkMVZURktHWVloS3BhSXlDNGh2WUtHb3FLaVVyNjFSbzBaVkI3Wk1uNkpUWDhuUHo4ZVpNMmRLTVhlVTlhK1ZEUno0Y3F5bHBhWDF6TXJLR3UyLzNYN3h5MTBsTCsvWnMrZG90MjdkRHN2Z0JpbFNLaGZMUzAxZzVLcDVoVlB1Y3Zlcnk2WnFXVE8xcWkzOFZJbGhQNVI3aytNRjVGL01BbkVhUU54bUVFOHhDR2NESTloQkJCY2d1QURCNDkxRWpsQlJBQ2dsOGpiNC85cXc5YVAzalBMZlk3LzQ1ZTZUaEdiaS85VkxydkgzK1l1RlBBQ0JBQUpBWmJPVWdSZk5BQ3FDaWp5RjZDWVFYQlNDQXhDc0lJSU9qR0FCNGZKQlBMa2c3a3dRNXpuQWxvcjQ1RnBRcS82NTkwV0Z3WU9zYkFzTXBtS1lMVFlVRlR0aHM3bmdjTHJoZEhKd3V6bDRQRHc4SEErT0Y4RHpJZ1NCUWhRcFJFb0pCWmozbHcwZUNlQUIveTMyaTErdVRTaTljOCtkWlptdWgvZE1md1J5SU1FYlJKQURDU3lWaUNsRmtVSVFLSGhlQk1jTDhIQThQQjRlYmpjSHA1T0R3K21HemVaQ1ViRVRab3NOQmxNeExtVlZyVktubkkrdHVNU0ozTHdpRkJSWVVWamtnTlhxaE4zaEJUV1htNFBidzhQakVjQnhBbmhlSkx4QUlRaVVpSlFTVUJETHhYY2JzQ3p6aG45cStzVXZWeWNpQlF5V1NKZ0t3eUNJTEd4M2RqcmlvQVVMRmh5Wk9ISGlSYTlKNmcwbWVFMVNpSklGU2tSS3dBdUVjZ0pEUER4TDNad0tUbzhhTnBjYUpVNHRDbTA2RkZqMU1CWUZJdHNjQkVOeENQSks0bEFuZ1VOY2VBRXFxNG9zQjJ3NXVZVXc1WmZBVW1oSGlkVUptOTBOaDlNRGw4c2pnUm9QanVQQisycHJGS0FVaEFKTVNJaitOUUFKL21ucUY3OWNIYWdkTzFjZllNTVFGSEpuOThtVnBHWkM3ZVRISjA2Y3VCb0FEMitFVkg0VlFRZ0Z2RzM4Q0NFZ1VyTmxJdEVkc1NvMVZDbzFWR29OMUJvdE5Gb2R0TG9BaUNRUXhUWTE4b29Ta0djT3c3MzF6MWNJYnFWTVVXTitDUXpHWWhSWWJDZ3Fkc0JxYzhIaDhNRHA0dUJ5eTZBbXlDWW80YjBtS0tFaUpaU0NPUEpXZENlRXZQSnZtbkRqcG0zQi9YM2Z1V0cveC9NQ1JrMytBdEgxeGlHMDlwc1lQbW9USEE2UGYyWGY1V0lvakFUWU1NVEV4djlya3M2MVd1MmdQYi91YTQ3TFZPSWFTdUZESmU3Tm5oQkZrUWlDQUY3Z0NjOTVBd2VjNS8vWk8rL3dLS28yaXY5bXRtVlRJRTE2Q1VoSGFWSkUwQUFmVWtSQkJDc2xJQWdxTFlMU2xkNkQ5TjVFcFNnSWlpQktFWkFlbENJSVVnVUVFdEo3c21WbXZqOW1kNUpOSXlCTjJmTTgrMEIyWm5idTNwMTU1MjMzSENzV3F3V0xROFpQMVQ1SUpENHVqdVNVRkhRNkErZ0tjelBlTDlkenV4aTJHeEVKUk1jbWs1Q2dHclhVTkF2cEdkYk12SnJEc05udHNtQzNPMEpRR1VFQkFSQ05Sc1A3N2tzMGZ3d2JzNUZOUC96T3VzOTZzV2wxSDNidStaTitnOWU2SitZUlIxUjhvZitjVGk1QXVmTGxPMlF4YkFaUURHU3FXNG5PMWpCSmxnWEpMbUczMndXYjNaWlpGYlZtVmtWVFVsSklURXdrTGphV3lKdVJlUHY0M3Rxdy9YMDlUZzFCNDFKSlRFb2pKZFZDZXBxVmpBd2JGb3VqV0pEcHJTRkpNcktzT0FzY1lrYlV2RGNFZ1JmZGwyamVTRTIxTUcvcGJzTEdkeUM0Y1NXQ0cxZGk4YXpPckZ4emtKaFlOL1hRb3dwRkFVblMzNUduZHViMEh3d012ZmNwN1ROblRoTTJiWXJHYWVqRXhvM2ZFTkxsTFVLNmRuSVI1SW1Pam1iZ0J3TjR1M3ZYbGkxYXRtcE1GaXB4UlZIVUlvS2lpQTdtSHhSSHE0Y2syYlYyRHlmRlVZYWo1U00xTlpYazVDU05Vand4TVFtN3JNKzEwQ0lDV0cxMk5RU05UU0VoS1kza0ZBdHBhUmJTblViTldUQ3dTOWp0a21DWFpDUVp4N0lweEk4L2FxMHo2SFh2UGVnTDVPbm1rd2tkOWhYQmJjSUlxakdjSnhxTzRmdXRKN1R0ZFp0TVpQallqVlN0UDRyaWxUL2k3UGxJTEJZYll5WnZwbnpORVhnVTdVTzlwaFBac2R0VktOZG1rK2dkK2lYZUpmdFR2UEpIZkRwdmUrWVBHSlBNSzUwWDRsZjJBN3hMOXVlRlYrZHc0VktVdHIxajEwWFViVElSZ0dPLy8wMTZ1bzNnUnBXMDdjODJWRVh2RDRaZmROL2hqeWdFQVZMU2hEczZ0bktWcW93YU0vYWVqbS8rdkxrc1c3cUVTeGN2YWlTdUFGZXZYbUhEK3ZVc1dMU1VaY3RYY3VMRU1ZMDhkZjY4T1RScjlqOVdmcjZLZDk5Ny8xVVBEN09ITXh6RlVTRVZCRUVIT0kyYnl0c21TVWlPVlV3Mm13MnJMWXV5ZkhvNnFTbXBKQ2FxSVdsMFZCUUppVkt1T1RZOXdJMGJDVVRISkJPZmtFcFNrbG9GVFhPMGRsaXNkcXlhcHliaHFJSTZ2RFUxRFAxNDhFdTlLS0NDKzczR2dtVy9zSFY5UDVvOVY0WE5QLzdPSzEwV2Nuam5VR3JYVUJjN3o1aS9rNVVMdW1FeTZxbFVvU2c5KzMzQmp6di9ZT0duYjFHcFFsR1dmcjZQRjE2ZHcvRzlJNmxXUmVYck9uRDRJdVhLQm5CMHp3aU9ucmhLajM2ZlU4akhUTSt1alFrZDlqVVdxNDN3bjRjQzBHL3dWNFM4OXhuN2YxSVptanEycTBOOGdscmV1aDZSZ05Hb0o4QS84OGxzTU9nSThQZmkybzBFOXgzdVJnN0V4c1l5Y2NJNFlxS2pFRVNSOTk3clE0T25HM0x0MmpVR2h2YkhaclBpNit2SGlwVmZaS1k3aG56RWpSdlhBVlYweWRQTGl6VnIxd0VxcmYrY1dUTklURXJFMzgrZndVT0hhVm9XQU91Ky9vb05HOVpyK3dQMGZLY1hScU9Sc0dsVFhNYjIrNGtUUEZXM0xwNmVudGp0ZHZ4OC9UaHgvRGoxNnRYbnhJbmpmUENCU3VqajYrdGJyMFNKNGkwdVhicTBHYkE1WGxvaFFWRVUyUkdTT2xZa1NPaDBkdXgyR3phYkhxdk4wYWlibms2YVNRMUpFeElTaUltTndXVEl2YWRObjU1dTFYcldFcE95VkVFMW8rYklxemx5YTQ0UTFPbXRDU2YyZlZ4SXB4TjdQU3dYd2xzZDY5SHNPWldBOHNWV05XamVwQ29MbC8vQ29wbXE5bVdiRmsveVdudVZhQ1F1UHBYUFZoOWcxWklldk5SYVZmMmVOcTRqaDM3OWl5bXpmbUxsQWxVNXZWalJRaXliMHhXVHlVQ2xDa1g1N2ZnVjVpemVSYyt1amJsOE5aYlNKZjBvV2R3UFQwOGp5K2QyNWRxTmVHMDhiM1NvcC8wL0xkMktoNGMrbHlTckhvdlY3cjZMM2NpQnI5YXVwa2FOR29SMGU1dExseTR4Zjk0Y0dqemRrRktsU3ZIMStnMmNQMytPaWVQSHVSd3phY28wQUJJVEUrajlUZzgrR1BnaG9NcjJUUncvbHZFVEoxTzhlSEYrK25FckMrYlBZL1NZek9OcjFxcVZnM2s0TDRIbHhNUkVQRHc4aUk2T1p0S0VjVWl5aEk4alQ1aVltSWpKdzRQdk4zM0hqaDNiOFBUMGZMVkh6M2YyTEZ1NnhPbzBiSTVWQ1pJajM2YklpaUlJYWtpcTJDVzdZTFByRkwwekpEV29JV2w2ZWpxcHFTbHFTQm9majBFdmtwNHVZemE3amxHOEVhbUdvUEdKbVQxckdlbVpCUU9iemRtemx0VmJBOW5oclZXdFhMd25VTzFodVJEcTFIU2xvYWxlcFRpbnp0elEvcTc0ZU9aQzh6Tm5JNUJsaFliMXlyc2MwL2pwQ3Z4eEpsTlhzMjd0SUV3bWcvWjMvYWZLOGVlNVNHUlpac2lBbG56LzQrOEVQajZRTnEvTjRic2ZUbEM5U3U3TXJHWVBBMWFybE9OOWk4V09sNmZSZlJlN2tRUDE2amRnNTQ3dHJQeHNCWmFNRE1LbXp5alFjYklzTTJiMEtOcTgySmI2OWRWZzZxKy9Mbkh0MnQ4TUh6cVk3aUZkV0wzNlM2SnV1dW9MVktwVW1WYzZkQ3p3K0U2Zi9vT1JJNGJ5VHU5M2FkclV0U2QvMG9SeFhMNzhGMkhUWjJJeW1hcDA2OTdqZVZ3S0NZNEtxWm9TRTFDOU5tUlpRckpMU0hhN1F5dEJyWkphTFJZeUxCbWtwNlZyaFlURXhFUnVSQ2JtOU5qVW5yVVVraHplV3JyVFc3TTRRbEJuejVva0M1SmQ5ZGFjemJobndzZjQ2WFJpejRmcFFwQ3phVnRtV096b2RKbkYzNndHSkx1Vnovb1pXWVYramRuY1hiMWVSSzhYRVVXUnRpL1U1UHFaS1h5LzlYZCszUGtIdzhkK3kveGx1em04WXhpZTJZeFZxUkorWkdUWVNFaE13N2V3cDVhL2k0MUxwV1J4WC9kZDdFWk93MWF2UG5QbkxTVDhTRGlmcjF5QjBXaGt6TGdKdHp4dTJkTEZlSGg0MExsTDF5eTVZaHZGaWhWekNWdi9DUW9YTGt4R1JnWmgwMmRTcUZBaFRwdzRUbUZmWDIzYk00MGEwNkpsSzgxYkxGNjgrS3U5ZXIyN2MvSGloZFlzNGFpZExMeHRMbDZiWFJKMGRydmlVaVcxV0VqUFNDYzFOWTNrNUdUME9vR29hSmxpUlF2aDVXbks5TmhpWXBOSlNFeFhlOWJTclZyQndLWlZRZVZNYjAxV3ZUVm5idTN4Y28rOURUeitNRjBJNFVjdnUveDk2TWdsYXRmSW5VMjFZdmtpNlBVaUI0OWNjbm4vUVBoRnFsVEt6RHVjdmVENlZEdCs4bStxVlZZSklZZU0yc0Q1aTFGMGVlTnBWaTNwd2Y2ZlB1TFU2UnNjUDVtVFE2cDJqZEtZelFiMkhqaXZ2YmZ2MEFWRVVlRHBiRjZqRzI0QVRKbzRudkFqNFRSdi9qekRoby9rMEtHRExnL2QzTEJ2MzE3MjdON044QkVmdXdnV1ZhaFFnYVNrSkg3WnMxdkx0MzIvNlR1WFk4K2ZQOGZHamQ4VWFHeFAxcWlCMVdyRlpESWhTUklIRCt5blppMVZ5N1JXcmRyYU9JLys5aHRCUWVVd21VemwrL1R0MTV4c1JZVHNYcHZzOU5yVVFrSm1sZFNtQ2k5Yk1qSklUMWR6YlNrcEtjVEVKaE41MDlWcjA4Y25xQ3NNVWgzZW1zVmlVOWRzT1VOUW04TmJrMXk5dGQvMkRQZlI2Y1MzSDdxY3hJWmZlYWIrNHp6ZnRDb3JWaDNnNU9ucnJGclNJOWQ5Zlh3ODZOZXJHWU5HcnNmYnkwU2xDa1ZaL3VWK0RvWmZZdXJXRDdYOS9qaHpnNFhMOS9EdTI4RWMvdlV2NWl6YXhkSTVYUnhHTDVJK0g2NWhYdGliQlBoN3NXTFZBYnk5VFpwaFhQdk5FZUlUMG5pdlJ6QmVYaVo2ZEdsTTM4RnI4Zkh4d0dqUTB6djBTN3AzZWdaL1B5LzNYZXhHRG5UdTNKV3dzQ21zWGIwS1daWVpPT2dqUkZGMEtSNGtKaWJ5V3NkWHFQUFVVd3dkTm9LNXMyZVNrWkZCbi9jeVU5OXo1eS9DeDhlSFNWT21NZlBUNlN4YXVBQlBUMDhHWmhOU1BuYjBLQnMycktkOSt3NjNIRnZac2tHMGI5K0JkM3YxUkVIaDJXZURxVmV2UGdEdjkrbkg1RWtUV1BmMVY1ak5ab1lNR3c2QW43OS9oL2F2ZE5pK2NjTTNOc0RxTUc1MlZHVXJsVzFYYmRwMTVOcFVyeTFybGRSaXRXcTliVG9SNGhNa29xS1RLVjdVVjR1U2hGbVRYK1ZHUkR4Uk1jbkV4NmVTbUt3dWVrOU5zMnBMcVRJc2ttQzFTdGp0aWlESmlxZ29pTmJvK2YxME9qSHNZYm9Jbm00K21TZXFsdURDWDlFY09uS0pHdFZMTVgxOFI1NTlSbTJwcU50a0lpKzNxY25Jajlwb3gxaXRka2FPLzQ0dnZqcEVRbUk2dFo0c3pmaVJiZmxmc01yOTlPSEk5Wnc1RjRHZnJ5Yy8vM0lXblU1a2FHZ3IrcnpUQkZEYlBRWU0vWXJ0dTg2UW5KSkJuWnBsbURhMkE0MmVWbVhRT25aZHhPV3JzZnk2ZTdnam4yWWpkTmpYclBubUNLSWcwTEZkSFdaUGVRTVBENFA3TG42RXNlZDQ1ZitrNmxwdWlJK1BuMWpqaWFyZkF5bEFLcEFtQ0lJRlZkM0s3bEMxa25VNm5XSXdHakVaVFlxSGh3a1BzeGxQc3lkZTNsNzQrQlRDdDdBdm9nZ05hMG1VRDNxTWFsVktVRDVJcFRVU3hvOTh5WFVabGNON1MwMnprcDVoSlNQREpsaXNFamFiSWtpU0xNZ3lZdWZYNitrL1c5RGpNUERrdzJiWVdqV3Z6dWloTHoyeU40aWlnQ0M0di92RE1tY0YvZXhIeWJBcGl2SkhvNFlOM3YvNzc2c3BEdU9XSmdoQ09tQkJsZXlUUkZHVVJWRlVEQWFEb2hKUGVpZ2VIaDZZUGMxNGVucmg3ZTFONFVLRkVRU0Zlay9LbENubFQ2VUt4YWo1UkdrOFBBem9VeHk1dFl3TUcxWkwxdFVGV1JhNVordGJXenFuVzVlSHphaGxoK0RiKzEvM2cwZWVtMGJSSXJlL3JFWlM5RnlPcWt4OGtoNUpGc2xJZnpSVnFqek1ablNpZ244aE8wRkZ6aUlLZWJmUXlBcGNpYWxNYklJSlNkYmRzemxUeHlRVFdOaEMyY2ZPM3RMSVhiOTI3Vkg0cWFvdldMajQyUmZidE5ycHlMWFpGRVd4Z1dBWEJMV1FJTXV5QUNnMm15M1RJT0pZNlNTckt4VThUQ2ExdVRsRklqRXBrOW9vcUV3Zyt0UTBpNE81STF0dVRaS1JKRm1RSk1XeHlrQjlvU0RxOWJvdUQvMVRJV0hSSTNFenA5djkrUDFDS2ZRR0Qzd0t1M1ZGVTFOVGlFOU9JaWFoS2pVZnY0cEpuNWlyVWZ2MTNCUG85T2I3TW1lcHFTbkVKaWNSRmY4RTlTcWR5dGU0bFN6MWFCRGpGQzlSb2czd2k4T3dXUUc5SUtESDBkZUdxbXdscU12UUJRVUVRUlFFUlJUVmJnUlJwOE5pdFNLZ2tKb21rWnljUVh4Q0dqRXh5WlFxNFllWW5tNVR2VFdyU3lNdWRydUVKTWxxSmRSQm5xU0FrSFp6Ym11ZzhjTTRXWWQyREgza3d0REl1Q0xvRFI3L0tWYUlmd0l2TDIrS0ZpdUJUdTlCUkZ6dWlsK1hvNnVoMDV2djI1eGxqc25NbFpqS3VBR2lLRGJjcy9kQUxUSkpLQTJLb3VoUUs2U3FOVk1VRkVWV0s2U3lNNHJNdXBaVWxTUklUN2VSa3BwQllsSWFzZkdwUkVZbElhWnJQR3RxejVyTkxtR1hIRWJOR1lKbU1uZ0lSb1B1VGZmUDh2QWdOdEgwbjJTRitLZnc5aWxFVEtJcDEyMXhpZm9ITW1mZVBvV0lTVEM1Znh3SFNwY3VuYjMxdzhuOG9YT3lmamhvalpBbHRmM0Q3bGdrYjdmWnNEcGFRTkl6cktTbVdVbE95U0FoSVkyWTJHVDBGa3NtZWFUV3M2Ym0xZ1MxYjAxeFdFNkVoQ3N6bnhRRTRkWGJDZ2tmNFdUMnZaNGZTZFloeVRxM3A1YUhsNVFZSDRzc2d5aTZ6dmVEbWpOMVRIRjM5SnNuSlNaeSthK0xwT2Fqb2V2bDVVMVF1Y2NwVkxqd1hSbnZ2VDZud1dCb3UvYXI5Vis5OFhySEMyUlNoK3NGUWJBN3dsRlpsZXhUQkVtU0ZVbVNCTWt1S1U2dnpXNnpBUW9XaTB4NnVwWFVWQXVKeWVuRXhhV2lWM05yV1pkTnlRNXZUVmFMQmdvNCtkYTh2RXl2RjJUQS96R0s0M3Y3RlBjRW5VNmlpRzlDdmxUSHVVRW5Tbzlzb2FBZ1NFOVBkekZxb0JxVUJ6bG42ZWxwZC9RZysrdlNCZExTVXZQZEp6VTFoY3QvWGFSR3JUcDNaYXozNDV5MTY5UitEcmlhSmRkbWRYaHRrcUtvdVRaRmtSVlZ4VXB5cFRheTJ4RlFzRmdsTWl3MjFXdEx6aUErTVExOUZ2MENOYTltenl3YXlBNVhFQVZoODFkOVBFUlJlTDBnUnUwL1JuRjh6NUdhbWtKRWdsKytWTWQzaXUzYmZtTEY4bVZFUmQya1JJa1NmUDdsR3M2ZlAwZVA3aUhhUGtPSGorU0ZGOXE0ZjRpSEdMY3lNRm12cFgvVE9UMDl2ZHEwZTduOSt1KyszV2pKekxWaEV3UkVVQnk1TmtGUUZCbEpraFZKbGdTN3VrZ2V1OTJHQUZpdE1oa1dHK25wVmxKU00waEtTa2VmblVEU25pVzNsblg1VlBPbTFWNEZTdDlxb0ZrcGp0MG9lSWppNWVYTnpVaVptL0YrRlBPUHZ5dWZlK1BHRGFaTW5zaVljUk9vVjY4K1NVbEpBRlNvVUpIdE8zY0Q4RTZQYnZmc2V5MWZ0cFIyTDdjbklDQWd4N2htelpqT3laTy9ZelFhYWY1OFM5NTd2NC9HS25IdDJqWG16SnJCeVZNbk1abE10R2pSa2w2OTM4dkJPbkUzY2F0elB0ZTRJUWFEQVVFUUNRb0tvbnVQbmpScTFOaDk4ZjV6bEJyNThhZ0czMzI3Y1JmYUVpdEZEMEttUG9KS0lhNWt6YldwaStRbFFNRnFrN0ZZN0dSWWJLU2xxN2syMFJtQ1NwS2MyZUloWjdaNDRHengwT2tLdE9UL3YwcHhmRi9DMG55b2p1OEVaLzg4UTJCZ0lJMGFOY1pvTkJJWUdPZ0l4d1JNSmhNbWs4bGxMZUhkeG1jcmxoRVhGNXZqL2RHalJsS3lWQ2syZnJlWnhVdVdjK2pnQVRadCtsYjErR1dab1lNL3BGTGxLbno3M1dibXpKblBudDI3MkxqaG0zczJ6b0tlYys3OGhYeS9aU3ZkZS9Ra2JPcGtObnl6L29GY0o0SWdVS2RPSFZxMGFFSHo1czBwVWVMMm5BaEprdGkvZngvRGhuekV0Yi8vdmk4cGdiRmpSdkhXRzYvUnZWc1h6cHcrclczNysrcFZ4bzhiMDR3czFWRWM2MGVkREx1U0pBbVNKQW1LSWd1U2F0d0VwN0N5SktrUnA5VnFkL0hhTk1QbTB0NGhPU20vMVJhUCtLc3puaEFFV3Q3cUMvd1RpbU0zVk04dEw2cmoyOEh4NDhkNHVXMGJwazJkVEdSa0pDKzNiY1BMYmR1dzhyTVZCZjZNUXdjUDBQbXROMmplTEpnZTNVUDQ0OVFwbCsxN2R1OGlwR3NuWG1qMVBOMjdkZUhRd1FQYXRuNTkzK2ZsdG1wbys4R0EvcnpjdGcxOTMzOVhNeUxCd1UzcEd0SU5rOGxFa2FKRnFWdXZIdWZPbmdVZ0xpNE9QMzkvT25YdWpORm9wRlRwMGpScS9DeC8vbm5tbnMzNzdaelRiRGJUcUZGamhnMGZ5WkxGQzEwWVplOFh5cFVyaDA2blk5dTJiZXpkdTVlYU5XdGlNQmh5TmRpNS9YOUEvNzc4c21jM1o4NmNScEtsMnpwMzQ4YU4wZXYxZVQ0Z2N2dDczZGRmNGVucHllcTFYek40OEZER2p4dUQ0cmpJWjg2WXpzdnRYMm0yWnUyNjBtVFRId1YwZ2lBSW9pZzYxNDRpYXpVQVNYczVxZFdzRmpzWkdUYlMwcXlJem9LQlhTc1lPTFVNdEtLQjRPM2wwYjVnVDVJN3B6aDJRMFZLcXZDUGMyeTFhdFhtMjAxYkdCQTZrSklsUy9IdHBpMTh1MmtMSWQyNkYrajRpeGN1OFBISTRielhweTlidG03ajFkZGVaK0FIL1RYdXJpdFhMak4rM0JpR0RCbk81aDkrNHFXWDJqRml4RERTMHRTay9KeTU4L2wyMHhZQVpzeWF6YmVidGpCMy9rSUFSRkdrVStjdStQcXFudWxmZjEzaXdQNzlOR2p3TkFDQmdZSE1tVHNmRHcremRuTWNQM2FNR2pWcTNyTTV2NU56MXF2ZkFLdk5waG5rKzRuQXdFQnUzTGpoY0NaVWlpMC9QMWRQLzhpUmNFWU1HNExOWmlNdUxvNTNlblFuTGs0VkcvNTB4aXlHRFI5NVJ3NUlRRUJBbmw3K2h3TkRPWDdzcUdiTUZzeWY1N2llem11L2I5VnExVEVhalZ5N3BucUs1OCtmbzBHRHA2bFZ1MWFEWEx3MkVSQVZCVUVRQkxYdFE4bGFSSEMwZ05pemVtMTIwak9zaUhaSjFzUlpuR0dvckdTeWVLQW9naWdLTC8rVEgyTFF3RkJlNjlpZWtDNXYwYlh6bTJ6Wi9MMlcxM2l0NHl1MGIvY2kzVVB1N1dLRzdpRmR1SGp4OW5RRnR2MzBJNjkxZklVWFdyZGc5cXk4Q2Y1MjdOak82RTlHL21lTTYrYk5td2h1MHBSR2pScGpNcGxvMWZvRnFsU3R5amFIa0VkQVFDRExWM3hPdGVyVkVVV1JsOXEydzJhMTh2ZmZWd3Q4amo5T25hSkY4NmFFZE9sRWxhcFZlUzY0U2E3N0xWd3dEN09uSnkrMHVYODZRUVU1cHlBSStQdjVrNUo2LzBWNGpFWWpraVFSRUJCQTQ4YU5rV1VaazhtMVA2NXUzWHI0QndRd1p2UW5EQm80Z1BhdmRNRGYzMTg3L2w2Z1Q5LytUSnd3bnJselpyUDFoeTEwNmFvV3FCNnZVSUZmOXV4QmxtVXVYYnJFelp1UnBDU3I4L2I0NHhYWXMzc1hYbDdlemJNWk5YMm1jY3ZzYVZOa1J6anExRWVRVk1kTVZaS1hzRmh0cEdmWUVMTVlOYTFnSUN1QW8yaVFHakczR1hlQklmZWpJY05ZK2NWcTVzeGJ3T2NyVjNEcDBpV04zbmhxMktjUDVRM2VvbVVydmw2L2dXN2QzdVpSUW1Sa0pNV0x1K1p0eXBRSklqSlNaUlgyOXZibXQ5OStwWGV2SG5SNjgzVzZkZTJjYXlpU0g2by84UVRiZHV6aXEzVWJpSWlJY0ZFNGN1THpsWjl4K1BBaEprNmNuR2Y0YzdkUjBITXFpa0pjZkJ6ZUR5anRVcTVjT2FwV3JjcisvZnUxb2xCMnc5dTc5M3NjL2UxWFRFYlRQM293bU0xbU9uYnNTTWVPSFRFWURMUnIxNDZPSFR2eTJHT1B1ZXozZUlVSzZqM3oxUnA2OVg2WFFvWFVYUHVycjcyQlRxK2plN2N1ZlBINVozaDdlMlAyVkwzalFSOE81dWVmZC9KMjk2NVZ1b2FFVkhFWXM2eDVOcDJpS0NwWG0zTTFnaXdqT1VOVFdkWTZPbFN2VGNKaXNhR1hzcXd5Y0RUa09zTlFBTUZrMHJlOW16OUk0Y0srUFBGa0RTNWVPRS81OG5tVEt5WW1KakI1NGdTaW9xS3cyMjEwNnR4VlkrTThjK1kwTTJkTUp6MHRqU0pGaXpGMDJBZ3RNYjU3MTgrc1h2MGxsb3dNcWoveEpCOE0vRkRMUCt6NmVTZGpSMzlNZW5vR2ZmdjExN3lFYjlhdlU1UFhpa0xUWnYralcvY2V0L3dlUjQ2RTgrbjBhWWlDU01sU0pmRTBlMnJiOGh0RDgyYkI5Qi93QVV1WExFSlI0UHN0V3g4NncxYTBhRkVpSXlKYzNydCsvUnExYTZ1OVNudC8yY09xTDc5Z3hzelpsQ3F0RnNxZmE5d3cxNXNydTdHelpHU3dkZXNQdEc3OUFpWVBENG9YTDA3ejVzK3piOTllbC8zV3IvdWE3ZHQrWXRhY2VYZXQ0ZlJXdUoxekhqa1NqdEZnb0ZMbCs3OUV5bXExWXJmYk9YcFVEZnQwT2gwV2k4VTFwWkdTd2tjZkRhUnpseERPbmYyVEtaTW5NblRZaURzcUZxV25wN04rdlZvb2FkZXVIVC84OEFOWkY2ZG5qWEIyNy9xWjhSTW1NVDFzR2hNbVRhWlNwY3FZeldhR0Roc0JRRkpTRW0rODFvRVNKVW9DVUtwMGFUNmRNY3R4Myt4cStQbktsWDlrTld5Q0lEakNVVVhJR25xcktUTUpSUkdRSkFXN1hmWGFiRFk3Rm90ZERVVlZiMDBXSEVVRFRhaEZVUlJSRUlTN0dnTkVSMFZ4NnVUdlZLbFNOZC85enAwN3gvK2FQOCt5RlN1Wk0zY0JzMmJPd09wWUd6YnE0eEdFaGc3azh5L1g4TXd6alZpeWFJR1dyMW0vZmgxejVzeG41UmVyQWZoaHkyYnRNMzE4ZkZqNXhXcEdqeG5IL1BsekFaVlliL1BtVFN4Y3RKUWx5ejdqdDk5K1k5ZlBPL01kbThWaVljSzRNWXdhUFpZdlY2K2xUT215MnJaYmpjRnV0eE1WRmNXNmI3NWwvVGNiSDVqeGNuWnZBeWl5ak4xdTE0eFFteGRmWXMrZVhZU0hIOFp1dC9Qenp6djU0OVJKV3JSVTYwZXhzYkVJQW9nNkhZbUpDYXhlOWFYamMxeXJIc1ZMbE9EUXdZUFliRGFpbzFSSlFxUEp4QmVmcjJUdDJ0WFliRFlTRXVMWnUvY1hhdFNva1JrS2Y3K0piemR1WU9ic3VWcjRkTS9EN3dLZTAyS3hjUGpRUVNaUG1rRHZkOS9IeSt2K0U0UkdSMGRyQnNwb05PTHI2MHRDZ3F2SzJjV0xGd2dPYnNwYm5Ub3o4cFBSR0kwbUxjZDJyM0R5NUVrK25UR0w1NEtiTU9MalQvanQxeU11MjVPU2twZzJkVEl2dnRRMlJ6ajg5OTlYV2JaMGNiTXNJYWhXUkhCNGJLSWdDQzdMckZRYU5kbFJJM0ROdGVuVlNxaXNlV3V5eW1FcEFFSjY1THpXUU1tNzhhV25oMDNGN0dIR2FETFNwMjkvU3BjcGsrLytOV3ZXWXZteUpXemI5aU02blI2TEpZUGs1R1FTNHVQeDl2YWhhclhxQUx6VXRoMU5telVENFBEaFExejcreXJ2OW41SGU3SjVlL3RrNWgwYzdKNVZxMVhURXVIaDRZZDQvdm1XbU0ycWEvemlpeThSSG42WXBzMytsK2ZZcmw2OXdtT1BGZEdNYzVWcTFkajN5NTRDalFHZ2EwaTNlNWJuS0FpeU4raE9tVHlSS1pNbjhueUxsbno4eVdncVZxekVxREhqV0RCL0xwRVJFWlFwVzVhcFlaOXFNbTJ0WDJqRHFWTW42ZEc5S3pxZG5uWXZ0NmRpeFVyRXhidmVPQU1IZmtqWXRLbXNXTDZVTW1YS3NIVDVTb3hHSTFPbWhqRjN6aXkrV3JzR2c4RkFjSk9taERqQ2ZVbVNtRFpWRFFQZmZOMjF3K2p6TDFkVHJGanh1ejRmQlQxbnZ6N3ZJd2dxYyt5Z0R3ZmZ0VDQyUlFGdno0S1h3aTlmdm95dnJ5L05temNINFBqeDQxaXQxaHozdzYyQXVRQUFJQUJKUkVGVVQ4MmFLazIzWHE5blVEYW0zRHZGZDk5OWwzY3VQY3M1YXRXcVRhMWF0YlcvRnk5YXdPNWR1L2hmOCtkekZMSDY5M3VmbE9RVVFycS9YV0wwMlBGUE5ubXUwYS9aOG13MlFiWGt6bkJVVVlzSU1vS2dlbXlTbzFiZ3pMWHBKYWZ5bEhQNWxKcGJBeENNUmwzcnUzWHhEUHB3c0VZYlhCQ3NYYk1LdTgzT2xLblRFUVJCYXg5d2hqaE9HQXdHL1B6VUo2ek5haU80U1ZOTmJpeS94Ry9XRUNtcmR5NElnbGFLemkrL2tsZXphRUhHSUdaZjUzT1AwTEpWYTFxMnl2a1RWcXhZaVYvMkhjejMyRWFOR3VkNTQ1cE1Ka1orUE1ybHZYZDY1ZVMvcTkvZ2FiNWV2eUhIK3hVcVZtVG03TG01ZnJaT3AyUFAzZ1AzMWRBWDVKeTNtcTkvQWtFQXZjNU9hbXBLZ1NxVmlxSnc3Tml4ZjN6ZVZXdSt1bTl6M0t2M2UvVHFuYnVtK3V3NTg3T21LdW9CeDdPRm83cHM0YWlneUxJaVNYWkVRVVNTQk1maWdreXZUWlNkWWFpakdxcVN1V2xoYUdzZUVLS2pZL0QyOFVZUUJJNGZQMFpTVWhLS29sQzZUQm1TazVNNWYvNGNBRC85dUZVVGNxMVh2ejQvNzl6SjlldXFXT3pPblRzNGVmTDNmTTlUdDI1OXRtL2JSbnA2T2phYmpSKzJiS2Erb3pTZEY4cVdEU0k2T2xvcnVVZmN5SlQzdTVNeC9KTW52VGxMYnMrTjdFbHZ6eHc5Z1E5NnpuSWJFMEFSM3dSU2svTVd6ZmIwTEZqSVc5RDk3dVpuM2Mxem1qdzhtbVR6MXB3OWJhTGo1U0RsVUFSSmtoQUV1eUE3bzg0c1hwdGVDME1WQlNWTEdKb1dNYmZwM1FwRDgwSitnaFN2dmZZNlk4ZU00b2N0VzZoY3BRb1ZLbFlrTVNHQndNQkF4b3diejZkaDA3QllMQVErRnNpUW9XcGlza3FWcXZUclA0Q2hnei9FWnJkUkxxZ2NnNGNPeTNjTVQ5V3RTOHRXclhtM2wxb3dlUGE1SmpSdDJreExoaTVkc3BpVTFCUmtTV0xmM3IxMDZSckNTMjNiTVhUNENFWU1HNEtmdno5NnZVNHJIdHpKR1A3SmsxNFU1UUkvNlI4bHBLWWtJNHB5anA1QWRjNmtCekpucVNuSjZFUXAxejdGWXY1eDNJajFKeXBTd2N2SEw4Zll5cFd2Y010RjZaNmVYcFFyWCtHdWpmZEJuQk1vc1gzSHJzclBOMjk2Z2l3MFJrNmpwaG8yQkZtV0hlNGJTTEtnZFhZNEs2UkNrVUF6RnF0ZHNGcGw3SklpeUtwWWk4NFdzMkNTS0FvZjNPNm9IaVh1OW51QmkrZi9KTGhXd1pzK0wwZFZKamE1a0h0dGJqYmNqTHhCUUtFa2doN0xPWmVYb3lzVG0zVC81eXkvTVRtOXlhajRRa1RHQjJDVGpLUStvc1F0NmVucFMxdTNicjBLVlE4aEdWWHdKZDBoK0dJVEJDUlJGR1NEWGxDTVJoR1RVYStZUFF5WXpRWTh6U2E4dkV6b25XR29rb1hKUTFFVVVSU0Y1dmM2Q2VwR1RuaDdLcmZGMTFVbThEeFI4ZFc1R1hrRGJ4ODNOWGhxU2pJcEtjblliUm1VQ1RpWGV5b2g4Q3hSY1UvZXR6bHpqa215cDFNMjhHeStIbmhSL3lTSytpYzk0cUk4U2tQZ3F5emhxTTdCOXFGV1J4RWNDK05CbGhWRlZwdDJGVWxTMUFxcFhVS2ZyU2tYQllTNHl6T3FjUWRpTGJlYkJIVWo1dzJnMTlsdjY0SVdSWm02bGM1d09ib3ljWWxXRXVMaXlNaDROQi8xWnJNbm9pZ1RVTmhHMmNmT0lRcEtudGRwdlVvbnVSSlRtWmdFeXoyZE03UFpFNTBvRWVCcm9XemcyUUwvdG84eU9hc2dDTlczcnU5YnZIWEh1WDlweGsxQmgrRElzWUVnS0tyTmttWFViZzVIWmRUNTBxdlUzOW5XaG5wN05MblRRUlh4VFNBaUljRnQyTzRBS1NtSmxQUzdmY29pVWJCVHZzZ2ZsQy9pbHQrN0hjTVI5TmhaZ2g1N09PVDMzSERGVTdXQ3FnRi9PdzJiQWpvaGF3RkJ6YlVwaXFOTlRYS3NSbkQwdHlFNnZEVUJiVzBvZ2s0VW43dlRBUlh6ajBPUkVvaTZlWTIwQjdDTzd0K0l0TlFVb2lLdWdwUklVYjkveHNYMmFEL3BINzQ1Y3h1MU80T3ZyMmN0MUtLQm5zd0NnaXIwb3RHcEtZS3NJRGk4TmtHV2xTd2VtNU9leU9HeERlclhUQ2NJQlArVEgvS3BTcGU0R2UvRHpmZ0FraE9OcEtTNmY2aTg0TzBGQnAyVlVvRnhGUEZOY2srSUcyNEFCcjJ1WWMzcXhRd24vb2pVWndsSFJRUkVCVVVBUVZBVXh4SXJ4Ykc0d0VHN0pza3lncGRaSjlqc2lpQ3AxVkF4K2Zyc3BwNW00NC91cVhYRERUY2VKSTZldU5MbnFlQ0pwOGhTSFJVRTBnR3JJQWcyUVVEV2FkVlJIUjRtdmVMaFljQnNOcUszUzFrV3ZpdUtjRE1xc2VIOTZveDN3dzAzM01qVGF6UG9LZ04vWmcxRkZRVlJFRkE3T0JDUVpRVzdCSUpOUmhEc2FzZ29nT0RoNFNIYTdYWkJVUlJSVVJTZDNXN2ZKQWpDOCs1cGRjTU5OeDRrN0hiN2JvUEJNREdMeDVZaUNFSXFZQkVFd1NvSWdpUUlncXpYNnhXajBhZzQ2TzRWczltTTZGd1hxU2lLOE9xcnIrb0VRV2pvbmxJMzNIRGpRVU92MTljdFc3WnMxc0tCVmtCd09HS3VWRVpaWG9MUmFCUWxTUklWUmRFbEppWTI5UGIyM3VXZVVqZmN1UDlRRklYSXlFaHUzb3hDa2lSU1VwSWYrVGs1ZGVwVTc3NTkrNTUxZW15T1Y3b2dDRmJBN3ZUYWREcWRvdGZyTVJnTWlzbGtRcCtWeWNMRHc2T3UrL0p5dzQwSFk5U09IVHVHZ3FDdGhuRHI4WUt2LzJQbGdRdGthZnR3a0U5cWpUU0NJQ0FJQXFLb1E2L1hvOWNiTWhlV0FvSk9wM3ZxMy9qbFEwTkRhZFdxVllIMlRVbEpRUkFFZHUvZWZjZm5xMVdyRnBNblQ3N1R2QUdob2FFVUtWS0V3b1VMMDd0M2IwMEV4WTFIRjVHUmtTZ0lGQzFXd3QzY25nVStQajZWczRXaG9wTjRNcXZ0VWhtSlpMV2ZUWkhWSEp0em5hZ2dDSFhjVTNsdk1XellNRFp0MnNTNmRldll0R2tUTzNmdXBGKy9mdTZKZWNRUkZSWHQxdVBOQlFhRDRRbHk1dGl5R1RVRmxXNU5RVkZrRkZuV2R1RDgrZk5GZ0VydXFieDNTRTFOWmQ2OGVZU0ZoUkVjSEV4d2NEQ0xGeTltNWNxVnhNVEV1Q2ZvRVlZa1NYZmtxWjA1L1FjRFEvdmY4L0dkT1hPYXNHbFQyTzVRS25OaTQ4WnZDT255RmlGZE83a0k4a1JIUnpQd2d3R0VkTzFFM3o3dmNmWHFGVzNiaVJQSDZmbDJON3FGZEdiMEp5UHoxV1lWQktIQ3lJOUhlZWRqM0FBRUhBc05uTTI2enFxb1VLSkVpU2YvS3hmSmQ5OTlSLzM2OVRHYnpYaDVlZEc4ZVhQT25YTmxldmpsbDErb1ZxMGFIaDRlTkd2V2pMLysra3ZiSnNzeVk4ZU9wWFRwMG5oN2U5T29VU1AyNzkrZjY3bWlvNk41NVpWWDhQUHp3OXZibXhkZWVJRUxGeTVvMndNREEvbndRNVZOOTlpeFk2U25weE1jbkxtdzQ5bG5ud1hnNE1HRDdydjdFVVp5OHAydE9xbGNwU3FqeG95OXAyT2JQMjh1eTVZdTRkTEZpeTVHNk9yVksyeFl2NTRGaTVheWJQbEtUcHc0eHBFajRZNWo1dENzMmY5WStma3F1blYvbXltVEptcXBtRWtUeGpIeWsxRjh0dkpMU3BVdW8ybG01SVZubndzdTRUQmtMb1NUanJCVVc0R2dLbGlwWHB2bTBoa01oditFWWZ2OTk5OTU1WlZYNk55NU0yZk9uR0hIamgzY3ZIbFRNeTVPekpvMWkwbVRKbkg4K0hHOHZiMXAxcXlacHJ3emNlSkVsaXhad3BJbFN6aDU4aVFkT25TZ2VmUG1uTTFGSERjME5CU0x4VUo0ZURqSGpoMURsbVZDUWpMMUJBWU5HcVJ4MDErL2ZoMmowVWhBUUVCV1Y1dUFnQUN1WGJ2bXZydmR5SUhZMkZnR0RRd2xwTXRiZEF2cHpPRkQ2Z1BRcWNuYm9YMWJRdnU3cGpLR0RmbEk5YUs2dkVXN2wxN2d6VGRlMWJaZHZIaVIwUDU5NmQ2dEM0TStHTURObTVFdXg2NzcraXVYL1FGNnZ0T0xzT2t6S1AvNDQ2NzMyb2tUUEZXM0xwNmVLc21xbjY4Zko0NGYxN3l5NTU1VEgrQ0ZDeGZtenovUFlMVmFpWXlJd01Oc0ppaW9IQUQrL3Y2Y09KNC96WG54WXNYS1pERnFqanhiMW5CVXlReEoxVHdiZWxCNzJIUTZYZlgvd29XZ0tBcWZmdm9wL2Z1cjdubFFVQkFoSVNFc1dMREFaYjlQUHZtRWR1M2FBYkJpeFFwS2xTckY1czJiZWVtbGw1ZzhlVExMbHkvWENoSURCdzVrMTY1ZHpKdzVNOGZuWEw1OG1kS2xTMU95WkVrOFBUMVp2bnk1aTVFYU5peVRQVGN0TFEwUEQ0OGNZemFaVERuazA5eHdBK0NydGF1cFVhTUdJZDNlNXRLbFM4eWZONGNHVHpmVU5IblBuei9IeFBIalhJNlpOR1Vhb0VwWTluNm5oNmEvWWJWYW1UaCtMT01uVHFaNDhlTDg5T05XRnN5ZngrZ3htY2ZYckZVcmg1NUhYc0pEaVltSmVIaDRFQjBkemFRSjQ1QmtDUjlIbmpBeE1SR1Rod2ZmYi9xT0hUdTJZVFFhU1VsSklTa3BDWlBKaE5WcVplNmNXZHk0Y1NPSHdsWjJlSGw3bDh0aTFCd0dUaEVkRkFPT1hqYWN0UUpGVVJSQjcyeHlFd1RoUDJIWWF0YXNTVUJBQU5PblQrZk1tVE9jUFh1V1gzLzlsYUpGWFl2bmpSdG5DcFVFQkFSUXZueDUvdmpqRDU1ODhrbFNVMVBwMXEwYmI3K2RLWlJzdFZwZGpuRml5SkFodlBubW13UUdCdEswYVZOZWZQRkZ1bmJ0bXV2WXpHWnpEalVoVUNYZEhvU01teHNQUCtyVmI4Q2NXVE1BZ2ZyMUd4QTJmVWFCanBObG1UR2pSOUhteGJiVXI5OEFVS1VocjEzN20rRkRCNnY3S0RKZTJmUUtLbFdxVEtWS0JkZEtQWDM2RDQ2TkdFcm9CNE00KytlZlhNeVNocGswWVJ3QmdZR0VUWi9KcXgxZWRqR0lBejhZd0lzdnZrU0hqcTh5WXRqUWZNOWhNQmdxWk11dDVjeXhvYUNBVmtEUVoyNmc2bi9oUWpoNDhDRE5taldqU1pNbU5HM2FsTmRlZTQzdzhIQ1dMbDJhNzFOSXI5ZGpOQm8xcmMwMWE5WlF2YnFycmMvTjIycmJ0aTNYcjEvbisrKy81OGNmZjJUNDhPSE1ueitmdzRjUGF5NjZFNlZLbFNJakk0T0VoQVI4ZlgwQnNObHN4TWJHVXJKa1NmZGQ3RVpPdzFhdlBuUG5MU1Q4U0RpZnIxeUIwV2hrekxnSnR6eHUyZExGZUhoNDBMbEw1a1BXWnJOUnJGZ3hWcXo4NHE2TXJYRGh3bVJrWkJBMmZTYUZDaFhpeEluakZIWmMxNFVMRithWlJvMDFrWE5WaHRLYlFvVUtrWlNZeUlTSlUzajg4Y2M1ZS9aUDdWN0lDNElnVk02U1c4dWFaOHRlUUZDY0JRUVJFS0tpb2lvQnB2L0NoYkJnd1FMcTE2L1AxcTFiR1R4NE1DMWF0T0RHalJzNUpQV3k1c3VTazVPNWVQRWkxYXRYcDN6NThwaE1KaTVjdUVDRkNoVzAxNkpGaTlpeVpVdXVIdHY1OCtmcDBxVUxxMWF0WXYvKy9adzZkWXJqamx4RFZ0U3VYUnV6MmN6ZXZabXE1L3YyN1VNVVJaNSsrbW4zWGV4R0RreWFPSjd3SStFMGIvNDh3NGFQNU5DaGd5N1NrYmxoMzc2OTdObTltK0VqUG5hUnFxeFFvUUpKU1VuOHNtZTNsbS83ZnBPclR1ajU4K2ZZdVBHYkFvM3R5Um8xc0ZxdG1Fd21KRW5pNElIOTFLeWxhcG5XcWxWYkcrZlIzMzRqS0tnY1JxT1JZc1dMVTlqWEY1UERzZGkzZDY5MlRENHdMVjY2UERBWGc2YjFzQUZaUERaSGpzM2IyN3ZDZitWQzhQZjNaK2ZPblp3OGVaS1NKVXV5YnQwNmxpMWJocCtmbjh0KzQ4ZVBwM0hqeHZqNitoSWFHa3JGaWhWcDNibzFvaWd5Y09CQXhvNGRTN0ZpeFdqWXNDSHIxNjlueG93WmJOKytQY2Y1enA0OVM1OCtmWmczYng0QkFRR3NXTEVDYjI5dnFsUlJCVzBtVFpwRTdkcTFhZFdxRlY1ZVh2VG8wWU8rZmZ2aTQrT0QwV2lrZCsvZWRPL2UvYjRwbnJ2eDcwTG56bDBKQzV2QzJ0V3JrR1daZ1lNK1FoVEZmQlhlNXM2ZVNVWkdCbjNlNjZWOXp0ejVpL0R4OFdIU2xHbk0vSFE2aXhZdXdOUFRrNEhaaEpTUEhUM0toZzNyYWQrK3d5M0hWclpzRU8zYmQrRGRYajFSVUhqMjJXQk5PL2o5UHYyWVBHa0M2NzcrQ3JQWnpKQmh3N1hJYVBpSWp4azNialEycTQzU3BVc3plT2p3VzU2clFvV0tqd0hYYy9mWUhEb2hHcmVrZ2lDS29vZkZZaG1nMStzbi8xdC8vTkRRVVA3ODgwOSsvUEZIWW1OajZkbXpKenQzN3NSZ01QRFVVMC94eGh0djBMTm5UNjVldllxdnJ5OCtQajVNblRxVmxTdFg4dmZmZjlPb1VTTVdMbHhJR1ljNnZjMW1ZOHlZTVh6MjJXZkV4TVJRdVhKbFB2bmtFenAwNk9CNEd0WGlqVGZlWU9qUW9VUkhSek5nd0FDMmI5OU9jbkl5ZGVyVVlkcTBhVFJxMUFoUTJ6MjZkZXRHV0ZpWWxrOExEUTFselpvMWlLSkl4NDRkbVQxN2RxNWhyaHVQRHZiczJlTldkOHNIY2JHeFlUVnJWTitPdW1iVStVb1RCQ0VEVlNsZUVrVlJYVE5xTUNpQ0lBaG11OTArVXhURlh1N3BjOE1OdDJGN0dKR1JucjY2WW9WeVgyUXpiS2xaREp0ZEVFUlpweE1WdmNHZzZCM0p1YUIvNnhlZU4yOGVmZnYyL1UvOGVKR1JrVG1xdHdXQkxNdGN2bktWdUxnNEpFa2lJLzNSWEh2cVlUYWowK253OXdzZ0tLZ00rUkdtS29yaW1MTlk3UFo3TjJjZVpqTjZ2WjRBL3dDQ2dzcmVjdi9yN243R1hDRkpVbkVjVGJsWlg0cWlwaEhWN2c0WldRYkpMaUVJZ3VBcHkvSlJvTEo3K3Y1OXNGaXNuRGh4QXAxZTc5WVZCVkpUVTBoSlRrS1M3TlNxV1F1ajBaQ3JVZnYxMTk4UWRicjdveXZxR0pNc1M5U3JXOWZ0c2QwQkZFVTVYNlpVOFEvSUpKMTBFazg2cWNMdGpuQlUwZXYxaXJPNlVOWTlkZjlPUkVSR29OUHIzYXdRRG5oNWVWTzBXQWwwT2owM0ltN2t1czlmbDY4ZzZuVDNiYzZjWXhKRkhWZXVYSFZmdEhjQVFSQktaL1BZc3YvZnBWbFhQSC8rZkZIQW5ibitseUkySnRiTkNwRUx2SDBLRVJNVG0rdTJ1TGk0QnpKbjNqNkZpSWwxa3gzY2FWVC95ZWd4M3VUWjh1SFViUUZRMEFjRUJCUjN6OW0vMVQyL2MxYUlSOEZ6UzB5SXkzWGJnNW96THk5dkV1UGo3dWpZcE1SRUx2OTFrZFI4dEhxOXZMd0pLdmM0aFFvWGZtRHpmaS9IV2JWS3RVSkFUQzdlbXZPT3dObjZvVGVaVEVYdi9nM25wamd1S0h4OENxSFRpUlFwVW9UaXhXL3ZHU01Ja0o3dUpxbk1DK2w1RUhnK3lPTEtuZjVlZjEyNlFGcGEvZ0s5cWFrcFhQN3JJalZxUFRoYXhYczV6c2VLRkNtVTNWdHpGQThFMTNCVVVmUTZuZTZ1R2pZM3hmSHRJelUxaFJzUmtkeUlpT0NwT25mM290eSs3U2RXTEY5R1ZOUk5TcFFvd2VkZnJ1SDgrWFAwNko3SlFESjArRWhlZUtHTis0ZDRpSEVyWTVIMVd2cXZqck5Rb1VLRnNoZ3daM091NEZnTW56V1NFZlNpS0Q1Mk43OVlWb3BqTndvZW9uaDVlUk4xTTRMSXlFaUtGU3QyVno3M3hvMGJUSms4a1RIakpsQ3ZYbjJTa2xUT3J3b1ZLcko5NTI0QTN1blI3WjU5citYTGx0THU1Zll1TkUzT2NjMmFNWjJUSjMvSGFEVFMvUG1XdlBkK0g0MVY0dHExYTh5Wk5ZT1RwMDVpTXBsbzBhSWx2WHEvbDROMTRtN2lWdWQ4cm5GRERBWURnaUFTRkJSRTl4NDlhZFNvc2Z2aXZZOHdtejBLdVJxMUhDL0gwa2tGVVJURmdMdDVjamZGOFQ4d2NONCszTHg1ODY1OTN0ay96eEFZR0VpalJvMHhHbzBFQmdZNlFsZ0Jod2FqeTFyQ3U0M1BWaXdqTGk1bkFuLzBxSkdVTEZXS2pkOXRadkdTNVJ3NmVJQk5tNzRGMUo2OG9ZTS9wRkxsS256NzNXYm16Sm5QbnQyNzJMamhtM3Myem9LZWMrNzhoWHkvWlN2ZGUvUWtiT3BrTm55ei9vRmNKNElnVUtkT0hWcTBhRUh6NXMwcFVlTDJuSWlEQi9ZVDByVVRyNy82Q2pNK0RkUFdkTnBzTnNLbVRTR2t5MXQwRCtuQ3ZuMlphNXJ6WThTOWQ1Rk1LcHUrKzVhaGcxWGFKWVBCbU4xakUzRVVEckpHakZhckZWRVFoTHU2U05HZHpQNW5ucHRka3Y3eDV4dy9mb3lYMjdaaDJ0VEpSRVpHOG5MYk5yemN0ZzByUDF0UjRNODRkUEFBbmQ5NmcrYk5ndW5SUFlRL1RwMXkyYjVuOXk1Q3VuYmloVmJQMDcxYkZ3NGRQS0J0NjlmM2ZWNXVxNGEySHd6b3o4dHQyOUQzL1hjMUl4SWMzSlN1SWQwd21Vd1VLVnFVdXZYcWNjNUJTaEFYRjRlZnZ6K2RPbmZHYURSU3FuUnBHalYrbGovL1BIUFA1djEyem1rMm0yblVxREhEaG85a3llS0YrZEphM3l1VUsxY09uVTdIdG0zYjJMdDNMelZyMXNSZ01PUnFzTFAvUHlNam5hbFRKakZ4MGxSV3IxMUhURXdNMjM3NkVZQ3RQMndoSXlPRGxWK3NadnFNV2N5ZSthbm01ZWZGaUZzUVBQSEVFOXBETmI4eFp2MDdKaWFHZDNwMDU4S0Y4OXJ2b05mckMrWGhxV2t2V1piUjYvV0lnTi9kblBRN3BUaDJRMFZLOGo4dnROU3FWWnR2TjIxaFFPaEFTcFlzeGJlYnR2RHRwaTJFZE90ZW9PTXZYcmpBeHlPSDgxNmZ2bXpadW8xWFgzdWRnUi8wSjhyaFRWNjVjcG54NDhZd1pNaHdOdi93RXkrOTFJNFJJNFpwYWx0ejVzN24yMDBxRThxTVdiUDVkdE1XNXM1ZkNJQW9pblRxM0FWZlgvV3krK3V2U3h6WXY1OEdEVlIyazhEQVFPYk1uWStIaDFtNzBJOGZPMGFOR2pYdjJaemZ5VG5yMVcrQTFXYlREUEw5UkdCZ0lEZHUzTkE4RkZtV2M1QThIRGtTem9oaFE3RFpiTVRGeGZGT2orN0V4Y1VSRVJHQnI2OGZKVXVXUktmVDBhcFZhdzRmUGdTb3JMZlBQdnVjNDNjU01CaU1uRHQzVnR1V0d5TnVBWE5qZVpKVkxsdTZXS01HUDNueWR3YjBWMWNSK2ZyNjhzV3FOWVIweStSRTFPbDB1WVdpdUlhaHFrY3JBdmM4Ymh3ME1KVFhPcllucE10YmRPMzhKbHMyZjYvbE5WN3IrQXJ0MjcxSTk1QXU5M1FNM1VPNmNQSGl4ZHM2WnR0UFAvSmF4MWQ0b1hVTFpzL0ttK0J2eDQ3dGpQNWs1SC9HdUc3ZXZJbmdKazFwMUtneEpwT0pWcTFmb0VyVnFteHpDSGtFQkFTeWZNWG5WS3RlSFZFVWVhbHRPMnhXSzMvL1hmRG0wejlPbmFKRjg2YUVkT2xFbGFwVmVTNjRTYTc3TFZ3d0Q3T25KeSswZWZHK2ZmK0NuRk1RQlB6OS9FbDVBTWw2bzlHSUpFa0VCQVRRdUhGalpGbkdaSEpsSGF0YnR4NytBUUdNR2YwSmd3WU9vUDBySGZEMzk2ZFlzZUxFeGNWeTZkSWw3SFk3NGVIaHBLU28zOEhKaUh2cTFFbUdEUDRRbzhsSVltS2l0czNKaUR0M3ppeU5FZmVmNHMyM09yTnIxOC9NbVQyVGNXTkcwN2RmZjZkM2xpT25LZ2lDZHo2NU5SY2pweGNFNGI0a3hENGFNb3g2OWVxVG1KaEFyNTV2VTdXYXluMldGNzN4dzRBV0xWdlJvbVVydnY1cUxaR1JFWStNMXhnWkdVbUZDaFZkM2l0VEpraWJBMjl2YjNaczM4YjQ4V05JU1U3Sk02eklEOVdmZUlKdE8zWVJFUkhCSngrUFlQbXlwZlI4eDVXSDRmT1ZuM0g0OENIbXpKbVBYcSsvTDkrOW9PZFVGSVc0K0RpOEgxRGF4Um1PN3QrL24xcTU4SmtKZ2tEdjN1L3h4dXNkS1ZPbXJHYWt6V1l6dzRhUFpQS2s4WTdmdFN5ZVpyTjIzUGZmYnlJOVBaMUprNmN4ZSthbkxwK1pGeU51WG1qVnFoWGUzdXI4T1BPQXAwK2Y1dlRwMDlvKzN0N2V2UHZ1KzN3UTJvODMzK3BFNWNwNUx5c1RSZEU3bnpCVU0ybzJtdzA5Y0Y4NXFRc1g5dVdKSjJ0dzhjSjV5cGN2bitkK2lZa0pUSjQ0Z2Fpb0tPeDJHNTA2ZDlYWU9NK2NPYzNNR2ROSlQwdWpTTkZpREIwMlFvdmhkKy82bWRXcnY4U1NrVUgxSjU3a2c0RWZhdm1IWFQvdlpPem9qMGxQejZCdnYvNmFsL0ROK25WcThscFJhTnJzZjNUcjN1T1czK1BJa1hBK25UNE5VUkFwV2Fva251Wk10dHo4eHRDOFdURDlCM3pBMGlXTFVCVDRmc3ZXaDg2d0ZTMWFsTWdJVjBOKy9mbzFhdGRXVzFIMi9yS0hWVjkrd1l5WnN5bFZ1alNnVmcxenU3bXlHenRMUmdaYnQvNUE2OVl2WVBMd29Iang0alJ2L3J4TG9ocGcvYnF2MmI3dEoyYk5tWGZmR2s1djU1eEhqb1JqTkJpb1ZQbitMN0cyV3EzWTdYYU9IajNxRE5GeWFHYWtwS1R3MFVjRDZkd2xoSE5uLzJUSzVJa01IVFlDUVJCNHV1RXpQTjN3R1VmdWJLNUdTMSs0Y0dITVpqTmp4MDFBRkVVc0ZndUZIZk9RRnlOdWZ2anhSelYzOTh3enozRDU4bVV0ZkhaSmUxeTh5T1JKRXhnN2JnSXJsaStsVE5rZzJ1VHRLWHRsTTJKWmpKcVFOV1JGQkR6djU0OFNIUlhGcVpPL1U2Vksva3prNTg2ZDQzL05uMmZaaXBYTW1idUFXVE5uWUxWYXNWcXRqUHA0QktHaEEvbjh5elU4ODB3amxpeGFvT1ZyMXE5Zng1dzU4MW41eFdvQWZ0aXlXZnRNSHg4ZlZuNnhtdEZqeGpGLy9seEFKZGJidkhrVEN4Y3RaY215ei9qdHQ5L1k5ZlBPZk1kbXNWaVlNRzRNbzBhUDVjdlZheWxUT25PcDdhM0dZTGZiaVlxS1l0MDMzN0wrbTQwUHpIalo3WGFOQmwyUlpleDJ1MmFFMnJ6NEVudjI3Q0k4L0RCMnU1MmZmOTdKSDZkTzBxSmxTMEJWVGhJRUVIVTZFaE1UdEJ5SklydXlGQmN2VVlKREJ3OWlzOW1Jam9wU3d5aVRpUzgrWDhuYXRhdXgyV3drSk1TemQrOHYxS2hSSXpNVS9uNFQzMjdjd016WmMrOGJBV2RCejJteFdEaDg2Q0NUSjAyZzk3dnZQeEN0aXVqb2FLMmFiVFFhOGZYMXpTR0ljdkhpQllLRG0vSldwODZNL0dRMFJxT0p1RGpYVlErSER4MWt4NDV0V2c5anJWcTFzZHZ0aUtKSVFrSThGeTllcEZMRlN0cTIzQmh4L3lsKysvVUlRNGVOb0VuVFpudzZjdzZuL3ppVmcrMDZ5NFBTbk0yb1pYMkd1cFQzOVlENWZ2d1kwOE9tWXZZd1l6UVo2ZE8zUDZVZHBJNTVvV2JOV2l4ZnRvUnQyMzVFcDlOanNXU1FuSnhNUW53ODN0NCtWSzJtNmhHODFMWWRUWnMxVTMrb3c0ZTQ5dmRWM3UzOVRwYW5pazltM3NIQjdsbTFXalV0RVI0ZWZvam5uMitKMmVHT3YvamlTNFNISDZacHMvL2xPYmFyVjYvdzJHTkZOT05jcFZvMTl2MnlwMEJqQU9nYTB1MnVYQlIzaXV3TnVsTW1UMlRLNUlrODM2SWxIMzh5bW9vVkt6RnF6RGdXeko5TFpFUUVaY3FXWldyWXB4UXRxdmJYdFg2aERhZE9uYVJIOTY3b2RIcmF2ZHllaWhVckVaZHR1ZERBZ1I4U05tMnEraVF1VTRhbHkxZGlOQnFaTWpXTXVYTm04ZFhhTlJnTUJvS2JOTldTeEpJa01XM3FaUFI2UFcrKzN0RTFUUHh5TmNXSzNmMFZnQVU5Wjc4Kzd5TUlLblBzb0E4SDM5VStOaDhmbndMdmUvbnlaWHg5ZlRWWngrUEhqK2RJNU5lc1dZdWFOV3RwK2FwQldaaHk0K1BqNk5XekI2VkxsMmJpcENrOFZxU0k5cnVlTzNkT3kzZjNHeENxZWE1NU1lSVdCQWNPSE1oejIydXZ2Nkg5UHlBZ2dJOEc1eXZzNHBGUEdPcXdjQ0tTSktFSDdzc2ROdWpEd1JwdGNFR3dkczBxN0RZN1U2Wk9SeEFFclgzQWFaNmRNQmdNK1BtcFQxaWIxVVp3azZhYTNGaCtpZCtzSVZMV1ZpNUJFUEo4WW1UTnIrVFZMRnFRTWVUSEUzWTMwYkpWYTFxMmFwM2ovWW9WSy9ITHZ2d0ZtaHMxYXB6bmpXc3ltUmo1OFNpWDk5N3AxVHZIZnZVYlBNM1g2emZrZUw5Q3hZck1uRDAzMTgvVzZYVHMyWHZndmhyNmdwenpWdk4xTjhhUW1wcFNvRllwNStxZU80V2Zuei9yY29rV3NodkFyQWdNREN5d1F0YmRSRUJBZ0ZaaHo4VldDZG50Z1NDQVRxZTJlenc0MXlGZmR6c0dieDl2QkVIZytQRmpKQ1Vsb1NnS3BjdVVJVGs1bWZQblZXWDNuMzdjU3RpMEtRRFVxMStmbjNmdTVQcjE2d0RzM0xtRGt5ZC96L2M4ZGV2V1ovdTJiYVNucDJPejJmaGh5MmJxTjhoZldLVnMyU0NpbzZPMW5FRkVsdHpCbll6aG44QnM5c1NOMjV1YkJ6bG5lWjI3U0pFaXBPV3pwdHJUczJBaGIwSDN1MWU0eCtNMDV1S3BDVW8ycjgwWml1b2UxQ1RrSjBqeDJtdXZNM2JNS0g3WXNvWEtWYXBRb1dKRkVoTVNDQXdNWk15NDhYd2FOZzJMeFVMZ1k0RU1HVHBDRFFtclZLVmYvd0VNSGZ3aE5ydU5ja0hsR0R4MFdMNWplS3B1WFZxMmFzMjd2ZFNDd2JQUE5hRnBVelcwM2ZiVGp5eGRzcGlVMUJSa1NXTGYzcjEwNlJyQ1MyM2JNWFQ0Q0VZTUc0S2Z2ejk2dlU0ckh0ekpHTzdYay81UlFtcEtjcDVldGZpQTVpdzFKUmxkSHBYVzRzV0xFeEVSUWZUTkNEeTlmWEtNclZ6NUNyZGNZTzdwNlVXNThnOVdsK2tlajFPWG04ZVdXOTVOVUc0VmQ5MG1qaDQ5U3BGaWJvM01PMFZVNUhYcTNNWkMrTXVYcnhBYkYrZGVtNXNOTnlOdkVCZ1lRTmxjY3JtWHIxd2hOdmIrejluTnlCc0VCQVFRVkRidi9ISlVWQlNSa1pIWTdYYVNrOTJzT05uUnBFbVQ5a0FhS29OdUVwbWlMaFkwN1FOQnZ1dk5RVzRQNHA4OTBXKzNYNnRzMlRKRVIwY2pudHFQQUFBZ0FFbEVRVlJ4TS9LR214cmNNWWNwS2NsSWRudXVSZzBncUd4Wm9xTHUzNXc1eHlSTFVyNUd6Um1TRm5Fazg5M0lGZG5EVHNHWll4TUVRVjExSUlxQ29DaUtoTHBFNGE0Z0lpS0N5TWliUEZiVXpWOTUrOTdhRFVxVUtIN2I3QjZLb3ZEWDVTdkV4Y1VpMldVeU1oNU5qamF6MlJOUnB5TXdJSkN5WlV2ZmNvSC9sU3RYaVk2SlFiSkw5MnpPekdaUGRIcjlMVDAxTndvRVdSQ0Vqa0JxRm84dFJSQ0VWTUFpQ0lKTkVBUzdLSXFLb0NpS0ZURGM3WEJVRUhWNGVYbmo2ZmJjYm9rMGg5Z0hLTGNWaHJyaHhpTUdteUFJcjJjeGJNbEFzaUFJYVVCR1ZzT21CKzY2WWF0VHB3NDNiOTdrWmxRVXlVbUpiZ2JkZk9EdDQ0TkJyNmRVcVpMdUVNUU5OL0tIdGFBN09nM2JYYThSRnkxYTlJNDBNdDF3d3cwM0NtallsR3ovYWhDQmRQZDh1ZUdHRy84Q1pCVFlZN3R5NVlwYkRjUU5OOXg0NktFb1Nub3UzcG1pT0JSZG5KMXJpcUlvK3JKbHk2YTZwOHdOTjl4NDJDSExjbXFXMEZNemNObmJQUVJCUUZRVXhVMTU2NFliYnZ3YlBMYnN6SlpLdHY5cmYrdFJlMEhjY01PTkIzL2p1dlY0ODRIZGJrL0pZc0NVTEtHb2tqVVVsV1VadmFJb0NmZFNxY2dOTjl3b21GRno2L0htRDR2RmtweWJ4K1pxdnpKRDBiaEhiWUpLbFNwRnRXclZjaFdqOFBiMjVyUFBQcnVYVHgxQ1EwTXBVcVFJaFFzWHBuZnYzcG9JaWh1UExyTHE4YnFYSStaNTd5Umw4OWdVY21uMUFOV3d4VDZLazNUbXpCa21UWnAwMzg4N2JOZ3dObTNheExwMTY5aTBhUk03ZCs2a1g3OSs3cXYyRVlkYmovZldzRnF0U1ZrOHRWenlhNExLclNpQUtFbFN6S000U2VYS2xXUGl4SW1jT1hQbXZwMHpOVFdWZWZQbUVSWVdSbkJ3TU1IQndTeGV2SmlWSzFjU0V4UGp2bklmWWR5cEh1K1owMzh3TUxUL2ZYQUVUaE0yYlFyYkhVcGxUbXpjK0EwaFhkNGlwR3NubGk5YnFyMmZuOER5aVJQSDZmbDJON3FGZEdiMEp5TUxyTTJhbnA2V2pHdFRicmJxcU5OZkE5Rm1zOTE4RkMrazNyMTdVNzE2ZGQ1NTU1MThHWFBYcjEvUGswOCtpZGxzcG5yMTZpeGR1dFJsKzg4Ly8weWRPblV3bTgzVXExZVBzTEF3RjNIWXdNQkFQdnhRWmRNOWR1d1k2ZW5wQkFjSGE5dWZmZlpaQUE0ZVBPaSt1eDloM0trZWIrVXFWUmsxWnV3OUhkdjhlWE5adG5RSmx5NWVkREZDVjY5ZVljUDY5U3hZdEpSbHkxZHk0c1F4amh3SmR4eVR1OEN5M1c1bjBvUnhqUHhrRkordC9KSlNwY3RvbWhtM1FsSmlVbDZoYUk0VkNQcU1qSXlvVzZuTi9CZWgwK2xZc21RSkRSbzBZTkdpUmJ6NzdyczU5dG03ZHkrZE9uVmk5dXpadEdyVmlxTkhqOUs3ZDI5ME9oM2R1M2ZuNHNXTHRHblRocjU5KzdKbXpScCsrZVVYK3Zmdjd5THdNV2pRSUdyWHJnM0E5ZXZYTVJxTkJBUUVhTnNOQmdNQkFRRmN1M2JOZlhlN2tRT3hzYkZNbkRDT21PZ29CRkhrdmZmNjBPRHBoaTRrcmI2K2ZxeFkrVVZtdW1QSVI5eTRvVEk0SnlRazRPbmx4WnExNndCVkZXck9yQmtrSmlYaTcrZlA0S0hETkMwTGdIVmZmOFdHRGV1MS9RRjZ2dE1MbzlHb01WVTc4ZnVKRXp4VnR5NmVucDdZN1hiOGZQMDRjZnc0OWVyVjU4U0o0M3p3d1NEQVZXQTU2dVpOUE14bWdvTEtBZUR2NzgvUE8zY1VhQzV1UnQxTUxvQlJVd0QwRVJFUkVYbkp6Ly9YOGRSVFR4RWFHc3FRSVVObzI3YXRwbjNveElRSkUralJvd2U5ZTZ0OC9tWExsdVhTcFV0TW5UcVY3dDI3czNEaFFxcFVxY0swYWRQVXAyZmx5cHc4ZVpMVnExZTc1TlNjU0V0THc4UERJOGM0VENaVER2azBOOXdBK0dydGFtclVxRUZJdDdlNWRPa1M4K2ZOb2NIVERTbFZxbFNlbXJ5VHBxalhZMkppQXIzZjZhSHBiMWl0VmlhT0g4djRpWk1wWHJ3NFAvMjRsUVh6NXpGNlRPYnhOV3ZWeXNFOG5KZndrRk5nT1RvNm1ra1R4aUhKRWo2T1BHRldnZVVkTzdacEFzdEpTVW1ZVENhc1ZpdHo1OHppeG8wYk9SUzI4ZzY3VHp2YlBlUzhQRFZuTUNyV3JGa3ppdHRZZy9WZnc5aXhZd2tJQ0tCdjM3NDV0cDA2ZFlwbHk1Ymg3ZTJ0dlVhT0hNbUZDeGVRSkluang0OVR2NzZyUUUyalJvM3lQSmZaYk02MUVtdXhXQjZJakpzYkR6L3ExVy9BemgzYldmblpDaXdaR1FVV1ZKRmxtVEdqUjlIbXhiYlVyOThBVUtVaHIxMzdtK0ZEQjlNOXBBdXJWMytwcWJVNVVhbFNaVjdwMExIQTR6dDkrZzlHamhqS083M2ZwV2xUVjJXM1NSUEdjZm55WDRSTm4rbWlWSitZbU1qQUR3WlFyVnAxK3ZVZlVOQlRaVXdZUHpZdG4xQlVNM1NDb0Rib0Fsd0ZLajJLRjQ2bnB5Y0xGeTZrWmN1V2JOem9xdHhqdDlzWk5HZ1FiNy85ZG83alJGRkVyOWZuRUFUT0wxOVhxbFFwTWpJeVNFaEl3TmZYRjFCVnEyTmpZeWxaMGsybjdrWXVocTFlZmViT1cwajRrWEErWDdrQ285SEltSEVUYm5uY3NxV0w4ZkR3b0hPWHJ0cDdOcHVOWXNXS3VZU3Qvd1NGQ3hjbUl5T0RzT2t6S1ZTb0VDZE9IS2V3NDdyT1MyQzVVS0ZDSkNVbU1tSGlGQjUvL0hIT252MVR1eGZ5ZzZJb2YyY3pZSElXenkzbi9ha2VvMXg1bEMrZUZpMWEwTGx6Wi9yMjdhdUpDQU5VcTFhTmt5ZFBVcUZDQmUxMTRNQUJaczJhaFNBSVBQbmtreHc1Y3NUbHM3TC9uUlcxYTlmR2JEYXpkMittNnZtK2Zmc1FSWkdubjM3YWZSZTdrUU9USm80bi9FZzR6WnMvejdEaEl6bDA2R0NPaDJsMjdOdTNsejI3ZHpOOHhNY3V6YXNWS2xRZ0tTbUpYL2JzMXZKdDMyLzZ6dVhZOCtmUHNYSGpOd1VhMjVNMWFtQzFXakdaVEVpU3hNRUQrNmxaUzlVeXpVdGd1Vmp4NGhUMjljWGtDRy8zN2QyckhaTWZKRW02bnMybzVlR3RxZjBlZWtDUlpmbHlYb28randwbXpKaEIxYXBWWFhKZFE0WU1vVldyVm93ZVBacE9uVHB4K3ZScCt2ZnZ6OENCQXdIbzI3Y3ZzMmZQWnVqUW9iejk5dHNjT25TSUJRc1d1SVNWa3laTm9uYnQyclJxMVFvdkx5OTY5T2hCMzc1OThmSHh3V2cwMHJ0M2I3cDM3MzdmRk0vZCtIZWhjK2V1aElWTlllM3FWY2l5ek1CQkh5R0tZcjRLYjNObnp5UWpJNE0rNy9YU1BtZnUvRVg0K1Bnd2FjbzBabjQ2blVVTEYrRHA2Y25BYkRxaXg0NGVaY09HOWJSdjMrR1dZeXRiTm9qMjdUdndicStlS0NnOCsyeXdwaDJjbDhDeVhxOW4rSWlQR1RkdU5EYXJqZEtsU3pONDZLM0ZsMjAyVzBRdUhwdWlxdSs1ZW0yQ2dDSUlndUNka1pIUnoyZzBUbnhVTHBaU3BVb1JHaHFxdFdFNDhjVVhYOUMxYTFkV3JGaEJ0MjdkQUZpMWFoVVRKMDdrd29VTEZDdFdqSjQ5ZXpKeTVFanRTZmpUVHo4eGNPQkFMbHk0UU8zYXRXblFvQUhyMTYvWGRFVURBd1BwMXEwYllXRmhXajR0TkRTVU5XdldJSW9pSFR0MlpQYnMyYmtXRmR4NGRMQm56eDRlcjFqRlBSRjVJQ1ltNXRQYU5aLzRCVmRhOEJRbkxUZ3FiYmdraXFLczArbFZ3NWFVbE5URzI5dDdyWHY2Ymc4blQ1NGtMUzJOQmcwYWFPK05IajJhSDM3NGdmRHc4UHMyRGxtV3VYemxLbkZ4Y1VpU1JFYjZvN2xFeThOc1JxZlQ0ZThYUUZCUUdVUlJ6QzluNDVpeldPejJlemRuSG1ZemVyMmVBUDhBZ29MS3VnM2JIZUxzbjM4T2EvNi9KcWZKS2VTU0RqaWs5MFJKRkVWWnI5Y3Bla0NKajQrLytDajBza21TZE52eWR2bmRHQmN1WEtCTGx5NnNXcldLV3JWcWNmTGtTZWJObThmdzRjUEpqUGNManNqSXlOdW1VN2RZckp3NGNRS2RYbzlQb2NKdStiM1VGT0lUNG9uNUxacGFOV3RoTkJweS9lMSsvZlUzUkowT2I1OTdQMmVwcVNuRXhzVVJIUk5OdmJwMTg5MzN1cnVmTVZjY09uZ2dsc3lDZ1ZZNGNEQjdPRUpSQlFVRldaWVJCRUh3Qkl6L1orKzc0NXVvLy8rZmQ1ZGNkdmVtcFlXMkRGR2dTQUUvRkJGL2JCemdGMFVGUkN4WWtDRWdJaFFVRkdRclFnc2lVNUNsSUdKWkFySmt5aXBZaG15UTBxYnBidE9SY1hlL1AyNDBTZE5Tb0dYbTlYaEVhZFpkM25mM3ZOZDhQbG1XMVFOUXVKYnc3bXpxMUtsWXZIZ3gwdExTRUJ3Y2pMaTRPSXdlUGJwU2I2RTY3V0dKL3o3cXhvc1RleUVzdEx5WGRPMzZEZVRtNWo0VXdXUWZiMitFT3BIaGMzbHNsZCsvUTJvRjlBRXZZMkIwQ0VWTEFKZ0ZvV1NHSkVsT0pwTnhKTXFTY1JkYzYzZjNGaDhmait2WHI4TmtNdUhxMWFzWU0yYk1Bd00xQU1qT3luWU5UenN4cmM0TldWbk8rUjF5Y25JZXlwcHBkVzdJeW5iTkJOOURxdVVpN0ZzOGJGczk3SXNISW9PdTZKMnpMSHZldFlTUGwzSGN2UTlQUCttbTBXakJza3lGS1ltSHNXWWFqUmFNbFhFZG5MczBpOFZ5RmVYNzF4ejcySGgyRHdIY1pBUkJjQnpIY1ZhcjlYeEZveE11ZXpTTklJQ1NFaGVYVzBWV1VnSFAzY01zcnR6cjhTckl6OGVONjFkUlZHU3NGRGpENm9URHpkMzlvZjIrbXRoUG83SHdwaE5BSytleEVVU1o3b0ZNZktHa3BPU2NDOWdxODQ1NDJtYUR3UUFydzhCWVdEMjB6VnF0RGpLNURINit2Z2dNREt6Mi9kNjFjd2VXTDFzS2d5RURRVUZCV0xscUxTNWZ2b1RZL3Yyazk0eU5uNEN1WGJ1NUR2SWpiTmV2WFVGeGNlWDBQa1ZGUnR5NGZoV05telo3b3Ziejl1MjAydzZBeGdCZ2hhSkJ1WWNJYkFEQVhicDA2VngwZExUckRLb0ExSktUa3dHQ2hFYXI0Mm1iQTZydis0dUtqRWpYWnlBOVBSM05tbFhmU1ptV2xvWVowNmZpeThsZkl6cTZCUW9LZUdxY2lJaEk3TnE5RHdBd01QYjlHbHUzWlV1WDRQWHVQZXpZVE1UOW1qdm5HNlNrL0FPYXB0RytReWNNL21pSU5IeWRtcHFLaExsemtISTJCUXFGQWgwN2RzS0hjWU5SazAza2Q5cm1pekV2UUM2WGd5QkloSVdGb1gvc0FMUnVIZlBBenNFN2dZWHR1ZlF3clNiMmMvKyt2UmtDYURFaXFObDdiYnlYQmx1VktoSGxXclpzbVFYZ3Nndkd5cHRlcndjSUVuNytnVFdTbTlGb3RQRHpEd1JBSUQwOXZkcSs5K0svRitEajQ0UFdyV05BMDdURUUwY1FCQlFLQlJRS0JXcFM3K0xINVV1UmsxTStnVDlwNGdUVUNnN0diNzl2d2FMRnkzRDB5R0VrSlcwQ3dQZmtqUjB6R3ZYcU44Q20zN2NnSVdFQjl1L2JpOTgyL2xwaisxblZiU1l1V0lqTlc3ZWpmK3dBeko0NUhSdC8zZUM2T0dyZXFiZ3ljOGEwa3NyQ1VJSVFRbEhZaDZJUTNzQ3lMSHVLSk1sSTEzTGFtOEdRQ1kxV1YrUGIwZWpjWURBWTdqc2tQWDA2R1pPK21BQ3oyWXppNG1KMGY0MFBNM3U4MFJQOTN1OWZwZTg0ZXVRd0VoUG1RYTlQUjJob0dFWjk4aWthUGZ1czdWMFV5NVl0UWFiQkFQK0FBTVRGRFVhckYvNEhBQmcyOUNQY0VoaFRSMzQ4SERJWmhlRGdFQ1F1V0FpV1pkRzJiVHQwZStVVktCUUsrUG43bzNsME5DNWR2QWlBcjFoNmVubWhkNTgrb0drYXdTRWhhQjNUQnYvK1czTkYrN3ZacGtxbFF1dldNWkRIVDhERUx5YWdVK2N1angwekM4TXdPSHIwQ0xZay9ZNGhRNGNqT0NRRUFEOGtQL2U3YjVIeXp4bVFKSVhZZ1I4aUpvWW5RczNNek1TMHFWT1FuWjBGbmM0Tll6NGJpOXExUXl2ZERrRVFpSXFLZ28rUEQxaVd4Zm56NTVHV2xsYmwvVnp4NDNMOHNYM2JPV2RoS0FDVzR6aTJMTDlHY0NBSXZrRzlvRUFxSGdBQVo3RllraFVLUlM4WGxObWJsYkUra0NxYVJxT0ZzU0R2dnIrbmFkTW9iRXJhaWgxL2JNZktGVDlpOWRxZjcrcnpWNjljd2VjVDRqSHBxeWxvM2p3YWUvZnN4cWlSdy9IVHFyWHc4L2ZIelpzM01HWHlsNWc3Yno0YU5HeUlUYjl0eFBqeDQ3QjV5M2FvMVdva0pDNlF3cmM1YytjaE1yS01PSVlrU2ZUdTA3Y3NKM1A5R2c0Zk9vU1BodkMwVVQ0K1B0TG5SVy9xZEhJeVh1L2VvOGJXL1Y2MkdkMmlKY3dXQ3k1ZHZJaW9aczBleWZPV1pWbXA5Y2oyM3g4UEg0cGF0V3Jod29YellHd3F4OXUzYlVWcGFTbFcvTFFHT1RrNUdQUmhMQm8zYmdJM056ZUpFZmVWVjEvRGlSUEhNV1BhVk16Ly9vZEt0MStuVGgxUUZJV2RPM2RDb1ZEZzVaZGZSbVptSml3V2k5Tjl0UDA3SmVVZjdOKzNGN05tZjN2bGhWYlJqbUdvYlk0TklvQVJBamhydFZxKzNVTk13aFVVRkp4eXdWaDVxNjVDUVpXMlpUUSs5Tis3WlVzUzJyN1VEcTFieDBDaFVLQnpsNjVvMExBaGRncDg5OTdlUGxpMmZDV2VhZFFJSkVuaTFkZGVoOFZzeHExYi8xVjVHK2ZPbmtYSDl1M1FyMjl2TkdqWUVDKzJmY25wK3haK1B4OHF0UnBkdTczeXdINS9WYlpKRUFTOFBMMWdMREkra3VmczhlUEhNSDdjWjdCWUxNakp5Y0hBMlA3SXllRUY2YjZkTXhmajRpZVV1MW1mT1hNYWJkcThLTnlBQ01qbE5DNWR1aWk5OXVLTFBLVzlMU1B1blc0WW9vZkdjZnhFZ0tlbnA5MTdsaTVaSkZHRHA2VDhnNCtIOHplNEs1Y3ZvV2xVRkc3eHJyK3R0OFk0Q1VmQmNad0VjSEk1YmRlZ3k3MzExbHVud0hmMnVxd1NPM1BtTkRwMWVCbDVlYm1TaDlPdjc3dFBWRTR4TU5DK0s3OTI3VERvOVh6K1Q2dlY0dVRKRTRqN01CYTkzK21GOTkvckk5MXRxMnFObm4wV08vL2NpNS9YYjBSNmVycWRFSWhvSzFmOGlMLy9Qb3FwVTZkWDJ5amNuYXlxMitRNERqbTVPZEErb2oyRXpadEh3OHZiRzE5TytnS2ZqUG9ZUGQ3NFA0bEI1azZNdUdmUHB1Q3pNYU5CSzJqazUrZExyNG1NdUlrSmN5VkczTXFNcG1rd0RBTnZiMi9FeE1TQVpWazd3a2tBZU9mZFB0aTdkdzhTNW4ySHlWOU93dEJodkRCTjNmQUluRHh4M0RoMHlFY1pEaUdvSGJBSllGWk8xSVVVa3NjY0FIYi8vdjBzeDNGSFhkQjFaeXNwS2NHYTFhdWZ5Ti9tNys4UHZVTVI0L2J0VklrYi84QmYrN0Y2MVUvNC9QTkpXTDMyNXdwRFhZSWd5b0dkcWJRVW0zN2JDRk1wVDlvY0dCaUk5dTA3NE15WjAzYnYyN0QrRit6YXVRTnp2a3Q0WUgxWmQ3UE40OGVQZ1piTFVhOSsvWWR5ZkRwMjdDZzlIRm1jeGJXUGl4dU1VeWRQUUVFcnF1enhidDZjaE9YTGxtTGE5RmtJZGNpaFZjU0llNmR3dEdIRGhqaDA2SkJVbGJjMXJWYUxRWU0rd3ZwZmZrYTdsMTlHL2ZyOFdGbVRKazNSdmtPbmt3WkRSbVdneHBiTmlZckJLSy96UU1LZU41eTFXcTB1WUt2aUFkdTdaN2ZrM3R2YXZyMTc4T0hBRDlDdjc3dVlPV09hbEZOSVMwdkRvQThIb1BjN3ZUQnI1blFwcWY5UThvWldxMFNxeWJFc3JGYXJCRUxkWG5rVisvZnZ4YkZqZjhOcXRXTFBudDA0ZHpZRkhUdDFBc0FMakJBRVFGSVU4dlB6cEZDQ1krM0pUQU9EZ25EMHlCRllMQlprR2d6OFhWeWh3RThyVjJEZHVqV3dXQ3pJeTh2RmdRTi9vWEhqeG1XaDhPWWtiUHB0STc2YmwvakFlT3FxdWsyVHlZUy9qeDdCOUdsZkkyN1FSdytsY0pDUmtZR2RPM2RLRDJkTU1rYWpFWjkrT2dwOSt2WkRRRUFBWmt5ZldpbTdzeGhpZW5oNFlOYnNiK0hsNVFXVHlRUjNBZUJGUnR4aHcwZEFMcGRMakxpVm1kbHNoc2xrd3NHREIyRXltVUJSVkRsdGo2dFhyMkw2dEsveDFlU3ZjZlRJWVd6ZHVrVjY3ZFZYWHp2ckpBeGxiSE5zb21OR0VJU1VxM056ZDRkTUtJOXlvbHRYV0ZoNHpFVjZlR2RUcXpYbzJLa0xWcTlhaVM1ZHlnRHErdlZyMkxCaFBSSVNGa0NoVkdMbWpHbll0blVMWHUvZUEzUG5mSVAySFRxaTU1dHY0ZGpmUjNIbzRJR0hzdStPRGJvenBrL0ZqT2xUMGFGakozeit4U1JFUnRiRHhDOG40L3NGaWRDbnA2TjJhQ2htenY1Vzh0aTZkTzJHczJkVEVOdi9QVkNVREs5Mzc0SEl5SHJJeWJVSCtWR2pSbVAyckpsWXZtd0phdGV1alNYTFZvQ21hY3lZT1J1SkNYUHg4N3Exa012bGFQdFNPL1I3bjZkZlp4Z0dzMmJ5WWVBN3ZleTU5MWV1V29PQWdPcHZZcTdxTm9jTitRZ0V3Uk1zZmpKNnpBUHRZN3RidTNyMUN0cTJiWWQzZS9lQjFXckYzTy9tSUNjbnAxeFBvYTAxYlJxRmMrZk9naVJKNU9YbDR1clZxNmduRkg0cVlzU3R6REl6TSszQ1h3OFBqM0xDTFNkUEhNZlljZVB4ZlBQbWVLNXhFeXhidWhoZHUzWURRUkM0ZHYzYXRZcEFEUTVUQnlSSlFTYWpZRFlERkVtVlRSNklIdHRISDMxMGROMjZkZmtBM0Yzd1ZibTk4WDg5MGE5dmI0azFGQUQrL3Zzb1VtLzloMEZ4QTZXN2xsWm9GVWxKK1FjVEJVV2c4SWlhNzZycDFMa0xPblh1VXU3NXlNaDYrT3RnNVRxbXJWdkhWSGpoS2hRS1RQaDhvdDF6QXorTUsvZStGaTFiNFpjTkc4czlIeEVaaWUvbUpUcjlib3Fpc1AvQTRRZDZIS3V5elR1dDEvMmFUbGU5N1VSTm1qUkZreVk4NWJaTUpzTW5Ea3k1enF4TDEyNjRkT2tTK3ZmanE5YkRQaDRoaGVRVk1lSldaamR1M0lDSGh3ZmF0MjhQQURoOStuUzVnc05idmQ2Vy91M3Q3WTFQeDR5VlVuNXhBMk5UbllJYVFiRGdPSllUakNSSmppUUpqaUJJYUxWYUxqYzNoL2ZZYkhPaXYvenlpM1hObWpVSFNKSjh4UVZkRlJ0QkVGQ3BWSGlqWjArc1dsVW1qbUV4VzlEMnBYYVM1Smxqd3JrbUcySmQ5dmdhUlZFb0tqSSswT0Y4eDl4b1pRRG80K05UWllVczIvTTlPVG41bnZiTllySDhyZGZyYmNOUXF3aHVCQTl1bkRSbFFKSWdDQklrU1lCV0tPRHU3c0VYRHh4bXJsaUx4WExRZGFyZEdkZ0FvRWYzTjNBNzlaYjBmSFNMRnRpemU3ZEVEYjU3OTU5SVNmbEhjdWUzYjl2S2g0TkNHZjErVGFWU3V3N0dYYTdOdzF5emlyYnQ1K2VIWW1OaHBhbVBxcVpJSG5hS3BqcmVsNXViKzA4bFlhaERLQ3FNVXBFa1NJSUVTWkpTVlJSQ0lvNEZ3R1ZrWkxpQXJZcW1VQ3JScDI5WnZxcEJnNFlZTnZ4ampCMHpHbS8zNm9rL2QrNUFjSEF3QUdENGlGSFl1ZU1QOUg2bkY3WnQyd3F5R21ZZnhUdTl5K3l0eUZoWTRXd3ArWkRXck1oWUNLcUNGcExBd0VCd0hJdk1qSFNuKzFhbmJzUWR3VUN0MXFCTzNZaUh1dTdWdForblRwNjQ2Z1RVeEVlWm1BdEI4SVVza2lnRE5aSUVvVktwQ0t2VlNyQXNTM0ljUjNFY0p3ZWdZRmwySDRCblhaY0ljUExVS2ZnSDNML3U1NFVMNTFHclZqRGMzTnl3Wjg5dWJOKzJGYk5tZjJ2M25nejliVHgvRjUzc04yN2NSSGFPaTBIWDBUTDBhZkR4OFVabzdmSnN0UStMZFpobjlmVkdtQk1HWGRFTUJnUDBlajJzVmlzS0gyQmorS05rSE1lZGI5ZXUzU1R3SWkyMjRpMUZBSW9KZ2hBMERnaUdJQWlXSkVtT29palFOTTNSTkEyRlFnRVpINTlLZVI4cEhMVmFyWHRrTXBrTDJBRElxaW4vVVZwU2lqR2pSL0hLNzFvdFBoczdydHdkWFM2WDM5VjNob2JXUm1hbUFSbjZOR2gxYmk3TkEyTWhqTVpDTUZhclUxQURnTERRVUJnTUQyN054SDFpR2FaU1VCTkRVajgvdjZmNkdCWVdGdjROSjdrMUFJd1lWWXF0SGhSRlFTNlhnNlpwS0pWS0tKVktxRlFxRUZxdGxyQllMQVRETUFUTHNoVEhjUlFBT2lzcjYyVXZMNitOTGxnRDB0UFRrYTdQRUJnNGFzNE1HZWtJRFBDLzZ5RjRqdU53L2NaTjVPUmtnN0d5S0MxOU9za25WU28xU0lxQ2o3Y1BRa05EN2xpb3VYbnpQMlJtWllHeE1qVzJaaXFWR3BSTWRrZFB6V1ZsZHVMRWlVK2pvNk92QWloR21jYUJrU0NJSXNHTE13djZCZ3hGVVp4Y0x1Y1VDZ1dVU2lXblZDcWhWcXRCdUxtNUVXYXpXUVEyMjNCVXliSnNNb0JhcnFVR1RwMUtCa0VRMEdoMVVGZnpIYjY0eUFoallRRUFybHI1MkZ6bXNzY3dERTBqU1hLa1RSaHFDMndsQUVvSmdyRFJFS1U0bXFZbFlGT3BWRkNyMVh3b1NwSWt4ekNNYlNqS0FXQVlodGxCVWRRSHJ1VUdtaldMUW5wNk9neUdUQlFXNUZYYnNMcE9wNE5NSmtOUVVDQUNBZ0pjQysyeXA5cEtTa3IrZ24wMTFDNFVkY0Fvb1llTnh6Q1NKRUZSRkNpS0tzdXhpVzBmd2xBcEM0QXRMQ3o4MDhQRHd3VnNnZ1VHQnRZSWZiZkxYT1l5M3E1Y3VYTEdBZFNzQUt3RVFkaTFlaEFPZld3aW9Jbi9Kc1h5cURoblpkUFR4bnA1ZWYwSjRMWnJ1VjNtTXBjOWlEQzBTWk1tMXdYd3NqbzhHRnRRQXdCYjdMSUZONHFpSUdOWmx1TTRyb3h0MHNaakE4QmV1M1p0TzBWUkExekw3aktYdWF5R3c5QjlqcDZhQTZpSnpMbWNHRjBLUEc4Y3d6QmdHQVpXcXhVV2l3VXloVUloa3JSSjAvOEMyTEVBR0hkMzkrM2UzdDR1WUhPWnkxeFdvM2I4K1BIa1NzSlFpZEZEOU5Ca01obmtjam1Fd2dIRXdvRldxd1ZwRzV2YWNMTko0YWl2cis5QnVGVGlYZVl5bDlWc0dIcXhSWXNXL3ptQW1nVVZNSG80NXRha0VGUW00eDgyRlFXQ0pFbU9aVmxDaUdGRnNRVEdiRFp2cG1tNm9XdjVYZWF5R3IyNG9kZnJrWkZoQU1Nd01CcWZuc21Ed3NMQ2ZiQnZ5cFVlSE1lSmpia2l3U1JZbHVVc0ZndHNkQS9BY1p3VWpzcHNQVGJCYStPSU1vVVhGZ0NUbHBhMkxTd3NiSXpyMUhPWnkyb08xSktUazhHQmtLWWgvSitpMzc5enh4OW5uSGhyVnZEVEJuYkVraVJKY3BSTUJscE9RNkdnb1ZBcW9WS3FvRktyb0ZGcm9OUHB5a0pSVzNCekRFZnIxcTE3bm1YWm5VL2FZaVltSmtLcFZEN1FiVnF0Vm93WU1RSitmbjV3ZDNkSFhGd2Npb3VMWFZmMlUyNTZ2UjRjQ1BnSEJEMTFZM0ZXcTNWdjdBZnZaOXNBbThYQmF5c2Zob29ENzdaaEtDV0RUQzZIWEM0SEtaUEpSRkRqYkR3MnpvYnRnd1hBRkJjWEo3bE92L3UzY2VQR0lTa3BDZXZYcjBkU1VoSjI3OTZOWWNPR3VSYm1LVGVESVJOYW5kdFQrZHZUMDlNT09RbEJMYWk0ZjAxb3hpVTVpaFNBVGNibjErUXlHZVEwWFJhS09oWVJDSUt3YS8xSVNFallQRzdjdU04QWhMaE93M3V6b3FJaXpKOC9INnRXclVMYnRyeVUyYUpGaTlDeFkwZk1tREZEVW1wMzJkTm5ETVBjazZkMjRmdzVMRjcwQTc3OWJsNk43dCtGQytleGRjdG1OR25TRkIwNmRwS2UvKzIzWDdGcDQ2OEFRYUJ0MjNiNElKWnZvS2hNWVBuTW1kTkltUHNkckl3VllhRmhxZGV1WDcvZzRLMUpZYWlJUDQ0TnVTUkZnaVFkdkRXaFNrclRkSm5IWmh1S2l1R29qZGZHakI4L3ZzUmlzZno2dEoxd2E5ZXVSWk1tVGFCU3FWQzNibDNNbTJkL0F1M1pzd2ZObWpXRFNxVkNkSFEwWnMrZWJRZFFQWHYyUlBQbXpRRUF5Y25KS0NrcGtVQU5BTnEwNFpXMmp4dzU0cnE2bjJJckxDeTRwOC9WYjlBUUU3Lzhxa2IzYmNIOFJDeGRzaGpYcmw1RlVWR1I5UHgvLzkzRXhnMGI4UDBQUzdCMDJRcWNPWk9NNDhlUENaL2hCWlpYckZ5TjkvdC9nQm5UcGtxcG1HbGZUOGFFTHliaXh4V3I0T1BydDJQdm50MFdaOTRhUU5oWFJFVndJMGxRdHVOVEFxako1SExJUmRvaXNUd3F2SW1qS0lwZ0dJWWpTUklNdzBoNU5nRFdXN2R1YmFwYnQrNklwK1ZrKyttbm54QWJHNHR2dnZrR25UdDN4bDkvL1lYaHc0ZERyVlpqd0lBQnVIcjFLcnAxNjRhaFE0ZGk3ZHExMHV1MnlrVTllL1pFYmk2dlAzcjc5bTNRTkcwbnFDR1h5K0h0N1kzVTFGVFgxZTJ5Y3BhZG5ZMnBYMDlHVnFZQkJFbGk4T0FoYU5ucUJhU21wbUxVaU9Hd1dNenc4UERFOGhWbDlQVGpQdnNVYVduOHdGQmVYaDdVR2czV3Jsc1BnRmVGU3BnN0Iva0YrZkR5OU1LWXNlTWtrUjRBV1AvTHo5aTRjWVAwZmdBWU1QQkQwRFNOMmJObTJPM2JQMmZPNFBubXphRldxMkcxV3VIcDRZa3pwMDhqT3JvRnpwdzVqWkVqUHdGZ0w3QnN5TWlBVXFWQ1dGZ2QwYk03VllHM1ppVUlNYjlHY0FEQkVRQkhrQ1JIa1NSSWt1S2tTRk1NUXdWdlRhRlFsZ0diVGE3Tk5oeTFteDJOaUlpNFlMVmFONUlrK2NiVGNGSjk4ODAzK09DREQ2UWNXR1JrSkc3Y3VJSEpreWRqd0lBQldMaHdJUm8wYUlCWnMyYnhkOC82OVpHU2tvSTFhOVpJMy9IMjIyVmlGY1hGeFU2TEZRcUZvcHdzbWN0Y0JnQS9yMXVEeG8wYm85LzdIK0RhdFd0WU1EOEJMVnU5Z09EZ1lQeXlZU011WDc2RXFWTW0yMzFtMmd6K2ZNelB6MFBjd0ZoSmY4TnNObVBxbEs4d1plcDBCQVlHWXNjZjIvSDlndm1ZOVBqTzdyUUFBQ0FBU1VSQlZHWFo1NXMwYlZxT2VmaE9Bc3VabVptWTl2VmtNQ3dEblpBbnRCVlkvdlBQblpMQWNrRkJBUlFLQmN4bU0rWis5KzJXWlVzWFp6bDRhcmJnSm9TaDRQaUhXRFN3U1ovSnlydzFXbWpXVmFtVUlPVnlPUnk4TmpnT3hndTlJZ3dBSmk4djc2a0pSOCtmUDQ4WFhuakI3cm1ZbUJqODk5OS9NQnFOT0gzNmREbXgydGF0VzFmNGZTcVZxcHhLRDhCclZUNE1mVXFYUGZvVzNhSWxkdis1Q3l0K1hBNVRhV21WQlZWWWxzV1hreWFpMnl1dm9VV0xsZ0I0YWNqVTFGdUlIenNHL2Z2MXhabzFxMkRJeUxEN1hMMTY5ZkhHLy9XOGkydmtIQ2FNSDR1QmNZUFFydDMvc3dmWUNnU1c4L1B6TVdya3gvQnc5empreEZ1ekxScEliQjYydVRXS3NnbERaUlJrTXJtTnQ2YUFTcVdHVEFRMnNXdFhERWNwaXVJRUhVSGIyVkhHeDhkbkQ4TXdod2lDYVAya24xUXFsY3JwQ1NQK1h5YVRsVk02cjB5VU5qZzRHS1dscGNqTHk0T0hod2NBd0dLeElEczdHN1ZxdVdqdlhPWUUyS0piSUhIK1FodzdmZ3dyVnl3SFRkUDRjdkxYZC96YzBpV0xvRlFxMGFmdmU5SnpGb3NGQVFFQmRtSHIvWmk3dXp0S1Mwc3grNXZ2NE9ibWhqTm5Uc05kT0s5RmdlV09uVHBMM3FKV3E0V2JteHNLOHZNeGVjcTBveSsvMU9aNkpkNmEyTHZHbG5WcENHRW9qMUdTUXlhWHlVREw1YUFWQ2lpVktxZzFhcEEwVFVNdTlINVVFSkxhRlJFQVdJdUtpbjUrR2s2cWhnMGJsa3ZxSHo1OEdJR0JnWEJ6YzhOenp6Mkg0OGVQMjczdStMZXRSVVZGUWFWUzRjQ0JNcUhrZ3djUGdpUkp0R3JWeW5VVnU2eWNUWnM2QmNlT0gwUDc5aDB3TG40Q2poNDlVdTVtNm1nSER4N0EvbjM3RUQvK2N6c1c0WWlJQ0JRVUZPQ3YvZnVrZk52bXBOL3RQbnY1OGlYODlsdlZnckxuR2plRzJXeUdRcUVBd3pBNGN2Z1FtalRsdFV3ckVsZ09DQXlFdTRjSDhuSnpkMWZrclFHRUhac0hRTmg0YkdWNU5jck9XMU5BcVZCQ3JWWkJxOUZDSmdKYlJVVUVtN1lQYVJLaGZmdjJ2eDQ1Y3VSRGdpQWVlMDBFbG1YeHh4OS9sSHUrYmR1MmlJK1BSOCtlUGZIc3M4K2ljK2ZPT0hqd0lPYk1tWU9KRTNteDRLRkRoMkxldkhrWU8zWXNQdmpnQXh3OWVoVGZmLys5WFZpNWJ0MDY1T2JtWXZEZ3dkQm9OSWlOamNYUW9VT2gwK2xBMHpUaTR1TFF2MzkvU1RIYlpTNnp0VDU5M3NQczJUT3diczFxc0N5TFVaOThDcElrN1lvSCtmbjVlS3ZuRzJqMi9QTVlPMjQ4RXVkOWg5TFNVZ3daL0tIMFBZa0xmb0JPcDhPMEdiUHczYmZmNEllRjMwT3RWbU9VZzQ1bzhxbFQyTGh4QTNyMCtMODc3bHRvYUJoNjlQZy9EUHB3QURod2FOT21yU1FlWHBIQXNrd213N2o0Q2VkZmU2WHIyUXE4TlF0QmlLQW1GQTBJOE40YVJZSWlLVTRtVlVMbFV0OGFyYUNoVkNtaEZpWVBpSjQ5ZXlJL1B4K0ZoWVVvS2lwQ2NYRXhTa3BLWURLWkNKUEpCQnM5QkpMak9Ca0FPUUJsVVZIUkFKVks5ZlhqZk5Ja0ppWlcyQng3L2ZwMWhJV0ZZZG15WlpneFl3WnUzTGlCc0xBd0RCOCtIRU9HREpIZXQyUEhEb3dhTlFwWHJseEJWRlFVV3Jac2lRMGJOa2k2b2oxNzlzU05HemR3NHNRSktaODJZc1FJckYyN0ZpUkpvbWZQbnBnM2I5NERuNEJ3MmFObCsvZnZSM2hrZzZmaXR4b01obStmajJwOEJEejl0NmhyWUFSUEJWNUNFRVFwRDNDRWxWZWhvamlaVENZcVVIRzJUQjRhclJZNm5RNmVucDd3OGZGRlVGQVF3c0xDUVBUdTNSdDVlWGtvS0NoQVVWRVJpb3FLVUZKU2d0TFNVcGhNSnNKc05zTnF0WklzeXhJMmVnajA0c1dMdldKalkvOEFFUDYwbm93cEtTa29MaTVHeTVZdHBlY21UWnFFYmR1MjRkaXhZdy9VNjd4eDh6L2s1T1NBWVJpVWxqeWRJMXBLbFFvVVJjSEwweHRoWWJVbDhsUm54bkdjc0diWnNGcHJiczJVS2hWa01obTh2YndSRmhiNjFBTWJ4M0hYUGhzemV1TGFOYXVMQUpTZ1ROZkFDRjVhcndTQVdRQTJScERXWTRWd2sxTW9GZnhjcUVvRnRVWURuVllMTjNkM2VIbDV3OS9mRDhIQklRaVBpSUJNcFZLaHBLUUVORTNEYkRaRExwZkRZckU0VmtodFExSUdBRE53NE1DQzNyMTcvNlJVS2ljOWpnczhiTmd3SkNZbTNzOEJ3cFVyVjlDM2IxK3NYcjBhVFpzMlJVcEtDdWJQbjQvNGVON3R2cE5La3FQcDlYcjQrOS9kNkxQSlpNYVpNMmRBeVdUUXVibTc1UGVLak1qTnkwWFd5VXcwYmRJVU5DMTNldXhPbkRnSmtxS2cxZFg4bWhVVkdaR2RrNFBNckV4RUM4M2FGZG50Sjd5Zk1UYzNkL1BhTmF0Tk5pR29XUVF5QUJZT1lBZ0hiUVB4UHh6SGdXTTVzQ3dMbG1WNUpnK0J6Y05xdGNCaXNjQmlOc05zTXZQQXBsUXFVVkpTWXBkcms4bGtzRnF0b0NnS0RNT0E0emlKTnB6ak9BWUFzM256NXAvZmZQUE45d0RVZmR3V09DRWhBUWtKQ2ZmMUhUMTY5RUI4ZkR4R2pCaUJ0TFEwQkFjSDQ5TlBQOFhISDM4c1hVQTFiZW42ZEZBeW1Vc3dXVENOUmd1TlJvc01mUnJTMHRNUUZscmVTN3ArNHlaSWlucGdhMmE3VHpkdi9vZlFTbVQ0YWdVSFA4bmUydldsUzVlY2RBQTFtOXhhV1l0SEdhRWtCYmxNMUEzbHE1Nml0NmJWYXVIdTdnNVBUeS80K2ZraE9EZ1lkY1BEMGFqUnN5QTFHZzJVU2lVVUNnVm9tb1p0TVVFb0lvQ2lLTTZtbjAxcy9iRDI2dFVydDZTa1pPWFRmQ0hGeDhmait2WHJNSmxNdUhyMUtzYU1HVk5wQ0ZUZGxwMlYvZFFPVDFkbVdwMGJzckt5bmI2V2s1UHpVTlpNcTNORFZuYldVM3RNc3JPemt4WXZXbGdLKzRLQkNHNFNrNGR0aXdjZmlwS2daQlJIVVE3TnVNS1VnVnF0a2tETzI4c2JNcGtNcEZhcmhWcXRobEtweEwyMGZxeGJ0MjR0eDNFdWh0MkhjZ2U4OStIcHA4RnpZMW5HNldzUGE4MDBHaTBZSy9PVW5xdmN4VzltenpyaEJOVEVmRm81d1JaZTZaMTBtQWZsUjZma0FxaXBWRXBvTkJxNHVibkJ3OU1Udm42K0FBQ1pUcWVUS3FKQ3djQXUxeWFUeVRpcjFVb3dET08wWVRjMk5qYi9yYmZlV3FIUmFLWS80UWNHZXIwZUJvTUJWb2FCc2JCNjJFMjFXaDFrY2huOGZIM3ZXdHFQSUlDU0VoZVhXMFZXVWdIUDNjTXNydHpyOFNLU00wSE1Ud2F1NU4zYmhpTTh3QTJKQWhmbFd5Mi9veUEvSHpldVgwVlJrYkZTSUErckV3NDNkM2RrWkdRa3JmcHBSWVc1TlRocHlDVkprdVA3MW1TY1RFYnhvQ2FUZzZiTGRBNTRqUU1kNzYxNSswQ2g0THNMWkI0ZUhpZ29LSURSYUpTcW9XYXpXUUkzcTlVS21Vd0dobUhFcEozVTB5YmsycXh2dmZYV21pMWJ0cnhCRUVTTEp4WFVrcE9UQVlLRVJxdmoyVTJyVWR1NHFNaUlkSDBHMHRQVHExMEpmdGZPSFZpK2JDa01oZ3dFQlFWaDVhcTF1SHo1RW1MNzk1UGVNelorQXJwMjdlWkN3a2ZaRXBPQnEzbjMvdmtyZVNEbUo0TmIwckZhZHVmNnRTc29MaTY2NDNsOTQvcFZQTnU0NllsM2VyMlo3QVRVbkhwcmtKaHliWWZjNVpETDVKRFRmRE91UXFHQVVxV0NSc05QTTNoNjhYazIwV1NlbnA3SXk4dERZV0doYlE4YmFKcm1xd3dPWHBzTjY0ZWsxcng5KzNaelFVSEJqKzd1N2s4a3NPbjFlb0FnNGVkZk0yTEpZbkxab0U5RGVucDZ0WWt5cDZXbFljYjBxZmh5OHRlSWptNkJnZ0tlR2ljaUloSzdkdThEQUF5TWZiL0cxbTNaMGlWNHZYc1BPellUY2IvbXp2a0dLU24vZ0tacHRPL1FDWU0vR2lJTlg2ZW1waUpoN2h5a25FMkJRcUZBeDQ2ZDhHSGM0SExEMmRWcGQ5cm1pekV2UUM2WGd5QkloSVdGb1gvc0FMUnVIZlBBemtIaWZrRE5CdHlxeSs0RWFyYmc5dC9ObTF1dlhMbHN2WU8zeHBUUHJWR1FVUlFualU3SjVUd2RPRTJYZVdzNkxkdzlQT0R0N1dNM0FrbjYrUGpBdzhNRE9wME9hclVhS3BVS0NvVkN5clU1eTdjNXk3VjVlSGhzWmxsMjI1TUliQVpESmpSYVhjM25ZSFJ1TUJnTTFmWjlGLys5QUI4Zkg3UnVIUU9hcGlXZU9JSWdvRkR3ZDcyN2JVbTVHL3R4K1ZMazVKUlA0RSthT0FHMWdvUHgyKzlic0dqeE1odzljaGhKU1pzQThEMTVZOGVNUnIzNkRiRHA5eTFJU0ZpQS9mdjI0cmVOTmNlOVVOVnRKaTVZaU0xYnQ2Ti83QURNbmprZEczL2Q0UElrNzJCV3EzVlhtNWdYTGpqeDFDcjAxa2c3YjYwTTFPVENQS2hDcVlSS3hjdnN1YnU1dzh2VEMvNDIzaG9Ba0g1K2Z2RHk4b0tibXh1MFdpM0U5Zyt4U21vRGJKd05oYmpkaUJYNGFYeUx3V0Q0OFlrOE9JejFnU1NiTlJvdHJGYnJmWC9QNmRQSjZQNWFOOHlhT1IxNnZSN2RYK3VHN3E5MXc0b2ZsMWY1TzQ0ZU9Zdys3NzZOOWkrM1JXei9mamgzOXF6ZDYvdjM3VVcvOTNxamErY082UDkrWHh3OWNsaDZiZGpRajlEOU5UNjBIZm54Y0hSL3JSdUdmalJJQXBHMmJkdmh2WDd2UTZGUXdNL2ZIODJqbzNIcDRrVUFmTVhTMDhzTHZmdjBBVTNUQ0E0SlFldVlOdmozMzVxclQ5M05ObFVxRlZxM2pzRzQrQWxZdkdpaEhmSGlrMkJGUlVWSStuMFR4bzRaWFQwaDYvWHJPMkUvRTJvSGJCekhXVG1PWXppT1kxbVc1UWhBOHRaS1NvcTVUSU1CcWJkdW9hQ2dvSXk5UTZtQ1JxT0dRcUhBZ3ZtSk9IandMNmpVYW50Z0N3b0tnbytQRHp3OVBhSFQ2ZURZL2xGSmxiU2MxeFlZR0hqWVlyRXNlZEtBcmJvS0JWWGFsdEY0MzkvUnRHa1VOaVZ0eGNjalJxRldyV0JzU3RxS1RVbGIwZS85L2xYNi9OVXJWL0Q1aEhnTUhqSVVXN2Z2eEp0djljS29rY01saXB1Yk4yOWd5dVF2OGRsbjhkaXliUWRlZmZWMWpCOC9UaEtsU1VoY2dFMUpXd0VBYytiT3c2YWtyVWhjc0pBLzRVZ1N2ZnYwaFllSHAzRGlYOFBoUTRmUXNpVlBBdURqNDRPRXhBVlFLbFVTRUo1T1RrYmp4azFxYk0zdlpadlJMVnJDYkxGSWdQdzRtZU1RdmZoM1ZsWVdCc2IyeDVVcmw2dmxSbEphV3JwbS9Qanh0eHhBemVUb3JmRmpVenllTUF3RGtxVEFzZ3dzRmdzL1NSQWVqc3lzVExBY0I2VkNDWlhRM25IczJGRW9sVXE0dWJtWDJ6YXBVcWtRRUJBQWIyOXZ1THU3dzdiOW96S3Z6VmxmRzBFUWxuUG56cTBFY052bGhEKyt0bVZMRXRxKzFBNnRXOGRBb1ZDZ2M1ZXVhTkN3SVhidTNBRUE4UGIyd2JMbEsvRk1vMFlnU1JLdnZ2WTZMR1l6YnQzNnI4cmJPSGYyTERxMmI0ZCtmWHVqUWNPR2VMSHRTMDdmdC9ENytWQ3AxZWphN1pVSDl2dXJzazJDSU9EbDZRVmprZkhST1hBRW9QMGdDbTZqL3dkQ0tZUHF0ZnB3RzljR2hKdkM3bTJqUjQzQTZlUlRBSGpHM084WHpBY0FlSGg0NEtmVmE5SHYvUStxWTI5dUh6dDI3SzhLUERYYjNqVVc0SE5yRkVWeEhNZHhGRVdCWlZsT29WQUl3KzBxZUh0NXdXZ3NoRW9vR09UbDVjRnNNdUhGRjErRVhGNSt1b1FFZ0tDZ0lQajYrc0xUMHhOdWJtN1FhRFJRcTlWU0hzWVpBMGhGdWJhb3FLaXJ4Y1hGUHp6cEYzL1h6aDFRV1Boa0N0cnE5WG9FQnRwMzVkZXVIUWE5UGgwQW9OVnFjZkxrQ2NSOUdJdmU3L1RDKysvMWNlb0pWR2FObm4wV08vL2NpNS9YYjBSNmVqcVdMUzN2Nks5YzhTUCsvdnNvcGs2ZERwbE05a0IrZTFXM3lYRWNjbkp6b0gyRWVnaVZIU05BcU9SZ2Mwcmd2ZlExcU45b2lOSS9yOEw5VTN2cXhDRkRoMlBxMTFPUW1EQVAyN2R0UmQvMytBcTVlRzFYaCtYbDVmMlNtSmlZNitDcG1aem4xaml1VE1vWWtNa29LSlJLbU0xbVVDU1BOY1hGeFNBSVFuQzZGRGg4NkJBR0RJaUR6czE1bzdVTTRLbC9Bd0lDa0pPVFUySHJoOFZpRVdheXJKekE5c0d4TEF1Q0lGaU80d2piWEZ1Yk5tMVdIajkrdkIxSmt1MWMvcy9qWi83Ky90Q25wOXZmZm0rbklpcUtiMFU1OE5kK3JGNzFFK1o4TncvQklieG8yWXN4THpqMWFoekJ6bFJhaXUzYnQ2RkxsNjVRS0pVSURBeEUrL1lkY1BEZ0FidjNiVmovQzNidDNJRzVDZlBoNXU3K1FINzMzV3p6K1BGam9PVnkxS3RmLzRFZkgwWHJFTGpIdnlqOWJmazNFN21mN0lTOG5qZEt0bDJHOVhvdWRNTmJJbmZrRHBpUHAwSDdnWDBMVVhoRUJEcDI2b3lWSzVaajVxeHY0T1oyNzFNWWNya2M3ZHJaWCtZN2R1dzRNSHIwNk9OVjhOWVlBVDlZcTlYS0NaRWdLSm1NVXlxVUlBa0NOMjVjbDRZSGVEWVBEVTZmVHNaTDdWNUd2UVlOOE8vRkN4VURHd0NFaElRZ0t5dkxhZXVIQ0d3aXVERU1JejJFR1ZJV0FDSDJ0U1VuSjVzTkJzT1NnSUNBcHhMWWZ0MnducS95Y1J6YXZmei84SDcvV0FCOG04TlhrNzVBWVdFaG1rWkY0ZERCQTFJdTZrR2JiWkdDWTFsWXJWWnB3cVRiSzY5aXlPQTRkT2pVQ2MyYVBZKy8vdHFQYzJkVDhOblljUUI0Z1JHQ0FFaUtRbjUrSHJadTJTSjhqLzFzYkdCUUVJNGVPWUs2ZGNPUmw1c0xYejgvMEFvRmZscTVBdm41ZVhpM2QxOFVGUmx4NE1CZmFOS2tMSisxWlhNU052MjJFWE1UNWo4d25ycXFidE5rTXVGMDhpbk1tREVOY1lNK2VpaVU3cVpEdDJEb3RycjhNYjJlQzdxSlArVFArY0Y2TXcrcVYrdkJjamtiY0RndU8zZjhnWDE3OTJESzE5UHd6ZXhaK0hyYWROU3JkMjhBYmJGWXNIT252WmI2dFd2WHRoWVVGRGhPRjRnZVd6bUdYSXFpUUZJVXdIRlMzNnhjTGtkQVlDQTBHZzEwV2gzKytlY00vUDBEUU5NS1hMMXlCWVVGaGJqNDd3WGs1R1NESkVuSTVYTDBldnVkOHNBbWhxUzV1Ym5JejgrSDBXaEVjWEV4VENhVEhialplbTBNdzNBY3gwRjRTTk1JQUN5QmdZRUhUQ2JUZkpxbWh6eE5vSlo4NmhTMmJFbkN3aCtXZ0tJb2ZESnFCRUpEdzlEdTVmK0h1WE8rUWZzT0hkSHp6YmR3N08rak9PVGdwVHdvYzJ6UW5URjlLbVpNbjRvT0hUdmg4eThtSVRLeUhpWitPUm5mTDBpRVBqMGR0VU5ETVhQMnQ1S2FVWmV1M1hEMmJBcGkrNzhIaXBMaDllNDlFQmxaRHptNU9YYmJHVFZxTkdiUG1vbmx5NWFnZHUzYVdMSnNCV2lheG95WnM1R1lNQmMvcjFzTHVWeU90aSsxay9JNkRNTmcxa3crREh5bmx6MzMvc3BWYXhBUVVQMjloRlhkNXJBaEg0RWdlSUxGVDBhUGVhQjliRld4a3UyWDRmYkovMEQ1cUpIVmV5TTBiejREOTg5aWtEL2pvTjM3VWxKUzhPMmN1ZkR6OTRlYnV6dE9uamgrejhCV2JoOUtTbjRjTjI3Y0RRRzh6STRGQTFRd1pRQ0FzMWdzMEdpMW5OeEd3MEF1cDVHV25nYVpUSVk2ZGVyQ3o4OFAwMmZPUm9QNkRlRGo2NHVGMzgrSFZxdXpBN1Z5d09idjc0L3M3R3prNWVWSndDYU9XWWtlbTQzWDVoaVMyazBqRUFSaDNyTm56L0pPblRyOWp5Q0lxS2NGMkk0ZE80b09IVHBKellLdnZQSXFqaDM3RysxZS9uOUlTZmtIRXdWRm9QQ0l5QnJmbDA2ZHU2QlQ1eTdsbm8rTXJJZS9EbGF1WTlxNmRVeUZGNjVDb2NDRXp5ZmFQVGZ3dzdoeTcydlJzaFYrMmJDeDNQTVJrWkg0YnA1enlpaUtvckQvd09FSGVzeXFzczA3cmRmOW1rNVhEWDJTREllQ21ZZWtQNDNMVHdQTFQ1ZDcyeWMyckxsTm0wYWhhZFBxdVR3NWpqdnp4eDkvT0JZTWJITnJaaW0zUmhDc1FQbk5XYTFXRGdDVVNpV24wK21rV2RDaW9tSmN1bmdSL3Y0QjZOQ3hFOC9rSVV3WStQaFdQaHBXTGp0YXExYXRjcmsyMFdOejhOcWtjSlJsV1Z2VmVJYmpPQktBdFV1WEx2cnM3T3dmdkx5OEZqNU5YcHR0ejZ2QVl5Y2xuR3V5SWRabGo2OVJGSVdpSXVNalFXamc3ZTE5VHltU3RMUzBqV3ZYcmpVNkFUV1RIYWp4bkdzc1FZQWpTWktuOXBielBXcmkySlNDcHVIdDVZWDY5ZXNMdEVTKzhQRHdnSStQajkxa3pxREJ6Z1BDY3Z3Njd1N3VjTmJiVmtIakxpZlNHMVhVdE92dDdiM2RZckVzZmxwTzBPYk5XMkRYenAwb0tTbUJ4V0xCdHExYjBFTG8wV3JhTkFyYnQvRW56T1ZMMWRQL3BGS3BYYWh3bDJ2ek1OZXNvbTM3K2ZtaDJGaHhsWjBMOTdoL2o2b2F2a00wdGRvK3QxaGFXcnA2NU1pUkYyMUNVSk9EdDJaWE1DQUlnaU9FWm44WnJ6akZ5ZVV5WVJhVWxtWkIrU0YzZ1NYWDJ4disvZ0dTZHVsZGVXd0FYMGdRdlRaYnFuQkhyODIyaUNCNmJTeGZCbU9FU2lsSkVBUjE2TkNoWlczYnRuMmVJSWhtVDlLRk0rQ0RmaUFFN2pWZlh6OGtKQzdBODgyYm8xUG5MaGowSVY4d2FQUGlTMmpYN21VQXdQQVJvL0RseE0veDY0YjFDSStJNEJPbVQ5Q2QvbEd5SW1OaGhhMEw1RU5hc3lKaklhZ0tXa2dDQXdPUm5wNk96SXgwcUFXaUJUc2JHZ1V1TWZtZVowYTVjQTlnYVBWbGhPclVqWkFHNFRtT083MW56NTY5VHZKcXR1MGRqa1VEZm5SS0hKdVN5eUNYQzU0YkxZNU5sUTI1ZTNsNndjL1hyOG95bFU1WFdTNlhJemc0Mks2SVlFdHBKSWFpanUwZlRnb0pWZ0NXZHUzYXBXWm1aaTcwOGZGWjlEaGVKRm9uK1k5dGYreXE4UDI5M242blhESVRBUEx5Y2pGejlyZHdjM1BEbmoyN1VWSlNVcVZ0M1Nsc3lNN0pjUUdiZ3htTmhmRHg5WEg2bW8rUE43S3pIL3lhR1kyRjVRZ0JiSzFaczJZd0dBelE2L1VvS3N5Mzc1UFVBaGhiRzBEdCs5aURiT0J5ZHZWZEYxb050Rm9OYnQ2OHVmSEhIMzhzcUNnRWhZT3lPNStWRVpUdk9BNGN5M0ljeTRKbEdUQ01sWDlZTGJCYXpMQ1lTMkV4bDhKVVdneFRhUkZ1WHI5eTc4QUdBQUVCQWNqTnpiWHoycHpsMm13OU5vZENndWkxV1FpQ0lIMTlmWGVXbHBiT1ZTZ1VIejl1RjRtc211N3dwU1dsR0RONkZLLzhydFZLN1JPMmQzUm5YZFNWV1dob2JXUm1HcENoVDROVzUrYlNQREFXd21nc0JHTzFJclMyY3hBSUN3MkZ3ZkRnMWt6Y0o1WmhFQlphT1RENStmblowZTg4NnBhZm43L2twWmRldWxTUnQwWVFoQWhzREVFUWpNamNJYXBPMFRRTmxVb2xlR2RsZE45ZVhsN3c5UzFUbldyUW9BRWFObXhZOVd1MnNoZHIxNjVkWVYrYm85ZkdzaXpoVUVnb1Z5VmR0V3JWMHY3OSt6Y2lTYkw5NDNTeCtQbjVJVjJmY2Q4WFFGU3pabGk0cU9KUjJxSWlJd0lEN2s3TWhTQUlORy9lSE5kdjNFUk9UamJ5Y25KUVd2cDBraytxVkdxUUZBVWZieCtFaG9aVSt0NFcwZEc0ZWZNL1pHWmwxZWlhcVZScVVESVp2TDI5N3docWo1dFpyZFo5RXlkT1BPQUFhcVVpc0FtZ1pwOVhFN1FNUkNWM3VWek95ZVZseEpHMkFPZmg0UUZ2YjI4RUJBU2dkdTI3V3p2aVRvSWp0Mjdkd3ZuejUzSHQyaldrcHFiQ1lEQWdKeWRIQWp4SExWSUI5QWlXWlFtV1pTbU80eWp3V3FRMHgzSEtHemR1dEFvTkRaMEw0TEZTSHpsMUtoa0VRVUNqMVVGZHpYZjQ0aUlqaklVRkFMaHFKNXAwbWN0cXlOSVBIVG8wT3lZbTVwWUFaQ1hnTlVLTFlLOFBhaXVseDloNmF3cUZncFAwUVRXODBMR0hod2U4dkd6RVdlcld4VFBQUElPUWtKQzdpN0x1OUlhUWtCQkpVTmt4MStiWStpSEtZbkc4MlU0a1dIbm5naUREd3NLT0Z4UVVKT3AwdXFtUDAxRnMxaXdLNmVucE1CZ3lVVmlRVnkwc0hBRGZ2eVNUeVJBVUZJaUFnQURYNWVLeXg4SnUzNzY5S2lZbUpsVUlNOFhRczlSSkNHb1Z2RFZwMEYwaWpSUkNVVnVhYjFHL1FBeEZhOVdxZGRlZ1ZpVmc0L000b1U1emJVNTYyc1JDZ21Odm16aHVaU0VJZ25KemMvdlpaRExWcFdsNndPTjBNQU1EQTZ1TjNkWmxMbnRjeldnMHJnNE9EajRGKzlZT3h4RFVZaE9Dc3M1QzBJcEFqVmQxOTBGUVVCQkNRMFB2YVIrcnBCT24wK2tRRWhKaVIyOWt5N2dyRHFrSy9XMTJ2VzJDMXliMXRva0xzV3ZYcmlVc3krNXhuU1l1YzlsamxWZmJ2M0Rod2oxd1hnR1ZQRFk0eklNSzVKR2NMYWpSQXNXM0dJN3FkS0lvQzU5WEN3a0p1ZWVKRE5uTm16ZXJqb0k4VlpIVDdubnhPZkYxNFNFbThGaWhBNThRd2UyVlYxNUpPM0Rnd1BjaElTR2hBTUpkcDR6TFhQWm9HOGR4MTA2Y09KSDA2YWVmRmpvSlFjdUJtaUNBYkNlblo0c2ZGZUVJTCtSQ2dtVlozQTArMlFIYjNiaDZ2cjYrVGljUmJBU1dZVU1mVHBoTUpoQUVBVUc2VDJvQklmaGZSTFpwMCtaRVRrNU9ncWVuNSt5cWhzVXVjNW5MSG82emR1M2F0VFZ2dnZsbXFvTzM1aXdFdGRxMmRvamhwOER2S0JVTXRGcXRYZWdwVmo4akl5UFJ1SEZqcU5YM1BpRnlWMkNpVnFzUkdocGFib2EwZ3ZsUmptVlpRaXdrY0J6SENnVUYyNmtFMHN2TGEzTnhjWEdRU3FVYTR6cDNYT2F5UjlPeXM3TVhoNGVIbjdYeDFFcHRId1JCbUd4QnpURUVGU1FHeXVYVmJNSE5WOURXRFEwTnZTOVF1MnRnQS9nRWVrVjhiYzdHck1UR1hRSGNPR0VxUWN5M2tRRElWcTFhTFRseDRvUy9YQzd2NXpxRlhQWVVoM3JRNi9YSXlEQ0FZUmdZalk4R1EzTnBhZW5QNzc3N3JtMi9XcmtRbE9NNENkUTRqbU1GUmx5T1pWbU9ZUmc3dmo4eHNoTWZZcFZVb1ZCQXJWWkRMcGZqMHFWTER4YllBQ0E4UE56cHFKV1RhUVJPNkdjVFI2M0VXVkxiRmhEaW4zLytJZmZzMmJPNGZmdjJmaFJGZFhHZDRpNTdHa0V0T1RrWkhBaHBHc0wvRWRndmk4WHk1MDhyVit6S3ljbXhPQUUxMndrRGZteUtJRmdDWVBsMEZLL2VMakIzY0VvbEw4U2kwV2o1bmpWM0QzaDVlOEhmUHdDMWdvTVJYamRjMHRHNFg3dW5iNkFvQ25YcjFrVndjREQ4L2YzaDVlVmxWeWxWS3BXMitUZE9aQUt4VmJZUzNGVXIrQllRYytmT25WTXZYYnEwa09PNFk0L3pDYnBwMHlZb2xjcUtFeFZXSzBhTUdBRS9Qeis0dTdzakxpNU9VbmR5MmROcmVyMGVIQWo0QndROU1tTnhMTXVlUEhUd1lOTEVMeVlVT09UVVNvUkhxUjJvU1hSRUpGZStDbHArdWtEbnBvT0hoNmRFUlZRN05MUmFRTzJlZ1EzZ0ZXM0N3c0lRRkJRRVIyMVNKeXBYb3BxelhRdUlBN2labm5ubW1aUzB0TFFGSE1kZGVWSlA0SEhqeGlFcEtRbnIxNjlIVWxJU2R1L2VqV0hEaHJtdTdLZmNESVpNYUhWdWo4eitjQngzOWR5NWMrdjc5bmtud3dIVWJDdWdKanRRRTNyV1NGS2FCNFZjSnVma3RDaDBySUJLWlQ5bDRPUGpBLytBQUlTRTFMNHY3WVZxQXpZQUNBNE9SbWhvS0FJREF5WCt0a3JBRGJiOWJRSi9tMFFsTGp4TXdjSEJCM0p5Y2hJQVpENXBKMjlSVVJIbXo1K1AyYk5ubzIzYnRtamJ0aTBXTFZxRUZTdFdJQ3NyeTNWMVA4WEdNTXc5ZVdvWHpwL0RxQkhEcTN0M3NtN2V2TG02YStjTzEyRS8yRzRIYkFSQldEaU9zNGlDeHh6SENSeHJGRWVRSklxS2pNak56VUdtd1FBQ3ZOaTBScTJHMldUQ2diLyt3cFl0bS9IbnJwM3c5dmF1OXNiMysvYjc2dFdyaDlxMWEwdmc1dUhoWVNmaFp3TnVZa2dxOXNPeHprSlNBQ1lmSDU5dCtmbjUzd2tMV0tQV3FsVXJUSmt5QlMrLy9ETFVhalVpSWlMd3h4OS9ZTzdjdVFnT0RvYTd1enNHREJnZ3FTMk5HREVDblR0M3R2dU83dDI3WTlDZ1FVNi92MmZQbm1qZXZEa0FJRGs1R1NVbEpXamJ0cTMwZXBzMmJRQUFSNDRjY1YzZFQ3RVZGaGJjMCtmcU4yaUlpVjkrVloyN1VxclhweTl2MDdyVmVaUzFkWlRhaEo2OHQyYlgya0V5SkVteEhNZXg0RGpJWkJUTUpoTlVLalVYRWxJYi9nRUJTRTlQaDFxdGdWcWpRVXJLUDNqbDFWY3hldlFZUkVSRTR2Q2hROVcrbnZmZE8wWVFCQ0lpSXB3cVdqbXJqb290SUFBSUFFNkxDUnpIa1I0ZUh1dU5ScU5HbzlIRTEvUkpOWDM2ZEd6ZXZCa3hNVEVZTkdnUWV2VG9nZTdkdStQQ2hRczRmLzQ4MnJWcmg2NWR1K0tOTjk2NDYrL3UyYk1uY25OekFRQzNiOThHVGROMm5GeHl1UnplM3Q1SVRVMTFYZDB1SzJmWjJkbVkrdlZrWkdVYVFKQWtCZzhlZ3BhdFhrQnFhaXBHalJnT2k4VU1EdzlQTEYveFUxbTY0N05Qa1piR2E1Ym41ZVZCcmRGZzdicjFBSUNyVjY4aVllNGM1QmZrdzh2VEMyUEdqcE5FZWdCZytiS2xpNy80ZlB3cEIxQXJ0UUUzdmxnQVdJUnJsaVVJc0FSSmNBUkhnT000VGlhVGdXVlp6dDNESFFxRkFnUkJRSitlRHJWS0RZcWlvRmFyVWI5QlF3VFZxb1dpSWlNT0hUejRNcm5Fd0FBQUlBQkpSRUZVNkFFYndJOWNoWWVIbHlPakZNdThUZ2JrYmZ2YklJU2s0bVNDQ0c2RVZxdGRXVnhjckZLcFZDTnI4dVRwMGFPSHBJMzR4aHR2WU5teVpaZzZkU3AwT2gxYXRteUpaNTk5RnVmT25ic25ZSHY3N2JlbGZ4Y1hGenN0TENnVUNwaE1KdGRWN0xKeTl2TzZOV2pjdURINnZmOEJybDI3aGdYekU5Q3kxUXNJRGc3R0x4czI0dkxsUzVnNlpiTGRaNmJObUFVQXlNL1BROXpBV0l3Y05Sb0FZRGFiTVhYS1Y1Z3lkVG9DQXdPeDQ0L3QrSDdCZkV3U0JJYnk4L04rK09MejhZZWRoSjRsZDhpcmNTekRpRlJsa010cFVad0ZSVVZGTUFwc3hrb1ZINzFwdEZyNCt2cGkrN2F0eU0vUFIxNWUzcU1KYkFDdmNHVkxJVzdidEd2anNkbjJ0VW5neHBhcDZqSUMwRW5nOXRaYmJ5MVp2MzQ5clZRcWEwekd6M2I2UXFGUVNQbEQwV2lhcmhiZ1VhbFVNSnZONVo0M21Vd1BSWi9TWlkrK1JiZG9pWVM1Y3dBUWFOR2lKV1ovTTZkS24yTlpGbDlPbW9odXI3eUdGaTFhQWdDdVg3K0cxTlJiaUIvTDk4S3pIQXVOb0YxUVdGaTQ3SjFlYisxSCtha0MreERVUmtKUEZEdG1HSWFUeStVYzc1eUFvMm1lTERYVFlJQkdvMFYwZEF2OC9mZFJ1THQ3UUtWVWdtVlpyUGh4T1hyMWVoc05uM2tHNDhlTmZYU0JEUURDd3NMc3RCRWNweEZzaUNoaDQ2MXhBdmlKa3drUW12MUFFQVN4WmNzV1l0cTBhVXZpNCtObENvVWlyaVpPSHBrVEh2cUsxS1NjUFcreFdLcTBuZURnWUpTV2xpSXZMdzhlSGg3U1o3T3pzNnZNNWU2eXB3ellvbHNnY2Y1Q0hEdCtEQ3RYTEFkTjAvaHk4dGQzL056U0pZdWdWQ3JScCs5N2R1ZHBRRUNBWGRnS0FFYWpjY1dFK0hGN1UxTCtjZXhUY3dRMU96WmNvZG1lb3hVS2pwYkxZYlpZUUpFa2FJVUNGRVhCMTljWGRlclVoYnU3QndpQ1FHQlFJSFJhSFJpckZSTStuNGp3OEhCY3ZQaXZkQzA4c3NBR0FQWHIxeStuUmVvWWpqcDRiU0s5RVd4eWJveVFneU1JZ2lDKyt1cXJQRjlmM3lVREJ3NGtGUXJGd0lkNW90RTBYYzUxdm5UcFVwVTRvNktpb3FCU3FYRGd3QUc4K3VxckFJQ0RCdytDSkVtMGF0WEtkUlc3ckp4Tm16b0YwUzFhb24zN0RtZ1IzUUp2OXV3QmxtVXI3ZmM2ZVBBQTl1L2JoNFdMbHRqZGlDTWlJbEJRVUlDLzl1L0RpMjFmd3RXclYzSHE1SW1menA0OXUyZmp4ZzBsTnA1YWljUERSQkNFV2NpcDJiSGhNaXpMeVNnWlpESTVTa3BLT0hjdmJ5aVZTdWgwYmxBbytQK1hta3I1SnR4YXdRZ0xEVU5BWUNBVU5NM3Y2NEVEYU5LMDZhTVBiQVJCb0g3OStoS3dPWHBzRE1QWWVteTI0QVpoRkFOQ3ZzM3VPNGNORzVaTjAvU1NmdjM2NFdHQ1c4dVdMVEY3OW13c1c3WU16WnMzeDZKRmk1Q2VubDdoKzlldFc0ZmMzRndNSGp3WUdvMEdzYkd4R0RwMEtIUTZIV2lhUmx4Y0hQcjM3dzh2THkvWFZleXljdGFuejN1WVBYc0cxcTFaRFpabE1lcVRUMEdTcEYzeElEOC9IMi8xZkFQTm5uOGVZOGVOUitLODcxQmFXb29oZ3orVXZpZHh3US9RNlhTWU5tTVd2dnYyRy95dzhIdlFOUDJUaDZmbm54dlcvMUlFKzBLQmJRT3V5WEVPVk9wWG95Z1FESU9Ta21LVWxwWndhclVhbmw1ZVVLbFVxRmUvUG03ZXVJR2pSdzlEcDlPaDE5dnZJaVE0QlBYcTEwZjgrTTh4ZWZJa1dNd1doSVNFWU16WStFY2YyTVJjVXIxNjlld3FwTGE1TmlHdlZxNllBUHRLcVMyNEVRUkJFSEZ4Y1prbWsyblJ3SUVEV2FWU0dmY3dUclRYWDM4ZEkwZU94T2pSbzhHeUxQcjE2NGNCQXdhZ3ROUjVaOHFHRFJ0dzQ4WU5EQjQ4R0FBd2UvWnNXSzFXZE8vZUhTUkpvbWZQbnBnN2Q2N3JDbmFaVXd1cFhSdHo1ODEzbXRiNFpjTkc1emZUWDM2dDhQc2FOR2lJaFl1V3dHZzBycGcxYzhhZVpVc1hWd1Jxa3FjbWdocEprZ3hRUmhvcG95aE9ybFNDcGhVYzMzd3JpTEtvTlhCemQwZGtaQ1Q4L1B3UUZGUUxZWFhxb0c1NE9KUktKWjU3cmpGK1dMUzBSdGZ0anBvSDkyTVpHUms0ZCs0Y3JseTVndFRVVk9qMWVtUm5aNWZUU3hCQ1YwSUFRRUpnNFNVNGppTnROQlBrSE1jcEFDZ25USmpnSGg4Zkg2dFNxWWE0VG4wK1VYemo1bi9JeWNrQnd6QW9MWGs2UjdTVUtoVW9pb0tYcHpmQ3dtcFhHcTV4SENlc1dUYXMxcHBiTTZWS0JabE1CbTh2YjRTRlZVd1J0bi8vZm9SSE5uZ2c2MVJZV0xoc1F2eTR2VGJocHpOUXMyWHNzSWlNSFdKelBVWEpPSUhlbXdjMXBiMjRzYWRubWNwVWFGZ1k2dGR2QUY5ZjN3ZDJMdFFvQjVxL3YzKzU0WGduRlZMWTVObWtTcWx3d2RyMnVJbUZCVXlaTWdVblQ1NzhZY09HRFdhMVduM1ByU0FkT25UQW4zLysrY2hjbUhxOUh2NytkemY2YkRLWmNlYk1HVkF5R1hSdTdpNzV2U0lqY3ZOeWtYVXlFMDJiTklWWW9YTUV0Uk1uVG9La0tHaDFOYjltUlVWR1pPZmtJRE1yRTlGQ3MzWkZkcnVHK3hrTENncCtHRHBrOFA1TGx5NmFLd00xbEZWQUpUMVFnVGhXVUpvaUlJeE9TYXdkSkNWUWYxTVU1RElaeFBsUXRWSUZzOGxVNDcvdGdRRWJ3SXZCaU9CV1dYVlVySkFLdld5YzFXb1Z3WTJ4RFV0RmNOdStmVHMwR3MzU3dzTENVcTFXT3hLQThtNzNiZGV1WFkvOWhaeXVUd2NsazhFL0lBZ3VBelFhTFRRYUxUTDBhVWhMVDBPWUV5TFY2emR1Z3FTb0I3Wm10dnQwOCtaL0NLMUVocStXVFp0Uk5WdHBkbmIyNGxZdG14OUdlZmJiaWp3MUt3aUNJUUNHRUR3MUdVVnhNcG5ncVlsRDdXbzF0Qm9OZEhha2tZR29YVHNVa1pHUkNBMExlK0Rud1FOaHJRMFBENjlJWUZrQ09KdTdxWlJyczFxdDRtdE93UTBBZERyZHF0emMzR0lQRDQvaEFIeWZ0Z3M1T3lzYldqZDNGNkk1bUZibmhxeXNiS2ZBbHBPVEE5MURXRE90emcxWjJWbVZBbHNOV1paZW43NDgrdm1vVTdDZi9YVDAwdXhCRFFLb0VTUkhFaVJIa1FKYkIyMURHQ25NZjJvRnZRSStCUFZEclZwOFh1MWhnTm9EQXpZK2FkbkFLYkE1ZW0yaTV5YUNHOEFQQ0ZjQ2JweW5wK2ZHakl5TUlsOWYzNDhJZ29oNFdpNWVqcnYzNGVtbndYUEx6OHR4K3RyRFdqT05Sb3Y4M0p4NytpeVJuQWxpZmpKdzVlNjY5RGx3VjIrYXNsYTMvbS95K1R0NGFxWnlvRVlJb0VZU0FndXVESEk1elNsb2thbERBRFdKQmRjTGJqb2RMT1pTNU9WbUl6TkRnOHlNTktmckVGWW5IRzd1N284L3NBRkFvMGFOeW9GYkJjQW1nWnVZY0tzSTNNUy8vZjM5LzdoKy9YcEI3ZHExNDBpU2pLNStFT0haVFEwR0E2d01BMk5oOWJDYmFyVTZ5T1F5K0FtMHlIZDFzaE5BU1ltTHk2MGlLNm1BNSs1aEZsZnUrWGdsSmdOWDd3N1VXSEFuejVYY1d0ODVkZloxbEovOXRHL3BzTXVwbFFjMW1RQnF0SUwzMUJ5TEJhTElzZFZpZ29lSFI2WEs3VVZGUnR5NGZoV05telo3TW9DTklBZzBhdFNvUXEvTkdaalllSEJPd1UzNFhvN2pPSzVPblRxSGs1T1Q4NTU3N3JrQkZFVjFyazVRUzA1T0JnZ1NHcTJPWnpldFJtM2pvaUlqMHZVWlNFOVByM1lsK0YwN2QyRDVzcVV3R0RJUUZCU0VsYXZXNHZMbFM0anRYOGJDUGpaK0FycDI3ZVpDd2tmWWlMc0VOUXZIL0htdzhHSlNuNHlGR1RiaHArUHNaNGtBYXVaeU9UVTdVSk9ERmdTT2xRcEJMay9qV0FIMVEyQlFFSXdGZVpXQ211MDUvMFNFb3FMSjVYSUozTzdnc2RubTJ5b0NOM0h3bGhORDA2aW9xSE1iTjI2YzFhMWJ0MHlhcHZ0V3h6N3I5WHFBSU9Iblh6Tml5V0p5MmFCUFEzcDZlclZ4VTZXbHBXSEc5S240Y3ZMWGlJNXVnWUlDbmhvbklpSVN1M2J2QXdBTWpIMi94bzcxc3FWTDhIcjNIblpzSnVKK3paM3pEVkpTL2dGTjAyamZvUk1HZnpRRUZFVUJBRkpUVTVFd2R3NVN6cVpBb1ZDZ1k4ZE8rREJ1c1BSNlRkaWR0dmxpekF1UXkrVWdDQkpoWVdIb0h6c0FyVnZIUEpxZUttditlVTMyb1YxZjVQMVdVQW1vbGZQVUJBTFlDa0NONzFWVHFrUVJGbDBacVBueGJSMWhvV0hJejh1dTBlTlVWU01meGthVlNpVWFOV3FFOFBCd0JBY0hTMExNdGx4dVlyT2ZRcUdReEZWbE1obG5JOFRNMkhLNUNUbUNVZ0FsYjd6eHh1MG1UWnA4YXpRYXZ4RmV2eTh6R0RLaDBlcHFmRjAwT2pjWURJWnErNzZMLzE2QWo0OFBXcmVPQVUzVDhQSHhrVHhuUVFxdHdwblk2ckFmbHk5RlRrNTJ1ZWNuVFp5QVdzSEIrTzMzTFZpMGVCbU9Iam1NcEtSTmZQakVzaGc3WmpUcTFXK0FUYjl2UVVMQ0F1emZ0eGUvYmZ5MXh2YXpxdHRNWExBUW03ZHVSLy9ZQVpnOWN6bzIvcnJob1Z5MDNqOTJoOXZvLzBsL2V5VjBoYkpUQkFCWWM2MUYzN2UrTnZIM0wvSit5M2ZJcFJVTGo3THFweTJvZ1dCZ1UvMmtLRms1VUFNSFpHWm1vcmk0V01xcCtmcjZJaWd3Q0tHaFlhaFh2ejVvWVZSS1BNK2FOV3VHamgwN29uMzc5Z2dLdXJzcTlJb2ZsNlAzTzczd2RxK2UyTHBsYzVrM2FyRmc5cXdaNk5mM1hmVHYxeGNIRHg1NCtCNWJtWmVpUWFOR2pad054WmNMUzBXeFZkaFVTNFVUMG5GQ2dSUEQwbi8vL1pmVjZYUXJNekl5OUw2K3ZvTUlncmhuVVdZclkzMGd5V2FOUmd0andmMVR1Sncrbll4SlgweUEyV3hHY1hFeHVyL0doNWs5M3VpSmZ1LzNyOUozSEQxeUdJa0o4NkRYcHlNME5BeWpQdmtValo1OVZucDkvNzY5V0xac0NUSU5CdmdIQkNBdWJqQmF2Y0JmYk1PR2ZvUmIvL0ZDdHlNL0hnNlpqRUp3Y0FnU0Z5d0V5N0pvMjdZZHVyM3lDaFFLQmZ6OC9kRThPaHFYTGw0RXdGY3NQYjI4MEx0UEg5QTBqZUNRRUxTT2FZTi8vNzFRWSt0K045dFVxVlJvM1RvRzh2Z0ptUGpGQkhUcTNPV2hNTE5vK2pTR2NWa3kySndTSVp6aHJ2MW56bHJ6d3MydnpzSmVUY29abjVvUWZoSldnQk5CamVVZEJ0S21VQ0RuYUtGUWtKK2ZEMFpRbXFKcEdsNWVaWjVhYUJnUGFvNlNlWFhxMUFGRlVkaTVjeWNVQ2dWZWZ2bGxaR1ptMnBGR09NNjlpbitucFB6RG4yUExWOEJrTWlFdWJnQ2ltajJQb0tBZ2JOKzJGYVdscFZqeDB4cms1T1JnMElleGFOeTRpVVF0bnA2ZS9uQThOdEYwT3AxVHo4M1QweE02bmM0WnhiaWRNSXlvbitEZ3Vaa0Z6NjBVUUxHL3YvOGYvLzc3N3lTR1lmYmU2MzVXVjZHZ1N0c3kzbi91b1duVEtHeEsyb3FQUjR4Q3JWckIySlMwRlp1U3RsWVoxSzVldVlMUEo4Umo4SkNoMkxwOUo5NThxeGRHalJ3T1EwWUdBT0RtelJ1WU12bExmUFpaUExaczI0RlhYMzBkNDhlUGswUnBFaElYWUZQU1ZnREFuTG56c0NscEt4SVhMT1JEQkpKRTd6NTk0ZUhoQ1lDbjBqbDg2QkJhdHVSSkFIeDhmSkNRdUFCS3BVbzYwVThuSjZOeDR5WTF0dWIzc3Mzb0ZpMWh0bGdrUUg3UVpqbHJnUGJENS9rYkwydmQvL2Z0Yy9OZnVQbFZDdXdaYjRzZEhxVUUvekFEaEFVRXlrQ056K3h3VnF1Rms4bDVDdis4dkh6STVES29WQ3JVQ2F1RHFHYlB3OHZiRzFxdEZyNitmcnluRmhhRyt2WHFRNnZWT2wzWHRMUTB5VmxoV1JhZW5wNTI3MW02WkJIV3JGNEZBRWhKK1FjZkR4OEtBTGh5K1JLYVJrVkJvVlRDemQwZEw3endQNXc0enVzOG5UbHpHbTNhdkNpY1R3VGtjaHFYTHBVZGgxa3pwejljWUFNQWQzZDNDZHhDUWtMc3dPME9GT08yWVNrcmhLYmluVW9FdHhJQXhjODg4OHlwbjMvK2VVcHBhZWx5VnhyNnpyWmxTeExhdnRRT3JWdkhRS0ZRb0hPWHJtalFzQ0YyN3R6QmgwTGVQbGkyZktVa2xmYnFhNi9EWWpiajFxMy9xcnlOYzJmUG9tUDdkdWpYdHpjYU5HeUlGOXUrNVBSOUM3K2ZENVZhamE3ZFhubGd2NzhxMnlRSUFsNmVYakRXY0JLOHdodmd5ak5RZFk1QWlTZTFPdUhYNVN1Ny9UYm1sZ09vT1FKYkNRR1VBb1NaZjhCS0NLcFNKTUNSSURpYXBqbVNKRkZTWE13VkZCVEEzY01kT3EyT24vMTBjNE83dXp0VUtoWGMzTno0bkpvQWFyb0tSRmhvbWdiRE1QRDI5a1pNVEF4WWxwWDREa1Y3NTkwKzJMdDNEeExtZllmSlgwN0MwR0c4ZmtQZDhBaWNQSEVjUnFNUkJRVUZPSGZ1ckhUVHo4L1BoMUtweE5tektmaHN6R2pRQ2hyNStma0FnS1RmTnlFOFBPTGhoYUsyNXVIaGdVYU5HbFY2RW9uL0Z4NGNRUkNFeFdMaGJPc01MTXR5dHYxdFlsZ0tnT3ZkdTNjYWdJVHM3T3diWGw1ZWd3RGNjNGIrd29YemlCc1lpMlhMVnlJaU1oSkxseXpHNXFSTmtwZFNrWDAzNXhzY1BuUUlPVGs1bURqcFM3UjVzZTBqQ1d4NnZSNFJFWkYyejlXdUhRYTlubWN4MFdxMStIUFhUa3laOGlXTWhVYTdNS0txMXVqWlo3SHp6NzFJVDAvSEY1K1B4N0tsU3pCZzRJZDI3MW01NGtmOC9mZFJKQ1FzY01xWlZ4TlcxVzF5SEllYzNCeG9IMUlQSVZka1NiODhmL2VxaHNlR25NSXhpZnhSQkRaVEJhR25CZUJFcFhhR0FNRUp3QVlLQkNlWHk2RlVxcmk4dkZ4UWxBd0IvZ0ZDOVZNSE56YzNlSGw1UWEvWHdOUExTd2cvRzl5eEYwME1SdzhkT29TbVR1aUp0Rm90QmczNkNDTkhETU03Ny9aRy9mcjh2R3lUSmszUnNWTVhEQnM2R081dTdsQ3IxRkNwVmRMbk5tOU9Ra2xKQ2FaTm40VjUzMzBMQU1qSTBHTnowdTlJblAvOW93RnNBT0RwNldrSGJqWWdWZzdZeEdPTHNpWmV3bWF1VkFRNmFhNE5BQ3VTNG5sN2UyODZmLzc4alhyMTZ2V2pLT3JsZTkxZnVWeU92LzdhajRqSVNCdytWRFhPOWhFalA4R0lrWjlnbk1CZytxaWF2NzgvOUE1VVRMZHZweUlxaW05Rk9mRFhmcXhlOVJQbWZEY1B3UUlQM1lzeEx6aTlJVG1DbmFtMEZOdTNiME9YTGwyaFVDb1JHQmlJOXUwN2xFc0FiMWovQzNidDNJRzVDZk5ydEpIelhyZDUvUGd4MEhJNTZ0V3YvOENQajVXeDd2dGJmMzV6dHgvalUxR0pPcnQ5Z1lDUWV0UUFnaVVKZ2lWQWNDVEhnZ0xKeVVCQ0pwTnorZmw1Y0hOM0IyTzF3bURJd0xQUE5TNmJLUER6aFZ2cUxmajYrcUYrL2YvZjNwbkhSMVhlKy8vem5HWDJ5YjRNeVlTRWtJUmN0dUNsd3JWaVhTNHVWRnNwdUsrWHFxMC8vZlc2SWxhOXJiVjFCWmNxeXExNlJhdTFldVVWYmRVZjlkNjZ3cjBnb2xHSkNZUWtKQ1FrSVNHUVpTYVptYk04dnovT2VVNmVPWmxKUUFGSnpQTjZIZVprTXBNWnpweDVuODkzTDBmcUtNZUlOWnY5N0xQUEFCanppTzJkcUJzYUd2REEvZmZpbnQvZWk3WFBQWXZKaFVVNDIxVEtsMTUyT1M2OXpFaHN1T2JxbjJMcTFCTEx5bk83M2JqbnQvZENFQVJFbzFHa3BxYmlyVGZmUkgrb0g5ZisvSnB2M3hTMXcyM216SmtvS1NsQlFVRkIzRmkvMU5SVXkrZm1kcnVaYVVyWjNGS2JXY3I4Ym9yTk5CMWdwdW1xVmF2dUhoZ1llUExydnRkL21ENERIMys4Q1hWMU94RGcwak0rM3J3Sks1YmZZdjM4NkNPcnZyWG8yWWhmRHJPN01RQlFYYmZhU2dIQTJlZjhDQjkrK0Q2MmJQa1lxcXJpdmZmZXhWZlYyM0RHbVdjQ01BYU1FQUlJb29qZTNoN0xSMEwxK0tEUHBMdzhiTjYwQ1lxaW9NdU05anFjVHJ6NHh4Znd5aXN2UTFFVTlQUWN3SVlOSDJIMjdObERwdkNiZjhVYnIxZmlzY2RYSDdVK2RRZjdtdEZvRkI5djNvUUg3cjhYUDcvMnVxTWVPT2pUQnArOS9mSGZyVDM3YjNlTVpub09BSWlZMDZSaUFCUkN6SUhHRkxvZ2lWUWtBcFVnVUJrQ0hFU2toQUIrZndyeTg0T1lWdjRQY0xuY2NMdmN5TWpJUkU1T0R2THo4cEdlbG82OHZMeFJvUVlZRVZRbVJCd09COUxTMG9ZMWFmMTA2eWU0L1pkMzRwUlRUOE1qanoyQm1xK3E0NEtIaXFMZ3BSZi9DRUtBV2JObVd6NWsxUXhrOVBRY1FFTkRBOHBLeTNEVjFkZmdsVmZYWWUwTEx4NDdpbzAzUzJmT25EbE1zWTJ3VVdJc0VFS3NOdU9ta3FOY2dxL09lclFEMEcrLy9YYjk5dHR2LzQrV2xwYTYvUHo4ZnlHRUhIY283OU1oeS9CNlBIanhqeTlnd1VrbjRhdnFiV1BHaDJaUDBIM3dnZnZ3NEFQMzRmUXp6c1MvL2VwdWxKYVc0ZGUvK1MzV1BMVWFIZTN0bUZ4WWlJZFdQV0pOTTFyMHc3TlJYYjBOVnkyN0FxSW80ZHpGUDBGcGFSbjIyOHFGYnI3NVZxeGErWkJ4Slo0OEdjOCs5d0ljRGdjZWZHZ1ZWai94ZTd6NnlwOGh5ekpPUHVWVVhQa3ZQd1ZnNUNtdWZPZ0JTSktFaXk4OEw5NU1mT2xsQkFLSFA1ZndZRi96RjlkZkIwS0F3c0lpM0hMcmJVYzFqMDBIL2J3aHNyZnlsSmI3NnRBNGxPSmtVMnJXTGNGUUh6VUFSaVVCaUE1UUtnQlVwSVJLZ2dCUkEyUWlVaWNrT05QU2gyby9mVDRVRkJRTTVhbVpnWUlkTzdZUGkzNG1XMDFOVFVoTFM4UENoUXNCQUo5Ly92bXdtUjhYWERnMDdDZ3pNeFBMYnh1YWY3Qng0d1k4L3RnanFLZzREZzg4dU1xQzVLSWZubzI2dWpvc3U5SlFjNys0NGNaaENsczZGcjk0cWFtcG1EVnJsdFVPaFJCaTNmTDczSDBXM0FCUXJxcEI1M3h3aVV4VHJhQ2c0TVBYWG51dDdweHp6cm5BNVhJdE85ajNxS2dxVHZ2bmhmajlZNC9naGh0dnhoL1dQSFhNSGNjenoxcUVNODlhTk96KzB0SXlmTFJ4NURtbUo1NjRJT2tYMStsMDRxNS8rM1hjZmRmOGJIamZ6M256L3lsaE04U1MwbEk4OXZqcWhIOWJGRVY4dU9GL2orcHhPcGpYSE8xNGZkUGw5eWZQa3h3SWgvLzAycjRQMzcvclFHVWZaM3JHRWdITjlLY3BBRFdnUmcyZ0VRcWRnRklDUWtVUUtpb2FKQUF5a1F5b1FZYmI0ekdTYi8xRFByWHM3QndqcGNQTVUvdmU5dzYrV3RHcTJQbWFhOEdDazdCZ3dVbkQ3cGNrQ2JmY3VuekU1eDZUWUdNZk5BODMrNVlBY0JiY0ZFV2hab1VDSDFTZ1hLVUNVMjhhQU8zODg4OXZCZkJrYTJ2cmwzbDVlVmNTUWtadHdxNXJHcjUvNGdJME5UWEZSWG9FVVlSK0JKdDNUcXp4dVVSUlJEZ2Npc3VYMUhYOWkxMjdkbFdlOG9NVGQ0QkxaeG9CYWpFeXBOSllkdzZkQUdhUWdFQUVvUklFeUJBc3FMa2d3K1gwd09QendlZnpXVDYxbkJ5alRLcW9NSEdlV3FMbDhYZ3hNQkErcU1jZHlTVWR5eCsyMSt2RjdObXpJWXFpdFkwQ09tb3FPQll4dFFjVm1HMnEyMDFUQUZvd0dQeGc3ZHExWDExd3dRWG5lVHllbjQzMi9qSXlNdkIvZi9HdjZPZnkzUEx6ZzlqZDNJUllMQWFxNjZpdHJVRmhZZEVSTzBadXQyZUNDb2Q0Ykw3Tlk1YnN0WE55Y3REUnNkY0NXeWpVLy93ZlgzaitvL3Z2dXpka1UybDg1SlBmZUtpWlppZDBFMmpVaUh3S1ZBS0JURVRxZ0FnSFpMaUlETGZEQTA5SkRueG1TZ2VER3QvOTFwNm1rV3hOS1M3QnJzYjZFZUhtOFhneHBiamt1d3Myd0NpL3NzUE5EcmtFSmlwVGIvWXFCY3I1M3BocHFwdW1xUVpBWGJac21iWnMyYkpuNnVycVBpMHVMcjVFRk1WRHlzbkl5OHZEcWFmOU15Ni85Q0trcEtSYVpVeEFmTHJIVjlYYjhNVGp2OGY5RHp5RXFTVmYvME5PZEtXZldFRFlITktiYUFuZjBqRUxoL29oSmtraG1UUnBFdHJiMjlIUjFycGhkMHZyMjB1WExHNUtvdEo0bnhvTGpNV0dWSm94UmNxNGNCczFuNElnVWtrU0lVbG1odzZIREFkckVtbk9LR0Q5MUN6ek16L2Z5Rk9iVm41SXFUWXBxYW1vT0c3dXQvNzVIOUdaQjRkelVVcXQrUWt0TFMzbzZPaEFWMWNYZW5wNjBOdmJpM0E0akhBNGpFZ2t3by8vSTl6Z1pxTHJPcHVsUUFDd2VRcWlDWGlaVXVvQTRBRGdCT0FzS1NseGJkbXk1VWVOdTNaZG1SczRPb00vOTNic3dkeEQ2UERSMU5TTTd2MzdKenJvRGp1T2Jjakt5a1JoZ2s0VFRjM042TzQrK3Nkc2IwY2JNak16VVpTZzBTU2xkRTluWitkL3pwa3o1NU9Pamc3RkJyVm9Jb1VHSzlwSlZCaU5JVFRURXFGc015dDBJRWtTSk1tYVV3QW5CemFQeHdPLzM0KzB0RFJrWkdRZ056Y1grZm41bURKbHloR3RKZjVPS3phTHdJUmc1c3laN0FNYXB0enN0K1kyTEdKS0NLRW0zTUFyTjJhYXdwaEdyd0ZRNit2cjFZeU1qTW9ubjN6eWt3VS9PR1Z4UmtibWxVZjZpaTdMOGlFOXA3QndNcnE2T3JHM293MCtmOHJFeklOUVAwS2hmbWlxbWhCcUFGQlVXSWpPenFOM3pOaDcwalV0SWRUQzRmRExiN3p4eGtlWFhYYlpnVkZVV3BSVGFOWkVkbE9sYVNiTWRBNW1Sc2RiMmRiSzI4MzFValBiZVdkblp5TVFDR0R5NU1rb0tTbEJlWG41bUQ0UHhveGk0MWREUXdQcTYrdlIzTnlNOXZaMjdOdTNEL3YzNzBkZlh4OUNvUkRDNFRBR0J3Y3Q1V2JPWENEY0dFQmV2UW1tZWhOTTBFc0FKRTY5V1FydS9RODJWRXdwTGw0cWl1S1pSK0wvMWJtM0haTUN1WWZjdG9oU2lsMU56ZGkvdnh1YXFpTVMrVzQybjNTN1BSQkVFVm1aV1Nnc0xCaFZiVFEzNzBiWHZuM1FWTzJJSFRPMzJ3TlJraElxTlVWUi9ydXFxdXEvNXMrZjM4SUJMUm5VRXBtZDZwRFphUUhObUUxZ0FzMG9aSTlYYUY2djE0SmFSa1lHc3JLeU1HblNKQlFXRnFLa3BBUlRwMDRkOCtmQ21BUWJBTFMwdEdEbnpwMFczRG83TzNIZ3dBSDA5dmFpdjc4ZkF3TUQvR2kvWVhEVE5JMll3NXZabUQ4R04yYWVzcEYvTWc4M0FNNVBQcTFha0pPVGUvN2g2dFE3RUE0aDFOOEhnQjcyUnBNVDY5aGJ1cTV2Yld4c2ZMdTB0TFRXVkZ4MmxSWkxvTktVQkNwTjV6WnFXakJKb2VZeDB6bjgxbnlDZENQeWFVS3R0TFFVQldZbHlWaGYwbGg5NHdVRkJUQ3JEbUFXeFZ1M2ljeFYwMFNsZ2lBUVFSQ2dLQW9saExDR2wvYkFnaFVwSllRdzA5UTZBWStmZTl6N0pTVWxteDUrK09FelVsSlN6aWVFZkczZDd2ZjdJVWtTOHZJbUlSQUlUSHpyeC9HaWxPNW9iMi8vNjhLRkM2dHFhMnNaek95K3RKak5oOFpEelJZY3NJWVhVMUVVcVNpSzF2ZEJsbVhLZXU0eHFIbTlYZ3RxUnBEQWJEdFVXSWl5c3JKREh2MDRBYllqdEhKemM4R2FVUEtBU3dRMXp2ZkdaaUVTUlZGQUNHRUp2WlFPRFRYVmJXa2hHZ0RWbkcrcW1QNDM1ZHh6ejMzcmpqdnUrUERXVzI4OVBTMHQ3WHhDU1BIRTEzZGlKUURhcnE2dXJyL2VmZmZkVzllc1dSUGxUTWxZQXRPVDNTcDJzNU9kaTh5WHhpYXkyMVdhTE1zVzBPeFFZd0VDbHM1UlZGU0Vzckt5WWUyRXhyd3AydFRVTk9iL0U1RklCSTJOalZhMGROKytmVmEwTkJRS1lXQmdBSU9EZzRoR281WlphaGJvRWxZenljeFNMbXBLYkthcFNDbVZtSW5LK2Q4Y0FKeTMzSEpMeWhWWFhMRXdKU1ZsNlRkcGFqbXh4aFhRR3ZmdjMvL21talZyUG4zMjJXY2pIS0NVSkVDTGNiQ3pSenVaVXJPaW5jejg1S3dVcTlzMFUydDhvQ0ExTlJWcGFXbm0zTThBQ2dvS1VGeGNESmZMTmU2Ty9aajFzU1U0aWJCanh3NDBOalppejU0OTJMdDNyd1U0RmxSZ2dPUDlic3ozeGdHT21GMTlDZk8vSVQ0MVJJUVJYRWdFT01meTVjdjlLMWFzT0RVakkrTmNRc2lNaWEvM2Q5S0hWdFBaMmZtM1gvM3FWMVhQUFBOTWRBU2cyVGZGTkR0VkRtWWFiM2JhVlpxcDFPS0FsaWp5eVlER1VqbUtpNHN4YmRxME1adk84WjBCRzF0TlRVMW9iR3hFYTJ1cnBkNE9IRGlBdnI2K3BFR0ZCSUdGdU1ncFUyOE1jaGpLZlVzS3VPTGlZc2ZHalJ0UHlzM05QVnNRaEJNbXZ1N2pmMm1hdHJtbHBlWGRrMDQ2cWJxMXRaWEJpUWVhY2hCQVk4K3pBZ01BS0IveFpDcU5EeEFrQ3hLa3hFMW5EeUFZREtLNHVCaEYzOUlnNHdrZjI5ZGNSVVZGZkZ1ak9CL2NLQUVHZGlWazZvMXFtbWJsdmNITWRUUFZXMXh3d2VaL2l3RndORFkyT3ZMeTh0NEY4RkZkWGQyY29xS2loYklzLzNqaTZ6LytWalFhZld2Nzl1My9NMmZPbkYwY3pIaVZGa3NBTlNVSjBQamdRRnlTTGEvU2VMUFQ0WEFNODZjeDA1TlA1eWdvS01EVXFWUEhWWkRnT3dNMndBZ3E4SDNiWEM0WCtKUEFEcmRJSkdJQkxoYUxXWkZUQmpjdXVFRDRrWCtzUXdpTWZDSVZnR0lxT0F0d0FCeGxaV1ZiQUh6KzdydnZ2anB2M3J3ZitIeStzd0VFSjVBd3BsMGZyZjM5L2UrOC8vNzdueTFldkhoZkVxQWxncG95a2tJekw1aDhsQjRzcHNXdGtKVHlBQUFUVGtsRVFWVG1CdWk2VG5WZGg2WnBWbDh5UlZHc0JIV202QndPQjhMaE1OeHVOL3I3KzlIYjI0dnQyN2RqKy9idGgrVVkrUDBwRUVYQlNobVpNRVdQb3QrdHJxNE96YzNOYUd0cnc5NjllN0YvLy80Ui9XNW1LVmJDNEFLWDFBdlROR1dsV1hGQkJwdUp5cHVxTWdESEpaZGM0bHE1Y3VYOG5KeWMweVJKT20wQ0UyTm5xYXI2Zmt0THkvL2NkTk5OdFgvNXkxK1Vnd1Nha2dCbzlxQUFnNWxPaUFDanhsT2dnaWhDRWtXSXJDUktraUU3WkRoa0I0eXA3S1pTYzd2aDhYcmg5L21Sa21xTXhzdkt5a0p1SUlCZzBBZ1NIQWwvV3BqTHdaeDdET1Znaml1d1hYVFJSWGoxMVZkeC9mWFhZL1hxb1g1ZnJhMnRhR3Bxd2cwMzNJRFBQdnNNNTU1N0xnb0tDcEw2M2JpRVhwaCt0NUdDQzJRVXdFbEpBQ2NEa0JjdFdsU3dkdTNhK1RrNU9RdS9TVDdjeERxaUY4Z2RQVDA5SDN6MDBVZGZMRjY4dUp1RFVpS2dLVW1BcGlZRG10a2prREpmR2hFRWlLWXZUUlFOb0VteVdSb2xPeUE3SEhDYVVITzdYSERINWFnWjZSeFoyZG1tK1RuNXFLaXB6cjN0eUpzVU9HWnlNY2VkS1NyTE10NTQ0dzA4OGNRVDFoVXFHQXhDRUFSVVYxY0RNRHAxQmdLQllUNDRleTVjTEJhREtJcFFGSVZsZFpORTVxbk5COGM2aFFpbWlTcHhKcXBrbnZBVzJOYXZYMThmQ0FTYUFieStiZHUyOHFsVHA1N2dkcnRQQXpCUjFmN3R3cXh0WUdEZ2c1cWFtcXA1OCtidFpqN1Znd0FhdjZtbVF0TVNtWndNYUlJZ1VFcXBtVjlwSk5xS2tnaEpaTFdlRW1UWllTZzFGaVJ3R3BGUHR4bjU5UHVOeUdkR1pnWnlzbk9SbDVlSHlZV0YxcXpOSTcyOFBqLzI3dDA3QWJZanRSWXNXSUFOR3paZ3k1WXRtRDkvdm5YL3hvMGJNV2ZPSEd6ZHV0VXE5alVuemNjQkxod09XMEdHU0NSaUFjNVViOVFlWE5CMW5ROHdKQW95YUFCRTg0b3RVVW9aMk94S1RwNDFhOWJuQUw0QzhQejI3ZHRuRlJZV0h1OXl1VTZaZ056Umc5bmc0T0JIOWZYMVgxUlVWT3ppMVZVU29La0hDYk9FUU9NREE3cXVVMW1XTVV5bHhabWVUcmo0ZEE2dkY3Rm9GRnMvK1FRWFgzSUpNak96a0dPbWN4UVZUWWtiUlB4TlYyMXREZDUrNjAxVVZNekI2V2NNTDVYMmVuMEk5ZmNlTTUvbHVBTmJSa1lHVGozMVZGUldWc2FCYmQyNmRiamdnZ3Z3NmFlZkloZ01vclMwRkI2UEJ6VTFOYWlzckVSUFR3L2NiamZLeTh1Um41K1B3Y0ZCU0pLRW5UdDNZdCsrZmRhZ0UwbVNhR1ptSmtSUkpLRlFDSkZJaElxaUNOYXhGd0FSUmRFQ25LN3JnbWwyaUdia1ZEUlBmR2FtU2dsQUo1V1hsMjhGOERtQXRWOSsrZVcwNHVMaU9SNlA1NFNKM0xqRHUzUmRyd21Id3gvdjJMR2o1dmpqaitlVm1jNkJhU1NncVJ6UTdPWW1pNXpUWkVCajZSdXFxc0xoY0VCa0hUa2swNEpnS3MzaGhOTTEzUFQwcDZSZ3puSEhJUmljYktSekZBU1JrM040bzU1UFBia2FqWTBOR0FpSGg0MWw1TmZSSEN6K25RTWJBQ3hkdWhRUFAvd3dIbnp3UVFEQTRPQWcxcTlmajVVclYyTEZpaFZJVDAvSDdObXpVVmRYaCtlZmZ4NlhYSElKQ2dvS1VGdGJpemZmZkJPeUxDTVlER0wzN3QzbzZ1cENhV2twWkZsR1QwOFA5dXpaZzRHQkFhU21wdEpZTElaSUpFSjBYWWZYNjZXYXBpRVNpVURYZFNwSkV1R2lxTVM4V2dzMk01V3ZhT0EzSG5UUzdObXp2ekNWM0t2cjE2K2ZOSGZ1M09scGFXbHpaRmsrQVVEcUJKNE9hZlVxaXZKeGQzZjNsNXMyYldwWXNtUkpONFlpa2NuVVdTS284UjAyVk50emRVNmhVYjQvR2t1d0ZTd2ZtaEhCRkFTQk9wMHVQajhOc3NNQmdSRHMzcjBibXFwQ2xDVE1ualViK2NFZ0tBWCszOXR2UVJBRXBLZG40SkhISHJlc2tGK3VXSTYydGowQWdKNmVIbmk4WHZ6NWxkY0FHSjF4bnZqOW8ranQ2MFZHZWdadXUvMlgxcEFlQUhqdFAxOUZaZVU2Ni9FQWNQVTFQNFBENGNDcWxRK09tUTk1WElKdDhlTEZ1TzY2NjFCZFhZMlpNMmRpL2ZyMW1ENTlPZ29MQzYzSGVEd2V2UHp5eTdqNDRvdHg3YlhYb3EydERjRmdFS0ZRQ0pzMmJVSkZSUVZ5YzNQaDkvdVJsWldGU0NRQ244K0hmZnYyUWRNMHVOMXVSQ0lSQUtEcDZla1FCTUV5VVZWVmhTaUtiTllDaTZJUzB6UVZ6UHNZNEVUeml5S1pxazYwUVk0SG5iUm8wYUpkQUZvQS9MMmlva0orN3JubmlvdUxpNmY1Zkw3WmtpUjlEOEJFSzEyYmtGQlY5ZE8rdnI3cXVycTZ4cXV1dXFxMXBxWkd0eWt6eldZNkpnTWFEelArT2JyTjNMUVVtcmtoR2RCWXp6UkNDRnd1MXpDVnRxZHREM0t5Y3pCOXhneW9xb3J0dGJXWS8wOG5JRDA5SGQvLy9vbUl4YUo0OVpVL1l4bzMzL1QrQjFjYUJPL3R3Yyt2dVFvMzNYd3JBR1BPNTMyL3V3ZS91KzhCVEpvMENlLzhiVDNXUFBVazd2N05iNjNuVnN5Wk02enpzTVBoR0hNZityak5ZMXV3WUFGZWYvMTF6Snc1RSt2V3JjTjU1NTAzN0hIVjFkWG82dXBDWldVbHVNbFcwSFVkMmRuWmNMbGNhR3hzeE02ZE82MDBFVVZSa0pLU0FxL1hpNEVCbzRlWDMrK0hwbWxVVlZVTURnNFNWVlVoeTdLVmEyUkdVVmsrRWpYSGFRMVRjS2FaYWxVMmNKQkxCRHZwaXkrK2tPYk9uVnNOWUR1QXR3b0xDOFdYWDM1NWNtbHBhWEZxYXVvMFdaWm5Fa0pLdmtzVW81VFd4Mkt4cnc0Y09GQy9mZnYyNXNzdnYzeHZhMnVyYmxObGlkUlpNcFZtL1k0bFk5ditCdTgzaXpNM2VhQnhDZUJ4UUdNS2pSQUN0OGM5bE1aaG1wN0JZQUYyMXUxQVcxc2JTa3BLY01sbGx5RWozWWg2QmdJQlJLTlJ1TjN1UkNZMmZuUDNyM0gyT1QvR3ZIbUdTMmJYcmthMHRyYmdEbk5ndDA1MWVHMURWY3JLcHFHc2JOcVlQdytrOFhxQ0wxMjZGR3ZYcnNWdHQ5Mkd0OTkrRy9mZWUrK3d4NmlxaWx0dXVRVS8vYWt4MDdLOXZkMXFPUzZLSXQ1NDR3Mjg4ODQ3S0M0dXh1VEprekZqeGd4VVZWVkJraVQ0ZkQ1cmlJdlg2N1ZTUTJSWnB0Rm9GRTZuazVqUlUycUxvREt3V1ZQc0thVzZlUitEbkFBalJZQXZ3QmR0Z0J1MjM5emNMSjU0NG9rN0FOUURlQmVBdUdyVkt0L3BwNStlbDUrZlA5bm44MDJSWmJsRUVJUnBNSHJMamVVVjFYVjlSeXdXYStqdjcyL2V2WHYzbm5mZWVXZnZuWGZlT1FndUoyd0VtQ1dEV3R3K3A4eml6RXliT3FNMm9GRytrd3pmWWNZT05MWUJnTmZqalE4UWVEekl5OHZIak9uVGNhQ25CenZyZHFDOXJRMDMzblFMSnVYbElTOHZEenQzMWlVOE9QL3g3Tk53dVZ5NDdQSXJyUHNVUlVFZ0VNRGFGMTRjOXhlNGNRdTJKVXVXNE1ZYmI4VFRUeitOc3JJeVRKa3laZGhqcGsrZmptM2J0cUhFSEtaU1VsS0NaNTU1QmhzM2JzUlZWMTJGVFpzMlllSENoVml3WUlHVjg3WjU4MmE0M1c3NC9YNXJxclhYNjdVaXB3NkhnNWtWbEc5b3FXa2FCRUdncXFxQ1VncFJGQ21sbEpoQkI4S3BPRlo0VHpqSUNTYmtoQVNRRzNILzFsdHZIUVRRRGFDR00zMkZ5c3JLclBMeTh1eXNyS3hjbjgrWEo4dnlKRkVVZzRTUUFnREhTcnVIQ0tXMFJkTzBQYkZZckQwVUNyVjNkbloyMWRUVWRGOTQ0WVVITUpTZHI0OENzMlFLTGVFK0J6UGREak1NRFFDaXlkUlpJcURaaXRhdGpVWGpBY0RuOThlVlJ2bDhQbXpkK2dtbVRTdkhxYWVlQnJmYmpYdC9kdyttbFpmRDUwdnVjZGk0Y1FNKy9PQUQvUHZUejhZbDVaYVVsS0N2cnc4ZmZmZ0JmbkR5S1dob2FFRE5WOVg0MFkvUHRSNnpjMmNkcXF1MzRTYy9XVG9CdG1OeEJZTkJ6SnMzRDNmZGRSZnV2UFBPaEk5WnNXSUZ6anJyTE54OTk5MjQ5TkpMVVZOVGcrWExsK1BtbTIvR2pCa3prSldWaFk2T0R2ajlmaWlLZ3ZmZWV3K1JTQVN5TENNOVBSMzc5eHVUejMwK24xV3h3RTVTdDlzTlZWV3hmLzkrcWlnS2ZENGZKRWtpZzRPRDBEU05NajhHU3hjUkJJRVYyNE1CYmdUSVdZQ3lkUjBaYWVPVGg0VWxTNVlNQU5qRC9WMzJHdVRSUngvMXpabzFLeVVRQ0tTa3BxYW1lRHllRklmRGtTSkpVb29vaWltQ0lQZ0lJVDVDaUpjUTRqWkJ5Qm9Bc05jQ0J3WnJiQnlsZEpCU0dxYVVoblJkRDJtYTFxK3FhbDgwR3UwYkdCam83K25wNld0dmIrLy84c3N2UTh1WEx4L2c0RVZ0SUtNandFeTNLU3h0dEkxMTBVZ0FzamlZOFNBRFM2ZzFwNlR4NWlhRG1hMnRVQnpRV044MHA5TUpTaWxTVTFOdHJidFRjZFpaUDhTNzcvNDNHaHZxNFhRNmNlZGR2NExQNTBOcmF5dHV2dkZmb1NneDlQYjI0b0x6bHVBZjU4N0Y3Yis4RTZzZmZ3eVJTQVRYLzUraENaS3JuL29EL0g0LzduOXdKUjU3NUdIODRkL1h3T1B4NEdiYjRPR3F6ejVEWmVXNk1RKzJjVmQ1b0tvcTFxMWJCd0JZdVhJbGJydnROalEwTktDNDJPZ0JLVWtTWG5ycEpWeDAwVVVBZ0QvOTZVKzQ3Nzc3VUY5ZmowQWdnS3V2dmhwMzNYVVhDQ0hZc21VTHJyNzZhdFRXMXNMajhhQzgzSml2V0ZWVmhXWExscUcydGhaLy8vdmZzWGp4WXF0cVlkZXVYV2h1YmtaRlJRVVVSY0hPblR1aHFpcUN3U0NibG9YdTdtNm0xQ0FJQWp1eENlZUxzeURIOWhOQUxnNTJuSm9URW9Fc3dUNS9tMmpqWDJla0RRbHU3ZnR4YnJBRSsvenRTSnNkWlBZdG1Vb2J0czhHOXlTQzJHZ3dZL3UyeHFVSEJUUmVwZkhOSUh0NmVqQnBVajY4UGkvOGZuTytwMW5BbnBzYlFINSsvaUdOd2ZzMlZzUE83VGo1NUpNbndEWldWbTl2TC9iczJXUDUzK3oxcG14NGpMMlpKVmR6Q200TW9GVzh6TXhVUHNqQXlyVzRzaTMrY3lJMjBNVkJqbElRZ0E2RDNTSCtuQWhzUE9DRUJGQWJDWEFqd2MwT05DU0EyRWdLVFUraTF1eU8vVkVoWm5zOTNtL0dZR2JkY3FhbmZYQTN0WGR0WmpCenVkeElTZkVQYXdMSkZGcDNkemNLSmhkWnpTQXpNak90NG5LL1AyVk1mRStPSmJDTkcxUDBoQk5Pd09iTm04ZGNFSSsveUtTbXBqTHpsSEpkSEFqWDNZRVFRdUpVSEl4eGdjVHcwMEVBQ0VrRUpVb2gyS0JIUmdIYVNIQTdGT1YyS0dBN0ZMTXpHZUNvRFdnakFVeTNBd3dnbEJCUWdJQVFDMlFHekFRQkFqRWhKZ29RK1JJb3RobWxVRU5xVFpZaENBUUNJVkExRGRtcHFjTWFRZnI5ZmhCQ0VBd0dvV2thZkQ0L1VsTlM0ZlY0MGRmYmg3N2V2bVArUk00UEhsdk5hc1lOMkRadDJuVFVYb3NmMk56ZDNSM1h5REljRG8vVXFkZFNib3FpV01yTlZHOThEU3JoRkJ6bGxCeTdwVFpUbGNGRTU5VWRyN0lJQVVrRVBRNlNvNEZNR0FWb3lhQkdFa0I4TkxWR2t5aTNaS0JqY05KSGVnNXo5ck9ac3B6elA1RXFzOEdNUUJEWTdGcUJDc0x3bVJxU0pCbGdrMlRJSnRRY1pxS3QwK0dBcnV1UUpCbVptWmxXNVFCckJDbUtJb3FMcHlMYm5FVXdzU2JBZHRSWFFVRUJjbk56MGRiV1puWHBUV1Nlc280aEl3R08zeGpZUm9NY0J6aG9ta1lKa3hoRFFJdURqVTNoeFVHUFN6MFpCakRUdEIwSlpFZlN4MmI3bVNtcHBNQ2ppWjdQZGM3QXNIMkQ5Z2JRQ0FFQkFSRUlGUWhCbkRvekZCb1ZCUUdDS0VLMFEwMlNJRW5NcDJaQVRYWTQ0SkJsT0V5ejA2Z3FFQ0dLQWdLQmdOV3VteldDbEdVWjAyZk1PT1NCMlJOckFteUhkVGtjRGhRVkZWbUE2K3pzdE5xUTkvVDBvTCsvZjBUL1d6TEFjZjQzcTRNSUR6a3VpZGlDbkdtZUluNjRQYS9jQ0V4QVlRaDJJT3c3bmd4WU5wVTNxaitOc24wNmltSWoxczNCUUc0VTRQRS9HK1lqLzNkc1RuOEFvTHBPSVFnQ0RKNFJhdlkvQTdHVW1jQUZCa1RUN0RSdmVZVW1Nb1hHQWMxVWFQSEJBVGM4SHNPWHBpb0tKaytlYkxYclp0T2lvdEhvaUZBalZWMGdUMVlCOVQySC8yUXVTUU85L2pqUTQ3SW53RFllRjZVVUhSMGQ2T3pzaEtwcGgxVFVHNGxFME4vZmI1bWpiRXZXeUpKdGxBSTZwWkFrQ1U2bmN5VEFRZE0wdnByQmdwd2dpS0JVcDdwT1RjRHBvQlNnb0t6OUtnQkNUUENaMzNlWUlCd09LaTZnUkVhNWpkdTNlSFZ3L1F6cElTcTUrRGVmNEhkY3poWmwrYytpS0ZyUFllYWxwbWtRUldrWXpBaWZnMmI0enl5b2plWkhrMDJ6MCtGd3d1RjB4QUhONHhtYXZENFE3a2RwYVNseWNuSVFDQVRnOVhvUDdnUmJYUVUwOUJ5WkU3KytCK1RKS3RCbno1Z0EyM2lFV2xWVkZVQUVlSDErZUwwKzVINk4xbEtEZzRQbzdPeEVkL2MrOUppVDZmdjYreEFPaFJBT0QyQndjQUNSd1FnaTBRaGlwbm9iR0J4RUpESUlWVkdNcTNwaTh6UnVZNHBOVlZWSWtnUmRwMFNuT3FpdXd3Q2NNUnFWUldWTkFCRFo0WUJ1bXJxTVJ5eTZOOFFuQWs3TklZbDV5WU1TQjJHQ2pnSTJBa0tTQWk0T1dQR1A0MzRtaEplYW9KUmFkWmpzLzBnSU1TcEVIQTdtTzZNTWFoYk1ERC9hY0xOelJLQ3h0a0l1dU53dXVOMGVlTDBlZUgwK3BKanBHMm5wNlFqMzk2S2lvZ0llaitlUXppdHlwS0RHd1czQ0ZCMkhxNk9qQXlBQ2NuSy9XYmRSdDl1TndzSkNCQUs1Nk9yc1F2ZCtNN2pRMjJ1WnB3TURZUXdNR0RDTFJxTndlenlJeFdMbzcrdUZKRWx3dTkwam1xaE10V21hQmtWUklFbnlVSkJoQ0c1RVZZMi80WFE2emNlWS9qaFJoSzRiMWxzMEdqV1VpaWhpeUpaRkhOZ1NwQVF4Zm1Bb2RrRVRYaXlTdGFObWJhRGkxWlQxUEdyL3ZablF6SVBOQWxnQ3B6OElJZEEwRFE2SHd3SWFNeThCd09sd3hxZHFpSUwxR1ZGSzRUTHJORjF1RjBSUndoZWZWMWwvMStQeG9LUzBGSG1abVhIcEczYUY1dmY3a1pLYWl2VDBkR1JtWkNJN0p4dXR1NXNPR1dvVGF3SnNYM3QxZG5iQjYvTWZ0ci9uZExvUUxDaEFZTklrTS9ldDIxSncvZjM5Q0lWREdEQVYzT0JnQk5Gb0JBNVp4dURnQUh3KzM0ZytPSDZMeFdLUVpVZGNBYjhKT0txR0ZCQkM0UGY3VFJWSENhVTZkTXBNVm1vTXJ5RUNaRW5pL1hTY3YyN0lGY1lCei9xSERPME5neDhiTkdLREcxVlYxWUlWcFlDbXFTQ0VRaENNYWd4RlVVQUVBWkpvdkNkVlZhRHJsQnJGNGtNcXpYTDYyemFCR0NhbXBxblU1WElOeXpkajRPS2hGZ3FGRUFxRlVGdzhGUzYzRzNzN090RFd0Z2V6WnMwR1UzM2ZPMzRlMHRMUzBOZlhoK3B0WDhMcGNHTEd6Rmx3bXdyTjQvWEE1L1daTGJvTmhaYVJrWW5zN096RG1seWIrZnhpS05XZDZGdjF2d0NBakNkK2lJRzM2aEI1cHo3cGMvelhIUS9uS1VYWWQ0SFJqc2g3K1d4SVU5TFJlOCtIQi8yNm96V2JQSmJXL3djYUx0Ynd1T0xUcXdBQUFBQkpSVTVFcmtKZ2dnPT0iXSxbInNyYyIsImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBVFlBQUFFMkNBWUFBQURydkw2cEFBQktvbnBVV0hSU1lYY2djSEp2Wm1sc1pTQjBlWEJsSUdWNGFXWUFBSGphcloxdGx1VzRyV1gvYXhSdkNCSy9PUnp4UTJ2MURIcjR2VGNqczF4VnRsLzdyVzZYcXlJejRzYTlFZ2tjbkFNQzBMWC85Ly82cnYvNnIvOTZTbXZoU3JtMjBrdTUrVi9xcVllWFA3VDc1My85L1BlNTAvbnYrVjhzdi83MC9QWDcxeDgvQ0h5TnZ2TG5CL1g5K2ZxOGZELy80eGQrZjhZei92cjlxLzM2U1dpLzN1alhEM2pqbnl2d2svM3ordk5GOHYzdzgvMG4vWHFqdm4vK1VIcXJmNzdVOGV1TjVxOFhua3Y1OVcvNjQ3Sit2dmozNnkvZnFLelN5bnhRREdISEo5N252K25uQ3VMUHZ5Ly8xdlBmd091ZUdQbnpFOXQxdnZ5K0pSYmtMN2YzKyt0OS8zbUIvckxJdi85MC9YMzEvL2pUM3hZL3ZMKytILysybHVYWEd0M2xYLy9neVgvN2Z2empZOEpmek9HUEt3cC8vY0VZNlo5djU5ZS8zN2ZhOSsyZnUzdFRZVVhMTDRzNmkvMzhmaHRlT0ZqeWVINnQ4RS9sMzh5ZjYvbW44MCs3MzN1eTVldWU5K0NmK2ZRbnNDdmY5YVJuUGUvelBmdDhuYy9rRWxQWW9mSTFoQm5pK1Y2TE5mUXdvL3VVL09mNVFvMDlydGpZeXhuMnhmYWxHUDY0bHVkOGJqK2ZONS9HSjYrSGw0YUhOM3Y0bFgvN3ovWGYvZkIvOHMvMWZkTWxldTcyeDFweFhVRzc1akxjT2YvTHE5aUQ1L3UxYi9rczhPOS9mbTMvL1NmN3dWVFp3WHlXdVhHRDd6MSszbUxrNXgrMkZjOCtSMTZYK2ZxenljOVYxNjgzWUluNDdNekZQSkVkdU1zVDgxT2V1NFpRbjRkMWJHelF5NVdIbU1KZ0I1NmN3K0lpUTRxeGhLdUdGdnhzZnFjKzU3VWhoeEw4TnRqRVJ1Ulk4SzNHRHIxc1Zrb1orNm1wWVVOdmpqbmxuRXV1dVYyNTU3ZkVra291cGRRaXlMMDExbFJ6TGJYV1ZudDlXMnlwNVZaYWJhMzE5dmJRSXhpWWUrbTF0OTc3KzRicjVZTmUzdXZsOVMvZkdXSEVrVVllWmRUUlJoL3Z4SHhtbW5tV1dXZWJmYjRyckxpQWlWVldYVzMxOWU3bjJpREZUanZ2c3V0dXUrLzN3OWErK0tVdmYrV3JYL3Y2OS82eGE3OTI5Wi8rK1IvczJ2TnIxOExaS1Y5WC85ZzF2bnZWK3ZzdEh1RWt1MmZzV0VnUE8xN2RBUXc2dUdkM2UxSUs3cHg3ZHZlQVUrVEFSV2IzNWxxUE84WVdwdjJFL0QxLzdOMC9kdTQvMnJjcnQvOW8zOEwvYmVjdXQrNy94ODVkYk4wLzc5dS8yTFZsbkp0bngzNjgwRFc5STk3SGE5N0FGWDFqZmZ5MXhDKy84YXZqMjdOdVlkSWYvK2MvdlY3dlo3LzE0VjdMdStwVGMwaWx2V3h1SEozTEdIUGlWMmxFTDJXL2laZU1IZExYV255NWc5bldNKzg5cmpCbkhMdTJKKzg2ZHN4ZmU0RzZiK3kxVjU0SmU5cVR6MXExMzJ2dDhYQWZNKzkzalRWQ0duenVFL29NcVY1UDQ2MG02NFgxM1h2WG1RWTJzTCtZNy81OE5lMzY4TE9ZNTczbUhwM3RIUFVlVDhwanMyT0EvOHN1WWxUWFRLTFZzK2FxTDhRa3gwMTRmZGZMT25RdU1lVEJubGJXSjR6U0FmWTN6L3FOVk4vd0xTeHJmaVhPWEVlNklEVjEzaXhHYlFtRDdrU1ozc3Yzc01GZjNTekdIUHh4eGEvTkw5eGNudjR6b0NGMThxNnh6b0J6enE5ZGJlV1MwbUtkWnI1SHVWc1A3UHNjUUg3ZnE0VTFTMXhoclB0TCtWc1kwRno0UVk5NXJ4cHEzeVd3RVNtWHE3U0hQZmxxNXVhTU4rdTcyWXpPNjl6WWY3UDV6OHlyY1RIQVFTejl1MGNxMXpEZ3hidVV0UWF3d3EyRnVQRWpEQk96aldzVXRqbHlLWFBFL1BJSkJjZC9CNSs4NDZoY3lvTWg4R3ZYR01lcS9qdUwreGMvbTZXTVdQYVk4Y09wOTJ6ZkZkWXFIZmVPaWJET1BXTWJLVXhYcHNjMlYvYlcxajYzK1h3dllQL0hXMk10SWJBaFJQcjJmQmVoL1FGOUZtQ0NLZlc1dWNmK3hsQXg0bWVYd1hLWDhSVSt2UlI4OHlQQ1l5ZnRUZmViV250NVQ4eDlyblcxOHVVSmlIM0huTXFMRFg3LzdncStmdlBpcjZWdngvcHhRVEdOc0h0Ym9PUDFzb1A4dFh3UkFNSzd1VXBRRE44SEZVYm5mbk1BU2NTczJPVis3N05lYkNBYUJSZi81bzlYNzY5ZVVoNHV2dGZ2aWQvWi9mMDFYZUZsaTJyQldwNVpndWF5ODRRbUxqeGs4LzZzSWV5R1QzMjBsVEJodFlTVHhJY2tQUXgzL1BhajV3NXNhb1JudlBWaks3aitZNWNkTUs2d0JSY3UxZGJmTC9MaGtYZTRObEc2bDhhT0R1Z1NLMVJUK2JCalhqbEhMOXQ3WHZ5aEZaYWtoNmZuRzJzTEtRZnViNy9TNzdyRzgxNnBqRldlZC9JcGdHdHZCQUt3R09OLzhsdnpSK0J2TlU3d2xML09BejR6cHhiM3lDek1malRIY1dOVTE4TTlWWnowVGJNMjdoNUhlOWRSRUptOWxJN0pMbExBMTBKZ0pmK2R5VjcvdVQwL1h2SEtHdzRYSmpmTkJSY2lUK2NlcERVM3hqZUJWVHhhT2xwRHdUS0pydlV0R3lOczd5N2xHNERBZ3BEbGN2ZlJpbXZFUlk5S0dKMVZUSG9IVjlRelZERUJwcE9RcHJrV1ByVHp5ZzF1d25uNC8vZXlpckVOWUpLVjRwNzUwekQyQVR2c3lWcFB2OHJUZExXT05RSlFmT0p1OGRDdXpYczloQzhDWWt4RXhNZFBHUnU4aWdSVklta3BzZDBFOC9SaUd2dGEvVTQ1Z28rZG5jZW5TOFpRSGx5clB4MThZSjltNUJjcWNjWlBXcVcrWHd0N0VqSW4vc1J2YmFJQWNZMzd3RnJaNWtCRVh1bmV4TS8rZU5zdmlBT3lEZEIxMTRKb1drRERBMFpoTWMvZ2QwZHEvVDdzRysrNVFPRmtWRFdDRFlKYzIxWGt4ZWkrQXRCa1FoUG9jRStDL2lEK3M3SjFQanZpOXgzR1V4OUR6cTQ1WFdQaTd2RVJFTURZeGtKeStiemxuQVQrR3JtaU1jcXp1TTNiMEFRUmdPaDhIU3dCL2lOK0dTQXJmTzlLOFNVOGNodjh6U1VocW1DNjVka3BHOGJBSlZaLzg0dG44VEdMbGdGckl4Vy9qemtsc0FFeUVhK1JGb3NPUUk2YXhTaG9GUHpxL25hQU9zQzI5b2RZTFFOQ1JkUWpYb3pBSGNBaXFtamEwaUljZjVOMXV6Wk9DSVpGU0VlcXdENlVZMGxDcHRZRGpFU1FzUzhpVFNHNFZqQ3NOTDZ1dlo4SmZNU1ZoYkV2dlZkSmE5OGd3ZDczT3dpM2tXQ2VYdXc4QXk4ZjcvSHRZcEM1VTJFbFo5dkljYkFLLzBPTHNWdllQcHp0SmtDK2hPUWJ1cGQwcHp1dnRVSW0zTDdiQ3dVRVNzejVXYmxCSE91SFMzUFJtTUtRSlJMU1lERWZzQkhZTlJ5K2x3eDI5bHN0QmJ6aVFSdkN4d2RqZmRBVUdDQXh6VVdGeExWYUNPRmpBOURneFFmZFpITUpKUmU2ekhDQ3pSUGVJVWg0TjVmUDRzUDFRSFo0M3MwTnNVNHBEYUltZG5BTEJqS24vdjVjRmplVzR4VXlSR2krSFhMWUMvNkN4QUtWY0NQOGpoc2hxT1pudndUbXNEYjJuRURWaVRNUVplL2FpWDdZS0phdjhJdlF4ZzVtOTRGNVlFejNCOW9BRzRtTDc4QXc5S2pnM1VSMGRoNEVaM1hlbk5oWjNwZGJ4V1Q3M250ZFMzNUJOQW9ZZDRzRHozZzdMdnBKQS9BYUtCWnZnQk1YMW4yOVdNbWNIZGJSY3lDWUpTVlc1WGQ2dmZTZVJQZ0k4QnRDOWF1ZHdDZ211QTZsSS83Y0IvV1FCa0FNWkJLK1dONVFGd3FoNUFGWTFjNlBCbS9VZVBsczNuWGlWckVNcENCMG5vMURYMWVNSXh2bmVvTkpnZ0VMcmM2YWFrdWJWWGxZbDRWbEJRSWtiTXJOVGMwZFJjZWtHZ2hvcUljMmMrdDU0b2tUTXdBdVFBYmVlMkUxaTFENlFNWUMwZ0NxU2VSWUY4eXVtU0tBanFVcUhpQkljQTU1R1ZFd3NaUlFwRGsvc0creElZU3JDVTBCUjNadVdncHNZY0w1MkRYQXZHdktQVWFpQXdJS2x3V3BXSFB6UGZ3V1ZCTmtqdEF3VENPV2I3NWdub3QrUWhXdndLbnJ2bnJDbTlZTDJ6VHlQVFVBeklRTDRESmtkQVdYRGdxaFBrQ1laMjNlSFJ3QmFOeHEyR3JxT0FnN2VvUFpnQWg0RHVKcWh2ZFRqVE5xc0JjSlhURENSSFI5Mk1EcFp3Z09OMkU3dzhwQmF3SXpEbG9ENEhvQjVIQ0xVREo0OVFiV0N4VGlBb24reUFEczVlMndpL0tDbkVRWGpIYjM1eDR2Q3h6QlVvSUlXOHJXb1VXZ3IwUWIvSE9OcEJXai8xaXhUdUJoWSsrcHo1NTBHeXNFUnR4dzVwNGpJVGRPSWhpVUFFSjhBL0lRclNlVmhZWUpRanM3N0gyK2NDUXVHWDhrSEJDOE96aUZIRzBoSmNJc1lWTWdMdGd2VXFVU1A5VU1GMFFwanU4dUh4NnNXZ256WXpIblU4SGtyK2NLeHpkU0FUeVREWUlrVHJidWdUQUNQQldUZnJHcmhHOWVMOUhLUDZKTStSTkdVSlArNnk5MWJpWEJzN2lxZ0o0QzFBSExoUVJDVmdTa1RKUTlZa2U0TE5RUHZJa2RKb0NPaWxJNUNkR0FrOVVYaEk0RUtaeDgrOEdHT3Q4WHFwYkN5OW9EVTVDS3lwSzFXY2VGZlV3WXdyY0NvaFg5M1JNc0VIN29Uc0FFMGJtOEFRZ3dDTVBwVWJSQjBJM0ZMNlFFbklhMHNNdDN2ZEFrMzBOY2hLR3lwSERhSmpYZXQxSWJVK3FUaTlrOVpKZ2Y5UGcxakhrRkV6S0dHNktGNzdJaDF3bmhSNmoxcGlEampTVU9vTklORkJwckJ5R08vK0JaZXN6NzVjNTFGUlRsQm9sYklPSmwvQnBKeDFaZUVjditqSTEzbDQrQ3dvRVk5TEsyUkVWZXlKMHZUTjBQWVZNSkZ4MlRhd2d4Z2pPWWl4SHRQSUNrQzdjWUgrOFA0bjFMVGY2OU4wNnZqZ1RtVW1oZ0M0dUh3NEVvMkNUT0FnRUQ2aUJWbnd1R1JZLzh0Z3MwakhzaEJGQUZEZmNObUVyMmN4QzRpK0J1S3F5ejZnTW43cUFRd1pOb2puYzExU3ZtR0hDOHVIRVJYZ2tNYnN4RzVNaUdZUUpRZmt0NkFOZTM0VkhObldjTkRpRDFrMVpFNDM1dk96RnA0akFENGNmSHNoTUp3aEpnNVRBRkZ1ZjgxZ0E4TUNlRFVkc0dJbHk1SnhPYUl4THAyRHN3Q3NrTW5zQjhMdmdBZkp4OU53b013UHJlSU4zTnZSQzdNZU1YTzRiRVRwWWZQdjZDZzF3Rmk4VjExd1RyZWdzYjJVYTRaSE1nQmFvZWlXc3VGYU5KWExNOHBCTnA5dEVvbU1lSUNlRDd5ckd6bDZWbEtURS9TRFpMUDVFUWdBdmsrTlhqbDJaRzRBZGxvQk80U0NWU3dmaUlJWlYvdi81RU16UklpVWVYSm1wT0JkNElZOHpyVFJnOGtRVyt6VzlYV0dFMFJUSkN4NGVKRWdBZ2R3SHlmRk41WHpFUzFQNDlzRnpvMzNvRVFaWWxYeTBaN0RHTDczTzdJakljVGNsNnZRQ0l2MDRVYmtab2ZpV1BEMUkrRXlTQmVBUEhiZnpwWFFpSkhTNTBZTTY5dzJ2TC9neTZCUFBLVnZ4YURoY2pFWWhRaWIyYmdJQUNzemhQVFRkUnFiRzF5QVFXdEpsaGYvZzczeFhIUzVBQmJLUXMxbzZqQ095QVVpb3plYkF3RVRWZlJnMzZTWWczS0czSk4rdk5HN1h3Qk5qZDRIS0krTUFQY2FraTVIQnRERGVqKzlnempHS1lNTVRKaUFBZzI1MzRYRmtOL0NHR2hjVmRFMHZlQ2s2azViY2lLLzF6UWR5RWx5VHFIYTcyNVVHWVFESHp1Wkcvb25wQjVZclNmUkNUZlVOR1lkWTNuSFBJWkFKeUQvNmNYendLQm9uUGNTUEFGWnJQZTRaVndqakdxTVh3U2lSOE5QRE94U0N6cXZENXI1YVZnSWlZUkpNVVJENWU4YjRxUHZpN0Y1TUM3MGNvYnhncGtwQXJZaStoS1lxTHBkOGs0aU4zK21IcGtLcWdac201aEhQa2xYbHYrSXFadEk0NzhUMkUyMjlidi83cFFoQWVLUEJ6SmdGU1lZNnNDT3h0QzNoM0FLSUQyaWplUmxsVys4R0xIaVJSdXZobDZUdWNLK0pWaElZTU9VSU9RRFVLWlA4TExNaG1sWEJzeURBaHlqd21sNy8rdGp2WDkzdHpjTkVjRGp2bURiaWhuUk9Pai9hUmZrYzJDeVoxQ0dEYmtERndGeFNxSzV2VUsxOVpGL3JtSVJ3VDdMeFRqMlpNRldmMkZpYi9uWk01S0J3b1FIamQzQlpzOWc5ei9jZEZzVWJiSzY4WksvbHUxRTh3ek8raDYwSzh3R3o4RFZuUmVLOGxyMFZheE5kTUw2UnU5M0diNlVXV2huakJmRk9ycHNyVVpWa1VoWEdFb2YzOXEwOG1aa2kxVFgraUxZQWErWEo5dUtKOW05dG1IV0NGSGJxeVppRFdvTGlBZkN6SENBZFlZcWNtdkJGUUQzK0R0MmJzR1Y0SHFRYW4wS2tROWc0VE80bW50eUpDUy93M1Y4SUs2TEd4d2poWXJGQU5mOHArSUJVeWVSR3VDdEVUTVlWQThKUjJtME1DODkrQi9YNTF3K2FnS093T2tmZE81dUtXeW1pZ0JBdnFMR2dLNE01MW44djQvdXlvZjc2UWp6MEc5cEN4alNoQzdNWVB3UisyRk9XTnIvRCtjUFRTRzhDR1ZtZ05KWHQvQlZZRyswUEJoeUdoQk53N0lUUEJBR1dxUlAveHFvMGdhWmdZNFA3ZUFEaWtBVFZ5N2VlRnR1NnQ5b0pPUWM0RkZSZzZ2UHJGMU1HZVhUL0UrZ1BxcGc5V2h0U0ZnQU8rQ0llWjNJc0t4RjdRUWVMMWN6d2ptM3NzQ01pQ2VxdlRvNVM0aHprbjJRMXZuRG82SFZva2hxc0x3VFRDMkFNRDJSZWhuc1dBTTNTbzJ3ZnRoeVpBR0Q1MzVYbjVWYVFsd211bXdtMFFOTUNGQ0QzQ05jdnU3RE1lRFV5T1pqNzdoeDdoNU5nSFV0SXMyRHNWaUliS2JDb2FWcDBDTWFoNWpBUDNmVEZMZUJVRWxpZ0hQK1NTTC9VdWxrelEzcmZISEpBT1VDeDZxdHkwY3lrQWVyc1hreVVUR0J6L0dnYXZoR1ErWndQbEhGaW5RLy9RTy9EQlYva0hjR1djQWRuVTRHNGdhekRCNFE3eWxqQmJyamRyLzNnL1AyTDFrVzltc0JBU1k2RllSTTEzNFpLWURmc2lBUUV2Q1NkOENqc1BpM2lmMjBUSVJHczh4T3pyZy8zaWhxQlBXRENMWVdvTUFOdmI3QmJMU3B5RzFTQ1FRRjVBR0NkcEd5Zi96TG1pVEovMkZjK3VJRnEvVHZtRnJNZGZPQm54eVdWTFc3RHZpVkVpa2VEeEExV0ZtMFhzaEhVQjV6QnJOTUdFMW02UE13aFJZRTB6dzVuUUhlemFEVmplSUJOdmpBNzU3cDhVNzRSakxQT2szUGQ0YnUrZlVCUlordlRHY3ZrbHY4bzlJbkJQNkErcEpKdmhrVmhCSXhkVGhCRGVneEJRTnFKa0lBaUdqLy80blR0ajhOKytWTHJmQ2JYdzU0VkJCUk9pR3dHQTViTmx2QzF2VE9BSkNpelRjWVowb2dJQjdtTmxaUTR2dGc4ZWdZVlFRUzQrZUtiTmRpRGNDYXNEQnpSTjVCRjlOK1dKVnVtSFBSVitCTWk4VC9tTWZxbDUxQzBiZWZkRVd3K3dybmt3QXkwRTR3bGhEeHdUaTBEVFdINHczRXZvWXovWkhSVjJCN3d6ZUkyd04rbnJZa1RQcjVROWlwWEYvektNaW5qL0lnTUJYV3hwdGladjczampvL0dDYVd5ZktRSzJjMEVUTDZ3Tklib251eFhEQUptTzNHa1JodEZ1ZHJpYWFrVko4NVkzOFNTWlJNZEF1RnpJVTN4dVhtK2VaMTRtYWowQnd5YUEvY3dPc3NxbUdFQlNMbjFnR2JlSG1oTkdVUU1CQ1ViS3k3aVUwUlZqTmNDU0FuZ0VhcmtzbWRYQUlWajNDblNqREpJL3hjeUJUR1F6TzZJOEI1MlIxZHk0YUdndUszZEFHa0JvL1dMVm9rZXFzczlzRHU0eFZ5QVBVR1crejhSK3NmUjFrc0VwbjNPdUFGQTB6NFYwanFtU2UrS0JFYWkvMG9WMVlGZkxCK2VEUFlNV3c2UUZ3UWQyakl3YmdOczM0RnFMSFlNSVJZVHZzOGRraitIUjE0S05OYzJkVDlDYkg4d285Qzk0Nk5XTS8rSXNzY25ySktCREx3TFhORjVvbm1lQmhJWkJuT3JKek9pUnpnTTZSaERrMzlpSmMwaG9FeDEzckhDOFdhYld2VytjQlRoN01pVFovRHJ4SVJIS3NEZENkb05ZOFJWSEtBRHo5cXpRUThlNUlBTlEvTytjbGo0QkdZQjhSSTQ4QVJUbmdyRW4zQnlGalJEYnJQaUZxK1VZQVdoQ1RabGRvd3d2OGNqTTJGNDNsMkMrK2I2SnQ4MWNYczluZllnb0EwWUlQZ0xzUU5wM2VmenRTVEJHMEhDYjZhSFdMSjV3dWtpN1JzKzhBYlNIVDRXRFpVVHBqU2NYZVlmcFhUNGNXQ3hnTnB1MWM0UVZFc0M1YTZ5ZHBSdjZnam93UG1xOGtuRUpOQURnNG5uQkIxT1FxZDBJbklEWUFzbS9xNThqTU5nMFBnakh3Tzg4cW5qalMrd0pVQjh3Q2c3WElKVlFIVURRT0xsMm5oMEhuYXpmbkh4YTdkWkUrS1hpWk1FY2p3b2MzdjZrS2tYNkNCQUxGaDFNc1dXdUFsVDk5b3ZwNEFiZklwUmcyMWdYNkh2bDBuTkpyWXNCSC94K21VZ3o1bnhvSG9nVkxHc1MzeXN3aGd4aGRTcUxGRTUwY2tzc0JZQkExK2ZpTS9PVFFDVElEUGpKZFhzWWlEMjl0YjFjVW9RYnd1WFBnY09ReTZBRmN5dG1nN2NudVI5V2g2eUx2Qkc4Q1JhYk1wSDlQV3dITzVkUUI1VDlGNUk2S21NZGt4Zy9DWnVZSGF2SkhzTjcwTFlZbzZ4bXNtdmZuYzA4WUtGcEhBVDRJTEVzRlIvVk52RVBzLzlraDZ3S09yT2hQelBXNFdGRGZXRHhlRG5zazhWTzdnWDZFd2FTWVdhK2NVbFI4WHR6U1dBcVhBNFhHY3Jld2QzazduRVE3N21RME85M2t0K3MvY1ZHSnBPa2tmODAxaGFWUWNTSXJpRU96SjVpeEN3OHpHTWNkYzdtQnZWU3ZORUxqOWlOQy9NcDJORURTOWtmWVFMVzBJRW1OSWVxSGw0VWpLVGJzeWJRdE4xNFdJdFlLMzhEcVRJYldHY2tKbVF6T0pjNmVucTRiVjFUelBMaURqUlg3TndFVFVvSk8wTGFjaG1JZkZuRmtxRkdrd090c3h6M1NvVVB2Z2pkY0FzVXlrbER3VEF3Tnk3VkUwK1dNSjZERytKc2d3MXpmNnNRdXNmTjlkK2Ztc0xqekd6S2ZsektRY0IvUXk5Z0o3RDNpZWEya3FZQWN1RlFBaHozeTZZb1AwOWNmMzBsM0RlTFQyN1l5Z3Qzdm9KT25ZMzloSTVVZ3A4Rnl1UVA2czc3d2lMeEI0SCtlVmpvZ28vaWIzdzFpSnVQQkxPSlYxaDI4SXY1V3lJN3NhaXVUckErQlJpeXZtYXhnV3lXV0liUVJnZ2h6bDVwNVZnUW1tWFVBc3NoaVZmUHBwb3RaeWp6M21iNVpHS3lnUVEvQWhNQVgwU2UvczV0VEVJSEVXY3JOV0dQT1cwMEgwSHJDOWZIdldZaURCYnZNWEQ3elZsdVM0OStjUllzOEpBV3YvNm1MWWg1L0l6bC8zNFkwT1Y1RUpkcmpVekdWcTJBeUlxUUxuRnFQNVVSNkJ6ZTMrTnBmQVU0Ky9XRFg5OW1PL2pCWmRWcU9uVUdlRW8za2Zld3ljU2pZS2tTenJKWTBZRGRBT2x3NUtWVCt4UGpuWnc2UVF1UTNPa0NRYUxSazlqbUFjTk0yWElsd2pZVXR2MmNTU1NEQXpIOHNXNGwrZG9Kbm52dUZzdDRUNlZKd3RlZ1RTVnNYcTJjWXk4TlJkd2ZGMi9RUWdkbWVBZ3VtTTM4UmVqSmhLVkhWd2w3KzlRcGlBYnprSXNZSU9oRU0vdGFFdW9HU01FOVZPc2VwN0xOZzQwSXJBWGhYbTRGa3JIcW5xeHREQno5QkI2aDlFSEM0QW5JVWoxOW9TVmpHd29DdkdpZXRkMFZydWpCN0NzMzBFL2VmRnNUZ1Q1Q1Q4WXhQWUx1VUdiYzRnVnlJK292L05iNlppd0paNE1ZV2N3NHhXYVZJandobitOd1pDZmlsMGpiUVhZbzk3cFlmZ2drNUFuVUp1S0JEb1ZZQUhzWWFncmVzSGwrRGl5VzVzY0JlRmh3U2FqVEczT0ZFOHdQMHZhdWE5MWNFaUlkY0s0cHZxYU1NWUxDQnNDWDJQM2pKQURMMTBYbUFNZ1JDRGNSZ3N1SGZTV0oyZ0l1TGd0N0lLZTNDSkNlMTN3anZqYlVDcDRhcWhMWnlqcFpKalllUU5NZXUwa0V6d3E0ZHpaMUxld0k0WlZiZ29SWVZRYlAzZENXNWYyZ1FSY1hrenlJQXdkeFYvUU0xTWxVVEFnblNuYlBrdkJzRER4Y3hJbHVMdWdHL2tDTmVKTGpyeUkvSUJwWnZWY2ptTTNnZ2t5VEk0VnpOdm15YmNDRnJLU3lJTmZSZDZnMUJGRXFUMHFZeDRDZG0zajF2Qnl1WkNHSmxIYXREd0dSY0ZIcmJLWlZYTkdqUWV5SnYxOGVGTTdpZ2ZYTEN5dVlnNTU4MkZ3UUZ2a0x1VFdCZzBJcGFYSi9jSXQ4dng2MGJqMHpHOU83U2RmcnVTWGphRTlNNyszcWNHVDlubnRDTEt6VllnOENieFB1VWFmbFkwMHJHcGlBRlJnRUJUZ2dhaTdBajVUQ1ZpWDI1Mlk5RFNYRTdJWnk1QmZoSjU0eEVtMkkxTkUxaDdFSGF3THdqQUlwK0Y3dkJ2NWFMamFQeFNkQWg2Y3ZyTUxqdVY4NnoyUnBSZXQ4ZWc4TURQYThDSENzQVJqU0lBNHhudFNoWlNQek10ZXdQbFFDV0RndGxVaXNNazZWd1pOUUxDK0J1UlBBOHBzOEl3Q05SM3JpMXVnOW8wSnllMnlkKzJYVm1qVTcwQ1BJUW1GaGtYZ3h3bTFhTE83SVBPVlJyRHU4RkRLNGdyQzA1Yjc4ZzZTMi9xTDE3MUlabm16NnRLcGtla3FIQ3NFaXNQYmFNaUNEN3hLVDhXb1kwSWhHR1NMK1l6VVJUSVJWZzR2dzI5ZkRqNkFzME5FR3UxK285S1A5UHp5WXkzeVFjMzE3d0tXZE5lUVRzb2RJSWlNUjEzRi9sQ29Xdks4eWRydk5hWUVHWFBDRzB6WlBYOTZBcDJZcjFtQm1XQnAweWxNbWdpWnVpc1FHS3daMytwMWpQbXdjcUlXQUZDQm40RFNTSzFIWlBJV25hUStoNFVQeVdVN1NNUC9rMFdnbGRPSHVPeGRVQjN0L2QwakF2RTQyQi9mUzRNRFpMeEQ0SmxweWU3S044V1lnazRpQW12M3dLSWdyOGR3Q0NmWWlXNTExRXpvZU5OcEY4SjRQU0pIUTBGNWt4S1BqQjg1akRBblJBdU41OWNKRFkxNVBnWEI5aE1zODVZSEVHZUJDMkxocWhmbUQrT3o3U3F3dmhKVDFqRStjMzcwOFd1ZTlFYWRWczRKaEdkQytVMWgxa3R5OUtPeDE5Q3RDTVZYRXBadGl5ZFkyQTRnbTF2c0E3Vm9hdC9rMjRlelR4aHZHM2l4WHdpOEpaTU55TzI0blhFUWYxTDVITCtZZmVWdDhJbkROQ09mUUJ1dVpWU2pkMCtpWndrOGQyd3hBeU1PMno0Z2ZIWkhiTUVoQ0N0ekhZZ0ZZVEZ2TjBtTkMxU0wyVmlVT3VMSUhqTnJpa3cxZlN3WmlZdDBIMENvd3VZSEFyUkd3WUJFQnNudnlsZWFNdVp6SGNsOVdlbHFJU3h5dHcwekhucm4vOEpaa2FZRkhJT003b3NqRFRIRDVaRVJZMGZNVkR2Mk5NSElBMllpTWgyMThZRDVzNjJSbldNbnp0Y0ozNEsyUTVHRFJIZXJvNXcyYXF2cHdFV0lGSENUOC9PRFAzNFpYRXd3ZVpEaTBMQ05GRTJ3N0FlZzNXRWFBQlBJSSsraVhCOUNLeVlOS1hOeVRTY2lKdVJURVp4andOWXZaaVpaRWJpQlpvMGsvbkNtejM1OTVTRlBYVnVBVFlxRURFTWdXOFE4enc1RC91QWlZNFpYNVZpZ1RkbW9SVDhBaXBiMmdLeTQ0WnVhS0NITUE2aXVmSDBiN1l2RU9ZZTlGejJHY2dNSE9saW53VGxDQTVkNFFjOU5YM2wwOStRVkRDUUR4YXJDb2hrNUE3dktHajNtS2x3L0hlT0Rsbms5K2ZncHk1ejBWM0hDOVlnVU11QldoTFZrakJCZ0dlSVFOVjlBRFVXUEppUTVIK014UTBVV2MvenduaFBkZ0hjWGNSUkVDaVRGcllYZ0VxUnVIUnZQaXhsY05uaktoQklnenNtSVFHSnd3YzVnc3ZIemhpTVAxZ0x2NFpaMzhCVGMzOS9aSTV5UkhhbHdXNkdaTUhPV3dNbmFER09KdGxmeVlKaDZJNTRscm5tOWtzMWMxSGNrN1gxNWlFYUhKM0w0VEYzNnhteXhreTNCN0FKV3dWNENRRE0rekJvOFFvRktLQ0NJUDhyOWR6Mms2b2loWk1vdFZnRkd2UlJuelFwNjQ3NW13bGphTW9pZ25QZHY0dXZLZExRSEtTdWNqVXJmMjB2cVNHeTNBbFFIakE1cGt6dVpOT0czMEhWK1BlamV1VDNUeXlKN3cwME1GbzJBY2pVMW0vL2tLQXB2M0JkUzlLU3RWTEpmMGlDQmYrU2xXVnVMVlpoQ3g1M21EcUFVL2dZZGJRVzdlZnB0T1dOWGFNNnYyVGY0cytTclVDbXFRaUlEemdwV1diWEVac1N5S0RwMlZHM3dHWVQ2WmpLOWY1ZFZkaFdOdHdjWk0wU0tvYm5odkRCNEF3cEZEdk41SC80R2VJK3pGU1U5MFhXZ2dUU3BIZUFraDVCdDA1aDFkb21xbEZ0d1VpRVAzWWFIcWpWUXYweUxGbnBVdmVvWnJ3aGh2KzFEQjhPd01zQzU3aXhEcTMydWxkaXQ0YkpGb0tURm15OFNJT1UyeWVPcGNMUnhKMW95cVdaRFZxa1pXNjMzTW9pcmRjT0JzMGNCandrT3JUNS90RG55RzlTb1FqWGhKYVYrMldlOENtRnMzdFhCYlYyZHhocFdQZUxGNVNuTVkxVkRIZHFOTXNhRjlKNlFKRWhlWGJOalJTYmhtT050VTdySjVzRHJpNC9Ra1pYbFloZmhBNVFIOXczd1ZvdlN6RlNGOEN2bHFRb2RYak1zNmxUWk9xNDh4MUNvL1VNNktHcVR3dWIvTmxYT0R5MmFnUkJodjVpM1IvamFOUUZiT3I1ZDJIVWpyMXNUMDkvRU0veFJYbmFRak1SRCsxUWpnWEhBTG51L0JzT1J0dUJEclY2eW16eWNmY3BkTC95REc0WlZKYmMvVkVDcDlPMjQyWlFGZzVJZGRzUjZNT0llRVlZa3c2Qml5cm9RdmhKTXJ1anl3eGdDMng2WkZhWlVzOWtWK2N1R2JXQkhiOXliUHVvcThXOGU3N1pSQkVjSkVWT29DQUpkMDNkOUo5QUtFSGx3UFAxVkZDS1MrWmdKaGFVSEx0M2o0c1cxdjJ3QlJvSkhZUDR1QnVYbSsvcXpMRTFsM2lrMEJ2RHBvMTB6TlFEUnY2eWNhUE5hVHdHTGhIZ1NZU01hL0NETm8yWHJWY1lYM2duZGREWjVQSU1TSVh1dmhlejVIMHVobnFIQ3N5end2SnZ3TjNyUGV3U0tmMjFSRVZrZmVrSDZDLzNvQXV3c3oyZ1ZDWVM4RWl3cnFZQUxaSlBPNHQxazJjQk0xaUh3SFlTMVg5elQxMjFCWTFtWS9Ia1N0RnllK2Jtemh0bHAydmVWV2I0YjJlVUx3SlF0UTlvc1VqQjllQ0dVS2NBQ2JIOWdRYzRhbklNbmNhSlNsWEF0MitMelFHbUV5V3ZFSGtQWU9WeUVTWTQ5Sk5meHBCekFXNVRCNmhMdkNVVjhFbkdrc3BHU0RSSnk0RDc5RkJKVTVVZUlzdHZtYkV1QWVqYjJ2cHVwTk1scVRYQzEzeHpxZ1U0UUZsdlFKMWRPU3VTL0xKSW5GbUVVbERJQVVjSHZUVzNWd3o3bjNXbGdza05naUQ2SWZFZXk5VHhVenFxdFkzeVl2aEFaY2lOK2Zia3dyZVRFbjhRRXdlSHN3bzNNYmdMY0ZtaG1pVGdSQXNZQm5BMTVrOUFGZlhHbndaVmxXYlVrWjhmdFU4eUs0Q1drS3FTZXRVM2VBSUlIUXNqQVQxUTJKOEtnakRmUk1oNTI3NTJ3eUNBalBQdFgwbGlUZU54b2RhZFYzdHRpaERvM05JdW0wakRLNVNuZUZKVnU4MnQ4eVRkZC9ubXI2dDVrbUlES25DK1BJcDRwKzNoN1lXYzVhMm8wL1AyaHV2L0hhai94Ly8zcjlKeS9FUUwrbXRBNjdib3MzUWR4NDloZXNjdU5tZXkvdUQ2V1BDbEQwZ1JJNXFxNEpaY0dNd2VrSEdxdlVvMVpQcVJwRVEraDNqMUh2dHFmczUwTkN3Snl6WjkrUXpXbDUvcFEwMitGUW9Sa1YvUE13YnMzWHVrRUxPT3A5aWh5TjE3Q1E1Rm51YThmV1pTbWVhRnR0QVNsVGtZWXJSUTgxS3NJaHZ4V3FBU0VBZzFCZEhnaWlrcERXdUdERFh3bGhmcnVuaS9oYjl5bFF0R1RXZzdueVUxYVIwS3daTmcwclRzMDJtdnNoVUJERlRPNWE4RSs0R3FqNXRPMjdhVmZmMmdvc3Q3SHBTNEsxUVo2QTV4eGJoOHBDUHN4L1ZHTFBUMFo1ZWtoeWpyYjVVSlFtU2ljL1Z3YWxyTHQ2ckZJREFQNWhQTmpVTC9PQm1tbEFmdFdBTkovOFZ3SHhwT3ZmQ0FoOGIySGY0QXVJWkdGRUJsRHVjenh1a3lBK3JFSjhna1NtVFVqUnhZNWk1eDU5MjdrUVpDV3RleWpYSUVVR3ptcllHelovZWZCK0UycUl3LzNlN0d1MEgrV3p5YUxlMTRaenhlR2gycHVoNXpnczRkM0RENXM3b2gxZ0ZqYTFJaUdDMHNMNHRnYklVc0lVSVZpSnV3ZHc3Y3kwemhEbW1LeGxKd3hvUmVqVkl4SU1UeS9raUlWOHZtTDhBazZnVndhRmRIK0laaERyNS9TWFhjdmFEc0RMaW9JNzlvRkhHWnRaSHl0eE5od0VqSUpDOHRiYlZ1TzFMSDM4aW9NS0NPTHBOYVYrM2VkMCtnNzRRclRPOUFVb3VXVVRHUGFDVEl0Tmk4ZUdxNEdIMktiY0ZQSG9ZZWhMa0xESkcxVmFMOHU4eHZzaG5UejVObWNhMzNkYVM1VE5pc3JncDgxTHJNT3cyQzE2VjRRTG5EZDUvdGVuRFJscFhqOFY1NmxteTdyWTdoMWdDY05PRUg0WC80UVVQZk93SmE4TTl2amFIT1JaU05WTzdaUE8vSGhkL0lkdHZLc25udUZXQVZiN3Y0TG50REpjWEJtdzl1aFZDUmM4cmJmWGdNQXk4ZVVNc0Z1cWtQTUZ0Vlh6QXJDc2Q3RTBJd1I3MUJJWHhNb2pRU2UveHR2aTR6REw1NjBRaUk1ck51MGh4Zzk5d0VhTnEyY0N1Y0s1bjQ2Qi9tcEFvMldQS203ZEtVNTc1bEZCSDRUL0ZWYzJGdTBwZWJ3Sm9xZVdGWnBEN0VldFFCclNZNDN4NmYrSW1DQ0tGcDV2VFkwbzVYa1h2TG9wcWdEenoycEtZak1xUzFVSDJNdVBoTHB2blB3b3Q5SHdvcG93RHVMYU9aMTRCU0MyRktLQmF5eGdEUzRNSDhNK0pXRlFvS2RCNXVCSFpaNXlTbUo4Wm1NOFhtTEZZTHhzT3BvanRQSGVmTWNRRGtMY0xnOUFjWHVtSW1TbzJjNVhTejJuYVlGbFVTTUJCYU9UUVdlcjBFR0swV1hucVgrYis5NW93enNFOWJrbEpETWFoOHhjNHliWFNnUmw3ZzNlYkRrYVpsVGE1dzVQdTA3Wk9LVDZkNXZ3WGFhTk1EM0NPWXJmUGpVK1BkU2Z2Rkh4WE1RU0dzbnB0bExIWE0yclhuNHRuRVI2b0dtZTZuRXhHdE9hWURTTnhWYnZ1b25YWU53Z1NBSXkxMk41VkxSYVB4TjFZR3hRTFN3cnZLYjRQUWMxdEkxNFRxZms3MkFHTG05REgyNkNxVmlZNXBuQ2xjL0Z3c3B2MDBlQk5VZmNOL2p6WStEeFhKTGJRbVRZOXhUUGVkZmNrR25yVHRHWllEeDB6MmtDbDZtZG5RNlBNTnRkVDRLbm1PRjVmNTFNL1NYRDg1M1dRZkg1QjUwUE5qc0w1UHBUZnVjSHRYL3lPei9ablpQYnNUVG5qK3pPN3h3T1FlZVAxSTdpRDZlVmV1SVVpeFY1YlpuL1VMakk3WjBscUY4TGxtRVppZE50WitZdHN3a1NTTVc3WndMRVBKSGhRdWg3QklBMnR3U0FuUXNtdzNNRnltMGtpV3pUR3NCR1BOM0ZNbDM3a2lyeExSTUk4YlRhUFcwY0Y1UUxYcVhZUnpCK3RwL2NNdEQ1M3RZNnZUYXZJcEpaUHhRb1FvWXJnQ2w3T3BXRzRpS0FyYTBDOGRkMFpVOTlpRjA0dDVvVXJ3aFdMdGhzQURZUUVvcWRMUTJaYzAvelJWdFRXcXphOE9BcFlMb1FkaFF1Sk5hZ2dneUdvNFNJaUo2akhXbUJVUFBVc3lUQlJDUWhaRUcxVjhSRDhmcmNUOCsvZlRMMWdzbWlZdkMzaytNaWltV1BkajBJRlZDdDlhMGIzMzhMZ3NQdXJXSFJIQ3JWRSsvYk9IQVRpcjhYY2R4TlRyS2lxSWFBWnhlNDlsZHFCcEc1ZUpqMU1uOUlyR3V2OVNQZGNvQTJyZkN5UldVb1hiNlJHNkxHUGxMUDgwYUI2VnREbGl3ditPYnRNUnErdk9SQ2FPRlRJem05Wlg2S3JNZGFvS0UyMUJHaFFyN1FyVVJpT0RoTEVrOXVHQ1FZZDdZUkZDVEJZZmtRQy9ROXM3TVNpQVY5OFZhNEdMYUVVV3picUV1OTJHSG9VN2NZSENIK0pxakVBcXFFWnB5WXo1QXMrMm53ZWpQYWIzREtRaUpZUnoweFB1VlVickZyWDdhZERTbldMVWZGTllqMnBkc2xBSnN3aHJNUkhtczBlY3lLL0xENVNTMzkycERubFhSRnQzOWhrOG1TSG1TTUtRTTdaSzFvYlRicDNnZEo4LzNIVjZ6NkJwMGhML2plSFo1b0RjRzhMM1ljaTl6Mzk0eTFJVDVyUTdGd3RpT0NXVXlUSkpXTCtDeU5lSDRUNG1DYlNEdDBlS2F2OFdhb0kvajNwMERLSnNqTVpTUTRoYjIrbUNwQXNDd3o2bTlWWjI1RFZKdldYWnNWcmVFemJNVVBMbkRaMTczNkdDWUlocXpOWG1ZWUwzelp5dExrb1lLdEZYcVNMYzNFQ0FESG1seHJrakMzdUxsSkZydXNaVTlMTEJrVnVvc0ZCN2pTeVc2Q2pmWnpkb2hWd2UvdEJPcjdIdGF3b3hJZUs3WkNMbVlQaU80WHEyTXUxS1JLOWppR1RjUENoMG1mYW9iWlRuWEwxNkVOeGZROS9Bb0RZWGZoTlhnMEcvVlk4ZGl1MC9xUzJUdjdwOUVxV0JDM1pYZFZ1QWZFeFdLdEdON3ErWkx1YTllYmRTK0liTWlrV2Nxa3BvV043T1VwYURTaFM0ejdxZmdiME5PRDJLUEdPM1FwNDJOM3BvWTkyZEZwQ2pRQ3NNbVpTOEQrd1B0L3VpVFp1MDYwWUM5WWVWdUg0UE8rMnRCRGxBUFdRN2Vub0VPM2hpWDdHNTVyZEZIMUUxYjdaUVVjM2dXdTRvZ2Y4Tlh0dFFuMkNPR25ZSWNqYTlnUlpQdXc5UlY3d0ZBa2xpZUt6OWNHZVJpaDNhdklhSFMwNGFoQ01oYmFOMzBlUzhjQlZUcDVMSHZPaUJnSUxXTEd3QnBxcS9DY2lZOXdrWjhXZjltWGg3TURiOHFMaEJvSFpqeFZ0RDBaQW5qYkJvMENaeHNBeG1FNUNsU0hCYnVmKy9Ub1JHTTRscDFodUJxTjgwRkt0dUVBRGRSKzhvK0xxSXFvUUZuY2xreDN4VjUyUnNyQ1B0aWpVNlpzVWU1VDltVWhaVFJ4aXluWEUreTM4cnoyMCtLRVcwTmoyVmpDWXZZOHN2MzVMOE5oV1orQ2E2WExHa2tMRGdQQjFKemViU1YwaFJ0dkR6R3NFYlR2UGllUEZrL040dW5SdCszSlVzc3h3eTQyKzBCR29jb3ZzWThvQkxDZHMvSWJ6bUVueU5MMnVFZVcwOGtoaFZVM0VmdHVBQVQvdGtldnl1RVF3ZDB5eHVIQkl2WVI3dHdxQk1DVCtmZ2tHM3JzNWcvOFB4RllIUDB3alZlWVN6THA5VVhBQXVqajkzRHlDNXJPajl3QVNGUDd3QzlpUk1JNHQrVlhIWE8zOE9KOTdqUVZpdkt3YytDRExUbE9BV00weTlIV2hTTEhKZ25wbnB0OU50MjJFdTdYSTJnLzJLSnAyeFVnSlhhcUNxU1BSN3AyT0Nkb0tWS2pnYVhodWV5R3g1a3hudWVyZzdqM3ZkK3BvdzBUVWJCNGp5U0JKT1NqWlorYkFMdk1QVUhvZ0tKNWl2UHg3NGJ3ZS9OeUhsaDdmaVo1Z0tyQTZZQXduVGFkYXBVMnY0VmZQeGp1UkpUQTMrMHBPdDIzN054cDRCcmo4aUlkSldFZFFuNklZZzRtd1I3NXRJRFdBNjdpK296Y0lOeEk3Q0pYSUFtMHN2QlVvVG04QUtPNlRsVVFIL0M2U3QzMHBiTmlHaXlEaFpYL2VsWmhKVEdMeDRJRTV4NndVNTVXNVJ2NVorbWFKeUtYZlRBQkxPdFdjTUdTMFozb1BrU2d4Uml3VGxRM0RERTYxYU1OOTZoNmhBUGdqMmRwUURZMVFkakNGWnVOWThsNDVrZ25HYUNESnJUY1J3VmFUNjRSNDhja3JTejc4MS9rM0dBenB2TFdDd0k5WlJ0UVpEemdCa0FncjdZWFk2Tld3VXZtTXpwRzFwK1QxUS9OQTdISFJvRGFSSkxHbmdXSDMvRkRhM3VKSHNSS0xUQkNuNU5kc3M4UDNxemJuZ3lMNElJVkFZWHdMc094cHdtZU9nMGMvYnYrakk1UVNHVEp6YkpNQTJxeU5BRHU5SjBnbDg1UWc1dXR1Z1cyZldhQUNGV3ZSd0g5VWhSOEFXRnpHci82R2dSZEM5bWlaMzJZZFNLOFlVRElVM1BGSnBXd1FidUJUbkV4ZnRRMlRtQmY5c09xT0Jya0NNTS9yYU9KUnJQR09KcEYxZyswM2VKZUdGU3h6aEl6OEt3ZXY2eEhrVGxLSlVsa1VmVm5KNGQ1M2drenQxN0hBenhFc0gyUXhWNWNhd3EzS05JZVI4bDRvQUpGQStnZk1MdStaNG9JNEdMSGJMUnAxcmlZUFZHNms0NXNpZitmY2JIeDQyWHpyNEhOUW1Uczhic2lVSm1zbCtINm9ZamRkUFNSY3BZZDN3TG5Qb1RjWmxKTG05My9aWVZycW56T3kxWGFZYmJqaGJERytzWW5nT3BKbm4rcml0ZjNUQk1yc0kzSERubUVZQnFuWlVpQ041RWhqN0tud0tCN2htcGVyS0F6Wmo3TFd1QWN4NUJlbTBtc2owQVdsUXBXMjJHVG1rSXlUWnRsVHBFMEROdUtYbXRQVTNOa0lXeWd5Vk4xbzNxYTA3SUNnS3RzWjU0T1FJRWtLRmJybUt0MGxrMHdqSjRwUWhGb3RUMitYaXpHK094YnJRdFVZRFhzclZtd2htRGJPOXUxZ2FWcWpTbmZYQkdHVXgzWTByRlI4Rzg1RU1WVlRSQ3RhU3J5ak9xeGhPTk1BYnFqZmNvZjlMM1pSYk9reVkxTGcvVEJxVzdMZng5bDF5bll1NjBPT3J0bTlTcWFuSHUxZHJWVm0yS1JYb252SVR0bWI2Y2ZGSmJTTnJHSXEzalhUNjZ3bnVFaHBwRHVkWUh3ZDdZQjlrVzl0cG9KTzl1NVFzUFhlTDZ1QklJOUlJb2VqTnloQU1zVUVPd2JGc0hXM3ZkSlplRWlQNk1WdUd0VWlBWE1kekluQW1kcDQ0ZGF4Ny9YUC95cjhvZnJmMXovQUg1YU9HUVpPM2JOeFJJZEg1dVhuUkFUUFVpOVpUWGJpbXJ6RGNzVGQvVGRBaEpxc2xFWE0vRmtEbmNoZGp2S3hzazVZWjVFMC8xYzUvVGFPc3p1U0pMUUdzUTdHeS81M0czbGFuRHdUYldIQWxjZml1OVJGcGJaaTUwdDNTaUJXQTVYc0VsYWlaUS9ITHlhRWljUUkvQk9TTWJWYjQ5Umt0VlFOc2VjbVQ1SVpNK0phbStZSnlMV1pOaUZnV0JpdTM0ZDQ3SmNuVEFTVGQzT0JWWERWenhDaHBKVmh3MHNQcU5uQzhuUElGRDkrSDVzbnJON0ZTVDJZb1pWT3RnenIzSll4eTBsZEJwQjk4RFpRVGhIdllQMUVWM0xkUk1aK0trZHlkbUVTTG1Lc3pYZ251Z3hqRG9IbEYrSGVFR1F1aE11Y0xzVnovVEQxMFdxVDdKUE1IdUF3R3VzNWp3ZGlTK1dqVXFyNHlIYUZQU0QxUkIyNFh5MUlna3NjSnEyWHp1OElKeVkrazAvMWNsLzBwNlJjZVE2MkFWTHp3Rit5N3lKY253aVc5QnRXUHlRRE9xK0FDRXl0VzM5MWpRTGpabUF2aXhpa2w5Tlc3WnNIMEN1VjhkL25lRlVMMWorVFJ1OTJOd1A3bzA5bVIwN2RiYjNaNHQyUkJTak00dlZaYytaUlFEbFJmek5jZG1SQmJXeGxmTzBRcldmd1hOSVdkNGd2dXhjRWpHKzNFVTlKSjFDMnV6cHRISktRaFNWQ00zaGQ2RE51S1hYWnVmQUFWc3VBQlRlM3g1T0lnbnNkbHF4bHh6Z1lGMUIxYldKeE9hVkliVTJBRjFsOE9sY20yVWFKWEo5ZGJQLzdIN0MwTHVwQzlNTlQ3Y3NoTldwOXM4OUZnNG9Lci9LZmdDb2hQaXJFWG1iTGQ0bXVyVmlHeWVkYVRvOVJiSlBmZndhN21IN0RQQU1TN0ZFWHJFMHpzZ1IxTk00TTFsZ3lyZWpSQ3A0UjZnd0dXSFZ4dlQ4dWhMV3FpMkg2QnRIM2ppSllscm5pWnNjb3BneXdZS1lNNi8zN3J6YWdRaE9hdUd1c1BlcThzOW13KzYxU2lVbzFRUWR0M3ZlbkdNaHlHS1U0WkVtaEFmayszSzRia3ZkTElqWjBhYks5NXlMejI3d05Zc0wrL1BZRGtGRE9QTzA4bFNnY2tmVlJZZDVSdXZkVUtTWGM0bFFsSXVBZzNpQU41eENjU3MrWCtnQVNoakw2bDRKS0FwZmY1VFh3WUtqS20zeTNGOWhOZVBGTzhPNzdHeDB5b1ZETk12SGhVQUE4UFhGeDhFbnAyT0F5bnRTOEN3aWEyZEZyeVB2SE5YRzMxQVQ0TkZXNGtEemw3eU9FRFhVaytha0F1NXo2aEU5TU5zcXlZMjZzeWkxdjkwalYvemI3aGRFMmszc1ArMnVOZG16MjI0ejVPS01LUUdQNmkwUUtrUTRPMEtTczhLU1V5ekRaK0hFTXpkRTFhcFMvZVZhZXptdkFDT0h3cnlaQzI0UUVIQUExMTJXNmVKZGtIQTdXZVA0R1hsa1NYeXc2cmJhQUV1WVF6c0wvazRKR1N0c3h6UWd2bXhQc0Z0NjJXQnUzUzUwVmNpcUd5cndnV2JOMlg2d2dkNHRjV0JYNEJiN0ptUURzRGR4OFN4c3MxNGRVL0N1TUZ1WW5LM2VqdmNzelpZdlFMTnpnNDdVTzNVaCtod3FFN2VEWjc5bmRxbWQvYkF2cStteEhKUVgvby9Mb3BvN24yRm5mSmxJczFqT1hMUElXdzUyTm0raDBwbGVsMVBnTEloK29ZSndBeFR4K0lnY0x3cDFPYXZGZ0dGeXhoUG1ZcFI0aTNYSmFhTmx4NWswWjRGWHlwYyttZXhhYVNkWHgzNVVzM1phcDZNeVc5V2hsbW5LZFVZSVd0RDdoTStJWVNQNDh0QWM1UUhQdG44bUJpZURmQjY2bm82TVd3NkpxRjNPbkgzc3hjMjREQjVwM1F5TVp6WUhYa0E5VXdJUjdaL3RGOXEybTU0bWFuK0NsbnEyT212bWxNNTBCd1FrU3dOTlJXNUhYam9FeGdoSlJMSlJIUm8vbGFRNExTUXhlcnBSN0pERWUrNkdmSHFKSzhFYVdPazNOM1I3S1o5OVJxZmt2cGpmeERiUTVOeThReit1RnUvdGRKZEtHRnpPN0pDa1RZZnVlWVJwMjhjMExYeWZZdHlLMk9HTnEvT01uSzRRUFQ2NHR6SGdzZ0VTSVpzd1l0VGdhNi81czdtWnluSTBTL1VkSFFzWXNCSFR1VFNkS0JSTXZ6d3FEWENVaU9JMHBHdEd1MFl0T0IyM2c4TEVIWWRSc01VT1FhbTh1L2xLTE96R2daRktFS0JvQ2drS21LRWhlcUhvY0ZrOGJMK1VmZ05MbTl0R01rZEx3UjZ4azk2emhjTmVSN2Z1MHg0NVp4amxKRHNCdTBSK3MyalgvMU5Mem9aaXoxZnpjaEp6OUFEanpPT0RIU0VEMGlNdnpXTTVHY0IyUVBndTI0Y202aGtiQ2VkSWVkbGxrMDgrdFNja3JYTzBWaE5CYlg5NzBVN0padjl6V284YXZKWE5CYUFDWDk3WFlpU3JkbzFWdHNWQWRYck5aK29BTGtKSWNtN0hlckl0N2NYWlFleE5pK3V6d1JBUEZtV3lsQTVjbDllWnNMQVNld0RmZ0prN2JUZkV0Vm4xT3Q1bytsSXl0dmRqVWYzS1lJQjE1UkNGYm5jTGhLZnAyVW9FaTVuU2l6Vmx0Nkp4L3dGZ0s5Qm5pOWo0TzdIS28rL0hVdlY2Y3EzQm9jcjJjeFMwUElqaTRCYXU2Sndxb0FHaXVkTzdtOHF6aHAwZGR3NGVETXhCWTNnOGtZK1kxcTNPTWp0bi9xZkhjMkZlUkROOTcvRElNVE1oMFBsNHRmYnJjZklJOHF6ZVZnRGNRUEhKODVnNUtJNERhZjloTWN2MSt3OThORzcyUmFVT1hCRFQ3eTlhaDh2YnJQZVlhSFBIQjVVelZUT1kzM1FqVUMvd3hNOUJBYWRlL3U0T2hTVnNPaEhyNlU2N08rZFcyQW9CMVNQSEl5U3l3d0N5cmpmL2lpMEo1bS9iQ1FSaW52R29lNnhwZXRLcWVaVFdaOHV2OUFYRkRsTkFISFkxaUQzczlwdUFDZmxNNVFYeDZ1WHM4ZWRNTVlDUERZSlJzZSsxbmxFM2RzMXVhRjZBa2lUbk5jQmliaWR4dmE3L0diTmlsc2Z4MSsxQ040VFRBV0RuVWJROWMvdkJYZ3hibzcwTkoxK3pTTzh3N1dMeGJIZXdYaWV1bnVvYVhCZi8xZnUzdllnT29iMm5rNHNjNmZYWnhJdzlnT2RGZUVNeERLQ3NPUmpxTTFMYi9QMFI5d2g2anI3emVMV2o4c3FwS3Q3Mm9pQ1duTGxjRllOZ1ZtZ2VURmhhdE02QXJoYndwK2JzUTJ1S0FJRFBDdnorMU12bzhqcUhwWG9WMXFJVUQvMXdOY2NkalhiS3kyRU9DWVd4UGZNbUppQXJwc1dObnZUZlo3ejNHeTZvMkQraFVScEswTDlxeWhjelE3NkowS3poR1c3V1hZb0pPMzN4NXN1RmN3VFY0L2dqTzJtS1F5VDNHVm50L0RuSXZQVXpVdVpodmFQZE9aSy9nYmRPcS84UVJRNXlRV1VUbDkya1plOEVhMm5DRFM5OEFYTEgyRVhWcFMxMDRUUXZUUk9iTUNNSCtVNUZwM2w0cTJhdXR3SEpBV3RJRHJSR0ZoYWJSQWg2emxvdEhsdHVod0U0d29hVmN6ajI3enFWdzhYQkRsUHJCV0JEZEExRmFQU1F5ZnFRR1J5TUxRNVh1TjFZRGpFdWpvU2RpZGR0MXBQZFc2WnhQNURXNTNhWTVyNmNFMXljaCtjMFJNelowNXB3TDJBU29zL2xwRE12ZFlHZjZSeVI4Z2M0K1RJTnptZG1TN2tKN2M5anliQ2VhSGNySzJxZ3Nya1BpY2oyZU52OEJKb0JCd25tOWp3dWNKWm82ZEdSSGl3Z2xNVXN1SThGV1phbmVJNTYwcnVaYnpnMUJEcTBDclJ0V3Bqd09wak4vQzRYSGR3U0lPV3hOR1E2NDhHcFYrdUtFRElmcllHMlFwQk9PeDJtSlR2TlVZTFd1Nk8zeStlUGNNQ2l1TDJkK0NBa0wraUNyVU1FREpoLytkZ2tEeENjelNCYjNQbFJ2RnNEQVgwTzlaU2lPc242N2JjbnF0bnhWQjJ1UFpKam0wR2JaWTN4aGRzL3MyUWtxN01XSWNUM0dlTmJZY2g1Yi9tUE8yVzFsbWVQVmc3ZERoTUowMkViYzhwNklSYmx1VHcyaTA3QTR6NHJmTlJCamtHVkg1MHpiOVlnclE3dk1WVU10MEpFSjhoRjZpQ2I5U0tJVFdoYlNlbWFMcDFIZHBBS3p6aXFoK2pCSTh4enlieE5VZzQ3VE0yVGRXeEVQaHlNdmc3WmNkWm5YSkM5aXdYTUdYNzBkc2Z0b1Q2Uk11aGFoN281RStBSTR0Y3lXQmFEbjVtSlBLVjFEbnE1WHlzRWlyMEZuU3VLWjc0SFJMUFlyVTBnOXNoWGQrTzMrNHlDdzdJa0p3Y2Y0MkVxMHRMMFBURS9iT0hCMmVaK3kzVnNidU8waHpIeDRhM1pydXhnT0V6YlRtM3I1bStWZGJLczMrSWw1elRDVkk3c2FNN05ubm5ad2ZKNUVqUk85aUtBUXdUWkRXS3hXbDkzd3VGZy80YWQ1Y0ZheERPNDdNT09paFZ3enNnOFIrL3pxaTNyanpiTmdkWFJtbVJFYVkybjZQdUZTamduU2ZZUXpvbU9mZVFZQktMTXJ2a3p3YzdPOFp3dngrNmY0ZllQQkVuY2VDVkt6NmxXVGFZcm0yMnBjVFJMRWRBOTJxdjFNYzVVdUNIYTIvNzJCUnNCTEIxMkFLNklIcFBMeHJQZjVCeGNCMGJaZUJmdEZMR1V6RWNCNUZkZXRVMzJFQmZMM1J4ZmlicTZBUElVcmI2MDJUNmZLZEtRdkFBdlk0M3Q1cTAyeWNWNVlPcWdYUHVzRERXcjlWcU44Slg5Ni9raTJJVFZVRDdVWVZvWG9QVG5zajMvYnR5Q2pjWWorUnFjeXpxTnh5NGJlZVhqbU1uYlUyV2c0eHFLci9zZFVYMktRSzAycnNleXA3eDNFSitSQ0M5ZlFLdmw1QitSZkczSG5kc1JsQWEzUXdBSW1WMUxKdmVlNHVobFFrUkc3N3dKS1pmc0NLM3pPUWZVWnlxbXd6QnRWMHFFTkxZV3VGeW1kcXFqVnNEc3dqM3NFdXd0Tmxub3RDS3ovVTZmSFVzbURPZGVHb2Z6czNlZDVzNm5kYXI3REdRTVcwbGVpTFErZ2NOUjJGeG9IUjBBZStDSVFMNkhTY1Y0RHgrWUUyWmVrYWtZRnJJS3NpY0xiQVpnRzdUdFJMN09JNEdzQkhwUTBRNmk5akVSblVoNFNtbE45Y1ZmcWZ4N1F1ZVFEaTk0VlFuRURvb01UdFhhbFNEREd0blBDb0lRMFZsc0E3V0gvMjg5WTV3czRmbHI2SFlpYzJ0U0FLRHdUSHpHQTlBczF5bnV0Q29wK2N3SVQvQlJiYXVlMlJaT0luSjhxVnhQbW50T1dKeEpqaUpiQlZWeGp1Q1FacWlDeTdaclowK1lQWWxPUkF5RVlQU2lGTHQxL2dWY3h6bDNzVFhrT1pPNG5NMW9sL1FaTHNSclBNKy93blF1SElEQ0lqcHVibHVKdno1QnpKNzZoQjYzTk5LWlhPOHI2eHZkWTRKa2Q1QkpxK0swYnJ0OHRtTS9Tbldvc01PRE1ERTA0SEppM0YyRHg0WFA4ckV2NXU4ZHd1TlFMdE1QM1Q2K25LeGJDY04raGl2RGIvT1ppZXVBR1FkT1pQMklHOTVvMWZjOHBNcVNwdFBicmZKVGdBWWZLR052a3ZPUnQwOGJtUmYyMFcxdHNMVHlTK0VwNDNhYzRuTzYvWjFJdnUwd1I3WEU2dXhpL05tU2FmNis3UUo4N0dpUzVUaXVHSmJrZFVySGlwTzJUanNoUHR1enRVMVdQRVZreG1zamtHY3NIdGE0eks5anBHQXhYRGtoWlY5V2hMUFFZMGhDUWZaWW5DOXZuc2xHRDBlblRvOE5MU3MyZUxDZ3RpRUxGa1FQTUJxL1FrM0VkS0VTQjl4M09HRy9PcXpiYytVN08vUU1FbXA5b3pNNVlYVk83UWtlM1Rrc0lVNGZJd005WklOWm16SHFaUmRldDM0WldVVTBIUVNheDBJQUVCMU9qSGtSOGZGQzNPWG4rVlV6TmJPd1RuTTJnZVRJN0dYZG5OUFBWdFdqOSsxSjhubUVUc3NlMVRUc09ZbWlxWnpKenQxQ1VqYkVrbGxJZ2hKcm5tZGJGUWRMWGVNOG1DRytDQ3M3M1ZzOFBVNTludEgwSGl3RmorM251VDByTjYyRWhxY2lxT2Vwc2JGWFFXUkNpd3l1M2NkVkNJUGd6SFNLbDlVVmhBLzdqWHlhRlZ4M255Rnh6dWNiRXVGRGFnZUNFZlJweHJLTEdNY0cxZWM4eG9WRkM1Wk1ycy8yVWdMSFo4TmRQc09hc3NZL0hPQVNwSnk5clFjZGhjL3NjeGg1V1JUOUFsa2VqQklDMkZySHJmTFNSY0NQOHVVV3dta25URTZPVjJEWTRGT3JKZzZkcmFkSDhDdlhxeGMvbmd3QXpNMm5YWlNOcEd2eWhHYUNncUJLV0o0d2xCTVVYck1hUGxmRE05MDVMYm5rWFV1NUhCeTFidDRob0ltY1EvUVltanhySDVBZGJzV1p5Q1U1QnM0SGpIbVVPOC9NaG16cnVNaGt3K0FMaHdUbXBKcnJnMVRwSDE4MVRMTnlNU0FmSVlUck5uK0VKWVIwQ29vOXdmS3dhNXhuUnRnd05DcVJGbnJpMEhtSFBVcmhjdjJpVTFvY2cyL2VIdk5uKzNCY1p6S2tkVW94WGdMa1poY01sT3E0TTB6NzRrMVpNMGNxUDdhR212WlhnSG00cEVOeDAzMDVUZUZrK2U0enN2UjliU2diVS9WT2pFZHNGd3d5M3phMm4yZVpmT1laNEp1dzVtQnZHMDd4Uk1mN1EyeFlSQ2RlV3B3Umc4Zmp6dUQwRVNMVG04TWpyd290ZEVobFErWkRmMTVQVTZFaHpZbmgzMm1FZGNLTUZkM2JpZ1VucDhYNzFORi90amxMTTFnT3BDalVhSnVIUkhSL1owNDNHR0MzeUxmOW44blFuUkVNSGk2Zkt2Nzl5VUJBdE1VRjMxYTRxYnFMYklTMVU3dHZITVhpVitkT090TEQ2aE5ZS2lFL3p1REpPRCtOTWpaN1BzOVAxOC9JSDJ3RXNMK2NZZ1NYeHRpakU4RXNOVHd0enE4QS9kMjJ4ei8yQ0hUMnhPWVdKQ09PQzJFR1grNC9xc2FKL1E3YlFRQlpvWWNHdWxXdTFlb3ZyTkU1cnRzcFI1OFliTVVMN0tBNm8vaDk2NWxydVRCTTFOWUdOODhBbkR0Z0E4RmhtUWpONlNEb0JlWkRCTE9QQmJEakhFTHdWZDVjZlltT3RwVUNUUUkzMm1kSTBoZlNaVzF2UDQvVklhcER4bDZrOW52TEFCT29LZkt1TTdOQ1BMQ2p2eUsxUk9xZWJjOTQ3QWhTdDkvWHVPMlVLSStqTW53Q0RqUXUyKzRFUEtsV05OdG4ydkl5dkVrdmRxVEVwUTROanQwN3ovMGc0TmpDTUIyK0RuVERtQkQwVHNmM0lWQnpnTnZRNi9ZemhsTmFycnBTbFVHZnUrZkZ6UUhGODhVZzQ4ZXRvV0E4Z0Ivd016dk1hem5WL0E3d3RxcnE3czZVZW4xMmhGMVF2TmR0SVZwWUJNa0owNnNGVE1SUkw3TzRsaFUyczhDQjJIWUdhRXF3VC9YZmFZSHljTWl4K1gzNGtNSk1KQjBPbkxjNDByWnJLZmdIclhGV2c2ak4rL3U0SE1UNjRjL2JLR2VXRFFKamdZeGo3NTA2aGlna0RGbkZBNEttZVZ0NURGZThRQllZOUxkNklNNWo4SGJUelBFTjA2MGQ4d1VvUFhFa2ZpMFBQUWlrUVA3eTJRanMybXpCL0ZWS2xudllIeDU4T0E5czNQeVNUVWZ1UjhGMUxBODNDVmk0TXdkTDMyOXdZcFd4M2o2K24vS29hdU1wck5idXNuNmU4VE1PaFhYV1BRcjljUWQ5TEJEczBVa25acG50MDRBOXFLelk0b25hOGF6VHFkZDVYczR3N2FhelFJd2tGQ0RwQUJBZ3dybWNyK2Mwc3BYWnpJdG11QnNSb0RvVUdnMmY1RGFuWWRFNUVkRklMbXFkZ3ZCbWR0RHhkTU5YMVdvTnZROXVFUWliZGFESlBEWHJMVUxiL0RESGVTYmFldzFqd3VOa2Z2aml5YXRidEdkQnVQWER5Tkg3VjVuYzU4RCs0UFMxQndMNUZvamg2WkU1VTdReHlONWZINVBuVThoWVRaOFFVY3lyQnlLb1RkWUJIKzRQd1luSTVxTWVzek95YlNhMU5zcHNNU0NUbk1kK2ZVS3lVMzU4SXBVUEV3aU9rcldiL05UaFkxQ0ZOVmJrMkZQc09CM0VySlZxYi9JNUtwYVB5S3pMTloxQWMwb2RvNDl1eUVGUXhxOFFDZmVaeER6RVRaOVQxcVd6RG5UY0hxQzlmRnIwak0wbjZPd0ZyUWxPRFN2MmZTVnJWc3JwaE1WSlVOZG55Q0NZMElGTUk5NlEySnc4M2o3UGw0eU9XSzhSZWZMQklaL3d0WHhTSGphVW0rb1o3N1FySldQeFhFNXhVQ3dLMUFlc2JLT1NUZkdPZlBtNlJQbk1nY1Y2ek5VU3d5MnNIaVhhTzB2NFNJTVhPZVFTTkR4SjB0UDRmYWJhcWZGaC9zdGFKQUlDdi9ZNGJ6dDlWeFlwSkZVTzBYWXVUenE1L25rb3UvSEExT3hKTEh2MnZKMjBCN05wNXJQR012QnhYeXhGZ3ZvdER3NlhCK2pGYnMrNStsaU8zTGZRR2VkSXArcmVzckc1N3VqYzNZM2RPc1lmWSsvZXZvTzE3OHZCRW5leUJBTWk1RUFSOWJRZEx1TzBjeW05enpSVnJNc0RUc05nUm01NkcvYlFtQ1k3UVlQRnZzRVczcHdMSkZaOVRrYVdJamh6eEVmdlFXS2NBdS80Y1hqVk5nZnBXU0ZyWFdkQnF2dUFoNG9kWHdnNmZvWFA1UHF3Ryt4b0JuejZ0SVJidE04aU9hU3BPZmZVc2JtT2tuak91SXpwdWZBY3lyZnc1c3NScnl5SkZQUFhzOU13eUdrVHVNODZlVEUrWU5iNXo0NHI4ZnpFZG9UUHlBdjRQVTVYbVYxMjRPZ0NxM2R1TUxuSWJDdG8rOGdGQUZtazFEcXpvM3pvbk95TEJlUm1wYU1lUmNGSnpUNlpQdnVlaTQxblM1N1hHdTNndVkvVFdRQlRLSGVGVjY5dFRaa0greW9taTJ6T2M5dWVIY2JuUXgvMEZ4K08xYS8zVENpMTFNaE9ZR0lIckxIN2JDZXJzdGxESjhkVkoraDZ6T2ZEUFJ3bGtwMDVXbndLVFBJdVRkMWNJN3BYenpQeVQ1bGVObHc2M2dKRzlxQUNsSENQTGZ0UWlzOENoalBQenc0NTYxRWNWcGxmUi9aZTJJbFBuWU9heEF3bjgzZ1pjSWdvQy9UNnlWcURiUFk4bktkZHpXb3Yrc05LQjRQUjgvajRGeTVzK3JBN2EzRjhvcFoxbXltY1pGeDAzTnVwdC9ZeGRQMHRVSDY4OVIxbldwV0hOdXdLTXVXUjBRTUhNNjdydTAvNUtmdnpoVlZPVnQvU041RFVKOFE1VU1hSFBWaHFOTXlVbU9xTHhCK1dtWS8zc1ljSWU3YTJYWTZYZGlpaWJXNDQ2ODlNWkd3YXh2dTVKeU9jeHpqc2JmL1RZMTdmTWp1YkN5Q2J6bW00bXdlYjR6cVJPL2xZWWVodzhyR1B5OVF3Nkg2eXNkc0gxK0syNTdBMjJoWmpoMlV4a3hOOWhBOE1FWmVFK0RwcmJOa3NrYU1QOCswK29jN1JURWZ3TGl2R2lJUmVDbmJoOFlIc3Zwc3ljSnc2RUlzZjVWUFNjNWxXVUxmNllMdm5IR0RZZUswY1JKN0FUeDdpQmN5TDNmUkpJdzQveFBNOUtYMGo3bHJzdXpsbmxsZER5dmlJaGVjMkxZMjVmUEZNQncvTFRyNWdmWVJUaHdnMnhBZTIydGtFNk96aFUrSFdjdjY0bytTMG8yMWZvTW1qZTV4SGU1YndGSityTVFGbHgxaDlCSE1mK3VSakhHQlIrZGVvcWZ2MHo1aVlQWDRNSGprU3gvTnFXR1VqMkcySEREcmdLeE5wWVhIZFpwWGlRNWtMdU9DY3NtYndSUUlhWHl5ejhEUGZlb204NlZjL0k0cnF0YXdmTmVxMFVqMkEzYkk0eDBjMzJibnNRMTdzUUQxUHViS3BHTnN3N3p6MlJiU1lSaFdIbnBxdDRyY3RteVo4RW9BbXhCYjVacnFia0Izbk14NWJhWHdpeE9jakhoM0RpVHBzRnVnQ2xzMnVNcXR3eTdiU0JEbjNzRGg4RWdCUHdQaFRUeVBCNVBuZG5WN0ZFdnYvZVo4eGg3Tjk3Q0tNU0NHZkFGc0pSaDZiblRHcll6cTVQWHVzV1oyQ0dJZlBkNElGL3IzaGtkVzR0a2Q0UG43cmtZR2JxSExlRU84QzZ6QllFMm5FVFpPZ1RqcVJRVHNJQ1hlSzJlZWNkc2M2eExhdVUxV3JCWml0T2dQYmEyMU9GL1NRenZHM1ZreGd1WHRHQjVXZHB5Q2RWdjd1V0NZVFV5THNlQzRIV0ZydFlNdEtkQW9RaXNRSjYrTnpOQ3ZZOFp5Ukt3NDh4UUNoYThnY09LTlpWQ3VLZ2s4cGZYekNRRlhLcnZBNUU5OE8yZXpqQjZyOXZpamY1VE4vRytLMU9QeTZPOG9TVW5JN0dyOURlN0Y4SStEc25tV2o5VDJmeHlpTEhJb0ZnSSs2OEo1NzRTeE8zYTdMNThQNGJKMEEvcjNxcFNSQi9FenhlUnFSZlFJVHhoaUFWcGpGbUQ3Y2JKdTI5Umpma3Ywelh1MDdCeCtPNXhDK2ZXNVdQdW1vZWNvWUVWOEFjcnYyUExOTWtHZndSVlpLVU1TSnN5VWlIakhHMTltSHFUdSszeDZUSHM2elNhQmV3SWZEK29vUGRBNzJISCtWdXh6V0o5bXBCdXQzakh5MnJRekYzQ3JvYW1JZm1MdWRNTUNOUWRSc3IvQTVqNXMzdzJCWnZldk1BU2svbGNTT0xEelBKNFdPTCtOR3NSbHlxRHpmWGoyMUR6NDJPUHRvaWNma2NiU21mSjJ6MjR1bEhvN0U1aXFRaWhha1R4K1RHcERlTXoxQzJVZjR6QjMxNWZOVUxQVzUyK05qcVo5NysxeW5ZQkhVNHlOVG5UUnpwamVpYzMwR2VmbDV4dGdwSC9MSkFzUVk0N3dkYVdDVkE0SldjVFRwTU4zdHdUVC9zbXU3VjgrKytDN3JBRGtFOXg3SENWaHc4bnBnN0lPcEhYWG84eHA5cU9PcC92Rmh5TDRZazM3VTA5RkJremJIM2FnREJ4dXdXdDI0T2thMU5XQWxqMElSRkQ2emFaWUdlWHJpT2NDM1dKL2xyY3VXdSs4ODdheWZydjdoZ2FYajhweStWeUptZDVxSEljMldyampNd0dNZ0tCZlUyTm84eStVcjB2aStjVnVqOCtWNGcyMEJrMCtzdzRZOWh1WENpVUdPVFhmcUdwVFpKeUY1K2o1Zm43c21mOXYyNHpxeC93VDR1dXBWUEhJZ05IZ1c1SUZ1UDdNOXZvUkxmZFZIRDhHSUFmZnNBY1I5R3ZlVEQwQWJCZG1IQTN5UGVlRVhMZEtHbTRyN29aN1BYRWY4QkNKdm5ScXY5eG1OVnQxR0h3NTlocDFqSDhSdEsxVXNpMkZsZllidERENnB3bno3emhIRWM1enpycWRRREJhbWhTenA1NW56WmFzWnZvRTVMZ25rNFpUSnMxdmxmRW5UY1h6ejFKZEVINXhta2lEeUJxOUQ4ckZqYkljRmwvTE94ZldiZzdRbXloSFdEd1NCejc0L2JxZjduR09zNnZVMHdRZk5BUm5Pckx0dDVhaHE2L2M4eFdQZU9UbmNzMFdUZkZZcjNSNHBwek9nVHp6QlJ5NnJuQUNFODh5MEp3MldNcW1uaStOOWJhYXhlOENHZm9tQ3d3THMvZmc4ZXpZVlBCeGtyaXRhZ1dDVGdnY3pQVHZFMzRkdUpwK2ltQjJ3ZFNyMVgydlpBRUZqNkRlQXpXS2F4SWR3UHpBM3Uza2lvdU02RDFKS1g1cWVmTXRLdWRKbGhwdG8ySDFNd1p1ZHR3WEVxdWVjOHd1YXNXT0FyR08rNjdRamkrVytQaDkvKzRxVEZpVzBEaUI2U05LRzAvaHR6MFc0d3BpMlJsODN1NUVTOGdQZHlmWjRQb2lSR2J2aVpibWxOWWFXZkZvbGlMQllwalNmZDNZRjRPdUVGTHVYMXZESnUydlk4dTJENnQvMlpXUUlkdTVVbTN3VkM5VzZjK1J0OGJQWkdtZGp5WjNZeEJyYk1YdGI3dm42Q0hFY3cvUDU2cEFWYktsWk9rQzQ1SXJTOVZrTWRkdVVaOE5Fc04za3RrTjN3YmJsN0dCcFF3QzJuZzArbm9vNDhqaWFyOGRqN0xVQVp2OFBQUGZ2RWE2TzBVNEFBQUdEYVVORFVFbERReUJ3Y205bWFXeGxBQUI0bkgyUlBVakRRQnpGWDFPbG9oVUZPNGc0WktoT0ZrUkZITFVLUmFnUWFvVldIVXd1L1lJbURVbUtpNlBnV25Ed1k3SHE0T0tzcTRPcklBaCtnRGc1T2ltNlNJbi9Td290WWp3NDdzZTdlNCs3ZDRCUUx6UE42aGdITk4wMlU0bTRtTW11aXFGWGhDQ2dIejBJeU13eTVpUXBDZC94ZFk4QVgrOWlQTXYvM0oralY4MVpEQWlJeExQTU1HM2lEZUxwVGR2Z3ZFOGNZVVZaSlQ0bkhqUHBnc1NQWEZjOGZ1TmNjRm5nbVJFem5ab25qaENMaFRaVzJwZ1ZUWTE0aWppcWFqcmxDeG1QVmM1Ym5MVnlsVFh2eVY4WXp1a3J5MXluT1l3RUZyRUVDU0lVVkZGQ0dUWml0T3FrV0VqUmZ0ekhQK1Q2SlhJcDVDcUJrV01CRldpUVhULzRIL3p1MXNwUFRuaEo0VGpRK2VJNEh5TkFhQmRvMUJ6bis5aHhHaWRBOEJtNDBsditTaDJZK1NTOTF0S2lSMERmTm5CeDNkS1VQZUJ5QnhoOE1tUlRkcVVnVFNHZkI5N1A2SnV5d01BdDBMM205ZGJjeCtrRGtLYXVramZBd1NFd1dxRHNkWjkzZDdYMzl1K1pabjgveHJ0eVl2RFJmRzhBQUFBR1lrdEhSQUQvQVA4QS82QzlwNU1BQUFBSmNFaFpjd0FBQ3hNQUFBc1RBUUNhbkJnQUFBQUhkRWxOUlFma0J3SVJFZytzaDBPcUFBQWdBRWxFUVZSNDJ1eGRkM2dVMWQ1K3oyekxwdmVFa0lSaUNDMFFhZ2hkT3FHSU5CRkVVY0VHSW9JRnBQaGh1VjdBY20zWDNwQXJLZ29pSUNBaXZZbDBFa3BDU085bGU1dlptZlA5c1R2RDdHWkRVVVRVL1QzUFBKdmR6Y3llT1hQbW5mZlhDYVVVZnZudFlyUFpVRjVlanVycWF0VFcxa0tuMDBHdjE4TmtNc0ZzTnNOaXNjQm1zOEZtczhIaGNNRGhjSUJsV2JBc0M0N2p3SEVjbkU2bnRQRThMNzN5UEE5QkVPUi9FMEVRSU44b3BlSXJvWlJDM0FBUTcxY0FvSlFTOTlDbFY2L1BTRjVlWGx4VVZGUVRqVVlUcDFBbzRoaUdpV0VZSm9vUUVna2dBa0FvSVNRVVFCQ0FRQUJhQUdyM3BnREF1SThuQU9BQnNPN05Cc0FLd0VJcE5RSXdVa3IxbE5KNlNta2R6L08xSE1kVjJlMzI2b3FLaW9yMDlQUnE5M0dvYkd2d25oRGkvWjM0R1FCUVFraURWOWxHR1lZQklRUU13MEFRQktqVmFqQU1BNFpocUVLaGdFS2hBTU13RVA5V0twWFNxN2lwVkNxb1ZDcW8xV3FvMVdwb05CcG9OQnBvdFZwb3RWb0VCUVVoT0RnWUlTRWhDQThQUjBSRUJLS2pveEViRzR1RWhBUm90VnIvelhRZGhmaUI3YmNKeTdJb0x5OUhaV1VsYW10clVWOWZENzFlRDZQUktBR2ExV3FGM1c2SDNXNi9JcURKd1V5K0NZSkFSSUR6QWpNUElCUEJTUTVTM29BbGYxOWRYWjBhSEJ5Y29sUXFiMkVZcGlVaHBEa2hwQm1BWmdBQ2JwSnB0Z01vcHBRV0NZSlF5UE44QWN1eUYzVTZYWDZ6WnMwdWVBRWN2UXpnTlFCQUVmZ0lJUjVBUnltbFNxVlNCRFlKME9RZ0o5L2s0TllZd0FVRUJDQWdJQUNCZ1lFU3dJV0doaUk4UEJ5UmtaR0lqbzVHZkh3OEVoSVNvRmFyL1RlWEg5aitIQ2twS1VGbFpTVnFhbXBRVjFjSG5VNEhvOUVJazhra0Fack5acnNzb0hFY0o3RXpiMUR6QldZaUt4T0JUYngyUG9ETTQzMWVYbDVzUWtKQ0I1VksxVUdoVUxRbmhMUUgwQmFBNXE5OERYaWVkNVNXbHA1TlNrbzY0M1E2ejloc3RwemMzTnljSGoxNjFMcVpvaHpVQkRkVDgyQjIza0FuQXBzSWFDS2J1eExJaWFDbVVDaWdVcWt1QzNCYXJWWUN1SkNRRUlTR2hpSWlJZ0pSVVZHSWlZbEJmSHc4a3BLUy9EZVpIOWh1bkZSVlZUVlFPdzBHZzZSMnlnSE5icmMzQUxRcnNEUWlxcDFlZ0VZYVlXVU5HTm5FaVJNVkgzMzBVZmVBZ0lCdUNvV2lLeUdrQzREVXYrTzE0SGtlcGFXbGFOYXNtZmRYZVlJZ0hPTTQ3cmpSYUR4Mnh4MTNITnU5ZTdjZ0F6c0o5QWdoZ2plamN3TmJBemJITUF6MUFYQlFLQlQwU3V4TkRuQWlleE1CVGxSUHc4TENHcWluY1hGeC9wdk9EMngvbkJnTUJwU1ZsVWtzelpmYTZjdU94bkVjV0phVkdKb1BPeHFSMjlGOE1EUGl3MTRtc2pMeXhCTlBLSll1WGRwSG85SDBaQmltRnlHa0o0RGdmOEkxdVF5d2VZdVpVbnJJNlhRZU1wbE1oMmZPbkhsb3pabzFUaDlBSjRqQTVnWTA2c011UjcyWm5KZjlqWHJiMzBRR3AxYXJKWUJyelA0bVYwOUY5dGEwYVZPRWhZWDViMEkvc0YwLzRUZ09KU1VsSGl4TnI5ZExMTzFxN0dpK25BTWlvSG14TTBuTmxERXl5SUdNVXNyVTE5ZTNDdzRPdmxXaFVQUWpoUFFIOEk5YzlkY0FiQTJlVTRJZzdPVTRibDlWVmRXKzVzMmJuM09EV3dOV0oyZDBJbnVUL3kwNkdPUWdKd0pjWTg2Rks5bmZSUFlXSGg3dXdkNlNrcEtnVXFuOE42VWYySDZmVkZaV29yUzB0SUZ6UUs1MmlxQW1zalNSb1YwdG9QRThMNm1aZ2lBMENtWldxM1dBV3EwZXpERE1ZQUFkL0ZmbmR3R2J0MlE3bmM0ZFJxTnhWM1IwOUQ2NHZMaUNOOWcxQm5JTXcwanFxa0tob0ZjTGNDS0RFOW1iQ0c1eTlkVGJ1WkNZbUlqNCtIai94ZmNEMjdXTHhXSkJjWEV4eXN2TFVWVlY1ZE01Y0tYd0RTKzFrM2c1QnVUc2pIZ3hOQW5NYkRaYmxscXR6aUtFWkFGbzZyOHlOMFRLZUo3LzBXUXliWStNak55T1MrRXFQa0ZPcHE1NnFLb2lpL1B5b05JcnNUZHY5ZFRidVJBWEY0ZUVoQVFrSnljaktDaklmN1g4d0haMVVsSlNJckUwdVMzTmwzUEEyNWJtZzZWZENkQ0l0ODNNWXJFTTFHZzB0eEZDUnZuQjdLWUF1UzE2dlg1TFRFeU15T1E4UU02YnhjbEFybEdBVXlxVmpRS2NuTDE1T3hlOGJXK0ppWWwrNzZrZjJDNHZKcE1KUlVWRktDc3I4MkJwQm9QQkl5YnRLb05zaWFoNml1cm1aZGdabzlQcDBvS0RnOGN5REhNN2dIYitKWGxUeWxtV1pUZVdsNWR2YnRteTVSa1p3UEV5a0tPeTF3WXNUcTZtdW9HTlhrMXdyenoyVGZTY2l1eXRhZE9tYU5hc0dVSkNRdnhYeUE5c0RWbWE2Q0R3NWZGc0xJUkRCRFZmZ0NiUEVwQURtZ2htbXpadENoZzhlUEJFcFZJNWdSQXl6TDhNL3pvaUNNSTJxOVc2NGEyMzN0cTRhTkVpR3dDbkhPUmtMRTRRMlp1M211b1ZIdUlCY0NLNE5SWWE0dTA1RlIwTGZ2Ym1CellBZ05WcVJVRkJRUU1IZ2NqU3pHYXpaRXU3UXViQTVRQ055TlZPdlY3ZklTZ29hQkxETUpNQStGZmlYL3laeUhIYzJwS1NrdlVwS1Nsblphb3E3NjJxeWdDT1hnbmdMaGZZcTlWcUVSd2NMTEUzYjhkQ2l4WXRFQmdZNkw4eS8xUmdxNmlva0ZUUDZ1cHFEd2ZCbGVMU1pLRG1FOURjQWJVZTZxYlZhczFTcTlXVENTRVQvVXZ1YjhuaTF1bjErclhSMGRFNzNBeE9EbkM4THpWVkZpYlNBT0FhczczNWluc1RWZFBZMkZoSk5XM1NwTWsvL3Bvby8wa255L004OHZQelVWeGNqSXFLQ2lrbHltQXd3R2cwd21LeFNLRG1jRGg4WmcrSWdDYXpvL2tFdEx2dnZsdngwVWNmM2ExVUt1OEcwTWQvKy85OWhXR1ljWkdSa2VONG50OXZzVmkrSGp4NDhOckRodzg3UlpDamxEYndyUEk4VHdWQm9HTGlQYy96VkI0UzVIUTZxVHhjU05RUTVLWVE4YUVyUG9TdFZpdk1aak5NSmhOdXVlVVdLQlNLZnk1akt5d3MvRWVjcU5GbzlBbG9vc2RUcm5aZXpvN21TK1dVc1RPeWFkT21rTmF0VzkrclVDaW13Ujl6OW84VVNtbTJ3K0g0Y3YzNjlXc1dMRmhnSklUd01pYlhRRTJWc1RodkJuZForNXRjUFJVRGU4V2MweVpObWlBNU9SbWhvYUgvVEdEak9PNXZmNUpsWldVb0xDeVV2SjVpQm9HMzZ0bFlHSWVYMmtsa2FVOFNxR1ZuWjBlMGJObnlmb1ZDY1QrQUZQL3Q3UmNBK1hhN2ZkV21UWnUrbmpKbGlzNUxUZVhkNENhcHFPNWdYeXJQUWZWV1QzMkZoWGluWkVWSFIwdGUwK2JObTZOcDAzOWU1TkRmMnNaR0tVVnViaTZLaW9xa2dOdkxlVDI5TXdnYVVUdEZMeWRES1NVblQ1NE1iZHUyN1F5RlFqRUR3QzMrZTlrdlB1U2l6V2I3L0t1dnZ2cHkrdlRwaHNzQkhDRkVrQ1hkZTJjdVVGOFpDNDE1VGNXQTNtYk5taUUxTlJYdWJBay9zUDJWeFdReTRjS0ZDNUw2V1YxZExYazk1UUczamVSNUV1OVVLQzlQSjdOa3lSTEZraVZMSGxRb0ZBL0NIMy9tbDZ0NzBKNjFXcTByNzdqamp0VmJ0bXhoM1FBbnFhZ3lnQlBrSGxUdjFDeVZTa1VieXplVnE2V1JrWkdJalkyVjFOS1VsSlIvVE16YjN4TFlxcXFxa0orZmo1S1NFbFJVVkRRSTVmQk9YcGZiMUx4WW1vZGpRUFJ5MnUzMk8xVXExU01BZXZodlY3LzhCb0E3YkRRYVB3c1BEOTlJQ09HOEFNNmJ3VkZaQmdQMVptL2VNVy9lQWIxaVNFaVRKazJRbEpTRVcyNjU1UjlSRHVsdjV4VXRMQ3pFeFlzWFBlTFQ1TG1lM3NucmNwWW1PZ3JrYXFmTWpzWllyZGFCYXJWNnBqdmx5UzkrK1cxc2dwQ01zTEN3REo3blIxVlhWMy9XcEVtVEEzS0E4L2FpOGp4UDNRSkJFS2hYL1Q3eFBYeDVVVVd6aXVoRnRkdnRzTmxzYU42OHVSL1kvaXIydFBQbnorUGl4WXVOT2drdVU5bTJBVXVUcTUzMTlmV3BvYUdoc3dnaEQvdHZTNzljTDJFWVprUjhmUHdJbG1VL3lzbkorYnh6NTg3NU1vQVR3MFI0QUlJZ0NJTFkzOEs5VVRGbFR3NXUzaUFuT3NDOHdjMXV0Nk4xNjlaL1c3dmIzd0xZYkRZYnpwOC83K0g1bE1lbk5XWlA4MlpwYmxDVDFNNTc3NzFYOGNFSEg4eFdLQlNQQVVqMDM0cCsrU05FcFZMTjZOU3BVNWJGWW5tL2I5KytueDgvZnB3RndMblpHeU9xcUpSU3FSaW0yNEZGNWNVVnZBSE91MXF6SE9CWWxwWEE3ZS9ZU09ZdkQydzZuUTY1dWJrb0xDeVVDa0xLcTNMNEtnYnBmb3JKUVUzTzBoaEtLYkZhclVNMUdzM2pBQWI1YnoyLzNBQnBHaGdZK1B5dnYvNDZvTHE2K3FNbVRacnNKWVN3TXZXVTRGSk9LdlZpY0hLQW83NmFBdmxTVDhVb2dOVFVWRVJFUlBpQjdXYVJxcW9xajNBT01ZbmRWNFZiV1NnSEVlbTVENWJHbEphV3hzZkZ4VDNPTU14Yy83M21sejlCUFIwUUh4OC93T0Z3L0hmSGpoMmZabVZsVmJyVlUwWU9jSzRLNWtSb2pMM0pWRlZjalpxYW1wcjZ0M0lxL0dXQnJhU2tCSGw1ZVNncUtwTENPZVROVlh3NUNieFpHcy96Y3BiRzJPMzJDU3FWYW03cHVlTmR5eDNCeUVodmRWT2RjMzE5UFdwcmE1R2FtdXBIZ0wrQTZQVjZiTnEwQ1E2SEE0TUdEYm9tZzcxYXJaNDFiTml3WG5WMWRlOUhSVVZ0SVlRbzNPb3BKN085RWJuOVRRNXdMTXNTbG1VYnRiMTVNemlPNDFCVFV3T3oyUXdBaUlpSVFPdldyWDgzOFNnb0tBQUF4TWZIWDlYNVYxUlV3T0Z3L0c3bkJ0UG9ONndlbnl4N0VvUDdaeUlqc3o4ZVdmZ3F5a3pPbTJMQjVPZm40OHlaTXg1eGFwZlltZzdGRjg3ZzJKRmZrWjJkZzhMaU1saHNkamdjRGlJQ25EczFpZ2lDd0FpQ29LaXNyRXgyT3AydnFWU3Evd0hvdXZvLzgzRFB3bmR1aW5NOWZQZ3czbnp6VFFEQWtTTkg4TnByci8ycFkvZzl3bkVjQmcwYUJJUEI4S2VONFhyTDJiTm5ZYmZiRzN6dWREb3hZY0lFRkJVVklUQXdFRmFyOVpxUFRRanBIQmtaK1I3THNvdDM3TmpSakZJYVFDblZ3TldZV2tVcFZWQktGWUlnS0FSQllIaWVKMDZuazdBc0M1UEpCS1BSU0VRdnFEeVAxR0F3U0ZXaUt5b3FVRnhjakFzWEx1RFFvVVA0K09PUDhmYmJiLy9tZGZiU1N5L2h6Smt6QUlDQ2dnS3NXN2NPSzFhc3dLcFZxNjVxUFd6WnNzWG4vMTdyZW1nVTJMWjk4Q3hlL0hRM1JrNS9CdiszNEQ3ay9mZ2VIbm4yNHo5OUlaMDdkdzVuejU1RmZuNitSN1Zia2ExVkZlY2h2NlFheXNCUWhBUUhnSE5ZU0gyOW5vaU16YzNVaUNBSUlrc2JGeDBkL1JVaFpPYk4rTlQvOHNzdmtaR1I4YmNZZzBxbHd2dnZ2LytidWk3ZERQUGdTK2JNbVlPU2twSUduK2ZsNVlFUWdrV0xGbUh5NU1sbzE2N2Q3NW0zQi9yMzcvL2ZFeWRPWkFIUXd0VVRWZ1EzcFJ2Z0dCSGMzTDAwQ00vemNEZ2N4RzYzRXhIY0xCWUxUQ1lUVHA0OGlZS0NBdFRVMUVqOVBWaVd4Wmd4WXpCdzRNRGZORTZUeVlUZHUzZWpUWnMyQUlETXpFeXNXTEVDdDkxMjJ3MWZENDBDVzFGUkVVaEVjMHlaTkFZamI3OFhMeTkvRWNPNkpNRUpRRjk0RkhQdm40Q01qRXpjTnZraDdENVhCUUE0dXY1TkRNKzZGM2syQUhEaXhZZEc0dUZsWDdwNStVbE15aHFPZDcvWWlEbFRiMGRtUmlZKzIxM29ZbUNIdnNjOTQ0WWlJNk1YcGo3NkhQSnJIU0p0eE5aUGxtUDBnTDdJN0RzWUR5NTRCYWZQblVOQlFZSFVEcys3SjBGRmVUWEFxQkFhRkFDVldrdlVTZ1dvNEhTQm10TkpPSTVsbkU0bjAyUEFpUEJ2OXAxNVFhVlNmUW1nMjRGdjM4VHcvcjB3OExaN2NMalFKS2V1SG1OWTh1WWFPRzdRVFdNMEduSDI3Rm4wNkhFcER0aHF0V0xldkhubzM3OC9IbnZzTVRnY3J0R1l6V1k4OWRSVEdEcDBLQ1pObW9SVHAwNEJBTDc0NGdzOCt1aWpHREJnQUJZdlhveXNyQ3pNbVROSGJMcU10V3ZYWXVUSWtjakt5dkw1cFBRMWhsOSsrUVhqeDQvSDRNR0RzV1RKRXRoc05nQkFiVzB0WnMrZWpheXNMSXdmUHg2Ly9QS0x0TTlkZDkyRmtTTkhZczZjT1pLNkk4cW5uMzZLNGNPSFk4aVFJWGp0dGRmZ0hUVHVQWWJ2di84ZTc3MzNudlQ5NmRPbnNXREJBb2twTFZ1MkRFT0hEc1hZc1dPbE1aak5aa3lmUGgydnYvNDZoZ3daZ29rVEo2S29xQWdBOE1JTEwyRC8vdjNTOFZhdlhvM1ZxMWRmOXRyczJiTUhFeWRPUkdscEtlYk9uWXVKRXlkaTU4NmRBSUNubjM0YVR6enhCQ29xS2pCeDRrUk1uRGdSTE10ZTluanIxNi9INjYrL2poa3pacUJmdjM1WXVuU3BOQS9MbHkvSHFGR2p1aXhjdVBDRFhidDJ6ZjN3d3crakthVUJBRFNVVWhXbFZDa0lncExuZVViYzNNQkdEQVlEYW10clVWdGJTMncyRzNRNkhVNmZQZzJqMFlqczdHeHMyN1lOUjQ4ZVJXVmxKY3JLeWxCUVVJRGk0bUxVMWRWSnY1K1hsNGQ3N3JrSGdpQkk0NTA5ZXphT0hqM3FjUTRiTjI3RXFGR2p3RERNRmRmMjVkYkR1WFBuTUdIQ0JBd1lNQUNmZnZycEZkZmtoUXNYTUhQbVREend3QVBvMzc4L0ZpNWNDTWgwYzQrdDhzUUc5R2pmRXAxNmpjRFNWOTdCNlJMWGlWTGVnRmtqT3FIN3NHbjRidE42ekpwd0sxcjNtSUFTTzhXdWorZWpSWXMrT0dtbW9KVERJNE5TTUd6Mlc2NzlxdmVoUzRzV2FObTZFMmJNbTQ5Rjg1L0Uzbnd6K0xvVEdOQytKVVkvK0N3MnJGK04wVDNiWXRUanJuMU9yRnVHbGkzYVl2N3JLL0hLMGpsSWlvbEMxclFuTUgvK2ZFeWZQaDNqeG8zRDRNR0RrWm1aaVk0ZE95STFOUlVhQlFGUmFoQVpHVWxDUWtLSVZxc2xhcldhVVNxVkN1S3lLYXBYcmZsMjhPSUhSLy9Zc20wZmVxeWFvNDdTUGJSclNnczY5cUdsZFAzYWxYUll0MVRhZXNUamxGSktUNnhiUmx1MmFFdWZlZXQvZE8ybksyaW5sSlowMmJvVDlFYklxbFdyNk50dnZ5MjkvL0hISDJuLy92MXBXVmtaZFRnYzlNNDc3NlJyMTY2bGxGSzZZTUVDK3E5Ly9Zc0tna0FQSHo1TWUvVG9RYTFXSzMzOTlkZnBmLzd6SDNya3lCRTZkT2hReW5FYzdkV3JGNjJ0cmFVSER4NmtJMGVPcEhxOW51cjFlanBreUJCNjh1VEp5NDVCcDlQUjd0MjcwN05uejFLZTUrbkNoUXZwRzIrOFFTbWw5UDMzMzZlZmYvNDVwWlRTUTRjTzBYNzkra243bVV3bWFqUWFhWHA2T2pVWUROTG41OCtmcC8zNjlhTVdpNFZhTEJZNlpjb1Urc3N2djF4MkREVTFOYlIzNzk2VTR6aEtLYVZMbGl5aGE5YXNvWlJTK3ZycnI5T25uMzZhT3AxT2V2YnNXWnFabVVudGRqczFHQXcwSlNXRkhqaHdnRkpLNllvVksrajgrZk9sZVowNWM2WjAvR0hEaHRIQ3dzS3J1a1pEaGd5aHVibTVEVDQvY2VJRUhUTm16RlZmNjQ4Ly9wamVkdHR0VktmVFViUFpUQWNPSEVoLy9mVlhTaW1sTnB1TkdvMUdPbVBHRFByamp6OVNudWQvS2l3c25BQ2dHWUFtQUtJSUlXRUFnZ0FFTUF5akpvUW9DU0VLdFZyTkJBUUVFQUFrTEN5TXhNZkhJems1R1FFQkFXamV2RGt5TXpNeGVQQmdqQnMzRHRPblQ4ZjgrZlB4MEVNUFllREFnVGgrL0RoWWxnV2xGR1BHak1IT25UdEJLY1c1YytmUXQyOWZPSjFPRDh3WU4yNGN5c3JLR21ESnA1OStpdWVmZjk3ak03ZXFqUFQwZEJnTUJ1bnpqei8rR0dQSGpvWFpiRVpWVlJVeU16T1JuWjN0c2UrcVZhdnc5dHR2Uys5UG56Nk5ybDI3b3F5c0RGYXJGUk1uVG15Y3NjV2xqOGJXcmQvanZxd08yUC9OZXhnemVBZysrZmtjaE9JRDJISFdnSWtQUG8zYlI0N0Jvc2Z1Qmx0OUZMdFAxbDhWQ3huMTZISjgrT295dkxqc1pmUnBHWVNDZzd0UmFHVXdmZDRpakI0ekdXKzgrd0ZtanV2dGVnSjh2d0UwTEFGOHhSbmtGQmtRb0hEaTlQR2pVcHlhZDBpSHpXWURUeWtnOEI2cXA4dnJLVEFVVU14K1k5UERVeWVPWDdsay9zeWhHbnNadHUzT1JmNnZoMURQQitEQnA1L0JtSEgzWUdDWGhFdFBvZTgzQUJGSlNGQVlVV1VMUkdJRWcxMjc5dDBReHJaMjdWcU1HemZPNDdNMmJkb2dJU0VCYXJVYTNicDFRMFZGQlFEZ3A1OSt3b3daTTBBSVFmZnUzWkdjbkl3VEowNEFnRlIxTlNRa0JFcWxFa0ZCUVdCWkZwczNiMGFUSmsyd2R1MWFyRjI3RmpFeE1UaDA2TkJseDNENDhHRjA2TkFCYmRxMEFjTXdXTEJnQWNhUEh3OEFtREZqQmhJU0V2RDIyMjlqNTg2ZHFLbXBrZllUZjk4N0lEUXVMZzRxbFFydnZQTU9UcDgralpVclZ6WlFNYnpIRUIwZGpTNWR1bUQzN3QxZ1dSYTdkKy9HcUZHdVpKQWZmdmdCSVNFaFdMbHlKUTRjT0FDR1lYRCsvSGxwREQxNzlnUUFaR1Jrb0tyS3BXa01IRGdRT1RrNTBPbDBPSG55Sk9MaTRxNUhXNzlybHU3ZHV5TThQQnhCUVVGbzM3NDlLaXNyQVFBQkFRRUlDUW1SNnFzeERETzRXYk5tYjN6enpUZFQzS3BwZ0tpYUFoQlZVd1VBUnN5ZUlZUVF0eU9OMk8xMjhEd1B1OTB1cWFaNnZSNTFkWFZTWUx2UmFFUnViaTVPblRvRnU5Mk9HVE5tNFBQUFB3Y0FmUFhWVjdqbm5uczg2cjNsNXVZaUpDUUVDUWtKVjNXdWphMEhBT2pjdVRPQ2dvSVFHeHVMWWNPR2VURC94dTZMaElRRUpDUWtRS3ZWNHE2Nzdtb00yRmhzVy9NWjloY3llR3p4TW16YnN4ZTNkMURobGRmZWQzbFFBR2cwcnVhdEt2Y3J4L0x1ZlFYSUdHc0RDZmVLbDJFNUJ3QUZOQnFYZzdaRmVoOWs5ZTNzb3B3bUN6aWJIaGZPbjBkaFlSSENrMUlSRzZLOFhQY29Ra0VJcFlKVU84M3A1QmllNTVuaXZPMEp2VnEyZUMxQXEzMERRSUpTbzRZQ0FNZXo0Snc4QUFXVW1vWk9ZcnZORGlYRG82YXlFcFdWMWVpU05RVlp2ZHJlRUZ0aWVIajRaYXVoTWd3anFRc2N4MEdqMFVqZmFiWGFLNm8vTnBzTm9hR2gwaloyN0ZqMDZkUG5zbVBnT0E1cXRWcDZIeElTSXBYRmVlMjExN0IrL1hyMDZORURJMGFNdUtyekRBc0x3OGFORzVHYW1vcHZ2dmtHdzRZTlExbFoyUlhuWWVyVXFmajIyMit4ZmZ0MkRCbzBTQW95dGRsc2lJeU1sTTVwN3R5NVB1ZFFQbmRLcFJMang0L0g5OTkvajNYcjF1R3V1Kzc2MDIxM2hCQmNJWTg3UWExV3Z6Uno1c3huTm0zYWxDaXFwaktBRTRHTmNkdVRJUWdDY1FmbkVrRVFpTVBoOEhBcTZQVjY2ZDZ5V0N3b0xDeVV3SzF2Mzc3SXo4L0h1WFBuc0czYk5reWFOTWxqTUd2V3JNR0VDUk91K3p5bzFXcklTNnRkelgyaDBXZ2FBellsanYrNEVrOHRlQlo3VCthanRMUVFlclByeGxFMDY0Wk8wU3I4c081L0tDd3R4YW92TndDQkxkR3RZd3ppWStJQTFPR1hnOW5JUDdrTEY2cjVLdzY4WlpjTVJDaFliUHBtSGNwSzgvRFl1RXowdnVkRm1Fd21ORW0rQlpiYUtnaWg4YmlsWlRNb0JSWUJha1dET0RWM3hWdkNzaXdVaEFCVUlDekxFWjduR1VHZ3pOQ0hYKzNYcEhubWg1bnR3MmJ1MnJnRzU0cEw4ZTJxTmJDUUVHUjBhWTFiT25SRUlDeFl2Mm9kQ3M4ZnhjbThPbWw4ZlhyM0JLZlhJU0VqQ3c4L09BMXQ0c09Ra2RIbEQxL1lhOWFzd1IxMzNIRk5UL3N0VzdaSWJ2YnM3R3gwN05qeGl2dFVWVlZoekpneG1EQmhBbHEzYnUyeFlIeU5vWFBuempoNjlDajBlcjMwUHg5ODhJSGt0UjAzYmh5NmQrOHVxUWxYa2wyN2R1SGxsMS9HYmJmZGhsZGVlUVZ0MjdiRndZTUhyemdQM2J0M1IybHBLVmF1WElrcFU2WkluMmRrWklCbFdVeVlNQUVUSmt4QVFrTENWUVdmVHBvMENldlhyOGZodzRldnlYaXUxV3BSVjFmM3A0QmZlbm82amg0OU9xTlhyMTR2RlJRVTlQRGxXQUNnRUFTQkVkbWI2RFdsbE1LWFUwSE0xckhaYkZJSi9ieThQSnc5ZXhhVEprM0NvNDgraXFGRGgzcFVDZUU0RHJ0MjdjTFFvVU92eTNrVkZoYUNVZ3FIdzRIZHUzZWpRNGNPVjF3UE9wMU9zamYvOU5OUGpjV3hNWGpzcGYraWV2NUN6QmczQkJ3Rm9sdDJ3Y3N2ejRGUzNRVExYdjhYWnM1N0hnUDdyWUk2ckNtZWVlVnRwSVVDR0h3blJxVjlnK1VQMzRaUFcvZERpNlpoMEYzaEpEVEovZkhLMGdmeDFMOFhvZSs3SEtLYWQ4VnpDNmZnOU9uVGlPNDRCSm10TCtEbmJ6NEQ2K1NoMElhZ1pZb0dBWEI2eDZoSjhXbFFLQWdSQkNJSVBBSEFESjc0eU5UWC8rL2had2pScGl4NCtYVVVQVElQSTI3dEIwVkFCTzViK2hxR3R0SUNHSW9sRHc3QnN4OCtqUjlYeDZKOXdxV3FvOE1mZmg2UGx6NkJOeDZmZ3VVOEVOMnFLMTdxUHhsQStCKzJZRm1XeFo0OWV5U0QrTlhJMHFWTE1YUG1UR3phdEFrVkZSVll1blRwRlcvbzhlUEg0L1RwMDhqS3lrSk1UQXdVQ29YazVtOXNEQWtKQ1pnN2R5NG1USmlBbUpnWUFKRGM3ak5tek1EQ2hRc1JHeHVMMk5oWUNJSUFnOEdBc0xBd2pCczNEdlgxOVRDWlRCZzFhaFNDZ29Ld1pjc1daR1ptWXZYcTFSZ3pab3pyd2FsUVNEZkk1ZWFCRUlLSkV5ZGl5NVl0U0VtNVZOZHo0Y0tGZVBUUlJ6RjI3RmhRU3RHdVhidXI4cWFLUFFOYXRXb0ZwZkxxd3p1blRwMktPWFBtb0huejVoZzllalNtVHAxNjNkZkQ4ODgvangwN2RxQzJ0aGJIamgzRFN5KzloUGZmZngrdFc3ZkcxS2xUTVdyVXFJRnhjWEhOQmcwYTlOYlBQLys4MFoyR0phL3N6QU1BcFZSd3gyNUNvVkJRa1JDbzFXb2FIeDhQczltTVU2ZE9TV3p4czg4K1EvdjI3VEZ5NUVnSWdvQTJiZHFndUxnWTk5NTdyOGY0ZnY3NVovVHQyOWVEeVFQQWhnMGI4TnBycjhGa01zSHBkT0xubjMvR0k0ODhna21USmpXNkhrU1FHanQyTFBSNlBYcjA2Q0daRHk2M0hod09CKzY5OTE0cDlPYUtaWXRZaHdsV0I0UHdVSy9PMDRJVDlYbzlna09qb2ZaWUJ3TDA5WG9FUjBaZVUvU3Z3RHFnTjlzQUJqaWJrK01SemxGZFhZWGFlaDBjTmx1RGJBSTVxTW15Q0pocGQwOVZMUC9QZnhkRWh3Y3Rna2Nnc210ODJ1QndhTlNlaE5WbTBRUEtZR2g5cUtTc3d3S2pqVWQwK0I5ZmF2bnMyYk00Y3VRSTdyNzc3bXZldDY2dURxR2hvVkNwVkZlOWo4MW1BOGR4SG1Xa3J6UUdsbVZoTnBzUkdSblpZSUhaYkRhRWgxOGI4SnRNSmhCQ0VCd2NmRjNtd1dBd1FLMVcvKzQ4eUNsVHBqU0l1OXU0Y2FPSDUwL3NrWEdsY3k0dUxzWWpqenppOFZuNzl1MnhZc1dLM3p5K21wb2FhTFZhTUF5RGYvM3JYODdFeE1UWDNudnZ2WTlPblRwbGQ2ZGtjZTdONmE3ekpoQkNCSGtoUzQxR0E3VmFUY1hhYm1McEk3Rm9aVlJVRk9MajQyRTBHcEdUazROVnExWjVuT3VubjM2S1BuMzZvRldyNnhmUUxpYnJ5ME5CR2xzUDJkblpXTGh3SWI3Nzdqdm85WHBFUmtiZVhQWFlkRG9kY3J4QVRYUVNpTTFXNU4yalpLQW1yNXZHVkZaV0prVkZSVDFEQ0prQnYvamxieXFDSU9EdXUrOUcwNlpOd2ZNOFRwMDZoYSsvL2hvaElTRXJkK3pZOGVIdzRjTkxDU0VPTDNEanZjQk5LajB1Z3B1OEc1WUlicVdscFNnb0tNQ3NXYlBRcDA4ZnRHL2YvcWJKTHhXQmJjT0dEWmNZL2MwQ2JISlFLeWtwOFFBMWVjTVZIMHhOVEkxaUJFRWdKcE9wbTFhclhlaXZtZWFYZndxNFpXZG53MjYzSXowOVhYSWc4VHkvSlRjMzk3MTI3ZHFkQnVDUXNUZW51N2tNNys2eElJaU5ZK1RnSnBZY0Y3MlhZZzIzbEpRVXFXRGx6UUp1VnFzVmhZV0ZIa0hRTndXdzZmVjZaR2RuK3dRMWthbjVVajlsV1FTRVVzclliTFpoYXJWNkVmeVZiZjNpRjFCS0Q1ZVhsNytUbUppNDF3dmNPRGU0U2N6TlhYNjhBYmcxcHBhSzRKYVdsbmJOWm9jYklYOTZFcnpCWVBESjFIUTZuYzhLSFY3cXB3UnFEb2Rqc2xLcFhBU2dsWDlKKzhVdnJrcTlDUWtKa2JXMXRXOUZSMGR2cHBReXhCVTRSaWlsSE54T0JjR2RVdUFtT1JRdXh3UDFBWlMrZmdOcGFXbS9LUzNxYnd0c0pwUEpwMDFOQkxYTHFaOXlVR05aOW1HRlFyRVlRSXgvT2Z2Rkx4N0FreElWRmJWWXI5Y0hoNGVIZitNdWQwUzhOVFlSM0p4T3AwOXdhd3pVeEsxRGh3NDNWYU1ZNXMvNllZdkYwcWlqd0VjVFk5SVlxSEVjOTVSQ29WanVCN1hHN1EvMzNYZmZUVFdtd3NKQy9OVWFkYi84OHN2bzNiczNoZzRkS3FVYVRaNDhHWk1uVDhiMDZkT3YrKy90Mzc4ZjE3SG5iMHhZV05nU3M5bDhMd0N0TEpoWG5xa2daU2s0blU3aXJscEpSN1FBQUNBQVNVUkJWTk1tSmREYmJEYVBRTjY2dWpvcGVUNC9QeDg1T1Rtd1dDdzRlL2FzbE5IaExmUG16Wk15WlJxVHpaczNTeGtPZnpsZ3M5dnQxK0w5SlBJT1VxSk43WjEzM2xGeEhQY3N3ekF2d3BWUzRoY2Z3dk04amh3NWNsT042Y1VYWDRURllwSGVHNDFHeko0OSs2YWR3NU1uVDJMTGxpMzQ2YWVmc0czYk5uVHExQWtxbFFxdnZQSUtubnZ1dWVzK3Z6VTFOVmkrZlBrMWhlejRrb3NYTCtLNTU1NFQzd1lFQlFVdHJLeXNmRWlqMFFRMUFtNEtRUkNJdlB5UnU5S3VCRzRXaXdWR283RlJjSHZpaVNjOFVxM2tjdXJVS2FsZ1FtTlNXVmtwRlNmNFM2bWlITWRkMXZ2cFpWTVRjejRoTDhmeTY2Ky9CcWVucHk5aUdPYkp2eU1ZSFRod0FNMmJOOGYrL2ZzUkZ4ZUh2bjM3U2psMVpyTVoyN2R2QndEMDZkTUgwZEhSMG43bDVlWFl0MjhmSWlNak1YRGdRSjlWRms2ZE9nV05SaU1WRWF5dHJjWE9uVHNSR0JpSWZ2MzZlYWdUUjQ4ZVJWNWVIdnIxNjRmYzNGemNldXV0a2xxeWI5OCtsSmVYbzNmdjNraE12TlFPb3F5c0RQdjI3VU5vYUNnR0Roem9rZVlGdUxJaWFtcHEwTDU5ZXdCQVRrNE96cDQ5aTkyN2QyUGJ0bTBBZ0w1OSswcnhaOFhGeFRodzRBQ1NrNVBScTFjdkNRZ3ZYTGlBbUpnWTdOKy9INm1wcWVqU3Bjc1Z4MEFweGQ2OWUxRlJVWUdlUFhzaU9UbFoyaWNuSndkUlVWRW9MUzFGYm00dSt2WHJoOFRFUk96Y3VST0hEaDFDUkVRRTl1M2JCN1ZhTGMxRDA2Wk5ZVEtaR21XbGh3NGRRbEpTRW5yMTZnVkNDSTRkTzRiVTFGUm90VnFjUG4wYW5UcDF3b1VMRnhBWUdPaVJZN2x1M1RxTUhUdjJpdXZoK1BIamlJNk9SbEpTRWdCSWViT0RCZzNDc1dQSGNQVG9VZXphdFVzS2NCMDZkQ2kwV3UzYzFxMWJxNGNORy9iUnl5Ky9ySGVybEtMZHplbFdTM2wzcVh4UkxZWEQ0U0NDSUZDajBRaTFXbzNFeEVRUFZaUVFncEtTRWdRRUJIalkyOFRyNTZ0czA5R2pSNUdibTR0dTNicDV4TUFKZ29BZE8zYWd2cjRlUTRZTWtZNzN5eSsvb0UyYk5nZ0xDd1BMc2podzRJQjBMZXgyTzdadDJ3YWxVb2wyN2RyZFdNWkdLZlVBTlhreXUzZlRGVmx2QWc5UU8zLytmRVI2ZXZyU3Z5dW9BYTR5T2s4KytTVDBlajJXTFZzbVpRUG9kRHJjZHR0dEtDMHRSV0ZoSVVhUEhvM2EybG9Bd0xGanh6QnAwaVRvOVhwczNyd1pEenp3UUlQamJ0bXlCZlBuejVmQThPTEZpNWc0Y2FLVS9EMW16QmdwTFdYMTZ0VjQrdW1uWVRRYXNXalJJano5OU5NZUtzWFhYMzhObzlHSUtWT21JRHM3R3dCdy9QaHgzSDMzM1RBYWpkaTVjeWNtVDU3Y3dEYXpidDA2andUbXVybzZsSmFXUWhBRUZCVVZvYWlvU0xUellPZk9uWGpnZ1FkZ3NWanc3cnZ2U29Hc3BhV2xtRFZyRnQ1NDR3M29kRHJNbWpVTHUzYnR1dUlZNXMyYmh5KysrQUlta3dsVHAwNzFLRlcwYXRVcVRKOCtIZSsrK3k1eWNuSlFYKzhxNmxCU1VvS2FtaHJZYkRZVUZSV2h0TFQwaXRkdjU4NmR1TysrKzJDeFdQRFJSeDlKa2ZJYk4yN0VrU05IY1Bic1dUenh4Qk1BZ1BmZmY5OURQYU9VNHZ2dnY4ZnR0OTkreGZWdy92eDVQUC84ODlML2JkMjZGWjkvL2prWWhrRjFkVFVxS3l2QnNxdzByNkt3TER2TDRYQThQSEhpeEdnQVl2RktGUUNsSUFnS0FBcEtLV0ZaVmxKTFRTWVRxcXFxWUxGWVVGMWRqWnljSEEvbVZsVlZoYTFidDZKZHUzYkl5Y2tCcFJSbnpwekIrUEhqVVYxZGpjOC8vOXhqN2w1OTlWVzgvdnJyc0ZxdGVPU1JSN0JqeHc3cHV3MGJOdURvMGFNNGZmbzB4b3daSTdINzVjdVhTeVlNbzlHSUo1OThVZ0xDcVZPbll2djI3Y2pQejNkbGZ6Uld0dWlQMkU2ZlBvMXZ2LzBXcjd6eUN1Yk5tNGVwVTZkaTVNaVI2Tk9uRHpwMTZvVFUxRlFrSlNVaE5qWVc0ZUhoSkNnb2lHZzBHa2FwVkNvVUNvV3lzTEF3VGhDRU4rbmZYSVlQSDA2enM3TXBwWlNXbHBiU0RoMDZVS2ZUU1d0cmErbXhZOGNvcFpTeUxFdG56SmhCdDJ6WlFpbWw5UDc3NzZlYk5tMmk3dExRZE1HQ0JWU24wMUdqMFVqVDB0TG8xcTFiNlpBaFEyaFZWWlgwTzZXbHBmVE1tVFBTOGJLeXN1anAwNmNwcFpUMjc5OWZHa041ZVRudDNyMDdwWlRTNDhlUDB4RWpSbEJYTldwS3Yvbm1HL3JVVTA5UlNpbjk5Tk5QNmV6WnM2blQ2WlMrczlsczB1OEpna0N6c3JLb1RxZnpPTithbWhyYXRXdlhCdk13ZVBCZ2FRd1dpNFYyN3R5Wk9od09tcE9UUXdjTkdpU040WU1QUHFEUFBmZmNaY2R3NXN3WmV1dXR0MUt4UitldVhidm8rUEhqcGQrYVAzOCtmZjc1NTMxZWowMmJOdEZaczJiNS9NNW9OTktPSFR0NmZEWnExQ2g2K1BCaFNpbWxITWZSbmoxNzB2ejhmUHJkZDkvUmQ5NTVoMzc0NFlkMDRNQ0J0TEt5a280ZE85WmpqbzRjT2RMZ3R4cGJEM2E3bldaa1pORGk0bUpLS2FWMzNua24zYkZqeDJWTEp4a01CcHFXbGtZNWpxTjJ1LzJEMmJOblp3Qm9BU0FCUUJTQVVFSklJTU13R2dCS2htRVVHbzJHSVlTUXdNQkFFaHNiaTRTRUJEQU1nMDZkT3FGUG56NFlPWElrSmsrZWpDWk5tbURGaWhYNDl0dHZwUnA1SDMvOHNYVC85K3ZYRC9uNSthaXNyRVJHUmdic2Rqc29wVGg0OENDbVRKa2lsUzFhdEdpUnRNLzA2ZE94ZnYxNlVFb3hkdXhZbkRoeEFwUlMxTlRVb0d2WHJxQ1U0cGRmZnNHSUVTTWdzc3kzM25ycnhxbWk1ODZkdzRVTEZ5VDFVOTd6VTdTcE5SSjhLekcxNU9Ua1JZU1EyZmdIaUppdjJMUnBVekFNQTZQUmlKQ1FFS3hldlJvclZxeEFhR2dvY25KeXBDZDdZV0docEY0U1F2RHZmLzhiZ012emJMZmJNWC8rZlBUczJWUEs3d1JjcFdPZWYvNTVXQ3dXQkFjSG82S2lBanpQUzZ4SVBKN2MxcE9ibTR2eThuS01IRGxTc3VHMWJldXFkako1OG1RVUZSVmgyTEJoU0UxTnhiUnAweEFRY01uOGVlVElFYVNrcEZ4VjNCUFA4OGpQejhkVFR6M2xNVjR4K1Y2cjFVcnFlWEJ3c0ZUSnBMRXhGQlFVb0czYnRwSjZucGFXSnRYakYrVjZwUVJkdkhoUlVyMlVTaVhhdEdtRHdzSkNwS2VuWStmT25YQTRISmc2ZFNvT0hqd0lwVkxwTVVlTkpYbjdXZzhSRVJHWU9uVXFWcTFhaGNtVEo2T21wZ2I5Ky9lL3FyWGwzaDRZTjI0Yzl1N2QrOEdKRXlmcXZiVXJkODRvTCthWDhqeFBXWllWKy8vQlpyTkphbWg1ZVRsaVkyTlJYVjBObFVvRmhVS0IwNmRQUytXazVPc29QejhmRm90RlVyY0ZRZkJZRTNMelJXcHFxa2UxRjE5U1ZsYm0wU05WcFZMZEdHREx6OC8zQ1dvK0tuUTBDT2tRYldvdFdyVDR4NENhWEl4R0kxaVdSWEJ3TUxaczJRS2owWWd2djNSVkpYNzAwVWVsLzR1T2prWkZSWVdVRUw1bnp4NTA3OTdkNVNGaUdHemV2Qm56NXMzRGUrKzlKK1Vycmw2OUdvbUppVml5WkFrQWVLZy9VVkZScUt5czlMQ2ZpWiszYmR2V1o0WFp2THc4UFB6d3czajIyV2R4N05neFBQamdnOWkyYlJ1aW9xSXVlOU1TUWp5cXN3S0FRcUZBZUhnNFB2endRNmtza2lpaSt1MUxHaHREVEV5TXh3MVNWbGJtQWZMWFU4VGZFcHZ1aUwvVnZIbHpWRlpXSWpBd0VJTUdEY0xpeFlzOUdxWllMQlljUDM1Y2VpaGRhVDBBcmlUOEVTTkdnR1ZaVEpzMnpjT3U2bXRldlVXdFZqL1FwazBiWWRTb1VlKy8rT0tMYUF6Y1JBRGlPRTRLQlJFZEFZUVFYTHg0RWQyNmRVTnRiUzBVQ29Ya1FEaCsvRGg2OSs0dEhVOWNROUhSMGRpMGFaTlBPN0I4ek9YbDVjak16QlRIS2ozQTVDYU9xS2lvQnVyOEh3NXNKU1VsVXRNVmI2Ym1iVlB6RmRMeHpqdnZxTnlPZ2puL0pFQjc3NzMzTUdYS0ZLeGF0UW9qUm95QVNxVkNiR3lzVkErcnVMZ1l1M2J0a2tyc1RKczJUZktrNWVibTRxdXZ2c0tHRFJ2Z2REcWhWcXVSa0pDQXQ5NTZDN2ZmZmp2YXRXdUgvdjM3SXlZbUJsdTNic1dPSFR0dzRzUUpuRGx6UnJLeFRabzBDUXNYTHNTRER6N29rWVBYdDI5ZnZQTEtLM2oxMVZmUnYzOS83Tml4QTBsSlNaZzhlVEtPSERtQ2JkdTJZYzZjT2FpcHFZRmFyWmFldm1MbGlPWExsemM0MS9Ed2NDZ1VDbnoxMVZkbzBxUUoyclZyaDVpWUdEend3QU9ZTTJjTzVzMmJoN3E2T216WnNnWC8vZTkvTHp0dmpZMmhhOWV1SUlUZzdiZmZSa1pHQnBZdFc5YWdTc1cxZXBzM2JOZ0F1OTBPanVQdzNYZmZJVFEwRklNR0RjTDk5OStQSlV1VzRNa25uOFRldlhzUkZoYUd0TFEwRUVJUUdCaUl0bTNiSWprNUdVVkZSUjc5QURadjNvemh3NGY3dk5sOXJRZkExVTFxOE9EQjJMQmhBL2J0OHl5QW1wU1VoT0xpWXZ6d3d3OElDQWlRQU1KYkZBckZRd3NYTG5UdTNMbnovZjM3OXpld2k3cmY4NElnU0hGdWxGTGljRGdvSVFUeXB1TjZ2VjRDdHRUVVZMejc3cnVJakl5RXpXWkRjWEV4QUtCMTY5Wm8zcnc1RmkxYWhQSGp4K1BZc1dPd1dDeVlPM2V1TkE5ZHUzYUZ5V1RDL3YzN3NYanhZZ0JBMTY1ZDhmbm5uOFBoY09DSEgzNlF4cGVabVluLys3Ly93M3Z2dllkV3JWcGh6Wm8xVUN4ZHV2UVB1em1ycXFwd3p0MmpRTjdNMkdBd2VCU0k5RTZUa3NlcHJWKy9mZ25ETUF2K1NhRDJ4UmRmWU5Tb1VUaDQ4Q0JhdEdpQnVYUG5RcVZTSVRFeEVZbUppZGkzYngvaTQrTXhZY0lFUkVWRklURXhFYTFhdFVKU1VwS3JGcFZTaVJkZWVFSHlMQ29VQ25UdjNoMUJRVUhvMGFNSHpwdzVnL1QwZExScjF3NHFsUXFIRGgxQ1dsb2FoZzRkaW9TRUJNVEV4Q0FqSXdOV3F4VkhqaHhCdDI3ZGNPalFJVXlmUGgwS2hRSzMzWFliY25OemNmVG9VYlJwMHdZVEprd0F3ekJJVDA5SFVGQVFkdTdjQ1l2RmdzV0xGMHU5S3RldFc0Y21UWnBJSGpxNU1BeURYcjE2WWQrK2ZhaW9xRUJhV2hwQ1EwT2xpcktpK2pacjFpeUpxUVFHQm5yVTZZcUxpME9MRmkwYUhRTWhCQ05IamtSMmRqYU9IeitPaVJNbk5tZ3kwckpsUzhUR3h2cThKbEZSVVEwOGQ5dTNiNGZGWWtHM2J0MWdNQmpnZERxUm5wNk85UFIwaElXRllmdjI3WWlLaXNLenp6NHJsZlNKaUloQXQyN2RFQjBkamVqb2FHUm1aa3FlNk9lZWV3NlBQLzU0Z3lqK3h0YURuRHcwYjk0Y0F3WU04TmhQcTlXaVk4ZU8yTE5uRDNRNkhUcDE2b1NBZ0FBb0ZBcDA2OVpOK3Ird3NEQjA3Tmd4NDg0Nzc3Uy85TkpMcDJXTVQwUTRLcXFjY2lhblZDcUo2TlFLQ1FueHFLUkNLVVZrWkNTYU5XdUdFeWRPSUNrcENWbFpXVWhMUzROV3EwVldWaGFxcTZ0eDhPQkJ4TWJHNHQ1Nzc1WFU3ZDY5ZXlNdkx3OWxaV1Y0OXRsbkplOTF0MjdkVUZwYWlweWNIRXlhTkFteHNiSG8ycldyVk9ycThPSERxS3FxUW54OC9CK1hLNnJUNlpDZG5lM0Ixcnl6Q3J6RE91UnhhbUx3clR0T3pTOSs4Y3NORUxQWi9PK1FrSkQvQWJDNUs0TTRBTENRVlFZUmMwdVZTaVYxTTJJcTVwV0tTZk1SRVJGU1htbHljakpTVWxLUWxwWjJ3NUxtL3hCVjFHYXpTUjNhS3lvcVVGdGJLN1hIdTV6NnlmTTg1R2xTRE1NczlpODF2L2pseGtsd2NQQmNuVTVuallpSVdPZG1aaFR1V0RhdjlDdnFJblhFbGFORkNHVVlCZ3pEZ0JBQzhXK2xVZ21WU2dWM2NqMDZkdXo0dTJ2ay9TbkFSaW5GK2ZQblVWaFk2S0YreXF0MGlCNVFlWkZJdDZ1V0VSUGEzYm1mL293Q3Yvamx4a3BBZUhqNFkxVlZWWmE0dUxpdDFKVmM2bTF2Zzd1SGd1QjBPa1hQcUFoeUlJUklkalp4RXdGT285RWdQVDNkWnhPWG14clk1S0FtTmpJV0hRVVdpK1d5bFc4RlFTQTJtMjJZdTBxSFAvZlRMMzc1Y3lRbUppWm1aa0ZCZ2JGRml4WUh2SmdiQlVBRlFSQzlvNUFCR2hHTFY0cWJITlJFWUFzSUNKQ2FLdjhsZ0syd3NCQVhMMTVFV1ZtWlQwZUIzVzV2a0ZVZ0MrdGdUQ1pUTjNjOU5YL3BJYi80NVU4VVFraEtjbkx5UThlUEg5ZDM3dHc1eDgzY1JKV1VpbjBSUk5ZR21ZTkJWRVc5R1p0U3FZUmFyWVphclpiNm12NVJjdDI4b2xWVlZaSmRyYnk4M0tkZHJURVBxRmpPT3pRMDlDVkN5RUQvc3ZLTFgyNEtjR3NhRXhNVDJxbFRwOU5mZi8yMXpRMWVrcWNVUG1xMnVWVlM4Vy81NTVCL0xvYSt5SHRjWEZmR2RqMWFoNW5OWnB3NWMwWmlhMklPcUhlYlBJZkQ0ZUVCRmRYUHUrNjZTd0hnbWZyNmVuODViNy80NWVhUzRabVptVFVwS1NtdlhiaHdRWkF4TjFmNmdmc1A5eXZjV1FuRW5VSUgrZVowT3FYTlhUVUU3ZHExKzBQQVRmbDdhejVSU3BHWGw0Zmk0bUpVVkZRMHNLczFWdExiN1N3Z0FKaGx5NVl0Y0RxZE42VHhpdGhUMGJ2cXhKWEVZckVnTUZBTFFoai9VdmZMUDQyNTNiMTE2OWJxbEpTVXo5MDRKc2pCalJBUnh3VEs4enpoT0k2NmFSc1Z2YVJ5RmRYYlk5cStmZnZyN2t4UUJnVUYvcTRENU9YbG9iYTJCbnE5RG1hekNWYXJCWGE3cEhMS0tuUTRpUmlkTFBlQTF0YldUSFU3QzI2SThMd1RUaWVQYXoxdm5VNkh5TWlJYStvNWFUQVlFUklTN0RPUzNDOSsrU3RKVUZEZ25QejhDNVczM0pLeUZZQTNjNVArVHhBRWdlZDVPSjFPS0JRTTRUaU9LcFZLaWFIWjdUWllyUmFZelNibzlUclUxdGFnb3FMOHVyYnVBd0RsdGR5bzNsSldWb2F5c25KVVY5ZWd2bDRIZzhFSXM3bEJqd0kzdUVtZ1J0eFVsZFRXMXZRTkNBaDRCamV3THB6cmFTSGd0NXkzYUFDOVdqR1pUQWdMQzhYdm1XTy8rT1VtRVdWOGZQekR4NDhmcSt6Y3Vjc3hYOHpOL1VvRVFRRFA4NVRqbkdBWXppdmtRd21WU2cyMVdnT05KZ0JhYlNDQ2dvSVJHaHJhSUNmNGR3MjJzV3FYVjVMUzhqSWNQM3NCT25kR2djRndLYW5kYkxiQWJMV0J2UVJzSWxzanZDQVFLbENtcUtnd0lTZ29hRDZBbEJ0THF4a3B6dVphVlc1NWN1OGZ0YzhmSWZwamU2Qm9sb0dRcUJzVEZrZzVPNncxOVZCR1JFT2pWUU53b21Mckp0aHNnS3BwR3lSbHRQbGIzT20vWlY1dGhUbXdPS01SblJMWHlIL1lVYlhqTUNKdjdRZVZtK2c3aWs2ajdGZytBSUxZUWFNUkhNcGN4N0ZFSURvbDRXcDN1YVYxNjliM3IxeTVzbnphdEdubEFNUkFYZkdWaXA1U251ZmhEdHFWUWtBdWVVY3Q3dEFQdGJzVGxoYkJ3VUVJQ3d1N3BxWXdqdEpjR0l4YXhMWkxhbkJPeW10V2s2Z1ZpejdZZ1AxRjVTQjFaU2l2cVVmWHVGQW9MU1pZTEdhVWxKV2hzTjRNd3RrZ0NFQ0lFc1RwZE1MSmNjVEJPUW5nc3F1OWsydCsrcm40K0NIa1QxaVFsT0thMVVNeFArNWE5dnN0Ky93UlV2TFpjZ1JOL2d4aHZRUC84TitxMi9ZWkRyL3lKYlROV3NCUlZvQm04OTlGbS81SlVBVUV3bkp1Tjg0ZHFFS3p6SFovQzJEN0xmTnFPTEFHaGZwTXhLYU9iSXpuSS8rOXp4RFk5MVpvM0VTZlVXcWcxZ2JnNHRzdlFKMStHMExERzY2bnl1OC9Sc0R0YVFpTDhSeEx3ZnRMb2V6MUdKSTZSRGJZeDN6aVI1UVlPaU0yTmZGYU5KNEI0OGFOSzV3MmJkcGJNdFlteUZnYjRJcHpnMXNscFF6REVJV0NvUTZIQWtxbGF4TXpFZFRxUzIzK2dvT0QwYkZqeDZzbUFwYmptM0gyVkJMaTA1bzFPS2RyQnphbzBUK3REWG8yRFVGaG9ScTc5cFppN3prZHVrY29ZTmJYNFdLZEZZbmhnZUR0UUVWMUhURXJsVkFJVG5DdUNHVkNBTVpTbS8vUXlEZjJ6TXpKVEVYSEc1eGJJRGRpL2pZMWx2bkQ5d0VFVURCdzZxdkEwU0FFUm5oNmpTZ0VFREN3VjVWRDBJUWpNUHpTWXJaWGxZSlhoaUlvS3ZUU0Rxd2RvQVRPdW1vSW1qQUVoSHFtdERpTmRiQVpIUWlNaTRkQzlkdEJtQy9kai8yTFY2TEgybzFvMGl3VUVHeXcxbk5nR0EzaUI0OUFNRk9PL0FLTGova1E0S2lwQnNjcEVKUVFBOCtISFE5YmVRVUVWVEFDWThJOXZxTU9LOHhWdGRERXhFR3QxZHhrOCtyN25BalBnVG9GVUtzQk5nc1FIQmZoT1Q1bkRQcCsreG1JYkk2MHpkcWhlYk4ycVB4b0NZQ0dhNWM2bldqLzNDb1FaY1BQemFjT1FObHFPb2dRRGlpVjBqaW80RVQ4N2ZNUUwvdnMwakE0V01zcndFVEdJU0JRMDJDdDhFYkhmVlVWVllWeFRlTFdBK0I5cWFTQ0lBaUVFT3AwT3NFd0JBNGJKWVF3MUtYQktLRlV1dE9zVkdvRWFOUlFPT3pRS0xVSURRMTEyOXNFMkNyTFFRTWlQYTREQUhDNktuQWtCRVRnUUoyOE5CL3ljMUplcXplaW9xSWVhazZQa3FwSzFOWFZnemhaMk13bVdOUXExT29NSUFvQ2NDNjdtb0pRY0N3TEVFcW9xNlk2c1ZoTS9aVE91dmtjbzBTd2tvQ1FHdzFzbHdEdXR6QzJhOW52dCt3REFPZWZtWWlMdVNvd1NpV0V5b3NJdm4waCtzNGQ3ZnJTZUFycit6K0RwR0V4cUR5bEE4dzZkUGprSnpSTE11TFFmVk5SWjQyRXlsSUdrallSdDc0Nkd5b0dvRTRPaFcvTlI3RktBWHZCR2NUUFhvSHVkN2tLRWhiKzUxR2MzRlNDaU9ZUk1GNm9ROFozR3hFclBkd2RPUG5rVEtnR3pVSzdyQzVYWGhzL3JJZXErd1FrTkhlckU0cEFCTW55UndnVlFIbkJhejZxc1hQd2VMQXhMYUdDQVNaZEtQcXUraENSTVJwUVV6SDJUTGtIOXRDV1VBczYyQk1HSXV0VlYwaysvZTdQc1dmUkp3aHRtd0o3MlVVa1Ava0oyZzFzZnBQTWErUG5CSUdIOGVlVjJIN2dLekNXTXFEMW5SajR4aXdvQVZTdSt5OU9mYmtEK21OMUdIeG1MeUs5c1pyakFIaXVKL2JzejlqOS9FZXduUDRWcmQvZWk3YTNObkdwWk1jMllkL0xYOENTVXdKUzhEaktQOUVpK3JaSDBHVnlQd0JsT0hEM2s5QVZua2ZJN1l2Ui8rbExwZHJ0dVh1d2U5WWlNRTFhZ1MzTVE5eERMNkhiWFgxOXJaV0g5eHpJTHV6WEsrMllTeFdsQWtBRVVTMTF1MGtKejdKdzJ1MVVTUWpzT2gzNDZIZzNhMU9DNk10UTlRdUxXcFVkUWVwZ1hGVCtpSUIzWGtDZ3ZReDV6endITnJRWlVIOFJRVVBub3ZjVDQwQWc0T0pyczNGeVl5SENZalhnV0FkSW0yVDNmSGllMHpVQm05VnFsY0k2YW12cm9LK3Z4dkhDU3NRRmg3cmFjOW5zSUx3QW85RUdvOE5KRkZRQUZTaWhEQWhEd0l4YnNpTDhrVFU3bjZxdjB5ZE1HejhZS2VvL1F4SDliY0QyZS9hN1poRGxuWEJHOXNLb2o1NENNZVhoaDh6eHFKZ3lBZ254U2hldnFEa0ZSZVptakY3ZUVRQUxKNnRFMWVvM1VhWHFoOUhmTDRiQ2FjQ3VJWm5JMnpNTzdRY2tBcndUeXJRc0RINXVDcHpsZTdGK3dCSzBHcmNMRVlIVk9QZmhYbVRzT29XRU9BQk9GandqZjlnSU1KdzZBazE3M1ZXZGcrWENCUVFuOTJ6OGY2a0F3ZWtOYkJIb3MzNDcxQ0V1NnA3M3doU2MrV29YK2o0MkhPWURQNkErYkRER2ZlRXFoTW16ckxSdjRlY2ZvTm5UbjZIVEdOZlRuV2VGSzQ3eHhzMXI0K2NFZ1ljVnlSajc3WnRRQ3dic0hOUUQrWWZ1UUp1ZXNXZ3lmZzZhakIrTEg5cE1kQU9ZMS9pZEhFQTlnVTNUYmpDR2ZqVVlSKzdxQnRCTGF5Mnc2MmdNL1dvMGp0L2ZHNm83MzBMYTBHVFprUkxSNTh1dlVQTCtZN2hRVDJYSHMrTElZM09Rc09CcmRCemNHb0xwUERiM200SDZNWHNSRmRKZ3JUUmhxV0xhc21YL0xsaXc0Qm1CVWdpRVFJRE1ZMG9wQlFVRXlpaWcwQVpRRlp6RVhGdER0YUdCVUNqc0lDd0xjMTAxNG9lUFJHeUxKb2lMamtadFJRVjIvdWRWSkkxOEdjTm5EUUdjT3V3WU9BQ2w0MGFpcWZvUWpuNXlBVU1QYjBWNGtJRGo5dzlHbGZTZzlEeW5hM0xYRlJRVW9Lek1uUU5hWDR1REo4N0FvUXBDc3NJSnM5a09qbVVoY0FLYzFFbkFTNG50RUFRUVFhREVrZHpweWJuOTJ3MnRMem1QVjdjZndhalVFWWhUd1M4K0pMWlBMMWVublpCV2lHa0QxSjhxUjBLOGUzRnFVbkhMNkk2U2FVQ3BCblFuVHlLdTc1TlFBSUF5REUxNnQwZjE2ZFBBQUpmOUpLNm5xNHFwTXFFN29xSXVvajdmam9nT2tZanZHWWtqRDB4RDhwQitpQjg0RFBIdDVmYVdRUFQvNmRRZmZLWU1xamUrZzl6dmRzTm10b090TGtLSXU1eTBOcTBybUZNUFlOY2NCK0o2ZEVYeXlKRUlVcnZucDJjdkhQalhMRGpQamtCVWozNUlIdERsSnBwWFphUG5CQUJSbVpsUU13Q1lNTVIzYjRYNjdHeWc1MDJRY0dQS1JYVzJEWXE5MytEWVFaZHFUcDJsMEJXWUVkWFI1MW9aT0h2MjdMTUxGanp6c1ZzbDViM3NiZFNOMEpUbmVUQXFCZ0xsaWMzT1VxVkNBY0p5Y0FaR1FDQXNqRVlqTkJvTkFtc0tVSCtzQ0h6MGVoeXIvd1VVQU90MG9ENm5CQkdxTTJEU01oQWV4QUJnRU4rM0o2ck9OTGFxcnRaUVdsS0MwdEpTVkZkWG9hNnVGa2RPbkVLSlE0SFdvVXJZN2E1cUhWUVFJSEFjR01KQXpRQzhRQWxBQ2FXVW1mYjhmOFpOSGRybjZaN040ekd5YngrMDV3cXhyZERpUjdCRzZjVmx2dE1HNGZkRmtCRDNsVmVpODBmYjBIdnhkS2k1TXV3ZlB4UjV4MnArODFHRFdqYUhzYUQ0bXZheDdGK0pneCtmUkpkMy9vZVJXN2FnNi8xRDNkb01vRXpzZ2RIN2ZrTEtrRTR3N1ZxRkgyNS9ES3g3djZZUHZJd1JYNjVBZUh3QXppKzVCNGZlMzNIVHpPdmx6c25uWG96aUpsbDBBcUNLUlB6SUxDUm1aU0VwYXlSNmZMb1dUVzhKYkhTdEJBWUd6aW9wS2U0TFZ5VWVEYVZVRFZmNGxvSlNxcUFBUXlsMTl5cmx3UVBnT0JZczY0Q0Q0OEJCZ05WcWhjbGtoc0ZnUUYyZERqcU9BZHVxTFVpWExrakt5a0tYTi8rSGxGN1hGZ3B5VmNCbU1wazhlb0FlUDNVS1o0d1VIYUkwWU8wMjJPME9zS3dEQ2dDVXRST0hLMmFOVUVFZ0JHQ3Fxa3FUUWdQVlR4VFZHbHpUWnplZ3hFSVFIT0NQNzJwTXF2Y2VjQmtyVEhtb09RZEVkcnk4U3o0aXZRT3E5dTRGRHdCT0F5cjI1eUJTVm1HMjZ1QmVsL0czL0ZmVTZWb2hxa1VBQUJhc1JVQlVSaiswbS9jc1V2ckZ3cGd2NytMTkl1Zi81dUQ4OXF0amJRbWp4NEhkdHhwbEJRYjNmV0tGcGRwd3llMFVHUW0yckFST3VYbWpyQXdCcmRJUkhoTUVDQmFVL2JUM2txSGFaQUxDNHBBNGFnSzZ2N1lVeXBKenNMcDNaazBtQk4zU0NTbjNQb3hPRDk0Ry9ibThtMlplTDNkT0FGQzNieDlZd1hXOHlsL3pFTmtoN2VyY2RwSGhzRnloc1ltM0tEVWFzSFgxVi9mUElXMFEyOW9HcXlrY3NkMjZJclpiVjRTM2FBWlZFSFBadGRLMGFkTjd2L2xtVFJNUjNBQkk0QWFBb1FMUHVPeHRUc0lUUUhCeWhHVTVPRGduV040Sm04MFZ0T3NDTnc2MGFTREtDcXRnaXdpSHRuVXFvbHEzaERva0VFR2RPb0JtSDRiZUlnQndvbkx2d2NiUCsyck8xNVhZN2k0WVdWT0tBM21Wc0xGMjdDbTNRV0R0Z0FBa0JDbmhwQ0FxeHRXOUJ0UlZoNDRCbUtpb3VIbVBqdXpkN1lGdk4rTG9rUmpvYTJ1UjBMRW5SaVJwL0FqV2lDaHFEK0xIY1hlQXI3NkkwQWRlY051QkdwZjRPeDlIM0E5MzRvY1JKNkN5bFlHa1BZUlcvUytwbGR6SkxkZzZjU3ZzQldmUWZNbGJjRG1hcXJGcjJGandDYWxRb3g1Rzh5MFlPRlFlaXNHaGN0TTNVTWNPUit2QkhhOThFeVgzUjc5L1Q4SCsyL3Nqb0VVTE9FcUxrZkxTYW5RWTZuSW1hTHFNUkt1V1gyRjl0OTdRZEJtQjBSOHNRdFNnU1ZDL2RSZTJURHdLeGxhUGdPaExEZ0R6d2YvaDU4VmZJcUpOQzlnS3ppQjY1Z0tFdWFmaDdJSTdVSFJSaTVBWU5YUzUxZWo2d2VNM3pid0tsemtuQU5BcXl2SFQ3ZVBBV01yQWRIb010MlJFQWREaDREMzNRRmZ2Z05GUWdRUGpSa09wYllFK2E5K0UyTUs2OWR6NTJQbllPT1F2RFViN2w3OUVxNTRKeUZ2eEtQTDJGTUdhV3cxU2NpOEtYOU1pYmZuL2tOemV0VmZ5UFE5ajF4T1BvT3lURU1UZCtUUXlwZzlHN2RaM2NQanRMV0FyTDhMQi9Zck4rMWVpeVgwTDBYbDhUM1I3ODNYc2ZuQXFTdDVMZ1pLcmhkbVNnQ0UvZll6Z3k2d1ZRa2puVWFORzNRSGd2ektWbEhmVFZJRlNTZ1dua3dvQVZTclZjRHFkNERpT0VKNm5uRUJodDl2ZHdidXV5aDlSUFFlZ2F2dEtiRHorRTNJaUF4QmxEVVBmRGQ4akpyNHZ1ajdRRWo4UEc0N1FXQzE0cW5FMURBUWFuQk9oR21uUWdRQUFJQUJKUkVGVVZMaWlDaW9tdUplV2l1V0k2cURYRzN4MW1YSW51SE9FNXdWQ0tWWFk3YmFKS3BYcWZ5N3JMNGR5Z3dVYWJSQ2l0SCtPY2EyNnVob3N5eUV4OGRxb2JYWjJEbEpUVzBtMTYvK29mUURnN0ZPalllbTZGQjJISllJVGdoRVVGWFRWKzdyQ0VrSVFGTlV3ME5GUlV3a2hJQlRha0VBUDljTldXUWtuVkFpT2o4SDFjT2RRMWdwemVUVlVNZkVJQ0xxS2VCNkJoYW00RXVyWUJHZ0NsVjVmV1dHcHJJVXFJaFlCSVo3SFlnMDFjQmdjQ0V4SWhFSjVrODNyWmM0SkFIaExIV3hteGl2YzQyWVJBZGJ5VWxCTkJJS2lRcTU2clpTVmxjMU5URXphQmNBQ1YybHhPNldVSllSdzdyTGl2SGRKY2ExV2k4REFRQVFGQlNFa0pBVGg0V0dJakl4Q2JHd3M0a0lEMGF4WkszVHVuWW5rcEV0QnVHeGRGWnhNTUFJamduNGJZN05ZTENndExVVlZsYnkybWdrV2k5V2REM29wYmNycGxISkJpU0M0Z25CTFMwdmlWU3JWM0V1UFN4VVNJc1BobDZzVGRVUWMxTmU0VDBCYzQ4R1dtcGg0bjlZSWJYekNkUjAzVVFjaTVGcHFiVEZxaERSUGJ1U3JRSVFrKy81T0hSWURkZGhOT3ErWE9TY0FVQVJGSVRqb1psMTVEQUlUa3E5NXJTUWtKRXo3OU5OUGN1Njc3MzRlQUE5UWliWGhVb0ZLTVplVUtoUUt3cklzZFdVa0tLQlNLV0d4cUtUT1lvR0JXaGhZTzhwS1N4RVZHWW1nSU5lRXFhT3VmUDB1YTJPNzFJVEYxVEpQQkRWWGFXOEhIQTRXSE9lUk1pVjZRZ21sbE1URnhUME9vS3Nmb3E1TkVtZjhIMUp1VGZGUGhIOWUvMUpDQ09sMHh4MTNUSERiMlRTVVF1NUlZRVJja0dVbGdPTTR3bkVzSEE0V2Ryc0ROcHNORm92Vm5TU3ZSMTFkTFNvcks2WFdmVmR0VzJ6c2k4cktTcS95M2lhWXpSYlliRllQcHNheW5GUmpTUkI0S2NIZGFyVU1aUmhtcnY5eVg3dUV0TzdtbndUL3ZQNGxKVEF3OE1IYzNQTkhVMU5iSHdiZ2RERzNTN1kyU0lueVVyb1ZXSmFEUXNGS1NmSTJtd3BtczlxZEpLOURVRkFRUWtOREVSRVJnZmo0K0t2a25ENkU0emd2RmRSVlc4MW1zOEptczd1OW9LeFUybHV1Z2xKS3liMzNUbE5vTkpySC9aZlpMMzc1NTBuTGxpMm5wS1NreUQya0tqZUpZdUFPL3hBRU1RVEVDYWZUU1RpT0E4dUtyTTBPbTgwS3M5a01nOEdJK3ZwNlZGVlZvN1MwRkZkYlA5SW5zTGxDTzZyY0txaEJxck5tczhtWkd1dlJBZHBkSlpOUVNwa1BQdmhnTm9CQi9rdDg3VkpkWFkzUzBqTC9SUGpsTHlzS2hhTC80Y08vakJhQmpWS3FFc0dOVXFxZ2xETHU2dGx5bFZUQ0ZZZkRCVzZYNnJZWjNDcHBGVXBLU240YnNCa01CbmZQZ2hyb2RIcVlUSzYyZVdMTFBIbU5OYWVUSS9JdVV3QklmWDFkcWtLaGVNeC9lZjNpbDMrdVJFUkVUTnV5WlhPU0Y3aEpzVzBBaUNBSU10YkdTYXpOVlpEUzdyYTNXV0F5R2FIVDZWRmJXNFB5OG5JWURJWnJCelo1aHlsWGVXOExyRlpQVURPYXpLZzFtS0EzV1dGak9ibkRnQkU0NjZ4WE51eE1YTEJ1TC9hV21TNGQyR25ITjdzUDRjbXZ0dUhmMjArZ3lrSDlWLzk2aTlPQzJ0UG5YY0drdjFNcVZyK0FnKzl2dSs1RDVDdC94WTdaeXozR2FEaTJIY2VXek1lKzJYTng1cnU5RUg3WEx3alFuOWlQOHgrK2d4TnZyb1RENjd1cXJTdHhjUFpqT1BMS2g3QmFaYi9rck1PKysyZkM1RStHdVY3UzlOWmJiNzNkRFd3ZVFic2lhL04wSkhneU54SGNyRlliekdZTGpFYVhTbHBkWFkyeXF3aFM5Z0MycXFvcVZGWld1aExjM1hGcUxoWFVKck9yMldHdzJNRVFWeUVQd2NrUnB5dG1qVmdORlFObmY3VDVZUzRxRVNOYi9qOTc1eDBmUlozLy8rZk1sdXhtMDNzMmdTUWtoQllnR0NEU0lRS0NvS0FDSXZZR25PVzhzNWV2RFU4NXozTHF6M1lxbGtOUkViRmdwQmNGUktRSENNMlFoUFJlTjl0bmZuL3NKdGtVVWhDVTAzazl6QU96bTVuNXpPZnptZmU4Nit0dDRLSDN2dUZBdldzTGY1VCtIVXR6Yk13ZE1Zamcyanh1WHZIenI5ekFDdHJBZEpRdDF6N2FWSGIwcTJSa1hSbVd5dHF6UHNUakx6MUw4TVV6OFN3aXl2bGlKWDdESnhFM1l4VFpqOTlNNW9iY1gzR0ZLakpmZUlYcXpEMWt2dnB4aTdtbzN2dzJQL3pqYTZMblhvZTJhQ09iN251MXVjSktIVXpNRUMwSDN0K2c3S096QkoxT2QwTm01dUhCSGxyYjZhS2tMYlMybHY2Mnhxb0VsMGxhWGw1QmNYRXhKU1VsWFJkc2hZV3VaaXpWMVZVdFRGQ3IxWUxOMWlqWUpQeTl0WUpXRkJBRkJORlZ4aThBWXVISjdOdVArTVZ5LzZqZWpFbStnTGtKQWl2MkZ3QldOaHd1NGRaSkl4a2FFOEg4UzBkZ1AzYVVnMlpsOGM4V2lyNWV3djZYbHVLb084bmh4WXZadi9oNXFpcWtSaWxGMXB2UHMvMk9POW43OGhJYVRGMTdwY2gxaFJ4YS9BamI3MzJFZ294OFQ2bEg5anN2c2YyT085bjkwcEtXbWsrSGd2Y0l4OWFhaUp2Y3A4WEhnNTk1ZzRSTEp4STFjUmFSS1NHWUNvdC94VXdFTS9LajVhVGVmdzJ0S3pDelAxeEs3TUtINlRGcUdJTVdQWUw5dS85UzVtSFZSTTIrbk9ML3ZvZEZlZU9lTmZUdTNmdEtXZ1lSTkI3bWFLUFcxbFJMNmhsSXNObXNXSzB0VGRMcTZpckt5c29vTEN6cW1tREx5M01WdUxlT2dycE1VRmRhaDBlVDQrYUFnU3VDSzFvczVybkh5NnVuSjBTRTRHeW81MVNkbGNTSUVJNlhWZ0ZPSEpLTVN1VytuS2hDSmRkenN0S3VyUHhaZ2svL1lZU05HWUtvQ1NJNExZMnd0TEhvOWE3NVB2SDBBbzd1cVNIK3RsdlI1RzlrdzkwdmRrbGJMbHJ4R2VvaDA0aWRFTWRQMTh5anZNSUJPTWk0ZXc2L1pEcEpXREFmSC9NZU52NzEzMTA2WDkzUFAyQlBISTdmYWJJcmk1Y3RJanUzRi8wdUgzWU9ac2hDOWRFOC9Qc25Vbi95R0RhdlJBSWl5cW5KYW5hWGlCRXBCSWw3S2M2eUtSdnFMRUd0VmwrY241ODNtcWJjdG1aZlcyTkRKemVkZUl0QWdrdTQyZDM1YlcyanBLV2xKZVRsNVhjczJHdzJHOFhGcmxyUTZ1cHF0d25hNEJFRlBVMTZoOU1weUxJczN2SFFZeXFOUnZNWHM4Mkd0MWJGcDJ2V2NzMktuOUZyMU5UYUhZQTNJK0tEV1BGakJtWDFEYXpkdW85Y1djQnNkU2dyZjViZzIzc1F4bUZKaUxvQUlsSlRNYWFtb3ZNR0tDTjc1UzZTSG4yY2lPUmtCaTU2Rk9lNjVWVFVkMzVPLzZsWDAzZktLS0ttMzBiOE1DYzVHektRUzNkeWJLT1RvWXZ1SWlneGtmaTc3MFhjc1lLcWhzN1BWM3Z5Sklib21IYS9hOWkvZ20ydjdTTnQrUkw4Zk04Rmxib0pteGxVbW1LMlRCeExabm91YWowNDZqek5CaDk4WW5UVVpSVXJHK29zSWpJeWNuWktTb3JPcmJXMUNTUTBtcVh0cFgrNHRMYkdLR21EMnlTdHByeThuT0xpSW15MjlsOUNhcGNKV3RpaUg2aXIvck94WktwWlcydE14SFU2bmE0MmRwSWtDSUlndlBMMFkvT0JWTDFXUzRQSnlkWFRMK0VTcDVxOU96ZmpwM0hWaE40Mll3cld0VHU1ZldrV0EvdjBaWHpRQ2J3VmRvOXpEMGMxRGRYK2VJZTUxU1R2VVBTKzFWZ3FnVTc2MUJvOGtpSDF4a2pLSzh0eGxOWml0UlN5NjlZYm05UjlyNlFrc0FLZFVQL0xPT0EwTk9rVk83WVJjUEZzQWtQUEZWZThBYTBlblBZSUp2NjBEMDFJRUQ4c0JyV3Z2dTJmU2s1bDM1eEZpS0k0Yk0yYTFaTkRROE8rQmV6dUh3ZHVXbkZjeWJ1Q3V5OXBrNXp4MU5xMFdsY2dRYWR6QlJLcXFocE4wa0ppMnluZlU1dk41aVk2SWxjdHFHZVQ0NWI1YWc2SFEzQUxOY0h1Y0FtMWpBUDcvVlFxMVh5QVBxR0IvSEswSE5Gck1LSEE4ZUp5RW51NE9oSnB2UU80NS9LTDNTNmFRaVpzOCtYK1VJVmw4dXp1SUFGQmNyYWtIRk1INEIxUVEwT3BEZUswWUNyRFhCZUFMcWdMT282SHI4dGNXSVIrc0JGMW1BRXZRenlqUHY0VVF6ZmZTMzZSY1pnM3RKK0hGRFR4V3BKc29lMGJrU1g1NEIySXp2ZlhGRmZxQ09qZmc1ck00K2d1R0FhbURLcEx3eGdRNzl2Q1hHMG9NQkVTRjludUdKeGFmd3lCdnNvK094UFBaM0R3N0VjZWVmajdaNTlkYkFQc3NpdzczQXdnVHJmVzFxSjFuOXN5bEp1anBEWjNsTFRSSksyaG9zSVZTQWdQRDBldmIvbUNFcHZvaUtvYTIrYzFlRFE4dGpiV2d1SndOUHJXSE5oc0RnQUJXUmIyMURodVhiYi9WSCtBMkw1OTZWZWJ3L1BiVDdCbC8xNCt6WktabGV3cUhpNDZsY3RIZTA2dzZlQXgvcjUwRTRNdUhFcWNJdGZPc2xJU2c2LzZCSm52ZlVIZXVnMDBtQUJDaWIxaUdJZWUrUWZGR2ZzNStNUmlWSlBuRU96VCtlbHExbjdNMFRYYktmajJIYkwyYU9nNXNUOUNXQ3A5eHRyNDhmN25LZDZmUWRIbU5leCs0WjB1cFpqNGpSaUprTGtIVXpzZWlNcE5Lem0rZW5lN3grMjVkZ3piWDE3VjVXa28rdllqam55K0FhZTluS3dQUGlSNyt5RUFlbDEzUFRsdlBFUHU5enM1OFBpemFLWmNTNmhIRWIxY2NZQnkweUFpK3JUVkdnL2NNWVh2bjEydTdMRXpoQ0FJZmUrNzc3NUp0SzFHOEV6OWFKRzA2M0EwK3ZXYlRWS0x4VlZMV2xkWDU4NXRLMjgza0tDYU8vY3FqOXkxS21wcmE5cHBlbXpGWm5PRllwME9SeE43eHlQdmZSYWs5dlo1M1NwcWc0WkhCNEhLaTdSK1VSdzRsa1ZHcFpNN0x4M0hNSGVmUTZmTndwYk1iUGFYMURJd2FUQVBqSW5uOStBTk5abE1PSjBTZm41KzNUcXV0TFNNNE9EZ2J2VUlQWk5qem5SOHJ0M2pqWEhTaFppT0hxUWh2d2pEd0F2UmV3c0VqNW1NcXV3d2VhdTNJTWFPWlBpamYwSGJoWDRUd2VNbVl6dXdscExNV2dZKy9VL0NZL3dBa2ZBcE0xQ1ZIaVF2ZlFPMWhiVUVqeHhMVUZ4azU1Ukgra2pzR1V1cDhSNURXSytXTEMrU3RRRjFXQ3hCY2ExcUFhVmlEdi96Yll4M1BFWlliTmVZWWFwKzJrUkRyWmF3NFFNUkdreUlmajBKN20xRUYzY0JJVkYyVHFXdlJZZ2V6ZkJIRnFEVk5JKzY2SlBYYU9nMW5jUXg3ZmM5OVJzd2pPRDRTRVZLbmFuT3JOTVpOUnJOK2syYk5sdHgxNDgyVW9rTGd0RFlXZDZ6azV3Z2lnS2lxSEwvaU80T1Z5cDNseXMxV3EwV25jNkxvS0NnRnZSZ3dqZmZmTzNSeTZCUnVOVzZtVHdhazNQTldDeU5YR3NPd2VsMGlySXNpemFiOVY2VlN2WHMvOUxrbnU5OGJHYzZ2djhWMkxJMnNQSHBINW44d2VOZGVySFpNcjVnMVNNL00rUGI1emluSGxsSEJWdXUrQXVEUHZ5VW9FQlJrVUxuQ05YVjFmOEtEQXhhaVl1enpTUUlRZ011RDYxTkVBU0hJQWlTU3FXU0dqbmJkRG92V2FmVDQrMnR4MkF3NE9Qamk1K2ZIMEZCZ1lTR2hoRVZaU1F1TG83Ky9mc1RIeC9mYklwNkJnemNaSkdOR2hwMnU4T3RFam9GZDNwSFUrblVuajI3ZlZVcTFjM0tVaW5vRHJUeEU1bmFSYUVHb0UyYXdlVmZMZWFjaDVuVXdZei9acmtpMU00eC9QMzlyN3ovL3Z0OEc4MVJkNFJVUmF0U0szZHVHdzZISzFKcXR6dXcyZXdlVVZKWGJsdGpJS0cwdEpTR2h1YlF2T2dxY3E5dlpYcTJ6RmxyajJ0dDRNQ0JOd0lLdVpXQ2N3dFJqYWhXaE0wZnlOY1cvK0NERDA1d0M3WjJmVzJ0T2R2YTVyWlpXd1FTWEVYeXJrQkMwN1pwV2VUZW1LL1dOaExxWnU0UUFPRzY2NjVWcVZTcUc1UmxVcUJBUVhjUkZCUTBvMWV2WHRwMnREYXhVV3Z6cUVob3lwMXREaVI0a2xJMkZzbTcwajhzRm90THNMbTBOVmVSZXp0Q3paT1NxRWxiZS9mZGQ2OERCaXBMZFBiaEl0VlRVZ29VL0tHMXRnSGJ0bTBkMHhXdHJYM05yVkc0TlJiSnQwei9BQkJicG5mWVd2alduRTZuTzIrdG1Sa1hFTlZxOVhYSzhweEx3ZWFuVElTQ1B6VEN3OE9udVFWYW85YW1waFVaWldNMVFxTU1hdWxyczUwMi9jUGhjS0J1ckFkdDFOWWE4OVdhS3d5YWZHdTRLYituQXFPcmEydXBzWXRFQmZyUXJndkVLWU9xZFFLQWs2S3FPZ3pldnZoNXFaVFZQUTJLMTN4S1ZiRVZNYVFYZmFhUDZkSXh0dndqbEJTSzlCamVwOHZYc1JjZklXdk56OGhBK01RckNJbytWNXFpaE9Sb1cwMHFxTlZucFN0V2l5dFY1Wkt6dDR4ZUYzV0RCcnd1bjJOZmJFUUNBbE12SnFKZjEraW5LN2F2UnRWN0hBRmgzbDIrVk1YV2RFcXp5aEYwNGNUUG5jTFpTdVdVR2lvbzNMSU5xMG5FZU9tbDZIVy8zWDQxbmRoTnJUV1V5S1NZTGg4aml1S0k0OGVQSmJzcHhCdUw0KzF1cmMzcE5rZWJORGFuMDRuRFpzRlVYNDlUcTRYUVNMeTh2RnJWa1RacWJTV0lybnJRNWdvREQyMnRUY0FBRUxScTI5VjMvZnNEcHIzMUxYLy82RXRHdjdTQ0hhV045WFpXbnZ2b0MwWSs5UjhTRmkzSHMwVFZZYXBnL2lzZnNlQ3p6Vno2NGxJK1BGS21TTERUUU9WbFFGTnpoRDJ2Zk43bFl4cjJmY3UrRDlaMnp5UVF0V2dNQm9vL2VaSEN6S3B6ZGorbjNubVlsU2xEV1ptU3pDZkdhRDRmTXBTVktVUForTVJIditxOCtSOHQ1c2lHSXkxZm5RVzcrUG1GLzNidlJLSWFqY0ZBNWRvUHlmN3hlSmNQeTM3ak1Zb09WWGZ2VWw1NnRHSTUrNTk2bmJOWGF1OWc5MDJYOE11bVE1aEx5NUhPSVR2SndZZHVvcml3NVFVcU55MGo4OHRkM1Q1WGJHenNSRTl6dEZXRVZHZ2RTSEE2blRobEdXdDFPZldWZFUwVkNXYXpwVWxyYzlXUmxpRTJVaEo1Q2pWM2hZRm4wQUJabG9YcTZxcUJna283ZThHc21XeC9ZQjRyNzc2T0IvcDdzV2pEd2NaSGtza2pMMlRWZ290by9lNWY5ZjJQMVBVY3pEY0xMMmZsTlVONSthdnRWQ2owTU8waWRNS2w5SnFjZW5ydHJLS0UybE9GT051WlAyZERIWFg1cGJTaDhaUnNtRTdsWURGWm1qNVNoOFVUUDNzV2dWRytwMzFnR3ZKUFVWOVN4YStoQmUxNTIzUE1PckNmV1FkVzRlY2R5S2kxKzVsMVlEOFRuN3EyZVhpU1M3TXo1ZWRncWJOMHJxRTRISmlPSGFEbVZEbVN3MEdiOXJpU2picWNmT3kyTG13eVF3UzlaczhpTlBFMHJlVWNOa3o1cHpCVnRNL2NhaTB0eEZ6VDBNNWExRkNiazk5aW5RS0hweEUvNHlKT0YraVZMQ1pxYzNLd05saTZPTHNTa2lPZnNuMGlTWXNlcFA5ZmJzRGdvVUE2VFJYVW5jcHZkNi9JQUE0TGRUazVYWm9ueWVHZ2V1Y1dURFUyMTV5M3UvZUsyeks5dUs5aGJXaFpjcUxSYUM3YnVIRkREdytOcmNrY2JmSzF1VnNPdUlRYWd1anREUm9WRG1kakxha0h0VkZkRGFVNTJSUms1NkgyVE85b0xwdHk0blJLU0ZLenhnYUlCb1BoS2hCSjh1amczalBJSDB0SkkvMlFtaUc5b3FBbXA4MFU3c2dxWk1KRll3RUlqdWxGUDhkV2RwWTV1U1JjTVVtN1k5THR2R29NWmVaSXZIMGxxck1iU0gzL0U2TDZ1SnJ1Mmc2dlpzMnN6V2lvd3F3Znh1UlBua2V2QmZPeExXeWUveUFxWXlMVzdPTkUzUDR2aGw4L3JzTXJ5WFc1YkprOUQ0dHZMN1J5Slphb1NVeDdwYmsvaiszWUpyWXVXazd5RzI4UjdQOHI3K3JJbDN5eTRITVNldFZSVmlSaHIzSXdldjFhTEovZXcvSFNrVnowMkN6QXdwYVIvWWo5T0pzWXpRN1cvZTFGTENjT1lqYzhSZlYzQVJoR3ptSE1QWFBjNW1nV1c2NmJpNjJ1bnVwU1B5YXZYMEhBR1ZyWjloUHJXSFhOMC9qMjdvVlVmaElwYmpvWHZmRWdXcmRneW43MVhuTFZLaXpabVVUZS9SS3AxNDhISkU2OTh3aTdsL3lFZjN3UXRmbDJSbjY0alBEWWpnZFJ2Zmw5TmovNEx2NzlFN0FVWkJIejRGSUdUSXpyOEppODkvN0I0VzkyVWx0VHhFL3o1cUpXQnpEcy9YY0o5b1dDOXg3aHB6ZTJFUkFYU0hXdWpaR2ZmVXBrbkd1eENwZmN6NEdkRW1MMkxwd2FiNnoreWN6ODVKK25kUTJVci9zUHU5OWVRMTIybVlwN3J1YUVRVVhQK1UvUmYvSUFBTXo3dm1iOXRjdVJLbjVCNm5NTlU5KytGeFZRdldNNVA5ejlQUG8rZlRFZCs0WEVmN3piZEF6QThPR3BZNEZUYnEzTkJySU5CQld5N0pSbFdaUkFscHhPV1JCRTFHcVg1aVpMTW9Ma2JKSCswVkJ5Z3IwcnZpUXkya2lKMUlDNnRXK3QwVkhuMHRhYVRkQnZ2LzFXSjRyaVZTMVgzY1I3TzdPWU0rbXlUcmFIbGJJNkJ5UDhSRjc0YkEzSm8wY1I3Z05sdFdZSTkxSGtWZGNOR1lhOHV3YXRyK3NCS2ZyZ0VmYS9zNUtvRjI1eHpYSzFscWxydjhTZ3M3SDdxbEZrZnIyZmxObUo3UDdyMzRoKzdETUdUZXlEVkhlTTc4YmVTc1hsV3dudTREbXIzNTVPVmZBVXJ2ajRNZGZidUJVOWpMT3VsSXI5aDdDZEpYdEtQckdId0JjMmt6cmNDQTRMVHFEd2RDWjA5QWltckZqQjhTZm1VaFgzZDFKdmJLbmRTcVVtQnE3OW1tQi9rZDFYRFNmMyt5d0Nwc2VmbVZzZ2FnU1gvcmdWalJyQXdyWXBROG5kUFovZXcxMHZFKzNnUzVuNDFEd2NoVnY1YXNKakpNN2FnaUY3TlR2L2M0eUxOMi9DejFlay9JdG4rT241OTVuK2VzZXRRTEtYdmt2Y294K1FQS00zSU9Ic2doYlY0K2JINlhIektWWWxYTTNJRlNzSWFzeGtyc3ZnNTMrdVovUzJyWVNINmNoLy9XNTJQZmMrbDczVi9IS3Eybm1VU3phdEl5QlloOU5pNmREZkdUSjVBVk1tTDJEcmhEaWlYdjJjWHIxYnBreWJIVVl1LytZNTFKWWMwZ2ZOcEt6aVhpSjhDOWw1K3o5SVdycVJYa21oMlBPMzhQWE1wNGlidUJ3M1ZTQStQb1pwOCtiTlc3RnMyVEtyeXh4Rkl5RGJaUkFGd2ZXZjRDS3p4ZWwweWs2blU1QWxXUmFjVG5jdHFic0JqQ0dBNk5temlJd01wMmZQQ05TTlVWQ1hHZXIwU1BGbzZWK2JPSEhpYktDNXo3eGs1L1V2VnVOSVNHVkIvK0N1ZW5VdzZEUm9SRUdSVVdlSW11MHJ5Znc0SFZORkhZN3FFcVMremU4YVE4cG9ERG9BTFNHamgzSDh3Q0dZQXFXSHpLaTJmczdlSFNBaklUdnlxY3F1SjNqUTZWOHErcVFVeEl6YjJISzNsZkRVRkhwT200YkJvekpNUDNRdWN3N1BQWHMzRm5NaHZZYTdUVUcxN2xmVkVhdmlrd2oyZHoxNGh1aEk2cXFyei9oY2dtamh4UE9MeWQ5NUFMdFZ3cHhUUzBCbERlQVNiT0VqUnJtR2JCeEdjUEJKS3JNc21IZHZBMi9JZXZsWlZ3djB5aFBVSFBUQzZYWWVuUTVoSTBieTR6TjM0RGh5Q2NHcFkrazU0WUl6SHJmbFdBYm1xR0dFaGJtaUNCRmp4MUM3TkwzRkdBSW16aVRBWGN1dDB2MjZhRU5neWhCWGRZZ3VBa05JRFpaYWNKYnZvcnpHaTZBdi8wUFZsNEJrUnF6TXBLWUs5TTBpSS9yNTUvK1Z1bXpac3MyTjVxanNNa2NkSUR0bEdjbmxiNU5rU1hLMjB0ZzhvcVJhTThVL2JhR2lwcDRDalJmcVJoUFU2V3lkNHRHY2tBdUlhclZxbHNmN21rOVhyV2FyR01mN1UvdlRlVjY0RjZHK2FzcHFuZnhseGtWQUEvK3BoMUEvdlNLcE9yWThXN29xVHE1ank2UExHZmZGZndtTERhYnE2eGZaOHJXdEl3WFBkUkpORUJIVHB1TGpYcWdlVTZmakcrL2Q0YlhVMGFsY3VtMDlSVnUzVXZqTlV0TGZXY3ZNelcraFBVZTNLdW9OcDlsSFV0Ty9jaGQ1U1FWUEIxWTNpaGJhZTkxbXYvb1ErYVVwakYyMkNKMjNtdDNYRFVPVzVOT2Z3WDA5cjVqQlJFMmQ2djU4S2oxdkRtZ3hsUGF1RlhYYjgxeVN0cCtpclQ5eDdMSHJLYnp1VlVZdFNEdG4yMHZyYy9hZVAwRThUZEdiZnpSUlU2YzJsY1QxbURhN2pWc2dMQ3dzRGRqV3l0Zm1tYkFydTFJL1hKUkdzb3dnT0oyeVMyYTUzR2hWbVlkQk5qSmdTaHJSUFl5SXpjbTR6dmJTTzVCbFdhaXFxa3dTQk9IaVJuOVordnIxZkZZWHdqdFhwalNwbEoxdG1aR0pSallmeXdhZ0xQY2t4OVNScElZcS9yWFR6bGh3Q09yeVhFd2Vjc3RlVklRYzJaZmcyR0RBUWQ2NmxvMUhUSHUyVVc4QnNGRytiUmVoQXdlQmIxL0MrcGhwcUFzZ2JHZ0tZVU5UQ0lpTFFXTm9Yamh0U0FoMUJTMGJxRGpxNnNBL25PanBzeGoyMHBPbzg0N2k2ZnUxWlcxbCsxMFBVMWwzN3ViQUt5Q0FCamY5czdQNEFKVkZMY21SMUhvRGxzcnlzL2VnaHdSaE90V1NicnFob0lDQUljUFFlYXR4Vmh5aWFHZExQcm1TSFZ0ZDgxVzRpNHFxM2dUSDZRZ1pQaHByMWlIMC9ZWTB6Ym1mTWFoWm1CbUMwRHFLTVZXMWxOUzJ1am9NOGNrazNMaVE1UG1YVVgzMHhCbmZpNjdQSUhRRnV5Z3RkUVVoaW4vWWlsL3k0Ri9OcUtQMjFXTXI3MW9FWFJVM2pCQnlzUnBpbStjaExncE5xN2VqV3ExTzI3QmhmWTkyQkp1cTBXSnNsRWVTSkNFTDRMRFpXblMyc3BnYUVQejljVGl0MUpkbm8yNFVhbTJyREpxQ0JvS1BqOC9semNaMENZczNaVkdyOHlMdFdWZW9YUnZhaSswTEp3RHc1TnNma0Y1c284N21ZTWFpSlNRTkhzYUhNd1l4ZmN3b3ZudG5GWmU5ZVpLYXFscitldmswZ3BVU3dOTUx0ckFSREo0Wnd1b0xSNkEycG5EeHQ2K2hIellWSTIremV1WmN0R0lkdXFDUWxvSWdTT0tIV1planBncUw3MFFtenhnRXdOQlhYK2I3K2RlUzkxWUNhbnM1OVNZams5WXZhU0xRN1hYTFBXeTYrVDYrZkY5SDNOOWZKUG5Lb2RUditJaU4vL2NKZ1gzak1HZG5Fbkw3US9oN3ZKU2Q1U2ZKL3V3clloNWJUTkE1U244TG1YZ0Zxbi9PSVgzbVQ2ajlJdEdGdE5SempKZGZ6OUZiSCtLYjFhL2dOLzU2eGo5NjdhKzZYdlRjQlp5WU41K1ZJOThrNHBxSEdIbkhOR0t1dVpYMUN4WlF0M0VnbGhyUUo3UmtYYkVmV00yYTJXdXdaR2NTKzlqL0k4QWJHRENWMUp1MnMzN0NPUHo3eFdJK2xZM2ZwUTh5OXA1TDNVOXlUd2JmZHhGYjAwYWc4b3RoVFBvS2duM2d5RU56eUQycHh6ZFVTOVh4VWxMZS90dVozNHp2SUZJZnVwanQweWZqSHg5TWRiYU5rWjhzK3RWcmtuRFRRcmJmUFpOZi9BM0UzUDBTQTZjbmRmQ21NSkw2MmtOc3ZXa0tKK0w3SWxlVllnbEtaZnBIaTlvSTJHSERocVVDdVo3Q1RaWmx1K0NLa0VxeUlMak5VUW1WbHc3SlZFOVZ0Z2xiWURqYVdDOTA0VVpxTTM4aXEvd2tKWUlPWWZEZ3dlNytCbVlzRm90Z3RWcXgyKzJDdytFUTNDRlhsZFBwMkFQMFB4dTJWVWxWUFhxREFUL3Q3Nk90bmUrMFJaM0RnU2svSDFWZ0JEcERXNytJczZHT2hsb0xQaEdocmN3ZGlZYkNmR1N2UUF6QlhaTkVrcTBCVTNFNW1zQXdkTDY2MzJXOVpKdUordEk2dktNaitMMzBlMmRESFEybE5YajNqRWJWenN2WVdsYU1wUE5ENzl2U3ZKY3NKa3lsRlhpRlJhRFZkVzBQMkdyS3NOWlk4VFpHb3pvTGxDWk9VdzBORlNhOG80M3RqdjIzY2FuWU1PVVhJL3FIb1BkdlA1bFpsdVdqb3FpNkE2Z0g2bkJSR3BrQmk0QmdGMFRCS1FpQ3BGYXJaWTFHSTN0NWVhSFQ2V1M5WG8rM3Q3ZUwwc2hiajQ5V1QxalBIaTZOcmRrRWJkYlljQ2ZJbVV6MWFXZEhxTGtjSHVHQlNyblFyelFHTUVUSG5sNzk5L2JGMTl1MzNibjNOdmJzM21wcHZmSHQyZk4zdlZ0QmE4QTMydkM3amtIbDdZdHZCNmthWHFIdFZ5cUlPZ08rUGJzM2RxMS9LRnIvc3poMmd6KytCdi9mZDh1S1dneWQ3Q05CRVBvZVBKalJkK0RBUWZ2Ym1LUElUbVFrUVJBRVNYSnBiWTJCQk04NlVvY2tJMm5WMkd3V3hNYkdMTTI1YTgzK05VRHc4dks2VEJFbUNoUW9PTmVJajQ4ZjBjb1ViYzM0UVhPWmxZU243UElza0xkYWJZZ2V2alhCN1ZzVFBCeDJvaUFJMDVVcFY2QkF3Ym1HWHE5UG83bjZvTjBXZmE0ZnFaSDVRMmloc1RWMXRySTFhbXlTUitEQXBha0JndG5jTUJXSVVxWmNnUUlGdndHTVI0OGVHVWpMOHFwR3hvL0cxRE5Ca2p5TDQ1czF0MmIyanliQjFvWnp6ZVhlMEdxbktuUDkyNkswdEpUOC9BSmxJaFQ4S1JFVEV6UE1VMk56bTZPcVZ1Wm9DNjQyTjRWNEM2MU5kQWNNbWxTN3hnUGRacWdpMkJRb1VQQ2JRYWZUalcrbHJiVm5qcmFRV2EwRENYYTdIZEhUREczVTFBQ2hvY0Uwb1gwejFNbk9qTU1zV3JtQmU1ZHY0djE5dVI3MEt6SlplWGw4dW0wdnIyNDhTSzNIVVE1ckE5c1BIZWV0alR0Wm5sbWlyT0J2aUVQM1hjR0pIY1hud1Vna2ZyNTZQQVduL2poemF5dk5wYnF3NGd5UHJtUGJaWmRTMnFYRGJWUmxITUorRmhoeGFqY3RZY01UUzgvcVBNZ05GWlFleVczeitjL1hqQ1V2cDN2bWFFYkdnVDRlV2xzTGphM3hweVZYbTlRbVFpcTJNa1B4TUVNbnRyODM2L2hxYnlGOVltUEV6UktVQUFBZ0FFbEVRVlM0dEg4VW03ZHM0UEVmR2tkdTVyMzFlemhTWE1KYlAyUzJFR3lsZVRtOHN6ZWIvYitjNUl0amltRDdMV0V0SzhCdXRwMEhJeEdKbnJjUXY4QS9rT3RnMVN2c1diTCtqQVc5cFNBUFIxZTZUVlBPanF0dnBOcDhGbDR2cGtvYXlzNHUvNTZVK3dNYi92cGltODh0ZVRuWTdkMDdWNjlldlpJOU5iYlRtS040bXFQTldwdExzS21ibzZHTlRCNHVNMVFVeGZZRm14akE0aHNuTmYwYTJGREdYL2Jud3RoWXdKdG5icDRKTlRsOGMzQm5TekdjMEo4UEV2cXplc05hUHFoVGhNMjVRUFhPZEk0dlg0OGREUUVqcDlIL3l2Rk5TYnEyNHFQc2UreDF6RlpmRXY5Mk55RkdYOEJDM3JJUEtkcDdGTHRkVGZDa1dmU1pub29BVlArY1RtV2xub1k5RzZpcEZJbTc2WGFNU2U0aWRVY2QyZSsvUStIK2szakZENkgvd3B2dzl1NDQrOU4wNkFkT3JOb09vaGJ2MGEwRWI4NStNcGQ4Z3FuYWlpRitDSDBYM3RBNUEreHB4bEN6ZHcxRkJmNzB2WFFFQUpXYlYxSWxKUkovVVJKbDZ6NmlRVzJrY25NNkZtY3dDZlB2SURUVzMvMndsM0w4blhlb3lDckJrRFNPL3JkY2lWYmRxSTJVY2VLOTl5ZzdVb0JYejBRU2JyNlZBUDlxTWw5K240bzlHZFRWbGJGL2NUWkNaREtEYjNSNWJ4d1ZXUng5OTBPcVQ5VVNNUFl5K2wyVjVrNHd0cEgzMFZ1YzJubVNnTFRKZEVVQnEveCtCYWQrM0kvWlZNT0pGeFpUb0JXSm5MT1E4SGgvMS9tV3ZVdmVqcU9valFra3pwL2ZWTmplc1FKWXpiR1huNlU4dTRySVdUZlRhMHkvSnMwdy8vUDN5UHZoRUtxSVJCSVhkbjYrM0E5ZW92TGdBZVRpWFBZdFhveWdDcVQzM3hZMmtTYVlUK3hrOTVKUHNYdEZNK0NldS9Gemw3Qlk4ak00OXM3SDFGVTdDSjE2TllsVGhpSUEzdDdlSTREUFdwdWlqZVlvc2lRNUpVbkE2VVFscW1WSkl3bE91MDAyMWRSZ2t5UXNYdDZJalZMUG5aU0xMQ05VVmxiMHA0dk5XbzZVbHBOb0RGR2t5dThNdVdRbkcrWS9UK2pNYStsejNSVUk1cG9XUklBbmwzOUY2Q1d6Q2RCbHMvWEIxNXBNb1pwQ08xR3pyNlAzdkdrVXZYSTdCOWNjQTZCbVZ6bzcvdlk0bXBScHhFN293WTZycjZXaVJnSWNaTnc5aDE4eW5TUXNtSStQZVE4Yi8vcnZUaDlRVFhnc1lXbWpLZm44VlZxU2JUU3c4NmJyY2ZhNW1IN3piOFEvUU1MYTZSdis5R1B3Nnp1SXdsZnY0OFR1UW14Wlcvbmg0ZjhRTUNqUnBmT3MvNHdkRDd4STRPUzVHQk1kYkxuMlRzd09seFd5ODVvWmxKbU1KTjUySXh6OWpCK2VXOTVrb2Z3MDd6SUtDbjFKdUcwKzRiMjhxTTJ0QkxVdndlUFM4RThNUXh2ZGw3QzBOTUtISnJwdktaOHRNK2ZRRUpCQ245dXVvdjdiWjluOXdYWUFTajU5bGwyZkhpTHVwaHNSOXEya3JMRHp5bjVkM0VEQzBsSlJhNzBJSEpOR1dOcDRmSUpjbklpRlN4NWoxNmNaeE41ME13R2FrNnlmZDErWG1IbnIxbjFLUStTRnhNOGN5YUU3cnlMM21JdEVNK3U1djdCL1ZUYXhOODBuTkt5VXpkYzkxT241L0llT0lXUllFdmhHRUo2V1J0aTRDOTAwVHk2dE5HZEZPc1paMTZBdDNjSlB6eTl6T2JSSzk3TnU1aTJJZ3liUlo5NWxGTDU4QjRjM1pRR3VaaStyVjM4WDJaNmZEVmtXWkFSQkVBUVFhSEtqT2UxV25LalJCSWVpRGRDaGJsM3dqcXMyZEh4WEhxWlQyWWQ1ODdDVGQrN3NwMGlXMzl0NzFWQ0p3NkZIYjR3bUpENkNrT1NXMzhkZGR5ZlJJL29qUjExTnh1VWZZQU8waERMZ3J6ZFJzWDgvNW1vYi9vUGlLTjkxRUthNCtpWUVYSHdOZmFhTUFrWVJ0K0k5Y2pjZEkyaFVKY2MyT3BtNDZ5NThOQkIwOTcxa3BWNUxWY085QkhkQS9hOE43WWt4MU1ndmJUUTdLNVpxSzRGaFlRUU1TQ0o0WUhMblFyeDBad2RqTURMeXRhZFpjOHR0NUJocTZmdmlSd1NITnBjelJjNWJTT3lZWVRCbU1Ma2ZEaUIvYnhVeDZ2WGtsdmRuNXIxWG93TDg3NzJEcjJlOGp1WFJPWWdacThrcFR1REtyMjUzTVpza045ZEdocWVtWWo4VVFaazJIbU5xTXlkYzFmcmwxQmluTWY2R2k1R0JRWGZkeUtwRlh6SDh4bEhrcmxoSjc3OStqZkdDT0l6OTcrZkVoMWQyZXIvZVBmdmczZE1YalVaSFNHb3FvWVptb1pHOTRpdjZQdlE5eGdzaUlQa0pjcFplUU1HSmw0anIzWEVKbCthQ1MwbStLZzBCNkRmek0zTFRmeUFtZmpCSGx1d2llZE9QaElhb2tmdmZUKzdTRVJSbE9ZaUpQMzE5VjBEU01IeFYrUWlHdkJiejBJamVDLytPY1dnZ2dmWlpySHJPVlY5ZThQbjdhTWJmU3Y5cG81R0FnUXV1WU1meWRKTFNYSngxS1NrcC9ZRThUM05VRUlTbVpGMEVRVUFVWlVIRXBaaHB2TkQ1YW5BNnJOZ0ZMNWRnYSt6dTN2aWpVcW5HZGpiWkZVVTVMUGo4QUl0dW1FbWlRYWxtLzcyaGlwdkV5SHN5T0hEbkhING90R0s4NXUrTWVHQnVVMzJsVjZDcjVGM1FhUkVjRGlUQVdaSEoraGszNFQxeUtnRVIvalFVMXlQNU5GTlNlMGVFTnYyL1BqU002c29TSEtYbFdDMkY3THIxeGlZYUhxK2tKTEFDM21jeThrQ0d2Zm9NKzE5OW1DLytua2ZBaU1zWThjcVQrSGF3cHh5bFJSMk9RZGRuUERHSml6aGVNSmp4bzFvMkdOR0hOZEovYS9FMit0TlFYazJEc3hpcE1vTnROOXpZUEtvQjhVaUF0YkFZVFV4OHQraWE2b3Z6Y1J6ZHc1WWJtdnNuQlBjZTdqcGZhUjFCWVdGdVZTd0NROEN2S1FnMVl5azFvMnUwbU1SQURHRmdxNndET3VaSTFJVkZOYmtwZE1Zd0dySXFvYVlJczluTW9YdHY1V2pUbStBQ1ZOamM4dVhNL0tycVFKZFRWYVZSSVZ1dHJwRVhGV0Q2OFFpYmI5amNyUGtOYVM1eUNnZ0lTQVkyZUdocnJoOEJBVmtXSktkVGtKMlNJSW9xSkVtU0hlWmFvYWJVS2h0OGZCRjB0cllhMjczMzNxc1NCS0ZEM3VpNmlnSnUrV2diZDg2ZHdiZ0liMFdxbkJkUTAvT1dCK2w1eTRQWVNqTllOMjQyUmRmT0pkcllnZTltNHdvY1EyNWc3TDl1QitENEU3dndERmcyRkRjMzNER1hsZUoxWVRqcU1BMWVobmhHZmZ3cEJ2WFpHWG5nbUZsTUdETUwyVkxGam5tVE9mN2RIRkptbjU0MVFoMFcyZUVZeXI5NWtkenFJY1QzK29XZlg5L0FxRHVhM2NYbTRrSWdCYkRSVUZoRFpFZ0EzdW9JVkpHcFRQanN0VGFGOWpaakJQYmNuZGdrbXVqQVBTRUlBbktyN2lrK0VkRjRwWVF5OGIySDJ3cVVjSC9NcGFWQUhGaUtNVlU3dWl3Z0JGRnExZHRCank1TWo2V3dISHBIZ0ZTRnFSU01YYUJic1pRV0lMczFHVXRoS2Q0UlFlQWZqdDdnejVDM2xoRWVlQWJLU2plNnlPZ2pqZmhmTkpPSlQ3ZlB5S0xSYUVZTUhqeEljK0JBUnF0RVhVRjA2V3VDZ0N6aHROdVJOR3JzWmdzYW4yQjBZZjdvdkhXb1c1bWhQUG5rRTZPQjAxZk4ydXU0YzBrNnV1ZytWQlprczdRQVZQb0E1aVc3aWx5M0h6akV5WXB5ckU0elgyN1BJQ0U4a3FrSm9VZ04xU3c3Y0lyRHA2b3B0VWtzM1FHcEEvcVI2S2RSWk5KWmdDMXJPMGMyRlJDWk9nQkgvazZzMmhoOEFqb3hjYUo2MExBbm5ZS2ZSMFB4TG81OXV3Lzk5RXVhZ3hGclArYm9ta0g0T2c2UnZjL0ErRmY2SVBoTDlCbHI0OGY3bjJmZ0RSY2pWeFZTc0NlUElmZmQxaUg3UnRYKzdaaHFySmhOVGlwM2JrRjl5b3VRMUJIb2RLVWMvTmNLZ3NhTlJFc2w5YVYyZ21QQ094eTNFSlo2MmpFNHM3YXo3UjlyR2ZYTk40VDRsckYreWh4T3BQYW45MUNYaEMvNjVDMXlVaU1Rc2xkVFlyK1FZUmNFb2hXbjB0UDNSYlkvczRRK2w2YmlLRHhHU2JiRUJYK1pqWGJRVkdJai9zMzIvM3VEL25QSFlzdmRneHc1aVo3dTgvbkg5NlhxZzY4NE9UUUliV2dNMGNQN0VUaHBEajR2WE03UGIvWW1ia3dpNXF4RFZKdkNHRFJ2SWpGenJtVGJxNHNKQ2JtZHFxL2VvTDZyY28wUUFtSWNuSGh6S2Ria1NBSlNSdU1ickNOdTFreCtldkZKQW53WFVyL3BBMm9pcGhIVnUzUDkwcjQzblgyZlhZd3hvb1lqM3h4bHlLZmpRZTFMdjVzR3N2dXVoMG4rNnpXbzdlVVViZHBQd21QMzBCbUJ2eW82SG4zQk14ejZmQlgrZ1VHRWp4L1ZGSHhwRDFHemIrVEFKWDhobzM4SXhnRkc2bzd1eE9xVFROOUxoalVwY08rOTkzNnZsSlNVUXpRM1UxWUpJQ0lJSXJMc1JFWkFGR1JabHBGRkFidTVGbHVEQnJtNkZKVmFyUmJjaWJrQ0lENzExSk5YaTZKNGVoK2JaS2ZLcGlMY29NRmlkMkN4TzdDS1dvWkhCd0Z3TFBjVWVWWTFRMk5Ed2VGQXJmY2xLY3dYMlZyUEQ5bGwrUGdIMGkvSUc0dmRRVlI0QkJINjM1YU14bVF5NFhSSzNXNUtYRnBhUm5Cd01DcVY2cHdlYzZialEzQlN0V3M3UlpzMlUxc3FNSERSMDRRYW03ZWpiNzhVRElIdTZKWW1nTEJoL2RIMUhFeGdVQTA1WDY3QmpKR2syMlpqNkpGQVlGdzROYnZTY2NSY2hMNXNENlhIVFF4OCtwK0U5L0FGUk1LbnpFQlZlcEM4OUEzVUZ0WVNQSElzUVhHUkhYTG1sNjFiU2RYeGZIeVRVaEZyQ3pFWGxPQnpRU282THpCbkhhQm8weWJLRHVjUWZjdWpKSTVONkZSN09kMFl5cmR2Sm5UMlh6RDJqVURRQmhBNW9pOFZod3NKR1JoUHhmcFAwSTJkaStQZ0pxcktmRWg1N2duOEEzUWdlQkYxMlV4c1I3ZVR2KzRIVEZWMndzYU93ejhxQkFRdm9pK2JnVDE3Si9scmY4RHFDTUE0WVFRNmI5ZFRxNDBkVEVpVVFQWGg0MWpNV3NJSDl3YU5IejFuVEtMdTU4MFViTnlLMWFvbFl1eDRmTU44TVF3WWdhK1lUKzQzbTlHTm1VMU1TaStDaGc3RnExTlpKQkkrTVExYjFpSHE4L0xSeFNWakNOTGhlOEU0Zk9RQ1RxMWFqODBRei9Cbkg4YmczYmtxYlJpZWhsZkJ6K1QvbkVYQy9jOFNrK3dTMUVHakw4RkhLQ0l2L1R1cXNvcnh1MkEwWWYxaU9pY2k5Z29uYW13L2FqSU9ZUzZzeG45NENvM01aQUhKSTlDN0RUdkJONXl3UVFtSWhraGlMeGxCeFpZMUZHNzdDWWNZVE9UWTBYZ0hORnVBZXIwKzY3bm5uanVCcTkrb0hYQUk0QUNjZ0NRSW9peXFSRmtRQk5SZU9sU1NFNm5CZ3RvUWlLRFQ2VVJQN2pXSHcvNk5JQWlUL3FpYXpmbk94M2FtNHp2YnlIMzlkckpOa3hqL3dPVi9tTFUvY3YrbG1GS2VaT2pjRkVYRi94K0F3K0hZb3RGb242V1pvNjFlRUFRVFlCVUV3U1lJelJ4dFdxMkxvODNMeThYUkpyb1RjcEZsV1pnOWU1WktFSVFSeXBRcThBcUx3eWNpNkE5MVQ3cVlSTHhERkovdy80elhXSzBlR2hNVDB4dzRhTmxNV1d4MG43bVNkUnQvWEtscmFzODBqM2ZmZlhjWW9QVERVMERFN1B1SitJUGRVOXlkTHlvTCs3OEZuMlhMUHU0NWF0VG9ZelQzUUJEZGFSK05wVldDTE11eUxEZm40MHFTMUt5eEFlaDB1cUhLWENwUW9PQjhRZS9ldlh1NWhacG4ya2VqWUtPbHh1YnExU0pKVXN2Q1VwVktwVGdmemlMQ3drSzdGVGdBTUJnTStQbjVLcE9uUUFIZzcrL2ZwNVVaS25yOENLMDBOeVRKUldtazlxQXBFZ1JCdUVDWnlyTXAyTUs2Zll6QllGQW1Ub0VDTnpRYVRSSnRmV3lOeGZCTlRCK2VSZkdlR2hzblRod1BBeEs3ZXNIcTJscHlLK3B4bkM0bno5bTJxYXpWYkNhM3JCcXpRMVpXVElFQ0JaMUNFSVNFRjE1NDNxZWxZSk5ibTZOQ2N6NnVSL0FBRUl4R1k1ZUszcEhxdWV1VkZleTFhd24zY2xKbzEvUHY2NmN4SWt3UFdIbnVvMi81T3F1Y1VpbUFMVTlkUmJUN3NQZFhydVNOekRwNkJIaVJWMlZod1JXWGNPdUFNR1hsRkNoUTBDRW1UWnBrQkNwb0lweEVGQVFFRDgwTmFQYTF5YktFdXRGRzFXaTBYUk5zb29ZRnMyYVMxTU9WMXI3eXUxVXMybkNRMWZPR0F5b21qN3lRV3llYW1mam1uaGFIalVnZHhUVXp3OUdLa0g5MEQ1TlhiT1B5QVZkMFV0R21RSUdDUHp1aW9xSjZBcGx1UWRhaWN4VnRvcU11NFNhNkpaMmdVb2tEdW5ZWnJ5YWhCdEF6eUI5TEU4K01taUc5b2dqV3Q4MTg3aHNWM2xSckZ4YmtoK2l3WTVXVVJWT2dRRUhIOFBIeGlmTVFhcTFiOGpYbHNyazdXQ0ZKa3RDVTVDWUl3b0J1WDlGdTRyMmRXY3hKN2R1TmcyUSsyWHFRWWNPVE1DcWtJQW9VS09nRUdvMG1vWlZRYStGamE1Mm9LOHR5VXdtWUFIU1BWRTJ5OC9vWHEzRWtwTEtnZjljTnloMC9iK1hqY2o5ZW1EUkFXVEVGQ2hSMENsRVUrM2hvYVc2aEpudWFvOUFpZ09BU2JFSnBhVWtpNE5YMVN6bjVkTlZxdG9weHZESzFQMTFWdkE1bTdPS3huMnA1NTdvMGdoVlNEd1VLRkhRTlhpdFhmaEhpSWR4RVdhWUZoNlJuQUVHV1hla2UrUGo0SkhUOUdqTHA2OWZ6V1YwSTcxeVpncjZMVXUzRThRUDhmVk1CYjl3MGhSaHZ4UVpWb0VCQjE5RzNiOTlRVHArazZ5SFVYT2FvR2hEVWFuVjhsNjlnTG1IeHBpeHFkVjZrUGV1aStkV0c5bUw3d2drQVBQbjJCNlFYMjZpek9aaXhhQWxKZzRmeDRZeEIvR2YxRGdvclJhNTUrVVAzaWZTOGQ5ODhCdXFWUlZPZ1FFSEhDQWtKRFc5cmpyYlUyanpNVVZrUUJFSHZjTmhmRmtWeC9wOWhnbjVMMmlJRkNoU2NIWmpONW1YZTNvYWx1T2lMNm9BNk40V1JCYkFMZ3VBUVJWRlNxOVd5UnFPUlJRQkJFR0tWcVZPZ1FNSDVDbzFHRStuV3lzVFRtS0tlYVIrdUx3UkJpRkdtVG9FQ0JlY3JWQ3BWOUdtRW11QWgzQUFaa0p1K1ZBU2JBZ1VLemxzSWd0Q2psY1lteUhLTGxBOTM5UUhJTW9nblRod1BCM1RLMUNsUW9PQThodTdmLzM3SnAzT056V1dPaXNIQndaSEtuQ2xRb09COHg4Q0JBLzA4QkZtYmRJOUdvU2JMTXFLWGwxZjRtVnprVEdpTHpPWUdjc3VxTWRuL1BMUkZzdVJBa3BTaVdBVUtmaTBpSWlMOFRxT3R0ZjVCclZLcHVpZll6cEMyNktPdlZ2TG1VUlBodmxvS0swM2NPR01xQ3dmOXdaWEZ3azBzVDc0ZVZZOElaSnNGcjdnVWhyLzRFaEc5T3k5Qk0rMyttZ1BiSFl5OCswcGxSeXRRQVBqNys3ZlcyRTVuaWdxaUtJcWgzVHE3bTdabyt3UHpXSG4zZFR6UTM0dEZHdzY2djNUUkZxMWFjQkd0eWEydm5EcWQ3UTlkeDhvN3JpTDkycUc4K3MxUFZQd1pWc01ya1VsN2RqUDc0SDc2RG5Hdy9mLytYNHV2SFRWbDFPWVhJN1hROGlUc3hkbVVIdndGeWRFOWpVOEdjRmlveThuQmJwUGM1M045WjZzcW83NjBwczB4OXBveWFrL2w0N0FwbXFXQzh4ZmUzdDUrcHhGcVRkVGdqYVZWYWxFVXUwbUo1a1ZTaitheTBwNUIvbGhLV3RJV1VaUFQ1aWk5UjBkWUNWQ3J4QTRiN1A3eG9DWnNlQXFXelVkeEFpb3NISHY2TGc1dnlNTS9WRU50YlJBVFBsdENRR0FkTytmZlJzV0pIQnJLSk5iTjNRVUJTVXg0OTBtOEtDUzk3K1VNMzdPVFVBTlVmcm1ZYmVzTlhQYkdYMTBLNHBMN09iQlRRc3plaFZQampkVS9tWm1mL0pPOU42VlNJUXhCTmxYVGNEU0RpTCsveFlpYnh3S1EvY0pDOW4yVFMyQnNFTFcvbEhQaHFyV0VOKzBJQy92L3ZnRDFSWGVSTkYzcDg2UGc5NFZXcSszVXgrYlcyRkFMZ25EbXpTTWJhWXNtWGRhbFAvOXB6eTVlM1pYTnlRb3IvNWgzS1VGL2h0V1E2aWpldElscVN3MG5YL3VDdUd1ZVFnVlViM2lQakIwYUx0dTRCaTgxNUx3OG4zMXZyV0xDdzVkejRic3JxUG51VlRaL1pXWEsyL2QzNjNKVk80OXl5YVoxQkFUcmNGb3NUYXV1NlRlVkNRL093TEo3R1YvZXU0emhONDlGUlNsSGwvekloVnN5TUlZRERodk9GbVc4RWpXSDl1RTFzRnA1cWhUOC9xcUJXdTFIeDc0MW9WbU5nTUF6ZTJDN1QxczBzRzgvbmpMR3NHM3ZIbDdkdUorTGJoM1BINzUxaVZSTDhhcHZFWXFQVWFNZnl1UWJKZ0pRdG4wN0drUXlGLzhEQ2JEblZsQmxQUVQ4dXM3ckFSTm5FaERzeXQ1UjZacXplTUtHREFaQUZ4Mk5XRjJOSFZBUlJNU0lJSGJmZGdNOUo0MGxJdTFpSWdaRWV5ci9qRnVmb1R4UkNzNExxRlNxZGt4UkdSQ0UxZzRaRWZEci9pWE9qTGJJWVBDaGQyUVlOMDBkalYvK01YNnMrQk5FUjlWUkpQLzdKY1orc29wZWtjZlk5VnA2MCtRYmtsS0ptanFWSGxPbjBtdmhJNHg5L0phdVNNcm01V3NuSkszMWFaOVZRRkM3VjBsc2FSNFBlWGNkby83dkZyVDJBclpmT1prVGU4dVVKMGpCZVFsUkZIMW80MXRyV1ZMbC9neFJFSVJ1Q3JZem9TMlNLS294TmYxV1dWcE1ua05Mb083UDVHVVQ2WGYvQTVRc2VaN0tHb25RVVNPcHpUeUJmM0lLWVVOVENCczZHRU5Rcy82cTlqVmdMNitrcGVqeXhjdW5sb2JDQnBmV3QyL1ByeHlURFp0SkluajRXUHJmOHpnSlk4T296U3BwOGYzaEorN20yQVpGYTFQdyswTVFCSjlPVE5BbVhqWTFkTk1hUENQYW9yNjhzdlF6dHB0MWhPcEZjaXRNekpsK0VVUC9aQzAwTmJGcDlCMy9MQWYvazg2NEIyNGxhY2ZkcEkrYlRFQ3ZjT3B6ZnlIcWpwZEl1V3FFUzd0Tm1Vb2tOL0xOdUlsb0lsSzQ2TFBuME9GTDcrc25zWFBXeFJ4TENFZHJFTUhuMTR5b2xDMFhYNDdUbUlpV1NtcnI0MG1iM04vamV6dkYzMzZPTm13S2ZTWU9VcDRzQmIrM1lEUFFzdWk5VGFvSHpSSk9LZ0NNdjhYQVRBMG1LaXdPZ24xOU1XaCtIN0xKODQyMnlHbXFvYUdxRG4yWUViVzJhM05pTFN0RTBnV2c5L1UrQ3lPUU1CY1g0MENEVDBUb255eFNyZUIvREVXQ0lDNEVUTGlvaTJxQmVrRVF6SUJWRUFTN0lBaE9sVW9scVlIZmpPclI0RzNBNEsyc2ppZFVCbjk4RGY3ZE9zWXI5R3kraDBUMEVVWmxJUlQ4TDBEWGdSbnFBVmZ3UUdGT1ZLQkF3ZjhDV3N1cWRnME1XVVlSYkFvVUtQaWZFbXh0QWdidENiaEcvbkFGQ2hRb09OK2g2a0JqYXlIZ0dzc1NGSndESERwMEdKdk5wa3lFQWdWbkIySkhXbHA3ZjZoQWdRSUYvd3NRT3ZrZFFCQ0JibEk2T05tWmNaaEZLemR3Ny9KTnZMOHZsMmFkUkNZckw0OVB0KzNsMVkwSHFXM3ZjSWVKOXpmK3hKYjhHbVdKT29LdG1NeC9QVWZlL3R6ZjVmSy92SFF2NlpkTVl2bm9HMmc0aDljeFo2U1RQdjFTVmc0Znd0SHY4My9YS2EvUE9vU3BSdEd3ejJOMFdWYUpnTE43cDY3anE3MkY5SW1ONGRMK1VXemVzb0hIZjhocDNLYTh0MzRQUjRwTGVPdUh6SFlGMitvdDIzamp4d3kyRk5RcXk5VFJRN2JqYXc1OXNKVDkvL255ZDdsK3dqMHZNdTJUNXhHcktqbVhoVy82UWRPWTl1MHFlaVY1NDdEK3ZyUkpKNTVaUVBiT1ltWHpuYjl3bmtaYmE2TzFxUUVib09tNmxSdkE0aHNuTmYwYTJGREdYL2Jud3RoWXdKdG5icDRKTlRsOGMzQm5tME5yaTdOWld1akQ3RGp2YzZvRi9CR1F0M29OdmU1OWlQeVhQNmJXOWpmOHVoQzdydDZaenZIbDY3R2pJV0RrTlBwZk9iNXB4VTFIdG5OczJUZVlheVg4TDd5WWZsZFBSSVdGdkdVZlVyVDNLSGE3bXVCSnMrZ3pQYlhUSk4ySzdhdklYZjBqRFZVbWZBZU5vZTlOczJsa3BhcmJ1NDdTbWlDOFNuNGlkK3RSZk1aY3dlQzVhV2Y4Z2k3NWJpblphM2VCWHhUeHR5d2tOTmJGMlNBM2xITHM3WGNvUDFHRWx6R0dYamNzSkRqYXhRSm9PcnlWSXgrdXhHb1Y4UmswbHY2M3pPaHdnMXV6ZG5GaytRWktqcFlqcm5nVHh4NC8vRVplU3E5eFNVM25PN2IwSzh4V0xWRnpieVEydFE4QWhWKzhnMndjUk9sM0t6RmJmVW44MjkyRUdGMWpzT2JzSjNQSko1aXFyUmppaDlCMzRRM29kUjNmRTVnNDhmcFNncWRjU002U3BWZ2N2dlQ1Mi8wRUd3M0tBK0cyWTdxanNmMHEzZnRJYVRtSnhwQXU3RkViejMzN013dW5Ec05MU1cvdlpLNnF5RitYVGVUVU9VUW1scERmQlMxQ0x0bkpodm5QRXpyeld2cGNkd1dDdWFaSjA3SWNXY09hZVErZ0czb3hmVzZhZzFEVzZENm9vNmJRVHRUczYrZzlieHBGcjl6T3dUWEhPcjFXWFZZdWdXblQ2YmZnZXFUTXovamhtWSthdjl1M25yMzMvWTFUMlY3RXpKcUoybEYzeGhwZjlZYlgrT0haZEtMbTNreGtuSk10Vjk1RXJmdU5lUHpaMjhrdkRLVHY3UXVKSE5JRFM2VzdGdG1Xei9mejdzSTdiUTU5YjVtTEhoT09UcTZqRG9vaUxDME43eEFEUG9NdUpDd3REZis0OE9hNXUvNVJmTkpta25ERk9JN2VlejNaQjZzQUtQcm1YWFkrOXlHaGw4d21RSmZOMWdkZmM1K3hnWjAzWFkreno4WDBtMzhqL2dFU1Zudm45d1Ftc2w1N2tSLy83elg4UjE1TTlLZ0VMT1YxeXZOd2VzRW10L3EzaGNabTVneXBpMDVsSCtiTncwN2V1Yk5mcDMvNzg4NGRWUGRJWm15b2xuM0tBblVJYThaR0tueFNDVGRxa2RMR2NHVHRPdnFQdWI1aldkaFFpY09oUjIrTUppUStncERrNXU5eWxyNU42SFdQMG4rR1MzTUtTUjdtL2lhVUFYKzlpWXI5K3pGWDIvQWZGRWY1cm9Nd3BVK0gxNHE5L25acWoreW5wcUFjLzZUK0hGdXhHN2kyK1cyWmtNYUloMjlEQUtKL3hUemtMbDlCM08wdjBXUEVCVEJpRUlVckI1SDNVejREMHFLeFZsYWlpUXJCTDc0dklRT1NQTForTlZhVENsMVlCSUdENGdnZU5LelQ2NmdDalJoVGpaU0U2TkVrRHNHWTJyTjU3dDcvRDJFM1BFU3ZzY09RZ2I2emg1R2R2b200Z1M3SzlyanI3aVI2Ukgva3FLdkp1UHdEYklBV0s1WnFLNEZoWVFRTVNDSjRZSEtYN3NuMWlKcnBjKzl6eEE4TlZoNkV0ckIwUjJNN0k2dXdvaWlIQlo4ZllORU5VMGswZEJKY3RWWHdqNDNaREEzWHNQN3dTVTdXMk1rckxPWlFoVWxacW5aUXVHNHRHcjJGbzYrL1FVVmVQV1ZyMTJMdDdPR01tOFRJZThaejRNNDVMQitjeXJaL2ZkcmtrREFYRk9BYkY5ZldZVkdSeWRxME5ESlhyS2ZxMEdFYWl1dVJISjN0SFJPN3I3K1lINS85TDVYN0QxT1hYWVJrczdWNFpmb21KcDZWbWxOTFpTWGVJV0ZONzJCOVdDQ1cwbklBK2p6d0FsNTVYL1B0aUtGOGZjbTFGSjV3RTgzN0pESHlwZHM0K2VRQ3ZoaVF6S1lIWHNicU9QTXhtRW9LS2Z2eVRiYmNjQ1BmMzNBanYveFlqazl3czJub0ZlaGlJUkIwV2dTSHcrM2REbVRZcTg5US9zN0RmREV3bVhXM1BrNmRTZXIwbmx3TEdZSnZ2Q0xVMnJWS1pObmNqbmJXbmtFZ3EzRVZsSFlMZFJVRjNQTFJOdTZjTzROeEVWMG8vcFJWakIwWVMyN3VLWEtCN0hvNzl0SlNUbFRFa2hTcytBOWF2NVR5MTI4bGZNSzlxQXhhVkgxSEVwRCtUd29PbXVnMXNLTzVVdFB6bGdmcGVjdUQyRW96V0RkdU5rWFh6aVhhQ1BvZVVaUmtad010TmV2S2pTdHdETG1Cc2YrNjNXWGVQYkdMVXkya3BSclI0V2l4YytUOEhadzRITUdWZTE1R0M5UnVlSTNET3pKZGRIK05iOHN6U0NJUzFDcWtSbnZORFYxUUVBM2xwVUJQd0lHNXRBcS9NSmZid3l2MkFpNTg2MlBBUWRiaUJleC9hd1hHRnhjQUVIN1pRc0l2VzRpekpwOHQweWFRcy9jRytnenZvbEhTcXIrRUlkeEk1T2g3R0hIYm1HN2RUK0NZV1V3WU13dlpVc1dPZVpNNS90MGNVbVluZFhoUGRESi90b3BpYkE0dmZNSUQvNnlDemVRaHpEcjBjS2hsV2E0VmhHNjhYKzExM0xra0hWMTBIeW9Mc2xsYUFDcDlBUE9TWGVyNzlnT0hPRmxSanRWcDVzdnRHU1NFUnpJMUlaVDdab3h2T3NVckgrZFRsVENJeXhOREZUbldXb3ZLLzVIQzNKNU12ZSsycG9DQmZQQXI4amQrVDYrQmw1eGVLYzdhenBGTkJVU21Ec0NSdnhPck5nYWZBTGZwZU0xOERzOTdpc3g0SFdGeHZwUituMEhjWGJmZ0hkV0RoajNwRlB3OEdvcDNjZXpiZmVpbmUxekRweGVoc1VWa3ZQQWhFWDBpTVU2ZGpDNHdDbS96UWJMVzdTRFlZT0x3cXg4RFEzNzFmWWVtam1EWGYxL0JJRTNDZjlDRmhNU0YwblBPTERZOCtTL0M0eDVDeWxwTmZsRWlGMS9vTXRteVAzZ1ZvZWN3ZkVNMVZKekl3eWY1S3JjcGNZZ0R5L1lRUGlZRm9TYUxCcE12dmwxMHZ2djFUdURZOG5meEZjZmlIVGVJME40UnhONndnTU0zUE1iUnlDY0o2ZWxIOWQ0ZkVIdlBvTmVvdUE3T1ZNckJmNjBnYU54SXRGUlNYMm9uT01ibHMrdm9uanJETDA5ZVQyYnBTR1o5OXVTZlZiRFZkNkN0dFJCMnFpZWVlT0pLUVJBU3UrN1l0bE5sVXhGdTBHQ3hPN0RZSFZoRkxjT2pYUjBNanVXZUlzK3FabWhzS0RnY3FQVytKSVg1dGpsTmRIZzRzWDYvZmJjT3Npd0FBQ0FBU1VSQlZBTjZrOG1FMHluaDU5YzlmczNTMGpLQ2c0TlJxVlRuOUJoclFTSHF2c1Bva1J6ZjlKbDNsQkdIWFVOby85Z09WQjRuVmJ1MlU3UnBNN1dsQWdNWFBVMm8wV1VtcVVNVGlCazNnSksxNlJUL2ZBaDk3MVRDQjhiaTFYTXdnVUUxNUh5NUJqTkdrbTZiamFGSEFvRnhqUjBaTlJndnZnanpzUXdzSlNZQ2hxYWc5UTdGbUJwTHdjb3ZxY3F0cDk5ZHQrTWRIa1Y0Y3JQNTZSVVo3M0dPcnNFM2VRdytZaVcxV2Jtb0l4UHhqd3hBMzJzWW9VWWJwNzVLeDFRZnhKQi9MaUlvMUVWRzQ2ak1wV2pUWmtwKzNJY2hkUzdKdDE2Q1NnUkVnZHFNSFJSdDJVVGxMMVVrUHZnMDBmM0N1cVpsRFJ1UDJseE0zUzg1NEJkRllHd1k2ckFFWXNiMHBuaE5Pc1UvSFVEd2pjVTRiamc2Z3l2TzZ0c3ZCVU9nZXg5ckFnZ2I1bUtVTm1jZG9HalRKc29PNXhCOXk2TWtqazBBNlBDZVhOQVNOR3dvV25YN1l6VDBIa3pvZ05nLzUwdmY2VHo2OU5QLytCbFhFTUhhK0s4Z0NIYkFLUWlDSkFpQ0xBaUNMRGlkam85RVViem16ekk1dnlVZjI3bmljRk9nNEUvcHBMRllWdXIxM3YrbExSOWJBeTM0MkVSSmxHVzVVcGt5QlFvVW5POXdPQnkxSGlhbmZIcGZtNEFveTNLRk1tVUtGQ2c0MzJHMVdodkxsVm9MdERZQ1RuUTZuZVhLbENsUW9PQjhSME5EUXgwdGszSlBHeDBWN1haN2lUSmw1d1poWWFIZENod29VS0RnOUtpdXJqNmRLZG9rN0JvelBFU0x4VktxVE5tNUVteGhpbUJUb09Bc29haW9xSzYxUUJPRU5tVlZzaUNBV0ZSVVhIUkcwck8ybHR5S2VoeW5JMlJ3dHRJUUpSbUhVMnI2a2FRL3o0TEk3bngwdVIzV2xkTVZ1elY5TGlrYldvRUNnSXlNZy9YdVIwTnFGbTVDTzQrUGdIcnc0TUdsa3VTMDRPb0Ewem1rZXU1NlpRVjc3VnJDdlp3VTJ2WDgrL3BwakFqVEExYWUrK2hidnM0cXAxUUtZTXRUVnpYVkNuNjFialdQN0NqQXo1MmdNL3JDVWJ4d1VlSWZmelZxOXZERnBIOHo0K2NuU0I5d0Q1TU9yMnBxNUpxLzVCNU8xa3lnbi9FQUI0NGtNUEdwdVUySGJadVFST3lIaHlpOEo1blFwM2ZUcTU5YTJka0svc3l3M0gvLy9RMGRtS0l0L0cyTlQ4c3BvR3RTUnRTd1lOWk1rbnE0MHRwWGZyZUtSUnNPc25yZWNFREY1SkVYY3V0RU14UGZiTnVsZk9xRUNidzRQa0ZaSWdVS0ZIVFA2cEhsdkZZQ1RQTFEzRnJxYTRLQTZEcEc3Z1pOcTFlVFVBUG9HZVNQcGFuR1Q4MlFYbEVFNjl2WExxcXJxOWh5Sklmc0dzdWZhRWtFVkY1ZWdJaEtyMjlSSEM2cXZCQzFJb0pLaGRncTFWelU2MEVFMFV2djRqbFdvT0JQREtmVFdkQktxTFh5dFFteUlBZzBCZy9VZ0N4SlVzNFpPYm50SnQ3Ym1jV2NTWmQxK3FjYUx4MzJrbkpXN1M5aDYvSjFUSjh5aGNjOTZHSCtzUEMvZ011M0xnSGcwdDNMVzN4bHZIRXhybGJGMDJoTnhUanF1MTBBOVBoNGg3S3JGZnpwWWJQWml0clIyTnBOK1JBRVFWWURzdFBwek82MllKUHN2UDdGYWh3SnFTem8zem5OeXJRSmFVeHovMzlaN21FbXZMZWQ2eS9vU2F4R1dUUUZDaFIwalByNitxSjJUTkRUK3RsRXR6UTgyVTNGa0U5WHJXYXJHTWNyVS90M3U5VlZhSFFrVVk1NlRpbjg0QW9VS09nQ1NrdEx5K2lDajYzUkhCVUJ1YXFxS3F2cmw1QkpYNytleitwQ2VPZktGUFJpMTQ2cHJEYzMvWloxN0NRRittRDYrQ2dMcGtDQmdzNlJtWmxaNFNITXBFNU1VUVJCRUx3QnJTUTVpd0d2VHE5Z0xtYjBvaStvMVhuaEpib2NkZHJRWG14Zk9BR0FKOS8rZ1BSaUcxVm1CLzU2TDVJR0QrUERHUU80NzVYMzJPUHd3Vjhqa1ZjcmNlL3NxY3pyRS9LYlQ5QnZ5ZTZoUUlHQ3N3S3JJSWpYNG1walVJK0wyYU5PRUlSNjkyYzJRUkFjb2lnNlZTcFIxbWcwc2lBSWd0NHQyTFlBeWVkdWJCSmwxZldZblFMaEFiNTQvVTRKK1lwZ1U2RGdmd3VTSkdXb1ZPcEZ1Tm9ZZUFvMms0ZGdjN29FbTByV2FEUnlZNDZCTEVsU3BpaUs1MUN3aVlRRytDbXJwRUNCZ203QlpyTmwwZGEzMXRySEpudVlvWWlDSU1pQTdIQTRNcFVwVktCQXdmbUd1cnE2M0hZRVdwT1ByWFVPVzFQd0FKRE5adk5oWlFvVktGQnd2dUhVcVZNRnJRU2FrOU9rZkRRS3VjYVlwbno4K0FsRnNDbFFvT0M4dzlxMTYwcmNnc3ZwSWRUYXBIczBtYUdpNEtvOEFPVFUxTlJ5U1hLZUFIci9wcU4rNTlLMm4xMXdOYVRNVTFaVWdZSS9PV1JaL3VYUlJ4ODF0elpEM1hSRm5wcWFoM0FUbTRyZ1pVQ1NKR212S0lxOS84Z1Q1VldUaTZvd0U2cTcxNVRXNzlRcFJNY0pVQ3NzR3dvVS9GYXcyZXlIMnpWRFpTUUVXUUpCUnBaQmxtUkJsaEdjSURqa3B1QUJnR3kzMi9kMWZpa25Pek1PczJqbEJ1NWR2b24zOStWaWE1YXZaT1hsOGVtMnZieTY4U0MxclczbC9CeWUrWElqOTYzWXpFZVpoWCs2UlNyZnQ1bXhUMzdSNHJPVDI3NWwrcjlXdC92M1A2NVp3ZWpaZDVFODYxSDIxbmg4NGFobDBaUC9ZTkFWZDNQSjRxOS8yNXR3RkhQdFRROHk5SXFGWFB2R0QxMCs3SVVuSCtHL2U2dTZkYWxsLzNtTjBkZituZWdaejNBMjJWQy9XN242LzdOMzduRlIxZm4vZjU0ekY0WmhHRVlZWUVSRVJGSkRSRU15SkRVemM4M016Rnh6eTh5MXNqSXoxM1ZiYTExei9mVTF0MjI3bUd0bWRqTXoxOHpNVE0xWU5EUFh5c3pJQzVrUklSSWlJZ3pETU16bGZINS96SVVad0d2cVZzNzc4VGdQWmM3bDh6bm44em12ODc2K1BwelI3SE0zc0t1b2xCTXRLTC9talpmSkdUV1pubVAvU2NWNWUvQXU5dTByeHRhTW4yLzVpMDh6NS8xdnoraEtCYXRmcCsrNDZhUmQrd2QyMjg1aEZ4VWJVNmJQNDREOTNKRUlIcmZhRHJaaWhnYjcyUENUVFVwSXlGSlQ4QUIvWk5ScXRlNDZkZWZyV0xPcm5DNnBIYmdob3gyYnQrUXphMnVKYjJjREwzLzRCZnNyanJCbzY3NFFZRHRXZG9EZnZicU51TGJKREwwMEdkbmx2dWlBemUyb3AvUm9iY2h2c1IweXVPdnFMcTBjWGNmc2Y3N0h6UGxQc252Vi81RWQwN1NuL0xPUGVMazhnWjJybjJYOXd6ZGUySnRRVzFqMnl0K1pOeXFMR3J2cjlFSDlhQ1ZXdStlTW1ycjFuc2xzV3pnSmRhMlZjL0dxNUc5NGo0SUR4eml3NXh1cTdjZVovL0phcWs1bkd0cExHWDcvaTdTNk9JaTltQmt2RnJKczZiUHNYdlpITE9mdHdkY3ljZEpjaXBvUjQxaXJxNm11ZDUzUmxRYU92SjF0Uy85Q2txdnV4RVN4WnlHRm05YXlyMDBXbmZYbmpvNm1xUGpRRDgyMHRXQWZtNUQ4NE9ZRE9GK3FoMUFIMjZtalI5K3lhL1BtQWh0dzRtSW4yY1RqNDY4Ti9ObkdmcFQ3ZHY4QS9WTUJQZjgzWVFUVWxyRDI2MDlEVGx1eGJSZlhEUnJJdmJsSkZ4V1lPWTRmNXNtWDExSmNyMlZvdWk3a0M3enN0YmNvc2lwWUxzME9PV2ZudHYrdzVzdHZLYXgyczNybFcyeFRSVEx4enB0SmliU3orTVYzMkxYM2F4eFZHdVk4dDR6WWpwbE1HOWJ6WjNHdmJsc1ZpMWZtcy92N0NoU2RrZEUzM2NEZ2pQZ21jQ3Y5aG9mbXZJbE5uOENVMzQrZ2E1eTMwTVYrL0RBTDN0aklubklibWJsOW1UcThGNmRLZzFZYWpyTm8yWHZzK1A0WXNZbUpqQnM5Z3V5MitwTy8wQU91WXRuS3RiejhTU0ZibERVOE5QNG16S2Z3TEd6NVlCMzVYeGRqclQvTUU4OHRRNC9NcldQSGtORkdKdi85dFd6Wjh5MWxqZ2FXdlBRbWVsMGMwKzYrRHRNSnI5YkkwdGMzVWVPcTVxQTlnYUdkbkt6OC9CalQ3NytkakRnTnV6Ly9oQlVGZXlpdmJTRHQwaDVNSFhNMUpnM3MvdTltVnUwOFNJbTlua1dMbG1IUlNBeTk0VWJ5VWcwK0JiNktKeGNzWnM5UkdELzJ0d3k0cE0xUEdFUTd5OTlZdzZadmptRHBlQWxUYnh1S3hRZFVaVVc3ZVdMRlJ5aHRraG1lRlk4anRoUERlN1FMV0hLTC9sM0FyVk9mRHJIdVZpeC9CMk5xZTlaLzhDbTZ4STVNLy8zMVdIeDFtRFVsKzFtMjMwbU85a2VXRkJTUjBPa3laazY0Q2owdTFxOWV4Nm92ZnJDOXNXSHJrV1phbWdkUWhOY2M5Vk9EQzBsQ0tJcUNyY0dEcmRHRjdITzZDVUQ1NktPUEZDSEVqak41RHZzcnEraWNkS3JTS0JkN1MydUpFY2U1Yy9GYjNQcnlCajc0b2VaaThCQXdmZHBzRHVxN01HbFlOc3ZleVEvYXB5STdweWRkdFVkWmxCK2FRcGpjSVowaHVkMHdTUkhrNVdZekpLODdSZzJBaHQ2OUx5T3ZjeUlHY3lKRHJzeW0vNlZ0VDlvRDY2RUR6Rm40SnJPYmJadUt6djNpWk03cUNxcTFDWXkvWlRoais3Vm42b04vWVh0Vms1YTI1SjB0REJvMmhOeW9IeG55aHhleEF6UWNaZFNFUjZtTTZjeVVXNitoWk5QclRQLzMxNmRzYThuOHAxaC9KSnBwZDl6STBPNEpWQjF2T09VNXhRZjJzK09IT3BMajQwblFPZGoweWQ0V3BsMXpTZXQ4S1VONlg0Sk9ZNlQvbGRrTXViSW5DVHJ2aTVuZTlWS0c1S1NqMHhrWWVHVTJneS92Y2dvYTZrYVd2dkltY3FmZWxIKzhuTVY3dGVSR1ZmREV1MThCY0xDa2dwd3I4NWcyZGdnY0tHRE1zNXNBU0VycHhKQXJNNGpWYU9qZE81c2hWMTVHU3BzbTZGKzk3aitrOWVyTHNJNkMwWDk1aVovQ0xmSHFNLzlnZm1FOUUyOGRSdXlQWHpENHJ5dTg2bEZ0TVVNbnpTY2w5eXBHOXpJeWJmWjhWbjhaWk5EYmZtRFRnU2o2ZG9zT0FiWlZiNzdCak5jL1ovU282NGl0M01uSXVVMnVrNW9maXBqOTVIUE0vMjhOSTYrL2lsU2RDd2RRc0h3SlU5NzlqdHQrZTkwWFRwZGJhY1VFOVp1aGlpS0VrUERxYlkxdUJZMUdUWXhlRzRpS0JzRE43WGJ2MEdnMGcwN25JWlIrdjVmbjkzcDRjZktscC9vTVlITzVXYi92Q00rUEdZYXQvQnNtdkxhUmpnK040ZGRNRHE1VTdHWEY5M0hzZVdrZ0ZobG0zdDZmVVIvNEg3ZE1ScmNNNU1PNzRmdlE4eXp0TzJCcHI4T2dpU0NuVndhWkFhMUNRODhlR2FqTGQyTW9qNlJ2ZHNhcExVZU5sZ1J6U3gzQ29EbjNOVzM2bEV5bUQ2L2hzMisrd3laTVpDUTQrR3hmTlhuOXZWcmJtTnQreStEc1M2RG5IYno4MW4xc09UeUoxRDBGN0V2c3c2clJWeUFEYys0Y1NzYlRXNWwvUy9lVHRsVjkzSXErYlF4cHFSM28yU1h0dFBvbkd5ek1lK1ErWHA3N0RFTm0zQWRGM3lPZndtcEs2ZGlKbERnM1dtMDB1ZGtaSWFabWFxZExTSTJwUnhjUlRWNTJ4a2swdGVEdldSeUQrbDJLODBNelNxL0xHT0NwWjlVWDNvL01xTi9lUlBHM0J5bjZzWmJNcnFuTVgxY0VEQ2FoWFFvSjdmUVlOVnF5c3pQSWFhYVlEaHgySFNQN1pNRGwwY3hlT0k4U0oyU2NWZVZmRFV2WDcyZm1xNCtRbDZJaHI5TTRsdlNmeTI3N3JjZ2ZmNEl6YXhEVGgzaXRnd2xYZjBoaDhFZnR4ekxLWXhKSWFVVUR2dmZPMituZlBZYitLV05ZK0p0RkZEOTZFMm0rNCt5R05CYlBIT00xRWZNQUZKYS8vekZUSmovSFpSMjFlMW94UXoyQVI1Szg0Q1lFSUNIOGE3cW8xU29pSXlKUSszSS9oUGNnSWVycTZqNkxqWTA5NVNNNDltTUo5N3oxRlhQdUdFSG5xRlBaMUdyMGFoalcrekpTalpGZ3pLSlAxSFkrSzdmL3FvSE5XVk9MclUwY1p0L2pzY1RHQXhkMlVUQTVRb2ZGM05JME1lcFBIZDFkdHVCSlpxN2REOGc4OGR4OFJuZUpQUG1IYmxjK2cyYSt5NUJCdVNSRXFhbXllM0M0bS93L3lXYmZ2SktOV0dKY1ZOWTBJbGRXWWozNERTTWZQQlE0cm5mSFMxSGdwSFJZOTk1L1A0OHNXRUgyc05mUkpYWmsvditieXNDT0p5L1pTK3ZVQVlBaE4xOVBFbURzMnZIQ1R3cFpqVm9HV2FWQzFraG9aUlgyUmdFME1IUEtJMndScVF6cVpvSGpWVGhjcHhlQk54dDk5NjFXb1ZhNVVjUloreEtvckRWZ01mdElFaU5OSkVUWktEOE82dG9hTE9ZbVd2K0UySmpRanppZ3lGSXJGOVdRbE9BN05pYVdCTWxLcFIzU2ZGMU83cGpjek8vVlNFVlZJME1zSmc2VWZGdmNHcWdGKzllRWQwT1NaYlFvMURjNHNOa2RoUGpZQUdYU3BQdDNyRmp4WmkwUWM2TDdyenQybUR1WGJXUHltQnU1eXFJL2pTZW1vV09pQVpmYkhYZ01MbytFUnY1MUwwMm5qVFZoUEg2TUtnVXNNbFJVSGIzd1ByN3FvNnovNlBNV3p2Y2hwbFF5MjBhZjlOeXhrNmN6ZHZJSjdrMmp4dUVLRFFhc2VtY0RJeWRPWmQ2SVRvQ0w0aTN2aE93dnE2b0N6S0JZcWFqVmtSUWJRWEpDQWdsWmJkajQxTmdUYURncVpMZW5SVVRTMUw0ekMvOCtDL0N3YlA0L21QbmFGcmJQSG41YXo2UnJ0elBNYUpJbFpNVnp4Z0VNbTdXV0tyc2cxWElhdXR5UGUxbjRUUnlsSHp5SUFTaloralpQZkZFU2RJQUUwcG12N3VhMDJ5Zy8za2h5dXppYWtjK2pWU2s0Z29kUWJTQWh4a1pGbFF0U05HQ3ZvYkxlUUZJYjBKbmpLZDNXRlBNdHF6Z0tRZDhSWFdJOENjY3JLVmNnVFE1MVE1VWZxWUVVRTlSV1V5bU1tSU1nUTI0QmhoRll6QkdVVjlUVVB2cjRNMlVuQUxXUWtpclpWM0VRcWRQU1Jxc1JHaFZlalMxSXhNcVZLOTNMbDcveHNTekx3MXAzbDlVeCthWDMwU1Yzb2Zydzk3eCtHRlNSSm03dDZhWDUvdVNyUFJRZnE2TFIwOEE3bnhTU250aVc2OUxqdWJIWHBVd28rQzg5alRuVUh6N0k1NHFGdjdhTCtGVURtNXlRd2EzcHg1anh3bVltWDJIaXNUYytob1MrWHNDcFBjcTJmWWNwUGZBajlxTnE4dis3RzFOQ01qbWR6aTJWazZsVGR4Yi9yZnM1djdlczd0MG9ldWtkRm1mcFNVMXV6K0FlSFVocGw4Q0tyVnZZMlZWaTM4Y2ZzUDRISlVRalgvbkcyd3hPR1UzbHArOVQycUVmZmR2SzZFMERTVnYwQ05OZWE4ZXRWNlJRV1ZMTUhuc2JIaHFaNHowcHFoMEQyaDlqenZNYkdOekp6TUNCbHhPcmhsWC9YZ1h0dXRMWnJHYm45NVdrWjE1ei9nWlNuMGhYZFJrTFZueEVYdHNvY2k3UDRYUys1eHZmWE15WWRSNXM3ODA0OVJKd01mRWtPYjVqMlVkN3lORTdlT0tsRHduTmxUZVIwZDdEb3FVYnFleG1KaU1yaTdRMnA3WTNDemU5emVWemQvSHRaODhTdW94U0RQMTdSUEhVb3JjcDcyVWhMNjhQeVFZVDQ0WmV5bVBQTGlYMnp2NXNXL1VtdXY1WDAxTVBjcjkrSkQ4OWsrbXZwWkFUV2NXcm54NGhOM2h3amVrTTdsakw5cUlHMGpKQ05mdEZMeThqTS9JM2JGKzFrdVJyQjVCK1VrVlU1dGJyKzNIUDh5OTlldkQ3OG1BejFCMENic0svTXFXdlJsUW8xRHNFa2lTanVEMm8xR3ExSklSQUNDSDV0SC81NFljZlRsQ3IxYTM3MlJRWHg1MHFFcU0wT0Z4dUhDNDNqYktXM3NsZU0rT2JIMG81MUtnbUp6VWUzRzdVa2RGa0prUmpUa3lpbTc2UkRWLy93STlLSkErUDZFY25neHAydmRteWpiYmRJYW43ZVptampkWGxLSFZIMGV2MVozUmViVzB0MGRIUnlQS1poTEpWRE9pWHc0R2RPL2pQL3FQY2Njc3dPcVVra2R1NUxiYUtVbFordklkYUtab2VTVkdVVmxSaDE1ckk3aGdNYkZwNlpYY21xaFVOUHlvdWdaeU84Zjh6ME5hWlV4amMxY2dYUlQ5UXI0bWhkM29pR2QyekVPVUhlUHVqUXFJdTdjdTkxM1NrVTNwblV0cDRQMkRYWDNVNS84bmZ6QTlTSWd2K2ZDdUprU3JRUkhIemIzTDQ5c3N2V2ZmSlYxUTZ0UXpzY3hrZDR2UUJOOFkxQTNMNDhidGlTcW9hNk5HakM5RnFzTmRVc09tVFhlUi9mb0NVN0VITXZqV1hpUE8xNkkyazR6Zjl1MUY4c0pqaThtT2tYWnBCZkdUUW9HZ005T21SU212dmEzeFNDbGQxVHdreXExWDA2SkZPSkpEY3NSUEpNVnAwSmpPWFhaTEc0T3kyckZ1L2xjL0xHbmhnd2syMGl6ZlRyMXY3d0F0L1ZiOWVWSlY4ejdlSGo1S1lrazU3azlZWFhPaElla0pVWU03a1pIY2gyRHNVYmJZd29OY2xOSGNrOUwzeUN1b3JTdmp1eCtPa2RlMUdnbDZpWisvZTZLdS9aK1htTDlFa1o3TGd3WnVJMWtpZ01YTFRvQ3dPZkYxRWpiNDkvUklhT0dycXlnM2RMWUg3U2hCVkxOaFZ6MjE5T2dhQ0J5dmZmSThieG81aWUvNFdHaTBaTEhqZ0JxSTBUYzlPWnpMVE96MDBTYVpqOTU3RVdnKzk4ODcydlljQUo5QUlPSHovT2dHWEgrQlVzcXlvSkFtMVNrWlJCRTYzQjZjaUllbDBPdG50ZGt0Q0NGa0lvUkpDYUV0S3Z1K2VrcEt5N1lLOElSZTRwS3IyMjg5eGwrOGpMdTdNS2c5S1MwdEpTa3BDSGE0OENNdEZLa1hmZkVkcXAwNm9uY2U1OWZkL1pPak1weG5mUGNoajVhcGgxTDFQTWVmWjJXUVlaTURKcUJ2R01YYlJDa2FjR2YwaDcrUnZ2Mi9rSCtiOVNDZ0htMDJDZWlRYUpTU25KT0dSSkVsUnk3TFFxbVVSb2RVUUVhRVIvdUNCa0NRSjRZMHZDRUJKVGUxWXBDaWVQVUJtZURqREVwYXdBR3o5Y0EzalpwZWhTSkVNSFRXSmNkMmJ1ZUUxSmxhOU5DZkVMNWpldFJPeFo3aGdreUxFdnBGL21IZXNtUm5xcG1XNmg1QjhPV3orSUtoS2tsSEpFbXBabGdueXN3WEF6ZTEyRjZqVjZsOGRzTGtqWW5ESHBrRkM0cG1ac0xVU0lqNFZOT0ZsdGNKeWNjckVPUzh3OFF6UG1mZmFXMmZjVHIydC90TVQrTlk4U0pJWDFDUUVrb1FreTk0SXMxcUxTcU5GMWtZZ1IrZ0M2UjVJa3VSVDJyeUlhTFZhdDhUR3hrNzV0UTJPUjJmQ0pVZEJ3cG5weG8yVkxrVDhKUkNtQmc5TFdNNnJmRk82Y3graGFSNXV3Q05KVXBER0ppRkpzcEJrRlpKS2c2elJJbXQxeUZvZHFnaDlrOGJXTEo5Tk1admp0eW1LNXpEUTdyemVSZmJ2V3Y3V3RudDRkTU1TbG90UWhCRGxsMS9ldTdTWkNlcmZmSlJGVWdocnJpekxnVTJsVXFGU3lWNWdrMlZaZUR5ZVlGTlVBQjZQeC9PQlNxV2FjRjd2Sk15N0ZwYXdoTVVuRFEwTlcxdlQxb0syRUI0MldaYUZIOE84d09ZRk43azFqYzJQakhWMXR2d1RkYURHYXVXSFk3WVRzd040UXRPZkZVWEI3UW5kZnZXaVZMTmk4U0lXTFZyRSt1MUZ2N3JicXlrdll2V0s1U3hmZHlFQzZFNEtWcSttMG5FUnZOMk9LdGJuZjNiQzNmdTJiNlN3TkxUV2V2ZVdOUlJWdEY0bFdsbThrNVhMbDdObXkrNW04OVBKWndWcldiNXNHWHRLbTdoNFBpdFlUNVh6ZjNQckJ3OSs5MVV6VUhNRDdsQXpsQllhV3hPZ3FWQ3AxRjVnODI4UTREWVNnQkliRzVzUEhBNTlHRFllZVBwVnJsKzBqajhzZTRlK1Q2M2l2NVgrQXVSRy9yN3NiZkwrOWdMcGMxWlNGampKeFVQL2VvMis4M3piNHk5ejZjd2xmRlFqZnVVelZNWmdNRkM2NHkwV3J0N3hpK3U5dTJRTG82YzgxZnBPNng0RzVWM1A5cUpTS2lwck9QK2ZLVHRQVEh1UXdvdUFPMkhkTTM5aS9iNFRFNld0WC93d3E3ZVhoZnkyOGRXL3MrMkF0U1ZHbG13aWQrQ2Q3Q2t0bzdJNjlPR3RuZmQ3N24zaWJjcktLN0RhbTJvN2JIdldNSDMreHYrSkdkcWpSNC92ZmVEVjNBeHRLcVh5RllZR1k1Y1gwSm8ydFUrRms1clNQaVFoU1NoQ0NBVlFQQjdQQnBWS2RWZlR1NnJobmxFanlHenZMUk5admY0OTV1Ui96WVpiZXdNcUJ1ZmxjdGVnQmdZOS8wVlFselU4K2NEdkEzK1ZGMzNKeU0zSDZXT1NmdVc0Wm1MWXJXUFJWWDlDWWNrSnRKN0tNbXJjT2xLYk02UW9Uc3BLeTVBTlpwTE1vVFdRRGxzMTVaVld6RW5KR0hYbkthOU9VWERVbExGcCsxZTQzVzZRWmRUKzVHUkZ3VnEwazFMTFFPYk5uTzZkV0tkMVRVQUdlMDBWbFRaSVRXNjZaNmU5aHJJS0swbXBLZWlDTCtaMlVGSldpU1hsREpkdVZKeVVsWmFqajdVUWE5U0ZkS0t5ckJTMzNreFNyT0gwQU41aHBjb0dsbGd0WmVVMUpDVmJtdTdYTjA0NmN4Sm1RMmc3MVJYbFdKMXFVbElzSWM5SEFSUzdsYklxRzhrcFNhR0p2YzVTNWkzWnljTGRyN1I0ZUJXbHBlak1MV20vRkxlYjZVcytRYTJXVzFoSnhUdDJZT2g3QzdPbVQwT1cxU0huYk4rK2czRlROak41Y0doKzVzRHhrNWlhL1FDbFU0YVFjZ0ZqWlhhN2Zjc0pmR3VlSVArYUFnRWZXOEFNOVd0c2FyVUt0VnFOMm1lUEVteVMrc0tqQ3VDcHFhblpFQmNYMXdSc1JKRFp2cWtVS2lVMkJzY1JmNkd6bXN2UzJrRnR5VWx2NEsyZGV4bVdmVFVYZFh4UnNURjMvQTI4V3VnbVJWOURsYkV2RzljOGowVUg5cklkREI1MEc3cjBuc2pXTW1MNzM4K0t4OFlCc09YVnYzRFgzUFZrWmFaUWV1QUFNNVovenFnc3d6bnYzaE9UaDdOKzV3L1lEbFF4YU1oMXFPVkVGcTVkUm1jZFBEWnhDSnQySDZibVlBMURobHlIbkhvVkc1Zk1QQ1c0amUvZEJuMy9DV3pOMzRKZWRqQmd5Z3M4TVNHUHRmTWZaT3FDcldSME5sTlUyc2lyYTliVE44MklyWFE3Z3diOURsMTZGZzZIaTVvZ2pxRXhtWkdNV3RYQXFLNVFzMk1KWGFkK1NzV09Gd0U0c0cwcG84Yy9TbXpuTEp4VkpReWE5aUt6eC9UR1hyNkwwU051bzhxWUJsVUhTQjN4S010bmp6MXB2OGZudHFYRW5FdnBycy9vbXRzSGEvRlg5Sno0QWdzbURhUnkzeVpHanJrZmJYSUdOUWYzTVhENjh6dzVjUkJRd2Npc2ZsUW1kQ2FXR2c1VW0xaTUvbTJ5TERvMlBuTTNqNnc5UWl5TjJLdUtjR2JjeWZZVnN3THZRa25CS2lvNi80YVFJWFZXTVduRU5XeXJTY0NFQTdldG1zRkRmSXB6NFRwR1RudVdvbDNibUw3OFc2WU9TZmFkVk1XVWtiOWo1OEVERkZmS0RCbXlHVXZ1TFN4NzdDNUt0eTVqd3B6WEtOcFZqcUg4TnRZOXBXUGNySmNZMTk5YkZvbXhKNE03bDdPcW9JUnBRMUl2MkN1eGI5LytMMDlpaGdacGJLRkJneVlUMUd1R3F0VnFTRTV1aDlsc2xxS2pvNldJaUFoWnJWYXJaRm5XU0pJVUtVbVNVWktrQkNHVWZVSW9vc1htckJQM1BmT1NXTGozYU9qdk5jV2k1NnczeGFGV3puSFZIUko1czVlSy9RMnRYTzhDYkVlT1ZJaERodzZkOFhsZmYvMjFhR3gwbkZXYkh6NTNqN2orankrSC9QYkRCMCtLeEY2M2lGcVBJb1J3aUQ5ZmY2bDQ4SVd0UWdoRi9PZTVlOFhWOXkwTUhCdmM3dTJYeFloWFByZjYvbmFLeGtiM1Nkdis4YVBGb20xaW9raHN0ajM2eG1lbjdIZkQxOHRGVEs4N1d0MTMvUE9YUmVLVjk1elJjN2lqVjVTNDVyNW5oTXQvL1FhN3FQMXFsVWpzZUpYNHZ0WjdIMSs4TVVQMHVuMnVFRUlSejk3ZFIvenU4VFhlOXI1YUlXS2tSUEhoajk1emIra1dJZDdhNyt2TGZ4ZUx4Q3Z1OUxiaktoTlh0NDhYcjN4UzVtdlhMWTRkcnhGQ0tPTFJtN3VMKzU3Tjl4MVhKVzdzMWs2OCs2Mzk1SDIrSWxHOHRkOHBYdnZ6OWVMMmY2d1J4ejVaSXJyOWRvNFF3aVorZjNrNzhmZjM5d2doRk9HcDNTTjZ0YjlVZkZIckhjL2EycWJydnZibjY4VHR2dnZZOFBTZG9sMi9lMFc5VUlSb09DaDZ0V2tuUGo3YTFONWJmN3RGM1BqdzBwQStmUEhHSTZManRkTkVvMUNFYUNnVlY3WFRpRWZmTEF3NTVzL1hkeEJQYnlodE9XL2ZuQ1Y2M1BGRXEvZjJ4K3M3aU9jK0xHOTEzK3NQM3lodStkdktDL1plS29xbkNCZ05EQWNHQWJsQU55QlZrcVFFSHhaRnlyS3NVYXZWcW9pSUNEazZPbG95bTgxU2NuSTcwdFBUeWNyS29rK2ZQbHg3N2JXb1pWbmxqeWhJc2l3TFJWRWtYeERCYjQ1Nm5FN25lMXF0TnBSMFRYSHhyN2MzNEU2L2duc3lUcjg4YWR2Ty9jUmYycFd1T2k1cTJiWHJTM3IydlFhakRLQmx3T0E4SHR1NUd5YjJKYk4zZnc3TS9UUGo1Ukw2NXZWbDVNaWgrSW1rQmd6c3k1eTdidVRBeU92b08yZ29RL05PenNsbTZYOFg1UlYzL1d4OGptUEdqZzJZWGpxZGpoM2JDbEQwc0dqdVg3elRxcXFJUGJ0MEtNQ3VuWHNZT01GTEdtREtHa0JQODZrTlh2ZUJiWHdtOTJadFhsS2d6VmlURWFoa3k5WUR4Sm8vWU1hTUQ3MDZqZHRCNGU0U2hxZDNQY2tWOVJnTWFqQWFNQmxpTVJqdE9PdzJzTzVqeTI0N2NzSHJ6TmpxTlJXZDdsTDJITFNSbmExang2b25XYmppUXlxdERtb3Fpa2tkZFhQZ2lqMXplNk1IMENXUm1sQkRWUTNnczhxcnE2c3dKWWV5Z1JUdS9wSzhBWGQ2dFRwZE1nUHowcys3VDlNWWE2S3E3TUk1Tkd0cWFyYlFzdElneEJTVkpFa0pyQnNhRWcwTjhxMnAxV2cwR3E4cDJzd2NGVkpUdHE0Q2VNckx5OWVucHFZK0ZCVHlaTVY3Ry9oWTdzZ3IxMlZ3MnJYSFNpTXJzU09ncEFBQUlBQkpSRUZVZHhZemNzUkZsdUp4aHNYWkNiM0hzRzkzTGdYNUJheGUramVlWExHZGZXdm5JZ01Ubm55WC9ydTJVYkJsQ3pORzlXUDN3bzk0Wk1TSkMwUXFkNnhnOEwxL2IvSDd1Tm12TVcxRTFvVVBwaGhia2c5WTBub3hZb1IvN1lZYkdUVTU5cFNQek92Vjh6cnRGRVZwZXRGUGVxS2VBVU52b25lQzk2OFJJMjRrSlQzbDlBWlA5akZFZU9FVFVGQzBaZ2FQdkpFVTJYKzltMG5ycktkOHkwSW1MUGlDL0kzdjBUWEJ3UG9uNzJSK1JSTVVxZVVUKzBXTkpoTldxN1dWUHNnWGRLUnNWaXNtaytHQ3RiZDE2OGRmTlFNMTEwbk1VQkdhdHhia1cvTUJtK3hQYUdzQ3R3QlZlQ0E2bXBiV2FaK2lLSnQ4c1F2ZS8vQkQvbDFuNXNXYmV4RjVCcy83NkEvZjhJbW5MY1BUREJjVnJsbGkyMUpjWEJMeWxjM092b3pkMi82RFZRRndzbVhqZG5KeWVnWW1sU0VobFJHM1RtRHhNdzlUc1c4L0RwOEQyV3ExazU3ZG40blRadkhRK0w3czJYZmdwRzJiczRlemZ0MTdyR3UyM1RXNDZ5bjdyZFhwVUtxcmZIMDhmVm4yeEJUbUxzMC9yV096K3c2azZzQlhKR1gySmpjM2w5emNYTko4UVlYczNKNFViUEdta3RRVWJtRlhWVk5IWXMxR1NrdThrY0VkMjNZRW5xMDZ2Uys5bGM5WUdZZ2FLdFRVV0lFRUJ2UlA1bUNGTTlCT2RrYm5Wb0gyOUZTYVRBWm0yQ20xeGdhdWw1bWVodEVnVTFGYVNrTFhYblJOTUlCaVkrMjZndE8rYkU1MkwvYnRDYVdLejg2K2pPMWJ0bmxYZzNPVWtiLzk0UG4zZCszWlEwNTJ6Z1Y1UDl4dTkrWVJJMFljQ3dJMkZ5MFRjNE55MTZTUVpOeGczNXBHbzBhcjFhSldxOVYrVVBORlIyVWhTUXJOelZHN3ZXR3R3UkExbUlZalBGN3dIVlpkQkFQbjd2ZStBUEZwZkhMdjFRRE1YdndxNzFjNHFYTzZ1WEhPUzJUMnVKelhidlJxQm05L3ZwOSt2WHBoa2k4cVhDTnorQVR5WHI2SnRLNXZrVFgwUHRZK05abVVRUk9ac3Z4OWNuS3VJa1ZucGNyWW40M2p2R2JYWnl0bU0vR1pqOG5zbWtKeDRXNG1QZktTMTNUQnpVUERlN0JMU1NmSjZLU3d4TTN5OVlOUHJtOW85U1FsbjkzTEs2Y1BaR3J2WjhuSnVneWpJWlZsQmUvUTlUUXV0V1BUVyt4Tzc4d2o0MDdOTUcvTUdzSGlTUjh4c0dkM3VtYW1VMVZ5a0s2ai9zYXJNMGR4MXlOL1orWGczekZnNjRzNDNZTGtJRk4wM01TN0dUcStINXV5T21NeFJ5RGpXL3RCbmNTaTVmOWd6TGlyV05ZMUU2V3FqRUZUbjJmbW1ONDhOUDhWeG82OG5aemx5VmkwRGc2V0NaWnQzVXJPV1ZIZzZabjM2a3VNSG5NRGE1L3FpczVaU2FtdEhmazdWNUUxZER6bUo2NG5iL0NuNk94VldCTFNUdnVxNllOR1lwaDJHd2NkaitGZit5ZHIxQlNHTGIyR25MeHJpWlZkS09ZbW1wK1haOS9CeS9uRkZPK3JRRmR5RTZzZTB6Tmo0WHNNeXpLZS9ZUzFIMkRqTGlQTGw2VmZrUGZqMEtHeVQxb3hRVjBuTUVPRkpNbEIwZEFtVGMydnJXbTFXcVJ1M2JyUjBOQkFRME1EalkwT3FiSFJpY3Zsa2hSRmtSVkZrWVVRYWtEN2YvLzNtUEhoaHgvZUJyVC9KWU5NWldVbFRxZUw1T1F6cXhUYnMyY3ZuVHRmZ3ZZYzE0cldWSlZqZFd0SnNZUytYVTY3bGZMS2Frd0pTWmowMmhiblZOdGxVcEl0cUg4bEh3bTN3MFo1UlJXeGxpUU1PbTN3RHNyS3FraElTVWJiN0Y1dFZlWFlNR0l4dDJJQktFN0tTOHZSbVMzRUdrSWR1dFVWcFRqUVk3R1l6NEdCcDFCUlZncTZXQ3pCYVRtS2s5S1Njb3lXWkV6Nk0wdkpXVDdySm5hblBjd1Q0M3VIdEZOWlhvYk9sSFJhdE80L1JiWXZtY2FUcFRtc25uUCtYVVpDaUxLYmJocjU1M2ZmZmRkT0UwV1JEYkJKa21USHk4UG1sQ1RKTGN1eUlzdXlvdEZvUkVTRWxvZ0luWWlNakNReU1wS29xQ2dNQmdOR281SFkyRFpJUFhyMHdHNjMwOURRZ01QaGtCb2JHM0c1WEZJempqWU5vR3RzZER5aTBXaW1ob0V0TEdFNWY2SllpMW02cVlUeG93YitUOW92V1BVcTZVUEdrV0k0LzE5TnE5WDZVa3lNNlFPZ2dWRHV0WHBKa2hvQWh5UkpMa21Tdk54cmFyWHdBbHNFT3AwWDJQUjZQVkZSVVVSSFJ4TVRFME5jWEp6WEZQV2JveXFWU3FoVUtzbmo4UWhabHZCNFJIQ0psZnZRb1VOcjB0TFNwb2FuWGxoK1BWTEQ4b1hMcUc3Rmoyako3TXVvQVJkK3pWYlptTWI0VVduL3N5Y3ljTlQ0QzliVzVzMWJkalh6clozUXZ5YkxrdkNibno2c0NqSkIxV2kxR2lJaUlvaU0xUG1CVFVXUXI4MFhIWlh4eGtZRDBWRWxQZjJTL1c2M2E3VXN5eVBETDBSWWZoMWk0dFpKazhPUDRYOGdqWTJONjBhTUdGRkZxRi9OQmJna1NRcXdlUkNvRFExbDhRakdMcjl2VGFlTElESlNqNnpSYUFJSEJLZCtCQmZHK3dJSkhyeVZDRytIaHlRc1lRbkxUNVdpb3FKUFd0SFdnb01HbnRZb2lwcW5lR2cwR2pRYUxWcHRCRHFkRHIwK0FHeWFRTGpVcitLcFZMSm96dllCZU16bStBSWh4Q2ZoWVFsTFdNSnl0dUx4ZUhiMDdIblo5eWZSMWxxd2VhaFVUV2FvRjZ2VXFOV2FGdHFhd1JDRldxdlZvTkY0YlZTWHk0dUFicmNiYjBXQ2dxSW9BWEFUUW5nQWQzMTkvYi9kaW5KbHJVdW1YUnRENjVFNWp3QlZzeUozajR2eTR6WWlvZ3pFUllZcHRuL09zcnRnTlRzT1ZJSXVpWEhqaDZNUFA1S3duRU01ZEtqc1B5ZlIxdnlNdVVwb3Nic3F4QVQxNDViZnQ2YlRlUU1KMGRIUnFMVmFMUnFORnJYYTJVb1F3ZDFpb1JmQWs5SWw4KzFMSDV3N01USENrMW51aXVUcGNkZlRKeUVTTDIzUk90Nzlyb3BLeGNTV3Y5MkN2eVQzeUtGdkdiOXNHM0dXZUk1WEhxVnpyenorT2FnTGNuaU1XNVh5SFRCbkN5eWE4YjlwWDZ2VFk1QXJtZnJRRzR3SUExdFl6cUVvaXJLdlg3KytlMXJYMXBxVzFzTy9ZSXNrQ1ZtV1dna2ErRTFRdjdZV2ljRVFoZEVZZ3h3UkVZRlhhL09hcEUzZ0p2dTBOam1Rck9zSHR1UGxoOXo1RDl6MDV1b0hiK2VoakFqbTVIL3Q2N0tYdHVpOWU2NmgrUnJqYjJ6OWxPNTVWN1BzOThONGQ5SzFmTHA1TzE4MVhDUUQ2ZnZYV2dWbEZhSDc3RFZRWEVySVN1ZUtBclp5MkxvTDNHN09hUFZ2QmU5VUtTa0d1ek8wQTdicWx1MmZTREx5aGpCMjlGQk9GUEYzTzZ3VUY1ZGdkN2JzWEUxbEdTV2w1YlRZcFRncEt5bW12TW9hZnJzdllxbXNyTnhZVm5ZNEdOU2NCTllMRFNtaFVrSzF0ZUNnZ2Q4RWJkTFdvcUs4MmxxYk5pYmtpQWdkV20yRXp3SFhsTUdyVXFtRnZ5SWhLSWpnYXd6Mzh1WExWd0xmcGNURzRHZ01wUzJLaTJ5WlFHalFhbEg1bDdPWEFMVVdnK3JpR01qK0ZwajJFT1FOZ3VHRFlJR3ZPRzN4RE9qWkg2Wk1nS3plVUZUdC9mMmhNVEJ1TnBSc2dTRkRZUEFZOE8waTF3eTdmUnlFZTFaQXo3Rk43ZVF2Z0FGallIQXVqQmtMMlNPOHY4OFlDVU5Hd3NneE1DZ2JKaS84aVdicTJtZm8zTGtYVTZiY1E5Zk9QVmk1bzlTM3g4bVRFNitoNzlBN21EcjU5L1RNSG81L2o3MXNCMzB6TG1YODVEOHhmdVMxakptNU5QeUdYNFFpaENpZU5ldlJMMDloaHJZb2VQZVZUWW5nOUE0dnNFVVFFYUh6SmVrYWlJbUpJVFkyRm5Wa3BJNkdCcTg2NTNScWZMNDJkZk1JYWJCSjZnRThkOTg5MFhyYjZCR3Z2L3pwZDdOSFh6djhsRGQweDNYWDhNRHJteGhmdkpmcVl6WGNPZnBhTHJsWWNsM2RFdFd4Z2owK1ptYUhBNHJYdzJOYm9YQVhtTlN3ZGk0ODlCU3NmUXllWEFrSDE4Q0lGWkMvNHN5YTJya05kdTZHRExPM25jQ0hKUk5XellHYUhaQTZFWjZaQkdlVnY2NVVNbTNTLytPeHRkOXdhN2FaZmF0bU0yRGFZNHpZdmhodHpXNFdyTEt5cGVwelVtVlFuTTZBdHJwanpWSzBBLzlFL3NKN3ZSRG9kSWJmOG90UWpoNDkrdDZMTDc3WTJKcTJKa21TM3d6MTBFVC9MVUlqb2NHZ3BpVWlRa3RrcEM2Z3JabE1Kc3ptZU9USVNEMDZuWTRtWDV1R1prbTd3ZWtmSWFrZmsyYiszNy9kNlZjVW53NXQwWmJQdnFCU1orR2VxN0s1NS9KMnZKRy9rd0EvNWE5ZFpNR3RRWnFWVGdmYnRvQWVtRGNUWnN5QWpidGhUK0ZQYjZyblVDK28rZHZ4UzU2dk9zZVVBcnBxYjNyMzJUbi9DaW0wWnpBZzI5dEl4c0JCcUFzL3AxUUJqT24wVDY5a3pMRGJtZnZNSW5hWDFRVEFNN04zZnc2c2VaenhrMmV3WlBrNmJJbzYvSlpmZk5yYTkwODg4Y1FYelVBdFdHTnJrZUxSSE5SYSt0WjB2a2lvSVZCMVlMRWtJa2RGNmRIcEl2SDYyclQ0bzZTaHFSOHFFUVJxQ3Q0SXFmdVYrYzhjLy91QWprdFBIUUJvWk9XbjMzTGJ0VmZTSjlYQzlmMzYwczFWd3FhUytvc0UyTUJvYU9rTFMra0pJMFo0dDNIVFlOVVRaK2F6VTl3dDl4bFBVUHNjWU1vNW45RWFPWmFsMi9jeWYvb3R5Qlc3R056N2NyYVdlVFV6THhYVFI0ekk2OHpXcFg4amIvUk1sUEM3ZnJGcGEydi8rYytuSE0xTVVMKzIxdW9TZThFWUZGeGg0TlhXV3ZyV3pHWXphclVhMldBd29OZEhobWh0VFVtNzZ0YTQybnpnSm5ra1NYS3ZXYm5pVFNIRS9wUGZrZ3BEaElvZnFtcTlMNlNqbGtQMUVnYmR4ZnZWN2o4QURoUkMxeHpJemZWdUtVRjE4SG9qV0N0RGd3b0FDVVlvOVRIeWJQdnNQSGZTWU1ic0xxZWtPcWdYU1psazZmZXhaVmNWQVBzSzhuRm5YZTdsSkhQYXNMcjE5QjQ0akJuekZqSWkzVUZSaVZjM1BERVZVMWd1RW0zdG05bXpaKzlzQmRTY1FmNjFWbEk4WkVKTHAwSzFOYjArc3BtMjVtVStVVWRIRzZtcnE2TyszbzdEMFVCall5Tk9weGFOeG9YTDVVS3RWZ3UzMnkxNVBCNmhlTU56UWdnVUVJb1FlQ1pNdUxQMmhUckxhenVtWERjUFRreGJOUG42SzdsNzFYdDhzVE9lbXFvcWtyTDZNRFJvN1lTTFRkS0d3c3l0a0pNRm1lbmVLT2JRaDJEdU9COSs1SHI1a2JPeXdKQUVHemRDTERCaEl0dzFDQloyQmJNQk9KL1VkdXBVWnM4YXlxMDl1NkEzcGJGaSs0ZGtHaXc4dGVDdmpCclpoK1daYWV6WlY4NkM1ZTk3MlYxckN1bWZlenZtakN6a21oSnFFc1l3TDlmTC9YdGlLcWF3WEF6eTQ0OC9ybjMrK1VXbjhxMkZKT1FHMFJLSmxxQVdFV0QxaUk0MjBxWk5HK0xqNDlINS9DL1NhNis5U21scEtSVVZSemgycklxYW1scnE2cXpZYlBXbnkvcWh2ZTY2SWZwMTY5YXRraVNwOTBudnp1T2l2TGFlaU1pby8xbUM3cytOM2NOaGc0cHFzRmhBZDVxWHJxNEVSUWRtNC85dW9yb2ROc29xcWtoSVRrRWZuS0d0T0ttb0tNZXROcEdjRUVweGZUSXFwckQ4ZWtWUmxKMlptZDJmMnI5L3Z3TXZpMGU5YjdNQmRoK0xoL04wV0R3TUJpK1FtVXd4eE1XWnNWZ1NTVWxKNFpKTExxRkhqeDdvOWQ3UHBicE5temJVMU5SUVYyZkRicStub2NGQlkyTUVXcTBUbDhzYklWV3JWY0x0OXJOK3lIZzhua0N5THVEWnNHR2owMnExdmhvVEUzTnlZRk5wU0lvMWhVYzZTSFFHU0QxRHJTczI0WC9mYjdYT1FHcHJIWmUxV0pKU1d6MUhxemVTbW1vTUQvcEZKc1hGeGUvdjM3L2Z6YWtqb1FwTnE3djd0TFhtdnJVSUg0T0hWMXN6R3IzYVdrSkNRZ0RVQUdTejJZekpaQ0k2Mm9CZUgwVmtwSTZJaUFpZnI2MTFmMXRRMUNLdytJTEoxT1k5UlZIV2g0Y3hMR0VKaTE5Y0x0ZUhsMXpTZVg4elFEdWxiNjAxdjVwR293M1FFdW4xVVVSSEczenBIZWFBYnkwQWJBa0ppY1RHeG1JMHhtQXdST0ZOLzRpZ3FTSkI3VXNCVVlrZ0N2R1FFaXU4aXk2NEtpc3JYdzBQWlZqQ0VoYS9mUG5sbDVzSVRjWU5BSnRQVzNPZlhGdlROS3NIYlNwME54cTl5YmdKQ1lsRVJVV0ZBbHRTVWx2TVpqTnQycGlJam80bU5QMGpJa2hyMHpTUGtyYlEydHEyVGRydWNybVdoSWN6TEdFSlMzMTkvZklycnNnOTFBelVHaytrcmZtWDFHdGVOdVduSkRwUmVrZFNVdHVXSHBISXlFZ3NGZ3R4Y1hIRXhNVGdUZi93SnUxR1JHaDlLU0FCY3pTNHpFbzBxeUYxUzVMazJydDM3MUxnOEs5dGtESXp1NFZwd2NNU2x0TVVJY1RoTld2V2JHMU5VMnVtcllYa3JiVVdDZlZYR1BpNTFwcW5kMFJHUnJZRU5vQ2twQ1RpNCtOcDA2WU5ScU9ScUtnbzlQcElJaUw4NEtZNWJWL2JaWmRsZjJlMzIxOElEMjFZd25MeFNtVmw1Y3F4WTI4LzNreFRPNkcyZGlMZm10Y0UxUklSNGMxWkN3NFl4TWZIazVTVTFHcjczblhJdFZvc0ZxOUo2ZzBrUktQWDZ3T0JCSzAySWxoekU0b1FPTjBlNGZZb1FoRk5yQjkrZE83YUkzdnBzL21GbTBNNEhOd08zdnBvQjlOWGJPTHgvTjBjYVJUaDBROUxXSDZGNG5hN1A4N0p5Zm44TkxTMWtLWDEvTlVGdmxRUFh5VlVSRkRBSUxnZTFJekYwdmFFVmxRZ0FhbDkrMlQ4Z1lTWUdDTUdnd0YvSFdtdzFxYlJ5RGpkb05ab1VLbFVJQVRDMXprL3VCMDZlTUM1WU1OL2x3UUQyN0wzMS9ONmlaTXhmYktJc3g1aXdxclB3aVUxWVFuTHIxQUtDd3ZmTHlzNzNMeTZvQkZvREFZMUg2QXB3VFdoVFZIUUptMHR0QjdVR0FnWXRHK2ZmTUkraEZRT0ppVzFKVDQrSHBPcERkSFJYcE0wTXRKcmtqWnBiVHJNYmFLRklUS0NDSzFHcUZTeThHSmJ3RmIyU0JLdWcwL2Q5N0hMNmZ5WDk4cU41Tzg5d2wzWDVwSFR3Y0xFRy9yZytxYUlyeHZDa3lBc1lmazFpZFZxZmJWWHI1d1NIM2dGZzFwd3dYdHp2aldmdHFacVJWdlRoVlFZbUV4K0U3VHRTZnNSQW15SmlZbFlMQmJNNWpoTXBoaWZTZW9GTjUydXlSejFSVW1GV3ExR0JOR0xOR2x0a2h0d2Jpc29lRVVJOFNWNGNDc0NsY3JYbkt4Q0pXd1VWN3ZDTXlFc1lmbVZpS0lvWHozLy9LTG1BWU9BYjAyU0pDZXQrOVo4SnFoR05HbHJUV1ZUM3B5MWFFeW1HTXhtYjhBZ01USHg5SUVOb0YyN2RpUWtKUGh5MjR3WURGR0JJbmsvQTRnL2tBQUtpcEJRYTlRQklrcEpDakJndXNkZE43VGkrUEhqTDRDZVBwMWlXYlc5a0tNMk94OTgvQ1UvQ0ltR1JuZDROb1FsTEw4UytmYmJiMWZQbURIRDFncW8rVFUyUDZnRnAzaTBXSEdxaWJuRFgrUWU1VnZoUFphRWhBVGF0VHQxT1dRTFlJdUppU0VwS1Ftek9kNlgyOVpra2dhRG15eEJuY01qZEhvOUdwV3ExYVJkSk1rVkYyZmU0SEs1WHJ6N3hpRjA1d2lUWHQvQXAwb2lBMkpWNkhWaFRxNndoT1hYSURhYjdZMnVYUy85SnNnRWJXeW1yYldhak5zVU1OQ0k1cUFXV3VUdUpaQk1Ta29pSmlibWxQMXBGVm5hdDI5UGRYVTFWcXVWK3ZwNlh5RjhJMDZuRTZmVGlhT2huaU8yUm93bUUycVBrOFpHQlVWUkVFSUlSVkVVRUI0aGtDU1FrU1RWSjU5ODh2SlZWMTNWYTlwTnY4a0djTmVWYy9XMmFQNFVIMTZwS2l4aCtSV1lvTHRmZmZXMXphMzQxWUpCellVMzE5VWpTWkxTUEJtM3lhOFdXalpsTUVTSEZMeTNiOS8rdFByVUtyQnBOQnFTazVPcHJhM0ZacXZEYnJmamNEaThsRWFPQnI0K1ZvY3FNZ3BKdUdod0s4SXRKRW10VWdraEZEd2U4TklhU1lvQU53TFgxVmNQTE52ejVhNUZYM3FpRmlkcEZkNzUrSE95Y252VE1ZeHJZUW5MTDE2KytlYWIxUTg4OElEMUpDWm9pMlJjMzZwVExkSTd2SDYxbGxIUXhNUUVrcE9UMFdoT0R6Uk95S2Rxc1ZpYUplNUcrMnBKSTRtUGk4T2tqd0NWQ2ttbFFwSzlxQ3ZMS2lGSkNDUkpTSkt2WWwvQ0pVbVNNL095N0UybEpTWFByaTg2VE0vZWZYbDZjT2Z3akFoTFdIN2hVbHRidXlRam85dUJrMmhyZm1Eeis5WjhBWU1BcUlVdzRucWpvUDVhME9pUVJOem1oZTVuckxINUpTVWxKWWpTeU82ak5Hb2tQVm54Y2JiWnFLKzMwOURRSUJvYkd5V1B4NE5hcmNiajhRaWZCQlpabGlUSm1WaFQrdEtNMy8rK215ekxnOEpUSWl4aCtXV0wyKzNlOHVpanN6OXVCbW9PbW5MV1RoUUZEVFpCaFplMUk1ZzhVdTh6UVUwK0U5UkNTa3JLR2ZYdHBBejRVVkZSSkNjbms1aVk0RXZjamNGZ0NDNlVid29tK0d1N1ZMNUFnbitwUG9JcUV1NjY2KzdqaHc0ZGVnRW9EMCtMc0lUbEZ5MC9mdnJwcCs4OSsreXpEYTJZb0k1bUptaWd3aUEwWUtBV3dacWF2OERkWUlnT0xLUG5OMEdiczNmOEpJME52SUdFMnRyYWdOWVc4TFU1dmRUaGJyY2J0OXVOeCtOQlVacUNDRUlJZk9BbUNTSGNnQ1JKa3B5YTJ2RnpxN1YyUVhSMDlOenczQWhMV0g2WmN2anc0V1Y5Ky9Zcjg0RlhNS0ExTjBIZFFSVUdvbWxSbHRCZ2diL0FQU3JLNEV2dGFFTjh2RGUxNDNRREJtY0ViQUFkT25Ud1JVaHRORFEwME5qb3dPbDA0bkk1ZzRETmpjZmpFUjZQUndvR09KL1dKdmxNVXBja1NTcWpNZWJmalkyT05LMVdlMWQ0aW9RbExMOHNzZGxzYnlRbnQ5OUZhR3BIY3hQVVJXalpWQXNUdElsakxiakFQWlNPcUVPSERtZlZ4OU5hakMwNk9wcjI3ZHNIMFJzRk0rNzZxeEw4eEpTYVU1bWtUcUR4d3cvemx5aUtVaENlSm1FSnl5OUgzRzczUjRzV0xTcWc5UWhvUUdNN21RbnFCeld0TnFKWmRZR0JtQmhUZ0k2b2ZmdjJSRWRIbjFVL1R6dER0bjM3OWxpdDNrVmVRclUydjBucXdlUHg0UEVvSnpKSkVVSklQdFhVT1d6WXNQTHZ2eTkrdmtPSDFBNlNSS2Z3bEFsTFdIN2VJb1FvM3JGang5by8vZW1odWxaTVVBY3RBd2FlRTV1Z1hrMU5wNHYwc1hiNE9kYThCZTdKeWNsblpZS2VrY2JtbDQ0ZE85S3VuVGNGSkZLdkIwMGsrcWlvSUdMS0NMUWFEWklzQzFubFgwaytoRzAzRUVpUUpNblpzV1BhenBxYTQ4L1Jjdm5NaTBhc3BYdFl2MjNQdWJuTzluMFhwTS9iMXErZ3pQcHpmNjZ3ZnR1RmFzMU93Zm90T0g4aGM2VzVmTFpwTlFlclQva0t1b3UvL3UveWZ2MzZselhUMWxvelFmMkp1TDdxQXE4SnF0SDR0YlZRdjVxL1pLcE5tMWppNCtOcDF5NkpqaDA3L3FSN09pTmcwK3YxZEdodjVxMVBDbm45NnpJK0tTbG4wM2VWTktpOU5ySWtQSlJVMTNITTdzUnFkd2k3UzBGV3FZVXNTMEtTVUJUaFhZdFVDT0VXQXBja1NZMnhzWEh2TlRRMFBQVkxBYUluSm85a1c5bTVJMXlxTE16bm1aVmJmdkoxeWo5YnhTTUwxMTZRZTFydzBPL1o4VE9QYTFjV3dqTXJXM2xPTytEZWVlZTJyZDByNS9Ga3dVRzB2NUM1MGx4ZW5uTS8yNHB0SnozbTJMSHFGOU43OU4wVHBLazVnamRKa2hxRFFhM0pCSldFU3FVV1hsRFRpaFBWZ1hyejFjeTBiWnRFaHc0ZFFsYWNPdS9BQnRDMlhYc20vbTRNODM4L2dnZHVHRVMvOWtiMjF6aUppb3JDRUIzRHBSM2FrWjZVUUx1RU5raEN3WVdNTEt1RUlvUUFTY2l5djFCZStCa0FHbk56YzVlNFhLN1hmZ0grQlFxM2ZVaFpqVGRvRWlyZUNhdzRiQlFYbCtJTW1zLzJtaXFLaTB1d3UwTW51YUlvcEE2WnpNYjVrMXU5bHNOV1JVbFoxWm4xMFc2bHBMU2lCZGVkdzFaRFNYRXhOb2Y3RE83SnUzNW9jVWtwZG1mTEY3U21zb3lLNnBZdmhLMnF2TlYrSzA0N0pjWEZWRm50NTNXY0ZBVlNoOERHK1MxL3Q1WEQxbDNnZG52L0R0bnZnSklTc0xlaWVpbDQ3WXFTNHViNzdUejV4QnRNbWpUMmx6VlhGQ2RsSlNYWVdoblg1dU5rdDl2LzNhTkhqK0I4dFJZbUtDMVRPM3hyR0toRU1NZGE4MkNCbnppeUtWK3RQVzNidHYzSmMrQXNxdEFqdUs1dlQ3NzZTc1p1YnlERmtzQ250ZFVZREJHNFhHNGtXY2FHZ3NmalFhMVJDNkZTUzJvWkhJMU9aRmtTRWlLUUFpSzhLU0JTWWVIWGNrRkJ3WXVEQmcxS1VLbFUxLzBjUWExdzNUTk1lK1pkQ2cvYTJYM1hkU3d4cUJrMjlaOU1IWllGd0t2VGIyUjFUVWNxUDlzTWVoM3F6SnZadG1RR1Q5dzdpR1c3UGFRbDZOaXpyNXpacjc3TjJMN3BnSU5aNDRhVFgvZ050cXo3MkxOc1JxQ3RSVk4vdzRvRGNhamR4Nms2V0VqSzZNZFpPMi84S2Z0WVhiaUdBWU0rUUVjMUZmbzhDdFkvVDRJV1ZzNFp5NnpWMzlNNTFjekJ3aUxHUC9FR0Q0M0tPZVU5clZ2d0lGT2Uya1JHVm1mS0R4UXpkKzBYREVuMzZpWExabzluc2ZVSSszYnVZdXJMLzJINnNFeHdWek5yL00yc0xGSkkwZHVwTnZSbTNlcC9ZZEZCeGU0MURCNzFKMUl5czdCVkhpUjcvTk04TlhIZ2VSbXJXZU1ndnhCc1diQm5XZFB2RDQyQmJVVlFVZ0ZEaGdDeHNISWx4QUk3VnNMNEdaQ2VDUWVLWU81eUdKWGpQUzkvQWN6WkJycURZTlZDalFtS2ZBdE5Pb3JXVTJEUFlVbWE3aGN6VjVTYWc0d2MvQnNxREYyUjdRMDRLcDNrK3ZZMUg2ZWV0LzhqUDgzMXpZZUhEeDl1TFZldE5STlVDYTRGOWE4SnF0Rm9SZE1xVTVHQk90Q1lHQk94c1hFa0ppYVNuTnllVHAzT2tidGRDT1dzdHVQSHEvbDQ4d2YwdjJVODE5My9aKzY3N3o1R2ovNHQxMTU3TFZkY2NRV2RMMGxETnNRUmIybExiR3diU1ZLcEpKVldLMHV5ckpKa1dRTlNCSklVSlVtU1NaS2tSS0REdm4xN2h5dUs1MU52d2NMNTJZNGNxUkNIRGgwNjYvTnY2eEVsM3RydmJQSDdLMys4WHNUM0dpVitySGNMSVJUUjBHZ1hRaWlpdHJZbWNNejNHNTRRSGE2ZEduTGUvcmRtaVc2M3pRMzU3ZmtIcnhHWDN6WlhlSVFpWEljTFJMdTRLOFFQbnBQM2EvOWJzNFNtWFQ5eHFFRVJRampFSDMvVFVmenA5YzlhOUtGdS95b1IzK1ZtVVgrS2U2cjlhcFdJYTNlRjJIL000ZjJ0c1VZY3IvUGUyeTNkVk9LUEwyNFhRaWhpNzc5bmlrNDN6QkJDS0dMemM1TkVqNXNmRVkxQ0VVSzR4ZE4zWHluKzhPSTIzL081VHR6eGo3V0I2emMyT2s3K3JCdjNpVDV0RTBWaVl1aDI5ZjN6VDJ1YzlyK2xpRzYzdGZ6OTIzY1UwZTJXME44OFJ4WFJLVkVSbnh6Mi92M2p4NHBvMzA4Ukx0LytENTlUUkdRN1Jldzk2djI3b2FIcDNDOWVteUc2Lys2eFg5UmNlZmZ4c2FMZmZkN24ySGhraCtnVXFSS3ZmRjdkWXB6Y2J0Zk85OTViK3dEd1cyQTRNQmpvQzJRRFhZRU9raVFsK3Q3aEtGbVdJMVFxbFVhdFZxc2lJaUprZzhFZ3hjYkdTbTNidGlVdHJTT1ptZDI0NG9vcnVQYmFheGs5K3JmY2Q5OTkvTzF2ZitPVlYxN200NCszY3Z4NDlWbmpVZlB0ckhtRFRNWW90dXd0SnJKYkg0YkZleWd2Sy9ORlNOMDBOdFJ6eU9yQ2toaUh4dDJJUTNpRUpNbVNKS3VFMS95V0ZDRjVrTHhxcXdUSWtpUkpHUm5kdmk0ck83UXdLU2twVnBLazlGOWFJR0R3eUZ1eDZMM1d2VTdyL1lKWEZHNWk4ak92Y0tDc0dzVlJSYVdjZDFyWDZwMlhpd3pJU2NtWW5kVlluWUR1NU9lazVWNU5zZzVBUy8rQmVTemN1UnZHNW1BcjNjbU1lZjlpOThFS0ZMZU5tbW9qVnVCa1hveGRPd3BJSFhRelhXTjluaU90RVpPMlNkSHZuZWRWWjVKU1VyQlZmUTdBMXEyYjBkcHptRFhqWVFCS1MreFU2QXFCUExMNzltUEc1RDl4YjhWbjVQWHR6NmhoZ3pqcG1sL2FybXd2Ly9HQ2pGdkpkaWhYdzVyNXNOWnJwV0hkNHkyUDhSZnk5QndLR1didi8zVkI0MUJaZlJTak1ma1hOVmQyN2Z5Yy9pT25leDl6UWc1OU00eUJmVTNqOU9sM1NXMlQzbnAwK3YxSG1nVUtnaU9nSi9DcnlhSnBCWGQvc0tBcEFtb3dHSHhyZ3JZaEljRmJCNXFhbW9ySlpEcG5ZM3FXd09aaHhYc2IyQk9md3hQWEdQaitteUtjUGxvamg3Mk9UNDdXMFM0NW1XakZRWDI5MXo4Z3ExUklzcG9JTGNMamNlTlVFRWlTZ2k5eDF3OXd5Y250UDY2cU92cGNYRnpjVENEK2x3UnNPcU9obWJPcGtGR2ovc3BqNno5Z1dIWUs5bDFMc1V6NDhQUUdSZzRhR3ZuTUhkQ0szNE9xVkRGaCtHME1XL1FoOHdkbm9xN2NnaVh6cno4NURDMEg5OC9uckZLQXJOeHJHVEhZOTAwYWNTUEdoRlFBc2tiTVlGL09jUEkzRmJCMDNuMHMzZkpIOHArNTk4UU5PQTh5SXUrM2xEVHJhTmRoRDdEaXNRbm5mT3lNeVRCeVJOUGZJOGRBUXZCK1krdm5tWTNSMk96V1g5WmNrZVhXM0hUQjQxUzE3UFYvdi9IZzlQdS9KN1N3M2RHS1h5MUE5UjIwMkxId3J3bmFNZ0pxOEFVTHZQeHFiZHQ2azNDVGs1UFA2WGllQmJBSjN2L3dRLzVkWjJicDczcGhrQVdlaGdZY0RnY09XdzNyZGh3ak9TMmRSQnhZcmJWNHpGTmlBQUFnQUVsRVFWU0JVcXVveUFoUjV4U1NUcTFHOGJnQlNaRWxDUUY0Q3hTOC9qWWhoR1EyeDYrdnFUbHVpSW1KK2V1cDlaUUxLd2FqbnFyS2F1aWFjT3FEcThzb1ZhZlF0MmNLTXJCK3pidTQwWiszdmhYdjJFeVpZemJKT2lmYkNyYVRNL1lQNEs2a3ROcEkvN3hNMU1DTzlldXBWRTU5VDltNUF5bVo4dytLcXFkNHRUYTNsUnFIQVpQaHhQR21BZjJ2NXFGdHhXVFBHdXZWeGhRN1ZUWGV4cXhXSzdISkdZeWVrRUZ1a3B1OEo0dE9malBhVkJhdmZZL212bTJ0NGFkOTFmVkdzRlo2dmR6K3laK2FCNFpTa0ZPaHQ0OUFvcXJxOUNaZTE1NDVsRCt6QVNlMDBFQi9ybk9sZDA0djVtM2JDcmRtNGF6Y3liWWlLd044KzZ4V3E2TkJpbm5sd1VmKzN6NmEwam9jUUVNSXFMVk03ZkJyYThIOGFxSzF5Z0wvS2xOdDIxcElTZWxBNTg3bm51bm56SUd0NFFpUEYzeUhWUmZCd0xuN0FWQkZXM2lxZHdxRmhWOXlTTkdpUG5LTWIreDF1QnZzdE5GSFl0YnBpRFhGVUgva21LaHY5RWpDSTRSS3JaWmsvTVNVSWZXa2toQkNOcG5hdkdXejFVVkZSVVU5OG5NQ3RnbVQvc0Q0Q1ZleDJHUmd6Q012OHRESW5pYytPR1VBVS9JZXBXL3VOYVFaRk13cDhZRUhYckZqQmFPbS93dDdWUWtsVlRKOSs3NVA1ckFIV1RSajFGbjN6V0wyTUhiUTFhaXBwdEk0bElMUjJhQlZtRDZoTThOeis5QXpXWStjMUI2TGZPcDdNbWFONE5VWkh6RTBwd2NaV1oycExDM2xzWldmTWpqOXhBYmtnSWx6R1ByWmI4bnNlU1VaS1NZT0hpaG04b0wzdVhlUWdiVlBqT2V4OVVmSlNJMWxYMkVSanl4OCs1UlRNeUhwekwvaUZUdGcxSFN3VjBGSkZmVHRDNW5EWUpIUDM1NlVDNE9BckN3d0pNSEdqUkJyaHVYellWeWVOM2hnTFFkdER1UXZPbzBQWGMraDVMa2ZaV3VaazBISjJsL0VYQmx5N3l4ZUhuUTl1UU0vUU8xMFliUTBxYVBMSHYzZGkvYy9zMkZYTTFCekJJR2J0eGEwbFdDQmY2RmpYd1JVdEJZQmpZa3hCZFl0YU44K2hmVDBUa2lTZE03ZlUwbUljNU5uYytUSUVmYnUzY3QzMzMzSG9VTmxIRGxTd2JGanh6aCt2SWE2dWpycTY3MUY5UFgxRFRoZFRzbnRMYUNYUEI2UEpJU1FmWnNhMEFCYUlZUU9pTFRiNisrSmpJejh3N202NGNyS1NweE9GOG5KN1M0WUdGYVZsZURXbTdIRUdzNTdXMjY3bGZJYUI4bEpDU0c1UERXVlpkZ3drSnh3WmhxUDIyR2p2TElhc3lVWnZmYjBzb1BzTlpWVVdkMVlrcExRQm4wNkhiWXF5cXRzV0pKU1R2dGFGMUlVTjVTVmdkRU1wak1ZcW0xTHBqSy9OSStWYzBiL2d1YUttL0xTY2t4QjQzcjgrUEVYWW1QanRqUXpQUnNBdSs5ZnI5WW1TVTdKbTJRZkFEWmZaWUUvVDAwMEFacUI2R2h2L1dkY1hCeUppUmJhdDArbVU2ZE9kT3ZXN1pTTHNweXRxR2JQZnZUY21HZ0dBNUlrMGRqb0xZNTN1ZnlGOFFxSzR2R1hXUGxEc1Q1UUZVMi9CZHU2WHMwTmdLKysrbXJQeUpFalVhdlZ2YzlGUCt2cjYvRjRGSXduY3BxY0I5RWJUUmdpdFJla0xWa1RRVXgwRk0yL2dib29JOGFvTTdmcVpiV1dtSmdZTktyVC82cHFkRkhFeEVTamFvWmRhcTJlTmliVEdWM3JRb29rUTR3SmRHYzRWQ2xadldrOFhFYlhIbDFSL1dMbWlreDAwTGpXMXRhK1BHalF0WnQvL1BGSFZ5dkE1azNDOWZuVkpFbHlOVE0vQTZEbU56LzlDeHo3QXdWdDJyVHhyVm5RTm1CK25tdS8yamtJSHJRdXFhbXBPQndPbkU0dnJaSGI3UXBRR25rOGlnL2t2R0RXQkdwQ2VKTWxGY1ZYVjRvUXd1VjN1cTFiOTc3MCtPUHpsanp5eU1QcWlJaUllN2hvcFlibEM1ZFIzWXFDYmNuc3k2Z0JQUW5MLzBqVXNZd2ROK0lYTzFmcTZ1cGVlK0NCQnpaLzhjVVh6ZlBVbWtETkd3SDFhMm9lZk13ZC9naG84d1JjYndUVW42c1d1c0pVV2xwSFVsTlR6KytRbk9zTGR1blN4Y2ZaNWd5a2YvZ0w1UDJhbTI4VFFnaWYxa1pBbFZNVTRXY0NrZncrdHpsejV0VEV4NXVYM0gzMzNYSkVSTVRkRitmYlkrTFdTWlBESUJLV2N6cFg2dXJxWHYvclgyY1Z2UDc2c29ZZ1RhMGhlUE9ER2tHVkJiSXN0UllCRGZqVnZJU1JocUFhMElSQVdrZVhMbDNPLzdmbW5Ldnpra1NYTGwxb2JHejA4Ylc1L0Z4dEFjMnRLWkZPQklHYlFBaWgrSWhBUWt4VVNaSjQ0SUVweDdSYTdaSTc3cmlEaXhmY3doS1djeWQxZFhXdlAvYllZL25QUHZ0c1BhR0Jnb0EvelFkcUlmbHFYaE5VYmhFQjlTL0UwcHd3MHB1cjFwYlUxQTUwNmRMbHZBUUx6anV3QVVSR1J0SzVjK2NnV2lPdjF0YmthL09hcEQ2ejFBOXV3cWVsK1NPbHdlQW1TUkxTUGZmY2U3U3hzWEh4M1hmZnJlaDB1bnZDVXpNc1lUbHJVSHZ0cjMrZFZYQVNVR3VRcE5CVnBvS1h6Z3VPZ0RacGFrMEp1REV4eG9CZnpaK3Ixcmx6WnlJakl5L0kvWjJ6NEVGcjRLYlQ2UUxnNXZINHdTM0ExZWJYMnZ5YkQ4YkZpWFJCQWJCaHcwYVhKRWw3K3ZUSmRXczBtak1PS1B3dmdnZGhDY3ZQU1dwcmExK2VQSGx5d2VMRkw5cFBwS25SU21WQkU2akp3ci9BY1dnRU5LckZlZ1YrbjlxbGwxNksyV3krWVBkNEZqRjNENThXN21YTzZueit1TEtBVjc3OEljQkQxVmhmdy9LUFBtWEd2emZ4bDNlM1U2eEVjY2tsbDlDaFF3b0o1amdhRkluRDlZM1VDSzF2ZFhsOThPcnlRcVBSb0ZLcGhUK0QyUjkxb1luRHJSRndQUGJZWTdVMzN6enFCYnZkL3ZTRm5oUUg5K3lrMm5HdXJ1WmszNjdkMkU0NzQ2YWNrVG0vNGNCWkVIOVpLNG9wT2dQMmgyMnZQc0s5VDY3NTJiK2tJM09ncUpYbnNXOFhaL0JjVDBmY3pMdHJORnRLN0QvcHVaNUtLa3VMS0trOFM3STc5d0dHWk45TTJVa09PWDc4K0F2WFhETW9QOGluMWtKVG95VU5VWEJodTQrR0tOU25GaG1wOXlYZ2Vxc0s0dVBOV0N4dDZkQWhoVXN1dWVTOHBYV2NPMkJUNmxpenE1d3VxUjI0SWFNZG03ZmtNMnRyQ1FBL0ZKZndkYjNNMWQwN2t4MHJlT0NGVlJ3MnRDVTlQWjFvblliOURSTDFIc0VSUllQUmFNUmdhRVpTNlFNM3Rkb1BibDV5eW1ZRWxZMkFZOE9HRGZWUlVZYVhiRGJiNDc2QnVTQXllK3pWRkpTY0sxN01TaVlPdllraSsra0RZV2xKTWM2emVHRS9XL1U0MHhlc08rM2piVFZIcWFpeS9leUJiZnhVU0dobEZrOGN5aGs4MTlNWXFSMUxXVkdSUnY5VS9VOTZycWVTdGZQL3dMelZoV2Y5b1N3cExqMVJ1WnpqNk5Hano4WEd4bTBKaW42ZURxaDVKRW55K0lNRkxjM1BVTEpJZjFXQm40SW9QVDM5SnpIaFhqZ2ZtMnppOGZIWEJ2NXNZei9LZmJ0L2dQNnBkTzdlazhlNysvZWtzbXZ2ZnJaK1g4MUQyWjF3dVFZU2s5Q085emV1cDZEY2dja2srY3pTUU5vSFByOWF3TmZtZHVNckpjVVQ3SFB6cFlRQUVCMXRYSGI4ZUxYZFpESk40VHpXbHBidVhNZmlOWjlTV09IRS9zeWo3RGJMNUk2NG0yRTUzakxwZlZ0WHMyVDUrMWpsTm95NWR5cURzcnc1T29xOWdrWFB6R2RIMFdGaWt6c3k3dDVwWktjWTJaMi9qRlZidnFERVZzT2lPWC9Gb3BVWk91NFA1SFUrZFFMdDd2eWx6RisxbVlTTXE1ZytiVHdtTmJpdFpTeGU5REs3aTc1SDBjY3hlc0lVQm1lbmdMT2NwK1krejg0ZHV6aGdyV1Rtek8vUUpmZGk1cjBqQWk5RC9zckZyTnI0QlJqYU1tckNKQWIxOVBYZFdjMlN1WSt3N2VBeGhrMzRJNlA2K2twZjNGWldMSnpQcHAzZmt0RDVjcVpPbXhRbzZONjNiVFdMbHI2UERTMFpBMjVpMnEyRE9SK3B1UHUyd3ZKTjNobmNPK1Rad0tvdFVHS0RSWFBBb29XaDR5RFAxL1h0NjJEWkduQWJZT0kweVBGWHVUdmdtUVV3WkRBc1hnQjJBMHlmQmVtKzRYaDE4UXNNSC90QzA3MmM0cm5hcXc2d1lQNGk5cFRVa2pub3Qwd2ROeVJRY3JWajNXSmVYZjFmbkZvamVjTnY0NjZodlZHcTlqSG4vN2QzN3VGUmxIZjcvOHpzSVp2TlpyTXNJUWtoaVRGZ2lDSEVpQmdSSXlJaUlsSkVSS1NJaUpRaVdxcldvclZLS1M4dlB6elVJcVVVclZJOElaNFFFUkVwSXFVVUVSQVJNVWFNTWNRUVlnZ2hoR1d6MmV6T3p2UDdZL1l3dXptQWVLSytQdGMxMTU1blptZWV1ZWYrbnU3dndoZll0YldDdXJLL002dm1uNlFWWHNhTWNZTlB3TkpjTEYvNENCdEx2MkxJMkl1amtheWhnb1VMRjFOV2Zhd2hQam45cVNjZWZXQTMwYldmTFRIbVo3dWdwbXR3SEFWcWtVQkJBb21KMGFDbVZSWDArdlpraUw1ellJc1puOVkza0p0K1Z0c1AvTWVwT0tJeUtUVUpnTHk4UEJSRm9WdEtOK0piV2toT1J1ZHJDeTFoOEFxREcwQWcwQ200aVM1ZG5Lc09IYXByN3RhdDIyM2ZsU3FJUFNPUDRjTnRiSC94RVlwS0xtTkl0cG0wRE0xUFY3NWhFU1B1ZkkwRmkvNlhaRjhsTThaY3hkSnQ3MU9jWW1icGZUZXl6bmNGODJhT283NXlEdzBOYnNpeWs5NnJIOE10RnRZc2VaSGlJVmVRYjRPczVKTklvRldxV1BaeU9RL2Uva3RXekwrRHlYTXNySjQzSGw5OUpZMldiQ2JmTmdwZi9XNXVHMzBaUzNkK3lzQVVPNE9HWG9IczJrMWxiUitHRDc4QzJSYXBYWHh4OWczTTIyWm53Wnhic1hwcUtOMVhIZ2EyTFM4L3g4Z2xEekVoZXhzVHh0NU1jZlc3WkprVkhweHlCWnZOVnpEN3pqc29YZmtvSXlZM3N1dmwyVkMzbFJIai80Y0Z6LzZkYkx1UGJYczB3Y3ZPZ0czYnFzZlpzUGRRek0yeks3ZmRONE9VVG1ablNqWU1Id3BUUjhQWWV5RXQrTjMwWGpEY0FtdVdRUEVRZ3NjMWFGNHZnNmxQd01KSGdGb1lQd3cyN1lFc1N4RFk1c0c2N1RCMU10QUlqUzdBQWREQSt2V1YzRGV2VUhmbGRISmNQZFdNSFh3RitWTWY0dlpSYVN5Yit4dG1laXdzbWo2WXh0MHJHRDN6RlpZdmV3aUgyc0R1YXMyTWxhMHBEQjErQmQ3eURjaFpGekI4ZUJIVzVCTTNDVjQ1N3hjczNKdkJvdnQreWJwRjkxS2hvMnR6cHY2TStuTm5mWEg5OWJiblI0NjhKbFQ3R1p1bkZscGFPd0sxVUZWQlorYW5CbXBkU1V0TEpUTXprMTY5ZXBLWGwvZURNZmx2Qkd6Vit6L2hzVThDUERuajdGaDdsV2ZXYkNUdTdBRmMyU011L0c2ZlBuMUlUMDhub2JtWjFGUTZDaUlFdnkwRWhLT2xIWUliYUlDWW1wcTJmdi8rL2E2c3JNeGJaRmsrLzlzK1VJNjBYcFNrOVNMTlppUy8veUJLOGlLSGJ1bkN2ekJ4MXF1TUtNa0Qrak4xNkZPc1dMdUw0aWtEYVd4b3dKcVZRazV1QVVXRlJib0xNNStVYkR0MnM0VitKU1gwUDlrS0d0bkt6TGx6S000MlVqajN0NlNNZWc3WHZQSFlldzFpNXFROGR1N1pqVnROSVQvZHpjN2R0UXdja1VYL2toS2E5cVNUYk02bHBLUkVCNUxWTEZ5OGxRVjd2bVJZbGhrb1J2Y3BCU052Wk5xb0lVQXhBMmY5bWIyMWtHWFp5c0oxQ3Bzcjd5WGJEUDN1K3dOUDlQb1pwWjdaNUxzYmFGS3NwR1JrMFM4M25YNzlUL3gzTEE0bmFXbHRiaU1ZVDBEemtyT2dKQXRzeHJhQWw1SU5kalAwS3lIcXVDNTZCTzU2QWdZSDkydjAwN0I2Szl3K05QZ0ZEOXk3Q0lha3gyeXNxWkpLVndiWitpSmIyZGJoY1MxYit5eGxHZGV3Y3Zvb1pHRHV2YmVTZjgrTExKbytHRzlESTZyRlJscEdOZ1ZaL1FnZkltc3lKU1VsN0Z2dHBLbFhVZlI1NnRoaHdQSVZHNW01NmlBREM2d1V6NzJISmF2L0VQR25IV3I4b0xYVi9jcklrVGZ1cDIzdHA2NUVpbGFKamtITllEQUlrOG1JMld6U2dWcHNVWHVvWENvelhDNzFRNDVUQnJZalgxVnh5eXNmTWZlbTBlUW02R2VoWU1PbWpieDZQSm5sTnhaRzNhMGxTU0k3TzV2RTR5NHlNOUNab21xVU9ScGFqOGJnb0RQbUJoSWFlUlBpekRQUDNQYmhoN3ViK3ZidE85VmdNQXovdmc1aWRYVXRaWXQveDY1blEvL1d3dENoMnZQcGMvL09mYlArbDM2NTkyUEpLR0xSc3FjWWt2Y05va055Q3VsQmVtSkp5OERhVkU4ajBMVDFhWVpPZnBUaFk2NG14VzZtd2EzZzlaMGd5dUN1cFVaTkl5ZXIvUktlWkljelBFM01aZ1ZGQVc5ZERZM2VHdTRjZDAza2UwWG5vSHJCMkdza3o4N2F6YXhKVjFCZTQyWDQxUHQ1Zk03a1RuWFhiSTRVMHRKaXZpSGJ2NU04cE9wYVdEb0xWdW1JY1QvOWhoeVFtOTZ1WXhsRi9qcmIrUkpYNlhiR2pQNDAvRjV4M2tXb1FQclF5VHc0cG9LcEl5K2syaVV6K2Q1SG1ULzlWS2RxRTNYMUZqS1NOYitmTVMwTlozQS8vWDcveG9zbjNyN214aG0zSHRLWm4zcFFDeGUxUzdSUjZvZ0JOUk1tVTNzTldFS3kzbTFCN2Z2SVZmdldnZTM0a1lQOFl2bFdab3kvbWt2U29wMnA3NzczSC83eXVjelROMStNdlozQ09ZUFJnQ09ySnozUEZLaHFJSWF0aFlBczVHOExtNlFkZ1ZzSURVWElORDMzM0g2ZnJGcjE2cCt1dXVxcXcyYXorY1p2UGRvaXk2Z3hZdmxaV1JrVVRmOGI5NDVxYXdVN2NvcFpzdUlOUUdINXJKOHphOEZ5dGoxeFp5UjJJNnR0dFBjN0Q5N1VVMU9yVUpSanhGdFhnOGVaUVRMd3hMTEhHRFByS1I2YzNBL3dVYm5tejdFNzNtYS9zYVdUSWRkUldlMmpWOWJKMVNlYTB6Sncybko1ZXUxYllmTlBQNTFHelpqTHFCbHpjZFh0Wm5EaDVXeWVPcGxoblpRRVZ1N1p3dHB0QjJKV2swcnhpQ0hZdjRselRtN2IweUFySGNZc2h2RUZYek9VNXNnbXgxSkhUUVAwU3VHRXh6VXIvUXhTQnFTeWZ1VzhkclpoWThyc2hVeVp2WkQ2MGxVVURmdzlVNllPcDVkUlA3OU9OampsSUQzRlMwMkRCOUtzS0hWMU5LclE0dkc4OU5qU2Y3eDl4eDEvY0hVQ2FsNmRXYXFQZnJZQnRVaGhlN3hPcWNPdTYxV1FHaXhzejZGUG56NllUS1lmUEtqMDlZSE5mNXdaLzNnVFMwWnZHZy91NTdtRFlJaDNNS0VvaS8zbGU3ajFyYys1NGRMK3JQOUFpK3ljZGNhWkRFaFBSUFUwc2VLamFqNnBidUtJVDJWdk55ZjJ0RFBJVUtOOWJEcFFDejBYSWF2VDc5ZHkyYlJFWHdJUmJBc3pRaUdFRUdQR1hIc3dMeTl2d2Z2djc2eTMyV3gzOEMwbUl1Zm45Mkw1b2dWWVJoYlFxM0FnK1ZsT3B0NzVLNGJmOVV0eXpQOURybE5tNTZiMTVJeTZoNkg1ZGxZKy9pQmtEeVEzemN5dWZWWDA2bitUM25BaVAwZmg4UVZQVU44L2cvd0JROGc1a1o5TjliSmd6aXhTYmgvRml2bC9adGpFMzJFRHNyS3plWEh0OCt3cWtpbGI5d1RyeWhYMEtsZTV1WDNZdmVRbFhoeVFqQ010aCtFREM4Q1l4WjB6U3JocnlxMHNtUE1yck40YTlqWGFtRHF1NDE0RWNsb0pkdzcxTVhuNkhHWk5Id1dOTmF6ZFhzWGMyYmZqSzkvTW92WFZEQ2twd2xPOWxRWnpEdG5PenYvTzhDbXpHWDRLdXBHN3QwS2pGMXcrMkw0Skdxd3djSEJFRlRnL0J4NWZBUFg5SVg4QTVDVEQ3VE5oNmpTd3pkZUNDbHZXdytEYm9kOEpDWFFhdzRhbXNHMTdPWU5IUld1SHRYZGM4MGRPSW1mdXBkeTFJSThKUS9LcEw5OURxVHVOZTZhTW9HcnJhbGFWK3hqY0w1ZmEzYnVRczdKSjFzM092RjVuOCtDS2Y3QXF3MDF5Umg2RCtuWG1Ncll4Y2VKdzVzKytuNno3ZnM2YVJZOG94eFhseVV0emUvL25VTnNlQlhwQTgwcVMxQ3FFYUNmNVZoOG9NSWFZbW9pUEQ1bWZOaDFUMDBBdDFLdWdUNTgrV0N5bmgzemkxMC9RVmYwYzlSbElUVERoOVN0NC9RcXRzcG5pRENmSG0xdXcybXlZUkNEOFdWSVhKemxKRmtTcm15MzdEMk5MNnNMWlRpdCtJWkdYbTR2VEtGQVVCVldObEZ1cHFnaWJvanF5Um9pOUNkSGgzZ2xKa2dRZ0dob2ExQWNlZUtEc3R0dHVyYkphclQwbFNYTENOMC9RTFI1eUZVcmRQajZ0cUNLK1J4OXkwNVBvMm5NQVZ4WTVXZlBxcTJ4K3Z3eHJabCtHWG53ZWlYRXlub1pLTnF6L0p4czM3eVNyWkRKemZqMmFPRGxDRVM0WmNTVU41WHY0Zkg4MXFiMzZrOW4xQkJORFRtWFVzRE40L3BtVk9NLzlPUS9kTTU0NEdmSXZ1QlJSdFlOWDMvZ1hDZjNHTVgxMEVUMzdGSk9WckdWNkorV2N4NEFzaWQwZmZVcWR4OHpGNTJtTzNZSkxSNU5ycWVPMVYxL240Mm9YRncrOWd1eFU3ZGc0TTNwVGtKTWEzdGMreFJlVEhDOVRNbW9jbHJvUFdiVnFIWjhlT0VhL1M0WnlUcThlR0NTRkQ3ZjlpdzNyLzBuWlZ4Si9XUEFvNS9WSS9FNG03dHN2dzBjVjBQZENjQitFNmhvNGQxQUUyQzRaQVEzbDhQbCtTTzBGbVYwaDYxd1kwQjFXdlFvN1BvSzBQakQ0ZkxBWUlyZjVBUU1ocnAzdFpYZnhNK2ZwWFV3YmUwblUrKzBlVjFNUzE0Njdpcy9mWGMvYXR6WlIzeHJIa0tIRE9DUFZqb3lYN1p2ZjVxMzE3L0JsU3pjZS9zc0RuSmtVT2VlWjU1WndWdHd4UGl3cngyMTBjbjUrZHFmSDRleUxobUUvOUFFdnJYdTNNbWZ3MVkrdFgvblkrODNIajNlazBLRlA1L0FGQVMwcStUWTIraGxxdmhJZnI1bWZpWW4yb0FTUkpoU3BCUXA2VVZCUWdNMW00M1FaMzVvZTI2bU9ZOGVPVVZwYVNrWEZGeHc0Y0lDNnVqcU9IR21JMFhGckNSYld0K0x6K1NSL1VNdE5WVlZKVmRXUW5wc0JNS0RwdVptRUVIRm9jOVJTVnZaSlVXNXU3aFNEd1hEcEQ2SEg5dFA0TVF3UGQ0NitrbEVMMzJKSXR2VzAyak5GVWY2OWZmdjJOUjAwTSs2Z1Q0SHdDMEZBbHVXQVB2bTIvVHkxV0YyMVVFcUhGdjBzS0NnZ0tTbnB0RG9teGg5NkI1S1NrdWpUcDQvTzlOU2JsbEZFVFUvZkpOQjZKMmltYWRqSklVSit0NkJacWdKcWZuNmYzYzgvLzN6dG1ESFhWQUUzbjg2WFQvbXVUZXl0YW16bkV6dkR4ZzdqcDBLd0gycFlXYmo2MzkvN1ZuME5GYXpadktmZHozS0xoNUxqTkQ3LytPT1BiN3I3N251T0U1M09FV3QrNnR2aytTVkpEa2dTcXI1TXFyMktnbENlV3F6NXFSZUxQTjFBN2JRQU5nQ0h3MEdmUHZrNlVKTjBqMUlZNENSSkNpMUNraVJKODdrcFFVQlRVVlVoOVBsdElaOGJJRzY0NFlaYTRLK2ZmYmF2eW1wTm1BNTBQeDB2bjR5OEl1d1o3VVF6WlNPMm45RGwvOXd3MmpNWVZHS2pIYnZxSzdmSHRUd3hNVHNrNDYxUDU5Q2JvTzMxL2d3QUFhMnlSMWJiTDJqWGZHb2g4ek1VL2RTWVdnalU4ci9WemxJL09tQUQ2TktsU3pEM0pRSm1Hb2lGbUpzVWZoM0wzQUJKVlNVVlZDa0VhbnJtQnFoQjlpWjY5ODVidlduVHBxcnUzZE51TWhnTVEwNjNFMksxT2JIK2hHQS9qZEQ5ekd3aEpTYlJUMUdVelR0MjdIaWpwT1RpR2pydnpxNnZKR2l2OFVxb3FYR2Jpb0pJOG0xSGdZSjh1blRwY3RvZXQrOU0zZU5VUm54OFBIYTdQYXpmRmdva2hMSTZPZ2dhZEpZd0U3WnRRd0FIaUdlZWVlYXcxV3JkMGE5ZlA4K3BLSVQ4Tkg0YVA5UTRkdXpZMHZ2dXUvLzFXMjY1NVlqTzlEeFJ6V2RVTWJ0T2VpZ21uY09pNjlJZUt6Mms5Nm4xT2ExQkRVNkQ0RUVISjQ5UFBpbmppeSsrb0tibUFIVjFoemh5NUFoTlRVMjRYQzZhbTV2eGVEenRCQlQ4S0VvZ0ZGQ0lEU29ZMFlJS1pvSkJCU0R1d0lIcWkzdjA2REZaa3FSemY3cHNmaHFuNjFCVmRjOW5uMzIyS2orL1QzbVFwY1g2MC9RbWFKVHBpU2JqSFdKcUl0TFEyRVRIUGpXOStSbk4xRTVIbjlxM3h0aWFYQzRPdWYzWUxHWmtQV2NLS05RMkhzTWpETmpNMFJtNnJTMHRIR3hxSmk0dURwUGNNZEd5V0N3NEhJNXdUOUxvNmdUQ3ZyaVk1R2FwSS9JV1NnSFJtNmFoMTQ4Kyt1akJnb0tDblRrNU9YNmowZmk5ZzV1cnVwUjNQcTduckt5VWsvK1J0NTVWYTNiUTgrd3p2M0h6a05OcFZPM2R5dnAzdGxEWFlpR25SOWZ2ZndkTzhiaHVYZnNpY2xvQjlyanZacmZjYnZmelR6NjU5T1dSSTBjZXBQMTZUMzBxaDFmcXVPZW5ydTdUSEdacVF2Rmh0am13MnhKSVRJdzBYd2xKRDRWVU9nb0tDazZZSnJWM3l6b0NYWHVTYUpaQWJlVEZKNTloNi91N3FQZlpPQ3Z6KzlOaisvbytOdFhOci8reWt0MStNNmx4QVdyOThUdzY2U291VEltbjV2T1B1ZTdGSFRnZGRqeXU0M1R2MVplL1gxZE1vZ3hQclZyRmtyTGpaRHJpT0hEVXl5MWpSakMxVDhjWGMySmlJbjM3OWtXV1pXVFpFSHlNTEpLa2Y0d0VGQ1JKd3UvM2kyQ0ZnaEJDb0twcVZDQWhxUEdtQ2swNkpIRGRkZU5xZ0wvVjFCelltNTZlZnBNa1NkOXFaNVQxUzJkUmtUNmVHU1BhcHJ6WDc5M0l3ZzFHUnBRVW5Qd0tQVlhNZjNBcGc4Y013ZmxmQkZ4NzFpeGtWV01CY3ljUGJmTlozYlluR0RUbE9hWlAvaGx5aXVjNzI0ZmE3Uzh6ZDdQQzQvZE8rSmFPcThxS0JYOWtWTUY0TXI3bGtMV3FxaDk5L3ZubnEvTHl6djVNeDlKaU83TjN4TklVU1pJQ1FxaXFFQWpaYUZJTkJnT1JFcWxJbmxyZG9hOHdkYzBpTVRFeHFxQTlVaWFsVlJRa0pDUjBmbCtvM3N6a1dTK3daY3VJa0ljUW04M0czZzFQc2JiQ3dvaUJlYWN4c01rbWJoazdtb0pNTFJxeWF0MGJ6TjM0TVc5TktNYnFUT2ZWMzk1RXV0V0U2bk16YWNGenZGU2V4OVE4T3hkZWNCRTNqRTdGTEVQTnZnOFl0bklyMS9RWlEyZjM1WVNFQkFvTEM5Rk9pSXpCMEI3SVNVRmdrd21LVTZKRlRQM0JvRUs0SVROaHBOTVlteXBKVWlpb29BS0JqSXpNelU4OXRleVRjZVBHamJWYXJkUGF2WHMyMVZQdlVzbktTb3M2ZUNyZ2RUWFE0SmJKU285Y0ZxcWlVRjMyQWFXK0lTaUtnaXdia2VYd3hDVjcrQXpXanpTMnVWamNqZlg0ekU3c3NvYzZ0MHhHaWozOG1XTHZ4ODd0eTl0VUFDbEtkQ21PYkRSR3ZxUDZxS211d1pLY1RyTE5FcnM1a0ZYcXFxc3dPdEpKdG4vNzJlT3FxbEJYOVFtN2ErenRIQWVGbmR2ZW85L1lXN2huNW5oazQ4bE5TOFhyb3JxMmtiU01tRDZsS3FpS20rcmFKdEt6TThLMXFxcXE0cTZ0WU10dWIzQWZ0RGwwd3VQcWRkSGdoalNubVpyYUp0SXowc0xmVVJTVlJScy9iVk8wcnlwS1ZDUlQvMzhCbXVxcWNjdjJObjFlUTJvb0IvZVhQLzIzZjZ6WThzRC9tK3NtRWlEUWwwZnB6ZEQyVEU5VmtpUlZWVFhyUktnaXVwbXgyWXdzeThSWnJKaGtpRSt3NFhBNHRNVnV3MktPSXkwOWc5emNzNElWQldadER0VTJrcDZSUmtOTk5iYTBMS3k2VS9Yc3dnY1lNdmwvSXRGNzJjSElDUk94Tkw3TDNxb083dEZOOWRTNUZMS3kwcU91SjhYcnBxYTJIa2RLT283WStSbzhTbzIxMWZnc3pxZ2VyS3JQUTNWdHc2bEVSZU1veUl4dzdpeG5FdDVEZmdDY1hTTXdKWnNUeUxBYmFmRnBGMXRlajRpQ1pvclRqcXo0YVQyUnBrM1FMSTJBbXlFRzVDS3NMY0xncEJEQVNaSWtpZERGSGdRNGdTNWkyZzU3VTI2K2VVcmc1cHVuUEZsZS90a0hPVGs1RXd3R3d5V2hnL24wZlQ5bnp1cEs4dE5rS3R6cHJGNzNFdm5KWmxZL2NpT3pWaDdBYmpRZ2U2b3hGOTNDdW1Vek1WZHZZZmlVLzZWbTMyNmFiSGRUc2NwSjl1QWJXVHByRXVCbDlxUlJiTno3R2U3Q1d5bGRIbXhWN3Q1RGJ0YlBLQ2pKWS92ZVJnYjBTMlBmN3IzTVcvMHhZNG9jckh4NEJvK3YyY0cyS2lmVk5XOFRKdmMxV3hnKy92Nmc0cWFQMHAyN1diVDlLSlA2MmFndjI4Q1k4Yi9DbkpGUFUwVVpRMlkreGlQVE5OYWtsTDZJWS94elRNazl4dFlhZ2FkUlljV3VIZlQ3TnFQNDNuSW1qZm9WWmRXbFZMbTNNWHozQzFoeUwyZnRrbnZBVmNyNHNiK2h2THlVR25VWHc3Yy9ROUhvTzNoa3hzZ1Rzcjh4TS81R2ZtRU9lMHRyZWVURk54azNJSXVtN1V2Sm1mQVlSU2xXTEZhRmZlNTBObXg4aFY3Mkp1NFpmejFiOTFWUVZhY3lmUGg3NER5SGwxOStCQ2QwZUZ3bkQraE9WZklBcW5mdkpHL0FoYmdxUDZKbzJ0OVpmTnNReWpjczViYUhuMmZ2OXUwczJkUEMySEQxazR1N3h2Mk1YZlVhdEZYdjI4M1FXYSt3N000UnFLNUtwbzI5anQwZUp3NWZQUlQ4bkxYTDdnMVdUTlJ4Y1dyLy81d3hyT2pORjVhdnErcUFwZW5OVUY4UTBIeDZsaGE2YVV0YXVFM0VtUXlpVlZFSjlmMDBHK0dyMm9Pb0JoUHlWNGVRVkxBbUp0RzFxNU5Ebi95SDF5czlaR2VrOFB3enk3bmwwWmM1N3p3THkrKzlodm1ibXJHN1A4V1ljUjQyNVN2cWs2OWs5OHR6Z3BkSFBTKytYTWJzZTA4MkZ1ZmxpYWN4dkRnQUFDQUFTVVJCVkh0djRwRjFWZVNtbUtsMEpiTnEvU3ZrT1kxc2ZmbytKai84TmdXNTZWU1hsVEx3dHIrdytNN2dmR2phUlhiZXJZd2RuY3FHWFVkUVhJM01XL01SK2FXUE1QemhMUlE1QkUxTnRlZzZScDNDNGp2T3JRdi93WkpQRHJmNXJIWi9LUmZPZjRVRDN0amZCWGg2NVVvbXYvbngxOXFXcWdiNCtPTzl2UGJhYXl4YTlCZnV1Ky8zL1BLWHYrUzY2OFl5Yk5nd0xycG9JRVZGUmVUbDlTWTdPNXZ1M2J1VG5Kd3NKU1VsU1FrSlZpa3VMazQybVV3R2c4RmdsR1haSk10eW5DUkpWa21TRWlWSjZpSkpVZ3FRQWVRQVp3TkZ2WHIxR3REWWVPVC9DYUhXTkgrNlNuVHRmcUhZMzZ3SUlWVHh0MTlkS241Mi83TkNDRlc4OXFjYlJMY0xKb3ZqQVZVSWY0TzQrdXl1NHFrZERVSUlWUWloaWlkL2U0VzQ1YkV0NGRmNjVkTlhab3MrTjh5UHZIZDh0emlyeDZYaXNGREV6ZWNsaVgrODN5aGVlK0FHOGF2SE5rVytjM2lMNk5Iak1uRzRuZlVKb1lwM0h2dTFPUGZxZTdUOUVXNXg4L2s5eEVOdmxnb2hWQkU0VmlyT3l6eGJmSEJNKzY3LzR4WENZT2dpbm5xM1d2dTkzeU5hL08ydlZ3aFZ2UC84YkpHYW1ocXpkQmRQL3J1Mnc5K0VscmYvK2d0eDFlK1d0ZnZaRzMrNlNWejd4eFVuWEljUXFoQ0JPbkZwank3aStRL3FoUkNxK09TVjJhTGJoVk5GcTFERjBmZWVFSWI0czhTT3cxNGhoQ3IrL011THhFMFByUTMvOXZQWDVvcysxODl1ZjczdEhOZWJMa2dWcjN6cUU4Lzg3aXB4NDU5V2l5UHZMaFY5cnB1cis1MVBYTjhuUWJ6eWVmdjcrdFdISzBYdjNpWGk0K0QrUEhYM1ZlTEszeTRUQWFFS0lUemlqc3ZPRW45NXAxcW9hcUNtcnU2akJUTDhIQmdMakFhdUFpNEhCZ0VYQUVYQnVaa0RaRWlTbEJLY3U0bVNKRmxsV1k2VFpkbGtNQmlNSnBQSllKUWxHY2tnSmRrVEpBa2taMnAzc3JPelNYUEVZYktuY3RGRkE3bDg4UG1ZSkNpNWVoTDMzZmQ3SG5yb0lWNTc3VFUrL25ndnJyS1ZkT3Q5TGMxQzVibmZYYzJ2SDl2TWwyODhUT1pWZHlJQzVaeDc1aVVjQ2w2ZmdmM3I2Tkw5TWc2M2MrMisvZGRidU9xM3k2TGUrK0xOaDhtODhBYU8rclhYci8rLzYvblovU3NRUXVYNHNTWUNvZlVlM1U3UHJ1ZnlSZkI3NHVoT3pqQ1orTU1MdTRMcjh0TFNxdkRwSzNPSlAvTUtEcldxQ09INkJubHNxcCsvdmZvV1NxOEx1Q1UvMnFCc2J2eUtXMS8rZ1B0dnVJYU1HSWZxZXp2L3cvTU5kbDZZOHZYMG1pUkpvcUNnQUtQUmlORm93R0F3aGhtY0xPc2ZvM3h4WWIrYkpDa2g5aVpVVlEwcmh1allXNmkvUWlERTNpb3FLaFNucyt1cXQ5NWE5MzdYUTl0SE93ZGNlbE4yVUNsMjZKRExtUC9FYm1BaUFNV0RCbUdUQWRuSjRJRTU3TnBkeXVUaVFhZDBhR1diSFJzeWRvY2R1ODJPeldiRDdUazVtZTdxcmM4eWZVazU2N2E4b2UyUHE0ek5lenpJbTU3ajNpMGE4L1FwMVpSV3VPblhUNlB3NXB4QmpCOFlsT0F3V3VqTUVPMC9ZUTUxRStiOHNNNjYycjNzOWVRek9GaTluajlrS01iSnY2WmFoV1RBbmorUS9zbWFBVHBrME1Vc1c3c0xHSEdLRzdOaXN4bkJic05oYzJLemUvQ2U1TG53TlpReWJ2ejl6SC94WHhRRTkyZlR4aTM0Y3JPNTc5N1BBQ2gzcXh4NWYvdUtGVisxYnBrNDhjYWpKMkJwb1JwUG55UkpvVFNPZ0M3cUtmVDVhVDdGTDR4eDhaamo0akViUEtMVkQ5YXU4YmdQK2VuYW96dDJleEoyZXlLWjl0MGtkVTJoUjQ4TUVrUWpMeTVkVEhXREIxVngwOVJvSjlTQndXNnpZM1hZY2RvOElOdXc0aWJrRGZVMk5lQ3hPemhab3I5MTg3K3hJdlBnck45ckhMZXlubEx2SG1BOGFsTUY5OTcxSjNhV1ZlRlZmZFM3RzJod1EwNW81Wlo4Sm8zdEYzeGh4aEwwTldUM3Y0QVVNNER0VklFdHdJdHZ2TVYvNURONTZzcjhLR3V5MWQzQXJjOXU1TnFycitLcXJPaE0wNC8zdnM4ZnRydjR4OVFSZEQxRlpaTzh2RHhDemsrajBZakJFQUs2aUptcStlSEN2amdSZkpTQ0VWR2RiellLNEZRZHdJWEFMUUFvVjE0NVlqK3dKUE95WDc2cktNcTFScVB4aXBOeEtuL3pJVWRzOVpOWW5hZDJOK09uL0puRnEvOUZMNGN4dkIrcU9abGhZNjRtSzdpcTBhT3ZKU2MzVXU4b1cyMmNyRmR0NytvRlRKcnpYSnYzNzMzOG40d2ZrTUtQYjhqaGg4alpPQWxaSWFXSjI4ZmZRTW5zcHhoVGxCYTF2Z0ZEcjJaa2dRMUZVZDQrNjZ4ZUc2Wk9IWGRnZVFUUU9nSTF2WTlOMFptZVlYOXhxRStJTEJ1RTBTRHdla0gxdWtWRGF6TUlnYi9GUzBLQ2pUaXpqTWxxbzB1WExqaWREcXhHaWE2cFBlaDVabGZtL2ZJUFhMOXNNOU9IRldDczMweGF3UjlpL20zN2M5Sml0MlAydUhCQjI4Q0wzTjdWb1pKVmRER2pSNGR1L2xjejFaRUJLTnczNldvc2s1NW53eE9ETUZOTmNmSkYwZFBmYXNQU0RuTEpzdkViQkE4UXZQbjIyN3gwUEpsbmYzNGU4YnFkVmp4TjNQSFVlZ1lPR2NhTnZhUC8zdWZsSC9HYlRRZFo4b3VSbkdIOVppcjRQWHYyeEd3MkJ3SE9pTWtVRFhEdE1MY2d3RWxTUkhvOFVxRVFZbTI2d0VKQXg5N0NrK2pBTzA5K1lESTlXVnBUYytDZHQ5L1plRjIvL2xQQ1NyMDd0MnpCclU3R3BqYXllVnNsbzZaR1pLUnRWaHVORGZYZjdmWG5xMmY2dUJzWStlQUxETXZYSFh0N0FVUHlQVlM3bkl3YnJrbnV1QnNhTU5wTzdSemtEWnZLMnY3ajJzeGNaOHFKUS9sV2F5SU5EViszbzVPUGhUT25ZeDB5ZzJramduZnA5QUlLcldWczN0M0FoSDdKbEczYWlGSjRQbGt5ZUFCWDJWWjJOZmdvVGphemFjdC82Ti92OTVGOXNOdHcxZGVnOEYyVzNhZ3N2ZWRHYWdwL3paSUpBNkkrR1RKMElLOStYck5yMHVDU04zdWZsZnRwNk9ZWkEyanRnSnJrbHlRTitJUVFBUUVCT1p4d2l4b0lxQUxKZ05sb0VrYWpFZUZyQnRra3pzaE0xd1FpWlM4ZmYvWVZSbHNpNmFsZCtkenRvVnUzYmppdFhnNDJCUmllY1NiNXVRa2NjWGRsME1BQ2pNRDJkZXVvUDhuN3M1emRqMExmUHNvYW9TUUcyZEtjM2FuY1dCVWxFejlvOENYTW1mOFplZjN2UWJzSEs1cHNQaDZxcXoxTUxTbkdMRVBWcGpYc1BZV21YVi8vM0xZYzRvRk5YK0N5eERGa3ZxWVFhdTZXdzd2VEwyWEhoeCt5c2U0NEg3eStsbis4SG1RSGx3L2ovZ0daL1AydDk2aHRsTGxoNFRQQkZjV3piT1lFK3A1aS85VE16RXdkdUpuUWtnMk5ZVk0xbXNXRmdVNElJYVJnUGFtUXBFQW9WeTRjV05DeHR4REFSYkUzd0orUmtma3YyUmovM3I4L2VYNllFT0k2SUMrRlNvWU51Z3lqcHdaenllK1pNQ0J5ZG9lTnY0VkY0MzVGMGVvSHlCdDJDeS9PbjByZDloY1pPL052ZUJxcXFHcVFLU2w1azRLUmQvRDRqRTcwdDd6N0dEZnNsOVI2WGRUWFZ6T3k1R0xNR1JlejhjWDUxRzk2a2VXNzZpaWNlek12ejlWTzdid1YvMlprdnBVSG4vNEg0OGIvakRVTDhyRDQ2cWwyOTJEanJwVmtuTUp4TjF2dFpGaFBMYStoLzhoSk9CNi9nWUtpRjNBV1hjT1dwMmVkRkxCdFhQa2NqclJSRVdDVDAxaXcrQStNSFhNaEt3cHlLQzJyWmZHS056R2pBWnM5emM2OUl5L0ZhbFVwZDJldzdwR0lRbTM2Z05FTTVSb0tDOC9EbG40QjY5Y3Z3ZG5KY2Uxc3pKOTJCZXZLM095cjlMQjMzRVVzdERwWXNPcE5pdTE3ZVhEUmVzaXJvVi9SMzdUcllPWmYrZU1ORjMwMjlCZXoxdnlxNzZBUGV6OGNVSFJSVEwwaWh5K1dvVW5nRjVvYWh4S2NoMm9FMUNRaHl3aEZFVUpJTW1hemRqMGNiM1lKYzBKeXVBdWMxZXJFWVR5QXF6V080dUtMYUZqM1QxNSt6VVc4MFlTemF6d1pQZlBJN05tTG1WTnlHVFhnUW9veXJNanBtYVNkN1AxUHptRGM2Q3pXYjloRHlmam9iS21DVVZNWXVPd2Fjdkplb1hERXJheFpNSU9jRWJjemE4dk45Qzg4bjRKZTZWUlY3bVBFUFU4eWY5SWdicnR6QWxPSFg4Q3lnalM4MXU3ME9vV2NwdE95OHVEcmpLTkhqMUplWGs1VjFaZlUxdFpTWDE5UFkrTVJtcHFPQldXUFFsVUtMWGk5clhnOEhudytIMEtva3RhaFhpRVFDRWpCL2d1aGFnVXBXTEVnQjhIZkNCaURWUXNtdE1vRk14QjMzMzIvVHp6YlVuSDU2c0ExMXkyL2EyaE9nMWNtSStWMHpDNVRxYXVwQm91VHRPUWZoMGFJNG5WVFU5ZEFTa1lXMW1DK1JkUDJwZVROL0lEYVRYK2lwczVGZWt3YXdROHhoQkQ3RHg4K3ZHYk9uRG03SG52czhWYWRLZWxyeC9RTVBmcURFVTlGdDZoNlgxcXdpb0JnMG0zUWVqR0hHaGxqc1VTNnMydXF0NGs0SEVrNG5WMUpTZWxLdk5uQzJlZWNSMkdmM2xFbFVrMzFOYml4dFVsRk9kRndsYTJoWk1ZR2RtNWFmTkt1RGErN2licEdGMmxwR1ZoMEtUdnV4bm9hUERKWkdjbW4xT1hNK044K3VidDA2VUpoWVNGeGNYSEV4Wm5EZHl3OWc5TXpOeUhVVUljckljdCtTWlpsRkVVUmdVQVVld3NWMThzeDVta0FVSUxtcVIvd3o1Ly9nQTk0cmZjZzhZNzN6dUZEZTNSTHVoYm9lZm9kS1ptMGpPd2ZsZmZMYUxHUm5kMitZb0JzdHBHVlpmdWhBYTN5OE9IRGJ6ejg4TU1mL1BuUEM3dzZnUEozQUdpeGdRRkZIeHdJQXBzSWxVVUY1YnZSUUUzTFR3dFdFMFNCbXMybXFkNG1KWVg2RTJnZDJyT3pzK25kdXpmeDhkRm1reU1sZzFQSjlySG5qMkxoakVacVhTbzVKNm5yYnJFNXlMYTEzWnJObVlMdEcvQ0QvM3JHcHB0RWZQYlpaMVJXN3VmZ3dSb09IVHBFUTBPa3Z0VHRkdVB4ZUhDNWp0SFM0a1VJZ2MvbncrZno0ZmY3SlVWcGw3MUpRZ2c1Q0hDaG1sTkRrTDJaZ3V6TnJGL3V2bnRtNHU5Kzk3dExuVTduMVpJazllR244ZjJ5dUtZYXR1eHpNV1JBL2cvSGpWVzFyTDYrZnYzczJYLzg4TWtubjJ6dEJOQmlGMzhRMU5vRE5EMm9oVmxhRU5SRU1FY052ZVJRQk5UMDFRU3A5T2lSUVU3T21mVHUzZnNIYjdyeVhZMGZEYkNGUmxWVkZaV1ZsZFRVMUZCWFYwZERnNmJHNjNJZDQvaHhOMGVQSHNYajhTQ0VDQmJRdCtMeitmSDcvU0ZsM2lCekMwaXFLcVJnNURSa29vWkNRZ2FkZWRvdXdPWGs1SmkzYnYzUHhhbXBxVmZKc256aFQ1RHo0eCtCUUdEN2dRTTE3MXg4Y1VscFRjMUJKU1l3MEJtbzZRRXQ3RWNMVlE4QVFoL3hiTXZTVEpqTmNlZ1ZiNjFXZmQxbnBKRnhSa1lHT1RrNVpHZG4vNmpQaGZISDlvZXlzN09KajQvSFlva25MaTRPc3prdUhHUXdHazBFQWdGa1dVWUlvVE5UV3pFWURLRTdZWWk5aVVBZ2dDUkpvYnkza0VrcXh3WVhZc3hUSDJDdXJLdzBwNmYzZUFmWVVsNytXVkYyZHZaUWs4azA2cWZMLzhjM1dsdGIxKzdidCsvZG9xSno5K3ZBVE0vU2ZPMkFtcjhEUUF2b1VqakNabWNzU3pNYWpVR1dwb0dheFdMUnlYZ25ZTE1sa3BTVWhOT3BseDNLb21mUEhGSlRVMy8wNThUNFkveFRxYW1wV0szV0lNQlpzRmdpQUJjSUtCZ01CbFJWRFVkUXZWNWpDTnp3K1h4Q2x1WDJmRzhpYUpyR1JrOERCSnRpb0lYaVRYcUFBOHk1dWIxM0FudmVlV2ZqUzhYRkZ3eXkyUkt1Z2xNS1N2NDBUaC9YUjgzeDQ4Zi8rYTkvYmQ0OWV2VG9oZzRBclQxUTgzZkcwRG95TzBNc3JYM1RVKzlQMDRJRVNVa09uRTRuS1NuZDZONjlPMWxaWjlDclYwOFNFeFAvVDV5ZlV6WkZtMXd1anZsbGVuU3hSUmNBQnhScWp4N0hFSjlBYWtKMHI4cVdGZy8xYmgvSmppUVNUTkwzTWZrb0x5L255eSsxaU9taFEvVWNPRkROMGFOTnFHb0F0MXVMbUxhMFJKckZ0TGEyNHZmNzhQbTBoakU2M3h1aDVqRnFRS0FLSVFmYm1ZWk0xSTU4Y0hwVDFRU1lKMHlZWVBuVG54NitJQ1VsWllqUmFPeFF4WGZQNXRWWThvYVJsM2J5elVOcXk2QkNnVUdGUDY2SldyRnJNMnBHTWJuaFk2R2lLRkZsNWhpREUvRkVKY2lxcXVxSzM2TStvYjZtR3AvWjBTWWkyTlJRUTZNYjB0TFQvblhvWU0yN3Yvbk5iejU5L2ZYWC9TY0phUDUyQUMzUUFVTlRRL1hPd1FBQjBTd3Qwcnk0clQ4dG9xUG1kR3BCZ3ZUMGRNNDQ0d3h5YzNPL1UzOWE5ZDZ0dUoyRjVHZWNIaEgzNzAyMmFQbnFWVHkycjVuVVJETzFqYzFNdnZwS3BoZCt0MjBISkVtaWQrL2VKQ1FrQlBONTR2SDcvUmdNUmxRMUVKWGtHNWs4QmxwYmpSZ01QdngrdjlDK0wwdUtFa0JSRktINEF2aFZGVWtTS3RwTk5hd1dFc3gzTXdRbmE0akJHWU9BNWdzQjI0b1ZLMXBYckZqeEwyRHJ4bzF2UDNYKytlZGZrSmlZT0ZTU3BDaGRsL1ZQUDBUeWxBRmZDOWoyYllNVmpUOHVZRk5kNVV5Wit2OVlzZjN0OEhzcjU5M0F4QWZYayt5d2hhZnlJMnMrWW55L1JvcHQ1ekp2MzFHR3Q4ZUpQV1VVcEJWZ0gvY3cyNWZPakFCWHhWYkdqYnVKV21NR2RxVWV1ZkJtdGo1OUQzanJ1V1BDMVordC9zUzNPY25RL05ISG41WWYwWUZTZTREbTd3RFFsQk1BbW1nL09HREFhRFRwcFlhSWl6TVRGMmRweDUrbUtkNTI3WnBNYW1vcUdSazkyUDM2WXR6WExhTDNkeHdrc0NrMWpKbStsbTFySDhSOEdzeVpVMkJzclpRZWFJbVNMWHF5S1pXM0poVFRlT1FJM25oN2xHelI0TkUzTURYUFRrdXJqL2c0N1M4ZjJiK1hpNS8vZ3YvTXVvYnZTMDZ3cWFtSnlzcjlsSmFXVWx0YlN5QVE0T2pSUm80ZDA0SUtzZmx1UVdYZVVOUVVSVkh3Ky8xUzgvRUFmalZBbkRrU1BkVUZHQ1Foa0tGTmtNRVFaSERHR0JZWHRYejg4ZDY4bmoxN1hoZ2ZIejlFVlpSMFZjZENUZ29BVkcyUmpUR01KVWhoM0kzUTVJT010SzhKTEY2b3FvV01iQWlsR25tYW9LNFIwcktJa3E0SjFiNVVWMEZ5QmxoMXMxenhRblVkWkdXM3ZhT3F3YzlTMHFOL0E3QngwVFNXTkE1aDFaenhPbUQ3T1F0ckxtSHI0OU5qMWxSRi8wNkFyWEx0ZzR4ZHNndDMyV0UyVi95YmRDT0FtMG45ZTJLZjloS0xwdzBHb0xTMHJQYk1NOC9ZL05KRDB6Nzh4ZisrVUIzeXFaNEVvT2tYSmNqUUF1MlpuQVNGVDRNMXpURm1wd0dEd1JSc1dteWlJOU16SVNHQlJKc1ZDWWt1S2VuMHpNNElCZ2t5eWM3SzRwRnBBM0ZNZnBPN1JtUkh5MWdCN29aYUdyeG1zak9TMjh5VnhycHFGR3N5S2Zib202cW5xWjY2Smk5cDZSblJVbEg0bUQ2b0Q0TVh2cy80Zmo5OGc1ZnZUYllvQkdxaFkyYzB5SHlmZ1dhSHc4RTU1eFRTMnVyRlpES2hLSDdpNHkzRXhWbUNRUWJORWR2Y2JNSm9iTUZrTXVMMWFpek81L1BoYi9WenBNRWdWRldSQkFxdHJZcVE1QUJtazRxRUpIeCtEZHhDUVFaWkRnY1pBa0pnQUNsWXhTTkN6SzBOeVBYdFc3Z0grQVI0K29JTEx1aDc0TE1QejcvN2hZckJkdzdQU0QrWi96aHRPT3lxZ093SnNIcGU1UDE3eDhBZUdWUTNWSmZDMEZtdytMWVRyKy9wbWJDcUNlcDNBbFl3RnNEV3BmRHdkRmkrQjNKU29MUU01andORTB2QXZRY3l4c0hJWEdod3daNDYyTElMY3UxUXR4c0dqNGFNUXUyZjc5c01XNXNnRzlqK01reStGM29WUVBrK21MOEN4dllQd3lFclZyek82RVVQZnl2ellNM3FOeGc2NFZHOFM2OWw3ZllHcHBVazQ5MjNudFVWV2V5WmZFbXR4K1BaVWxIeHhVZm5uSFBPZmoyNzZnRFEyZ08yMEh1aG9GSWdER2l5ckVwQ3FHcW9JemdJSkVrWVRTWU1zaVM4TFMzSTVnUzZXT1BBM3l3YWpyckl6TTdHYXRGQXpXS0pJeTR1MUpIZFNrS0NqWGpKemVzdnY0RTE3UXppMUdaU2lzZng1SnpCMkJwMk0yNzhQWlR2cWNGWWVSTWJGbGtaTVA1dTVrMGRCa29qc3lkZnk4djdWTEtzSGhwdHhheGQ5VGZTTERCelJDYmJQSDB4bWczVVYrNWw5T3puZUhDeVZzLzU0dHdibVBWeUpZVzlrcW5ZVjg4VFczY3dJSXlKWmthTnVvZ2xMNjlsZkwrSlVjZmNWYmFlQ2ZjOHk3emxLeWh5bkxiQXBoditacGJ0K0lKeGw3Y045bjFWOVNsYmpqbDVXVmN6dXYyRDkxbjAvbjRxajdReWI4TFB2bmYxVjRQQlFNK2VQWW1McytEenRXSzFKZ1M3WE1jQ25KbVdGaTJLMnRyYXFvR2IwY2NaMlVhTzF2bUZLK0NuUzZJV1BRMEVBcUxGRndCSnhXeFNoYXFxa3FJZ0NSQ1NGSTZpQmdDREpLR0FaQWhPZkdQUVREVzJBM1RHSFR0MjdBTDIvT2JLcktjdTIvdFI3NXljbkNLcjFYcGhaN2x4U3pmQTJvV3d0SjF5VEZzQnJKd0xUZHNoZXhvc3ZPM2tUdjcyUGJCM082Ulp3UnZzQ2pqOVliZ242RXFwV2crRDU4TEVEY0U3ZWgzY3N4TUtIWERQY0ZpNUVlNGJBdy9mQzJNZmhIa1RvR29EOU5vWXZNazF3TVRiNGRuZE1EQWQ2clpDOFYwd2VrdHcvM3dWN0N5MWMzdEIyeXVpZE0xZkdGcnhxamFSMHk1ZzlmSjVuV2U4cTNXc1hsZkY3SG45OGRSZXl1TnIxekYxNE1TeThnLzM3ZkIwY1pUMWpEUG9tWm1xWTFtZEFacWlZMmVLSHN3a0NUWFlsRmhvaWd1U2tHUkpHTU9SVG9sV2I2dFFoWUY0czRuNE9CT05UY2RGZ0hpT0hXc2hMYXNuU2JiNHNEOHQwajNLaXMybXFkMGUrYlNVaEw0amVmaXVjZlRva1U1NmVqcFpXVm1RbTh2R2plT1pOZlpzSEpPZlorYkk3UEJoMlB6NGJOWjRMMkx2cm5tWVVWazQ3UkllWHI2TkJWTUhhaVJnd0RqV1BUd1pUL1ZHZXZXL20ybmpkNUJqcVdQSjRzMHMyM3VRUVdtQTRzTVhZMHdVRmhheDY4R2RoQlJ2d3JjbVZ4MjdkbjJFMi9mZkVCVTlCZG1pdm5sbjh6L3BaN0IxOXdjc2VtY1BsMDBkVE1JUFFGTlRVbEp3T3J1UW1KaUl6WllRRlVIVkp0RngzRzR6WnJPSGxoYU40WVZNMDJhekQ4bHZ4R0x4aTJCZ1FmSzRGUXltZ0RBYXRSNE5BVVVWSUNSWkRrZFJKUTNraEJ5OFVPVGdoV0FJbXFuaHNxMTJnTTVZV0hqT1IwRW05OUpiYjYzcmZ0NTU1K1U3SEk0aWs4bDBJWEJTblRVR0J2WC9IRmxnYVFRM25GUjIrYkF4R3FnQllYbVl1cjB3WXlHVTEyZ21aTDF1Z3R0eU5WQUR5TXFDVU8vblhidGg5dFBhOCt5QmtCR2NlVlhib05ZSXF4ZkJHa0QxZ2FzVWFvRXNBRmNEalVZSGpuYmNqRG1Ecm1QeG5LREV0OUYyUXQ5TzQvYTFsS1pkZHV6OHJvRWQ5VVhGZTkrWjlOY3ZEQTlOUGhMeWtYYkN6dG9ETmIzQ1JyVHZERlNCcEdxUFFvUjdic2l5TU1nSTdZYW9DSkMwM3BFR0l4YUxSUmlOUnRLTmNQQndBL2JVYkxwM3Rlc0NCQnFvMld6UnFSelpDZWZ6K3FLVlBMc3lnV0hEUnBCYmRHS2h4eTFiL29YWjA1L1o5LzQrNkRid1VHZlpDMmpBTm1TUVpvNWJzd1pTYkM5bGQ1VkNUbDR5UXdZbGM5dTRheGczOGpJR0R4L0ZvTUtzcVBYYW5RNWM5VWZhYk04NVlESjFkWk5QZDFNVVRsVzJLQ0hCeGxrSk5zNjZzb1EzNXE1ZzI1Rkx1THpyRDVQNWJMVmE2ZE9uRDNhN25jVEVSQklTYkZpdFZxeldlSnFhTkFibmRzZGhOamRqTnB2d2VrMTR2YTBjTnhzeDRDYytQdXg3RTdMa0IyTkFNcHMxQnVkcjFSaWNMR3NwSW9HQVFKS0ZoQWdIN0tUZ1hWM1dtSnprMS9uaURERWdwd2M2WTFCQzZRQ3c4Wnh6Q2szTGxqMlZrNU56Wm0rYnpWWm9OQnI3US90OWxjT0tMbCt6OE00U0crUnl3OWl4TUc4ZGpPd0hudDJRTnFXZDdjUnNTemFDVDRuNEl2U2VYWHNHakJrZGVUMW1QSVFGa093TzdJb0xseGRpNlpqVmtVNWUzZ2wxOU4yS29uemdjcmxLRno3K1ZPV1JEN2ZYMk0zTDFSaG1Gb2p4ZzNVRWFIb3cwLzlHMWZ2UGdvMGlWVWxDSUJDeUxLTUdBa0tXRGFoS3F4RElKTm9UTVp1TUhHdHNFQWFUQmw0bWt3bVA1d2l5TE9Ieks5Z1NiY1RIdE1RTDlmbDBPcDEwNjVaQ2V2cUZiTHZtSmo3NzlGTldQZnNnZjMzdEE4cld6Tzg4S2d3VURyaWMwY09DZ2d1anI4YWVrbjFDcUpqejh2dU0zcjZGTFpzMk1ISEkrVHk0N21NbUZFZWtxdHhOTG16TzA2T0QxZmNrVzZUeTFiRVd1aWRwL0t5eHZvNERpcGt1bGgrK25DTXpNeE9Id3hFRU9Gc1k0T0xqajJLeGFPQ21CUlphTUpsYU9CWm53b0NQaEFSanFHS0JoRGdqTHNVdkxIWURpaThndVlXQ3lSd1FKbGtsRUFqZzk2dElraURZVHliVTZGbHZwc3JCQzhRZ1NWSTQ2S0FEdWZiQXp2alJSM3VONTUxM1hpbXdEMWg3eGhsbkdHNGI5WHhXcStHc0hKOHZxYmZKWkNxUUpLblh0M3JBR3FIYUNDVkYyazZ2VzMxUzZtUU1HZ2pyMThDSUdiQjNQZFFvRWZabXF3WTVHNHFEUVkyR0JoMkdtWE1wem0ya3ROeERZZUdKbzhOQ2lBcFZpRStPSHE2cjJGeXg3OHNiYjV4MHFLYW1SbzFoWmUyeHM0NVlXdml6b05LTEVyTU9WUWloVDlVUVdndGNTY2d5QkZTRXdXQkE4ZnVGd1dSQ1ZWb3htT0t4eHNjSmd4UkFVU0UrVG10N0o3eE5mSFZNMEsrNG1PcTlIMURqeXViOE5JY3U0VllmOWRUcVBidDI2VUpxang2Y2ZlNkZETy9uSUcza2MzZzFsNmpHb0MwVzZoc2EwTHlaMmhnODZGTHUyVnBKdjlrVE5aYXJlbWhvaXR4cU5tM1p4TXlSVS9CVWIyT25xNEFGMlViQWg4dXRValJ3S0VVRGg5SlUray9LeW10QkIyeGxaYVVVOVcvTEdOM2xtNWd4ZnhYM0xGcE12djEwQmJaVGtpMUs1Uy9QdmNTN0xSYTZ4Y3Q4ZWFTWmNTTXZvMy9DYVFIdUpDWW1VbEJRUUZKU2tnN2dFckJhRzJscWlzZGljUkVYMTB4Y25KbkdPRE1tNGNWbU05SGFxa1ZOMHpKOXVDdE0xQi8ySTFSRnlHWUZlNElpQlpON2hkY2JRRGFxUWhhcUZFcjAxUVVhUWlBWFpuSEJ2RGcvMGJseGhoaUFhL1A4eXkrL05QenVyeVdmQVJWeEMza0hNRHp5eUo5c2g1b3VUMDkwOWNocWJiV2RhUkttWGlEM1JsTW8rZm9qQzI0ZkNDVURJTWNHeVZrbk40bnVlaGhHajRIOHBaRGJIN0tDZHFPY0RDc1d3YVNCV3ZEQVZRdm0vckR4OFloVGV1eTRLMWk1ZmlNVENrZEZoK2VGK016cjlYNXgvUGp4TDZ1cnF3Lys4NThiRHQxLy8vMHRnRHFoWDdvNEFaaDFCR3F4ejhOTDhQeEVKZElHMndNSmlLUnJJRWxDUXNKb2tJUmYwZEtLZksxZVRPWTRMQ1pWSEdseWM3akJDMExDYUpBd3g4VmpOY1BlZlhYazlSdElhbGM3R1lNdjR1Mk5PL0hrOXlhN1czSlFsY05KdDI3ZHdxVlJtWm1aYkhyaUxpNWUrQjhLOHJLbzNMdUgyKzc3QjNyNEh6dnRONHlkZGdNYkY5c1pQUGwvV0RCakJJT256V1hFenVzb0tMcUkvQ3dIRmVXVnpGajhKdE9IYW1TL2FmdkxEQnI2R2syVnBVeDYrQmx5TEFCMWpDKytGSGRHUG5ZYXFIVG5zbVprWVJSNVdidm0zNHlkTzYvTnVmZldsL1BNTXk4eDhjSHZEOWkrMTFyUlprOHpSN3dLWFJNVFNUREpQd2lJMWRmWDQvUDV5Y2pvMGY0K05qZFRYVjBkVHVnOWNpUlVhK29LeXlDMXRHaSt0OVpXYnhEY3RIcFRqOXVISWhTRXFxV0hoSXJxUTlVTHdScFVnaldvb1VKN1FrQ25lNVNEZ0NmcmxwQ01raUdtQ2ZTSm5odGlmdy9JcTFhOW1weVhsOWN0T2JsYnFzMldrRzR5bWJvYkRJWU1TWkl5MnhwOWJVZEREU2hXU1B1YUVTQkZBV29oYXlpVWwwZnNabFdCbWhxd0o0TWpZa3g3aFJBSFdnL3ZPamh3K0IrL1dySDI2YStVeHZyRFpXVmxSNjYvZnZ4UklocDY0ZlNKRHNDc0k0Ylc0Zk5ROGJudTkvb1VqWENxUnVneDJCMHRxTllzaVpCY3ZXNkpsRU1aWkFRUzFnUWJscmhRbmFjNUdQRU1CUWdTd3Uzd3VuUnhoRmxhS0RpZ2I0WG44N2lvclcvVU9qcFpUejZMek5OVVQ0TkxJUzA5SFhQdzdqUnplQ2JaTTk5bllxR0NZbkdTSEpYdW9kSlFXNHNiTTFucEtkR3BJL3ZXTW5ENk9yWnZYb0wxTkNBclA3b2krRzhLYktGUlYxY1hMS1EvUkVQRFlSb2JHNE1hYnhHbEVJK24vWW9Gdjk4ZnpuM1RWeTRFQW9vVUNLaGhnQXNFMUNDd3FhaHFHTlRRTWJxT1FDNE1VREdxSTUwdGNzeHpPZVo1YUJ2U280OHVzUFh0MjllZWxwWm1UMHBLc2x1dFZydlpiTFlialVhN3dXQ3d5N0pza3lUSkprbFNnaVJKOFVFZ0RBa0FHSFRldFJBdytHcTM0cHY1TE41emU0dVdiYStKNXZRSndyM3dsNm83RUFnY1Z4VEYxZHJhNnZKNFBNZWJtcHBjWDMzMTFmRzllejkyMzMzMzNSNGRlSWtZSUJPZGIrLzA0Z0FBQzh4SlJFRlVnSmtleURwaWFsRkxKMEFXQldaNklBT0VMRXRDNjVJbVlURElPa0NUTVJpTXNaVURSQkp0MjFZUWFNbTJtaUpIWXFJOXpOS1NrN3NGdTdGck9XcmY1UWdCMjR5aFgyODcrN2F0cGNGUlRFbis2U0VQL3hPd2RaYk40dmR6NE1DQnNJQ2xKb04wbEdQSFhPMktXRWFyaGZpQ0FLZTBBM0FSRnFkMXVsZEQ1VnJFTUxqT1FLNWRzTk9WZDhtZGdKcWhIV0NMWGZUYjZXeWhuY2ZZNTlGTzJyYlA5WStkTGJGQUZydDB4TkxhUEE5SnY3Y0hZaWNDczlEem1KNGFVZXlzTGFDRlFDMVN1TjZSR0dSU2toMkhvd3ZKeVYxeHlHNys4MkVsRG1jWERJYm8vdlQ5aDQxblFPNjMyMTE5Mzg3TldIc05KTXRwL3ErK3puOEN0cE1ZeDQ0ZDQrREJnOVRWMVhINGNJaTlSWFRlbXBzOU92TTBVclVRcVRtTkJyaEFJQkJscHFxcUdnVnlRcWlTcW9xd3FVcTQ0Yk9RaEVBUGRGSTdJQlFEVU1LZ1ZVTzB5OUk2QXplcEE0Q1Qyd0cxemdDdU0zQ0xCVFRhQWJIT0dKcmFBVnVMZXEybDJraWRnbGpRWjZick54djJtNFhBTEdocVNraFNOSmpwUUUyRUZHUDBnR1kwUmhoYXFIcWdiVjZhVFZmbkdmR2w5ZWpSZzZTa0pINGEzM2xVOVAvZVNFcEtJaWtwaWE1ZHUxSmIreFgxOVllQ09tOUhneVZaeDRNRjljM2hnbnF2VjErU3BXZHZJUk0xRUtVZW9nbGNCZ2dFVkZSVkZVR1FFNnFxU3FGK00xcS9CcUpZWFBBQ2ptVjBPZ0NTWkVtS0JUd2hCd0d5TTBEckROeStEblA3T3NEMmRjek9kZ0V1Q0VpZEFoalJ6YkxEb0tyM21ZVmVCd0V0aXBscFFDYUgyajZLRUZPTDFIWWF3d3JPRVpZV3FSNndSS1Z3aEZoYUVsMjZkQ0U1T1ptVWxGVFMwN3YvbjVBWCtnbllmdUJSV3ZvSnVibG5rWnFheW9FRE5kVFZmY1hodzRjNWN1UklsSkJseUR6Vks0Ym9hMDQxMzVzR2NvRkFHT0FJQkFKNmlTUkp4K0JFaE1tSjBLT0lNVlhSUjFjamJGeEk3WU5TRk5oRmZhY2RjMWM2QWJCMXhOcGlUVkxSQ2JoMUJuQnFlNjkxb05RWnM0djlUZFMyOUs5alRFMWtXZFlGQS9TQVppQ2t1aEVMYUFaRGhLSHBpOWJiVTdiVnpNNklFR1RYcmwyRExLMDdtWmsvS1ZyOUJHdy93TWpNekNBMU5ZWGEydHF3U205Yjg3UTVHRndJQVp3dnh2L1docjJGQWd4QmtGTTdCRGtkd0JITjVxUllvSXQ2M3M1bmJaWmdIbDBuekV4TDB2b3VmV3hCMW5XeVRLNmpCYjFwR2ZPYTlsaFppSm5wL0dmdGdGbkk3RFIyd3RMMGZqUnpVQk13WGljQ0dXMTJodFJ0MDlQVE1adk5QMTFnUHd5d0JkaXhkeC8vclBpS1k0cE13Vms5dWVIY016QURyYzFOdkxyck0vYldIY05nc1RHeXVKQUx1OGNrd2l2TlBQWHZqem16OTlrTXp2anY5UjJZeldheXM3TkpUVTF0WTU3cW82ZlIvamM5ZytzNGVxb29Db3EvbFpaV0NZdFppZ0k1WGJDaFBaQWowaVlWS2ZaUlZWVWtXUTRKMk1ReU96cGhZcnJYVWtqVzYyVEJyQ1BHRnZXZUNOblpKMlp5ZEFKZ2tkOExJVlJWWURESVVVeE01eTlEbjZJUkMyYWh3SUMrQ2JlZW9YVVc3WXo0MFN4dC9HaWhhR2VzMlJuYlVLVzlVYllic29xZzNaYXc3aW9tVEhtWXhTdVc0TlJkMWJYbGU1QlQ4a2x6ZkR1QTZTbGR4ZUM1dTlqNTh2eHZ2SjRoYzNleC9SVFdjekwvNlJUMDJJNnplbmN0UllYWnBKcFZscjI5a2MrT1g4YURnN0w1c3JLS2o1dGxMdTJiaS92SVFYNzk5NVVzdm1NaUE3cEVOdlBXNXEwc2VlOUxyckwxK0s4R3R0Q0lqNCtuWjg4YzB0SlNxYXVybzc2K1BtaWU2djF2SVlCcmFTT0wxRkgwdExuaENJY2JBK1JrcGVqVFE0VE9ENmNIT1lSUWhSWndVQWtHSHNKQUY3ek9KU0VFa2l3alJjQ09rMkZkTWNCM0lqQTcyWEtTTnFhcGlQdzRDcVJDN0tvanRxY0h4UER6NFA4ekdBemg5Mk1DQUVRZVk4Rk0xalhkMWdPYUlkaVl1Nk5vWjdTc1VFaUZRd08waUIrdGE5ZXVwS1Nra0phV0ZwV1BkcUl4YlFRc3JJRCs3UlROclZzeUI4dUE4VkdnQnJEa3ZwL2ptUHhXVkJIOE43cWhweFZ3KzZSdm50S2hlbDFVVlI4K3BkK2V6SC82K3NBbU8zaGc4dVhobDEwOGg3bDF6NWN3S0p2Y3ZrVTgwRGYwU1RhN1AvbVVMZnNiR2RCRk94Q3V1djA4VjJ2anVqT3RlSDVrMURjaElZR2VQWHZTdlh2M2NQVDBTTzFuUFAvQ2UvUXRLY0hlY2h6WG9VbzJmVkpMbjc2NUpMUzJCQU1Nc1F6T3k0RXZ2cURwV0ROQ0VSdzVjZ1JWTXBHUzRvUkFnSURpNWZEaFkxaXRSbkhNNVVKRnhwN2tRQloreWVWeW93UzBXSUlwemlKTVJna2hCQUcvRDE4Z0lBQkpsZzFJaE1CT1JWRlVMU0NocXFDeGxwTUZyVFlBcGtYWXBUQ2xDNmJrSTdjdmNpakMzd21CclBiOVlGNFlZWUFLN20yUTFXbUFKSVFxaE5CK0wwa3lScU1oQkhBRUZEOENDVW5Xb3BRaFVBdjRXMUV4b3JTMkVoQmd0ZG14eHBuQ1FOWk8yZ1p0ZldudE16U3Q3MEFRMEl6eDdQbkVTdTRaTm5ac1M2UmJUaEkzVDNTUTNrM3pveDJ0U09OdnoxaHh5VEIrT2d3dEJEeXdjQkdNdnhQU0xPQ3JoMGVlaFJsM1FlVW1XTGtacXR6dytGeElNOE9JU1RBd040UVNqU3grNGwvY3RXVnArT0EybFc5andiTnZzYm0wSHN2eVA5TzAzVUhlNEd1Wk9GUnJabHk1Y3kxYm01SkpxZDNDaTVzK0lYZkl6N2x2OG5BcWQyM2c2WmZmb3JxdWtmVGM4NWx4KzNUUzdScE1ySHY2WWJaVkhNZWFkWDdVaWF6WXZvYnRqWGE4ZXphd3RlSUlJNmY4bHJFbHVTZHgxZmhZdldRZWEzWitTYitSTjNIYjJCSmtvTDU4TzB1ZlhVVjU5U0djR2IyWmR2dWQ1S1ZaVC9pZlZFODl5eFl2Wm12cEFiNXgrdituOVEza3ByZVRTK00vVHNVUmxUNnBRVmFtK25obzdVNm1YM2srY1QvT2psK0FWbHlmazVQRE9lZWNRLzY1Z3pqSDBjQ0xHOHZJeWtwangvbzFtRFB5eVV4THBWdTNGSktUdStKME9uRTR1b1RMdWV4Mk82azlNa2gxSmlLWkUwaExTeU0xcFNzSlZvMEJ4TWNaY0x1UGMrUm9NM2FIRTd2Tmd0RWNSNXhSRnJJcFR0aVRrb1F0d1N4OExjMWdER2EwV3pRNUpzMDJNd21UeVNTTVJxTXdHaVFSQkFoaE1CcUUxc1JCVWcwR2d5ckxjbnRMSUxpRUd2ZEdMNXIybkNKSmtxWjRvZFZWaGwvSExBRkprZ0t5SkFWa1dRNG15V3JybG1VcHZCMkJVSVdHdW1wd3U2ckJZRkFsdEk1TkpwTlJTS2hDQ2FqQ2FEUUtrOGtrVENhek1FaUlnQ3AwaXJOeGlJQkNhMnVyc0NRa0NwdFpGbTdYY1JFWHIvbS9Jbzc5NEhHT2o4ZHF0WEM4c1o1RGh3NVJWMWRIYlcwdEJ3OGU1S3NqYnV4Mk8wbEpTVGdjWFlKK3NxNTA2NVpDYW1vcTZjbmRlVzlMQm1VTlozRDk5VGswN3N4bFcxMCs1NXh6RGtwRkR0ZmVhYVZrTEV3YUNYZU5nWjMxZ0JXeWZERHBIazBzZE5ZVWNLV0JYWWIwWGpCOE9Eak5VRHhFZTU2bHUrUjg1WnZZS2ZkblFIcUVwMWlTc3hnMi9BcXlVMnowNm5jeHc0ZGZRYjllRVZtL3lwMXZjdCswWDdDcXdzTDRpZGRqVlZ3QVZGV1UwMnZBbGR4KzF4MWt1ZDlqMkpSNVljR0N2SDZES2NrSzhNaXlOMktBN1ExbVRMc2J0V0FvRTRabU1uM3N6VlNmaEVSUjArNVZiSEQxWXZxVWExazkrem9XYjZnRW9LYXlBbWQrQ1hmZWRRY2xLWWNZTnVJVzNDZjZUNnFMR1NNdVpsMk5uV20zMy9ITmdnZlYrei9oc1U4Q1BEbmo3RmlpeVROck5oSjM5Z0N1N0tHVkpPN2M4UjVObVVVTTZtYm13LzhEemt1THhVSjJkalozTFg2QlR5Ky9tTWNmLzRER3pKSE12dTRTM0M1OWlvaW5UWW1XMVpxSVRiaW85UGpKeU1pSTlzRVp0Um1UY1ZadkVnMUNaNlphTU1mN2FQWTBvMGp4eUhLTFVERVFGMmRHbU0zRVdWUWFXcjJTMFJ4SG5DRm9zaXFDRnE5ZnhOc1NrSVdndGFVWlJZRFJhQ1Jpd1lxUU9Sb21Xa0VpRmtXK2hORGlwcW8vQUxLTWpDb0ZBbUF3R0pHbGprMVFqV1JKK0gwK0pJTVJveHg1RDBBRUFnUWtDWXNsTHNxa05KdE5CQlNGZ0Nvd0dtUjhBVUZjbkJsSmtwRXNGcFFXRjY1V1NWZ3NjV0Z6cy9XNGhDa3VpV1NuQTFsSzRIaGxMWEpjUFBGR2ZiV0FQakFnMDJwTEpJNW9jOVNjMkFXbnMwdVVEMDNmU01WT0VpYWpnOS8rMFVtLzFHNTBQNTdLcXpWR0xCWll1aEFtem9JUkpkci9uem9VVnF5RjRpa3daaFpzSGdGanhrQlRDbXdNeXBxbFpHdUwzUXo5U3RxYW9yWGxWVmh5TXFOa1hTek9ERXBLTWxpZllzV1JYMHhKU1Z1enpaaDNCWS9QdXgwWkdCNThiOGo0R2RSVzdHVnZlUTBaaGVkUzkreGJOQUxKUUU1aE1TbStNdVJsYlUzSWdwRTNNbTNVRUtDWWdiUCt6TjVhVFNtNTA1RStpUG4zanNjQnpKcHhEZmU4dUlyYmg4MmszL0NKWkZmdlkwOVpKZVplNTJDcGZJQUtOeFIxOHA5Y3UxZXp2RGFQbXMwenNRUC9IM2l4Z0ptUU81d3VBQUFBQUVsRlRrU3VRbUNDIl0sWzEsImRldGFpbHMtY29udGFpbmVyIl0sWzEsImRldGFpbHMiXSxbImhyZWYiLCJodHRwczovL3d3dy50ZW5zb3JmbG93Lm9yZy9hcGlfZG9jcy9weXRob24vdGYvZGVidWdnaW5nL2V4cGVyaW1lbnRhbC9lbmFibGVfZHVtcF9kZWJ1Z19pbmZvIiwidGFyZ2V0IiwiYmxhbmsiLCJyZWwiLCJub3JlZmVycmVyIG5vb3BlbmVyIl0sWyJocmVmIiwiaHR0cHM6Ly93d3cudGVuc29yZmxvdy5vcmcvYXBpX2RvY3MvcHl0aG9uL3RmL2RlYnVnZ2luZyIsInRhcmdldCIsImJsYW5rIiwicmVsIiwibm9yZWZlcnJlciBub29wZW5lciJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoQ2YoMCwiZGl2IiwwKSxDZigxLCJkaXYiLDEpLFB1KDIsIkRlYnVnZ2VyIFYyIGlzIGluYWN0aXZlIGJlY2F1c2Ugbm8gZGF0YSBpcyBhdmFpbGFibGUuIiksTWYoKSxDZigzLCJkaXYiKSxQdSg0LCJUbyB1c2UgdGhlIGRlYnVnZ2VyLCIpLE1mKCksQ2YoNSwiZGl2IiksQ2YoNiwib2wiKSxDZig3LCJsaSIpLFB1KDgsIiBBZGQgdGhlIGZvbGxvd2luZyBsaW5lIHRvIHRoZSBiZWdpbm5pbmcgb2YgeW91ciBwcm9ncmFtOiAiKSxDZig5LCJkaXYiLDIpLENmKDEwLCJzcGFuIiksUHUoMTEsInRmLmRlYnVnZ2luZy5leHBlcmltZW50YWwuZW5hYmxlX2R1bXBfZGVidWdfaW5mbygiKSxNZigpLENmKDEyLCJzcGFuIiwzKSxQdSgxMywibG9nZGlyIiksTWYoKSxQdSgxNCwiLCAiKSxDZigxNSwic3BhbiIsMyksUHUoMTYsJ3RlbnNvcl9kZWJ1Z19tb2RlPSJGVUxMX0hFQUxUSCInKSxNZigpLFB1KDE3LCIsICIpLENmKDE4LCJzcGFuIiwzKSxQdSgxOSwiY2lyY3VsYXJfYnVmZmVyX3NpemU9LTEiKSxNZigpLENmKDIwLCJzcGFuIiksUHUoMjEsIikiKSxNZigpLE1mKCksTWYoKSxDZigyMiwibGkiKSxQdSgyMywiUmUtcnVuIHRoZSBwcm9ncmFtLiIpLE1mKCksTWYoKSxNZigpLENmKDI0LCJkaXYiLDQpLENmKDI1LCJkaXYiLDUpLENmKDI2LCJkaXYiLDYpLHZmKDI3LCJpbWciLDcpLE1mKCksQ2YoMjgsImRpdiIsOCksUHUoMjksIkF1dG8tYWxlcnRzIGZvciBwcm9ibGVtcyBmb3VuZCIpLE1mKCksTWYoKSxDZigzMCwiZGl2Iiw1KSxDZigzMSwiZGl2Iiw2KSx2ZigzMiwiaW1nIiw5KSxNZigpLENmKDMzLCJkaXYiLDgpLFB1KDM0LCIgSW50ZWdyYXRlZCBkZWJ1Z2dpbmcgdG8gdHJhY2UgcHJvYmxlbXMgdG8gdGhlaXIgY2F1c2VzICIpLE1mKCksTWYoKSxDZigzNSwiZGl2Iiw1KSxDZigzNiwiZGl2Iiw2KSx2ZigzNywiaW1nIiwxMCksTWYoKSxDZigzOCwiZGl2Iiw4KSxQdSgzOSwiTGluayBsb2cgdG8gY29kZSIpLE1mKCksTWYoKSxNZigpLENmKDQwLCJkaXYiLDExKSxDZig0MSwiZGl2IiwxMiksUHUoNDIsIiBUaGUgbG9nIGRpcmVjdG9yeSBtdXN0IGNvbnRhaW4gVGVuc29yRmxvdyBEZWJ1Z2dlciAoVjIpIGRhdGEuIHRmLmRlYnVnZ2luZy5leHBlcmltZW50YWwuZW5hYmxlX2R1bXBfZGVidWdfaW5mbygpIHdpbGwgY29sbGVjdCB0ZW5zb3IgZGF0YSwgZ3JhcGggc3RydWN0dXJlcywgdGhlIGFzc29jaWF0ZWQgc3RhY2sgdHJhY2VzLCBhbmQgc291cmNlIGNvZGUgdG8gdGhlIHNwZWNpZmljZWQgZGlyZWN0b3J5IGxvZ2RpciBhcyB0aGUgaW5zdHJ1bWVudGVkIFRlbnNvckZsb3cgcHJvZ3JhbSBleGVjdXRlcy4gIiksTWYoKSxDZig0MywiZGl2IiwxMiksQ2YoNDQsImRpdiIpLFB1KDQ1LCIgU2VlICIpLENmKDQ2LCJhIiwxMyksUHUoNDcsIiBkb2N1bWVudGF0aW9uICIpLE1mKCksUHUoNDgsIiBvZiB0aGUgUHl0aG9uIEFQSSBvZiBEZWJ1Z2dlciBWMi4gIiksTWYoKSxDZig0OSwiZGl2IiksUHUoNTAsIiBTZWUgIiksQ2YoNTEsImEiLDE0KSxQdSg1MiwiIGhlcmUgIiksTWYoKSxQdSg1MywiIGZvciBvdGhlciBUZW5zb3JGbG93IGRlYnVnZ2luZyBBUElzLiAiKSxNZigpLE1mKCksTWYoKSxNZigpKX0sc3R5bGVzOlsiLmFyZ1tfbmdjb250ZW50LSVDT01QJV0ge1xuICBjb2xvcjogbGlnaHRibHVlO1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG4gIG1hcmdpbjogMnB4O1xufVxuXG4uY29kZVtfbmdjb250ZW50LSVDT01QJV0ge1xuICBmb250LWZhbWlseTogJ1JvYm90byBNb25vJywgbW9ub3NwYWNlO1xuICBtYXJnaW46IDEwcHg7XG59XG5cbi5jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdIHtcbiAgaGVpZ2h0OiAxMDAlO1xuICBmb250LWZhbWlseTogUm9ib3RvO1xuICBmb250LXNpemU6IDE1cHg7XG4gIG92ZXJmbG93LXk6IGF1dG87XG4gIHBhZGRpbmc6IDUwcHg7XG59XG5cbi5kZXRhaWxzLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0ge1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgd2lkdGg6IDEwMCU7XG59XG5cbi5kZXRhaWxzW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWFyZ2luOiAxMHB4IDYwcHg7XG4gIHdpZHRoOiA1MCU7XG59XG5cbi5leGhpYml0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0ge1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICB3aWR0aDogMTAwJTtcbn1cblxuLmV4aGliaXRbX25nY29udGVudC0lQ09NUCVdIHtcbiAgYWxpZ24tY29udGVudDogY2VudGVyO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG1hcmdpbjogMTBweCA2MHB4O1xuICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xuICB3aWR0aDogMzEwcHg7XG59XG5cbi5leGhpYml0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5kZXNjcmlwdGlvbltfbmdjb250ZW50LSVDT01QJV0ge1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB3aWR0aDogMzEwcHg7XG59XG5cbi5leGhpYml0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5zY3JlZW5zaG90W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNhbnZhc1tfbmdjb250ZW50LSVDT01QJV0ge1xuICBoZWlnaHQ6IDIwMHB4O1xuICB3aWR0aDogMTAwJTtcbn1cblxuLnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGZvbnQtc2l6ZTogMTM1JTtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIG1hcmdpbi1ib3R0b206IDI1cHg7XG59Il19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKE9YLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6ImluYWN0aXZlLWNvbXBvbmVudCIsdGVtcGxhdGVVcmw6Ii4vaW5hY3RpdmVfY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbIi4vaW5hY3RpdmVfY29tcG9uZW50LmNzcyJdfV19XSxudWxsLG51bGwpO2NsYXNzIFBYe2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dH19UFguybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFBYKShnZihpUykpfSxQWC7JtWNtcD1zbyh7dHlwZTpQWCxzZWxlY3RvcnM6W1sidGYtZGVidWdnZXItdjItaW5hY3RpdmUiXV0sZGVjbHM6MSx2YXJzOjAsdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmdmYoMCwiaW5hY3RpdmUtY29tcG9uZW50Iil9LGRpcmVjdGl2ZXM6W09YXSxlbmNhcHN1bGF0aW9uOjJ9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFBYLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6InRmLWRlYnVnZ2VyLXYyLWluYWN0aXZlIix0ZW1wbGF0ZToiIDxpbmFjdGl2ZS1jb21wb25lbnQ+PC9pbmFjdGl2ZS1jb21wb25lbnQ+ICJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTppU31dfSksbnVsbCk7Y29uc3Qgd1g9X2soIltEZWJ1Z2dlcl0gRGVidWdnZXIgTG9hZGVkIiksa1g9X2soIltEZWJ1Z2dlcl0gRGVidWdnZXIgVW5sb2FkZWQiKSxTWD1faygiW0RlYnVnZ2VyXSBBIE5ldyBEZWJ1Z2dlciBEYXRhIFBvbGxpbmcgRXZlbnQgQmVnaW5zIiksRFg9X2soIltEZWJ1Z2dlcl0gRGVidWdnZXIgUnVucyBSZXF1ZXN0ZWQiKSxSWD1faygiW0RlYnVnZ2VyXSBEZWJ1Z2dlciBSdW5zIExvYWRlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLEVYPV9rKCJbRGVidWdnZXJdIERlYnVnZ2VyIFJ1bnMgUmVxdWVzdCBGYWlsZWQiKSxBWD1faygiW0RlYnVnZ2VyXSBOdW1iZXIgYW5kIEJyZWFrZG93biBvZiBBbGVydHMgUmVxdWVzdGVkIiksVFg9X2soIltEZWJ1Z2dlcl0gTnVtYmVyIGFuZCBCcmVha2Rvd24gb2YgQWxlcnRzIExvYWRlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLE5YPV9rKCJbRGVidWdnZXJdIEFsZXJ0cyBEYXRhIG9mIGFuIEFsZXJ0VHlwZSBJcyBMb2FkZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSx6WD1faygiW0RlYnVnZ2VyXSBBbGVydCBUeXBlIEZvY3VzIFRvZ2dsZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxJWD1faygiW0RlYnVnZ2VyXSBOdW1iZXIgb2YgVG9wLUxldmVsIEV4ZWN1dGlvbnMgUmVxdWVzdGVkIiksSFg9X2soIltEZWJ1Z2dlcl0gTnVtYmVyIG9mIFRvcC1MZXZlbCBFeGVjdXRpb25zIExvYWRlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLEZYPV9rKCJbRGVidWdnZXJdIEV4ZWN1dGlvbkRpZ2VzdHMgUmVxdWVzdGVkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksTFg9X2soIltEZWJ1Z2dlcl0gRXhlY3V0aW9uRGlnZXN0cyBMb2FkZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxCWD1faygiW0RlYnVnZ2VyXSBTY3JvbGwgTGVmdHdhcmQgb24gdGhlIEV4ZWN1dGlvbiBUaW1lbGluZSIpLFZYPV9rKCJbRGVidWdnZXJdIFNjcm9sbCBSaWdodHdhcmQgb24gdGhlIEV4ZWN1dGlvbiBUaW1lbGluZSIpLGpYPV9rKCJbRGVidWdnZXJdIFNjcm9sbCB0aGUgRXhlY3V0aW9uIFRpbWVsaW5lIHRvIEdpdmVuIEluZGV4Iix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksVVg9X2soIltEZWJ1Z2dlcl0gRXhlY3V0aW9uIERhdGEgT2JqZWN0cyBCZWluZyBGb2N1c2VkIE9uIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksV1g9X2soIltEZWJ1Z2dlcl0gRXhlY3V0aW9uIERhdGEgT2JqZWN0cyBMb2FkZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxHWD1faygiW0RlYnVnZ2VyXSBOdW1iZXIgb2YgSW50cmEtR3JhcGggRXhlY3V0aW9ucyBSZXF1ZXN0ZWQiKSxZWD1faygiW0RlYnVnZ2VyXSBOdW1iZXIgb2YgSW50cmEtR3JhcGggRXhlY3V0aW9ucyBMb2FkZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxxWD1faygiW0RlYnVnZ2VyXSBJbnRyYS1HcmFwaCBFeGVjdXRpb24gRGF0YSBSZXF1ZXN0ZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxaWD1faygiW0RlYnVnZ2VyXSBJbnRyYS1HcmFwaCBFeGVjdXRpb24gRGF0YSBMb2FkZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxYWD1faygiW0RlYnVnZ2VyXSBTY3JvbGwgSW50cmEtR3JhcGggRXhlY3V0aW9uIExpc3QgdG8gR2l2ZW4gSW5kZXgiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxLWD1faygiW0RlYnVnZ2VyXSBHcmFwaCBFeGVjdXRpb24gaXMgRm9jdXNlZCBPbiIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLEpYPV9rKCJbRGVidWdnZXJdIEdyYXBoIE9wIElzIEZvY3VzZWQgT24iLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxRWD1faygiW0RlYnVnZ2VyXSBHcmFwaCBPcCBJbmZvIFJlcXVlc3RlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLCRYPV9rKCJbRGVidWdnZXJdIEdyYXBoIE9wIEluZm8gTG9hZGVkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksdEs9X2soIltEZWJ1Z2dlcl0gU291cmNlIEZpbGUgTGlzdCBSZXF1ZXN0ZWQuIiksZUs9X2soIltEZWJ1Z2dlcl0gU291cmNlIEZpbGUgTGlzdCBMb2FkZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxuSz1faygiW0RlYnVnZ2VyXSBTb3VyY2UgRmlsZSBMaW5lIElzIEZvY3VzZWQgb24iLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxvSz1faygiW0RlYnVnZ2VyXSBTb3VyY2UgRmlsZSBSZXF1ZXN0ZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxpSz1faygiW0RlYnVnZ2VyXSBTb3VyY2UgRmlsZSBMb2FkZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxhSz1faygiW0RlYnVnZ2VyXSBBIFNldCBvZiBTdGFjayBGcmFtZXMgSGF2ZSBCZWVuIExvYWRlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLHJLPSJkZWJ1Z2dlciI7dmFyIHNLLGxLLGNLO2Z1bmN0aW9uIGRLKHQpe2lmKG51bGw9PT10LmNvZGVMb2NhdGlvbkZvY3VzVHlwZSlyZXR1cm4gbnVsbDtsZXQgZT1bXTtpZih0LmNvZGVMb2NhdGlvbkZvY3VzVHlwZT09PWNLLkVYRUNVVElPTil7Y29uc3R7Zm9jdXNJbmRleDpuLGV4ZWN1dGlvbkRhdGE6b309dC5leGVjdXRpb25zO2lmKG51bGw9PT1ufHx2b2lkIDA9PT1vW25dKXJldHVybiBudWxsO2U9b1tuXS5zdGFja19mcmFtZV9pZHN9ZWxzZXtpZihudWxsPT09dC5ncmFwaHMuZm9jdXNlZE9wKXJldHVybiBudWxsO2NvbnN0e2dyYXBoSWQ6bixvcE5hbWU6b309dC5ncmFwaHMuZm9jdXNlZE9wO2lmKHZvaWQgMD09PXQuZ3JhcGhzLm9wc1tuXXx8IXQuZ3JhcGhzLm9wc1tuXS5oYXMobykpcmV0dXJuIG51bGw7ZT10LmdyYXBocy5vcHNbbl0uZ2V0KG8pLnN0YWNrX2ZyYW1lX2lkc31jb25zdCBuPVtdO2Zvcihjb25zdCBvIG9mIGUpe2lmKG51bGw9PXQuc3RhY2tGcmFtZXNbb10pcmV0dXJuIG51bGw7bi5wdXNoKHQuc3RhY2tGcmFtZXNbb10pfXJldHVybiBufWZ1bmN0aW9uIHBLKHQsZSl7cmV0dXJuIHQuZmluZEluZGV4KCh0PT50Lmhvc3RfbmFtZT09PWUuaG9zdF9uYW1lJiZ0LmZpbGVfcGF0aD09PWUuZmlsZV9wYXRoKSl9ZnVuY3Rpb24gbUsodCxlLG4pe2lmKGU+PW4pdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBiZWdpbiB0byBiZSBsZXNzIHRoYW4gZW5kLCBidXQgZ290IGJlZ2luPSR7ZX0sIGVuZD0ke259YCk7cmV0dXJuIHQuZmluZEluZGV4KCh0PT50LmJlZ2luPT09ZSYmdC5lbmQ9PT1uKSl9ZnVuY3Rpb24gZksodCl7Y29uc3QgZT10LnNvdXJjZUNvZGUuZm9jdXNMaW5lU3BlYztpZighdC5zdGlja1RvQm90dG9tbW9zdEZyYW1lSW5Gb2N1c2VkRmlsZSlyZXR1cm4gZTtjb25zdCBuPWRLKHQpO2lmKG51bGw9PT1uKXJldHVybiBlO2NvbnN0IG89KGZ1bmN0aW9uIGkodCxlKXtpZihudWxsPT09ZSlyZXR1cm4gbnVsbDtmb3IobGV0IG49dC5sZW5ndGgtMTtuPj0wOy0tbil7Y29uc3Qgbz10W25dLHtob3N0X25hbWU6aSxmaWxlX3BhdGg6YX09bztpZihpPT09ZS5ob3N0X25hbWUmJmE9PT1lLmZpbGVfcGF0aClyZXR1cm4gb31yZXR1cm4gbnVsbH0pKG4sZSk7cmV0dXJuIG51bGw9PT1vP2U6b30hKGZ1bmN0aW9uKHQpe3RbdC5VTlNQRUNJRklFRD0wXT0iVU5TUEVDSUZJRUQiLHRbdC5OT19URU5TT1I9MV09Ik5PX1RFTlNPUiIsdFt0LkNVUlRfSEVBTFRIPTJdPSJDVVJUX0hFQUxUSCIsdFt0LkNPTkNJU0VfSEVBTFRIPTNdPSJDT05DSVNFX0hFQUxUSCIsdFt0LkZVTExfSEVBTFRIPTRdPSJGVUxMX0hFQUxUSCIsdFt0LlNIQVBFPTVdPSJTSEFQRSIsdFt0LkZVTExfTlVNRVJJQ1M9Nl09IkZVTExfTlVNRVJJQ1MiLHRbdC5GVUxMX1RFTlNPUj03XT0iRlVMTF9URU5TT1IiLHRbdC5SRURVQ0VfSU5GX05BTl9USFJFRV9TTE9UUz04XT0iUkVEVUNFX0lORl9OQU5fVEhSRUVfU0xPVFMifSkoc0t8fChzSz17fSkpLChmdW5jdGlvbih0KXt0LkZVTkNUSU9OX1JFQ09NUElMRV9BTEVSVD0iRnVuY3Rpb25SZWNvbXBpbGVzQWxlcnQiLHQuSU5GX05BTl9BTEVSVD0iSW5mTmFuQWxlcnQiLHQuVEVOU09SX1NIQVBFX0FMRVJUPSJUZW5zb3JTaGFwZUFsZXJ0In0pKGxLfHwobEs9e30pKSwoZnVuY3Rpb24odCl7dFt0LkVYRUNVVElPTj0wXT0iRVhFQ1VUSU9OIix0W3QuR1JBUEhfT1BfQ1JFQVRJT049MV09IkdSQVBIX09QX0NSRUFUSU9OIn0pKGNLfHwoY0s9e30pKTtjb25zdCB1Sz1WUyh7cnVuczp7fSxydW5zTG9hZGVkOntzdGF0ZTpVRS5OT1RfTE9BREVELGxhc3RMb2FkZWRUaW1lSW5NczpudWxsfSxhY3RpdmVSdW5JZDpudWxsLGxhc3REYXRhUG9sbE9uc2V0VGltZU1zOi0xLGxhc3ROb25FbXB0eVBvbGxEYXRhVGltZU1zOjEsYWxlcnRzOnthbGVydHNMb2FkZWQ6e3N0YXRlOlVFLk5PVF9MT0FERUQsbGFzdExvYWRlZFRpbWVJbk1zOm51bGx9LG51bUFsZXJ0czowLGFsZXJ0c0JyZWFrZG93bjp7fSxhbGVydHM6e30sZXhlY3V0aW9uSW5kaWNlczp7fSxncmFwaEV4ZWN1dGlvbkluZGljZXM6e30sZm9jdXNUeXBlOm51bGx9LGV4ZWN1dGlvbnM6KGZ1bmN0aW9uIGdLKCl7cmV0dXJue251bUV4ZWN1dGlvbnNMb2FkZWQ6e3N0YXRlOlVFLk5PVF9MT0FERUQsbGFzdExvYWRlZFRpbWVJbk1zOm51bGx9LGV4ZWN1dGlvbkRpZ2VzdHNMb2FkZWQ6e2xvYWRpbmdSYW5nZXM6W10sbnVtRXhlY3V0aW9uczowLHBhZ2VMb2FkZWRTaXplczp7fX0sZGlzcGxheUNvdW50OjUwLHBhZ2VTaXplOjEwMCxzY3JvbGxCZWdpbkluZGV4OjAsZm9jdXNJbmRleDpudWxsLGV4ZWN1dGlvbkRpZ2VzdHM6e30sZXhlY3V0aW9uRGF0YTp7fX19KSgpLGdyYXBoRXhlY3V0aW9uczooZnVuY3Rpb24gaEsoKXtyZXR1cm57bnVtRXhlY3V0aW9uc0xvYWRlZDp7c3RhdGU6VUUuTk9UX0xPQURFRCxsYXN0TG9hZGVkVGltZUluTXM6bnVsbH0sZXhlY3V0aW9uRGlnZXN0c0xvYWRlZDp7bG9hZGluZ1JhbmdlczpbXSxudW1FeGVjdXRpb25zOjAscGFnZUxvYWRlZFNpemVzOnt9fSxkaXNwbGF5Q291bnQ6MTAwLHBhZ2VTaXplOjIwMCxzY3JvbGxCZWdpbkluZGV4OjAsZm9jdXNJbmRleDpudWxsLGdyYXBoRXhlY3V0aW9uRGlnZXN0czp7fSxncmFwaEV4ZWN1dGlvbkRhdGFMb2FkaW5nUGFnZXM6W10sZ3JhcGhFeGVjdXRpb25EYXRhUGFnZUxvYWRlZFNpemVzOnt9LGdyYXBoRXhlY3V0aW9uRGF0YTp7fX19KSgpLGdyYXBoczp7b3BzOnt9LGxvYWRpbmdPcHM6e30sZm9jdXNlZE9wOm51bGx9LHN0YWNrRnJhbWVzOnt9LGNvZGVMb2NhdGlvbkZvY3VzVHlwZTpudWxsLHN0aWNrVG9Cb3R0b21tb3N0RnJhbWVJbkZvY3VzZWRGaWxlOiExLHNvdXJjZUNvZGU6e3NvdXJjZUZpbGVMaXN0TG9hZGVkOntzdGF0ZTpVRS5OT1RfTE9BREVELGxhc3RMb2FkZWRUaW1lSW5NczpudWxsfSxzb3VyY2VGaWxlTGlzdDpbXSxmaWxlQ29udGVudHM6W10sZm9jdXNMaW5lU3BlYzpudWxsfX0sQlMoRFgsKHQ9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7cnVuc0xvYWRlZDpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5ydW5zTG9hZGVkKSx7c3RhdGU6VUUuTE9BRElOR30pfSkpKSxCUyhFWCwodD0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtydW5zTG9hZGVkOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LnJ1bnNMb2FkZWQpLHtzdGF0ZTpVRS5GQUlMRUR9KX0pKSksQlMoUlgsKCh0LHtydW5zOmV9KT0+e2NvbnN0IG49T2JqZWN0LmtleXMoZSksbz1uLmxlbmd0aD4wJiZudWxsPT09dC5hY3RpdmVSdW5JZDtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtsYXN0Tm9uRW1wdHlQb2xsRGF0YVRpbWVNczpvP0RhdGUubm93KCk6dC5sYXN0Tm9uRW1wdHlQb2xsRGF0YVRpbWVNcyxydW5zOmUscnVuc0xvYWRlZDp7c3RhdGU6VUUuTE9BREVELGxhc3RMb2FkZWRUaW1lSW5NczpEYXRlLm5vdygpfSxhY3RpdmVSdW5JZDpuLmxlbmd0aD4wP25bMF06bnVsbH0pfSkpLEJTKFNYLCh0PT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2xhc3REYXRhUG9sbE9uc2V0VGltZU1zOkRhdGUubm93KCl9KSkpLEJTKEFYLCh0PT5udWxsPT09dC5hY3RpdmVSdW5JZD90Ok9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7YWxlcnRzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmFsZXJ0cykse2FsZXJ0c0xvYWRlZDpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5hbGVydHMuYWxlcnRzTG9hZGVkKSx7c3RhdGU6VUUuTE9BRElOR30pfSl9KSkpLEJTKFRYLCgodCx7bnVtQWxlcnRzOmUsYWxlcnRzQnJlYWtkb3duOm59KT0+e2lmKG51bGw9PT10LmFjdGl2ZVJ1bklkKXJldHVybiB0O2NvbnN0IG89ZT50LmFsZXJ0cy5udW1BbGVydHM7cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7bGFzdE5vbkVtcHR5UG9sbERhdGFUaW1lTXM6bz9EYXRlLm5vdygpOnQubGFzdE5vbkVtcHR5UG9sbERhdGFUaW1lTXMsYWxlcnRzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmFsZXJ0cykse2FsZXJ0c0xvYWRlZDpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5hbGVydHMuYWxlcnRzTG9hZGVkKSx7c3RhdGU6VUUuTE9BREVELGxhc3RMb2FkZWRUaW1lSW5NczpEYXRlLm5vdygpfSksbnVtQWxlcnRzOmUsYWxlcnRzQnJlYWtkb3duOm59KX0pfSkpLEJTKE5YLCgodCx7bnVtQWxlcnRzOmUsYWxlcnRzQnJlYWtkb3duOm4sYWxlcnRUeXBlOm8sYmVnaW46aSxhbGVydHM6YX0pPT57aWYobnVsbD09PXQuYWN0aXZlUnVuSWQpcmV0dXJuIHQ7Y29uc3Qgcj17fSxzPXQuYWxlcnRzLmV4ZWN1dGlvbkluZGljZXNbb10/dC5hbGVydHMuZXhlY3V0aW9uSW5kaWNlc1tvXS5zbGljZSgpOltdLGw9dC5hbGVydHMuZ3JhcGhFeGVjdXRpb25JbmRpY2VzW29dP3QuYWxlcnRzLmdyYXBoRXhlY3V0aW9uSW5kaWNlc1tvXS5zbGljZSgpOltdO2ZvcihsZXQgdD0wO3Q8YS5sZW5ndGg7Kyt0KXtjb25zdCBlPWkrdCxuPWFbdF07aWYocltlXT1uLG4uYWxlcnRfdHlwZT09PWxLLklORl9OQU5fQUxFUlQpe2NvbnN0IHQ9bjtzW2VdPXQuZXhlY3V0aW9uX2luZGV4LG51bGwhPT10LmdyYXBoX2V4ZWN1dGlvbl90cmFjZV9pbmRleCYmKGxbZV09dC5ncmFwaF9leGVjdXRpb25fdHJhY2VfaW5kZXgpfX12b2lkIDAhPT10LmFsZXJ0cy5hbGVydHNbb10mJk9iamVjdC5hc3NpZ24ocix0LmFsZXJ0cy5hbGVydHNbb10pO2xldCBjPXQuZXhlY3V0aW9ucy5zY3JvbGxCZWdpbkluZGV4LGQ9dC5ncmFwaEV4ZWN1dGlvbnMuZm9jdXNJbmRleDtpZihvPT09bEsuSU5GX05BTl9BTEVSVCYmMD09PWkpe2NvbnN0IGU9YVswXTtjPU1hdGgubWF4KDAsZS5leGVjdXRpb25faW5kZXgtTWF0aC5mbG9vcih0LmV4ZWN1dGlvbnMuZGlzcGxheUNvdW50LzIpKSxudWxsIT09ZS5ncmFwaF9leGVjdXRpb25fdHJhY2VfaW5kZXgmJihkPWUuZ3JhcGhfZXhlY3V0aW9uX3RyYWNlX2luZGV4KX1yZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtleGVjdXRpb25zOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmV4ZWN1dGlvbnMpLHtzY3JvbGxCZWdpbkluZGV4OmN9KSxncmFwaEV4ZWN1dGlvbnM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuZ3JhcGhFeGVjdXRpb25zKSx7Zm9jdXNJbmRleDpkfSksYWxlcnRzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmFsZXJ0cykse2FsZXJ0c0xvYWRlZDpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5hbGVydHMuYWxlcnRzTG9hZGVkKSx7c3RhdGU6VUUuTE9BREVELGxhc3RMb2FkZWRUaW1lSW5NczpEYXRlLm5vdygpfSksbnVtQWxlcnRzOmUsYWxlcnRzQnJlYWtkb3duOm4sYWxlcnRzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmFsZXJ0cy5hbGVydHMpLHtbb106cn0pLGV4ZWN1dGlvbkluZGljZXM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuYWxlcnRzLmV4ZWN1dGlvbkluZGljZXMpLHtbb106c30pLGdyYXBoRXhlY3V0aW9uSW5kaWNlczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5hbGVydHMuZ3JhcGhFeGVjdXRpb25JbmRpY2VzKSx7W29dOmx9KX0pfSl9KSksQlMoelgsKCh0LHthbGVydFR5cGU6ZX0pPT57Y29uc3Qgbj1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2FsZXJ0czpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5hbGVydHMpLHtmb2N1c1R5cGU6dC5hbGVydHMuZm9jdXNUeXBlPT09ZT9udWxsOmV9KX0pLG89bi5hbGVydHMuZm9jdXNUeXBlO2lmKG51bGwhPT1vKXtjb25zdCB0PW4uYWxlcnRzLmV4ZWN1dGlvbkluZGljZXNbb118fFtdO3ZvaWQgMCE9PXRbMF0mJihuLmV4ZWN1dGlvbnM9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4uZXhlY3V0aW9ucykse3Njcm9sbEJlZ2luSW5kZXg6TWF0aC5tYXgoMCxOdW1iZXIodFswXSktTWF0aC5mbG9vcihuLmV4ZWN1dGlvbnMuZGlzcGxheUNvdW50LzIpKX0pKX1yZXR1cm4gbn0pKSxCUyhJWCwodD0+bnVsbD09PXQuYWN0aXZlUnVuSWQ/dDpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2V4ZWN1dGlvbnM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuZXhlY3V0aW9ucykse251bUV4ZWN1dGlvbnNMb2FkZWQ6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuZXhlY3V0aW9ucy5udW1FeGVjdXRpb25zTG9hZGVkKSx7c3RhdGU6VUUuTE9BRElOR30pfSl9KSkpLEJTKEhYLCgodCx7bnVtRXhlY3V0aW9uczplfSk9PntpZihudWxsPT09dC5hY3RpdmVSdW5JZClyZXR1cm4gdDtjb25zdCBuPWU+dC5leGVjdXRpb25zLmV4ZWN1dGlvbkRpZ2VzdHNMb2FkZWQubnVtRXhlY3V0aW9ucyxvPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7bGFzdE5vbkVtcHR5UG9sbERhdGFUaW1lTXM6bj9EYXRlLm5vdygpOnQubGFzdE5vbkVtcHR5UG9sbERhdGFUaW1lTXMsZXhlY3V0aW9uczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5leGVjdXRpb25zKSx7bnVtRXhlY3V0aW9uc0xvYWRlZDpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5leGVjdXRpb25zLm51bUV4ZWN1dGlvbnNMb2FkZWQpLHtzdGF0ZTpVRS5MT0FERUQsbGFzdExvYWRlZFRpbWVJbk1zOkRhdGUubm93KCl9KSxleGVjdXRpb25EaWdlc3RzTG9hZGVkOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmV4ZWN1dGlvbnMuZXhlY3V0aW9uRGlnZXN0c0xvYWRlZCkse251bUV4ZWN1dGlvbnM6ZX0pfSl9KTtyZXR1cm4gZT4wJiZudWxsPT09dC5leGVjdXRpb25zLmZvY3VzSW5kZXgmJihvLmV4ZWN1dGlvbnMuZm9jdXNJbmRleD0wKSxvfSkpLEJTKEZYLCgodCxlKT0+e2lmKG51bGw9PT10LmFjdGl2ZVJ1bklkKXJldHVybiB0O2NvbnN0IG49Wy4uLnQuZXhlY3V0aW9ucy5leGVjdXRpb25EaWdlc3RzTG9hZGVkLmxvYWRpbmdSYW5nZXNdOy0xPT09bUsobixlLmJlZ2luLGUuZW5kKSYmbi5wdXNoKHtiZWdpbjplLmJlZ2luLGVuZDplLmVuZH0pO3JldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2V4ZWN1dGlvbnM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuZXhlY3V0aW9ucykse2V4ZWN1dGlvbkRpZ2VzdHNMb2FkZWQ6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuZXhlY3V0aW9ucy5leGVjdXRpb25EaWdlc3RzTG9hZGVkKSx7bG9hZGluZ1JhbmdlczpufSl9KX0pfSkpLEJTKExYLCgodCxlKT0+e2lmKG51bGw9PT10LmFjdGl2ZVJ1bklkKXJldHVybiB0O2NvbnN0IG49Wy4uLnQuZXhlY3V0aW9ucy5leGVjdXRpb25EaWdlc3RzTG9hZGVkLmxvYWRpbmdSYW5nZXNdLG89bUsobixlLmJlZ2luLGUuZW5kKTstMSE9PW8mJm4uc3BsaWNlKG8sMSk7Y29uc3QgaT1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2V4ZWN1dGlvbnM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuZXhlY3V0aW9ucykse2V4ZWN1dGlvbkRpZ2VzdHNMb2FkZWQ6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuZXhlY3V0aW9ucy5leGVjdXRpb25EaWdlc3RzTG9hZGVkKSx7bnVtRXhlY3V0aW9uczplLm51bV9kaWdlc3RzLGxvYWRpbmdSYW5nZXM6bn0pLGV4ZWN1dGlvbkRpZ2VzdHM6T2JqZWN0LmFzc2lnbih7fSx0LmV4ZWN1dGlvbnMuZXhlY3V0aW9uRGlnZXN0cyl9KX0pO2ZvcihsZXQgdD1lLmJlZ2luO3Q8ZS5lbmQ7Kyt0KWkuZXhlY3V0aW9ucy5leGVjdXRpb25EaWdlc3RzW3RdPWUuZXhlY3V0aW9uX2RpZ2VzdHNbdC1lLmJlZ2luXTtpZihlLmVuZD5lLmJlZ2luKXtjb25zdCBuPWUuYmVnaW4vdC5leGVjdXRpb25zLnBhZ2VTaXplO2kuZXhlY3V0aW9ucy5leGVjdXRpb25EaWdlc3RzTG9hZGVkLnBhZ2VMb2FkZWRTaXplcz1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30saS5leGVjdXRpb25zLmV4ZWN1dGlvbkRpZ2VzdHNMb2FkZWQucGFnZUxvYWRlZFNpemVzKSx7W25dOmUuZW5kLWUuYmVnaW59KX1yZXR1cm4gaX0pKSxCUyhCWCwodD0+e2lmKG51bGw9PT10LmFjdGl2ZVJ1bklkKXJldHVybiB0O2xldCBlPXQuZXhlY3V0aW9ucy5zY3JvbGxCZWdpbkluZGV4O3JldHVybiBlPjAmJmUtLSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2V4ZWN1dGlvbnM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuZXhlY3V0aW9ucykse3Njcm9sbEJlZ2luSW5kZXg6ZX0pfSl9KSksQlMoVlgsKHQ9PntpZihudWxsPT09dC5hY3RpdmVSdW5JZClyZXR1cm4gdDtsZXQgZT10LmV4ZWN1dGlvbnMuc2Nyb2xsQmVnaW5JbmRleDtyZXR1cm4gZSt0LmV4ZWN1dGlvbnMuZGlzcGxheUNvdW50KzE8PXQuZXhlY3V0aW9ucy5leGVjdXRpb25EaWdlc3RzTG9hZGVkLm51bUV4ZWN1dGlvbnMmJmUrKyxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2V4ZWN1dGlvbnM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuZXhlY3V0aW9ucykse3Njcm9sbEJlZ2luSW5kZXg6ZX0pfSl9KSksQlMoalgsKCh0LGUpPT57aWYoZS5pbmRleDwwfHwhTnVtYmVyLmlzSW50ZWdlcihlLmluZGV4KSl0aHJvdyBuZXcgRXJyb3IoYEF0dGVtcHQgdG8gc2Nyb2xsIHRvIG5lZ2F0aXZlIG9yIG5vbi1pbnRlZ2VyIGV4ZWN1dGlvbiBpbmRleCAoJHtlLmluZGV4fSlgKTtjb25zdHtkaXNwbGF5Q291bnQ6bn09dC5leGVjdXRpb25zLHtudW1FeGVjdXRpb25zOm99PXQuZXhlY3V0aW9ucy5leGVjdXRpb25EaWdlc3RzTG9hZGVkO2lmKGUuaW5kZXg+TWF0aC5tYXgoMCxvLW4pKXRocm93IG5ldyBFcnJvcihgQXR0ZW1wdCB0byBzY3JvbGwgdG8gZXhlY3V0aW9uIGluZGV4ICgke2UuaW5kZXh9KSwgd2hpY2ggZXhjZWVkcyBtYXhpbXVtIGFsbG93ZWQgaW5kZXggKG51bUV4ZWN1dGlvbnM9JHtvfTsgZGlzcGxheUNvdW50PSR7bn0pYCk7cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7ZXhlY3V0aW9uczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5leGVjdXRpb25zKSx7c2Nyb2xsQmVnaW5JbmRleDplLmluZGV4fSl9KX0pKSxCUyhVWCwoKHQsZSk9Pntjb25zdCBuPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7ZXhlY3V0aW9uczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5leGVjdXRpb25zKSx7Zm9jdXNJbmRleDp0LmV4ZWN1dGlvbnMuc2Nyb2xsQmVnaW5JbmRleCtlLmRpc3BsYXlJbmRleH0pLGNvZGVMb2NhdGlvbkZvY3VzVHlwZTpjSy5FWEVDVVRJT04sc291cmNlQ29kZTpPYmplY3QuYXNzaWduKHt9LHQuc291cmNlQ29kZSl9KTtyZXR1cm4gbi5zb3VyY2VDb2RlLmZvY3VzTGluZVNwZWM9Zksobiksbn0pKSxCUyhXWCwoKHQsZSk9PntpZihudWxsPT09dC5hY3RpdmVSdW5JZClyZXR1cm4gdDtjb25zdCBuPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7ZXhlY3V0aW9uczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5leGVjdXRpb25zKSx7ZXhlY3V0aW9uRGF0YTpPYmplY3QuYXNzaWduKHt9LHQuZXhlY3V0aW9ucy5leGVjdXRpb25EYXRhKX0pfSk7Zm9yKGxldCB0PWUuYmVnaW47dDxlLmVuZDsrK3Qpbi5leGVjdXRpb25zLmV4ZWN1dGlvbkRhdGFbdF09ZS5leGVjdXRpb25zW3QtZS5iZWdpbl07cmV0dXJuIG59KSksQlMoR1gsKHQ9Pm51bGw9PT10LmFjdGl2ZVJ1bklkP3Q6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtncmFwaEV4ZWN1dGlvbnM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuZ3JhcGhFeGVjdXRpb25zKSx7bnVtRXhlY3V0aW9uc0xvYWRlZDpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5ncmFwaEV4ZWN1dGlvbnMubnVtRXhlY3V0aW9uc0xvYWRlZCkse3N0YXRlOlVFLkxPQURJTkd9KX0pfSkpKSxCUyhZWCwoKHQse251bUdyYXBoRXhlY3V0aW9uczplfSk9PntpZihudWxsPT09dC5hY3RpdmVSdW5JZClyZXR1cm4gdDtjb25zdCBuPWU+dC5ncmFwaEV4ZWN1dGlvbnMuZXhlY3V0aW9uRGlnZXN0c0xvYWRlZC5udW1FeGVjdXRpb25zLG89T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtsYXN0Tm9uRW1wdHlQb2xsRGF0YVRpbWVNczpuP0RhdGUubm93KCk6dC5sYXN0Tm9uRW1wdHlQb2xsRGF0YVRpbWVNcyxncmFwaEV4ZWN1dGlvbnM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuZ3JhcGhFeGVjdXRpb25zKSx7bnVtRXhlY3V0aW9uc0xvYWRlZDpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5ncmFwaEV4ZWN1dGlvbnMubnVtRXhlY3V0aW9uc0xvYWRlZCkse3N0YXRlOlVFLkxPQURFRCxsYXN0TG9hZGVkVGltZUluTXM6RGF0ZS5ub3coKX0pLGV4ZWN1dGlvbkRpZ2VzdHNMb2FkZWQ6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuZ3JhcGhFeGVjdXRpb25zLmV4ZWN1dGlvbkRpZ2VzdHNMb2FkZWQpLHtudW1FeGVjdXRpb25zOmV9KX0pfSk7cmV0dXJuIGU+MCYmbnVsbD09PXQuZ3JhcGhFeGVjdXRpb25zLmZvY3VzSW5kZXgmJihvLmdyYXBoRXhlY3V0aW9ucy5mb2N1c0luZGV4PTApLG99KSksQlMocVgsKCh0LHtwYWdlSW5kZXg6ZX0pPT57aWYobnVsbD09PXQuYWN0aXZlUnVuSWQpcmV0dXJuIHQ7Y29uc3Qgbj10LmdyYXBoRXhlY3V0aW9ucy5ncmFwaEV4ZWN1dGlvbkRhdGFMb2FkaW5nUGFnZXMuc2xpY2UoKTtyZXR1cm4tMT09PW4uaW5kZXhPZihlKSYmbi5wdXNoKGUpLE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7Z3JhcGhFeGVjdXRpb25zOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmdyYXBoRXhlY3V0aW9ucykse2dyYXBoRXhlY3V0aW9uRGF0YUxvYWRpbmdQYWdlczpufSl9KX0pKSxCUyhaWCwoKHQsZSk9PntpZihudWxsPT09dC5hY3RpdmVSdW5JZClyZXR1cm4gdDtjb25zdHtwYWdlU2l6ZTpufT10LmdyYXBoRXhlY3V0aW9ucyxvPXQuZ3JhcGhFeGVjdXRpb25zLmdyYXBoRXhlY3V0aW9uRGF0YUxvYWRpbmdQYWdlcy5zbGljZSgpLGk9T2JqZWN0LmFzc2lnbih7fSx0LmdyYXBoRXhlY3V0aW9ucy5ncmFwaEV4ZWN1dGlvbkRhdGFQYWdlTG9hZGVkU2l6ZXMpLGE9T2JqZWN0LmFzc2lnbih7fSx0LmdyYXBoRXhlY3V0aW9ucy5ncmFwaEV4ZWN1dGlvbkRhdGEpO2ZvcihsZXQgdD1lLmJlZ2luO3Q8ZS5lbmQ7Kyt0KXtjb25zdCByPU1hdGguZmxvb3IodC9uKTstMSE9PW8uaW5kZXhPZihyKSYmby5zcGxpY2Uoby5pbmRleE9mKHIpLDEpLHZvaWQgMD09PWlbcl0mJihpW3JdPTApLHZvaWQgMD09PWFbdF0mJmlbcl0rKyxhW3RdPWUuZ3JhcGhfZXhlY3V0aW9uc1t0LWUuYmVnaW5dfXJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2dyYXBoRXhlY3V0aW9uczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5ncmFwaEV4ZWN1dGlvbnMpLHtncmFwaEV4ZWN1dGlvbkRhdGFMb2FkaW5nUGFnZXM6byxncmFwaEV4ZWN1dGlvbkRhdGFQYWdlTG9hZGVkU2l6ZXM6aSxncmFwaEV4ZWN1dGlvbkRhdGE6YX0pfSl9KSksQlMoWFgsKCh0LGUpPT57aWYoZS5pbmRleDwwfHwhTnVtYmVyLmlzSW50ZWdlcihlLmluZGV4KSl0aHJvdyBuZXcgRXJyb3IoYEF0dGVtcHQgdG8gc2Nyb2xsIHRvIG5lZ2F0aXZlIG9yIG5vbi1pbnRlZ2VyIGdyYXBoLWV4ZWN1dGlvbiBpbmRleCAoJHtlLmluZGV4fSlgKTtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtncmFwaEV4ZWN1dGlvbnM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuZ3JhcGhFeGVjdXRpb25zKSx7c2Nyb2xsQmVnaW5JbmRleDplLmluZGV4fSl9KX0pKSxCUyhLWCwoKHQsZSk9PmJLKHQsZS5ncmFwaF9pZCxlLm9wX25hbWUsZS5pbmRleCkpKSxCUyhKWCwoKHQsZSk9PmJLKHQsZS5ncmFwaF9pZCxlLm9wX25hbWUpKSksQlMoUVgsKCh0LGUpPT57Y29uc3R7Z3JhcGhfaWQ6bixvcF9uYW1lOm99PWUsaT1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2dyYXBoczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5ncmFwaHMpLHtsb2FkaW5nT3BzOk9iamVjdC5hc3NpZ24oe30sdC5ncmFwaHMubG9hZGluZ09wcyl9KX0pO3JldHVybiB2b2lkIDA9PT1pLmdyYXBocy5sb2FkaW5nT3BzW25dJiYoaS5ncmFwaHMubG9hZGluZ09wc1tuXT1uZXcgTWFwKSxpLmdyYXBocy5sb2FkaW5nT3BzW25dLmhhcyhvKXx8aS5ncmFwaHMubG9hZGluZ09wc1tuXS5zZXQobyxVRS5MT0FESU5HKSxpfSkpLEJTKCRYLCgodCxlKT0+e2NvbnN0e2dyYXBoT3BJbmZvUmVzcG9uc2U6bn09ZSx7Z3JhcGhfaWRzOm99PW4saT1vW28ubGVuZ3RoLTFdLGE9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtncmFwaHM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuZ3JhcGhzKSx7b3BzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmdyYXBocy5vcHMpLHtbaV06bmV3IE1hcCh0LmdyYXBocy5vcHNbaV0pfSksbG9hZGluZ09wczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5ncmFwaHMubG9hZGluZ09wcykse1tpXTpuZXcgTWFwKHQuZ3JhcGhzLmxvYWRpbmdPcHNbaV0pfSl9KX0pO2Zvcihjb25zdCB0IG9mIG4uaW5wdXRzKXQuZGF0YSYmYS5ncmFwaHMub3BzW2ldLnNldCh0Lm9wX25hbWUsdC5kYXRhKTtmb3IobGV0IHQ9MDt0PG4uY29uc3VtZXJzLmxlbmd0aDsrK3QpZm9yKGNvbnN0IGUgb2Ygbi5jb25zdW1lcnNbdF0pZS5kYXRhJiZhLmdyYXBocy5vcHNbaV0uc2V0KGUub3BfbmFtZSxlLmRhdGEpO3JldHVybiBhLmdyYXBocy5vcHNbaV0uc2V0KG4ub3BfbmFtZSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbikse2lucHV0czpuLmlucHV0cy5tYXAoKHQ9Pih7b3BfbmFtZTp0Lm9wX25hbWUsb3V0cHV0X3Nsb3Q6dC5vdXRwdXRfc2xvdH0pKSksY29uc3VtZXJzOm4uY29uc3VtZXJzLm1hcCgodD0+dC5tYXAoKHQ9Pih7b3BfbmFtZTp0Lm9wX25hbWUsaW5wdXRfc2xvdDp0LmlucHV0X3Nsb3R9KSkpKSl9KSksYS5ncmFwaHMubG9hZGluZ09wc1tpXS5zZXQobi5vcF9uYW1lLFVFLkxPQURFRCksYX0pKSxCUyh0SywodD0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtzb3VyY2VDb2RlOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LnNvdXJjZUNvZGUpLHtzb3VyY2VGaWxlTGlzdExvYWRlZDpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5zb3VyY2VDb2RlLnNvdXJjZUZpbGVMaXN0TG9hZGVkKSx7c3RhdGU6VUUuTE9BRElOR30pfSl9KSkpLEJTKGVLLCgodCxlKT0+e3ZhciBuO2NvbnN0IG89T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtzb3VyY2VDb2RlOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LnNvdXJjZUNvZGUpLHtzb3VyY2VGaWxlTGlzdExvYWRlZDpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5zb3VyY2VDb2RlLnNvdXJjZUZpbGVMaXN0TG9hZGVkKSx7c3RhdGU6VUUuTE9BREVELGxhc3RMb2FkZWRUaW1lSW5NczpEYXRlLm5vdygpfSksc291cmNlRmlsZUxpc3Q6ZS5zb3VyY2VGaWxlcyxmaWxlQ29udGVudHM6dC5zb3VyY2VDb2RlLmZpbGVDb250ZW50cy5zbGljZSgpfSl9KSxpPWUuc291cmNlRmlsZXMubGVuZ3RoLHtmaWxlQ29udGVudHM6YX09by5zb3VyY2VDb2RlO2ZvcihsZXQgZT0wO2U8aTsrK2UpYVtlXT1udWxsIT09KG49dC5zb3VyY2VDb2RlLmZpbGVDb250ZW50c1tlXSkmJnZvaWQgMCE9PW4/bjp7bG9hZFN0YXRlOlVFLk5PVF9MT0FERUQsbGluZXM6bnVsbH07cmV0dXJuIG99KSksQlMobkssKCh0LGUpPT57Y29uc3Qgbj1kSyh0KSxvPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7c291cmNlQ29kZTpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5zb3VyY2VDb2RlKSx7Zm9jdXNMaW5lU3BlYzplLnN0YWNrRnJhbWV9KX0pO3JldHVybiBudWxsIT09biYmKG8uc3RpY2tUb0JvdHRvbW1vc3RGcmFtZUluRm9jdXNlZEZpbGU9KGZ1bmN0aW9uIGkodCxlKXtsZXQgbj0tMSxvPS0xO2lmKHQuZm9yRWFjaCgoKHtmaWxlX3BhdGg6dCxsaW5lbm86aX0sYSk9Pnt0PT09ZS5maWxlX3BhdGgmJihvPWEsaT09PWUubGluZW5vJiYobj1hKSl9KSksLTE9PT1uKXRocm93IG5ldyBFcnJvcihgU3RhY2sgZnJhbWUgJHtKU09OLnN0cmluZ2lmeShlKX0gaXMgbm90IGZvdW5kLmApO3JldHVybiBuPT09b30pKG4sZS5zdGFja0ZyYW1lKSksb30pKSxCUyhvSywoKHQsZSk9Pntjb25zdCBuPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7c291cmNlQ29kZTpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5zb3VyY2VDb2RlKSx7ZmlsZUNvbnRlbnRzOnQuc291cmNlQ29kZS5maWxlQ29udGVudHMuc2xpY2UoKX0pfSksbz1wSyhuLnNvdXJjZUNvZGUuc291cmNlRmlsZUxpc3QsZSk7aWYoIShvPj0wKSl0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBmaW5kIHRoZSBmb2xsb3dpbmcgZmlsZSBpbiBmaWxlIGxpc3Q6IGhvc3RfbmFtZT0iJHtlLmhvc3RfbmFtZX0iLCBmaWxlX3BhdGg9IiR7ZS5maWxlX3BhdGh9ImApO3JldHVybiBuLnNvdXJjZUNvZGUuZmlsZUNvbnRlbnRzLnNwbGljZShvLDEsT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4uc291cmNlQ29kZS5maWxlQ29udGVudHNbb10pLHtsb2FkU3RhdGU6VUUuTE9BRElOR30pKSxufSkpLEJTKGlLLCgodCxlKT0+e2NvbnN0IG49T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtzb3VyY2VDb2RlOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LnNvdXJjZUNvZGUpLHtmaWxlQ29udGVudHM6dC5zb3VyY2VDb2RlLmZpbGVDb250ZW50cy5zbGljZSgpfSl9KSxvPXBLKG4uc291cmNlQ29kZS5zb3VyY2VGaWxlTGlzdCxlKTtpZighKG8+PTApKXRocm93IG5ldyBFcnJvcihgQ2Fubm90IGZpbmQgdGhlIGZvbGxvd2luZyBmaWxlIGluIGZpbGUgbGlzdDogaG9zdF9uYW1lPSIke2UuaG9zdF9uYW1lfSIsIGZpbGVfcGF0aD0iJHtlLmZpbGVfcGF0aH0iYCk7cmV0dXJuIG4uc291cmNlQ29kZS5maWxlQ29udGVudHMuc3BsaWNlKG8sMSx7bG9hZFN0YXRlOlVFLkxPQURFRCxsaW5lczplLmxpbmVzfSksbn0pKSxCUyhhSywoKHQsZSk9PntpZihudWxsPT09dC5hY3RpdmVSdW5JZClyZXR1cm4gdDtjb25zdCBuPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7c3RhY2tGcmFtZXM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuc3RhY2tGcmFtZXMpLGUuc3RhY2tGcmFtZXMpLHNvdXJjZUNvZGU6T2JqZWN0LmFzc2lnbih7fSx0LnNvdXJjZUNvZGUpfSk7cmV0dXJuIG4uc291cmNlQ29kZS5mb2N1c0xpbmVTcGVjPWZLKG4pLG59KSkpO2Z1bmN0aW9uIGJLKHQsZSxuLG8pe2NvbnN0IGk9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtncmFwaHM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuZ3JhcGhzKSx7Zm9jdXNlZE9wOntncmFwaElkOmUsb3BOYW1lOm59fSksY29kZUxvY2F0aW9uRm9jdXNUeXBlOmNLLkdSQVBIX09QX0NSRUFUSU9OLHNvdXJjZUNvZGU6T2JqZWN0LmFzc2lnbih7fSx0LnNvdXJjZUNvZGUpfSk7cmV0dXJuIGkuc291cmNlQ29kZS5mb2N1c0xpbmVTcGVjPWZLKGkpLHZvaWQgMCE9PW8mJihpLmdyYXBoRXhlY3V0aW9ucz1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5ncmFwaEV4ZWN1dGlvbnMpLHtmb2N1c0luZGV4Om99KSksaX1mdW5jdGlvbiB5Syh0LGUpe3JldHVybiB1Syh0LGUpfWNvbnN0IF9LPV9TKHJLKSxDSz1iUyhfSywodD0+dC5ydW5zKSksTUs9YlMoX0ssKHQ9PnQucnVuc0xvYWRlZCkpLHZLPWJTKF9LLCh0PT50LmFjdGl2ZVJ1bklkKSkseEs9YlMoX0ssKHQ9PnQubGFzdERhdGFQb2xsT25zZXRUaW1lTXMtdC5sYXN0Tm9uRW1wdHlQb2xsRGF0YVRpbWVNcykpLE9LPWJTKF9LLCh0PT50LmFsZXJ0cykpLFBLPWJTKE9LLCh0PT50LmFsZXJ0c0xvYWRlZCkpLHdLPWJTKE9LLCh0PT50Lm51bUFsZXJ0cykpLGtLPWJTKE9LLCh0PT50LmZvY3VzVHlwZSkpLFNLPWJTKE9LLCh0PT5udWxsPT09dC5mb2N1c1R5cGU/MDp0LmFsZXJ0c0JyZWFrZG93blt0LmZvY3VzVHlwZV18fDApKSxESz1iUyhPSywodD0+bnVsbD09PXQuZm9jdXNUeXBlfHx2b2lkIDA9PT10LmFsZXJ0c1t0LmZvY3VzVHlwZV0/bnVsbDp0LmFsZXJ0c1t0LmZvY3VzVHlwZV0pKSxSSz1iUyhPSywodD0+dC5hbGVydHNCcmVha2Rvd24pKSxFSz1iUyhfSywodD0+dC5leGVjdXRpb25zKSksQUs9YlMoRUssKHQ9PnQubnVtRXhlY3V0aW9uc0xvYWRlZCkpLFRLPWJTKEVLLCh0PT50LmV4ZWN1dGlvbkRpZ2VzdHNMb2FkZWQpKSxOSz1iUyhFSywodD0+dC5leGVjdXRpb25EaWdlc3RzTG9hZGVkLm51bUV4ZWN1dGlvbnMpKSx6Sz1iUyhFSywodD0+dC5zY3JvbGxCZWdpbkluZGV4KSksSUs9YlMoRUssKHQ9PnQucGFnZVNpemUpKSxISz1iUyhFSywodD0+dC5kaXNwbGF5Q291bnQpKSxGSz1iUyhFSywodD0+e2NvbnN0IGU9W107Zm9yKGxldCBuPXQuc2Nyb2xsQmVnaW5JbmRleDtuPHQuc2Nyb2xsQmVnaW5JbmRleCt0LmRpc3BsYXlDb3VudDsrK24pZS5wdXNoKG4gaW4gdC5leGVjdXRpb25EaWdlc3RzP3QuZXhlY3V0aW9uRGlnZXN0c1tuXTpudWxsKTtyZXR1cm4gZX0pKSxMSz1iUyhfSywodD0+dC5ncmFwaEV4ZWN1dGlvbnMpKSxCSz1iUyhMSywodD0+dC5udW1FeGVjdXRpb25zTG9hZGVkKSksVks9YlMoX0ssKHQ9PnQuZ3JhcGhFeGVjdXRpb25zLmV4ZWN1dGlvbkRpZ2VzdHNMb2FkZWQubnVtRXhlY3V0aW9ucykpLGpLPWJTKExLLCh0PT50LnNjcm9sbEJlZ2luSW5kZXgpKSxVSz1iUyhMSywodD0+dC5kaXNwbGF5Q291bnQpKSxXSz1iUyhMSywodD0+dC5wYWdlU2l6ZSkpLEdLPWJTKExLLCh0PT50LmdyYXBoRXhlY3V0aW9uRGF0YUxvYWRpbmdQYWdlcykpLFlLPWJTKExLLCh0PT50LmdyYXBoRXhlY3V0aW9uRGF0YVBhZ2VMb2FkZWRTaXplcykpLHFLPWJTKExLLCh0PT50LmdyYXBoRXhlY3V0aW9uRGF0YSkpLFpLPWJTKExLLCh0PT50LmZvY3VzSW5kZXgpKSxYSz1iUyhfSywodD0+dC5ncmFwaHMpKSxLSz1iUyhYSywodD0+e2NvbnN0e2ZvY3VzZWRPcDplLG9wczpufT10O3JldHVybiBudWxsPT09ZXx8dm9pZCAwPT09bltlLmdyYXBoSWRdP251bGw6bltlLmdyYXBoSWRdLmdldChlLm9wTmFtZSl8fG51bGx9KSksSks9YlMoWEssKHQ9Pntjb25zdHtmb2N1c2VkT3A6ZSxvcHM6bn09dDtpZihudWxsIT09ZSYmdm9pZCAwIT09bltlLmdyYXBoSWRdJiZuW2UuZ3JhcGhJZF0uaGFzKGUub3BOYW1lKSl7Y29uc3QgdD1uW2UuZ3JhcGhJZF0se2lucHV0czpvfT10LmdldChlLm9wTmFtZSk7cmV0dXJuIG8ubWFwKChlPT57Y29uc3Qgbj1PYmplY3QuYXNzaWduKHt9LGUpO3JldHVybiB0LmhhcyhlLm9wX25hbWUpJiYobi5kYXRhPXQuZ2V0KGUub3BfbmFtZSkpLG59KSl9cmV0dXJuIG51bGx9KSksUUs9YlMoWksscUssSkssKCh0LGUsbik9PntpZihudWxsPT09dHx8bnVsbD09PW4pcmV0dXJuIG51bGw7Y29uc3Qgbz1uLm1hcCgodD0+ITEpKSxpPVtdO2lmKDA9PT1uLmxlbmd0aClyZXR1cm4gaTtjb25zdCBhPWVbdF0uZ3JhcGhfaWQscj1NYXRoLm1heCgwLHQtMjAwKTtmb3IobGV0IHM9dC0xO3M+PXI7LS1zKWlmKHZvaWQgMCE9PWVbc10pZm9yKGxldCB0PTA7dDxuLmxlbmd0aCYmKG9bdF18fGVbc10uZ3JhcGhfaWQhPT1hfHxlW3NdLm9wX25hbWUhPT1uW3RdLm9wX25hbWV8fGVbc10ub3V0cHV0X3Nsb3QhPT1uW3RdLm91dHB1dF9zbG90fHwoaS5wdXNoKHMpLG9bdF09ITAsaS5sZW5ndGghPT1uLmxlbmd0aCkpOysrdCk7cmV0dXJuIGl9KSksJEs9YlMoWEssKHQ9Pntjb25zdHtmb2N1c2VkT3A6ZSxvcHM6bn09dDtpZihudWxsIT09ZSYmdm9pZCAwIT09bltlLmdyYXBoSWRdJiZuW2UuZ3JhcGhJZF0uaGFzKGUub3BOYW1lKSl7Y29uc3QgdD1uW2UuZ3JhcGhJZF0se2NvbnN1bWVyczpvfT10LmdldChlLm9wTmFtZSk7cmV0dXJuIG8ubWFwKChlPT5lLm1hcCgoZT0+e2NvbnN0IG49T2JqZWN0LmFzc2lnbih7fSxlKTtyZXR1cm4gdC5oYXMoZS5vcF9uYW1lKSYmKG4uZGF0YT10LmdldChlLm9wX25hbWUpKSxufSkpKSl9cmV0dXJuIG51bGx9KSksdEo9YlMoX0ssKHQ9Pntjb25zdCBlPXQuZXhlY3V0aW9ucy5zY3JvbGxCZWdpbkluZGV4LG49dC5leGVjdXRpb25zLnNjcm9sbEJlZ2luSW5kZXgrdC5leGVjdXRpb25zLmRpc3BsYXlDb3VudCxvPW5ldyBBcnJheShuLWUpLmZpbGwobnVsbCksaT10LmFsZXJ0cy5mb2N1c1R5cGU7aWYobnVsbD09PWkpcmV0dXJuIG87Y29uc3QgYT10LmFsZXJ0cy5leGVjdXRpb25JbmRpY2VzW2ldO2lmKHZvaWQgMD09PWEpcmV0dXJuIG87Zm9yKGxldCBpPWU7aTxuOysraSlhLmluY2x1ZGVzKGkpJiYob1tpLWVdPXQuYWxlcnRzLmZvY3VzVHlwZSk7cmV0dXJuIG99KSksZUo9YlMoX0ssKHQ9PnQuZXhlY3V0aW9ucykpLG5KPWJTKGVKLCh0PT50LmZvY3VzSW5kZXgpKSxvSj1iUyhlSiwodD0+e2lmKG51bGw9PT10LmZvY3VzSW5kZXgpcmV0dXJuIG51bGw7Y29uc3R7Zm9jdXNJbmRleDplLHNjcm9sbEJlZ2luSW5kZXg6bixkaXNwbGF5Q291bnQ6b309dDtyZXR1cm4gZTxufHxlPj1uK28/bnVsbDplLW59KSksaUo9YlMoZUosKHQ9PnQuZXhlY3V0aW9uRGF0YSkpLGFKPWJTKF9LLCh0PT50LmdyYXBocy5sb2FkaW5nT3BzKSkscko9YlMoX0ssKHQ9PnQuc3RhY2tGcmFtZXMpKSxzSj1iUyhlSiwodD0+e2NvbnN0e2ZvY3VzSW5kZXg6ZSxleGVjdXRpb25EYXRhOm59PXQ7cmV0dXJuIG51bGw9PT1lfHx2b2lkIDA9PT1uW2VdP251bGw6bltlXX0pKSxsSj1iUyhfSyxuSixzSixLSywoKHQsZSxuLG8pPT57Y29uc3R7Y29kZUxvY2F0aW9uRm9jdXNUeXBlOml9PXQ7cmV0dXJuIG51bGw9PT1pP251bGw6aT09PWNLLkVYRUNVVElPTj9udWxsPT09ZXx8bnVsbD09PW4/bnVsbDp7Y29kZUxvY2F0aW9uVHlwZTpjSy5FWEVDVVRJT04sb3BUeXBlOm4ub3BfdHlwZSxleGVjdXRpb25JbmRleDplfTpudWxsPT09bz9udWxsOntjb2RlTG9jYXRpb25UeXBlOmNLLkdSQVBIX09QX0NSRUFUSU9OLG9wVHlwZTpvLm9wX3R5cGUsb3BOYW1lOm8ub3BfbmFtZX19KSksY0o9YlMoX0ssZEspLGRKPWJTKF9LLCh0PT50LnNvdXJjZUNvZGUpKSxwSj1iUyhkSiwodD0+dC5zb3VyY2VGaWxlTGlzdExvYWRlZCkpO2JTKGRKLCh0PT50LnNvdXJjZUZpbGVMaXN0KSk7Y29uc3QgbUo9YlMoZEosKHQ9Pntjb25zdHtzb3VyY2VGaWxlTGlzdDplLGZvY3VzTGluZVNwZWM6bn09dDtyZXR1cm4gbnVsbD09PW4/LTE6cEsoZSxuKX0pKSxmSj1iUyhkSixtSiwoKHQsZSk9Pi0xPT09ZT9udWxsOnQuZmlsZUNvbnRlbnRzW2VdfHxudWxsKSksdUo9YlMoX0ssKHQ9PnQuc291cmNlQ29kZS5mb2N1c0xpbmVTcGVjKSksZ0o9YlMoX0ssKHQ9PnQuc3RpY2tUb0JvdHRvbW1vc3RGcmFtZUluRm9jdXNlZEZpbGUpKSxoSj1mdW5jdGlvbih0KXtyZXR1cm5bdF19O2Z1bmN0aW9uIGJKKHQsZSl7aWYoMSZ0KXtjb25zdCB0PXdmKCk7Q2YoMCwiZGl2Iiw3KSxSZigiY2xpY2siLChmdW5jdGlvbiBlKCl7Y29uc3Qgbj1QaSh0KS4kaW1wbGljaXQ7cmV0dXJuIHpmKCkub25Ub2dnbGVGb2N1c1R5cGUuZW1pdChuLnR5cGUpfSkpLENmKDEsImRpdiIsOCksUHUoMiksTWYoKSxDZigzLCJkaXYiLDkpLFB1KDQpLE1mKCksdmYoNSwiZGl2IiksTWYoKX1pZigyJnQpe2NvbnN0IHQ9ZS4kaW1wbGljaXQsbj16ZigpO2JmKCJuZ0NsYXNzIixpeSg0LGhKLHQudHlwZT09PW4uZm9jdXNUeXBlPyJmb2N1cyI6IiIpKSxEYygyKSx3dSh0LmRpc3BsYXlOYW1lKSxEYygyKSxTdSgiICIsdC5kaXNwbGF5U3ltYm9sLCI6ICIsdC5jb3VudCwiICIpfX1jbGFzcyB5Sntjb25zdHJ1Y3Rvcigpe3RoaXMubnVtQWxlcnRzPTAsdGhpcy5hbGVydHNCcmVha2Rvd249W10sdGhpcy5mb2N1c1R5cGU9bnVsbCx0aGlzLm9uVG9nZ2xlRm9jdXNUeXBlPW5ldyBTeX19eUouybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHlKKX0seUouybVjbXA9c28oe3R5cGU6eUosc2VsZWN0b3JzOltbImFsZXJ0cy1jb21wb25lbnQiXV0saW5wdXRzOntudW1BbGVydHM6Im51bUFsZXJ0cyIsYWxlcnRzQnJlYWtkb3duOiJhbGVydHNCcmVha2Rvd24iLGZvY3VzVHlwZToiZm9jdXNUeXBlIn0sb3V0cHV0czp7b25Ub2dnbGVGb2N1c1R5cGU6Im9uVG9nZ2xlRm9jdXNUeXBlIn0sZGVjbHM6MTAsdmFyczo1LGNvbnN0czpbWzEsImFsZXJ0cy1jb250YWluZXIiXSxbMSwiZGVidWdnaW5nLXRpdGxlIl0sWzEsIm51bS1hbGVydHMtY29udGFpbmVyIl0sWzEsIm51bS1hbGVydHMtbGFiZWwiXSxbMSwibnVtLWFsZXJ0cy12YWx1ZSIsMywibmdDbGFzcyJdLFsxLCJhbGVydHMtYnJlYWtkb3duLWNvbnRhaW5lciJdLFsiY2xhc3MiLCJhbGVydHMtYnJlYWtkb3duLXR5cGUiLDMsIm5nQ2xhc3MiLCJjbGljayIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWzEsImFsZXJ0cy1icmVha2Rvd24tdHlwZSIsMywibmdDbGFzcyIsImNsaWNrIl0sWzEsImFsZXJ0LXR5cGUtbmFtZSJdLFsxLCJhbGVydC10eXBlLWNvdW50Il1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihDZigwLCJkaXYiLDApLENmKDEsImRpdiIsMSksUHUoMiwiRGVidWdnaW5nIiksTWYoKSxDZigzLCJkaXYiLDIpLENmKDQsImRpdiIsMyksUHUoNSwiQWxlcnRzIiksTWYoKSxDZig2LCJkaXYiLDQpLFB1KDcpLE1mKCksTWYoKSxDZig4LCJkaXYiLDUpLEhtKDksYkosNiw2LCJkaXYiLDYpLE1mKCksTWYoKSksMiZlJiYoRGMoNiksYmYoIm5nQ2xhc3MiLGl5KDMsaEosbi5udW1BbGVydHM+MD8ibm9uLXplcm8iOiIiKSksRGMoMSksa3UoIiAiLG4ubnVtQWxlcnRzLCIgIiksRGMoMiksYmYoIm5nRm9yT2YiLG4uYWxlcnRzQnJlYWtkb3duKSl9LGRpcmVjdGl2ZXM6W0N2LHh2XSxzdHlsZXM6WyIuYWxlcnRzLWJyZWFrZG93bi1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdIHtcbiAgZm9udC1zaXplOiAxM3B4O1xuICBwYWRkaW5nOiAxMHB4IDEwcHggMTBweDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4uYWxlcnRzLWJyZWFrZG93bi10eXBlW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGJvcmRlci1yYWRpdXM6IDAgMTBweCAxMHB4IDA7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgZGlzcGxheTogZmxleDtcbiAgcGFkZGluZzogNnB4IDAgNnB4IDUwcHg7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG5cbi5hbGVydHMtYnJlYWtkb3duLXR5cGUuZm9jdXNbX25nY29udGVudC0lQ09NUCVdIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZWVlMDtcbn1cblxuLmFsZXJ0cy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdIHtcbiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmO1xufVxuXG4uYWxlcnQtdHlwZS1jb3VudFtfbmdjb250ZW50LSVDT01QJV0ge1xuICBcbiAgYmFja2dyb3VuZC1jb2xvcjogI2U1MjU5MjtcbiAgYm9yZGVyLXJhZGl1czogM3B4O1xuICBjb2xvcjogI2ZmZjtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBwYWRkaW5nOiAzcHg7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgcmlnaHQ6IDIwcHg7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG5cbi5hbGVydC10eXBlLW5hbWVbX25nY29udGVudC0lQ09NUCVdIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBwYWRkaW5nOiAzcHg7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG5cbi5kZWJ1Z2dpbmctdGl0bGVbX25nY29udGVudC0lQ09NUCVdIHtcbiAgZm9udC1zaXplOiAxOHB4O1xufVxuXG4ubnVtLWFsZXJ0cy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIHBhZGRpbmc6IDEwcHggMTBweCAxMHB4IDMwcHg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLm51bS1hbGVydHMtbGFiZWxbX25nY29udGVudC0lQ09NUCVdIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBmb250LXNpemU6IDEzcHg7XG59XG5cbi5udW0tYWxlcnRzLXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGJvcmRlci1yYWRpdXM6IDEycHg7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgZm9udC1zaXplOiAxM3B4O1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBsaW5lLWhlaWdodDogMjRweDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICByaWdodDogMjBweDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICB3aWR0aDogMjRweDtcbn1cblxuLm51bS1hbGVydHMtdmFsdWUubm9uLXplcm9bX25nY29udGVudC0lQ09NUCVdIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmYjc4MDtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59Il19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHlKLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6ImFsZXJ0cy1jb21wb25lbnQiLHRlbXBsYXRlVXJsOiIuL2FsZXJ0c19jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsiLi9hbGVydHNfY29tcG9uZW50LmNzcyJdfV19XSxudWxsLHtudW1BbGVydHM6W3t0eXBlOlJffV0sYWxlcnRzQnJlYWtkb3duOlt7dHlwZTpSX31dLGZvY3VzVHlwZTpbe3R5cGU6Ul99XSxvblRvZ2dsZUZvY3VzVHlwZTpbe3R5cGU6RV99XX0pO2NvbnN0IF9KPXtbbEsuRlVOQ1RJT05fUkVDT01QSUxFX0FMRVJUXTp7ZGlzcGxheU5hbWU6IkZ1bmN0aW9uIHJlY29tcGlsZXMiLGRpc3BsYXlTeW1ib2w6IkMifSxbbEsuSU5GX05BTl9BTEVSVF06e2Rpc3BsYXlOYW1lOiJOYU4v4oieIixkaXNwbGF5U3ltYm9sOiLiiJ4ifSxbbEsuVEVOU09SX1NIQVBFX0FMRVJUXTp7ZGlzcGxheU5hbWU6IlRlbnNvciBzaGFwZSIsZGlzcGxheVN5bWJvbDoi4pagIn19O2NsYXNzIENKe2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLm51bUFsZXJ0cyQ9dGhpcy5zdG9yZS5waXBlKHJTKHdLKSksdGhpcy5hbGVydHNCcmVha2Rvd24kPXRoaXMuc3RvcmUucGlwZShyUyhiUyhSSywodD0+e2NvbnN0IGU9T2JqZWN0LmtleXModCk7cmV0dXJuIGUuc29ydCgpLGUubWFwKChlPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe3R5cGU6ZX0sX0pbZV0pLHtjb3VudDp0W2VdfSkpKX0pKSkpLHRoaXMuZm9jdXNUeXBlJD10aGlzLnN0b3JlLnBpcGUoclMoa0spKX1vblRvZ2dsZUZvY3VzVHlwZSh0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKHpYKHthbGVydFR5cGU6dH0pKX19Q0ouybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fENKKShnZihpUykpfSxDSi7JtWNtcD1zbyh7dHlwZTpDSixzZWxlY3RvcnM6W1sidGYtZGVidWdnZXItdjItYWxlcnRzIl1dLGRlY2xzOjQsdmFyczo5LGNvbnN0czpbWzMsIm51bUFsZXJ0cyIsImFsZXJ0c0JyZWFrZG93biIsImZvY3VzVHlwZSIsIm9uVG9nZ2xlRm9jdXNUeXBlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihDZigwLCJhbGVydHMtY29tcG9uZW50IiwwKSxSZigib25Ub2dnbGVGb2N1c1R5cGUiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uVG9nZ2xlRm9jdXNUeXBlKGUpfSkpLF95KDEsImFzeW5jIiksX3koMiwiYXN5bmMiKSxfeSgzLCJhc3luYyIpLE1mKCkpLDImZSYmYmYoIm51bUFsZXJ0cyIsQ3koMSwzLG4ubnVtQWxlcnRzJCkpKCJhbGVydHNCcmVha2Rvd24iLEN5KDIsNSxuLmFsZXJ0c0JyZWFrZG93biQpKSgiZm9jdXNUeXBlIixDeSgzLDcsbi5mb2N1c1R5cGUkKSl9LGRpcmVjdGl2ZXM6W3lKXSxwaXBlczpbVnZdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoQ0osW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoidGYtZGVidWdnZXItdjItYWxlcnRzIix0ZW1wbGF0ZTonXG4gICAgPGFsZXJ0cy1jb21wb25lbnRcbiAgICAgIFtudW1BbGVydHNdPSJudW1BbGVydHMkIHwgYXN5bmMiXG4gICAgICBbYWxlcnRzQnJlYWtkb3duXT0iYWxlcnRzQnJlYWtkb3duJCB8IGFzeW5jIlxuICAgICAgW2ZvY3VzVHlwZV09ImZvY3VzVHlwZSQgfCBhc3luYyJcbiAgICAgIChvblRvZ2dsZUZvY3VzVHlwZSk9Im9uVG9nZ2xlRm9jdXNUeXBlKCRldmVudCkiXG4gICAgPlxuICAgIDwvYWxlcnRzLWNvbXBvbmVudD5cbiAgJyxjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNofV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6aVN9XX0pLG51bGwpO2NvbnN0IE1KPVsic2xpZGVyV3JhcHBlciJdLHZKPWJIKHtwYXNzaXZlOiExfSkseEo9e3Byb3ZpZGU6eFUsdXNlRXhpc3Rpbmc6JGUoKCgpPT53SikpLG11bHRpOiEwfTtjbGFzcyBPSnt9Y29uc3QgUEo9RkYoSUYoekYoY2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy5fZWxlbWVudFJlZj10fX0pLCJhY2NlbnQiKSk7Y2xhc3Mgd0ogZXh0ZW5kcyBQSntjb25zdHJ1Y3Rvcih0LGUsbixvLGksYSxyLHMpe3N1cGVyKHQpLHRoaXMuX2ZvY3VzTW9uaXRvcj1lLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmPW4sdGhpcy5fZGlyPW8sdGhpcy5fbmdab25lPWEsdGhpcy5fYW5pbWF0aW9uTW9kZT1zLHRoaXMuX2ludmVydD0hMSx0aGlzLl9tYXg9MTAwLHRoaXMuX21pbj0wLHRoaXMuX3N0ZXA9MSx0aGlzLl90aHVtYkxhYmVsPSExLHRoaXMuX3RpY2tJbnRlcnZhbD0wLHRoaXMuX3ZhbHVlPW51bGwsdGhpcy5fdmVydGljYWw9ITEsdGhpcy5jaGFuZ2U9bmV3IFN5LHRoaXMuaW5wdXQ9bmV3IFN5LHRoaXMudmFsdWVDaGFuZ2U9bmV3IFN5LHRoaXMub25Ub3VjaGVkPSgpPT57fSx0aGlzLl9wZXJjZW50PTAsdGhpcy5faXNTbGlkaW5nPW51bGwsdGhpcy5faXNBY3RpdmU9ITEsdGhpcy5fdGlja0ludGVydmFsUGVyY2VudD0wLHRoaXMuX3NsaWRlckRpbWVuc2lvbnM9bnVsbCx0aGlzLl9jb250cm9sVmFsdWVBY2Nlc3NvckNoYW5nZUZuPSgpPT57fSx0aGlzLl9kaXJDaGFuZ2VTdWJzY3JpcHRpb249dS5FTVBUWSx0aGlzLl9wb2ludGVyRG93bj10PT57dGhpcy5kaXNhYmxlZHx8dGhpcy5faXNTbGlkaW5nfHwha0oodCkmJjAhPT10LmJ1dHRvbnx8dGhpcy5fbmdab25lLnJ1bigoKCk9Pnt0aGlzLl90b3VjaElkPWtKKHQpPyhmdW5jdGlvbiBlKHQsbil7Zm9yKGxldCBlPTA7ZTx0LnRvdWNoZXMubGVuZ3RoO2UrKyl7Y29uc3Qgbz10LnRvdWNoZXNbZV0udGFyZ2V0O2lmKG49PT1vfHxuLmNvbnRhaW5zKG8pKXJldHVybiB0LnRvdWNoZXNbZV0uaWRlbnRpZmllcn1yZXR1cm59Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLykodCx0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpOnZvaWQgMDtjb25zdCBuPVNKKHQsdGhpcy5fdG91Y2hJZCk7aWYobil7Y29uc3QgZT10aGlzLnZhbHVlO3RoaXMuX2lzU2xpZGluZz0icG9pbnRlciIsdGhpcy5fbGFzdFBvaW50ZXJFdmVudD10LHQucHJldmVudERlZmF1bHQoKSx0aGlzLl9mb2N1c0hvc3RFbGVtZW50KCksdGhpcy5fb25Nb3VzZWVudGVyKCksdGhpcy5fYmluZEdsb2JhbEV2ZW50cyh0KSx0aGlzLl9mb2N1c0hvc3RFbGVtZW50KCksdGhpcy5fdXBkYXRlVmFsdWVGcm9tUG9zaXRpb24obiksdGhpcy5fdmFsdWVPblNsaWRlU3RhcnQ9ZSxlIT10aGlzLnZhbHVlJiZ0aGlzLl9lbWl0SW5wdXRFdmVudCgpfX0pKX0sdGhpcy5fcG9pbnRlck1vdmU9dD0+e2lmKCJwb2ludGVyIj09PXRoaXMuX2lzU2xpZGluZyl7Y29uc3QgZT1TSih0LHRoaXMuX3RvdWNoSWQpO2lmKGUpe3QucHJldmVudERlZmF1bHQoKTtjb25zdCBuPXRoaXMudmFsdWU7dGhpcy5fbGFzdFBvaW50ZXJFdmVudD10LHRoaXMuX3VwZGF0ZVZhbHVlRnJvbVBvc2l0aW9uKGUpLG4hPXRoaXMudmFsdWUmJnRoaXMuX2VtaXRJbnB1dEV2ZW50KCl9fX0sdGhpcy5fcG9pbnRlclVwPXQ9PnsicG9pbnRlciI9PT10aGlzLl9pc1NsaWRpbmcmJihrSih0KSYmIm51bWJlciI9PXR5cGVvZiB0aGlzLl90b3VjaElkJiYhREoodC5jaGFuZ2VkVG91Y2hlcyx0aGlzLl90b3VjaElkKXx8KHQucHJldmVudERlZmF1bHQoKSx0aGlzLl9yZW1vdmVHbG9iYWxFdmVudHMoKSx0aGlzLl9pc1NsaWRpbmc9bnVsbCx0aGlzLl90b3VjaElkPXZvaWQgMCx0aGlzLl92YWx1ZU9uU2xpZGVTdGFydD09dGhpcy52YWx1ZXx8dGhpcy5kaXNhYmxlZHx8dGhpcy5fZW1pdENoYW5nZUV2ZW50KCksdGhpcy5fdmFsdWVPblNsaWRlU3RhcnQ9dGhpcy5fbGFzdFBvaW50ZXJFdmVudD1udWxsKSl9LHRoaXMuX3dpbmRvd0JsdXI9KCk9Pnt0aGlzLl9sYXN0UG9pbnRlckV2ZW50JiZ0aGlzLl9wb2ludGVyVXAodGhpcy5fbGFzdFBvaW50ZXJFdmVudCl9LHRoaXMuX2RvY3VtZW50PXIsdGhpcy50YWJJbmRleD1wYXJzZUludChpKXx8MCxhLnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+e2NvbnN0IGU9dC5uYXRpdmVFbGVtZW50O2UuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIix0aGlzLl9wb2ludGVyRG93bix2SiksZS5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaHN0YXJ0Iix0aGlzLl9wb2ludGVyRG93bix2Sil9KSl9Z2V0IGludmVydCgpe3JldHVybiB0aGlzLl9pbnZlcnR9c2V0IGludmVydCh0KXt0aGlzLl9pbnZlcnQ9ZUgodCl9Z2V0IG1heCgpe3JldHVybiB0aGlzLl9tYXh9c2V0IG1heCh0KXt0aGlzLl9tYXg9bkgodCx0aGlzLl9tYXgpLHRoaXMuX3BlcmNlbnQ9dGhpcy5fY2FsY3VsYXRlUGVyY2VudGFnZSh0aGlzLl92YWx1ZSksdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCl9Z2V0IG1pbigpe3JldHVybiB0aGlzLl9taW59c2V0IG1pbih0KXt0aGlzLl9taW49bkgodCx0aGlzLl9taW4pLHRoaXMuX3BlcmNlbnQ9dGhpcy5fY2FsY3VsYXRlUGVyY2VudGFnZSh0aGlzLl92YWx1ZSksdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCl9Z2V0IHN0ZXAoKXtyZXR1cm4gdGhpcy5fc3RlcH1zZXQgc3RlcCh0KXt0aGlzLl9zdGVwPW5IKHQsdGhpcy5fc3RlcCksdGhpcy5fc3RlcCUxIT0wJiYodGhpcy5fcm91bmRUb0RlY2ltYWw9dGhpcy5fc3RlcC50b1N0cmluZygpLnNwbGl0KCIuIikucG9wKCkubGVuZ3RoKSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKX1nZXQgdGh1bWJMYWJlbCgpe3JldHVybiB0aGlzLl90aHVtYkxhYmVsfXNldCB0aHVtYkxhYmVsKHQpe3RoaXMuX3RodW1iTGFiZWw9ZUgodCl9Z2V0IHRpY2tJbnRlcnZhbCgpe3JldHVybiB0aGlzLl90aWNrSW50ZXJ2YWx9c2V0IHRpY2tJbnRlcnZhbCh0KXt0aGlzLl90aWNrSW50ZXJ2YWw9ImF1dG8iPT09dD8iYXV0byI6Im51bWJlciI9PXR5cGVvZiB0fHwic3RyaW5nIj09dHlwZW9mIHQ/bkgodCx0aGlzLl90aWNrSW50ZXJ2YWwpOjB9Z2V0IHZhbHVlKCl7cmV0dXJuIG51bGw9PT10aGlzLl92YWx1ZSYmKHRoaXMudmFsdWU9dGhpcy5fbWluKSx0aGlzLl92YWx1ZX1zZXQgdmFsdWUodCl7aWYodCE9PXRoaXMuX3ZhbHVlKXtsZXQgZT1uSCh0LDApO3RoaXMuX3JvdW5kVG9EZWNpbWFsJiZlIT09dGhpcy5taW4mJmUhPT10aGlzLm1heCYmKGU9cGFyc2VGbG9hdChlLnRvRml4ZWQodGhpcy5fcm91bmRUb0RlY2ltYWwpKSksdGhpcy5fdmFsdWU9ZSx0aGlzLl9wZXJjZW50PXRoaXMuX2NhbGN1bGF0ZVBlcmNlbnRhZ2UodGhpcy5fdmFsdWUpLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpfX1nZXQgdmVydGljYWwoKXtyZXR1cm4gdGhpcy5fdmVydGljYWx9c2V0IHZlcnRpY2FsKHQpe3RoaXMuX3ZlcnRpY2FsPWVIKHQpfWdldCBkaXNwbGF5VmFsdWUoKXtyZXR1cm4gdGhpcy5kaXNwbGF5V2l0aD90aGlzLmRpc3BsYXlXaXRoKHRoaXMudmFsdWUpOnRoaXMuX3JvdW5kVG9EZWNpbWFsJiZ0aGlzLnZhbHVlJiZ0aGlzLnZhbHVlJTEhPTA/dGhpcy52YWx1ZS50b0ZpeGVkKHRoaXMuX3JvdW5kVG9EZWNpbWFsKTp0aGlzLnZhbHVlfHwwfWZvY3VzKHQpe3RoaXMuX2ZvY3VzSG9zdEVsZW1lbnQodCl9Ymx1cigpe3RoaXMuX2JsdXJIb3N0RWxlbWVudCgpfWdldCBwZXJjZW50KCl7cmV0dXJuIHRoaXMuX2NsYW1wKHRoaXMuX3BlcmNlbnQpfV9zaG91bGRJbnZlcnRBeGlzKCl7cmV0dXJuIHRoaXMudmVydGljYWw/IXRoaXMuaW52ZXJ0OnRoaXMuaW52ZXJ0fV9pc01pblZhbHVlKCl7cmV0dXJuIDA9PT10aGlzLnBlcmNlbnR9X2dldFRodW1iR2FwKCl7cmV0dXJuIHRoaXMuZGlzYWJsZWQ/Nzp0aGlzLl9pc01pblZhbHVlKCkmJiF0aGlzLnRodW1iTGFiZWw/dGhpcy5faXNBY3RpdmU/MTA6NzowfV9nZXRUcmFja0JhY2tncm91bmRTdHlsZXMoKXtjb25zdCB0PXRoaXMudmVydGljYWw/YDEsICR7MS10aGlzLnBlcmNlbnR9LCAxYDoxLXRoaXMucGVyY2VudCsiLCAxLCAxIjtyZXR1cm57dHJhbnNmb3JtOmB0cmFuc2xhdGUke3RoaXMudmVydGljYWw/IlkiOiJYIn0oJHt0aGlzLl9zaG91bGRJbnZlcnRNb3VzZUNvb3JkcygpPyItIjoiIn0ke3RoaXMuX2dldFRodW1iR2FwKCl9cHgpIHNjYWxlM2QoJHt0fSlgfX1fZ2V0VHJhY2tGaWxsU3R5bGVzKCl7Y29uc3QgdD10aGlzLnBlcmNlbnQsZT10aGlzLnZlcnRpY2FsP2AxLCAke3R9LCAxYDpgJHt0fSwgMSwgMWA7cmV0dXJue3RyYW5zZm9ybTpgdHJhbnNsYXRlJHt0aGlzLnZlcnRpY2FsPyJZIjoiWCJ9KCR7dGhpcy5fc2hvdWxkSW52ZXJ0TW91c2VDb29yZHMoKT8iIjoiLSJ9JHt0aGlzLl9nZXRUaHVtYkdhcCgpfXB4KSBzY2FsZTNkKCR7ZX0pYCxkaXNwbGF5OjA9PT10PyJub25lIjoiIn19X2dldFRpY2tzQ29udGFpbmVyU3R5bGVzKCl7cmV0dXJue3RyYW5zZm9ybTpgdHJhbnNsYXRlJHt0aGlzLnZlcnRpY2FsPyJZIjoiWCJ9KCR7dGhpcy52ZXJ0aWNhbHx8InJ0bCIhPXRoaXMuX2dldERpcmVjdGlvbigpPyItIjoiIn0ke3RoaXMuX3RpY2tJbnRlcnZhbFBlcmNlbnQvMioxMDB9JSlgfX1fZ2V0VGlja3NTdHlsZXMoKXtsZXQgdD0xMDAqdGhpcy5fdGlja0ludGVydmFsUGVyY2VudCxlPXtiYWNrZ3JvdW5kU2l6ZTp0aGlzLnZlcnRpY2FsP2AycHggJHt0fSVgOmAke3R9JSAycHhgLHRyYW5zZm9ybTpgdHJhbnNsYXRlWigwKSB0cmFuc2xhdGUke3RoaXMudmVydGljYWw/IlkiOiJYIn0oJHt0aGlzLnZlcnRpY2FsfHwicnRsIiE9dGhpcy5fZ2V0RGlyZWN0aW9uKCk/IiI6Ii0ifSR7dC8yfSUpJHt0aGlzLnZlcnRpY2FsfHwicnRsIiE9dGhpcy5fZ2V0RGlyZWN0aW9uKCk/IiI6IiByb3RhdGUoMTgwZGVnKSJ9YH07aWYodGhpcy5faXNNaW5WYWx1ZSgpJiZ0aGlzLl9nZXRUaHVtYkdhcCgpKXtjb25zdCB0PXRoaXMuX3Nob3VsZEludmVydEF4aXMoKTtsZXQgbjtuPXRoaXMudmVydGljYWw/dD8iQm90dG9tIjoiVG9wIjp0PyJSaWdodCI6IkxlZnQiLGVbYHBhZGRpbmcke259YF09YCR7dGhpcy5fZ2V0VGh1bWJHYXAoKX1weGB9cmV0dXJuIGV9X2dldFRodW1iQ29udGFpbmVyU3R5bGVzKCl7Y29uc3QgdD10aGlzLl9zaG91bGRJbnZlcnRBeGlzKCk7cmV0dXJue3RyYW5zZm9ybTpgdHJhbnNsYXRlJHt0aGlzLnZlcnRpY2FsPyJZIjoiWCJ9KC0kezEwMCooKCJydGwiIT10aGlzLl9nZXREaXJlY3Rpb24oKXx8dGhpcy52ZXJ0aWNhbD90OiF0KT90aGlzLnBlcmNlbnQ6MS10aGlzLnBlcmNlbnQpfSUpYH19X3Nob3VsZEludmVydE1vdXNlQ29vcmRzKCl7Y29uc3QgdD10aGlzLl9zaG91bGRJbnZlcnRBeGlzKCk7cmV0dXJuInJ0bCIhPXRoaXMuX2dldERpcmVjdGlvbigpfHx0aGlzLnZlcnRpY2FsP3Q6IXR9X2dldERpcmVjdGlvbigpe3JldHVybiB0aGlzLl9kaXImJiJydGwiPT10aGlzLl9kaXIudmFsdWU/InJ0bCI6Imx0ciJ9bmdBZnRlclZpZXdJbml0KCl7dGhpcy5fZm9jdXNNb25pdG9yLm1vbml0b3IodGhpcy5fZWxlbWVudFJlZiwhMCkuc3Vic2NyaWJlKCh0PT57dGhpcy5faXNBY3RpdmU9ISF0JiYia2V5Ym9hcmQiIT09dCx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCl9KSksdGhpcy5fZGlyJiYodGhpcy5fZGlyQ2hhbmdlU3Vic2NyaXB0aW9uPXRoaXMuX2Rpci5jaGFuZ2Uuc3Vic2NyaWJlKCgoKT0+e3RoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpfSkpKX1uZ09uRGVzdHJveSgpe2NvbnN0IHQ9dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O3QucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIix0aGlzLl9wb2ludGVyRG93bix2SiksdC5yZW1vdmVFdmVudExpc3RlbmVyKCJ0b3VjaHN0YXJ0Iix0aGlzLl9wb2ludGVyRG93bix2SiksdGhpcy5fbGFzdFBvaW50ZXJFdmVudD1udWxsLHRoaXMuX3JlbW92ZUdsb2JhbEV2ZW50cygpLHRoaXMuX2ZvY3VzTW9uaXRvci5zdG9wTW9uaXRvcmluZyh0aGlzLl9lbGVtZW50UmVmKSx0aGlzLl9kaXJDaGFuZ2VTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKX1fb25Nb3VzZWVudGVyKCl7dGhpcy5kaXNhYmxlZHx8KHRoaXMuX3NsaWRlckRpbWVuc2lvbnM9dGhpcy5fZ2V0U2xpZGVyRGltZW5zaW9ucygpLHRoaXMuX3VwZGF0ZVRpY2tJbnRlcnZhbFBlcmNlbnQoKSl9X29uRm9jdXMoKXt0aGlzLl9zbGlkZXJEaW1lbnNpb25zPXRoaXMuX2dldFNsaWRlckRpbWVuc2lvbnMoKSx0aGlzLl91cGRhdGVUaWNrSW50ZXJ2YWxQZXJjZW50KCl9X29uQmx1cigpe3RoaXMub25Ub3VjaGVkKCl9X29uS2V5ZG93bih0KXtpZih0aGlzLmRpc2FibGVkfHx0SCh0KXx8dGhpcy5faXNTbGlkaW5nJiYia2V5Ym9hcmQiIT09dGhpcy5faXNTbGlkaW5nKXJldHVybjtjb25zdCBlPXRoaXMudmFsdWU7c3dpdGNoKHQua2V5Q29kZSl7Y2FzZSAzMzp0aGlzLl9pbmNyZW1lbnQoMTApO2JyZWFrO2Nhc2UgMzQ6dGhpcy5faW5jcmVtZW50KC0xMCk7YnJlYWs7Y2FzZSAzNTp0aGlzLnZhbHVlPXRoaXMubWF4O2JyZWFrO2Nhc2UgMzY6dGhpcy52YWx1ZT10aGlzLm1pbjticmVhaztjYXNlIDM3OnRoaXMuX2luY3JlbWVudCgicnRsIj09dGhpcy5fZ2V0RGlyZWN0aW9uKCk/MTotMSk7YnJlYWs7Y2FzZSBRSTp0aGlzLl9pbmNyZW1lbnQoMSk7YnJlYWs7Y2FzZSAzOTp0aGlzLl9pbmNyZW1lbnQoInJ0bCI9PXRoaXMuX2dldERpcmVjdGlvbigpPy0xOjEpO2JyZWFrO2Nhc2UgJEk6dGhpcy5faW5jcmVtZW50KC0xKTticmVhaztkZWZhdWx0OnJldHVybn1lIT10aGlzLnZhbHVlJiYodGhpcy5fZW1pdElucHV0RXZlbnQoKSx0aGlzLl9lbWl0Q2hhbmdlRXZlbnQoKSksdGhpcy5faXNTbGlkaW5nPSJrZXlib2FyZCIsdC5wcmV2ZW50RGVmYXVsdCgpfV9vbktleXVwKCl7ImtleWJvYXJkIj09PXRoaXMuX2lzU2xpZGluZyYmKHRoaXMuX2lzU2xpZGluZz1udWxsKX1fZ2V0V2luZG93KCl7cmV0dXJuIHRoaXMuX2RvY3VtZW50LmRlZmF1bHRWaWV3fHx3aW5kb3d9X2JpbmRHbG9iYWxFdmVudHModCl7Y29uc3QgZT10aGlzLl9kb2N1bWVudCxuPWtKKHQpLG89bj8idG91Y2hlbmQiOiJtb3VzZXVwIjtlLmFkZEV2ZW50TGlzdGVuZXIobj8idG91Y2htb3ZlIjoibW91c2Vtb3ZlIix0aGlzLl9wb2ludGVyTW92ZSx2SiksZS5hZGRFdmVudExpc3RlbmVyKG8sdGhpcy5fcG9pbnRlclVwLHZKKSxuJiZlLmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoY2FuY2VsIix0aGlzLl9wb2ludGVyVXAsdkopO2NvbnN0IGk9dGhpcy5fZ2V0V2luZG93KCk7dm9pZCAwIT09aSYmaSYmaS5hZGRFdmVudExpc3RlbmVyKCJibHVyIix0aGlzLl93aW5kb3dCbHVyKX1fcmVtb3ZlR2xvYmFsRXZlbnRzKCl7Y29uc3QgdD10aGlzLl9kb2N1bWVudDt0LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsdGhpcy5fcG9pbnRlck1vdmUsdkopLHQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsdGhpcy5fcG9pbnRlclVwLHZKKSx0LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRvdWNobW92ZSIsdGhpcy5fcG9pbnRlck1vdmUsdkopLHQucmVtb3ZlRXZlbnRMaXN0ZW5lcigidG91Y2hlbmQiLHRoaXMuX3BvaW50ZXJVcCx2SiksdC5yZW1vdmVFdmVudExpc3RlbmVyKCJ0b3VjaGNhbmNlbCIsdGhpcy5fcG9pbnRlclVwLHZKKTtjb25zdCBlPXRoaXMuX2dldFdpbmRvdygpO3ZvaWQgMCE9PWUmJmUmJmUucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYmx1ciIsdGhpcy5fd2luZG93Qmx1cil9X2luY3JlbWVudCh0KXt0aGlzLnZhbHVlPXRoaXMuX2NsYW1wKCh0aGlzLnZhbHVlfHwwKSt0aGlzLnN0ZXAqdCx0aGlzLm1pbix0aGlzLm1heCl9X3VwZGF0ZVZhbHVlRnJvbVBvc2l0aW9uKHQpe2lmKCF0aGlzLl9zbGlkZXJEaW1lbnNpb25zKXJldHVybjtsZXQgZT10aGlzLl9jbGFtcCgoKHRoaXMudmVydGljYWw/dC55OnQueCktKHRoaXMudmVydGljYWw/dGhpcy5fc2xpZGVyRGltZW5zaW9ucy50b3A6dGhpcy5fc2xpZGVyRGltZW5zaW9ucy5sZWZ0KSkvKHRoaXMudmVydGljYWw/dGhpcy5fc2xpZGVyRGltZW5zaW9ucy5oZWlnaHQ6dGhpcy5fc2xpZGVyRGltZW5zaW9ucy53aWR0aCkpO2lmKHRoaXMuX3Nob3VsZEludmVydE1vdXNlQ29vcmRzKCkmJihlPTEtZSksMD09PWUpdGhpcy52YWx1ZT10aGlzLm1pbjtlbHNlIGlmKDE9PT1lKXRoaXMudmFsdWU9dGhpcy5tYXg7ZWxzZXtjb25zdCB0PXRoaXMuX2NhbGN1bGF0ZVZhbHVlKGUpLG49TWF0aC5yb3VuZCgodC10aGlzLm1pbikvdGhpcy5zdGVwKSp0aGlzLnN0ZXArdGhpcy5taW47dGhpcy52YWx1ZT10aGlzLl9jbGFtcChuLHRoaXMubWluLHRoaXMubWF4KX19X2VtaXRDaGFuZ2VFdmVudCgpe3RoaXMuX2NvbnRyb2xWYWx1ZUFjY2Vzc29yQ2hhbmdlRm4odGhpcy52YWx1ZSksdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMudmFsdWUpLHRoaXMuY2hhbmdlLmVtaXQodGhpcy5fY3JlYXRlQ2hhbmdlRXZlbnQoKSl9X2VtaXRJbnB1dEV2ZW50KCl7dGhpcy5pbnB1dC5lbWl0KHRoaXMuX2NyZWF0ZUNoYW5nZUV2ZW50KCkpfV91cGRhdGVUaWNrSW50ZXJ2YWxQZXJjZW50KCl7aWYodGhpcy50aWNrSW50ZXJ2YWwmJnRoaXMuX3NsaWRlckRpbWVuc2lvbnMpaWYoImF1dG8iPT10aGlzLnRpY2tJbnRlcnZhbCl7bGV0IHQ9dGhpcy52ZXJ0aWNhbD90aGlzLl9zbGlkZXJEaW1lbnNpb25zLmhlaWdodDp0aGlzLl9zbGlkZXJEaW1lbnNpb25zLndpZHRoLGU9TWF0aC5jZWlsKDMwLyh0KnRoaXMuc3RlcC8odGhpcy5tYXgtdGhpcy5taW4pKSk7dGhpcy5fdGlja0ludGVydmFsUGVyY2VudD1lKnRoaXMuc3RlcC90fWVsc2UgdGhpcy5fdGlja0ludGVydmFsUGVyY2VudD10aGlzLnRpY2tJbnRlcnZhbCp0aGlzLnN0ZXAvKHRoaXMubWF4LXRoaXMubWluKX1fY3JlYXRlQ2hhbmdlRXZlbnQodD10aGlzLnZhbHVlKXtsZXQgZT1uZXcgT0o7cmV0dXJuIGUuc291cmNlPXRoaXMsZS52YWx1ZT10LGV9X2NhbGN1bGF0ZVBlcmNlbnRhZ2UodCl7cmV0dXJuKCh0fHwwKS10aGlzLm1pbikvKHRoaXMubWF4LXRoaXMubWluKX1fY2FsY3VsYXRlVmFsdWUodCl7cmV0dXJuIHRoaXMubWluK3QqKHRoaXMubWF4LXRoaXMubWluKX1fY2xhbXAodCxlPTAsbj0xKXtyZXR1cm4gTWF0aC5tYXgoZSxNYXRoLm1pbih0LG4pKX1fZ2V0U2xpZGVyRGltZW5zaW9ucygpe3JldHVybiB0aGlzLl9zbGlkZXJXcmFwcGVyP3RoaXMuX3NsaWRlcldyYXBwZXIubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTpudWxsfV9mb2N1c0hvc3RFbGVtZW50KHQpe3RoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cyh0KX1fYmx1ckhvc3RFbGVtZW50KCl7dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmJsdXIoKX13cml0ZVZhbHVlKHQpe3RoaXMudmFsdWU9dH1yZWdpc3Rlck9uQ2hhbmdlKHQpe3RoaXMuX2NvbnRyb2xWYWx1ZUFjY2Vzc29yQ2hhbmdlRm49dH1yZWdpc3Rlck9uVG91Y2hlZCh0KXt0aGlzLm9uVG91Y2hlZD10fXNldERpc2FibGVkU3RhdGUodCl7dGhpcy5kaXNhYmxlZD10fX1mdW5jdGlvbiBrSih0KXtyZXR1cm4idCI9PT10LnR5cGVbMF19ZnVuY3Rpb24gU0oodCxlKXtsZXQgbjtyZXR1cm4gbj1rSih0KT8ibnVtYmVyIj09dHlwZW9mIGU/REoodC50b3VjaGVzLGUpfHxESih0LmNoYW5nZWRUb3VjaGVzLGUpOnQudG91Y2hlc1swXXx8dC5jaGFuZ2VkVG91Y2hlc1swXTp0LG4/e3g6bi5jbGllbnRYLHk6bi5jbGllbnRZfTp2b2lkIDB9ZnVuY3Rpb24gREoodCxlKXtmb3IobGV0IG49MDtuPHQubGVuZ3RoO24rKylpZih0W25dLmlkZW50aWZpZXI9PT1lKXJldHVybiB0W25dfXdKLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx3SikoZ2YoS2gpLGdmKGZGKSxnZihPYiksZ2YodkYsOCksR2EoInRhYmluZGV4IiksZ2YobUMpLGdmKHNNKSxnZihjayw4KSl9LHdKLsm1Y21wPXNvKHt0eXBlOndKLHNlbGVjdG9yczpbWyJtYXQtc2xpZGVyIl1dLHZpZXdRdWVyeTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiZWeShNSiw1KSwyJmUpe2xldCB0O0J5KHQ9VXkoKSkmJihuLl9zbGlkZXJXcmFwcGVyPXQuZmlyc3QpfX0saG9zdEF0dHJzOlsicm9sZSIsInNsaWRlciIsMSwibWF0LXNsaWRlciIsIm1hdC1mb2N1cy1pbmRpY2F0b3IiXSxob3N0VmFyczoyOSxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezEmZSYmUmYoImZvY3VzIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLl9vbkZvY3VzKCl9KSkoImJsdXIiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4uX29uQmx1cigpfSkpKCJrZXlkb3duIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5fb25LZXlkb3duKGUpfSkpKCJrZXl1cCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5fb25LZXl1cCgpfSkpKCJtb3VzZWVudGVyIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLl9vbk1vdXNlZW50ZXIoKX0pKSgic2VsZWN0c3RhcnQiLChmdW5jdGlvbiB0KGUpe3JldHVybiBlLnByZXZlbnREZWZhdWx0KCl9KSksMiZlJiYoY2coInRhYkluZGV4IixuLnRhYkluZGV4KSx5bSgiYXJpYS1kaXNhYmxlZCIsbi5kaXNhYmxlZCkoImFyaWEtdmFsdWVtYXgiLG4ubWF4KSgiYXJpYS12YWx1ZW1pbiIsbi5taW4pKCJhcmlhLXZhbHVlbm93IixuLnZhbHVlKSgiYXJpYS12YWx1ZXRleHQiLG51bGw9PW4udmFsdWVUZXh0P24uZGlzcGxheVZhbHVlOm4udmFsdWVUZXh0KSgiYXJpYS1vcmllbnRhdGlvbiIsbi52ZXJ0aWNhbD8idmVydGljYWwiOiJob3Jpem9udGFsIiksY3UoIm1hdC1zbGlkZXItZGlzYWJsZWQiLG4uZGlzYWJsZWQpKCJtYXQtc2xpZGVyLWhhcy10aWNrcyIsbi50aWNrSW50ZXJ2YWwpKCJtYXQtc2xpZGVyLWhvcml6b250YWwiLCFuLnZlcnRpY2FsKSgibWF0LXNsaWRlci1heGlzLWludmVydGVkIixuLl9zaG91bGRJbnZlcnRBeGlzKCkpKCJtYXQtc2xpZGVyLWludmVydC1tb3VzZS1jb29yZHMiLG4uX3Nob3VsZEludmVydE1vdXNlQ29vcmRzKCkpKCJtYXQtc2xpZGVyLXNsaWRpbmciLG4uX2lzU2xpZGluZykoIm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZyIsbi50aHVtYkxhYmVsKSgibWF0LXNsaWRlci12ZXJ0aWNhbCIsbi52ZXJ0aWNhbCkoIm1hdC1zbGlkZXItbWluLXZhbHVlIixuLl9pc01pblZhbHVlKCkpKCJtYXQtc2xpZGVyLWhpZGUtbGFzdC10aWNrIixuLmRpc2FibGVkfHxuLl9pc01pblZhbHVlKCkmJm4uX2dldFRodW1iR2FwKCkmJm4uX3Nob3VsZEludmVydEF4aXMoKSkoIl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIiwiTm9vcEFuaW1hdGlvbnMiPT09bi5fYW5pbWF0aW9uTW9kZSkpfSxpbnB1dHM6e2Rpc2FibGVkOiJkaXNhYmxlZCIsY29sb3I6ImNvbG9yIix0YWJJbmRleDoidGFiSW5kZXgiLGludmVydDoiaW52ZXJ0IixtYXg6Im1heCIsbWluOiJtaW4iLHN0ZXA6InN0ZXAiLHRodW1iTGFiZWw6InRodW1iTGFiZWwiLHRpY2tJbnRlcnZhbDoidGlja0ludGVydmFsIix2YWx1ZToidmFsdWUiLHZlcnRpY2FsOiJ2ZXJ0aWNhbCIsZGlzcGxheVdpdGg6ImRpc3BsYXlXaXRoIix2YWx1ZVRleHQ6InZhbHVlVGV4dCJ9LG91dHB1dHM6e2NoYW5nZToiY2hhbmdlIixpbnB1dDoiaW5wdXQiLHZhbHVlQ2hhbmdlOiJ2YWx1ZUNoYW5nZSJ9LGV4cG9ydEFzOlsibWF0U2xpZGVyIl0sZmVhdHVyZXM6W2poKFt4Sl0pLFFwXSxkZWNsczoxMyx2YXJzOjYsY29uc3RzOltbMSwibWF0LXNsaWRlci13cmFwcGVyIl0sWyJzbGlkZXJXcmFwcGVyIiwiIl0sWzEsIm1hdC1zbGlkZXItdHJhY2std3JhcHBlciJdLFsxLCJtYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmQiLDMsIm5nU3R5bGUiXSxbMSwibWF0LXNsaWRlci10cmFjay1maWxsIiwzLCJuZ1N0eWxlIl0sWzEsIm1hdC1zbGlkZXItdGlja3MtY29udGFpbmVyIiwzLCJuZ1N0eWxlIl0sWzEsIm1hdC1zbGlkZXItdGlja3MiLDMsIm5nU3R5bGUiXSxbMSwibWF0LXNsaWRlci10aHVtYi1jb250YWluZXIiLDMsIm5nU3R5bGUiXSxbMSwibWF0LXNsaWRlci1mb2N1cy1yaW5nIl0sWzEsIm1hdC1zbGlkZXItdGh1bWIiXSxbMSwibWF0LXNsaWRlci10aHVtYi1sYWJlbCJdLFsxLCJtYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHQiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKENmKDAsImRpdiIsMCwxKSxDZigyLCJkaXYiLDIpLHZmKDMsImRpdiIsMyksdmYoNCwiZGl2Iiw0KSxNZigpLENmKDUsImRpdiIsNSksdmYoNiwiZGl2Iiw2KSxNZigpLENmKDcsImRpdiIsNyksdmYoOCwiZGl2Iiw4KSx2Zig5LCJkaXYiLDkpLENmKDEwLCJkaXYiLDEwKSxDZigxMSwic3BhbiIsMTEpLFB1KDEyKSxNZigpLE1mKCksTWYoKSxNZigpKSwyJmUmJihEYygzKSxiZigibmdTdHlsZSIsbi5fZ2V0VHJhY2tCYWNrZ3JvdW5kU3R5bGVzKCkpLERjKDEpLGJmKCJuZ1N0eWxlIixuLl9nZXRUcmFja0ZpbGxTdHlsZXMoKSksRGMoMSksYmYoIm5nU3R5bGUiLG4uX2dldFRpY2tzQ29udGFpbmVyU3R5bGVzKCkpLERjKDEpLGJmKCJuZ1N0eWxlIixuLl9nZXRUaWNrc1N0eWxlcygpKSxEYygxKSxiZigibmdTdHlsZSIsbi5fZ2V0VGh1bWJDb250YWluZXJTdHlsZXMoKSksRGMoNSksd3Uobi5kaXNwbGF5VmFsdWUpKX0sZGlyZWN0aXZlczpbenZdLHN0eWxlczpbJy5tYXQtc2xpZGVye2Rpc3BsYXk6aW5saW5lLWJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlO2JveC1zaXppbmc6Ym9yZGVyLWJveDtwYWRkaW5nOjhweDtvdXRsaW5lOm5vbmU7dmVydGljYWwtYWxpZ246bWlkZGxlfS5tYXQtc2xpZGVyOm5vdCgubWF0LXNsaWRlci1kaXNhYmxlZCk6YWN0aXZlLC5tYXQtc2xpZGVyLm1hdC1zbGlkZXItc2xpZGluZzpub3QoLm1hdC1zbGlkZXItZGlzYWJsZWQpe2N1cnNvcjotd2Via2l0LWdyYWJiaW5nO2N1cnNvcjpncmFiYmluZ30ubWF0LXNsaWRlci13cmFwcGVyey13ZWJraXQtcHJpbnQtY29sb3ItYWRqdXN0OmV4YWN0O2NvbG9yLWFkanVzdDpleGFjdDtwb3NpdGlvbjphYnNvbHV0ZX0ubWF0LXNsaWRlci10cmFjay13cmFwcGVye3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDtvdmVyZmxvdzpoaWRkZW59Lm1hdC1zbGlkZXItdHJhY2stZmlsbHtwb3NpdGlvbjphYnNvbHV0ZTt0cmFuc2Zvcm0tb3JpZ2luOjAgMDt0cmFuc2l0aW9uOnRyYW5zZm9ybSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKSxiYWNrZ3JvdW5kLWNvbG9yIDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpfS5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmR7cG9zaXRpb246YWJzb2x1dGU7dHJhbnNmb3JtLW9yaWdpbjoxMDAlIDEwMCU7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSksYmFja2dyb3VuZC1jb2xvciA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKX0ubWF0LXNsaWRlci10aWNrcy1jb250YWluZXJ7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO3RvcDowO292ZXJmbG93OmhpZGRlbn0ubWF0LXNsaWRlci10aWNrc3std2Via2l0LWJhY2tncm91bmQtY2xpcDpjb250ZW50LWJveDtiYWNrZ3JvdW5kLWNsaXA6Y29udGVudC1ib3g7YmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0O2JveC1zaXppbmc6Ym9yZGVyLWJveDtvcGFjaXR5OjA7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpfS5tYXQtc2xpZGVyLXRodW1iLWNvbnRhaW5lcntwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjE7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Lm1hdC1zbGlkZXItZm9jdXMtcmluZ3twb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDozMHB4O2hlaWdodDozMHB4O2JvcmRlci1yYWRpdXM6NTAlO3RyYW5zZm9ybTpzY2FsZSgwKTtvcGFjaXR5OjA7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSksYmFja2dyb3VuZC1jb2xvciA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKSxvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpfS5tYXQtc2xpZGVyLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmcsLm1hdC1zbGlkZXIuY2RrLXByb2dyYW0tZm9jdXNlZCAubWF0LXNsaWRlci1mb2N1cy1yaW5ne3RyYW5zZm9ybTpzY2FsZSgxKTtvcGFjaXR5OjF9Lm1hdC1zbGlkZXI6bm90KC5tYXQtc2xpZGVyLWRpc2FibGVkKTpub3QoLm1hdC1zbGlkZXItc2xpZGluZykgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwsLm1hdC1zbGlkZXI6bm90KC5tYXQtc2xpZGVyLWRpc2FibGVkKTpub3QoLm1hdC1zbGlkZXItc2xpZGluZykgLm1hdC1zbGlkZXItdGh1bWJ7Y3Vyc29yOi13ZWJraXQtZ3JhYjtjdXJzb3I6Z3JhYn0ubWF0LXNsaWRlci10aHVtYntwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDotMTBweDtib3R0b206LTEwcHg7Ym94LXNpemluZzpib3JkZXItYm94O3dpZHRoOjIwcHg7aGVpZ2h0OjIwcHg7Ym9yZGVyOjNweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItcmFkaXVzOjUwJTt0cmFuc2Zvcm06c2NhbGUoMC43KTt0cmFuc2l0aW9uOnRyYW5zZm9ybSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKSxiYWNrZ3JvdW5kLWNvbG9yIDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpLGJvcmRlci1jb2xvciA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKX0ubWF0LXNsaWRlci10aHVtYi1sYWJlbHtkaXNwbGF5Om5vbmU7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MjhweDtoZWlnaHQ6MjhweDtib3JkZXItcmFkaXVzOjUwJTt0cmFuc2l0aW9uOnRyYW5zZm9ybSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKSxib3JkZXItcmFkaXVzIDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpLGJhY2tncm91bmQtY29sb3IgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXNsaWRlci10aHVtYi1sYWJlbHtvdXRsaW5lOnNvbGlkIDFweH0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0e3otaW5kZXg6MTtvcGFjaXR5OjA7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpfS5tYXQtc2xpZGVyLXNsaWRpbmcgLm1hdC1zbGlkZXItdHJhY2stZmlsbCwubWF0LXNsaWRlci1zbGlkaW5nIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmQsLm1hdC1zbGlkZXItc2xpZGluZyAubWF0LXNsaWRlci10aHVtYi1jb250YWluZXJ7dHJhbnNpdGlvbi1kdXJhdGlvbjowbXN9Lm1hdC1zbGlkZXItaGFzLXRpY2tzIC5tYXQtc2xpZGVyLXdyYXBwZXI6OmFmdGVye2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXdpZHRoOjA7Ym9yZGVyLXN0eWxlOnNvbGlkO29wYWNpdHk6MDt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Lm1hdC1zbGlkZXItaGFzLXRpY2tzLmNkay1mb2N1c2VkOm5vdCgubWF0LXNsaWRlci1oaWRlLWxhc3QtdGljaykgLm1hdC1zbGlkZXItd3JhcHBlcjo6YWZ0ZXIsLm1hdC1zbGlkZXItaGFzLXRpY2tzOmhvdmVyOm5vdCgubWF0LXNsaWRlci1oaWRlLWxhc3QtdGljaykgLm1hdC1zbGlkZXItd3JhcHBlcjo6YWZ0ZXJ7b3BhY2l0eToxfS5tYXQtc2xpZGVyLWhhcy10aWNrcy5jZGstZm9jdXNlZDpub3QoLm1hdC1zbGlkZXItZGlzYWJsZWQpIC5tYXQtc2xpZGVyLXRpY2tzLC5tYXQtc2xpZGVyLWhhcy10aWNrczpob3Zlcjpub3QoLm1hdC1zbGlkZXItZGlzYWJsZWQpIC5tYXQtc2xpZGVyLXRpY2tze29wYWNpdHk6MX0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmd7ZGlzcGxheTpub25lfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcgLm1hdC1zbGlkZXItdGh1bWItbGFiZWx7ZGlzcGxheTpmbGV4fS5tYXQtc2xpZGVyLWF4aXMtaW52ZXJ0ZWQgLm1hdC1zbGlkZXItdHJhY2stZmlsbHt0cmFuc2Zvcm0tb3JpZ2luOjEwMCUgMTAwJX0ubWF0LXNsaWRlci1heGlzLWludmVydGVkIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmR7dHJhbnNmb3JtLW9yaWdpbjowIDB9Lm1hdC1zbGlkZXI6bm90KC5tYXQtc2xpZGVyLWRpc2FibGVkKS5jZGstZm9jdXNlZC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcgLm1hdC1zbGlkZXItdGh1bWJ7dHJhbnNmb3JtOnNjYWxlKDApfS5tYXQtc2xpZGVyOm5vdCgubWF0LXNsaWRlci1kaXNhYmxlZCkuY2RrLWZvY3VzZWQgLm1hdC1zbGlkZXItdGh1bWItbGFiZWx7Ym9yZGVyLXJhZGl1czo1MCUgNTAlIDB9Lm1hdC1zbGlkZXI6bm90KC5tYXQtc2xpZGVyLWRpc2FibGVkKS5jZGstZm9jdXNlZCAubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0e29wYWNpdHk6MX0ubWF0LXNsaWRlcjpub3QoLm1hdC1zbGlkZXItZGlzYWJsZWQpLmNkay1tb3VzZS1mb2N1c2VkIC5tYXQtc2xpZGVyLXRodW1iLC5tYXQtc2xpZGVyOm5vdCgubWF0LXNsaWRlci1kaXNhYmxlZCkuY2RrLXRvdWNoLWZvY3VzZWQgLm1hdC1zbGlkZXItdGh1bWIsLm1hdC1zbGlkZXI6bm90KC5tYXQtc2xpZGVyLWRpc2FibGVkKS5jZGstcHJvZ3JhbS1mb2N1c2VkIC5tYXQtc2xpZGVyLXRodW1ie2JvcmRlci13aWR0aDoycHg7dHJhbnNmb3JtOnNjYWxlKDEpfS5tYXQtc2xpZGVyLWRpc2FibGVkIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmd7dHJhbnNmb3JtOnNjYWxlKDApO29wYWNpdHk6MH0ubWF0LXNsaWRlci1kaXNhYmxlZCAubWF0LXNsaWRlci10aHVtYntib3JkZXItd2lkdGg6NHB4O3RyYW5zZm9ybTpzY2FsZSgwLjUpfS5tYXQtc2xpZGVyLWRpc2FibGVkIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVse2Rpc3BsYXk6bm9uZX0ubWF0LXNsaWRlci1ob3Jpem9udGFse2hlaWdodDo0OHB4O21pbi13aWR0aDoxMjhweH0ubWF0LXNsaWRlci1ob3Jpem9udGFsIC5tYXQtc2xpZGVyLXdyYXBwZXJ7aGVpZ2h0OjJweDt0b3A6MjNweDtsZWZ0OjhweDtyaWdodDo4cHh9Lm1hdC1zbGlkZXItaG9yaXpvbnRhbCAubWF0LXNsaWRlci13cmFwcGVyOjphZnRlcntoZWlnaHQ6MnB4O2JvcmRlci1sZWZ0LXdpZHRoOjJweDtyaWdodDowO3RvcDowfS5tYXQtc2xpZGVyLWhvcml6b250YWwgLm1hdC1zbGlkZXItdHJhY2std3JhcHBlcntoZWlnaHQ6MnB4O3dpZHRoOjEwMCV9Lm1hdC1zbGlkZXItaG9yaXpvbnRhbCAubWF0LXNsaWRlci10cmFjay1maWxse2hlaWdodDoycHg7d2lkdGg6MTAwJTt0cmFuc2Zvcm06c2NhbGVYKDApfS5tYXQtc2xpZGVyLWhvcml6b250YWwgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZHtoZWlnaHQ6MnB4O3dpZHRoOjEwMCU7dHJhbnNmb3JtOnNjYWxlWCgxKX0ubWF0LXNsaWRlci1ob3Jpem9udGFsIC5tYXQtc2xpZGVyLXRpY2tzLWNvbnRhaW5lcntoZWlnaHQ6MnB4O3dpZHRoOjEwMCV9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXNsaWRlci1ob3Jpem9udGFsIC5tYXQtc2xpZGVyLXRpY2tzLWNvbnRhaW5lcntoZWlnaHQ6MDtvdXRsaW5lOnNvbGlkIDJweDt0b3A6MXB4fS5tYXQtc2xpZGVyLWhvcml6b250YWwgLm1hdC1zbGlkZXItdGlja3N7aGVpZ2h0OjJweDt3aWR0aDoxMDAlfS5tYXQtc2xpZGVyLWhvcml6b250YWwgLm1hdC1zbGlkZXItdGh1bWItY29udGFpbmVye3dpZHRoOjEwMCU7aGVpZ2h0OjA7dG9wOjUwJX0ubWF0LXNsaWRlci1ob3Jpem9udGFsIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmd7dG9wOi0xNXB4O3JpZ2h0Oi0xNXB4fS5tYXQtc2xpZGVyLWhvcml6b250YWwgLm1hdC1zbGlkZXItdGh1bWItbGFiZWx7cmlnaHQ6LTE0cHg7dG9wOi00MHB4O3RyYW5zZm9ybTp0cmFuc2xhdGVZKDI2cHgpIHNjYWxlKDAuMDEpIHJvdGF0ZSg0NWRlZyl9Lm1hdC1zbGlkZXItaG9yaXpvbnRhbCAubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0e3RyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKX0ubWF0LXNsaWRlci1ob3Jpem9udGFsLmNkay1mb2N1c2VkIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVse3RyYW5zZm9ybTpyb3RhdGUoNDVkZWcpfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1zbGlkZXItaG9yaXpvbnRhbC5jZGstZm9jdXNlZCAubWF0LXNsaWRlci10aHVtYi1sYWJlbCwuY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtc2xpZGVyLWhvcml6b250YWwuY2RrLWZvY3VzZWQgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dHt0cmFuc2Zvcm06bm9uZX0ubWF0LXNsaWRlci12ZXJ0aWNhbHt3aWR0aDo0OHB4O21pbi1oZWlnaHQ6MTI4cHh9Lm1hdC1zbGlkZXItdmVydGljYWwgLm1hdC1zbGlkZXItd3JhcHBlcnt3aWR0aDoycHg7dG9wOjhweDtib3R0b206OHB4O2xlZnQ6MjNweH0ubWF0LXNsaWRlci12ZXJ0aWNhbCAubWF0LXNsaWRlci13cmFwcGVyOjphZnRlcnt3aWR0aDoycHg7Ym9yZGVyLXRvcC13aWR0aDoycHg7Ym90dG9tOjA7bGVmdDowfS5tYXQtc2xpZGVyLXZlcnRpY2FsIC5tYXQtc2xpZGVyLXRyYWNrLXdyYXBwZXJ7aGVpZ2h0OjEwMCU7d2lkdGg6MnB4fS5tYXQtc2xpZGVyLXZlcnRpY2FsIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGx7aGVpZ2h0OjEwMCU7d2lkdGg6MnB4O3RyYW5zZm9ybTpzY2FsZVkoMCl9Lm1hdC1zbGlkZXItdmVydGljYWwgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZHtoZWlnaHQ6MTAwJTt3aWR0aDoycHg7dHJhbnNmb3JtOnNjYWxlWSgxKX0ubWF0LXNsaWRlci12ZXJ0aWNhbCAubWF0LXNsaWRlci10aWNrcy1jb250YWluZXJ7d2lkdGg6MnB4O2hlaWdodDoxMDAlfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1zbGlkZXItdmVydGljYWwgLm1hdC1zbGlkZXItdGlja3MtY29udGFpbmVye3dpZHRoOjA7b3V0bGluZTpzb2xpZCAycHg7bGVmdDoxcHh9Lm1hdC1zbGlkZXItdmVydGljYWwgLm1hdC1zbGlkZXItZm9jdXMtcmluZ3tib3R0b206LTE1cHg7bGVmdDotMTVweH0ubWF0LXNsaWRlci12ZXJ0aWNhbCAubWF0LXNsaWRlci10aWNrc3t3aWR0aDoycHg7aGVpZ2h0OjEwMCV9Lm1hdC1zbGlkZXItdmVydGljYWwgLm1hdC1zbGlkZXItdGh1bWItY29udGFpbmVye2hlaWdodDoxMDAlO3dpZHRoOjA7bGVmdDo1MCV9Lm1hdC1zbGlkZXItdmVydGljYWwgLm1hdC1zbGlkZXItdGh1bWJ7LXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OmhpZGRlbjtiYWNrZmFjZS12aXNpYmlsaXR5OmhpZGRlbn0ubWF0LXNsaWRlci12ZXJ0aWNhbCAubWF0LXNsaWRlci10aHVtYi1sYWJlbHtib3R0b206LTE0cHg7bGVmdDotNDBweDt0cmFuc2Zvcm06dHJhbnNsYXRlWCgyNnB4KSBzY2FsZSgwLjAxKSByb3RhdGUoLTQ1ZGVnKX0ubWF0LXNsaWRlci12ZXJ0aWNhbCAubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0e3RyYW5zZm9ybTpyb3RhdGUoNDVkZWcpfS5tYXQtc2xpZGVyLXZlcnRpY2FsLmNkay1mb2N1c2VkIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVse3RyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKX1bZGlyPXJ0bF0gLm1hdC1zbGlkZXItd3JhcHBlcjo6YWZ0ZXJ7bGVmdDowO3JpZ2h0OmF1dG99W2Rpcj1ydGxdIC5tYXQtc2xpZGVyLWhvcml6b250YWwgLm1hdC1zbGlkZXItdHJhY2stZmlsbHt0cmFuc2Zvcm0tb3JpZ2luOjEwMCUgMTAwJX1bZGlyPXJ0bF0gLm1hdC1zbGlkZXItaG9yaXpvbnRhbCAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5ke3RyYW5zZm9ybS1vcmlnaW46MCAwfVtkaXI9cnRsXSAubWF0LXNsaWRlci1ob3Jpem9udGFsLm1hdC1zbGlkZXItYXhpcy1pbnZlcnRlZCAubWF0LXNsaWRlci10cmFjay1maWxse3RyYW5zZm9ybS1vcmlnaW46MCAwfVtkaXI9cnRsXSAubWF0LXNsaWRlci1ob3Jpem9udGFsLm1hdC1zbGlkZXItYXhpcy1pbnZlcnRlZCAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5ke3RyYW5zZm9ybS1vcmlnaW46MTAwJSAxMDAlfS5tYXQtc2xpZGVyLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGwsLm1hdC1zbGlkZXIuX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZCwubWF0LXNsaWRlci5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LXNsaWRlci10aWNrcywubWF0LXNsaWRlci5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LXNsaWRlci10aHVtYi1jb250YWluZXIsLm1hdC1zbGlkZXIuX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1zbGlkZXItZm9jdXMtcmluZywubWF0LXNsaWRlci5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LXNsaWRlci10aHVtYiwubWF0LXNsaWRlci5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LXNsaWRlci10aHVtYi1sYWJlbCwubWF0LXNsaWRlci5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0LC5tYXQtc2xpZGVyLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtc2xpZGVyLWhhcy10aWNrcyAubWF0LXNsaWRlci13cmFwcGVyOjphZnRlcnt0cmFuc2l0aW9uOm5vbmV9XG4nXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSx3Si5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOktofSx7dHlwZTpmRn0se3R5cGU6T2J9LHt0eXBlOnZGLGRlY29yYXRvcnM6W3t0eXBlOkJyfV19LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTokYSxhcmdzOlsidGFiaW5kZXgiXX1dfSx7dHlwZTptQ30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3NNXX1dfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W2NrXX1dfV0sd0oucHJvcERlY29yYXRvcnM9e2ludmVydDpbe3R5cGU6Ul99XSxtYXg6W3t0eXBlOlJffV0sbWluOlt7dHlwZTpSX31dLHN0ZXA6W3t0eXBlOlJffV0sdGh1bWJMYWJlbDpbe3R5cGU6Ul99XSx0aWNrSW50ZXJ2YWw6W3t0eXBlOlJffV0sdmFsdWU6W3t0eXBlOlJffV0sZGlzcGxheVdpdGg6W3t0eXBlOlJffV0sdmFsdWVUZXh0Olt7dHlwZTpSX31dLHZlcnRpY2FsOlt7dHlwZTpSX31dLGNoYW5nZTpbe3R5cGU6RV99XSxpbnB1dDpbe3R5cGU6RV99XSx2YWx1ZUNoYW5nZTpbe3R5cGU6RV99XSxfc2xpZGVyV3JhcHBlcjpbe3R5cGU6YXIsYXJnczpbInNsaWRlcldyYXBwZXIiXX1dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHdKLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Im1hdC1zbGlkZXIiLGV4cG9ydEFzOiJtYXRTbGlkZXIiLHByb3ZpZGVyczpbeEpdLGhvc3Q6eyIoZm9jdXMpIjoiX29uRm9jdXMoKSIsIihibHVyKSI6Il9vbkJsdXIoKSIsIihrZXlkb3duKSI6Il9vbktleWRvd24oJGV2ZW50KSIsIihrZXl1cCkiOiJfb25LZXl1cCgpIiwiKG1vdXNlZW50ZXIpIjoiX29uTW91c2VlbnRlcigpIiwiKHNlbGVjdHN0YXJ0KSI6IiRldmVudC5wcmV2ZW50RGVmYXVsdCgpIixjbGFzczoibWF0LXNsaWRlciBtYXQtZm9jdXMtaW5kaWNhdG9yIixyb2xlOiJzbGlkZXIiLCJbdGFiSW5kZXhdIjoidGFiSW5kZXgiLCJbYXR0ci5hcmlhLWRpc2FibGVkXSI6ImRpc2FibGVkIiwiW2F0dHIuYXJpYS12YWx1ZW1heF0iOiJtYXgiLCJbYXR0ci5hcmlhLXZhbHVlbWluXSI6Im1pbiIsIlthdHRyLmFyaWEtdmFsdWVub3ddIjoidmFsdWUiLCJbYXR0ci5hcmlhLXZhbHVldGV4dF0iOiJ2YWx1ZVRleHQgPT0gbnVsbCA/IGRpc3BsYXlWYWx1ZSA6IHZhbHVlVGV4dCIsIlthdHRyLmFyaWEtb3JpZW50YXRpb25dIjondmVydGljYWwgPyAidmVydGljYWwiIDogImhvcml6b250YWwiJywiW2NsYXNzLm1hdC1zbGlkZXItZGlzYWJsZWRdIjoiZGlzYWJsZWQiLCJbY2xhc3MubWF0LXNsaWRlci1oYXMtdGlja3NdIjoidGlja0ludGVydmFsIiwiW2NsYXNzLm1hdC1zbGlkZXItaG9yaXpvbnRhbF0iOiIhdmVydGljYWwiLCJbY2xhc3MubWF0LXNsaWRlci1heGlzLWludmVydGVkXSI6Il9zaG91bGRJbnZlcnRBeGlzKCkiLCJbY2xhc3MubWF0LXNsaWRlci1pbnZlcnQtbW91c2UtY29vcmRzXSI6Il9zaG91bGRJbnZlcnRNb3VzZUNvb3JkcygpIiwiW2NsYXNzLm1hdC1zbGlkZXItc2xpZGluZ10iOiJfaXNTbGlkaW5nIiwiW2NsYXNzLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZ10iOiJ0aHVtYkxhYmVsIiwiW2NsYXNzLm1hdC1zbGlkZXItdmVydGljYWxdIjoidmVydGljYWwiLCJbY2xhc3MubWF0LXNsaWRlci1taW4tdmFsdWVdIjoiX2lzTWluVmFsdWUoKSIsIltjbGFzcy5tYXQtc2xpZGVyLWhpZGUtbGFzdC10aWNrXSI6ImRpc2FibGVkIHx8IF9pc01pblZhbHVlKCkgJiYgX2dldFRodW1iR2FwKCkgJiYgX3Nob3VsZEludmVydEF4aXMoKSIsIltjbGFzcy5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZV0iOidfYW5pbWF0aW9uTW9kZSA9PT0gIk5vb3BBbmltYXRpb25zIid9LHRlbXBsYXRlOic8ZGl2IGNsYXNzPSJtYXQtc2xpZGVyLXdyYXBwZXIiICNzbGlkZXJXcmFwcGVyPlxuICA8ZGl2IGNsYXNzPSJtYXQtc2xpZGVyLXRyYWNrLXdyYXBwZXIiPlxuICAgIDxkaXYgY2xhc3M9Im1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZCIgW25nU3R5bGVdPSJfZ2V0VHJhY2tCYWNrZ3JvdW5kU3R5bGVzKCkiPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9Im1hdC1zbGlkZXItdHJhY2stZmlsbCIgW25nU3R5bGVdPSJfZ2V0VHJhY2tGaWxsU3R5bGVzKCkiPjwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz0ibWF0LXNsaWRlci10aWNrcy1jb250YWluZXIiIFtuZ1N0eWxlXT0iX2dldFRpY2tzQ29udGFpbmVyU3R5bGVzKCkiPlxuICAgIDxkaXYgY2xhc3M9Im1hdC1zbGlkZXItdGlja3MiIFtuZ1N0eWxlXT0iX2dldFRpY2tzU3R5bGVzKCkiPjwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz0ibWF0LXNsaWRlci10aHVtYi1jb250YWluZXIiIFtuZ1N0eWxlXT0iX2dldFRodW1iQ29udGFpbmVyU3R5bGVzKCkiPlxuICAgIDxkaXYgY2xhc3M9Im1hdC1zbGlkZXItZm9jdXMtcmluZyI+PC9kaXY+XG4gICAgPGRpdiBjbGFzcz0ibWF0LXNsaWRlci10aHVtYiI+PC9kaXY+XG4gICAgPGRpdiBjbGFzcz0ibWF0LXNsaWRlci10aHVtYi1sYWJlbCI+XG4gICAgICA8c3BhbiBjbGFzcz0ibWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0Ij57e2Rpc3BsYXlWYWx1ZX19PC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuJyxpbnB1dHM6WyJkaXNhYmxlZCIsImNvbG9yIiwidGFiSW5kZXgiXSxlbmNhcHN1bGF0aW9uOlduLk5vbmUsY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaCxzdHlsZXM6WycubWF0LXNsaWRlcntkaXNwbGF5OmlubGluZS1ibG9jaztwb3NpdGlvbjpyZWxhdGl2ZTtib3gtc2l6aW5nOmJvcmRlci1ib3g7cGFkZGluZzo4cHg7b3V0bGluZTpub25lO3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0ubWF0LXNsaWRlcjpub3QoLm1hdC1zbGlkZXItZGlzYWJsZWQpOmFjdGl2ZSwubWF0LXNsaWRlci5tYXQtc2xpZGVyLXNsaWRpbmc6bm90KC5tYXQtc2xpZGVyLWRpc2FibGVkKXtjdXJzb3I6LXdlYmtpdC1ncmFiYmluZztjdXJzb3I6Z3JhYmJpbmd9Lm1hdC1zbGlkZXItd3JhcHBlcnstd2Via2l0LXByaW50LWNvbG9yLWFkanVzdDpleGFjdDtjb2xvci1hZGp1c3Q6ZXhhY3Q7cG9zaXRpb246YWJzb2x1dGV9Lm1hdC1zbGlkZXItdHJhY2std3JhcHBlcntwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7b3ZlcmZsb3c6aGlkZGVufS5tYXQtc2xpZGVyLXRyYWNrLWZpbGx7cG9zaXRpb246YWJzb2x1dGU7dHJhbnNmb3JtLW9yaWdpbjowIDA7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSksYmFja2dyb3VuZC1jb2xvciA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKX0ubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5ke3Bvc2l0aW9uOmFic29sdXRlO3RyYW5zZm9ybS1vcmlnaW46MTAwJSAxMDAlO3RyYW5zaXRpb246dHJhbnNmb3JtIDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpLGJhY2tncm91bmQtY29sb3IgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Lm1hdC1zbGlkZXItdGlja3MtY29udGFpbmVye3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDt0b3A6MDtvdmVyZmxvdzpoaWRkZW59Lm1hdC1zbGlkZXItdGlja3N7LXdlYmtpdC1iYWNrZ3JvdW5kLWNsaXA6Y29udGVudC1ib3g7YmFja2dyb3VuZC1jbGlwOmNvbnRlbnQtYm94O2JhY2tncm91bmQtcmVwZWF0OnJlcGVhdDtib3gtc2l6aW5nOmJvcmRlci1ib3g7b3BhY2l0eTowO3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKX0ubWF0LXNsaWRlci10aHVtYi1jb250YWluZXJ7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxO3RyYW5zaXRpb246dHJhbnNmb3JtIDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpfS5tYXQtc2xpZGVyLWZvY3VzLXJpbmd7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MzBweDtoZWlnaHQ6MzBweDtib3JkZXItcmFkaXVzOjUwJTt0cmFuc2Zvcm06c2NhbGUoMCk7b3BhY2l0eTowO3RyYW5zaXRpb246dHJhbnNmb3JtIDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpLGJhY2tncm91bmQtY29sb3IgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSksb3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKX0ubWF0LXNsaWRlci5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LXNsaWRlci1mb2N1cy1yaW5nLC5tYXQtc2xpZGVyLmNkay1wcm9ncmFtLWZvY3VzZWQgLm1hdC1zbGlkZXItZm9jdXMtcmluZ3t0cmFuc2Zvcm06c2NhbGUoMSk7b3BhY2l0eToxfS5tYXQtc2xpZGVyOm5vdCgubWF0LXNsaWRlci1kaXNhYmxlZCk6bm90KC5tYXQtc2xpZGVyLXNsaWRpbmcpIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLC5tYXQtc2xpZGVyOm5vdCgubWF0LXNsaWRlci1kaXNhYmxlZCk6bm90KC5tYXQtc2xpZGVyLXNsaWRpbmcpIC5tYXQtc2xpZGVyLXRodW1ie2N1cnNvcjotd2Via2l0LWdyYWI7Y3Vyc29yOmdyYWJ9Lm1hdC1zbGlkZXItdGh1bWJ7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6LTEwcHg7Ym90dG9tOi0xMHB4O2JveC1zaXppbmc6Ym9yZGVyLWJveDt3aWR0aDoyMHB4O2hlaWdodDoyMHB4O2JvcmRlcjozcHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXJhZGl1czo1MCU7dHJhbnNmb3JtOnNjYWxlKDAuNyk7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSksYmFja2dyb3VuZC1jb2xvciA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKSxib3JkZXItY29sb3IgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWx7ZGlzcGxheTpub25lO2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjI4cHg7aGVpZ2h0OjI4cHg7Ym9yZGVyLXJhZGl1czo1MCU7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSksYm9yZGVyLXJhZGl1cyA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKSxiYWNrZ3JvdW5kLWNvbG9yIDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1zbGlkZXItdGh1bWItbGFiZWx7b3V0bGluZTpzb2xpZCAxcHh9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dHt6LWluZGV4OjE7b3BhY2l0eTowO3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKX0ubWF0LXNsaWRlci1zbGlkaW5nIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGwsLm1hdC1zbGlkZXItc2xpZGluZyAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kLC5tYXQtc2xpZGVyLXNsaWRpbmcgLm1hdC1zbGlkZXItdGh1bWItY29udGFpbmVye3RyYW5zaXRpb24tZHVyYXRpb246MG1zfS5tYXQtc2xpZGVyLWhhcy10aWNrcyAubWF0LXNsaWRlci13cmFwcGVyOjphZnRlcntjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci13aWR0aDowO2JvcmRlci1zdHlsZTpzb2xpZDtvcGFjaXR5OjA7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpfS5tYXQtc2xpZGVyLWhhcy10aWNrcy5jZGstZm9jdXNlZDpub3QoLm1hdC1zbGlkZXItaGlkZS1sYXN0LXRpY2spIC5tYXQtc2xpZGVyLXdyYXBwZXI6OmFmdGVyLC5tYXQtc2xpZGVyLWhhcy10aWNrczpob3Zlcjpub3QoLm1hdC1zbGlkZXItaGlkZS1sYXN0LXRpY2spIC5tYXQtc2xpZGVyLXdyYXBwZXI6OmFmdGVye29wYWNpdHk6MX0ubWF0LXNsaWRlci1oYXMtdGlja3MuY2RrLWZvY3VzZWQ6bm90KC5tYXQtc2xpZGVyLWRpc2FibGVkKSAubWF0LXNsaWRlci10aWNrcywubWF0LXNsaWRlci1oYXMtdGlja3M6aG92ZXI6bm90KC5tYXQtc2xpZGVyLWRpc2FibGVkKSAubWF0LXNsaWRlci10aWNrc3tvcGFjaXR5OjF9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZyAubWF0LXNsaWRlci1mb2N1cy1yaW5ne2Rpc3BsYXk6bm9uZX0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVse2Rpc3BsYXk6ZmxleH0ubWF0LXNsaWRlci1heGlzLWludmVydGVkIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGx7dHJhbnNmb3JtLW9yaWdpbjoxMDAlIDEwMCV9Lm1hdC1zbGlkZXItYXhpcy1pbnZlcnRlZCAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5ke3RyYW5zZm9ybS1vcmlnaW46MCAwfS5tYXQtc2xpZGVyOm5vdCgubWF0LXNsaWRlci1kaXNhYmxlZCkuY2RrLWZvY3VzZWQubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nIC5tYXQtc2xpZGVyLXRodW1ie3RyYW5zZm9ybTpzY2FsZSgwKX0ubWF0LXNsaWRlcjpub3QoLm1hdC1zbGlkZXItZGlzYWJsZWQpLmNkay1mb2N1c2VkIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVse2JvcmRlci1yYWRpdXM6NTAlIDUwJSAwfS5tYXQtc2xpZGVyOm5vdCgubWF0LXNsaWRlci1kaXNhYmxlZCkuY2RrLWZvY3VzZWQgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dHtvcGFjaXR5OjF9Lm1hdC1zbGlkZXI6bm90KC5tYXQtc2xpZGVyLWRpc2FibGVkKS5jZGstbW91c2UtZm9jdXNlZCAubWF0LXNsaWRlci10aHVtYiwubWF0LXNsaWRlcjpub3QoLm1hdC1zbGlkZXItZGlzYWJsZWQpLmNkay10b3VjaC1mb2N1c2VkIC5tYXQtc2xpZGVyLXRodW1iLC5tYXQtc2xpZGVyOm5vdCgubWF0LXNsaWRlci1kaXNhYmxlZCkuY2RrLXByb2dyYW0tZm9jdXNlZCAubWF0LXNsaWRlci10aHVtYntib3JkZXItd2lkdGg6MnB4O3RyYW5zZm9ybTpzY2FsZSgxKX0ubWF0LXNsaWRlci1kaXNhYmxlZCAubWF0LXNsaWRlci1mb2N1cy1yaW5ne3RyYW5zZm9ybTpzY2FsZSgwKTtvcGFjaXR5OjB9Lm1hdC1zbGlkZXItZGlzYWJsZWQgLm1hdC1zbGlkZXItdGh1bWJ7Ym9yZGVyLXdpZHRoOjRweDt0cmFuc2Zvcm06c2NhbGUoMC41KX0ubWF0LXNsaWRlci1kaXNhYmxlZCAubWF0LXNsaWRlci10aHVtYi1sYWJlbHtkaXNwbGF5Om5vbmV9Lm1hdC1zbGlkZXItaG9yaXpvbnRhbHtoZWlnaHQ6NDhweDttaW4td2lkdGg6MTI4cHh9Lm1hdC1zbGlkZXItaG9yaXpvbnRhbCAubWF0LXNsaWRlci13cmFwcGVye2hlaWdodDoycHg7dG9wOjIzcHg7bGVmdDo4cHg7cmlnaHQ6OHB4fS5tYXQtc2xpZGVyLWhvcml6b250YWwgLm1hdC1zbGlkZXItd3JhcHBlcjo6YWZ0ZXJ7aGVpZ2h0OjJweDtib3JkZXItbGVmdC13aWR0aDoycHg7cmlnaHQ6MDt0b3A6MH0ubWF0LXNsaWRlci1ob3Jpem9udGFsIC5tYXQtc2xpZGVyLXRyYWNrLXdyYXBwZXJ7aGVpZ2h0OjJweDt3aWR0aDoxMDAlfS5tYXQtc2xpZGVyLWhvcml6b250YWwgLm1hdC1zbGlkZXItdHJhY2stZmlsbHtoZWlnaHQ6MnB4O3dpZHRoOjEwMCU7dHJhbnNmb3JtOnNjYWxlWCgwKX0ubWF0LXNsaWRlci1ob3Jpem9udGFsIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmR7aGVpZ2h0OjJweDt3aWR0aDoxMDAlO3RyYW5zZm9ybTpzY2FsZVgoMSl9Lm1hdC1zbGlkZXItaG9yaXpvbnRhbCAubWF0LXNsaWRlci10aWNrcy1jb250YWluZXJ7aGVpZ2h0OjJweDt3aWR0aDoxMDAlfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1zbGlkZXItaG9yaXpvbnRhbCAubWF0LXNsaWRlci10aWNrcy1jb250YWluZXJ7aGVpZ2h0OjA7b3V0bGluZTpzb2xpZCAycHg7dG9wOjFweH0ubWF0LXNsaWRlci1ob3Jpem9udGFsIC5tYXQtc2xpZGVyLXRpY2tze2hlaWdodDoycHg7d2lkdGg6MTAwJX0ubWF0LXNsaWRlci1ob3Jpem9udGFsIC5tYXQtc2xpZGVyLXRodW1iLWNvbnRhaW5lcnt3aWR0aDoxMDAlO2hlaWdodDowO3RvcDo1MCV9Lm1hdC1zbGlkZXItaG9yaXpvbnRhbCAubWF0LXNsaWRlci1mb2N1cy1yaW5ne3RvcDotMTVweDtyaWdodDotMTVweH0ubWF0LXNsaWRlci1ob3Jpem9udGFsIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVse3JpZ2h0Oi0xNHB4O3RvcDotNDBweDt0cmFuc2Zvcm06dHJhbnNsYXRlWSgyNnB4KSBzY2FsZSgwLjAxKSByb3RhdGUoNDVkZWcpfS5tYXQtc2xpZGVyLWhvcml6b250YWwgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dHt0cmFuc2Zvcm06cm90YXRlKC00NWRlZyl9Lm1hdC1zbGlkZXItaG9yaXpvbnRhbC5jZGstZm9jdXNlZCAubWF0LXNsaWRlci10aHVtYi1sYWJlbHt0cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtc2xpZGVyLWhvcml6b250YWwuY2RrLWZvY3VzZWQgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwsLmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXNsaWRlci1ob3Jpem9udGFsLmNkay1mb2N1c2VkIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHR7dHJhbnNmb3JtOm5vbmV9Lm1hdC1zbGlkZXItdmVydGljYWx7d2lkdGg6NDhweDttaW4taGVpZ2h0OjEyOHB4fS5tYXQtc2xpZGVyLXZlcnRpY2FsIC5tYXQtc2xpZGVyLXdyYXBwZXJ7d2lkdGg6MnB4O3RvcDo4cHg7Ym90dG9tOjhweDtsZWZ0OjIzcHh9Lm1hdC1zbGlkZXItdmVydGljYWwgLm1hdC1zbGlkZXItd3JhcHBlcjo6YWZ0ZXJ7d2lkdGg6MnB4O2JvcmRlci10b3Atd2lkdGg6MnB4O2JvdHRvbTowO2xlZnQ6MH0ubWF0LXNsaWRlci12ZXJ0aWNhbCAubWF0LXNsaWRlci10cmFjay13cmFwcGVye2hlaWdodDoxMDAlO3dpZHRoOjJweH0ubWF0LXNsaWRlci12ZXJ0aWNhbCAubWF0LXNsaWRlci10cmFjay1maWxse2hlaWdodDoxMDAlO3dpZHRoOjJweDt0cmFuc2Zvcm06c2NhbGVZKDApfS5tYXQtc2xpZGVyLXZlcnRpY2FsIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmR7aGVpZ2h0OjEwMCU7d2lkdGg6MnB4O3RyYW5zZm9ybTpzY2FsZVkoMSl9Lm1hdC1zbGlkZXItdmVydGljYWwgLm1hdC1zbGlkZXItdGlja3MtY29udGFpbmVye3dpZHRoOjJweDtoZWlnaHQ6MTAwJX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtc2xpZGVyLXZlcnRpY2FsIC5tYXQtc2xpZGVyLXRpY2tzLWNvbnRhaW5lcnt3aWR0aDowO291dGxpbmU6c29saWQgMnB4O2xlZnQ6MXB4fS5tYXQtc2xpZGVyLXZlcnRpY2FsIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmd7Ym90dG9tOi0xNXB4O2xlZnQ6LTE1cHh9Lm1hdC1zbGlkZXItdmVydGljYWwgLm1hdC1zbGlkZXItdGlja3N7d2lkdGg6MnB4O2hlaWdodDoxMDAlfS5tYXQtc2xpZGVyLXZlcnRpY2FsIC5tYXQtc2xpZGVyLXRodW1iLWNvbnRhaW5lcntoZWlnaHQ6MTAwJTt3aWR0aDowO2xlZnQ6NTAlfS5tYXQtc2xpZGVyLXZlcnRpY2FsIC5tYXQtc2xpZGVyLXRodW1iey13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTpoaWRkZW47YmFja2ZhY2UtdmlzaWJpbGl0eTpoaWRkZW59Lm1hdC1zbGlkZXItdmVydGljYWwgLm1hdC1zbGlkZXItdGh1bWItbGFiZWx7Ym90dG9tOi0xNHB4O2xlZnQ6LTQwcHg7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoMjZweCkgc2NhbGUoMC4wMSkgcm90YXRlKC00NWRlZyl9Lm1hdC1zbGlkZXItdmVydGljYWwgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dHt0cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKX0ubWF0LXNsaWRlci12ZXJ0aWNhbC5jZGstZm9jdXNlZCAubWF0LXNsaWRlci10aHVtYi1sYWJlbHt0cmFuc2Zvcm06cm90YXRlKC00NWRlZyl9W2Rpcj1ydGxdIC5tYXQtc2xpZGVyLXdyYXBwZXI6OmFmdGVye2xlZnQ6MDtyaWdodDphdXRvfVtkaXI9cnRsXSAubWF0LXNsaWRlci1ob3Jpem9udGFsIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGx7dHJhbnNmb3JtLW9yaWdpbjoxMDAlIDEwMCV9W2Rpcj1ydGxdIC5tYXQtc2xpZGVyLWhvcml6b250YWwgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZHt0cmFuc2Zvcm0tb3JpZ2luOjAgMH1bZGlyPXJ0bF0gLm1hdC1zbGlkZXItaG9yaXpvbnRhbC5tYXQtc2xpZGVyLWF4aXMtaW52ZXJ0ZWQgLm1hdC1zbGlkZXItdHJhY2stZmlsbHt0cmFuc2Zvcm0tb3JpZ2luOjAgMH1bZGlyPXJ0bF0gLm1hdC1zbGlkZXItaG9yaXpvbnRhbC5tYXQtc2xpZGVyLWF4aXMtaW52ZXJ0ZWQgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZHt0cmFuc2Zvcm0tb3JpZ2luOjEwMCUgMTAwJX0ubWF0LXNsaWRlci5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LXNsaWRlci10cmFjay1maWxsLC5tYXQtc2xpZGVyLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmQsLm1hdC1zbGlkZXIuX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1zbGlkZXItdGlja3MsLm1hdC1zbGlkZXIuX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1zbGlkZXItdGh1bWItY29udGFpbmVyLC5tYXQtc2xpZGVyLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmcsLm1hdC1zbGlkZXIuX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1zbGlkZXItdGh1bWIsLm1hdC1zbGlkZXIuX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwsLm1hdC1zbGlkZXIuX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dCwubWF0LXNsaWRlci5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LXNsaWRlci1oYXMtdGlja3MgLm1hdC1zbGlkZXItd3JhcHBlcjo6YWZ0ZXJ7dHJhbnNpdGlvbjpub25lfVxuJ119XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpLaH0se3R5cGU6ZkZ9LHt0eXBlOk9ifSx7dHlwZTp2RixkZWNvcmF0b3JzOlt7dHlwZTpCcn1dfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6JGEsYXJnczpbInRhYmluZGV4Il19XX0se3R5cGU6bUN9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltja119XX1dfSkse2NoYW5nZTpbe3R5cGU6RV99XSxpbnB1dDpbe3R5cGU6RV99XSx2YWx1ZUNoYW5nZTpbe3R5cGU6RV99XSxpbnZlcnQ6W3t0eXBlOlJffV0sbWF4Olt7dHlwZTpSX31dLG1pbjpbe3R5cGU6Ul99XSxzdGVwOlt7dHlwZTpSX31dLHRodW1iTGFiZWw6W3t0eXBlOlJffV0sdGlja0ludGVydmFsOlt7dHlwZTpSX31dLHZhbHVlOlt7dHlwZTpSX31dLHZlcnRpY2FsOlt7dHlwZTpSX31dLGRpc3BsYXlXaXRoOlt7dHlwZTpSX31dLHZhbHVlVGV4dDpbe3R5cGU6Ul99XSxfc2xpZGVyV3JhcHBlcjpbe3R5cGU6YXIsYXJnczpbInNsaWRlcldyYXBwZXIiXX1dfSk7Y2xhc3MgUkp7fVJKLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxSSil9LFJKLsm1bW9kPWZvKHt0eXBlOlJKfSksUkouybVpbmo9RG4oe2ltcG9ydHM6W1tyeCxORl0sTkZdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihSSixbe3R5cGU6TF8sYXJnczpbe2ltcG9ydHM6W3J4LE5GXSxleHBvcnRzOlt3SixORl0sZGVjbGFyYXRpb25zOlt3Sl19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhSSix7ZGVjbGFyYXRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuW3dKXX0saW1wb3J0czpmdW5jdGlvbigpe3JldHVybltyeCxORl19LGV4cG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bd0osTkZdfX0pO2NvbnN0IEVKPXsxOToiZmxvYXQxNiIsMToiZmxvYXQzMiIsMjoiZmxvYXQ2NCIsMzoiaW50MzIiLDQ6InVpbnQ4IiwxNzoidWludDE2IiwyMjoidWludDMyIiwyMzoidWludDY0Iiw1OiJpbnQxNiIsNjoiaW50OCIsNzoic3RyaW5nIiw4OiJjb21wbGV4NjQiLDE4OiJjb21wbGV4MTI4Iiw5OiJpbnQ2NCIsMTA6ImJvb2wiLDExOiJxaW50OCIsMTI6InF1aW50OCIsMTU6InFpbnQxNiIsMTY6InF1aW50MTYiLDEzOiJxaW50MzIiLDE0OiJiZmxvYXQxNiIsMjA6InJlc291cmNlIiwyMToidmFyaWFudCIsMTE5OiJmbG9hdDE2X3JlZiIsMTAxOiJmbG9hdDMyX3JlZiIsMTAyOiJmbG9hdDY0X3JlZiIsMTAzOiJpbnQzMl9yZWYiLDEyMjoidWludDMyX3JlZiIsMTA0OiJ1aW50OF9yZWYiLDExNzoidWludDE2X3JlZiIsMTA1OiJpbnQxNl9yZWYiLDEwNjoiaW50OF9yZWYiLDEwNzoic3RyaW5nX3JlZiIsMTA4OiJjb21wbGV4NjRfcmVmIiwxMTg6ImNvbXBsZXgxMjhfcmVmIiwxMDk6ImludDY0X3JlZiIsMTIzOiJ1aW50NjRfcmVmIiwxMTA6ImJvb2xfcmVmIiwxMTE6InFpbnQ4X3JlZiIsMTEyOiJxdWludDhfcmVmIiwxMTU6InFpbnQxNl9yZWYiLDExNjoicXVpbnQxNl9yZWYiLDExMzoicWludDMyX3JlZiIsMTE0OiJiZmxvYXQxNl9yZWYiLDEyMDoicmVzb3VyY2VfcmVmIiwxMjE6InZhcmlhbnRfcmVmIn07ZnVuY3Rpb24gQUoodCl7Y29uc3R7dGVuc29yRGVidWdNb2RlOmUsYXJyYXk6bn09dDtzd2l0Y2goZSl7Y2FzZSBzSy5OT19URU5TT1I6aWYobnVsbCE9PW4pdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkbHkgcmVjZWl2ZWQgbm9uLW51bGwgZGVidWctdGVuc29yLXZhbHVlIGFycmF5IHVuZGVyIE5PX1RFTlNPUiBtb2RlIik7cmV0dXJue307Y2FzZSBzSy5DVVJUX0hFQUxUSDppZihudWxsPT09bnx8MiE9PW4ubGVuZ3RoKXRocm93IG5ldyBFcnJvcihgVW5kZXIgQ1VSVF9IRUFMVEggbW9kZSwgZXhwZWN0ZWQgZGVidWctdGVuc29yLXZhbHVlIGFycmF5IHRvIGhhdmUgbGVuZ3RoIDIsIGJ1dCBnb3QgJHtKU09OLnN0cmluZ2lmeShuKX1gKTtyZXR1cm57aGFzSW5mT3JOYU46Qm9vbGVhbihuWzFdKX07Y2FzZSBzSy5DT05DSVNFX0hFQUxUSDp7aWYobnVsbD09PW58fDUhPT1uLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoYFVuZGVyIENPTkNJU0VfSEVBTFRIIG1vZGUsIGV4cGVjdGVkIGRlYnVnLXRlbnNvci12YWx1ZSBhcnJheSB0byBoYXZlIGxlbmd0aCA1LCBidXQgZ290ICR7SlNPTi5zdHJpbmdpZnkobil9YCk7Y29uc3QgdD17c2l6ZTpuWzFdfTtyZXR1cm4gblsyXT4wJiYodC5udW1OZWdhdGl2ZUluZnM9blsyXSksblszXT4wJiYodC5udW1Qb3NpdGl2ZUluZnM9blszXSksbls0XT4wJiYodC5udW1OYU5zPW5bNF0pLHR9Y2FzZSBzSy5TSEFQRTp7aWYobnVsbD09PW58fDEwIT09bi5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKGBVbmRlciBTSEFQRSBtb2RlLCBleHBlY3RlZCBkZWJ1Zy10ZW5zb3ItdmFsdWUgYXJyYXkgdG8gaGF2ZSBsZW5ndGggMTAsIGJ1dCBnb3QgJHtKU09OLnN0cmluZ2lmeShuKX1gKTtjb25zdCB0PW5bMl07bGV0IGU9bi5zbGljZSg0LE1hdGgubWluKDQrdCxuLmxlbmd0aCkpO3JldHVybiBlLmxlbmd0aDx0JiYoZT1uZXcgQXJyYXkodC1lLmxlbmd0aCkuY29uY2F0KGUpKSx7ZHR5cGU6RUpbblsxXV0scmFuazp0LHNpemU6blszXSxzaGFwZTplfX1jYXNlIHNLLkZVTExfSEVBTFRIOntpZihudWxsPT09bnx8MTEhPT1uLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoYFVuZGVyIEZVTExfSEVBTFRIIG1vZGUsIGV4cGVjdGVkIGRlYnVnLXRlbnNvci12YWx1ZSBhcnJheSB0byBoYXZlIGxlbmd0aCAxMSwgYnV0IGdvdCAke0pTT04uc3RyaW5naWZ5KG4pfWApO2NvbnN0IHQ9e2R0eXBlOkVKW25bMl1dLHJhbms6blszXSxzaXplOm5bNF19O3JldHVybiBuWzVdPjAmJih0Lm51bU5lZ2F0aXZlSW5mcz1uWzVdKSxuWzZdPjAmJih0Lm51bVBvc2l0aXZlSW5mcz1uWzZdKSxuWzddPjAmJih0Lm51bU5hTnM9bls3XSksbls4XT4wJiYodC5udW1OZWdhdGl2ZUZpbml0ZXM9bls4XSksbls5XT4wJiYodC5udW1aZXJvcz1uWzldKSxuWzEwXT4wJiYodC5udW1Qb3NpdGl2ZUZpbml0ZXM9blsxMF0pLHR9Y2FzZSBzSy5GVUxMX1RFTlNPUjppZihudWxsIT09bil0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWRseSByZWNlaXZlZCBub24tbnVsbCBkZWJ1Zy10ZW5zb3ItdmFsdWUgYXJyYXkgdW5kZXIgRlVMTF9URU5TT1IgbW9kZSIpO3JldHVybnt9O2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGBVbnJlY29nbml6ZWQgdGVuc29yRGVidWdNb2RlOiAke2V9YCl9fWNvbnN0IFRKPSJbX25naG9zdC0lQ09NUCVdIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTNlNWU4O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNjMGMwYzA7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgIGZvbnQtZmFtaWx5OiAnUm9ib3RvIE1vbm8nLCBtb25vc3BhY2U7XG4gICAgaGVpZ2h0OiAxNHB4O1xuICAgIGxpbmUtaGVpZ2h0OiAxNHB4O1xuICAgIG1hcmdpbjogMCAycHg7XG4gICAgcGFkZGluZzogMXB4IDNweDtcbiAgICB3aWR0aDogbWF4LWNvbnRlbnQ7XG4gIH0iO2Z1bmN0aW9uIE5KKHQsZSl7MSZ0JiZ2ZigwLCJkaXYiLDQpfWZ1bmN0aW9uIHpKKHQsZSl7aWYoMSZ0JiYoQ2YoMCwiZGl2Iiw3KSxDZigxLCJzcGFuIiw4KSxQdSgyLCJOYU4iKSxNZigpLENmKDMsInNwYW4iLDkpLFB1KDQpLE1mKCksTWYoKSksMiZ0KXtjb25zdCB0PXpmKDIpO0RjKDQpLGt1KCLDlyIsdC5udW1OYU5zLCIiKX19ZnVuY3Rpb24gSUoodCxlKXtpZigxJnQmJihDZigwLCJkaXYiLDcpLENmKDEsInNwYW4iLDgpLFB1KDIsIi3iiJ4iKSxNZigpLENmKDMsInNwYW4iLDkpLFB1KDQpLE1mKCksTWYoKSksMiZ0KXtjb25zdCB0PXpmKDIpO0RjKDQpLGt1KCLDlyIsdC5udW1OZWdhdGl2ZUluZnMsIiIpfX1mdW5jdGlvbiBISih0LGUpe2lmKDEmdCYmKENmKDAsImRpdiIsNyksQ2YoMSwic3BhbiIsOCksUHUoMiwiK+KIniIpLE1mKCksQ2YoMywic3BhbiIsOSksUHUoNCksTWYoKSxNZigpKSwyJnQpe2NvbnN0IHQ9emYoMik7RGMoNCksa3UoIsOXIix0Lm51bVBvc2l0aXZlSW5mcywiIil9fWZ1bmN0aW9uIEZKKHQsZSl7aWYoMSZ0JiYoQ2YoMCwiZGl2Iiw3KSxDZigxLCJzcGFuIiwxMCksUHUoMiwiLSIpLE1mKCksQ2YoMywic3BhbiIsOSksUHUoNCksTWYoKSxNZigpKSwyJnQpe2NvbnN0IHQ9emYoMik7RGMoNCksa3UoIsOXIix0Lm51bU5lZ2F0aXZlRmluaXRlcywiIil9fWZ1bmN0aW9uIExKKHQsZSl7aWYoMSZ0JiYoQ2YoMCwiZGl2Iiw3KSxDZigxLCJzcGFuIiwxMCksUHUoMiwiMCIpLE1mKCksQ2YoMywic3BhbiIsOSksUHUoNCksTWYoKSxNZigpKSwyJnQpe2NvbnN0IHQ9emYoMik7RGMoNCksa3UoIsOXIix0Lm51bVplcm9zLCIiKX19ZnVuY3Rpb24gQkoodCxlKXtpZigxJnQmJihDZigwLCJkaXYiLDcpLENmKDEsInNwYW4iLDEwKSxQdSgyLCIrIiksTWYoKSxDZigzLCJzcGFuIiw5KSxQdSg0KSxNZigpLE1mKCkpLDImdCl7Y29uc3QgdD16ZigyKTtEYyg0KSxrdSgiw5ciLHQubnVtUG9zaXRpdmVGaW5pdGVzLCIiKX19ZnVuY3Rpb24gVkoodCxlKXtpZigxJnQmJihDZigwLCJkaXYiLDUpLEhtKDEsekosNSwxLCJkaXYiLDYpLEhtKDIsSUosNSwxLCJkaXYiLDYpLEhtKDMsSEosNSwxLCJkaXYiLDYpLEhtKDQsRkosNSwxLCJkaXYiLDYpLEhtKDUsTEosNSwxLCJkaXYiLDYpLEhtKDYsQkosNSwxLCJkaXYiLDYpLE1mKCkpLDImdCl7Y29uc3QgdD16ZigpO0RjKDEpLGJmKCJuZ0lmIix2b2lkIDAhPT10Lm51bU5hTnMmJnQubnVtTmFOcz4wKSxEYygxKSxiZigibmdJZiIsdm9pZCAwIT09dC5udW1OZWdhdGl2ZUluZnMmJnQubnVtTmVnYXRpdmVJbmZzPjApLERjKDEpLGJmKCJuZ0lmIix2b2lkIDAhPT10Lm51bVBvc2l0aXZlSW5mcyYmdC5udW1Qb3NpdGl2ZUluZnM+MCksRGMoMSksYmYoIm5nSWYiLHZvaWQgMCE9PXQubnVtTmVnYXRpdmVGaW5pdGVzJiZ0Lm51bU5lZ2F0aXZlRmluaXRlcz4wKSxEYygxKSxiZigibmdJZiIsdm9pZCAwIT09dC5udW1aZXJvcyYmdC5udW1aZXJvcz4wKSxEYygxKSxiZigibmdJZiIsdm9pZCAwIT09dC5udW1Qb3NpdGl2ZUZpbml0ZXMmJnQubnVtUG9zaXRpdmVGaW5pdGVzPjApfX1jb25zdCBqSj1mdW5jdGlvbih0KXtyZXR1cm5bImNvbnRhaW5lciIsdF19O2Z1bmN0aW9uIFVKKHQsZSl7aWYoMSZ0JiZ2ZigwLCJkZWJ1Zy10ZW5zb3ItZHR5cGUiLDUpLDImdCl7YmYoImR0eXBlIix6ZigpLmRlYnVnVGVuc29yVmFsdWUuZHR5cGUpfX1mdW5jdGlvbiBXSih0LGUpe2lmKDEmdCYmdmYoMCwiZGVidWctdGVuc29yLXJhbmsiLDYpLDImdCl7YmYoInJhbmsiLHpmKCkuZGVidWdUZW5zb3JWYWx1ZS5yYW5rKX19ZnVuY3Rpb24gR0oodCxlKXtpZigxJnQmJnZmKDAsImRlYnVnLXRlbnNvci1zaGFwZSIsNyksMiZ0KXtiZigic2hhcGUiLHpmKCkuZGVidWdUZW5zb3JWYWx1ZS5zaGFwZSl9fWZ1bmN0aW9uIFlKKHQsZSl7aWYoMSZ0JiZ2ZigwLCJkZWJ1Zy10ZW5zb3ItaGFzLWluZi1vci1uYW4iLDgpLDImdCl7YmYoImhhc0luZk9yTmFOIix6ZigpLmRlYnVnVGVuc29yVmFsdWUuaGFzSW5mT3JOYU4pfX1mdW5jdGlvbiBxSih0LGUpe2lmKDEmdCYmdmYoMCwiZGVidWctdGVuc29yLW51bWVyaWMtYnJlYWtkb3duIiw5KSwyJnQpe2NvbnN0IHQ9emYoKTtMZigic2l6ZSIsdC5kZWJ1Z1RlbnNvclZhbHVlLnNpemUpLGJmKCJudW1OZWdhdGl2ZUluZnMiLHQuZGVidWdUZW5zb3JWYWx1ZS5udW1OZWdhdGl2ZUluZnMpKCJudW1Qb3NpdGl2ZUluZnMiLHQuZGVidWdUZW5zb3JWYWx1ZS5udW1Qb3NpdGl2ZUluZnMpKCJudW1OYU5zIix0LmRlYnVnVGVuc29yVmFsdWUubnVtTmFOcykoIm51bU5lZ2F0aXZlRmluaXRlcyIsdC5kZWJ1Z1RlbnNvclZhbHVlLm51bU5lZ2F0aXZlRmluaXRlcykoIm51bVplcm9zIix0LmRlYnVnVGVuc29yVmFsdWUubnVtWmVyb3MpKCJudW1Qb3NpdGl2ZUZpbml0ZXMiLHQuZGVidWdUZW5zb3JWYWx1ZS5udW1Qb3NpdGl2ZUZpbml0ZXMpfX1jb25zdCBaSj0iXG4gIDpob3N0IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTNlNWU4O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNjMGMwYzA7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgIGZvbnQtZmFtaWx5OiAnUm9ib3RvIE1vbm8nLCBtb25vc3BhY2U7XG4gICAgaGVpZ2h0OiAxNHB4O1xuICAgIGxpbmUtaGVpZ2h0OiAxNHB4O1xuICAgIG1hcmdpbjogMCAycHg7XG4gICAgcGFkZGluZzogMXB4IDNweDtcbiAgICB3aWR0aDogbWF4LWNvbnRlbnQ7XG4gIH1cbiI7Y2xhc3MgWEp7fVhKLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxYSil9LFhKLsm1Y21wPXNvKHt0eXBlOlhKLHNlbGVjdG9yczpbWyJkZWJ1Zy10ZW5zb3ItZHR5cGUiXV0saW5wdXRzOntkdHlwZToiZHR5cGUifSxkZWNsczoxLHZhcnM6MSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiZQdSgwKSwyJmUmJmt1KCIgIixuLmR0eXBlLCIgIil9LHN0eWxlczpbVEpdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihYSixbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJkZWJ1Zy10ZW5zb3ItZHR5cGUiLHRlbXBsYXRlOiIge3sgZHR5cGUgfX0gIixzdHlsZXM6W1pKXX1dfV0sbnVsbCx7ZHR5cGU6W3t0eXBlOlJffV19KTtjbGFzcyBLSnt9S0ouybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEtKKX0sS0ouybVjbXA9c28oe3R5cGU6S0osc2VsZWN0b3JzOltbImRlYnVnLXRlbnNvci1yYW5rIl1dLGlucHV0czp7cmFuazoicmFuayJ9LGRlY2xzOjEsdmFyczoxLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJlB1KDApLDImZSYma3UoIiAiLG4ucmFuaywiRCAiKX0sc3R5bGVzOltUSl19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEtKLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6ImRlYnVnLXRlbnNvci1yYW5rIix0ZW1wbGF0ZToiIHt7IHJhbmsgfX1EICIsc3R5bGVzOltaSl19XX1dLG51bGwse3Jhbms6W3t0eXBlOlJffV19KTtjbGFzcyBKSntnZXQgc2hhcGVTdHJpbmcoKXtyZXR1cm4iWyIrdGhpcy5zaGFwZS5tYXAoKHQ9PnZvaWQgMD09PXQ/Ij8iOlN0cmluZyh0KSkpLmpvaW4oIiwiKSsiXSJ9fUpKLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxKSil9LEpKLsm1Y21wPXNvKHt0eXBlOkpKLHNlbGVjdG9yczpbWyJkZWJ1Zy10ZW5zb3Itc2hhcGUiXV0saW5wdXRzOntzaGFwZToic2hhcGUifSxkZWNsczoxLHZhcnM6MSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiZQdSgwKSwyJmUmJmt1KCIgc2hhcGU6IixuLnNoYXBlU3RyaW5nLCIgIil9LHN0eWxlczpbVEpdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihKSixbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJkZWJ1Zy10ZW5zb3Itc2hhcGUiLHRlbXBsYXRlOiIgc2hhcGU6e3sgc2hhcGVTdHJpbmcgfX0gIixzdHlsZXM6W1pKXX1dfV0sbnVsbCx7c2hhcGU6W3t0eXBlOlJffV19KTtjbGFzcyBRSntnZXQgYnJlYWtkb3duRXhpc3RzKCl7cmV0dXJuIHZvaWQgMCE9PXRoaXMubnVtTmFOc3x8dm9pZCAwIT09dGhpcy5udW1OZWdhdGl2ZUluZnN8fHZvaWQgMCE9PXRoaXMubnVtUG9zaXRpdmVJbmZzfHx2b2lkIDAhPT10aGlzLm51bU5lZ2F0aXZlRmluaXRlc3x8dm9pZCAwIT09dGhpcy5udW1aZXJvc3x8dm9pZCAwIT09dGhpcy5udW1Qb3NpdGl2ZUZpbml0ZXN9fVFKLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxRSil9LFFKLsm1Y21wPXNvKHt0eXBlOlFKLHNlbGVjdG9yczpbWyJkZWJ1Zy10ZW5zb3ItbnVtZXJpYy1icmVha2Rvd24iXV0saW5wdXRzOntzaXplOiJzaXplIixudW1OYU5zOiJudW1OYU5zIixudW1OZWdhdGl2ZUluZnM6Im51bU5lZ2F0aXZlSW5mcyIsbnVtUG9zaXRpdmVJbmZzOiJudW1Qb3NpdGl2ZUluZnMiLG51bU5lZ2F0aXZlRmluaXRlczoibnVtTmVnYXRpdmVGaW5pdGVzIixudW1aZXJvczoibnVtWmVyb3MiLG51bVBvc2l0aXZlRmluaXRlczoibnVtUG9zaXRpdmVGaW5pdGVzIn0sZGVjbHM6Nyx2YXJzOjMsY29uc3RzOltbMSwic2l6ZSJdLFsxLCJzaXplLXZhbHVlIl0sWyJjbGFzcyIsImJyZWFrIiw0LCJuZ0lmIl0sWyJjbGFzcyIsImJyZWFrZG93biIsNCwibmdJZiJdLFsxLCJicmVhayJdLFsxLCJicmVha2Rvd24iXSxbImNsYXNzIiwiY2F0ZWdvcnkiLDQsIm5nSWYiXSxbMSwiY2F0ZWdvcnkiXSxbMSwiY2F0ZWdvcnktdGFnIiwiaW5maW5pdGUiXSxbMSwiY2F0ZWdvcnktY291bnQiXSxbMSwiY2F0ZWdvcnktdGFnIiwiZmluaXRlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihDZigwLCJkaXYiLDApLENmKDEsInNwYW4iKSxQdSgyLCJzaXplOiIpLE1mKCksQ2YoMywic3BhbiIsMSksUHUoNCksTWYoKSxNZigpLEhtKDUsTkosMSwwLCJkaXYiLDIpLEhtKDYsVkosNyw2LCJkaXYiLDMpKSwyJmUmJihEYyg0KSx3dShuLnNpemUpLERjKDEpLGJmKCJuZ0lmIixuLmJyZWFrZG93bkV4aXN0cyksRGMoMSksYmYoIm5nSWYiLG4uYnJlYWtkb3duRXhpc3RzKSl9LGRpcmVjdGl2ZXM6W1B2XSxzdHlsZXM6WyJbX25naG9zdC0lQ09NUCVdIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2UzZTVlODtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2MwYzBjMDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgICAgICBmb250LWZhbWlseTogJ1JvYm90byBNb25vJywgbW9ub3NwYWNlO1xuICAgICAgICBmb250LXNpemU6IDEwcHg7XG4gICAgICAgIG1hcmdpbjogMCAycHg7XG4gICAgICAgIHBhZGRpbmc6IDFweDtcbiAgICAgIH1cbiAgICAgIC5icmVha1tfbmdjb250ZW50LSVDT01QJV0ge1xuICAgICAgICBmbGV4LWJhc2lzOiAxMDAlO1xuICAgICAgICB3aWR0aDogMDtcbiAgICAgIH1cbiAgICAgIC5zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBoZWlnaHQ6IDExcHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxMXB4O1xuICAgICAgICBtYXJnaW46IDAgM3B4O1xuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgfVxuICAgICAgLmJyZWFrZG93bltfbmdjb250ZW50LSVDT01QJV0ge1xuICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjEyKTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgaGVpZ2h0OiAxMXB4O1xuICAgICAgICBsaW5lLWhlaWdodDogMTFweDtcbiAgICAgICAgcGFkZGluZzogMnB4O1xuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgfVxuICAgICAgLmNhdGVnb3J5W19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDJweDtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDRweDtcbiAgICAgICAgbWFyZ2luLXRvcDogMnB4O1xuICAgICAgICBoZWlndGg6IDEwMCU7XG4gICAgICAgIHdpZHRoOiBtYXgtY29udGVudDtcbiAgICAgIH1cbiAgICAgIC5jYXRlZ29yeS10YWdbX25nY29udGVudC0lQ09NUCVdIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMnB4O1xuICAgICAgICBwYWRkaW5nOiAwIDJweDtcbiAgICAgIH1cbiAgICAgIC5maW5pdGVbX25nY29udGVudC0lQ09NUCVdIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2FhYTtcbiAgICAgICAgY29sb3I6ICNmZWZlZmU7XG4gICAgICB9XG4gICAgICAuaW5maW5pdGVbX25nY29udGVudC0lQ09NUCVdIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2U1MjU5MjtcbiAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgICB9Il19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFFKLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6ImRlYnVnLXRlbnNvci1udW1lcmljLWJyZWFrZG93biIsdGVtcGxhdGU6J1xuICAgIDxkaXYgY2xhc3M9InNpemUiPlxuICAgICAgPHNwYW4+c2l6ZTo8L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzcz0ic2l6ZS12YWx1ZSI+e3sgc2l6ZSB9fTwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPSJicmVha2Rvd25FeGlzdHMiIGNsYXNzPSJicmVhayI+PC9kaXY+XG4gICAgPGRpdiAqbmdJZj0iYnJlYWtkb3duRXhpc3RzIiBjbGFzcz0iYnJlYWtkb3duIj5cbiAgICAgIDxkaXYgKm5nSWY9Im51bU5hTnMgIT09IHVuZGVmaW5lZCAmJiBudW1OYU5zID4gMCIgY2xhc3M9ImNhdGVnb3J5Ij5cbiAgICAgICAgPHNwYW4gY2xhc3M9ImNhdGVnb3J5LXRhZyBpbmZpbml0ZSI+TmFOPC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzcz0iY2F0ZWdvcnktY291bnQiPsOXe3sgbnVtTmFOcyB9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICAqbmdJZj0ibnVtTmVnYXRpdmVJbmZzICE9PSB1bmRlZmluZWQgJiYgbnVtTmVnYXRpdmVJbmZzID4gMCJcbiAgICAgICAgY2xhc3M9ImNhdGVnb3J5IlxuICAgICAgPlxuICAgICAgICA8c3BhbiBjbGFzcz0iY2F0ZWdvcnktdGFnIGluZmluaXRlIj4t4oiePC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzcz0iY2F0ZWdvcnktY291bnQiPsOXe3sgbnVtTmVnYXRpdmVJbmZzIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0lmPSJudW1Qb3NpdGl2ZUluZnMgIT09IHVuZGVmaW5lZCAmJiBudW1Qb3NpdGl2ZUluZnMgPiAwIlxuICAgICAgICBjbGFzcz0iY2F0ZWdvcnkiXG4gICAgICA+XG4gICAgICAgIDxzcGFuIGNsYXNzPSJjYXRlZ29yeS10YWcgaW5maW5pdGUiPiviiJ48L3NwYW4+XG4gICAgICAgIDxzcGFuIGNsYXNzPSJjYXRlZ29yeS1jb3VudCI+w5d7eyBudW1Qb3NpdGl2ZUluZnMgfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nSWY9Im51bU5lZ2F0aXZlRmluaXRlcyAhPT0gdW5kZWZpbmVkICYmIG51bU5lZ2F0aXZlRmluaXRlcyA+IDAiXG4gICAgICAgIGNsYXNzPSJjYXRlZ29yeSJcbiAgICAgID5cbiAgICAgICAgPHNwYW4gY2xhc3M9ImNhdGVnb3J5LXRhZyBmaW5pdGUiPi08L3NwYW4+XG4gICAgICAgIDxzcGFuIGNsYXNzPSJjYXRlZ29yeS1jb3VudCI+w5d7eyBudW1OZWdhdGl2ZUZpbml0ZXMgfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9Im51bVplcm9zICE9PSB1bmRlZmluZWQgJiYgbnVtWmVyb3MgPiAwIiBjbGFzcz0iY2F0ZWdvcnkiPlxuICAgICAgICA8c3BhbiBjbGFzcz0iY2F0ZWdvcnktdGFnIGZpbml0ZSI+MDwvc3Bhbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9ImNhdGVnb3J5LWNvdW50Ij7Dl3t7IG51bVplcm9zIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0lmPSJudW1Qb3NpdGl2ZUZpbml0ZXMgIT09IHVuZGVmaW5lZCAmJiBudW1Qb3NpdGl2ZUZpbml0ZXMgPiAwIlxuICAgICAgICBjbGFzcz0iY2F0ZWdvcnkiXG4gICAgICA+XG4gICAgICAgIDxzcGFuIGNsYXNzPSJjYXRlZ29yeS10YWcgZmluaXRlIj4rPC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzcz0iY2F0ZWdvcnktY291bnQiPsOXe3sgbnVtUG9zaXRpdmVGaW5pdGVzIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICcsc3R5bGVzOlsiXG4gICAgICA6aG9zdCB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlM2U1ZTg7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNjMGMwYzA7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICAgICAgZm9udC1mYW1pbHk6ICdSb2JvdG8gTW9ubycsIG1vbm9zcGFjZTtcbiAgICAgICAgZm9udC1zaXplOiAxMHB4O1xuICAgICAgICBtYXJnaW46IDAgMnB4O1xuICAgICAgICBwYWRkaW5nOiAxcHg7XG4gICAgICB9XG4gICAgICAuYnJlYWsge1xuICAgICAgICBmbGV4LWJhc2lzOiAxMDAlO1xuICAgICAgICB3aWR0aDogMDtcbiAgICAgIH1cbiAgICAgIC5zaXplIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGhlaWdodDogMTFweDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDExcHg7XG4gICAgICAgIG1hcmdpbjogMCAzcHg7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICB9XG4gICAgICAuYnJlYWtkb3duIHtcbiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4xMik7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGhlaWdodDogMTFweDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDExcHg7XG4gICAgICAgIHBhZGRpbmc6IDJweDtcbiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgIH1cbiAgICAgIC5jYXRlZ29yeSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDJweDtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDRweDtcbiAgICAgICAgbWFyZ2luLXRvcDogMnB4O1xuICAgICAgICBoZWlndGg6IDEwMCU7XG4gICAgICAgIHdpZHRoOiBtYXgtY29udGVudDtcbiAgICAgIH1cbiAgICAgIC5jYXRlZ29yeS10YWcge1xuICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7XG4gICAgICAgIHBhZGRpbmc6IDAgMnB4O1xuICAgICAgfVxuICAgICAgLmZpbml0ZSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNhYWE7XG4gICAgICAgIGNvbG9yOiAjZmVmZWZlO1xuICAgICAgfVxuICAgICAgLmluZmluaXRlIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2U1MjU5MjtcbiAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgICB9XG4gICAgIl19XX1dLG51bGwse3NpemU6W3t0eXBlOlJffV0sbnVtTmFOczpbe3R5cGU6Ul99XSxudW1OZWdhdGl2ZUluZnM6W3t0eXBlOlJffV0sbnVtUG9zaXRpdmVJbmZzOlt7dHlwZTpSX31dLG51bU5lZ2F0aXZlRmluaXRlczpbe3R5cGU6Ul99XSxudW1aZXJvczpbe3R5cGU6Ul99XSxudW1Qb3NpdGl2ZUZpbml0ZXM6W3t0eXBlOlJffV19KTtjbGFzcyAkSntnZXQgaW5mb1N0cmluZygpe3JldHVybiB0aGlzLmhhc0luZk9yTmFOPyJIYXMg4oieL05hTiI6Ik5vIOKIni9OYU4ifX0kSi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8JEopfSwkSi7JtWNtcD1zbyh7dHlwZTokSixzZWxlY3RvcnM6W1siZGVidWctdGVuc29yLWhhcy1pbmYtb3ItbmFuIl1dLGlucHV0czp7aGFzSW5mT3JOYU46Imhhc0luZk9yTmFOIn0sZGVjbHM6Mix2YXJzOjQsY29uc3RzOltbMywibmdDbGFzcyJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoQ2YoMCwiZGl2IiwwKSxQdSgxKSxNZigpKSwyJmUmJihiZigibmdDbGFzcyIsaXkoMixqSixuLmhhc0luZk9yTmFOPyJoYXMtaW5mLW9yLW5hbiI6IiIpKSxEYygxKSxrdSgiICIsbi5pbmZvU3RyaW5nLCIgIikpfSxkaXJlY3RpdmVzOltDdl0sc3R5bGVzOlsiLmNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0ge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTNlNWU4O1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjYzBjMGMwO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgICAgIGNvbG9yOiAjNjY2NjY2O1xuICAgICAgICBmb250LWZhbWlseTogJ1JvYm90byBNb25vJywgbW9ub3NwYWNlO1xuICAgICAgICBoZWlnaHQ6IDE0cHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxNHB4O1xuICAgICAgICBtYXJnaW46IDAgMnB4O1xuICAgICAgICBwYWRkaW5nOiAxcHggM3B4O1xuICAgICAgICB3aWR0aDogbWF4LWNvbnRlbnQ7XG4gICAgICB9XG4gICAgICAuaGFzLWluZi1vci1uYW5bX25nY29udGVudC0lQ09NUCVdIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2U1MjU5MjtcbiAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgICB9Il19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKCRKLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6ImRlYnVnLXRlbnNvci1oYXMtaW5mLW9yLW5hbiIsdGVtcGxhdGU6IlxuICAgIDxkaXYgW25nQ2xhc3NdPVwiWydjb250YWluZXInLCBoYXNJbmZPck5hTiA/ICdoYXMtaW5mLW9yLW5hbicgOiAnJ11cIj5cbiAgICAgIHt7IGluZm9TdHJpbmcgfX1cbiAgICA8L2Rpdj5cbiAgIixzdHlsZXM6WyJcbiAgICAgIC5jb250YWluZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTNlNWU4O1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjYzBjMGMwO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgICAgIGNvbG9yOiAjNjY2NjY2O1xuICAgICAgICBmb250LWZhbWlseTogJ1JvYm90byBNb25vJywgbW9ub3NwYWNlO1xuICAgICAgICBoZWlnaHQ6IDE0cHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxNHB4O1xuICAgICAgICBtYXJnaW46IDAgMnB4O1xuICAgICAgICBwYWRkaW5nOiAxcHggM3B4O1xuICAgICAgICB3aWR0aDogbWF4LWNvbnRlbnQ7XG4gICAgICB9XG4gICAgICAuaGFzLWluZi1vci1uYW4ge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTUyNTkyO1xuICAgICAgICBjb2xvcjogI2ZmZjtcbiAgICAgIH1cbiAgICAiXX1dfV0sbnVsbCx7aGFzSW5mT3JOYU46W3t0eXBlOlJffV19KTtjbGFzcyB0UXt9dFEuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHRRKX0sdFEuybVjbXA9c28oe3R5cGU6dFEsc2VsZWN0b3JzOltbImRlYnVnLXRlbnNvci12YWx1ZSJdXSxpbnB1dHM6e2RlYnVnVGVuc29yVmFsdWU6ImRlYnVnVGVuc29yVmFsdWUifSxkZWNsczo1LHZhcnM6NSxjb25zdHM6W1szLCJkdHlwZSIsNCwibmdJZiJdLFszLCJyYW5rIiw0LCJuZ0lmIl0sWzMsInNoYXBlIiw0LCJuZ0lmIl0sWzMsImhhc0luZk9yTmFOIiw0LCJuZ0lmIl0sWzMsInNpemUiLCJudW1OZWdhdGl2ZUluZnMiLCJudW1Qb3NpdGl2ZUluZnMiLCJudW1OYU5zIiwibnVtTmVnYXRpdmVGaW5pdGVzIiwibnVtWmVyb3MiLCJudW1Qb3NpdGl2ZUZpbml0ZXMiLDQsIm5nSWYiXSxbMywiZHR5cGUiXSxbMywicmFuayJdLFszLCJzaGFwZSJdLFszLCJoYXNJbmZPck5hTiJdLFszLCJzaXplIiwibnVtTmVnYXRpdmVJbmZzIiwibnVtUG9zaXRpdmVJbmZzIiwibnVtTmFOcyIsIm51bU5lZ2F0aXZlRmluaXRlcyIsIm51bVplcm9zIiwibnVtUG9zaXRpdmVGaW5pdGVzIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihIbSgwLFVKLDEsMSwiZGVidWctdGVuc29yLWR0eXBlIiwwKSxIbSgxLFdKLDEsMSwiZGVidWctdGVuc29yLXJhbmsiLDEpLEhtKDIsR0osMSwxLCJkZWJ1Zy10ZW5zb3Itc2hhcGUiLDIpLEhtKDMsWUosMSwxLCJkZWJ1Zy10ZW5zb3ItaGFzLWluZi1vci1uYW4iLDMpLEhtKDQscUosMSw3LCJkZWJ1Zy10ZW5zb3ItbnVtZXJpYy1icmVha2Rvd24iLDQpKSwyJmUmJihiZigibmdJZiIsdm9pZCAwIT09bi5kZWJ1Z1RlbnNvclZhbHVlLmR0eXBlKSxEYygxKSxiZigibmdJZiIsdm9pZCAwIT09bi5kZWJ1Z1RlbnNvclZhbHVlLnJhbmspLERjKDEpLGJmKCJuZ0lmIix2b2lkIDAhPT1uLmRlYnVnVGVuc29yVmFsdWUuc2hhcGUpLERjKDEpLGJmKCJuZ0lmIix2b2lkIDAhPT1uLmRlYnVnVGVuc29yVmFsdWUuaGFzSW5mT3JOYU4pLERjKDEpLGJmKCJuZ0lmIix2b2lkIDAhPT1uLmRlYnVnVGVuc29yVmFsdWUuc2l6ZSkpfSxkaXJlY3RpdmVzOltQdixYSixLSixKSiwkSixRSl0sc3R5bGVzOlsiW19uZ2hvc3QtJUNPTVAlXSB7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgdmVydGljYWwtYWxpZ246IHRvcDtcbiAgICAgIH1cbiAgICAgIGRlYnVnLXRlbnNvci1udW1lcmljLWJyZWFrZG93bltfbmdjb250ZW50LSVDT01QJV0ge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICB9Il19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHRRLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6ImRlYnVnLXRlbnNvci12YWx1ZSIsdGVtcGxhdGU6J1xuICAgIDxkZWJ1Zy10ZW5zb3ItZHR5cGVcbiAgICAgICpuZ0lmPSJkZWJ1Z1RlbnNvclZhbHVlLmR0eXBlICE9PSB1bmRlZmluZWQiXG4gICAgICBbZHR5cGVdPSJkZWJ1Z1RlbnNvclZhbHVlLmR0eXBlIlxuICAgID5cbiAgICA8L2RlYnVnLXRlbnNvci1kdHlwZT5cbiAgICA8ZGVidWctdGVuc29yLXJhbmtcbiAgICAgICpuZ0lmPSJkZWJ1Z1RlbnNvclZhbHVlLnJhbmsgIT09IHVuZGVmaW5lZCJcbiAgICAgIFtyYW5rXT0iZGVidWdUZW5zb3JWYWx1ZS5yYW5rIlxuICAgID5cbiAgICA8L2RlYnVnLXRlbnNvci1yYW5rPlxuICAgIDxkZWJ1Zy10ZW5zb3Itc2hhcGVcbiAgICAgICpuZ0lmPSJkZWJ1Z1RlbnNvclZhbHVlLnNoYXBlICE9PSB1bmRlZmluZWQiXG4gICAgICBbc2hhcGVdPSJkZWJ1Z1RlbnNvclZhbHVlLnNoYXBlIlxuICAgID5cbiAgICA8L2RlYnVnLXRlbnNvci1zaGFwZT5cbiAgICA8ZGVidWctdGVuc29yLWhhcy1pbmYtb3ItbmFuXG4gICAgICAqbmdJZj0iZGVidWdUZW5zb3JWYWx1ZS5oYXNJbmZPck5hTiAhPT0gdW5kZWZpbmVkIlxuICAgICAgW2hhc0luZk9yTmFOXT0iZGVidWdUZW5zb3JWYWx1ZS5oYXNJbmZPck5hTiJcbiAgICA+XG4gICAgPC9kZWJ1Zy10ZW5zb3ItaGFzLWluZi1vci1uYW4+XG4gICAgPGRlYnVnLXRlbnNvci1udW1lcmljLWJyZWFrZG93blxuICAgICAgKm5nSWY9ImRlYnVnVGVuc29yVmFsdWUuc2l6ZSAhPT0gdW5kZWZpbmVkIlxuICAgICAgc2l6ZT0ie3sgZGVidWdUZW5zb3JWYWx1ZS5zaXplIH19IlxuICAgICAgW251bU5lZ2F0aXZlSW5mc109ImRlYnVnVGVuc29yVmFsdWUubnVtTmVnYXRpdmVJbmZzIlxuICAgICAgW251bVBvc2l0aXZlSW5mc109ImRlYnVnVGVuc29yVmFsdWUubnVtUG9zaXRpdmVJbmZzIlxuICAgICAgW251bU5hTnNdPSJkZWJ1Z1RlbnNvclZhbHVlLm51bU5hTnMiXG4gICAgICBbbnVtTmVnYXRpdmVGaW5pdGVzXT0iZGVidWdUZW5zb3JWYWx1ZS5udW1OZWdhdGl2ZUZpbml0ZXMiXG4gICAgICBbbnVtWmVyb3NdPSJkZWJ1Z1RlbnNvclZhbHVlLm51bVplcm9zIlxuICAgICAgW251bVBvc2l0aXZlRmluaXRlc109ImRlYnVnVGVuc29yVmFsdWUubnVtUG9zaXRpdmVGaW5pdGVzIlxuICAgID5cbiAgICA8L2RlYnVnLXRlbnNvci1udW1lcmljLWJyZWFrZG93bj5cbiAgJyxzdHlsZXM6WyJcbiAgICAgIDpob3N0IHtcbiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtd3JhcDogbm93cmFwO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xuICAgICAgfVxuICAgICAgZGVidWctdGVuc29yLW51bWVyaWMtYnJlYWtkb3duIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgfVxuICAgICJdfV19XSxudWxsLHtkZWJ1Z1RlbnNvclZhbHVlOlt7dHlwZTpSX31dfSk7Y29uc3QgZVE9ZnVuY3Rpb24odCxlKXtyZXR1cm57dGVuc29yRGVidWdNb2RlOnQsYXJyYXk6ZX19O2Z1bmN0aW9uIG5RKHQsZSl7aWYoMSZ0JiYoQ2YoMCwiZGl2IiwxMiksQ2YoMSwiZGl2IiwxMyksUHUoMiksTWYoKSxDZigzLCJkaXYiLDE0KSx2Zig0LCJkZWJ1Zy10ZW5zb3ItdmFsdWUiLDE1KSxNZigpLE1mKCkpLDImdCl7Y29uc3QgdD1lLiRpbXBsaWNpdCxuPWUuaW5kZXgsbz16ZigzKTtEYygyKSxrdSgiT3V0cHV0IHNsb3QgIixuLCI6IiksRGMoMiksYmYoImRlYnVnVGVuc29yVmFsdWUiLG8ucGFyc2VEZWJ1Z1RlbnNvclZhbHVlKGF5KDIsZVEsby50ZW5zb3JEZWJ1Z01vZGUsdCkpKX19ZnVuY3Rpb24gb1EodCxlKXtpZigxJnQmJihDZigwLCJkaXYiLDEwKSxIbSgxLG5RLDUsNSwiZGl2IiwxMSksTWYoKSksMiZ0KXtjb25zdCB0PXpmKDIpO0RjKDEpLGJmKCJuZ0Zvck9mIix0LmRlYnVnVGVuc29yVmFsdWVzKX19ZnVuY3Rpb24gaVEodCxlKXtpZigxJnQmJihDZigwLCJkaXYiKSxDZigxLCJkaXYiKSxDZigyLCJkaXYiLDMpLENmKDMsInNwYW4iLDQpLFB1KDQsIiBPcDogIiksTWYoKSxDZig1LCJzcGFuIiw1KSxQdSg2KSxNZigpLE1mKCksQ2YoNywiZGl2IiwzKSxDZig4LCJzcGFuIiw0KSxQdSg5LCIgIyBvZiBpbnB1dCB0ZW5zb3JzOiAiKSxNZigpLENmKDEwLCJzcGFuIiw2KSxQdSgxMSksTWYoKSxNZigpLENmKDEyLCJkaXYiLDMpLENmKDEzLCJzcGFuIiw0KSxQdSgxNCwiICMgb2Ygb3V0cHV0IHRlbnNvcnM6ICIpLE1mKCksQ2YoMTUsInNwYW4iLDcpLFB1KDE2KSxNZigpLENmKDE3LCJzcGFuIiw4KSxQdSgxOCksTWYoKSxNZigpLEhtKDE5LG9RLDIsMSwiZGl2Iiw5KSxNZigpLE1mKCkpLDImdCl7Y29uc3QgdD16ZigpO0RjKDYpLGt1KCIgIix0LmZvY3VzZWRFeGVjdXRpb25EYXRhLm9wX3R5cGUsIiAiKSxEYyg1KSxrdSgiICIsbnVsbD09dC5mb2N1c2VkRXhlY3V0aW9uRGF0YS5pbnB1dF90ZW5zb3JfaWRzPzA6dC5mb2N1c2VkRXhlY3V0aW9uRGF0YS5pbnB1dF90ZW5zb3JfaWRzLmxlbmd0aCwiICIpLERjKDUpLGt1KCIgIixudWxsPT10LmZvY3VzZWRFeGVjdXRpb25EYXRhLm91dHB1dF90ZW5zb3JfaWRzPzA6dC5mb2N1c2VkRXhlY3V0aW9uRGF0YS5vdXRwdXRfdGVuc29yX2lkcy5sZW5ndGgsIiAiKSxEYygyKSxrdSgiIChkZWJ1ZyBtb2RlOiAiLHQuVGVuc29yRGVidWdNb2RlW3QudGVuc29yRGVidWdNb2RlXSwiKSAiKSxEYygxKSxiZigibmdJZiIsdC5oYXNEZWJ1Z1RlbnNvclZhbHVlcyl9fWZ1bmN0aW9uIGFRKHQsZSl7fWNsYXNzIHJRe2NvbnN0cnVjdG9yKCl7dGhpcy50ZW5zb3JEZWJ1Z01vZGU9c0suVU5TUEVDSUZJRUQsdGhpcy5oYXNEZWJ1Z1RlbnNvclZhbHVlcz0hMSx0aGlzLmRlYnVnVGVuc29yVmFsdWVzPW51bGwsdGhpcy5kZWJ1Z1RlbnNvckR0eXBlcz1udWxsLHRoaXMuVGVuc29yRGVidWdNb2RlPXNLLHRoaXMucGFyc2VEZWJ1Z1RlbnNvclZhbHVlPUFKfX1yUS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8clEpfSxyUS7JtWNtcD1zbyh7dHlwZTpyUSxzZWxlY3RvcnM6W1siZXhlY3V0aW9uLWRhdGEtY29tcG9uZW50Il1dLGlucHV0czp7Zm9jdXNlZEV4ZWN1dGlvbkluZGV4OiJmb2N1c2VkRXhlY3V0aW9uSW5kZXgiLGZvY3VzZWRFeGVjdXRpb25EYXRhOiJmb2N1c2VkRXhlY3V0aW9uRGF0YSIsdGVuc29yRGVidWdNb2RlOiJ0ZW5zb3JEZWJ1Z01vZGUiLGhhc0RlYnVnVGVuc29yVmFsdWVzOiJoYXNEZWJ1Z1RlbnNvclZhbHVlcyIsZGVidWdUZW5zb3JWYWx1ZXM6ImRlYnVnVGVuc29yVmFsdWVzIixkZWJ1Z1RlbnNvckR0eXBlczoiZGVidWdUZW5zb3JEdHlwZXMifSxkZWNsczo3LHZhcnM6Myxjb25zdHM6W1sxLCJmb2N1cy1leGVjdXRpb24tY29udGFpbmVyIl0sWzQsIm5nSWYiLCJuZ0lmRWxzZSJdLFsibG9hZGluZ19zZWN0aW9uIiwiIl0sWzEsImV4ZWN1dGlvbi1kYXRhLWZpZWxkIl0sWzEsImV4ZWN1dGlvbi1kYXRhLWtleSJdLFsxLCJleGVjdXRpb24tZGF0YS12YWx1ZSIsIm9wLXR5cGUiXSxbMSwiZXhlY3V0aW9uLWRhdGEtdmFsdWUiLCJpbnB1dC10ZW5zb3JzIl0sWzEsImV4ZWN1dGlvbi1kYXRhLXZhbHVlIiwib3V0cHV0LXRlbnNvcnMiXSxbMSwiZXhlY3V0aW9uLWRhdGEtdmFsdWUiXSxbImNsYXNzIiwib3V0cHV0LXNsb3RzIiw0LCJuZ0lmIl0sWzEsIm91dHB1dC1zbG90cyJdLFsiY2xhc3MiLCJvdXRwdXQtc2xvdC1jb250YWluZXIiLDQsIm5nRm9yIiwibmdGb3JPZiJdLFsxLCJvdXRwdXQtc2xvdC1jb250YWluZXIiXSxbMSwib3V0cHV0LXNsb3QtbnVtYmVyIl0sWzEsIm91dHB1dC1zbG90LWRlYnVnLXRlbnNvci12YWx1ZSJdLFszLCJkZWJ1Z1RlbnNvclZhbHVlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJihDZigwLCJkaXYiLDApLENmKDEsImRpdiIpLENmKDIsInNwYW4iKSxQdSgzKSxNZigpLE1mKCksSG0oNCxpUSwyMCw1LCJkaXYiLDEpLEhtKDUsYVEsMCwwLCJuZy10ZW1wbGF0ZSIsbnVsbCwyLHF5KSxNZigpKSwyJmUpe2NvbnN0IHQ9Rm0oNik7RGMoMyksa3UoIiBQeXRob24gRXhlY3V0aW9uICMiLG4uZm9jdXNlZEV4ZWN1dGlvbkluZGV4LCIgIiksRGMoMSksYmYoIm5nSWYiLG51bGwhPT1uLmZvY3VzZWRFeGVjdXRpb25EYXRhKSgibmdJZkVsc2UiLHQpfX0sZGlyZWN0aXZlczpbUHYseHYsdFFdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgdHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5kZWJ1Zy10ZW5zb3ItdmFsdWVzLXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoxMDAlfS5kZWJ1Zy10ZW5zb3ItdmFsdWVzLXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRkW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wOjFweCBzb2xpZCAjMDAwO3RleHQtYWxpZ246bGVmdH0uZGVidWctdGVuc29yLXZhbHVlcy10YWJsZVtfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17dGV4dC1hbGlnbjpsZWZ0fS5leGVjdXRpb24tZGF0YS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwfS5leGVjdXRpb24tZGF0YS1rZXlbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6aW5saW5lLWJsb2NrO21heC13aWR0aDoxMjBweDt0ZXh0LWFsaWduOnJpZ2h0O3dpZHRoOjEyMHB4fS5leGVjdXRpb24tZGF0YS12YWx1ZVtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTppbmxpbmUtYmxvY2s7bWFyZ2luLWxlZnQ6MTBweH0uZm9jdXMtZXhlY3V0aW9uLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZjYzgwO2JvcmRlci1yYWRpdXM6NHB4O2ZvbnQtc2l6ZToxMnB4O2hlaWdodDoxMjBweDtwYWRkaW5nOjVweDt3aWR0aDozNjBweH1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAuZm9jdXMtZXhlY3V0aW9uLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5mb2N1cy1leGVjdXRpb24tY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNlNjUxMDB9Lm91dHB1dC1zbG90c1tfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjYwcHg7b3ZlcmZsb3cteDphdXRvO292ZXJmbG93LXk6YXV0b30ub3V0cHV0LXNsb3QtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wOjFweCBzb2xpZCAjZWJlYmViO21hcmdpbi10b3A6NXB4O3BhZGRpbmc6MnB4IDA7dmVydGljYWwtYWxpZ246dG9wfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5vdXRwdXQtc2xvdC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAub3V0cHV0LXNsb3QtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wOjFweCBzb2xpZCAjNTU1fS5vdXRwdXQtc2xvdC1udW1iZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6YmxvY2s7Zm9udC1mYW1pbHk6IlJvYm90byBNb25vIixtb25vc3BhY2V9Lm91dHB1dC1zbG90LWRlYnVnLXRlbnNvci12YWx1ZVtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpibG9jazttYXJnaW46M3B4IDAgM3B4IDMwcHh9Lm91dHB1dC10ZW5zb3JzW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOjVweH0nXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoclEsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoiZXhlY3V0aW9uLWRhdGEtY29tcG9uZW50Iix0ZW1wbGF0ZVVybDoiLi9leGVjdXRpb25fZGF0YV9jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsiLi9leGVjdXRpb25fZGF0YV9jb21wb25lbnQuY3NzIl19XX1dLG51bGwse2ZvY3VzZWRFeGVjdXRpb25JbmRleDpbe3R5cGU6Ul99XSxmb2N1c2VkRXhlY3V0aW9uRGF0YTpbe3R5cGU6Ul99XSx0ZW5zb3JEZWJ1Z01vZGU6W3t0eXBlOlJffV0saGFzRGVidWdUZW5zb3JWYWx1ZXM6W3t0eXBlOlJffV0sZGVidWdUZW5zb3JWYWx1ZXM6W3t0eXBlOlJffV0sZGVidWdUZW5zb3JEdHlwZXM6W3t0eXBlOlJffV19KTtjb25zdCBzUT0iVW5rbm93biBkdHlwZSI7Y2xhc3MgbFF7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMuZm9jdXNlZEV4ZWN1dGlvbkRhdGEkPXRoaXMuc3RvcmUucGlwZShyUyhzSikpLHRoaXMudGVuc29yRGVidWdNb2RlJD10aGlzLnN0b3JlLnBpcGUoclMoYlMoc0osKHQ9Pm51bGw9PT10P3NLLlVOU1BFQ0lGSUVEOnQudGVuc29yX2RlYnVnX21vZGUpKSkpLHRoaXMuaGFzRGVidWdUZW5zb3JWYWx1ZXMkPXRoaXMuc3RvcmUucGlwZShyUyhiUyhzSiwodD0+e2lmKG51bGw9PT10fHxudWxsPT09dC5kZWJ1Z190ZW5zb3JfdmFsdWVzKXJldHVybiExO2Zvcihjb25zdCBlIG9mIHQuZGVidWdfdGVuc29yX3ZhbHVlcylpZihudWxsIT09ZSYmZS5sZW5ndGg+MClyZXR1cm4hMDtyZXR1cm4hMX0pKSkpLHRoaXMuZGVidWdUZW5zb3JWYWx1ZXMkPXRoaXMuc3RvcmUucGlwZShyUyhiUyhzSiwodD0+bnVsbD09PXQ/bnVsbDp0LmRlYnVnX3RlbnNvcl92YWx1ZXMpKSkpLHRoaXMuZGVidWdUZW5zb3JEdHlwZXMkPXRoaXMuc3RvcmUucGlwZShyUyhiUyhzSiwodD0+e2lmKG51bGw9PT10fHxudWxsPT09dC5kZWJ1Z190ZW5zb3JfdmFsdWVzKXJldHVybiBudWxsO2lmKHQudGVuc29yX2RlYnVnX21vZGUhPT1zSy5GVUxMX0hFQUxUSCYmdC50ZW5zb3JfZGVidWdfbW9kZSE9PXNLLlNIQVBFKXJldHVybiBudWxsO2NvbnN0IGU9W107Zm9yKGNvbnN0IG4gb2YgdC5kZWJ1Z190ZW5zb3JfdmFsdWVzKWlmKG51bGw9PT1uKWUucHVzaChzUSk7ZWxzZXtjb25zdCBvPVN0cmluZyh0LnRlbnNvcl9kZWJ1Z19tb2RlPT09c0suRlVMTF9IRUFMVEg/blsyXTpuWzFdKTtlLnB1c2goRUpbb118fHNRKX1yZXR1cm4gZX0pKSkpfX1mdW5jdGlvbiBjUSh0LGUpe2lmKDEmdCl7Y29uc3QgdD13ZigpO0NmKDAsIm1hdC1zbGlkZXIiLDExKSxSZigiaW5wdXQiLChmdW5jdGlvbiBlKG4pe1BpKHQpO3JldHVybiB6ZigyKS5vblNsaWRlckNoYW5nZS5lbWl0KG4udmFsdWUpfSkpLE1mKCl9aWYoMiZ0KXtjb25zdCB0PXpmKDIpO2JmKCJtaW4iLDApKCJtYXgiLHQuc2Nyb2xsQmVnaW5JbmRleFVwcGVyTGltaXQpKCJ2YWx1ZSIsdC5zY3JvbGxCZWdpbkluZGV4KX19ZnVuY3Rpb24gZFEodCxlKXtpZigxJnQpe2NvbnN0IHQ9d2YoKTtDZigwLCJkaXYiLDYpLENmKDEsImJ1dHRvbiIsNyksUmYoImNsaWNrIiwoZnVuY3Rpb24gZSgpe1BpKHQpO3JldHVybiB6ZigpLm9uTmF2aWdhdGVMZWZ0LmVtaXQoKX0pKSxQdSgyLCIgPCAiKSxNZigpLENmKDMsImRpdiIsOCksUHUoNCksTWYoKSxDZig1LCJidXR0b24iLDkpLFJmKCJjbGljayIsKGZ1bmN0aW9uIGUoKXtQaSh0KTtyZXR1cm4gemYoKS5vbk5hdmlnYXRlUmlnaHQuZW1pdCgpfSkpLFB1KDYsIiA+ICIpLE1mKCksSG0oNyxjUSwxLDMsIm1hdC1zbGlkZXIiLDEwKSxNZigpfWlmKDImdCl7Y29uc3QgdD16ZigpO0RjKDQpLER1KCIgIix0LnNjcm9sbEJlZ2luSW5kZXgsIiB+ICIsdC5zY3JvbGxCZWdpbkluZGV4K3QuZGlzcGxheUNvdW50LTEsIiBvZiAiLHQubnVtRXhlY3V0aW9ucywiICIpLERjKDMpLGJmKCJuZ0lmIix0LnNjcm9sbEJlZ2luSW5kZXhVcHBlckxpbWl0PjApfX1sUS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8bFEpKGdmKGlTKSl9LGxRLsm1Y21wPXNvKHt0eXBlOmxRLHNlbGVjdG9yczpbWyJ0Zi1kZWJ1Z2dlci12Mi1leGVjdXRpb24tZGF0YSJdXSxpbnB1dHM6e2ZvY3VzZWRFeGVjdXRpb25JbmRleDoiZm9jdXNlZEV4ZWN1dGlvbkluZGV4In0sZGVjbHM6Nix2YXJzOjE2LGNvbnN0czpbWzMsImZvY3VzZWRFeGVjdXRpb25JbmRleCIsImZvY3VzZWRFeGVjdXRpb25EYXRhIiwidGVuc29yRGVidWdNb2RlIiwiaGFzRGVidWdUZW5zb3JWYWx1ZXMiLCJkZWJ1Z1RlbnNvclZhbHVlcyIsImRlYnVnVGVuc29yRHR5cGVzIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJih2ZigwLCJleGVjdXRpb24tZGF0YS1jb21wb25lbnQiLDApLF95KDEsImFzeW5jIiksX3koMiwiYXN5bmMiKSxfeSgzLCJhc3luYyIpLF95KDQsImFzeW5jIiksX3koNSwiYXN5bmMiKSksMiZlJiZiZigiZm9jdXNlZEV4ZWN1dGlvbkluZGV4IixuLmZvY3VzZWRFeGVjdXRpb25JbmRleCkoImZvY3VzZWRFeGVjdXRpb25EYXRhIixDeSgxLDYsbi5mb2N1c2VkRXhlY3V0aW9uRGF0YSQpKSgidGVuc29yRGVidWdNb2RlIixDeSgyLDgsbi50ZW5zb3JEZWJ1Z01vZGUkKSkoImhhc0RlYnVnVGVuc29yVmFsdWVzIixDeSgzLDEwLG4uaGFzRGVidWdUZW5zb3JWYWx1ZXMkKSkoImRlYnVnVGVuc29yVmFsdWVzIixDeSg0LDEyLG4uZGVidWdUZW5zb3JWYWx1ZXMkKSkoImRlYnVnVGVuc29yRHR5cGVzIixDeSg1LDE0LG4uZGVidWdUZW5zb3JEdHlwZXMkKSl9LGRpcmVjdGl2ZXM6W3JRXSxwaXBlczpbVnZdLGVuY2Fwc3VsYXRpb246Mn0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIobFEsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoidGYtZGVidWdnZXItdjItZXhlY3V0aW9uLWRhdGEiLHRlbXBsYXRlOidcbiAgICA8ZXhlY3V0aW9uLWRhdGEtY29tcG9uZW50XG4gICAgICBbZm9jdXNlZEV4ZWN1dGlvbkluZGV4XT0iZm9jdXNlZEV4ZWN1dGlvbkluZGV4IlxuICAgICAgW2ZvY3VzZWRFeGVjdXRpb25EYXRhXT0iZm9jdXNlZEV4ZWN1dGlvbkRhdGEkIHwgYXN5bmMiXG4gICAgICBbdGVuc29yRGVidWdNb2RlXT0idGVuc29yRGVidWdNb2RlJCB8IGFzeW5jIlxuICAgICAgW2hhc0RlYnVnVGVuc29yVmFsdWVzXT0iaGFzRGVidWdUZW5zb3JWYWx1ZXMkIHwgYXN5bmMiXG4gICAgICBbZGVidWdUZW5zb3JWYWx1ZXNdPSJkZWJ1Z1RlbnNvclZhbHVlcyQgfCBhc3luYyJcbiAgICAgIFtkZWJ1Z1RlbnNvckR0eXBlc109ImRlYnVnVGVuc29yRHR5cGVzJCB8IGFzeW5jIlxuICAgID48L2V4ZWN1dGlvbi1kYXRhLWNvbXBvbmVudD5cbiAgJ31dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmlTfV19KSx7Zm9jdXNlZEV4ZWN1dGlvbkluZGV4Olt7dHlwZTpSX31dfSk7Y29uc3QgcFE9ZnVuY3Rpb24odCxlLG4pe3JldHVyblt0LGUsbl19O2Z1bmN0aW9uIG1RKHQsZSl7aWYoMSZ0KXtjb25zdCB0PXdmKCk7Q2YoMCwiZGl2IiwxNCksUmYoImNsaWNrIiwoZnVuY3Rpb24gZSgpe2NvbnN0IG49UGkodCkuaW5kZXg7cmV0dXJuIHpmKDIpLm9uRXhlY3V0aW9uRGlnZXN0Q2xpY2tlZC5lbWl0KG4pfSkpLENmKDEsImRpdiIsMTUpLFB1KDIpLE1mKCksTWYoKX1pZigyJnQpe2NvbnN0IHQ9ZS4kaW1wbGljaXQsbj1lLmluZGV4LG89emYoMik7RGMoMSksTGYoInRpdGxlIix0Lm9wX3R5cGUpLGJmKCJuZ0NsYXNzIixyeSgzLHBRLHQuaXNfZ3JhcGg/ImZ1bmMtZ3JhcGgtZXhlY3V0aW9uIjoiIixuPT09by5mb2N1c2VkRXhlY3V0aW9uRGlzcGxheUluZGV4PyJmb2N1c2VkIjoiIixvLmRpc3BsYXlGb2N1c2VkQWxlcnRUeXBlc1tuXXx8IiIpKSxEYygxKSxrdSgiICIsdC5zaG9ydF9vcF90eXBlLCIgIil9fWZ1bmN0aW9uIGZRKHQsZSl7aWYoMSZ0JiYoQ2YoMCwiZGl2IiwxMiksSG0oMSxtUSwzLDcsImRpdiIsMTMpLE1mKCkpLDImdCl7Y29uc3QgdD16ZigpO0RjKDEpLGJmKCJuZ0Zvck9mIix0LmRpc3BsYXlFeGVjdXRpb25EaWdlc3RzKX19ZnVuY3Rpb24gdVEodCxlKXtpZigxJnQmJih4ZigwKSx2ZigxLCJ0Zi1kZWJ1Z2dlci12Mi1leGVjdXRpb24tZGF0YSIsMTYpLE9mKCkpLDImdCl7Y29uc3QgdD16ZigpO0RjKDEpLGJmKCJmb2N1c2VkRXhlY3V0aW9uSW5kZXgiLHQuZm9jdXNlZEV4ZWN1dGlvbkluZGV4KX19Y2xhc3MgZ1F7Y29uc3RydWN0b3IoKXt0aGlzLmFjdGl2ZVJ1bklkPW51bGwsdGhpcy5sb2FkaW5nTnVtRXhlY3V0aW9ucz0hMSx0aGlzLm51bUV4ZWN1dGlvbnM9MCx0aGlzLnNjcm9sbEJlZ2luSW5kZXg9MCx0aGlzLnNjcm9sbEJlZ2luSW5kZXhVcHBlckxpbWl0PTAsdGhpcy5wYWdlU2l6ZT0wLHRoaXMuZGlzcGxheUNvdW50PTAsdGhpcy5kaXNwbGF5RXhlY3V0aW9uRGlnZXN0cz1bXSx0aGlzLmRpc3BsYXlGb2N1c2VkQWxlcnRUeXBlcz1bXSx0aGlzLmZvY3VzZWRFeGVjdXRpb25JbmRleD1udWxsLHRoaXMuZm9jdXNlZEV4ZWN1dGlvbkRpc3BsYXlJbmRleD1udWxsLHRoaXMuZm9jdXNlZEV4ZWN1dGlvbkRhdGE9bnVsbCx0aGlzLm9uTmF2aWdhdGVMZWZ0PW5ldyBTeSx0aGlzLm9uTmF2aWdhdGVSaWdodD1uZXcgU3ksdGhpcy5vbkV4ZWN1dGlvbkRpZ2VzdENsaWNrZWQ9bmV3IFN5LHRoaXMub25TbGlkZXJDaGFuZ2U9bmV3IFN5fX1nUS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8Z1EpfSxnUS7JtWNtcD1zbyh7dHlwZTpnUSxzZWxlY3RvcnM6W1sidGltZWxpbmUtY29tcG9uZW50Il1dLGlucHV0czp7YWN0aXZlUnVuSWQ6ImFjdGl2ZVJ1bklkIixsb2FkaW5nTnVtRXhlY3V0aW9uczoibG9hZGluZ051bUV4ZWN1dGlvbnMiLG51bUV4ZWN1dGlvbnM6Im51bUV4ZWN1dGlvbnMiLHNjcm9sbEJlZ2luSW5kZXg6InNjcm9sbEJlZ2luSW5kZXgiLHNjcm9sbEJlZ2luSW5kZXhVcHBlckxpbWl0OiJzY3JvbGxCZWdpbkluZGV4VXBwZXJMaW1pdCIscGFnZVNpemU6InBhZ2VTaXplIixkaXNwbGF5Q291bnQ6ImRpc3BsYXlDb3VudCIsZGlzcGxheUV4ZWN1dGlvbkRpZ2VzdHM6ImRpc3BsYXlFeGVjdXRpb25EaWdlc3RzIixkaXNwbGF5Rm9jdXNlZEFsZXJ0VHlwZXM6ImRpc3BsYXlGb2N1c2VkQWxlcnRUeXBlcyIsZm9jdXNlZEV4ZWN1dGlvbkluZGV4OiJmb2N1c2VkRXhlY3V0aW9uSW5kZXgiLGZvY3VzZWRFeGVjdXRpb25EaXNwbGF5SW5kZXg6ImZvY3VzZWRFeGVjdXRpb25EaXNwbGF5SW5kZXgiLGZvY3VzZWRFeGVjdXRpb25EYXRhOiJmb2N1c2VkRXhlY3V0aW9uRGF0YSJ9LG91dHB1dHM6e29uTmF2aWdhdGVMZWZ0OiJvbk5hdmlnYXRlTGVmdCIsb25OYXZpZ2F0ZVJpZ2h0OiJvbk5hdmlnYXRlUmlnaHQiLG9uRXhlY3V0aW9uRGlnZXN0Q2xpY2tlZDoib25FeGVjdXRpb25EaWdlc3RDbGlja2VkIixvblNsaWRlckNoYW5nZToib25TbGlkZXJDaGFuZ2UifSxkZWNsczo5LHZhcnM6NCxjb25zdHM6W1sxLCJ0aW1lbGluZS10aXRsZSJdLFsxLCJleGVjdXRpb24tY291bnQiXSxbMSwidG9wLWxldmVsLWV4ZWN1dGlvbnMiXSxbImNsYXNzIiwibmF2aWdhdGlvbi1zZWN0aW9uIiw0LCJuZ0lmIl0sWyJjbGFzcyIsImV4ZWN1dGlvbi10aW1lbGluZSIsNCwibmdJZiJdLFs0LCJuZ0lmIl0sWzEsIm5hdmlnYXRpb24tc2VjdGlvbiJdLFsibWF0LWJ1dHRvbiIsIiIsMSwibmF2aWdhdGlvbi1idXR0b24tbGVmdCIsMywiY2xpY2siXSxbMSwibmF2aWdhdGlvbi1wb3NpdGlvbi1pbmZvIl0sWyJtYXQtYnV0dG9uIiwiIiwxLCJuYXZpZ2F0aW9uLWJ1dHRvbi1yaWdodCIsMywiY2xpY2siXSxbImNsYXNzIiwidGltZWxpbmUtc2xpZGVyIiwic3RlcCIsIjEiLDMsIm1pbiIsIm1heCIsInZhbHVlIiwiaW5wdXQiLDQsIm5nSWYiXSxbInN0ZXAiLCIxIiwxLCJ0aW1lbGluZS1zbGlkZXIiLDMsIm1pbiIsIm1heCIsInZhbHVlIiwiaW5wdXQiXSxbMSwiZXhlY3V0aW9uLXRpbWVsaW5lIl0sWzMsImNsaWNrIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbMywiY2xpY2siXSxbMSwiZXhlY3V0aW9uLWRpZ2VzdCIsMywibmdDbGFzcyIsInRpdGxlIl0sWzMsImZvY3VzZWRFeGVjdXRpb25JbmRleCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoQ2YoMCwiZGl2IiksQ2YoMSwiZGl2IiwwKSxQdSgyLCIgUHl0aG9uIEV4ZWN1dGlvbiBUaW1lbGluZSAiKSxDZigzLCJzcGFuIiwxKSxQdSg0KSxNZigpLE1mKCksQ2YoNSwiZGl2IiwyKSxIbSg2LGRRLDgsNCwiZGl2IiwzKSxIbSg3LGZRLDIsMSwiZGl2Iiw0KSxIbSg4LHVRLDIsMSwibmctY29udGFpbmVyIiw1KSxNZigpLE1mKCkpLDImZSYmKERjKDQpLGt1KCIgKCIsbi5udW1FeGVjdXRpb25zLCIpICIpLERjKDIpLGJmKCJuZ0lmIixuLm51bUV4ZWN1dGlvbnMpLERjKDEpLGJmKCJuZ0lmIixuLm51bUV4ZWN1dGlvbnMpLERjKDEpLGJmKCJuZ0lmIixudWxsIT09bi5hY3RpdmVSdW5JZCYmbnVsbCE9PW4uZm9jdXNlZEV4ZWN1dGlvbkluZGV4KSl9LGRpcmVjdGl2ZXM6W1B2LE5MLHdKLHh2LEN2LGxRXSxzdHlsZXM6WyIuZXhlY3V0aW9uLWRpZ2VzdFtfbmdjb250ZW50LSVDT01QJV0ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTNlNWU4O1xuICBib3JkZXI6IDFweCBzb2xpZCAjYzBjMGMwO1xuICBjb2xvcjogIzQyNTA2NjtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBmb250LXNpemU6IDEwcHg7XG4gIGhlaWdodDogMTVweDtcbiAgcGFkZGluZzogMXB4O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIHdpZHRoOiAxMnB4O1xufVxuXG4uZXhlY3V0aW9uLWRpZ2VzdC5mdW5jLWdyYXBoLWV4ZWN1dGlvbltfbmdjb250ZW50LSVDT01QJV0ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYzdkYmY1O1xuICBjb2xvcjogIzRlNTY2NDtcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG59XG5cbi5leGVjdXRpb24tZGlnZXN0LmZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZDRiMztcbiAgYm9yZGVyOiAxcHggc29saWQgIzAwMDtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbi5leGVjdXRpb24tZGlnZXN0LkluZk5hbkFsZXJ0W19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlNTI1OTI7XG4gIGNvbG9yOiAjZmZmO1xufVxuXG5cbi5leGVjdXRpb24tZGlnZXN0W19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciB7XG4gIGJvcmRlcjogMXB4IHNvbGlkICMwMDA7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuXG4uZXhlY3V0aW9uLXRpbWVsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIG92ZXJmbG93LXg6IGhpZGRlbjtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgd2lkdGg6IDEwMCU7XG4gIG1hcmdpbi10b3A6IDVweDtcbiAgbWFyZ2luLWJvdHRvbTogNXB4O1xufVxuXG4udGltZWxpbmUtc2xpZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgaGVpZ2h0OiA0OHB4O1xuICBsZWZ0OiAzNDBweDsgXG4gIHBhZGRpbmc6IDA7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgcmlnaHQ6IDQwcHg7XG59XG5cbiAgLnRpbWVsaW5lLXNsaWRlciAubWF0LXNsaWRlci10aHVtYiB7XG4gIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgcmlnaHQ6IC00MHB4O1xuICB3aWR0aDogODBweDtcbn1cblxuXG4ubmF2aWdhdGlvbi1wb3NpdGlvbi1pbmZvW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBmb250LXNpemU6IDE0cHg7XG4gIGxpbmUtaGVpZ2h0OiBub3JtYWw7XG4gIG1heC13aWR0aDogMjAwcHg7XG4gIHBhZGRpbmctbGVmdDogMTBweDtcbiAgcGFkZGluZy1yaWdodDogMTBweDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuXG4ubmF2aWdhdGlvbi1zZWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGhlaWdodDogNDhweDtcbiAgbGluZS1oZWlnaHQ6IDQ4cHg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgd2lkdGg6IDEwMCU7XG59Il0sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGdRLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6InRpbWVsaW5lLWNvbXBvbmVudCIsdGVtcGxhdGVVcmw6Ii4vdGltZWxpbmVfY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbIi4vdGltZWxpbmVfY29tcG9uZW50LmNzcyJdLGNoYW5nZURldGVjdGlvbjpqbi5PblB1c2h9XX1dLG51bGwse2FjdGl2ZVJ1bklkOlt7dHlwZTpSX31dLGxvYWRpbmdOdW1FeGVjdXRpb25zOlt7dHlwZTpSX31dLG51bUV4ZWN1dGlvbnM6W3t0eXBlOlJffV0sc2Nyb2xsQmVnaW5JbmRleDpbe3R5cGU6Ul99XSxzY3JvbGxCZWdpbkluZGV4VXBwZXJMaW1pdDpbe3R5cGU6Ul99XSxwYWdlU2l6ZTpbe3R5cGU6Ul99XSxkaXNwbGF5Q291bnQ6W3t0eXBlOlJffV0sZGlzcGxheUV4ZWN1dGlvbkRpZ2VzdHM6W3t0eXBlOlJffV0sZGlzcGxheUZvY3VzZWRBbGVydFR5cGVzOlt7dHlwZTpSX31dLGZvY3VzZWRFeGVjdXRpb25JbmRleDpbe3R5cGU6Ul99XSxmb2N1c2VkRXhlY3V0aW9uRGlzcGxheUluZGV4Olt7dHlwZTpSX31dLGZvY3VzZWRFeGVjdXRpb25EYXRhOlt7dHlwZTpSX31dLG9uTmF2aWdhdGVMZWZ0Olt7dHlwZTpFX31dLG9uTmF2aWdhdGVSaWdodDpbe3R5cGU6RV99XSxvbkV4ZWN1dGlvbkRpZ2VzdENsaWNrZWQ6W3t0eXBlOkVffV0sb25TbGlkZXJDaGFuZ2U6W3t0eXBlOkVffV19KTtjb25zdCBoUT1bIl9fZm9yd2FyZF8iLCJfX2JhY2t3YXJkXyIsIl9faW5mZXJlbmNlXyJdO2NsYXNzIGJRe2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLmFjdGl2ZVJ1bklkJD10aGlzLnN0b3JlLnBpcGUoclModkspKSx0aGlzLmxvYWRpbmdOdW1FeGVjdXRpb25zJD10aGlzLnN0b3JlLnBpcGUoclMoYlMoQUssKHQ9PnQuc3RhdGU9PVVFLkxPQURJTkcpKSkpLHRoaXMuc2Nyb2xsQmVnaW5JbmRleCQ9dGhpcy5zdG9yZS5waXBlKHJTKHpLKSksdGhpcy5zY3JvbGxCZWdpbkluZGV4VXBwZXJMaW1pdCQ9dGhpcy5zdG9yZS5waXBlKHJTKGJTKE5LLEhLLCgodCxlKT0+TWF0aC5tYXgoMCx0LWUpKSkpKSx0aGlzLnBhZ2VTaXplJD10aGlzLnN0b3JlLnBpcGUoclMoSUspKSx0aGlzLmRpc3BsYXlDb3VudCQ9dGhpcy5zdG9yZS5waXBlKHJTKEhLKSksdGhpcy5kaXNwbGF5RXhlY3V0aW9uRGlnZXN0cyQ9dGhpcy5zdG9yZS5waXBlKHJTKGJTKEZLLCh0PT50Lm1hcCgodD0+KGZ1bmN0aW9uIGUodCxuPTEpe2lmKCF0KXJldHVybntvcF90eXBlOiIoTi9BKSIsc2hvcnRfb3BfdHlwZToiLi4iLGlzX2dyYXBoOiExfTtjb25zdCBvPWhRLmZpbHRlcigoZT0+dC5vcF90eXBlLnN0YXJ0c1dpdGgoZSkpKTtpZihvLmxlbmd0aCl7Y29uc3QgZT10Lm9wX3R5cGUuc2xpY2Uob1swXS5sZW5ndGgpO3JldHVybntvcF90eXBlOnQub3BfdHlwZSxzaG9ydF9vcF90eXBlOmUuc2xpY2UoMCxuKSxpc19ncmFwaDohMH19cmV0dXJue29wX3R5cGU6dC5vcF90eXBlLHNob3J0X29wX3R5cGU6dC5vcF90eXBlLnNsaWNlKDAsbiksaXNfZ3JhcGg6ITF9fSkodCkpKSkpKSksdGhpcy5kaXNwbGF5Rm9jdXNlZEFsZXJ0VHlwZXMkPXRoaXMuc3RvcmUucGlwZShyUyh0SikpLHRoaXMuZm9jdXNlZEV4ZWN1dGlvbkluZGV4JD10aGlzLnN0b3JlLnBpcGUoclMobkopKSx0aGlzLmZvY3VzZWRFeGVjdXRpb25EaXNwbGF5SW5kZXgkPXRoaXMuc3RvcmUucGlwZShyUyhvSikpLHRoaXMubnVtRXhlY3V0aW9ucyQ9dGhpcy5zdG9yZS5waXBlKHJTKE5LKSl9b25OYXZpZ2F0ZUxlZnQoKXt0aGlzLnN0b3JlLmRpc3BhdGNoKEJYKCkpfW9uTmF2aWdhdGVSaWdodCgpe3RoaXMuc3RvcmUuZGlzcGF0Y2goVlgoKSl9b25FeGVjdXRpb25EaWdlc3RDbGlja2VkKHQpe3RoaXMuc3RvcmUuZGlzcGF0Y2goVVgoe2Rpc3BsYXlJbmRleDp0fSkpfW9uU2xpZGVyQ2hhbmdlKHQpe3RoaXMuc3RvcmUuZGlzcGF0Y2goalgoe2luZGV4OnR9KSl9fWZ1bmN0aW9uIHlRKHQsZSl7MSZ0JiYoQ2YoMCwic3BhbiIpLFB1KDEsIiBPdXRwdXQgIiksTWYoKSl9ZnVuY3Rpb24gX1EodCxlKXsxJnQmJihDZigwLCJzcGFuIiksUHUoMSwiIElucHV0ICIpLE1mKCkpfWZ1bmN0aW9uIENRKHQsZSl7aWYoMSZ0JiYoQ2YoMCwiZGl2Iiw2KSxDZigxLCJzcGFuIiw3KSxIbSgyLHlRLDIsMCwic3BhbiIsOCksSG0oMyxfUSwyLDAsInNwYW4iLDgpLE1mKCksUHUoNCksTWYoKSksMiZ0KXtjb25zdCB0PXpmKCk7RGMoMSksYmYoIm5nU3dpdGNoIix0LmtpbmQpLERjKDEpLGJmKCJuZ1N3aXRjaENhc2UiLCJpbnB1dCIpLERjKDEpLGJmKCJuZ1N3aXRjaENhc2UiLCJjb25zdW1lciIpLERjKDEpLGt1KCIgc2xvdDogIix0LnNsb3QsIiAiKX19ZnVuY3Rpb24gTVEodCxlKXtpZigxJnQmJihDZigwLCJkaXYiLDkpLFB1KDEpLE1mKCkpLDImdCl7Y29uc3QgdD16ZigpO0RjKDEpLGt1KCIgIix0Lm9wRGF0YS5vcF90eXBlLCIgIil9fWZ1bmN0aW9uIHZRKHQsZSl7MSZ0JiYoQ2YoMCwic3BhbiIsMTApLFB1KDEsIiAoT3AgaW5mbyB1bmF2YWlsYWJsZS4pICIpLE1mKCkpfWJRLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxiUSkoZ2YoaVMpKX0sYlEuybVjbXA9c28oe3R5cGU6YlEsc2VsZWN0b3JzOltbInRmLWRlYnVnZ2VyLXYyLXRpbWVsaW5lIl1dLGRlY2xzOjEyLHZhcnM6MzMsY29uc3RzOltbMywiYWN0aXZlUnVuSWQiLCJsb2FkaW5nTnVtRXhlY3V0aW9ucyIsIm51bUV4ZWN1dGlvbnMiLCJzY3JvbGxCZWdpbkluZGV4Iiwic2Nyb2xsQmVnaW5JbmRleFVwcGVyTGltaXQiLCJwYWdlU2l6ZSIsImRpc3BsYXlDb3VudCIsImRpc3BsYXlFeGVjdXRpb25EaWdlc3RzIiwiZGlzcGxheUZvY3VzZWRBbGVydFR5cGVzIiwiZm9jdXNlZEV4ZWN1dGlvbkluZGV4IiwiZm9jdXNlZEV4ZWN1dGlvbkRpc3BsYXlJbmRleCIsIm9uTmF2aWdhdGVMZWZ0Iiwib25OYXZpZ2F0ZVJpZ2h0Iiwib25FeGVjdXRpb25EaWdlc3RDbGlja2VkIiwib25TbGlkZXJDaGFuZ2UiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKENmKDAsInRpbWVsaW5lLWNvbXBvbmVudCIsMCksUmYoIm9uTmF2aWdhdGVMZWZ0IiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uTmF2aWdhdGVMZWZ0KCl9KSkoIm9uTmF2aWdhdGVSaWdodCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vbk5hdmlnYXRlUmlnaHQoKX0pKSgib25FeGVjdXRpb25EaWdlc3RDbGlja2VkIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vbkV4ZWN1dGlvbkRpZ2VzdENsaWNrZWQoZSl9KSkoIm9uU2xpZGVyQ2hhbmdlIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vblNsaWRlckNoYW5nZShlKX0pKSxfeSgxLCJhc3luYyIpLF95KDIsImFzeW5jIiksX3koMywiYXN5bmMiKSxfeSg0LCJhc3luYyIpLF95KDUsImFzeW5jIiksX3koNiwiYXN5bmMiKSxfeSg3LCJhc3luYyIpLF95KDgsImFzeW5jIiksX3koOSwiYXN5bmMiKSxfeSgxMCwiYXN5bmMiKSxfeSgxMSwiYXN5bmMiKSxNZigpKSwyJmUmJmJmKCJhY3RpdmVSdW5JZCIsQ3koMSwxMSxuLmFjdGl2ZVJ1bklkJCkpKCJsb2FkaW5nTnVtRXhlY3V0aW9ucyIsQ3koMiwxMyxuLmxvYWRpbmdOdW1FeGVjdXRpb25zJCkpKCJudW1FeGVjdXRpb25zIixDeSgzLDE1LG4ubnVtRXhlY3V0aW9ucyQpKSgic2Nyb2xsQmVnaW5JbmRleCIsQ3koNCwxNyxuLnNjcm9sbEJlZ2luSW5kZXgkKSkoInNjcm9sbEJlZ2luSW5kZXhVcHBlckxpbWl0IixDeSg1LDE5LG4uc2Nyb2xsQmVnaW5JbmRleFVwcGVyTGltaXQkKSkoInBhZ2VTaXplIixDeSg2LDIxLG4ucGFnZVNpemUkKSkoImRpc3BsYXlDb3VudCIsQ3koNywyMyxuLmRpc3BsYXlDb3VudCQpKSgiZGlzcGxheUV4ZWN1dGlvbkRpZ2VzdHMiLEN5KDgsMjUsbi5kaXNwbGF5RXhlY3V0aW9uRGlnZXN0cyQpKSgiZGlzcGxheUZvY3VzZWRBbGVydFR5cGVzIixDeSg5LDI3LG4uZGlzcGxheUZvY3VzZWRBbGVydFR5cGVzJCkpKCJmb2N1c2VkRXhlY3V0aW9uSW5kZXgiLEN5KDEwLDI5LG4uZm9jdXNlZEV4ZWN1dGlvbkluZGV4JCkpKCJmb2N1c2VkRXhlY3V0aW9uRGlzcGxheUluZGV4IixDeSgxMSwzMSxuLmZvY3VzZWRFeGVjdXRpb25EaXNwbGF5SW5kZXgkKSl9LGRpcmVjdGl2ZXM6W2dRXSxwaXBlczpbVnZdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoYlEsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoidGYtZGVidWdnZXItdjItdGltZWxpbmUiLHRlbXBsYXRlOidcbiAgICA8dGltZWxpbmUtY29tcG9uZW50XG4gICAgICBbYWN0aXZlUnVuSWRdPSJhY3RpdmVSdW5JZCQgfCBhc3luYyJcbiAgICAgIFtsb2FkaW5nTnVtRXhlY3V0aW9uc109ImxvYWRpbmdOdW1FeGVjdXRpb25zJCB8IGFzeW5jIlxuICAgICAgW251bUV4ZWN1dGlvbnNdPSJudW1FeGVjdXRpb25zJCB8IGFzeW5jIlxuICAgICAgW3Njcm9sbEJlZ2luSW5kZXhdPSJzY3JvbGxCZWdpbkluZGV4JCB8IGFzeW5jIlxuICAgICAgW3Njcm9sbEJlZ2luSW5kZXhVcHBlckxpbWl0XT0ic2Nyb2xsQmVnaW5JbmRleFVwcGVyTGltaXQkIHwgYXN5bmMiXG4gICAgICBbcGFnZVNpemVdPSJwYWdlU2l6ZSQgfCBhc3luYyJcbiAgICAgIFtkaXNwbGF5Q291bnRdPSJkaXNwbGF5Q291bnQkIHwgYXN5bmMiXG4gICAgICBbZGlzcGxheUV4ZWN1dGlvbkRpZ2VzdHNdPSJkaXNwbGF5RXhlY3V0aW9uRGlnZXN0cyQgfCBhc3luYyJcbiAgICAgIFtkaXNwbGF5Rm9jdXNlZEFsZXJ0VHlwZXNdPSJkaXNwbGF5Rm9jdXNlZEFsZXJ0VHlwZXMkIHwgYXN5bmMiXG4gICAgICBbZm9jdXNlZEV4ZWN1dGlvbkluZGV4XT0iZm9jdXNlZEV4ZWN1dGlvbkluZGV4JCB8IGFzeW5jIlxuICAgICAgW2ZvY3VzZWRFeGVjdXRpb25EaXNwbGF5SW5kZXhdPSJmb2N1c2VkRXhlY3V0aW9uRGlzcGxheUluZGV4JCB8IGFzeW5jIlxuICAgICAgKG9uTmF2aWdhdGVMZWZ0KT0ib25OYXZpZ2F0ZUxlZnQoKSJcbiAgICAgIChvbk5hdmlnYXRlUmlnaHQpPSJvbk5hdmlnYXRlUmlnaHQoKSJcbiAgICAgIChvbkV4ZWN1dGlvbkRpZ2VzdENsaWNrZWQpPSJvbkV4ZWN1dGlvbkRpZ2VzdENsaWNrZWQoJGV2ZW50KSJcbiAgICAgIChvblNsaWRlckNoYW5nZSk9Im9uU2xpZGVyQ2hhbmdlKCRldmVudCkiXG4gICAgPjwvdGltZWxpbmUtY29tcG9uZW50PlxuICAnLGNoYW5nZURldGVjdGlvbjpqbi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTppU31dfSksbnVsbCk7Y29uc3QgeFE9ZnVuY3Rpb24odCl7cmV0dXJuW3RdfTtjbGFzcyBPUXtjb25zdHJ1Y3Rvcigpe3RoaXMub25PcE5hbWVDbGljaz1uZXcgU3l9fWZ1bmN0aW9uIFBRKHQsZSl7aWYoMSZ0KXtjb25zdCB0PXdmKCk7Q2YoMCwiZGl2IiwxMyksQ2YoMSwiZGl2IiwxNCksUHUoMiksTWYoKSxDZigzLCJncmFwaC1vcCIsMTUpLFJmKCJvbk9wTmFtZUNsaWNrIiwoZnVuY3Rpb24gZShuKXtQaSh0KTtjb25zdCBvPXpmKDMpO3JldHVybiBvLm9uR3JhcGhPcE5hdmlnYXRlLmVtaXQoe29wX25hbWU6bi5vcF9uYW1lLGdyYXBoX2lkOm8uZ3JhcGhJZH0pfSkpLE1mKCksTWYoKX1pZigyJnQpe2NvbnN0IHQ9ZS4kaW1wbGljaXQsbj1lLmluZGV4O0RjKDIpLGt1KCJJbnB1dCBzbG90ICIsbiwiOiIpLERjKDEpLGJmKCJraW5kIiwiaW5wdXQiKSgib3BOYW1lIix0Lm9wX25hbWUpKCJzbG90Iix0Lm91dHB1dF9zbG90KSgib3BEYXRhIix0LmRhdGEpfX1mdW5jdGlvbiB3USh0LGUpe2lmKDEmdCYmKENmKDAsImRpdiIsMTEpLENmKDEsImRpdiIpLEhtKDIsUFEsNCw1LCJkaXYiLDEyKSxNZigpLE1mKCkpLDImdCl7Y29uc3QgdD16ZigyKTtEYygyKSxiZigibmdGb3JPZiIsdC5pbnB1dE9wcyl9fWZ1bmN0aW9uIGtRKHQsZSl7MSZ0JiYoQ2YoMCwiZGl2IiwxNiksUHUoMSwiIChUaGlzIG9wIGhhcyBubyBpbnB1dCB0ZW5zb3IuKSAiKSxNZigpKX1mdW5jdGlvbiBTUSh0LGUpe2lmKDEmdCl7Y29uc3QgdD13ZigpO0NmKDAsImRpdiIsMjMpLENmKDEsImdyYXBoLW9wIiwxNSksUmYoIm9uT3BOYW1lQ2xpY2siLChmdW5jdGlvbiBlKG4pe1BpKHQpO2NvbnN0IG89emYoNCk7cmV0dXJuIG8ub25HcmFwaE9wTmF2aWdhdGUuZW1pdCh7b3BfbmFtZTpuLm9wX25hbWUsZ3JhcGhfaWQ6by5ncmFwaElkfSl9KSksTWYoKSxNZigpfWlmKDImdCl7Y29uc3QgdD1lLiRpbXBsaWNpdDtEYygxKSxiZigia2luZCIsImNvbnN1bWVyIikoIm9wTmFtZSIsdC5vcF9uYW1lKSgic2xvdCIsdC5pbnB1dF9zbG90KSgib3BEYXRhIix0LmRhdGEpfX1mdW5jdGlvbiBEUSh0LGUpe2lmKDEmdCYmKENmKDAsImRpdiIsMTkpLENmKDEsImRpdiIsMjApLFB1KDIpLENmKDMsInNwYW4iKSxSaCg0LDIxKSxNZigpLFB1KDUsIikgIiksTWYoKSxIbSg2LFNRLDIsNCwiZGl2IiwyMiksTWYoKSksMiZ0KXtjb25zdCB0PWUuJGltcGxpY2l0LG49ZS5pbmRleDtEYygyKSxTdSgiIE91dHB1dCBzbG90ICIsbiwiOiAoIix0Lmxlbmd0aCwiICIpLERjKDIpLEFoKHQubGVuZ3RoKSxUaCg0KSxEYygyKSxiZigibmdGb3JPZiIsdCl9fWZ1bmN0aW9uIFJRKHQsZSl7aWYoMSZ0JiYoQ2YoMCwiZGl2IiwxNyksQ2YoMSwiZGl2IiksSG0oMixEUSw3LDQsImRpdiIsMTgpLE1mKCksTWYoKSksMiZ0KXtjb25zdCB0PXpmKDIpO0RjKDIpLGJmKCJuZ0Zvck9mIix0LmNvbnN1bWVyT3BzKX19ZnVuY3Rpb24gRVEodCxlKXtpZigxJnQmJihDZigwLCJkaXYiLDI0KSxQdSgxKSxDZigyLCJzcGFuIiksUmgoMywyNSksTWYoKSxQdSg0LCIgYW5kIG5vIGNvbnN1bWVyLikgIiksTWYoKSksMiZ0KXtjb25zdCB0PXpmKDIpO0RjKDEpLGt1KCIgKFRoaXMgb3AgaGFzICIsdC5vcEluZm8uY29uc3VtZXJzLmxlbmd0aCwiIG91dHB1dCAiKSxEYygyKSxBaCh0Lm9wSW5mby5jb25zdW1lcnMubGVuZ3RoKSxUaCgzKX19ZnVuY3Rpb24gQVEodCxlKXtpZigxJnQpe2NvbnN0IHQ9d2YoKTtDZigwLCJkaXYiKSxIbSgxLHdRLDMsMSwiZGl2Iiw0KSxIbSgyLGtRLDIsMCwibmctdGVtcGxhdGUiLG51bGwsNSxxeSksQ2YoNCwiZGl2Iiw2KSxDZig1LCJkaXYiLDcpLFB1KDYsIk9wOiIpLE1mKCksQ2YoNywiZ3JhcGgtb3AiLDgpLFJmKCJvbk9wTmFtZUNsaWNrIiwoZnVuY3Rpb24gZShuKXtQaSh0KTtjb25zdCBvPXpmKCk7cmV0dXJuIG8ub25HcmFwaE9wTmF2aWdhdGUuZW1pdCh7b3BfbmFtZTpuLm9wX25hbWUsZ3JhcGhfaWQ6by5ncmFwaElkfSl9KSksTWYoKSxNZigpLEhtKDgsUlEsMywxLCJkaXYiLDkpLEhtKDksRVEsNSwyLCJuZy10ZW1wbGF0ZSIsbnVsbCwxMCxxeSksTWYoKX1pZigyJnQpe2NvbnN0IHQ9Rm0oMyksZT1GbSgxMCksbj16ZigpO0RjKDEpLGJmKCJuZ0lmIixuLmlucHV0T3BzLmxlbmd0aD4wKSgibmdJZkVsc2UiLHQpLERjKDYpLGJmKCJraW5kIiwic2VsZiIpKCJvcE5hbWUiLG4ub3BJbmZvLm9wX25hbWUpKCJvcERhdGEiLG4ub3BJbmZvKSxEYygxKSxiZigibmdJZiIsbi50b3RhbE51bUNvbnN1bWVycz4wKSgibmdJZkVsc2UiLGUpfX1mdW5jdGlvbiBUUSh0LGUpezEmdCYmKENmKDAsInNwYW4iLDI2KSxQdSgxLCIgKE9wIGluZm8gdW5hdmFpbGFibGUuKSAiKSxNZigpKX1mdW5jdGlvbiBOUSh0LGUpezEmdCYmKENmKDAsImRpdiIsMjcpLFB1KDEsIiBObyBncmFwaCBvcCBzZWxlY3RlZC4gQ2xpY2sgYSB0ZW5zb3IgbmFtZSBpbiB0aGUgR3JhcGggRXhlY3V0aW9ucyB0YWJsZSB0byB2aWV3IHRoZSBuZWlnaGJvcmhvb2Qgb2YgdGhlIHRlbnNvcidzIG9wIGluIGl0cyBncmFwaC4gIiksTWYoKSl9T1EuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fE9RKX0sT1EuybVjbXA9c28oe3R5cGU6T1Esc2VsZWN0b3JzOltbImdyYXBoLW9wIl1dLGlucHV0czp7a2luZDoia2luZCIsb3BOYW1lOiJvcE5hbWUiLHNsb3Q6InNsb3QiLG9wRGF0YToib3BEYXRhIn0sb3V0cHV0czp7b25PcE5hbWVDbGljazoib25PcE5hbWVDbGljayJ9LGRlY2xzOjksdmFyczo3LGNvbnN0czpbWzEsIm9wLWNvbnRhaW5lciJdLFsxLCJpbnB1dC10ZW5zb3ItbmFtZSJdLFsxLCJvcC1uYW1lIiwzLCJuZ0NsYXNzIiwiY2xpY2siXSxbImNsYXNzIiwic2xvdCIsNCwibmdJZiJdLFsiY2xhc3MiLCJvcC10eXBlIiw0LCJuZ0lmIiwibmdJZkVsc2UiXSxbIm9wSW5mb01pc3NpbmciLCIiXSxbMSwic2xvdCJdLFszLCJuZ1N3aXRjaCJdLFs0LCJuZ1N3aXRjaENhc2UiXSxbMSwib3AtdHlwZSJdLFsxLCJvcC1pbmZvLW1pc3NpbmciXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmKENmKDAsImJ1dHRvbiIsMCksQ2YoMSwiZGl2IiwxKSxDZigyLCJidXR0b24iLDIpLFJmKCJjbGljayIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vbk9wTmFtZUNsaWNrLmVtaXQoe29wX25hbWU6bi5vcE5hbWV9KX0pKSxDZigzLCJzcGFuIiksUHUoNCksTWYoKSxNZigpLEhtKDUsQ1EsNSw0LCJkaXYiLDMpLE1mKCksSG0oNixNUSwyLDEsImRpdiIsNCksSG0oNyx2USwyLDAsIm5nLXRlbXBsYXRlIixudWxsLDUscXkpLE1mKCkpLDImZSl7Y29uc3QgdD1GbSg4KTtEYygyKSxiZigibmdDbGFzcyIsaXkoNSx4USwic2VsZiI9PT1uLmtpbmQ/InNlbGYtb3AtbmFtZSI6IiIpKSxEYygyKSx3dShuLm9wTmFtZSksRGMoMSksYmYoIm5nSWYiLCJzZWxmIiE9PW4ua2luZCksRGMoMSksYmYoIm5nSWYiLHZvaWQgMCE9PW4ub3BEYXRhKSgibmdJZkVsc2UiLHQpfX0sZGlyZWN0aXZlczpbQ3YsUHYsRHYsUnZdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgdHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5vcC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAub3AtbmFtZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6aW5oZXJpdDtiYWNrZ3JvdW5kLWNvbG9yOmluaGVyaXR9Lm9wLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjJweCBzb2xpZCAjZWJlYmViO2JvcmRlci1yYWRpdXM6NHB4O2JveC1zaGFkb3c6MXB4IDNweCAjZWVlO2N1cnNvcjpwb2ludGVyO21hcmdpbjowIDVweCAwIDA7cGFkZGluZzoycHggNnB4O3RleHQtYWxpZ246cmlnaHQ7d2lkdGg6MjAwcHh9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLm9wLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5vcC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlcjoycHggc29saWQgIzU1NX1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAub3AtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLm9wLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzoxcHggM3B4ICM3NTc1NzV9Lm9wLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXN7b3V0bGluZTowfS5vcC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmhvdmVye2JvcmRlcjoycHggc29saWQgI2ZmZDNiMn0ub3AtaW5mby1taXNzaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpncmF5fS5vcC1uYW1lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6bm9uZTtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmlubGluZS1ibG9jaztvdmVyZmxvdy13cmFwOmFueXdoZXJlO3BhZGRpbmc6MDt0ZXh0LWFsaWduOnJpZ2h0O3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7d2hpdGUtc3BhY2U6cHJlLXdyYXB9Lm9wLW5hbWVbX25nY29udGVudC0lQ09NUCVdOmZvY3Vze291dGxpbmU6MH0ub3AtdHlwZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZWNlZmYxO2JvcmRlcjoxcHggc29saWQgI2ViZWJlYjtib3JkZXItcmFkaXVzOjRweDtmb250LWZhbWlseToiUm9ib3RvIE1vbm8iLG1vbm9zcGFjZTtmb250LXNpemU6MTBweDtoZWlnaHQ6MTRweDtsaW5lLWhlaWdodDoxNHB4O3BhZGRpbmc6MXB4IDNweDt3aWR0aDptYXgtY29udGVudDtkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW4tdG9wOjNweH1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAub3AtdHlwZVtfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5vcC10eXBlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MXB4IHNvbGlkICM1NTV9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLm9wLXR5cGVbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAub3AtdHlwZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojNDU1YTY0fS5zZWxmLW9wLW5hbWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OmJvbGQ7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LnNsb3RbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLnNsb3RbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuc2xvdFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9J119KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKE9RLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6ImdyYXBoLW9wIix0ZW1wbGF0ZVVybDoiZ3JhcGhfb3BfY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbIi4vZ3JhcGhfb3BfY29tcG9uZW50LmNzcyJdfV19XSxudWxsLHtraW5kOlt7dHlwZTpSX31dLG9wTmFtZTpbe3R5cGU6Ul99XSxzbG90Olt7dHlwZTpSX31dLG9wRGF0YTpbe3R5cGU6Ul99XSxvbk9wTmFtZUNsaWNrOlt7dHlwZTpFX31dfSk7Y2xhc3MgelF7Y29uc3RydWN0b3IoKXt0aGlzLm9uR3JhcGhPcE5hdmlnYXRlPW5ldyBTeX1nZXQgZ3JhcGhJZCgpe3JldHVybiB0aGlzLm9wSW5mby5ncmFwaF9pZHNbdGhpcy5vcEluZm8uZ3JhcGhfaWRzLmxlbmd0aC0xXX1nZXQgdG90YWxOdW1Db25zdW1lcnMoKXtyZXR1cm4gdGhpcy5jb25zdW1lck9wcy5yZWR1Y2UoKCh0LGUpPT50K2UubGVuZ3RoKSwwKX19elEuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHpRKX0selEuybVjbXA9c28oe3R5cGU6elEsc2VsZWN0b3JzOltbImdyYXBoLWNvbXBvbmVudCJdXSxpbnB1dHM6e29wSW5mbzoib3BJbmZvIixpbnB1dE9wczoiaW5wdXRPcHMiLGNvbnN1bWVyT3BzOiJjb25zdW1lck9wcyJ9LG91dHB1dHM6e29uR3JhcGhPcE5hdmlnYXRlOiJvbkdyYXBoT3BOYXZpZ2F0ZSJ9LGRlY2xzOjksdmFyczoyLGNvbnN0czpmdW5jdGlvbigpe2xldCB0LGUsbixvO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgbmdJMThuQ2xvc3VyZU1vZGUmJm5nSTE4bkNsb3N1cmVNb2RlKXt0PWdvb2cuZ2V0TXNnKCJ7VkFSX1BMVVJBTCwgcGx1cmFsLCA9MCB7Y29uc3VtZXJ9ID0xIHtjb25zdW1lcn0gb3RoZXIge2NvbnN1bWVyc319Iil9ZWxzZSB0PSRsb2NhbGl6ZWA64pCfZmU1NWY5YjE5M2VhMjBhYWU1YjU2MzVlNjhkOTM4NjUwMzg0Nzc0NuKQnzQ5NTUxMzM3NDA4NDEyOTk4NTE6e1ZBUl9QTFVSQUwsIHBsdXJhbCwgPTAge2NvbnN1bWVyfSA9MSB7Y29uc3VtZXJ9IG90aGVyIHtjb25zdW1lcnN9fWA7aWYodD1OaCh0LHtWQVJfUExVUkFMOiLvv70w77+9In0pLCJ1bmRlZmluZWQiIT10eXBlb2YgbmdJMThuQ2xvc3VyZU1vZGUmJm5nSTE4bkNsb3N1cmVNb2RlKXtlPWdvb2cuZ2V0TXNnKCIgeyRpY3V9Iix7aWN1OnR9KX1lbHNlIGU9JGxvY2FsaXplYDrikJ9iYWE0NjBlMmYyYjg1N2UyNjI5MmIyNDZmYzE4YWUwZWE5YjVlNTM34pCfNTU1NjM0MDM0Mzg1MDE2NTUxNjogJHt0fTpJQ1U6YDtpZigidW5kZWZpbmVkIiE9dHlwZW9mIG5nSTE4bkNsb3N1cmVNb2RlJiZuZ0kxOG5DbG9zdXJlTW9kZSl7bj1nb29nLmdldE1zZygie1ZBUl9QTFVSQUwsIHBsdXJhbCwgPTAge3RlbnNvcn0gPTEge3RlbnNvcn0gb3RoZXIge3RlbnNvcnN9fSIpfWVsc2Ugbj0kbG9jYWxpemVgOuKQnzZhYTc1ZjYyN2UwZGMxNjE1MGVmNDQ4NDY0ZTBjODU3YWFhMGRjMTjikJ81MTU2NzEyOTM1MTUwNTg2ODc4OntWQVJfUExVUkFMLCBwbHVyYWwsID0wIHt0ZW5zb3J9ID0xIHt0ZW5zb3J9IG90aGVyIHt0ZW5zb3JzfX1gO2lmKG49Tmgobix7VkFSX1BMVVJBTDoi77+9MO+/vSJ9KSwidW5kZWZpbmVkIiE9dHlwZW9mIG5nSTE4bkNsb3N1cmVNb2RlJiZuZ0kxOG5DbG9zdXJlTW9kZSl7bz1nb29nLmdldE1zZygiIHskaWN1fSIse2ljdTpufSl9ZWxzZSBvPSRsb2NhbGl6ZWA64pCfODkzNDc2YzJjNDIxY2VlNDc2NjNjOTczMmZhNDFhNzUwZDNhNzNkZuKQnzI0NjA2NzA1MzczNTE2MjYzNDogJHtufTpJQ1U6YDtyZXR1cm5bWzEsImdyYXBoLXN0cnVjdHVyZS1jb250YWluZXIiXSxbNCwibmdJZiIsIm5nSWZFbHNlIl0sWyJvcEluZm9NaXNzaW5nIiwiIl0sWyJub09wRm9jdXNlZCIsIiJdLFsiY2xhc3MiLCJpbnB1dHMtY29udGFpbmVyIiw0LCJuZ0lmIiwibmdJZkVsc2UiXSxbIm5vSW5wdXRzIiwiIl0sWzEsInNlbGYtb3AtY29udGFpbmVyIl0sWzEsInNlbGYtb3AtaGVhZGVyIl0sWzMsImtpbmQiLCJvcE5hbWUiLCJvcERhdGEiLCJvbk9wTmFtZUNsaWNrIl0sWyJjbGFzcyIsImNvbnN1bWVycy1jb250YWluZXIiLDQsIm5nSWYiLCJuZ0lmRWxzZSJdLFsibm9Db25zdW1lcnMiLCIiXSxbMSwiaW5wdXRzLWNvbnRhaW5lciJdLFsiY2xhc3MiLCJpbnB1dC1vcC1zZWN0aW9uIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbMSwiaW5wdXQtb3Atc2VjdGlvbiJdLFsxLCJpbnB1dC1zbG90LWhlYWRlciJdLFszLCJraW5kIiwib3BOYW1lIiwic2xvdCIsIm9wRGF0YSIsIm9uT3BOYW1lQ2xpY2siXSxbMSwiaW5wdXRzLWNvbnRhaW5lciIsIm5vLWlucHV0cy1pbmRpY2F0b3IiXSxbMSwiY29uc3VtZXJzLWNvbnRhaW5lciJdLFsiY2xhc3MiLCJzbG90LWNvbnN1bWVycy1jb250YWluZXIiLDQsIm5nRm9yIiwibmdGb3JPZiJdLFsxLCJzbG90LWNvbnN1bWVycy1jb250YWluZXIiXSxbMSwic2xvdC1jb25zdW1lcnMtaGVhZGVyIl0sZSxbImNsYXNzIiwiY29uc3VtZXItc2VjdGlvbiIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWzEsImNvbnN1bWVyLXNlY3Rpb24iXSxbMSwib3AtY29uc3VtZXJzLWNvbnRhaW5lciJdLG8sWzEsIm9wLWluZm8tbWlzc2luZyJdLFsxLCJuby1vcC1mb2N1c2VkIl1dfSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiYoQ2YoMCwiZGl2IiksQ2YoMSwiZGl2IiksUHUoMiwiR3JhcGggU3RydWN0dXJlIiksTWYoKSxDZigzLCJkaXYiLDApLEhtKDQsQVEsMTEsNywiZGl2IiwxKSxNZigpLEhtKDUsVFEsMiwwLCJuZy10ZW1wbGF0ZSIsbnVsbCwyLHF5KSxIbSg3LE5RLDIsMCwibmctdGVtcGxhdGUiLG51bGwsMyxxeSksTWYoKSksMiZlKXtjb25zdCB0PUZtKDgpO0RjKDQpLGJmKCJuZ0lmIixudWxsIT1uLm9wSW5mbykoIm5nSWZFbHNlIix0KX19LGRpcmVjdGl2ZXM6W1B2LE9RLHh2XSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX1bX25naG9zdC0lQ09NUCVde292ZXJmbG93LXk6YXV0b30uY29uc3VtZXJzLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206NXB4O292ZXJmbG93LXg6YXV0bzt3aGl0ZS1zcGFjZTpub3dyYXB9LmNvbnN1bWVyLXNlY3Rpb25bX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6YmxvY2s7bWFyZ2luOjVweCAwfS5ncmFwaC1zdHJ1Y3R1cmUtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtvdmVyZmxvdy15OmF1dG87d2hpdGUtc3BhY2U6bm93cmFwfS5pbnB1dHMtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4xMik7bWFyZ2luLXRvcDo1cHg7b3ZlcmZsb3cteDphdXRvO3BhZGRpbmctYm90dG9tOjA7d2hpdGUtc3BhY2U6bm93cmFwfS5pbnB1dC1vcC1zZWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItcmlnaHQ6MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjEyKTtkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW4tcmlnaHQ6NXB4O3BhZGRpbmctYm90dG9tOjVweH0uaW5wdXQtc2xvdC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmZjA5OTttYXJnaW4tYm90dG9tOjVweH1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAuaW5wdXQtc2xvdC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuaW5wdXQtc2xvdC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2U2NTEwMH0uaW5wdXQtdGVuc29yLW5hbWVbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6YmxvY2s7d2hpdGUtc3BhY2U6bm93cmFwfS5uby1vcC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpncmF5O2ZvbnQtZmFtaWx5OiJSb2JvdG8iLEFyaWFsLEhlbHZldGljYSxzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxM3B4O3doaXRlLXNwYWNlOm5vcm1hbH0uc2VsZi1vcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OmJvbGQ7bWFyZ2luLWJvdHRvbTo1cHh9LnNlbGYtb3AtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4xMik7cGFkZGluZy1ib3R0b206NXB4fS5zbG90LWNvbnN1bWVycy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1yaWdodDoxcHggc29saWQgcmdiYSgwLDAsMCwuMTIpO2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbi1yaWdodDo1cHg7cGFkZGluZy10b3A6NXB4O3ZlcnRpY2FsLWFsaWduOnRvcH0uc2xvdC1jb25zdW1lcnMtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXB9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHpRLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6ImdyYXBoLWNvbXBvbmVudCIsdGVtcGxhdGVVcmw6Ii4vZ3JhcGhfY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbIi4vZ3JhcGhfY29tcG9uZW50LmNzcyJdLGNoYW5nZURldGVjdGlvbjpqbi5PblB1c2h9XX1dLG51bGwse29wSW5mbzpbe3R5cGU6Ul99XSxpbnB1dE9wczpbe3R5cGU6Ul99XSxjb25zdW1lck9wczpbe3R5cGU6Ul99XSxvbkdyYXBoT3BOYXZpZ2F0ZTpbe3R5cGU6RV99XX0pO2NsYXNzIElRe2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLm9wSW5mbyQ9dGhpcy5zdG9yZS5waXBlKHJTKEtLKSksdGhpcy5pbnB1dE9wcyQ9dGhpcy5zdG9yZS5waXBlKHJTKEpLKSksdGhpcy5jb25zdW1lck9wcyQ9dGhpcy5zdG9yZS5waXBlKHJTKCRLKSl9b25HcmFwaE9wTmF2aWdhdGUodCl7dGhpcy5zdG9yZS5kaXNwYXRjaChKWCh0KSl9fWZ1bmN0aW9uIEhRKHQsZSl7MSZ0JiYoQ2YoMCwiZGl2IiwxMiksUHUoMSwi4pa2IiksTWYoKSl9SVEuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fElRKShnZihpUykpfSxJUS7JtWNtcD1zbyh7dHlwZTpJUSxzZWxlY3RvcnM6W1sidGYtZGVidWdnZXItdjItZ3JhcGgiXV0sZGVjbHM6NCx2YXJzOjksY29uc3RzOltbMywib3BJbmZvIiwiaW5wdXRPcHMiLCJjb25zdW1lck9wcyIsIm9uR3JhcGhPcE5hdmlnYXRlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihDZigwLCJncmFwaC1jb21wb25lbnQiLDApLFJmKCJvbkdyYXBoT3BOYXZpZ2F0ZSIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25HcmFwaE9wTmF2aWdhdGUoZSl9KSksX3koMSwiYXN5bmMiKSxfeSgyLCJhc3luYyIpLF95KDMsImFzeW5jIiksTWYoKSksMiZlJiZiZigib3BJbmZvIixDeSgxLDMsbi5vcEluZm8kKSkoImlucHV0T3BzIixDeSgyLDUsbi5pbnB1dE9wcyQpKSgiY29uc3VtZXJPcHMiLEN5KDMsNyxuLmNvbnN1bWVyT3BzJCkpfSxkaXJlY3RpdmVzOlt6UV0scGlwZXM6W1Z2XSxlbmNhcHN1bGF0aW9uOjJ9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKElRLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6InRmLWRlYnVnZ2VyLXYyLWdyYXBoIix0ZW1wbGF0ZTonXG4gICAgPGdyYXBoLWNvbXBvbmVudFxuICAgICAgW29wSW5mb109Im9wSW5mbyQgfCBhc3luYyJcbiAgICAgIFtpbnB1dE9wc109ImlucHV0T3BzJCB8IGFzeW5jIlxuICAgICAgW2NvbnN1bWVyT3BzXT0iY29uc3VtZXJPcHMkIHwgYXN5bmMiXG4gICAgICAob25HcmFwaE9wTmF2aWdhdGUpPSJvbkdyYXBoT3BOYXZpZ2F0ZSgkZXZlbnQpIlxuICAgID48L2dyYXBoLWNvbXBvbmVudD5cbiAgJ31dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmlTfV19KSxudWxsKTtjb25zdCBGUT1mdW5jdGlvbih0LGUpe3JldHVybnt0ZW5zb3JEZWJ1Z01vZGU6dCxhcnJheTplfX07ZnVuY3Rpb24gTFEodCxlKXtpZigxJnQmJnZmKDAsImRlYnVnLXRlbnNvci12YWx1ZSIsMTcpLDImdCl7Y29uc3QgdD16ZigyKS4kaW1wbGljaXQsZT16ZigyKTtiZigiZGVidWdUZW5zb3JWYWx1ZSIsZS5wYXJzZURlYnVnVGVuc29yVmFsdWUoYXkoMSxGUSxlLmdyYXBoRXhlY3V0aW9uRGF0YVt0XS50ZW5zb3JfZGVidWdfbW9kZSxlLmdyYXBoRXhlY3V0aW9uRGF0YVt0XS5kZWJ1Z190ZW5zb3JfdmFsdWUpKSl9fWZ1bmN0aW9uIEJRKHQsZSl7aWYoMSZ0KXtjb25zdCB0PXdmKCk7Q2YoMCwiZGl2IiksQ2YoMSwiZGl2IiwxMyksQ2YoMiwiYnV0dG9uIiwxNCksUmYoImNsaWNrIiwoZnVuY3Rpb24gZSgpe1BpKHQpO2NvbnN0IG49emYoKS4kaW1wbGljaXQsbz16ZigyKTtyZXR1cm4gby5vblRlbnNvck5hbWVDbGljay5lbWl0KHtpbmRleDpuLGdyYXBoX2lkOm8uZ3JhcGhFeGVjdXRpb25EYXRhW25dLmdyYXBoX2lkLG9wX25hbWU6by5ncmFwaEV4ZWN1dGlvbkRhdGFbbl0ub3BfbmFtZX0pfSkpLFB1KDMpLE1mKCksQ2YoNCwiZGl2IiwxNSksUHUoNSksTWYoKSxNZigpLEhtKDYsTFEsMSw0LCJkZWJ1Zy10ZW5zb3ItdmFsdWUiLDE2KSxNZigpfWlmKDImdCl7Y29uc3QgdD16ZigpLiRpbXBsaWNpdCxlPXpmKDIpO0RjKDIpLExmKCJ0aXRsZSIsZS5nZXRUZW5zb3JOYW1lKHQpKSxEYygxKSxrdSgiICIsZS5nZXRUZW5zb3JOYW1lKHQpLCIgIiksRGMoMiksd3UoZS5ncmFwaEV4ZWN1dGlvbkRhdGFbdF0ub3BfdHlwZSksRGMoMSksYmYoIm5nSWYiLG51bGwhPT1lLmdyYXBoRXhlY3V0aW9uRGF0YVt0XS5kZWJ1Z190ZW5zb3JfdmFsdWUpfX1mdW5jdGlvbiBWUSh0LGUpezEmdCYmKENmKDAsImRpdiIsMTgpLFB1KDEsIiBMb2FkaW5nLi4uICIpLE1mKCkpfWNvbnN0IGpRPWZ1bmN0aW9uKHQpe3JldHVybnsiaW5wdXQtb2YtZm9jdXMiOnR9fTtmdW5jdGlvbiBVUSh0LGUpe2lmKDEmdCYmKENmKDAsImRpdiIsNSksQ2YoMSwiZGl2Iiw2KSxDZigyLCJkaXYiLDcpLEhtKDMsSFEsMiwwLCJkaXYiLDgpLFB1KDQpLE1mKCksSG0oNSxCUSw3LDQsImRpdiIsOSksSG0oNixWUSwyLDAsIm5nLXRlbXBsYXRlIiwxMCwxMSxxeSksTWYoKSxNZigpKSwyJnQpe2NvbnN0IHQ9ZS4kaW1wbGljaXQsbj1GbSg3KSxvPXpmKDIpO0RjKDEpLGJmKCJuZ0NsYXNzIixpeSg1LGpRLG8uaXNJbnB1dE9mRm9jdXModCkpKSxEYygyKSxiZigibmdJZiIsdD09PW8uZm9jdXNJbmRleCksRGMoMSksa3UoIiAiLHQsIiAiKSxEYygxKSxiZigibmdJZiIsby5ncmFwaEV4ZWN1dGlvbkRhdGFbdF0pKCJuZ0lmRWxzZSIsbil9fWZ1bmN0aW9uIFdRKHQsZSl7aWYoMSZ0KXtjb25zdCB0PXdmKCk7Q2YoMCwiY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0IiwzKSxSZigic2Nyb2xsZWRJbmRleENoYW5nZSIsKGZ1bmN0aW9uIGUobil7UGkodCk7cmV0dXJuIHpmKCkub25TY3JvbGxlZEluZGV4Q2hhbmdlLmVtaXQobil9KSksSG0oMSxVUSw4LDcsImRpdiIsNCksTWYoKX1pZigyJnQpe2NvbnN0IHQ9emYoKTtEYygxKSxiZigiY2RrVmlydHVhbEZvck9mIix0LmdyYXBoRXhlY3V0aW9uSW5kaWNlcyl9fWNsYXNzIEdRe2NvbnN0cnVjdG9yKCl7dGhpcy5vblNjcm9sbGVkSW5kZXhDaGFuZ2U9bmV3IFN5LHRoaXMub25UZW5zb3JOYW1lQ2xpY2s9bmV3IFN5LHRoaXMucGFyc2VEZWJ1Z1RlbnNvclZhbHVlPUFKLHRoaXMuVEVTVF9PTkxZPXtnZXRWaWV3UG9ydDooKT0+dGhpcy52aWV3UG9ydH19bmdPbkNoYW5nZXModCl7aWYodGhpcy52aWV3UG9ydCYmdC5mb2N1c0luZGV4JiZudWxsIT09dC5mb2N1c0luZGV4LmN1cnJlbnRWYWx1ZSl7Y29uc3QgZT10aGlzLnZpZXdQb3J0LmdldFJlbmRlcmVkUmFuZ2UoKSxuPXQuZm9jdXNJbmRleC5jdXJyZW50VmFsdWUsbz1NYXRoLnJvdW5kKChlLmVuZC1lLnN0YXJ0KS8zKSxpPU1hdGgubWF4KG4tbywwKTt0aGlzLnZpZXdQb3J0LnNjcm9sbFRvSW5kZXgoaSxuPj1lLnN0YXJ0JiZuPGUuZW5kPyJzbW9vdGgiOnZvaWQgMCl9fWdldFRlbnNvck5hbWUodCl7cmV0dXJuYCR7dGhpcy5ncmFwaEV4ZWN1dGlvbkRhdGFbdF0ub3BfbmFtZX06JHt0aGlzLmdyYXBoRXhlY3V0aW9uRGF0YVt0XS5vdXRwdXRfc2xvdH1gfWlzSW5wdXRPZkZvY3VzKHQpe3JldHVybiBudWxsIT09dGhpcy5mb2N1c0lucHV0SW5kaWNlcyYmdGhpcy5mb2N1c0lucHV0SW5kaWNlcy5pbmNsdWRlcyh0KX19R1EuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEdRKX0sR1EuybVjbXA9c28oe3R5cGU6R1Esc2VsZWN0b3JzOltbImdyYXBoLWV4ZWN1dGlvbnMtY29tcG9uZW50Il1dLHZpZXdRdWVyeTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiZWeSh0Qiw1KSwyJmUpe2xldCB0O0J5KHQ9VXkoKSkmJihuLnZpZXdQb3J0PXQuZmlyc3QpfX0saW5wdXRzOntudW1HcmFwaEV4ZWN1dGlvbnM6Im51bUdyYXBoRXhlY3V0aW9ucyIsZ3JhcGhFeGVjdXRpb25EYXRhOiJncmFwaEV4ZWN1dGlvbkRhdGEiLGdyYXBoRXhlY3V0aW9uSW5kaWNlczoiZ3JhcGhFeGVjdXRpb25JbmRpY2VzIixmb2N1c0luZGV4OiJmb2N1c0luZGV4Iixmb2N1c0lucHV0SW5kaWNlczoiZm9jdXNJbnB1dEluZGljZXMifSxvdXRwdXRzOntvblNjcm9sbGVkSW5kZXhDaGFuZ2U6Im9uU2Nyb2xsZWRJbmRleENoYW5nZSIsb25UZW5zb3JOYW1lQ2xpY2s6Im9uVGVuc29yTmFtZUNsaWNrIn0sZmVhdHVyZXM6W3FvXSxkZWNsczo0LHZhcnM6Mixjb25zdHM6W1sxLCJncmFwaC1leGVjdXRpb25zLWNvbnRhaW5lciJdLFsxLCJncmFwaC1leGVjdXRpb25zLXRpdGxlIl0sWyJpdGVtU2l6ZSIsIjM4IiwiY2xhc3MiLCJncmFwaC1leGVjdXRpb25zLXZpZXdwb3J0IiwzLCJzY3JvbGxlZEluZGV4Q2hhbmdlIiw0LCJuZ0lmIl0sWyJpdGVtU2l6ZSIsIjM4IiwxLCJncmFwaC1leGVjdXRpb25zLXZpZXdwb3J0IiwzLCJzY3JvbGxlZEluZGV4Q2hhbmdlIl0sWyJjbGFzcyIsInRlbnNvci1jb250YWluZXIiLDQsImNka1ZpcnR1YWxGb3IiLCJjZGtWaXJ0dWFsRm9yT2YiXSxbMSwidGVuc29yLWNvbnRhaW5lciJdLFsxLCJ0ZW5zb3ItaXRlbSIsMywibmdDbGFzcyJdLFsxLCJncmFwaC1leGVjdXRpb24taW5kZXgiXSxbImNsYXNzIiwiZ3JhcGgtZXhlY3V0aW9uLWZvY3VzIiw0LCJuZ0lmIl0sWzQsIm5nSWYiLCJuZ0lmRWxzZSJdLFsiY2xhc3MiLCJ0ZW5zb3ItaXRlbSJdLFsiZGF0YUxvYWRpbmciLCIiXSxbMSwiZ3JhcGgtZXhlY3V0aW9uLWZvY3VzIl0sWzEsInRlbnNvci1uYW1lLWFuZC1vcC10eXBlIl0sWzEsInRlbnNvci1uYW1lIiwzLCJ0aXRsZSIsImNsaWNrIl0sWzEsIm9wLXR5cGUiXSxbMywiZGVidWdUZW5zb3JWYWx1ZSIsNCwibmdJZiJdLFszLCJkZWJ1Z1RlbnNvclZhbHVlIl0sWzEsImxvYWRpbmctc3Bpbm5lciJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoQ2YoMCwiZGl2IiwwKSxDZigxLCJkaXYiLDEpLFB1KDIpLE1mKCksSG0oMyxXUSwyLDEsImNkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydCIsMiksTWYoKSksMiZlJiYoRGMoMiksa3UoIiBHcmFwaCBFeGVjdXRpb25zICgiLG4ubnVtR3JhcGhFeGVjdXRpb25zLCIpICIpLERjKDEpLGJmKCJuZ0lmIixudWxsIT09bi5udW1HcmFwaEV4ZWN1dGlvbnMmJm4ubnVtR3JhcGhFeGVjdXRpb25zPjApKX0sZGlyZWN0aXZlczpbUHYsdEIsWEwsbkIsQ3YsdFFdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgdHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5ncmFwaC1leGVjdXRpb25zLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICNlYmViZWI7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtoZWlnaHQ6MTAwJTttYXJnaW4tbGVmdDo4cHg7cGFkZGluZy1sZWZ0OjEwcHh9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLmdyYXBoLWV4ZWN1dGlvbnMtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmdyYXBoLWV4ZWN1dGlvbnMtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDoxcHggc29saWQgIzU1NX0uZ3JhcGgtZXhlY3V0aW9uLWZvY3VzW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmlubGluZS1ibG9ja30uZ3JhcGgtZXhlY3V0aW9uLWluZGV4W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxO2Rpc3BsYXk6aW5saW5lLWJsb2NrO3BhZGRpbmctcmlnaHQ6NHB4O3RleHQtYWxpZ246cmlnaHQ7d2lkdGg6NDBweH1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAuZ3JhcGgtZXhlY3V0aW9uLWluZGV4W19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmdyYXBoLWV4ZWN1dGlvbi1pbmRleFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9LmdyYXBoLWV4ZWN1dGlvbnMtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MCA1cHggM3B4IC0zcHggI2NjYztwYWRkaW5nLWJvdHRvbTo1cHh9LmdyYXBoLWV4ZWN1dGlvbnMtdmlld3BvcnRbX25nY29udGVudC0lQ09NUCVde2ZsZXgtZ3JvdzoxO2ZvbnQtc2l6ZToxMnB4O3dpZHRoOjEwMCU7b3ZlcmZsb3cteDpoaWRkZW59LmlucHV0LW9mLWZvY3VzW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmYwOTl9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLmlucHV0LW9mLWZvY3VzW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmlucHV0LW9mLWZvY3VzW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNlNjUxMDB9LmxvYWRpbmctc3Bpbm5lcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTppbmxpbmUtYmxvY2t9Lm9wLXR5cGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2VjZWZmMTtib3JkZXI6MXB4IHNvbGlkICNlYmViZWI7Ym9yZGVyLXJhZGl1czo0cHg7Zm9udC1mYW1pbHk6IlJvYm90byBNb25vIixtb25vc3BhY2U7Zm9udC1zaXplOjEwcHg7aGVpZ2h0OjE0cHg7bGluZS1oZWlnaHQ6MTRweDtwYWRkaW5nOjFweCAzcHg7d2lkdGg6bWF4LWNvbnRlbnQ7ZGlyZWN0aW9uOnJ0bDtkaXNwbGF5OmJsb2NrfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5vcC10eXBlW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLm9wLXR5cGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlcjoxcHggc29saWQgIzU1NX1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAub3AtdHlwZVtfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5vcC10eXBlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiM0NTVhNjR9LnRlbnNvci1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjEwMCV9LnRlbnNvci1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZWJlYmViO2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6bm93cmFwO2hlaWdodDozOHB4O2xpbmUtaGVpZ2h0OjM4cHg7dGV4dC1hbGlnbjpsZWZ0O3ZlcnRpY2FsLWFsaWduOm1pZGRsZTt3aGl0ZS1zcGFjZTpub3dyYXA7d2lkdGg6MTAwJX1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAudGVuc29yLWl0ZW1bX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAudGVuc29yLWl0ZW1bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1ib3R0b206MXB4IHNvbGlkICM1NTV9LnRlbnNvci1uYW1lW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2JvcmRlcjpub25lO2JveC1zaXppbmc6Ym9yZGVyLWJveDtjb2xvcjppbmhlcml0O2N1cnNvcjpwb2ludGVyO2RpcmVjdGlvbjpydGw7ZGlzcGxheTpibG9jaztoZWlnaHQ6MTZweDtsaW5lLWhlaWdodDoxNnB4O21hcmdpbjoycHggMCAxcHg7bWF4LXdpZHRoOmNhbGMoMTAwJSAtIDJweCk7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MCAycHg7dGV4dC1hbGlnbjpyaWdodDt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7d2hpdGUtc3BhY2U6bm93cmFwfS50ZW5zb3ItbmFtZVtfbmdjb250ZW50LSVDT01QJV06Zm9jdXN7b3V0bGluZToxcHggc29saWQgI2M2Y2FkMX0udGVuc29yLW5hbWUtYW5kLW9wLXR5cGVbX25nY29udGVudC0lQ09NUCVde2RpcmVjdGlvbjpydGw7ZGlzcGxheTppbmxpbmUtYmxvY2s7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmctcmlnaHQ6OHB4O3RleHQtYWxpZ246cmlnaHQ7d2lkdGg6MjQwcHh9ZGVidWctdGVuc29yLXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW46MnB4IDB9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEdRLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6ImdyYXBoLWV4ZWN1dGlvbnMtY29tcG9uZW50Iix0ZW1wbGF0ZVVybDoiLi9ncmFwaF9leGVjdXRpb25zX2NvbXBvbmVudC5uZy5odG1sIixzdHlsZVVybHM6WyIuL2dyYXBoX2V4ZWN1dGlvbnNfY29tcG9uZW50LmNzcyJdLGNoYW5nZURldGVjdGlvbjpqbi5PblB1c2h9XX1dLG51bGwse251bUdyYXBoRXhlY3V0aW9uczpbe3R5cGU6Ul99XSxncmFwaEV4ZWN1dGlvbkRhdGE6W3t0eXBlOlJffV0sZ3JhcGhFeGVjdXRpb25JbmRpY2VzOlt7dHlwZTpSX31dLGZvY3VzSW5kZXg6W3t0eXBlOlJffV0sZm9jdXNJbnB1dEluZGljZXM6W3t0eXBlOlJffV0sb25TY3JvbGxlZEluZGV4Q2hhbmdlOlt7dHlwZTpFX31dLG9uVGVuc29yTmFtZUNsaWNrOlt7dHlwZTpFX31dLHZpZXdQb3J0Olt7dHlwZTphcixhcmdzOlt0Qix7c3RhdGljOiExfV19XX0pO2NsYXNzIFlRe2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLm51bUdyYXBoRXhlY3V0aW9ucyQ9dGhpcy5zdG9yZS5waXBlKHJTKFZLKSksdGhpcy5ncmFwaEV4ZWN1dGlvbkRhdGEkPXRoaXMuc3RvcmUucGlwZShyUyhxSykpLHRoaXMuZ3JhcGhFeGVjdXRpb25JbmRpY2VzJD10aGlzLnN0b3JlLnBpcGUoclMoYlMoVkssKHQ9PjA9PT10P251bGw6QXJyYXkuZnJvbSh7bGVuZ3RoOnR9KS5tYXAoKCh0LGUpPT5lKSkpKSkpLHRoaXMuZm9jdXNJbmRleCQ9dGhpcy5zdG9yZS5waXBlKHJTKFpLKSksdGhpcy5mb2N1c0lucHV0SW5kaWNlcyQ9dGhpcy5zdG9yZS5waXBlKHJTKFFLKSl9b25TY3JvbGxlZEluZGV4Q2hhbmdlKHQpe3RoaXMuc3RvcmUuZGlzcGF0Y2goWFgoe2luZGV4OnR9KSl9b25UZW5zb3JOYW1lQ2xpY2sodCl7dGhpcy5zdG9yZS5kaXNwYXRjaChLWCh0KSl9fVlRLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxZUSkoZ2YoaVMpKX0sWVEuybVjbXA9c28oe3R5cGU6WVEsc2VsZWN0b3JzOltbInRmLWRlYnVnZ2VyLXYyLWdyYXBoLWV4ZWN1dGlvbnMiXV0sZGVjbHM6Nix2YXJzOjE1LGNvbnN0czpbWzMsIm51bUdyYXBoRXhlY3V0aW9ucyIsImdyYXBoRXhlY3V0aW9uRGF0YSIsImdyYXBoRXhlY3V0aW9uSW5kaWNlcyIsImZvY3VzSW5kZXgiLCJmb2N1c0lucHV0SW5kaWNlcyIsIm9uU2Nyb2xsZWRJbmRleENoYW5nZSIsIm9uVGVuc29yTmFtZUNsaWNrIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihDZigwLCJncmFwaC1leGVjdXRpb25zLWNvbXBvbmVudCIsMCksUmYoIm9uU2Nyb2xsZWRJbmRleENoYW5nZSIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25TY3JvbGxlZEluZGV4Q2hhbmdlKGUpfSkpKCJvblRlbnNvck5hbWVDbGljayIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25UZW5zb3JOYW1lQ2xpY2soZSl9KSksX3koMSwiYXN5bmMiKSxfeSgyLCJhc3luYyIpLF95KDMsImFzeW5jIiksX3koNCwiYXN5bmMiKSxfeSg1LCJhc3luYyIpLE1mKCkpLDImZSYmYmYoIm51bUdyYXBoRXhlY3V0aW9ucyIsQ3koMSw1LG4ubnVtR3JhcGhFeGVjdXRpb25zJCkpKCJncmFwaEV4ZWN1dGlvbkRhdGEiLEN5KDIsNyxuLmdyYXBoRXhlY3V0aW9uRGF0YSQpKSgiZ3JhcGhFeGVjdXRpb25JbmRpY2VzIixDeSgzLDksbi5ncmFwaEV4ZWN1dGlvbkluZGljZXMkKSkoImZvY3VzSW5kZXgiLEN5KDQsMTEsbi5mb2N1c0luZGV4JCkpKCJmb2N1c0lucHV0SW5kaWNlcyIsQ3koNSwxMyxuLmZvY3VzSW5wdXRJbmRpY2VzJCkpfSxkaXJlY3RpdmVzOltHUV0scGlwZXM6W1Z2XSxlbmNhcHN1bGF0aW9uOjJ9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFlRLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6InRmLWRlYnVnZ2VyLXYyLWdyYXBoLWV4ZWN1dGlvbnMiLHRlbXBsYXRlOidcbiAgICA8Z3JhcGgtZXhlY3V0aW9ucy1jb21wb25lbnRcbiAgICAgIFtudW1HcmFwaEV4ZWN1dGlvbnNdPSJudW1HcmFwaEV4ZWN1dGlvbnMkIHwgYXN5bmMiXG4gICAgICBbZ3JhcGhFeGVjdXRpb25EYXRhXT0iZ3JhcGhFeGVjdXRpb25EYXRhJCB8IGFzeW5jIlxuICAgICAgW2dyYXBoRXhlY3V0aW9uSW5kaWNlc109ImdyYXBoRXhlY3V0aW9uSW5kaWNlcyQgfCBhc3luYyJcbiAgICAgIFtmb2N1c0luZGV4XT0iZm9jdXNJbmRleCQgfCBhc3luYyJcbiAgICAgIFtmb2N1c0lucHV0SW5kaWNlc109ImZvY3VzSW5wdXRJbmRpY2VzJCB8IGFzeW5jIlxuICAgICAgKG9uU2Nyb2xsZWRJbmRleENoYW5nZSk9Im9uU2Nyb2xsZWRJbmRleENoYW5nZSgkZXZlbnQpIlxuICAgICAgKG9uVGVuc29yTmFtZUNsaWNrKT0ib25UZW5zb3JOYW1lQ2xpY2soJGV2ZW50KSJcbiAgICA+PC9ncmFwaC1leGVjdXRpb25zLWNvbXBvbmVudD5cbiAgJ31dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmlTfV19KSxudWxsKTtjb25zdCBxUT17Z2V0V2luZG93OmZ1bmN0aW9uIFpRKCl7cmV0dXJuIHdpbmRvd319LFhRPSJ2cyI7ZnVuY3Rpb24gS1EodCl7Y29uc3QgZT1xUS5nZXRXaW5kb3coKS5yZXF1aXJlO3JldHVybiBuZXcgUHJvbWlzZSgobj0+e2UodCxuKX0pKX1mdW5jdGlvbiBKUSgpe3JldHVybiBYVCh0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKigpe2NvbnN0IHQ9cVEuZ2V0V2luZG93KCk7aWYodm9pZCAwPT09dC5tb25hY28pe2lmKCF0LnJlcXVpcmUpdGhyb3cgbmV3IEVycm9yKCJsb2FkTW9uYWNvKCkgZmFpbGVkIGJlY2F1c2UgZnVuY3Rpb24gcmVxdWlyZSgpIGlzIHVuYXZhaWxhYmxlIik7dC5yZXF1aXJlLmNvbmZpZyh7cGF0aHM6e1tYUV06Ii90Zi1pbXBvcnRzL3ZzIn19KSx5aWVsZCBLUShbInZzL2VkaXRvci9lZGl0b3IubWFpbiJdKSx5aWVsZCBLUShbInZzL3B5dGhvbi9weXRob24uY29udHJpYnV0aW9uIl0pfX0pKX1mdW5jdGlvbiBRUSh0KXtyZXR1cm4gdD8idnMtZGFyayI6InZzIn1jbGFzcyAkUXtjb25zdHJ1Y3Rvcih0KXt0aGlzLnJlc2l6ZUV2ZW50RGVib3VuY2VQZXJpb2RJbk1zPTEwMCx0aGlzLm9uUmVzaXplPW5ldyBTeSx0aGlzLm5nVW5zdWJzY3JpYmUkPW5ldyBCLHRoaXMub25SZXNpemUkPW5ldyBCO2NvbnN0IGU9bmV3IFJlc2l6ZU9ic2VydmVyKCgoKT0+e3RoaXMub25SZXNpemUkLm5leHQoKX0pKTtlLm9ic2VydmUodC5uYXRpdmVFbGVtZW50KSx0aGlzLm5nVW5zdWJzY3JpYmUkLnN1YnNjcmliZSgoKCk9PntlLnVub2JzZXJ2ZSh0Lm5hdGl2ZUVsZW1lbnQpfSkpfW5nT25Jbml0KCl7dGhpcy5vblJlc2l6ZSQucGlwZShMZSgxKSxDZSh0aGlzLnJlc2l6ZUV2ZW50RGVib3VuY2VQZXJpb2RJbk1zKSxqZSh0aGlzLm5nVW5zdWJzY3JpYmUkKSkuc3Vic2NyaWJlKCgoKT0+e3RoaXMub25SZXNpemUuZW1pdCgpfSkpfW5nT25EZXN0cm95KCl7dGhpcy5uZ1Vuc3Vic2NyaWJlJC5uZXh0KCksdGhpcy5uZ1Vuc3Vic2NyaWJlJC5jb21wbGV0ZSgpfX0kUS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8JFEpKGdmKEtoKSl9LCRRLsm1ZGlyPWhvKHt0eXBlOiRRLHNlbGVjdG9yczpbWyIiLCJkZXRlY3RSZXNpemUiLCIiXV0saW5wdXRzOntyZXNpemVFdmVudERlYm91bmNlUGVyaW9kSW5NczoicmVzaXplRXZlbnREZWJvdW5jZVBlcmlvZEluTXMifSxvdXRwdXRzOntvblJlc2l6ZToib25SZXNpemUifX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoJFEsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW2RldGVjdFJlc2l6ZV0ifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6S2h9XX0pLHtyZXNpemVFdmVudERlYm91bmNlUGVyaW9kSW5Nczpbe3R5cGU6Ul99XSxvblJlc2l6ZTpbe3R5cGU6RV99XX0pO2NvbnN0IHQkPVsiY29kZVZpZXdlckNvbnRhaW5lciJdO2NsYXNzIGUke2NvbnN0cnVjdG9yKCl7dGhpcy5saW5lcz1udWxsLHRoaXMuZm9jdXNlZExpbmVubz1udWxsLHRoaXMubW9uYWNvPW51bGwsdGhpcy5lZGl0b3I9bnVsbCx0aGlzLmRlY29yYXRpb25zPVtdLHRoaXMuUkVTSVpFX0RFQk9VTkNFX0lOVEVSVkFMX01TPTUwfW9uUmVzaXplKCl7dGhpcy5lZGl0b3ImJnRoaXMuZWRpdG9yLmxheW91dCgpfW5nT25DaGFuZ2VzKHQpe3ZhciBlO2lmKG51bGw9PT10aGlzLm1vbmFjbylyZXR1cm47Y29uc3Qgbj10Lm1vbmFjbyYmbnVsbD09PXRoaXMuZWRpdG9yO251bGw9PT10aGlzLmVkaXRvciYmKHRoaXMuZWRpdG9yPXRoaXMubW9uYWNvLmVkaXRvci5jcmVhdGUodGhpcy5jb2RlVmlld2VyQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQse3ZhbHVlOihudWxsIT09KGU9dGhpcy5saW5lcykmJnZvaWQgMCE9PWU/ZTpbXSkuam9pbigiXG4iKSxsYW5ndWFnZToicHl0aG9uIixyZWFkT25seTohMCxmb250U2l6ZToxMCxtaW5pbWFwOntlbmFibGVkOiEwfSx0aGVtZTpRUSh0aGlzLnVzZURhcmtNb2RlKX0pKSx0LmxpbmVzJiZ0aGlzLmxpbmVzJiZ0aGlzLmVkaXRvci5zZXRWYWx1ZSh0aGlzLmxpbmVzLmpvaW4oIlxuIikpO2NvbnN0IG89bnx8dC5mb2N1c2VkTGluZW5vP3RoaXMuZm9jdXNlZExpbmVubzpudWxsO2lmKG8mJnRoaXMubGluZXMpe3RoaXMuZWRpdG9yLnJldmVhbExpbmVJbkNlbnRlcihvLHRoaXMubW9uYWNvLmVkaXRvci5TY3JvbGxUeXBlLlNtb290aCk7Y29uc3QgdD10aGlzLmxpbmVzW28tMV0ubGVuZ3RoO3RoaXMuZGVjb3JhdGlvbnM9dGhpcy5lZGl0b3IuZGVsdGFEZWNvcmF0aW9ucyh0aGlzLmRlY29yYXRpb25zLFt7cmFuZ2U6bmV3IHRoaXMubW9uYWNvLlJhbmdlKG8sMSxvLDEpLG9wdGlvbnM6e2lzV2hvbGVMaW5lOiEwLGxpbmVzRGVjb3JhdGlvbnNDbGFzc05hbWU6ImhpZ2hsaWdodC1ndXR0ZXIifX0se3JhbmdlOm5ldyB0aGlzLm1vbmFjby5SYW5nZShvLDEsbyx0KzEpLG9wdGlvbnM6e2lubGluZUNsYXNzTmFtZToiaGlnaGxpZ2h0LWxpbmUifX1dKX10LnVzZURhcmtNb2RlJiZ0aGlzLm1vbmFjby5lZGl0b3Iuc2V0VGhlbWUoUVEodGhpcy51c2VEYXJrTW9kZSkpfX1lJC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8ZSQpfSxlJC7JtWNtcD1zbyh7dHlwZTplJCxzZWxlY3RvcnM6W1sic291cmNlLWNvZGUtY29tcG9uZW50Il1dLHZpZXdRdWVyeTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiZWeSh0JCw3LEtoKSwyJmUpe2xldCB0O0J5KHQ9VXkoKSkmJihuLmNvZGVWaWV3ZXJDb250YWluZXI9dC5maXJzdCl9fSxpbnB1dHM6e2xpbmVzOiJsaW5lcyIsZm9jdXNlZExpbmVubzoiZm9jdXNlZExpbmVubyIsbW9uYWNvOiJtb25hY28iLHVzZURhcmtNb2RlOiJ1c2VEYXJrTW9kZSJ9LGZlYXR1cmVzOltxb10sZGVjbHM6Mix2YXJzOjEsY29uc3RzOltbImRldGVjdFJlc2l6ZSIsIiIsMSwiY29kZS12aWV3ZXItY29udGFpbmVyIiwzLCJyZXNpemVFdmVudERlYm91bmNlUGVyaW9kSW5NcyIsIm9uUmVzaXplIl0sWyJjb2RlVmlld2VyQ29udGFpbmVyIiwiIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihDZigwLCJkaXYiLDAsMSksUmYoIm9uUmVzaXplIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uUmVzaXplKCl9KSksTWYoKSksMiZlJiZiZigicmVzaXplRXZlbnREZWJvdW5jZVBlcmlvZEluTXMiLG4uUkVTSVpFX0RFQk9VTkNFX0lOVEVSVkFMX01TKX0sZGlyZWN0aXZlczpbJFFdLHN0eWxlczpbIi5jb2RlLXZpZXdlci1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdIHtcbiAgaGVpZ2h0OiAxMDAlO1xufVxuXG5bX25naG9zdC0lQ09NUCVdICAgICAuaGlnaGxpZ2h0LWd1dHRlciB7XG4gIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAxMTEsIDAsIDAuNyk7XG4gIHdpZHRoOiA1cHggIWltcG9ydGFudDtcbn1cblxuW19uZ2hvc3QtJUNPTVAlXSAgICAgLmhpZ2hsaWdodC1saW5lIHtcbiAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDExMSwgMCwgMC4zKTtcbn0iXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoZSQsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3Rvcjoic291cmNlLWNvZGUtY29tcG9uZW50Iix0ZW1wbGF0ZVVybDoiLi9zb3VyY2VfY29kZV9jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsiLi9zb3VyY2VfY29kZV9jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaH1dfV0sbnVsbCx7bGluZXM6W3t0eXBlOlJffV0sZm9jdXNlZExpbmVubzpbe3R5cGU6Ul99XSxtb25hY286W3t0eXBlOlJffV0sdXNlRGFya01vZGU6W3t0eXBlOlJffV0sY29kZVZpZXdlckNvbnRhaW5lcjpbe3R5cGU6YXIsYXJnczpbImNvZGVWaWV3ZXJDb250YWluZXIiLHtzdGF0aWM6ITAscmVhZDpLaH1dfV19KTtjbGFzcyBuJHtjb25zdHJ1Y3Rvcigpe3RoaXMubGluZXM9bnVsbCx0aGlzLmZvY3VzZWRMaW5lbm89bnVsbCx0aGlzLnVzZURhcmtNb2RlPSExLHRoaXMubW9uYWNvJD1udWxsfW5nT25Jbml0KCl7dGhpcy5tb25hY28kPVB0KEpRKCkpLnBpcGUoVnQoKCgpPT53aW5kb3cubW9uYWNvKSkpfX1mdW5jdGlvbiBvJCh0LGUpe2lmKDEmdCYmKENmKDAsImRpdiIsNiksUHUoMSksTWYoKSksMiZ0KXtjb25zdCB0PXpmKCk7RGMoMSksa3UoIiAiLHQuZm9jdXNlZFNvdXJjZUxpbmVTcGVjLmZpbGVfcGF0aCwiICIpfX1mdW5jdGlvbiBpJCh0LGUpezEmdCYmKENmKDAsImRpdiIsNyksUHUoMSwiIE5vIGZpbGUgc2VsZWN0ZWQuIENsaWNrIGEgbGluZSBudW1iZXIgaW4gdGhlIFN0YWNrIFRyYWNlIHNlY3Rpb24gdG8gc2hvdyB0aGUgc291cmNlIGNvZGUuICIpLE1mKCkpfWZ1bmN0aW9uIGEkKHQsZSl7aWYoMSZ0JiZ2ZigwLCJzb3VyY2UtY29kZSIsOCksMiZ0KXtjb25zdCB0PXpmKCk7YmYoImxpbmVzIix0LmZvY3VzZWRTb3VyY2VGaWxlQ29udGVudC5saW5lcykoImZvY3VzZWRMaW5lbm8iLHQuZm9jdXNlZFNvdXJjZUxpbmVTcGVjLmxpbmVubykoInVzZURhcmtNb2RlIix0LnVzZURhcmtNb2RlKX19biQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fG4kKX0sbiQuybVjbXA9c28oe3R5cGU6biQsc2VsZWN0b3JzOltbInNvdXJjZS1jb2RlIl1dLGlucHV0czp7bGluZXM6ImxpbmVzIixmb2N1c2VkTGluZW5vOiJmb2N1c2VkTGluZW5vIix1c2VEYXJrTW9kZToidXNlRGFya01vZGUifSxkZWNsczoyLHZhcnM6Nixjb25zdHM6W1szLCJsaW5lcyIsImZvY3VzZWRMaW5lbm8iLCJtb25hY28iLCJ1c2VEYXJrTW9kZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYodmYoMCwic291cmNlLWNvZGUtY29tcG9uZW50IiwwKSxfeSgxLCJhc3luYyIpKSwyJmUmJmJmKCJsaW5lcyIsbi5saW5lcykoImZvY3VzZWRMaW5lbm8iLG4uZm9jdXNlZExpbmVubykoIm1vbmFjbyIsQ3koMSw0LG4ubW9uYWNvJCkpKCJ1c2VEYXJrTW9kZSIsbi51c2VEYXJrTW9kZSl9LGRpcmVjdGl2ZXM6W2UkXSxwaXBlczpbVnZdLGVuY2Fwc3VsYXRpb246Mn0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIobiQsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3Rvcjoic291cmNlLWNvZGUiLHRlbXBsYXRlOidcbiAgICA8c291cmNlLWNvZGUtY29tcG9uZW50XG4gICAgICBbbGluZXNdPSJsaW5lcyJcbiAgICAgIFtmb2N1c2VkTGluZW5vXT0iZm9jdXNlZExpbmVubyJcbiAgICAgIFttb25hY29dPSJtb25hY28kIHwgYXN5bmMiXG4gICAgICBbdXNlRGFya01vZGVdPSJ1c2VEYXJrTW9kZSJcbiAgICA+PC9zb3VyY2UtY29kZS1jb21wb25lbnQ+XG4gICd9XX1dLChmdW5jdGlvbigpe3JldHVybltdfSkse2xpbmVzOlt7dHlwZTpSX31dLGZvY3VzZWRMaW5lbm86W3t0eXBlOlJffV0sdXNlRGFya01vZGU6W3t0eXBlOlJffV19KTtjbGFzcyByJHtjb25zdHJ1Y3Rvcigpe3RoaXMuZm9jdXNlZFNvdXJjZUZpbGVDb250ZW50PW51bGwsdGhpcy5mb2N1c2VkU291cmNlTGluZVNwZWM9bnVsbH19ciQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHIkKX0sciQuybVjbXA9c28oe3R5cGU6ciQsc2VsZWN0b3JzOltbInNvdXJjZS1maWxlcy1jb21wb25lbnQiXV0saW5wdXRzOntmb2N1c2VkU291cmNlRmlsZUNvbnRlbnQ6ImZvY3VzZWRTb3VyY2VGaWxlQ29udGVudCIsZm9jdXNlZFNvdXJjZUxpbmVTcGVjOiJmb2N1c2VkU291cmNlTGluZVNwZWMiLHVzZURhcmtNb2RlOiJ1c2VEYXJrTW9kZSJ9LGRlY2xzOjgsdmFyczozLGNvbnN0czpbWzEsInNvdXJjZS1maWxlcy1jb250YWluZXIiXSxbMSwiaGVhZGVyLXNlY3Rpb24iXSxbMSwidGl0bGUtdGFnIl0sWyJjbGFzcyIsImZpbGUtbGFiZWwiLDQsIm5nSWYiLCJuZ0lmRWxzZSJdLFsibm9GaWxlU2VsZWN0ZWQiLCIiXSxbMywibGluZXMiLCJmb2N1c2VkTGluZW5vIiwidXNlRGFya01vZGUiLDQsIm5nSWYiXSxbMSwiZmlsZS1sYWJlbCJdLFsxLCJuby1maWxlLXNlbGVjdGVkIl0sWzMsImxpbmVzIiwiZm9jdXNlZExpbmVubyIsInVzZURhcmtNb2RlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJihDZigwLCJkaXYiLDApLENmKDEsImRpdiIsMSksQ2YoMiwiZGl2IiwyKSxQdSgzLCJTb3VyY2UgQ29kZSIpLE1mKCksSG0oNCxvJCwyLDEsImRpdiIsMyksSG0oNSxpJCwyLDAsIm5nLXRlbXBsYXRlIixudWxsLDQscXkpLE1mKCksSG0oNyxhJCwxLDMsInNvdXJjZS1jb2RlIiw1KSxNZigpKSwyJmUpe2NvbnN0IHQ9Rm0oNik7RGMoNCksYmYoIm5nSWYiLG51bGwhPT1uLmZvY3VzZWRTb3VyY2VMaW5lU3BlYykoIm5nSWZFbHNlIix0KSxEYygzKSxiZigibmdJZiIsbnVsbCE9PW4uZm9jdXNlZFNvdXJjZUZpbGVDb250ZW50JiZudWxsIT09bi5mb2N1c2VkU291cmNlTGluZVNwZWMmJm51bGwhPT1uLmZvY3VzZWRTb3VyY2VGaWxlQ29udGVudC5saW5lcyl9fSxkaXJlY3RpdmVzOltQdixuJF0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCB0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9LmhlYWRlci1zZWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZWJlYmViO2Rpc3BsYXk6ZmxleDtoZWlnaHQ6MjRweDtwYWRkaW5nLWJvdHRvbTo2cHg7dmVydGljYWwtYWxpZ246bWlkZGxlO3doaXRlLXNwYWNlOm5vd3JhcDt3aWR0aDoxMDAlfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5oZWFkZXItc2VjdGlvbltfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5oZWFkZXItc2VjdGlvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbToxcHggc29saWQgIzU1NX0uZmlsZS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTppbmxpbmUtYmxvY2s7Zm9udC13ZWlnaHQ6bm9ybWFsO3doaXRlLXNwYWNlOm5vcm1hbDtvdmVyZmxvdy13cmFwOmFueXdoZXJlO292ZXJmbG93LXk6YXV0bztwYWRkaW5nOjAgMjBweH0ubm8tZmlsZS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTppbmxpbmUtYmxvY2s7Y29sb3I6IzY2NjtwYWRkaW5nOjAgMjBweDt3aGl0ZS1zcGFjZTpub3JtYWx9LnNvdXJjZS1maWxlcy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Zm9udC1mYW1pbHk6IlJvYm90byBNb25vIixtb25vc3BhY2U7Zm9udC1zaXplOjEwcHg7aGVpZ2h0OjEwMCV9LnRpdGxlLXRhZ1tfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTppbmxpbmUtYmxvY2s7Zm9udC13ZWlnaHQ6Ym9sZDtoZWlnaHQ6MTAwJTtwYWRkaW5nLWxlZnQ6NnB4O3ZlcnRpY2FsLWFsaWduOnRvcH1zb3VyY2UtY29kZVtfbmdjb250ZW50LSVDT01QJV17ZmxleC1ncm93OjE7d2lkdGg6MTAwJX0nXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIociQsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3Rvcjoic291cmNlLWZpbGVzLWNvbXBvbmVudCIsdGVtcGxhdGVVcmw6Ii4vc291cmNlX2ZpbGVzX2NvbXBvbmVudC5uZy5odG1sIixzdHlsZVVybHM6WyIuL3NvdXJjZV9maWxlc19jb21wb25lbnQuY3NzIl19XX1dLG51bGwse2ZvY3VzZWRTb3VyY2VGaWxlQ29udGVudDpbe3R5cGU6Ul99XSxmb2N1c2VkU291cmNlTGluZVNwZWM6W3t0eXBlOlJffV0sdXNlRGFya01vZGU6W3t0eXBlOlJffV19KTtjbGFzcyBzJHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5mb2N1c2VkU291cmNlRmlsZUNvbnRlbnQkPXRoaXMuc3RvcmUuc2VsZWN0KGZKKSx0aGlzLmZvY3VzZWRTb3VyY2VMaW5lU3BlYyQ9dGhpcy5zdG9yZS5zZWxlY3QodUopLHRoaXMudXNlRGFya01vZGUkPXRoaXMuc3RvcmUuc2VsZWN0KEZEKX19cyQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHMkKShnZihpUykpfSxzJC7JtWNtcD1zbyh7dHlwZTpzJCxzZWxlY3RvcnM6W1sidGYtZGVidWdnZXItdjItc291cmNlLWZpbGVzIl1dLGRlY2xzOjQsdmFyczo5LGNvbnN0czpbWzMsImZvY3VzZWRTb3VyY2VGaWxlQ29udGVudCIsImZvY3VzZWRTb3VyY2VMaW5lU3BlYyIsInVzZURhcmtNb2RlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJih2ZigwLCJzb3VyY2UtZmlsZXMtY29tcG9uZW50IiwwKSxfeSgxLCJhc3luYyIpLF95KDIsImFzeW5jIiksX3koMywiYXN5bmMiKSksMiZlJiZiZigiZm9jdXNlZFNvdXJjZUZpbGVDb250ZW50IixDeSgxLDMsbi5mb2N1c2VkU291cmNlRmlsZUNvbnRlbnQkKSkoImZvY3VzZWRTb3VyY2VMaW5lU3BlYyIsQ3koMiw1LG4uZm9jdXNlZFNvdXJjZUxpbmVTcGVjJCkpKCJ1c2VEYXJrTW9kZSIsQ3koMyw3LG4udXNlRGFya01vZGUkKSl9LGRpcmVjdGl2ZXM6W3IkXSxwaXBlczpbVnZdLGVuY2Fwc3VsYXRpb246Mn0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIocyQsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoidGYtZGVidWdnZXItdjItc291cmNlLWZpbGVzIix0ZW1wbGF0ZTonXG4gICAgPHNvdXJjZS1maWxlcy1jb21wb25lbnRcbiAgICAgIFtmb2N1c2VkU291cmNlRmlsZUNvbnRlbnRdPSJmb2N1c2VkU291cmNlRmlsZUNvbnRlbnQkIHwgYXN5bmMiXG4gICAgICBbZm9jdXNlZFNvdXJjZUxpbmVTcGVjXT0iZm9jdXNlZFNvdXJjZUxpbmVTcGVjJCB8IGFzeW5jIlxuICAgICAgW3VzZURhcmtNb2RlXT0idXNlRGFya01vZGUkIHwgYXN5bmMiXG4gICAgPjwvc291cmNlLWZpbGVzLWNvbXBvbmVudD5cbiAgJ31dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmlTfV19KSxudWxsKTtjb25zdCBsJD1bInN0YWNrRnJhbWVBcnJheSJdO2Z1bmN0aW9uIGMkKHQsZSl7aWYoMSZ0JiYoQ2YoMCwic3BhbiIsMTMpLFB1KDEpLE1mKCkpLDImdCl7Y29uc3QgdD16ZigzKTtEYygxKSxrdSgiICMiLHQuZXhlY3V0aW9uSW5kZXgsIjogIil9fWZ1bmN0aW9uIGQkKHQsZSl7aWYoMSZ0JiYoQ2YoMCwic3BhbiIsMTQpLFB1KDEpLE1mKCkpLDImdCl7Y29uc3QgdD16ZigzKTtEYygxKSxrdSgiICIsdC5vcFR5cGUsIiAiKX19ZnVuY3Rpb24gcCQodCxlKXtpZigxJnQmJihDZigwLCJkaXYiKSxQdSgxLCIgRWFnZXIgZXhlY3V0aW9uICIpLEhtKDIsYyQsMiwxLCJzcGFuIiwxMSksSG0oMyxkJCwyLDEsInNwYW4iLDEyKSxNZigpKSwyJnQpe2NvbnN0IHQ9emYoMik7RGMoMiksYmYoIm5nSWYiLG51bGwhPT10Lm9wVHlwZSksRGMoMSksYmYoIm5nSWYiLG51bGwhPT10Lm9wVHlwZSl9fWZ1bmN0aW9uIG0kKHQsZSl7aWYoMSZ0JiYoQ2YoMCwic3BhbiIsMTYpLFB1KDEpLE1mKCkpLDImdCl7Y29uc3QgdD16ZigzKTtEYygxKSxrdSgnICInLHQub3BOYW1lLCciICcpfX1mdW5jdGlvbiBmJCh0LGUpe2lmKDEmdCYmKENmKDAsInNwYW4iLDE0KSxQdSgxKSxNZigpKSwyJnQpe2NvbnN0IHQ9emYoMyk7RGMoMSksa3UoIiAiLHQub3BUeXBlLCIgIil9fWZ1bmN0aW9uIHUkKHQsZSl7aWYoMSZ0JiYoQ2YoMCwiZGl2IiksUHUoMSwiIENyZWF0aW9uIG9mIGdyYXBoIG9wICIpLEhtKDIsbSQsMiwxLCJzcGFuIiwxNSksSG0oMyxmJCwyLDEsInNwYW4iLDEyKSxNZigpKSwyJnQpe2NvbnN0IHQ9emYoMik7RGMoMiksYmYoIm5nSWYiLG51bGwhPT10Lm9wTmFtZSksRGMoMSksYmYoIm5nSWYiLG51bGwhPT10Lm9wVHlwZSl9fWZ1bmN0aW9uIGckKHQsZSl7aWYoMSZ0JiYoQ2YoMCwic3BhbiIsMTcpLFB1KDEpLE1mKCkpLDImdCl7Y29uc3QgdD16ZigyKTtEYygxKSxrdSgiIChIb3N0IG5hbWU6ICIsdC5zdGFja0ZyYW1lc0ZvckRpc3BsYXlbMF0uaG9zdF9uYW1lLCIpICIpfX1mdW5jdGlvbiBoJCh0LGUpe2lmKDEmdCYmKENmKDAsImRpdiIsNyksQ2YoMSwic3BhbiIpLENmKDIsInNwYW4iLDgpLEhtKDMscCQsNCwyLCJkaXYiLDkpLEhtKDQsdSQsNCwyLCJkaXYiLDkpLE1mKCksTWYoKSxDZig1LCJkaXYiKSxIbSg2LGckLDIsMSwic3BhbiIsMTApLE1mKCksTWYoKSksMiZ0KXtjb25zdCB0PXpmKCk7RGMoMiksYmYoIm5nU3dpdGNoIix0LmNvZGVMb2NhdGlvblR5cGUpLERjKDEpLGJmKCJuZ1N3aXRjaENhc2UiLHQuQ29kZUxvY2F0aW9uVHlwZS5FWEVDVVRJT04pLERjKDEpLGJmKCJuZ1N3aXRjaENhc2UiLHQuQ29kZUxvY2F0aW9uVHlwZS5HUkFQSF9PUF9DUkVBVElPTiksRGMoMiksYmYoIm5nSWYiLG51bGwhPT10LnN0YWNrRnJhbWVzRm9yRGlzcGxheSYmdC5zdGFja0ZyYW1lc0ZvckRpc3BsYXkubGVuZ3RoPjApfX1mdW5jdGlvbiBiJCh0LGUpezEmdCYmKENmKDAsImRpdiIsMTgpLFB1KDEsIiBDbGljayBhbiBlYWdlciBleGVjdXRpb24gb3IgZ3JhcGggb3AgdG8gc2hvdyBpdHMgb3JpZ2luYWwgc3RhY2sgdHJhY2UuICIpLE1mKCkpfWZ1bmN0aW9uIHkkKHQsZSl7MSZ0JiYoQ2YoMCwiZGl2IiwyOCksUHUoMSwiIOKkkyAiKSxNZigpKX1jb25zdCBfJD1mdW5jdGlvbih0LGUpe3JldHVyblt0LGVdfTtmdW5jdGlvbiBDJCh0LGUpe2lmKDEmdCl7Y29uc3QgdD13ZigpO0NmKDAsImRpdiIsMjIpLENmKDEsImRpdiIsMjMpLFB1KDIpLE1mKCksQ2YoMywiZGl2IiwyNCksSG0oNCx5JCwyLDAsImRpdiIsMjUpLENmKDUsImRpdiIsMjYpLFJmKCJjbGljayIsKGZ1bmN0aW9uIGUoKXtjb25zdCBuPVBpKHQpLiRpbXBsaWNpdDtyZXR1cm4gemYoMikub25Tb3VyY2VMaW5lQ2xpY2tlZC5lbWl0KG4pfSkpLFB1KDYpLE1mKCksQ2YoNywiZGl2IiwyNyksUHUoOCksTWYoKSxNZigpLE1mKCl9aWYoMiZ0KXtjb25zdCB0PWUuJGltcGxpY2l0LG49emYoMik7YmYoIm5nQ2xhc3MiLGF5KDYsXyQsdC5iZWxvbmdzVG9Gb2N1c2VkRmlsZT8iZm9jdXNlZC1maWxlIjoiIix0LmZvY3VzZWQ/ImZvY3VzZWQtc3RhY2stZnJhbWUiOiIiKSksRGMoMSksTGYoInRpdGxlIix0LmZpbGVfcGF0aCksRGMoMSksa3UoIiAiLHQuY29uY2lzZV9maWxlX3BhdGgsIiAiKSxEYygyKSxiZigibmdJZiIsbi5zdGlja1RvQm90dG9tbW9zdEZyYW1lSW5Gb2N1c2VkRmlsZSYmdC5mb2N1c2VkKSxEYygyKSxrdSgiIExpbmUgIix0LmxpbmVubywiICIpLERjKDIpLGt1KCIgIix0LmZ1bmN0aW9uX25hbWUsIiAiKX19ZnVuY3Rpb24gTSQodCxlKXtpZigxJnQmJihDZigwLCJkaXYiLDE5LDIwKSxIbSgyLEMkLDksOSwiZGl2IiwyMSksTWYoKSksMiZ0KXtjb25zdCB0PXpmKCk7RGMoMiksYmYoIm5nRm9yT2YiLHQuc3RhY2tGcmFtZXNGb3JEaXNwbGF5KX19ZnVuY3Rpb24gdiQodCxlKXt9Y2xhc3MgeCR7Y29uc3RydWN0b3IoKXt0aGlzLnN0YWNrRnJhbWVzRm9yRGlzcGxheT1udWxsLHRoaXMub25Tb3VyY2VMaW5lQ2xpY2tlZD1uZXcgU3ksdGhpcy5Db2RlTG9jYXRpb25UeXBlPWNLfW5nQWZ0ZXJWaWV3Q2hlY2tlZCgpe2lmKHZvaWQgMD09PXRoaXMuc3RhY2tGcmFtZUFycmF5KXJldHVybjtjb25zdCB0PXRoaXMuc3RhY2tGcmFtZUFycmF5Lm5hdGl2ZUVsZW1lbnQsZT10LnF1ZXJ5U2VsZWN0b3IoIi5mb2N1c2VkLXN0YWNrLWZyYW1lIik7aWYobnVsbCE9PWUpcmV0dXJuIHZvaWQgdGhpcy5zY3JvbGxUb0VsZW1lbnQodCxlKTtjb25zdCBuPXQucXVlcnlTZWxlY3RvcigiLnN0YWNrLWZyYW1lLWNvbnRhaW5lcjpsYXN0LWNoaWxkIik7bnVsbCE9PW4mJnRoaXMuc2Nyb2xsVG9FbGVtZW50KHQsbil9c2Nyb2xsVG9FbGVtZW50KHQsZSl7dC5zY3JvbGxUb3A9ZS5vZmZzZXRUb3B9fXgkLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx4JCl9LHgkLsm1Y21wPXNvKHt0eXBlOngkLHNlbGVjdG9yczpbWyJzdGFjay10cmFjZS1jb21wb25lbnQiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJlZ5KGwkLDUpLDImZSl7bGV0IHQ7QnkodD1VeSgpKSYmKG4uc3RhY2tGcmFtZUFycmF5PXQuZmlyc3QpfX0saW5wdXRzOntjb2RlTG9jYXRpb25UeXBlOiJjb2RlTG9jYXRpb25UeXBlIixvcFR5cGU6Im9wVHlwZSIsb3BOYW1lOiJvcE5hbWUiLGV4ZWN1dGlvbkluZGV4OiJleGVjdXRpb25JbmRleCIsc3RpY2tUb0JvdHRvbW1vc3RGcmFtZUluRm9jdXNlZEZpbGU6InN0aWNrVG9Cb3R0b21tb3N0RnJhbWVJbkZvY3VzZWRGaWxlIixzdGFja0ZyYW1lc0ZvckRpc3BsYXk6InN0YWNrRnJhbWVzRm9yRGlzcGxheSJ9LG91dHB1dHM6e29uU291cmNlTGluZUNsaWNrZWQ6Im9uU291cmNlTGluZUNsaWNrZWQifSxkZWNsczoxMCx2YXJzOjQsY29uc3RzOltbMSwic3RhY2stdHJhY2UtY29udGFpbmVyIl0sWzEsInN0YWNrLXRyYWNlLWhlYWRlciJdLFsxLCJzdGFjay10cmFjZS10aXRsZSJdLFsiY2xhc3MiLCJzdGFjay10cmFjZS1hdXgtaW5mbyIsNCwibmdJZiIsIm5nSWZFbHNlIl0sWyJub1N0YWNrVHJhY2UiLCIiXSxbImNsYXNzIiwic3RhY2stZnJhbWUtYXJyYXkiLDQsIm5nSWYiLCJuZ0lmRWxzZSJdLFsibG9hZGluZ1NlY3Rpb24iLCIiXSxbMSwic3RhY2stdHJhY2UtYXV4LWluZm8iXSxbMSwiY29kZS1sb2NhdGlvbi1vcmlnaW4iLDMsIm5nU3dpdGNoIl0sWzQsIm5nU3dpdGNoQ2FzZSJdLFsiY2xhc3MiLCJzdGFjay10cmFjZS1ob3N0LW5hbWUiLDQsIm5nSWYiXSxbImNsYXNzIiwiZWFnZXItZXhlY3V0aW9uLWluZGV4Iiw0LCJuZ0lmIl0sWyJjbGFzcyIsIm9wLXR5cGUiLDQsIm5nSWYiXSxbMSwiZWFnZXItZXhlY3V0aW9uLWluZGV4Il0sWzEsIm9wLXR5cGUiXSxbImNsYXNzIiwib3AtbmFtZSIsNCwibmdJZiJdLFsxLCJvcC1uYW1lIl0sWzEsInN0YWNrLXRyYWNlLWhvc3QtbmFtZSJdLFsxLCJzdGFjay10cmFjZS1hdXgtaW5mbyIsIm5vLXN0YWNrLXRyYWNlIl0sWzEsInN0YWNrLWZyYW1lLWFycmF5Il0sWyJzdGFja0ZyYW1lQXJyYXkiLCIiXSxbImNsYXNzIiwic3RhY2stZnJhbWUtY29udGFpbmVyIiwzLCJuZ0NsYXNzIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbMSwic3RhY2stZnJhbWUtY29udGFpbmVyIiwzLCJuZ0NsYXNzIl0sWzEsInN0YWNrLWZyYW1lLWZpbGUtcGF0aCIsMywidGl0bGUiXSxbMSwic3RhY2stZnJhbWUtbGluZW5vLWZ1bmN0aW9uIl0sWyJjbGFzcyIsInN0aWNrLXRvLWJvdHRvbW1vc3QtaW5kaWNhdG9yIiwidGl0bGUiLCJTdGlja2luZyB0byB0aGUgYm90dG9tbW9zdCBmcmFtZSBpbiB0aGUgY3VycmVudCBzb3VyY2UgZmlsZSB3aGVuIG5hdmlnYXRpbmcgZXhlY3V0aW9ucyBhbmQgZ3JhcGggb3BzLiBUbyByZW1vdmUgdGhpcyBzdGlja2luZywgY2xpY2sgYW55IG5vbi1ib3R0b21tb3N0IHN0YWNrIGZyYW1lLiIsNCwibmdJZiJdLFsxLCJzdGFjay1mcmFtZS1saW5lbm8iLDMsImNsaWNrIl0sWzEsInN0YWNrLWZyYW1lLWZ1bmN0aW9uIl0sWyJ0aXRsZSIsIlN0aWNraW5nIHRvIHRoZSBib3R0b21tb3N0IGZyYW1lIGluIHRoZSBjdXJyZW50IHNvdXJjZSBmaWxlIHdoZW4gbmF2aWdhdGluZyBleGVjdXRpb25zIGFuZCBncmFwaCBvcHMuIFRvIHJlbW92ZSB0aGlzIHN0aWNraW5nLCBjbGljayBhbnkgbm9uLWJvdHRvbW1vc3Qgc3RhY2sgZnJhbWUuIiwxLCJzdGljay10by1ib3R0b21tb3N0LWluZGljYXRvciJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiYoQ2YoMCwiZGl2IiwwKSxDZigxLCJkaXYiLDEpLENmKDIsInNwYW4iLDIpLFB1KDMsIiBTdGFjayBUcmFjZSAiKSxNZigpLEhtKDQsaCQsNyw0LCJkaXYiLDMpLEhtKDUsYiQsMiwwLCJuZy10ZW1wbGF0ZSIsbnVsbCw0LHF5KSxNZigpLEhtKDcsTSQsMywxLCJkaXYiLDUpLEhtKDgsdiQsMCwwLCJuZy10ZW1wbGF0ZSIsbnVsbCw2LHF5KSxNZigpKSwyJmUpe2NvbnN0IHQ9Rm0oNiksZT1GbSg5KTtEYyg0KSxiZigibmdJZiIsbnVsbCE9PW4uY29kZUxvY2F0aW9uVHlwZSkoIm5nSWZFbHNlIix0KSxEYygzKSxiZigibmdJZiIsbnVsbCE9PW4uc3RhY2tGcmFtZXNGb3JEaXNwbGF5KSgibmdJZkVsc2UiLGUpfX0sZGlyZWN0aXZlczpbUHYsRHYsUnYseHYsQ3ZdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgdHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5mb2N1c2VkLWZpbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OmJvbGR9LmZvY3VzZWQtc3RhY2stZnJhbWVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTExLDAsLjMpfS5uby1zdGFjay10cmFjZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Z3JheX0ub3AtbmFtZVtfbmdjb250ZW50LSVDT01QJV17d29yZC13cmFwOmFueXdoZXJlfS5vcC10eXBlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNlY2VmZjE7Ym9yZGVyOjFweCBzb2xpZCAjZWJlYmViO2JvcmRlci1yYWRpdXM6NHB4O2ZvbnQtZmFtaWx5OiJSb2JvdG8gTW9ubyIsbW9ub3NwYWNlO2ZvbnQtc2l6ZToxMHB4O2hlaWdodDoxNHB4O2xpbmUtaGVpZ2h0OjE0cHg7cGFkZGluZzoxcHggM3B4O3dpZHRoOm1heC1jb250ZW50fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5vcC10eXBlW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLm9wLXR5cGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlcjoxcHggc29saWQgIzU1NX1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAub3AtdHlwZVtfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5vcC10eXBlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiM0NTVhNjR9LnN0YWNrLWZyYW1lLWFycmF5W19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdy14OmhpZGRlbjtvdmVyZmxvdy15OmF1dG87d2lkdGg6Y2FsYygxMDAlIC0gOHB4KX0uc3RhY2stZnJhbWUtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjYTBhMGEwfS5zdGFjay1mcmFtZS1maWxlLXBhdGhbX25nY29udGVudC0lQ09NUCVde21heC13aWR0aDoxODBweDt3aWR0aDoxODBweH0uc3RhY2stZnJhbWUtbGluZW5vLWZ1bmN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXt0ZXh0LWFsaWduOnJpZ2h0O3doaXRlLXNwYWNlOm5vd3JhcH0uc3RhY2stZnJhbWUtZnVuY3Rpb25bX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6aW5saW5lLWJsb2NrO21heC13aWR0aDoyMDBweDtwYWRkaW5nLWxlZnQ6MTBweDt0ZXh0LWFsaWduOmxlZnQ7d2hpdGUtc3BhY2U6bm9ybWFsO3dpZHRoOjIwMHB4O3dvcmQtd3JhcDphbnl3aGVyZX0uc3RhY2stZnJhbWUtbGluZW5vW19uZ2NvbnRlbnQtJUNPTVAlXXtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmlubGluZS1ibG9jazttYXgtd2lkdGg6ODBweDt0ZXh0LWFsaWduOmxlZnQ7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTt3aWR0aDo4MHB4fS5zdGFjay10cmFjZS1hdXgtaW5mb1tfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDoxNXB4O3BhZGRpbmctbGVmdDoyNHB4fS5zdGFjay10cmFjZS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjZWJlYmViO2JveC1zaXppbmc6Ym9yZGVyLWJveDtkaXNwbGF5OmZsZXg7ZmxleC1mbG93OmNvbHVtbjtmb250LXNpemU6MTBweDtmb250LWZhbWlseToiUm9ib3RvIE1vbm8iLG1vbm9zcGFjZTtoZWlnaHQ6MTAwJTttYXJnaW4tbGVmdDo4cHg7bWF4LWhlaWdodDozNjBweDtvdmVyZmxvdy14OmhpZGRlbjtvdmVyZmxvdy15OmhpZGRlbjtwYWRkaW5nLWxlZnQ6OHB4O3dpZHRoOjEwMCV9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLnN0YWNrLXRyYWNlLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5zdGFjay10cmFjZS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjNTU1fS5zdGFjay10cmFjZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MCA1cHggM3B4IC0zcHggI2NjYztwYWRkaW5nLWJvdHRvbTozcHh9LnN0YWNrLXRyYWNlLWhvc3QtbmFtZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Z3JheX0uc3RhY2stdHJhY2UtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OmJvbGR9LnN0aWNrLXRvLWJvdHRvbW1vc3QtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmlubGluZS1ibG9jaztmb250LXdlaWdodDpib2xkO2ZvbnQtc2l6ZToxMnB4O3BhZGRpbmctcmlnaHQ6M3B4fSddfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih4JCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJzdGFjay10cmFjZS1jb21wb25lbnQiLHRlbXBsYXRlVXJsOiIuL3N0YWNrX3RyYWNlX2NvbXBvbmVudC5uZy5odG1sIixzdHlsZVVybHM6WyIuL3N0YWNrX3RyYWNlX2NvbXBvbmVudC5jc3MiXX1dfV0sbnVsbCx7Y29kZUxvY2F0aW9uVHlwZTpbe3R5cGU6Ul99XSxvcFR5cGU6W3t0eXBlOlJffV0sb3BOYW1lOlt7dHlwZTpSX31dLGV4ZWN1dGlvbkluZGV4Olt7dHlwZTpSX31dLHN0aWNrVG9Cb3R0b21tb3N0RnJhbWVJbkZvY3VzZWRGaWxlOlt7dHlwZTpSX31dLHN0YWNrRnJhbWVzRm9yRGlzcGxheTpbe3R5cGU6Ul99XSxvblNvdXJjZUxpbmVDbGlja2VkOlt7dHlwZTpFX31dLHN0YWNrRnJhbWVBcnJheTpbe3R5cGU6YXIsYXJnczpbInN0YWNrRnJhbWVBcnJheSJdfV19KTtjbGFzcyBPJHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5jb2RlTG9jYXRpb25UeXBlJD10aGlzLnN0b3JlLnBpcGUoclMoYlMobEosKHQ9Pm51bGw9PT10P251bGw6dC5jb2RlTG9jYXRpb25UeXBlKSkpKSx0aGlzLm9wVHlwZSQ9dGhpcy5zdG9yZS5waXBlKHJTKGJTKGxKLCh0PT5udWxsPT09dD9udWxsOnQub3BUeXBlKSkpKSx0aGlzLm9wTmFtZSQ9dGhpcy5zdG9yZS5waXBlKHJTKGJTKGxKLCh0PT5udWxsPT09dHx8dC5jb2RlTG9jYXRpb25UeXBlIT09Y0suR1JBUEhfT1BfQ1JFQVRJT04/bnVsbDp0Lm9wTmFtZSkpKSksdGhpcy5leGVjdXRpb25JbmRleCQ9dGhpcy5zdG9yZS5waXBlKHJTKGJTKGxKLCh0PT5udWxsPT09dHx8dC5jb2RlTG9jYXRpb25UeXBlIT09Y0suRVhFQ1VUSU9OP251bGw6dC5leGVjdXRpb25JbmRleCkpKSksdGhpcy5zdGlja1RvQm90dG9tbW9zdEZyYW1lSW5Gb2N1c2VkRmlsZSQ9dGhpcy5zdG9yZS5waXBlKHJTKGdKKSksdGhpcy5zdGFja0ZyYW1lc0ZvckRpc3BsYXkkPXRoaXMuc3RvcmUucGlwZShyUyhiUyhjSix1SiwoKHQsZSk9PntpZihudWxsPT09dClyZXR1cm4gbnVsbDtjb25zdCBuPVtdO2Zvcihjb25zdCBvIG9mIHQpe2NvbnN0e2hvc3RfbmFtZTp0LGZpbGVfcGF0aDppLGxpbmVubzphLGZ1bmN0aW9uX25hbWU6cn09byxzPWkuc3BsaXQoIi8iKSxsPW51bGwhPT1lJiZ0PT09ZS5ob3N0X25hbWUmJmk9PT1lLmZpbGVfcGF0aDtuLnB1c2goe2hvc3RfbmFtZTp0LGZpbGVfcGF0aDppLGNvbmNpc2VfZmlsZV9wYXRoOnNbcy5sZW5ndGgtMV0sbGluZW5vOmEsZnVuY3Rpb25fbmFtZTpyLGJlbG9uZ3NUb0ZvY3VzZWRGaWxlOmwsZm9jdXNlZDpsJiZhPT09ZS5saW5lbm99KX1yZXR1cm4gbn0pKSkpfW9uU291cmNlTGluZUNsaWNrZWQodCl7Y29uc3R7aG9zdF9uYW1lOmUsZmlsZV9wYXRoOm4sbGluZW5vOm8sZnVuY3Rpb25fbmFtZTppfT10O3RoaXMuc3RvcmUuZGlzcGF0Y2gobksoe3N0YWNrRnJhbWU6e2hvc3RfbmFtZTplLGZpbGVfcGF0aDpuLGxpbmVubzpvLGZ1bmN0aW9uX25hbWU6aX19KSl9fWZ1bmN0aW9uIFAkKHQsZSl7MSZ0JiZ2ZigwLCJ0Zi1kZWJ1Z2dlci12Mi1pbmFjdGl2ZSIpfWZ1bmN0aW9uIHckKHQsZSl7MSZ0JiYoQ2YoMCwiZGl2IiwzKSx2ZigxLCJ0Zi1kZWJ1Z2dlci12Mi1hbGVydHMiKSxDZigyLCJkaXYiLDQpLHZmKDMsInRmLWRlYnVnZ2VyLXYyLXRpbWVsaW5lIiksdmYoNCwidGYtZGVidWdnZXItdjItZ3JhcGgiKSxNZigpLHZmKDUsInRmLWRlYnVnZ2VyLXYyLWdyYXBoLWV4ZWN1dGlvbnMiKSxNZigpLENmKDYsImRpdiIsNSksdmYoNywidGYtZGVidWdnZXItdjItc291cmNlLWZpbGVzIiksdmYoOCwidGYtZGVidWdnZXItdjItc3RhY2stdHJhY2UiKSxNZigpKX1PJC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8TyQpKGdmKGlTKSl9LE8kLsm1Y21wPXNvKHt0eXBlOk8kLHNlbGVjdG9yczpbWyJ0Zi1kZWJ1Z2dlci12Mi1zdGFjay10cmFjZSJdXSxkZWNsczo3LHZhcnM6MTgsY29uc3RzOltbMywiY29kZUxvY2F0aW9uVHlwZSIsIm9wVHlwZSIsIm9wTmFtZSIsImV4ZWN1dGlvbkluZGV4Iiwic3RpY2tUb0JvdHRvbW1vc3RGcmFtZUluRm9jdXNlZEZpbGUiLCJzdGFja0ZyYW1lc0ZvckRpc3BsYXkiLCJvblNvdXJjZUxpbmVDbGlja2VkIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihDZigwLCJzdGFjay10cmFjZS1jb21wb25lbnQiLDApLFJmKCJvblNvdXJjZUxpbmVDbGlja2VkIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vblNvdXJjZUxpbmVDbGlja2VkKGUpfSkpLF95KDEsImFzeW5jIiksX3koMiwiYXN5bmMiKSxfeSgzLCJhc3luYyIpLF95KDQsImFzeW5jIiksX3koNSwiYXN5bmMiKSxfeSg2LCJhc3luYyIpLE1mKCkpLDImZSYmYmYoImNvZGVMb2NhdGlvblR5cGUiLEN5KDEsNixuLmNvZGVMb2NhdGlvblR5cGUkKSkoIm9wVHlwZSIsQ3koMiw4LG4ub3BUeXBlJCkpKCJvcE5hbWUiLEN5KDMsMTAsbi5vcE5hbWUkKSkoImV4ZWN1dGlvbkluZGV4IixDeSg0LDEyLG4uZXhlY3V0aW9uSW5kZXgkKSkoInN0aWNrVG9Cb3R0b21tb3N0RnJhbWVJbkZvY3VzZWRGaWxlIixDeSg1LDE0LG4uc3RpY2tUb0JvdHRvbW1vc3RGcmFtZUluRm9jdXNlZEZpbGUkKSkoInN0YWNrRnJhbWVzRm9yRGlzcGxheSIsQ3koNiwxNixuLnN0YWNrRnJhbWVzRm9yRGlzcGxheSQpKX0sZGlyZWN0aXZlczpbeCRdLHBpcGVzOltWdl0sZW5jYXBzdWxhdGlvbjoyfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihPJCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJ0Zi1kZWJ1Z2dlci12Mi1zdGFjay10cmFjZSIsdGVtcGxhdGU6J1xuICAgIDxzdGFjay10cmFjZS1jb21wb25lbnRcbiAgICAgIFtjb2RlTG9jYXRpb25UeXBlXT0iY29kZUxvY2F0aW9uVHlwZSQgfCBhc3luYyJcbiAgICAgIFtvcFR5cGVdPSJvcFR5cGUkIHwgYXN5bmMiXG4gICAgICBbb3BOYW1lXT0ib3BOYW1lJCB8IGFzeW5jIlxuICAgICAgW2V4ZWN1dGlvbkluZGV4XT0iZXhlY3V0aW9uSW5kZXgkIHwgYXN5bmMiXG4gICAgICBbc3RpY2tUb0JvdHRvbW1vc3RGcmFtZUluRm9jdXNlZEZpbGVdPSJcbiAgICAgICAgc3RpY2tUb0JvdHRvbW1vc3RGcmFtZUluRm9jdXNlZEZpbGUkIHwgYXN5bmNcbiAgICAgICJcbiAgICAgIFtzdGFja0ZyYW1lc0ZvckRpc3BsYXldPSJzdGFja0ZyYW1lc0ZvckRpc3BsYXkkIHwgYXN5bmMiXG4gICAgICAob25Tb3VyY2VMaW5lQ2xpY2tlZCk9Im9uU291cmNlTGluZUNsaWNrZWQoJGV2ZW50KSJcbiAgICA+PC9zdGFjay10cmFjZS1jb21wb25lbnQ+XG4gICd9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTppU31dfSksbnVsbCk7Y2xhc3MgayR7Y29uc3RydWN0b3IoKXt0aGlzLnJ1bnM9e30sdGhpcy5ydW5JZHM9W10sdGhpcy5hY3RpdmVSdW5JZD1udWxsfX1rJC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8ayQpfSxrJC7JtWNtcD1zbyh7dHlwZTprJCxzZWxlY3RvcnM6W1siZGVidWdnZXItY29tcG9uZW50Il1dLGlucHV0czp7cnVuczoicnVucyIscnVuSWRzOiJydW5JZHMiLGFjdGl2ZVJ1bklkOiJhY3RpdmVSdW5JZCJ9LGRlY2xzOjQsdmFyczoyLGNvbnN0czpbWzEsImRlYnVnZ2VyLWNvbnRhaW5lciJdLFs0LCJuZ0lmIiwibmdJZkVsc2UiXSxbImRhdGFBdmFpbGFibGUiLCIiXSxbMSwidG9wLXNlY3Rpb24iXSxbMSwidG9wLWNlbnRlci1zZWN0aW9uIl0sWzEsImJvdHRvbS1zZWN0aW9uIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJihDZigwLCJkaXYiLDApLEhtKDEsUCQsMSwwLCJ0Zi1kZWJ1Z2dlci12Mi1pbmFjdGl2ZSIsMSksSG0oMix3JCw5LDAsIm5nLXRlbXBsYXRlIixudWxsLDIscXkpLE1mKCkpLDImZSl7Y29uc3QgdD1GbSgzKTtEYygxKSxiZigibmdJZiIsMD09PW4ucnVuSWRzLmxlbmd0aCkoIm5nSWZFbHNlIix0KX19LGRpcmVjdGl2ZXM6W1B2LFBYLENKLGJRLElRLFlRLHMkLE8kXSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0uYm90dG9tLXNlY3Rpb25bX25nY29udGVudC0lQ09NUCVde2JveC1zaXppbmc6Ym9yZGVyLWJveDtib3JkZXItdG9wOjFweCBzb2xpZCAjZWJlYmViO2Rpc3BsYXk6ZmxleDtmbGV4LWdyb3c6MTtoZWlnaHQ6MzQlO3BhZGRpbmctdG9wOjZweH1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAuYm90dG9tLXNlY3Rpb25bX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuYm90dG9tLXNlY3Rpb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3A6MXB4IHNvbGlkICM1NTV9LmRlYnVnZ2VyLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Ym94LXNpemluZzpib3JkZXItYm94O2hlaWdodDoxMDAlO292ZXJmbG93OmhpZGRlbn0udG9wLXNlY3Rpb25bX25nY29udGVudC0lQ09NUCVde2JveC1zaXppbmc6Ym9yZGVyLWJveDtkaXNwbGF5OmZsZXg7ZmxleC1ncm93OjE7aGVpZ2h0OjY2JTtwYWRkaW5nOjZweCAwfXRmLWRlYnVnZ2VyLXYyLWFsZXJ0c1tfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjZWJlYmViO2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbi1yaWdodDoxMHB4O21pbi13aWR0aDoxNjBweDt3aWR0aDpjYWxjKDE1JSAtIDExcHgpfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIHRmLWRlYnVnZ2VyLXYyLWFsZXJ0c1tfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIHRmLWRlYnVnZ2VyLXYyLWFsZXJ0c1tfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjNTU1fXRmLWRlYnVnZ2VyLXYyLWdyYXBoLWV4ZWN1dGlvbnNbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6aW5saW5lLWJsb2NrO2ZsZXgtZ3JvdzoxO21pbi13aWR0aDo1NDBweDt3aWR0aDo1NDBweH10Zi1kZWJ1Z2dlci12Mi1zb3VyY2UtZmlsZXNbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6aW5saW5lLWJsb2NrO2hlaWdodDoxMDAlO3dpZHRoOjcwJX10Zi1kZWJ1Z2dlci12Mi1zdGFjay10cmFjZVtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTppbmxpbmUtYmxvY2s7ZmxleC1ncm93OjE7aGVpZ2h0OjEwMCU7bWluLXdpZHRoOjU0MHB4O3dpZHRoOjU0MHB4fS50b3AtY2VudGVyLXNlY3Rpb25bX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6aW5saW5lLWJsb2NrO292ZXJmbG93OmF1dG87d2lkdGg6NTUlfXRmLWRlYnVnZ2VyLXYyLXRpbWVsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmJsb2NrfXRmLWRlYnVnZ2VyLXYyLWdyYXBoW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wOjFweCBzb2xpZCAjZWJlYmViO2Rpc3BsYXk6YmxvY2s7bWFyZ2luLXRvcDo1cHh9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgdGYtZGVidWdnZXItdjItZ3JhcGhbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICB0Zi1kZWJ1Z2dlci12Mi1ncmFwaFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcDoxcHggc29saWQgIzU1NX0nXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoayQsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoiZGVidWdnZXItY29tcG9uZW50Iix0ZW1wbGF0ZVVybDoiLi9kZWJ1Z2dlcl9jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsiLi9kZWJ1Z2dlcl9jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaH1dfV0sbnVsbCx7cnVuczpbe3R5cGU6Ul99XSxydW5JZHM6W3t0eXBlOlJffV0sYWN0aXZlUnVuSWQ6W3t0eXBlOlJffV19KTtjbGFzcyBTJHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5ydW5zJD10aGlzLnN0b3JlLnBpcGUoclMoQ0spKSx0aGlzLnJ1bnNJZHMkPXRoaXMuc3RvcmUucGlwZShyUyhiUyhDSywodD0+T2JqZWN0LmtleXModCkpKSkpLHRoaXMuYWN0aXZlUnVuSWQkPXRoaXMuc3RvcmUucGlwZShyUyh2SykpfW5nT25Jbml0KCl7dGhpcy5zdG9yZS5kaXNwYXRjaCh3WCgpKX1uZ09uRGVzdHJveSgpe3RoaXMuc3RvcmUuZGlzcGF0Y2goa1goKSl9fVMkLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxTJCkoZ2YoaVMpKX0sUyQuybVjbXA9c28oe3R5cGU6UyQsc2VsZWN0b3JzOltbInRmLWRlYnVnZ2VyLXYyIl1dLGRlY2xzOjQsdmFyczo5LGNvbnN0czpbWzMsInJ1bnMiLCJydW5JZHMiLCJhY3RpdmVSdW5JZCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYodmYoMCwiZGVidWdnZXItY29tcG9uZW50IiwwKSxfeSgxLCJhc3luYyIpLF95KDIsImFzeW5jIiksX3koMywiYXN5bmMiKSksMiZlJiZiZigicnVucyIsQ3koMSwzLG4ucnVucyQpKSgicnVuSWRzIixDeSgyLDUsbi5ydW5zSWRzJCkpKCJhY3RpdmVSdW5JZCIsQ3koMyw3LG4uYWN0aXZlUnVuSWQkKSl9LGRpcmVjdGl2ZXM6W2skXSxwaXBlczpbVnZdLHN0eWxlczpbIltfbmdob3N0LSVDT01QJV0ge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgfSJdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihTJCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJ0Zi1kZWJ1Z2dlci12MiIsdGVtcGxhdGU6J1xuICAgIDxkZWJ1Z2dlci1jb21wb25lbnRcbiAgICAgIFtydW5zXT0icnVucyQgfCBhc3luYyJcbiAgICAgIFtydW5JZHNdPSJydW5zSWRzJCB8IGFzeW5jIlxuICAgICAgW2FjdGl2ZVJ1bklkXT0iYWN0aXZlUnVuSWQkIHwgYXN5bmMiXG4gICAgPjwvZGVidWdnZXItY29tcG9uZW50PlxuICAnLHN0eWxlczpbIlxuICAgICAgOmhvc3Qge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgfVxuICAgICJdfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6aVN9XX0pLG51bGwpO2NvbnN0IEQkPSJkZWJ1Z2dlci12MiI7ZnVuY3Rpb24gUiQodCxlLG4sbyxpKXtpZihuPD0wfHwhTnVtYmVyLmlzSW50ZWdlcihuKSl0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgcGFnZVNpemU6ICR7bn1gKTtpZihlPm8pdGhyb3cgbmV3IEVycm9yKGBlbmQgaW5kZXggKCR7ZX0pIGV4Y2VlZHMgdG90YWwgbnVtYmVyIG9mIGl0ZW1zICgke299KWApO2lmKGUtdD5uKXRocm93IG5ldyBFcnJvcigiYmVnaW4tZW5kIHNwYW4gZXhjZWVkcyBwYWdlIHNpemUsIHdoaWNoIGlzIG5vdCBhbGxvd2VkIik7Y29uc3QgYT1bXSxyPU1hdGguZmxvb3IodC9uKTsoIShyIGluIGkpfHxpW3JdPG4mJnIqbitpW3JdPG8pJiZhLnB1c2gocik7Y29uc3Qgcz1NYXRoLmZsb29yKChlLTEpL24pO2lmKHMhPT1yKXsoIShzIGluIGkpfHxzKm4raVtzXTxlJiZlPG8pJiZhLnB1c2gocyl9cmV0dXJuIGF9Y2xhc3MgRSR7Y29uc3RydWN0b3IodCxlLG4pe3RoaXMuYWN0aW9ucyQ9dCx0aGlzLnN0b3JlPWUsdGhpcy5kYXRhU291cmNlPW4sdGhpcy5sb2FkRGF0YSQ9V1MoKCgpPT57Y29uc3QgdD10aGlzLmxvYWREZWJ1Z2dlclJ1bnMocGUodGhpcy5vbkRlYnVnZ2VyRGF0YVBvbGwoKSx0aGlzLm9uQ29yZVJlbG9hZCgpKSkucGlwZShJZSgpKSxlPXRoaXMubG9hZFNvdXJjZUZpbGVMaXN0KHQpLG49dGhpcy5jcmVhdGVOdW1FeGVjdXRpb25Mb2FkZXIodCksbz10aGlzLmNyZWF0ZU51bUFsZXJ0c0FuZEJyZWFrZG93bkxvYWRlcih0KSxpPXRoaXMub25BbGVydFR5cGVGb2N1c2VkKCksYT10aGlzLmZldGNoRXhlY3V0aW9uRGlnZXN0c0ZvckFsZXJ0VHlwZUZvY3VzKGkpLHI9dGhpcy5jcmVhdGVJbml0aWFsRXhlY3V0aW9uRGV0ZWN0b3IobikucGlwZShJZSgpKSxzPXRoaXMuY3JlYXRlRXhlY3V0aW9uRGlnZXN0TG9hZGVyKHBlKHRoaXMub25FeGVjdXRpb25TY3JvbGwoKSx0aGlzLmNyZWF0ZUluaXRpYWxFeGVjdXRpb25EaWdlc3QociksYSkpLGw9dGhpcy5jcmVhdGVFeGVjdXRpb25EYXRhQW5kU3RhY2tGcmFtZXNMb2FkZXIocGUodGhpcy5vbkV4ZWN1dGlvbkRpZ2VzdEZvY3VzZWQoKSxyLnBpcGUocWUodGhpcy5zdG9yZS5zZWxlY3QodkspLHRoaXMuc3RvcmUuc2VsZWN0KGlKKSksVnQoKChbLHQsZV0pPT4oe2FjdGl2ZVJ1bklkOnQsbG9hZGVkRXhlY3V0aW9uRGF0YTplLGZvY3VzSW5kZXg6MH0pKSkpKSk7cmV0dXJuIHBlKG8scyxsLHRoaXMuY3JlYXRlTnVtR3JhcGhFeGVjdXRpb25Mb2FkZXIodCksZSx0aGlzLm9uU291cmNlRmlsZUZvY3VzZWQoKSx0aGlzLmxvYWRHcmFwaEV4ZWN1dGlvblBhZ2VzKHRoaXMub25HcmFwaEV4ZWN1dGlvblNjcm9sbCgpKSx0aGlzLmxvYWRHcmFwaE9wU3RhY2tGcmFtZXModGhpcy5sb2FkR3JhcGhPcEluZm8oKSkpLnBpcGUoVnQoKCgpPT4oe30pKSkpfSkse2Rpc3BhdGNoOiExfSl9b25EZWJ1Z2dlckRhdGFQb2xsKCl7cmV0dXJuIHRoaXMuYWN0aW9ucyQucGlwZSgkUyh3WCksVmUoKHQ9PihmdW5jdGlvbiBlKHQsbixvKXtyZXR1cm4gdC5waXBlKHplKCh0PT50LnBpcGUocWUobiksT2UoKChbLHRdKT0+ZGUodCkpKSkpKSxqZShvKSxWdCgoKCk9Pnt9KSkpfSkoenQodCksdGhpcy5zdG9yZS5zZWxlY3QoeEspLnBpcGUoVnQoKHQ9PihmdW5jdGlvbiBlKHQpe3JldHVybiB0PjZlND82ZTQ6dD40ZTM/dDoyZTN9KSh0KSkpKSx0aGlzLmFjdGlvbnMkLnBpcGUoJFMoa1gpKSkpKSxXZSgoKCk9PnRoaXMuc3RvcmUuZGlzcGF0Y2goU1goKSkpKSxWdCgoKCk9Pnt9KSkpfW9uQ29yZVJlbG9hZCgpe3JldHVybiBwZSh0aGlzLmFjdGlvbnMkLnBpcGUoJFMoSkUsUUUpKSx0aGlzLmFjdGlvbnMkLnBpcGUoJFMoWkUpKS5waXBlKHFlKHRoaXMuc3RvcmUuc2VsZWN0KE1LKSksdWUoKChbLHRdKT0+dC5zdGF0ZT09PVVFLk5PVF9MT0FERUR8fHQuc3RhdGU9PT1VRS5GQUlMRUQmJm51bGw9PT10Lmxhc3RMb2FkZWRUaW1lSW5NcykpKSkucGlwZShxZSh0aGlzLnN0b3JlLnNlbGVjdChlVCkpLHVlKCgoWyx0XSk9PnQ9PT1EJCkpLFdlKCgoKT0+dGhpcy5zdG9yZS5kaXNwYXRjaChTWCgpKSkpLFZ0KCgoKT0+e30pKSl9bG9hZERlYnVnZ2VyUnVucyh0KXtyZXR1cm4gdC5waXBlKHFlKHRoaXMuc3RvcmUuc2VsZWN0KE1LKSksdWUoKChbLHtzdGF0ZTp0fV0pPT50IT09VUUuTE9BRElORykpLFdlKCgoKT0+dGhpcy5zdG9yZS5kaXNwYXRjaChEWCgpKSkpLCR0KCgoKT0+dGhpcy5kYXRhU291cmNlLmZldGNoUnVucygpLnBpcGUoV2UoKHQ9Pnt0aGlzLnN0b3JlLmRpc3BhdGNoKFJYKHtydW5zOnR9KSl9KSksVnQoKCgpPT57fSkpKSkpKX1jcmVhdGVOdW1FeGVjdXRpb25Mb2FkZXIodCl7cmV0dXJuIHQucGlwZShxZSh0aGlzLnN0b3JlLnNlbGVjdChDSyksdGhpcy5zdG9yZS5zZWxlY3QoQUspKSx1ZSgoKFssdCxlXSk9Pk9iamVjdC5rZXlzKHQpLmxlbmd0aD4wJiZlLnN0YXRlIT09VUUuTE9BRElORykpLFdlKCgoKT0+dGhpcy5zdG9yZS5kaXNwYXRjaChJWCgpKSkpLCR0KCgoWyx0XSk9Pntjb25zdCBlPU9iamVjdC5rZXlzKHQpWzBdO3JldHVybiB0aGlzLmRhdGFTb3VyY2UuZmV0Y2hFeGVjdXRpb25EaWdlc3RzKGUsMCwwKS5waXBlKFdlKCh0PT57dGhpcy5zdG9yZS5kaXNwYXRjaChIWCh7bnVtRXhlY3V0aW9uczp0Lm51bV9kaWdlc3RzfSkpfSkpLFZ0KCgoKT0+e30pKSl9KSkpfWNyZWF0ZU51bUdyYXBoRXhlY3V0aW9uTG9hZGVyKHQpe3JldHVybiB0LnBpcGUocWUodGhpcy5zdG9yZS5zZWxlY3QoQ0spLHRoaXMuc3RvcmUuc2VsZWN0KEJLKSksdWUoKChbLHQsZV0pPT5PYmplY3Qua2V5cyh0KS5sZW5ndGg+MCYmZS5zdGF0ZSE9PVVFLkxPQURJTkcpKSxXZSgoKCk9PnRoaXMuc3RvcmUuZGlzcGF0Y2goR1goKSkpKSwkdCgoKFssdF0pPT57Y29uc3QgZT1PYmplY3Qua2V5cyh0KVswXTtyZXR1cm4gdGhpcy5kYXRhU291cmNlLmZldGNoR3JhcGhFeGVjdXRpb25EaWdlc3RzKGUsMCwwKS5waXBlKFdlKCh0PT57dGhpcy5zdG9yZS5kaXNwYXRjaChZWCh7bnVtR3JhcGhFeGVjdXRpb25zOnQubnVtX2RpZ2VzdHN9KSl9KSksVnQoKCgpPT57fSkpKX0pKSl9Y3JlYXRlTnVtQWxlcnRzQW5kQnJlYWtkb3duTG9hZGVyKHQpe3JldHVybiB0LnBpcGUocWUodGhpcy5zdG9yZS5zZWxlY3QoQ0spLHRoaXMuc3RvcmUuc2VsZWN0KFBLKSksdWUoKChbLHQsZV0pPT5PYmplY3Qua2V5cyh0KS5sZW5ndGg+MCYmZS5zdGF0ZSE9PVVFLkxPQURJTkcpKSxXZSgoKCk9PnRoaXMuc3RvcmUuZGlzcGF0Y2goQVgoKSkpKSwkdCgoKFssdF0pPT57Y29uc3QgZT1PYmplY3Qua2V5cyh0KVswXTtyZXR1cm4gdGhpcy5kYXRhU291cmNlLmZldGNoQWxlcnRzKGUsMCwwKS5waXBlKFdlKCh0PT57dGhpcy5zdG9yZS5kaXNwYXRjaChUWCh7bnVtQWxlcnRzOnQubnVtX2FsZXJ0cyxhbGVydHNCcmVha2Rvd246dC5hbGVydHNfYnJlYWtkb3dufSkpfSkpLFZ0KCgoKT0+e30pKSl9KSkpfWNyZWF0ZUluaXRpYWxFeGVjdXRpb25EZXRlY3Rvcih0KXtyZXR1cm4gdC5waXBlKHFlKHRoaXMuc3RvcmUuc2VsZWN0KE5LKSx0aGlzLnN0b3JlLnNlbGVjdChUSykpLHVlKCgoWyx0LGVdKT0+dD4wJiYwPT09T2JqZWN0LmtleXMoZS5wYWdlTG9hZGVkU2l6ZXMpLmxlbmd0aCkpLFZ0KCgoKT0+e30pKSl9Y3JlYXRlSW5pdGlhbEV4ZWN1dGlvbkRpZ2VzdCh0KXtyZXR1cm4gdC5waXBlKHFlKHRoaXMuc3RvcmUuc2VsZWN0KE5LKSx0aGlzLnN0b3JlLnNlbGVjdCh2SyksdGhpcy5zdG9yZS5zZWxlY3QoSUspKSx1ZSgoKFssLHRdKT0+bnVsbCE9PXQpKSxWdCgoKFssdCxlLG5dKT0+KHtiZWdpbjowLGVuZDpNYXRoLm1pbih0LG4pLHJ1bklkOmV9KSkpKX1vbkV4ZWN1dGlvblNjcm9sbCgpe3JldHVybiB0aGlzLmFjdGlvbnMkLnBpcGUoJFMoQlgsVlgsalgpLHFlKHRoaXMuc3RvcmUuc2VsZWN0KHZLKSx0aGlzLnN0b3JlLnNlbGVjdCh6SyksdGhpcy5zdG9yZS5zZWxlY3QoTkspLHRoaXMuc3RvcmUuc2VsZWN0KEhLKSx0aGlzLnN0b3JlLnNlbGVjdChJSykpLHVlKCgoW3RdKT0+bnVsbCE9PXQpKSxWdCgoKFssdCxlLG4sbyxpXSk9Pih7cnVuSWQ6dCxiZWdpbjplLGVuZDpNYXRoLm1pbihuLGUrbykscGFnZVNpemU6aX0pKSkscWUodGhpcy5zdG9yZS5zZWxlY3QoVEspKSxWdCgoKFt0LGVdKT0+KHtwcm9wczp0LGxvYWRlZDplLG1pc3NpbmdQYWdlczpSJCh0LmJlZ2luLHQuZW5kLHQucGFnZVNpemUsZS5udW1FeGVjdXRpb25zLGUucGFnZUxvYWRlZFNpemVzKX0pKSksdWUoKCh7bWlzc2luZ1BhZ2VzOnR9KT0+dC5sZW5ndGg+MCkpLFZ0KCgoe3Byb3BzOnQsbG9hZGVkOmUsbWlzc2luZ1BhZ2VzOm59KT0+e2NvbnN0e3J1bklkOm8scGFnZVNpemU6aX09dDtyZXR1cm57YmVnaW46blswXSppLGVuZDpNYXRoLm1pbihlLm51bUV4ZWN1dGlvbnMsKG5bbi5sZW5ndGgtMV0rMSkqaSkscnVuSWQ6b319KSkpfWNyZWF0ZUV4ZWN1dGlvbkRpZ2VzdExvYWRlcih0KXtyZXR1cm4gdC5waXBlKHFlKHRoaXMuc3RvcmUuc2VsZWN0KFRLKSksdWUoKChbe2JlZ2luOnQsZW5kOmV9LG5dKT0+ZT50JiYhKGZ1bmN0aW9uIG8odCxlLG4pe2lmKGU+PW4pdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBiZWdpbiB0byBiZSBsZXNzIHRoYW4gZW5kLCBidXQgZ290IGJlZ2luPSR7ZX0sIGVuZD0ke259YCk7cmV0dXJuLTEhPT10LmZpbmRJbmRleCgodD0+dC5iZWdpbj49ZSYmdC5lbmQ8PW4pKX0pKG4ubG9hZGluZ1Jhbmdlcyx0LGUpKSksV2UoKChbe2JlZ2luOnQsZW5kOmV9XSk9Pnt0aGlzLnN0b3JlLmRpc3BhdGNoKEZYKHtiZWdpbjp0LGVuZDplfSkpfSkpLCR0KCgoW3tydW5JZDp0LGJlZ2luOmUsZW5kOm59XSk9PnRoaXMuZGF0YVNvdXJjZS5mZXRjaEV4ZWN1dGlvbkRpZ2VzdHModCxlLG4pLnBpcGUoV2UoKHQ9Pnt0aGlzLnN0b3JlLmRpc3BhdGNoKExYKHQpKX0pKSxWdCgoKCk9Pnt9KSkpKSkpfW9uRXhlY3V0aW9uRGlnZXN0Rm9jdXNlZCgpe3JldHVybiB0aGlzLmFjdGlvbnMkLnBpcGUoJFMoVVgpLHFlKHRoaXMuc3RvcmUuc2VsZWN0KHZLKSx0aGlzLnN0b3JlLnNlbGVjdChpSiksdGhpcy5zdG9yZS5zZWxlY3QoekspKSxWdCgoKFt0LGUsbixvXSk9Pih7YWN0aXZlUnVuSWQ6ZSxsb2FkZWRFeGVjdXRpb25EYXRhOm4sZm9jdXNJbmRleDpvK3QuZGlzcGxheUluZGV4fSkpKSl9Y3JlYXRlRXhlY3V0aW9uRGF0YUFuZFN0YWNrRnJhbWVzTG9hZGVyKHQpe3JldHVybiB0LnBpcGUodWUoKCh7YWN0aXZlUnVuSWQ6dCxsb2FkZWRFeGVjdXRpb25EYXRhOmUsZm9jdXNJbmRleDpufSk9Pm51bGwhPT10JiZudWxsIT09biYmdm9pZCAwPT09ZVtuXSkpLCR0KCgoe2FjdGl2ZVJ1bklkOnQsZm9jdXNJbmRleDplfSk9Pntjb25zdCBuPWUsbz1uKzE7cmV0dXJuIHRoaXMuZGF0YVNvdXJjZS5mZXRjaEV4ZWN1dGlvbkRhdGEodCxuLG8pLnBpcGUoV2UoKHQ9Pnt0aGlzLnN0b3JlLmRpc3BhdGNoKFdYKHQpKX0pKSxWdCgodD0+KHtleGVjdXRpb25EYXRhOnQsYmVnaW46bixlbmQ6b30pKSkpfSkpLFZ0KCgoe2V4ZWN1dGlvbkRhdGE6dH0pPT50LmV4ZWN1dGlvbnNbMF0pKSxxZSh0aGlzLnN0b3JlLnNlbGVjdCh2SyksdGhpcy5zdG9yZS5zZWxlY3QockopKSx1ZSgoKFt0LGUsbl0pPT57aWYobnVsbD09PWUpcmV0dXJuITE7Zm9yKGNvbnN0IGUgb2YgdC5zdGFja19mcmFtZV9pZHMpaWYodm9pZCAwPT09bltlXSlyZXR1cm4hMDtyZXR1cm4hMX0pKSwkdCgoKFt0LGVdKT0+e2NvbnN0IG49dC5zdGFja19mcmFtZV9pZHM7cmV0dXJuIHRoaXMuZGF0YVNvdXJjZS5mZXRjaFN0YWNrRnJhbWVzKGUsbikucGlwZShXZSgodD0+e2NvbnN0IGU9e307Zm9yKGxldCBvPTA7bzxuLmxlbmd0aDsrK28pZVtuW29dXT10LnN0YWNrX2ZyYW1lc1tvXTt0aGlzLnN0b3JlLmRpc3BhdGNoKGFLKHtzdGFja0ZyYW1lczplfSkpfSkpLFZ0KCgoKT0+e30pKSl9KSkpfW9uR3JhcGhFeGVjdXRpb25TY3JvbGwoKXtyZXR1cm4gdGhpcy5hY3Rpb25zJC5waXBlKCRTKFhYKSxDZSgxMDApLHFlKHRoaXMuc3RvcmUuc2VsZWN0KHZLKSx0aGlzLnN0b3JlLnNlbGVjdChWSyksdGhpcy5zdG9yZS5zZWxlY3QoakspKSx1ZSgoKFssdCxlXSk9Pm51bGwhPT10JiZlPjApKSxWdCgoKFssdCxlLG5dKT0+KHtydW5JZDp0LG51bUdyYXBoRXhlY3V0aW9uczplLHNjcm9sbEJlZ2luSW5kZXg6bn0pKSkscWUodGhpcy5zdG9yZS5zZWxlY3QoV0spLHRoaXMuc3RvcmUuc2VsZWN0KFVLKSx0aGlzLnN0b3JlLnNlbGVjdChHSyksdGhpcy5zdG9yZS5zZWxlY3QoWUspKSxWdCgoKFt7cnVuSWQ6dCxudW1HcmFwaEV4ZWN1dGlvbnM6ZSxzY3JvbGxCZWdpbkluZGV4Om59LG8saSxhLHJdKT0+e2xldCBzPVIkKG4sTWF0aC5taW4obitpLGUpLG8sZSxyKTtyZXR1cm4gcz1zLmZpbHRlcigodD0+LTE9PT1hLmluZGV4T2YodCkpKSx7cnVuSWQ6dCxtaXNzaW5nUGFnZXM6cyxwYWdlU2l6ZTpvLG51bUdyYXBoRXhlY3V0aW9uczplfX0pKSl9bG9hZEdyYXBoRXhlY3V0aW9uUGFnZXModCl7cmV0dXJuIHQucGlwZSh1ZSgoKHttaXNzaW5nUGFnZXM6dH0pPT50Lmxlbmd0aD4wKSksV2UoKCh7bWlzc2luZ1BhZ2VzOnR9KT0+e3QuZm9yRWFjaCgodD0+e3RoaXMuc3RvcmUuZGlzcGF0Y2gocVgoe3BhZ2VJbmRleDp0fSkpfSkpfSkpLCR0KCgoe3J1bklkOnQsbWlzc2luZ1BhZ2VzOmUscGFnZVNpemU6bixudW1HcmFwaEV4ZWN1dGlvbnM6b30pPT57Y29uc3QgaT1lWzBdKm4sYT1NYXRoLm1pbigoZVtlLmxlbmd0aC0xXSsxKSpuLG8pO3JldHVybiB0aGlzLmRhdGFTb3VyY2UuZmV0Y2hHcmFwaEV4ZWN1dGlvbkRhdGEodCxpLGEpLnBpcGUoV2UoKHQ9Pnt0aGlzLnN0b3JlLmRpc3BhdGNoKFpYKHQpKX0pKSxWdCgoKCk9Pnt9KSkpfSkpKX1sb2FkR3JhcGhPcEluZm8oKXtyZXR1cm4gdGhpcy5hY3Rpb25zJC5waXBlKCRTKEpYLEtYKSxxZSh0aGlzLnN0b3JlLnNlbGVjdCh2SyksdGhpcy5zdG9yZS5zZWxlY3QoYUopKSx1ZSgoKFt0LGUsbl0pPT57Y29uc3R7Z3JhcGhfaWQ6byxvcF9uYW1lOml9PXQ7cmV0dXJuIShudWxsPT09ZXx8dm9pZCAwIT09bltvXSYmbltvXS5oYXMoaSkmJihuW29dLmdldChpKT09PVVFLkxPQURJTkd8fG5bb10uZ2V0KGkpPT09VUUuTE9BREVEKSl9KSksV2UoKChbe2dyYXBoX2lkOnQsb3BfbmFtZTplfV0pPT50aGlzLnN0b3JlLmRpc3BhdGNoKFFYKHtncmFwaF9pZDp0LG9wX25hbWU6ZX0pKSkpLCR0KCgoW3QsZV0pPT57Y29uc3R7Z3JhcGhfaWQ6bixvcF9uYW1lOm99PXQ7cmV0dXJuIHRoaXMuZGF0YVNvdXJjZS5mZXRjaEdyYXBoT3BJbmZvKGUsbixvKS5waXBlKFdlKCh0PT50aGlzLnN0b3JlLmRpc3BhdGNoKCRYKHtncmFwaE9wSW5mb1Jlc3BvbnNlOnR9KSkpKSxWdCgodD0+KHtydW5JZDplLHN0YWNrRnJhbWVJZHM6dC5zdGFja19mcmFtZV9pZHN9KSkpKX0pKSl9bG9hZEdyYXBoT3BTdGFja0ZyYW1lcyh0KXtyZXR1cm4gdC5waXBlKHFlKHRoaXMuc3RvcmUuc2VsZWN0KHJKKSksVnQoKChbe3J1bklkOnQsc3RhY2tGcmFtZUlkczplfSxuXSk9Pih7cnVuSWQ6dCxtaXNzaW5nU3RhY2tGcmFtZUlkczplLmZpbHRlcigodD0+dm9pZCAwPT09blt0XSkpfSkpKSx1ZSgoKHtydW5JZDp0LG1pc3NpbmdTdGFja0ZyYW1lSWRzOmV9KT0+bnVsbCE9PXQmJmUubGVuZ3RoPjApKSwkdCgoKHtydW5JZDp0LG1pc3NpbmdTdGFja0ZyYW1lSWRzOmV9KT0+dGhpcy5kYXRhU291cmNlLmZldGNoU3RhY2tGcmFtZXModCxlKS5waXBlKFdlKCh0PT57Y29uc3Qgbj17fTtmb3IobGV0IG89MDtvPGUubGVuZ3RoOysrbyluW2Vbb11dPXQuc3RhY2tfZnJhbWVzW29dO3RoaXMuc3RvcmUuZGlzcGF0Y2goYUsoe3N0YWNrRnJhbWVzOm59KSl9KSksVnQoKCgpPT57fSkpKSkpKX1vbkFsZXJ0VHlwZUZvY3VzZWQoKXtyZXR1cm4gdGhpcy5hY3Rpb25zJC5waXBlKCRTKHpYKSxxZSh0aGlzLnN0b3JlLnNlbGVjdCh2SyksdGhpcy5zdG9yZS5zZWxlY3Qoa0spLHRoaXMuc3RvcmUuc2VsZWN0KFNLKSx0aGlzLnN0b3JlLnNlbGVjdChESyksdGhpcy5zdG9yZS5zZWxlY3QoUEspKSx1ZSgoKFssdCxlLG4sbyxpXSk9Pm51bGwhPT10JiZudWxsIT09ZSYmbj4wJiYobnVsbD09PW98fE9iamVjdC5rZXlzKG8pLmxlbmd0aDxuKSYmaS5zdGF0ZSE9PVVFLkxPQURJTkcpKSxXZSgoKCk9PnRoaXMuc3RvcmUuZGlzcGF0Y2goQVgoKSkpKSwkdCgoKFssdCxlXSk9PnRoaXMuZGF0YVNvdXJjZS5mZXRjaEFsZXJ0cyh0LDAsLTEsZSkpKSxXZSgoKHtudW1fYWxlcnRzOnQsYWxlcnRzX2JyZWFrZG93bjplLGFsZXJ0X3R5cGU6bixiZWdpbjpvLGVuZDppLGFsZXJ0czphfSk9Pnt0aGlzLnN0b3JlLmRpc3BhdGNoKE5YKHtudW1BbGVydHM6dCxhbGVydHNCcmVha2Rvd246ZSxhbGVydFR5cGU6bixiZWdpbjpvLGVuZDppLGFsZXJ0czphfSkpfSkpKX1mZXRjaEV4ZWN1dGlvbkRpZ2VzdHNGb3JBbGVydFR5cGVGb2N1cyh0KXtyZXR1cm4gdC5waXBlKHFlKHRoaXMuc3RvcmUuc2VsZWN0KElLKSx0aGlzLnN0b3JlLnNlbGVjdChISyksdGhpcy5zdG9yZS5zZWxlY3QoTkspLHRoaXMuc3RvcmUuc2VsZWN0KFRLKSx0aGlzLnN0b3JlLnNlbGVjdCh2SykpLFZ0KCgoW3QsZSxuLG8saSxhXSk9Pntjb25zdCByPXQuYWxlcnRzWzBdLmV4ZWN1dGlvbl9pbmRleCxzPVIkKE1hdGgubWF4KDAsci1NYXRoLmZsb29yKG4vMikpLE1hdGgubWluKHIrTWF0aC5mbG9vcihuLzIpLG8pLGUsbyxpLnBhZ2VMb2FkZWRTaXplcyk7aWYoMD09PXMubGVuZ3RoKXJldHVybntydW5JZDphLGJlZ2luOjAsZW5kOjB9O3JldHVybntydW5JZDphLGJlZ2luOnNbMF0qZSxlbmQ6TWF0aC5taW4oaS5udW1FeGVjdXRpb25zLChzW3MubGVuZ3RoLTFdKzEpKmUpfX0pKSl9bG9hZFNvdXJjZUZpbGVMaXN0KHQpe3JldHVybiB0LnBpcGUocWUodGhpcy5zdG9yZS5zZWxlY3QodkspLHRoaXMuc3RvcmUuc2VsZWN0KHBKKSksdWUoKChbLHQsZV0pPT5udWxsIT09dCYmZS5zdGF0ZSE9PVVFLkxPQURJTkcpKSxXZSgoKCk9PnRoaXMuc3RvcmUuZGlzcGF0Y2godEsoKSkpKSwkdCgoKFssdF0pPT50aGlzLmRhdGFTb3VyY2UuZmV0Y2hTb3VyY2VGaWxlTGlzdCh0KS5waXBlKFdlKCh0PT57Y29uc3QgZT1bXTt0LmZvckVhY2goKChbdCxuXSk9PntlLnB1c2goe2hvc3RfbmFtZTp0LGZpbGVfcGF0aDpufSl9KSksdGhpcy5zdG9yZS5kaXNwYXRjaChlSyh7c291cmNlRmlsZXM6ZX0pKX0pKSxWdCgoKCk9Pnt9KSkpKSkpfW9uU291cmNlRmlsZUZvY3VzZWQoKXtyZXR1cm4gdGhpcy5hY3Rpb25zJC5waXBlKCRTKG5LKSxxZSh0aGlzLnN0b3JlLnNlbGVjdCh2SyksdGhpcy5zdG9yZS5zZWxlY3QobUopLHRoaXMuc3RvcmUuc2VsZWN0KGZKKSksVnQoKChbdCxlLG4sb10pPT4oe3J1bklkOmUsc3RhY2tGcmFtZTp0LnN0YWNrRnJhbWUsZmlsZUluZGV4Om4sZmlsZUNvbnRlbnQ6b30pKSksdWUoKCh7cnVuSWQ6dCxmaWxlQ29udGVudDplfSk9Pm51bGwhPT10JiZudWxsIT09ZSYmZS5sb2FkU3RhdGU9PT1VRS5OT1RfTE9BREVEKSksV2UoKCh7c3RhY2tGcmFtZTp0fSk9PnRoaXMuc3RvcmUuZGlzcGF0Y2gob0soe2hvc3RfbmFtZTp0Lmhvc3RfbmFtZSxmaWxlX3BhdGg6dC5maWxlX3BhdGh9KSkpKSwkdCgoKHtmaWxlSW5kZXg6dCxydW5JZDplfSk9PnRoaXMuZGF0YVNvdXJjZS5mZXRjaFNvdXJjZUZpbGUoZSx0KS5waXBlKFdlKCh0PT57dGhpcy5zdG9yZS5kaXNwYXRjaChpSyh0KSl9KSksVnQoKCgpPT57fSkpKSkpKX19RSQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEUkKShUcihRUyksVHIoaVMpLFRyKHZYKSl9LEUkLsm1cHJvdj1Tbih7dG9rZW46RSQsZmFjdG9yeTpFJC7JtWZhY30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoRSQsW3t0eXBlOlVtfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOlFTfSx7dHlwZTppU30se3R5cGU6dlh9XX0pLG51bGwpO2NsYXNzIEEke31BJC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8QSQpfSxBJC7JtW1vZD1mbyh7dHlwZTpBJH0pLEEkLsm1aW5qPURuKHtpbXBvcnRzOltbcnhdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoQSQsW3t0eXBlOkxfLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W3lKLENKXSxpbXBvcnRzOltyeF0sZXhwb3J0czpbQ0pdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8oQSQse2RlY2xhcmF0aW9uczpbeUosQ0pdLGltcG9ydHM6W3J4XSxleHBvcnRzOltDSl19KTtjbGFzcyBUJHt9VCQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFQkKX0sVCQuybVtb2Q9Zm8oe3R5cGU6VCR9KSxUJC7JtWluaj1Ebih7aW1wb3J0czpbW3J4XV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFQkLFt7dHlwZTpMXyxhcmdzOlt7ZGVjbGFyYXRpb25zOlt6USxPUSxJUV0saW1wb3J0czpbcnhdLGV4cG9ydHM6W0lRXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKFQkLHtkZWNsYXJhdGlvbnM6W3pRLE9RLElRXSxpbXBvcnRzOltyeF0sZXhwb3J0czpbSVFdfSk7Y2xhc3MgTiR7fU4kLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxOJCl9LE4kLsm1bW9kPWZvKHt0eXBlOk4kfSksTiQuybVpbmo9RG4oe2ltcG9ydHM6W1tyeF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihOJCxbe3R5cGU6TF8sYXJnczpbe2RlY2xhcmF0aW9uczpbWEosJEosUUosS0osSkosdFFdLGltcG9ydHM6W3J4XSxleHBvcnRzOlt0UV19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhOJCx7ZGVjbGFyYXRpb25zOltYSiwkSixRSixLSixKSix0UV0saW1wb3J0czpbcnhdLGV4cG9ydHM6W3RRXX0pO2NsYXNzIHoke316JC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8eiQpfSx6JC7JtW1vZD1mbyh7dHlwZTp6JH0pLHokLsm1aW5qPURuKHtpbXBvcnRzOltbcngsTiQsaUJdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoeiQsW3t0eXBlOkxfLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W0dRLFlRXSxpbXBvcnRzOltyeCxOJCxpQl0sZXhwb3J0czpbWVFdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8oeiQse2RlY2xhcmF0aW9uczpbR1EsWVFdLGltcG9ydHM6W3J4LE4kLGlCXSxleHBvcnRzOltZUV19KTtjbGFzcyBJJHt9SSQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEkkKX0sSSQuybVtb2Q9Zm8oe3R5cGU6SSR9KSxJJC7JtWluaj1Ebih7fSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihJJCxbe3R5cGU6TF8sYXJnczpbe2RlY2xhcmF0aW9uczpbT1gsUFhdLGV4cG9ydHM6W1BYXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKEkkLHtkZWNsYXJhdGlvbnM6W09YLFBYXSxleHBvcnRzOltQWF19KTtjbGFzcyBIJHt9SCQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEgkKX0sSCQuybVtb2Q9Zm8oe3R5cGU6SCR9KSxIJC7JtWluaj1Ebih7fSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihIJCxbe3R5cGU6TF8sYXJnczpbe2V4cG9ydHM6WyRRXSxkZWNsYXJhdGlvbnM6WyRRXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKEgkLHtkZWNsYXJhdGlvbnM6WyRRXSxleHBvcnRzOlskUV19KTtjb25zdCBGJD1bImNvZGVWaWV3ZXJDb250YWluZXIiXTtjbGFzcyBMJHtjb25zdHJ1Y3Rvcigpe3RoaXMuZmlyc3RUZXh0PW51bGwsdGhpcy5zZWNvbmRUZXh0PW51bGwsdGhpcy5yZW5kZXJTaWRlQnlTaWRlPSEwLHRoaXMubW9uYWNvPW51bGwsdGhpcy5lZGl0b3I9bnVsbCx0aGlzLlJFU0laRV9ERUJPVU5DRV9JTlRFUlZBTF9NUz01MH1vblJlc2l6ZSgpe3RoaXMuZWRpdG9yJiZ0aGlzLmVkaXRvci5sYXlvdXQoKX1uZ09uQ2hhbmdlcyh0KXtpZighdGhpcy5tb25hY28pcmV0dXJuO2NvbnN0IGU9IXRoaXMuZWRpdG9yO2UmJih0aGlzLmVkaXRvcj10aGlzLm1vbmFjby5lZGl0b3IuY3JlYXRlRGlmZkVkaXRvcih0aGlzLmNvZGVWaWV3ZXJDb250YWluZXIubmF0aXZlRWxlbWVudCx7cmVhZE9ubHk6ITAsZm9udFNpemU6MTAsbWluaW1hcDp7ZW5hYmxlZDohMH0scmVuZGVyU2lkZUJ5U2lkZTp0aGlzLnJlbmRlclNpZGVCeVNpZGUsdGhlbWU6UVEodGhpcy51c2VEYXJrTW9kZSl9KSksKGV8fHQuZmlyc3RUZXh0fHx0LnNlY29uZFRleHQpJiZ0aGlzLmVkaXRvci5zZXRNb2RlbCh7b3JpZ2luYWw6dGhpcy5tb25hY28uZWRpdG9yLmNyZWF0ZU1vZGVsKHRoaXMuZmlyc3RUZXh0fHwiIiksbW9kaWZpZWQ6dGhpcy5tb25hY28uZWRpdG9yLmNyZWF0ZU1vZGVsKHRoaXMuc2Vjb25kVGV4dHx8IiIpfSksdC5yZW5kZXJTaWRlQnlTaWRlJiZ0aGlzLmVkaXRvci51cGRhdGVPcHRpb25zKHtyZW5kZXJTaWRlQnlTaWRlOnRoaXMucmVuZGVyU2lkZUJ5U2lkZX0pLHQudXNlRGFya01vZGUmJnRoaXMubW9uYWNvLmVkaXRvci5zZXRUaGVtZShRUSh0aGlzLnVzZURhcmtNb2RlKSl9fUwkLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxMJCl9LEwkLsm1Y21wPXNvKHt0eXBlOkwkLHNlbGVjdG9yczpbWyJzb3VyY2UtY29kZS1kaWZmLWNvbXBvbmVudCJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmVnkoRiQsNyxLaCksMiZlKXtsZXQgdDtCeSh0PVV5KCkpJiYobi5jb2RlVmlld2VyQ29udGFpbmVyPXQuZmlyc3QpfX0saW5wdXRzOntmaXJzdFRleHQ6ImZpcnN0VGV4dCIsc2Vjb25kVGV4dDoic2Vjb25kVGV4dCIscmVuZGVyU2lkZUJ5U2lkZToicmVuZGVyU2lkZUJ5U2lkZSIsbW9uYWNvOiJtb25hY28iLHVzZURhcmtNb2RlOiJ1c2VEYXJrTW9kZSJ9LGZlYXR1cmVzOltxb10sZGVjbHM6Mix2YXJzOjEsY29uc3RzOltbImRldGVjdFJlc2l6ZSIsIiIsMSwiY29kZS12aWV3ZXItY29udGFpbmVyIiwzLCJyZXNpemVFdmVudERlYm91bmNlUGVyaW9kSW5NcyIsIm9uUmVzaXplIl0sWyJjb2RlVmlld2VyQ29udGFpbmVyIiwiIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihDZigwLCJkaXYiLDAsMSksUmYoIm9uUmVzaXplIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uUmVzaXplKCl9KSksTWYoKSksMiZlJiZiZigicmVzaXplRXZlbnREZWJvdW5jZVBlcmlvZEluTXMiLG4uUkVTSVpFX0RFQk9VTkNFX0lOVEVSVkFMX01TKX0sZGlyZWN0aXZlczpbJFFdLHN0eWxlczpbIi5jb2RlLXZpZXdlci1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdIHtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgfSJdLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihMJCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJzb3VyY2UtY29kZS1kaWZmLWNvbXBvbmVudCIsdGVtcGxhdGU6J1xuICAgIDxkaXZcbiAgICAgICNjb2RlVmlld2VyQ29udGFpbmVyXG4gICAgICBjbGFzcz0iY29kZS12aWV3ZXItY29udGFpbmVyIlxuICAgICAgZGV0ZWN0UmVzaXplXG4gICAgICBbcmVzaXplRXZlbnREZWJvdW5jZVBlcmlvZEluTXNdPSJSRVNJWkVfREVCT1VOQ0VfSU5URVJWQUxfTVMiXG4gICAgICAob25SZXNpemUpPSJvblJlc2l6ZSgpIlxuICAgID48L2Rpdj5cbiAgJyxzdHlsZXM6WyJcbiAgICAgIC5jb2RlLXZpZXdlci1jb250YWluZXIge1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICB9XG4gICAgIl0sY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaH1dfV0sbnVsbCx7Zmlyc3RUZXh0Olt7dHlwZTpSX31dLHNlY29uZFRleHQ6W3t0eXBlOlJffV0scmVuZGVyU2lkZUJ5U2lkZTpbe3R5cGU6Ul99XSxtb25hY286W3t0eXBlOlJffV0sdXNlRGFya01vZGU6W3t0eXBlOlJffV0sY29kZVZpZXdlckNvbnRhaW5lcjpbe3R5cGU6YXIsYXJnczpbImNvZGVWaWV3ZXJDb250YWluZXIiLHtzdGF0aWM6ITAscmVhZDpLaH1dfV19KTtjbGFzcyBCJHtjb25zdHJ1Y3Rvcigpe3RoaXMuZmlyc3RUZXh0PW51bGwsdGhpcy5zZWNvbmRUZXh0PW51bGwsdGhpcy5yZW5kZXJTaWRlQnlTaWRlPSEwLHRoaXMudXNlRGFya01vZGU9ITEsdGhpcy5tb25hY28kPW51bGx9bmdPbkluaXQoKXt0aGlzLm1vbmFjbyQ9UHQoSlEoKSkucGlwZShWdCgoKCk9PndpbmRvdy5tb25hY28pKSl9fUIkLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxCJCl9LEIkLsm1Y21wPXNvKHt0eXBlOkIkLHNlbGVjdG9yczpbWyJzb3VyY2UtY29kZS1kaWZmIl1dLGlucHV0czp7Zmlyc3RUZXh0OiJmaXJzdFRleHQiLHNlY29uZFRleHQ6InNlY29uZFRleHQiLHJlbmRlclNpZGVCeVNpZGU6InJlbmRlclNpZGVCeVNpZGUiLHVzZURhcmtNb2RlOiJ1c2VEYXJrTW9kZSJ9LGRlY2xzOjIsdmFyczo3LGNvbnN0czpbWzMsImZpcnN0VGV4dCIsInNlY29uZFRleHQiLCJyZW5kZXJTaWRlQnlTaWRlIiwibW9uYWNvIiwidXNlRGFya01vZGUiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKHZmKDAsInNvdXJjZS1jb2RlLWRpZmYtY29tcG9uZW50IiwwKSxfeSgxLCJhc3luYyIpKSwyJmUmJmJmKCJmaXJzdFRleHQiLG4uZmlyc3RUZXh0KSgic2Vjb25kVGV4dCIsbi5zZWNvbmRUZXh0KSgicmVuZGVyU2lkZUJ5U2lkZSIsbi5yZW5kZXJTaWRlQnlTaWRlKSgibW9uYWNvIixDeSgxLDUsbi5tb25hY28kKSkoInVzZURhcmtNb2RlIixuLnVzZURhcmtNb2RlKX0sZGlyZWN0aXZlczpbTCRdLHBpcGVzOltWdl0sc3R5bGVzOlsic291cmNlLWNvZGUtZGlmZi1jb21wb25lbnRbX25nY29udGVudC0lQ09NUCVdIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgIH0iXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoQiQsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3Rvcjoic291cmNlLWNvZGUtZGlmZiIsdGVtcGxhdGU6J1xuICAgIDxzb3VyY2UtY29kZS1kaWZmLWNvbXBvbmVudFxuICAgICAgW2ZpcnN0VGV4dF09ImZpcnN0VGV4dCJcbiAgICAgIFtzZWNvbmRUZXh0XT0ic2Vjb25kVGV4dCJcbiAgICAgIFtyZW5kZXJTaWRlQnlTaWRlXT0icmVuZGVyU2lkZUJ5U2lkZSJcbiAgICAgIFttb25hY29dPSJtb25hY28kIHwgYXN5bmMiXG4gICAgICBbdXNlRGFya01vZGVdPSJ1c2VEYXJrTW9kZSJcbiAgICA+PC9zb3VyY2UtY29kZS1kaWZmLWNvbXBvbmVudD5cbiAgJyxzdHlsZXM6WyJcbiAgICAgIHNvdXJjZS1jb2RlLWRpZmYtY29tcG9uZW50IHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgIH1cbiAgICAiXSxjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNofV19XSxudWxsLHtmaXJzdFRleHQ6W3t0eXBlOlJffV0sc2Vjb25kVGV4dDpbe3R5cGU6Ul99XSxyZW5kZXJTaWRlQnlTaWRlOlt7dHlwZTpSX31dLHVzZURhcmtNb2RlOlt7dHlwZTpSX31dfSk7Y2xhc3MgViR7fVYkLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxWJCl9LFYkLsm1bW9kPWZvKHt0eXBlOlYkfSksViQuybVpbmo9RG4oe2ltcG9ydHM6W1tyeCxIJF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihWJCxbe3R5cGU6TF8sYXJnczpbe2RlY2xhcmF0aW9uczpbZSQsbiQsTCQsQiRdLGltcG9ydHM6W3J4LEgkXSxleHBvcnRzOltuJCxCJF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhWJCx7ZGVjbGFyYXRpb25zOltlJCxuJCxMJCxCJF0saW1wb3J0czpbcngsSCRdLGV4cG9ydHM6W24kLEIkXX0pO2NsYXNzIGoke31qJC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8aiQpfSxqJC7JtW1vZD1mbyh7dHlwZTpqJH0pLGokLsm1aW5qPURuKHtpbXBvcnRzOltbcngsViRdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoaiQsW3t0eXBlOkxfLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W3IkLHMkXSxpbXBvcnRzOltyeCxWJF0sZXhwb3J0czpbcyRdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8oaiQse2RlY2xhcmF0aW9uczpbciQscyRdLGltcG9ydHM6W3J4LFYkXSxleHBvcnRzOltzJF19KTtjbGFzcyBVJHt9VSQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFUkKX0sVSQuybVtb2Q9Zm8oe3R5cGU6VSR9KSxVJC7JtWluaj1Ebih7aW1wb3J0czpbW3J4LFYkXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFUkLFt7dHlwZTpMXyxhcmdzOlt7ZGVjbGFyYXRpb25zOlt4JCxPJF0saW1wb3J0czpbcngsViRdLGV4cG9ydHM6W08kXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKFUkLHtkZWNsYXJhdGlvbnM6W3gkLE8kXSxpbXBvcnRzOltyeCxWJF0sZXhwb3J0czpbTyRdfSk7Y2xhc3MgVyR7fVckLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxXJCl9LFckLsm1bW9kPWZvKHt0eXBlOlckfSksVyQuybVpbmo9RG4oe2ltcG9ydHM6W1tyeCxOJF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihXJCxbe3R5cGU6TF8sYXJnczpbe2RlY2xhcmF0aW9uczpbclEsbFFdLGltcG9ydHM6W3J4LE4kXSxleHBvcnRzOltsUV19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhXJCx7ZGVjbGFyYXRpb25zOltyUSxsUV0saW1wb3J0czpbcngsTiRdLGV4cG9ydHM6W2xRXX0pO2NsYXNzIEcke31HJC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8RyQpfSxHJC7JtW1vZD1mbyh7dHlwZTpHJH0pLEckLsm1aW5qPURuKHtpbXBvcnRzOltbcngsVyQsSUwsUkpdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoRyQsW3t0eXBlOkxfLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W2dRLGJRXSxpbXBvcnRzOltyeCxXJCxJTCxSSl0sZXhwb3J0czpbYlFdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8oRyQse2RlY2xhcmF0aW9uczpbZ1EsYlFdLGltcG9ydHM6W3J4LFckLElMLFJKXSxleHBvcnRzOltiUV19KTtjbGFzcyBZJHt9ZnVuY3Rpb24gcSQodCxlKXtjb25zdCBuPXt9O2Zvcihjb25zdCBvIG9mIE9iamVjdC5rZXlzKHQpKXtuW29dPWUodFtvXSxvKX1yZXR1cm4gbn1mdW5jdGlvbiBaJCh0KXtjb25zdCBlPW5ldyBNYXAsbj10LnNsaWNlKCkuc29ydCgoKHQsZSk9PlgkKHQudGFnLGUudGFnKSkpO2Zvcihjb25zdCB0IG9mIG4pe2NvbnN0IG49dC50YWcuc3BsaXQoIi8iLDEpWzBdO2UuaGFzKG4pfHxlLnNldChuLHtncm91cE5hbWU6bixpdGVtczpbXX0pLGUuZ2V0KG4pLml0ZW1zLnB1c2godCl9cmV0dXJuWy4uLmUudmFsdWVzKCldfWZ1bmN0aW9uIFgkKHQsZSl7bGV0IG49MCxvPTA7Zm9yKDs7KXtpZihuPT09dC5sZW5ndGgpcmV0dXJuIG89PT1lLmxlbmd0aD8wOi0xO2lmKG89PT1lLmxlbmd0aClyZXR1cm4gMTtpZihKJCh0W25dKSYmSiQoZVtvXSkpe2NvbnN0IGk9bixhPW87bj1LJCh0LG4rMSksbz1LJChlLG8rMSk7Y29uc3Qgcj1OdW1iZXIodC5zbGljZShpLG4pKSxzPU51bWJlcihlLnNsaWNlKGEsbykpO2lmKHI8cylyZXR1cm4tMTtpZihyPnMpcmV0dXJuIDF9ZWxzZXtpZihRJCh0W25dKSl7aWYoIVEkKGVbb10pKXJldHVybi0xfWVsc2V7aWYoUSQoZVtvXSkpcmV0dXJuIDE7aWYodFtuXTxlW29dKXJldHVybi0xO2lmKHRbbl0+ZVtvXSlyZXR1cm4gMX1uKyssbysrfX19ZnVuY3Rpb24gSyQodCxlKXtsZXQgbjshKGZ1bmN0aW9uKHQpe3RbdC5OQVRVUkFMPTBdPSJOQVRVUkFMIix0W3QuUkVBTD0xXT0iUkVBTCIsdFt0LkVYUE9ORU5UX1NJR049Ml09IkVYUE9ORU5UX1NJR04iLHRbdC5FWFBPTkVOVD0zXT0iRVhQT05FTlQifSkobnx8KG49e30pKTtsZXQgbz1uLk5BVFVSQUwsaT1lO2Zvcig7aTx0Lmxlbmd0aDtpKyspaWYobz09PW4uTkFUVVJBTCl7aWYoIi4iPT09dFtpXSlvPW4uUkVBTDtlbHNlIGlmKCJlIj09PXRbaV18fCJFIj09PXRbaV0pbz1uLkVYUE9ORU5UX1NJR047ZWxzZSBpZighSiQodFtpXSkpYnJlYWt9ZWxzZSBpZihvPT09bi5SRUFMKXtpZigiZSI9PT10W2ldfHwiRSI9PT10W2ldKW89bi5FWFBPTkVOVF9TSUdOO2Vsc2UgaWYoIUokKHRbaV0pKWJyZWFrfWVsc2UgaWYobz09PW4uRVhQT05FTlRfU0lHTil7aWYoIUokKHRbaV0pJiYiKyIhPT10W2ldJiYiLSIhPT10W2ldKWJyZWFrO289bi5FWFBPTkVOVH1lbHNlIGlmKG89PT1uLkVYUE9ORU5UJiYhSiQodFtpXSkpYnJlYWs7cmV0dXJuIGl9ZnVuY3Rpb24gSiQodCl7cmV0dXJuIjAiPD10JiZ0PD0iOSJ9ZnVuY3Rpb24gUSQodCl7cmV0dXJuIi8iPT09dHx8SiQodCl9ZnVuY3Rpb24gJCQodCxlLG4pe2NvbnN0e3BsdWdpbjpvLHRhZzppLHJ1bklkOmEsc2FtcGxlOnJ9PWVbdF0scz1GTihuLG8saSxyKTtpZihzKXtpZihudWxsIT09YSYmcy5ydW5Ub1Nlcmllcy5oYXNPd25Qcm9wZXJ0eShhKSl7Y29uc3QgdD1zLnJ1blRvU2VyaWVzW2FdLmxlbmd0aDtyZXR1cm4gdD4wP3QtMTpudWxsfWNvbnN0IHQ9T2JqZWN0LnZhbHVlcyhzLnJ1blRvU2VyaWVzKS5tYXAoKHQ9PnQubGVuZ3RoKSk7aWYodC5sZW5ndGgpcmV0dXJuIE1hdGgubWF4KC4uLnQpLTF9cmV0dXJuIG51bGx9ZnVuY3Rpb24gdDAodCxlLG4sbyl7Y29uc3QgaT1PYmplY3QuYXNzaWduKHt9LGUpO2Zvcihjb25zdCBhIGluIHQpe2lmKCF0Lmhhc093blByb3BlcnR5KGEpKWNvbnRpbnVlO2NvbnN0IHI9JCQoYSx0LG4pO2lmKG51bGw9PT1yKXtlLmhhc093blByb3BlcnR5KGEpJiYoaVthXT1udWxsKTtjb250aW51ZX1jb25zdCBzPWUuaGFzT3duUHJvcGVydHkoYSk/ZVthXTpudWxsLGw9JCQoYSx0LG8pLGM9bnVsbCE9PXMmJnM9PT1sLGQ9bnVsbD09PXN8fGM7KG51bGwhPT1zJiZzPnJ8fGQpJiYoaVthXT1yKX1yZXR1cm4gaX1mdW5jdGlvbiBlMCh0KXtjb25zdCBlPXEkKHQucnVuVG9Mb2FkU3RhdGUsKHQ9PnQ9PT1VRS5MT0FESU5HP1VFLkxPQURJTkc6VUUuTk9UX0xPQURFRCkpO3JldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3J1blRvTG9hZFN0YXRlOmV9KX1mdW5jdGlvbiBuMCh0LGUsbixvKXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkoW3QsZSxufHwiIixvXSl9WSQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFkkKX0sWSQuybVtb2Q9Zm8oe3R5cGU6WSR9KSxZJC7JtWluaj1Ebih7aW1wb3J0czpbW0EkLHJ4LGRULHokLFQkLEkkLGokLFUkLHhYLEckLFRTLmZvckZlYXR1cmUocksseUspLGhELmZvckZlYXR1cmUoW0UkXSksTVguZm9yUGx1Z2luKEQkLFMkKV1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihZJCxbe3R5cGU6TF8sYXJnczpbe2RlY2xhcmF0aW9uczpbayQsUyRdLGltcG9ydHM6W0EkLHJ4LGRULHokLFQkLEkkLGokLFUkLHhYLEckLFRTLmZvckZlYXR1cmUocksseUspLGhELmZvckZlYXR1cmUoW0UkXSksTVguZm9yUGx1Z2luKEQkLFMkKV0sZXhwb3J0czpbUyRdLGVudHJ5Q29tcG9uZW50czpbUyRdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8oWSQse2RlY2xhcmF0aW9uczpbayQsUyRdLGltcG9ydHM6W0EkLHJ4LGRULHokLFQkLEkkLGokLFUkLHhYLEckLEFTLGdELE1YXSxleHBvcnRzOltTJF19KTtjb25zdHtpbml0aWFsU3RhdGU6bzAscmVkdWNlcnM6aTB9PWNBKHt0YWdNZXRhZGF0YUxvYWRTdGF0ZTp7c3RhdGU6VUUuTk9UX0xPQURFRCxsYXN0TG9hZGVkVGltZUluTXM6bnVsbH0sdGFnTWV0YWRhdGE6e3NjYWxhcnM6e3RhZ0Rlc2NyaXB0aW9uczp7fSx0YWdUb1J1bnM6e319LGhpc3RvZ3JhbXM6e3RhZ0Rlc2NyaXB0aW9uczp7fSx0YWdUb1J1bnM6e319LGltYWdlczp7dGFnRGVzY3JpcHRpb25zOnt9LHRhZ1J1blNhbXBsZWRJbmZvOnt9fX0sY2FyZExpc3Q6W10sY2FyZFRvUGlubmVkQ29weTpuZXcgTWFwLHBpbm5lZENhcmRUb09yaWdpbmFsOm5ldyBNYXAsdW5yZXNvbHZlZEltcG9ydGVkUGlubmVkQ2FyZHM6W10sY2FyZE1ldGFkYXRhTWFwOnt9LGNhcmRTdGVwSW5kZXg6e30sdGFnRmlsdGVyOiIiLHRhZ0dyb3VwRXhwYW5kZWQ6bmV3IE1hcCxzZWxlY3RlZFRpbWU6bnVsbCxzZWxlY3RUaW1lRW5hYmxlZDohMSx1c2VSYW5nZVNlbGVjdFRpbWU6ITEsZmlsdGVyZWRQbHVnaW5UeXBlczpuZXcgU2V0LHN0ZXBNaW5NYXg6e21pbjoxLzAsbWF4Oi0xLzB9fSx7aXNTZXR0aW5nc1BhbmVPcGVuOiEwLHByb21vdGVUaW1lU2VyaWVzOiEwLHRpbWVTZXJpZXNEYXRhOntzY2FsYXJzOnt9LGhpc3RvZ3JhbXM6e30saW1hZ2VzOnt9fSxzZXR0aW5nczpYTixzZXR0aW5nT3ZlcnJpZGVzOnt9LHZpc2libGVDYXJkTWFwOm5ldyBNYXB9LCh0PT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3RhZ01ldGFkYXRhTG9hZFN0YXRlOntzdGF0ZTpVRS5OT1RfTE9BREVELGxhc3RMb2FkZWRUaW1lSW5NczpudWxsfSx2aXNpYmxlQ2FyZE1hcDpuZXcgTWFwfSkpKSxhMD1vMCxyMD1WUyhvMCxCUyhLRCwoKHQse3JvdXRlS2luZDplLHBhcnRpYWxTdGF0ZTpufSk9PntpZihlIT09X0QuRVhQRVJJTUVOVCYmZSE9PV9ELkNPTVBBUkVfRVhQRVJJTUVOVClyZXR1cm4gdDtjb25zdCBvPW5ldyBTZXQ7Zm9yKGNvbnN0IGUgb2YgdC5waW5uZWRDYXJkVG9PcmlnaW5hbC5rZXlzKCkpe2NvbnN0e3BsdWdpbjpuLHRhZzppLHJ1bklkOmEsc2FtcGxlOnJ9PXQuY2FyZE1ldGFkYXRhTWFwW2VdO28uYWRkKG4wKG4saSxhLHIpKX1jb25zdCBpPW4sYT1bXTtmb3IoY29uc3QgZSBvZlsuLi50LnVucmVzb2x2ZWRJbXBvcnRlZFBpbm5lZENhcmRzLC4uLmkubWV0cmljcy5waW5uZWRDYXJkc10pe2NvbnN0IHQ9bjAoZS5wbHVnaW4sZS50YWcsZS5ydW5JZCxlLnNhbXBsZSk7by5oYXModCl8fChvLmFkZCh0KSxhLnB1c2goZSkpfWNvbnN0IHI9V04oYSx0LmNhcmRMaXN0LHQuY2FyZE1ldGFkYXRhTWFwLHQuY2FyZFRvUGlubmVkQ29weSx0LnBpbm5lZENhcmRUb09yaWdpbmFsLHQuY2FyZFN0ZXBJbmRleCkscz1pLm1ldHJpY3Muc21vb3RoaW5nO2xldCBsPXQuc2V0dGluZ092ZXJyaWRlcztpZihOdW1iZXIuaXNGaW5pdGUocykmJm51bGwhPT1zKXtjb25zdCBlPU1hdGgubWF4KDAsTWF0aC5taW4oLjk5OSxOdW1iZXIocy50b1ByZWNpc2lvbigzKSkpKTtsPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LnNldHRpbmdPdmVycmlkZXMpLHtzY2FsYXJTbW9vdGhpbmc6ZX0pfWNvbnN0IGM9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkscikse3NldHRpbmdPdmVycmlkZXM6bH0pO3JldHVybiBudWxsIT09aS5tZXRyaWNzLnRhZ0ZpbHRlciYmKGMudGFnRmlsdGVyPWkubWV0cmljcy50YWdGaWx0ZXIpLGN9KSksQlMocVIsKCh0LHtwYXJ0aWFsU2V0dGluZ3M6ZX0pPT57dmFyIG47Y29uc3Qgbz17fTtpZihlLnRvb2x0aXBTb3J0U3RyaW5nKXN3aXRjaChlLnRvb2x0aXBTb3J0U3RyaW5nKXtjYXNlIEpULkRFRkFVTFQ6Y2FzZSBKVC5BTFBIQUJFVElDQUw6by50b29sdGlwU29ydD1KVC5BTFBIQUJFVElDQUw7YnJlYWs7Y2FzZSBKVC5BU0NFTkRJTkc6by50b29sdGlwU29ydD1KVC5BU0NFTkRJTkc7YnJlYWs7Y2FzZSBKVC5ERVNDRU5ESU5HOm8udG9vbHRpcFNvcnQ9SlQuREVTQ0VORElORzticmVhaztjYXNlIEpULk5FQVJFU1Q6by50b29sdGlwU29ydD1KVC5ORUFSRVNUfSJudW1iZXIiPT10eXBlb2YgZS50aW1lU2VyaWVzQ2FyZE1pbldpZHRoJiYoby5jYXJkTWluV2lkdGg9ZS50aW1lU2VyaWVzQ2FyZE1pbldpZHRoKSwiYm9vbGVhbiI9PXR5cGVvZiBlLmlnbm9yZU91dGxpZXJzJiYoby5pZ25vcmVPdXRsaWVycz1lLmlnbm9yZU91dGxpZXJzKSwibnVtYmVyIj09dHlwZW9mIGUuc2NhbGFyU21vb3RoaW5nJiYoby5zY2FsYXJTbW9vdGhpbmc9ZS5zY2FsYXJTbW9vdGhpbmcpO2NvbnN0IGk9ImJvb2xlYW4iPT10eXBlb2YgZS50aW1lU2VyaWVzUHJvbW90aW9uRGlzbWlzc2VkPyFlLnRpbWVTZXJpZXNQcm9tb3Rpb25EaXNtaXNzZWQ6dC5wcm9tb3RlVGltZVNlcmllcyxhPW51bGwhPT0obj1lLnRpbWVTZXJpZXNTZXR0aW5nc1BhbmVPcGVuZWQpJiZ2b2lkIDAhPT1uP246dC5pc1NldHRpbmdzUGFuZU9wZW47cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7cHJvbW90ZVRpbWVTZXJpZXM6aSxpc1NldHRpbmdzUGFuZU9wZW46YSxzZXR0aW5nczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5zZXR0aW5ncyksbyl9KX0pKSxCUyhRRSxKRSwodD0+e2NvbnN0IGU9dC50YWdNZXRhZGF0YUxvYWRTdGF0ZS5zdGF0ZT09PVVFLkxPQURJTkc/VUUuTE9BRElORzpVRS5OT1RfTE9BREVELG49cSQodC50aW1lU2VyaWVzRGF0YSwoKHQsZSk9PnEkKHQsKHQ9PmVOKGUpP3EkKHQsKHQ9PmUwKHQpKSk6ZTAodCkpKSkpO3JldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3RhZ01ldGFkYXRhTG9hZFN0YXRlOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LnRhZ01ldGFkYXRhTG9hZFN0YXRlKSx7c3RhdGU6ZX0pLHRpbWVTZXJpZXNEYXRhOm59KX0pKSxCUyhtQSwodD0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHt0YWdNZXRhZGF0YUxvYWRTdGF0ZTpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC50YWdNZXRhZGF0YUxvYWRTdGF0ZSkse3N0YXRlOlVFLkxPQURJTkd9KX0pKSksQlModUEsKHQ9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7dGFnTWV0YWRhdGFMb2FkU3RhdGU6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQudGFnTWV0YWRhdGFMb2FkU3RhdGUpLHtzdGF0ZTpVRS5GQUlMRUR9KX0pKSksQlMoZkEsKCh0LHt0YWdNZXRhZGF0YTplfSk9Pntjb25zdCBuPXtzY2FsYXJzOmwwKGUsS1QuU0NBTEFSUyksaGlzdG9ncmFtczpsMChlLEtULkhJU1RPR1JBTVMpLGltYWdlczplW0tULklNQUdFU119LG89e30saT0oZnVuY3Rpb24gYSh0KXtjb25zdCBlPVtdO2ZvcihsZXQgbiBvZiBPYmplY3Qua2V5cyh0KSl7Y29uc3Qgbz1uO2xldCBpO2lmKGVOKG8pKXtpZighb04obykpdGhyb3cgbmV3IEVycm9yKCJNdWx0aS1ydW4sIHNhbXBsZWQgcGx1Z2luIHN1cHBvcnQgbm90IHlldCBpbXBsZW1lbnRlZCIpO3tjb25zdCBuPXRbb10udGFnUnVuU2FtcGxlZEluZm87Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LmtleXMobikpZm9yKGNvbnN0IGkgb2YgT2JqZWN0LmtleXMoblt0XSkpe2NvbnN0e21heFNhbXBsZXNQZXJTdGVwOmF9PW5bdF1baV07Zm9yKGxldCBuPTA7bjxhO24rKyllLnB1c2goe3BsdWdpbjpvLHRhZzp0LHJ1bklkOmksc2FtcGxlOm4sbnVtU2FtcGxlOmF9KX19fWVsc2UgaWYob04obykpe2k9dFtvXS50YWdUb1J1bnM7Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LmtleXMoaSkpZm9yKGNvbnN0IG4gb2YgaVt0XSllLnB1c2goe3BsdWdpbjpvLHRhZzp0LHJ1bklkOm59KX1lbHNle2k9dFtvXS50YWdUb1J1bnM7Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LmtleXMoaSkpZS5wdXNoKHtwbHVnaW46byx0YWc6dCxydW5JZDpudWxsfSl9fXJldHVybiBlfSkobikscj1bXTtmb3IoY29uc3QgdCBvZiBpKXtjb25zdCBlPUJOKHQpO29bZV09dCxyLnB1c2goZSl9bGV0IHM9dC50YWdHcm91cEV4cGFuZGVkO2lmKDA9PT10LnRhZ0dyb3VwRXhwYW5kZWQuc2l6ZSl7Y29uc3QgZT1aJChyLm1hcCgodD0+e3ZhciBlO3JldHVybiBudWxsIT09KGU9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG9bdF0pLHtjYXJkSWQ6dH0pKSYmdm9pZCAwIT09ZT9lOm51bGx9KSkuZmlsdGVyKEJvb2xlYW4pKTtzPW5ldyBNYXAodC50YWdHcm91cEV4cGFuZGVkKTtmb3IoY29uc3QgdCBvZiBlLnNsaWNlKDAsMikpcy5zZXQodC5ncm91cE5hbWUsITApfWNvbnN0e25leHRDYXJkVG9QaW5uZWRDb3B5OmwsbmV4dFBpbm5lZENhcmRUb09yaWdpbmFsOmMscGlubmVkQ2FyZE1ldGFkYXRhTWFwOmR9PShmdW5jdGlvbiBwKHQsZSxuLG8pe2NvbnN0IGk9bmV3IE1hcCxhPW5ldyBNYXAscj17fTtmb3IoY29uc3QgZSBvZiBvKWlmKHQuaGFzKGUpKXtjb25zdCBvPXQuZ2V0KGUpO2kuc2V0KGUsbyksYS5zZXQobyxlKSxyW29dPW5bZV19cmV0dXJue25leHRDYXJkVG9QaW5uZWRDb3B5OmksbmV4dFBpbm5lZENhcmRUb09yaWdpbmFsOmEscGlubmVkQ2FyZE1ldGFkYXRhTWFwOnJ9fSkodC5jYXJkVG9QaW5uZWRDb3B5LDAsbyxyKSxtPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxvKSxkKSxmPShmdW5jdGlvbiB1KHQsZSl7Y29uc3Qgbj17fTtyZXR1cm4gT2JqZWN0LmVudHJpZXModCkuZm9yRWFjaCgoKFt0LG9dKT0+e2VbdF0mJihuW3RdPW8pfSkpLG59KSh0LmNhcmRTdGVwSW5kZXgsbSksZz1XTih0LnVucmVzb2x2ZWRJbXBvcnRlZFBpbm5lZENhcmRzLHIsbSxsLGMsZik7cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLGcpLHt0YWdHcm91cEV4cGFuZGVkOnMsdGFnTWV0YWRhdGFMb2FkU3RhdGU6e3N0YXRlOlVFLkxPQURFRCxsYXN0TG9hZGVkVGltZUluTXM6RGF0ZS5ub3coKX0sdGFnTWV0YWRhdGE6bixjYXJkTGlzdDpyfSl9KSksQlMoVEEsKCh0LHt0YWdGaWx0ZXI6ZX0pPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3RhZ0ZpbHRlcjplfSkpKSxCUyhnQSwoKHQse3NvcnQ6ZX0pPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3NldHRpbmdPdmVycmlkZXM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuc2V0dGluZ092ZXJyaWRlcykse3Rvb2x0aXBTb3J0OmV9KX0pKSksQlMoaEEsKHQ9Pnt2YXIgZTtjb25zdCBuPSEobnVsbCE9PShlPXQuc2V0dGluZ092ZXJyaWRlcy5pZ25vcmVPdXRsaWVycykmJnZvaWQgMCE9PWU/ZTp0LnNldHRpbmdzLmlnbm9yZU91dGxpZXJzKTtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtzZXR0aW5nT3ZlcnJpZGVzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LnNldHRpbmdPdmVycmlkZXMpLHtpZ25vcmVPdXRsaWVyczpufSl9KX0pKSxCUyhiQSwoKHQse3hBeGlzVHlwZTplfSk9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7c2V0dGluZ092ZXJyaWRlczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5zZXR0aW5nT3ZlcnJpZGVzKSx7eEF4aXNUeXBlOmV9KX0pKSksQlMoQ0EsKCh0LHtzbW9vdGhpbmc6ZX0pPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3NldHRpbmdPdmVycmlkZXM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuc2V0dGluZ092ZXJyaWRlcykse3NjYWxhclNtb290aGluZzplfSl9KSkpLEJTKE1BLCh0PT57dmFyIGU7Y29uc3Qgbj0hKG51bGwhPT0oZT10LnNldHRpbmdPdmVycmlkZXMuc2NhbGFyUGFydGl0aW9uTm9uTW9ub3RvbmljWCkmJnZvaWQgMCE9PWU/ZTp0LnNldHRpbmdzLnNjYWxhclBhcnRpdGlvbk5vbk1vbm90b25pY1gpO3JldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3NldHRpbmdPdmVycmlkZXM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuc2V0dGluZ092ZXJyaWRlcykse3NjYWxhclBhcnRpdGlvbk5vbk1vbm90b25pY1g6bn0pfSl9KSksQlModkEsKCh0LHticmlnaHRuZXNzSW5NaWxsaTplfSk9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7c2V0dGluZ092ZXJyaWRlczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5zZXR0aW5nT3ZlcnJpZGVzKSx7aW1hZ2VCcmlnaHRuZXNzSW5NaWxsaTplfSl9KSkpLEJTKHhBLCgodCx7Y29udHJhc3RJbk1pbGxpOmV9KT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtzZXR0aW5nT3ZlcnJpZGVzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LnNldHRpbmdPdmVycmlkZXMpLHtpbWFnZUNvbnRyYXN0SW5NaWxsaTplfSl9KSkpLEJTKE9BLCh0PT57Y29uc3QgZT1aVCh0LnNldHRpbmdPdmVycmlkZXMsWyJpbWFnZUJyaWdodG5lc3NJbk1pbGxpIl0pO3JldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3NldHRpbmdPdmVycmlkZXM6ZX0pfSkpLEJTKFBBLCh0PT57Y29uc3QgZT1aVCh0LnNldHRpbmdPdmVycmlkZXMsWyJpbWFnZUNvbnRyYXN0SW5NaWxsaSJdKTtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtzZXR0aW5nT3ZlcnJpZGVzOmV9KX0pKSxCUyh3QSwodD0+e3ZhciBlO2NvbnN0IG49IShudWxsIT09KGU9dC5zZXR0aW5nT3ZlcnJpZGVzLmltYWdlU2hvd0FjdHVhbFNpemUpJiZ2b2lkIDAhPT1lP2U6dC5zZXR0aW5ncy5pbWFnZVNob3dBY3R1YWxTaXplKTtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtzZXR0aW5nT3ZlcnJpZGVzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LnNldHRpbmdPdmVycmlkZXMpLHtpbWFnZVNob3dBY3R1YWxTaXplOm59KX0pfSkpLEJTKGtBLCgodCx7aGlzdG9ncmFtTW9kZTplfSk9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7c2V0dGluZ092ZXJyaWRlczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5zZXR0aW5nT3ZlcnJpZGVzKSx7aGlzdG9ncmFtTW9kZTplfSl9KSkpLEJTKHlBLCgodCx7Y2FyZE1pbldpZHRoOmV9KT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtzZXR0aW5nT3ZlcnJpZGVzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LnNldHRpbmdPdmVycmlkZXMpLHtjYXJkTWluV2lkdGg6ZX0pfSkpKSxCUyhfQSwodD0+e2NvbnN0IGU9WlQodC5zZXR0aW5nT3ZlcnJpZGVzLFsiY2FyZE1pbldpZHRoIl0pO3JldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3NldHRpbmdPdmVycmlkZXM6ZX0pfSkpLEJTKFNBLCgodCx7cmVxdWVzdHM6ZX0pPT57aWYoIWUubGVuZ3RoKXJldHVybiB0O2NvbnN0IG49T2JqZWN0LmFzc2lnbih7fSx0LnRpbWVTZXJpZXNEYXRhKTtmb3IoY29uc3QgbyBvZiBlKXtjb25zdHtwbHVnaW46ZSx0YWc6aSxzYW1wbGU6YX09bztuW2VdPUxOKG4sZSxpLGEpO2NvbnN0IHI9Rk4obixlLGksYSkscz1pTihvKT9bby5ydW5JZF06ak4odC50YWdNZXRhZGF0YSxlLGksYSk7ci5ydW5Ub0xvYWRTdGF0ZT1WTihVRS5MT0FESU5HLHMsci5ydW5Ub0xvYWRTdGF0ZSl9cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7dGltZVNlcmllc0RhdGE6bn0pfSkpLEJTKERBLCgodCx7cmVxdWVzdDplfSk9Pntjb25zdCBuPU9iamVjdC5hc3NpZ24oe30sdC50aW1lU2VyaWVzRGF0YSkse3BsdWdpbjpvLHRhZzppLHNhbXBsZTphfT1lO25bb109TE4obixvLGksYSk7Y29uc3Qgcj1GTihuLG8saSxhKSxzPWlOKGUpP1tlLnJ1bklkXTpqTih0LnRhZ01ldGFkYXRhLG8saSxhKTtyZXR1cm4gci5ydW5Ub0xvYWRTdGF0ZT1WTihVRS5GQUlMRUQscyxyLnJ1blRvTG9hZFN0YXRlKSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3RpbWVTZXJpZXNEYXRhOm59KX0pKSxCUyhSQSwoKHQse3Jlc3BvbnNlOmV9KT0+e2NvbnN0IG49T2JqZWN0LmFzc2lnbih7fSx0LnN0ZXBNaW5NYXgpLG89T2JqZWN0LmFzc2lnbih7fSx0LnRpbWVTZXJpZXNEYXRhKSx7cGx1Z2luOmksdGFnOmEscnVuSWQ6cixzYW1wbGU6c309ZTtvW2ldPUxOKG8saSxhLHMpO2NvbnN0IGw9Rk4obyxpLGEscyk7aWYock4oZSkpe2NvbnN0IGU9cj9bcl06ak4odC50YWdNZXRhZGF0YSxpLGEscyk7bC5ydW5Ub0xvYWRTdGF0ZT1WTihVRS5GQUlMRUQsZSxsLnJ1blRvTG9hZFN0YXRlKX1lbHNle2NvbnN0IHQ9ZS5ydW5Ub1NlcmllcztsLnJ1blRvU2VyaWVzPU9iamVjdC5hc3NpZ24oe30sbC5ydW5Ub1NlcmllcyksbC5ydW5Ub0xvYWRTdGF0ZT1PYmplY3QuYXNzaWduKHt9LGwucnVuVG9Mb2FkU3RhdGUpO2Zvcihjb25zdCBlIGluIHQpaWYodC5oYXNPd25Qcm9wZXJ0eShlKSl7bC5ydW5Ub1Nlcmllc1tlXT10W2VdLGwucnVuVG9Mb2FkU3RhdGVbZV09VUUuTE9BREVEO2Zvcihjb25zdCBvIG9mIHRbZV0pbi5taW49TWF0aC5taW4obi5taW4sby5zdGVwKSxuLm1heD1NYXRoLm1heChuLm1heCxvLnN0ZXApfX1yZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHt0aW1lU2VyaWVzRGF0YTpvLGNhcmRTdGVwSW5kZXg6dDAodC5jYXJkTWV0YWRhdGFNYXAsdC5jYXJkU3RlcEluZGV4LG8sdC50aW1lU2VyaWVzRGF0YSksc3RlcE1pbk1heDpufSl9KSksQlMoQUEsKCh0LHtjYXJkSWQ6ZSxzdGVwSW5kZXg6bn0pPT57Y29uc3Qgbz0kJChlLHQuY2FyZE1ldGFkYXRhTWFwLHQudGltZVNlcmllc0RhdGEpO2xldCBpPW47cmV0dXJuIG51bGw9PT1vP2k9bnVsbDpuPm8mJihpPW8pLE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7Y2FyZFN0ZXBJbmRleDpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5jYXJkU3RlcEluZGV4KSx7W2VdOml9KX0pfSkpLEJTKE5BLCgodCx7dGFnR3JvdXA6ZX0pPT57Y29uc3Qgbj1uZXcgTWFwKHQudGFnR3JvdXBFeHBhbmRlZCk7cmV0dXJuIG4uc2V0KGUsIW4uZ2V0KGUpKSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3RhZ0dyb3VwRXhwYW5kZWQ6bn0pfSkpLEJTKEVBLCgodCx7ZW50ZXJlZENhcmRzOmUsZXhpdGVkQ2FyZHM6bn0pPT57aWYoIWUubGVuZ3RoJiYhbi5sZW5ndGgpcmV0dXJuIHQ7Y29uc3Qgbz1uZXcgTWFwKHQudmlzaWJsZUNhcmRNYXApO3JldHVybiBlLmZvckVhY2goKCh7ZWxlbWVudElkOnQsY2FyZElkOmV9KT0+e3ZhciBuO2NvbnN0IGk9bnVsbCE9PShuPW8uZ2V0KHQpKSYmdm9pZCAwIT09bj9uOm51bGw7aWYobnVsbCE9PWkmJmkhPT1lKXRocm93IG5ldyBFcnJvcigiQSBET00gZWxlbWVudCBjYW5ub3QgYmUgcmV1c2VkIGZvciBtb3JlIHRoYW4gMSB1bmlxdWUgY2FyZCBtZXRhZGF0YSIpO28uc2V0KHQsZSl9KSksbi5mb3JFYWNoKCgoe2VsZW1lbnRJZDp0fSk9PntvLmRlbGV0ZSh0KX0pKSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3Zpc2libGVDYXJkTWFwOm99KX0pKSxCUyh6QSwoKHQse2NhcmRJZDplfSk9Pntjb25zdCBuPXQucGlubmVkQ2FyZFRvT3JpZ2luYWwuaGFzKGUpLG89IW4mJiF0LmNhcmRUb1Bpbm5lZENvcHkuaGFzKGUpO2lmKG8mJiFxTih0KSlyZXR1cm4gdDtsZXQgaT1uZXcgTWFwKHQuY2FyZFRvUGlubmVkQ29weSksYT1uZXcgTWFwKHQucGlubmVkQ2FyZFRvT3JpZ2luYWwpLHI9T2JqZWN0LmFzc2lnbih7fSx0LmNhcmRNZXRhZGF0YU1hcCkscz1PYmplY3QuYXNzaWduKHt9LHQuY2FyZFN0ZXBJbmRleCk7aWYobil7Y29uc3Qgbj10LnBpbm5lZENhcmRUb09yaWdpbmFsLmdldChlKTtpLmRlbGV0ZShuKSxhLmRlbGV0ZShlKSxkZWxldGUgcltlXSxkZWxldGUgc1tlXX1lbHNlIGlmKG8pe2NvbnN0IHQ9R04oZSxpLGEscyxyKTtpPXQuY2FyZFRvUGlubmVkQ29weSxhPXQucGlubmVkQ2FyZFRvT3JpZ2luYWwscj10LmNhcmRNZXRhZGF0YU1hcCxzPXQuY2FyZFN0ZXBJbmRleH1lbHNle2NvbnN0IG49dC5jYXJkVG9QaW5uZWRDb3B5LmdldChlKTtpLmRlbGV0ZShlKSxhLmRlbGV0ZShuKSxkZWxldGUgcltuXSxkZWxldGUgc1tuXX1yZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtjYXJkTWV0YWRhdGFNYXA6cixjYXJkU3RlcEluZGV4OnMsY2FyZFRvUGlubmVkQ29weTppLHBpbm5lZENhcmRUb09yaWdpbmFsOmF9KX0pKSxCUyhCQSwodD0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtzZWxlY3RUaW1lRW5hYmxlZDohdC5zZWxlY3RUaW1lRW5hYmxlZH0pKSksQlMoRkEsKCh0LGUpPT57dmFyIG4sbyxpLGE7Y29uc3Qgcj1lLnN0YXJ0U3RlcDtsZXQgcz1udWxsIT09KGE9bnVsbCE9PShuPWUuZW5kU3RlcCkmJnZvaWQgMCE9PW4/bjpudWxsPT09KGk9bnVsbD09PShvPXQuc2VsZWN0ZWRUaW1lKXx8dm9pZCAwPT09bz92b2lkIDA6by5lbmQpfHx2b2lkIDA9PT1pP3ZvaWQgMDppLnN0ZXApJiZ2b2lkIDAhPT1hP2E6dC5zdGVwTWluTWF4Lm1heDtyZXR1cm4gcj5zJiYocz1yKSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3NlbGVjdFRpbWVFbmFibGVkOiEwLHNlbGVjdGVkVGltZTp7c3RhcnQ6e3N0ZXA6cn0sZW5kOntzdGVwOnN9fX0pfSkpLEJTKFZBLCh0PT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3VzZVJhbmdlU2VsZWN0VGltZTohdC51c2VSYW5nZVNlbGVjdFRpbWV9KSkpLEJTKExBLCh0PT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3NlbGVjdGVkVGltZTpudWxsfSkpKSxCUyhJQSwoKHQse3BsdWdpbjplfSk9PntsZXQgbj1uZXcgU2V0KHQuZmlsdGVyZWRQbHVnaW5UeXBlcyk7cmV0dXJuIG4uaGFzKGUpP24uZGVsZXRlKGUpOm4uYWRkKGUpLE9iamVjdC52YWx1ZXMoS1QpLmV2ZXJ5KCh0PT5uLmhhcyh0KSkpJiYobj1uZXcgU2V0KSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2ZpbHRlcmVkUGx1Z2luVHlwZXM6bn0pfSkpLEJTKEhBLCh0PT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2ZpbHRlcmVkUGx1Z2luVHlwZXM6bmV3IFNldH0pKSksQlMoakEsKHQ9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7cHJvbW90ZVRpbWVTZXJpZXM6ITF9KSkpLEJTKHBBLCh0PT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2lzU2V0dGluZ3NQYW5lT3BlbjohdC5pc1NldHRpbmdzUGFuZU9wZW59KSkpLEJTKGRBLCh0PT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2lzU2V0dGluZ3NQYW5lT3BlbjohMX0pKSkpO2Z1bmN0aW9uIHMwKHQsZSl7cmV0dXJuIFdBKHIwLGkwKSh0LGUpfWZ1bmN0aW9uIGwwKHQsZSl7cmV0dXJue3RhZ0Rlc2NyaXB0aW9uczp0W2VdLnRhZ0Rlc2NyaXB0aW9ucyx0YWdUb1J1bnM6YzAodFtlXS5ydW5UYWdJbmZvKX19ZnVuY3Rpb24gYzAodCl7Y29uc3QgZT17fTtmb3IoY29uc3QgbiBpbiB0KWZvcihjb25zdCBvIG9mIHRbbl0pZVtvXT1bLi4uZVtvXXx8W10sbl07cmV0dXJuIGV9Y29uc3QgZDA9YlMoJE4sbnosKCh0LGUsbik9PmU/T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGUpLHtsb2FkU3RhdGU6dCxpZDpufSk6bnVsbCkpLHAwPV9rKCJbTWV0cmljcyBFZmZlY3RzXSBJbml0Iik7Y2xhc3MgbTB7Y29uc3RydWN0b3IodCxlLG4pe3RoaXMuYWN0aW9ucyQ9dCx0aGlzLnN0b3JlPWUsdGhpcy5kYXRhU291cmNlPW4sdGhpcy5kYXNoYm9hcmRTaG93bldpdGhvdXREYXRhJD10aGlzLmFjdGlvbnMkLnBpcGUoJFMocDAsWkUsdEEsdFIpLHFlKHRoaXMuc3RvcmUuc2VsZWN0KGVUKSx0aGlzLnN0b3JlLnNlbGVjdChKTikpLHVlKCgoWyx0LGVdKT0+dD09PSRUJiZlLnN0YXRlPT09VUUuTk9UX0xPQURFRCkpKSx0aGlzLnJlbG9hZFJlcXVlc3RlZFdoaWxlU2hvd24kPXRoaXMuYWN0aW9ucyQucGlwZSgkUyhRRSxKRSkscWUodGhpcy5zdG9yZS5zZWxlY3QoZVQpKSx1ZSgoKFssdF0pPT50PT09JFQpKSksdGhpcy5sb2FkVGFnTWV0YWRhdGEkPXBlKHRoaXMuZGFzaGJvYXJkU2hvd25XaXRob3V0RGF0YSQsdGhpcy5yZWxvYWRSZXF1ZXN0ZWRXaGlsZVNob3duJCkucGlwZShxZSh0aGlzLnN0b3JlLnNlbGVjdChKTiksdGhpcy5zdG9yZS5zZWxlY3QoeFIpKSx1ZSgoKFssdCxlXSk9PnQuc3RhdGUhPT1VRS5MT0FESU5HJiZudWxsIT09ZSkpLFdlKCgoKT0+e3RoaXMuc3RvcmUuZGlzcGF0Y2gobUEoKSl9KSksVmUoKChbLCx0XSk9PnRoaXMuZGF0YVNvdXJjZS5mZXRjaFRhZ01ldGFkYXRhKHQpLnBpcGUoV2UoKHQ9Pnt0aGlzLnN0b3JlLmRpc3BhdGNoKGZBKHt0YWdNZXRhZGF0YTp0fSkpfSkpLGhlKCgoKT0+KHRoaXMuc3RvcmUuZGlzcGF0Y2godUEoKSksenQobnVsbCkpKSkpKSkpLHRoaXMudmlzaWJsZUNhcmRzV2l0aG91dERhdGFDaGFuZ2VkJD10aGlzLmFjdGlvbnMkLnBpcGUoJFMoRUEpLFZlKCgoKT0+dGhpcy5nZXRWaXNpYmxlQ2FyZEZldGNoSW5mb3MoKS5waXBlKHZlKDEpKSkpLFZ0KCh0PT50LmZpbHRlcigodD0+dC5sb2FkU3RhdGU9PT1VRS5OT1RfTE9BREVEKSkpKSksdGhpcy52aXNpYmxlQ2FyZHNSZWxvYWRlZCQ9dGhpcy5yZWxvYWRSZXF1ZXN0ZWRXaGlsZVNob3duJC5waXBlKFZlKCgoKT0+dGhpcy5nZXRWaXNpYmxlQ2FyZEZldGNoSW5mb3MoKS5waXBlKHZlKDEpKSkpLFZ0KCh0PT50LmZpbHRlcigodD0+dC5sb2FkU3RhdGUhPT1VRS5MT0FESU5HKSkpKSksdGhpcy5sb2FkVGltZVNlcmllcyQ9cGUodGhpcy52aXNpYmxlQ2FyZHNXaXRob3V0RGF0YUNoYW5nZWQkLHRoaXMudmlzaWJsZUNhcmRzUmVsb2FkZWQkKS5waXBlKHVlKCh0PT50Lmxlbmd0aD4wKSkscWUodGhpcy5zdG9yZS5zZWxlY3QoeFIpLnBpcGUodWUoKHQ9Pm51bGwhPT10KSkpKSwkdCgoKFt0LGVdKT0+dGhpcy5mZXRjaFRpbWVTZXJpZXNGb3JDYXJkcyh0LGUpKSkpLHRoaXMuZGF0YUVmZmVjdHMkPVdTKCgoKT0+cGUodGhpcy5sb2FkVGFnTWV0YWRhdGEkLHRoaXMubG9hZFRpbWVTZXJpZXMkKSkse2Rpc3BhdGNoOiExfSl9bmdyeE9uSW5pdEVmZmVjdHMoKXtyZXR1cm4gcDAoKX1nZXRWaXNpYmxlQ2FyZEZldGNoSW5mb3MoKXtyZXR1cm4gdGhpcy5zdG9yZS5zZWxlY3QoaXopLnBpcGUoVmUoKHQ9PntpZighdC5zaXplKXJldHVybiB6dChbXSk7cmV0dXJuIGllKFsuLi50XS5tYXAoKHQ9PnRoaXMuc3RvcmUuc2VsZWN0KGQwLHQpLnBpcGUodmUoMSkpKSkpfSkpLFZ0KCh0PT50LmZpbHRlcihCb29sZWFuKSkpKX1mZXRjaFRpbWVTZXJpZXModCl7cmV0dXJuIHRoaXMuZGF0YVNvdXJjZS5mZXRjaFRpbWVTZXJpZXMoW3RdKS5waXBlKFdlKCh0PT57Y29uc3QgZT10LmZpbHRlcihyTik7ZS5sZW5ndGgmJmNvbnNvbGUuZXJyb3IoIlRpbWUgc2VyaWVzIHJlc3BvbnNlIGNvbnRhaW5lZCBlcnJvcnM6IixlKSx0aGlzLnN0b3JlLmRpc3BhdGNoKFJBKHtyZXNwb25zZTp0WzBdfSkpfSkpLGhlKCgoKT0+KHRoaXMuc3RvcmUuZGlzcGF0Y2goREEoe3JlcXVlc3Q6dH0pKSx6dChudWxsKSkpKSl9ZmV0Y2hUaW1lU2VyaWVzRm9yQ2FyZHModCxlKXtyZXR1cm4genQodC5tYXAoKHQ9Pntjb25zdHtwbHVnaW46bix0YWc6byxydW5JZDppLHNhbXBsZTphfT10LHI9b04obik/e3BsdWdpbjpuLHRhZzpvLHJ1bklkOml9OntwbHVnaW46bix0YWc6byxleHBlcmltZW50SWRzOmV9O3JldHVybiB2b2lkIDAhPT1hJiYoci5zYW1wbGU9YSkscn0pKSkucGlwZShXZSgodD0+e3RoaXMuc3RvcmUuZGlzcGF0Y2goU0Eoe3JlcXVlc3RzOnR9KSl9KSksJHQoKHQ9PnBlKC4uLnQubWFwKCh0PT50aGlzLmZldGNoVGltZVNlcmllcyh0KSkpKSkpKX19bTAuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fG0wKShUcihRUyksVHIoaVMpLFRyKGFOKSl9LG0wLsm1cHJvdj1Tbih7dG9rZW46bTAsZmFjdG9yeTptMC7JtWZhY30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIobTAsW3t0eXBlOlVtfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOlFTfSx7dHlwZTppU30se3R5cGU6YU59XX0pLG51bGwpO2NvbnN0IGYwPW5ldyBlcigiTWV0cmljcyBTdG9yZSBDb25maWciKSx1MD1uZXcgZXIoIk1ldHJpY3MgSW5pdGlhbCBTZXR0aW5ncyBDb25maWciKTtmdW5jdGlvbiBnMCh0KXtyZXR1cm4gdD97aW5pdGlhbFN0YXRlOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxhMCkse3NldHRpbmdzOnR9KX06e2luaXRpYWxTdGF0ZTphMH19dmFyIGgwOyEoZnVuY3Rpb24odCl7dFt0LkxFRlQ9MV09IkxFRlQiLHRbdC5SSUdIVD0yXT0iUklHSFQiLHRbdC5NSURETEU9NF09Ik1JRERMRSIsdFt0LkZPVVJUSD04XT0iRk9VUlRIIix0W3QuRklGVEg9MzJdPSJGSUZUSCJ9KShoMHx8KGgwPXt9KSk7bGV0IGIwPTA7ZnVuY3Rpb24geTAodCxlKXtpZigxJnQpe2NvbnN0IHQ9d2YoKTtDZigwLCJidXR0b24iLDMpLFJmKCJjbGljayIsKGZ1bmN0aW9uIGUoKXtQaSh0KTtyZXR1cm4gemYoKS5leHBhbmRTaWRlYmFyKCl9KSksdmYoMSwibWF0LWljb24iLDQpLE1mKCl9fWZ1bmN0aW9uIF8wKHQsZSl7aWYoMSZ0JiYoQ2YoMCwibmF2Iiw1KSxfeSgxLCJhc3luYyIpLEZmKDIsMSksTWYoKSksMiZ0KXtjb25zdCB0PXpmKCk7bHUoIndpZHRoIixDeSgxLDQsdC53aWR0aCQpLCIlIikoIm1pbi13aWR0aCIsdC5NSU5JTVVNX1NJREVCQVJfV0lEVEhfSU5fUFgsInB4Iil9fWZ1bmN0aW9uIEMwKHQsZSl7aWYoMSZ0KXtjb25zdCB0PXdmKCk7Q2YoMCwiZGl2Iiw2KSxSZigibW91c2Vkb3duIiwoZnVuY3Rpb24gZSgpe1BpKHQpO3JldHVybiB6ZigpLnJlc2l6ZUdyYWJiZWQoKX0pKSxNZigpfX1jb25zdCBNMD1bW1siIiwibWFpbiIsIiJdXSxbWyIiLCJzaWRlYmFyIiwiIl1dXTtjbGFzcyB2MHtjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuc3RvcmU9dCx0aGlzLndpZHRoJD10aGlzLnN0b3JlLnNlbGVjdChpVCksdGhpcy5uZ1Vuc3Vic2NyaWJlPW5ldyBCLHRoaXMucmVzaXppbmc9ITEsdGhpcy5NSU5JTVVNX1NJREVCQVJfV0lEVEhfSU5fUFg9NzUsbGUoZS5uYXRpdmVFbGVtZW50LCJtb3VzZW1vdmUiKS5waXBlKGplKHRoaXMubmdVbnN1YnNjcmliZSksdWUoKCgpPT50aGlzLnJlc2l6aW5nKSkpLnN1YnNjcmliZSgodD0+e2lmKCh0LmJ1dHRvbnMmaDAuTEVGVCkhPT1oMC5MRUZUKXJldHVybiB2b2lkKHRoaXMucmVzaXppbmc9ITEpO3QucHJldmVudERlZmF1bHQoKTtjb25zdHt3aWR0aDpufT1lLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7dGhpcy5zdG9yZS5kaXNwYXRjaChsQSh7d2lkdGhJblBlcmNlbnQ6dC5jbGllbnRYPD10aGlzLk1JTklNVU1fU0lERUJBUl9XSURUSF9JTl9QWD8wOnQuY2xpZW50WC9uKjEwMH0pKX0pKSxsZShlLm5hdGl2ZUVsZW1lbnQsIm1vdXNldXAiLHtwYXNzaXZlOiEwfSkucGlwZShqZSh0aGlzLm5nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKCgpPT57dGhpcy5yZXNpemluZz0hMX0pKX1uZ09uRGVzdHJveSgpe3RoaXMubmdVbnN1YnNjcmliZS5uZXh0KCksdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCl9cmVzaXplR3JhYmJlZCgpe3RoaXMucmVzaXppbmc9ITB9ZXhwYW5kU2lkZWJhcigpe3RoaXMuc3RvcmUuZGlzcGF0Y2gobEEoe3dpZHRoSW5QZXJjZW50OjIwfSkpfX12YXIgeDA7djAuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHYwKShnZihpUyksZ2YoS2gpKX0sdjAuybVjbXA9c28oe3R5cGU6djAsc2VsZWN0b3JzOltbInRiLWRhc2hib2FyZC1sYXlvdXQiXV0sbmdDb250ZW50U2VsZWN0b3JzOlsiW21haW5dIiwiW3NpZGViYXJdIl0sZGVjbHM6Nyx2YXJzOjksY29uc3RzOltbImNsYXNzIiwiZXhwYW5kIiwzLCJjbGljayIsNCwibmdJZiJdLFsiY2xhc3MiLCJzaWRlYmFyIiwzLCJ3aWR0aCIsIm1pbldpZHRoIiw0LCJuZ0lmIl0sWyJjbGFzcyIsInJlc2l6ZXIiLDMsIm1vdXNlZG93biIsNCwibmdJZiJdLFsxLCJleHBhbmQiLDMsImNsaWNrIl0sWyJzdmdJY29uIiwiZXhwYW5kX21vcmVfMjRweCJdLFsxLCJzaWRlYmFyIl0sWzEsInJlc2l6ZXIiLDMsIm1vdXNlZG93biJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoSGYoTTApLEhtKDAseTAsMiwwLCJidXR0b24iLDApLF95KDEsImFzeW5jIiksSG0oMixfMCwzLDYsIm5hdiIsMSksX3koMywiYXN5bmMiKSxIbSg0LEMwLDEsMCwiZGl2IiwyKSxfeSg1LCJhc3luYyIpLEZmKDYpKSwyJmUmJihiZigibmdJZiIsMD09PUN5KDEsMyxuLndpZHRoJCkpLERjKDIpLGJmKCJuZ0lmIixDeSgzLDUsbi53aWR0aCQpPjApLERjKDIpLGJmKCJuZ0lmIixDeSg1LDcsbi53aWR0aCQpPjApKX0sZGlyZWN0aXZlczpbUHYsTXFdLHBpcGVzOltWdl0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCB0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9W19uZ2hvc3QtJUNPTVAlXXtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246cm93O2hlaWdodDoxMDAlO3dpZHRoOjEwMCU7cG9zaXRpb246cmVsYXRpdmV9LnNpZGViYXJbX25nY29udGVudC0lQ09NUCVde21heC13aWR0aDo4MHZ3fS5yZXNpemVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmV4cGFuZFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNlYmViZWI7Ym94LXNpemluZzpib3JkZXItYm94O2ZsZXg6MCAwO2p1c3RpZnktc2VsZjpzdHJldGNofWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5yZXNpemVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLnJlc2l6ZXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojNTU1fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5leHBhbmRbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuZXhwYW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6IzU1NX0uZXhwYW5kW19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoyMHB4fS5yZXNpemVyW19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpjZW50ZXI7Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci13aWR0aDowIDJweDtjdXJzb3I6ZXctcmVzaXplO2NvbnRhaW46c3RyaWN0O2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LXNlbGY6c3RyZXRjaH0ucmVzaXplcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde3dpZHRoOjEwMCV9LnJlc2l6ZXJbX25nY29udGVudC0lQ09NUCVdOmhvdmVye2JvcmRlci1jb2xvcjojY2NjO291dGxpbmU6M3B4IHNvbGlkICNjY2M7ei1pbmRleDoxfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5yZXNpemVyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLnJlc2l6ZXJbX25nY29udGVudC0lQ09NUCVdOmhvdmVye291dGxpbmUtY29sb3I6Izc3Nztib3JkZXItY29sb3I6Izc3N30uZXhwYW5kW19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpjZW50ZXI7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLXdpZHRoOjAgMXB4IDAgMDtjb2xvcjppbmhlcml0O2NvbnRhaW46Y29udGVudDtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmZsZXg7anVzdGlmeS1zZWxmOnN0cmV0Y2g7cGFkZGluZzowfS5leHBhbmRbX25nY29udGVudC0lQ09NUCVdICAgbWF0LWljb25bX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTpyb3RhdGUoLTkwZGVnKTt0cmFuc2Zvcm0tb3JpZ2luOmNlbnRlcn0nXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIodjAsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoidGItZGFzaGJvYXJkLWxheW91dCIsdGVtcGxhdGU6J1xuICAgIDxidXR0b25cbiAgICAgICpuZ0lmPSIod2lkdGgkIHwgYXN5bmMpID09PSAwIlxuICAgICAgY2xhc3M9ImV4cGFuZCJcbiAgICAgIChjbGljayk9ImV4cGFuZFNpZGViYXIoKSJcbiAgICA+XG4gICAgICA8bWF0LWljb24gc3ZnSWNvbj0iZXhwYW5kX21vcmVfMjRweCI+PC9tYXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgICA8bmF2XG4gICAgICAqbmdJZj0iKHdpZHRoJCB8IGFzeW5jKSA+IDAiXG4gICAgICBjbGFzcz0ic2lkZWJhciJcbiAgICAgIFtzdHlsZS53aWR0aC4lXT0id2lkdGgkIHwgYXN5bmMiXG4gICAgICBbc3R5bGUubWluV2lkdGgucHhdPSJNSU5JTVVNX1NJREVCQVJfV0lEVEhfSU5fUFgiXG4gICAgPlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PSJbc2lkZWJhcl0iPjwvbmctY29udGVudD5cbiAgICA8L25hdj5cbiAgICA8ZGl2XG4gICAgICAqbmdJZj0iKHdpZHRoJCB8IGFzeW5jKSA+IDAiXG4gICAgICBjbGFzcz0icmVzaXplciJcbiAgICAgIChtb3VzZWRvd24pPSJyZXNpemVHcmFiYmVkKCkiXG4gICAgPjwvZGl2PlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD0iW21haW5dIj48L25nLWNvbnRlbnQ+XG4gICcsc3R5bGVVcmxzOlsibGF5b3V0X2NvbnRhaW5lci5jc3MiXSxjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNofV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6aVN9LHt0eXBlOktofV19KSxudWxsKSwoZnVuY3Rpb24odCl7dC5DSEVDS0JPWD0iY2hlY2tib3giLHQuUlVOX05BTUU9InJ1bl9uYW1lIix0LkVYUEVSSU1FTlRfTkFNRT0iZXhwZXJpbWVudF9uYW1lIix0LlJVTl9DT0xPUj0icnVuX2NvbG9yIn0pKHgwfHwoeDA9e30pKTtjb25zdCBPMD1fUyhIVCksUDA9YlMoTzAsKCh0LGUpPT57Y29uc3Qgbj1bXTtmb3IoY29uc3QgbyBvZiBlKXQuc3BlY3Nbb10mJm4ucHVzaCh0LnNwZWNzW29dLmhwYXJhbS5kZWZhdWx0RmlsdGVycyk7cmV0dXJuIFRUKG4pfSkpLHcwPWJTKFAwLE8wLCgodCxlLG4pPT57dmFyIG87Y29uc3QgaT1BVChuKSxhPWUuZmlsdGVyc1tpXTtyZXR1cm4gbmV3IE1hcChbLi4udCwuLi5udWxsIT09KG89bnVsbD09YT92b2lkIDA6YS5ocGFyYW1zKSYmdm9pZCAwIT09bz9vOltdXSl9KSksazA9YlMoTzAsKCh0LGUpPT57Y29uc3Qgbj1bXTtmb3IoY29uc3QgbyBvZiBlKXQuc3BlY3Nbb10mJm4ucHVzaCh0LnNwZWNzW29dLm1ldHJpYy5kZWZhdWx0RmlsdGVycyk7cmV0dXJuIE5UKG4pfSkpLFMwPWJTKGswLE8wLCgodCxlLG4pPT57dmFyIG87Y29uc3QgaT1BVChuKSxhPWUuZmlsdGVyc1tpXTtyZXR1cm4gbmV3IE1hcChbLi4udCwuLi5udWxsIT09KG89bnVsbD09YT92b2lkIDA6YS5tZXRyaWNzKSYmdm9pZCAwIT09bz9vOltdXSl9KSksRDA9YlMoTzAsKCh0LGUpPT4oZnVuY3Rpb24gbiguLi50KXtjb25zdCBlPW5ldyBNYXAsbj1uZXcgTWFwLG89bmV3IE1hcCxpPW5ldyBNYXAsYT1bXTtmb3IoY29uc3QgciBvZiB0KXtmb3IoY29uc3QgdCBvZiByLmhwYXJhbXMpaWYobi5oYXModC5uYW1lKXx8bi5zZXQodC5uYW1lLG5ldyBTZXQpLG4uZ2V0KHQubmFtZSkuYWRkKHQuZGlzcGxheU5hbWUpLGUuaGFzKHQubmFtZSkpe2NvbnN0IG49ZS5nZXQodC5uYW1lKSxvPXQ7aWYobi50eXBlIT09by50eXBlJiZhLnB1c2goYEhwYXJhbSwgJHtvLm5hbWV9LCB0eXBlcyBoYXZlIHRvIG1hdGNoLiBHb3Q6ICR7bi50eXBlfSB2cy4gJHtvLnR5cGV9YCksbi5kb21haW4udHlwZT09PWtULklOVEVSVkFMJiZvLmRvbWFpbi50eXBlPT09a1QuSU5URVJWQUwpbi5kb21haW4ubWluVmFsdWU9PT1vLmRvbWFpbi5taW5WYWx1ZSYmbi5kb21haW4ubWF4VmFsdWU9PT1vLmRvbWFpbi5tYXhWYWx1ZXx8YS5wdXNoKGBIcGFyYW0sICR7by5uYW1lfSwgZG9tYWlucyBoYXZlIHRvIG1hdGNoLiBHb3Q6ICR7bi5kb21haW59IHZzLiAke28uZG9tYWlufWApO2Vsc2UgaWYobi5kb21haW4udHlwZT09PWtULkRJU0NSRVRFJiZvLmRvbWFpbi50eXBlPT09a1QuRElTQ1JFVEUpe2NvbnN0IHQ9bmV3IFNldChbLi4ubi5kb21haW4udmFsdWVzLC4uLm8uZG9tYWluLnZhbHVlc10pO24uZG9tYWluLnZhbHVlcy5sZW5ndGg9PT1vLmRvbWFpbi52YWx1ZXMubGVuZ3RoJiZuLmRvbWFpbi52YWx1ZXMubGVuZ3RoPT09dC5zaXplfHxhLnB1c2goYEhwYXJhbSwgJHtvLm5hbWV9LCBkb21haW5zIGhhdmUgdG8gbWF0Y2guIEdvdDogJHtuLmRvbWFpbn0gdnMuICR7by5kb21haW59YCl9ZWxzZSBhLnB1c2goYEhwYXJhbSwgJHtvLm5hbWV9LCBkb21haW5zIGhhdmUgdG8gbWF0Y2guIEdvdDogJHtuLmRvbWFpbn0gdnMuICR7by5kb21haW59YCl9ZWxzZSBlLnNldCh0Lm5hbWUsT2JqZWN0LmFzc2lnbih7fSx0KSk7Zm9yKGNvbnN0IHQgb2Ygci5tZXRyaWNzKWlmKGkuaGFzKHQudGFnKXx8aS5zZXQodC50YWcsbmV3IFNldCksaS5nZXQodC50YWcpLmFkZCh0LmRpc3BsYXlOYW1lKSxvLmhhcyh0LnRhZykpe2NvbnN0IGU9by5nZXQodC50YWcpLG49dDtlLmRhdGFzZXRUeXBlIT09bi5kYXRhc2V0VHlwZSYmYS5wdXNoKGBNZXRyaWMsICR7bi50YWd9LCBkYXRhc2V0VHlwZXMgaGF2ZSB0byBtYXRjaC4gR290OiAke2UuZGF0YXNldFR5cGV9IHZzLiAke24uZGF0YXNldFR5cGV9YCl9ZWxzZSBvLnNldCh0LnRhZyxPYmplY3QuYXNzaWduKHt9LHQpKX1pZihhLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoYFZhbGlkYXRpb24gZXJyb3I6XG4ke2Euam9pbigiXG4iKX1gKTtyZXR1cm57aHBhcmFtczpbLi4uZV0ubWFwKCgoW3QsZV0pPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sZSkse2Rpc3BsYXlOYW1lOlsuLi5uLmdldCh0KV0uam9pbigiIG9yICIpfSkpKSxtZXRyaWNzOlsuLi5vXS5tYXAoKChbdCxlXSk9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxlKSx7ZGlzcGxheU5hbWU6Wy4uLmkuZ2V0KHQpXS5qb2luKCIgb3IgIil9KSkpfX0pKC4uLmUuZXhwZXJpbWVudElkcy5tYXAoKGU9Pntjb25zdCBuPXQuc3BlY3NbZV07cmV0dXJuIG4/e2hwYXJhbXM6bi5ocGFyYW0uc3BlY3MsbWV0cmljczpuLm1ldHJpYy5zcGVjc306bnVsbH0pKS5maWx0ZXIoQm9vbGVhbikpKSksUjA9e3Rvb2x0aXBTdGF0ZTp4Tygic3RhdGUiLFtrTygiaW5pdGlhbCwgdm9pZCwgaGlkZGVuIix3Tyh7b3BhY2l0eTowLHRyYW5zZm9ybToic2NhbGUoMCkifSkpLGtPKCJ2aXNpYmxlIix3Tyh7dHJhbnNmb3JtOiJzY2FsZSgxKSJ9KSksRE8oIiogPT4gdmlzaWJsZSIsT08oIjIwMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpIixTTyhbd08oe29wYWNpdHk6MCx0cmFuc2Zvcm06InNjYWxlKDApIixvZmZzZXQ6MH0pLHdPKHtvcGFjaXR5Oi41LHRyYW5zZm9ybToic2NhbGUoMC45OSkiLG9mZnNldDouNX0pLHdPKHtvcGFjaXR5OjEsdHJhbnNmb3JtOiJzY2FsZSgxKSIsb2Zmc2V0OjF9KV0pKSksRE8oIiogPT4gaGlkZGVuIixPTygiMTAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSkiLHdPKHtvcGFjaXR5OjB9KSkpXSl9LEUwPWJIKHtwYXNzaXZlOiEwfSk7ZnVuY3Rpb24gQTAodCl7cmV0dXJuIEVycm9yKGBUb29sdGlwIHBvc2l0aW9uICIke3R9IiBpcyBpbnZhbGlkLmApfWNvbnN0IFQwPW5ldyBlcigibWF0LXRvb2x0aXAtc2Nyb2xsLXN0cmF0ZWd5Iik7Y29uc3QgTjA9e3Byb3ZpZGU6VDAsZGVwczpbS0JdLHVzZUZhY3Rvcnk6ZnVuY3Rpb24gejAodCl7cmV0dXJuKCk9PnQuc2Nyb2xsU3RyYXRlZ2llcy5yZXBvc2l0aW9uKHtzY3JvbGxUaHJvdHRsZToyMH0pfX0sSTA9bmV3IGVyKCJtYXQtdG9vbHRpcC1kZWZhdWx0LW9wdGlvbnMiLHtwcm92aWRlZEluOiJyb290IixmYWN0b3J5OmZ1bmN0aW9uIEgwKCl7cmV0dXJue3Nob3dEZWxheTowLGhpZGVEZWxheTowLHRvdWNoZW5kSGlkZURlbGF5OjE1MDB9fX0pO2NsYXNzIEYwe2NvbnN0cnVjdG9yKHQsZSxuLG8saSxhLHIscyxsLGMsZCxwKXt0aGlzLl9vdmVybGF5PXQsdGhpcy5fZWxlbWVudFJlZj1lLHRoaXMuX3Njcm9sbERpc3BhdGNoZXI9bix0aGlzLl92aWV3Q29udGFpbmVyUmVmPW8sdGhpcy5fbmdab25lPWksdGhpcy5fcGxhdGZvcm09YSx0aGlzLl9hcmlhRGVzY3JpYmVyPXIsdGhpcy5fZm9jdXNNb25pdG9yPXMsdGhpcy5fZGlyPWMsdGhpcy5fZGVmYXVsdE9wdGlvbnM9ZCx0aGlzLl9wb3NpdGlvbj0iYmVsb3ciLHRoaXMuX2Rpc2FibGVkPSExLHRoaXMuX3ZpZXdJbml0aWFsaXplZD0hMSx0aGlzLl9wb2ludGVyRXhpdEV2ZW50c0luaXRpYWxpemVkPSExLHRoaXMuX3ZpZXdwb3J0TWFyZ2luPTgsdGhpcy5fY3NzQ2xhc3NQcmVmaXg9Im1hdCIsdGhpcy5zaG93RGVsYXk9dGhpcy5fZGVmYXVsdE9wdGlvbnMuc2hvd0RlbGF5LHRoaXMuaGlkZURlbGF5PXRoaXMuX2RlZmF1bHRPcHRpb25zLmhpZGVEZWxheSx0aGlzLnRvdWNoR2VzdHVyZXM9ImF1dG8iLHRoaXMuX21lc3NhZ2U9IiIsdGhpcy5fcGFzc2l2ZUxpc3RlbmVycz1bXSx0aGlzLl9kZXN0cm95ZWQ9bmV3IEIsdGhpcy5faGFuZGxlS2V5ZG93bj10PT57dGhpcy5faXNUb29sdGlwVmlzaWJsZSgpJiZ0LmtleUNvZGU9PT1LSSYmIXRIKHQpJiYodC5wcmV2ZW50RGVmYXVsdCgpLHQuc3RvcFByb3BhZ2F0aW9uKCksdGhpcy5fbmdab25lLnJ1bigoKCk9PnRoaXMuaGlkZSgwKSkpKX0sdGhpcy5fc2Nyb2xsU3RyYXRlZ3k9bCx0aGlzLl9kb2N1bWVudD1wLGQmJihkLnBvc2l0aW9uJiYodGhpcy5wb3NpdGlvbj1kLnBvc2l0aW9uKSxkLnRvdWNoR2VzdHVyZXMmJih0aGlzLnRvdWNoR2VzdHVyZXM9ZC50b3VjaEdlc3R1cmVzKSksYy5jaGFuZ2UucGlwZShqZSh0aGlzLl9kZXN0cm95ZWQpKS5zdWJzY3JpYmUoKCgpPT57dGhpcy5fb3ZlcmxheVJlZiYmdGhpcy5fdXBkYXRlUG9zaXRpb24odGhpcy5fb3ZlcmxheVJlZil9KSksaS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9PntlLm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsdGhpcy5faGFuZGxlS2V5ZG93bil9KSl9Z2V0IHBvc2l0aW9uKCl7cmV0dXJuIHRoaXMuX3Bvc2l0aW9ufXNldCBwb3NpdGlvbih0KXt2YXIgZTt0IT09dGhpcy5fcG9zaXRpb24mJih0aGlzLl9wb3NpdGlvbj10LHRoaXMuX292ZXJsYXlSZWYmJih0aGlzLl91cGRhdGVQb3NpdGlvbih0aGlzLl9vdmVybGF5UmVmKSxudWxsPT09KGU9dGhpcy5fdG9vbHRpcEluc3RhbmNlKXx8dm9pZCAwPT09ZXx8ZS5zaG93KDApLHRoaXMuX292ZXJsYXlSZWYudXBkYXRlUG9zaXRpb24oKSkpfWdldCBkaXNhYmxlZCgpe3JldHVybiB0aGlzLl9kaXNhYmxlZH1zZXQgZGlzYWJsZWQodCl7dGhpcy5fZGlzYWJsZWQ9ZUgodCksdGhpcy5fZGlzYWJsZWQ/dGhpcy5oaWRlKDApOnRoaXMuX3NldHVwUG9pbnRlckVudGVyRXZlbnRzSWZOZWVkZWQoKX1nZXQgbWVzc2FnZSgpe3JldHVybiB0aGlzLl9tZXNzYWdlfXNldCBtZXNzYWdlKHQpe3RoaXMuX2FyaWFEZXNjcmliZXIucmVtb3ZlRGVzY3JpcHRpb24odGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LHRoaXMuX21lc3NhZ2UsInRvb2x0aXAiKSx0aGlzLl9tZXNzYWdlPW51bGwhPXQ/U3RyaW5nKHQpLnRyaW0oKToiIiwhdGhpcy5fbWVzc2FnZSYmdGhpcy5faXNUb29sdGlwVmlzaWJsZSgpP3RoaXMuaGlkZSgwKToodGhpcy5fc2V0dXBQb2ludGVyRW50ZXJFdmVudHNJZk5lZWRlZCgpLHRoaXMuX3VwZGF0ZVRvb2x0aXBNZXNzYWdlKCksdGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCgpPT57dGhpcy5fYXJpYURlc2NyaWJlci5kZXNjcmliZSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsdGhpcy5tZXNzYWdlLCJ0b29sdGlwIil9KSl9KSkpfWdldCB0b29sdGlwQ2xhc3MoKXtyZXR1cm4gdGhpcy5fdG9vbHRpcENsYXNzfXNldCB0b29sdGlwQ2xhc3ModCl7dGhpcy5fdG9vbHRpcENsYXNzPXQsdGhpcy5fdG9vbHRpcEluc3RhbmNlJiZ0aGlzLl9zZXRUb29sdGlwQ2xhc3ModGhpcy5fdG9vbHRpcENsYXNzKX1uZ0FmdGVyVmlld0luaXQoKXt0aGlzLl92aWV3SW5pdGlhbGl6ZWQ9ITAsdGhpcy5fc2V0dXBQb2ludGVyRW50ZXJFdmVudHNJZk5lZWRlZCgpLHRoaXMuX2ZvY3VzTW9uaXRvci5tb25pdG9yKHRoaXMuX2VsZW1lbnRSZWYpLnBpcGUoamUodGhpcy5fZGVzdHJveWVkKSkuc3Vic2NyaWJlKCh0PT57dD8ia2V5Ym9hcmQiPT09dCYmdGhpcy5fbmdab25lLnJ1bigoKCk9PnRoaXMuc2hvdygpKSk6dGhpcy5fbmdab25lLnJ1bigoKCk9PnRoaXMuaGlkZSgwKSkpfSkpfW5nT25EZXN0cm95KCl7Y29uc3QgdD10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7Y2xlYXJUaW1lb3V0KHRoaXMuX3RvdWNoc3RhcnRUaW1lb3V0KSx0aGlzLl9vdmVybGF5UmVmJiYodGhpcy5fb3ZlcmxheVJlZi5kaXNwb3NlKCksdGhpcy5fdG9vbHRpcEluc3RhbmNlPW51bGwpLHQucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsdGhpcy5faGFuZGxlS2V5ZG93biksdGhpcy5fcGFzc2l2ZUxpc3RlbmVycy5mb3JFYWNoKCgoW2Usbl0pPT57dC5yZW1vdmVFdmVudExpc3RlbmVyKGUsbixFMCl9KSksdGhpcy5fcGFzc2l2ZUxpc3RlbmVycy5sZW5ndGg9MCx0aGlzLl9kZXN0cm95ZWQubmV4dCgpLHRoaXMuX2Rlc3Ryb3llZC5jb21wbGV0ZSgpLHRoaXMuX2FyaWFEZXNjcmliZXIucmVtb3ZlRGVzY3JpcHRpb24odCx0aGlzLm1lc3NhZ2UsInRvb2x0aXAiKSx0aGlzLl9mb2N1c01vbml0b3Iuc3RvcE1vbml0b3JpbmcodCl9c2hvdyh0PXRoaXMuc2hvd0RlbGF5KXtpZih0aGlzLmRpc2FibGVkfHwhdGhpcy5tZXNzYWdlfHx0aGlzLl9pc1Rvb2x0aXBWaXNpYmxlKCkmJiF0aGlzLl90b29sdGlwSW5zdGFuY2UuX3Nob3dUaW1lb3V0SWQmJiF0aGlzLl90b29sdGlwSW5zdGFuY2UuX2hpZGVUaW1lb3V0SWQpcmV0dXJuO2NvbnN0IGU9dGhpcy5fY3JlYXRlT3ZlcmxheSgpO3RoaXMuX2RldGFjaCgpLHRoaXMuX3BvcnRhbD10aGlzLl9wb3J0YWx8fG5ldyBzQih0aGlzLl90b29sdGlwQ29tcG9uZW50LHRoaXMuX3ZpZXdDb250YWluZXJSZWYpLHRoaXMuX3Rvb2x0aXBJbnN0YW5jZT1lLmF0dGFjaCh0aGlzLl9wb3J0YWwpLmluc3RhbmNlLHRoaXMuX3Rvb2x0aXBJbnN0YW5jZS5hZnRlckhpZGRlbigpLnBpcGUoamUodGhpcy5fZGVzdHJveWVkKSkuc3Vic2NyaWJlKCgoKT0+dGhpcy5fZGV0YWNoKCkpKSx0aGlzLl9zZXRUb29sdGlwQ2xhc3ModGhpcy5fdG9vbHRpcENsYXNzKSx0aGlzLl91cGRhdGVUb29sdGlwTWVzc2FnZSgpLHRoaXMuX3Rvb2x0aXBJbnN0YW5jZS5zaG93KHQpfWhpZGUodD10aGlzLmhpZGVEZWxheSl7dGhpcy5fdG9vbHRpcEluc3RhbmNlJiZ0aGlzLl90b29sdGlwSW5zdGFuY2UuaGlkZSh0KX10b2dnbGUoKXt0aGlzLl9pc1Rvb2x0aXBWaXNpYmxlKCk/dGhpcy5oaWRlKCk6dGhpcy5zaG93KCl9X2lzVG9vbHRpcFZpc2libGUoKXtyZXR1cm4hIXRoaXMuX3Rvb2x0aXBJbnN0YW5jZSYmdGhpcy5fdG9vbHRpcEluc3RhbmNlLmlzVmlzaWJsZSgpfV9jcmVhdGVPdmVybGF5KCl7aWYodGhpcy5fb3ZlcmxheVJlZilyZXR1cm4gdGhpcy5fb3ZlcmxheVJlZjtjb25zdCB0PXRoaXMuX3Njcm9sbERpc3BhdGNoZXIuZ2V0QW5jZXN0b3JTY3JvbGxDb250YWluZXJzKHRoaXMuX2VsZW1lbnRSZWYpLGU9dGhpcy5fb3ZlcmxheS5wb3NpdGlvbigpLmZsZXhpYmxlQ29ubmVjdGVkVG8odGhpcy5fZWxlbWVudFJlZikud2l0aFRyYW5zZm9ybU9yaWdpbk9uKGAuJHt0aGlzLl9jc3NDbGFzc1ByZWZpeH0tdG9vbHRpcGApLndpdGhGbGV4aWJsZURpbWVuc2lvbnMoITEpLndpdGhWaWV3cG9ydE1hcmdpbih0aGlzLl92aWV3cG9ydE1hcmdpbikud2l0aFNjcm9sbGFibGVDb250YWluZXJzKHQpO3JldHVybiBlLnBvc2l0aW9uQ2hhbmdlcy5waXBlKGplKHRoaXMuX2Rlc3Ryb3llZCkpLnN1YnNjcmliZSgodD0+e3RoaXMuX3VwZGF0ZUN1cnJlbnRQb3NpdGlvbkNsYXNzKHQuY29ubmVjdGlvblBhaXIpLHRoaXMuX3Rvb2x0aXBJbnN0YW5jZSYmdC5zY3JvbGxhYmxlVmlld1Byb3BlcnRpZXMuaXNPdmVybGF5Q2xpcHBlZCYmdGhpcy5fdG9vbHRpcEluc3RhbmNlLmlzVmlzaWJsZSgpJiZ0aGlzLl9uZ1pvbmUucnVuKCgoKT0+dGhpcy5oaWRlKDApKSl9KSksdGhpcy5fb3ZlcmxheVJlZj10aGlzLl9vdmVybGF5LmNyZWF0ZSh7ZGlyZWN0aW9uOnRoaXMuX2Rpcixwb3NpdGlvblN0cmF0ZWd5OmUscGFuZWxDbGFzczpgJHt0aGlzLl9jc3NDbGFzc1ByZWZpeH0tdG9vbHRpcC1wYW5lbGAsc2Nyb2xsU3RyYXRlZ3k6dGhpcy5fc2Nyb2xsU3RyYXRlZ3koKX0pLHRoaXMuX3VwZGF0ZVBvc2l0aW9uKHRoaXMuX292ZXJsYXlSZWYpLHRoaXMuX292ZXJsYXlSZWYuZGV0YWNobWVudHMoKS5waXBlKGplKHRoaXMuX2Rlc3Ryb3llZCkpLnN1YnNjcmliZSgoKCk9PnRoaXMuX2RldGFjaCgpKSksdGhpcy5fb3ZlcmxheVJlZi5vdXRzaWRlUG9pbnRlckV2ZW50cygpLnBpcGUoamUodGhpcy5fZGVzdHJveWVkKSkuc3Vic2NyaWJlKCgoKT0+e3ZhciB0O3JldHVybiBudWxsPT09KHQ9dGhpcy5fdG9vbHRpcEluc3RhbmNlKXx8dm9pZCAwPT09dD92b2lkIDA6dC5faGFuZGxlQm9keUludGVyYWN0aW9uKCl9KSksdGhpcy5fb3ZlcmxheVJlZn1fZGV0YWNoKCl7dGhpcy5fb3ZlcmxheVJlZiYmdGhpcy5fb3ZlcmxheVJlZi5oYXNBdHRhY2hlZCgpJiZ0aGlzLl9vdmVybGF5UmVmLmRldGFjaCgpLHRoaXMuX3Rvb2x0aXBJbnN0YW5jZT1udWxsfV91cGRhdGVQb3NpdGlvbih0KXtjb25zdCBlPXQuZ2V0Q29uZmlnKCkucG9zaXRpb25TdHJhdGVneSxuPXRoaXMuX2dldE9yaWdpbigpLG89dGhpcy5fZ2V0T3ZlcmxheVBvc2l0aW9uKCk7ZS53aXRoUG9zaXRpb25zKFt0aGlzLl9hZGRPZmZzZXQoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4ubWFpbiksby5tYWluKSksdGhpcy5fYWRkT2Zmc2V0KE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuLmZhbGxiYWNrKSxvLmZhbGxiYWNrKSldKX1fYWRkT2Zmc2V0KHQpe3JldHVybiB0fV9nZXRPcmlnaW4oKXtjb25zdCB0PSF0aGlzLl9kaXJ8fCJsdHIiPT10aGlzLl9kaXIudmFsdWUsZT10aGlzLnBvc2l0aW9uO2xldCBuO2lmKCJhYm92ZSI9PWV8fCJiZWxvdyI9PWUpbj17b3JpZ2luWDoiY2VudGVyIixvcmlnaW5ZOiJhYm92ZSI9PWU/InRvcCI6ImJvdHRvbSJ9O2Vsc2UgaWYoImJlZm9yZSI9PWV8fCJsZWZ0Ij09ZSYmdHx8InJpZ2h0Ij09ZSYmIXQpbj17b3JpZ2luWDoic3RhcnQiLG9yaWdpblk6ImNlbnRlciJ9O2Vsc2UgaWYoImFmdGVyIj09ZXx8InJpZ2h0Ij09ZSYmdHx8ImxlZnQiPT1lJiYhdCluPXtvcmlnaW5YOiJlbmQiLG9yaWdpblk6ImNlbnRlciJ9O2Vsc2UgaWYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSl0aHJvdyBBMChlKTtjb25zdHt4Om8seTppfT10aGlzLl9pbnZlcnRQb3NpdGlvbihuLm9yaWdpblgsbi5vcmlnaW5ZKTtyZXR1cm57bWFpbjpuLGZhbGxiYWNrOntvcmlnaW5YOm8sb3JpZ2luWTppfX19X2dldE92ZXJsYXlQb3NpdGlvbigpe2NvbnN0IHQ9IXRoaXMuX2Rpcnx8Imx0ciI9PXRoaXMuX2Rpci52YWx1ZSxlPXRoaXMucG9zaXRpb247bGV0IG47aWYoImFib3ZlIj09ZSluPXtvdmVybGF5WDoiY2VudGVyIixvdmVybGF5WToiYm90dG9tIn07ZWxzZSBpZigiYmVsb3ciPT1lKW49e292ZXJsYXlYOiJjZW50ZXIiLG92ZXJsYXlZOiJ0b3AifTtlbHNlIGlmKCJiZWZvcmUiPT1lfHwibGVmdCI9PWUmJnR8fCJyaWdodCI9PWUmJiF0KW49e292ZXJsYXlYOiJlbmQiLG92ZXJsYXlZOiJjZW50ZXIifTtlbHNlIGlmKCJhZnRlciI9PWV8fCJyaWdodCI9PWUmJnR8fCJsZWZ0Ij09ZSYmIXQpbj17b3ZlcmxheVg6InN0YXJ0IixvdmVybGF5WToiY2VudGVyIn07ZWxzZSBpZigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKXRocm93IEEwKGUpO2NvbnN0e3g6byx5Oml9PXRoaXMuX2ludmVydFBvc2l0aW9uKG4ub3ZlcmxheVgsbi5vdmVybGF5WSk7cmV0dXJue21haW46bixmYWxsYmFjazp7b3ZlcmxheVg6byxvdmVybGF5WTppfX19X3VwZGF0ZVRvb2x0aXBNZXNzYWdlKCl7dGhpcy5fdG9vbHRpcEluc3RhbmNlJiYodGhpcy5fdG9vbHRpcEluc3RhbmNlLm1lc3NhZ2U9dGhpcy5tZXNzYWdlLHRoaXMuX3Rvb2x0aXBJbnN0YW5jZS5fbWFya0ZvckNoZWNrKCksdGhpcy5fbmdab25lLm9uTWljcm90YXNrRW1wdHkucGlwZSh2ZSgxKSxqZSh0aGlzLl9kZXN0cm95ZWQpKS5zdWJzY3JpYmUoKCgpPT57dGhpcy5fdG9vbHRpcEluc3RhbmNlJiZ0aGlzLl9vdmVybGF5UmVmLnVwZGF0ZVBvc2l0aW9uKCl9KSkpfV9zZXRUb29sdGlwQ2xhc3ModCl7dGhpcy5fdG9vbHRpcEluc3RhbmNlJiYodGhpcy5fdG9vbHRpcEluc3RhbmNlLnRvb2x0aXBDbGFzcz10LHRoaXMuX3Rvb2x0aXBJbnN0YW5jZS5fbWFya0ZvckNoZWNrKCkpfV9pbnZlcnRQb3NpdGlvbih0LGUpe3JldHVybiJhYm92ZSI9PT10aGlzLnBvc2l0aW9ufHwiYmVsb3ciPT09dGhpcy5wb3NpdGlvbj8idG9wIj09PWU/ZT0iYm90dG9tIjoiYm90dG9tIj09PWUmJihlPSJ0b3AiKToiZW5kIj09PXQ/dD0ic3RhcnQiOiJzdGFydCI9PT10JiYodD0iZW5kIikse3g6dCx5OmV9fV91cGRhdGVDdXJyZW50UG9zaXRpb25DbGFzcyh0KXtjb25zdHtvdmVybGF5WTplLG9yaWdpblg6bixvcmlnaW5ZOm99PXQ7bGV0IGk7aWYoaT0iY2VudGVyIj09PWU/dGhpcy5fZGlyJiYicnRsIj09PXRoaXMuX2Rpci52YWx1ZT8iZW5kIj09PW4/ImxlZnQiOiJyaWdodCI6InN0YXJ0Ij09PW4/ImxlZnQiOiJyaWdodCI6ImJvdHRvbSI9PT1lJiYidG9wIj09PW8/ImFib3ZlIjoiYmVsb3ciLGkhPT10aGlzLl9jdXJyZW50UG9zaXRpb24pe2NvbnN0IHQ9dGhpcy5fb3ZlcmxheVJlZjtpZih0KXtjb25zdCBlPWAke3RoaXMuX2Nzc0NsYXNzUHJlZml4fS10b29sdGlwLXBhbmVsLWA7dC5yZW1vdmVQYW5lbENsYXNzKGUrdGhpcy5fY3VycmVudFBvc2l0aW9uKSx0LmFkZFBhbmVsQ2xhc3MoZStpKX10aGlzLl9jdXJyZW50UG9zaXRpb249aX19X3NldHVwUG9pbnRlckVudGVyRXZlbnRzSWZOZWVkZWQoKXshdGhpcy5fZGlzYWJsZWQmJnRoaXMubWVzc2FnZSYmdGhpcy5fdmlld0luaXRpYWxpemVkJiYhdGhpcy5fcGFzc2l2ZUxpc3RlbmVycy5sZW5ndGgmJih0aGlzLl9wbGF0Zm9ybVN1cHBvcnRzTW91c2VFdmVudHMoKT90aGlzLl9wYXNzaXZlTGlzdGVuZXJzLnB1c2goWyJtb3VzZWVudGVyIiwoKT0+e3RoaXMuX3NldHVwUG9pbnRlckV4aXRFdmVudHNJZk5lZWRlZCgpLHRoaXMuc2hvdygpfV0pOiJvZmYiIT09dGhpcy50b3VjaEdlc3R1cmVzJiYodGhpcy5fZGlzYWJsZU5hdGl2ZUdlc3R1cmVzSWZOZWNlc3NhcnkoKSx0aGlzLl9wYXNzaXZlTGlzdGVuZXJzLnB1c2goWyJ0b3VjaHN0YXJ0IiwoKT0+e3RoaXMuX3NldHVwUG9pbnRlckV4aXRFdmVudHNJZk5lZWRlZCgpLGNsZWFyVGltZW91dCh0aGlzLl90b3VjaHN0YXJ0VGltZW91dCksdGhpcy5fdG91Y2hzdGFydFRpbWVvdXQ9c2V0VGltZW91dCgoKCk9PnRoaXMuc2hvdygpKSw1MDApfV0pKSx0aGlzLl9hZGRMaXN0ZW5lcnModGhpcy5fcGFzc2l2ZUxpc3RlbmVycykpfV9zZXR1cFBvaW50ZXJFeGl0RXZlbnRzSWZOZWVkZWQoKXtpZih0aGlzLl9wb2ludGVyRXhpdEV2ZW50c0luaXRpYWxpemVkKXJldHVybjt0aGlzLl9wb2ludGVyRXhpdEV2ZW50c0luaXRpYWxpemVkPSEwO2NvbnN0IHQ9W107aWYodGhpcy5fcGxhdGZvcm1TdXBwb3J0c01vdXNlRXZlbnRzKCkpdC5wdXNoKFsibW91c2VsZWF2ZSIsKCk9PnRoaXMuaGlkZSgpXSxbIndoZWVsIix0PT50aGlzLl93aGVlbExpc3RlbmVyKHQpXSk7ZWxzZSBpZigib2ZmIiE9PXRoaXMudG91Y2hHZXN0dXJlcyl7dGhpcy5fZGlzYWJsZU5hdGl2ZUdlc3R1cmVzSWZOZWNlc3NhcnkoKTtjb25zdCBlPSgpPT57Y2xlYXJUaW1lb3V0KHRoaXMuX3RvdWNoc3RhcnRUaW1lb3V0KSx0aGlzLmhpZGUodGhpcy5fZGVmYXVsdE9wdGlvbnMudG91Y2hlbmRIaWRlRGVsYXkpfTt0LnB1c2goWyJ0b3VjaGVuZCIsZV0sWyJ0b3VjaGNhbmNlbCIsZV0pfXRoaXMuX2FkZExpc3RlbmVycyh0KSx0aGlzLl9wYXNzaXZlTGlzdGVuZXJzLnB1c2goLi4udCl9X2FkZExpc3RlbmVycyh0KXt0LmZvckVhY2goKChbdCxlXSk9Pnt0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcih0LGUsRTApfSkpfV9wbGF0Zm9ybVN1cHBvcnRzTW91c2VFdmVudHMoKXtyZXR1cm4hdGhpcy5fcGxhdGZvcm0uSU9TJiYhdGhpcy5fcGxhdGZvcm0uQU5EUk9JRH1fd2hlZWxMaXN0ZW5lcih0KXtpZih0aGlzLl9pc1Rvb2x0aXBWaXNpYmxlKCkpe2NvbnN0IGU9dGhpcy5fZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludCh0LmNsaWVudFgsdC5jbGllbnRZKSxuPXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtlPT09bnx8bi5jb250YWlucyhlKXx8dGhpcy5oaWRlKCl9fV9kaXNhYmxlTmF0aXZlR2VzdHVyZXNJZk5lY2Vzc2FyeSgpe2NvbnN0IHQ9dGhpcy50b3VjaEdlc3R1cmVzO2lmKCJvZmYiIT09dCl7Y29uc3QgZT10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsbj1lLnN0eWxlOygib24iPT09dHx8IklOUFVUIiE9PWUubm9kZU5hbWUmJiJURVhUQVJFQSIhPT1lLm5vZGVOYW1lKSYmKG4udXNlclNlbGVjdD1uLm1zVXNlclNlbGVjdD1uLndlYmtpdFVzZXJTZWxlY3Q9bi5Nb3pVc2VyU2VsZWN0PSJub25lIiksIm9uIiE9PXQmJmUuZHJhZ2dhYmxlfHwobi53ZWJraXRVc2VyRHJhZz0ibm9uZSIpLG4udG91Y2hBY3Rpb249Im5vbmUiLG4ud2Via2l0VGFwSGlnaGxpZ2h0Q29sb3I9InRyYW5zcGFyZW50In19fUYwLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxGMCkoZ2YoS0IpLGdmKEtoKSxnZihLTCksZ2YoRmIpLGdmKG1DKSxnZihjSCksZ2YoTkgpLGdmKGZGKSxnZih2b2lkIDApLGdmKHZGKSxnZih2b2lkIDApLGdmKHNNKSl9LEYwLsm1ZGlyPWhvKHt0eXBlOkYwLGlucHV0czp7c2hvd0RlbGF5OlsibWF0VG9vbHRpcFNob3dEZWxheSIsInNob3dEZWxheSJdLGhpZGVEZWxheTpbIm1hdFRvb2x0aXBIaWRlRGVsYXkiLCJoaWRlRGVsYXkiXSx0b3VjaEdlc3R1cmVzOlsibWF0VG9vbHRpcFRvdWNoR2VzdHVyZXMiLCJ0b3VjaEdlc3R1cmVzIl0scG9zaXRpb246WyJtYXRUb29sdGlwUG9zaXRpb24iLCJwb3NpdGlvbiJdLGRpc2FibGVkOlsibWF0VG9vbHRpcERpc2FibGVkIiwiZGlzYWJsZWQiXSxtZXNzYWdlOlsibWF0VG9vbHRpcCIsIm1lc3NhZ2UiXSx0b29sdGlwQ2xhc3M6WyJtYXRUb29sdGlwQ2xhc3MiLCJ0b29sdGlwQ2xhc3MiXX19KSxGMC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOktCfSx7dHlwZTpLaH0se3R5cGU6S0x9LHt0eXBlOkZifSx7dHlwZTptQ30se3R5cGU6Y0h9LHt0eXBlOk5IfSx7dHlwZTpmRn0se3R5cGU6dm9pZCAwfSx7dHlwZTp2Rn0se3R5cGU6dm9pZCAwfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19XSxGMC5wcm9wRGVjb3JhdG9ycz17cG9zaXRpb246W3t0eXBlOlJfLGFyZ3M6WyJtYXRUb29sdGlwUG9zaXRpb24iXX1dLGRpc2FibGVkOlt7dHlwZTpSXyxhcmdzOlsibWF0VG9vbHRpcERpc2FibGVkIl19XSxzaG93RGVsYXk6W3t0eXBlOlJfLGFyZ3M6WyJtYXRUb29sdGlwU2hvd0RlbGF5Il19XSxoaWRlRGVsYXk6W3t0eXBlOlJfLGFyZ3M6WyJtYXRUb29sdGlwSGlkZURlbGF5Il19XSx0b3VjaEdlc3R1cmVzOlt7dHlwZTpSXyxhcmdzOlsibWF0VG9vbHRpcFRvdWNoR2VzdHVyZXMiXX1dLG1lc3NhZ2U6W3t0eXBlOlJfLGFyZ3M6WyJtYXRUb29sdGlwIl19XSx0b29sdGlwQ2xhc3M6W3t0eXBlOlJfLGFyZ3M6WyJtYXRUb29sdGlwQ2xhc3MiXX1dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEYwLFt7dHlwZTprX31dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpLQn0se3R5cGU6S2h9LHt0eXBlOktMfSx7dHlwZTpGYn0se3R5cGU6bUN9LHt0eXBlOmNIfSx7dHlwZTpOSH0se3R5cGU6ZkZ9LHt0eXBlOnZvaWQgMH0se3R5cGU6dkZ9LHt0eXBlOnZvaWQgMH0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3NNXX1dfV19KSx7c2hvd0RlbGF5Olt7dHlwZTpSXyxhcmdzOlsibWF0VG9vbHRpcFNob3dEZWxheSJdfV0saGlkZURlbGF5Olt7dHlwZTpSXyxhcmdzOlsibWF0VG9vbHRpcEhpZGVEZWxheSJdfV0sdG91Y2hHZXN0dXJlczpbe3R5cGU6Ul8sYXJnczpbIm1hdFRvb2x0aXBUb3VjaEdlc3R1cmVzIl19XSxwb3NpdGlvbjpbe3R5cGU6Ul8sYXJnczpbIm1hdFRvb2x0aXBQb3NpdGlvbiJdfV0sZGlzYWJsZWQ6W3t0eXBlOlJfLGFyZ3M6WyJtYXRUb29sdGlwRGlzYWJsZWQiXX1dLG1lc3NhZ2U6W3t0eXBlOlJfLGFyZ3M6WyJtYXRUb29sdGlwIl19XSx0b29sdGlwQ2xhc3M6W3t0eXBlOlJfLGFyZ3M6WyJtYXRUb29sdGlwQ2xhc3MiXX1dfSk7Y2xhc3MgTDAgZXh0ZW5kcyBGMHtjb25zdHJ1Y3Rvcih0LGUsbixvLGksYSxyLHMsbCxjLGQscCl7c3VwZXIodCxlLG4sbyxpLGEscixzLGwsYyxkLHApLHRoaXMuX3Rvb2x0aXBDb21wb25lbnQ9VjB9fUwwLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxMMCkoZ2YoS0IpLGdmKEtoKSxnZihLTCksZ2YoRmIpLGdmKG1DKSxnZihjSCksZ2YoTkgpLGdmKGZGKSxnZihUMCksZ2YodkYsOCksZ2YoSTAsOCksZ2Yoc00pKX0sTDAuybVkaXI9aG8oe3R5cGU6TDAsc2VsZWN0b3JzOltbIiIsIm1hdFRvb2x0aXAiLCIiXV0saG9zdEF0dHJzOlsxLCJtYXQtdG9vbHRpcC10cmlnZ2VyIl0sZXhwb3J0QXM6WyJtYXRUb29sdGlwIl0sZmVhdHVyZXM6W1FwXX0pLEwwLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6S0J9LHt0eXBlOktofSx7dHlwZTpLTH0se3R5cGU6RmJ9LHt0eXBlOm1DfSx7dHlwZTpjSH0se3R5cGU6Tkh9LHt0eXBlOmZGfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbVDBdfV19LHt0eXBlOnZGLGRlY29yYXRvcnM6W3t0eXBlOkJyfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbSTBdfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoTDAsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW21hdFRvb2x0aXBdIixleHBvcnRBczoibWF0VG9vbHRpcCIsaG9zdDp7Y2xhc3M6Im1hdC10b29sdGlwLXRyaWdnZXIifX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOktCfSx7dHlwZTpLaH0se3R5cGU6S0x9LHt0eXBlOkZifSx7dHlwZTptQ30se3R5cGU6Y0h9LHt0eXBlOk5IfSx7dHlwZTpmRn0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W1QwXX1dfSx7dHlwZTp2RixkZWNvcmF0b3JzOlt7dHlwZTpCcn1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W0kwXX1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19XX0pLG51bGwpO2NsYXNzIEIwe2NvbnN0cnVjdG9yKHQpe3RoaXMuX2NoYW5nZURldGVjdG9yUmVmPXQsdGhpcy5fdmlzaWJpbGl0eT0iaW5pdGlhbCIsdGhpcy5fY2xvc2VPbkludGVyYWN0aW9uPSExLHRoaXMuX29uSGlkZT1uZXcgQn1zaG93KHQpe2NsZWFyVGltZW91dCh0aGlzLl9oaWRlVGltZW91dElkKSx0aGlzLl9jbG9zZU9uSW50ZXJhY3Rpb249ITAsdGhpcy5fc2hvd1RpbWVvdXRJZD1zZXRUaW1lb3V0KCgoKT0+e3RoaXMuX3Zpc2liaWxpdHk9InZpc2libGUiLHRoaXMuX3Nob3dUaW1lb3V0SWQ9dm9pZCAwLHRoaXMuX29uU2hvdygpLHRoaXMuX21hcmtGb3JDaGVjaygpfSksdCl9aGlkZSh0KXtjbGVhclRpbWVvdXQodGhpcy5fc2hvd1RpbWVvdXRJZCksdGhpcy5faGlkZVRpbWVvdXRJZD1zZXRUaW1lb3V0KCgoKT0+e3RoaXMuX3Zpc2liaWxpdHk9ImhpZGRlbiIsdGhpcy5faGlkZVRpbWVvdXRJZD12b2lkIDAsdGhpcy5fbWFya0ZvckNoZWNrKCl9KSx0KX1hZnRlckhpZGRlbigpe3JldHVybiB0aGlzLl9vbkhpZGV9aXNWaXNpYmxlKCl7cmV0dXJuInZpc2libGUiPT09dGhpcy5fdmlzaWJpbGl0eX1uZ09uRGVzdHJveSgpe2NsZWFyVGltZW91dCh0aGlzLl9zaG93VGltZW91dElkKSxjbGVhclRpbWVvdXQodGhpcy5faGlkZVRpbWVvdXRJZCksdGhpcy5fb25IaWRlLmNvbXBsZXRlKCl9X2FuaW1hdGlvblN0YXJ0KCl7dGhpcy5fY2xvc2VPbkludGVyYWN0aW9uPSExfV9hbmltYXRpb25Eb25lKHQpe2NvbnN0IGU9dC50b1N0YXRlOyJoaWRkZW4iIT09ZXx8dGhpcy5pc1Zpc2libGUoKXx8dGhpcy5fb25IaWRlLm5leHQoKSwidmlzaWJsZSIhPT1lJiYiaGlkZGVuIiE9PWV8fCh0aGlzLl9jbG9zZU9uSW50ZXJhY3Rpb249ITApfV9oYW5kbGVCb2R5SW50ZXJhY3Rpb24oKXt0aGlzLl9jbG9zZU9uSW50ZXJhY3Rpb24mJnRoaXMuaGlkZSgwKX1fbWFya0ZvckNoZWNrKCl7dGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCl9X29uU2hvdygpe319QjAuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEIwKShnZihPYikpfSxCMC7JtWRpcj1obyh7dHlwZTpCMH0pLEIwLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6T2J9XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEIwLFt7dHlwZTprX31dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpPYn1dfSksbnVsbCk7Y2xhc3MgVjAgZXh0ZW5kcyBCMHtjb25zdHJ1Y3Rvcih0LGUpe3N1cGVyKHQpLHRoaXMuX2JyZWFrcG9pbnRPYnNlcnZlcj1lLHRoaXMuX2lzSGFuZHNldD10aGlzLl9icmVha3BvaW50T2JzZXJ2ZXIub2JzZXJ2ZShtVil9fVYwLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxWMCkoZ2YoT2IpLGdmKGRWKSl9LFYwLsm1Y21wPXNvKHt0eXBlOlYwLHNlbGVjdG9yczpbWyJtYXQtdG9vbHRpcC1jb21wb25lbnQiXV0saG9zdEF0dHJzOlsiYXJpYS1oaWRkZW4iLCJ0cnVlIl0saG9zdFZhcnM6Mixob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezImZSYmbHUoInpvb20iLCJ2aXNpYmxlIj09PW4uX3Zpc2liaWxpdHk/MTpudWxsKX0sZmVhdHVyZXM6W1FwXSxkZWNsczozLHZhcnM6Nyxjb25zdHM6W1sxLCJtYXQtdG9vbHRpcCIsMywibmdDbGFzcyJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiYoQ2YoMCwiZGl2IiwwKSxSZigiQHN0YXRlLnN0YXJ0IiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLl9hbmltYXRpb25TdGFydCgpfSkpKCJAc3RhdGUuZG9uZSIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uX2FuaW1hdGlvbkRvbmUoZSl9KSksX3koMSwiYXN5bmMiKSxQdSgyKSxNZigpKSwyJmUpe2xldCB0O2N1KCJtYXQtdG9vbHRpcC1oYW5kc2V0IixudWxsPT0odD1DeSgxLDUsbi5faXNIYW5kc2V0KSk/bnVsbDp0Lm1hdGNoZXMpLGJmKCJuZ0NsYXNzIixuLnRvb2x0aXBDbGFzcykoIkBzdGF0ZSIsbi5fdmlzaWJpbGl0eSksRGMoMiksd3Uobi5tZXNzYWdlKX19LGRpcmVjdGl2ZXM6W0N2XSxwaXBlczpbVnZdLHN0eWxlczpbIi5tYXQtdG9vbHRpcC1wYW5lbHtwb2ludGVyLWV2ZW50czpub25lICFpbXBvcnRhbnR9Lm1hdC10b29sdGlwe2NvbG9yOiNmZmY7Ym9yZGVyLXJhZGl1czo0cHg7bWFyZ2luOjE0cHg7bWF4LXdpZHRoOjI1MHB4O3BhZGRpbmctbGVmdDo4cHg7cGFkZGluZy1yaWdodDo4cHg7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXN9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXRvb2x0aXB7b3V0bGluZTpzb2xpZCAxcHh9Lm1hdC10b29sdGlwLWhhbmRzZXR7bWFyZ2luOjI0cHg7cGFkZGluZy1sZWZ0OjE2cHg7cGFkZGluZy1yaWdodDoxNnB4fVxuIl0sZW5jYXBzdWxhdGlvbjoyLGRhdGE6e2FuaW1hdGlvbjpbUjAudG9vbHRpcFN0YXRlXX0sY2hhbmdlRGV0ZWN0aW9uOjB9KSxWMC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOk9ifSx7dHlwZTpkVn1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoVjAsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoibWF0LXRvb2x0aXAtY29tcG9uZW50Iix0ZW1wbGF0ZTonPGRpdiBjbGFzcz0ibWF0LXRvb2x0aXAiXG4gICAgIFtuZ0NsYXNzXT0idG9vbHRpcENsYXNzIlxuICAgICBbY2xhc3MubWF0LXRvb2x0aXAtaGFuZHNldF09IihfaXNIYW5kc2V0IHwgYXN5bmMpPy5tYXRjaGVzIlxuICAgICBbQHN0YXRlXT0iX3Zpc2liaWxpdHkiXG4gICAgIChAc3RhdGUuc3RhcnQpPSJfYW5pbWF0aW9uU3RhcnQoKSJcbiAgICAgKEBzdGF0ZS5kb25lKT0iX2FuaW1hdGlvbkRvbmUoJGV2ZW50KSI+e3ttZXNzYWdlfX08L2Rpdj5cbicsZW5jYXBzdWxhdGlvbjpXbi5Ob25lLGNoYW5nZURldGVjdGlvbjpqbi5PblB1c2gsYW5pbWF0aW9uczpbUjAudG9vbHRpcFN0YXRlXSxob3N0OnsiW3N0eWxlLnpvb21dIjonX3Zpc2liaWxpdHkgPT09ICJ2aXNpYmxlIiA/IDEgOiBudWxsJywiYXJpYS1oaWRkZW4iOiJ0cnVlIn0sc3R5bGVzOlsiLm1hdC10b29sdGlwLXBhbmVse3BvaW50ZXItZXZlbnRzOm5vbmUgIWltcG9ydGFudH0ubWF0LXRvb2x0aXB7Y29sb3I6I2ZmZjtib3JkZXItcmFkaXVzOjRweDttYXJnaW46MTRweDttYXgtd2lkdGg6MjUwcHg7cGFkZGluZy1sZWZ0OjhweDtwYWRkaW5nLXJpZ2h0OjhweDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpc30uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtdG9vbHRpcHtvdXRsaW5lOnNvbGlkIDFweH0ubWF0LXRvb2x0aXAtaGFuZHNldHttYXJnaW46MjRweDtwYWRkaW5nLWxlZnQ6MTZweDtwYWRkaW5nLXJpZ2h0OjE2cHh9XG4iXX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOk9ifSx7dHlwZTpkVn1dfSksbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBqMHt9ZnVuY3Rpb24gVTAodCxlKXtpZigxJnQmJihDZigwLCJtYXQtb3B0aW9uIiwxOSksUHUoMSksTWYoKSksMiZ0KXtjb25zdCB0PWUuJGltcGxpY2l0O2JmKCJ2YWx1ZSIsdCksRGMoMSksa3UoIiAiLHQsIiAiKX19ZnVuY3Rpb24gVzAodCxlKXtpZigxJnQpe2NvbnN0IHQ9d2YoKTtDZigwLCJtYXQtZm9ybS1maWVsZCIsMTYpLENmKDEsIm1hdC1zZWxlY3QiLDE3KSxSZigic2VsZWN0aW9uQ2hhbmdlIiwoZnVuY3Rpb24gZShuKXtQaSh0KTtyZXR1cm4gemYoMikuX2NoYW5nZVBhZ2VTaXplKG4udmFsdWUpfSkpLEhtKDIsVTAsMiwyLCJtYXQtb3B0aW9uIiwxOCksTWYoKSxNZigpfWlmKDImdCl7Y29uc3QgdD16ZigyKTtiZigiYXBwZWFyYW5jZSIsdC5fZm9ybUZpZWxkQXBwZWFyYW5jZSkoImNvbG9yIix0LmNvbG9yKSxEYygxKSxiZigidmFsdWUiLHQucGFnZVNpemUpKCJkaXNhYmxlZCIsdC5kaXNhYmxlZCkoImFyaWEtbGFiZWwiLHQuX2ludGwuaXRlbXNQZXJQYWdlTGFiZWwpLERjKDEpLGJmKCJuZ0Zvck9mIix0Ll9kaXNwbGF5ZWRQYWdlU2l6ZU9wdGlvbnMpfX1mdW5jdGlvbiBHMCh0LGUpe2lmKDEmdCYmKENmKDAsImRpdiIsMjApLFB1KDEpLE1mKCkpLDImdCl7Y29uc3QgdD16ZigyKTtEYygxKSx3dSh0LnBhZ2VTaXplKX19ZnVuY3Rpb24gWTAodCxlKXtpZigxJnQmJihDZigwLCJkaXYiLDEyKSxDZigxLCJkaXYiLDEzKSxQdSgyKSxNZigpLEhtKDMsVzAsMyw2LCJtYXQtZm9ybS1maWVsZCIsMTQpLEhtKDQsRzAsMiwxLCJkaXYiLDE1KSxNZigpKSwyJnQpe2NvbnN0IHQ9emYoKTtEYygyKSxrdSgiICIsdC5faW50bC5pdGVtc1BlclBhZ2VMYWJlbCwiICIpLERjKDEpLGJmKCJuZ0lmIix0Ll9kaXNwbGF5ZWRQYWdlU2l6ZU9wdGlvbnMubGVuZ3RoPjEpLERjKDEpLGJmKCJuZ0lmIix0Ll9kaXNwbGF5ZWRQYWdlU2l6ZU9wdGlvbnMubGVuZ3RoPD0xKX19ZnVuY3Rpb24gcTAodCxlKXtpZigxJnQpe2NvbnN0IHQ9d2YoKTtDZigwLCJidXR0b24iLDIxKSxSZigiY2xpY2siLChmdW5jdGlvbiBlKCl7UGkodCk7cmV0dXJuIHpmKCkuZmlyc3RQYWdlKCl9KSksb2EoKSxDZigxLCJzdmciLDcpLHZmKDIsInBhdGgiLDIyKSxNZigpLE1mKCl9aWYoMiZ0KXtjb25zdCB0PXpmKCk7YmYoIm1hdFRvb2x0aXAiLHQuX2ludGwuZmlyc3RQYWdlTGFiZWwpKCJtYXRUb29sdGlwRGlzYWJsZWQiLHQuX3ByZXZpb3VzQnV0dG9uc0Rpc2FibGVkKCkpKCJtYXRUb29sdGlwUG9zaXRpb24iLCJhYm92ZSIpKCJkaXNhYmxlZCIsdC5fcHJldmlvdXNCdXR0b25zRGlzYWJsZWQoKSkseW0oImFyaWEtbGFiZWwiLHQuX2ludGwuZmlyc3RQYWdlTGFiZWwpfX1mdW5jdGlvbiBaMCh0LGUpe2lmKDEmdCl7Y29uc3QgdD13ZigpO29hKCksYWEoKSxDZigwLCJidXR0b24iLDIzKSxSZigiY2xpY2siLChmdW5jdGlvbiBlKCl7UGkodCk7cmV0dXJuIHpmKCkubGFzdFBhZ2UoKX0pKSxvYSgpLENmKDEsInN2ZyIsNyksdmYoMiwicGF0aCIsMjQpLE1mKCksTWYoKX1pZigyJnQpe2NvbnN0IHQ9emYoKTtiZigibWF0VG9vbHRpcCIsdC5faW50bC5sYXN0UGFnZUxhYmVsKSgibWF0VG9vbHRpcERpc2FibGVkIix0Ll9uZXh0QnV0dG9uc0Rpc2FibGVkKCkpKCJtYXRUb29sdGlwUG9zaXRpb24iLCJhYm92ZSIpKCJkaXNhYmxlZCIsdC5fbmV4dEJ1dHRvbnNEaXNhYmxlZCgpKSx5bSgiYXJpYS1sYWJlbCIsdC5faW50bC5sYXN0UGFnZUxhYmVsKX19ajAuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGowKX0sajAuybVtb2Q9Zm8oe3R5cGU6ajB9KSxqMC7JtWluaj1Ebih7cHJvdmlkZXJzOltOMF0saW1wb3J0czpbW19GLHJ4LG9WLE5GXSxORixvQl19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGowLFt7dHlwZTpMXyxhcmdzOlt7aW1wb3J0czpbX0Yscngsb1YsTkZdLGV4cG9ydHM6W0wwLFYwLE5GLG9CXSxkZWNsYXJhdGlvbnM6W0wwLFYwXSxlbnRyeUNvbXBvbmVudHM6W1YwXSxwcm92aWRlcnM6W04wXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKGowLHtkZWNsYXJhdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm5bTDAsVjBdfSxpbXBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW19GLHJ4LG9WLE5GXX0sZXhwb3J0czpmdW5jdGlvbigpe3JldHVybltMMCxWMCxORixvQl19fSk7Y2xhc3MgWDB7Y29uc3RydWN0b3IoKXt0aGlzLmNoYW5nZXM9bmV3IEIsdGhpcy5pdGVtc1BlclBhZ2VMYWJlbD0iSXRlbXMgcGVyIHBhZ2U6Iix0aGlzLm5leHRQYWdlTGFiZWw9Ik5leHQgcGFnZSIsdGhpcy5wcmV2aW91c1BhZ2VMYWJlbD0iUHJldmlvdXMgcGFnZSIsdGhpcy5maXJzdFBhZ2VMYWJlbD0iRmlyc3QgcGFnZSIsdGhpcy5sYXN0UGFnZUxhYmVsPSJMYXN0IHBhZ2UiLHRoaXMuZ2V0UmFuZ2VMYWJlbD0odCxlLG4pPT57aWYoMD09bnx8MD09ZSlyZXR1cm5gMCBvZiAke259YDtjb25zdCBvPXQqZTtyZXR1cm5gJHtvKzF9IOKAkyAke288KG49TWF0aC5tYXgobiwwKSk/TWF0aC5taW4obytlLG4pOm8rZX0gb2YgJHtufWB9fX1YMC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8WDApfSxYMC7JtXByb3Y9U24oe2ZhY3Rvcnk6ZnVuY3Rpb24gdCgpe3JldHVybiBuZXcgWDB9LHRva2VuOlgwLHByb3ZpZGVkSW46InJvb3QifSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihYMCxbe3R5cGU6VW0sYXJnczpbe3Byb3ZpZGVkSW46InJvb3QifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5bXX0pLG51bGwpO2NvbnN0IEswPXtwcm92aWRlOlgwLGRlcHM6W1tuZXcgQnIsbmV3IGpyLFgwXV0sdXNlRmFjdG9yeTpmdW5jdGlvbiBKMCh0KXtyZXR1cm4gdHx8bmV3IFgwfX0sUTA9bmV3IGVyKCJNQVRfUEFHSU5BVE9SX0RFRkFVTFRfT1BUSU9OUyIpLCQwPXpGKEJGKGNsYXNze30pKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgdDEgZXh0ZW5kcyAkMHtjb25zdHJ1Y3Rvcih0LGUsbil7aWYoc3VwZXIoKSx0aGlzLl9pbnRsPXQsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWY9ZSx0aGlzLl9wYWdlSW5kZXg9MCx0aGlzLl9sZW5ndGg9MCx0aGlzLl9wYWdlU2l6ZU9wdGlvbnM9W10sdGhpcy5faGlkZVBhZ2VTaXplPSExLHRoaXMuX3Nob3dGaXJzdExhc3RCdXR0b25zPSExLHRoaXMucGFnZT1uZXcgU3ksdGhpcy5faW50bENoYW5nZXM9dC5jaGFuZ2VzLnN1YnNjcmliZSgoKCk9PnRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpKSksbil7Y29uc3R7cGFnZVNpemU6dCxwYWdlU2l6ZU9wdGlvbnM6ZSxoaWRlUGFnZVNpemU6byxzaG93Rmlyc3RMYXN0QnV0dG9uczppfT1uO251bGwhPXQmJih0aGlzLl9wYWdlU2l6ZT10KSxudWxsIT1lJiYodGhpcy5fcGFnZVNpemVPcHRpb25zPWUpLG51bGwhPW8mJih0aGlzLl9oaWRlUGFnZVNpemU9byksbnVsbCE9aSYmKHRoaXMuX3Nob3dGaXJzdExhc3RCdXR0b25zPWkpfX1nZXQgcGFnZUluZGV4KCl7cmV0dXJuIHRoaXMuX3BhZ2VJbmRleH1zZXQgcGFnZUluZGV4KHQpe3RoaXMuX3BhZ2VJbmRleD1NYXRoLm1heChuSCh0KSwwKSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKX1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXMuX2xlbmd0aH1zZXQgbGVuZ3RoKHQpe3RoaXMuX2xlbmd0aD1uSCh0KSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKX1nZXQgcGFnZVNpemUoKXtyZXR1cm4gdGhpcy5fcGFnZVNpemV9c2V0IHBhZ2VTaXplKHQpe3RoaXMuX3BhZ2VTaXplPU1hdGgubWF4KG5IKHQpLDApLHRoaXMuX3VwZGF0ZURpc3BsYXllZFBhZ2VTaXplT3B0aW9ucygpfWdldCBwYWdlU2l6ZU9wdGlvbnMoKXtyZXR1cm4gdGhpcy5fcGFnZVNpemVPcHRpb25zfXNldCBwYWdlU2l6ZU9wdGlvbnModCl7dGhpcy5fcGFnZVNpemVPcHRpb25zPSh0fHxbXSkubWFwKCh0PT5uSCh0KSkpLHRoaXMuX3VwZGF0ZURpc3BsYXllZFBhZ2VTaXplT3B0aW9ucygpfWdldCBoaWRlUGFnZVNpemUoKXtyZXR1cm4gdGhpcy5faGlkZVBhZ2VTaXplfXNldCBoaWRlUGFnZVNpemUodCl7dGhpcy5faGlkZVBhZ2VTaXplPWVIKHQpfWdldCBzaG93Rmlyc3RMYXN0QnV0dG9ucygpe3JldHVybiB0aGlzLl9zaG93Rmlyc3RMYXN0QnV0dG9uc31zZXQgc2hvd0ZpcnN0TGFzdEJ1dHRvbnModCl7dGhpcy5fc2hvd0ZpcnN0TGFzdEJ1dHRvbnM9ZUgodCl9bmdPbkluaXQoKXt0aGlzLl9pbml0aWFsaXplZD0hMCx0aGlzLl91cGRhdGVEaXNwbGF5ZWRQYWdlU2l6ZU9wdGlvbnMoKSx0aGlzLl9tYXJrSW5pdGlhbGl6ZWQoKX1uZ09uRGVzdHJveSgpe3RoaXMuX2ludGxDaGFuZ2VzLnVuc3Vic2NyaWJlKCl9bmV4dFBhZ2UoKXtpZighdGhpcy5oYXNOZXh0UGFnZSgpKXJldHVybjtjb25zdCB0PXRoaXMucGFnZUluZGV4O3RoaXMucGFnZUluZGV4KyssdGhpcy5fZW1pdFBhZ2VFdmVudCh0KX1wcmV2aW91c1BhZ2UoKXtpZighdGhpcy5oYXNQcmV2aW91c1BhZ2UoKSlyZXR1cm47Y29uc3QgdD10aGlzLnBhZ2VJbmRleDt0aGlzLnBhZ2VJbmRleC0tLHRoaXMuX2VtaXRQYWdlRXZlbnQodCl9Zmlyc3RQYWdlKCl7aWYoIXRoaXMuaGFzUHJldmlvdXNQYWdlKCkpcmV0dXJuO2NvbnN0IHQ9dGhpcy5wYWdlSW5kZXg7dGhpcy5wYWdlSW5kZXg9MCx0aGlzLl9lbWl0UGFnZUV2ZW50KHQpfWxhc3RQYWdlKCl7aWYoIXRoaXMuaGFzTmV4dFBhZ2UoKSlyZXR1cm47Y29uc3QgdD10aGlzLnBhZ2VJbmRleDt0aGlzLnBhZ2VJbmRleD10aGlzLmdldE51bWJlck9mUGFnZXMoKS0xLHRoaXMuX2VtaXRQYWdlRXZlbnQodCl9aGFzUHJldmlvdXNQYWdlKCl7cmV0dXJuIHRoaXMucGFnZUluZGV4Pj0xJiYwIT10aGlzLnBhZ2VTaXplfWhhc05leHRQYWdlKCl7Y29uc3QgdD10aGlzLmdldE51bWJlck9mUGFnZXMoKS0xO3JldHVybiB0aGlzLnBhZ2VJbmRleDx0JiYwIT10aGlzLnBhZ2VTaXplfWdldE51bWJlck9mUGFnZXMoKXtyZXR1cm4gdGhpcy5wYWdlU2l6ZT9NYXRoLmNlaWwodGhpcy5sZW5ndGgvdGhpcy5wYWdlU2l6ZSk6MH1fY2hhbmdlUGFnZVNpemUodCl7Y29uc3QgZT10aGlzLnBhZ2VJbmRleDt0aGlzLnBhZ2VJbmRleD1NYXRoLmZsb29yKHRoaXMucGFnZUluZGV4KnRoaXMucGFnZVNpemUvdCl8fDAsdGhpcy5wYWdlU2l6ZT10LHRoaXMuX2VtaXRQYWdlRXZlbnQoZSl9X25leHRCdXR0b25zRGlzYWJsZWQoKXtyZXR1cm4gdGhpcy5kaXNhYmxlZHx8IXRoaXMuaGFzTmV4dFBhZ2UoKX1fcHJldmlvdXNCdXR0b25zRGlzYWJsZWQoKXtyZXR1cm4gdGhpcy5kaXNhYmxlZHx8IXRoaXMuaGFzUHJldmlvdXNQYWdlKCl9X3VwZGF0ZURpc3BsYXllZFBhZ2VTaXplT3B0aW9ucygpe3RoaXMuX2luaXRpYWxpemVkJiYodGhpcy5wYWdlU2l6ZXx8KHRoaXMuX3BhZ2VTaXplPTAhPXRoaXMucGFnZVNpemVPcHRpb25zLmxlbmd0aD90aGlzLnBhZ2VTaXplT3B0aW9uc1swXTo1MCksdGhpcy5fZGlzcGxheWVkUGFnZVNpemVPcHRpb25zPXRoaXMucGFnZVNpemVPcHRpb25zLnNsaWNlKCksLTE9PT10aGlzLl9kaXNwbGF5ZWRQYWdlU2l6ZU9wdGlvbnMuaW5kZXhPZih0aGlzLnBhZ2VTaXplKSYmdGhpcy5fZGlzcGxheWVkUGFnZVNpemVPcHRpb25zLnB1c2godGhpcy5wYWdlU2l6ZSksdGhpcy5fZGlzcGxheWVkUGFnZVNpemVPcHRpb25zLnNvcnQoKCh0LGUpPT50LWUpKSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSl9X2VtaXRQYWdlRXZlbnQodCl7dGhpcy5wYWdlLmVtaXQoe3ByZXZpb3VzUGFnZUluZGV4OnQscGFnZUluZGV4OnRoaXMucGFnZUluZGV4LHBhZ2VTaXplOnRoaXMucGFnZVNpemUsbGVuZ3RoOnRoaXMubGVuZ3RofSl9fXQxLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx0MSkoZ2YoWDApLGdmKE9iKSxnZih2b2lkIDApKX0sdDEuybVkaXI9aG8oe3R5cGU6dDEsaW5wdXRzOntwYWdlSW5kZXg6InBhZ2VJbmRleCIsbGVuZ3RoOiJsZW5ndGgiLHBhZ2VTaXplOiJwYWdlU2l6ZSIscGFnZVNpemVPcHRpb25zOiJwYWdlU2l6ZU9wdGlvbnMiLGhpZGVQYWdlU2l6ZToiaGlkZVBhZ2VTaXplIixzaG93Rmlyc3RMYXN0QnV0dG9uczoic2hvd0ZpcnN0TGFzdEJ1dHRvbnMiLGNvbG9yOiJjb2xvciJ9LG91dHB1dHM6e3BhZ2U6InBhZ2UifSxmZWF0dXJlczpbUXBdfSksdDEuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpYMH0se3R5cGU6T2J9LHt0eXBlOnZvaWQgMH1dLHQxLnByb3BEZWNvcmF0b3JzPXtjb2xvcjpbe3R5cGU6Ul99XSxwYWdlSW5kZXg6W3t0eXBlOlJffV0sbGVuZ3RoOlt7dHlwZTpSX31dLHBhZ2VTaXplOlt7dHlwZTpSX31dLHBhZ2VTaXplT3B0aW9uczpbe3R5cGU6Ul99XSxoaWRlUGFnZVNpemU6W3t0eXBlOlJffV0sc2hvd0ZpcnN0TGFzdEJ1dHRvbnM6W3t0eXBlOlJffV0scGFnZTpbe3R5cGU6RV99XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih0MSxbe3R5cGU6a199XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6WDB9LHt0eXBlOk9ifSx7dHlwZTp2b2lkIDB9XX0pLHtwYWdlOlt7dHlwZTpFX31dLHBhZ2VJbmRleDpbe3R5cGU6Ul99XSxsZW5ndGg6W3t0eXBlOlJffV0scGFnZVNpemU6W3t0eXBlOlJffV0scGFnZVNpemVPcHRpb25zOlt7dHlwZTpSX31dLGhpZGVQYWdlU2l6ZTpbe3R5cGU6Ul99XSxzaG93Rmlyc3RMYXN0QnV0dG9uczpbe3R5cGU6Ul99XSxjb2xvcjpbe3R5cGU6Ul99XX0pO2NsYXNzIGUxIGV4dGVuZHMgdDF7Y29uc3RydWN0b3IodCxlLG4pe3N1cGVyKHQsZSxuKSxuJiZudWxsIT1uLmZvcm1GaWVsZEFwcGVhcmFuY2UmJih0aGlzLl9mb3JtRmllbGRBcHBlYXJhbmNlPW4uZm9ybUZpZWxkQXBwZWFyYW5jZSl9fWUxLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxlMSkoZ2YoWDApLGdmKE9iKSxnZihRMCw4KSl9LGUxLsm1Y21wPXNvKHt0eXBlOmUxLHNlbGVjdG9yczpbWyJtYXQtcGFnaW5hdG9yIl1dLGhvc3RBdHRyczpbInJvbGUiLCJncm91cCIsMSwibWF0LXBhZ2luYXRvciJdLGlucHV0czp7ZGlzYWJsZWQ6ImRpc2FibGVkIn0sZXhwb3J0QXM6WyJtYXRQYWdpbmF0b3IiXSxmZWF0dXJlczpbUXBdLGRlY2xzOjE0LHZhcnM6MTQsY29uc3RzOltbMSwibWF0LXBhZ2luYXRvci1vdXRlci1jb250YWluZXIiXSxbMSwibWF0LXBhZ2luYXRvci1jb250YWluZXIiXSxbImNsYXNzIiwibWF0LXBhZ2luYXRvci1wYWdlLXNpemUiLDQsIm5nSWYiXSxbMSwibWF0LXBhZ2luYXRvci1yYW5nZS1hY3Rpb25zIl0sWzEsIm1hdC1wYWdpbmF0b3ItcmFuZ2UtbGFiZWwiXSxbIm1hdC1pY29uLWJ1dHRvbiIsIiIsInR5cGUiLCJidXR0b24iLCJjbGFzcyIsIm1hdC1wYWdpbmF0b3ItbmF2aWdhdGlvbi1maXJzdCIsMywibWF0VG9vbHRpcCIsIm1hdFRvb2x0aXBEaXNhYmxlZCIsIm1hdFRvb2x0aXBQb3NpdGlvbiIsImRpc2FibGVkIiwiY2xpY2siLDQsIm5nSWYiXSxbIm1hdC1pY29uLWJ1dHRvbiIsIiIsInR5cGUiLCJidXR0b24iLDEsIm1hdC1wYWdpbmF0b3ItbmF2aWdhdGlvbi1wcmV2aW91cyIsMywibWF0VG9vbHRpcCIsIm1hdFRvb2x0aXBEaXNhYmxlZCIsIm1hdFRvb2x0aXBQb3NpdGlvbiIsImRpc2FibGVkIiwiY2xpY2siXSxbInZpZXdCb3giLCIwIDAgMjQgMjQiLCJmb2N1c2FibGUiLCJmYWxzZSIsMSwibWF0LXBhZ2luYXRvci1pY29uIl0sWyJkIiwiTTE1LjQxIDcuNDFMMTQgNmwtNiA2IDYgNiAxLjQxLTEuNDFMMTAuODMgMTJ6Il0sWyJtYXQtaWNvbi1idXR0b24iLCIiLCJ0eXBlIiwiYnV0dG9uIiwxLCJtYXQtcGFnaW5hdG9yLW5hdmlnYXRpb24tbmV4dCIsMywibWF0VG9vbHRpcCIsIm1hdFRvb2x0aXBEaXNhYmxlZCIsIm1hdFRvb2x0aXBQb3NpdGlvbiIsImRpc2FibGVkIiwiY2xpY2siXSxbImQiLCJNMTAgNkw4LjU5IDcuNDEgMTMuMTcgMTJsLTQuNTggNC41OUwxMCAxOGw2LTZ6Il0sWyJtYXQtaWNvbi1idXR0b24iLCIiLCJ0eXBlIiwiYnV0dG9uIiwiY2xhc3MiLCJtYXQtcGFnaW5hdG9yLW5hdmlnYXRpb24tbGFzdCIsMywibWF0VG9vbHRpcCIsIm1hdFRvb2x0aXBEaXNhYmxlZCIsIm1hdFRvb2x0aXBQb3NpdGlvbiIsImRpc2FibGVkIiwiY2xpY2siLDQsIm5nSWYiXSxbMSwibWF0LXBhZ2luYXRvci1wYWdlLXNpemUiXSxbMSwibWF0LXBhZ2luYXRvci1wYWdlLXNpemUtbGFiZWwiXSxbImNsYXNzIiwibWF0LXBhZ2luYXRvci1wYWdlLXNpemUtc2VsZWN0IiwzLCJhcHBlYXJhbmNlIiwiY29sb3IiLDQsIm5nSWYiXSxbImNsYXNzIiwibWF0LXBhZ2luYXRvci1wYWdlLXNpemUtdmFsdWUiLDQsIm5nSWYiXSxbMSwibWF0LXBhZ2luYXRvci1wYWdlLXNpemUtc2VsZWN0IiwzLCJhcHBlYXJhbmNlIiwiY29sb3IiXSxbMywidmFsdWUiLCJkaXNhYmxlZCIsImFyaWEtbGFiZWwiLCJzZWxlY3Rpb25DaGFuZ2UiXSxbMywidmFsdWUiLDQsIm5nRm9yIiwibmdGb3JPZiJdLFszLCJ2YWx1ZSJdLFsxLCJtYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZS12YWx1ZSJdLFsibWF0LWljb24tYnV0dG9uIiwiIiwidHlwZSIsImJ1dHRvbiIsMSwibWF0LXBhZ2luYXRvci1uYXZpZ2F0aW9uLWZpcnN0IiwzLCJtYXRUb29sdGlwIiwibWF0VG9vbHRpcERpc2FibGVkIiwibWF0VG9vbHRpcFBvc2l0aW9uIiwiZGlzYWJsZWQiLCJjbGljayJdLFsiZCIsIk0xOC40MSAxNi41OUwxMy44MiAxMmw0LjU5LTQuNTlMMTcgNmwtNiA2IDYgNnpNNiA2aDJ2MTJINnoiXSxbIm1hdC1pY29uLWJ1dHRvbiIsIiIsInR5cGUiLCJidXR0b24iLDEsIm1hdC1wYWdpbmF0b3ItbmF2aWdhdGlvbi1sYXN0IiwzLCJtYXRUb29sdGlwIiwibWF0VG9vbHRpcERpc2FibGVkIiwibWF0VG9vbHRpcFBvc2l0aW9uIiwiZGlzYWJsZWQiLCJjbGljayJdLFsiZCIsIk01LjU5IDcuNDFMMTAuMTggMTJsLTQuNTkgNC41OUw3IDE4bDYtNi02LTZ6TTE2IDZoMnYxMmgtMnoiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKENmKDAsImRpdiIsMCksQ2YoMSwiZGl2IiwxKSxIbSgyLFkwLDUsMywiZGl2IiwyKSxDZigzLCJkaXYiLDMpLENmKDQsImRpdiIsNCksUHUoNSksTWYoKSxIbSg2LHEwLDMsNSwiYnV0dG9uIiw1KSxDZig3LCJidXR0b24iLDYpLFJmKCJjbGljayIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5wcmV2aW91c1BhZ2UoKX0pKSxvYSgpLENmKDgsInN2ZyIsNyksdmYoOSwicGF0aCIsOCksTWYoKSxNZigpLGFhKCksQ2YoMTAsImJ1dHRvbiIsOSksUmYoImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm5leHRQYWdlKCl9KSksb2EoKSxDZigxMSwic3ZnIiw3KSx2ZigxMiwicGF0aCIsMTApLE1mKCksTWYoKSxIbSgxMyxaMCwzLDUsImJ1dHRvbiIsMTEpLE1mKCksTWYoKSxNZigpKSwyJmUmJihEYygyKSxiZigibmdJZiIsIW4uaGlkZVBhZ2VTaXplKSxEYygzKSxrdSgiICIsbi5faW50bC5nZXRSYW5nZUxhYmVsKG4ucGFnZUluZGV4LG4ucGFnZVNpemUsbi5sZW5ndGgpLCIgIiksRGMoMSksYmYoIm5nSWYiLG4uc2hvd0ZpcnN0TGFzdEJ1dHRvbnMpLERjKDEpLGJmKCJtYXRUb29sdGlwIixuLl9pbnRsLnByZXZpb3VzUGFnZUxhYmVsKSgibWF0VG9vbHRpcERpc2FibGVkIixuLl9wcmV2aW91c0J1dHRvbnNEaXNhYmxlZCgpKSgibWF0VG9vbHRpcFBvc2l0aW9uIiwiYWJvdmUiKSgiZGlzYWJsZWQiLG4uX3ByZXZpb3VzQnV0dG9uc0Rpc2FibGVkKCkpLHltKCJhcmlhLWxhYmVsIixuLl9pbnRsLnByZXZpb3VzUGFnZUxhYmVsKSxEYygzKSxiZigibWF0VG9vbHRpcCIsbi5faW50bC5uZXh0UGFnZUxhYmVsKSgibWF0VG9vbHRpcERpc2FibGVkIixuLl9uZXh0QnV0dG9uc0Rpc2FibGVkKCkpKCJtYXRUb29sdGlwUG9zaXRpb24iLCJhYm92ZSIpKCJkaXNhYmxlZCIsbi5fbmV4dEJ1dHRvbnNEaXNhYmxlZCgpKSx5bSgiYXJpYS1sYWJlbCIsbi5faW50bC5uZXh0UGFnZUxhYmVsKSxEYygzKSxiZigibmdJZiIsbi5zaG93Rmlyc3RMYXN0QnV0dG9ucykpfSxkaXJlY3RpdmVzOltQdixOTCxMMCxfVSxPWSx4dixQTF0sc3R5bGVzOlsiLm1hdC1wYWdpbmF0b3J7ZGlzcGxheTpibG9ja30ubWF0LXBhZ2luYXRvci1vdXRlci1jb250YWluZXJ7ZGlzcGxheTpmbGV4fS5tYXQtcGFnaW5hdG9yLWNvbnRhaW5lcntkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpmbGV4LWVuZDtwYWRkaW5nOjAgOHB4O2ZsZXgtd3JhcDp3cmFwLXJldmVyc2U7d2lkdGg6MTAwJX0ubWF0LXBhZ2luYXRvci1wYWdlLXNpemV7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmJhc2VsaW5lO21hcmdpbi1yaWdodDo4cHh9W2Rpcj1ydGxdIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZXttYXJnaW4tcmlnaHQ6MDttYXJnaW4tbGVmdDo4cHh9Lm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplLWxhYmVse21hcmdpbjowIDRweH0ubWF0LXBhZ2luYXRvci1wYWdlLXNpemUtc2VsZWN0e21hcmdpbjo2cHggNHB4IDAgNHB4O3dpZHRoOjU2cHh9Lm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplLXNlbGVjdC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmV7d2lkdGg6NjRweH0ubWF0LXBhZ2luYXRvci1wYWdlLXNpemUtc2VsZWN0Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbHt3aWR0aDo2NHB4fS5tYXQtcGFnaW5hdG9yLXJhbmdlLWxhYmVse21hcmdpbjowIDMycHggMCAyNHB4fS5tYXQtcGFnaW5hdG9yLXJhbmdlLWFjdGlvbnN7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcn0ubWF0LXBhZ2luYXRvci1pY29ue3dpZHRoOjI4cHg7ZmlsbDpjdXJyZW50Q29sb3J9W2Rpcj1ydGxdIC5tYXQtcGFnaW5hdG9yLWljb257dHJhbnNmb3JtOnJvdGF0ZSgxODBkZWcpfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1wYWdpbmF0b3ItaWNvbntmaWxsOkNhbnZhc1RleHR9XG4iXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSxlMS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOlgwfSx7dHlwZTpPYn0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltRMF19XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoZTEsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoibWF0LXBhZ2luYXRvciIsZXhwb3J0QXM6Im1hdFBhZ2luYXRvciIsdGVtcGxhdGU6JzxkaXYgY2xhc3M9Im1hdC1wYWdpbmF0b3Itb3V0ZXItY29udGFpbmVyIj5cbiAgPGRpdiBjbGFzcz0ibWF0LXBhZ2luYXRvci1jb250YWluZXIiPlxuICAgIDxkaXYgY2xhc3M9Im1hdC1wYWdpbmF0b3ItcGFnZS1zaXplIiAqbmdJZj0iIWhpZGVQYWdlU2l6ZSI+XG4gICAgICA8ZGl2IGNsYXNzPSJtYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZS1sYWJlbCI+XG4gICAgICAgIHt7X2ludGwuaXRlbXNQZXJQYWdlTGFiZWx9fVxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxtYXQtZm9ybS1maWVsZFxuICAgICAgICAqbmdJZj0iX2Rpc3BsYXllZFBhZ2VTaXplT3B0aW9ucy5sZW5ndGggPiAxIlxuICAgICAgICBbYXBwZWFyYW5jZV09Il9mb3JtRmllbGRBcHBlYXJhbmNlISJcbiAgICAgICAgW2NvbG9yXT0iY29sb3IiXG4gICAgICAgIGNsYXNzPSJtYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZS1zZWxlY3QiPlxuICAgICAgICA8bWF0LXNlbGVjdFxuICAgICAgICAgIFt2YWx1ZV09InBhZ2VTaXplIlxuICAgICAgICAgIFtkaXNhYmxlZF09ImRpc2FibGVkIlxuICAgICAgICAgIFthcmlhLWxhYmVsXT0iX2ludGwuaXRlbXNQZXJQYWdlTGFiZWwiXG4gICAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9Il9jaGFuZ2VQYWdlU2l6ZSgkZXZlbnQudmFsdWUpIj5cbiAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9ImxldCBwYWdlU2l6ZU9wdGlvbiBvZiBfZGlzcGxheWVkUGFnZVNpemVPcHRpb25zIiBbdmFsdWVdPSJwYWdlU2l6ZU9wdGlvbiI+XG4gICAgICAgICAgICB7e3BhZ2VTaXplT3B0aW9ufX1cbiAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9Im1hdC1wYWdpbmF0b3ItcGFnZS1zaXplLXZhbHVlIlxuICAgICAgICAqbmdJZj0iX2Rpc3BsYXllZFBhZ2VTaXplT3B0aW9ucy5sZW5ndGggPD0gMSI+e3twYWdlU2l6ZX19PC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPSJtYXQtcGFnaW5hdG9yLXJhbmdlLWFjdGlvbnMiPlxuICAgICAgPGRpdiBjbGFzcz0ibWF0LXBhZ2luYXRvci1yYW5nZS1sYWJlbCI+XG4gICAgICAgIHt7X2ludGwuZ2V0UmFuZ2VMYWJlbChwYWdlSW5kZXgsIHBhZ2VTaXplLCBsZW5ndGgpfX1cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiB0eXBlPSJidXR0b24iXG4gICAgICAgICAgICAgIGNsYXNzPSJtYXQtcGFnaW5hdG9yLW5hdmlnYXRpb24tZmlyc3QiXG4gICAgICAgICAgICAgIChjbGljayk9ImZpcnN0UGFnZSgpIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT0iX2ludGwuZmlyc3RQYWdlTGFiZWwiXG4gICAgICAgICAgICAgIFttYXRUb29sdGlwXT0iX2ludGwuZmlyc3RQYWdlTGFiZWwiXG4gICAgICAgICAgICAgIFttYXRUb29sdGlwRGlzYWJsZWRdPSJfcHJldmlvdXNCdXR0b25zRGlzYWJsZWQoKSJcbiAgICAgICAgICAgICAgW21hdFRvb2x0aXBQb3NpdGlvbl09IlwnYWJvdmVcJyJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT0iX3ByZXZpb3VzQnV0dG9uc0Rpc2FibGVkKCkiXG4gICAgICAgICAgICAgICpuZ0lmPSJzaG93Rmlyc3RMYXN0QnV0dG9ucyI+XG4gICAgICAgIDxzdmcgY2xhc3M9Im1hdC1wYWdpbmF0b3ItaWNvbiIgdmlld0JveD0iMCAwIDI0IDI0IiBmb2N1c2FibGU9ImZhbHNlIj5cbiAgICAgICAgICA8cGF0aCBkPSJNMTguNDEgMTYuNTlMMTMuODIgMTJsNC41OS00LjU5TDE3IDZsLTYgNiA2IDZ6TTYgNmgydjEySDZ6Ii8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiB0eXBlPSJidXR0b24iXG4gICAgICAgICAgICAgIGNsYXNzPSJtYXQtcGFnaW5hdG9yLW5hdmlnYXRpb24tcHJldmlvdXMiXG4gICAgICAgICAgICAgIChjbGljayk9InByZXZpb3VzUGFnZSgpIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT0iX2ludGwucHJldmlvdXNQYWdlTGFiZWwiXG4gICAgICAgICAgICAgIFttYXRUb29sdGlwXT0iX2ludGwucHJldmlvdXNQYWdlTGFiZWwiXG4gICAgICAgICAgICAgIFttYXRUb29sdGlwRGlzYWJsZWRdPSJfcHJldmlvdXNCdXR0b25zRGlzYWJsZWQoKSJcbiAgICAgICAgICAgICAgW21hdFRvb2x0aXBQb3NpdGlvbl09IlwnYWJvdmVcJyJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT0iX3ByZXZpb3VzQnV0dG9uc0Rpc2FibGVkKCkiPlxuICAgICAgICA8c3ZnIGNsYXNzPSJtYXQtcGFnaW5hdG9yLWljb24iIHZpZXdCb3g9IjAgMCAyNCAyNCIgZm9jdXNhYmxlPSJmYWxzZSI+XG4gICAgICAgICAgPHBhdGggZD0iTTE1LjQxIDcuNDFMMTQgNmwtNiA2IDYgNiAxLjQxLTEuNDFMMTAuODMgMTJ6Ii8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiB0eXBlPSJidXR0b24iXG4gICAgICAgICAgICAgIGNsYXNzPSJtYXQtcGFnaW5hdG9yLW5hdmlnYXRpb24tbmV4dCJcbiAgICAgICAgICAgICAgKGNsaWNrKT0ibmV4dFBhZ2UoKSJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09Il9pbnRsLm5leHRQYWdlTGFiZWwiXG4gICAgICAgICAgICAgIFttYXRUb29sdGlwXT0iX2ludGwubmV4dFBhZ2VMYWJlbCJcbiAgICAgICAgICAgICAgW21hdFRvb2x0aXBEaXNhYmxlZF09Il9uZXh0QnV0dG9uc0Rpc2FibGVkKCkiXG4gICAgICAgICAgICAgIFttYXRUb29sdGlwUG9zaXRpb25dPSJcJ2Fib3ZlXCciXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09Il9uZXh0QnV0dG9uc0Rpc2FibGVkKCkiPlxuICAgICAgICA8c3ZnIGNsYXNzPSJtYXQtcGFnaW5hdG9yLWljb24iIHZpZXdCb3g9IjAgMCAyNCAyNCIgZm9jdXNhYmxlPSJmYWxzZSI+XG4gICAgICAgICAgPHBhdGggZD0iTTEwIDZMOC41OSA3LjQxIDEzLjE3IDEybC00LjU4IDQuNTlMMTAgMThsNi02eiIvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gdHlwZT0iYnV0dG9uIlxuICAgICAgICAgICAgICBjbGFzcz0ibWF0LXBhZ2luYXRvci1uYXZpZ2F0aW9uLWxhc3QiXG4gICAgICAgICAgICAgIChjbGljayk9Imxhc3RQYWdlKCkiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPSJfaW50bC5sYXN0UGFnZUxhYmVsIlxuICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09Il9pbnRsLmxhc3RQYWdlTGFiZWwiXG4gICAgICAgICAgICAgIFttYXRUb29sdGlwRGlzYWJsZWRdPSJfbmV4dEJ1dHRvbnNEaXNhYmxlZCgpIlxuICAgICAgICAgICAgICBbbWF0VG9vbHRpcFBvc2l0aW9uXT0iXCdhYm92ZVwnIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPSJfbmV4dEJ1dHRvbnNEaXNhYmxlZCgpIlxuICAgICAgICAgICAgICAqbmdJZj0ic2hvd0ZpcnN0TGFzdEJ1dHRvbnMiPlxuICAgICAgICA8c3ZnIGNsYXNzPSJtYXQtcGFnaW5hdG9yLWljb24iIHZpZXdCb3g9IjAgMCAyNCAyNCIgZm9jdXNhYmxlPSJmYWxzZSI+XG4gICAgICAgICAgPHBhdGggZD0iTTUuNTkgNy40MUwxMC4xOCAxMmwtNC41OSA0LjU5TDcgMThsNi02LTYtNnpNMTYgNmgydjEyaC0yeiIvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuJyxpbnB1dHM6WyJkaXNhYmxlZCJdLGhvc3Q6e2NsYXNzOiJtYXQtcGFnaW5hdG9yIixyb2xlOiJncm91cCJ9LGNoYW5nZURldGVjdGlvbjpqbi5PblB1c2gsZW5jYXBzdWxhdGlvbjpXbi5Ob25lLHN0eWxlczpbIi5tYXQtcGFnaW5hdG9ye2Rpc3BsYXk6YmxvY2t9Lm1hdC1wYWdpbmF0b3Itb3V0ZXItY29udGFpbmVye2Rpc3BsYXk6ZmxleH0ubWF0LXBhZ2luYXRvci1jb250YWluZXJ7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmQ7cGFkZGluZzowIDhweDtmbGV4LXdyYXA6d3JhcC1yZXZlcnNlO3dpZHRoOjEwMCV9Lm1hdC1wYWdpbmF0b3ItcGFnZS1zaXple2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpiYXNlbGluZTttYXJnaW4tcmlnaHQ6OHB4fVtkaXI9cnRsXSAubWF0LXBhZ2luYXRvci1wYWdlLXNpemV7bWFyZ2luLXJpZ2h0OjA7bWFyZ2luLWxlZnQ6OHB4fS5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZS1sYWJlbHttYXJnaW46MCA0cHh9Lm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplLXNlbGVjdHttYXJnaW46NnB4IDRweCAwIDRweDt3aWR0aDo1NnB4fS5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZS1zZWxlY3QubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5le3dpZHRoOjY0cHh9Lm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplLXNlbGVjdC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGx7d2lkdGg6NjRweH0ubWF0LXBhZ2luYXRvci1yYW5nZS1sYWJlbHttYXJnaW46MCAzMnB4IDAgMjRweH0ubWF0LXBhZ2luYXRvci1yYW5nZS1hY3Rpb25ze2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXJ9Lm1hdC1wYWdpbmF0b3ItaWNvbnt3aWR0aDoyOHB4O2ZpbGw6Y3VycmVudENvbG9yfVtkaXI9cnRsXSAubWF0LXBhZ2luYXRvci1pY29ue3RyYW5zZm9ybTpyb3RhdGUoMTgwZGVnKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtcGFnaW5hdG9yLWljb257ZmlsbDpDYW52YXNUZXh0fVxuIl19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpYMH0se3R5cGU6T2J9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbUTBdfV19XX0pLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgbjF7fW4xLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxuMSl9LG4xLsm1bW9kPWZvKHt0eXBlOm4xfSksbjEuybVpbmo9RG4oe3Byb3ZpZGVyczpbSzBdLGltcG9ydHM6W1tyeCxJTCxQWSxqMCxORl1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihuMSxbe3R5cGU6TF8sYXJnczpbe2ltcG9ydHM6W3J4LElMLFBZLGowLE5GXSxleHBvcnRzOltlMV0sZGVjbGFyYXRpb25zOltlMV0scHJvdmlkZXJzOltLMF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhuMSx7ZGVjbGFyYXRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuW2UxXX0saW1wb3J0czpmdW5jdGlvbigpe3JldHVybltyeCxJTCxQWSxqMCxORl19LGV4cG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bZTFdfX0pO2Z1bmN0aW9uIG8xKHQsZSl7aWYoMSZ0KXtjb25zdCB0PXdmKCk7Q2YoMCwiZGl2IiwzKSxSZigiQGFycm93UG9zaXRpb24uc3RhcnQiLChmdW5jdGlvbiBlKCl7UGkodCk7cmV0dXJuIHpmKCkuX2Rpc2FibGVWaWV3U3RhdGVBbmltYXRpb249ITB9KSkoIkBhcnJvd1Bvc2l0aW9uLmRvbmUiLChmdW5jdGlvbiBlKCl7UGkodCk7cmV0dXJuIHpmKCkuX2Rpc2FibGVWaWV3U3RhdGVBbmltYXRpb249ITF9KSksdmYoMSwiZGl2Iiw0KSxDZigyLCJkaXYiLDUpLHZmKDMsImRpdiIsNiksdmYoNCwiZGl2Iiw3KSx2Zig1LCJkaXYiLDgpLE1mKCksTWYoKX1pZigyJnQpe2NvbnN0IHQ9emYoKTtiZigiQGFycm93T3BhY2l0eSIsdC5fZ2V0QXJyb3dWaWV3U3RhdGUoKSkoIkBhcnJvd1Bvc2l0aW9uIix0Ll9nZXRBcnJvd1ZpZXdTdGF0ZSgpKSgiQGFsbG93Q2hpbGRyZW4iLHQuX2dldEFycm93RGlyZWN0aW9uU3RhdGUoKSksRGMoMiksYmYoIkBpbmRpY2F0b3IiLHQuX2dldEFycm93RGlyZWN0aW9uU3RhdGUoKSksRGMoMSksYmYoIkBsZWZ0UG9pbnRlciIsdC5fZ2V0QXJyb3dEaXJlY3Rpb25TdGF0ZSgpKSxEYygxKSxiZigiQHJpZ2h0UG9pbnRlciIsdC5fZ2V0QXJyb3dEaXJlY3Rpb25TdGF0ZSgpKX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCBpMT1uZXcgZXIoIk1BVF9TT1JUX0RFRkFVTFRfT1BUSU9OUyIpLGExPUJGKHpGKGNsYXNze30pKTtjbGFzcyByMSBleHRlbmRzIGExe2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy5fZGVmYXVsdE9wdGlvbnM9dCx0aGlzLnNvcnRhYmxlcz1uZXcgTWFwLHRoaXMuX3N0YXRlQ2hhbmdlcz1uZXcgQix0aGlzLnN0YXJ0PSJhc2MiLHRoaXMuX2RpcmVjdGlvbj0iIix0aGlzLnNvcnRDaGFuZ2U9bmV3IFN5fWdldCBkaXJlY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGlyZWN0aW9ufXNldCBkaXJlY3Rpb24odCl7aWYodCYmImFzYyIhPT10JiYiZGVzYyIhPT10JiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkpdGhyb3coZnVuY3Rpb24gZSh0KXtyZXR1cm4gRXJyb3IoYCR7dH0gaXMgbm90IGEgdmFsaWQgc29ydCBkaXJlY3Rpb24gKCdhc2MnIG9yICdkZXNjJykuYCl9KSh0KTt0aGlzLl9kaXJlY3Rpb249dH1nZXQgZGlzYWJsZUNsZWFyKCl7cmV0dXJuIHRoaXMuX2Rpc2FibGVDbGVhcn1zZXQgZGlzYWJsZUNsZWFyKHQpe3RoaXMuX2Rpc2FibGVDbGVhcj1lSCh0KX1yZWdpc3Rlcih0KXtpZigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKXtpZighdC5pZCl0aHJvdyhmdW5jdGlvbiBlKCl7cmV0dXJuIEVycm9yKCJNYXRTb3J0SGVhZGVyIG11c3QgYmUgcHJvdmlkZWQgd2l0aCBhIHVuaXF1ZSBpZC4iKX0pKCk7aWYodGhpcy5zb3J0YWJsZXMuaGFzKHQuaWQpKXRocm93KGZ1bmN0aW9uIG4odCl7cmV0dXJuIEVycm9yKGBDYW5ub3QgaGF2ZSB0d28gTWF0U29ydGFibGVzIHdpdGggdGhlIHNhbWUgaWQgKCR7dH0pLmApfSkodC5pZCl9dGhpcy5zb3J0YWJsZXMuc2V0KHQuaWQsdCl9ZGVyZWdpc3Rlcih0KXt0aGlzLnNvcnRhYmxlcy5kZWxldGUodC5pZCl9c29ydCh0KXt0aGlzLmFjdGl2ZSE9dC5pZD8odGhpcy5hY3RpdmU9dC5pZCx0aGlzLmRpcmVjdGlvbj10LnN0YXJ0P3Quc3RhcnQ6dGhpcy5zdGFydCk6dGhpcy5kaXJlY3Rpb249dGhpcy5nZXROZXh0U29ydERpcmVjdGlvbih0KSx0aGlzLnNvcnRDaGFuZ2UuZW1pdCh7YWN0aXZlOnRoaXMuYWN0aXZlLGRpcmVjdGlvbjp0aGlzLmRpcmVjdGlvbn0pfWdldE5leHRTb3J0RGlyZWN0aW9uKHQpe3ZhciBlLG4sbztpZighdClyZXR1cm4iIjtjb25zdCBpPW51bGwhPT0obj1udWxsIT09KGU9bnVsbD09dD92b2lkIDA6dC5kaXNhYmxlQ2xlYXIpJiZ2b2lkIDAhPT1lP2U6dGhpcy5kaXNhYmxlQ2xlYXIpJiZ2b2lkIDAhPT1uP246ISEobnVsbD09PShvPXRoaXMuX2RlZmF1bHRPcHRpb25zKXx8dm9pZCAwPT09bz92b2lkIDA6by5kaXNhYmxlQ2xlYXIpO2xldCBhPShmdW5jdGlvbiByKHQsZSl7bGV0IG49WyJhc2MiLCJkZXNjIl07ImRlc2MiPT10JiZuLnJldmVyc2UoKTtlfHxuLnB1c2goIiIpO3JldHVybiBufQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8pKHQuc3RhcnR8fHRoaXMuc3RhcnQsaSkscz1hLmluZGV4T2YodGhpcy5kaXJlY3Rpb24pKzE7cmV0dXJuIHM+PWEubGVuZ3RoJiYocz0wKSxhW3NdfW5nT25Jbml0KCl7dGhpcy5fbWFya0luaXRpYWxpemVkKCl9bmdPbkNoYW5nZXMoKXt0aGlzLl9zdGF0ZUNoYW5nZXMubmV4dCgpfW5nT25EZXN0cm95KCl7dGhpcy5fc3RhdGVDaGFuZ2VzLmNvbXBsZXRlKCl9fXIxLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxyMSkoZ2YoaTEsOCkpfSxyMS7JtWRpcj1obyh7dHlwZTpyMSxzZWxlY3RvcnM6W1siIiwibWF0U29ydCIsIiJdXSxob3N0QXR0cnM6WzEsIm1hdC1zb3J0Il0saW5wdXRzOntkaXNhYmxlZDpbIm1hdFNvcnREaXNhYmxlZCIsImRpc2FibGVkIl0sc3RhcnQ6WyJtYXRTb3J0U3RhcnQiLCJzdGFydCJdLGRpcmVjdGlvbjpbIm1hdFNvcnREaXJlY3Rpb24iLCJkaXJlY3Rpb24iXSxkaXNhYmxlQ2xlYXI6WyJtYXRTb3J0RGlzYWJsZUNsZWFyIiwiZGlzYWJsZUNsZWFyIl0sYWN0aXZlOlsibWF0U29ydEFjdGl2ZSIsImFjdGl2ZSJdfSxvdXRwdXRzOntzb3J0Q2hhbmdlOiJtYXRTb3J0Q2hhbmdlIn0sZXhwb3J0QXM6WyJtYXRTb3J0Il0sZmVhdHVyZXM6W1FwLHFvXX0pLHIxLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltpMV19XX1dLHIxLnByb3BEZWNvcmF0b3JzPXthY3RpdmU6W3t0eXBlOlJfLGFyZ3M6WyJtYXRTb3J0QWN0aXZlIl19XSxzdGFydDpbe3R5cGU6Ul8sYXJnczpbIm1hdFNvcnRTdGFydCJdfV0sZGlyZWN0aW9uOlt7dHlwZTpSXyxhcmdzOlsibWF0U29ydERpcmVjdGlvbiJdfV0sZGlzYWJsZUNsZWFyOlt7dHlwZTpSXyxhcmdzOlsibWF0U29ydERpc2FibGVDbGVhciJdfV0sc29ydENoYW5nZTpbe3R5cGU6RV8sYXJnczpbIm1hdFNvcnRDaGFuZ2UiXX1dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHIxLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6IlttYXRTb3J0XSIsZXhwb3J0QXM6Im1hdFNvcnQiLGhvc3Q6e2NsYXNzOiJtYXQtc29ydCJ9LGlucHV0czpbImRpc2FibGVkOiBtYXRTb3J0RGlzYWJsZWQiXX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbaTFdfV19XX0pLHtzdGFydDpbe3R5cGU6Ul8sYXJnczpbIm1hdFNvcnRTdGFydCJdfV0sc29ydENoYW5nZTpbe3R5cGU6RV8sYXJnczpbIm1hdFNvcnRDaGFuZ2UiXX1dLGRpcmVjdGlvbjpbe3R5cGU6Ul8sYXJnczpbIm1hdFNvcnREaXJlY3Rpb24iXX1dLGRpc2FibGVDbGVhcjpbe3R5cGU6Ul8sYXJnczpbIm1hdFNvcnREaXNhYmxlQ2xlYXIiXX1dLGFjdGl2ZTpbe3R5cGU6Ul8sYXJnczpbIm1hdFNvcnRBY3RpdmUiXX1dfSk7Y29uc3QgczE9UkYuRU5URVJJTkcrIiAiK0RGLlNUQU5EQVJEX0NVUlZFLGwxPXtpbmRpY2F0b3I6eE8oImluZGljYXRvciIsW2tPKCJhY3RpdmUtYXNjLCBhc2MiLHdPKHt0cmFuc2Zvcm06InRyYW5zbGF0ZVkoMHB4KSJ9KSksa08oImFjdGl2ZS1kZXNjLCBkZXNjIix3Tyh7dHJhbnNmb3JtOiJ0cmFuc2xhdGVZKDEwcHgpIn0pKSxETygiYWN0aXZlLWFzYyA8PT4gYWN0aXZlLWRlc2MiLE9PKHMxKSldKSxsZWZ0UG9pbnRlcjp4TygibGVmdFBvaW50ZXIiLFtrTygiYWN0aXZlLWFzYywgYXNjIix3Tyh7dHJhbnNmb3JtOiJyb3RhdGUoLTQ1ZGVnKSJ9KSksa08oImFjdGl2ZS1kZXNjLCBkZXNjIix3Tyh7dHJhbnNmb3JtOiJyb3RhdGUoNDVkZWcpIn0pKSxETygiYWN0aXZlLWFzYyA8PT4gYWN0aXZlLWRlc2MiLE9PKHMxKSldKSxyaWdodFBvaW50ZXI6eE8oInJpZ2h0UG9pbnRlciIsW2tPKCJhY3RpdmUtYXNjLCBhc2MiLHdPKHt0cmFuc2Zvcm06InJvdGF0ZSg0NWRlZykifSkpLGtPKCJhY3RpdmUtZGVzYywgZGVzYyIsd08oe3RyYW5zZm9ybToicm90YXRlKC00NWRlZykifSkpLERPKCJhY3RpdmUtYXNjIDw9PiBhY3RpdmUtZGVzYyIsT08oczEpKV0pLGFycm93T3BhY2l0eTp4TygiYXJyb3dPcGFjaXR5Iixba08oImRlc2MtdG8tYWN0aXZlLCBhc2MtdG8tYWN0aXZlLCBhY3RpdmUiLHdPKHtvcGFjaXR5OjF9KSksa08oImRlc2MtdG8taGludCwgYXNjLXRvLWhpbnQsIGhpbnQiLHdPKHtvcGFjaXR5Oi41NH0pKSxrTygiaGludC10by1kZXNjLCBhY3RpdmUtdG8tZGVzYywgZGVzYywgaGludC10by1hc2MsIGFjdGl2ZS10by1hc2MsIGFzYywgdm9pZCIsd08oe29wYWNpdHk6MH0pKSxETygiKiA9PiBhc2MsICogPT4gZGVzYywgKiA9PiBhY3RpdmUsICogPT4gaGludCwgKiA9PiB2b2lkIixPTygiMG1zIikpLERPKCIqIDw9PiAqIixPTyhzMSkpXSksYXJyb3dQb3NpdGlvbjp4TygiYXJyb3dQb3NpdGlvbiIsW0RPKCIqID0+IGRlc2MtdG8taGludCwgKiA9PiBkZXNjLXRvLWFjdGl2ZSIsT08oczEsU08oW3dPKHt0cmFuc2Zvcm06InRyYW5zbGF0ZVkoLTI1JSkifSksd08oe3RyYW5zZm9ybToidHJhbnNsYXRlWSgwKSJ9KV0pKSksRE8oIiogPT4gaGludC10by1kZXNjLCAqID0+IGFjdGl2ZS10by1kZXNjIixPTyhzMSxTTyhbd08oe3RyYW5zZm9ybToidHJhbnNsYXRlWSgwKSJ9KSx3Tyh7dHJhbnNmb3JtOiJ0cmFuc2xhdGVZKDI1JSkifSldKSkpLERPKCIqID0+IGFzYy10by1oaW50LCAqID0+IGFzYy10by1hY3RpdmUiLE9PKHMxLFNPKFt3Tyh7dHJhbnNmb3JtOiJ0cmFuc2xhdGVZKDI1JSkifSksd08oe3RyYW5zZm9ybToidHJhbnNsYXRlWSgwKSJ9KV0pKSksRE8oIiogPT4gaGludC10by1hc2MsICogPT4gYWN0aXZlLXRvLWFzYyIsT08oczEsU08oW3dPKHt0cmFuc2Zvcm06InRyYW5zbGF0ZVkoMCkifSksd08oe3RyYW5zZm9ybToidHJhbnNsYXRlWSgtMjUlKSJ9KV0pKSksa08oImRlc2MtdG8taGludCwgYXNjLXRvLWhpbnQsIGhpbnQsIGRlc2MtdG8tYWN0aXZlLCBhc2MtdG8tYWN0aXZlLCBhY3RpdmUiLHdPKHt0cmFuc2Zvcm06InRyYW5zbGF0ZVkoMCkifSkpLGtPKCJoaW50LXRvLWRlc2MsIGFjdGl2ZS10by1kZXNjLCBkZXNjIix3Tyh7dHJhbnNmb3JtOiJ0cmFuc2xhdGVZKC0yNSUpIn0pKSxrTygiaGludC10by1hc2MsIGFjdGl2ZS10by1hc2MsIGFzYyIsd08oe3RyYW5zZm9ybToidHJhbnNsYXRlWSgyNSUpIn0pKV0pLGFsbG93Q2hpbGRyZW46eE8oImFsbG93Q2hpbGRyZW4iLFtETygiKiA8PT4gKiIsW0VPKCJAKiIsUk8oKSx7b3B0aW9uYWw6ITB9KV0pXSl9OwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgYzF7Y29uc3RydWN0b3IoKXt0aGlzLmNoYW5nZXM9bmV3IEJ9fWMxLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxjMSl9LGMxLsm1cHJvdj1Tbih7ZmFjdG9yeTpmdW5jdGlvbiB0KCl7cmV0dXJuIG5ldyBjMX0sdG9rZW46YzEscHJvdmlkZWRJbjoicm9vdCJ9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGMxLFt7dHlwZTpVbSxhcmdzOlt7cHJvdmlkZWRJbjoicm9vdCJ9XX1dLChmdW5jdGlvbigpe3JldHVybltdfSksbnVsbCk7Y29uc3QgZDE9e3Byb3ZpZGU6YzEsZGVwczpbW25ldyBCcixuZXcganIsYzFdXSx1c2VGYWN0b3J5OmZ1bmN0aW9uIHAxKHQpe3JldHVybiB0fHxuZXcgYzF9fSxtMT16RihjbGFzc3t9KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgZjEgZXh0ZW5kcyBtMXtjb25zdHJ1Y3Rvcih0LGUsbixvLGksYSl7aWYoc3VwZXIoKSx0aGlzLl9pbnRsPXQsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWY9ZSx0aGlzLl9zb3J0PW4sdGhpcy5fY29sdW1uRGVmPW8sdGhpcy5fZm9jdXNNb25pdG9yPWksdGhpcy5fZWxlbWVudFJlZj1hLHRoaXMuX3Nob3dJbmRpY2F0b3JIaW50PSExLHRoaXMuX3ZpZXdTdGF0ZT17fSx0aGlzLl9hcnJvd0RpcmVjdGlvbj0iIix0aGlzLl9kaXNhYmxlVmlld1N0YXRlQW5pbWF0aW9uPSExLHRoaXMuYXJyb3dQb3NpdGlvbj0iYWZ0ZXIiLCFuJiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkpdGhyb3coZnVuY3Rpb24gcigpe3JldHVybiBFcnJvcigiTWF0U29ydEhlYWRlciBtdXN0IGJlIHBsYWNlZCB3aXRoaW4gYSBwYXJlbnQgZWxlbWVudCB3aXRoIHRoZSBNYXRTb3J0IGRpcmVjdGl2ZS4iKX0pKCk7dGhpcy5faGFuZGxlU3RhdGVDaGFuZ2VzKCl9Z2V0IGRpc2FibGVDbGVhcigpe3JldHVybiB0aGlzLl9kaXNhYmxlQ2xlYXJ9c2V0IGRpc2FibGVDbGVhcih0KXt0aGlzLl9kaXNhYmxlQ2xlYXI9ZUgodCl9bmdPbkluaXQoKXshdGhpcy5pZCYmdGhpcy5fY29sdW1uRGVmJiYodGhpcy5pZD10aGlzLl9jb2x1bW5EZWYubmFtZSksdGhpcy5fdXBkYXRlQXJyb3dEaXJlY3Rpb24oKSx0aGlzLl9zZXRBbmltYXRpb25UcmFuc2l0aW9uU3RhdGUoe3RvU3RhdGU6dGhpcy5faXNTb3J0ZWQoKT8iYWN0aXZlIjp0aGlzLl9hcnJvd0RpcmVjdGlvbn0pLHRoaXMuX3NvcnQucmVnaXN0ZXIodGhpcyl9bmdBZnRlclZpZXdJbml0KCl7dGhpcy5fZm9jdXNNb25pdG9yLm1vbml0b3IodGhpcy5fZWxlbWVudFJlZiwhMCkuc3Vic2NyaWJlKCh0PT57Y29uc3QgZT0hIXQ7ZSE9PXRoaXMuX3Nob3dJbmRpY2F0b3JIaW50JiYodGhpcy5fc2V0SW5kaWNhdG9ySGludFZpc2libGUoZSksdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCkpfSkpfW5nT25EZXN0cm95KCl7dGhpcy5fZm9jdXNNb25pdG9yLnN0b3BNb25pdG9yaW5nKHRoaXMuX2VsZW1lbnRSZWYpLHRoaXMuX3NvcnQuZGVyZWdpc3Rlcih0aGlzKSx0aGlzLl9yZXJlbmRlclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpfV9zZXRJbmRpY2F0b3JIaW50VmlzaWJsZSh0KXt0aGlzLl9pc0Rpc2FibGVkKCkmJnR8fCh0aGlzLl9zaG93SW5kaWNhdG9ySGludD10LHRoaXMuX2lzU29ydGVkKCl8fCh0aGlzLl91cGRhdGVBcnJvd0RpcmVjdGlvbigpLHRoaXMuX3NldEFuaW1hdGlvblRyYW5zaXRpb25TdGF0ZSh0aGlzLl9zaG93SW5kaWNhdG9ySGludD97ZnJvbVN0YXRlOnRoaXMuX2Fycm93RGlyZWN0aW9uLHRvU3RhdGU6ImhpbnQifTp7ZnJvbVN0YXRlOiJoaW50Iix0b1N0YXRlOnRoaXMuX2Fycm93RGlyZWN0aW9ufSkpKX1fc2V0QW5pbWF0aW9uVHJhbnNpdGlvblN0YXRlKHQpe3RoaXMuX3ZpZXdTdGF0ZT10fHx7fSx0aGlzLl9kaXNhYmxlVmlld1N0YXRlQW5pbWF0aW9uJiYodGhpcy5fdmlld1N0YXRlPXt0b1N0YXRlOnQudG9TdGF0ZX0pfV90b2dnbGVPbkludGVyYWN0aW9uKCl7dGhpcy5fc29ydC5zb3J0KHRoaXMpLCJoaW50IiE9PXRoaXMuX3ZpZXdTdGF0ZS50b1N0YXRlJiYiYWN0aXZlIiE9PXRoaXMuX3ZpZXdTdGF0ZS50b1N0YXRlfHwodGhpcy5fZGlzYWJsZVZpZXdTdGF0ZUFuaW1hdGlvbj0hMCl9X2hhbmRsZUNsaWNrKCl7dGhpcy5faXNEaXNhYmxlZCgpfHx0aGlzLl9zb3J0LnNvcnQodGhpcyl9X2hhbmRsZUtleWRvd24odCl7dGhpcy5faXNEaXNhYmxlZCgpfHx0LmtleUNvZGUhPT1KSSYmdC5rZXlDb2RlIT09WEl8fCh0LnByZXZlbnREZWZhdWx0KCksdGhpcy5fdG9nZ2xlT25JbnRlcmFjdGlvbigpKX1faXNTb3J0ZWQoKXtyZXR1cm4gdGhpcy5fc29ydC5hY3RpdmU9PXRoaXMuaWQmJigiYXNjIj09PXRoaXMuX3NvcnQuZGlyZWN0aW9ufHwiZGVzYyI9PT10aGlzLl9zb3J0LmRpcmVjdGlvbil9X2dldEFycm93RGlyZWN0aW9uU3RhdGUoKXtyZXR1cm5gJHt0aGlzLl9pc1NvcnRlZCgpPyJhY3RpdmUtIjoiIn0ke3RoaXMuX2Fycm93RGlyZWN0aW9ufWB9X2dldEFycm93Vmlld1N0YXRlKCl7Y29uc3QgdD10aGlzLl92aWV3U3RhdGUuZnJvbVN0YXRlO3JldHVybih0P2Ake3R9LXRvLWA6IiIpK3RoaXMuX3ZpZXdTdGF0ZS50b1N0YXRlfV91cGRhdGVBcnJvd0RpcmVjdGlvbigpe3RoaXMuX2Fycm93RGlyZWN0aW9uPXRoaXMuX2lzU29ydGVkKCk/dGhpcy5fc29ydC5kaXJlY3Rpb246dGhpcy5zdGFydHx8dGhpcy5fc29ydC5zdGFydH1faXNEaXNhYmxlZCgpe3JldHVybiB0aGlzLl9zb3J0LmRpc2FibGVkfHx0aGlzLmRpc2FibGVkfV9nZXRBcmlhU29ydEF0dHJpYnV0ZSgpe3JldHVybiB0aGlzLl9pc1NvcnRlZCgpPyJhc2MiPT10aGlzLl9zb3J0LmRpcmVjdGlvbj8iYXNjZW5kaW5nIjoiZGVzY2VuZGluZyI6Im5vbmUifV9yZW5kZXJBcnJvdygpe3JldHVybiF0aGlzLl9pc0Rpc2FibGVkKCl8fHRoaXMuX2lzU29ydGVkKCl9X2hhbmRsZVN0YXRlQ2hhbmdlcygpe3RoaXMuX3JlcmVuZGVyU3Vic2NyaXB0aW9uPXBlKHRoaXMuX3NvcnQuc29ydENoYW5nZSx0aGlzLl9zb3J0Ll9zdGF0ZUNoYW5nZXMsdGhpcy5faW50bC5jaGFuZ2VzKS5zdWJzY3JpYmUoKCgpPT57dGhpcy5faXNTb3J0ZWQoKSYmKHRoaXMuX3VwZGF0ZUFycm93RGlyZWN0aW9uKCksImhpbnQiIT09dGhpcy5fdmlld1N0YXRlLnRvU3RhdGUmJiJhY3RpdmUiIT09dGhpcy5fdmlld1N0YXRlLnRvU3RhdGV8fCh0aGlzLl9kaXNhYmxlVmlld1N0YXRlQW5pbWF0aW9uPSEwKSx0aGlzLl9zZXRBbmltYXRpb25UcmFuc2l0aW9uU3RhdGUoe2Zyb21TdGF0ZTp0aGlzLl9hcnJvd0RpcmVjdGlvbix0b1N0YXRlOiJhY3RpdmUifSksdGhpcy5fc2hvd0luZGljYXRvckhpbnQ9ITEpLCF0aGlzLl9pc1NvcnRlZCgpJiZ0aGlzLl92aWV3U3RhdGUmJiJhY3RpdmUiPT09dGhpcy5fdmlld1N0YXRlLnRvU3RhdGUmJih0aGlzLl9kaXNhYmxlVmlld1N0YXRlQW5pbWF0aW9uPSExLHRoaXMuX3NldEFuaW1hdGlvblRyYW5zaXRpb25TdGF0ZSh7ZnJvbVN0YXRlOiJhY3RpdmUiLHRvU3RhdGU6dGhpcy5fYXJyb3dEaXJlY3Rpb259KSksdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCl9KSl9fWYxLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxmMSkoZ2YoYzEpLGdmKE9iKSxnZihyMSw4KSxnZigiTUFUX1NPUlRfSEVBREVSX0NPTFVNTl9ERUYiLDgpLGdmKGZGKSxnZihLaCkpfSxmMS7JtWNtcD1zbyh7dHlwZTpmMSxzZWxlY3RvcnM6W1siIiwibWF0LXNvcnQtaGVhZGVyIiwiIl1dLGhvc3RBdHRyczpbMSwibWF0LXNvcnQtaGVhZGVyIl0saG9zdFZhcnM6Myxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezEmZSYmUmYoImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLl9oYW5kbGVDbGljaygpfSkpKCJrZXlkb3duIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5faGFuZGxlS2V5ZG93bihlKX0pKSgibW91c2VlbnRlciIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5fc2V0SW5kaWNhdG9ySGludFZpc2libGUoITApfSkpKCJtb3VzZWxlYXZlIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLl9zZXRJbmRpY2F0b3JIaW50VmlzaWJsZSghMSl9KSksMiZlJiYoeW0oImFyaWEtc29ydCIsbi5fZ2V0QXJpYVNvcnRBdHRyaWJ1dGUoKSksY3UoIm1hdC1zb3J0LWhlYWRlci1kaXNhYmxlZCIsbi5faXNEaXNhYmxlZCgpKSl9LGlucHV0czp7ZGlzYWJsZWQ6ImRpc2FibGVkIixhcnJvd1Bvc2l0aW9uOiJhcnJvd1Bvc2l0aW9uIixkaXNhYmxlQ2xlYXI6ImRpc2FibGVDbGVhciIsaWQ6WyJtYXQtc29ydC1oZWFkZXIiLCJpZCJdLHN0YXJ0OiJzdGFydCJ9LGV4cG9ydEFzOlsibWF0U29ydEhlYWRlciJdLGZlYXR1cmVzOltRcF0sYXR0cnM6WyJtYXQtc29ydC1oZWFkZXIiLCIiXSxuZ0NvbnRlbnRTZWxlY3RvcnM6WyIqIl0sZGVjbHM6NCx2YXJzOjYsY29uc3RzOltbInJvbGUiLCJidXR0b24iLDEsIm1hdC1zb3J0LWhlYWRlci1jb250YWluZXIiLCJtYXQtZm9jdXMtaW5kaWNhdG9yIl0sWzEsIm1hdC1zb3J0LWhlYWRlci1jb250ZW50Il0sWyJjbGFzcyIsIm1hdC1zb3J0LWhlYWRlci1hcnJvdyIsNCwibmdJZiJdLFsxLCJtYXQtc29ydC1oZWFkZXItYXJyb3ciXSxbMSwibWF0LXNvcnQtaGVhZGVyLXN0ZW0iXSxbMSwibWF0LXNvcnQtaGVhZGVyLWluZGljYXRvciJdLFsxLCJtYXQtc29ydC1oZWFkZXItcG9pbnRlci1sZWZ0Il0sWzEsIm1hdC1zb3J0LWhlYWRlci1wb2ludGVyLXJpZ2h0Il0sWzEsIm1hdC1zb3J0LWhlYWRlci1wb2ludGVyLW1pZGRsZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoSGYoKSxDZigwLCJkaXYiLDApLENmKDEsImRpdiIsMSksRmYoMiksTWYoKSxIbSgzLG8xLDYsNiwiZGl2IiwyKSxNZigpKSwyJmUmJihjdSgibWF0LXNvcnQtaGVhZGVyLXNvcnRlZCIsbi5faXNTb3J0ZWQoKSkoIm1hdC1zb3J0LWhlYWRlci1wb3NpdGlvbi1iZWZvcmUiLCJiZWZvcmUiPT1uLmFycm93UG9zaXRpb24pLHltKCJ0YWJpbmRleCIsbi5faXNEaXNhYmxlZCgpP251bGw6MCksRGMoMyksYmYoIm5nSWYiLG4uX3JlbmRlckFycm93KCkpKX0sZGlyZWN0aXZlczpbUHZdLHN0eWxlczpbIi5tYXQtc29ydC1oZWFkZXItY29udGFpbmVye2Rpc3BsYXk6ZmxleDtjdXJzb3I6cG9pbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO291dGxpbmU6MH1bbWF0LXNvcnQtaGVhZGVyXS5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LXNvcnQtaGVhZGVyLWNvbnRhaW5lcixbbWF0LXNvcnQtaGVhZGVyXS5jZGstcHJvZ3JhbS1mb2N1c2VkIC5tYXQtc29ydC1oZWFkZXItY29udGFpbmVye2JvcmRlci1ib3R0b206c29saWQgMXB4IGN1cnJlbnRDb2xvcn0ubWF0LXNvcnQtaGVhZGVyLWRpc2FibGVkIC5tYXQtc29ydC1oZWFkZXItY29udGFpbmVye2N1cnNvcjpkZWZhdWx0fS5tYXQtc29ydC1oZWFkZXItY29udGVudHt0ZXh0LWFsaWduOmNlbnRlcjtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyfS5tYXQtc29ydC1oZWFkZXItcG9zaXRpb24tYmVmb3Jle2ZsZXgtZGlyZWN0aW9uOnJvdy1yZXZlcnNlfS5tYXQtc29ydC1oZWFkZXItYXJyb3d7aGVpZ2h0OjEycHg7d2lkdGg6MTJweDttaW4td2lkdGg6MTJweDtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmZsZXg7b3BhY2l0eTowfS5tYXQtc29ydC1oZWFkZXItYXJyb3csW2Rpcj1ydGxdIC5tYXQtc29ydC1oZWFkZXItcG9zaXRpb24tYmVmb3JlIC5tYXQtc29ydC1oZWFkZXItYXJyb3d7bWFyZ2luOjAgMCAwIDZweH0ubWF0LXNvcnQtaGVhZGVyLXBvc2l0aW9uLWJlZm9yZSAubWF0LXNvcnQtaGVhZGVyLWFycm93LFtkaXI9cnRsXSAubWF0LXNvcnQtaGVhZGVyLWFycm93e21hcmdpbjowIDZweCAwIDB9Lm1hdC1zb3J0LWhlYWRlci1zdGVte2JhY2tncm91bmQ6Y3VycmVudENvbG9yO2hlaWdodDoxMHB4O3dpZHRoOjJweDttYXJnaW46YXV0bztkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1zb3J0LWhlYWRlci1zdGVte3dpZHRoOjA7Ym9yZGVyLWxlZnQ6c29saWQgMnB4fS5tYXQtc29ydC1oZWFkZXItaW5kaWNhdG9ye3dpZHRoOjEwMCU7aGVpZ2h0OjJweDtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MH0ubWF0LXNvcnQtaGVhZGVyLXBvaW50ZXItbWlkZGxle21hcmdpbjphdXRvO2hlaWdodDoycHg7d2lkdGg6MnB4O2JhY2tncm91bmQ6Y3VycmVudENvbG9yO3RyYW5zZm9ybTpyb3RhdGUoNDVkZWcpfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1zb3J0LWhlYWRlci1wb2ludGVyLW1pZGRsZXt3aWR0aDowO2hlaWdodDowO2JvcmRlci10b3A6c29saWQgMnB4O2JvcmRlci1sZWZ0OnNvbGlkIDJweH0ubWF0LXNvcnQtaGVhZGVyLXBvaW50ZXItbGVmdCwubWF0LXNvcnQtaGVhZGVyLXBvaW50ZXItcmlnaHR7YmFja2dyb3VuZDpjdXJyZW50Q29sb3I7d2lkdGg6NnB4O2hlaWdodDoycHg7cG9zaXRpb246YWJzb2x1dGU7dG9wOjB9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXNvcnQtaGVhZGVyLXBvaW50ZXItbGVmdCwuY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtc29ydC1oZWFkZXItcG9pbnRlci1yaWdodHt3aWR0aDowO2hlaWdodDowO2JvcmRlci1sZWZ0OnNvbGlkIDZweDtib3JkZXItdG9wOnNvbGlkIDJweH0ubWF0LXNvcnQtaGVhZGVyLXBvaW50ZXItbGVmdHt0cmFuc2Zvcm0tb3JpZ2luOnJpZ2h0O2xlZnQ6MH0ubWF0LXNvcnQtaGVhZGVyLXBvaW50ZXItcmlnaHR7dHJhbnNmb3JtLW9yaWdpbjpsZWZ0O3JpZ2h0OjB9XG4iXSxlbmNhcHN1bGF0aW9uOjIsZGF0YTp7YW5pbWF0aW9uOltsMS5pbmRpY2F0b3IsbDEubGVmdFBvaW50ZXIsbDEucmlnaHRQb2ludGVyLGwxLmFycm93T3BhY2l0eSxsMS5hcnJvd1Bvc2l0aW9uLGwxLmFsbG93Q2hpbGRyZW5dfSxjaGFuZ2VEZXRlY3Rpb246MH0pLGYxLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6YzF9LHt0eXBlOk9ifSx7dHlwZTpyMSxkZWNvcmF0b3JzOlt7dHlwZTpCcn1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbIk1BVF9TT1JUX0hFQURFUl9DT0xVTU5fREVGIl19LHt0eXBlOkJyfV19LHt0eXBlOmZGfSx7dHlwZTpLaH1dLGYxLnByb3BEZWNvcmF0b3JzPXtpZDpbe3R5cGU6Ul8sYXJnczpbIm1hdC1zb3J0LWhlYWRlciJdfV0sYXJyb3dQb3NpdGlvbjpbe3R5cGU6Ul99XSxzdGFydDpbe3R5cGU6Ul99XSxkaXNhYmxlQ2xlYXI6W3t0eXBlOlJffV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoZjEsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoiW21hdC1zb3J0LWhlYWRlcl0iLGV4cG9ydEFzOiJtYXRTb3J0SGVhZGVyIix0ZW1wbGF0ZTonXHgzYyEtLVxuICBXZSBzZXQgdGhlIGB0YWJpbmRleGAgb24gYW4gZWxlbWVudCBpbnNpZGUgdGhlIHRhYmxlIGhlYWRlciwgcmF0aGVyIHRoYW4gdGhlIGhlYWRlciBpdHNlbGYsXG4gIGJlY2F1c2Ugb2YgYSBidWcgaW4gTlZEQSB3aGVyZSBoYXZpbmcgYSBgdGFiaW5kZXhgIG9uIGEgYHRoYCBicmVha3Mga2V5Ym9hcmQgbmF2aWdhdGlvbiBpbiB0aGVcbiAgdGFibGUgKHNlZSBodHRwczovL2dpdGh1Yi5jb20vbnZhY2Nlc3MvbnZkYS9pc3N1ZXMvNzcxOCkuIFRoaXMgYWxsb3dzIGZvciB0aGUgaGVhZGVyIHRvIGJvdGhcbiAgYmUgZm9jdXNhYmxlLCBhbmQgaGF2ZSBzY3JlZW4gcmVhZGVycyByZWFkIG91dCBpdHMgYGFyaWEtc29ydGAgc3RhdGUuIFdlIHByZWZlciB0aGlzIGFwcHJvYWNoXG4gIG92ZXIgaGF2aW5nIGEgYnV0dG9uIHdpdGggYW4gYGFyaWEtbGFiZWxgIGluc2lkZSB0aGUgaGVhZGVyLCBiZWNhdXNlIHRoZSBidXR0b25cJ3MgYGFyaWEtbGFiZWxgXG4gIHdpbGwgYmUgcmVhZCBvdXQgYXMgdGhlIHVzZXIgaXMgbmF2aWdhdGluZyB0aGUgdGFibGVcJ3MgY2VsbCAoc2VlICMxMzAxMikuXG5cbiAgVGhlIGFwcHJvYWNoIGlzIGJhc2VkIG9mZiBvZjogaHR0cHM6Ly9kZXF1ZXVuaXZlcnNpdHkuY29tL2xpYnJhcnkvYXJpYS90YWJsZXMvc2Ytc29ydGFibGUtZ3JpZFxuLS1ceDNlXG48ZGl2IGNsYXNzPSJtYXQtc29ydC1oZWFkZXItY29udGFpbmVyIG1hdC1mb2N1cy1pbmRpY2F0b3IiXG4gICAgIFtjbGFzcy5tYXQtc29ydC1oZWFkZXItc29ydGVkXT0iX2lzU29ydGVkKCkiXG4gICAgIFtjbGFzcy5tYXQtc29ydC1oZWFkZXItcG9zaXRpb24tYmVmb3JlXT0iYXJyb3dQb3NpdGlvbiA9PSBcJ2JlZm9yZVwnIlxuICAgICBbYXR0ci50YWJpbmRleF09Il9pc0Rpc2FibGVkKCkgPyBudWxsIDogMCJcbiAgICAgcm9sZT0iYnV0dG9uIj5cblxuICBceDNjIS0tXG4gICAgVE9ETyhjcmlzYmV0byk6IHRoaXMgZGl2IGlzblwndCBzdHJpY3RseSBuZWNlc3NhcnksIGJ1dCB3ZSBoYXZlIHRvIGtlZXAgaXQgZHVlIHRvIGEgbGFyZ2VcbiAgICBudW1iZXIgb2Ygc2NyZWVuc2hvdCBkaWZmIGZhaWx1cmVzLiBJdCBzaG91bGQgYmUgcmVtb3ZlZCBldmVudHVhbGx5LiBOb3RlIHRoYXQgdGhlIGRpZmZlcmVuY2VcbiAgICBpc25cJ3QgdmlzaWJsZSB3aXRoIGEgc2hvcnRlciBoZWFkZXIsIGJ1dCBvbmNlIGl0IGJyZWFrcyB1cCBpbnRvIG11bHRpcGxlIGxpbmVzLCB0aGlzIGVsZW1lbnRcbiAgICBjYXVzZXMgaXQgdG8gYmUgY2VudGVyLWFsaWduZWQsIHdoZXJlYXMgcmVtb3ZpbmcgaXQgd2lsbCBrZWVwIHRoZSB0ZXh0IHRvIHRoZSBsZWZ0LlxuICAtLVx4M2VcbiAgPGRpdiBjbGFzcz0ibWF0LXNvcnQtaGVhZGVyLWNvbnRlbnQiPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgPC9kaXY+XG5cbiAgXHgzYyEtLSBEaXNhYmxlIGFuaW1hdGlvbnMgd2hpbGUgYSBjdXJyZW50IGFuaW1hdGlvbiBpcyBydW5uaW5nIC0tXHgzZVxuICA8ZGl2IGNsYXNzPSJtYXQtc29ydC1oZWFkZXItYXJyb3ciXG4gICAgICAgKm5nSWY9Il9yZW5kZXJBcnJvdygpIlxuICAgICAgIFtAYXJyb3dPcGFjaXR5XT0iX2dldEFycm93Vmlld1N0YXRlKCkiXG4gICAgICAgW0BhcnJvd1Bvc2l0aW9uXT0iX2dldEFycm93Vmlld1N0YXRlKCkiXG4gICAgICAgW0BhbGxvd0NoaWxkcmVuXT0iX2dldEFycm93RGlyZWN0aW9uU3RhdGUoKSJcbiAgICAgICAoQGFycm93UG9zaXRpb24uc3RhcnQpPSJfZGlzYWJsZVZpZXdTdGF0ZUFuaW1hdGlvbiA9IHRydWUiXG4gICAgICAgKEBhcnJvd1Bvc2l0aW9uLmRvbmUpPSJfZGlzYWJsZVZpZXdTdGF0ZUFuaW1hdGlvbiA9IGZhbHNlIj5cbiAgICA8ZGl2IGNsYXNzPSJtYXQtc29ydC1oZWFkZXItc3RlbSI+PC9kaXY+XG4gICAgPGRpdiBjbGFzcz0ibWF0LXNvcnQtaGVhZGVyLWluZGljYXRvciIgW0BpbmRpY2F0b3JdPSJfZ2V0QXJyb3dEaXJlY3Rpb25TdGF0ZSgpIj5cbiAgICAgIDxkaXYgY2xhc3M9Im1hdC1zb3J0LWhlYWRlci1wb2ludGVyLWxlZnQiIFtAbGVmdFBvaW50ZXJdPSJfZ2V0QXJyb3dEaXJlY3Rpb25TdGF0ZSgpIj48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9Im1hdC1zb3J0LWhlYWRlci1wb2ludGVyLXJpZ2h0IiBbQHJpZ2h0UG9pbnRlcl09Il9nZXRBcnJvd0RpcmVjdGlvblN0YXRlKCkiPjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz0ibWF0LXNvcnQtaGVhZGVyLXBvaW50ZXItbWlkZGxlIj48L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbicsaG9zdDp7Y2xhc3M6Im1hdC1zb3J0LWhlYWRlciIsIihjbGljaykiOiJfaGFuZGxlQ2xpY2soKSIsIihrZXlkb3duKSI6Il9oYW5kbGVLZXlkb3duKCRldmVudCkiLCIobW91c2VlbnRlcikiOiJfc2V0SW5kaWNhdG9ySGludFZpc2libGUodHJ1ZSkiLCIobW91c2VsZWF2ZSkiOiJfc2V0SW5kaWNhdG9ySGludFZpc2libGUoZmFsc2UpIiwiW2F0dHIuYXJpYS1zb3J0XSI6Il9nZXRBcmlhU29ydEF0dHJpYnV0ZSgpIiwiW2NsYXNzLm1hdC1zb3J0LWhlYWRlci1kaXNhYmxlZF0iOiJfaXNEaXNhYmxlZCgpIn0sZW5jYXBzdWxhdGlvbjpXbi5Ob25lLGNoYW5nZURldGVjdGlvbjpqbi5PblB1c2gsaW5wdXRzOlsiZGlzYWJsZWQiXSxhbmltYXRpb25zOltsMS5pbmRpY2F0b3IsbDEubGVmdFBvaW50ZXIsbDEucmlnaHRQb2ludGVyLGwxLmFycm93T3BhY2l0eSxsMS5hcnJvd1Bvc2l0aW9uLGwxLmFsbG93Q2hpbGRyZW5dLHN0eWxlczpbIi5tYXQtc29ydC1oZWFkZXItY29udGFpbmVye2Rpc3BsYXk6ZmxleDtjdXJzb3I6cG9pbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO291dGxpbmU6MH1bbWF0LXNvcnQtaGVhZGVyXS5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LXNvcnQtaGVhZGVyLWNvbnRhaW5lcixbbWF0LXNvcnQtaGVhZGVyXS5jZGstcHJvZ3JhbS1mb2N1c2VkIC5tYXQtc29ydC1oZWFkZXItY29udGFpbmVye2JvcmRlci1ib3R0b206c29saWQgMXB4IGN1cnJlbnRDb2xvcn0ubWF0LXNvcnQtaGVhZGVyLWRpc2FibGVkIC5tYXQtc29ydC1oZWFkZXItY29udGFpbmVye2N1cnNvcjpkZWZhdWx0fS5tYXQtc29ydC1oZWFkZXItY29udGVudHt0ZXh0LWFsaWduOmNlbnRlcjtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyfS5tYXQtc29ydC1oZWFkZXItcG9zaXRpb24tYmVmb3Jle2ZsZXgtZGlyZWN0aW9uOnJvdy1yZXZlcnNlfS5tYXQtc29ydC1oZWFkZXItYXJyb3d7aGVpZ2h0OjEycHg7d2lkdGg6MTJweDttaW4td2lkdGg6MTJweDtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmZsZXg7b3BhY2l0eTowfS5tYXQtc29ydC1oZWFkZXItYXJyb3csW2Rpcj1ydGxdIC5tYXQtc29ydC1oZWFkZXItcG9zaXRpb24tYmVmb3JlIC5tYXQtc29ydC1oZWFkZXItYXJyb3d7bWFyZ2luOjAgMCAwIDZweH0ubWF0LXNvcnQtaGVhZGVyLXBvc2l0aW9uLWJlZm9yZSAubWF0LXNvcnQtaGVhZGVyLWFycm93LFtkaXI9cnRsXSAubWF0LXNvcnQtaGVhZGVyLWFycm93e21hcmdpbjowIDZweCAwIDB9Lm1hdC1zb3J0LWhlYWRlci1zdGVte2JhY2tncm91bmQ6Y3VycmVudENvbG9yO2hlaWdodDoxMHB4O3dpZHRoOjJweDttYXJnaW46YXV0bztkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1zb3J0LWhlYWRlci1zdGVte3dpZHRoOjA7Ym9yZGVyLWxlZnQ6c29saWQgMnB4fS5tYXQtc29ydC1oZWFkZXItaW5kaWNhdG9ye3dpZHRoOjEwMCU7aGVpZ2h0OjJweDtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MH0ubWF0LXNvcnQtaGVhZGVyLXBvaW50ZXItbWlkZGxle21hcmdpbjphdXRvO2hlaWdodDoycHg7d2lkdGg6MnB4O2JhY2tncm91bmQ6Y3VycmVudENvbG9yO3RyYW5zZm9ybTpyb3RhdGUoNDVkZWcpfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1zb3J0LWhlYWRlci1wb2ludGVyLW1pZGRsZXt3aWR0aDowO2hlaWdodDowO2JvcmRlci10b3A6c29saWQgMnB4O2JvcmRlci1sZWZ0OnNvbGlkIDJweH0ubWF0LXNvcnQtaGVhZGVyLXBvaW50ZXItbGVmdCwubWF0LXNvcnQtaGVhZGVyLXBvaW50ZXItcmlnaHR7YmFja2dyb3VuZDpjdXJyZW50Q29sb3I7d2lkdGg6NnB4O2hlaWdodDoycHg7cG9zaXRpb246YWJzb2x1dGU7dG9wOjB9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXNvcnQtaGVhZGVyLXBvaW50ZXItbGVmdCwuY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtc29ydC1oZWFkZXItcG9pbnRlci1yaWdodHt3aWR0aDowO2hlaWdodDowO2JvcmRlci1sZWZ0OnNvbGlkIDZweDtib3JkZXItdG9wOnNvbGlkIDJweH0ubWF0LXNvcnQtaGVhZGVyLXBvaW50ZXItbGVmdHt0cmFuc2Zvcm0tb3JpZ2luOnJpZ2h0O2xlZnQ6MH0ubWF0LXNvcnQtaGVhZGVyLXBvaW50ZXItcmlnaHR7dHJhbnNmb3JtLW9yaWdpbjpsZWZ0O3JpZ2h0OjB9XG4iXX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmMxfSx7dHlwZTpPYn0se3R5cGU6cjEsZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6WyJNQVRfU09SVF9IRUFERVJfQ09MVU1OX0RFRiJdfSx7dHlwZTpCcn1dfSx7dHlwZTpmRn0se3R5cGU6S2h9XX0pLHthcnJvd1Bvc2l0aW9uOlt7dHlwZTpSX31dLGRpc2FibGVDbGVhcjpbe3R5cGU6Ul99XSxpZDpbe3R5cGU6Ul8sYXJnczpbIm1hdC1zb3J0LWhlYWRlciJdfV0sc3RhcnQ6W3t0eXBlOlJffV19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIHUxe311MS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8dTEpfSx1MS7JtW1vZD1mbyh7dHlwZTp1MX0pLHUxLsm1aW5qPURuKHtwcm92aWRlcnM6W2QxXSxpbXBvcnRzOltbcngsTkZdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIodTEsW3t0eXBlOkxfLGFyZ3M6W3tpbXBvcnRzOltyeCxORl0sZXhwb3J0czpbcjEsZjFdLGRlY2xhcmF0aW9uczpbcjEsZjFdLHByb3ZpZGVyczpbZDFdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8odTEse2RlY2xhcmF0aW9uczpmdW5jdGlvbigpe3JldHVybltyMSxmMV19LGltcG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bcngsTkZdfSxleHBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW3IxLGYxXX19KTtjb25zdCBnMT1bW1siY2FwdGlvbiJdXSxbWyJjb2xncm91cCJdLFsiY29sIl1dXTtmdW5jdGlvbiBoMSh0LGUpe2lmKDEmdCYmKENmKDAsInRoIiwzKSxQdSgxKSxNZigpKSwyJnQpe2NvbnN0IHQ9emYoKTtsdSgidGV4dC1hbGlnbiIsdC5qdXN0aWZ5KSxEYygxKSxrdSgiICIsdC5oZWFkZXJUZXh0LCIgIil9fWZ1bmN0aW9uIGIxKHQsZSl7aWYoMSZ0JiYoQ2YoMCwidGQiLDQpLFB1KDEpLE1mKCkpLDImdCl7Y29uc3QgdD1lLiRpbXBsaWNpdCxuPXpmKCk7bHUoInRleHQtYWxpZ24iLG4uanVzdGlmeSksRGMoMSksa3UoIiAiLG4uZGF0YUFjY2Vzc29yKHQsbi5uYW1lKSwiICIpfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24geTEodCl7cmV0dXJuIGNsYXNzIGV4dGVuZHMgdHtjb25zdHJ1Y3RvciguLi50KXtzdXBlciguLi50KSx0aGlzLl9zdGlja3k9ITEsdGhpcy5faGFzU3RpY2t5Q2hhbmdlZD0hMX1nZXQgc3RpY2t5KCl7cmV0dXJuIHRoaXMuX3N0aWNreX1zZXQgc3RpY2t5KHQpe2NvbnN0IGU9dGhpcy5fc3RpY2t5O3RoaXMuX3N0aWNreT1lSCh0KSx0aGlzLl9oYXNTdGlja3lDaGFuZ2VkPWUhPT10aGlzLl9zdGlja3l9aGFzU3RpY2t5Q2hhbmdlZCgpe2NvbnN0IHQ9dGhpcy5faGFzU3RpY2t5Q2hhbmdlZDtyZXR1cm4gdGhpcy5faGFzU3RpY2t5Q2hhbmdlZD0hMSx0fXJlc2V0U3RpY2t5Q2hhbmdlZCgpe3RoaXMuX2hhc1N0aWNreUNoYW5nZWQ9ITF9fX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3QgXzE9bmV3IGVyKCJDREtfVEFCTEUiKSxDMT1uZXcgZXIoInRleHQtY29sdW1uLW9wdGlvbnMiKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIE0xe2NvbnN0cnVjdG9yKHQpe3RoaXMudGVtcGxhdGU9dH19TTEuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fE0xKShnZihFYikpfSxNMS7JtWRpcj1obyh7dHlwZTpNMSxzZWxlY3RvcnM6W1siIiwiY2RrQ2VsbERlZiIsIiJdXX0pLE0xLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6RWJ9XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKE0xLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6IltjZGtDZWxsRGVmXSJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpFYn1dfSksbnVsbCk7Y2xhc3MgdjF7Y29uc3RydWN0b3IodCl7dGhpcy50ZW1wbGF0ZT10fX12MS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8djEpKGdmKEViKSl9LHYxLsm1ZGlyPWhvKHt0eXBlOnYxLHNlbGVjdG9yczpbWyIiLCJjZGtIZWFkZXJDZWxsRGVmIiwiIl1dfSksdjEuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpFYn1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIodjEsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW2Nka0hlYWRlckNlbGxEZWZdIn1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkVifV19KSxudWxsKTtjbGFzcyB4MXtjb25zdHJ1Y3Rvcih0KXt0aGlzLnRlbXBsYXRlPXR9fXgxLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx4MSkoZ2YoRWIpKX0seDEuybVkaXI9aG8oe3R5cGU6eDEsc2VsZWN0b3JzOltbIiIsImNka0Zvb3RlckNlbGxEZWYiLCIiXV19KSx4MS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkVifV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih4MSxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJbY2RrRm9vdGVyQ2VsbERlZl0ifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6RWJ9XX0pLG51bGwpO2NvbnN0IE8xPXkxKGNsYXNze30pO2NsYXNzIFAxIGV4dGVuZHMgTzF7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLl90YWJsZT10LHRoaXMuX3N0aWNreUVuZD0hMX1nZXQgbmFtZSgpe3JldHVybiB0aGlzLl9uYW1lfXNldCBuYW1lKHQpe3RoaXMuX3NldE5hbWVJbnB1dCh0KX1nZXQgc3RpY2t5RW5kKCl7cmV0dXJuIHRoaXMuX3N0aWNreUVuZH1zZXQgc3RpY2t5RW5kKHQpe2NvbnN0IGU9dGhpcy5fc3RpY2t5RW5kO3RoaXMuX3N0aWNreUVuZD1lSCh0KSx0aGlzLl9oYXNTdGlja3lDaGFuZ2VkPWUhPT10aGlzLl9zdGlja3lFbmR9X3VwZGF0ZUNvbHVtbkNzc0NsYXNzTmFtZSgpe3RoaXMuX2NvbHVtbkNzc0NsYXNzTmFtZT1bYGNkay1jb2x1bW4tJHt0aGlzLmNzc0NsYXNzRnJpZW5kbHlOYW1lfWBdfV9zZXROYW1lSW5wdXQodCl7dCYmKHRoaXMuX25hbWU9dCx0aGlzLmNzc0NsYXNzRnJpZW5kbHlOYW1lPXQucmVwbGFjZSgvW15hLXowLTlfLV0vZ2ksIi0iKSx0aGlzLl91cGRhdGVDb2x1bW5Dc3NDbGFzc05hbWUoKSl9fVAxLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxQMSkoZ2YoXzEsOCkpfSxQMS7JtWRpcj1obyh7dHlwZTpQMSxzZWxlY3RvcnM6W1siIiwiY2RrQ29sdW1uRGVmIiwiIl1dLGNvbnRlbnRRdWVyaWVzOmZ1bmN0aW9uIHQoZSxuLG8pe2lmKDEmZSYmKGp5KG8sTTEsNSksankobyx2MSw1KSxqeShvLHgxLDUpKSwyJmUpe2xldCB0O0J5KHQ9VXkoKSkmJihuLmNlbGw9dC5maXJzdCksQnkodD1VeSgpKSYmKG4uaGVhZGVyQ2VsbD10LmZpcnN0KSxCeSh0PVV5KCkpJiYobi5mb290ZXJDZWxsPXQuZmlyc3QpfX0saW5wdXRzOntzdGlja3k6InN0aWNreSIsbmFtZTpbImNka0NvbHVtbkRlZiIsIm5hbWUiXSxzdGlja3lFbmQ6InN0aWNreUVuZCJ9LGZlYXR1cmVzOltqaChbe3Byb3ZpZGU6Ik1BVF9TT1JUX0hFQURFUl9DT0xVTU5fREVGIix1c2VFeGlzdGluZzpQMX1dKSxRcF19KSxQMS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltfMV19LHt0eXBlOkJyfV19XSxQMS5wcm9wRGVjb3JhdG9ycz17bmFtZTpbe3R5cGU6Ul8sYXJnczpbImNka0NvbHVtbkRlZiJdfV0sc3RpY2t5RW5kOlt7dHlwZTpSXyxhcmdzOlsic3RpY2t5RW5kIl19XSxjZWxsOlt7dHlwZTppcixhcmdzOltNMV19XSxoZWFkZXJDZWxsOlt7dHlwZTppcixhcmdzOlt2MV19XSxmb290ZXJDZWxsOlt7dHlwZTppcixhcmdzOlt4MV19XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihQMSxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJbY2RrQ29sdW1uRGVmXSIsaW5wdXRzOlsic3RpY2t5Il0scHJvdmlkZXJzOlt7cHJvdmlkZToiTUFUX1NPUlRfSEVBREVSX0NPTFVNTl9ERUYiLHVzZUV4aXN0aW5nOlAxfV19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbXzFdfSx7dHlwZTpCcn1dfV19KSx7bmFtZTpbe3R5cGU6Ul8sYXJnczpbImNka0NvbHVtbkRlZiJdfV0sc3RpY2t5RW5kOlt7dHlwZTpSXyxhcmdzOlsic3RpY2t5RW5kIl19XSxjZWxsOlt7dHlwZTppcixhcmdzOltNMV19XSxoZWFkZXJDZWxsOlt7dHlwZTppcixhcmdzOlt2MV19XSxmb290ZXJDZWxsOlt7dHlwZTppcixhcmdzOlt4MV19XX0pO2NsYXNzIHcxe2NvbnN0cnVjdG9yKHQsZSl7Y29uc3Qgbj1lLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0O2Zvcihjb25zdCBlIG9mIHQuX2NvbHVtbkNzc0NsYXNzTmFtZSluLmFkZChlKX19Y2xhc3MgazEgZXh0ZW5kcyB3MXtjb25zdHJ1Y3Rvcih0LGUpe3N1cGVyKHQsZSl9fWsxLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxrMSkoZ2YoUDEpLGdmKEtoKSl9LGsxLsm1ZGlyPWhvKHt0eXBlOmsxLHNlbGVjdG9yczpbWyJjZGstaGVhZGVyLWNlbGwiXSxbInRoIiwiY2RrLWhlYWRlci1jZWxsIiwiIl1dLGhvc3RBdHRyczpbInJvbGUiLCJjb2x1bW5oZWFkZXIiLDEsImNkay1oZWFkZXItY2VsbCJdLGZlYXR1cmVzOltRcF19KSxrMS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOlAxfSx7dHlwZTpLaH1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoazEsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiY2RrLWhlYWRlci1jZWxsLCB0aFtjZGstaGVhZGVyLWNlbGxdIixob3N0OntjbGFzczoiY2RrLWhlYWRlci1jZWxsIixyb2xlOiJjb2x1bW5oZWFkZXIifX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOlAxfSx7dHlwZTpLaH1dfSksbnVsbCk7Y2xhc3MgUzEgZXh0ZW5kcyB3MXtjb25zdHJ1Y3Rvcih0LGUpe3ZhciBuO2lmKHN1cGVyKHQsZSksMT09PShudWxsPT09KG49dC5fdGFibGUpfHx2b2lkIDA9PT1uP3ZvaWQgMDpuLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQubm9kZVR5cGUpKXtjb25zdCBuPXQuX3RhYmxlLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCJyb2xlIik7ZS5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSgicm9sZSIsImdyaWQiPT09bnx8InRyZWVncmlkIj09PW4/ImdyaWRjZWxsIjoiY2VsbCIpfX19UzEuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFMxKShnZihQMSksZ2YoS2gpKX0sUzEuybVkaXI9aG8oe3R5cGU6UzEsc2VsZWN0b3JzOltbImNkay1mb290ZXItY2VsbCJdLFsidGQiLCJjZGstZm9vdGVyLWNlbGwiLCIiXV0saG9zdEF0dHJzOlsxLCJjZGstZm9vdGVyLWNlbGwiXSxmZWF0dXJlczpbUXBdfSksUzEuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpQMX0se3R5cGU6S2h9XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFMxLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6ImNkay1mb290ZXItY2VsbCwgdGRbY2RrLWZvb3Rlci1jZWxsXSIsaG9zdDp7Y2xhc3M6ImNkay1mb290ZXItY2VsbCJ9fV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6UDF9LHt0eXBlOktofV19KSxudWxsKTtjbGFzcyBEMSBleHRlbmRzIHcxe2NvbnN0cnVjdG9yKHQsZSl7dmFyIG47aWYoc3VwZXIodCxlKSwxPT09KG51bGw9PT0obj10Ll90YWJsZSl8fHZvaWQgMD09PW4/dm9pZCAwOm4uX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5ub2RlVHlwZSkpe2NvbnN0IG49dC5fdGFibGUuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoInJvbGUiKTtlLm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCJyb2xlIiwiZ3JpZCI9PT1ufHwidHJlZWdyaWQiPT09bj8iZ3JpZGNlbGwiOiJjZWxsIil9fX1EMS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8RDEpKGdmKFAxKSxnZihLaCkpfSxEMS7JtWRpcj1obyh7dHlwZTpEMSxzZWxlY3RvcnM6W1siY2RrLWNlbGwiXSxbInRkIiwiY2RrLWNlbGwiLCIiXV0saG9zdEF0dHJzOlsxLCJjZGstY2VsbCJdLGZlYXR1cmVzOltRcF19KSxEMS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOlAxfSx7dHlwZTpLaH1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoRDEsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiY2RrLWNlbGwsIHRkW2Nkay1jZWxsXSIsaG9zdDp7Y2xhc3M6ImNkay1jZWxsIn19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpQMX0se3R5cGU6S2h9XX0pLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgUjF7Y29uc3RydWN0b3IoKXt0aGlzLnRhc2tzPVtdLHRoaXMuZW5kVGFza3M9W119fWNvbnN0IEUxPW5ldyBlcigiX0NPQUxFU0NFRF9TVFlMRV9TQ0hFRFVMRVIiKTtjbGFzcyBBMXtjb25zdHJ1Y3Rvcih0KXt0aGlzLl9uZ1pvbmU9dCx0aGlzLl9jdXJyZW50U2NoZWR1bGU9bnVsbCx0aGlzLl9kZXN0cm95ZWQ9bmV3IEJ9c2NoZWR1bGUodCl7dGhpcy5fY3JlYXRlU2NoZWR1bGVJZk5lZWRlZCgpLHRoaXMuX2N1cnJlbnRTY2hlZHVsZS50YXNrcy5wdXNoKHQpfXNjaGVkdWxlRW5kKHQpe3RoaXMuX2NyZWF0ZVNjaGVkdWxlSWZOZWVkZWQoKSx0aGlzLl9jdXJyZW50U2NoZWR1bGUuZW5kVGFza3MucHVzaCh0KX1uZ09uRGVzdHJveSgpe3RoaXMuX2Rlc3Ryb3llZC5uZXh0KCksdGhpcy5fZGVzdHJveWVkLmNvbXBsZXRlKCl9X2NyZWF0ZVNjaGVkdWxlSWZOZWVkZWQoKXt0aGlzLl9jdXJyZW50U2NoZWR1bGV8fCh0aGlzLl9jdXJyZW50U2NoZWR1bGU9bmV3IFIxLHRoaXMuX2dldFNjaGVkdWxlT2JzZXJ2YWJsZSgpLnBpcGUoamUodGhpcy5fZGVzdHJveWVkKSkuc3Vic2NyaWJlKCgoKT0+e2Zvcig7dGhpcy5fY3VycmVudFNjaGVkdWxlLnRhc2tzLmxlbmd0aHx8dGhpcy5fY3VycmVudFNjaGVkdWxlLmVuZFRhc2tzLmxlbmd0aDspe2NvbnN0IHQ9dGhpcy5fY3VycmVudFNjaGVkdWxlO3RoaXMuX2N1cnJlbnRTY2hlZHVsZT1uZXcgUjE7Zm9yKGNvbnN0IGUgb2YgdC50YXNrcyllKCk7Zm9yKGNvbnN0IGUgb2YgdC5lbmRUYXNrcyllKCl9dGhpcy5fY3VycmVudFNjaGVkdWxlPW51bGx9KSkpfV9nZXRTY2hlZHVsZU9ic2VydmFibGUoKXtyZXR1cm4gdGhpcy5fbmdab25lLmlzU3RhYmxlP1B0KFByb21pc2UucmVzb2x2ZSh2b2lkIDApKTp0aGlzLl9uZ1pvbmUub25TdGFibGUucGlwZSh2ZSgxKSl9fUExLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxBMSkoVHIobUMpKX0sQTEuybVwcm92PVNuKHt0b2tlbjpBMSxmYWN0b3J5OkExLsm1ZmFjfSksQTEuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTptQ31dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoQTEsW3t0eXBlOlVtfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOm1DfV19KSxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IFQxPSI8bmctY29udGFpbmVyIGNka0NlbGxPdXRsZXQ+PC9uZy1jb250YWluZXI+IjtjbGFzcyBOMXtjb25zdHJ1Y3Rvcih0LGUpe3RoaXMudGVtcGxhdGU9dCx0aGlzLl9kaWZmZXJzPWV9bmdPbkNoYW5nZXModCl7aWYoIXRoaXMuX2NvbHVtbnNEaWZmZXIpe2NvbnN0IGU9dC5jb2x1bW5zJiZ0LmNvbHVtbnMuY3VycmVudFZhbHVlfHxbXTt0aGlzLl9jb2x1bW5zRGlmZmVyPXRoaXMuX2RpZmZlcnMuZmluZChlKS5jcmVhdGUoKSx0aGlzLl9jb2x1bW5zRGlmZmVyLmRpZmYoZSl9fWdldENvbHVtbnNEaWZmKCl7cmV0dXJuIHRoaXMuX2NvbHVtbnNEaWZmZXIuZGlmZih0aGlzLmNvbHVtbnMpfWV4dHJhY3RDZWxsVGVtcGxhdGUodCl7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBJMT90LmhlYWRlckNlbGwudGVtcGxhdGU6dGhpcyBpbnN0YW5jZW9mIEYxP3QuZm9vdGVyQ2VsbC50ZW1wbGF0ZTp0LmNlbGwudGVtcGxhdGV9fU4xLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxOMSkoZ2YoRWIpLGdmKGhiKSl9LE4xLsm1ZGlyPWhvKHt0eXBlOk4xLGZlYXR1cmVzOltxb119KSxOMS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkVifSx7dHlwZTpoYn1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoTjEsW3t0eXBlOmtffV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkVifSx7dHlwZTpoYn1dfSksbnVsbCk7Y29uc3QgejE9eTEoY2xhc3MgZXh0ZW5kcyBOMXt9KTtjbGFzcyBJMSBleHRlbmRzIHoxe2NvbnN0cnVjdG9yKHQsZSxuKXtzdXBlcih0LGUpLHRoaXMuX3RhYmxlPW59bmdPbkNoYW5nZXModCl7c3VwZXIubmdPbkNoYW5nZXModCl9fUkxLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxJMSkoZ2YoRWIpLGdmKGhiKSxnZihfMSw4KSl9LEkxLsm1ZGlyPWhvKHt0eXBlOkkxLHNlbGVjdG9yczpbWyIiLCJjZGtIZWFkZXJSb3dEZWYiLCIiXV0saW5wdXRzOntjb2x1bW5zOlsiY2RrSGVhZGVyUm93RGVmIiwiY29sdW1ucyJdLHN0aWNreTpbImNka0hlYWRlclJvd0RlZlN0aWNreSIsInN0aWNreSJdfSxmZWF0dXJlczpbUXAscW9dfSksSTEuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpFYn0se3R5cGU6aGJ9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltfMV19LHt0eXBlOkJyfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEkxLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6IltjZGtIZWFkZXJSb3dEZWZdIixpbnB1dHM6WyJjb2x1bW5zOiBjZGtIZWFkZXJSb3dEZWYiLCJzdGlja3k6IGNka0hlYWRlclJvd0RlZlN0aWNreSJdfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6RWJ9LHt0eXBlOmhifSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbXzFdfSx7dHlwZTpCcn1dfV19KSxudWxsKTtjb25zdCBIMT15MShjbGFzcyBleHRlbmRzIE4xe30pO2NsYXNzIEYxIGV4dGVuZHMgSDF7Y29uc3RydWN0b3IodCxlLG4pe3N1cGVyKHQsZSksdGhpcy5fdGFibGU9bn1uZ09uQ2hhbmdlcyh0KXtzdXBlci5uZ09uQ2hhbmdlcyh0KX19RjEuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEYxKShnZihFYiksZ2YoaGIpLGdmKF8xLDgpKX0sRjEuybVkaXI9aG8oe3R5cGU6RjEsc2VsZWN0b3JzOltbIiIsImNka0Zvb3RlclJvd0RlZiIsIiJdXSxpbnB1dHM6e2NvbHVtbnM6WyJjZGtGb290ZXJSb3dEZWYiLCJjb2x1bW5zIl0sc3RpY2t5OlsiY2RrRm9vdGVyUm93RGVmU3RpY2t5Iiwic3RpY2t5Il19LGZlYXR1cmVzOltRcCxxb119KSxGMS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkVifSx7dHlwZTpoYn0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W18xXX0se3R5cGU6QnJ9XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoRjEsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW2Nka0Zvb3RlclJvd0RlZl0iLGlucHV0czpbImNvbHVtbnM6IGNka0Zvb3RlclJvd0RlZiIsInN0aWNreTogY2RrRm9vdGVyUm93RGVmU3RpY2t5Il19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpFYn0se3R5cGU6aGJ9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltfMV19LHt0eXBlOkJyfV19XX0pLG51bGwpO2NsYXNzIEwxIGV4dGVuZHMgTjF7Y29uc3RydWN0b3IodCxlLG4pe3N1cGVyKHQsZSksdGhpcy5fdGFibGU9bn19TDEuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEwxKShnZihFYiksZ2YoaGIpLGdmKF8xLDgpKX0sTDEuybVkaXI9aG8oe3R5cGU6TDEsc2VsZWN0b3JzOltbIiIsImNka1Jvd0RlZiIsIiJdXSxpbnB1dHM6e2NvbHVtbnM6WyJjZGtSb3dEZWZDb2x1bW5zIiwiY29sdW1ucyJdLHdoZW46WyJjZGtSb3dEZWZXaGVuIiwid2hlbiJdfSxmZWF0dXJlczpbUXBdfSksTDEuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpFYn0se3R5cGU6aGJ9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltfMV19LHt0eXBlOkJyfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEwxLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6IltjZGtSb3dEZWZdIixpbnB1dHM6WyJjb2x1bW5zOiBjZGtSb3dEZWZDb2x1bW5zIiwid2hlbjogY2RrUm93RGVmV2hlbiJdfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6RWJ9LHt0eXBlOmhifSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbXzFdfSx7dHlwZTpCcn1dfV19KSxudWxsKTtjbGFzcyBCMXtjb25zdHJ1Y3Rvcih0KXt0aGlzLl92aWV3Q29udGFpbmVyPXQsQjEubW9zdFJlY2VudENlbGxPdXRsZXQ9dGhpc31uZ09uRGVzdHJveSgpe0IxLm1vc3RSZWNlbnRDZWxsT3V0bGV0PT09dGhpcyYmKEIxLm1vc3RSZWNlbnRDZWxsT3V0bGV0PW51bGwpfX1CMS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8QjEpKGdmKEZiKSl9LEIxLsm1ZGlyPWhvKHt0eXBlOkIxLHNlbGVjdG9yczpbWyIiLCJjZGtDZWxsT3V0bGV0IiwiIl1dfSksQjEubW9zdFJlY2VudENlbGxPdXRsZXQ9bnVsbCxCMS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkZifV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihCMSxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJbY2RrQ2VsbE91dGxldF0ifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6RmJ9XX0pLG51bGwpO2NsYXNzIFYxe31WMS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8VjEpfSxWMS7JtWNtcD1zbyh7dHlwZTpWMSxzZWxlY3RvcnM6W1siY2RrLWhlYWRlci1yb3ciXSxbInRyIiwiY2RrLWhlYWRlci1yb3ciLCIiXV0saG9zdEF0dHJzOlsicm9sZSIsInJvdyIsMSwiY2RrLWhlYWRlci1yb3ciXSxkZWNsczoxLHZhcnM6MCxjb25zdHM6W1siY2RrQ2VsbE91dGxldCIsIiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiZQZigwLDApfSxkaXJlY3RpdmVzOltCMV0sZW5jYXBzdWxhdGlvbjoyfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihWMSxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJjZGstaGVhZGVyLXJvdywgdHJbY2RrLWhlYWRlci1yb3ddIix0ZW1wbGF0ZTpUMSxob3N0OntjbGFzczoiY2RrLWhlYWRlci1yb3ciLHJvbGU6InJvdyJ9LGNoYW5nZURldGVjdGlvbjpqbi5EZWZhdWx0LGVuY2Fwc3VsYXRpb246V24uTm9uZX1dfV0sbnVsbCxudWxsKTtjbGFzcyBqMXt9ajEuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGoxKX0sajEuybVjbXA9c28oe3R5cGU6ajEsc2VsZWN0b3JzOltbImNkay1mb290ZXItcm93Il0sWyJ0ciIsImNkay1mb290ZXItcm93IiwiIl1dLGhvc3RBdHRyczpbInJvbGUiLCJyb3ciLDEsImNkay1mb290ZXItcm93Il0sZGVjbHM6MSx2YXJzOjAsY29uc3RzOltbImNka0NlbGxPdXRsZXQiLCIiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmUGYoMCwwKX0sZGlyZWN0aXZlczpbQjFdLGVuY2Fwc3VsYXRpb246Mn0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoajEsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoiY2RrLWZvb3Rlci1yb3csIHRyW2Nkay1mb290ZXItcm93XSIsdGVtcGxhdGU6VDEsaG9zdDp7Y2xhc3M6ImNkay1mb290ZXItcm93Iixyb2xlOiJyb3cifSxjaGFuZ2VEZXRlY3Rpb246am4uRGVmYXVsdCxlbmNhcHN1bGF0aW9uOlduLk5vbmV9XX1dLG51bGwsbnVsbCk7Y2xhc3MgVTF7fVUxLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxVMSl9LFUxLsm1Y21wPXNvKHt0eXBlOlUxLHNlbGVjdG9yczpbWyJjZGstcm93Il0sWyJ0ciIsImNkay1yb3ciLCIiXV0saG9zdEF0dHJzOlsicm9sZSIsInJvdyIsMSwiY2RrLXJvdyJdLGRlY2xzOjEsdmFyczowLGNvbnN0czpbWyJjZGtDZWxsT3V0bGV0IiwiIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJlBmKDAsMCl9LGRpcmVjdGl2ZXM6W0IxXSxlbmNhcHN1bGF0aW9uOjJ9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFUxLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6ImNkay1yb3csIHRyW2Nkay1yb3ddIix0ZW1wbGF0ZTpUMSxob3N0OntjbGFzczoiY2RrLXJvdyIscm9sZToicm93In0sY2hhbmdlRGV0ZWN0aW9uOmpuLkRlZmF1bHQsZW5jYXBzdWxhdGlvbjpXbi5Ob25lfV19XSxudWxsLG51bGwpO2NsYXNzIFcxe2NvbnN0cnVjdG9yKHQpe3RoaXMudGVtcGxhdGVSZWY9dH19VzEuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFcxKShnZihFYikpfSxXMS7JtWRpcj1obyh7dHlwZTpXMSxzZWxlY3RvcnM6W1sibmctdGVtcGxhdGUiLCJjZGtOb0RhdGFSb3ciLCIiXV19KSxXMS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkVifV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihXMSxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJuZy10ZW1wbGF0ZVtjZGtOb0RhdGFSb3ddIn1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkVifV19KSxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IEcxPVsidG9wIiwiYm90dG9tIiwibGVmdCIsInJpZ2h0Il07Y2xhc3MgWTF7Y29uc3RydWN0b3IodCxlLG4sbyxpPSEwLGE9ITAscil7dGhpcy5faXNOYXRpdmVIdG1sVGFibGU9dCx0aGlzLl9zdGlja0NlbGxDc3M9ZSx0aGlzLmRpcmVjdGlvbj1uLHRoaXMuX2NvYWxlc2NlZFN0eWxlU2NoZWR1bGVyPW8sdGhpcy5faXNCcm93c2VyPWksdGhpcy5fbmVlZHNQb3NpdGlvblN0aWNreU9uRWxlbWVudD1hLHRoaXMuX3Bvc2l0aW9uTGlzdGVuZXI9cix0aGlzLl9jYWNoZWRDZWxsV2lkdGhzPVtdLHRoaXMuX2JvcmRlckNlbGxDc3M9e3RvcDpgJHtlfS1ib3JkZXItZWxlbS10b3BgLGJvdHRvbTpgJHtlfS1ib3JkZXItZWxlbS1ib3R0b21gLGxlZnQ6YCR7ZX0tYm9yZGVyLWVsZW0tbGVmdGAscmlnaHQ6YCR7ZX0tYm9yZGVyLWVsZW0tcmlnaHRgfX1jbGVhclN0aWNreVBvc2l0aW9uaW5nKHQsZSl7Y29uc3Qgbj1bXTtmb3IoY29uc3QgZSBvZiB0KWlmKGUubm9kZVR5cGU9PT1lLkVMRU1FTlRfTk9ERSl7bi5wdXNoKGUpO2ZvcihsZXQgdD0wO3Q8ZS5jaGlsZHJlbi5sZW5ndGg7dCsrKW4ucHVzaChlLmNoaWxkcmVuW3RdKX10aGlzLl9jb2FsZXNjZWRTdHlsZVNjaGVkdWxlci5zY2hlZHVsZSgoKCk9Pntmb3IoY29uc3QgdCBvZiBuKXRoaXMuX3JlbW92ZVN0aWNreVN0eWxlKHQsZSl9KSl9dXBkYXRlU3RpY2t5Q29sdW1ucyh0LGUsbixvPSEwKXtpZighdC5sZW5ndGh8fCF0aGlzLl9pc0Jyb3dzZXJ8fCFlLnNvbWUoKHQ9PnQpKSYmIW4uc29tZSgodD0+dCkpKXJldHVybiB2b2lkKHRoaXMuX3Bvc2l0aW9uTGlzdGVuZXImJih0aGlzLl9wb3NpdGlvbkxpc3RlbmVyLnN0aWNreUNvbHVtbnNVcGRhdGVkKHtzaXplczpbXX0pLHRoaXMuX3Bvc2l0aW9uTGlzdGVuZXIuc3RpY2t5RW5kQ29sdW1uc1VwZGF0ZWQoe3NpemVzOltdfSkpKTtjb25zdCBpPXRbMF0sYT1pLmNoaWxkcmVuLmxlbmd0aCxyPXRoaXMuX2dldENlbGxXaWR0aHMoaSxvKSxzPXRoaXMuX2dldFN0aWNreVN0YXJ0Q29sdW1uUG9zaXRpb25zKHIsZSksbD10aGlzLl9nZXRTdGlja3lFbmRDb2x1bW5Qb3NpdGlvbnMocixuKSxjPWUubGFzdEluZGV4T2YoITApLGQ9bi5pbmRleE9mKCEwKTt0aGlzLl9jb2FsZXNjZWRTdHlsZVNjaGVkdWxlci5zY2hlZHVsZSgoKCk9Pntjb25zdCBvPSJydGwiPT09dGhpcy5kaXJlY3Rpb24saT1vPyJyaWdodCI6ImxlZnQiLHA9bz8ibGVmdCI6InJpZ2h0Ijtmb3IoY29uc3QgbyBvZiB0KWZvcihsZXQgdD0wO3Q8YTt0Kyspe2NvbnN0IGE9by5jaGlsZHJlblt0XTtlW3RdJiZ0aGlzLl9hZGRTdGlja3lTdHlsZShhLGksc1t0XSx0PT09Yyksblt0XSYmdGhpcy5fYWRkU3RpY2t5U3R5bGUoYSxwLGxbdF0sdD09PWQpfXRoaXMuX3Bvc2l0aW9uTGlzdGVuZXImJih0aGlzLl9wb3NpdGlvbkxpc3RlbmVyLnN0aWNreUNvbHVtbnNVcGRhdGVkKHtzaXplczotMT09PWM/W106ci5zbGljZSgwLGMrMSkubWFwKCgodCxuKT0+ZVtuXT90Om51bGwpKX0pLHRoaXMuX3Bvc2l0aW9uTGlzdGVuZXIuc3RpY2t5RW5kQ29sdW1uc1VwZGF0ZWQoe3NpemVzOi0xPT09ZD9bXTpyLnNsaWNlKGQpLm1hcCgoKHQsZSk9Pm5bZStkXT90Om51bGwpKS5yZXZlcnNlKCl9KSl9KSl9c3RpY2tSb3dzKHQsZSxuKXtpZighdGhpcy5faXNCcm93c2VyKXJldHVybjtjb25zdCBvPSJib3R0b20iPT09bj90LnNsaWNlKCkucmV2ZXJzZSgpOnQsaT0iYm90dG9tIj09PW4/ZS5zbGljZSgpLnJldmVyc2UoKTplLGE9W10scj1bXSxzPVtdO2ZvcihsZXQgdD0wLGU9MDt0PG8ubGVuZ3RoO3QrKyl7aWYoIWlbdF0pY29udGludWU7YVt0XT1lO2NvbnN0IG49b1t0XTtzW3RdPXRoaXMuX2lzTmF0aXZlSHRtbFRhYmxlP0FycmF5LmZyb20obi5jaGlsZHJlbik6W25dO2NvbnN0IGw9bi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQ7ZSs9bCxyW3RdPWx9Y29uc3QgbD1pLmxhc3RJbmRleE9mKCEwKTt0aGlzLl9jb2FsZXNjZWRTdHlsZVNjaGVkdWxlci5zY2hlZHVsZSgoKCk9Pnt2YXIgdCxlO2ZvcihsZXQgdD0wO3Q8by5sZW5ndGg7dCsrKXtpZighaVt0XSljb250aW51ZTtjb25zdCBlPWFbdF0sbz10PT09bDtmb3IoY29uc3QgaSBvZiBzW3RdKXRoaXMuX2FkZFN0aWNreVN0eWxlKGksbixlLG8pfSJ0b3AiPT09bj9udWxsPT09KHQ9dGhpcy5fcG9zaXRpb25MaXN0ZW5lcil8fHZvaWQgMD09PXR8fHQuc3RpY2t5SGVhZGVyUm93c1VwZGF0ZWQoe3NpemVzOnIsb2Zmc2V0czphLGVsZW1lbnRzOnN9KTpudWxsPT09KGU9dGhpcy5fcG9zaXRpb25MaXN0ZW5lcil8fHZvaWQgMD09PWV8fGUuc3RpY2t5Rm9vdGVyUm93c1VwZGF0ZWQoe3NpemVzOnIsb2Zmc2V0czphLGVsZW1lbnRzOnN9KX0pKX11cGRhdGVTdGlja3lGb290ZXJDb250YWluZXIodCxlKXtpZighdGhpcy5faXNOYXRpdmVIdG1sVGFibGUpcmV0dXJuO2NvbnN0IG49dC5xdWVyeVNlbGVjdG9yKCJ0Zm9vdCIpO3RoaXMuX2NvYWxlc2NlZFN0eWxlU2NoZWR1bGVyLnNjaGVkdWxlKCgoKT0+e2Uuc29tZSgodD0+IXQpKT90aGlzLl9yZW1vdmVTdGlja3lTdHlsZShuLFsiYm90dG9tIl0pOnRoaXMuX2FkZFN0aWNreVN0eWxlKG4sImJvdHRvbSIsMCwhMSl9KSl9X3JlbW92ZVN0aWNreVN0eWxlKHQsZSl7Zm9yKGNvbnN0IG4gb2YgZSl0LnN0eWxlW25dPSIiLHQuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLl9ib3JkZXJDZWxsQ3NzW25dKTtHMS5zb21lKChuPT4tMT09PWUuaW5kZXhPZihuKSYmdC5zdHlsZVtuXSkpP3Quc3R5bGUuekluZGV4PXRoaXMuX2dldENhbGN1bGF0ZWRaSW5kZXgodCk6KHQuc3R5bGUuekluZGV4PSIiLHRoaXMuX25lZWRzUG9zaXRpb25TdGlja3lPbkVsZW1lbnQmJih0LnN0eWxlLnBvc2l0aW9uPSIiKSx0LmNsYXNzTGlzdC5yZW1vdmUodGhpcy5fc3RpY2tDZWxsQ3NzKSl9X2FkZFN0aWNreVN0eWxlKHQsZSxuLG8pe3QuY2xhc3NMaXN0LmFkZCh0aGlzLl9zdGlja0NlbGxDc3MpLG8mJnQuY2xhc3NMaXN0LmFkZCh0aGlzLl9ib3JkZXJDZWxsQ3NzW2VdKSx0LnN0eWxlW2VdPWAke259cHhgLHQuc3R5bGUuekluZGV4PXRoaXMuX2dldENhbGN1bGF0ZWRaSW5kZXgodCksdGhpcy5fbmVlZHNQb3NpdGlvblN0aWNreU9uRWxlbWVudCYmKHQuc3R5bGUuY3NzVGV4dCs9InBvc2l0aW9uOiAtd2Via2l0LXN0aWNreTsgcG9zaXRpb246IHN0aWNreTsgIil9X2dldENhbGN1bGF0ZWRaSW5kZXgodCl7Y29uc3QgZT17dG9wOjEwMCxib3R0b206MTAsbGVmdDoxLHJpZ2h0OjF9O2xldCBuPTA7Zm9yKGNvbnN0IG8gb2YgRzEpdC5zdHlsZVtvXSYmKG4rPWVbb10pO3JldHVybiBuP2Ake259YDoiIn1fZ2V0Q2VsbFdpZHRocyh0LGU9ITApe2lmKCFlJiZ0aGlzLl9jYWNoZWRDZWxsV2lkdGhzLmxlbmd0aClyZXR1cm4gdGhpcy5fY2FjaGVkQ2VsbFdpZHRocztjb25zdCBuPVtdLG89dC5jaGlsZHJlbjtmb3IobGV0IHQ9MDt0PG8ubGVuZ3RoO3QrKyl7bi5wdXNoKG9bdF0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGgpfXJldHVybiB0aGlzLl9jYWNoZWRDZWxsV2lkdGhzPW4sbn1fZ2V0U3RpY2t5U3RhcnRDb2x1bW5Qb3NpdGlvbnModCxlKXtjb25zdCBuPVtdO2xldCBvPTA7Zm9yKGxldCBpPTA7aTx0Lmxlbmd0aDtpKyspZVtpXSYmKG5baV09byxvKz10W2ldKTtyZXR1cm4gbn1fZ2V0U3RpY2t5RW5kQ29sdW1uUG9zaXRpb25zKHQsZSl7Y29uc3Qgbj1bXTtsZXQgbz0wO2ZvcihsZXQgaT10Lmxlbmd0aDtpPjA7aS0tKWVbaV0mJihuW2ldPW8sbys9dFtpXSk7cmV0dXJuIG59fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBxMSh0KXtyZXR1cm4gRXJyb3IoYENvdWxkIG5vdCBmaW5kIGNvbHVtbiB3aXRoIGlkICIke3R9Ii5gKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IFoxPW5ldyBlcigiQ0RLX1NQTCIpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBYMXt9WDEuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFgxKX0sWDEuybVkaXI9aG8oe3R5cGU6WDEsc2VsZWN0b3JzOltbImNkay10YWJsZSIsInJlY3ljbGVSb3dzIiwiIl0sWyJ0YWJsZSIsImNkay10YWJsZSIsIiIsInJlY3ljbGVSb3dzIiwiIl1dLGZlYXR1cmVzOltqaChbe3Byb3ZpZGU6V0wsdXNlQ2xhc3M6Vkx9XSldfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihYMSxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJjZGstdGFibGVbcmVjeWNsZVJvd3NdLCB0YWJsZVtjZGstdGFibGVdW3JlY3ljbGVSb3dzXSIscHJvdmlkZXJzOlt7cHJvdmlkZTpXTCx1c2VDbGFzczpWTH1dfV19XSxudWxsLG51bGwpO2NsYXNzIEsxe2NvbnN0cnVjdG9yKHQsZSl7dGhpcy52aWV3Q29udGFpbmVyPXQsdGhpcy5lbGVtZW50UmVmPWV9fUsxLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxLMSkoZ2YoRmIpLGdmKEtoKSl9LEsxLsm1ZGlyPWhvKHt0eXBlOksxLHNlbGVjdG9yczpbWyIiLCJyb3dPdXRsZXQiLCIiXV19KSxLMS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkZifSx7dHlwZTpLaH1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoSzEsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW3Jvd091dGxldF0ifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6RmJ9LHt0eXBlOktofV19KSxudWxsKTtjbGFzcyBKMXtjb25zdHJ1Y3Rvcih0LGUpe3RoaXMudmlld0NvbnRhaW5lcj10LHRoaXMuZWxlbWVudFJlZj1lfX1KMS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8SjEpKGdmKEZiKSxnZihLaCkpfSxKMS7JtWRpcj1obyh7dHlwZTpKMSxzZWxlY3RvcnM6W1siIiwiaGVhZGVyUm93T3V0bGV0IiwiIl1dfSksSjEuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpGYn0se3R5cGU6S2h9XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEoxLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6IltoZWFkZXJSb3dPdXRsZXRdIn1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkZifSx7dHlwZTpLaH1dfSksbnVsbCk7Y2xhc3MgUTF7Y29uc3RydWN0b3IodCxlKXt0aGlzLnZpZXdDb250YWluZXI9dCx0aGlzLmVsZW1lbnRSZWY9ZX19UTEuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFExKShnZihGYiksZ2YoS2gpKX0sUTEuybVkaXI9aG8oe3R5cGU6UTEsc2VsZWN0b3JzOltbIiIsImZvb3RlclJvd091dGxldCIsIiJdXX0pLFExLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6RmJ9LHt0eXBlOktofV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihRMSxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJbZm9vdGVyUm93T3V0bGV0XSJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpGYn0se3R5cGU6S2h9XX0pLG51bGwpO2NsYXNzICQxe2NvbnN0cnVjdG9yKHQsZSl7dGhpcy52aWV3Q29udGFpbmVyPXQsdGhpcy5lbGVtZW50UmVmPWV9fSQxLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHwkMSkoZ2YoRmIpLGdmKEtoKSl9LCQxLsm1ZGlyPWhvKHt0eXBlOiQxLHNlbGVjdG9yczpbWyIiLCJub0RhdGFSb3dPdXRsZXQiLCIiXV19KSwkMS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkZifSx7dHlwZTpLaH1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoJDEsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW25vRGF0YVJvd091dGxldF0ifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6RmJ9LHt0eXBlOktofV19KSxudWxsKTtjb25zdCB0Mz0nXG4gIDxuZy1jb250ZW50IHNlbGVjdD0iY2FwdGlvbiI+PC9uZy1jb250ZW50PlxuICA8bmctY29udGVudCBzZWxlY3Q9ImNvbGdyb3VwLCBjb2wiPjwvbmctY29udGVudD5cbiAgPG5nLWNvbnRhaW5lciBoZWFkZXJSb3dPdXRsZXQ+PC9uZy1jb250YWluZXI+XG4gIDxuZy1jb250YWluZXIgcm93T3V0bGV0PjwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyIG5vRGF0YVJvd091dGxldD48L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lciBmb290ZXJSb3dPdXRsZXQ+PC9uZy1jb250YWluZXI+XG4nO2NsYXNzIGUze2NvbnN0cnVjdG9yKHQsZSxuLG8saSxhLHIscyxsLGMsZCl7dGhpcy5fZGlmZmVycz10LHRoaXMuX2NoYW5nZURldGVjdG9yUmVmPWUsdGhpcy5fZWxlbWVudFJlZj1uLHRoaXMuX2Rpcj1pLHRoaXMuX3BsYXRmb3JtPXIsdGhpcy5fdmlld1JlcGVhdGVyPXMsdGhpcy5fY29hbGVzY2VkU3R5bGVTY2hlZHVsZXI9bCx0aGlzLl92aWV3cG9ydFJ1bGVyPWMsdGhpcy5fc3RpY2t5UG9zaXRpb25pbmdMaXN0ZW5lcj1kLHRoaXMuX29uRGVzdHJveT1uZXcgQix0aGlzLl9jb2x1bW5EZWZzQnlOYW1lPW5ldyBNYXAsdGhpcy5fY3VzdG9tQ29sdW1uRGVmcz1uZXcgU2V0LHRoaXMuX2N1c3RvbVJvd0RlZnM9bmV3IFNldCx0aGlzLl9jdXN0b21IZWFkZXJSb3dEZWZzPW5ldyBTZXQsdGhpcy5fY3VzdG9tRm9vdGVyUm93RGVmcz1uZXcgU2V0LHRoaXMuX2hlYWRlclJvd0RlZkNoYW5nZWQ9ITAsdGhpcy5fZm9vdGVyUm93RGVmQ2hhbmdlZD0hMCx0aGlzLl9zdGlja3lDb2x1bW5TdHlsZXNOZWVkUmVzZXQ9ITAsdGhpcy5fZm9yY2VSZWNhbGN1bGF0ZUNlbGxXaWR0aHM9ITAsdGhpcy5fY2FjaGVkUmVuZGVyUm93c01hcD1uZXcgTWFwLHRoaXMuc3RpY2t5Q3NzQ2xhc3M9ImNkay10YWJsZS1zdGlja3kiLHRoaXMubmVlZHNQb3NpdGlvblN0aWNreU9uRWxlbWVudD0hMCx0aGlzLl9pc1Nob3dpbmdOb0RhdGFSb3c9ITEsdGhpcy5fbXVsdGlUZW1wbGF0ZURhdGFSb3dzPSExLHRoaXMuX2ZpeGVkTGF5b3V0PSExLHRoaXMuY29udGVudENoYW5nZWQ9bmV3IFN5LHRoaXMudmlld0NoYW5nZT1uZXcgaih7c3RhcnQ6MCxlbmQ6TnVtYmVyLk1BWF9WQUxVRX0pLG98fHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoInJvbGUiLCJ0YWJsZSIpLHRoaXMuX2RvY3VtZW50PWEsdGhpcy5faXNOYXRpdmVIdG1sVGFibGU9IlRBQkxFIj09PXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5ub2RlTmFtZX1nZXQgdHJhY2tCeSgpe3JldHVybiB0aGlzLl90cmFja0J5Rm59c2V0IHRyYWNrQnkodCl7InVuZGVmaW5lZCIhPXR5cGVvZiBuZ0Rldk1vZGUmJiFuZ0Rldk1vZGV8fG51bGw9PXR8fCJmdW5jdGlvbiI9PXR5cGVvZiB0fHxjb25zb2xlLndhcm4oYHRyYWNrQnkgbXVzdCBiZSBhIGZ1bmN0aW9uLCBidXQgcmVjZWl2ZWQgJHtKU09OLnN0cmluZ2lmeSh0KX0uYCksdGhpcy5fdHJhY2tCeUZuPXR9Z2V0IGRhdGFTb3VyY2UoKXtyZXR1cm4gdGhpcy5fZGF0YVNvdXJjZX1zZXQgZGF0YVNvdXJjZSh0KXt0aGlzLl9kYXRhU291cmNlIT09dCYmdGhpcy5fc3dpdGNoRGF0YVNvdXJjZSh0KX1nZXQgbXVsdGlUZW1wbGF0ZURhdGFSb3dzKCl7cmV0dXJuIHRoaXMuX211bHRpVGVtcGxhdGVEYXRhUm93c31zZXQgbXVsdGlUZW1wbGF0ZURhdGFSb3dzKHQpe3RoaXMuX211bHRpVGVtcGxhdGVEYXRhUm93cz1lSCh0KSx0aGlzLl9yb3dPdXRsZXQmJnRoaXMuX3Jvd091dGxldC52aWV3Q29udGFpbmVyLmxlbmd0aCYmKHRoaXMuX2ZvcmNlUmVuZGVyRGF0YVJvd3MoKSx0aGlzLnVwZGF0ZVN0aWNreUNvbHVtblN0eWxlcygpKX1nZXQgZml4ZWRMYXlvdXQoKXtyZXR1cm4gdGhpcy5fZml4ZWRMYXlvdXR9c2V0IGZpeGVkTGF5b3V0KHQpe3RoaXMuX2ZpeGVkTGF5b3V0PWVIKHQpLHRoaXMuX2ZvcmNlUmVjYWxjdWxhdGVDZWxsV2lkdGhzPSEwLHRoaXMuX3N0aWNreUNvbHVtblN0eWxlc05lZWRSZXNldD0hMH1uZ09uSW5pdCgpe3RoaXMuX3NldHVwU3RpY2t5U3R5bGVyKCksdGhpcy5faXNOYXRpdmVIdG1sVGFibGUmJnRoaXMuX2FwcGx5TmF0aXZlVGFibGVTZWN0aW9ucygpLHRoaXMuX2RhdGFEaWZmZXI9dGhpcy5fZGlmZmVycy5maW5kKFtdKS5jcmVhdGUoKCh0LGUpPT50aGlzLnRyYWNrQnk/dGhpcy50cmFja0J5KGUuZGF0YUluZGV4LGUuZGF0YSk6ZSkpLHRoaXMuX3ZpZXdwb3J0UnVsZXIuY2hhbmdlKCkucGlwZShqZSh0aGlzLl9vbkRlc3Ryb3kpKS5zdWJzY3JpYmUoKCgpPT57dGhpcy5fZm9yY2VSZWNhbGN1bGF0ZUNlbGxXaWR0aHM9ITB9KSl9bmdBZnRlckNvbnRlbnRDaGVja2VkKCl7aWYodGhpcy5fY2FjaGVSb3dEZWZzKCksdGhpcy5fY2FjaGVDb2x1bW5EZWZzKCksIXRoaXMuX2hlYWRlclJvd0RlZnMubGVuZ3RoJiYhdGhpcy5fZm9vdGVyUm93RGVmcy5sZW5ndGgmJiF0aGlzLl9yb3dEZWZzLmxlbmd0aCYmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpKXRocm93KGZ1bmN0aW9uIHQoKXtyZXR1cm4gRXJyb3IoIk1pc3NpbmcgZGVmaW5pdGlvbnMgZm9yIGhlYWRlciwgZm9vdGVyLCBhbmQgcm93OyBjYW5ub3QgZGV0ZXJtaW5lIHdoaWNoIGNvbHVtbnMgc2hvdWxkIGJlIHJlbmRlcmVkLiIpfSkoKTtjb25zdCBlPXRoaXMuX3JlbmRlclVwZGF0ZWRDb2x1bW5zKCl8fHRoaXMuX2hlYWRlclJvd0RlZkNoYW5nZWR8fHRoaXMuX2Zvb3RlclJvd0RlZkNoYW5nZWQ7dGhpcy5fc3RpY2t5Q29sdW1uU3R5bGVzTmVlZFJlc2V0PXRoaXMuX3N0aWNreUNvbHVtblN0eWxlc05lZWRSZXNldHx8ZSx0aGlzLl9mb3JjZVJlY2FsY3VsYXRlQ2VsbFdpZHRocz1lLHRoaXMuX2hlYWRlclJvd0RlZkNoYW5nZWQmJih0aGlzLl9mb3JjZVJlbmRlckhlYWRlclJvd3MoKSx0aGlzLl9oZWFkZXJSb3dEZWZDaGFuZ2VkPSExKSx0aGlzLl9mb290ZXJSb3dEZWZDaGFuZ2VkJiYodGhpcy5fZm9yY2VSZW5kZXJGb290ZXJSb3dzKCksdGhpcy5fZm9vdGVyUm93RGVmQ2hhbmdlZD0hMSksdGhpcy5kYXRhU291cmNlJiZ0aGlzLl9yb3dEZWZzLmxlbmd0aD4wJiYhdGhpcy5fcmVuZGVyQ2hhbmdlU3Vic2NyaXB0aW9uP3RoaXMuX29ic2VydmVSZW5kZXJDaGFuZ2VzKCk6dGhpcy5fc3RpY2t5Q29sdW1uU3R5bGVzTmVlZFJlc2V0JiZ0aGlzLnVwZGF0ZVN0aWNreUNvbHVtblN0eWxlcygpLHRoaXMuX2NoZWNrU3RpY2t5U3RhdGVzKCl9bmdPbkRlc3Ryb3koKXt0aGlzLl9yb3dPdXRsZXQudmlld0NvbnRhaW5lci5jbGVhcigpLHRoaXMuX25vRGF0YVJvd091dGxldC52aWV3Q29udGFpbmVyLmNsZWFyKCksdGhpcy5faGVhZGVyUm93T3V0bGV0LnZpZXdDb250YWluZXIuY2xlYXIoKSx0aGlzLl9mb290ZXJSb3dPdXRsZXQudmlld0NvbnRhaW5lci5jbGVhcigpLHRoaXMuX2NhY2hlZFJlbmRlclJvd3NNYXAuY2xlYXIoKSx0aGlzLl9vbkRlc3Ryb3kubmV4dCgpLHRoaXMuX29uRGVzdHJveS5jb21wbGV0ZSgpLEZMKHRoaXMuZGF0YVNvdXJjZSkmJnRoaXMuZGF0YVNvdXJjZS5kaXNjb25uZWN0KHRoaXMpfXJlbmRlclJvd3MoKXt0aGlzLl9yZW5kZXJSb3dzPXRoaXMuX2dldEFsbFJlbmRlclJvd3MoKTtjb25zdCB0PXRoaXMuX2RhdGFEaWZmZXIuZGlmZih0aGlzLl9yZW5kZXJSb3dzKTtpZighdClyZXR1cm4gdGhpcy5fdXBkYXRlTm9EYXRhUm93KCksdm9pZCB0aGlzLmNvbnRlbnRDaGFuZ2VkLm5leHQoKTtjb25zdCBlPXRoaXMuX3Jvd091dGxldC52aWV3Q29udGFpbmVyO3RoaXMuX3ZpZXdSZXBlYXRlci5hcHBseUNoYW5nZXModCxlLCgodCxlLG4pPT50aGlzLl9nZXRFbWJlZGRlZFZpZXdBcmdzKHQuaXRlbSxuKSksKHQ9PnQuaXRlbS5kYXRhKSwodD0+ezE9PT10Lm9wZXJhdGlvbiYmdC5jb250ZXh0JiZ0aGlzLl9yZW5kZXJDZWxsVGVtcGxhdGVGb3JJdGVtKHQucmVjb3JkLml0ZW0ucm93RGVmLHQuY29udGV4dCl9KSksdGhpcy5fdXBkYXRlUm93SW5kZXhDb250ZXh0KCksdC5mb3JFYWNoSWRlbnRpdHlDaGFuZ2UoKHQ9PntlLmdldCh0LmN1cnJlbnRJbmRleCkuY29udGV4dC4kaW1wbGljaXQ9dC5pdGVtLmRhdGF9KSksdGhpcy5fdXBkYXRlTm9EYXRhUm93KCksdGhpcy51cGRhdGVTdGlja3lDb2x1bW5TdHlsZXMoKSx0aGlzLmNvbnRlbnRDaGFuZ2VkLm5leHQoKX1hZGRDb2x1bW5EZWYodCl7dGhpcy5fY3VzdG9tQ29sdW1uRGVmcy5hZGQodCl9cmVtb3ZlQ29sdW1uRGVmKHQpe3RoaXMuX2N1c3RvbUNvbHVtbkRlZnMuZGVsZXRlKHQpfWFkZFJvd0RlZih0KXt0aGlzLl9jdXN0b21Sb3dEZWZzLmFkZCh0KX1yZW1vdmVSb3dEZWYodCl7dGhpcy5fY3VzdG9tUm93RGVmcy5kZWxldGUodCl9YWRkSGVhZGVyUm93RGVmKHQpe3RoaXMuX2N1c3RvbUhlYWRlclJvd0RlZnMuYWRkKHQpLHRoaXMuX2hlYWRlclJvd0RlZkNoYW5nZWQ9ITB9cmVtb3ZlSGVhZGVyUm93RGVmKHQpe3RoaXMuX2N1c3RvbUhlYWRlclJvd0RlZnMuZGVsZXRlKHQpLHRoaXMuX2hlYWRlclJvd0RlZkNoYW5nZWQ9ITB9YWRkRm9vdGVyUm93RGVmKHQpe3RoaXMuX2N1c3RvbUZvb3RlclJvd0RlZnMuYWRkKHQpLHRoaXMuX2Zvb3RlclJvd0RlZkNoYW5nZWQ9ITB9cmVtb3ZlRm9vdGVyUm93RGVmKHQpe3RoaXMuX2N1c3RvbUZvb3RlclJvd0RlZnMuZGVsZXRlKHQpLHRoaXMuX2Zvb3RlclJvd0RlZkNoYW5nZWQ9ITB9c2V0Tm9EYXRhUm93KHQpe3RoaXMuX2N1c3RvbU5vRGF0YVJvdz10fXVwZGF0ZVN0aWNreUhlYWRlclJvd1N0eWxlcygpe2NvbnN0IHQ9dGhpcy5fZ2V0UmVuZGVyZWRSb3dzKHRoaXMuX2hlYWRlclJvd091dGxldCksZT10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcigidGhlYWQiKTtlJiYoZS5zdHlsZS5kaXNwbGF5PXQubGVuZ3RoPyIiOiJub25lIik7Y29uc3Qgbj10aGlzLl9oZWFkZXJSb3dEZWZzLm1hcCgodD0+dC5zdGlja3kpKTt0aGlzLl9zdGlja3lTdHlsZXIuY2xlYXJTdGlja3lQb3NpdGlvbmluZyh0LFsidG9wIl0pLHRoaXMuX3N0aWNreVN0eWxlci5zdGlja1Jvd3ModCxuLCJ0b3AiKSx0aGlzLl9oZWFkZXJSb3dEZWZzLmZvckVhY2goKHQ9PnQucmVzZXRTdGlja3lDaGFuZ2VkKCkpKX11cGRhdGVTdGlja3lGb290ZXJSb3dTdHlsZXMoKXtjb25zdCB0PXRoaXMuX2dldFJlbmRlcmVkUm93cyh0aGlzLl9mb290ZXJSb3dPdXRsZXQpLGU9dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoInRmb290Iik7ZSYmKGUuc3R5bGUuZGlzcGxheT10Lmxlbmd0aD8iIjoibm9uZSIpO2NvbnN0IG49dGhpcy5fZm9vdGVyUm93RGVmcy5tYXAoKHQ9PnQuc3RpY2t5KSk7dGhpcy5fc3RpY2t5U3R5bGVyLmNsZWFyU3RpY2t5UG9zaXRpb25pbmcodCxbImJvdHRvbSJdKSx0aGlzLl9zdGlja3lTdHlsZXIuc3RpY2tSb3dzKHQsbiwiYm90dG9tIiksdGhpcy5fc3RpY2t5U3R5bGVyLnVwZGF0ZVN0aWNreUZvb3RlckNvbnRhaW5lcih0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsbiksdGhpcy5fZm9vdGVyUm93RGVmcy5mb3JFYWNoKCh0PT50LnJlc2V0U3RpY2t5Q2hhbmdlZCgpKSl9dXBkYXRlU3RpY2t5Q29sdW1uU3R5bGVzKCl7Y29uc3QgdD10aGlzLl9nZXRSZW5kZXJlZFJvd3ModGhpcy5faGVhZGVyUm93T3V0bGV0KSxlPXRoaXMuX2dldFJlbmRlcmVkUm93cyh0aGlzLl9yb3dPdXRsZXQpLG49dGhpcy5fZ2V0UmVuZGVyZWRSb3dzKHRoaXMuX2Zvb3RlclJvd091dGxldCk7KHRoaXMuX2lzTmF0aXZlSHRtbFRhYmxlJiYhdGhpcy5fZml4ZWRMYXlvdXR8fHRoaXMuX3N0aWNreUNvbHVtblN0eWxlc05lZWRSZXNldCkmJih0aGlzLl9zdGlja3lTdHlsZXIuY2xlYXJTdGlja3lQb3NpdGlvbmluZyhbLi4udCwuLi5lLC4uLm5dLFsibGVmdCIsInJpZ2h0Il0pLHRoaXMuX3N0aWNreUNvbHVtblN0eWxlc05lZWRSZXNldD0hMSksdC5mb3JFYWNoKCgodCxlKT0+e3RoaXMuX2FkZFN0aWNreUNvbHVtblN0eWxlcyhbdF0sdGhpcy5faGVhZGVyUm93RGVmc1tlXSl9KSksdGhpcy5fcm93RGVmcy5mb3JFYWNoKCh0PT57Y29uc3Qgbj1bXTtmb3IobGV0IG89MDtvPGUubGVuZ3RoO28rKyl0aGlzLl9yZW5kZXJSb3dzW29dLnJvd0RlZj09PXQmJm4ucHVzaChlW29dKTt0aGlzLl9hZGRTdGlja3lDb2x1bW5TdHlsZXMobix0KX0pKSxuLmZvckVhY2goKCh0LGUpPT57dGhpcy5fYWRkU3RpY2t5Q29sdW1uU3R5bGVzKFt0XSx0aGlzLl9mb290ZXJSb3dEZWZzW2VdKX0pKSxBcnJheS5mcm9tKHRoaXMuX2NvbHVtbkRlZnNCeU5hbWUudmFsdWVzKCkpLmZvckVhY2goKHQ9PnQucmVzZXRTdGlja3lDaGFuZ2VkKCkpKX1fZ2V0QWxsUmVuZGVyUm93cygpe2NvbnN0IHQ9W10sZT10aGlzLl9jYWNoZWRSZW5kZXJSb3dzTWFwO3RoaXMuX2NhY2hlZFJlbmRlclJvd3NNYXA9bmV3IE1hcDtmb3IobGV0IG49MDtuPHRoaXMuX2RhdGEubGVuZ3RoO24rKyl7bGV0IG89dGhpcy5fZGF0YVtuXTtjb25zdCBpPXRoaXMuX2dldFJlbmRlclJvd3NGb3JEYXRhKG8sbixlLmdldChvKSk7dGhpcy5fY2FjaGVkUmVuZGVyUm93c01hcC5oYXMobyl8fHRoaXMuX2NhY2hlZFJlbmRlclJvd3NNYXAuc2V0KG8sbmV3IFdlYWtNYXApO2ZvcihsZXQgZT0wO2U8aS5sZW5ndGg7ZSsrKXtsZXQgbj1pW2VdO2NvbnN0IG89dGhpcy5fY2FjaGVkUmVuZGVyUm93c01hcC5nZXQobi5kYXRhKTtvLmhhcyhuLnJvd0RlZik/by5nZXQobi5yb3dEZWYpLnB1c2gobik6by5zZXQobi5yb3dEZWYsW25dKSx0LnB1c2gobil9fXJldHVybiB0fV9nZXRSZW5kZXJSb3dzRm9yRGF0YSh0LGUsbil7cmV0dXJuIHRoaXMuX2dldFJvd0RlZnModCxlKS5tYXAoKG89Pntjb25zdCBpPW4mJm4uaGFzKG8pP24uZ2V0KG8pOltdO2lmKGkubGVuZ3RoKXtjb25zdCB0PWkuc2hpZnQoKTtyZXR1cm4gdC5kYXRhSW5kZXg9ZSx0fXJldHVybntkYXRhOnQscm93RGVmOm8sZGF0YUluZGV4OmV9fSkpfV9jYWNoZUNvbHVtbkRlZnMoKXt0aGlzLl9jb2x1bW5EZWZzQnlOYW1lLmNsZWFyKCk7bjModGhpcy5fZ2V0T3duRGVmcyh0aGlzLl9jb250ZW50Q29sdW1uRGVmcyksdGhpcy5fY3VzdG9tQ29sdW1uRGVmcykuZm9yRWFjaCgodD0+e2lmKHRoaXMuX2NvbHVtbkRlZnNCeU5hbWUuaGFzKHQubmFtZSkmJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSl0aHJvdyhmdW5jdGlvbiBlKHQpe3JldHVybiBFcnJvcihgRHVwbGljYXRlIGNvbHVtbiBkZWZpbml0aW9uIG5hbWUgcHJvdmlkZWQ6ICIke3R9Ii5gKX0pKHQubmFtZSk7dGhpcy5fY29sdW1uRGVmc0J5TmFtZS5zZXQodC5uYW1lLHQpfSkpfV9jYWNoZVJvd0RlZnMoKXt0aGlzLl9oZWFkZXJSb3dEZWZzPW4zKHRoaXMuX2dldE93bkRlZnModGhpcy5fY29udGVudEhlYWRlclJvd0RlZnMpLHRoaXMuX2N1c3RvbUhlYWRlclJvd0RlZnMpLHRoaXMuX2Zvb3RlclJvd0RlZnM9bjModGhpcy5fZ2V0T3duRGVmcyh0aGlzLl9jb250ZW50Rm9vdGVyUm93RGVmcyksdGhpcy5fY3VzdG9tRm9vdGVyUm93RGVmcyksdGhpcy5fcm93RGVmcz1uMyh0aGlzLl9nZXRPd25EZWZzKHRoaXMuX2NvbnRlbnRSb3dEZWZzKSx0aGlzLl9jdXN0b21Sb3dEZWZzKTtjb25zdCB0PXRoaXMuX3Jvd0RlZnMuZmlsdGVyKCh0PT4hdC53aGVuKSk7aWYoIXRoaXMubXVsdGlUZW1wbGF0ZURhdGFSb3dzJiZ0Lmxlbmd0aD4xJiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkpdGhyb3coZnVuY3Rpb24gZSgpe3JldHVybiBFcnJvcigiVGhlcmUgY2FuIG9ubHkgYmUgb25lIGRlZmF1bHQgcm93IHdpdGhvdXQgYSB3aGVuIHByZWRpY2F0ZSBmdW5jdGlvbi4iKX0pKCk7dGhpcy5fZGVmYXVsdFJvd0RlZj10WzBdfV9yZW5kZXJVcGRhdGVkQ29sdW1ucygpe2NvbnN0IHQ9KHQsZSk9PnR8fCEhZS5nZXRDb2x1bW5zRGlmZigpLGU9dGhpcy5fcm93RGVmcy5yZWR1Y2UodCwhMSk7ZSYmdGhpcy5fZm9yY2VSZW5kZXJEYXRhUm93cygpO2NvbnN0IG49dGhpcy5faGVhZGVyUm93RGVmcy5yZWR1Y2UodCwhMSk7biYmdGhpcy5fZm9yY2VSZW5kZXJIZWFkZXJSb3dzKCk7Y29uc3Qgbz10aGlzLl9mb290ZXJSb3dEZWZzLnJlZHVjZSh0LCExKTtyZXR1cm4gbyYmdGhpcy5fZm9yY2VSZW5kZXJGb290ZXJSb3dzKCksZXx8bnx8b31fc3dpdGNoRGF0YVNvdXJjZSh0KXt0aGlzLl9kYXRhPVtdLEZMKHRoaXMuZGF0YVNvdXJjZSkmJnRoaXMuZGF0YVNvdXJjZS5kaXNjb25uZWN0KHRoaXMpLHRoaXMuX3JlbmRlckNoYW5nZVN1YnNjcmlwdGlvbiYmKHRoaXMuX3JlbmRlckNoYW5nZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHRoaXMuX3JlbmRlckNoYW5nZVN1YnNjcmlwdGlvbj1udWxsKSx0fHwodGhpcy5fZGF0YURpZmZlciYmdGhpcy5fZGF0YURpZmZlci5kaWZmKFtdKSx0aGlzLl9yb3dPdXRsZXQudmlld0NvbnRhaW5lci5jbGVhcigpKSx0aGlzLl9kYXRhU291cmNlPXR9X29ic2VydmVSZW5kZXJDaGFuZ2VzKCl7aWYoIXRoaXMuZGF0YVNvdXJjZSlyZXR1cm47bGV0IHQ7aWYoRkwodGhpcy5kYXRhU291cmNlKT90PXRoaXMuZGF0YVNvdXJjZS5jb25uZWN0KHRoaXMpOkx0KHRoaXMuZGF0YVNvdXJjZSk/dD10aGlzLmRhdGFTb3VyY2U6QXJyYXkuaXNBcnJheSh0aGlzLmRhdGFTb3VyY2UpJiYodD16dCh0aGlzLmRhdGFTb3VyY2UpKSx2b2lkIDA9PT10JiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkpdGhyb3coZnVuY3Rpb24gZSgpe3JldHVybiBFcnJvcigiUHJvdmlkZWQgZGF0YSBzb3VyY2UgZGlkIG5vdCBtYXRjaCBhbiBhcnJheSwgT2JzZXJ2YWJsZSwgb3IgRGF0YVNvdXJjZSIpfSkoKTt0aGlzLl9yZW5kZXJDaGFuZ2VTdWJzY3JpcHRpb249dC5waXBlKGplKHRoaXMuX29uRGVzdHJveSkpLnN1YnNjcmliZSgodD0+e3RoaXMuX2RhdGE9dHx8W10sdGhpcy5yZW5kZXJSb3dzKCl9KSl9X2ZvcmNlUmVuZGVySGVhZGVyUm93cygpe3RoaXMuX2hlYWRlclJvd091dGxldC52aWV3Q29udGFpbmVyLmxlbmd0aD4wJiZ0aGlzLl9oZWFkZXJSb3dPdXRsZXQudmlld0NvbnRhaW5lci5jbGVhcigpLHRoaXMuX2hlYWRlclJvd0RlZnMuZm9yRWFjaCgoKHQsZSk9PnRoaXMuX3JlbmRlclJvdyh0aGlzLl9oZWFkZXJSb3dPdXRsZXQsdCxlKSkpLHRoaXMudXBkYXRlU3RpY2t5SGVhZGVyUm93U3R5bGVzKCl9X2ZvcmNlUmVuZGVyRm9vdGVyUm93cygpe3RoaXMuX2Zvb3RlclJvd091dGxldC52aWV3Q29udGFpbmVyLmxlbmd0aD4wJiZ0aGlzLl9mb290ZXJSb3dPdXRsZXQudmlld0NvbnRhaW5lci5jbGVhcigpLHRoaXMuX2Zvb3RlclJvd0RlZnMuZm9yRWFjaCgoKHQsZSk9PnRoaXMuX3JlbmRlclJvdyh0aGlzLl9mb290ZXJSb3dPdXRsZXQsdCxlKSkpLHRoaXMudXBkYXRlU3RpY2t5Rm9vdGVyUm93U3R5bGVzKCl9X2FkZFN0aWNreUNvbHVtblN0eWxlcyh0LGUpe2NvbnN0IG49QXJyYXkuZnJvbShlLmNvbHVtbnN8fFtdKS5tYXAoKHQ9Pntjb25zdCBlPXRoaXMuX2NvbHVtbkRlZnNCeU5hbWUuZ2V0KHQpO2lmKCFlJiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkpdGhyb3cgcTEodCk7cmV0dXJuIGV9KSksbz1uLm1hcCgodD0+dC5zdGlja3kpKSxpPW4ubWFwKCh0PT50LnN0aWNreUVuZCkpO3RoaXMuX3N0aWNreVN0eWxlci51cGRhdGVTdGlja3lDb2x1bW5zKHQsbyxpLCF0aGlzLl9maXhlZExheW91dHx8dGhpcy5fZm9yY2VSZWNhbGN1bGF0ZUNlbGxXaWR0aHMpfV9nZXRSZW5kZXJlZFJvd3ModCl7Y29uc3QgZT1bXTtmb3IobGV0IG49MDtuPHQudmlld0NvbnRhaW5lci5sZW5ndGg7bisrKXtjb25zdCBvPXQudmlld0NvbnRhaW5lci5nZXQobik7ZS5wdXNoKG8ucm9vdE5vZGVzWzBdKX1yZXR1cm4gZX1fZ2V0Um93RGVmcyh0LGUpe2lmKDE9PXRoaXMuX3Jvd0RlZnMubGVuZ3RoKXJldHVyblt0aGlzLl9yb3dEZWZzWzBdXTtsZXQgbj1bXTtpZih0aGlzLm11bHRpVGVtcGxhdGVEYXRhUm93cyluPXRoaXMuX3Jvd0RlZnMuZmlsdGVyKChuPT4hbi53aGVufHxuLndoZW4oZSx0KSkpO2Vsc2V7bGV0IG89dGhpcy5fcm93RGVmcy5maW5kKChuPT5uLndoZW4mJm4ud2hlbihlLHQpKSl8fHRoaXMuX2RlZmF1bHRSb3dEZWY7byYmbi5wdXNoKG8pfWlmKCFuLmxlbmd0aCYmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpKXRocm93KGZ1bmN0aW9uIG8odCl7cmV0dXJuIEVycm9yKGBDb3VsZCBub3QgZmluZCBhIG1hdGNoaW5nIHJvdyBkZWZpbml0aW9uIGZvciB0aGVwcm92aWRlZCByb3cgZGF0YTogJHtKU09OLnN0cmluZ2lmeSh0KX1gKX0pKHQpO3JldHVybiBufV9nZXRFbWJlZGRlZFZpZXdBcmdzKHQsZSl7cmV0dXJue3RlbXBsYXRlUmVmOnQucm93RGVmLnRlbXBsYXRlLGNvbnRleHQ6eyRpbXBsaWNpdDp0LmRhdGF9LGluZGV4OmV9fV9yZW5kZXJSb3codCxlLG4sbz17fSl7Y29uc3QgaT10LnZpZXdDb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KGUudGVtcGxhdGUsbyxuKTtyZXR1cm4gdGhpcy5fcmVuZGVyQ2VsbFRlbXBsYXRlRm9ySXRlbShlLG8pLGl9X3JlbmRlckNlbGxUZW1wbGF0ZUZvckl0ZW0odCxlKXtmb3IobGV0IG4gb2YgdGhpcy5fZ2V0Q2VsbFRlbXBsYXRlcyh0KSlCMS5tb3N0UmVjZW50Q2VsbE91dGxldCYmQjEubW9zdFJlY2VudENlbGxPdXRsZXQuX3ZpZXdDb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KG4sZSk7dGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCl9X3VwZGF0ZVJvd0luZGV4Q29udGV4dCgpe2NvbnN0IHQ9dGhpcy5fcm93T3V0bGV0LnZpZXdDb250YWluZXI7Zm9yKGxldCBlPTAsbj10Lmxlbmd0aDtlPG47ZSsrKXtjb25zdCBvPXQuZ2V0KGUpLmNvbnRleHQ7by5jb3VudD1uLG8uZmlyc3Q9MD09PWUsby5sYXN0PWU9PT1uLTEsby5ldmVuPWUlMj09MCxvLm9kZD0hby5ldmVuLHRoaXMubXVsdGlUZW1wbGF0ZURhdGFSb3dzPyhvLmRhdGFJbmRleD10aGlzLl9yZW5kZXJSb3dzW2VdLmRhdGFJbmRleCxvLnJlbmRlckluZGV4PWUpOm8uaW5kZXg9dGhpcy5fcmVuZGVyUm93c1tlXS5kYXRhSW5kZXh9fV9nZXRDZWxsVGVtcGxhdGVzKHQpe3JldHVybiB0JiZ0LmNvbHVtbnM/QXJyYXkuZnJvbSh0LmNvbHVtbnMsKGU9Pntjb25zdCBuPXRoaXMuX2NvbHVtbkRlZnNCeU5hbWUuZ2V0KGUpO2lmKCFuJiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkpdGhyb3cgcTEoZSk7cmV0dXJuIHQuZXh0cmFjdENlbGxUZW1wbGF0ZShuKX0pKTpbXX1fYXBwbHlOYXRpdmVUYWJsZVNlY3Rpb25zKCl7Y29uc3QgdD10aGlzLl9kb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksZT1be3RhZzoidGhlYWQiLG91dGxldHM6W3RoaXMuX2hlYWRlclJvd091dGxldF19LHt0YWc6InRib2R5IixvdXRsZXRzOlt0aGlzLl9yb3dPdXRsZXQsdGhpcy5fbm9EYXRhUm93T3V0bGV0XX0se3RhZzoidGZvb3QiLG91dGxldHM6W3RoaXMuX2Zvb3RlclJvd091dGxldF19XTtmb3IoY29uc3QgbiBvZiBlKXtjb25zdCBlPXRoaXMuX2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQobi50YWcpO2Uuc2V0QXR0cmlidXRlKCJyb2xlIiwicm93Z3JvdXAiKTtmb3IoY29uc3QgdCBvZiBuLm91dGxldHMpZS5hcHBlbmRDaGlsZCh0LmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7dC5hcHBlbmRDaGlsZChlKX10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuYXBwZW5kQ2hpbGQodCl9X2ZvcmNlUmVuZGVyRGF0YVJvd3MoKXt0aGlzLl9kYXRhRGlmZmVyLmRpZmYoW10pLHRoaXMuX3Jvd091dGxldC52aWV3Q29udGFpbmVyLmNsZWFyKCksdGhpcy5yZW5kZXJSb3dzKCl9X2NoZWNrU3RpY2t5U3RhdGVzKCl7Y29uc3QgdD0odCxlKT0+dHx8ZS5oYXNTdGlja3lDaGFuZ2VkKCk7dGhpcy5faGVhZGVyUm93RGVmcy5yZWR1Y2UodCwhMSkmJnRoaXMudXBkYXRlU3RpY2t5SGVhZGVyUm93U3R5bGVzKCksdGhpcy5fZm9vdGVyUm93RGVmcy5yZWR1Y2UodCwhMSkmJnRoaXMudXBkYXRlU3RpY2t5Rm9vdGVyUm93U3R5bGVzKCksQXJyYXkuZnJvbSh0aGlzLl9jb2x1bW5EZWZzQnlOYW1lLnZhbHVlcygpKS5yZWR1Y2UodCwhMSkmJih0aGlzLl9zdGlja3lDb2x1bW5TdHlsZXNOZWVkUmVzZXQ9ITAsdGhpcy51cGRhdGVTdGlja3lDb2x1bW5TdHlsZXMoKSl9X3NldHVwU3RpY2t5U3R5bGVyKCl7dGhpcy5fc3RpY2t5U3R5bGVyPW5ldyBZMSh0aGlzLl9pc05hdGl2ZUh0bWxUYWJsZSx0aGlzLnN0aWNreUNzc0NsYXNzLHRoaXMuX2Rpcj90aGlzLl9kaXIudmFsdWU6Imx0ciIsdGhpcy5fY29hbGVzY2VkU3R5bGVTY2hlZHVsZXIsdGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyLHRoaXMubmVlZHNQb3NpdGlvblN0aWNreU9uRWxlbWVudCx0aGlzLl9zdGlja3lQb3NpdGlvbmluZ0xpc3RlbmVyKSwodGhpcy5fZGlyP3RoaXMuX2Rpci5jaGFuZ2U6enQoKSkucGlwZShqZSh0aGlzLl9vbkRlc3Ryb3kpKS5zdWJzY3JpYmUoKHQ9Pnt0aGlzLl9zdGlja3lTdHlsZXIuZGlyZWN0aW9uPXQsdGhpcy51cGRhdGVTdGlja3lDb2x1bW5TdHlsZXMoKX0pKX1fZ2V0T3duRGVmcyh0KXtyZXR1cm4gdC5maWx0ZXIoKHQ9PiF0Ll90YWJsZXx8dC5fdGFibGU9PT10aGlzKSl9X3VwZGF0ZU5vRGF0YVJvdygpe2NvbnN0IHQ9dGhpcy5fY3VzdG9tTm9EYXRhUm93fHx0aGlzLl9ub0RhdGFSb3c7aWYodCl7Y29uc3QgZT0wPT09dGhpcy5fcm93T3V0bGV0LnZpZXdDb250YWluZXIubGVuZ3RoO2lmKGUhPT10aGlzLl9pc1Nob3dpbmdOb0RhdGFSb3cpe2NvbnN0IG49dGhpcy5fbm9EYXRhUm93T3V0bGV0LnZpZXdDb250YWluZXI7ZT9uLmNyZWF0ZUVtYmVkZGVkVmlldyh0LnRlbXBsYXRlUmVmKTpuLmNsZWFyKCksdGhpcy5faXNTaG93aW5nTm9EYXRhUm93PWV9fX19ZnVuY3Rpb24gbjModCxlKXtyZXR1cm4gdC5jb25jYXQoQXJyYXkuZnJvbShlKSl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2UzLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxlMykoZ2YoaGIpLGdmKE9iKSxnZihLaCksR2EoInJvbGUiKSxnZih2Riw4KSxnZihzTSksZ2YoY0gpLGdmKFdMKSxnZihFMSksZ2YoUUwpLGdmKFoxLDEyKSl9LGUzLsm1Y21wPXNvKHt0eXBlOmUzLHNlbGVjdG9yczpbWyJjZGstdGFibGUiXSxbInRhYmxlIiwiY2RrLXRhYmxlIiwiIl1dLGNvbnRlbnRRdWVyaWVzOmZ1bmN0aW9uIHQoZSxuLG8pe2lmKDEmZSYmKGp5KG8sVzEsNSksankobyxQMSw1KSxqeShvLEwxLDUpLGp5KG8sSTEsNSksankobyxGMSw1KSksMiZlKXtsZXQgdDtCeSh0PVV5KCkpJiYobi5fbm9EYXRhUm93PXQuZmlyc3QpLEJ5KHQ9VXkoKSkmJihuLl9jb250ZW50Q29sdW1uRGVmcz10KSxCeSh0PVV5KCkpJiYobi5fY29udGVudFJvd0RlZnM9dCksQnkodD1VeSgpKSYmKG4uX2NvbnRlbnRIZWFkZXJSb3dEZWZzPXQpLEJ5KHQ9VXkoKSkmJihuLl9jb250ZW50Rm9vdGVyUm93RGVmcz10KX19LHZpZXdRdWVyeTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiYoVnkoSzEsNyksVnkoSjEsNyksVnkoUTEsNyksVnkoJDEsNykpLDImZSl7bGV0IHQ7QnkodD1VeSgpKSYmKG4uX3Jvd091dGxldD10LmZpcnN0KSxCeSh0PVV5KCkpJiYobi5faGVhZGVyUm93T3V0bGV0PXQuZmlyc3QpLEJ5KHQ9VXkoKSkmJihuLl9mb290ZXJSb3dPdXRsZXQ9dC5maXJzdCksQnkodD1VeSgpKSYmKG4uX25vRGF0YVJvd091dGxldD10LmZpcnN0KX19LGhvc3RBdHRyczpbMSwiY2RrLXRhYmxlIl0saG9zdFZhcnM6Mixob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezImZSYmY3UoImNkay10YWJsZS1maXhlZC1sYXlvdXQiLG4uZml4ZWRMYXlvdXQpfSxpbnB1dHM6e3RyYWNrQnk6InRyYWNrQnkiLGRhdGFTb3VyY2U6ImRhdGFTb3VyY2UiLG11bHRpVGVtcGxhdGVEYXRhUm93czoibXVsdGlUZW1wbGF0ZURhdGFSb3dzIixmaXhlZExheW91dDoiZml4ZWRMYXlvdXQifSxvdXRwdXRzOntjb250ZW50Q2hhbmdlZDoiY29udGVudENoYW5nZWQifSxleHBvcnRBczpbImNka1RhYmxlIl0sZmVhdHVyZXM6W2poKFt7cHJvdmlkZTpfMSx1c2VFeGlzdGluZzplM30se3Byb3ZpZGU6V0wsdXNlQ2xhc3M6Qkx9LHtwcm92aWRlOkUxLHVzZUNsYXNzOkExfSx7cHJvdmlkZTpaMSx1c2VWYWx1ZTpudWxsfV0pXSxuZ0NvbnRlbnRTZWxlY3RvcnM6WyJjYXB0aW9uIiwiY29sZ3JvdXAsIGNvbCJdLGRlY2xzOjYsdmFyczowLGNvbnN0czpbWyJoZWFkZXJSb3dPdXRsZXQiLCIiXSxbInJvd091dGxldCIsIiJdLFsibm9EYXRhUm93T3V0bGV0IiwiIl0sWyJmb290ZXJSb3dPdXRsZXQiLCIiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKEhmKGcxKSxGZigwKSxGZigxLDEpLFBmKDIsMCksUGYoMywxKSxQZig0LDIpLFBmKDUsMykpfSxkaXJlY3RpdmVzOltKMSxLMSwkMSxRMV0sc3R5bGVzOlsiLmNkay10YWJsZS1maXhlZC1sYXlvdXR7dGFibGUtbGF5b3V0OmZpeGVkfVxuIl0sZW5jYXBzdWxhdGlvbjoyfSksZTMuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpoYn0se3R5cGU6T2J9LHt0eXBlOktofSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6JGEsYXJnczpbInJvbGUiXX1dfSx7dHlwZTp2RixkZWNvcmF0b3JzOlt7dHlwZTpCcn1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19LHt0eXBlOmNIfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbV0xdfV19LHt0eXBlOkExLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W0UxXX1dfSx7dHlwZTpRTH0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpqcn0se3R5cGU6THIsYXJnczpbWjFdfV19XSxlMy5wcm9wRGVjb3JhdG9ycz17dHJhY2tCeTpbe3R5cGU6Ul99XSxkYXRhU291cmNlOlt7dHlwZTpSX31dLG11bHRpVGVtcGxhdGVEYXRhUm93czpbe3R5cGU6Ul99XSxmaXhlZExheW91dDpbe3R5cGU6Ul99XSxjb250ZW50Q2hhbmdlZDpbe3R5cGU6RV99XSxfcm93T3V0bGV0Olt7dHlwZTphcixhcmdzOltLMSx7c3RhdGljOiEwfV19XSxfaGVhZGVyUm93T3V0bGV0Olt7dHlwZTphcixhcmdzOltKMSx7c3RhdGljOiEwfV19XSxfZm9vdGVyUm93T3V0bGV0Olt7dHlwZTphcixhcmdzOltRMSx7c3RhdGljOiEwfV19XSxfbm9EYXRhUm93T3V0bGV0Olt7dHlwZTphcixhcmdzOlskMSx7c3RhdGljOiEwfV19XSxfY29udGVudENvbHVtbkRlZnM6W3t0eXBlOm9yLGFyZ3M6W1AxLHtkZXNjZW5kYW50czohMH1dfV0sX2NvbnRlbnRSb3dEZWZzOlt7dHlwZTpvcixhcmdzOltMMSx7ZGVzY2VuZGFudHM6ITB9XX1dLF9jb250ZW50SGVhZGVyUm93RGVmczpbe3R5cGU6b3IsYXJnczpbSTEse2Rlc2NlbmRhbnRzOiEwfV19XSxfY29udGVudEZvb3RlclJvd0RlZnM6W3t0eXBlOm9yLGFyZ3M6W0YxLHtkZXNjZW5kYW50czohMH1dfV0sX25vRGF0YVJvdzpbe3R5cGU6aXIsYXJnczpbVzFdfV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoZTMsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoiY2RrLXRhYmxlLCB0YWJsZVtjZGstdGFibGVdIixleHBvcnRBczoiY2RrVGFibGUiLHRlbXBsYXRlOnQzLGhvc3Q6e2NsYXNzOiJjZGstdGFibGUiLCJbY2xhc3MuY2RrLXRhYmxlLWZpeGVkLWxheW91dF0iOiJmaXhlZExheW91dCJ9LGVuY2Fwc3VsYXRpb246V24uTm9uZSxjaGFuZ2VEZXRlY3Rpb246am4uRGVmYXVsdCxwcm92aWRlcnM6W3twcm92aWRlOl8xLHVzZUV4aXN0aW5nOmUzfSx7cHJvdmlkZTpXTCx1c2VDbGFzczpCTH0se3Byb3ZpZGU6RTEsdXNlQ2xhc3M6QTF9LHtwcm92aWRlOloxLHVzZVZhbHVlOm51bGx9XSxzdHlsZXM6WyIuY2RrLXRhYmxlLWZpeGVkLWxheW91dHt0YWJsZS1sYXlvdXQ6Zml4ZWR9XG4iXX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmhifSx7dHlwZTpPYn0se3R5cGU6S2h9LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTokYSxhcmdzOlsicm9sZSJdfV19LHt0eXBlOnZGLGRlY29yYXRvcnM6W3t0eXBlOkJyfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX0se3R5cGU6Y0h9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltXTF19XX0se3R5cGU6QTEsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbRTFdfV19LHt0eXBlOlFMfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOmpyfSx7dHlwZTpMcixhcmdzOltaMV19XX1dfSkse2NvbnRlbnRDaGFuZ2VkOlt7dHlwZTpFX31dLHRyYWNrQnk6W3t0eXBlOlJffV0sZGF0YVNvdXJjZTpbe3R5cGU6Ul99XSxtdWx0aVRlbXBsYXRlRGF0YVJvd3M6W3t0eXBlOlJffV0sZml4ZWRMYXlvdXQ6W3t0eXBlOlJffV0sX3Jvd091dGxldDpbe3R5cGU6YXIsYXJnczpbSzEse3N0YXRpYzohMH1dfV0sX2hlYWRlclJvd091dGxldDpbe3R5cGU6YXIsYXJnczpbSjEse3N0YXRpYzohMH1dfV0sX2Zvb3RlclJvd091dGxldDpbe3R5cGU6YXIsYXJnczpbUTEse3N0YXRpYzohMH1dfV0sX25vRGF0YVJvd091dGxldDpbe3R5cGU6YXIsYXJnczpbJDEse3N0YXRpYzohMH1dfV0sX2NvbnRlbnRDb2x1bW5EZWZzOlt7dHlwZTpvcixhcmdzOltQMSx7ZGVzY2VuZGFudHM6ITB9XX1dLF9jb250ZW50Um93RGVmczpbe3R5cGU6b3IsYXJnczpbTDEse2Rlc2NlbmRhbnRzOiEwfV19XSxfY29udGVudEhlYWRlclJvd0RlZnM6W3t0eXBlOm9yLGFyZ3M6W0kxLHtkZXNjZW5kYW50czohMH1dfV0sX2NvbnRlbnRGb290ZXJSb3dEZWZzOlt7dHlwZTpvcixhcmdzOltGMSx7ZGVzY2VuZGFudHM6ITB9XX1dLF9ub0RhdGFSb3c6W3t0eXBlOmlyLGFyZ3M6W1cxXX1dfSk7Y2xhc3MgbzN7Y29uc3RydWN0b3IodCxlKXt0aGlzLl90YWJsZT10LHRoaXMuX29wdGlvbnM9ZSx0aGlzLmp1c3RpZnk9InN0YXJ0Iix0aGlzLl9vcHRpb25zPWV8fHt9fWdldCBuYW1lKCl7cmV0dXJuIHRoaXMuX25hbWV9c2V0IG5hbWUodCl7dGhpcy5fbmFtZT10LHRoaXMuX3N5bmNDb2x1bW5EZWZOYW1lKCl9bmdPbkluaXQoKXtpZih0aGlzLl9zeW5jQ29sdW1uRGVmTmFtZSgpLHZvaWQgMD09PXRoaXMuaGVhZGVyVGV4dCYmKHRoaXMuaGVhZGVyVGV4dD10aGlzLl9jcmVhdGVEZWZhdWx0SGVhZGVyVGV4dCgpKSx0aGlzLmRhdGFBY2Nlc3Nvcnx8KHRoaXMuZGF0YUFjY2Vzc29yPXRoaXMuX29wdGlvbnMuZGVmYXVsdERhdGFBY2Nlc3Nvcnx8KCh0LGUpPT50W2VdKSksdGhpcy5fdGFibGUpdGhpcy5jb2x1bW5EZWYuY2VsbD10aGlzLmNlbGwsdGhpcy5jb2x1bW5EZWYuaGVhZGVyQ2VsbD10aGlzLmhlYWRlckNlbGwsdGhpcy5fdGFibGUuYWRkQ29sdW1uRGVmKHRoaXMuY29sdW1uRGVmKTtlbHNlIGlmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpdGhyb3coZnVuY3Rpb24gdCgpe3JldHVybiBFcnJvcigiVGV4dCBjb2x1bW4gY291bGQgbm90IGZpbmQgYSBwYXJlbnQgdGFibGUgZm9yIHJlZ2lzdHJhdGlvbi4iKX0pKCl9bmdPbkRlc3Ryb3koKXt0aGlzLl90YWJsZSYmdGhpcy5fdGFibGUucmVtb3ZlQ29sdW1uRGVmKHRoaXMuY29sdW1uRGVmKX1fY3JlYXRlRGVmYXVsdEhlYWRlclRleHQoKXtjb25zdCB0PXRoaXMubmFtZTtpZighdCYmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpKXRocm93KGZ1bmN0aW9uIGUoKXtyZXR1cm4gRXJyb3IoIlRhYmxlIHRleHQgY29sdW1uIG11c3QgaGF2ZSBhIG5hbWUuIil9KSgpO3JldHVybiB0aGlzLl9vcHRpb25zJiZ0aGlzLl9vcHRpb25zLmRlZmF1bHRIZWFkZXJUZXh0VHJhbnNmb3JtP3RoaXMuX29wdGlvbnMuZGVmYXVsdEhlYWRlclRleHRUcmFuc2Zvcm0odCk6dFswXS50b1VwcGVyQ2FzZSgpK3Quc2xpY2UoMSl9X3N5bmNDb2x1bW5EZWZOYW1lKCl7dGhpcy5jb2x1bW5EZWYmJih0aGlzLmNvbHVtbkRlZi5uYW1lPXRoaXMubmFtZSl9fW8zLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxvMykoZ2YoZTMsOCksZ2YoQzEsOCkpfSxvMy7JtWNtcD1zbyh7dHlwZTpvMyxzZWxlY3RvcnM6W1siY2RrLXRleHQtY29sdW1uIl1dLHZpZXdRdWVyeTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiYoVnkoUDEsNyksVnkoTTEsNyksVnkodjEsNykpLDImZSl7bGV0IHQ7QnkodD1VeSgpKSYmKG4uY29sdW1uRGVmPXQuZmlyc3QpLEJ5KHQ9VXkoKSkmJihuLmNlbGw9dC5maXJzdCksQnkodD1VeSgpKSYmKG4uaGVhZGVyQ2VsbD10LmZpcnN0KX19LGlucHV0czp7anVzdGlmeToianVzdGlmeSIsbmFtZToibmFtZSIsaGVhZGVyVGV4dDoiaGVhZGVyVGV4dCIsZGF0YUFjY2Vzc29yOiJkYXRhQWNjZXNzb3IifSxkZWNsczozLHZhcnM6MCxjb25zdHM6W1siY2RrQ29sdW1uRGVmIiwiIl0sWyJjZGstaGVhZGVyLWNlbGwiLCIiLDMsInRleHQtYWxpZ24iLDQsImNka0hlYWRlckNlbGxEZWYiXSxbImNkay1jZWxsIiwiIiwzLCJ0ZXh0LWFsaWduIiw0LCJjZGtDZWxsRGVmIl0sWyJjZGstaGVhZGVyLWNlbGwiLCIiXSxbImNkay1jZWxsIiwiIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJih4ZigwLDApLEhtKDEsaDEsMiwzLCJ0aCIsMSksSG0oMixiMSwyLDMsInRkIiwyKSxPZigpKX0sZGlyZWN0aXZlczpbUDEsdjEsTTEsazEsRDFdLGVuY2Fwc3VsYXRpb246Mn0pLG8zLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6ZTMsZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltDMV19XX1dLG8zLnByb3BEZWNvcmF0b3JzPXtuYW1lOlt7dHlwZTpSX31dLGhlYWRlclRleHQ6W3t0eXBlOlJffV0sZGF0YUFjY2Vzc29yOlt7dHlwZTpSX31dLGp1c3RpZnk6W3t0eXBlOlJffV0sY29sdW1uRGVmOlt7dHlwZTphcixhcmdzOltQMSx7c3RhdGljOiEwfV19XSxjZWxsOlt7dHlwZTphcixhcmdzOltNMSx7c3RhdGljOiEwfV19XSxoZWFkZXJDZWxsOlt7dHlwZTphcixhcmdzOlt2MSx7c3RhdGljOiEwfV19XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihvMyxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJjZGstdGV4dC1jb2x1bW4iLHRlbXBsYXRlOidcbiAgICA8bmctY29udGFpbmVyIGNka0NvbHVtbkRlZj5cbiAgICAgIDx0aCBjZGstaGVhZGVyLWNlbGwgKmNka0hlYWRlckNlbGxEZWYgW3N0eWxlLnRleHQtYWxpZ25dPSJqdXN0aWZ5Ij5cbiAgICAgICAge3toZWFkZXJUZXh0fX1cbiAgICAgIDwvdGg+XG4gICAgICA8dGQgY2RrLWNlbGwgKmNka0NlbGxEZWY9ImxldCBkYXRhIiBbc3R5bGUudGV4dC1hbGlnbl09Imp1c3RpZnkiPlxuICAgICAgICB7e2RhdGFBY2Nlc3NvcihkYXRhLCBuYW1lKX19XG4gICAgICA8L3RkPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAnLGVuY2Fwc3VsYXRpb246V24uTm9uZSxjaGFuZ2VEZXRlY3Rpb246am4uRGVmYXVsdH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmUzLGRlY29yYXRvcnM6W3t0eXBlOkJyfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbQzFdfV19XX0pLHtqdXN0aWZ5Olt7dHlwZTpSX31dLG5hbWU6W3t0eXBlOlJffV0saGVhZGVyVGV4dDpbe3R5cGU6Ul99XSxkYXRhQWNjZXNzb3I6W3t0eXBlOlJffV0sY29sdW1uRGVmOlt7dHlwZTphcixhcmdzOltQMSx7c3RhdGljOiEwfV19XSxjZWxsOlt7dHlwZTphcixhcmdzOltNMSx7c3RhdGljOiEwfV19XSxoZWFkZXJDZWxsOlt7dHlwZTphcixhcmdzOlt2MSx7c3RhdGljOiEwfV19XX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgaTM9W2UzLEwxLE0xLEIxLHYxLHgxLFAxLEQxLFUxLGsxLFMxLFYxLEkxLGoxLEYxLEsxLEoxLFExLG8zLFcxLFgxLCQxXTtjbGFzcyBhM3t9YTMuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGEzKX0sYTMuybVtb2Q9Zm8oe3R5cGU6YTN9KSxhMy7JtWluaj1Ebih7aW1wb3J0czpbW2lCXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGEzLFt7dHlwZTpMXyxhcmdzOlt7ZXhwb3J0czppMyxkZWNsYXJhdGlvbnM6aTMsaW1wb3J0czpbaUJdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8oYTMse2RlY2xhcmF0aW9uczpmdW5jdGlvbigpe3JldHVybltlMyxMMSxNMSxCMSx2MSx4MSxQMSxEMSxVMSxrMSxTMSxWMSxJMSxqMSxGMSxLMSxKMSxRMSxvMyxXMSxYMSwkMV19LGltcG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5baUJdfSxleHBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW2UzLEwxLE0xLEIxLHYxLHgxLFAxLEQxLFUxLGsxLFMxLFYxLEkxLGoxLEYxLEsxLEoxLFExLG8zLFcxLFgxLCQxXX19KTtjb25zdCByMz1bW1siY2FwdGlvbiJdXSxbWyJjb2xncm91cCJdLFsiY29sIl1dXTtmdW5jdGlvbiBzMyh0LGUpe2lmKDEmdCYmKENmKDAsInRoIiwzKSxQdSgxKSxNZigpKSwyJnQpe2NvbnN0IHQ9emYoKTtsdSgidGV4dC1hbGlnbiIsdC5qdXN0aWZ5KSxEYygxKSxrdSgiICIsdC5oZWFkZXJUZXh0LCIgIil9fWZ1bmN0aW9uIGwzKHQsZSl7aWYoMSZ0JiYoQ2YoMCwidGQiLDQpLFB1KDEpLE1mKCkpLDImdCl7Y29uc3QgdD1lLiRpbXBsaWNpdCxuPXpmKCk7bHUoInRleHQtYWxpZ24iLG4uanVzdGlmeSksRGMoMSksa3UoIiAiLG4uZGF0YUFjY2Vzc29yKHQsbi5uYW1lKSwiICIpfX1jbGFzcyBjM3t9YzMuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGMzKX0sYzMuybVkaXI9aG8oe3R5cGU6YzMsc2VsZWN0b3JzOltbIm1hdC10YWJsZSIsInJlY3ljbGVSb3dzIiwiIl0sWyJ0YWJsZSIsIm1hdC10YWJsZSIsIiIsInJlY3ljbGVSb3dzIiwiIl1dLGZlYXR1cmVzOltqaChbe3Byb3ZpZGU6V0wsdXNlQ2xhc3M6Vkx9XSldfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihjMyxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJtYXQtdGFibGVbcmVjeWNsZVJvd3NdLCB0YWJsZVttYXQtdGFibGVdW3JlY3ljbGVSb3dzXSIscHJvdmlkZXJzOlt7cHJvdmlkZTpXTCx1c2VDbGFzczpWTH1dfV19XSxudWxsLG51bGwpO2NsYXNzIGQzIGV4dGVuZHMgZTN7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuc3RpY2t5Q3NzQ2xhc3M9Im1hdC10YWJsZS1zdGlja3kiLHRoaXMubmVlZHNQb3NpdGlvblN0aWNreU9uRWxlbWVudD0hMX19ZDMuybVmYWM9KGZ1bmN0aW9uKCl7bGV0IHQ7cmV0dXJuIGZ1bmN0aW9uIGUobil7cmV0dXJuKHR8fCh0PVVhKGQzKSkpKG58fGQzKX19KSgpLGQzLsm1Y21wPXNvKHt0eXBlOmQzLHNlbGVjdG9yczpbWyJtYXQtdGFibGUiXSxbInRhYmxlIiwibWF0LXRhYmxlIiwiIl1dLGhvc3RBdHRyczpbMSwibWF0LXRhYmxlIl0saG9zdFZhcnM6Mixob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezImZSYmY3UoIm1hdC10YWJsZS1maXhlZC1sYXlvdXQiLG4uZml4ZWRMYXlvdXQpfSxleHBvcnRBczpbIm1hdFRhYmxlIl0sZmVhdHVyZXM6W2poKFt7cHJvdmlkZTpXTCx1c2VDbGFzczpCTH0se3Byb3ZpZGU6ZTMsdXNlRXhpc3Rpbmc6ZDN9LHtwcm92aWRlOl8xLHVzZUV4aXN0aW5nOmQzfSx7cHJvdmlkZTpFMSx1c2VDbGFzczpBMX0se3Byb3ZpZGU6WjEsdXNlVmFsdWU6bnVsbH1dKSxRcF0sbmdDb250ZW50U2VsZWN0b3JzOlsiY2FwdGlvbiIsImNvbGdyb3VwLCBjb2wiXSxkZWNsczo2LHZhcnM6MCxjb25zdHM6W1siaGVhZGVyUm93T3V0bGV0IiwiIl0sWyJyb3dPdXRsZXQiLCIiXSxbIm5vRGF0YVJvd091dGxldCIsIiJdLFsiZm9vdGVyUm93T3V0bGV0IiwiIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihIZihyMyksRmYoMCksRmYoMSwxKSxQZigyLDApLFBmKDMsMSksUGYoNCwyKSxQZig1LDMpKX0sZGlyZWN0aXZlczpbSjEsSzEsJDEsUTFdLHN0eWxlczpbJ21hdC10YWJsZXtkaXNwbGF5OmJsb2NrfW1hdC1oZWFkZXItcm93e21pbi1oZWlnaHQ6NTZweH1tYXQtcm93LG1hdC1mb290ZXItcm93e21pbi1oZWlnaHQ6NDhweH1tYXQtcm93LG1hdC1oZWFkZXItcm93LG1hdC1mb290ZXItcm93e2Rpc3BsYXk6ZmxleDtib3JkZXItd2lkdGg6MDtib3JkZXItYm90dG9tLXdpZHRoOjFweDtib3JkZXItc3R5bGU6c29saWQ7YWxpZ24taXRlbXM6Y2VudGVyO2JveC1zaXppbmc6Ym9yZGVyLWJveH1tYXQtcm93OjphZnRlcixtYXQtaGVhZGVyLXJvdzo6YWZ0ZXIsbWF0LWZvb3Rlci1yb3c6OmFmdGVye2Rpc3BsYXk6aW5saW5lLWJsb2NrO21pbi1oZWlnaHQ6aW5oZXJpdDtjb250ZW50OiIifW1hdC1jZWxsOmZpcnN0LW9mLXR5cGUsbWF0LWhlYWRlci1jZWxsOmZpcnN0LW9mLXR5cGUsbWF0LWZvb3Rlci1jZWxsOmZpcnN0LW9mLXR5cGV7cGFkZGluZy1sZWZ0OjI0cHh9W2Rpcj1ydGxdIG1hdC1jZWxsOmZpcnN0LW9mLXR5cGU6bm90KDpvbmx5LW9mLXR5cGUpLFtkaXI9cnRsXSBtYXQtaGVhZGVyLWNlbGw6Zmlyc3Qtb2YtdHlwZTpub3QoOm9ubHktb2YtdHlwZSksW2Rpcj1ydGxdIG1hdC1mb290ZXItY2VsbDpmaXJzdC1vZi10eXBlOm5vdCg6b25seS1vZi10eXBlKXtwYWRkaW5nLWxlZnQ6MDtwYWRkaW5nLXJpZ2h0OjI0cHh9bWF0LWNlbGw6bGFzdC1vZi10eXBlLG1hdC1oZWFkZXItY2VsbDpsYXN0LW9mLXR5cGUsbWF0LWZvb3Rlci1jZWxsOmxhc3Qtb2YtdHlwZXtwYWRkaW5nLXJpZ2h0OjI0cHh9W2Rpcj1ydGxdIG1hdC1jZWxsOmxhc3Qtb2YtdHlwZTpub3QoOm9ubHktb2YtdHlwZSksW2Rpcj1ydGxdIG1hdC1oZWFkZXItY2VsbDpsYXN0LW9mLXR5cGU6bm90KDpvbmx5LW9mLXR5cGUpLFtkaXI9cnRsXSBtYXQtZm9vdGVyLWNlbGw6bGFzdC1vZi10eXBlOm5vdCg6b25seS1vZi10eXBlKXtwYWRkaW5nLXJpZ2h0OjA7cGFkZGluZy1sZWZ0OjI0cHh9bWF0LWNlbGwsbWF0LWhlYWRlci1jZWxsLG1hdC1mb290ZXItY2VsbHtmbGV4OjE7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtvdmVyZmxvdzpoaWRkZW47d29yZC13cmFwOmJyZWFrLXdvcmQ7bWluLWhlaWdodDppbmhlcml0fXRhYmxlLm1hdC10YWJsZXtib3JkZXItc3BhY2luZzowfXRyLm1hdC1oZWFkZXItcm93e2hlaWdodDo1NnB4fXRyLm1hdC1yb3csdHIubWF0LWZvb3Rlci1yb3d7aGVpZ2h0OjQ4cHh9dGgubWF0LWhlYWRlci1jZWxse3RleHQtYWxpZ246bGVmdH1bZGlyPXJ0bF0gdGgubWF0LWhlYWRlci1jZWxse3RleHQtYWxpZ246cmlnaHR9dGgubWF0LWhlYWRlci1jZWxsLHRkLm1hdC1jZWxsLHRkLm1hdC1mb290ZXItY2VsbHtwYWRkaW5nOjA7Ym9yZGVyLWJvdHRvbS13aWR0aDoxcHg7Ym9yZGVyLWJvdHRvbS1zdHlsZTpzb2xpZH10aC5tYXQtaGVhZGVyLWNlbGw6Zmlyc3Qtb2YtdHlwZSx0ZC5tYXQtY2VsbDpmaXJzdC1vZi10eXBlLHRkLm1hdC1mb290ZXItY2VsbDpmaXJzdC1vZi10eXBle3BhZGRpbmctbGVmdDoyNHB4fVtkaXI9cnRsXSB0aC5tYXQtaGVhZGVyLWNlbGw6Zmlyc3Qtb2YtdHlwZTpub3QoOm9ubHktb2YtdHlwZSksW2Rpcj1ydGxdIHRkLm1hdC1jZWxsOmZpcnN0LW9mLXR5cGU6bm90KDpvbmx5LW9mLXR5cGUpLFtkaXI9cnRsXSB0ZC5tYXQtZm9vdGVyLWNlbGw6Zmlyc3Qtb2YtdHlwZTpub3QoOm9ubHktb2YtdHlwZSl7cGFkZGluZy1sZWZ0OjA7cGFkZGluZy1yaWdodDoyNHB4fXRoLm1hdC1oZWFkZXItY2VsbDpsYXN0LW9mLXR5cGUsdGQubWF0LWNlbGw6bGFzdC1vZi10eXBlLHRkLm1hdC1mb290ZXItY2VsbDpsYXN0LW9mLXR5cGV7cGFkZGluZy1yaWdodDoyNHB4fVtkaXI9cnRsXSB0aC5tYXQtaGVhZGVyLWNlbGw6bGFzdC1vZi10eXBlOm5vdCg6b25seS1vZi10eXBlKSxbZGlyPXJ0bF0gdGQubWF0LWNlbGw6bGFzdC1vZi10eXBlOm5vdCg6b25seS1vZi10eXBlKSxbZGlyPXJ0bF0gdGQubWF0LWZvb3Rlci1jZWxsOmxhc3Qtb2YtdHlwZTpub3QoOm9ubHktb2YtdHlwZSl7cGFkZGluZy1yaWdodDowO3BhZGRpbmctbGVmdDoyNHB4fS5tYXQtdGFibGUtc3RpY2t5e3Bvc2l0aW9uOi13ZWJraXQtc3RpY2t5ICFpbXBvcnRhbnQ7cG9zaXRpb246c3RpY2t5ICFpbXBvcnRhbnR9Lm1hdC10YWJsZS1maXhlZC1sYXlvdXR7dGFibGUtbGF5b3V0OmZpeGVkfVxuJ10sZW5jYXBzdWxhdGlvbjoyfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihkMyxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJtYXQtdGFibGUsIHRhYmxlW21hdC10YWJsZV0iLGV4cG9ydEFzOiJtYXRUYWJsZSIsdGVtcGxhdGU6dDMsaG9zdDp7Y2xhc3M6Im1hdC10YWJsZSIsIltjbGFzcy5tYXQtdGFibGUtZml4ZWQtbGF5b3V0XSI6ImZpeGVkTGF5b3V0In0scHJvdmlkZXJzOlt7cHJvdmlkZTpXTCx1c2VDbGFzczpCTH0se3Byb3ZpZGU6ZTMsdXNlRXhpc3Rpbmc6ZDN9LHtwcm92aWRlOl8xLHVzZUV4aXN0aW5nOmQzfSx7cHJvdmlkZTpFMSx1c2VDbGFzczpBMX0se3Byb3ZpZGU6WjEsdXNlVmFsdWU6bnVsbH1dLGVuY2Fwc3VsYXRpb246V24uTm9uZSxjaGFuZ2VEZXRlY3Rpb246am4uRGVmYXVsdCxzdHlsZXM6WydtYXQtdGFibGV7ZGlzcGxheTpibG9ja31tYXQtaGVhZGVyLXJvd3ttaW4taGVpZ2h0OjU2cHh9bWF0LXJvdyxtYXQtZm9vdGVyLXJvd3ttaW4taGVpZ2h0OjQ4cHh9bWF0LXJvdyxtYXQtaGVhZGVyLXJvdyxtYXQtZm9vdGVyLXJvd3tkaXNwbGF5OmZsZXg7Ym9yZGVyLXdpZHRoOjA7Ym9yZGVyLWJvdHRvbS13aWR0aDoxcHg7Ym9yZGVyLXN0eWxlOnNvbGlkO2FsaWduLWl0ZW1zOmNlbnRlcjtib3gtc2l6aW5nOmJvcmRlci1ib3h9bWF0LXJvdzo6YWZ0ZXIsbWF0LWhlYWRlci1yb3c6OmFmdGVyLG1hdC1mb290ZXItcm93OjphZnRlcntkaXNwbGF5OmlubGluZS1ibG9jazttaW4taGVpZ2h0OmluaGVyaXQ7Y29udGVudDoiIn1tYXQtY2VsbDpmaXJzdC1vZi10eXBlLG1hdC1oZWFkZXItY2VsbDpmaXJzdC1vZi10eXBlLG1hdC1mb290ZXItY2VsbDpmaXJzdC1vZi10eXBle3BhZGRpbmctbGVmdDoyNHB4fVtkaXI9cnRsXSBtYXQtY2VsbDpmaXJzdC1vZi10eXBlOm5vdCg6b25seS1vZi10eXBlKSxbZGlyPXJ0bF0gbWF0LWhlYWRlci1jZWxsOmZpcnN0LW9mLXR5cGU6bm90KDpvbmx5LW9mLXR5cGUpLFtkaXI9cnRsXSBtYXQtZm9vdGVyLWNlbGw6Zmlyc3Qtb2YtdHlwZTpub3QoOm9ubHktb2YtdHlwZSl7cGFkZGluZy1sZWZ0OjA7cGFkZGluZy1yaWdodDoyNHB4fW1hdC1jZWxsOmxhc3Qtb2YtdHlwZSxtYXQtaGVhZGVyLWNlbGw6bGFzdC1vZi10eXBlLG1hdC1mb290ZXItY2VsbDpsYXN0LW9mLXR5cGV7cGFkZGluZy1yaWdodDoyNHB4fVtkaXI9cnRsXSBtYXQtY2VsbDpsYXN0LW9mLXR5cGU6bm90KDpvbmx5LW9mLXR5cGUpLFtkaXI9cnRsXSBtYXQtaGVhZGVyLWNlbGw6bGFzdC1vZi10eXBlOm5vdCg6b25seS1vZi10eXBlKSxbZGlyPXJ0bF0gbWF0LWZvb3Rlci1jZWxsOmxhc3Qtb2YtdHlwZTpub3QoOm9ubHktb2YtdHlwZSl7cGFkZGluZy1yaWdodDowO3BhZGRpbmctbGVmdDoyNHB4fW1hdC1jZWxsLG1hdC1oZWFkZXItY2VsbCxtYXQtZm9vdGVyLWNlbGx7ZmxleDoxO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7b3ZlcmZsb3c6aGlkZGVuO3dvcmQtd3JhcDpicmVhay13b3JkO21pbi1oZWlnaHQ6aW5oZXJpdH10YWJsZS5tYXQtdGFibGV7Ym9yZGVyLXNwYWNpbmc6MH10ci5tYXQtaGVhZGVyLXJvd3toZWlnaHQ6NTZweH10ci5tYXQtcm93LHRyLm1hdC1mb290ZXItcm93e2hlaWdodDo0OHB4fXRoLm1hdC1oZWFkZXItY2VsbHt0ZXh0LWFsaWduOmxlZnR9W2Rpcj1ydGxdIHRoLm1hdC1oZWFkZXItY2VsbHt0ZXh0LWFsaWduOnJpZ2h0fXRoLm1hdC1oZWFkZXItY2VsbCx0ZC5tYXQtY2VsbCx0ZC5tYXQtZm9vdGVyLWNlbGx7cGFkZGluZzowO2JvcmRlci1ib3R0b20td2lkdGg6MXB4O2JvcmRlci1ib3R0b20tc3R5bGU6c29saWR9dGgubWF0LWhlYWRlci1jZWxsOmZpcnN0LW9mLXR5cGUsdGQubWF0LWNlbGw6Zmlyc3Qtb2YtdHlwZSx0ZC5tYXQtZm9vdGVyLWNlbGw6Zmlyc3Qtb2YtdHlwZXtwYWRkaW5nLWxlZnQ6MjRweH1bZGlyPXJ0bF0gdGgubWF0LWhlYWRlci1jZWxsOmZpcnN0LW9mLXR5cGU6bm90KDpvbmx5LW9mLXR5cGUpLFtkaXI9cnRsXSB0ZC5tYXQtY2VsbDpmaXJzdC1vZi10eXBlOm5vdCg6b25seS1vZi10eXBlKSxbZGlyPXJ0bF0gdGQubWF0LWZvb3Rlci1jZWxsOmZpcnN0LW9mLXR5cGU6bm90KDpvbmx5LW9mLXR5cGUpe3BhZGRpbmctbGVmdDowO3BhZGRpbmctcmlnaHQ6MjRweH10aC5tYXQtaGVhZGVyLWNlbGw6bGFzdC1vZi10eXBlLHRkLm1hdC1jZWxsOmxhc3Qtb2YtdHlwZSx0ZC5tYXQtZm9vdGVyLWNlbGw6bGFzdC1vZi10eXBle3BhZGRpbmctcmlnaHQ6MjRweH1bZGlyPXJ0bF0gdGgubWF0LWhlYWRlci1jZWxsOmxhc3Qtb2YtdHlwZTpub3QoOm9ubHktb2YtdHlwZSksW2Rpcj1ydGxdIHRkLm1hdC1jZWxsOmxhc3Qtb2YtdHlwZTpub3QoOm9ubHktb2YtdHlwZSksW2Rpcj1ydGxdIHRkLm1hdC1mb290ZXItY2VsbDpsYXN0LW9mLXR5cGU6bm90KDpvbmx5LW9mLXR5cGUpe3BhZGRpbmctcmlnaHQ6MDtwYWRkaW5nLWxlZnQ6MjRweH0ubWF0LXRhYmxlLXN0aWNreXtwb3NpdGlvbjotd2Via2l0LXN0aWNreSAhaW1wb3J0YW50O3Bvc2l0aW9uOnN0aWNreSAhaW1wb3J0YW50fS5tYXQtdGFibGUtZml4ZWQtbGF5b3V0e3RhYmxlLWxheW91dDpmaXhlZH1cbiddfV19XSxudWxsLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgcDMgZXh0ZW5kcyBNMXt9cDMuybVmYWM9KGZ1bmN0aW9uKCl7bGV0IHQ7cmV0dXJuIGZ1bmN0aW9uIGUobil7cmV0dXJuKHR8fCh0PVVhKHAzKSkpKG58fHAzKX19KSgpLHAzLsm1ZGlyPWhvKHt0eXBlOnAzLHNlbGVjdG9yczpbWyIiLCJtYXRDZWxsRGVmIiwiIl1dLGZlYXR1cmVzOltqaChbe3Byb3ZpZGU6TTEsdXNlRXhpc3Rpbmc6cDN9XSksUXBdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihwMyxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJbbWF0Q2VsbERlZl0iLHByb3ZpZGVyczpbe3Byb3ZpZGU6TTEsdXNlRXhpc3Rpbmc6cDN9XX1dfV0sbnVsbCxudWxsKTtjbGFzcyBtMyBleHRlbmRzIHYxe31tMy7JtWZhYz0oZnVuY3Rpb24oKXtsZXQgdDtyZXR1cm4gZnVuY3Rpb24gZShuKXtyZXR1cm4odHx8KHQ9VWEobTMpKSkobnx8bTMpfX0pKCksbTMuybVkaXI9aG8oe3R5cGU6bTMsc2VsZWN0b3JzOltbIiIsIm1hdEhlYWRlckNlbGxEZWYiLCIiXV0sZmVhdHVyZXM6W2poKFt7cHJvdmlkZTp2MSx1c2VFeGlzdGluZzptM31dKSxRcF19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKG0zLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6IlttYXRIZWFkZXJDZWxsRGVmXSIscHJvdmlkZXJzOlt7cHJvdmlkZTp2MSx1c2VFeGlzdGluZzptM31dfV19XSxudWxsLG51bGwpO2NsYXNzIGYzIGV4dGVuZHMgeDF7fWYzLsm1ZmFjPShmdW5jdGlvbigpe2xldCB0O3JldHVybiBmdW5jdGlvbiBlKG4pe3JldHVybih0fHwodD1VYShmMykpKShufHxmMyl9fSkoKSxmMy7JtWRpcj1obyh7dHlwZTpmMyxzZWxlY3RvcnM6W1siIiwibWF0Rm9vdGVyQ2VsbERlZiIsIiJdXSxmZWF0dXJlczpbamgoW3twcm92aWRlOngxLHVzZUV4aXN0aW5nOmYzfV0pLFFwXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoZjMsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW21hdEZvb3RlckNlbGxEZWZdIixwcm92aWRlcnM6W3twcm92aWRlOngxLHVzZUV4aXN0aW5nOmYzfV19XX1dLG51bGwsbnVsbCk7Y2xhc3MgdTMgZXh0ZW5kcyBQMXtnZXQgbmFtZSgpe3JldHVybiB0aGlzLl9uYW1lfXNldCBuYW1lKHQpe3RoaXMuX3NldE5hbWVJbnB1dCh0KX1fdXBkYXRlQ29sdW1uQ3NzQ2xhc3NOYW1lKCl7c3VwZXIuX3VwZGF0ZUNvbHVtbkNzc0NsYXNzTmFtZSgpLHRoaXMuX2NvbHVtbkNzc0NsYXNzTmFtZS5wdXNoKGBtYXQtY29sdW1uLSR7dGhpcy5jc3NDbGFzc0ZyaWVuZGx5TmFtZX1gKX19dTMuybVmYWM9KGZ1bmN0aW9uKCl7bGV0IHQ7cmV0dXJuIGZ1bmN0aW9uIGUobil7cmV0dXJuKHR8fCh0PVVhKHUzKSkpKG58fHUzKX19KSgpLHUzLsm1ZGlyPWhvKHt0eXBlOnUzLHNlbGVjdG9yczpbWyIiLCJtYXRDb2x1bW5EZWYiLCIiXV0saW5wdXRzOntzdGlja3k6InN0aWNreSIsbmFtZTpbIm1hdENvbHVtbkRlZiIsIm5hbWUiXX0sZmVhdHVyZXM6W2poKFt7cHJvdmlkZTpQMSx1c2VFeGlzdGluZzp1M30se3Byb3ZpZGU6Ik1BVF9TT1JUX0hFQURFUl9DT0xVTU5fREVGIix1c2VFeGlzdGluZzp1M31dKSxRcF19KSx1My5wcm9wRGVjb3JhdG9ycz17bmFtZTpbe3R5cGU6Ul8sYXJnczpbIm1hdENvbHVtbkRlZiJdfV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIodTMsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW21hdENvbHVtbkRlZl0iLGlucHV0czpbInN0aWNreSJdLHByb3ZpZGVyczpbe3Byb3ZpZGU6UDEsdXNlRXhpc3Rpbmc6dTN9LHtwcm92aWRlOiJNQVRfU09SVF9IRUFERVJfQ09MVU1OX0RFRiIsdXNlRXhpc3Rpbmc6dTN9XX1dfV0sbnVsbCx7bmFtZTpbe3R5cGU6Ul8sYXJnczpbIm1hdENvbHVtbkRlZiJdfV19KTtjbGFzcyBnMyBleHRlbmRzIGsxe31nMy7JtWZhYz0oZnVuY3Rpb24oKXtsZXQgdDtyZXR1cm4gZnVuY3Rpb24gZShuKXtyZXR1cm4odHx8KHQ9VWEoZzMpKSkobnx8ZzMpfX0pKCksZzMuybVkaXI9aG8oe3R5cGU6ZzMsc2VsZWN0b3JzOltbIm1hdC1oZWFkZXItY2VsbCJdLFsidGgiLCJtYXQtaGVhZGVyLWNlbGwiLCIiXV0saG9zdEF0dHJzOlsicm9sZSIsImNvbHVtbmhlYWRlciIsMSwibWF0LWhlYWRlci1jZWxsIl0sZmVhdHVyZXM6W1FwXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoZzMsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoibWF0LWhlYWRlci1jZWxsLCB0aFttYXQtaGVhZGVyLWNlbGxdIixob3N0OntjbGFzczoibWF0LWhlYWRlci1jZWxsIixyb2xlOiJjb2x1bW5oZWFkZXIifX1dfV0sbnVsbCxudWxsKTtjbGFzcyBoMyBleHRlbmRzIFMxe31oMy7JtWZhYz0oZnVuY3Rpb24oKXtsZXQgdDtyZXR1cm4gZnVuY3Rpb24gZShuKXtyZXR1cm4odHx8KHQ9VWEoaDMpKSkobnx8aDMpfX0pKCksaDMuybVkaXI9aG8oe3R5cGU6aDMsc2VsZWN0b3JzOltbIm1hdC1mb290ZXItY2VsbCJdLFsidGQiLCJtYXQtZm9vdGVyLWNlbGwiLCIiXV0saG9zdEF0dHJzOlsicm9sZSIsImdyaWRjZWxsIiwxLCJtYXQtZm9vdGVyLWNlbGwiXSxmZWF0dXJlczpbUXBdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihoMyxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJtYXQtZm9vdGVyLWNlbGwsIHRkW21hdC1mb290ZXItY2VsbF0iLGhvc3Q6e2NsYXNzOiJtYXQtZm9vdGVyLWNlbGwiLHJvbGU6ImdyaWRjZWxsIn19XX1dLG51bGwsbnVsbCk7Y2xhc3MgYjMgZXh0ZW5kcyBEMXt9YjMuybVmYWM9KGZ1bmN0aW9uKCl7bGV0IHQ7cmV0dXJuIGZ1bmN0aW9uIGUobil7cmV0dXJuKHR8fCh0PVVhKGIzKSkpKG58fGIzKX19KSgpLGIzLsm1ZGlyPWhvKHt0eXBlOmIzLHNlbGVjdG9yczpbWyJtYXQtY2VsbCJdLFsidGQiLCJtYXQtY2VsbCIsIiJdXSxob3N0QXR0cnM6WyJyb2xlIiwiZ3JpZGNlbGwiLDEsIm1hdC1jZWxsIl0sZmVhdHVyZXM6W1FwXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoYjMsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoibWF0LWNlbGwsIHRkW21hdC1jZWxsXSIsaG9zdDp7Y2xhc3M6Im1hdC1jZWxsIixyb2xlOiJncmlkY2VsbCJ9fV19XSxudWxsLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgeTMgZXh0ZW5kcyBJMXt9eTMuybVmYWM9KGZ1bmN0aW9uKCl7bGV0IHQ7cmV0dXJuIGZ1bmN0aW9uIGUobil7cmV0dXJuKHR8fCh0PVVhKHkzKSkpKG58fHkzKX19KSgpLHkzLsm1ZGlyPWhvKHt0eXBlOnkzLHNlbGVjdG9yczpbWyIiLCJtYXRIZWFkZXJSb3dEZWYiLCIiXV0saW5wdXRzOntjb2x1bW5zOlsibWF0SGVhZGVyUm93RGVmIiwiY29sdW1ucyJdLHN0aWNreTpbIm1hdEhlYWRlclJvd0RlZlN0aWNreSIsInN0aWNreSJdfSxmZWF0dXJlczpbamgoW3twcm92aWRlOkkxLHVzZUV4aXN0aW5nOnkzfV0pLFFwXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoeTMsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW21hdEhlYWRlclJvd0RlZl0iLHByb3ZpZGVyczpbe3Byb3ZpZGU6STEsdXNlRXhpc3Rpbmc6eTN9XSxpbnB1dHM6WyJjb2x1bW5zOiBtYXRIZWFkZXJSb3dEZWYiLCJzdGlja3k6IG1hdEhlYWRlclJvd0RlZlN0aWNreSJdfV19XSxudWxsLG51bGwpO2NsYXNzIF8zIGV4dGVuZHMgRjF7fV8zLsm1ZmFjPShmdW5jdGlvbigpe2xldCB0O3JldHVybiBmdW5jdGlvbiBlKG4pe3JldHVybih0fHwodD1VYShfMykpKShufHxfMyl9fSkoKSxfMy7JtWRpcj1obyh7dHlwZTpfMyxzZWxlY3RvcnM6W1siIiwibWF0Rm9vdGVyUm93RGVmIiwiIl1dLGlucHV0czp7Y29sdW1uczpbIm1hdEZvb3RlclJvd0RlZiIsImNvbHVtbnMiXSxzdGlja3k6WyJtYXRGb290ZXJSb3dEZWZTdGlja3kiLCJzdGlja3kiXX0sZmVhdHVyZXM6W2poKFt7cHJvdmlkZTpGMSx1c2VFeGlzdGluZzpfM31dKSxRcF19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKF8zLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6IlttYXRGb290ZXJSb3dEZWZdIixwcm92aWRlcnM6W3twcm92aWRlOkYxLHVzZUV4aXN0aW5nOl8zfV0saW5wdXRzOlsiY29sdW1uczogbWF0Rm9vdGVyUm93RGVmIiwic3RpY2t5OiBtYXRGb290ZXJSb3dEZWZTdGlja3kiXX1dfV0sbnVsbCxudWxsKTtjbGFzcyBDMyBleHRlbmRzIEwxe31DMy7JtWZhYz0oZnVuY3Rpb24oKXtsZXQgdDtyZXR1cm4gZnVuY3Rpb24gZShuKXtyZXR1cm4odHx8KHQ9VWEoQzMpKSkobnx8QzMpfX0pKCksQzMuybVkaXI9aG8oe3R5cGU6QzMsc2VsZWN0b3JzOltbIiIsIm1hdFJvd0RlZiIsIiJdXSxpbnB1dHM6e2NvbHVtbnM6WyJtYXRSb3dEZWZDb2x1bW5zIiwiY29sdW1ucyJdLHdoZW46WyJtYXRSb3dEZWZXaGVuIiwid2hlbiJdfSxmZWF0dXJlczpbamgoW3twcm92aWRlOkwxLHVzZUV4aXN0aW5nOkMzfV0pLFFwXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoQzMsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW21hdFJvd0RlZl0iLHByb3ZpZGVyczpbe3Byb3ZpZGU6TDEsdXNlRXhpc3Rpbmc6QzN9XSxpbnB1dHM6WyJjb2x1bW5zOiBtYXRSb3dEZWZDb2x1bW5zIiwid2hlbjogbWF0Um93RGVmV2hlbiJdfV19XSxudWxsLG51bGwpO2NsYXNzIE0zIGV4dGVuZHMgVjF7fU0zLsm1ZmFjPShmdW5jdGlvbigpe2xldCB0O3JldHVybiBmdW5jdGlvbiBlKG4pe3JldHVybih0fHwodD1VYShNMykpKShufHxNMyl9fSkoKSxNMy7JtWNtcD1zbyh7dHlwZTpNMyxzZWxlY3RvcnM6W1sibWF0LWhlYWRlci1yb3ciXSxbInRyIiwibWF0LWhlYWRlci1yb3ciLCIiXV0saG9zdEF0dHJzOlsicm9sZSIsInJvdyIsMSwibWF0LWhlYWRlci1yb3ciXSxleHBvcnRBczpbIm1hdEhlYWRlclJvdyJdLGZlYXR1cmVzOltqaChbe3Byb3ZpZGU6VjEsdXNlRXhpc3Rpbmc6TTN9XSksUXBdLGRlY2xzOjEsdmFyczowLGNvbnN0czpbWyJjZGtDZWxsT3V0bGV0IiwiIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJlBmKDAsMCl9LGRpcmVjdGl2ZXM6W0IxXSxlbmNhcHN1bGF0aW9uOjJ9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKE0zLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Im1hdC1oZWFkZXItcm93LCB0clttYXQtaGVhZGVyLXJvd10iLHRlbXBsYXRlOlQxLGhvc3Q6e2NsYXNzOiJtYXQtaGVhZGVyLXJvdyIscm9sZToicm93In0sY2hhbmdlRGV0ZWN0aW9uOmpuLkRlZmF1bHQsZW5jYXBzdWxhdGlvbjpXbi5Ob25lLGV4cG9ydEFzOiJtYXRIZWFkZXJSb3ciLHByb3ZpZGVyczpbe3Byb3ZpZGU6VjEsdXNlRXhpc3Rpbmc6TTN9XX1dfV0sbnVsbCxudWxsKTtjbGFzcyB2MyBleHRlbmRzIGoxe312My7JtWZhYz0oZnVuY3Rpb24oKXtsZXQgdDtyZXR1cm4gZnVuY3Rpb24gZShuKXtyZXR1cm4odHx8KHQ9VWEodjMpKSkobnx8djMpfX0pKCksdjMuybVjbXA9c28oe3R5cGU6djMsc2VsZWN0b3JzOltbIm1hdC1mb290ZXItcm93Il0sWyJ0ciIsIm1hdC1mb290ZXItcm93IiwiIl1dLGhvc3RBdHRyczpbInJvbGUiLCJyb3ciLDEsIm1hdC1mb290ZXItcm93Il0sZXhwb3J0QXM6WyJtYXRGb290ZXJSb3ciXSxmZWF0dXJlczpbamgoW3twcm92aWRlOmoxLHVzZUV4aXN0aW5nOnYzfV0pLFFwXSxkZWNsczoxLHZhcnM6MCxjb25zdHM6W1siY2RrQ2VsbE91dGxldCIsIiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiZQZigwLDApfSxkaXJlY3RpdmVzOltCMV0sZW5jYXBzdWxhdGlvbjoyfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih2Myxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJtYXQtZm9vdGVyLXJvdywgdHJbbWF0LWZvb3Rlci1yb3ddIix0ZW1wbGF0ZTpUMSxob3N0OntjbGFzczoibWF0LWZvb3Rlci1yb3ciLHJvbGU6InJvdyJ9LGNoYW5nZURldGVjdGlvbjpqbi5EZWZhdWx0LGVuY2Fwc3VsYXRpb246V24uTm9uZSxleHBvcnRBczoibWF0Rm9vdGVyUm93Iixwcm92aWRlcnM6W3twcm92aWRlOmoxLHVzZUV4aXN0aW5nOnYzfV19XX1dLG51bGwsbnVsbCk7Y2xhc3MgeDMgZXh0ZW5kcyBVMXt9eDMuybVmYWM9KGZ1bmN0aW9uKCl7bGV0IHQ7cmV0dXJuIGZ1bmN0aW9uIGUobil7cmV0dXJuKHR8fCh0PVVhKHgzKSkpKG58fHgzKX19KSgpLHgzLsm1Y21wPXNvKHt0eXBlOngzLHNlbGVjdG9yczpbWyJtYXQtcm93Il0sWyJ0ciIsIm1hdC1yb3ciLCIiXV0saG9zdEF0dHJzOlsicm9sZSIsInJvdyIsMSwibWF0LXJvdyJdLGV4cG9ydEFzOlsibWF0Um93Il0sZmVhdHVyZXM6W2poKFt7cHJvdmlkZTpVMSx1c2VFeGlzdGluZzp4M31dKSxRcF0sZGVjbHM6MSx2YXJzOjAsY29uc3RzOltbImNka0NlbGxPdXRsZXQiLCIiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmUGYoMCwwKX0sZGlyZWN0aXZlczpbQjFdLGVuY2Fwc3VsYXRpb246Mn0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoeDMsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoibWF0LXJvdywgdHJbbWF0LXJvd10iLHRlbXBsYXRlOlQxLGhvc3Q6e2NsYXNzOiJtYXQtcm93Iixyb2xlOiJyb3cifSxjaGFuZ2VEZXRlY3Rpb246am4uRGVmYXVsdCxlbmNhcHN1bGF0aW9uOlduLk5vbmUsZXhwb3J0QXM6Im1hdFJvdyIscHJvdmlkZXJzOlt7cHJvdmlkZTpVMSx1c2VFeGlzdGluZzp4M31dfV19XSxudWxsLG51bGwpO2NsYXNzIE8zIGV4dGVuZHMgVzF7fU8zLsm1ZmFjPShmdW5jdGlvbigpe2xldCB0O3JldHVybiBmdW5jdGlvbiBlKG4pe3JldHVybih0fHwodD1VYShPMykpKShufHxPMyl9fSkoKSxPMy7JtWRpcj1obyh7dHlwZTpPMyxzZWxlY3RvcnM6W1sibmctdGVtcGxhdGUiLCJtYXROb0RhdGFSb3ciLCIiXV0sZmVhdHVyZXM6W2poKFt7cHJvdmlkZTpXMSx1c2VFeGlzdGluZzpPM31dKSxRcF19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKE8zLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6Im5nLXRlbXBsYXRlW21hdE5vRGF0YVJvd10iLHByb3ZpZGVyczpbe3Byb3ZpZGU6VzEsdXNlRXhpc3Rpbmc6TzN9XX1dfV0sbnVsbCxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIFAzIGV4dGVuZHMgbzN7fVAzLsm1ZmFjPShmdW5jdGlvbigpe2xldCB0O3JldHVybiBmdW5jdGlvbiBlKG4pe3JldHVybih0fHwodD1VYShQMykpKShufHxQMyl9fSkoKSxQMy7JtWNtcD1zbyh7dHlwZTpQMyxzZWxlY3RvcnM6W1sibWF0LXRleHQtY29sdW1uIl1dLGZlYXR1cmVzOltRcF0sZGVjbHM6Myx2YXJzOjAsY29uc3RzOltbIm1hdENvbHVtbkRlZiIsIiJdLFsibWF0LWhlYWRlci1jZWxsIiwiIiwzLCJ0ZXh0LWFsaWduIiw0LCJtYXRIZWFkZXJDZWxsRGVmIl0sWyJtYXQtY2VsbCIsIiIsMywidGV4dC1hbGlnbiIsNCwibWF0Q2VsbERlZiJdLFsibWF0LWhlYWRlci1jZWxsIiwiIl0sWyJtYXQtY2VsbCIsIiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoeGYoMCwwKSxIbSgxLHMzLDIsMywidGgiLDEpLEhtKDIsbDMsMiwzLCJ0ZCIsMiksT2YoKSl9LGRpcmVjdGl2ZXM6W3UzLG0zLHAzLGczLGIzXSxlbmNhcHN1bGF0aW9uOjJ9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFAzLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Im1hdC10ZXh0LWNvbHVtbiIsdGVtcGxhdGU6J1xuICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPlxuICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBbc3R5bGUudGV4dC1hbGlnbl09Imp1c3RpZnkiPlxuICAgICAgICB7e2hlYWRlclRleHR9fVxuICAgICAgPC90aD5cbiAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj0ibGV0IGRhdGEiIFtzdHlsZS50ZXh0LWFsaWduXT0ianVzdGlmeSI+XG4gICAgICAgIHt7ZGF0YUFjY2Vzc29yKGRhdGEsIG5hbWUpfX1cbiAgICAgIDwvdGQ+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICcsZW5jYXBzdWxhdGlvbjpXbi5Ob25lLGNoYW5nZURldGVjdGlvbjpqbi5EZWZhdWx0fV19XSxudWxsLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgdzM9W2QzLGMzLG0zLHkzLHUzLHAzLEMzLGYzLF8zLGczLGIzLGgzLE0zLHgzLHYzLE8zLFAzXTtjbGFzcyBrM3t9azMuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGszKX0sazMuybVtb2Q9Zm8oe3R5cGU6azN9KSxrMy7JtWluaj1Ebih7aW1wb3J0czpbW2EzLE5GXSxORl19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGszLFt7dHlwZTpMXyxhcmdzOlt7aW1wb3J0czpbYTMsTkZdLGV4cG9ydHM6W05GLHczXSxkZWNsYXJhdGlvbnM6dzN9XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhrMyx7ZGVjbGFyYXRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuW2QzLGMzLG0zLHkzLHUzLHAzLEMzLGYzLF8zLGczLGIzLGgzLE0zLHgzLHYzLE8zLFAzXX0saW1wb3J0czpmdW5jdGlvbigpe3JldHVyblthMyxORl19LGV4cG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bTkYsZDMsYzMsbTMseTMsdTMscDMsQzMsZjMsXzMsZzMsYjMsaDMsTTMseDMsdjMsTzMsUDNdfX0pO2NsYXNzIFMzIGV4dGVuZHMgSEx7Y29uc3RydWN0b3IodD1bXSl7c3VwZXIoKSx0aGlzLl9yZW5kZXJEYXRhPW5ldyBqKFtdKSx0aGlzLl9maWx0ZXI9bmV3IGooIiIpLHRoaXMuX2ludGVybmFsUGFnZUNoYW5nZXM9bmV3IEIsdGhpcy5fcmVuZGVyQ2hhbmdlc1N1YnNjcmlwdGlvbj1udWxsLHRoaXMuc29ydGluZ0RhdGFBY2Nlc3Nvcj0odCxlKT0+e2NvbnN0IG49dFtlXTtpZihvSChuKSl7Y29uc3QgdD1OdW1iZXIobik7cmV0dXJuIHQ8OTAwNzE5OTI1NDc0MDk5MT90Om59cmV0dXJuIG59LHRoaXMuc29ydERhdGE9KHQsZSk9Pntjb25zdCBuPWUuYWN0aXZlLG89ZS5kaXJlY3Rpb247cmV0dXJuIG4mJiIiIT1vP3Quc29ydCgoKHQsZSk9PntsZXQgaT10aGlzLnNvcnRpbmdEYXRhQWNjZXNzb3IodCxuKSxhPXRoaXMuc29ydGluZ0RhdGFBY2Nlc3NvcihlLG4pO2NvbnN0IHI9dHlwZW9mIGkscz10eXBlb2YgYTtyIT09cyYmKCJudW1iZXIiPT09ciYmKGkrPSIiKSwibnVtYmVyIj09PXMmJihhKz0iIikpO2xldCBsPTA7cmV0dXJuIG51bGwhPWkmJm51bGwhPWE/aT5hP2w9MTppPGEmJihsPS0xKTpudWxsIT1pP2w9MTpudWxsIT1hJiYobD0tMSksbCooImFzYyI9PW8/MTotMSl9KSk6dH0sdGhpcy5maWx0ZXJQcmVkaWNhdGU9KHQsZSk9Pntjb25zdCBuPU9iamVjdC5rZXlzKHQpLnJlZHVjZSgoKGUsbik9PmUrdFtuXSsi4pesIiksIiIpLnRvTG93ZXJDYXNlKCksbz1lLnRyaW0oKS50b0xvd2VyQ2FzZSgpO3JldHVybi0xIT1uLmluZGV4T2Yobyl9LHRoaXMuX2RhdGE9bmV3IGoodCksdGhpcy5fdXBkYXRlQ2hhbmdlU3Vic2NyaXB0aW9uKCl9Z2V0IGRhdGEoKXtyZXR1cm4gdGhpcy5fZGF0YS52YWx1ZX1zZXQgZGF0YSh0KXt0aGlzLl9kYXRhLm5leHQodCksdGhpcy5fcmVuZGVyQ2hhbmdlc1N1YnNjcmlwdGlvbnx8dGhpcy5fZmlsdGVyRGF0YSh0KX1nZXQgZmlsdGVyKCl7cmV0dXJuIHRoaXMuX2ZpbHRlci52YWx1ZX1zZXQgZmlsdGVyKHQpe3RoaXMuX2ZpbHRlci5uZXh0KHQpLHRoaXMuX3JlbmRlckNoYW5nZXNTdWJzY3JpcHRpb258fHRoaXMuX2ZpbHRlckRhdGEodGhpcy5kYXRhKX1nZXQgc29ydCgpe3JldHVybiB0aGlzLl9zb3J0fXNldCBzb3J0KHQpe3RoaXMuX3NvcnQ9dCx0aGlzLl91cGRhdGVDaGFuZ2VTdWJzY3JpcHRpb24oKX1nZXQgcGFnaW5hdG9yKCl7cmV0dXJuIHRoaXMuX3BhZ2luYXRvcn1zZXQgcGFnaW5hdG9yKHQpe3RoaXMuX3BhZ2luYXRvcj10LHRoaXMuX3VwZGF0ZUNoYW5nZVN1YnNjcmlwdGlvbigpfV91cGRhdGVDaGFuZ2VTdWJzY3JpcHRpb24oKXt2YXIgdDtjb25zdCBlPXRoaXMuX3NvcnQ/cGUodGhpcy5fc29ydC5zb3J0Q2hhbmdlLHRoaXMuX3NvcnQuaW5pdGlhbGl6ZWQpOnp0KG51bGwpLG49dGhpcy5fcGFnaW5hdG9yP3BlKHRoaXMuX3BhZ2luYXRvci5wYWdlLHRoaXMuX2ludGVybmFsUGFnZUNoYW5nZXMsdGhpcy5fcGFnaW5hdG9yLmluaXRpYWxpemVkKTp6dChudWxsKSxvPUt0KFt0aGlzLl9kYXRhLHRoaXMuX2ZpbHRlcl0pLnBpcGUoVnQoKChbdF0pPT50aGlzLl9maWx0ZXJEYXRhKHQpKSkpLGk9S3QoW28sZV0pLnBpcGUoVnQoKChbdF0pPT50aGlzLl9vcmRlckRhdGEodCkpKSksYT1LdChbaSxuXSkucGlwZShWdCgoKFt0XSk9PnRoaXMuX3BhZ2VEYXRhKHQpKSkpO251bGw9PT0odD10aGlzLl9yZW5kZXJDaGFuZ2VzU3Vic2NyaXB0aW9uKXx8dm9pZCAwPT09dHx8dC51bnN1YnNjcmliZSgpLHRoaXMuX3JlbmRlckNoYW5nZXNTdWJzY3JpcHRpb249YS5zdWJzY3JpYmUoKHQ9PnRoaXMuX3JlbmRlckRhdGEubmV4dCh0KSkpfV9maWx0ZXJEYXRhKHQpe3JldHVybiB0aGlzLmZpbHRlcmVkRGF0YT1udWxsPT10aGlzLmZpbHRlcnx8IiI9PT10aGlzLmZpbHRlcj90OnQuZmlsdGVyKCh0PT50aGlzLmZpbHRlclByZWRpY2F0ZSh0LHRoaXMuZmlsdGVyKSkpLHRoaXMucGFnaW5hdG9yJiZ0aGlzLl91cGRhdGVQYWdpbmF0b3IodGhpcy5maWx0ZXJlZERhdGEubGVuZ3RoKSx0aGlzLmZpbHRlcmVkRGF0YX1fb3JkZXJEYXRhKHQpe3JldHVybiB0aGlzLnNvcnQ/dGhpcy5zb3J0RGF0YSh0LnNsaWNlKCksdGhpcy5zb3J0KTp0fV9wYWdlRGF0YSh0KXtpZighdGhpcy5wYWdpbmF0b3IpcmV0dXJuIHQ7Y29uc3QgZT10aGlzLnBhZ2luYXRvci5wYWdlSW5kZXgqdGhpcy5wYWdpbmF0b3IucGFnZVNpemU7cmV0dXJuIHQuc2xpY2UoZSxlK3RoaXMucGFnaW5hdG9yLnBhZ2VTaXplKX1fdXBkYXRlUGFnaW5hdG9yKHQpe1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCgpPT57Y29uc3QgZT10aGlzLnBhZ2luYXRvcjtpZihlJiYoZS5sZW5ndGg9dCxlLnBhZ2VJbmRleD4wKSl7Y29uc3QgdD1NYXRoLmNlaWwoZS5sZW5ndGgvZS5wYWdlU2l6ZSktMXx8MCxuPU1hdGgubWluKGUucGFnZUluZGV4LHQpO24hPT1lLnBhZ2VJbmRleCYmKGUucGFnZUluZGV4PW4sdGhpcy5faW50ZXJuYWxQYWdlQ2hhbmdlcy5uZXh0KCkpfX0pKX1jb25uZWN0KCl7cmV0dXJuIHRoaXMuX3JlbmRlckNoYW5nZXNTdWJzY3JpcHRpb258fHRoaXMuX3VwZGF0ZUNoYW5nZVN1YnNjcmlwdGlvbigpLHRoaXMuX3JlbmRlckRhdGF9ZGlzY29ubmVjdCgpe3ZhciB0O251bGw9PT0odD10aGlzLl9yZW5kZXJDaGFuZ2VzU3Vic2NyaXB0aW9uKXx8dm9pZCAwPT09dHx8dC51bnN1YnNjcmliZSgpLHRoaXMuX3JlbmRlckNoYW5nZXNTdWJzY3JpcHRpb249bnVsbH19Y2xhc3MgRDMgZXh0ZW5kcyBTM3t9Y29uc3QgUjM9WyJwYW5lbCJdO2Z1bmN0aW9uIEUzKHQsZSl7aWYoMSZ0JiYoQ2YoMCwiZGl2IiwwLDEpLEZmKDIpLE1mKCkpLDImdCl7Y29uc3QgdD1lLmlkLG49emYoKTtiZigiaWQiLG4uaWQpKCJuZ0NsYXNzIixuLl9jbGFzc0xpc3QpLHltKCJhcmlhLWxhYmVsIixuLmFyaWFMYWJlbHx8bnVsbCkoImFyaWEtbGFiZWxsZWRieSIsbi5fZ2V0UGFuZWxBcmlhTGFiZWxsZWRieSh0KSl9fWxldCBBMz0wO2NsYXNzIFQze2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5zb3VyY2U9dCx0aGlzLm9wdGlvbj1lfX1jb25zdCBOMz1IRihjbGFzc3t9KSx6Mz1uZXcgZXIoIm1hdC1hdXRvY29tcGxldGUtZGVmYXVsdC1vcHRpb25zIix7cHJvdmlkZWRJbjoicm9vdCIsZmFjdG9yeTpmdW5jdGlvbiBJMygpe3JldHVybnthdXRvQWN0aXZlRmlyc3RPcHRpb246ITF9fX0pO2NsYXNzIEgzIGV4dGVuZHMgTjN7Y29uc3RydWN0b3IodCxlLG4sbyl7c3VwZXIoKSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZj10LHRoaXMuX2VsZW1lbnRSZWY9ZSx0aGlzLl9hY3RpdmVPcHRpb25DaGFuZ2VzPXUuRU1QVFksdGhpcy5zaG93UGFuZWw9ITEsdGhpcy5faXNPcGVuPSExLHRoaXMuZGlzcGxheVdpdGg9bnVsbCx0aGlzLm9wdGlvblNlbGVjdGVkPW5ldyBTeSx0aGlzLm9wZW5lZD1uZXcgU3ksdGhpcy5jbG9zZWQ9bmV3IFN5LHRoaXMub3B0aW9uQWN0aXZhdGVkPW5ldyBTeSx0aGlzLl9jbGFzc0xpc3Q9e30sdGhpcy5pZD0ibWF0LWF1dG9jb21wbGV0ZS0iK0EzKyssdGhpcy5pbmVydEdyb3Vwcz0obnVsbD09bz92b2lkIDA6by5TQUZBUkkpfHwhMSx0aGlzLl9hdXRvQWN0aXZlRmlyc3RPcHRpb249ISFuLmF1dG9BY3RpdmVGaXJzdE9wdGlvbn1nZXQgaXNPcGVuKCl7cmV0dXJuIHRoaXMuX2lzT3BlbiYmdGhpcy5zaG93UGFuZWx9Z2V0IGF1dG9BY3RpdmVGaXJzdE9wdGlvbigpe3JldHVybiB0aGlzLl9hdXRvQWN0aXZlRmlyc3RPcHRpb259c2V0IGF1dG9BY3RpdmVGaXJzdE9wdGlvbih0KXt0aGlzLl9hdXRvQWN0aXZlRmlyc3RPcHRpb249ZUgodCl9c2V0IGNsYXNzTGlzdCh0KXt0aGlzLl9jbGFzc0xpc3Q9dCYmdC5sZW5ndGg/KGZ1bmN0aW9uIGUodCxuPS9ccysvKXtjb25zdCBvPVtdO2lmKG51bGwhPXQpe2NvbnN0IGU9QXJyYXkuaXNBcnJheSh0KT90OmAke3R9YC5zcGxpdChuKTtmb3IoY29uc3QgdCBvZiBlKXtjb25zdCBlPWAke3R9YC50cmltKCk7ZSYmby5wdXNoKGUpfX1yZXR1cm4gb30pKHQpLnJlZHVjZSgoKHQsZSk9Pih0W2VdPSEwLHQpKSx7fSk6e30sdGhpcy5fc2V0VmlzaWJpbGl0eUNsYXNzZXModGhpcy5fY2xhc3NMaXN0KSx0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NOYW1lPSIifW5nQWZ0ZXJDb250ZW50SW5pdCgpe3RoaXMuX2tleU1hbmFnZXI9bmV3IEZIKHRoaXMub3B0aW9ucykud2l0aFdyYXAoKSx0aGlzLl9hY3RpdmVPcHRpb25DaGFuZ2VzPXRoaXMuX2tleU1hbmFnZXIuY2hhbmdlLnN1YnNjcmliZSgodD0+e3RoaXMub3B0aW9uQWN0aXZhdGVkLmVtaXQoe3NvdXJjZTp0aGlzLG9wdGlvbjp0aGlzLm9wdGlvbnMudG9BcnJheSgpW3RdfHxudWxsfSl9KSksdGhpcy5fc2V0VmlzaWJpbGl0eSgpfW5nT25EZXN0cm95KCl7dGhpcy5fYWN0aXZlT3B0aW9uQ2hhbmdlcy51bnN1YnNjcmliZSgpfV9zZXRTY3JvbGxUb3AodCl7dGhpcy5wYW5lbCYmKHRoaXMucGFuZWwubmF0aXZlRWxlbWVudC5zY3JvbGxUb3A9dCl9X2dldFNjcm9sbFRvcCgpe3JldHVybiB0aGlzLnBhbmVsP3RoaXMucGFuZWwubmF0aXZlRWxlbWVudC5zY3JvbGxUb3A6MH1fc2V0VmlzaWJpbGl0eSgpe3RoaXMuc2hvd1BhbmVsPSEhdGhpcy5vcHRpb25zLmxlbmd0aCx0aGlzLl9zZXRWaXNpYmlsaXR5Q2xhc3Nlcyh0aGlzLl9jbGFzc0xpc3QpLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpfV9lbWl0U2VsZWN0RXZlbnQodCl7Y29uc3QgZT1uZXcgVDModGhpcyx0KTt0aGlzLm9wdGlvblNlbGVjdGVkLmVtaXQoZSl9X2dldFBhbmVsQXJpYUxhYmVsbGVkYnkodCl7aWYodGhpcy5hcmlhTGFiZWwpcmV0dXJuIG51bGw7cmV0dXJuIHRoaXMuYXJpYUxhYmVsbGVkYnk/KHQ/dCsiICI6IiIpK3RoaXMuYXJpYUxhYmVsbGVkYnk6dH1fc2V0VmlzaWJpbGl0eUNsYXNzZXModCl7dFt0aGlzLl92aXNpYmxlQ2xhc3NdPXRoaXMuc2hvd1BhbmVsLHRbdGhpcy5faGlkZGVuQ2xhc3NdPSF0aGlzLnNob3dQYW5lbH19SDMuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEgzKShnZihPYiksZ2YoS2gpLGdmKHozKSxnZihjSCkpfSxIMy7JtWRpcj1obyh7dHlwZTpIMyx2aWV3UXVlcnk6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmKFZ5KEViLDcpLFZ5KFIzLDUpKSwyJmUpe2xldCB0O0J5KHQ9VXkoKSkmJihuLnRlbXBsYXRlPXQuZmlyc3QpLEJ5KHQ9VXkoKSkmJihuLnBhbmVsPXQuZmlyc3QpfX0saW5wdXRzOntkaXNwbGF5V2l0aDoiZGlzcGxheVdpdGgiLGF1dG9BY3RpdmVGaXJzdE9wdGlvbjoiYXV0b0FjdGl2ZUZpcnN0T3B0aW9uIixjbGFzc0xpc3Q6WyJjbGFzcyIsImNsYXNzTGlzdCJdLGFyaWFMYWJlbDpbImFyaWEtbGFiZWwiLCJhcmlhTGFiZWwiXSxhcmlhTGFiZWxsZWRieTpbImFyaWEtbGFiZWxsZWRieSIsImFyaWFMYWJlbGxlZGJ5Il0scGFuZWxXaWR0aDoicGFuZWxXaWR0aCJ9LG91dHB1dHM6e29wdGlvblNlbGVjdGVkOiJvcHRpb25TZWxlY3RlZCIsb3BlbmVkOiJvcGVuZWQiLGNsb3NlZDoiY2xvc2VkIixvcHRpb25BY3RpdmF0ZWQ6Im9wdGlvbkFjdGl2YXRlZCJ9LGZlYXR1cmVzOltRcF19KSxIMy5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOk9ifSx7dHlwZTpLaH0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3ozXX1dfSx7dHlwZTpjSH1dLEgzLnByb3BEZWNvcmF0b3JzPXt0ZW1wbGF0ZTpbe3R5cGU6YXIsYXJnczpbRWIse3N0YXRpYzohMH1dfV0scGFuZWw6W3t0eXBlOmFyLGFyZ3M6WyJwYW5lbCJdfV0sYXJpYUxhYmVsOlt7dHlwZTpSXyxhcmdzOlsiYXJpYS1sYWJlbCJdfV0sYXJpYUxhYmVsbGVkYnk6W3t0eXBlOlJfLGFyZ3M6WyJhcmlhLWxhYmVsbGVkYnkiXX1dLGRpc3BsYXlXaXRoOlt7dHlwZTpSX31dLGF1dG9BY3RpdmVGaXJzdE9wdGlvbjpbe3R5cGU6Ul99XSxwYW5lbFdpZHRoOlt7dHlwZTpSX31dLG9wdGlvblNlbGVjdGVkOlt7dHlwZTpFX31dLG9wZW5lZDpbe3R5cGU6RV99XSxjbG9zZWQ6W3t0eXBlOkVffV0sb3B0aW9uQWN0aXZhdGVkOlt7dHlwZTpFX31dLGNsYXNzTGlzdDpbe3R5cGU6Ul8sYXJnczpbImNsYXNzIl19XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihIMyxbe3R5cGU6a199XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6T2J9LHt0eXBlOktofSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbejNdfV19LHt0eXBlOmNIfV19KSx7ZGlzcGxheVdpdGg6W3t0eXBlOlJffV0sb3B0aW9uU2VsZWN0ZWQ6W3t0eXBlOkVffV0sb3BlbmVkOlt7dHlwZTpFX31dLGNsb3NlZDpbe3R5cGU6RV99XSxvcHRpb25BY3RpdmF0ZWQ6W3t0eXBlOkVffV0sYXV0b0FjdGl2ZUZpcnN0T3B0aW9uOlt7dHlwZTpSX31dLGNsYXNzTGlzdDpbe3R5cGU6Ul8sYXJnczpbImNsYXNzIl19XSx0ZW1wbGF0ZTpbe3R5cGU6YXIsYXJnczpbRWIse3N0YXRpYzohMH1dfV0scGFuZWw6W3t0eXBlOmFyLGFyZ3M6WyJwYW5lbCJdfV0sYXJpYUxhYmVsOlt7dHlwZTpSXyxhcmdzOlsiYXJpYS1sYWJlbCJdfV0sYXJpYUxhYmVsbGVkYnk6W3t0eXBlOlJfLGFyZ3M6WyJhcmlhLWxhYmVsbGVkYnkiXX1dLHBhbmVsV2lkdGg6W3t0eXBlOlJffV19KTtjbGFzcyBGMyBleHRlbmRzIEgze2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl92aXNpYmxlQ2xhc3M9Im1hdC1hdXRvY29tcGxldGUtdmlzaWJsZSIsdGhpcy5faGlkZGVuQ2xhc3M9Im1hdC1hdXRvY29tcGxldGUtaGlkZGVuIn19RjMuybVmYWM9KGZ1bmN0aW9uKCl7bGV0IHQ7cmV0dXJuIGZ1bmN0aW9uIGUobil7cmV0dXJuKHR8fCh0PVVhKEYzKSkpKG58fEYzKX19KSgpLEYzLsm1Y21wPXNvKHt0eXBlOkYzLHNlbGVjdG9yczpbWyJtYXQtYXV0b2NvbXBsZXRlIl1dLGNvbnRlbnRRdWVyaWVzOmZ1bmN0aW9uIHQoZSxuLG8pe2lmKDEmZSYmKGp5KG8sQ0wsNSksankobyxQTCw1KSksMiZlKXtsZXQgdDtCeSh0PVV5KCkpJiYobi5vcHRpb25Hcm91cHM9dCksQnkodD1VeSgpKSYmKG4ub3B0aW9ucz10KX19LGhvc3RBdHRyczpbMSwibWF0LWF1dG9jb21wbGV0ZSJdLGlucHV0czp7ZGlzYWJsZVJpcHBsZToiZGlzYWJsZVJpcHBsZSJ9LGV4cG9ydEFzOlsibWF0QXV0b2NvbXBsZXRlIl0sZmVhdHVyZXM6W2poKFt7cHJvdmlkZTpoTCx1c2VFeGlzdGluZzpGM31dKSxRcF0sbmdDb250ZW50U2VsZWN0b3JzOlsiKiJdLGRlY2xzOjEsdmFyczowLGNvbnN0czpbWyJyb2xlIiwibGlzdGJveCIsMSwibWF0LWF1dG9jb21wbGV0ZS1wYW5lbCIsMywiaWQiLCJuZ0NsYXNzIl0sWyJwYW5lbCIsIiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoSGYoKSxIbSgwLEUzLDMsNCwibmctdGVtcGxhdGUiKSl9LGRpcmVjdGl2ZXM6W0N2XSxzdHlsZXM6WyIubWF0LWF1dG9jb21wbGV0ZS1wYW5lbHttaW4td2lkdGg6MTEycHg7bWF4LXdpZHRoOjI4MHB4O292ZXJmbG93OmF1dG87LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6dG91Y2g7dmlzaWJpbGl0eTpoaWRkZW47bWF4LXdpZHRoOm5vbmU7bWF4LWhlaWdodDoyNTZweDtwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDoxMDAlO2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6NHB4O2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjRweH0ubWF0LWF1dG9jb21wbGV0ZS1wYW5lbC5tYXQtYXV0b2NvbXBsZXRlLXZpc2libGV7dmlzaWJpbGl0eTp2aXNpYmxlfS5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsLm1hdC1hdXRvY29tcGxldGUtaGlkZGVue3Zpc2liaWxpdHk6aGlkZGVufS5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsLWFib3ZlIC5tYXQtYXV0b2NvbXBsZXRlLXBhbmVse2JvcmRlci1yYWRpdXM6MDtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjRweDtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czo0cHh9Lm1hdC1hdXRvY29tcGxldGUtcGFuZWwgLm1hdC1kaXZpZGVyLWhvcml6b250YWx7bWFyZ2luLXRvcDotMXB4fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1hdXRvY29tcGxldGUtcGFuZWx7b3V0bGluZTpzb2xpZCAxcHh9bWF0LWF1dG9jb21wbGV0ZXtkaXNwbGF5Om5vbmV9XG4iXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSxGMy5wcm9wRGVjb3JhdG9ycz17b3B0aW9uR3JvdXBzOlt7dHlwZTpvcixhcmdzOltDTCx7ZGVzY2VuZGFudHM6ITB9XX1dLG9wdGlvbnM6W3t0eXBlOm9yLGFyZ3M6W1BMLHtkZXNjZW5kYW50czohMH1dfV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoRjMsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoibWF0LWF1dG9jb21wbGV0ZSIsdGVtcGxhdGU6JzxuZy10ZW1wbGF0ZSBsZXQtZm9ybUZpZWxkSWQ9ImlkIj5cbiAgPGRpdiBjbGFzcz0ibWF0LWF1dG9jb21wbGV0ZS1wYW5lbCJcbiAgICAgICByb2xlPSJsaXN0Ym94IlxuICAgICAgIFtpZF09ImlkIlxuICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPSJhcmlhTGFiZWwgfHwgbnVsbCJcbiAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPSJfZ2V0UGFuZWxBcmlhTGFiZWxsZWRieShmb3JtRmllbGRJZCkiXG4gICAgICAgW25nQ2xhc3NdPSJfY2xhc3NMaXN0IlxuICAgICAgICNwYW5lbD5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbicsZW5jYXBzdWxhdGlvbjpXbi5Ob25lLGNoYW5nZURldGVjdGlvbjpqbi5PblB1c2gsZXhwb3J0QXM6Im1hdEF1dG9jb21wbGV0ZSIsaW5wdXRzOlsiZGlzYWJsZVJpcHBsZSJdLGhvc3Q6e2NsYXNzOiJtYXQtYXV0b2NvbXBsZXRlIn0scHJvdmlkZXJzOlt7cHJvdmlkZTpoTCx1c2VFeGlzdGluZzpGM31dLHN0eWxlczpbIi5tYXQtYXV0b2NvbXBsZXRlLXBhbmVse21pbi13aWR0aDoxMTJweDttYXgtd2lkdGg6MjgwcHg7b3ZlcmZsb3c6YXV0bzstd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzp0b3VjaDt2aXNpYmlsaXR5OmhpZGRlbjttYXgtd2lkdGg6bm9uZTttYXgtaGVpZ2h0OjI1NnB4O3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjEwMCU7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czo0cHg7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6NHB4fS5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsLm1hdC1hdXRvY29tcGxldGUtdmlzaWJsZXt2aXNpYmlsaXR5OnZpc2libGV9Lm1hdC1hdXRvY29tcGxldGUtcGFuZWwubWF0LWF1dG9jb21wbGV0ZS1oaWRkZW57dmlzaWJpbGl0eTpoaWRkZW59Lm1hdC1hdXRvY29tcGxldGUtcGFuZWwtYWJvdmUgLm1hdC1hdXRvY29tcGxldGUtcGFuZWx7Ym9yZGVyLXJhZGl1czowO2JvcmRlci10b3AtbGVmdC1yYWRpdXM6NHB4O2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjRweH0ubWF0LWF1dG9jb21wbGV0ZS1wYW5lbCAubWF0LWRpdmlkZXItaG9yaXpvbnRhbHttYXJnaW4tdG9wOi0xcHh9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWF1dG9jb21wbGV0ZS1wYW5lbHtvdXRsaW5lOnNvbGlkIDFweH1tYXQtYXV0b2NvbXBsZXRle2Rpc3BsYXk6bm9uZX1cbiJdfV19XSxudWxsLHtvcHRpb25Hcm91cHM6W3t0eXBlOm9yLGFyZ3M6W0NMLHtkZXNjZW5kYW50czohMH1dfV0sb3B0aW9uczpbe3R5cGU6b3IsYXJnczpbUEwse2Rlc2NlbmRhbnRzOiEwfV19XX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgTDN7Y29uc3RydWN0b3IodCl7dGhpcy5lbGVtZW50UmVmPXR9fUwzLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxMMykoZ2YoS2gpKX0sTDMuybVkaXI9aG8oe3R5cGU6TDN9KSxMMy5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOktofV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihMMyxbe3R5cGU6a199XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6S2h9XX0pLG51bGwpO2NsYXNzIEIzIGV4dGVuZHMgTDN7fUIzLsm1ZmFjPShmdW5jdGlvbigpe2xldCB0O3JldHVybiBmdW5jdGlvbiBlKG4pe3JldHVybih0fHwodD1VYShCMykpKShufHxCMyl9fSkoKSxCMy7JtWRpcj1obyh7dHlwZTpCMyxzZWxlY3RvcnM6W1siIiwibWF0QXV0b2NvbXBsZXRlT3JpZ2luIiwiIl1dLGV4cG9ydEFzOlsibWF0QXV0b2NvbXBsZXRlT3JpZ2luIl0sZmVhdHVyZXM6W1FwXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoQjMsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW21hdEF1dG9jb21wbGV0ZU9yaWdpbl0iLGV4cG9ydEFzOiJtYXRBdXRvY29tcGxldGVPcmlnaW4ifV19XSxudWxsLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgVjM9bmV3IGVyKCJtYXQtYXV0b2NvbXBsZXRlLXNjcm9sbC1zdHJhdGVneSIpO2NvbnN0IGozPXtwcm92aWRlOlYzLGRlcHM6W0tCXSx1c2VGYWN0b3J5OmZ1bmN0aW9uIFUzKHQpe3JldHVybigpPT50LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpfX0sVzM9e3Byb3ZpZGU6eFUsdXNlRXhpc3Rpbmc6JGUoKCgpPT5ZMykpLG11bHRpOiEwfTtjbGFzcyBHM3tjb25zdHJ1Y3Rvcih0LGUsbixvLGksYSxyLHMsbCxjLGQpe3RoaXMuX2VsZW1lbnQ9dCx0aGlzLl9vdmVybGF5PWUsdGhpcy5fdmlld0NvbnRhaW5lclJlZj1uLHRoaXMuX3pvbmU9byx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZj1pLHRoaXMuX2Rpcj1yLHRoaXMuX2Zvcm1GaWVsZD1zLHRoaXMuX2RvY3VtZW50PWwsdGhpcy5fdmlld3BvcnRSdWxlcj1jLHRoaXMuX2RlZmF1bHRzPWQsdGhpcy5fY29tcG9uZW50RGVzdHJveWVkPSExLHRoaXMuX2F1dG9jb21wbGV0ZURpc2FibGVkPSExLHRoaXMuX21hbnVhbGx5RmxvYXRpbmdMYWJlbD0hMSx0aGlzLl92aWV3cG9ydFN1YnNjcmlwdGlvbj11LkVNUFRZLHRoaXMuX2Nhbk9wZW5Pbk5leHRGb2N1cz0hMCx0aGlzLl9jbG9zZUtleUV2ZW50U3RyZWFtPW5ldyBCLHRoaXMuX3dpbmRvd0JsdXJIYW5kbGVyPSgpPT57dGhpcy5fY2FuT3Blbk9uTmV4dEZvY3VzPXRoaXMuX2RvY3VtZW50LmFjdGl2ZUVsZW1lbnQhPT10aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnR8fHRoaXMucGFuZWxPcGVufSx0aGlzLl9vbkNoYW5nZT0oKT0+e30sdGhpcy5fb25Ub3VjaGVkPSgpPT57fSx0aGlzLnBvc2l0aW9uPSJhdXRvIix0aGlzLmF1dG9jb21wbGV0ZUF0dHJpYnV0ZT0ib2ZmIix0aGlzLl9vdmVybGF5QXR0YWNoZWQ9ITEsdGhpcy5vcHRpb25TZWxlY3Rpb25zPW9lKCgoKT0+dGhpcy5hdXRvY29tcGxldGUmJnRoaXMuYXV0b2NvbXBsZXRlLm9wdGlvbnM/cGUoLi4udGhpcy5hdXRvY29tcGxldGUub3B0aW9ucy5tYXAoKHQ9PnQub25TZWxlY3Rpb25DaGFuZ2UpKSk6dGhpcy5fem9uZS5vblN0YWJsZS5waXBlKHZlKDEpLFZlKCgoKT0+dGhpcy5vcHRpb25TZWxlY3Rpb25zKSkpKSksdGhpcy5fc2Nyb2xsU3RyYXRlZ3k9YX1nZXQgYXV0b2NvbXBsZXRlRGlzYWJsZWQoKXtyZXR1cm4gdGhpcy5fYXV0b2NvbXBsZXRlRGlzYWJsZWR9c2V0IGF1dG9jb21wbGV0ZURpc2FibGVkKHQpe3RoaXMuX2F1dG9jb21wbGV0ZURpc2FibGVkPWVIKHQpfW5nQWZ0ZXJWaWV3SW5pdCgpe2NvbnN0IHQ9dGhpcy5fZ2V0V2luZG93KCk7dm9pZCAwIT09dCYmdGhpcy5fem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9PnQuYWRkRXZlbnRMaXN0ZW5lcigiYmx1ciIsdGhpcy5fd2luZG93Qmx1ckhhbmRsZXIpKSl9bmdPbkNoYW5nZXModCl7dC5wb3NpdGlvbiYmdGhpcy5fcG9zaXRpb25TdHJhdGVneSYmKHRoaXMuX3NldFN0cmF0ZWd5UG9zaXRpb25zKHRoaXMuX3Bvc2l0aW9uU3RyYXRlZ3kpLHRoaXMucGFuZWxPcGVuJiZ0aGlzLl9vdmVybGF5UmVmLnVwZGF0ZVBvc2l0aW9uKCkpfW5nT25EZXN0cm95KCl7Y29uc3QgdD10aGlzLl9nZXRXaW5kb3coKTt2b2lkIDAhPT10JiZ0LnJlbW92ZUV2ZW50TGlzdGVuZXIoImJsdXIiLHRoaXMuX3dpbmRvd0JsdXJIYW5kbGVyKSx0aGlzLl92aWV3cG9ydFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHRoaXMuX2NvbXBvbmVudERlc3Ryb3llZD0hMCx0aGlzLl9kZXN0cm95UGFuZWwoKSx0aGlzLl9jbG9zZUtleUV2ZW50U3RyZWFtLmNvbXBsZXRlKCl9Z2V0IHBhbmVsT3Blbigpe3JldHVybiB0aGlzLl9vdmVybGF5QXR0YWNoZWQmJnRoaXMuYXV0b2NvbXBsZXRlLnNob3dQYW5lbH1vcGVuUGFuZWwoKXt0aGlzLl9hdHRhY2hPdmVybGF5KCksdGhpcy5fZmxvYXRMYWJlbCgpfWNsb3NlUGFuZWwoKXt0aGlzLl9yZXNldExhYmVsKCksdGhpcy5fb3ZlcmxheUF0dGFjaGVkJiYodGhpcy5wYW5lbE9wZW4mJnRoaXMuYXV0b2NvbXBsZXRlLmNsb3NlZC5lbWl0KCksdGhpcy5hdXRvY29tcGxldGUuX2lzT3Blbj10aGlzLl9vdmVybGF5QXR0YWNoZWQ9ITEsdGhpcy5fb3ZlcmxheVJlZiYmdGhpcy5fb3ZlcmxheVJlZi5oYXNBdHRhY2hlZCgpJiYodGhpcy5fb3ZlcmxheVJlZi5kZXRhY2goKSx0aGlzLl9jbG9zaW5nQWN0aW9uc1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpKSx0aGlzLl9jb21wb25lbnREZXN0cm95ZWR8fHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKSl9dXBkYXRlUG9zaXRpb24oKXt0aGlzLl9vdmVybGF5QXR0YWNoZWQmJnRoaXMuX292ZXJsYXlSZWYudXBkYXRlUG9zaXRpb24oKX1nZXQgcGFuZWxDbG9zaW5nQWN0aW9ucygpe3JldHVybiBwZSh0aGlzLm9wdGlvblNlbGVjdGlvbnMsdGhpcy5hdXRvY29tcGxldGUuX2tleU1hbmFnZXIudGFiT3V0LnBpcGUodWUoKCgpPT50aGlzLl9vdmVybGF5QXR0YWNoZWQpKSksdGhpcy5fY2xvc2VLZXlFdmVudFN0cmVhbSx0aGlzLl9nZXRPdXRzaWRlQ2xpY2tTdHJlYW0oKSx0aGlzLl9vdmVybGF5UmVmP3RoaXMuX292ZXJsYXlSZWYuZGV0YWNobWVudHMoKS5waXBlKHVlKCgoKT0+dGhpcy5fb3ZlcmxheUF0dGFjaGVkKSkpOnp0KCkpLnBpcGUoVnQoKHQ9PnQgaW5zdGFuY2VvZiB4TD90Om51bGwpKSl9Z2V0IGFjdGl2ZU9wdGlvbigpe3JldHVybiB0aGlzLmF1dG9jb21wbGV0ZSYmdGhpcy5hdXRvY29tcGxldGUuX2tleU1hbmFnZXI/dGhpcy5hdXRvY29tcGxldGUuX2tleU1hbmFnZXIuYWN0aXZlSXRlbTpudWxsfV9nZXRPdXRzaWRlQ2xpY2tTdHJlYW0oKXtyZXR1cm4gcGUobGUodGhpcy5fZG9jdW1lbnQsImNsaWNrIiksbGUodGhpcy5fZG9jdW1lbnQsImF1eGNsaWNrIiksbGUodGhpcy5fZG9jdW1lbnQsInRvdWNoZW5kIikpLnBpcGUodWUoKHQ9Pntjb25zdCBlPXZIKHQpLG49dGhpcy5fZm9ybUZpZWxkP3RoaXMuX2Zvcm1GaWVsZC5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Om51bGwsbz10aGlzLmNvbm5lY3RlZFRvP3RoaXMuY29ubmVjdGVkVG8uZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Om51bGw7cmV0dXJuIHRoaXMuX292ZXJsYXlBdHRhY2hlZCYmZSE9PXRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudCYmKCFufHwhbi5jb250YWlucyhlKSkmJighb3x8IW8uY29udGFpbnMoZSkpJiYhIXRoaXMuX292ZXJsYXlSZWYmJiF0aGlzLl9vdmVybGF5UmVmLm92ZXJsYXlFbGVtZW50LmNvbnRhaW5zKGUpfSkpKX13cml0ZVZhbHVlKHQpe1Byb21pc2UucmVzb2x2ZShudWxsKS50aGVuKCgoKT0+dGhpcy5fc2V0VHJpZ2dlclZhbHVlKHQpKSl9cmVnaXN0ZXJPbkNoYW5nZSh0KXt0aGlzLl9vbkNoYW5nZT10fXJlZ2lzdGVyT25Ub3VjaGVkKHQpe3RoaXMuX29uVG91Y2hlZD10fXNldERpc2FibGVkU3RhdGUodCl7dGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LmRpc2FibGVkPXR9X2hhbmRsZUtleWRvd24odCl7Y29uc3QgZT10LmtleUNvZGU7aWYoZSE9PUtJfHx0SCh0KXx8dC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuYWN0aXZlT3B0aW9uJiZlPT09WEkmJnRoaXMucGFuZWxPcGVuKXRoaXMuYWN0aXZlT3B0aW9uLl9zZWxlY3RWaWFJbnRlcmFjdGlvbigpLHRoaXMuX3Jlc2V0QWN0aXZlSXRlbSgpLHQucHJldmVudERlZmF1bHQoKTtlbHNlIGlmKHRoaXMuYXV0b2NvbXBsZXRlKXtjb25zdCBuPXRoaXMuYXV0b2NvbXBsZXRlLl9rZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0sbz1lPT09UUl8fGU9PT0kSTt0aGlzLnBhbmVsT3Blbnx8OT09PWU/dGhpcy5hdXRvY29tcGxldGUuX2tleU1hbmFnZXIub25LZXlkb3duKHQpOm8mJnRoaXMuX2Nhbk9wZW4oKSYmdGhpcy5vcGVuUGFuZWwoKSwob3x8dGhpcy5hdXRvY29tcGxldGUuX2tleU1hbmFnZXIuYWN0aXZlSXRlbSE9PW4pJiZ0aGlzLl9zY3JvbGxUb09wdGlvbih0aGlzLmF1dG9jb21wbGV0ZS5fa2V5TWFuYWdlci5hY3RpdmVJdGVtSW5kZXh8fDApfX1faGFuZGxlSW5wdXQodCl7bGV0IGU9dC50YXJnZXQsbj1lLnZhbHVlOyJudW1iZXIiPT09ZS50eXBlJiYobj0iIj09bj9udWxsOnBhcnNlRmxvYXQobikpLHRoaXMuX3ByZXZpb3VzVmFsdWUhPT1uJiYodGhpcy5fcHJldmlvdXNWYWx1ZT1uLHRoaXMuX29uQ2hhbmdlKG4pLHRoaXMuX2Nhbk9wZW4oKSYmdGhpcy5fZG9jdW1lbnQuYWN0aXZlRWxlbWVudD09PXQudGFyZ2V0JiZ0aGlzLm9wZW5QYW5lbCgpKX1faGFuZGxlRm9jdXMoKXt0aGlzLl9jYW5PcGVuT25OZXh0Rm9jdXM/dGhpcy5fY2FuT3BlbigpJiYodGhpcy5fcHJldmlvdXNWYWx1ZT10aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQudmFsdWUsdGhpcy5fYXR0YWNoT3ZlcmxheSgpLHRoaXMuX2Zsb2F0TGFiZWwoITApKTp0aGlzLl9jYW5PcGVuT25OZXh0Rm9jdXM9ITB9X2Zsb2F0TGFiZWwodD0hMSl7dGhpcy5fZm9ybUZpZWxkJiYiYXV0byI9PT10aGlzLl9mb3JtRmllbGQuZmxvYXRMYWJlbCYmKHQ/dGhpcy5fZm9ybUZpZWxkLl9hbmltYXRlQW5kTG9ja0xhYmVsKCk6dGhpcy5fZm9ybUZpZWxkLmZsb2F0TGFiZWw9ImFsd2F5cyIsdGhpcy5fbWFudWFsbHlGbG9hdGluZ0xhYmVsPSEwKX1fcmVzZXRMYWJlbCgpe3RoaXMuX21hbnVhbGx5RmxvYXRpbmdMYWJlbCYmKHRoaXMuX2Zvcm1GaWVsZC5mbG9hdExhYmVsPSJhdXRvIix0aGlzLl9tYW51YWxseUZsb2F0aW5nTGFiZWw9ITEpfV9zdWJzY3JpYmVUb0Nsb3NpbmdBY3Rpb25zKCl7cmV0dXJuIHBlKHRoaXMuX3pvbmUub25TdGFibGUucGlwZSh2ZSgxKSksdGhpcy5hdXRvY29tcGxldGUub3B0aW9ucy5jaGFuZ2VzLnBpcGUoV2UoKCgpPT50aGlzLl9wb3NpdGlvblN0cmF0ZWd5LnJlYXBwbHlMYXN0UG9zaXRpb24oKSkpLFBlKDApKSkucGlwZShWZSgoKCk9Pntjb25zdCB0PXRoaXMucGFuZWxPcGVuO3JldHVybiB0aGlzLl9yZXNldEFjdGl2ZUl0ZW0oKSx0aGlzLmF1dG9jb21wbGV0ZS5fc2V0VmlzaWJpbGl0eSgpLHRoaXMucGFuZWxPcGVuJiYodGhpcy5fb3ZlcmxheVJlZi51cGRhdGVQb3NpdGlvbigpLHQhPT10aGlzLnBhbmVsT3BlbiYmdGhpcy5hdXRvY29tcGxldGUub3BlbmVkLmVtaXQoKSksdGhpcy5wYW5lbENsb3NpbmdBY3Rpb25zfSkpLHZlKDEpKS5zdWJzY3JpYmUoKHQ9PnRoaXMuX3NldFZhbHVlQW5kQ2xvc2UodCkpKX1fZGVzdHJveVBhbmVsKCl7dGhpcy5fb3ZlcmxheVJlZiYmKHRoaXMuY2xvc2VQYW5lbCgpLHRoaXMuX292ZXJsYXlSZWYuZGlzcG9zZSgpLHRoaXMuX292ZXJsYXlSZWY9bnVsbCl9X3NldFRyaWdnZXJWYWx1ZSh0KXtjb25zdCBlPXRoaXMuYXV0b2NvbXBsZXRlJiZ0aGlzLmF1dG9jb21wbGV0ZS5kaXNwbGF5V2l0aD90aGlzLmF1dG9jb21wbGV0ZS5kaXNwbGF5V2l0aCh0KTp0LG49bnVsbCE9ZT9lOiIiO3RoaXMuX2Zvcm1GaWVsZD90aGlzLl9mb3JtRmllbGQuX2NvbnRyb2wudmFsdWU9bjp0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQudmFsdWU9bix0aGlzLl9wcmV2aW91c1ZhbHVlPW59X3NldFZhbHVlQW5kQ2xvc2UodCl7dCYmdC5zb3VyY2UmJih0aGlzLl9jbGVhclByZXZpb3VzU2VsZWN0ZWRPcHRpb24odC5zb3VyY2UpLHRoaXMuX3NldFRyaWdnZXJWYWx1ZSh0LnNvdXJjZS52YWx1ZSksdGhpcy5fb25DaGFuZ2UodC5zb3VyY2UudmFsdWUpLHRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpLHRoaXMuYXV0b2NvbXBsZXRlLl9lbWl0U2VsZWN0RXZlbnQodC5zb3VyY2UpKSx0aGlzLmNsb3NlUGFuZWwoKX1fY2xlYXJQcmV2aW91c1NlbGVjdGVkT3B0aW9uKHQpe3RoaXMuYXV0b2NvbXBsZXRlLm9wdGlvbnMuZm9yRWFjaCgoZT0+e2UhPT10JiZlLnNlbGVjdGVkJiZlLmRlc2VsZWN0KCl9KSl9X2F0dGFjaE92ZXJsYXkoKXt2YXIgdDtpZighdGhpcy5hdXRvY29tcGxldGUmJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSl0aHJvdyhmdW5jdGlvbiBlKCl7cmV0dXJuIEVycm9yKCJBdHRlbXB0aW5nIHRvIG9wZW4gYW4gdW5kZWZpbmVkIGluc3RhbmNlIG9mIGBtYXQtYXV0b2NvbXBsZXRlYC4gTWFrZSBzdXJlIHRoYXQgdGhlIGlkIHBhc3NlZCB0byB0aGUgYG1hdEF1dG9jb21wbGV0ZWAgaXMgY29ycmVjdCBhbmQgdGhhdCB5b3UncmUgYXR0ZW1wdGluZyB0byBvcGVuIGl0IGFmdGVyIHRoZSBuZ0FmdGVyQ29udGVudEluaXQgaG9vay4iKX0pKCk7bGV0IG49dGhpcy5fb3ZlcmxheVJlZjtuPyh0aGlzLl9wb3NpdGlvblN0cmF0ZWd5LnNldE9yaWdpbih0aGlzLl9nZXRDb25uZWN0ZWRFbGVtZW50KCkpLG4udXBkYXRlU2l6ZSh7d2lkdGg6dGhpcy5fZ2V0UGFuZWxXaWR0aCgpfSkpOih0aGlzLl9wb3J0YWw9bmV3IGxCKHRoaXMuYXV0b2NvbXBsZXRlLnRlbXBsYXRlLHRoaXMuX3ZpZXdDb250YWluZXJSZWYse2lkOm51bGw9PT0odD10aGlzLl9mb3JtRmllbGQpfHx2b2lkIDA9PT10P3ZvaWQgMDp0LmdldExhYmVsSWQoKX0pLG49dGhpcy5fb3ZlcmxheS5jcmVhdGUodGhpcy5fZ2V0T3ZlcmxheUNvbmZpZygpKSx0aGlzLl9vdmVybGF5UmVmPW4sbi5rZXlkb3duRXZlbnRzKCkuc3Vic2NyaWJlKCh0PT57KHQua2V5Q29kZT09PUtJJiYhdEgodCl8fHQua2V5Q29kZT09PVFJJiZ0SCh0LCJhbHRLZXkiKSkmJih0aGlzLl9yZXNldEFjdGl2ZUl0ZW0oKSx0aGlzLl9jbG9zZUtleUV2ZW50U3RyZWFtLm5leHQoKSx0LnN0b3BQcm9wYWdhdGlvbigpLHQucHJldmVudERlZmF1bHQoKSl9KSksdGhpcy5fdmlld3BvcnRTdWJzY3JpcHRpb249dGhpcy5fdmlld3BvcnRSdWxlci5jaGFuZ2UoKS5zdWJzY3JpYmUoKCgpPT57dGhpcy5wYW5lbE9wZW4mJm4mJm4udXBkYXRlU2l6ZSh7d2lkdGg6dGhpcy5fZ2V0UGFuZWxXaWR0aCgpfSl9KSkpLG4mJiFuLmhhc0F0dGFjaGVkKCkmJihuLmF0dGFjaCh0aGlzLl9wb3J0YWwpLHRoaXMuX2Nsb3NpbmdBY3Rpb25zU3Vic2NyaXB0aW9uPXRoaXMuX3N1YnNjcmliZVRvQ2xvc2luZ0FjdGlvbnMoKSk7Y29uc3Qgbz10aGlzLnBhbmVsT3Blbjt0aGlzLmF1dG9jb21wbGV0ZS5fc2V0VmlzaWJpbGl0eSgpLHRoaXMuYXV0b2NvbXBsZXRlLl9pc09wZW49dGhpcy5fb3ZlcmxheUF0dGFjaGVkPSEwLHRoaXMucGFuZWxPcGVuJiZvIT09dGhpcy5wYW5lbE9wZW4mJnRoaXMuYXV0b2NvbXBsZXRlLm9wZW5lZC5lbWl0KCl9X2dldE92ZXJsYXlDb25maWcoKXt2YXIgdDtyZXR1cm4gbmV3IHdCKHtwb3NpdGlvblN0cmF0ZWd5OnRoaXMuX2dldE92ZXJsYXlQb3NpdGlvbigpLHNjcm9sbFN0cmF0ZWd5OnRoaXMuX3Njcm9sbFN0cmF0ZWd5KCksd2lkdGg6dGhpcy5fZ2V0UGFuZWxXaWR0aCgpLGRpcmVjdGlvbjp0aGlzLl9kaXIscGFuZWxDbGFzczpudWxsPT09KHQ9dGhpcy5fZGVmYXVsdHMpfHx2b2lkIDA9PT10P3ZvaWQgMDp0Lm92ZXJsYXlQYW5lbENsYXNzfSl9X2dldE92ZXJsYXlQb3NpdGlvbigpe2NvbnN0IHQ9dGhpcy5fb3ZlcmxheS5wb3NpdGlvbigpLmZsZXhpYmxlQ29ubmVjdGVkVG8odGhpcy5fZ2V0Q29ubmVjdGVkRWxlbWVudCgpKS53aXRoRmxleGlibGVEaW1lbnNpb25zKCExKS53aXRoUHVzaCghMSk7cmV0dXJuIHRoaXMuX3NldFN0cmF0ZWd5UG9zaXRpb25zKHQpLHRoaXMuX3Bvc2l0aW9uU3RyYXRlZ3k9dCx0fV9zZXRTdHJhdGVneVBvc2l0aW9ucyh0KXtjb25zdCBlPVt7b3JpZ2luWDoic3RhcnQiLG9yaWdpblk6ImJvdHRvbSIsb3ZlcmxheVg6InN0YXJ0IixvdmVybGF5WToidG9wIn0se29yaWdpblg6ImVuZCIsb3JpZ2luWToiYm90dG9tIixvdmVybGF5WDoiZW5kIixvdmVybGF5WToidG9wIn1dLG49dGhpcy5fYWJvdmVDbGFzcyxvPVt7b3JpZ2luWDoic3RhcnQiLG9yaWdpblk6InRvcCIsb3ZlcmxheVg6InN0YXJ0IixvdmVybGF5WToiYm90dG9tIixwYW5lbENsYXNzOm59LHtvcmlnaW5YOiJlbmQiLG9yaWdpblk6InRvcCIsb3ZlcmxheVg6ImVuZCIsb3ZlcmxheVk6ImJvdHRvbSIscGFuZWxDbGFzczpufV07bGV0IGk7aT0iYWJvdmUiPT09dGhpcy5wb3NpdGlvbj9vOiJiZWxvdyI9PT10aGlzLnBvc2l0aW9uP2U6Wy4uLmUsLi4ub10sdC53aXRoUG9zaXRpb25zKGkpfV9nZXRDb25uZWN0ZWRFbGVtZW50KCl7cmV0dXJuIHRoaXMuY29ubmVjdGVkVG8/dGhpcy5jb25uZWN0ZWRUby5lbGVtZW50UmVmOnRoaXMuX2Zvcm1GaWVsZD90aGlzLl9mb3JtRmllbGQuZ2V0Q29ubmVjdGVkT3ZlcmxheU9yaWdpbigpOnRoaXMuX2VsZW1lbnR9X2dldFBhbmVsV2lkdGgoKXtyZXR1cm4gdGhpcy5hdXRvY29tcGxldGUucGFuZWxXaWR0aHx8dGhpcy5fZ2V0SG9zdFdpZHRoKCl9X2dldEhvc3RXaWR0aCgpe3JldHVybiB0aGlzLl9nZXRDb25uZWN0ZWRFbGVtZW50KCkubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aH1fcmVzZXRBY3RpdmVJdGVtKCl7Y29uc3QgdD10aGlzLmF1dG9jb21wbGV0ZTt0LmF1dG9BY3RpdmVGaXJzdE9wdGlvbj90Ll9rZXlNYW5hZ2VyLnNldEZpcnN0SXRlbUFjdGl2ZSgpOnQuX2tleU1hbmFnZXIuc2V0QWN0aXZlSXRlbSgtMSl9X2Nhbk9wZW4oKXtjb25zdCB0PXRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudDtyZXR1cm4hdC5yZWFkT25seSYmIXQuZGlzYWJsZWQmJiF0aGlzLl9hdXRvY29tcGxldGVEaXNhYmxlZH1fZ2V0V2luZG93KCl7dmFyIHQ7cmV0dXJuKG51bGw9PT0odD10aGlzLl9kb2N1bWVudCl8fHZvaWQgMD09PXQ/dm9pZCAwOnQuZGVmYXVsdFZpZXcpfHx3aW5kb3d9X3Njcm9sbFRvT3B0aW9uKHQpe2NvbnN0IGU9dGhpcy5hdXRvY29tcGxldGUsbj13TCh0LGUub3B0aW9ucyxlLm9wdGlvbkdyb3Vwcyk7aWYoMD09PXQmJjE9PT1uKWUuX3NldFNjcm9sbFRvcCgwKTtlbHNlIGlmKGUucGFuZWwpe2NvbnN0IG49ZS5vcHRpb25zLnRvQXJyYXkoKVt0XTtpZihuKXtjb25zdCB0PW4uX2dldEhvc3RFbGVtZW50KCksbz1rTCh0Lm9mZnNldFRvcCx0Lm9mZnNldEhlaWdodCxlLl9nZXRTY3JvbGxUb3AoKSxlLnBhbmVsLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0KTtlLl9zZXRTY3JvbGxUb3Aobyl9fX19RzMuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEczKShnZihLaCksZ2YoS0IpLGdmKEZiKSxnZihtQyksZ2YoT2IpLGdmKFYzKSxnZih2Riw4KSxnZih5VSw5KSxnZihzTSw4KSxnZihRTCksZ2YoejMsOCkpfSxHMy7JtWRpcj1obyh7dHlwZTpHMyxpbnB1dHM6e3Bvc2l0aW9uOlsibWF0QXV0b2NvbXBsZXRlUG9zaXRpb24iLCJwb3NpdGlvbiJdLGF1dG9jb21wbGV0ZUF0dHJpYnV0ZTpbImF1dG9jb21wbGV0ZSIsImF1dG9jb21wbGV0ZUF0dHJpYnV0ZSJdLGF1dG9jb21wbGV0ZURpc2FibGVkOlsibWF0QXV0b2NvbXBsZXRlRGlzYWJsZWQiLCJhdXRvY29tcGxldGVEaXNhYmxlZCJdLGF1dG9jb21wbGV0ZTpbIm1hdEF1dG9jb21wbGV0ZSIsImF1dG9jb21wbGV0ZSJdLGNvbm5lY3RlZFRvOlsibWF0QXV0b2NvbXBsZXRlQ29ubmVjdGVkVG8iLCJjb25uZWN0ZWRUbyJdfSxmZWF0dXJlczpbcW9dfSksRzMuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpLaH0se3R5cGU6S0J9LHt0eXBlOkZifSx7dHlwZTptQ30se3R5cGU6T2J9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltWM119XX0se3R5cGU6dkYsZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX0se3R5cGU6X1UsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W3lVXX0se3R5cGU6VXJ9XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltzTV19XX0se3R5cGU6UUx9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbejNdfV19XSxHMy5wcm9wRGVjb3JhdG9ycz17YXV0b2NvbXBsZXRlOlt7dHlwZTpSXyxhcmdzOlsibWF0QXV0b2NvbXBsZXRlIl19XSxwb3NpdGlvbjpbe3R5cGU6Ul8sYXJnczpbIm1hdEF1dG9jb21wbGV0ZVBvc2l0aW9uIl19XSxjb25uZWN0ZWRUbzpbe3R5cGU6Ul8sYXJnczpbIm1hdEF1dG9jb21wbGV0ZUNvbm5lY3RlZFRvIl19XSxhdXRvY29tcGxldGVBdHRyaWJ1dGU6W3t0eXBlOlJfLGFyZ3M6WyJhdXRvY29tcGxldGUiXX1dLGF1dG9jb21wbGV0ZURpc2FibGVkOlt7dHlwZTpSXyxhcmdzOlsibWF0QXV0b2NvbXBsZXRlRGlzYWJsZWQiXX1dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEczLFt7dHlwZTprX31dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpLaH0se3R5cGU6S0J9LHt0eXBlOkZifSx7dHlwZTptQ30se3R5cGU6T2J9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltWM119XX0se3R5cGU6dkYsZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX0se3R5cGU6X1UsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W3lVXX0se3R5cGU6VXJ9XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltzTV19XX0se3R5cGU6UUx9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbejNdfV19XX0pLHtwb3NpdGlvbjpbe3R5cGU6Ul8sYXJnczpbIm1hdEF1dG9jb21wbGV0ZVBvc2l0aW9uIl19XSxhdXRvY29tcGxldGVBdHRyaWJ1dGU6W3t0eXBlOlJfLGFyZ3M6WyJhdXRvY29tcGxldGUiXX1dLGF1dG9jb21wbGV0ZURpc2FibGVkOlt7dHlwZTpSXyxhcmdzOlsibWF0QXV0b2NvbXBsZXRlRGlzYWJsZWQiXX1dLGF1dG9jb21wbGV0ZTpbe3R5cGU6Ul8sYXJnczpbIm1hdEF1dG9jb21wbGV0ZSJdfV0sY29ubmVjdGVkVG86W3t0eXBlOlJfLGFyZ3M6WyJtYXRBdXRvY29tcGxldGVDb25uZWN0ZWRUbyJdfV19KTtjbGFzcyBZMyBleHRlbmRzIEcze2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9hYm92ZUNsYXNzPSJtYXQtYXV0b2NvbXBsZXRlLXBhbmVsLWFib3ZlIn19WTMuybVmYWM9KGZ1bmN0aW9uKCl7bGV0IHQ7cmV0dXJuIGZ1bmN0aW9uIGUobil7cmV0dXJuKHR8fCh0PVVhKFkzKSkpKG58fFkzKX19KSgpLFkzLsm1ZGlyPWhvKHt0eXBlOlkzLHNlbGVjdG9yczpbWyJpbnB1dCIsIm1hdEF1dG9jb21wbGV0ZSIsIiJdLFsidGV4dGFyZWEiLCJtYXRBdXRvY29tcGxldGUiLCIiXV0saG9zdEF0dHJzOlsxLCJtYXQtYXV0b2NvbXBsZXRlLXRyaWdnZXIiXSxob3N0VmFyczo3LGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MSZlJiZSZigiZm9jdXNpbiIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5faGFuZGxlRm9jdXMoKX0pKSgiYmx1ciIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5fb25Ub3VjaGVkKCl9KSkoImlucHV0IiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5faGFuZGxlSW5wdXQoZSl9KSkoImtleWRvd24iLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLl9oYW5kbGVLZXlkb3duKGUpfSkpLDImZSYmeW0oImF1dG9jb21wbGV0ZSIsbi5hdXRvY29tcGxldGVBdHRyaWJ1dGUpKCJyb2xlIixuLmF1dG9jb21wbGV0ZURpc2FibGVkP251bGw6ImNvbWJvYm94IikoImFyaWEtYXV0b2NvbXBsZXRlIixuLmF1dG9jb21wbGV0ZURpc2FibGVkP251bGw6Imxpc3QiKSgiYXJpYS1hY3RpdmVkZXNjZW5kYW50IixuLnBhbmVsT3BlbiYmbi5hY3RpdmVPcHRpb24/bi5hY3RpdmVPcHRpb24uaWQ6bnVsbCkoImFyaWEtZXhwYW5kZWQiLG4uYXV0b2NvbXBsZXRlRGlzYWJsZWQ/bnVsbDpuLnBhbmVsT3Blbi50b1N0cmluZygpKSgiYXJpYS1vd25zIixuLmF1dG9jb21wbGV0ZURpc2FibGVkfHwhbi5wYW5lbE9wZW58fG51bGw9PW4uYXV0b2NvbXBsZXRlP251bGw6bi5hdXRvY29tcGxldGUuaWQpKCJhcmlhLWhhc3BvcHVwIiwhbi5hdXRvY29tcGxldGVEaXNhYmxlZCl9LGV4cG9ydEFzOlsibWF0QXV0b2NvbXBsZXRlVHJpZ2dlciJdLGZlYXR1cmVzOltqaChbVzNdKSxRcF19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFkzLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6ImlucHV0W21hdEF1dG9jb21wbGV0ZV0sIHRleHRhcmVhW21hdEF1dG9jb21wbGV0ZV0iLGhvc3Q6e2NsYXNzOiJtYXQtYXV0b2NvbXBsZXRlLXRyaWdnZXIiLCJbYXR0ci5hdXRvY29tcGxldGVdIjoiYXV0b2NvbXBsZXRlQXR0cmlidXRlIiwiW2F0dHIucm9sZV0iOidhdXRvY29tcGxldGVEaXNhYmxlZCA/IG51bGwgOiAiY29tYm9ib3giJywiW2F0dHIuYXJpYS1hdXRvY29tcGxldGVdIjonYXV0b2NvbXBsZXRlRGlzYWJsZWQgPyBudWxsIDogImxpc3QiJywiW2F0dHIuYXJpYS1hY3RpdmVkZXNjZW5kYW50XSI6IihwYW5lbE9wZW4gJiYgYWN0aXZlT3B0aW9uKSA/IGFjdGl2ZU9wdGlvbi5pZCA6IG51bGwiLCJbYXR0ci5hcmlhLWV4cGFuZGVkXSI6ImF1dG9jb21wbGV0ZURpc2FibGVkID8gbnVsbCA6IHBhbmVsT3Blbi50b1N0cmluZygpIiwiW2F0dHIuYXJpYS1vd25zXSI6IihhdXRvY29tcGxldGVEaXNhYmxlZCB8fCAhcGFuZWxPcGVuKSA/IG51bGwgOiBhdXRvY29tcGxldGU/LmlkIiwiW2F0dHIuYXJpYS1oYXNwb3B1cF0iOiIhYXV0b2NvbXBsZXRlRGlzYWJsZWQiLCIoZm9jdXNpbikiOiJfaGFuZGxlRm9jdXMoKSIsIihibHVyKSI6Il9vblRvdWNoZWQoKSIsIihpbnB1dCkiOiJfaGFuZGxlSW5wdXQoJGV2ZW50KSIsIihrZXlkb3duKSI6Il9oYW5kbGVLZXlkb3duKCRldmVudCkifSxleHBvcnRBczoibWF0QXV0b2NvbXBsZXRlVHJpZ2dlciIscHJvdmlkZXJzOltXM119XX1dLG51bGwsbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBxM3t9cTMuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHEzKX0scTMuybVtb2Q9Zm8oe3R5cGU6cTN9KSxxMy7JtWluaj1Ebih7cHJvdmlkZXJzOltqM10saW1wb3J0czpbW29WLFNMLE5GLHJ4XSxvQixTTCxORl19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHEzLFt7dHlwZTpMXyxhcmdzOlt7aW1wb3J0czpbb1YsU0wsTkYscnhdLGV4cG9ydHM6W0YzLFkzLEIzLG9CLFNMLE5GXSxkZWNsYXJhdGlvbnM6W0YzLFkzLEIzXSxwcm92aWRlcnM6W2ozXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKHEzLHtkZWNsYXJhdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm5bRjMsWTMsQjNdfSxpbXBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW29WLFNMLE5GLHJ4XX0sZXhwb3J0czpmdW5jdGlvbigpe3JldHVybltGMyxZMyxCMyxvQixTTCxORl19fSk7Y2xhc3MgWjN7Y29uc3RydWN0b3IoKXt0aGlzLnZhbHVlPSIiLHRoaXMucGxhY2Vob2xkZXI9IiJ9b25JbnB1dEtleVVwKHQpeyJFbnRlciI9PT10LmtleSYmdGhpcy5hdXRvY29tcGxldGVUcmlnZ2VyLmNsb3NlUGFuZWwoKX19ZnVuY3Rpb24gWDModCxlKXtpZigxJnQmJihvYSgpLHZmKDAsImNpcmNsZSIsMykpLDImdCl7Y29uc3QgdD16ZigpO2x1KCJhbmltYXRpb24tbmFtZSIsIm1hdC1wcm9ncmVzcy1zcGlubmVyLXN0cm9rZS1yb3RhdGUtIit0Ll9zcGlubmVyQW5pbWF0aW9uTGFiZWwpKCJzdHJva2UtZGFzaG9mZnNldCIsdC5fZ2V0U3Ryb2tlRGFzaE9mZnNldCgpLCJweCIpKCJzdHJva2UtZGFzaGFycmF5Iix0Ll9nZXRTdHJva2VDaXJjdW1mZXJlbmNlKCksInB4IikoInN0cm9rZS13aWR0aCIsdC5fZ2V0Q2lyY2xlU3Ryb2tlV2lkdGgoKSwiJSIpLHltKCJyIix0Ll9nZXRDaXJjbGVSYWRpdXMoKSl9fWZ1bmN0aW9uIEszKHQsZSl7aWYoMSZ0JiYob2EoKSx2ZigwLCJjaXJjbGUiLDMpKSwyJnQpe2NvbnN0IHQ9emYoKTtsdSgic3Ryb2tlLWRhc2hvZmZzZXQiLHQuX2dldFN0cm9rZURhc2hPZmZzZXQoKSwicHgiKSgic3Ryb2tlLWRhc2hhcnJheSIsdC5fZ2V0U3Ryb2tlQ2lyY3VtZmVyZW5jZSgpLCJweCIpKCJzdHJva2Utd2lkdGgiLHQuX2dldENpcmNsZVN0cm9rZVdpZHRoKCksIiUiKSx5bSgiciIsdC5fZ2V0Q2lyY2xlUmFkaXVzKCkpfX1mdW5jdGlvbiBKMyh0LGUpe2lmKDEmdCYmKG9hKCksdmYoMCwiY2lyY2xlIiwzKSksMiZ0KXtjb25zdCB0PXpmKCk7bHUoImFuaW1hdGlvbi1uYW1lIiwibWF0LXByb2dyZXNzLXNwaW5uZXItc3Ryb2tlLXJvdGF0ZS0iK3QuX3NwaW5uZXJBbmltYXRpb25MYWJlbCkoInN0cm9rZS1kYXNob2Zmc2V0Iix0Ll9nZXRTdHJva2VEYXNoT2Zmc2V0KCksInB4IikoInN0cm9rZS1kYXNoYXJyYXkiLHQuX2dldFN0cm9rZUNpcmN1bWZlcmVuY2UoKSwicHgiKSgic3Ryb2tlLXdpZHRoIix0Ll9nZXRDaXJjbGVTdHJva2VXaWR0aCgpLCIlIikseW0oInIiLHQuX2dldENpcmNsZVJhZGl1cygpKX19ZnVuY3Rpb24gUTModCxlKXtpZigxJnQmJihvYSgpLHZmKDAsImNpcmNsZSIsMykpLDImdCl7Y29uc3QgdD16ZigpO2x1KCJzdHJva2UtZGFzaG9mZnNldCIsdC5fZ2V0U3Ryb2tlRGFzaE9mZnNldCgpLCJweCIpKCJzdHJva2UtZGFzaGFycmF5Iix0Ll9nZXRTdHJva2VDaXJjdW1mZXJlbmNlKCksInB4IikoInN0cm9rZS13aWR0aCIsdC5fZ2V0Q2lyY2xlU3Ryb2tlV2lkdGgoKSwiJSIpLHltKCJyIix0Ll9nZXRDaXJjbGVSYWRpdXMoKSl9fVozLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxaMyl9LFozLsm1Y21wPXNvKHt0eXBlOlozLHNlbGVjdG9yczpbWyJ0Yi1maWx0ZXItaW5wdXQiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJlZ5KFkzLDUpLDImZSl7bGV0IHQ7QnkodD1VeSgpKSYmKG4uYXV0b2NvbXBsZXRlVHJpZ2dlcj10LmZpcnN0KX19LGlucHV0czp7dmFsdWU6InZhbHVlIixtYXRBdXRvY29tcGxldGU6Im1hdEF1dG9jb21wbGV0ZSIscGxhY2Vob2xkZXI6InBsYWNlaG9sZGVyIn0sZGVjbHM6Mix2YXJzOjQsY29uc3RzOltbInN2Z0ljb24iLCJzZWFyY2hfMjRweCJdLFsidHlwZSIsInRleHQiLCJhdXRvY29tcGxldGUiLCJvZmYiLDMsInBsYWNlaG9sZGVyIiwibWF0QXV0b2NvbXBsZXRlIiwibWF0QXV0b2NvbXBsZXRlRGlzYWJsZWQiLCJ2YWx1ZSIsImtleXVwIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJih2ZigwLCJtYXQtaWNvbiIsMCksQ2YoMSwiaW5wdXQiLDEpLFJmKCJrZXl1cCIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25JbnB1dEtleVVwKGUpfSkpLE1mKCkpLDImZSYmKERjKDEpLGJmKCJwbGFjZWhvbGRlciIsbi5wbGFjZWhvbGRlcikoIm1hdEF1dG9jb21wbGV0ZSIsbi5tYXRBdXRvY29tcGxldGUpKCJtYXRBdXRvY29tcGxldGVEaXNhYmxlZCIsIW4ubWF0QXV0b2NvbXBsZXRlKSgidmFsdWUiLG4udmFsdWUpKX0sZGlyZWN0aXZlczpbTXEsWTNdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgdHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfVtfbmdob3N0LSVDT01QJV17ZGlzcGxheTpmbGV4O2ZvbnQtc2l6ZToxM3B4fW1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxO2ZsZXg6bm9uZTttYXJnaW4tcmlnaHQ6NXB4fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIG1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgbWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfWlucHV0W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOmluaGVyaXQ7Y2FyZXQtY29sb3I6Y3VycmVudENvbG9yO2NvbG9yOmN1cnJlbnRDb2xvcjtmb250OmluaGVyaXQ7Ym9yZGVyOm5vbmU7b3V0bGluZTpub25lO3BhZGRpbmc6MDtmbGV4LWdyb3c6MX0nXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoWjMsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoidGItZmlsdGVyLWlucHV0Iix0ZW1wbGF0ZTonXG4gICAgPG1hdC1pY29uIHN2Z0ljb249InNlYXJjaF8yNHB4Ij48L21hdC1pY29uPlxuXG4gICAgXHgzYyEtLSBOb3RlOiB0byBhbGxvdyBmYWxzeSBcJ21hdEF1dG9jb21wbGV0ZVwnIHZhbHVlcywgd2UgbmVlZCBcJ21hdEF1dG9jb21wbGV0ZURpc2FibGVkXCdcbiAgICB0byBwcmV2ZW50IHJ1bnRpbWUgZXJyb3JzLiAtLVx4M2VcbiAgICA8aW5wdXRcbiAgICAgIHR5cGU9InRleHQiXG4gICAgICBhdXRvY29tcGxldGU9Im9mZiJcbiAgICAgIFtwbGFjZWhvbGRlcl09InBsYWNlaG9sZGVyIlxuICAgICAgW21hdEF1dG9jb21wbGV0ZV09Im1hdEF1dG9jb21wbGV0ZSJcbiAgICAgIFttYXRBdXRvY29tcGxldGVEaXNhYmxlZF09IiFtYXRBdXRvY29tcGxldGUiXG4gICAgICBbdmFsdWVdPSJ2YWx1ZSJcbiAgICAgIChrZXl1cCk9Im9uSW5wdXRLZXlVcCgkZXZlbnQpIlxuICAgIC8+XG4gICcsc3R5bGVVcmxzOlsiZmlsdGVyX2lucHV0X2NvbXBvbmVudC5jc3MiXX1dfV0sbnVsbCx7dmFsdWU6W3t0eXBlOlJffV0sbWF0QXV0b2NvbXBsZXRlOlt7dHlwZTpSX31dLHBsYWNlaG9sZGVyOlt7dHlwZTpSX31dLGF1dG9jb21wbGV0ZVRyaWdnZXI6W3t0eXBlOmFyLGFyZ3M6W1kzXX1dfSk7Y29uc3QgJDM9Ii5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lcntkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlO292ZXJmbG93OmhpZGRlbn0ubWF0LXByb2dyZXNzLXNwaW5uZXIgc3Zne3Bvc2l0aW9uOmFic29sdXRlO3RyYW5zZm9ybTpyb3RhdGUoLTkwZGVnKTt0b3A6MDtsZWZ0OjA7dHJhbnNmb3JtLW9yaWdpbjpjZW50ZXI7b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXByb2dyZXNzLXNwaW5uZXIgY2lyY2xle2ZpbGw6dHJhbnNwYXJlbnQ7dHJhbnNmb3JtLW9yaWdpbjpjZW50ZXI7dHJhbnNpdGlvbjpzdHJva2UtZGFzaG9mZnNldCAyMjVtcyBsaW5lYXJ9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlLm1hdC1wcm9ncmVzcy1zcGlubmVyIGNpcmNsZXt0cmFuc2l0aW9uOm5vbmU7YW5pbWF0aW9uOm5vbmV9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXByb2dyZXNzLXNwaW5uZXIgY2lyY2xle3N0cm9rZTpjdXJyZW50Q29sb3I7c3Ryb2tlOkNhbnZhc1RleHR9Lm1hdC1wcm9ncmVzcy1zcGlubmVyLm1hdC1wcm9ncmVzcy1zcGlubmVyLWluZGV0ZXJtaW5hdGUtYW5pbWF0aW9uW21vZGU9aW5kZXRlcm1pbmF0ZV0gc3Zne2FuaW1hdGlvbjptYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1saW5lYXItcm90YXRlIDIwMDBtcyBsaW5lYXIgaW5maW5pdGV9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlLm1hdC1wcm9ncmVzcy1zcGlubmVyLm1hdC1wcm9ncmVzcy1zcGlubmVyLWluZGV0ZXJtaW5hdGUtYW5pbWF0aW9uW21vZGU9aW5kZXRlcm1pbmF0ZV0gc3Zne3RyYW5zaXRpb246bm9uZTthbmltYXRpb246bm9uZX0ubWF0LXByb2dyZXNzLXNwaW5uZXIubWF0LXByb2dyZXNzLXNwaW5uZXItaW5kZXRlcm1pbmF0ZS1hbmltYXRpb25bbW9kZT1pbmRldGVybWluYXRlXSBjaXJjbGV7dHJhbnNpdGlvbi1wcm9wZXJ0eTpzdHJva2U7YW5pbWF0aW9uLWR1cmF0aW9uOjQwMDBtczthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllcigwLjM1LCAwLCAwLjI1LCAxKTthbmltYXRpb24taXRlcmF0aW9uLWNvdW50OmluZmluaXRlfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1pbmRldGVybWluYXRlLWFuaW1hdGlvblttb2RlPWluZGV0ZXJtaW5hdGVdIGNpcmNsZXt0cmFuc2l0aW9uOm5vbmU7YW5pbWF0aW9uOm5vbmV9Lm1hdC1wcm9ncmVzcy1zcGlubmVyLm1hdC1wcm9ncmVzcy1zcGlubmVyLWluZGV0ZXJtaW5hdGUtZmFsbGJhY2stYW5pbWF0aW9uW21vZGU9aW5kZXRlcm1pbmF0ZV0gc3Zne2FuaW1hdGlvbjptYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1zdHJva2Utcm90YXRlLWZhbGxiYWNrIDEwMDAwbXMgY3ViaWMtYmV6aWVyKDAuODcsIDAuMDMsIDAuMzMsIDEpIGluZmluaXRlfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1pbmRldGVybWluYXRlLWZhbGxiYWNrLWFuaW1hdGlvblttb2RlPWluZGV0ZXJtaW5hdGVdIHN2Z3t0cmFuc2l0aW9uOm5vbmU7YW5pbWF0aW9uOm5vbmV9Lm1hdC1wcm9ncmVzcy1zcGlubmVyLm1hdC1wcm9ncmVzcy1zcGlubmVyLWluZGV0ZXJtaW5hdGUtZmFsbGJhY2stYW5pbWF0aW9uW21vZGU9aW5kZXRlcm1pbmF0ZV0gY2lyY2xle3RyYW5zaXRpb24tcHJvcGVydHk6c3Ryb2tlfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1pbmRldGVybWluYXRlLWZhbGxiYWNrLWFuaW1hdGlvblttb2RlPWluZGV0ZXJtaW5hdGVdIGNpcmNsZXt0cmFuc2l0aW9uOm5vbmU7YW5pbWF0aW9uOm5vbmV9QGtleWZyYW1lcyBtYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1saW5lYXItcm90YXRlezAle3RyYW5zZm9ybTpyb3RhdGUoMGRlZyl9MTAwJXt0cmFuc2Zvcm06cm90YXRlKDM2MGRlZyl9fUBrZXlmcmFtZXMgbWF0LXByb2dyZXNzLXNwaW5uZXItc3Ryb2tlLXJvdGF0ZS0xMDB7MCV7c3Ryb2tlLWRhc2hvZmZzZXQ6MjY4LjYwNjE3MTU3NXB4O3RyYW5zZm9ybTpyb3RhdGUoMCl9MTIuNSV7c3Ryb2tlLWRhc2hvZmZzZXQ6NTYuNTQ4NjY3N3B4O3RyYW5zZm9ybTpyb3RhdGUoMCl9MTIuNTAwMSV7c3Ryb2tlLWRhc2hvZmZzZXQ6NTYuNTQ4NjY3N3B4O3RyYW5zZm9ybTpyb3RhdGVYKDE4MGRlZykgcm90YXRlKDcyLjVkZWcpfTI1JXtzdHJva2UtZGFzaG9mZnNldDoyNjguNjA2MTcxNTc1cHg7dHJhbnNmb3JtOnJvdGF0ZVgoMTgwZGVnKSByb3RhdGUoNzIuNWRlZyl9MjUuMDAwMSV7c3Ryb2tlLWRhc2hvZmZzZXQ6MjY4LjYwNjE3MTU3NXB4O3RyYW5zZm9ybTpyb3RhdGUoMjcwZGVnKX0zNy41JXtzdHJva2UtZGFzaG9mZnNldDo1Ni41NDg2Njc3cHg7dHJhbnNmb3JtOnJvdGF0ZSgyNzBkZWcpfTM3LjUwMDEle3N0cm9rZS1kYXNob2Zmc2V0OjU2LjU0ODY2NzdweDt0cmFuc2Zvcm06cm90YXRlWCgxODBkZWcpIHJvdGF0ZSgxNjEuNWRlZyl9NTAle3N0cm9rZS1kYXNob2Zmc2V0OjI2OC42MDYxNzE1NzVweDt0cmFuc2Zvcm06cm90YXRlWCgxODBkZWcpIHJvdGF0ZSgxNjEuNWRlZyl9NTAuMDAwMSV7c3Ryb2tlLWRhc2hvZmZzZXQ6MjY4LjYwNjE3MTU3NXB4O3RyYW5zZm9ybTpyb3RhdGUoMTgwZGVnKX02Mi41JXtzdHJva2UtZGFzaG9mZnNldDo1Ni41NDg2Njc3cHg7dHJhbnNmb3JtOnJvdGF0ZSgxODBkZWcpfTYyLjUwMDEle3N0cm9rZS1kYXNob2Zmc2V0OjU2LjU0ODY2NzdweDt0cmFuc2Zvcm06cm90YXRlWCgxODBkZWcpIHJvdGF0ZSgyNTEuNWRlZyl9NzUle3N0cm9rZS1kYXNob2Zmc2V0OjI2OC42MDYxNzE1NzVweDt0cmFuc2Zvcm06cm90YXRlWCgxODBkZWcpIHJvdGF0ZSgyNTEuNWRlZyl9NzUuMDAwMSV7c3Ryb2tlLWRhc2hvZmZzZXQ6MjY4LjYwNjE3MTU3NXB4O3RyYW5zZm9ybTpyb3RhdGUoOTBkZWcpfTg3LjUle3N0cm9rZS1kYXNob2Zmc2V0OjU2LjU0ODY2NzdweDt0cmFuc2Zvcm06cm90YXRlKDkwZGVnKX04Ny41MDAxJXtzdHJva2UtZGFzaG9mZnNldDo1Ni41NDg2Njc3cHg7dHJhbnNmb3JtOnJvdGF0ZVgoMTgwZGVnKSByb3RhdGUoMzQxLjVkZWcpfTEwMCV7c3Ryb2tlLWRhc2hvZmZzZXQ6MjY4LjYwNjE3MTU3NXB4O3RyYW5zZm9ybTpyb3RhdGVYKDE4MGRlZykgcm90YXRlKDM0MS41ZGVnKX19QGtleWZyYW1lcyBtYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1zdHJva2Utcm90YXRlLWZhbGxiYWNrezAle3RyYW5zZm9ybTpyb3RhdGUoMGRlZyl9MjUle3RyYW5zZm9ybTpyb3RhdGUoMTE3MGRlZyl9NTAle3RyYW5zZm9ybTpyb3RhdGUoMjM0MGRlZyl9NzUle3RyYW5zZm9ybTpyb3RhdGUoMzUxMGRlZyl9MTAwJXt0cmFuc2Zvcm06cm90YXRlKDQ2ODBkZWcpfX1cbiIsdDI9SUYoY2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy5fZWxlbWVudFJlZj10fX0sInByaW1hcnkiKSxlMj1uZXcgZXIoIm1hdC1wcm9ncmVzcy1zcGlubmVyLWRlZmF1bHQtb3B0aW9ucyIse3Byb3ZpZGVkSW46InJvb3QiLGZhY3Rvcnk6ZnVuY3Rpb24gbjIoKXtyZXR1cm57ZGlhbWV0ZXI6MTAwfX19KTtjb25zdCBvMj0iXG4gQGtleWZyYW1lcyBtYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1zdHJva2Utcm90YXRlLURJQU1FVEVSIHtcbiAgICAwJSAgICAgIHsgc3Ryb2tlLWRhc2hvZmZzZXQ6IFNUQVJUX1ZBTFVFOyAgdHJhbnNmb3JtOiByb3RhdGUoMCk7IH1cbiAgICAxMi41JSAgIHsgc3Ryb2tlLWRhc2hvZmZzZXQ6IEVORF9WQUxVRTsgICAgdHJhbnNmb3JtOiByb3RhdGUoMCk7IH1cbiAgICAxMi41MDAxJSAgeyBzdHJva2UtZGFzaG9mZnNldDogRU5EX1ZBTFVFOyAgICB0cmFuc2Zvcm06IHJvdGF0ZVgoMTgwZGVnKSByb3RhdGUoNzIuNWRlZyk7IH1cbiAgICAyNSUgICAgIHsgc3Ryb2tlLWRhc2hvZmZzZXQ6IFNUQVJUX1ZBTFVFOyAgdHJhbnNmb3JtOiByb3RhdGVYKDE4MGRlZykgcm90YXRlKDcyLjVkZWcpOyB9XG5cbiAgICAyNS4wMDAxJSAgIHsgc3Ryb2tlLWRhc2hvZmZzZXQ6IFNUQVJUX1ZBTFVFOyAgdHJhbnNmb3JtOiByb3RhdGUoMjcwZGVnKTsgfVxuICAgIDM3LjUlICAgeyBzdHJva2UtZGFzaG9mZnNldDogRU5EX1ZBTFVFOyAgICB0cmFuc2Zvcm06IHJvdGF0ZSgyNzBkZWcpOyB9XG4gICAgMzcuNTAwMSUgIHsgc3Ryb2tlLWRhc2hvZmZzZXQ6IEVORF9WQUxVRTsgICAgdHJhbnNmb3JtOiByb3RhdGVYKDE4MGRlZykgcm90YXRlKDE2MS41ZGVnKTsgfVxuICAgIDUwJSAgICAgeyBzdHJva2UtZGFzaG9mZnNldDogU1RBUlRfVkFMVUU7ICB0cmFuc2Zvcm06IHJvdGF0ZVgoMTgwZGVnKSByb3RhdGUoMTYxLjVkZWcpOyB9XG5cbiAgICA1MC4wMDAxJSAgeyBzdHJva2UtZGFzaG9mZnNldDogU1RBUlRfVkFMVUU7ICB0cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpOyB9XG4gICAgNjIuNSUgICB7IHN0cm9rZS1kYXNob2Zmc2V0OiBFTkRfVkFMVUU7ICAgIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7IH1cbiAgICA2Mi41MDAxJSAgeyBzdHJva2UtZGFzaG9mZnNldDogRU5EX1ZBTFVFOyAgICB0cmFuc2Zvcm06IHJvdGF0ZVgoMTgwZGVnKSByb3RhdGUoMjUxLjVkZWcpOyB9XG4gICAgNzUlICAgICB7IHN0cm9rZS1kYXNob2Zmc2V0OiBTVEFSVF9WQUxVRTsgIHRyYW5zZm9ybTogcm90YXRlWCgxODBkZWcpIHJvdGF0ZSgyNTEuNWRlZyk7IH1cblxuICAgIDc1LjAwMDElICB7IHN0cm9rZS1kYXNob2Zmc2V0OiBTVEFSVF9WQUxVRTsgIHRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTsgfVxuICAgIDg3LjUlICAgeyBzdHJva2UtZGFzaG9mZnNldDogRU5EX1ZBTFVFOyAgICB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7IH1cbiAgICA4Ny41MDAxJSAgeyBzdHJva2UtZGFzaG9mZnNldDogRU5EX1ZBTFVFOyAgICB0cmFuc2Zvcm06IHJvdGF0ZVgoMTgwZGVnKSByb3RhdGUoMzQxLjVkZWcpOyB9XG4gICAgMTAwJSAgICB7IHN0cm9rZS1kYXNob2Zmc2V0OiBTVEFSVF9WQUxVRTsgIHRyYW5zZm9ybTogcm90YXRlWCgxODBkZWcpIHJvdGF0ZSgzNDEuNWRlZyk7IH1cbiAgfVxuIjtjbGFzcyBpMiBleHRlbmRzIHQye2NvbnN0cnVjdG9yKHQsZSxuLG8saSl7c3VwZXIodCksdGhpcy5fZG9jdW1lbnQ9bix0aGlzLl9kaWFtZXRlcj0xMDAsdGhpcy5fdmFsdWU9MCx0aGlzLl9mYWxsYmFja0FuaW1hdGlvbj0hMSx0aGlzLm1vZGU9ImRldGVybWluYXRlIjtjb25zdCBhPWkyLl9kaWFtZXRlcnM7dGhpcy5fc3Bpbm5lckFuaW1hdGlvbkxhYmVsPXRoaXMuX2dldFNwaW5uZXJBbmltYXRpb25MYWJlbCgpLGEuaGFzKG4uaGVhZCl8fGEuc2V0KG4uaGVhZCxuZXcgU2V0KFsxMDBdKSksdGhpcy5fZmFsbGJhY2tBbmltYXRpb249ZS5FREdFfHxlLlRSSURFTlQsdGhpcy5fbm9vcEFuaW1hdGlvbnM9Ik5vb3BBbmltYXRpb25zIj09PW8mJiEhaSYmIWkuX2ZvcmNlQW5pbWF0aW9ucyxpJiYoaS5kaWFtZXRlciYmKHRoaXMuZGlhbWV0ZXI9aS5kaWFtZXRlciksaS5zdHJva2VXaWR0aCYmKHRoaXMuc3Ryb2tlV2lkdGg9aS5zdHJva2VXaWR0aCkpfWdldCBkaWFtZXRlcigpe3JldHVybiB0aGlzLl9kaWFtZXRlcn1zZXQgZGlhbWV0ZXIodCl7dGhpcy5fZGlhbWV0ZXI9bkgodCksdGhpcy5fc3Bpbm5lckFuaW1hdGlvbkxhYmVsPXRoaXMuX2dldFNwaW5uZXJBbmltYXRpb25MYWJlbCgpLCF0aGlzLl9mYWxsYmFja0FuaW1hdGlvbiYmdGhpcy5fc3R5bGVSb290JiZ0aGlzLl9hdHRhY2hTdHlsZU5vZGUoKX1nZXQgc3Ryb2tlV2lkdGgoKXtyZXR1cm4gdGhpcy5fc3Ryb2tlV2lkdGh8fHRoaXMuZGlhbWV0ZXIvMTB9c2V0IHN0cm9rZVdpZHRoKHQpe3RoaXMuX3N0cm9rZVdpZHRoPW5IKHQpfWdldCB2YWx1ZSgpe3JldHVybiJkZXRlcm1pbmF0ZSI9PT10aGlzLm1vZGU/dGhpcy5fdmFsdWU6MH1zZXQgdmFsdWUodCl7dGhpcy5fdmFsdWU9TWF0aC5tYXgoMCxNYXRoLm1pbigxMDAsbkgodCkpKX1uZ09uSW5pdCgpe2NvbnN0IHQ9dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O3RoaXMuX3N0eWxlUm9vdD1DSCh0KXx8dGhpcy5fZG9jdW1lbnQuaGVhZCx0aGlzLl9hdHRhY2hTdHlsZU5vZGUoKTt0LmNsYXNzTGlzdC5hZGQoYG1hdC1wcm9ncmVzcy1zcGlubmVyLWluZGV0ZXJtaW5hdGUke3RoaXMuX2ZhbGxiYWNrQW5pbWF0aW9uPyItZmFsbGJhY2siOiIifS1hbmltYXRpb25gKX1fZ2V0Q2lyY2xlUmFkaXVzKCl7cmV0dXJuKHRoaXMuZGlhbWV0ZXItMTApLzJ9X2dldFZpZXdCb3goKXtjb25zdCB0PTIqdGhpcy5fZ2V0Q2lyY2xlUmFkaXVzKCkrdGhpcy5zdHJva2VXaWR0aDtyZXR1cm5gMCAwICR7dH0gJHt0fWB9X2dldFN0cm9rZUNpcmN1bWZlcmVuY2UoKXtyZXR1cm4gMipNYXRoLlBJKnRoaXMuX2dldENpcmNsZVJhZGl1cygpfV9nZXRTdHJva2VEYXNoT2Zmc2V0KCl7cmV0dXJuImRldGVybWluYXRlIj09PXRoaXMubW9kZT90aGlzLl9nZXRTdHJva2VDaXJjdW1mZXJlbmNlKCkqKDEwMC10aGlzLl92YWx1ZSkvMTAwOnRoaXMuX2ZhbGxiYWNrQW5pbWF0aW9uJiYiaW5kZXRlcm1pbmF0ZSI9PT10aGlzLm1vZGU/LjIqdGhpcy5fZ2V0U3Ryb2tlQ2lyY3VtZmVyZW5jZSgpOm51bGx9X2dldENpcmNsZVN0cm9rZVdpZHRoKCl7cmV0dXJuIHRoaXMuc3Ryb2tlV2lkdGgvdGhpcy5kaWFtZXRlcioxMDB9X2F0dGFjaFN0eWxlTm9kZSgpe2NvbnN0IHQ9dGhpcy5fc3R5bGVSb290LGU9dGhpcy5fZGlhbWV0ZXIsbj1pMi5fZGlhbWV0ZXJzO2xldCBvPW4uZ2V0KHQpO2lmKCFvfHwhby5oYXMoZSkpe2NvbnN0IGk9dGhpcy5fZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTtpLnNldEF0dHJpYnV0ZSgibWF0LXNwaW5uZXItYW5pbWF0aW9uIix0aGlzLl9zcGlubmVyQW5pbWF0aW9uTGFiZWwpLGkudGV4dENvbnRlbnQ9dGhpcy5fZ2V0QW5pbWF0aW9uVGV4dCgpLHQuYXBwZW5kQ2hpbGQoaSksb3x8KG89bmV3IFNldCxuLnNldCh0LG8pKSxvLmFkZChlKX19X2dldEFuaW1hdGlvblRleHQoKXtjb25zdCB0PXRoaXMuX2dldFN0cm9rZUNpcmN1bWZlcmVuY2UoKTtyZXR1cm4gbzIucmVwbGFjZSgvU1RBUlRfVkFMVUUvZywiIisuOTUqdCkucmVwbGFjZSgvRU5EX1ZBTFVFL2csIiIrLjIqdCkucmVwbGFjZSgvRElBTUVURVIvZyxgJHt0aGlzLl9zcGlubmVyQW5pbWF0aW9uTGFiZWx9YCl9X2dldFNwaW5uZXJBbmltYXRpb25MYWJlbCgpe3JldHVybiB0aGlzLmRpYW1ldGVyLnRvU3RyaW5nKCkucmVwbGFjZSgiLiIsIl8iKX19aTIuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGkyKShnZihLaCksZ2YoY0gpLGdmKHNNLDgpLGdmKGNrLDgpLGdmKGUyKSl9LGkyLsm1Y21wPXNvKHt0eXBlOmkyLHNlbGVjdG9yczpbWyJtYXQtcHJvZ3Jlc3Mtc3Bpbm5lciJdXSxob3N0QXR0cnM6WyJyb2xlIiwicHJvZ3Jlc3NiYXIiLCJ0YWJpbmRleCIsIi0xIiwxLCJtYXQtcHJvZ3Jlc3Mtc3Bpbm5lciJdLGhvc3RWYXJzOjEwLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MiZlJiYoeW0oImFyaWEtdmFsdWVtaW4iLCJkZXRlcm1pbmF0ZSI9PT1uLm1vZGU/MDpudWxsKSgiYXJpYS12YWx1ZW1heCIsImRldGVybWluYXRlIj09PW4ubW9kZT8xMDA6bnVsbCkoImFyaWEtdmFsdWVub3ciLCJkZXRlcm1pbmF0ZSI9PT1uLm1vZGU/bi52YWx1ZTpudWxsKSgibW9kZSIsbi5tb2RlKSxsdSgid2lkdGgiLG4uZGlhbWV0ZXIsInB4IikoImhlaWdodCIsbi5kaWFtZXRlciwicHgiKSxjdSgiX21hdC1hbmltYXRpb24tbm9vcGFibGUiLG4uX25vb3BBbmltYXRpb25zKSl9LGlucHV0czp7Y29sb3I6ImNvbG9yIixtb2RlOiJtb2RlIixkaWFtZXRlcjoiZGlhbWV0ZXIiLHN0cm9rZVdpZHRoOiJzdHJva2VXaWR0aCIsdmFsdWU6InZhbHVlIn0sZXhwb3J0QXM6WyJtYXRQcm9ncmVzc1NwaW5uZXIiXSxmZWF0dXJlczpbUXBdLGRlY2xzOjMsdmFyczo4LGNvbnN0czpbWyJwcmVzZXJ2ZUFzcGVjdFJhdGlvIiwieE1pZFlNaWQgbWVldCIsImZvY3VzYWJsZSIsImZhbHNlIiwiYXJpYS1oaWRkZW4iLCJ0cnVlIiwzLCJuZ1N3aXRjaCJdLFsiY3giLCI1MCUiLCJjeSIsIjUwJSIsMywiYW5pbWF0aW9uLW5hbWUiLCJzdHJva2UtZGFzaG9mZnNldCIsInN0cm9rZS1kYXNoYXJyYXkiLCJzdHJva2Utd2lkdGgiLDQsIm5nU3dpdGNoQ2FzZSJdLFsiY3giLCI1MCUiLCJjeSIsIjUwJSIsMywic3Ryb2tlLWRhc2hvZmZzZXQiLCJzdHJva2UtZGFzaGFycmF5Iiwic3Ryb2tlLXdpZHRoIiw0LCJuZ1N3aXRjaENhc2UiXSxbImN4IiwiNTAlIiwiY3kiLCI1MCUiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKG9hKCksQ2YoMCwic3ZnIiwwKSxIbSgxLFgzLDEsOSwiY2lyY2xlIiwxKSxIbSgyLEszLDEsNywiY2lyY2xlIiwyKSxNZigpKSwyJmUmJihsdSgid2lkdGgiLG4uZGlhbWV0ZXIsInB4IikoImhlaWdodCIsbi5kaWFtZXRlciwicHgiKSxiZigibmdTd2l0Y2giLCJpbmRldGVybWluYXRlIj09PW4ubW9kZSkseW0oInZpZXdCb3giLG4uX2dldFZpZXdCb3goKSksRGMoMSksYmYoIm5nU3dpdGNoQ2FzZSIsITApLERjKDEpLGJmKCJuZ1N3aXRjaENhc2UiLCExKSl9LGRpcmVjdGl2ZXM6W0R2LFJ2XSxzdHlsZXM6WyQzXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSxpMi5fZGlhbWV0ZXJzPW5ldyBXZWFrTWFwLGkyLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6S2h9LHt0eXBlOmNIfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W3NNXX1dfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W2NrXX1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbZTJdfV19XSxpMi5wcm9wRGVjb3JhdG9ycz17ZGlhbWV0ZXI6W3t0eXBlOlJffV0sc3Ryb2tlV2lkdGg6W3t0eXBlOlJffV0sbW9kZTpbe3R5cGU6Ul99XSx2YWx1ZTpbe3R5cGU6Ul99XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihpMixbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJtYXQtcHJvZ3Jlc3Mtc3Bpbm5lciIsZXhwb3J0QXM6Im1hdFByb2dyZXNzU3Bpbm5lciIsaG9zdDp7cm9sZToicHJvZ3Jlc3NiYXIiLGNsYXNzOiJtYXQtcHJvZ3Jlc3Mtc3Bpbm5lciIsdGFiaW5kZXg6Ii0xIiwiW2NsYXNzLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlXSI6Il9ub29wQW5pbWF0aW9ucyIsIltzdHlsZS53aWR0aC5weF0iOiJkaWFtZXRlciIsIltzdHlsZS5oZWlnaHQucHhdIjoiZGlhbWV0ZXIiLCJbYXR0ci5hcmlhLXZhbHVlbWluXSI6J21vZGUgPT09ICJkZXRlcm1pbmF0ZSIgPyAwIDogbnVsbCcsIlthdHRyLmFyaWEtdmFsdWVtYXhdIjonbW9kZSA9PT0gImRldGVybWluYXRlIiA/IDEwMCA6IG51bGwnLCJbYXR0ci5hcmlhLXZhbHVlbm93XSI6J21vZGUgPT09ICJkZXRlcm1pbmF0ZSIgPyB2YWx1ZSA6IG51bGwnLCJbYXR0ci5tb2RlXSI6Im1vZGUifSxpbnB1dHM6WyJjb2xvciJdLHRlbXBsYXRlOidceDNjIS0tXG4gIHByZXNlcnZlQXNwZWN0UmF0aW8gb2YgeE1pZFlNaWQgbWVldCBhcyB0aGUgY2VudGVyIG9mIHRoZSB2aWV3cG9ydCBpcyB0aGUgY2lyY2xlXCdzXG4gIGNlbnRlci4gVGhlIGNlbnRlciBvZiB0aGUgY2lyY2xlIHdpbGwgcmVtYWluIGF0IHRoZSBjZW50ZXIgb2YgdGhlIG1hdC1wcm9ncmVzcy1zcGlubmVyXG4gIGVsZW1lbnQgY29udGFpbmluZyB0aGUgU1ZHLiBgZm9jdXNhYmxlPSJmYWxzZSJgIHByZXZlbnRzIElFIGZyb20gYWxsb3dpbmcgdGhlIHVzZXIgdG9cbiAgdGFiIGludG8gdGhlIFNWRyBlbGVtZW50LlxuLS1ceDNlXG5ceDNjIS0tXG4gIEFsbCBjaGlsZHJlbiBuZWVkIHRvIGJlIGhpZGRlbiBmb3Igc2NyZWVuIHJlYWRlcnMgaW4gb3JkZXIgdG8gc3VwcG9ydCBDaHJvbWVWb3guXG4gIE1vcmUgY29udGV4dCBpbiB0aGUgaXNzdWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2NvbXBvbmVudHMvaXNzdWVzLzIyMTY1LlxuLS1ceDNlXG48c3ZnXG4gIFtzdHlsZS53aWR0aC5weF09ImRpYW1ldGVyIlxuICBbc3R5bGUuaGVpZ2h0LnB4XT0iZGlhbWV0ZXIiXG4gIFthdHRyLnZpZXdCb3hdPSJfZ2V0Vmlld0JveCgpIlxuICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCBtZWV0IlxuICBmb2N1c2FibGU9ImZhbHNlIlxuICBbbmdTd2l0Y2hdPSJtb2RlID09PSBcJ2luZGV0ZXJtaW5hdGVcJyJcbiAgYXJpYS1oaWRkZW49InRydWUiPlxuXG4gIFx4M2MhLS1cbiAgICBUZWNobmljYWxseSB3ZSBjYW4gcmV1c2UgdGhlIHNhbWUgYGNpcmNsZWAgZWxlbWVudCwgaG93ZXZlciBTYWZhcmkgaGFzIGFuIGlzc3VlIHRoYXQgYnJlYWtzXG4gICAgdGhlIFNWRyByZW5kZXJpbmcgaW4gZGV0ZXJtaW5hdGUgbW9kZSwgYWZ0ZXIgc3dpdGNoaW5nIGJldHdlZW4gaW5kZXRlcm1pbmF0ZSBhbmQgZGV0ZXJtaW5hdGUuXG4gICAgVXNpbmcgYSBkaWZmZXJlbnQgZWxlbWVudCBhdm9pZHMgdGhlIGlzc3VlLiBBbiBhbHRlcm5hdGl2ZSB0byB0aGlzIGlzIGFkZGluZyBgZGlzcGxheTogbm9uZWBcbiAgICBmb3IgYSBzcGxpdCBzZWNvbmQgYW5kIHRoZW4gcmVtb3ZpbmcgaXQgd2hlbiBzd2l0Y2hpbmcgYmV0d2VlbiBtb2RlcywgYnV0IGl0XCdzIGhhcmQgdG8ga25vd1xuICAgIGZvciBob3cgbG9uZyB0byBoaWRlIHRoZSBlbGVtZW50IGFuZCBpdCBjYW4gY2F1c2UgdGhlIFVJIHRvIGJsaW5rLlxuICAtLVx4M2VcbiAgPGNpcmNsZVxuICAgICpuZ1N3aXRjaENhc2U9InRydWUiXG4gICAgY3g9IjUwJSJcbiAgICBjeT0iNTAlIlxuICAgIFthdHRyLnJdPSJfZ2V0Q2lyY2xlUmFkaXVzKCkiXG4gICAgW3N0eWxlLmFuaW1hdGlvbi1uYW1lXT0iXCdtYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1zdHJva2Utcm90YXRlLVwnICsgX3NwaW5uZXJBbmltYXRpb25MYWJlbCJcbiAgICBbc3R5bGUuc3Ryb2tlLWRhc2hvZmZzZXQucHhdPSJfZ2V0U3Ryb2tlRGFzaE9mZnNldCgpIlxuICAgIFtzdHlsZS5zdHJva2UtZGFzaGFycmF5LnB4XT0iX2dldFN0cm9rZUNpcmN1bWZlcmVuY2UoKSJcbiAgICBbc3R5bGUuc3Ryb2tlLXdpZHRoLiVdPSJfZ2V0Q2lyY2xlU3Ryb2tlV2lkdGgoKSI+PC9jaXJjbGU+XG5cbiAgPGNpcmNsZVxuICAgICpuZ1N3aXRjaENhc2U9ImZhbHNlIlxuICAgIGN4PSI1MCUiXG4gICAgY3k9IjUwJSJcbiAgICBbYXR0ci5yXT0iX2dldENpcmNsZVJhZGl1cygpIlxuICAgIFtzdHlsZS5zdHJva2UtZGFzaG9mZnNldC5weF09Il9nZXRTdHJva2VEYXNoT2Zmc2V0KCkiXG4gICAgW3N0eWxlLnN0cm9rZS1kYXNoYXJyYXkucHhdPSJfZ2V0U3Ryb2tlQ2lyY3VtZmVyZW5jZSgpIlxuICAgIFtzdHlsZS5zdHJva2Utd2lkdGguJV09Il9nZXRDaXJjbGVTdHJva2VXaWR0aCgpIj48L2NpcmNsZT5cbjwvc3ZnPlxuJyxjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNoLGVuY2Fwc3VsYXRpb246V24uTm9uZSxzdHlsZXM6WyIubWF0LXByb2dyZXNzLXNwaW5uZXJ7ZGlzcGxheTpibG9jaztwb3NpdGlvbjpyZWxhdGl2ZTtvdmVyZmxvdzpoaWRkZW59Lm1hdC1wcm9ncmVzcy1zcGlubmVyIHN2Z3twb3NpdGlvbjphYnNvbHV0ZTt0cmFuc2Zvcm06cm90YXRlKC05MGRlZyk7dG9wOjA7bGVmdDowO3RyYW5zZm9ybS1vcmlnaW46Y2VudGVyO292ZXJmbG93OnZpc2libGV9Lm1hdC1wcm9ncmVzcy1zcGlubmVyIGNpcmNsZXtmaWxsOnRyYW5zcGFyZW50O3RyYW5zZm9ybS1vcmlnaW46Y2VudGVyO3RyYW5zaXRpb246c3Ryb2tlLWRhc2hvZmZzZXQgMjI1bXMgbGluZWFyfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lciBjaXJjbGV7dHJhbnNpdGlvbjpub25lO2FuaW1hdGlvbjpub25lfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1wcm9ncmVzcy1zcGlubmVyIGNpcmNsZXtzdHJva2U6Y3VycmVudENvbG9yO3N0cm9rZTpDYW52YXNUZXh0fS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1pbmRldGVybWluYXRlLWFuaW1hdGlvblttb2RlPWluZGV0ZXJtaW5hdGVdIHN2Z3thbmltYXRpb246bWF0LXByb2dyZXNzLXNwaW5uZXItbGluZWFyLXJvdGF0ZSAyMDAwbXMgbGluZWFyIGluZmluaXRlfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1pbmRldGVybWluYXRlLWFuaW1hdGlvblttb2RlPWluZGV0ZXJtaW5hdGVdIHN2Z3t0cmFuc2l0aW9uOm5vbmU7YW5pbWF0aW9uOm5vbmV9Lm1hdC1wcm9ncmVzcy1zcGlubmVyLm1hdC1wcm9ncmVzcy1zcGlubmVyLWluZGV0ZXJtaW5hdGUtYW5pbWF0aW9uW21vZGU9aW5kZXRlcm1pbmF0ZV0gY2lyY2xle3RyYW5zaXRpb24tcHJvcGVydHk6c3Ryb2tlO2FuaW1hdGlvbi1kdXJhdGlvbjo0MDAwbXM7YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoMC4zNSwgMCwgMC4yNSwgMSk7YW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDppbmZpbml0ZX0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LXByb2dyZXNzLXNwaW5uZXIubWF0LXByb2dyZXNzLXNwaW5uZXItaW5kZXRlcm1pbmF0ZS1hbmltYXRpb25bbW9kZT1pbmRldGVybWluYXRlXSBjaXJjbGV7dHJhbnNpdGlvbjpub25lO2FuaW1hdGlvbjpub25lfS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1pbmRldGVybWluYXRlLWZhbGxiYWNrLWFuaW1hdGlvblttb2RlPWluZGV0ZXJtaW5hdGVdIHN2Z3thbmltYXRpb246bWF0LXByb2dyZXNzLXNwaW5uZXItc3Ryb2tlLXJvdGF0ZS1mYWxsYmFjayAxMDAwMG1zIGN1YmljLWJlemllcigwLjg3LCAwLjAzLCAwLjMzLCAxKSBpbmZpbml0ZX0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LXByb2dyZXNzLXNwaW5uZXIubWF0LXByb2dyZXNzLXNwaW5uZXItaW5kZXRlcm1pbmF0ZS1mYWxsYmFjay1hbmltYXRpb25bbW9kZT1pbmRldGVybWluYXRlXSBzdmd7dHJhbnNpdGlvbjpub25lO2FuaW1hdGlvbjpub25lfS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1pbmRldGVybWluYXRlLWZhbGxiYWNrLWFuaW1hdGlvblttb2RlPWluZGV0ZXJtaW5hdGVdIGNpcmNsZXt0cmFuc2l0aW9uLXByb3BlcnR5OnN0cm9rZX0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LXByb2dyZXNzLXNwaW5uZXIubWF0LXByb2dyZXNzLXNwaW5uZXItaW5kZXRlcm1pbmF0ZS1mYWxsYmFjay1hbmltYXRpb25bbW9kZT1pbmRldGVybWluYXRlXSBjaXJjbGV7dHJhbnNpdGlvbjpub25lO2FuaW1hdGlvbjpub25lfUBrZXlmcmFtZXMgbWF0LXByb2dyZXNzLXNwaW5uZXItbGluZWFyLXJvdGF0ZXswJXt0cmFuc2Zvcm06cm90YXRlKDBkZWcpfTEwMCV7dHJhbnNmb3JtOnJvdGF0ZSgzNjBkZWcpfX1Aa2V5ZnJhbWVzIG1hdC1wcm9ncmVzcy1zcGlubmVyLXN0cm9rZS1yb3RhdGUtMTAwezAle3N0cm9rZS1kYXNob2Zmc2V0OjI2OC42MDYxNzE1NzVweDt0cmFuc2Zvcm06cm90YXRlKDApfTEyLjUle3N0cm9rZS1kYXNob2Zmc2V0OjU2LjU0ODY2NzdweDt0cmFuc2Zvcm06cm90YXRlKDApfTEyLjUwMDEle3N0cm9rZS1kYXNob2Zmc2V0OjU2LjU0ODY2NzdweDt0cmFuc2Zvcm06cm90YXRlWCgxODBkZWcpIHJvdGF0ZSg3Mi41ZGVnKX0yNSV7c3Ryb2tlLWRhc2hvZmZzZXQ6MjY4LjYwNjE3MTU3NXB4O3RyYW5zZm9ybTpyb3RhdGVYKDE4MGRlZykgcm90YXRlKDcyLjVkZWcpfTI1LjAwMDEle3N0cm9rZS1kYXNob2Zmc2V0OjI2OC42MDYxNzE1NzVweDt0cmFuc2Zvcm06cm90YXRlKDI3MGRlZyl9MzcuNSV7c3Ryb2tlLWRhc2hvZmZzZXQ6NTYuNTQ4NjY3N3B4O3RyYW5zZm9ybTpyb3RhdGUoMjcwZGVnKX0zNy41MDAxJXtzdHJva2UtZGFzaG9mZnNldDo1Ni41NDg2Njc3cHg7dHJhbnNmb3JtOnJvdGF0ZVgoMTgwZGVnKSByb3RhdGUoMTYxLjVkZWcpfTUwJXtzdHJva2UtZGFzaG9mZnNldDoyNjguNjA2MTcxNTc1cHg7dHJhbnNmb3JtOnJvdGF0ZVgoMTgwZGVnKSByb3RhdGUoMTYxLjVkZWcpfTUwLjAwMDEle3N0cm9rZS1kYXNob2Zmc2V0OjI2OC42MDYxNzE1NzVweDt0cmFuc2Zvcm06cm90YXRlKDE4MGRlZyl9NjIuNSV7c3Ryb2tlLWRhc2hvZmZzZXQ6NTYuNTQ4NjY3N3B4O3RyYW5zZm9ybTpyb3RhdGUoMTgwZGVnKX02Mi41MDAxJXtzdHJva2UtZGFzaG9mZnNldDo1Ni41NDg2Njc3cHg7dHJhbnNmb3JtOnJvdGF0ZVgoMTgwZGVnKSByb3RhdGUoMjUxLjVkZWcpfTc1JXtzdHJva2UtZGFzaG9mZnNldDoyNjguNjA2MTcxNTc1cHg7dHJhbnNmb3JtOnJvdGF0ZVgoMTgwZGVnKSByb3RhdGUoMjUxLjVkZWcpfTc1LjAwMDEle3N0cm9rZS1kYXNob2Zmc2V0OjI2OC42MDYxNzE1NzVweDt0cmFuc2Zvcm06cm90YXRlKDkwZGVnKX04Ny41JXtzdHJva2UtZGFzaG9mZnNldDo1Ni41NDg2Njc3cHg7dHJhbnNmb3JtOnJvdGF0ZSg5MGRlZyl9ODcuNTAwMSV7c3Ryb2tlLWRhc2hvZmZzZXQ6NTYuNTQ4NjY3N3B4O3RyYW5zZm9ybTpyb3RhdGVYKDE4MGRlZykgcm90YXRlKDM0MS41ZGVnKX0xMDAle3N0cm9rZS1kYXNob2Zmc2V0OjI2OC42MDYxNzE1NzVweDt0cmFuc2Zvcm06cm90YXRlWCgxODBkZWcpIHJvdGF0ZSgzNDEuNWRlZyl9fUBrZXlmcmFtZXMgbWF0LXByb2dyZXNzLXNwaW5uZXItc3Ryb2tlLXJvdGF0ZS1mYWxsYmFja3swJXt0cmFuc2Zvcm06cm90YXRlKDBkZWcpfTI1JXt0cmFuc2Zvcm06cm90YXRlKDExNzBkZWcpfTUwJXt0cmFuc2Zvcm06cm90YXRlKDIzNDBkZWcpfTc1JXt0cmFuc2Zvcm06cm90YXRlKDM1MTBkZWcpfTEwMCV7dHJhbnNmb3JtOnJvdGF0ZSg0NjgwZGVnKX19XG4iXX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOktofSx7dHlwZTpjSH0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltzTV19XX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltja119XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W2UyXX1dfV19KSx7bW9kZTpbe3R5cGU6Ul99XSxkaWFtZXRlcjpbe3R5cGU6Ul99XSxzdHJva2VXaWR0aDpbe3R5cGU6Ul99XSx2YWx1ZTpbe3R5cGU6Ul99XX0pO2NsYXNzIGEyIGV4dGVuZHMgaTJ7Y29uc3RydWN0b3IodCxlLG4sbyxpKXtzdXBlcih0LGUsbixvLGkpLHRoaXMubW9kZT0iaW5kZXRlcm1pbmF0ZSJ9fWEyLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxhMikoZ2YoS2gpLGdmKGNIKSxnZihzTSw4KSxnZihjayw4KSxnZihlMikpfSxhMi7JtWNtcD1zbyh7dHlwZTphMixzZWxlY3RvcnM6W1sibWF0LXNwaW5uZXIiXV0saG9zdEF0dHJzOlsicm9sZSIsInByb2dyZXNzYmFyIiwibW9kZSIsImluZGV0ZXJtaW5hdGUiLDEsIm1hdC1zcGlubmVyIiwibWF0LXByb2dyZXNzLXNwaW5uZXIiXSxob3N0VmFyczo2LGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MiZlJiYobHUoIndpZHRoIixuLmRpYW1ldGVyLCJweCIpKCJoZWlnaHQiLG4uZGlhbWV0ZXIsInB4IiksY3UoIl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIixuLl9ub29wQW5pbWF0aW9ucykpfSxpbnB1dHM6e2NvbG9yOiJjb2xvciJ9LGZlYXR1cmVzOltRcF0sZGVjbHM6Myx2YXJzOjgsY29uc3RzOltbInByZXNlcnZlQXNwZWN0UmF0aW8iLCJ4TWlkWU1pZCBtZWV0IiwiZm9jdXNhYmxlIiwiZmFsc2UiLCJhcmlhLWhpZGRlbiIsInRydWUiLDMsIm5nU3dpdGNoIl0sWyJjeCIsIjUwJSIsImN5IiwiNTAlIiwzLCJhbmltYXRpb24tbmFtZSIsInN0cm9rZS1kYXNob2Zmc2V0Iiwic3Ryb2tlLWRhc2hhcnJheSIsInN0cm9rZS13aWR0aCIsNCwibmdTd2l0Y2hDYXNlIl0sWyJjeCIsIjUwJSIsImN5IiwiNTAlIiwzLCJzdHJva2UtZGFzaG9mZnNldCIsInN0cm9rZS1kYXNoYXJyYXkiLCJzdHJva2Utd2lkdGgiLDQsIm5nU3dpdGNoQ2FzZSJdLFsiY3giLCI1MCUiLCJjeSIsIjUwJSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYob2EoKSxDZigwLCJzdmciLDApLEhtKDEsSjMsMSw5LCJjaXJjbGUiLDEpLEhtKDIsUTMsMSw3LCJjaXJjbGUiLDIpLE1mKCkpLDImZSYmKGx1KCJ3aWR0aCIsbi5kaWFtZXRlciwicHgiKSgiaGVpZ2h0IixuLmRpYW1ldGVyLCJweCIpLGJmKCJuZ1N3aXRjaCIsImluZGV0ZXJtaW5hdGUiPT09bi5tb2RlKSx5bSgidmlld0JveCIsbi5fZ2V0Vmlld0JveCgpKSxEYygxKSxiZigibmdTd2l0Y2hDYXNlIiwhMCksRGMoMSksYmYoIm5nU3dpdGNoQ2FzZSIsITEpKX0sZGlyZWN0aXZlczpbRHYsUnZdLHN0eWxlczpbJDNdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLGEyLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6S2h9LHt0eXBlOmNIfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W3NNXX1dfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W2NrXX1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbZTJdfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGEyLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Im1hdC1zcGlubmVyIixob3N0Ontyb2xlOiJwcm9ncmVzc2JhciIsbW9kZToiaW5kZXRlcm1pbmF0ZSIsY2xhc3M6Im1hdC1zcGlubmVyIG1hdC1wcm9ncmVzcy1zcGlubmVyIiwiW2NsYXNzLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlXSI6Il9ub29wQW5pbWF0aW9ucyIsIltzdHlsZS53aWR0aC5weF0iOiJkaWFtZXRlciIsIltzdHlsZS5oZWlnaHQucHhdIjoiZGlhbWV0ZXIifSxpbnB1dHM6WyJjb2xvciJdLHRlbXBsYXRlOidceDNjIS0tXG4gIHByZXNlcnZlQXNwZWN0UmF0aW8gb2YgeE1pZFlNaWQgbWVldCBhcyB0aGUgY2VudGVyIG9mIHRoZSB2aWV3cG9ydCBpcyB0aGUgY2lyY2xlXCdzXG4gIGNlbnRlci4gVGhlIGNlbnRlciBvZiB0aGUgY2lyY2xlIHdpbGwgcmVtYWluIGF0IHRoZSBjZW50ZXIgb2YgdGhlIG1hdC1wcm9ncmVzcy1zcGlubmVyXG4gIGVsZW1lbnQgY29udGFpbmluZyB0aGUgU1ZHLiBgZm9jdXNhYmxlPSJmYWxzZSJgIHByZXZlbnRzIElFIGZyb20gYWxsb3dpbmcgdGhlIHVzZXIgdG9cbiAgdGFiIGludG8gdGhlIFNWRyBlbGVtZW50LlxuLS1ceDNlXG5ceDNjIS0tXG4gIEFsbCBjaGlsZHJlbiBuZWVkIHRvIGJlIGhpZGRlbiBmb3Igc2NyZWVuIHJlYWRlcnMgaW4gb3JkZXIgdG8gc3VwcG9ydCBDaHJvbWVWb3guXG4gIE1vcmUgY29udGV4dCBpbiB0aGUgaXNzdWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2NvbXBvbmVudHMvaXNzdWVzLzIyMTY1LlxuLS1ceDNlXG48c3ZnXG4gIFtzdHlsZS53aWR0aC5weF09ImRpYW1ldGVyIlxuICBbc3R5bGUuaGVpZ2h0LnB4XT0iZGlhbWV0ZXIiXG4gIFthdHRyLnZpZXdCb3hdPSJfZ2V0Vmlld0JveCgpIlxuICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCBtZWV0IlxuICBmb2N1c2FibGU9ImZhbHNlIlxuICBbbmdTd2l0Y2hdPSJtb2RlID09PSBcJ2luZGV0ZXJtaW5hdGVcJyJcbiAgYXJpYS1oaWRkZW49InRydWUiPlxuXG4gIFx4M2MhLS1cbiAgICBUZWNobmljYWxseSB3ZSBjYW4gcmV1c2UgdGhlIHNhbWUgYGNpcmNsZWAgZWxlbWVudCwgaG93ZXZlciBTYWZhcmkgaGFzIGFuIGlzc3VlIHRoYXQgYnJlYWtzXG4gICAgdGhlIFNWRyByZW5kZXJpbmcgaW4gZGV0ZXJtaW5hdGUgbW9kZSwgYWZ0ZXIgc3dpdGNoaW5nIGJldHdlZW4gaW5kZXRlcm1pbmF0ZSBhbmQgZGV0ZXJtaW5hdGUuXG4gICAgVXNpbmcgYSBkaWZmZXJlbnQgZWxlbWVudCBhdm9pZHMgdGhlIGlzc3VlLiBBbiBhbHRlcm5hdGl2ZSB0byB0aGlzIGlzIGFkZGluZyBgZGlzcGxheTogbm9uZWBcbiAgICBmb3IgYSBzcGxpdCBzZWNvbmQgYW5kIHRoZW4gcmVtb3ZpbmcgaXQgd2hlbiBzd2l0Y2hpbmcgYmV0d2VlbiBtb2RlcywgYnV0IGl0XCdzIGhhcmQgdG8ga25vd1xuICAgIGZvciBob3cgbG9uZyB0byBoaWRlIHRoZSBlbGVtZW50IGFuZCBpdCBjYW4gY2F1c2UgdGhlIFVJIHRvIGJsaW5rLlxuICAtLVx4M2VcbiAgPGNpcmNsZVxuICAgICpuZ1N3aXRjaENhc2U9InRydWUiXG4gICAgY3g9IjUwJSJcbiAgICBjeT0iNTAlIlxuICAgIFthdHRyLnJdPSJfZ2V0Q2lyY2xlUmFkaXVzKCkiXG4gICAgW3N0eWxlLmFuaW1hdGlvbi1uYW1lXT0iXCdtYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1zdHJva2Utcm90YXRlLVwnICsgX3NwaW5uZXJBbmltYXRpb25MYWJlbCJcbiAgICBbc3R5bGUuc3Ryb2tlLWRhc2hvZmZzZXQucHhdPSJfZ2V0U3Ryb2tlRGFzaE9mZnNldCgpIlxuICAgIFtzdHlsZS5zdHJva2UtZGFzaGFycmF5LnB4XT0iX2dldFN0cm9rZUNpcmN1bWZlcmVuY2UoKSJcbiAgICBbc3R5bGUuc3Ryb2tlLXdpZHRoLiVdPSJfZ2V0Q2lyY2xlU3Ryb2tlV2lkdGgoKSI+PC9jaXJjbGU+XG5cbiAgPGNpcmNsZVxuICAgICpuZ1N3aXRjaENhc2U9ImZhbHNlIlxuICAgIGN4PSI1MCUiXG4gICAgY3k9IjUwJSJcbiAgICBbYXR0ci5yXT0iX2dldENpcmNsZVJhZGl1cygpIlxuICAgIFtzdHlsZS5zdHJva2UtZGFzaG9mZnNldC5weF09Il9nZXRTdHJva2VEYXNoT2Zmc2V0KCkiXG4gICAgW3N0eWxlLnN0cm9rZS1kYXNoYXJyYXkucHhdPSJfZ2V0U3Ryb2tlQ2lyY3VtZmVyZW5jZSgpIlxuICAgIFtzdHlsZS5zdHJva2Utd2lkdGguJV09Il9nZXRDaXJjbGVTdHJva2VXaWR0aCgpIj48L2NpcmNsZT5cbjwvc3ZnPlxuJyxjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNoLGVuY2Fwc3VsYXRpb246V24uTm9uZSxzdHlsZXM6WyIubWF0LXByb2dyZXNzLXNwaW5uZXJ7ZGlzcGxheTpibG9jaztwb3NpdGlvbjpyZWxhdGl2ZTtvdmVyZmxvdzpoaWRkZW59Lm1hdC1wcm9ncmVzcy1zcGlubmVyIHN2Z3twb3NpdGlvbjphYnNvbHV0ZTt0cmFuc2Zvcm06cm90YXRlKC05MGRlZyk7dG9wOjA7bGVmdDowO3RyYW5zZm9ybS1vcmlnaW46Y2VudGVyO292ZXJmbG93OnZpc2libGV9Lm1hdC1wcm9ncmVzcy1zcGlubmVyIGNpcmNsZXtmaWxsOnRyYW5zcGFyZW50O3RyYW5zZm9ybS1vcmlnaW46Y2VudGVyO3RyYW5zaXRpb246c3Ryb2tlLWRhc2hvZmZzZXQgMjI1bXMgbGluZWFyfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lciBjaXJjbGV7dHJhbnNpdGlvbjpub25lO2FuaW1hdGlvbjpub25lfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1wcm9ncmVzcy1zcGlubmVyIGNpcmNsZXtzdHJva2U6Y3VycmVudENvbG9yO3N0cm9rZTpDYW52YXNUZXh0fS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1pbmRldGVybWluYXRlLWFuaW1hdGlvblttb2RlPWluZGV0ZXJtaW5hdGVdIHN2Z3thbmltYXRpb246bWF0LXByb2dyZXNzLXNwaW5uZXItbGluZWFyLXJvdGF0ZSAyMDAwbXMgbGluZWFyIGluZmluaXRlfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1pbmRldGVybWluYXRlLWFuaW1hdGlvblttb2RlPWluZGV0ZXJtaW5hdGVdIHN2Z3t0cmFuc2l0aW9uOm5vbmU7YW5pbWF0aW9uOm5vbmV9Lm1hdC1wcm9ncmVzcy1zcGlubmVyLm1hdC1wcm9ncmVzcy1zcGlubmVyLWluZGV0ZXJtaW5hdGUtYW5pbWF0aW9uW21vZGU9aW5kZXRlcm1pbmF0ZV0gY2lyY2xle3RyYW5zaXRpb24tcHJvcGVydHk6c3Ryb2tlO2FuaW1hdGlvbi1kdXJhdGlvbjo0MDAwbXM7YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoMC4zNSwgMCwgMC4yNSwgMSk7YW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDppbmZpbml0ZX0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LXByb2dyZXNzLXNwaW5uZXIubWF0LXByb2dyZXNzLXNwaW5uZXItaW5kZXRlcm1pbmF0ZS1hbmltYXRpb25bbW9kZT1pbmRldGVybWluYXRlXSBjaXJjbGV7dHJhbnNpdGlvbjpub25lO2FuaW1hdGlvbjpub25lfS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1pbmRldGVybWluYXRlLWZhbGxiYWNrLWFuaW1hdGlvblttb2RlPWluZGV0ZXJtaW5hdGVdIHN2Z3thbmltYXRpb246bWF0LXByb2dyZXNzLXNwaW5uZXItc3Ryb2tlLXJvdGF0ZS1mYWxsYmFjayAxMDAwMG1zIGN1YmljLWJlemllcigwLjg3LCAwLjAzLCAwLjMzLCAxKSBpbmZpbml0ZX0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LXByb2dyZXNzLXNwaW5uZXIubWF0LXByb2dyZXNzLXNwaW5uZXItaW5kZXRlcm1pbmF0ZS1mYWxsYmFjay1hbmltYXRpb25bbW9kZT1pbmRldGVybWluYXRlXSBzdmd7dHJhbnNpdGlvbjpub25lO2FuaW1hdGlvbjpub25lfS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1pbmRldGVybWluYXRlLWZhbGxiYWNrLWFuaW1hdGlvblttb2RlPWluZGV0ZXJtaW5hdGVdIGNpcmNsZXt0cmFuc2l0aW9uLXByb3BlcnR5OnN0cm9rZX0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LXByb2dyZXNzLXNwaW5uZXIubWF0LXByb2dyZXNzLXNwaW5uZXItaW5kZXRlcm1pbmF0ZS1mYWxsYmFjay1hbmltYXRpb25bbW9kZT1pbmRldGVybWluYXRlXSBjaXJjbGV7dHJhbnNpdGlvbjpub25lO2FuaW1hdGlvbjpub25lfUBrZXlmcmFtZXMgbWF0LXByb2dyZXNzLXNwaW5uZXItbGluZWFyLXJvdGF0ZXswJXt0cmFuc2Zvcm06cm90YXRlKDBkZWcpfTEwMCV7dHJhbnNmb3JtOnJvdGF0ZSgzNjBkZWcpfX1Aa2V5ZnJhbWVzIG1hdC1wcm9ncmVzcy1zcGlubmVyLXN0cm9rZS1yb3RhdGUtMTAwezAle3N0cm9rZS1kYXNob2Zmc2V0OjI2OC42MDYxNzE1NzVweDt0cmFuc2Zvcm06cm90YXRlKDApfTEyLjUle3N0cm9rZS1kYXNob2Zmc2V0OjU2LjU0ODY2NzdweDt0cmFuc2Zvcm06cm90YXRlKDApfTEyLjUwMDEle3N0cm9rZS1kYXNob2Zmc2V0OjU2LjU0ODY2NzdweDt0cmFuc2Zvcm06cm90YXRlWCgxODBkZWcpIHJvdGF0ZSg3Mi41ZGVnKX0yNSV7c3Ryb2tlLWRhc2hvZmZzZXQ6MjY4LjYwNjE3MTU3NXB4O3RyYW5zZm9ybTpyb3RhdGVYKDE4MGRlZykgcm90YXRlKDcyLjVkZWcpfTI1LjAwMDEle3N0cm9rZS1kYXNob2Zmc2V0OjI2OC42MDYxNzE1NzVweDt0cmFuc2Zvcm06cm90YXRlKDI3MGRlZyl9MzcuNSV7c3Ryb2tlLWRhc2hvZmZzZXQ6NTYuNTQ4NjY3N3B4O3RyYW5zZm9ybTpyb3RhdGUoMjcwZGVnKX0zNy41MDAxJXtzdHJva2UtZGFzaG9mZnNldDo1Ni41NDg2Njc3cHg7dHJhbnNmb3JtOnJvdGF0ZVgoMTgwZGVnKSByb3RhdGUoMTYxLjVkZWcpfTUwJXtzdHJva2UtZGFzaG9mZnNldDoyNjguNjA2MTcxNTc1cHg7dHJhbnNmb3JtOnJvdGF0ZVgoMTgwZGVnKSByb3RhdGUoMTYxLjVkZWcpfTUwLjAwMDEle3N0cm9rZS1kYXNob2Zmc2V0OjI2OC42MDYxNzE1NzVweDt0cmFuc2Zvcm06cm90YXRlKDE4MGRlZyl9NjIuNSV7c3Ryb2tlLWRhc2hvZmZzZXQ6NTYuNTQ4NjY3N3B4O3RyYW5zZm9ybTpyb3RhdGUoMTgwZGVnKX02Mi41MDAxJXtzdHJva2UtZGFzaG9mZnNldDo1Ni41NDg2Njc3cHg7dHJhbnNmb3JtOnJvdGF0ZVgoMTgwZGVnKSByb3RhdGUoMjUxLjVkZWcpfTc1JXtzdHJva2UtZGFzaG9mZnNldDoyNjguNjA2MTcxNTc1cHg7dHJhbnNmb3JtOnJvdGF0ZVgoMTgwZGVnKSByb3RhdGUoMjUxLjVkZWcpfTc1LjAwMDEle3N0cm9rZS1kYXNob2Zmc2V0OjI2OC42MDYxNzE1NzVweDt0cmFuc2Zvcm06cm90YXRlKDkwZGVnKX04Ny41JXtzdHJva2UtZGFzaG9mZnNldDo1Ni41NDg2Njc3cHg7dHJhbnNmb3JtOnJvdGF0ZSg5MGRlZyl9ODcuNTAwMSV7c3Ryb2tlLWRhc2hvZmZzZXQ6NTYuNTQ4NjY3N3B4O3RyYW5zZm9ybTpyb3RhdGVYKDE4MGRlZykgcm90YXRlKDM0MS41ZGVnKX0xMDAle3N0cm9rZS1kYXNob2Zmc2V0OjI2OC42MDYxNzE1NzVweDt0cmFuc2Zvcm06cm90YXRlWCgxODBkZWcpIHJvdGF0ZSgzNDEuNWRlZyl9fUBrZXlmcmFtZXMgbWF0LXByb2dyZXNzLXNwaW5uZXItc3Ryb2tlLXJvdGF0ZS1mYWxsYmFja3swJXt0cmFuc2Zvcm06cm90YXRlKDBkZWcpfTI1JXt0cmFuc2Zvcm06cm90YXRlKDExNzBkZWcpfTUwJXt0cmFuc2Zvcm06cm90YXRlKDIzNDBkZWcpfTc1JXt0cmFuc2Zvcm06cm90YXRlKDM1MTBkZWcpfTEwMCV7dHJhbnNmb3JtOnJvdGF0ZSg0NjgwZGVnKX19XG4iXX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOktofSx7dHlwZTpjSH0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltzTV19XX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltja119XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W2UyXX1dfV19KSxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIHIye31yMi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8cjIpfSxyMi7JtW1vZD1mbyh7dHlwZTpyMn0pLHIyLsm1aW5qPURuKHtpbXBvcnRzOltbTkYscnhdLE5GXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIocjIsW3t0eXBlOkxfLGFyZ3M6W3tpbXBvcnRzOltORixyeF0sZXhwb3J0czpbaTIsYTIsTkZdLGRlY2xhcmF0aW9uczpbaTIsYTJdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8ocjIse2RlY2xhcmF0aW9uczpmdW5jdGlvbigpe3JldHVybltpMixhMl19LGltcG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bTkYscnhdfSxleHBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW2kyLGEyLE5GXX19KTtjb25zdCBzMj1bInJlZ2V4U3RyaW5nSW5wdXQiXTtmdW5jdGlvbiBsMih0LGUpe2lmKDEmdCYmKHhmKDApLENmKDEsImxpIiwyMiksUHUoMiksTWYoKSxPZigpKSwyJnQpe2NvbnN0IHQ9ZS4kaW1wbGljaXQ7RGMoMSksYmYoInRpdGxlIix0Lm5hbWUpLERjKDEpLHd1KHQubmFtZSl9fWZ1bmN0aW9uIGMyKHQsZSl7aWYoMSZ0JiYoQ2YoMCwibGkiLDIzKSxDZigxLCJlbSIpLFB1KDIpLF95KDMsIm51bWJlciIpLE1mKCksTWYoKSksMiZ0KXtjb25zdCB0PXpmKCkuJGltcGxpY2l0O0RjKDIpLGt1KCJhbmQgIixDeSgzLDEsdC5ydW5zLmxlbmd0aC01KSwiIG1vcmUiKX19ZnVuY3Rpb24gZDIodCxlKXsxJnQmJihDZigwLCJsaSIsMjQpLENmKDEsImVtIiksUHUoMiwiTm8gcnVucyBhcmUgaW4gdGhlIGdyb3VwIiksTWYoKSxNZigpKX1jb25zdCBwMj1mdW5jdGlvbih0KXtyZXR1cm57Ym9yZGVyQ29sb3I6dH19LG0yPWZ1bmN0aW9uKHQpe3JldHVybntiYWNrZ3JvdW5kQ29sb3I6dH19O2Z1bmN0aW9uIGYyKHQsZSl7aWYoMSZ0JiYoQ2YoMCwidWwiLDE2KSxDZigxLCJsaSIpLENmKDIsImxhYmVsIiksdmYoMywic3BhbiIsMTcpLENmKDQsImNvZGUiLDE4KSxQdSg1KSxNZigpLE1mKCksQ2YoNiwidWwiKSxIbSg3LGwyLDMsMiwibmctY29udGFpbmVyIiwxOSksX3koOCwic2xpY2UiKSxIbSg5LGMyLDQsMywibGkiLDIwKSxIbSgxMCxkMiwzLDAsImxpIiwyMSksTWYoKSxNZigpLE1mKCkpLDImdCl7Y29uc3QgdD1lLiRpbXBsaWNpdDtiZigibmdTdHlsZSIsaXkoMTEscDIsdC5jb2xvcikpLERjKDMpLGJmKCJuZ1N0eWxlIixpeSgxMyxtMix0LmNvbG9yKSksRGMoMSksYmYoInRpdGxlIix0Lmdyb3VwSWQpLERjKDEpLHd1KHQuZ3JvdXBJZCksRGMoMiksYmYoIm5nRm9yT2YiLHZ5KDgsNyx0LnJ1bnMsMCw1KSksRGMoMiksYmYoIm5nSWYiLHQucnVucy5sZW5ndGg+NSksRGMoMSksYmYoIm5nSWYiLDA9PT10LnJ1bnMubGVuZ3RoKX19ZnVuY3Rpb24gdTIodCxlKXtpZigxJnQmJihDZigwLCJkaXYiLDE0KSxIbSgxLGYyLDExLDE1LCJ1bCIsMTUpLE1mKCkpLDImdCl7Y29uc3QgdD16ZigyKTtEYygxKSxiZigibmdGb3JPZiIsdC5jb2xvclJ1blBhaXJMaXN0KX19ZnVuY3Rpb24gZzIodCxlKXtpZigxJnQmJihDZigwLCJkaXYiLDI1KSxQdSgxLCIgVGhlcmUgYXJlIG5vIHJ1bnMgbWF0Y2hpbmcgdGhlIHJlZ2V4LCAiKSxDZigyLCJjb2RlIiksUHUoMyksTWYoKSxQdSg0LCIuIFBsZWFzZSBjaGVjayBpZiB5b3VyIHJlZ2V4IHN0cmluZyBpcyBjb3JyZWN0LiAiKSxNZigpKSwyJnQpe2NvbnN0IHQ9emYoMik7RGMoMyksa3UoIi8iLHQucmVnZXhTdHJpbmcsIi8iKX19ZnVuY3Rpb24gaDIodCxlKXtpZigxJnQmJihDZigwLCJkaXYiLDEwKSxDZigxLCJoNCIpLFB1KDIsIkNvbG9yIGdyb3VwIHByZXZpZXciKSxNZigpLENmKDMsImRpdiIsMTEpLEhtKDQsdTIsMiwxLCJkaXYiLDEyKSxIbSg1LGcyLDUsMSwibmctdGVtcGxhdGUiLG51bGwsMTMscXkpLE1mKCksTWYoKSksMiZ0KXtjb25zdCB0PUZtKDYpLGU9emYoKTtEYyg0KSxiZigibmdJZiIsZS5jb2xvclJ1blBhaXJMaXN0Lmxlbmd0aCkoIm5nSWZFbHNlIix0KX19Y2xhc3MgYjJ7Y29uc3RydWN0b3IodCxlKXt0aGlzLmRpYWxvZ1JlZj10LHRoaXMuaG9zdEVsUmVmPWUsdGhpcy5vblNhdmU9bmV3IFN5LHRoaXMucmVnZXhJbnB1dE9uQ2hhbmdlPW5ldyBTeSx0aGlzLnRpbWVPdXRJZD0wfXJlc2V0Rm9jdXMoKXtpZighdGhpcy5ob3N0RWxSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhkb2N1bWVudC5hY3RpdmVFbGVtZW50KSl7dGhpcy5yZWdleFN0cmluZ0lucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKX19b25FbnRlcih0KXt0aGlzLm9uU2F2ZUNsaWNrKHQpLHRoaXMuZGlhbG9nUmVmLmNsb3NlKCl9b25TYXZlQ2xpY2sodCl7dGhpcy5vblNhdmUuZW1pdCh0KX1maWxsRXhhbXBsZSh0KXt0aGlzLnJlZ2V4U3RyaW5nPXQsdGhpcy5yZWdleElucHV0Q2hhbmdlKHQpfXJlZ2V4SW5wdXRDaGFuZ2UodCl7dGhpcy5yZWdleElucHV0T25DaGFuZ2UuZW1pdCh0KX1oYW5kbGVGb2N1c091dCgpe2NsZWFyVGltZW91dCh0aGlzLnRpbWVPdXRJZCksdGhpcy50aW1lT3V0SWQ9c2V0VGltZW91dCh0aGlzLnJlc2V0Rm9jdXMuYmluZCh0aGlzKSwwKX19YjIuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGIyKShnZihWWSksZ2YoS2gpKX0sYjIuybVjbXA9c28oe3R5cGU6YjIsc2VsZWN0b3JzOltbInJlZ2V4LWVkaXQtZGlhbG9nLWNvbXBvbmVudCJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmVnkoczIsNyksMiZlKXtsZXQgdDtCeSh0PVV5KCkpJiYobi5yZWdleFN0cmluZ0lucHV0PXQuZmlyc3QpfX0saW5wdXRzOntyZWdleFN0cmluZzoicmVnZXhTdHJpbmciLGNvbG9yUnVuUGFpckxpc3Q6ImNvbG9yUnVuUGFpckxpc3QifSxvdXRwdXRzOntvblNhdmU6Im9uU2F2ZSIscmVnZXhJbnB1dE9uQ2hhbmdlOiJyZWdleElucHV0T25DaGFuZ2UifSxkZWNsczozMCx2YXJzOjIsY29uc3RzOmZ1bmN0aW9uKCl7bGV0IHQ7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBuZ0kxOG5DbG9zdXJlTW9kZSYmbmdJMThuQ2xvc3VyZU1vZGUpe3Q9Z29vZy5nZXRNc2coIkNvbG9yIFJ1bnMgYnkgUmVnZXggUXVlcnkiKX1lbHNlIHQ9JGxvY2FsaXplYDpDb2xvciBSdW5zIGJ5IFJlZ2V4IFF1ZXJ54pCfMTVlZDlmNmZkMmQ0OTA2YTQ4MDNmYzEyNTVkZTNjNWRiMmM1NjUzMOKQnzkwODg5ODUxMTM5NjAzMTI4MDg6Q29sb3IgUnVucyBieSBSZWdleCBRdWVyeWA7cmV0dXJuW1sxLCJyZWdleC1lZGl0LWRpYWxvZyIsMywiZm9jdXNvdXQiXSxbIm1hdC1kaWFsb2ctdGl0bGUiLCIiXSxbIm1hdElucHV0IiwiIiwiYXJpYS1sYWJlbCIsdCwiY2RrRm9jdXNJbml0aWFsIiwiIiwzLCJ2YWx1ZSIsImtleWRvd24uZW50ZXIiLCJpbnB1dCJdLFsicmVnZXhTdHJpbmdJbnB1dCIsIiJdLFsxLCJleGFtcGxlLWRldGFpbHMiXSxbMywiY2xpY2siXSxbImNsYXNzIiwiZ3JvdXAtY29udGFpbmVyIiw0LCJuZ0lmIl0sWyJtYXQtZGlhbG9nLWFjdGlvbnMiLCIiLCJhbGlnbiIsImVuZCJdLFsibWF0LWJ1dHRvbiIsIiIsIm1hdC1kaWFsb2ctY2xvc2UiLCIiXSxbIm1hdC1yYWlzZWQtYnV0dG9uIiwiIiwiY29sb3IiLCJwcmltYXJ5IiwibWF0LWRpYWxvZy1jbG9zZSIsIiIsMywiY2xpY2siXSxbMSwiZ3JvdXAtY29udGFpbmVyIl0sWzEsImdyb3VwaW5nLXByZXZpZXciXSxbImNsYXNzIiwibWF0Y2gtY29udGFpbmVyIiw0LCJuZ0lmIiwibmdJZkVsc2UiXSxbImVtcHR5IiwiIl0sWzEsIm1hdGNoLWNvbnRhaW5lciJdLFsiY2xhc3MiLCJncm91cCIsMywibmdTdHlsZSIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWzEsImdyb3VwIiwzLCJuZ1N0eWxlIl0sWzEsImNvbG9yLXN3YXRjaCIsMywibmdTdHlsZSJdLFsxLCJncm91cC1pZCIsMywidGl0bGUiXSxbNCwibmdGb3IiLCJuZ0Zvck9mIl0sWyJjbGFzcyIsIm1vcmUiLDQsIm5nSWYiXSxbImNsYXNzIiwibm8tbWF0Y2giLDQsIm5nSWYiXSxbMywidGl0bGUiXSxbMSwibW9yZSJdLFsxLCJuby1tYXRjaCJdLFsxLCJ3YXJuaW5nIl1dfSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlKXtjb25zdCB0PXdmKCk7Q2YoMCwiZGl2IiwwKSxSZigiZm9jdXNvdXQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4uaGFuZGxlRm9jdXNPdXQoKX0pKSxDZigxLCJoMSIsMSksUHUoMiwiQ29sb3IgcnVucyBieSByZWdleCIpLE1mKCksQ2YoMywibWF0LWRpYWxvZy1jb250ZW50IiksQ2YoNCwicCIpLFB1KDUsIkVudGVyIGEgcmVnZXggd2l0aCBjYXB0dXJpbmcgZ3JvdXBzIHRvIG1hdGNoIGFnYWluc3QgcnVuIG5hbWVzOiIpLE1mKCksQ2YoNiwibWF0LWZvcm0tZmllbGQiKSxDZig3LCJpbnB1dCIsMiwzKSxSZigia2V5ZG93bi5lbnRlciIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25FbnRlcihlLnRhcmdldC52YWx1ZSl9KSkoImlucHV0IiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5yZWdleElucHV0Q2hhbmdlKGUudGFyZ2V0LnZhbHVlKX0pKSxNZigpLE1mKCksTWYoKSxDZig5LCJkaXYiLDQpLENmKDEwLCJwIiksUHUoMTEsJyBFYWNoIG1hdGNoaW5nIHJ1biB3aWxsIGJlIGFzc2lnbmVkIGEgY29sb3IgYmFzZWQgb24gdGhlICJrZXkiIGZvcm1lZCBieSBpdHMgbWF0Y2hlcyB0byB0aGUgY2FwdHVyaW5nIGdyb3Vwcy4gJyksdmYoMTIsImJyIiksQ2YoMTMsImJ1dHRvbiIsNSksUmYoImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLmZpbGxFeGFtcGxlKCIodHJhaW58ZXZhbCkiKX0pKSxQdSgxNCwiIFRyeSAiKSxDZigxNSwiY29kZSIpLFB1KDE2LCIodHJhaW58ZXZhbCkiKSxNZigpLE1mKCksUHUoMTcsIiB0byBhc3NpZ24gYWxsIHJ1bnMgY29udGFpbmluZyAiKSxDZigxOCwiY29kZSIpLFB1KDE5LCJ0cmFpbiIpLE1mKCksUHUoMjAsIiB0byBvbmUgY29sb3IgYW5kIGFsbCBydW5zIGNvbnRhaW5pbmcgIiksQ2YoMjEsImNvZGUiKSxQdSgyMiwiZXZhbCIpLE1mKCksUHUoMjMsIiB0byBhbm90aGVyIGNvbG9yLiAiKSxNZigpLE1mKCksSG0oMjQsaDIsNywyLCJkaXYiLDYpLENmKDI1LCJkaXYiLDcpLENmKDI2LCJidXR0b24iLDgpLFB1KDI3LCJDYW5jZWwiKSxNZigpLENmKDI4LCJidXR0b24iLDkpLFJmKCJjbGljayIsKGZ1bmN0aW9uIGUoKXtQaSh0KTtjb25zdCBvPUZtKDgpO3JldHVybiBuLm9uU2F2ZUNsaWNrKG8udmFsdWUpfSkpLFB1KDI5LCIgU2F2ZSAiKSxNZigpLE1mKCksTWYoKX0yJmUmJihEYyg3KSxMZigidmFsdWUiLG4ucmVnZXhTdHJpbmcpLERjKDE3KSxiZigibmdJZiIsbi5yZWdleFN0cmluZykpfSxkaXJlY3RpdmVzOltRWSwkWSxfVSxBWixQdix0cSxOTCxKWSx4dix6dl0scGlwZXM6W2l4LCR2XSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0uZXhhbXBsZS1kZXRhaWxzW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtwYWRkaW5nOjA7Ym9yZGVyOm5vbmU7Y3Vyc29yOnBvaW50ZXI7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTtjb2xvcjojMTk3NmQyfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5leGFtcGxlLWRldGFpbHNbX25nY29udGVudC0lQ09NUCVdICAgYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmV4YW1wbGUtZGV0YWlsc1tfbmdjb250ZW50LSVDT01QJV0gICBidXR0b25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM0MmE1ZjV9LmV4YW1wbGUtZGV0YWlsc1tfbmdjb250ZW50LSVDT01QJV0gICBidXR0b25bX25nY29udGVudC0lQ09NUCVdOnZpc2l0ZWR7Y29sb3I6IzdiMWZhMn1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAuZXhhbXBsZS1kZXRhaWxzW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGJ1dHRvbltfbmdjb250ZW50LSVDT01QJV06dmlzaXRlZCwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmV4YW1wbGUtZGV0YWlsc1tfbmdjb250ZW50LSVDT01QJV0gICBidXR0b25bX25nY29udGVudC0lQ09NUCVdOnZpc2l0ZWR7Y29sb3I6I2JhNjhjOH0uZ3JvdXAtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MTBweCAwfS5ncm91cC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi1ib3R0b206MTBweH0uZ3JvdXAtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC53YXJuaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxO2ZvbnQtc2l6ZTouOWVtfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5ncm91cC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdICAgLndhcm5pbmdbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuZ3JvdXAtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC53YXJuaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX0uZ3JvdXBpbmctcHJldmlld1tfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjFweCBzb2xpZCAjZWJlYmViO21heC1oZWlnaHQ6NTB2aDtvdmVyZmxvdy15OmF1dG87cGFkZGluZzoyMHB4fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5ncm91cGluZy1wcmV2aWV3W19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmdyb3VwaW5nLXByZXZpZXdbX25nY29udGVudC0lQ09NUCVde2JvcmRlcjoxcHggc29saWQgIzU1NX0ubWF0Y2gtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O2Rpc3BsYXk6Z3JpZDtmbGV4LXdyYXA6d3JhcDtnYXA6MTBweDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KDIsIG1pbm1heCg1MCUsIDFmcikpfS5jb2xvci1zd2F0Y2hbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1yYWRpdXM6NTAlO2JveC1zaGFkb3c6MCAwIDJweCAjMDAwO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2hlaWdodDoxNXB4O3dpZHRoOjE1cHh9dWxbX25nY29udGVudC0lQ09NUCVde2xpc3Qtc3R5bGUtdHlwZTpub25lO3BhZGRpbmc6MH1tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MTAwJX0uZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2JvcmRlcjoxcHggc29saWQgI2ViZWJlYjtib3JkZXItcmFkaXVzOjNweDttYXJnaW46MDtwYWRkaW5nOjEwcHh9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLmdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MXB4IHNvbGlkICM1NTV9Lmdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZWJlYmViO2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmdyaWQ7Z2FwOjEwcHg7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOm1heC1jb250ZW50IGF1dG87cGFkZGluZzo1cHggMH1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAuZ3JvdXBbX25nY29udGVudC0lQ09NUCVdICAgbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuZ3JvdXBbX25nY29udGVudC0lQ09NUCVdICAgbGFiZWxbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1ib3R0b206MXB4IHNvbGlkICM1NTV9Lmdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5ncm91cC1pZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOi45NWVtO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO3doaXRlLXNwYWNlOm5vd3JhcH0uZ3JvdXBbX25nY29udGVudC0lQ09NUCVdICAgdWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTouOWVtfS5ncm91cFtfbmdjb250ZW50LSVDT01QJV0gICB1bFtfbmdjb250ZW50LSVDT01QJV0gICBsaVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7d2hpdGUtc3BhY2U6bm93cmFwfS5ncm91cFtfbmdjb250ZW50LSVDT01QJV0gICAubW9yZVtfbmdjb250ZW50LSVDT01QJV0sIC5ncm91cFtfbmdjb250ZW50LSVDT01QJV0gICAubm8tbWF0Y2hbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjE7bWFyZ2luLXRvcDo1cHh9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLmdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tb3JlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAuZ3JvdXBbX25nY29udGVudC0lQ09NUCVdICAgLm5vLW1hdGNoW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5uby1tYXRjaFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGIyLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6InJlZ2V4LWVkaXQtZGlhbG9nLWNvbXBvbmVudCIsdGVtcGxhdGVVcmw6InJlZ2V4X2VkaXRfZGlhbG9nLm5nLmh0bWwiLHN0eWxlVXJsczpbInJlZ2V4X2VkaXRfZGlhbG9nX2NvbXBvbmVudC5jc3MiXSxjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNofV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6Vll9LHt0eXBlOktofV19KSx7cmVnZXhTdHJpbmc6W3t0eXBlOlJffV0sY29sb3JSdW5QYWlyTGlzdDpbe3R5cGU6Ul99XSxvblNhdmU6W3t0eXBlOkVffV0scmVnZXhJbnB1dE9uQ2hhbmdlOlt7dHlwZTpFX31dLHJlZ2V4U3RyaW5nSW5wdXQ6W3t0eXBlOmFyLGFyZ3M6WyJyZWdleFN0cmluZ0lucHV0Iix7c3RhdGljOiEwfV19XX0pO2NsYXNzIHkye2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLnN0b3JlPXQsdGhpcy5kaWFsb2dSZWY9ZSx0aGlzLnRlbnRhdGl2ZVJlZ2V4U3RyaW5nJD1uZXcgQix0aGlzLmdyb3VwQnlSZWdleFN0cmluZyQ9b2UoKCgpPT5wZSh0aGlzLnN0b3JlLnNlbGVjdChySSkucGlwZSh2ZSgxKSksdGhpcy50ZW50YXRpdmVSZWdleFN0cmluZyQpKSkucGlwZShCZSgiIikpLHRoaXMuY29sb3JSdW5QYWlyTGlzdCQ9b2UoKCgpPT50aGlzLmdyb3VwQnlSZWdleFN0cmluZyQucGlwZShDZSg1MDApLHVlKCh0PT57dHJ5e2NvbnN0IGU9bmV3IFJlZ0V4cCh0KTtyZXR1cm4gQm9vbGVhbihlKX1jYXRjaCh0KXtyZXR1cm4hMX19KSksX2UodGhpcy5hbGxSdW5zJCx0aGlzLnJ1bklkVG9FaWQkLHRoaXMuc3RvcmUuc2VsZWN0KGJJKSx0aGlzLnN0b3JlLnNlbGVjdChGRCkpLFZ0KCgoW3QsZSxuLG8saV0pPT57Y29uc3QgYT1Weih7a2V5Okx6LlJFR0VYLHJlZ2V4U3RyaW5nOnR9LGUsbikscj1uZXcgTWFwLHM9W107Zm9yKGNvbnN0W3QsZV1vZiBPYmplY3QuZW50cmllcyhhLm1hdGNoZXMpKXtsZXQgbj1yLmdldCh0KTtpZighbil7Y29uc3QgZT1vLmNvbG9yc1tyLnNpemUlby5jb2xvcnMubGVuZ3RoXTtuPWk/ZS5kYXJrSGV4OmUubGlnaHRIZXgsci5zZXQodCxuKX1zLnB1c2goe2dyb3VwSWQ6dCxjb2xvcjpuLHJ1bnM6ZX0pfXJldHVybiBzfSkpKSkpLnBpcGUoQmUoW10pKSx0aGlzLmV4cGVyaW1lbnRJZHM9bi5leHBlcmltZW50SWRzLHRoaXMucnVuSWRUb0VpZCQ9S3QodGhpcy5leHBlcmltZW50SWRzLm1hcCgodD0+dGhpcy5zdG9yZS5zZWxlY3QoWnose2V4cGVyaW1lbnRJZDp0fSkucGlwZShWdCgoZT0+KHtleHBlcmltZW50SWQ6dCxydW5JZHM6ZX0pKSkpKSkpLnBpcGUoVnQoKHQ9Pntjb25zdCBlPXt9O2Zvcihjb25zdHtydW5JZHM6bixleHBlcmltZW50SWQ6b31vZiB0KWZvcihjb25zdCB0IG9mIG4pZVt0XT1vO3JldHVybiBlfSkpKSx0aGlzLmFsbFJ1bnMkPUt0KHRoaXMuZXhwZXJpbWVudElkcy5tYXAoKHQ9PnRoaXMuc3RvcmUuc2VsZWN0KHF6LHtleHBlcmltZW50SWQ6dH0pKSkpLnBpcGUoVnQoKHQ9PnQuZmxhdCgpKSkpfW9uUmVnZXhJbnB1dE9uQ2hhbmdlKHQpe3RoaXMudGVudGF0aXZlUmVnZXhTdHJpbmckLm5leHQodCl9b25TYXZlKHQpe3RoaXMuc3RvcmUuZGlzcGF0Y2goeFQoe2V4cGVyaW1lbnRJZHM6dGhpcy5leHBlcmltZW50SWRzLGdyb3VwQnk6e2tleTpMei5SRUdFWCxyZWdleFN0cmluZzp0fX0pKX19ZnVuY3Rpb24gXzIodCxlKXsxJnQmJnZmKDAsIm1hdC1pY29uIiwxMSl9ZnVuY3Rpb24gQzIodCxlKXtpZigxJnQpe2NvbnN0IHQ9d2YoKTtDZigwLCJidXR0b24iLDEwKSxSZigiY2xpY2siLChmdW5jdGlvbiBlKCl7UGkodCk7Y29uc3Qgbj16ZigpO3JldHVybiBuLm9uR3JvdXBCeUNoYW5nZS5lbWl0KHtrZXk6bi5Hcm91cEJ5S2V5LkVYUEVSSU1FTlR9KX0pKSxDZigxLCJzcGFuIiksSG0oMixfMiwxLDAsIm1hdC1pY29uIiw3KSxNZigpLENmKDMsImxhYmVsIiksUHUoNCwiRXhwZXJpbWVudCIpLE1mKCksTWYoKX1pZigyJnQpe2NvbnN0IHQ9emYoKTt5bSgiYXJpYS1jaGVja2VkIix0LnNlbGVjdGVkR3JvdXBCeS5rZXk9PT10Lkdyb3VwQnlLZXkuRVhQRVJJTUVOVCksRGMoMiksYmYoIm5nSWYiLHQuc2VsZWN0ZWRHcm91cEJ5LmtleT09PXQuR3JvdXBCeUtleS5FWFBFUklNRU5UKX19ZnVuY3Rpb24gTTIodCxlKXsxJnQmJnZmKDAsIm1hdC1pY29uIiwxMSl9ZnVuY3Rpb24gdjIodCxlKXsxJnQmJnZmKDAsIm1hdC1pY29uIiwxMSl9ZnVuY3Rpb24geDIodCxlKXtpZigxJnQpe2NvbnN0IHQ9d2YoKTtDZigwLCJidXR0b24iLDEyKSxSZigiY2xpY2siLChmdW5jdGlvbiBlKCl7UGkodCk7cmV0dXJuIHpmKCkub25Hcm91cEJ5UmVnZXhDbGljaygpfSkpLENmKDEsInNwYW4iKSxIbSgyLHYyLDEsMCwibWF0LWljb24iLDcpLE1mKCksQ2YoMywibGFiZWwiKSxQdSg0LCJSZWdleCIpLE1mKCksTWYoKX1pZigyJnQpe2NvbnN0IHQ9emYoKTt5bSgiYXJpYS1jaGVja2VkIix0LnNlbGVjdGVkR3JvdXBCeS5rZXk9PT10Lkdyb3VwQnlLZXkuUkVHRVgpLERjKDIpLGJmKCJuZ0lmIix0LnNlbGVjdGVkR3JvdXBCeS5rZXk9PT10Lkdyb3VwQnlLZXkuUkVHRVgpfX1mdW5jdGlvbiBPMih0LGUpe2lmKDEmdCYmKENmKDAsImxhYmVsIiksUHUoMSksTWYoKSksMiZ0KXtjb25zdCB0PXpmKDIpO0RjKDEpLHd1KHQucmVnZXhTdHJpbmcpfX1mdW5jdGlvbiBQMih0LGUpezEmdCYmKENmKDAsImxhYmVsIiwxNyksUHUoMSwiKG5vbmUgc2V0KSIpLE1mKCkpfWZ1bmN0aW9uIHcyKHQsZSl7aWYoMSZ0KXtjb25zdCB0PXdmKCk7Q2YoMCwiYnV0dG9uIiwxMyksUmYoImNsaWNrIiwoZnVuY3Rpb24gZSgpe1BpKHQpO3JldHVybiB6ZigpLm9uUmVnZXhTdHJpbmdFZGl0KCl9KSksQ2YoMSwic3BhbiIpLHZmKDIsIm1hdC1pY29uIiwxNCksTWYoKSxIbSgzLE8yLDIsMSwibGFiZWwiLDE1KSxIbSg0LFAyLDIsMCwibGFiZWwiLDE2KSxNZigpfWlmKDImdCl7Y29uc3QgdD16ZigpO0RjKDMpLGJmKCJuZ0lmIix0LnJlZ2V4U3RyaW5nKSxEYygxKSxiZigibmdJZiIsIXQucmVnZXhTdHJpbmcpfX15Mi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8eTIpKGdmKGlTKSxnZihWWSksZ2YoVVkpKX0seTIuybVjbXA9c28oe3R5cGU6eTIsc2VsZWN0b3JzOltbInJlZ2V4LWVkaXQtZGlhbG9nIl1dLGRlY2xzOjMsdmFyczo2LGNvbnN0czpbWzMsInJlZ2V4U3RyaW5nIiwiY29sb3JSdW5QYWlyTGlzdCIsIm9uU2F2ZSIsInJlZ2V4SW5wdXRPbkNoYW5nZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoQ2YoMCwicmVnZXgtZWRpdC1kaWFsb2ctY29tcG9uZW50IiwwKSxSZigib25TYXZlIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vblNhdmUoZSl9KSkoInJlZ2V4SW5wdXRPbkNoYW5nZSIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25SZWdleElucHV0T25DaGFuZ2UoZSl9KSksX3koMSwiYXN5bmMiKSxfeSgyLCJhc3luYyIpLE1mKCkpLDImZSYmYmYoInJlZ2V4U3RyaW5nIixDeSgxLDIsbi5ncm91cEJ5UmVnZXhTdHJpbmckKSkoImNvbG9yUnVuUGFpckxpc3QiLEN5KDIsNCxuLmNvbG9yUnVuUGFpckxpc3QkKSl9LGRpcmVjdGl2ZXM6W2IyXSxwaXBlczpbVnZdLHN0eWxlczpbIltfbmdob3N0LSVDT01QJV0sIHJlZ2V4LWVkaXQtZGlhbG9nLWNvbXBvbmVudFtfbmdjb250ZW50LSVDT01QJV0ge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgIH0iXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoeTIsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoicmVnZXgtZWRpdC1kaWFsb2ciLHRlbXBsYXRlOic8cmVnZXgtZWRpdC1kaWFsb2ctY29tcG9uZW50XG4gICAgW3JlZ2V4U3RyaW5nXT0iZ3JvdXBCeVJlZ2V4U3RyaW5nJCB8IGFzeW5jIlxuICAgIFtjb2xvclJ1blBhaXJMaXN0XT0iY29sb3JSdW5QYWlyTGlzdCQgfCBhc3luYyJcbiAgICAob25TYXZlKT0ib25TYXZlKCRldmVudCkiXG4gICAgKHJlZ2V4SW5wdXRPbkNoYW5nZSk9Im9uUmVnZXhJbnB1dE9uQ2hhbmdlKCRldmVudCkiXG4gID48L3JlZ2V4LWVkaXQtZGlhbG9nLWNvbXBvbmVudD4nLHN0eWxlczpbIlxuICAgICAgOmhvc3QsXG4gICAgICByZWdleC1lZGl0LWRpYWxvZy1jb21wb25lbnQge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgIH1cbiAgICAiXX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmlTfSx7dHlwZTpWWX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W1VZXX1dfV19KSxudWxsKTtjbGFzcyBrMntjb25zdHJ1Y3Rvcih0KXt0aGlzLmRpYWxvZz10LHRoaXMuR3JvdXBCeUtleT1Meix0aGlzLm9uR3JvdXBCeUNoYW5nZT1uZXcgU3l9b25SZWdleFN0cmluZ0VkaXQoKXt0aGlzLmRpYWxvZy5vcGVuKHkyLHttYXhIZWlnaHQ6Ijk1dmgiLG1heFdpZHRoOiI4MHZ3IixkYXRhOntleHBlcmltZW50SWRzOnRoaXMuZXhwZXJpbWVudElkc319KX1vbkdyb3VwQnlSZWdleENsaWNrKCl7dGhpcy5yZWdleFN0cmluZz90aGlzLm9uR3JvdXBCeUNoYW5nZS5lbWl0KHtrZXk6THouUkVHRVgscmVnZXhTdHJpbmc6dGhpcy5yZWdleFN0cmluZ30pOnRoaXMub25SZWdleFN0cmluZ0VkaXQoKX19azIuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGsyKShnZihYWSkpfSxrMi7JtWNtcD1zbyh7dHlwZTprMixzZWxlY3RvcnM6W1sicnVucy1ncm91cC1tZW51LWJ1dHRvbi1jb21wb25lbnQiXV0saW5wdXRzOntzaG93RXhwZXJpbWVudHNHcm91cEJ5OiJzaG93RXhwZXJpbWVudHNHcm91cEJ5IixleHBlcmltZW50SWRzOiJleHBlcmltZW50SWRzIixyZWdleFN0cmluZzoicmVnZXhTdHJpbmciLHNlbGVjdGVkR3JvdXBCeToic2VsZWN0ZWRHcm91cEJ5IixzaG93R3JvdXBCeVJlZ2V4OiJzaG93R3JvdXBCeVJlZ2V4In0sb3V0cHV0czp7b25Hcm91cEJ5Q2hhbmdlOiJvbkdyb3VwQnlDaGFuZ2UifSxkZWNsczoxNCx2YXJzOjYsY29uc3RzOltbIm1hdC1pY29uLWJ1dHRvbiIsIiIsInRpdGxlIiwiQ29sb3IgcnVucyBieS4uLiIsMywibWF0TWVudVRyaWdnZXJGb3IiXSxbInN2Z0ljb24iLCJwYWxldHRlXzI0cHgiXSxbMSwicnVuLXRhYmxlLWNvbG9yLWdyb3VwLWJ5Il0sWyJncm91cEJ5TWVudSIsIm1hdE1lbnUiXSxbMSwibGFiZWwiXSxbIm1hdC1tZW51LWl0ZW0iLCIiLCJyb2xlIiwibWVudWl0ZW1yYWRpbyIsImRhdGEtdmFsdWUiLCJleHBlcmltZW50IiwzLCJjbGljayIsNCwibmdJZiJdLFsibWF0LW1lbnUtaXRlbSIsIiIsInJvbGUiLCJtZW51aXRlbXJhZGlvIiwiZGF0YS12YWx1ZSIsInJ1biIsMywiY2xpY2siXSxbInN2Z0ljb24iLCJkb25lXzI0cHgiLDQsIm5nSWYiXSxbIm1hdC1tZW51LWl0ZW0iLCIiLCJyb2xlIiwibWVudWl0ZW1yYWRpbyIsImRhdGEtdmFsdWUiLCJyZWdleCIsMywiY2xpY2siLDQsIm5nSWYiXSxbIm1hdC1tZW51LWl0ZW0iLCIiLCJyb2xlIiwibWVudWl0ZW0iLCJkYXRhLXZhbHVlIiwicmVnZXgtZWRpdCIsImNsYXNzIiwiZGlzcGxheS1yZWdleC1zdHJpbmciLDMsImNsaWNrIiw0LCJuZ0lmIl0sWyJtYXQtbWVudS1pdGVtIiwiIiwicm9sZSIsIm1lbnVpdGVtcmFkaW8iLCJkYXRhLXZhbHVlIiwiZXhwZXJpbWVudCIsMywiY2xpY2siXSxbInN2Z0ljb24iLCJkb25lXzI0cHgiXSxbIm1hdC1tZW51LWl0ZW0iLCIiLCJyb2xlIiwibWVudWl0ZW1yYWRpbyIsImRhdGEtdmFsdWUiLCJyZWdleCIsMywiY2xpY2siXSxbIm1hdC1tZW51LWl0ZW0iLCIiLCJyb2xlIiwibWVudWl0ZW0iLCJkYXRhLXZhbHVlIiwicmVnZXgtZWRpdCIsMSwiZGlzcGxheS1yZWdleC1zdHJpbmciLDMsImNsaWNrIl0sWyJzdmdJY29uIiwiZWRpdF8yNHB4Il0sWzQsIm5nSWYiXSxbImNsYXNzIiwibm9uZS1zZXQtc3RyaW5nIiw0LCJuZ0lmIl0sWzEsIm5vbmUtc2V0LXN0cmluZyJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiYoQ2YoMCwiYnV0dG9uIiwwKSx2ZigxLCJtYXQtaWNvbiIsMSksTWYoKSxDZigyLCJtYXQtbWVudSIsMiwzKSxDZig0LCJkaXYiLDQpLFB1KDUsIkNvbG9yIHJ1bnMgYnkiKSxNZigpLEhtKDYsQzIsNSwyLCJidXR0b24iLDUpLENmKDcsImJ1dHRvbiIsNiksUmYoImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uR3JvdXBCeUNoYW5nZS5lbWl0KHtrZXk6bi5Hcm91cEJ5S2V5LlJVTn0pfSkpLENmKDgsInNwYW4iKSxIbSg5LE0yLDEsMCwibWF0LWljb24iLDcpLE1mKCksQ2YoMTAsImxhYmVsIiksUHUoMTEsIlJ1biIpLE1mKCksTWYoKSxIbSgxMix4Miw1LDIsImJ1dHRvbiIsOCksSG0oMTMsdzIsNSwyLCJidXR0b24iLDkpLE1mKCkpLDImZSl7YmYoIm1hdE1lbnVUcmlnZ2VyRm9yIixGbSgzKSksRGMoNiksYmYoIm5nSWYiLG4uc2hvd0V4cGVyaW1lbnRzR3JvdXBCeSksRGMoMSkseW0oImFyaWEtY2hlY2tlZCIsbi5zZWxlY3RlZEdyb3VwQnkua2V5PT09bi5Hcm91cEJ5S2V5LlJVTiksRGMoMiksYmYoIm5nSWYiLG4uc2VsZWN0ZWRHcm91cEJ5LmtleT09PW4uR3JvdXBCeUtleS5SVU4pLERjKDMpLGJmKCJuZ0lmIixuLnNob3dHcm91cEJ5UmVnZXgpLERjKDEpLGJmKCJuZ0lmIixuLnNob3dHcm91cEJ5UmVnZXgpfX0sZGlyZWN0aXZlczpbTkwscXEsTXEsanEsUHYsSHFdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgdHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfSAgLnJ1bi10YWJsZS1jb2xvci1ncm91cC1ieXtmb250LXNpemU6MTZweH0gIC5ydW4tdGFibGUtY29sb3ItZ3JvdXAtYnkgLmxhYmVse2NvbG9yOiM2MTYxNjE7Zm9udC1zaXplOi45ZW07bWFyZ2luOjEwcHggMDtwYWRkaW5nOjAgMTZweDtwb2ludGVyLWV2ZW50czpub25lfSAgLnJ1bi10YWJsZS1jb2xvci1ncm91cC1ieSBidXR0b257ZGlzcGxheTpncmlkO2dhcDoycHggMTBweDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MjBweCBhdXRvfSAgLnJ1bi10YWJsZS1jb2xvci1ncm91cC1ieSBtYXQtaWNvbntoZWlnaHQ6MjBweDt3aWR0aDoyMHB4fSAgLnJ1bi10YWJsZS1jb2xvci1ncm91cC1ieSAuZGlzcGxheS1yZWdleC1zdHJpbmd7cGFkZGluZy1sZWZ0OjQwcHh9ICAucnVuLXRhYmxlLWNvbG9yLWdyb3VwLWJ5IC5kaXNwbGF5LXJlZ2V4LXN0cmluZyAubm9uZS1zZXQtc3RyaW5ne2NvbG9yOiM2MTYxNjF9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgICAucnVuLXRhYmxlLWNvbG9yLWdyb3VwLWJ5IC5kaXNwbGF5LXJlZ2V4LXN0cmluZyAubm9uZS1zZXQtc3RyaW5nLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAgIC5ydW4tdGFibGUtY29sb3ItZ3JvdXAtYnkgLmRpc3BsYXktcmVnZXgtc3RyaW5nIC5ub25lLXNldC1zdHJpbmd7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGsyLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6InJ1bnMtZ3JvdXAtbWVudS1idXR0b24tY29tcG9uZW50Iix0ZW1wbGF0ZVVybDoicnVuc19ncm91cF9tZW51X2J1dHRvbl9jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsicnVuc19ncm91cF9tZW51X2J1dHRvbl9jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOlhZfV19KSx7c2hvd0V4cGVyaW1lbnRzR3JvdXBCeTpbe3R5cGU6Ul99XSxleHBlcmltZW50SWRzOlt7dHlwZTpSX31dLHJlZ2V4U3RyaW5nOlt7dHlwZTpSX31dLHNlbGVjdGVkR3JvdXBCeTpbe3R5cGU6Ul99XSxzaG93R3JvdXBCeVJlZ2V4Olt7dHlwZTpSX31dLG9uR3JvdXBCeUNoYW5nZTpbe3R5cGU6RV99XX0pO2NsYXNzIFMye2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLnNob3dHcm91cEJ5UmVnZXgkPXRoaXMuc3RvcmUuc2VsZWN0KFVEKSx0aGlzLnNob3dFeHBlcmltZW50c0dyb3VwQnkkPXRoaXMuc3RvcmUuc2VsZWN0KENSKS5waXBlKFZ0KCh0PT50LmhhcyhfRC5DT01QQVJFX0VYUEVSSU1FTlQpKSkpLHRoaXMuc2VsZWN0ZWRHcm91cEJ5JD10aGlzLnN0b3JlLnNlbGVjdCgkeiksdGhpcy5ncm91cEJ5UmVnZXhTdHJpbmckPXRoaXMuc3RvcmUuc2VsZWN0KHJJKX1vbkdyb3VwQnlDaGFuZ2UodCl7dGhpcy5zdG9yZS5kaXNwYXRjaCh4VCh7ZXhwZXJpbWVudElkczp0aGlzLmV4cGVyaW1lbnRJZHMsZ3JvdXBCeTp0fSkpfX1TMi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8UzIpKGdmKGlTKSl9LFMyLsm1Y21wPXNvKHt0eXBlOlMyLHNlbGVjdG9yczpbWyJydW5zLWdyb3VwLW1lbnUtYnV0dG9uIl1dLGlucHV0czp7ZXhwZXJpbWVudElkczoiZXhwZXJpbWVudElkcyJ9LGRlY2xzOjUsdmFyczoxMyxjb25zdHM6W1szLCJyZWdleFN0cmluZyIsInNlbGVjdGVkR3JvdXBCeSIsInNob3dHcm91cEJ5UmVnZXgiLCJzaG93RXhwZXJpbWVudHNHcm91cEJ5IiwiZXhwZXJpbWVudElkcyIsIm9uR3JvdXBCeUNoYW5nZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoQ2YoMCwicnVucy1ncm91cC1tZW51LWJ1dHRvbi1jb21wb25lbnQiLDApLFJmKCJvbkdyb3VwQnlDaGFuZ2UiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uR3JvdXBCeUNoYW5nZShlKX0pKSxfeSgxLCJhc3luYyIpLF95KDIsImFzeW5jIiksX3koMywiYXN5bmMiKSxfeSg0LCJhc3luYyIpLE1mKCkpLDImZSYmYmYoInJlZ2V4U3RyaW5nIixDeSgxLDUsbi5ncm91cEJ5UmVnZXhTdHJpbmckKSkoInNlbGVjdGVkR3JvdXBCeSIsQ3koMiw3LG4uc2VsZWN0ZWRHcm91cEJ5JCkpKCJzaG93R3JvdXBCeVJlZ2V4IixDeSgzLDksbi5zaG93R3JvdXBCeVJlZ2V4JCkpKCJzaG93RXhwZXJpbWVudHNHcm91cEJ5IixDeSg0LDExLG4uc2hvd0V4cGVyaW1lbnRzR3JvdXBCeSQpKSgiZXhwZXJpbWVudElkcyIsbi5leHBlcmltZW50SWRzKX0sZGlyZWN0aXZlczpbazJdLHBpcGVzOltWdl0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihTMixbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJydW5zLWdyb3VwLW1lbnUtYnV0dG9uIix0ZW1wbGF0ZTonXG4gICAgPHJ1bnMtZ3JvdXAtbWVudS1idXR0b24tY29tcG9uZW50XG4gICAgICBbcmVnZXhTdHJpbmddPSJncm91cEJ5UmVnZXhTdHJpbmckIHwgYXN5bmMiXG4gICAgICBbc2VsZWN0ZWRHcm91cEJ5XT0ic2VsZWN0ZWRHcm91cEJ5JCB8IGFzeW5jIlxuICAgICAgW3Nob3dHcm91cEJ5UmVnZXhdPSJzaG93R3JvdXBCeVJlZ2V4JCB8IGFzeW5jIlxuICAgICAgW3Nob3dFeHBlcmltZW50c0dyb3VwQnldPSJzaG93RXhwZXJpbWVudHNHcm91cEJ5JCB8IGFzeW5jIlxuICAgICAgW2V4cGVyaW1lbnRJZHNdPSJleHBlcmltZW50SWRzIlxuICAgICAgKG9uR3JvdXBCeUNoYW5nZSk9Im9uR3JvdXBCeUNoYW5nZSgkZXZlbnQpIlxuICAgID48L3J1bnMtZ3JvdXAtbWVudS1idXR0b24tY29tcG9uZW50PlxuICAnLGNoYW5nZURldGVjdGlvbjpqbi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTppU31dfSkse2V4cGVyaW1lbnRJZHM6W3t0eXBlOlJffV19KTtjb25zdCBEMj1bImNvbnRhaW5lciJdO3ZhciBSMjshKGZ1bmN0aW9uKHQpe3RbdC5OT05FPTBdPSJOT05FIix0W3QuTEVGVD0xXT0iTEVGVCIsdFt0LlJJR0hUPTJdPSJSSUdIVCJ9KShSMnx8KFIyPXt9KSk7Y2xhc3MgRTJ7Y29uc3RydWN0b3IodCl7dGhpcy5jaGFuZ2VEZXRlY3Rvcj10LHRoaXMudGlja0NvdW50PTIwLHRoaXMudmFsdWU9bmV3IFN5LHRoaXMuUG9zaXRpb249UjIsdGhpcy5hY3RpdmVUaHVtYj1SMi5OT05FLHRoaXMub2Zmc2V0WEZyb21PcmlnaW5PZkFjdGl2ZVRodW1iPTAsdGhpcy5uZ1Vuc3Vic2NyaWJlPW5ldyBCfWdldFRodW1iUG9zaXRpb24odCl7Y29uc3QgZT10aGlzLmdldENsaXBwZWRWYWx1ZSh0KSxuPXRoaXMubWF4LXRoaXMubWluO2lmKG48PTApcmV0dXJuIjUwJSI7cmV0dXJuYCR7KGUtdGhpcy5taW4pL24qMTAwfSVgfWdldFRyYWNrV2lkdGgoKXtjb25zdCB0PXRoaXMubWF4LXRoaXMubWluO2lmKHQ8PTApcmV0dXJuIjAlIjtyZXR1cm5gJHsodGhpcy5nZXRDbGlwcGVkVmFsdWUodGhpcy51cHBlclZhbHVlKS10aGlzLmdldENsaXBwZWRWYWx1ZSh0aGlzLmxvd2VyVmFsdWUpKS90KjEwMH0lYH1nZXRDbGlwcGVkVmFsdWUodCl7cmV0dXJuIE1hdGgubWluKE1hdGgubWF4KHQsdGhpcy5taW4pLHRoaXMubWF4KX1uZ09uRGVzdHJveSgpe3RoaXMubmdVbnN1YnNjcmliZS5uZXh0KCksdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCl9bmdPbkluaXQoKXtsZShkb2N1bWVudCwibW91c2Vtb3ZlIix7cGFzc2l2ZTohMH0pLnBpcGUoamUodGhpcy5uZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKCh0PT57dGhpcy5oYW5kbGVNb3VzZU1vdmUodCl9KSksbGUoZG9jdW1lbnQsIm1vdXNldXAiLHtwYXNzaXZlOiEwfSkucGlwZShqZSh0aGlzLm5nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKHQ9Pnt0aGlzLmhhbmRsZU1vdXNlT3V0KHQpfSkpfWhhbmRsZU1vdXNlRG93bih0LGUpe3RoaXMuYWN0aXZlVGh1bWI9ZTt0aGlzLm9mZnNldFhGcm9tT3JpZ2luT2ZBY3RpdmVUaHVtYj02LXQub2Zmc2V0WH1jYWxjdWxhdGVWYWx1ZUZyb21Nb3VzZUV2ZW50KHQpe2NvbnN0e2xlZnQ6ZSxyaWdodDpufT10aGlzLmNvbnRhaW5lci5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG89dC5jbGllbnRYLWUrdGhpcy5vZmZzZXRYRnJvbU9yaWdpbk9mQWN0aXZlVGh1bWI7bGV0IGk7aWYobnVsbCE9PXRoaXMudGlja0NvdW50JiZ0aGlzLnRpY2tDb3VudD4wKXtjb25zdCB0PShuLWUpL3RoaXMudGlja0NvdW50O2k9TWF0aC5yb3VuZChvL3QpKnQvKG4tZSl9ZWxzZSBpPW8vKG4tZSk7Y29uc3QgYT10aGlzLmdldENsaXBwZWRWYWx1ZSh0aGlzLm1pbisodGhpcy5tYXgtdGhpcy5taW4pKmkpO3JldHVybiBOdW1iZXIoYS50b0ZpeGVkKDEwKSl9aGFuZGxlTW91c2VNb3ZlKHQpe2lmKHRoaXMuYWN0aXZlVGh1bWI9PT1SMi5OT05FKXJldHVybjtjb25zdCBlPXRoaXMuY2FsY3VsYXRlVmFsdWVGcm9tTW91c2VFdmVudCh0KTtsZXQgbj1bdGhpcy5sb3dlclZhbHVlLHRoaXMudXBwZXJWYWx1ZV07dGhpcy5hY3RpdmVUaHVtYj09PVIyLkxFRlQ/KGU+dGhpcy51cHBlclZhbHVlJiYodGhpcy5hY3RpdmVUaHVtYj1SMi5SSUdIVCksbj1bZSx0aGlzLnVwcGVyVmFsdWVdKTooZTx0aGlzLmxvd2VyVmFsdWUmJih0aGlzLmFjdGl2ZVRodW1iPVIyLkxFRlQpLG49W3RoaXMubG93ZXJWYWx1ZSxlXSksdGhpcy5tYXliZU5vdGlmeU5leHRWYWx1ZShuKSx0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpfW1heWJlTm90aWZ5TmV4dFZhbHVlKHQpe2NvbnN0W2Usbl09dC5zb3J0KCgodCxlKT0+dC1lKSk7dGhpcy5sb3dlclZhbHVlPT09ZSYmdGhpcy51cHBlclZhbHVlPT09bnx8dGhpcy52YWx1ZS5lbWl0KHtsb3dlclZhbHVlOmUsdXBwZXJWYWx1ZTpufSl9aGFuZGxlTW91c2VPdXQodCl7dGhpcy5hY3RpdmVUaHVtYiE9PVIyLk5PTkUmJih0aGlzLmFjdGl2ZVRodW1iPVIyLk5PTkUsdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKSl9aGFuZGxlSW5wdXRDaGFuZ2UodCxlKXtjb25zdCBuPXRoaXMuZ2V0Q2xpcHBlZFZhbHVlKE51bWJlcih0LnRhcmdldC52YWx1ZSkpO2lmKGlzTmFOKG4pKXJldHVybjtsZXQgbz1bdGhpcy5sb3dlclZhbHVlLHRoaXMudXBwZXJWYWx1ZV07bz1lPT09UjIuTEVGVD9bbix0aGlzLnVwcGVyVmFsdWVdOlt0aGlzLmxvd2VyVmFsdWUsbl0sdGhpcy5tYXliZU5vdGlmeU5leHRWYWx1ZShvKX1pc1RodW1iQWN0aXZlKHQpe3JldHVybiB0aGlzLmFjdGl2ZVRodW1iPT09dH19RTIuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEUyKShnZihPYikpfSxFMi7JtWNtcD1zbyh7dHlwZTpFMixzZWxlY3RvcnM6W1sidGItcmFuZ2UtaW5wdXQiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJlZ5KEQyLDcsS2gpLDImZSl7bGV0IHQ7QnkodD1VeSgpKSYmKG4uY29udGFpbmVyPXQuZmlyc3QpfX0saW5wdXRzOnttaW46Im1pbiIsbWF4OiJtYXgiLGxvd2VyVmFsdWU6Imxvd2VyVmFsdWUiLHVwcGVyVmFsdWU6InVwcGVyVmFsdWUiLHRpY2tDb3VudDoidGlja0NvdW50In0sb3V0cHV0czp7dmFsdWU6InZhbHVlIn0sZGVjbHM6OCx2YXJzOjE0LGNvbnN0czpbWyJ0eXBlIiwibnVtYmVyIiwxLCJsb3dlci1pbnB1dCIsMywidmFsdWUiLCJjaGFuZ2UiXSxbInR5cGUiLCJudW1iZXIiLDEsInVwcGVyLWlucHV0IiwzLCJ2YWx1ZSIsImNoYW5nZSJdLFsxLCJjb250YWluZXIiXSxbImNvbnRhaW5lciIsIiJdLFsxLCJzbGlkZXItdHJhY2siXSxbMSwic2xpZGVyLXRyYWNrLWZpbGwiXSxbMSwidGh1bWIiLDMsIm1vdXNlZG93biJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoQ2YoMCwiaW5wdXQiLDApLFJmKCJjaGFuZ2UiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLmhhbmRsZUlucHV0Q2hhbmdlKGUsbi5Qb3NpdGlvbi5MRUZUKX0pKSxNZigpLENmKDEsImlucHV0IiwxKSxSZigiY2hhbmdlIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5oYW5kbGVJbnB1dENoYW5nZShlLG4uUG9zaXRpb24uUklHSFQpfSkpLE1mKCksQ2YoMiwic3BhbiIsMiwzKSx2Zig0LCJzcGFuIiw0KSx2Zig1LCJzcGFuIiw1KSxDZig2LCJzcGFuIiw2KSxSZigibW91c2Vkb3duIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5oYW5kbGVNb3VzZURvd24oZSxuLlBvc2l0aW9uLkxFRlQpfSkpLE1mKCksQ2YoNywic3BhbiIsNiksUmYoIm1vdXNlZG93biIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uaGFuZGxlTW91c2VEb3duKGUsbi5Qb3NpdGlvbi5SSUdIVCl9KSksTWYoKSxNZigpKSwyJmUmJihiZigidmFsdWUiLG4ubG93ZXJWYWx1ZSksRGMoMSksYmYoInZhbHVlIixuLnVwcGVyVmFsdWUpLERjKDQpLGx1KCJsZWZ0IixuLmdldFRodW1iUG9zaXRpb24obi5sb3dlclZhbHVlKSkoIndpZHRoIixuLmdldFRyYWNrV2lkdGgoKSksRGMoMSksbHUoImxlZnQiLG4uZ2V0VGh1bWJQb3NpdGlvbihuLmxvd2VyVmFsdWUpKSxjdSgiYWN0aXZlIixuLmlzVGh1bWJBY3RpdmUobi5Qb3NpdGlvbi5MRUZUKSksRGMoMSksbHUoImxlZnQiLG4uZ2V0VGh1bWJQb3NpdGlvbihuLnVwcGVyVmFsdWUpKSxjdSgiYWN0aXZlIixuLmlzVGh1bWJBY3RpdmUobi5Qb3NpdGlvbi5SSUdIVCkpKX0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCB0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9W19uZ2hvc3QtJUNPTVAlXXtib3gtc2l6aW5nOmJvcmRlci1ib3g7ZGlzcGxheTppbmxpbmUtZ3JpZDtncmlkLWdhcDoxMHB4O2dyaWQtdGVtcGxhdGUtYXJlYXM6Imxvd2VyLWlucHV0IHVwcGVyLWlucHV0IiAic2xpZGVyIHNsaWRlciI7Zm9udC1zaXplOjA7bWluLXdpZHRoOjEwMHB4O3BhZGRpbmc6NnB4fWlucHV0W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOmluaGVyaXQ7Ym9yZGVyLXN0eWxlOnNvbGlkO2JveC1zaXppbmc6Ym9yZGVyLWJveDtjb2xvcjppbmhlcml0O292ZXJmbG93OmhpZGRlbjt3aWR0aDoxMDAlfS5sb3dlci1pbnB1dFtfbmdjb250ZW50LSVDT01QJV17Z3JpZC1hcmVhOmxvd2VyLWlucHV0fS51cHBlci1pbnB1dFtfbmdjb250ZW50LSVDT01QJV17Z3JpZC1hcmVhOnVwcGVyLWlucHV0O2p1c3RpZnktc2VsZjpmbGV4LWVuZH0uY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtncmlkLWFyZWE6c2xpZGVyO2FsaWduLWl0ZW1zOmNlbnRlcjtib3gtc2l6aW5nOmJvcmRlci1ib3g7ZGlzcGxheTppbmxpbmUtZmxleDtoZWlnaHQ6MTJweDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjEwMCV9LnNsaWRlci10cmFja1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4yNik7aGVpZ2h0OjJweDt3aWR0aDoxMDAlfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5zbGlkZXItdHJhY2tbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuc2xpZGVyLXRyYWNrW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjMpfS5zbGlkZXItdHJhY2stZmlsbFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7aGVpZ2h0OjJweH0udGh1bWJbX25nY29udGVudC0lQ09NUCVde2JveC1zYWRob3c6MCAwIDAgMXB4IHJnYmEoMCwwLDAsLjI2KTtib3JkZXItcmFkaXVzOjEwMCU7ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0OjEycHg7bWFyZ2luLWxlZnQ6LTZweDtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDt0cmFuc2Zvcm0tb3JpZ2luOmNlbnRlcjt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuM3MgZWFzZTt3aWR0aDoxMnB4O3dpbGwtY2hhbmdlOnRyYW5zZm9ybX1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAudGh1bWJbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAudGh1bWJbX25nY29udGVudC0lQ09NUCVde2JveC1zYWRob3c6MCAwIDAgMXB4IHJnYmEoMjU1LDI1NSwyNTUsLjMpfS50aHVtYi5hY3RpdmVbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTpzY2FsZSgxLjIpfS5zbGlkZXItdHJhY2stZmlsbFtfbmdjb250ZW50LSVDT01QJV0sIC50aHVtYltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjU3YzAwfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5zbGlkZXItdHJhY2stZmlsbFtfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5zbGlkZXItdHJhY2stZmlsbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZWY2YzAwfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC50aHVtYltfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC50aHVtYltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZWY2YzAwfSddLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihFMixbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJ0Yi1yYW5nZS1pbnB1dCIsdGVtcGxhdGVVcmw6Ii4vcmFuZ2VfaW5wdXRfY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbIi4vcmFuZ2VfaW5wdXRfY29tcG9uZW50LmNzcyJdLGNoYW5nZURldGVjdGlvbjpqbi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpPYn1dfSkse2NvbnRhaW5lcjpbe3R5cGU6YXIsYXJnczpbImNvbnRhaW5lciIse3N0YXRpYzohMCxyZWFkOktofV19XSxtaW46W3t0eXBlOlJffV0sbWF4Olt7dHlwZTpSX31dLGxvd2VyVmFsdWU6W3t0eXBlOlJffV0sdXBwZXJWYWx1ZTpbe3R5cGU6Ul99XSx0aWNrQ291bnQ6W3t0eXBlOlJffV0sdmFsdWU6W3t0eXBlOkVffV19KTtjb25zdCBBMj1bIm1lYXN1cmVyIl0sVDI9WyJpbnB1dCJdO2NsYXNzIE4ye2NvbnN0cnVjdG9yKHQpe3RoaXMuY2hhbmdlRGV0ZWN0b3I9dCx0aGlzLnBsYWNlaG9sZGVyPSIiLHRoaXMuc3R5bGU9ImRlZmF1bHQiLHRoaXMucGF0dGVyblJlZ2V4PW5ldyBSZWdFeHAoIi4qIiksdGhpcy5pc1ZhbGlkPSEwLHRoaXMub25WYWx1ZUNoYW5nZT1uZXcgU3ksdGhpcy5ibHVyPW5ldyBTeSx0aGlzLmZvY3VzPW5ldyBTeSx0aGlzLmtleWRvd249bmV3IFN5LHRoaXMua2V5dXA9bmV3IFN5LHRoaXMuaW50ZXJuYWxWYWx1ZT0iIix0aGlzLmZvbnRDaGFuZ2VMaXN0ZW5lcj10aGlzLnVwZGF0ZUlucHV0V2lkdGguYmluZCh0aGlzKX1uZ09uSW5pdCgpe2RvY3VtZW50LmZvbnRzJiZkb2N1bWVudC5mb250cy5hZGRFdmVudExpc3RlbmVyKCJsb2FkaW5nZG9uZSIsdGhpcy5mb250Q2hhbmdlTGlzdGVuZXIpfW5nT25EZXN0cm95KCl7ZG9jdW1lbnQuZm9udHMmJmRvY3VtZW50LmZvbnRzLnJlbW92ZUV2ZW50TGlzdGVuZXIoImxvYWRpbmdkb25lIix0aGlzLmZvbnRDaGFuZ2VMaXN0ZW5lcil9bmdPbkNoYW5nZXModCl7dmFyIGU7dC5wYXR0ZXJuJiYodGhpcy5wYXR0ZXJuUmVnZXg9bmV3IFJlZ0V4cChudWxsIT09KGU9dGhpcy5wYXR0ZXJuKSYmdm9pZCAwIT09ZT9lOiIiKSksdC52YWx1ZSYmKHRoaXMuaW50ZXJuYWxWYWx1ZT10aGlzLnZhbHVlKSx0aGlzLmlzVmFsaWQ9dGhpcy5wYXR0ZXJuUmVnZXgudGVzdCh0aGlzLmludGVybmFsVmFsdWUpfW5nQWZ0ZXJWaWV3Q2hlY2tlZCgpe3RoaXMudXBkYXRlSW5wdXRXaWR0aCgpfW9uSW5wdXQodCl7Y29uc3QgZT10aGlzLmludGVybmFsVmFsdWU7dGhpcy5pbnRlcm5hbFZhbHVlPXRoaXMuaW5wdXRFbFJlZi5uYXRpdmVFbGVtZW50LnZhbHVlLHRoaXMuaW50ZXJuYWxWYWx1ZSE9PWUmJih0aGlzLmlzVmFsaWQ9dGhpcy5wYXR0ZXJuUmVnZXgudGVzdCh0aGlzLmludGVybmFsVmFsdWUpLHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCkpLHRoaXMub25WYWx1ZUNoYW5nZS5lbWl0KHt2YWx1ZTp0aGlzLmludGVybmFsVmFsdWV9KX11cGRhdGVJbnB1dFdpZHRoKCl7Y29uc3R7d2lkdGg6dH09dGhpcy5tZWFzdXJlckVsUmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7dGhpcy5pbnB1dEVsUmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUud2lkdGg9YCR7dH1weGB9fWZ1bmN0aW9uIHoyKHQsZSl7aWYoMSZ0KXtjb25zdCB0PXdmKCk7Q2YoMCwiY29udGVudC13cmFwcGluZy1pbnB1dCIsMyksUmYoIm9uVmFsdWVDaGFuZ2UiLChmdW5jdGlvbiBlKG4pe1BpKHQpO3JldHVybiB6ZigpLmFsaWFzQ2hhbmdlZC5lbWl0KG4pfSkpLE1mKCl9aWYoMiZ0KXtjb25zdCB0PXpmKCk7ZHUodC5pc0FsaWFzTmFtZUxlZ2FsPyJoaWdoLWNvbnRyYXN0IjoiZXJyb3IiKSxiZigidmFsdWUiLHQuYWxpYXMuYWxpYXNUZXh0KX19ZnVuY3Rpb24gSTIodCxlKXtpZigxJnQmJihDZigwLCJzcGFuIiksUHUoMSksTWYoKSksMiZ0KXtjb25zdCB0PXpmKCk7Y3UoImlsbGVnYWwiLCF0LmlzQWxpYXNOYW1lTGVnYWwpLERjKDEpLHd1KHQuYWxpYXMuYWxpYXNUZXh0KX19TjIuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fE4yKShnZihPYikpfSxOMi7JtWNtcD1zbyh7dHlwZTpOMixzZWxlY3RvcnM6W1siY29udGVudC13cmFwcGluZy1pbnB1dCJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmKFZ5KEEyLDcsS2gpLFZ5KFQyLDcsS2gpKSwyJmUpe2xldCB0O0J5KHQ9VXkoKSkmJihuLm1lYXN1cmVyRWxSZWY9dC5maXJzdCksQnkodD1VeSgpKSYmKG4uaW5wdXRFbFJlZj10LmZpcnN0KX19LGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsyJmUmJm11KG4uc3R5bGUpfSxpbnB1dHM6e3ZhbHVlOiJ2YWx1ZSIscGxhY2Vob2xkZXI6InBsYWNlaG9sZGVyIixzdHlsZToic3R5bGUiLHBhdHRlcm46InBhdHRlcm4ifSxvdXRwdXRzOntvblZhbHVlQ2hhbmdlOiJvblZhbHVlQ2hhbmdlIixibHVyOiJibHVyIixmb2N1czoiZm9jdXMiLGtleWRvd246ImtleWRvd24iLGtleXVwOiJrZXl1cCJ9LGZlYXR1cmVzOltxb10sZGVjbHM6Nix2YXJzOjcsY29uc3RzOltbImFyaWEtaGlkZGVuIiwidHJ1ZSIsMSwibWVhc3VyZXIiXSxbIm1lYXN1cmVyIiwiIl0sWyJhdXRvY29tcGxldGUiLCJvZmYiLCJzcGVsbGNoZWNrIiwiZmFsc2UiLCJ0eXBlIiwidGV4dCIsMywidmFsdWUiLCJwbGFjZWhvbGRlciIsImJsdXIiLCJmb2N1cyIsImlucHV0Iiwia2V5ZG93biIsImtleXVwIl0sWyJpbnB1dCIsIiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoQ2YoMCwic3BhbiIpLENmKDEsInNwYW4iLDAsMSksUHUoMyksTWYoKSxDZig0LCJpbnB1dCIsMiwzKSxSZigiYmx1ciIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uYmx1ci5lbWl0KGUpfSkpKCJmb2N1cyIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uZm9jdXMuZW1pdChlKX0pKSgiaW5wdXQiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uSW5wdXQoZSl9KSkoImtleWRvd24iLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLmtleWRvd24uZW1pdChlKX0pKSgia2V5dXAiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLmtleXVwLmVtaXQoZSl9KSksTWYoKSxNZigpKSwyJmUmJihjdSgiY29udGFpbmVyIiwhMCkoImlzLXZhbGlkIixuLmlzVmFsaWQpLERjKDMpLHd1KG4uaW50ZXJuYWxWYWx1ZXx8bi5wbGFjZWhvbGRlciksRGMoMSksYmYoInZhbHVlIixuLnZhbHVlKSgicGxhY2Vob2xkZXIiLG4ucGxhY2Vob2xkZXIpKX0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCB0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9W19uZ2hvc3QtJUNPTVAlXXtkaXNwbGF5OmlubGluZS1mbGV4O3dpZHRoOm1heC1jb250ZW50fVtfbmdob3N0LSVDT01QJV06Zm9jdXMtd2l0aGluICAgLmNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNmNTdjMDB9LmRlZmF1bHRbX25naG9zdC0lQ09NUCVdOmhvdmVyICAgLmNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNlYmViZWJ9LmVycm9yW19uZ2hvc3QtJUNPTVAlXSAgIC5jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCBbX25naG9zdC0lQ09NUCVdICAgLmNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06bm90KC5pcy12YWxpZCl7Ym9yZGVyLWNvbG9yOiNlZjlhOWF9LmVycm9yW19uZ2hvc3QtJUNPTVAlXSAgIC5jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmhvdmVyLCAuZXJyb3JbX25naG9zdC0lQ09NUCVdICAgLmNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMtd2l0aGluLCBbX25naG9zdC0lQ09NUCVdICAgLmNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06bm90KC5pcy12YWxpZCk6aG92ZXIsIFtfbmdob3N0LSVDT01QJV0gICAuY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLmlzLXZhbGlkKTpmb2N1cy13aXRoaW57Ym9yZGVyLWNvbG9yOiNlZjlhOWF9LmhpZ2gtY29udHJhc3RbX25naG9zdC0lQ09NUCVdICAgLmNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNiZGJkYmR9LmhpZ2gtY29udHJhc3RbX25naG9zdC0lQ09NUCVdICAgLmNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06aG92ZXJ7Ym9yZGVyLWNvbG9yOiM3NTc1NzV9LmNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXJhZGl1czo0cHg7Ym9yZGVyOjJweCBzb2xpZCB0cmFuc3BhcmVudDtwYWRkaW5nOjFweCAycHg7cG9zaXRpb246cmVsYXRpdmV9Lm1lYXN1cmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3Bvc2l0aW9uOmFic29sdXRlO3Zpc2liaWxpdHk6aGlkZGVufS5tZWFzdXJlcltfbmdjb250ZW50LSVDT01QJV0sIGlucHV0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2xpbmUtaGVpZ2h0OjEuNDtwYWRkaW5nOjA7d2hpdGUtc3BhY2U6cHJlfS5tZWFzdXJlcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHksIGlucHV0W19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXt3aWR0aDoyY2h9aW5wdXRbX25nY29udGVudC0lQ09NUCVde2FwcGVhcmFuY2U6bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOmluaGVyaXQ7Ym9yZGVyOjA7Y29sb3I6aW5oZXJpdDtkaXNwbGF5OmlubGluZS1ibG9jaztmb250LWZhbWlseTppbmhlcml0O291dGxpbmU6MH1pbnB1dFtfbmdjb250ZW50LSVDT01QJV06Zm9jdXN7cGFkZGluZy1yaWdodDoxY2h9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKE4yLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6ImNvbnRlbnQtd3JhcHBpbmctaW5wdXQiLHRlbXBsYXRlOidcbiAgICA8c3BhbiBbY2xhc3MuY29udGFpbmVyXT0idHJ1ZSIgW2NsYXNzLmlzLXZhbGlkXT0iaXNWYWxpZCI+XG4gICAgICA8c3BhbiAjbWVhc3VyZXIgY2xhc3M9Im1lYXN1cmVyIiBhcmlhLWhpZGRlbj0idHJ1ZSI+e3tcbiAgICAgICAgaW50ZXJuYWxWYWx1ZSB8fCBwbGFjZWhvbGRlclxuICAgICAgfX08L3NwYW4+XG4gICAgICA8aW5wdXRcbiAgICAgICAgI2lucHV0XG4gICAgICAgIGF1dG9jb21wbGV0ZT0ib2ZmIlxuICAgICAgICBzcGVsbGNoZWNrPSJmYWxzZSJcbiAgICAgICAgdHlwZT0idGV4dCJcbiAgICAgICAgKGJsdXIpPSJibHVyLmVtaXQoJGV2ZW50KSJcbiAgICAgICAgKGZvY3VzKT0iZm9jdXMuZW1pdCgkZXZlbnQpIlxuICAgICAgICAoaW5wdXQpPSJvbklucHV0KCRldmVudCkiXG4gICAgICAgIChrZXlkb3duKT0ia2V5ZG93bi5lbWl0KCRldmVudCkiXG4gICAgICAgIChrZXl1cCk9ImtleXVwLmVtaXQoJGV2ZW50KSJcbiAgICAgICAgW3ZhbHVlXT0idmFsdWUiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09InBsYWNlaG9sZGVyIlxuICAgICAgLz5cbiAgICA8L3NwYW4+XG4gICcsc3R5bGVVcmxzOlsiLi9jb250ZW50X3dyYXBwaW5nX2lucHV0X2NvbXBvbmVudC5jc3MiXSxjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNofV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6T2J9XX0pLHttZWFzdXJlckVsUmVmOlt7dHlwZTphcixhcmdzOlsibWVhc3VyZXIiLHtzdGF0aWM6ITAscmVhZDpLaH1dfV0saW5wdXRFbFJlZjpbe3R5cGU6YXIsYXJnczpbImlucHV0Iix7c3RhdGljOiEwLHJlYWQ6S2h9XX1dLHZhbHVlOlt7dHlwZTpSX31dLHBsYWNlaG9sZGVyOlt7dHlwZTpSX31dLHN0eWxlOlt7dHlwZTpBXyxhcmdzOlsiY2xhc3MiXX0se3R5cGU6Ul99XSxwYXR0ZXJuOlt7dHlwZTpSX31dLG9uVmFsdWVDaGFuZ2U6W3t0eXBlOkVffV0sYmx1cjpbe3R5cGU6RV99XSxmb2N1czpbe3R5cGU6RV99XSxrZXlkb3duOlt7dHlwZTpFX31dLGtleXVwOlt7dHlwZTpFX31dfSk7Y2xhc3MgSDJ7Y29uc3RydWN0b3IoKXt0aGlzLmlzQWxpYXNOYW1lTGVnYWw9ITAsdGhpcy5hbGlhc0NoYW5nZWQ9bmV3IFN5fX1IMi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8SDIpfSxIMi7JtWNtcD1zbyh7dHlwZTpIMixzZWxlY3RvcnM6W1sidGItZXhwZXJpbWVudC1hbGlhcyJdXSxpbnB1dHM6e2FsaWFzOiJhbGlhcyIsYWxpYXNFZGl0YWJsZToiYWxpYXNFZGl0YWJsZSIsaXNBbGlhc05hbWVMZWdhbDoiaXNBbGlhc05hbWVMZWdhbCJ9LG91dHB1dHM6e2FsaWFzQ2hhbmdlZDoiYWxpYXNDaGFuZ2VkIn0sZGVjbHM6NSx2YXJzOjMsY29uc3RzOltbMSwiYWxpYXMtbnVtYmVyIl0sWyJwbGFjZWhvbGRlciIsIkFsaWFzIGZvciBleHBlcmltZW50IiwzLCJzdHlsZSIsInZhbHVlIiwib25WYWx1ZUNoYW5nZSIsNCwibmdJZiIsIm5nSWZFbHNlIl0sWyJub0VkaXRBbGlhc05hbWUiLCIiXSxbInBsYWNlaG9sZGVyIiwiQWxpYXMgZm9yIGV4cGVyaW1lbnQiLDMsInZhbHVlIiwib25WYWx1ZUNoYW5nZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiYoQ2YoMCwic3BhbiIsMCksUHUoMSksTWYoKSxIbSgyLHoyLDEsMywiY29udGVudC13cmFwcGluZy1pbnB1dCIsMSksSG0oMyxJMiwyLDMsIm5nLXRlbXBsYXRlIixudWxsLDIscXkpKSwyJmUpe2NvbnN0IHQ9Rm0oNCk7RGMoMSksd3Uobi5hbGlhcy5hbGlhc051bWJlciksRGMoMSksYmYoIm5nSWYiLG4uYWxpYXNFZGl0YWJsZSkoIm5nSWZFbHNlIix0KX19LGRpcmVjdGl2ZXM6W1B2LE4yXSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0uYWxpYXMtbnVtYmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNlMGUwZTA7Ym9yZGVyOjFweCBzb2xpZCAjZWJlYmViO2NvbG9yOiMyMTIxMjE7Ym9yZGVyLXJhZGl1czoycHg7bWFyZ2luLXJpZ2h0OjJweDtwYWRkaW5nOjAgMnB4fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5hbGlhcy1udW1iZXJbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuYWxpYXMtbnVtYmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiM2MTYxNjF9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLmFsaWFzLW51bWJlcltfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5hbGlhcy1udW1iZXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlcjoxcHggc29saWQgIzU1NX1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAuYWxpYXMtbnVtYmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmFsaWFzLW51bWJlcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn1bX25naG9zdC0lQ09NUCVde2Rpc3BsYXk6aW5saW5lLWZsZXg7YWxpZ24taXRlbXM6YmFzZWxpbmV9J119KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEgyLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6InRiLWV4cGVyaW1lbnQtYWxpYXMiLHRlbXBsYXRlOidcbiAgICA8c3BhbiBjbGFzcz0iYWxpYXMtbnVtYmVyIj57eyBhbGlhcy5hbGlhc051bWJlciB9fTwvc3Bhbj5cbiAgICA8Y29udGVudC13cmFwcGluZy1pbnB1dFxuICAgICAgKm5nSWY9ImFsaWFzRWRpdGFibGU7IGVsc2Ugbm9FZGl0QWxpYXNOYW1lIlxuICAgICAgcGxhY2Vob2xkZXI9IkFsaWFzIGZvciBleHBlcmltZW50IlxuICAgICAgW3N0eWxlXT0iaXNBbGlhc05hbWVMZWdhbCA/IFwnaGlnaC1jb250cmFzdFwnIDogXCdlcnJvclwnIlxuICAgICAgW3ZhbHVlXT0iYWxpYXMuYWxpYXNUZXh0IlxuICAgICAgKG9uVmFsdWVDaGFuZ2UpPSJhbGlhc0NoYW5nZWQuZW1pdCgkZXZlbnQpIlxuICAgID48L2NvbnRlbnQtd3JhcHBpbmctaW5wdXQ+XG4gICAgPG5nLXRlbXBsYXRlICNub0VkaXRBbGlhc05hbWU+XG4gICAgICA8c3BhbiBbY2xhc3MuaWxsZWdhbF09IiFpc0FsaWFzTmFtZUxlZ2FsIj57eyBhbGlhcy5hbGlhc1RleHQgfX08L3NwYW4+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgJyxzdHlsZVVybHM6WyJleHBlcmltZW50X2FsaWFzX2NvbXBvbmVudC5jc3MiXX1dfV0sbnVsbCx7YWxpYXM6W3t0eXBlOlJffV0sYWxpYXNFZGl0YWJsZTpbe3R5cGU6Ul99XSxpc0FsaWFzTmFtZUxlZ2FsOlt7dHlwZTpSX31dLGFsaWFzQ2hhbmdlZDpbe3R5cGU6RV99XX0pO2NvbnN0IEYyPVsiZGlhbG9nUG9wdXAiXSxMMj1bImh1ZVNsaWRlciJdLEIyPVsiYWxwaGFTbGlkZXIiXTtmdW5jdGlvbiBWMih0LGUpe2lmKDEmdCYmdmYoMCwiZGl2IiksMiZ0KXtjb25zdCB0PXpmKCk7SXUoImFycm93IGFycm93LSIsdC5jcFVzZVBvc2l0aW9uLCIiKSxsdSgidG9wIix0LmFycm93VG9wLCJweCIpfX1mdW5jdGlvbiBqMih0LGUpe2lmKDEmdCl7Y29uc3QgdD13ZigpO0NmKDAsImRpdiIsMjYpLFJmKCJuZXdWYWx1ZSIsKGZ1bmN0aW9uIGUobil7UGkodCk7cmV0dXJuIHpmKCkub25Db2xvckNoYW5nZShuKX0pKSgiZHJhZ1N0YXJ0IiwoZnVuY3Rpb24gZSgpe1BpKHQpO3JldHVybiB6ZigpLm9uRHJhZ1N0YXJ0KCJzYXR1cmF0aW9uLWxpZ2h0bmVzcyIpfSkpKCJkcmFnRW5kIiwoZnVuY3Rpb24gZSgpe1BpKHQpO3JldHVybiB6ZigpLm9uRHJhZ0VuZCgic2F0dXJhdGlvbi1saWdodG5lc3MiKX0pKSx2ZigxLCJkaXYiLDEzKSxNZigpfWlmKDImdCl7Y29uc3QgdD16ZigpO2x1KCJiYWNrZ3JvdW5kLWNvbG9yIix0Lmh1ZVNsaWRlckNvbG9yKSxiZigicmdYIiwxKSgicmdZIiwxKSxEYygxKSxsdSgidG9wIixudWxsPT10LnNsaWRlcj9udWxsOnQuc2xpZGVyLnYsInB4IikoImxlZnQiLG51bGw9PXQuc2xpZGVyP251bGw6dC5zbGlkZXIucywicHgiKX19ZnVuY3Rpb24gVTIodCxlKXtpZigxJnQpe2NvbnN0IHQ9d2YoKTtDZigwLCJidXR0b24iLDI3KSxSZigiY2xpY2siLChmdW5jdGlvbiBlKG4pe1BpKHQpO2NvbnN0IG89emYoKTtyZXR1cm4gby5vbkFkZFByZXNldENvbG9yKG4sby5zZWxlY3RlZENvbG9yKX0pKSxQdSgxKSxNZigpfWlmKDImdCl7Y29uc3QgdD16ZigpO211KHQuY3BBZGRDb2xvckJ1dHRvbkNsYXNzKSxiZigiZGlzYWJsZWQiLHQuY3BQcmVzZXRDb2xvcnMmJnQuY3BQcmVzZXRDb2xvcnMubGVuZ3RoPj10LmNwTWF4UHJlc2V0Q29sb3JzTGVuZ3RoKSxEYygxKSxrdSgiICIsdC5jcEFkZENvbG9yQnV0dG9uVGV4dCwiICIpfX1mdW5jdGlvbiBXMih0LGUpezEmdCYmdmYoMCwiZGl2IiwyOCl9ZnVuY3Rpb24gRzIodCxlKXtpZigxJnQpe2NvbnN0IHQ9d2YoKTtDZigwLCJpbnB1dCIsMzQpLFJmKCJrZXl1cC5lbnRlciIsKGZ1bmN0aW9uIGUobil7UGkodCk7cmV0dXJuIHpmKDIpLm9uQWNjZXB0Q29sb3Iobil9KSkoIm5ld1ZhbHVlIiwoZnVuY3Rpb24gZShuKXtQaSh0KTtyZXR1cm4gemYoMikub25BbHBoYUlucHV0KG4pfSkpLE1mKCl9aWYoMiZ0KXtjb25zdCB0PXpmKDIpO2JmKCJyZyIsMSkoInZhbHVlIixudWxsPT10LmNteWtUZXh0P251bGw6dC5jbXlrVGV4dC5hKX19ZnVuY3Rpb24gWTIodCxlKXsxJnQmJihDZigwLCJkaXYiKSxQdSgxLCJBIiksTWYoKSl9ZnVuY3Rpb24gcTIodCxlKXtpZigxJnQpe2NvbnN0IHQ9d2YoKTtDZigwLCJkaXYiLDI5KSxDZigxLCJkaXYiLDMwKSxDZigyLCJpbnB1dCIsMzEpLFJmKCJrZXl1cC5lbnRlciIsKGZ1bmN0aW9uIGUobil7UGkodCk7cmV0dXJuIHpmKCkub25BY2NlcHRDb2xvcihuKX0pKSgibmV3VmFsdWUiLChmdW5jdGlvbiBlKG4pe1BpKHQpO3JldHVybiB6ZigpLm9uQ3lhbklucHV0KG4pfSkpLE1mKCksQ2YoMywiaW5wdXQiLDMxKSxSZigia2V5dXAuZW50ZXIiLChmdW5jdGlvbiBlKG4pe1BpKHQpO3JldHVybiB6ZigpLm9uQWNjZXB0Q29sb3Iobil9KSkoIm5ld1ZhbHVlIiwoZnVuY3Rpb24gZShuKXtQaSh0KTtyZXR1cm4gemYoKS5vbk1hZ2VudGFJbnB1dChuKX0pKSxNZigpLENmKDQsImlucHV0IiwzMSksUmYoImtleXVwLmVudGVyIiwoZnVuY3Rpb24gZShuKXtQaSh0KTtyZXR1cm4gemYoKS5vbkFjY2VwdENvbG9yKG4pfSkpKCJuZXdWYWx1ZSIsKGZ1bmN0aW9uIGUobil7UGkodCk7cmV0dXJuIHpmKCkub25ZZWxsb3dJbnB1dChuKX0pKSxNZigpLENmKDUsImlucHV0IiwzMSksUmYoImtleXVwLmVudGVyIiwoZnVuY3Rpb24gZShuKXtQaSh0KTtyZXR1cm4gemYoKS5vbkFjY2VwdENvbG9yKG4pfSkpKCJuZXdWYWx1ZSIsKGZ1bmN0aW9uIGUobil7UGkodCk7cmV0dXJuIHpmKCkub25CbGFja0lucHV0KG4pfSkpLE1mKCksSG0oNixHMiwxLDIsImlucHV0IiwzMiksTWYoKSxDZig3LCJkaXYiLDMwKSxDZig4LCJkaXYiKSxQdSg5LCJDIiksTWYoKSxDZigxMCwiZGl2IiksUHUoMTEsIk0iKSxNZigpLENmKDEyLCJkaXYiKSxQdSgxMywiWSIpLE1mKCksQ2YoMTQsImRpdiIpLFB1KDE1LCJLIiksTWYoKSxIbSgxNixZMiwyLDAsImRpdiIsMzMpLE1mKCksTWYoKX1pZigyJnQpe2NvbnN0IHQ9emYoKTtsdSgiZGlzcGxheSIsMyE9PXQuZm9ybWF0PyJub25lIjoiYmxvY2siKSxEYygyKSxiZigicmciLDEwMCkoInZhbHVlIixudWxsPT10LmNteWtUZXh0P251bGw6dC5jbXlrVGV4dC5jKSxEYygxKSxiZigicmciLDEwMCkoInZhbHVlIixudWxsPT10LmNteWtUZXh0P251bGw6dC5jbXlrVGV4dC5tKSxEYygxKSxiZigicmciLDEwMCkoInZhbHVlIixudWxsPT10LmNteWtUZXh0P251bGw6dC5jbXlrVGV4dC55KSxEYygxKSxiZigicmciLDEwMCkoInZhbHVlIixudWxsPT10LmNteWtUZXh0P251bGw6dC5jbXlrVGV4dC5rKSxEYygxKSxiZigibmdJZiIsImRpc2FibGVkIiE9PXQuY3BBbHBoYUNoYW5uZWwpLERjKDEwKSxiZigibmdJZiIsImRpc2FibGVkIiE9PXQuY3BBbHBoYUNoYW5uZWwpfX1mdW5jdGlvbiBaMih0LGUpe2lmKDEmdCl7Y29uc3QgdD13ZigpO0NmKDAsImlucHV0IiwzNCksUmYoImtleXVwLmVudGVyIiwoZnVuY3Rpb24gZShuKXtQaSh0KTtyZXR1cm4gemYoMikub25BY2NlcHRDb2xvcihuKX0pKSgibmV3VmFsdWUiLChmdW5jdGlvbiBlKG4pe1BpKHQpO3JldHVybiB6ZigyKS5vbkFscGhhSW5wdXQobil9KSksTWYoKX1pZigyJnQpe2NvbnN0IHQ9emYoMik7YmYoInJnIiwxKSgidmFsdWUiLG51bGw9PXQuaHNsYVRleHQ/bnVsbDp0LmhzbGFUZXh0LmEpfX1mdW5jdGlvbiBYMih0LGUpezEmdCYmKENmKDAsImRpdiIpLFB1KDEsIkEiKSxNZigpKX1mdW5jdGlvbiBLMih0LGUpe2lmKDEmdCl7Y29uc3QgdD13ZigpO0NmKDAsImRpdiIsMzUpLENmKDEsImRpdiIsMzApLENmKDIsImlucHV0IiwzNiksUmYoImtleXVwLmVudGVyIiwoZnVuY3Rpb24gZShuKXtQaSh0KTtyZXR1cm4gemYoKS5vbkFjY2VwdENvbG9yKG4pfSkpKCJuZXdWYWx1ZSIsKGZ1bmN0aW9uIGUobil7UGkodCk7cmV0dXJuIHpmKCkub25IdWVJbnB1dChuKX0pKSxNZigpLENmKDMsImlucHV0IiwzMSksUmYoImtleXVwLmVudGVyIiwoZnVuY3Rpb24gZShuKXtQaSh0KTtyZXR1cm4gemYoKS5vbkFjY2VwdENvbG9yKG4pfSkpKCJuZXdWYWx1ZSIsKGZ1bmN0aW9uIGUobil7UGkodCk7cmV0dXJuIHpmKCkub25TYXR1cmF0aW9uSW5wdXQobil9KSksTWYoKSxDZig0LCJpbnB1dCIsMzEpLFJmKCJrZXl1cC5lbnRlciIsKGZ1bmN0aW9uIGUobil7UGkodCk7cmV0dXJuIHpmKCkub25BY2NlcHRDb2xvcihuKX0pKSgibmV3VmFsdWUiLChmdW5jdGlvbiBlKG4pe1BpKHQpO3JldHVybiB6ZigpLm9uTGlnaHRuZXNzSW5wdXQobil9KSksTWYoKSxIbSg1LFoyLDEsMiwiaW5wdXQiLDMyKSxNZigpLENmKDYsImRpdiIsMzApLENmKDcsImRpdiIpLFB1KDgsIkgiKSxNZigpLENmKDksImRpdiIpLFB1KDEwLCJTIiksTWYoKSxDZigxMSwiZGl2IiksUHUoMTIsIkwiKSxNZigpLEhtKDEzLFgyLDIsMCwiZGl2IiwzMyksTWYoKSxNZigpfWlmKDImdCl7Y29uc3QgdD16ZigpO2x1KCJkaXNwbGF5IiwyIT09dC5mb3JtYXQ/Im5vbmUiOiJibG9jayIpLERjKDIpLGJmKCJyZyIsMzYwKSgidmFsdWUiLG51bGw9PXQuaHNsYVRleHQ/bnVsbDp0LmhzbGFUZXh0LmgpLERjKDEpLGJmKCJyZyIsMTAwKSgidmFsdWUiLG51bGw9PXQuaHNsYVRleHQ/bnVsbDp0LmhzbGFUZXh0LnMpLERjKDEpLGJmKCJyZyIsMTAwKSgidmFsdWUiLG51bGw9PXQuaHNsYVRleHQ/bnVsbDp0LmhzbGFUZXh0LmwpLERjKDEpLGJmKCJuZ0lmIiwiZGlzYWJsZWQiIT09dC5jcEFscGhhQ2hhbm5lbCksRGMoOCksYmYoIm5nSWYiLCJkaXNhYmxlZCIhPT10LmNwQWxwaGFDaGFubmVsKX19ZnVuY3Rpb24gSjIodCxlKXtpZigxJnQpe2NvbnN0IHQ9d2YoKTtDZigwLCJpbnB1dCIsMzQpLFJmKCJrZXl1cC5lbnRlciIsKGZ1bmN0aW9uIGUobil7UGkodCk7cmV0dXJuIHpmKDIpLm9uQWNjZXB0Q29sb3Iobil9KSkoIm5ld1ZhbHVlIiwoZnVuY3Rpb24gZShuKXtQaSh0KTtyZXR1cm4gemYoMikub25BbHBoYUlucHV0KG4pfSkpLE1mKCl9aWYoMiZ0KXtjb25zdCB0PXpmKDIpO2JmKCJyZyIsMSkoInZhbHVlIixudWxsPT10LnJnYmFUZXh0P251bGw6dC5yZ2JhVGV4dC5hKX19ZnVuY3Rpb24gUTIodCxlKXsxJnQmJihDZigwLCJkaXYiKSxQdSgxLCJBIiksTWYoKSl9ZnVuY3Rpb24gJDIodCxlKXtpZigxJnQpe2NvbnN0IHQ9d2YoKTtDZigwLCJkaXYiLDM3KSxDZigxLCJkaXYiLDMwKSxDZigyLCJpbnB1dCIsMzgpLFJmKCJrZXl1cC5lbnRlciIsKGZ1bmN0aW9uIGUobil7UGkodCk7cmV0dXJuIHpmKCkub25BY2NlcHRDb2xvcihuKX0pKSgibmV3VmFsdWUiLChmdW5jdGlvbiBlKG4pe1BpKHQpO3JldHVybiB6ZigpLm9uUmVkSW5wdXQobil9KSksTWYoKSxDZigzLCJpbnB1dCIsMzgpLFJmKCJrZXl1cC5lbnRlciIsKGZ1bmN0aW9uIGUobil7UGkodCk7cmV0dXJuIHpmKCkub25BY2NlcHRDb2xvcihuKX0pKSgibmV3VmFsdWUiLChmdW5jdGlvbiBlKG4pe1BpKHQpO3JldHVybiB6ZigpLm9uR3JlZW5JbnB1dChuKX0pKSxNZigpLENmKDQsImlucHV0IiwzOCksUmYoImtleXVwLmVudGVyIiwoZnVuY3Rpb24gZShuKXtQaSh0KTtyZXR1cm4gemYoKS5vbkFjY2VwdENvbG9yKG4pfSkpKCJuZXdWYWx1ZSIsKGZ1bmN0aW9uIGUobil7UGkodCk7cmV0dXJuIHpmKCkub25CbHVlSW5wdXQobil9KSksTWYoKSxIbSg1LEoyLDEsMiwiaW5wdXQiLDMyKSxNZigpLENmKDYsImRpdiIsMzApLENmKDcsImRpdiIpLFB1KDgsIlIiKSxNZigpLENmKDksImRpdiIpLFB1KDEwLCJHIiksTWYoKSxDZigxMSwiZGl2IiksUHUoMTIsIkIiKSxNZigpLEhtKDEzLFEyLDIsMCwiZGl2IiwzMyksTWYoKSxNZigpfWlmKDImdCl7Y29uc3QgdD16ZigpO2x1KCJkaXNwbGF5IiwxIT09dC5mb3JtYXQ/Im5vbmUiOiJibG9jayIpLERjKDIpLGJmKCJyZyIsMjU1KSgidmFsdWUiLG51bGw9PXQucmdiYVRleHQ/bnVsbDp0LnJnYmFUZXh0LnIpLERjKDEpLGJmKCJyZyIsMjU1KSgidmFsdWUiLG51bGw9PXQucmdiYVRleHQ/bnVsbDp0LnJnYmFUZXh0LmcpLERjKDEpLGJmKCJyZyIsMjU1KSgidmFsdWUiLG51bGw9PXQucmdiYVRleHQ/bnVsbDp0LnJnYmFUZXh0LmIpLERjKDEpLGJmKCJuZ0lmIiwiZGlzYWJsZWQiIT09dC5jcEFscGhhQ2hhbm5lbCksRGMoOCksYmYoIm5nSWYiLCJkaXNhYmxlZCIhPT10LmNwQWxwaGFDaGFubmVsKX19ZnVuY3Rpb24gdDUodCxlKXtpZigxJnQpe2NvbnN0IHQ9d2YoKTtDZigwLCJpbnB1dCIsMzQpLFJmKCJrZXl1cC5lbnRlciIsKGZ1bmN0aW9uIGUobil7UGkodCk7cmV0dXJuIHpmKDIpLm9uQWNjZXB0Q29sb3Iobil9KSkoIm5ld1ZhbHVlIiwoZnVuY3Rpb24gZShuKXtQaSh0KTtyZXR1cm4gemYoMikub25BbHBoYUlucHV0KG4pfSkpLE1mKCl9aWYoMiZ0KXtjb25zdCB0PXpmKDIpO2JmKCJyZyIsMSkoInZhbHVlIix0LmhleEFscGhhKX19ZnVuY3Rpb24gZTUodCxlKXsxJnQmJihDZigwLCJkaXYiKSxQdSgxLCJBIiksTWYoKSl9ZnVuY3Rpb24gbjUodCxlKXtpZigxJnQpe2NvbnN0IHQ9d2YoKTtDZigwLCJkaXYiLDM5KSxDZigxLCJkaXYiLDMwKSxDZigyLCJpbnB1dCIsNDApLFJmKCJibHVyIiwoZnVuY3Rpb24gZSgpe1BpKHQpO3JldHVybiB6ZigpLm9uSGV4SW5wdXQobnVsbCl9KSkoImtleXVwLmVudGVyIiwoZnVuY3Rpb24gZShuKXtQaSh0KTtyZXR1cm4gemYoKS5vbkFjY2VwdENvbG9yKG4pfSkpKCJuZXdWYWx1ZSIsKGZ1bmN0aW9uIGUobil7UGkodCk7cmV0dXJuIHpmKCkub25IZXhJbnB1dChuKX0pKSxNZigpLEhtKDMsdDUsMSwyLCJpbnB1dCIsMzIpLE1mKCksQ2YoNCwiZGl2IiwzMCksQ2YoNSwiZGl2IiksUHUoNiwiSGV4IiksTWYoKSxIbSg3LGU1LDIsMCwiZGl2IiwzMyksTWYoKSxNZigpfWlmKDImdCl7Y29uc3QgdD16ZigpO2x1KCJkaXNwbGF5IiwwIT09dC5mb3JtYXQ/Im5vbmUiOiJibG9jayIpLGN1KCJoZXgtYWxwaGEiLCJmb3JjZWQiPT09dC5jcEFscGhhQ2hhbm5lbCksRGMoMiksYmYoInZhbHVlIix0LmhleFRleHQpLERjKDEpLGJmKCJuZ0lmIiwiZm9yY2VkIj09PXQuY3BBbHBoYUNoYW5uZWwpLERjKDQpLGJmKCJuZ0lmIiwiZm9yY2VkIj09PXQuY3BBbHBoYUNoYW5uZWwpfX1mdW5jdGlvbiBvNSh0LGUpe2lmKDEmdCl7Y29uc3QgdD13ZigpO0NmKDAsImlucHV0IiwzNCksUmYoImtleXVwLmVudGVyIiwoZnVuY3Rpb24gZShuKXtQaSh0KTtyZXR1cm4gemYoMikub25BY2NlcHRDb2xvcihuKX0pKSgibmV3VmFsdWUiLChmdW5jdGlvbiBlKG4pe1BpKHQpO3JldHVybiB6ZigyKS5vbkFscGhhSW5wdXQobil9KSksTWYoKX1pZigyJnQpe2NvbnN0IHQ9emYoMik7YmYoInJnIiwxKSgidmFsdWUiLG51bGw9PXQuaHNsYVRleHQ/bnVsbDp0LmhzbGFUZXh0LmEpfX1mdW5jdGlvbiBpNSh0LGUpe2lmKDEmdCl7Y29uc3QgdD13ZigpO0NmKDAsImRpdiIsNDEpLENmKDEsImRpdiIsMzApLENmKDIsImlucHV0IiwzMSksUmYoImtleXVwLmVudGVyIiwoZnVuY3Rpb24gZShuKXtQaSh0KTtyZXR1cm4gemYoKS5vbkFjY2VwdENvbG9yKG4pfSkpKCJuZXdWYWx1ZSIsKGZ1bmN0aW9uIGUobil7UGkodCk7cmV0dXJuIHpmKCkub25WYWx1ZUlucHV0KG4pfSkpLE1mKCksSG0oMyxvNSwxLDIsImlucHV0IiwzMiksTWYoKSxDZig0LCJkaXYiLDMwKSxDZig1LCJkaXYiKSxQdSg2LCJWIiksTWYoKSxDZig3LCJkaXYiKSxQdSg4LCJBIiksTWYoKSxNZigpLE1mKCl9aWYoMiZ0KXtjb25zdCB0PXpmKCk7RGMoMiksYmYoInJnIiwxMDApKCJ2YWx1ZSIsbnVsbD09dC5oc2xhVGV4dD9udWxsOnQuaHNsYVRleHQubCksRGMoMSksYmYoIm5nSWYiLCJkaXNhYmxlZCIhPT10LmNwQWxwaGFDaGFubmVsKX19ZnVuY3Rpb24gYTUodCxlKXtpZigxJnQpe2NvbnN0IHQ9d2YoKTtDZigwLCJkaXYiLDQyKSxDZigxLCJzcGFuIiw0MyksUmYoImNsaWNrIiwoZnVuY3Rpb24gZSgpe1BpKHQpO3JldHVybiB6ZigpLm9uRm9ybWF0VG9nZ2xlKC0xKX0pKSxNZigpLENmKDIsInNwYW4iLDQzKSxSZigiY2xpY2siLChmdW5jdGlvbiBlKCl7UGkodCk7cmV0dXJuIHpmKCkub25Gb3JtYXRUb2dnbGUoMSl9KSksTWYoKSxNZigpfX1mdW5jdGlvbiByNSh0LGUpe2lmKDEmdCl7Y29uc3QgdD13ZigpO0NmKDAsInNwYW4iLDUwKSxSZigiY2xpY2siLChmdW5jdGlvbiBlKG4pe1BpKHQpO2NvbnN0IG89emYoKS4kaW1wbGljaXQ7cmV0dXJuIHpmKDMpLm9uUmVtb3ZlUHJlc2V0Q29sb3IobixvKX0pKSxNZigpfWlmKDImdCl7bXUoemYoNCkuY3BSZW1vdmVDb2xvckJ1dHRvbkNsYXNzKX19ZnVuY3Rpb24gczUodCxlKXtpZigxJnQpe2NvbnN0IHQ9d2YoKTtDZigwLCJkaXYiLDQ4KSxSZigiY2xpY2siLChmdW5jdGlvbiBlKCl7Y29uc3Qgbj1QaSh0KS4kaW1wbGljaXQ7cmV0dXJuIHpmKDMpLnNldENvbG9yRnJvbVN0cmluZyhuKX0pKSxIbSgxLHI1LDEsMywic3BhbiIsNDkpLE1mKCl9aWYoMiZ0KXtjb25zdCB0PWUuJGltcGxpY2l0LG49emYoMyk7bHUoImJhY2tncm91bmQtY29sb3IiLHQpLERjKDEpLGJmKCJuZ0lmIixuLmNwQWRkQ29sb3JCdXR0b24pfX1mdW5jdGlvbiBsNSh0LGUpe2lmKDEmdCYmKENmKDAsImRpdiIpLEhtKDEsczUsMiwzLCJkaXYiLDQ3KSxNZigpKSwyJnQpe2NvbnN0IHQ9emYoMik7bXUodC5jcFByZXNldENvbG9yc0NsYXNzKSxEYygxKSxiZigibmdGb3JPZiIsdC5jcFByZXNldENvbG9ycyl9fWZ1bmN0aW9uIGM1KHQsZSl7aWYoMSZ0JiYoQ2YoMCwiZGl2IiksUHUoMSksTWYoKSksMiZ0KXtjb25zdCB0PXpmKDIpO211KHQuY3BQcmVzZXRFbXB0eU1lc3NhZ2VDbGFzcyksRGMoMSksd3UodC5jcFByZXNldEVtcHR5TWVzc2FnZSl9fWZ1bmN0aW9uIGQ1KHQsZSl7aWYoMSZ0JiYoQ2YoMCwiZGl2Iiw0NCksdmYoMSwiaHIiKSxDZigyLCJkaXYiLDQ1KSxQdSgzKSxNZigpLEhtKDQsbDUsMiw0LCJkaXYiLDQ2KSxIbSg1LGM1LDIsNCwiZGl2Iiw0NiksTWYoKSksMiZ0KXtjb25zdCB0PXpmKCk7RGMoMyksd3UodC5jcFByZXNldExhYmVsKSxEYygxKSxiZigibmdJZiIsbnVsbD09dC5jcFByZXNldENvbG9ycz9udWxsOnQuY3BQcmVzZXRDb2xvcnMubGVuZ3RoKSxEYygxKSxiZigibmdJZiIsIShudWxsIT10LmNwUHJlc2V0Q29sb3JzJiZ0LmNwUHJlc2V0Q29sb3JzLmxlbmd0aCkmJnQuY3BBZGRDb2xvckJ1dHRvbil9fWZ1bmN0aW9uIHA1KHQsZSl7aWYoMSZ0KXtjb25zdCB0PXdmKCk7Q2YoMCwiYnV0dG9uIiw1MyksUmYoImNsaWNrIiwoZnVuY3Rpb24gZShuKXtQaSh0KTtyZXR1cm4gemYoMikub25DYW5jZWxDb2xvcihuKX0pKSxQdSgxKSxNZigpfWlmKDImdCl7Y29uc3QgdD16ZigyKTttdSh0LmNwQ2FuY2VsQnV0dG9uQ2xhc3MpLERjKDEpLHd1KHQuY3BDYW5jZWxCdXR0b25UZXh0KX19ZnVuY3Rpb24gbTUodCxlKXtpZigxJnQpe2NvbnN0IHQ9d2YoKTtDZigwLCJidXR0b24iLDUzKSxSZigiY2xpY2siLChmdW5jdGlvbiBlKG4pe1BpKHQpO3JldHVybiB6ZigyKS5vbkFjY2VwdENvbG9yKG4pfSkpLFB1KDEpLE1mKCl9aWYoMiZ0KXtjb25zdCB0PXpmKDIpO211KHQuY3BPS0J1dHRvbkNsYXNzKSxEYygxKSx3dSh0LmNwT0tCdXR0b25UZXh0KX19ZnVuY3Rpb24gZjUodCxlKXtpZigxJnQmJihDZigwLCJkaXYiLDUxKSxIbSgxLHA1LDIsNCwiYnV0dG9uIiw1MiksSG0oMixtNSwyLDQsImJ1dHRvbiIsNTIpLE1mKCkpLDImdCl7Y29uc3QgdD16ZigpO0RjKDEpLGJmKCJuZ0lmIix0LmNwQ2FuY2VsQnV0dG9uKSxEYygxKSxiZigibmdJZiIsdC5jcE9LQnV0dG9uKX19dmFyIHU1OyEoZnVuY3Rpb24odCl7dFt0LkhFWD0wXT0iSEVYIix0W3QuUkdCQT0xXT0iUkdCQSIsdFt0LkhTTEE9Ml09IkhTTEEiLHRbdC5DTVlLPTNdPSJDTVlLIn0pKHU1fHwodTU9e30pKTtjbGFzcyBnNXtjb25zdHJ1Y3Rvcih0LGUsbixvKXt0aGlzLnI9dCx0aGlzLmc9ZSx0aGlzLmI9bix0aGlzLmE9b319Y2xhc3MgaDV7Y29uc3RydWN0b3IodCxlLG4sbyl7dGhpcy5oPXQsdGhpcy5zPWUsdGhpcy52PW4sdGhpcy5hPW99fWNsYXNzIGI1e2NvbnN0cnVjdG9yKHQsZSxuLG8pe3RoaXMuaD10LHRoaXMucz1lLHRoaXMubD1uLHRoaXMuYT1vfX1jbGFzcyB5NXtjb25zdHJ1Y3Rvcih0LGUsbixvLGk9MSl7dGhpcy5jPXQsdGhpcy5tPWUsdGhpcy55PW4sdGhpcy5rPW8sdGhpcy5hPWl9fWNsYXNzIF81e2NvbnN0cnVjdG9yKCl7dGhpcy5uZXdWYWx1ZT1uZXcgU3l9aW5wdXRDaGFuZ2UodCl7Y29uc3QgZT10LnRhcmdldC52YWx1ZTtpZih2b2lkIDA9PT10aGlzLnJnKXRoaXMubmV3VmFsdWUuZW1pdChlKTtlbHNle2NvbnN0IHQ9cGFyc2VGbG9hdChlKTt0aGlzLm5ld1ZhbHVlLmVtaXQoe3Y6dCxyZzp0aGlzLnJnfSl9fX1fNS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8XzUpfSxfNS7JtWRpcj1obyh7dHlwZTpfNSxzZWxlY3RvcnM6W1siIiwidGV4dCIsIiJdXSxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezEmZSYmUmYoImlucHV0IiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5pbnB1dENoYW5nZShlKX0pKX0saW5wdXRzOntyZzoicmciLHRleHQ6InRleHQifSxvdXRwdXRzOntuZXdWYWx1ZToibmV3VmFsdWUifX0pLF81LnByb3BEZWNvcmF0b3JzPXtyZzpbe3R5cGU6Ul99XSx0ZXh0Olt7dHlwZTpSX31dLG5ld1ZhbHVlOlt7dHlwZTpFX31dLGlucHV0Q2hhbmdlOlt7dHlwZTpUXyxhcmdzOlsiaW5wdXQiLFsiJGV2ZW50Il1dfV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoXzUsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW3RleHRdIn1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW119KSx7bmV3VmFsdWU6W3t0eXBlOkVffV0saW5wdXRDaGFuZ2U6W3t0eXBlOlRfLGFyZ3M6WyJpbnB1dCIsWyIkZXZlbnQiXV19XSxyZzpbe3R5cGU6Ul99XSx0ZXh0Olt7dHlwZTpSX31dfSk7Y2xhc3MgQzV7Y29uc3RydWN0b3IodCl7dGhpcy5lbFJlZj10LHRoaXMuZHJhZ0VuZD1uZXcgU3ksdGhpcy5kcmFnU3RhcnQ9bmV3IFN5LHRoaXMubmV3VmFsdWU9bmV3IFN5LHRoaXMubGlzdGVuZXJNb3ZlPXQ9PnRoaXMubW92ZSh0KSx0aGlzLmxpc3RlbmVyU3RvcD0oKT0+dGhpcy5zdG9wKCl9bW91c2VEb3duKHQpe3RoaXMuc3RhcnQodCl9dG91Y2hTdGFydCh0KXt0aGlzLnN0YXJ0KHQpfW1vdmUodCl7dC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuc2V0Q3Vyc29yKHQpfXN0YXJ0KHQpe3RoaXMuc2V0Q3Vyc29yKHQpLHQuc3RvcFByb3BhZ2F0aW9uKCksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsdGhpcy5saXN0ZW5lclN0b3ApLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoZW5kIix0aGlzLmxpc3RlbmVyU3RvcCksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIix0aGlzLmxpc3RlbmVyTW92ZSksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2htb3ZlIix0aGlzLmxpc3RlbmVyTW92ZSksdGhpcy5kcmFnU3RhcnQuZW1pdCgpfXN0b3AoKXtkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZXVwIix0aGlzLmxpc3RlbmVyU3RvcCksZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigidG91Y2hlbmQiLHRoaXMubGlzdGVuZXJTdG9wKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLHRoaXMubGlzdGVuZXJNb3ZlKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJ0b3VjaG1vdmUiLHRoaXMubGlzdGVuZXJNb3ZlKSx0aGlzLmRyYWdFbmQuZW1pdCgpfWdldFgodCl7Y29uc3QgZT10aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJuKHZvaWQgMCE9PXQucGFnZVg/dC5wYWdlWDp0LnRvdWNoZXNbMF0ucGFnZVgpLWUubGVmdC13aW5kb3cucGFnZVhPZmZzZXR9Z2V0WSh0KXtjb25zdCBlPXRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm4odm9pZCAwIT09dC5wYWdlWT90LnBhZ2VZOnQudG91Y2hlc1swXS5wYWdlWSktZS50b3Atd2luZG93LnBhZ2VZT2Zmc2V0fXNldEN1cnNvcih0KXtjb25zdCBlPXRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCxuPXRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQsbz1NYXRoLm1heCgwLE1hdGgubWluKHRoaXMuZ2V0WCh0KSxlKSksaT1NYXRoLm1heCgwLE1hdGgubWluKHRoaXMuZ2V0WSh0KSxuKSk7dm9pZCAwIT09dGhpcy5yZ1gmJnZvaWQgMCE9PXRoaXMucmdZP3RoaXMubmV3VmFsdWUuZW1pdCh7czpvL2UsdjoxLWkvbixyZ1g6dGhpcy5yZ1gscmdZOnRoaXMucmdZfSk6dm9pZCAwPT09dGhpcy5yZ1gmJnZvaWQgMCE9PXRoaXMucmdZP3RoaXMubmV3VmFsdWUuZW1pdCh7djppL24scmdZOnRoaXMucmdZfSk6dm9pZCAwIT09dGhpcy5yZ1gmJnZvaWQgMD09PXRoaXMucmdZJiZ0aGlzLm5ld1ZhbHVlLmVtaXQoe3Y6by9lLHJnWDp0aGlzLnJnWH0pfX1DNS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8QzUpKGdmKEtoKSl9LEM1Lsm1ZGlyPWhvKHt0eXBlOkM1LHNlbGVjdG9yczpbWyIiLCJzbGlkZXIiLCIiXV0saG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJlJmKCJtb3VzZWRvd24iLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm1vdXNlRG93bihlKX0pKSgidG91Y2hzdGFydCIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4udG91Y2hTdGFydChlKX0pKX0saW5wdXRzOntyZ1g6InJnWCIscmdZOiJyZ1kiLHNsaWRlcjoic2xpZGVyIn0sb3V0cHV0czp7ZHJhZ0VuZDoiZHJhZ0VuZCIsZHJhZ1N0YXJ0OiJkcmFnU3RhcnQiLG5ld1ZhbHVlOiJuZXdWYWx1ZSJ9fSksQzUuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpLaH1dLEM1LnByb3BEZWNvcmF0b3JzPXtyZ1g6W3t0eXBlOlJffV0scmdZOlt7dHlwZTpSX31dLHNsaWRlcjpbe3R5cGU6Ul99XSxkcmFnRW5kOlt7dHlwZTpFX31dLGRyYWdTdGFydDpbe3R5cGU6RV99XSxuZXdWYWx1ZTpbe3R5cGU6RV99XSxtb3VzZURvd246W3t0eXBlOlRfLGFyZ3M6WyJtb3VzZWRvd24iLFsiJGV2ZW50Il1dfV0sdG91Y2hTdGFydDpbe3R5cGU6VF8sYXJnczpbInRvdWNoc3RhcnQiLFsiJGV2ZW50Il1dfV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoQzUsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW3NsaWRlcl0ifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6S2h9XX0pLHtkcmFnRW5kOlt7dHlwZTpFX31dLGRyYWdTdGFydDpbe3R5cGU6RV99XSxuZXdWYWx1ZTpbe3R5cGU6RV99XSxtb3VzZURvd246W3t0eXBlOlRfLGFyZ3M6WyJtb3VzZWRvd24iLFsiJGV2ZW50Il1dfV0sdG91Y2hTdGFydDpbe3R5cGU6VF8sYXJnczpbInRvdWNoc3RhcnQiLFsiJGV2ZW50Il1dfV0scmdYOlt7dHlwZTpSX31dLHJnWTpbe3R5cGU6Ul99XSxzbGlkZXI6W3t0eXBlOlJffV19KTtjbGFzcyBNNXtjb25zdHJ1Y3Rvcih0LGUsbixvKXt0aGlzLmg9dCx0aGlzLnM9ZSx0aGlzLnY9bix0aGlzLmE9b319Y2xhc3MgdjV7Y29uc3RydWN0b3IodCxlLG4sbyl7dGhpcy5oPXQsdGhpcy5zPWUsdGhpcy52PW4sdGhpcy5hPW99fWNsYXNzIHg1e2NvbnN0cnVjdG9yKCl7dGhpcy5hY3RpdmU9bnVsbH1zZXRBY3RpdmUodCl7dGhpcy5hY3RpdmUmJnRoaXMuYWN0aXZlIT09dCYmImlubGluZSIhPT10aGlzLmFjdGl2ZS5jcERpYWxvZ0Rpc3BsYXkmJnRoaXMuYWN0aXZlLmNsb3NlRGlhbG9nKCksdGhpcy5hY3RpdmU9dH1oc3ZhMmhzbGEodCl7Y29uc3QgZT10Lmgsbj10LnMsbz10LnYsaT10LmE7aWYoMD09PW8pcmV0dXJuIG5ldyBiNShlLDAsMCxpKTtpZigwPT09biYmMT09PW8pcmV0dXJuIG5ldyBiNShlLDEsMSxpKTt7Y29uc3QgdD1vKigyLW4pLzI7cmV0dXJuIG5ldyBiNShlLG8qbi8oMS1NYXRoLmFicygyKnQtMSkpLHQsaSl9fWhzbGEyaHN2YSh0KXtjb25zdCBlPU1hdGgubWluKHQuaCwxKSxuPU1hdGgubWluKHQucywxKSxvPU1hdGgubWluKHQubCwxKSxpPU1hdGgubWluKHQuYSwxKTtpZigwPT09bylyZXR1cm4gbmV3IGg1KGUsMCwwLGkpO3tjb25zdCB0PW8rbiooMS1NYXRoLmFicygyKm8tMSkpLzI7cmV0dXJuIG5ldyBoNShlLDIqKHQtbykvdCx0LGkpfX1oc3ZhVG9SZ2JhKHQpe2xldCBlLG4sbztjb25zdCBpPXQuaCxhPXQucyxyPXQudixzPXQuYSxsPU1hdGguZmxvb3IoNippKSxjPTYqaS1sLGQ9ciooMS1hKSxwPXIqKDEtYyphKSxtPXIqKDEtKDEtYykqYSk7c3dpdGNoKGwlNil7Y2FzZSAwOmU9cixuPW0sbz1kO2JyZWFrO2Nhc2UgMTplPXAsbj1yLG89ZDticmVhaztjYXNlIDI6ZT1kLG49cixvPW07YnJlYWs7Y2FzZSAzOmU9ZCxuPXAsbz1yO2JyZWFrO2Nhc2UgNDplPW0sbj1kLG89cjticmVhaztjYXNlIDU6ZT1yLG49ZCxvPXA7YnJlYWs7ZGVmYXVsdDplPTAsbj0wLG89MH1yZXR1cm4gbmV3IGc1KGUsbixvLHMpfWNteWtUb1JnYih0KXtyZXR1cm4gbmV3IGc1KCgxLXQuYykqKDEtdC5rKSwoMS10Lm0pKigxLXQuayksKDEtdC55KSooMS10LmspLHQuYSl9cmdiYVRvQ215ayh0KXtjb25zdCBlPTEtTWF0aC5tYXgodC5yLHQuZyx0LmIpO2lmKDE9PT1lKXJldHVybiBuZXcgeTUoMCwwLDAsMSx0LmEpO3JldHVybiBuZXcgeTUoKDEtdC5yLWUpLygxLWUpLCgxLXQuZy1lKS8oMS1lKSwoMS10LmItZSkvKDEtZSksZSx0LmEpfXJnYmFUb0hzdmEodCl7bGV0IGUsbjtjb25zdCBvPU1hdGgubWluKHQuciwxKSxpPU1hdGgubWluKHQuZywxKSxhPU1hdGgubWluKHQuYiwxKSxyPU1hdGgubWluKHQuYSwxKSxzPU1hdGgubWF4KG8saSxhKSxsPU1hdGgubWluKG8saSxhKSxjPXMsZD1zLWw7aWYobj0wPT09cz8wOmQvcyxzPT09bCllPTA7ZWxzZXtzd2l0Y2gocyl7Y2FzZSBvOmU9KGktYSkvZCsoaTxhPzY6MCk7YnJlYWs7Y2FzZSBpOmU9KGEtbykvZCsyO2JyZWFrO2Nhc2UgYTplPShvLWkpL2QrNDticmVhaztkZWZhdWx0OmU9MH1lLz02fXJldHVybiBuZXcgaDUoZSxuLGMscil9cmdiYVRvSGV4KHQsZSl7bGV0IG49IiMiKygxPDwyNHx0LnI8PDE2fHQuZzw8OHx0LmIpLnRvU3RyaW5nKDE2KS5zdWJzdHIoMSk7cmV0dXJuIGUmJihuKz0oMjU2fE1hdGgucm91bmQoMjU1KnQuYSkpLnRvU3RyaW5nKDE2KS5zdWJzdHIoMSkpLG59bm9ybWFsaXplQ01ZSyh0KXtyZXR1cm4gbmV3IHk1KHQuYy8xMDAsdC5tLzEwMCx0LnkvMTAwLHQuay8xMDAsdC5hKX1kZW5vcm1hbGl6ZUNNWUsodCl7cmV0dXJuIG5ldyB5NShNYXRoLmZsb29yKDEwMCp0LmMpLE1hdGguZmxvb3IoMTAwKnQubSksTWF0aC5mbG9vcigxMDAqdC55KSxNYXRoLmZsb29yKDEwMCp0LmspLHQuYSl9ZGVub3JtYWxpemVSR0JBKHQpe3JldHVybiBuZXcgZzUoTWF0aC5yb3VuZCgyNTUqdC5yKSxNYXRoLnJvdW5kKDI1NSp0LmcpLE1hdGgucm91bmQoMjU1KnQuYiksdC5hKX1zdHJpbmdUb0hzdmEodD0iIixlPSExKXtsZXQgbj1udWxsO3Q9KHR8fCIiKS50b0xvd2VyQ2FzZSgpO2NvbnN0IG89W3tyZTovKHJnYilhP1woXHMqKFxkezEsM30pXHMqLFxzKihcZHsxLDN9KVxzKiU/LFxzKihcZHsxLDN9KVxzKiU/KD86LFxzKihcZCsoPzpcLlxkKyk/KVxzKik/XCkvLHBhcnNlOmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgZzUocGFyc2VJbnQodFsyXSwxMCkvMjU1LHBhcnNlSW50KHRbM10sMTApLzI1NSxwYXJzZUludCh0WzRdLDEwKS8yNTUsaXNOYU4ocGFyc2VGbG9hdCh0WzVdKSk/MTpwYXJzZUZsb2F0KHRbNV0pKX19LHtyZTovKGhzbClhP1woXHMqKFxkezEsM30pXHMqLFxzKihcZHsxLDN9KSVccyosXHMqKFxkezEsM30pJVxzKig/OixccyooXGQrKD86XC5cZCspPylccyopP1wpLyxwYXJzZTpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IGI1KHBhcnNlSW50KHRbMl0sMTApLzM2MCxwYXJzZUludCh0WzNdLDEwKS8xMDAscGFyc2VJbnQodFs0XSwxMCkvMTAwLGlzTmFOKHBhcnNlRmxvYXQodFs1XSkpPzE6cGFyc2VGbG9hdCh0WzVdKSl9fV07by5wdXNoKGU/e3JlOi8jKFthLWZBLUYwLTldezJ9KShbYS1mQS1GMC05XXsyfSkoW2EtZkEtRjAtOV17Mn0pKFthLWZBLUYwLTldezJ9KT8kLyxwYXJzZTpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IGc1KHBhcnNlSW50KHRbMV0sMTYpLzI1NSxwYXJzZUludCh0WzJdLDE2KS8yNTUscGFyc2VJbnQodFszXSwxNikvMjU1LHBhcnNlSW50KHRbNF18fCJGRiIsMTYpLzI1NSl9fTp7cmU6LyMoW2EtZkEtRjAtOV17Mn0pKFthLWZBLUYwLTldezJ9KShbYS1mQS1GMC05XXsyfSkkLyxwYXJzZTpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IGc1KHBhcnNlSW50KHRbMV0sMTYpLzI1NSxwYXJzZUludCh0WzJdLDE2KS8yNTUscGFyc2VJbnQodFszXSwxNikvMjU1LDEpfX0pLG8ucHVzaCh7cmU6LyMoW2EtZkEtRjAtOV0pKFthLWZBLUYwLTldKShbYS1mQS1GMC05XSkkLyxwYXJzZTpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IGc1KHBhcnNlSW50KHRbMV0rdFsxXSwxNikvMjU1LHBhcnNlSW50KHRbMl0rdFsyXSwxNikvMjU1LHBhcnNlSW50KHRbM10rdFszXSwxNikvMjU1LDEpfX0pO2Zvcihjb25zdCBlIGluIG8paWYoby5oYXNPd25Qcm9wZXJ0eShlKSl7Y29uc3QgaT1vW2VdLGE9aS5yZS5leGVjKHQpLHI9YSYmaS5wYXJzZShhKTtpZihyKXJldHVybiByIGluc3RhbmNlb2YgZzU/bj10aGlzLnJnYmFUb0hzdmEocik6ciBpbnN0YW5jZW9mIGI1JiYobj10aGlzLmhzbGEyaHN2YShyKSksbn1yZXR1cm4gbn1vdXRwdXRGb3JtYXQodCxlLG4pe3N3aXRjaCgiYXV0byI9PT1lJiYoZT10LmE8MT8icmdiYSI6ImhleCIpLGUpe2Nhc2UiaHNsYSI6Y29uc3QgZT10aGlzLmhzdmEyaHNsYSh0KSxvPW5ldyBiNShNYXRoLnJvdW5kKDM2MCplLmgpLE1hdGgucm91bmQoMTAwKmUucyksTWF0aC5yb3VuZCgxMDAqZS5sKSxNYXRoLnJvdW5kKDEwMCplLmEpLzEwMCk7cmV0dXJuIHQuYTwxfHwiYWx3YXlzIj09PW4/ImhzbGEoIitvLmgrIiwiK28ucysiJSwiK28ubCsiJSwiK28uYSsiKSI6ImhzbCgiK28uaCsiLCIrby5zKyIlLCIrby5sKyIlKSI7Y2FzZSJyZ2JhIjpjb25zdCBpPXRoaXMuZGVub3JtYWxpemVSR0JBKHRoaXMuaHN2YVRvUmdiYSh0KSk7cmV0dXJuIHQuYTwxfHwiYWx3YXlzIj09PW4/InJnYmEoIitpLnIrIiwiK2kuZysiLCIraS5iKyIsIitNYXRoLnJvdW5kKDEwMCppLmEpLzEwMCsiKSI6InJnYigiK2kucisiLCIraS5nKyIsIitpLmIrIikiO2RlZmF1bHQ6Y29uc3QgYT0iYWx3YXlzIj09PW58fCJmb3JjZWQiPT09bjtyZXR1cm4gdGhpcy5yZ2JhVG9IZXgodGhpcy5kZW5vcm1hbGl6ZVJHQkEodGhpcy5oc3ZhVG9SZ2JhKHQpKSxhKX19fXg1Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx4NSl9LHg1Lsm1cHJvdj1Tbih7dG9rZW46eDUsZmFjdG9yeTp4NS7JtWZhY30pLHg1LmN0b3JQYXJhbWV0ZXJzPSgpPT5bXSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHg1LFt7dHlwZTpVbX1dLChmdW5jdGlvbigpe3JldHVybltdfSksbnVsbCk7Y2xhc3MgTzV7Y29uc3RydWN0b3IodCxlLG4pe3RoaXMuZWxSZWY9dCx0aGlzLmNkUmVmPWUsdGhpcy5zZXJ2aWNlPW4sdGhpcy5pc0lFMTA9ITEsdGhpcy5kaWFsb2dBcnJvd1NpemU9MTAsdGhpcy5kaWFsb2dBcnJvd09mZnNldD0xNSx0aGlzLmRpYWxvZ0lucHV0RmllbGRzPVt1NS5IRVgsdTUuUkdCQSx1NS5IU0xBLHU1LkNNWUtdLHRoaXMudXNlUm9vdFZpZXdDb250YWluZXI9ITF9aGFuZGxlRXNjKHQpe3RoaXMuc2hvdyYmInBvcHVwIj09PXRoaXMuY3BEaWFsb2dEaXNwbGF5JiZ0aGlzLm9uQ2FuY2VsQ29sb3IodCl9aGFuZGxlRW50ZXIodCl7dGhpcy5zaG93JiYicG9wdXAiPT09dGhpcy5jcERpYWxvZ0Rpc3BsYXkmJnRoaXMub25BY2NlcHRDb2xvcih0KX1uZ09uSW5pdCgpe3RoaXMuc2xpZGVyPW5ldyBNNSgwLDAsMCwwKTt0aGlzLnNsaWRlckRpbU1heD1uZXcgdjUodGhpcy5odWVTbGlkZXIubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aHx8MTQwLHRoaXMuY3BXaWR0aCwxMzAsdGhpcy5hbHBoYVNsaWRlci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRofHwxNDApLHRoaXMuZm9ybWF0PXRoaXMuY3BDbXlrRW5hYmxlZD91NS5DTVlLOiJyZ2JhIj09PXRoaXMuY3BPdXRwdXRGb3JtYXQ/dTUuUkdCQToiaHNsYSI9PT10aGlzLmNwT3V0cHV0Rm9ybWF0P3U1LkhTTEE6dTUuSEVYLHRoaXMubGlzdGVuZXJNb3VzZURvd249dD0+e3RoaXMub25Nb3VzZURvd24odCl9LHRoaXMubGlzdGVuZXJSZXNpemU9KCk9Pnt0aGlzLm9uUmVzaXplKCl9LHRoaXMub3BlbkRpYWxvZyh0aGlzLmluaXRpYWxDb2xvciwhMSl9bmdPbkRlc3Ryb3koKXt0aGlzLmNsb3NlRGlhbG9nKCl9bmdBZnRlclZpZXdJbml0KCl7aWYoMjMwIT09dGhpcy5jcFdpZHRofHwiaW5saW5lIj09PXRoaXMuY3BEaWFsb2dEaXNwbGF5KXt0aGlzLnNsaWRlckRpbU1heD1uZXcgdjUodGhpcy5odWVTbGlkZXIubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aHx8MTQwLHRoaXMuY3BXaWR0aCwxMzAsdGhpcy5hbHBoYVNsaWRlci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRofHwxNDApLHRoaXMudXBkYXRlQ29sb3JQaWNrZXIoITEpLHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpfX1vcGVuRGlhbG9nKHQsZT0hMCl7dGhpcy5zZXJ2aWNlLnNldEFjdGl2ZSh0aGlzKSx0aGlzLndpZHRofHwodGhpcy5jcFdpZHRoPXRoaXMuZGlyZWN0aXZlRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoKSx0aGlzLmhlaWdodHx8KHRoaXMuaGVpZ2h0PTMyMCksdGhpcy5zZXRJbml0aWFsQ29sb3IodCksdGhpcy5zZXRDb2xvckZyb21TdHJpbmcodCxlKSx0aGlzLm9wZW5Db2xvclBpY2tlcigpfWNsb3NlRGlhbG9nKCl7dGhpcy5jbG9zZUNvbG9yUGlja2VyKCl9c2V0dXBEaWFsb2codCxlLG4sbyxpLGEscixzLGwsYyxkLHAsbSxmLHUsZyxoLGIseSxfLEMsTSx2LHgsTyxQLHcsayxTLEQsUixFLEEsVCxOLHope3RoaXMuc2V0SW5pdGlhbENvbG9yKG4pLHRoaXMuc2V0Q29sb3JNb2RlKHMpLHRoaXMuaXNJRTEwPTEwPT09KGZ1bmN0aW9uIEkoKXtsZXQgdD0iIjsidW5kZWZpbmVkIiE9dHlwZW9mIG5hdmlnYXRvciYmKHQ9bmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpKTtjb25zdCBlPXQuaW5kZXhPZigibXNpZSAiKTtyZXR1cm4gZT4wJiZwYXJzZUludCh0LnN1YnN0cmluZyhlKzUsdC5pbmRleE9mKCIuIixlKSksMTApfSkoKSx0aGlzLmRpcmVjdGl2ZUluc3RhbmNlPXQsdGhpcy5kaXJlY3RpdmVFbGVtZW50UmVmPWUsdGhpcy5jcERpc2FibGVJbnB1dD1wLHRoaXMuY3BDbXlrRW5hYmxlZD1sLHRoaXMuY3BBbHBoYUNoYW5uZWw9Yyx0aGlzLmNwT3V0cHV0Rm9ybWF0PWQsdGhpcy5jcERpYWxvZ0Rpc3BsYXk9YSx0aGlzLmNwSWdub3JlZEVsZW1lbnRzPW0sdGhpcy5jcFNhdmVDbGlja091dHNpZGU9Zix0aGlzLmNwQ2xvc2VDbGlja091dHNpZGU9dSx0aGlzLnVzZVJvb3RWaWV3Q29udGFpbmVyPWcsdGhpcy53aWR0aD10aGlzLmNwV2lkdGg9cGFyc2VJbnQobywxMCksdGhpcy5oZWlnaHQ9dGhpcy5jcEhlaWdodD1wYXJzZUludChpLDEwKSx0aGlzLmNwUG9zaXRpb249aCx0aGlzLmNwUG9zaXRpb25PZmZzZXQ9cGFyc2VJbnQoYiwxMCksdGhpcy5jcE9LQnV0dG9uPVAsdGhpcy5jcE9LQnV0dG9uVGV4dD1rLHRoaXMuY3BPS0J1dHRvbkNsYXNzPXcsdGhpcy5jcENhbmNlbEJ1dHRvbj1TLHRoaXMuY3BDYW5jZWxCdXR0b25UZXh0PVIsdGhpcy5jcENhbmNlbEJ1dHRvbkNsYXNzPUQsdGhpcy5mYWxsYmFja0NvbG9yPXJ8fCIjZmZmIix0aGlzLnNldFByZXNldENvbmZpZyhfLEMpLHRoaXMuY3BQcmVzZXRDb2xvcnNDbGFzcz1NLHRoaXMuY3BNYXhQcmVzZXRDb2xvcnNMZW5ndGg9dix0aGlzLmNwUHJlc2V0RW1wdHlNZXNzYWdlPXgsdGhpcy5jcFByZXNldEVtcHR5TWVzc2FnZUNsYXNzPU8sdGhpcy5jcEFkZENvbG9yQnV0dG9uPUUsdGhpcy5jcEFkZENvbG9yQnV0dG9uVGV4dD1ULHRoaXMuY3BBZGRDb2xvckJ1dHRvbkNsYXNzPUEsdGhpcy5jcFJlbW92ZUNvbG9yQnV0dG9uQ2xhc3M9Tix0aGlzLmNwVHJpZ2dlckVsZW1lbnQ9eix5fHwodGhpcy5kaWFsb2dBcnJvd09mZnNldD0wKSwiaW5saW5lIj09PWEmJih0aGlzLmRpYWxvZ0Fycm93U2l6ZT0wLHRoaXMuZGlhbG9nQXJyb3dPZmZzZXQ9MCksImhleCI9PT1kJiYiYWx3YXlzIiE9PWMmJiJmb3JjZWQiIT09YyYmKHRoaXMuY3BBbHBoYUNoYW5uZWw9ImRpc2FibGVkIil9c2V0Q29sb3JNb2RlKHQpe3N3aXRjaCh0LnRvU3RyaW5nKCkudG9VcHBlckNhc2UoKSl7Y2FzZSIxIjpjYXNlIkMiOmNhc2UiQ09MT1IiOnRoaXMuY3BDb2xvck1vZGU9MTticmVhaztjYXNlIjIiOmNhc2UiRyI6Y2FzZSJHUkFZU0NBTEUiOnRoaXMuY3BDb2xvck1vZGU9MjticmVhaztjYXNlIjMiOmNhc2UiUCI6Y2FzZSJQUkVTRVRTIjp0aGlzLmNwQ29sb3JNb2RlPTM7YnJlYWs7ZGVmYXVsdDp0aGlzLmNwQ29sb3JNb2RlPTF9fXNldEluaXRpYWxDb2xvcih0KXt0aGlzLmluaXRpYWxDb2xvcj10fXNldFByZXNldENvbmZpZyh0LGUpe3RoaXMuY3BQcmVzZXRMYWJlbD10LHRoaXMuY3BQcmVzZXRDb2xvcnM9ZX1zZXRDb2xvckZyb21TdHJpbmcodCxlPSEwLG49ITApe2xldCBvOyJhbHdheXMiPT09dGhpcy5jcEFscGhhQ2hhbm5lbHx8ImZvcmNlZCI9PT10aGlzLmNwQWxwaGFDaGFubmVsPyhvPXRoaXMuc2VydmljZS5zdHJpbmdUb0hzdmEodCwhMCksb3x8dGhpcy5oc3ZhfHwobz10aGlzLnNlcnZpY2Uuc3RyaW5nVG9Ic3ZhKHQsITEpKSk6bz10aGlzLnNlcnZpY2Uuc3RyaW5nVG9Ic3ZhKHQsITEpLG98fHRoaXMuaHN2YXx8KG89dGhpcy5zZXJ2aWNlLnN0cmluZ1RvSHN2YSh0aGlzLmZhbGxiYWNrQ29sb3IsITEpKSxvJiYodGhpcy5oc3ZhPW8sdGhpcy5zbGlkZXJIPXRoaXMuaHN2YS5oLCJoZXgiPT09dGhpcy5jcE91dHB1dEZvcm1hdCYmImRpc2FibGVkIj09PXRoaXMuY3BBbHBoYUNoYW5uZWwmJih0aGlzLmhzdmEuYT0xKSx0aGlzLnVwZGF0ZUNvbG9yUGlja2VyKGUsbikpfW9uUmVzaXplKCl7ImZpeGVkIj09PXRoaXMucG9zaXRpb24/dGhpcy5zZXREaWFsb2dQb3NpdGlvbigpOiJpbmxpbmUiIT09dGhpcy5jcERpYWxvZ0Rpc3BsYXkmJnRoaXMuY2xvc2VDb2xvclBpY2tlcigpfW9uRHJhZ0VuZCh0KXt0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLnNsaWRlckRyYWdFbmQoe3NsaWRlcjp0LGNvbG9yOnRoaXMub3V0cHV0Q29sb3J9KX1vbkRyYWdTdGFydCh0KXt0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLnNsaWRlckRyYWdTdGFydCh7c2xpZGVyOnQsY29sb3I6dGhpcy5vdXRwdXRDb2xvcn0pfW9uTW91c2VEb3duKHQpeyF0aGlzLnNob3d8fHRoaXMuaXNJRTEwfHwicG9wdXAiIT09dGhpcy5jcERpYWxvZ0Rpc3BsYXl8fHQudGFyZ2V0PT09dGhpcy5kaXJlY3RpdmVFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnR8fHRoaXMuaXNEZXNjZW5kYW50KHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudCx0LnRhcmdldCl8fHRoaXMuaXNEZXNjZW5kYW50KHRoaXMuZGlyZWN0aXZlRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LHQudGFyZ2V0KXx8MCE9PXRoaXMuY3BJZ25vcmVkRWxlbWVudHMuZmlsdGVyKChlPT5lPT09dC50YXJnZXQpKS5sZW5ndGh8fCh0aGlzLmNwU2F2ZUNsaWNrT3V0c2lkZT90aGlzLmRpcmVjdGl2ZUluc3RhbmNlLmNvbG9yU2VsZWN0ZWQodGhpcy5vdXRwdXRDb2xvcik6KHRoaXMuaHN2YT1udWxsLHRoaXMuc2V0Q29sb3JGcm9tU3RyaW5nKHRoaXMuaW5pdGlhbENvbG9yLCExKSx0aGlzLmNwQ215a0VuYWJsZWQmJnRoaXMuZGlyZWN0aXZlSW5zdGFuY2UuY215a0NoYW5nZWQodGhpcy5jbXlrQ29sb3IpLHRoaXMuZGlyZWN0aXZlSW5zdGFuY2UuY29sb3JDaGFuZ2VkKHRoaXMuaW5pdGlhbENvbG9yKSx0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLmNvbG9yQ2FuY2VsZWQoKSksdGhpcy5jcENsb3NlQ2xpY2tPdXRzaWRlJiZ0aGlzLmNsb3NlQ29sb3JQaWNrZXIoKSl9b25BY2NlcHRDb2xvcih0KXt0LnN0b3BQcm9wYWdhdGlvbigpLHRoaXMub3V0cHV0Q29sb3ImJnRoaXMuZGlyZWN0aXZlSW5zdGFuY2UuY29sb3JTZWxlY3RlZCh0aGlzLm91dHB1dENvbG9yKSwicG9wdXAiPT09dGhpcy5jcERpYWxvZ0Rpc3BsYXkmJnRoaXMuY2xvc2VDb2xvclBpY2tlcigpfW9uQ2FuY2VsQ29sb3IodCl7dGhpcy5oc3ZhPW51bGwsdC5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLmNvbG9yQ2FuY2VsZWQoKSx0aGlzLnNldENvbG9yRnJvbVN0cmluZyh0aGlzLmluaXRpYWxDb2xvciwhMCksInBvcHVwIj09PXRoaXMuY3BEaWFsb2dEaXNwbGF5JiYodGhpcy5jcENteWtFbmFibGVkJiZ0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLmNteWtDaGFuZ2VkKHRoaXMuY215a0NvbG9yKSx0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLmNvbG9yQ2hhbmdlZCh0aGlzLmluaXRpYWxDb2xvciwhMCksdGhpcy5jbG9zZUNvbG9yUGlja2VyKCkpfW9uRm9ybWF0VG9nZ2xlKHQpe2NvbnN0IGU9dGhpcy5kaWFsb2dJbnB1dEZpZWxkcy5sZW5ndGgtKHRoaXMuY3BDbXlrRW5hYmxlZD8wOjEpLG49KCh0aGlzLmRpYWxvZ0lucHV0RmllbGRzLmluZGV4T2YodGhpcy5mb3JtYXQpK3QpJWUrZSklZTt0aGlzLmZvcm1hdD10aGlzLmRpYWxvZ0lucHV0RmllbGRzW25dfW9uQ29sb3JDaGFuZ2UodCl7dGhpcy5oc3ZhLnM9dC5zL3QucmdYLHRoaXMuaHN2YS52PXQudi90LnJnWSx0aGlzLnVwZGF0ZUNvbG9yUGlja2VyKCksdGhpcy5kaXJlY3RpdmVJbnN0YW5jZS5zbGlkZXJDaGFuZ2VkKHtzbGlkZXI6ImxpZ2h0bmVzcyIsdmFsdWU6dGhpcy5oc3ZhLnYsY29sb3I6dGhpcy5vdXRwdXRDb2xvcn0pLHRoaXMuZGlyZWN0aXZlSW5zdGFuY2Uuc2xpZGVyQ2hhbmdlZCh7c2xpZGVyOiJzYXR1cmF0aW9uIix2YWx1ZTp0aGlzLmhzdmEucyxjb2xvcjp0aGlzLm91dHB1dENvbG9yfSl9b25IdWVDaGFuZ2UodCl7dGhpcy5oc3ZhLmg9dC52L3QucmdYLHRoaXMuc2xpZGVySD10aGlzLmhzdmEuaCx0aGlzLnVwZGF0ZUNvbG9yUGlja2VyKCksdGhpcy5kaXJlY3RpdmVJbnN0YW5jZS5zbGlkZXJDaGFuZ2VkKHtzbGlkZXI6Imh1ZSIsdmFsdWU6dGhpcy5oc3ZhLmgsY29sb3I6dGhpcy5vdXRwdXRDb2xvcn0pfW9uVmFsdWVDaGFuZ2UodCl7dGhpcy5oc3ZhLnY9dC52L3QucmdYLHRoaXMudXBkYXRlQ29sb3JQaWNrZXIoKSx0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLnNsaWRlckNoYW5nZWQoe3NsaWRlcjoidmFsdWUiLHZhbHVlOnRoaXMuaHN2YS52LGNvbG9yOnRoaXMub3V0cHV0Q29sb3J9KX1vbkFscGhhQ2hhbmdlKHQpe3RoaXMuaHN2YS5hPXQudi90LnJnWCx0aGlzLnVwZGF0ZUNvbG9yUGlja2VyKCksdGhpcy5kaXJlY3RpdmVJbnN0YW5jZS5zbGlkZXJDaGFuZ2VkKHtzbGlkZXI6ImFscGhhIix2YWx1ZTp0aGlzLmhzdmEuYSxjb2xvcjp0aGlzLm91dHB1dENvbG9yfSl9b25IZXhJbnB1dCh0KXtpZihudWxsPT09dCl0aGlzLnVwZGF0ZUNvbG9yUGlja2VyKCk7ZWxzZXt0JiYiIyIhPT10WzBdJiYodD0iIyIrdCk7bGV0IGU9L14jKFthLWYwLTldezN9fFthLWYwLTldezZ9KSQvZ2k7ImFsd2F5cyI9PT10aGlzLmNwQWxwaGFDaGFubmVsJiYoZT0vXiMoW2EtZjAtOV17M318W2EtZjAtOV17Nn18W2EtZjAtOV17OH0pJC9naSk7Y29uc3Qgbj1lLnRlc3QodCk7biYmKHQubGVuZ3RoPDUmJih0PSIjIit0LnN1YnN0cmluZygxKS5zcGxpdCgiIikubWFwKCh0PT50K3QpKS5qb2luKCIiKSksImZvcmNlZCI9PT10aGlzLmNwQWxwaGFDaGFubmVsJiYodCs9TWF0aC5yb3VuZCgyNTUqdGhpcy5oc3ZhLmEpLnRvU3RyaW5nKDE2KSksdGhpcy5zZXRDb2xvckZyb21TdHJpbmcodCwhMCwhMSkpLHRoaXMuZGlyZWN0aXZlSW5zdGFuY2UuaW5wdXRDaGFuZ2VkKHtpbnB1dDoiaGV4Iix2YWxpZDpuLHZhbHVlOnQsY29sb3I6dGhpcy5vdXRwdXRDb2xvcn0pfX1vblJlZElucHV0KHQpe2NvbnN0IGU9dGhpcy5zZXJ2aWNlLmhzdmFUb1JnYmEodGhpcy5oc3ZhKSxuPSFpc05hTih0LnYpJiZ0LnY+PTAmJnQudjw9dC5yZztuJiYoZS5yPXQudi90LnJnLHRoaXMuaHN2YT10aGlzLnNlcnZpY2UucmdiYVRvSHN2YShlKSx0aGlzLnNsaWRlckg9dGhpcy5oc3ZhLmgsdGhpcy51cGRhdGVDb2xvclBpY2tlcigpKSx0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLmlucHV0Q2hhbmdlZCh7aW5wdXQ6InJlZCIsdmFsaWQ6bix2YWx1ZTplLnIsY29sb3I6dGhpcy5vdXRwdXRDb2xvcn0pfW9uQmx1ZUlucHV0KHQpe2NvbnN0IGU9dGhpcy5zZXJ2aWNlLmhzdmFUb1JnYmEodGhpcy5oc3ZhKSxuPSFpc05hTih0LnYpJiZ0LnY+PTAmJnQudjw9dC5yZztuJiYoZS5iPXQudi90LnJnLHRoaXMuaHN2YT10aGlzLnNlcnZpY2UucmdiYVRvSHN2YShlKSx0aGlzLnNsaWRlckg9dGhpcy5oc3ZhLmgsdGhpcy51cGRhdGVDb2xvclBpY2tlcigpKSx0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLmlucHV0Q2hhbmdlZCh7aW5wdXQ6ImJsdWUiLHZhbGlkOm4sdmFsdWU6ZS5iLGNvbG9yOnRoaXMub3V0cHV0Q29sb3J9KX1vbkdyZWVuSW5wdXQodCl7Y29uc3QgZT10aGlzLnNlcnZpY2UuaHN2YVRvUmdiYSh0aGlzLmhzdmEpLG49IWlzTmFOKHQudikmJnQudj49MCYmdC52PD10LnJnO24mJihlLmc9dC52L3QucmcsdGhpcy5oc3ZhPXRoaXMuc2VydmljZS5yZ2JhVG9Ic3ZhKGUpLHRoaXMuc2xpZGVySD10aGlzLmhzdmEuaCx0aGlzLnVwZGF0ZUNvbG9yUGlja2VyKCkpLHRoaXMuZGlyZWN0aXZlSW5zdGFuY2UuaW5wdXRDaGFuZ2VkKHtpbnB1dDoiZ3JlZW4iLHZhbGlkOm4sdmFsdWU6ZS5nLGNvbG9yOnRoaXMub3V0cHV0Q29sb3J9KX1vbkh1ZUlucHV0KHQpe2NvbnN0IGU9IWlzTmFOKHQudikmJnQudj49MCYmdC52PD10LnJnO2UmJih0aGlzLmhzdmEuaD10LnYvdC5yZyx0aGlzLnNsaWRlckg9dGhpcy5oc3ZhLmgsdGhpcy51cGRhdGVDb2xvclBpY2tlcigpKSx0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLmlucHV0Q2hhbmdlZCh7aW5wdXQ6Imh1ZSIsdmFsaWQ6ZSx2YWx1ZTp0aGlzLmhzdmEuaCxjb2xvcjp0aGlzLm91dHB1dENvbG9yfSl9b25WYWx1ZUlucHV0KHQpe2NvbnN0IGU9IWlzTmFOKHQudikmJnQudj49MCYmdC52PD10LnJnO2UmJih0aGlzLmhzdmEudj10LnYvdC5yZyx0aGlzLnVwZGF0ZUNvbG9yUGlja2VyKCkpLHRoaXMuZGlyZWN0aXZlSW5zdGFuY2UuaW5wdXRDaGFuZ2VkKHtpbnB1dDoidmFsdWUiLHZhbGlkOmUsdmFsdWU6dGhpcy5oc3ZhLnYsY29sb3I6dGhpcy5vdXRwdXRDb2xvcn0pfW9uQWxwaGFJbnB1dCh0KXtjb25zdCBlPSFpc05hTih0LnYpJiZ0LnY+PTAmJnQudjw9dC5yZztlJiYodGhpcy5oc3ZhLmE9dC52L3QucmcsdGhpcy51cGRhdGVDb2xvclBpY2tlcigpKSx0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLmlucHV0Q2hhbmdlZCh7aW5wdXQ6ImFscGhhIix2YWxpZDplLHZhbHVlOnRoaXMuaHN2YS5hLGNvbG9yOnRoaXMub3V0cHV0Q29sb3J9KX1vbkxpZ2h0bmVzc0lucHV0KHQpe2NvbnN0IGU9dGhpcy5zZXJ2aWNlLmhzdmEyaHNsYSh0aGlzLmhzdmEpLG49IWlzTmFOKHQudikmJnQudj49MCYmdC52PD10LnJnO24mJihlLmw9dC52L3QucmcsdGhpcy5oc3ZhPXRoaXMuc2VydmljZS5oc2xhMmhzdmEoZSksdGhpcy5zbGlkZXJIPXRoaXMuaHN2YS5oLHRoaXMudXBkYXRlQ29sb3JQaWNrZXIoKSksdGhpcy5kaXJlY3RpdmVJbnN0YW5jZS5pbnB1dENoYW5nZWQoe2lucHV0OiJsaWdodG5lc3MiLHZhbGlkOm4sdmFsdWU6ZS5sLGNvbG9yOnRoaXMub3V0cHV0Q29sb3J9KX1vblNhdHVyYXRpb25JbnB1dCh0KXtjb25zdCBlPXRoaXMuc2VydmljZS5oc3ZhMmhzbGEodGhpcy5oc3ZhKSxuPSFpc05hTih0LnYpJiZ0LnY+PTAmJnQudjw9dC5yZztuJiYoZS5zPXQudi90LnJnLHRoaXMuaHN2YT10aGlzLnNlcnZpY2UuaHNsYTJoc3ZhKGUpLHRoaXMuc2xpZGVySD10aGlzLmhzdmEuaCx0aGlzLnVwZGF0ZUNvbG9yUGlja2VyKCkpLHRoaXMuZGlyZWN0aXZlSW5zdGFuY2UuaW5wdXRDaGFuZ2VkKHtpbnB1dDoic2F0dXJhdGlvbiIsdmFsaWQ6bix2YWx1ZTplLnMsY29sb3I6dGhpcy5vdXRwdXRDb2xvcn0pfW9uQ3lhbklucHV0KHQpeyFpc05hTih0LnYpJiZ0LnY+PTAmJnQudjw9dC5yZyYmKHRoaXMuY215ay5jPXQudix0aGlzLnVwZGF0ZUNvbG9yUGlja2VyKCExLCEwLCEwKSksdGhpcy5kaXJlY3RpdmVJbnN0YW5jZS5pbnB1dENoYW5nZWQoe2lucHV0OiJjeWFuIix2YWxpZDohMCx2YWx1ZTp0aGlzLmNteWsuYyxjb2xvcjp0aGlzLm91dHB1dENvbG9yfSl9b25NYWdlbnRhSW5wdXQodCl7IWlzTmFOKHQudikmJnQudj49MCYmdC52PD10LnJnJiYodGhpcy5jbXlrLm09dC52LHRoaXMudXBkYXRlQ29sb3JQaWNrZXIoITEsITAsITApKSx0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLmlucHV0Q2hhbmdlZCh7aW5wdXQ6Im1hZ2VudGEiLHZhbGlkOiEwLHZhbHVlOnRoaXMuY215ay5tLGNvbG9yOnRoaXMub3V0cHV0Q29sb3J9KX1vblllbGxvd0lucHV0KHQpeyFpc05hTih0LnYpJiZ0LnY+PTAmJnQudjw9dC5yZyYmKHRoaXMuY215ay55PXQudix0aGlzLnVwZGF0ZUNvbG9yUGlja2VyKCExLCEwLCEwKSksdGhpcy5kaXJlY3RpdmVJbnN0YW5jZS5pbnB1dENoYW5nZWQoe2lucHV0OiJ5ZWxsb3ciLHZhbGlkOiEwLHZhbHVlOnRoaXMuY215ay55LGNvbG9yOnRoaXMub3V0cHV0Q29sb3J9KX1vbkJsYWNrSW5wdXQodCl7IWlzTmFOKHQudikmJnQudj49MCYmdC52PD10LnJnJiYodGhpcy5jbXlrLms9dC52LHRoaXMudXBkYXRlQ29sb3JQaWNrZXIoITEsITAsITApKSx0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLmlucHV0Q2hhbmdlZCh7aW5wdXQ6ImJsYWNrIix2YWxpZDohMCx2YWx1ZTp0aGlzLmNteWsuayxjb2xvcjp0aGlzLm91dHB1dENvbG9yfSl9b25BZGRQcmVzZXRDb2xvcih0LGUpe3Quc3RvcFByb3BhZ2F0aW9uKCksdGhpcy5jcFByZXNldENvbG9ycy5maWx0ZXIoKHQ9PnQ9PT1lKSkubGVuZ3RofHwodGhpcy5jcFByZXNldENvbG9ycz10aGlzLmNwUHJlc2V0Q29sb3JzLmNvbmNhdChlKSx0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLnByZXNldENvbG9yc0NoYW5nZWQodGhpcy5jcFByZXNldENvbG9ycykpfW9uUmVtb3ZlUHJlc2V0Q29sb3IodCxlKXt0LnN0b3BQcm9wYWdhdGlvbigpLHRoaXMuY3BQcmVzZXRDb2xvcnM9dGhpcy5jcFByZXNldENvbG9ycy5maWx0ZXIoKHQ9PnQhPT1lKSksdGhpcy5kaXJlY3RpdmVJbnN0YW5jZS5wcmVzZXRDb2xvcnNDaGFuZ2VkKHRoaXMuY3BQcmVzZXRDb2xvcnMpfW9wZW5Db2xvclBpY2tlcigpe3RoaXMuc2hvd3x8KHRoaXMuc2hvdz0hMCx0aGlzLmhpZGRlbj0hMCxzZXRUaW1lb3V0KCgoKT0+e3RoaXMuaGlkZGVuPSExLHRoaXMuc2V0RGlhbG9nUG9zaXRpb24oKSx0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKX0pLDApLHRoaXMuZGlyZWN0aXZlSW5zdGFuY2Uuc3RhdGVDaGFuZ2VkKCEwKSx0aGlzLmlzSUUxMHx8KGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsdGhpcy5saXN0ZW5lck1vdXNlRG93biksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFydCIsdGhpcy5saXN0ZW5lck1vdXNlRG93bikpLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLHRoaXMubGlzdGVuZXJSZXNpemUpKX1jbG9zZUNvbG9yUGlja2VyKCl7dGhpcy5zaG93JiYodGhpcy5zaG93PSExLHRoaXMuZGlyZWN0aXZlSW5zdGFuY2Uuc3RhdGVDaGFuZ2VkKCExKSx0aGlzLmlzSUUxMHx8KGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsdGhpcy5saXN0ZW5lck1vdXNlRG93biksZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFydCIsdGhpcy5saXN0ZW5lck1vdXNlRG93bikpLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJyZXNpemUiLHRoaXMubGlzdGVuZXJSZXNpemUpLHRoaXMuY2RSZWYuZGVzdHJveWVkfHx0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKSl9dXBkYXRlQ29sb3JQaWNrZXIodD0hMCxlPSEwLG49ITEpe2lmKHRoaXMuc2xpZGVyRGltTWF4KXtsZXQgbyxpLGE7Mj09PXRoaXMuY3BDb2xvck1vZGUmJih0aGlzLmhzdmEucz0wKTtjb25zdCByPXRoaXMub3V0cHV0Q29sb3I7aWYoaT10aGlzLnNlcnZpY2UuaHN2YTJoc2xhKHRoaXMuaHN2YSksdGhpcy5jcENteWtFbmFibGVkPyhuPyhhPXRoaXMuc2VydmljZS5jbXlrVG9SZ2IodGhpcy5zZXJ2aWNlLm5vcm1hbGl6ZUNNWUsodGhpcy5jbXlrKSksdGhpcy5oc3ZhPXRoaXMuc2VydmljZS5yZ2JhVG9Ic3ZhKGEpKTooYT10aGlzLnNlcnZpY2UuaHN2YVRvUmdiYSh0aGlzLmhzdmEpLHRoaXMuY215az10aGlzLnNlcnZpY2UuZGVub3JtYWxpemVDTVlLKHRoaXMuc2VydmljZS5yZ2JhVG9DbXlrKGEpKSksYT10aGlzLnNlcnZpY2UuZGVub3JtYWxpemVSR0JBKGEpLHRoaXMuc2xpZGVySD10aGlzLmhzdmEuaCk6YT10aGlzLnNlcnZpY2UuZGVub3JtYWxpemVSR0JBKHRoaXMuc2VydmljZS5oc3ZhVG9SZ2JhKHRoaXMuaHN2YSkpLG89dGhpcy5zZXJ2aWNlLmRlbm9ybWFsaXplUkdCQSh0aGlzLnNlcnZpY2UuaHN2YVRvUmdiYShuZXcgaDUodGhpcy5zbGlkZXJIfHx0aGlzLmhzdmEuaCwxLDEsMSkpKSxlKXt0aGlzLmhzbGFUZXh0PW5ldyBiNShNYXRoLnJvdW5kKDM2MCppLmgpLE1hdGgucm91bmQoMTAwKmkucyksTWF0aC5yb3VuZCgxMDAqaS5sKSxNYXRoLnJvdW5kKDEwMCppLmEpLzEwMCksdGhpcy5yZ2JhVGV4dD1uZXcgZzUoYS5yLGEuZyxhLmIsTWF0aC5yb3VuZCgxMDAqYS5hKS8xMDApLHRoaXMuY3BDbXlrRW5hYmxlZCYmKHRoaXMuY215a1RleHQ9bmV3IHk1KHRoaXMuY215ay5jLHRoaXMuY215ay5tLHRoaXMuY215ay55LHRoaXMuY215ay5rLE1hdGgucm91bmQoMTAwKnRoaXMuY215ay5hKS8xMDApKTt0aGlzLmhleFRleHQ9dGhpcy5zZXJ2aWNlLnJnYmFUb0hleChhLCJhbHdheXMiPT09dGhpcy5jcEFscGhhQ2hhbm5lbCksdGhpcy5oZXhBbHBoYT10aGlzLnJnYmFUZXh0LmF9aWYoImF1dG8iPT09dGhpcy5jcE91dHB1dEZvcm1hdCYmdGhpcy5mb3JtYXQhPT11NS5SR0JBJiZ0aGlzLmZvcm1hdCE9PXU1LkNNWUsmJnRoaXMuaHN2YS5hPDEmJih0aGlzLmZvcm1hdD10aGlzLmhzdmEuYTwxP3U1LlJHQkE6dTUuSEVYKSx0aGlzLmh1ZVNsaWRlckNvbG9yPSJyZ2IoIitvLnIrIiwiK28uZysiLCIrby5iKyIpIix0aGlzLmFscGhhU2xpZGVyQ29sb3I9InJnYigiK2EucisiLCIrYS5nKyIsIithLmIrIikiLHRoaXMub3V0cHV0Q29sb3I9dGhpcy5zZXJ2aWNlLm91dHB1dEZvcm1hdCh0aGlzLmhzdmEsdGhpcy5jcE91dHB1dEZvcm1hdCx0aGlzLmNwQWxwaGFDaGFubmVsKSx0aGlzLnNlbGVjdGVkQ29sb3I9dGhpcy5zZXJ2aWNlLm91dHB1dEZvcm1hdCh0aGlzLmhzdmEsInJnYmEiLG51bGwpLHRoaXMuZm9ybWF0IT09dTUuQ01ZSyl0aGlzLmNteWtDb2xvcj0iIjtlbHNlIGlmKCJhbHdheXMiPT09dGhpcy5jcEFscGhhQ2hhbm5lbHx8ImVuYWJsZWQiPT09dGhpcy5jcEFscGhhQ2hhbm5lbHx8ImZvcmNlZCI9PT10aGlzLmNwQWxwaGFDaGFubmVsKXtjb25zdCB0PU1hdGgucm91bmQoMTAwKnRoaXMuY215ay5hKS8xMDA7dGhpcy5jbXlrQ29sb3I9YGNteWthKCR7dGhpcy5jbXlrLmN9LCR7dGhpcy5jbXlrLm19LCR7dGhpcy5jbXlrLnl9LCR7dGhpcy5jbXlrLmt9LCR7dH0pYH1lbHNlIHRoaXMuY215a0NvbG9yPWBjbXlrKCR7dGhpcy5jbXlrLmN9LCR7dGhpcy5jbXlrLm19LCR7dGhpcy5jbXlrLnl9LCR7dGhpcy5jbXlrLmt9KWA7dGhpcy5zbGlkZXI9bmV3IE01KCh0aGlzLnNsaWRlckh8fHRoaXMuaHN2YS5oKSp0aGlzLnNsaWRlckRpbU1heC5oLTgsdGhpcy5oc3ZhLnMqdGhpcy5zbGlkZXJEaW1NYXgucy04LCgxLXRoaXMuaHN2YS52KSp0aGlzLnNsaWRlckRpbU1heC52LTgsdGhpcy5oc3ZhLmEqdGhpcy5zbGlkZXJEaW1NYXguYS04KSx0JiZyIT09dGhpcy5vdXRwdXRDb2xvciYmKHRoaXMuY3BDbXlrRW5hYmxlZCYmdGhpcy5kaXJlY3RpdmVJbnN0YW5jZS5jbXlrQ2hhbmdlZCh0aGlzLmNteWtDb2xvciksdGhpcy5kaXJlY3RpdmVJbnN0YW5jZS5jb2xvckNoYW5nZWQodGhpcy5vdXRwdXRDb2xvcikpfX1zZXREaWFsb2dQb3NpdGlvbigpe2lmKCJpbmxpbmUiPT09dGhpcy5jcERpYWxvZ0Rpc3BsYXkpdGhpcy5wb3NpdGlvbj0icmVsYXRpdmUiO2Vsc2V7bGV0IHQsZT0ic3RhdGljIixuPSIiLG89bnVsbCxpPW51bGwsYT10aGlzLmRpcmVjdGl2ZUVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5wYXJlbnROb2RlO2NvbnN0IHI9dGhpcy5kaWFsb2dFbGVtZW50Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0O2Zvcig7bnVsbCE9PWEmJiJIVE1MIiE9PWEudGFnTmFtZTspe2lmKHQ9d2luZG93LmdldENvbXB1dGVkU3R5bGUoYSksZT10LmdldFByb3BlcnR5VmFsdWUoInBvc2l0aW9uIiksbj10LmdldFByb3BlcnR5VmFsdWUoInRyYW5zZm9ybSIpLCJzdGF0aWMiIT09ZSYmbnVsbD09PW8mJihvPWEpLG4mJiJub25lIiE9PW4mJm51bGw9PT1pJiYoaT1hKSwiZml4ZWQiPT09ZSl7bz1pO2JyZWFrfWE9YS5wYXJlbnROb2RlfWNvbnN0IHM9dGhpcy5jcmVhdGVEaWFsb2dCb3godGhpcy5kaXJlY3RpdmVFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsImZpeGVkIiE9PWUpO2lmKHRoaXMudXNlUm9vdFZpZXdDb250YWluZXJ8fCJmaXhlZCI9PT1lJiYoIW98fG8gaW5zdGFuY2VvZiBIVE1MVW5rbm93bkVsZW1lbnQpKXRoaXMudG9wPXMudG9wLHRoaXMubGVmdD1zLmxlZnQ7ZWxzZXtudWxsPT09byYmKG89YSk7Y29uc3QgdD10aGlzLmNyZWF0ZURpYWxvZ0JveChvLCJmaXhlZCIhPT1lKTt0aGlzLnRvcD1zLnRvcC10LnRvcCx0aGlzLmxlZnQ9cy5sZWZ0LXQubGVmdH0iZml4ZWQiPT09ZSYmKHRoaXMucG9zaXRpb249ImZpeGVkIik7bGV0IGw9dGhpcy5jcFBvc2l0aW9uO2lmKCJhdXRvIj09PXRoaXMuY3BQb3NpdGlvbil7bD0oZnVuY3Rpb24gdChlLG4pe2xldCBvPSJyaWdodCIsaT0iYm90dG9tIjtjb25zdHtoZWlnaHQ6YSx3aWR0aDpyfT1lLHt0b3A6cyxsZWZ0Omx9PW4sYz1zK24uaGVpZ2h0LGQ9bCtuLndpZHRoLHA9cy1hPDAsbT1jK2E+KHdpbmRvdy5pbm5lckhlaWdodHx8ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCksZj1sLXI8MCx1PWQrcj4od2luZG93LmlubmVyV2lkdGh8fGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCk7aWYobSYmKGk9InRvcCIpLHAmJihpPSJib3R0b20iKSxmJiYobz0icmlnaHQiKSx1JiYobz0ibGVmdCIpLHAmJm0mJmYmJnUpcmV0dXJuWyJsZWZ0IiwicmlnaHQiLCJ0b3AiLCJib3R0b20iXS5yZWR1Y2UoKCh0LG4pPT5lW3RdPmVbbl0/dDpuKSk7cmV0dXJuIGYmJnU/cD8iYm90dG9tIjptfHxzPmM/InRvcCI6ImJvdHRvbSI6cCYmbT9mPyJyaWdodCI6dXx8bD5kPyJsZWZ0IjoicmlnaHQiOmAke2l9LSR7b31gfSkodGhpcy5kaWFsb2dFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksdGhpcy5jcFRyaWdnZXJFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpfSJ0b3AiPT09bD8odGhpcy5hcnJvd1RvcD1yLTEsdGhpcy50b3AtPXIrdGhpcy5kaWFsb2dBcnJvd1NpemUsdGhpcy5sZWZ0Kz10aGlzLmNwUG9zaXRpb25PZmZzZXQvMTAwKnMud2lkdGgtdGhpcy5kaWFsb2dBcnJvd09mZnNldCk6ImJvdHRvbSI9PT1sPyh0aGlzLnRvcCs9cy5oZWlnaHQrdGhpcy5kaWFsb2dBcnJvd1NpemUsdGhpcy5sZWZ0Kz10aGlzLmNwUG9zaXRpb25PZmZzZXQvMTAwKnMud2lkdGgtdGhpcy5kaWFsb2dBcnJvd09mZnNldCk6InRvcC1sZWZ0Ij09PWx8fCJsZWZ0LXRvcCI9PT1sPyh0aGlzLnRvcC09ci1zLmhlaWdodCtzLmhlaWdodCp0aGlzLmNwUG9zaXRpb25PZmZzZXQvMTAwLHRoaXMubGVmdC09dGhpcy5jcFdpZHRoK3RoaXMuZGlhbG9nQXJyb3dTaXplLTItdGhpcy5kaWFsb2dBcnJvd09mZnNldCk6InRvcC1yaWdodCI9PT1sfHwicmlnaHQtdG9wIj09PWw/KHRoaXMudG9wLT1yLXMuaGVpZ2h0K3MuaGVpZ2h0KnRoaXMuY3BQb3NpdGlvbk9mZnNldC8xMDAsdGhpcy5sZWZ0Kz1zLndpZHRoK3RoaXMuZGlhbG9nQXJyb3dTaXplLTItdGhpcy5kaWFsb2dBcnJvd09mZnNldCk6ImxlZnQiPT09bHx8ImJvdHRvbS1sZWZ0Ij09PWx8fCJsZWZ0LWJvdHRvbSI9PT1sPyh0aGlzLnRvcCs9cy5oZWlnaHQqdGhpcy5jcFBvc2l0aW9uT2Zmc2V0LzEwMC10aGlzLmRpYWxvZ0Fycm93T2Zmc2V0LHRoaXMubGVmdC09dGhpcy5jcFdpZHRoK3RoaXMuZGlhbG9nQXJyb3dTaXplLTIpOih0aGlzLnRvcCs9cy5oZWlnaHQqdGhpcy5jcFBvc2l0aW9uT2Zmc2V0LzEwMC10aGlzLmRpYWxvZ0Fycm93T2Zmc2V0LHRoaXMubGVmdCs9cy53aWR0aCt0aGlzLmRpYWxvZ0Fycm93U2l6ZS0yKSx0aGlzLmNwVXNlUG9zaXRpb249bH19aXNEZXNjZW5kYW50KHQsZSl7bGV0IG49ZS5wYXJlbnROb2RlO2Zvcig7bnVsbCE9PW47KXtpZihuPT09dClyZXR1cm4hMDtuPW4ucGFyZW50Tm9kZX1yZXR1cm4hMX1jcmVhdGVEaWFsb2dCb3godCxlKXtyZXR1cm57dG9wOnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wKyhlP3dpbmRvdy5wYWdlWU9mZnNldDowKSxsZWZ0OnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdCsoZT93aW5kb3cucGFnZVhPZmZzZXQ6MCksd2lkdGg6dC5vZmZzZXRXaWR0aCxoZWlnaHQ6dC5vZmZzZXRIZWlnaHR9fX1PNS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8TzUpKGdmKEtoKSxnZihPYiksZ2YoeDUpKX0sTzUuybVjbXA9c28oe3R5cGU6TzUsc2VsZWN0b3JzOltbImNvbG9yLXBpY2tlciJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmKFZ5KEYyLDcpLFZ5KEwyLDcpLFZ5KEIyLDcpKSwyJmUpe2xldCB0O0J5KHQ9VXkoKSkmJihuLmRpYWxvZ0VsZW1lbnQ9dC5maXJzdCksQnkodD1VeSgpKSYmKG4uaHVlU2xpZGVyPXQuZmlyc3QpLEJ5KHQ9VXkoKSkmJihuLmFscGhhU2xpZGVyPXQuZmlyc3QpfX0saG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJlJmKCJrZXl1cC5lc2MiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLmhhbmRsZUVzYyhlKX0pLCExLFBsKSgia2V5dXAuZW50ZXIiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLmhhbmRsZUVudGVyKGUpfSksITEsUGwpfSxkZWNsczoyOCx2YXJzOjQ3LGNvbnN0czpbWzEsImNvbG9yLXBpY2tlciIsMywiY2xpY2siXSxbImRpYWxvZ1BvcHVwIiwiIl0sWzMsImNsYXNzIiwidG9wIiw0LCJuZ0lmIl0sWyJjbGFzcyIsInNhdHVyYXRpb24tbGlnaHRuZXNzIiwzLCJzbGlkZXIiLCJyZ1giLCJyZ1kiLCJiYWNrZ3JvdW5kLWNvbG9yIiwibmV3VmFsdWUiLCJkcmFnU3RhcnQiLCJkcmFnRW5kIiw0LCJuZ0lmIl0sWzEsImh1ZS1hbHBoYSIsImJveCJdLFsxLCJsZWZ0Il0sWzEsInNlbGVjdGVkLWNvbG9yLWJhY2tncm91bmQiXSxbMSwic2VsZWN0ZWQtY29sb3IiXSxbInR5cGUiLCJidXR0b24iLDMsImNsYXNzIiwiZGlzYWJsZWQiLCJjbGljayIsNCwibmdJZiJdLFsxLCJyaWdodCJdLFsic3R5bGUiLCJoZWlnaHQ6IDE2cHg7Iiw0LCJuZ0lmIl0sWzEsImh1ZSIsMywic2xpZGVyIiwicmdYIiwibmV3VmFsdWUiLCJkcmFnU3RhcnQiLCJkcmFnRW5kIl0sWyJodWVTbGlkZXIiLCIiXSxbMSwiY3Vyc29yIl0sWzEsInZhbHVlIiwzLCJzbGlkZXIiLCJyZ1giLCJuZXdWYWx1ZSIsImRyYWdTdGFydCIsImRyYWdFbmQiXSxbInZhbHVlU2xpZGVyIiwiIl0sWzEsImFscGhhIiwzLCJzbGlkZXIiLCJyZ1giLCJuZXdWYWx1ZSIsImRyYWdTdGFydCIsImRyYWdFbmQiXSxbImFscGhhU2xpZGVyIiwiIl0sWyJjbGFzcyIsImNteWstdGV4dCIsMywiZGlzcGxheSIsNCwibmdJZiJdLFsiY2xhc3MiLCJoc2xhLXRleHQiLDMsImRpc3BsYXkiLDQsIm5nSWYiXSxbImNsYXNzIiwicmdiYS10ZXh0IiwzLCJkaXNwbGF5Iiw0LCJuZ0lmIl0sWyJjbGFzcyIsImhleC10ZXh0IiwzLCJoZXgtYWxwaGEiLCJkaXNwbGF5Iiw0LCJuZ0lmIl0sWyJjbGFzcyIsInZhbHVlLXRleHQiLDQsIm5nSWYiXSxbImNsYXNzIiwidHlwZS1wb2xpY3kiLDQsIm5nSWYiXSxbImNsYXNzIiwicHJlc2V0LWFyZWEiLDQsIm5nSWYiXSxbImNsYXNzIiwiYnV0dG9uLWFyZWEiLDQsIm5nSWYiXSxbMSwic2F0dXJhdGlvbi1saWdodG5lc3MiLDMsInNsaWRlciIsInJnWCIsInJnWSIsIm5ld1ZhbHVlIiwiZHJhZ1N0YXJ0IiwiZHJhZ0VuZCJdLFsidHlwZSIsImJ1dHRvbiIsMywiZGlzYWJsZWQiLCJjbGljayJdLFsyLCJoZWlnaHQiLCIxNnB4Il0sWzEsImNteWstdGV4dCJdLFsxLCJib3giXSxbInR5cGUiLCJudW1iZXIiLCJwYXR0ZXJuIiwiWzAtOV0qIiwibWluIiwiMCIsIm1heCIsIjEwMCIsMywidGV4dCIsInJnIiwidmFsdWUiLCJrZXl1cC5lbnRlciIsIm5ld1ZhbHVlIl0sWyJ0eXBlIiwibnVtYmVyIiwicGF0dGVybiIsIlswLTldKyhbXFwuLF1bMC05XXsxLDJ9KT8iLCJtaW4iLCIwIiwibWF4IiwiMSIsInN0ZXAiLCIwLjEiLDMsInRleHQiLCJyZyIsInZhbHVlIiwia2V5dXAuZW50ZXIiLCJuZXdWYWx1ZSIsNCwibmdJZiJdLFs0LCJuZ0lmIl0sWyJ0eXBlIiwibnVtYmVyIiwicGF0dGVybiIsIlswLTldKyhbXFwuLF1bMC05XXsxLDJ9KT8iLCJtaW4iLCIwIiwibWF4IiwiMSIsInN0ZXAiLCIwLjEiLDMsInRleHQiLCJyZyIsInZhbHVlIiwia2V5dXAuZW50ZXIiLCJuZXdWYWx1ZSJdLFsxLCJoc2xhLXRleHQiXSxbInR5cGUiLCJudW1iZXIiLCJwYXR0ZXJuIiwiWzAtOV0qIiwibWluIiwiMCIsIm1heCIsIjM2MCIsMywidGV4dCIsInJnIiwidmFsdWUiLCJrZXl1cC5lbnRlciIsIm5ld1ZhbHVlIl0sWzEsInJnYmEtdGV4dCJdLFsidHlwZSIsIm51bWJlciIsInBhdHRlcm4iLCJbMC05XSoiLCJtaW4iLCIwIiwibWF4IiwiMjU1IiwzLCJ0ZXh0IiwicmciLCJ2YWx1ZSIsImtleXVwLmVudGVyIiwibmV3VmFsdWUiXSxbMSwiaGV4LXRleHQiXSxbMywidGV4dCIsInZhbHVlIiwiYmx1ciIsImtleXVwLmVudGVyIiwibmV3VmFsdWUiXSxbMSwidmFsdWUtdGV4dCJdLFsxLCJ0eXBlLXBvbGljeSJdLFsxLCJ0eXBlLXBvbGljeS1hcnJvdyIsMywiY2xpY2siXSxbMSwicHJlc2V0LWFyZWEiXSxbMSwicHJlc2V0LWxhYmVsIl0sWzMsImNsYXNzIiw0LCJuZ0lmIl0sWyJjbGFzcyIsInByZXNldC1jb2xvciIsMywiYmFja2dyb3VuZENvbG9yIiwiY2xpY2siLDQsIm5nRm9yIiwibmdGb3JPZiJdLFsxLCJwcmVzZXQtY29sb3IiLDMsImNsaWNrIl0sWzMsImNsYXNzIiwiY2xpY2siLDQsIm5nSWYiXSxbMywiY2xpY2siXSxbMSwiYnV0dG9uLWFyZWEiXSxbInR5cGUiLCJidXR0b24iLDMsImNsYXNzIiwiY2xpY2siLDQsIm5nSWYiXSxbInR5cGUiLCJidXR0b24iLDMsImNsaWNrIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihDZigwLCJkaXYiLDAsMSksUmYoImNsaWNrIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gZS5zdG9wUHJvcGFnYXRpb24oKX0pKSxIbSgyLFYyLDEsNSwiZGl2IiwyKSxIbSgzLGoyLDIsOCwiZGl2IiwzKSxDZig0LCJkaXYiLDQpLENmKDUsImRpdiIsNSksdmYoNiwiZGl2Iiw2KSx2Zig3LCJkaXYiLDcpLEhtKDgsVTIsMiw1LCJidXR0b24iLDgpLE1mKCksQ2YoOSwiZGl2Iiw5KSxIbSgxMCxXMiwxLDAsImRpdiIsMTApLENmKDExLCJkaXYiLDExLDEyKSxSZigibmV3VmFsdWUiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uSHVlQ2hhbmdlKGUpfSkpKCJkcmFnU3RhcnQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25EcmFnU3RhcnQoImh1ZSIpfSkpKCJkcmFnRW5kIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uRHJhZ0VuZCgiaHVlIil9KSksdmYoMTMsImRpdiIsMTMpLE1mKCksQ2YoMTQsImRpdiIsMTQsMTUpLFJmKCJuZXdWYWx1ZSIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25WYWx1ZUNoYW5nZShlKX0pKSgiZHJhZ1N0YXJ0IiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uRHJhZ1N0YXJ0KCJ2YWx1ZSIpfSkpKCJkcmFnRW5kIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uRHJhZ0VuZCgidmFsdWUiKX0pKSx2ZigxNiwiZGl2IiwxMyksTWYoKSxDZigxNywiZGl2IiwxNiwxNyksUmYoIm5ld1ZhbHVlIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vbkFscGhhQ2hhbmdlKGUpfSkpKCJkcmFnU3RhcnQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25EcmFnU3RhcnQoImFscGhhIil9KSkoImRyYWdFbmQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25EcmFnRW5kKCJhbHBoYSIpfSkpLHZmKDE5LCJkaXYiLDEzKSxNZigpLE1mKCksTWYoKSxIbSgyMCxxMiwxNywxMiwiZGl2IiwxOCksSG0oMjEsSzIsMTQsMTAsImRpdiIsMTkpLEhtKDIyLCQyLDE0LDEwLCJkaXYiLDIwKSxIbSgyMyxuNSw4LDcsImRpdiIsMjEpLEhtKDI0LGk1LDksMywiZGl2IiwyMiksSG0oMjUsYTUsMywwLCJkaXYiLDIzKSxIbSgyNixkNSw2LDMsImRpdiIsMjQpLEhtKDI3LGY1LDMsMiwiZGl2IiwyNSksTWYoKSksMiZlJiYobHUoImRpc3BsYXkiLG4uc2hvdz8iYmxvY2siOiJub25lIikoInZpc2liaWxpdHkiLG4uaGlkZGVuPyJoaWRkZW4iOiJ2aXNpYmxlIikoInRvcCIsbi50b3AsInB4IikoImxlZnQiLG4ubGVmdCwicHgiKSgicG9zaXRpb24iLG4ucG9zaXRpb24pKCJoZWlnaHQiLG4uY3BIZWlnaHQsInB4IikoIndpZHRoIixuLmNwV2lkdGgsInB4IiksY3UoIm9wZW4iLG4uc2hvdyksRGMoMiksYmYoIm5nSWYiLCJwb3B1cCI9PW4uY3BEaWFsb2dEaXNwbGF5KSxEYygxKSxiZigibmdJZiIsMT09PShuLmNwQ29sb3JNb2RlfHwxKSksRGMoNCksbHUoImJhY2tncm91bmQtY29sb3IiLG4uc2VsZWN0ZWRDb2xvciksRGMoMSksYmYoIm5nSWYiLG4uY3BBZGRDb2xvckJ1dHRvbiksRGMoMiksYmYoIm5nSWYiLCJkaXNhYmxlZCI9PT1uLmNwQWxwaGFDaGFubmVsKSxEYygxKSxsdSgiZGlzcGxheSIsMT09PShuLmNwQ29sb3JNb2RlfHwxKT8iYmxvY2siOiJub25lIiksYmYoInJnWCIsMSksRGMoMiksbHUoImxlZnQiLG51bGw9PW4uc2xpZGVyP251bGw6bi5zbGlkZXIuaCwicHgiKSxEYygxKSxsdSgiZGlzcGxheSIsMj09PShuLmNwQ29sb3JNb2RlfHwxKT8iYmxvY2siOiJub25lIiksYmYoInJnWCIsMSksRGMoMiksbHUoInJpZ2h0IixudWxsPT1uLnNsaWRlcj9udWxsOm4uc2xpZGVyLnYsInB4IiksRGMoMSksbHUoImRpc3BsYXkiLCJkaXNhYmxlZCI9PT1uLmNwQWxwaGFDaGFubmVsPyJub25lIjoiYmxvY2siKSgiYmFja2dyb3VuZC1jb2xvciIsbi5hbHBoYVNsaWRlckNvbG9yKSxiZigicmdYIiwxKSxEYygyKSxsdSgibGVmdCIsbnVsbD09bi5zbGlkZXI/bnVsbDpuLnNsaWRlci5hLCJweCIpLERjKDEpLGJmKCJuZ0lmIiwhbi5jcERpc2FibGVJbnB1dCYmMT09PShuLmNwQ29sb3JNb2RlfHwxKSksRGMoMSksYmYoIm5nSWYiLCFuLmNwRGlzYWJsZUlucHV0JiYxPT09KG4uY3BDb2xvck1vZGV8fDEpKSxEYygxKSxiZigibmdJZiIsIW4uY3BEaXNhYmxlSW5wdXQmJjE9PT0obi5jcENvbG9yTW9kZXx8MSkpLERjKDEpLGJmKCJuZ0lmIiwhbi5jcERpc2FibGVJbnB1dCYmMT09PShuLmNwQ29sb3JNb2RlfHwxKSksRGMoMSksYmYoIm5nSWYiLCFuLmNwRGlzYWJsZUlucHV0JiYyPT09KG4uY3BDb2xvck1vZGV8fDEpKSxEYygxKSxiZigibmdJZiIsIW4uY3BEaXNhYmxlSW5wdXQmJjE9PT0obi5jcENvbG9yTW9kZXx8MSkpLERjKDEpLGJmKCJuZ0lmIiwobnVsbD09bi5jcFByZXNldENvbG9ycz9udWxsOm4uY3BQcmVzZXRDb2xvcnMubGVuZ3RoKXx8bi5jcEFkZENvbG9yQnV0dG9uKSxEYygxKSxiZigibmdJZiIsbi5jcE9LQnV0dG9ufHxuLmNwQ2FuY2VsQnV0dG9uKSl9LGRpcmVjdGl2ZXM6W1B2LEM1LF81LHh2XSxzdHlsZXM6WycuY29sb3ItcGlja2Vyey1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlcjoxcHggc29saWQgIzc3NztjdXJzb3I6ZGVmYXVsdDtoZWlnaHQ6YXV0bztwb3NpdGlvbjphYnNvbHV0ZTt1c2VyLXNlbGVjdDpub25lO3dpZHRoOjIzMHB4O3otaW5kZXg6MTAwMH0uY29sb3ItcGlja2VyICp7Ym94LXNpemluZzpib3JkZXItYm94O2ZvbnQtc2l6ZToxMXB4O21hcmdpbjowfS5jb2xvci1waWNrZXIgaW5wdXR7Y29sb3I6IzAwMDtmb250LXNpemU6MTNweDtoZWlnaHQ6MjZweDttaW4td2lkdGg6MDt0ZXh0LWFsaWduOmNlbnRlcjt3aWR0aDowfS5jb2xvci1waWNrZXIgaW5wdXQ6LW1vei1zdWJtaXQtaW52YWxpZCwuY29sb3ItcGlja2VyIGlucHV0Oi1tb3otdWktaW52YWxpZCwuY29sb3ItcGlja2VyIGlucHV0OmludmFsaWR7Ym94LXNoYWRvdzpub25lfS5jb2xvci1waWNrZXIgaW5wdXQ6Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24sLmNvbG9yLXBpY2tlciBpbnB1dDo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbnstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTttYXJnaW46MH0uY29sb3ItcGlja2VyIC5hcnJvd3tib3JkZXItc3R5bGU6c29saWQ7aGVpZ2h0OjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MDt6LWluZGV4Ojk5OTk5OX0uY29sb3ItcGlja2VyIC5hcnJvdy5hcnJvdy10b3B7Ym9yZGVyLWNvbG9yOiM3NzcgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXdpZHRoOjEwcHggNXB4O2xlZnQ6OHB4fS5jb2xvci1waWNrZXIgLmFycm93LmFycm93LWJvdHRvbXtib3JkZXItY29sb3I6dHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgIzc3Nztib3JkZXItd2lkdGg6MTBweCA1cHg7bGVmdDo4cHg7dG9wOi0yMHB4fS5jb2xvci1waWNrZXIgLmFycm93LmFycm93LWxlZnQtdG9wLC5jb2xvci1waWNrZXIgLmFycm93LmFycm93LXRvcC1sZWZ0e2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAjNzc3O2JvcmRlci13aWR0aDo1cHggMTBweDtib3R0b206OHB4O3JpZ2h0Oi0yMXB4fS5jb2xvci1waWNrZXIgLmFycm93LmFycm93LXJpZ2h0LXRvcCwuY29sb3ItcGlja2VyIC5hcnJvdy5hcnJvdy10b3AtcmlnaHR7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50ICM3NzcgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXdpZHRoOjVweCAxMHB4O2JvdHRvbTo4cHg7bGVmdDotMjBweH0uY29sb3ItcGlja2VyIC5hcnJvdy5hcnJvdy1ib3R0b20tbGVmdCwuY29sb3ItcGlja2VyIC5hcnJvdy5hcnJvdy1sZWZ0LC5jb2xvci1waWNrZXIgLmFycm93LmFycm93LWxlZnQtYm90dG9te2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAjNzc3O2JvcmRlci13aWR0aDo1cHggMTBweDtyaWdodDotMjFweDt0b3A6OHB4fS5jb2xvci1waWNrZXIgLmFycm93LmFycm93LWJvdHRvbS1yaWdodCwuY29sb3ItcGlja2VyIC5hcnJvdy5hcnJvdy1yaWdodCwuY29sb3ItcGlja2VyIC5hcnJvdy5hcnJvdy1yaWdodC1ib3R0b217Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50ICM3NzcgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXdpZHRoOjVweCAxMHB4O2xlZnQ6LTIwcHg7dG9wOjhweH0uY29sb3ItcGlja2VyIC5jdXJzb3J7Ym9yZGVyOjJweCBzb2xpZCAjMjIyO2JvcmRlci1yYWRpdXM6NTAlO2N1cnNvcjpkZWZhdWx0O2hlaWdodDoxNnB4O3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjE2cHh9LmNvbG9yLXBpY2tlciAuYm94e2Rpc3BsYXk6ZmxleDtwYWRkaW5nOjRweCA4cHh9LmNvbG9yLXBpY2tlciAubGVmdHtwYWRkaW5nOjE2cHggOHB4O3Bvc2l0aW9uOnJlbGF0aXZlfS5jb2xvci1waWNrZXIgLnJpZ2h0e2ZsZXg6MSAxIGF1dG87cGFkZGluZzoxMnB4IDhweH0uY29sb3ItcGlja2VyIC5idXR0b24tYXJlYXtwYWRkaW5nOjAgMTZweCAxNnB4O3RleHQtYWxpZ246cmlnaHR9LmNvbG9yLXBpY2tlciAuYnV0dG9uLWFyZWEgYnV0dG9ue21hcmdpbi1sZWZ0OjhweH0uY29sb3ItcGlja2VyIC5wcmVzZXQtYXJlYXtwYWRkaW5nOjRweCAxNXB4fS5jb2xvci1waWNrZXIgLnByZXNldC1hcmVhIC5wcmVzZXQtbGFiZWx7Y29sb3I6IzU1NTtmb250LXNpemU6MTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzo0cHg7dGV4dC1hbGlnbjpsZWZ0O3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7d2hpdGUtc3BhY2U6bm93cmFwO3dpZHRoOjEwMCV9LmNvbG9yLXBpY2tlciAucHJlc2V0LWFyZWEgLnByZXNldC1jb2xvcntib3JkZXI6MXB4IHNvbGlkICNhOWE5YTk7Ym9yZGVyLXJhZGl1czoyNSU7Y3Vyc29yOnBvaW50ZXI7ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0OjE4cHg7bWFyZ2luOjRweCA2cHggOHB4O3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjE4cHh9LmNvbG9yLXBpY2tlciAucHJlc2V0LWFyZWEgLnByZXNldC1lbXB0eS1tZXNzYWdle2ZvbnQtc3R5bGU6aXRhbGljO21hcmdpbi1ib3R0b206OHB4O21hcmdpbi10b3A6NHB4O21pbi1oZWlnaHQ6MThweDt0ZXh0LWFsaWduOmNlbnRlcn0uY29sb3ItcGlja2VyIC5oZXgtdGV4dHtmb250LXNpemU6MTFweDtwYWRkaW5nOjRweCA4cHg7d2lkdGg6MTAwJX0uY29sb3ItcGlja2VyIC5oZXgtdGV4dCAuYm94e3BhZGRpbmc6MCAyNHB4IDhweCA4cHh9LmNvbG9yLXBpY2tlciAuaGV4LXRleHQgLmJveCBkaXZ7Y2xlYXI6bGVmdDtjb2xvcjojNTU1O2ZsZXg6MSAxIGF1dG87ZmxvYXQ6bGVmdDt0ZXh0LWFsaWduOmNlbnRlcn0uY29sb3ItcGlja2VyIC5oZXgtdGV4dCAuYm94IGlucHV0e2JvcmRlcjoxcHggc29saWQgI2E5YTlhOTtmbGV4OjEgMSBhdXRvO3BhZGRpbmc6MXB4fS5jb2xvci1waWNrZXIgLmhleC1hbHBoYSAuYm94IGRpdjpmaXJzdC1jaGlsZCwuY29sb3ItcGlja2VyIC5oZXgtYWxwaGEgLmJveCBpbnB1dDpmaXJzdC1jaGlsZHtmbGV4LWdyb3c6MzttYXJnaW4tcmlnaHQ6OHB4fS5jb2xvci1waWNrZXIgLmNteWstdGV4dCwuY29sb3ItcGlja2VyIC5oc2xhLXRleHQsLmNvbG9yLXBpY2tlciAucmdiYS10ZXh0LC5jb2xvci1waWNrZXIgLnZhbHVlLXRleHR7Zm9udC1zaXplOjExcHg7cGFkZGluZzo0cHggOHB4O3dpZHRoOjEwMCV9LmNvbG9yLXBpY2tlciAuY215ay10ZXh0IC5ib3gsLmNvbG9yLXBpY2tlciAuaHNsYS10ZXh0IC5ib3gsLmNvbG9yLXBpY2tlciAucmdiYS10ZXh0IC5ib3h7cGFkZGluZzowIDI0cHggOHB4IDhweH0uY29sb3ItcGlja2VyIC52YWx1ZS10ZXh0IC5ib3h7cGFkZGluZzowIDhweCA4cHh9LmNvbG9yLXBpY2tlciAuY215ay10ZXh0IC5ib3ggZGl2LC5jb2xvci1waWNrZXIgLmhzbGEtdGV4dCAuYm94IGRpdiwuY29sb3ItcGlja2VyIC5yZ2JhLXRleHQgLmJveCBkaXYsLmNvbG9yLXBpY2tlciAudmFsdWUtdGV4dCAuYm94IGRpdntjb2xvcjojNTU1O2ZsZXg6MSAxIGF1dG87bWFyZ2luLXJpZ2h0OjhweDt0ZXh0LWFsaWduOmNlbnRlcn0uY29sb3ItcGlja2VyIC5jbXlrLXRleHQgLmJveCBkaXY6bGFzdC1jaGlsZCwuY29sb3ItcGlja2VyIC5oc2xhLXRleHQgLmJveCBkaXY6bGFzdC1jaGlsZCwuY29sb3ItcGlja2VyIC5yZ2JhLXRleHQgLmJveCBkaXY6bGFzdC1jaGlsZCwuY29sb3ItcGlja2VyIC52YWx1ZS10ZXh0IC5ib3ggZGl2Omxhc3QtY2hpbGR7bWFyZ2luLXJpZ2h0OjB9LmNvbG9yLXBpY2tlciAuY215ay10ZXh0IC5ib3ggaW5wdXQsLmNvbG9yLXBpY2tlciAuaHNsYS10ZXh0IC5ib3ggaW5wdXQsLmNvbG9yLXBpY2tlciAucmdiYS10ZXh0IC5ib3ggaW5wdXQsLmNvbG9yLXBpY2tlciAudmFsdWUtdGV4dCAuYm94IGlucHV0e2JvcmRlcjoxcHggc29saWQgI2E5YTlhOTtmbGV4OjE7ZmxvYXQ6bGVmdDttYXJnaW46MCA4cHggMCAwO3BhZGRpbmc6MXB4fS5jb2xvci1waWNrZXIgLmNteWstdGV4dCAuYm94IGlucHV0Omxhc3QtY2hpbGQsLmNvbG9yLXBpY2tlciAuaHNsYS10ZXh0IC5ib3ggaW5wdXQ6bGFzdC1jaGlsZCwuY29sb3ItcGlja2VyIC5yZ2JhLXRleHQgLmJveCBpbnB1dDpsYXN0LWNoaWxkLC5jb2xvci1waWNrZXIgLnZhbHVlLXRleHQgLmJveCBpbnB1dDpsYXN0LWNoaWxke21hcmdpbi1yaWdodDowfS5jb2xvci1waWNrZXIgLmh1ZS1hbHBoYXthbGlnbi1pdGVtczpjZW50ZXI7bWFyZ2luLWJvdHRvbTozcHh9LmNvbG9yLXBpY2tlciAuaHVle2JhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUpZQUFBQVFDQVlBQUFEMDZJWW5BQUFBQm1KTFIwUUEvd0QvQVArZ3ZhZVRBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBQUIzUkpUVVVINEFJV0R3a1VGV2JDQ0FBQUFGeEpSRUZVYU43dDBrRUtnMEFRQU1FMng4My9uMnF1NXFDZ0QxaURoQ29ZZHBuYlFDOWJiWTFxVk8vanZjNmszYWQ5MXM3LzdGMS9jc2dQcnVqdVExN0JEWVNGc0JBV3dnSmhJU3lFQmNKQ1dBZ0xoSVd3RUJZSWkyZjdBci8xVENnRkgyWDlBQUFBQUVsRlRrU3VRbUNDIik7ZGlyZWN0aW9uOmx0cn0uY29sb3ItcGlja2VyIC5odWUsLmNvbG9yLXBpY2tlciAudmFsdWV7YmFja2dyb3VuZC1zaXplOjEwMCUgMTAwJTtib3JkZXI6bm9uZTtjdXJzb3I6cG9pbnRlcjtoZWlnaHQ6MTZweDttYXJnaW4tYm90dG9tOjE2cHg7d2lkdGg6MTAwJX0uY29sb3ItcGlja2VyIC52YWx1ZXtiYWNrZ3JvdW5kLWltYWdlOnVybCgiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFKWUFBQUFRQ0FZQUFBRDA2SVluQUFBQ1RrbEVRVlI0MnUzU1lVY3JBQmhBNFUyU2ttUkpNbVdTSmtsS0ppV1pacEtVSkpza0tVbWFURkltS1pPVXpNeVNwR1JtbGlSTkppbEpTcEtTSkV0bVNwSXBtV21TZE83MzYvNkQreDdPUDNnVUNvV0N2MWNxbFNRbEpaR2NuRXhLU2dxcHFhbWtwYVdSbnA1T1JrWUdtWm1acUZRcXNyS3l5TTdPSmljbmg5emNYTlJxTlhsNWVlVG41NlBSYUNnb0tLQ3dzSkNpb2lLMFdpM0Z4Y1dVbEpSUVdscEtXVmtaNWVYbFZGUlVVRmxaaVU2bm82cXFpdXJxYW1wcWFxaXRyYVd1cmc2OVhrOTlmVDBHZ3dHajBVaERRd09OalkwME5UWFIzTnhNUzBzTHJhMnR0TFcxMGQ3ZWpzbGt3bXcyMDlIUlFXZG5KMTFkWFhSM2Q5UFQwME52Ynk5OWZYMzA5L2N6TUREQTRPQWdGb3VGb2FFaHJGWXJ3OFBEakl5TU1EbzZ5dGpZR0RhYmpmSHhjU1ltSnBpY25HUnFhZ3E3M2M3MDlEUXpNelBNenM0eU56ZkgvUHc4RG9jRHA5T0p5K1hDN1hhenNMREE0dUlpUzB0TExDOHZzN0t5d3VycUttdHJhM2c4SHJ4ZUx6NmZENy9mei9yNk9oc2JHMnh1YnJLMXRjWDI5amFCUUlDZG5SMkN3U0M3dTd2czdlMnh2Ny9Qd2NFQmg0ZUhIQjBkY1h4OHpNbkpDYWVucDV5ZG5YRitmczdGeFFXWGw1ZGNYVjF4ZlgzTnpjME50N2UzM04zZEVRcUZ1TCsvNStIaGdYQTRUQ1FTNGZIeGthZW5KNTZmbjNsNWVlSDE5WlZvTk1yYjJ4dnY3Kzk4Zkh3UWk4V0l4K044Zm42U1NDVDQrdnJpKy91Ym41OGZmbjkvK1ZjS2dTV3dCSmJBRWxnQ1MyQUpMSUVsc0FTV3dCSllBa3RnQ1N5QkpiQUVsc0FTV0FKTFlBa3NnU1d3QkpiQUVsZ0NTMkFKTElFbHNQNC9XSDhBbUo1WjZqSFM0aDhBQUFBQVNVVk9SSzVDWUlJPSIpO2RpcmVjdGlvbjpydGx9LmNvbG9yLXBpY2tlciAuYWxwaGF7YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSllBQUFBUUNBWUFBQUQwNklZbkFBQUFCbUpMUjBRQS93RC9BUCtndmFlVEFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFBQjNSSlRVVUg0QUlXRHdZUWxaTWEzZ0FBQVdWSlJFRlVhTjd0bUVHTzZqQVFSQ3NPQXJIZ0JweUFKWUdqY0dvY3hBbTRBMklIcG1vV0UwZUJIK2V6bUZsTnZVMDZzaEozVzZWRWVsV01VUUFJSUY5ZjZxWnBpbXNBMUxZdFMydUY1MS91MjdZVkFGWlZSVWtFb0dIZFBWL3NJY2JJRUlJa1VkSS85WGE3bmV5djYxK1NXRlVWQVZDU2N0MDBUV24yZnY2dTMrRWNmZDN0WHp5LzArbkVVdStTUGpvL2txenJtaVFwU2NONnY5OFhld2ZBOC9sTWtpTEoyV3hHU1VvcGNUNmZNNlUwTlg5L2ZyZmJqZXYxV3RmcmxaZkxoWWZEUVFIRy9BSU9sbkd3aklObEhDeGpIQ3pqWUptL1RKV2RDd3F1SlhzZUZGekd3RE5OZWlLTU9KVE84eFFkRFFhZUIyOStLOWVmZUxhQm85Sjd2ZHZ0SmoxUmpGRmpmaXY3cXY5NXRqeC83bGVTUWdoOTNlMWZmTWVJcDZPK1lRamhvL043OTF0MVhWT1NTSTdOLy9LKzQvR294V0xCeCtQQjUvT3A1WExKKy8zT2xKSldxeFUzbTgzb3Z2NWlHZjhLallObEhDeGpIQ3pqWUJrSHk1Z2Y1Z3VzdlFVN1UzN2pUQUFBQUFCSlJVNUVya0pnZ2c9PSIpO2JhY2tncm91bmQtc2l6ZToxMDAlIDEwMCU7Ym9yZGVyOm5vbmU7Y3Vyc29yOnBvaW50ZXI7ZGlyZWN0aW9uOmx0cjtoZWlnaHQ6MTZweDt3aWR0aDoxMDAlfS5jb2xvci1waWNrZXIgLnR5cGUtcG9saWN5e2JhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJJQUFBQWdDQVlBQUFBZmZDanhBQUFBQkhOQ1NWUUlDQWdJZkFoa2lBQUFBQWx3U0ZsekFBQUNld0FBQW5zQjAxQ08zQUFBQUJsMFJWaDBVMjltZEhkaGNtVUFkM2QzTG1sdWEzTmpZWEJsTG05eVo1dnVQQm9BQUFJQVNVUkJWRWlKN1pZOWF4UlJGSWFmc3hNU3RyTFFKcEFncEJGaGkrQzl3MVlTbzAwSTZSWi9nOXZacEJmL1FPcjRHeVJna1NLTlNyQWFkc1pxUUd3Q2t1QVd5UlpKc3lTd3ZoWjdOL3ZoenJnYkxIM0xkODU5N2pseno1MHpKb2t5eFhIOERxRFZhcjBxaTZ2OEJiSXRxU0dwRWNmeGRsbXNGV1hrdlg4QWZBVldnM1VLUEVuVDlHS3VqTXpzQUZnWnNWYUNOMVZUUWQ3N1hVbnJnRTFrdis2OTM1MjY4V1JwenJuSFp2WVJXQzdZdkMzcFJaWmwzd296cXRWcWl5SDlJZ2pBc3BrZDFHcTF4VUpRdFZyZEI5WktJQU90aGRnL1FjNjVMVWs3d05JTW9DVkpPODY1cllGaGtxalg2L2Q3dlY0R1BKd0JNcW9mVVJTNUpFazZGWUJlci9lZVliL01vOVd3Rm5QT3ZRYmVBdmZ1QUFLNEJONHNBSnRBRy9nSklFbG1OdWlKeWJhM0VHTm1aaVBlWnVFVm1WZWxsL1kvNk4rQ3pEbjNBWGhFT09vN0h2LzNCZUF6OEl6UWtNUG5KYnVQeDF3Qyt5WUo3LzBuWUlQNVMvMEZIS2RwK3J3Q0VFWFJTL3JmNUhsMUd0YjJNMGlTcENPcENaelBBVG1YMUV5U3BITUxBc2l5N01qTURvSHJHU0RYWm5hWVpkblJ3Qmg3SjkxdXR3bWN6QUE2Q2JHM0dnUGxlWDRqcVVIL2ExQ2t0cVJHbnVjM2hTQ0FNQjMyZ0tzcGtDdGdiM0tDUU1ta2plUDRXTkpUaHJOTlp2YWwxV3B0VElzdjdKdFE0dG1JZFJhOHFTb0VwV2w2WVdaTm9BTjB6S3haTlBlaHBMU0JadjJ0K1EwQ0o5bExuQVJRTEFBQUFBQkpSVTVFcmtKZ2dnPT0iKTtiYWNrZ3JvdW5kLXBvc2l0aW9uOjUwJTtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7YmFja2dyb3VuZC1zaXplOjhweCAxNnB4O2hlaWdodDoyNHB4O3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjEycHg7dG9wOjIxOHB4O3dpZHRoOjE2cHh9LmNvbG9yLXBpY2tlciAudHlwZS1wb2xpY3kgLnR5cGUtcG9saWN5LWFycm93e2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjUwJTt3aWR0aDoxMDAlfS5jb2xvci1waWNrZXIgLnNlbGVjdGVkLWNvbG9ye2JvcmRlcjoxcHggc29saWQgI2E5YTlhOTtib3JkZXItcmFkaXVzOjUwJTtoZWlnaHQ6NDBweDtsZWZ0OjhweDtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MTZweDt3aWR0aDo0MHB4fS5jb2xvci1waWNrZXIgLnNlbGVjdGVkLWNvbG9yLWJhY2tncm91bmR7YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ2dBQUFBb0NBWUFBQUNNL3JodEFBQUFoMGxFUVZSWVIrMlcwUWxBTVFnRDYwemRmd09kcWE4VG1JL3dRTXI1SzBJNWJaTEl6TE9hMm50MzdWVlZiZCtkRHg1b2JnQ0MzS0JMd0oyZmY0UG5WaWRrZit1Y0lodzgwSFFhQ0xvM0RNSDNDUkszaUZzbUFXVmw2aFBORHd0OEV2TkU1cStZdUVYY01na29uVk02U2R5Q29FdkFuWjh2MUhqeDgxN01pbG14U1VCNXJkTEpEeWNaZ1VBWlVjaC9BQUFBQUVsRlRrU3VRbUNDIik7Ym9yZGVyLXJhZGl1czo1MCU7aGVpZ2h0OjQwcHg7d2lkdGg6NDBweH0uY29sb3ItcGlja2VyIC5zYXR1cmF0aW9uLWxpZ2h0bmVzc3tiYWNrZ3JvdW5kLWltYWdlOnVybCgiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFPWUFBQUNDQ0FZQUFBQlNEN1QzQUFBQUJtSkxSMFFBL3dEL0FQK2d2YWVUQUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUFCM1JKVFVVSDRBSVdEd2tzUFdSNmxnQUFJQUJKUkVGVWVOcnRuVnVUNDdnUnJBSE4rUC8vT3IvNjFZNXdPTlo3bVoxdTNYQWVMTWpKWkdaVmdkS3NmYzV4UjNTMFJJSVVXK0NIekNwYzJNY1lvN1hHdjNleDdVaVpkNTdyanl6enYrdiszM1gvUi8rM3IvZjd2UjM4NlkrVHZLTmNmL3dkaFRMUGN2OXFVMndaZDc0dXRoMHQxODIxamtJWkxQY3NJLzZuV2E0WHZ1dHF1VTBaODVtbng4MFMvWnpncG5Mbk90SE50Ny9vZngxVEtYY1NOek4vN3FiTVEzanU3ck5RbU1ZWWQvNHMyajlhYStQK2dHYU1jWnJiMU0vdGRydmY3L2Qydjk5UDkvdDkzTy8zY2J2ZHh1MTJHOWZyZFZ3dWwzRStuOGMvLy9uUCsyKy8vWGI2NmFlZnhsLy8rdGZ4NXovLzJZSzVBbDJyZ3ZmNFVzYnBkR3JCNTJiQXZBclhwdXpqbWlxQVZTR3o1ZURtR1lYemhiQVptQ3JubXpkZHBVVSs4WTFkQU9ZZVhDdERVd1Z3VjdZQ0dINnVBbXlNY1o5bDV2a1VhQlBHTVVaNy9KNXcvNzkyL2Z2djlYcTkzMjYzZHIvZlR4UEVDZU1FOG5LNWpNL1B6L0hUVHovZHYzMzdkdnJsbDEvR1AvN3hqL0czdi8xdC9PVXZmd2tWc3dvbmdqZE9wOVB6SDNVM0Qzem1XR25aVlhuNGpDcXM3d0MyQktQNC84dEF6a1pzb1d4NlhycWVIWnltdnA0QUJDQkpoVFF3S2ZEVDhnenJaQ0lxaTVBaGlBQ2pCZkVCMnJQOC9YNjNNTTdmNi9WNnY5L3Y3WGE3YllDODNXN2pjcmxzVkhJcTVmZnYzMCsvL2ZiYitPV1hYOFpQUC8wMC92NzN2NCtmZi83NUpTdmJldStiTDJXTU1hRmJBbHBCTk04NVFYK2N0NnFvU3FrUEF3dVFsQlZLcUdORlNVT0FBM0JtdTdnQzVoTk9kMTVuU3d2QU9VVzdDNGdpVUNWOFNnbjVMOWhORklxVHNwMEd4STB5c2lveWpBamtZL3RHSlZFcHorZnorT1dYWCs3ZnYzOC8vZjc3NytQYnQyL2oxMTkvSFQvLy9QUDQ5ZGRmeDhmSFJ3cm1UalY3NzlFWHUycHgyeGhqd3RkSlpRY0FXUUlQTFBJU3NNSmFTd2lEOGd6SUtyd1N5QVRFNWo1bkFiUjVjMWRCVXdCbHNFV1cwaDZMcWlZc3FGUEFReEN5Ulozd09TQVJ4bWxYTVg1azY0cFFmdnYyN2Y3NStkaytQajVPSHg4ZjQvdjM3K1BidDIvanQ5OStHOSsrZlJzZkh4L2pjcm1VRkxPMzFnWURXYmx4UklzL1RxZlQ3b3VzeEpzQXhYQTJHYzdUQTlYZGdmZG9IYkZzajc2WDIrMVdBcmdJMWFnZUd3QTNxdXBxb0hzbWNiSTZGdTkzcXVnZ0ZhOWQ3TGVEdGdLZkFGSEJKK05FQnlJa2NKNUtlcnZkVG1oaEdjZ0pKU1o1dm4vL2ZqK2Z6KzE4UHA4K1B6L0g1K2ZubUdEKy92dnY0L3YzNytQajQyTjhmbjZPMisxV3M3SmpqUDZ3cmFNSTVFNFJaOHgydlY1VFN3a3F1b3RWNy9kN1R6NkhGV3NEL3FOY2R3MENRM3EvMzIxYzY4NlR3RFZJZGJ1eTczek5sZGhTSGI4STJrbFp6bm0rSW5CUzRVNm4wMzAyYUJGc0xoSERBS0pWSlZnbGZJOWpodnU1M1c1M3NMQU5ZTnhBaURBNk1DZVVIeDhmOSt2MTJpNlhTN3RjTHFjWlc1N1A1eWVZOC9mejgzT2N6K2Zuc1NtWVV5a25XRUc4NVdCc3Q5c3R6U0x5TWRmcjlRaTA4aVkxNVVaMExsREdMaFIzbzV6SzJqN09QVVREMEUrblUzdGs3WGIvMTZORmJobG9BTXVZMXpqTFVPTzNCS2VJRGUrWjhzMy9KNGdGbzRUTTVqUG11UmcyOGZvVUtLVlN3bzE2VGdBNW5weXdjV0xIZ1lsL1B6OC83My82MDUvYWI3LzkxbTYzVzd0Y0xpZTBzWmo0bWFvNWdUeWZ6ODhFMGYxK2o4RWNZendUUEVHMmNxanlmSE5GME04ZnVxRWlhT1ZuUnpaWlFOaDVmd1F5SGcvSERHZkpvODlRMXpiL3F1dTVYQzY3NzNJMlhLZlRxZC92OStkM3d1cVd2YS9ZVGRVZEVWM2ZoSXYvVml5cHM2WUUzeDNyNDNLNWJKUVM2NnpheFZHRnN2ZCsvL2o0YUYrL2ZtM2Z2Mzl2dDl1dGZmMzZ0ZjMrKysvdGRydWR2bjM3WnVOTEJhYUNNZ1V6QytyWlJpRm93eFV1Skk4WU1xY0NwOU9wcTV2YWdhWVU2bEdKQTFYUXFlamNodzZDajBHdzVuWUJyR3cwMUEyTzIwNm4wNEJHb3VOTnlUZnAvRndFbGhVZXk2blhySUt3N1FRV2RkeHVOMmxkTDVmTDgzOWdTUEY4YWh1L0p2Qk80OENQU3VxTWY4VnA5L1A1M0w1OCtkTHU5M3M3bjgvdGZyOC8zOS92OS9iNStUa2hQSjNQNTZtUTQzNi9qKy9mdisvaVNnYnplcjArQVp4LzUrODhidjZPTWRhNlM1ejZrZDIxZllDOWR4djdjSUpKMmQ5QU9TMzBmUE16eUhpVE04QjRERjZYVWxZSHA0S1FXM1crMXQ3N01OQjF2R0h4V3E3WGE3dmY3OCt5NS9ONUErSDFldDI5eHVQNWRiWXR5YVJ1NEFrc2JQcTY5MzZmalJ6WFJ4QmJQci9iK2IxOCtmS2xqVEhhQkJCZm44L24wLzErSDErK2ZCbm44em0wc0I4Zkg1dTRjcjVHdUJoTVZrMEVFbjlSc2N0Z1ZoTStpeGxKdE1BMjNSOEI2eXlzQXN0Qk9nRlhJS0tDTUlnVG9NcU5FdTJmWU1IN3p0YzczMmRRS2tDajF5dEFadFkwS3g4cElyOEdHSitBVDNWKzJIaXJobCsrZkJtWHkyV3o3M3crYjE3UDhwK2ZuOC90VXdHVmxlVmtUeVViNjhEa2ZheVdZNHp4TlJpaFU0RXBMSlBaVnJLK3U3SjQvbWdmS3FlTFc5WDJSRVdsSXRMMWRpeW5iRERiMytqWGdZalFxbjBycnhXYytOa0lMUDdGN3hJYk12eDd2VjUzeDQweG5sYldKRjEyWlNhZy9OMHBXNnQrWnptT016SGphakt3RGZvbmQ3OHpZVGRmcTE4dXA5N3pyMnE4djNJaW9CcHJSdEJsMEVaOW9nNVdCUkdPZE9IaklqWEY3VW90RmJnT1duWHpJSnl6WXZqRzVJWWdzbU1PeEhrejhPc01TclZOV2VxNVQ4RGFPY2JFdjFPZDVyYnM5YU83WXZNZXQ2M0VrRisrZk1FeHErTVJsNC9MNWJMWk4vK2V6K2ZuWjZLYXp1TXFYU1FWTzVzcEpYZmxIQUl6ZXMveEpzZWNrUkppRE1vZzlkNlZmUnJxWE1yNktwVlYyN2pSd0phY0dvdk9BTTF6TWRRTW53SzFBdWJLNjNrZENDaHZJMUM3ZzB6OW5mL0QrWHplMlZqOEg3R3g0UDlkdVFsc1lDcnF5TjhYcUczSG0vMTBPajNqdy9uK2NybHN0dU0ralBtbXhUMmRUdVB6ODNQenQycG4xWHNFSFgvYm5QYVZxVm1oMHh3T3QwbzZYTExBSGVQVVUyMDN3SGZjcnNwQ3dtVjNUcnlCNXMwTXNlZWc5N3gvQnd6Q2pCbGJCK3BSQVBsYTBCVlF1VDZWNlFIZEJsajNkMEtHMTQ3YitEcXhRZVV5bURPNDNXNGRRYXIrVElqd21BZDB6OC9oNjV2ZjAveUx2M1BiNVhMcHJ1L3lkRG85czdFVDBJK1BqNmRLSzlWVUVJZUtXUVdQQU9ySjhMS2Q0dkUrdDkxWTNlN1VGbFdhdGcyVndKbmIrSFBtdHZtL3NmSzU5L09hV0YzeC9lUDFVUEh2QTVERFlEcFlYZmIwZHJ2MVYyRGtCa3h0dy90RVdWVmxYV2RDOXBGWXM1L2pmaDlkUy8xNnZXN3M2bFRHK1RmcXN4U0pIeGtYWHEvWGRyMWV1NExzZkQ2UDN2c1QzTjc3RGtMK3pQbTVqU2RLTDR6UjNBeFFkNnJIa0xrWWxTb3dzcnE3em56dTZ3U3dkc01KT1htQTVmQmNqeHRnTUdCWUhscjV6b2todHNNQ1RnWExRT1c0WEM2ZEV5RU1wckw4bUFRelhSZ2R1aXgyeVp6b3J4a1lzRG4zaEIxVmVNTEdzWHNWdGdsMnBXOFMzc3ZrMHZ3N1I0aE5hSHZ2NGNBQ2w1SEZ6d0lIMEtjNnp1NFhqRFBSL2pwQVZ4V3pPMVhrMkREYjN2VGN4ZUdVMWlXWkhrbUlEV3ppV0t2aXJDSjREcmF2czZJSi9HRzZjVHFXZFhEeStmQXJRRFZWa0xxa1ZqQW9aSUlUZG1tSXFYd3FhOTVOMytNR1lvWlFkUlZOTzUzWTF4UmtoTzE2dlk3ZXU1MDdDYTlsSm5iR3B4T2VtUWhTdy9BUXNtbXA1elU5QmlVOEc2d3ZYNzZNNi9VNlBqNCtkbzBCejRDcGdpa25UVWVEcXdsS0JtZzN1NE9WanJaMUErckFjZ2FlaldxNmVKQ3ZDWUZET05Td09nSFg0RVFSdzhseGJ6RE9kRUs2Z1ozSGsxYis4ZzJvMUpGdEtYeXYvZkVkVFh1V2pXWGRBWmlCcDZBRGVEckNGaWltN0I2WkZuZWVJN0d2bS9QTWtVRFg2N1c3eEk4YjBENy92OGRBOXFmTjVvYUNmNzRXWmpIMG1mMWNtZlkxWTBKVUZtVnJUV3U4dXprTmNMdEVqN3U1RlhCVGtmQzZHT0E1cThZTXhPOEtWdkY2c0FWR2RjclVic0tPRGNRS2tMTU9NZG1seHVtNjQyWXJQbTI2QWxoWlcxWUIxUityckdzd0U4VGFZQVdlVU14ZGYrV2p3U3ZaMkVmM3l0T3lmbjUrUHBWUEFhcU9uNDNNdE5CcXZtamp4YmpNNGxaalpZNGdxTk1JNWt0YVcvc1lLTndTKzlsRlF6R2lobU1DS1BhNytaMFY2RWIwR1Jtb2J0cFg4SmxqV3U1Rk1MTjVqYTZoRzlrd1FnWnFmNSsxTkg1VXh6a0ZSZUNkV2hKOFhkbEdVa3hPN0hSbFlSbTRtVk80M1c3dGVyMTJUUEpFdy9ybUVOM0w1U0tISVdaZzlteitwVW9LT1lxNWJKVEpkWDJnbWUxVWN4TVpRRmFFUUlsSGN0MzJNK1kxQnpHa0d1emZpeUFOOXordWdwbFoxc3ltQ3JEQ1lZa0d4RFRwSTlSekJ5MHJIeWVEVUMxbldhZVVhRDluNHhrTnlZTUJEWnR6WjNCKytmSmxZMjFYRkRPY0FSSmxhYk95aVMzdUNwTEk5anJaakNEa2FWdmNDQ2p3b2duS1NoV2R6WFpXbFpNdlZUZ0Q4THBxbENMcnFnYmNCK3FZd3JnS1lwVDBjY0NxYkt5Q1ZhbGtFYWJuL0Z5bm9nQ3JQS2ZxZjUxeEo3c0dCMlpYY1pteG9TT3p0angzMDBEWmk3YTAvMkFJUjBVbEJhZzlTdUR3NktjQXpsYUI3dkhadldwaks5MGR5cnE2Ykt5RFVaUWJSMEIwNWJpTFFrSEljU1VtZ0lLK1N3dXFnSENub2lvMlJRVTF5aitCbkJ5OXBwaFZLTEd5QzdaekZLMXB4V0srRThJaFZDV0xOL3VMdG5VVTRheW9ZTG9hQU56OEZkdGFTdlk0cFYwQkVXMmxzNjFjenFsbEJLcFR5S2dNQWhyWjFjZGMxUlJPdFBtdldOa2RjS1o3Wkt4YVdqaVBMSk1wcDdPWkt4QStycUcvb0pManhmMHBuSmxxTG9EWm8zZ3lVMG1LR3lzMnRhS2Vjai9kMUMrckpTcGxCcWxUeUFxZ1IrRDhLaktsbVJMMmd0VWNBZEN0c0wraWpDTlQxb3FxcWtIMk9IRWJHNXNERm5VZzVBYSt5TG91MlZVMXB0ajFTMlpRcXYxT1JaTjlJV3pSZmdhUkJ4S29CRThVV3lxbEpGdHJJYzBBeE5qU2plZDk5Q1RZL1hEZlN6Q3o1TTBJWm9WRXNXblBGTlRzbDhvb1ZDMVR6YkdncUZaTkRTZ1Z3S0srMXNHRE1LcXhaQ1dHVk1EeXNpRXIxalZTUUpVWXdqNWlIT2xUaGRIdDQ0U1FnOUNOK25sOEQ5ME5NSWdBZGdyNDZKcVJpUjlJOHZSZEZ2YnIxN20veXhVTUtqTkxNaVZVQUR3dTJDV0doaGkrRjU1VFdNOU05Y29nem1zMWRuTTR1T0YvTEFFWVdkY3FuTTd5Rm15cTNJZndtT1JPZDdZMWlGV3RPam9ZOFRvNDFtVFY1SXlzZ0ZGdVJ6c2JXRkdiTklJSkNEdjFkT280bFpHN2pXQndSRnRWVEt1V3llQ0J5SktPYW44b1ozZXA5WGRkTmwwdER1YXl3THo5Y1hQWWVEQUEwU3BrQk85c2JWY1RPVldsZFB2NHV5ekVrenhIdGp2b25Ib1NrRkVXTm9vMWQ4RGhjUXB1dGQycHBOb240QnpvQWlKMWhCRlFnMGRWdGRiR0hIRFFXdXNobU5FUXVrTE0yUU8xRzJZOGJnVFhxRmhjQkpqN0VqUGdjUHRzOFVTOHFQcFBCL2RYem5PaDVaNDM4dHpINWVjNlFnck9LclJSZktteXNCbVVEQitQaFlhYk1sVlBFUitHQ1NJVFR6cjdhbTJ0QXJIM2JnY0V6UEptK2NyNWpKNE5uSE5GRFZyRlhjSTVMZTlrNUpudytiZWRiVitGZlJ6WklIYU9PYU9zTFkwLzdVR3M1OERqckd3S01JTUZJR3pPRVcxL2pHc2RBdENONmhFQUk0aEJlOVlYZVJST0JTVlBBVlBBcXZJTTVieDVoVktXQU1QNnpCUnkzaWVzY3JpZFZkRkJpbkJ4WERuRzJHUlkyWGJDdnAxbGh2R3RPOUJ4dTVoOTA4WFF1NDJsblNBck1GZGl6TWltOHV3UkN4UEdubk9TOGx3cG5iT2lEcVRBanNyUk4vUGNvQVNjQ2JhQUNxVk00MHlsbmpqVEJzK2J3V2xBRzIzL1VLYmRraXdLV0lRUEd6V2FjenBvU2x4UEVqODIyY05Xa3BTN0Z5enNEcnFwZmdwRzNqYWh3MnZnYmFTUUF4dUxXWll0N0p6eU5lOEpvWnBOQWN2REZPZHcwd3FZVDlBSzFyWnovRGRiU2xMUHAwcnlJeGdRSmxLOUFabEVxN0lPWHBvaGc5UElockNuZzg4SnNPeGlWNFpXQVlmZzRzaWt4LzhreTJaOWw4NjJ1cXdyZnNjSUg4K3VnVG1WR3lpZGRlVllVZ0VNbjRHWnpnMTRFd0lzaDlzeDJjS0tpV1hSZXVPRTVnekdPUWdkbFJLVlZkbGV2cWIyNzlYcTBRbnN0czJWRGFCTzBjb2V6c3J1V3RIQXB1NnNLRzRJQmhOMGFHVTJrTHJNS0dSVE4zSG1iQ0R3S1YxNHp2a01FREc0UWZaVnNwVmxhTlUybWhjNVRFWjNOMWgvenFUaGV1THBXMDVaV1RHVmpiM2Ribk5teEtaQm5OOEpxaWRhVkxLQU95QVJOTFMrTUI1NFoyK1ZhcW9NTEtyb1ZCbG5nZWZuVFBBY29ITldDU3ZsZkE4Q0kwSEVtQk5CbkJsWHlNcnpVN0E3V1ZtOTRQUHFRMmdtcUt4K1dER3NudmlsbWNTT0JKcU9LMW5ZeUFJenVBeWVzcTNVZFNLM0tmV2NZS0Q5NUhtZllPVTNxc2VyMkN0WUVVQStGcGZxZE52Z1BCWlVCaERyR09OUlZsUXNoOHJMY2FVQ3lrSEcwT09Vd1RsTEJyc2g1c29FTUdlemkxRTRIUlZ0MWljcDV3WkVGWGRpYkNrRzhZOHZYNzVzYk80RTBpb205eitoalNpT2Z5M0RocFhJdHBWaEUrVUdRZHZvV2p0Q2htckdIZjRZQXpLZ0JObkd0dUp4RkNlR2RoVUFmUUxMSzhrQllBUDZndkZKWmFqTUczWGt5Y3k4S3VDMHE0RXl5bXd0d2R4ZHYyTTBtSUJ0SzBMS25mNjQwajAwQXVxNGdVa2RXR2xoczIycUpjNmRaQ3NMMTlveG5sVEpHNFNZVlJJR3BEOFRQRkJ1TTZPRWxiUzFwbGRpZDRtR0F5TjZaSXVwYkM1YlhKTjlmZHBiVGhTeExVYUk4SUcxWElZQnhXM1RqczZLUW9zS2N4ZnhjUW1kbndSR00xMEduRmNDeTJYWXVuTE15QWtkZ2s0bWVQaWN6c0x5Z3RoY0J1dDZnb09xUzdZVkZYQURMamFvc0I2czZvZmNaV0FaU0lSWXFTVWtpell3dHRZYWIzdlVPUTl3MkhSeElJZzhXd1JWZUU2OHhpNFV0TDN6UnBoeHBsend1WnJjcVlDcTFJM2pQSTVkbkpJeWdFb2hNYlBxVkpTenJ3enhCSlRzNXpOK1JlVVNneGlrUFFWRjNKVkJlTlF4YkhFTnJFTU52RWRGWlZWOWxIOStPUkdFc05aUXB5VE5jNEMzQUc3WEY0bmd6cStEck8yemJ1YWFPWGdkYUZjZGtFb3RvU0ZCVlgycUowQzhPV1plRzRLR2xwZ2hBMFhmVE9QQ3FWMnFxd1EyNlFXZkYyUE1MaEkydzFsVkFhMmFQc1lkMHphMjVNUVJ3Z2NaTjZ1UURDaStaeGlENFhFTTJrWnhPVDQxRm5abmFSbGNwWm91emxScXFkYlFWV29wUW9TQjU4UlY1MGxCTnJIaS9Bd1hTNUxyd0RWbHBZM0ZjM0J5aVlHYzUyVHJpc3Q2a09YZHdJbkFRdEpwcDVRY2h5YXF1WU9WN1N1K2Z4Vk1hVjNkYzBSRTJTNm1VWTBnTHQycE1jWXFyS0lROXcybDFncFFVTXRRWWNtbWJ0NURUTnhkaG5VQ2pRcXRiSzlTVVN6dnJDMG1taGhFMWUyRlMyK294eXB5L1pBU3V0a210angzdmNCQzI0UFg2NW5icWtCQ1JoZmpTOWtJWVBuZWU4Y01hZ1ZPaEkvM1QxZkFtZHRBV1pzQ3N3VEpDa1FWTmEwcVdLU0tQT3BIQVVoRDlEcmJWY3lvWWt3cWh2aDE3dllBYXlYTFF5S0dZZHhsVURGcDQ5NHJCWFJqWWdPMTdERFlldE5JVWovZXpwNlMwbG5scEV3c1dtSk1rT3dzS1hlWktFQWpJSG4wRVFKSVNhUkJjTzZVTUlOejdwL2JFampudzRmdCt4bUR2a3N4WDRHMnJJcmlzN3FhZUt3QUZNUDJPaTduNGNyaXVad3RwU1V3cGZMeFNuT1JTcklxdXNjNVpGYVh5c3FSV2ppWjJEeUFXRUlMMzV0VlNvUUVsRkFDak9lR0dTRTdBSEVRZ2RvL0xTdkNPZ0dCdmt4c21EYnZsUzNGcDV2aGFCMlRBR3FSS3JLS01yaExWcGFHekVWalowT1F4RGhhQ1RBK1F5UlIxZDE1YVF6ckpudEwzUmlic2lwakc2amxnTDR5cWJTMHNOWWcxZTg0dmhiQlZyRWxLNjRDVWNXWVhEZkt4aHBJdXhpVkpaVXhzYk15L3VSQktUTlJRNGtRM0xkUllMUzBySmpSUGxUUHFZNmdkSnNFRGMrYVFYQW4rSGdzTlVDYlJ1RjBPajB6d25BN2JXRGtiaE81RW5zMDBxZVFoUzFsYUJNbDVNL2NBYXhzTEY4ckt5cWwrVGY3RUxMRUd1L2l4aWltZEN2bzBUamZwakt3YWdnZW40ZWg1djdMb2tMS2JMdXl2SGhjWkc4ZGhHckVEeDdIZzkzWnBwSkY3cUJxTzNpVnZlWEVEUU5Jbnplb2U4WXE2ZVBhWkJaMkp2aU0zVzJVQUdvdGVrUkNBR3E0RWtGMVgzRE9uUjExeVJzQkwxdFJhMFBWY1ppTkZYWjJjMzRGc2t2b21JblFRNmx6cEpvWmJKeGs0M053S0pGQnF1SlNzckJ5SHlkeEtPblR4UUFTQm1TM2orSk1uc0hTbGEzRWM2SzlWV29KVm45emZqd09NN2hxWUFBcUpRd0UyYTNuQTQ4SjJRR2VnUmtwWk5pdlNZK3lzM0VrS2Q0b0pJd3N2SUhsM2NXZ0x0NWs0Tkg2T210TFdkcHVyT2t3RU11cFljN2VNdERSaE9jSTJ1aTVKaFZJelh6THl0by9HQVB1Wm95bzh3a29kdVZnSmdsQ3Q3T2hHYmdJRDRNcTRzaSs2M3pVUzFGdUZGWEZscXlhajJlbUhsTE1jQnFZdTBGTXVSMjhCYkI3bE94Uk1TaUNRWEZoQ0t1d2toWitwWURpR1NnYnNLS1Y4TWlTUnN1SFNJV005cmtsUmlJbFpadXFYanNRSzhvb1lKTWdxM0pLV1ZraEhiaHNWeEZVenRoT1dQa1lpamNieDU0SUtzU2RUK3VMcjNjckdLeW9ZZ0ZpR1I5aUJrNGtmbG9VWCtKSWxRUlFxYWJtcGduaHF0cFFwYjZSVlExV0g1RG5yUzRoRW9HWnFhZXJRMmRoRmJ6OFhlUHhTaG1EYm83MGVJU2pvb3JPMnZLOFNKWEk0U1VtRVU0eldLRHpVRHRXVFl3N3hYbGJTVEVqNEZSZzd6S25Lb0dSQUx2MEdzOVRnYzFCcEN5d0daUlFBdHFWejJ4ckJjQU16RXBmWndGU2EyRzVXMFFCRmpTTWFwV0FFRmEzSGNHTjdDeER6RUN5SWtKOTdxd3JxV05UV1ZvODc2UFBzalBrajJ3dmdyb001bExaS01FVEtWcWwvQ3ZuV1ZGaUZhL1N6SlVRd2tvWnNyNjdZNnZsU1JWMy8ydG1OVE9ZM3ZuYXhZd011b1BLcWR6UjF3N0lxSHltbFB4YUFUaGZVN0tvMlpYWWo0QVlKSEwra05kS3dSUVlFU1RSYTVmc1VaL3JWQzFUTVR5V1Z5WW9xTnR1emFIc015djJ0dm9hcnhkZnF3WWdVMWF4Rm8vY25xbDFGR3NxSyt1QVJPVjhCWDRHVThXY1pUQVRpMnE3UWN5aTBPMFYrR2hXQk1OUlVrbjhIMVNzV1ZFNUJ5M0dpMEVDcVVlSm9CZkF0RGE0YW1rZFhHMzdBR1A1R2dlYjg0cDdVYXpwb0tSemRGemVROEhrb0hHeHByS3kvSHBtNXQxMnA0N0o2eFRZREV6N3VJTkVYU3V4WVh2RnNrWUFjK3lTeEg5c2Y1ZnRLelU2SWJ3VkJjVUdnNWU1Rk1DRVhTRXJaUjB3R2F5VjE5d29NOWd1UGpUcUpkVlRxUjR1RTRuSm5MbGRXVmtFQ0NaTGQyVkxGK3h0YW1leDdJcGlyaVNEVXB2cnBuOWxyd0dNQ0h5cHBNSCtwczZMSUxzdUZHVWoxWEVPWGlxYnFTSFBVS25DbHBXVjY4a3F0VVJWTkRZNFROYW9jeWtvWWVUVTVuZ0dFUWEvUzFEbm5FNEFlWE1jS2pIUEFtRlZqQ0JFTmFleUxWTkhmcjNweDh4VXN0Sjk0aElwZkg0SEtFL2VEYUFySzZsU3lWVkZiZHQxZ3hUSVZrM3BwcFZsRlhpNHBFaFZCVE9icXVvaFU4NU1MWG4xaWFodlVrSEpqU0NNYzAxdExGdmVWVkJ4MERvZE02amZ0Q3U3RE90SXpZeHJjMHFwMUpHUDJheVlGejJHYjZIdk1yTzhjbkd0VjZHam0zdUltU2ZEMkdwV0s2dW93YlpHTXhGS1FDbzFwT010Y01YRnBSc3QraFhHb0FvbUYzc1NUQkdnVGdsYkJLV3dzUTN0WnFhWVNwMFoxQ2ltUkRXRmNDSlVQWUowMEJJNUZrS1lOb2lmdVF4bU44OFNXVlhXTE1hVXFxcWdDMEJtUUpSNnNrM3U5TkNmNmpZTFh4QWZxc1lFZ1ZMQWhSWTJBdGd0ZmxaTkZtRnloeGRyTGtBZFdsazREODhNMml4SHllcElkaE1IckcvaVIxWkd0cTBNR3BiRGJSUFlPWGVTWTFNNk55NFpzdHZHU2t0SytYYkZQQVRqMkQzNzFzYVBFc0FNWGhYcnNaMGttL1hTdGtoaE15QmZzYTZ1WEZaZTJWQ2UrWU1yMStHS2d3clF5TllxMVZSckIrRWl6QW93Nk5zZE5LY3lWRWtZZU03M3lzNnE0a0FIcDZCaUZrbFRrSXJWQzVvWVY3dXp3T0dDejRVSjBTdHEybFdNSnk0d3RiK1JldEw2dFpGaWNuSm1CdzVVakN2WFhNWlZKWDJNUWtiZitYTjVFV2Q3OFZ6OC9KRXNNWlRCaUtOenNtMWluTFJVUTc0SDROaWRhcUk2OGo1c0FGZ3hjUnZlQzdpZUxKWGZRWXhqWloyQ3NpV0Zld1pYSm1CSWxaMXRkdHJYNGhTdWF0ZUtzby9SWk90T0tXMm5tcTFvVHplSzZkUldBV3UyTlJWYjRocTBTWG0xR3Z0dWdIcmJyNUlYcW1Ta3RnNUN1REUyTVNsUHdzWTVrTkUyV3AzQXFpWmJXVkxBeGlCRisyaUJaYnVOajZNQjZyc01MQzdGeWFzYVlEeW83S2tvUHlFdHczcEVNWGZQdnhBSmkyakFRUWdqcnowckxJWlNXWmxJb05od2Q1eEs0QVI5bVlOaldBYUxybnVJbUplQlZOOXpCT1JPYlZ2YnIrbVRUZkZTRUpMU1JuSG83aEVKb0lpOE1GcWp4bXZnbUY1VVJaejR6TEZnWlo4Q3R1Mlg3Z2dWY2NLbTlnVnhJc09IcXhYZ05NS25GV1pZbmYxZEJuT2hheVhxMTdRd0ZsV1cwOWVOS3lWSkZtWHFhT05HQTVhQ2VnTWJKM1VVa0dZMWljM25LV2dqcThxZlZZR1FHMWdSdDZyczYyYTZIaXFxVU9xZGVzSzVObVg0bkdvZkpvaUUxZDBkRjlsVlZrdlQxL2tFRWFhQ29ZT3dGcGNWY29MTSs3NjY5UHhDOXJXcWt0SDBzV1VZbGQwVkNwdUJaL3N0VlJjR2d5OVdYMitVMVF0aGk5U3pBcVN4elpzeStPaUZ6QllueVNHVjZHa3U0NHJEOEJDT1pCVjNCdkQ1K0FLUkhOd01Fc0I2RXpIbkpwa1RBZWlVbEVHa2NFQ2VCNkdEWlRwNVlFSlRsdmRya254WWpUbGxNa2ZOdFh3RGpNN3VWaks1SlhVVW40M3JycXBLMmp5dGF4SFcwTTVHOERDOHJ0SE1ZczdLU2dkdVZRTUdUWUZxRnZWUzZya0Qzc0RKNDZhZmRZRndvcTExQU9LQ0JMaHZ3b1VnYzhJR0FOeWNSNmtuWnJkSlBkc3V4bnlqZmQzRm92VGxSTWRFZHRPbDVDTVY1RUhzWFFCaXM3VE93dklEWmFHajJWbnBiaDdjcEs2M1Z3WUVNTHdxYmp6eWw2OTlzYXdGRmtGMXlxalVVMzFIZkM2c1cxWkZWRnVYVlhWZ3o5a2VFYXcweXMxbFdmbSthelFBUVNXQStoS1lWZnNaalBuY0FjVUI5b0lheXkvVVpYUk5ja0RHamk3N0dzV2J2Qm82dFByV1BxT3lWa0JVcStJTmVxcHpOZFlzL3UwaWZoNXFtcHFJVyszM0pWU1Vjd1k3MEtMNFU5bFlkVTZsanRTbHM3bG1maTlnM1l6ZVFmVmthR0ZhVjNPRENuYUQyTjh3c0VERmtsRTNSek0zWmdoZFlrV0hzc3pxNzBGSWVjbktrVmt0OGV6TXpScTlia0d1S29qUkxCVlNvZDNZMXlQcUtnWVc3SlJRVFBWeXk1eElZTGpPZ3hnVDUyUktKVVkxZE9ySWlSZDRmdXRReC9BNUFjU21FanowdkZXcmtMenZiV0F1OUhPV2JHZ3hGazFWTlRwbkJLazZUZ3dpc0kvSGN4WVhQMXVBV083MlVMRmxCVHErYVN1MlZUVXM2aHJ4TTJDRitoRW9yMVZJQTlabUZVYWFiMWxTU2dac1ZzNHN4ekhsVkxvSkhyOUg0RGhPTlRrSTFYQzAvd2lZMk5vV0FHNVJsbkhGbnE2b0xjY3BRZGRNdUovTzE3SlZBNU9ITGkwQnFDenRxN1kxKyt1Y0NkOThxTEk4TUlIQlYvY0tqeFFUbWUzaEZCUzNNeUNxbkRzdXltMm84MEhqdkZGVHRyVVJtTmFHSnNtVmFoSW1qVHNVWEt0UVpUQVZzN012djgvK2Z6VXJaQVhjTEo2TTRrb2U2WFAwYjZTbVdXTkR6eVVwUThibCtMdFd4NHR1cVozNmNSWVYzeXVWeFBOd3ZJaXFpUUNTbXU3c3JnVHpSNm5reWhwQ2FyWHdGeTF2R2Q1aVAyY1kwNmxGcjVOamhoZzFZNitOQjI4ZnRiSzgzczhyZjdrTEpiS3dERlBiTGcyNWEwQWRaSkVpcXI1cGhpeEtNRGxSVXRjc3NxMWhyaUxxR29IK3plTmdWbTlPZW1qc0VUVjhKZEYwTkhua0lGeFdZMU9CNFlycDdydFdKN05nQUFBUFhrbEVRVlEzb05zNW5wbHlWZjh1MkZvTHUxSnJIdmVhWldRanFBa3NodEZhMmd6c1NHM1pwa2J2ZzNIYWZGOXNsUFBsbGRqRmxLODBHeXNtOE1yNE1QaG5lTldFTlBHakFJcG1pbFRQQVRkVFJUWGxDQllIWUFRdVB3QTM2eElwV3RHTjRxM1kyTWhpR3NVcHVTU25sRUpSRDhQb3JDN0NGWVZ3K0Y1MXFUaGdhYnhzVHhXekNHWTBaU3NiM2xmcUF5ME9QTmpOeTh4aVFRS3NIWUZRMkhCWlZ2VmJCdXEzbTFvV0thanFhb25zTTZ1WlVyNkNqWFdOWjBsNUUzaDNqVVJtYTZrUDNNSklpeTFMbStrYWhRcTQxTjJpWmphNXNqdGxMWU5aSFpySDZxVUdtNHZNYkRwNlJ3MkNGbXZ1eUZrckJjQ3lNdEZxQmFFQ21zSG9LOUJaMkxBL2xKY1JxU2FEcW5hV2JyWmRHYXozRExnSXZCbG40d29HenRieUpHcXNsd3hraGhIclRqVFlGWEN0T29LUzh1TGRvZlZkQWJPeWxHVTZubFlwWFdadHM0blhCcTZXeEppdE1Ob2tIVUpuYm5KcGxRbSthR3BZMmE1R01WMlFEMWhSdWJCUEZLZHVtZjVPSGtMSHowRjlsdUU1a2pCalJhMG5GRTVDVUdxSHczMk1talo2eGtnSU5WblNuWjFWWlN0SzJxS2xSYUxsUWdLN3VUcTdKRlhKd00rM1NPRUt5aFpOSSt0SjBJNXFNWXk5azJxSkQ3ZFZXZHFLWGEwQ0tOUjBDY2pnK0IySVl1MmZjQlpKWmtNRmdNMTFyMFg5MndpbGdoRkdnelZuZXhscUI3eEw5bVMyOVNpWVVWWTJuWE9aak5CUnN5RHNRUFJXVzVoclo0WGNkQzRIVldSYmpnSnI0c0ZvZks1U3pqUTdyaEkxVWViZFBkRWJqNnNxSXZUWlFaNXZhMDhyQUJzQVcwVXhlV3l0QWs3QTJLSjlacHh6Q2lvQjI0WEZ0WUFlWFl4cjZhblNxaExncHBFcVdiR3dMdW5UZ3JWK0lqV2xMMjlsamFBbDRFUU1Hc0VycDRhcGVaaXF1d1JYTFhBcU9DZXJ1MzJtbXlkYzZvV1RTV3BGQUdkemVUQjhSVEhWTUV0bE05MENiYlFDWWhQanEzZWdZcjFGR2RZSVFqaXVER1o1elovQXpvYktHT3lMeHRpNmM0Und0djJhbnlXbExJQ25sTGh4SlJYdDZBNWViREJXRk5PTmJ4V1oyZDAybW51NFM5WUVDcGVwcFYxelNXUkJXeEhZelZJdjFDWFNvdXdxcVgzakJCQkRaZFlRYnBUUVc0WlFsUzhyNWtINHN1U1JtZzIrKzNKTjEweDFQYUFtRWttdFlsRWRlR3BKRU02a091Q3FDUjIyb1N1amo1SVYySGRUMHpqNXByTEtUalhGQVBqZFFseXE3eElCeEFRUDV5TWN6RzRWeEFLdzBuNmlsWjJRQmNlMnBMdWxrdXh4cW5vSXpGZmdxeXFqaWw5UzFWTndCckZtZXllb3BzOHlPalpVeWJaZGZTOEN1YVRJSnVtenM1dE9EYU50THBGRFEvUGNKR3dlTGhtZUwxbkIwS3FpVURTY3NpVVZEODlEaTNIdHJLdFNVTHczUkxpeWdaRCs3c0Y4SlRPYmdZc3JHdkROVUZSR2wxaXkwTGwxWWtVYzJhSllNb2c5MjBJOHFXNllEQ2cxTXFrMEpISkZLWGtiZ2JScmVJK3FwWU5PWkhyVmNEVWJhN3Bqc3BoU0pOdEs2dXBnUk5BVm9PUzBtdWdCZU40YklaZ0hodVBaL3MxRU5hWDZLc1ZyK1lOcmgxTmI3aXBSMFBFNXpiTlJlZ0NickhSVXc2WWYwN2RMQkpsMWY4S0I5YXMyVjFuTnFBc2w2MkxCQmhlaHdhbGVya0htQjFKRklFWktTRXVzZGw1SlFqMW5KbEhYU0NGMzQyZ0o5Q1lHclhlbGtuSklYcVZQOHNEK3F0cGxDUjNYSDJxZktxMHlnTXArS25Wa0t4TmxaOG0yWWtJbFZNaUNuWFV3bDdxem5CS1N2UXozbTNQdDZvUWJYTzViNUZpeENoL2ZIeFVRVy9BRWNLNnpDTnFLUW5MOXN5d3FtS3V3dnFTWXpUL2FQVk5OcFZ5aHZSVzIxYXFjaUNzamRXdkJ3SUxVdmg1VnlDemJXb0MxcEpqSjY4MENXc2wrdWRLQjZUNVJ3RzFtbG9obmxwYmc0N2l6NVU5aGEwRkd0bVJMRllCdE85OXk5N0FwMHorWkRUQW9nNmtTTFpzTUhnL0lGa2tncDZDcHZVMlUwY1lWU2RubWtqd0JkT21YYnhUV05XenVJYmlwTWlvVnhFY2taRW9haFNPaXkyTTNLMGpjQzFMaFZEd2FxRzBadmtjV3FDbnJHNEdJeHlrcnFsYldkdzZMUXlCYVpSOEhtTFJJaFFXc0hzd0Q0MlpYVkxOa2Y5bCtGbFcwSFZRMmx3RnNDL1oxRmR6bFFSMEthUGZvK0ZkZnUrL2R3VlJJQ3UxQ0dSN0FFSWlBaGMrQVpVRjBrT0JhUHhtVXFnNGk2NHZRblU0bkZEWUo5TnorMWZWWHZlSDlxbXIra1BJTHg4b0tjUlYvQkZieGJFMEpNVDBrU0Q0dzZML2xOWThvY3NxYWdWZFUzQTNNanhoeGNHdXF6c1BINGlycGFvdzFxNk95clZqdnA5TnBjNTlFOTFMbGRib1lWekpXZGltV2ZBVzJTTkVLY0RhWDJGbUJMTEEvdUt4bG1oaDYxM0lzMVVSUUFwYktmdHR3eEwwMnE2T254NXBReFNiUG9qQWcrdjVoQW5ONkxIVlJEWElzdkt0UmppUzBxSlV5WlRBWFZiQUs4MkVsRkpXYVFkVm9xVUMxVW50N0JWYVRRdWRNNlN1cWV4alFKTjQrMGljYXh2L3V0Ykt2ODNFVGJUOEg4Z2pjT0t4T0ptYlVhNk9PVlhodDNkRlk2ckh2OVhvTnpGTGNlRUExbzgrcEttMExBSFBIWjJyWUtqRnEwaGZaRml4c3FISmdEM2VENW4rVTBrYjFtRmpYa24ybHZNU1NPc05FL0NkSUFLRjBTeXRxNnVyT0hVTjVnd2c0R1pvc2dibWdnTTV1Y3JhMnFyUzJJZzFjYmlCQmN4WXpnelVETkxDdkw4R2JaWE5wNk9SeTNMbVMrS2s4M3pSSUFLNkExaW9LYTJJOU5hcEl1aVVGZGZDOTc2NlBGWlV0cVVyNktiV2srelpVMWEvWnJJWEV6dHJqVE9mejdod0t6aUNlWElhcmFIdGJaSU16KzJwR2dhekNtdzRxV0FGdkVkaG9kWXAwWHEwcFY3RzFZV1lXYk80cWhHcTQyK1o4Qll0ckxXdmx1TlBwWkFlYUZGUzF2dWJQZ2JneHNxY3BuQWFzekJvdkthRm9EUThCR3RqZlVPbDROQUcybm1RVjA0ZmVKZ3VtdlgyZnNyUUVXWmdoTDBKblZkWWtuM0RPWkllUk44NlJxUFdDbXN2R1ZxRU1Sbnd4UUF4d1M4RU1ZbzNJem1ZMitCQ2NMcDRNS2l1eXVoSW1hbWxiWkZjTm9ObDd0cCtSSGQxOFpqUUlSS3lYZEZSaE45OC9oeUtxd1hXTm83TzF3aWFYb0hOMTA4UkVaWldFcTZncm5JZmp6ZWc4amRSZjFYRUw0a2tYYTViQmpLeG9LYWxqQmplSGxWeFE0R2F5Y3BXNGxET0FLdG5UeEhBdE9mek90WndIQU03c3FWWGtWNnl1NmthcDFuSGtYS3FXRi80WEhxamVuTktxQmpwUjNsMWNoM0VqZzErRXNnZFFoc2RHMEI0Rk05c1dBVldwdUF5aXdUUGxlWnh0OVZ5WlZTMnFYZlJlV3FUQWlscHI5QXBvV1RqeHltaXQ3TndWNEpUcmlaeU9BOUIwazdIRmZVTG91cm1LWUhWblJRdnFHTDVITUhkcUZjUjJxV3BtY0s2ZVR3eDJkaXBXcnZpRGlscitmS1dxM09XUldkSEt3QTRldTh3amNoYmVSekZpbHFqalpOM3VmQ3Bma0owL3NjVnBuWWs2TDBQSTc3bHhkV0NaODdXaVdtN0IvQUdxdVFTbnVqR0tzQjhDSm1pSnE4cTFwS0lWV3lxT2lUSzY2cjE4Qk44cjc0L0FFNzFmZEMzeVBTMk14ZE9wbkUxdGxWeEQ5Sm1WT29nZ04rcjRQakFYVkZQYTNFZzVqVkpHRlZVR05vbEgyMEdWclVCN0JPeVNXcTZXcVlRZFdSOTJwY0ZNWU13Y2tiU2dDS0NxRDY3RGlpV3UxZzhNUUM5QnlmY0ZxVzFMK2pMNzE0cU5DdXpub1N4dDBkYTJndFdOMUc4RjBCSzBOTjBudWltZWxVRjlkSWRBZmpPNDRVVDNDalFMb1VlTEhKRlRPM2dtcFJ1SUlPdndCUUNicU5lbzNxdFo5aUY2eFZLMTNHUmxvNHpxaW1xK0NHZFRpUjF1Ulk4b3FnRTAyaFpCYTc5a1pYUE1xdXhSSEtsYTJzYVpXTjRtUnFaVWowdkxDS2hraktucU9RSE51U1pWSm9LdkFxUzF3cEVxdXZXREMxQjJ5cHdyQ1BzUk1FUFZUT0RNTEpNRHY2cWVLWHdpMkpZVjVTcTRxS3l2Z0dzSENMaXVqMmpSNTlWOGdNcVNKMkZKWlJYRUhWUkhqM3NGUHJjdDZPcHFsVzFHcGF0UWR0MEd2d2ZNNm42M0luc0dWRmhKR2FCcWdxcUlWNklzWGxsWmd5U1BxNFIzYm50M3dpNWN2K2NOMnlxUUxXMVQ5NUtZVnNXV3RLazRjQjlXNTNXUVFmbFFZUjZXbDRIYUpaanZWRTBENXl2cStSS2daQ3M1cWRCRVA1c0Q5NGNBdlFMbFNnTmFTTUF0SHg4OEJ1TlE0MXpkRnNYMzB6S2JjczBNTEQvaWhrcFF6bDB3aVRxS0xUZmJLbUNteVlJQ25LMEliYWllQzRDRzlpU3lMUTdjSU1HUXdhdTZUS29xNjBBcGwzV040MExacGNhMUNLS0s5VlF5eUlFbjh3MEY4RjZDTDJoOG8zaXhHd0M3czdFV3pDT3FtY0FwWXhZRDRqc0F6VlMwc2wydDk4cEE3dnJLb3BoQ1ZTb25iWXBnSDZtdlNuMjRwVEJWNHNkdFYzQnRNcTVrODJ5K0lBRHZVSjB1QWxrQ1ZUeElhUG0rVU51L3FrVjRGMVR6SFhDR3JYSUFxSXRCS3lwcUs5OVZ0QU9WczY0TzRPYlg3cEhMVkNwWUhjUm13dkxSN1R2WUFLQkJONThMR1Z6RHVGeitoUWJXZ25jUXlDWkFrK1Zic1BTb3VmOTMyNjFpWmdtZkNwd1JiQXZxbVNxcmlVMlB3aGphb095WXF0SWVnVlhWaVRzbXl0YTZiR3lTcFkzZ3lScnBJeUFlYVdERHh0cHNYd0t5YWxNREtOUDdZQlhNcUVza1VzaTJ1QzhGTkFQeEFLVFZmVDFvNlZ6TTBFMGpGKzFyV2NVdUh2ZHlnN3Znb0ZwbFg4SHB2SHBNQ09NUlVQSHpaa0luc3FsRktOWC9FSU81MkUwU3hTek93b2IyVm1STFc1RDFYSVUwcmJnTTFBeldneUM3ZmU4Rzd4VUFLL3RhRUJhdDdsdXF0eVA3RW1zYUpRT2o1Rittcm5aZkN1WUNmQlVBV3dTaHlkNnBNWS92QUhHMVVxT1lwYkkvZ3k1VDBDTUttK1VPM2dGdUM4NWRnZkRWZWd1UERmSVRySUJMc0xyY2dkaDNDRmdGWmphS0o0SXYzRjhBTkVxdnV4UjF0VktPZ0xvQ2Exanhib0JBa2o2djdqL2ljRmJBN2Y0cmZSblFETFJWaUcxM2kwdnFCUXJZVnFCYkFEWlQwWnBpSG9TenZRcG9wS0lGUzNzRTFIZkJXbEhYZDBIN0xuQXJxdm91Z010bGpIQmdabmgzRW96L0JLakxNTDRaMkFxMCtoRUpyOWphVlVCYnZOekNJVWlyb0M3QVdtbUZ3NG81QUszTXRCNVZ5cFpNU0ZnczA1SnlHVndsd0Jxc0VHQUFhMlpVMUNqVWV4WEdzRTRyS3JpaWxCdkZ6T0tLbzNBdUFyb0U2UUZRVTN1OFlwTlh3UzVrKzFUWnQ1VXJ3b3VONEtpVUV3K2szWldEcDFSWEhOUnFYYjIxVHMzOTk0NXlaU2czVm5aRk5ROUNGM1hlWnlyNURnQlhLaXdDTWEyTXhlVERZWGdQMUZzZjlRTktaYzBrODFSSmszcjZFUTNyQ21CVnlMTDc1RWpaMXBJVkRIb0Z0aU9BSG9CMEJkVFZ5bHFCc0tLS1MrQWVCWEpWTFkrQ1hBU3VHdk8vQXVxN0d1RWpEZkdLZzFvS2Exei9kbW1pOUk5U1VHTmhsMEF0ZnVsSEFhd29Zcm5Ta21OWEFWdUdFaHJFVlh2VUYrQTVDdDJQcU5PakRldHluYTRDbWVVb2xtZVhMTjRBcTdDNVNqMTBRN3lqZ2wrdDZDTnhTUkhtSTVYK0Nwd3JlWUIzUWZkcW5hNHEyMUtkQnVjNEdvWnNuNDlaT09pVmlud0hxSzlXemp2Z2V3ZUVoMkFVNSt2dHhaOUNkOVdxa2g0OVYxOEU1b2o2dlZ5bjBSU3RBeUdJTzVlZFhSS2Q1QjBWR1ZYcTJ5cjN4WXArNVV0K0M0UUo0UDFOMzM5cFFNalJlamo0dmIvRGNyNnJRYzNPLzByam10WnBlWUNCaUNIZkNlbVJiTmhiSy9wTlVQYzN3Zkt5NWYyRDdPbEwzL3VQaHZlL29VNFQwRjhmK1ZOTTJ2eW9pdjBqSytLSFFmZEhxKzBibmN6NG96NzMvK1k2TGJLdzFvLzVCN2VPZjFSbC8wZHU5Qjl0bi85YnZyZi9qK3YwaDZ0dG4ydHAvci80ODE5eTQvenY1MzkxdXZ6emZ3RGlmejZwaFQxTVBnQUFBQUJKUlU1RXJrSmdnZz09Iik7YmFja2dyb3VuZC1zaXplOjEwMCUgMTAwJTtib3JkZXI6bm9uZTtjdXJzb3I6cG9pbnRlcjtkaXJlY3Rpb246bHRyO2hlaWdodDoxMzBweDt0b3VjaC1hY3Rpb246bWFuaXB1bGF0aW9uO3dpZHRoOjEwMCV9LmNvbG9yLXBpY2tlciAuY3AtYWRkLWNvbG9yLWJ1dHRvbi1jbGFzc3tiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2JvcmRlcjowO2N1cnNvcjpwb2ludGVyO2Rpc3BsYXk6aW5saW5lO21hcmdpbjozcHggLTNweDtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGV9LmNvbG9yLXBpY2tlciAuY3AtYWRkLWNvbG9yLWJ1dHRvbi1jbGFzczpob3Zlcnt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfS5jb2xvci1waWNrZXIgLmNwLWFkZC1jb2xvci1idXR0b24tY2xhc3M6ZGlzYWJsZWR7Y29sb3I6Izk5OTtjdXJzb3I6bm90LWFsbG93ZWR9LmNvbG9yLXBpY2tlciAuY3AtYWRkLWNvbG9yLWJ1dHRvbi1jbGFzczpkaXNhYmxlZDpob3Zlcnt0ZXh0LWRlY29yYXRpb246bm9uZX0uY29sb3ItcGlja2VyIC5jcC1yZW1vdmUtY29sb3ItYnV0dG9uLWNsYXNze2JhY2tncm91bmQ6I2ZmZjtib3JkZXItcmFkaXVzOjUwJTtib3gtc2hhZG93OjFweCAxcHggNXB4ICMzMzM7Y3Vyc29yOnBvaW50ZXI7ZGlzcGxheTpibG9jaztoZWlnaHQ6MTBweDtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDotNXB4O3RleHQtYWxpZ246Y2VudGVyO3RvcDotNXB4O3dpZHRoOjEwcHh9LmNvbG9yLXBpY2tlciAuY3AtcmVtb3ZlLWNvbG9yLWJ1dHRvbi1jbGFzczpiZWZvcmV7Ym90dG9tOjMuNXB4O2NvbnRlbnQ6IngiO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2ZvbnQtc2l6ZToxMHB4O3Bvc2l0aW9uOnJlbGF0aXZlfSddLGVuY2Fwc3VsYXRpb246Mn0pLE81LmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6S2h9LHt0eXBlOk9ifSx7dHlwZTp4NX1dLE81LnByb3BEZWNvcmF0b3JzPXtkaWFsb2dFbGVtZW50Olt7dHlwZTphcixhcmdzOlsiZGlhbG9nUG9wdXAiLHtzdGF0aWM6ITB9XX1dLGh1ZVNsaWRlcjpbe3R5cGU6YXIsYXJnczpbImh1ZVNsaWRlciIse3N0YXRpYzohMH1dfV0sYWxwaGFTbGlkZXI6W3t0eXBlOmFyLGFyZ3M6WyJhbHBoYVNsaWRlciIse3N0YXRpYzohMH1dfV0saGFuZGxlRXNjOlt7dHlwZTpUXyxhcmdzOlsiZG9jdW1lbnQ6a2V5dXAuZXNjIixbIiRldmVudCJdXX1dLGhhbmRsZUVudGVyOlt7dHlwZTpUXyxhcmdzOlsiZG9jdW1lbnQ6a2V5dXAuZW50ZXIiLFsiJGV2ZW50Il1dfV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoTzUsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoiY29sb3ItcGlja2VyIix0ZW1wbGF0ZTonPGRpdiAjZGlhbG9nUG9wdXAgY2xhc3M9ImNvbG9yLXBpY2tlciIgW2NsYXNzLm9wZW5dPSJzaG93IiBbc3R5bGUuZGlzcGxheV09IiFzaG93ID8gXCdub25lXCcgOiBcJ2Jsb2NrXCciIFtzdHlsZS52aXNpYmlsaXR5XT0iaGlkZGVuID8gXCdoaWRkZW5cJyA6IFwndmlzaWJsZVwnIiBbc3R5bGUudG9wLnB4XT0idG9wIiBbc3R5bGUubGVmdC5weF09ImxlZnQiIFtzdHlsZS5wb3NpdGlvbl09InBvc2l0aW9uIiBbc3R5bGUuaGVpZ2h0LnB4XT0iY3BIZWlnaHQiIFtzdHlsZS53aWR0aC5weF09ImNwV2lkdGgiIChjbGljayk9IiRldmVudC5zdG9wUHJvcGFnYXRpb24oKSI+XG4gIDxkaXYgKm5nSWY9ImNwRGlhbG9nRGlzcGxheT09XCdwb3B1cFwnIiBjbGFzcz0iYXJyb3cgYXJyb3cte3tjcFVzZVBvc2l0aW9ufX0iIFtzdHlsZS50b3AucHhdPSJhcnJvd1RvcCI+PC9kaXY+XG5cbiAgPGRpdiAqbmdJZj0iKGNwQ29sb3JNb2RlIHx8wqAxKSA9PT0gMSIgY2xhc3M9InNhdHVyYXRpb24tbGlnaHRuZXNzIiBbc2xpZGVyXSBbcmdYXT0iMSIgW3JnWV09IjEiIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT0iaHVlU2xpZGVyQ29sb3IiIChuZXdWYWx1ZSk9Im9uQ29sb3JDaGFuZ2UoJGV2ZW50KSIgKGRyYWdTdGFydCk9Im9uRHJhZ1N0YXJ0KFwnc2F0dXJhdGlvbi1saWdodG5lc3NcJykiIChkcmFnRW5kKT0ib25EcmFnRW5kKFwnc2F0dXJhdGlvbi1saWdodG5lc3NcJykiPlxuICAgIDxkaXYgY2xhc3M9ImN1cnNvciIgW3N0eWxlLnRvcC5weF09InNsaWRlcj8udiIgW3N0eWxlLmxlZnQucHhdPSJzbGlkZXI/LnMiPjwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPSJodWUtYWxwaGEgYm94Ij5cbiAgICA8ZGl2IGNsYXNzPSJsZWZ0Ij5cbiAgICAgIDxkaXYgY2xhc3M9InNlbGVjdGVkLWNvbG9yLWJhY2tncm91bmQiPjwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPSJzZWxlY3RlZC1jb2xvciIgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPSJzZWxlY3RlZENvbG9yIj48L2Rpdj5cblxuICAgICAgPGJ1dHRvbiAqbmdJZj0iY3BBZGRDb2xvckJ1dHRvbiIgdHlwZT0iYnV0dG9uIiBjbGFzcz0ie3tjcEFkZENvbG9yQnV0dG9uQ2xhc3N9fSIgW2Rpc2FibGVkXT0iY3BQcmVzZXRDb2xvcnMgJiYgY3BQcmVzZXRDb2xvcnMubGVuZ3RoID49IGNwTWF4UHJlc2V0Q29sb3JzTGVuZ3RoIiAoY2xpY2spPSJvbkFkZFByZXNldENvbG9yKCRldmVudCwgc2VsZWN0ZWRDb2xvcikiPlxuICAgICAgICB7e2NwQWRkQ29sb3JCdXR0b25UZXh0fX1cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz0icmlnaHQiPlxuICAgICAgPGRpdiAqbmdJZj0iY3BBbHBoYUNoYW5uZWw9PT1cJ2Rpc2FibGVkXCciIHN0eWxlPSJoZWlnaHQ6IDE2cHg7Ij48L2Rpdj5cblxuICAgICAgPGRpdiAjaHVlU2xpZGVyIGNsYXNzPSJodWUiIFtzbGlkZXJdIFtyZ1hdPSIxIiBbc3R5bGUuZGlzcGxheV09IihjcENvbG9yTW9kZSB8fMKgMSkgPT09IDEgPyBcJ2Jsb2NrXCcgOiBcJ25vbmVcJyIgKG5ld1ZhbHVlKT0ib25IdWVDaGFuZ2UoJGV2ZW50KSIgKGRyYWdTdGFydCk9Im9uRHJhZ1N0YXJ0KFwnaHVlXCcpIiAoZHJhZ0VuZCk9Im9uRHJhZ0VuZChcJ2h1ZVwnKSI+XG4gICAgICAgIDxkaXYgY2xhc3M9ImN1cnNvciIgW3N0eWxlLmxlZnQucHhdPSJzbGlkZXI/LmgiPjwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgI3ZhbHVlU2xpZGVyIGNsYXNzPSJ2YWx1ZSIgW3NsaWRlcl0gW3JnWF09IjEiIFtzdHlsZS5kaXNwbGF5XT0iKGNwQ29sb3JNb2RlIHx8wqAxKSA9PT0gMiA/IFwnYmxvY2tcJzogXCdub25lXCciIChuZXdWYWx1ZSk9Im9uVmFsdWVDaGFuZ2UoJGV2ZW50KSIgKGRyYWdTdGFydCk9Im9uRHJhZ1N0YXJ0KFwndmFsdWVcJykiIChkcmFnRW5kKT0ib25EcmFnRW5kKFwndmFsdWVcJykiPlxuICAgICAgICA8ZGl2IGNsYXNzPSJjdXJzb3IiIFtzdHlsZS5yaWdodC5weF09InNsaWRlcj8udiI+PC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiAjYWxwaGFTbGlkZXIgY2xhc3M9ImFscGhhIiBbc2xpZGVyXSBbcmdYXT0iMSIgW3N0eWxlLmRpc3BsYXldPSJjcEFscGhhQ2hhbm5lbCA9PT0gXCdkaXNhYmxlZFwnID8gXCdub25lXCcgOiBcJ2Jsb2NrXCciIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT0iYWxwaGFTbGlkZXJDb2xvciIgKG5ld1ZhbHVlKT0ib25BbHBoYUNoYW5nZSgkZXZlbnQpIiAoZHJhZ1N0YXJ0KT0ib25EcmFnU3RhcnQoXCdhbHBoYVwnKSIgKGRyYWdFbmQpPSJvbkRyYWdFbmQoXCdhbHBoYVwnKSI+XG4gICAgICAgIDxkaXYgY2xhc3M9ImN1cnNvciIgW3N0eWxlLmxlZnQucHhdPSJzbGlkZXI/LmEiPjwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgKm5nSWY9IiFjcERpc2FibGVJbnB1dCAmJiAoY3BDb2xvck1vZGUgfHzCoDEpID09PSAxIiBjbGFzcz0iY215ay10ZXh0IiBbc3R5bGUuZGlzcGxheV09ImZvcm1hdCAhPT0gMyA/IFwnbm9uZVwnIDogXCdibG9ja1wnIj5cbiAgICA8ZGl2IGNsYXNzPSJib3giPlxuICAgICAgPGlucHV0IHR5cGU9Im51bWJlciIgcGF0dGVybj0iWzAtOV0qIiBtaW49IjAiIG1heD0iMTAwIiBbdGV4dF0gW3JnXT0iMTAwIiBbdmFsdWVdPSJjbXlrVGV4dD8uYyIgKGtleXVwLmVudGVyKT0ib25BY2NlcHRDb2xvcigkZXZlbnQpIiAobmV3VmFsdWUpPSJvbkN5YW5JbnB1dCgkZXZlbnQpIiAvPlxuICAgICAgPGlucHV0IHR5cGU9Im51bWJlciIgcGF0dGVybj0iWzAtOV0qIiBtaW49IjAiIG1heD0iMTAwIiBbdGV4dF0gW3JnXT0iMTAwIiBbdmFsdWVdPSJjbXlrVGV4dD8ubSIgKGtleXVwLmVudGVyKT0ib25BY2NlcHRDb2xvcigkZXZlbnQpIiAobmV3VmFsdWUpPSJvbk1hZ2VudGFJbnB1dCgkZXZlbnQpIiAvPlxuICAgICAgPGlucHV0IHR5cGU9Im51bWJlciIgcGF0dGVybj0iWzAtOV0qIiBtaW49IjAiIG1heD0iMTAwIiBbdGV4dF0gW3JnXT0iMTAwIiBbdmFsdWVdPSJjbXlrVGV4dD8ueSIgKGtleXVwLmVudGVyKT0ib25BY2NlcHRDb2xvcigkZXZlbnQpIiAobmV3VmFsdWUpPSJvblllbGxvd0lucHV0KCRldmVudCkiIC8+XG4gICAgICA8aW5wdXQgdHlwZT0ibnVtYmVyIiBwYXR0ZXJuPSJbMC05XSoiIG1pbj0iMCIgbWF4PSIxMDAiIFt0ZXh0XSBbcmddPSIxMDAiIFt2YWx1ZV09ImNteWtUZXh0Py5rIiAoa2V5dXAuZW50ZXIpPSJvbkFjY2VwdENvbG9yKCRldmVudCkiIChuZXdWYWx1ZSk9Im9uQmxhY2tJbnB1dCgkZXZlbnQpIiAvPlxuICAgICAgPGlucHV0ICpuZ0lmPSJjcEFscGhhQ2hhbm5lbCE9PVwnZGlzYWJsZWRcJyIgdHlwZT0ibnVtYmVyIiBwYXR0ZXJuPSJbMC05XSsoW1xcLixdWzAtOV17MSwyfSk/IiBtaW49IjAiIG1heD0iMSIgc3RlcD0iMC4xIiBbdGV4dF0gW3JnXT0iMSIgW3ZhbHVlXT0iY215a1RleHQ/LmEiIChrZXl1cC5lbnRlcik9Im9uQWNjZXB0Q29sb3IoJGV2ZW50KSIgKG5ld1ZhbHVlKT0ib25BbHBoYUlucHV0KCRldmVudCkiIC8+XG4gICAgPC9kaXY+XG5cbiAgICAgPGRpdiBjbGFzcz0iYm94Ij5cbiAgICAgIDxkaXY+QzwvZGl2PjxkaXY+TTwvZGl2PjxkaXY+WTwvZGl2PjxkaXY+SzwvZGl2PjxkaXYgKm5nSWY9ImNwQWxwaGFDaGFubmVsIT09XCdkaXNhYmxlZFwnIiA+QTwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2ICpuZ0lmPSIhY3BEaXNhYmxlSW5wdXQgJiYgKGNwQ29sb3JNb2RlIHx8wqAxKSA9PT0gMSAiIGNsYXNzPSJoc2xhLXRleHQiIFtzdHlsZS5kaXNwbGF5XT0iZm9ybWF0ICE9PSAyID8gXCdub25lXCcgOiBcJ2Jsb2NrXCciPlxuICAgIDxkaXYgY2xhc3M9ImJveCI+XG4gICAgICA8aW5wdXQgdHlwZT0ibnVtYmVyIiBwYXR0ZXJuPSJbMC05XSoiIG1pbj0iMCIgbWF4PSIzNjAiIFt0ZXh0XSBbcmddPSIzNjAiIFt2YWx1ZV09ImhzbGFUZXh0Py5oIiAoa2V5dXAuZW50ZXIpPSJvbkFjY2VwdENvbG9yKCRldmVudCkiIChuZXdWYWx1ZSk9Im9uSHVlSW5wdXQoJGV2ZW50KSIgLz5cbiAgICAgIDxpbnB1dCB0eXBlPSJudW1iZXIiIHBhdHRlcm49IlswLTldKiIgbWluPSIwIiBtYXg9IjEwMCIgW3RleHRdIFtyZ109IjEwMCIgW3ZhbHVlXT0iaHNsYVRleHQ/LnMiIChrZXl1cC5lbnRlcik9Im9uQWNjZXB0Q29sb3IoJGV2ZW50KSIgKG5ld1ZhbHVlKT0ib25TYXR1cmF0aW9uSW5wdXQoJGV2ZW50KSIgLz5cbiAgICAgIDxpbnB1dCB0eXBlPSJudW1iZXIiIHBhdHRlcm49IlswLTldKiIgbWluPSIwIiBtYXg9IjEwMCIgW3RleHRdIFtyZ109IjEwMCIgW3ZhbHVlXT0iaHNsYVRleHQ/LmwiIChrZXl1cC5lbnRlcik9Im9uQWNjZXB0Q29sb3IoJGV2ZW50KSIgKG5ld1ZhbHVlKT0ib25MaWdodG5lc3NJbnB1dCgkZXZlbnQpIiAvPlxuICAgICAgPGlucHV0ICpuZ0lmPSJjcEFscGhhQ2hhbm5lbCE9PVwnZGlzYWJsZWRcJyIgdHlwZT0ibnVtYmVyIiBwYXR0ZXJuPSJbMC05XSsoW1xcLixdWzAtOV17MSwyfSk/IiBtaW49IjAiIG1heD0iMSIgc3RlcD0iMC4xIiBbdGV4dF0gW3JnXT0iMSIgW3ZhbHVlXT0iaHNsYVRleHQ/LmEiIChrZXl1cC5lbnRlcik9Im9uQWNjZXB0Q29sb3IoJGV2ZW50KSIgKG5ld1ZhbHVlKT0ib25BbHBoYUlucHV0KCRldmVudCkiIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPSJib3giPlxuICAgICAgPGRpdj5IPC9kaXY+PGRpdj5TPC9kaXY+PGRpdj5MPC9kaXY+PGRpdiAqbmdJZj0iY3BBbHBoYUNoYW5uZWwhPT1cJ2Rpc2FibGVkXCciPkE8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiAqbmdJZj0iIWNwRGlzYWJsZUlucHV0ICYmIChjcENvbG9yTW9kZSB8fMKgMSkgPT09IDEgIiBbc3R5bGUuZGlzcGxheV09ImZvcm1hdCAhPT0gMSA/IFwnbm9uZVwnIDogXCdibG9ja1wnIiBjbGFzcz0icmdiYS10ZXh0Ij5cbiAgICA8ZGl2IGNsYXNzPSJib3giPlxuICAgICAgPGlucHV0IHR5cGU9Im51bWJlciIgcGF0dGVybj0iWzAtOV0qIiBtaW49IjAiIG1heD0iMjU1IiBbdGV4dF0gW3JnXT0iMjU1IiBbdmFsdWVdPSJyZ2JhVGV4dD8uciIgKGtleXVwLmVudGVyKT0ib25BY2NlcHRDb2xvcigkZXZlbnQpIiAobmV3VmFsdWUpPSJvblJlZElucHV0KCRldmVudCkiIC8+XG4gICAgICA8aW5wdXQgdHlwZT0ibnVtYmVyIiBwYXR0ZXJuPSJbMC05XSoiIG1pbj0iMCIgbWF4PSIyNTUiIFt0ZXh0XSBbcmddPSIyNTUiIFt2YWx1ZV09InJnYmFUZXh0Py5nIiAoa2V5dXAuZW50ZXIpPSJvbkFjY2VwdENvbG9yKCRldmVudCkiIChuZXdWYWx1ZSk9Im9uR3JlZW5JbnB1dCgkZXZlbnQpIiAvPlxuICAgICAgPGlucHV0IHR5cGU9Im51bWJlciIgcGF0dGVybj0iWzAtOV0qIiBtaW49IjAiIG1heD0iMjU1IiBbdGV4dF0gW3JnXT0iMjU1IiBbdmFsdWVdPSJyZ2JhVGV4dD8uYiIgKGtleXVwLmVudGVyKT0ib25BY2NlcHRDb2xvcigkZXZlbnQpIiAobmV3VmFsdWUpPSJvbkJsdWVJbnB1dCgkZXZlbnQpIiAvPlxuICAgICAgPGlucHV0ICpuZ0lmPSJjcEFscGhhQ2hhbm5lbCE9PVwnZGlzYWJsZWRcJyIgdHlwZT0ibnVtYmVyIiBwYXR0ZXJuPSJbMC05XSsoW1xcLixdWzAtOV17MSwyfSk/IiBtaW49IjAiIG1heD0iMSIgc3RlcD0iMC4xIiBbdGV4dF0gW3JnXT0iMSIgW3ZhbHVlXT0icmdiYVRleHQ/LmEiIChrZXl1cC5lbnRlcik9Im9uQWNjZXB0Q29sb3IoJGV2ZW50KSIgKG5ld1ZhbHVlKT0ib25BbHBoYUlucHV0KCRldmVudCkiIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPSJib3giPlxuICAgICAgPGRpdj5SPC9kaXY+PGRpdj5HPC9kaXY+PGRpdj5CPC9kaXY+PGRpdiAqbmdJZj0iY3BBbHBoYUNoYW5uZWwhPT1cJ2Rpc2FibGVkXCciID5BPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgKm5nSWY9IiFjcERpc2FibGVJbnB1dCAmJiAoY3BDb2xvck1vZGUgfHzCoDEpID09PSAxIiBjbGFzcz0iaGV4LXRleHQiIFtjbGFzcy5oZXgtYWxwaGFdPSJjcEFscGhhQ2hhbm5lbD09PVwnZm9yY2VkXCciXG4gICAgW3N0eWxlLmRpc3BsYXldPSJmb3JtYXQgIT09IDAgPyBcJ25vbmVcJyA6IFwnYmxvY2tcJyI+XG4gICAgPGRpdiBjbGFzcz0iYm94Ij5cbiAgICAgIDxpbnB1dCBbdGV4dF0gW3ZhbHVlXT0iaGV4VGV4dCIgKGJsdXIpPSJvbkhleElucHV0KG51bGwpIiAoa2V5dXAuZW50ZXIpPSJvbkFjY2VwdENvbG9yKCRldmVudCkiIChuZXdWYWx1ZSk9Im9uSGV4SW5wdXQoJGV2ZW50KSIvPlxuICAgICAgPGlucHV0ICpuZ0lmPSJjcEFscGhhQ2hhbm5lbD09PVwnZm9yY2VkXCciIHR5cGU9Im51bWJlciIgcGF0dGVybj0iWzAtOV0rKFtcXC4sXVswLTldezEsMn0pPyIgbWluPSIwIiBtYXg9IjEiIHN0ZXA9IjAuMSIgW3RleHRdIFtyZ109IjEiIFt2YWx1ZV09ImhleEFscGhhIiAoa2V5dXAuZW50ZXIpPSJvbkFjY2VwdENvbG9yKCRldmVudCkiIChuZXdWYWx1ZSk9Im9uQWxwaGFJbnB1dCgkZXZlbnQpIi8+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPSJib3giPlxuICAgICAgPGRpdj5IZXg8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9ImNwQWxwaGFDaGFubmVsPT09XCdmb3JjZWRcJyI+QTwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2ICpuZ0lmPSIhY3BEaXNhYmxlSW5wdXQgJiYgKGNwQ29sb3JNb2RlIHx8wqAxKSA9PT0gMiIgY2xhc3M9InZhbHVlLXRleHQiPlxuICAgIDxkaXYgY2xhc3M9ImJveCI+XG4gICAgICA8aW5wdXQgdHlwZT0ibnVtYmVyIiBwYXR0ZXJuPSJbMC05XSoiIG1pbj0iMCIgbWF4PSIxMDAiIFt0ZXh0XSBbcmddPSIxMDAiIFt2YWx1ZV09ImhzbGFUZXh0Py5sIiAoa2V5dXAuZW50ZXIpPSJvbkFjY2VwdENvbG9yKCRldmVudCkiIChuZXdWYWx1ZSk9Im9uVmFsdWVJbnB1dCgkZXZlbnQpIiAvPlxuICAgICAgPGlucHV0ICpuZ0lmPSJjcEFscGhhQ2hhbm5lbCE9PVwnZGlzYWJsZWRcJyIgdHlwZT0ibnVtYmVyIiBwYXR0ZXJuPSJbMC05XSsoW1xcLixdWzAtOV17MSwyfSk/IiBtaW49IjAiIG1heD0iMSIgc3RlcD0iMC4xIiAgW3RleHRdIFtyZ109IjEiIFt2YWx1ZV09ImhzbGFUZXh0Py5hIiAoa2V5dXAuZW50ZXIpPSJvbkFjY2VwdENvbG9yKCRldmVudCkiIChuZXdWYWx1ZSk9Im9uQWxwaGFJbnB1dCgkZXZlbnQpIiAvPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz0iYm94Ij5cbiAgICAgIDxkaXY+VjwvZGl2PjxkaXY+QTwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2ICpuZ0lmPSIhY3BEaXNhYmxlSW5wdXQgJiYgKGNwQ29sb3JNb2RlIHx8wqAxKSA9PT0gMSIgY2xhc3M9InR5cGUtcG9saWN5Ij5cbiAgICA8c3BhbiBjbGFzcz0idHlwZS1wb2xpY3ktYXJyb3ciIChjbGljayk9Im9uRm9ybWF0VG9nZ2xlKC0xKSI+PC9zcGFuPlxuICAgIDxzcGFuIGNsYXNzPSJ0eXBlLXBvbGljeS1hcnJvdyIgKGNsaWNrKT0ib25Gb3JtYXRUb2dnbGUoMSkiPjwvc3Bhbj5cbiAgPC9kaXY+XG5cbiAgPGRpdiAqbmdJZj0iY3BQcmVzZXRDb2xvcnM/Lmxlbmd0aCB8fCBjcEFkZENvbG9yQnV0dG9uIiBjbGFzcz0icHJlc2V0LWFyZWEiPlxuICAgIDxocj5cblxuICAgIDxkaXYgY2xhc3M9InByZXNldC1sYWJlbCI+e3tjcFByZXNldExhYmVsfX08L2Rpdj5cblxuICAgIDxkaXYgKm5nSWY9ImNwUHJlc2V0Q29sb3JzPy5sZW5ndGgiIGNsYXNzPSJ7e2NwUHJlc2V0Q29sb3JzQ2xhc3N9fSI+XG4gICAgICA8ZGl2ICpuZ0Zvcj0ibGV0IGNvbG9yIG9mIGNwUHJlc2V0Q29sb3JzIiBjbGFzcz0icHJlc2V0LWNvbG9yIiBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT0iY29sb3IiIChjbGljayk9InNldENvbG9yRnJvbVN0cmluZyhjb2xvcikiPlxuICAgICAgICA8c3BhbiAqbmdJZj0iY3BBZGRDb2xvckJ1dHRvbiIgY2xhc3M9Int7Y3BSZW1vdmVDb2xvckJ1dHRvbkNsYXNzfX0iIChjbGljayk9Im9uUmVtb3ZlUHJlc2V0Q29sb3IoJGV2ZW50LCBjb2xvcikiPjwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiAqbmdJZj0iIWNwUHJlc2V0Q29sb3JzPy5sZW5ndGggJiYgY3BBZGRDb2xvckJ1dHRvbiIgY2xhc3M9Int7Y3BQcmVzZXRFbXB0eU1lc3NhZ2VDbGFzc319Ij57e2NwUHJlc2V0RW1wdHlNZXNzYWdlfX08L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiAqbmdJZj0iY3BPS0J1dHRvbiB8fCBjcENhbmNlbEJ1dHRvbiIgY2xhc3M9ImJ1dHRvbi1hcmVhIj5cbiAgICA8YnV0dG9uICpuZ0lmPSJjcENhbmNlbEJ1dHRvbiIgdHlwZT0iYnV0dG9uIiBjbGFzcz0ie3tjcENhbmNlbEJ1dHRvbkNsYXNzfX0iIChjbGljayk9Im9uQ2FuY2VsQ29sb3IoJGV2ZW50KSI+e3tjcENhbmNlbEJ1dHRvblRleHR9fTwvYnV0dG9uPlxuXG4gICAgPGJ1dHRvbiAqbmdJZj0iY3BPS0J1dHRvbiIgdHlwZT0iYnV0dG9uIiBjbGFzcz0ie3tjcE9LQnV0dG9uQ2xhc3N9fSIgKGNsaWNrKT0ib25BY2NlcHRDb2xvcigkZXZlbnQpIj57e2NwT0tCdXR0b25UZXh0fX08L2J1dHRvbj5cbiAgPC9kaXY+XG48L2Rpdj5cbicsZW5jYXBzdWxhdGlvbjpXbi5Ob25lLHN0eWxlczpbJy5jb2xvci1waWNrZXJ7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lOy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCAjNzc3O2N1cnNvcjpkZWZhdWx0O2hlaWdodDphdXRvO3Bvc2l0aW9uOmFic29sdXRlO3VzZXItc2VsZWN0Om5vbmU7d2lkdGg6MjMwcHg7ei1pbmRleDoxMDAwfS5jb2xvci1waWNrZXIgKntib3gtc2l6aW5nOmJvcmRlci1ib3g7Zm9udC1zaXplOjExcHg7bWFyZ2luOjB9LmNvbG9yLXBpY2tlciBpbnB1dHtjb2xvcjojMDAwO2ZvbnQtc2l6ZToxM3B4O2hlaWdodDoyNnB4O21pbi13aWR0aDowO3RleHQtYWxpZ246Y2VudGVyO3dpZHRoOjB9LmNvbG9yLXBpY2tlciBpbnB1dDotbW96LXN1Ym1pdC1pbnZhbGlkLC5jb2xvci1waWNrZXIgaW5wdXQ6LW1vei11aS1pbnZhbGlkLC5jb2xvci1waWNrZXIgaW5wdXQ6aW52YWxpZHtib3gtc2hhZG93Om5vbmV9LmNvbG9yLXBpY2tlciBpbnB1dDo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbiwuY29sb3ItcGlja2VyIGlucHV0Ojotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uey13ZWJraXQtYXBwZWFyYW5jZTpub25lO21hcmdpbjowfS5jb2xvci1waWNrZXIgLmFycm93e2JvcmRlci1zdHlsZTpzb2xpZDtoZWlnaHQ6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDowO3otaW5kZXg6OTk5OTk5fS5jb2xvci1waWNrZXIgLmFycm93LmFycm93LXRvcHtib3JkZXItY29sb3I6Izc3NyB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDtib3JkZXItd2lkdGg6MTBweCA1cHg7bGVmdDo4cHh9LmNvbG9yLXBpY2tlciAuYXJyb3cuYXJyb3ctYm90dG9te2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAjNzc3O2JvcmRlci13aWR0aDoxMHB4IDVweDtsZWZ0OjhweDt0b3A6LTIwcHh9LmNvbG9yLXBpY2tlciAuYXJyb3cuYXJyb3ctbGVmdC10b3AsLmNvbG9yLXBpY2tlciAuYXJyb3cuYXJyb3ctdG9wLWxlZnR7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICM3Nzc7Ym9yZGVyLXdpZHRoOjVweCAxMHB4O2JvdHRvbTo4cHg7cmlnaHQ6LTIxcHh9LmNvbG9yLXBpY2tlciAuYXJyb3cuYXJyb3ctcmlnaHQtdG9wLC5jb2xvci1waWNrZXIgLmFycm93LmFycm93LXRvcC1yaWdodHtib3JkZXItY29sb3I6dHJhbnNwYXJlbnQgIzc3NyB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDtib3JkZXItd2lkdGg6NXB4IDEwcHg7Ym90dG9tOjhweDtsZWZ0Oi0yMHB4fS5jb2xvci1waWNrZXIgLmFycm93LmFycm93LWJvdHRvbS1sZWZ0LC5jb2xvci1waWNrZXIgLmFycm93LmFycm93LWxlZnQsLmNvbG9yLXBpY2tlciAuYXJyb3cuYXJyb3ctbGVmdC1ib3R0b217Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICM3Nzc7Ym9yZGVyLXdpZHRoOjVweCAxMHB4O3JpZ2h0Oi0yMXB4O3RvcDo4cHh9LmNvbG9yLXBpY2tlciAuYXJyb3cuYXJyb3ctYm90dG9tLXJpZ2h0LC5jb2xvci1waWNrZXIgLmFycm93LmFycm93LXJpZ2h0LC5jb2xvci1waWNrZXIgLmFycm93LmFycm93LXJpZ2h0LWJvdHRvbXtib3JkZXItY29sb3I6dHJhbnNwYXJlbnQgIzc3NyB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDtib3JkZXItd2lkdGg6NXB4IDEwcHg7bGVmdDotMjBweDt0b3A6OHB4fS5jb2xvci1waWNrZXIgLmN1cnNvcntib3JkZXI6MnB4IHNvbGlkICMyMjI7Ym9yZGVyLXJhZGl1czo1MCU7Y3Vyc29yOmRlZmF1bHQ7aGVpZ2h0OjE2cHg7cG9zaXRpb246cmVsYXRpdmU7d2lkdGg6MTZweH0uY29sb3ItcGlja2VyIC5ib3h7ZGlzcGxheTpmbGV4O3BhZGRpbmc6NHB4IDhweH0uY29sb3ItcGlja2VyIC5sZWZ0e3BhZGRpbmc6MTZweCA4cHg7cG9zaXRpb246cmVsYXRpdmV9LmNvbG9yLXBpY2tlciAucmlnaHR7ZmxleDoxIDEgYXV0bztwYWRkaW5nOjEycHggOHB4fS5jb2xvci1waWNrZXIgLmJ1dHRvbi1hcmVhe3BhZGRpbmc6MCAxNnB4IDE2cHg7dGV4dC1hbGlnbjpyaWdodH0uY29sb3ItcGlja2VyIC5idXR0b24tYXJlYSBidXR0b257bWFyZ2luLWxlZnQ6OHB4fS5jb2xvci1waWNrZXIgLnByZXNldC1hcmVhe3BhZGRpbmc6NHB4IDE1cHh9LmNvbG9yLXBpY2tlciAucHJlc2V0LWFyZWEgLnByZXNldC1sYWJlbHtjb2xvcjojNTU1O2ZvbnQtc2l6ZToxMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjRweDt0ZXh0LWFsaWduOmxlZnQ7dGV4dC1vdmVyZmxvdzplbGxpcHNpczt3aGl0ZS1zcGFjZTpub3dyYXA7d2lkdGg6MTAwJX0uY29sb3ItcGlja2VyIC5wcmVzZXQtYXJlYSAucHJlc2V0LWNvbG9ye2JvcmRlcjoxcHggc29saWQgI2E5YTlhOTtib3JkZXItcmFkaXVzOjI1JTtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmlubGluZS1ibG9jaztoZWlnaHQ6MThweDttYXJnaW46NHB4IDZweCA4cHg7cG9zaXRpb246cmVsYXRpdmU7d2lkdGg6MThweH0uY29sb3ItcGlja2VyIC5wcmVzZXQtYXJlYSAucHJlc2V0LWVtcHR5LW1lc3NhZ2V7Zm9udC1zdHlsZTppdGFsaWM7bWFyZ2luLWJvdHRvbTo4cHg7bWFyZ2luLXRvcDo0cHg7bWluLWhlaWdodDoxOHB4O3RleHQtYWxpZ246Y2VudGVyfS5jb2xvci1waWNrZXIgLmhleC10ZXh0e2ZvbnQtc2l6ZToxMXB4O3BhZGRpbmc6NHB4IDhweDt3aWR0aDoxMDAlfS5jb2xvci1waWNrZXIgLmhleC10ZXh0IC5ib3h7cGFkZGluZzowIDI0cHggOHB4IDhweH0uY29sb3ItcGlja2VyIC5oZXgtdGV4dCAuYm94IGRpdntjbGVhcjpsZWZ0O2NvbG9yOiM1NTU7ZmxleDoxIDEgYXV0bztmbG9hdDpsZWZ0O3RleHQtYWxpZ246Y2VudGVyfS5jb2xvci1waWNrZXIgLmhleC10ZXh0IC5ib3ggaW5wdXR7Ym9yZGVyOjFweCBzb2xpZCAjYTlhOWE5O2ZsZXg6MSAxIGF1dG87cGFkZGluZzoxcHh9LmNvbG9yLXBpY2tlciAuaGV4LWFscGhhIC5ib3ggZGl2OmZpcnN0LWNoaWxkLC5jb2xvci1waWNrZXIgLmhleC1hbHBoYSAuYm94IGlucHV0OmZpcnN0LWNoaWxke2ZsZXgtZ3JvdzozO21hcmdpbi1yaWdodDo4cHh9LmNvbG9yLXBpY2tlciAuY215ay10ZXh0LC5jb2xvci1waWNrZXIgLmhzbGEtdGV4dCwuY29sb3ItcGlja2VyIC5yZ2JhLXRleHQsLmNvbG9yLXBpY2tlciAudmFsdWUtdGV4dHtmb250LXNpemU6MTFweDtwYWRkaW5nOjRweCA4cHg7d2lkdGg6MTAwJX0uY29sb3ItcGlja2VyIC5jbXlrLXRleHQgLmJveCwuY29sb3ItcGlja2VyIC5oc2xhLXRleHQgLmJveCwuY29sb3ItcGlja2VyIC5yZ2JhLXRleHQgLmJveHtwYWRkaW5nOjAgMjRweCA4cHggOHB4fS5jb2xvci1waWNrZXIgLnZhbHVlLXRleHQgLmJveHtwYWRkaW5nOjAgOHB4IDhweH0uY29sb3ItcGlja2VyIC5jbXlrLXRleHQgLmJveCBkaXYsLmNvbG9yLXBpY2tlciAuaHNsYS10ZXh0IC5ib3ggZGl2LC5jb2xvci1waWNrZXIgLnJnYmEtdGV4dCAuYm94IGRpdiwuY29sb3ItcGlja2VyIC52YWx1ZS10ZXh0IC5ib3ggZGl2e2NvbG9yOiM1NTU7ZmxleDoxIDEgYXV0bzttYXJnaW4tcmlnaHQ6OHB4O3RleHQtYWxpZ246Y2VudGVyfS5jb2xvci1waWNrZXIgLmNteWstdGV4dCAuYm94IGRpdjpsYXN0LWNoaWxkLC5jb2xvci1waWNrZXIgLmhzbGEtdGV4dCAuYm94IGRpdjpsYXN0LWNoaWxkLC5jb2xvci1waWNrZXIgLnJnYmEtdGV4dCAuYm94IGRpdjpsYXN0LWNoaWxkLC5jb2xvci1waWNrZXIgLnZhbHVlLXRleHQgLmJveCBkaXY6bGFzdC1jaGlsZHttYXJnaW4tcmlnaHQ6MH0uY29sb3ItcGlja2VyIC5jbXlrLXRleHQgLmJveCBpbnB1dCwuY29sb3ItcGlja2VyIC5oc2xhLXRleHQgLmJveCBpbnB1dCwuY29sb3ItcGlja2VyIC5yZ2JhLXRleHQgLmJveCBpbnB1dCwuY29sb3ItcGlja2VyIC52YWx1ZS10ZXh0IC5ib3ggaW5wdXR7Ym9yZGVyOjFweCBzb2xpZCAjYTlhOWE5O2ZsZXg6MTtmbG9hdDpsZWZ0O21hcmdpbjowIDhweCAwIDA7cGFkZGluZzoxcHh9LmNvbG9yLXBpY2tlciAuY215ay10ZXh0IC5ib3ggaW5wdXQ6bGFzdC1jaGlsZCwuY29sb3ItcGlja2VyIC5oc2xhLXRleHQgLmJveCBpbnB1dDpsYXN0LWNoaWxkLC5jb2xvci1waWNrZXIgLnJnYmEtdGV4dCAuYm94IGlucHV0Omxhc3QtY2hpbGQsLmNvbG9yLXBpY2tlciAudmFsdWUtdGV4dCAuYm94IGlucHV0Omxhc3QtY2hpbGR7bWFyZ2luLXJpZ2h0OjB9LmNvbG9yLXBpY2tlciAuaHVlLWFscGhhe2FsaWduLWl0ZW1zOmNlbnRlcjttYXJnaW4tYm90dG9tOjNweH0uY29sb3ItcGlja2VyIC5odWV7YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSllBQUFBUUNBWUFBQUQwNklZbkFBQUFCbUpMUjBRQS93RC9BUCtndmFlVEFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFBQjNSSlRVVUg0QUlXRHdrVUZXYkNDQUFBQUZ4SlJFRlVhTjd0MGtFS2cwQVFBTUUyeDgzL24ycXU1cUNnRDFpRGhDb1lkcG5iUUM5YmJZMXFWTy9qdmM2azNhZDkxczcvN0YxL2NzZ1BydWp1UTE3QkRZU0ZzQkFXd2dKaElTeUVCY0pDV0FnTGhJV3dFQllJaTJmN0FyLzFUQ2dGSDJYOUFBQUFBRWxGVGtTdVFtQ0MiKTtkaXJlY3Rpb246bHRyfS5jb2xvci1waWNrZXIgLmh1ZSwuY29sb3ItcGlja2VyIC52YWx1ZXtiYWNrZ3JvdW5kLXNpemU6MTAwJSAxMDAlO2JvcmRlcjpub25lO2N1cnNvcjpwb2ludGVyO2hlaWdodDoxNnB4O21hcmdpbi1ib3R0b206MTZweDt3aWR0aDoxMDAlfS5jb2xvci1waWNrZXIgLnZhbHVle2JhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUpZQUFBQVFDQVlBQUFEMDZJWW5BQUFDVGtsRVFWUjQydTNTWVVjckFCaEE0VTJTa21SSk1tV1NKa2xLSmlXWlpwS1VKSnNrS1VtYVRGSW1LWk9Vek15U3BHUm1saVJOSmlsSlNwS1NKRXRtU3BJcG1XbVNkTzczNi82RCt4N09QM2dVQ29XQ3YxY3FsU1FsSlpHY25FeEtTZ3FwcWFta3BhV1JucDVPUmtZR21abVpxRlFxc3JLeXlNN09KaWNuaDl6Y1hOUnFOWGw1ZWVUbjU2UFJhQ2dvS0tDd3NKQ2lvaUswV2kzRnhjV1VsSlJRV2xwS1dWa1o1ZVhsVkZSVVVGbFppVTZubzZxcWl1cnFhbXBxYXFpdHJhV3VyZzY5WGs5OWZUMEdnd0dqMFVoRFF3T05qWTAwTlRYUjNOeE1TMHNMcmEydHRMVzEwZDdlanNsa3dtdzIwOUhSUVdkbkoxMWRYWFIzZDlQVDAwTnZieTk5ZlgzMDkvY3pNRERBNE9BZ0ZvdUZvYUVockZZcnc4UERqSXlNTURvNnl0allHRGFiamZIeGNTWW1KcGljbkdScWFncTczYzcwOURRek16UE16czR5TnpmSC9QdzhEb2NEcDlPSnkrWEM3WGF6c0xEQTR1SWlTMHRMTEM4dnM3S3l3dXJxS210cmEzZzhIcnhlTHo2ZkQ3L2Z6L3I2T2hzYkcyeHVicksxdGNYMjlqYUJRSUNkblIyQ3dTQzd1N3ZzN2UyeHY3L1B3Y0VCaDRlSEhCMGRjWHg4ek1uSkNhZW5wNXlkblhGK2ZzN0Z4UVdYbDVkY1hWMXhmWDNOemMwTnQ3ZTMzTjNkRVFxRnVMKy81K0hoZ1hBNFRDUVM0Zkh4a2Flbko1NmZuM2w1ZWVIMTlaVm9OTXJiMnh2djcrOThmSHdRaThXSXgrTjhmbjZTU0NUNCt2cmkrL3VibjU4ZmZuOS8rVmNLZ1NXd0JKYkFFbGdDUzJBSkxJRWxzQVNXd0JKWUFrdGdDU3lCSmJBRWxzQVNXQUpMWUFrc2dTV3dCSmJBRWxnQ1MyQUpMSUVsc1A0L1dIOEFtSjVaNmpIUzRoOEFBQUFBU1VWT1JLNUNZSUk9Iik7ZGlyZWN0aW9uOnJ0bH0uY29sb3ItcGlja2VyIC5hbHBoYXtiYWNrZ3JvdW5kLWltYWdlOnVybCgiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFKWUFBQUFRQ0FZQUFBRDA2SVluQUFBQUJtSkxSMFFBL3dEL0FQK2d2YWVUQUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUFCM1JKVFVVSDRBSVdEd1lRbFpNYTNnQUFBV1ZKUkVGVWFON3RtRUdPNmpBUVJDc09BckhnQnB5QUpZR2pjR29jeEFtNEEySUhwbW9XRTBlQkgrZXptRmxOdlUwNnNoSjNXNlZFZWxXTVVRQUlJRjlmNnFacGltc0ExTFl0UzJ1RjUxL3UyN1lWQUZaVlJVa0VvR0hkUFYvc0ljYklFSUlrVWRJLzlYYTduZXl2NjErU1dGVVZBVkNTY3QwMFRXbjJmdjZ1MytFY2ZkM3RYenkvMCtuRVV1K1NQam8va3F6cm1pUXBTY042djk4WGV3ZkE4L2xNa2lMSjJXeEdTVW9wY1Q2Zk02VTBOWDkvZnJmYmpldjFXdGZybFpmTGhZZkRRUUhHL0FJT2xuR3dqSU5sSEN4akhDempZSm0vVEpXZEN3cXVKWHNlRkZ6R3dETk5laUtNT0pUTzh4UWREUWFlQjI5K0s5ZWZlTGFCbzlKN3ZkdnRKajFSakZGamZpdjdxdjk1dGp4LzdsZVNRZ2g5M2UxZmZNZUlwNk8rWVFqaG8vTjc5MXQxWFZPU1NJN04vL0srNC9Hb3hXTEJ4K1BCNS9PcDVYTEorLzNPbEpKV3F4VTNtODNvdnY1aUdmOEtqWU5sSEN4akhDempZQmtIeTVnZjVndXN2UVU3VTM3alRBQUFBQUJKUlU1RXJrSmdnZz09Iik7YmFja2dyb3VuZC1zaXplOjEwMCUgMTAwJTtib3JkZXI6bm9uZTtjdXJzb3I6cG9pbnRlcjtkaXJlY3Rpb246bHRyO2hlaWdodDoxNnB4O3dpZHRoOjEwMCV9LmNvbG9yLXBpY2tlciAudHlwZS1wb2xpY3l7YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQklBQUFBZ0NBWUFBQUFmZkNqeEFBQUFCSE5DU1ZRSUNBZ0lmQWhraUFBQUFBbHdTRmx6QUFBQ2V3QUFBbnNCMDFDTzNBQUFBQmwwUlZoMFUyOW1kSGRoY21VQWQzZDNMbWx1YTNOallYQmxMbTl5WjV2dVBCb0FBQUlBU1VSQlZFaUo3Wlk5YXhSUkZJYWZzeE1TdHJMUUpwQWdwQkZoaStDOXcxWVNvMDBJNlJaL2c5dlpwQmYvUU9yNEd5UmdrU0tOU3JBYWRzWnFRR3dDa3VBV3lSWkpzeVN3dmhaN04vdmh6cmdiTEgzTGQ4NTk3amx6ejUwekpva3l4WEg4RHFEVmFyMHFpNnY4QmJJdHFTR3BFY2Z4ZGxtc0ZXWGt2WDhBZkFWV2czVUtQRW5UOUdLdWpNenNBRmdac1ZhQ04xVlRRZDc3WFVucmdFMWt2KzY5MzUyNjhXUnB6cm5IWnZZUldDN1l2QzNwUlpabDN3b3pxdFZxaXlIOUlnakFzcGtkMUdxMXhVSlF0VnJkQjlaS0lBT3RoZGcvUWM2NUxVazd3TklNb0NWSk84NjVyWUZoa3FqWDYvZDd2VjRHUEp3Qk1xb2ZVUlM1SkVrNkZZQmVyL2VlWWIvTW85V3dGblBPdlFiZUF2ZnVBQUs0Qk40c0FKdEFHL2dKSUVsbU51aUp5YmEzRUdObVppUGVadUVWbVZlbGwvWS82TitDekRuM0FYaEVPT283SHYvM0JlQXo4SXpRa01QbkpidVB4MXdDK3lZSjcvMG5ZSVA1Uy8wRkhLZHArcndDRUVYUlMvcmY1SGwxR3RiMk0waVNwQ09wQ1p6UEFUbVgxRXlTcEhNTEFzaXk3TWpNRG9IckdTRFhabmFZWmRuUndCaDdKOTF1dHdtY3pBQTZDYkczR2dQbGVYNGpxVUgvYTFDa3RxUkdudWMzaFNDQU1CMzJnS3Nwa0N0Z2IzS0NRTW1ramVQNFdOSlRock5OWnZhbDFXcHRUSXN2N0p0UTR0bUlkUmE4cVNvRXBXbDZZV1pOb0FOMHpLeFpOUGVocExTQlp2MnQrUTBDSjlsTG5BUlFMQUFBQUFCSlJVNUVya0pnZ2c9PSIpO2JhY2tncm91bmQtcG9zaXRpb246NTAlO2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtiYWNrZ3JvdW5kLXNpemU6OHB4IDE2cHg7aGVpZ2h0OjI0cHg7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MTJweDt0b3A6MjE4cHg7d2lkdGg6MTZweH0uY29sb3ItcGlja2VyIC50eXBlLXBvbGljeSAudHlwZS1wb2xpY3ktYXJyb3d7ZGlzcGxheTpibG9jaztoZWlnaHQ6NTAlO3dpZHRoOjEwMCV9LmNvbG9yLXBpY2tlciAuc2VsZWN0ZWQtY29sb3J7Ym9yZGVyOjFweCBzb2xpZCAjYTlhOWE5O2JvcmRlci1yYWRpdXM6NTAlO2hlaWdodDo0MHB4O2xlZnQ6OHB4O3Bvc2l0aW9uOmFic29sdXRlO3RvcDoxNnB4O3dpZHRoOjQwcHh9LmNvbG9yLXBpY2tlciAuc2VsZWN0ZWQtY29sb3ItYmFja2dyb3VuZHtiYWNrZ3JvdW5kLWltYWdlOnVybCgiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDZ0FBQUFvQ0FZQUFBQ00vcmh0QUFBQWgwbEVRVlJZUisyVzBRbEFNUWdENjB6ZGZ3T2RxYThUbUkvd1FNcjVLMEk1YlpMSXpMT2EybnQzN1ZWVmJkK2REeDVvYmdDQzNLQkx3SjJmZjRQblZpZGtmK3VjSWh3ODBIUWFDTG8zRE1IM0NSSzNpRnNtQVdWbDZoUE5Ed3Q4RXZORTVxK1l1RVhjTWdrb25WTTZTZHlDb0V2QW5aOHYxSGp4ODE3TWlsbXhTVUI1cmRMSkR5Y1pnVUFaVWNoL0FBQUFBRWxGVGtTdVFtQ0MiKTtib3JkZXItcmFkaXVzOjUwJTtoZWlnaHQ6NDBweDt3aWR0aDo0MHB4fS5jb2xvci1waWNrZXIgLnNhdHVyYXRpb24tbGlnaHRuZXNze2JhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQU9ZQUFBQ0NDQVlBQUFCU0Q3VDNBQUFBQm1KTFIwUUEvd0QvQVArZ3ZhZVRBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBQUIzUkpUVVVINEFJV0R3a3NQV1I2bGdBQUlBQkpSRUZVZU5ydG5WdVQ0N2dSckFITitQLy9Pci82MVk1d09OWjdtWjF1M1hBZUxNakpaR1pWZ2RLc2ZjNXhSM1MwUklJVVcrQ0h6Q3BjMk1jWW83WEd2M2V4N1VpWmQ1N3JqeXp6dit2KzMzWC9SLyszci9mN3ZSMzg2WStUdktOY2Yvd2RoVExQY3Y5cVUyd1pkNzR1dGgwdDE4MjFqa0laTFBjc0kvNm5XYTRYdnV0cXVVMFo4NW1ueDgwUy9aemdwbkxuT3RITnQ3L29meDFUS1hjU056Ti83cWJNUTNqdTdyTlFtTVlZZC80czJqOWFhK1ArZ0dhTWNacmIxTS90ZHJ2ZjcvZDJ2OTlQOS90OTNPLzNjYnZkeHUxMkc5ZnJkVnd1bDNFK244Yy8vL25QKzIrLy9YYjY2YWVmeGwvLyt0Zng1ei8vMllLNUFsMnJndmY0VXNicGRHckI1MmJBdkFyWHB1emptaXFBVlNHejVlRG1HWVh6aGJBWm1Dcm5temRkcFVVKzhZMWRBT1llWEN0RFV3VndWN1lDR0g2dUFteU1jWjlsNXZrVWFCUEdNVVo3L0o1dy83OTIvZnZ2OVhxOTMyNjNkci9mVHhQRUNlTUU4bks1ak0vUHovSFRUei9kdjMzN2R2cmxsMS9HUC83eGovRzN2LzF0L09VdmZ3a1Zzd29uZ2pkT3A5UHpIM1UzRDN6bVdHblpWWG40akNxczd3QzJCS1A0Lzh0QXprWnNvV3g2WHJxZUhaeW12cDRBQkNCSmhUUXdLZkRUOGd6clpDSXFpNUFoaUFDakJmRUIyclA4L1g2M01NN2Y2L1Y2djkvdjdYYTdiWUM4M1c3amNybHNWSElxNWZmdjMwKy8vZmJiK09XWFg4WlBQLzAwL3Y3M3Y0K2ZmLzc1SlN2YmV1K2JMMldNTWFGYkFscEJOTTg1UVgrY3Q2cW9TcWtQQXd1UWxCVktxR05GU1VPQUEzQm11N2dDNWhOT2QxNW5Td3ZBT1VXN0M0Z2lVQ1Y4U2duNUw5aE5GSXFUc3AwR3hJMHlzaW95akFqa1kvdEdKVkVweitmeitPV1hYKzdmdjM4Ly9mNzc3K1BidDIvajExOS9IVC8vL1BQNDlkZGZ4OGZIUndybVRqVjc3OUVYdTJweDJ4aGp3dGRKWlFjQVdRSVBMUElTc01KYVN3aUQ4Z3pJS3J3U3lBVEU1ajVuQWJSNWMxZEJVd0Jsc0VXVzBoNkxxaVlzcUZQQVF4Q3lSWjN3T1NBUnhtbFhNWDVrNjRwUWZ2djI3Zjc1K2RrK1BqNU9IeDhmNC92MzcrUGJ0Mi9qdDk5K0c5KytmUnNmSHgvamNybVVGTE8zMWdZRFdibHhSSXMvVHFmVDdvdXN4SnNBeFhBMkdjN1RBOVhkZ2Zkb0hiRnNqNzZYMisxV0FyZ0kxYWdlR3dBM3F1cHFvSHNtY2JJNkZ1OTNxdWdnRmE5ZDdMZUR0Z0tmQUZIQkorTkVCeUlrY0o1S2VydmRUbWhoR2NnSkpTWjV2bi8vZmorZnorMThQcDgrUHovSDUrZm5tR0QrL3Z2djQvdjM3K1BqNDJOOGZuNk8yKzFXczdKampQNndyYU1JNUU0Ulo4eDJ2VjVUU3drcXVvdFY3L2Q3VHo2SEZXc0QvcU5jZHcwQ1EzcS8zMjFjNjg2VHdEVklkYnV5NzN6TmxkaFNIYjhJMmtsWnpubStJbkJTNFU2bjAzMDJhQkZzTGhIREFLSlZKVmdsZkk5amh2dTUzVzUzc0xBTllOeEFpREE2TUNlVUh4OGY5K3YxMmk2WFM3dGNMcWNaVzU3UDV5ZVk4L2Z6ODNPY3orZm5zU21ZVXlrbldFRzg1V0JzdDlzdHpTTHlNZGZyOVFpMDhpWTE1VVowTGxER0xoUjNvNXpLMmo3T1BVVEQwRStuVTN0azdYYi8xNk5GYmhsb0FNdVkxempMVU9PM0JLZUlEZStaOHMzL0o0Z0ZvNFRNNWpQbXVSZzI4Zm9VS0tWU3dvMTZUZ0E1bnB5d2NXTEhnWWwvUHo4LzczLzYwNS9hYjcvOTFtNjNXN3RjTGllMHNaajRtYW81Z1R5Zno4OEUwZjErajhFY1l6d1RQRUcyY3FqeWZITkYwTThmdXFFaWFPVm5SelpaUU5oNWZ3UXlIZy9IREdmSm84OVExemIvcXV1NVhDNjc3M0kyWEtmVHFkL3Y5K2Qzd3VxV3ZhL1lUZFVkRVYzZmhJdi9WaXlwczZZRTN4M3I0M0s1YkpRUzY2emF4VkdGc3ZkKy8vajRhRisvZm0zZnYzOXZ0OXV0ZmYzNnRmMysrKy90ZHJ1ZHZuMzdadU5MQmFhQ01nVXpDK3JaUmlGb3d4VXVKSThZTXFjQ3A5T3BxNXZhZ2FZVTZsR0pBMVhRcWVqY2h3NkNqMEd3NW5ZQnJHdzAxQTJPMjA2bjA0QkdvdU5OeVRmcC9Gd0VsaFVleTZuWHJJS3c3UVFXZGR4dU4ybGRMNWZMODM5Z1NQRjhhaHUvSnZCTzQ4Q1BTdXFNZjhWcDkvUDUzTDU4K2RMdTkzczduOC90ZnI4LzM5L3Y5L2I1K1RraFBKM1A1Nm1RNDM2L2orL2Z2Ky9pU2diemVyMCtBWngvNSs4OGJ2Nk9NZGE2UzV6NmtkMjFmWUM5ZHh2N2NJSkoyZDlBT1MzMGZQTXp5SGlUTThCNERGNlhVbFlIcDRLUVczVysxdDc3TU5CMXZHSHhXcTdYYTd2Zjc4K3k1L041QStIMWV0Mjl4dVA1ZGJZdHlhUnU0QWtzYlBxNjkzNmZqUnpYUnhCYlByL2IrYjE4K2ZLbGpUSGFCQkJmbjgvbjAvMStIMSsrZkJubjh6bTBzQjhmSDV1NGNyNUd1QmhNVmswRUVuOVJzY3RnVmhNK2l4bEp0TUEyM1I4QjZ5eXNBc3RCT2dGWElLS0NNSWdUb01xTkV1MmZZTUg3enRjNzMyZFFLa0NqMXl0QVp0WTBLeDhwSXI4R0dKK0FUM1YrMkhpcmhsKytmQm1YeTJXejczdytiMTdQOHArZm44L3RVd0dWbGVWa1R5VWI2OERrZmF5V1k0enhOUmloVTRFcExKUFpWcksrdTdKNC9tZ2ZLcWVMVzlYMlJFV2xJdEwxZGl5bmJERGIzK2pYZ1lqUXFuMHJyeFdjK05rSUxQN0Y3eEliTXZ4N3ZWNTN4NDB4bmxiV0pGMTJaU2FnL04wcFc2dCtaem1PTXpIamFqS3dEZm9uZDc4ellUZGZxMTh1cDk3enIycTh2M0lpb0JwclJ0QmwwRVo5b2c1V0JSR09kT0hqSWpYRjdVb3RGYmdPV25YeklKeXpZdmpHNUlZZ3NtTU94SGt6OE9zTVNyVk5XZXE1VDhEYU9jYkV2MU9kNXJiczlhTzdZdk1ldDYzRWtGKytmTUV4cStNUmw0L0w1YkxaTi8rZXorZm5aNkthenVNcVhTUVZPNXNwSlhmbEhBSXplcy94SnNlY2tSSmlETW9nOWQ2VmZScnFYTXI2S3BWVjI3alJ3SmFjR292T0FNMXpNZFFNbndLMUF1Yks2M2tkQ0NodkkxQzdnMHo5bmYvRCtYemUyVmo4SDdHeDRQOWR1UWxzWUNycXlOOFhxRzNIbS8xME9qM2p3L24rY3Jsc3R1TStqUG1teFQyZFR1UHo4M1B6dDJwbjFYc0VIWC9iblBhVnFWbWgweHdPdDBvNlhMTEFIZVBVVTIwM3dIZmNyc3BDd21WM1RyeUI1czBNc2VlZzk3eC9Cd3pDakJsYkIrcFJBUGxhMEJWUXVUNlY2UUhkQmxqM2QwS0cxNDdiK0RxeFFlVXltRE80M1c0ZFFhcitUSWp3bUFkMHo4L2g2NXZmMC95THYzUGI1WExwcnUveWREbzlzN0VUMEkrUGo2ZEtLOVZVRUllS1dRV1BBT3JKOExLZDR2RSt0OTFZM2U3VUZsV2F0ZzJWd0puYitIUG10dm0vc2ZLNTkvT2FXRjN4L2VQMVVQSHZBNUREWURwWVhmYjBkcnYxVjJEa0JreHR3L3RFV1ZWbFhXZEM5cEZZczUvamZoOWRTLzE2dlc3czZsVEcrVGZxc3hTSkh4a1hYcS9YZHIxZXU0THNmRDZQM3ZzVDNONzdEa0wrelBtNWpTZEtMNHpSM0F4UWQ2ckhrTGtZbFNvd3NycTd6bnp1NndTd2RzTUpPWG1BNWZCY2p4dGdNR0JZSGxyNXpva2h0c01DVGdYTFFPVzRYQzZkRXlFTXByTDhtQVF6WFJnZHVpeDJ5WnpvcnhrWXNEbjNoQjFWZU1MR3NYc1Z0Z2wycFc4UzNzdmswdnc3UjRoTmFIdnY0Y0FDbDVIRnp3SUgwS2M2enU0WGpEUFIvanBBVnhXek8xWGsyRERiM3ZUY3hlR1UxaVdaSGttSURXemlXS3ZpckNKNERyYXZzNklKL0dHNmNUcVdkWER5K2ZBclFEVlZrTHFrVmpBb1pJSVRkbW1JcVh3cWE5NU4zK01HWW9aUWRSVk5PNTNZMXhSa2hPMTZ2WTdldTUwN0NhOWxKbmJHcHhPZW1RaFN3L0FRc21tcDV6VTlCaVU4RzZ3dlg3Nk02L1U2UGo0K2RvMEJ6NENwZ2lrblRVZURxd2xLQm1nM3U0T1ZqcloxQStyQWNnYWVqV3E2ZUpDdkNZRkRPTlN3T2dIWDRFUVJ3OGx4YnpET2RFSzZnWjNIazFiKzhnMm8xSkZ0S1h5di9mRWRUWHVXaldYZEFaaUJwNkFEZURyQ0ZpaW03QjZaRm5lZUk3R3ZtL1BNa1VEWDY3Vzd4SThiMEQ3L3Y4ZEE5cWZONW9hQ2Y3NFdaakgwbWYxY21mWTFZMEpVRm1WclRXdTh1emtOY0x0RWo3dTVGWEJUa2ZDNkdPQTVxOFlNeE84S1Z2RjZzQVZHZGNyVWJzS09EY1FLa0xNT01kbWx4dW02NDJZclBtMjZBbGhaVzFZQjFSK3JyR3N3RThUYVlBV2VVTXhkZitXandTdloyRWYzeXRPeWZuNStQcFZQQWFxT240M010TkJxdm1qanhiak00bFpqWlk0Z3FOTUk1a3RhVy9zWUtOd1MrOWxGUXpHaWhtTUNLUGE3K1owVjZFYjBHUm1vYnRwWDhKbGpXdTVGTUxONWphNmhHOWt3UWdacWY1KzFOSDVVeHprRlJlQ2RXaEo4WGRsR1VreE83SFJsWVJtNG1WTzQzVzd0ZXIxMlRQSkV3L3JtRU4zTDVTS0hJV1pnOW16K3BVb0tPWXE1YkpUSmRYMmdtZTFVY3hNWlFGYUVRSWxIY3QzMk0rWTFCekdrR3V6Zml5QU45eit1Z3BsWjFzeW1DckRDWVlrR3hEVHBJOVJ6Qnkwckh5ZURVQzFuV2FlVWFEOW40eGtOeVlNQkRadHpaM0IrK2ZKbFkyMVhGRE9jQVJKbGFiT3lpUzN1Q3BMSTlqclpqQ0RrYVZ2Y0NDandvZ25LU2hXZHpYWldsWk12VlRnRDhMcHFsQ0xycWdiY0IrcVl3cmdLWXBUMGNjQ3FiS3lDVmFsa0VhYm4vRnlub2dDclBLZnFmNTF4SjdzR0IyWlhjWm14b1NPenRqeDMwMERaaTdhMC8yQUlSMFVsQmFnOVN1RHc2S2NBemxhQjd2SFp2V3BqSzkwZHlycTZiS3lEVVpRYlIwQjA1YmlMUWtISWNTVW1nSUsrU3d1cWdIQ25vaW8yUlFVMXlqK0JuQnk5cHBoVktMR3lDN1p6RksxcHhXSytFOEloVkNXTE4vdUx0blVVNGF5b1lMb2FBTno4RmR0YVN2WTRwVjBCRVcybHM2MWN6cWxsQktwVHlLZ01BaHJaMWNkYzFSUk90UG12V05rZGNLWjdaS3hhV2ppUExKTXBwN09aS3hBK3JxRy9vSkxqeGYwcG5KbHFMb0RabzNneVUwbUtHeXMydGFLZWNqL2QxQytySlNwbEJxbFR5QXFnUitEOEtqS2xtUkwyZ3RVY0FkQ3RzTCtpakNOVDFvcXFxa0gyT0hFYkc1c0RGblVnNUFhK3lMb3UyVlUxcHRqMVMyWlFxdjFPUlpOOUlXelJmZ2FSQnhLb0JFOFVXeXFsSkZ0ckljMEF4TmpTamVkOTlDVFkvWERmU3pDejVNMElab1ZFc1duUEZOVHNsOG9vVkMxVHpiR2dxRlpORFNnVndLSysxc0dETUtxeFpDV0dWTUR5c2lFcjFqVlNRSlVZd2o1aUhPbFRoZEh0NDRTUWc5Q04rbmw4RDkwTk1JZ0FkZ3I0NkpxUmlSOUk4dlJkRnZicjE3bS95eFVNS2pOTE1pVlVBRHd1MkNXR2hoaStGNTVUV005TTljb2d6bXMxZG5NNHVPRi9MQUVZV2RjcW5NN3lGbXlxM0lmd21PUk9kN1kxaUZXdE9qb1k4VG80MW1UVjVJeXNnRkZ1UnpzYldGR2JOSUlKQ0R2MWRPbzRsWkc3aldCd1JGdFZUS3VXeWVDQnlKS09hbjhvWjNlcDlYZGRObDB0RHVheXdMejljWFBZZURBQTBTcGtCTzlzYlZjVE9WV2xkUHY0dXl6RWt6eEh0anZvbkhvU2tGRVdOb28xZDhEaGNRcHV0ZDJwcE5vbjRCem9BaUoxaEJGUWcwZFZ0ZGJHSEhEUVd1c2htTkVRdWtMTTJRTzFHMlk4YmdUWHFGaGNCSmo3RWpQZ2NQdHM4VVM4cVBwUEIvZFh6bk9oNVo0Mzh0ekg1ZWM2UWdyT0tyUlJmS215c0JtVURCK1BoWWFiTWxWUEVSK0dDU0lUVHpyN2FtMnRBckgzYmdjRXpQSm0rY3I1ako0Tm5ITkZEVnJGWGNJNUxlOWs1Sm53K2JlZGJWK0ZmUnpaSUhhT09hT3NMWTAvN1VHczU4RGpyR3dLTUlNRklHek9FVzEvakdzZEF0Q042aEVBSTRoQmU5WVhlUlJPQlNWUEFWUEFxdklNNWJ4NWhWS1dBTVA2ekJSeTNpZXNjcmlkVmRGQmluQnhYRG5HMkdSWTJYYkN2cDFsaHZHdE85Qnh1NWg5MDhYUXU0MmxuU0FyTUZkaXpNaW04dXdSQ3hQR25uT1M4bHdwbmJPaURxVEFqc3JSTi9QY29BU2NDYmFBQ3FWTTQweWxuampUQnMrYndXbEFHMjMvVUtiZGtpd0tXSVFQR3pXYWN6cG9TbHhQRWo4MjJjTldrcFM3Rnl6c0RycXBmZ3BHM2phaHcydmdiYVNRQXh1TFdaWXQ3Snp5TmU4Sm9acE5BY3ZERk9kdzB3cVlUOUFLMXJaei9EZGJTbExQcDByeUl4Z1FKbEs5QVpsRXE3SU9YcG9oZzlQSWhyQ25nODhKc094aVY0WldBWWZnNHNpa3gvOGt5Mlo5bDg2MnVxd3Jmc2NJSDgrdWdUbVZHeWlkZGVWWVVnRU1uNEdaemcxNEV3SXNoOXN4MmNLS2lXWFJldU9FNWd6R09RZ2RsUktWVmRsZXZxYjI3OVhxMFFuc3RzMlZEYUJPMGNvZXpzcnVXdEhBcHU2c0tHNElCaE4wYUdVMmtMck1LR1JUTjNIbWJDRHdLVjE0enZrTUVERzRRZlpWc3BWbGFOVTJtaGM1VEVaM04xaC96cVRoZXVMcFcwNVpXVEdWamIzZGJuTm14S1pCbk44SnFpZGFWTEtBT3lBUk5MUytNQjU0WjIrVmFxb01MS3JvVkJsbmdlZm5UUEFjb0hOV0NTdmxmQThDSTBIRW1CTkJuQmxYeU1yelU3QTdXVm05NFBQcVEyZ21xS3grV0RHc252aWxtY1NPQkpxT0sxbll5QUl6dUF5ZXNxM1VkU0szS2ZXY1lLRDk1SG1mWU9VM3FzZXIyQ3RZRVVBK0ZwZnFkTnZnUEJaVUJoRHJHT05SVmxRc2g4ckxjYVVDeWtIRzBPT1V3VGxMQnJzaDVzb0VNR2V6aTFFNEhSVnQxaWNwNXdaRUZYZGliQ2tHOFk4dlg3NXNiTzRFMGlvbTl6K2hqU2lPZnkzRGhwWEl0cFZoRStVR1Fkdm9XanRDaG1yR0hmNFlBektnQk5uR3R1SnhGQ2VHZGhVQWZRTExLOGtCWUFQNmd2RkpaYWpNRzNYa3ljeThLdUMwcTRFeXltd3R3ZHhkdjJNMG1JQnRLMExLbmY2NDBqMDBBdXE0Z1VrZFdHbGhzMjJxSmM2ZFpDc0wxOW94bmxUSkc0U1lWUklHcEQ4VFBGQnVNNk9FbGJTMXBsZGlkNG1HQXlONlpJdXBiQzViWEpOOWZkcGJUaFN4TFVhSThJRzFYSVlCeFczVGpzNktRb3NLY3hmeGNRbWRud1JHTTEwR25GY0N5MlhZdW5MTXlBa2RnazRtZVBpY3pzTHlndGhjQnV0NmdvT3FTN1lWRlhBRExqYW9zQjZzNm9mY1pXQVpTSVJZcVNVa2l6WXd0dFlhYjN2VU9ROXcySFJ4SUlnOFd3UlZlRTY4eGk0VXRMM3pScGh4cGx6d3VacmNxWUNxMUkzalBJNWRuSkl5Z0VvaE1iUHFWSlN6cnd6eEJKVHM1ek4rUmVVU2d4aWtQUVZGM0pWQmVOUXhiSEVOckVNTnZFZEZaVlY5bEg5K09SR0VzTlpRcHlUTmM0QzNBRzdYRjRuZ3pxK0RyTzJ6YnVhYU9YZ2RhRmNka0VvdG9TRkJWWDJxSjBDOE9XWmVHNEtHbHBnaEEwWGZUT1BDcVYycXF3UTI2UVdmRjJQTUxoSTJ3MWxWQWEyYVBzWWQwemEyNU1RUndnY1pONnVRRENpK1p4aUQ0WEVNMmtaeE9UNDFGblpuYVJsY3Bab3V6bFJxcWRiUVZXb3BRb1NCNThSVjUwbEJOckhpL0F3WFM1THJ3RFZscFkzRmMzQnlpWUdjNTJUcmlzdDZrT1hkd0luQVF0SnBwNVFjaHlhcXVZT1Y3U3UrZnhWTWFWM2RjMFJFMlM2bVVZMGdMdDJwTWNZcXJLSVE5dzJsMWdwUVVNdFFZY21tYnQ1RFROeGRoblVDalFxdGJLOVNVU3p2ckMwbW1oaEUxZTJGUzIrb3h5cHkvWkFTdXRrbXRqeDN2Y0JDMjRQWDY1bmJxa0JDUmhmalM5a0lZUG5lZThjTWFnVk9oSS8zVDFmQW1kdEFXWnNDc3dUSkNrUVZOYTBxV0tTS1BPcEhBVWhEOURyYlZjeW9Za3dxaHZoMTd2WUFheVhMUXlLR1lkeGxVREZwNDk0ckJYUmpZZ08xN0REWWV0TklVai9lenA2UzBsbmxwRXdzV21KTWtPd3NLWGVaS0VBaklIbjBFUUpJU2FSQmNPNlVNSU56N3AvYkVqam53NGZ0K3htRHZrc3hYNEcycklyaXM3cWFlS3dBRk1QMk9pN240Y3JpdVp3dHBTVXdwZkx4U25PUlNySXF1c2M1WkZhWHlzcVJXamlaMkR5QVdFSUwzNXRWU29RRWxGQUNqT2VHR1NFN0FIRVFnZG8vTFN2Q09nR0J2a3hzbURidmxTM0ZwNXZoYUIyVEFHcVJLcktLTXJoTFZwYUd6RVZqWjBPUXhEaGFDVEErUXlSUjFkMTVhUXpySm50TDNSaWJzaXBqRzZqbGdMNHlxYlMwc05ZZzFlODR2aGJCVnJFbEs2NENVY1dZWERmS3hocEl1eGlWSlpVeHNiTXkvdVJCS1ROUlE0a1EzTGRSWUxTMHJKalJQbFRQcVk2Z2RKc0VEYythUVhBbitIZ3NOVUNiUnVGME9qMHp3bkE3YldEa2JoTzVFbnMwMHFlUWhTMWxhQk1sNU0vY0FheHNMRjhyS3lxbCtUZjdFTExFR3UvaXhpaW1kQ3ZvMFRqZnBqS3dhZ2dlbjRlaDV2N0xva0xLYkx1eXZIaGNaRzhkaEdyRUR4N0hnOTNacHBKRjdxQnFPM2lWdmVYRURRTkluemVvZThZcTZlUGFaQloySnZpTTNXMlVBR290ZWtSQ0FHcTRFa0YxWDNET25SMTF5UnNCTDF0UmEwUFZjWmlORlhaMmMzNEZza3ZvbUluUVE2bHpwSm9aYkp4azQzTndLSkZCcXVKU3NyQnlIeWR4S09uVHhRQVNCbVMzaitKTW5zSFNsYTNFYzZLOVZXb0pWbjl6Zmp3T003aHFZQUFxSlF3RTJhM25BNDhKMlFHZWdSa3BaTml2U1kreXMzRWtLZDRvSkl3c3ZJSGwzY1dnTHQ1azROSDZPbXRMV2RwdXJPa3dFTXVwWWM3ZU10RFJoT2NJMnVpNUpoVkl6WHpMeXRvL0dBUHVab3lvOHdrb2R1VmdKZ2xDdDdPaEdiZ0lENE1xNHNpKzYzelVTMUZ1RkZYRmxxeWFqMmVtSGxMTWNCcVl1MEZNdVIyOEJiQjdsT3hSTVNpQ1FYRmhDS3V3a2haK3BZRGlHU2dic0tLVjhNaVNSc3VIU0lXTTlya2xSaUlsWlp1cVhqc1FLOG9vWUpNZ3EzSktXVmtoSGJoc1Z4RlV6dGhPV1BrWWlqY2J4NTRJS3NTZFQrdUxyM2NyR0t5b1lnRmlHUjlpQms0a2Zsb1VYK0pJbFFSUXFhYm1wZ25ocXRwUXBiNlJWUTFXSDVEbnJTNGhFb0dacWFlclEyZGhGYno4WGVQeFNobURibzcwZUlTam9vck8ydks4U0pYSTRTVW1FVTR6V0tEelVEdFdUWXc3eFhsYlNURWo0RlJnN3pLbktvR1JBTHYwR3M5VGdjMUJwQ3l3R1pSUUF0cVZ6MnhyQmNBTXpFcGZad0ZTYTJHNVcwUUJGalNNYXBXQUVGYTNIY0dON0N4RHpFQ3lJa0o5N3F3cnFXTlRXVm84NzZQUHNqUGtqMnd2Z3JvTTVsTFpLTUVUS1ZxbC9Ddm5XVkZpRmEvU3pKVVF3a29ac3I2N1k2dmxTUlYzLzJ0bU5UT1kzdm5heFl3TXVvUEtxZHpSMXc3SXFIeW1sUHhhQVRoZlU3S28yWlhZajRBWUpITCtrTmRLd1JRWUVTVFJhNWZzVVovclZDMVRNVHlXVnlZb3FOdHV6YUhzTXl2MnR2b2FyeGRmcXdZZ1UxYXhGby9jbnFsMUZHc3FLK3VBUk9WOEJYNEdVOFdjWlRBVGkycTdRY3lpME8wVitHaFdCTU5SVWtuOEgxU3NXVkU1QnkzR2kwRUNxVWVKb0JmQXREYTRhbWtkWEczN0FHUDVHZ2ViODRwN1VhenBvS1J6ZEZ6ZVE4SGtvSEd4cHJLeS9IcG01dDEycDQ3SjZ4VFlERXo3dUlORVhTdXhZWHZGc2tZQWMreVN4SDlzZjVmdEt6VTZJYndWQmNVR2c1ZTVGTUNFWFNFclpSMHdHYXlWMTl3b005Z3VQalRxSmRWVHFSNHVFNG5KbkxsZFdWa0VDQ1pMZDJWTEYreHRhbWV4N0lwaXJpU0RVcHZycG45bHJ3R01DSHlwcE1IK3BzNkxJTHN1RkdVajFYRU9YaXFicVNIUFVLbkNscFdWNjhrcXRVUlZORFk0VE5hb2N5a29ZZVRVNW5nR0VRYS9TMURubkU0QWVYTWNLakhQQW1GVmpDQkVOYWV5TFZOSGZyM3B4OHhVc3RKOTRoSXBmSDRIS0UvZURhQXJLNmxTeVZWRmJkdDFneFRJVmszcHBwVmxGWGk0cEVoVkJUT2JxdW9oVTg1TUxYbjFpYWh2VWtISmpTQ01jMDF0TEZ2ZVZWQngwRG9kTTZqZnRDdTdET3RJell4cmMwcXAxSkdQMmF5WUZ6MkdiNkh2TXJPOGNuR3RWNkdqbTN1SW1TZkQyR3BXSzZ1b3diWkdNeEZLUUNvMXBPTXRjTVhGcFJzdCtoWEdvQW9tRjNzU1RCR2dUZ2xiQktXd3NRM3RacWFZU3AwWjFDaW1SRFdGY0NKVVBZSjAwQkk1RmtLWU5vaWZ1UXhtTjg4U1dWWFdMTWFVcXFxZ0MwQm1RSlI2c2szdTlOQ2Y2allMWHhBZnFzWUVnVkxBaFJZMkF0Z3RmbFpORm1GeWh4ZHJMa0FkV2xrNEQ4OE0yaXhIeWVwSWRoTUhyRy9pUjFaR3RxME1HcGJEYlJQWU9YZVNZMU02Tnk0WnN0dkdTa3RLK1hiRlBBVGoyRDM3MXNhUEVzQU1YaFhyc1owa20vWFN0a2hoTXlCZnNhNnVYRlplMlZDZStZTXIxK0dLZ3dyUXlOWXExVlJyQitFaXpBb3c2TnNkTktjeVZFa1llTTczeXM2cTRrQUhwNkJpRmtsVGtJclZDNW9ZVjd1endPR0N6NFVKMFN0cTJsV01KeTR3dGIrUmV0TDZ0WkZpY25KbUJ3NVVqQ3ZYWE1aVkpYMk1Ra2JmK1hONUVXZDc4Vno4L0pFc01aVEJpS056c20xaW5MUlVRNzRINE5pZGFxSTY4ajVzQUZneGNSdmVDN2llTEpYZlFZeGpaWjJDc2lXRmV3WlhKbUJJbFoxdGR0clg0aFN1YXRlS3NvL1JaT3RPS1cybm1xMW9UemVLNmRSV0FXdTJOUlZiNGhxMFNYbTFHdnR1Z0hyYnI1SVhxbVNrdGc1Q3VERTJNU2xQd3NZNWtORTJXcDNBcWlaYldWTEF4aUJGKzJpQlpidU5qNk1CNnJzTUxDN0Z5YXNhWUR5bzdLa29QeUV0dzNwRU1YZlB2eEFKaTJqQVFRZ2pyejByTElaU1dabElvTmh3ZDV4SzRBUjltWU5qV0FhTHJudUltSmVCVk45ekJPUk9iVnZicittVFRmRlNFSkxTUm5IbzdoRUpvSWk4TUZxanhtdmdtRjVVUlp6NHpMRmdaWjhDdHUyWDdnZ1ZjY0ttOWdWeElzT0hxeFhnTk1LbkZXWlluZjFkQm5PaGF5WHExN1F3RmxXVzA5ZU5LeVZKRm1YcWFPTkdBNWFDZWdNYkozVVVrR1kxaWMzbktXZ2pxOHFmVllHUUcxZ1J0NnJzNjJhNkhpcXFVT3FkZXNLNU5tWDRuR29mSm9pRTFkMGRGOWxWVmt2VDEva0VFYWFDb1lPd0ZwY1Zjb0xNKzc2NjlQeEM5cldxa3RIMHNXVVlsZDBWQ3B1Qlovc3RWUmNHZ3k5V1gyK1UxUXRoaTlTekFxU3h6WnN5K09pRnpCWW55U0dWNkdrdTQ0ckQ4QkNPWkJWM0J2RDUrQUtSSE53TUVzQjZFekhuSnBrVEFlaVVsRUdrY0VDZUI2R0RaVHA1WUVKVGx2ZHJrbnhZalRsbE1rZk50WHdEak03dVZqSzVKWFVVbjQzcnJxcEsyanl0YXhIVzBNNUc4REM4cnRITVlzN0tTZ2R1VlFNR1RZRnFGdlZTNnJrRDNzREo0NmFmZFlGd29xMTFBT0tDQkxodndvVWdjOElHQU55Y1I2a25acmRKUGRzdXhueWpmZDNGb3ZUbFJNZEVkdE9sNUNNVjVFSHNYUUJpczdUT3d2SURaYUdqMlZucGJoN2NwSzYzVndZRU1Md3Fianp5bDY5OXNhd0ZGa0YxeXFqVVUzMUhmQzZzVzFaRlZGdVhWWFZnejlrZUVhdzB5czFsV2ZtK2F6UUFRU1dBK2hLWVZmc1pqUG5jQWNVQjlvSWF5eS9VWlhSTmNrREdqaTc3R3NXYnZCbzZ0UHJXUHFPeVZrQlVxK0lOZXFwek5kWXMvdTBpZmg1cW1wcUlXKzMzSlZTVWN3WTcwS0w0VTlsWWRVNmxqdFNsczdsbWZpOWczWXplUWZWa2FHRmFWM09EQ25hRDJOOHdzRURGa2xFM1J6TTNaZ2hkWWtXSHNzenE3MEZJZWNuS2tWa3Q4ZXpNelJxOWJrR3VLb2pSTEJWU29kM1kxeVBxS2dZVzdKUlFUUFZ5eTV4SVlMak9neGdUNTJSS0pVWTFkT3JJaVJkNGZ1dFF4L0E1QWNTbUVqejB2Rldya0x6dmJXQXU5SE9XYkdneEZrMVZOVHBuQktrNlRnd2lzSS9IY3hZWFAxdUFXTzcyVUxGbEJUcSthU3UyVlRVczZocnhNMkNGK2hFb3IxVklBOVptRlVhYWIxbFNTZ1pzVnM0c3h6SGxWTG9KSHI5SDREaE9OVGtJMVhDMC93aVkyTm9XQUc1UmxuSEZucTZvTGNjcFFkZE11Si9PMTdKVkE1T0hMaTBCcUN6dHE3WTErK3VjQ2Q5OHFMSThNSUhCVi9jS2p4UVRtZTNoRkJTM015Q3FuRHN1eW0ybzgwSGp2RkZUdHJVUm1OYUdKc21WYWhJbWpUc1VYS3RRWlRBVnM3TXZ2OC8rZnpVclpBWGNMSjZNNGtvZTZYUDBiNlNtV1dORHp5VXBROGJsK0x0V3g0dHVxWjM2Y1JZVjN5dVZ4UE53dklpcWlRQ1NtdTdzcmdUelI2bmt5aHBDYXJYd0Z5MXZHZDVpUDJjWTA2bEZyNU5qaGhnMVk2K05CMjhmdGJLODNzOHJmN2tMSmJLd0RGUGJMZzI1YTBBZFpKRWlxcjVwaGl4S01EbFJVdGNzc3ExaHJpTHFHb0gremVOZ1ZtOU9lbWpzRVRWOEpkRjBOSG5rSUZ4V1kxT0I0WXJwN3J0V0o3TmdBQUFQWGtsRVFWUTNvTnM1bnBseVZmOHUyRm9MdTFKckh2ZWFaV1FqcUFrc2h0RmEyZ3pzU0czWnBrYnZnM0hhZkY5c2xQUGxsZGpGbEs4MEd5c204TXI0TVBobmVOV0VOUEdqQUlwbWlsVFBBVGRUUlRYbENCWUhZQVF1UHdBMzZ4SXBXdEdONHEzWTJNaGlHc1VwdVNTbmxFSlJEOFBvckM3Q0ZZVncrRjUxcVRoZ2FieHNUeFd6Q0dZMFpTc2IzbGZxQXkwT1BOak55OHhpUVFLc0hZRlEySEJaVnZWYkJ1cTNtMW9XS2FqcWFvbnNNNnVaVXI2Q2pYV05aMGw1RTNoM2pVUm1hNmtQM01KSWl5MUxtK2thaFFxNDFOMmlaamE1c2p0bExZTlpIWnJINnFVR200dk1iRHA2UncyQ0ZtdnV5RmtyQmNDeU10RnFCYUVDbXNIb0s5QloyTEEvbEpjUnFTYURxbmFXYnJaZEdhejNETGdJdkJsbjR3b0d6dGJ5Skdxc2x3eGtoaEhyVGpUWUZYQ3RPb0tTOHVMZG9mVmRBYk95bEdVNm5sWXBYV1p0czRuWEJxNld4Sml0TU5va0hVSm5ibkpwbFFtK2FHcFkyYTVHTVYyUUQxaFJ1YkJQRktkdW1mNU9Ia0xIejBGOWx1RTVrakJqUmEwbkZFNUNVR3FIdzMyTW1qWjZ4a2dJTlZuU25aMVZaU3RLMnFLbFJhTGxRZ0s3dVRxN0pGWEp3TSszU09FS3loWk5JK3RKMEk1cU1ZeTlrMnFKRDdkVldkcUtYYTBDS05SMENjamcrQjJJWXUyZmNCWkpaa01GZ00xMXIwWDkyd2lsZ2hGR2d6Vm5leGxxQjd4TDltUzI5U2lZVVZZMm5YT1pqTkJSc3lEc1FQUldXNWhyWjRYY2RDNEhWV1JiamdKcjRzRm9mSzVTempRN3JoSTFVZWJkUGRFYmo2c3FJdlRaUVo1dmEwOHJBQnNBVzBVeGVXeXRBazdBMktKOVpweHpDaW9CMjRYRnRZQWVYWXhyNmFuU3FoTGdwcEVxV2JHd0x1blRnclYrSWpXbEwyOWxqYUFsNEVRTUdzRXJwNGFwZVppcXV3UlhMWEFxT0NlcnUzMm1teWRjNm9XVFNXcEZBR2R6ZVRCOFJUSFZNRXRsTTkwQ2JiUUNZaFBqcTNlZ1lyMUZHZFlJUWppdURHWjV6Wi9Bem9iS0dPeUx4dGk2YzRSd3R2MmFueVdsTElDbmxMaHhKUlh0NkE1ZWJEQldGTk9OYnhXWjJkMDJtbnU0UzlZRUNwZXBwVjF6U1dSQld4SFl6Vkl2MUNYU291d3FxWDNqQkJCRFpkWVFicFRRVzRaUWxTOHI1a0g0c3VTUm1nMisrM0pOMTB4MVBhQW1Fa210WWxFZGVHcEpFTTZrT3VDcUNSMjJvU3VqajVJVjJIZFQwemo1cHJMS1RqWEZBUGpkUWx5cTd4SUJ4QVFQNXlNY3pHNFZ4QUt3MG42aWxaMlFCY2UycEx1bGt1eHhxbm9JekZmZ3F5cWppbDlTMVZOd0JyRm1leWVvcHM4eU9qWlV5YlpkZlM4Q3VhVElKdW16czV0T0RhTnRMcEZEUS9QY0pHd2VMaG1lTDFuQjBLcWlVRFNjc2lVVkQ4OURpM0h0ckt0U1VMdzNSTGl5Z1pEKzdzRjhKVE9iZ1lzckd2RE5VRlJHbDFpeTBMbDFZa1VjMmFKWU1vZzkyMEk4cVc2WURDZzFNcWswSkhKRktYa2JnYlJyZUkrcXBZTk9aSHJWY0RVYmE3cGpzcGhTSk50SzZ1cGdSTkFWb09TMG11Z0JlTjRiSVpnSGh1UFovczFFTmFYNktzVnIrWU5yaDFOYjdpcFIwUEU1emJOUmVnQ2JySFJVdzZZZjA3ZExCSmwxZjhLQjlhczJWMW5OcUFzbDYyTEJCaGVod2FsZXJrSG1CMUpGSUVaS1NFdXNkbDVKUWoxbkpsSFhTQ0YzNDJnSjlDWUdyWGVsa25KSVhxVlA4c0QrcXRwbENSM1hIMnFmS3EweWdNcCtLblZrS3hObFo4bTJZa0lsVk1pQ25YVXdsN3F6bkJLU3ZRejNtM1B0Nm9RYlhPNWI1Rml4Q2gvZkh4VVFXL0FFY0s2ekNOcUtRbkw5c3l3cW1LdXd2cVNZelQvYVBWTk5wVnlodlJXMjFhcWNpQ3NqZFd2QndJTFV2aDVWeUN6YldvQzFwSmpKNjgwQ1dzbCt1ZEtCNlQ1UndHMW1sb2hubHBiZzQ3aXo1VTloYTBGR3RtUkxGWUJ0Tzk5eTk3QXAweitaRFRBb2c2a1NMWnNNSGcvSUZra2dwNkNwdlUyVTBjWVZTZG5ta2p3QmRPbVhieFRXTld6dUliaXBNaW9WeEVja1pFb2FoU09peTJNM0swamNDMUxoVkR3YXFHMFp2a2NXcUNuckc0R0l4eWtycWxiV2R3NkxReUJhWlI4SG1MUkloUVdzSHN3RDQyWlhWTE5rZjlsK0ZsVzBIVlEybHdGc0MvWjFGZHpsUVIwS2FQZm8rRmRmdSsvZHdWUklDdTFDR1I3QUVJaUFoYytBWlVGMGtPQmFQeG1VcWc0aTY0dlFuVTRuRkRZSjlOeisxZlZYdmVIOXFtcitrUElMeDhvS2NSVi9CRmJ4YkUwSk1UMGtTRDR3NkwvbE5ZOG9jc3FhZ1ZkVTNBM01qeGh4Y0d1cXpzUEg0aXJwYW93MXE2T3lyVmp2cDlOcGM1OUU5MUxsZGJvWVZ6SldkaW1XZkFXMlNORUtjRGFYMkZtQkxMQS91S3hsbWhoNjEzSXMxVVJRQXBiS2Z0dHd4TDAycTZPbng1cFF4U2JQb2pBZyt2NWhBbk42TEhWUkRYSXN2S3RSamlTMHFKVXlaVEFYVmJBSzgyRWxGSldhUWRWb3FVQzFVbnQ3QlZhVFF1ZE02U3VxZXhqUUpONCswaWNheHYvdXRiS3Y4M0VUYlQ4SDhnamNPS3hPSm1iVWE2T09WWGh0M2RGWTZySHY5WG9OekZMY2VFQTFvOCtwS20wTEFIUEhaMnJZS2pGcTBoZlpGaXhzcUhKZ0QzZUQ1bitVMGtiMW1GalhrbjJsdk1TU09zTkUvQ2RJQUtGMFN5dHE2dXJPSFVONWd3ZzRHWm9zZ2JtZ2dNNXVjcmEycXJTMklnMWNiaUJCY3hZemd6VUROTEN2TDhHYlpYTnA2T1J5M0xtUytLazgzelJJQUs2QTFpb0thMkk5TmFwSXVpVUZkZkM5NzY2UEZaVXRxVXI2S2JXayt6WlUxYS9acklYRXp0cmpUT2Z6N2h3S3ppQ2VYSWFyYUh0YlpJTXorMnBHZ2F6Q213NHFXQUZ2RWRob2RZcDBYcTBwVjdHMVlXWVdiTzRxaEdxNDIrWjhCWXRyTFd2bHVOUHBaQWVhRkZTMXZ1YlBnYmd4c3FjcG5BYXN6Qm92S2FGb0RROEJHdGpmVU9sNE5BRzJubVFWMDRmZUpndW12WDJmc3JRRVdaZ2hMMEpuVmRZa24zRE9aSWVSTjg2UnFQV0Ntc3ZHVnFFTVJud3hRQXh3UzhFTVlvM0l6bVkyK0JDY0xwNE1LaXV5dWhJbWFtbGJaRmNOb05sN3RwK1JIZDE4WmpRSVJLeVhkRlJoTjk4L2h5S3F3WFdObzdPMXdpYVhvSE4xMDhSRVpaV0VxNmdybklmanplZzhqZFJmMVhFTDRra1hhNWJCakt4b0thbGpCamVIbFZ4UTRHYXljcFc0bERPQUt0blR4SEF0T2Z6T3Rad0hBTTdzcVZYa1Y2eXU2a2FwMW5Ia1hLcVdGLzRYSHFqZW5OS3FCanBSM2wxY2gzRWpnMStFc2dkUWhzZEcwQjRGTTlzV0FWV3B1QXlpd1RQbGVaeHQ5VnlaVlMycVhmUmVXcVRBaWxwcjlBcG9XVGp4eW1pdDdOd1Y0SlRyaVp5T0E5QjBrN0hGZlVMb3VybUtZSFZuUlF2cUdMNUhNSGRxRmNSMnFXcG1jSzZlVHd4MmRpcFdydmlEaWxyK2ZLV3EzT1dSV2RIS3dBNGV1OHdqY2hiZVJ6RmlscWpqWk4zdWZDcGZrSjAvc2NWcG5ZazZMMFBJNzdseGRXQ1o4N1dpV203Qi9BR3F1UVNudWpHS3NCOENKbWlKcThxMXBLSVZXeXFPaVRLNjZyMThCTjhyNzQvQUU3MWZkQzN5UFMyTXhkT3BuRTF0bFZ4RDlKbVZPb2dnTityNFBqQVhWRlBhM0VnNWpWSkdGVlVHTm9sSDIwR1ZyVUI3Qk95U1dxNldxWVFkV1I5MnBjRk1ZTXdja2JTZ0NLQ3FENjdEaWlXdTFnOE1RQzlCeWZjRnFXMUwrakw3MTRxTkN1em5vU3h0MGRhMmd0V04xRzhGMEJLME5OMG51aW1lbFVGOWRJZEFmak80NFVUM0NqUUxvVWVMSEpGVE8zZ21wUnVJSU92d0JRQ2JxTmVvM3F0WjlpRjZ4VksxM0dSbG80enFpbXErQ0dkVGlSMXVSWThvcWdFMDJoWkJhNzlrWlhQTXF1eFJIS2xhMnNhWldONG1ScVpVajB2TENLaGtqS25xT1FITnVTWlZKb0t2QXFTMXdwRXF1dldEQzFCMnlwd3JDUHNSTUVQVlRPRE1MSk1EdjZxZUtYd2kySllWNVNxNHFLeXZnR3NIQ0xpdWoyalI1OVY4Z01xU0oyRkpaUlhFSFZSSGozc0ZQcmN0Nk9wcWxXMUdwYXRRZHQwR3Z3Zk02bjYzSW5zR1ZGaEpHYUJxZ3FxSVY2SXNYbGxaZ3lTUHE0UjNibnQzd2k1Y3YrY04yeXFRTFcxVDk1S1lWc1dXdEtrNGNCOVc1M1dRUWZsUVlSNldsNEhhSlpqdlZFMEQ1eXZxK1JLZ1pDczVxZEJFUDVzRDk0Y0F2UUxsU2dOYVNNQXRIeDg4QnVOUTQxemRGc1gzMHpLYmNzME1MRC9paGtwUXpsMHdpVHFLTFRmYkttQ215WUlDbkswSWJhaWVDNENHOWlTeUxRN2NJTUdRd2F1NlRLb3E2MEFwbDNXTjQwTFpwY2ExQ0tLSzlWUXl5SUVuOHcwRjhGNkNMMmg4bzNpeEd3QzdzN0VXekNPcW1jQXBZeFlENGpzQXpWUzBzbDJ0OThwQTd2cktvcGhDVlNvbmJZcGdINm12U24yNHBUQlY0c2R0VjNCdE1xNWs4MnkrSUFEdlVKMHVBbGtDVlR4SWFQbStVTnUvcWtWNEYxVHpIWENHclhJQXFJdEJLeXBxSzk5VnRBT1ZzNjRPNE9iWDdwSExWQ3BZSGNSbXd2TFI3VHZZQUtCQk41OExHVnpEdUZ6K2hRYldnbmNReUNaQWsrVmJzUFNvdWY5MzI2MWlaZ21mQ3B3UmJBdnFtU3FyaVUyUHdoamFvT3lZcXRJZWdWWFZpVHNteXRhNmJHeVNwWTNneVJycEl5QWVhV0REeHRwc1h3S3lhbE1ES05QN1lCWE1xRXNrVXNpMnVDOEZOQVB4QUtUVmZUMW82VnpNMEUwakYrMXJXY1V1SHZkeWc3dmdvRnBsWDhIcHZIcE1DT01SVVBIelprSW5zcWxGS05YL0VJTzUyRTBTeFN6T3dvYjJWbVJMVzVEMVhJVTByYmdNMUF6V2d5QzdmZThHN3hVQUsvdGFFQmF0N2x1cXR5UDdFbXNhSlFPajVGK21yblpmQ3VZQ2ZCVUFXd1NoeWQ2cE1ZL3ZBSEcxVXFPWXBiSS9neTVUMENNS20rVU8zZ0Z1Qzg1ZGdmRFZlZ3VQRGZJVHJJQkxzTHJjZ2RoM0NGZ0ZaamFLSjRJdjNGOEFORXF2dXhSMXRWS09nTG9DYTFqeGJvQkFrajZ2N2ovaWNGYkE3ZjRyZlJuUURMUlZpRzEzaTB2cUJRcllWcUJiQURaVDBacGlIb1N6dlFwb3BLSUZTM3NFMUhmQldsSFhkMEg3TG5BcnF2b3VnTXRsakhCZ1puaDNFb3ovQktqTE1MNFoyQXEwK2hFSnI5amFWVUJidk56Q0lVaXJvQzdBV21tRnc0bzVBSzNNdEI1VnlwWk1TRmdzMDVKeUdWd2x3QnFzRUdBQWEyWlUxQ2pVZXhYR3NFNHJLcmlpbEJ2RnpPS0tvM0F1QXJvRTZRRlFVM3U4WXBOWHdTNWsrMVRadDVVcndvdU40S2lVRXcrazNaV0RwMVJYSE5ScVhiMjFUczM5OTQ1eVpTZzNWblpGTlE5Q0YzWGVaeXI1RGdCWEtpd0NNYTJNeGVURFlYZ1AxRnNmOVFOS1pjMGs4MVJKazNyNkVRM3JDbUJWeUxMNzVFaloxcElWREhvRnRpT0FIb0IwQmRUVnlscUJzS0tLUytBZUJYSlZMWStDWEFTdUd2Ty9BdXE3R3VFakRmR0tnMW9LYTF6L2RtbWk5STlTVUdOaGwwQXRmdWxIQWF3b1lyblNrbU5YQVZ1R0VockVWWHZVRitBNUN0MlBxTk9qRGV0eW5hNENtZVVvbG1lWExONEFxN0M1U2oxMFE3eWpnbCt0NkNOeFNSSG1JNVgrQ3B3cmVZQjNRZmRxbmE0cTIxS2RCdWM0R29ac240OVpPT2lWaW53SHFLOVd6anZnZXdlRWgyQVU1K3Z0eFo5Q2Q5V3FraDQ5VjE4RTVvajZ2VnluMFJTdEF5R0lPNWVkWFJLZDVCMFZHVlhxMnlyM3hZcCs1VXQrQzRRSjRQMU4zMzlwUU1qUmVqajR2Yi9EY3I2clFjM08vMHJqbXRacGVZQ0JpQ0hmQ2VtUmJOaGJLL3BOVVBjM3dmS3k1ZjJEN09sTDMvdVBodmUvb1U0VDBGOGYrVk5NMnZ5b2l2MGpLK0tIUWZkSHErMGJuY3o0b3o3My8rWTZMYkt3MW8vNUI3ZU9mMVJsLzBkdTlCOXRuLzlidnJmL2ordjBoNnR0bjJ0cC9yLzQ4MTl5NC96djUzOTF1dnp6ZndEaWZ6NnBoVDFNUGdBQUFBQkpSVTVFcmtKZ2dnPT0iKTtiYWNrZ3JvdW5kLXNpemU6MTAwJSAxMDAlO2JvcmRlcjpub25lO2N1cnNvcjpwb2ludGVyO2RpcmVjdGlvbjpsdHI7aGVpZ2h0OjEzMHB4O3RvdWNoLWFjdGlvbjptYW5pcHVsYXRpb247d2lkdGg6MTAwJX0uY29sb3ItcGlja2VyIC5jcC1hZGQtY29sb3ItYnV0dG9uLWNsYXNze2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Ym9yZGVyOjA7Y3Vyc29yOnBvaW50ZXI7ZGlzcGxheTppbmxpbmU7bWFyZ2luOjNweCAtM3B4O3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZX0uY29sb3ItcGlja2VyIC5jcC1hZGQtY29sb3ItYnV0dG9uLWNsYXNzOmhvdmVye3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9LmNvbG9yLXBpY2tlciAuY3AtYWRkLWNvbG9yLWJ1dHRvbi1jbGFzczpkaXNhYmxlZHtjb2xvcjojOTk5O2N1cnNvcjpub3QtYWxsb3dlZH0uY29sb3ItcGlja2VyIC5jcC1hZGQtY29sb3ItYnV0dG9uLWNsYXNzOmRpc2FibGVkOmhvdmVye3RleHQtZGVjb3JhdGlvbjpub25lfS5jb2xvci1waWNrZXIgLmNwLXJlbW92ZS1jb2xvci1idXR0b24tY2xhc3N7YmFja2dyb3VuZDojZmZmO2JvcmRlci1yYWRpdXM6NTAlO2JveC1zaGFkb3c6MXB4IDFweCA1cHggIzMzMztjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmJsb2NrO2hlaWdodDoxMHB4O3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0Oi01cHg7dGV4dC1hbGlnbjpjZW50ZXI7dG9wOi01cHg7d2lkdGg6MTBweH0uY29sb3ItcGlja2VyIC5jcC1yZW1vdmUtY29sb3ItYnV0dG9uLWNsYXNzOmJlZm9yZXtib3R0b206My41cHg7Y29udGVudDoieCI7ZGlzcGxheTppbmxpbmUtYmxvY2s7Zm9udC1zaXplOjEwcHg7cG9zaXRpb246cmVsYXRpdmV9J119XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpLaH0se3R5cGU6T2J9LHt0eXBlOng1fV19KSx7aGFuZGxlRXNjOlt7dHlwZTpUXyxhcmdzOlsiZG9jdW1lbnQ6a2V5dXAuZXNjIixbIiRldmVudCJdXX1dLGhhbmRsZUVudGVyOlt7dHlwZTpUXyxhcmdzOlsiZG9jdW1lbnQ6a2V5dXAuZW50ZXIiLFsiJGV2ZW50Il1dfV0sZGlhbG9nRWxlbWVudDpbe3R5cGU6YXIsYXJnczpbImRpYWxvZ1BvcHVwIix7c3RhdGljOiEwfV19XSxodWVTbGlkZXI6W3t0eXBlOmFyLGFyZ3M6WyJodWVTbGlkZXIiLHtzdGF0aWM6ITB9XX1dLGFscGhhU2xpZGVyOlt7dHlwZTphcixhcmdzOlsiYWxwaGFTbGlkZXIiLHtzdGF0aWM6ITB9XX1dfSk7Y2xhc3MgUDV7Y29uc3RydWN0b3IodCxlLG4sbyxpLGEpe3RoaXMuaW5qZWN0b3I9dCx0aGlzLmNmcj1lLHRoaXMuYXBwUmVmPW4sdGhpcy52Y1JlZj1vLHRoaXMuZWxSZWY9aSx0aGlzLl9zZXJ2aWNlPWEsdGhpcy5kaWFsb2dDcmVhdGVkPSExLHRoaXMuaWdub3JlQ2hhbmdlcz0hMSx0aGlzLnZpZXdBdHRhY2hlZFRvQXBwUmVmPSExLHRoaXMuY3BXaWR0aD0iMjMwcHgiLHRoaXMuY3BIZWlnaHQ9ImF1dG8iLHRoaXMuY3BUb2dnbGU9ITEsdGhpcy5jcERpc2FibGVkPSExLHRoaXMuY3BJZ25vcmVkRWxlbWVudHM9W10sdGhpcy5jcEZhbGxiYWNrQ29sb3I9IiIsdGhpcy5jcENvbG9yTW9kZT0iY29sb3IiLHRoaXMuY3BDbXlrRW5hYmxlZD0hMSx0aGlzLmNwT3V0cHV0Rm9ybWF0PSJhdXRvIix0aGlzLmNwQWxwaGFDaGFubmVsPSJlbmFibGVkIix0aGlzLmNwRGlzYWJsZUlucHV0PSExLHRoaXMuY3BEaWFsb2dEaXNwbGF5PSJwb3B1cCIsdGhpcy5jcFNhdmVDbGlja091dHNpZGU9ITAsdGhpcy5jcENsb3NlQ2xpY2tPdXRzaWRlPSEwLHRoaXMuY3BVc2VSb290Vmlld0NvbnRhaW5lcj0hMSx0aGlzLmNwUG9zaXRpb249ImF1dG8iLHRoaXMuY3BQb3NpdGlvbk9mZnNldD0iMCUiLHRoaXMuY3BQb3NpdGlvblJlbGF0aXZlVG9BcnJvdz0hMSx0aGlzLmNwT0tCdXR0b249ITEsdGhpcy5jcE9LQnV0dG9uVGV4dD0iT0siLHRoaXMuY3BPS0J1dHRvbkNsYXNzPSJjcC1vay1idXR0b24tY2xhc3MiLHRoaXMuY3BDYW5jZWxCdXR0b249ITEsdGhpcy5jcENhbmNlbEJ1dHRvblRleHQ9IkNhbmNlbCIsdGhpcy5jcENhbmNlbEJ1dHRvbkNsYXNzPSJjcC1jYW5jZWwtYnV0dG9uLWNsYXNzIix0aGlzLmNwUHJlc2V0TGFiZWw9IlByZXNldCBjb2xvcnMiLHRoaXMuY3BQcmVzZXRDb2xvcnNDbGFzcz0iY3AtcHJlc2V0LWNvbG9ycy1jbGFzcyIsdGhpcy5jcE1heFByZXNldENvbG9yc0xlbmd0aD02LHRoaXMuY3BQcmVzZXRFbXB0eU1lc3NhZ2U9Ik5vIGNvbG9ycyBhZGRlZCIsdGhpcy5jcFByZXNldEVtcHR5TWVzc2FnZUNsYXNzPSJwcmVzZXQtZW1wdHktbWVzc2FnZSIsdGhpcy5jcEFkZENvbG9yQnV0dG9uPSExLHRoaXMuY3BBZGRDb2xvckJ1dHRvblRleHQ9IkFkZCBjb2xvciIsdGhpcy5jcEFkZENvbG9yQnV0dG9uQ2xhc3M9ImNwLWFkZC1jb2xvci1idXR0b24tY2xhc3MiLHRoaXMuY3BSZW1vdmVDb2xvckJ1dHRvbkNsYXNzPSJjcC1yZW1vdmUtY29sb3ItYnV0dG9uLWNsYXNzIix0aGlzLmNwSW5wdXRDaGFuZ2U9bmV3IFN5KCEwKSx0aGlzLmNwVG9nZ2xlQ2hhbmdlPW5ldyBTeSghMCksdGhpcy5jcFNsaWRlckNoYW5nZT1uZXcgU3koITApLHRoaXMuY3BTbGlkZXJEcmFnRW5kPW5ldyBTeSghMCksdGhpcy5jcFNsaWRlckRyYWdTdGFydD1uZXcgU3koITApLHRoaXMuY29sb3JQaWNrZXJPcGVuPW5ldyBTeSghMCksdGhpcy5jb2xvclBpY2tlckNsb3NlPW5ldyBTeSghMCksdGhpcy5jb2xvclBpY2tlckNhbmNlbD1uZXcgU3koITApLHRoaXMuY29sb3JQaWNrZXJTZWxlY3Q9bmV3IFN5KCEwKSx0aGlzLmNvbG9yUGlja2VyQ2hhbmdlPW5ldyBTeSghMSksdGhpcy5jcENteWtDb2xvckNoYW5nZT1uZXcgU3koITApLHRoaXMuY3BQcmVzZXRDb2xvcnNDaGFuZ2U9bmV3IFN5KCEwKX1oYW5kbGVDbGljaygpe3RoaXMuaW5wdXRGb2N1cygpfWhhbmRsZUZvY3VzKCl7dGhpcy5pbnB1dEZvY3VzKCl9aGFuZGxlSW5wdXQodCl7dGhpcy5pbnB1dENoYW5nZSh0KX1uZ09uRGVzdHJveSgpe251bGwhPXRoaXMuY21wUmVmJiYodGhpcy52aWV3QXR0YWNoZWRUb0FwcFJlZiYmdGhpcy5hcHBSZWYuZGV0YWNoVmlldyh0aGlzLmNtcFJlZi5ob3N0VmlldyksdGhpcy5jbXBSZWYuZGVzdHJveSgpLHRoaXMuY21wUmVmPW51bGwsdGhpcy5kaWFsb2c9bnVsbCl9bmdPbkNoYW5nZXModCl7dC5jcFRvZ2dsZSYmIXRoaXMuY3BEaXNhYmxlZCYmKHQuY3BUb2dnbGUuY3VycmVudFZhbHVlP3RoaXMub3BlbkRpYWxvZygpOnQuY3BUb2dnbGUuY3VycmVudFZhbHVlfHx0aGlzLmNsb3NlRGlhbG9nKCkpLHQuY29sb3JQaWNrZXImJih0aGlzLmRpYWxvZyYmIXRoaXMuaWdub3JlQ2hhbmdlcyYmKCJpbmxpbmUiPT09dGhpcy5jcERpYWxvZ0Rpc3BsYXkmJnRoaXMuZGlhbG9nLnNldEluaXRpYWxDb2xvcih0LmNvbG9yUGlja2VyLmN1cnJlbnRWYWx1ZSksdGhpcy5kaWFsb2cuc2V0Q29sb3JGcm9tU3RyaW5nKHQuY29sb3JQaWNrZXIuY3VycmVudFZhbHVlLCExKSx0aGlzLmNwVXNlUm9vdFZpZXdDb250YWluZXImJiJpbmxpbmUiIT09dGhpcy5jcERpYWxvZ0Rpc3BsYXkmJnRoaXMuY21wUmVmLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKSksdGhpcy5pZ25vcmVDaGFuZ2VzPSExKSwodC5jcFByZXNldExhYmVsfHx0LmNwUHJlc2V0Q29sb3JzKSYmdGhpcy5kaWFsb2cmJnRoaXMuZGlhbG9nLnNldFByZXNldENvbmZpZyh0aGlzLmNwUHJlc2V0TGFiZWwsdGhpcy5jcFByZXNldENvbG9ycyl9b3BlbkRpYWxvZygpe2lmKHRoaXMuZGlhbG9nQ3JlYXRlZCl0aGlzLmRpYWxvZyYmdGhpcy5kaWFsb2cub3BlbkRpYWxvZyh0aGlzLmNvbG9yUGlja2VyKTtlbHNle2xldCB0PXRoaXMudmNSZWY7aWYodGhpcy5kaWFsb2dDcmVhdGVkPSEwLHRoaXMudmlld0F0dGFjaGVkVG9BcHBSZWY9ITEsdGhpcy5jcFVzZVJvb3RWaWV3Q29udGFpbmVyJiYiaW5saW5lIiE9PXRoaXMuY3BEaWFsb2dEaXNwbGF5KXtjb25zdCBlPXRoaXMuaW5qZWN0b3IuZ2V0KHRoaXMuYXBwUmVmLmNvbXBvbmVudFR5cGVzWzBdLE5wLk5VTEwpO2UhPT1OcC5OVUxMPyh0PWUudmNSZWZ8fGUudmlld0NvbnRhaW5lclJlZnx8dGhpcy52Y1JlZix0PT09dGhpcy52Y1JlZiYmY29uc29sZS53YXJuKCJZb3UgYXJlIHVzaW5nIGNwVXNlUm9vdFZpZXdDb250YWluZXIsIGJ1dCB0aGUgcm9vdCBjb21wb25lbnQgaXMgbm90IGV4cG9zaW5nIHZpZXdDb250YWluZXJSZWYhUGxlYXNlIGV4cG9zZSBpdCBieSBhZGRpbmcgJ3B1YmxpYyB2Y1JlZjogVmlld0NvbnRhaW5lclJlZicgdG8gdGhlIGNvbnN0cnVjdG9yLiIpKTp0aGlzLnZpZXdBdHRhY2hlZFRvQXBwUmVmPSEwfWNvbnN0IGU9dGhpcy5jZnIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoTzUpO2lmKHRoaXMudmlld0F0dGFjaGVkVG9BcHBSZWYpdGhpcy5jbXBSZWY9ZS5jcmVhdGUodGhpcy5pbmplY3RvciksdGhpcy5hcHBSZWYuYXR0YWNoVmlldyh0aGlzLmNtcFJlZi5ob3N0VmlldyksZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0aGlzLmNtcFJlZi5ob3N0Vmlldy5yb290Tm9kZXNbMF0pO2Vsc2V7Y29uc3Qgbj1mZi5mcm9tUmVzb2x2ZWRQcm92aWRlcnMoW10sdC5wYXJlbnRJbmplY3Rvcik7dGhpcy5jbXBSZWY9dC5jcmVhdGVDb21wb25lbnQoZSwwLG4sW10pfXRoaXMuY21wUmVmLmluc3RhbmNlLnNldHVwRGlhbG9nKHRoaXMsdGhpcy5lbFJlZix0aGlzLmNvbG9yUGlja2VyLHRoaXMuY3BXaWR0aCx0aGlzLmNwSGVpZ2h0LHRoaXMuY3BEaWFsb2dEaXNwbGF5LHRoaXMuY3BGYWxsYmFja0NvbG9yLHRoaXMuY3BDb2xvck1vZGUsdGhpcy5jcENteWtFbmFibGVkLHRoaXMuY3BBbHBoYUNoYW5uZWwsdGhpcy5jcE91dHB1dEZvcm1hdCx0aGlzLmNwRGlzYWJsZUlucHV0LHRoaXMuY3BJZ25vcmVkRWxlbWVudHMsdGhpcy5jcFNhdmVDbGlja091dHNpZGUsdGhpcy5jcENsb3NlQ2xpY2tPdXRzaWRlLHRoaXMuY3BVc2VSb290Vmlld0NvbnRhaW5lcix0aGlzLmNwUG9zaXRpb24sdGhpcy5jcFBvc2l0aW9uT2Zmc2V0LHRoaXMuY3BQb3NpdGlvblJlbGF0aXZlVG9BcnJvdyx0aGlzLmNwUHJlc2V0TGFiZWwsdGhpcy5jcFByZXNldENvbG9ycyx0aGlzLmNwUHJlc2V0Q29sb3JzQ2xhc3MsdGhpcy5jcE1heFByZXNldENvbG9yc0xlbmd0aCx0aGlzLmNwUHJlc2V0RW1wdHlNZXNzYWdlLHRoaXMuY3BQcmVzZXRFbXB0eU1lc3NhZ2VDbGFzcyx0aGlzLmNwT0tCdXR0b24sdGhpcy5jcE9LQnV0dG9uQ2xhc3MsdGhpcy5jcE9LQnV0dG9uVGV4dCx0aGlzLmNwQ2FuY2VsQnV0dG9uLHRoaXMuY3BDYW5jZWxCdXR0b25DbGFzcyx0aGlzLmNwQ2FuY2VsQnV0dG9uVGV4dCx0aGlzLmNwQWRkQ29sb3JCdXR0b24sdGhpcy5jcEFkZENvbG9yQnV0dG9uQ2xhc3MsdGhpcy5jcEFkZENvbG9yQnV0dG9uVGV4dCx0aGlzLmNwUmVtb3ZlQ29sb3JCdXR0b25DbGFzcyx0aGlzLmVsUmVmKSx0aGlzLmRpYWxvZz10aGlzLmNtcFJlZi5pbnN0YW5jZSx0aGlzLnZjUmVmIT09dCYmdGhpcy5jbXBSZWYuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpfX1jbG9zZURpYWxvZygpe3RoaXMuZGlhbG9nJiYicG9wdXAiPT09dGhpcy5jcERpYWxvZ0Rpc3BsYXkmJnRoaXMuZGlhbG9nLmNsb3NlRGlhbG9nKCl9Y215a0NoYW5nZWQodCl7dGhpcy5jcENteWtDb2xvckNoYW5nZS5lbWl0KHQpfXN0YXRlQ2hhbmdlZCh0KXt0aGlzLmNwVG9nZ2xlQ2hhbmdlLmVtaXQodCksdD90aGlzLmNvbG9yUGlja2VyT3Blbi5lbWl0KHRoaXMuY29sb3JQaWNrZXIpOnRoaXMuY29sb3JQaWNrZXJDbG9zZS5lbWl0KHRoaXMuY29sb3JQaWNrZXIpfWNvbG9yQ2hhbmdlZCh0LGU9ITApe3RoaXMuaWdub3JlQ2hhbmdlcz1lLHRoaXMuY29sb3JQaWNrZXJDaGFuZ2UuZW1pdCh0KX1jb2xvclNlbGVjdGVkKHQpe3RoaXMuY29sb3JQaWNrZXJTZWxlY3QuZW1pdCh0KX1jb2xvckNhbmNlbGVkKCl7dGhpcy5jb2xvclBpY2tlckNhbmNlbC5lbWl0KCl9aW5wdXRGb2N1cygpe2NvbnN0IHQ9dGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LGU9dGhpcy5jcElnbm9yZWRFbGVtZW50cy5maWx0ZXIoKGU9PmU9PT10KSk7dGhpcy5jcERpc2FibGVkfHxlLmxlbmd0aHx8KCJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQmJnQ9PT1kb2N1bWVudC5hY3RpdmVFbGVtZW50P3RoaXMub3BlbkRpYWxvZygpOnRoaXMuZGlhbG9nJiZ0aGlzLmRpYWxvZy5zaG93P3RoaXMuY2xvc2VEaWFsb2coKTp0aGlzLm9wZW5EaWFsb2coKSl9aW5wdXRDaGFuZ2UodCl7dGhpcy5kaWFsb2c/dGhpcy5kaWFsb2cuc2V0Q29sb3JGcm9tU3RyaW5nKHQudGFyZ2V0LnZhbHVlLCEwKToodGhpcy5jb2xvclBpY2tlcj10LnRhcmdldC52YWx1ZSx0aGlzLmNvbG9yUGlja2VyQ2hhbmdlLmVtaXQodGhpcy5jb2xvclBpY2tlcikpfWlucHV0Q2hhbmdlZCh0KXt0aGlzLmNwSW5wdXRDaGFuZ2UuZW1pdCh0KX1zbGlkZXJDaGFuZ2VkKHQpe3RoaXMuY3BTbGlkZXJDaGFuZ2UuZW1pdCh0KX1zbGlkZXJEcmFnRW5kKHQpe3RoaXMuY3BTbGlkZXJEcmFnRW5kLmVtaXQodCl9c2xpZGVyRHJhZ1N0YXJ0KHQpe3RoaXMuY3BTbGlkZXJEcmFnU3RhcnQuZW1pdCh0KX1wcmVzZXRDb2xvcnNDaGFuZ2VkKHQpe3RoaXMuY3BQcmVzZXRDb2xvcnNDaGFuZ2UuZW1pdCh0KX19UDUuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFA1KShnZihOcCksZ2YoR2gpLGdmKEhDKSxnZihGYiksZ2YoS2gpLGdmKHg1KSl9LFA1Lsm1ZGlyPWhvKHt0eXBlOlA1LHNlbGVjdG9yczpbWyIiLCJjb2xvclBpY2tlciIsIiJdXSxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezEmZSYmUmYoImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLmhhbmRsZUNsaWNrKCl9KSkoImZvY3VzIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLmhhbmRsZUZvY3VzKCl9KSkoImlucHV0IiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5oYW5kbGVJbnB1dChlKX0pKX0saW5wdXRzOntjcFdpZHRoOiJjcFdpZHRoIixjcEhlaWdodDoiY3BIZWlnaHQiLGNwVG9nZ2xlOiJjcFRvZ2dsZSIsY3BEaXNhYmxlZDoiY3BEaXNhYmxlZCIsY3BJZ25vcmVkRWxlbWVudHM6ImNwSWdub3JlZEVsZW1lbnRzIixjcEZhbGxiYWNrQ29sb3I6ImNwRmFsbGJhY2tDb2xvciIsY3BDb2xvck1vZGU6ImNwQ29sb3JNb2RlIixjcENteWtFbmFibGVkOiJjcENteWtFbmFibGVkIixjcE91dHB1dEZvcm1hdDoiY3BPdXRwdXRGb3JtYXQiLGNwQWxwaGFDaGFubmVsOiJjcEFscGhhQ2hhbm5lbCIsY3BEaXNhYmxlSW5wdXQ6ImNwRGlzYWJsZUlucHV0IixjcERpYWxvZ0Rpc3BsYXk6ImNwRGlhbG9nRGlzcGxheSIsY3BTYXZlQ2xpY2tPdXRzaWRlOiJjcFNhdmVDbGlja091dHNpZGUiLGNwQ2xvc2VDbGlja091dHNpZGU6ImNwQ2xvc2VDbGlja091dHNpZGUiLGNwVXNlUm9vdFZpZXdDb250YWluZXI6ImNwVXNlUm9vdFZpZXdDb250YWluZXIiLGNwUG9zaXRpb246ImNwUG9zaXRpb24iLGNwUG9zaXRpb25PZmZzZXQ6ImNwUG9zaXRpb25PZmZzZXQiLGNwUG9zaXRpb25SZWxhdGl2ZVRvQXJyb3c6ImNwUG9zaXRpb25SZWxhdGl2ZVRvQXJyb3ciLGNwT0tCdXR0b246ImNwT0tCdXR0b24iLGNwT0tCdXR0b25UZXh0OiJjcE9LQnV0dG9uVGV4dCIsY3BPS0J1dHRvbkNsYXNzOiJjcE9LQnV0dG9uQ2xhc3MiLGNwQ2FuY2VsQnV0dG9uOiJjcENhbmNlbEJ1dHRvbiIsY3BDYW5jZWxCdXR0b25UZXh0OiJjcENhbmNlbEJ1dHRvblRleHQiLGNwQ2FuY2VsQnV0dG9uQ2xhc3M6ImNwQ2FuY2VsQnV0dG9uQ2xhc3MiLGNwUHJlc2V0TGFiZWw6ImNwUHJlc2V0TGFiZWwiLGNwUHJlc2V0Q29sb3JzQ2xhc3M6ImNwUHJlc2V0Q29sb3JzQ2xhc3MiLGNwTWF4UHJlc2V0Q29sb3JzTGVuZ3RoOiJjcE1heFByZXNldENvbG9yc0xlbmd0aCIsY3BQcmVzZXRFbXB0eU1lc3NhZ2U6ImNwUHJlc2V0RW1wdHlNZXNzYWdlIixjcFByZXNldEVtcHR5TWVzc2FnZUNsYXNzOiJjcFByZXNldEVtcHR5TWVzc2FnZUNsYXNzIixjcEFkZENvbG9yQnV0dG9uOiJjcEFkZENvbG9yQnV0dG9uIixjcEFkZENvbG9yQnV0dG9uVGV4dDoiY3BBZGRDb2xvckJ1dHRvblRleHQiLGNwQWRkQ29sb3JCdXR0b25DbGFzczoiY3BBZGRDb2xvckJ1dHRvbkNsYXNzIixjcFJlbW92ZUNvbG9yQnV0dG9uQ2xhc3M6ImNwUmVtb3ZlQ29sb3JCdXR0b25DbGFzcyIsY29sb3JQaWNrZXI6ImNvbG9yUGlja2VyIixjcFByZXNldENvbG9yczoiY3BQcmVzZXRDb2xvcnMifSxvdXRwdXRzOntjcElucHV0Q2hhbmdlOiJjcElucHV0Q2hhbmdlIixjcFRvZ2dsZUNoYW5nZToiY3BUb2dnbGVDaGFuZ2UiLGNwU2xpZGVyQ2hhbmdlOiJjcFNsaWRlckNoYW5nZSIsY3BTbGlkZXJEcmFnRW5kOiJjcFNsaWRlckRyYWdFbmQiLGNwU2xpZGVyRHJhZ1N0YXJ0OiJjcFNsaWRlckRyYWdTdGFydCIsY29sb3JQaWNrZXJPcGVuOiJjb2xvclBpY2tlck9wZW4iLGNvbG9yUGlja2VyQ2xvc2U6ImNvbG9yUGlja2VyQ2xvc2UiLGNvbG9yUGlja2VyQ2FuY2VsOiJjb2xvclBpY2tlckNhbmNlbCIsY29sb3JQaWNrZXJTZWxlY3Q6ImNvbG9yUGlja2VyU2VsZWN0Iixjb2xvclBpY2tlckNoYW5nZToiY29sb3JQaWNrZXJDaGFuZ2UiLGNwQ215a0NvbG9yQ2hhbmdlOiJjcENteWtDb2xvckNoYW5nZSIsY3BQcmVzZXRDb2xvcnNDaGFuZ2U6ImNwUHJlc2V0Q29sb3JzQ2hhbmdlIn0sZXhwb3J0QXM6WyJuZ3hDb2xvclBpY2tlciJdLGZlYXR1cmVzOltxb119KSxQNS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOk5wfSx7dHlwZTpHaH0se3R5cGU6SEN9LHt0eXBlOkZifSx7dHlwZTpLaH0se3R5cGU6eDV9XSxQNS5wcm9wRGVjb3JhdG9ycz17Y29sb3JQaWNrZXI6W3t0eXBlOlJffV0sY3BXaWR0aDpbe3R5cGU6Ul99XSxjcEhlaWdodDpbe3R5cGU6Ul99XSxjcFRvZ2dsZTpbe3R5cGU6Ul99XSxjcERpc2FibGVkOlt7dHlwZTpSX31dLGNwSWdub3JlZEVsZW1lbnRzOlt7dHlwZTpSX31dLGNwRmFsbGJhY2tDb2xvcjpbe3R5cGU6Ul99XSxjcENvbG9yTW9kZTpbe3R5cGU6Ul99XSxjcENteWtFbmFibGVkOlt7dHlwZTpSX31dLGNwT3V0cHV0Rm9ybWF0Olt7dHlwZTpSX31dLGNwQWxwaGFDaGFubmVsOlt7dHlwZTpSX31dLGNwRGlzYWJsZUlucHV0Olt7dHlwZTpSX31dLGNwRGlhbG9nRGlzcGxheTpbe3R5cGU6Ul99XSxjcFNhdmVDbGlja091dHNpZGU6W3t0eXBlOlJffV0sY3BDbG9zZUNsaWNrT3V0c2lkZTpbe3R5cGU6Ul99XSxjcFVzZVJvb3RWaWV3Q29udGFpbmVyOlt7dHlwZTpSX31dLGNwUG9zaXRpb246W3t0eXBlOlJffV0sY3BQb3NpdGlvbk9mZnNldDpbe3R5cGU6Ul99XSxjcFBvc2l0aW9uUmVsYXRpdmVUb0Fycm93Olt7dHlwZTpSX31dLGNwT0tCdXR0b246W3t0eXBlOlJffV0sY3BPS0J1dHRvblRleHQ6W3t0eXBlOlJffV0sY3BPS0J1dHRvbkNsYXNzOlt7dHlwZTpSX31dLGNwQ2FuY2VsQnV0dG9uOlt7dHlwZTpSX31dLGNwQ2FuY2VsQnV0dG9uVGV4dDpbe3R5cGU6Ul99XSxjcENhbmNlbEJ1dHRvbkNsYXNzOlt7dHlwZTpSX31dLGNwUHJlc2V0TGFiZWw6W3t0eXBlOlJffV0sY3BQcmVzZXRDb2xvcnM6W3t0eXBlOlJffV0sY3BQcmVzZXRDb2xvcnNDbGFzczpbe3R5cGU6Ul99XSxjcE1heFByZXNldENvbG9yc0xlbmd0aDpbe3R5cGU6Ul99XSxjcFByZXNldEVtcHR5TWVzc2FnZTpbe3R5cGU6Ul99XSxjcFByZXNldEVtcHR5TWVzc2FnZUNsYXNzOlt7dHlwZTpSX31dLGNwQWRkQ29sb3JCdXR0b246W3t0eXBlOlJffV0sY3BBZGRDb2xvckJ1dHRvblRleHQ6W3t0eXBlOlJffV0sY3BBZGRDb2xvckJ1dHRvbkNsYXNzOlt7dHlwZTpSX31dLGNwUmVtb3ZlQ29sb3JCdXR0b25DbGFzczpbe3R5cGU6Ul99XSxjcElucHV0Q2hhbmdlOlt7dHlwZTpFX31dLGNwVG9nZ2xlQ2hhbmdlOlt7dHlwZTpFX31dLGNwU2xpZGVyQ2hhbmdlOlt7dHlwZTpFX31dLGNwU2xpZGVyRHJhZ0VuZDpbe3R5cGU6RV99XSxjcFNsaWRlckRyYWdTdGFydDpbe3R5cGU6RV99XSxjb2xvclBpY2tlck9wZW46W3t0eXBlOkVffV0sY29sb3JQaWNrZXJDbG9zZTpbe3R5cGU6RV99XSxjb2xvclBpY2tlckNhbmNlbDpbe3R5cGU6RV99XSxjb2xvclBpY2tlclNlbGVjdDpbe3R5cGU6RV99XSxjb2xvclBpY2tlckNoYW5nZTpbe3R5cGU6RV99XSxjcENteWtDb2xvckNoYW5nZTpbe3R5cGU6RV99XSxjcFByZXNldENvbG9yc0NoYW5nZTpbe3R5cGU6RV99XSxoYW5kbGVDbGljazpbe3R5cGU6VF8sYXJnczpbImNsaWNrIl19XSxoYW5kbGVGb2N1czpbe3R5cGU6VF8sYXJnczpbImZvY3VzIl19XSxoYW5kbGVJbnB1dDpbe3R5cGU6VF8sYXJnczpbImlucHV0IixbIiRldmVudCJdXX1dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFA1LFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6Iltjb2xvclBpY2tlcl0iLGV4cG9ydEFzOiJuZ3hDb2xvclBpY2tlciJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpOcH0se3R5cGU6R2h9LHt0eXBlOkhDfSx7dHlwZTpGYn0se3R5cGU6S2h9LHt0eXBlOng1fV19KSx7Y3BXaWR0aDpbe3R5cGU6Ul99XSxjcEhlaWdodDpbe3R5cGU6Ul99XSxjcFRvZ2dsZTpbe3R5cGU6Ul99XSxjcERpc2FibGVkOlt7dHlwZTpSX31dLGNwSWdub3JlZEVsZW1lbnRzOlt7dHlwZTpSX31dLGNwRmFsbGJhY2tDb2xvcjpbe3R5cGU6Ul99XSxjcENvbG9yTW9kZTpbe3R5cGU6Ul99XSxjcENteWtFbmFibGVkOlt7dHlwZTpSX31dLGNwT3V0cHV0Rm9ybWF0Olt7dHlwZTpSX31dLGNwQWxwaGFDaGFubmVsOlt7dHlwZTpSX31dLGNwRGlzYWJsZUlucHV0Olt7dHlwZTpSX31dLGNwRGlhbG9nRGlzcGxheTpbe3R5cGU6Ul99XSxjcFNhdmVDbGlja091dHNpZGU6W3t0eXBlOlJffV0sY3BDbG9zZUNsaWNrT3V0c2lkZTpbe3R5cGU6Ul99XSxjcFVzZVJvb3RWaWV3Q29udGFpbmVyOlt7dHlwZTpSX31dLGNwUG9zaXRpb246W3t0eXBlOlJffV0sY3BQb3NpdGlvbk9mZnNldDpbe3R5cGU6Ul99XSxjcFBvc2l0aW9uUmVsYXRpdmVUb0Fycm93Olt7dHlwZTpSX31dLGNwT0tCdXR0b246W3t0eXBlOlJffV0sY3BPS0J1dHRvblRleHQ6W3t0eXBlOlJffV0sY3BPS0J1dHRvbkNsYXNzOlt7dHlwZTpSX31dLGNwQ2FuY2VsQnV0dG9uOlt7dHlwZTpSX31dLGNwQ2FuY2VsQnV0dG9uVGV4dDpbe3R5cGU6Ul99XSxjcENhbmNlbEJ1dHRvbkNsYXNzOlt7dHlwZTpSX31dLGNwUHJlc2V0TGFiZWw6W3t0eXBlOlJffV0sY3BQcmVzZXRDb2xvcnNDbGFzczpbe3R5cGU6Ul99XSxjcE1heFByZXNldENvbG9yc0xlbmd0aDpbe3R5cGU6Ul99XSxjcFByZXNldEVtcHR5TWVzc2FnZTpbe3R5cGU6Ul99XSxjcFByZXNldEVtcHR5TWVzc2FnZUNsYXNzOlt7dHlwZTpSX31dLGNwQWRkQ29sb3JCdXR0b246W3t0eXBlOlJffV0sY3BBZGRDb2xvckJ1dHRvblRleHQ6W3t0eXBlOlJffV0sY3BBZGRDb2xvckJ1dHRvbkNsYXNzOlt7dHlwZTpSX31dLGNwUmVtb3ZlQ29sb3JCdXR0b25DbGFzczpbe3R5cGU6Ul99XSxjcElucHV0Q2hhbmdlOlt7dHlwZTpFX31dLGNwVG9nZ2xlQ2hhbmdlOlt7dHlwZTpFX31dLGNwU2xpZGVyQ2hhbmdlOlt7dHlwZTpFX31dLGNwU2xpZGVyRHJhZ0VuZDpbe3R5cGU6RV99XSxjcFNsaWRlckRyYWdTdGFydDpbe3R5cGU6RV99XSxjb2xvclBpY2tlck9wZW46W3t0eXBlOkVffV0sY29sb3JQaWNrZXJDbG9zZTpbe3R5cGU6RV99XSxjb2xvclBpY2tlckNhbmNlbDpbe3R5cGU6RV99XSxjb2xvclBpY2tlclNlbGVjdDpbe3R5cGU6RV99XSxjb2xvclBpY2tlckNoYW5nZTpbe3R5cGU6RV99XSxjcENteWtDb2xvckNoYW5nZTpbe3R5cGU6RV99XSxjcFByZXNldENvbG9yc0NoYW5nZTpbe3R5cGU6RV99XSxoYW5kbGVDbGljazpbe3R5cGU6VF8sYXJnczpbImNsaWNrIl19XSxoYW5kbGVGb2N1czpbe3R5cGU6VF8sYXJnczpbImZvY3VzIl19XSxoYW5kbGVJbnB1dDpbe3R5cGU6VF8sYXJnczpbImlucHV0IixbIiRldmVudCJdXX1dLGNvbG9yUGlja2VyOlt7dHlwZTpSX31dLGNwUHJlc2V0Q29sb3JzOlt7dHlwZTpSX31dfSk7Y2xhc3MgdzV7fXc1Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx3NSl9LHc1Lsm1bW9kPWZvKHt0eXBlOnc1fSksdzUuybVpbmo9RG4oe3Byb3ZpZGVyczpbeDVdLGltcG9ydHM6W1tyeF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih3NSxbe3R5cGU6TF8sYXJnczpbe2ltcG9ydHM6W3J4XSxleHBvcnRzOltQNV0scHJvdmlkZXJzOlt4NV0sZGVjbGFyYXRpb25zOltPNSxQNSxfNSxDNV0sZW50cnlDb21wb25lbnRzOltPNV19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byh3NSx7ZGVjbGFyYXRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuW081LFA1LF81LEM1XX0saW1wb3J0czpmdW5jdGlvbigpe3JldHVybltyeF19LGV4cG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bUDVdfX0pO2NvbnN0IGs1PVsiZmlsdGVyIl07ZnVuY3Rpb24gUzUodCxlKXsxJnQmJlBmKDApfWZ1bmN0aW9uIEQ1KHQsZSl7MSZ0JiZQZigwKX1jb25zdCBSNT1mdW5jdGlvbih0KXtyZXR1cm57aXRlbTp0fX07ZnVuY3Rpb24gRTUodCxlKXtpZigxJnQmJih4ZigwKSxIbSgxLEQ1LDEsMCwibmctY29udGFpbmVyIiwxMiksT2YoKSksMiZ0KXtjb25zdCB0PWUuJGltcGxpY2l0O3pmKCk7Y29uc3Qgbj1GbSgxNCk7RGMoMSksYmYoIm5nVGVtcGxhdGVPdXRsZXQiLG4pKCJuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dCIsaXkoMixSNSx0KSl9fWZ1bmN0aW9uIEE1KHQsZSl7MSZ0JiYoQ2YoMCwiZGl2IiwxMyksdmYoMSwibWF0LXNwaW5uZXIiLDE0KSxNZigpKX1mdW5jdGlvbiBUNSh0LGUpezEmdCYmKENmKDAsImRpdiIsMTUpLFB1KDEsIk5vIFJ1bnMiKSxNZigpKX1mdW5jdGlvbiBONSh0LGUpe2lmKDEmdCYmKENmKDAsImRpdiIsMTUpLENmKDEsInNwYW4iKSxQdSgyLCdObyBydW5zIG1hdGNoICInKSxDZigzLCJjb2RlIiksUHUoNCksTWYoKSxQdSg1LCciJyksTWYoKSxNZigpKSwyJnQpe2NvbnN0IHQ9emYoKTtEYyg0KSx3dSh0LnJlZ2V4RmlsdGVyKX19Y29uc3QgejU9ZnVuY3Rpb24oKXtyZXR1cm5bNSwxMCwyMF19O2Z1bmN0aW9uIEk1KHQsZSl7aWYoMSZ0KXtjb25zdCB0PXdmKCk7Q2YoMCwibWF0LXBhZ2luYXRvciIsMTYpLFJmKCJwYWdlIiwoZnVuY3Rpb24gZShuKXtQaSh0KTtyZXR1cm4gemYoKS5vblBhZ2luYXRpb25DaGFuZ2UuZW1pdChuKX0pKSxNZigpfWlmKDImdCl7Y29uc3QgdD16ZigpO2JmKCJwYWdlU2l6ZU9wdGlvbnMiLG95KDQsejUpKSgicGFnZUluZGV4Iix0LnBhZ2luYXRpb25PcHRpb24ucGFnZUluZGV4KSgicGFnZVNpemUiLHQucGFnaW5hdGlvbk9wdGlvbi5wYWdlU2l6ZSkoImxlbmd0aCIsdC5maWx0ZXJlZEl0ZW1zTGVuZ3RoKX19ZnVuY3Rpb24gSDUodCxlKXtpZigxJnQpe2NvbnN0IHQ9d2YoKTtDZigwLCJtYXQtY2hlY2tib3giLDI2KSxSZigiY2hhbmdlIiwoZnVuY3Rpb24gZSgpe1BpKHQpO3JldHVybiB6ZigzKS5oYW5kbGVQYWdlVG9nZ2xlKCl9KSksTWYoKX1pZigyJnQpe2NvbnN0IHQ9emYoMyk7YmYoImNoZWNrZWQiLHQuYWxsUGFnZUl0ZW1zU2VsZWN0ZWQoKSkoImluZGV0ZXJtaW5hdGUiLCF0LmFsbFBhZ2VJdGVtc1NlbGVjdGVkKCkmJnQuc29tZVBhZ2VJdGVtc1NlbGVjdGVkKCkpfX1jb25zdCBGNT1mdW5jdGlvbih0KXtyZXR1cm57dHlwZTp0fX07ZnVuY3Rpb24gTDUodCxlKXtpZigxJnQmJihDZigwLCJzcGFuIiwyNyksUHUoMSwiRXhwZXJpbWVudCIpLE1mKCkpLDImdCl7Y29uc3QgdD16ZigzKTtiZigibWF0LXNvcnQtaGVhZGVyIixpeSgxLEY1LHQuU29ydFR5cGUuRVhQRVJJTUVOVF9OQU1FKSl9fWZ1bmN0aW9uIEI1KHQsZSl7aWYoMSZ0JiYoQ2YoMCwic3BhbiIsMjcpLFB1KDEsIlJ1biIpLE1mKCkpLDImdCl7Y29uc3QgdD16ZigzKTtiZigibWF0LXNvcnQtaGVhZGVyIixpeSgxLEY1LHQuU29ydFR5cGUuUlVOX05BTUUpKX19ZnVuY3Rpb24gVjUodCxlKXtpZigxJnQmJnZmKDAsInJ1bnMtZ3JvdXAtbWVudS1idXR0b24iLDI5KSwyJnQpe2JmKCJleHBlcmltZW50SWRzIix6Zig0KS5leHBlcmltZW50SWRzKX19ZnVuY3Rpb24gajUodCxlKXtpZigxJnQmJihDZigwLCJzcGFuIiksSG0oMSxWNSwxLDEsInJ1bnMtZ3JvdXAtbWVudS1idXR0b24iLDI4KSxNZigpKSwyJnQpe2NvbnN0IHQ9emYoMyk7RGMoMSksYmYoIm5nSWYiLHQuc2hvd0dyb3VwQ29udHJvbCl9fWNvbnN0IFU1PWZ1bmN0aW9uKHQpe3JldHVyblsiY29sdW1uIix0XX07ZnVuY3Rpb24gVzUodCxlKXtpZigxJnQmJihDZigwLCJzcGFuIiwyMSkseGYoMSwyMiksSG0oMixINSwxLDIsIm1hdC1jaGVja2JveCIsMjMpLEhtKDMsTDUsMiwzLCJzcGFuIiwyNCksSG0oNCxCNSwyLDMsInNwYW4iLDI0KSxIbSg1LGo1LDIsMSwic3BhbiIsMjUpLE9mKCksTWYoKSksMiZ0KXtjb25zdCB0PWUuJGltcGxpY2l0LG49emYoMik7YmYoIm5nQ2xhc3MiLGl5KDYsVTUsInRiLWNvbHVtbi0iK3QpKSxEYygxKSxiZigibmdTd2l0Y2giLHQpLERjKDEpLGJmKCJuZ1N3aXRjaENhc2UiLG4uUnVuc1RhYmxlQ29sdW1uLkNIRUNLQk9YKSxEYygxKSxiZigibmdTd2l0Y2hDYXNlIixuLlJ1bnNUYWJsZUNvbHVtbi5FWFBFUklNRU5UX05BTUUpLERjKDEpLGJmKCJuZ1N3aXRjaENhc2UiLG4uUnVuc1RhYmxlQ29sdW1uLlJVTl9OQU1FKSxEYygxKSxiZigibmdTd2l0Y2hDYXNlIixuLlJ1bnNUYWJsZUNvbHVtbi5SVU5fQ09MT1IpfX1mdW5jdGlvbiBHNSh0LGUpe2lmKDEmdCl7Y29uc3QgdD13ZigpO3hmKDApLENmKDEsImRpdiIsMzgpLFJmKCJjbGljayIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIGUuc3RvcFByb3BhZ2F0aW9uKCl9KSksQ2YoMiwidGItcmFuZ2UtaW5wdXQiLDM5KSxSZigidmFsdWUiLChmdW5jdGlvbiBlKG4pe1BpKHQpO2NvbnN0IG89emYoMikuJGltcGxpY2l0O3JldHVybiB6ZigyKS5oYW5kbGVIcGFyYW1JbnRlcnZhbENoYW5nZWQobyxuKX0pKSxNZigpLE1mKCksT2YoKX1pZigyJnQpe2NvbnN0IHQ9emYoMikuJGltcGxpY2l0O0RjKDIpLGJmKCJtaW4iLHQuZmlsdGVyLm1pblZhbHVlKSgibWF4Iix0LmZpbHRlci5tYXhWYWx1ZSkoImxvd2VyVmFsdWUiLHQuZmlsdGVyLmZpbHRlckxvd2VyVmFsdWUpKCJ1cHBlclZhbHVlIix0LmZpbHRlci5maWx0ZXJVcHBlclZhbHVlKX19ZnVuY3Rpb24gWTUodCxlKXtpZigxJnQpe2NvbnN0IHQ9d2YoKTtDZigwLCJkaXYiLDQxKSxSZigiY2xpY2siLChmdW5jdGlvbiB0KGUpe3JldHVybiBlLnN0b3BQcm9wYWdhdGlvbigpfSkpLENmKDEsIm1hdC1jaGVja2JveCIsMzcpLFJmKCJjaGFuZ2UiLChmdW5jdGlvbiBlKCl7Y29uc3Qgbj1QaSh0KS4kaW1wbGljaXQsbz16ZigzKS4kaW1wbGljaXQ7cmV0dXJuIHpmKDIpLmhhbmRsZUhwYXJhbURpc2NyZXRlQ2hhbmdlZChvLG4pfSkpLENmKDIsInNwYW4iKSxQdSgzKSxNZigpLE1mKCksTWYoKX1pZigyJnQpe2NvbnN0IHQ9ZS4kaW1wbGljaXQsbj16ZigzKS4kaW1wbGljaXQ7RGMoMSksYmYoImNoZWNrZWQiLG4uZmlsdGVyLmZpbHRlclZhbHVlcy5pbmNsdWRlcyh0KSksRGMoMiksd3UodCl9fWZ1bmN0aW9uIHE1KHQsZSl7aWYoMSZ0JiYoeGYoMCksSG0oMSxZNSw0LDIsImRpdiIsNDApLE9mKCkpLDImdCl7Y29uc3QgdD16ZigyKS4kaW1wbGljaXQ7RGMoMSksYmYoIm5nRm9yT2YiLHQuZmlsdGVyLnBvc3NpYmxlVmFsdWVzKX19ZnVuY3Rpb24gWjUodCxlKXtpZigxJnQpe2NvbnN0IHQ9d2YoKTt4ZigwKSxDZigxLCJidXR0b24iLDMzKSxSZigiY2xpY2siLChmdW5jdGlvbiB0KGUpe3JldHVybiBlLnN0b3BQcm9wYWdhdGlvbigpfSkpLHZmKDIsIm1hdC1pY29uIiwzNCksTWYoKSxDZigzLCJtYXQtbWVudSIsbnVsbCwzNSksQ2YoNSwiZGl2IiwzNiksUmYoImNsaWNrIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gZS5zdG9wUHJvcGFnYXRpb24oKX0pKSxDZig2LCJtYXQtY2hlY2tib3giLDM3KSxSZigiY2hhbmdlIiwoZnVuY3Rpb24gZSgpe1BpKHQpO2NvbnN0IG49emYoKS4kaW1wbGljaXQ7cmV0dXJuIHpmKDIpLmhhbmRsZUhwYXJhbUluY2x1ZGVVbmRlZmluZWRUb2dnbGVkKG4pfSkpLENmKDcsInNwYW4iKSxQdSg4LCIoc2hvdyBlbXB0eSB2YWx1ZSkiKSxNZigpLE1mKCksTWYoKSxIbSg5LEc1LDMsNCwibmctY29udGFpbmVyIiwzMiksSG0oMTAscTUsMiwxLCJuZy1jb250YWluZXIiLDMyKSxNZigpLE9mKCl9aWYoMiZ0KXtjb25zdCB0PUZtKDQpLGU9emYoKS4kaW1wbGljaXQsbj16ZigyKTtEYygxKSxiZigibWF0TWVudVRyaWdnZXJGb3IiLHQpLHltKCJhcmlhLWxhYmVsIiwiRmlsdGVyIGhwYXJhbSAiKyhlLmRpc3BsYXlOYW1lfHxlLm5hbWUpKSxEYyg1KSxiZigiY2hlY2tlZCIsZS5maWx0ZXIuaW5jbHVkZVVuZGVmaW5lZCksRGMoMyksYmYoIm5nSWYiLGUuZmlsdGVyLnR5cGU9PT1uLkRvbWFpblR5cGUuSU5URVJWQUwpLERjKDEpLGJmKCJuZ0lmIixlLmZpbHRlci50eXBlPT09bi5Eb21haW5UeXBlLkRJU0NSRVRFKX19Y29uc3QgWDU9ZnVuY3Rpb24odCxlKXtyZXR1cm57dHlwZTp0LG5hbWU6ZX19O2Z1bmN0aW9uIEs1KHQsZSl7aWYoMSZ0JiYoQ2YoMCwic3BhbiIsMzApLENmKDEsInNwYW4iLDMxKSxQdSgyKSxNZigpLEhtKDMsWjUsMTEsNSwibmctY29udGFpbmVyIiwzMiksTWYoKSksMiZ0KXtjb25zdCB0PWUuJGltcGxpY2l0LG49emYoMik7YmYoIm1hdC1zb3J0LWhlYWRlciIsYXkoMyxYNSxuLlNvcnRUeXBlLkhQQVJBTSx0Lm5hbWUpKSxEYygyKSx3dSh0LmRpc3BsYXlOYW1lfHx0Lm5hbWUpLERjKDEpLGJmKCJuZ0lmIix0LmZpbHRlcil9fWZ1bmN0aW9uIEo1KHQsZSl7aWYoMSZ0KXtjb25zdCB0PXdmKCk7eGYoMCksQ2YoMSwiYnV0dG9uIiwzMyksUmYoImNsaWNrIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gZS5zdG9wUHJvcGFnYXRpb24oKX0pKSx2ZigyLCJtYXQtaWNvbiIsMzQpLE1mKCksQ2YoMywibWF0LW1lbnUiLG51bGwsMzUpLENmKDUsImRpdiIsMzYpLFJmKCJjbGljayIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIGUuc3RvcFByb3BhZ2F0aW9uKCl9KSksQ2YoNiwibWF0LWNoZWNrYm94IiwzNyksUmYoImNoYW5nZSIsKGZ1bmN0aW9uIGUoKXtQaSh0KTtjb25zdCBuPXpmKCkuJGltcGxpY2l0O3JldHVybiB6ZigyKS5oYW5kbGVNZXRyaWNJbmNsdWRlVW5kZWZpbmVkQ2hhbmdlZChuKX0pKSxDZig3LCJzcGFuIiksUHUoOCwiKHNob3cgZW1wdHkgdmFsdWUpIiksTWYoKSxNZigpLE1mKCksQ2YoOSwiZGl2IiwzOCksUmYoImNsaWNrIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gZS5zdG9wUHJvcGFnYXRpb24oKX0pKSxDZigxMCwidGItcmFuZ2UtaW5wdXQiLDM5KSxSZigidmFsdWUiLChmdW5jdGlvbiBlKG4pe1BpKHQpO2NvbnN0IG89emYoKS4kaW1wbGljaXQ7cmV0dXJuIHpmKDIpLmhhbmRsZU1ldHJpY0ZpbHRlckNoYW5nZWQobyxuKX0pKSxNZigpLE1mKCksTWYoKSxPZigpfWlmKDImdCl7Y29uc3QgdD1GbSg0KSxlPXpmKCkuJGltcGxpY2l0O0RjKDEpLGJmKCJtYXRNZW51VHJpZ2dlckZvciIsdCkseW0oImFyaWEtbGFiZWwiLCJGaWx0ZXIgbWV0cmljICIrKGUuZGlzcGxheU5hbWV8fGUudGFnKSksRGMoNSksYmYoImNoZWNrZWQiLGUuZmlsdGVyLmluY2x1ZGVVbmRlZmluZWQpLERjKDQpLGJmKCJtaW4iLGUuZmlsdGVyLm1pblZhbHVlKSgibWF4IixlLmZpbHRlci5tYXhWYWx1ZSkoImxvd2VyVmFsdWUiLGUuZmlsdGVyLmZpbHRlckxvd2VyVmFsdWUpKCJ1cHBlclZhbHVlIixlLmZpbHRlci5maWx0ZXJVcHBlclZhbHVlKX19Y29uc3QgUTU9ZnVuY3Rpb24odCxlKXtyZXR1cm57dHlwZTp0LHRhZzplfX07ZnVuY3Rpb24gJDUodCxlKXtpZigxJnQmJihDZigwLCJzcGFuIiwzMCksQ2YoMSwic3BhbiIsMzEpLFB1KDIpLE1mKCksSG0oMyxKNSwxMSw3LCJuZy1jb250YWluZXIiLDMyKSxNZigpKSwyJnQpe2NvbnN0IHQ9ZS4kaW1wbGljaXQsbj16ZigyKTtiZigibWF0LXNvcnQtaGVhZGVyIixheSgzLFE1LG4uU29ydFR5cGUuTUVUUklDLHQudGFnKSksRGMoMiksd3UodC5kaXNwbGF5TmFtZXx8dC50YWcpLERjKDEpLGJmKCJuZ0lmIix0LmZpbHRlcil9fWZ1bmN0aW9uIHQ0KHQsZSl7aWYoMSZ0KXtjb25zdCB0PXdmKCk7Q2YoMCwiZGl2IiwxNyksQ2YoMSwiZGl2IiwxOCksUmYoIm1hdFNvcnRDaGFuZ2UiLChmdW5jdGlvbiBlKG4pe1BpKHQpO3JldHVybiB6ZigpLmhhbmRsZVNvcnRDaGFuZ2Uobil9KSksSG0oMixXNSw2LDgsInNwYW4iLDE5KSxIbSgzLEs1LDQsNiwic3BhbiIsMjApLEhtKDQsJDUsNCw2LCJzcGFuIiwyMCksTWYoKSxNZigpfWlmKDImdCl7Y29uc3QgdD16ZigpO0RjKDEpLGJmKCJtYXRTb3J0QWN0aXZlIix0LnNvcnRPcHRpb24uY29sdW1uKSxEYygxKSxiZigibmdGb3JPZiIsdC5jb2x1bW5zKSxEYygxKSxiZigibmdGb3JPZiIsdC5ocGFyYW1Db2x1bW5zKSgibmdGb3JUcmFja0J5Iix0LnRyYWNrQnlIcGFyYW1Db2x1bW4pLERjKDEpLGJmKCJuZ0Zvck9mIix0Lm1ldHJpY0NvbHVtbnMpKCJuZ0ZvclRyYWNrQnkiLHQudHJhY2tCeU1ldHJpY0NvbHVtbil9fWZ1bmN0aW9uIGU0KHQsZSl7aWYoMSZ0KXtjb25zdCB0PXdmKCk7Q2YoMCwic3BhbiIpLENmKDEsIm1hdC1jaGVja2JveCIsMzcpLFJmKCJjaGFuZ2UiLChmdW5jdGlvbiBlKCl7UGkodCk7Y29uc3Qgbj16ZigyKS5pdGVtO3JldHVybiB6ZigpLm9uU2VsZWN0aW9uVG9nZ2xlLmVtaXQobil9KSksTWYoKSxNZigpfWlmKDImdCl7Y29uc3QgdD16ZigyKS5pdGVtO0RjKDEpLGJmKCJjaGVja2VkIix0LnNlbGVjdGVkKX19ZnVuY3Rpb24gbjQodCxlKXtpZigxJnQmJnZmKDAsInRiLWV4cGVyaW1lbnQtYWxpYXMiLDQ4KSwyJnQpe2JmKCJhbGlhcyIsemYoMikuaXRlbS5leHBlcmltZW50QWxpYXMpfX1mdW5jdGlvbiBvNCh0LGUpe2lmKDEmdCYmKENmKDAsInNwYW4iLDMxKSxQdSgxKSxNZigpKSwyJnQpe2NvbnN0IHQ9emYoMikuaXRlbTtEYygxKSx3dSh0LnJ1bi5uYW1lKX19Y29uc3QgaTQ9ZnVuY3Rpb24odCl7cmV0dXJueyJydW4tY29sb3Itc3dhdGNoIjohMCwibm8tY29sb3IiOnR9fTtmdW5jdGlvbiBhNCh0LGUpe2lmKDEmdCl7Y29uc3QgdD13ZigpO0NmKDAsInNwYW4iKSxDZigxLCJidXR0b24iLDQ5KSxSZigiY29sb3JQaWNrZXJDaGFuZ2UiLChmdW5jdGlvbiBlKG4pe1BpKHQpO2NvbnN0IG89emYoMikuaXRlbTtyZXR1cm4gemYoKS5vblJ1bkNvbG9yQ2hhbmdlLmVtaXQoe3J1bklkOm8ucnVuLmlkLG5ld0NvbG9yOm59KX0pKSxNZigpLE1mKCl9aWYoMiZ0KXtjb25zdCB0PXpmKDIpLml0ZW07RGMoMSksbHUoImJhY2tncm91bmQiLHQucnVuQ29sb3IpLGJmKCJuZ0NsYXNzIixpeSg4LGk0LCF0LnJ1bkNvbG9yKSkoImNvbG9yUGlja2VyIix0LnJ1bkNvbG9yKSgiY3BEaWFsb2dEaXNwbGF5IiwicG9wdXAiKSgiY3BQb3NpdGlvbk9mZnNldCIsLTIwKSgiY3BVc2VSb290Vmlld0NvbnRhaW5lciIsITApKCJjcE91dHB1dEZvcm1hdCIsImhleCIpfX1mdW5jdGlvbiByNCh0LGUpe2lmKDEmdCYmKENmKDAsInNwYW4iLDQ1KSx4ZigxLDIyKSxIbSgyLGU0LDIsMSwic3BhbiIsMjUpLEhtKDMsbjQsMSwxLCJ0Yi1leHBlcmltZW50LWFsaWFzIiw0NiksSG0oNCxvNCwyLDEsInNwYW4iLDQ3KSxIbSg1LGE0LDIsMTAsInNwYW4iLDI1KSxPZigpLE1mKCkpLDImdCl7Y29uc3QgdD1lLiRpbXBsaWNpdCxuPXpmKDIpO2JmKCJuZ0NsYXNzIixpeSg2LFU1LCJ0Yi1jb2x1bW4tIit0KSksRGMoMSksYmYoIm5nU3dpdGNoIix0KSxEYygxKSxiZigibmdTd2l0Y2hDYXNlIixuLlJ1bnNUYWJsZUNvbHVtbi5DSEVDS0JPWCksRGMoMSksYmYoIm5nU3dpdGNoQ2FzZSIsbi5SdW5zVGFibGVDb2x1bW4uRVhQRVJJTUVOVF9OQU1FKSxEYygxKSxiZigibmdTd2l0Y2hDYXNlIixuLlJ1bnNUYWJsZUNvbHVtbi5SVU5fTkFNRSksRGMoMSksYmYoIm5nU3dpdGNoQ2FzZSIsbi5SdW5zVGFibGVDb2x1bW4uUlVOX0NPTE9SKX19ZnVuY3Rpb24gczQodCxlKXtpZigxJnQmJihDZigwLCJzcGFuIiw1MCksUHUoMSksTWYoKSksMiZ0KXtjb25zdCB0PWUuJGltcGxpY2l0LG49emYoKS5pdGVtO0RjKDEpLHd1KG4uaHBhcmFtcy5nZXQodC5uYW1lKSl9fWZ1bmN0aW9uIGw0KHQsZSl7aWYoMSZ0JiYoQ2YoMCwic3BhbiIsNTApLFB1KDEpLE1mKCkpLDImdCl7Y29uc3QgdD1lLiRpbXBsaWNpdCxuPXpmKCkuaXRlbTtEYygxKSx3dShuLm1ldHJpY3MuZ2V0KHQudGFnKSl9fWZ1bmN0aW9uIGM0KHQsZSl7aWYoMSZ0JiYoQ2YoMCwiZGl2Iiw0MiksSG0oMSxyNCw2LDgsInNwYW4iLDQzKSxIbSgyLHM0LDIsMSwic3BhbiIsNDQpLEhtKDMsbDQsMiwxLCJzcGFuIiw0NCksTWYoKSksMiZ0KXtjb25zdCB0PWUuaXRlbSxuPXpmKCk7eW0oImRhdGEtaWQiLHQucnVuLmlkKSxEYygxKSxiZigibmdGb3JPZiIsbi5jb2x1bW5zKSxEYygxKSxiZigibmdGb3JPZiIsbi5ocGFyYW1Db2x1bW5zKSxEYygxKSxiZigibmdGb3JPZiIsbi5tZXRyaWNDb2x1bW5zKX19Y2xhc3MgZDQgZXh0ZW5kcyBYMHtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5pdGVtc1BlclBhZ2VMYWJlbD0iU2hvdyBydW5zOiJ9fWQ0Lsm1ZmFjPShmdW5jdGlvbigpe2xldCB0O3JldHVybiBmdW5jdGlvbiBlKG4pe3JldHVybih0fHwodD1VYShkNCkpKShufHxkNCl9fSkoKSxkNC7JtXByb3Y9U24oe3Rva2VuOmQ0LGZhY3Rvcnk6ZDQuybVmYWN9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGQ0LFt7dHlwZTpVbX1dLG51bGwsbnVsbCk7Y2xhc3MgcDR7Y29uc3RydWN0b3IoKXt0aGlzLmRhdGFTb3VyY2U9bmV3IEQzLHRoaXMuRG9tYWluVHlwZT1rVCx0aGlzLlJ1bnNUYWJsZUNvbHVtbj14MCx0aGlzLlNvcnRUeXBlPUZ6LHRoaXMub25SZWdleEZpbHRlckNoYW5nZT1uZXcgU3ksdGhpcy5vblNlbGVjdGlvblRvZ2dsZT1uZXcgU3ksdGhpcy5vblBhZ2VTZWxlY3Rpb25Ub2dnbGU9bmV3IFN5LHRoaXMub25QYWdpbmF0aW9uQ2hhbmdlPW5ldyBTeSx0aGlzLm9uU29ydENoYW5nZT1uZXcgU3ksdGhpcy5vblJ1bkNvbG9yQ2hhbmdlPW5ldyBTeSx0aGlzLm9uSHBhcmFtRGlzY3JldGVGaWx0ZXJDaGFuZ2VkPW5ldyBTeSx0aGlzLm9uSHBhcmFtSW50ZXJ2YWxGaWx0ZXJDaGFuZ2VkPW5ldyBTeSx0aGlzLm9uTWV0cmljRmlsdGVyQ2hhbmdlZD1uZXcgU3l9bmdPbkNoYW5nZXMoKXt0aGlzLmRhdGFTb3VyY2UuZGF0YT10aGlzLnBhZ2VJdGVtc31nZXRIcGFyYW1Db2x1bW5JZCh0KXtyZXR1cm5gaDoke3QubmFtZX1gfWdldE1ldHJpY0NvbHVtbklkKHQpe3JldHVybmBtOiR7dC50YWd9YH1nZXRDb2x1bW5JZHMoKXtyZXR1cm5bLi4udGhpcy5jb2x1bW5zLC4uLnRoaXMuaHBhcmFtQ29sdW1ucy5tYXAodGhpcy5nZXRIcGFyYW1Db2x1bW5JZCksLi4udGhpcy5tZXRyaWNDb2x1bW5zLm1hcCh0aGlzLmdldE1ldHJpY0NvbHVtbklkKV19YWxsUGFnZUl0ZW1zU2VsZWN0ZWQoKXtyZXR1cm4gQm9vbGVhbih0aGlzLnBhZ2VJdGVtcy5sZW5ndGgpJiZ0aGlzLnBhZ2VJdGVtcy5ldmVyeSgodD0+dC5zZWxlY3RlZCkpfXNvbWVQYWdlSXRlbXNTZWxlY3RlZCgpe3JldHVybiB0aGlzLnBhZ2VJdGVtcy5zb21lKCh0PT50LnNlbGVjdGVkKSl9aGFuZGxlUGFnZVRvZ2dsZSgpe3RoaXMub25QYWdlU2VsZWN0aW9uVG9nZ2xlLmVtaXQoe2l0ZW1zOnRoaXMucGFnZUl0ZW1zfSl9aGFuZGxlU29ydENoYW5nZSh0KXtsZXQgZTtzd2l0Y2godC5kaXJlY3Rpb24pe2Nhc2UiYXNjIjplPXZJLkFTQzticmVhaztjYXNlImRlc2MiOmU9dkkuREVTQzticmVhaztkZWZhdWx0OmU9dkkuVU5TRVR9dGhpcy5vblNvcnRDaGFuZ2UuZW1pdCh7a2V5OnQuYWN0aXZlLGRpcmVjdGlvbjplfSl9b25GaWx0ZXJLZXlVcCh0KXt0aGlzLm9uUmVnZXhGaWx0ZXJDaGFuZ2UuZW1pdCh0LnRhcmdldC52YWx1ZSl9dGFibGVUcmFja0J5KHQsZSl7cmV0dXJuIGUucnVuLmlkfWhhbmRsZUhwYXJhbUluY2x1ZGVVbmRlZmluZWRUb2dnbGVkKHQpe2NvbnN0e25hbWU6ZSxmaWx0ZXI6bn09dDtpZighbil0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW52YXJpYW50IGVycm9yOiByZXF1aXJlIGZpbHRlciB0byBleGlzdCBmb3IgaXQgdG8gY2hhbmdlIik7bi50eXBlPT09a1QuRElTQ1JFVEU/dGhpcy5vbkhwYXJhbURpc2NyZXRlRmlsdGVyQ2hhbmdlZC5lbWl0KHtocGFyYW1OYW1lOmUsaW5jbHVkZVVuZGVmaW5lZDohbi5pbmNsdWRlVW5kZWZpbmVkLGZpbHRlclZhbHVlczpuLmZpbHRlclZhbHVlc30pOnRoaXMub25IcGFyYW1JbnRlcnZhbEZpbHRlckNoYW5nZWQuZW1pdCh7bmFtZTplLGluY2x1ZGVVbmRlZmluZWQ6IW4uaW5jbHVkZVVuZGVmaW5lZCxmaWx0ZXJMb3dlclZhbHVlOm4uZmlsdGVyTG93ZXJWYWx1ZSxmaWx0ZXJVcHBlclZhbHVlOm4uZmlsdGVyVXBwZXJWYWx1ZX0pfWhhbmRsZUhwYXJhbUludGVydmFsQ2hhbmdlZCh0LGUpe2NvbnN0e25hbWU6bixmaWx0ZXI6b309dDtpZighbyl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW52YXJpYW50IGVycm9yOiByZXF1aXJlIGZpbHRlciB0byBleGlzdCBmb3IgaXQgdG8gY2hhbmdlIik7dGhpcy5vbkhwYXJhbUludGVydmFsRmlsdGVyQ2hhbmdlZC5lbWl0KHtuYW1lOm4saW5jbHVkZVVuZGVmaW5lZDpvLmluY2x1ZGVVbmRlZmluZWQsZmlsdGVyTG93ZXJWYWx1ZTplLmxvd2VyVmFsdWUsZmlsdGVyVXBwZXJWYWx1ZTplLnVwcGVyVmFsdWV9KX1oYW5kbGVIcGFyYW1EaXNjcmV0ZUNoYW5nZWQodCxlKXtjb25zdHtuYW1lOm4sZmlsdGVyOm99PXQ7aWYoIW8pdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFyaWFudCBlcnJvcjogcmVxdWlyZSBmaWx0ZXIgdG8gZXhpc3QgZm9yIGl0IHRvIGNoYW5nZSIpO2lmKG8udHlwZSE9PWtULkRJU0NSRVRFKXRocm93IG5ldyBSYW5nZUVycm9yKGBJbnZhcmlhbnQgZXJyb3I6IGV4cGVjdGVkIGRpc2NyZXRlIGRvbWFpbiBmb3IgJHtufWApO2NvbnN0IGk9bmV3IFNldChbLi4uby5maWx0ZXJWYWx1ZXNdKTtpLmhhcyhlKT9pLmRlbGV0ZShlKTppLmFkZChlKSx0aGlzLm9uSHBhcmFtRGlzY3JldGVGaWx0ZXJDaGFuZ2VkLmVtaXQoe2hwYXJhbU5hbWU6bixpbmNsdWRlVW5kZWZpbmVkOm8uaW5jbHVkZVVuZGVmaW5lZCxmaWx0ZXJWYWx1ZXM6Wy4uLmldfSl9aGFuZGxlTWV0cmljSW5jbHVkZVVuZGVmaW5lZENoYW5nZWQodCl7aWYoIXQuZmlsdGVyKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhcmlhbnQgZXJyb3I6IHJlcXVpcmUgZmlsdGVyIHRvIGV4aXN0IGZvciBpdCB0byBjaGFuZ2UiKTt0aGlzLm9uTWV0cmljRmlsdGVyQ2hhbmdlZC5lbWl0KHtuYW1lOnQudGFnLGluY2x1ZGVVbmRlZmluZWQ6IXQuZmlsdGVyLmluY2x1ZGVVbmRlZmluZWQsZmlsdGVyTG93ZXJWYWx1ZTp0LmZpbHRlci5maWx0ZXJMb3dlclZhbHVlLGZpbHRlclVwcGVyVmFsdWU6dC5maWx0ZXIuZmlsdGVyVXBwZXJWYWx1ZX0pfWhhbmRsZU1ldHJpY0ZpbHRlckNoYW5nZWQodCxlKXtpZighdC5maWx0ZXIpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFyaWFudCBlcnJvcjogcmVxdWlyZSBmaWx0ZXIgdG8gZXhpc3QgZm9yIGl0IHRvIGNoYW5nZSIpO3RoaXMub25NZXRyaWNGaWx0ZXJDaGFuZ2VkLmVtaXQoe25hbWU6dC50YWcsaW5jbHVkZVVuZGVmaW5lZDp0LmZpbHRlci5pbmNsdWRlVW5kZWZpbmVkLGZpbHRlckxvd2VyVmFsdWU6ZS5sb3dlclZhbHVlLGZpbHRlclVwcGVyVmFsdWU6ZS51cHBlclZhbHVlfSl9dHJhY2tCeUhwYXJhbUNvbHVtbih0KXtyZXR1cm4gdC5uYW1lfXRyYWNrQnlNZXRyaWNDb2x1bW4odCl7cmV0dXJuIHQudGFnfX1wNC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8cDQpfSxwNC7JtWNtcD1zbyh7dHlwZTpwNCxzZWxlY3RvcnM6W1sicnVucy10YWJsZS1jb21wb25lbnQiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJihWeShrNSw3LEtoKSxWeShlMSw3KSxWeShyMSw3KSksMiZlKXtsZXQgdDtCeSh0PVV5KCkpJiYobi5maWx0ZXI9dC5maXJzdCksQnkodD1VeSgpKSYmKG4ucGFnaW5hdG9yPXQuZmlyc3QpLEJ5KHQ9VXkoKSkmJihuLnNvcnQ9dC5maXJzdCl9fSxob3N0VmFyczoyLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MiZlJiZjdSgiZmxleC1sYXlvdXQiLG4udXNlRmxleGlibGVMYXlvdXQpfSxpbnB1dHM6e2V4cGVyaW1lbnRJZHM6ImV4cGVyaW1lbnRJZHMiLHNob3dFeHBlcmltZW50TmFtZToic2hvd0V4cGVyaW1lbnROYW1lIixjb2x1bW5zOiJjb2x1bW5zIixocGFyYW1Db2x1bW5zOiJocGFyYW1Db2x1bW5zIixtZXRyaWNDb2x1bW5zOiJtZXRyaWNDb2x1bW5zIixhbGxJdGVtc0xlbmd0aDoiYWxsSXRlbXNMZW5ndGgiLGZpbHRlcmVkSXRlbXNMZW5ndGg6ImZpbHRlcmVkSXRlbXNMZW5ndGgiLHVzZUZsZXhpYmxlTGF5b3V0OiJ1c2VGbGV4aWJsZUxheW91dCIsdXNlUGFnaW5hdGlvbjoidXNlUGFnaW5hdGlvbiIsc2hvd0dyb3VwQ29udHJvbDoic2hvd0dyb3VwQ29udHJvbCIscGFnZUl0ZW1zOiJwYWdlSXRlbXMiLGxvYWRpbmc6ImxvYWRpbmciLG51bVNlbGVjdGVkSXRlbXM6Im51bVNlbGVjdGVkSXRlbXMiLHNvcnRPcHRpb246InNvcnRPcHRpb24iLHBhZ2luYXRpb25PcHRpb246InBhZ2luYXRpb25PcHRpb24iLHJlZ2V4RmlsdGVyOiJyZWdleEZpbHRlciJ9LG91dHB1dHM6e29uUmVnZXhGaWx0ZXJDaGFuZ2U6Im9uUmVnZXhGaWx0ZXJDaGFuZ2UiLG9uU2VsZWN0aW9uVG9nZ2xlOiJvblNlbGVjdGlvblRvZ2dsZSIsb25QYWdlU2VsZWN0aW9uVG9nZ2xlOiJvblBhZ2VTZWxlY3Rpb25Ub2dnbGUiLG9uUGFnaW5hdGlvbkNoYW5nZToib25QYWdpbmF0aW9uQ2hhbmdlIixvblNvcnRDaGFuZ2U6Im9uU29ydENoYW5nZSIsb25SdW5Db2xvckNoYW5nZToib25SdW5Db2xvckNoYW5nZSIsb25IcGFyYW1EaXNjcmV0ZUZpbHRlckNoYW5nZWQ6Im9uSHBhcmFtRGlzY3JldGVGaWx0ZXJDaGFuZ2VkIixvbkhwYXJhbUludGVydmFsRmlsdGVyQ2hhbmdlZDoib25IcGFyYW1JbnRlcnZhbEZpbHRlckNoYW5nZWQiLG9uTWV0cmljRmlsdGVyQ2hhbmdlZDoib25NZXRyaWNGaWx0ZXJDaGFuZ2VkIn0sZmVhdHVyZXM6W2poKFt7cHJvdmlkZTpYMCx1c2VDbGFzczpkNH1dKSxxb10sZGVjbHM6MTUsdmFyczo4LGNvbnN0czpbWzEsImZpbHRlci1yb3ciXSxbInBsYWNlaG9sZGVyIiwiRmlsdGVyIHJ1bnMgKHJlZ2V4KSIsMSwicnVuLWZpbHRlciIsMywidmFsdWUiLCJrZXl1cCJdLFsxLCJ0YWJsZS1jb250YWluZXIiXSxbInJvbGUiLCJ0YWJsZSJdLFs0LCJuZ1RlbXBsYXRlT3V0bGV0Il0sWyJyb2xlIiwicm93Z3JvdXAiLDEsInJvd3MiXSxbNCwibmdGb3IiLCJuZ0Zvck9mIiwibmdGb3JUcmFja0J5Il0sWyJjbGFzcyIsImxvYWRpbmciLDQsIm5nSWYiXSxbImNsYXNzIiwibm8tcnVucyIsNCwibmdJZiJdLFsic2hvd0ZpcnN0TGFzdEJ1dHRvbnMiLCIiLDMsInBhZ2VTaXplT3B0aW9ucyIsInBhZ2VJbmRleCIsInBhZ2VTaXplIiwibGVuZ3RoIiwicGFnZSIsNCwibmdJZiJdLFsiaGVhZGVyIiwiIl0sWyJyb3ciLCIiXSxbNCwibmdUZW1wbGF0ZU91dGxldCIsIm5nVGVtcGxhdGVPdXRsZXRDb250ZXh0Il0sWzEsImxvYWRpbmciXSxbIm1vZGUiLCJpbmRldGVybWluYXRlIiwiZGlhbWV0ZXIiLCIyOCJdLFsxLCJuby1ydW5zIl0sWyJzaG93Rmlyc3RMYXN0QnV0dG9ucyIsIiIsMywicGFnZVNpemVPcHRpb25zIiwicGFnZUluZGV4IiwicGFnZVNpemUiLCJsZW5ndGgiLCJwYWdlIl0sWyJyb2xlIiwicm93Z3JvdXAiLDEsImhlYWRlciJdLFsibWF0U29ydCIsIiIsInJvbGUiLCJyb3ciLDMsIm1hdFNvcnRBY3RpdmUiLCJtYXRTb3J0Q2hhbmdlIl0sWyJyb2xlIiwiY29sdW1uaGVhZGVyIiwzLCJuZ0NsYXNzIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbInJvbGUiLCJjb2x1bW5oZWFkZXIiLCJjbGFzcyIsImNvbHVtbiIsMywibWF0LXNvcnQtaGVhZGVyIiw0LCJuZ0ZvciIsIm5nRm9yT2YiLCJuZ0ZvclRyYWNrQnkiXSxbInJvbGUiLCJjb2x1bW5oZWFkZXIiLDMsIm5nQ2xhc3MiXSxbMywibmdTd2l0Y2giXSxbMywiY2hlY2tlZCIsImluZGV0ZXJtaW5hdGUiLCJjaGFuZ2UiLDQsIm5nU3dpdGNoQ2FzZSJdLFszLCJtYXQtc29ydC1oZWFkZXIiLDQsIm5nU3dpdGNoQ2FzZSJdLFs0LCJuZ1N3aXRjaENhc2UiXSxbMywiY2hlY2tlZCIsImluZGV0ZXJtaW5hdGUiLCJjaGFuZ2UiXSxbMywibWF0LXNvcnQtaGVhZGVyIl0sWzMsImV4cGVyaW1lbnRJZHMiLDQsIm5nSWYiXSxbMywiZXhwZXJpbWVudElkcyJdLFsicm9sZSIsImNvbHVtbmhlYWRlciIsMSwiY29sdW1uIiwzLCJtYXQtc29ydC1oZWFkZXIiXSxbMSwibmFtZSJdLFs0LCJuZ0lmIl0sWyJtYXQtaWNvbi1idXR0b24iLCIiLDMsIm1hdE1lbnVUcmlnZ2VyRm9yIiwiY2xpY2siXSxbInN2Z0ljb24iLCJmaWx0ZXJfYWx0XzI0cHgiXSxbImZpbHRlck1lbnUiLCJtYXRNZW51Il0sWyJtYXQtbWVudS1pdGVtIiwiIiwicm9sZSIsIm1lbnVpdGVtY2hlY2tib3giLCJkaXNhYmxlUmlwcGxlIiwiIiwxLCJmaWx0ZXItbWVudS1jaGVja2JveC1yb3ciLDMsImNsaWNrIl0sWzMsImNoZWNrZWQiLCJjaGFuZ2UiXSxbImRpc2FibGVSaXBwbGUiLCIiLCJtYXQtbWVudS1pdGVtIiwiIiwxLCJyYW5nZS1pbnB1dC1jb250YWluZXIiLDMsImNsaWNrIl0sWzMsIm1pbiIsIm1heCIsImxvd2VyVmFsdWUiLCJ1cHBlclZhbHVlIiwidmFsdWUiXSxbIm1hdC1tZW51LWl0ZW0iLCIiLCJjbGFzcyIsImZpbHRlci1tZW51LWNoZWNrYm94LXJvdyIsInJvbGUiLCJtZW51aXRlbWNoZWNrYm94IiwzLCJjbGljayIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWyJtYXQtbWVudS1pdGVtIiwiIiwicm9sZSIsIm1lbnVpdGVtY2hlY2tib3giLDEsImZpbHRlci1tZW51LWNoZWNrYm94LXJvdyIsMywiY2xpY2siXSxbInJvbGUiLCJyb3ciXSxbInJvbGUiLCJjZWxsIiwzLCJuZ0NsYXNzIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbInJvbGUiLCJjZWxsIiwiY2xhc3MiLCJjb2x1bW4iLDQsIm5nRm9yIiwibmdGb3JPZiJdLFsicm9sZSIsImNlbGwiLDMsIm5nQ2xhc3MiXSxbMywiYWxpYXMiLDQsIm5nU3dpdGNoQ2FzZSJdLFsiY2xhc3MiLCJuYW1lIiw0LCJuZ1N3aXRjaENhc2UiXSxbMywiYWxpYXMiXSxbMywibmdDbGFzcyIsImNvbG9yUGlja2VyIiwiY3BEaWFsb2dEaXNwbGF5IiwiY3BQb3NpdGlvbk9mZnNldCIsImNwVXNlUm9vdFZpZXdDb250YWluZXIiLCJjcE91dHB1dEZvcm1hdCIsImNvbG9yUGlja2VyQ2hhbmdlIl0sWyJyb2xlIiwiY2VsbCIsMSwiY29sdW1uIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJihDZigwLCJkaXYiLDApLENmKDEsInRiLWZpbHRlci1pbnB1dCIsMSksUmYoImtleXVwIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vbkZpbHRlcktleVVwKGUpfSkpLE1mKCksTWYoKSxDZigyLCJkaXYiLDIpLENmKDMsImRpdiIsMyksSG0oNCxTNSwxLDAsIm5nLWNvbnRhaW5lciIsNCksQ2YoNSwiZGl2Iiw1KSxIbSg2LEU1LDIsNCwibmctY29udGFpbmVyIiw2KSxNZigpLE1mKCksSG0oNyxBNSwyLDAsImRpdiIsNyksSG0oOCxUNSwyLDAsImRpdiIsOCksSG0oOSxONSw2LDEsImRpdiIsOCksTWYoKSxIbSgxMCxJNSwxLDUsIm1hdC1wYWdpbmF0b3IiLDkpLEhtKDExLHQ0LDUsNiwibmctdGVtcGxhdGUiLG51bGwsMTAscXkpLEhtKDEzLGM0LDQsNCwibmctdGVtcGxhdGUiLG51bGwsMTEscXkpKSwyJmUpe2NvbnN0IHQ9Rm0oMTIpO0RjKDEpLExmKCJ2YWx1ZSIsbi5yZWdleEZpbHRlciksRGMoMyksYmYoIm5nVGVtcGxhdGVPdXRsZXQiLHQpLERjKDIpLGJmKCJuZ0Zvck9mIixuLnBhZ2VJdGVtcykoIm5nRm9yVHJhY2tCeSIsbi50YWJsZVRyYWNrQnkpLERjKDEpLGJmKCJuZ0lmIixuLmxvYWRpbmcpLERjKDEpLGJmKCJuZ0lmIiwhbi5sb2FkaW5nJiYwPT09bi5hbGxJdGVtc0xlbmd0aCksRGMoMSksYmYoIm5nSWYiLCFuLmxvYWRpbmcmJm4uYWxsSXRlbXNMZW5ndGg+MCYmMD09PW4uZmlsdGVyZWRJdGVtc0xlbmd0aCksRGMoMSksYmYoIm5nSWYiLG4udXNlUGFnaW5hdGlvbil9fSxkaXJlY3RpdmVzOltaMyxJdix4dixQdixhMixlMSxyMSxDdixEdixSdixiWixmMSxTMixOTCxxcSxNcSxqcSxIcSxFMixIMixQNV0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCB0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9W19uZ2hvc3QtJUNPTVAlXXtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2ZvbnQtc2l6ZToxM3B4O292ZXJmbG93OmhpZGRlbn0uZmlsdGVyLXJvd1tfbmdjb250ZW50LSVDT01QJV17ZmxleDpub25lfS50YWJsZS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2NvbnRhaW46bGF5b3V0IHBhaW50O2ZsZXgtZ3JvdzoxO21heC13aWR0aDoxMDAlO292ZXJmbG93LXg6YXV0bztvdmVyZmxvdy15OmF1dG87d2lsbC1jaGFuZ2U6dHJhbnNmb3JtLHNjcm9sbC1wb3NpdGlvbn0uZmxleC1sYXlvdXRbX25naG9zdC0lQ09NUCVdICAgLm5hbWVbX25nY29udGVudC0lQ09NUCVde3dvcmQtYnJlYWs6YnJlYWstd29yZDtvdmVyZmxvdy13cmFwOmJyZWFrLXdvcmR9LmZsZXgtbGF5b3V0W19uZ2hvc3QtJUNPTVAlXSAgIG1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3A6MXB4IHNvbGlkICNlYmViZWI7cGFkZGluZy1ib3R0b206MTJweH1ib2R5LmRhcmstbW9kZSAgIC5mbGV4LWxheW91dFtfbmdob3N0LSVDT01QJV0gICBtYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wOjFweCBzb2xpZCAjNTU1fVtyb2xlPXRhYmxlXVtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTp0YWJsZTt3aWR0aDoxMDAlfVtyb2xlPXRhYmxlXVtfbmdjb250ZW50LSVDT01QJV0gICAuaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXB9W3JvbGU9dGFibGVdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgW3JvbGU9Y29sdW1uaGVhZGVyXVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmO3Bvc2l0aW9uOnN0aWNreTt0b3A6MDt6LWluZGV4OjF9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgW3JvbGU9dGFibGVdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgW3JvbGU9Y29sdW1uaGVhZGVyXVtfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIFtyb2xlPXRhYmxlXVtfbmdjb250ZW50LSVDT01QJV0gICAuaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIFtyb2xlPWNvbHVtbmhlYWRlcl1bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6IzMwMzAzMH1bcm9sZT10YWJsZV1bX25nY29udGVudC0lQ09NUCVdICAgW3JvbGU9cm93XVtfbmdjb250ZW50LSVDT01QJV17Y29udGFpbjpzdHJpY3Q7ZGlzcGxheTp0YWJsZS1yb3c7aGVpZ2h0OjQzcHh9W3JvbGU9dGFibGVdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIFtyb2xlPXJvd11bX25nY29udGVudC0lQ09NUCVdICAgLmNvbHVtbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2ViZWJlYjtkaXNwbGF5OnRhYmxlLWNlbGw7cGFkZGluZzo1cHg7dmVydGljYWwtYWxpZ246bWlkZGxlfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIFtyb2xlPXRhYmxlXVtfbmdjb250ZW50LSVDT01QJV0gICBbcm9sZT1yb3ddW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jb2x1bW5bX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICBbcm9sZT10YWJsZV1bX25nY29udGVudC0lQ09NUCVdICAgW3JvbGU9cm93XVtfbmdjb250ZW50LSVDT01QJV0gICAuY29sdW1uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjNTU1fVtyb2xlPXRhYmxlXVtfbmdjb250ZW50LSVDT01QJV0gICBbcm9sZT1yb3ddW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jb2x1bW5bX25nY29udGVudC0lQ09NUCVdOmZpcnN0LWNoaWxke3BhZGRpbmctbGVmdDoyNHB4fVtyb2xlPXRhYmxlXVtfbmdjb250ZW50LSVDT01QJV0gICBbcm9sZT1yb3ddW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jb2x1bW5bX25nY29udGVudC0lQ09NUCVdOmxhc3QtY2hpbGR7cGFkZGluZy1yaWdodDoyNHB4fVtyb2xlPXJvd2dyb3VwXVtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTp0YWJsZS1yb3ctZ3JvdXB9W3JvbGU9cm93Z3JvdXBdLmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTp0YWJsZS1oZWFkZXItZ3JvdXB9LmxvYWRpbmdbX25nY29udGVudC0lQ09NUCVdLCAubm8tcnVuc1tfbmdjb250ZW50LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2JvcmRlcjowO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlYmViZWI7ZGlzcGxheTpmbGV4O2hlaWdodDo0OHB4O3BhZGRpbmc6MCAyNHB4fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5sb2FkaW5nW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmxvYWRpbmdbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1ib3R0b206MXB4IHNvbGlkICM1NTV9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLm5vLXJ1bnNbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAubm8tcnVuc1tfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbToxcHggc29saWQgIzU1NX0ubG9hZGluZ1tfbmdjb250ZW50LSVDT01QJV17anVzdGlmeS1jb250ZW50OmNlbnRlcn0uc2VsZWN0LWFsbFtfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MTJweDtwYWRkaW5nLXRvcDoxMnB4fS5zZWxlY3QtYWxsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdLCAuc2VsZWN0LWFsbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuNjt0ZXh0LWFsaWduOmxlZnR9LnNlbGVjdC1hbGwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICBidXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjUwMDtwYWRkaW5nOjAgNHB4fS5maWx0ZXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZWJlYmViO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7aGVpZ2h0OjQ4cHg7cGFkZGluZzowIDE2cHggMCAyMXB4fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5maWx0ZXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmZpbHRlci1yb3dbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1ib3R0b206MXB4IHNvbGlkICM1NTV9LmZpbHRlci1yb3dbX25nY29udGVudC0lQ09NUCVdICAgdGItZmlsdGVyLWlucHV0W19uZ2NvbnRlbnQtJUNPTVAlXXtmbGV4LWdyb3c6MX0udGItY29sdW1uLWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXSwgLnRiLWNvbHVtbi1ydW5fY29sb3JbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjIwcHh9LnRiLWNvbHVtbi1ydW5fY29sb3JbX25nY29udGVudC0lQ09NUCVde3RleHQtYWxpZ246Y2VudGVyfS5ydW4tY29sb3Itc3dhdGNoW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItcmFkaXVzOjEwMCU7Ym9yZGVyOjFweCBzb2xpZCAjZWJlYmViO2hlaWdodDoyMHB4O3dpZHRoOjIwcHg7b3V0bGluZTpub25lfS5ydW4tY29sb3Itc3dhdGNoLm5vLWNvbG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2M2Y2FkMTtib3JkZXItd2lkdGg6MnB4fS5yYW5nZS1pbnB1dC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDphdXRvfVtfbmdob3N0LSVDT01QJV0gICAgIG1hdC1wYWdpbmF0b3IgbWF0LWZvcm0tZmllbGR7bWFyZ2luOjB9LmZpbHRlci1tZW51LWNoZWNrYm94LXJvd1tfbmdjb250ZW50LSVDT01QJV0gICBtYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVdICAgICBsYWJlbHtkaXNwbGF5OmZsZXg7aGVpZ2h0OjEwMCU7YWxpZ24taXRlbXM6Y2VudGVyfS5maWx0ZXItbWVudS1jaGVja2JveC1yb3dbX25nY29udGVudC0lQ09NUCVdICAgbWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgbGFiZWwgLm1hdC1jaGVja2JveC1pbm5lci1jb250YWluZXJ7bWFyZ2luLWxlZnQ6MH0uZmlsdGVyLW1lbnUtY2hlY2tib3gtcm93W19uZ2NvbnRlbnQtJUNPTVAlXSAgIG1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV0gICAgIGxhYmVsIC5tYXQtY2hlY2tib3gtbGFiZWx7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXN9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgbWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIG1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6IzMwMzAzMH0nXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIocDQsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoicnVucy10YWJsZS1jb21wb25lbnQiLHRlbXBsYXRlVXJsOiJydW5zX3RhYmxlX2NvbXBvbmVudC5uZy5odG1sIixob3N0OnsiW2NsYXNzLmZsZXgtbGF5b3V0XSI6InVzZUZsZXhpYmxlTGF5b3V0In0sc3R5bGVVcmxzOlsicnVuc190YWJsZV9jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaCxwcm92aWRlcnM6W3twcm92aWRlOlgwLHVzZUNsYXNzOmQ0fV19XX1dLG51bGwse2V4cGVyaW1lbnRJZHM6W3t0eXBlOlJffV0sc2hvd0V4cGVyaW1lbnROYW1lOlt7dHlwZTpSX31dLGNvbHVtbnM6W3t0eXBlOlJffV0saHBhcmFtQ29sdW1uczpbe3R5cGU6Ul99XSxtZXRyaWNDb2x1bW5zOlt7dHlwZTpSX31dLGFsbEl0ZW1zTGVuZ3RoOlt7dHlwZTpSX31dLGZpbHRlcmVkSXRlbXNMZW5ndGg6W3t0eXBlOlJffV0sdXNlRmxleGlibGVMYXlvdXQ6W3t0eXBlOlJffV0sdXNlUGFnaW5hdGlvbjpbe3R5cGU6Ul99XSxzaG93R3JvdXBDb250cm9sOlt7dHlwZTpSX31dLHBhZ2VJdGVtczpbe3R5cGU6Ul99XSxsb2FkaW5nOlt7dHlwZTpSX31dLG51bVNlbGVjdGVkSXRlbXM6W3t0eXBlOlJffV0sc29ydE9wdGlvbjpbe3R5cGU6Ul99XSxwYWdpbmF0aW9uT3B0aW9uOlt7dHlwZTpSX31dLHJlZ2V4RmlsdGVyOlt7dHlwZTpSX31dLG9uUmVnZXhGaWx0ZXJDaGFuZ2U6W3t0eXBlOkVffV0sb25TZWxlY3Rpb25Ub2dnbGU6W3t0eXBlOkVffV0sb25QYWdlU2VsZWN0aW9uVG9nZ2xlOlt7dHlwZTpFX31dLG9uUGFnaW5hdGlvbkNoYW5nZTpbe3R5cGU6RV99XSxvblNvcnRDaGFuZ2U6W3t0eXBlOkVffV0sb25SdW5Db2xvckNoYW5nZTpbe3R5cGU6RV99XSxvbkhwYXJhbURpc2NyZXRlRmlsdGVyQ2hhbmdlZDpbe3R5cGU6RV99XSxvbkhwYXJhbUludGVydmFsRmlsdGVyQ2hhbmdlZDpbe3R5cGU6RV99XSxvbk1ldHJpY0ZpbHRlckNoYW5nZWQ6W3t0eXBlOkVffV0sZmlsdGVyOlt7dHlwZTphcixhcmdzOlsiZmlsdGVyIix7c3RhdGljOiEwLHJlYWQ6S2h9XX1dLHBhZ2luYXRvcjpbe3R5cGU6YXIsYXJnczpbZTEse3N0YXRpYzohMH1dfV0sc29ydDpbe3R5cGU6YXIsYXJnczpbcjEse3N0YXRpYzohMH1dfV19KTtjb25zdCBtND1iUyhLeiwodD0+dC5zdGF0ZT09PVVFLkxPQURJTkcpKTtmdW5jdGlvbiBmNCh0LGUpe3N3aXRjaChlLnR5cGUpe2Nhc2UgRnouRVhQRVJJTUVOVF9OQU1FOnJldHVyblt0LmV4cGVyaW1lbnRBbGlhcyx0LnJ1bi5uYW1lLHQucnVuLmlkXTtjYXNlIEZ6LlJVTl9OQU1FOnJldHVyblt0LnJ1bi5uYW1lLHQuZXhwZXJpbWVudEFsaWFzLHQucnVuLmlkXTtjYXNlIEZ6LkhQQVJBTTpyZXR1cm5bdC5ocGFyYW1zLmdldChlLm5hbWUpLHQucnVuLm5hbWUsdC5leHBlcmltZW50QWxpYXMsdC5ydW4uaWRdO2Nhc2UgRnouTUVUUklDOnJldHVyblt0Lm1ldHJpY3MuZ2V0KGUudGFnKSx0LnJ1bi5uYW1lLHQuZXhwZXJpbWVudEFsaWFzLHQucnVuLmlkXTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgTm90IHlldCBpbXBsZW1lbnRlZDogJHtlfWApfX1mdW5jdGlvbiB1NCh0LGUpe2lmKHZvaWQgMD09PWUpcmV0dXJuIHQuaW5jbHVkZVVuZGVmaW5lZDtpZih0LnR5cGU9PT1rVC5ESVNDUkVURSl7cmV0dXJuIHQuZmlsdGVyVmFsdWVzLmluY2x1ZGVzKGUpfXJldHVybiB0LnR5cGU9PT1rVC5JTlRFUlZBTCYmKHQuZmlsdGVyTG93ZXJWYWx1ZTw9ZSYmZTw9dC5maWx0ZXJVcHBlclZhbHVlKX1jbGFzcyBnNHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5sb2FkaW5nJD1udWxsLHRoaXMuaHBhcmFtQ29sdW1ucyQ9enQoW10pLHRoaXMubWV0cmljQ29sdW1ucyQ9enQoW10pLHRoaXMudXNlRmxleGlibGVMYXlvdXQ9ITEsdGhpcy51c2VQYWdpbmF0aW9uPSExLHRoaXMuY29sdW1ucz1beDAuUlVOX05BTUVdLHRoaXMuc2hvd0hwYXJhbXNBbmRNZXRyaWNzPSExLHRoaXMuc29ydE9wdGlvbiQ9dGhpcy5zdG9yZS5zZWxlY3Qob0kpLHRoaXMucGFnaW5hdGlvbk9wdGlvbiQ9dGhpcy5zdG9yZS5zZWxlY3QobkkpLHRoaXMucmVnZXhGaWx0ZXIkPXRoaXMuc3RvcmUuc2VsZWN0KHRJKSx0aGlzLm5nVW5zdWJzY3JpYmU9bmV3IEJ9aXNFeHBlcmltZW50TmFtZVZpc2libGUoKXtyZXR1cm4gdGhpcy5jb2x1bW5zLnNvbWUoKHQ9PnQ9PT14MC5FWFBFUklNRU5UX05BTUUpKX1uZ09uSW5pdCgpe2NvbnN0IHQ9S3QodGhpcy5leHBlcmltZW50SWRzLm1hcCgodD0+dGhpcy5nZXRSdW5UYWJsZUl0ZW1zRm9yRXhwZXJpbWVudCh0KSkpKS5waXBlKFZ0KCh0PT5bXS5jb25jYXQoLi4udCkpKSk7dGhpcy5hbGxVbnNvcnRlZFJ1blRhYmxlSXRlbXMkPXQucGlwZShqZSh0aGlzLm5nVW5zdWJzY3JpYmUpLEZlKDEpKSx0aGlzLmFsbEl0ZW1zTGVuZ3RoJD10aGlzLmFsbFVuc29ydGVkUnVuVGFibGVJdGVtcyQucGlwZShWdCgodD0+dC5sZW5ndGgpKSk7Y29uc3QgZT10aGlzLmdldEZpbHRlcmVkSXRlbXMkKHRoaXMuYWxsVW5zb3J0ZWRSdW5UYWJsZUl0ZW1zJCkucGlwZShqZSh0aGlzLm5nVW5zdWJzY3JpYmUpLEZlKDEpKTt0aGlzLmZpbHRlcmVkSXRlbXNMZW5ndGgkPWUucGlwZShWdCgodD0+dC5sZW5ndGgpKSksdGhpcy5wYWdlSXRlbXMkPXRoaXMuc29ydGVkQW5kU2xpY2VkSXRlbXMkKGUpLHRoaXMubnVtU2VsZWN0ZWRJdGVtcyQ9dGhpcy5hbGxVbnNvcnRlZFJ1blRhYmxlSXRlbXMkLnBpcGUoVnQoKHQ9PnQucmVkdWNlKCgodCxlKT0+dCtOdW1iZXIoZS5zZWxlY3RlZCkpLDApKSkpO2NvbnN0IG49dGhpcy5leHBlcmltZW50SWRzLm1hcCgodD0+dGhpcy5zdG9yZS5zZWxlY3QobTQse2V4cGVyaW1lbnRJZDp0fSkpKTtpZih0aGlzLmxvYWRpbmckPUt0KG4pLnBpcGUoVnQoKHQ9PnQuc29tZSgodD0+dCkpKSkpLHRoaXMuc2hvd0hwYXJhbXNBbmRNZXRyaWNzKXtjb25zdCB0PXRoaXMuc3RvcmUuc2VsZWN0KEQwLHtleHBlcmltZW50SWRzOnRoaXMuZXhwZXJpbWVudElkc30pO3RoaXMuaHBhcmFtQ29sdW1ucyQ9S3QoW3RoaXMuc3RvcmUuc2VsZWN0KHcwLHRoaXMuZXhwZXJpbWVudElkcyksdF0pLnBpcGUoVnQoKChbdCx7aHBhcmFtczplfV0pPT5lLm1hcCgoKHtuYW1lOmUsZGlzcGxheU5hbWU6bn0pPT57Y29uc3Qgbz10LmdldChlKTtpZighbyl0aHJvdyBuZXcgUmFuZ2VFcnJvcihgSW52YXJpYW50IGVycm9yOiBhIGZpbHRlciBmb3IgJHtlfSBtdXN0IGV4aXN0IHdoZW4gdGhlIGhwYXJhbSBleGlzdHNgKTtyZXR1cm57ZGlzcGxheU5hbWU6bixuYW1lOmUsZmlsdGVyOm99fSkpKSkpLHRoaXMubWV0cmljQ29sdW1ucyQ9S3QoW3RoaXMuc3RvcmUuc2VsZWN0KFMwLHRoaXMuZXhwZXJpbWVudElkcyksdF0pLnBpcGUoVnQoKChbdCx7bWV0cmljczplfV0pPT5lLm1hcCgoKHt0YWc6ZSxkaXNwbGF5TmFtZTpufSk9Pntjb25zdCBvPXQuZ2V0KGUpO2lmKCFvKXRocm93IG5ldyBSYW5nZUVycm9yKGBJbnZhcmlhbnQgZXJyb3I6IGEgZmlsdGVyIGZvciAke2V9IG11c3QgZXhpc3Qgd2hlbiB0aGUgbWV0cmljIGV4aXN0c2ApO3JldHVybntkaXNwbGF5TmFtZTpuLHRhZzplLGZpbHRlcjpvfX0pKSkpKX1pZih0aGlzLmNvbHVtbnMuaW5jbHVkZXMoeDAuQ0hFQ0tCT1gpKXt0aGlzLnN0b3JlLnNlbGVjdChoUikucGlwZShqZSh0aGlzLm5nVW5zdWJzY3JpYmUpLHdlKCgodCxlKT0+eEQodCxlKSkpLFZlKCgoKT0+dC5waXBlKHVlKCh0PT50Lmxlbmd0aD41MDApKSx2ZSgxKSkpKSkuc3Vic2NyaWJlKCgoKT0+e3RoaXMuc3RvcmUuZGlzcGF0Y2goR0koe2xvY2FsaXplZE1lc3NhZ2U6IlRoZSBudW1iZXIgb2YgcnVucyBleGNlZWRzIDUwMC4gTmV3IHJ1bnMgYXJlIHVuc2VsZWN0ZWQgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMuIn0pKX0pKX10aGlzLnNob3dHcm91cENvbnRyb2wkPXRoaXMuc3RvcmUuc2VsZWN0KGpEKS5waXBlKFZ0KCh0PT50JiZ0aGlzLmNvbHVtbnMuaW5jbHVkZXMoeDAuUlVOX0NPTE9SKSkpKSx0aGlzLnN0b3JlLmRpc3BhdGNoKHZUKHtleHBlcmltZW50SWRzOnRoaXMuZXhwZXJpbWVudElkc30pKX1uZ09uRGVzdHJveSgpe3RoaXMubmdVbnN1YnNjcmliZS5uZXh0KCksdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCl9Z2V0RmlsdGVyZWRJdGVtcyQodCl7cmV0dXJuIEt0KFt0LHRoaXMuc3RvcmUuc2VsZWN0KHRJKV0pLnBpcGUoVnQoKChbdCxlXSk9PntpZighZSlyZXR1cm4gdDtjb25zdCBuPXRoaXMuY29sdW1ucy5pbmNsdWRlcyh4MC5FWFBFUklNRU5UX05BTUUpO3JldHVybiB0LmZpbHRlcigodD0+eUkoe3J1bk5hbWU6dC5ydW4ubmFtZSxleHBlcmltZW50QWxpYXM6dC5leHBlcmltZW50QWxpYXN9LGUsbikpKX0pKSxWZSgodD0+dGhpcy5zaG93SHBhcmFtc0FuZE1ldHJpY3M/S3QodGhpcy5zdG9yZS5zZWxlY3QodzAsdGhpcy5leHBlcmltZW50SWRzKSx0aGlzLnN0b3JlLnNlbGVjdChTMCx0aGlzLmV4cGVyaW1lbnRJZHMpKS5waXBlKFZ0KCgoW2Usbl0pPT50LmZpbHRlcigoKHtocGFyYW1zOnQsbWV0cmljczpvfSk9PlsuLi5lLmVudHJpZXMoKV0uZXZlcnkoKChbZSxuXSk9PnU0KG4sdC5nZXQoZSkpKSkmJlsuLi5uLmVudHJpZXMoKV0uZXZlcnkoKChbdCxlXSk9PnU0KGUsby5nZXQodCkpKSkpKSkpKTp6dCh0KSkpKX1zb3J0ZWRBbmRTbGljZWRJdGVtcyQodCl7Y29uc3QgZT1LdChbdCx0aGlzLnN0b3JlLnNlbGVjdChvSSldKS5waXBlKFZ0KCgoW3QsZV0pPT4oZnVuY3Rpb24gbih0LGUpe2NvbnN0IG49ZS5rZXksbz1bLi4udF07cmV0dXJuIG51bGw9PT1ufHxlLmRpcmVjdGlvbj09PXZJLlVOU0VUfHxvLnNvcnQoKCh0LG8pPT57Y29uc3QgaT1mNCh0LG4pLGE9ZjQobyxuKTtpZihpLmxlbmd0aCE9PWEubGVuZ3RoKXRocm93IG5ldyBFcnJvcihgSW52YXJpYW50IGVycm9yOiBhIGdpdmVuIHNvcnQgc2hvdWxkIHJlc3VsdCBpbiBzYW1lIG51bWJlciBvZiBpdGVtczogJHtlfWApO2ZvcihsZXQgdD0wO3Q8aS5sZW5ndGg7dCsrKXtjb25zdCBuPWlbdF0sbz1hW3RdO2lmKG4hPT1vKXtpZih2b2lkIDA9PT1ufHx2b2lkIDA9PT1vKXJldHVybiB2b2lkIDA9PT1vPy0xOjE7aWYodHlwZW9mIG4hPXR5cGVvZiBvKXRocm93IG5ldyBFcnJvcihgQ2Fubm90IGNvbXBhcmUgdmFsdWVzIG9mIGRpZmZlcmVudCB0eXBlczogJHt0eXBlb2Ygbn0gdnMuICR7dHlwZW9mIG99YCk7cmV0dXJuIG48bz09KGUuZGlyZWN0aW9uPT09dkkuQVNDKT8tMToxfX1yZXR1cm4gMH0pKSxvfSkodCxlKSkpKTtyZXR1cm4gS3QoW2UsdGhpcy5zdG9yZS5zZWxlY3QobkkpXSkucGlwZShWdCgoKFt0LGVdKT0+e2lmKCF0aGlzLnVzZVBhZ2luYXRpb24pcmV0dXJuIHQuc2xpY2UoKTtjb25zdHtwYWdlU2l6ZTpuLHBhZ2VJbmRleDpvfT1lO3JldHVybiB0LnNsaWNlKG8qbiwobysxKSpuKX0pKSxCZShbXSkpfWdldFJ1blRhYmxlSXRlbXNGb3JFeHBlcmltZW50KHQpe3JldHVybiBLdChbdGhpcy5zdG9yZS5zZWxlY3QocXose2V4cGVyaW1lbnRJZDp0fSksdGhpcy5zdG9yZS5zZWxlY3QocVQse2V4cGVyaW1lbnRJZDp0fSksdGhpcy5zdG9yZS5zZWxlY3QoX0kpLHRoaXMuc3RvcmUuc2VsZWN0KENJKSx0aGlzLnN0b3JlLnNlbGVjdChPUildKS5waXBlKFZ0KCgoW2UsbixvLGksYV0pPT5lLm1hcCgoZT0+e2NvbnN0IHI9bmV3IE1hcDsoZS5ocGFyYW1zfHxbXSkuZm9yRWFjaCgodD0+e3Iuc2V0KHQubmFtZSx0LnZhbHVlKX0pKTtjb25zdCBzPW5ldyBNYXA7cmV0dXJuKGUubWV0cmljc3x8W10pLmZvckVhY2goKHQ9PntzLnNldCh0LnRhZyx0LnZhbHVlKX0pKSx7cnVuOmUsZXhwZXJpbWVudE5hbWU6KG51bGw9PW4/dm9pZCAwOm4ubmFtZSl8fCIiLGV4cGVyaW1lbnRBbGlhczphW3RdLHNlbGVjdGVkOkJvb2xlYW4obyYmby5nZXQoZS5pZCkpLHJ1bkNvbG9yOmlbZS5pZF0saHBhcmFtczpyLG1ldHJpY3M6c319KSkpKSl9b25SdW5TZWxlY3Rpb25Ub2dnbGUodCl7dGhpcy5zdG9yZS5kaXNwYXRjaChoVCh7ZXhwZXJpbWVudElkczp0aGlzLmV4cGVyaW1lbnRJZHMscnVuSWQ6dC5ydW4uaWR9KSl9b25QYWdlU2VsZWN0aW9uVG9nZ2xlKHQpe2NvbnN0e2l0ZW1zOmV9PXQsbj1lLm1hcCgoKHtydW46dH0pPT50LmlkKSk7dGhpcy5zdG9yZS5kaXNwYXRjaChiVCh7ZXhwZXJpbWVudElkczp0aGlzLmV4cGVyaW1lbnRJZHMscnVuSWRzOm59KSl9b25QYWdpbmF0aW9uQ2hhbmdlKHQpe2lmKCF0aGlzLnVzZVBhZ2luYXRpb24pdGhyb3cgbmV3IEVycm9yKCJQYWdpbmF0aW9uIGV2ZW50cyBjYW5ub3QgYmUgZGlzcGF0Y2hlZCB3aGVuIHBhZ2luYXRpb24gaXMgZGlzYWJsZWQiKTtjb25zdHtwYWdlSW5kZXg6ZSxwYWdlU2l6ZTpufT10O3RoaXMuc3RvcmUuZGlzcGF0Y2goeVQoe3BhZ2VJbmRleDplLHBhZ2VTaXplOm59KSl9b25Tb3J0Q2hhbmdlKHQpe3RoaXMuc3RvcmUuZGlzcGF0Y2goX1QodCkpfW9uUmVnZXhGaWx0ZXJDaGFuZ2UodCl7dGhpcy5zdG9yZS5kaXNwYXRjaChDVCh7cmVnZXhTdHJpbmc6dH0pKX1vblJ1bkNvbG9yQ2hhbmdlKHtydW5JZDp0LG5ld0NvbG9yOmV9KXt0aGlzLnN0b3JlLmRpc3BhdGNoKE1UKHtydW5JZDp0LG5ld0NvbG9yOmV9KSl9b25IcGFyYW1EaXNjcmV0ZUZpbHRlckNoYW5nZWQodCl7Y29uc3R7aHBhcmFtTmFtZTplLGZpbHRlclZhbHVlczpuLGluY2x1ZGVVbmRlZmluZWQ6b309dDt0aGlzLnN0b3JlLmRpc3BhdGNoKERUKHtleHBlcmltZW50SWRzOnRoaXMuZXhwZXJpbWVudElkcyxocGFyYW1OYW1lOmUsZmlsdGVyVmFsdWVzOm4saW5jbHVkZVVuZGVmaW5lZDpvfSkpfW9uSHBhcmFtSW50ZXJ2YWxGaWx0ZXJDaGFuZ2VkKHQpe2NvbnN0e25hbWU6ZSxmaWx0ZXJMb3dlclZhbHVlOm4sZmlsdGVyVXBwZXJWYWx1ZTpvLGluY2x1ZGVVbmRlZmluZWQ6aX09dDt0aGlzLnN0b3JlLmRpc3BhdGNoKFJUKHtleHBlcmltZW50SWRzOnRoaXMuZXhwZXJpbWVudElkcyxocGFyYW1OYW1lOmUsZmlsdGVyTG93ZXJWYWx1ZTpuLGZpbHRlclVwcGVyVmFsdWU6byxpbmNsdWRlVW5kZWZpbmVkOml9KSl9b25NZXRyaWNGaWx0ZXJDaGFuZ2VkKHQpe2NvbnN0e25hbWU6ZSxpbmNsdWRlVW5kZWZpbmVkOm4sZmlsdGVyTG93ZXJWYWx1ZTpvLGZpbHRlclVwcGVyVmFsdWU6aX09dDt0aGlzLnN0b3JlLmRpc3BhdGNoKEVUKHtleHBlcmltZW50SWRzOnRoaXMuZXhwZXJpbWVudElkcyxtZXRyaWNUYWc6ZSxpbmNsdWRlVW5kZWZpbmVkOm4sZmlsdGVyTG93ZXJWYWx1ZTpvLGZpbHRlclVwcGVyVmFsdWU6aX0pKX19ZzQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGc0KShnZihpUykpfSxnNC7JtWNtcD1zbyh7dHlwZTpnNCxzZWxlY3RvcnM6W1sicnVucy10YWJsZSJdXSxob3N0VmFyczoyLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MiZlJiZjdSgiZmxleC1sYXlvdXQiLG4udXNlRmxleGlibGVMYXlvdXQpfSxpbnB1dHM6e3VzZUZsZXhpYmxlTGF5b3V0OiJ1c2VGbGV4aWJsZUxheW91dCIsdXNlUGFnaW5hdGlvbjoidXNlUGFnaW5hdGlvbiIsY29sdW1uczoiY29sdW1ucyIsZXhwZXJpbWVudElkczoiZXhwZXJpbWVudElkcyIsc2hvd0hwYXJhbXNBbmRNZXRyaWNzOiJzaG93SHBhcmFtc0FuZE1ldHJpY3MifSxkZWNsczoxMix2YXJzOjM4LGNvbnN0czpbWzMsImV4cGVyaW1lbnRJZHMiLCJ1c2VGbGV4aWJsZUxheW91dCIsIm51bVNlbGVjdGVkSXRlbXMiLCJjb2x1bW5zIiwiaHBhcmFtQ29sdW1ucyIsIm1ldHJpY0NvbHVtbnMiLCJzaG93RXhwZXJpbWVudE5hbWUiLCJwYWdlSXRlbXMiLCJmaWx0ZXJlZEl0ZW1zTGVuZ3RoIiwiYWxsSXRlbXNMZW5ndGgiLCJsb2FkaW5nIiwicGFnaW5hdGlvbk9wdGlvbiIsInJlZ2V4RmlsdGVyIiwic2hvd0dyb3VwQ29udHJvbCIsInNvcnRPcHRpb24iLCJ1c2VQYWdpbmF0aW9uIiwib25TZWxlY3Rpb25Ub2dnbGUiLCJvblBhZ2VTZWxlY3Rpb25Ub2dnbGUiLCJvblBhZ2luYXRpb25DaGFuZ2UiLCJvblJlZ2V4RmlsdGVyQ2hhbmdlIiwib25Tb3J0Q2hhbmdlIiwib25SdW5Db2xvckNoYW5nZSIsIm9uSHBhcmFtSW50ZXJ2YWxGaWx0ZXJDaGFuZ2VkIiwib25IcGFyYW1EaXNjcmV0ZUZpbHRlckNoYW5nZWQiLCJvbk1ldHJpY0ZpbHRlckNoYW5nZWQiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKENmKDAsInJ1bnMtdGFibGUtY29tcG9uZW50IiwwKSxSZigib25TZWxlY3Rpb25Ub2dnbGUiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uUnVuU2VsZWN0aW9uVG9nZ2xlKGUpfSkpKCJvblBhZ2VTZWxlY3Rpb25Ub2dnbGUiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uUGFnZVNlbGVjdGlvblRvZ2dsZShlKX0pKSgib25QYWdpbmF0aW9uQ2hhbmdlIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vblBhZ2luYXRpb25DaGFuZ2UoZSl9KSkoIm9uUmVnZXhGaWx0ZXJDaGFuZ2UiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uUmVnZXhGaWx0ZXJDaGFuZ2UoZSl9KSkoIm9uU29ydENoYW5nZSIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25Tb3J0Q2hhbmdlKGUpfSkpKCJvblJ1bkNvbG9yQ2hhbmdlIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vblJ1bkNvbG9yQ2hhbmdlKGUpfSkpKCJvbkhwYXJhbUludGVydmFsRmlsdGVyQ2hhbmdlZCIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25IcGFyYW1JbnRlcnZhbEZpbHRlckNoYW5nZWQoZSl9KSkoIm9uSHBhcmFtRGlzY3JldGVGaWx0ZXJDaGFuZ2VkIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vbkhwYXJhbURpc2NyZXRlRmlsdGVyQ2hhbmdlZChlKX0pKSgib25NZXRyaWNGaWx0ZXJDaGFuZ2VkIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vbk1ldHJpY0ZpbHRlckNoYW5nZWQoZSl9KSksX3koMSwiYXN5bmMiKSxfeSgyLCJhc3luYyIpLF95KDMsImFzeW5jIiksX3koNCwiYXN5bmMiKSxfeSg1LCJhc3luYyIpLF95KDYsImFzeW5jIiksX3koNywiYXN5bmMiKSxfeSg4LCJhc3luYyIpLF95KDksImFzeW5jIiksX3koMTAsImFzeW5jIiksX3koMTEsImFzeW5jIiksTWYoKSksMiZlJiZiZigiZXhwZXJpbWVudElkcyIsbi5leHBlcmltZW50SWRzKSgidXNlRmxleGlibGVMYXlvdXQiLG4udXNlRmxleGlibGVMYXlvdXQpKCJudW1TZWxlY3RlZEl0ZW1zIixDeSgxLDE2LG4ubnVtU2VsZWN0ZWRJdGVtcyQpKSgiY29sdW1ucyIsbi5jb2x1bW5zKSgiaHBhcmFtQ29sdW1ucyIsQ3koMiwxOCxuLmhwYXJhbUNvbHVtbnMkKSkoIm1ldHJpY0NvbHVtbnMiLEN5KDMsMjAsbi5tZXRyaWNDb2x1bW5zJCkpKCJzaG93RXhwZXJpbWVudE5hbWUiLG4uaXNFeHBlcmltZW50TmFtZVZpc2libGUoKSkoInBhZ2VJdGVtcyIsQ3koNCwyMixuLnBhZ2VJdGVtcyQpKSgiZmlsdGVyZWRJdGVtc0xlbmd0aCIsQ3koNSwyNCxuLmZpbHRlcmVkSXRlbXNMZW5ndGgkKSkoImFsbEl0ZW1zTGVuZ3RoIixDeSg2LDI2LG4uYWxsSXRlbXNMZW5ndGgkKSkoImxvYWRpbmciLEN5KDcsMjgsbi5sb2FkaW5nJCkpKCJwYWdpbmF0aW9uT3B0aW9uIixDeSg4LDMwLG4ucGFnaW5hdGlvbk9wdGlvbiQpKSgicmVnZXhGaWx0ZXIiLEN5KDksMzIsbi5yZWdleEZpbHRlciQpKSgic2hvd0dyb3VwQ29udHJvbCIsQ3koMTAsMzQsbi5zaG93R3JvdXBDb250cm9sJCkpKCJzb3J0T3B0aW9uIixDeSgxMSwzNixuLnNvcnRPcHRpb24kKSkoInVzZVBhZ2luYXRpb24iLG4udXNlUGFnaW5hdGlvbil9LGRpcmVjdGl2ZXM6W3A0XSxwaXBlczpbVnZdLHN0eWxlczpbIi5mbGV4LWxheW91dFtfbmdob3N0LSVDT01QJV0ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgfVxuXG4gICAgICAuZmxleC1sYXlvdXRbX25naG9zdC0lQ09NUCVdICAgID4gcnVucy10YWJsZS1jb21wb25lbnRbX25nY29udGVudC0lQ09NUCVdIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICB9Il0sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGc0LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6InJ1bnMtdGFibGUiLHRlbXBsYXRlOidcbiAgICA8cnVucy10YWJsZS1jb21wb25lbnRcbiAgICAgIFtleHBlcmltZW50SWRzXT0iZXhwZXJpbWVudElkcyJcbiAgICAgIFt1c2VGbGV4aWJsZUxheW91dF09InVzZUZsZXhpYmxlTGF5b3V0IlxuICAgICAgW251bVNlbGVjdGVkSXRlbXNdPSJudW1TZWxlY3RlZEl0ZW1zJCB8IGFzeW5jIlxuICAgICAgW2NvbHVtbnNdPSJjb2x1bW5zIlxuICAgICAgW2hwYXJhbUNvbHVtbnNdPSJocGFyYW1Db2x1bW5zJCB8IGFzeW5jIlxuICAgICAgW21ldHJpY0NvbHVtbnNdPSJtZXRyaWNDb2x1bW5zJCB8IGFzeW5jIlxuICAgICAgW3Nob3dFeHBlcmltZW50TmFtZV09ImlzRXhwZXJpbWVudE5hbWVWaXNpYmxlKCkiXG4gICAgICBbcGFnZUl0ZW1zXT0icGFnZUl0ZW1zJCB8IGFzeW5jIlxuICAgICAgW2ZpbHRlcmVkSXRlbXNMZW5ndGhdPSJmaWx0ZXJlZEl0ZW1zTGVuZ3RoJCB8IGFzeW5jIlxuICAgICAgW2FsbEl0ZW1zTGVuZ3RoXT0iYWxsSXRlbXNMZW5ndGgkIHwgYXN5bmMiXG4gICAgICBbbG9hZGluZ109ImxvYWRpbmckIHwgYXN5bmMiXG4gICAgICBbcGFnaW5hdGlvbk9wdGlvbl09InBhZ2luYXRpb25PcHRpb24kIHwgYXN5bmMiXG4gICAgICBbcmVnZXhGaWx0ZXJdPSJyZWdleEZpbHRlciQgfCBhc3luYyJcbiAgICAgIFtzaG93R3JvdXBDb250cm9sXT0ic2hvd0dyb3VwQ29udHJvbCQgfCBhc3luYyJcbiAgICAgIFtzb3J0T3B0aW9uXT0ic29ydE9wdGlvbiQgfCBhc3luYyJcbiAgICAgIFt1c2VQYWdpbmF0aW9uXT0idXNlUGFnaW5hdGlvbiJcbiAgICAgIChvblNlbGVjdGlvblRvZ2dsZSk9Im9uUnVuU2VsZWN0aW9uVG9nZ2xlKCRldmVudCkiXG4gICAgICAob25QYWdlU2VsZWN0aW9uVG9nZ2xlKT0ib25QYWdlU2VsZWN0aW9uVG9nZ2xlKCRldmVudCkiXG4gICAgICAob25QYWdpbmF0aW9uQ2hhbmdlKT0ib25QYWdpbmF0aW9uQ2hhbmdlKCRldmVudCkiXG4gICAgICAob25SZWdleEZpbHRlckNoYW5nZSk9Im9uUmVnZXhGaWx0ZXJDaGFuZ2UoJGV2ZW50KSJcbiAgICAgIChvblNvcnRDaGFuZ2UpPSJvblNvcnRDaGFuZ2UoJGV2ZW50KSJcbiAgICAgIChvblJ1bkNvbG9yQ2hhbmdlKT0ib25SdW5Db2xvckNoYW5nZSgkZXZlbnQpIlxuICAgICAgKG9uSHBhcmFtSW50ZXJ2YWxGaWx0ZXJDaGFuZ2VkKT0ib25IcGFyYW1JbnRlcnZhbEZpbHRlckNoYW5nZWQoJGV2ZW50KSJcbiAgICAgIChvbkhwYXJhbURpc2NyZXRlRmlsdGVyQ2hhbmdlZCk9Im9uSHBhcmFtRGlzY3JldGVGaWx0ZXJDaGFuZ2VkKCRldmVudCkiXG4gICAgICAob25NZXRyaWNGaWx0ZXJDaGFuZ2VkKT0ib25NZXRyaWNGaWx0ZXJDaGFuZ2VkKCRldmVudCkiXG4gICAgPjwvcnVucy10YWJsZS1jb21wb25lbnQ+XG4gICcsaG9zdDp7IltjbGFzcy5mbGV4LWxheW91dF0iOiJ1c2VGbGV4aWJsZUxheW91dCJ9LHN0eWxlczpbIlxuICAgICAgOmhvc3QuZmxleC1sYXlvdXQge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgfVxuXG4gICAgICA6aG9zdC5mbGV4LWxheW91dCA+IHJ1bnMtdGFibGUtY29tcG9uZW50IHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICB9XG4gICAgIl0sY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmlTfV19KSx7dXNlRmxleGlibGVMYXlvdXQ6W3t0eXBlOlJffV0sdXNlUGFnaW5hdGlvbjpbe3R5cGU6Ul99XSxjb2x1bW5zOlt7dHlwZTpSX31dLGV4cGVyaW1lbnRJZHM6W3t0eXBlOlJffV0sc2hvd0hwYXJhbXNBbmRNZXRyaWNzOlt7dHlwZTpSX31dfSk7Y2xhc3MgaDR7fWg0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxoNCl9LGg0Lsm1Y21wPXNvKHt0eXBlOmg0LHNlbGVjdG9yczpbWyJydW5zLXNlbGVjdG9yLWNvbXBvbmVudCJdXSxpbnB1dHM6e2V4cGVyaW1lbnRJZHM6ImV4cGVyaW1lbnRJZHMiLHNob3dIcGFyYW1zQW5kTWV0cmljczoic2hvd0hwYXJhbXNBbmRNZXRyaWNzIixjb2x1bW5zOiJjb2x1bW5zIn0sZGVjbHM6MSx2YXJzOjQsY29uc3RzOltbMywidXNlRmxleGlibGVMYXlvdXQiLCJjb2x1bW5zIiwiZXhwZXJpbWVudElkcyIsInNob3dIcGFyYW1zQW5kTWV0cmljcyJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiZ2ZigwLCJydW5zLXRhYmxlIiwwKSwyJmUmJmJmKCJ1c2VGbGV4aWJsZUxheW91dCIsITApKCJjb2x1bW5zIixuLmNvbHVtbnMpKCJleHBlcmltZW50SWRzIixuLmV4cGVyaW1lbnRJZHMpKCJzaG93SHBhcmFtc0FuZE1ldHJpY3MiLG4uc2hvd0hwYXJhbXNBbmRNZXRyaWNzKX0sZGlyZWN0aXZlczpbZzRdLHN0eWxlczpbInJ1bnMtdGFibGVbX25nY29udGVudC0lQ09NUCVdIHtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgfSJdLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihoNCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJydW5zLXNlbGVjdG9yLWNvbXBvbmVudCIsdGVtcGxhdGU6J1xuICAgIDxydW5zLXRhYmxlXG4gICAgICBbdXNlRmxleGlibGVMYXlvdXRdPSJ0cnVlIlxuICAgICAgW2NvbHVtbnNdPSJjb2x1bW5zIlxuICAgICAgW2V4cGVyaW1lbnRJZHNdPSJleHBlcmltZW50SWRzIlxuICAgICAgW3Nob3dIcGFyYW1zQW5kTWV0cmljc109InNob3dIcGFyYW1zQW5kTWV0cmljcyJcbiAgICA+PC9ydW5zLXRhYmxlPlxuICAnLHN0eWxlczpbIlxuICAgICAgcnVucy10YWJsZSB7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgIH1cbiAgICAiXSxjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNofV19XSxudWxsLHtleHBlcmltZW50SWRzOlt7dHlwZTpSX31dLHNob3dIcGFyYW1zQW5kTWV0cmljczpbe3R5cGU6Ul99XSxjb2x1bW5zOlt7dHlwZTpSX31dfSk7Y2xhc3MgYjR7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMuZXhwZXJpbWVudElkcyQ9dGhpcy5zdG9yZS5zZWxlY3QoeFIpLnBpcGUoVnQoKHQ9Pm51bGwhPXQ/dDpbXSkpKSx0aGlzLmNvbHVtbnMkPXRoaXMuc3RvcmUuc2VsZWN0KHhSKS5waXBlKFZ0KCh0PT5beDAuQ0hFQ0tCT1gseDAuUlVOX05BTUUsdCYmdC5sZW5ndGg+MT94MC5FWFBFUklNRU5UX05BTUU6bnVsbCx4MC5SVU5fQ09MT1JdLmZpbHRlcigodD0+bnVsbCE9PXQpKSkpKX19YjQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGI0KShnZihpUykpfSxiNC7JtWNtcD1zbyh7dHlwZTpiNCxzZWxlY3RvcnM6W1sicnVucy1zZWxlY3RvciJdXSxpbnB1dHM6e3Nob3dIcGFyYW1zQW5kTWV0cmljczoic2hvd0hwYXJhbXNBbmRNZXRyaWNzIn0sZGVjbHM6Myx2YXJzOjcsY29uc3RzOltbMywiZXhwZXJpbWVudElkcyIsImNvbHVtbnMiLCJzaG93SHBhcmFtc0FuZE1ldHJpY3MiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKHZmKDAsInJ1bnMtc2VsZWN0b3ItY29tcG9uZW50IiwwKSxfeSgxLCJhc3luYyIpLF95KDIsImFzeW5jIikpLDImZSYmYmYoImV4cGVyaW1lbnRJZHMiLEN5KDEsMyxuLmV4cGVyaW1lbnRJZHMkKSkoImNvbHVtbnMiLEN5KDIsNSxuLmNvbHVtbnMkKSkoInNob3dIcGFyYW1zQW5kTWV0cmljcyIsbi5zaG93SHBhcmFtc0FuZE1ldHJpY3MpfSxkaXJlY3RpdmVzOltoNF0scGlwZXM6W1Z2XSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGI0LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6InJ1bnMtc2VsZWN0b3IiLHRlbXBsYXRlOidcbiAgICA8cnVucy1zZWxlY3Rvci1jb21wb25lbnRcbiAgICAgIFtleHBlcmltZW50SWRzXT0iZXhwZXJpbWVudElkcyQgfCBhc3luYyJcbiAgICAgIFtjb2x1bW5zXT0iY29sdW1ucyQgfCBhc3luYyJcbiAgICAgIFtzaG93SHBhcmFtc0FuZE1ldHJpY3NdPSJzaG93SHBhcmFtc0FuZE1ldHJpY3MiXG4gICAgPjwvcnVucy1zZWxlY3Rvci1jb21wb25lbnQ+XG4gICcsY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmlTfV19KSx7c2hvd0hwYXJhbXNBbmRNZXRyaWNzOlt7dHlwZTpSX31dfSk7Y29uc3QgeTQ9bmV3IFdlYWtNYXA7Y2xhc3MgXzR7Y29uc3RydWN0b3IodCxlKXt0aGlzLnJvb3Q9dCx0aGlzLmJ1ZmZlcj1lLHRoaXMuZGVzdHJveWVkVGFyZ2V0cz1uZXcgV2Vha1NldH1pbml0aWFsaXplKHQpe3ZhciBlO2lmKHRoaXMuaW50ZXJzZWN0aW9uT2JzZXJ2ZXIpcmV0dXJuO3RoaXMuaW50ZXJzZWN0aW9uQ2FsbGJhY2s9dDtjb25zdCBuPXt0aHJlc2hvbGQ6MCxyb290Om51bGwhPT0oZT10aGlzLnJvb3QpJiZ2b2lkIDAhPT1lP2U6bnVsbH07dGhpcy5idWZmZXImJihuLnJvb3RNYXJnaW49dGhpcy5idWZmZXIpLHRoaXMuaW50ZXJzZWN0aW9uT2JzZXJ2ZXI9bmV3IEludGVyc2VjdGlvbk9ic2VydmVyKHRoaXMub25DYXJkSW50ZXJzZWN0aW9uLmJpbmQodGhpcyksbil9YWRkKHQpe3RoaXMuZW5zdXJlSW5pdGlhbGl6ZWQoKSYmdGhpcy5pbnRlcnNlY3Rpb25PYnNlcnZlci5vYnNlcnZlKHQpfXdpbGxEZXN0cm95KHQpe3RoaXMuZW5zdXJlSW5pdGlhbGl6ZWQoKSYmdGhpcy5kZXN0cm95ZWRUYXJnZXRzLmFkZCh0KX1lbnN1cmVJbml0aWFsaXplZCgpe2lmKCF0aGlzLmludGVyc2VjdGlvbk9ic2VydmVyKXRocm93IG5ldyBFcnJvcigiQ2FyZE9ic2VydmVyIG11c3QgYmUgaW5pdGlhbGl6ZWQgYmVmb3JlIHVzZSIpO3JldHVybiEwfW9uQ2FyZEludGVyc2VjdGlvbih0KXt0LnNvcnQoKCh0LGUpPT50LnRpbWUtZS50aW1lKSk7Y29uc3QgZT1uZXcgU2V0LG49bmV3IFNldDtmb3IoY29uc3R7aXNJbnRlcnNlY3Rpbmc6byx0YXJnZXQ6aX1vZiB0KW8/KGUuYWRkKGkpLG4uZGVsZXRlKGkpKTooZS5kZWxldGUoaSksbi5hZGQoaSkpLHRoaXMuZGVzdHJveWVkVGFyZ2V0cy5oYXMoaSkmJiFvJiYodGhpcy5kZXN0cm95ZWRUYXJnZXRzLmRlbGV0ZShpKSx0aGlzLmludGVyc2VjdGlvbk9ic2VydmVyLnVub2JzZXJ2ZShpKSk7dGhpcy5pbnRlcnNlY3Rpb25DYWxsYmFjayhlLG4pfW9uQ2FyZEludGVyc2VjdGlvbkZvclRlc3QodCl7dGhpcy5vbkNhcmRJbnRlcnNlY3Rpb24odCl9fWNsYXNzIEM0e2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5ob3N0PXQsdGhpcy5zdG9yZT1lfW9uQ2FyZEludGVyc2VjdGlvbih0LGUpe2NvbnN0IG49Wy4uLnRdLm1hcCgodD0+e2NvbnN0IGU9eTQuZ2V0KHQpO2lmKCFlKXRocm93IG5ldyBFcnJvcigiQSBDYXJkT2JzZXJ2ZXIgZWxlbWVudCBtdXN0IGhhdmUgYW4gYXNzb2NpYXRlZCBlbGVtZW50IGlkIGFuZCBjYXJkIGlkLiIpO3JldHVybntlbGVtZW50SWQ6ZS5lbGVtZW50SWQsY2FyZElkOmUuY2FyZElkfX0pKSxvPVsuLi5lXS5tYXAoKHQ9Pntjb25zdCBlPXk0LmdldCh0KTtpZighZSl0aHJvdyBuZXcgRXJyb3IoIkEgQ2FyZE9ic2VydmVyIGVsZW1lbnQgbXVzdCBoYXZlIGFuIGFzc29jaWF0ZWQgZWxlbWVudCBpZCBhbmQgY2FyZCBpZC4iKTtyZXR1cm57ZWxlbWVudElkOmUuZWxlbWVudElkLGNhcmRJZDplLmNhcmRJZH19KSk7dGhpcy5zdG9yZS5kaXNwYXRjaChFQSh7ZW50ZXJlZENhcmRzOm4sZXhpdGVkQ2FyZHM6b30pKX1uZ09uSW5pdCgpe2NvbnN0IHQ9dGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQ7eTQuc2V0KHQse2VsZW1lbnRJZDooYjArKyxTeW1ib2woYjApKSxjYXJkSWQ6dGhpcy5jYXJkSWR9KSx0aGlzLmNhcmRPYnNlcnZlcnx8KHRoaXMuY2FyZE9ic2VydmVyPW5ldyBfNCksdGhpcy5jYXJkT2JzZXJ2ZXIuaW5pdGlhbGl6ZSh0aGlzLm9uQ2FyZEludGVyc2VjdGlvbi5iaW5kKHRoaXMpKSx0aGlzLmNhcmRPYnNlcnZlci5hZGQodCl9bmdPbkRlc3Ryb3koKXt0aGlzLmNhcmRPYnNlcnZlciYmdGhpcy5jYXJkT2JzZXJ2ZXIud2lsbERlc3Ryb3kodGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQpfWhvc3RGb3JUZXN0KCl7cmV0dXJuIHRoaXMuaG9zdH19ZnVuY3Rpb24gTTQodCxlKXsxJnQmJnZmKDAsIm1hdC1pY29uIiw3KX1mdW5jdGlvbiB2NCh0LGUpe2lmKDEmdCYmKENmKDAsIm1hdC1vcHRpb24iLDgpLFB1KDEpLE1mKCkpLDImdCl7Y29uc3QgdD1lLiRpbXBsaWNpdDtiZigidmFsdWUiLHQpLHltKCJ0aXRsZSIsdCksRGMoMSksd3UodCl9fWZ1bmN0aW9uIHg0KHQsZSl7aWYoMSZ0JiYoQ2YoMCwiZGl2Iiw5KSxDZigxLCJlbSIpLFB1KDIpLF95KDMsIm51bWJlciIpLE1mKCksTWYoKSksMiZ0KXtjb25zdCB0PXpmKCk7RGMoMiksa3UoImFuZCAiLEN5KDMsMSx0LmNvbXBsZXRpb25zLmxlbmd0aC0yNSksIiBtb3JlIHRhZ3MgbWF0Y2hlZCIpfX1DNC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8QzQpKGdmKEtoKSxnZihpUykpfSxDNC7JtWRpcj1obyh7dHlwZTpDNCxzZWxlY3RvcnM6W1siIiwiY2FyZExhenlMb2FkZXIiLCIiXV0saW5wdXRzOntjYXJkSWQ6WyJjYXJkTGF6eUxvYWRlciIsImNhcmRJZCJdLGNhcmRPYnNlcnZlcjoiY2FyZE9ic2VydmVyIn19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEM0LFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6IltjYXJkTGF6eUxvYWRlcl0ifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6S2h9LHt0eXBlOmlTfV19KSx7Y2FyZElkOlt7dHlwZTpSXyxhcmdzOlsiY2FyZExhenlMb2FkZXIiXX1dLGNhcmRPYnNlcnZlcjpbe3R5cGU6Ul99XX0pO2NsYXNzIE80e2NvbnN0cnVjdG9yKCl7dGhpcy5vblJlZ2V4RmlsdGVyVmFsdWVDaGFuZ2U9bmV3IFN5fW9uQ29tcGxldGlvbkFjY2VwdGVkKHQpe3RoaXMub25SZWdleEZpbHRlclZhbHVlQ2hhbmdlLmVtaXQoKGZ1bmN0aW9uIGUodCl7cmV0dXJuIHQucmVwbGFjZShrViwiXFwkJiIpfSkodCkpfX1PNC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8TzQpfSxPNC7JtWNtcD1zbyh7dHlwZTpPNCxzZWxlY3RvcnM6W1sibWV0cmljcy10YWctZmlsdGVyLWNvbXBvbmVudCJdXSxob3N0VmFyczoyLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MiZlJiZjdSgidmFsaWQiLG4uaXNSZWdleEZpbHRlclZhbGlkKX0saW5wdXRzOntyZWdleEZpbHRlclZhbHVlOiJyZWdleEZpbHRlclZhbHVlIixpc1JlZ2V4RmlsdGVyVmFsaWQ6ImlzUmVnZXhGaWx0ZXJWYWxpZCIsY29tcGxldGlvbnM6ImNvbXBsZXRpb25zIn0sb3V0cHV0czp7b25SZWdleEZpbHRlclZhbHVlQ2hhbmdlOiJvblJlZ2V4RmlsdGVyVmFsdWVDaGFuZ2UifSxkZWNsczo3LHZhcnM6NSxjb25zdHM6W1sxLCJ0YWctZmlsdGVyIl0sWyJwbGFjZWhvbGRlciIsIkZpbHRlciB0YWdzIChyZWdleCkiLDMsInZhbHVlIiwibWF0QXV0b2NvbXBsZXRlIiwiaW5wdXQiXSxbInN2Z0ljb24iLCJlcnJvcl8yNHB4IiwiY2xhc3MiLCJlcnJvci1pY29uIiwidGl0bGUiLCJJbnZhbGlkIHJlZ2V4IGZpbHRlci4gVGhlIHJlc3VsdCBtYXkgYmUgc3RhbGUuIiw0LCJuZ0lmIl0sWzEsInRhZy1vcHRpb25zIiwzLCJvcHRpb25TZWxlY3RlZCJdLFsiZmlsdGVyTWF0Y2hlcyIsIm1hdEF1dG9jb21wbGV0ZSJdLFsiY2xhc3MiLCJvcHRpb24iLDMsInZhbHVlIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbImNsYXNzIiwiYW5kLW1vcmUiLDQsIm5nSWYiXSxbInN2Z0ljb24iLCJlcnJvcl8yNHB4IiwidGl0bGUiLCJJbnZhbGlkIHJlZ2V4IGZpbHRlci4gVGhlIHJlc3VsdCBtYXkgYmUgc3RhbGUuIiwxLCJlcnJvci1pY29uIl0sWzEsIm9wdGlvbiIsMywidmFsdWUiXSxbMSwiYW5kLW1vcmUiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmKENmKDAsImRpdiIsMCksQ2YoMSwidGItZmlsdGVyLWlucHV0IiwxKSxSZigiaW5wdXQiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uUmVnZXhGaWx0ZXJWYWx1ZUNoYW5nZS5lbWl0KGUudGFyZ2V0LnZhbHVlKX0pKSxNZigpLEhtKDIsTTQsMSwwLCJtYXQtaWNvbiIsMiksTWYoKSxDZigzLCJtYXQtYXV0b2NvbXBsZXRlIiwzLDQpLFJmKCJvcHRpb25TZWxlY3RlZCIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25Db21wbGV0aW9uQWNjZXB0ZWQoZS5vcHRpb24udmFsdWUpfSkpLEhtKDUsdjQsMiwzLCJtYXQtb3B0aW9uIiw1KSxIbSg2LHg0LDQsMywiZGl2Iiw2KSxNZigpKSwyJmUpe2NvbnN0IHQ9Rm0oNCk7RGMoMSksYmYoInZhbHVlIixuLnJlZ2V4RmlsdGVyVmFsdWUpKCJtYXRBdXRvY29tcGxldGUiLHQpLERjKDEpLGJmKCJuZ0lmIiwhbi5pc1JlZ2V4RmlsdGVyVmFsaWQpLERjKDMpLGJmKCJuZ0Zvck9mIixudWxsPT1uLmNvbXBsZXRpb25zP251bGw6bi5jb21wbGV0aW9ucy5zbGljZSgwLDI1KSksRGMoMSksYmYoIm5nSWYiLChudWxsPT1uLmNvbXBsZXRpb25zP251bGw6bi5jb21wbGV0aW9ucy5sZW5ndGgpPjI1KX19LGRpcmVjdGl2ZXM6W1ozLFB2LEYzLHh2LE1xLFBMXSxwaXBlczpbJHZdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgdHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS50YWctZmlsdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246cmVsYXRpdmV9dGItZmlsdGVyLWlucHV0W19uZ2NvbnRlbnQtJUNPTVAlXXtmbGV4LWdyb3c6MX1bX25naG9zdC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Ym9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVde2NvbG9yOiNmZmZ9W19uZ2hvc3QtJUNPTVAlXTpub3QoLnZhbGlkKXtjb2xvcjojYzYyODI4fVtfbmdob3N0LSVDT01QJV06bm90KC52YWxpZCkgICAuZXJyb3ItaWNvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2M2MjgyODtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowfSAgLnRhZy1vcHRpb25zIC5vcHRpb24sICAgLnRhZy1vcHRpb25zIC5hbmQtbW9yZXstd2Via2l0LWJveC1vcmllbnQ6dmVydGljYWw7LXdlYmtpdC1saW5lLWNsYW1wOjM7ZGlzcGxheTotd2Via2l0LWJveDtmb250LXNpemU6MTRweDtsaW5lLWhlaWdodDoxLjQ7cGFkZGluZzo4cHggMTZweH0gIC50YWctb3B0aW9ucyAuYW5kLW1vcmV7Y29sb3I6IzYxNjE2MX1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAgIC50YWctb3B0aW9ucyAuYW5kLW1vcmUsIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgICAgLnRhZy1vcHRpb25zIC5hbmQtbW9yZXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX0nXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoTzQsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoibWV0cmljcy10YWctZmlsdGVyLWNvbXBvbmVudCIsdGVtcGxhdGVVcmw6ImZpbHRlcl9pbnB1dF9jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsiZmlsdGVyX2lucHV0X2NvbXBvbmVudC5jc3MiXSxjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNofV19XSxudWxsLHtyZWdleEZpbHRlclZhbHVlOlt7dHlwZTpSX31dLGlzUmVnZXhGaWx0ZXJWYWxpZDpbe3R5cGU6QV8sYXJnczpbImNsYXNzLnZhbGlkIl19LHt0eXBlOlJffV0sY29tcGxldGlvbnM6W3t0eXBlOlJffV0sb25SZWdleEZpbHRlclZhbHVlQ2hhbmdlOlt7dHlwZTpFX31dfSk7Y2xhc3MgUDR7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMudGFnRmlsdGVyJD10aGlzLnN0b3JlLnNlbGVjdChQeiksdGhpcy5pc1RhZ0ZpbHRlclJlZ2V4VmFsaWQkPXRoaXMudGFnRmlsdGVyJC5waXBlKFZ0KCh0PT57dHJ5e3JldHVybiBuZXcgUmVnRXhwKHQpLCEwfWNhdGNoKHQpe3JldHVybiExfX0pKSksdGhpcy5jb21wbGV0aW9ucyQ9dGhpcy5zdG9yZS5zZWxlY3QoYXopLnBpcGUoX2UodGhpcy5zdG9yZS5zZWxlY3QoQXopKSxWdCgoKFt0LGVdKT0+dC5maWx0ZXIoKCh7cGx1Z2luOnR9KT0+IWUuc2l6ZXx8ZS5oYXModCkpKS5tYXAoKCh7dGFnOnR9KT0+dCkpKSksVnQoKHQ9PlsuLi5uZXcgU2V0KHQpXSkpLFZ0KCh0PT50LnNvcnQoWCQpKSksX2UodGhpcy5zdG9yZS5zZWxlY3QoUHopKSxWdCgoKFt0LGVdKT0+e3RyeXtyZXR1cm5bdCxuZXcgUmVnRXhwKGUsImkiKV19Y2F0Y2goZSl7cmV0dXJuW3QsbnVsbF19fSkpLHVlKCgoWyx0XSk9Pm51bGwhPT10KSksVnQoKChbdCxlXSk9PnQuZmlsdGVyKCh0PT5lLnRlc3QodCkpKSkpKX1vblRhZ0ZpbHRlckNoYW5nZSh0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKFRBKHt0YWdGaWx0ZXI6dH0pKX19UDQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFA0KShnZihpUykpfSxQNC7JtWNtcD1zbyh7dHlwZTpQNCxzZWxlY3RvcnM6W1sibWV0cmljcy10YWctZmlsdGVyIl1dLGRlY2xzOjQsdmFyczo5LGNvbnN0czpbWzMsInJlZ2V4RmlsdGVyVmFsdWUiLCJpc1JlZ2V4RmlsdGVyVmFsaWQiLCJjb21wbGV0aW9ucyIsIm9uUmVnZXhGaWx0ZXJWYWx1ZUNoYW5nZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoQ2YoMCwibWV0cmljcy10YWctZmlsdGVyLWNvbXBvbmVudCIsMCksUmYoIm9uUmVnZXhGaWx0ZXJWYWx1ZUNoYW5nZSIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25UYWdGaWx0ZXJDaGFuZ2UoZSl9KSksX3koMSwiYXN5bmMiKSxfeSgyLCJhc3luYyIpLF95KDMsImFzeW5jIiksTWYoKSksMiZlJiZiZigicmVnZXhGaWx0ZXJWYWx1ZSIsQ3koMSwzLG4udGFnRmlsdGVyJCkpKCJpc1JlZ2V4RmlsdGVyVmFsaWQiLEN5KDIsNSxuLmlzVGFnRmlsdGVyUmVnZXhWYWxpZCQpKSgiY29tcGxldGlvbnMiLEN5KDMsNyxuLmNvbXBsZXRpb25zJCkpfSxkaXJlY3RpdmVzOltPNF0scGlwZXM6W1Z2XSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFA0LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Im1ldHJpY3MtdGFnLWZpbHRlciIsdGVtcGxhdGU6J1xuICAgIDxtZXRyaWNzLXRhZy1maWx0ZXItY29tcG9uZW50XG4gICAgICBbcmVnZXhGaWx0ZXJWYWx1ZV09InRhZ0ZpbHRlciQgfCBhc3luYyJcbiAgICAgIFtpc1JlZ2V4RmlsdGVyVmFsaWRdPSJpc1RhZ0ZpbHRlclJlZ2V4VmFsaWQkIHwgYXN5bmMiXG4gICAgICBbY29tcGxldGlvbnNdPSJjb21wbGV0aW9ucyQgfCBhc3luYyJcbiAgICAgIChvblJlZ2V4RmlsdGVyVmFsdWVDaGFuZ2UpPSJvblRhZ0ZpbHRlckNoYW5nZSgkZXZlbnQpIlxuICAgID48L21ldHJpY3MtdGFnLWZpbHRlci1jb21wb25lbnQ+XG4gICcsY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmlTfV19KSxudWxsKTtjb25zdCB3ND1bImJ1dHRvbiJdLGs0PW5ldyBlcigiTUFUX0JVVFRPTl9UT0dHTEVfREVGQVVMVF9PUFRJT05TIiksUzQ9bmV3IGVyKCJNYXRCdXR0b25Ub2dnbGVHcm91cCIpLEQ0PXtwcm92aWRlOnhVLHVzZUV4aXN0aW5nOiRlKCgoKT0+QTQpKSxtdWx0aTohMH07bGV0IFI0PTA7Y2xhc3MgRTR7Y29uc3RydWN0b3IodCxlKXt0aGlzLnNvdXJjZT10LHRoaXMudmFsdWU9ZX19Y2xhc3MgQTR7Y29uc3RydWN0b3IodCxlKXt0aGlzLl9jaGFuZ2VEZXRlY3Rvcj10LHRoaXMuX3ZlcnRpY2FsPSExLHRoaXMuX211bHRpcGxlPSExLHRoaXMuX2Rpc2FibGVkPSExLHRoaXMuX2NvbnRyb2xWYWx1ZUFjY2Vzc29yQ2hhbmdlRm49KCk9Pnt9LHRoaXMuX29uVG91Y2hlZD0oKT0+e30sdGhpcy5fbmFtZT0ibWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtIitSNCsrLHRoaXMudmFsdWVDaGFuZ2U9bmV3IFN5LHRoaXMuY2hhbmdlPW5ldyBTeSx0aGlzLmFwcGVhcmFuY2U9ZSYmZS5hcHBlYXJhbmNlP2UuYXBwZWFyYW5jZToic3RhbmRhcmQifWdldCBuYW1lKCl7cmV0dXJuIHRoaXMuX25hbWV9c2V0IG5hbWUodCl7dGhpcy5fbmFtZT10LHRoaXMuX2J1dHRvblRvZ2dsZXMmJnRoaXMuX2J1dHRvblRvZ2dsZXMuZm9yRWFjaCgodD0+e3QubmFtZT10aGlzLl9uYW1lLHQuX21hcmtGb3JDaGVjaygpfSkpfWdldCB2ZXJ0aWNhbCgpe3JldHVybiB0aGlzLl92ZXJ0aWNhbH1zZXQgdmVydGljYWwodCl7dGhpcy5fdmVydGljYWw9ZUgodCl9Z2V0IHZhbHVlKCl7Y29uc3QgdD10aGlzLl9zZWxlY3Rpb25Nb2RlbD90aGlzLl9zZWxlY3Rpb25Nb2RlbC5zZWxlY3RlZDpbXTtyZXR1cm4gdGhpcy5tdWx0aXBsZT90Lm1hcCgodD0+dC52YWx1ZSkpOnRbMF0/dFswXS52YWx1ZTp2b2lkIDB9c2V0IHZhbHVlKHQpe3RoaXMuX3NldFNlbGVjdGlvbkJ5VmFsdWUodCksdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMudmFsdWUpfWdldCBzZWxlY3RlZCgpe2NvbnN0IHQ9dGhpcy5fc2VsZWN0aW9uTW9kZWw/dGhpcy5fc2VsZWN0aW9uTW9kZWwuc2VsZWN0ZWQ6W107cmV0dXJuIHRoaXMubXVsdGlwbGU/dDp0WzBdfHxudWxsfWdldCBtdWx0aXBsZSgpe3JldHVybiB0aGlzLl9tdWx0aXBsZX1zZXQgbXVsdGlwbGUodCl7dGhpcy5fbXVsdGlwbGU9ZUgodCl9Z2V0IGRpc2FibGVkKCl7cmV0dXJuIHRoaXMuX2Rpc2FibGVkfXNldCBkaXNhYmxlZCh0KXt0aGlzLl9kaXNhYmxlZD1lSCh0KSx0aGlzLl9idXR0b25Ub2dnbGVzJiZ0aGlzLl9idXR0b25Ub2dnbGVzLmZvckVhY2goKHQ9PnQuX21hcmtGb3JDaGVjaygpKSl9bmdPbkluaXQoKXt0aGlzLl9zZWxlY3Rpb25Nb2RlbD1uZXcgakwodGhpcy5tdWx0aXBsZSx2b2lkIDAsITEpfW5nQWZ0ZXJDb250ZW50SW5pdCgpe3RoaXMuX3NlbGVjdGlvbk1vZGVsLnNlbGVjdCguLi50aGlzLl9idXR0b25Ub2dnbGVzLmZpbHRlcigodD0+dC5jaGVja2VkKSkpfXdyaXRlVmFsdWUodCl7dGhpcy52YWx1ZT10LHRoaXMuX2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpfXJlZ2lzdGVyT25DaGFuZ2UodCl7dGhpcy5fY29udHJvbFZhbHVlQWNjZXNzb3JDaGFuZ2VGbj10fXJlZ2lzdGVyT25Ub3VjaGVkKHQpe3RoaXMuX29uVG91Y2hlZD10fXNldERpc2FibGVkU3RhdGUodCl7dGhpcy5kaXNhYmxlZD10fV9lbWl0Q2hhbmdlRXZlbnQoKXtjb25zdCB0PXRoaXMuc2VsZWN0ZWQsZT1BcnJheS5pc0FycmF5KHQpP3RbdC5sZW5ndGgtMV06dCxuPW5ldyBFNChlLHRoaXMudmFsdWUpO3RoaXMuX2NvbnRyb2xWYWx1ZUFjY2Vzc29yQ2hhbmdlRm4obi52YWx1ZSksdGhpcy5jaGFuZ2UuZW1pdChuKX1fc3luY0J1dHRvblRvZ2dsZSh0LGUsbj0hMSxvPSExKXt0aGlzLm11bHRpcGxlfHwhdGhpcy5zZWxlY3RlZHx8dC5jaGVja2VkfHwodGhpcy5zZWxlY3RlZC5jaGVja2VkPSExKSx0aGlzLl9zZWxlY3Rpb25Nb2RlbD9lP3RoaXMuX3NlbGVjdGlvbk1vZGVsLnNlbGVjdCh0KTp0aGlzLl9zZWxlY3Rpb25Nb2RlbC5kZXNlbGVjdCh0KTpvPSEwLG8/UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKCk9PnRoaXMuX3VwZGF0ZU1vZGVsVmFsdWUobikpKTp0aGlzLl91cGRhdGVNb2RlbFZhbHVlKG4pfV9pc1NlbGVjdGVkKHQpe3JldHVybiB0aGlzLl9zZWxlY3Rpb25Nb2RlbCYmdGhpcy5fc2VsZWN0aW9uTW9kZWwuaXNTZWxlY3RlZCh0KX1faXNQcmVjaGVja2VkKHQpe3JldHVybiB2b2lkIDAhPT10aGlzLl9yYXdWYWx1ZSYmKHRoaXMubXVsdGlwbGUmJkFycmF5LmlzQXJyYXkodGhpcy5fcmF3VmFsdWUpP3RoaXMuX3Jhd1ZhbHVlLnNvbWUoKGU9Pm51bGwhPXQudmFsdWUmJmU9PT10LnZhbHVlKSk6dC52YWx1ZT09PXRoaXMuX3Jhd1ZhbHVlKX1fc2V0U2VsZWN0aW9uQnlWYWx1ZSh0KXtpZih0aGlzLl9yYXdWYWx1ZT10LHRoaXMuX2J1dHRvblRvZ2dsZXMpaWYodGhpcy5tdWx0aXBsZSYmdCl7aWYoIUFycmF5LmlzQXJyYXkodCkmJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSl0aHJvdyBFcnJvcigiVmFsdWUgbXVzdCBiZSBhbiBhcnJheSBpbiBtdWx0aXBsZS1zZWxlY3Rpb24gbW9kZS4iKTt0aGlzLl9jbGVhclNlbGVjdGlvbigpLHQuZm9yRWFjaCgodD0+dGhpcy5fc2VsZWN0VmFsdWUodCkpKX1lbHNlIHRoaXMuX2NsZWFyU2VsZWN0aW9uKCksdGhpcy5fc2VsZWN0VmFsdWUodCl9X2NsZWFyU2VsZWN0aW9uKCl7dGhpcy5fc2VsZWN0aW9uTW9kZWwuY2xlYXIoKSx0aGlzLl9idXR0b25Ub2dnbGVzLmZvckVhY2goKHQ9PnQuY2hlY2tlZD0hMSkpfV9zZWxlY3RWYWx1ZSh0KXtjb25zdCBlPXRoaXMuX2J1dHRvblRvZ2dsZXMuZmluZCgoZT0+bnVsbCE9ZS52YWx1ZSYmZS52YWx1ZT09PXQpKTtlJiYoZS5jaGVja2VkPSEwLHRoaXMuX3NlbGVjdGlvbk1vZGVsLnNlbGVjdChlKSl9X3VwZGF0ZU1vZGVsVmFsdWUodCl7dCYmdGhpcy5fZW1pdENoYW5nZUV2ZW50KCksdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMudmFsdWUpfX1BNC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8QTQpKGdmKE9iKSxnZihrNCw4KSl9LEE0Lsm1ZGlyPWhvKHt0eXBlOkE0LHNlbGVjdG9yczpbWyJtYXQtYnV0dG9uLXRvZ2dsZS1ncm91cCJdXSxjb250ZW50UXVlcmllczpmdW5jdGlvbiB0KGUsbixvKXtpZigxJmUmJmp5KG8sTjQsNSksMiZlKXtsZXQgdDtCeSh0PVV5KCkpJiYobi5fYnV0dG9uVG9nZ2xlcz10KX19LGhvc3RBdHRyczpbInJvbGUiLCJncm91cCIsMSwibWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAiXSxob3N0VmFyczo1LGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MiZlJiYoeW0oImFyaWEtZGlzYWJsZWQiLG4uZGlzYWJsZWQpLGN1KCJtYXQtYnV0dG9uLXRvZ2dsZS12ZXJ0aWNhbCIsbi52ZXJ0aWNhbCkoIm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmQiLCJzdGFuZGFyZCI9PT1uLmFwcGVhcmFuY2UpKX0saW5wdXRzOnthcHBlYXJhbmNlOiJhcHBlYXJhbmNlIixuYW1lOiJuYW1lIix2ZXJ0aWNhbDoidmVydGljYWwiLHZhbHVlOiJ2YWx1ZSIsbXVsdGlwbGU6Im11bHRpcGxlIixkaXNhYmxlZDoiZGlzYWJsZWQifSxvdXRwdXRzOnt2YWx1ZUNoYW5nZToidmFsdWVDaGFuZ2UiLGNoYW5nZToiY2hhbmdlIn0sZXhwb3J0QXM6WyJtYXRCdXR0b25Ub2dnbGVHcm91cCJdLGZlYXR1cmVzOltqaChbRDQse3Byb3ZpZGU6UzQsdXNlRXhpc3Rpbmc6QTR9XSldfSksQTQuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpPYn0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltrNF19XX1dLEE0LnByb3BEZWNvcmF0b3JzPXtfYnV0dG9uVG9nZ2xlczpbe3R5cGU6b3IsYXJnczpbJGUoKCgpPT5ONCkpLHtkZXNjZW5kYW50czohMH1dfV0sYXBwZWFyYW5jZTpbe3R5cGU6Ul99XSxuYW1lOlt7dHlwZTpSX31dLHZlcnRpY2FsOlt7dHlwZTpSX31dLHZhbHVlOlt7dHlwZTpSX31dLHZhbHVlQ2hhbmdlOlt7dHlwZTpFX31dLG11bHRpcGxlOlt7dHlwZTpSX31dLGRpc2FibGVkOlt7dHlwZTpSX31dLGNoYW5nZTpbe3R5cGU6RV99XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihBNCxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJtYXQtYnV0dG9uLXRvZ2dsZS1ncm91cCIscHJvdmlkZXJzOltENCx7cHJvdmlkZTpTNCx1c2VFeGlzdGluZzpBNH1dLGhvc3Q6e3JvbGU6Imdyb3VwIixjbGFzczoibWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAiLCJbYXR0ci5hcmlhLWRpc2FibGVkXSI6ImRpc2FibGVkIiwiW2NsYXNzLm1hdC1idXR0b24tdG9nZ2xlLXZlcnRpY2FsXSI6InZlcnRpY2FsIiwiW2NsYXNzLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmRdIjonYXBwZWFyYW5jZSA9PT0gInN0YW5kYXJkIid9LGV4cG9ydEFzOiJtYXRCdXR0b25Ub2dnbGVHcm91cCJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpPYn0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltrNF19XX1dfSkse3ZhbHVlQ2hhbmdlOlt7dHlwZTpFX31dLGNoYW5nZTpbe3R5cGU6RV99XSxhcHBlYXJhbmNlOlt7dHlwZTpSX31dLG5hbWU6W3t0eXBlOlJffV0sdmVydGljYWw6W3t0eXBlOlJffV0sdmFsdWU6W3t0eXBlOlJffV0sbXVsdGlwbGU6W3t0eXBlOlJffV0sZGlzYWJsZWQ6W3t0eXBlOlJffV0sX2J1dHRvblRvZ2dsZXM6W3t0eXBlOm9yLGFyZ3M6WyRlKCgoKT0+TjQpKSx7ZGVzY2VuZGFudHM6ITB9XX1dfSk7Y29uc3QgVDQ9SEYoY2xhc3N7fSk7Y2xhc3MgTjQgZXh0ZW5kcyBUNHtjb25zdHJ1Y3Rvcih0LGUsbixvLGksYSl7c3VwZXIoKSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZj1lLHRoaXMuX2VsZW1lbnRSZWY9bix0aGlzLl9mb2N1c01vbml0b3I9byx0aGlzLl9pc1NpbmdsZVNlbGVjdG9yPSExLHRoaXMuX2NoZWNrZWQ9ITEsdGhpcy5hcmlhTGFiZWxsZWRieT1udWxsLHRoaXMuX2Rpc2FibGVkPSExLHRoaXMuY2hhbmdlPW5ldyBTeTtjb25zdCByPU51bWJlcihpKTt0aGlzLnRhYkluZGV4PXJ8fDA9PT1yP3I6bnVsbCx0aGlzLmJ1dHRvblRvZ2dsZUdyb3VwPXQsdGhpcy5hcHBlYXJhbmNlPWEmJmEuYXBwZWFyYW5jZT9hLmFwcGVhcmFuY2U6InN0YW5kYXJkIn1nZXQgYnV0dG9uSWQoKXtyZXR1cm5gJHt0aGlzLmlkfS1idXR0b25gfWdldCBhcHBlYXJhbmNlKCl7cmV0dXJuIHRoaXMuYnV0dG9uVG9nZ2xlR3JvdXA/dGhpcy5idXR0b25Ub2dnbGVHcm91cC5hcHBlYXJhbmNlOnRoaXMuX2FwcGVhcmFuY2V9c2V0IGFwcGVhcmFuY2UodCl7dGhpcy5fYXBwZWFyYW5jZT10fWdldCBjaGVja2VkKCl7cmV0dXJuIHRoaXMuYnV0dG9uVG9nZ2xlR3JvdXA/dGhpcy5idXR0b25Ub2dnbGVHcm91cC5faXNTZWxlY3RlZCh0aGlzKTp0aGlzLl9jaGVja2VkfXNldCBjaGVja2VkKHQpe2NvbnN0IGU9ZUgodCk7ZSE9PXRoaXMuX2NoZWNrZWQmJih0aGlzLl9jaGVja2VkPWUsdGhpcy5idXR0b25Ub2dnbGVHcm91cCYmdGhpcy5idXR0b25Ub2dnbGVHcm91cC5fc3luY0J1dHRvblRvZ2dsZSh0aGlzLHRoaXMuX2NoZWNrZWQpLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpKX1nZXQgZGlzYWJsZWQoKXtyZXR1cm4gdGhpcy5fZGlzYWJsZWR8fHRoaXMuYnV0dG9uVG9nZ2xlR3JvdXAmJnRoaXMuYnV0dG9uVG9nZ2xlR3JvdXAuZGlzYWJsZWR9c2V0IGRpc2FibGVkKHQpe3RoaXMuX2Rpc2FibGVkPWVIKHQpfW5nT25Jbml0KCl7Y29uc3QgdD10aGlzLmJ1dHRvblRvZ2dsZUdyb3VwO3RoaXMuX2lzU2luZ2xlU2VsZWN0b3I9dCYmIXQubXVsdGlwbGUsdGhpcy5pZD10aGlzLmlkfHwibWF0LWJ1dHRvbi10b2dnbGUtIitSNCsrLHRoaXMuX2lzU2luZ2xlU2VsZWN0b3ImJih0aGlzLm5hbWU9dC5uYW1lKSx0JiYodC5faXNQcmVjaGVja2VkKHRoaXMpP3RoaXMuY2hlY2tlZD0hMDp0Ll9pc1NlbGVjdGVkKHRoaXMpIT09dGhpcy5fY2hlY2tlZCYmdC5fc3luY0J1dHRvblRvZ2dsZSh0aGlzLHRoaXMuX2NoZWNrZWQpKX1uZ0FmdGVyVmlld0luaXQoKXt0aGlzLl9mb2N1c01vbml0b3IubW9uaXRvcih0aGlzLl9lbGVtZW50UmVmLCEwKX1uZ09uRGVzdHJveSgpe2NvbnN0IHQ9dGhpcy5idXR0b25Ub2dnbGVHcm91cDt0aGlzLl9mb2N1c01vbml0b3Iuc3RvcE1vbml0b3JpbmcodGhpcy5fZWxlbWVudFJlZiksdCYmdC5faXNTZWxlY3RlZCh0aGlzKSYmdC5fc3luY0J1dHRvblRvZ2dsZSh0aGlzLCExLCExLCEwKX1mb2N1cyh0KXt0aGlzLl9idXR0b25FbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXModCl9X29uQnV0dG9uQ2xpY2soKXtjb25zdCB0PSEhdGhpcy5faXNTaW5nbGVTZWxlY3Rvcnx8IXRoaXMuX2NoZWNrZWQ7dCE9PXRoaXMuX2NoZWNrZWQmJih0aGlzLl9jaGVja2VkPXQsdGhpcy5idXR0b25Ub2dnbGVHcm91cCYmKHRoaXMuYnV0dG9uVG9nZ2xlR3JvdXAuX3N5bmNCdXR0b25Ub2dnbGUodGhpcyx0aGlzLl9jaGVja2VkLCEwKSx0aGlzLmJ1dHRvblRvZ2dsZUdyb3VwLl9vblRvdWNoZWQoKSkpLHRoaXMuY2hhbmdlLmVtaXQobmV3IEU0KHRoaXMsdGhpcy52YWx1ZSkpfV9tYXJrRm9yQ2hlY2soKXt0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKX19TjQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fE40KShnZihTNCw4KSxnZihPYiksZ2YoS2gpLGdmKGZGKSxHYSgidGFiaW5kZXgiKSxnZihrNCw4KSl9LE40Lsm1Y21wPXNvKHt0eXBlOk40LHNlbGVjdG9yczpbWyJtYXQtYnV0dG9uLXRvZ2dsZSJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmVnkodzQsNSksMiZlKXtsZXQgdDtCeSh0PVV5KCkpJiYobi5fYnV0dG9uRWxlbWVudD10LmZpcnN0KX19LGhvc3RBdHRyczpbInJvbGUiLCJwcmVzZW50YXRpb24iLDEsIm1hdC1idXR0b24tdG9nZ2xlIl0saG9zdFZhcnM6MTIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJlJmKCJmb2N1cyIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5mb2N1cygpfSkpLDImZSYmKHltKCJhcmlhLWxhYmVsIixudWxsKSgiYXJpYS1sYWJlbGxlZGJ5IixudWxsKSgiaWQiLG4uaWQpKCJuYW1lIixudWxsKSxjdSgibWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhbG9uZSIsIW4uYnV0dG9uVG9nZ2xlR3JvdXApKCJtYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2VkIixuLmNoZWNrZWQpKCJtYXQtYnV0dG9uLXRvZ2dsZS1kaXNhYmxlZCIsbi5kaXNhYmxlZCkoIm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQiLCJzdGFuZGFyZCI9PT1uLmFwcGVhcmFuY2UpKX0saW5wdXRzOntkaXNhYmxlUmlwcGxlOiJkaXNhYmxlUmlwcGxlIixhcmlhTGFiZWxsZWRieTpbImFyaWEtbGFiZWxsZWRieSIsImFyaWFMYWJlbGxlZGJ5Il0sdGFiSW5kZXg6InRhYkluZGV4IixhcHBlYXJhbmNlOiJhcHBlYXJhbmNlIixjaGVja2VkOiJjaGVja2VkIixkaXNhYmxlZDoiZGlzYWJsZWQiLGlkOiJpZCIsbmFtZToibmFtZSIsYXJpYUxhYmVsOlsiYXJpYS1sYWJlbCIsImFyaWFMYWJlbCJdLHZhbHVlOiJ2YWx1ZSJ9LG91dHB1dHM6e2NoYW5nZToiY2hhbmdlIn0sZXhwb3J0QXM6WyJtYXRCdXR0b25Ub2dnbGUiXSxmZWF0dXJlczpbUXBdLG5nQ29udGVudFNlbGVjdG9yczpbIioiXSxkZWNsczo2LHZhcnM6OSxjb25zdHM6W1sidHlwZSIsImJ1dHRvbiIsMSwibWF0LWJ1dHRvbi10b2dnbGUtYnV0dG9uIiwibWF0LWZvY3VzLWluZGljYXRvciIsMywiaWQiLCJkaXNhYmxlZCIsImNsaWNrIl0sWyJidXR0b24iLCIiXSxbMSwibWF0LWJ1dHRvbi10b2dnbGUtbGFiZWwtY29udGVudCJdLFsxLCJtYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5Il0sWyJtYXRSaXBwbGUiLCIiLDEsIm1hdC1idXR0b24tdG9nZ2xlLXJpcHBsZSIsMywibWF0UmlwcGxlVHJpZ2dlciIsIm1hdFJpcHBsZURpc2FibGVkIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJihIZigpLENmKDAsImJ1dHRvbiIsMCwxKSxSZigiY2xpY2siLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4uX29uQnV0dG9uQ2xpY2soKX0pKSxDZigyLCJzcGFuIiwyKSxGZigzKSxNZigpLE1mKCksdmYoNCwic3BhbiIsMyksdmYoNSwic3BhbiIsNCkpLDImZSl7Y29uc3QgdD1GbSgxKTtiZigiaWQiLG4uYnV0dG9uSWQpKCJkaXNhYmxlZCIsbi5kaXNhYmxlZHx8bnVsbCkseW0oInRhYmluZGV4IixuLmRpc2FibGVkPy0xOm4udGFiSW5kZXgpKCJhcmlhLXByZXNzZWQiLG4uY2hlY2tlZCkoIm5hbWUiLG4ubmFtZXx8bnVsbCkoImFyaWEtbGFiZWwiLG4uYXJpYUxhYmVsKSgiYXJpYS1sYWJlbGxlZGJ5IixuLmFyaWFMYWJlbGxlZGJ5KSxEYyg1KSxiZigibWF0UmlwcGxlVHJpZ2dlciIsdCkoIm1hdFJpcHBsZURpc2FibGVkIixuLmRpc2FibGVSaXBwbGV8fG4uZGlzYWJsZWQpfX0sZGlyZWN0aXZlczpbbUxdLHN0eWxlczpbIi5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lLC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cHtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmlubGluZS1mbGV4O2ZsZXgtZGlyZWN0aW9uOnJvdzt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO2JvcmRlci1yYWRpdXM6MnB4Oy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lLC5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1idXR0b24tdG9nZ2xlLWdyb3Vwe291dGxpbmU6c29saWQgMXB4fS5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQsLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmR7Ym9yZGVyLXJhZGl1czo0cHh9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhbG9uZS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkLC5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmR7b3V0bGluZTowfS5tYXQtYnV0dG9uLXRvZ2dsZS12ZXJ0aWNhbHtmbGV4LWRpcmVjdGlvbjpjb2x1bW59Lm1hdC1idXR0b24tdG9nZ2xlLXZlcnRpY2FsIC5tYXQtYnV0dG9uLXRvZ2dsZS1sYWJlbC1jb250ZW50e2Rpc3BsYXk6YmxvY2t9Lm1hdC1idXR0b24tdG9nZ2xle3doaXRlLXNwYWNlOm5vd3JhcDtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LWJ1dHRvbi10b2dnbGUgLm1hdC1pY29uIHN2Z3t2ZXJ0aWNhbC1hbGlnbjp0b3B9Lm1hdC1idXR0b24tdG9nZ2xlLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5e29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtYnV0dG9uLXRvZ2dsZS5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LWJ1dHRvbi10b2dnbGUtZm9jdXMtb3ZlcmxheXtvcGFjaXR5Oi41fS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkOm5vdCgubWF0LWJ1dHRvbi10b2dnbGUtZGlzYWJsZWQpOmhvdmVyIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5e29wYWNpdHk6LjA0fS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LWJ1dHRvbi10b2dnbGUtZGlzYWJsZWQpIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5e29wYWNpdHk6LjEyfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtYnV0dG9uLXRvZ2dsZS1kaXNhYmxlZCkgLm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXl7b3BhY2l0eTouNX1AbWVkaWEoaG92ZXI6IG5vbmUpey5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkOm5vdCgubWF0LWJ1dHRvbi10b2dnbGUtZGlzYWJsZWQpOmhvdmVyIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5e2Rpc3BsYXk6bm9uZX19Lm1hdC1idXR0b24tdG9nZ2xlLWxhYmVsLWNvbnRlbnR7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2xpbmUtaGVpZ2h0OjM2cHg7cGFkZGluZzowIDE2cHg7cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQgLm1hdC1idXR0b24tdG9nZ2xlLWxhYmVsLWNvbnRlbnR7cGFkZGluZzowIDEycHh9Lm1hdC1idXR0b24tdG9nZ2xlLWxhYmVsLWNvbnRlbnQ+Knt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9Lm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXl7Ym9yZGVyLXJhZGl1czppbmhlcml0O3BvaW50ZXItZXZlbnRzOm5vbmU7b3BhY2l0eTowO3RvcDowO2xlZnQ6MDtyaWdodDowO2JvdHRvbTowO3Bvc2l0aW9uOmFic29sdXRlfS5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2VkIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5e2JvcmRlci1ib3R0b206c29saWQgMzZweH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2VkIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5e29wYWNpdHk6LjU7aGVpZ2h0OjB9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWJ1dHRvbi10b2dnbGUtY2hlY2tlZC5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5e2JvcmRlci1ib3R0b206c29saWQgNTAwcHh9Lm1hdC1idXR0b24tdG9nZ2xlIC5tYXQtYnV0dG9uLXRvZ2dsZS1yaXBwbGV7dG9wOjA7bGVmdDowO3JpZ2h0OjA7Ym90dG9tOjA7cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6bm9uZX0ubWF0LWJ1dHRvbi10b2dnbGUtYnV0dG9ue2JvcmRlcjowO2JhY2tncm91bmQ6bm9uZTtjb2xvcjppbmhlcml0O3BhZGRpbmc6MDttYXJnaW46MDtmb250OmluaGVyaXQ7b3V0bGluZTpub25lO3dpZHRoOjEwMCU7Y3Vyc29yOnBvaW50ZXJ9Lm1hdC1idXR0b24tdG9nZ2xlLWRpc2FibGVkIC5tYXQtYnV0dG9uLXRvZ2dsZS1idXR0b257Y3Vyc29yOmRlZmF1bHR9Lm1hdC1idXR0b24tdG9nZ2xlLWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcntib3JkZXI6MH1cbiJdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLE40LmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6QTQsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W1M0XX1dfSx7dHlwZTpPYn0se3R5cGU6S2h9LHt0eXBlOmZGfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6JGEsYXJnczpbInRhYmluZGV4Il19XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltrNF19XX1dLE40LnByb3BEZWNvcmF0b3JzPXthcmlhTGFiZWw6W3t0eXBlOlJfLGFyZ3M6WyJhcmlhLWxhYmVsIl19XSxhcmlhTGFiZWxsZWRieTpbe3R5cGU6Ul8sYXJnczpbImFyaWEtbGFiZWxsZWRieSJdfV0sX2J1dHRvbkVsZW1lbnQ6W3t0eXBlOmFyLGFyZ3M6WyJidXR0b24iXX1dLGlkOlt7dHlwZTpSX31dLG5hbWU6W3t0eXBlOlJffV0sdmFsdWU6W3t0eXBlOlJffV0sdGFiSW5kZXg6W3t0eXBlOlJffV0sYXBwZWFyYW5jZTpbe3R5cGU6Ul99XSxjaGVja2VkOlt7dHlwZTpSX31dLGRpc2FibGVkOlt7dHlwZTpSX31dLGNoYW5nZTpbe3R5cGU6RV99XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihONCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJtYXQtYnV0dG9uLXRvZ2dsZSIsdGVtcGxhdGU6JzxidXR0b24gI2J1dHRvbiBjbGFzcz0ibWF0LWJ1dHRvbi10b2dnbGUtYnV0dG9uIG1hdC1mb2N1cy1pbmRpY2F0b3IiXG4gICAgICAgIHR5cGU9ImJ1dHRvbiJcbiAgICAgICAgW2lkXT0iYnV0dG9uSWQiXG4gICAgICAgIFthdHRyLnRhYmluZGV4XT0iZGlzYWJsZWQgPyAtMSA6IHRhYkluZGV4IlxuICAgICAgICBbYXR0ci5hcmlhLXByZXNzZWRdPSJjaGVja2VkIlxuICAgICAgICBbZGlzYWJsZWRdPSJkaXNhYmxlZCB8fCBudWxsIlxuICAgICAgICBbYXR0ci5uYW1lXT0ibmFtZSB8fCBudWxsIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT0iYXJpYUxhYmVsIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPSJhcmlhTGFiZWxsZWRieSJcbiAgICAgICAgKGNsaWNrKT0iX29uQnV0dG9uQ2xpY2soKSI+XG4gIDxzcGFuIGNsYXNzPSJtYXQtYnV0dG9uLXRvZ2dsZS1sYWJlbC1jb250ZW50Ij5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIDwvc3Bhbj5cbjwvYnV0dG9uPlxuXG48c3BhbiBjbGFzcz0ibWF0LWJ1dHRvbi10b2dnbGUtZm9jdXMtb3ZlcmxheSI+PC9zcGFuPlxuPHNwYW4gY2xhc3M9Im1hdC1idXR0b24tdG9nZ2xlLXJpcHBsZSIgbWF0UmlwcGxlXG4gICAgIFttYXRSaXBwbGVUcmlnZ2VyXT0iYnV0dG9uIlxuICAgICBbbWF0UmlwcGxlRGlzYWJsZWRdPSJ0aGlzLmRpc2FibGVSaXBwbGUgfHwgdGhpcy5kaXNhYmxlZCI+XG48L3NwYW4+XG4nLGVuY2Fwc3VsYXRpb246V24uTm9uZSxleHBvcnRBczoibWF0QnV0dG9uVG9nZ2xlIixjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNoLGlucHV0czpbImRpc2FibGVSaXBwbGUiXSxob3N0OnsiW2NsYXNzLm1hdC1idXR0b24tdG9nZ2xlLXN0YW5kYWxvbmVdIjoiIWJ1dHRvblRvZ2dsZUdyb3VwIiwiW2NsYXNzLm1hdC1idXR0b24tdG9nZ2xlLWNoZWNrZWRdIjoiY2hlY2tlZCIsIltjbGFzcy5tYXQtYnV0dG9uLXRvZ2dsZS1kaXNhYmxlZF0iOiJkaXNhYmxlZCIsIltjbGFzcy5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkXSI6J2FwcGVhcmFuY2UgPT09ICJzdGFuZGFyZCInLGNsYXNzOiJtYXQtYnV0dG9uLXRvZ2dsZSIsIlthdHRyLmFyaWEtbGFiZWxdIjoibnVsbCIsIlthdHRyLmFyaWEtbGFiZWxsZWRieV0iOiJudWxsIiwiW2F0dHIuaWRdIjoiaWQiLCJbYXR0ci5uYW1lXSI6Im51bGwiLCIoZm9jdXMpIjoiZm9jdXMoKSIscm9sZToicHJlc2VudGF0aW9uIn0sc3R5bGVzOlsiLm1hdC1idXR0b24tdG9nZ2xlLXN0YW5kYWxvbmUsLm1hdC1idXR0b24tdG9nZ2xlLWdyb3Vwe3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6aW5saW5lLWZsZXg7ZmxleC1kaXJlY3Rpb246cm93O3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47Ym9yZGVyLXJhZGl1czoycHg7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1idXR0b24tdG9nZ2xlLXN0YW5kYWxvbmUsLmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXB7b3V0bGluZTpzb2xpZCAxcHh9Lm1hdC1idXR0b24tdG9nZ2xlLXN0YW5kYWxvbmUubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZCwubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZHtib3JkZXItcmFkaXVzOjRweH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQsLmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZHtvdXRsaW5lOjB9Lm1hdC1idXR0b24tdG9nZ2xlLXZlcnRpY2Fse2ZsZXgtZGlyZWN0aW9uOmNvbHVtbn0ubWF0LWJ1dHRvbi10b2dnbGUtdmVydGljYWwgLm1hdC1idXR0b24tdG9nZ2xlLWxhYmVsLWNvbnRlbnR7ZGlzcGxheTpibG9ja30ubWF0LWJ1dHRvbi10b2dnbGV7d2hpdGUtc3BhY2U6bm93cmFwO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtYnV0dG9uLXRvZ2dsZSAubWF0LWljb24gc3Zne3ZlcnRpY2FsLWFsaWduOnRvcH0ubWF0LWJ1dHRvbi10b2dnbGUuY2RrLWtleWJvYXJkLWZvY3VzZWQgLm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXl7b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1idXR0b24tdG9nZ2xlLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5e29wYWNpdHk6LjV9Lm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQ6bm90KC5tYXQtYnV0dG9uLXRvZ2dsZS1kaXNhYmxlZCk6aG92ZXIgLm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXl7b3BhY2l0eTouMDR9Lm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtYnV0dG9uLXRvZ2dsZS1kaXNhYmxlZCkgLm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXl7b3BhY2l0eTouMTJ9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZC5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC1idXR0b24tdG9nZ2xlLWRpc2FibGVkKSAubWF0LWJ1dHRvbi10b2dnbGUtZm9jdXMtb3ZlcmxheXtvcGFjaXR5Oi41fUBtZWRpYShob3Zlcjogbm9uZSl7Lm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQ6bm90KC5tYXQtYnV0dG9uLXRvZ2dsZS1kaXNhYmxlZCk6aG92ZXIgLm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXl7ZGlzcGxheTpub25lfX0ubWF0LWJ1dHRvbi10b2dnbGUtbGFiZWwtY29udGVudHstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7ZGlzcGxheTppbmxpbmUtYmxvY2s7bGluZS1oZWlnaHQ6MzZweDtwYWRkaW5nOjAgMTZweDtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZCAubWF0LWJ1dHRvbi10b2dnbGUtbGFiZWwtY29udGVudHtwYWRkaW5nOjAgMTJweH0ubWF0LWJ1dHRvbi10b2dnbGUtbGFiZWwtY29udGVudD4qe3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0ubWF0LWJ1dHRvbi10b2dnbGUtZm9jdXMtb3ZlcmxheXtib3JkZXItcmFkaXVzOmluaGVyaXQ7cG9pbnRlci1ldmVudHM6bm9uZTtvcGFjaXR5OjA7dG9wOjA7bGVmdDowO3JpZ2h0OjA7Ym90dG9tOjA7cG9zaXRpb246YWJzb2x1dGV9Lm1hdC1idXR0b24tdG9nZ2xlLWNoZWNrZWQgLm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXl7Ym9yZGVyLWJvdHRvbTpzb2xpZCAzNnB4fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1idXR0b24tdG9nZ2xlLWNoZWNrZWQgLm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXl7b3BhY2l0eTouNTtoZWlnaHQ6MH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2VkLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQgLm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXl7Ym9yZGVyLWJvdHRvbTpzb2xpZCA1MDBweH0ubWF0LWJ1dHRvbi10b2dnbGUgLm1hdC1idXR0b24tdG9nZ2xlLXJpcHBsZXt0b3A6MDtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MDtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czpub25lfS5tYXQtYnV0dG9uLXRvZ2dsZS1idXR0b257Ym9yZGVyOjA7YmFja2dyb3VuZDpub25lO2NvbG9yOmluaGVyaXQ7cGFkZGluZzowO21hcmdpbjowO2ZvbnQ6aW5oZXJpdDtvdXRsaW5lOm5vbmU7d2lkdGg6MTAwJTtjdXJzb3I6cG9pbnRlcn0ubWF0LWJ1dHRvbi10b2dnbGUtZGlzYWJsZWQgLm1hdC1idXR0b24tdG9nZ2xlLWJ1dHRvbntjdXJzb3I6ZGVmYXVsdH0ubWF0LWJ1dHRvbi10b2dnbGUtYnV0dG9uOjotbW96LWZvY3VzLWlubmVye2JvcmRlcjowfVxuIl19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpBNCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbUzRdfV19LHt0eXBlOk9ifSx7dHlwZTpLaH0se3R5cGU6ZkZ9LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTokYSxhcmdzOlsidGFiaW5kZXgiXX1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W2s0XX1dfV19KSx7YXJpYUxhYmVsbGVkYnk6W3t0eXBlOlJfLGFyZ3M6WyJhcmlhLWxhYmVsbGVkYnkiXX1dLGNoYW5nZTpbe3R5cGU6RV99XSx0YWJJbmRleDpbe3R5cGU6Ul99XSxhcHBlYXJhbmNlOlt7dHlwZTpSX31dLGNoZWNrZWQ6W3t0eXBlOlJffV0sZGlzYWJsZWQ6W3t0eXBlOlJffV0saWQ6W3t0eXBlOlJffV0sbmFtZTpbe3R5cGU6Ul99XSxhcmlhTGFiZWw6W3t0eXBlOlJfLGFyZ3M6WyJhcmlhLWxhYmVsIl19XSxfYnV0dG9uRWxlbWVudDpbe3R5cGU6YXIsYXJnczpbImJ1dHRvbiJdfV0sdmFsdWU6W3t0eXBlOlJffV19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIHo0e316NC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8ejQpfSx6NC7JtW1vZD1mbyh7dHlwZTp6NH0pLHo0Lsm1aW5qPURuKHtpbXBvcnRzOltbTkYsZkxdLE5GXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoejQsW3t0eXBlOkxfLGFyZ3M6W3tpbXBvcnRzOltORixmTF0sZXhwb3J0czpbTkYsQTQsTjRdLGRlY2xhcmF0aW9uczpbQTQsTjRdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8oejQse2RlY2xhcmF0aW9uczpmdW5jdGlvbigpe3JldHVybltBNCxONF19LGltcG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bTkYsZkxdfSxleHBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW05GLEE0LE40XX19KTtjb25zdCBJND0iL3NjYWxhcl9zdW1tYXJ5IjtmdW5jdGlvbiBINCh0LGUpe2xldCBuPXQ7cmV0dXJuIGUmJnQuc3RhcnRzV2l0aChlKyIvIikmJihuPXQuc2xpY2UoZS5sZW5ndGgrMSkpLG4uZW5kc1dpdGgoSTQpJiYobj1uLnNsaWNlKDAsLUk0Lmxlbmd0aCkpLG58fHR9ZnVuY3Rpb24gRjQodCxlKXtpZigxJnQmJihDZigwLCJzcGFuIiwyKSxQdSgxKSxNZigpKSwyJnQpe2NvbnN0IHQ9emYoKTtEYygxKSx3dSh0LmZpcnN0VGV4dFBhcnQoKSl9fWNsYXNzIEw0e3BhcnNlVmFsdWUoKXtjb25zdCB0PXRoaXMudmFsdWUubGFzdEluZGV4T2YoIi8iKTtyZXR1cm4tMT09PXQ/e2ZpcnN0OiIiLHNlY29uZDp0aGlzLnZhbHVlfTp7Zmlyc3Q6dGhpcy52YWx1ZS5zbGljZSgwLHQpLHNlY29uZDp0aGlzLnZhbHVlLnNsaWNlKHQpfX1maXJzdFRleHRQYXJ0KCl7cmV0dXJuIHRoaXMucGFyc2VWYWx1ZSgpLmZpcnN0fXNlY29uZFRleHRQYXJ0KCl7cmV0dXJuIHRoaXMucGFyc2VWYWx1ZSgpLnNlY29uZH19ZnVuY3Rpb24gQjQodCxlLG4pe3ZhciBvLGksYSxyO3JldHVybiB0LnN0YXJ0LnN0ZXA8PWUmJnQuZW5kJiZuPD10LmVuZC5zdGVwfHxlPD10LnN0YXJ0LnN0ZXAmJnQuc3RhcnQuc3RlcDw9bnx8dC5lbmQmJmU8PShudWxsPT09KG89dC5lbmQpfHx2b2lkIDA9PT1vP3ZvaWQgMDpvLnN0ZXApJiYobnVsbD09PShpPXQuZW5kKXx8dm9pZCAwPT09aT92b2lkIDA6aS5zdGVwKTw9bj97c3RhcnRTdGVwOnQuc3RhcnQuc3RlcCxlbmRTdGVwOm51bGwhPT0ocj1udWxsPT09KGE9dC5lbmQpfHx2b2lkIDA9PT1hP3ZvaWQgMDphLnN0ZXApJiZ2b2lkIDAhPT1yP3I6bnVsbCxjbGlwcGVkOiExfTpuPD10LnN0YXJ0LnN0ZXA/e3N0YXJ0U3RlcDpuLGVuZFN0ZXA6bnVsbCxjbGlwcGVkOiEwfTp7c3RhcnRTdGVwOmUsZW5kU3RlcDpudWxsLGNsaXBwZWQ6ITB9fWZ1bmN0aW9uIFY0KHQsZSl7aWYoMSZ0JiZ2ZigwLCJ0Yi1leHBlcmltZW50LWFsaWFzIiwyKSwyJnQpe2JmKCJhbGlhcyIsemYoKS5leHBlcmltZW50QWxpYXMpfX1mdW5jdGlvbiBqNCh0LGUpezEmdCYmKENmKDAsInNwYW4iKSxQdSgxLCIvIiksTWYoKSl9TDQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEw0KX0sTDQuybVjbXA9c28oe3R5cGU6TDQsc2VsZWN0b3JzOltbInRiLXRydW5jYXRlZC1wYXRoIl1dLGlucHV0czp7dmFsdWU6InZhbHVlIn0sZGVjbHM6Myx2YXJzOjIsY29uc3RzOltbImNsYXNzIiwiZmlyc3QtdGV4dC1wYXJ0Iiw0LCJuZ0lmIl0sWzEsInNlY29uZC10ZXh0LXBhcnQiXSxbMSwiZmlyc3QtdGV4dC1wYXJ0Il1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihIbSgwLEY0LDIsMSwic3BhbiIsMCksQ2YoMSwic3BhbiIsMSksUHUoMiksTWYoKSksMiZlJiYoYmYoIm5nSWYiLG4uZmlyc3RUZXh0UGFydCgpLmxlbmd0aD4wKSxEYygyKSx3dShuLnNlY29uZFRleHRQYXJ0KCkpKX0sZGlyZWN0aXZlczpbUHZdLHN0eWxlczpbIltfbmdob3N0LSVDT01QJV17ZGlzcGxheTppbmxpbmUtZmxleDt3aGl0ZS1zcGFjZTpub3dyYXB9LmZpcnN0LXRleHQtcGFydFtfbmdjb250ZW50LSVDT01QJV17ZmxleDoxIDEgNGNoO21heC13aWR0aDptYXgtY29udGVudH0uZmlyc3QtdGV4dC1wYXJ0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLnNlY29uZC10ZXh0LXBhcnRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzfSJdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihMNCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJ0Yi10cnVuY2F0ZWQtcGF0aCIsdGVtcGxhdGU6J1xuICAgIDxzcGFuICpuZ0lmPSJmaXJzdFRleHRQYXJ0KCkubGVuZ3RoID4gMCIgY2xhc3M9ImZpcnN0LXRleHQtcGFydCI+e3tcbiAgICAgIGZpcnN0VGV4dFBhcnQoKVxuICAgIH19PC9zcGFuPlxuICAgIDxzcGFuIGNsYXNzPSJzZWNvbmQtdGV4dC1wYXJ0Ij57eyBzZWNvbmRUZXh0UGFydCgpIH19PC9zcGFuPlxuICAnLHN0eWxlVXJsczpbInRydW5jYXRlZF9wYXRoX2NvbXBvbmVudC5jc3MiXX1dfV0sbnVsbCx7dmFsdWU6W3t0eXBlOlJffV19KTtjbGFzcyBVNHt9VTQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFU0KX0sVTQuybVjbXA9c28oe3R5cGU6VTQsc2VsZWN0b3JzOltbImNhcmQtcnVuLW5hbWUtY29tcG9uZW50Il1dLGlucHV0czp7bmFtZToibmFtZSIsZXhwZXJpbWVudEFsaWFzOiJleHBlcmltZW50QWxpYXMifSxkZWNsczo0LHZhcnM6Myxjb25zdHM6W1szLCJhbGlhcyIsNCwibmdJZiJdLFs0LCJuZ0lmIl0sWzMsImFsaWFzIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihIbSgwLFY0LDEsMSwidGItZXhwZXJpbWVudC1hbGlhcyIsMCksSG0oMSxqNCwyLDAsInNwYW4iLDEpLENmKDIsInNwYW4iKSxQdSgzKSxNZigpKSwyJmUmJihiZigibmdJZiIsbnVsbCE9bi5leHBlcmltZW50QWxpYXMpLERjKDEpLGJmKCJuZ0lmIixudWxsIT1uLmV4cGVyaW1lbnRBbGlhcyksRGMoMiksd3Uobi5uYW1lKSl9LGRpcmVjdGl2ZXM6W1B2LEgyXSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX1bX25naG9zdC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Ym9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfSddLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihVNCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJjYXJkLXJ1bi1uYW1lLWNvbXBvbmVudCIsdGVtcGxhdGU6Jzx0Yi1leHBlcmltZW50LWFsaWFzXG4gICAgICAqbmdJZj0iZXhwZXJpbWVudEFsaWFzICE9IG51bGwiXG4gICAgICBbYWxpYXNdPSJleHBlcmltZW50QWxpYXMiXG4gICAgPjwvdGItZXhwZXJpbWVudC1hbGlhcz5cbiAgICA8c3BhbiAqbmdJZj0iZXhwZXJpbWVudEFsaWFzICE9IG51bGwiPi88L3NwYW4+XG4gICAgPHNwYW4+e3sgbmFtZSB9fTwvc3Bhbj4nLHN0eWxlVXJsczpbInJ1bl9uYW1lX2NvbXBvbmVudC5jc3MiXSxjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNofV19XSxudWxsLHtuYW1lOlt7dHlwZTpSX31dLGV4cGVyaW1lbnRBbGlhczpbe3R5cGU6Ul99XX0pO2NsYXNzIFc0e2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dH1uZ09uSW5pdCgpe3RoaXMubmFtZSQ9S3QoW3RoaXMuc3RvcmUuc2VsZWN0KFl6LHtydW5JZDp0aGlzLnJ1bklkfSldKS5waXBlKFZ0KCgoW3RdKT0+KGZ1bmN0aW9uIGUodCxuLG8pe3ZhciBpO2lmKCFuJiYhbylyZXR1cm4gdDtsZXQgYT1udWxsIT09KGk9bnVsbD09bj92b2lkIDA6bi5uYW1lKSYmdm9pZCAwIT09aT9pOiIuLi4iO3JldHVybiBvJiYoYT1gWyR7by5hbGlhc051bWJlcn1dICR7by5hbGlhc1RleHR9LyR7YX1gKSxhfSkodGhpcy5ydW5JZCx0LG51bGwpKSkpLHRoaXMuZXhwZXJpbWVudEFsaWFzJD1LdChbdGhpcy5zdG9yZS5zZWxlY3QoR3ose3J1bklkOnRoaXMucnVuSWR9KSx0aGlzLnN0b3JlLnNlbGVjdChPUildKS5waXBlKFZ0KCgoW3QsZV0pPT50P2VbdF06bnVsbCkpKX19ZnVuY3Rpb24gRzQodCxlKXtpZigxJnQmJihDZigwLCJzcGFuIiwxNyksUHUoMSksX3koMiwibnVtYmVyIiksTWYoKSksMiZ0KXtjb25zdCB0PXpmKCk7RGMoMSksa3UoIlN0ZXAgIixDeSgyLDEsdC5zdGVwVmFsdWVzW3Quc3RlcEluZGV4XSksIiIpfX1mdW5jdGlvbiBZNCh0LGUpe2lmKDEmdCYmKENmKDAsInNwYW4iLDE4KSxQdSgxKSxfeSgyLCJudW1iZXIiKSxfeSgzLCJudW1iZXIiKSxNZigpKSwyJnQpe2NvbnN0IHQ9emYoKTtEYygxKSxTdSgiU2FtcGxlICIsQ3koMiwyLHQuc2FtcGxlKzEpLCIvIixDeSgzLDQsdC5udW1TYW1wbGUpLCIiKX19ZnVuY3Rpb24gcTQodCxlKXsxJnQmJnZmKDAsIm1hdC1zcGlubmVyIiwxOSl9VzQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFc0KShnZihpUykpfSxXNC7JtWNtcD1zbyh7dHlwZTpXNCxzZWxlY3RvcnM6W1siY2FyZC1ydW4tbmFtZSJdXSxpbnB1dHM6e3J1bklkOiJydW5JZCJ9LGRlY2xzOjQsdmFyczo5LGNvbnN0czpbWzMsIm5hbWUiLCJleHBlcmltZW50QWxpYXMiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKHZmKDAsImNhcmQtcnVuLW5hbWUtY29tcG9uZW50IiwwKSxfeSgxLCJhc3luYyIpLF95KDIsImFzeW5jIiksX3koMywiYXN5bmMiKSksMiZlJiYoYmYoIm5hbWUiLEN5KDEsMyxuLm5hbWUkKSkoImV4cGVyaW1lbnRBbGlhcyIsQ3koMyw3LG4uZXhwZXJpbWVudEFsaWFzJCkpLHltKCJ0aXRsZSIsQ3koMiw1LG4ubmFtZSQpKSl9LGRpcmVjdGl2ZXM6W1U0XSxwaXBlczpbVnZdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoVzQsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoiY2FyZC1ydW4tbmFtZSIsdGVtcGxhdGU6J1xuICAgIDxjYXJkLXJ1bi1uYW1lLWNvbXBvbmVudFxuICAgICAgW25hbWVdPSJuYW1lJCB8IGFzeW5jIlxuICAgICAgW2F0dHIudGl0bGVdPSJuYW1lJCB8IGFzeW5jIlxuICAgICAgW2V4cGVyaW1lbnRBbGlhc109ImV4cGVyaW1lbnRBbGlhcyQgfCBhc3luYyJcbiAgICA+PC9jYXJkLXJ1bi1uYW1lLWNvbXBvbmVudD5cbiAgJyxjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNofV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6aVN9XX0pLHtydW5JZDpbe3R5cGU6Ul99XX0pO2NvbnN0IFo0PWZ1bmN0aW9uKHQpe3JldHVybntmaWx0ZXI6dH19O2Z1bmN0aW9uIFg0KHQsZSl7aWYoMSZ0KXtjb25zdCB0PXdmKCk7eGYoMCksQ2YoMSwiZGl2IiwyMCksQ2YoMiwibWF0LXNsaWRlciIsMjEpLFJmKCJpbnB1dCIsKGZ1bmN0aW9uIGUobil7UGkodCk7cmV0dXJuIHpmKCkub25TbGlkZXJJbnB1dChuKX0pKSxNZigpLE1mKCksQ2YoMywiZGl2IiwyMiksdmYoNCwiaW1nIiwyMyksTWYoKSxPZigpfWlmKDImdCl7Y29uc3QgdD16ZigpO0RjKDIpLGJmKCJkaXNhYmxlZCIsdC5zdGVwVmFsdWVzLmxlbmd0aDw9MSkoIm1pbiIsMCkoIm1heCIsdC5zdGVwVmFsdWVzLmxlbmd0aC0xKSgic3RlcCIsMSkoInRpY2tJbnRlcnZhbCIsMSkoInZhbHVlIix0LnN0ZXBJbmRleCksRGMoMiksQmYoImFsdCIsIkltYWdlIGF0IHN0ZXAgIix0LnN0ZXBWYWx1ZXNbdC5zdGVwSW5kZXhdLCIiKSxMZigic3JjIix0LmltYWdlVXJsLFhzKSxiZigibmdTdHlsZSIsaXkoOSxaNCx0LmNzc0ZpbHRlcigpKSl9fWZ1bmN0aW9uIEs0KHQsZSl7MSZ0JiYoQ2YoMCwiZGl2IiwyNSksUHUoMSwiIERhdGEgZmFpbGVkIHRvIGxvYWQuICIpLE1mKCkpfWZ1bmN0aW9uIEo0KHQsZSl7aWYoMSZ0JiZIbSgwLEs0LDIsMCwiZGl2IiwyNCksMiZ0KXtjb25zdCB0PXpmKCk7YmYoIm5nSWYiLHQubG9hZFN0YXRlPT09dC5EYXRhTG9hZFN0YXRlLkZBSUxFRCl9fWNvbnN0IFE0PWZ1bmN0aW9uKHQpe3JldHVybntiYWNrZ3JvdW5kQ29sb3I6dH19O2NsYXNzICQ0e2NvbnN0cnVjdG9yKCl7dGhpcy5EYXRhTG9hZFN0YXRlPVVFLHRoaXMub25BY3R1YWxTaXplVG9nZ2xlPW5ldyBTeSx0aGlzLnN0ZXBJbmRleENoYW5nZT1uZXcgU3ksdGhpcy5vblBpbkNsaWNrZWQ9bmV3IFN5fWNzc0ZpbHRlcigpe3JldHVybmBjb250cmFzdCgke3RoaXMuY29udHJhc3RJbk1pbGxpLzEwfSUpIGJyaWdodG5lc3MoJHt0aGlzLmJyaWdodG5lc3NJbk1pbGxpLzFlM30pYH1vblNsaWRlcklucHV0KHQpe3RoaXMuc3RlcEluZGV4Q2hhbmdlLmVtaXQodC52YWx1ZSl9fSQ0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHwkNCl9LCQ0Lsm1Y21wPXNvKHt0eXBlOiQ0LHNlbGVjdG9yczpbWyJpbWFnZS1jYXJkLWNvbXBvbmVudCJdXSxob3N0VmFyczoyLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MiZlJiZjdSgiYWN0dWFsLXNpemUiLG4uc2hvd0FjdHVhbFNpemUpfSxpbnB1dHM6e2xvYWRTdGF0ZToibG9hZFN0YXRlIix0aXRsZToidGl0bGUiLHRhZzoidGFnIixydW5JZDoicnVuSWQiLHNhbXBsZToic2FtcGxlIixudW1TYW1wbGU6Im51bVNhbXBsZSIsaW1hZ2VVcmw6ImltYWdlVXJsIixzdGVwSW5kZXg6InN0ZXBJbmRleCIsc3RlcFZhbHVlczoic3RlcFZhbHVlcyIsYnJpZ2h0bmVzc0luTWlsbGk6ImJyaWdodG5lc3NJbk1pbGxpIixjb250cmFzdEluTWlsbGk6ImNvbnRyYXN0SW5NaWxsaSIsc2hvd0FjdHVhbFNpemU6InNob3dBY3R1YWxTaXplIixydW5Db2xvclNjYWxlOiJydW5Db2xvclNjYWxlIixhbGxvd1RvZ2dsZUFjdHVhbFNpemU6ImFsbG93VG9nZ2xlQWN0dWFsU2l6ZSIsaXNQaW5uZWQ6ImlzUGlubmVkIn0sb3V0cHV0czp7b25BY3R1YWxTaXplVG9nZ2xlOiJvbkFjdHVhbFNpemVUb2dnbGUiLHN0ZXBJbmRleENoYW5nZToic3RlcEluZGV4Q2hhbmdlIixvblBpbkNsaWNrZWQ6Im9uUGluQ2xpY2tlZCJ9LGRlY2xzOjE5LHZhcnM6MTQsY29uc3RzOmZ1bmN0aW9uKCl7bGV0IHQsZTtpZigidW5kZWZpbmVkIiE9dHlwZW9mIG5nSTE4bkNsb3N1cmVNb2RlJiZuZ0kxOG5DbG9zdXJlTW9kZSl7dD1nb29nLmdldE1zZygiUGluIGNhcmQiKX1lbHNlIHQ9JGxvY2FsaXplYDpBIGJ1dHRvbiB0byBwaW4gYSBjYXJkLuKQn2U2NjVkYzcxMmJkNWYxOGQ0ZGZhM2EyOWUxMjVkNTY1Y2M1MWUyZjbikJ83Mjg0NjA2NDI2MjM0Mzc1MzQ0OlBpbiBjYXJkYDtpZigidW5kZWZpbmVkIiE9dHlwZW9mIG5nSTE4bkNsb3N1cmVNb2RlJiZuZ0kxOG5DbG9zdXJlTW9kZSl7ZT1nb29nLmdldE1zZygiVG9nZ2xlIGFjdHVhbCBpbWFnZSBzaXplIil9ZWxzZSBlPSRsb2NhbGl6ZWA6QSBidXR0b24gb24gYW4gaW1hZ2UgY2FyZCB0aGF0IHRvZ2dsZXMgYWN0dWFsIGltYWdlIHNpemUu4pCfM2NhMDVlZjNhNmUzYTM3MDY1ZjVlMGY2OWM1ZDVhMjE3OGQ5MDc5MeKQnzc2MzUxMDE5MzY2NjQ3ODkxNDA6VG9nZ2xlIGFjdHVhbCBpbWFnZSBzaXplYDtyZXR1cm5bWzEsImhlYWRpbmciXSxbMSwibGluZSJdLFsxLCJ0YWciLDMsInRpdGxlIiwidmFsdWUiXSxbMSwiY29udHJvbHMiXSxbIm1hdC1pY29uLWJ1dHRvbiIsIiIsImFyaWEtbGFiZWwiLHQsMSwicGluLWJ1dHRvbiIsMywiY2xpY2siXSxbMywic3ZnSWNvbiJdLFsibWF0LWljb24tYnV0dG9uIiwiIiwiYXJpYS1sYWJlbCIsZSwidGl0bGUiLCJUb2dnbGUgYWN0dWFsIGltYWdlIHNpemUiLDMsImRpc2FibGVkIiwiY2xpY2siXSxbInN2Z0ljb24iLCJpbWFnZV9zZWFyY2hfMjRweCJdLFsxLCJydW4iXSxbMSwiZG90IiwzLCJuZ1N0eWxlIl0sWzEsInJ1bi10ZXh0IiwzLCJydW5JZCJdLFsxLCJtZXRhZGF0YSJdLFsiY2xhc3MiLCJzdGVwIiw0LCJuZ0lmIl0sWyJjbGFzcyIsInNhbXBsZSIsNCwibmdJZiJdLFsiY2xhc3MiLCJsb2FkaW5nIiwiZGlhbWV0ZXIiLCIxOCIsNCwibmdJZiJdLFs0LCJuZ0lmIiwibmdJZkVsc2UiXSxbIm5vSW1hZ2VEYXRhIiwiIl0sWzEsInN0ZXAiXSxbMSwic2FtcGxlIl0sWyJkaWFtZXRlciIsIjE4IiwxLCJsb2FkaW5nIl0sWzEsInNsaWRlci1yb3ciXSxbImNvbG9yIiwicHJpbWFyeSIsMSwic3RlcC1zbGlkZXIiLDMsImRpc2FibGVkIiwibWluIiwibWF4Iiwic3RlcCIsInRpY2tJbnRlcnZhbCIsInZhbHVlIiwiaW5wdXQiXSxbMSwiaW1nLWNvbnRhaW5lciJdLFszLCJhbHQiLCJzcmMiLCJuZ1N0eWxlIl0sWyJjbGFzcyIsImVtcHR5LW1lc3NhZ2UiLDQsIm5nSWYiXSxbMSwiZW1wdHktbWVzc2FnZSJdXX0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmKENmKDAsImRpdiIsMCksQ2YoMSwiZGl2IiwxKSx2ZigyLCJ0Yi10cnVuY2F0ZWQtcGF0aCIsMiksQ2YoMywic3BhbiIsMyksQ2YoNCwiYnV0dG9uIiw0KSxSZigiY2xpY2siLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25QaW5DbGlja2VkLmVtaXQoIW4uaXNQaW5uZWQpfSkpLHZmKDUsIm1hdC1pY29uIiw1KSxNZigpLENmKDYsImJ1dHRvbiIsNiksUmYoImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uQWN0dWFsU2l6ZVRvZ2dsZS5lbWl0KCl9KSksdmYoNywibWF0LWljb24iLDcpLE1mKCksTWYoKSxNZigpLENmKDgsImRpdiIsMSksQ2YoOSwic3BhbiIsOCksdmYoMTAsInNwYW4iLDkpLHZmKDExLCJjYXJkLXJ1bi1uYW1lIiwxMCksTWYoKSxDZigxMiwiZGl2IiwxMSksSG0oMTMsRzQsMywzLCJzcGFuIiwxMiksSG0oMTQsWTQsNCw2LCJzcGFuIiwxMyksSG0oMTUscTQsMSwwLCJtYXQtc3Bpbm5lciIsMTQpLE1mKCksTWYoKSxNZigpLEhtKDE2LFg0LDUsMTEsIm5nLWNvbnRhaW5lciIsMTUpLEhtKDE3LEo0LDEsMSwibmctdGVtcGxhdGUiLG51bGwsMTYscXkpKSwyJmUpe2NvbnN0IHQ9Rm0oMTgpO0RjKDIpLExmKCJ0aXRsZSIsbi50YWcpLExmKCJ2YWx1ZSIsbi50aXRsZSksRGMoMikseW0oInRpdGxlIixuLmlzUGlubmVkPyJVbnBpbiBjYXJkIjoiUGluIGNhcmQiKSxEYygxKSxiZigic3ZnSWNvbiIsbi5pc1Bpbm5lZD8ia2VlcF8yNHB4Ijoia2VlcF9vdXRsaW5lXzI0cHgiKSxEYygxKSxiZigiZGlzYWJsZWQiLCFuLmFsbG93VG9nZ2xlQWN0dWFsU2l6ZSksRGMoNCksYmYoIm5nU3R5bGUiLGl5KDEyLFE0LG4ucnVuQ29sb3JTY2FsZShuLnJ1bklkKSkpLERjKDEpLGJmKCJydW5JZCIsbi5ydW5JZCksRGMoMiksYmYoIm5nSWYiLG51bGwhPT1uLnN0ZXBJbmRleCYmbi5zdGVwSW5kZXg8bi5zdGVwVmFsdWVzLmxlbmd0aCksRGMoMSksYmYoIm5nSWYiLG4ubnVtU2FtcGxlPjEpLERjKDEpLGJmKCJuZ0lmIixuLmxvYWRTdGF0ZT09PW4uRGF0YUxvYWRTdGF0ZS5MT0FESU5HKSxEYygxKSxiZigibmdJZiIsbnVsbCE9PW4uc3RlcEluZGV4JiZuLnN0ZXBJbmRleDxuLnN0ZXBWYWx1ZXMubGVuZ3RoKSgibmdJZkVsc2UiLHQpfX0sZGlyZWN0aXZlczpbTDQsTkwsTXEsenYsVzQsUHYsYTIsd0pdLHBpcGVzOlskdl0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCB0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9W19uZ2hvc3QtJUNPTVAlXXtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2JveC1zaXppbmc6Ym9yZGVyLWJveDtoZWlnaHQ6MTAwJTtvdmVyZmxvdzphdXRvO3BhZGRpbmc6MTZweDtwYWRkaW5nLXRvcDo0cHh9LmFjdHVhbC1zaXplW19uZ2hvc3QtJUNPTVAlXXtoZWlnaHQ6YXV0b30uaGVhZGluZ1tfbmdjb250ZW50LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2ZvbnQtc2l6ZToxNHB4O21hcmdpbi1ib3R0b206NHB4O3Bvc2l0aW9uOnJlbGF0aXZlfS5saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnIgbWF4LWNvbnRlbnR9Lm1ldGFkYXRhW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7Z2FwOjVweDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmQ7bWF4LXdpZHRoOjE3NXB4O3RleHQtYWxpZ246ZW5kfS50YWdbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbn0ucGluLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICBtYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjE4cHh9LnJ1bltfbmdjb250ZW50LSVDT01QJV17YWxpZ24tc2VsZjpiYXNlbGluZTtkaXNwbGF5OmZsZXg7b3ZlcmZsb3c6aGlkZGVuO3doaXRlLXNwYWNlOm5vd3JhcH0ucnVuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5kb3RbX25nY29udGVudC0lQ09NUCVde2ZsZXg6bm9uZTtkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDoxM3B4O2hlaWdodDoxM3B4O2JvcmRlci1yYWRpdXM6NTAlO21hcmdpbi1yaWdodDo0cHh9LnJ1bltfbmdjb250ZW50LSVDT01QJV0gICAucnVuLXRleHRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO21heC13aWR0aDoxMjBweH0ucnVuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLnNhbXBsZVtfbmdjb250ZW50LSVDT01QJV0sIC5zdGVwW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxO2ZvbnQtc2l6ZToxM3B4fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5ydW5bX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAucnVuW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAuc2FtcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLnNhbXBsZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLnN0ZXBbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuc3RlcFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9LmNvbnRyb2xzW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxO3doaXRlLXNwYWNlOm5vd3JhcDtqdXN0aWZ5LXNlbGY6ZmxleC1lbmQ7ZmxleC1zaHJpbms6MDttYXJnaW4tcmlnaHQ6LTEycHh9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLmNvbnRyb2xzW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmNvbnRyb2xzW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX0uaW1nLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17ZmxleDoxIDEgMDtvdmVyZmxvdy15OmF1dG87cG9zaXRpb246cmVsYXRpdmV9LmltZy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdICAgaW1nW19uZ2NvbnRlbnQtJUNPTVAlXXtpbWFnZS1yZW5kZXJpbmc6LW1vei1jcmlzcC1lZGdlcztpbWFnZS1yZW5kZXJpbmc6cGl4ZWxhdGVkfS5hY3R1YWwtc2l6ZVtfbmdob3N0LSVDT01QJV0gICAuaW1nLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6YXV0bztmbGV4Om5vbmV9W19uZ2hvc3QtJUNPTVAlXTpub3QoLmFjdHVhbC1zaXplKSAgIGltZ1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7bWF4LWhlaWdodDoxMDAlO21heC13aWR0aDoxMDAlO3dpZHRoOmF1dG87aGVpZ2h0OjEwMCU7b2JqZWN0LWZpdDpjb250YWlufS5zbGlkZXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2hlaWdodDoyNHB4fS5zdGVwLXNsaWRlcltfbmdjb250ZW50LSVDT01QJV17ZmxleDoxfVtfbmdob3N0LSVDT01QJV0gICAgIC5tYXQtc2xpZGVyLW1pbi12YWx1ZSAubWF0LXNsaWRlci10aHVtYntiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9LmVtcHR5LW1lc3NhZ2VbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6MWVtO2ZvbnQtc2l6ZToxM3B4fSddLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYigkNCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJpbWFnZS1jYXJkLWNvbXBvbmVudCIsdGVtcGxhdGVVcmw6ImltYWdlX2NhcmRfY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbImltYWdlX2NhcmRfY29tcG9uZW50LmNzcyJdLGhvc3Q6eyJbY2xhc3MuYWN0dWFsLXNpemVdIjoic2hvd0FjdHVhbFNpemUifSxjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNofV19XSxudWxsLHtsb2FkU3RhdGU6W3t0eXBlOlJffV0sdGl0bGU6W3t0eXBlOlJffV0sdGFnOlt7dHlwZTpSX31dLHJ1bklkOlt7dHlwZTpSX31dLHNhbXBsZTpbe3R5cGU6Ul99XSxudW1TYW1wbGU6W3t0eXBlOlJffV0saW1hZ2VVcmw6W3t0eXBlOlJffV0sc3RlcEluZGV4Olt7dHlwZTpSX31dLHN0ZXBWYWx1ZXM6W3t0eXBlOlJffV0sYnJpZ2h0bmVzc0luTWlsbGk6W3t0eXBlOlJffV0sY29udHJhc3RJbk1pbGxpOlt7dHlwZTpSX31dLHNob3dBY3R1YWxTaXplOlt7dHlwZTpSX31dLHJ1bkNvbG9yU2NhbGU6W3t0eXBlOlJffV0sYWxsb3dUb2dnbGVBY3R1YWxTaXplOlt7dHlwZTpSX31dLGlzUGlubmVkOlt7dHlwZTpSX31dLG9uQWN0dWFsU2l6ZVRvZ2dsZTpbe3R5cGU6RV99XSxzdGVwSW5kZXhDaGFuZ2U6W3t0eXBlOkVffV0sb25QaW5DbGlja2VkOlt7dHlwZTpFX31dfSk7Y2xhc3MgdDZ7Y29uc3RydWN0b3IodCxlKXt0aGlzLnN0b3JlPXQsdGhpcy5kYXRhU291cmNlPWUsdGhpcy5mdWxsV2lkdGhDaGFuZ2VkPW5ldyBTeSx0aGlzLnBpblN0YXRlQ2hhbmdlZD1uZXcgU3ksdGhpcy5icmlnaHRuZXNzSW5NaWxsaSQ9dGhpcy5zdG9yZS5zZWxlY3QodnopLHRoaXMuY29udHJhc3RJbk1pbGxpJD10aGlzLnN0b3JlLnNlbGVjdCh4eiksdGhpcy5hY3R1YWxTaXplR2xvYmFsU2V0dGluZyQ9dGhpcy5zdG9yZS5zZWxlY3QoT3opLHRoaXMuc2hvd0FjdHVhbFNpemU9ITEsdGhpcy5hY3R1YWxTaXplVWlUb2dnbGVkPSExLHRoaXMuYWN0dWFsU2l6ZVVpVG9nZ2xlU3ViamVjdD1uZXcgaih0aGlzLmFjdHVhbFNpemVVaVRvZ2dsZWQpLHRoaXMubmdVbnN1YnNjcmliZT1uZXcgQn1vblN0ZXBJbmRleENoYW5nZWQodCl7dGhpcy5zdG9yZS5kaXNwYXRjaChBQSh7Y2FyZElkOnRoaXMuY2FyZElkLHN0ZXBJbmRleDp0fSkpfWlzSW1hZ2VDYXJkTWV0YWRhdGEodCl7Y29uc3R7cGx1Z2luOmV9PXQ7cmV0dXJuIGU9PT1LVC5JTUFHRVN9b25BY3R1YWxTaXplVG9nZ2xlKCl7dGhpcy5hY3R1YWxTaXplVWlUb2dnbGVkPSF0aGlzLmFjdHVhbFNpemVVaVRvZ2dsZWQsdGhpcy5hY3R1YWxTaXplVWlUb2dnbGVTdWJqZWN0Lm5leHQodGhpcy5hY3R1YWxTaXplVWlUb2dnbGVkKX1uZ09uSW5pdCgpe0t0KFt0aGlzLmFjdHVhbFNpemVHbG9iYWxTZXR0aW5nJCx0aGlzLmFjdHVhbFNpemVVaVRvZ2dsZVN1YmplY3RdKS5waXBlKGplKHRoaXMubmdVbnN1YnNjcmliZSksV2UoKChbdCxlXSk9Pnt0aGlzLnNob3dBY3R1YWxTaXplPXR8fGUsdGhpcy5mdWxsV2lkdGhDaGFuZ2VkLmVtaXQodGhpcy5zaG93QWN0dWFsU2l6ZSl9KSkpLnN1YnNjcmliZSgoKCk9Pnt9KSk7Y29uc3QgdD10aGlzLnN0b3JlLnNlbGVjdChueix0aGlzLmNhcmRJZCkucGlwZShqZSh0aGlzLm5nVW5zdWJzY3JpYmUpLHVlKCh0PT4hIXQmJnRoaXMuaXNJbWFnZUNhcmRNZXRhZGF0YSh0KSkpLFZ0KCh0PT50KSksRmUoMSkpLGU9S3QoW3QsdGhpcy5zdG9yZS5zZWxlY3QodHosdGhpcy5jYXJkSWQpXSkucGlwZShqZSh0aGlzLm5nVW5zdWJzY3JpYmUpLFZ0KCgoW3QsZV0pPT57Y29uc3Qgbj10LnJ1bklkO3JldHVybiBlJiZlLmhhc093blByb3BlcnR5KG4pP2Vbbl06W119KSksd2UoKCh0LGUpPT50Lmxlbmd0aD09PWUubGVuZ3RoJiYwPT09dC5sZW5ndGh8fHQ9PT1lKSksRmUoMSkpO3RoaXMuc3RlcEluZGV4JD10aGlzLnN0b3JlLnNlbGVjdChyeix0aGlzLmNhcmRJZCksdGhpcy5sb2FkU3RhdGUkPXRoaXMuc3RvcmUuc2VsZWN0KCROLHRoaXMuY2FyZElkKTtjb25zdCBuPUt0KFtlLHRoaXMuc3RlcEluZGV4JF0pLnBpcGUoVnQoKChbdCxlXSk9Pm51bGwhPT1lJiZ0W2VdP3RbZV06bnVsbCkpKTt0aGlzLnRhZyQ9dC5waXBlKFZ0KCh0PT50LnRhZykpKSx0aGlzLnRpdGxlJD10aGlzLnRhZyQucGlwZShWdCgodD0+SDQodCx0aGlzLmdyb3VwTmFtZSkpKSksdGhpcy5ydW5JZCQ9dC5waXBlKFZ0KCh0PT50LnJ1bklkKSkpLHRoaXMuc2FtcGxlJD10LnBpcGUoVnQoKHQ9PnQuc2FtcGxlKSkpLHRoaXMubnVtU2FtcGxlJD10LnBpcGUoVnQoKHQ9PnQubnVtU2FtcGxlKSkpLHRoaXMuaW1hZ2VVcmwkPW4ucGlwZShWdCgodD0+dD90aGlzLmRhdGFTb3VyY2UuaW1hZ2VVcmwodC5pbWFnZUlkKTpudWxsKSkpLHRoaXMuc3RlcFZhbHVlcyQ9ZS5waXBlKFZ0KCh0PT50Lm1hcCgodD0+dC5zdGVwKSkpKSksdGhpcy5pc1Bpbm5lZCQ9dGhpcy5zdG9yZS5zZWxlY3QoZHosdGhpcy5jYXJkSWQpfW5nT25EZXN0cm95KCl7dGhpcy5uZ1Vuc3Vic2NyaWJlLm5leHQoKSx0aGlzLm5nVW5zdWJzY3JpYmUuY29tcGxldGUoKX19dmFyIGU2LG42LG82O2Z1bmN0aW9uIGk2KHQsZSl7MSZ0JiYoQ2YoMCwic3BhbiIpLFB1KDEsInNjYWxhciIpLE1mKCkpfWZ1bmN0aW9uIGE2KHQsZSl7MSZ0JiYoQ2YoMCwic3BhbiIpLFB1KDEsImhpc3RvZ3JhbSIpLE1mKCkpfWZ1bmN0aW9uIHI2KHQsZSl7MSZ0JiYoQ2YoMCwic3BhbiIpLFB1KDEsInVua25vd24iKSxNZigpKX1mdW5jdGlvbiBzNih0LGUpe2lmKDEmdCYmKHhmKDAsMTMpLEhtKDEsaTYsMiwwLCJzcGFuIiwxNCksSG0oMixhNiwyLDAsInNwYW4iLDE0KSxIbSgzLHI2LDIsMCwic3BhbiIsMTUpLE9mKCkpLDImdCl7Y29uc3QgdD16ZigyKTtiZigibmdTd2l0Y2giLHQuY2FyZE1ldGFkYXRhLnBsdWdpbiksRGMoMSksYmYoIm5nU3dpdGNoQ2FzZSIsdC5QbHVnaW5UeXBlLlNDQUxBUlMpLERjKDEpLGJmKCJuZ1N3aXRjaENhc2UiLHQuUGx1Z2luVHlwZS5ISVNUT0dSQU1TKX19ZnVuY3Rpb24gbDYodCxlKXsxJnQmJlBmKDApfWZ1bmN0aW9uIGM2KHQsZSl7aWYoMSZ0JiYoQ2YoMCwib3B0aW9uIiwxNiksUHUoMSksTWYoKSksMiZ0KXtjb25zdCB0PWUuJGltcGxpY2l0O2JmKCJ2YWx1ZSIsdC5pZCksRGMoMSksd3UodC5uYW1lKX19ZnVuY3Rpb24gZDYodCxlKXtpZigxJnQpe2NvbnN0IHQ9d2YoKTt4ZigwKSxDZigxLCJoMiIpLEhtKDIsczYsNCwzLCJuZy10ZW1wbGF0ZSIsbnVsbCwyLHF5KSxDZig0LCJzcGFuIiksUHUoNSwiRG93bmxvYWTCoCIpLE1mKCksSG0oNixsNiwxLDAsIm5nLWNvbnRhaW5lciIsMyksQ2YoNywic3BhbiIpLFB1KDgsIsKgZGF0YSBmb3LCoCIpLE1mKCksQ2YoOSwiY29kZSIsNCksUHUoMTApLE1mKCksTWYoKSxDZigxMSwibWF0LWRpYWxvZy1jb250ZW50IiksQ2YoMTIsIm1hdC1mb3JtLWZpZWxkIiw1KSxDZigxMywibWF0LWxhYmVsIiksUHUoMTQsIlNlbGVjdCBhIHJ1biB0byBkb3dubG9hZCBhIGRhdGEgZm9yIGEgc2VyaWVzIiksTWYoKSxDZigxNSwic2VsZWN0Iiw2KSxSZigiY2hhbmdlIiwoZnVuY3Rpb24gZShuKXtQaSh0KTtyZXR1cm4gemYoKS5ydW5TZWxlY3RlZC5lbWl0KG4udGFyZ2V0LnZhbHVlKX0pKSxDZigxNiwib3B0aW9uIiw3KSxQdSgxNywiLSIpLE1mKCksSG0oMTgsYzYsMiwyLCJvcHRpb24iLDgpLE1mKCksTWYoKSxDZigxOSwiZGl2Iiw5KSxDZigyMCwic3BhbiIpLFB1KDIxLCJEb3dubG9hZCBhc+KApiIpLE1mKCksUHUoMjIsIsKgIiksQ2YoMjMsImEiLDEwKSxQdSgyNCwiSlNPTiIpLE1mKCksQ2YoMjUsImEiLDEwKSxQdSgyNiwiQ1NWIiksTWYoKSxNZigpLE1mKCksQ2YoMjcsIm1hdC1kaWFsb2ctYWN0aW9ucyIsMTEpLENmKDI4LCJidXR0b24iLDEyKSxQdSgyOSwiQ2xvc2UiKSxNZigpLE1mKCksT2YoKX1pZigyJnQpe2NvbnN0IHQ9Rm0oMyksZT16ZigpO0RjKDYpLGJmKCJuZ1RlbXBsYXRlT3V0bGV0Iix0KSxEYygzKSxiZigidGl0bGUiLGUuY2FyZE1ldGFkYXRhLnRhZyksRGMoMSksd3UoZS5jYXJkTWV0YWRhdGEudGFnKSxEYyg1KSxiZigidmFsdWUiLGUuc2VsZWN0ZWRSdW5JZHx8IiIpLERjKDEpLGJmKCJ2YWx1ZSIsIiIpLERjKDIpLGJmKCJuZ0Zvck9mIixlLnJ1bnMpLERjKDUpLGJmKCJkaXNhYmxlZCIsIWUuZG93bmxvYWRVcmxKc29uKSgiZG93bmxvYWQiLGUuZ2V0RG93bmxvYWROYW1lKCJqc29uIikpLHltKCJocmVmIixlLmRvd25sb2FkVXJsSnNvbixYcyksRGMoMiksYmYoImRpc2FibGVkIiwhZS5kb3dubG9hZFVybENzdikoImRvd25sb2FkIixlLmdldERvd25sb2FkTmFtZSgiY3N2IikpLHltKCJocmVmIixlLmRvd25sb2FkVXJsQ3N2LFhzKX19ZnVuY3Rpb24gcDYodCxlKXsxJnQmJlB1KDAsIkxvYWRpbmcuLi4iKX10Ni7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8dDYpKGdmKGlTKSxnZihhTikpfSx0Ni7JtWNtcD1zbyh7dHlwZTp0NixzZWxlY3RvcnM6W1siaW1hZ2UtY2FyZCJdXSxpbnB1dHM6e2NhcmRJZDoiY2FyZElkIixncm91cE5hbWU6Imdyb3VwTmFtZSIscnVuQ29sb3JTY2FsZToicnVuQ29sb3JTY2FsZSJ9LG91dHB1dHM6e2Z1bGxXaWR0aENoYW5nZWQ6ImZ1bGxXaWR0aENoYW5nZWQiLHBpblN0YXRlQ2hhbmdlZDoicGluU3RhdGVDaGFuZ2VkIn0sZGVjbHM6MTQsdmFyczo0MSxjb25zdHM6W1szLCJsb2FkU3RhdGUiLCJ0aXRsZSIsInRhZyIsInJ1bklkIiwic2FtcGxlIiwibnVtU2FtcGxlIiwiaW1hZ2VVcmwiLCJzdGVwSW5kZXgiLCJzdGVwVmFsdWVzIiwiYnJpZ2h0bmVzc0luTWlsbGkiLCJjb250cmFzdEluTWlsbGkiLCJydW5Db2xvclNjYWxlIiwic2hvd0FjdHVhbFNpemUiLCJhbGxvd1RvZ2dsZUFjdHVhbFNpemUiLCJpc1Bpbm5lZCIsInN0ZXBJbmRleENoYW5nZSIsIm9uQWN0dWFsU2l6ZVRvZ2dsZSIsIm9uUGluQ2xpY2tlZCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoQ2YoMCwiaW1hZ2UtY2FyZC1jb21wb25lbnQiLDApLFJmKCJzdGVwSW5kZXhDaGFuZ2UiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uU3RlcEluZGV4Q2hhbmdlZChlKX0pKSgib25BY3R1YWxTaXplVG9nZ2xlIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uQWN0dWFsU2l6ZVRvZ2dsZSgpfSkpKCJvblBpbkNsaWNrZWQiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLnBpblN0YXRlQ2hhbmdlZC5lbWl0KGUpfSkpLF95KDEsImFzeW5jIiksX3koMiwiYXN5bmMiKSxfeSgzLCJhc3luYyIpLF95KDQsImFzeW5jIiksX3koNSwiYXN5bmMiKSxfeSg2LCJhc3luYyIpLF95KDcsImFzeW5jIiksX3koOCwiYXN5bmMiKSxfeSg5LCJhc3luYyIpLF95KDEwLCJhc3luYyIpLF95KDExLCJhc3luYyIpLF95KDEyLCJhc3luYyIpLF95KDEzLCJhc3luYyIpLE1mKCkpLDImZSYmYmYoImxvYWRTdGF0ZSIsQ3koMSwxNSxuLmxvYWRTdGF0ZSQpKSgidGl0bGUiLEN5KDIsMTcsbi50aXRsZSQpKSgidGFnIixDeSgzLDE5LG4udGFnJCkpKCJydW5JZCIsQ3koNCwyMSxuLnJ1bklkJCkpKCJzYW1wbGUiLEN5KDUsMjMsbi5zYW1wbGUkKSkoIm51bVNhbXBsZSIsQ3koNiwyNSxuLm51bVNhbXBsZSQpKSgiaW1hZ2VVcmwiLEN5KDcsMjcsbi5pbWFnZVVybCQpKSgic3RlcEluZGV4IixDeSg4LDI5LG4uc3RlcEluZGV4JCkpKCJzdGVwVmFsdWVzIixDeSg5LDMxLG4uc3RlcFZhbHVlcyQpKSgiYnJpZ2h0bmVzc0luTWlsbGkiLEN5KDEwLDMzLG4uYnJpZ2h0bmVzc0luTWlsbGkkKSkoImNvbnRyYXN0SW5NaWxsaSIsQ3koMTEsMzUsbi5jb250cmFzdEluTWlsbGkkKSkoInJ1bkNvbG9yU2NhbGUiLG4ucnVuQ29sb3JTY2FsZSkoInNob3dBY3R1YWxTaXplIixuLnNob3dBY3R1YWxTaXplKSgiYWxsb3dUb2dnbGVBY3R1YWxTaXplIiwhMT09PUN5KDEyLDM3LG4uYWN0dWFsU2l6ZUdsb2JhbFNldHRpbmckKSkoImlzUGlubmVkIixDeSgxMywzOSxuLmlzUGlubmVkJCkpfSxkaXJlY3RpdmVzOlskNF0scGlwZXM6W1Z2XSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHQ2LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6ImltYWdlLWNhcmQiLHRlbXBsYXRlOidcbiAgICA8aW1hZ2UtY2FyZC1jb21wb25lbnRcbiAgICAgIFtsb2FkU3RhdGVdPSJsb2FkU3RhdGUkIHwgYXN5bmMiXG4gICAgICBbdGl0bGVdPSJ0aXRsZSQgfCBhc3luYyJcbiAgICAgIFt0YWddPSJ0YWckIHwgYXN5bmMiXG4gICAgICBbcnVuSWRdPSJydW5JZCQgfCBhc3luYyJcbiAgICAgIFtzYW1wbGVdPSJzYW1wbGUkIHwgYXN5bmMiXG4gICAgICBbbnVtU2FtcGxlXT0ibnVtU2FtcGxlJCB8IGFzeW5jIlxuICAgICAgW2ltYWdlVXJsXT0iaW1hZ2VVcmwkIHwgYXN5bmMiXG4gICAgICBbc3RlcEluZGV4XT0ic3RlcEluZGV4JCB8IGFzeW5jIlxuICAgICAgW3N0ZXBWYWx1ZXNdPSJzdGVwVmFsdWVzJCB8IGFzeW5jIlxuICAgICAgKHN0ZXBJbmRleENoYW5nZSk9Im9uU3RlcEluZGV4Q2hhbmdlZCgkZXZlbnQpIlxuICAgICAgW2JyaWdodG5lc3NJbk1pbGxpXT0iYnJpZ2h0bmVzc0luTWlsbGkkIHwgYXN5bmMiXG4gICAgICBbY29udHJhc3RJbk1pbGxpXT0iY29udHJhc3RJbk1pbGxpJCB8IGFzeW5jIlxuICAgICAgW3J1bkNvbG9yU2NhbGVdPSJydW5Db2xvclNjYWxlIlxuICAgICAgW3Nob3dBY3R1YWxTaXplXT0ic2hvd0FjdHVhbFNpemUiXG4gICAgICBbYWxsb3dUb2dnbGVBY3R1YWxTaXplXT0iKGFjdHVhbFNpemVHbG9iYWxTZXR0aW5nJCB8IGFzeW5jKSA9PT0gZmFsc2UiXG4gICAgICBbaXNQaW5uZWRdPSJpc1Bpbm5lZCQgfCBhc3luYyJcbiAgICAgIChvbkFjdHVhbFNpemVUb2dnbGUpPSJvbkFjdHVhbFNpemVUb2dnbGUoKSJcbiAgICAgIChvblBpbkNsaWNrZWQpPSJwaW5TdGF0ZUNoYW5nZWQuZW1pdCgkZXZlbnQpIlxuICAgID48L2ltYWdlLWNhcmQtY29tcG9uZW50PlxuICAnLGNoYW5nZURldGVjdGlvbjpqbi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTppU30se3R5cGU6YU59XX0pLHtjYXJkSWQ6W3t0eXBlOlJffV0sZ3JvdXBOYW1lOlt7dHlwZTpSX31dLHJ1bkNvbG9yU2NhbGU6W3t0eXBlOlJffV0sZnVsbFdpZHRoQ2hhbmdlZDpbe3R5cGU6RV99XSxwaW5TdGF0ZUNoYW5nZWQ6W3t0eXBlOkVffV19KSwoZnVuY3Rpb24odCl7dFt0LlNWRz0wXT0iU1ZHIix0W3QuV0VCR0w9MV09IldFQkdMIn0pKGU2fHwoZTY9e30pKSwoZnVuY3Rpb24odCl7dFt0LkxJTkVBUj0wXT0iTElORUFSIix0W3QuTE9HMTA9MV09IkxPRzEwIix0W3QuVElNRT0yXT0iVElNRSJ9KShuNnx8KG42PXt9KSk7Y2xhc3MgbTZ7Y29uc3RydWN0b3IoKXt0aGlzLnJ1blNlbGVjdGVkPW5ldyBTeSx0aGlzLlBsdWdpblR5cGU9S1R9Z2V0RG93bmxvYWROYW1lKHQpe2NvbnN0IGU9dGhpcy5ydW5zLmZpbmQoKHQ9PnQuaWQ9PT10aGlzLnNlbGVjdGVkUnVuSWQpKTtyZXR1cm4gZT9gJHtlLm5hbWV9LiR7dH1gOiIifX1tNi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8bTYpfSxtNi7JtWNtcD1zbyh7dHlwZTptNixzZWxlY3RvcnM6W1siZGF0YV9kb3dubG9hZF9kaWFsb2dfY29tcG9uZW50Il1dLGlucHV0czp7Y2FyZE1ldGFkYXRhOiJjYXJkTWV0YWRhdGEiLHJ1bnM6InJ1bnMiLHNlbGVjdGVkUnVuSWQ6InNlbGVjdGVkUnVuSWQiLGRvd25sb2FkVXJsQ3N2OiJkb3dubG9hZFVybENzdiIsZG93bmxvYWRVcmxKc29uOiJkb3dubG9hZFVybEpzb24ifSxvdXRwdXRzOntydW5TZWxlY3RlZDoicnVuU2VsZWN0ZWQifSxkZWNsczozLHZhcnM6Mixjb25zdHM6W1s0LCJuZ0lmIiwibmdJZkVsc2UiXSxbIm5vQ2FyZE1ldGFkYXRhIiwiIl0sWyJkYXRhTmFtZSIsIiJdLFs0LCJuZ1RlbXBsYXRlT3V0bGV0Il0sWzEsInRhZy1uYW1lIiwzLCJ0aXRsZSJdLFsiYXBwZWFyYW5jZSIsImZpbGwiLDEsInJ1bi1zZWxlY3RvciJdLFsibWF0TmF0aXZlQ29udHJvbCIsIiIsIm5hbWUiLCJydW4iLCJjZGtGb2N1c0luaXRpYWwiLCIiLCJyZXF1aXJlZCIsIiIsMywidmFsdWUiLCJjaGFuZ2UiXSxbInNlbGVjdGVkIiwiIiwzLCJ2YWx1ZSJdLFszLCJ2YWx1ZSIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWzEsImRvd25sb2FkLWNvbnRyb2xzIl0sWyJtYXQtc3Ryb2tlZC1idXR0b24iLCIiLDMsImRpc2FibGVkIiwiZG93bmxvYWQiXSxbImFsaWduIiwiZW5kIl0sWyJtYXQtYnV0dG9uIiwiIiwibWF0LWRpYWxvZy1jbG9zZSIsIiJdLFszLCJuZ1N3aXRjaCJdLFs0LCJuZ1N3aXRjaENhc2UiXSxbNCwiTmdTd2l0Y2hEZWZhdWx0Il0sWzMsInZhbHVlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJihIbSgwLGQ2LDMwLDEyLCJuZy1jb250YWluZXIiLDApLEhtKDEscDYsMSwwLCJuZy10ZW1wbGF0ZSIsbnVsbCwxLHF5KSksMiZlKXtjb25zdCB0PUZtKDIpO2JmKCJuZ0lmIixuLmNhcmRNZXRhZGF0YSkoIm5nSWZFbHNlIix0KX19LGRpcmVjdGl2ZXM6W1B2LEl2LCRZLF9VLGNVLEFaLGtHLEVHLHh2LHpMLHRxLE5MLEpZLER2LFJ2XSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX1oMltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEuMjVlbTtvdmVyZmxvdy13cmFwOmJyZWFrLXdvcmR9LnJ1bi1zZWxlY3Rvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOi45ZW07d2lkdGg6MTAwJX0uZG93bmxvYWQtY29udHJvbHNbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTouOWVtfS5kb3dubG9hZC1jb250cm9sc1tfbmdjb250ZW50LSVDT01QJV0gICBhW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46M3B4IDEwcHggM3B4IDB9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKG02LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6ImRhdGFfZG93bmxvYWRfZGlhbG9nX2NvbXBvbmVudCIsdGVtcGxhdGVVcmw6ImRhdGFfZG93bmxvYWRfZGlhbG9nX2NvbXBvbmVudC5uZy5odG1sIixzdHlsZVVybHM6WyJkYXRhX2Rvd25sb2FkX2RpYWxvZ19jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaH1dfV0sbnVsbCx7Y2FyZE1ldGFkYXRhOlt7dHlwZTpSX31dLHJ1bnM6W3t0eXBlOlJffV0sc2VsZWN0ZWRSdW5JZDpbe3R5cGU6Ul99XSxkb3dubG9hZFVybENzdjpbe3R5cGU6Ul99XSxkb3dubG9hZFVybEpzb246W3t0eXBlOlJffV0scnVuU2VsZWN0ZWQ6W3t0eXBlOkVffV19KTtjbGFzcyBmNntjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5zZWxlY3RlZFJ1bklkJD1uZXcgaihudWxsKSx0aGlzLmNhcmRNZXRhZGF0YSQ9dC5zZWxlY3Qobnosbi5jYXJkSWQpLnBpcGUodWUoKHQ9PkJvb2xlYW4odCkpKSksdGhpcy5kb3dubG9hZFVybENzdiQ9S3QoW3Quc2VsZWN0KG56LG4uY2FyZElkKSx0aGlzLnNlbGVjdGVkUnVuSWQkXSkucGlwZShWdCgoKFt0LG5dKT0+dCYmbj9lLmRvd25sb2FkVXJsKHQucGx1Z2luLHQudGFnLG4sImNzdiIpOm51bGwpKSxCZShudWxsKSksdGhpcy5kb3dubG9hZFVybEpzb24kPUt0KFt0LnNlbGVjdChueixuLmNhcmRJZCksdGhpcy5zZWxlY3RlZFJ1bklkJF0pLnBpcGUoVnQoKChbdCxuXSk9PnQmJm4/ZS5kb3dubG9hZFVybCh0LnBsdWdpbix0LnRhZyxuLCJqc29uIik6bnVsbCkpLEJlKG51bGwpKSx0aGlzLnJ1bnMkPUt0KFt0LnNlbGVjdChYeiksdC5zZWxlY3QodHosbi5jYXJkSWQpXSkucGlwZShWdCgoKFt0LGVdKT0+ZT9PYmplY3Qua2V5cyhlKS5tYXAoKGU9PnQuZ2V0KGUpKSkuZmlsdGVyKEJvb2xlYW4pOltdKSkpfX1mdW5jdGlvbiB1Nih0LGUpe3JldHVybiB0PGU/LTE6dD5lPzE6dD49ZT8wOk5hTn1mdW5jdGlvbiBnNih0KXtyZXR1cm4gMT09PXQubGVuZ3RoJiYodD0oZnVuY3Rpb24gZSh0KXtyZXR1cm4gZnVuY3Rpb24oZSxuKXtyZXR1cm4gdTYodChlKSxuKX19KSh0KSkse2xlZnQ6ZnVuY3Rpb24oZSxuLG8saSl7Zm9yKG51bGw9PW8mJihvPTApLG51bGw9PWkmJihpPWUubGVuZ3RoKTtvPGk7KXt2YXIgYT1vK2k+Pj4xO3QoZVthXSxuKTwwP289YSsxOmk9YX1yZXR1cm4gb30scmlnaHQ6ZnVuY3Rpb24oZSxuLG8saSl7Zm9yKG51bGw9PW8mJihvPTApLG51bGw9PWkmJihpPWUubGVuZ3RoKTtvPGk7KXt2YXIgYT1vK2k+Pj4xO3QoZVthXSxuKT4wP2k9YTpvPWErMX1yZXR1cm4gb319fWY2Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxmNikoZ2YoaVMpLGdmKGFOKSxnZihVWSkpfSxmNi7JtWNtcD1zbyh7dHlwZTpmNixzZWxlY3RvcnM6W1siZGF0YV9kb3dubG9hZF9kaWFsb2ciXV0sZGVjbHM6Nix2YXJzOjE1LGNvbnN0czpbWzMsImNhcmRNZXRhZGF0YSIsInJ1bnMiLCJzZWxlY3RlZFJ1bklkIiwiZG93bmxvYWRVcmxDc3YiLCJkb3dubG9hZFVybEpzb24iLCJydW5TZWxlY3RlZCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoQ2YoMCwiZGF0YV9kb3dubG9hZF9kaWFsb2dfY29tcG9uZW50IiwwKSxSZigicnVuU2VsZWN0ZWQiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLnNlbGVjdGVkUnVuSWQkLm5leHQoZSl9KSksX3koMSwiYXN5bmMiKSxfeSgyLCJhc3luYyIpLF95KDMsImFzeW5jIiksX3koNCwiYXN5bmMiKSxfeSg1LCJhc3luYyIpLE1mKCkpLDImZSYmYmYoImNhcmRNZXRhZGF0YSIsQ3koMSw1LG4uY2FyZE1ldGFkYXRhJCkpKCJydW5zIixDeSgyLDcsbi5ydW5zJCkpKCJzZWxlY3RlZFJ1bklkIixDeSgzLDksbi5zZWxlY3RlZFJ1bklkJCkpKCJkb3dubG9hZFVybENzdiIsQ3koNCwxMSxuLmRvd25sb2FkVXJsQ3N2JCkpKCJkb3dubG9hZFVybEpzb24iLEN5KDUsMTMsbi5kb3dubG9hZFVybEpzb24kKSl9LGRpcmVjdGl2ZXM6W202XSxwaXBlczpbVnZdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoZjYsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoiZGF0YV9kb3dubG9hZF9kaWFsb2ciLHRlbXBsYXRlOic8ZGF0YV9kb3dubG9hZF9kaWFsb2dfY29tcG9uZW50XG4gICAgW2NhcmRNZXRhZGF0YV09ImNhcmRNZXRhZGF0YSQgfCBhc3luYyJcbiAgICBbcnVuc109InJ1bnMkIHwgYXN5bmMiXG4gICAgW3NlbGVjdGVkUnVuSWRdPSJzZWxlY3RlZFJ1bklkJCB8IGFzeW5jIlxuICAgIFtkb3dubG9hZFVybENzdl09ImRvd25sb2FkVXJsQ3N2JCB8IGFzeW5jIlxuICAgIFtkb3dubG9hZFVybEpzb25dPSJkb3dubG9hZFVybEpzb24kIHwgYXN5bmMiXG4gICAgKHJ1blNlbGVjdGVkKT0ic2VsZWN0ZWRSdW5JZCQubmV4dCgkZXZlbnQpIlxuICA+PC9kYXRhX2Rvd25sb2FkX2RpYWxvZ19jb21wb25lbnQ+JyxjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNofV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6aVN9LHt0eXBlOmFOfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbVVldfV19XX0pLG51bGwpLChmdW5jdGlvbih0KXt0W3QuT1JJR0lOQUw9MF09Ik9SSUdJTkFMIix0W3QuREVSSVZFRD0xXT0iREVSSVZFRCJ9KShvNnx8KG82PXt9KSk7dmFyIGg2PWc2KHU2KS5yaWdodDtmdW5jdGlvbiBiNih0LGUpe3ZhciBuLG8saSxhPXQubGVuZ3RoLHI9LTE7aWYobnVsbD09ZSl7Zm9yKDsrK3I8YTspaWYobnVsbCE9KG49dFtyXSkmJm4+PW4pZm9yKG89aT1uOysrcjxhOyludWxsIT0obj10W3JdKSYmKG8+biYmKG89biksaTxuJiYoaT1uKSl9ZWxzZSBmb3IoOysrcjxhOylpZihudWxsIT0obj1lKHRbcl0scix0KSkmJm4+PW4pZm9yKG89aT1uOysrcjxhOyludWxsIT0obj1lKHRbcl0scix0KSkmJihvPm4mJihvPW4pLGk8biYmKGk9bikpO3JldHVybltvLGldfXZhciB5Nj1BcnJheS5wcm90b3R5cGUuc2xpY2U7ZnVuY3Rpb24gXzYodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fWZ1bmN0aW9uIEM2KHQpe3JldHVybiB0fWZ1bmN0aW9uIE02KHQsZSxuKXt0PSt0LGU9K2Usbj0oaT1hcmd1bWVudHMubGVuZ3RoKTwyPyhlPXQsdD0wLDEpOmk8Mz8xOituO2Zvcih2YXIgbz0tMSxpPTB8TWF0aC5tYXgoMCxNYXRoLmNlaWwoKGUtdCkvbikpLGE9bmV3IEFycmF5KGkpOysrbzxpOylhW29dPXQrbypuO3JldHVybiBhfXZhciB2Nj1NYXRoLnNxcnQoNTApLHg2PU1hdGguc3FydCgxMCksTzY9TWF0aC5zcXJ0KDIpO2Z1bmN0aW9uIFA2KHQsZSxuKXt2YXIgbyxpLGEscixzPS0xO2lmKG49K24sKHQ9K3QpPT09KGU9K2UpJiZuPjApcmV0dXJuW3RdO2lmKChvPWU8dCkmJihpPXQsdD1lLGU9aSksMD09PShyPXc2KHQsZSxuKSl8fCFpc0Zpbml0ZShyKSlyZXR1cm5bXTtpZihyPjApZm9yKHQ9TWF0aC5jZWlsKHQvciksZT1NYXRoLmZsb29yKGUvciksYT1uZXcgQXJyYXkoaT1NYXRoLmNlaWwoZS10KzEpKTsrK3M8aTspYVtzXT0odCtzKSpyO2Vsc2UgZm9yKHQ9TWF0aC5mbG9vcih0KnIpLGU9TWF0aC5jZWlsKGUqciksYT1uZXcgQXJyYXkoaT1NYXRoLmNlaWwodC1lKzEpKTsrK3M8aTspYVtzXT0odC1zKS9yO3JldHVybiBvJiZhLnJldmVyc2UoKSxhfWZ1bmN0aW9uIHc2KHQsZSxuKXt2YXIgbz0oZS10KS9NYXRoLm1heCgwLG4pLGk9TWF0aC5mbG9vcihNYXRoLmxvZyhvKS9NYXRoLkxOMTApLGE9by9NYXRoLnBvdygxMCxpKTtyZXR1cm4gaT49MD8oYT49djY/MTA6YT49eDY/NTphPj1PNj8yOjEpKk1hdGgucG93KDEwLGkpOi1NYXRoLnBvdygxMCwtaSkvKGE+PXY2PzEwOmE+PXg2PzU6YT49TzY/MjoxKX1mdW5jdGlvbiBrNih0LGUsbil7dmFyIG89TWF0aC5hYnMoZS10KS9NYXRoLm1heCgwLG4pLGk9TWF0aC5wb3coMTAsTWF0aC5mbG9vcihNYXRoLmxvZyhvKS9NYXRoLkxOMTApKSxhPW8vaTtyZXR1cm4gYT49djY/aSo9MTA6YT49eDY/aSo9NTphPj1PNiYmKGkqPTIpLGU8dD8taTppfWZ1bmN0aW9uIFM2KHQpe3JldHVybiBNYXRoLmNlaWwoTWF0aC5sb2codC5sZW5ndGgpL01hdGguTE4yKSsxfWZ1bmN0aW9uIEQ2KCl7dmFyIHQ9QzYsZT1iNixuPVM2O2Z1bmN0aW9uIG8obyl7dmFyIGksYSxyPW8ubGVuZ3RoLHM9bmV3IEFycmF5KHIpO2ZvcihpPTA7aTxyOysraSlzW2ldPXQob1tpXSxpLG8pO3ZhciBsPWUocyksYz1sWzBdLGQ9bFsxXSxwPW4ocyxjLGQpO0FycmF5LmlzQXJyYXkocCl8fChwPWs2KGMsZCxwKSxwPU02KE1hdGguY2VpbChjL3ApKnAsZCxwKSk7Zm9yKHZhciBtPXAubGVuZ3RoO3BbMF08PWM7KXAuc2hpZnQoKSwtLW07Zm9yKDtwW20tMV0+ZDspcC5wb3AoKSwtLW07dmFyIGYsdT1uZXcgQXJyYXkobSsxKTtmb3IoaT0wO2k8PW07KytpKShmPXVbaV09W10pLngwPWk+MD9wW2ktMV06YyxmLngxPWk8bT9wW2ldOmQ7Zm9yKGk9MDtpPHI7KytpKWM8PShhPXNbaV0pJiZhPD1kJiZ1W2g2KHAsYSwwLG0pXS5wdXNoKG9baV0pO3JldHVybiB1fXJldHVybiBvLnZhbHVlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6XzYoZSksbyk6dH0sby5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpfNihbdFswXSx0WzFdXSksbyk6ZX0sby50aHJlc2hvbGRzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6QXJyYXkuaXNBcnJheSh0KT9fNih5Ni5jYWxsKHQpKTpfNih0KSxvKTpufSxvfXZhciBSNj1BcnJheS5wcm90b3R5cGUuc2xpY2U7ZnVuY3Rpb24gRTYodCl7cmV0dXJuIHR9dmFyIEE2PTFlLTY7ZnVuY3Rpb24gVDYodCl7cmV0dXJuInRyYW5zbGF0ZSgiKyh0Ky41KSsiLDApIn1mdW5jdGlvbiBONih0KXtyZXR1cm4idHJhbnNsYXRlKDAsIisodCsuNSkrIikifWZ1bmN0aW9uIHo2KHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4rdChlKX19ZnVuY3Rpb24gSTYodCl7dmFyIGU9TWF0aC5tYXgoMCx0LmJhbmR3aWR0aCgpLTEpLzI7cmV0dXJuIHQucm91bmQoKSYmKGU9TWF0aC5yb3VuZChlKSksZnVuY3Rpb24obil7cmV0dXJuK3QobikrZX19ZnVuY3Rpb24gSDYoKXtyZXR1cm4hdGhpcy5fX2F4aXN9ZnVuY3Rpb24gRjYodCxlKXt2YXIgbj1bXSxvPW51bGwsaT1udWxsLGE9NixyPTYscz0zLGw9MT09PXR8fDQ9PT10Py0xOjEsYz00PT09dHx8Mj09PXQ/IngiOiJ5IixkPTE9PT10fHwzPT09dD9UNjpONjtmdW5jdGlvbiBwKHApe3ZhciBtPW51bGw9PW8/ZS50aWNrcz9lLnRpY2tzLmFwcGx5KGUsbik6ZS5kb21haW4oKTpvLGY9bnVsbD09aT9lLnRpY2tGb3JtYXQ/ZS50aWNrRm9ybWF0LmFwcGx5KGUsbik6RTY6aSx1PU1hdGgubWF4KGEsMCkrcyxnPWUucmFuZ2UoKSxoPStnWzBdKy41LGI9K2dbZy5sZW5ndGgtMV0rLjUseT0oZS5iYW5kd2lkdGg/STY6ejYpKGUuY29weSgpKSxfPXAuc2VsZWN0aW9uP3Auc2VsZWN0aW9uKCk6cCxDPV8uc2VsZWN0QWxsKCIuZG9tYWluIikuZGF0YShbbnVsbF0pLE09Xy5zZWxlY3RBbGwoIi50aWNrIikuZGF0YShtLGUpLm9yZGVyKCksdj1NLmV4aXQoKSx4PU0uZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsInRpY2siKSxPPU0uc2VsZWN0KCJsaW5lIiksUD1NLnNlbGVjdCgidGV4dCIpO0M9Qy5tZXJnZShDLmVudGVyKCkuaW5zZXJ0KCJwYXRoIiwiLnRpY2siKS5hdHRyKCJjbGFzcyIsImRvbWFpbiIpLmF0dHIoInN0cm9rZSIsImN1cnJlbnRDb2xvciIpKSxNPU0ubWVyZ2UoeCksTz1PLm1lcmdlKHguYXBwZW5kKCJsaW5lIikuYXR0cigic3Ryb2tlIiwiY3VycmVudENvbG9yIikuYXR0cihjKyIyIixsKmEpKSxQPVAubWVyZ2UoeC5hcHBlbmQoInRleHQiKS5hdHRyKCJmaWxsIiwiY3VycmVudENvbG9yIikuYXR0cihjLGwqdSkuYXR0cigiZHkiLDE9PT10PyIwZW0iOjM9PT10PyIwLjcxZW0iOiIwLjMyZW0iKSkscCE9PV8mJihDPUMudHJhbnNpdGlvbihwKSxNPU0udHJhbnNpdGlvbihwKSxPPU8udHJhbnNpdGlvbihwKSxQPVAudHJhbnNpdGlvbihwKSx2PXYudHJhbnNpdGlvbihwKS5hdHRyKCJvcGFjaXR5IixBNikuYXR0cigidHJhbnNmb3JtIiwoZnVuY3Rpb24odCl7cmV0dXJuIGlzRmluaXRlKHQ9eSh0KSk/ZCh0KTp0aGlzLmdldEF0dHJpYnV0ZSgidHJhbnNmb3JtIil9KSkseC5hdHRyKCJvcGFjaXR5IixBNikuYXR0cigidHJhbnNmb3JtIiwoZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5wYXJlbnROb2RlLl9fYXhpcztyZXR1cm4gZChlJiZpc0Zpbml0ZShlPWUodCkpP2U6eSh0KSl9KSkpLHYucmVtb3ZlKCksQy5hdHRyKCJkIiw0PT09dHx8Mj09dD9yPyJNIitsKnIrIiwiK2grIkgwLjVWIitiKyJIIitsKnI6Ik0wLjUsIitoKyJWIitiOnI/Ik0iK2grIiwiK2wqcisiVjAuNUgiK2IrIlYiK2wqcjoiTSIraCsiLDAuNUgiK2IpLE0uYXR0cigib3BhY2l0eSIsMSkuYXR0cigidHJhbnNmb3JtIiwoZnVuY3Rpb24odCl7cmV0dXJuIGQoeSh0KSl9KSksTy5hdHRyKGMrIjIiLGwqYSksUC5hdHRyKGMsbCp1KS50ZXh0KGYpLF8uZmlsdGVyKEg2KS5hdHRyKCJmaWxsIiwibm9uZSIpLmF0dHIoImZvbnQtc2l6ZSIsMTApLmF0dHIoImZvbnQtZmFtaWx5Iiwic2Fucy1zZXJpZiIpLmF0dHIoInRleHQtYW5jaG9yIiwyPT09dD8ic3RhcnQiOjQ9PT10PyJlbmQiOiJtaWRkbGUiKSxfLmVhY2goKGZ1bmN0aW9uKCl7dGhpcy5fX2F4aXM9eX0pKX1yZXR1cm4gcC5zY2FsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10LHApOmV9LHAudGlja3M9ZnVuY3Rpb24oKXtyZXR1cm4gbj1SNi5jYWxsKGFyZ3VtZW50cykscH0scC50aWNrQXJndW1lbnRzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPW51bGw9PXQ/W106UjYuY2FsbCh0KSxwKTpuLnNsaWNlKCl9LHAudGlja1ZhbHVlcz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz1udWxsPT10P251bGw6UjYuY2FsbCh0KSxwKTpvJiZvLnNsaWNlKCl9LHAudGlja0Zvcm1hdD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT10LHApOml9LHAudGlja1NpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9cj0rdCxwKTphfSxwLnRpY2tTaXplSW5uZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9K3QscCk6YX0scC50aWNrU2l6ZU91dGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSt0LHApOnJ9LHAudGlja1BhZGRpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9K3QscCk6c30scH1mdW5jdGlvbiBMNih0KXtyZXR1cm4gRjYoMix0KX1mdW5jdGlvbiBCNih0KXtyZXR1cm4gRjYoMyx0KX12YXIgVjY9e3ZhbHVlOmZ1bmN0aW9uKCl7fX07ZnVuY3Rpb24gajYoKXtmb3IodmFyIHQsZT0wLG49YXJndW1lbnRzLmxlbmd0aCxvPXt9O2U8bjsrK2Upe2lmKCEodD1hcmd1bWVudHNbZV0rIiIpfHx0IGluIG98fC9bXHMuXS8udGVzdCh0KSl0aHJvdyBuZXcgRXJyb3IoImlsbGVnYWwgdHlwZTogIit0KTtvW3RdPVtdfXJldHVybiBuZXcgVTYobyl9ZnVuY3Rpb24gVTYodCl7dGhpcy5fPXR9ZnVuY3Rpb24gVzYodCxlKXtyZXR1cm4gdC50cmltKCkuc3BsaXQoL158XHMrLykubWFwKChmdW5jdGlvbih0KXt2YXIgbj0iIixvPXQuaW5kZXhPZigiLiIpO2lmKG8+PTAmJihuPXQuc2xpY2UobysxKSx0PXQuc2xpY2UoMCxvKSksdCYmIWUuaGFzT3duUHJvcGVydHkodCkpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHR5cGU6ICIrdCk7cmV0dXJue3R5cGU6dCxuYW1lOm59fSkpfWZ1bmN0aW9uIEc2KHQsZSl7Zm9yKHZhciBuLG89MCxpPXQubGVuZ3RoO288aTsrK28paWYoKG49dFtvXSkubmFtZT09PWUpcmV0dXJuIG4udmFsdWV9ZnVuY3Rpb24gWTYodCxlLG4pe2Zvcih2YXIgbz0wLGk9dC5sZW5ndGg7bzxpOysrbylpZih0W29dLm5hbWU9PT1lKXt0W29dPVY2LHQ9dC5zbGljZSgwLG8pLmNvbmNhdCh0LnNsaWNlKG8rMSkpO2JyZWFrfXJldHVybiBudWxsIT1uJiZ0LnB1c2goe25hbWU6ZSx2YWx1ZTpufSksdH1VNi5wcm90b3R5cGU9ajYucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpVNixvbjpmdW5jdGlvbih0LGUpe3ZhciBuLG89dGhpcy5fLGk9VzYodCsiIixvKSxhPS0xLHI9aS5sZW5ndGg7aWYoIShhcmd1bWVudHMubGVuZ3RoPDIpKXtpZihudWxsIT1lJiYiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgY2FsbGJhY2s6ICIrZSk7Zm9yKDsrK2E8cjspaWYobj0odD1pW2FdKS50eXBlKW9bbl09WTYob1tuXSx0Lm5hbWUsZSk7ZWxzZSBpZihudWxsPT1lKWZvcihuIGluIG8pb1tuXT1ZNihvW25dLHQubmFtZSxudWxsKTtyZXR1cm4gdGhpc31mb3IoOysrYTxyOylpZigobj0odD1pW2FdKS50eXBlKSYmKG49RzYob1tuXSx0Lm5hbWUpKSlyZXR1cm4gbn0sY29weTpmdW5jdGlvbigpe3ZhciB0PXt9LGU9dGhpcy5fO2Zvcih2YXIgbiBpbiBlKXRbbl09ZVtuXS5zbGljZSgpO3JldHVybiBuZXcgVTYodCl9LGNhbGw6ZnVuY3Rpb24odCxlKXtpZigobj1hcmd1bWVudHMubGVuZ3RoLTIpPjApZm9yKHZhciBuLG8saT1uZXcgQXJyYXkobiksYT0wO2E8bjsrK2EpaVthXT1hcmd1bWVudHNbYSsyXTtpZighdGhpcy5fLmhhc093blByb3BlcnR5KHQpKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0eXBlOiAiK3QpO2ZvcihhPTAsbj0obz10aGlzLl9bdF0pLmxlbmd0aDthPG47KythKW9bYV0udmFsdWUuYXBwbHkoZSxpKX0sYXBwbHk6ZnVuY3Rpb24odCxlLG4pe2lmKCF0aGlzLl8uaGFzT3duUHJvcGVydHkodCkpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHR5cGU6ICIrdCk7Zm9yKHZhciBvPXRoaXMuX1t0XSxpPTAsYT1vLmxlbmd0aDtpPGE7KytpKW9baV0udmFsdWUuYXBwbHkoZSxuKX19O3ZhciBxNj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIsWjY9e3N2ZzoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHhodG1sOnE2LHhsaW5rOiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIix4bWw6Imh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvIn07ZnVuY3Rpb24gWDYodCl7dmFyIGU9dCs9IiIsbj1lLmluZGV4T2YoIjoiKTtyZXR1cm4gbj49MCYmInhtbG5zIiE9PShlPXQuc2xpY2UoMCxuKSkmJih0PXQuc2xpY2UobisxKSksWjYuaGFzT3duUHJvcGVydHkoZSk/e3NwYWNlOlo2W2VdLGxvY2FsOnR9OnR9ZnVuY3Rpb24gSzYodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vd25lckRvY3VtZW50LG49dGhpcy5uYW1lc3BhY2VVUkk7cmV0dXJuIG49PT1xNiYmZS5kb2N1bWVudEVsZW1lbnQubmFtZXNwYWNlVVJJPT09cTY/ZS5jcmVhdGVFbGVtZW50KHQpOmUuY3JlYXRlRWxlbWVudE5TKG4sdCl9fWZ1bmN0aW9uIEo2KHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0aGlzLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHQuc3BhY2UsdC5sb2NhbCl9fWZ1bmN0aW9uIFE2KHQpe3ZhciBlPVg2KHQpO3JldHVybihlLmxvY2FsP0o2Oks2KShlKX1mdW5jdGlvbiAkNigpe31mdW5jdGlvbiB0Nyh0KXtyZXR1cm4gbnVsbD09dD8kNjpmdW5jdGlvbigpe3JldHVybiB0aGlzLnF1ZXJ5U2VsZWN0b3IodCl9fWZ1bmN0aW9uIGU3KCl7cmV0dXJuW119ZnVuY3Rpb24gbjcodCl7cmV0dXJuIG51bGw9PXQ/ZTc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5xdWVyeVNlbGVjdG9yQWxsKHQpfX1mdW5jdGlvbiBvNyh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXRjaGVzKHQpfX1mdW5jdGlvbiBpNyh0KXtyZXR1cm4gbmV3IEFycmF5KHQubGVuZ3RoKX1mdW5jdGlvbiBhNyh0LGUpe3RoaXMub3duZXJEb2N1bWVudD10Lm93bmVyRG9jdW1lbnQsdGhpcy5uYW1lc3BhY2VVUkk9dC5uYW1lc3BhY2VVUkksdGhpcy5fbmV4dD1udWxsLHRoaXMuX3BhcmVudD10LHRoaXMuX19kYXRhX189ZX1hNy5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmE3LGFwcGVuZENoaWxkOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYXJlbnQuaW5zZXJ0QmVmb3JlKHQsdGhpcy5fbmV4dCl9LGluc2VydEJlZm9yZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9wYXJlbnQuaW5zZXJ0QmVmb3JlKHQsZSl9LHF1ZXJ5U2VsZWN0b3I6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3BhcmVudC5xdWVyeVNlbGVjdG9yKHQpfSxxdWVyeVNlbGVjdG9yQWxsOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYXJlbnQucXVlcnlTZWxlY3RvckFsbCh0KX19O2Z1bmN0aW9uIHI3KHQsZSxuLG8saSxhKXtmb3IodmFyIHIscz0wLGw9ZS5sZW5ndGgsYz1hLmxlbmd0aDtzPGM7KytzKShyPWVbc10pPyhyLl9fZGF0YV9fPWFbc10sb1tzXT1yKTpuW3NdPW5ldyBhNyh0LGFbc10pO2Zvcig7czxsOysrcykocj1lW3NdKSYmKGlbc109cil9ZnVuY3Rpb24gczcodCxlLG4sbyxpLGEscil7dmFyIHMsbCxjLGQ9e30scD1lLmxlbmd0aCxtPWEubGVuZ3RoLGY9bmV3IEFycmF5KHApO2ZvcihzPTA7czxwOysrcykobD1lW3NdKSYmKGZbc109Yz0iJCIrci5jYWxsKGwsbC5fX2RhdGFfXyxzLGUpLGMgaW4gZD9pW3NdPWw6ZFtjXT1sKTtmb3Iocz0wO3M8bTsrK3MpKGw9ZFtjPSIkIityLmNhbGwodCxhW3NdLHMsYSldKT8ob1tzXT1sLGwuX19kYXRhX189YVtzXSxkW2NdPW51bGwpOm5bc109bmV3IGE3KHQsYVtzXSk7Zm9yKHM9MDtzPHA7KytzKShsPWVbc10pJiZkW2Zbc11dPT09bCYmKGlbc109bCl9ZnVuY3Rpb24gbDcodCxlKXtyZXR1cm4gdDxlPy0xOnQ+ZT8xOnQ+PWU/MDpOYU59ZnVuY3Rpb24gYzcodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGUodCl9fWZ1bmN0aW9uIGQ3KHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMucmVtb3ZlQXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKX19ZnVuY3Rpb24gcDcodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnNldEF0dHJpYnV0ZSh0LGUpfX1mdW5jdGlvbiBtNyh0LGUpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsLGUpfX1mdW5jdGlvbiBmNyh0LGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciBuPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PW4/dGhpcy5yZW1vdmVBdHRyaWJ1dGUodCk6dGhpcy5zZXRBdHRyaWJ1dGUodCxuKX19ZnVuY3Rpb24gdTcodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1uP3RoaXMucmVtb3ZlQXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKTp0aGlzLnNldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCxuKX19ZnVuY3Rpb24gZzcodCl7cmV0dXJuIHQub3duZXJEb2N1bWVudCYmdC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3fHx0LmRvY3VtZW50JiZ0fHx0LmRlZmF1bHRWaWV3fWZ1bmN0aW9uIGg3KHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkodCl9fWZ1bmN0aW9uIGI3KHQsZSxuKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnN0eWxlLnNldFByb3BlcnR5KHQsZSxuKX19ZnVuY3Rpb24geTcodCxlLG4pe3JldHVybiBmdW5jdGlvbigpe3ZhciBvPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PW8/dGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0KTp0aGlzLnN0eWxlLnNldFByb3BlcnR5KHQsbyxuKX19ZnVuY3Rpb24gXzcodCxlKXtyZXR1cm4gdC5zdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKGUpfHxnNyh0KS5nZXRDb21wdXRlZFN0eWxlKHQsbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZShlKX1mdW5jdGlvbiBDNyh0KXtyZXR1cm4gZnVuY3Rpb24oKXtkZWxldGUgdGhpc1t0XX19ZnVuY3Rpb24gTTcodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzW3RdPWV9fWZ1bmN0aW9uIHY3KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7bnVsbD09bj9kZWxldGUgdGhpc1t0XTp0aGlzW3RdPW59fWZ1bmN0aW9uIHg3KHQpe3JldHVybiB0LnRyaW0oKS5zcGxpdCgvXnxccysvKX1mdW5jdGlvbiBPNyh0KXtyZXR1cm4gdC5jbGFzc0xpc3R8fG5ldyBQNyh0KX1mdW5jdGlvbiBQNyh0KXt0aGlzLl9ub2RlPXQsdGhpcy5fbmFtZXM9eDcodC5nZXRBdHRyaWJ1dGUoImNsYXNzIil8fCIiKX1mdW5jdGlvbiB3Nyh0LGUpe2Zvcih2YXIgbj1PNyh0KSxvPS0xLGk9ZS5sZW5ndGg7KytvPGk7KW4uYWRkKGVbb10pfWZ1bmN0aW9uIGs3KHQsZSl7Zm9yKHZhciBuPU83KHQpLG89LTEsaT1lLmxlbmd0aDsrK288aTspbi5yZW1vdmUoZVtvXSl9ZnVuY3Rpb24gUzcodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dzcodGhpcyx0KX19ZnVuY3Rpb24gRDcodCl7cmV0dXJuIGZ1bmN0aW9uKCl7azcodGhpcyx0KX19ZnVuY3Rpb24gUjcodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXsoZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk/dzc6azcpKHRoaXMsdCl9fWZ1bmN0aW9uIEU3KCl7dGhpcy50ZXh0Q29udGVudD0iIn1mdW5jdGlvbiBBNyh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnRleHRDb250ZW50PXR9fWZ1bmN0aW9uIFQ3KHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMudGV4dENvbnRlbnQ9bnVsbD09ZT8iIjplfX1mdW5jdGlvbiBONygpe3RoaXMuaW5uZXJIVE1MPSIifWZ1bmN0aW9uIHo3KHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuaW5uZXJIVE1MPXR9fWZ1bmN0aW9uIEk3KHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMuaW5uZXJIVE1MPW51bGw9PWU/IiI6ZX19ZnVuY3Rpb24gSDcoKXt0aGlzLm5leHRTaWJsaW5nJiZ0aGlzLnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQodGhpcyl9ZnVuY3Rpb24gRjcoKXt0aGlzLnByZXZpb3VzU2libGluZyYmdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0aGlzLHRoaXMucGFyZW50Tm9kZS5maXJzdENoaWxkKX1mdW5jdGlvbiBMNygpe3JldHVybiBudWxsfWZ1bmN0aW9uIEI3KCl7dmFyIHQ9dGhpcy5wYXJlbnROb2RlO3QmJnQucmVtb3ZlQ2hpbGQodGhpcyl9ZnVuY3Rpb24gVjcoKXt2YXIgdD10aGlzLmNsb25lTm9kZSghMSksZT10aGlzLnBhcmVudE5vZGU7cmV0dXJuIGU/ZS5pbnNlcnRCZWZvcmUodCx0aGlzLm5leHRTaWJsaW5nKTp0fWZ1bmN0aW9uIGo3KCl7dmFyIHQ9dGhpcy5jbG9uZU5vZGUoITApLGU9dGhpcy5wYXJlbnROb2RlO3JldHVybiBlP2UuaW5zZXJ0QmVmb3JlKHQsdGhpcy5uZXh0U2libGluZyk6dH1QNy5wcm90b3R5cGU9e2FkZDpmdW5jdGlvbih0KXt0aGlzLl9uYW1lcy5pbmRleE9mKHQpPDAmJih0aGlzLl9uYW1lcy5wdXNoKHQpLHRoaXMuX25vZGUuc2V0QXR0cmlidXRlKCJjbGFzcyIsdGhpcy5fbmFtZXMuam9pbigiICIpKSl9LHJlbW92ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9uYW1lcy5pbmRleE9mKHQpO2U+PTAmJih0aGlzLl9uYW1lcy5zcGxpY2UoZSwxKSx0aGlzLl9ub2RlLnNldEF0dHJpYnV0ZSgiY2xhc3MiLHRoaXMuX25hbWVzLmpvaW4oIiAiKSkpfSxjb250YWluczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fbmFtZXMuaW5kZXhPZih0KT49MH19O3ZhciBVNz17fSxXNz1udWxsOyJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQmJigib25tb3VzZWVudGVyImluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudHx8KFU3PXttb3VzZWVudGVyOiJtb3VzZW92ZXIiLG1vdXNlbGVhdmU6Im1vdXNlb3V0In0pKTtmdW5jdGlvbiBHNyh0LGUsbil7cmV0dXJuIHQ9WTcodCxlLG4pLGZ1bmN0aW9uKGUpe3ZhciBuPWUucmVsYXRlZFRhcmdldDtuJiYobj09PXRoaXN8fDgmbi5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbih0aGlzKSl8fHQuY2FsbCh0aGlzLGUpfX1mdW5jdGlvbiBZNyh0LGUsbil7cmV0dXJuIGZ1bmN0aW9uKG8pe3ZhciBpPVc3O1c3PW87dHJ5e3QuY2FsbCh0aGlzLHRoaXMuX19kYXRhX18sZSxuKX1maW5hbGx5e1c3PWl9fX1mdW5jdGlvbiBxNyh0KXtyZXR1cm4gdC50cmltKCkuc3BsaXQoL158XHMrLykubWFwKChmdW5jdGlvbih0KXt2YXIgZT0iIixuPXQuaW5kZXhPZigiLiIpO3JldHVybiBuPj0wJiYoZT10LnNsaWNlKG4rMSksdD10LnNsaWNlKDAsbikpLHt0eXBlOnQsbmFtZTplfX0pKX1mdW5jdGlvbiBaNyh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9fb247aWYoZSl7Zm9yKHZhciBuLG89MCxpPS0xLGE9ZS5sZW5ndGg7bzxhOysrbyluPWVbb10sdC50eXBlJiZuLnR5cGUhPT10LnR5cGV8fG4ubmFtZSE9PXQubmFtZT9lWysraV09bjp0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIobi50eXBlLG4ubGlzdGVuZXIsbi5jYXB0dXJlKTsrK2k/ZS5sZW5ndGg9aTpkZWxldGUgdGhpcy5fX29ufX19ZnVuY3Rpb24gWDcodCxlLG4pe3ZhciBvPVU3Lmhhc093blByb3BlcnR5KHQudHlwZSk/Rzc6WTc7cmV0dXJuIGZ1bmN0aW9uKGksYSxyKXt2YXIgcyxsPXRoaXMuX19vbixjPW8oZSxhLHIpO2lmKGwpZm9yKHZhciBkPTAscD1sLmxlbmd0aDtkPHA7KytkKWlmKChzPWxbZF0pLnR5cGU9PT10LnR5cGUmJnMubmFtZT09PXQubmFtZSlyZXR1cm4gdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKHMudHlwZSxzLmxpc3RlbmVyLHMuY2FwdHVyZSksdGhpcy5hZGRFdmVudExpc3RlbmVyKHMudHlwZSxzLmxpc3RlbmVyPWMscy5jYXB0dXJlPW4pLHZvaWQocy52YWx1ZT1lKTt0aGlzLmFkZEV2ZW50TGlzdGVuZXIodC50eXBlLGMsbikscz17dHlwZTp0LnR5cGUsbmFtZTp0Lm5hbWUsdmFsdWU6ZSxsaXN0ZW5lcjpjLGNhcHR1cmU6bn0sbD9sLnB1c2gocyk6dGhpcy5fX29uPVtzXX19ZnVuY3Rpb24gSzcodCxlLG4pe3ZhciBvPWc3KHQpLGk9by5DdXN0b21FdmVudDsiZnVuY3Rpb24iPT10eXBlb2YgaT9pPW5ldyBpKGUsbik6KGk9by5kb2N1bWVudC5jcmVhdGVFdmVudCgiRXZlbnQiKSxuPyhpLmluaXRFdmVudChlLG4uYnViYmxlcyxuLmNhbmNlbGFibGUpLGkuZGV0YWlsPW4uZGV0YWlsKTppLmluaXRFdmVudChlLCExLCExKSksdC5kaXNwYXRjaEV2ZW50KGkpfWZ1bmN0aW9uIEo3KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIEs3KHRoaXMsdCxlKX19ZnVuY3Rpb24gUTcodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gSzcodGhpcyx0LGUuYXBwbHkodGhpcyxhcmd1bWVudHMpKX19dmFyICQ3PVtudWxsXTtmdW5jdGlvbiB0OCh0LGUpe3RoaXMuX2dyb3Vwcz10LHRoaXMuX3BhcmVudHM9ZX1mdW5jdGlvbiBlOCgpe3JldHVybiBuZXcgdDgoW1tkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRdXSwkNyl9ZnVuY3Rpb24gbjgodCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0P25ldyB0OChbW2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodCldXSxbZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50XSk6bmV3IHQ4KFtbdF1dLCQ3KX1mdW5jdGlvbiBvOCgpe2Zvcih2YXIgdCxlPVc3O3Q9ZS5zb3VyY2VFdmVudDspZT10O3JldHVybiBlfWZ1bmN0aW9uIGk4KHQsZSl7dmFyIG49dC5vd25lclNWR0VsZW1lbnR8fHQ7aWYobi5jcmVhdGVTVkdQb2ludCl7dmFyIG89bi5jcmVhdGVTVkdQb2ludCgpO3JldHVybiBvLng9ZS5jbGllbnRYLG8ueT1lLmNsaWVudFksWyhvPW8ubWF0cml4VHJhbnNmb3JtKHQuZ2V0U2NyZWVuQ1RNKCkuaW52ZXJzZSgpKSkueCxvLnldfXZhciBpPXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJuW2UuY2xpZW50WC1pLmxlZnQtdC5jbGllbnRMZWZ0LGUuY2xpZW50WS1pLnRvcC10LmNsaWVudFRvcF19ZnVuY3Rpb24gYTgodCl7dmFyIGU9bzgoKTtyZXR1cm4gZS5jaGFuZ2VkVG91Y2hlcyYmKGU9ZS5jaGFuZ2VkVG91Y2hlc1swXSksaTgodCxlKX1mdW5jdGlvbiByOCgpe1c3LnByZXZlbnREZWZhdWx0KCksVzcuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCl9ZnVuY3Rpb24gczgodCl7dmFyIGU9dC5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsbj1uOCh0KS5vbigiZHJhZ3N0YXJ0LmRyYWciLHI4LCEwKTsib25zZWxlY3RzdGFydCJpbiBlP24ub24oInNlbGVjdHN0YXJ0LmRyYWciLHI4LCEwKTooZS5fX25vc2VsZWN0PWUuc3R5bGUuTW96VXNlclNlbGVjdCxlLnN0eWxlLk1velVzZXJTZWxlY3Q9Im5vbmUiKX1mdW5jdGlvbiBsOCh0LGUpe3ZhciBuPXQuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LG89bjgodCkub24oImRyYWdzdGFydC5kcmFnIixudWxsKTtlJiYoby5vbigiY2xpY2suZHJhZyIscjgsITApLHNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7by5vbigiY2xpY2suZHJhZyIsbnVsbCl9KSwwKSksIm9uc2VsZWN0c3RhcnQiaW4gbj9vLm9uKCJzZWxlY3RzdGFydC5kcmFnIixudWxsKToobi5zdHlsZS5Nb3pVc2VyU2VsZWN0PW4uX19ub3NlbGVjdCxkZWxldGUgbi5fX25vc2VsZWN0KX1mdW5jdGlvbiBjOCh0LGUsbil7dC5wcm90b3R5cGU9ZS5wcm90b3R5cGU9bixuLmNvbnN0cnVjdG9yPXR9ZnVuY3Rpb24gZDgodCxlKXt2YXIgbj1PYmplY3QuY3JlYXRlKHQucHJvdG90eXBlKTtmb3IodmFyIG8gaW4gZSluW29dPWVbb107cmV0dXJuIG59ZnVuY3Rpb24gcDgoKXt9dDgucHJvdG90eXBlPWU4LnByb3RvdHlwZT17Y29uc3RydWN0b3I6dDgsc2VsZWN0OmZ1bmN0aW9uIG04KHQpeyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD10Nyh0KSk7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPWUubGVuZ3RoLG89bmV3IEFycmF5KG4pLGk9MDtpPG47KytpKWZvcih2YXIgYSxyLHM9ZVtpXSxsPXMubGVuZ3RoLGM9b1tpXT1uZXcgQXJyYXkobCksZD0wO2Q8bDsrK2QpKGE9c1tkXSkmJihyPXQuY2FsbChhLGEuX19kYXRhX18sZCxzKSkmJigiX19kYXRhX18iaW4gYSYmKHIuX19kYXRhX189YS5fX2RhdGFfXyksY1tkXT1yKTtyZXR1cm4gbmV3IHQ4KG8sdGhpcy5fcGFyZW50cyl9LHNlbGVjdEFsbDpmdW5jdGlvbiBmOCh0KXsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9bjcodCkpO2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj1lLmxlbmd0aCxvPVtdLGk9W10sYT0wO2E8bjsrK2EpZm9yKHZhciByLHM9ZVthXSxsPXMubGVuZ3RoLGM9MDtjPGw7KytjKShyPXNbY10pJiYoby5wdXNoKHQuY2FsbChyLHIuX19kYXRhX18sYyxzKSksaS5wdXNoKHIpKTtyZXR1cm4gbmV3IHQ4KG8saSl9LGZpbHRlcjpmdW5jdGlvbiB1OCh0KXsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9bzcodCkpO2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj1lLmxlbmd0aCxvPW5ldyBBcnJheShuKSxpPTA7aTxuOysraSlmb3IodmFyIGEscj1lW2ldLHM9ci5sZW5ndGgsbD1vW2ldPVtdLGM9MDtjPHM7KytjKShhPXJbY10pJiZ0LmNhbGwoYSxhLl9fZGF0YV9fLGMscikmJmwucHVzaChhKTtyZXR1cm4gbmV3IHQ4KG8sdGhpcy5fcGFyZW50cyl9LGRhdGE6ZnVuY3Rpb24gZzgodCxlKXtpZighdClyZXR1cm4gdT1uZXcgQXJyYXkodGhpcy5zaXplKCkpLGQ9LTEsdGhpcy5lYWNoKChmdW5jdGlvbih0KXt1WysrZF09dH0pKSx1O3ZhciBuPWU/czc6cjcsbz10aGlzLl9wYXJlbnRzLGk9dGhpcy5fZ3JvdXBzOyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD0oZnVuY3Rpb24gYSh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19KSh0KSk7Zm9yKHZhciByPWkubGVuZ3RoLHM9bmV3IEFycmF5KHIpLGw9bmV3IEFycmF5KHIpLGM9bmV3IEFycmF5KHIpLGQ9MDtkPHI7KytkKXt2YXIgcD1vW2RdLG09aVtkXSxmPW0ubGVuZ3RoLHU9dC5jYWxsKHAscCYmcC5fX2RhdGFfXyxkLG8pLGc9dS5sZW5ndGgsaD1sW2RdPW5ldyBBcnJheShnKSxiPXNbZF09bmV3IEFycmF5KGcpO24ocCxtLGgsYixjW2RdPW5ldyBBcnJheShmKSx1LGUpO2Zvcih2YXIgeSxfLEM9MCxNPTA7QzxnOysrQylpZih5PWhbQ10pe2ZvcihDPj1NJiYoTT1DKzEpOyEoXz1iW01dKSYmKytNPGc7KTt5Ll9uZXh0PV98fG51bGx9fXJldHVybihzPW5ldyB0OChzLG8pKS5fZW50ZXI9bCxzLl9leGl0PWMsc30sZW50ZXI6ZnVuY3Rpb24gaDgoKXtyZXR1cm4gbmV3IHQ4KHRoaXMuX2VudGVyfHx0aGlzLl9ncm91cHMubWFwKGk3KSx0aGlzLl9wYXJlbnRzKX0sZXhpdDpmdW5jdGlvbiBiOCgpe3JldHVybiBuZXcgdDgodGhpcy5fZXhpdHx8dGhpcy5fZ3JvdXBzLm1hcChpNyksdGhpcy5fcGFyZW50cyl9LGpvaW46ZnVuY3Rpb24geTgodCxlLG4pe3ZhciBvPXRoaXMuZW50ZXIoKSxpPXRoaXMsYT10aGlzLmV4aXQoKTtyZXR1cm4gbz0iZnVuY3Rpb24iPT10eXBlb2YgdD90KG8pOm8uYXBwZW5kKHQrIiIpLG51bGwhPWUmJihpPWUoaSkpLG51bGw9PW4/YS5yZW1vdmUoKTpuKGEpLG8mJmk/by5tZXJnZShpKS5vcmRlcigpOml9LG1lcmdlOmZ1bmN0aW9uIF84KHQpe2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj10Ll9ncm91cHMsbz1lLmxlbmd0aCxpPU1hdGgubWluKG8sbi5sZW5ndGgpLGE9bmV3IEFycmF5KG8pLHI9MDtyPGk7KytyKWZvcih2YXIgcyxsPWVbcl0sYz1uW3JdLGQ9bC5sZW5ndGgscD1hW3JdPW5ldyBBcnJheShkKSxtPTA7bTxkOysrbSkocz1sW21dfHxjW21dKSYmKHBbbV09cyk7Zm9yKDtyPG87KytyKWFbcl09ZVtyXTtyZXR1cm4gbmV3IHQ4KGEsdGhpcy5fcGFyZW50cyl9LG9yZGVyOmZ1bmN0aW9uIEM4KCl7Zm9yKHZhciB0PXRoaXMuX2dyb3VwcyxlPS0xLG49dC5sZW5ndGg7KytlPG47KWZvcih2YXIgbyxpPXRbZV0sYT1pLmxlbmd0aC0xLHI9aVthXTstLWE+PTA7KShvPWlbYV0pJiYociYmNF5vLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKHIpJiZyLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKG8scikscj1vKTtyZXR1cm4gdGhpc30sc29ydDpmdW5jdGlvbiBNOCh0KXtmdW5jdGlvbiBlKGUsbil7cmV0dXJuIGUmJm4/dChlLl9fZGF0YV9fLG4uX19kYXRhX18pOiFlLSFufXR8fCh0PWw3KTtmb3IodmFyIG49dGhpcy5fZ3JvdXBzLG89bi5sZW5ndGgsaT1uZXcgQXJyYXkobyksYT0wO2E8bzsrK2Epe2Zvcih2YXIgcixzPW5bYV0sbD1zLmxlbmd0aCxjPWlbYV09bmV3IEFycmF5KGwpLGQ9MDtkPGw7KytkKShyPXNbZF0pJiYoY1tkXT1yKTtjLnNvcnQoZSl9cmV0dXJuIG5ldyB0OChpLHRoaXMuX3BhcmVudHMpLm9yZGVyKCl9LGNhbGw6ZnVuY3Rpb24gdjgoKXt2YXIgdD1hcmd1bWVudHNbMF07cmV0dXJuIGFyZ3VtZW50c1swXT10aGlzLHQuYXBwbHkobnVsbCxhcmd1bWVudHMpLHRoaXN9LG5vZGVzOmZ1bmN0aW9uIHg4KCl7dmFyIHQ9bmV3IEFycmF5KHRoaXMuc2l6ZSgpKSxlPS0xO3JldHVybiB0aGlzLmVhY2goKGZ1bmN0aW9uKCl7dFsrK2VdPXRoaXN9KSksdH0sbm9kZTpmdW5jdGlvbiBPOCgpe2Zvcih2YXIgdD10aGlzLl9ncm91cHMsZT0wLG49dC5sZW5ndGg7ZTxuOysrZSlmb3IodmFyIG89dFtlXSxpPTAsYT1vLmxlbmd0aDtpPGE7KytpKXt2YXIgcj1vW2ldO2lmKHIpcmV0dXJuIHJ9cmV0dXJuIG51bGx9LHNpemU6ZnVuY3Rpb24gUDgoKXt2YXIgdD0wO3JldHVybiB0aGlzLmVhY2goKGZ1bmN0aW9uKCl7Kyt0fSkpLHR9LGVtcHR5OmZ1bmN0aW9uIHc4KCl7cmV0dXJuIXRoaXMubm9kZSgpfSxlYWNoOmZ1bmN0aW9uIGs4KHQpe2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj0wLG89ZS5sZW5ndGg7bjxvOysrbilmb3IodmFyIGksYT1lW25dLHI9MCxzPWEubGVuZ3RoO3I8czsrK3IpKGk9YVtyXSkmJnQuY2FsbChpLGkuX19kYXRhX18scixhKTtyZXR1cm4gdGhpc30sYXR0cjpmdW5jdGlvbiBTOCh0LGUpe3ZhciBuPVg2KHQpO2lmKGFyZ3VtZW50cy5sZW5ndGg8Mil7dmFyIG89dGhpcy5ub2RlKCk7cmV0dXJuIG4ubG9jYWw/by5nZXRBdHRyaWJ1dGVOUyhuLnNwYWNlLG4ubG9jYWwpOm8uZ2V0QXR0cmlidXRlKG4pfXJldHVybiB0aGlzLmVhY2goKG51bGw9PWU/bi5sb2NhbD9kNzpjNzoiZnVuY3Rpb24iPT10eXBlb2YgZT9uLmxvY2FsP3U3OmY3Om4ubG9jYWw/bTc6cDcpKG4sZSkpfSxzdHlsZTpmdW5jdGlvbiBEOCh0LGUsbil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MT90aGlzLmVhY2goKG51bGw9PWU/aDc6ImZ1bmN0aW9uIj09dHlwZW9mIGU/eTc6YjcpKHQsZSxudWxsPT1uPyIiOm4pKTpfNyh0aGlzLm5vZGUoKSx0KX0scHJvcGVydHk6ZnVuY3Rpb24gUjgodCxlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4xP3RoaXMuZWFjaCgobnVsbD09ZT9DNzoiZnVuY3Rpb24iPT10eXBlb2YgZT92NzpNNykodCxlKSk6dGhpcy5ub2RlKClbdF19LGNsYXNzZWQ6ZnVuY3Rpb24gRTgodCxlKXt2YXIgbj14Nyh0KyIiKTtpZihhcmd1bWVudHMubGVuZ3RoPDIpe2Zvcih2YXIgbz1PNyh0aGlzLm5vZGUoKSksaT0tMSxhPW4ubGVuZ3RoOysraTxhOylpZighby5jb250YWlucyhuW2ldKSlyZXR1cm4hMTtyZXR1cm4hMH1yZXR1cm4gdGhpcy5lYWNoKCgiZnVuY3Rpb24iPT10eXBlb2YgZT9SNzplP1M3OkQ3KShuLGUpKX0sdGV4dDpmdW5jdGlvbiBBOCh0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2gobnVsbD09dD9FNzooImZ1bmN0aW9uIj09dHlwZW9mIHQ/VDc6QTcpKHQpKTp0aGlzLm5vZGUoKS50ZXh0Q29udGVudH0saHRtbDpmdW5jdGlvbiBUOCh0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2gobnVsbD09dD9ONzooImZ1bmN0aW9uIj09dHlwZW9mIHQ/STc6ejcpKHQpKTp0aGlzLm5vZGUoKS5pbm5lckhUTUx9LHJhaXNlOmZ1bmN0aW9uIE44KCl7cmV0dXJuIHRoaXMuZWFjaChINyl9LGxvd2VyOmZ1bmN0aW9uIHo4KCl7cmV0dXJuIHRoaXMuZWFjaChGNyl9LGFwcGVuZDpmdW5jdGlvbiBJOCh0KXt2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OlE2KHQpO3JldHVybiB0aGlzLnNlbGVjdCgoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hcHBlbmRDaGlsZChlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9KSl9LGluc2VydDpmdW5jdGlvbiBIOCh0LGUpe3ZhciBuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6UTYodCksbz1udWxsPT1lP0w3OiJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6dDcoZSk7cmV0dXJuIHRoaXMuc2VsZWN0KChmdW5jdGlvbigpe3JldHVybiB0aGlzLmluc2VydEJlZm9yZShuLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxvLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8bnVsbCl9KSl9LHJlbW92ZTpmdW5jdGlvbiBGOCgpe3JldHVybiB0aGlzLmVhY2goQjcpfSxjbG9uZTpmdW5jdGlvbiBMOCh0KXtyZXR1cm4gdGhpcy5zZWxlY3QodD9qNzpWNyl9LGRhdHVtOmZ1bmN0aW9uIEI4KHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMucHJvcGVydHkoIl9fZGF0YV9fIix0KTp0aGlzLm5vZGUoKS5fX2RhdGFfX30sb246ZnVuY3Rpb24gVjgodCxlLG4pe3ZhciBvLGksYT1xNyh0KyIiKSxyPWEubGVuZ3RoO2lmKCEoYXJndW1lbnRzLmxlbmd0aDwyKSl7Zm9yKHM9ZT9YNzpaNyxudWxsPT1uJiYobj0hMSksbz0wO288cjsrK28pdGhpcy5lYWNoKHMoYVtvXSxlLG4pKTtyZXR1cm4gdGhpc312YXIgcz10aGlzLm5vZGUoKS5fX29uO2lmKHMpZm9yKHZhciBsLGM9MCxkPXMubGVuZ3RoO2M8ZDsrK2MpZm9yKG89MCxsPXNbY107bzxyOysrbylpZigoaT1hW29dKS50eXBlPT09bC50eXBlJiZpLm5hbWU9PT1sLm5hbWUpcmV0dXJuIGwudmFsdWV9LGRpc3BhdGNoOmZ1bmN0aW9uIGo4KHQsZSl7cmV0dXJuIHRoaXMuZWFjaCgoImZ1bmN0aW9uIj09dHlwZW9mIGU/UTc6SjcpKHQsZSkpfX07dmFyIFU4PS43LFc4PTEvVTgsRzg9IlxccyooWystXT9cXGQrKVxccyoiLFk4PSJcXHMqKFsrLV0/XFxkKlxcLj9cXGQrKD86W2VFXVsrLV0/XFxkKyk/KVxccyoiLHE4PSJcXHMqKFsrLV0/XFxkKlxcLj9cXGQrKD86W2VFXVsrLV0/XFxkKyk/KSVcXHMqIixaOD0vXiMoWzAtOWEtZl17Myw4fSkkLyxYOD1uZXcgUmVnRXhwKCJecmdiXFwoIitbRzgsRzgsRzhdKyJcXCkkIiksSzg9bmV3IFJlZ0V4cCgiXnJnYlxcKCIrW3E4LHE4LHE4XSsiXFwpJCIpLEo4PW5ldyBSZWdFeHAoIl5yZ2JhXFwoIitbRzgsRzgsRzgsWThdKyJcXCkkIiksUTg9bmV3IFJlZ0V4cCgiXnJnYmFcXCgiK1txOCxxOCxxOCxZOF0rIlxcKSQiKSwkOD1uZXcgUmVnRXhwKCJeaHNsXFwoIitbWTgscTgscThdKyJcXCkkIiksdDk9bmV3IFJlZ0V4cCgiXmhzbGFcXCgiK1tZOCxxOCxxOCxZOF0rIlxcKSQiKSxlOT17YWxpY2VibHVlOjE1NzkyMzgzLGFudGlxdWV3aGl0ZToxNjQ0NDM3NSxhcXVhOjY1NTM1LGFxdWFtYXJpbmU6ODM4ODU2NCxhenVyZToxNTc5NDE3NSxiZWlnZToxNjExOTI2MCxiaXNxdWU6MTY3NzAyNDQsYmxhY2s6MCxibGFuY2hlZGFsbW9uZDoxNjc3MjA0NSxibHVlOjI1NSxibHVldmlvbGV0OjkwNTUyMDIsYnJvd246MTA4MjQyMzQsYnVybHl3b29kOjE0NTk2MjMxLGNhZGV0Ymx1ZTo2MjY2NTI4LGNoYXJ0cmV1c2U6ODM4ODM1MixjaG9jb2xhdGU6MTM3ODk0NzAsY29yYWw6MTY3NDQyNzIsY29ybmZsb3dlcmJsdWU6NjU5MTk4MSxjb3Juc2lsazoxNjc3NTM4OCxjcmltc29uOjE0NDIzMTAwLGN5YW46NjU1MzUsZGFya2JsdWU6MTM5LGRhcmtjeWFuOjM1NzIzLGRhcmtnb2xkZW5yb2Q6MTIwOTI5MzksZGFya2dyYXk6MTExMTkwMTcsZGFya2dyZWVuOjI1NjAwLGRhcmtncmV5OjExMTE5MDE3LGRhcmtraGFraToxMjQzMzI1OSxkYXJrbWFnZW50YTo5MTA5NjQzLGRhcmtvbGl2ZWdyZWVuOjU1OTc5OTksZGFya29yYW5nZToxNjc0NzUyMCxkYXJrb3JjaGlkOjEwMDQwMDEyLGRhcmtyZWQ6OTEwOTUwNCxkYXJrc2FsbW9uOjE1MzA4NDEwLGRhcmtzZWFncmVlbjo5NDE5OTE5LGRhcmtzbGF0ZWJsdWU6NDczNDM0NyxkYXJrc2xhdGVncmF5OjMxMDA0OTUsZGFya3NsYXRlZ3JleTozMTAwNDk1LGRhcmt0dXJxdW9pc2U6NTI5NDUsZGFya3Zpb2xldDo5Njk5NTM5LGRlZXBwaW5rOjE2NzE2OTQ3LGRlZXBza3libHVlOjQ5MTUxLGRpbWdyYXk6NjkwODI2NSxkaW1ncmV5OjY5MDgyNjUsZG9kZ2VyYmx1ZToyMDAzMTk5LGZpcmVicmljazoxMTY3NDE0NixmbG9yYWx3aGl0ZToxNjc3NTkyMCxmb3Jlc3RncmVlbjoyMjYzODQyLGZ1Y2hzaWE6MTY3MTE5MzUsZ2FpbnNib3JvOjE0NDc0NDYwLGdob3N0d2hpdGU6MTYzMTY2NzEsZ29sZDoxNjc2NjcyMCxnb2xkZW5yb2Q6MTQzMjkxMjAsZ3JheTo4NDIxNTA0LGdyZWVuOjMyNzY4LGdyZWVueWVsbG93OjExNDAzMDU1LGdyZXk6ODQyMTUwNCxob25leWRldzoxNTc5NDE2MCxob3RwaW5rOjE2NzM4NzQwLGluZGlhbnJlZDoxMzQ1ODUyNCxpbmRpZ286NDkxNTMzMCxpdm9yeToxNjc3NzIwMCxraGFraToxNTc4NzY2MCxsYXZlbmRlcjoxNTEzMjQxMCxsYXZlbmRlcmJsdXNoOjE2NzczMzY1LGxhd25ncmVlbjo4MTkwOTc2LGxlbW9uY2hpZmZvbjoxNjc3NTg4NSxsaWdodGJsdWU6MTEzOTMyNTQsbGlnaHRjb3JhbDoxNTc2MTUzNixsaWdodGN5YW46MTQ3NDU1OTksbGlnaHRnb2xkZW5yb2R5ZWxsb3c6MTY0NDgyMTAsbGlnaHRncmF5OjEzODgyMzIzLGxpZ2h0Z3JlZW46OTQ5ODI1NixsaWdodGdyZXk6MTM4ODIzMjMsbGlnaHRwaW5rOjE2NzU4NDY1LGxpZ2h0c2FsbW9uOjE2NzUyNzYyLGxpZ2h0c2VhZ3JlZW46MjE0Mjg5MCxsaWdodHNreWJsdWU6ODkwMDM0NixsaWdodHNsYXRlZ3JheTo3ODMzNzUzLGxpZ2h0c2xhdGVncmV5Ojc4MzM3NTMsbGlnaHRzdGVlbGJsdWU6MTE1ODQ3MzQsbGlnaHR5ZWxsb3c6MTY3NzcxODQsbGltZTo2NTI4MCxsaW1lZ3JlZW46MzMyOTMzMCxsaW5lbjoxNjQ0NTY3MCxtYWdlbnRhOjE2NzExOTM1LG1hcm9vbjo4Mzg4NjA4LG1lZGl1bWFxdWFtYXJpbmU6NjczNzMyMixtZWRpdW1ibHVlOjIwNSxtZWRpdW1vcmNoaWQ6MTIyMTE2NjcsbWVkaXVtcHVycGxlOjk2NjI2ODMsbWVkaXVtc2VhZ3JlZW46Mzk3ODA5NyxtZWRpdW1zbGF0ZWJsdWU6ODA4Nzc5MCxtZWRpdW1zcHJpbmdncmVlbjo2NDE1NCxtZWRpdW10dXJxdW9pc2U6NDc3MjMwMCxtZWRpdW12aW9sZXRyZWQ6MTMwNDcxNzMsbWlkbmlnaHRibHVlOjE2NDQ5MTIsbWludGNyZWFtOjE2MTIxODUwLG1pc3R5cm9zZToxNjc3MDI3Myxtb2NjYXNpbjoxNjc3MDIyOSxuYXZham93aGl0ZToxNjc2ODY4NSxuYXZ5OjEyOCxvbGRsYWNlOjE2NjQzNTU4LG9saXZlOjg0MjEzNzYsb2xpdmVkcmFiOjcwNDg3Mzksb3JhbmdlOjE2NzUzOTIwLG9yYW5nZXJlZDoxNjcyOTM0NCxvcmNoaWQ6MTQzMTU3MzQscGFsZWdvbGRlbnJvZDoxNTY1NzEzMCxwYWxlZ3JlZW46MTAwMjU4ODAscGFsZXR1cnF1b2lzZToxMTUyOTk2NixwYWxldmlvbGV0cmVkOjE0MzgxMjAzLHBhcGF5YXdoaXA6MTY3NzMwNzcscGVhY2hwdWZmOjE2NzY3NjczLHBlcnU6MTM0Njg5OTEscGluazoxNjc2MTAzNSxwbHVtOjE0NTI0NjM3LHBvd2RlcmJsdWU6MTE1OTE5MTAscHVycGxlOjgzODg3MzYscmViZWNjYXB1cnBsZTo2Njk3ODgxLHJlZDoxNjcxMTY4MCxyb3N5YnJvd246MTIzNTc1MTkscm95YWxibHVlOjQyODY5NDUsc2FkZGxlYnJvd246OTEyNzE4NyxzYWxtb246MTY0MTY4ODIsc2FuZHlicm93bjoxNjAzMjg2NCxzZWFncmVlbjozMDUwMzI3LHNlYXNoZWxsOjE2Nzc0NjM4LHNpZW5uYToxMDUwNjc5NyxzaWx2ZXI6MTI2MzIyNTYsc2t5Ymx1ZTo4OTAwMzMxLHNsYXRlYmx1ZTo2OTcwMDYxLHNsYXRlZ3JheTo3MzcyOTQ0LHNsYXRlZ3JleTo3MzcyOTQ0LHNub3c6MTY3NzU5MzAsc3ByaW5nZ3JlZW46NjU0MDcsc3RlZWxibHVlOjQ2MjA5ODAsdGFuOjEzODA4NzgwLHRlYWw6MzI4OTYsdGhpc3RsZToxNDIwNDg4OCx0b21hdG86MTY3MzcwOTUsdHVycXVvaXNlOjQyNTE4NTYsdmlvbGV0OjE1NjMxMDg2LHdoZWF0OjE2MTEzMzMxLHdoaXRlOjE2Nzc3MjE1LHdoaXRlc21va2U6MTYxMTkyODUseWVsbG93OjE2Nzc2OTYwLHllbGxvd2dyZWVuOjEwMTQ1MDc0fTtmdW5jdGlvbiBuOSgpe3JldHVybiB0aGlzLnJnYigpLmZvcm1hdEhleCgpfWZ1bmN0aW9uIG85KCl7cmV0dXJuIHRoaXMucmdiKCkuZm9ybWF0UmdiKCl9ZnVuY3Rpb24gaTkodCl7dmFyIGUsbjtyZXR1cm4gdD0odCsiIikudHJpbSgpLnRvTG93ZXJDYXNlKCksKGU9WjguZXhlYyh0KSk/KG49ZVsxXS5sZW5ndGgsZT1wYXJzZUludChlWzFdLDE2KSw2PT09bj9hOShlKTozPT09bj9uZXcgYzkoZT4+OCYxNXxlPj40JjI0MCxlPj40JjE1fDI0MCZlLCgxNSZlKTw8NHwxNSZlLDEpOjg9PT1uP3I5KGU+PjI0JjI1NSxlPj4xNiYyNTUsZT4+OCYyNTUsKDI1NSZlKS8yNTUpOjQ9PT1uP3I5KGU+PjEyJjE1fGU+PjgmMjQwLGU+PjgmMTV8ZT4+NCYyNDAsZT4+NCYxNXwyNDAmZSwoKDE1JmUpPDw0fDE1JmUpLzI1NSk6bnVsbCk6KGU9WDguZXhlYyh0KSk/bmV3IGM5KGVbMV0sZVsyXSxlWzNdLDEpOihlPUs4LmV4ZWModCkpP25ldyBjOSgyNTUqZVsxXS8xMDAsMjU1KmVbMl0vMTAwLDI1NSplWzNdLzEwMCwxKTooZT1KOC5leGVjKHQpKT9yOShlWzFdLGVbMl0sZVszXSxlWzRdKTooZT1ROC5leGVjKHQpKT9yOSgyNTUqZVsxXS8xMDAsMjU1KmVbMl0vMTAwLDI1NSplWzNdLzEwMCxlWzRdKTooZT0kOC5leGVjKHQpKT9mOShlWzFdLGVbMl0vMTAwLGVbM10vMTAwLDEpOihlPXQ5LmV4ZWModCkpP2Y5KGVbMV0sZVsyXS8xMDAsZVszXS8xMDAsZVs0XSk6ZTkuaGFzT3duUHJvcGVydHkodCk/YTkoZTlbdF0pOiJ0cmFuc3BhcmVudCI9PT10P25ldyBjOShOYU4sTmFOLE5hTiwwKTpudWxsfWZ1bmN0aW9uIGE5KHQpe3JldHVybiBuZXcgYzkodD4+MTYmMjU1LHQ+PjgmMjU1LDI1NSZ0LDEpfWZ1bmN0aW9uIHI5KHQsZSxuLG8pe3JldHVybiBvPD0wJiYodD1lPW49TmFOKSxuZXcgYzkodCxlLG4sbyl9ZnVuY3Rpb24gczkodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBwOHx8KHQ9aTkodCkpLHQ/bmV3IGM5KCh0PXQucmdiKCkpLnIsdC5nLHQuYix0Lm9wYWNpdHkpOm5ldyBjOX1mdW5jdGlvbiBsOSh0LGUsbixvKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/czkodCk6bmV3IGM5KHQsZSxuLG51bGw9PW8/MTpvKX1mdW5jdGlvbiBjOSh0LGUsbixvKXt0aGlzLnI9K3QsdGhpcy5nPStlLHRoaXMuYj0rbix0aGlzLm9wYWNpdHk9K299ZnVuY3Rpb24gZDkoKXtyZXR1cm4iIyIrbTkodGhpcy5yKSttOSh0aGlzLmcpK205KHRoaXMuYil9ZnVuY3Rpb24gcDkoKXt2YXIgdD10aGlzLm9wYWNpdHk7cmV0dXJuKDE9PT0odD1pc05hTih0KT8xOk1hdGgubWF4KDAsTWF0aC5taW4oMSx0KSkpPyJyZ2IoIjoicmdiYSgiKStNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKHRoaXMucil8fDApKSsiLCAiK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodGhpcy5nKXx8MCkpKyIsICIrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0aGlzLmIpfHwwKSkrKDE9PT10PyIpIjoiLCAiK3QrIikiKX1mdW5jdGlvbiBtOSh0KXtyZXR1cm4oKHQ9TWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0KXx8MCkpKTwxNj8iMCI6IiIpK3QudG9TdHJpbmcoMTYpfWZ1bmN0aW9uIGY5KHQsZSxuLG8pe3JldHVybiBvPD0wP3Q9ZT1uPU5hTjpuPD0wfHxuPj0xP3Q9ZT1OYU46ZTw9MCYmKHQ9TmFOKSxuZXcgaDkodCxlLG4sbyl9ZnVuY3Rpb24gdTkodCl7aWYodCBpbnN0YW5jZW9mIGg5KXJldHVybiBuZXcgaDkodC5oLHQucyx0LmwsdC5vcGFjaXR5KTtpZih0IGluc3RhbmNlb2YgcDh8fCh0PWk5KHQpKSwhdClyZXR1cm4gbmV3IGg5O2lmKHQgaW5zdGFuY2VvZiBoOSlyZXR1cm4gdDt2YXIgZT0odD10LnJnYigpKS5yLzI1NSxuPXQuZy8yNTUsbz10LmIvMjU1LGk9TWF0aC5taW4oZSxuLG8pLGE9TWF0aC5tYXgoZSxuLG8pLHI9TmFOLHM9YS1pLGw9KGEraSkvMjtyZXR1cm4gcz8ocj1lPT09YT8obi1vKS9zKzYqKG48byk6bj09PWE/KG8tZSkvcysyOihlLW4pL3MrNCxzLz1sPC41P2EraToyLWEtaSxyKj02MCk6cz1sPjAmJmw8MT8wOnIsbmV3IGg5KHIscyxsLHQub3BhY2l0eSl9ZnVuY3Rpb24gZzkodCxlLG4sbyl7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP3U5KHQpOm5ldyBoOSh0LGUsbixudWxsPT1vPzE6byl9ZnVuY3Rpb24gaDkodCxlLG4sbyl7dGhpcy5oPSt0LHRoaXMucz0rZSx0aGlzLmw9K24sdGhpcy5vcGFjaXR5PStvfWZ1bmN0aW9uIGI5KHQsZSxuKXtyZXR1cm4gMjU1Kih0PDYwP2UrKG4tZSkqdC82MDp0PDE4MD9uOnQ8MjQwP2UrKG4tZSkqKDI0MC10KS82MDplKX1jOChwOCxpOSx7Y29weTpmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmFzc2lnbihuZXcgdGhpcy5jb25zdHJ1Y3Rvcix0aGlzLHQpfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJnYigpLmRpc3BsYXlhYmxlKCl9LGhleDpuOSxmb3JtYXRIZXg6bjksZm9ybWF0SHNsOmZ1bmN0aW9uIHk5KCl7cmV0dXJuIHU5KHRoaXMpLmZvcm1hdEhzbCgpfSxmb3JtYXRSZ2I6bzksdG9TdHJpbmc6bzl9KSxjOChjOSxsOSxkOChwOCx7YnJpZ2h0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD9XODpNYXRoLnBvdyhXOCx0KSxuZXcgYzkodGhpcy5yKnQsdGhpcy5nKnQsdGhpcy5iKnQsdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/VTg6TWF0aC5wb3coVTgsdCksbmV3IGM5KHRoaXMucip0LHRoaXMuZyp0LHRoaXMuYip0LHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3JldHVybiB0aGlzfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybi0uNTw9dGhpcy5yJiZ0aGlzLnI8MjU1LjUmJi0uNTw9dGhpcy5nJiZ0aGlzLmc8MjU1LjUmJi0uNTw9dGhpcy5iJiZ0aGlzLmI8MjU1LjUmJjA8PXRoaXMub3BhY2l0eSYmdGhpcy5vcGFjaXR5PD0xfSxoZXg6ZDksZm9ybWF0SGV4OmQ5LGZvcm1hdFJnYjpwOSx0b1N0cmluZzpwOX0pKSxjOChoOSxnOSxkOChwOCx7YnJpZ2h0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD9XODpNYXRoLnBvdyhXOCx0KSxuZXcgaDkodGhpcy5oLHRoaXMucyx0aGlzLmwqdCx0aGlzLm9wYWNpdHkpfSxkYXJrZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD9VODpNYXRoLnBvdyhVOCx0KSxuZXcgaDkodGhpcy5oLHRoaXMucyx0aGlzLmwqdCx0aGlzLm9wYWNpdHkpfSxyZ2I6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmglMzYwKzM2MCoodGhpcy5oPDApLGU9aXNOYU4odCl8fGlzTmFOKHRoaXMucyk/MDp0aGlzLnMsbj10aGlzLmwsbz1uKyhuPC41P246MS1uKSplLGk9MipuLW87cmV0dXJuIG5ldyBjOShiOSh0Pj0yNDA/dC0yNDA6dCsxMjAsaSxvKSxiOSh0LGksbyksYjkodDwxMjA/dCsyNDA6dC0xMjAsaSxvKSx0aGlzLm9wYWNpdHkpfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybigwPD10aGlzLnMmJnRoaXMuczw9MXx8aXNOYU4odGhpcy5zKSkmJjA8PXRoaXMubCYmdGhpcy5sPD0xJiYwPD10aGlzLm9wYWNpdHkmJnRoaXMub3BhY2l0eTw9MX0sZm9ybWF0SHNsOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcGFjaXR5O3JldHVybigxPT09KHQ9aXNOYU4odCk/MTpNYXRoLm1heCgwLE1hdGgubWluKDEsdCkpKT8iaHNsKCI6ImhzbGEoIikrKHRoaXMuaHx8MCkrIiwgIisxMDAqKHRoaXMuc3x8MCkrIiUsICIrMTAwKih0aGlzLmx8fDApKyIlIisoMT09PXQ/IikiOiIsICIrdCsiKSIpfX0pKTt2YXIgXzk9TWF0aC5QSS8xODAsQzk9MTgwL01hdGguUEksTTk9Ljk2NDIyLHY5PS44MjUyMSx4OT00LzI5LE85PTYvMjksUDk9MypPOSpPOTtmdW5jdGlvbiB3OSh0KXtpZih0IGluc3RhbmNlb2YgazkpcmV0dXJuIG5ldyBrOSh0LmwsdC5hLHQuYix0Lm9wYWNpdHkpO2lmKHQgaW5zdGFuY2VvZiBOOSlyZXR1cm4gejkodCk7dCBpbnN0YW5jZW9mIGM5fHwodD1zOSh0KSk7dmFyIGUsbixvPUU5KHQuciksaT1FOSh0LmcpLGE9RTkodC5iKSxyPVM5KCguMjIyNTA0NSpvKy43MTY4Nzg2KmkrLjA2MDYxNjkqYSkvMSk7cmV0dXJuIG89PT1pJiZpPT09YT9lPW49cjooZT1TOSgoLjQzNjA3NDcqbysuMzg1MDY0OSppKy4xNDMwODA0KmEpL005KSxuPVM5KCguMDEzOTMyMipvKy4wOTcxMDQ1KmkrLjcxNDE3MzMqYSkvdjkpKSxuZXcgazkoMTE2KnItMTYsNTAwKihlLXIpLDIwMCooci1uKSx0Lm9wYWNpdHkpfWZ1bmN0aW9uIGs5KHQsZSxuLG8pe3RoaXMubD0rdCx0aGlzLmE9K2UsdGhpcy5iPStuLHRoaXMub3BhY2l0eT0rb31mdW5jdGlvbiBTOSh0KXtyZXR1cm4gdD4uMDA4ODU2NDUxNjc5MDM1NjMxP01hdGgucG93KHQsMS8zKTp0L1A5K3g5fWZ1bmN0aW9uIEQ5KHQpe3JldHVybiB0Pk85P3QqdCp0OlA5Kih0LXg5KX1mdW5jdGlvbiBSOSh0KXtyZXR1cm4gMjU1Kih0PD0uMDAzMTMwOD8xMi45Mip0OjEuMDU1Kk1hdGgucG93KHQsMS8yLjQpLS4wNTUpfWZ1bmN0aW9uIEU5KHQpe3JldHVybih0Lz0yNTUpPD0uMDQwNDU/dC8xMi45MjpNYXRoLnBvdygodCsuMDU1KS8xLjA1NSwyLjQpfWZ1bmN0aW9uIEE5KHQpe2lmKHQgaW5zdGFuY2VvZiBOOSlyZXR1cm4gbmV3IE45KHQuaCx0LmMsdC5sLHQub3BhY2l0eSk7aWYodCBpbnN0YW5jZW9mIGs5fHwodD13OSh0KSksMD09PXQuYSYmMD09PXQuYilyZXR1cm4gbmV3IE45KE5hTiwwPHQubCYmdC5sPDEwMD8wOk5hTix0LmwsdC5vcGFjaXR5KTt2YXIgZT1NYXRoLmF0YW4yKHQuYix0LmEpKkM5O3JldHVybiBuZXcgTjkoZTwwP2UrMzYwOmUsTWF0aC5zcXJ0KHQuYSp0LmErdC5iKnQuYiksdC5sLHQub3BhY2l0eSl9ZnVuY3Rpb24gVDkodCxlLG4sbyl7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP0E5KHQpOm5ldyBOOSh0LGUsbixudWxsPT1vPzE6byl9ZnVuY3Rpb24gTjkodCxlLG4sbyl7dGhpcy5oPSt0LHRoaXMuYz0rZSx0aGlzLmw9K24sdGhpcy5vcGFjaXR5PStvfWZ1bmN0aW9uIHo5KHQpe2lmKGlzTmFOKHQuaCkpcmV0dXJuIG5ldyBrOSh0LmwsMCwwLHQub3BhY2l0eSk7dmFyIGU9dC5oKl85O3JldHVybiBuZXcgazkodC5sLE1hdGguY29zKGUpKnQuYyxNYXRoLnNpbihlKSp0LmMsdC5vcGFjaXR5KX1mdW5jdGlvbiBJOSh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gSDkodCxlKXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIHQrbiplfX1mdW5jdGlvbiBGOSh0LGUpe3ZhciBuPWUtdDtyZXR1cm4gbj9IOSh0LG4+MTgwfHxuPC0xODA/bi0zNjAqTWF0aC5yb3VuZChuLzM2MCk6bik6STkoaXNOYU4odCk/ZTp0KX1mdW5jdGlvbiBMOSh0KXtyZXR1cm4gMT09KHQ9K3QpP0I5OmZ1bmN0aW9uKGUsbil7cmV0dXJuIG4tZT8oZnVuY3Rpb24gbyh0LGUsbil7cmV0dXJuIHQ9TWF0aC5wb3codCxuKSxlPU1hdGgucG93KGUsbiktdCxuPTEvbixmdW5jdGlvbihvKXtyZXR1cm4gTWF0aC5wb3codCtvKmUsbil9fSkoZSxuLHQpOkk5KGlzTmFOKGUpP246ZSl9fWZ1bmN0aW9uIEI5KHQsZSl7dmFyIG49ZS10O3JldHVybiBuP0g5KHQsbik6STkoaXNOYU4odCk/ZTp0KX1jOChrOSwoZnVuY3Rpb24gVjkodCxlLG4sbyl7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP3c5KHQpOm5ldyBrOSh0LGUsbixudWxsPT1vPzE6byl9KSxkOChwOCx7YnJpZ2h0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBrOSh0aGlzLmwrMTgqKG51bGw9PXQ/MTp0KSx0aGlzLmEsdGhpcy5iLHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IGs5KHRoaXMubC0xOCoobnVsbD09dD8xOnQpLHRoaXMuYSx0aGlzLmIsdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7dmFyIHQ9KHRoaXMubCsxNikvMTE2LGU9aXNOYU4odGhpcy5hKT90OnQrdGhpcy5hLzUwMCxuPWlzTmFOKHRoaXMuYik/dDp0LXRoaXMuYi8yMDA7cmV0dXJuIG5ldyBjOShSOSgzLjEzMzg1NjEqKGU9TTkqRDkoZSkpLTEuNjE2ODY2NyoodD0xKkQ5KHQpKS0uNDkwNjE0Nioobj12OSpEOShuKSkpLFI5KC0uOTc4NzY4NCplKzEuOTE2MTQxNSp0Ky4wMzM0NTQqbiksUjkoLjA3MTk0NTMqZS0uMjI4OTkxNCp0KzEuNDA1MjQyNypuKSx0aGlzLm9wYWNpdHkpfX0pKSxjOChOOSxUOSxkOChwOCx7YnJpZ2h0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBOOSh0aGlzLmgsdGhpcy5jLHRoaXMubCsxOCoobnVsbD09dD8xOnQpLHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IE45KHRoaXMuaCx0aGlzLmMsdGhpcy5sLTE4KihudWxsPT10PzE6dCksdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7cmV0dXJuIHo5KHRoaXMpLnJnYigpfX0pKTt2YXIgajk9KGZ1bmN0aW9uIHQoZSl7dmFyIG49TDkoZSk7ZnVuY3Rpb24gbyh0LGUpe3ZhciBvPW4oKHQ9bDkodCkpLnIsKGU9bDkoZSkpLnIpLGk9bih0LmcsZS5nKSxhPW4odC5iLGUuYikscj1COSh0Lm9wYWNpdHksZS5vcGFjaXR5KTtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHQucj1vKGUpLHQuZz1pKGUpLHQuYj1hKGUpLHQub3BhY2l0eT1yKGUpLHQrIiJ9fXJldHVybiBvLmdhbW1hPXQsb30pKDEpO3ZhciBVOT0oZnVuY3Rpb24gRzkodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBuLG8saT1lLmxlbmd0aCxhPW5ldyBBcnJheShpKSxyPW5ldyBBcnJheShpKSxzPW5ldyBBcnJheShpKTtmb3Iobj0wO248aTsrK24pbz1sOShlW25dKSxhW25dPW8ucnx8MCxyW25dPW8uZ3x8MCxzW25dPW8uYnx8MDtyZXR1cm4gYT10KGEpLHI9dChyKSxzPXQocyksby5vcGFjaXR5PTEsZnVuY3Rpb24odCl7cmV0dXJuIG8ucj1hKHQpLG8uZz1yKHQpLG8uYj1zKHQpLG8rIiJ9fX0pKChmdW5jdGlvbiBXOSh0KXt2YXIgZT10Lmxlbmd0aC0xO3JldHVybiBmdW5jdGlvbihuKXt2YXIgbz1uPD0wP249MDpuPj0xPyhuPTEsZS0xKTpNYXRoLmZsb29yKG4qZSksaT10W29dLGE9dFtvKzFdO3JldHVybihmdW5jdGlvbiByKHQsZSxuLG8saSl7dmFyIGE9dCp0LHI9YSp0O3JldHVybigoMS0zKnQrMyphLXIpKmUrKDQtNiphKzMqcikqbisoMSszKnQrMyphLTMqcikqbytyKmkpLzZ9KSgobi1vL2UpKmUsbz4wP3Rbby0xXToyKmktYSxpLGEsbzxlLTE/dFtvKzJdOjIqYS1pKX19KSk7ZnVuY3Rpb24gWTkodCxlKXtlfHwoZT1bXSk7dmFyIG4sbz10P01hdGgubWluKGUubGVuZ3RoLHQubGVuZ3RoKTowLGk9ZS5zbGljZSgpO3JldHVybiBmdW5jdGlvbihhKXtmb3Iobj0wO248bzsrK24paVtuXT10W25dKigxLWEpK2Vbbl0qYTtyZXR1cm4gaX19ZnVuY3Rpb24gcTkodCxlKXt2YXIgbixvPWU/ZS5sZW5ndGg6MCxpPXQ/TWF0aC5taW4obyx0Lmxlbmd0aCk6MCxhPW5ldyBBcnJheShpKSxyPW5ldyBBcnJheShvKTtmb3Iobj0wO248aTsrK24pYVtuXT10dHQodFtuXSxlW25dKTtmb3IoO248bzsrK24pcltuXT1lW25dO3JldHVybiBmdW5jdGlvbih0KXtmb3Iobj0wO248aTsrK24pcltuXT1hW25dKHQpO3JldHVybiByfX1mdW5jdGlvbiBaOSh0LGUpe3ZhciBuPW5ldyBEYXRlO3JldHVybiB0PSt0LGU9K2UsZnVuY3Rpb24obyl7cmV0dXJuIG4uc2V0VGltZSh0KigxLW8pK2Uqbyksbn19ZnVuY3Rpb24gWDkodCxlKXtyZXR1cm4gdD0rdCxlPStlLGZ1bmN0aW9uKG4pe3JldHVybiB0KigxLW4pK2Uqbn19ZnVuY3Rpb24gSzkodCxlKXt2YXIgbixvPXt9LGk9e307Zm9yKG4gaW4gbnVsbCE9PXQmJiJvYmplY3QiPT10eXBlb2YgdHx8KHQ9e30pLG51bGwhPT1lJiYib2JqZWN0Ij09dHlwZW9mIGV8fChlPXt9KSxlKW4gaW4gdD9vW25dPXR0dCh0W25dLGVbbl0pOmlbbl09ZVtuXTtyZXR1cm4gZnVuY3Rpb24odCl7Zm9yKG4gaW4gbylpW25dPW9bbl0odCk7cmV0dXJuIGl9fXZhciBKOT0vWy0rXT8oPzpcZCtcLj9cZCp8XC4/XGQrKSg/OltlRV1bLStdP1xkKyk/L2csUTk9bmV3IFJlZ0V4cChKOS5zb3VyY2UsImciKTtmdW5jdGlvbiAkOSh0LGUpe3ZhciBuLG8saSxhPUo5Lmxhc3RJbmRleD1ROS5sYXN0SW5kZXg9MCxyPS0xLHM9W10sbD1bXTtmb3IodCs9IiIsZSs9IiI7KG49SjkuZXhlYyh0KSkmJihvPVE5LmV4ZWMoZSkpOykoaT1vLmluZGV4KT5hJiYoaT1lLnNsaWNlKGEsaSksc1tyXT9zW3JdKz1pOnNbKytyXT1pKSwobj1uWzBdKT09PShvPW9bMF0pP3Nbcl0/c1tyXSs9bzpzWysrcl09bzooc1srK3JdPW51bGwsbC5wdXNoKHtpOnIseDpYOShuLG8pfSkpLGE9UTkubGFzdEluZGV4O3JldHVybiBhPGUubGVuZ3RoJiYoaT1lLnNsaWNlKGEpLHNbcl0/c1tyXSs9aTpzWysrcl09aSkscy5sZW5ndGg8Mj9sWzBdPyhmdW5jdGlvbiBjKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gdChlKSsiIn19KShsWzBdLngpOihmdW5jdGlvbiBkKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX0pKGUpOihlPWwubGVuZ3RoLGZ1bmN0aW9uKHQpe2Zvcih2YXIgbixvPTA7bzxlOysrbylzWyhuPWxbb10pLmldPW4ueCh0KTtyZXR1cm4gcy5qb2luKCIiKX0pfWZ1bmN0aW9uIHR0dCh0LGUpe3ZhciBuLG89dHlwZW9mIGU7cmV0dXJuIG51bGw9PWV8fCJib29sZWFuIj09PW8/STkoZSk6KCJudW1iZXIiPT09bz9YOToic3RyaW5nIj09PW8/KG49aTkoZSkpPyhlPW4sajkpOiQ5OmUgaW5zdGFuY2VvZiBpOT9qOTplIGluc3RhbmNlb2YgRGF0ZT9aOTooZnVuY3Rpb24gaSh0KXtyZXR1cm4gQXJyYXlCdWZmZXIuaXNWaWV3KHQpJiYhKHQgaW5zdGFuY2VvZiBEYXRhVmlldyl9KShlKT9ZOTpBcnJheS5pc0FycmF5KGUpP3E5OiJmdW5jdGlvbiIhPXR5cGVvZiBlLnZhbHVlT2YmJiJmdW5jdGlvbiIhPXR5cGVvZiBlLnRvU3RyaW5nfHxpc05hTihlKT9LOTpYOSkodCxlKX1mdW5jdGlvbiBldHQodCxlKXtyZXR1cm4gdD0rdCxlPStlLGZ1bmN0aW9uKG4pe3JldHVybiBNYXRoLnJvdW5kKHQqKDEtbikrZSpuKX19dmFyIG50dCxvdHQsaXR0LGF0dCxydHQ9MTgwL01hdGguUEksc3R0PXt0cmFuc2xhdGVYOjAsdHJhbnNsYXRlWTowLHJvdGF0ZTowLHNrZXdYOjAsc2NhbGVYOjEsc2NhbGVZOjF9O2Z1bmN0aW9uIGx0dCh0LGUsbixvLGksYSl7dmFyIHIscyxsO3JldHVybihyPU1hdGguc3FydCh0KnQrZSplKSkmJih0Lz1yLGUvPXIpLChsPXQqbitlKm8pJiYobi09dCpsLG8tPWUqbCksKHM9TWF0aC5zcXJ0KG4qbitvKm8pKSYmKG4vPXMsby89cyxsLz1zKSx0Km88ZSpuJiYodD0tdCxlPS1lLGw9LWwscj0tcikse3RyYW5zbGF0ZVg6aSx0cmFuc2xhdGVZOmEscm90YXRlOk1hdGguYXRhbjIoZSx0KSpydHQsc2tld1g6TWF0aC5hdGFuKGwpKnJ0dCxzY2FsZVg6cixzY2FsZVk6c319ZnVuY3Rpb24gY3R0KHQsZSxuLG8pe2Z1bmN0aW9uIGkodCl7cmV0dXJuIHQubGVuZ3RoP3QucG9wKCkrIiAiOiIifXJldHVybiBmdW5jdGlvbihhLHIpe3ZhciBzPVtdLGw9W107cmV0dXJuIGE9dChhKSxyPXQociksKGZ1bmN0aW9uIGModCxvLGksYSxyLHMpe2lmKHQhPT1pfHxvIT09YSl7dmFyIGw9ci5wdXNoKCJ0cmFuc2xhdGUoIixudWxsLGUsbnVsbCxuKTtzLnB1c2goe2k6bC00LHg6WDkodCxpKX0se2k6bC0yLHg6WDkobyxhKX0pfWVsc2UoaXx8YSkmJnIucHVzaCgidHJhbnNsYXRlKCIraStlK2Erbil9KShhLnRyYW5zbGF0ZVgsYS50cmFuc2xhdGVZLHIudHJhbnNsYXRlWCxyLnRyYW5zbGF0ZVkscyxsKSwoZnVuY3Rpb24gZCh0LGUsbixhKXt0IT09ZT8odC1lPjE4MD9lKz0zNjA6ZS10PjE4MCYmKHQrPTM2MCksYS5wdXNoKHtpOm4ucHVzaChpKG4pKyJyb3RhdGUoIixudWxsLG8pLTIseDpYOSh0LGUpfSkpOmUmJm4ucHVzaChpKG4pKyJyb3RhdGUoIitlK28pfSkoYS5yb3RhdGUsci5yb3RhdGUscyxsKSwoZnVuY3Rpb24gcCh0LGUsbixhKXt0IT09ZT9hLnB1c2goe2k6bi5wdXNoKGkobikrInNrZXdYKCIsbnVsbCxvKS0yLHg6WDkodCxlKX0pOmUmJm4ucHVzaChpKG4pKyJza2V3WCgiK2Urbyl9KShhLnNrZXdYLHIuc2tld1gscyxsKSwoZnVuY3Rpb24gbSh0LGUsbixvLGEscil7aWYodCE9PW58fGUhPT1vKXt2YXIgcz1hLnB1c2goaShhKSsic2NhbGUoIixudWxsLCIsIixudWxsLCIpIik7ci5wdXNoKHtpOnMtNCx4Olg5KHQsbil9LHtpOnMtMix4Olg5KGUsbyl9KX1lbHNlIDE9PT1uJiYxPT09b3x8YS5wdXNoKGkoYSkrInNjYWxlKCIrbisiLCIrbysiKSIpfSkoYS5zY2FsZVgsYS5zY2FsZVksci5zY2FsZVgsci5zY2FsZVkscyxsKSxhPXI9bnVsbCxmdW5jdGlvbih0KXtmb3IodmFyIGUsbj0tMSxvPWwubGVuZ3RoOysrbjxvOylzWyhlPWxbbl0pLmldPWUueCh0KTtyZXR1cm4gcy5qb2luKCIiKX19fXZhciBkdHQ9Y3R0KChmdW5jdGlvbiBwdHQodCl7cmV0dXJuIm5vbmUiPT09dD9zdHQ6KG50dHx8KG50dD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJESVYiKSxvdHQ9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LGl0dD1kb2N1bWVudC5kZWZhdWx0VmlldyksbnR0LnN0eWxlLnRyYW5zZm9ybT10LHQ9aXR0LmdldENvbXB1dGVkU3R5bGUob3R0LmFwcGVuZENoaWxkKG50dCksbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgidHJhbnNmb3JtIiksb3R0LnJlbW92ZUNoaWxkKG50dCksbHR0KCsodD10LnNsaWNlKDcsLTEpLnNwbGl0KCIsIikpWzBdLCt0WzFdLCt0WzJdLCt0WzNdLCt0WzRdLCt0WzVdKSl9KSwicHgsICIsInB4KSIsImRlZykiKSxtdHQ9Y3R0KChmdW5jdGlvbiBmdHQodCl7cmV0dXJuIG51bGw9PXQ/c3R0OihhdHR8fChhdHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsImciKSksYXR0LnNldEF0dHJpYnV0ZSgidHJhbnNmb3JtIix0KSwodD1hdHQudHJhbnNmb3JtLmJhc2VWYWwuY29uc29saWRhdGUoKSk/bHR0KCh0PXQubWF0cml4KS5hLHQuYix0LmMsdC5kLHQuZSx0LmYpOnN0dCl9KSwiLCAiLCIpIiwiKSIpO3ZhciB1dHQ9KGZ1bmN0aW9uIGd0dCh0KXtyZXR1cm4gZnVuY3Rpb24oZSxuKXt2YXIgbz10KChlPWc5KGUpKS5oLChuPWc5KG4pKS5oKSxpPUI5KGUucyxuLnMpLGE9QjkoZS5sLG4ubCkscj1COShlLm9wYWNpdHksbi5vcGFjaXR5KTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGUuaD1vKHQpLGUucz1pKHQpLGUubD1hKHQpLGUub3BhY2l0eT1yKHQpLGUrIiJ9fX0pKEY5KTt2YXIgaHR0LGJ0dCx5dHQ9KGZ1bmN0aW9uIF90dCh0KXtyZXR1cm4gZnVuY3Rpb24oZSxuKXt2YXIgbz10KChlPVQ5KGUpKS5oLChuPVQ5KG4pKS5oKSxpPUI5KGUuYyxuLmMpLGE9QjkoZS5sLG4ubCkscj1COShlLm9wYWNpdHksbi5vcGFjaXR5KTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGUuaD1vKHQpLGUuYz1pKHQpLGUubD1hKHQpLGUub3BhY2l0eT1yKHQpLGUrIiJ9fX0pKEY5KSxDdHQ9MCxNdHQ9MCx2dHQ9MCx4dHQ9MCxPdHQ9MCxQdHQ9MCx3dHQ9Im9iamVjdCI9PXR5cGVvZiBwZXJmb3JtYW5jZSYmcGVyZm9ybWFuY2Uubm93P3BlcmZvcm1hbmNlOkRhdGUsa3R0PSJvYmplY3QiPT10eXBlb2Ygd2luZG93JiZ3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lP3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUuYmluZCh3aW5kb3cpOmZ1bmN0aW9uKHQpe3NldFRpbWVvdXQodCwxNyl9O2Z1bmN0aW9uIFN0dCgpe3JldHVybiBPdHR8fChrdHQoRHR0KSxPdHQ9d3R0Lm5vdygpK1B0dCl9ZnVuY3Rpb24gRHR0KCl7T3R0PTB9ZnVuY3Rpb24gUnR0KCl7dGhpcy5fY2FsbD10aGlzLl90aW1lPXRoaXMuX25leHQ9bnVsbH1mdW5jdGlvbiBFdHQodCxlLG4pe3ZhciBvPW5ldyBSdHQ7cmV0dXJuIG8ucmVzdGFydCh0LGUsbiksb31mdW5jdGlvbiBBdHQoKXtPdHQ9KHh0dD13dHQubm93KCkpK1B0dCxDdHQ9TXR0PTA7dHJ5eyEoZnVuY3Rpb24gdCgpe1N0dCgpLCsrQ3R0O2Zvcih2YXIgdCxlPWh0dDtlOykodD1PdHQtZS5fdGltZSk+PTAmJmUuX2NhbGwuY2FsbChudWxsLHQpLGU9ZS5fbmV4dDstLUN0dH0pKCl9ZmluYWxseXtDdHQ9MCwoZnVuY3Rpb24gZSgpe3ZhciB0LGUsbj1odHQsbz0xLzA7Zm9yKDtuOyluLl9jYWxsPyhvPm4uX3RpbWUmJihvPW4uX3RpbWUpLHQ9bixuPW4uX25leHQpOihlPW4uX25leHQsbi5fbmV4dD1udWxsLG49dD90Ll9uZXh0PWU6aHR0PWUpO2J0dD10LE50dChvKX0pKCksT3R0PTB9fWZ1bmN0aW9uIFR0dCgpe3ZhciB0PXd0dC5ub3coKSxlPXQteHR0O2U+MWUzJiYoUHR0LT1lLHh0dD10KX1mdW5jdGlvbiBOdHQodCl7Q3R0fHwoTXR0JiYoTXR0PWNsZWFyVGltZW91dChNdHQpKSx0LU90dD4yND8odDwxLzAmJihNdHQ9c2V0VGltZW91dChBdHQsdC13dHQubm93KCktUHR0KSksdnR0JiYodnR0PWNsZWFySW50ZXJ2YWwodnR0KSkpOih2dHR8fCh4dHQ9d3R0Lm5vdygpLHZ0dD1zZXRJbnRlcnZhbChUdHQsMWUzKSksQ3R0PTEsa3R0KEF0dCkpKX1mdW5jdGlvbiB6dHQodCxlLG4pe3ZhciBvPW5ldyBSdHQ7cmV0dXJuIG8ucmVzdGFydCgoZnVuY3Rpb24obil7by5zdG9wKCksdChuK2UpfSksZT1udWxsPT1lPzA6K2Usbiksb31SdHQucHJvdG90eXBlPUV0dC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOlJ0dCxyZXN0YXJ0OmZ1bmN0aW9uKHQsZSxuKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKCJjYWxsYmFjayBpcyBub3QgYSBmdW5jdGlvbiIpO249KG51bGw9PW4/U3R0KCk6K24pKyhudWxsPT1lPzA6K2UpLHRoaXMuX25leHR8fGJ0dD09PXRoaXN8fChidHQ/YnR0Ll9uZXh0PXRoaXM6aHR0PXRoaXMsYnR0PXRoaXMpLHRoaXMuX2NhbGw9dCx0aGlzLl90aW1lPW4sTnR0KCl9LHN0b3A6ZnVuY3Rpb24oKXt0aGlzLl9jYWxsJiYodGhpcy5fY2FsbD1udWxsLHRoaXMuX3RpbWU9MS8wLE50dCgpKX19O3ZhciBJdHQ9ajYoInN0YXJ0IiwiZW5kIiwiY2FuY2VsIiwiaW50ZXJydXB0IiksSHR0PVtdO2Z1bmN0aW9uIEZ0dCh0LGUsbixvLGksYSl7dmFyIHI9dC5fX3RyYW5zaXRpb247aWYocil7aWYobiBpbiByKXJldHVybn1lbHNlIHQuX190cmFuc2l0aW9uPXt9OyEoZnVuY3Rpb24gcyh0LGUsbil7dmFyIG8saT10Ll9fdHJhbnNpdGlvbjtmdW5jdGlvbiBhKHQpe24uc3RhdGU9MSxuLnRpbWVyLnJlc3RhcnQocixuLmRlbGF5LG4udGltZSksbi5kZWxheTw9dCYmcih0LW4uZGVsYXkpfWZ1bmN0aW9uIHIoYSl7dmFyIGMsZCxwLG07aWYoMSE9PW4uc3RhdGUpcmV0dXJuIGwoKTtmb3IoYyBpbiBpKWlmKChtPWlbY10pLm5hbWU9PT1uLm5hbWUpe2lmKDM9PT1tLnN0YXRlKXJldHVybiB6dHQocik7ND09PW0uc3RhdGU/KG0uc3RhdGU9NixtLnRpbWVyLnN0b3AoKSxtLm9uLmNhbGwoImludGVycnVwdCIsdCx0Ll9fZGF0YV9fLG0uaW5kZXgsbS5ncm91cCksZGVsZXRlIGlbY10pOitjPGUmJihtLnN0YXRlPTYsbS50aW1lci5zdG9wKCksbS5vbi5jYWxsKCJjYW5jZWwiLHQsdC5fX2RhdGFfXyxtLmluZGV4LG0uZ3JvdXApLGRlbGV0ZSBpW2NdKX1pZih6dHQoKGZ1bmN0aW9uKCl7Mz09PW4uc3RhdGUmJihuLnN0YXRlPTQsbi50aW1lci5yZXN0YXJ0KHMsbi5kZWxheSxuLnRpbWUpLHMoYSkpfSkpLG4uc3RhdGU9MixuLm9uLmNhbGwoInN0YXJ0Iix0LHQuX19kYXRhX18sbi5pbmRleCxuLmdyb3VwKSwyPT09bi5zdGF0ZSl7Zm9yKG4uc3RhdGU9MyxvPW5ldyBBcnJheShwPW4udHdlZW4ubGVuZ3RoKSxjPTAsZD0tMTtjPHA7KytjKShtPW4udHdlZW5bY10udmFsdWUuY2FsbCh0LHQuX19kYXRhX18sbi5pbmRleCxuLmdyb3VwKSkmJihvWysrZF09bSk7by5sZW5ndGg9ZCsxfX1mdW5jdGlvbiBzKGUpe2Zvcih2YXIgaT1lPG4uZHVyYXRpb24/bi5lYXNlLmNhbGwobnVsbCxlL24uZHVyYXRpb24pOihuLnRpbWVyLnJlc3RhcnQobCksbi5zdGF0ZT01LDEpLGE9LTEscj1vLmxlbmd0aDsrK2E8cjspb1thXS5jYWxsKHQsaSk7NT09PW4uc3RhdGUmJihuLm9uLmNhbGwoImVuZCIsdCx0Ll9fZGF0YV9fLG4uaW5kZXgsbi5ncm91cCksbCgpKX1mdW5jdGlvbiBsKCl7Zm9yKHZhciBvIGluIG4uc3RhdGU9NixuLnRpbWVyLnN0b3AoKSxkZWxldGUgaVtlXSxpKXJldHVybjtkZWxldGUgdC5fX3RyYW5zaXRpb259aVtlXT1uLG4udGltZXI9RXR0KGEsMCxuLnRpbWUpfSkodCxuLHtuYW1lOmUsaW5kZXg6byxncm91cDppLG9uOkl0dCx0d2VlbjpIdHQsdGltZTphLnRpbWUsZGVsYXk6YS5kZWxheSxkdXJhdGlvbjphLmR1cmF0aW9uLGVhc2U6YS5lYXNlLHRpbWVyOm51bGwsc3RhdGU6MH0pfWZ1bmN0aW9uIEx0dCh0LGUpe3ZhciBuPVZ0dCh0LGUpO2lmKG4uc3RhdGU+MCl0aHJvdyBuZXcgRXJyb3IoInRvbyBsYXRlOyBhbHJlYWR5IHNjaGVkdWxlZCIpO3JldHVybiBufWZ1bmN0aW9uIEJ0dCh0LGUpe3ZhciBuPVZ0dCh0LGUpO2lmKG4uc3RhdGU+Myl0aHJvdyBuZXcgRXJyb3IoInRvbyBsYXRlOyBhbHJlYWR5IHJ1bm5pbmciKTtyZXR1cm4gbn1mdW5jdGlvbiBWdHQodCxlKXt2YXIgbj10Ll9fdHJhbnNpdGlvbjtpZighbnx8IShuPW5bZV0pKXRocm93IG5ldyBFcnJvcigidHJhbnNpdGlvbiBub3QgZm91bmQiKTtyZXR1cm4gbn1mdW5jdGlvbiBqdHQodCxlKXt2YXIgbixvLGksYT10Ll9fdHJhbnNpdGlvbixyPSEwO2lmKGEpe2ZvcihpIGluIGU9bnVsbD09ZT9udWxsOmUrIiIsYSkobj1hW2ldKS5uYW1lPT09ZT8obz1uLnN0YXRlPjImJm4uc3RhdGU8NSxuLnN0YXRlPTYsbi50aW1lci5zdG9wKCksbi5vbi5jYWxsKG8/ImludGVycnVwdCI6ImNhbmNlbCIsdCx0Ll9fZGF0YV9fLG4uaW5kZXgsbi5ncm91cCksZGVsZXRlIGFbaV0pOnI9ITE7ciYmZGVsZXRlIHQuX190cmFuc2l0aW9ufX1mdW5jdGlvbiBVdHQodCxlKXt2YXIgbixvO3JldHVybiBmdW5jdGlvbigpe3ZhciBpPUJ0dCh0aGlzLHQpLGE9aS50d2VlbjtpZihhIT09bilmb3IodmFyIHI9MCxzPShvPW49YSkubGVuZ3RoO3I8czsrK3IpaWYob1tyXS5uYW1lPT09ZSl7KG89by5zbGljZSgpKS5zcGxpY2UociwxKTticmVha31pLnR3ZWVuPW99fWZ1bmN0aW9uIFd0dCh0LGUsbil7dmFyIG8saTtpZigiZnVuY3Rpb24iIT10eXBlb2Ygbil0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGE9QnR0KHRoaXMsdCkscj1hLnR3ZWVuO2lmKHIhPT1vKXtpPShvPXIpLnNsaWNlKCk7Zm9yKHZhciBzPXtuYW1lOmUsdmFsdWU6bn0sbD0wLGM9aS5sZW5ndGg7bDxjOysrbClpZihpW2xdLm5hbWU9PT1lKXtpW2xdPXM7YnJlYWt9bD09PWMmJmkucHVzaChzKX1hLnR3ZWVuPWl9fWZ1bmN0aW9uIEd0dCh0LGUsbil7dmFyIG89dC5faWQ7cmV0dXJuIHQuZWFjaCgoZnVuY3Rpb24oKXt2YXIgdD1CdHQodGhpcyxvKTsodC52YWx1ZXx8KHQudmFsdWU9e30pKVtlXT1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pKSxmdW5jdGlvbih0KXtyZXR1cm4gVnR0KHQsbykudmFsdWVbZV19fWZ1bmN0aW9uIFl0dCh0LGUpe3ZhciBuO3JldHVybigibnVtYmVyIj09dHlwZW9mIGU/WDk6ZSBpbnN0YW5jZW9mIGk5P2o5OihuPWk5KGUpKT8oZT1uLGo5KTokOSkodCxlKX1mdW5jdGlvbiBxdHQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGUodCl9fWZ1bmN0aW9uIFp0dCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCl9fWZ1bmN0aW9uIFh0dCh0LGUsbil7dmFyIG8saSxhPW4rIiI7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHI9dGhpcy5nZXRBdHRyaWJ1dGUodCk7cmV0dXJuIHI9PT1hP251bGw6cj09PW8/aTppPWUobz1yLG4pfX1mdW5jdGlvbiBLdHQodCxlLG4pe3ZhciBvLGksYT1uKyIiO3JldHVybiBmdW5jdGlvbigpe3ZhciByPXRoaXMuZ2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKTtyZXR1cm4gcj09PWE/bnVsbDpyPT09bz9pOmk9ZShvPXIsbil9fWZ1bmN0aW9uIEp0dCh0LGUsbil7dmFyIG8saSxhO3JldHVybiBmdW5jdGlvbigpe3ZhciByLHMsbD1uKHRoaXMpO2lmKG51bGwhPWwpcmV0dXJuKHI9dGhpcy5nZXRBdHRyaWJ1dGUodCkpPT09KHM9bCsiIik/bnVsbDpyPT09byYmcz09PWk/YTooaT1zLGE9ZShvPXIsbCkpO3RoaXMucmVtb3ZlQXR0cmlidXRlKHQpfX1mdW5jdGlvbiBRdHQodCxlLG4pe3ZhciBvLGksYTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcixzLGw9bih0aGlzKTtpZihudWxsIT1sKXJldHVybihyPXRoaXMuZ2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKSk9PT0ocz1sKyIiKT9udWxsOnI9PT1vJiZzPT09aT9hOihpPXMsYT1lKG89cixsKSk7dGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwpfX1mdW5jdGlvbiAkdHQodCxlKXtyZXR1cm4gZnVuY3Rpb24obil7dGhpcy5zZXRBdHRyaWJ1dGUodCxlLmNhbGwodGhpcyxuKSl9fWZ1bmN0aW9uIHRldCh0LGUpe3JldHVybiBmdW5jdGlvbihuKXt0aGlzLnNldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCxlLmNhbGwodGhpcyxuKSl9fWZ1bmN0aW9uIGVldCh0LGUpe3ZhciBuLG87ZnVuY3Rpb24gaSgpe3ZhciBpPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBpIT09byYmKG49KG89aSkmJnRldCh0LGkpKSxufXJldHVybiBpLl92YWx1ZT1lLGl9ZnVuY3Rpb24gbmV0KHQsZSl7dmFyIG4sbztmdW5jdGlvbiBpKCl7dmFyIGk9ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGkhPT1vJiYobj0obz1pKSYmJHR0KHQsaSkpLG59cmV0dXJuIGkuX3ZhbHVlPWUsaX1mdW5jdGlvbiBvZXQodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXtMdHQodGhpcyx0KS5kZWxheT0rZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fWZ1bmN0aW9uIGlldCh0LGUpe3JldHVybiBlPStlLGZ1bmN0aW9uKCl7THR0KHRoaXMsdCkuZGVsYXk9ZX19ZnVuY3Rpb24gYWV0KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7QnR0KHRoaXMsdCkuZHVyYXRpb249K2UuYXBwbHkodGhpcyxhcmd1bWVudHMpfX1mdW5jdGlvbiByZXQodCxlKXtyZXR1cm4gZT0rZSxmdW5jdGlvbigpe0J0dCh0aGlzLHQpLmR1cmF0aW9uPWV9fWZ1bmN0aW9uIHNldCh0LGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcjtyZXR1cm4gZnVuY3Rpb24oKXtCdHQodGhpcyx0KS5lYXNlPWV9fWZ1bmN0aW9uIGNldCh0LGUsbil7dmFyIG8saSxhPShmdW5jdGlvbiByKHQpe3JldHVybih0KyIiKS50cmltKCkuc3BsaXQoL158XHMrLykuZXZlcnkoKGZ1bmN0aW9uKHQpe3ZhciBlPXQuaW5kZXhPZigiLiIpO3JldHVybiBlPj0wJiYodD10LnNsaWNlKDAsZSkpLCF0fHwic3RhcnQiPT09dH0pKX0pKGUpP0x0dDpCdHQ7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHI9YSh0aGlzLHQpLHM9ci5vbjtzIT09byYmKGk9KG89cykuY29weSgpKS5vbihlLG4pLHIub249aX19dmFyIGRldD1lOC5wcm90b3R5cGUuY29uc3RydWN0b3I7ZnVuY3Rpb24gcGV0KHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkodCl9fWZ1bmN0aW9uIG1ldCh0LGUsbil7cmV0dXJuIGZ1bmN0aW9uKG8pe3RoaXMuc3R5bGUuc2V0UHJvcGVydHkodCxlLmNhbGwodGhpcyxvKSxuKX19ZnVuY3Rpb24gZmV0KHQsZSxuKXt2YXIgbyxpO2Z1bmN0aW9uIGEoKXt2YXIgYT1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gYSE9PWkmJihvPShpPWEpJiZtZXQodCxhLG4pKSxvfXJldHVybiBhLl92YWx1ZT1lLGF9ZnVuY3Rpb24gdWV0KHQpe3JldHVybiBmdW5jdGlvbihlKXt0aGlzLnRleHRDb250ZW50PXQuY2FsbCh0aGlzLGUpfX1mdW5jdGlvbiBnZXQodCl7dmFyIGUsbjtmdW5jdGlvbiBvKCl7dmFyIG89dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIG8hPT1uJiYoZT0obj1vKSYmdWV0KG8pKSxlfXJldHVybiBvLl92YWx1ZT10LG99dmFyIGhldD0wO2Z1bmN0aW9uIGJldCh0LGUsbixvKXt0aGlzLl9ncm91cHM9dCx0aGlzLl9wYXJlbnRzPWUsdGhpcy5fbmFtZT1uLHRoaXMuX2lkPW99ZnVuY3Rpb24geWV0KCl7cmV0dXJuKytoZXR9dmFyIF9ldD1lOC5wcm90b3R5cGU7YmV0LnByb3RvdHlwZT17Y29uc3RydWN0b3I6YmV0LHNlbGVjdDpmdW5jdGlvbiBDZXQodCl7dmFyIGU9dGhpcy5fbmFtZSxuPXRoaXMuX2lkOyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD10Nyh0KSk7Zm9yKHZhciBvPXRoaXMuX2dyb3VwcyxpPW8ubGVuZ3RoLGE9bmV3IEFycmF5KGkpLHI9MDtyPGk7KytyKWZvcih2YXIgcyxsLGM9b1tyXSxkPWMubGVuZ3RoLHA9YVtyXT1uZXcgQXJyYXkoZCksbT0wO208ZDsrK20pKHM9Y1ttXSkmJihsPXQuY2FsbChzLHMuX19kYXRhX18sbSxjKSkmJigiX19kYXRhX18iaW4gcyYmKGwuX19kYXRhX189cy5fX2RhdGFfXykscFttXT1sLEZ0dChwW21dLGUsbixtLHAsVnR0KHMsbikpKTtyZXR1cm4gbmV3IGJldChhLHRoaXMuX3BhcmVudHMsZSxuKX0sc2VsZWN0QWxsOmZ1bmN0aW9uIE1ldCh0KXt2YXIgZT10aGlzLl9uYW1lLG49dGhpcy5faWQ7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PW43KHQpKTtmb3IodmFyIG89dGhpcy5fZ3JvdXBzLGk9by5sZW5ndGgsYT1bXSxyPVtdLHM9MDtzPGk7KytzKWZvcih2YXIgbCxjPW9bc10sZD1jLmxlbmd0aCxwPTA7cDxkOysrcClpZihsPWNbcF0pe2Zvcih2YXIgbSxmPXQuY2FsbChsLGwuX19kYXRhX18scCxjKSx1PVZ0dChsLG4pLGc9MCxoPWYubGVuZ3RoO2c8aDsrK2cpKG09ZltnXSkmJkZ0dChtLGUsbixnLGYsdSk7YS5wdXNoKGYpLHIucHVzaChsKX1yZXR1cm4gbmV3IGJldChhLHIsZSxuKX0sZmlsdGVyOmZ1bmN0aW9uIHZldCh0KXsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9bzcodCkpO2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj1lLmxlbmd0aCxvPW5ldyBBcnJheShuKSxpPTA7aTxuOysraSlmb3IodmFyIGEscj1lW2ldLHM9ci5sZW5ndGgsbD1vW2ldPVtdLGM9MDtjPHM7KytjKShhPXJbY10pJiZ0LmNhbGwoYSxhLl9fZGF0YV9fLGMscikmJmwucHVzaChhKTtyZXR1cm4gbmV3IGJldChvLHRoaXMuX3BhcmVudHMsdGhpcy5fbmFtZSx0aGlzLl9pZCl9LG1lcmdlOmZ1bmN0aW9uIHhldCh0KXtpZih0Ll9pZCE9PXRoaXMuX2lkKXRocm93IG5ldyBFcnJvcjtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLG49dC5fZ3JvdXBzLG89ZS5sZW5ndGgsaT1NYXRoLm1pbihvLG4ubGVuZ3RoKSxhPW5ldyBBcnJheShvKSxyPTA7cjxpOysrcilmb3IodmFyIHMsbD1lW3JdLGM9bltyXSxkPWwubGVuZ3RoLHA9YVtyXT1uZXcgQXJyYXkoZCksbT0wO208ZDsrK20pKHM9bFttXXx8Y1ttXSkmJihwW21dPXMpO2Zvcig7cjxvOysrcilhW3JdPWVbcl07cmV0dXJuIG5ldyBiZXQoYSx0aGlzLl9wYXJlbnRzLHRoaXMuX25hbWUsdGhpcy5faWQpfSxzZWxlY3Rpb246ZnVuY3Rpb24gT2V0KCl7cmV0dXJuIG5ldyBkZXQodGhpcy5fZ3JvdXBzLHRoaXMuX3BhcmVudHMpfSx0cmFuc2l0aW9uOmZ1bmN0aW9uIFBldCgpe2Zvcih2YXIgdD10aGlzLl9uYW1lLGU9dGhpcy5faWQsbj15ZXQoKSxvPXRoaXMuX2dyb3VwcyxpPW8ubGVuZ3RoLGE9MDthPGk7KythKWZvcih2YXIgcixzPW9bYV0sbD1zLmxlbmd0aCxjPTA7YzxsOysrYylpZihyPXNbY10pe3ZhciBkPVZ0dChyLGUpO0Z0dChyLHQsbixjLHMse3RpbWU6ZC50aW1lK2QuZGVsYXkrZC5kdXJhdGlvbixkZWxheTowLGR1cmF0aW9uOmQuZHVyYXRpb24sZWFzZTpkLmVhc2V9KX1yZXR1cm4gbmV3IGJldChvLHRoaXMuX3BhcmVudHMsdCxuKX0sY2FsbDpfZXQuY2FsbCxub2RlczpfZXQubm9kZXMsbm9kZTpfZXQubm9kZSxzaXplOl9ldC5zaXplLGVtcHR5Ol9ldC5lbXB0eSxlYWNoOl9ldC5lYWNoLG9uOmZ1bmN0aW9uIHdldCh0LGUpe3ZhciBuPXRoaXMuX2lkO3JldHVybiBhcmd1bWVudHMubGVuZ3RoPDI/VnR0KHRoaXMubm9kZSgpLG4pLm9uLm9uKHQpOnRoaXMuZWFjaChjZXQobix0LGUpKX0sYXR0cjpmdW5jdGlvbiBrZXQodCxlKXt2YXIgbj1YNih0KSxvPSJ0cmFuc2Zvcm0iPT09bj9tdHQ6WXR0O3JldHVybiB0aGlzLmF0dHJUd2Vlbih0LCJmdW5jdGlvbiI9PXR5cGVvZiBlPyhuLmxvY2FsP1F0dDpKdHQpKG4sbyxHdHQodGhpcywiYXR0ci4iK3QsZSkpOm51bGw9PWU/KG4ubG9jYWw/WnR0OnF0dCkobik6KG4ubG9jYWw/S3R0Olh0dCkobixvLGUpKX0sYXR0clR3ZWVuOmZ1bmN0aW9uIERldCh0LGUpe3ZhciBuPSJhdHRyLiIrdDtpZihhcmd1bWVudHMubGVuZ3RoPDIpcmV0dXJuKG49dGhpcy50d2VlbihuKSkmJm4uX3ZhbHVlO2lmKG51bGw9PWUpcmV0dXJuIHRoaXMudHdlZW4obixudWxsKTtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3I7dmFyIG89WDYodCk7cmV0dXJuIHRoaXMudHdlZW4obiwoby5sb2NhbD9lZXQ6bmV0KShvLGUpKX0sc3R5bGU6ZnVuY3Rpb24gUmV0KHQsZSxuKXt2YXIgbz0idHJhbnNmb3JtIj09KHQrPSIiKT9kdHQ6WXR0O3JldHVybiBudWxsPT1lP3RoaXMuc3R5bGVUd2Vlbih0LChmdW5jdGlvbiBpKHQsZSl7dmFyIG4sbyxpO3JldHVybiBmdW5jdGlvbigpe3ZhciBhPV83KHRoaXMsdCkscj0odGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0KSxfNyh0aGlzLHQpKTtyZXR1cm4gYT09PXI/bnVsbDphPT09biYmcj09PW8/aTppPWUobj1hLG89cil9fSkodCxvKSkub24oImVuZC5zdHlsZS4iK3QscGV0KHQpKToiZnVuY3Rpb24iPT10eXBlb2YgZT90aGlzLnN0eWxlVHdlZW4odCwoZnVuY3Rpb24gcih0LGUsbil7dmFyIG8saSxhO3JldHVybiBmdW5jdGlvbigpe3ZhciByPV83KHRoaXMsdCkscz1uKHRoaXMpLGw9cysiIjtyZXR1cm4gbnVsbD09cyYmKHRoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkodCksbD1zPV83KHRoaXMsdCkpLHI9PT1sP251bGw6cj09PW8mJmw9PT1pP2E6KGk9bCxhPWUobz1yLHMpKX19KSh0LG8sR3R0KHRoaXMsInN0eWxlLiIrdCxlKSkpLmVhY2goKGZ1bmN0aW9uIGEodCxlKXt2YXIgbixvLGksYSxyPSJzdHlsZS4iK2Uscz0iZW5kLiIrcjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbD1CdHQodGhpcyx0KSxjPWwub24sZD1udWxsPT1sLnZhbHVlW3JdP2F8fChhPXBldChlKSk6dm9pZCAwO2M9PT1uJiZpPT09ZHx8KG89KG49YykuY29weSgpKS5vbihzLGk9ZCksbC5vbj1vfX0pKHRoaXMuX2lkLHQpKTp0aGlzLnN0eWxlVHdlZW4odCwoZnVuY3Rpb24gcyh0LGUsbil7dmFyIG8saSxhPW4rIiI7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHI9XzcodGhpcyx0KTtyZXR1cm4gcj09PWE/bnVsbDpyPT09bz9pOmk9ZShvPXIsbil9fSkodCxvLGUpLG4pLm9uKCJlbmQuc3R5bGUuIit0LG51bGwpfSxzdHlsZVR3ZWVuOmZ1bmN0aW9uIEVldCh0LGUsbil7dmFyIG89InN0eWxlLiIrKHQrPSIiKTtpZihhcmd1bWVudHMubGVuZ3RoPDIpcmV0dXJuKG89dGhpcy50d2VlbihvKSkmJm8uX3ZhbHVlO2lmKG51bGw9PWUpcmV0dXJuIHRoaXMudHdlZW4obyxudWxsKTtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIHRoaXMudHdlZW4obyxmZXQodCxlLG51bGw9PW4/IiI6bikpfSx0ZXh0OmZ1bmN0aW9uIEFldCh0KXtyZXR1cm4gdGhpcy50d2VlbigidGV4dCIsImZ1bmN0aW9uIj09dHlwZW9mIHQ/KGZ1bmN0aW9uIGUodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dCh0aGlzKTt0aGlzLnRleHRDb250ZW50PW51bGw9PWU/IiI6ZX19KShHdHQodGhpcywidGV4dCIsdCkpOihmdW5jdGlvbiBuKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMudGV4dENvbnRlbnQ9dH19KShudWxsPT10PyIiOnQrIiIpKX0sdGV4dFR3ZWVuOmZ1bmN0aW9uIFRldCh0KXt2YXIgZT0idGV4dCI7aWYoYXJndW1lbnRzLmxlbmd0aDwxKXJldHVybihlPXRoaXMudHdlZW4oZSkpJiZlLl92YWx1ZTtpZihudWxsPT10KXJldHVybiB0aGlzLnR3ZWVuKGUsbnVsbCk7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IEVycm9yO3JldHVybiB0aGlzLnR3ZWVuKGUsZ2V0KHQpKX0scmVtb3ZlOmZ1bmN0aW9uIE5ldCgpe3JldHVybiB0aGlzLm9uKCJlbmQucmVtb3ZlIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdD10aGlzLnBhcmVudE5vZGU7Zm9yKHZhciBuIGluIHRoaXMuX190cmFuc2l0aW9uKWlmKCtuIT09ZSlyZXR1cm47dCYmdC5yZW1vdmVDaGlsZCh0aGlzKX19KSh0aGlzLl9pZCkpfSx0d2VlbjpmdW5jdGlvbiB6ZXQodCxlKXt2YXIgbj10aGlzLl9pZDtpZih0Kz0iIixhcmd1bWVudHMubGVuZ3RoPDIpe2Zvcih2YXIgbyxpPVZ0dCh0aGlzLm5vZGUoKSxuKS50d2VlbixhPTAscj1pLmxlbmd0aDthPHI7KythKWlmKChvPWlbYV0pLm5hbWU9PT10KXJldHVybiBvLnZhbHVlO3JldHVybiBudWxsfXJldHVybiB0aGlzLmVhY2goKG51bGw9PWU/VXR0Old0dCkobix0LGUpKX0sZGVsYXk6ZnVuY3Rpb24gSWV0KHQpe3ZhciBlPXRoaXMuX2lkO3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaCgoImZ1bmN0aW9uIj09dHlwZW9mIHQ/b2V0OmlldCkoZSx0KSk6VnR0KHRoaXMubm9kZSgpLGUpLmRlbGF5fSxkdXJhdGlvbjpmdW5jdGlvbiBIZXQodCl7dmFyIGU9dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKCgiZnVuY3Rpb24iPT10eXBlb2YgdD9hZXQ6cmV0KShlLHQpKTpWdHQodGhpcy5ub2RlKCksZSkuZHVyYXRpb259LGVhc2U6ZnVuY3Rpb24gRmV0KHQpe3ZhciBlPXRoaXMuX2lkO3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaChzZXQoZSx0KSk6VnR0KHRoaXMubm9kZSgpLGUpLmVhc2V9LGVuZDpmdW5jdGlvbiBMZXQoKXt2YXIgdCxlLG49dGhpcyxvPW4uX2lkLGk9bi5zaXplKCk7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihhLHIpe3ZhciBzPXt2YWx1ZTpyfSxsPXt2YWx1ZTpmdW5jdGlvbigpezA9PS0taSYmYSgpfX07bi5lYWNoKChmdW5jdGlvbigpe3ZhciBuPUJ0dCh0aGlzLG8pLGk9bi5vbjtpIT09dCYmKChlPSh0PWkpLmNvcHkoKSkuXy5jYW5jZWwucHVzaChzKSxlLl8uaW50ZXJydXB0LnB1c2gocyksZS5fLmVuZC5wdXNoKGwpKSxuLm9uPWV9KSl9KSl9fTt2YXIgQmV0PXt0aW1lOm51bGwsZGVsYXk6MCxkdXJhdGlvbjoyNTAsZWFzZTpmdW5jdGlvbiBWZXQodCl7cmV0dXJuKCh0Kj0yKTw9MT90KnQqdDoodC09MikqdCp0KzIpLzJ9fTtmdW5jdGlvbiBqZXQodCxlKXtmb3IodmFyIG47IShuPXQuX190cmFuc2l0aW9uKXx8IShuPW5bZV0pOylpZighKHQ9dC5wYXJlbnROb2RlKSlyZXR1cm4gQmV0LnRpbWU9U3R0KCksQmV0O3JldHVybiBufWZ1bmN0aW9uIFVldCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gV2V0KHQsZSxuKXt0aGlzLnRhcmdldD10LHRoaXMudHlwZT1lLHRoaXMuc2VsZWN0aW9uPW59ZnVuY3Rpb24gR2V0KCl7Vzcuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCl9ZnVuY3Rpb24gWWV0KCl7VzcucHJldmVudERlZmF1bHQoKSxXNy5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKX1lOC5wcm90b3R5cGUuaW50ZXJydXB0PWZ1bmN0aW9uIHFldCh0KXtyZXR1cm4gdGhpcy5lYWNoKChmdW5jdGlvbigpe2p0dCh0aGlzLHQpfSkpfSxlOC5wcm90b3R5cGUudHJhbnNpdGlvbj1mdW5jdGlvbiBaZXQodCl7dmFyIGUsbjt0IGluc3RhbmNlb2YgYmV0PyhlPXQuX2lkLHQ9dC5fbmFtZSk6KGU9eWV0KCksKG49QmV0KS50aW1lPVN0dCgpLHQ9bnVsbD09dD9udWxsOnQrIiIpO2Zvcih2YXIgbz10aGlzLl9ncm91cHMsaT1vLmxlbmd0aCxhPTA7YTxpOysrYSlmb3IodmFyIHIscz1vW2FdLGw9cy5sZW5ndGgsYz0wO2M8bDsrK2MpKHI9c1tjXSkmJkZ0dChyLHQsZSxjLHMsbnx8amV0KHIsZSkpO3JldHVybiBuZXcgYmV0KG8sdGhpcy5fcGFyZW50cyx0LGUpfTt2YXIgWGV0PXtuYW1lOiJkcmFnIn0sS2V0PXtuYW1lOiJzcGFjZSJ9LEpldD17bmFtZToiaGFuZGxlIn0sUWV0PXtuYW1lOiJjZW50ZXIifTtmdW5jdGlvbiAkZXQodCl7cmV0dXJuWyt0WzBdLCt0WzFdXX1mdW5jdGlvbiB0bnQodCl7cmV0dXJuWyRldCh0WzBdKSwkZXQodFsxXSldfWZ1bmN0aW9uIGVudCh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuKGZ1bmN0aW9uIG4odCxlLG8pe2FyZ3VtZW50cy5sZW5ndGg8MyYmKG89ZSxlPW84KCkuY2hhbmdlZFRvdWNoZXMpO2Zvcih2YXIgaSxhPTAscj1lP2UubGVuZ3RoOjA7YTxyOysrYSlpZigoaT1lW2FdKS5pZGVudGlmaWVyPT09bylyZXR1cm4gaTgodCxpKTtyZXR1cm4gbnVsbH0pKGUsVzcudG91Y2hlcyx0KX19dmFyIG5udD17bmFtZToieCIsaGFuZGxlczpbInciLCJlIl0ubWFwKGNudCksaW5wdXQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbD09dD9udWxsOltbK3RbMF0sZVswXVsxXV0sWyt0WzFdLGVbMV1bMV1dXX0sb3V0cHV0OmZ1bmN0aW9uKHQpe3JldHVybiB0JiZbdFswXVswXSx0WzFdWzBdXX19LG9udD17bmFtZToieSIsaGFuZGxlczpbIm4iLCJzIl0ubWFwKGNudCksaW5wdXQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbD09dD9udWxsOltbZVswXVswXSwrdFswXV0sW2VbMV1bMF0sK3RbMV1dXX0sb3V0cHV0OmZ1bmN0aW9uKHQpe3JldHVybiB0JiZbdFswXVsxXSx0WzFdWzFdXX19LGludD17b3ZlcmxheToiY3Jvc3NoYWlyIixzZWxlY3Rpb246Im1vdmUiLG46Im5zLXJlc2l6ZSIsZToiZXctcmVzaXplIixzOiJucy1yZXNpemUiLHc6ImV3LXJlc2l6ZSIsbnc6Im53c2UtcmVzaXplIixuZToibmVzdy1yZXNpemUiLHNlOiJud3NlLXJlc2l6ZSIsc3c6Im5lc3ctcmVzaXplIn0sYW50PXtlOiJ3Iix3OiJlIixudzoibmUiLG5lOiJudyIsc2U6InN3Iixzdzoic2UifSxybnQ9e246InMiLHM6Im4iLG53OiJzdyIsbmU6InNlIixzZToibmUiLHN3OiJudyJ9LHNudD17b3ZlcmxheToxLHNlbGVjdGlvbjoxLG46bnVsbCxlOjEsczpudWxsLHc6LTEsbnc6LTEsbmU6MSxzZToxLHN3Oi0xfSxsbnQ9e292ZXJsYXk6MSxzZWxlY3Rpb246MSxuOi0xLGU6bnVsbCxzOjEsdzpudWxsLG53Oi0xLG5lOi0xLHNlOjEsc3c6MX07ZnVuY3Rpb24gY250KHQpe3JldHVybnt0eXBlOnR9fWZ1bmN0aW9uIGRudCgpe3JldHVybiFXNy5jdHJsS2V5JiYhVzcuYnV0dG9ufWZ1bmN0aW9uIHBudCgpe3ZhciB0PXRoaXMub3duZXJTVkdFbGVtZW50fHx0aGlzO3JldHVybiB0Lmhhc0F0dHJpYnV0ZSgidmlld0JveCIpP1tbKHQ9dC52aWV3Qm94LmJhc2VWYWwpLngsdC55XSxbdC54K3Qud2lkdGgsdC55K3QuaGVpZ2h0XV06W1swLDBdLFt0LndpZHRoLmJhc2VWYWwudmFsdWUsdC5oZWlnaHQuYmFzZVZhbC52YWx1ZV1dfWZ1bmN0aW9uIG1udCgpe3JldHVybiBuYXZpZ2F0b3IubWF4VG91Y2hQb2ludHN8fCJvbnRvdWNoc3RhcnQiaW4gdGhpc31mdW5jdGlvbiBmbnQodCl7Zm9yKDshdC5fX2JydXNoOylpZighKHQ9dC5wYXJlbnROb2RlKSlyZXR1cm47cmV0dXJuIHQuX19icnVzaH1mdW5jdGlvbiB1bnQodCl7cmV0dXJuIHRbMF1bMF09PT10WzFdWzBdfHx0WzBdWzFdPT09dFsxXVsxXX1mdW5jdGlvbiBnbnQoKXtyZXR1cm4oZnVuY3Rpb24gdChlKXt2YXIgbixvPXBudCxpPWRudCxhPW1udCxyPSEwLHM9ajYoInN0YXJ0IiwiYnJ1c2giLCJlbmQiKSxsPTY7ZnVuY3Rpb24gYyh0KXt2YXIgbj10LnByb3BlcnR5KCJfX2JydXNoIixoKS5zZWxlY3RBbGwoIi5vdmVybGF5IikuZGF0YShbY250KCJvdmVybGF5IildKTtuLmVudGVyKCkuYXBwZW5kKCJyZWN0IikuYXR0cigiY2xhc3MiLCJvdmVybGF5IikuYXR0cigicG9pbnRlci1ldmVudHMiLCJhbGwiKS5hdHRyKCJjdXJzb3IiLGludC5vdmVybGF5KS5tZXJnZShuKS5lYWNoKChmdW5jdGlvbigpe3ZhciB0PWZudCh0aGlzKS5leHRlbnQ7bjgodGhpcykuYXR0cigieCIsdFswXVswXSkuYXR0cigieSIsdFswXVsxXSkuYXR0cigid2lkdGgiLHRbMV1bMF0tdFswXVswXSkuYXR0cigiaGVpZ2h0Iix0WzFdWzFdLXRbMF1bMV0pfSkpLHQuc2VsZWN0QWxsKCIuc2VsZWN0aW9uIikuZGF0YShbY250KCJzZWxlY3Rpb24iKV0pLmVudGVyKCkuYXBwZW5kKCJyZWN0IikuYXR0cigiY2xhc3MiLCJzZWxlY3Rpb24iKS5hdHRyKCJjdXJzb3IiLGludC5zZWxlY3Rpb24pLmF0dHIoImZpbGwiLCIjNzc3IikuYXR0cigiZmlsbC1vcGFjaXR5IiwuMykuYXR0cigic3Ryb2tlIiwiI2ZmZiIpLmF0dHIoInNoYXBlLXJlbmRlcmluZyIsImNyaXNwRWRnZXMiKTt2YXIgbz10LnNlbGVjdEFsbCgiLmhhbmRsZSIpLmRhdGEoZS5oYW5kbGVzLChmdW5jdGlvbih0KXtyZXR1cm4gdC50eXBlfSkpO28uZXhpdCgpLnJlbW92ZSgpLG8uZW50ZXIoKS5hcHBlbmQoInJlY3QiKS5hdHRyKCJjbGFzcyIsKGZ1bmN0aW9uKHQpe3JldHVybiJoYW5kbGUgaGFuZGxlLS0iK3QudHlwZX0pKS5hdHRyKCJjdXJzb3IiLChmdW5jdGlvbih0KXtyZXR1cm4gaW50W3QudHlwZV19KSksdC5lYWNoKGQpLmF0dHIoImZpbGwiLCJub25lIikuYXR0cigicG9pbnRlci1ldmVudHMiLCJhbGwiKS5vbigibW91c2Vkb3duLmJydXNoIixmKS5maWx0ZXIoYSkub24oInRvdWNoc3RhcnQuYnJ1c2giLGYpLm9uKCJ0b3VjaG1vdmUuYnJ1c2giLHUpLm9uKCJ0b3VjaGVuZC5icnVzaCB0b3VjaGNhbmNlbC5icnVzaCIsZykuc3R5bGUoInRvdWNoLWFjdGlvbiIsIm5vbmUiKS5zdHlsZSgiLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yIiwicmdiYSgwLDAsMCwwKSIpfWZ1bmN0aW9uIGQoKXt2YXIgdD1uOCh0aGlzKSxlPWZudCh0aGlzKS5zZWxlY3Rpb247ZT8odC5zZWxlY3RBbGwoIi5zZWxlY3Rpb24iKS5zdHlsZSgiZGlzcGxheSIsbnVsbCkuYXR0cigieCIsZVswXVswXSkuYXR0cigieSIsZVswXVsxXSkuYXR0cigid2lkdGgiLGVbMV1bMF0tZVswXVswXSkuYXR0cigiaGVpZ2h0IixlWzFdWzFdLWVbMF1bMV0pLHQuc2VsZWN0QWxsKCIuaGFuZGxlIikuc3R5bGUoImRpc3BsYXkiLG51bGwpLmF0dHIoIngiLChmdW5jdGlvbih0KXtyZXR1cm4iZSI9PT10LnR5cGVbdC50eXBlLmxlbmd0aC0xXT9lWzFdWzBdLWwvMjplWzBdWzBdLWwvMn0pKS5hdHRyKCJ5IiwoZnVuY3Rpb24odCl7cmV0dXJuInMiPT09dC50eXBlWzBdP2VbMV1bMV0tbC8yOmVbMF1bMV0tbC8yfSkpLmF0dHIoIndpZHRoIiwoZnVuY3Rpb24odCl7cmV0dXJuIm4iPT09dC50eXBlfHwicyI9PT10LnR5cGU/ZVsxXVswXS1lWzBdWzBdK2w6bH0pKS5hdHRyKCJoZWlnaHQiLChmdW5jdGlvbih0KXtyZXR1cm4iZSI9PT10LnR5cGV8fCJ3Ij09PXQudHlwZT9lWzFdWzFdLWVbMF1bMV0rbDpsfSkpKTp0LnNlbGVjdEFsbCgiLnNlbGVjdGlvbiwuaGFuZGxlIikuc3R5bGUoImRpc3BsYXkiLCJub25lIikuYXR0cigieCIsbnVsbCkuYXR0cigieSIsbnVsbCkuYXR0cigid2lkdGgiLG51bGwpLmF0dHIoImhlaWdodCIsbnVsbCl9ZnVuY3Rpb24gcCh0LGUsbil7dmFyIG89dC5fX2JydXNoLmVtaXR0ZXI7cmV0dXJuIW98fG4mJm8uY2xlYW4/bmV3IG0odCxlLG4pOm99ZnVuY3Rpb24gbSh0LGUsbil7dGhpcy50aGF0PXQsdGhpcy5hcmdzPWUsdGhpcy5zdGF0ZT10Ll9fYnJ1c2gsdGhpcy5hY3RpdmU9MCx0aGlzLmNsZWFuPW59ZnVuY3Rpb24gZigpe2lmKCghbnx8VzcudG91Y2hlcykmJmkuYXBwbHkodGhpcyxhcmd1bWVudHMpKXt2YXIgdCxvLGEscyxsLGMsbSxmLHUsZyxoLGI9dGhpcyx5PVc3LnRhcmdldC5fX2RhdGFfXy50eXBlLF89InNlbGVjdGlvbiI9PT0ociYmVzcubWV0YUtleT95PSJvdmVybGF5Ijp5KT9YZXQ6ciYmVzcuYWx0S2V5P1FldDpKZXQsQz1lPT09b250P251bGw6c250W3ldLE09ZT09PW5udD9udWxsOmxudFt5XSx2PWZudChiKSx4PXYuZXh0ZW50LE89di5zZWxlY3Rpb24sUD14WzBdWzBdLHc9eFswXVsxXSxrPXhbMV1bMF0sUz14WzFdWzFdLEQ9MCxSPTAsRT1DJiZNJiZyJiZXNy5zaGlmdEtleSxBPVc3LnRvdWNoZXM/ZW50KFc3LmNoYW5nZWRUb3VjaGVzWzBdLmlkZW50aWZpZXIpOmE4LFQ9QShiKSxOPVQsej1wKGIsYXJndW1lbnRzLCEwKS5iZWZvcmVzdGFydCgpOyJvdmVybGF5Ij09PXk/KE8mJih1PSEwKSx2LnNlbGVjdGlvbj1PPVtbdD1lPT09b250P1A6VFswXSxhPWU9PT1ubnQ/dzpUWzFdXSxbbD1lPT09b250P2s6dCxtPWU9PT1ubnQ/UzphXV0pOih0PU9bMF1bMF0sYT1PWzBdWzFdLGw9T1sxXVswXSxtPU9bMV1bMV0pLG89dCxzPWEsYz1sLGY9bTt2YXIgST1uOChiKS5hdHRyKCJwb2ludGVyLWV2ZW50cyIsIm5vbmUiKSxIPUkuc2VsZWN0QWxsKCIub3ZlcmxheSIpLmF0dHIoImN1cnNvciIsaW50W3ldKTtpZihXNy50b3VjaGVzKXoubW92ZWQ9TCx6LmVuZGVkPVY7ZWxzZXt2YXIgRj1uOChXNy52aWV3KS5vbigibW91c2Vtb3ZlLmJydXNoIixMLCEwKS5vbigibW91c2V1cC5icnVzaCIsViwhMCk7ciYmRi5vbigia2V5ZG93bi5icnVzaCIsaiwhMCkub24oImtleXVwLmJydXNoIixVLCEwKSxzOChXNy52aWV3KX1HZXQoKSxqdHQoYiksZC5jYWxsKGIpLHouc3RhcnQoKX1mdW5jdGlvbiBMKCl7dmFyIHQ9QShiKTshRXx8Z3x8aHx8KE1hdGguYWJzKHRbMF0tTlswXSk+TWF0aC5hYnModFsxXS1OWzFdKT9oPSEwOmc9ITApLE49dCx1PSEwLFlldCgpLEIoKX1mdW5jdGlvbiBCKCl7dmFyIGU7c3dpdGNoKEQ9TlswXS1UWzBdLFI9TlsxXS1UWzFdLF8pe2Nhc2UgS2V0OmNhc2UgWGV0OkMmJihEPU1hdGgubWF4KFAtdCxNYXRoLm1pbihrLWwsRCkpLG89dCtELGM9bCtEKSxNJiYoUj1NYXRoLm1heCh3LWEsTWF0aC5taW4oUy1tLFIpKSxzPWErUixmPW0rUik7YnJlYWs7Y2FzZSBKZXQ6QzwwPyhEPU1hdGgubWF4KFAtdCxNYXRoLm1pbihrLXQsRCkpLG89dCtELGM9bCk6Qz4wJiYoRD1NYXRoLm1heChQLWwsTWF0aC5taW4oay1sLEQpKSxvPXQsYz1sK0QpLE08MD8oUj1NYXRoLm1heCh3LWEsTWF0aC5taW4oUy1hLFIpKSxzPWErUixmPW0pOk0+MCYmKFI9TWF0aC5tYXgody1tLE1hdGgubWluKFMtbSxSKSkscz1hLGY9bStSKTticmVhaztjYXNlIFFldDpDJiYobz1NYXRoLm1heChQLE1hdGgubWluKGssdC1EKkMpKSxjPU1hdGgubWF4KFAsTWF0aC5taW4oayxsK0QqQykpKSxNJiYocz1NYXRoLm1heCh3LE1hdGgubWluKFMsYS1SKk0pKSxmPU1hdGgubWF4KHcsTWF0aC5taW4oUyxtK1IqTSkpKX1jPG8mJihDKj0tMSxlPXQsdD1sLGw9ZSxlPW8sbz1jLGM9ZSx5IGluIGFudCYmSC5hdHRyKCJjdXJzb3IiLGludFt5PWFudFt5XV0pKSxmPHMmJihNKj0tMSxlPWEsYT1tLG09ZSxlPXMscz1mLGY9ZSx5IGluIHJudCYmSC5hdHRyKCJjdXJzb3IiLGludFt5PXJudFt5XV0pKSx2LnNlbGVjdGlvbiYmKE89di5zZWxlY3Rpb24pLGcmJihvPU9bMF1bMF0sYz1PWzFdWzBdKSxoJiYocz1PWzBdWzFdLGY9T1sxXVsxXSksT1swXVswXT09PW8mJk9bMF1bMV09PT1zJiZPWzFdWzBdPT09YyYmT1sxXVsxXT09PWZ8fCh2LnNlbGVjdGlvbj1bW28sc10sW2MsZl1dLGQuY2FsbChiKSx6LmJydXNoKCkpfWZ1bmN0aW9uIFYoKXtpZihHZXQoKSxXNy50b3VjaGVzKXtpZihXNy50b3VjaGVzLmxlbmd0aClyZXR1cm47biYmY2xlYXJUaW1lb3V0KG4pLG49c2V0VGltZW91dCgoZnVuY3Rpb24oKXtuPW51bGx9KSw1MDApfWVsc2UgbDgoVzcudmlldyx1KSxGLm9uKCJrZXlkb3duLmJydXNoIGtleXVwLmJydXNoIG1vdXNlbW92ZS5icnVzaCBtb3VzZXVwLmJydXNoIixudWxsKTtJLmF0dHIoInBvaW50ZXItZXZlbnRzIiwiYWxsIiksSC5hdHRyKCJjdXJzb3IiLGludC5vdmVybGF5KSx2LnNlbGVjdGlvbiYmKE89di5zZWxlY3Rpb24pLHVudChPKSYmKHYuc2VsZWN0aW9uPW51bGwsZC5jYWxsKGIpKSx6LmVuZCgpfWZ1bmN0aW9uIGooKXtzd2l0Y2goVzcua2V5Q29kZSl7Y2FzZSAxNjpFPUMmJk07YnJlYWs7Y2FzZSAxODpfPT09SmV0JiYoQyYmKGw9Yy1EKkMsdD1vK0QqQyksTSYmKG09Zi1SKk0sYT1zK1IqTSksXz1RZXQsQigpKTticmVhaztjYXNlIDMyOl8hPT1KZXQmJl8hPT1RZXR8fChDPDA/bD1jLUQ6Qz4wJiYodD1vLUQpLE08MD9tPWYtUjpNPjAmJihhPXMtUiksXz1LZXQsSC5hdHRyKCJjdXJzb3IiLGludC5zZWxlY3Rpb24pLEIoKSk7YnJlYWs7ZGVmYXVsdDpyZXR1cm59WWV0KCl9ZnVuY3Rpb24gVSgpe3N3aXRjaChXNy5rZXlDb2RlKXtjYXNlIDE2OkUmJihnPWg9RT0hMSxCKCkpO2JyZWFrO2Nhc2UgMTg6Xz09PVFldCYmKEM8MD9sPWM6Qz4wJiYodD1vKSxNPDA/bT1mOk0+MCYmKGE9cyksXz1KZXQsQigpKTticmVhaztjYXNlIDMyOl89PT1LZXQmJihXNy5hbHRLZXk/KEMmJihsPWMtRCpDLHQ9bytEKkMpLE0mJihtPWYtUipNLGE9cytSKk0pLF89UWV0KTooQzwwP2w9YzpDPjAmJih0PW8pLE08MD9tPWY6TT4wJiYoYT1zKSxfPUpldCksSC5hdHRyKCJjdXJzb3IiLGludFt5XSksQigpKTticmVhaztkZWZhdWx0OnJldHVybn1ZZXQoKX19ZnVuY3Rpb24gdSgpe3AodGhpcyxhcmd1bWVudHMpLm1vdmVkKCl9ZnVuY3Rpb24gZygpe3AodGhpcyxhcmd1bWVudHMpLmVuZGVkKCl9ZnVuY3Rpb24gaCgpe3ZhciB0PXRoaXMuX19icnVzaHx8e3NlbGVjdGlvbjpudWxsfTtyZXR1cm4gdC5leHRlbnQ9dG50KG8uYXBwbHkodGhpcyxhcmd1bWVudHMpKSx0LmRpbT1lLHR9cmV0dXJuIGMubW92ZT1mdW5jdGlvbih0LG4pe3Quc2VsZWN0aW9uP3Qub24oInN0YXJ0LmJydXNoIiwoZnVuY3Rpb24oKXtwKHRoaXMsYXJndW1lbnRzKS5iZWZvcmVzdGFydCgpLnN0YXJ0KCl9KSkub24oImludGVycnVwdC5icnVzaCBlbmQuYnJ1c2giLChmdW5jdGlvbigpe3AodGhpcyxhcmd1bWVudHMpLmVuZCgpfSkpLnR3ZWVuKCJicnVzaCIsKGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxvPXQuX19icnVzaCxpPXAodCxhcmd1bWVudHMpLGE9by5zZWxlY3Rpb24scj1lLmlucHV0KCJmdW5jdGlvbiI9PXR5cGVvZiBuP24uYXBwbHkodGhpcyxhcmd1bWVudHMpOm4sby5leHRlbnQpLHM9dHR0KGEscik7ZnVuY3Rpb24gbChlKXtvLnNlbGVjdGlvbj0xPT09ZSYmbnVsbD09PXI/bnVsbDpzKGUpLGQuY2FsbCh0KSxpLmJydXNoKCl9cmV0dXJuIG51bGwhPT1hJiZudWxsIT09cj9sOmwoMSl9KSk6dC5lYWNoKChmdW5jdGlvbigpe3ZhciB0PXRoaXMsbz1hcmd1bWVudHMsaT10Ll9fYnJ1c2gsYT1lLmlucHV0KCJmdW5jdGlvbiI9PXR5cGVvZiBuP24uYXBwbHkodCxvKTpuLGkuZXh0ZW50KSxyPXAodCxvKS5iZWZvcmVzdGFydCgpO2p0dCh0KSxpLnNlbGVjdGlvbj1udWxsPT09YT9udWxsOmEsZC5jYWxsKHQpLHIuc3RhcnQoKS5icnVzaCgpLmVuZCgpfSkpfSxjLmNsZWFyPWZ1bmN0aW9uKHQpe2MubW92ZSh0LG51bGwpfSxtLnByb3RvdHlwZT17YmVmb3Jlc3RhcnQ6ZnVuY3Rpb24oKXtyZXR1cm4gMT09Kyt0aGlzLmFjdGl2ZSYmKHRoaXMuc3RhdGUuZW1pdHRlcj10aGlzLHRoaXMuc3RhcnRpbmc9ITApLHRoaXN9LHN0YXJ0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3RhcnRpbmc/KHRoaXMuc3RhcnRpbmc9ITEsdGhpcy5lbWl0KCJzdGFydCIpKTp0aGlzLmVtaXQoImJydXNoIiksdGhpc30sYnJ1c2g6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbWl0KCJicnVzaCIpLHRoaXN9LGVuZDpmdW5jdGlvbigpe3JldHVybiAwPT0tLXRoaXMuYWN0aXZlJiYoZGVsZXRlIHRoaXMuc3RhdGUuZW1pdHRlcix0aGlzLmVtaXQoImVuZCIpKSx0aGlzfSxlbWl0OmZ1bmN0aW9uKHQpeyEoZnVuY3Rpb24gbih0LGUsbyxpKXt2YXIgYT1XNzt0LnNvdXJjZUV2ZW50PVc3LFc3PXQ7dHJ5e3JldHVybiBlLmFwcGx5KG8saSl9ZmluYWxseXtXNz1hfX0pKG5ldyBXZXQoYyx0LGUub3V0cHV0KHRoaXMuc3RhdGUuc2VsZWN0aW9uKSkscy5hcHBseSxzLFt0LHRoaXMudGhhdCx0aGlzLmFyZ3NdKX19LGMuZXh0ZW50PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6VWV0KHRudCh0KSksYyk6b30sYy5maWx0ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpVZXQoISF0KSxjKTppfSxjLnRvdWNoYWJsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OlVldCghIXQpLGMpOmF9LGMuaGFuZGxlU2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obD0rdCxjKTpsfSxjLmtleU1vZGlmaWVycz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0hIXQsYyk6cn0sYy5vbj1mdW5jdGlvbigpe3ZhciB0PXMub24uYXBwbHkocyxhcmd1bWVudHMpO3JldHVybiB0PT09cz9jOnR9LGN9KShvbnQpfXZhciBobnQ9TWF0aC5QSSxibnQ9MipobnQseW50PTFlLTYsX250PWJudC15bnQ7ZnVuY3Rpb24gQ250KCl7dGhpcy5feDA9dGhpcy5feTA9dGhpcy5feDE9dGhpcy5feTE9bnVsbCx0aGlzLl89IiJ9ZnVuY3Rpb24gTW50KCl7cmV0dXJuIG5ldyBDbnR9Q250LnByb3RvdHlwZT1NbnQucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpDbnQsbW92ZVRvOmZ1bmN0aW9uKHQsZSl7dGhpcy5fKz0iTSIrKHRoaXMuX3gwPXRoaXMuX3gxPSt0KSsiLCIrKHRoaXMuX3kwPXRoaXMuX3kxPStlKX0sY2xvc2VQYXRoOmZ1bmN0aW9uKCl7bnVsbCE9PXRoaXMuX3gxJiYodGhpcy5feDE9dGhpcy5feDAsdGhpcy5feTE9dGhpcy5feTAsdGhpcy5fKz0iWiIpfSxsaW5lVG86ZnVuY3Rpb24odCxlKXt0aGlzLl8rPSJMIisodGhpcy5feDE9K3QpKyIsIisodGhpcy5feTE9K2UpfSxxdWFkcmF0aWNDdXJ2ZVRvOmZ1bmN0aW9uKHQsZSxuLG8pe3RoaXMuXys9IlEiKyArdCsiLCIrICtlKyIsIisodGhpcy5feDE9K24pKyIsIisodGhpcy5feTE9K28pfSxiZXppZXJDdXJ2ZVRvOmZ1bmN0aW9uKHQsZSxuLG8saSxhKXt0aGlzLl8rPSJDIisgK3QrIiwiKyArZSsiLCIrICtuKyIsIisgK28rIiwiKyh0aGlzLl94MT0raSkrIiwiKyh0aGlzLl95MT0rYSl9LGFyY1RvOmZ1bmN0aW9uKHQsZSxuLG8saSl7dmFyIGE9dGhpcy5feDEscj10aGlzLl95MSxzPShuPStuKS0odD0rdCksbD0obz0rbyktKGU9K2UpLGM9YS10LGQ9ci1lLHA9YypjK2QqZDtpZigoaT0raSk8MCl0aHJvdyBuZXcgRXJyb3IoIm5lZ2F0aXZlIHJhZGl1czogIitpKTtpZihudWxsPT09dGhpcy5feDEpdGhpcy5fKz0iTSIrKHRoaXMuX3gxPXQpKyIsIisodGhpcy5feTE9ZSk7ZWxzZSBpZihwPnludClpZihNYXRoLmFicyhkKnMtbCpjKT55bnQmJmkpe3ZhciBtPW4tYSxmPW8tcix1PXMqcytsKmwsZz1tKm0rZipmLGg9TWF0aC5zcXJ0KHUpLGI9TWF0aC5zcXJ0KHApLHk9aSpNYXRoLnRhbigoaG50LU1hdGguYWNvcygodStwLWcpLygyKmgqYikpKS8yKSxfPXkvYixDPXkvaDtNYXRoLmFicyhfLTEpPnludCYmKHRoaXMuXys9IkwiKyh0K18qYykrIiwiKyhlK18qZCkpLHRoaXMuXys9IkEiK2krIiwiK2krIiwwLDAsIisgKyhkKm0+YypmKSsiLCIrKHRoaXMuX3gxPXQrQypzKSsiLCIrKHRoaXMuX3kxPWUrQypsKX1lbHNlIHRoaXMuXys9IkwiKyh0aGlzLl94MT10KSsiLCIrKHRoaXMuX3kxPWUpO2Vsc2U7fSxhcmM6ZnVuY3Rpb24odCxlLG4sbyxpLGEpe3Q9K3QsZT0rZSxhPSEhYTt2YXIgcj0obj0rbikqTWF0aC5jb3Mobykscz1uKk1hdGguc2luKG8pLGw9dCtyLGM9ZStzLGQ9MV5hLHA9YT9vLWk6aS1vO2lmKG48MCl0aHJvdyBuZXcgRXJyb3IoIm5lZ2F0aXZlIHJhZGl1czogIituKTtudWxsPT09dGhpcy5feDE/dGhpcy5fKz0iTSIrbCsiLCIrYzooTWF0aC5hYnModGhpcy5feDEtbCk+eW50fHxNYXRoLmFicyh0aGlzLl95MS1jKT55bnQpJiYodGhpcy5fKz0iTCIrbCsiLCIrYyksbiYmKHA8MCYmKHA9cCVibnQrYm50KSxwPl9udD90aGlzLl8rPSJBIituKyIsIituKyIsMCwxLCIrZCsiLCIrKHQtcikrIiwiKyhlLXMpKyJBIituKyIsIituKyIsMCwxLCIrZCsiLCIrKHRoaXMuX3gxPWwpKyIsIisodGhpcy5feTE9Yyk6cD55bnQmJih0aGlzLl8rPSJBIituKyIsIituKyIsMCwiKyArKHA+PWhudCkrIiwiK2QrIiwiKyh0aGlzLl94MT10K24qTWF0aC5jb3MoaSkpKyIsIisodGhpcy5feTE9ZStuKk1hdGguc2luKGkpKSkpfSxyZWN0OmZ1bmN0aW9uKHQsZSxuLG8pe3RoaXMuXys9Ik0iKyh0aGlzLl94MD10aGlzLl94MT0rdCkrIiwiKyh0aGlzLl95MD10aGlzLl95MT0rZSkrImgiKyArbisidiIrICtvKyJoIistbisiWiJ9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX319O3ZhciB2bnQ9IiQiO2Z1bmN0aW9uIHhudCgpe31mdW5jdGlvbiBPbnQodCxlKXt2YXIgbj1uZXcgeG50O2lmKHQgaW5zdGFuY2VvZiB4bnQpdC5lYWNoKChmdW5jdGlvbih0LGUpe24uc2V0KGUsdCl9KSk7ZWxzZSBpZihBcnJheS5pc0FycmF5KHQpKXt2YXIgbyxpPS0xLGE9dC5sZW5ndGg7aWYobnVsbD09ZSlmb3IoOysraTxhOyluLnNldChpLHRbaV0pO2Vsc2UgZm9yKDsrK2k8YTspbi5zZXQoZShvPXRbaV0saSx0KSxvKX1lbHNlIGlmKHQpZm9yKHZhciByIGluIHQpbi5zZXQocix0W3JdKTtyZXR1cm4gbn1mdW5jdGlvbiBQbnQoKXt9eG50LnByb3RvdHlwZT1PbnQucHJvdG90eXBlPXtjb25zdHJ1Y3Rvcjp4bnQsaGFzOmZ1bmN0aW9uKHQpe3JldHVybiB2bnQrdCBpbiB0aGlzfSxnZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXNbdm50K3RdfSxzZXQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpc1t2bnQrdF09ZSx0aGlzfSxyZW1vdmU6ZnVuY3Rpb24odCl7dmFyIGU9dm50K3Q7cmV0dXJuIGUgaW4gdGhpcyYmZGVsZXRlIHRoaXNbZV19LGNsZWFyOmZ1bmN0aW9uKCl7Zm9yKHZhciB0IGluIHRoaXMpdFswXT09PXZudCYmZGVsZXRlIHRoaXNbdF19LGtleXM6ZnVuY3Rpb24oKXt2YXIgdD1bXTtmb3IodmFyIGUgaW4gdGhpcyllWzBdPT09dm50JiZ0LnB1c2goZS5zbGljZSgxKSk7cmV0dXJuIHR9LHZhbHVlczpmdW5jdGlvbigpe3ZhciB0PVtdO2Zvcih2YXIgZSBpbiB0aGlzKWVbMF09PT12bnQmJnQucHVzaCh0aGlzW2VdKTtyZXR1cm4gdH0sZW50cmllczpmdW5jdGlvbigpe3ZhciB0PVtdO2Zvcih2YXIgZSBpbiB0aGlzKWVbMF09PT12bnQmJnQucHVzaCh7a2V5OmUuc2xpY2UoMSksdmFsdWU6dGhpc1tlXX0pO3JldHVybiB0fSxzaXplOmZ1bmN0aW9uKCl7dmFyIHQ9MDtmb3IodmFyIGUgaW4gdGhpcyllWzBdPT09dm50JiYrK3Q7cmV0dXJuIHR9LGVtcHR5OmZ1bmN0aW9uKCl7Zm9yKHZhciB0IGluIHRoaXMpaWYodFswXT09PXZudClyZXR1cm4hMTtyZXR1cm4hMH0sZWFjaDpmdW5jdGlvbih0KXtmb3IodmFyIGUgaW4gdGhpcyllWzBdPT09dm50JiZ0KHRoaXNbZV0sZS5zbGljZSgxKSx0aGlzKX19O3ZhciB3bnQ9T250LnByb3RvdHlwZTtmdW5jdGlvbiBrbnQodCxlKXtpZigobj0odD1lP3QudG9FeHBvbmVudGlhbChlLTEpOnQudG9FeHBvbmVudGlhbCgpKS5pbmRleE9mKCJlIikpPDApcmV0dXJuIG51bGw7dmFyIG4sbz10LnNsaWNlKDAsbik7cmV0dXJuW28ubGVuZ3RoPjE/b1swXStvLnNsaWNlKDIpOm8sK3Quc2xpY2UobisxKV19ZnVuY3Rpb24gU250KHQpe3JldHVybih0PWtudChNYXRoLmFicyh0KSkpP3RbMV06TmFOfVBudC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOlBudCxoYXM6d250LmhhcyxhZGQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXNbdm50Kyh0Kz0iIildPXQsdGhpc30scmVtb3ZlOndudC5yZW1vdmUsY2xlYXI6d250LmNsZWFyLHZhbHVlczp3bnQua2V5cyxzaXplOndudC5zaXplLGVtcHR5OndudC5lbXB0eSxlYWNoOndudC5lYWNofTt2YXIgRG50LFJudD0vXig/OiguKT8oWzw+PV5dKSk/KFsrXC0oIF0pPyhbJCNdKT8oMCk/KFxkKyk/KCwpPyhcLlxkKyk/KH4pPyhbYS16JV0pPyQvaTtmdW5jdGlvbiBFbnQodCl7aWYoIShlPVJudC5leGVjKHQpKSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgZm9ybWF0OiAiK3QpO3ZhciBlO3JldHVybiBuZXcgQW50KHtmaWxsOmVbMV0sYWxpZ246ZVsyXSxzaWduOmVbM10sc3ltYm9sOmVbNF0semVybzplWzVdLHdpZHRoOmVbNl0sY29tbWE6ZVs3XSxwcmVjaXNpb246ZVs4XSYmZVs4XS5zbGljZSgxKSx0cmltOmVbOV0sdHlwZTplWzEwXX0pfWZ1bmN0aW9uIEFudCh0KXt0aGlzLmZpbGw9dm9pZCAwPT09dC5maWxsPyIgIjp0LmZpbGwrIiIsdGhpcy5hbGlnbj12b2lkIDA9PT10LmFsaWduPyI+Ijp0LmFsaWduKyIiLHRoaXMuc2lnbj12b2lkIDA9PT10LnNpZ24/Ii0iOnQuc2lnbisiIix0aGlzLnN5bWJvbD12b2lkIDA9PT10LnN5bWJvbD8iIjp0LnN5bWJvbCsiIix0aGlzLnplcm89ISF0Lnplcm8sdGhpcy53aWR0aD12b2lkIDA9PT10LndpZHRoP3ZvaWQgMDordC53aWR0aCx0aGlzLmNvbW1hPSEhdC5jb21tYSx0aGlzLnByZWNpc2lvbj12b2lkIDA9PT10LnByZWNpc2lvbj92b2lkIDA6K3QucHJlY2lzaW9uLHRoaXMudHJpbT0hIXQudHJpbSx0aGlzLnR5cGU9dm9pZCAwPT09dC50eXBlPyIiOnQudHlwZSsiIn1mdW5jdGlvbiBUbnQodCxlKXt2YXIgbj1rbnQodCxlKTtpZighbilyZXR1cm4gdCsiIjt2YXIgbz1uWzBdLGk9blsxXTtyZXR1cm4gaTwwPyIwLiIrbmV3IEFycmF5KC1pKS5qb2luKCIwIikrbzpvLmxlbmd0aD5pKzE/by5zbGljZSgwLGkrMSkrIi4iK28uc2xpY2UoaSsxKTpvK25ldyBBcnJheShpLW8ubGVuZ3RoKzIpLmpvaW4oIjAiKX1FbnQucHJvdG90eXBlPUFudC5wcm90b3R5cGUsQW50LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmZpbGwrdGhpcy5hbGlnbit0aGlzLnNpZ24rdGhpcy5zeW1ib2wrKHRoaXMuemVybz8iMCI6IiIpKyh2b2lkIDA9PT10aGlzLndpZHRoPyIiOk1hdGgubWF4KDEsMHx0aGlzLndpZHRoKSkrKHRoaXMuY29tbWE/IiwiOiIiKSsodm9pZCAwPT09dGhpcy5wcmVjaXNpb24/IiI6Ii4iK01hdGgubWF4KDAsMHx0aGlzLnByZWNpc2lvbikpKyh0aGlzLnRyaW0/In4iOiIiKSt0aGlzLnR5cGV9O3ZhciBObnQ9eyIlIjpmdW5jdGlvbih0LGUpe3JldHVybigxMDAqdCkudG9GaXhlZChlKX0sYjpmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5yb3VuZCh0KS50b1N0cmluZygyKX0sYzpmdW5jdGlvbih0KXtyZXR1cm4gdCsiIn0sZDpmdW5jdGlvbiB6bnQodCl7cmV0dXJuIE1hdGguYWJzKHQ9TWF0aC5yb3VuZCh0KSk+PTFlMjE/dC50b0xvY2FsZVN0cmluZygiZW4iKS5yZXBsYWNlKC8sL2csIiIpOnQudG9TdHJpbmcoMTApfSxlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQudG9FeHBvbmVudGlhbChlKX0sZjpmdW5jdGlvbih0LGUpe3JldHVybiB0LnRvRml4ZWQoZSl9LGc6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC50b1ByZWNpc2lvbihlKX0sbzpmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5yb3VuZCh0KS50b1N0cmluZyg4KX0scDpmdW5jdGlvbih0LGUpe3JldHVybiBUbnQoMTAwKnQsZSl9LHI6VG50LHM6ZnVuY3Rpb24gSW50KHQsZSl7dmFyIG49a250KHQsZSk7aWYoIW4pcmV0dXJuIHQrIiI7dmFyIG89blswXSxpPW5bMV0sYT1pLShEbnQ9MypNYXRoLm1heCgtOCxNYXRoLm1pbig4LE1hdGguZmxvb3IoaS8zKSkpKSsxLHI9by5sZW5ndGg7cmV0dXJuIGE9PT1yP286YT5yP28rbmV3IEFycmF5KGEtcisxKS5qb2luKCIwIik6YT4wP28uc2xpY2UoMCxhKSsiLiIrby5zbGljZShhKToiMC4iK25ldyBBcnJheSgxLWEpLmpvaW4oIjAiKStrbnQodCxNYXRoLm1heCgwLGUrYS0xKSlbMF19LFg6ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgucm91bmQodCkudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCl9LHg6ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgucm91bmQodCkudG9TdHJpbmcoMTYpfX07ZnVuY3Rpb24gSG50KHQpe3JldHVybiB0fXZhciBGbnQsTG50LEJudCxWbnQ9QXJyYXkucHJvdG90eXBlLm1hcCxqbnQ9WyJ5IiwieiIsImEiLCJmIiwicCIsIm4iLCLCtSIsIm0iLCIiLCJrIiwiTSIsIkciLCJUIiwiUCIsIkUiLCJaIiwiWSJdO2Z1bmN0aW9uIFVudCh0KXt2YXIgZT12b2lkIDA9PT10Lmdyb3VwaW5nfHx2b2lkIDA9PT10LnRob3VzYW5kcz9IbnQ6KGZ1bmN0aW9uIG4odCxlKXtyZXR1cm4gZnVuY3Rpb24obixvKXtmb3IodmFyIGk9bi5sZW5ndGgsYT1bXSxyPTAscz10WzBdLGw9MDtpPjAmJnM+MCYmKGwrcysxPm8mJihzPU1hdGgubWF4KDEsby1sKSksYS5wdXNoKG4uc3Vic3RyaW5nKGktPXMsaStzKSksISgobCs9cysxKT5vKSk7KXM9dFtyPShyKzEpJXQubGVuZ3RoXTtyZXR1cm4gYS5yZXZlcnNlKCkuam9pbihlKX19KShWbnQuY2FsbCh0Lmdyb3VwaW5nLE51bWJlciksdC50aG91c2FuZHMrIiIpLG89dm9pZCAwPT09dC5jdXJyZW5jeT8iIjp0LmN1cnJlbmN5WzBdKyIiLGk9dm9pZCAwPT09dC5jdXJyZW5jeT8iIjp0LmN1cnJlbmN5WzFdKyIiLGE9dm9pZCAwPT09dC5kZWNpbWFsPyIuIjp0LmRlY2ltYWwrIiIscj12b2lkIDA9PT10Lm51bWVyYWxzP0hudDooZnVuY3Rpb24gcyh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZSgvWzAtOV0vZywoZnVuY3Rpb24oZSl7cmV0dXJuIHRbK2VdfSkpfX0pKFZudC5jYWxsKHQubnVtZXJhbHMsU3RyaW5nKSksbD12b2lkIDA9PT10LnBlcmNlbnQ/IiUiOnQucGVyY2VudCsiIixjPXZvaWQgMD09PXQubWludXM/Ii0iOnQubWludXMrIiIsZD12b2lkIDA9PT10Lm5hbj8iTmFOIjp0Lm5hbisiIjtmdW5jdGlvbiBwKHQpe3ZhciBuPSh0PUVudCh0KSkuZmlsbCxzPXQuYWxpZ24scD10LnNpZ24sbT10LnN5bWJvbCxmPXQuemVybyx1PXQud2lkdGgsZz10LmNvbW1hLGg9dC5wcmVjaXNpb24sYj10LnRyaW0seT10LnR5cGU7Im4iPT09eT8oZz0hMCx5PSJnIik6Tm50W3ldfHwodm9pZCAwPT09aCYmKGg9MTIpLGI9ITAseT0iZyIpLChmfHwiMCI9PT1uJiYiPSI9PT1zKSYmKGY9ITAsbj0iMCIscz0iPSIpO3ZhciBfPSIkIj09PW0/bzoiIyI9PT1tJiYvW2JveFhdLy50ZXN0KHkpPyIwIit5LnRvTG93ZXJDYXNlKCk6IiIsQz0iJCI9PT1tP2k6L1slcF0vLnRlc3QoeSk/bDoiIixNPU5udFt5XSx2PS9bZGVmZ3BycyVdLy50ZXN0KHkpO2Z1bmN0aW9uIHgodCl7dmFyIG8saSxsLG09Xyx4PUM7aWYoImMiPT09eSl4PU0odCkreCx0PSIiO2Vsc2V7dmFyIE89KHQ9K3QpPDB8fDEvdDwwO2lmKHQ9aXNOYU4odCk/ZDpNKE1hdGguYWJzKHQpLGgpLGImJih0PShmdW5jdGlvbiBQKHQpe3Q6Zm9yKHZhciBlLG49dC5sZW5ndGgsbz0xLGk9LTE7bzxuOysrbylzd2l0Y2godFtvXSl7Y2FzZSIuIjppPWU9bzticmVhaztjYXNlIjAiOjA9PT1pJiYoaT1vKSxlPW87YnJlYWs7ZGVmYXVsdDppZighK3Rbb10pYnJlYWsgdDtpPjAmJihpPTApfXJldHVybiBpPjA/dC5zbGljZSgwLGkpK3Quc2xpY2UoZSsxKTp0fSkodCkpLE8mJjA9PSt0JiYiKyIhPT1wJiYoTz0hMSksbT0oTz8iKCI9PT1wP3A6YzoiLSI9PT1wfHwiKCI9PT1wPyIiOnApK20seD0oInMiPT09eT9qbnRbOCtEbnQvM106IiIpK3grKE8mJiIoIj09PXA/IikiOiIiKSx2KWZvcihvPS0xLGk9dC5sZW5ndGg7KytvPGk7KWlmKDQ4PihsPXQuY2hhckNvZGVBdChvKSl8fGw+NTcpe3g9KDQ2PT09bD9hK3Quc2xpY2UobysxKTp0LnNsaWNlKG8pKSt4LHQ9dC5zbGljZSgwLG8pO2JyZWFrfX1nJiYhZiYmKHQ9ZSh0LDEvMCkpO3ZhciB3PW0ubGVuZ3RoK3QubGVuZ3RoK3gubGVuZ3RoLGs9dzx1P25ldyBBcnJheSh1LXcrMSkuam9pbihuKToiIjtzd2l0Y2goZyYmZiYmKHQ9ZShrK3Qsay5sZW5ndGg/dS14Lmxlbmd0aDoxLzApLGs9IiIpLHMpe2Nhc2UiPCI6dD1tK3QreCtrO2JyZWFrO2Nhc2UiPSI6dD1tK2srdCt4O2JyZWFrO2Nhc2UiXiI6dD1rLnNsaWNlKDAsdz1rLmxlbmd0aD4+MSkrbSt0K3gray5zbGljZSh3KTticmVhaztkZWZhdWx0OnQ9ayttK3QreH1yZXR1cm4gcih0KX1yZXR1cm4gaD12b2lkIDA9PT1oPzY6L1tncHJzXS8udGVzdCh5KT9NYXRoLm1heCgxLE1hdGgubWluKDIxLGgpKTpNYXRoLm1heCgwLE1hdGgubWluKDIwLGgpKSx4LnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHQrIiJ9LHh9cmV0dXJue2Zvcm1hdDpwLGZvcm1hdFByZWZpeDpmdW5jdGlvbiBtKHQsZSl7dmFyIG49cCgoKHQ9RW50KHQpKS50eXBlPSJmIix0KSksbz0zKk1hdGgubWF4KC04LE1hdGgubWluKDgsTWF0aC5mbG9vcihTbnQoZSkvMykpKSxpPU1hdGgucG93KDEwLC1vKSxhPWpudFs4K28vM107cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBuKGkqdCkrYX19fX1mdW5jdGlvbiBXbnQodCxlKXtzd2l0Y2goYXJndW1lbnRzLmxlbmd0aCl7Y2FzZSAwOmJyZWFrO2Nhc2UgMTp0aGlzLnJhbmdlKHQpO2JyZWFrO2RlZmF1bHQ6dGhpcy5yYW5nZShlKS5kb21haW4odCl9cmV0dXJuIHRoaXN9IShmdW5jdGlvbiBHbnQodCl7cmV0dXJuIEZudD1VbnQodCksTG50PUZudC5mb3JtYXQsQm50PUZudC5mb3JtYXRQcmVmaXgsRm50fSkoe2RlY2ltYWw6Ii4iLHRob3VzYW5kczoiLCIsZ3JvdXBpbmc6WzNdLGN1cnJlbmN5OlsiJCIsIiJdLG1pbnVzOiItIn0pO3ZhciBZbnQ9QXJyYXkucHJvdG90eXBlLHFudD1ZbnQubWFwLFpudD1ZbnQuc2xpY2UsWG50PXtuYW1lOiJpbXBsaWNpdCJ9O2Z1bmN0aW9uIEtudCgpe3ZhciB0PU9udCgpLGU9W10sbj1bXSxvPVhudDtmdW5jdGlvbiBpKGkpe3ZhciBhPWkrIiIscj10LmdldChhKTtpZighcil7aWYobyE9PVhudClyZXR1cm4gbzt0LnNldChhLHI9ZS5wdXNoKGkpKX1yZXR1cm4gblsoci0xKSVuLmxlbmd0aF19cmV0dXJuIGkuZG9tYWluPWZ1bmN0aW9uKG4pe2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiBlLnNsaWNlKCk7ZT1bXSx0PU9udCgpO2Zvcih2YXIgbyxhLHI9LTEscz1uLmxlbmd0aDsrK3I8czspdC5oYXMoYT0obz1uW3JdKSsiIil8fHQuc2V0KGEsZS5wdXNoKG8pKTtyZXR1cm4gaX0saS5yYW5nZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1abnQuY2FsbCh0KSxpKTpuLnNsaWNlKCl9LGkudW5rbm93bj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz10LGkpOm99LGkuY29weT1mdW5jdGlvbigpe3JldHVybiBLbnQoZSxuKS51bmtub3duKG8pfSxXbnQuYXBwbHkoaSxhcmd1bWVudHMpLGl9ZnVuY3Rpb24gSm50KCl7dmFyIHQsZSxuPUtudCgpLnVua25vd24odm9pZCAwKSxvPW4uZG9tYWluLGk9bi5yYW5nZSxhPVswLDFdLHI9ITEscz0wLGw9MCxjPS41O2Z1bmN0aW9uIGQoKXt2YXIgbj1vKCkubGVuZ3RoLGQ9YVsxXTxhWzBdLHA9YVtkLTBdLG09YVsxLWRdO3Q9KG0tcCkvTWF0aC5tYXgoMSxuLXMrMipsKSxyJiYodD1NYXRoLmZsb29yKHQpKSxwKz0obS1wLXQqKG4tcykpKmMsZT10KigxLXMpLHImJihwPU1hdGgucm91bmQocCksZT1NYXRoLnJvdW5kKGUpKTt2YXIgZj1NNihuKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBwK3QqZX0pKTtyZXR1cm4gaShkP2YucmV2ZXJzZSgpOmYpfXJldHVybiBkZWxldGUgbi51bmtub3duLG4uZG9tYWluPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvKHQpLGQoKSk6bygpfSxuLnJhbmdlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPVsrdFswXSwrdFsxXV0sZCgpKTphLnNsaWNlKCl9LG4ucmFuZ2VSb3VuZD1mdW5jdGlvbih0KXtyZXR1cm4gYT1bK3RbMF0sK3RbMV1dLHI9ITAsZCgpfSxuLmJhbmR3aWR0aD1mdW5jdGlvbigpe3JldHVybiBlfSxuLnN0ZXA9ZnVuY3Rpb24oKXtyZXR1cm4gdH0sbi5yb3VuZD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0hIXQsZCgpKTpyfSxuLnBhZGRpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9TWF0aC5taW4oMSxsPSt0KSxkKCkpOnN9LG4ucGFkZGluZ0lubmVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPU1hdGgubWluKDEsdCksZCgpKTpzfSxuLnBhZGRpbmdPdXRlcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obD0rdCxkKCkpOmx9LG4uYWxpZ249ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9TWF0aC5tYXgoMCxNYXRoLm1pbigxLHQpKSxkKCkpOmN9LG4uY29weT1mdW5jdGlvbigpe3JldHVybiBKbnQobygpLGEpLnJvdW5kKHIpLnBhZGRpbmdJbm5lcihzKS5wYWRkaW5nT3V0ZXIobCkuYWxpZ24oYyl9LFdudC5hcHBseShkKCksYXJndW1lbnRzKX1mdW5jdGlvbiBRbnQodCl7dmFyIGU9dC5jb3B5O3JldHVybiB0LnBhZGRpbmc9dC5wYWRkaW5nT3V0ZXIsZGVsZXRlIHQucGFkZGluZ0lubmVyLGRlbGV0ZSB0LnBhZGRpbmdPdXRlcix0LmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gUW50KGUoKSl9LHR9ZnVuY3Rpb24gJG50KCl7cmV0dXJuIFFudChKbnQuYXBwbHkobnVsbCxhcmd1bWVudHMpLnBhZGRpbmdJbm5lcigxKSl9ZnVuY3Rpb24gdG90KHQpe3JldHVybit0fXZhciBlb3Q9WzAsMV07ZnVuY3Rpb24gbm90KHQpe3JldHVybiB0fWZ1bmN0aW9uIG9vdCh0LGUpe3JldHVybihlLT10PSt0KT9mdW5jdGlvbihuKXtyZXR1cm4obi10KS9lfTooZnVuY3Rpb24gbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19KShpc05hTihlKT9OYU46LjUpfWZ1bmN0aW9uIGlvdCh0KXt2YXIgZSxuPXRbMF0sbz10W3QubGVuZ3RoLTFdO3JldHVybiBuPm8mJihlPW4sbj1vLG89ZSksZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgubWF4KG4sTWF0aC5taW4obyx0KSl9fWZ1bmN0aW9uIGFvdCh0LGUsbil7dmFyIG89dFswXSxpPXRbMV0sYT1lWzBdLHI9ZVsxXTtyZXR1cm4gaTxvPyhvPW9vdChpLG8pLGE9bihyLGEpKToobz1vb3QobyxpKSxhPW4oYSxyKSksZnVuY3Rpb24odCl7cmV0dXJuIGEobyh0KSl9fWZ1bmN0aW9uIHJvdCh0LGUsbil7dmFyIG89TWF0aC5taW4odC5sZW5ndGgsZS5sZW5ndGgpLTEsaT1uZXcgQXJyYXkobyksYT1uZXcgQXJyYXkobykscj0tMTtmb3IodFtvXTx0WzBdJiYodD10LnNsaWNlKCkucmV2ZXJzZSgpLGU9ZS5zbGljZSgpLnJldmVyc2UoKSk7KytyPG87KWlbcl09b290KHRbcl0sdFtyKzFdKSxhW3JdPW4oZVtyXSxlW3IrMV0pO3JldHVybiBmdW5jdGlvbihlKXt2YXIgbj1oNih0LGUsMSxvKS0xO3JldHVybiBhW25dKGlbbl0oZSkpfX1mdW5jdGlvbiBzb3QodCxlKXtyZXR1cm4gZS5kb21haW4odC5kb21haW4oKSkucmFuZ2UodC5yYW5nZSgpKS5pbnRlcnBvbGF0ZSh0LmludGVycG9sYXRlKCkpLmNsYW1wKHQuY2xhbXAoKSkudW5rbm93bih0LnVua25vd24oKSl9ZnVuY3Rpb24gbG90KCl7dmFyIHQsZSxuLG8saSxhLHI9ZW90LHM9ZW90LGw9dHR0LGM9bm90O2Z1bmN0aW9uIGQoKXtyZXR1cm4gbz1NYXRoLm1pbihyLmxlbmd0aCxzLmxlbmd0aCk+Mj9yb3Q6YW90LGk9YT1udWxsLHB9ZnVuY3Rpb24gcChlKXtyZXR1cm4gaXNOYU4oZT0rZSk/bjooaXx8KGk9byhyLm1hcCh0KSxzLGwpKSkodChjKGUpKSl9cmV0dXJuIHAuaW52ZXJ0PWZ1bmN0aW9uKG4pe3JldHVybiBjKGUoKGF8fChhPW8ocyxyLm1hcCh0KSxYOSkpKShuKSkpfSxwLmRvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1xbnQuY2FsbCh0LHRvdCksYz09PW5vdHx8KGM9aW90KHIpKSxkKCkpOnIuc2xpY2UoKX0scC5yYW5nZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz1abnQuY2FsbCh0KSxkKCkpOnMuc2xpY2UoKX0scC5yYW5nZVJvdW5kPWZ1bmN0aW9uKHQpe3JldHVybiBzPVpudC5jYWxsKHQpLGw9ZXR0LGQoKX0scC5jbGFtcD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz10P2lvdChyKTpub3QscCk6YyE9PW5vdH0scC5pbnRlcnBvbGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obD10LGQoKSk6bH0scC51bmtub3duPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPXQscCk6bn0sZnVuY3Rpb24obixvKXtyZXR1cm4gdD1uLGU9byxkKCl9fWZ1bmN0aW9uIGNvdCh0LGUpe3JldHVybiBsb3QoKSh0LGUpfWZ1bmN0aW9uIGRvdCh0LGUsbixvKXt2YXIgaSxhPWs2KHQsZSxuKTtzd2l0Y2goKG89RW50KG51bGw9PW8/IixmIjpvKSkudHlwZSl7Y2FzZSJzIjp2YXIgcj1NYXRoLm1heChNYXRoLmFicyh0KSxNYXRoLmFicyhlKSk7cmV0dXJuIG51bGwhPW8ucHJlY2lzaW9ufHxpc05hTihpPShmdW5jdGlvbiBzKHQsZSl7cmV0dXJuIE1hdGgubWF4KDAsMypNYXRoLm1heCgtOCxNYXRoLm1pbig4LE1hdGguZmxvb3IoU250KGUpLzMpKSktU250KE1hdGguYWJzKHQpKSl9KShhLHIpKXx8KG8ucHJlY2lzaW9uPWkpLEJudChvLHIpO2Nhc2UiIjpjYXNlImUiOmNhc2UiZyI6Y2FzZSJwIjpjYXNlInIiOm51bGwhPW8ucHJlY2lzaW9ufHxpc05hTihpPShmdW5jdGlvbiBsKHQsZSl7cmV0dXJuIHQ9TWF0aC5hYnModCksZT1NYXRoLmFicyhlKS10LE1hdGgubWF4KDAsU250KGUpLVNudCh0KSkrMX0pKGEsTWF0aC5tYXgoTWF0aC5hYnModCksTWF0aC5hYnMoZSkpKSl8fChvLnByZWNpc2lvbj1pLSgiZSI9PT1vLnR5cGUpKTticmVhaztjYXNlImYiOmNhc2UiJSI6bnVsbCE9by5wcmVjaXNpb258fGlzTmFOKGk9KGZ1bmN0aW9uIGModCl7cmV0dXJuIE1hdGgubWF4KDAsLVNudChNYXRoLmFicyh0KSkpfSkoYSkpfHwoby5wcmVjaXNpb249aS0yKigiJSI9PT1vLnR5cGUpKX1yZXR1cm4gTG50KG8pfWZ1bmN0aW9uIHBvdCh0KXt2YXIgZT10LmRvbWFpbjtyZXR1cm4gdC50aWNrcz1mdW5jdGlvbih0KXt2YXIgbj1lKCk7cmV0dXJuIFA2KG5bMF0sbltuLmxlbmd0aC0xXSxudWxsPT10PzEwOnQpfSx0LnRpY2tGb3JtYXQ9ZnVuY3Rpb24odCxuKXt2YXIgbz1lKCk7cmV0dXJuIGRvdChvWzBdLG9bby5sZW5ndGgtMV0sbnVsbD09dD8xMDp0LG4pfSx0Lm5pY2U9ZnVuY3Rpb24obil7bnVsbD09biYmKG49MTApO3ZhciBvLGk9ZSgpLGE9MCxyPWkubGVuZ3RoLTEscz1pW2FdLGw9aVtyXTtyZXR1cm4gbDxzJiYobz1zLHM9bCxsPW8sbz1hLGE9cixyPW8pLChvPXc2KHMsbCxuKSk+MD9vPXc2KHM9TWF0aC5mbG9vcihzL28pKm8sbD1NYXRoLmNlaWwobC9vKSpvLG4pOm88MCYmKG89dzYocz1NYXRoLmNlaWwocypvKS9vLGw9TWF0aC5mbG9vcihsKm8pL28sbikpLG8+MD8oaVthXT1NYXRoLmZsb29yKHMvbykqbyxpW3JdPU1hdGguY2VpbChsL28pKm8sZShpKSk6bzwwJiYoaVthXT1NYXRoLmNlaWwocypvKS9vLGlbcl09TWF0aC5mbG9vcihsKm8pL28sZShpKSksdH0sdH1mdW5jdGlvbiBtb3QoKXt2YXIgdD1jb3Qobm90LG5vdCk7cmV0dXJuIHQuY29weT1mdW5jdGlvbigpe3JldHVybiBzb3QodCxtb3QoKSl9LFdudC5hcHBseSh0LGFyZ3VtZW50cykscG90KHQpfWZ1bmN0aW9uIGZvdCh0LGUpe3ZhciBuLG89MCxpPSh0PXQuc2xpY2UoKSkubGVuZ3RoLTEsYT10W29dLHI9dFtpXTtyZXR1cm4gcjxhJiYobj1vLG89aSxpPW4sbj1hLGE9cixyPW4pLHRbb109ZS5mbG9vcihhKSx0W2ldPWUuY2VpbChyKSx0fWZ1bmN0aW9uIHVvdCh0KXtyZXR1cm4gTWF0aC5sb2codCl9ZnVuY3Rpb24gZ290KHQpe3JldHVybiBNYXRoLmV4cCh0KX1mdW5jdGlvbiBob3QodCl7cmV0dXJuLU1hdGgubG9nKC10KX1mdW5jdGlvbiBib3QodCl7cmV0dXJuLU1hdGguZXhwKC10KX1mdW5jdGlvbiB5b3QodCl7cmV0dXJuIGlzRmluaXRlKHQpPysoIjFlIit0KTp0PDA/MDp0fWZ1bmN0aW9uIF9vdCh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuLXQoLWUpfX1mdW5jdGlvbiBDb3QodCl7dmFyIGUsbixvPXQodW90LGdvdCksaT1vLmRvbWFpbixhPTEwO2Z1bmN0aW9uIHIoKXtyZXR1cm4gZT0oZnVuY3Rpb24gcih0KXtyZXR1cm4gdD09PU1hdGguRT9NYXRoLmxvZzoxMD09PXQmJk1hdGgubG9nMTB8fDI9PT10JiZNYXRoLmxvZzJ8fCh0PU1hdGgubG9nKHQpLGZ1bmN0aW9uKGUpe3JldHVybiBNYXRoLmxvZyhlKS90fSl9KShhKSxuPShmdW5jdGlvbiBzKHQpe3JldHVybiAxMD09PXQ/eW90OnQ9PT1NYXRoLkU/TWF0aC5leHA6ZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGgucG93KHQsZSl9fSkoYSksaSgpWzBdPDA/KGU9X290KGUpLG49X290KG4pLHQoaG90LGJvdCkpOnQodW90LGdvdCksb31yZXR1cm4gby5iYXNlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPSt0LHIoKSk6YX0sby5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGkodCkscigpKTppKCl9LG8udGlja3M9ZnVuY3Rpb24odCl7dmFyIG8scj1pKCkscz1yWzBdLGw9cltyLmxlbmd0aC0xXTsobz1sPHMpJiYobT1zLHM9bCxsPW0pO3ZhciBjLGQscCxtPWUocyksZj1lKGwpLHU9bnVsbD09dD8xMDordCxnPVtdO2lmKCEoYSUxKSYmZi1tPHUpe2lmKG09TWF0aC5yb3VuZChtKS0xLGY9TWF0aC5yb3VuZChmKSsxLHM+MCl7Zm9yKDttPGY7KyttKWZvcihkPTEsYz1uKG0pO2Q8YTsrK2QpaWYoISgocD1jKmQpPHMpKXtpZihwPmwpYnJlYWs7Zy5wdXNoKHApfX1lbHNlIGZvcig7bTxmOysrbSlmb3IoZD1hLTEsYz1uKG0pO2Q+PTE7LS1kKWlmKCEoKHA9YypkKTxzKSl7aWYocD5sKWJyZWFrO2cucHVzaChwKX19ZWxzZSBnPVA2KG0sZixNYXRoLm1pbihmLW0sdSkpLm1hcChuKTtyZXR1cm4gbz9nLnJldmVyc2UoKTpnfSxvLnRpY2tGb3JtYXQ9ZnVuY3Rpb24odCxpKXtpZihudWxsPT1pJiYoaT0xMD09PWE/Ii4wZSI6IiwiKSwiZnVuY3Rpb24iIT10eXBlb2YgaSYmKGk9TG50KGkpKSx0PT09MS8wKXJldHVybiBpO251bGw9PXQmJih0PTEwKTt2YXIgcj1NYXRoLm1heCgxLGEqdC9vLnRpY2tzKCkubGVuZ3RoKTtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIG89dC9uKE1hdGgucm91bmQoZSh0KSkpO3JldHVybiBvKmE8YS0uNSYmKG8qPWEpLG88PXI/aSh0KToiIn19LG8ubmljZT1mdW5jdGlvbigpe3JldHVybiBpKGZvdChpKCkse2Zsb29yOmZ1bmN0aW9uKHQpe3JldHVybiBuKE1hdGguZmxvb3IoZSh0KSkpfSxjZWlsOmZ1bmN0aW9uKHQpe3JldHVybiBuKE1hdGguY2VpbChlKHQpKSl9fSkpfSxvfWZ1bmN0aW9uIE1vdCgpe3ZhciB0PUNvdChsb3QoKSkuZG9tYWluKFsxLDEwXSk7cmV0dXJuIHQuY29weT1mdW5jdGlvbigpe3JldHVybiBzb3QodCxNb3QoKSkuYmFzZSh0LmJhc2UoKSl9LFdudC5hcHBseSh0LGFyZ3VtZW50cyksdH12YXIgdm90PW5ldyBEYXRlLHhvdD1uZXcgRGF0ZTtmdW5jdGlvbiBPb3QodCxlLG4sbyl7ZnVuY3Rpb24gaShlKXtyZXR1cm4gdChlPTA9PT1hcmd1bWVudHMubGVuZ3RoP25ldyBEYXRlOm5ldyBEYXRlKCtlKSksZX1yZXR1cm4gaS5mbG9vcj1mdW5jdGlvbihlKXtyZXR1cm4gdChlPW5ldyBEYXRlKCtlKSksZX0saS5jZWlsPWZ1bmN0aW9uKG4pe3JldHVybiB0KG49bmV3IERhdGUobi0xKSksZShuLDEpLHQobiksbn0saS5yb3VuZD1mdW5jdGlvbih0KXt2YXIgZT1pKHQpLG49aS5jZWlsKHQpO3JldHVybiB0LWU8bi10P2U6bn0saS5vZmZzZXQ9ZnVuY3Rpb24odCxuKXtyZXR1cm4gZSh0PW5ldyBEYXRlKCt0KSxudWxsPT1uPzE6TWF0aC5mbG9vcihuKSksdH0saS5yYW5nZT1mdW5jdGlvbihuLG8sYSl7dmFyIHIscz1bXTtpZihuPWkuY2VpbChuKSxhPW51bGw9PWE/MTpNYXRoLmZsb29yKGEpLCEobjxvJiZhPjApKXJldHVybiBzO2Rve3MucHVzaChyPW5ldyBEYXRlKCtuKSksZShuLGEpLHQobil9d2hpbGUocjxuJiZuPG8pO3JldHVybiBzfSxpLmZpbHRlcj1mdW5jdGlvbihuKXtyZXR1cm4gT290KChmdW5jdGlvbihlKXtpZihlPj1lKWZvcig7dChlKSwhbihlKTspZS5zZXRUaW1lKGUtMSl9KSwoZnVuY3Rpb24odCxvKXtpZih0Pj10KWlmKG88MClmb3IoOysrbzw9MDspZm9yKDtlKHQsLTEpLCFuKHQpOyk7ZWxzZSBmb3IoOy0tbz49MDspZm9yKDtlKHQsMSksIW4odCk7KTt9KSl9LG4mJihpLmNvdW50PWZ1bmN0aW9uKGUsbyl7cmV0dXJuIHZvdC5zZXRUaW1lKCtlKSx4b3Quc2V0VGltZSgrbyksdCh2b3QpLHQoeG90KSxNYXRoLmZsb29yKG4odm90LHhvdCkpfSxpLmV2ZXJ5PWZ1bmN0aW9uKHQpe3JldHVybiB0PU1hdGguZmxvb3IodCksaXNGaW5pdGUodCkmJnQ+MD90PjE/aS5maWx0ZXIobz9mdW5jdGlvbihlKXtyZXR1cm4gbyhlKSV0PT0wfTpmdW5jdGlvbihlKXtyZXR1cm4gaS5jb3VudCgwLGUpJXQ9PTB9KTppOm51bGx9KSxpfXZhciBQb3Q9T290KChmdW5jdGlvbigpe30pLChmdW5jdGlvbih0LGUpe3Quc2V0VGltZSgrdCtlKX0pLChmdW5jdGlvbih0LGUpe3JldHVybiBlLXR9KSk7UG90LmV2ZXJ5PWZ1bmN0aW9uKHQpe3JldHVybiB0PU1hdGguZmxvb3IodCksaXNGaW5pdGUodCkmJnQ+MD90PjE/T290KChmdW5jdGlvbihlKXtlLnNldFRpbWUoTWF0aC5mbG9vcihlL3QpKnQpfSksKGZ1bmN0aW9uKGUsbil7ZS5zZXRUaW1lKCtlK24qdCl9KSwoZnVuY3Rpb24oZSxuKXtyZXR1cm4obi1lKS90fSkpOlBvdDpudWxsfTt2YXIgd290PVBvdCxrb3Q9MWUzLFNvdD02ZTQsRG90PTM2ZTUsUm90PTg2NGU1LEVvdD02MDQ4ZTUsQW90PU9vdCgoZnVuY3Rpb24odCl7dC5zZXRUaW1lKHQtdC5nZXRNaWxsaXNlY29uZHMoKSl9KSwoZnVuY3Rpb24odCxlKXt0LnNldFRpbWUoK3QrZSprb3QpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdCkva290fSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFVUQ1NlY29uZHMoKX0pKSxUb3Q9T290KChmdW5jdGlvbih0KXt0LnNldFRpbWUodC10LmdldE1pbGxpc2Vjb25kcygpLXQuZ2V0U2Vjb25kcygpKmtvdCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldFRpbWUoK3QrZSpTb3QpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdCkvU290fSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldE1pbnV0ZXMoKX0pKSxOb3Q9T290KChmdW5jdGlvbih0KXt0LnNldFRpbWUodC10LmdldE1pbGxpc2Vjb25kcygpLXQuZ2V0U2Vjb25kcygpKmtvdC10LmdldE1pbnV0ZXMoKSpTb3QpfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRUaW1lKCt0K2UqRG90KX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQpL0RvdH0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRIb3VycygpfSkpLHpvdD1Pb3QoKGZ1bmN0aW9uKHQpe3Quc2V0SG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldERhdGUodC5nZXREYXRlKCkrZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4oZS10LShlLmdldFRpbWV6b25lT2Zmc2V0KCktdC5nZXRUaW1lem9uZU9mZnNldCgpKSpTb3QpL1JvdH0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXREYXRlKCktMX0pKTtmdW5jdGlvbiBJb3QodCl7cmV0dXJuIE9vdCgoZnVuY3Rpb24oZSl7ZS5zZXREYXRlKGUuZ2V0RGF0ZSgpLShlLmdldERheSgpKzctdCklNyksZS5zZXRIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0RGF0ZSh0LmdldERhdGUoKSs3KmUpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdC0oZS5nZXRUaW1lem9uZU9mZnNldCgpLXQuZ2V0VGltZXpvbmVPZmZzZXQoKSkqU290KS9Fb3R9KSl9dmFyIEhvdD1Jb3QoMCksRm90PUlvdCgxKTtJb3QoMiksSW90KDMpO3ZhciBMb3Q9SW90KDQpO0lvdCg1KSxJb3QoNik7dmFyIEJvdD1Pb3QoKGZ1bmN0aW9uKHQpe3Quc2V0RGF0ZSgxKSx0LnNldEhvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRNb250aCh0LmdldE1vbnRoKCkrZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5nZXRNb250aCgpLXQuZ2V0TW9udGgoKSsxMiooZS5nZXRGdWxsWWVhcigpLXQuZ2V0RnVsbFllYXIoKSl9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0TW9udGgoKX0pKSxWb3Q9T290KChmdW5jdGlvbih0KXt0LnNldE1vbnRoKDAsMSksdC5zZXRIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0RnVsbFllYXIodC5nZXRGdWxsWWVhcigpK2UpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUuZ2V0RnVsbFllYXIoKS10LmdldEZ1bGxZZWFyKCl9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0RnVsbFllYXIoKX0pKTtWb3QuZXZlcnk9ZnVuY3Rpb24odCl7cmV0dXJuIGlzRmluaXRlKHQ9TWF0aC5mbG9vcih0KSkmJnQ+MD9Pb3QoKGZ1bmN0aW9uKGUpe2Uuc2V0RnVsbFllYXIoTWF0aC5mbG9vcihlLmdldEZ1bGxZZWFyKCkvdCkqdCksZS5zZXRNb250aCgwLDEpLGUuc2V0SG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24oZSxuKXtlLnNldEZ1bGxZZWFyKGUuZ2V0RnVsbFllYXIoKStuKnQpfSkpOm51bGx9O3ZhciBqb3Q9Vm90LFVvdD1Pb3QoKGZ1bmN0aW9uKHQpe3Quc2V0VVRDSG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldFVUQ0RhdGUodC5nZXRVVENEYXRlKCkrZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4oZS10KS9Sb3R9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0VVRDRGF0ZSgpLTF9KSk7ZnVuY3Rpb24gV290KHQpe3JldHVybiBPb3QoKGZ1bmN0aW9uKGUpe2Uuc2V0VVRDRGF0ZShlLmdldFVUQ0RhdGUoKS0oZS5nZXRVVENEYXkoKSs3LXQpJTcpLGUuc2V0VVRDSG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldFVUQ0RhdGUodC5nZXRVVENEYXRlKCkrNyplKX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQpL0VvdH0pKX12YXIgR290PVdvdCgwKSxZb3Q9V290KDEpO1dvdCgyKSxXb3QoMyk7dmFyIHFvdD1Xb3QoNCk7V290KDUpLFdvdCg2KTt2YXIgWm90PU9vdCgoZnVuY3Rpb24odCl7dC5zZXRVVENNb250aCgwLDEpLHQuc2V0VVRDSG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldFVUQ0Z1bGxZZWFyKHQuZ2V0VVRDRnVsbFllYXIoKStlKX0pLChmdW5jdGlvbih0LGUpe3JldHVybiBlLmdldFVUQ0Z1bGxZZWFyKCktdC5nZXRVVENGdWxsWWVhcigpfSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFVUQ0Z1bGxZZWFyKCl9KSk7Wm90LmV2ZXJ5PWZ1bmN0aW9uKHQpe3JldHVybiBpc0Zpbml0ZSh0PU1hdGguZmxvb3IodCkpJiZ0PjA/T290KChmdW5jdGlvbihlKXtlLnNldFVUQ0Z1bGxZZWFyKE1hdGguZmxvb3IoZS5nZXRVVENGdWxsWWVhcigpL3QpKnQpLGUuc2V0VVRDTW9udGgoMCwxKSxlLnNldFVUQ0hvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKGUsbil7ZS5zZXRVVENGdWxsWWVhcihlLmdldFVUQ0Z1bGxZZWFyKCkrbip0KX0pKTpudWxsfTt2YXIgWG90PVpvdDtmdW5jdGlvbiBLb3QodCl7aWYoMDw9dC55JiZ0Lnk8MTAwKXt2YXIgZT1uZXcgRGF0ZSgtMSx0Lm0sdC5kLHQuSCx0Lk0sdC5TLHQuTCk7cmV0dXJuIGUuc2V0RnVsbFllYXIodC55KSxlfXJldHVybiBuZXcgRGF0ZSh0LnksdC5tLHQuZCx0LkgsdC5NLHQuUyx0LkwpfWZ1bmN0aW9uIEpvdCh0KXtpZigwPD10LnkmJnQueTwxMDApe3ZhciBlPW5ldyBEYXRlKERhdGUuVVRDKC0xLHQubSx0LmQsdC5ILHQuTSx0LlMsdC5MKSk7cmV0dXJuIGUuc2V0VVRDRnVsbFllYXIodC55KSxlfXJldHVybiBuZXcgRGF0ZShEYXRlLlVUQyh0LnksdC5tLHQuZCx0LkgsdC5NLHQuUyx0LkwpKX1mdW5jdGlvbiBRb3QodCxlLG4pe3JldHVybnt5OnQsbTplLGQ6bixIOjAsTTowLFM6MCxMOjB9fXZhciAkb3QsdGl0LGVpdD17Ii0iOiIiLF86IiAiLDA6IjAifSxuaXQ9L15ccypcZCsvLG9pdD0vXiUvLGlpdD0vW1xcXiQqKz98W1xdKCkue31dL2c7ZnVuY3Rpb24gYWl0KHQsZSxuKXt2YXIgbz10PDA/Ii0iOiIiLGk9KG8/LXQ6dCkrIiIsYT1pLmxlbmd0aDtyZXR1cm4gbysoYTxuP25ldyBBcnJheShuLWErMSkuam9pbihlKStpOmkpfWZ1bmN0aW9uIHJpdCh0KXtyZXR1cm4gdC5yZXBsYWNlKGlpdCwiXFwkJiIpfWZ1bmN0aW9uIHNpdCh0KXtyZXR1cm4gbmV3IFJlZ0V4cCgiXig/OiIrdC5tYXAocml0KS5qb2luKCJ8IikrIikiLCJpIil9ZnVuY3Rpb24gbGl0KHQpe2Zvcih2YXIgZT17fSxuPS0xLG89dC5sZW5ndGg7KytuPG87KWVbdFtuXS50b0xvd2VyQ2FzZSgpXT1uO3JldHVybiBlfWZ1bmN0aW9uIGNpdCh0LGUsbil7dmFyIG89bml0LmV4ZWMoZS5zbGljZShuLG4rMSkpO3JldHVybiBvPyh0Lnc9K29bMF0sbitvWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gZGl0KHQsZSxuKXt2YXIgbz1uaXQuZXhlYyhlLnNsaWNlKG4sbisxKSk7cmV0dXJuIG8/KHQudT0rb1swXSxuK29bMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBwaXQodCxlLG4pe3ZhciBvPW5pdC5leGVjKGUuc2xpY2UobixuKzIpKTtyZXR1cm4gbz8odC5VPStvWzBdLG4rb1swXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIG1pdCh0LGUsbil7dmFyIG89bml0LmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiBvPyh0LlY9K29bMF0sbitvWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gZml0KHQsZSxuKXt2YXIgbz1uaXQuZXhlYyhlLnNsaWNlKG4sbisyKSk7cmV0dXJuIG8/KHQuVz0rb1swXSxuK29bMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiB1aXQodCxlLG4pe3ZhciBvPW5pdC5leGVjKGUuc2xpY2UobixuKzQpKTtyZXR1cm4gbz8odC55PStvWzBdLG4rb1swXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIGdpdCh0LGUsbil7dmFyIG89bml0LmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiBvPyh0Lnk9K29bMF0rKCtvWzBdPjY4PzE5MDA6MmUzKSxuK29bMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBoaXQodCxlLG4pe3ZhciBvPS9eKFopfChbKy1dXGRcZCkoPzo6PyhcZFxkKSk/Ly5leGVjKGUuc2xpY2UobixuKzYpKTtyZXR1cm4gbz8odC5aPW9bMV0/MDotKG9bMl0rKG9bM118fCIwMCIpKSxuK29bMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBiaXQodCxlLG4pe3ZhciBvPW5pdC5leGVjKGUuc2xpY2UobixuKzEpKTtyZXR1cm4gbz8odC5xPTMqb1swXS0zLG4rb1swXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIHlpdCh0LGUsbil7dmFyIG89bml0LmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiBvPyh0Lm09b1swXS0xLG4rb1swXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIF9pdCh0LGUsbil7dmFyIG89bml0LmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiBvPyh0LmQ9K29bMF0sbitvWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gQ2l0KHQsZSxuKXt2YXIgbz1uaXQuZXhlYyhlLnNsaWNlKG4sbiszKSk7cmV0dXJuIG8/KHQubT0wLHQuZD0rb1swXSxuK29bMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBNaXQodCxlLG4pe3ZhciBvPW5pdC5leGVjKGUuc2xpY2UobixuKzIpKTtyZXR1cm4gbz8odC5IPStvWzBdLG4rb1swXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIHZpdCh0LGUsbil7dmFyIG89bml0LmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiBvPyh0Lk09K29bMF0sbitvWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24geGl0KHQsZSxuKXt2YXIgbz1uaXQuZXhlYyhlLnNsaWNlKG4sbisyKSk7cmV0dXJuIG8/KHQuUz0rb1swXSxuK29bMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBPaXQodCxlLG4pe3ZhciBvPW5pdC5leGVjKGUuc2xpY2UobixuKzMpKTtyZXR1cm4gbz8odC5MPStvWzBdLG4rb1swXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIFBpdCh0LGUsbil7dmFyIG89bml0LmV4ZWMoZS5zbGljZShuLG4rNikpO3JldHVybiBvPyh0Lkw9TWF0aC5mbG9vcihvWzBdLzFlMyksbitvWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gd2l0KHQsZSxuKXt2YXIgbz1vaXQuZXhlYyhlLnNsaWNlKG4sbisxKSk7cmV0dXJuIG8/bitvWzBdLmxlbmd0aDotMX1mdW5jdGlvbiBraXQodCxlLG4pe3ZhciBvPW5pdC5leGVjKGUuc2xpY2UobikpO3JldHVybiBvPyh0LlE9K29bMF0sbitvWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gU2l0KHQsZSxuKXt2YXIgbz1uaXQuZXhlYyhlLnNsaWNlKG4pKTtyZXR1cm4gbz8odC5zPStvWzBdLG4rb1swXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIERpdCh0LGUpe3JldHVybiBhaXQodC5nZXREYXRlKCksZSwyKX1mdW5jdGlvbiBSaXQodCxlKXtyZXR1cm4gYWl0KHQuZ2V0SG91cnMoKSxlLDIpfWZ1bmN0aW9uIEVpdCh0LGUpe3JldHVybiBhaXQodC5nZXRIb3VycygpJTEyfHwxMixlLDIpfWZ1bmN0aW9uIEFpdCh0LGUpe3JldHVybiBhaXQoMSt6b3QuY291bnQoam90KHQpLHQpLGUsMyl9ZnVuY3Rpb24gVGl0KHQsZSl7cmV0dXJuIGFpdCh0LmdldE1pbGxpc2Vjb25kcygpLGUsMyl9ZnVuY3Rpb24gTml0KHQsZSl7cmV0dXJuIFRpdCh0LGUpKyIwMDAifWZ1bmN0aW9uIHppdCh0LGUpe3JldHVybiBhaXQodC5nZXRNb250aCgpKzEsZSwyKX1mdW5jdGlvbiBJaXQodCxlKXtyZXR1cm4gYWl0KHQuZ2V0TWludXRlcygpLGUsMil9ZnVuY3Rpb24gSGl0KHQsZSl7cmV0dXJuIGFpdCh0LmdldFNlY29uZHMoKSxlLDIpfWZ1bmN0aW9uIEZpdCh0KXt2YXIgZT10LmdldERheSgpO3JldHVybiAwPT09ZT83OmV9ZnVuY3Rpb24gTGl0KHQsZSl7cmV0dXJuIGFpdChIb3QuY291bnQoam90KHQpLTEsdCksZSwyKX1mdW5jdGlvbiBCaXQodCl7dmFyIGU9dC5nZXREYXkoKTtyZXR1cm4gZT49NHx8MD09PWU/TG90KHQpOkxvdC5jZWlsKHQpfWZ1bmN0aW9uIFZpdCh0LGUpe3JldHVybiB0PUJpdCh0KSxhaXQoTG90LmNvdW50KGpvdCh0KSx0KSsoND09PWpvdCh0KS5nZXREYXkoKSksZSwyKX1mdW5jdGlvbiBqaXQodCl7cmV0dXJuIHQuZ2V0RGF5KCl9ZnVuY3Rpb24gVWl0KHQsZSl7cmV0dXJuIGFpdChGb3QuY291bnQoam90KHQpLTEsdCksZSwyKX1mdW5jdGlvbiBXaXQodCxlKXtyZXR1cm4gYWl0KHQuZ2V0RnVsbFllYXIoKSUxMDAsZSwyKX1mdW5jdGlvbiBHaXQodCxlKXtyZXR1cm4gYWl0KCh0PUJpdCh0KSkuZ2V0RnVsbFllYXIoKSUxMDAsZSwyKX1mdW5jdGlvbiBZaXQodCxlKXtyZXR1cm4gYWl0KHQuZ2V0RnVsbFllYXIoKSUxZTQsZSw0KX1mdW5jdGlvbiBxaXQodCxlKXt2YXIgbj10LmdldERheSgpO3JldHVybiBhaXQoKHQ9bj49NHx8MD09PW4/TG90KHQpOkxvdC5jZWlsKHQpKS5nZXRGdWxsWWVhcigpJTFlNCxlLDQpfWZ1bmN0aW9uIFppdCh0KXt2YXIgZT10LmdldFRpbWV6b25lT2Zmc2V0KCk7cmV0dXJuKGU+MD8iLSI6KGUqPS0xLCIrIikpK2FpdChlLzYwfDAsIjAiLDIpK2FpdChlJTYwLCIwIiwyKX1mdW5jdGlvbiBYaXQodCxlKXtyZXR1cm4gYWl0KHQuZ2V0VVRDRGF0ZSgpLGUsMil9ZnVuY3Rpb24gS2l0KHQsZSl7cmV0dXJuIGFpdCh0LmdldFVUQ0hvdXJzKCksZSwyKX1mdW5jdGlvbiBKaXQodCxlKXtyZXR1cm4gYWl0KHQuZ2V0VVRDSG91cnMoKSUxMnx8MTIsZSwyKX1mdW5jdGlvbiBRaXQodCxlKXtyZXR1cm4gYWl0KDErVW90LmNvdW50KFhvdCh0KSx0KSxlLDMpfWZ1bmN0aW9uICRpdCh0LGUpe3JldHVybiBhaXQodC5nZXRVVENNaWxsaXNlY29uZHMoKSxlLDMpfWZ1bmN0aW9uIHRhdCh0LGUpe3JldHVybiAkaXQodCxlKSsiMDAwIn1mdW5jdGlvbiBlYXQodCxlKXtyZXR1cm4gYWl0KHQuZ2V0VVRDTW9udGgoKSsxLGUsMil9ZnVuY3Rpb24gbmF0KHQsZSl7cmV0dXJuIGFpdCh0LmdldFVUQ01pbnV0ZXMoKSxlLDIpfWZ1bmN0aW9uIG9hdCh0LGUpe3JldHVybiBhaXQodC5nZXRVVENTZWNvbmRzKCksZSwyKX1mdW5jdGlvbiBpYXQodCl7dmFyIGU9dC5nZXRVVENEYXkoKTtyZXR1cm4gMD09PWU/NzplfWZ1bmN0aW9uIGFhdCh0LGUpe3JldHVybiBhaXQoR290LmNvdW50KFhvdCh0KS0xLHQpLGUsMil9ZnVuY3Rpb24gcmF0KHQpe3ZhciBlPXQuZ2V0VVRDRGF5KCk7cmV0dXJuIGU+PTR8fDA9PT1lP3FvdCh0KTpxb3QuY2VpbCh0KX1mdW5jdGlvbiBzYXQodCxlKXtyZXR1cm4gdD1yYXQodCksYWl0KHFvdC5jb3VudChYb3QodCksdCkrKDQ9PT1Yb3QodCkuZ2V0VVRDRGF5KCkpLGUsMil9ZnVuY3Rpb24gbGF0KHQpe3JldHVybiB0LmdldFVUQ0RheSgpfWZ1bmN0aW9uIGNhdCh0LGUpe3JldHVybiBhaXQoWW90LmNvdW50KFhvdCh0KS0xLHQpLGUsMil9ZnVuY3Rpb24gZGF0KHQsZSl7cmV0dXJuIGFpdCh0LmdldFVUQ0Z1bGxZZWFyKCklMTAwLGUsMil9ZnVuY3Rpb24gcGF0KHQsZSl7cmV0dXJuIGFpdCgodD1yYXQodCkpLmdldFVUQ0Z1bGxZZWFyKCklMTAwLGUsMil9ZnVuY3Rpb24gbWF0KHQsZSl7cmV0dXJuIGFpdCh0LmdldFVUQ0Z1bGxZZWFyKCklMWU0LGUsNCl9ZnVuY3Rpb24gZmF0KHQsZSl7dmFyIG49dC5nZXRVVENEYXkoKTtyZXR1cm4gYWl0KCh0PW4+PTR8fDA9PT1uP3FvdCh0KTpxb3QuY2VpbCh0KSkuZ2V0VVRDRnVsbFllYXIoKSUxZTQsZSw0KX1mdW5jdGlvbiB1YXQoKXtyZXR1cm4iKzAwMDAifWZ1bmN0aW9uIGdhdCgpe3JldHVybiIlIn1mdW5jdGlvbiBoYXQodCl7cmV0dXJuK3R9ZnVuY3Rpb24gYmF0KHQpe3JldHVybiBNYXRoLmZsb29yKCt0LzFlMyl9IShmdW5jdGlvbiB5YXQodCl7cmV0dXJuICRvdD0oZnVuY3Rpb24gZSh0KXt2YXIgZT10LmRhdGVUaW1lLG49dC5kYXRlLG89dC50aW1lLGk9dC5wZXJpb2RzLGE9dC5kYXlzLHI9dC5zaG9ydERheXMscz10Lm1vbnRocyxsPXQuc2hvcnRNb250aHMsYz1zaXQoaSksZD1saXQoaSkscD1zaXQoYSksbT1saXQoYSksZj1zaXQociksdT1saXQociksZz1zaXQocyksaD1saXQocyksYj1zaXQobCkseT1saXQobCksXz17YTpmdW5jdGlvbiBDKHQpe3JldHVybiByW3QuZ2V0RGF5KCldfSxBOmZ1bmN0aW9uIE0odCl7cmV0dXJuIGFbdC5nZXREYXkoKV19LGI6ZnVuY3Rpb24gdih0KXtyZXR1cm4gbFt0LmdldE1vbnRoKCldfSxCOmZ1bmN0aW9uIHgodCl7cmV0dXJuIHNbdC5nZXRNb250aCgpXX0sYzpudWxsLGQ6RGl0LGU6RGl0LGY6Tml0LGc6R2l0LEc6cWl0LEg6Uml0LEk6RWl0LGo6QWl0LEw6VGl0LG06eml0LE06SWl0LHA6ZnVuY3Rpb24gTyh0KXtyZXR1cm4gaVsrKHQuZ2V0SG91cnMoKT49MTIpXX0scTpmdW5jdGlvbiBQKHQpe3JldHVybiAxK35+KHQuZ2V0TW9udGgoKS8zKX0sUTpoYXQsczpiYXQsUzpIaXQsdTpGaXQsVTpMaXQsVjpWaXQsdzpqaXQsVzpVaXQseDpudWxsLFg6bnVsbCx5OldpdCxZOllpdCxaOlppdCwiJSI6Z2F0fSx3PXthOmZ1bmN0aW9uIGsodCl7cmV0dXJuIHJbdC5nZXRVVENEYXkoKV19LEE6ZnVuY3Rpb24gUyh0KXtyZXR1cm4gYVt0LmdldFVUQ0RheSgpXX0sYjpmdW5jdGlvbiBEKHQpe3JldHVybiBsW3QuZ2V0VVRDTW9udGgoKV19LEI6ZnVuY3Rpb24gUih0KXtyZXR1cm4gc1t0LmdldFVUQ01vbnRoKCldfSxjOm51bGwsZDpYaXQsZTpYaXQsZjp0YXQsZzpwYXQsRzpmYXQsSDpLaXQsSTpKaXQsajpRaXQsTDokaXQsbTplYXQsTTpuYXQscDpmdW5jdGlvbiBFKHQpe3JldHVybiBpWysodC5nZXRVVENIb3VycygpPj0xMildfSxxOmZ1bmN0aW9uIEEodCl7cmV0dXJuIDErfn4odC5nZXRVVENNb250aCgpLzMpfSxROmhhdCxzOmJhdCxTOm9hdCx1OmlhdCxVOmFhdCxWOnNhdCx3OmxhdCxXOmNhdCx4Om51bGwsWDpudWxsLHk6ZGF0LFk6bWF0LFo6dWF0LCIlIjpnYXR9LFQ9e2E6ZnVuY3Rpb24gTih0LGUsbil7dmFyIG89Zi5leGVjKGUuc2xpY2UobikpO3JldHVybiBvPyh0Lnc9dVtvWzBdLnRvTG93ZXJDYXNlKCldLG4rb1swXS5sZW5ndGgpOi0xfSxBOmZ1bmN0aW9uIHoodCxlLG4pe3ZhciBvPXAuZXhlYyhlLnNsaWNlKG4pKTtyZXR1cm4gbz8odC53PW1bb1swXS50b0xvd2VyQ2FzZSgpXSxuK29bMF0ubGVuZ3RoKTotMX0sYjpmdW5jdGlvbiBJKHQsZSxuKXt2YXIgbz1iLmV4ZWMoZS5zbGljZShuKSk7cmV0dXJuIG8/KHQubT15W29bMF0udG9Mb3dlckNhc2UoKV0sbitvWzBdLmxlbmd0aCk6LTF9LEI6ZnVuY3Rpb24gSCh0LGUsbil7dmFyIG89Zy5leGVjKGUuc2xpY2UobikpO3JldHVybiBvPyh0Lm09aFtvWzBdLnRvTG93ZXJDYXNlKCldLG4rb1swXS5sZW5ndGgpOi0xfSxjOmZ1bmN0aW9uIEYodCxuLG8pe3JldHVybiBXKHQsZSxuLG8pfSxkOl9pdCxlOl9pdCxmOlBpdCxnOmdpdCxHOnVpdCxIOk1pdCxJOk1pdCxqOkNpdCxMOk9pdCxtOnlpdCxNOnZpdCxwOmZ1bmN0aW9uIEwodCxlLG4pe3ZhciBvPWMuZXhlYyhlLnNsaWNlKG4pKTtyZXR1cm4gbz8odC5wPWRbb1swXS50b0xvd2VyQ2FzZSgpXSxuK29bMF0ubGVuZ3RoKTotMX0scTpiaXQsUTpraXQsczpTaXQsUzp4aXQsdTpkaXQsVTpwaXQsVjptaXQsdzpjaXQsVzpmaXQseDpmdW5jdGlvbiBCKHQsZSxvKXtyZXR1cm4gVyh0LG4sZSxvKX0sWDpmdW5jdGlvbiBWKHQsZSxuKXtyZXR1cm4gVyh0LG8sZSxuKX0seTpnaXQsWTp1aXQsWjpoaXQsIiUiOndpdH07ZnVuY3Rpb24gaih0LGUpe3JldHVybiBmdW5jdGlvbihuKXt2YXIgbyxpLGEscj1bXSxzPS0xLGw9MCxjPXQubGVuZ3RoO2ZvcihuIGluc3RhbmNlb2YgRGF0ZXx8KG49bmV3IERhdGUoK24pKTsrK3M8YzspMzc9PT10LmNoYXJDb2RlQXQocykmJihyLnB1c2godC5zbGljZShsLHMpKSxudWxsIT0oaT1laXRbbz10LmNoYXJBdCgrK3MpXSk/bz10LmNoYXJBdCgrK3MpOmk9ImUiPT09bz8iICI6IjAiLChhPWVbb10pJiYobz1hKG4saSkpLHIucHVzaChvKSxsPXMrMSk7cmV0dXJuIHIucHVzaCh0LnNsaWNlKGwscykpLHIuam9pbigiIil9fWZ1bmN0aW9uIFUodCxlKXtyZXR1cm4gZnVuY3Rpb24obil7dmFyIG8saSxhPVFvdCgxOTAwLHZvaWQgMCwxKTtpZihXKGEsdCxuKz0iIiwwKSE9bi5sZW5ndGgpcmV0dXJuIG51bGw7aWYoIlEiaW4gYSlyZXR1cm4gbmV3IERhdGUoYS5RKTtpZigicyJpbiBhKXJldHVybiBuZXcgRGF0ZSgxZTMqYS5zKygiTCJpbiBhP2EuTDowKSk7aWYoZSYmISgiWiJpbiBhKSYmKGEuWj0wKSwicCJpbiBhJiYoYS5IPWEuSCUxMisxMiphLnApLHZvaWQgMD09PWEubSYmKGEubT0icSJpbiBhP2EucTowKSwiViJpbiBhKXtpZihhLlY8MXx8YS5WPjUzKXJldHVybiBudWxsOyJ3ImluIGF8fChhLnc9MSksIloiaW4gYT8oaT0obz1Kb3QoUW90KGEueSwwLDEpKSkuZ2V0VVRDRGF5KCksbz1pPjR8fDA9PT1pP1lvdC5jZWlsKG8pOllvdChvKSxvPVVvdC5vZmZzZXQobyw3KihhLlYtMSkpLGEueT1vLmdldFVUQ0Z1bGxZZWFyKCksYS5tPW8uZ2V0VVRDTW9udGgoKSxhLmQ9by5nZXRVVENEYXRlKCkrKGEudys2KSU3KTooaT0obz1Lb3QoUW90KGEueSwwLDEpKSkuZ2V0RGF5KCksbz1pPjR8fDA9PT1pP0ZvdC5jZWlsKG8pOkZvdChvKSxvPXpvdC5vZmZzZXQobyw3KihhLlYtMSkpLGEueT1vLmdldEZ1bGxZZWFyKCksYS5tPW8uZ2V0TW9udGgoKSxhLmQ9by5nZXREYXRlKCkrKGEudys2KSU3KX1lbHNlKCJXImluIGF8fCJVImluIGEpJiYoInciaW4gYXx8KGEudz0idSJpbiBhP2EudSU3OiJXImluIGE/MTowKSxpPSJaImluIGE/Sm90KFFvdChhLnksMCwxKSkuZ2V0VVRDRGF5KCk6S290KFFvdChhLnksMCwxKSkuZ2V0RGF5KCksYS5tPTAsYS5kPSJXImluIGE/KGEudys2KSU3KzcqYS5XLShpKzUpJTc6YS53KzcqYS5VLShpKzYpJTcpO3JldHVybiJaImluIGE/KGEuSCs9YS5aLzEwMHwwLGEuTSs9YS5aJTEwMCxKb3QoYSkpOktvdChhKX19ZnVuY3Rpb24gVyh0LGUsbixvKXtmb3IodmFyIGksYSxyPTAscz1lLmxlbmd0aCxsPW4ubGVuZ3RoO3I8czspe2lmKG8+PWwpcmV0dXJuLTE7aWYoMzc9PT0oaT1lLmNoYXJDb2RlQXQocisrKSkpe2lmKGk9ZS5jaGFyQXQocisrKSwhKGE9VFtpIGluIGVpdD9lLmNoYXJBdChyKyspOmldKXx8KG89YSh0LG4sbykpPDApcmV0dXJuLTF9ZWxzZSBpZihpIT1uLmNoYXJDb2RlQXQobysrKSlyZXR1cm4tMX1yZXR1cm4gb31yZXR1cm4gXy54PWoobixfKSxfLlg9aihvLF8pLF8uYz1qKGUsXyksdy54PWoobix3KSx3Llg9aihvLHcpLHcuYz1qKGUsdykse2Zvcm1hdDpmdW5jdGlvbih0KXt2YXIgZT1qKHQrPSIiLF8pO3JldHVybiBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHR9LGV9LHBhcnNlOmZ1bmN0aW9uKHQpe3ZhciBlPVUodCs9IiIsITEpO3JldHVybiBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHR9LGV9LHV0Y0Zvcm1hdDpmdW5jdGlvbih0KXt2YXIgZT1qKHQrPSIiLHcpO3JldHVybiBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHR9LGV9LHV0Y1BhcnNlOmZ1bmN0aW9uKHQpe3ZhciBlPVUodCs9IiIsITApO3JldHVybiBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHR9LGV9fX0pKHQpLHRpdD0kb3QuZm9ybWF0LCRvdH0pKHtkYXRlVGltZToiJXgsICVYIixkYXRlOiIlLW0vJS1kLyVZIix0aW1lOiIlLUk6JU06JVMgJXAiLHBlcmlvZHM6WyJBTSIsIlBNIl0sZGF5czpbIlN1bmRheSIsIk1vbmRheSIsIlR1ZXNkYXkiLCJXZWRuZXNkYXkiLCJUaHVyc2RheSIsIkZyaWRheSIsIlNhdHVyZGF5Il0sc2hvcnREYXlzOlsiU3VuIiwiTW9uIiwiVHVlIiwiV2VkIiwiVGh1IiwiRnJpIiwiU2F0Il0sbW9udGhzOlsiSmFudWFyeSIsIkZlYnJ1YXJ5IiwiTWFyY2giLCJBcHJpbCIsIk1heSIsIkp1bmUiLCJKdWx5IiwiQXVndXN0IiwiU2VwdGVtYmVyIiwiT2N0b2JlciIsIk5vdmVtYmVyIiwiRGVjZW1iZXIiXSxzaG9ydE1vbnRoczpbIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1heSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9jdCIsIk5vdiIsIkRlYyJdfSk7dmFyIF9hdD0xZTMsQ2F0PTZlNCxNYXQ9MzZlNSx2YXQ9ODY0ZTUseGF0PTI1OTJlNixPYXQ9MzE1MzZlNjtmdW5jdGlvbiBQYXQodCl7cmV0dXJuIG5ldyBEYXRlKHQpfWZ1bmN0aW9uIHdhdCh0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIERhdGU/K3Q6K25ldyBEYXRlKCt0KX1mdW5jdGlvbiBrYXQodCxlLG4sbyxpLGEscixzLGwpe3ZhciBjPWNvdChub3Qsbm90KSxkPWMuaW52ZXJ0LHA9Yy5kb21haW4sbT1sKCIuJUwiKSxmPWwoIjolUyIpLHU9bCgiJUk6JU0iKSxnPWwoIiVJICVwIiksaD1sKCIlYSAlZCIpLGI9bCgiJWIgJWQiKSx5PWwoIiVCIiksXz1sKCIlWSIpLEM9W1tyLDEsX2F0XSxbciw1LDVlM10sW3IsMTUsMTVlM10sW3IsMzAsM2U0XSxbYSwxLENhdF0sW2EsNSwzZTVdLFthLDE1LDllNV0sW2EsMzAsMThlNV0sW2ksMSxNYXRdLFtpLDMsMTA4ZTVdLFtpLDYsMjE2ZTVdLFtpLDEyLDQzMmU1XSxbbywxLHZhdF0sW28sMiwxNzI4ZTVdLFtuLDEsNjA0OGU1XSxbZSwxLHhhdF0sW2UsMyw3Nzc2ZTZdLFt0LDEsT2F0XV07ZnVuY3Rpb24gTShzKXtyZXR1cm4ocihzKTxzP206YShzKTxzP2Y6aShzKTxzP3U6byhzKTxzP2c6ZShzKTxzP24ocyk8cz9oOmI6dChzKTxzP3k6Xykocyl9ZnVuY3Rpb24gdihlLG4sbyxpKXtpZihudWxsPT1lJiYoZT0xMCksIm51bWJlciI9PXR5cGVvZiBlKXt2YXIgYT1NYXRoLmFicyhvLW4pL2Uscj1nNigoZnVuY3Rpb24odCl7cmV0dXJuIHRbMl19KSkucmlnaHQoQyxhKTtyPT09Qy5sZW5ndGg/KGk9azYobi9PYXQsby9PYXQsZSksZT10KTpyPyhpPShyPUNbYS9DW3ItMV1bMl08Q1tyXVsyXS9hP3ItMTpyXSlbMV0sZT1yWzBdKTooaT1NYXRoLm1heChrNihuLG8sZSksMSksZT1zKX1yZXR1cm4gbnVsbD09aT9lOmUuZXZlcnkoaSl9cmV0dXJuIGMuaW52ZXJ0PWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgRGF0ZShkKHQpKX0sYy5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/cChxbnQuY2FsbCh0LHdhdCkpOnAoKS5tYXAoUGF0KX0sYy50aWNrcz1mdW5jdGlvbih0LGUpe3ZhciBuLG89cCgpLGk9b1swXSxhPW9bby5sZW5ndGgtMV0scj1hPGk7cmV0dXJuIHImJihuPWksaT1hLGE9biksbj0obj12KHQsaSxhLGUpKT9uLnJhbmdlKGksYSsxKTpbXSxyP24ucmV2ZXJzZSgpOm59LGMudGlja0Zvcm1hdD1mdW5jdGlvbih0LGUpe3JldHVybiBudWxsPT1lP006bChlKX0sYy5uaWNlPWZ1bmN0aW9uKHQsZSl7dmFyIG49cCgpO3JldHVybih0PXYodCxuWzBdLG5bbi5sZW5ndGgtMV0sZSkpP3AoZm90KG4sdCkpOmN9LGMuY29weT1mdW5jdGlvbigpe3JldHVybiBzb3QoYyxrYXQodCxlLG4sbyxpLGEscixzLGwpKX0sY31mdW5jdGlvbiBTYXQoKXtyZXR1cm4gV250LmFwcGx5KGthdChqb3QsQm90LEhvdCx6b3QsTm90LFRvdCxBb3Qsd290LHRpdCkuZG9tYWluKFtuZXcgRGF0ZSgyZTMsMCwxKSxuZXcgRGF0ZSgyZTMsMCwyKV0pLGFyZ3VtZW50cyl9ZnVuY3Rpb24gRGF0KHQpe2Zvcih2YXIgZT10Lmxlbmd0aC82fDAsbj1uZXcgQXJyYXkoZSksbz0wO288ZTspbltvXT0iIyIrdC5zbGljZSg2Km8sNiorK28pO3JldHVybiBufWZ1bmN0aW9uIFJhdCh0KXtyZXR1cm4gVTkodFt0Lmxlbmd0aC0xXSl9dmFyIEVhdD1SYXQobmV3IEFycmF5KDMpLmNvbmNhdCgiZGVlYmY3OWVjYWUxMzE4MmJkIiwiZWZmM2ZmYmRkN2U3NmJhZWQ2MjE3MWI1IiwiZWZmM2ZmYmRkN2U3NmJhZWQ2MzE4MmJkMDg1MTljIiwiZWZmM2ZmYzZkYmVmOWVjYWUxNmJhZWQ2MzE4MmJkMDg1MTljIiwiZWZmM2ZmYzZkYmVmOWVjYWUxNmJhZWQ2NDI5MmM2MjE3MWI1MDg0NTk0IiwiZjdmYmZmZGVlYmY3YzZkYmVmOWVjYWUxNmJhZWQ2NDI5MmM2MjE3MWI1MDg0NTk0IiwiZjdmYmZmZGVlYmY3YzZkYmVmOWVjYWUxNmJhZWQ2NDI5MmM2MjE3MWI1MDg1MTljMDgzMDZiIikubWFwKERhdCkpLEFhdD1SYXQobmV3IEFycmF5KDMpLmNvbmNhdCgiZjBmMGYwYmRiZGJkNjM2MzYzIiwiZjdmN2Y3Y2NjY2NjOTY5Njk2NTI1MjUyIiwiZjdmN2Y3Y2NjY2NjOTY5Njk2NjM2MzYzMjUyNTI1IiwiZjdmN2Y3ZDlkOWQ5YmRiZGJkOTY5Njk2NjM2MzYzMjUyNTI1IiwiZjdmN2Y3ZDlkOWQ5YmRiZGJkOTY5Njk2NzM3MzczNTI1MjUyMjUyNTI1IiwiZmZmZmZmZjBmMGYwZDlkOWQ5YmRiZGJkOTY5Njk2NzM3MzczNTI1MjUyMjUyNTI1IiwiZmZmZmZmZjBmMGYwZDlkOWQ5YmRiZGJkOTY5Njk2NzM3MzczNTI1MjUyMjUyNTI1MDAwMDAwIikubWFwKERhdCkpLFRhdD1SYXQobmV3IEFycmF5KDMpLmNvbmNhdCgiZmVlMGQyZmM5MjcyZGUyZDI2IiwiZmVlNWQ5ZmNhZTkxZmI2YTRhY2IxODFkIiwiZmVlNWQ5ZmNhZTkxZmI2YTRhZGUyZDI2YTUwZjE1IiwiZmVlNWQ5ZmNiYmExZmM5MjcyZmI2YTRhZGUyZDI2YTUwZjE1IiwiZmVlNWQ5ZmNiYmExZmM5MjcyZmI2YTRhZWYzYjJjY2IxODFkOTkwMDBkIiwiZmZmNWYwZmVlMGQyZmNiYmExZmM5MjcyZmI2YTRhZWYzYjJjY2IxODFkOTkwMDBkIiwiZmZmNWYwZmVlMGQyZmNiYmExZmM5MjcyZmI2YTRhZWYzYjJjY2IxODFkYTUwZjE1NjcwMDBkIikubWFwKERhdCkpO2Z1bmN0aW9uIE5hdCh0KXtyZXR1cm4gZnVuY3Rpb24gZSgpe3JldHVybiB0fX1mdW5jdGlvbiB6YXQodCl7dGhpcy5fY29udGV4dD10fWZ1bmN0aW9uIElhdCh0KXtyZXR1cm4gbmV3IHphdCh0KX1mdW5jdGlvbiBIYXQodCl7cmV0dXJuIHRbMF19ZnVuY3Rpb24gRmF0KHQpe3JldHVybiB0WzFdfWZ1bmN0aW9uIExhdCgpe3ZhciB0PUhhdCxlPUZhdCxuPU5hdCghMCksbz1udWxsLGk9SWF0LGE9bnVsbDtmdW5jdGlvbiByKHIpe3ZhciBzLGwsYyxkPXIubGVuZ3RoLHA9ITE7Zm9yKG51bGw9PW8mJihhPWkoYz1NbnQoKSkpLHM9MDtzPD1kOysrcykhKHM8ZCYmbihsPXJbc10scyxyKSk9PT1wJiYoKHA9IXApP2EubGluZVN0YXJ0KCk6YS5saW5lRW5kKCkpLHAmJmEucG9pbnQoK3QobCxzLHIpLCtlKGwscyxyKSk7aWYoYylyZXR1cm4gYT1udWxsLGMrIiJ8fG51bGx9cmV0dXJuIHIueD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOk5hdCgrZSkscik6dH0sci55PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6TmF0KCt0KSxyKTplfSxyLmRlZmluZWQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpOYXQoISF0KSxyKTpufSxyLmN1cnZlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPXQsbnVsbCE9byYmKGE9aShvKSkscik6aX0sci5jb250ZXh0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhudWxsPT10P289YT1udWxsOmE9aShvPXQpLHIpOm99LHJ9ZnVuY3Rpb24gQmF0KHQsZSxuKXt0Ll9jb250ZXh0LmJlemllckN1cnZlVG8odC5feDErdC5fayoodC5feDItdC5feDApLHQuX3kxK3QuX2sqKHQuX3kyLXQuX3kwKSx0Ll94Mit0Ll9rKih0Ll94MS1lKSx0Ll95Mit0Ll9rKih0Ll95MS1uKSx0Ll94Mix0Ll95Mil9ZnVuY3Rpb24gVmF0KHQsZSl7dGhpcy5fY29udGV4dD10LHRoaXMuX2s9KDEtZSkvNn1mdW5jdGlvbiBqYXQodCxlKXt0aGlzLl9jb250ZXh0PXQsdGhpcy5fYWxwaGE9ZX16YXQucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpeyh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMT09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rpb24odCxlKXtzd2l0Y2godD0rdCxlPStlLHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKHQsZSk6dGhpcy5fY29udGV4dC5tb3ZlVG8odCxlKTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9MjtkZWZhdWx0OnRoaXMuX2NvbnRleHQubGluZVRvKHQsZSl9fX0sVmF0LnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3gyPXRoaXMuX3kwPXRoaXMuX3kxPXRoaXMuX3kyPU5hTix0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDI6dGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDIsdGhpcy5feTIpO2JyZWFrO2Nhc2UgMzpCYXQodGhpcyx0aGlzLl94MSx0aGlzLl95MSl9KHRoaXMuX2xpbmV8fDAhPT10aGlzLl9saW5lJiYxPT09dGhpcy5fcG9pbnQpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9saW5lfSxwb2ludDpmdW5jdGlvbih0LGUpe3N3aXRjaCh0PSt0LGU9K2UsdGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8odCxlKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0LGUpO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yLHRoaXMuX3gxPXQsdGhpcy5feTE9ZTticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9MztkZWZhdWx0OkJhdCh0aGlzLHQsZSl9dGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dGhpcy5feDIsdGhpcy5feDI9dCx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT10aGlzLl95Mix0aGlzLl95Mj1lfX0samF0LnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3gyPXRoaXMuX3kwPXRoaXMuX3kxPXRoaXMuX3kyPU5hTix0aGlzLl9sMDFfYT10aGlzLl9sMTJfYT10aGlzLl9sMjNfYT10aGlzLl9sMDFfMmE9dGhpcy5fbDEyXzJhPXRoaXMuX2wyM18yYT10aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDI6dGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDIsdGhpcy5feTIpO2JyZWFrO2Nhc2UgMzp0aGlzLnBvaW50KHRoaXMuX3gyLHRoaXMuX3kyKX0odGhpcy5fbGluZXx8MCE9PXRoaXMuX2xpbmUmJjE9PT10aGlzLl9wb2ludCkmJnRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCksdGhpcy5fbGluZT0xLXRoaXMuX2xpbmV9LHBvaW50OmZ1bmN0aW9uKHQsZSl7aWYodD0rdCxlPStlLHRoaXMuX3BvaW50KXt2YXIgbj10aGlzLl94Mi10LG89dGhpcy5feTItZTt0aGlzLl9sMjNfYT1NYXRoLnNxcnQodGhpcy5fbDIzXzJhPU1hdGgucG93KG4qbitvKm8sdGhpcy5fYWxwaGEpKX1zd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8odCxlKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0LGUpO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zO2RlZmF1bHQ6IShmdW5jdGlvbiBpKHQsZSxuKXt2YXIgbz10Ll94MSxpPXQuX3kxLGE9dC5feDIscj10Ll95MjtpZih0Ll9sMDFfYT4xZS0xMil7dmFyIHM9Mip0Ll9sMDFfMmErMyp0Ll9sMDFfYSp0Ll9sMTJfYSt0Ll9sMTJfMmEsbD0zKnQuX2wwMV9hKih0Ll9sMDFfYSt0Ll9sMTJfYSk7bz0obypzLXQuX3gwKnQuX2wxMl8yYSt0Ll94Mip0Ll9sMDFfMmEpL2wsaT0oaSpzLXQuX3kwKnQuX2wxMl8yYSt0Ll95Mip0Ll9sMDFfMmEpL2x9aWYodC5fbDIzX2E+MWUtMTIpe3ZhciBjPTIqdC5fbDIzXzJhKzMqdC5fbDIzX2EqdC5fbDEyX2ErdC5fbDEyXzJhLGQ9Myp0Ll9sMjNfYSoodC5fbDIzX2ErdC5fbDEyX2EpO2E9KGEqYyt0Ll94MSp0Ll9sMjNfMmEtZSp0Ll9sMTJfMmEpL2Qscj0ocipjK3QuX3kxKnQuX2wyM18yYS1uKnQuX2wxMl8yYSkvZH10Ll9jb250ZXh0LmJlemllckN1cnZlVG8obyxpLGEscix0Ll94Mix0Ll95Mil9KSh0aGlzLHQsZSl9dGhpcy5fbDAxX2E9dGhpcy5fbDEyX2EsdGhpcy5fbDEyX2E9dGhpcy5fbDIzX2EsdGhpcy5fbDAxXzJhPXRoaXMuX2wxMl8yYSx0aGlzLl9sMTJfMmE9dGhpcy5fbDIzXzJhLHRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXRoaXMuX3gyLHRoaXMuX3gyPXQsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9dGhpcy5feTIsdGhpcy5feTI9ZX19O3ZhciBVYXQ9KGZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gbih0KXtyZXR1cm4gZT9uZXcgamF0KHQsZSk6bmV3IFZhdCh0LDApfXJldHVybiBuLmFscGhhPWZ1bmN0aW9uKGUpe3JldHVybiB0KCtlKX0sbn0pKC41KTtjb25zdCBXYXQ9MWU0LEdhdD0uMDAxLFlhdD1MbnQoIi4yfmUiKSxxYXQ9TG50KCIuNH5yIiksWmF0PUxudCgiLH4iKTtmdW5jdGlvbiBYYXQodCl7aWYoMD09PXQpcmV0dXJuIjAiO2NvbnN0IGU9TWF0aC5hYnModCk7cmV0dXJuIGU+PVdhdHx8ZTxHYXQ/WWF0KHQpOnFhdCh0KX1jb25zdCBLYXQ9e2Zvcm1hdFRpY2s6WGF0LGZvcm1hdFNob3J0OlhhdCxmb3JtYXRSZWFkYWJsZSh0KXtjb25zdCBlPU1hdGguYWJzKHQpO3JldHVybiBlPj1XYXR8fGU8R2F0P1lhdCh0KTpaYXQodCl9LGZvcm1hdExvbmc6WmF0fSxKYXQ9bmV3IEludGwuTnVtYmVyRm9ybWF0KHZvaWQgMCx7bWF4aW11bUZyYWN0aW9uRGlnaXRzOjN9KTtmdW5jdGlvbiBRYXQodCl7cmV0dXJuIEphdC5mb3JtYXQodCl9Y29uc3QgJGF0PXtmb3JtYXRUaWNrOlFhdCxmb3JtYXRTaG9ydDpRYXQsZm9ybWF0UmVhZGFibGU6UWF0LGZvcm1hdExvbmc6UWF0fSx0cnQ9TG50KCIwLjN+cyIpLGVydD1MbnQoIiwuM35mIik7ZnVuY3Rpb24gbnJ0KHQpe2NvbnN0IGU9TWF0aC5hYnModCk7cmV0dXJuIGU+PVdhdHx8ZTxHYXQ/dHJ0KHQpOmVydCh0KX1jb25zdCBvcnQ9e2Zvcm1hdFRpY2s6bnJ0LGZvcm1hdFNob3J0Om5ydCxmb3JtYXRSZWFkYWJsZTpucnQsZm9ybWF0TG9uZzpucnR9LGlydD0xZTMsYXJ0PTZlNCxycnQ9MzZlNSxzcnQ9ODY0ZTUsbHJ0PTMxNTM2ZTYsY3J0PUxudCgiLjR+Iik7ZnVuY3Rpb24gZHJ0KHQpe2lmKDA9PT10KXJldHVybiIwIjtsZXQgZT1NYXRoLnNpZ24odCk+MD8iIjoiLSI7Y29uc3Qgbj1NYXRoLmFicyh0KTtyZXR1cm4gZSs9bjxpcnQ/YCR7Y3J0KG4pfSBtc2A6bjxhcnQ/YCR7Y3J0KG4vaXJ0KX0gc2VjYDpuPHJydD9gJHtjcnQobi9hcnQpfSBtaW5gOm48c3J0P2Ake2NydChuL3JydCl9IGhyYDpuPGxydD9gJHtjcnQobi9zcnQpfSBkYXlgOmAke2NydChuL2xydCl9IHlyYCxlfWNvbnN0IHBydD17Zm9ybWF0VGljazpkcnQsZm9ybWF0U2hvcnQ6ZHJ0LGZvcm1hdFJlYWRhYmxlOmRydCxmb3JtYXRMb25nOmRydH0sbXJ0PVNhdCgpLnRpY2tGb3JtYXQoKTtsZXQgZnJ0O2NvbnN0IHVydD17Zm9ybWF0VGljazp0PT5tcnQobmV3IERhdGUodCkpLGZvcm1hdFNob3J0OnQ9Pm5ldyBEYXRlKHQpLnRvTG9jYWxlU3RyaW5nKGZydCx7eWVhcjoibnVtZXJpYyIsbW9udGg6InNob3J0IixkYXk6Im51bWVyaWMiLGhvdXI6Im51bWVyaWMiLG1pbnV0ZToibnVtZXJpYyIsc2Vjb25kOiJudW1lcmljIn0pLGZvcm1hdFJlYWRhYmxlOnQ9Pm5ldyBEYXRlKHQpLnRvTG9jYWxlU3RyaW5nKGZydCx7eWVhcjoibnVtZXJpYyIsbW9udGg6InNob3J0IixkYXk6Im51bWVyaWMiLGhvdXI6Im51bWVyaWMiLG1pbnV0ZToibnVtZXJpYyIsc2Vjb25kOiJudW1lcmljIix0aW1lWm9uZU5hbWU6InNob3J0In0pLGZvcm1hdExvbmc6dD0+bmV3IERhdGUodCkudG9Mb2NhbGVTdHJpbmcoZnJ0LHt5ZWFyOiJudW1lcmljIixtb250aDoibG9uZyIsZGF5OiJudW1lcmljIixob3VyOiJudW1lcmljIixtaW51dGU6Im51bWVyaWMiLHNlY29uZDoibnVtZXJpYyIsdGltZVpvbmVOYW1lOiJzaG9ydCIsZnJhY3Rpb25hbFNlY29uZERpZ2l0czozfSl9O2Z1bmN0aW9uIGdydCh0KXtzd2l0Y2godCl7Y2FzZSBuNi5MSU5FQVI6cmV0dXJuIG5ldyBocnQ7Y2FzZSBuNi5MT0cxMDpyZXR1cm4gbmV3IGJydDtjYXNlIG42LlRJTUU6cmV0dXJuIG5ldyB5cnQ7ZGVmYXVsdDp0aHJvdyBuZXcgUmFuZ2VFcnJvcihgU2NhbGVUeXBlICR7dH0gbm90IHN1cHBvcnRlZC5gKX19Y2xhc3MgaHJ0e2NvbnN0cnVjdG9yKCl7dGhpcy5kZWZhdWx0Rm9ybWF0dGVyPUthdH10cmFuc2Zvcm0odCxlLG4pe2NvbnN0W28saV09dCxhPWktbyxbcixzXT1lO3JldHVybiAwPT09YT9yOihzLXIpL2EqKG4tbykrcn1mb3J3YXJkKHQsZSxuKXtyZXR1cm4gdGhpcy50cmFuc2Zvcm0odCxlLG4pfXJldmVyc2UodCxlLG4pe3JldHVybiB0aGlzLnRyYW5zZm9ybShlLHQsbil9bmljZURvbWFpbih0KXtsZXRbZSxuXT10O2lmKG48ZSl0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgaW5wdXQ6IG1pbiBpcyBsYXJnZXIgdGhhbiBtYXgiKTtpZihuPT09ZSlyZXR1cm4gMD09PWU/Wy0xLDFdOmU8MD9bMiplLDBdOlswLDIqZV07Y29uc3Qgbz1tb3QoKSxpPS4wNSoobi1lK051bWJlci5FUFNJTE9OKSxbYSxyXT1vLmRvbWFpbihbZS1pLG4raV0pLm5pY2UoKS5kb21haW4oKTtyZXR1cm5bYSxyXX10aWNrcyh0LGUpe3JldHVybiBtb3QoKS5kb21haW4odCkudGlja3MoZSl9aXNTYWZlTnVtYmVyKHQpe3JldHVybiBOdW1iZXIuaXNGaW5pdGUodCl9fWNsYXNzIGJydHtjb25zdHJ1Y3Rvcigpe3RoaXMuZGVmYXVsdEZvcm1hdHRlcj1LYXR9dHJhbnNmb3JtKHQpe3JldHVybiBNYXRoLmxvZzEwKHQ+MD90Ok51bWJlci5NSU5fVkFMVUUpfXVudHJhbnNmb3JtKHQpe3JldHVybiBNYXRoLmV4cCh0L01hdGguTE9HMTBFKX1mb3J3YXJkKHQsZSxuKXtpZihuPD0wKXJldHVybiBlWzBdO2NvbnN0W28saV09dCxbYSxyXT1lLHM9dGhpcy50cmFuc2Zvcm0obyksbD10aGlzLnRyYW5zZm9ybShpKS1zLGM9ci1hO3JldHVybiBuPXRoaXMudHJhbnNmb3JtKG4pLGMvKGwrTnVtYmVyLkVQU0lMT04pKihuLXMpK2F9cmV2ZXJzZSh0LGUsbil7Y29uc3RbbyxpXT10LFthLHJdPWUscz10aGlzLnRyYW5zZm9ybShvKSxsPXRoaXMudHJhbnNmb3JtKGkpO3JldHVybiB0aGlzLnVudHJhbnNmb3JtKChsLXMpLyhyLWErTnVtYmVyLkVQU0lMT04pKihuLWEpK3MpfW5pY2VEb21haW4odCl7Y29uc3RbZSxuXT10O2lmKGU+bil0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgaW5wdXQ6IG1pbiBpcyBsYXJnZXIgdGhhbiBtYXgiKTtjb25zdCBvPU1hdGgubWF4KGUsTnVtYmVyLk1JTl9WQUxVRSksaT1NYXRoLm1heChuLE51bWJlci5NSU5fVkFMVUUpO3JldHVybiBuPD0wP1tOdW1iZXIuTUlOX1ZBTFVFLDFdOltNYXRoLm1heChOdW1iZXIuTUlOX1ZBTFVFLC41Km8pLDIqaV19dGlja3ModCxlKXtjb25zdCBuPXRbMF08PTA/TnVtYmVyLk1JTl9WQUxVRTp0WzBdLG89dFsxXTw9MD9OdW1iZXIuTUlOX1ZBTFVFOnRbMV0saT1Nb3QoKS5kb21haW4oW24sb10pLnRpY2tzKGUpO3JldHVybiBpLmxlbmd0aD9pOnR9aXNTYWZlTnVtYmVyKHQpe3JldHVybiBOdW1iZXIuaXNGaW5pdGUodCkmJnQ+MH19Y2xhc3MgeXJ0e2NvbnN0cnVjdG9yKCl7dGhpcy5zY2FsZT1TYXQoKSx0aGlzLmRlZmF1bHRGb3JtYXR0ZXI9dXJ0fWZvcndhcmQodCxlLG4pe3JldHVybiB0aGlzLnNjYWxlLmRvbWFpbih0KS5yYW5nZShlKShuKX1yZXZlcnNlKHQsZSxuKXtyZXR1cm4gdGhpcy5zY2FsZS5kb21haW4odCkucmFuZ2UoZSkuaW52ZXJ0KG4pLmdldFRpbWUoKX1uaWNlRG9tYWluKHQpe2NvbnN0W2Usbl09dGhpcy5zY2FsZS5kb21haW4odCkubmljZSgpLmRvbWFpbigpO3JldHVybltlLmdldFRpbWUoKSxuLmdldFRpbWUoKV19dGlja3ModCxlKXtyZXR1cm4gdGhpcy5zY2FsZS5kb21haW4odCkudGlja3MoZSkubWFwKCh0PT50LmdldFRpbWUoKSkpfWlzU2FmZU51bWJlcih0KXtyZXR1cm4gTnVtYmVyLmlzRmluaXRlKHQpfX1sZXQgX3J0PSExO2lmKHNlbGYuaGFzT3duUHJvcGVydHkoIldlYkdMMlJlbmRlcmluZ0NvbnRleHQiKSYmc2VsZi5oYXNPd25Qcm9wZXJ0eSgiZG9jdW1lbnQiKSl7Y29uc3QgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTt0LmFkZEV2ZW50TGlzdGVuZXIoIndlYmdsY29udGV4dGNyZWF0aW9uZXJyb3IiLCgoKT0+e19ydD0hMX0pKTtjb25zdCBlPXQuZ2V0Q29udGV4dCgid2ViZ2wyIik7X3J0PUJvb2xlYW4oZSl9ZnVuY3Rpb24gQ3J0KCl7cmV0dXJuIHNlbGYuaGFzT3duUHJvcGVydHkoIk9mZnNjcmVlbkNhbnZhcyIpfWZ1bmN0aW9uIE1ydCh0LGUpe2lmKHQubGVuZ3RoIT09ZS5sZW5ndGgpcmV0dXJuITE7Zm9yKGxldCBuPTA7bjx0Lmxlbmd0aDtuKyspaWYodFtuXSE9PWVbbl0pcmV0dXJuITE7cmV0dXJuITB9Y2xhc3MgdnJ0e2NvbnN0cnVjdG9yKCl7dGhpcy54U2NhbGU9Z3J0KG42LkxJTkVBUiksdGhpcy55U2NhbGU9Z3J0KG42LkxJTkVBUiksdGhpcy5kb21Db250YWluZXJSZWN0PXt4OjAsd2lkdGg6MSx5OjAsaGVpZ2h0OjF9LHRoaXMubGFzdFVwZGF0ZWQ9MCx0aGlzLmN1cnJlbnRWaWV3Qm94UmVjdD17eDowLHdpZHRoOjEseTowLGhlaWdodDoxfX1nZXRVcGRhdGVJZGVudGlmaWVyKCl7cmV0dXJuIHRoaXMubGFzdFVwZGF0ZWR9dXBkYXRlSWRlbnRpZmllcigpe3RoaXMubGFzdFVwZGF0ZWQrK31pc1lBeGlzUG9pbnRlZERvd24oKXtyZXR1cm4hMH1zZXRYU2NhbGUodCl7dGhpcy54U2NhbGU9dCx0aGlzLnVwZGF0ZUlkZW50aWZpZXIoKX1zZXRZU2NhbGUodCl7dGhpcy55U2NhbGU9dCx0aGlzLnVwZGF0ZUlkZW50aWZpZXIoKX1nZXRDdXJyZW50Vmlld0JveFJlY3QoKXtyZXR1cm4gdGhpcy5jdXJyZW50Vmlld0JveFJlY3R9c2V0Vmlld0JveFJlY3QodCl7dGhpcy5jdXJyZW50Vmlld0JveFJlY3Q9dCx0aGlzLnVwZGF0ZUlkZW50aWZpZXIoKX1zZXREb21Db250YWluZXJSZWN0KHQpe3RoaXMuZG9tQ29udGFpbmVyUmVjdD10LHRoaXMudXBkYXRlSWRlbnRpZmllcigpfXRyYW5zZm9ybURhdGFUb1VpQ29vcmQodCxlKXtjb25zdCBuPXQsbz0oZnVuY3Rpb24gaSh0KXtyZXR1cm57eDpbdC54LHQueCt0LndpZHRoXSx5Olt0LnksdC55K3QuaGVpZ2h0XX19KSh0aGlzLmN1cnJlbnRWaWV3Qm94UmVjdCk7cmV0dXJuW3RoaXMueFNjYWxlLmZvcndhcmQoby54LFtuLngsbi54K24ud2lkdGhdLGVbMF0pLHRoaXMueVNjYWxlLmZvcndhcmQoby55LHRoaXMuaXNZQXhpc1BvaW50ZWREb3duKCk/W24ueStuLmhlaWdodCxuLnldOltuLnksbi55K24uaGVpZ2h0XSxlWzFdKV19fWZ1bmN0aW9uIHhydCh0LGUsbixvKXtjb25zdHtjb2xvcjppLHZpc2libGU6YSxvcGFjaXR5OnJ9PW87bGV0IHM9dDtyZXR1cm4gc3x8YT8ocz1udWxsIT1zP3M6ZSgpLHM9bihzKSxzLnN0eWxlLmRpc3BsYXk9YT8iIjoibm9uZSIscy5zdHlsZS5zdHJva2U9aSxzLnN0eWxlLm9wYWNpdHk9U3RyaW5nKG51bGwhPXI/cjoxKSxzKTpudWxsfWNsYXNzIE9ydHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN2Zz10fWZsdXNoKCl7fW9uUmVzaXplKHQpe31kZXN0cm95T2JqZWN0KHQpe3RoaXMuc3ZnLnJlbW92ZUNoaWxkKHQuZG9tKX1zZXRVc2VEYXJrTW9kZSh0KXt9Y3JlYXRlUGF0aERTdHJpbmcodCl7aWYoIXQubGVuZ3RoKXJldHVybiIiO2NvbnN0IGU9bmV3IEFycmF5KHQubGVuZ3RoLzIpO2VbMF09YE0ke3RbMF19LCR7dFsxXX1gO2ZvcihsZXQgbj0xO248dC5sZW5ndGgvMjtuKyspZVtuXT1gTCR7dFsyKm5dfSwke3RbMipuKzFdfWA7cmV0dXJuIGUuam9pbigiIil9Y3JlYXRlT3JVcGRhdGVMaW5lT2JqZWN0KHQsZSxuKXtjb25zdCBvPXhydChudWxsPT10P3ZvaWQgMDp0LmRvbSwoKCk9Pntjb25zdCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJwYXRoIik7dC5zdHlsZS5maWxsPSJub25lIjtjb25zdCBuPXRoaXMuY3JlYXRlUGF0aERTdHJpbmcoZSk7cmV0dXJuIHQuc2V0QXR0cmlidXRlKCJkIixuKSx0aGlzLnN2Zy5hcHBlbmRDaGlsZCh0KSx0fSksKG49PntpZighKG51bGw9PXQ/dm9pZCAwOnQuZGF0YSl8fCFNcnQoZSxudWxsPT10P3ZvaWQgMDp0LmRhdGEpKXtjb25zdCB0PXRoaXMuY3JlYXRlUGF0aERTdHJpbmcoZSk7bi5zZXRBdHRyaWJ1dGUoImQiLHQpfXJldHVybiBufSksbik7cmV0dXJuIG51bGw9PT1vP251bGw6KG8uc3R5bGUuc3Ryb2tlV2lkdGg9U3RyaW5nKG4ud2lkdGgpLHtkb206byxkYXRhOmV9KX1jcmVhdGVPclVwZGF0ZVRyaWFuZ2xlT2JqZWN0KHQsZSxuKXtjb25zdHtzaXplOm8sY29sb3I6aX09bixhPW8qTWF0aC5zcXJ0KDMpLzIscj1uZXcgRmxvYXQzMkFycmF5KFtlLngtby8yLGUueSthLzMsZS54K28vMixlLnkrYS8zLGUueCxlLnktMiphLzNdKSxzPXhydChudWxsPT10P3ZvaWQgMDp0LmRvbSwoKCk9Pntjb25zdCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJwYXRoIik7dC5jbGFzc0xpc3QuYWRkKCJ0cmlhbmdsZSIpLHQuc3R5bGUuZmlsbD0ibm9uZSI7Y29uc3QgZT10aGlzLmNyZWF0ZVBhdGhEU3RyaW5nKHIpO3JldHVybiB0LnNldEF0dHJpYnV0ZSgiZCIsZSsiWiIpLHRoaXMuc3ZnLmFwcGVuZENoaWxkKHQpLHR9KSwodD0+e2NvbnN0IGU9dGhpcy5jcmVhdGVQYXRoRFN0cmluZyhyKTtyZXR1cm4gdC5zZXRBdHRyaWJ1dGUoImQiLGUrIloiKSx0fSksbik7cmV0dXJuIG51bGw9PT1zP251bGw6KHMuc3R5bGUuZmlsbD1pLHtkb206cyxkYXRhOnJ9KX1jcmVhdGVPclVwZGF0ZUNpcmNsZU9iamVjdCh0LGUsbil7Y29uc3R7Y29sb3I6byxyYWRpdXM6aX09bixhPXhydChudWxsPT10P3ZvaWQgMDp0LmRvbSwoKCk9Pntjb25zdCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJjaXJjbGUiKTtyZXR1cm4gdC5zdHlsZS5maWxsPW8sdC5zZXRBdHRyaWJ1dGUoImN4IixTdHJpbmcoZS54KSksdC5zZXRBdHRyaWJ1dGUoImN5IixTdHJpbmcoZS55KSksdC5zZXRBdHRyaWJ1dGUoInIiLFN0cmluZyhpKSksdGhpcy5zdmcuYXBwZW5kQ2hpbGQodCksdH0pLCh0PT4odC5zdHlsZS5maWxsPW8sdC5zZXRBdHRyaWJ1dGUoImN4IixTdHJpbmcoZS54KSksdC5zZXRBdHRyaWJ1dGUoImN5IixTdHJpbmcoZS55KSksdC5zZXRBdHRyaWJ1dGUoInIiLFN0cmluZyhpKSksdCkpLG4pO3JldHVybiBudWxsPT09YT9udWxsOntkb206YSxkYXRhOmV9fWNyZWF0ZU9yVXBkYXRlVHJhcGV6b2lkT2JqZWN0KHQsZSxuLG8pe2lmKGUueSE9PW4ueSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW5wdXQgZXJyb3I6IHN0YXJ0LnkgIT0gZW5kLnkuIik7Y29uc3R7YWx0aXR1ZGU6aSxjb2xvcjphfT1vLHI9Mi9NYXRoLnNxcnQoMykqaSxzPW5ldyBGbG9hdDMyQXJyYXkoW2UueC1yLzIsZS55K2kvMixlLngsZS55LWkvMixuLngsbi55LWkvMixuLngrci8yLG4ueStpLzJdKSxsPXhydChudWxsPT10P3ZvaWQgMDp0LmRvbSwoKCk9Pntjb25zdCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJwYXRoIik7dC5jbGFzc0xpc3QuYWRkKCJ0cmFwZXpvaWQiKSx0LnN0eWxlLmZpbGw9Im5vbmUiO2NvbnN0IGU9dGhpcy5jcmVhdGVQYXRoRFN0cmluZyhzKTtyZXR1cm4gdC5zZXRBdHRyaWJ1dGUoImQiLGUrIloiKSx0aGlzLnN2Zy5hcHBlbmRDaGlsZCh0KSx0fSksKHQ9Pntjb25zdCBlPXRoaXMuY3JlYXRlUGF0aERTdHJpbmcocyk7cmV0dXJuIHQuc2V0QXR0cmlidXRlKCJkIixlKyJaIiksdH0pLG8pO3JldHVybiBudWxsPT09bD9udWxsOihsLnN0eWxlLmZpbGw9YSx7ZG9tOmwsZGF0YTpzfSl9ZGlzcG9zZSgpe319Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAyMDEwLTIwMjEgVGhyZWUuanMgQXV0aG9ycwogICAgICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVAogICAgICovY29uc3QgUHJ0PTEwMCx3cnQ9MzAxLGtydD0zMDIsU3J0PTMwNixEcnQ9MWUzLFJydD0xMDAxLEVydD0xMDAyLEFydD0xMDAzLFRydD0xMDA2LE5ydD0xMDA4LHpydD0xMDA5LElydD0xMDEyLEhydD0xMDE0LEZydD0xMDE1LExydD0xMDE2LEJydD0xMDIwLFZydD0xMDIyLGpydD0xMDIzLFVydD0xMDI2LFdydD0xMDI3LEdydD0yMzAwLFlydD0yMzAxLHFydD0yMzAyLFpydD0yNDAwLFhydD0yNDAxLEtydD0yNDAyLEpydD0yNTAwLFFydD0zZTMsJHJ0PTMwMDEsdHN0PTMwMDcsZXN0PTMwMDIsbnN0PTc2ODAsb3N0PTM1MDQ0LGlzdD0zNTA0OCxhc3Q9IjMwMCBlcyI7Y2xhc3MgcnN0e2FkZEV2ZW50TGlzdGVuZXIodCxlKXt2b2lkIDA9PT10aGlzLl9saXN0ZW5lcnMmJih0aGlzLl9saXN0ZW5lcnM9e30pO2NvbnN0IG49dGhpcy5fbGlzdGVuZXJzO3ZvaWQgMD09PW5bdF0mJihuW3RdPVtdKSwtMT09PW5bdF0uaW5kZXhPZihlKSYmblt0XS5wdXNoKGUpfWhhc0V2ZW50TGlzdGVuZXIodCxlKXtpZih2b2lkIDA9PT10aGlzLl9saXN0ZW5lcnMpcmV0dXJuITE7Y29uc3Qgbj10aGlzLl9saXN0ZW5lcnM7cmV0dXJuIHZvaWQgMCE9PW5bdF0mJi0xIT09blt0XS5pbmRleE9mKGUpfXJlbW92ZUV2ZW50TGlzdGVuZXIodCxlKXtpZih2b2lkIDA9PT10aGlzLl9saXN0ZW5lcnMpcmV0dXJuO2NvbnN0IG49dGhpcy5fbGlzdGVuZXJzW3RdO2lmKHZvaWQgMCE9PW4pe2NvbnN0IHQ9bi5pbmRleE9mKGUpOy0xIT09dCYmbi5zcGxpY2UodCwxKX19ZGlzcGF0Y2hFdmVudCh0KXtpZih2b2lkIDA9PT10aGlzLl9saXN0ZW5lcnMpcmV0dXJuO2NvbnN0IGU9dGhpcy5fbGlzdGVuZXJzW3QudHlwZV07aWYodm9pZCAwIT09ZSl7dC50YXJnZXQ9dGhpcztjb25zdCBuPWUuc2xpY2UoMCk7Zm9yKGxldCBlPTAsbz1uLmxlbmd0aDtlPG87ZSsrKW5bZV0uY2FsbCh0aGlzLHQpO3QudGFyZ2V0PW51bGx9fX1jb25zdCBzc3Q9W107Zm9yKGxldCB0PTA7dDwyNTY7dCsrKXNzdFt0XT0odDwxNj8iMCI6IiIpK3QudG9TdHJpbmcoMTYpO2NvbnN0IGxzdD1NYXRoLlBJLzE4MCxjc3Q9MTgwL01hdGguUEk7ZnVuY3Rpb24gZHN0KCl7Y29uc3QgdD00Mjk0OTY3Mjk1Kk1hdGgucmFuZG9tKCl8MCxlPTQyOTQ5NjcyOTUqTWF0aC5yYW5kb20oKXwwLG49NDI5NDk2NzI5NSpNYXRoLnJhbmRvbSgpfDAsbz00Mjk0OTY3Mjk1Kk1hdGgucmFuZG9tKCl8MDtyZXR1cm4oc3N0WzI1NSZ0XStzc3RbdD4+OCYyNTVdK3NzdFt0Pj4xNiYyNTVdK3NzdFt0Pj4yNCYyNTVdKyItIitzc3RbMjU1JmVdK3NzdFtlPj44JjI1NV0rIi0iK3NzdFtlPj4xNiYxNXw2NF0rc3N0W2U+PjI0JjI1NV0rIi0iK3NzdFs2MyZufDEyOF0rc3N0W24+PjgmMjU1XSsiLSIrc3N0W24+PjE2JjI1NV0rc3N0W24+PjI0JjI1NV0rc3N0WzI1NSZvXStzc3Rbbz4+OCYyNTVdK3NzdFtvPj4xNiYyNTVdK3NzdFtvPj4yNCYyNTVdKS50b1VwcGVyQ2FzZSgpfWZ1bmN0aW9uIHBzdCh0LGUsbil7cmV0dXJuIE1hdGgubWF4KGUsTWF0aC5taW4obix0KSl9ZnVuY3Rpb24gbXN0KHQsZSxuKXtyZXR1cm4oMS1uKSp0K24qZX1mdW5jdGlvbiBmc3QodCl7cmV0dXJuIDA9PSh0JnQtMSkmJjAhPT10fWZ1bmN0aW9uIHVzdCh0KXtyZXR1cm4gTWF0aC5wb3coMixNYXRoLmZsb29yKE1hdGgubG9nKHQpL01hdGguTE4yKSl9Y2xhc3MgZ3N0e2NvbnN0cnVjdG9yKHQ9MCxlPTApe3RoaXMueD10LHRoaXMueT1lfWdldCB3aWR0aCgpe3JldHVybiB0aGlzLnh9c2V0IHdpZHRoKHQpe3RoaXMueD10fWdldCBoZWlnaHQoKXtyZXR1cm4gdGhpcy55fXNldCBoZWlnaHQodCl7dGhpcy55PXR9c2V0KHQsZSl7cmV0dXJuIHRoaXMueD10LHRoaXMueT1lLHRoaXN9c2V0U2NhbGFyKHQpe3JldHVybiB0aGlzLng9dCx0aGlzLnk9dCx0aGlzfXNldFgodCl7cmV0dXJuIHRoaXMueD10LHRoaXN9c2V0WSh0KXtyZXR1cm4gdGhpcy55PXQsdGhpc31zZXRDb21wb25lbnQodCxlKXtzd2l0Y2godCl7Y2FzZSAwOnRoaXMueD1lO2JyZWFrO2Nhc2UgMTp0aGlzLnk9ZTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiaW5kZXggaXMgb3V0IG9mIHJhbmdlOiAiK3QpfXJldHVybiB0aGlzfWdldENvbXBvbmVudCh0KXtzd2l0Y2godCl7Y2FzZSAwOnJldHVybiB0aGlzLng7Y2FzZSAxOnJldHVybiB0aGlzLnk7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoImluZGV4IGlzIG91dCBvZiByYW5nZTogIit0KX19Y2xvbmUoKXtyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IodGhpcy54LHRoaXMueSl9Y29weSh0KXtyZXR1cm4gdGhpcy54PXQueCx0aGlzLnk9dC55LHRoaXN9YWRkKHQsZSl7cmV0dXJuIHZvaWQgMCE9PWU/KGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMjogLmFkZCgpIG5vdyBvbmx5IGFjY2VwdHMgb25lIGFyZ3VtZW50LiBVc2UgLmFkZFZlY3RvcnMoIGEsIGIgKSBpbnN0ZWFkLiIpLHRoaXMuYWRkVmVjdG9ycyh0LGUpKToodGhpcy54Kz10LngsdGhpcy55Kz10LnksdGhpcyl9YWRkU2NhbGFyKHQpe3JldHVybiB0aGlzLngrPXQsdGhpcy55Kz10LHRoaXN9YWRkVmVjdG9ycyh0LGUpe3JldHVybiB0aGlzLng9dC54K2UueCx0aGlzLnk9dC55K2UueSx0aGlzfWFkZFNjYWxlZFZlY3Rvcih0LGUpe3JldHVybiB0aGlzLngrPXQueCplLHRoaXMueSs9dC55KmUsdGhpc31zdWIodCxlKXtyZXR1cm4gdm9pZCAwIT09ZT8oY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IyOiAuc3ViKCkgbm93IG9ubHkgYWNjZXB0cyBvbmUgYXJndW1lbnQuIFVzZSAuc3ViVmVjdG9ycyggYSwgYiApIGluc3RlYWQuIiksdGhpcy5zdWJWZWN0b3JzKHQsZSkpOih0aGlzLngtPXQueCx0aGlzLnktPXQueSx0aGlzKX1zdWJTY2FsYXIodCl7cmV0dXJuIHRoaXMueC09dCx0aGlzLnktPXQsdGhpc31zdWJWZWN0b3JzKHQsZSl7cmV0dXJuIHRoaXMueD10LngtZS54LHRoaXMueT10LnktZS55LHRoaXN9bXVsdGlwbHkodCl7cmV0dXJuIHRoaXMueCo9dC54LHRoaXMueSo9dC55LHRoaXN9bXVsdGlwbHlTY2FsYXIodCl7cmV0dXJuIHRoaXMueCo9dCx0aGlzLnkqPXQsdGhpc31kaXZpZGUodCl7cmV0dXJuIHRoaXMueC89dC54LHRoaXMueS89dC55LHRoaXN9ZGl2aWRlU2NhbGFyKHQpe3JldHVybiB0aGlzLm11bHRpcGx5U2NhbGFyKDEvdCl9YXBwbHlNYXRyaXgzKHQpe2NvbnN0IGU9dGhpcy54LG49dGhpcy55LG89dC5lbGVtZW50cztyZXR1cm4gdGhpcy54PW9bMF0qZStvWzNdKm4rb1s2XSx0aGlzLnk9b1sxXSplK29bNF0qbitvWzddLHRoaXN9bWluKHQpe3JldHVybiB0aGlzLng9TWF0aC5taW4odGhpcy54LHQueCksdGhpcy55PU1hdGgubWluKHRoaXMueSx0LnkpLHRoaXN9bWF4KHQpe3JldHVybiB0aGlzLng9TWF0aC5tYXgodGhpcy54LHQueCksdGhpcy55PU1hdGgubWF4KHRoaXMueSx0LnkpLHRoaXN9Y2xhbXAodCxlKXtyZXR1cm4gdGhpcy54PU1hdGgubWF4KHQueCxNYXRoLm1pbihlLngsdGhpcy54KSksdGhpcy55PU1hdGgubWF4KHQueSxNYXRoLm1pbihlLnksdGhpcy55KSksdGhpc31jbGFtcFNjYWxhcih0LGUpe3JldHVybiB0aGlzLng9TWF0aC5tYXgodCxNYXRoLm1pbihlLHRoaXMueCkpLHRoaXMueT1NYXRoLm1heCh0LE1hdGgubWluKGUsdGhpcy55KSksdGhpc31jbGFtcExlbmd0aCh0LGUpe2NvbnN0IG49dGhpcy5sZW5ndGgoKTtyZXR1cm4gdGhpcy5kaXZpZGVTY2FsYXIobnx8MSkubXVsdGlwbHlTY2FsYXIoTWF0aC5tYXgodCxNYXRoLm1pbihlLG4pKSl9Zmxvb3IoKXtyZXR1cm4gdGhpcy54PU1hdGguZmxvb3IodGhpcy54KSx0aGlzLnk9TWF0aC5mbG9vcih0aGlzLnkpLHRoaXN9Y2VpbCgpe3JldHVybiB0aGlzLng9TWF0aC5jZWlsKHRoaXMueCksdGhpcy55PU1hdGguY2VpbCh0aGlzLnkpLHRoaXN9cm91bmQoKXtyZXR1cm4gdGhpcy54PU1hdGgucm91bmQodGhpcy54KSx0aGlzLnk9TWF0aC5yb3VuZCh0aGlzLnkpLHRoaXN9cm91bmRUb1plcm8oKXtyZXR1cm4gdGhpcy54PXRoaXMueDwwP01hdGguY2VpbCh0aGlzLngpOk1hdGguZmxvb3IodGhpcy54KSx0aGlzLnk9dGhpcy55PDA/TWF0aC5jZWlsKHRoaXMueSk6TWF0aC5mbG9vcih0aGlzLnkpLHRoaXN9bmVnYXRlKCl7cmV0dXJuIHRoaXMueD0tdGhpcy54LHRoaXMueT0tdGhpcy55LHRoaXN9ZG90KHQpe3JldHVybiB0aGlzLngqdC54K3RoaXMueSp0Lnl9Y3Jvc3ModCl7cmV0dXJuIHRoaXMueCp0LnktdGhpcy55KnQueH1sZW5ndGhTcSgpe3JldHVybiB0aGlzLngqdGhpcy54K3RoaXMueSp0aGlzLnl9bGVuZ3RoKCl7cmV0dXJuIE1hdGguc3FydCh0aGlzLngqdGhpcy54K3RoaXMueSp0aGlzLnkpfW1hbmhhdHRhbkxlbmd0aCgpe3JldHVybiBNYXRoLmFicyh0aGlzLngpK01hdGguYWJzKHRoaXMueSl9bm9ybWFsaXplKCl7cmV0dXJuIHRoaXMuZGl2aWRlU2NhbGFyKHRoaXMubGVuZ3RoKCl8fDEpfWFuZ2xlKCl7cmV0dXJuIE1hdGguYXRhbjIoLXRoaXMueSwtdGhpcy54KStNYXRoLlBJfWRpc3RhbmNlVG8odCl7cmV0dXJuIE1hdGguc3FydCh0aGlzLmRpc3RhbmNlVG9TcXVhcmVkKHQpKX1kaXN0YW5jZVRvU3F1YXJlZCh0KXtjb25zdCBlPXRoaXMueC10Lngsbj10aGlzLnktdC55O3JldHVybiBlKmUrbipufW1hbmhhdHRhbkRpc3RhbmNlVG8odCl7cmV0dXJuIE1hdGguYWJzKHRoaXMueC10LngpK01hdGguYWJzKHRoaXMueS10LnkpfXNldExlbmd0aCh0KXtyZXR1cm4gdGhpcy5ub3JtYWxpemUoKS5tdWx0aXBseVNjYWxhcih0KX1sZXJwKHQsZSl7cmV0dXJuIHRoaXMueCs9KHQueC10aGlzLngpKmUsdGhpcy55Kz0odC55LXRoaXMueSkqZSx0aGlzfWxlcnBWZWN0b3JzKHQsZSxuKXtyZXR1cm4gdGhpcy54PXQueCsoZS54LXQueCkqbix0aGlzLnk9dC55KyhlLnktdC55KSpuLHRoaXN9ZXF1YWxzKHQpe3JldHVybiB0Lng9PT10aGlzLngmJnQueT09PXRoaXMueX1mcm9tQXJyYXkodCxlPTApe3JldHVybiB0aGlzLng9dFtlXSx0aGlzLnk9dFtlKzFdLHRoaXN9dG9BcnJheSh0PVtdLGU9MCl7cmV0dXJuIHRbZV09dGhpcy54LHRbZSsxXT10aGlzLnksdH1mcm9tQnVmZmVyQXR0cmlidXRlKHQsZSxuKXtyZXR1cm4gdm9pZCAwIT09biYmY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IyOiBvZmZzZXQgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIC5mcm9tQnVmZmVyQXR0cmlidXRlKCkuIiksdGhpcy54PXQuZ2V0WChlKSx0aGlzLnk9dC5nZXRZKGUpLHRoaXN9cm90YXRlQXJvdW5kKHQsZSl7Y29uc3Qgbj1NYXRoLmNvcyhlKSxvPU1hdGguc2luKGUpLGk9dGhpcy54LXQueCxhPXRoaXMueS10Lnk7cmV0dXJuIHRoaXMueD1pKm4tYSpvK3QueCx0aGlzLnk9aSpvK2Eqbit0LnksdGhpc31yYW5kb20oKXtyZXR1cm4gdGhpcy54PU1hdGgucmFuZG9tKCksdGhpcy55PU1hdGgucmFuZG9tKCksdGhpc319Z3N0LnByb3RvdHlwZS5pc1ZlY3RvcjI9ITA7Y2xhc3MgaHN0e2NvbnN0cnVjdG9yKCl7dGhpcy5lbGVtZW50cz1bMSwwLDAsMCwxLDAsMCwwLDFdLGFyZ3VtZW50cy5sZW5ndGg+MCYmY29uc29sZS5lcnJvcigiVEhSRUUuTWF0cml4MzogdGhlIGNvbnN0cnVjdG9yIG5vIGxvbmdlciByZWFkcyBhcmd1bWVudHMuIHVzZSAuc2V0KCkgaW5zdGVhZC4iKX1zZXQodCxlLG4sbyxpLGEscixzLGwpe2NvbnN0IGM9dGhpcy5lbGVtZW50cztyZXR1cm4gY1swXT10LGNbMV09byxjWzJdPXIsY1szXT1lLGNbNF09aSxjWzVdPXMsY1s2XT1uLGNbN109YSxjWzhdPWwsdGhpc31pZGVudGl0eSgpe3JldHVybiB0aGlzLnNldCgxLDAsMCwwLDEsMCwwLDAsMSksdGhpc31jb3B5KHQpe2NvbnN0IGU9dGhpcy5lbGVtZW50cyxuPXQuZWxlbWVudHM7cmV0dXJuIGVbMF09blswXSxlWzFdPW5bMV0sZVsyXT1uWzJdLGVbM109blszXSxlWzRdPW5bNF0sZVs1XT1uWzVdLGVbNl09bls2XSxlWzddPW5bN10sZVs4XT1uWzhdLHRoaXN9ZXh0cmFjdEJhc2lzKHQsZSxuKXtyZXR1cm4gdC5zZXRGcm9tTWF0cml4M0NvbHVtbih0aGlzLDApLGUuc2V0RnJvbU1hdHJpeDNDb2x1bW4odGhpcywxKSxuLnNldEZyb21NYXRyaXgzQ29sdW1uKHRoaXMsMiksdGhpc31zZXRGcm9tTWF0cml4NCh0KXtjb25zdCBlPXQuZWxlbWVudHM7cmV0dXJuIHRoaXMuc2V0KGVbMF0sZVs0XSxlWzhdLGVbMV0sZVs1XSxlWzldLGVbMl0sZVs2XSxlWzEwXSksdGhpc31tdWx0aXBseSh0KXtyZXR1cm4gdGhpcy5tdWx0aXBseU1hdHJpY2VzKHRoaXMsdCl9cHJlbXVsdGlwbHkodCl7cmV0dXJuIHRoaXMubXVsdGlwbHlNYXRyaWNlcyh0LHRoaXMpfW11bHRpcGx5TWF0cmljZXModCxlKXtjb25zdCBuPXQuZWxlbWVudHMsbz1lLmVsZW1lbnRzLGk9dGhpcy5lbGVtZW50cyxhPW5bMF0scj1uWzNdLHM9bls2XSxsPW5bMV0sYz1uWzRdLGQ9bls3XSxwPW5bMl0sbT1uWzVdLGY9bls4XSx1PW9bMF0sZz1vWzNdLGg9b1s2XSxiPW9bMV0seT1vWzRdLF89b1s3XSxDPW9bMl0sTT1vWzVdLHY9b1s4XTtyZXR1cm4gaVswXT1hKnUrcipiK3MqQyxpWzNdPWEqZytyKnkrcypNLGlbNl09YSpoK3IqXytzKnYsaVsxXT1sKnUrYypiK2QqQyxpWzRdPWwqZytjKnkrZCpNLGlbN109bCpoK2MqXytkKnYsaVsyXT1wKnUrbSpiK2YqQyxpWzVdPXAqZyttKnkrZipNLGlbOF09cCpoK20qXytmKnYsdGhpc31tdWx0aXBseVNjYWxhcih0KXtjb25zdCBlPXRoaXMuZWxlbWVudHM7cmV0dXJuIGVbMF0qPXQsZVszXSo9dCxlWzZdKj10LGVbMV0qPXQsZVs0XSo9dCxlWzddKj10LGVbMl0qPXQsZVs1XSo9dCxlWzhdKj10LHRoaXN9ZGV0ZXJtaW5hbnQoKXtjb25zdCB0PXRoaXMuZWxlbWVudHMsZT10WzBdLG49dFsxXSxvPXRbMl0saT10WzNdLGE9dFs0XSxyPXRbNV0scz10WzZdLGw9dFs3XSxjPXRbOF07cmV0dXJuIGUqYSpjLWUqcipsLW4qaSpjK24qcipzK28qaSpsLW8qYSpzfWludmVydCgpe2NvbnN0IHQ9dGhpcy5lbGVtZW50cyxlPXRbMF0sbj10WzFdLG89dFsyXSxpPXRbM10sYT10WzRdLHI9dFs1XSxzPXRbNl0sbD10WzddLGM9dFs4XSxkPWMqYS1yKmwscD1yKnMtYyppLG09bCppLWEqcyxmPWUqZCtuKnArbyptO2lmKDA9PT1mKXJldHVybiB0aGlzLnNldCgwLDAsMCwwLDAsMCwwLDAsMCk7Y29uc3QgdT0xL2Y7cmV0dXJuIHRbMF09ZCp1LHRbMV09KG8qbC1jKm4pKnUsdFsyXT0ocipuLW8qYSkqdSx0WzNdPXAqdSx0WzRdPShjKmUtbypzKSp1LHRbNV09KG8qaS1yKmUpKnUsdFs2XT1tKnUsdFs3XT0obipzLWwqZSkqdSx0WzhdPShhKmUtbippKSp1LHRoaXN9dHJhbnNwb3NlKCl7bGV0IHQ7Y29uc3QgZT10aGlzLmVsZW1lbnRzO3JldHVybiB0PWVbMV0sZVsxXT1lWzNdLGVbM109dCx0PWVbMl0sZVsyXT1lWzZdLGVbNl09dCx0PWVbNV0sZVs1XT1lWzddLGVbN109dCx0aGlzfWdldE5vcm1hbE1hdHJpeCh0KXtyZXR1cm4gdGhpcy5zZXRGcm9tTWF0cml4NCh0KS5pbnZlcnQoKS50cmFuc3Bvc2UoKX10cmFuc3Bvc2VJbnRvQXJyYXkodCl7Y29uc3QgZT10aGlzLmVsZW1lbnRzO3JldHVybiB0WzBdPWVbMF0sdFsxXT1lWzNdLHRbMl09ZVs2XSx0WzNdPWVbMV0sdFs0XT1lWzRdLHRbNV09ZVs3XSx0WzZdPWVbMl0sdFs3XT1lWzVdLHRbOF09ZVs4XSx0aGlzfXNldFV2VHJhbnNmb3JtKHQsZSxuLG8saSxhLHIpe2NvbnN0IHM9TWF0aC5jb3MoaSksbD1NYXRoLnNpbihpKTtyZXR1cm4gdGhpcy5zZXQobipzLG4qbCwtbioocyphK2wqcikrYSt0LC1vKmwsbypzLC1vKigtbCphK3MqcikrcitlLDAsMCwxKSx0aGlzfXNjYWxlKHQsZSl7Y29uc3Qgbj10aGlzLmVsZW1lbnRzO3JldHVybiBuWzBdKj10LG5bM10qPXQsbls2XSo9dCxuWzFdKj1lLG5bNF0qPWUsbls3XSo9ZSx0aGlzfXJvdGF0ZSh0KXtjb25zdCBlPU1hdGguY29zKHQpLG49TWF0aC5zaW4odCksbz10aGlzLmVsZW1lbnRzLGk9b1swXSxhPW9bM10scj1vWzZdLHM9b1sxXSxsPW9bNF0sYz1vWzddO3JldHVybiBvWzBdPWUqaStuKnMsb1szXT1lKmErbipsLG9bNl09ZSpyK24qYyxvWzFdPS1uKmkrZSpzLG9bNF09LW4qYStlKmwsb1s3XT0tbipyK2UqYyx0aGlzfXRyYW5zbGF0ZSh0LGUpe2NvbnN0IG49dGhpcy5lbGVtZW50cztyZXR1cm4gblswXSs9dCpuWzJdLG5bM10rPXQqbls1XSxuWzZdKz10Km5bOF0sblsxXSs9ZSpuWzJdLG5bNF0rPWUqbls1XSxuWzddKz1lKm5bOF0sdGhpc31lcXVhbHModCl7Y29uc3QgZT10aGlzLmVsZW1lbnRzLG49dC5lbGVtZW50cztmb3IobGV0IHQ9MDt0PDk7dCsrKWlmKGVbdF0hPT1uW3RdKXJldHVybiExO3JldHVybiEwfWZyb21BcnJheSh0LGU9MCl7Zm9yKGxldCBuPTA7bjw5O24rKyl0aGlzLmVsZW1lbnRzW25dPXRbbitlXTtyZXR1cm4gdGhpc310b0FycmF5KHQ9W10sZT0wKXtjb25zdCBuPXRoaXMuZWxlbWVudHM7cmV0dXJuIHRbZV09blswXSx0W2UrMV09blsxXSx0W2UrMl09blsyXSx0W2UrM109blszXSx0W2UrNF09bls0XSx0W2UrNV09bls1XSx0W2UrNl09bls2XSx0W2UrN109bls3XSx0W2UrOF09bls4XSx0fWNsb25lKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5mcm9tQXJyYXkodGhpcy5lbGVtZW50cyl9fWxldCBic3Q7aHN0LnByb3RvdHlwZS5pc01hdHJpeDM9ITA7Y2xhc3MgeXN0e3N0YXRpYyBnZXREYXRhVVJMKHQpe2lmKC9eZGF0YTovaS50ZXN0KHQuc3JjKSlyZXR1cm4gdC5zcmM7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBIVE1MQ2FudmFzRWxlbWVudClyZXR1cm4gdC5zcmM7bGV0IGU7aWYodCBpbnN0YW5jZW9mIEhUTUxDYW52YXNFbGVtZW50KWU9dDtlbHNle3ZvaWQgMD09PWJzdCYmKGJzdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiLCJjYW52YXMiKSksYnN0LndpZHRoPXQud2lkdGgsYnN0LmhlaWdodD10LmhlaWdodDtjb25zdCBuPWJzdC5nZXRDb250ZXh0KCIyZCIpO3QgaW5zdGFuY2VvZiBJbWFnZURhdGE/bi5wdXRJbWFnZURhdGEodCwwLDApOm4uZHJhd0ltYWdlKHQsMCwwLHQud2lkdGgsdC5oZWlnaHQpLGU9YnN0fXJldHVybiBlLndpZHRoPjIwNDh8fGUuaGVpZ2h0PjIwNDg/KGNvbnNvbGUud2FybigiVEhSRUUuSW1hZ2VVdGlscy5nZXREYXRhVVJMOiBJbWFnZSBjb252ZXJ0ZWQgdG8ganBnIGZvciBwZXJmb3JtYW5jZSByZWFzb25zIix0KSxlLnRvRGF0YVVSTCgiaW1hZ2UvanBlZyIsLjYpKTplLnRvRGF0YVVSTCgiaW1hZ2UvcG5nIil9fWxldCBfc3Q9MDtjbGFzcyBDc3QgZXh0ZW5kcyByc3R7Y29uc3RydWN0b3IodD1Dc3QuREVGQVVMVF9JTUFHRSxlPUNzdC5ERUZBVUxUX01BUFBJTkcsbj0xMDAxLG89MTAwMSxpPTEwMDYsYT0xMDA4LHI9MTAyMyxzPTEwMDksbD0xLGM9M2UzKXtzdXBlcigpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJpZCIse3ZhbHVlOl9zdCsrfSksdGhpcy51dWlkPWRzdCgpLHRoaXMubmFtZT0iIix0aGlzLmltYWdlPXQsdGhpcy5taXBtYXBzPVtdLHRoaXMubWFwcGluZz1lLHRoaXMud3JhcFM9bix0aGlzLndyYXBUPW8sdGhpcy5tYWdGaWx0ZXI9aSx0aGlzLm1pbkZpbHRlcj1hLHRoaXMuYW5pc290cm9weT1sLHRoaXMuZm9ybWF0PXIsdGhpcy5pbnRlcm5hbEZvcm1hdD1udWxsLHRoaXMudHlwZT1zLHRoaXMub2Zmc2V0PW5ldyBnc3QoMCwwKSx0aGlzLnJlcGVhdD1uZXcgZ3N0KDEsMSksdGhpcy5jZW50ZXI9bmV3IGdzdCgwLDApLHRoaXMucm90YXRpb249MCx0aGlzLm1hdHJpeEF1dG9VcGRhdGU9ITAsdGhpcy5tYXRyaXg9bmV3IGhzdCx0aGlzLmdlbmVyYXRlTWlwbWFwcz0hMCx0aGlzLnByZW11bHRpcGx5QWxwaGE9ITEsdGhpcy5mbGlwWT0hMCx0aGlzLnVucGFja0FsaWdubWVudD00LHRoaXMuZW5jb2Rpbmc9Yyx0aGlzLnZlcnNpb249MCx0aGlzLm9uVXBkYXRlPW51bGwsdGhpcy5pc1JlbmRlclRhcmdldFRleHR1cmU9ITF9dXBkYXRlTWF0cml4KCl7dGhpcy5tYXRyaXguc2V0VXZUcmFuc2Zvcm0odGhpcy5vZmZzZXQueCx0aGlzLm9mZnNldC55LHRoaXMucmVwZWF0LngsdGhpcy5yZXBlYXQueSx0aGlzLnJvdGF0aW9uLHRoaXMuY2VudGVyLngsdGhpcy5jZW50ZXIueSl9Y2xvbmUoKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IpLmNvcHkodGhpcyl9Y29weSh0KXtyZXR1cm4gdGhpcy5uYW1lPXQubmFtZSx0aGlzLmltYWdlPXQuaW1hZ2UsdGhpcy5taXBtYXBzPXQubWlwbWFwcy5zbGljZSgwKSx0aGlzLm1hcHBpbmc9dC5tYXBwaW5nLHRoaXMud3JhcFM9dC53cmFwUyx0aGlzLndyYXBUPXQud3JhcFQsdGhpcy5tYWdGaWx0ZXI9dC5tYWdGaWx0ZXIsdGhpcy5taW5GaWx0ZXI9dC5taW5GaWx0ZXIsdGhpcy5hbmlzb3Ryb3B5PXQuYW5pc290cm9weSx0aGlzLmZvcm1hdD10LmZvcm1hdCx0aGlzLmludGVybmFsRm9ybWF0PXQuaW50ZXJuYWxGb3JtYXQsdGhpcy50eXBlPXQudHlwZSx0aGlzLm9mZnNldC5jb3B5KHQub2Zmc2V0KSx0aGlzLnJlcGVhdC5jb3B5KHQucmVwZWF0KSx0aGlzLmNlbnRlci5jb3B5KHQuY2VudGVyKSx0aGlzLnJvdGF0aW9uPXQucm90YXRpb24sdGhpcy5tYXRyaXhBdXRvVXBkYXRlPXQubWF0cml4QXV0b1VwZGF0ZSx0aGlzLm1hdHJpeC5jb3B5KHQubWF0cml4KSx0aGlzLmdlbmVyYXRlTWlwbWFwcz10LmdlbmVyYXRlTWlwbWFwcyx0aGlzLnByZW11bHRpcGx5QWxwaGE9dC5wcmVtdWx0aXBseUFscGhhLHRoaXMuZmxpcFk9dC5mbGlwWSx0aGlzLnVucGFja0FsaWdubWVudD10LnVucGFja0FsaWdubWVudCx0aGlzLmVuY29kaW5nPXQuZW5jb2RpbmcsdGhpc310b0pTT04odCl7Y29uc3QgZT12b2lkIDA9PT10fHwic3RyaW5nIj09dHlwZW9mIHQ7aWYoIWUmJnZvaWQgMCE9PXQudGV4dHVyZXNbdGhpcy51dWlkXSlyZXR1cm4gdC50ZXh0dXJlc1t0aGlzLnV1aWRdO2NvbnN0IG49e21ldGFkYXRhOnt2ZXJzaW9uOjQuNSx0eXBlOiJUZXh0dXJlIixnZW5lcmF0b3I6IlRleHR1cmUudG9KU09OIn0sdXVpZDp0aGlzLnV1aWQsbmFtZTp0aGlzLm5hbWUsbWFwcGluZzp0aGlzLm1hcHBpbmcscmVwZWF0Olt0aGlzLnJlcGVhdC54LHRoaXMucmVwZWF0LnldLG9mZnNldDpbdGhpcy5vZmZzZXQueCx0aGlzLm9mZnNldC55XSxjZW50ZXI6W3RoaXMuY2VudGVyLngsdGhpcy5jZW50ZXIueV0scm90YXRpb246dGhpcy5yb3RhdGlvbix3cmFwOlt0aGlzLndyYXBTLHRoaXMud3JhcFRdLGZvcm1hdDp0aGlzLmZvcm1hdCx0eXBlOnRoaXMudHlwZSxlbmNvZGluZzp0aGlzLmVuY29kaW5nLG1pbkZpbHRlcjp0aGlzLm1pbkZpbHRlcixtYWdGaWx0ZXI6dGhpcy5tYWdGaWx0ZXIsYW5pc290cm9weTp0aGlzLmFuaXNvdHJvcHksZmxpcFk6dGhpcy5mbGlwWSxwcmVtdWx0aXBseUFscGhhOnRoaXMucHJlbXVsdGlwbHlBbHBoYSx1bnBhY2tBbGlnbm1lbnQ6dGhpcy51bnBhY2tBbGlnbm1lbnR9O2lmKHZvaWQgMCE9PXRoaXMuaW1hZ2Upe2NvbnN0IG89dGhpcy5pbWFnZTtpZih2b2lkIDA9PT1vLnV1aWQmJihvLnV1aWQ9ZHN0KCkpLCFlJiZ2b2lkIDA9PT10LmltYWdlc1tvLnV1aWRdKXtsZXQgZTtpZihBcnJheS5pc0FycmF5KG8pKXtlPVtdO2ZvcihsZXQgdD0wLG49by5sZW5ndGg7dDxuO3QrKyllLnB1c2goTXN0KG9bdF0uaXNEYXRhVGV4dHVyZT9vW3RdLmltYWdlOm9bdF0pKX1lbHNlIGU9TXN0KG8pO3QuaW1hZ2VzW28udXVpZF09e3V1aWQ6by51dWlkLHVybDplfX1uLmltYWdlPW8udXVpZH1yZXR1cm4gZXx8KHQudGV4dHVyZXNbdGhpcy51dWlkXT1uKSxufWRpc3Bvc2UoKXt0aGlzLmRpc3BhdGNoRXZlbnQoe3R5cGU6ImRpc3Bvc2UifSl9dHJhbnNmb3JtVXYodCl7aWYoMzAwIT09dGhpcy5tYXBwaW5nKXJldHVybiB0O2lmKHQuYXBwbHlNYXRyaXgzKHRoaXMubWF0cml4KSx0Lng8MHx8dC54PjEpc3dpdGNoKHRoaXMud3JhcFMpe2Nhc2UgRHJ0OnQueD10LngtTWF0aC5mbG9vcih0LngpO2JyZWFrO2Nhc2UgUnJ0OnQueD10Lng8MD8wOjE7YnJlYWs7Y2FzZSBFcnQ6dC54PTE9PT1NYXRoLmFicyhNYXRoLmZsb29yKHQueCklMik/TWF0aC5jZWlsKHQueCktdC54OnQueC1NYXRoLmZsb29yKHQueCl9aWYodC55PDB8fHQueT4xKXN3aXRjaCh0aGlzLndyYXBUKXtjYXNlIERydDp0Lnk9dC55LU1hdGguZmxvb3IodC55KTticmVhaztjYXNlIFJydDp0Lnk9dC55PDA/MDoxO2JyZWFrO2Nhc2UgRXJ0OnQueT0xPT09TWF0aC5hYnMoTWF0aC5mbG9vcih0LnkpJTIpP01hdGguY2VpbCh0LnkpLXQueTp0LnktTWF0aC5mbG9vcih0LnkpfXJldHVybiB0aGlzLmZsaXBZJiYodC55PTEtdC55KSx0fXNldCBuZWVkc1VwZGF0ZSh0KXshMD09PXQmJnRoaXMudmVyc2lvbisrfX1mdW5jdGlvbiBNc3QodCl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBIVE1MSW1hZ2VFbGVtZW50JiZ0IGluc3RhbmNlb2YgSFRNTEltYWdlRWxlbWVudHx8InVuZGVmaW5lZCIhPXR5cGVvZiBIVE1MQ2FudmFzRWxlbWVudCYmdCBpbnN0YW5jZW9mIEhUTUxDYW52YXNFbGVtZW50fHwidW5kZWZpbmVkIiE9dHlwZW9mIEltYWdlQml0bWFwJiZ0IGluc3RhbmNlb2YgSW1hZ2VCaXRtYXA/eXN0LmdldERhdGFVUkwodCk6dC5kYXRhP3tkYXRhOkFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQuZGF0YSksd2lkdGg6dC53aWR0aCxoZWlnaHQ6dC5oZWlnaHQsdHlwZTp0LmRhdGEuY29uc3RydWN0b3IubmFtZX06KGNvbnNvbGUud2FybigiVEhSRUUuVGV4dHVyZTogVW5hYmxlIHRvIHNlcmlhbGl6ZSBUZXh0dXJlLiIpLHt9KX1Dc3QuREVGQVVMVF9JTUFHRT12b2lkIDAsQ3N0LkRFRkFVTFRfTUFQUElORz0zMDAsQ3N0LnByb3RvdHlwZS5pc1RleHR1cmU9ITA7Y2xhc3MgdnN0e2NvbnN0cnVjdG9yKHQ9MCxlPTAsbj0wLG89MSl7dGhpcy54PXQsdGhpcy55PWUsdGhpcy56PW4sdGhpcy53PW99Z2V0IHdpZHRoKCl7cmV0dXJuIHRoaXMuen1zZXQgd2lkdGgodCl7dGhpcy56PXR9Z2V0IGhlaWdodCgpe3JldHVybiB0aGlzLnd9c2V0IGhlaWdodCh0KXt0aGlzLnc9dH1zZXQodCxlLG4sbyl7cmV0dXJuIHRoaXMueD10LHRoaXMueT1lLHRoaXMuej1uLHRoaXMudz1vLHRoaXN9c2V0U2NhbGFyKHQpe3JldHVybiB0aGlzLng9dCx0aGlzLnk9dCx0aGlzLno9dCx0aGlzLnc9dCx0aGlzfXNldFgodCl7cmV0dXJuIHRoaXMueD10LHRoaXN9c2V0WSh0KXtyZXR1cm4gdGhpcy55PXQsdGhpc31zZXRaKHQpe3JldHVybiB0aGlzLno9dCx0aGlzfXNldFcodCl7cmV0dXJuIHRoaXMudz10LHRoaXN9c2V0Q29tcG9uZW50KHQsZSl7c3dpdGNoKHQpe2Nhc2UgMDp0aGlzLng9ZTticmVhaztjYXNlIDE6dGhpcy55PWU7YnJlYWs7Y2FzZSAyOnRoaXMuej1lO2JyZWFrO2Nhc2UgMzp0aGlzLnc9ZTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiaW5kZXggaXMgb3V0IG9mIHJhbmdlOiAiK3QpfXJldHVybiB0aGlzfWdldENvbXBvbmVudCh0KXtzd2l0Y2godCl7Y2FzZSAwOnJldHVybiB0aGlzLng7Y2FzZSAxOnJldHVybiB0aGlzLnk7Y2FzZSAyOnJldHVybiB0aGlzLno7Y2FzZSAzOnJldHVybiB0aGlzLnc7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoImluZGV4IGlzIG91dCBvZiByYW5nZTogIit0KX19Y2xvbmUoKXtyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IodGhpcy54LHRoaXMueSx0aGlzLnosdGhpcy53KX1jb3B5KHQpe3JldHVybiB0aGlzLng9dC54LHRoaXMueT10LnksdGhpcy56PXQueix0aGlzLnc9dm9pZCAwIT09dC53P3QudzoxLHRoaXN9YWRkKHQsZSl7cmV0dXJuIHZvaWQgMCE9PWU/KGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yNDogLmFkZCgpIG5vdyBvbmx5IGFjY2VwdHMgb25lIGFyZ3VtZW50LiBVc2UgLmFkZFZlY3RvcnMoIGEsIGIgKSBpbnN0ZWFkLiIpLHRoaXMuYWRkVmVjdG9ycyh0LGUpKToodGhpcy54Kz10LngsdGhpcy55Kz10LnksdGhpcy56Kz10LnosdGhpcy53Kz10LncsdGhpcyl9YWRkU2NhbGFyKHQpe3JldHVybiB0aGlzLngrPXQsdGhpcy55Kz10LHRoaXMueis9dCx0aGlzLncrPXQsdGhpc31hZGRWZWN0b3JzKHQsZSl7cmV0dXJuIHRoaXMueD10LngrZS54LHRoaXMueT10LnkrZS55LHRoaXMuej10LnorZS56LHRoaXMudz10LncrZS53LHRoaXN9YWRkU2NhbGVkVmVjdG9yKHQsZSl7cmV0dXJuIHRoaXMueCs9dC54KmUsdGhpcy55Kz10LnkqZSx0aGlzLnorPXQueiplLHRoaXMudys9dC53KmUsdGhpc31zdWIodCxlKXtyZXR1cm4gdm9pZCAwIT09ZT8oY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3I0OiAuc3ViKCkgbm93IG9ubHkgYWNjZXB0cyBvbmUgYXJndW1lbnQuIFVzZSAuc3ViVmVjdG9ycyggYSwgYiApIGluc3RlYWQuIiksdGhpcy5zdWJWZWN0b3JzKHQsZSkpOih0aGlzLngtPXQueCx0aGlzLnktPXQueSx0aGlzLnotPXQueix0aGlzLnctPXQudyx0aGlzKX1zdWJTY2FsYXIodCl7cmV0dXJuIHRoaXMueC09dCx0aGlzLnktPXQsdGhpcy56LT10LHRoaXMudy09dCx0aGlzfXN1YlZlY3RvcnModCxlKXtyZXR1cm4gdGhpcy54PXQueC1lLngsdGhpcy55PXQueS1lLnksdGhpcy56PXQuei1lLnosdGhpcy53PXQudy1lLncsdGhpc31tdWx0aXBseSh0KXtyZXR1cm4gdGhpcy54Kj10LngsdGhpcy55Kj10LnksdGhpcy56Kj10LnosdGhpcy53Kj10LncsdGhpc31tdWx0aXBseVNjYWxhcih0KXtyZXR1cm4gdGhpcy54Kj10LHRoaXMueSo9dCx0aGlzLnoqPXQsdGhpcy53Kj10LHRoaXN9YXBwbHlNYXRyaXg0KHQpe2NvbnN0IGU9dGhpcy54LG49dGhpcy55LG89dGhpcy56LGk9dGhpcy53LGE9dC5lbGVtZW50cztyZXR1cm4gdGhpcy54PWFbMF0qZSthWzRdKm4rYVs4XSpvK2FbMTJdKmksdGhpcy55PWFbMV0qZSthWzVdKm4rYVs5XSpvK2FbMTNdKmksdGhpcy56PWFbMl0qZSthWzZdKm4rYVsxMF0qbythWzE0XSppLHRoaXMudz1hWzNdKmUrYVs3XSpuK2FbMTFdKm8rYVsxNV0qaSx0aGlzfWRpdmlkZVNjYWxhcih0KXtyZXR1cm4gdGhpcy5tdWx0aXBseVNjYWxhcigxL3QpfXNldEF4aXNBbmdsZUZyb21RdWF0ZXJuaW9uKHQpe3RoaXMudz0yKk1hdGguYWNvcyh0LncpO2NvbnN0IGU9TWF0aC5zcXJ0KDEtdC53KnQudyk7cmV0dXJuIGU8MWUtND8odGhpcy54PTEsdGhpcy55PTAsdGhpcy56PTApOih0aGlzLng9dC54L2UsdGhpcy55PXQueS9lLHRoaXMuej10LnovZSksdGhpc31zZXRBeGlzQW5nbGVGcm9tUm90YXRpb25NYXRyaXgodCl7bGV0IGUsbixvLGk7Y29uc3QgYT0uMDEscj0uMSxzPXQuZWxlbWVudHMsbD1zWzBdLGM9c1s0XSxkPXNbOF0scD1zWzFdLG09c1s1XSxmPXNbOV0sdT1zWzJdLGc9c1s2XSxoPXNbMTBdO2lmKE1hdGguYWJzKGMtcCk8YSYmTWF0aC5hYnMoZC11KTxhJiZNYXRoLmFicyhmLWcpPGEpe2lmKE1hdGguYWJzKGMrcCk8ciYmTWF0aC5hYnMoZCt1KTxyJiZNYXRoLmFicyhmK2cpPHImJk1hdGguYWJzKGwrbStoLTMpPHIpcmV0dXJuIHRoaXMuc2V0KDEsMCwwLDApLHRoaXM7ZT1NYXRoLlBJO2NvbnN0IHQ9KGwrMSkvMixzPShtKzEpLzIsYj0oaCsxKS8yLHk9KGMrcCkvNCxfPShkK3UpLzQsQz0oZitnKS80O3JldHVybiB0PnMmJnQ+Yj90PGE/KG49MCxvPS43MDcxMDY3ODEsaT0uNzA3MTA2NzgxKToobj1NYXRoLnNxcnQodCksbz15L24saT1fL24pOnM+Yj9zPGE/KG49LjcwNzEwNjc4MSxvPTAsaT0uNzA3MTA2NzgxKToobz1NYXRoLnNxcnQocyksbj15L28saT1DL28pOmI8YT8obj0uNzA3MTA2NzgxLG89LjcwNzEwNjc4MSxpPTApOihpPU1hdGguc3FydChiKSxuPV8vaSxvPUMvaSksdGhpcy5zZXQobixvLGksZSksdGhpc31sZXQgYj1NYXRoLnNxcnQoKGctZikqKGctZikrKGQtdSkqKGQtdSkrKHAtYykqKHAtYykpO3JldHVybiBNYXRoLmFicyhiKTwuMDAxJiYoYj0xKSx0aGlzLng9KGctZikvYix0aGlzLnk9KGQtdSkvYix0aGlzLno9KHAtYykvYix0aGlzLnc9TWF0aC5hY29zKChsK20raC0xKS8yKSx0aGlzfW1pbih0KXtyZXR1cm4gdGhpcy54PU1hdGgubWluKHRoaXMueCx0LngpLHRoaXMueT1NYXRoLm1pbih0aGlzLnksdC55KSx0aGlzLno9TWF0aC5taW4odGhpcy56LHQueiksdGhpcy53PU1hdGgubWluKHRoaXMudyx0LncpLHRoaXN9bWF4KHQpe3JldHVybiB0aGlzLng9TWF0aC5tYXgodGhpcy54LHQueCksdGhpcy55PU1hdGgubWF4KHRoaXMueSx0LnkpLHRoaXMuej1NYXRoLm1heCh0aGlzLnosdC56KSx0aGlzLnc9TWF0aC5tYXgodGhpcy53LHQudyksdGhpc31jbGFtcCh0LGUpe3JldHVybiB0aGlzLng9TWF0aC5tYXgodC54LE1hdGgubWluKGUueCx0aGlzLngpKSx0aGlzLnk9TWF0aC5tYXgodC55LE1hdGgubWluKGUueSx0aGlzLnkpKSx0aGlzLno9TWF0aC5tYXgodC56LE1hdGgubWluKGUueix0aGlzLnopKSx0aGlzLnc9TWF0aC5tYXgodC53LE1hdGgubWluKGUudyx0aGlzLncpKSx0aGlzfWNsYW1wU2NhbGFyKHQsZSl7cmV0dXJuIHRoaXMueD1NYXRoLm1heCh0LE1hdGgubWluKGUsdGhpcy54KSksdGhpcy55PU1hdGgubWF4KHQsTWF0aC5taW4oZSx0aGlzLnkpKSx0aGlzLno9TWF0aC5tYXgodCxNYXRoLm1pbihlLHRoaXMueikpLHRoaXMudz1NYXRoLm1heCh0LE1hdGgubWluKGUsdGhpcy53KSksdGhpc31jbGFtcExlbmd0aCh0LGUpe2NvbnN0IG49dGhpcy5sZW5ndGgoKTtyZXR1cm4gdGhpcy5kaXZpZGVTY2FsYXIobnx8MSkubXVsdGlwbHlTY2FsYXIoTWF0aC5tYXgodCxNYXRoLm1pbihlLG4pKSl9Zmxvb3IoKXtyZXR1cm4gdGhpcy54PU1hdGguZmxvb3IodGhpcy54KSx0aGlzLnk9TWF0aC5mbG9vcih0aGlzLnkpLHRoaXMuej1NYXRoLmZsb29yKHRoaXMueiksdGhpcy53PU1hdGguZmxvb3IodGhpcy53KSx0aGlzfWNlaWwoKXtyZXR1cm4gdGhpcy54PU1hdGguY2VpbCh0aGlzLngpLHRoaXMueT1NYXRoLmNlaWwodGhpcy55KSx0aGlzLno9TWF0aC5jZWlsKHRoaXMueiksdGhpcy53PU1hdGguY2VpbCh0aGlzLncpLHRoaXN9cm91bmQoKXtyZXR1cm4gdGhpcy54PU1hdGgucm91bmQodGhpcy54KSx0aGlzLnk9TWF0aC5yb3VuZCh0aGlzLnkpLHRoaXMuej1NYXRoLnJvdW5kKHRoaXMueiksdGhpcy53PU1hdGgucm91bmQodGhpcy53KSx0aGlzfXJvdW5kVG9aZXJvKCl7cmV0dXJuIHRoaXMueD10aGlzLng8MD9NYXRoLmNlaWwodGhpcy54KTpNYXRoLmZsb29yKHRoaXMueCksdGhpcy55PXRoaXMueTwwP01hdGguY2VpbCh0aGlzLnkpOk1hdGguZmxvb3IodGhpcy55KSx0aGlzLno9dGhpcy56PDA/TWF0aC5jZWlsKHRoaXMueik6TWF0aC5mbG9vcih0aGlzLnopLHRoaXMudz10aGlzLnc8MD9NYXRoLmNlaWwodGhpcy53KTpNYXRoLmZsb29yKHRoaXMudyksdGhpc31uZWdhdGUoKXtyZXR1cm4gdGhpcy54PS10aGlzLngsdGhpcy55PS10aGlzLnksdGhpcy56PS10aGlzLnosdGhpcy53PS10aGlzLncsdGhpc31kb3QodCl7cmV0dXJuIHRoaXMueCp0LngrdGhpcy55KnQueSt0aGlzLnoqdC56K3RoaXMudyp0Lnd9bGVuZ3RoU3EoKXtyZXR1cm4gdGhpcy54KnRoaXMueCt0aGlzLnkqdGhpcy55K3RoaXMueip0aGlzLnordGhpcy53KnRoaXMud31sZW5ndGgoKXtyZXR1cm4gTWF0aC5zcXJ0KHRoaXMueCp0aGlzLngrdGhpcy55KnRoaXMueSt0aGlzLnoqdGhpcy56K3RoaXMudyp0aGlzLncpfW1hbmhhdHRhbkxlbmd0aCgpe3JldHVybiBNYXRoLmFicyh0aGlzLngpK01hdGguYWJzKHRoaXMueSkrTWF0aC5hYnModGhpcy56KStNYXRoLmFicyh0aGlzLncpfW5vcm1hbGl6ZSgpe3JldHVybiB0aGlzLmRpdmlkZVNjYWxhcih0aGlzLmxlbmd0aCgpfHwxKX1zZXRMZW5ndGgodCl7cmV0dXJuIHRoaXMubm9ybWFsaXplKCkubXVsdGlwbHlTY2FsYXIodCl9bGVycCh0LGUpe3JldHVybiB0aGlzLngrPSh0LngtdGhpcy54KSplLHRoaXMueSs9KHQueS10aGlzLnkpKmUsdGhpcy56Kz0odC56LXRoaXMueikqZSx0aGlzLncrPSh0LnctdGhpcy53KSplLHRoaXN9bGVycFZlY3RvcnModCxlLG4pe3JldHVybiB0aGlzLng9dC54KyhlLngtdC54KSpuLHRoaXMueT10LnkrKGUueS10LnkpKm4sdGhpcy56PXQueisoZS56LXQueikqbix0aGlzLnc9dC53KyhlLnctdC53KSpuLHRoaXN9ZXF1YWxzKHQpe3JldHVybiB0Lng9PT10aGlzLngmJnQueT09PXRoaXMueSYmdC56PT09dGhpcy56JiZ0Lnc9PT10aGlzLnd9ZnJvbUFycmF5KHQsZT0wKXtyZXR1cm4gdGhpcy54PXRbZV0sdGhpcy55PXRbZSsxXSx0aGlzLno9dFtlKzJdLHRoaXMudz10W2UrM10sdGhpc310b0FycmF5KHQ9W10sZT0wKXtyZXR1cm4gdFtlXT10aGlzLngsdFtlKzFdPXRoaXMueSx0W2UrMl09dGhpcy56LHRbZSszXT10aGlzLncsdH1mcm9tQnVmZmVyQXR0cmlidXRlKHQsZSxuKXtyZXR1cm4gdm9pZCAwIT09biYmY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3I0OiBvZmZzZXQgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIC5mcm9tQnVmZmVyQXR0cmlidXRlKCkuIiksdGhpcy54PXQuZ2V0WChlKSx0aGlzLnk9dC5nZXRZKGUpLHRoaXMuej10LmdldFooZSksdGhpcy53PXQuZ2V0VyhlKSx0aGlzfXJhbmRvbSgpe3JldHVybiB0aGlzLng9TWF0aC5yYW5kb20oKSx0aGlzLnk9TWF0aC5yYW5kb20oKSx0aGlzLno9TWF0aC5yYW5kb20oKSx0aGlzLnc9TWF0aC5yYW5kb20oKSx0aGlzfX12c3QucHJvdG90eXBlLmlzVmVjdG9yND0hMDtjbGFzcyB4c3QgZXh0ZW5kcyByc3R7Y29uc3RydWN0b3IodCxlLG49e30pe3N1cGVyKCksdGhpcy53aWR0aD10LHRoaXMuaGVpZ2h0PWUsdGhpcy5kZXB0aD0xLHRoaXMuc2Npc3Nvcj1uZXcgdnN0KDAsMCx0LGUpLHRoaXMuc2Npc3NvclRlc3Q9ITEsdGhpcy52aWV3cG9ydD1uZXcgdnN0KDAsMCx0LGUpLHRoaXMudGV4dHVyZT1uZXcgQ3N0KHZvaWQgMCxuLm1hcHBpbmcsbi53cmFwUyxuLndyYXBULG4ubWFnRmlsdGVyLG4ubWluRmlsdGVyLG4uZm9ybWF0LG4udHlwZSxuLmFuaXNvdHJvcHksbi5lbmNvZGluZyksdGhpcy50ZXh0dXJlLmlzUmVuZGVyVGFyZ2V0VGV4dHVyZT0hMCx0aGlzLnRleHR1cmUuaW1hZ2U9e3dpZHRoOnQsaGVpZ2h0OmUsZGVwdGg6MX0sdGhpcy50ZXh0dXJlLmdlbmVyYXRlTWlwbWFwcz12b2lkIDAhPT1uLmdlbmVyYXRlTWlwbWFwcyYmbi5nZW5lcmF0ZU1pcG1hcHMsdGhpcy50ZXh0dXJlLm1pbkZpbHRlcj12b2lkIDAhPT1uLm1pbkZpbHRlcj9uLm1pbkZpbHRlcjpUcnQsdGhpcy5kZXB0aEJ1ZmZlcj12b2lkIDA9PT1uLmRlcHRoQnVmZmVyfHxuLmRlcHRoQnVmZmVyLHRoaXMuc3RlbmNpbEJ1ZmZlcj12b2lkIDAhPT1uLnN0ZW5jaWxCdWZmZXImJm4uc3RlbmNpbEJ1ZmZlcix0aGlzLmRlcHRoVGV4dHVyZT12b2lkIDAhPT1uLmRlcHRoVGV4dHVyZT9uLmRlcHRoVGV4dHVyZTpudWxsfXNldFRleHR1cmUodCl7dC5pbWFnZT17d2lkdGg6dGhpcy53aWR0aCxoZWlnaHQ6dGhpcy5oZWlnaHQsZGVwdGg6dGhpcy5kZXB0aH0sdGhpcy50ZXh0dXJlPXR9c2V0U2l6ZSh0LGUsbj0xKXt0aGlzLndpZHRoPT09dCYmdGhpcy5oZWlnaHQ9PT1lJiZ0aGlzLmRlcHRoPT09bnx8KHRoaXMud2lkdGg9dCx0aGlzLmhlaWdodD1lLHRoaXMuZGVwdGg9bix0aGlzLnRleHR1cmUuaW1hZ2Uud2lkdGg9dCx0aGlzLnRleHR1cmUuaW1hZ2UuaGVpZ2h0PWUsdGhpcy50ZXh0dXJlLmltYWdlLmRlcHRoPW4sdGhpcy5kaXNwb3NlKCkpLHRoaXMudmlld3BvcnQuc2V0KDAsMCx0LGUpLHRoaXMuc2Npc3Nvci5zZXQoMCwwLHQsZSl9Y2xvbmUoKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IpLmNvcHkodGhpcyl9Y29weSh0KXtyZXR1cm4gdGhpcy53aWR0aD10LndpZHRoLHRoaXMuaGVpZ2h0PXQuaGVpZ2h0LHRoaXMuZGVwdGg9dC5kZXB0aCx0aGlzLnZpZXdwb3J0LmNvcHkodC52aWV3cG9ydCksdGhpcy50ZXh0dXJlPXQudGV4dHVyZS5jbG9uZSgpLHRoaXMudGV4dHVyZS5pbWFnZT17Li4udGhpcy50ZXh0dXJlLmltYWdlfSx0aGlzLmRlcHRoQnVmZmVyPXQuZGVwdGhCdWZmZXIsdGhpcy5zdGVuY2lsQnVmZmVyPXQuc3RlbmNpbEJ1ZmZlcix0aGlzLmRlcHRoVGV4dHVyZT10LmRlcHRoVGV4dHVyZSx0aGlzfWRpc3Bvc2UoKXt0aGlzLmRpc3BhdGNoRXZlbnQoe3R5cGU6ImRpc3Bvc2UifSl9fXhzdC5wcm90b3R5cGUuaXNXZWJHTFJlbmRlclRhcmdldD0hMDsoY2xhc3MgZXh0ZW5kcyB4c3R7Y29uc3RydWN0b3IodCxlLG4pe3N1cGVyKHQsZSk7Y29uc3Qgbz10aGlzLnRleHR1cmU7dGhpcy50ZXh0dXJlPVtdO2ZvcihsZXQgdD0wO3Q8bjt0KyspdGhpcy50ZXh0dXJlW3RdPW8uY2xvbmUoKX1zZXRTaXplKHQsZSxuPTEpe2lmKHRoaXMud2lkdGghPT10fHx0aGlzLmhlaWdodCE9PWV8fHRoaXMuZGVwdGghPT1uKXt0aGlzLndpZHRoPXQsdGhpcy5oZWlnaHQ9ZSx0aGlzLmRlcHRoPW47Zm9yKGxldCBvPTAsaT10aGlzLnRleHR1cmUubGVuZ3RoO288aTtvKyspdGhpcy50ZXh0dXJlW29dLmltYWdlLndpZHRoPXQsdGhpcy50ZXh0dXJlW29dLmltYWdlLmhlaWdodD1lLHRoaXMudGV4dHVyZVtvXS5pbWFnZS5kZXB0aD1uO3RoaXMuZGlzcG9zZSgpfXJldHVybiB0aGlzLnZpZXdwb3J0LnNldCgwLDAsdCxlKSx0aGlzLnNjaXNzb3Iuc2V0KDAsMCx0LGUpLHRoaXN9Y29weSh0KXt0aGlzLmRpc3Bvc2UoKSx0aGlzLndpZHRoPXQud2lkdGgsdGhpcy5oZWlnaHQ9dC5oZWlnaHQsdGhpcy5kZXB0aD10LmRlcHRoLHRoaXMudmlld3BvcnQuc2V0KDAsMCx0aGlzLndpZHRoLHRoaXMuaGVpZ2h0KSx0aGlzLnNjaXNzb3Iuc2V0KDAsMCx0aGlzLndpZHRoLHRoaXMuaGVpZ2h0KSx0aGlzLmRlcHRoQnVmZmVyPXQuZGVwdGhCdWZmZXIsdGhpcy5zdGVuY2lsQnVmZmVyPXQuc3RlbmNpbEJ1ZmZlcix0aGlzLmRlcHRoVGV4dHVyZT10LmRlcHRoVGV4dHVyZSx0aGlzLnRleHR1cmUubGVuZ3RoPTA7Zm9yKGxldCBlPTAsbj10LnRleHR1cmUubGVuZ3RoO2U8bjtlKyspdGhpcy50ZXh0dXJlW2VdPXQudGV4dHVyZVtlXS5jbG9uZSgpO3JldHVybiB0aGlzfX0pLnByb3RvdHlwZS5pc1dlYkdMTXVsdGlwbGVSZW5kZXJUYXJnZXRzPSEwO2NsYXNzIE9zdCBleHRlbmRzIHhzdHtjb25zdHJ1Y3Rvcih0LGUsbil7c3VwZXIodCxlLG4pLHRoaXMuc2FtcGxlcz00fWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkuY2FsbCh0aGlzLHQpLHRoaXMuc2FtcGxlcz10LnNhbXBsZXMsdGhpc319T3N0LnByb3RvdHlwZS5pc1dlYkdMTXVsdGlzYW1wbGVSZW5kZXJUYXJnZXQ9ITA7Y2xhc3MgUHN0e2NvbnN0cnVjdG9yKHQ9MCxlPTAsbj0wLG89MSl7dGhpcy5feD10LHRoaXMuX3k9ZSx0aGlzLl96PW4sdGhpcy5fdz1vfXN0YXRpYyBzbGVycCh0LGUsbixvKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5RdWF0ZXJuaW9uOiBTdGF0aWMgLnNsZXJwKCkgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIHFtLnNsZXJwUXVhdGVybmlvbnMoIHFhLCBxYiwgdCApIGluc3RlYWQuIiksbi5zbGVycFF1YXRlcm5pb25zKHQsZSxvKX1zdGF0aWMgc2xlcnBGbGF0KHQsZSxuLG8saSxhLHIpe2xldCBzPW5bbyswXSxsPW5bbysxXSxjPW5bbysyXSxkPW5bbyszXTtjb25zdCBwPWlbYSswXSxtPWlbYSsxXSxmPWlbYSsyXSx1PWlbYSszXTtpZigwPT09cilyZXR1cm4gdFtlKzBdPXMsdFtlKzFdPWwsdFtlKzJdPWMsdm9pZCh0W2UrM109ZCk7aWYoMT09PXIpcmV0dXJuIHRbZSswXT1wLHRbZSsxXT1tLHRbZSsyXT1mLHZvaWQodFtlKzNdPXUpO2lmKGQhPT11fHxzIT09cHx8bCE9PW18fGMhPT1mKXtsZXQgdD0xLXI7Y29uc3QgZT1zKnArbCptK2MqZitkKnUsbj1lPj0wPzE6LTEsbz0xLWUqZTtpZihvPk51bWJlci5FUFNJTE9OKXtjb25zdCBpPU1hdGguc3FydChvKSxhPU1hdGguYXRhbjIoaSxlKm4pO3Q9TWF0aC5zaW4odCphKS9pLHI9TWF0aC5zaW4ociphKS9pfWNvbnN0IGk9cipuO2lmKHM9cyp0K3AqaSxsPWwqdCttKmksYz1jKnQrZippLGQ9ZCp0K3UqaSx0PT09MS1yKXtjb25zdCB0PTEvTWF0aC5zcXJ0KHMqcytsKmwrYypjK2QqZCk7cyo9dCxsKj10LGMqPXQsZCo9dH19dFtlXT1zLHRbZSsxXT1sLHRbZSsyXT1jLHRbZSszXT1kfXN0YXRpYyBtdWx0aXBseVF1YXRlcm5pb25zRmxhdCh0LGUsbixvLGksYSl7Y29uc3Qgcj1uW29dLHM9bltvKzFdLGw9bltvKzJdLGM9bltvKzNdLGQ9aVthXSxwPWlbYSsxXSxtPWlbYSsyXSxmPWlbYSszXTtyZXR1cm4gdFtlXT1yKmYrYypkK3MqbS1sKnAsdFtlKzFdPXMqZitjKnArbCpkLXIqbSx0W2UrMl09bCpmK2MqbStyKnAtcypkLHRbZSszXT1jKmYtcipkLXMqcC1sKm0sdH1nZXQgeCgpe3JldHVybiB0aGlzLl94fXNldCB4KHQpe3RoaXMuX3g9dCx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCl9Z2V0IHkoKXtyZXR1cm4gdGhpcy5feX1zZXQgeSh0KXt0aGlzLl95PXQsdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpfWdldCB6KCl7cmV0dXJuIHRoaXMuX3p9c2V0IHoodCl7dGhpcy5fej10LHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKX1nZXQgdygpe3JldHVybiB0aGlzLl93fXNldCB3KHQpe3RoaXMuX3c9dCx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCl9c2V0KHQsZSxuLG8pe3JldHVybiB0aGlzLl94PXQsdGhpcy5feT1lLHRoaXMuX3o9bix0aGlzLl93PW8sdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpLHRoaXN9Y2xvbmUoKXtyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IodGhpcy5feCx0aGlzLl95LHRoaXMuX3osdGhpcy5fdyl9Y29weSh0KXtyZXR1cm4gdGhpcy5feD10LngsdGhpcy5feT10LnksdGhpcy5fej10LnosdGhpcy5fdz10LncsdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpLHRoaXN9c2V0RnJvbUV1bGVyKHQsZSl7aWYoIXR8fCF0LmlzRXVsZXIpdGhyb3cgbmV3IEVycm9yKCJUSFJFRS5RdWF0ZXJuaW9uOiAuc2V0RnJvbUV1bGVyKCkgbm93IGV4cGVjdHMgYW4gRXVsZXIgcm90YXRpb24gcmF0aGVyIHRoYW4gYSBWZWN0b3IzIGFuZCBvcmRlci4iKTtjb25zdCBuPXQuX3gsbz10Ll95LGk9dC5feixhPXQuX29yZGVyLHI9TWF0aC5jb3Mscz1NYXRoLnNpbixsPXIobi8yKSxjPXIoby8yKSxkPXIoaS8yKSxwPXMobi8yKSxtPXMoby8yKSxmPXMoaS8yKTtzd2l0Y2goYSl7Y2FzZSJYWVoiOnRoaXMuX3g9cCpjKmQrbCptKmYsdGhpcy5feT1sKm0qZC1wKmMqZix0aGlzLl96PWwqYypmK3AqbSpkLHRoaXMuX3c9bCpjKmQtcCptKmY7YnJlYWs7Y2FzZSJZWFoiOnRoaXMuX3g9cCpjKmQrbCptKmYsdGhpcy5feT1sKm0qZC1wKmMqZix0aGlzLl96PWwqYypmLXAqbSpkLHRoaXMuX3c9bCpjKmQrcCptKmY7YnJlYWs7Y2FzZSJaWFkiOnRoaXMuX3g9cCpjKmQtbCptKmYsdGhpcy5feT1sKm0qZCtwKmMqZix0aGlzLl96PWwqYypmK3AqbSpkLHRoaXMuX3c9bCpjKmQtcCptKmY7YnJlYWs7Y2FzZSJaWVgiOnRoaXMuX3g9cCpjKmQtbCptKmYsdGhpcy5feT1sKm0qZCtwKmMqZix0aGlzLl96PWwqYypmLXAqbSpkLHRoaXMuX3c9bCpjKmQrcCptKmY7YnJlYWs7Y2FzZSJZWlgiOnRoaXMuX3g9cCpjKmQrbCptKmYsdGhpcy5feT1sKm0qZCtwKmMqZix0aGlzLl96PWwqYypmLXAqbSpkLHRoaXMuX3c9bCpjKmQtcCptKmY7YnJlYWs7Y2FzZSJYWlkiOnRoaXMuX3g9cCpjKmQtbCptKmYsdGhpcy5feT1sKm0qZC1wKmMqZix0aGlzLl96PWwqYypmK3AqbSpkLHRoaXMuX3c9bCpjKmQrcCptKmY7YnJlYWs7ZGVmYXVsdDpjb25zb2xlLndhcm4oIlRIUkVFLlF1YXRlcm5pb246IC5zZXRGcm9tRXVsZXIoKSBlbmNvdW50ZXJlZCBhbiB1bmtub3duIG9yZGVyOiAiK2EpfXJldHVybiExIT09ZSYmdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpLHRoaXN9c2V0RnJvbUF4aXNBbmdsZSh0LGUpe2NvbnN0IG49ZS8yLG89TWF0aC5zaW4obik7cmV0dXJuIHRoaXMuX3g9dC54Km8sdGhpcy5feT10Lnkqbyx0aGlzLl96PXQueipvLHRoaXMuX3c9TWF0aC5jb3MobiksdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpLHRoaXN9c2V0RnJvbVJvdGF0aW9uTWF0cml4KHQpe2NvbnN0IGU9dC5lbGVtZW50cyxuPWVbMF0sbz1lWzRdLGk9ZVs4XSxhPWVbMV0scj1lWzVdLHM9ZVs5XSxsPWVbMl0sYz1lWzZdLGQ9ZVsxMF0scD1uK3IrZDtpZihwPjApe2NvbnN0IHQ9LjUvTWF0aC5zcXJ0KHArMSk7dGhpcy5fdz0uMjUvdCx0aGlzLl94PShjLXMpKnQsdGhpcy5feT0oaS1sKSp0LHRoaXMuX3o9KGEtbykqdH1lbHNlIGlmKG4+ciYmbj5kKXtjb25zdCB0PTIqTWF0aC5zcXJ0KDErbi1yLWQpO3RoaXMuX3c9KGMtcykvdCx0aGlzLl94PS4yNSp0LHRoaXMuX3k9KG8rYSkvdCx0aGlzLl96PShpK2wpL3R9ZWxzZSBpZihyPmQpe2NvbnN0IHQ9MipNYXRoLnNxcnQoMStyLW4tZCk7dGhpcy5fdz0oaS1sKS90LHRoaXMuX3g9KG8rYSkvdCx0aGlzLl95PS4yNSp0LHRoaXMuX3o9KHMrYykvdH1lbHNle2NvbnN0IHQ9MipNYXRoLnNxcnQoMStkLW4tcik7dGhpcy5fdz0oYS1vKS90LHRoaXMuX3g9KGkrbCkvdCx0aGlzLl95PShzK2MpL3QsdGhpcy5fej0uMjUqdH1yZXR1cm4gdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpLHRoaXN9c2V0RnJvbVVuaXRWZWN0b3JzKHQsZSl7bGV0IG49dC5kb3QoZSkrMTtyZXR1cm4gbjxOdW1iZXIuRVBTSUxPTj8obj0wLE1hdGguYWJzKHQueCk+TWF0aC5hYnModC56KT8odGhpcy5feD0tdC55LHRoaXMuX3k9dC54LHRoaXMuX3o9MCx0aGlzLl93PW4pOih0aGlzLl94PTAsdGhpcy5feT0tdC56LHRoaXMuX3o9dC55LHRoaXMuX3c9bikpOih0aGlzLl94PXQueSplLnotdC56KmUueSx0aGlzLl95PXQueiplLngtdC54KmUueix0aGlzLl96PXQueCplLnktdC55KmUueCx0aGlzLl93PW4pLHRoaXMubm9ybWFsaXplKCl9YW5nbGVUbyh0KXtyZXR1cm4gMipNYXRoLmFjb3MoTWF0aC5hYnMocHN0KHRoaXMuZG90KHQpLC0xLDEpKSl9cm90YXRlVG93YXJkcyh0LGUpe2NvbnN0IG49dGhpcy5hbmdsZVRvKHQpO2lmKDA9PT1uKXJldHVybiB0aGlzO2NvbnN0IG89TWF0aC5taW4oMSxlL24pO3JldHVybiB0aGlzLnNsZXJwKHQsbyksdGhpc31pZGVudGl0eSgpe3JldHVybiB0aGlzLnNldCgwLDAsMCwxKX1pbnZlcnQoKXtyZXR1cm4gdGhpcy5jb25qdWdhdGUoKX1jb25qdWdhdGUoKXtyZXR1cm4gdGhpcy5feCo9LTEsdGhpcy5feSo9LTEsdGhpcy5feio9LTEsdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpLHRoaXN9ZG90KHQpe3JldHVybiB0aGlzLl94KnQuX3grdGhpcy5feSp0Ll95K3RoaXMuX3oqdC5feit0aGlzLl93KnQuX3d9bGVuZ3RoU3EoKXtyZXR1cm4gdGhpcy5feCp0aGlzLl94K3RoaXMuX3kqdGhpcy5feSt0aGlzLl96KnRoaXMuX3ordGhpcy5fdyp0aGlzLl93fWxlbmd0aCgpe3JldHVybiBNYXRoLnNxcnQodGhpcy5feCp0aGlzLl94K3RoaXMuX3kqdGhpcy5feSt0aGlzLl96KnRoaXMuX3ordGhpcy5fdyp0aGlzLl93KX1ub3JtYWxpemUoKXtsZXQgdD10aGlzLmxlbmd0aCgpO3JldHVybiAwPT09dD8odGhpcy5feD0wLHRoaXMuX3k9MCx0aGlzLl96PTAsdGhpcy5fdz0xKToodD0xL3QsdGhpcy5feD10aGlzLl94KnQsdGhpcy5feT10aGlzLl95KnQsdGhpcy5fej10aGlzLl96KnQsdGhpcy5fdz10aGlzLl93KnQpLHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKSx0aGlzfW11bHRpcGx5KHQsZSl7cmV0dXJuIHZvaWQgMCE9PWU/KGNvbnNvbGUud2FybigiVEhSRUUuUXVhdGVybmlvbjogLm11bHRpcGx5KCkgbm93IG9ubHkgYWNjZXB0cyBvbmUgYXJndW1lbnQuIFVzZSAubXVsdGlwbHlRdWF0ZXJuaW9ucyggYSwgYiApIGluc3RlYWQuIiksdGhpcy5tdWx0aXBseVF1YXRlcm5pb25zKHQsZSkpOnRoaXMubXVsdGlwbHlRdWF0ZXJuaW9ucyh0aGlzLHQpfXByZW11bHRpcGx5KHQpe3JldHVybiB0aGlzLm11bHRpcGx5UXVhdGVybmlvbnModCx0aGlzKX1tdWx0aXBseVF1YXRlcm5pb25zKHQsZSl7Y29uc3Qgbj10Ll94LG89dC5feSxpPXQuX3osYT10Ll93LHI9ZS5feCxzPWUuX3ksbD1lLl96LGM9ZS5fdztyZXR1cm4gdGhpcy5feD1uKmMrYSpyK28qbC1pKnMsdGhpcy5feT1vKmMrYSpzK2kqci1uKmwsdGhpcy5fej1pKmMrYSpsK24qcy1vKnIsdGhpcy5fdz1hKmMtbipyLW8qcy1pKmwsdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpLHRoaXN9c2xlcnAodCxlKXtpZigwPT09ZSlyZXR1cm4gdGhpcztpZigxPT09ZSlyZXR1cm4gdGhpcy5jb3B5KHQpO2NvbnN0IG49dGhpcy5feCxvPXRoaXMuX3ksaT10aGlzLl96LGE9dGhpcy5fdztsZXQgcj1hKnQuX3crbip0Ll94K28qdC5feStpKnQuX3o7aWYocjwwPyh0aGlzLl93PS10Ll93LHRoaXMuX3g9LXQuX3gsdGhpcy5feT0tdC5feSx0aGlzLl96PS10Ll96LHI9LXIpOnRoaXMuY29weSh0KSxyPj0xKXJldHVybiB0aGlzLl93PWEsdGhpcy5feD1uLHRoaXMuX3k9byx0aGlzLl96PWksdGhpcztjb25zdCBzPTEtcipyO2lmKHM8PU51bWJlci5FUFNJTE9OKXtjb25zdCB0PTEtZTtyZXR1cm4gdGhpcy5fdz10KmErZSp0aGlzLl93LHRoaXMuX3g9dCpuK2UqdGhpcy5feCx0aGlzLl95PXQqbytlKnRoaXMuX3ksdGhpcy5fej10KmkrZSp0aGlzLl96LHRoaXMubm9ybWFsaXplKCksdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpLHRoaXN9Y29uc3QgbD1NYXRoLnNxcnQocyksYz1NYXRoLmF0YW4yKGwsciksZD1NYXRoLnNpbigoMS1lKSpjKS9sLHA9TWF0aC5zaW4oZSpjKS9sO3JldHVybiB0aGlzLl93PWEqZCt0aGlzLl93KnAsdGhpcy5feD1uKmQrdGhpcy5feCpwLHRoaXMuX3k9bypkK3RoaXMuX3kqcCx0aGlzLl96PWkqZCt0aGlzLl96KnAsdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpLHRoaXN9c2xlcnBRdWF0ZXJuaW9ucyh0LGUsbil7dGhpcy5jb3B5KHQpLnNsZXJwKGUsbil9ZXF1YWxzKHQpe3JldHVybiB0Ll94PT09dGhpcy5feCYmdC5feT09PXRoaXMuX3kmJnQuX3o9PT10aGlzLl96JiZ0Ll93PT09dGhpcy5fd31mcm9tQXJyYXkodCxlPTApe3JldHVybiB0aGlzLl94PXRbZV0sdGhpcy5feT10W2UrMV0sdGhpcy5fej10W2UrMl0sdGhpcy5fdz10W2UrM10sdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpLHRoaXN9dG9BcnJheSh0PVtdLGU9MCl7cmV0dXJuIHRbZV09dGhpcy5feCx0W2UrMV09dGhpcy5feSx0W2UrMl09dGhpcy5feix0W2UrM109dGhpcy5fdyx0fWZyb21CdWZmZXJBdHRyaWJ1dGUodCxlKXtyZXR1cm4gdGhpcy5feD10LmdldFgoZSksdGhpcy5feT10LmdldFkoZSksdGhpcy5fej10LmdldFooZSksdGhpcy5fdz10LmdldFcoZSksdGhpc31fb25DaGFuZ2UodCl7cmV0dXJuIHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2s9dCx0aGlzfV9vbkNoYW5nZUNhbGxiYWNrKCl7fX1Qc3QucHJvdG90eXBlLmlzUXVhdGVybmlvbj0hMDtjbGFzcyB3c3R7Y29uc3RydWN0b3IodD0wLGU9MCxuPTApe3RoaXMueD10LHRoaXMueT1lLHRoaXMuej1ufXNldCh0LGUsbil7cmV0dXJuIHZvaWQgMD09PW4mJihuPXRoaXMueiksdGhpcy54PXQsdGhpcy55PWUsdGhpcy56PW4sdGhpc31zZXRTY2FsYXIodCl7cmV0dXJuIHRoaXMueD10LHRoaXMueT10LHRoaXMuej10LHRoaXN9c2V0WCh0KXtyZXR1cm4gdGhpcy54PXQsdGhpc31zZXRZKHQpe3JldHVybiB0aGlzLnk9dCx0aGlzfXNldFoodCl7cmV0dXJuIHRoaXMuej10LHRoaXN9c2V0Q29tcG9uZW50KHQsZSl7c3dpdGNoKHQpe2Nhc2UgMDp0aGlzLng9ZTticmVhaztjYXNlIDE6dGhpcy55PWU7YnJlYWs7Y2FzZSAyOnRoaXMuej1lO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJpbmRleCBpcyBvdXQgb2YgcmFuZ2U6ICIrdCl9cmV0dXJuIHRoaXN9Z2V0Q29tcG9uZW50KHQpe3N3aXRjaCh0KXtjYXNlIDA6cmV0dXJuIHRoaXMueDtjYXNlIDE6cmV0dXJuIHRoaXMueTtjYXNlIDI6cmV0dXJuIHRoaXMuejtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiaW5kZXggaXMgb3V0IG9mIHJhbmdlOiAiK3QpfX1jbG9uZSgpe3JldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3Rvcih0aGlzLngsdGhpcy55LHRoaXMueil9Y29weSh0KXtyZXR1cm4gdGhpcy54PXQueCx0aGlzLnk9dC55LHRoaXMuej10LnosdGhpc31hZGQodCxlKXtyZXR1cm4gdm9pZCAwIT09ZT8oY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IzOiAuYWRkKCkgbm93IG9ubHkgYWNjZXB0cyBvbmUgYXJndW1lbnQuIFVzZSAuYWRkVmVjdG9ycyggYSwgYiApIGluc3RlYWQuIiksdGhpcy5hZGRWZWN0b3JzKHQsZSkpOih0aGlzLngrPXQueCx0aGlzLnkrPXQueSx0aGlzLnorPXQueix0aGlzKX1hZGRTY2FsYXIodCl7cmV0dXJuIHRoaXMueCs9dCx0aGlzLnkrPXQsdGhpcy56Kz10LHRoaXN9YWRkVmVjdG9ycyh0LGUpe3JldHVybiB0aGlzLng9dC54K2UueCx0aGlzLnk9dC55K2UueSx0aGlzLno9dC56K2Uueix0aGlzfWFkZFNjYWxlZFZlY3Rvcih0LGUpe3JldHVybiB0aGlzLngrPXQueCplLHRoaXMueSs9dC55KmUsdGhpcy56Kz10LnoqZSx0aGlzfXN1Yih0LGUpe3JldHVybiB2b2lkIDAhPT1lPyhjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjM6IC5zdWIoKSBub3cgb25seSBhY2NlcHRzIG9uZSBhcmd1bWVudC4gVXNlIC5zdWJWZWN0b3JzKCBhLCBiICkgaW5zdGVhZC4iKSx0aGlzLnN1YlZlY3RvcnModCxlKSk6KHRoaXMueC09dC54LHRoaXMueS09dC55LHRoaXMuei09dC56LHRoaXMpfXN1YlNjYWxhcih0KXtyZXR1cm4gdGhpcy54LT10LHRoaXMueS09dCx0aGlzLnotPXQsdGhpc31zdWJWZWN0b3JzKHQsZSl7cmV0dXJuIHRoaXMueD10LngtZS54LHRoaXMueT10LnktZS55LHRoaXMuej10LnotZS56LHRoaXN9bXVsdGlwbHkodCxlKXtyZXR1cm4gdm9pZCAwIT09ZT8oY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IzOiAubXVsdGlwbHkoKSBub3cgb25seSBhY2NlcHRzIG9uZSBhcmd1bWVudC4gVXNlIC5tdWx0aXBseVZlY3RvcnMoIGEsIGIgKSBpbnN0ZWFkLiIpLHRoaXMubXVsdGlwbHlWZWN0b3JzKHQsZSkpOih0aGlzLngqPXQueCx0aGlzLnkqPXQueSx0aGlzLnoqPXQueix0aGlzKX1tdWx0aXBseVNjYWxhcih0KXtyZXR1cm4gdGhpcy54Kj10LHRoaXMueSo9dCx0aGlzLnoqPXQsdGhpc31tdWx0aXBseVZlY3RvcnModCxlKXtyZXR1cm4gdGhpcy54PXQueCplLngsdGhpcy55PXQueSplLnksdGhpcy56PXQueiplLnosdGhpc31hcHBseUV1bGVyKHQpe3JldHVybiB0JiZ0LmlzRXVsZXJ8fGNvbnNvbGUuZXJyb3IoIlRIUkVFLlZlY3RvcjM6IC5hcHBseUV1bGVyKCkgbm93IGV4cGVjdHMgYW4gRXVsZXIgcm90YXRpb24gcmF0aGVyIHRoYW4gYSBWZWN0b3IzIGFuZCBvcmRlci4iKSx0aGlzLmFwcGx5UXVhdGVybmlvbihTc3Quc2V0RnJvbUV1bGVyKHQpKX1hcHBseUF4aXNBbmdsZSh0LGUpe3JldHVybiB0aGlzLmFwcGx5UXVhdGVybmlvbihTc3Quc2V0RnJvbUF4aXNBbmdsZSh0LGUpKX1hcHBseU1hdHJpeDModCl7Y29uc3QgZT10aGlzLngsbj10aGlzLnksbz10aGlzLnosaT10LmVsZW1lbnRzO3JldHVybiB0aGlzLng9aVswXSplK2lbM10qbitpWzZdKm8sdGhpcy55PWlbMV0qZStpWzRdKm4raVs3XSpvLHRoaXMuej1pWzJdKmUraVs1XSpuK2lbOF0qbyx0aGlzfWFwcGx5Tm9ybWFsTWF0cml4KHQpe3JldHVybiB0aGlzLmFwcGx5TWF0cml4Myh0KS5ub3JtYWxpemUoKX1hcHBseU1hdHJpeDQodCl7Y29uc3QgZT10aGlzLngsbj10aGlzLnksbz10aGlzLnosaT10LmVsZW1lbnRzLGE9MS8oaVszXSplK2lbN10qbitpWzExXSpvK2lbMTVdKTtyZXR1cm4gdGhpcy54PShpWzBdKmUraVs0XSpuK2lbOF0qbytpWzEyXSkqYSx0aGlzLnk9KGlbMV0qZStpWzVdKm4raVs5XSpvK2lbMTNdKSphLHRoaXMuej0oaVsyXSplK2lbNl0qbitpWzEwXSpvK2lbMTRdKSphLHRoaXN9YXBwbHlRdWF0ZXJuaW9uKHQpe2NvbnN0IGU9dGhpcy54LG49dGhpcy55LG89dGhpcy56LGk9dC54LGE9dC55LHI9dC56LHM9dC53LGw9cyplK2Eqby1yKm4sYz1zKm4rciplLWkqbyxkPXMqbytpKm4tYSplLHA9LWkqZS1hKm4tcipvO3JldHVybiB0aGlzLng9bCpzK3AqLWkrYyotci1kKi1hLHRoaXMueT1jKnMrcCotYStkKi1pLWwqLXIsdGhpcy56PWQqcytwKi1yK2wqLWEtYyotaSx0aGlzfXByb2plY3QodCl7cmV0dXJuIHRoaXMuYXBwbHlNYXRyaXg0KHQubWF0cml4V29ybGRJbnZlcnNlKS5hcHBseU1hdHJpeDQodC5wcm9qZWN0aW9uTWF0cml4KX11bnByb2plY3QodCl7cmV0dXJuIHRoaXMuYXBwbHlNYXRyaXg0KHQucHJvamVjdGlvbk1hdHJpeEludmVyc2UpLmFwcGx5TWF0cml4NCh0Lm1hdHJpeFdvcmxkKX10cmFuc2Zvcm1EaXJlY3Rpb24odCl7Y29uc3QgZT10aGlzLngsbj10aGlzLnksbz10aGlzLnosaT10LmVsZW1lbnRzO3JldHVybiB0aGlzLng9aVswXSplK2lbNF0qbitpWzhdKm8sdGhpcy55PWlbMV0qZStpWzVdKm4raVs5XSpvLHRoaXMuej1pWzJdKmUraVs2XSpuK2lbMTBdKm8sdGhpcy5ub3JtYWxpemUoKX1kaXZpZGUodCl7cmV0dXJuIHRoaXMueC89dC54LHRoaXMueS89dC55LHRoaXMuei89dC56LHRoaXN9ZGl2aWRlU2NhbGFyKHQpe3JldHVybiB0aGlzLm11bHRpcGx5U2NhbGFyKDEvdCl9bWluKHQpe3JldHVybiB0aGlzLng9TWF0aC5taW4odGhpcy54LHQueCksdGhpcy55PU1hdGgubWluKHRoaXMueSx0LnkpLHRoaXMuej1NYXRoLm1pbih0aGlzLnosdC56KSx0aGlzfW1heCh0KXtyZXR1cm4gdGhpcy54PU1hdGgubWF4KHRoaXMueCx0LngpLHRoaXMueT1NYXRoLm1heCh0aGlzLnksdC55KSx0aGlzLno9TWF0aC5tYXgodGhpcy56LHQueiksdGhpc31jbGFtcCh0LGUpe3JldHVybiB0aGlzLng9TWF0aC5tYXgodC54LE1hdGgubWluKGUueCx0aGlzLngpKSx0aGlzLnk9TWF0aC5tYXgodC55LE1hdGgubWluKGUueSx0aGlzLnkpKSx0aGlzLno9TWF0aC5tYXgodC56LE1hdGgubWluKGUueix0aGlzLnopKSx0aGlzfWNsYW1wU2NhbGFyKHQsZSl7cmV0dXJuIHRoaXMueD1NYXRoLm1heCh0LE1hdGgubWluKGUsdGhpcy54KSksdGhpcy55PU1hdGgubWF4KHQsTWF0aC5taW4oZSx0aGlzLnkpKSx0aGlzLno9TWF0aC5tYXgodCxNYXRoLm1pbihlLHRoaXMueikpLHRoaXN9Y2xhbXBMZW5ndGgodCxlKXtjb25zdCBuPXRoaXMubGVuZ3RoKCk7cmV0dXJuIHRoaXMuZGl2aWRlU2NhbGFyKG58fDEpLm11bHRpcGx5U2NhbGFyKE1hdGgubWF4KHQsTWF0aC5taW4oZSxuKSkpfWZsb29yKCl7cmV0dXJuIHRoaXMueD1NYXRoLmZsb29yKHRoaXMueCksdGhpcy55PU1hdGguZmxvb3IodGhpcy55KSx0aGlzLno9TWF0aC5mbG9vcih0aGlzLnopLHRoaXN9Y2VpbCgpe3JldHVybiB0aGlzLng9TWF0aC5jZWlsKHRoaXMueCksdGhpcy55PU1hdGguY2VpbCh0aGlzLnkpLHRoaXMuej1NYXRoLmNlaWwodGhpcy56KSx0aGlzfXJvdW5kKCl7cmV0dXJuIHRoaXMueD1NYXRoLnJvdW5kKHRoaXMueCksdGhpcy55PU1hdGgucm91bmQodGhpcy55KSx0aGlzLno9TWF0aC5yb3VuZCh0aGlzLnopLHRoaXN9cm91bmRUb1plcm8oKXtyZXR1cm4gdGhpcy54PXRoaXMueDwwP01hdGguY2VpbCh0aGlzLngpOk1hdGguZmxvb3IodGhpcy54KSx0aGlzLnk9dGhpcy55PDA/TWF0aC5jZWlsKHRoaXMueSk6TWF0aC5mbG9vcih0aGlzLnkpLHRoaXMuej10aGlzLno8MD9NYXRoLmNlaWwodGhpcy56KTpNYXRoLmZsb29yKHRoaXMueiksdGhpc31uZWdhdGUoKXtyZXR1cm4gdGhpcy54PS10aGlzLngsdGhpcy55PS10aGlzLnksdGhpcy56PS10aGlzLnosdGhpc31kb3QodCl7cmV0dXJuIHRoaXMueCp0LngrdGhpcy55KnQueSt0aGlzLnoqdC56fWxlbmd0aFNxKCl7cmV0dXJuIHRoaXMueCp0aGlzLngrdGhpcy55KnRoaXMueSt0aGlzLnoqdGhpcy56fWxlbmd0aCgpe3JldHVybiBNYXRoLnNxcnQodGhpcy54KnRoaXMueCt0aGlzLnkqdGhpcy55K3RoaXMueip0aGlzLnopfW1hbmhhdHRhbkxlbmd0aCgpe3JldHVybiBNYXRoLmFicyh0aGlzLngpK01hdGguYWJzKHRoaXMueSkrTWF0aC5hYnModGhpcy56KX1ub3JtYWxpemUoKXtyZXR1cm4gdGhpcy5kaXZpZGVTY2FsYXIodGhpcy5sZW5ndGgoKXx8MSl9c2V0TGVuZ3RoKHQpe3JldHVybiB0aGlzLm5vcm1hbGl6ZSgpLm11bHRpcGx5U2NhbGFyKHQpfWxlcnAodCxlKXtyZXR1cm4gdGhpcy54Kz0odC54LXRoaXMueCkqZSx0aGlzLnkrPSh0LnktdGhpcy55KSplLHRoaXMueis9KHQuei10aGlzLnopKmUsdGhpc31sZXJwVmVjdG9ycyh0LGUsbil7cmV0dXJuIHRoaXMueD10LngrKGUueC10LngpKm4sdGhpcy55PXQueSsoZS55LXQueSkqbix0aGlzLno9dC56KyhlLnotdC56KSpuLHRoaXN9Y3Jvc3ModCxlKXtyZXR1cm4gdm9pZCAwIT09ZT8oY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IzOiAuY3Jvc3MoKSBub3cgb25seSBhY2NlcHRzIG9uZSBhcmd1bWVudC4gVXNlIC5jcm9zc1ZlY3RvcnMoIGEsIGIgKSBpbnN0ZWFkLiIpLHRoaXMuY3Jvc3NWZWN0b3JzKHQsZSkpOnRoaXMuY3Jvc3NWZWN0b3JzKHRoaXMsdCl9Y3Jvc3NWZWN0b3JzKHQsZSl7Y29uc3Qgbj10Lngsbz10LnksaT10LnosYT1lLngscj1lLnkscz1lLno7cmV0dXJuIHRoaXMueD1vKnMtaSpyLHRoaXMueT1pKmEtbipzLHRoaXMuej1uKnItbyphLHRoaXN9cHJvamVjdE9uVmVjdG9yKHQpe2NvbnN0IGU9dC5sZW5ndGhTcSgpO2lmKDA9PT1lKXJldHVybiB0aGlzLnNldCgwLDAsMCk7Y29uc3Qgbj10LmRvdCh0aGlzKS9lO3JldHVybiB0aGlzLmNvcHkodCkubXVsdGlwbHlTY2FsYXIobil9cHJvamVjdE9uUGxhbmUodCl7cmV0dXJuIGtzdC5jb3B5KHRoaXMpLnByb2plY3RPblZlY3Rvcih0KSx0aGlzLnN1Yihrc3QpfXJlZmxlY3QodCl7cmV0dXJuIHRoaXMuc3ViKGtzdC5jb3B5KHQpLm11bHRpcGx5U2NhbGFyKDIqdGhpcy5kb3QodCkpKX1hbmdsZVRvKHQpe2NvbnN0IGU9TWF0aC5zcXJ0KHRoaXMubGVuZ3RoU3EoKSp0Lmxlbmd0aFNxKCkpO2lmKDA9PT1lKXJldHVybiBNYXRoLlBJLzI7Y29uc3Qgbj10aGlzLmRvdCh0KS9lO3JldHVybiBNYXRoLmFjb3MocHN0KG4sLTEsMSkpfWRpc3RhbmNlVG8odCl7cmV0dXJuIE1hdGguc3FydCh0aGlzLmRpc3RhbmNlVG9TcXVhcmVkKHQpKX1kaXN0YW5jZVRvU3F1YXJlZCh0KXtjb25zdCBlPXRoaXMueC10Lngsbj10aGlzLnktdC55LG89dGhpcy56LXQuejtyZXR1cm4gZSplK24qbitvKm99bWFuaGF0dGFuRGlzdGFuY2VUbyh0KXtyZXR1cm4gTWF0aC5hYnModGhpcy54LXQueCkrTWF0aC5hYnModGhpcy55LXQueSkrTWF0aC5hYnModGhpcy56LXQueil9c2V0RnJvbVNwaGVyaWNhbCh0KXtyZXR1cm4gdGhpcy5zZXRGcm9tU3BoZXJpY2FsQ29vcmRzKHQucmFkaXVzLHQucGhpLHQudGhldGEpfXNldEZyb21TcGhlcmljYWxDb29yZHModCxlLG4pe2NvbnN0IG89TWF0aC5zaW4oZSkqdDtyZXR1cm4gdGhpcy54PW8qTWF0aC5zaW4obiksdGhpcy55PU1hdGguY29zKGUpKnQsdGhpcy56PW8qTWF0aC5jb3MobiksdGhpc31zZXRGcm9tQ3lsaW5kcmljYWwodCl7cmV0dXJuIHRoaXMuc2V0RnJvbUN5bGluZHJpY2FsQ29vcmRzKHQucmFkaXVzLHQudGhldGEsdC55KX1zZXRGcm9tQ3lsaW5kcmljYWxDb29yZHModCxlLG4pe3JldHVybiB0aGlzLng9dCpNYXRoLnNpbihlKSx0aGlzLnk9bix0aGlzLno9dCpNYXRoLmNvcyhlKSx0aGlzfXNldEZyb21NYXRyaXhQb3NpdGlvbih0KXtjb25zdCBlPXQuZWxlbWVudHM7cmV0dXJuIHRoaXMueD1lWzEyXSx0aGlzLnk9ZVsxM10sdGhpcy56PWVbMTRdLHRoaXN9c2V0RnJvbU1hdHJpeFNjYWxlKHQpe2NvbnN0IGU9dGhpcy5zZXRGcm9tTWF0cml4Q29sdW1uKHQsMCkubGVuZ3RoKCksbj10aGlzLnNldEZyb21NYXRyaXhDb2x1bW4odCwxKS5sZW5ndGgoKSxvPXRoaXMuc2V0RnJvbU1hdHJpeENvbHVtbih0LDIpLmxlbmd0aCgpO3JldHVybiB0aGlzLng9ZSx0aGlzLnk9bix0aGlzLno9byx0aGlzfXNldEZyb21NYXRyaXhDb2x1bW4odCxlKXtyZXR1cm4gdGhpcy5mcm9tQXJyYXkodC5lbGVtZW50cyw0KmUpfXNldEZyb21NYXRyaXgzQ29sdW1uKHQsZSl7cmV0dXJuIHRoaXMuZnJvbUFycmF5KHQuZWxlbWVudHMsMyplKX1lcXVhbHModCl7cmV0dXJuIHQueD09PXRoaXMueCYmdC55PT09dGhpcy55JiZ0Lno9PT10aGlzLnp9ZnJvbUFycmF5KHQsZT0wKXtyZXR1cm4gdGhpcy54PXRbZV0sdGhpcy55PXRbZSsxXSx0aGlzLno9dFtlKzJdLHRoaXN9dG9BcnJheSh0PVtdLGU9MCl7cmV0dXJuIHRbZV09dGhpcy54LHRbZSsxXT10aGlzLnksdFtlKzJdPXRoaXMueix0fWZyb21CdWZmZXJBdHRyaWJ1dGUodCxlLG4pe3JldHVybiB2b2lkIDAhPT1uJiZjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjM6IG9mZnNldCBoYXMgYmVlbiByZW1vdmVkIGZyb20gLmZyb21CdWZmZXJBdHRyaWJ1dGUoKS4iKSx0aGlzLng9dC5nZXRYKGUpLHRoaXMueT10LmdldFkoZSksdGhpcy56PXQuZ2V0WihlKSx0aGlzfXJhbmRvbSgpe3JldHVybiB0aGlzLng9TWF0aC5yYW5kb20oKSx0aGlzLnk9TWF0aC5yYW5kb20oKSx0aGlzLno9TWF0aC5yYW5kb20oKSx0aGlzfX13c3QucHJvdG90eXBlLmlzVmVjdG9yMz0hMDtjb25zdCBrc3Q9bmV3IHdzdCxTc3Q9bmV3IFBzdDtjbGFzcyBEc3R7Y29uc3RydWN0b3IodD1uZXcgd3N0KDEvMCwxLzAsMS8wKSxlPW5ldyB3c3QoLTEvMCwtMS8wLC0xLzApKXt0aGlzLm1pbj10LHRoaXMubWF4PWV9c2V0KHQsZSl7cmV0dXJuIHRoaXMubWluLmNvcHkodCksdGhpcy5tYXguY29weShlKSx0aGlzfXNldEZyb21BcnJheSh0KXtsZXQgZT0xLzAsbj0xLzAsbz0xLzAsaT0tMS8wLGE9LTEvMCxyPS0xLzA7Zm9yKGxldCBzPTAsbD10Lmxlbmd0aDtzPGw7cys9Myl7Y29uc3QgbD10W3NdLGM9dFtzKzFdLGQ9dFtzKzJdO2w8ZSYmKGU9bCksYzxuJiYobj1jKSxkPG8mJihvPWQpLGw+aSYmKGk9bCksYz5hJiYoYT1jKSxkPnImJihyPWQpfXJldHVybiB0aGlzLm1pbi5zZXQoZSxuLG8pLHRoaXMubWF4LnNldChpLGEsciksdGhpc31zZXRGcm9tQnVmZmVyQXR0cmlidXRlKHQpe2xldCBlPTEvMCxuPTEvMCxvPTEvMCxpPS0xLzAsYT0tMS8wLHI9LTEvMDtmb3IobGV0IHM9MCxsPXQuY291bnQ7czxsO3MrKyl7Y29uc3QgbD10LmdldFgocyksYz10LmdldFkocyksZD10LmdldFoocyk7bDxlJiYoZT1sKSxjPG4mJihuPWMpLGQ8byYmKG89ZCksbD5pJiYoaT1sKSxjPmEmJihhPWMpLGQ+ciYmKHI9ZCl9cmV0dXJuIHRoaXMubWluLnNldChlLG4sbyksdGhpcy5tYXguc2V0KGksYSxyKSx0aGlzfXNldEZyb21Qb2ludHModCl7dGhpcy5tYWtlRW1wdHkoKTtmb3IobGV0IGU9MCxuPXQubGVuZ3RoO2U8bjtlKyspdGhpcy5leHBhbmRCeVBvaW50KHRbZV0pO3JldHVybiB0aGlzfXNldEZyb21DZW50ZXJBbmRTaXplKHQsZSl7Y29uc3Qgbj1Fc3QuY29weShlKS5tdWx0aXBseVNjYWxhciguNSk7cmV0dXJuIHRoaXMubWluLmNvcHkodCkuc3ViKG4pLHRoaXMubWF4LmNvcHkodCkuYWRkKG4pLHRoaXN9c2V0RnJvbU9iamVjdCh0KXtyZXR1cm4gdGhpcy5tYWtlRW1wdHkoKSx0aGlzLmV4cGFuZEJ5T2JqZWN0KHQpfWNsb25lKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMpfWNvcHkodCl7cmV0dXJuIHRoaXMubWluLmNvcHkodC5taW4pLHRoaXMubWF4LmNvcHkodC5tYXgpLHRoaXN9bWFrZUVtcHR5KCl7cmV0dXJuIHRoaXMubWluLng9dGhpcy5taW4ueT10aGlzLm1pbi56PTEvMCx0aGlzLm1heC54PXRoaXMubWF4Lnk9dGhpcy5tYXguej0tMS8wLHRoaXN9aXNFbXB0eSgpe3JldHVybiB0aGlzLm1heC54PHRoaXMubWluLnh8fHRoaXMubWF4Lnk8dGhpcy5taW4ueXx8dGhpcy5tYXguejx0aGlzLm1pbi56fWdldENlbnRlcih0KXtyZXR1cm4gdGhpcy5pc0VtcHR5KCk/dC5zZXQoMCwwLDApOnQuYWRkVmVjdG9ycyh0aGlzLm1pbix0aGlzLm1heCkubXVsdGlwbHlTY2FsYXIoLjUpfWdldFNpemUodCl7cmV0dXJuIHRoaXMuaXNFbXB0eSgpP3Quc2V0KDAsMCwwKTp0LnN1YlZlY3RvcnModGhpcy5tYXgsdGhpcy5taW4pfWV4cGFuZEJ5UG9pbnQodCl7cmV0dXJuIHRoaXMubWluLm1pbih0KSx0aGlzLm1heC5tYXgodCksdGhpc31leHBhbmRCeVZlY3Rvcih0KXtyZXR1cm4gdGhpcy5taW4uc3ViKHQpLHRoaXMubWF4LmFkZCh0KSx0aGlzfWV4cGFuZEJ5U2NhbGFyKHQpe3JldHVybiB0aGlzLm1pbi5hZGRTY2FsYXIoLXQpLHRoaXMubWF4LmFkZFNjYWxhcih0KSx0aGlzfWV4cGFuZEJ5T2JqZWN0KHQpe3QudXBkYXRlV29ybGRNYXRyaXgoITEsITEpO2NvbnN0IGU9dC5nZW9tZXRyeTt2b2lkIDAhPT1lJiYobnVsbD09PWUuYm91bmRpbmdCb3gmJmUuY29tcHV0ZUJvdW5kaW5nQm94KCksQXN0LmNvcHkoZS5ib3VuZGluZ0JveCksQXN0LmFwcGx5TWF0cml4NCh0Lm1hdHJpeFdvcmxkKSx0aGlzLnVuaW9uKEFzdCkpO2NvbnN0IG49dC5jaGlsZHJlbjtmb3IobGV0IHQ9MCxlPW4ubGVuZ3RoO3Q8ZTt0KyspdGhpcy5leHBhbmRCeU9iamVjdChuW3RdKTtyZXR1cm4gdGhpc31jb250YWluc1BvaW50KHQpe3JldHVybiEodC54PHRoaXMubWluLnh8fHQueD50aGlzLm1heC54fHx0Lnk8dGhpcy5taW4ueXx8dC55PnRoaXMubWF4Lnl8fHQuejx0aGlzLm1pbi56fHx0Lno+dGhpcy5tYXgueil9Y29udGFpbnNCb3godCl7cmV0dXJuIHRoaXMubWluLng8PXQubWluLngmJnQubWF4Lng8PXRoaXMubWF4LngmJnRoaXMubWluLnk8PXQubWluLnkmJnQubWF4Lnk8PXRoaXMubWF4LnkmJnRoaXMubWluLno8PXQubWluLnomJnQubWF4Lno8PXRoaXMubWF4Lnp9Z2V0UGFyYW1ldGVyKHQsZSl7cmV0dXJuIGUuc2V0KCh0LngtdGhpcy5taW4ueCkvKHRoaXMubWF4LngtdGhpcy5taW4ueCksKHQueS10aGlzLm1pbi55KS8odGhpcy5tYXgueS10aGlzLm1pbi55KSwodC56LXRoaXMubWluLnopLyh0aGlzLm1heC56LXRoaXMubWluLnopKX1pbnRlcnNlY3RzQm94KHQpe3JldHVybiEodC5tYXgueDx0aGlzLm1pbi54fHx0Lm1pbi54PnRoaXMubWF4Lnh8fHQubWF4Lnk8dGhpcy5taW4ueXx8dC5taW4ueT50aGlzLm1heC55fHx0Lm1heC56PHRoaXMubWluLnp8fHQubWluLno+dGhpcy5tYXgueil9aW50ZXJzZWN0c1NwaGVyZSh0KXtyZXR1cm4gdGhpcy5jbGFtcFBvaW50KHQuY2VudGVyLEVzdCksRXN0LmRpc3RhbmNlVG9TcXVhcmVkKHQuY2VudGVyKTw9dC5yYWRpdXMqdC5yYWRpdXN9aW50ZXJzZWN0c1BsYW5lKHQpe2xldCBlLG47cmV0dXJuIHQubm9ybWFsLng+MD8oZT10Lm5vcm1hbC54KnRoaXMubWluLngsbj10Lm5vcm1hbC54KnRoaXMubWF4LngpOihlPXQubm9ybWFsLngqdGhpcy5tYXgueCxuPXQubm9ybWFsLngqdGhpcy5taW4ueCksdC5ub3JtYWwueT4wPyhlKz10Lm5vcm1hbC55KnRoaXMubWluLnksbis9dC5ub3JtYWwueSp0aGlzLm1heC55KTooZSs9dC5ub3JtYWwueSp0aGlzLm1heC55LG4rPXQubm9ybWFsLnkqdGhpcy5taW4ueSksdC5ub3JtYWwuej4wPyhlKz10Lm5vcm1hbC56KnRoaXMubWluLnosbis9dC5ub3JtYWwueip0aGlzLm1heC56KTooZSs9dC5ub3JtYWwueip0aGlzLm1heC56LG4rPXQubm9ybWFsLnoqdGhpcy5taW4ueiksZTw9LXQuY29uc3RhbnQmJm4+PS10LmNvbnN0YW50fWludGVyc2VjdHNUcmlhbmdsZSh0KXtpZih0aGlzLmlzRW1wdHkoKSlyZXR1cm4hMTt0aGlzLmdldENlbnRlcihMc3QpLEJzdC5zdWJWZWN0b3JzKHRoaXMubWF4LExzdCksVHN0LnN1YlZlY3RvcnModC5hLExzdCksTnN0LnN1YlZlY3RvcnModC5iLExzdCksenN0LnN1YlZlY3RvcnModC5jLExzdCksSXN0LnN1YlZlY3RvcnMoTnN0LFRzdCksSHN0LnN1YlZlY3RvcnMoenN0LE5zdCksRnN0LnN1YlZlY3RvcnMoVHN0LHpzdCk7bGV0IGU9WzAsLUlzdC56LElzdC55LDAsLUhzdC56LEhzdC55LDAsLUZzdC56LEZzdC55LElzdC56LDAsLUlzdC54LEhzdC56LDAsLUhzdC54LEZzdC56LDAsLUZzdC54LC1Jc3QueSxJc3QueCwwLC1Ic3QueSxIc3QueCwwLC1Gc3QueSxGc3QueCwwXTtyZXR1cm4hIVVzdChlLFRzdCxOc3QsenN0LEJzdCkmJihlPVsxLDAsMCwwLDEsMCwwLDAsMV0sISFVc3QoZSxUc3QsTnN0LHpzdCxCc3QpJiYoVnN0LmNyb3NzVmVjdG9ycyhJc3QsSHN0KSxlPVtWc3QueCxWc3QueSxWc3Quel0sVXN0KGUsVHN0LE5zdCx6c3QsQnN0KSkpfWNsYW1wUG9pbnQodCxlKXtyZXR1cm4gZS5jb3B5KHQpLmNsYW1wKHRoaXMubWluLHRoaXMubWF4KX1kaXN0YW5jZVRvUG9pbnQodCl7cmV0dXJuIEVzdC5jb3B5KHQpLmNsYW1wKHRoaXMubWluLHRoaXMubWF4KS5zdWIodCkubGVuZ3RoKCl9Z2V0Qm91bmRpbmdTcGhlcmUodCl7cmV0dXJuIHRoaXMuZ2V0Q2VudGVyKHQuY2VudGVyKSx0LnJhZGl1cz0uNSp0aGlzLmdldFNpemUoRXN0KS5sZW5ndGgoKSx0fWludGVyc2VjdCh0KXtyZXR1cm4gdGhpcy5taW4ubWF4KHQubWluKSx0aGlzLm1heC5taW4odC5tYXgpLHRoaXMuaXNFbXB0eSgpJiZ0aGlzLm1ha2VFbXB0eSgpLHRoaXN9dW5pb24odCl7cmV0dXJuIHRoaXMubWluLm1pbih0Lm1pbiksdGhpcy5tYXgubWF4KHQubWF4KSx0aGlzfWFwcGx5TWF0cml4NCh0KXtyZXR1cm4gdGhpcy5pc0VtcHR5KCl8fChSc3RbMF0uc2V0KHRoaXMubWluLngsdGhpcy5taW4ueSx0aGlzLm1pbi56KS5hcHBseU1hdHJpeDQodCksUnN0WzFdLnNldCh0aGlzLm1pbi54LHRoaXMubWluLnksdGhpcy5tYXgueikuYXBwbHlNYXRyaXg0KHQpLFJzdFsyXS5zZXQodGhpcy5taW4ueCx0aGlzLm1heC55LHRoaXMubWluLnopLmFwcGx5TWF0cml4NCh0KSxSc3RbM10uc2V0KHRoaXMubWluLngsdGhpcy5tYXgueSx0aGlzLm1heC56KS5hcHBseU1hdHJpeDQodCksUnN0WzRdLnNldCh0aGlzLm1heC54LHRoaXMubWluLnksdGhpcy5taW4ueikuYXBwbHlNYXRyaXg0KHQpLFJzdFs1XS5zZXQodGhpcy5tYXgueCx0aGlzLm1pbi55LHRoaXMubWF4LnopLmFwcGx5TWF0cml4NCh0KSxSc3RbNl0uc2V0KHRoaXMubWF4LngsdGhpcy5tYXgueSx0aGlzLm1pbi56KS5hcHBseU1hdHJpeDQodCksUnN0WzddLnNldCh0aGlzLm1heC54LHRoaXMubWF4LnksdGhpcy5tYXgueikuYXBwbHlNYXRyaXg0KHQpLHRoaXMuc2V0RnJvbVBvaW50cyhSc3QpKSx0aGlzfXRyYW5zbGF0ZSh0KXtyZXR1cm4gdGhpcy5taW4uYWRkKHQpLHRoaXMubWF4LmFkZCh0KSx0aGlzfWVxdWFscyh0KXtyZXR1cm4gdC5taW4uZXF1YWxzKHRoaXMubWluKSYmdC5tYXguZXF1YWxzKHRoaXMubWF4KX19RHN0LnByb3RvdHlwZS5pc0JveDM9ITA7Y29uc3QgUnN0PVtuZXcgd3N0LG5ldyB3c3QsbmV3IHdzdCxuZXcgd3N0LG5ldyB3c3QsbmV3IHdzdCxuZXcgd3N0LG5ldyB3c3RdLEVzdD1uZXcgd3N0LEFzdD1uZXcgRHN0LFRzdD1uZXcgd3N0LE5zdD1uZXcgd3N0LHpzdD1uZXcgd3N0LElzdD1uZXcgd3N0LEhzdD1uZXcgd3N0LEZzdD1uZXcgd3N0LExzdD1uZXcgd3N0LEJzdD1uZXcgd3N0LFZzdD1uZXcgd3N0LGpzdD1uZXcgd3N0O2Z1bmN0aW9uIFVzdCh0LGUsbixvLGkpe2ZvcihsZXQgYT0wLHI9dC5sZW5ndGgtMzthPD1yO2ErPTMpe2pzdC5mcm9tQXJyYXkodCxhKTtjb25zdCByPWkueCpNYXRoLmFicyhqc3QueCkraS55Kk1hdGguYWJzKGpzdC55KStpLnoqTWF0aC5hYnMoanN0LnopLHM9ZS5kb3QoanN0KSxsPW4uZG90KGpzdCksYz1vLmRvdChqc3QpO2lmKE1hdGgubWF4KC1NYXRoLm1heChzLGwsYyksTWF0aC5taW4ocyxsLGMpKT5yKXJldHVybiExfXJldHVybiEwfWNvbnN0IFdzdD1uZXcgRHN0LEdzdD1uZXcgd3N0LFlzdD1uZXcgd3N0LHFzdD1uZXcgd3N0O2NsYXNzIFpzdHtjb25zdHJ1Y3Rvcih0PW5ldyB3c3QsZT0tMSl7dGhpcy5jZW50ZXI9dCx0aGlzLnJhZGl1cz1lfXNldCh0LGUpe3JldHVybiB0aGlzLmNlbnRlci5jb3B5KHQpLHRoaXMucmFkaXVzPWUsdGhpc31zZXRGcm9tUG9pbnRzKHQsZSl7Y29uc3Qgbj10aGlzLmNlbnRlcjt2b2lkIDAhPT1lP24uY29weShlKTpXc3Quc2V0RnJvbVBvaW50cyh0KS5nZXRDZW50ZXIobik7bGV0IG89MDtmb3IobGV0IGU9MCxpPXQubGVuZ3RoO2U8aTtlKyspbz1NYXRoLm1heChvLG4uZGlzdGFuY2VUb1NxdWFyZWQodFtlXSkpO3JldHVybiB0aGlzLnJhZGl1cz1NYXRoLnNxcnQobyksdGhpc31jb3B5KHQpe3JldHVybiB0aGlzLmNlbnRlci5jb3B5KHQuY2VudGVyKSx0aGlzLnJhZGl1cz10LnJhZGl1cyx0aGlzfWlzRW1wdHkoKXtyZXR1cm4gdGhpcy5yYWRpdXM8MH1tYWtlRW1wdHkoKXtyZXR1cm4gdGhpcy5jZW50ZXIuc2V0KDAsMCwwKSx0aGlzLnJhZGl1cz0tMSx0aGlzfWNvbnRhaW5zUG9pbnQodCl7cmV0dXJuIHQuZGlzdGFuY2VUb1NxdWFyZWQodGhpcy5jZW50ZXIpPD10aGlzLnJhZGl1cyp0aGlzLnJhZGl1c31kaXN0YW5jZVRvUG9pbnQodCl7cmV0dXJuIHQuZGlzdGFuY2VUbyh0aGlzLmNlbnRlciktdGhpcy5yYWRpdXN9aW50ZXJzZWN0c1NwaGVyZSh0KXtjb25zdCBlPXRoaXMucmFkaXVzK3QucmFkaXVzO3JldHVybiB0LmNlbnRlci5kaXN0YW5jZVRvU3F1YXJlZCh0aGlzLmNlbnRlcik8PWUqZX1pbnRlcnNlY3RzQm94KHQpe3JldHVybiB0LmludGVyc2VjdHNTcGhlcmUodGhpcyl9aW50ZXJzZWN0c1BsYW5lKHQpe3JldHVybiBNYXRoLmFicyh0LmRpc3RhbmNlVG9Qb2ludCh0aGlzLmNlbnRlcikpPD10aGlzLnJhZGl1c31jbGFtcFBvaW50KHQsZSl7Y29uc3Qgbj10aGlzLmNlbnRlci5kaXN0YW5jZVRvU3F1YXJlZCh0KTtyZXR1cm4gZS5jb3B5KHQpLG4+dGhpcy5yYWRpdXMqdGhpcy5yYWRpdXMmJihlLnN1Yih0aGlzLmNlbnRlcikubm9ybWFsaXplKCksZS5tdWx0aXBseVNjYWxhcih0aGlzLnJhZGl1cykuYWRkKHRoaXMuY2VudGVyKSksZX1nZXRCb3VuZGluZ0JveCh0KXtyZXR1cm4gdGhpcy5pc0VtcHR5KCk/KHQubWFrZUVtcHR5KCksdCk6KHQuc2V0KHRoaXMuY2VudGVyLHRoaXMuY2VudGVyKSx0LmV4cGFuZEJ5U2NhbGFyKHRoaXMucmFkaXVzKSx0KX1hcHBseU1hdHJpeDQodCl7cmV0dXJuIHRoaXMuY2VudGVyLmFwcGx5TWF0cml4NCh0KSx0aGlzLnJhZGl1cz10aGlzLnJhZGl1cyp0LmdldE1heFNjYWxlT25BeGlzKCksdGhpc310cmFuc2xhdGUodCl7cmV0dXJuIHRoaXMuY2VudGVyLmFkZCh0KSx0aGlzfWV4cGFuZEJ5UG9pbnQodCl7cXN0LnN1YlZlY3RvcnModCx0aGlzLmNlbnRlcik7Y29uc3QgZT1xc3QubGVuZ3RoU3EoKTtpZihlPnRoaXMucmFkaXVzKnRoaXMucmFkaXVzKXtjb25zdCB0PU1hdGguc3FydChlKSxuPS41Kih0LXRoaXMucmFkaXVzKTt0aGlzLmNlbnRlci5hZGQocXN0Lm11bHRpcGx5U2NhbGFyKG4vdCkpLHRoaXMucmFkaXVzKz1ufXJldHVybiB0aGlzfXVuaW9uKHQpe3JldHVybiBZc3Quc3ViVmVjdG9ycyh0LmNlbnRlcix0aGlzLmNlbnRlcikubm9ybWFsaXplKCkubXVsdGlwbHlTY2FsYXIodC5yYWRpdXMpLHRoaXMuZXhwYW5kQnlQb2ludChHc3QuY29weSh0LmNlbnRlcikuYWRkKFlzdCkpLHRoaXMuZXhwYW5kQnlQb2ludChHc3QuY29weSh0LmNlbnRlcikuc3ViKFlzdCkpLHRoaXN9ZXF1YWxzKHQpe3JldHVybiB0LmNlbnRlci5lcXVhbHModGhpcy5jZW50ZXIpJiZ0LnJhZGl1cz09PXRoaXMucmFkaXVzfWNsb25lKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMpfX1jb25zdCBYc3Q9bmV3IHdzdCxLc3Q9bmV3IHdzdCxKc3Q9bmV3IHdzdCxRc3Q9bmV3IHdzdCwkc3Q9bmV3IHdzdCx0bHQ9bmV3IHdzdCxlbHQ9bmV3IHdzdDtjbGFzcyBubHR7Y29uc3RydWN0b3IodD1uZXcgd3N0LGU9bmV3IHdzdCgwLDAsLTEpKXt0aGlzLm9yaWdpbj10LHRoaXMuZGlyZWN0aW9uPWV9c2V0KHQsZSl7cmV0dXJuIHRoaXMub3JpZ2luLmNvcHkodCksdGhpcy5kaXJlY3Rpb24uY29weShlKSx0aGlzfWNvcHkodCl7cmV0dXJuIHRoaXMub3JpZ2luLmNvcHkodC5vcmlnaW4pLHRoaXMuZGlyZWN0aW9uLmNvcHkodC5kaXJlY3Rpb24pLHRoaXN9YXQodCxlKXtyZXR1cm4gZS5jb3B5KHRoaXMuZGlyZWN0aW9uKS5tdWx0aXBseVNjYWxhcih0KS5hZGQodGhpcy5vcmlnaW4pfWxvb2tBdCh0KXtyZXR1cm4gdGhpcy5kaXJlY3Rpb24uY29weSh0KS5zdWIodGhpcy5vcmlnaW4pLm5vcm1hbGl6ZSgpLHRoaXN9cmVjYXN0KHQpe3JldHVybiB0aGlzLm9yaWdpbi5jb3B5KHRoaXMuYXQodCxYc3QpKSx0aGlzfWNsb3Nlc3RQb2ludFRvUG9pbnQodCxlKXtlLnN1YlZlY3RvcnModCx0aGlzLm9yaWdpbik7Y29uc3Qgbj1lLmRvdCh0aGlzLmRpcmVjdGlvbik7cmV0dXJuIG48MD9lLmNvcHkodGhpcy5vcmlnaW4pOmUuY29weSh0aGlzLmRpcmVjdGlvbikubXVsdGlwbHlTY2FsYXIobikuYWRkKHRoaXMub3JpZ2luKX1kaXN0YW5jZVRvUG9pbnQodCl7cmV0dXJuIE1hdGguc3FydCh0aGlzLmRpc3RhbmNlU3FUb1BvaW50KHQpKX1kaXN0YW5jZVNxVG9Qb2ludCh0KXtjb25zdCBlPVhzdC5zdWJWZWN0b3JzKHQsdGhpcy5vcmlnaW4pLmRvdCh0aGlzLmRpcmVjdGlvbik7cmV0dXJuIGU8MD90aGlzLm9yaWdpbi5kaXN0YW5jZVRvU3F1YXJlZCh0KTooWHN0LmNvcHkodGhpcy5kaXJlY3Rpb24pLm11bHRpcGx5U2NhbGFyKGUpLmFkZCh0aGlzLm9yaWdpbiksWHN0LmRpc3RhbmNlVG9TcXVhcmVkKHQpKX1kaXN0YW5jZVNxVG9TZWdtZW50KHQsZSxuLG8pe0tzdC5jb3B5KHQpLmFkZChlKS5tdWx0aXBseVNjYWxhciguNSksSnN0LmNvcHkoZSkuc3ViKHQpLm5vcm1hbGl6ZSgpLFFzdC5jb3B5KHRoaXMub3JpZ2luKS5zdWIoS3N0KTtjb25zdCBpPS41KnQuZGlzdGFuY2VUbyhlKSxhPS10aGlzLmRpcmVjdGlvbi5kb3QoSnN0KSxyPVFzdC5kb3QodGhpcy5kaXJlY3Rpb24pLHM9LVFzdC5kb3QoSnN0KSxsPVFzdC5sZW5ndGhTcSgpLGM9TWF0aC5hYnMoMS1hKmEpO2xldCBkLHAsbSxmO2lmKGM+MClpZihkPWEqcy1yLHA9YSpyLXMsZj1pKmMsZD49MClpZihwPj0tZilpZihwPD1mKXtjb25zdCB0PTEvYztkKj10LHAqPXQsbT1kKihkK2EqcCsyKnIpK3AqKGEqZCtwKzIqcykrbH1lbHNlIHA9aSxkPU1hdGgubWF4KDAsLShhKnArcikpLG09LWQqZCtwKihwKzIqcykrbDtlbHNlIHA9LWksZD1NYXRoLm1heCgwLC0oYSpwK3IpKSxtPS1kKmQrcCoocCsyKnMpK2w7ZWxzZSBwPD0tZj8oZD1NYXRoLm1heCgwLC0oLWEqaStyKSkscD1kPjA/LWk6TWF0aC5taW4oTWF0aC5tYXgoLWksLXMpLGkpLG09LWQqZCtwKihwKzIqcykrbCk6cDw9Zj8oZD0wLHA9TWF0aC5taW4oTWF0aC5tYXgoLWksLXMpLGkpLG09cCoocCsyKnMpK2wpOihkPU1hdGgubWF4KDAsLShhKmkrcikpLHA9ZD4wP2k6TWF0aC5taW4oTWF0aC5tYXgoLWksLXMpLGkpLG09LWQqZCtwKihwKzIqcykrbCk7ZWxzZSBwPWE+MD8taTppLGQ9TWF0aC5tYXgoMCwtKGEqcCtyKSksbT0tZCpkK3AqKHArMipzKStsO3JldHVybiBuJiZuLmNvcHkodGhpcy5kaXJlY3Rpb24pLm11bHRpcGx5U2NhbGFyKGQpLmFkZCh0aGlzLm9yaWdpbiksbyYmby5jb3B5KEpzdCkubXVsdGlwbHlTY2FsYXIocCkuYWRkKEtzdCksbX1pbnRlcnNlY3RTcGhlcmUodCxlKXtYc3Quc3ViVmVjdG9ycyh0LmNlbnRlcix0aGlzLm9yaWdpbik7Y29uc3Qgbj1Yc3QuZG90KHRoaXMuZGlyZWN0aW9uKSxvPVhzdC5kb3QoWHN0KS1uKm4saT10LnJhZGl1cyp0LnJhZGl1cztpZihvPmkpcmV0dXJuIG51bGw7Y29uc3QgYT1NYXRoLnNxcnQoaS1vKSxyPW4tYSxzPW4rYTtyZXR1cm4gcjwwJiZzPDA/bnVsbDp0aGlzLmF0KHI8MD9zOnIsZSl9aW50ZXJzZWN0c1NwaGVyZSh0KXtyZXR1cm4gdGhpcy5kaXN0YW5jZVNxVG9Qb2ludCh0LmNlbnRlcik8PXQucmFkaXVzKnQucmFkaXVzfWRpc3RhbmNlVG9QbGFuZSh0KXtjb25zdCBlPXQubm9ybWFsLmRvdCh0aGlzLmRpcmVjdGlvbik7aWYoMD09PWUpcmV0dXJuIDA9PT10LmRpc3RhbmNlVG9Qb2ludCh0aGlzLm9yaWdpbik/MDpudWxsO2NvbnN0IG49LSh0aGlzLm9yaWdpbi5kb3QodC5ub3JtYWwpK3QuY29uc3RhbnQpL2U7cmV0dXJuIG4+PTA/bjpudWxsfWludGVyc2VjdFBsYW5lKHQsZSl7Y29uc3Qgbj10aGlzLmRpc3RhbmNlVG9QbGFuZSh0KTtyZXR1cm4gbnVsbD09PW4/bnVsbDp0aGlzLmF0KG4sZSl9aW50ZXJzZWN0c1BsYW5lKHQpe2NvbnN0IGU9dC5kaXN0YW5jZVRvUG9pbnQodGhpcy5vcmlnaW4pO2lmKDA9PT1lKXJldHVybiEwO3JldHVybiB0Lm5vcm1hbC5kb3QodGhpcy5kaXJlY3Rpb24pKmU8MH1pbnRlcnNlY3RCb3godCxlKXtsZXQgbixvLGksYSxyLHM7Y29uc3QgbD0xL3RoaXMuZGlyZWN0aW9uLngsYz0xL3RoaXMuZGlyZWN0aW9uLnksZD0xL3RoaXMuZGlyZWN0aW9uLnoscD10aGlzLm9yaWdpbjtyZXR1cm4gbD49MD8obj0odC5taW4ueC1wLngpKmwsbz0odC5tYXgueC1wLngpKmwpOihuPSh0Lm1heC54LXAueCkqbCxvPSh0Lm1pbi54LXAueCkqbCksYz49MD8oaT0odC5taW4ueS1wLnkpKmMsYT0odC5tYXgueS1wLnkpKmMpOihpPSh0Lm1heC55LXAueSkqYyxhPSh0Lm1pbi55LXAueSkqYyksbj5hfHxpPm8/bnVsbDooKGk+bnx8biE9bikmJihuPWkpLChhPG98fG8hPW8pJiYobz1hKSxkPj0wPyhyPSh0Lm1pbi56LXAueikqZCxzPSh0Lm1heC56LXAueikqZCk6KHI9KHQubWF4LnotcC56KSpkLHM9KHQubWluLnotcC56KSpkKSxuPnN8fHI+bz9udWxsOigocj5ufHxuIT1uKSYmKG49ciksKHM8b3x8byE9bykmJihvPXMpLG88MD9udWxsOnRoaXMuYXQobj49MD9uOm8sZSkpKX1pbnRlcnNlY3RzQm94KHQpe3JldHVybiBudWxsIT09dGhpcy5pbnRlcnNlY3RCb3godCxYc3QpfWludGVyc2VjdFRyaWFuZ2xlKHQsZSxuLG8saSl7JHN0LnN1YlZlY3RvcnMoZSx0KSx0bHQuc3ViVmVjdG9ycyhuLHQpLGVsdC5jcm9zc1ZlY3RvcnMoJHN0LHRsdCk7bGV0IGEscj10aGlzLmRpcmVjdGlvbi5kb3QoZWx0KTtpZihyPjApe2lmKG8pcmV0dXJuIG51bGw7YT0xfWVsc2V7aWYoIShyPDApKXJldHVybiBudWxsO2E9LTEscj0tcn1Rc3Quc3ViVmVjdG9ycyh0aGlzLm9yaWdpbix0KTtjb25zdCBzPWEqdGhpcy5kaXJlY3Rpb24uZG90KHRsdC5jcm9zc1ZlY3RvcnMoUXN0LHRsdCkpO2lmKHM8MClyZXR1cm4gbnVsbDtjb25zdCBsPWEqdGhpcy5kaXJlY3Rpb24uZG90KCRzdC5jcm9zcyhRc3QpKTtpZihsPDApcmV0dXJuIG51bGw7aWYocytsPnIpcmV0dXJuIG51bGw7Y29uc3QgYz0tYSpRc3QuZG90KGVsdCk7cmV0dXJuIGM8MD9udWxsOnRoaXMuYXQoYy9yLGkpfWFwcGx5TWF0cml4NCh0KXtyZXR1cm4gdGhpcy5vcmlnaW4uYXBwbHlNYXRyaXg0KHQpLHRoaXMuZGlyZWN0aW9uLnRyYW5zZm9ybURpcmVjdGlvbih0KSx0aGlzfWVxdWFscyh0KXtyZXR1cm4gdC5vcmlnaW4uZXF1YWxzKHRoaXMub3JpZ2luKSYmdC5kaXJlY3Rpb24uZXF1YWxzKHRoaXMuZGlyZWN0aW9uKX1jbG9uZSgpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3RvcikuY29weSh0aGlzKX19Y2xhc3Mgb2x0e2NvbnN0cnVjdG9yKCl7dGhpcy5lbGVtZW50cz1bMSwwLDAsMCwwLDEsMCwwLDAsMCwxLDAsMCwwLDAsMV0sYXJndW1lbnRzLmxlbmd0aD4wJiZjb25zb2xlLmVycm9yKCJUSFJFRS5NYXRyaXg0OiB0aGUgY29uc3RydWN0b3Igbm8gbG9uZ2VyIHJlYWRzIGFyZ3VtZW50cy4gdXNlIC5zZXQoKSBpbnN0ZWFkLiIpfXNldCh0LGUsbixvLGksYSxyLHMsbCxjLGQscCxtLGYsdSxnKXtjb25zdCBoPXRoaXMuZWxlbWVudHM7cmV0dXJuIGhbMF09dCxoWzRdPWUsaFs4XT1uLGhbMTJdPW8saFsxXT1pLGhbNV09YSxoWzldPXIsaFsxM109cyxoWzJdPWwsaFs2XT1jLGhbMTBdPWQsaFsxNF09cCxoWzNdPW0saFs3XT1mLGhbMTFdPXUsaFsxNV09Zyx0aGlzfWlkZW50aXR5KCl7cmV0dXJuIHRoaXMuc2V0KDEsMCwwLDAsMCwxLDAsMCwwLDAsMSwwLDAsMCwwLDEpLHRoaXN9Y2xvbmUoKXtyZXR1cm4obmV3IG9sdCkuZnJvbUFycmF5KHRoaXMuZWxlbWVudHMpfWNvcHkodCl7Y29uc3QgZT10aGlzLmVsZW1lbnRzLG49dC5lbGVtZW50cztyZXR1cm4gZVswXT1uWzBdLGVbMV09blsxXSxlWzJdPW5bMl0sZVszXT1uWzNdLGVbNF09bls0XSxlWzVdPW5bNV0sZVs2XT1uWzZdLGVbN109bls3XSxlWzhdPW5bOF0sZVs5XT1uWzldLGVbMTBdPW5bMTBdLGVbMTFdPW5bMTFdLGVbMTJdPW5bMTJdLGVbMTNdPW5bMTNdLGVbMTRdPW5bMTRdLGVbMTVdPW5bMTVdLHRoaXN9Y29weVBvc2l0aW9uKHQpe2NvbnN0IGU9dGhpcy5lbGVtZW50cyxuPXQuZWxlbWVudHM7cmV0dXJuIGVbMTJdPW5bMTJdLGVbMTNdPW5bMTNdLGVbMTRdPW5bMTRdLHRoaXN9c2V0RnJvbU1hdHJpeDModCl7Y29uc3QgZT10LmVsZW1lbnRzO3JldHVybiB0aGlzLnNldChlWzBdLGVbM10sZVs2XSwwLGVbMV0sZVs0XSxlWzddLDAsZVsyXSxlWzVdLGVbOF0sMCwwLDAsMCwxKSx0aGlzfWV4dHJhY3RCYXNpcyh0LGUsbil7cmV0dXJuIHQuc2V0RnJvbU1hdHJpeENvbHVtbih0aGlzLDApLGUuc2V0RnJvbU1hdHJpeENvbHVtbih0aGlzLDEpLG4uc2V0RnJvbU1hdHJpeENvbHVtbih0aGlzLDIpLHRoaXN9bWFrZUJhc2lzKHQsZSxuKXtyZXR1cm4gdGhpcy5zZXQodC54LGUueCxuLngsMCx0LnksZS55LG4ueSwwLHQueixlLnosbi56LDAsMCwwLDAsMSksdGhpc31leHRyYWN0Um90YXRpb24odCl7Y29uc3QgZT10aGlzLmVsZW1lbnRzLG49dC5lbGVtZW50cyxvPTEvaWx0LnNldEZyb21NYXRyaXhDb2x1bW4odCwwKS5sZW5ndGgoKSxpPTEvaWx0LnNldEZyb21NYXRyaXhDb2x1bW4odCwxKS5sZW5ndGgoKSxhPTEvaWx0LnNldEZyb21NYXRyaXhDb2x1bW4odCwyKS5sZW5ndGgoKTtyZXR1cm4gZVswXT1uWzBdKm8sZVsxXT1uWzFdKm8sZVsyXT1uWzJdKm8sZVszXT0wLGVbNF09bls0XSppLGVbNV09bls1XSppLGVbNl09bls2XSppLGVbN109MCxlWzhdPW5bOF0qYSxlWzldPW5bOV0qYSxlWzEwXT1uWzEwXSphLGVbMTFdPTAsZVsxMl09MCxlWzEzXT0wLGVbMTRdPTAsZVsxNV09MSx0aGlzfW1ha2VSb3RhdGlvbkZyb21FdWxlcih0KXt0JiZ0LmlzRXVsZXJ8fGNvbnNvbGUuZXJyb3IoIlRIUkVFLk1hdHJpeDQ6IC5tYWtlUm90YXRpb25Gcm9tRXVsZXIoKSBub3cgZXhwZWN0cyBhIEV1bGVyIHJvdGF0aW9uIHJhdGhlciB0aGFuIGEgVmVjdG9yMyBhbmQgb3JkZXIuIik7Y29uc3QgZT10aGlzLmVsZW1lbnRzLG49dC54LG89dC55LGk9dC56LGE9TWF0aC5jb3Mobikscj1NYXRoLnNpbihuKSxzPU1hdGguY29zKG8pLGw9TWF0aC5zaW4obyksYz1NYXRoLmNvcyhpKSxkPU1hdGguc2luKGkpO2lmKCJYWVoiPT09dC5vcmRlcil7Y29uc3QgdD1hKmMsbj1hKmQsbz1yKmMsaT1yKmQ7ZVswXT1zKmMsZVs0XT0tcypkLGVbOF09bCxlWzFdPW4rbypsLGVbNV09dC1pKmwsZVs5XT0tcipzLGVbMl09aS10KmwsZVs2XT1vK24qbCxlWzEwXT1hKnN9ZWxzZSBpZigiWVhaIj09PXQub3JkZXIpe2NvbnN0IHQ9cypjLG49cypkLG89bCpjLGk9bCpkO2VbMF09dCtpKnIsZVs0XT1vKnItbixlWzhdPWEqbCxlWzFdPWEqZCxlWzVdPWEqYyxlWzldPS1yLGVbMl09bipyLW8sZVs2XT1pK3QqcixlWzEwXT1hKnN9ZWxzZSBpZigiWlhZIj09PXQub3JkZXIpe2NvbnN0IHQ9cypjLG49cypkLG89bCpjLGk9bCpkO2VbMF09dC1pKnIsZVs0XT0tYSpkLGVbOF09bytuKnIsZVsxXT1uK28qcixlWzVdPWEqYyxlWzldPWktdCpyLGVbMl09LWEqbCxlWzZdPXIsZVsxMF09YSpzfWVsc2UgaWYoIlpZWCI9PT10Lm9yZGVyKXtjb25zdCB0PWEqYyxuPWEqZCxvPXIqYyxpPXIqZDtlWzBdPXMqYyxlWzRdPW8qbC1uLGVbOF09dCpsK2ksZVsxXT1zKmQsZVs1XT1pKmwrdCxlWzldPW4qbC1vLGVbMl09LWwsZVs2XT1yKnMsZVsxMF09YSpzfWVsc2UgaWYoIllaWCI9PT10Lm9yZGVyKXtjb25zdCB0PWEqcyxuPWEqbCxvPXIqcyxpPXIqbDtlWzBdPXMqYyxlWzRdPWktdCpkLGVbOF09bypkK24sZVsxXT1kLGVbNV09YSpjLGVbOV09LXIqYyxlWzJdPS1sKmMsZVs2XT1uKmQrbyxlWzEwXT10LWkqZH1lbHNlIGlmKCJYWlkiPT09dC5vcmRlcil7Y29uc3QgdD1hKnMsbj1hKmwsbz1yKnMsaT1yKmw7ZVswXT1zKmMsZVs0XT0tZCxlWzhdPWwqYyxlWzFdPXQqZCtpLGVbNV09YSpjLGVbOV09bipkLW8sZVsyXT1vKmQtbixlWzZdPXIqYyxlWzEwXT1pKmQrdH1yZXR1cm4gZVszXT0wLGVbN109MCxlWzExXT0wLGVbMTJdPTAsZVsxM109MCxlWzE0XT0wLGVbMTVdPTEsdGhpc31tYWtlUm90YXRpb25Gcm9tUXVhdGVybmlvbih0KXtyZXR1cm4gdGhpcy5jb21wb3NlKHJsdCx0LHNsdCl9bG9va0F0KHQsZSxuKXtjb25zdCBvPXRoaXMuZWxlbWVudHM7cmV0dXJuIGRsdC5zdWJWZWN0b3JzKHQsZSksMD09PWRsdC5sZW5ndGhTcSgpJiYoZGx0Lno9MSksZGx0Lm5vcm1hbGl6ZSgpLGxsdC5jcm9zc1ZlY3RvcnMobixkbHQpLDA9PT1sbHQubGVuZ3RoU3EoKSYmKDE9PT1NYXRoLmFicyhuLnopP2RsdC54Kz0xZS00OmRsdC56Kz0xZS00LGRsdC5ub3JtYWxpemUoKSxsbHQuY3Jvc3NWZWN0b3JzKG4sZGx0KSksbGx0Lm5vcm1hbGl6ZSgpLGNsdC5jcm9zc1ZlY3RvcnMoZGx0LGxsdCksb1swXT1sbHQueCxvWzRdPWNsdC54LG9bOF09ZGx0Lngsb1sxXT1sbHQueSxvWzVdPWNsdC55LG9bOV09ZGx0Lnksb1syXT1sbHQueixvWzZdPWNsdC56LG9bMTBdPWRsdC56LHRoaXN9bXVsdGlwbHkodCxlKXtyZXR1cm4gdm9pZCAwIT09ZT8oY29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXg0OiAubXVsdGlwbHkoKSBub3cgb25seSBhY2NlcHRzIG9uZSBhcmd1bWVudC4gVXNlIC5tdWx0aXBseU1hdHJpY2VzKCBhLCBiICkgaW5zdGVhZC4iKSx0aGlzLm11bHRpcGx5TWF0cmljZXModCxlKSk6dGhpcy5tdWx0aXBseU1hdHJpY2VzKHRoaXMsdCl9cHJlbXVsdGlwbHkodCl7cmV0dXJuIHRoaXMubXVsdGlwbHlNYXRyaWNlcyh0LHRoaXMpfW11bHRpcGx5TWF0cmljZXModCxlKXtjb25zdCBuPXQuZWxlbWVudHMsbz1lLmVsZW1lbnRzLGk9dGhpcy5lbGVtZW50cyxhPW5bMF0scj1uWzRdLHM9bls4XSxsPW5bMTJdLGM9blsxXSxkPW5bNV0scD1uWzldLG09blsxM10sZj1uWzJdLHU9bls2XSxnPW5bMTBdLGg9blsxNF0sYj1uWzNdLHk9bls3XSxfPW5bMTFdLEM9blsxNV0sTT1vWzBdLHY9b1s0XSx4PW9bOF0sTz1vWzEyXSxQPW9bMV0sdz1vWzVdLGs9b1s5XSxTPW9bMTNdLEQ9b1syXSxSPW9bNl0sRT1vWzEwXSxBPW9bMTRdLFQ9b1szXSxOPW9bN10sej1vWzExXSxJPW9bMTVdO3JldHVybiBpWzBdPWEqTStyKlArcypEK2wqVCxpWzRdPWEqdityKncrcypSK2wqTixpWzhdPWEqeCtyKmsrcypFK2wqeixpWzEyXT1hKk8rcipTK3MqQStsKkksaVsxXT1jKk0rZCpQK3AqRCttKlQsaVs1XT1jKnYrZCp3K3AqUittKk4saVs5XT1jKngrZCprK3AqRSttKnosaVsxM109YypPK2QqUytwKkErbSpJLGlbMl09ZipNK3UqUCtnKkQraCpULGlbNl09Zip2K3UqdytnKlIraCpOLGlbMTBdPWYqeCt1KmsrZypFK2gqeixpWzE0XT1mKk8rdSpTK2cqQStoKkksaVszXT1iKk0reSpQK18qRCtDKlQsaVs3XT1iKnYreSp3K18qUitDKk4saVsxMV09Yip4K3kqaytfKkUrQyp6LGlbMTVdPWIqTyt5KlMrXypBK0MqSSx0aGlzfW11bHRpcGx5U2NhbGFyKHQpe2NvbnN0IGU9dGhpcy5lbGVtZW50cztyZXR1cm4gZVswXSo9dCxlWzRdKj10LGVbOF0qPXQsZVsxMl0qPXQsZVsxXSo9dCxlWzVdKj10LGVbOV0qPXQsZVsxM10qPXQsZVsyXSo9dCxlWzZdKj10LGVbMTBdKj10LGVbMTRdKj10LGVbM10qPXQsZVs3XSo9dCxlWzExXSo9dCxlWzE1XSo9dCx0aGlzfWRldGVybWluYW50KCl7Y29uc3QgdD10aGlzLmVsZW1lbnRzLGU9dFswXSxuPXRbNF0sbz10WzhdLGk9dFsxMl0sYT10WzFdLHI9dFs1XSxzPXRbOV0sbD10WzEzXSxjPXRbMl0sZD10WzZdLHA9dFsxMF0sbT10WzE0XTtyZXR1cm4gdFszXSooK2kqcypkLW8qbCpkLWkqcipwK24qbCpwK28qciptLW4qcyptKSt0WzddKigrZSpzKm0tZSpsKnAraSphKnAtbyphKm0rbypsKmMtaSpzKmMpK3RbMTFdKigrZSpsKmQtZSpyKm0taSphKmQrbiphKm0raSpyKmMtbipsKmMpK3RbMTVdKigtbypyKmMtZSpzKmQrZSpyKnArbyphKmQtbiphKnArbipzKmMpfXRyYW5zcG9zZSgpe2NvbnN0IHQ9dGhpcy5lbGVtZW50cztsZXQgZTtyZXR1cm4gZT10WzFdLHRbMV09dFs0XSx0WzRdPWUsZT10WzJdLHRbMl09dFs4XSx0WzhdPWUsZT10WzZdLHRbNl09dFs5XSx0WzldPWUsZT10WzNdLHRbM109dFsxMl0sdFsxMl09ZSxlPXRbN10sdFs3XT10WzEzXSx0WzEzXT1lLGU9dFsxMV0sdFsxMV09dFsxNF0sdFsxNF09ZSx0aGlzfXNldFBvc2l0aW9uKHQsZSxuKXtjb25zdCBvPXRoaXMuZWxlbWVudHM7cmV0dXJuIHQuaXNWZWN0b3IzPyhvWzEyXT10Lngsb1sxM109dC55LG9bMTRdPXQueik6KG9bMTJdPXQsb1sxM109ZSxvWzE0XT1uKSx0aGlzfWludmVydCgpe2NvbnN0IHQ9dGhpcy5lbGVtZW50cyxlPXRbMF0sbj10WzFdLG89dFsyXSxpPXRbM10sYT10WzRdLHI9dFs1XSxzPXRbNl0sbD10WzddLGM9dFs4XSxkPXRbOV0scD10WzEwXSxtPXRbMTFdLGY9dFsxMl0sdT10WzEzXSxnPXRbMTRdLGg9dFsxNV0sYj1kKmcqbC11KnAqbCt1KnMqbS1yKmcqbS1kKnMqaCtyKnAqaCx5PWYqcCpsLWMqZypsLWYqcyptK2EqZyptK2MqcypoLWEqcCpoLF89Yyp1KmwtZipkKmwrZipyKm0tYSp1Km0tYypyKmgrYSpkKmgsQz1mKmQqcy1jKnUqcy1mKnIqcCthKnUqcCtjKnIqZy1hKmQqZyxNPWUqYituKnkrbypfK2kqQztpZigwPT09TSlyZXR1cm4gdGhpcy5zZXQoMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCk7Y29uc3Qgdj0xL007cmV0dXJuIHRbMF09Yip2LHRbMV09KHUqcCppLWQqZyppLXUqbyptK24qZyptK2QqbypoLW4qcCpoKSp2LHRbMl09KHIqZyppLXUqcyppK3UqbypsLW4qZypsLXIqbypoK24qcypoKSp2LHRbM109KGQqcyppLXIqcCppLWQqbypsK24qcCpsK3IqbyptLW4qcyptKSp2LHRbNF09eSp2LHRbNV09KGMqZyppLWYqcCppK2YqbyptLWUqZyptLWMqbypoK2UqcCpoKSp2LHRbNl09KGYqcyppLWEqZyppLWYqbypsK2UqZypsK2EqbypoLWUqcypoKSp2LHRbN109KGEqcCppLWMqcyppK2MqbypsLWUqcCpsLWEqbyptK2UqcyptKSp2LHRbOF09Xyp2LHRbOV09KGYqZCppLWMqdSppLWYqbiptK2UqdSptK2MqbipoLWUqZCpoKSp2LHRbMTBdPShhKnUqaS1mKnIqaStmKm4qbC1lKnUqbC1hKm4qaCtlKnIqaCkqdix0WzExXT0oYypyKmktYSpkKmktYypuKmwrZSpkKmwrYSpuKm0tZSpyKm0pKnYsdFsxMl09Qyp2LHRbMTNdPShjKnUqby1mKmQqbytmKm4qcC1lKnUqcC1jKm4qZytlKmQqZykqdix0WzE0XT0oZipyKm8tYSp1Km8tZipuKnMrZSp1KnMrYSpuKmctZSpyKmcpKnYsdFsxNV09KGEqZCpvLWMqcipvK2MqbipzLWUqZCpzLWEqbipwK2UqcipwKSp2LHRoaXN9c2NhbGUodCl7Y29uc3QgZT10aGlzLmVsZW1lbnRzLG49dC54LG89dC55LGk9dC56O3JldHVybiBlWzBdKj1uLGVbNF0qPW8sZVs4XSo9aSxlWzFdKj1uLGVbNV0qPW8sZVs5XSo9aSxlWzJdKj1uLGVbNl0qPW8sZVsxMF0qPWksZVszXSo9bixlWzddKj1vLGVbMTFdKj1pLHRoaXN9Z2V0TWF4U2NhbGVPbkF4aXMoKXtjb25zdCB0PXRoaXMuZWxlbWVudHM7cmV0dXJuIE1hdGguc3FydChNYXRoLm1heCh0WzBdKnRbMF0rdFsxXSp0WzFdK3RbMl0qdFsyXSx0WzRdKnRbNF0rdFs1XSp0WzVdK3RbNl0qdFs2XSx0WzhdKnRbOF0rdFs5XSp0WzldK3RbMTBdKnRbMTBdKSl9bWFrZVRyYW5zbGF0aW9uKHQsZSxuKXtyZXR1cm4gdGhpcy5zZXQoMSwwLDAsdCwwLDEsMCxlLDAsMCwxLG4sMCwwLDAsMSksdGhpc31tYWtlUm90YXRpb25YKHQpe2NvbnN0IGU9TWF0aC5jb3ModCksbj1NYXRoLnNpbih0KTtyZXR1cm4gdGhpcy5zZXQoMSwwLDAsMCwwLGUsLW4sMCwwLG4sZSwwLDAsMCwwLDEpLHRoaXN9bWFrZVJvdGF0aW9uWSh0KXtjb25zdCBlPU1hdGguY29zKHQpLG49TWF0aC5zaW4odCk7cmV0dXJuIHRoaXMuc2V0KGUsMCxuLDAsMCwxLDAsMCwtbiwwLGUsMCwwLDAsMCwxKSx0aGlzfW1ha2VSb3RhdGlvbloodCl7Y29uc3QgZT1NYXRoLmNvcyh0KSxuPU1hdGguc2luKHQpO3JldHVybiB0aGlzLnNldChlLC1uLDAsMCxuLGUsMCwwLDAsMCwxLDAsMCwwLDAsMSksdGhpc31tYWtlUm90YXRpb25BeGlzKHQsZSl7Y29uc3Qgbj1NYXRoLmNvcyhlKSxvPU1hdGguc2luKGUpLGk9MS1uLGE9dC54LHI9dC55LHM9dC56LGw9aSphLGM9aSpyO3JldHVybiB0aGlzLnNldChsKmErbixsKnItbypzLGwqcytvKnIsMCxsKnIrbypzLGMqcituLGMqcy1vKmEsMCxsKnMtbypyLGMqcytvKmEsaSpzKnMrbiwwLDAsMCwwLDEpLHRoaXN9bWFrZVNjYWxlKHQsZSxuKXtyZXR1cm4gdGhpcy5zZXQodCwwLDAsMCwwLGUsMCwwLDAsMCxuLDAsMCwwLDAsMSksdGhpc31tYWtlU2hlYXIodCxlLG4sbyxpLGEpe3JldHVybiB0aGlzLnNldCgxLG4saSwwLHQsMSxhLDAsZSxvLDEsMCwwLDAsMCwxKSx0aGlzfWNvbXBvc2UodCxlLG4pe2NvbnN0IG89dGhpcy5lbGVtZW50cyxpPWUuX3gsYT1lLl95LHI9ZS5feixzPWUuX3csbD1pK2ksYz1hK2EsZD1yK3IscD1pKmwsbT1pKmMsZj1pKmQsdT1hKmMsZz1hKmQsaD1yKmQsYj1zKmwseT1zKmMsXz1zKmQsQz1uLngsTT1uLnksdj1uLno7cmV0dXJuIG9bMF09KDEtKHUraCkpKkMsb1sxXT0obStfKSpDLG9bMl09KGYteSkqQyxvWzNdPTAsb1s0XT0obS1fKSpNLG9bNV09KDEtKHAraCkpKk0sb1s2XT0oZytiKSpNLG9bN109MCxvWzhdPShmK3kpKnYsb1s5XT0oZy1iKSp2LG9bMTBdPSgxLShwK3UpKSp2LG9bMTFdPTAsb1sxMl09dC54LG9bMTNdPXQueSxvWzE0XT10Lnosb1sxNV09MSx0aGlzfWRlY29tcG9zZSh0LGUsbil7Y29uc3Qgbz10aGlzLmVsZW1lbnRzO2xldCBpPWlsdC5zZXQob1swXSxvWzFdLG9bMl0pLmxlbmd0aCgpO2NvbnN0IGE9aWx0LnNldChvWzRdLG9bNV0sb1s2XSkubGVuZ3RoKCkscj1pbHQuc2V0KG9bOF0sb1s5XSxvWzEwXSkubGVuZ3RoKCk7dGhpcy5kZXRlcm1pbmFudCgpPDAmJihpPS1pKSx0Lng9b1sxMl0sdC55PW9bMTNdLHQuej1vWzE0XSxhbHQuY29weSh0aGlzKTtjb25zdCBzPTEvaSxsPTEvYSxjPTEvcjtyZXR1cm4gYWx0LmVsZW1lbnRzWzBdKj1zLGFsdC5lbGVtZW50c1sxXSo9cyxhbHQuZWxlbWVudHNbMl0qPXMsYWx0LmVsZW1lbnRzWzRdKj1sLGFsdC5lbGVtZW50c1s1XSo9bCxhbHQuZWxlbWVudHNbNl0qPWwsYWx0LmVsZW1lbnRzWzhdKj1jLGFsdC5lbGVtZW50c1s5XSo9YyxhbHQuZWxlbWVudHNbMTBdKj1jLGUuc2V0RnJvbVJvdGF0aW9uTWF0cml4KGFsdCksbi54PWksbi55PWEsbi56PXIsdGhpc31tYWtlUGVyc3BlY3RpdmUodCxlLG4sbyxpLGEpe3ZvaWQgMD09PWEmJmNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4NDogLm1ha2VQZXJzcGVjdGl2ZSgpIGhhcyBiZWVuIHJlZGVmaW5lZCBhbmQgaGFzIGEgbmV3IHNpZ25hdHVyZS4gUGxlYXNlIGNoZWNrIHRoZSBkb2NzLiIpO2NvbnN0IHI9dGhpcy5lbGVtZW50cyxzPTIqaS8obi1vKSxsPShlK3QpLyhlLXQpLGM9KG4rbykvKG4tbyksZD0tKGEraSkvKGEtaSkscD0tMiphKmkvKGEtaSk7cmV0dXJuIHJbMF09MippLyhlLXQpLHJbNF09MCxyWzhdPWwsclsxMl09MCxyWzFdPTAscls1XT1zLHJbOV09YyxyWzEzXT0wLHJbMl09MCxyWzZdPTAsclsxMF09ZCxyWzE0XT1wLHJbM109MCxyWzddPTAsclsxMV09LTEsclsxNV09MCx0aGlzfW1ha2VPcnRob2dyYXBoaWModCxlLG4sbyxpLGEpe2NvbnN0IHI9dGhpcy5lbGVtZW50cyxzPTEvKGUtdCksbD0xLyhuLW8pLGM9MS8oYS1pKSxkPShlK3QpKnMscD0obitvKSpsLG09KGEraSkqYztyZXR1cm4gclswXT0yKnMscls0XT0wLHJbOF09MCxyWzEyXT0tZCxyWzFdPTAscls1XT0yKmwscls5XT0wLHJbMTNdPS1wLHJbMl09MCxyWzZdPTAsclsxMF09LTIqYyxyWzE0XT0tbSxyWzNdPTAscls3XT0wLHJbMTFdPTAsclsxNV09MSx0aGlzfWVxdWFscyh0KXtjb25zdCBlPXRoaXMuZWxlbWVudHMsbj10LmVsZW1lbnRzO2ZvcihsZXQgdD0wO3Q8MTY7dCsrKWlmKGVbdF0hPT1uW3RdKXJldHVybiExO3JldHVybiEwfWZyb21BcnJheSh0LGU9MCl7Zm9yKGxldCBuPTA7bjwxNjtuKyspdGhpcy5lbGVtZW50c1tuXT10W24rZV07cmV0dXJuIHRoaXN9dG9BcnJheSh0PVtdLGU9MCl7Y29uc3Qgbj10aGlzLmVsZW1lbnRzO3JldHVybiB0W2VdPW5bMF0sdFtlKzFdPW5bMV0sdFtlKzJdPW5bMl0sdFtlKzNdPW5bM10sdFtlKzRdPW5bNF0sdFtlKzVdPW5bNV0sdFtlKzZdPW5bNl0sdFtlKzddPW5bN10sdFtlKzhdPW5bOF0sdFtlKzldPW5bOV0sdFtlKzEwXT1uWzEwXSx0W2UrMTFdPW5bMTFdLHRbZSsxMl09blsxMl0sdFtlKzEzXT1uWzEzXSx0W2UrMTRdPW5bMTRdLHRbZSsxNV09blsxNV0sdH19b2x0LnByb3RvdHlwZS5pc01hdHJpeDQ9ITA7Y29uc3QgaWx0PW5ldyB3c3QsYWx0PW5ldyBvbHQscmx0PW5ldyB3c3QoMCwwLDApLHNsdD1uZXcgd3N0KDEsMSwxKSxsbHQ9bmV3IHdzdCxjbHQ9bmV3IHdzdCxkbHQ9bmV3IHdzdCxwbHQ9bmV3IG9sdCxtbHQ9bmV3IFBzdDtjbGFzcyBmbHR7Y29uc3RydWN0b3IodD0wLGU9MCxuPTAsbz1mbHQuRGVmYXVsdE9yZGVyKXt0aGlzLl94PXQsdGhpcy5feT1lLHRoaXMuX3o9bix0aGlzLl9vcmRlcj1vfWdldCB4KCl7cmV0dXJuIHRoaXMuX3h9c2V0IHgodCl7dGhpcy5feD10LHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKX1nZXQgeSgpe3JldHVybiB0aGlzLl95fXNldCB5KHQpe3RoaXMuX3k9dCx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCl9Z2V0IHooKXtyZXR1cm4gdGhpcy5fen1zZXQgeih0KXt0aGlzLl96PXQsdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpfWdldCBvcmRlcigpe3JldHVybiB0aGlzLl9vcmRlcn1zZXQgb3JkZXIodCl7dGhpcy5fb3JkZXI9dCx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCl9c2V0KHQsZSxuLG89dGhpcy5fb3JkZXIpe3JldHVybiB0aGlzLl94PXQsdGhpcy5feT1lLHRoaXMuX3o9bix0aGlzLl9vcmRlcj1vLHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKSx0aGlzfWNsb25lKCl7cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKHRoaXMuX3gsdGhpcy5feSx0aGlzLl96LHRoaXMuX29yZGVyKX1jb3B5KHQpe3JldHVybiB0aGlzLl94PXQuX3gsdGhpcy5feT10Ll95LHRoaXMuX3o9dC5feix0aGlzLl9vcmRlcj10Ll9vcmRlcix0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCksdGhpc31zZXRGcm9tUm90YXRpb25NYXRyaXgodCxlPXRoaXMuX29yZGVyLG49ITApe2NvbnN0IG89dC5lbGVtZW50cyxpPW9bMF0sYT1vWzRdLHI9b1s4XSxzPW9bMV0sbD1vWzVdLGM9b1s5XSxkPW9bMl0scD1vWzZdLG09b1sxMF07c3dpdGNoKGUpe2Nhc2UiWFlaIjp0aGlzLl95PU1hdGguYXNpbihwc3QociwtMSwxKSksTWF0aC5hYnMocik8Ljk5OTk5OTk/KHRoaXMuX3g9TWF0aC5hdGFuMigtYyxtKSx0aGlzLl96PU1hdGguYXRhbjIoLWEsaSkpOih0aGlzLl94PU1hdGguYXRhbjIocCxsKSx0aGlzLl96PTApO2JyZWFrO2Nhc2UiWVhaIjp0aGlzLl94PU1hdGguYXNpbigtcHN0KGMsLTEsMSkpLE1hdGguYWJzKGMpPC45OTk5OTk5Pyh0aGlzLl95PU1hdGguYXRhbjIocixtKSx0aGlzLl96PU1hdGguYXRhbjIocyxsKSk6KHRoaXMuX3k9TWF0aC5hdGFuMigtZCxpKSx0aGlzLl96PTApO2JyZWFrO2Nhc2UiWlhZIjp0aGlzLl94PU1hdGguYXNpbihwc3QocCwtMSwxKSksTWF0aC5hYnMocCk8Ljk5OTk5OTk/KHRoaXMuX3k9TWF0aC5hdGFuMigtZCxtKSx0aGlzLl96PU1hdGguYXRhbjIoLWEsbCkpOih0aGlzLl95PTAsdGhpcy5fej1NYXRoLmF0YW4yKHMsaSkpO2JyZWFrO2Nhc2UiWllYIjp0aGlzLl95PU1hdGguYXNpbigtcHN0KGQsLTEsMSkpLE1hdGguYWJzKGQpPC45OTk5OTk5Pyh0aGlzLl94PU1hdGguYXRhbjIocCxtKSx0aGlzLl96PU1hdGguYXRhbjIocyxpKSk6KHRoaXMuX3g9MCx0aGlzLl96PU1hdGguYXRhbjIoLWEsbCkpO2JyZWFrO2Nhc2UiWVpYIjp0aGlzLl96PU1hdGguYXNpbihwc3QocywtMSwxKSksTWF0aC5hYnMocyk8Ljk5OTk5OTk/KHRoaXMuX3g9TWF0aC5hdGFuMigtYyxsKSx0aGlzLl95PU1hdGguYXRhbjIoLWQsaSkpOih0aGlzLl94PTAsdGhpcy5feT1NYXRoLmF0YW4yKHIsbSkpO2JyZWFrO2Nhc2UiWFpZIjp0aGlzLl96PU1hdGguYXNpbigtcHN0KGEsLTEsMSkpLE1hdGguYWJzKGEpPC45OTk5OTk5Pyh0aGlzLl94PU1hdGguYXRhbjIocCxsKSx0aGlzLl95PU1hdGguYXRhbjIocixpKSk6KHRoaXMuX3g9TWF0aC5hdGFuMigtYyxtKSx0aGlzLl95PTApO2JyZWFrO2RlZmF1bHQ6Y29uc29sZS53YXJuKCJUSFJFRS5FdWxlcjogLnNldEZyb21Sb3RhdGlvbk1hdHJpeCgpIGVuY291bnRlcmVkIGFuIHVua25vd24gb3JkZXI6ICIrZSl9cmV0dXJuIHRoaXMuX29yZGVyPWUsITA9PT1uJiZ0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCksdGhpc31zZXRGcm9tUXVhdGVybmlvbih0LGUsbil7cmV0dXJuIHBsdC5tYWtlUm90YXRpb25Gcm9tUXVhdGVybmlvbih0KSx0aGlzLnNldEZyb21Sb3RhdGlvbk1hdHJpeChwbHQsZSxuKX1zZXRGcm9tVmVjdG9yMyh0LGU9dGhpcy5fb3JkZXIpe3JldHVybiB0aGlzLnNldCh0LngsdC55LHQueixlKX1yZW9yZGVyKHQpe3JldHVybiBtbHQuc2V0RnJvbUV1bGVyKHRoaXMpLHRoaXMuc2V0RnJvbVF1YXRlcm5pb24obWx0LHQpfWVxdWFscyh0KXtyZXR1cm4gdC5feD09PXRoaXMuX3gmJnQuX3k9PT10aGlzLl95JiZ0Ll96PT09dGhpcy5feiYmdC5fb3JkZXI9PT10aGlzLl9vcmRlcn1mcm9tQXJyYXkodCl7cmV0dXJuIHRoaXMuX3g9dFswXSx0aGlzLl95PXRbMV0sdGhpcy5fej10WzJdLHZvaWQgMCE9PXRbM10mJih0aGlzLl9vcmRlcj10WzNdKSx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCksdGhpc310b0FycmF5KHQ9W10sZT0wKXtyZXR1cm4gdFtlXT10aGlzLl94LHRbZSsxXT10aGlzLl95LHRbZSsyXT10aGlzLl96LHRbZSszXT10aGlzLl9vcmRlcix0fXRvVmVjdG9yMyh0KXtyZXR1cm4gdD90LnNldCh0aGlzLl94LHRoaXMuX3ksdGhpcy5feik6bmV3IHdzdCh0aGlzLl94LHRoaXMuX3ksdGhpcy5feil9X29uQ2hhbmdlKHQpe3JldHVybiB0aGlzLl9vbkNoYW5nZUNhbGxiYWNrPXQsdGhpc31fb25DaGFuZ2VDYWxsYmFjaygpe319Zmx0LnByb3RvdHlwZS5pc0V1bGVyPSEwLGZsdC5EZWZhdWx0T3JkZXI9IlhZWiIsZmx0LlJvdGF0aW9uT3JkZXJzPVsiWFlaIiwiWVpYIiwiWlhZIiwiWFpZIiwiWVhaIiwiWllYIl07Y2xhc3MgdWx0e2NvbnN0cnVjdG9yKCl7dGhpcy5tYXNrPTF9c2V0KHQpe3RoaXMubWFzaz0xPDx0fDB9ZW5hYmxlKHQpe3RoaXMubWFza3w9MTw8dHwwfWVuYWJsZUFsbCgpe3RoaXMubWFzaz0tMX10b2dnbGUodCl7dGhpcy5tYXNrXj0xPDx0fDB9ZGlzYWJsZSh0KXt0aGlzLm1hc2smPX4oMTw8dHwwKX1kaXNhYmxlQWxsKCl7dGhpcy5tYXNrPTB9dGVzdCh0KXtyZXR1cm4gMCE9KHRoaXMubWFzayZ0Lm1hc2spfX1sZXQgZ2x0PTA7Y29uc3QgaGx0PW5ldyB3c3QsYmx0PW5ldyBQc3QseWx0PW5ldyBvbHQsX2x0PW5ldyB3c3QsQ2x0PW5ldyB3c3QsTWx0PW5ldyB3c3Qsdmx0PW5ldyBQc3QseGx0PW5ldyB3c3QoMSwwLDApLE9sdD1uZXcgd3N0KDAsMSwwKSxQbHQ9bmV3IHdzdCgwLDAsMSksd2x0PXt0eXBlOiJhZGRlZCJ9LGtsdD17dHlwZToicmVtb3ZlZCJ9O2NsYXNzIFNsdCBleHRlbmRzIHJzdHtjb25zdHJ1Y3Rvcigpe3N1cGVyKCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsImlkIix7dmFsdWU6Z2x0Kyt9KSx0aGlzLnV1aWQ9ZHN0KCksdGhpcy5uYW1lPSIiLHRoaXMudHlwZT0iT2JqZWN0M0QiLHRoaXMucGFyZW50PW51bGwsdGhpcy5jaGlsZHJlbj1bXSx0aGlzLnVwPVNsdC5EZWZhdWx0VXAuY2xvbmUoKTtjb25zdCB0PW5ldyB3c3QsZT1uZXcgZmx0LG49bmV3IFBzdCxvPW5ldyB3c3QoMSwxLDEpO2UuX29uQ2hhbmdlKChmdW5jdGlvbiBpKCl7bi5zZXRGcm9tRXVsZXIoZSwhMSl9KSksbi5fb25DaGFuZ2UoKGZ1bmN0aW9uIGEoKXtlLnNldEZyb21RdWF0ZXJuaW9uKG4sdm9pZCAwLCExKX0pKSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0aGlzLHtwb3NpdGlvbjp7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsdmFsdWU6dH0scm90YXRpb246e2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLHZhbHVlOmV9LHF1YXRlcm5pb246e2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLHZhbHVlOm59LHNjYWxlOntjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCx2YWx1ZTpvfSxtb2RlbFZpZXdNYXRyaXg6e3ZhbHVlOm5ldyBvbHR9LG5vcm1hbE1hdHJpeDp7dmFsdWU6bmV3IGhzdH19KSx0aGlzLm1hdHJpeD1uZXcgb2x0LHRoaXMubWF0cml4V29ybGQ9bmV3IG9sdCx0aGlzLm1hdHJpeEF1dG9VcGRhdGU9U2x0LkRlZmF1bHRNYXRyaXhBdXRvVXBkYXRlLHRoaXMubWF0cml4V29ybGROZWVkc1VwZGF0ZT0hMSx0aGlzLmxheWVycz1uZXcgdWx0LHRoaXMudmlzaWJsZT0hMCx0aGlzLmNhc3RTaGFkb3c9ITEsdGhpcy5yZWNlaXZlU2hhZG93PSExLHRoaXMuZnJ1c3R1bUN1bGxlZD0hMCx0aGlzLnJlbmRlck9yZGVyPTAsdGhpcy5hbmltYXRpb25zPVtdLHRoaXMudXNlckRhdGE9e319b25CZWZvcmVSZW5kZXIoKXt9b25BZnRlclJlbmRlcigpe31hcHBseU1hdHJpeDQodCl7dGhpcy5tYXRyaXhBdXRvVXBkYXRlJiZ0aGlzLnVwZGF0ZU1hdHJpeCgpLHRoaXMubWF0cml4LnByZW11bHRpcGx5KHQpLHRoaXMubWF0cml4LmRlY29tcG9zZSh0aGlzLnBvc2l0aW9uLHRoaXMucXVhdGVybmlvbix0aGlzLnNjYWxlKX1hcHBseVF1YXRlcm5pb24odCl7cmV0dXJuIHRoaXMucXVhdGVybmlvbi5wcmVtdWx0aXBseSh0KSx0aGlzfXNldFJvdGF0aW9uRnJvbUF4aXNBbmdsZSh0LGUpe3RoaXMucXVhdGVybmlvbi5zZXRGcm9tQXhpc0FuZ2xlKHQsZSl9c2V0Um90YXRpb25Gcm9tRXVsZXIodCl7dGhpcy5xdWF0ZXJuaW9uLnNldEZyb21FdWxlcih0LCEwKX1zZXRSb3RhdGlvbkZyb21NYXRyaXgodCl7dGhpcy5xdWF0ZXJuaW9uLnNldEZyb21Sb3RhdGlvbk1hdHJpeCh0KX1zZXRSb3RhdGlvbkZyb21RdWF0ZXJuaW9uKHQpe3RoaXMucXVhdGVybmlvbi5jb3B5KHQpfXJvdGF0ZU9uQXhpcyh0LGUpe3JldHVybiBibHQuc2V0RnJvbUF4aXNBbmdsZSh0LGUpLHRoaXMucXVhdGVybmlvbi5tdWx0aXBseShibHQpLHRoaXN9cm90YXRlT25Xb3JsZEF4aXModCxlKXtyZXR1cm4gYmx0LnNldEZyb21BeGlzQW5nbGUodCxlKSx0aGlzLnF1YXRlcm5pb24ucHJlbXVsdGlwbHkoYmx0KSx0aGlzfXJvdGF0ZVgodCl7cmV0dXJuIHRoaXMucm90YXRlT25BeGlzKHhsdCx0KX1yb3RhdGVZKHQpe3JldHVybiB0aGlzLnJvdGF0ZU9uQXhpcyhPbHQsdCl9cm90YXRlWih0KXtyZXR1cm4gdGhpcy5yb3RhdGVPbkF4aXMoUGx0LHQpfXRyYW5zbGF0ZU9uQXhpcyh0LGUpe3JldHVybiBobHQuY29weSh0KS5hcHBseVF1YXRlcm5pb24odGhpcy5xdWF0ZXJuaW9uKSx0aGlzLnBvc2l0aW9uLmFkZChobHQubXVsdGlwbHlTY2FsYXIoZSkpLHRoaXN9dHJhbnNsYXRlWCh0KXtyZXR1cm4gdGhpcy50cmFuc2xhdGVPbkF4aXMoeGx0LHQpfXRyYW5zbGF0ZVkodCl7cmV0dXJuIHRoaXMudHJhbnNsYXRlT25BeGlzKE9sdCx0KX10cmFuc2xhdGVaKHQpe3JldHVybiB0aGlzLnRyYW5zbGF0ZU9uQXhpcyhQbHQsdCl9bG9jYWxUb1dvcmxkKHQpe3JldHVybiB0LmFwcGx5TWF0cml4NCh0aGlzLm1hdHJpeFdvcmxkKX13b3JsZFRvTG9jYWwodCl7cmV0dXJuIHQuYXBwbHlNYXRyaXg0KHlsdC5jb3B5KHRoaXMubWF0cml4V29ybGQpLmludmVydCgpKX1sb29rQXQodCxlLG4pe3QuaXNWZWN0b3IzP19sdC5jb3B5KHQpOl9sdC5zZXQodCxlLG4pO2NvbnN0IG89dGhpcy5wYXJlbnQ7dGhpcy51cGRhdGVXb3JsZE1hdHJpeCghMCwhMSksQ2x0LnNldEZyb21NYXRyaXhQb3NpdGlvbih0aGlzLm1hdHJpeFdvcmxkKSx0aGlzLmlzQ2FtZXJhfHx0aGlzLmlzTGlnaHQ/eWx0Lmxvb2tBdChDbHQsX2x0LHRoaXMudXApOnlsdC5sb29rQXQoX2x0LENsdCx0aGlzLnVwKSx0aGlzLnF1YXRlcm5pb24uc2V0RnJvbVJvdGF0aW9uTWF0cml4KHlsdCksbyYmKHlsdC5leHRyYWN0Um90YXRpb24oby5tYXRyaXhXb3JsZCksYmx0LnNldEZyb21Sb3RhdGlvbk1hdHJpeCh5bHQpLHRoaXMucXVhdGVybmlvbi5wcmVtdWx0aXBseShibHQuaW52ZXJ0KCkpKX1hZGQodCl7aWYoYXJndW1lbnRzLmxlbmd0aD4xKXtmb3IobGV0IHQ9MDt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXRoaXMuYWRkKGFyZ3VtZW50c1t0XSk7cmV0dXJuIHRoaXN9cmV0dXJuIHQ9PT10aGlzPyhjb25zb2xlLmVycm9yKCJUSFJFRS5PYmplY3QzRC5hZGQ6IG9iamVjdCBjYW4ndCBiZSBhZGRlZCBhcyBhIGNoaWxkIG9mIGl0c2VsZi4iLHQpLHRoaXMpOih0JiZ0LmlzT2JqZWN0M0Q/KG51bGwhPT10LnBhcmVudCYmdC5wYXJlbnQucmVtb3ZlKHQpLHQucGFyZW50PXRoaXMsdGhpcy5jaGlsZHJlbi5wdXNoKHQpLHQuZGlzcGF0Y2hFdmVudCh3bHQpKTpjb25zb2xlLmVycm9yKCJUSFJFRS5PYmplY3QzRC5hZGQ6IG9iamVjdCBub3QgYW4gaW5zdGFuY2Ugb2YgVEhSRUUuT2JqZWN0M0QuIix0KSx0aGlzKX1yZW1vdmUodCl7aWYoYXJndW1lbnRzLmxlbmd0aD4xKXtmb3IobGV0IHQ9MDt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXRoaXMucmVtb3ZlKGFyZ3VtZW50c1t0XSk7cmV0dXJuIHRoaXN9Y29uc3QgZT10aGlzLmNoaWxkcmVuLmluZGV4T2YodCk7cmV0dXJuLTEhPT1lJiYodC5wYXJlbnQ9bnVsbCx0aGlzLmNoaWxkcmVuLnNwbGljZShlLDEpLHQuZGlzcGF0Y2hFdmVudChrbHQpKSx0aGlzfXJlbW92ZUZyb21QYXJlbnQoKXtjb25zdCB0PXRoaXMucGFyZW50O3JldHVybiBudWxsIT09dCYmdC5yZW1vdmUodGhpcyksdGhpc31jbGVhcigpe2ZvcihsZXQgdD0wO3Q8dGhpcy5jaGlsZHJlbi5sZW5ndGg7dCsrKXtjb25zdCBlPXRoaXMuY2hpbGRyZW5bdF07ZS5wYXJlbnQ9bnVsbCxlLmRpc3BhdGNoRXZlbnQoa2x0KX1yZXR1cm4gdGhpcy5jaGlsZHJlbi5sZW5ndGg9MCx0aGlzfWF0dGFjaCh0KXtyZXR1cm4gdGhpcy51cGRhdGVXb3JsZE1hdHJpeCghMCwhMSkseWx0LmNvcHkodGhpcy5tYXRyaXhXb3JsZCkuaW52ZXJ0KCksbnVsbCE9PXQucGFyZW50JiYodC5wYXJlbnQudXBkYXRlV29ybGRNYXRyaXgoITAsITEpLHlsdC5tdWx0aXBseSh0LnBhcmVudC5tYXRyaXhXb3JsZCkpLHQuYXBwbHlNYXRyaXg0KHlsdCksdGhpcy5hZGQodCksdC51cGRhdGVXb3JsZE1hdHJpeCghMSwhMCksdGhpc31nZXRPYmplY3RCeUlkKHQpe3JldHVybiB0aGlzLmdldE9iamVjdEJ5UHJvcGVydHkoImlkIix0KX1nZXRPYmplY3RCeU5hbWUodCl7cmV0dXJuIHRoaXMuZ2V0T2JqZWN0QnlQcm9wZXJ0eSgibmFtZSIsdCl9Z2V0T2JqZWN0QnlQcm9wZXJ0eSh0LGUpe2lmKHRoaXNbdF09PT1lKXJldHVybiB0aGlzO2ZvcihsZXQgbj0wLG89dGhpcy5jaGlsZHJlbi5sZW5ndGg7bjxvO24rKyl7Y29uc3Qgbz10aGlzLmNoaWxkcmVuW25dLmdldE9iamVjdEJ5UHJvcGVydHkodCxlKTtpZih2b2lkIDAhPT1vKXJldHVybiBvfX1nZXRXb3JsZFBvc2l0aW9uKHQpe3JldHVybiB0aGlzLnVwZGF0ZVdvcmxkTWF0cml4KCEwLCExKSx0LnNldEZyb21NYXRyaXhQb3NpdGlvbih0aGlzLm1hdHJpeFdvcmxkKX1nZXRXb3JsZFF1YXRlcm5pb24odCl7cmV0dXJuIHRoaXMudXBkYXRlV29ybGRNYXRyaXgoITAsITEpLHRoaXMubWF0cml4V29ybGQuZGVjb21wb3NlKENsdCx0LE1sdCksdH1nZXRXb3JsZFNjYWxlKHQpe3JldHVybiB0aGlzLnVwZGF0ZVdvcmxkTWF0cml4KCEwLCExKSx0aGlzLm1hdHJpeFdvcmxkLmRlY29tcG9zZShDbHQsdmx0LHQpLHR9Z2V0V29ybGREaXJlY3Rpb24odCl7dGhpcy51cGRhdGVXb3JsZE1hdHJpeCghMCwhMSk7Y29uc3QgZT10aGlzLm1hdHJpeFdvcmxkLmVsZW1lbnRzO3JldHVybiB0LnNldChlWzhdLGVbOV0sZVsxMF0pLm5vcm1hbGl6ZSgpfXJheWNhc3QoKXt9dHJhdmVyc2UodCl7dCh0aGlzKTtjb25zdCBlPXRoaXMuY2hpbGRyZW47Zm9yKGxldCBuPTAsbz1lLmxlbmd0aDtuPG87bisrKWVbbl0udHJhdmVyc2UodCl9dHJhdmVyc2VWaXNpYmxlKHQpe2lmKCExPT09dGhpcy52aXNpYmxlKXJldHVybjt0KHRoaXMpO2NvbnN0IGU9dGhpcy5jaGlsZHJlbjtmb3IobGV0IG49MCxvPWUubGVuZ3RoO248bztuKyspZVtuXS50cmF2ZXJzZVZpc2libGUodCl9dHJhdmVyc2VBbmNlc3RvcnModCl7Y29uc3QgZT10aGlzLnBhcmVudDtudWxsIT09ZSYmKHQoZSksZS50cmF2ZXJzZUFuY2VzdG9ycyh0KSl9dXBkYXRlTWF0cml4KCl7dGhpcy5tYXRyaXguY29tcG9zZSh0aGlzLnBvc2l0aW9uLHRoaXMucXVhdGVybmlvbix0aGlzLnNjYWxlKSx0aGlzLm1hdHJpeFdvcmxkTmVlZHNVcGRhdGU9ITB9dXBkYXRlTWF0cml4V29ybGQodCl7dGhpcy5tYXRyaXhBdXRvVXBkYXRlJiZ0aGlzLnVwZGF0ZU1hdHJpeCgpLCh0aGlzLm1hdHJpeFdvcmxkTmVlZHNVcGRhdGV8fHQpJiYobnVsbD09PXRoaXMucGFyZW50P3RoaXMubWF0cml4V29ybGQuY29weSh0aGlzLm1hdHJpeCk6dGhpcy5tYXRyaXhXb3JsZC5tdWx0aXBseU1hdHJpY2VzKHRoaXMucGFyZW50Lm1hdHJpeFdvcmxkLHRoaXMubWF0cml4KSx0aGlzLm1hdHJpeFdvcmxkTmVlZHNVcGRhdGU9ITEsdD0hMCk7Y29uc3QgZT10aGlzLmNoaWxkcmVuO2ZvcihsZXQgbj0wLG89ZS5sZW5ndGg7bjxvO24rKyllW25dLnVwZGF0ZU1hdHJpeFdvcmxkKHQpfXVwZGF0ZVdvcmxkTWF0cml4KHQsZSl7Y29uc3Qgbj10aGlzLnBhcmVudDtpZighMD09PXQmJm51bGwhPT1uJiZuLnVwZGF0ZVdvcmxkTWF0cml4KCEwLCExKSx0aGlzLm1hdHJpeEF1dG9VcGRhdGUmJnRoaXMudXBkYXRlTWF0cml4KCksbnVsbD09PXRoaXMucGFyZW50P3RoaXMubWF0cml4V29ybGQuY29weSh0aGlzLm1hdHJpeCk6dGhpcy5tYXRyaXhXb3JsZC5tdWx0aXBseU1hdHJpY2VzKHRoaXMucGFyZW50Lm1hdHJpeFdvcmxkLHRoaXMubWF0cml4KSwhMD09PWUpe2NvbnN0IHQ9dGhpcy5jaGlsZHJlbjtmb3IobGV0IGU9MCxuPXQubGVuZ3RoO2U8bjtlKyspdFtlXS51cGRhdGVXb3JsZE1hdHJpeCghMSwhMCl9fXRvSlNPTih0KXtjb25zdCBlPXZvaWQgMD09PXR8fCJzdHJpbmciPT10eXBlb2YgdCxuPXt9O2UmJih0PXtnZW9tZXRyaWVzOnt9LG1hdGVyaWFsczp7fSx0ZXh0dXJlczp7fSxpbWFnZXM6e30sc2hhcGVzOnt9LHNrZWxldG9uczp7fSxhbmltYXRpb25zOnt9fSxuLm1ldGFkYXRhPXt2ZXJzaW9uOjQuNSx0eXBlOiJPYmplY3QiLGdlbmVyYXRvcjoiT2JqZWN0M0QudG9KU09OIn0pO2NvbnN0IG89e307ZnVuY3Rpb24gaShlLG4pe3JldHVybiB2b2lkIDA9PT1lW24udXVpZF0mJihlW24udXVpZF09bi50b0pTT04odCkpLG4udXVpZH1pZihvLnV1aWQ9dGhpcy51dWlkLG8udHlwZT10aGlzLnR5cGUsIiIhPT10aGlzLm5hbWUmJihvLm5hbWU9dGhpcy5uYW1lKSwhMD09PXRoaXMuY2FzdFNoYWRvdyYmKG8uY2FzdFNoYWRvdz0hMCksITA9PT10aGlzLnJlY2VpdmVTaGFkb3cmJihvLnJlY2VpdmVTaGFkb3c9ITApLCExPT09dGhpcy52aXNpYmxlJiYoby52aXNpYmxlPSExKSwhMT09PXRoaXMuZnJ1c3R1bUN1bGxlZCYmKG8uZnJ1c3R1bUN1bGxlZD0hMSksMCE9PXRoaXMucmVuZGVyT3JkZXImJihvLnJlbmRlck9yZGVyPXRoaXMucmVuZGVyT3JkZXIpLCJ7fSIhPT1KU09OLnN0cmluZ2lmeSh0aGlzLnVzZXJEYXRhKSYmKG8udXNlckRhdGE9dGhpcy51c2VyRGF0YSksby5sYXllcnM9dGhpcy5sYXllcnMubWFzayxvLm1hdHJpeD10aGlzLm1hdHJpeC50b0FycmF5KCksITE9PT10aGlzLm1hdHJpeEF1dG9VcGRhdGUmJihvLm1hdHJpeEF1dG9VcGRhdGU9ITEpLHRoaXMuaXNJbnN0YW5jZWRNZXNoJiYoby50eXBlPSJJbnN0YW5jZWRNZXNoIixvLmNvdW50PXRoaXMuY291bnQsby5pbnN0YW5jZU1hdHJpeD10aGlzLmluc3RhbmNlTWF0cml4LnRvSlNPTigpLG51bGwhPT10aGlzLmluc3RhbmNlQ29sb3ImJihvLmluc3RhbmNlQ29sb3I9dGhpcy5pbnN0YW5jZUNvbG9yLnRvSlNPTigpKSksdGhpcy5pc1NjZW5lKXRoaXMuYmFja2dyb3VuZCYmKHRoaXMuYmFja2dyb3VuZC5pc0NvbG9yP28uYmFja2dyb3VuZD10aGlzLmJhY2tncm91bmQudG9KU09OKCk6dGhpcy5iYWNrZ3JvdW5kLmlzVGV4dHVyZSYmKG8uYmFja2dyb3VuZD10aGlzLmJhY2tncm91bmQudG9KU09OKHQpLnV1aWQpKSx0aGlzLmVudmlyb25tZW50JiZ0aGlzLmVudmlyb25tZW50LmlzVGV4dHVyZSYmKG8uZW52aXJvbm1lbnQ9dGhpcy5lbnZpcm9ubWVudC50b0pTT04odCkudXVpZCk7ZWxzZSBpZih0aGlzLmlzTWVzaHx8dGhpcy5pc0xpbmV8fHRoaXMuaXNQb2ludHMpe28uZ2VvbWV0cnk9aSh0Lmdlb21ldHJpZXMsdGhpcy5nZW9tZXRyeSk7Y29uc3QgZT10aGlzLmdlb21ldHJ5LnBhcmFtZXRlcnM7aWYodm9pZCAwIT09ZSYmdm9pZCAwIT09ZS5zaGFwZXMpe2NvbnN0IG49ZS5zaGFwZXM7aWYoQXJyYXkuaXNBcnJheShuKSlmb3IobGV0IGU9MCxvPW4ubGVuZ3RoO2U8bztlKyspe2kodC5zaGFwZXMsbltlXSl9ZWxzZSBpKHQuc2hhcGVzLG4pfX1pZih0aGlzLmlzU2tpbm5lZE1lc2gmJihvLmJpbmRNb2RlPXRoaXMuYmluZE1vZGUsby5iaW5kTWF0cml4PXRoaXMuYmluZE1hdHJpeC50b0FycmF5KCksdm9pZCAwIT09dGhpcy5za2VsZXRvbiYmKGkodC5za2VsZXRvbnMsdGhpcy5za2VsZXRvbiksby5za2VsZXRvbj10aGlzLnNrZWxldG9uLnV1aWQpKSx2b2lkIDAhPT10aGlzLm1hdGVyaWFsKWlmKEFycmF5LmlzQXJyYXkodGhpcy5tYXRlcmlhbCkpe2NvbnN0IGU9W107Zm9yKGxldCBuPTAsbz10aGlzLm1hdGVyaWFsLmxlbmd0aDtuPG87bisrKWUucHVzaChpKHQubWF0ZXJpYWxzLHRoaXMubWF0ZXJpYWxbbl0pKTtvLm1hdGVyaWFsPWV9ZWxzZSBvLm1hdGVyaWFsPWkodC5tYXRlcmlhbHMsdGhpcy5tYXRlcmlhbCk7aWYodGhpcy5jaGlsZHJlbi5sZW5ndGg+MCl7by5jaGlsZHJlbj1bXTtmb3IobGV0IGU9MDtlPHRoaXMuY2hpbGRyZW4ubGVuZ3RoO2UrKylvLmNoaWxkcmVuLnB1c2godGhpcy5jaGlsZHJlbltlXS50b0pTT04odCkub2JqZWN0KX1pZih0aGlzLmFuaW1hdGlvbnMubGVuZ3RoPjApe28uYW5pbWF0aW9ucz1bXTtmb3IobGV0IGU9MDtlPHRoaXMuYW5pbWF0aW9ucy5sZW5ndGg7ZSsrKXtvLmFuaW1hdGlvbnMucHVzaChpKHQuYW5pbWF0aW9ucyx0aGlzLmFuaW1hdGlvbnNbZV0pKX19aWYoZSl7Y29uc3QgZT1hKHQuZ2VvbWV0cmllcyksbz1hKHQubWF0ZXJpYWxzKSxpPWEodC50ZXh0dXJlcykscj1hKHQuaW1hZ2VzKSxzPWEodC5zaGFwZXMpLGw9YSh0LnNrZWxldG9ucyksYz1hKHQuYW5pbWF0aW9ucyk7ZS5sZW5ndGg+MCYmKG4uZ2VvbWV0cmllcz1lKSxvLmxlbmd0aD4wJiYobi5tYXRlcmlhbHM9byksaS5sZW5ndGg+MCYmKG4udGV4dHVyZXM9aSksci5sZW5ndGg+MCYmKG4uaW1hZ2VzPXIpLHMubGVuZ3RoPjAmJihuLnNoYXBlcz1zKSxsLmxlbmd0aD4wJiYobi5za2VsZXRvbnM9bCksYy5sZW5ndGg+MCYmKG4uYW5pbWF0aW9ucz1jKX1yZXR1cm4gbi5vYmplY3Q9byxuO2Z1bmN0aW9uIGEodCl7Y29uc3QgZT1bXTtmb3IoY29uc3QgbiBpbiB0KXtjb25zdCBvPXRbbl07ZGVsZXRlIG8ubWV0YWRhdGEsZS5wdXNoKG8pfXJldHVybiBlfX1jbG9uZSh0KXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IpLmNvcHkodGhpcyx0KX1jb3B5KHQsZT0hMCl7aWYodGhpcy5uYW1lPXQubmFtZSx0aGlzLnVwLmNvcHkodC51cCksdGhpcy5wb3NpdGlvbi5jb3B5KHQucG9zaXRpb24pLHRoaXMucm90YXRpb24ub3JkZXI9dC5yb3RhdGlvbi5vcmRlcix0aGlzLnF1YXRlcm5pb24uY29weSh0LnF1YXRlcm5pb24pLHRoaXMuc2NhbGUuY29weSh0LnNjYWxlKSx0aGlzLm1hdHJpeC5jb3B5KHQubWF0cml4KSx0aGlzLm1hdHJpeFdvcmxkLmNvcHkodC5tYXRyaXhXb3JsZCksdGhpcy5tYXRyaXhBdXRvVXBkYXRlPXQubWF0cml4QXV0b1VwZGF0ZSx0aGlzLm1hdHJpeFdvcmxkTmVlZHNVcGRhdGU9dC5tYXRyaXhXb3JsZE5lZWRzVXBkYXRlLHRoaXMubGF5ZXJzLm1hc2s9dC5sYXllcnMubWFzayx0aGlzLnZpc2libGU9dC52aXNpYmxlLHRoaXMuY2FzdFNoYWRvdz10LmNhc3RTaGFkb3csdGhpcy5yZWNlaXZlU2hhZG93PXQucmVjZWl2ZVNoYWRvdyx0aGlzLmZydXN0dW1DdWxsZWQ9dC5mcnVzdHVtQ3VsbGVkLHRoaXMucmVuZGVyT3JkZXI9dC5yZW5kZXJPcmRlcix0aGlzLnVzZXJEYXRhPUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodC51c2VyRGF0YSkpLCEwPT09ZSlmb3IobGV0IGU9MDtlPHQuY2hpbGRyZW4ubGVuZ3RoO2UrKyl7dGhpcy5hZGQodC5jaGlsZHJlbltlXS5jbG9uZSgpKX1yZXR1cm4gdGhpc319U2x0LkRlZmF1bHRVcD1uZXcgd3N0KDAsMSwwKSxTbHQuRGVmYXVsdE1hdHJpeEF1dG9VcGRhdGU9ITAsU2x0LnByb3RvdHlwZS5pc09iamVjdDNEPSEwO2NvbnN0IERsdD1uZXcgd3N0LFJsdD1uZXcgd3N0LEVsdD1uZXcgd3N0LEFsdD1uZXcgd3N0LFRsdD1uZXcgd3N0LE5sdD1uZXcgd3N0LHpsdD1uZXcgd3N0LElsdD1uZXcgd3N0LEhsdD1uZXcgd3N0LEZsdD1uZXcgd3N0O2NsYXNzIExsdHtjb25zdHJ1Y3Rvcih0PW5ldyB3c3QsZT1uZXcgd3N0LG49bmV3IHdzdCl7dGhpcy5hPXQsdGhpcy5iPWUsdGhpcy5jPW59c3RhdGljIGdldE5vcm1hbCh0LGUsbixvKXtvLnN1YlZlY3RvcnMobixlKSxEbHQuc3ViVmVjdG9ycyh0LGUpLG8uY3Jvc3MoRGx0KTtjb25zdCBpPW8ubGVuZ3RoU3EoKTtyZXR1cm4gaT4wP28ubXVsdGlwbHlTY2FsYXIoMS9NYXRoLnNxcnQoaSkpOm8uc2V0KDAsMCwwKX1zdGF0aWMgZ2V0QmFyeWNvb3JkKHQsZSxuLG8saSl7RGx0LnN1YlZlY3RvcnMobyxlKSxSbHQuc3ViVmVjdG9ycyhuLGUpLEVsdC5zdWJWZWN0b3JzKHQsZSk7Y29uc3QgYT1EbHQuZG90KERsdCkscj1EbHQuZG90KFJsdCkscz1EbHQuZG90KEVsdCksbD1SbHQuZG90KFJsdCksYz1SbHQuZG90KEVsdCksZD1hKmwtcipyO2lmKDA9PT1kKXJldHVybiBpLnNldCgtMiwtMSwtMSk7Y29uc3QgcD0xL2QsbT0obCpzLXIqYykqcCxmPShhKmMtcipzKSpwO3JldHVybiBpLnNldCgxLW0tZixmLG0pfXN0YXRpYyBjb250YWluc1BvaW50KHQsZSxuLG8pe3JldHVybiB0aGlzLmdldEJhcnljb29yZCh0LGUsbixvLEFsdCksQWx0Lng+PTAmJkFsdC55Pj0wJiZBbHQueCtBbHQueTw9MX1zdGF0aWMgZ2V0VVYodCxlLG4sbyxpLGEscixzKXtyZXR1cm4gdGhpcy5nZXRCYXJ5Y29vcmQodCxlLG4sbyxBbHQpLHMuc2V0KDAsMCkscy5hZGRTY2FsZWRWZWN0b3IoaSxBbHQueCkscy5hZGRTY2FsZWRWZWN0b3IoYSxBbHQueSkscy5hZGRTY2FsZWRWZWN0b3IocixBbHQueiksc31zdGF0aWMgaXNGcm9udEZhY2luZyh0LGUsbixvKXtyZXR1cm4gRGx0LnN1YlZlY3RvcnMobixlKSxSbHQuc3ViVmVjdG9ycyh0LGUpLERsdC5jcm9zcyhSbHQpLmRvdChvKTwwfXNldCh0LGUsbil7cmV0dXJuIHRoaXMuYS5jb3B5KHQpLHRoaXMuYi5jb3B5KGUpLHRoaXMuYy5jb3B5KG4pLHRoaXN9c2V0RnJvbVBvaW50c0FuZEluZGljZXModCxlLG4sbyl7cmV0dXJuIHRoaXMuYS5jb3B5KHRbZV0pLHRoaXMuYi5jb3B5KHRbbl0pLHRoaXMuYy5jb3B5KHRbb10pLHRoaXN9Y2xvbmUoKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IpLmNvcHkodGhpcyl9Y29weSh0KXtyZXR1cm4gdGhpcy5hLmNvcHkodC5hKSx0aGlzLmIuY29weSh0LmIpLHRoaXMuYy5jb3B5KHQuYyksdGhpc31nZXRBcmVhKCl7cmV0dXJuIERsdC5zdWJWZWN0b3JzKHRoaXMuYyx0aGlzLmIpLFJsdC5zdWJWZWN0b3JzKHRoaXMuYSx0aGlzLmIpLC41KkRsdC5jcm9zcyhSbHQpLmxlbmd0aCgpfWdldE1pZHBvaW50KHQpe3JldHVybiB0LmFkZFZlY3RvcnModGhpcy5hLHRoaXMuYikuYWRkKHRoaXMuYykubXVsdGlwbHlTY2FsYXIoMS8zKX1nZXROb3JtYWwodCl7cmV0dXJuIExsdC5nZXROb3JtYWwodGhpcy5hLHRoaXMuYix0aGlzLmMsdCl9Z2V0UGxhbmUodCl7cmV0dXJuIHQuc2V0RnJvbUNvcGxhbmFyUG9pbnRzKHRoaXMuYSx0aGlzLmIsdGhpcy5jKX1nZXRCYXJ5Y29vcmQodCxlKXtyZXR1cm4gTGx0LmdldEJhcnljb29yZCh0LHRoaXMuYSx0aGlzLmIsdGhpcy5jLGUpfWdldFVWKHQsZSxuLG8saSl7cmV0dXJuIExsdC5nZXRVVih0LHRoaXMuYSx0aGlzLmIsdGhpcy5jLGUsbixvLGkpfWNvbnRhaW5zUG9pbnQodCl7cmV0dXJuIExsdC5jb250YWluc1BvaW50KHQsdGhpcy5hLHRoaXMuYix0aGlzLmMpfWlzRnJvbnRGYWNpbmcodCl7cmV0dXJuIExsdC5pc0Zyb250RmFjaW5nKHRoaXMuYSx0aGlzLmIsdGhpcy5jLHQpfWludGVyc2VjdHNCb3godCl7cmV0dXJuIHQuaW50ZXJzZWN0c1RyaWFuZ2xlKHRoaXMpfWNsb3Nlc3RQb2ludFRvUG9pbnQodCxlKXtjb25zdCBuPXRoaXMuYSxvPXRoaXMuYixpPXRoaXMuYztsZXQgYSxyO1RsdC5zdWJWZWN0b3JzKG8sbiksTmx0LnN1YlZlY3RvcnMoaSxuKSxJbHQuc3ViVmVjdG9ycyh0LG4pO2NvbnN0IHM9VGx0LmRvdChJbHQpLGw9Tmx0LmRvdChJbHQpO2lmKHM8PTAmJmw8PTApcmV0dXJuIGUuY29weShuKTtIbHQuc3ViVmVjdG9ycyh0LG8pO2NvbnN0IGM9VGx0LmRvdChIbHQpLGQ9Tmx0LmRvdChIbHQpO2lmKGM+PTAmJmQ8PWMpcmV0dXJuIGUuY29weShvKTtjb25zdCBwPXMqZC1jKmw7aWYocDw9MCYmcz49MCYmYzw9MClyZXR1cm4gYT1zLyhzLWMpLGUuY29weShuKS5hZGRTY2FsZWRWZWN0b3IoVGx0LGEpO0ZsdC5zdWJWZWN0b3JzKHQsaSk7Y29uc3QgbT1UbHQuZG90KEZsdCksZj1ObHQuZG90KEZsdCk7aWYoZj49MCYmbTw9ZilyZXR1cm4gZS5jb3B5KGkpO2NvbnN0IHU9bSpsLXMqZjtpZih1PD0wJiZsPj0wJiZmPD0wKXJldHVybiByPWwvKGwtZiksZS5jb3B5KG4pLmFkZFNjYWxlZFZlY3RvcihObHQscik7Y29uc3QgZz1jKmYtbSpkO2lmKGc8PTAmJmQtYz49MCYmbS1mPj0wKXJldHVybiB6bHQuc3ViVmVjdG9ycyhpLG8pLHI9KGQtYykvKGQtYysobS1mKSksZS5jb3B5KG8pLmFkZFNjYWxlZFZlY3Rvcih6bHQscik7Y29uc3QgaD0xLyhnK3UrcCk7cmV0dXJuIGE9dSpoLHI9cCpoLGUuY29weShuKS5hZGRTY2FsZWRWZWN0b3IoVGx0LGEpLmFkZFNjYWxlZFZlY3RvcihObHQscil9ZXF1YWxzKHQpe3JldHVybiB0LmEuZXF1YWxzKHRoaXMuYSkmJnQuYi5lcXVhbHModGhpcy5iKSYmdC5jLmVxdWFscyh0aGlzLmMpfX1sZXQgQmx0PTA7Y2xhc3MgVmx0IGV4dGVuZHMgcnN0e2NvbnN0cnVjdG9yKCl7c3VwZXIoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiaWQiLHt2YWx1ZTpCbHQrK30pLHRoaXMudXVpZD1kc3QoKSx0aGlzLm5hbWU9IiIsdGhpcy50eXBlPSJNYXRlcmlhbCIsdGhpcy5mb2c9ITAsdGhpcy5ibGVuZGluZz0xLHRoaXMuc2lkZT0wLHRoaXMudmVydGV4Q29sb3JzPSExLHRoaXMub3BhY2l0eT0xLHRoaXMudHJhbnNwYXJlbnQ9ITEsdGhpcy5ibGVuZFNyYz0yMDQsdGhpcy5ibGVuZERzdD0yMDUsdGhpcy5ibGVuZEVxdWF0aW9uPVBydCx0aGlzLmJsZW5kU3JjQWxwaGE9bnVsbCx0aGlzLmJsZW5kRHN0QWxwaGE9bnVsbCx0aGlzLmJsZW5kRXF1YXRpb25BbHBoYT1udWxsLHRoaXMuZGVwdGhGdW5jPTMsdGhpcy5kZXB0aFRlc3Q9ITAsdGhpcy5kZXB0aFdyaXRlPSEwLHRoaXMuc3RlbmNpbFdyaXRlTWFzaz0yNTUsdGhpcy5zdGVuY2lsRnVuYz01MTksdGhpcy5zdGVuY2lsUmVmPTAsdGhpcy5zdGVuY2lsRnVuY01hc2s9MjU1LHRoaXMuc3RlbmNpbEZhaWw9bnN0LHRoaXMuc3RlbmNpbFpGYWlsPW5zdCx0aGlzLnN0ZW5jaWxaUGFzcz1uc3QsdGhpcy5zdGVuY2lsV3JpdGU9ITEsdGhpcy5jbGlwcGluZ1BsYW5lcz1udWxsLHRoaXMuY2xpcEludGVyc2VjdGlvbj0hMSx0aGlzLmNsaXBTaGFkb3dzPSExLHRoaXMuc2hhZG93U2lkZT1udWxsLHRoaXMuY29sb3JXcml0ZT0hMCx0aGlzLnByZWNpc2lvbj1udWxsLHRoaXMucG9seWdvbk9mZnNldD0hMSx0aGlzLnBvbHlnb25PZmZzZXRGYWN0b3I9MCx0aGlzLnBvbHlnb25PZmZzZXRVbml0cz0wLHRoaXMuZGl0aGVyaW5nPSExLHRoaXMuYWxwaGFUZXN0PTAsdGhpcy5hbHBoYVRvQ292ZXJhZ2U9ITEsdGhpcy5wcmVtdWx0aXBsaWVkQWxwaGE9ITEsdGhpcy52aXNpYmxlPSEwLHRoaXMudG9uZU1hcHBlZD0hMCx0aGlzLnVzZXJEYXRhPXt9LHRoaXMudmVyc2lvbj0wfW9uQnVpbGQoKXt9b25CZWZvcmVDb21waWxlKCl7fWN1c3RvbVByb2dyYW1DYWNoZUtleSgpe3JldHVybiB0aGlzLm9uQmVmb3JlQ29tcGlsZS50b1N0cmluZygpfXNldFZhbHVlcyh0KXtpZih2b2lkIDAhPT10KWZvcihjb25zdCBlIGluIHQpe2NvbnN0IG49dFtlXTtpZih2b2lkIDA9PT1uKXtjb25zb2xlLndhcm4oIlRIUkVFLk1hdGVyaWFsOiAnIitlKyInIHBhcmFtZXRlciBpcyB1bmRlZmluZWQuIik7Y29udGludWV9aWYoInNoYWRpbmciPT09ZSl7Y29uc29sZS53YXJuKCJUSFJFRS4iK3RoaXMudHlwZSsiOiAuc2hhZGluZyBoYXMgYmVlbiByZW1vdmVkLiBVc2UgdGhlIGJvb2xlYW4gLmZsYXRTaGFkaW5nIGluc3RlYWQuIiksdGhpcy5mbGF0U2hhZGluZz0xPT09bjtjb250aW51ZX1jb25zdCBvPXRoaXNbZV07dm9pZCAwIT09bz9vJiZvLmlzQ29sb3I/by5zZXQobik6byYmby5pc1ZlY3RvcjMmJm4mJm4uaXNWZWN0b3IzP28uY29weShuKTp0aGlzW2VdPW46Y29uc29sZS53YXJuKCJUSFJFRS4iK3RoaXMudHlwZSsiOiAnIitlKyInIGlzIG5vdCBhIHByb3BlcnR5IG9mIHRoaXMgbWF0ZXJpYWwuIil9fXRvSlNPTih0KXtjb25zdCBlPXZvaWQgMD09PXR8fCJzdHJpbmciPT10eXBlb2YgdDtlJiYodD17dGV4dHVyZXM6e30saW1hZ2VzOnt9fSk7Y29uc3Qgbj17bWV0YWRhdGE6e3ZlcnNpb246NC41LHR5cGU6Ik1hdGVyaWFsIixnZW5lcmF0b3I6Ik1hdGVyaWFsLnRvSlNPTiJ9fTtmdW5jdGlvbiBvKHQpe2NvbnN0IGU9W107Zm9yKGNvbnN0IG4gaW4gdCl7Y29uc3Qgbz10W25dO2RlbGV0ZSBvLm1ldGFkYXRhLGUucHVzaChvKX1yZXR1cm4gZX1pZihuLnV1aWQ9dGhpcy51dWlkLG4udHlwZT10aGlzLnR5cGUsIiIhPT10aGlzLm5hbWUmJihuLm5hbWU9dGhpcy5uYW1lKSx0aGlzLmNvbG9yJiZ0aGlzLmNvbG9yLmlzQ29sb3ImJihuLmNvbG9yPXRoaXMuY29sb3IuZ2V0SGV4KCkpLHZvaWQgMCE9PXRoaXMucm91Z2huZXNzJiYobi5yb3VnaG5lc3M9dGhpcy5yb3VnaG5lc3MpLHZvaWQgMCE9PXRoaXMubWV0YWxuZXNzJiYobi5tZXRhbG5lc3M9dGhpcy5tZXRhbG5lc3MpLHRoaXMuc2hlZW4mJnRoaXMuc2hlZW4uaXNDb2xvciYmKG4uc2hlZW49dGhpcy5zaGVlbi5nZXRIZXgoKSksdGhpcy5lbWlzc2l2ZSYmdGhpcy5lbWlzc2l2ZS5pc0NvbG9yJiYobi5lbWlzc2l2ZT10aGlzLmVtaXNzaXZlLmdldEhleCgpKSx0aGlzLmVtaXNzaXZlSW50ZW5zaXR5JiYxIT09dGhpcy5lbWlzc2l2ZUludGVuc2l0eSYmKG4uZW1pc3NpdmVJbnRlbnNpdHk9dGhpcy5lbWlzc2l2ZUludGVuc2l0eSksdGhpcy5zcGVjdWxhciYmdGhpcy5zcGVjdWxhci5pc0NvbG9yJiYobi5zcGVjdWxhcj10aGlzLnNwZWN1bGFyLmdldEhleCgpKSx2b2lkIDAhPT10aGlzLnNwZWN1bGFySW50ZW5zaXR5JiYobi5zcGVjdWxhckludGVuc2l0eT10aGlzLnNwZWN1bGFySW50ZW5zaXR5KSx0aGlzLnNwZWN1bGFyVGludCYmdGhpcy5zcGVjdWxhclRpbnQuaXNDb2xvciYmKG4uc3BlY3VsYXJUaW50PXRoaXMuc3BlY3VsYXJUaW50LmdldEhleCgpKSx2b2lkIDAhPT10aGlzLnNoaW5pbmVzcyYmKG4uc2hpbmluZXNzPXRoaXMuc2hpbmluZXNzKSx2b2lkIDAhPT10aGlzLmNsZWFyY29hdCYmKG4uY2xlYXJjb2F0PXRoaXMuY2xlYXJjb2F0KSx2b2lkIDAhPT10aGlzLmNsZWFyY29hdFJvdWdobmVzcyYmKG4uY2xlYXJjb2F0Um91Z2huZXNzPXRoaXMuY2xlYXJjb2F0Um91Z2huZXNzKSx0aGlzLmNsZWFyY29hdE1hcCYmdGhpcy5jbGVhcmNvYXRNYXAuaXNUZXh0dXJlJiYobi5jbGVhcmNvYXRNYXA9dGhpcy5jbGVhcmNvYXRNYXAudG9KU09OKHQpLnV1aWQpLHRoaXMuY2xlYXJjb2F0Um91Z2huZXNzTWFwJiZ0aGlzLmNsZWFyY29hdFJvdWdobmVzc01hcC5pc1RleHR1cmUmJihuLmNsZWFyY29hdFJvdWdobmVzc01hcD10aGlzLmNsZWFyY29hdFJvdWdobmVzc01hcC50b0pTT04odCkudXVpZCksdGhpcy5jbGVhcmNvYXROb3JtYWxNYXAmJnRoaXMuY2xlYXJjb2F0Tm9ybWFsTWFwLmlzVGV4dHVyZSYmKG4uY2xlYXJjb2F0Tm9ybWFsTWFwPXRoaXMuY2xlYXJjb2F0Tm9ybWFsTWFwLnRvSlNPTih0KS51dWlkLG4uY2xlYXJjb2F0Tm9ybWFsU2NhbGU9dGhpcy5jbGVhcmNvYXROb3JtYWxTY2FsZS50b0FycmF5KCkpLHRoaXMubWFwJiZ0aGlzLm1hcC5pc1RleHR1cmUmJihuLm1hcD10aGlzLm1hcC50b0pTT04odCkudXVpZCksdGhpcy5tYXRjYXAmJnRoaXMubWF0Y2FwLmlzVGV4dHVyZSYmKG4ubWF0Y2FwPXRoaXMubWF0Y2FwLnRvSlNPTih0KS51dWlkKSx0aGlzLmFscGhhTWFwJiZ0aGlzLmFscGhhTWFwLmlzVGV4dHVyZSYmKG4uYWxwaGFNYXA9dGhpcy5hbHBoYU1hcC50b0pTT04odCkudXVpZCksdGhpcy5saWdodE1hcCYmdGhpcy5saWdodE1hcC5pc1RleHR1cmUmJihuLmxpZ2h0TWFwPXRoaXMubGlnaHRNYXAudG9KU09OKHQpLnV1aWQsbi5saWdodE1hcEludGVuc2l0eT10aGlzLmxpZ2h0TWFwSW50ZW5zaXR5KSx0aGlzLmFvTWFwJiZ0aGlzLmFvTWFwLmlzVGV4dHVyZSYmKG4uYW9NYXA9dGhpcy5hb01hcC50b0pTT04odCkudXVpZCxuLmFvTWFwSW50ZW5zaXR5PXRoaXMuYW9NYXBJbnRlbnNpdHkpLHRoaXMuYnVtcE1hcCYmdGhpcy5idW1wTWFwLmlzVGV4dHVyZSYmKG4uYnVtcE1hcD10aGlzLmJ1bXBNYXAudG9KU09OKHQpLnV1aWQsbi5idW1wU2NhbGU9dGhpcy5idW1wU2NhbGUpLHRoaXMubm9ybWFsTWFwJiZ0aGlzLm5vcm1hbE1hcC5pc1RleHR1cmUmJihuLm5vcm1hbE1hcD10aGlzLm5vcm1hbE1hcC50b0pTT04odCkudXVpZCxuLm5vcm1hbE1hcFR5cGU9dGhpcy5ub3JtYWxNYXBUeXBlLG4ubm9ybWFsU2NhbGU9dGhpcy5ub3JtYWxTY2FsZS50b0FycmF5KCkpLHRoaXMuZGlzcGxhY2VtZW50TWFwJiZ0aGlzLmRpc3BsYWNlbWVudE1hcC5pc1RleHR1cmUmJihuLmRpc3BsYWNlbWVudE1hcD10aGlzLmRpc3BsYWNlbWVudE1hcC50b0pTT04odCkudXVpZCxuLmRpc3BsYWNlbWVudFNjYWxlPXRoaXMuZGlzcGxhY2VtZW50U2NhbGUsbi5kaXNwbGFjZW1lbnRCaWFzPXRoaXMuZGlzcGxhY2VtZW50QmlhcyksdGhpcy5yb3VnaG5lc3NNYXAmJnRoaXMucm91Z2huZXNzTWFwLmlzVGV4dHVyZSYmKG4ucm91Z2huZXNzTWFwPXRoaXMucm91Z2huZXNzTWFwLnRvSlNPTih0KS51dWlkKSx0aGlzLm1ldGFsbmVzc01hcCYmdGhpcy5tZXRhbG5lc3NNYXAuaXNUZXh0dXJlJiYobi5tZXRhbG5lc3NNYXA9dGhpcy5tZXRhbG5lc3NNYXAudG9KU09OKHQpLnV1aWQpLHRoaXMuZW1pc3NpdmVNYXAmJnRoaXMuZW1pc3NpdmVNYXAuaXNUZXh0dXJlJiYobi5lbWlzc2l2ZU1hcD10aGlzLmVtaXNzaXZlTWFwLnRvSlNPTih0KS51dWlkKSx0aGlzLnNwZWN1bGFyTWFwJiZ0aGlzLnNwZWN1bGFyTWFwLmlzVGV4dHVyZSYmKG4uc3BlY3VsYXJNYXA9dGhpcy5zcGVjdWxhck1hcC50b0pTT04odCkudXVpZCksdGhpcy5zcGVjdWxhckludGVuc2l0eU1hcCYmdGhpcy5zcGVjdWxhckludGVuc2l0eU1hcC5pc1RleHR1cmUmJihuLnNwZWN1bGFySW50ZW5zaXR5TWFwPXRoaXMuc3BlY3VsYXJJbnRlbnNpdHlNYXAudG9KU09OKHQpLnV1aWQpLHRoaXMuc3BlY3VsYXJUaW50TWFwJiZ0aGlzLnNwZWN1bGFyVGludE1hcC5pc1RleHR1cmUmJihuLnNwZWN1bGFyVGludE1hcD10aGlzLnNwZWN1bGFyVGludE1hcC50b0pTT04odCkudXVpZCksdGhpcy5lbnZNYXAmJnRoaXMuZW52TWFwLmlzVGV4dHVyZSYmKG4uZW52TWFwPXRoaXMuZW52TWFwLnRvSlNPTih0KS51dWlkLHZvaWQgMCE9PXRoaXMuY29tYmluZSYmKG4uY29tYmluZT10aGlzLmNvbWJpbmUpKSx2b2lkIDAhPT10aGlzLmVudk1hcEludGVuc2l0eSYmKG4uZW52TWFwSW50ZW5zaXR5PXRoaXMuZW52TWFwSW50ZW5zaXR5KSx2b2lkIDAhPT10aGlzLnJlZmxlY3Rpdml0eSYmKG4ucmVmbGVjdGl2aXR5PXRoaXMucmVmbGVjdGl2aXR5KSx2b2lkIDAhPT10aGlzLnJlZnJhY3Rpb25SYXRpbyYmKG4ucmVmcmFjdGlvblJhdGlvPXRoaXMucmVmcmFjdGlvblJhdGlvKSx0aGlzLmdyYWRpZW50TWFwJiZ0aGlzLmdyYWRpZW50TWFwLmlzVGV4dHVyZSYmKG4uZ3JhZGllbnRNYXA9dGhpcy5ncmFkaWVudE1hcC50b0pTT04odCkudXVpZCksdm9pZCAwIT09dGhpcy50cmFuc21pc3Npb24mJihuLnRyYW5zbWlzc2lvbj10aGlzLnRyYW5zbWlzc2lvbiksdGhpcy50cmFuc21pc3Npb25NYXAmJnRoaXMudHJhbnNtaXNzaW9uTWFwLmlzVGV4dHVyZSYmKG4udHJhbnNtaXNzaW9uTWFwPXRoaXMudHJhbnNtaXNzaW9uTWFwLnRvSlNPTih0KS51dWlkKSx2b2lkIDAhPT10aGlzLnRoaWNrbmVzcyYmKG4udGhpY2tuZXNzPXRoaXMudGhpY2tuZXNzKSx0aGlzLnRoaWNrbmVzc01hcCYmdGhpcy50aGlja25lc3NNYXAuaXNUZXh0dXJlJiYobi50aGlja25lc3NNYXA9dGhpcy50aGlja25lc3NNYXAudG9KU09OKHQpLnV1aWQpLHZvaWQgMCE9PXRoaXMuYXR0ZW51YXRpb25EaXN0YW5jZSYmKG4uYXR0ZW51YXRpb25EaXN0YW5jZT10aGlzLmF0dGVudWF0aW9uRGlzdGFuY2UpLHZvaWQgMCE9PXRoaXMuYXR0ZW51YXRpb25UaW50JiYobi5hdHRlbnVhdGlvblRpbnQ9dGhpcy5hdHRlbnVhdGlvblRpbnQuZ2V0SGV4KCkpLHZvaWQgMCE9PXRoaXMuc2l6ZSYmKG4uc2l6ZT10aGlzLnNpemUpLG51bGwhPT10aGlzLnNoYWRvd1NpZGUmJihuLnNoYWRvd1NpZGU9dGhpcy5zaGFkb3dTaWRlKSx2b2lkIDAhPT10aGlzLnNpemVBdHRlbnVhdGlvbiYmKG4uc2l6ZUF0dGVudWF0aW9uPXRoaXMuc2l6ZUF0dGVudWF0aW9uKSwxIT09dGhpcy5ibGVuZGluZyYmKG4uYmxlbmRpbmc9dGhpcy5ibGVuZGluZyksMCE9PXRoaXMuc2lkZSYmKG4uc2lkZT10aGlzLnNpZGUpLHRoaXMudmVydGV4Q29sb3JzJiYobi52ZXJ0ZXhDb2xvcnM9ITApLHRoaXMub3BhY2l0eTwxJiYobi5vcGFjaXR5PXRoaXMub3BhY2l0eSksITA9PT10aGlzLnRyYW5zcGFyZW50JiYobi50cmFuc3BhcmVudD10aGlzLnRyYW5zcGFyZW50KSxuLmRlcHRoRnVuYz10aGlzLmRlcHRoRnVuYyxuLmRlcHRoVGVzdD10aGlzLmRlcHRoVGVzdCxuLmRlcHRoV3JpdGU9dGhpcy5kZXB0aFdyaXRlLG4uY29sb3JXcml0ZT10aGlzLmNvbG9yV3JpdGUsbi5zdGVuY2lsV3JpdGU9dGhpcy5zdGVuY2lsV3JpdGUsbi5zdGVuY2lsV3JpdGVNYXNrPXRoaXMuc3RlbmNpbFdyaXRlTWFzayxuLnN0ZW5jaWxGdW5jPXRoaXMuc3RlbmNpbEZ1bmMsbi5zdGVuY2lsUmVmPXRoaXMuc3RlbmNpbFJlZixuLnN0ZW5jaWxGdW5jTWFzaz10aGlzLnN0ZW5jaWxGdW5jTWFzayxuLnN0ZW5jaWxGYWlsPXRoaXMuc3RlbmNpbEZhaWwsbi5zdGVuY2lsWkZhaWw9dGhpcy5zdGVuY2lsWkZhaWwsbi5zdGVuY2lsWlBhc3M9dGhpcy5zdGVuY2lsWlBhc3MsdGhpcy5yb3RhdGlvbiYmMCE9PXRoaXMucm90YXRpb24mJihuLnJvdGF0aW9uPXRoaXMucm90YXRpb24pLCEwPT09dGhpcy5wb2x5Z29uT2Zmc2V0JiYobi5wb2x5Z29uT2Zmc2V0PSEwKSwwIT09dGhpcy5wb2x5Z29uT2Zmc2V0RmFjdG9yJiYobi5wb2x5Z29uT2Zmc2V0RmFjdG9yPXRoaXMucG9seWdvbk9mZnNldEZhY3RvciksMCE9PXRoaXMucG9seWdvbk9mZnNldFVuaXRzJiYobi5wb2x5Z29uT2Zmc2V0VW5pdHM9dGhpcy5wb2x5Z29uT2Zmc2V0VW5pdHMpLHRoaXMubGluZXdpZHRoJiYxIT09dGhpcy5saW5ld2lkdGgmJihuLmxpbmV3aWR0aD10aGlzLmxpbmV3aWR0aCksdm9pZCAwIT09dGhpcy5kYXNoU2l6ZSYmKG4uZGFzaFNpemU9dGhpcy5kYXNoU2l6ZSksdm9pZCAwIT09dGhpcy5nYXBTaXplJiYobi5nYXBTaXplPXRoaXMuZ2FwU2l6ZSksdm9pZCAwIT09dGhpcy5zY2FsZSYmKG4uc2NhbGU9dGhpcy5zY2FsZSksITA9PT10aGlzLmRpdGhlcmluZyYmKG4uZGl0aGVyaW5nPSEwKSx0aGlzLmFscGhhVGVzdD4wJiYobi5hbHBoYVRlc3Q9dGhpcy5hbHBoYVRlc3QpLCEwPT09dGhpcy5hbHBoYVRvQ292ZXJhZ2UmJihuLmFscGhhVG9Db3ZlcmFnZT10aGlzLmFscGhhVG9Db3ZlcmFnZSksITA9PT10aGlzLnByZW11bHRpcGxpZWRBbHBoYSYmKG4ucHJlbXVsdGlwbGllZEFscGhhPXRoaXMucHJlbXVsdGlwbGllZEFscGhhKSwhMD09PXRoaXMud2lyZWZyYW1lJiYobi53aXJlZnJhbWU9dGhpcy53aXJlZnJhbWUpLHRoaXMud2lyZWZyYW1lTGluZXdpZHRoPjEmJihuLndpcmVmcmFtZUxpbmV3aWR0aD10aGlzLndpcmVmcmFtZUxpbmV3aWR0aCksInJvdW5kIiE9PXRoaXMud2lyZWZyYW1lTGluZWNhcCYmKG4ud2lyZWZyYW1lTGluZWNhcD10aGlzLndpcmVmcmFtZUxpbmVjYXApLCJyb3VuZCIhPT10aGlzLndpcmVmcmFtZUxpbmVqb2luJiYobi53aXJlZnJhbWVMaW5lam9pbj10aGlzLndpcmVmcmFtZUxpbmVqb2luKSwhMD09PXRoaXMuZmxhdFNoYWRpbmcmJihuLmZsYXRTaGFkaW5nPXRoaXMuZmxhdFNoYWRpbmcpLCExPT09dGhpcy52aXNpYmxlJiYobi52aXNpYmxlPSExKSwhMT09PXRoaXMudG9uZU1hcHBlZCYmKG4udG9uZU1hcHBlZD0hMSksInt9IiE9PUpTT04uc3RyaW5naWZ5KHRoaXMudXNlckRhdGEpJiYobi51c2VyRGF0YT10aGlzLnVzZXJEYXRhKSxlKXtjb25zdCBlPW8odC50ZXh0dXJlcyksaT1vKHQuaW1hZ2VzKTtlLmxlbmd0aD4wJiYobi50ZXh0dXJlcz1lKSxpLmxlbmd0aD4wJiYobi5pbWFnZXM9aSl9cmV0dXJuIG59Y2xvbmUoKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IpLmNvcHkodGhpcyl9Y29weSh0KXt0aGlzLm5hbWU9dC5uYW1lLHRoaXMuZm9nPXQuZm9nLHRoaXMuYmxlbmRpbmc9dC5ibGVuZGluZyx0aGlzLnNpZGU9dC5zaWRlLHRoaXMudmVydGV4Q29sb3JzPXQudmVydGV4Q29sb3JzLHRoaXMub3BhY2l0eT10Lm9wYWNpdHksdGhpcy50cmFuc3BhcmVudD10LnRyYW5zcGFyZW50LHRoaXMuYmxlbmRTcmM9dC5ibGVuZFNyYyx0aGlzLmJsZW5kRHN0PXQuYmxlbmREc3QsdGhpcy5ibGVuZEVxdWF0aW9uPXQuYmxlbmRFcXVhdGlvbix0aGlzLmJsZW5kU3JjQWxwaGE9dC5ibGVuZFNyY0FscGhhLHRoaXMuYmxlbmREc3RBbHBoYT10LmJsZW5kRHN0QWxwaGEsdGhpcy5ibGVuZEVxdWF0aW9uQWxwaGE9dC5ibGVuZEVxdWF0aW9uQWxwaGEsdGhpcy5kZXB0aEZ1bmM9dC5kZXB0aEZ1bmMsdGhpcy5kZXB0aFRlc3Q9dC5kZXB0aFRlc3QsdGhpcy5kZXB0aFdyaXRlPXQuZGVwdGhXcml0ZSx0aGlzLnN0ZW5jaWxXcml0ZU1hc2s9dC5zdGVuY2lsV3JpdGVNYXNrLHRoaXMuc3RlbmNpbEZ1bmM9dC5zdGVuY2lsRnVuYyx0aGlzLnN0ZW5jaWxSZWY9dC5zdGVuY2lsUmVmLHRoaXMuc3RlbmNpbEZ1bmNNYXNrPXQuc3RlbmNpbEZ1bmNNYXNrLHRoaXMuc3RlbmNpbEZhaWw9dC5zdGVuY2lsRmFpbCx0aGlzLnN0ZW5jaWxaRmFpbD10LnN0ZW5jaWxaRmFpbCx0aGlzLnN0ZW5jaWxaUGFzcz10LnN0ZW5jaWxaUGFzcyx0aGlzLnN0ZW5jaWxXcml0ZT10LnN0ZW5jaWxXcml0ZTtjb25zdCBlPXQuY2xpcHBpbmdQbGFuZXM7bGV0IG49bnVsbDtpZihudWxsIT09ZSl7Y29uc3QgdD1lLmxlbmd0aDtuPW5ldyBBcnJheSh0KTtmb3IobGV0IG89MDtvIT09dDsrK28pbltvXT1lW29dLmNsb25lKCl9cmV0dXJuIHRoaXMuY2xpcHBpbmdQbGFuZXM9bix0aGlzLmNsaXBJbnRlcnNlY3Rpb249dC5jbGlwSW50ZXJzZWN0aW9uLHRoaXMuY2xpcFNoYWRvd3M9dC5jbGlwU2hhZG93cyx0aGlzLnNoYWRvd1NpZGU9dC5zaGFkb3dTaWRlLHRoaXMuY29sb3JXcml0ZT10LmNvbG9yV3JpdGUsdGhpcy5wcmVjaXNpb249dC5wcmVjaXNpb24sdGhpcy5wb2x5Z29uT2Zmc2V0PXQucG9seWdvbk9mZnNldCx0aGlzLnBvbHlnb25PZmZzZXRGYWN0b3I9dC5wb2x5Z29uT2Zmc2V0RmFjdG9yLHRoaXMucG9seWdvbk9mZnNldFVuaXRzPXQucG9seWdvbk9mZnNldFVuaXRzLHRoaXMuZGl0aGVyaW5nPXQuZGl0aGVyaW5nLHRoaXMuYWxwaGFUZXN0PXQuYWxwaGFUZXN0LHRoaXMuYWxwaGFUb0NvdmVyYWdlPXQuYWxwaGFUb0NvdmVyYWdlLHRoaXMucHJlbXVsdGlwbGllZEFscGhhPXQucHJlbXVsdGlwbGllZEFscGhhLHRoaXMudmlzaWJsZT10LnZpc2libGUsdGhpcy50b25lTWFwcGVkPXQudG9uZU1hcHBlZCx0aGlzLnVzZXJEYXRhPUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodC51c2VyRGF0YSkpLHRoaXN9ZGlzcG9zZSgpe3RoaXMuZGlzcGF0Y2hFdmVudCh7dHlwZToiZGlzcG9zZSJ9KX1zZXQgbmVlZHNVcGRhdGUodCl7ITA9PT10JiZ0aGlzLnZlcnNpb24rK319Vmx0LnByb3RvdHlwZS5pc01hdGVyaWFsPSEwO2NvbnN0IGpsdD17YWxpY2VibHVlOjE1NzkyMzgzLGFudGlxdWV3aGl0ZToxNjQ0NDM3NSxhcXVhOjY1NTM1LGFxdWFtYXJpbmU6ODM4ODU2NCxhenVyZToxNTc5NDE3NSxiZWlnZToxNjExOTI2MCxiaXNxdWU6MTY3NzAyNDQsYmxhY2s6MCxibGFuY2hlZGFsbW9uZDoxNjc3MjA0NSxibHVlOjI1NSxibHVldmlvbGV0OjkwNTUyMDIsYnJvd246MTA4MjQyMzQsYnVybHl3b29kOjE0NTk2MjMxLGNhZGV0Ymx1ZTo2MjY2NTI4LGNoYXJ0cmV1c2U6ODM4ODM1MixjaG9jb2xhdGU6MTM3ODk0NzAsY29yYWw6MTY3NDQyNzIsY29ybmZsb3dlcmJsdWU6NjU5MTk4MSxjb3Juc2lsazoxNjc3NTM4OCxjcmltc29uOjE0NDIzMTAwLGN5YW46NjU1MzUsZGFya2JsdWU6MTM5LGRhcmtjeWFuOjM1NzIzLGRhcmtnb2xkZW5yb2Q6MTIwOTI5MzksZGFya2dyYXk6MTExMTkwMTcsZGFya2dyZWVuOjI1NjAwLGRhcmtncmV5OjExMTE5MDE3LGRhcmtraGFraToxMjQzMzI1OSxkYXJrbWFnZW50YTo5MTA5NjQzLGRhcmtvbGl2ZWdyZWVuOjU1OTc5OTksZGFya29yYW5nZToxNjc0NzUyMCxkYXJrb3JjaGlkOjEwMDQwMDEyLGRhcmtyZWQ6OTEwOTUwNCxkYXJrc2FsbW9uOjE1MzA4NDEwLGRhcmtzZWFncmVlbjo5NDE5OTE5LGRhcmtzbGF0ZWJsdWU6NDczNDM0NyxkYXJrc2xhdGVncmF5OjMxMDA0OTUsZGFya3NsYXRlZ3JleTozMTAwNDk1LGRhcmt0dXJxdW9pc2U6NTI5NDUsZGFya3Zpb2xldDo5Njk5NTM5LGRlZXBwaW5rOjE2NzE2OTQ3LGRlZXBza3libHVlOjQ5MTUxLGRpbWdyYXk6NjkwODI2NSxkaW1ncmV5OjY5MDgyNjUsZG9kZ2VyYmx1ZToyMDAzMTk5LGZpcmVicmljazoxMTY3NDE0NixmbG9yYWx3aGl0ZToxNjc3NTkyMCxmb3Jlc3RncmVlbjoyMjYzODQyLGZ1Y2hzaWE6MTY3MTE5MzUsZ2FpbnNib3JvOjE0NDc0NDYwLGdob3N0d2hpdGU6MTYzMTY2NzEsZ29sZDoxNjc2NjcyMCxnb2xkZW5yb2Q6MTQzMjkxMjAsZ3JheTo4NDIxNTA0LGdyZWVuOjMyNzY4LGdyZWVueWVsbG93OjExNDAzMDU1LGdyZXk6ODQyMTUwNCxob25leWRldzoxNTc5NDE2MCxob3RwaW5rOjE2NzM4NzQwLGluZGlhbnJlZDoxMzQ1ODUyNCxpbmRpZ286NDkxNTMzMCxpdm9yeToxNjc3NzIwMCxraGFraToxNTc4NzY2MCxsYXZlbmRlcjoxNTEzMjQxMCxsYXZlbmRlcmJsdXNoOjE2NzczMzY1LGxhd25ncmVlbjo4MTkwOTc2LGxlbW9uY2hpZmZvbjoxNjc3NTg4NSxsaWdodGJsdWU6MTEzOTMyNTQsbGlnaHRjb3JhbDoxNTc2MTUzNixsaWdodGN5YW46MTQ3NDU1OTksbGlnaHRnb2xkZW5yb2R5ZWxsb3c6MTY0NDgyMTAsbGlnaHRncmF5OjEzODgyMzIzLGxpZ2h0Z3JlZW46OTQ5ODI1NixsaWdodGdyZXk6MTM4ODIzMjMsbGlnaHRwaW5rOjE2NzU4NDY1LGxpZ2h0c2FsbW9uOjE2NzUyNzYyLGxpZ2h0c2VhZ3JlZW46MjE0Mjg5MCxsaWdodHNreWJsdWU6ODkwMDM0NixsaWdodHNsYXRlZ3JheTo3ODMzNzUzLGxpZ2h0c2xhdGVncmV5Ojc4MzM3NTMsbGlnaHRzdGVlbGJsdWU6MTE1ODQ3MzQsbGlnaHR5ZWxsb3c6MTY3NzcxODQsbGltZTo2NTI4MCxsaW1lZ3JlZW46MzMyOTMzMCxsaW5lbjoxNjQ0NTY3MCxtYWdlbnRhOjE2NzExOTM1LG1hcm9vbjo4Mzg4NjA4LG1lZGl1bWFxdWFtYXJpbmU6NjczNzMyMixtZWRpdW1ibHVlOjIwNSxtZWRpdW1vcmNoaWQ6MTIyMTE2NjcsbWVkaXVtcHVycGxlOjk2NjI2ODMsbWVkaXVtc2VhZ3JlZW46Mzk3ODA5NyxtZWRpdW1zbGF0ZWJsdWU6ODA4Nzc5MCxtZWRpdW1zcHJpbmdncmVlbjo2NDE1NCxtZWRpdW10dXJxdW9pc2U6NDc3MjMwMCxtZWRpdW12aW9sZXRyZWQ6MTMwNDcxNzMsbWlkbmlnaHRibHVlOjE2NDQ5MTIsbWludGNyZWFtOjE2MTIxODUwLG1pc3R5cm9zZToxNjc3MDI3Myxtb2NjYXNpbjoxNjc3MDIyOSxuYXZham93aGl0ZToxNjc2ODY4NSxuYXZ5OjEyOCxvbGRsYWNlOjE2NjQzNTU4LG9saXZlOjg0MjEzNzYsb2xpdmVkcmFiOjcwNDg3Mzksb3JhbmdlOjE2NzUzOTIwLG9yYW5nZXJlZDoxNjcyOTM0NCxvcmNoaWQ6MTQzMTU3MzQscGFsZWdvbGRlbnJvZDoxNTY1NzEzMCxwYWxlZ3JlZW46MTAwMjU4ODAscGFsZXR1cnF1b2lzZToxMTUyOTk2NixwYWxldmlvbGV0cmVkOjE0MzgxMjAzLHBhcGF5YXdoaXA6MTY3NzMwNzcscGVhY2hwdWZmOjE2NzY3NjczLHBlcnU6MTM0Njg5OTEscGluazoxNjc2MTAzNSxwbHVtOjE0NTI0NjM3LHBvd2RlcmJsdWU6MTE1OTE5MTAscHVycGxlOjgzODg3MzYscmViZWNjYXB1cnBsZTo2Njk3ODgxLHJlZDoxNjcxMTY4MCxyb3N5YnJvd246MTIzNTc1MTkscm95YWxibHVlOjQyODY5NDUsc2FkZGxlYnJvd246OTEyNzE4NyxzYWxtb246MTY0MTY4ODIsc2FuZHlicm93bjoxNjAzMjg2NCxzZWFncmVlbjozMDUwMzI3LHNlYXNoZWxsOjE2Nzc0NjM4LHNpZW5uYToxMDUwNjc5NyxzaWx2ZXI6MTI2MzIyNTYsc2t5Ymx1ZTo4OTAwMzMxLHNsYXRlYmx1ZTo2OTcwMDYxLHNsYXRlZ3JheTo3MzcyOTQ0LHNsYXRlZ3JleTo3MzcyOTQ0LHNub3c6MTY3NzU5MzAsc3ByaW5nZ3JlZW46NjU0MDcsc3RlZWxibHVlOjQ2MjA5ODAsdGFuOjEzODA4NzgwLHRlYWw6MzI4OTYsdGhpc3RsZToxNDIwNDg4OCx0b21hdG86MTY3MzcwOTUsdHVycXVvaXNlOjQyNTE4NTYsdmlvbGV0OjE1NjMxMDg2LHdoZWF0OjE2MTEzMzMxLHdoaXRlOjE2Nzc3MjE1LHdoaXRlc21va2U6MTYxMTkyODUseWVsbG93OjE2Nzc2OTYwLHllbGxvd2dyZWVuOjEwMTQ1MDc0fSxVbHQ9e2g6MCxzOjAsbDowfSxXbHQ9e2g6MCxzOjAsbDowfTtmdW5jdGlvbiBHbHQodCxlLG4pe3JldHVybiBuPDAmJihuKz0xKSxuPjEmJihuLT0xKSxuPDEvNj90KzYqKGUtdCkqbjpuPC41P2U6bjwyLzM/dCs2KihlLXQpKigyLzMtbik6dH1mdW5jdGlvbiBZbHQodCl7cmV0dXJuIHQ8LjA0MDQ1Py4wNzczOTkzODA4KnQ6TWF0aC5wb3coLjk0Nzg2NzI5ODYqdCsuMDUyMTMyNzAxNCwyLjQpfWZ1bmN0aW9uIHFsdCh0KXtyZXR1cm4gdDwuMDAzMTMwOD8xMi45Mip0OjEuMDU1Kk1hdGgucG93KHQsLjQxNjY2KS0uMDU1fWNsYXNzIFpsdHtjb25zdHJ1Y3Rvcih0LGUsbil7cmV0dXJuIHZvaWQgMD09PWUmJnZvaWQgMD09PW4/dGhpcy5zZXQodCk6dGhpcy5zZXRSR0IodCxlLG4pfXNldCh0KXtyZXR1cm4gdCYmdC5pc0NvbG9yP3RoaXMuY29weSh0KToibnVtYmVyIj09dHlwZW9mIHQ/dGhpcy5zZXRIZXgodCk6InN0cmluZyI9PXR5cGVvZiB0JiZ0aGlzLnNldFN0eWxlKHQpLHRoaXN9c2V0U2NhbGFyKHQpe3JldHVybiB0aGlzLnI9dCx0aGlzLmc9dCx0aGlzLmI9dCx0aGlzfXNldEhleCh0KXtyZXR1cm4gdD1NYXRoLmZsb29yKHQpLHRoaXMucj0odD4+MTYmMjU1KS8yNTUsdGhpcy5nPSh0Pj44JjI1NSkvMjU1LHRoaXMuYj0oMjU1JnQpLzI1NSx0aGlzfXNldFJHQih0LGUsbil7cmV0dXJuIHRoaXMucj10LHRoaXMuZz1lLHRoaXMuYj1uLHRoaXN9c2V0SFNMKHQsZSxuKXtpZih0PShmdW5jdGlvbiBvKHQsZSl7cmV0dXJuKHQlZStlKSVlfSkodCwxKSxlPXBzdChlLDAsMSksbj1wc3QobiwwLDEpLDA9PT1lKXRoaXMucj10aGlzLmc9dGhpcy5iPW47ZWxzZXtjb25zdCBvPW48PS41P24qKDErZSk6bitlLW4qZSxpPTIqbi1vO3RoaXMucj1HbHQoaSxvLHQrMS8zKSx0aGlzLmc9R2x0KGksbyx0KSx0aGlzLmI9R2x0KGksbyx0LTEvMyl9cmV0dXJuIHRoaXN9c2V0U3R5bGUodCl7ZnVuY3Rpb24gZShlKXt2b2lkIDAhPT1lJiZwYXJzZUZsb2F0KGUpPDEmJmNvbnNvbGUud2FybigiVEhSRUUuQ29sb3I6IEFscGhhIGNvbXBvbmVudCBvZiAiK3QrIiB3aWxsIGJlIGlnbm9yZWQuIil9bGV0IG47aWYobj0vXigoPzpyZ2J8aHNsKWE/KVwoKFteXCldKilcKS8uZXhlYyh0KSl7bGV0IHQ7Y29uc3Qgbz1uWzJdO3N3aXRjaChuWzFdKXtjYXNlInJnYiI6Y2FzZSJyZ2JhIjppZih0PS9eXHMqKFxkKylccyosXHMqKFxkKylccyosXHMqKFxkKylccyooPzosXHMqKFxkKlwuP1xkKylccyopPyQvLmV4ZWMobykpcmV0dXJuIHRoaXMucj1NYXRoLm1pbigyNTUscGFyc2VJbnQodFsxXSwxMCkpLzI1NSx0aGlzLmc9TWF0aC5taW4oMjU1LHBhcnNlSW50KHRbMl0sMTApKS8yNTUsdGhpcy5iPU1hdGgubWluKDI1NSxwYXJzZUludCh0WzNdLDEwKSkvMjU1LGUodFs0XSksdGhpcztpZih0PS9eXHMqKFxkKylcJVxzKixccyooXGQrKVwlXHMqLFxzKihcZCspXCVccyooPzosXHMqKFxkKlwuP1xkKylccyopPyQvLmV4ZWMobykpcmV0dXJuIHRoaXMucj1NYXRoLm1pbigxMDAscGFyc2VJbnQodFsxXSwxMCkpLzEwMCx0aGlzLmc9TWF0aC5taW4oMTAwLHBhcnNlSW50KHRbMl0sMTApKS8xMDAsdGhpcy5iPU1hdGgubWluKDEwMCxwYXJzZUludCh0WzNdLDEwKSkvMTAwLGUodFs0XSksdGhpczticmVhaztjYXNlImhzbCI6Y2FzZSJoc2xhIjppZih0PS9eXHMqKFxkKlwuP1xkKylccyosXHMqKFxkKylcJVxzKixccyooXGQrKVwlXHMqKD86LFxzKihcZCpcLj9cZCspXHMqKT8kLy5leGVjKG8pKXtjb25zdCBuPXBhcnNlRmxvYXQodFsxXSkvMzYwLG89cGFyc2VJbnQodFsyXSwxMCkvMTAwLGk9cGFyc2VJbnQodFszXSwxMCkvMTAwO3JldHVybiBlKHRbNF0pLHRoaXMuc2V0SFNMKG4sbyxpKX19fWVsc2UgaWYobj0vXlwjKFtBLUZhLWZcZF0rKSQvLmV4ZWModCkpe2NvbnN0IHQ9blsxXSxlPXQubGVuZ3RoO2lmKDM9PT1lKXJldHVybiB0aGlzLnI9cGFyc2VJbnQodC5jaGFyQXQoMCkrdC5jaGFyQXQoMCksMTYpLzI1NSx0aGlzLmc9cGFyc2VJbnQodC5jaGFyQXQoMSkrdC5jaGFyQXQoMSksMTYpLzI1NSx0aGlzLmI9cGFyc2VJbnQodC5jaGFyQXQoMikrdC5jaGFyQXQoMiksMTYpLzI1NSx0aGlzO2lmKDY9PT1lKXJldHVybiB0aGlzLnI9cGFyc2VJbnQodC5jaGFyQXQoMCkrdC5jaGFyQXQoMSksMTYpLzI1NSx0aGlzLmc9cGFyc2VJbnQodC5jaGFyQXQoMikrdC5jaGFyQXQoMyksMTYpLzI1NSx0aGlzLmI9cGFyc2VJbnQodC5jaGFyQXQoNCkrdC5jaGFyQXQoNSksMTYpLzI1NSx0aGlzfXJldHVybiB0JiZ0Lmxlbmd0aD4wP3RoaXMuc2V0Q29sb3JOYW1lKHQpOnRoaXN9c2V0Q29sb3JOYW1lKHQpe2NvbnN0IGU9amx0W3QudG9Mb3dlckNhc2UoKV07cmV0dXJuIHZvaWQgMCE9PWU/dGhpcy5zZXRIZXgoZSk6Y29uc29sZS53YXJuKCJUSFJFRS5Db2xvcjogVW5rbm93biBjb2xvciAiK3QpLHRoaXN9Y2xvbmUoKXtyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IodGhpcy5yLHRoaXMuZyx0aGlzLmIpfWNvcHkodCl7cmV0dXJuIHRoaXMucj10LnIsdGhpcy5nPXQuZyx0aGlzLmI9dC5iLHRoaXN9Y29weUdhbW1hVG9MaW5lYXIodCxlPTIpe3JldHVybiB0aGlzLnI9TWF0aC5wb3codC5yLGUpLHRoaXMuZz1NYXRoLnBvdyh0LmcsZSksdGhpcy5iPU1hdGgucG93KHQuYixlKSx0aGlzfWNvcHlMaW5lYXJUb0dhbW1hKHQsZT0yKXtjb25zdCBuPWU+MD8xL2U6MTtyZXR1cm4gdGhpcy5yPU1hdGgucG93KHQucixuKSx0aGlzLmc9TWF0aC5wb3codC5nLG4pLHRoaXMuYj1NYXRoLnBvdyh0LmIsbiksdGhpc31jb252ZXJ0R2FtbWFUb0xpbmVhcih0KXtyZXR1cm4gdGhpcy5jb3B5R2FtbWFUb0xpbmVhcih0aGlzLHQpLHRoaXN9Y29udmVydExpbmVhclRvR2FtbWEodCl7cmV0dXJuIHRoaXMuY29weUxpbmVhclRvR2FtbWEodGhpcyx0KSx0aGlzfWNvcHlTUkdCVG9MaW5lYXIodCl7cmV0dXJuIHRoaXMucj1ZbHQodC5yKSx0aGlzLmc9WWx0KHQuZyksdGhpcy5iPVlsdCh0LmIpLHRoaXN9Y29weUxpbmVhclRvU1JHQih0KXtyZXR1cm4gdGhpcy5yPXFsdCh0LnIpLHRoaXMuZz1xbHQodC5nKSx0aGlzLmI9cWx0KHQuYiksdGhpc31jb252ZXJ0U1JHQlRvTGluZWFyKCl7cmV0dXJuIHRoaXMuY29weVNSR0JUb0xpbmVhcih0aGlzKSx0aGlzfWNvbnZlcnRMaW5lYXJUb1NSR0IoKXtyZXR1cm4gdGhpcy5jb3B5TGluZWFyVG9TUkdCKHRoaXMpLHRoaXN9Z2V0SGV4KCl7cmV0dXJuIDI1NSp0aGlzLnI8PDE2XjI1NSp0aGlzLmc8PDheMjU1KnRoaXMuYjw8MH1nZXRIZXhTdHJpbmcoKXtyZXR1cm4oIjAwMDAwMCIrdGhpcy5nZXRIZXgoKS50b1N0cmluZygxNikpLnNsaWNlKC02KX1nZXRIU0wodCl7Y29uc3QgZT10aGlzLnIsbj10aGlzLmcsbz10aGlzLmIsaT1NYXRoLm1heChlLG4sbyksYT1NYXRoLm1pbihlLG4sbyk7bGV0IHIscztjb25zdCBsPShhK2kpLzI7aWYoYT09PWkpcj0wLHM9MDtlbHNle2NvbnN0IHQ9aS1hO3N3aXRjaChzPWw8PS41P3QvKGkrYSk6dC8oMi1pLWEpLGkpe2Nhc2UgZTpyPShuLW8pL3QrKG48bz82OjApO2JyZWFrO2Nhc2UgbjpyPShvLWUpL3QrMjticmVhaztjYXNlIG86cj0oZS1uKS90KzR9ci89Nn1yZXR1cm4gdC5oPXIsdC5zPXMsdC5sPWwsdH1nZXRTdHlsZSgpe3JldHVybiJyZ2IoIisoMjU1KnRoaXMucnwwKSsiLCIrKDI1NSp0aGlzLmd8MCkrIiwiKygyNTUqdGhpcy5ifDApKyIpIn1vZmZzZXRIU0wodCxlLG4pe3JldHVybiB0aGlzLmdldEhTTChVbHQpLFVsdC5oKz10LFVsdC5zKz1lLFVsdC5sKz1uLHRoaXMuc2V0SFNMKFVsdC5oLFVsdC5zLFVsdC5sKSx0aGlzfWFkZCh0KXtyZXR1cm4gdGhpcy5yKz10LnIsdGhpcy5nKz10LmcsdGhpcy5iKz10LmIsdGhpc31hZGRDb2xvcnModCxlKXtyZXR1cm4gdGhpcy5yPXQucitlLnIsdGhpcy5nPXQuZytlLmcsdGhpcy5iPXQuYitlLmIsdGhpc31hZGRTY2FsYXIodCl7cmV0dXJuIHRoaXMucis9dCx0aGlzLmcrPXQsdGhpcy5iKz10LHRoaXN9c3ViKHQpe3JldHVybiB0aGlzLnI9TWF0aC5tYXgoMCx0aGlzLnItdC5yKSx0aGlzLmc9TWF0aC5tYXgoMCx0aGlzLmctdC5nKSx0aGlzLmI9TWF0aC5tYXgoMCx0aGlzLmItdC5iKSx0aGlzfW11bHRpcGx5KHQpe3JldHVybiB0aGlzLnIqPXQucix0aGlzLmcqPXQuZyx0aGlzLmIqPXQuYix0aGlzfW11bHRpcGx5U2NhbGFyKHQpe3JldHVybiB0aGlzLnIqPXQsdGhpcy5nKj10LHRoaXMuYio9dCx0aGlzfWxlcnAodCxlKXtyZXR1cm4gdGhpcy5yKz0odC5yLXRoaXMucikqZSx0aGlzLmcrPSh0LmctdGhpcy5nKSplLHRoaXMuYis9KHQuYi10aGlzLmIpKmUsdGhpc31sZXJwQ29sb3JzKHQsZSxuKXtyZXR1cm4gdGhpcy5yPXQucisoZS5yLXQucikqbix0aGlzLmc9dC5nKyhlLmctdC5nKSpuLHRoaXMuYj10LmIrKGUuYi10LmIpKm4sdGhpc31sZXJwSFNMKHQsZSl7dGhpcy5nZXRIU0woVWx0KSx0LmdldEhTTChXbHQpO2NvbnN0IG49bXN0KFVsdC5oLFdsdC5oLGUpLG89bXN0KFVsdC5zLFdsdC5zLGUpLGk9bXN0KFVsdC5sLFdsdC5sLGUpO3JldHVybiB0aGlzLnNldEhTTChuLG8saSksdGhpc31lcXVhbHModCl7cmV0dXJuIHQucj09PXRoaXMuciYmdC5nPT09dGhpcy5nJiZ0LmI9PT10aGlzLmJ9ZnJvbUFycmF5KHQsZT0wKXtyZXR1cm4gdGhpcy5yPXRbZV0sdGhpcy5nPXRbZSsxXSx0aGlzLmI9dFtlKzJdLHRoaXN9dG9BcnJheSh0PVtdLGU9MCl7cmV0dXJuIHRbZV09dGhpcy5yLHRbZSsxXT10aGlzLmcsdFtlKzJdPXRoaXMuYix0fWZyb21CdWZmZXJBdHRyaWJ1dGUodCxlKXtyZXR1cm4gdGhpcy5yPXQuZ2V0WChlKSx0aGlzLmc9dC5nZXRZKGUpLHRoaXMuYj10LmdldFooZSksITA9PT10Lm5vcm1hbGl6ZWQmJih0aGlzLnIvPTI1NSx0aGlzLmcvPTI1NSx0aGlzLmIvPTI1NSksdGhpc310b0pTT04oKXtyZXR1cm4gdGhpcy5nZXRIZXgoKX19Wmx0Lk5BTUVTPWpsdCxabHQucHJvdG90eXBlLmlzQ29sb3I9ITAsWmx0LnByb3RvdHlwZS5yPTEsWmx0LnByb3RvdHlwZS5nPTEsWmx0LnByb3RvdHlwZS5iPTE7Y2xhc3MgWGx0IGV4dGVuZHMgVmx0e2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy50eXBlPSJNZXNoQmFzaWNNYXRlcmlhbCIsdGhpcy5jb2xvcj1uZXcgWmx0KDE2Nzc3MjE1KSx0aGlzLm1hcD1udWxsLHRoaXMubGlnaHRNYXA9bnVsbCx0aGlzLmxpZ2h0TWFwSW50ZW5zaXR5PTEsdGhpcy5hb01hcD1udWxsLHRoaXMuYW9NYXBJbnRlbnNpdHk9MSx0aGlzLnNwZWN1bGFyTWFwPW51bGwsdGhpcy5hbHBoYU1hcD1udWxsLHRoaXMuZW52TWFwPW51bGwsdGhpcy5jb21iaW5lPTAsdGhpcy5yZWZsZWN0aXZpdHk9MSx0aGlzLnJlZnJhY3Rpb25SYXRpbz0uOTgsdGhpcy53aXJlZnJhbWU9ITEsdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9MSx0aGlzLndpcmVmcmFtZUxpbmVjYXA9InJvdW5kIix0aGlzLndpcmVmcmFtZUxpbmVqb2luPSJyb3VuZCIsdGhpcy5zZXRWYWx1ZXModCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmNvbG9yLmNvcHkodC5jb2xvciksdGhpcy5tYXA9dC5tYXAsdGhpcy5saWdodE1hcD10LmxpZ2h0TWFwLHRoaXMubGlnaHRNYXBJbnRlbnNpdHk9dC5saWdodE1hcEludGVuc2l0eSx0aGlzLmFvTWFwPXQuYW9NYXAsdGhpcy5hb01hcEludGVuc2l0eT10LmFvTWFwSW50ZW5zaXR5LHRoaXMuc3BlY3VsYXJNYXA9dC5zcGVjdWxhck1hcCx0aGlzLmFscGhhTWFwPXQuYWxwaGFNYXAsdGhpcy5lbnZNYXA9dC5lbnZNYXAsdGhpcy5jb21iaW5lPXQuY29tYmluZSx0aGlzLnJlZmxlY3Rpdml0eT10LnJlZmxlY3Rpdml0eSx0aGlzLnJlZnJhY3Rpb25SYXRpbz10LnJlZnJhY3Rpb25SYXRpbyx0aGlzLndpcmVmcmFtZT10LndpcmVmcmFtZSx0aGlzLndpcmVmcmFtZUxpbmV3aWR0aD10LndpcmVmcmFtZUxpbmV3aWR0aCx0aGlzLndpcmVmcmFtZUxpbmVjYXA9dC53aXJlZnJhbWVMaW5lY2FwLHRoaXMud2lyZWZyYW1lTGluZWpvaW49dC53aXJlZnJhbWVMaW5lam9pbix0aGlzfX1YbHQucHJvdG90eXBlLmlzTWVzaEJhc2ljTWF0ZXJpYWw9ITA7Y29uc3QgS2x0PW5ldyB3c3QsSmx0PW5ldyBnc3Q7Y2xhc3MgUWx0e2NvbnN0cnVjdG9yKHQsZSxuKXtpZihBcnJheS5pc0FycmF5KHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIlRIUkVFLkJ1ZmZlckF0dHJpYnV0ZTogYXJyYXkgc2hvdWxkIGJlIGEgVHlwZWQgQXJyYXkuIik7dGhpcy5uYW1lPSIiLHRoaXMuYXJyYXk9dCx0aGlzLml0ZW1TaXplPWUsdGhpcy5jb3VudD12b2lkIDAhPT10P3QubGVuZ3RoL2U6MCx0aGlzLm5vcm1hbGl6ZWQ9ITA9PT1uLHRoaXMudXNhZ2U9b3N0LHRoaXMudXBkYXRlUmFuZ2U9e29mZnNldDowLGNvdW50Oi0xfSx0aGlzLnZlcnNpb249MH1vblVwbG9hZENhbGxiYWNrKCl7fXNldCBuZWVkc1VwZGF0ZSh0KXshMD09PXQmJnRoaXMudmVyc2lvbisrfXNldFVzYWdlKHQpe3JldHVybiB0aGlzLnVzYWdlPXQsdGhpc31jb3B5KHQpe3JldHVybiB0aGlzLm5hbWU9dC5uYW1lLHRoaXMuYXJyYXk9bmV3IHQuYXJyYXkuY29uc3RydWN0b3IodC5hcnJheSksdGhpcy5pdGVtU2l6ZT10Lml0ZW1TaXplLHRoaXMuY291bnQ9dC5jb3VudCx0aGlzLm5vcm1hbGl6ZWQ9dC5ub3JtYWxpemVkLHRoaXMudXNhZ2U9dC51c2FnZSx0aGlzfWNvcHlBdCh0LGUsbil7dCo9dGhpcy5pdGVtU2l6ZSxuKj1lLml0ZW1TaXplO2ZvcihsZXQgbz0wLGk9dGhpcy5pdGVtU2l6ZTtvPGk7bysrKXRoaXMuYXJyYXlbdCtvXT1lLmFycmF5W24rb107cmV0dXJuIHRoaXN9Y29weUFycmF5KHQpe3JldHVybiB0aGlzLmFycmF5LnNldCh0KSx0aGlzfWNvcHlDb2xvcnNBcnJheSh0KXtjb25zdCBlPXRoaXMuYXJyYXk7bGV0IG49MDtmb3IobGV0IG89MCxpPXQubGVuZ3RoO288aTtvKyspe2xldCBpPXRbb107dm9pZCAwPT09aSYmKGNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyQXR0cmlidXRlLmNvcHlDb2xvcnNBcnJheSgpOiBjb2xvciBpcyB1bmRlZmluZWQiLG8pLGk9bmV3IFpsdCksZVtuKytdPWkucixlW24rK109aS5nLGVbbisrXT1pLmJ9cmV0dXJuIHRoaXN9Y29weVZlY3RvcjJzQXJyYXkodCl7Y29uc3QgZT10aGlzLmFycmF5O2xldCBuPTA7Zm9yKGxldCBvPTAsaT10Lmxlbmd0aDtvPGk7bysrKXtsZXQgaT10W29dO3ZvaWQgMD09PWkmJihjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckF0dHJpYnV0ZS5jb3B5VmVjdG9yMnNBcnJheSgpOiB2ZWN0b3IgaXMgdW5kZWZpbmVkIixvKSxpPW5ldyBnc3QpLGVbbisrXT1pLngsZVtuKytdPWkueX1yZXR1cm4gdGhpc31jb3B5VmVjdG9yM3NBcnJheSh0KXtjb25zdCBlPXRoaXMuYXJyYXk7bGV0IG49MDtmb3IobGV0IG89MCxpPXQubGVuZ3RoO288aTtvKyspe2xldCBpPXRbb107dm9pZCAwPT09aSYmKGNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyQXR0cmlidXRlLmNvcHlWZWN0b3Izc0FycmF5KCk6IHZlY3RvciBpcyB1bmRlZmluZWQiLG8pLGk9bmV3IHdzdCksZVtuKytdPWkueCxlW24rK109aS55LGVbbisrXT1pLnp9cmV0dXJuIHRoaXN9Y29weVZlY3RvcjRzQXJyYXkodCl7Y29uc3QgZT10aGlzLmFycmF5O2xldCBuPTA7Zm9yKGxldCBvPTAsaT10Lmxlbmd0aDtvPGk7bysrKXtsZXQgaT10W29dO3ZvaWQgMD09PWkmJihjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckF0dHJpYnV0ZS5jb3B5VmVjdG9yNHNBcnJheSgpOiB2ZWN0b3IgaXMgdW5kZWZpbmVkIixvKSxpPW5ldyB2c3QpLGVbbisrXT1pLngsZVtuKytdPWkueSxlW24rK109aS56LGVbbisrXT1pLnd9cmV0dXJuIHRoaXN9YXBwbHlNYXRyaXgzKHQpe2lmKDI9PT10aGlzLml0ZW1TaXplKWZvcihsZXQgZT0wLG49dGhpcy5jb3VudDtlPG47ZSsrKUpsdC5mcm9tQnVmZmVyQXR0cmlidXRlKHRoaXMsZSksSmx0LmFwcGx5TWF0cml4Myh0KSx0aGlzLnNldFhZKGUsSmx0LngsSmx0LnkpO2Vsc2UgaWYoMz09PXRoaXMuaXRlbVNpemUpZm9yKGxldCBlPTAsbj10aGlzLmNvdW50O2U8bjtlKyspS2x0LmZyb21CdWZmZXJBdHRyaWJ1dGUodGhpcyxlKSxLbHQuYXBwbHlNYXRyaXgzKHQpLHRoaXMuc2V0WFlaKGUsS2x0LngsS2x0LnksS2x0LnopO3JldHVybiB0aGlzfWFwcGx5TWF0cml4NCh0KXtmb3IobGV0IGU9MCxuPXRoaXMuY291bnQ7ZTxuO2UrKylLbHQueD10aGlzLmdldFgoZSksS2x0Lnk9dGhpcy5nZXRZKGUpLEtsdC56PXRoaXMuZ2V0WihlKSxLbHQuYXBwbHlNYXRyaXg0KHQpLHRoaXMuc2V0WFlaKGUsS2x0LngsS2x0LnksS2x0LnopO3JldHVybiB0aGlzfWFwcGx5Tm9ybWFsTWF0cml4KHQpe2ZvcihsZXQgZT0wLG49dGhpcy5jb3VudDtlPG47ZSsrKUtsdC54PXRoaXMuZ2V0WChlKSxLbHQueT10aGlzLmdldFkoZSksS2x0Lno9dGhpcy5nZXRaKGUpLEtsdC5hcHBseU5vcm1hbE1hdHJpeCh0KSx0aGlzLnNldFhZWihlLEtsdC54LEtsdC55LEtsdC56KTtyZXR1cm4gdGhpc310cmFuc2Zvcm1EaXJlY3Rpb24odCl7Zm9yKGxldCBlPTAsbj10aGlzLmNvdW50O2U8bjtlKyspS2x0Lng9dGhpcy5nZXRYKGUpLEtsdC55PXRoaXMuZ2V0WShlKSxLbHQuej10aGlzLmdldFooZSksS2x0LnRyYW5zZm9ybURpcmVjdGlvbih0KSx0aGlzLnNldFhZWihlLEtsdC54LEtsdC55LEtsdC56KTtyZXR1cm4gdGhpc31zZXQodCxlPTApe3JldHVybiB0aGlzLmFycmF5LnNldCh0LGUpLHRoaXN9Z2V0WCh0KXtyZXR1cm4gdGhpcy5hcnJheVt0KnRoaXMuaXRlbVNpemVdfXNldFgodCxlKXtyZXR1cm4gdGhpcy5hcnJheVt0KnRoaXMuaXRlbVNpemVdPWUsdGhpc31nZXRZKHQpe3JldHVybiB0aGlzLmFycmF5W3QqdGhpcy5pdGVtU2l6ZSsxXX1zZXRZKHQsZSl7cmV0dXJuIHRoaXMuYXJyYXlbdCp0aGlzLml0ZW1TaXplKzFdPWUsdGhpc31nZXRaKHQpe3JldHVybiB0aGlzLmFycmF5W3QqdGhpcy5pdGVtU2l6ZSsyXX1zZXRaKHQsZSl7cmV0dXJuIHRoaXMuYXJyYXlbdCp0aGlzLml0ZW1TaXplKzJdPWUsdGhpc31nZXRXKHQpe3JldHVybiB0aGlzLmFycmF5W3QqdGhpcy5pdGVtU2l6ZSszXX1zZXRXKHQsZSl7cmV0dXJuIHRoaXMuYXJyYXlbdCp0aGlzLml0ZW1TaXplKzNdPWUsdGhpc31zZXRYWSh0LGUsbil7cmV0dXJuIHRoaXMuYXJyYXlbKHQqPXRoaXMuaXRlbVNpemUpKzBdPWUsdGhpcy5hcnJheVt0KzFdPW4sdGhpc31zZXRYWVoodCxlLG4sbyl7cmV0dXJuIHRoaXMuYXJyYXlbKHQqPXRoaXMuaXRlbVNpemUpKzBdPWUsdGhpcy5hcnJheVt0KzFdPW4sdGhpcy5hcnJheVt0KzJdPW8sdGhpc31zZXRYWVpXKHQsZSxuLG8saSl7cmV0dXJuIHRoaXMuYXJyYXlbKHQqPXRoaXMuaXRlbVNpemUpKzBdPWUsdGhpcy5hcnJheVt0KzFdPW4sdGhpcy5hcnJheVt0KzJdPW8sdGhpcy5hcnJheVt0KzNdPWksdGhpc31vblVwbG9hZCh0KXtyZXR1cm4gdGhpcy5vblVwbG9hZENhbGxiYWNrPXQsdGhpc31jbG9uZSgpe3JldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3Rvcih0aGlzLmFycmF5LHRoaXMuaXRlbVNpemUpLmNvcHkodGhpcyl9dG9KU09OKCl7Y29uc3QgdD17aXRlbVNpemU6dGhpcy5pdGVtU2l6ZSx0eXBlOnRoaXMuYXJyYXkuY29uc3RydWN0b3IubmFtZSxhcnJheTpBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0aGlzLmFycmF5KSxub3JtYWxpemVkOnRoaXMubm9ybWFsaXplZH07cmV0dXJuIiIhPT10aGlzLm5hbWUmJih0Lm5hbWU9dGhpcy5uYW1lKSx0aGlzLnVzYWdlIT09b3N0JiYodC51c2FnZT10aGlzLnVzYWdlKSwwPT09dGhpcy51cGRhdGVSYW5nZS5vZmZzZXQmJi0xPT09dGhpcy51cGRhdGVSYW5nZS5jb3VudHx8KHQudXBkYXRlUmFuZ2U9dGhpcy51cGRhdGVSYW5nZSksdH19UWx0LnByb3RvdHlwZS5pc0J1ZmZlckF0dHJpYnV0ZT0hMDtjbGFzcyAkbHQgZXh0ZW5kcyBRbHR7Y29uc3RydWN0b3IodCxlLG4pe3N1cGVyKG5ldyBVaW50MTZBcnJheSh0KSxlLG4pfX1jbGFzcyB0Y3QgZXh0ZW5kcyBRbHR7Y29uc3RydWN0b3IodCxlLG4pe3N1cGVyKG5ldyBVaW50MzJBcnJheSh0KSxlLG4pfX0oY2xhc3MgZXh0ZW5kcyBRbHR7Y29uc3RydWN0b3IodCxlLG4pe3N1cGVyKG5ldyBVaW50MTZBcnJheSh0KSxlLG4pfX0pLnByb3RvdHlwZS5pc0Zsb2F0MTZCdWZmZXJBdHRyaWJ1dGU9ITA7Y2xhc3MgZWN0IGV4dGVuZHMgUWx0e2NvbnN0cnVjdG9yKHQsZSxuKXtzdXBlcihuZXcgRmxvYXQzMkFycmF5KHQpLGUsbil9fWZ1bmN0aW9uIG5jdCh0KXtpZigwPT09dC5sZW5ndGgpcmV0dXJuLTEvMDtsZXQgZT10WzBdO2ZvcihsZXQgbj0xLG89dC5sZW5ndGg7bjxvOysrbil0W25dPmUmJihlPXRbbl0pO3JldHVybiBlfWxldCBvY3Q9MDtjb25zdCBpY3Q9bmV3IG9sdCxhY3Q9bmV3IFNsdCxyY3Q9bmV3IHdzdCxzY3Q9bmV3IERzdCxsY3Q9bmV3IERzdCxjY3Q9bmV3IHdzdDtjbGFzcyBkY3QgZXh0ZW5kcyByc3R7Y29uc3RydWN0b3IoKXtzdXBlcigpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJpZCIse3ZhbHVlOm9jdCsrfSksdGhpcy51dWlkPWRzdCgpLHRoaXMubmFtZT0iIix0aGlzLnR5cGU9IkJ1ZmZlckdlb21ldHJ5Iix0aGlzLmluZGV4PW51bGwsdGhpcy5hdHRyaWJ1dGVzPXt9LHRoaXMubW9ycGhBdHRyaWJ1dGVzPXt9LHRoaXMubW9ycGhUYXJnZXRzUmVsYXRpdmU9ITEsdGhpcy5ncm91cHM9W10sdGhpcy5ib3VuZGluZ0JveD1udWxsLHRoaXMuYm91bmRpbmdTcGhlcmU9bnVsbCx0aGlzLmRyYXdSYW5nZT17c3RhcnQ6MCxjb3VudDoxLzB9LHRoaXMudXNlckRhdGE9e319Z2V0SW5kZXgoKXtyZXR1cm4gdGhpcy5pbmRleH1zZXRJbmRleCh0KXtyZXR1cm4gdGhpcy5pbmRleD1BcnJheS5pc0FycmF5KHQpP25ldyhuY3QodCk+NjU1MzU/dGN0OiRsdCkodCwxKTp0LHRoaXN9Z2V0QXR0cmlidXRlKHQpe3JldHVybiB0aGlzLmF0dHJpYnV0ZXNbdF19c2V0QXR0cmlidXRlKHQsZSl7cmV0dXJuIHRoaXMuYXR0cmlidXRlc1t0XT1lLHRoaXN9ZGVsZXRlQXR0cmlidXRlKHQpe3JldHVybiBkZWxldGUgdGhpcy5hdHRyaWJ1dGVzW3RdLHRoaXN9aGFzQXR0cmlidXRlKHQpe3JldHVybiB2b2lkIDAhPT10aGlzLmF0dHJpYnV0ZXNbdF19YWRkR3JvdXAodCxlLG49MCl7dGhpcy5ncm91cHMucHVzaCh7c3RhcnQ6dCxjb3VudDplLG1hdGVyaWFsSW5kZXg6bn0pfWNsZWFyR3JvdXBzKCl7dGhpcy5ncm91cHM9W119c2V0RHJhd1JhbmdlKHQsZSl7dGhpcy5kcmF3UmFuZ2Uuc3RhcnQ9dCx0aGlzLmRyYXdSYW5nZS5jb3VudD1lfWFwcGx5TWF0cml4NCh0KXtjb25zdCBlPXRoaXMuYXR0cmlidXRlcy5wb3NpdGlvbjt2b2lkIDAhPT1lJiYoZS5hcHBseU1hdHJpeDQodCksZS5uZWVkc1VwZGF0ZT0hMCk7Y29uc3Qgbj10aGlzLmF0dHJpYnV0ZXMubm9ybWFsO2lmKHZvaWQgMCE9PW4pe2NvbnN0IGU9KG5ldyBoc3QpLmdldE5vcm1hbE1hdHJpeCh0KTtuLmFwcGx5Tm9ybWFsTWF0cml4KGUpLG4ubmVlZHNVcGRhdGU9ITB9Y29uc3Qgbz10aGlzLmF0dHJpYnV0ZXMudGFuZ2VudDtyZXR1cm4gdm9pZCAwIT09byYmKG8udHJhbnNmb3JtRGlyZWN0aW9uKHQpLG8ubmVlZHNVcGRhdGU9ITApLG51bGwhPT10aGlzLmJvdW5kaW5nQm94JiZ0aGlzLmNvbXB1dGVCb3VuZGluZ0JveCgpLG51bGwhPT10aGlzLmJvdW5kaW5nU3BoZXJlJiZ0aGlzLmNvbXB1dGVCb3VuZGluZ1NwaGVyZSgpLHRoaXN9YXBwbHlRdWF0ZXJuaW9uKHQpe3JldHVybiBpY3QubWFrZVJvdGF0aW9uRnJvbVF1YXRlcm5pb24odCksdGhpcy5hcHBseU1hdHJpeDQoaWN0KSx0aGlzfXJvdGF0ZVgodCl7cmV0dXJuIGljdC5tYWtlUm90YXRpb25YKHQpLHRoaXMuYXBwbHlNYXRyaXg0KGljdCksdGhpc31yb3RhdGVZKHQpe3JldHVybiBpY3QubWFrZVJvdGF0aW9uWSh0KSx0aGlzLmFwcGx5TWF0cml4NChpY3QpLHRoaXN9cm90YXRlWih0KXtyZXR1cm4gaWN0Lm1ha2VSb3RhdGlvbloodCksdGhpcy5hcHBseU1hdHJpeDQoaWN0KSx0aGlzfXRyYW5zbGF0ZSh0LGUsbil7cmV0dXJuIGljdC5tYWtlVHJhbnNsYXRpb24odCxlLG4pLHRoaXMuYXBwbHlNYXRyaXg0KGljdCksdGhpc31zY2FsZSh0LGUsbil7cmV0dXJuIGljdC5tYWtlU2NhbGUodCxlLG4pLHRoaXMuYXBwbHlNYXRyaXg0KGljdCksdGhpc31sb29rQXQodCl7cmV0dXJuIGFjdC5sb29rQXQodCksYWN0LnVwZGF0ZU1hdHJpeCgpLHRoaXMuYXBwbHlNYXRyaXg0KGFjdC5tYXRyaXgpLHRoaXN9Y2VudGVyKCl7cmV0dXJuIHRoaXMuY29tcHV0ZUJvdW5kaW5nQm94KCksdGhpcy5ib3VuZGluZ0JveC5nZXRDZW50ZXIocmN0KS5uZWdhdGUoKSx0aGlzLnRyYW5zbGF0ZShyY3QueCxyY3QueSxyY3QueiksdGhpc31zZXRGcm9tUG9pbnRzKHQpe2NvbnN0IGU9W107Zm9yKGxldCBuPTAsbz10Lmxlbmd0aDtuPG87bisrKXtjb25zdCBvPXRbbl07ZS5wdXNoKG8ueCxvLnksby56fHwwKX1yZXR1cm4gdGhpcy5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgZWN0KGUsMykpLHRoaXN9Y29tcHV0ZUJvdW5kaW5nQm94KCl7bnVsbD09PXRoaXMuYm91bmRpbmdCb3gmJih0aGlzLmJvdW5kaW5nQm94PW5ldyBEc3QpO2NvbnN0IHQ9dGhpcy5hdHRyaWJ1dGVzLnBvc2l0aW9uLGU9dGhpcy5tb3JwaEF0dHJpYnV0ZXMucG9zaXRpb247aWYodCYmdC5pc0dMQnVmZmVyQXR0cmlidXRlKXJldHVybiBjb25zb2xlLmVycm9yKCdUSFJFRS5CdWZmZXJHZW9tZXRyeS5jb21wdXRlQm91bmRpbmdCb3goKTogR0xCdWZmZXJBdHRyaWJ1dGUgcmVxdWlyZXMgYSBtYW51YWwgYm91bmRpbmcgYm94LiBBbHRlcm5hdGl2ZWx5IHNldCAibWVzaC5mcnVzdHVtQ3VsbGVkIiB0byAiZmFsc2UiLicsdGhpcyksdm9pZCB0aGlzLmJvdW5kaW5nQm94LnNldChuZXcgd3N0KC0xLzAsLTEvMCwtMS8wKSxuZXcgd3N0KDEvMCwxLzAsMS8wKSk7aWYodm9pZCAwIT09dCl7aWYodGhpcy5ib3VuZGluZ0JveC5zZXRGcm9tQnVmZmVyQXR0cmlidXRlKHQpLGUpZm9yKGxldCB0PTAsbj1lLmxlbmd0aDt0PG47dCsrKXtzY3Quc2V0RnJvbUJ1ZmZlckF0dHJpYnV0ZShlW3RdKSx0aGlzLm1vcnBoVGFyZ2V0c1JlbGF0aXZlPyhjY3QuYWRkVmVjdG9ycyh0aGlzLmJvdW5kaW5nQm94Lm1pbixzY3QubWluKSx0aGlzLmJvdW5kaW5nQm94LmV4cGFuZEJ5UG9pbnQoY2N0KSxjY3QuYWRkVmVjdG9ycyh0aGlzLmJvdW5kaW5nQm94Lm1heCxzY3QubWF4KSx0aGlzLmJvdW5kaW5nQm94LmV4cGFuZEJ5UG9pbnQoY2N0KSk6KHRoaXMuYm91bmRpbmdCb3guZXhwYW5kQnlQb2ludChzY3QubWluKSx0aGlzLmJvdW5kaW5nQm94LmV4cGFuZEJ5UG9pbnQoc2N0Lm1heCkpfX1lbHNlIHRoaXMuYm91bmRpbmdCb3gubWFrZUVtcHR5KCk7KGlzTmFOKHRoaXMuYm91bmRpbmdCb3gubWluLngpfHxpc05hTih0aGlzLmJvdW5kaW5nQm94Lm1pbi55KXx8aXNOYU4odGhpcy5ib3VuZGluZ0JveC5taW4ueikpJiZjb25zb2xlLmVycm9yKCdUSFJFRS5CdWZmZXJHZW9tZXRyeS5jb21wdXRlQm91bmRpbmdCb3goKTogQ29tcHV0ZWQgbWluL21heCBoYXZlIE5hTiB2YWx1ZXMuIFRoZSAicG9zaXRpb24iIGF0dHJpYnV0ZSBpcyBsaWtlbHkgdG8gaGF2ZSBOYU4gdmFsdWVzLicsdGhpcyl9Y29tcHV0ZUJvdW5kaW5nU3BoZXJlKCl7bnVsbD09PXRoaXMuYm91bmRpbmdTcGhlcmUmJih0aGlzLmJvdW5kaW5nU3BoZXJlPW5ldyBac3QpO2NvbnN0IHQ9dGhpcy5hdHRyaWJ1dGVzLnBvc2l0aW9uLGU9dGhpcy5tb3JwaEF0dHJpYnV0ZXMucG9zaXRpb247aWYodCYmdC5pc0dMQnVmZmVyQXR0cmlidXRlKXJldHVybiBjb25zb2xlLmVycm9yKCdUSFJFRS5CdWZmZXJHZW9tZXRyeS5jb21wdXRlQm91bmRpbmdTcGhlcmUoKTogR0xCdWZmZXJBdHRyaWJ1dGUgcmVxdWlyZXMgYSBtYW51YWwgYm91bmRpbmcgc3BoZXJlLiBBbHRlcm5hdGl2ZWx5IHNldCAibWVzaC5mcnVzdHVtQ3VsbGVkIiB0byAiZmFsc2UiLicsdGhpcyksdm9pZCB0aGlzLmJvdW5kaW5nU3BoZXJlLnNldChuZXcgd3N0LDEvMCk7aWYodCl7Y29uc3Qgbj10aGlzLmJvdW5kaW5nU3BoZXJlLmNlbnRlcjtpZihzY3Quc2V0RnJvbUJ1ZmZlckF0dHJpYnV0ZSh0KSxlKWZvcihsZXQgdD0wLG49ZS5sZW5ndGg7dDxuO3QrKyl7bGN0LnNldEZyb21CdWZmZXJBdHRyaWJ1dGUoZVt0XSksdGhpcy5tb3JwaFRhcmdldHNSZWxhdGl2ZT8oY2N0LmFkZFZlY3RvcnMoc2N0Lm1pbixsY3QubWluKSxzY3QuZXhwYW5kQnlQb2ludChjY3QpLGNjdC5hZGRWZWN0b3JzKHNjdC5tYXgsbGN0Lm1heCksc2N0LmV4cGFuZEJ5UG9pbnQoY2N0KSk6KHNjdC5leHBhbmRCeVBvaW50KGxjdC5taW4pLHNjdC5leHBhbmRCeVBvaW50KGxjdC5tYXgpKX1zY3QuZ2V0Q2VudGVyKG4pO2xldCBvPTA7Zm9yKGxldCBlPTAsaT10LmNvdW50O2U8aTtlKyspY2N0LmZyb21CdWZmZXJBdHRyaWJ1dGUodCxlKSxvPU1hdGgubWF4KG8sbi5kaXN0YW5jZVRvU3F1YXJlZChjY3QpKTtpZihlKWZvcihsZXQgaT0wLGE9ZS5sZW5ndGg7aTxhO2krKyl7Y29uc3QgYT1lW2ldLHI9dGhpcy5tb3JwaFRhcmdldHNSZWxhdGl2ZTtmb3IobGV0IGU9MCxpPWEuY291bnQ7ZTxpO2UrKyljY3QuZnJvbUJ1ZmZlckF0dHJpYnV0ZShhLGUpLHImJihyY3QuZnJvbUJ1ZmZlckF0dHJpYnV0ZSh0LGUpLGNjdC5hZGQocmN0KSksbz1NYXRoLm1heChvLG4uZGlzdGFuY2VUb1NxdWFyZWQoY2N0KSl9dGhpcy5ib3VuZGluZ1NwaGVyZS5yYWRpdXM9TWF0aC5zcXJ0KG8pLGlzTmFOKHRoaXMuYm91bmRpbmdTcGhlcmUucmFkaXVzKSYmY29uc29sZS5lcnJvcignVEhSRUUuQnVmZmVyR2VvbWV0cnkuY29tcHV0ZUJvdW5kaW5nU3BoZXJlKCk6IENvbXB1dGVkIHJhZGl1cyBpcyBOYU4uIFRoZSAicG9zaXRpb24iIGF0dHJpYnV0ZSBpcyBsaWtlbHkgdG8gaGF2ZSBOYU4gdmFsdWVzLicsdGhpcyl9fWNvbXB1dGVGYWNlTm9ybWFscygpe31jb21wdXRlVGFuZ2VudHMoKXtjb25zdCB0PXRoaXMuaW5kZXgsZT10aGlzLmF0dHJpYnV0ZXM7aWYobnVsbD09PXR8fHZvaWQgMD09PWUucG9zaXRpb258fHZvaWQgMD09PWUubm9ybWFsfHx2b2lkIDA9PT1lLnV2KXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIlRIUkVFLkJ1ZmZlckdlb21ldHJ5OiAuY29tcHV0ZVRhbmdlbnRzKCkgZmFpbGVkLiBNaXNzaW5nIHJlcXVpcmVkIGF0dHJpYnV0ZXMgKGluZGV4LCBwb3NpdGlvbiwgbm9ybWFsIG9yIHV2KSIpO2NvbnN0IG49dC5hcnJheSxvPWUucG9zaXRpb24uYXJyYXksaT1lLm5vcm1hbC5hcnJheSxhPWUudXYuYXJyYXkscj1vLmxlbmd0aC8zO3ZvaWQgMD09PWUudGFuZ2VudCYmdGhpcy5zZXRBdHRyaWJ1dGUoInRhbmdlbnQiLG5ldyBRbHQobmV3IEZsb2F0MzJBcnJheSg0KnIpLDQpKTtjb25zdCBzPWUudGFuZ2VudC5hcnJheSxsPVtdLGM9W107Zm9yKGxldCB0PTA7dDxyO3QrKylsW3RdPW5ldyB3c3QsY1t0XT1uZXcgd3N0O2NvbnN0IGQ9bmV3IHdzdCxwPW5ldyB3c3QsbT1uZXcgd3N0LGY9bmV3IGdzdCx1PW5ldyBnc3QsZz1uZXcgZ3N0LGg9bmV3IHdzdCxiPW5ldyB3c3Q7ZnVuY3Rpb24geSh0LGUsbil7ZC5mcm9tQXJyYXkobywzKnQpLHAuZnJvbUFycmF5KG8sMyplKSxtLmZyb21BcnJheShvLDMqbiksZi5mcm9tQXJyYXkoYSwyKnQpLHUuZnJvbUFycmF5KGEsMiplKSxnLmZyb21BcnJheShhLDIqbikscC5zdWIoZCksbS5zdWIoZCksdS5zdWIoZiksZy5zdWIoZik7Y29uc3QgaT0xLyh1LngqZy55LWcueCp1LnkpO2lzRmluaXRlKGkpJiYoaC5jb3B5KHApLm11bHRpcGx5U2NhbGFyKGcueSkuYWRkU2NhbGVkVmVjdG9yKG0sLXUueSkubXVsdGlwbHlTY2FsYXIoaSksYi5jb3B5KG0pLm11bHRpcGx5U2NhbGFyKHUueCkuYWRkU2NhbGVkVmVjdG9yKHAsLWcueCkubXVsdGlwbHlTY2FsYXIoaSksbFt0XS5hZGQoaCksbFtlXS5hZGQoaCksbFtuXS5hZGQoaCksY1t0XS5hZGQoYiksY1tlXS5hZGQoYiksY1tuXS5hZGQoYikpfWxldCBfPXRoaXMuZ3JvdXBzOzA9PT1fLmxlbmd0aCYmKF89W3tzdGFydDowLGNvdW50Om4ubGVuZ3RofV0pO2ZvcihsZXQgdD0wLGU9Xy5sZW5ndGg7dDxlOysrdCl7Y29uc3QgZT1fW3RdLG89ZS5zdGFydDtmb3IobGV0IHQ9byxpPW8rZS5jb3VudDt0PGk7dCs9Myl5KG5bdCswXSxuW3QrMV0sblt0KzJdKX1jb25zdCBDPW5ldyB3c3QsTT1uZXcgd3N0LHY9bmV3IHdzdCx4PW5ldyB3c3Q7ZnVuY3Rpb24gTyh0KXt2LmZyb21BcnJheShpLDMqdCkseC5jb3B5KHYpO2NvbnN0IGU9bFt0XTtDLmNvcHkoZSksQy5zdWIodi5tdWx0aXBseVNjYWxhcih2LmRvdChlKSkpLm5vcm1hbGl6ZSgpLE0uY3Jvc3NWZWN0b3JzKHgsZSk7Y29uc3Qgbj1NLmRvdChjW3RdKTwwPy0xOjE7c1s0KnRdPUMueCxzWzQqdCsxXT1DLnksc1s0KnQrMl09Qy56LHNbNCp0KzNdPW59Zm9yKGxldCB0PTAsZT1fLmxlbmd0aDt0PGU7Kyt0KXtjb25zdCBlPV9bdF0sbz1lLnN0YXJ0O2ZvcihsZXQgdD1vLGk9bytlLmNvdW50O3Q8aTt0Kz0zKU8oblt0KzBdKSxPKG5bdCsxXSksTyhuW3QrMl0pfX1jb21wdXRlVmVydGV4Tm9ybWFscygpe2NvbnN0IHQ9dGhpcy5pbmRleCxlPXRoaXMuZ2V0QXR0cmlidXRlKCJwb3NpdGlvbiIpO2lmKHZvaWQgMCE9PWUpe2xldCBuPXRoaXMuZ2V0QXR0cmlidXRlKCJub3JtYWwiKTtpZih2b2lkIDA9PT1uKW49bmV3IFFsdChuZXcgRmxvYXQzMkFycmF5KDMqZS5jb3VudCksMyksdGhpcy5zZXRBdHRyaWJ1dGUoIm5vcm1hbCIsbik7ZWxzZSBmb3IobGV0IHQ9MCxlPW4uY291bnQ7dDxlO3QrKyluLnNldFhZWih0LDAsMCwwKTtjb25zdCBvPW5ldyB3c3QsaT1uZXcgd3N0LGE9bmV3IHdzdCxyPW5ldyB3c3Qscz1uZXcgd3N0LGw9bmV3IHdzdCxjPW5ldyB3c3QsZD1uZXcgd3N0O2lmKHQpZm9yKGxldCBwPTAsbT10LmNvdW50O3A8bTtwKz0zKXtjb25zdCBtPXQuZ2V0WChwKzApLGY9dC5nZXRYKHArMSksdT10LmdldFgocCsyKTtvLmZyb21CdWZmZXJBdHRyaWJ1dGUoZSxtKSxpLmZyb21CdWZmZXJBdHRyaWJ1dGUoZSxmKSxhLmZyb21CdWZmZXJBdHRyaWJ1dGUoZSx1KSxjLnN1YlZlY3RvcnMoYSxpKSxkLnN1YlZlY3RvcnMobyxpKSxjLmNyb3NzKGQpLHIuZnJvbUJ1ZmZlckF0dHJpYnV0ZShuLG0pLHMuZnJvbUJ1ZmZlckF0dHJpYnV0ZShuLGYpLGwuZnJvbUJ1ZmZlckF0dHJpYnV0ZShuLHUpLHIuYWRkKGMpLHMuYWRkKGMpLGwuYWRkKGMpLG4uc2V0WFlaKG0sci54LHIueSxyLnopLG4uc2V0WFlaKGYscy54LHMueSxzLnopLG4uc2V0WFlaKHUsbC54LGwueSxsLnopfWVsc2UgZm9yKGxldCB0PTAscj1lLmNvdW50O3Q8cjt0Kz0zKW8uZnJvbUJ1ZmZlckF0dHJpYnV0ZShlLHQrMCksaS5mcm9tQnVmZmVyQXR0cmlidXRlKGUsdCsxKSxhLmZyb21CdWZmZXJBdHRyaWJ1dGUoZSx0KzIpLGMuc3ViVmVjdG9ycyhhLGkpLGQuc3ViVmVjdG9ycyhvLGkpLGMuY3Jvc3MoZCksbi5zZXRYWVoodCswLGMueCxjLnksYy56KSxuLnNldFhZWih0KzEsYy54LGMueSxjLnopLG4uc2V0WFlaKHQrMixjLngsYy55LGMueik7dGhpcy5ub3JtYWxpemVOb3JtYWxzKCksbi5uZWVkc1VwZGF0ZT0hMH19bWVyZ2UodCxlKXtpZighdHx8IXQuaXNCdWZmZXJHZW9tZXRyeSlyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJUSFJFRS5CdWZmZXJHZW9tZXRyeS5tZXJnZSgpOiBnZW9tZXRyeSBub3QgYW4gaW5zdGFuY2Ugb2YgVEhSRUUuQnVmZmVyR2VvbWV0cnkuIix0KTt2b2lkIDA9PT1lJiYoZT0wLGNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyR2VvbWV0cnkubWVyZ2UoKTogT3ZlcndyaXRpbmcgb3JpZ2luYWwgZ2VvbWV0cnksIHN0YXJ0aW5nIGF0IG9mZnNldD0wLiBVc2UgQnVmZmVyR2VvbWV0cnlVdGlscy5tZXJnZUJ1ZmZlckdlb21ldHJpZXMoKSBmb3IgbG9zc2xlc3MgbWVyZ2UuIikpO2NvbnN0IG49dGhpcy5hdHRyaWJ1dGVzO2Zvcihjb25zdCBvIGluIG4pe2lmKHZvaWQgMD09PXQuYXR0cmlidXRlc1tvXSljb250aW51ZTtjb25zdCBpPW5bb10uYXJyYXksYT10LmF0dHJpYnV0ZXNbb10scj1hLmFycmF5LHM9YS5pdGVtU2l6ZSplLGw9TWF0aC5taW4oci5sZW5ndGgsaS5sZW5ndGgtcyk7Zm9yKGxldCB0PTAsZT1zO3Q8bDt0KyssZSsrKWlbZV09clt0XX1yZXR1cm4gdGhpc31ub3JtYWxpemVOb3JtYWxzKCl7Y29uc3QgdD10aGlzLmF0dHJpYnV0ZXMubm9ybWFsO2ZvcihsZXQgZT0wLG49dC5jb3VudDtlPG47ZSsrKWNjdC5mcm9tQnVmZmVyQXR0cmlidXRlKHQsZSksY2N0Lm5vcm1hbGl6ZSgpLHQuc2V0WFlaKGUsY2N0LngsY2N0LnksY2N0LnopfXRvTm9uSW5kZXhlZCgpe2Z1bmN0aW9uIHQodCxlKXtjb25zdCBuPXQuYXJyYXksbz10Lml0ZW1TaXplLGk9dC5ub3JtYWxpemVkLGE9bmV3IG4uY29uc3RydWN0b3IoZS5sZW5ndGgqbyk7bGV0IHI9MCxzPTA7Zm9yKGxldCBpPTAsbD1lLmxlbmd0aDtpPGw7aSsrKXtyPXQuaXNJbnRlcmxlYXZlZEJ1ZmZlckF0dHJpYnV0ZT9lW2ldKnQuZGF0YS5zdHJpZGUrdC5vZmZzZXQ6ZVtpXSpvO2ZvcihsZXQgdD0wO3Q8bzt0KyspYVtzKytdPW5bcisrXX1yZXR1cm4gbmV3IFFsdChhLG8saSl9aWYobnVsbD09PXRoaXMuaW5kZXgpcmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyR2VvbWV0cnkudG9Ob25JbmRleGVkKCk6IEJ1ZmZlckdlb21ldHJ5IGlzIGFscmVhZHkgbm9uLWluZGV4ZWQuIiksdGhpcztjb25zdCBlPW5ldyBkY3Qsbj10aGlzLmluZGV4LmFycmF5LG89dGhpcy5hdHRyaWJ1dGVzO2Zvcihjb25zdCBpIGluIG8pe2NvbnN0IGE9dChvW2ldLG4pO2Uuc2V0QXR0cmlidXRlKGksYSl9Y29uc3QgaT10aGlzLm1vcnBoQXR0cmlidXRlcztmb3IoY29uc3QgbyBpbiBpKXtjb25zdCBhPVtdLHI9aVtvXTtmb3IobGV0IGU9MCxvPXIubGVuZ3RoO2U8bztlKyspe2NvbnN0IG89dChyW2VdLG4pO2EucHVzaChvKX1lLm1vcnBoQXR0cmlidXRlc1tvXT1hfWUubW9ycGhUYXJnZXRzUmVsYXRpdmU9dGhpcy5tb3JwaFRhcmdldHNSZWxhdGl2ZTtjb25zdCBhPXRoaXMuZ3JvdXBzO2ZvcihsZXQgdD0wLG49YS5sZW5ndGg7dDxuO3QrKyl7Y29uc3Qgbj1hW3RdO2UuYWRkR3JvdXAobi5zdGFydCxuLmNvdW50LG4ubWF0ZXJpYWxJbmRleCl9cmV0dXJuIGV9dG9KU09OKCl7Y29uc3QgdD17bWV0YWRhdGE6e3ZlcnNpb246NC41LHR5cGU6IkJ1ZmZlckdlb21ldHJ5IixnZW5lcmF0b3I6IkJ1ZmZlckdlb21ldHJ5LnRvSlNPTiJ9fTtpZih0LnV1aWQ9dGhpcy51dWlkLHQudHlwZT10aGlzLnR5cGUsIiIhPT10aGlzLm5hbWUmJih0Lm5hbWU9dGhpcy5uYW1lKSxPYmplY3Qua2V5cyh0aGlzLnVzZXJEYXRhKS5sZW5ndGg+MCYmKHQudXNlckRhdGE9dGhpcy51c2VyRGF0YSksdm9pZCAwIT09dGhpcy5wYXJhbWV0ZXJzKXtjb25zdCBlPXRoaXMucGFyYW1ldGVycztmb3IoY29uc3QgbiBpbiBlKXZvaWQgMCE9PWVbbl0mJih0W25dPWVbbl0pO3JldHVybiB0fXQuZGF0YT17YXR0cmlidXRlczp7fX07Y29uc3QgZT10aGlzLmluZGV4O251bGwhPT1lJiYodC5kYXRhLmluZGV4PXt0eXBlOmUuYXJyYXkuY29uc3RydWN0b3IubmFtZSxhcnJheTpBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChlLmFycmF5KX0pO2NvbnN0IG49dGhpcy5hdHRyaWJ1dGVzO2Zvcihjb25zdCBlIGluIG4pe3QuZGF0YS5hdHRyaWJ1dGVzW2VdPW5bZV0udG9KU09OKHQuZGF0YSl9Y29uc3Qgbz17fTtsZXQgaT0hMTtmb3IoY29uc3QgZSBpbiB0aGlzLm1vcnBoQXR0cmlidXRlcyl7Y29uc3Qgbj10aGlzLm1vcnBoQXR0cmlidXRlc1tlXSxhPVtdO2ZvcihsZXQgZT0wLG89bi5sZW5ndGg7ZTxvO2UrKyl7YS5wdXNoKG5bZV0udG9KU09OKHQuZGF0YSkpfWEubGVuZ3RoPjAmJihvW2VdPWEsaT0hMCl9aSYmKHQuZGF0YS5tb3JwaEF0dHJpYnV0ZXM9byx0LmRhdGEubW9ycGhUYXJnZXRzUmVsYXRpdmU9dGhpcy5tb3JwaFRhcmdldHNSZWxhdGl2ZSk7Y29uc3QgYT10aGlzLmdyb3VwczthLmxlbmd0aD4wJiYodC5kYXRhLmdyb3Vwcz1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGEpKSk7Y29uc3Qgcj10aGlzLmJvdW5kaW5nU3BoZXJlO3JldHVybiBudWxsIT09ciYmKHQuZGF0YS5ib3VuZGluZ1NwaGVyZT17Y2VudGVyOnIuY2VudGVyLnRvQXJyYXkoKSxyYWRpdXM6ci5yYWRpdXN9KSx0fWNsb25lKCl7cmV0dXJuKG5ldyBkY3QpLmNvcHkodGhpcyl9Y29weSh0KXt0aGlzLmluZGV4PW51bGwsdGhpcy5hdHRyaWJ1dGVzPXt9LHRoaXMubW9ycGhBdHRyaWJ1dGVzPXt9LHRoaXMuZ3JvdXBzPVtdLHRoaXMuYm91bmRpbmdCb3g9bnVsbCx0aGlzLmJvdW5kaW5nU3BoZXJlPW51bGw7Y29uc3QgZT17fTt0aGlzLm5hbWU9dC5uYW1lO2NvbnN0IG49dC5pbmRleDtudWxsIT09biYmdGhpcy5zZXRJbmRleChuLmNsb25lKGUpKTtjb25zdCBvPXQuYXR0cmlidXRlcztmb3IoY29uc3QgdCBpbiBvKXt0aGlzLnNldEF0dHJpYnV0ZSh0LG9bdF0uY2xvbmUoZSkpfWNvbnN0IGk9dC5tb3JwaEF0dHJpYnV0ZXM7Zm9yKGNvbnN0IHQgaW4gaSl7Y29uc3Qgbj1bXSxvPWlbdF07Zm9yKGxldCB0PTAsaT1vLmxlbmd0aDt0PGk7dCsrKW4ucHVzaChvW3RdLmNsb25lKGUpKTt0aGlzLm1vcnBoQXR0cmlidXRlc1t0XT1ufXRoaXMubW9ycGhUYXJnZXRzUmVsYXRpdmU9dC5tb3JwaFRhcmdldHNSZWxhdGl2ZTtjb25zdCBhPXQuZ3JvdXBzO2ZvcihsZXQgdD0wLGU9YS5sZW5ndGg7dDxlO3QrKyl7Y29uc3QgZT1hW3RdO3RoaXMuYWRkR3JvdXAoZS5zdGFydCxlLmNvdW50LGUubWF0ZXJpYWxJbmRleCl9Y29uc3Qgcj10LmJvdW5kaW5nQm94O251bGwhPT1yJiYodGhpcy5ib3VuZGluZ0JveD1yLmNsb25lKCkpO2NvbnN0IHM9dC5ib3VuZGluZ1NwaGVyZTtyZXR1cm4gbnVsbCE9PXMmJih0aGlzLmJvdW5kaW5nU3BoZXJlPXMuY2xvbmUoKSksdGhpcy5kcmF3UmFuZ2Uuc3RhcnQ9dC5kcmF3UmFuZ2Uuc3RhcnQsdGhpcy5kcmF3UmFuZ2UuY291bnQ9dC5kcmF3UmFuZ2UuY291bnQsdGhpcy51c2VyRGF0YT10LnVzZXJEYXRhLHRoaXN9ZGlzcG9zZSgpe3RoaXMuZGlzcGF0Y2hFdmVudCh7dHlwZToiZGlzcG9zZSJ9KX19ZGN0LnByb3RvdHlwZS5pc0J1ZmZlckdlb21ldHJ5PSEwO2NvbnN0IHBjdD1uZXcgb2x0LG1jdD1uZXcgbmx0LGZjdD1uZXcgWnN0LHVjdD1uZXcgd3N0LGdjdD1uZXcgd3N0LGhjdD1uZXcgd3N0LGJjdD1uZXcgd3N0LHljdD1uZXcgd3N0LF9jdD1uZXcgd3N0LENjdD1uZXcgd3N0LE1jdD1uZXcgd3N0LHZjdD1uZXcgd3N0LHhjdD1uZXcgZ3N0LE9jdD1uZXcgZ3N0LFBjdD1uZXcgZ3N0LHdjdD1uZXcgd3N0LGtjdD1uZXcgd3N0O2NsYXNzIFNjdCBleHRlbmRzIFNsdHtjb25zdHJ1Y3Rvcih0PW5ldyBkY3QsZT1uZXcgWGx0KXtzdXBlcigpLHRoaXMudHlwZT0iTWVzaCIsdGhpcy5nZW9tZXRyeT10LHRoaXMubWF0ZXJpYWw9ZSx0aGlzLnVwZGF0ZU1vcnBoVGFyZ2V0cygpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdm9pZCAwIT09dC5tb3JwaFRhcmdldEluZmx1ZW5jZXMmJih0aGlzLm1vcnBoVGFyZ2V0SW5mbHVlbmNlcz10Lm1vcnBoVGFyZ2V0SW5mbHVlbmNlcy5zbGljZSgpKSx2b2lkIDAhPT10Lm1vcnBoVGFyZ2V0RGljdGlvbmFyeSYmKHRoaXMubW9ycGhUYXJnZXREaWN0aW9uYXJ5PU9iamVjdC5hc3NpZ24oe30sdC5tb3JwaFRhcmdldERpY3Rpb25hcnkpKSx0aGlzLm1hdGVyaWFsPXQubWF0ZXJpYWwsdGhpcy5nZW9tZXRyeT10Lmdlb21ldHJ5LHRoaXN9dXBkYXRlTW9ycGhUYXJnZXRzKCl7Y29uc3QgdD10aGlzLmdlb21ldHJ5O2lmKHQuaXNCdWZmZXJHZW9tZXRyeSl7Y29uc3QgZT10Lm1vcnBoQXR0cmlidXRlcyxuPU9iamVjdC5rZXlzKGUpO2lmKG4ubGVuZ3RoPjApe2NvbnN0IHQ9ZVtuWzBdXTtpZih2b2lkIDAhPT10KXt0aGlzLm1vcnBoVGFyZ2V0SW5mbHVlbmNlcz1bXSx0aGlzLm1vcnBoVGFyZ2V0RGljdGlvbmFyeT17fTtmb3IobGV0IGU9MCxuPXQubGVuZ3RoO2U8bjtlKyspe2NvbnN0IG49dFtlXS5uYW1lfHxTdHJpbmcoZSk7dGhpcy5tb3JwaFRhcmdldEluZmx1ZW5jZXMucHVzaCgwKSx0aGlzLm1vcnBoVGFyZ2V0RGljdGlvbmFyeVtuXT1lfX19fWVsc2V7Y29uc3QgZT10Lm1vcnBoVGFyZ2V0czt2b2lkIDAhPT1lJiZlLmxlbmd0aD4wJiZjb25zb2xlLmVycm9yKCJUSFJFRS5NZXNoLnVwZGF0ZU1vcnBoVGFyZ2V0cygpIG5vIGxvbmdlciBzdXBwb3J0cyBUSFJFRS5HZW9tZXRyeS4gVXNlIFRIUkVFLkJ1ZmZlckdlb21ldHJ5IGluc3RlYWQuIil9fXJheWNhc3QodCxlKXtjb25zdCBuPXRoaXMuZ2VvbWV0cnksbz10aGlzLm1hdGVyaWFsLGk9dGhpcy5tYXRyaXhXb3JsZDtpZih2b2lkIDA9PT1vKXJldHVybjtpZihudWxsPT09bi5ib3VuZGluZ1NwaGVyZSYmbi5jb21wdXRlQm91bmRpbmdTcGhlcmUoKSxmY3QuY29weShuLmJvdW5kaW5nU3BoZXJlKSxmY3QuYXBwbHlNYXRyaXg0KGkpLCExPT09dC5yYXkuaW50ZXJzZWN0c1NwaGVyZShmY3QpKXJldHVybjtpZihwY3QuY29weShpKS5pbnZlcnQoKSxtY3QuY29weSh0LnJheSkuYXBwbHlNYXRyaXg0KHBjdCksbnVsbCE9PW4uYm91bmRpbmdCb3gmJiExPT09bWN0LmludGVyc2VjdHNCb3gobi5ib3VuZGluZ0JveCkpcmV0dXJuO2xldCBhO2lmKG4uaXNCdWZmZXJHZW9tZXRyeSl7Y29uc3QgaT1uLmluZGV4LHI9bi5hdHRyaWJ1dGVzLnBvc2l0aW9uLHM9bi5tb3JwaEF0dHJpYnV0ZXMucG9zaXRpb24sbD1uLm1vcnBoVGFyZ2V0c1JlbGF0aXZlLGM9bi5hdHRyaWJ1dGVzLnV2LGQ9bi5hdHRyaWJ1dGVzLnV2MixwPW4uZ3JvdXBzLG09bi5kcmF3UmFuZ2U7aWYobnVsbCE9PWkpaWYoQXJyYXkuaXNBcnJheShvKSlmb3IobGV0IG49MCxmPXAubGVuZ3RoO248ZjtuKyspe2NvbnN0IGY9cFtuXSx1PW9bZi5tYXRlcmlhbEluZGV4XTtmb3IobGV0IG49TWF0aC5tYXgoZi5zdGFydCxtLnN0YXJ0KSxvPU1hdGgubWluKGYuc3RhcnQrZi5jb3VudCxtLnN0YXJ0K20uY291bnQpO248bztuKz0zKXtjb25zdCBvPWkuZ2V0WChuKSxwPWkuZ2V0WChuKzEpLG09aS5nZXRYKG4rMik7YT1EY3QodGhpcyx1LHQsbWN0LHIscyxsLGMsZCxvLHAsbSksYSYmKGEuZmFjZUluZGV4PU1hdGguZmxvb3Iobi8zKSxhLmZhY2UubWF0ZXJpYWxJbmRleD1mLm1hdGVyaWFsSW5kZXgsZS5wdXNoKGEpKX19ZWxzZXtmb3IobGV0IG49TWF0aC5tYXgoMCxtLnN0YXJ0KSxwPU1hdGgubWluKGkuY291bnQsbS5zdGFydCttLmNvdW50KTtuPHA7bis9Myl7Y29uc3QgcD1pLmdldFgobiksbT1pLmdldFgobisxKSxmPWkuZ2V0WChuKzIpO2E9RGN0KHRoaXMsbyx0LG1jdCxyLHMsbCxjLGQscCxtLGYpLGEmJihhLmZhY2VJbmRleD1NYXRoLmZsb29yKG4vMyksZS5wdXNoKGEpKX19ZWxzZSBpZih2b2lkIDAhPT1yKWlmKEFycmF5LmlzQXJyYXkobykpZm9yKGxldCBuPTAsaT1wLmxlbmd0aDtuPGk7bisrKXtjb25zdCBpPXBbbl0sZj1vW2kubWF0ZXJpYWxJbmRleF07Zm9yKGxldCBuPU1hdGgubWF4KGkuc3RhcnQsbS5zdGFydCksbz1NYXRoLm1pbihpLnN0YXJ0K2kuY291bnQsbS5zdGFydCttLmNvdW50KTtuPG87bis9Myl7YT1EY3QodGhpcyxmLHQsbWN0LHIscyxsLGMsZCxuLG4rMSxuKzIpLGEmJihhLmZhY2VJbmRleD1NYXRoLmZsb29yKG4vMyksYS5mYWNlLm1hdGVyaWFsSW5kZXg9aS5tYXRlcmlhbEluZGV4LGUucHVzaChhKSl9fWVsc2V7Zm9yKGxldCBuPU1hdGgubWF4KDAsbS5zdGFydCksaT1NYXRoLm1pbihyLmNvdW50LG0uc3RhcnQrbS5jb3VudCk7bjxpO24rPTMpe2E9RGN0KHRoaXMsbyx0LG1jdCxyLHMsbCxjLGQsbixuKzEsbisyKSxhJiYoYS5mYWNlSW5kZXg9TWF0aC5mbG9vcihuLzMpLGUucHVzaChhKSl9fX1lbHNlIG4uaXNHZW9tZXRyeSYmY29uc29sZS5lcnJvcigiVEhSRUUuTWVzaC5yYXljYXN0KCkgbm8gbG9uZ2VyIHN1cHBvcnRzIFRIUkVFLkdlb21ldHJ5LiBVc2UgVEhSRUUuQnVmZmVyR2VvbWV0cnkgaW5zdGVhZC4iKX19ZnVuY3Rpb24gRGN0KHQsZSxuLG8saSxhLHIscyxsLGMsZCxwKXt1Y3QuZnJvbUJ1ZmZlckF0dHJpYnV0ZShpLGMpLGdjdC5mcm9tQnVmZmVyQXR0cmlidXRlKGksZCksaGN0LmZyb21CdWZmZXJBdHRyaWJ1dGUoaSxwKTtjb25zdCBtPXQubW9ycGhUYXJnZXRJbmZsdWVuY2VzO2lmKGEmJm0pe0NjdC5zZXQoMCwwLDApLE1jdC5zZXQoMCwwLDApLHZjdC5zZXQoMCwwLDApO2ZvcihsZXQgdD0wLGU9YS5sZW5ndGg7dDxlO3QrKyl7Y29uc3QgZT1tW3RdLG49YVt0XTswIT09ZSYmKGJjdC5mcm9tQnVmZmVyQXR0cmlidXRlKG4sYykseWN0LmZyb21CdWZmZXJBdHRyaWJ1dGUobixkKSxfY3QuZnJvbUJ1ZmZlckF0dHJpYnV0ZShuLHApLHI/KENjdC5hZGRTY2FsZWRWZWN0b3IoYmN0LGUpLE1jdC5hZGRTY2FsZWRWZWN0b3IoeWN0LGUpLHZjdC5hZGRTY2FsZWRWZWN0b3IoX2N0LGUpKTooQ2N0LmFkZFNjYWxlZFZlY3RvcihiY3Quc3ViKHVjdCksZSksTWN0LmFkZFNjYWxlZFZlY3Rvcih5Y3Quc3ViKGdjdCksZSksdmN0LmFkZFNjYWxlZFZlY3RvcihfY3Quc3ViKGhjdCksZSkpKX11Y3QuYWRkKENjdCksZ2N0LmFkZChNY3QpLGhjdC5hZGQodmN0KX10LmlzU2tpbm5lZE1lc2gmJih0LmJvbmVUcmFuc2Zvcm0oYyx1Y3QpLHQuYm9uZVRyYW5zZm9ybShkLGdjdCksdC5ib25lVHJhbnNmb3JtKHAsaGN0KSk7Y29uc3QgZj0oZnVuY3Rpb24gdSh0LGUsbixvLGksYSxyLHMpe2xldCBsO2lmKGw9MT09PWUuc2lkZT9vLmludGVyc2VjdFRyaWFuZ2xlKHIsYSxpLCEwLHMpOm8uaW50ZXJzZWN0VHJpYW5nbGUoaSxhLHIsMiE9PWUuc2lkZSxzKSxudWxsPT09bClyZXR1cm4gbnVsbDtrY3QuY29weShzKSxrY3QuYXBwbHlNYXRyaXg0KHQubWF0cml4V29ybGQpO2NvbnN0IGM9bi5yYXkub3JpZ2luLmRpc3RhbmNlVG8oa2N0KTtyZXR1cm4gYzxuLm5lYXJ8fGM+bi5mYXI/bnVsbDp7ZGlzdGFuY2U6Yyxwb2ludDprY3QuY2xvbmUoKSxvYmplY3Q6dH19KSh0LGUsbixvLHVjdCxnY3QsaGN0LHdjdCk7aWYoZil7cyYmKHhjdC5mcm9tQnVmZmVyQXR0cmlidXRlKHMsYyksT2N0LmZyb21CdWZmZXJBdHRyaWJ1dGUocyxkKSxQY3QuZnJvbUJ1ZmZlckF0dHJpYnV0ZShzLHApLGYudXY9TGx0LmdldFVWKHdjdCx1Y3QsZ2N0LGhjdCx4Y3QsT2N0LFBjdCxuZXcgZ3N0KSksbCYmKHhjdC5mcm9tQnVmZmVyQXR0cmlidXRlKGwsYyksT2N0LmZyb21CdWZmZXJBdHRyaWJ1dGUobCxkKSxQY3QuZnJvbUJ1ZmZlckF0dHJpYnV0ZShsLHApLGYudXYyPUxsdC5nZXRVVih3Y3QsdWN0LGdjdCxoY3QseGN0LE9jdCxQY3QsbmV3IGdzdCkpO2NvbnN0IHQ9e2E6YyxiOmQsYzpwLG5vcm1hbDpuZXcgd3N0LG1hdGVyaWFsSW5kZXg6MH07TGx0LmdldE5vcm1hbCh1Y3QsZ2N0LGhjdCx0Lm5vcm1hbCksZi5mYWNlPXR9cmV0dXJuIGZ9U2N0LnByb3RvdHlwZS5pc01lc2g9ITA7Y2xhc3MgUmN0IGV4dGVuZHMgZGN0e2NvbnN0cnVjdG9yKHQ9MSxlPTEsbj0xLG89MSxpPTEsYT0xKXtzdXBlcigpLHRoaXMudHlwZT0iQm94R2VvbWV0cnkiLHRoaXMucGFyYW1ldGVycz17d2lkdGg6dCxoZWlnaHQ6ZSxkZXB0aDpuLHdpZHRoU2VnbWVudHM6byxoZWlnaHRTZWdtZW50czppLGRlcHRoU2VnbWVudHM6YX07Y29uc3Qgcj10aGlzO289TWF0aC5mbG9vcihvKSxpPU1hdGguZmxvb3IoaSksYT1NYXRoLmZsb29yKGEpO2NvbnN0IHM9W10sbD1bXSxjPVtdLGQ9W107bGV0IHA9MCxtPTA7ZnVuY3Rpb24gZih0LGUsbixvLGksYSxmLHUsZyxoLGIpe2NvbnN0IHk9YS9nLF89Zi9oLEM9YS8yLE09Zi8yLHY9dS8yLHg9ZysxLE89aCsxO2xldCBQPTAsdz0wO2NvbnN0IGs9bmV3IHdzdDtmb3IobGV0IGE9MDthPE87YSsrKXtjb25zdCByPWEqXy1NO2ZvcihsZXQgcz0wO3M8eDtzKyspe2tbdF09KHMqeS1DKSpvLGtbZV09cippLGtbbl09dixsLnB1c2goay54LGsueSxrLnopLGtbdF09MCxrW2VdPTAsa1tuXT11PjA/MTotMSxjLnB1c2goay54LGsueSxrLnopLGQucHVzaChzL2cpLGQucHVzaCgxLWEvaCksUCs9MX19Zm9yKGxldCB0PTA7dDxoO3QrKylmb3IobGV0IGU9MDtlPGc7ZSsrKXtjb25zdCBuPXArZSt4Kih0KzEpLG89cCsoZSsxKSt4Kih0KzEpLGk9cCsoZSsxKSt4KnQ7cy5wdXNoKHArZSt4KnQsbixpKSxzLnB1c2gobixvLGkpLHcrPTZ9ci5hZGRHcm91cChtLHcsYiksbSs9dyxwKz1QfWYoInoiLCJ5IiwieCIsLTEsLTEsbixlLHQsYSxpLDApLGYoInoiLCJ5IiwieCIsMSwtMSxuLGUsLXQsYSxpLDEpLGYoIngiLCJ6IiwieSIsMSwxLHQsbixlLG8sYSwyKSxmKCJ4IiwieiIsInkiLDEsLTEsdCxuLC1lLG8sYSwzKSxmKCJ4IiwieSIsInoiLDEsLTEsdCxlLG4sbyxpLDQpLGYoIngiLCJ5IiwieiIsLTEsLTEsdCxlLC1uLG8saSw1KSx0aGlzLnNldEluZGV4KHMpLHRoaXMuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IGVjdChsLDMpKSx0aGlzLnNldEF0dHJpYnV0ZSgibm9ybWFsIixuZXcgZWN0KGMsMykpLHRoaXMuc2V0QXR0cmlidXRlKCJ1diIsbmV3IGVjdChkLDIpKX1zdGF0aWMgZnJvbUpTT04odCl7cmV0dXJuIG5ldyBSY3QodC53aWR0aCx0LmhlaWdodCx0LmRlcHRoLHQud2lkdGhTZWdtZW50cyx0LmhlaWdodFNlZ21lbnRzLHQuZGVwdGhTZWdtZW50cyl9fWZ1bmN0aW9uIEVjdCh0KXtjb25zdCBlPXt9O2Zvcihjb25zdCBuIGluIHQpe2Vbbl09e307Zm9yKGNvbnN0IG8gaW4gdFtuXSl7Y29uc3QgaT10W25dW29dO2Vbbl1bb109aSYmKGkuaXNDb2xvcnx8aS5pc01hdHJpeDN8fGkuaXNNYXRyaXg0fHxpLmlzVmVjdG9yMnx8aS5pc1ZlY3RvcjN8fGkuaXNWZWN0b3I0fHxpLmlzVGV4dHVyZXx8aS5pc1F1YXRlcm5pb24pP2kuY2xvbmUoKTpBcnJheS5pc0FycmF5KGkpP2kuc2xpY2UoKTppfX1yZXR1cm4gZX1mdW5jdGlvbiBBY3QodCl7Y29uc3QgZT17fTtmb3IobGV0IG49MDtuPHQubGVuZ3RoO24rKyl7Y29uc3Qgbz1FY3QodFtuXSk7Zm9yKGNvbnN0IHQgaW4gbyllW3RdPW9bdF19cmV0dXJuIGV9Y29uc3QgVGN0PXtjbG9uZTpFY3QsbWVyZ2U6QWN0fTtjbGFzcyBOY3QgZXh0ZW5kcyBWbHR7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLnR5cGU9IlNoYWRlck1hdGVyaWFsIix0aGlzLmRlZmluZXM9e30sdGhpcy51bmlmb3Jtcz17fSx0aGlzLnZlcnRleFNoYWRlcj0idm9pZCBtYWluKCkge1xuXHRnbF9Qb3NpdGlvbiA9IHByb2plY3Rpb25NYXRyaXggKiBtb2RlbFZpZXdNYXRyaXggKiB2ZWM0KCBwb3NpdGlvbiwgMS4wICk7XG59Iix0aGlzLmZyYWdtZW50U2hhZGVyPSJ2b2lkIG1haW4oKSB7XG5cdGdsX0ZyYWdDb2xvciA9IHZlYzQoIDEuMCwgMC4wLCAwLjAsIDEuMCApO1xufSIsdGhpcy5saW5ld2lkdGg9MSx0aGlzLndpcmVmcmFtZT0hMSx0aGlzLndpcmVmcmFtZUxpbmV3aWR0aD0xLHRoaXMuZm9nPSExLHRoaXMubGlnaHRzPSExLHRoaXMuY2xpcHBpbmc9ITEsdGhpcy5leHRlbnNpb25zPXtkZXJpdmF0aXZlczohMSxmcmFnRGVwdGg6ITEsZHJhd0J1ZmZlcnM6ITEsc2hhZGVyVGV4dHVyZUxPRDohMX0sdGhpcy5kZWZhdWx0QXR0cmlidXRlVmFsdWVzPXtjb2xvcjpbMSwxLDFdLHV2OlswLDBdLHV2MjpbMCwwXX0sdGhpcy5pbmRleDBBdHRyaWJ1dGVOYW1lPXZvaWQgMCx0aGlzLnVuaWZvcm1zTmVlZFVwZGF0ZT0hMSx0aGlzLmdsc2xWZXJzaW9uPW51bGwsdm9pZCAwIT09dCYmKHZvaWQgMCE9PXQuYXR0cmlidXRlcyYmY29uc29sZS5lcnJvcigiVEhSRUUuU2hhZGVyTWF0ZXJpYWw6IGF0dHJpYnV0ZXMgc2hvdWxkIG5vdyBiZSBkZWZpbmVkIGluIFRIUkVFLkJ1ZmZlckdlb21ldHJ5IGluc3RlYWQuIiksdGhpcy5zZXRWYWx1ZXModCkpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5mcmFnbWVudFNoYWRlcj10LmZyYWdtZW50U2hhZGVyLHRoaXMudmVydGV4U2hhZGVyPXQudmVydGV4U2hhZGVyLHRoaXMudW5pZm9ybXM9RWN0KHQudW5pZm9ybXMpLHRoaXMuZGVmaW5lcz1PYmplY3QuYXNzaWduKHt9LHQuZGVmaW5lcyksdGhpcy53aXJlZnJhbWU9dC53aXJlZnJhbWUsdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9dC53aXJlZnJhbWVMaW5ld2lkdGgsdGhpcy5saWdodHM9dC5saWdodHMsdGhpcy5jbGlwcGluZz10LmNsaXBwaW5nLHRoaXMuZXh0ZW5zaW9ucz1PYmplY3QuYXNzaWduKHt9LHQuZXh0ZW5zaW9ucyksdGhpcy5nbHNsVmVyc2lvbj10Lmdsc2xWZXJzaW9uLHRoaXN9dG9KU09OKHQpe2NvbnN0IGU9c3VwZXIudG9KU09OKHQpO2UuZ2xzbFZlcnNpb249dGhpcy5nbHNsVmVyc2lvbixlLnVuaWZvcm1zPXt9O2Zvcihjb25zdCBuIGluIHRoaXMudW5pZm9ybXMpe2NvbnN0IG89dGhpcy51bmlmb3Jtc1tuXS52YWx1ZTtlLnVuaWZvcm1zW25dPW8mJm8uaXNUZXh0dXJlP3t0eXBlOiJ0Iix2YWx1ZTpvLnRvSlNPTih0KS51dWlkfTpvJiZvLmlzQ29sb3I/e3R5cGU6ImMiLHZhbHVlOm8uZ2V0SGV4KCl9Om8mJm8uaXNWZWN0b3IyP3t0eXBlOiJ2MiIsdmFsdWU6by50b0FycmF5KCl9Om8mJm8uaXNWZWN0b3IzP3t0eXBlOiJ2MyIsdmFsdWU6by50b0FycmF5KCl9Om8mJm8uaXNWZWN0b3I0P3t0eXBlOiJ2NCIsdmFsdWU6by50b0FycmF5KCl9Om8mJm8uaXNNYXRyaXgzP3t0eXBlOiJtMyIsdmFsdWU6by50b0FycmF5KCl9Om8mJm8uaXNNYXRyaXg0P3t0eXBlOiJtNCIsdmFsdWU6by50b0FycmF5KCl9Ont2YWx1ZTpvfX1PYmplY3Qua2V5cyh0aGlzLmRlZmluZXMpLmxlbmd0aD4wJiYoZS5kZWZpbmVzPXRoaXMuZGVmaW5lcyksZS52ZXJ0ZXhTaGFkZXI9dGhpcy52ZXJ0ZXhTaGFkZXIsZS5mcmFnbWVudFNoYWRlcj10aGlzLmZyYWdtZW50U2hhZGVyO2NvbnN0IG49e307Zm9yKGNvbnN0IHQgaW4gdGhpcy5leHRlbnNpb25zKSEwPT09dGhpcy5leHRlbnNpb25zW3RdJiYoblt0XT0hMCk7cmV0dXJuIE9iamVjdC5rZXlzKG4pLmxlbmd0aD4wJiYoZS5leHRlbnNpb25zPW4pLGV9fU5jdC5wcm90b3R5cGUuaXNTaGFkZXJNYXRlcmlhbD0hMDtjbGFzcyB6Y3QgZXh0ZW5kcyBTbHR7Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMudHlwZT0iQ2FtZXJhIix0aGlzLm1hdHJpeFdvcmxkSW52ZXJzZT1uZXcgb2x0LHRoaXMucHJvamVjdGlvbk1hdHJpeD1uZXcgb2x0LHRoaXMucHJvamVjdGlvbk1hdHJpeEludmVyc2U9bmV3IG9sdH1jb3B5KHQsZSl7cmV0dXJuIHN1cGVyLmNvcHkodCxlKSx0aGlzLm1hdHJpeFdvcmxkSW52ZXJzZS5jb3B5KHQubWF0cml4V29ybGRJbnZlcnNlKSx0aGlzLnByb2plY3Rpb25NYXRyaXguY29weSh0LnByb2plY3Rpb25NYXRyaXgpLHRoaXMucHJvamVjdGlvbk1hdHJpeEludmVyc2UuY29weSh0LnByb2plY3Rpb25NYXRyaXhJbnZlcnNlKSx0aGlzfWdldFdvcmxkRGlyZWN0aW9uKHQpe3RoaXMudXBkYXRlV29ybGRNYXRyaXgoITAsITEpO2NvbnN0IGU9dGhpcy5tYXRyaXhXb3JsZC5lbGVtZW50cztyZXR1cm4gdC5zZXQoLWVbOF0sLWVbOV0sLWVbMTBdKS5ub3JtYWxpemUoKX11cGRhdGVNYXRyaXhXb3JsZCh0KXtzdXBlci51cGRhdGVNYXRyaXhXb3JsZCh0KSx0aGlzLm1hdHJpeFdvcmxkSW52ZXJzZS5jb3B5KHRoaXMubWF0cml4V29ybGQpLmludmVydCgpfXVwZGF0ZVdvcmxkTWF0cml4KHQsZSl7c3VwZXIudXBkYXRlV29ybGRNYXRyaXgodCxlKSx0aGlzLm1hdHJpeFdvcmxkSW52ZXJzZS5jb3B5KHRoaXMubWF0cml4V29ybGQpLmludmVydCgpfWNsb25lKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMpfX16Y3QucHJvdG90eXBlLmlzQ2FtZXJhPSEwO2NsYXNzIEljdCBleHRlbmRzIHpjdHtjb25zdHJ1Y3Rvcih0PTUwLGU9MSxuPS4xLG89MmUzKXtzdXBlcigpLHRoaXMudHlwZT0iUGVyc3BlY3RpdmVDYW1lcmEiLHRoaXMuZm92PXQsdGhpcy56b29tPTEsdGhpcy5uZWFyPW4sdGhpcy5mYXI9byx0aGlzLmZvY3VzPTEwLHRoaXMuYXNwZWN0PWUsdGhpcy52aWV3PW51bGwsdGhpcy5maWxtR2F1Z2U9MzUsdGhpcy5maWxtT2Zmc2V0PTAsdGhpcy51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCl9Y29weSh0LGUpe3JldHVybiBzdXBlci5jb3B5KHQsZSksdGhpcy5mb3Y9dC5mb3YsdGhpcy56b29tPXQuem9vbSx0aGlzLm5lYXI9dC5uZWFyLHRoaXMuZmFyPXQuZmFyLHRoaXMuZm9jdXM9dC5mb2N1cyx0aGlzLmFzcGVjdD10LmFzcGVjdCx0aGlzLnZpZXc9bnVsbD09PXQudmlldz9udWxsOk9iamVjdC5hc3NpZ24oe30sdC52aWV3KSx0aGlzLmZpbG1HYXVnZT10LmZpbG1HYXVnZSx0aGlzLmZpbG1PZmZzZXQ9dC5maWxtT2Zmc2V0LHRoaXN9c2V0Rm9jYWxMZW5ndGgodCl7Y29uc3QgZT0uNSp0aGlzLmdldEZpbG1IZWlnaHQoKS90O3RoaXMuZm92PTIqY3N0Kk1hdGguYXRhbihlKSx0aGlzLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKX1nZXRGb2NhbExlbmd0aCgpe2NvbnN0IHQ9TWF0aC50YW4oLjUqbHN0KnRoaXMuZm92KTtyZXR1cm4uNSp0aGlzLmdldEZpbG1IZWlnaHQoKS90fWdldEVmZmVjdGl2ZUZPVigpe3JldHVybiAyKmNzdCpNYXRoLmF0YW4oTWF0aC50YW4oLjUqbHN0KnRoaXMuZm92KS90aGlzLnpvb20pfWdldEZpbG1XaWR0aCgpe3JldHVybiB0aGlzLmZpbG1HYXVnZSpNYXRoLm1pbih0aGlzLmFzcGVjdCwxKX1nZXRGaWxtSGVpZ2h0KCl7cmV0dXJuIHRoaXMuZmlsbUdhdWdlL01hdGgubWF4KHRoaXMuYXNwZWN0LDEpfXNldFZpZXdPZmZzZXQodCxlLG4sbyxpLGEpe3RoaXMuYXNwZWN0PXQvZSxudWxsPT09dGhpcy52aWV3JiYodGhpcy52aWV3PXtlbmFibGVkOiEwLGZ1bGxXaWR0aDoxLGZ1bGxIZWlnaHQ6MSxvZmZzZXRYOjAsb2Zmc2V0WTowLHdpZHRoOjEsaGVpZ2h0OjF9KSx0aGlzLnZpZXcuZW5hYmxlZD0hMCx0aGlzLnZpZXcuZnVsbFdpZHRoPXQsdGhpcy52aWV3LmZ1bGxIZWlnaHQ9ZSx0aGlzLnZpZXcub2Zmc2V0WD1uLHRoaXMudmlldy5vZmZzZXRZPW8sdGhpcy52aWV3LndpZHRoPWksdGhpcy52aWV3LmhlaWdodD1hLHRoaXMudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpfWNsZWFyVmlld09mZnNldCgpe251bGwhPT10aGlzLnZpZXcmJih0aGlzLnZpZXcuZW5hYmxlZD0hMSksdGhpcy51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCl9dXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpe2NvbnN0IHQ9dGhpcy5uZWFyO2xldCBlPXQqTWF0aC50YW4oLjUqbHN0KnRoaXMuZm92KS90aGlzLnpvb20sbj0yKmUsbz10aGlzLmFzcGVjdCpuLGk9LS41Km87Y29uc3QgYT10aGlzLnZpZXc7aWYobnVsbCE9PXRoaXMudmlldyYmdGhpcy52aWV3LmVuYWJsZWQpe2NvbnN0IHQ9YS5mdWxsV2lkdGgscj1hLmZ1bGxIZWlnaHQ7aSs9YS5vZmZzZXRYKm8vdCxlLT1hLm9mZnNldFkqbi9yLG8qPWEud2lkdGgvdCxuKj1hLmhlaWdodC9yfWNvbnN0IHI9dGhpcy5maWxtT2Zmc2V0OzAhPT1yJiYoaSs9dCpyL3RoaXMuZ2V0RmlsbVdpZHRoKCkpLHRoaXMucHJvamVjdGlvbk1hdHJpeC5tYWtlUGVyc3BlY3RpdmUoaSxpK28sZSxlLW4sdCx0aGlzLmZhciksdGhpcy5wcm9qZWN0aW9uTWF0cml4SW52ZXJzZS5jb3B5KHRoaXMucHJvamVjdGlvbk1hdHJpeCkuaW52ZXJ0KCl9dG9KU09OKHQpe2NvbnN0IGU9c3VwZXIudG9KU09OKHQpO3JldHVybiBlLm9iamVjdC5mb3Y9dGhpcy5mb3YsZS5vYmplY3Quem9vbT10aGlzLnpvb20sZS5vYmplY3QubmVhcj10aGlzLm5lYXIsZS5vYmplY3QuZmFyPXRoaXMuZmFyLGUub2JqZWN0LmZvY3VzPXRoaXMuZm9jdXMsZS5vYmplY3QuYXNwZWN0PXRoaXMuYXNwZWN0LG51bGwhPT10aGlzLnZpZXcmJihlLm9iamVjdC52aWV3PU9iamVjdC5hc3NpZ24oe30sdGhpcy52aWV3KSksZS5vYmplY3QuZmlsbUdhdWdlPXRoaXMuZmlsbUdhdWdlLGUub2JqZWN0LmZpbG1PZmZzZXQ9dGhpcy5maWxtT2Zmc2V0LGV9fUljdC5wcm90b3R5cGUuaXNQZXJzcGVjdGl2ZUNhbWVyYT0hMDtjb25zdCBIY3Q9OTA7Y2xhc3MgRmN0IGV4dGVuZHMgU2x0e2NvbnN0cnVjdG9yKHQsZSxuKXtpZihzdXBlcigpLHRoaXMudHlwZT0iQ3ViZUNhbWVyYSIsITAhPT1uLmlzV2ViR0xDdWJlUmVuZGVyVGFyZ2V0KXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIlRIUkVFLkN1YmVDYW1lcmE6IFRoZSBjb25zdHJ1Y3RvciBub3cgZXhwZWN0cyBhbiBpbnN0YW5jZSBvZiBXZWJHTEN1YmVSZW5kZXJUYXJnZXQgYXMgdGhpcmQgcGFyYW1ldGVyLiIpO3RoaXMucmVuZGVyVGFyZ2V0PW47Y29uc3Qgbz1uZXcgSWN0KEhjdCwxLHQsZSk7by5sYXllcnM9dGhpcy5sYXllcnMsby51cC5zZXQoMCwtMSwwKSxvLmxvb2tBdChuZXcgd3N0KDEsMCwwKSksdGhpcy5hZGQobyk7Y29uc3QgaT1uZXcgSWN0KEhjdCwxLHQsZSk7aS5sYXllcnM9dGhpcy5sYXllcnMsaS51cC5zZXQoMCwtMSwwKSxpLmxvb2tBdChuZXcgd3N0KC0xLDAsMCkpLHRoaXMuYWRkKGkpO2NvbnN0IGE9bmV3IEljdChIY3QsMSx0LGUpO2EubGF5ZXJzPXRoaXMubGF5ZXJzLGEudXAuc2V0KDAsMCwxKSxhLmxvb2tBdChuZXcgd3N0KDAsMSwwKSksdGhpcy5hZGQoYSk7Y29uc3Qgcj1uZXcgSWN0KEhjdCwxLHQsZSk7ci5sYXllcnM9dGhpcy5sYXllcnMsci51cC5zZXQoMCwwLC0xKSxyLmxvb2tBdChuZXcgd3N0KDAsLTEsMCkpLHRoaXMuYWRkKHIpO2NvbnN0IHM9bmV3IEljdChIY3QsMSx0LGUpO3MubGF5ZXJzPXRoaXMubGF5ZXJzLHMudXAuc2V0KDAsLTEsMCkscy5sb29rQXQobmV3IHdzdCgwLDAsMSkpLHRoaXMuYWRkKHMpO2NvbnN0IGw9bmV3IEljdChIY3QsMSx0LGUpO2wubGF5ZXJzPXRoaXMubGF5ZXJzLGwudXAuc2V0KDAsLTEsMCksbC5sb29rQXQobmV3IHdzdCgwLDAsLTEpKSx0aGlzLmFkZChsKX11cGRhdGUodCxlKXtudWxsPT09dGhpcy5wYXJlbnQmJnRoaXMudXBkYXRlTWF0cml4V29ybGQoKTtjb25zdCBuPXRoaXMucmVuZGVyVGFyZ2V0LFtvLGksYSxyLHMsbF09dGhpcy5jaGlsZHJlbixjPXQueHIuZW5hYmxlZCxkPXQuZ2V0UmVuZGVyVGFyZ2V0KCk7dC54ci5lbmFibGVkPSExO2NvbnN0IHA9bi50ZXh0dXJlLmdlbmVyYXRlTWlwbWFwcztuLnRleHR1cmUuZ2VuZXJhdGVNaXBtYXBzPSExLHQuc2V0UmVuZGVyVGFyZ2V0KG4sMCksdC5yZW5kZXIoZSxvKSx0LnNldFJlbmRlclRhcmdldChuLDEpLHQucmVuZGVyKGUsaSksdC5zZXRSZW5kZXJUYXJnZXQobiwyKSx0LnJlbmRlcihlLGEpLHQuc2V0UmVuZGVyVGFyZ2V0KG4sMyksdC5yZW5kZXIoZSxyKSx0LnNldFJlbmRlclRhcmdldChuLDQpLHQucmVuZGVyKGUscyksbi50ZXh0dXJlLmdlbmVyYXRlTWlwbWFwcz1wLHQuc2V0UmVuZGVyVGFyZ2V0KG4sNSksdC5yZW5kZXIoZSxsKSx0LnNldFJlbmRlclRhcmdldChkKSx0LnhyLmVuYWJsZWQ9Y319Y2xhc3MgTGN0IGV4dGVuZHMgQ3N0e2NvbnN0cnVjdG9yKHQsZSxuLG8saSxhLHIscyxsLGMpe3N1cGVyKHQ9dm9pZCAwIT09dD90OltdLGU9dm9pZCAwIT09ZT9lOndydCxuLG8saSxhLHI9dm9pZCAwIT09cj9yOlZydCxzLGwsYyksdGhpcy5mbGlwWT0hMX1nZXQgaW1hZ2VzKCl7cmV0dXJuIHRoaXMuaW1hZ2V9c2V0IGltYWdlcyh0KXt0aGlzLmltYWdlPXR9fUxjdC5wcm90b3R5cGUuaXNDdWJlVGV4dHVyZT0hMDtjbGFzcyBCY3QgZXh0ZW5kcyB4c3R7Y29uc3RydWN0b3IodCxlLG4pe051bWJlci5pc0ludGVnZXIoZSkmJihjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMQ3ViZVJlbmRlclRhcmdldDogY29uc3RydWN0b3Igc2lnbmF0dXJlIGlzIG5vdyBXZWJHTEN1YmVSZW5kZXJUYXJnZXQoIHNpemUsIG9wdGlvbnMgKSIpLGU9biksc3VwZXIodCx0LGUpLHRoaXMudGV4dHVyZT1uZXcgTGN0KHZvaWQgMCwoZT1lfHx7fSkubWFwcGluZyxlLndyYXBTLGUud3JhcFQsZS5tYWdGaWx0ZXIsZS5taW5GaWx0ZXIsZS5mb3JtYXQsZS50eXBlLGUuYW5pc290cm9weSxlLmVuY29kaW5nKSx0aGlzLnRleHR1cmUuaXNSZW5kZXJUYXJnZXRUZXh0dXJlPSEwLHRoaXMudGV4dHVyZS5nZW5lcmF0ZU1pcG1hcHM9dm9pZCAwIT09ZS5nZW5lcmF0ZU1pcG1hcHMmJmUuZ2VuZXJhdGVNaXBtYXBzLHRoaXMudGV4dHVyZS5taW5GaWx0ZXI9dm9pZCAwIT09ZS5taW5GaWx0ZXI/ZS5taW5GaWx0ZXI6VHJ0LHRoaXMudGV4dHVyZS5fbmVlZHNGbGlwRW52TWFwPSExfWZyb21FcXVpcmVjdGFuZ3VsYXJUZXh0dXJlKHQsZSl7dGhpcy50ZXh0dXJlLnR5cGU9ZS50eXBlLHRoaXMudGV4dHVyZS5mb3JtYXQ9anJ0LHRoaXMudGV4dHVyZS5lbmNvZGluZz1lLmVuY29kaW5nLHRoaXMudGV4dHVyZS5nZW5lcmF0ZU1pcG1hcHM9ZS5nZW5lcmF0ZU1pcG1hcHMsdGhpcy50ZXh0dXJlLm1pbkZpbHRlcj1lLm1pbkZpbHRlcix0aGlzLnRleHR1cmUubWFnRmlsdGVyPWUubWFnRmlsdGVyO2NvbnN0IG49e3VuaWZvcm1zOnt0RXF1aXJlY3Q6e3ZhbHVlOm51bGx9fSx2ZXJ0ZXhTaGFkZXI6IlxuXG5cdFx0XHRcdHZhcnlpbmcgdmVjMyB2V29ybGREaXJlY3Rpb247XG5cblx0XHRcdFx0dmVjMyB0cmFuc2Zvcm1EaXJlY3Rpb24oIGluIHZlYzMgZGlyLCBpbiBtYXQ0IG1hdHJpeCApIHtcblxuXHRcdFx0XHRcdHJldHVybiBub3JtYWxpemUoICggbWF0cml4ICogdmVjNCggZGlyLCAwLjAgKSApLnh5eiApO1xuXG5cdFx0XHRcdH1cblxuXHRcdFx0XHR2b2lkIG1haW4oKSB7XG5cblx0XHRcdFx0XHR2V29ybGREaXJlY3Rpb24gPSB0cmFuc2Zvcm1EaXJlY3Rpb24oIHBvc2l0aW9uLCBtb2RlbE1hdHJpeCApO1xuXG5cdFx0XHRcdFx0I2luY2x1ZGUgPGJlZ2luX3ZlcnRleD5cblx0XHRcdFx0XHQjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+XG5cblx0XHRcdFx0fVxuXHRcdFx0IixmcmFnbWVudFNoYWRlcjoiXG5cblx0XHRcdFx0dW5pZm9ybSBzYW1wbGVyMkQgdEVxdWlyZWN0O1xuXG5cdFx0XHRcdHZhcnlpbmcgdmVjMyB2V29ybGREaXJlY3Rpb247XG5cblx0XHRcdFx0I2luY2x1ZGUgPGNvbW1vbj5cblxuXHRcdFx0XHR2b2lkIG1haW4oKSB7XG5cblx0XHRcdFx0XHR2ZWMzIGRpcmVjdGlvbiA9IG5vcm1hbGl6ZSggdldvcmxkRGlyZWN0aW9uICk7XG5cblx0XHRcdFx0XHR2ZWMyIHNhbXBsZVVWID0gZXF1aXJlY3RVdiggZGlyZWN0aW9uICk7XG5cblx0XHRcdFx0XHRnbF9GcmFnQ29sb3IgPSB0ZXh0dXJlMkQoIHRFcXVpcmVjdCwgc2FtcGxlVVYgKTtcblxuXHRcdFx0XHR9XG5cdFx0XHQifSxvPW5ldyBSY3QoNSw1LDUpLGk9bmV3IE5jdCh7bmFtZToiQ3ViZW1hcEZyb21FcXVpcmVjdCIsdW5pZm9ybXM6RWN0KG4udW5pZm9ybXMpLHZlcnRleFNoYWRlcjpuLnZlcnRleFNoYWRlcixmcmFnbWVudFNoYWRlcjpuLmZyYWdtZW50U2hhZGVyLHNpZGU6MSxibGVuZGluZzowfSk7aS51bmlmb3Jtcy50RXF1aXJlY3QudmFsdWU9ZTtjb25zdCBhPW5ldyBTY3QobyxpKSxyPWUubWluRmlsdGVyO2UubWluRmlsdGVyPT09TnJ0JiYoZS5taW5GaWx0ZXI9VHJ0KTtyZXR1cm4gbmV3IEZjdCgxLDEwLHRoaXMpLnVwZGF0ZSh0LGEpLGUubWluRmlsdGVyPXIsYS5nZW9tZXRyeS5kaXNwb3NlKCksYS5tYXRlcmlhbC5kaXNwb3NlKCksdGhpc31jbGVhcih0LGUsbixvKXtjb25zdCBpPXQuZ2V0UmVuZGVyVGFyZ2V0KCk7Zm9yKGxldCBpPTA7aTw2O2krKyl0LnNldFJlbmRlclRhcmdldCh0aGlzLGkpLHQuY2xlYXIoZSxuLG8pO3Quc2V0UmVuZGVyVGFyZ2V0KGkpfX1CY3QucHJvdG90eXBlLmlzV2ViR0xDdWJlUmVuZGVyVGFyZ2V0PSEwO2NvbnN0IFZjdD1uZXcgd3N0LGpjdD1uZXcgd3N0LFVjdD1uZXcgaHN0O2NsYXNzIFdjdHtjb25zdHJ1Y3Rvcih0PW5ldyB3c3QoMSwwLDApLGU9MCl7dGhpcy5ub3JtYWw9dCx0aGlzLmNvbnN0YW50PWV9c2V0KHQsZSl7cmV0dXJuIHRoaXMubm9ybWFsLmNvcHkodCksdGhpcy5jb25zdGFudD1lLHRoaXN9c2V0Q29tcG9uZW50cyh0LGUsbixvKXtyZXR1cm4gdGhpcy5ub3JtYWwuc2V0KHQsZSxuKSx0aGlzLmNvbnN0YW50PW8sdGhpc31zZXRGcm9tTm9ybWFsQW5kQ29wbGFuYXJQb2ludCh0LGUpe3JldHVybiB0aGlzLm5vcm1hbC5jb3B5KHQpLHRoaXMuY29uc3RhbnQ9LWUuZG90KHRoaXMubm9ybWFsKSx0aGlzfXNldEZyb21Db3BsYW5hclBvaW50cyh0LGUsbil7Y29uc3Qgbz1WY3Quc3ViVmVjdG9ycyhuLGUpLmNyb3NzKGpjdC5zdWJWZWN0b3JzKHQsZSkpLm5vcm1hbGl6ZSgpO3JldHVybiB0aGlzLnNldEZyb21Ob3JtYWxBbmRDb3BsYW5hclBvaW50KG8sdCksdGhpc31jb3B5KHQpe3JldHVybiB0aGlzLm5vcm1hbC5jb3B5KHQubm9ybWFsKSx0aGlzLmNvbnN0YW50PXQuY29uc3RhbnQsdGhpc31ub3JtYWxpemUoKXtjb25zdCB0PTEvdGhpcy5ub3JtYWwubGVuZ3RoKCk7cmV0dXJuIHRoaXMubm9ybWFsLm11bHRpcGx5U2NhbGFyKHQpLHRoaXMuY29uc3RhbnQqPXQsdGhpc31uZWdhdGUoKXtyZXR1cm4gdGhpcy5jb25zdGFudCo9LTEsdGhpcy5ub3JtYWwubmVnYXRlKCksdGhpc31kaXN0YW5jZVRvUG9pbnQodCl7cmV0dXJuIHRoaXMubm9ybWFsLmRvdCh0KSt0aGlzLmNvbnN0YW50fWRpc3RhbmNlVG9TcGhlcmUodCl7cmV0dXJuIHRoaXMuZGlzdGFuY2VUb1BvaW50KHQuY2VudGVyKS10LnJhZGl1c31wcm9qZWN0UG9pbnQodCxlKXtyZXR1cm4gZS5jb3B5KHRoaXMubm9ybWFsKS5tdWx0aXBseVNjYWxhcigtdGhpcy5kaXN0YW5jZVRvUG9pbnQodCkpLmFkZCh0KX1pbnRlcnNlY3RMaW5lKHQsZSl7Y29uc3Qgbj10LmRlbHRhKFZjdCksbz10aGlzLm5vcm1hbC5kb3Qobik7aWYoMD09PW8pcmV0dXJuIDA9PT10aGlzLmRpc3RhbmNlVG9Qb2ludCh0LnN0YXJ0KT9lLmNvcHkodC5zdGFydCk6bnVsbDtjb25zdCBpPS0odC5zdGFydC5kb3QodGhpcy5ub3JtYWwpK3RoaXMuY29uc3RhbnQpL287cmV0dXJuIGk8MHx8aT4xP251bGw6ZS5jb3B5KG4pLm11bHRpcGx5U2NhbGFyKGkpLmFkZCh0LnN0YXJ0KX1pbnRlcnNlY3RzTGluZSh0KXtjb25zdCBlPXRoaXMuZGlzdGFuY2VUb1BvaW50KHQuc3RhcnQpLG49dGhpcy5kaXN0YW5jZVRvUG9pbnQodC5lbmQpO3JldHVybiBlPDAmJm4+MHx8bjwwJiZlPjB9aW50ZXJzZWN0c0JveCh0KXtyZXR1cm4gdC5pbnRlcnNlY3RzUGxhbmUodGhpcyl9aW50ZXJzZWN0c1NwaGVyZSh0KXtyZXR1cm4gdC5pbnRlcnNlY3RzUGxhbmUodGhpcyl9Y29wbGFuYXJQb2ludCh0KXtyZXR1cm4gdC5jb3B5KHRoaXMubm9ybWFsKS5tdWx0aXBseVNjYWxhcigtdGhpcy5jb25zdGFudCl9YXBwbHlNYXRyaXg0KHQsZSl7Y29uc3Qgbj1lfHxVY3QuZ2V0Tm9ybWFsTWF0cml4KHQpLG89dGhpcy5jb3BsYW5hclBvaW50KFZjdCkuYXBwbHlNYXRyaXg0KHQpLGk9dGhpcy5ub3JtYWwuYXBwbHlNYXRyaXgzKG4pLm5vcm1hbGl6ZSgpO3JldHVybiB0aGlzLmNvbnN0YW50PS1vLmRvdChpKSx0aGlzfXRyYW5zbGF0ZSh0KXtyZXR1cm4gdGhpcy5jb25zdGFudC09dC5kb3QodGhpcy5ub3JtYWwpLHRoaXN9ZXF1YWxzKHQpe3JldHVybiB0Lm5vcm1hbC5lcXVhbHModGhpcy5ub3JtYWwpJiZ0LmNvbnN0YW50PT09dGhpcy5jb25zdGFudH1jbG9uZSgpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3RvcikuY29weSh0aGlzKX19V2N0LnByb3RvdHlwZS5pc1BsYW5lPSEwO2NvbnN0IEdjdD1uZXcgWnN0LFljdD1uZXcgd3N0O2NsYXNzIHFjdHtjb25zdHJ1Y3Rvcih0PW5ldyBXY3QsZT1uZXcgV2N0LG49bmV3IFdjdCxvPW5ldyBXY3QsaT1uZXcgV2N0LGE9bmV3IFdjdCl7dGhpcy5wbGFuZXM9W3QsZSxuLG8saSxhXX1zZXQodCxlLG4sbyxpLGEpe2NvbnN0IHI9dGhpcy5wbGFuZXM7cmV0dXJuIHJbMF0uY29weSh0KSxyWzFdLmNvcHkoZSksclsyXS5jb3B5KG4pLHJbM10uY29weShvKSxyWzRdLmNvcHkoaSkscls1XS5jb3B5KGEpLHRoaXN9Y29weSh0KXtjb25zdCBlPXRoaXMucGxhbmVzO2ZvcihsZXQgbj0wO248NjtuKyspZVtuXS5jb3B5KHQucGxhbmVzW25dKTtyZXR1cm4gdGhpc31zZXRGcm9tUHJvamVjdGlvbk1hdHJpeCh0KXtjb25zdCBlPXRoaXMucGxhbmVzLG49dC5lbGVtZW50cyxvPW5bMF0saT1uWzFdLGE9blsyXSxyPW5bM10scz1uWzRdLGw9bls1XSxjPW5bNl0sZD1uWzddLHA9bls4XSxtPW5bOV0sZj1uWzEwXSx1PW5bMTFdLGc9blsxMl0saD1uWzEzXSxiPW5bMTRdLHk9blsxNV07cmV0dXJuIGVbMF0uc2V0Q29tcG9uZW50cyhyLW8sZC1zLHUtcCx5LWcpLm5vcm1hbGl6ZSgpLGVbMV0uc2V0Q29tcG9uZW50cyhyK28sZCtzLHUrcCx5K2cpLm5vcm1hbGl6ZSgpLGVbMl0uc2V0Q29tcG9uZW50cyhyK2ksZCtsLHUrbSx5K2gpLm5vcm1hbGl6ZSgpLGVbM10uc2V0Q29tcG9uZW50cyhyLWksZC1sLHUtbSx5LWgpLm5vcm1hbGl6ZSgpLGVbNF0uc2V0Q29tcG9uZW50cyhyLWEsZC1jLHUtZix5LWIpLm5vcm1hbGl6ZSgpLGVbNV0uc2V0Q29tcG9uZW50cyhyK2EsZCtjLHUrZix5K2IpLm5vcm1hbGl6ZSgpLHRoaXN9aW50ZXJzZWN0c09iamVjdCh0KXtjb25zdCBlPXQuZ2VvbWV0cnk7cmV0dXJuIG51bGw9PT1lLmJvdW5kaW5nU3BoZXJlJiZlLmNvbXB1dGVCb3VuZGluZ1NwaGVyZSgpLEdjdC5jb3B5KGUuYm91bmRpbmdTcGhlcmUpLmFwcGx5TWF0cml4NCh0Lm1hdHJpeFdvcmxkKSx0aGlzLmludGVyc2VjdHNTcGhlcmUoR2N0KX1pbnRlcnNlY3RzU3ByaXRlKHQpe3JldHVybiBHY3QuY2VudGVyLnNldCgwLDAsMCksR2N0LnJhZGl1cz0uNzA3MTA2NzgxMTg2NTQ3NixHY3QuYXBwbHlNYXRyaXg0KHQubWF0cml4V29ybGQpLHRoaXMuaW50ZXJzZWN0c1NwaGVyZShHY3QpfWludGVyc2VjdHNTcGhlcmUodCl7Y29uc3QgZT10aGlzLnBsYW5lcyxuPXQuY2VudGVyLG89LXQucmFkaXVzO2ZvcihsZXQgdD0wO3Q8Njt0Kyspe2lmKGVbdF0uZGlzdGFuY2VUb1BvaW50KG4pPG8pcmV0dXJuITF9cmV0dXJuITB9aW50ZXJzZWN0c0JveCh0KXtjb25zdCBlPXRoaXMucGxhbmVzO2ZvcihsZXQgbj0wO248NjtuKyspe2NvbnN0IG89ZVtuXTtpZihZY3QueD1vLm5vcm1hbC54PjA/dC5tYXgueDp0Lm1pbi54LFljdC55PW8ubm9ybWFsLnk+MD90Lm1heC55OnQubWluLnksWWN0Lno9by5ub3JtYWwuej4wP3QubWF4Lno6dC5taW4ueixvLmRpc3RhbmNlVG9Qb2ludChZY3QpPDApcmV0dXJuITF9cmV0dXJuITB9Y29udGFpbnNQb2ludCh0KXtjb25zdCBlPXRoaXMucGxhbmVzO2ZvcihsZXQgbj0wO248NjtuKyspaWYoZVtuXS5kaXN0YW5jZVRvUG9pbnQodCk8MClyZXR1cm4hMTtyZXR1cm4hMH1jbG9uZSgpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3RvcikuY29weSh0aGlzKX19ZnVuY3Rpb24gWmN0KCl7bGV0IHQ9bnVsbCxlPSExLG49bnVsbCxvPW51bGw7ZnVuY3Rpb24gaShlLGEpe24oZSxhKSxvPXQucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGkpfXJldHVybntzdGFydDpmdW5jdGlvbigpeyEwIT09ZSYmbnVsbCE9PW4mJihvPXQucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGkpLGU9ITApfSxzdG9wOmZ1bmN0aW9uKCl7dC5jYW5jZWxBbmltYXRpb25GcmFtZShvKSxlPSExfSxzZXRBbmltYXRpb25Mb29wOmZ1bmN0aW9uKHQpe249dH0sc2V0Q29udGV4dDpmdW5jdGlvbihlKXt0PWV9fX1mdW5jdGlvbiBYY3QodCxlKXtjb25zdCBuPWUuaXNXZWJHTDIsbz1uZXcgV2Vha01hcDtyZXR1cm57Z2V0OmZ1bmN0aW9uIGkodCl7cmV0dXJuIHQuaXNJbnRlcmxlYXZlZEJ1ZmZlckF0dHJpYnV0ZSYmKHQ9dC5kYXRhKSxvLmdldCh0KX0scmVtb3ZlOmZ1bmN0aW9uIGEoZSl7ZS5pc0ludGVybGVhdmVkQnVmZmVyQXR0cmlidXRlJiYoZT1lLmRhdGEpO2NvbnN0IG49by5nZXQoZSk7biYmKHQuZGVsZXRlQnVmZmVyKG4uYnVmZmVyKSxvLmRlbGV0ZShlKSl9LHVwZGF0ZTpmdW5jdGlvbiByKGUsaSl7aWYoZS5pc0dMQnVmZmVyQXR0cmlidXRlKXtjb25zdCB0PW8uZ2V0KGUpO3JldHVybiB2b2lkKCghdHx8dC52ZXJzaW9uPGUudmVyc2lvbikmJm8uc2V0KGUse2J1ZmZlcjplLmJ1ZmZlcix0eXBlOmUudHlwZSxieXRlc1BlckVsZW1lbnQ6ZS5lbGVtZW50U2l6ZSx2ZXJzaW9uOmUudmVyc2lvbn0pKX1lLmlzSW50ZXJsZWF2ZWRCdWZmZXJBdHRyaWJ1dGUmJihlPWUuZGF0YSk7Y29uc3QgYT1vLmdldChlKTt2b2lkIDA9PT1hP28uc2V0KGUsKGZ1bmN0aW9uIHIoZSxvKXtjb25zdCBpPWUuYXJyYXksYT1lLnVzYWdlLHI9dC5jcmVhdGVCdWZmZXIoKTt0LmJpbmRCdWZmZXIobyxyKSx0LmJ1ZmZlckRhdGEobyxpLGEpLGUub25VcGxvYWRDYWxsYmFjaygpO2xldCBzPTUxMjY7cmV0dXJuIGkgaW5zdGFuY2VvZiBGbG9hdDMyQXJyYXk/cz01MTI2OmkgaW5zdGFuY2VvZiBGbG9hdDY0QXJyYXk/Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTEF0dHJpYnV0ZXM6IFVuc3VwcG9ydGVkIGRhdGEgYnVmZmVyIGZvcm1hdDogRmxvYXQ2NEFycmF5LiIpOmkgaW5zdGFuY2VvZiBVaW50MTZBcnJheT9lLmlzRmxvYXQxNkJ1ZmZlckF0dHJpYnV0ZT9uP3M9NTEzMTpjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMQXR0cmlidXRlczogVXNhZ2Ugb2YgRmxvYXQxNkJ1ZmZlckF0dHJpYnV0ZSByZXF1aXJlcyBXZWJHTDIuIik6cz01MTIzOmkgaW5zdGFuY2VvZiBJbnQxNkFycmF5P3M9NTEyMjppIGluc3RhbmNlb2YgVWludDMyQXJyYXk/cz01MTI1OmkgaW5zdGFuY2VvZiBJbnQzMkFycmF5P3M9NTEyNDppIGluc3RhbmNlb2YgSW50OEFycmF5P3M9NTEyMDooaSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXl8fGkgaW5zdGFuY2VvZiBVaW50OENsYW1wZWRBcnJheSkmJihzPTUxMjEpLHtidWZmZXI6cix0eXBlOnMsYnl0ZXNQZXJFbGVtZW50OmkuQllURVNfUEVSX0VMRU1FTlQsdmVyc2lvbjplLnZlcnNpb259fSkoZSxpKSk6YS52ZXJzaW9uPGUudmVyc2lvbiYmKCEoZnVuY3Rpb24gcyhlLG8saSl7Y29uc3QgYT1vLmFycmF5LHI9by51cGRhdGVSYW5nZTt0LmJpbmRCdWZmZXIoaSxlKSwtMT09PXIuY291bnQ/dC5idWZmZXJTdWJEYXRhKGksMCxhKToobj90LmJ1ZmZlclN1YkRhdGEoaSxyLm9mZnNldCphLkJZVEVTX1BFUl9FTEVNRU5ULGEsci5vZmZzZXQsci5jb3VudCk6dC5idWZmZXJTdWJEYXRhKGksci5vZmZzZXQqYS5CWVRFU19QRVJfRUxFTUVOVCxhLnN1YmFycmF5KHIub2Zmc2V0LHIub2Zmc2V0K3IuY291bnQpKSxyLmNvdW50PS0xKX0pKGEuYnVmZmVyLGUsaSksYS52ZXJzaW9uPWUudmVyc2lvbil9fX1jbGFzcyBLY3QgZXh0ZW5kcyBkY3R7Y29uc3RydWN0b3IodD0xLGU9MSxuPTEsbz0xKXtzdXBlcigpLHRoaXMudHlwZT0iUGxhbmVHZW9tZXRyeSIsdGhpcy5wYXJhbWV0ZXJzPXt3aWR0aDp0LGhlaWdodDplLHdpZHRoU2VnbWVudHM6bixoZWlnaHRTZWdtZW50czpvfTtjb25zdCBpPXQvMixhPWUvMixyPU1hdGguZmxvb3Iobikscz1NYXRoLmZsb29yKG8pLGw9cisxLGM9cysxLGQ9dC9yLHA9ZS9zLG09W10sZj1bXSx1PVtdLGc9W107Zm9yKGxldCB0PTA7dDxjO3QrKyl7Y29uc3QgZT10KnAtYTtmb3IobGV0IG49MDtuPGw7bisrKXtmLnB1c2gobipkLWksLWUsMCksdS5wdXNoKDAsMCwxKSxnLnB1c2gobi9yKSxnLnB1c2goMS10L3MpfX1mb3IobGV0IHQ9MDt0PHM7dCsrKWZvcihsZXQgZT0wO2U8cjtlKyspe2NvbnN0IG49ZStsKih0KzEpLG89ZSsxK2wqKHQrMSksaT1lKzErbCp0O20ucHVzaChlK2wqdCxuLGkpLG0ucHVzaChuLG8saSl9dGhpcy5zZXRJbmRleChtKSx0aGlzLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBlY3QoZiwzKSksdGhpcy5zZXRBdHRyaWJ1dGUoIm5vcm1hbCIsbmV3IGVjdCh1LDMpKSx0aGlzLnNldEF0dHJpYnV0ZSgidXYiLG5ldyBlY3QoZywyKSl9c3RhdGljIGZyb21KU09OKHQpe3JldHVybiBuZXcgS2N0KHQud2lkdGgsdC5oZWlnaHQsdC53aWR0aFNlZ21lbnRzLHQuaGVpZ2h0U2VnbWVudHMpfX1jb25zdCBKY3Q9e2FscGhhbWFwX2ZyYWdtZW50OiIjaWZkZWYgVVNFX0FMUEhBTUFQXG5cdGRpZmZ1c2VDb2xvci5hICo9IHRleHR1cmUyRCggYWxwaGFNYXAsIHZVdiApLmc7XG4jZW5kaWYiLGFscGhhbWFwX3BhcnNfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfQUxQSEFNQVBcblx0dW5pZm9ybSBzYW1wbGVyMkQgYWxwaGFNYXA7XG4jZW5kaWYiLGFscGhhdGVzdF9mcmFnbWVudDoiI2lmZGVmIEFMUEhBVEVTVFxuXHRpZiAoIGRpZmZ1c2VDb2xvci5hIDwgQUxQSEFURVNUICkgZGlzY2FyZDtcbiNlbmRpZiIsYW9tYXBfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfQU9NQVBcblx0ZmxvYXQgYW1iaWVudE9jY2x1c2lvbiA9ICggdGV4dHVyZTJEKCBhb01hcCwgdlV2MiApLnIgLSAxLjAgKSAqIGFvTWFwSW50ZW5zaXR5ICsgMS4wO1xuXHRyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKj0gYW1iaWVudE9jY2x1c2lvbjtcblx0I2lmIGRlZmluZWQoIFVTRV9FTlZNQVAgKSAmJiBkZWZpbmVkKCBTVEFOREFSRCApXG5cdFx0ZmxvYXQgZG90TlYgPSBzYXR1cmF0ZSggZG90KCBnZW9tZXRyeS5ub3JtYWwsIGdlb21ldHJ5LnZpZXdEaXIgKSApO1xuXHRcdHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0U3BlY3VsYXIgKj0gY29tcHV0ZVNwZWN1bGFyT2NjbHVzaW9uKCBkb3ROViwgYW1iaWVudE9jY2x1c2lvbiwgbWF0ZXJpYWwuc3BlY3VsYXJSb3VnaG5lc3MgKTtcblx0I2VuZGlmXG4jZW5kaWYiLGFvbWFwX3BhcnNfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfQU9NQVBcblx0dW5pZm9ybSBzYW1wbGVyMkQgYW9NYXA7XG5cdHVuaWZvcm0gZmxvYXQgYW9NYXBJbnRlbnNpdHk7XG4jZW5kaWYiLGJlZ2luX3ZlcnRleDoidmVjMyB0cmFuc2Zvcm1lZCA9IHZlYzMoIHBvc2l0aW9uICk7IixiZWdpbm5vcm1hbF92ZXJ0ZXg6InZlYzMgb2JqZWN0Tm9ybWFsID0gdmVjMyggbm9ybWFsICk7XG4jaWZkZWYgVVNFX1RBTkdFTlRcblx0dmVjMyBvYmplY3RUYW5nZW50ID0gdmVjMyggdGFuZ2VudC54eXogKTtcbiNlbmRpZiIsYnNkZnM6InZlYzIgaW50ZWdyYXRlU3BlY3VsYXJCUkRGKCBjb25zdCBpbiBmbG9hdCBkb3ROViwgY29uc3QgaW4gZmxvYXQgcm91Z2huZXNzICkge1xuXHRjb25zdCB2ZWM0IGMwID0gdmVjNCggLSAxLCAtIDAuMDI3NSwgLSAwLjU3MiwgMC4wMjIgKTtcblx0Y29uc3QgdmVjNCBjMSA9IHZlYzQoIDEsIDAuMDQyNSwgMS4wNCwgLSAwLjA0ICk7XG5cdHZlYzQgciA9IHJvdWdobmVzcyAqIGMwICsgYzE7XG5cdGZsb2F0IGEwMDQgPSBtaW4oIHIueCAqIHIueCwgZXhwMiggLSA5LjI4ICogZG90TlYgKSApICogci54ICsgci55O1xuXHRyZXR1cm4gdmVjMiggLTEuMDQsIDEuMDQgKSAqIGEwMDQgKyByLnp3O1xufVxuZmxvYXQgcHVuY3R1YWxMaWdodEludGVuc2l0eVRvSXJyYWRpYW5jZUZhY3RvciggY29uc3QgaW4gZmxvYXQgbGlnaHREaXN0YW5jZSwgY29uc3QgaW4gZmxvYXQgY3V0b2ZmRGlzdGFuY2UsIGNvbnN0IGluIGZsb2F0IGRlY2F5RXhwb25lbnQgKSB7XG4jaWYgZGVmaW5lZCAoIFBIWVNJQ0FMTFlfQ09SUkVDVF9MSUdIVFMgKVxuXHRmbG9hdCBkaXN0YW5jZUZhbGxvZmYgPSAxLjAgLyBtYXgoIHBvdyggbGlnaHREaXN0YW5jZSwgZGVjYXlFeHBvbmVudCApLCAwLjAxICk7XG5cdGlmKCBjdXRvZmZEaXN0YW5jZSA+IDAuMCApIHtcblx0XHRkaXN0YW5jZUZhbGxvZmYgKj0gcG93Miggc2F0dXJhdGUoIDEuMCAtIHBvdzQoIGxpZ2h0RGlzdGFuY2UgLyBjdXRvZmZEaXN0YW5jZSApICkgKTtcblx0fVxuXHRyZXR1cm4gZGlzdGFuY2VGYWxsb2ZmO1xuI2Vsc2Vcblx0aWYoIGN1dG9mZkRpc3RhbmNlID4gMC4wICYmIGRlY2F5RXhwb25lbnQgPiAwLjAgKSB7XG5cdFx0cmV0dXJuIHBvdyggc2F0dXJhdGUoIC1saWdodERpc3RhbmNlIC8gY3V0b2ZmRGlzdGFuY2UgKyAxLjAgKSwgZGVjYXlFeHBvbmVudCApO1xuXHR9XG5cdHJldHVybiAxLjA7XG4jZW5kaWZcbn1cbnZlYzMgQlJERl9EaWZmdXNlX0xhbWJlcnQoIGNvbnN0IGluIHZlYzMgZGlmZnVzZUNvbG9yICkge1xuXHRyZXR1cm4gUkVDSVBST0NBTF9QSSAqIGRpZmZ1c2VDb2xvcjtcbn1cbnZlYzMgRl9TY2hsaWNrKCBjb25zdCBpbiB2ZWMzIGYwLCBjb25zdCBpbiB2ZWMzIGY5MCwgY29uc3QgaW4gZmxvYXQgZG90VkggKSB7XG5cdGZsb2F0IGZyZXNuZWwgPSBleHAyKCAoIC01LjU1NDczICogZG90VkggLSA2Ljk4MzE2ICkgKiBkb3RWSCApO1xuXHRyZXR1cm4gKCBmOTAgLSBmMCApICogZnJlc25lbCArIGYwO1xufVxudmVjMyBGX1NjaGxpY2tfUm91Z2huZXNzRGVwZW5kZW50KCBjb25zdCBpbiB2ZWMzIEYwLCBjb25zdCBpbiBmbG9hdCBkb3ROViwgY29uc3QgaW4gZmxvYXQgcm91Z2huZXNzICkge1xuXHRmbG9hdCBmcmVzbmVsID0gZXhwMiggKCAtNS41NTQ3MyAqIGRvdE5WIC0gNi45ODMxNiApICogZG90TlYgKTtcblx0dmVjMyBGciA9IG1heCggdmVjMyggMS4wIC0gcm91Z2huZXNzICksIEYwICkgLSBGMDtcblx0cmV0dXJuIEZyICogZnJlc25lbCArIEYwO1xufVxuZmxvYXQgR19HR1hfU21pdGgoIGNvbnN0IGluIGZsb2F0IGFscGhhLCBjb25zdCBpbiBmbG9hdCBkb3ROTCwgY29uc3QgaW4gZmxvYXQgZG90TlYgKSB7XG5cdGZsb2F0IGEyID0gcG93MiggYWxwaGEgKTtcblx0ZmxvYXQgZ2wgPSBkb3ROTCArIHNxcnQoIGEyICsgKCAxLjAgLSBhMiApICogcG93MiggZG90TkwgKSApO1xuXHRmbG9hdCBndiA9IGRvdE5WICsgc3FydCggYTIgKyAoIDEuMCAtIGEyICkgKiBwb3cyKCBkb3ROViApICk7XG5cdHJldHVybiAxLjAgLyAoIGdsICogZ3YgKTtcbn1cbmZsb2F0IEdfR0dYX1NtaXRoQ29ycmVsYXRlZCggY29uc3QgaW4gZmxvYXQgYWxwaGEsIGNvbnN0IGluIGZsb2F0IGRvdE5MLCBjb25zdCBpbiBmbG9hdCBkb3ROViApIHtcblx0ZmxvYXQgYTIgPSBwb3cyKCBhbHBoYSApO1xuXHRmbG9hdCBndiA9IGRvdE5MICogc3FydCggYTIgKyAoIDEuMCAtIGEyICkgKiBwb3cyKCBkb3ROViApICk7XG5cdGZsb2F0IGdsID0gZG90TlYgKiBzcXJ0KCBhMiArICggMS4wIC0gYTIgKSAqIHBvdzIoIGRvdE5MICkgKTtcblx0cmV0dXJuIDAuNSAvIG1heCggZ3YgKyBnbCwgRVBTSUxPTiApO1xufVxuZmxvYXQgRF9HR1goIGNvbnN0IGluIGZsb2F0IGFscGhhLCBjb25zdCBpbiBmbG9hdCBkb3ROSCApIHtcblx0ZmxvYXQgYTIgPSBwb3cyKCBhbHBoYSApO1xuXHRmbG9hdCBkZW5vbSA9IHBvdzIoIGRvdE5IICkgKiAoIGEyIC0gMS4wICkgKyAxLjA7XG5cdHJldHVybiBSRUNJUFJPQ0FMX1BJICogYTIgLyBwb3cyKCBkZW5vbSApO1xufVxudmVjMyBCUkRGX1NwZWN1bGFyX0dHWCggY29uc3QgaW4gSW5jaWRlbnRMaWdodCBpbmNpZGVudExpZ2h0LCBjb25zdCBpbiB2ZWMzIHZpZXdEaXIsIGNvbnN0IGluIHZlYzMgbm9ybWFsLCBjb25zdCBpbiB2ZWMzIGYwLCBjb25zdCBpbiB2ZWMzIGY5MCwgY29uc3QgaW4gZmxvYXQgcm91Z2huZXNzICkge1xuXHRmbG9hdCBhbHBoYSA9IHBvdzIoIHJvdWdobmVzcyApO1xuXHR2ZWMzIGhhbGZEaXIgPSBub3JtYWxpemUoIGluY2lkZW50TGlnaHQuZGlyZWN0aW9uICsgdmlld0RpciApO1xuXHRmbG9hdCBkb3ROTCA9IHNhdHVyYXRlKCBkb3QoIG5vcm1hbCwgaW5jaWRlbnRMaWdodC5kaXJlY3Rpb24gKSApO1xuXHRmbG9hdCBkb3ROViA9IHNhdHVyYXRlKCBkb3QoIG5vcm1hbCwgdmlld0RpciApICk7XG5cdGZsb2F0IGRvdE5IID0gc2F0dXJhdGUoIGRvdCggbm9ybWFsLCBoYWxmRGlyICkgKTtcblx0ZmxvYXQgZG90TEggPSBzYXR1cmF0ZSggZG90KCBpbmNpZGVudExpZ2h0LmRpcmVjdGlvbiwgaGFsZkRpciApICk7XG5cdHZlYzMgRiA9IEZfU2NobGljayggZjAsIGY5MCwgZG90TEggKTtcblx0ZmxvYXQgRyA9IEdfR0dYX1NtaXRoQ29ycmVsYXRlZCggYWxwaGEsIGRvdE5MLCBkb3ROViApO1xuXHRmbG9hdCBEID0gRF9HR1goIGFscGhhLCBkb3ROSCApO1xuXHRyZXR1cm4gRiAqICggRyAqIEQgKTtcbn1cbnZlYzIgTFRDX1V2KCBjb25zdCBpbiB2ZWMzIE4sIGNvbnN0IGluIHZlYzMgViwgY29uc3QgaW4gZmxvYXQgcm91Z2huZXNzICkge1xuXHRjb25zdCBmbG9hdCBMVVRfU0laRSA9IDY0LjA7XG5cdGNvbnN0IGZsb2F0IExVVF9TQ0FMRSA9ICggTFVUX1NJWkUgLSAxLjAgKSAvIExVVF9TSVpFO1xuXHRjb25zdCBmbG9hdCBMVVRfQklBUyA9IDAuNSAvIExVVF9TSVpFO1xuXHRmbG9hdCBkb3ROViA9IHNhdHVyYXRlKCBkb3QoIE4sIFYgKSApO1xuXHR2ZWMyIHV2ID0gdmVjMiggcm91Z2huZXNzLCBzcXJ0KCAxLjAgLSBkb3ROViApICk7XG5cdHV2ID0gdXYgKiBMVVRfU0NBTEUgKyBMVVRfQklBUztcblx0cmV0dXJuIHV2O1xufVxuZmxvYXQgTFRDX0NsaXBwZWRTcGhlcmVGb3JtRmFjdG9yKCBjb25zdCBpbiB2ZWMzIGYgKSB7XG5cdGZsb2F0IGwgPSBsZW5ndGgoIGYgKTtcblx0cmV0dXJuIG1heCggKCBsICogbCArIGYueiApIC8gKCBsICsgMS4wICksIDAuMCApO1xufVxudmVjMyBMVENfRWRnZVZlY3RvckZvcm1GYWN0b3IoIGNvbnN0IGluIHZlYzMgdjEsIGNvbnN0IGluIHZlYzMgdjIgKSB7XG5cdGZsb2F0IHggPSBkb3QoIHYxLCB2MiApO1xuXHRmbG9hdCB5ID0gYWJzKCB4ICk7XG5cdGZsb2F0IGEgPSAwLjg1NDM5ODUgKyAoIDAuNDk2NTE1NSArIDAuMDE0NTIwNiAqIHkgKSAqIHk7XG5cdGZsb2F0IGIgPSAzLjQxNzU5NDAgKyAoIDQuMTYxNjcyNCArIHkgKSAqIHk7XG5cdGZsb2F0IHYgPSBhIC8gYjtcblx0ZmxvYXQgdGhldGFfc2ludGhldGEgPSAoIHggPiAwLjAgKSA/IHYgOiAwLjUgKiBpbnZlcnNlc3FydCggbWF4KCAxLjAgLSB4ICogeCwgMWUtNyApICkgLSB2O1xuXHRyZXR1cm4gY3Jvc3MoIHYxLCB2MiApICogdGhldGFfc2ludGhldGE7XG59XG52ZWMzIExUQ19FdmFsdWF0ZSggY29uc3QgaW4gdmVjMyBOLCBjb25zdCBpbiB2ZWMzIFYsIGNvbnN0IGluIHZlYzMgUCwgY29uc3QgaW4gbWF0MyBtSW52LCBjb25zdCBpbiB2ZWMzIHJlY3RDb29yZHNbIDQgXSApIHtcblx0dmVjMyB2MSA9IHJlY3RDb29yZHNbIDEgXSAtIHJlY3RDb29yZHNbIDAgXTtcblx0dmVjMyB2MiA9IHJlY3RDb29yZHNbIDMgXSAtIHJlY3RDb29yZHNbIDAgXTtcblx0dmVjMyBsaWdodE5vcm1hbCA9IGNyb3NzKCB2MSwgdjIgKTtcblx0aWYoIGRvdCggbGlnaHROb3JtYWwsIFAgLSByZWN0Q29vcmRzWyAwIF0gKSA8IDAuMCApIHJldHVybiB2ZWMzKCAwLjAgKTtcblx0dmVjMyBUMSwgVDI7XG5cdFQxID0gbm9ybWFsaXplKCBWIC0gTiAqIGRvdCggViwgTiApICk7XG5cdFQyID0gLSBjcm9zcyggTiwgVDEgKTtcblx0bWF0MyBtYXQgPSBtSW52ICogdHJhbnNwb3NlTWF0MyggbWF0MyggVDEsIFQyLCBOICkgKTtcblx0dmVjMyBjb29yZHNbIDQgXTtcblx0Y29vcmRzWyAwIF0gPSBtYXQgKiAoIHJlY3RDb29yZHNbIDAgXSAtIFAgKTtcblx0Y29vcmRzWyAxIF0gPSBtYXQgKiAoIHJlY3RDb29yZHNbIDEgXSAtIFAgKTtcblx0Y29vcmRzWyAyIF0gPSBtYXQgKiAoIHJlY3RDb29yZHNbIDIgXSAtIFAgKTtcblx0Y29vcmRzWyAzIF0gPSBtYXQgKiAoIHJlY3RDb29yZHNbIDMgXSAtIFAgKTtcblx0Y29vcmRzWyAwIF0gPSBub3JtYWxpemUoIGNvb3Jkc1sgMCBdICk7XG5cdGNvb3Jkc1sgMSBdID0gbm9ybWFsaXplKCBjb29yZHNbIDEgXSApO1xuXHRjb29yZHNbIDIgXSA9IG5vcm1hbGl6ZSggY29vcmRzWyAyIF0gKTtcblx0Y29vcmRzWyAzIF0gPSBub3JtYWxpemUoIGNvb3Jkc1sgMyBdICk7XG5cdHZlYzMgdmVjdG9yRm9ybUZhY3RvciA9IHZlYzMoIDAuMCApO1xuXHR2ZWN0b3JGb3JtRmFjdG9yICs9IExUQ19FZGdlVmVjdG9yRm9ybUZhY3RvciggY29vcmRzWyAwIF0sIGNvb3Jkc1sgMSBdICk7XG5cdHZlY3RvckZvcm1GYWN0b3IgKz0gTFRDX0VkZ2VWZWN0b3JGb3JtRmFjdG9yKCBjb29yZHNbIDEgXSwgY29vcmRzWyAyIF0gKTtcblx0dmVjdG9yRm9ybUZhY3RvciArPSBMVENfRWRnZVZlY3RvckZvcm1GYWN0b3IoIGNvb3Jkc1sgMiBdLCBjb29yZHNbIDMgXSApO1xuXHR2ZWN0b3JGb3JtRmFjdG9yICs9IExUQ19FZGdlVmVjdG9yRm9ybUZhY3RvciggY29vcmRzWyAzIF0sIGNvb3Jkc1sgMCBdICk7XG5cdGZsb2F0IHJlc3VsdCA9IExUQ19DbGlwcGVkU3BoZXJlRm9ybUZhY3RvciggdmVjdG9yRm9ybUZhY3RvciApO1xuXHRyZXR1cm4gdmVjMyggcmVzdWx0ICk7XG59XG52ZWMzIEJSREZfU3BlY3VsYXJfR0dYX0Vudmlyb25tZW50KCBjb25zdCBpbiB2ZWMzIHZpZXdEaXIsIGNvbnN0IGluIHZlYzMgbm9ybWFsLCBjb25zdCBpbiB2ZWMzIHNwZWN1bGFyQ29sb3IsIGNvbnN0IGluIGZsb2F0IHJvdWdobmVzcyApIHtcblx0ZmxvYXQgZG90TlYgPSBzYXR1cmF0ZSggZG90KCBub3JtYWwsIHZpZXdEaXIgKSApO1xuXHR2ZWMyIGJyZGYgPSBpbnRlZ3JhdGVTcGVjdWxhckJSREYoIGRvdE5WLCByb3VnaG5lc3MgKTtcblx0cmV0dXJuIHNwZWN1bGFyQ29sb3IgKiBicmRmLnggKyBicmRmLnk7XG59XG52b2lkIEJSREZfU3BlY3VsYXJfTXVsdGlzY2F0dGVyaW5nX0Vudmlyb25tZW50KCBjb25zdCBpbiBHZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5LCBjb25zdCBpbiB2ZWMzIHNwZWN1bGFyQ29sb3IsIGNvbnN0IGluIGZsb2F0IHJvdWdobmVzcywgaW5vdXQgdmVjMyBzaW5nbGVTY2F0dGVyLCBpbm91dCB2ZWMzIG11bHRpU2NhdHRlciApIHtcblx0ZmxvYXQgZG90TlYgPSBzYXR1cmF0ZSggZG90KCBnZW9tZXRyeS5ub3JtYWwsIGdlb21ldHJ5LnZpZXdEaXIgKSApO1xuXHR2ZWMzIEYgPSBGX1NjaGxpY2tfUm91Z2huZXNzRGVwZW5kZW50KCBzcGVjdWxhckNvbG9yLCBkb3ROViwgcm91Z2huZXNzICk7XG5cdHZlYzIgYnJkZiA9IGludGVncmF0ZVNwZWN1bGFyQlJERiggZG90TlYsIHJvdWdobmVzcyApO1xuXHR2ZWMzIEZzc0VzcyA9IEYgKiBicmRmLnggKyBicmRmLnk7XG5cdGZsb2F0IEVzcyA9IGJyZGYueCArIGJyZGYueTtcblx0ZmxvYXQgRW1zID0gMS4wIC0gRXNzO1xuXHR2ZWMzIEZhdmcgPSBzcGVjdWxhckNvbG9yICsgKCAxLjAgLSBzcGVjdWxhckNvbG9yICkgKiAwLjA0NzYxOTtcdHZlYzMgRm1zID0gRnNzRXNzICogRmF2ZyAvICggMS4wIC0gRW1zICogRmF2ZyApO1xuXHRzaW5nbGVTY2F0dGVyICs9IEZzc0Vzcztcblx0bXVsdGlTY2F0dGVyICs9IEZtcyAqIEVtcztcbn1cbmZsb2F0IEdfQmxpbm5QaG9uZ19JbXBsaWNpdCggKSB7XG5cdHJldHVybiAwLjI1O1xufVxuZmxvYXQgRF9CbGlublBob25nKCBjb25zdCBpbiBmbG9hdCBzaGluaW5lc3MsIGNvbnN0IGluIGZsb2F0IGRvdE5IICkge1xuXHRyZXR1cm4gUkVDSVBST0NBTF9QSSAqICggc2hpbmluZXNzICogMC41ICsgMS4wICkgKiBwb3coIGRvdE5ILCBzaGluaW5lc3MgKTtcbn1cbnZlYzMgQlJERl9TcGVjdWxhcl9CbGlublBob25nKCBjb25zdCBpbiBJbmNpZGVudExpZ2h0IGluY2lkZW50TGlnaHQsIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnksIGNvbnN0IGluIHZlYzMgc3BlY3VsYXJDb2xvciwgY29uc3QgaW4gZmxvYXQgc2hpbmluZXNzICkge1xuXHR2ZWMzIGhhbGZEaXIgPSBub3JtYWxpemUoIGluY2lkZW50TGlnaHQuZGlyZWN0aW9uICsgZ2VvbWV0cnkudmlld0RpciApO1xuXHRmbG9hdCBkb3ROSCA9IHNhdHVyYXRlKCBkb3QoIGdlb21ldHJ5Lm5vcm1hbCwgaGFsZkRpciApICk7XG5cdGZsb2F0IGRvdExIID0gc2F0dXJhdGUoIGRvdCggaW5jaWRlbnRMaWdodC5kaXJlY3Rpb24sIGhhbGZEaXIgKSApO1xuXHR2ZWMzIEYgPSBGX1NjaGxpY2soIHNwZWN1bGFyQ29sb3IsIHZlYzMoIDEuMCApLCBkb3RMSCApO1xuXHRmbG9hdCBHID0gR19CbGlublBob25nX0ltcGxpY2l0KCApO1xuXHRmbG9hdCBEID0gRF9CbGlublBob25nKCBzaGluaW5lc3MsIGRvdE5IICk7XG5cdHJldHVybiBGICogKCBHICogRCApO1xufVxuZmxvYXQgR0dYUm91Z2huZXNzVG9CbGlubkV4cG9uZW50KCBjb25zdCBpbiBmbG9hdCBnZ3hSb3VnaG5lc3MgKSB7XG5cdHJldHVybiAoIDIuMCAvIHBvdzIoIGdneFJvdWdobmVzcyArIDAuMDAwMSApIC0gMi4wICk7XG59XG5mbG9hdCBCbGlubkV4cG9uZW50VG9HR1hSb3VnaG5lc3MoIGNvbnN0IGluIGZsb2F0IGJsaW5uRXhwb25lbnQgKSB7XG5cdHJldHVybiBzcXJ0KCAyLjAgLyAoIGJsaW5uRXhwb25lbnQgKyAyLjAgKSApO1xufVxuI2lmIGRlZmluZWQoIFVTRV9TSEVFTiApXG5mbG9hdCBEX0NoYXJsaWUoZmxvYXQgcm91Z2huZXNzLCBmbG9hdCBOb0gpIHtcblx0ZmxvYXQgaW52QWxwaGEgPSAxLjAgLyByb3VnaG5lc3M7XG5cdGZsb2F0IGNvczJoID0gTm9IICogTm9IO1xuXHRmbG9hdCBzaW4yaCA9IG1heCgxLjAgLSBjb3MyaCwgMC4wMDc4MTI1KTtcdHJldHVybiAoMi4wICsgaW52QWxwaGEpICogcG93KHNpbjJoLCBpbnZBbHBoYSAqIDAuNSkgLyAoMi4wICogUEkpO1xufVxuZmxvYXQgVl9OZXViZWx0KGZsb2F0IE5vViwgZmxvYXQgTm9MKSB7XG5cdHJldHVybiBzYXR1cmF0ZSgxLjAgLyAoNC4wICogKE5vTCArIE5vViAtIE5vTCAqIE5vVikpKTtcbn1cbnZlYzMgQlJERl9TcGVjdWxhcl9TaGVlbiggY29uc3QgaW4gZmxvYXQgcm91Z2huZXNzLCBjb25zdCBpbiB2ZWMzIEwsIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnksIHZlYzMgc3BlY3VsYXJDb2xvciApIHtcblx0dmVjMyBOID0gZ2VvbWV0cnkubm9ybWFsO1xuXHR2ZWMzIFYgPSBnZW9tZXRyeS52aWV3RGlyO1xuXHR2ZWMzIEggPSBub3JtYWxpemUoIFYgKyBMICk7XG5cdGZsb2F0IGRvdE5IID0gc2F0dXJhdGUoIGRvdCggTiwgSCApICk7XG5cdHJldHVybiBzcGVjdWxhckNvbG9yICogRF9DaGFybGllKCByb3VnaG5lc3MsIGRvdE5IICkgKiBWX05ldWJlbHQoIGRvdChOLCBWKSwgZG90KE4sIEwpICk7XG59XG4jZW5kaWYiLGJ1bXBtYXBfcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9CVU1QTUFQXG5cdHVuaWZvcm0gc2FtcGxlcjJEIGJ1bXBNYXA7XG5cdHVuaWZvcm0gZmxvYXQgYnVtcFNjYWxlO1xuXHR2ZWMyIGRIZHh5X2Z3ZCgpIHtcblx0XHR2ZWMyIGRTVGR4ID0gZEZkeCggdlV2ICk7XG5cdFx0dmVjMiBkU1RkeSA9IGRGZHkoIHZVdiApO1xuXHRcdGZsb2F0IEhsbCA9IGJ1bXBTY2FsZSAqIHRleHR1cmUyRCggYnVtcE1hcCwgdlV2ICkueDtcblx0XHRmbG9hdCBkQnggPSBidW1wU2NhbGUgKiB0ZXh0dXJlMkQoIGJ1bXBNYXAsIHZVdiArIGRTVGR4ICkueCAtIEhsbDtcblx0XHRmbG9hdCBkQnkgPSBidW1wU2NhbGUgKiB0ZXh0dXJlMkQoIGJ1bXBNYXAsIHZVdiArIGRTVGR5ICkueCAtIEhsbDtcblx0XHRyZXR1cm4gdmVjMiggZEJ4LCBkQnkgKTtcblx0fVxuXHR2ZWMzIHBlcnR1cmJOb3JtYWxBcmIoIHZlYzMgc3VyZl9wb3MsIHZlYzMgc3VyZl9ub3JtLCB2ZWMyIGRIZHh5LCBmbG9hdCBmYWNlRGlyZWN0aW9uICkge1xuXHRcdHZlYzMgdlNpZ21hWCA9IHZlYzMoIGRGZHgoIHN1cmZfcG9zLnggKSwgZEZkeCggc3VyZl9wb3MueSApLCBkRmR4KCBzdXJmX3Bvcy56ICkgKTtcblx0XHR2ZWMzIHZTaWdtYVkgPSB2ZWMzKCBkRmR5KCBzdXJmX3Bvcy54ICksIGRGZHkoIHN1cmZfcG9zLnkgKSwgZEZkeSggc3VyZl9wb3MueiApICk7XG5cdFx0dmVjMyB2TiA9IHN1cmZfbm9ybTtcblx0XHR2ZWMzIFIxID0gY3Jvc3MoIHZTaWdtYVksIHZOICk7XG5cdFx0dmVjMyBSMiA9IGNyb3NzKCB2TiwgdlNpZ21hWCApO1xuXHRcdGZsb2F0IGZEZXQgPSBkb3QoIHZTaWdtYVgsIFIxICkgKiBmYWNlRGlyZWN0aW9uO1xuXHRcdHZlYzMgdkdyYWQgPSBzaWduKCBmRGV0ICkgKiAoIGRIZHh5LnggKiBSMSArIGRIZHh5LnkgKiBSMiApO1xuXHRcdHJldHVybiBub3JtYWxpemUoIGFicyggZkRldCApICogc3VyZl9ub3JtIC0gdkdyYWQgKTtcblx0fVxuI2VuZGlmIixjbGlwcGluZ19wbGFuZXNfZnJhZ21lbnQ6IiNpZiBOVU1fQ0xJUFBJTkdfUExBTkVTID4gMFxuXHR2ZWM0IHBsYW5lO1xuXHQjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0XG5cdGZvciAoIGludCBpID0gMDsgaSA8IFVOSU9OX0NMSVBQSU5HX1BMQU5FUzsgaSArKyApIHtcblx0XHRwbGFuZSA9IGNsaXBwaW5nUGxhbmVzWyBpIF07XG5cdFx0aWYgKCBkb3QoIHZDbGlwUG9zaXRpb24sIHBsYW5lLnh5eiApID4gcGxhbmUudyApIGRpc2NhcmQ7XG5cdH1cblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9lbmRcblx0I2lmIFVOSU9OX0NMSVBQSU5HX1BMQU5FUyA8IE5VTV9DTElQUElOR19QTEFORVNcblx0XHRib29sIGNsaXBwZWQgPSB0cnVlO1xuXHRcdCNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnRcblx0XHRmb3IgKCBpbnQgaSA9IFVOSU9OX0NMSVBQSU5HX1BMQU5FUzsgaSA8IE5VTV9DTElQUElOR19QTEFORVM7IGkgKysgKSB7XG5cdFx0XHRwbGFuZSA9IGNsaXBwaW5nUGxhbmVzWyBpIF07XG5cdFx0XHRjbGlwcGVkID0gKCBkb3QoIHZDbGlwUG9zaXRpb24sIHBsYW5lLnh5eiApID4gcGxhbmUudyApICYmIGNsaXBwZWQ7XG5cdFx0fVxuXHRcdCNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kXG5cdFx0aWYgKCBjbGlwcGVkICkgZGlzY2FyZDtcblx0I2VuZGlmXG4jZW5kaWYiLGNsaXBwaW5nX3BsYW5lc19wYXJzX2ZyYWdtZW50OiIjaWYgTlVNX0NMSVBQSU5HX1BMQU5FUyA+IDBcblx0dmFyeWluZyB2ZWMzIHZDbGlwUG9zaXRpb247XG5cdHVuaWZvcm0gdmVjNCBjbGlwcGluZ1BsYW5lc1sgTlVNX0NMSVBQSU5HX1BMQU5FUyBdO1xuI2VuZGlmIixjbGlwcGluZ19wbGFuZXNfcGFyc192ZXJ0ZXg6IiNpZiBOVU1fQ0xJUFBJTkdfUExBTkVTID4gMFxuXHR2YXJ5aW5nIHZlYzMgdkNsaXBQb3NpdGlvbjtcbiNlbmRpZiIsY2xpcHBpbmdfcGxhbmVzX3ZlcnRleDoiI2lmIE5VTV9DTElQUElOR19QTEFORVMgPiAwXG5cdHZDbGlwUG9zaXRpb24gPSAtIG12UG9zaXRpb24ueHl6O1xuI2VuZGlmIixjb2xvcl9mcmFnbWVudDoiI2lmIGRlZmluZWQoIFVTRV9DT0xPUl9BTFBIQSApXG5cdGRpZmZ1c2VDb2xvciAqPSB2Q29sb3I7XG4jZWxpZiBkZWZpbmVkKCBVU0VfQ09MT1IgKVxuXHRkaWZmdXNlQ29sb3IucmdiICo9IHZDb2xvcjtcbiNlbmRpZiIsY29sb3JfcGFyc19mcmFnbWVudDoiI2lmIGRlZmluZWQoIFVTRV9DT0xPUl9BTFBIQSApXG5cdHZhcnlpbmcgdmVjNCB2Q29sb3I7XG4jZWxpZiBkZWZpbmVkKCBVU0VfQ09MT1IgKVxuXHR2YXJ5aW5nIHZlYzMgdkNvbG9yO1xuI2VuZGlmIixjb2xvcl9wYXJzX3ZlcnRleDoiI2lmIGRlZmluZWQoIFVTRV9DT0xPUl9BTFBIQSApXG5cdHZhcnlpbmcgdmVjNCB2Q29sb3I7XG4jZWxpZiBkZWZpbmVkKCBVU0VfQ09MT1IgKSB8fCBkZWZpbmVkKCBVU0VfSU5TVEFOQ0lOR19DT0xPUiApXG5cdHZhcnlpbmcgdmVjMyB2Q29sb3I7XG4jZW5kaWYiLGNvbG9yX3ZlcnRleDoiI2lmIGRlZmluZWQoIFVTRV9DT0xPUl9BTFBIQSApXG5cdHZDb2xvciA9IHZlYzQoIDEuMCApO1xuI2VsaWYgZGVmaW5lZCggVVNFX0NPTE9SICkgfHwgZGVmaW5lZCggVVNFX0lOU1RBTkNJTkdfQ09MT1IgKVxuXHR2Q29sb3IgPSB2ZWMzKCAxLjAgKTtcbiNlbmRpZlxuI2lmZGVmIFVTRV9DT0xPUlxuXHR2Q29sb3IgKj0gY29sb3I7XG4jZW5kaWZcbiNpZmRlZiBVU0VfSU5TVEFOQ0lOR19DT0xPUlxuXHR2Q29sb3IueHl6ICo9IGluc3RhbmNlQ29sb3IueHl6O1xuI2VuZGlmIixjb21tb246IiNkZWZpbmUgUEkgMy4xNDE1OTI2NTM1ODk3OTNcbiNkZWZpbmUgUEkyIDYuMjgzMTg1MzA3MTc5NTg2XG4jZGVmaW5lIFBJX0hBTEYgMS41NzA3OTYzMjY3OTQ4OTY2XG4jZGVmaW5lIFJFQ0lQUk9DQUxfUEkgMC4zMTgzMDk4ODYxODM3OTA3XG4jZGVmaW5lIFJFQ0lQUk9DQUxfUEkyIDAuMTU5MTU0OTQzMDkxODk1MzVcbiNkZWZpbmUgRVBTSUxPTiAxZS02XG4jaWZuZGVmIHNhdHVyYXRlXG4jZGVmaW5lIHNhdHVyYXRlKGEpIGNsYW1wKCBhLCAwLjAsIDEuMCApXG4jZW5kaWZcbiNkZWZpbmUgd2hpdGVDb21wbGVtZW50KGEpICggMS4wIC0gc2F0dXJhdGUoIGEgKSApXG5mbG9hdCBwb3cyKCBjb25zdCBpbiBmbG9hdCB4ICkgeyByZXR1cm4geCp4OyB9XG5mbG9hdCBwb3czKCBjb25zdCBpbiBmbG9hdCB4ICkgeyByZXR1cm4geCp4Kng7IH1cbmZsb2F0IHBvdzQoIGNvbnN0IGluIGZsb2F0IHggKSB7IGZsb2F0IHgyID0geCp4OyByZXR1cm4geDIqeDI7IH1cbmZsb2F0IGF2ZXJhZ2UoIGNvbnN0IGluIHZlYzMgY29sb3IgKSB7IHJldHVybiBkb3QoIGNvbG9yLCB2ZWMzKCAwLjMzMzMgKSApOyB9XG5oaWdocCBmbG9hdCByYW5kKCBjb25zdCBpbiB2ZWMyIHV2ICkge1xuXHRjb25zdCBoaWdocCBmbG9hdCBhID0gMTIuOTg5OCwgYiA9IDc4LjIzMywgYyA9IDQzNzU4LjU0NTM7XG5cdGhpZ2hwIGZsb2F0IGR0ID0gZG90KCB1di54eSwgdmVjMiggYSxiICkgKSwgc24gPSBtb2QoIGR0LCBQSSApO1xuXHRyZXR1cm4gZnJhY3Qoc2luKHNuKSAqIGMpO1xufVxuI2lmZGVmIEhJR0hfUFJFQ0lTSU9OXG5cdGZsb2F0IHByZWNpc2lvblNhZmVMZW5ndGgoIHZlYzMgdiApIHsgcmV0dXJuIGxlbmd0aCggdiApOyB9XG4jZWxzZVxuXHRmbG9hdCBtYXgzKCB2ZWMzIHYgKSB7IHJldHVybiBtYXgoIG1heCggdi54LCB2LnkgKSwgdi56ICk7IH1cblx0ZmxvYXQgcHJlY2lzaW9uU2FmZUxlbmd0aCggdmVjMyB2ICkge1xuXHRcdGZsb2F0IG1heENvbXBvbmVudCA9IG1heDMoIGFicyggdiApICk7XG5cdFx0cmV0dXJuIGxlbmd0aCggdiAvIG1heENvbXBvbmVudCApICogbWF4Q29tcG9uZW50O1xuXHR9XG4jZW5kaWZcbnN0cnVjdCBJbmNpZGVudExpZ2h0IHtcblx0dmVjMyBjb2xvcjtcblx0dmVjMyBkaXJlY3Rpb247XG5cdGJvb2wgdmlzaWJsZTtcbn07XG5zdHJ1Y3QgUmVmbGVjdGVkTGlnaHQge1xuXHR2ZWMzIGRpcmVjdERpZmZ1c2U7XG5cdHZlYzMgZGlyZWN0U3BlY3VsYXI7XG5cdHZlYzMgaW5kaXJlY3REaWZmdXNlO1xuXHR2ZWMzIGluZGlyZWN0U3BlY3VsYXI7XG59O1xuc3RydWN0IEdlb21ldHJpY0NvbnRleHQge1xuXHR2ZWMzIHBvc2l0aW9uO1xuXHR2ZWMzIG5vcm1hbDtcblx0dmVjMyB2aWV3RGlyO1xuI2lmZGVmIENMRUFSQ09BVFxuXHR2ZWMzIGNsZWFyY29hdE5vcm1hbDtcbiNlbmRpZlxufTtcbnZlYzMgdHJhbnNmb3JtRGlyZWN0aW9uKCBpbiB2ZWMzIGRpciwgaW4gbWF0NCBtYXRyaXggKSB7XG5cdHJldHVybiBub3JtYWxpemUoICggbWF0cml4ICogdmVjNCggZGlyLCAwLjAgKSApLnh5eiApO1xufVxudmVjMyBpbnZlcnNlVHJhbnNmb3JtRGlyZWN0aW9uKCBpbiB2ZWMzIGRpciwgaW4gbWF0NCBtYXRyaXggKSB7XG5cdHJldHVybiBub3JtYWxpemUoICggdmVjNCggZGlyLCAwLjAgKSAqIG1hdHJpeCApLnh5eiApO1xufVxudmVjMyBwcm9qZWN0T25QbGFuZShpbiB2ZWMzIHBvaW50LCBpbiB2ZWMzIHBvaW50T25QbGFuZSwgaW4gdmVjMyBwbGFuZU5vcm1hbCApIHtcblx0ZmxvYXQgZGlzdGFuY2UgPSBkb3QoIHBsYW5lTm9ybWFsLCBwb2ludCAtIHBvaW50T25QbGFuZSApO1xuXHRyZXR1cm4gLSBkaXN0YW5jZSAqIHBsYW5lTm9ybWFsICsgcG9pbnQ7XG59XG5mbG9hdCBzaWRlT2ZQbGFuZSggaW4gdmVjMyBwb2ludCwgaW4gdmVjMyBwb2ludE9uUGxhbmUsIGluIHZlYzMgcGxhbmVOb3JtYWwgKSB7XG5cdHJldHVybiBzaWduKCBkb3QoIHBvaW50IC0gcG9pbnRPblBsYW5lLCBwbGFuZU5vcm1hbCApICk7XG59XG52ZWMzIGxpbmVQbGFuZUludGVyc2VjdCggaW4gdmVjMyBwb2ludE9uTGluZSwgaW4gdmVjMyBsaW5lRGlyZWN0aW9uLCBpbiB2ZWMzIHBvaW50T25QbGFuZSwgaW4gdmVjMyBwbGFuZU5vcm1hbCApIHtcblx0cmV0dXJuIGxpbmVEaXJlY3Rpb24gKiAoIGRvdCggcGxhbmVOb3JtYWwsIHBvaW50T25QbGFuZSAtIHBvaW50T25MaW5lICkgLyBkb3QoIHBsYW5lTm9ybWFsLCBsaW5lRGlyZWN0aW9uICkgKSArIHBvaW50T25MaW5lO1xufVxubWF0MyB0cmFuc3Bvc2VNYXQzKCBjb25zdCBpbiBtYXQzIG0gKSB7XG5cdG1hdDMgdG1wO1xuXHR0bXBbIDAgXSA9IHZlYzMoIG1bIDAgXS54LCBtWyAxIF0ueCwgbVsgMiBdLnggKTtcblx0dG1wWyAxIF0gPSB2ZWMzKCBtWyAwIF0ueSwgbVsgMSBdLnksIG1bIDIgXS55ICk7XG5cdHRtcFsgMiBdID0gdmVjMyggbVsgMCBdLnosIG1bIDEgXS56LCBtWyAyIF0ueiApO1xuXHRyZXR1cm4gdG1wO1xufVxuZmxvYXQgbGluZWFyVG9SZWxhdGl2ZUx1bWluYW5jZSggY29uc3QgaW4gdmVjMyBjb2xvciApIHtcblx0dmVjMyB3ZWlnaHRzID0gdmVjMyggMC4yMTI2LCAwLjcxNTIsIDAuMDcyMiApO1xuXHRyZXR1cm4gZG90KCB3ZWlnaHRzLCBjb2xvci5yZ2IgKTtcbn1cbmJvb2wgaXNQZXJzcGVjdGl2ZU1hdHJpeCggbWF0NCBtICkge1xuXHRyZXR1cm4gbVsgMiBdWyAzIF0gPT0gLSAxLjA7XG59XG52ZWMyIGVxdWlyZWN0VXYoIGluIHZlYzMgZGlyICkge1xuXHRmbG9hdCB1ID0gYXRhbiggZGlyLnosIGRpci54ICkgKiBSRUNJUFJPQ0FMX1BJMiArIDAuNTtcblx0ZmxvYXQgdiA9IGFzaW4oIGNsYW1wKCBkaXIueSwgLSAxLjAsIDEuMCApICkgKiBSRUNJUFJPQ0FMX1BJICsgMC41O1xuXHRyZXR1cm4gdmVjMiggdSwgdiApO1xufSIsY3ViZV91dl9yZWZsZWN0aW9uX2ZyYWdtZW50OiIjaWZkZWYgRU5WTUFQX1RZUEVfQ1VCRV9VVlxuXHQjZGVmaW5lIGN1YmVVVl9tYXhNaXBMZXZlbCA4LjBcblx0I2RlZmluZSBjdWJlVVZfbWluTWlwTGV2ZWwgNC4wXG5cdCNkZWZpbmUgY3ViZVVWX21heFRpbGVTaXplIDI1Ni4wXG5cdCNkZWZpbmUgY3ViZVVWX21pblRpbGVTaXplIDE2LjBcblx0ZmxvYXQgZ2V0RmFjZSggdmVjMyBkaXJlY3Rpb24gKSB7XG5cdFx0dmVjMyBhYnNEaXJlY3Rpb24gPSBhYnMoIGRpcmVjdGlvbiApO1xuXHRcdGZsb2F0IGZhY2UgPSAtIDEuMDtcblx0XHRpZiAoIGFic0RpcmVjdGlvbi54ID4gYWJzRGlyZWN0aW9uLnogKSB7XG5cdFx0XHRpZiAoIGFic0RpcmVjdGlvbi54ID4gYWJzRGlyZWN0aW9uLnkgKVxuXHRcdFx0XHRmYWNlID0gZGlyZWN0aW9uLnggPiAwLjAgPyAwLjAgOiAzLjA7XG5cdFx0XHRlbHNlXG5cdFx0XHRcdGZhY2UgPSBkaXJlY3Rpb24ueSA+IDAuMCA/IDEuMCA6IDQuMDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0aWYgKCBhYnNEaXJlY3Rpb24ueiA+IGFic0RpcmVjdGlvbi55IClcblx0XHRcdFx0ZmFjZSA9IGRpcmVjdGlvbi56ID4gMC4wID8gMi4wIDogNS4wO1xuXHRcdFx0ZWxzZVxuXHRcdFx0XHRmYWNlID0gZGlyZWN0aW9uLnkgPiAwLjAgPyAxLjAgOiA0LjA7XG5cdFx0fVxuXHRcdHJldHVybiBmYWNlO1xuXHR9XG5cdHZlYzIgZ2V0VVYoIHZlYzMgZGlyZWN0aW9uLCBmbG9hdCBmYWNlICkge1xuXHRcdHZlYzIgdXY7XG5cdFx0aWYgKCBmYWNlID09IDAuMCApIHtcblx0XHRcdHV2ID0gdmVjMiggZGlyZWN0aW9uLnosIGRpcmVjdGlvbi55ICkgLyBhYnMoIGRpcmVjdGlvbi54ICk7XG5cdFx0fSBlbHNlIGlmICggZmFjZSA9PSAxLjAgKSB7XG5cdFx0XHR1diA9IHZlYzIoIC0gZGlyZWN0aW9uLngsIC0gZGlyZWN0aW9uLnogKSAvIGFicyggZGlyZWN0aW9uLnkgKTtcblx0XHR9IGVsc2UgaWYgKCBmYWNlID09IDIuMCApIHtcblx0XHRcdHV2ID0gdmVjMiggLSBkaXJlY3Rpb24ueCwgZGlyZWN0aW9uLnkgKSAvIGFicyggZGlyZWN0aW9uLnogKTtcblx0XHR9IGVsc2UgaWYgKCBmYWNlID09IDMuMCApIHtcblx0XHRcdHV2ID0gdmVjMiggLSBkaXJlY3Rpb24ueiwgZGlyZWN0aW9uLnkgKSAvIGFicyggZGlyZWN0aW9uLnggKTtcblx0XHR9IGVsc2UgaWYgKCBmYWNlID09IDQuMCApIHtcblx0XHRcdHV2ID0gdmVjMiggLSBkaXJlY3Rpb24ueCwgZGlyZWN0aW9uLnogKSAvIGFicyggZGlyZWN0aW9uLnkgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dXYgPSB2ZWMyKCBkaXJlY3Rpb24ueCwgZGlyZWN0aW9uLnkgKSAvIGFicyggZGlyZWN0aW9uLnogKTtcblx0XHR9XG5cdFx0cmV0dXJuIDAuNSAqICggdXYgKyAxLjAgKTtcblx0fVxuXHR2ZWMzIGJpbGluZWFyQ3ViZVVWKCBzYW1wbGVyMkQgZW52TWFwLCB2ZWMzIGRpcmVjdGlvbiwgZmxvYXQgbWlwSW50ICkge1xuXHRcdGZsb2F0IGZhY2UgPSBnZXRGYWNlKCBkaXJlY3Rpb24gKTtcblx0XHRmbG9hdCBmaWx0ZXJJbnQgPSBtYXgoIGN1YmVVVl9taW5NaXBMZXZlbCAtIG1pcEludCwgMC4wICk7XG5cdFx0bWlwSW50ID0gbWF4KCBtaXBJbnQsIGN1YmVVVl9taW5NaXBMZXZlbCApO1xuXHRcdGZsb2F0IGZhY2VTaXplID0gZXhwMiggbWlwSW50ICk7XG5cdFx0ZmxvYXQgdGV4ZWxTaXplID0gMS4wIC8gKCAzLjAgKiBjdWJlVVZfbWF4VGlsZVNpemUgKTtcblx0XHR2ZWMyIHV2ID0gZ2V0VVYoIGRpcmVjdGlvbiwgZmFjZSApICogKCBmYWNlU2l6ZSAtIDEuMCApO1xuXHRcdHZlYzIgZiA9IGZyYWN0KCB1diApO1xuXHRcdHV2ICs9IDAuNSAtIGY7XG5cdFx0aWYgKCBmYWNlID4gMi4wICkge1xuXHRcdFx0dXYueSArPSBmYWNlU2l6ZTtcblx0XHRcdGZhY2UgLT0gMy4wO1xuXHRcdH1cblx0XHR1di54ICs9IGZhY2UgKiBmYWNlU2l6ZTtcblx0XHRpZiAoIG1pcEludCA8IGN1YmVVVl9tYXhNaXBMZXZlbCApIHtcblx0XHRcdHV2LnkgKz0gMi4wICogY3ViZVVWX21heFRpbGVTaXplO1xuXHRcdH1cblx0XHR1di55ICs9IGZpbHRlckludCAqIDIuMCAqIGN1YmVVVl9taW5UaWxlU2l6ZTtcblx0XHR1di54ICs9IDMuMCAqIG1heCggMC4wLCBjdWJlVVZfbWF4VGlsZVNpemUgLSAyLjAgKiBmYWNlU2l6ZSApO1xuXHRcdHV2ICo9IHRleGVsU2l6ZTtcblx0XHR2ZWMzIHRsID0gZW52TWFwVGV4ZWxUb0xpbmVhciggdGV4dHVyZTJEKCBlbnZNYXAsIHV2ICkgKS5yZ2I7XG5cdFx0dXYueCArPSB0ZXhlbFNpemU7XG5cdFx0dmVjMyB0ciA9IGVudk1hcFRleGVsVG9MaW5lYXIoIHRleHR1cmUyRCggZW52TWFwLCB1diApICkucmdiO1xuXHRcdHV2LnkgKz0gdGV4ZWxTaXplO1xuXHRcdHZlYzMgYnIgPSBlbnZNYXBUZXhlbFRvTGluZWFyKCB0ZXh0dXJlMkQoIGVudk1hcCwgdXYgKSApLnJnYjtcblx0XHR1di54IC09IHRleGVsU2l6ZTtcblx0XHR2ZWMzIGJsID0gZW52TWFwVGV4ZWxUb0xpbmVhciggdGV4dHVyZTJEKCBlbnZNYXAsIHV2ICkgKS5yZ2I7XG5cdFx0dmVjMyB0bSA9IG1peCggdGwsIHRyLCBmLnggKTtcblx0XHR2ZWMzIGJtID0gbWl4KCBibCwgYnIsIGYueCApO1xuXHRcdHJldHVybiBtaXgoIHRtLCBibSwgZi55ICk7XG5cdH1cblx0I2RlZmluZSByMCAxLjBcblx0I2RlZmluZSB2MCAwLjMzOVxuXHQjZGVmaW5lIG0wIC0gMi4wXG5cdCNkZWZpbmUgcjEgMC44XG5cdCNkZWZpbmUgdjEgMC4yNzZcblx0I2RlZmluZSBtMSAtIDEuMFxuXHQjZGVmaW5lIHI0IDAuNFxuXHQjZGVmaW5lIHY0IDAuMDQ2XG5cdCNkZWZpbmUgbTQgMi4wXG5cdCNkZWZpbmUgcjUgMC4zMDVcblx0I2RlZmluZSB2NSAwLjAxNlxuXHQjZGVmaW5lIG01IDMuMFxuXHQjZGVmaW5lIHI2IDAuMjFcblx0I2RlZmluZSB2NiAwLjAwMzhcblx0I2RlZmluZSBtNiA0LjBcblx0ZmxvYXQgcm91Z2huZXNzVG9NaXAoIGZsb2F0IHJvdWdobmVzcyApIHtcblx0XHRmbG9hdCBtaXAgPSAwLjA7XG5cdFx0aWYgKCByb3VnaG5lc3MgPj0gcjEgKSB7XG5cdFx0XHRtaXAgPSAoIHIwIC0gcm91Z2huZXNzICkgKiAoIG0xIC0gbTAgKSAvICggcjAgLSByMSApICsgbTA7XG5cdFx0fSBlbHNlIGlmICggcm91Z2huZXNzID49IHI0ICkge1xuXHRcdFx0bWlwID0gKCByMSAtIHJvdWdobmVzcyApICogKCBtNCAtIG0xICkgLyAoIHIxIC0gcjQgKSArIG0xO1xuXHRcdH0gZWxzZSBpZiAoIHJvdWdobmVzcyA+PSByNSApIHtcblx0XHRcdG1pcCA9ICggcjQgLSByb3VnaG5lc3MgKSAqICggbTUgLSBtNCApIC8gKCByNCAtIHI1ICkgKyBtNDtcblx0XHR9IGVsc2UgaWYgKCByb3VnaG5lc3MgPj0gcjYgKSB7XG5cdFx0XHRtaXAgPSAoIHI1IC0gcm91Z2huZXNzICkgKiAoIG02IC0gbTUgKSAvICggcjUgLSByNiApICsgbTU7XG5cdFx0fSBlbHNlIHtcblx0XHRcdG1pcCA9IC0gMi4wICogbG9nMiggMS4xNiAqIHJvdWdobmVzcyApO1x0XHR9XG5cdFx0cmV0dXJuIG1pcDtcblx0fVxuXHR2ZWM0IHRleHR1cmVDdWJlVVYoIHNhbXBsZXIyRCBlbnZNYXAsIHZlYzMgc2FtcGxlRGlyLCBmbG9hdCByb3VnaG5lc3MgKSB7XG5cdFx0ZmxvYXQgbWlwID0gY2xhbXAoIHJvdWdobmVzc1RvTWlwKCByb3VnaG5lc3MgKSwgbTAsIGN1YmVVVl9tYXhNaXBMZXZlbCApO1xuXHRcdGZsb2F0IG1pcEYgPSBmcmFjdCggbWlwICk7XG5cdFx0ZmxvYXQgbWlwSW50ID0gZmxvb3IoIG1pcCApO1xuXHRcdHZlYzMgY29sb3IwID0gYmlsaW5lYXJDdWJlVVYoIGVudk1hcCwgc2FtcGxlRGlyLCBtaXBJbnQgKTtcblx0XHRpZiAoIG1pcEYgPT0gMC4wICkge1xuXHRcdFx0cmV0dXJuIHZlYzQoIGNvbG9yMCwgMS4wICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHZlYzMgY29sb3IxID0gYmlsaW5lYXJDdWJlVVYoIGVudk1hcCwgc2FtcGxlRGlyLCBtaXBJbnQgKyAxLjAgKTtcblx0XHRcdHJldHVybiB2ZWM0KCBtaXgoIGNvbG9yMCwgY29sb3IxLCBtaXBGICksIDEuMCApO1xuXHRcdH1cblx0fVxuI2VuZGlmIixkZWZhdWx0bm9ybWFsX3ZlcnRleDoidmVjMyB0cmFuc2Zvcm1lZE5vcm1hbCA9IG9iamVjdE5vcm1hbDtcbiNpZmRlZiBVU0VfSU5TVEFOQ0lOR1xuXHRtYXQzIG0gPSBtYXQzKCBpbnN0YW5jZU1hdHJpeCApO1xuXHR0cmFuc2Zvcm1lZE5vcm1hbCAvPSB2ZWMzKCBkb3QoIG1bIDAgXSwgbVsgMCBdICksIGRvdCggbVsgMSBdLCBtWyAxIF0gKSwgZG90KCBtWyAyIF0sIG1bIDIgXSApICk7XG5cdHRyYW5zZm9ybWVkTm9ybWFsID0gbSAqIHRyYW5zZm9ybWVkTm9ybWFsO1xuI2VuZGlmXG50cmFuc2Zvcm1lZE5vcm1hbCA9IG5vcm1hbE1hdHJpeCAqIHRyYW5zZm9ybWVkTm9ybWFsO1xuI2lmZGVmIEZMSVBfU0lERURcblx0dHJhbnNmb3JtZWROb3JtYWwgPSAtIHRyYW5zZm9ybWVkTm9ybWFsO1xuI2VuZGlmXG4jaWZkZWYgVVNFX1RBTkdFTlRcblx0dmVjMyB0cmFuc2Zvcm1lZFRhbmdlbnQgPSAoIG1vZGVsVmlld01hdHJpeCAqIHZlYzQoIG9iamVjdFRhbmdlbnQsIDAuMCApICkueHl6O1xuXHQjaWZkZWYgRkxJUF9TSURFRFxuXHRcdHRyYW5zZm9ybWVkVGFuZ2VudCA9IC0gdHJhbnNmb3JtZWRUYW5nZW50O1xuXHQjZW5kaWZcbiNlbmRpZiIsZGlzcGxhY2VtZW50bWFwX3BhcnNfdmVydGV4OiIjaWZkZWYgVVNFX0RJU1BMQUNFTUVOVE1BUFxuXHR1bmlmb3JtIHNhbXBsZXIyRCBkaXNwbGFjZW1lbnRNYXA7XG5cdHVuaWZvcm0gZmxvYXQgZGlzcGxhY2VtZW50U2NhbGU7XG5cdHVuaWZvcm0gZmxvYXQgZGlzcGxhY2VtZW50QmlhcztcbiNlbmRpZiIsZGlzcGxhY2VtZW50bWFwX3ZlcnRleDoiI2lmZGVmIFVTRV9ESVNQTEFDRU1FTlRNQVBcblx0dHJhbnNmb3JtZWQgKz0gbm9ybWFsaXplKCBvYmplY3ROb3JtYWwgKSAqICggdGV4dHVyZTJEKCBkaXNwbGFjZW1lbnRNYXAsIHZVdiApLnggKiBkaXNwbGFjZW1lbnRTY2FsZSArIGRpc3BsYWNlbWVudEJpYXMgKTtcbiNlbmRpZiIsZW1pc3NpdmVtYXBfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfRU1JU1NJVkVNQVBcblx0dmVjNCBlbWlzc2l2ZUNvbG9yID0gdGV4dHVyZTJEKCBlbWlzc2l2ZU1hcCwgdlV2ICk7XG5cdGVtaXNzaXZlQ29sb3IucmdiID0gZW1pc3NpdmVNYXBUZXhlbFRvTGluZWFyKCBlbWlzc2l2ZUNvbG9yICkucmdiO1xuXHR0b3RhbEVtaXNzaXZlUmFkaWFuY2UgKj0gZW1pc3NpdmVDb2xvci5yZ2I7XG4jZW5kaWYiLGVtaXNzaXZlbWFwX3BhcnNfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfRU1JU1NJVkVNQVBcblx0dW5pZm9ybSBzYW1wbGVyMkQgZW1pc3NpdmVNYXA7XG4jZW5kaWYiLGVuY29kaW5nc19mcmFnbWVudDoiZ2xfRnJhZ0NvbG9yID0gbGluZWFyVG9PdXRwdXRUZXhlbCggZ2xfRnJhZ0NvbG9yICk7IixlbmNvZGluZ3NfcGFyc19mcmFnbWVudDoiXG52ZWM0IExpbmVhclRvTGluZWFyKCBpbiB2ZWM0IHZhbHVlICkge1xuXHRyZXR1cm4gdmFsdWU7XG59XG52ZWM0IEdhbW1hVG9MaW5lYXIoIGluIHZlYzQgdmFsdWUsIGluIGZsb2F0IGdhbW1hRmFjdG9yICkge1xuXHRyZXR1cm4gdmVjNCggcG93KCB2YWx1ZS5yZ2IsIHZlYzMoIGdhbW1hRmFjdG9yICkgKSwgdmFsdWUuYSApO1xufVxudmVjNCBMaW5lYXJUb0dhbW1hKCBpbiB2ZWM0IHZhbHVlLCBpbiBmbG9hdCBnYW1tYUZhY3RvciApIHtcblx0cmV0dXJuIHZlYzQoIHBvdyggdmFsdWUucmdiLCB2ZWMzKCAxLjAgLyBnYW1tYUZhY3RvciApICksIHZhbHVlLmEgKTtcbn1cbnZlYzQgc1JHQlRvTGluZWFyKCBpbiB2ZWM0IHZhbHVlICkge1xuXHRyZXR1cm4gdmVjNCggbWl4KCBwb3coIHZhbHVlLnJnYiAqIDAuOTQ3ODY3Mjk4NiArIHZlYzMoIDAuMDUyMTMyNzAxNCApLCB2ZWMzKCAyLjQgKSApLCB2YWx1ZS5yZ2IgKiAwLjA3NzM5OTM4MDgsIHZlYzMoIGxlc3NUaGFuRXF1YWwoIHZhbHVlLnJnYiwgdmVjMyggMC4wNDA0NSApICkgKSApLCB2YWx1ZS5hICk7XG59XG52ZWM0IExpbmVhclRvc1JHQiggaW4gdmVjNCB2YWx1ZSApIHtcblx0cmV0dXJuIHZlYzQoIG1peCggcG93KCB2YWx1ZS5yZ2IsIHZlYzMoIDAuNDE2NjYgKSApICogMS4wNTUgLSB2ZWMzKCAwLjA1NSApLCB2YWx1ZS5yZ2IgKiAxMi45MiwgdmVjMyggbGVzc1RoYW5FcXVhbCggdmFsdWUucmdiLCB2ZWMzKCAwLjAwMzEzMDggKSApICkgKSwgdmFsdWUuYSApO1xufVxudmVjNCBSR0JFVG9MaW5lYXIoIGluIHZlYzQgdmFsdWUgKSB7XG5cdHJldHVybiB2ZWM0KCB2YWx1ZS5yZ2IgKiBleHAyKCB2YWx1ZS5hICogMjU1LjAgLSAxMjguMCApLCAxLjAgKTtcbn1cbnZlYzQgTGluZWFyVG9SR0JFKCBpbiB2ZWM0IHZhbHVlICkge1xuXHRmbG9hdCBtYXhDb21wb25lbnQgPSBtYXgoIG1heCggdmFsdWUuciwgdmFsdWUuZyApLCB2YWx1ZS5iICk7XG5cdGZsb2F0IGZFeHAgPSBjbGFtcCggY2VpbCggbG9nMiggbWF4Q29tcG9uZW50ICkgKSwgLTEyOC4wLCAxMjcuMCApO1xuXHRyZXR1cm4gdmVjNCggdmFsdWUucmdiIC8gZXhwMiggZkV4cCApLCAoIGZFeHAgKyAxMjguMCApIC8gMjU1LjAgKTtcbn1cbnZlYzQgUkdCTVRvTGluZWFyKCBpbiB2ZWM0IHZhbHVlLCBpbiBmbG9hdCBtYXhSYW5nZSApIHtcblx0cmV0dXJuIHZlYzQoIHZhbHVlLnJnYiAqIHZhbHVlLmEgKiBtYXhSYW5nZSwgMS4wICk7XG59XG52ZWM0IExpbmVhclRvUkdCTSggaW4gdmVjNCB2YWx1ZSwgaW4gZmxvYXQgbWF4UmFuZ2UgKSB7XG5cdGZsb2F0IG1heFJHQiA9IG1heCggdmFsdWUuciwgbWF4KCB2YWx1ZS5nLCB2YWx1ZS5iICkgKTtcblx0ZmxvYXQgTSA9IGNsYW1wKCBtYXhSR0IgLyBtYXhSYW5nZSwgMC4wLCAxLjAgKTtcblx0TSA9IGNlaWwoIE0gKiAyNTUuMCApIC8gMjU1LjA7XG5cdHJldHVybiB2ZWM0KCB2YWx1ZS5yZ2IgLyAoIE0gKiBtYXhSYW5nZSApLCBNICk7XG59XG52ZWM0IFJHQkRUb0xpbmVhciggaW4gdmVjNCB2YWx1ZSwgaW4gZmxvYXQgbWF4UmFuZ2UgKSB7XG5cdHJldHVybiB2ZWM0KCB2YWx1ZS5yZ2IgKiAoICggbWF4UmFuZ2UgLyAyNTUuMCApIC8gdmFsdWUuYSApLCAxLjAgKTtcbn1cbnZlYzQgTGluZWFyVG9SR0JEKCBpbiB2ZWM0IHZhbHVlLCBpbiBmbG9hdCBtYXhSYW5nZSApIHtcblx0ZmxvYXQgbWF4UkdCID0gbWF4KCB2YWx1ZS5yLCBtYXgoIHZhbHVlLmcsIHZhbHVlLmIgKSApO1xuXHRmbG9hdCBEID0gbWF4KCBtYXhSYW5nZSAvIG1heFJHQiwgMS4wICk7XG5cdEQgPSBjbGFtcCggZmxvb3IoIEQgKSAvIDI1NS4wLCAwLjAsIDEuMCApO1xuXHRyZXR1cm4gdmVjNCggdmFsdWUucmdiICogKCBEICogKCAyNTUuMCAvIG1heFJhbmdlICkgKSwgRCApO1xufVxuY29uc3QgbWF0MyBjTG9nTHV2TSA9IG1hdDMoIDAuMjIwOSwgMC4zMzkwLCAwLjQxODQsIDAuMTEzOCwgMC42NzgwLCAwLjczMTksIDAuMDEwMiwgMC4xMTMwLCAwLjI5NjkgKTtcbnZlYzQgTGluZWFyVG9Mb2dMdXYoIGluIHZlYzQgdmFsdWUgKSB7XG5cdHZlYzMgWHBfWV9YWVpwID0gY0xvZ0x1dk0gKiB2YWx1ZS5yZ2I7XG5cdFhwX1lfWFlacCA9IG1heCggWHBfWV9YWVpwLCB2ZWMzKCAxZS02LCAxZS02LCAxZS02ICkgKTtcblx0dmVjNCB2UmVzdWx0O1xuXHR2UmVzdWx0Lnh5ID0gWHBfWV9YWVpwLnh5IC8gWHBfWV9YWVpwLno7XG5cdGZsb2F0IExlID0gMi4wICogbG9nMihYcF9ZX1hZWnAueSkgKyAxMjcuMDtcblx0dlJlc3VsdC53ID0gZnJhY3QoIExlICk7XG5cdHZSZXN1bHQueiA9ICggTGUgLSAoIGZsb29yKCB2UmVzdWx0LncgKiAyNTUuMCApICkgLyAyNTUuMCApIC8gMjU1LjA7XG5cdHJldHVybiB2UmVzdWx0O1xufVxuY29uc3QgbWF0MyBjTG9nTHV2SW52ZXJzZU0gPSBtYXQzKCA2LjAwMTQsIC0yLjcwMDgsIC0xLjc5OTYsIC0xLjMzMjAsIDMuMTAyOSwgLTUuNzcyMSwgMC4zMDA4LCAtMS4wODgyLCA1LjYyNjggKTtcbnZlYzQgTG9nTHV2VG9MaW5lYXIoIGluIHZlYzQgdmFsdWUgKSB7XG5cdGZsb2F0IExlID0gdmFsdWUueiAqIDI1NS4wICsgdmFsdWUudztcblx0dmVjMyBYcF9ZX1hZWnA7XG5cdFhwX1lfWFlacC55ID0gZXhwMiggKCBMZSAtIDEyNy4wICkgLyAyLjAgKTtcblx0WHBfWV9YWVpwLnogPSBYcF9ZX1hZWnAueSAvIHZhbHVlLnk7XG5cdFhwX1lfWFlacC54ID0gdmFsdWUueCAqIFhwX1lfWFlacC56O1xuXHR2ZWMzIHZSR0IgPSBjTG9nTHV2SW52ZXJzZU0gKiBYcF9ZX1hZWnAucmdiO1xuXHRyZXR1cm4gdmVjNCggbWF4KCB2UkdCLCAwLjAgKSwgMS4wICk7XG59IixlbnZtYXBfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfRU5WTUFQXG5cdCNpZmRlZiBFTlZfV09STERQT1Ncblx0XHR2ZWMzIGNhbWVyYVRvRnJhZztcblx0XHRpZiAoIGlzT3J0aG9ncmFwaGljICkge1xuXHRcdFx0Y2FtZXJhVG9GcmFnID0gbm9ybWFsaXplKCB2ZWMzKCAtIHZpZXdNYXRyaXhbIDAgXVsgMiBdLCAtIHZpZXdNYXRyaXhbIDEgXVsgMiBdLCAtIHZpZXdNYXRyaXhbIDIgXVsgMiBdICkgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y2FtZXJhVG9GcmFnID0gbm9ybWFsaXplKCB2V29ybGRQb3NpdGlvbiAtIGNhbWVyYVBvc2l0aW9uICk7XG5cdFx0fVxuXHRcdHZlYzMgd29ybGROb3JtYWwgPSBpbnZlcnNlVHJhbnNmb3JtRGlyZWN0aW9uKCBub3JtYWwsIHZpZXdNYXRyaXggKTtcblx0XHQjaWZkZWYgRU5WTUFQX01PREVfUkVGTEVDVElPTlxuXHRcdFx0dmVjMyByZWZsZWN0VmVjID0gcmVmbGVjdCggY2FtZXJhVG9GcmFnLCB3b3JsZE5vcm1hbCApO1xuXHRcdCNlbHNlXG5cdFx0XHR2ZWMzIHJlZmxlY3RWZWMgPSByZWZyYWN0KCBjYW1lcmFUb0ZyYWcsIHdvcmxkTm9ybWFsLCByZWZyYWN0aW9uUmF0aW8gKTtcblx0XHQjZW5kaWZcblx0I2Vsc2Vcblx0XHR2ZWMzIHJlZmxlY3RWZWMgPSB2UmVmbGVjdDtcblx0I2VuZGlmXG5cdCNpZmRlZiBFTlZNQVBfVFlQRV9DVUJFXG5cdFx0dmVjNCBlbnZDb2xvciA9IHRleHR1cmVDdWJlKCBlbnZNYXAsIHZlYzMoIGZsaXBFbnZNYXAgKiByZWZsZWN0VmVjLngsIHJlZmxlY3RWZWMueXogKSApO1xuXHQjZWxpZiBkZWZpbmVkKCBFTlZNQVBfVFlQRV9DVUJFX1VWIClcblx0XHR2ZWM0IGVudkNvbG9yID0gdGV4dHVyZUN1YmVVViggZW52TWFwLCByZWZsZWN0VmVjLCAwLjAgKTtcblx0I2Vsc2Vcblx0XHR2ZWM0IGVudkNvbG9yID0gdmVjNCggMC4wICk7XG5cdCNlbmRpZlxuXHQjaWZuZGVmIEVOVk1BUF9UWVBFX0NVQkVfVVZcblx0XHRlbnZDb2xvciA9IGVudk1hcFRleGVsVG9MaW5lYXIoIGVudkNvbG9yICk7XG5cdCNlbmRpZlxuXHQjaWZkZWYgRU5WTUFQX0JMRU5ESU5HX01VTFRJUExZXG5cdFx0b3V0Z29pbmdMaWdodCA9IG1peCggb3V0Z29pbmdMaWdodCwgb3V0Z29pbmdMaWdodCAqIGVudkNvbG9yLnh5eiwgc3BlY3VsYXJTdHJlbmd0aCAqIHJlZmxlY3Rpdml0eSApO1xuXHQjZWxpZiBkZWZpbmVkKCBFTlZNQVBfQkxFTkRJTkdfTUlYIClcblx0XHRvdXRnb2luZ0xpZ2h0ID0gbWl4KCBvdXRnb2luZ0xpZ2h0LCBlbnZDb2xvci54eXosIHNwZWN1bGFyU3RyZW5ndGggKiByZWZsZWN0aXZpdHkgKTtcblx0I2VsaWYgZGVmaW5lZCggRU5WTUFQX0JMRU5ESU5HX0FERCApXG5cdFx0b3V0Z29pbmdMaWdodCArPSBlbnZDb2xvci54eXogKiBzcGVjdWxhclN0cmVuZ3RoICogcmVmbGVjdGl2aXR5O1xuXHQjZW5kaWZcbiNlbmRpZiIsZW52bWFwX2NvbW1vbl9wYXJzX2ZyYWdtZW50OiIjaWZkZWYgVVNFX0VOVk1BUFxuXHR1bmlmb3JtIGZsb2F0IGVudk1hcEludGVuc2l0eTtcblx0dW5pZm9ybSBmbG9hdCBmbGlwRW52TWFwO1xuXHR1bmlmb3JtIGludCBtYXhNaXBMZXZlbDtcblx0I2lmZGVmIEVOVk1BUF9UWVBFX0NVQkVcblx0XHR1bmlmb3JtIHNhbXBsZXJDdWJlIGVudk1hcDtcblx0I2Vsc2Vcblx0XHR1bmlmb3JtIHNhbXBsZXIyRCBlbnZNYXA7XG5cdCNlbmRpZlxuXHRcbiNlbmRpZiIsZW52bWFwX3BhcnNfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfRU5WTUFQXG5cdHVuaWZvcm0gZmxvYXQgcmVmbGVjdGl2aXR5O1xuXHQjaWYgZGVmaW5lZCggVVNFX0JVTVBNQVAgKSB8fCBkZWZpbmVkKCBVU0VfTk9STUFMTUFQICkgfHwgZGVmaW5lZCggUEhPTkcgKVxuXHRcdCNkZWZpbmUgRU5WX1dPUkxEUE9TXG5cdCNlbmRpZlxuXHQjaWZkZWYgRU5WX1dPUkxEUE9TXG5cdFx0dmFyeWluZyB2ZWMzIHZXb3JsZFBvc2l0aW9uO1xuXHRcdHVuaWZvcm0gZmxvYXQgcmVmcmFjdGlvblJhdGlvO1xuXHQjZWxzZVxuXHRcdHZhcnlpbmcgdmVjMyB2UmVmbGVjdDtcblx0I2VuZGlmXG4jZW5kaWYiLGVudm1hcF9wYXJzX3ZlcnRleDoiI2lmZGVmIFVTRV9FTlZNQVBcblx0I2lmIGRlZmluZWQoIFVTRV9CVU1QTUFQICkgfHwgZGVmaW5lZCggVVNFX05PUk1BTE1BUCApIHx8ZGVmaW5lZCggUEhPTkcgKVxuXHRcdCNkZWZpbmUgRU5WX1dPUkxEUE9TXG5cdCNlbmRpZlxuXHQjaWZkZWYgRU5WX1dPUkxEUE9TXG5cdFx0XG5cdFx0dmFyeWluZyB2ZWMzIHZXb3JsZFBvc2l0aW9uO1xuXHQjZWxzZVxuXHRcdHZhcnlpbmcgdmVjMyB2UmVmbGVjdDtcblx0XHR1bmlmb3JtIGZsb2F0IHJlZnJhY3Rpb25SYXRpbztcblx0I2VuZGlmXG4jZW5kaWYiLGVudm1hcF9waHlzaWNhbF9wYXJzX2ZyYWdtZW50OiIjaWYgZGVmaW5lZCggVVNFX0VOVk1BUCApXG5cdCNpZmRlZiBFTlZNQVBfTU9ERV9SRUZSQUNUSU9OXG5cdFx0dW5pZm9ybSBmbG9hdCByZWZyYWN0aW9uUmF0aW87XG5cdCNlbmRpZlxuXHR2ZWMzIGdldExpZ2h0UHJvYmVJbmRpcmVjdElycmFkaWFuY2UoIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnksIGNvbnN0IGluIGludCBtYXhNSVBMZXZlbCApIHtcblx0XHR2ZWMzIHdvcmxkTm9ybWFsID0gaW52ZXJzZVRyYW5zZm9ybURpcmVjdGlvbiggZ2VvbWV0cnkubm9ybWFsLCB2aWV3TWF0cml4ICk7XG5cdFx0I2lmZGVmIEVOVk1BUF9UWVBFX0NVQkVcblx0XHRcdHZlYzMgcXVlcnlWZWMgPSB2ZWMzKCBmbGlwRW52TWFwICogd29ybGROb3JtYWwueCwgd29ybGROb3JtYWwueXogKTtcblx0XHRcdCNpZmRlZiBURVhUVVJFX0xPRF9FWFRcblx0XHRcdFx0dmVjNCBlbnZNYXBDb2xvciA9IHRleHR1cmVDdWJlTG9kRVhUKCBlbnZNYXAsIHF1ZXJ5VmVjLCBmbG9hdCggbWF4TUlQTGV2ZWwgKSApO1xuXHRcdFx0I2Vsc2Vcblx0XHRcdFx0dmVjNCBlbnZNYXBDb2xvciA9IHRleHR1cmVDdWJlKCBlbnZNYXAsIHF1ZXJ5VmVjLCBmbG9hdCggbWF4TUlQTGV2ZWwgKSApO1xuXHRcdFx0I2VuZGlmXG5cdFx0XHRlbnZNYXBDb2xvci5yZ2IgPSBlbnZNYXBUZXhlbFRvTGluZWFyKCBlbnZNYXBDb2xvciApLnJnYjtcblx0XHQjZWxpZiBkZWZpbmVkKCBFTlZNQVBfVFlQRV9DVUJFX1VWIClcblx0XHRcdHZlYzQgZW52TWFwQ29sb3IgPSB0ZXh0dXJlQ3ViZVVWKCBlbnZNYXAsIHdvcmxkTm9ybWFsLCAxLjAgKTtcblx0XHQjZWxzZVxuXHRcdFx0dmVjNCBlbnZNYXBDb2xvciA9IHZlYzQoIDAuMCApO1xuXHRcdCNlbmRpZlxuXHRcdHJldHVybiBQSSAqIGVudk1hcENvbG9yLnJnYiAqIGVudk1hcEludGVuc2l0eTtcblx0fVxuXHRmbG9hdCBnZXRTcGVjdWxhck1JUExldmVsKCBjb25zdCBpbiBmbG9hdCByb3VnaG5lc3MsIGNvbnN0IGluIGludCBtYXhNSVBMZXZlbCApIHtcblx0XHRmbG9hdCBtYXhNSVBMZXZlbFNjYWxhciA9IGZsb2F0KCBtYXhNSVBMZXZlbCApO1xuXHRcdGZsb2F0IHNpZ21hID0gUEkgKiByb3VnaG5lc3MgKiByb3VnaG5lc3MgLyAoIDEuMCArIHJvdWdobmVzcyApO1xuXHRcdGZsb2F0IGRlc2lyZWRNSVBMZXZlbCA9IG1heE1JUExldmVsU2NhbGFyICsgbG9nMiggc2lnbWEgKTtcblx0XHRyZXR1cm4gY2xhbXAoIGRlc2lyZWRNSVBMZXZlbCwgMC4wLCBtYXhNSVBMZXZlbFNjYWxhciApO1xuXHR9XG5cdHZlYzMgZ2V0TGlnaHRQcm9iZUluZGlyZWN0UmFkaWFuY2UoIGNvbnN0IGluIHZlYzMgdmlld0RpciwgY29uc3QgaW4gdmVjMyBub3JtYWwsIGNvbnN0IGluIGZsb2F0IHJvdWdobmVzcywgY29uc3QgaW4gaW50IG1heE1JUExldmVsICkge1xuXHRcdCNpZmRlZiBFTlZNQVBfTU9ERV9SRUZMRUNUSU9OXG5cdFx0XHR2ZWMzIHJlZmxlY3RWZWMgPSByZWZsZWN0KCAtdmlld0Rpciwgbm9ybWFsICk7XG5cdFx0XHRyZWZsZWN0VmVjID0gbm9ybWFsaXplKCBtaXgoIHJlZmxlY3RWZWMsIG5vcm1hbCwgcm91Z2huZXNzICogcm91Z2huZXNzKSApO1xuXHRcdCNlbHNlXG5cdFx0XHR2ZWMzIHJlZmxlY3RWZWMgPSByZWZyYWN0KCAtdmlld0Rpciwgbm9ybWFsLCByZWZyYWN0aW9uUmF0aW8gKTtcblx0XHQjZW5kaWZcblx0XHRyZWZsZWN0VmVjID0gaW52ZXJzZVRyYW5zZm9ybURpcmVjdGlvbiggcmVmbGVjdFZlYywgdmlld01hdHJpeCApO1xuXHRcdGZsb2F0IHNwZWN1bGFyTUlQTGV2ZWwgPSBnZXRTcGVjdWxhck1JUExldmVsKCByb3VnaG5lc3MsIG1heE1JUExldmVsICk7XG5cdFx0I2lmZGVmIEVOVk1BUF9UWVBFX0NVQkVcblx0XHRcdHZlYzMgcXVlcnlSZWZsZWN0VmVjID0gdmVjMyggZmxpcEVudk1hcCAqIHJlZmxlY3RWZWMueCwgcmVmbGVjdFZlYy55eiApO1xuXHRcdFx0I2lmZGVmIFRFWFRVUkVfTE9EX0VYVFxuXHRcdFx0XHR2ZWM0IGVudk1hcENvbG9yID0gdGV4dHVyZUN1YmVMb2RFWFQoIGVudk1hcCwgcXVlcnlSZWZsZWN0VmVjLCBzcGVjdWxhck1JUExldmVsICk7XG5cdFx0XHQjZWxzZVxuXHRcdFx0XHR2ZWM0IGVudk1hcENvbG9yID0gdGV4dHVyZUN1YmUoIGVudk1hcCwgcXVlcnlSZWZsZWN0VmVjLCBzcGVjdWxhck1JUExldmVsICk7XG5cdFx0XHQjZW5kaWZcblx0XHRcdGVudk1hcENvbG9yLnJnYiA9IGVudk1hcFRleGVsVG9MaW5lYXIoIGVudk1hcENvbG9yICkucmdiO1xuXHRcdCNlbGlmIGRlZmluZWQoIEVOVk1BUF9UWVBFX0NVQkVfVVYgKVxuXHRcdFx0dmVjNCBlbnZNYXBDb2xvciA9IHRleHR1cmVDdWJlVVYoIGVudk1hcCwgcmVmbGVjdFZlYywgcm91Z2huZXNzICk7XG5cdFx0I2VuZGlmXG5cdFx0cmV0dXJuIGVudk1hcENvbG9yLnJnYiAqIGVudk1hcEludGVuc2l0eTtcblx0fVxuI2VuZGlmIixlbnZtYXBfdmVydGV4OiIjaWZkZWYgVVNFX0VOVk1BUFxuXHQjaWZkZWYgRU5WX1dPUkxEUE9TXG5cdFx0dldvcmxkUG9zaXRpb24gPSB3b3JsZFBvc2l0aW9uLnh5ejtcblx0I2Vsc2Vcblx0XHR2ZWMzIGNhbWVyYVRvVmVydGV4O1xuXHRcdGlmICggaXNPcnRob2dyYXBoaWMgKSB7XG5cdFx0XHRjYW1lcmFUb1ZlcnRleCA9IG5vcm1hbGl6ZSggdmVjMyggLSB2aWV3TWF0cml4WyAwIF1bIDIgXSwgLSB2aWV3TWF0cml4WyAxIF1bIDIgXSwgLSB2aWV3TWF0cml4WyAyIF1bIDIgXSApICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNhbWVyYVRvVmVydGV4ID0gbm9ybWFsaXplKCB3b3JsZFBvc2l0aW9uLnh5eiAtIGNhbWVyYVBvc2l0aW9uICk7XG5cdFx0fVxuXHRcdHZlYzMgd29ybGROb3JtYWwgPSBpbnZlcnNlVHJhbnNmb3JtRGlyZWN0aW9uKCB0cmFuc2Zvcm1lZE5vcm1hbCwgdmlld01hdHJpeCApO1xuXHRcdCNpZmRlZiBFTlZNQVBfTU9ERV9SRUZMRUNUSU9OXG5cdFx0XHR2UmVmbGVjdCA9IHJlZmxlY3QoIGNhbWVyYVRvVmVydGV4LCB3b3JsZE5vcm1hbCApO1xuXHRcdCNlbHNlXG5cdFx0XHR2UmVmbGVjdCA9IHJlZnJhY3QoIGNhbWVyYVRvVmVydGV4LCB3b3JsZE5vcm1hbCwgcmVmcmFjdGlvblJhdGlvICk7XG5cdFx0I2VuZGlmXG5cdCNlbmRpZlxuI2VuZGlmIixmb2dfdmVydGV4OiIjaWZkZWYgVVNFX0ZPR1xuXHRmb2dEZXB0aCA9IC0gbXZQb3NpdGlvbi56O1xuI2VuZGlmIixmb2dfcGFyc192ZXJ0ZXg6IiNpZmRlZiBVU0VfRk9HXG5cdHZhcnlpbmcgZmxvYXQgZm9nRGVwdGg7XG4jZW5kaWYiLGZvZ19mcmFnbWVudDoiI2lmZGVmIFVTRV9GT0dcblx0I2lmZGVmIEZPR19FWFAyXG5cdFx0ZmxvYXQgZm9nRmFjdG9yID0gMS4wIC0gZXhwKCAtIGZvZ0RlbnNpdHkgKiBmb2dEZW5zaXR5ICogZm9nRGVwdGggKiBmb2dEZXB0aCApO1xuXHQjZWxzZVxuXHRcdGZsb2F0IGZvZ0ZhY3RvciA9IHNtb290aHN0ZXAoIGZvZ05lYXIsIGZvZ0ZhciwgZm9nRGVwdGggKTtcblx0I2VuZGlmXG5cdGdsX0ZyYWdDb2xvci5yZ2IgPSBtaXgoIGdsX0ZyYWdDb2xvci5yZ2IsIGZvZ0NvbG9yLCBmb2dGYWN0b3IgKTtcbiNlbmRpZiIsZm9nX3BhcnNfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfRk9HXG5cdHVuaWZvcm0gdmVjMyBmb2dDb2xvcjtcblx0dmFyeWluZyBmbG9hdCBmb2dEZXB0aDtcblx0I2lmZGVmIEZPR19FWFAyXG5cdFx0dW5pZm9ybSBmbG9hdCBmb2dEZW5zaXR5O1xuXHQjZWxzZVxuXHRcdHVuaWZvcm0gZmxvYXQgZm9nTmVhcjtcblx0XHR1bmlmb3JtIGZsb2F0IGZvZ0Zhcjtcblx0I2VuZGlmXG4jZW5kaWYiLGdyYWRpZW50bWFwX3BhcnNfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfR1JBRElFTlRNQVBcblx0dW5pZm9ybSBzYW1wbGVyMkQgZ3JhZGllbnRNYXA7XG4jZW5kaWZcbnZlYzMgZ2V0R3JhZGllbnRJcnJhZGlhbmNlKCB2ZWMzIG5vcm1hbCwgdmVjMyBsaWdodERpcmVjdGlvbiApIHtcblx0ZmxvYXQgZG90TkwgPSBkb3QoIG5vcm1hbCwgbGlnaHREaXJlY3Rpb24gKTtcblx0dmVjMiBjb29yZCA9IHZlYzIoIGRvdE5MICogMC41ICsgMC41LCAwLjAgKTtcblx0I2lmZGVmIFVTRV9HUkFESUVOVE1BUFxuXHRcdHJldHVybiB0ZXh0dXJlMkQoIGdyYWRpZW50TWFwLCBjb29yZCApLnJnYjtcblx0I2Vsc2Vcblx0XHRyZXR1cm4gKCBjb29yZC54IDwgMC43ICkgPyB2ZWMzKCAwLjcgKSA6IHZlYzMoIDEuMCApO1xuXHQjZW5kaWZcbn0iLGxpZ2h0bWFwX2ZyYWdtZW50OiIjaWZkZWYgVVNFX0xJR0hUTUFQXG5cdHZlYzQgbGlnaHRNYXBUZXhlbD0gdGV4dHVyZTJEKCBsaWdodE1hcCwgdlV2MiApO1xuXHRyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKz0gUEkgKiBsaWdodE1hcFRleGVsVG9MaW5lYXIoIGxpZ2h0TWFwVGV4ZWwgKS5yZ2IgKiBsaWdodE1hcEludGVuc2l0eTtcbiNlbmRpZiIsbGlnaHRtYXBfcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9MSUdIVE1BUFxuXHR1bmlmb3JtIHNhbXBsZXIyRCBsaWdodE1hcDtcblx0dW5pZm9ybSBmbG9hdCBsaWdodE1hcEludGVuc2l0eTtcbiNlbmRpZiIsbGlnaHRzX2xhbWJlcnRfdmVydGV4OiJ2ZWMzIGRpZmZ1c2UgPSB2ZWMzKCAxLjAgKTtcbkdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnk7XG5nZW9tZXRyeS5wb3NpdGlvbiA9IG12UG9zaXRpb24ueHl6O1xuZ2VvbWV0cnkubm9ybWFsID0gbm9ybWFsaXplKCB0cmFuc2Zvcm1lZE5vcm1hbCApO1xuZ2VvbWV0cnkudmlld0RpciA9ICggaXNPcnRob2dyYXBoaWMgKSA/IHZlYzMoIDAsIDAsIDEgKSA6IG5vcm1hbGl6ZSggLW12UG9zaXRpb24ueHl6ICk7XG5HZW9tZXRyaWNDb250ZXh0IGJhY2tHZW9tZXRyeTtcbmJhY2tHZW9tZXRyeS5wb3NpdGlvbiA9IGdlb21ldHJ5LnBvc2l0aW9uO1xuYmFja0dlb21ldHJ5Lm5vcm1hbCA9IC1nZW9tZXRyeS5ub3JtYWw7XG5iYWNrR2VvbWV0cnkudmlld0RpciA9IGdlb21ldHJ5LnZpZXdEaXI7XG52TGlnaHRGcm9udCA9IHZlYzMoIDAuMCApO1xudkluZGlyZWN0RnJvbnQgPSB2ZWMzKCAwLjAgKTtcbiNpZmRlZiBET1VCTEVfU0lERURcblx0dkxpZ2h0QmFjayA9IHZlYzMoIDAuMCApO1xuXHR2SW5kaXJlY3RCYWNrID0gdmVjMyggMC4wICk7XG4jZW5kaWZcbkluY2lkZW50TGlnaHQgZGlyZWN0TGlnaHQ7XG5mbG9hdCBkb3ROTDtcbnZlYzMgZGlyZWN0TGlnaHRDb2xvcl9EaWZmdXNlO1xudkluZGlyZWN0RnJvbnQgKz0gZ2V0QW1iaWVudExpZ2h0SXJyYWRpYW5jZSggYW1iaWVudExpZ2h0Q29sb3IgKTtcbnZJbmRpcmVjdEZyb250ICs9IGdldExpZ2h0UHJvYmVJcnJhZGlhbmNlKCBsaWdodFByb2JlLCBnZW9tZXRyeSApO1xuI2lmZGVmIERPVUJMRV9TSURFRFxuXHR2SW5kaXJlY3RCYWNrICs9IGdldEFtYmllbnRMaWdodElycmFkaWFuY2UoIGFtYmllbnRMaWdodENvbG9yICk7XG5cdHZJbmRpcmVjdEJhY2sgKz0gZ2V0TGlnaHRQcm9iZUlycmFkaWFuY2UoIGxpZ2h0UHJvYmUsIGJhY2tHZW9tZXRyeSApO1xuI2VuZGlmXG4jaWYgTlVNX1BPSU5UX0xJR0hUUyA+IDBcblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydFxuXHRmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fUE9JTlRfTElHSFRTOyBpICsrICkge1xuXHRcdGdldFBvaW50RGlyZWN0TGlnaHRJcnJhZGlhbmNlKCBwb2ludExpZ2h0c1sgaSBdLCBnZW9tZXRyeSwgZGlyZWN0TGlnaHQgKTtcblx0XHRkb3ROTCA9IGRvdCggZ2VvbWV0cnkubm9ybWFsLCBkaXJlY3RMaWdodC5kaXJlY3Rpb24gKTtcblx0XHRkaXJlY3RMaWdodENvbG9yX0RpZmZ1c2UgPSBQSSAqIGRpcmVjdExpZ2h0LmNvbG9yO1xuXHRcdHZMaWdodEZyb250ICs9IHNhdHVyYXRlKCBkb3ROTCApICogZGlyZWN0TGlnaHRDb2xvcl9EaWZmdXNlO1xuXHRcdCNpZmRlZiBET1VCTEVfU0lERURcblx0XHRcdHZMaWdodEJhY2sgKz0gc2F0dXJhdGUoIC1kb3ROTCApICogZGlyZWN0TGlnaHRDb2xvcl9EaWZmdXNlO1xuXHRcdCNlbmRpZlxuXHR9XG5cdCNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kXG4jZW5kaWZcbiNpZiBOVU1fU1BPVF9MSUdIVFMgPiAwXG5cdCNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnRcblx0Zm9yICggaW50IGkgPSAwOyBpIDwgTlVNX1NQT1RfTElHSFRTOyBpICsrICkge1xuXHRcdGdldFNwb3REaXJlY3RMaWdodElycmFkaWFuY2UoIHNwb3RMaWdodHNbIGkgXSwgZ2VvbWV0cnksIGRpcmVjdExpZ2h0ICk7XG5cdFx0ZG90TkwgPSBkb3QoIGdlb21ldHJ5Lm5vcm1hbCwgZGlyZWN0TGlnaHQuZGlyZWN0aW9uICk7XG5cdFx0ZGlyZWN0TGlnaHRDb2xvcl9EaWZmdXNlID0gUEkgKiBkaXJlY3RMaWdodC5jb2xvcjtcblx0XHR2TGlnaHRGcm9udCArPSBzYXR1cmF0ZSggZG90TkwgKSAqIGRpcmVjdExpZ2h0Q29sb3JfRGlmZnVzZTtcblx0XHQjaWZkZWYgRE9VQkxFX1NJREVEXG5cdFx0XHR2TGlnaHRCYWNrICs9IHNhdHVyYXRlKCAtZG90TkwgKSAqIGRpcmVjdExpZ2h0Q29sb3JfRGlmZnVzZTtcblx0XHQjZW5kaWZcblx0fVxuXHQjcHJhZ21hIHVucm9sbF9sb29wX2VuZFxuI2VuZGlmXG4jaWYgTlVNX0RJUl9MSUdIVFMgPiAwXG5cdCNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnRcblx0Zm9yICggaW50IGkgPSAwOyBpIDwgTlVNX0RJUl9MSUdIVFM7IGkgKysgKSB7XG5cdFx0Z2V0RGlyZWN0aW9uYWxEaXJlY3RMaWdodElycmFkaWFuY2UoIGRpcmVjdGlvbmFsTGlnaHRzWyBpIF0sIGdlb21ldHJ5LCBkaXJlY3RMaWdodCApO1xuXHRcdGRvdE5MID0gZG90KCBnZW9tZXRyeS5ub3JtYWwsIGRpcmVjdExpZ2h0LmRpcmVjdGlvbiApO1xuXHRcdGRpcmVjdExpZ2h0Q29sb3JfRGlmZnVzZSA9IFBJICogZGlyZWN0TGlnaHQuY29sb3I7XG5cdFx0dkxpZ2h0RnJvbnQgKz0gc2F0dXJhdGUoIGRvdE5MICkgKiBkaXJlY3RMaWdodENvbG9yX0RpZmZ1c2U7XG5cdFx0I2lmZGVmIERPVUJMRV9TSURFRFxuXHRcdFx0dkxpZ2h0QmFjayArPSBzYXR1cmF0ZSggLWRvdE5MICkgKiBkaXJlY3RMaWdodENvbG9yX0RpZmZ1c2U7XG5cdFx0I2VuZGlmXG5cdH1cblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9lbmRcbiNlbmRpZlxuI2lmIE5VTV9IRU1JX0xJR0hUUyA+IDBcblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydFxuXHRmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fSEVNSV9MSUdIVFM7IGkgKysgKSB7XG5cdFx0dkluZGlyZWN0RnJvbnQgKz0gZ2V0SGVtaXNwaGVyZUxpZ2h0SXJyYWRpYW5jZSggaGVtaXNwaGVyZUxpZ2h0c1sgaSBdLCBnZW9tZXRyeSApO1xuXHRcdCNpZmRlZiBET1VCTEVfU0lERURcblx0XHRcdHZJbmRpcmVjdEJhY2sgKz0gZ2V0SGVtaXNwaGVyZUxpZ2h0SXJyYWRpYW5jZSggaGVtaXNwaGVyZUxpZ2h0c1sgaSBdLCBiYWNrR2VvbWV0cnkgKTtcblx0XHQjZW5kaWZcblx0fVxuXHQjcHJhZ21hIHVucm9sbF9sb29wX2VuZFxuI2VuZGlmIixsaWdodHNfcGFyc19iZWdpbjoidW5pZm9ybSBib29sIHJlY2VpdmVTaGFkb3c7XG51bmlmb3JtIHZlYzMgYW1iaWVudExpZ2h0Q29sb3I7XG51bmlmb3JtIHZlYzMgbGlnaHRQcm9iZVsgOSBdO1xudmVjMyBzaEdldElycmFkaWFuY2VBdCggaW4gdmVjMyBub3JtYWwsIGluIHZlYzMgc2hDb2VmZmljaWVudHNbIDkgXSApIHtcblx0ZmxvYXQgeCA9IG5vcm1hbC54LCB5ID0gbm9ybWFsLnksIHogPSBub3JtYWwuejtcblx0dmVjMyByZXN1bHQgPSBzaENvZWZmaWNpZW50c1sgMCBdICogMC44ODYyMjc7XG5cdHJlc3VsdCArPSBzaENvZWZmaWNpZW50c1sgMSBdICogMi4wICogMC41MTE2NjQgKiB5O1xuXHRyZXN1bHQgKz0gc2hDb2VmZmljaWVudHNbIDIgXSAqIDIuMCAqIDAuNTExNjY0ICogejtcblx0cmVzdWx0ICs9IHNoQ29lZmZpY2llbnRzWyAzIF0gKiAyLjAgKiAwLjUxMTY2NCAqIHg7XG5cdHJlc3VsdCArPSBzaENvZWZmaWNpZW50c1sgNCBdICogMi4wICogMC40MjkwNDMgKiB4ICogeTtcblx0cmVzdWx0ICs9IHNoQ29lZmZpY2llbnRzWyA1IF0gKiAyLjAgKiAwLjQyOTA0MyAqIHkgKiB6O1xuXHRyZXN1bHQgKz0gc2hDb2VmZmljaWVudHNbIDYgXSAqICggMC43NDMxMjUgKiB6ICogeiAtIDAuMjQ3NzA4ICk7XG5cdHJlc3VsdCArPSBzaENvZWZmaWNpZW50c1sgNyBdICogMi4wICogMC40MjkwNDMgKiB4ICogejtcblx0cmVzdWx0ICs9IHNoQ29lZmZpY2llbnRzWyA4IF0gKiAwLjQyOTA0MyAqICggeCAqIHggLSB5ICogeSApO1xuXHRyZXR1cm4gcmVzdWx0O1xufVxudmVjMyBnZXRMaWdodFByb2JlSXJyYWRpYW5jZSggY29uc3QgaW4gdmVjMyBsaWdodFByb2JlWyA5IF0sIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnkgKSB7XG5cdHZlYzMgd29ybGROb3JtYWwgPSBpbnZlcnNlVHJhbnNmb3JtRGlyZWN0aW9uKCBnZW9tZXRyeS5ub3JtYWwsIHZpZXdNYXRyaXggKTtcblx0dmVjMyBpcnJhZGlhbmNlID0gc2hHZXRJcnJhZGlhbmNlQXQoIHdvcmxkTm9ybWFsLCBsaWdodFByb2JlICk7XG5cdHJldHVybiBpcnJhZGlhbmNlO1xufVxudmVjMyBnZXRBbWJpZW50TGlnaHRJcnJhZGlhbmNlKCBjb25zdCBpbiB2ZWMzIGFtYmllbnRMaWdodENvbG9yICkge1xuXHR2ZWMzIGlycmFkaWFuY2UgPSBhbWJpZW50TGlnaHRDb2xvcjtcblx0I2lmbmRlZiBQSFlTSUNBTExZX0NPUlJFQ1RfTElHSFRTXG5cdFx0aXJyYWRpYW5jZSAqPSBQSTtcblx0I2VuZGlmXG5cdHJldHVybiBpcnJhZGlhbmNlO1xufVxuI2lmIE5VTV9ESVJfTElHSFRTID4gMFxuXHRzdHJ1Y3QgRGlyZWN0aW9uYWxMaWdodCB7XG5cdFx0dmVjMyBkaXJlY3Rpb247XG5cdFx0dmVjMyBjb2xvcjtcblx0fTtcblx0dW5pZm9ybSBEaXJlY3Rpb25hbExpZ2h0IGRpcmVjdGlvbmFsTGlnaHRzWyBOVU1fRElSX0xJR0hUUyBdO1xuXHR2b2lkIGdldERpcmVjdGlvbmFsRGlyZWN0TGlnaHRJcnJhZGlhbmNlKCBjb25zdCBpbiBEaXJlY3Rpb25hbExpZ2h0IGRpcmVjdGlvbmFsTGlnaHQsIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnksIG91dCBJbmNpZGVudExpZ2h0IGRpcmVjdExpZ2h0ICkge1xuXHRcdGRpcmVjdExpZ2h0LmNvbG9yID0gZGlyZWN0aW9uYWxMaWdodC5jb2xvcjtcblx0XHRkaXJlY3RMaWdodC5kaXJlY3Rpb24gPSBkaXJlY3Rpb25hbExpZ2h0LmRpcmVjdGlvbjtcblx0XHRkaXJlY3RMaWdodC52aXNpYmxlID0gdHJ1ZTtcblx0fVxuI2VuZGlmXG4jaWYgTlVNX1BPSU5UX0xJR0hUUyA+IDBcblx0c3RydWN0IFBvaW50TGlnaHQge1xuXHRcdHZlYzMgcG9zaXRpb247XG5cdFx0dmVjMyBjb2xvcjtcblx0XHRmbG9hdCBkaXN0YW5jZTtcblx0XHRmbG9hdCBkZWNheTtcblx0fTtcblx0dW5pZm9ybSBQb2ludExpZ2h0IHBvaW50TGlnaHRzWyBOVU1fUE9JTlRfTElHSFRTIF07XG5cdHZvaWQgZ2V0UG9pbnREaXJlY3RMaWdodElycmFkaWFuY2UoIGNvbnN0IGluIFBvaW50TGlnaHQgcG9pbnRMaWdodCwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgb3V0IEluY2lkZW50TGlnaHQgZGlyZWN0TGlnaHQgKSB7XG5cdFx0dmVjMyBsVmVjdG9yID0gcG9pbnRMaWdodC5wb3NpdGlvbiAtIGdlb21ldHJ5LnBvc2l0aW9uO1xuXHRcdGRpcmVjdExpZ2h0LmRpcmVjdGlvbiA9IG5vcm1hbGl6ZSggbFZlY3RvciApO1xuXHRcdGZsb2F0IGxpZ2h0RGlzdGFuY2UgPSBsZW5ndGgoIGxWZWN0b3IgKTtcblx0XHRkaXJlY3RMaWdodC5jb2xvciA9IHBvaW50TGlnaHQuY29sb3I7XG5cdFx0ZGlyZWN0TGlnaHQuY29sb3IgKj0gcHVuY3R1YWxMaWdodEludGVuc2l0eVRvSXJyYWRpYW5jZUZhY3RvciggbGlnaHREaXN0YW5jZSwgcG9pbnRMaWdodC5kaXN0YW5jZSwgcG9pbnRMaWdodC5kZWNheSApO1xuXHRcdGRpcmVjdExpZ2h0LnZpc2libGUgPSAoIGRpcmVjdExpZ2h0LmNvbG9yICE9IHZlYzMoIDAuMCApICk7XG5cdH1cbiNlbmRpZlxuI2lmIE5VTV9TUE9UX0xJR0hUUyA+IDBcblx0c3RydWN0IFNwb3RMaWdodCB7XG5cdFx0dmVjMyBwb3NpdGlvbjtcblx0XHR2ZWMzIGRpcmVjdGlvbjtcblx0XHR2ZWMzIGNvbG9yO1xuXHRcdGZsb2F0IGRpc3RhbmNlO1xuXHRcdGZsb2F0IGRlY2F5O1xuXHRcdGZsb2F0IGNvbmVDb3M7XG5cdFx0ZmxvYXQgcGVudW1icmFDb3M7XG5cdH07XG5cdHVuaWZvcm0gU3BvdExpZ2h0IHNwb3RMaWdodHNbIE5VTV9TUE9UX0xJR0hUUyBdO1xuXHR2b2lkIGdldFNwb3REaXJlY3RMaWdodElycmFkaWFuY2UoIGNvbnN0IGluIFNwb3RMaWdodCBzcG90TGlnaHQsIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnksIG91dCBJbmNpZGVudExpZ2h0IGRpcmVjdExpZ2h0ICkge1xuXHRcdHZlYzMgbFZlY3RvciA9IHNwb3RMaWdodC5wb3NpdGlvbiAtIGdlb21ldHJ5LnBvc2l0aW9uO1xuXHRcdGRpcmVjdExpZ2h0LmRpcmVjdGlvbiA9IG5vcm1hbGl6ZSggbFZlY3RvciApO1xuXHRcdGZsb2F0IGxpZ2h0RGlzdGFuY2UgPSBsZW5ndGgoIGxWZWN0b3IgKTtcblx0XHRmbG9hdCBhbmdsZUNvcyA9IGRvdCggZGlyZWN0TGlnaHQuZGlyZWN0aW9uLCBzcG90TGlnaHQuZGlyZWN0aW9uICk7XG5cdFx0aWYgKCBhbmdsZUNvcyA+IHNwb3RMaWdodC5jb25lQ29zICkge1xuXHRcdFx0ZmxvYXQgc3BvdEVmZmVjdCA9IHNtb290aHN0ZXAoIHNwb3RMaWdodC5jb25lQ29zLCBzcG90TGlnaHQucGVudW1icmFDb3MsIGFuZ2xlQ29zICk7XG5cdFx0XHRkaXJlY3RMaWdodC5jb2xvciA9IHNwb3RMaWdodC5jb2xvcjtcblx0XHRcdGRpcmVjdExpZ2h0LmNvbG9yICo9IHNwb3RFZmZlY3QgKiBwdW5jdHVhbExpZ2h0SW50ZW5zaXR5VG9JcnJhZGlhbmNlRmFjdG9yKCBsaWdodERpc3RhbmNlLCBzcG90TGlnaHQuZGlzdGFuY2UsIHNwb3RMaWdodC5kZWNheSApO1xuXHRcdFx0ZGlyZWN0TGlnaHQudmlzaWJsZSA9IHRydWU7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGRpcmVjdExpZ2h0LmNvbG9yID0gdmVjMyggMC4wICk7XG5cdFx0XHRkaXJlY3RMaWdodC52aXNpYmxlID0gZmFsc2U7XG5cdFx0fVxuXHR9XG4jZW5kaWZcbiNpZiBOVU1fUkVDVF9BUkVBX0xJR0hUUyA+IDBcblx0c3RydWN0IFJlY3RBcmVhTGlnaHQge1xuXHRcdHZlYzMgY29sb3I7XG5cdFx0dmVjMyBwb3NpdGlvbjtcblx0XHR2ZWMzIGhhbGZXaWR0aDtcblx0XHR2ZWMzIGhhbGZIZWlnaHQ7XG5cdH07XG5cdHVuaWZvcm0gc2FtcGxlcjJEIGx0Y18xO1x0dW5pZm9ybSBzYW1wbGVyMkQgbHRjXzI7XG5cdHVuaWZvcm0gUmVjdEFyZWFMaWdodCByZWN0QXJlYUxpZ2h0c1sgTlVNX1JFQ1RfQVJFQV9MSUdIVFMgXTtcbiNlbmRpZlxuI2lmIE5VTV9IRU1JX0xJR0hUUyA+IDBcblx0c3RydWN0IEhlbWlzcGhlcmVMaWdodCB7XG5cdFx0dmVjMyBkaXJlY3Rpb247XG5cdFx0dmVjMyBza3lDb2xvcjtcblx0XHR2ZWMzIGdyb3VuZENvbG9yO1xuXHR9O1xuXHR1bmlmb3JtIEhlbWlzcGhlcmVMaWdodCBoZW1pc3BoZXJlTGlnaHRzWyBOVU1fSEVNSV9MSUdIVFMgXTtcblx0dmVjMyBnZXRIZW1pc3BoZXJlTGlnaHRJcnJhZGlhbmNlKCBjb25zdCBpbiBIZW1pc3BoZXJlTGlnaHQgaGVtaUxpZ2h0LCBjb25zdCBpbiBHZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5ICkge1xuXHRcdGZsb2F0IGRvdE5MID0gZG90KCBnZW9tZXRyeS5ub3JtYWwsIGhlbWlMaWdodC5kaXJlY3Rpb24gKTtcblx0XHRmbG9hdCBoZW1pRGlmZnVzZVdlaWdodCA9IDAuNSAqIGRvdE5MICsgMC41O1xuXHRcdHZlYzMgaXJyYWRpYW5jZSA9IG1peCggaGVtaUxpZ2h0Lmdyb3VuZENvbG9yLCBoZW1pTGlnaHQuc2t5Q29sb3IsIGhlbWlEaWZmdXNlV2VpZ2h0ICk7XG5cdFx0I2lmbmRlZiBQSFlTSUNBTExZX0NPUlJFQ1RfTElHSFRTXG5cdFx0XHRpcnJhZGlhbmNlICo9IFBJO1xuXHRcdCNlbmRpZlxuXHRcdHJldHVybiBpcnJhZGlhbmNlO1xuXHR9XG4jZW5kaWYiLGxpZ2h0c190b29uX2ZyYWdtZW50OiJUb29uTWF0ZXJpYWwgbWF0ZXJpYWw7XG5tYXRlcmlhbC5kaWZmdXNlQ29sb3IgPSBkaWZmdXNlQ29sb3IucmdiOyIsbGlnaHRzX3Rvb25fcGFyc19mcmFnbWVudDoidmFyeWluZyB2ZWMzIHZWaWV3UG9zaXRpb247XG4jaWZuZGVmIEZMQVRfU0hBREVEXG5cdHZhcnlpbmcgdmVjMyB2Tm9ybWFsO1xuI2VuZGlmXG5zdHJ1Y3QgVG9vbk1hdGVyaWFsIHtcblx0dmVjMyBkaWZmdXNlQ29sb3I7XG59O1xudm9pZCBSRV9EaXJlY3RfVG9vbiggY29uc3QgaW4gSW5jaWRlbnRMaWdodCBkaXJlY3RMaWdodCwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgY29uc3QgaW4gVG9vbk1hdGVyaWFsIG1hdGVyaWFsLCBpbm91dCBSZWZsZWN0ZWRMaWdodCByZWZsZWN0ZWRMaWdodCApIHtcblx0dmVjMyBpcnJhZGlhbmNlID0gZ2V0R3JhZGllbnRJcnJhZGlhbmNlKCBnZW9tZXRyeS5ub3JtYWwsIGRpcmVjdExpZ2h0LmRpcmVjdGlvbiApICogZGlyZWN0TGlnaHQuY29sb3I7XG5cdCNpZm5kZWYgUEhZU0lDQUxMWV9DT1JSRUNUX0xJR0hUU1xuXHRcdGlycmFkaWFuY2UgKj0gUEk7XG5cdCNlbmRpZlxuXHRyZWZsZWN0ZWRMaWdodC5kaXJlY3REaWZmdXNlICs9IGlycmFkaWFuY2UgKiBCUkRGX0RpZmZ1c2VfTGFtYmVydCggbWF0ZXJpYWwuZGlmZnVzZUNvbG9yICk7XG59XG52b2lkIFJFX0luZGlyZWN0RGlmZnVzZV9Ub29uKCBjb25zdCBpbiB2ZWMzIGlycmFkaWFuY2UsIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnksIGNvbnN0IGluIFRvb25NYXRlcmlhbCBtYXRlcmlhbCwgaW5vdXQgUmVmbGVjdGVkTGlnaHQgcmVmbGVjdGVkTGlnaHQgKSB7XG5cdHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZSArPSBpcnJhZGlhbmNlICogQlJERl9EaWZmdXNlX0xhbWJlcnQoIG1hdGVyaWFsLmRpZmZ1c2VDb2xvciApO1xufVxuI2RlZmluZSBSRV9EaXJlY3RcdFx0XHRcdFJFX0RpcmVjdF9Ub29uXG4jZGVmaW5lIFJFX0luZGlyZWN0RGlmZnVzZVx0XHRSRV9JbmRpcmVjdERpZmZ1c2VfVG9vblxuI2RlZmluZSBNYXRlcmlhbF9MaWdodFByb2JlTE9EKCBtYXRlcmlhbCApXHQoMCkiLGxpZ2h0c19waG9uZ19mcmFnbWVudDoiQmxpbm5QaG9uZ01hdGVyaWFsIG1hdGVyaWFsO1xubWF0ZXJpYWwuZGlmZnVzZUNvbG9yID0gZGlmZnVzZUNvbG9yLnJnYjtcbm1hdGVyaWFsLnNwZWN1bGFyQ29sb3IgPSBzcGVjdWxhcjtcbm1hdGVyaWFsLnNwZWN1bGFyU2hpbmluZXNzID0gc2hpbmluZXNzO1xubWF0ZXJpYWwuc3BlY3VsYXJTdHJlbmd0aCA9IHNwZWN1bGFyU3RyZW5ndGg7IixsaWdodHNfcGhvbmdfcGFyc19mcmFnbWVudDoidmFyeWluZyB2ZWMzIHZWaWV3UG9zaXRpb247XG4jaWZuZGVmIEZMQVRfU0hBREVEXG5cdHZhcnlpbmcgdmVjMyB2Tm9ybWFsO1xuI2VuZGlmXG5zdHJ1Y3QgQmxpbm5QaG9uZ01hdGVyaWFsIHtcblx0dmVjMyBkaWZmdXNlQ29sb3I7XG5cdHZlYzMgc3BlY3VsYXJDb2xvcjtcblx0ZmxvYXQgc3BlY3VsYXJTaGluaW5lc3M7XG5cdGZsb2F0IHNwZWN1bGFyU3RyZW5ndGg7XG59O1xudm9pZCBSRV9EaXJlY3RfQmxpbm5QaG9uZyggY29uc3QgaW4gSW5jaWRlbnRMaWdodCBkaXJlY3RMaWdodCwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgY29uc3QgaW4gQmxpbm5QaG9uZ01hdGVyaWFsIG1hdGVyaWFsLCBpbm91dCBSZWZsZWN0ZWRMaWdodCByZWZsZWN0ZWRMaWdodCApIHtcblx0ZmxvYXQgZG90TkwgPSBzYXR1cmF0ZSggZG90KCBnZW9tZXRyeS5ub3JtYWwsIGRpcmVjdExpZ2h0LmRpcmVjdGlvbiApICk7XG5cdHZlYzMgaXJyYWRpYW5jZSA9IGRvdE5MICogZGlyZWN0TGlnaHQuY29sb3I7XG5cdCNpZm5kZWYgUEhZU0lDQUxMWV9DT1JSRUNUX0xJR0hUU1xuXHRcdGlycmFkaWFuY2UgKj0gUEk7XG5cdCNlbmRpZlxuXHRyZWZsZWN0ZWRMaWdodC5kaXJlY3REaWZmdXNlICs9IGlycmFkaWFuY2UgKiBCUkRGX0RpZmZ1c2VfTGFtYmVydCggbWF0ZXJpYWwuZGlmZnVzZUNvbG9yICk7XG5cdHJlZmxlY3RlZExpZ2h0LmRpcmVjdFNwZWN1bGFyICs9IGlycmFkaWFuY2UgKiBCUkRGX1NwZWN1bGFyX0JsaW5uUGhvbmcoIGRpcmVjdExpZ2h0LCBnZW9tZXRyeSwgbWF0ZXJpYWwuc3BlY3VsYXJDb2xvciwgbWF0ZXJpYWwuc3BlY3VsYXJTaGluaW5lc3MgKSAqIG1hdGVyaWFsLnNwZWN1bGFyU3RyZW5ndGg7XG59XG52b2lkIFJFX0luZGlyZWN0RGlmZnVzZV9CbGlublBob25nKCBjb25zdCBpbiB2ZWMzIGlycmFkaWFuY2UsIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnksIGNvbnN0IGluIEJsaW5uUGhvbmdNYXRlcmlhbCBtYXRlcmlhbCwgaW5vdXQgUmVmbGVjdGVkTGlnaHQgcmVmbGVjdGVkTGlnaHQgKSB7XG5cdHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZSArPSBpcnJhZGlhbmNlICogQlJERl9EaWZmdXNlX0xhbWJlcnQoIG1hdGVyaWFsLmRpZmZ1c2VDb2xvciApO1xufVxuI2RlZmluZSBSRV9EaXJlY3RcdFx0XHRcdFJFX0RpcmVjdF9CbGlublBob25nXG4jZGVmaW5lIFJFX0luZGlyZWN0RGlmZnVzZVx0XHRSRV9JbmRpcmVjdERpZmZ1c2VfQmxpbm5QaG9uZ1xuI2RlZmluZSBNYXRlcmlhbF9MaWdodFByb2JlTE9EKCBtYXRlcmlhbCApXHQoMCkiLGxpZ2h0c19waHlzaWNhbF9mcmFnbWVudDoiUGh5c2ljYWxNYXRlcmlhbCBtYXRlcmlhbDtcbm1hdGVyaWFsLmRpZmZ1c2VDb2xvciA9IGRpZmZ1c2VDb2xvci5yZ2IgKiAoIDEuMCAtIG1ldGFsbmVzc0ZhY3RvciApO1xudmVjMyBkeHkgPSBtYXgoIGFicyggZEZkeCggZ2VvbWV0cnlOb3JtYWwgKSApLCBhYnMoIGRGZHkoIGdlb21ldHJ5Tm9ybWFsICkgKSApO1xuZmxvYXQgZ2VvbWV0cnlSb3VnaG5lc3MgPSBtYXgoIG1heCggZHh5LngsIGR4eS55ICksIGR4eS56ICk7XG5tYXRlcmlhbC5zcGVjdWxhclJvdWdobmVzcyA9IG1heCggcm91Z2huZXNzRmFjdG9yLCAwLjA1MjUgKTttYXRlcmlhbC5zcGVjdWxhclJvdWdobmVzcyArPSBnZW9tZXRyeVJvdWdobmVzcztcbm1hdGVyaWFsLnNwZWN1bGFyUm91Z2huZXNzID0gbWluKCBtYXRlcmlhbC5zcGVjdWxhclJvdWdobmVzcywgMS4wICk7XG4jaWZkZWYgUkVGTEVDVElWSVRZXG5cdCNpZmRlZiBTUEVDVUxBUlxuXHRcdHZlYzMgc3BlY3VsYXJJbnRlbnNpdHlGYWN0b3IgPSB2ZWMzKCBzcGVjdWxhckludGVuc2l0eSApO1xuXHRcdHZlYzMgc3BlY3VsYXJUaW50RmFjdG9yID0gc3BlY3VsYXJUaW50O1xuXHRcdCNpZmRlZiBVU0VfU1BFQ1VMQVJJTlRFTlNJVFlNQVBcblx0XHRcdHNwZWN1bGFySW50ZW5zaXR5RmFjdG9yICo9IHRleHR1cmUyRCggc3BlY3VsYXJJbnRlbnNpdHlNYXAsIHZVdiApLmE7XG5cdFx0I2VuZGlmXG5cdFx0I2lmZGVmIFVTRV9TUEVDVUxBUlRJTlRNQVBcblx0XHRcdHNwZWN1bGFyVGludEZhY3RvciAqPSBzcGVjdWxhclRpbnRNYXBUZXhlbFRvTGluZWFyKCB0ZXh0dXJlMkQoIHNwZWN1bGFyVGludE1hcCwgdlV2ICkgKS5yZ2I7XG5cdFx0I2VuZGlmXG5cdFx0bWF0ZXJpYWwuc3BlY3VsYXJDb2xvckY5MCA9IG1peCggc3BlY3VsYXJJbnRlbnNpdHlGYWN0b3IsIHZlYzMoIDEuMCApLCBtZXRhbG5lc3NGYWN0b3IgKTtcblx0I2Vsc2Vcblx0XHR2ZWMzIHNwZWN1bGFySW50ZW5zaXR5RmFjdG9yID0gdmVjMyggMS4wICk7XG5cdFx0dmVjMyBzcGVjdWxhclRpbnRGYWN0b3IgPSB2ZWMzKCAxLjAgKTtcblx0XHRtYXRlcmlhbC5zcGVjdWxhckNvbG9yRjkwID0gdmVjMyggMS4wICk7XG5cdCNlbmRpZlxuXHRtYXRlcmlhbC5zcGVjdWxhckNvbG9yID0gbWl4KCBtaW4oIHZlYzMoIE1BWElNVU1fU1BFQ1VMQVJfQ09FRkZJQ0lFTlQgKiBwb3cyKCByZWZsZWN0aXZpdHkgKSApICogc3BlY3VsYXJUaW50RmFjdG9yLCB2ZWMzKCAxLjAgKSApICogc3BlY3VsYXJJbnRlbnNpdHlGYWN0b3IsIGRpZmZ1c2VDb2xvci5yZ2IsIG1ldGFsbmVzc0ZhY3RvciApO1xuI2Vsc2Vcblx0bWF0ZXJpYWwuc3BlY3VsYXJDb2xvciA9IG1peCggdmVjMyggREVGQVVMVF9TUEVDVUxBUl9DT0VGRklDSUVOVCApLCBkaWZmdXNlQ29sb3IucmdiLCBtZXRhbG5lc3NGYWN0b3IgKTtcblx0bWF0ZXJpYWwuc3BlY3VsYXJDb2xvckY5MCA9IHZlYzMoIDEuMCApO1xuI2VuZGlmXG4jaWZkZWYgQ0xFQVJDT0FUXG5cdG1hdGVyaWFsLmNsZWFyY29hdCA9IGNsZWFyY29hdDtcblx0bWF0ZXJpYWwuY2xlYXJjb2F0Um91Z2huZXNzID0gY2xlYXJjb2F0Um91Z2huZXNzO1xuXHQjaWZkZWYgVVNFX0NMRUFSQ09BVE1BUFxuXHRcdG1hdGVyaWFsLmNsZWFyY29hdCAqPSB0ZXh0dXJlMkQoIGNsZWFyY29hdE1hcCwgdlV2ICkueDtcblx0I2VuZGlmXG5cdCNpZmRlZiBVU0VfQ0xFQVJDT0FUX1JPVUdITkVTU01BUFxuXHRcdG1hdGVyaWFsLmNsZWFyY29hdFJvdWdobmVzcyAqPSB0ZXh0dXJlMkQoIGNsZWFyY29hdFJvdWdobmVzc01hcCwgdlV2ICkueTtcblx0I2VuZGlmXG5cdG1hdGVyaWFsLmNsZWFyY29hdCA9IHNhdHVyYXRlKCBtYXRlcmlhbC5jbGVhcmNvYXQgKTtcdG1hdGVyaWFsLmNsZWFyY29hdFJvdWdobmVzcyA9IG1heCggbWF0ZXJpYWwuY2xlYXJjb2F0Um91Z2huZXNzLCAwLjA1MjUgKTtcblx0bWF0ZXJpYWwuY2xlYXJjb2F0Um91Z2huZXNzICs9IGdlb21ldHJ5Um91Z2huZXNzO1xuXHRtYXRlcmlhbC5jbGVhcmNvYXRSb3VnaG5lc3MgPSBtaW4oIG1hdGVyaWFsLmNsZWFyY29hdFJvdWdobmVzcywgMS4wICk7XG4jZW5kaWZcbiNpZmRlZiBVU0VfU0hFRU5cblx0bWF0ZXJpYWwuc2hlZW5Db2xvciA9IHNoZWVuO1xuI2VuZGlmIixsaWdodHNfcGh5c2ljYWxfcGFyc19mcmFnbWVudDoic3RydWN0IFBoeXNpY2FsTWF0ZXJpYWwge1xuXHR2ZWMzIGRpZmZ1c2VDb2xvcjtcblx0ZmxvYXQgc3BlY3VsYXJSb3VnaG5lc3M7XG5cdHZlYzMgc3BlY3VsYXJDb2xvcjtcblx0dmVjMyBzcGVjdWxhckNvbG9yRjkwO1xuI2lmZGVmIENMRUFSQ09BVFxuXHRmbG9hdCBjbGVhcmNvYXQ7XG5cdGZsb2F0IGNsZWFyY29hdFJvdWdobmVzcztcbiNlbmRpZlxuI2lmZGVmIFVTRV9TSEVFTlxuXHR2ZWMzIHNoZWVuQ29sb3I7XG4jZW5kaWZcbn07XG4jZGVmaW5lIE1BWElNVU1fU1BFQ1VMQVJfQ09FRkZJQ0lFTlQgMC4xNlxuI2RlZmluZSBERUZBVUxUX1NQRUNVTEFSX0NPRUZGSUNJRU5UIDAuMDRcbmZsb2F0IGNsZWFyY29hdERIUkFwcHJveCggY29uc3QgaW4gZmxvYXQgcm91Z2huZXNzLCBjb25zdCBpbiBmbG9hdCBkb3ROTCApIHtcblx0cmV0dXJuIERFRkFVTFRfU1BFQ1VMQVJfQ09FRkZJQ0lFTlQgKyAoIDEuMCAtIERFRkFVTFRfU1BFQ1VMQVJfQ09FRkZJQ0lFTlQgKSAqICggcG93KCAxLjAgLSBkb3ROTCwgNS4wICkgKiBwb3coIDEuMCAtIHJvdWdobmVzcywgMi4wICkgKTtcbn1cbiNpZiBOVU1fUkVDVF9BUkVBX0xJR0hUUyA+IDBcblx0dm9pZCBSRV9EaXJlY3RfUmVjdEFyZWFfUGh5c2ljYWwoIGNvbnN0IGluIFJlY3RBcmVhTGlnaHQgcmVjdEFyZWFMaWdodCwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgY29uc3QgaW4gUGh5c2ljYWxNYXRlcmlhbCBtYXRlcmlhbCwgaW5vdXQgUmVmbGVjdGVkTGlnaHQgcmVmbGVjdGVkTGlnaHQgKSB7XG5cdFx0dmVjMyBub3JtYWwgPSBnZW9tZXRyeS5ub3JtYWw7XG5cdFx0dmVjMyB2aWV3RGlyID0gZ2VvbWV0cnkudmlld0Rpcjtcblx0XHR2ZWMzIHBvc2l0aW9uID0gZ2VvbWV0cnkucG9zaXRpb247XG5cdFx0dmVjMyBsaWdodFBvcyA9IHJlY3RBcmVhTGlnaHQucG9zaXRpb247XG5cdFx0dmVjMyBoYWxmV2lkdGggPSByZWN0QXJlYUxpZ2h0LmhhbGZXaWR0aDtcblx0XHR2ZWMzIGhhbGZIZWlnaHQgPSByZWN0QXJlYUxpZ2h0LmhhbGZIZWlnaHQ7XG5cdFx0dmVjMyBsaWdodENvbG9yID0gcmVjdEFyZWFMaWdodC5jb2xvcjtcblx0XHRmbG9hdCByb3VnaG5lc3MgPSBtYXRlcmlhbC5zcGVjdWxhclJvdWdobmVzcztcblx0XHR2ZWMzIHJlY3RDb29yZHNbIDQgXTtcblx0XHRyZWN0Q29vcmRzWyAwIF0gPSBsaWdodFBvcyArIGhhbGZXaWR0aCAtIGhhbGZIZWlnaHQ7XHRcdHJlY3RDb29yZHNbIDEgXSA9IGxpZ2h0UG9zIC0gaGFsZldpZHRoIC0gaGFsZkhlaWdodDtcblx0XHRyZWN0Q29vcmRzWyAyIF0gPSBsaWdodFBvcyAtIGhhbGZXaWR0aCArIGhhbGZIZWlnaHQ7XG5cdFx0cmVjdENvb3Jkc1sgMyBdID0gbGlnaHRQb3MgKyBoYWxmV2lkdGggKyBoYWxmSGVpZ2h0O1xuXHRcdHZlYzIgdXYgPSBMVENfVXYoIG5vcm1hbCwgdmlld0Rpciwgcm91Z2huZXNzICk7XG5cdFx0dmVjNCB0MSA9IHRleHR1cmUyRCggbHRjXzEsIHV2ICk7XG5cdFx0dmVjNCB0MiA9IHRleHR1cmUyRCggbHRjXzIsIHV2ICk7XG5cdFx0bWF0MyBtSW52ID0gbWF0Myhcblx0XHRcdHZlYzMoIHQxLngsIDAsIHQxLnkgKSxcblx0XHRcdHZlYzMoICAgIDAsIDEsICAgIDAgKSxcblx0XHRcdHZlYzMoIHQxLnosIDAsIHQxLncgKVxuXHRcdCk7XG5cdFx0dmVjMyBmcmVzbmVsID0gKCBtYXRlcmlhbC5zcGVjdWxhckNvbG9yICogdDIueCArICggdmVjMyggMS4wICkgLSBtYXRlcmlhbC5zcGVjdWxhckNvbG9yICkgKiB0Mi55ICk7XG5cdFx0cmVmbGVjdGVkTGlnaHQuZGlyZWN0U3BlY3VsYXIgKz0gbGlnaHRDb2xvciAqIGZyZXNuZWwgKiBMVENfRXZhbHVhdGUoIG5vcm1hbCwgdmlld0RpciwgcG9zaXRpb24sIG1JbnYsIHJlY3RDb29yZHMgKTtcblx0XHRyZWZsZWN0ZWRMaWdodC5kaXJlY3REaWZmdXNlICs9IGxpZ2h0Q29sb3IgKiBtYXRlcmlhbC5kaWZmdXNlQ29sb3IgKiBMVENfRXZhbHVhdGUoIG5vcm1hbCwgdmlld0RpciwgcG9zaXRpb24sIG1hdDMoIDEuMCApLCByZWN0Q29vcmRzICk7XG5cdH1cbiNlbmRpZlxudm9pZCBSRV9EaXJlY3RfUGh5c2ljYWwoIGNvbnN0IGluIEluY2lkZW50TGlnaHQgZGlyZWN0TGlnaHQsIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnksIGNvbnN0IGluIFBoeXNpY2FsTWF0ZXJpYWwgbWF0ZXJpYWwsIGlub3V0IFJlZmxlY3RlZExpZ2h0IHJlZmxlY3RlZExpZ2h0ICkge1xuXHRmbG9hdCBkb3ROTCA9IHNhdHVyYXRlKCBkb3QoIGdlb21ldHJ5Lm5vcm1hbCwgZGlyZWN0TGlnaHQuZGlyZWN0aW9uICkgKTtcblx0dmVjMyBpcnJhZGlhbmNlID0gZG90TkwgKiBkaXJlY3RMaWdodC5jb2xvcjtcblx0I2lmbmRlZiBQSFlTSUNBTExZX0NPUlJFQ1RfTElHSFRTXG5cdFx0aXJyYWRpYW5jZSAqPSBQSTtcblx0I2VuZGlmXG5cdCNpZmRlZiBDTEVBUkNPQVRcblx0XHRmbG9hdCBjY0RvdE5MID0gc2F0dXJhdGUoIGRvdCggZ2VvbWV0cnkuY2xlYXJjb2F0Tm9ybWFsLCBkaXJlY3RMaWdodC5kaXJlY3Rpb24gKSApO1xuXHRcdHZlYzMgY2NJcnJhZGlhbmNlID0gY2NEb3ROTCAqIGRpcmVjdExpZ2h0LmNvbG9yO1xuXHRcdCNpZm5kZWYgUEhZU0lDQUxMWV9DT1JSRUNUX0xJR0hUU1xuXHRcdFx0Y2NJcnJhZGlhbmNlICo9IFBJO1xuXHRcdCNlbmRpZlxuXHRcdGZsb2F0IGNsZWFyY29hdERIUiA9IG1hdGVyaWFsLmNsZWFyY29hdCAqIGNsZWFyY29hdERIUkFwcHJveCggbWF0ZXJpYWwuY2xlYXJjb2F0Um91Z2huZXNzLCBjY0RvdE5MICk7XG5cdFx0cmVmbGVjdGVkTGlnaHQuZGlyZWN0U3BlY3VsYXIgKz0gY2NJcnJhZGlhbmNlICogbWF0ZXJpYWwuY2xlYXJjb2F0ICogQlJERl9TcGVjdWxhcl9HR1goIGRpcmVjdExpZ2h0LCBnZW9tZXRyeS52aWV3RGlyLCBnZW9tZXRyeS5jbGVhcmNvYXROb3JtYWwsIHZlYzMoIERFRkFVTFRfU1BFQ1VMQVJfQ09FRkZJQ0lFTlQgKSwgdmVjMyggMS4wICksIG1hdGVyaWFsLmNsZWFyY29hdFJvdWdobmVzcyApO1xuXHQjZWxzZVxuXHRcdGZsb2F0IGNsZWFyY29hdERIUiA9IDAuMDtcblx0I2VuZGlmXG5cdCNpZmRlZiBVU0VfU0hFRU5cblx0XHRyZWZsZWN0ZWRMaWdodC5kaXJlY3RTcGVjdWxhciArPSAoIDEuMCAtIGNsZWFyY29hdERIUiApICogaXJyYWRpYW5jZSAqIEJSREZfU3BlY3VsYXJfU2hlZW4oXG5cdFx0XHRtYXRlcmlhbC5zcGVjdWxhclJvdWdobmVzcyxcblx0XHRcdGRpcmVjdExpZ2h0LmRpcmVjdGlvbixcblx0XHRcdGdlb21ldHJ5LFxuXHRcdFx0bWF0ZXJpYWwuc2hlZW5Db2xvclxuXHRcdCk7XG5cdCNlbHNlXG5cdFx0cmVmbGVjdGVkTGlnaHQuZGlyZWN0U3BlY3VsYXIgKz0gKCAxLjAgLSBjbGVhcmNvYXRESFIgKSAqIGlycmFkaWFuY2UgKiBCUkRGX1NwZWN1bGFyX0dHWCggZGlyZWN0TGlnaHQsIGdlb21ldHJ5LnZpZXdEaXIsIGdlb21ldHJ5Lm5vcm1hbCwgbWF0ZXJpYWwuc3BlY3VsYXJDb2xvciwgbWF0ZXJpYWwuc3BlY3VsYXJDb2xvckY5MCwgbWF0ZXJpYWwuc3BlY3VsYXJSb3VnaG5lc3MpO1xuXHQjZW5kaWZcblx0cmVmbGVjdGVkTGlnaHQuZGlyZWN0RGlmZnVzZSArPSAoIDEuMCAtIGNsZWFyY29hdERIUiApICogaXJyYWRpYW5jZSAqIEJSREZfRGlmZnVzZV9MYW1iZXJ0KCBtYXRlcmlhbC5kaWZmdXNlQ29sb3IgKTtcbn1cbnZvaWQgUkVfSW5kaXJlY3REaWZmdXNlX1BoeXNpY2FsKCBjb25zdCBpbiB2ZWMzIGlycmFkaWFuY2UsIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnksIGNvbnN0IGluIFBoeXNpY2FsTWF0ZXJpYWwgbWF0ZXJpYWwsIGlub3V0IFJlZmxlY3RlZExpZ2h0IHJlZmxlY3RlZExpZ2h0ICkge1xuXHRyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKz0gaXJyYWRpYW5jZSAqIEJSREZfRGlmZnVzZV9MYW1iZXJ0KCBtYXRlcmlhbC5kaWZmdXNlQ29sb3IgKTtcbn1cbnZvaWQgUkVfSW5kaXJlY3RTcGVjdWxhcl9QaHlzaWNhbCggY29uc3QgaW4gdmVjMyByYWRpYW5jZSwgY29uc3QgaW4gdmVjMyBpcnJhZGlhbmNlLCBjb25zdCBpbiB2ZWMzIGNsZWFyY29hdFJhZGlhbmNlLCBjb25zdCBpbiBHZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5LCBjb25zdCBpbiBQaHlzaWNhbE1hdGVyaWFsIG1hdGVyaWFsLCBpbm91dCBSZWZsZWN0ZWRMaWdodCByZWZsZWN0ZWRMaWdodCkge1xuXHQjaWZkZWYgQ0xFQVJDT0FUXG5cdFx0ZmxvYXQgY2NEb3ROViA9IHNhdHVyYXRlKCBkb3QoIGdlb21ldHJ5LmNsZWFyY29hdE5vcm1hbCwgZ2VvbWV0cnkudmlld0RpciApICk7XG5cdFx0cmVmbGVjdGVkTGlnaHQuaW5kaXJlY3RTcGVjdWxhciArPSBjbGVhcmNvYXRSYWRpYW5jZSAqIG1hdGVyaWFsLmNsZWFyY29hdCAqIEJSREZfU3BlY3VsYXJfR0dYX0Vudmlyb25tZW50KCBnZW9tZXRyeS52aWV3RGlyLCBnZW9tZXRyeS5jbGVhcmNvYXROb3JtYWwsIHZlYzMoIERFRkFVTFRfU1BFQ1VMQVJfQ09FRkZJQ0lFTlQgKSwgbWF0ZXJpYWwuY2xlYXJjb2F0Um91Z2huZXNzICk7XG5cdFx0ZmxvYXQgY2NEb3ROTCA9IGNjRG90TlY7XG5cdFx0ZmxvYXQgY2xlYXJjb2F0REhSID0gbWF0ZXJpYWwuY2xlYXJjb2F0ICogY2xlYXJjb2F0REhSQXBwcm94KCBtYXRlcmlhbC5jbGVhcmNvYXRSb3VnaG5lc3MsIGNjRG90TkwgKTtcblx0I2Vsc2Vcblx0XHRmbG9hdCBjbGVhcmNvYXRESFIgPSAwLjA7XG5cdCNlbmRpZlxuXHRmbG9hdCBjbGVhcmNvYXRJbnYgPSAxLjAgLSBjbGVhcmNvYXRESFI7XG5cdHZlYzMgc2luZ2xlU2NhdHRlcmluZyA9IHZlYzMoIDAuMCApO1xuXHR2ZWMzIG11bHRpU2NhdHRlcmluZyA9IHZlYzMoIDAuMCApO1xuXHR2ZWMzIGNvc2luZVdlaWdodGVkSXJyYWRpYW5jZSA9IGlycmFkaWFuY2UgKiBSRUNJUFJPQ0FMX1BJO1xuXHRCUkRGX1NwZWN1bGFyX011bHRpc2NhdHRlcmluZ19FbnZpcm9ubWVudCggZ2VvbWV0cnksIG1hdGVyaWFsLnNwZWN1bGFyQ29sb3IsIG1hdGVyaWFsLnNwZWN1bGFyUm91Z2huZXNzLCBzaW5nbGVTY2F0dGVyaW5nLCBtdWx0aVNjYXR0ZXJpbmcgKTtcblx0dmVjMyBkaWZmdXNlID0gbWF0ZXJpYWwuZGlmZnVzZUNvbG9yICogKCAxLjAgLSAoIHNpbmdsZVNjYXR0ZXJpbmcgKyBtdWx0aVNjYXR0ZXJpbmcgKSApO1xuXHRyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdFNwZWN1bGFyICs9IGNsZWFyY29hdEludiAqIHJhZGlhbmNlICogc2luZ2xlU2NhdHRlcmluZztcblx0cmVmbGVjdGVkTGlnaHQuaW5kaXJlY3RTcGVjdWxhciArPSBtdWx0aVNjYXR0ZXJpbmcgKiBjb3NpbmVXZWlnaHRlZElycmFkaWFuY2U7XG5cdHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZSArPSBkaWZmdXNlICogY29zaW5lV2VpZ2h0ZWRJcnJhZGlhbmNlO1xufVxuI2RlZmluZSBSRV9EaXJlY3RcdFx0XHRcdFJFX0RpcmVjdF9QaHlzaWNhbFxuI2RlZmluZSBSRV9EaXJlY3RfUmVjdEFyZWFcdFx0UkVfRGlyZWN0X1JlY3RBcmVhX1BoeXNpY2FsXG4jZGVmaW5lIFJFX0luZGlyZWN0RGlmZnVzZVx0XHRSRV9JbmRpcmVjdERpZmZ1c2VfUGh5c2ljYWxcbiNkZWZpbmUgUkVfSW5kaXJlY3RTcGVjdWxhclx0XHRSRV9JbmRpcmVjdFNwZWN1bGFyX1BoeXNpY2FsXG5mbG9hdCBjb21wdXRlU3BlY3VsYXJPY2NsdXNpb24oIGNvbnN0IGluIGZsb2F0IGRvdE5WLCBjb25zdCBpbiBmbG9hdCBhbWJpZW50T2NjbHVzaW9uLCBjb25zdCBpbiBmbG9hdCByb3VnaG5lc3MgKSB7XG5cdHJldHVybiBzYXR1cmF0ZSggcG93KCBkb3ROViArIGFtYmllbnRPY2NsdXNpb24sIGV4cDIoIC0gMTYuMCAqIHJvdWdobmVzcyAtIDEuMCApICkgLSAxLjAgKyBhbWJpZW50T2NjbHVzaW9uICk7XG59IixsaWdodHNfZnJhZ21lbnRfYmVnaW46IlxuR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeTtcbmdlb21ldHJ5LnBvc2l0aW9uID0gLSB2Vmlld1Bvc2l0aW9uO1xuZ2VvbWV0cnkubm9ybWFsID0gbm9ybWFsO1xuZ2VvbWV0cnkudmlld0RpciA9ICggaXNPcnRob2dyYXBoaWMgKSA/IHZlYzMoIDAsIDAsIDEgKSA6IG5vcm1hbGl6ZSggdlZpZXdQb3NpdGlvbiApO1xuI2lmZGVmIENMRUFSQ09BVFxuXHRnZW9tZXRyeS5jbGVhcmNvYXROb3JtYWwgPSBjbGVhcmNvYXROb3JtYWw7XG4jZW5kaWZcbkluY2lkZW50TGlnaHQgZGlyZWN0TGlnaHQ7XG4jaWYgKCBOVU1fUE9JTlRfTElHSFRTID4gMCApICYmIGRlZmluZWQoIFJFX0RpcmVjdCApXG5cdFBvaW50TGlnaHQgcG9pbnRMaWdodDtcblx0I2lmIGRlZmluZWQoIFVTRV9TSEFET1dNQVAgKSAmJiBOVU1fUE9JTlRfTElHSFRfU0hBRE9XUyA+IDBcblx0UG9pbnRMaWdodFNoYWRvdyBwb2ludExpZ2h0U2hhZG93O1xuXHQjZW5kaWZcblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydFxuXHRmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fUE9JTlRfTElHSFRTOyBpICsrICkge1xuXHRcdHBvaW50TGlnaHQgPSBwb2ludExpZ2h0c1sgaSBdO1xuXHRcdGdldFBvaW50RGlyZWN0TGlnaHRJcnJhZGlhbmNlKCBwb2ludExpZ2h0LCBnZW9tZXRyeSwgZGlyZWN0TGlnaHQgKTtcblx0XHQjaWYgZGVmaW5lZCggVVNFX1NIQURPV01BUCApICYmICggVU5ST0xMRURfTE9PUF9JTkRFWCA8IE5VTV9QT0lOVF9MSUdIVF9TSEFET1dTIClcblx0XHRwb2ludExpZ2h0U2hhZG93ID0gcG9pbnRMaWdodFNoYWRvd3NbIGkgXTtcblx0XHRkaXJlY3RMaWdodC5jb2xvciAqPSBhbGwoIGJ2ZWMyKCBkaXJlY3RMaWdodC52aXNpYmxlLCByZWNlaXZlU2hhZG93ICkgKSA/IGdldFBvaW50U2hhZG93KCBwb2ludFNoYWRvd01hcFsgaSBdLCBwb2ludExpZ2h0U2hhZG93LnNoYWRvd01hcFNpemUsIHBvaW50TGlnaHRTaGFkb3cuc2hhZG93QmlhcywgcG9pbnRMaWdodFNoYWRvdy5zaGFkb3dSYWRpdXMsIHZQb2ludFNoYWRvd0Nvb3JkWyBpIF0sIHBvaW50TGlnaHRTaGFkb3cuc2hhZG93Q2FtZXJhTmVhciwgcG9pbnRMaWdodFNoYWRvdy5zaGFkb3dDYW1lcmFGYXIgKSA6IDEuMDtcblx0XHQjZW5kaWZcblx0XHRSRV9EaXJlY3QoIGRpcmVjdExpZ2h0LCBnZW9tZXRyeSwgbWF0ZXJpYWwsIHJlZmxlY3RlZExpZ2h0ICk7XG5cdH1cblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9lbmRcbiNlbmRpZlxuI2lmICggTlVNX1NQT1RfTElHSFRTID4gMCApICYmIGRlZmluZWQoIFJFX0RpcmVjdCApXG5cdFNwb3RMaWdodCBzcG90TGlnaHQ7XG5cdCNpZiBkZWZpbmVkKCBVU0VfU0hBRE9XTUFQICkgJiYgTlVNX1NQT1RfTElHSFRfU0hBRE9XUyA+IDBcblx0U3BvdExpZ2h0U2hhZG93IHNwb3RMaWdodFNoYWRvdztcblx0I2VuZGlmXG5cdCNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnRcblx0Zm9yICggaW50IGkgPSAwOyBpIDwgTlVNX1NQT1RfTElHSFRTOyBpICsrICkge1xuXHRcdHNwb3RMaWdodCA9IHNwb3RMaWdodHNbIGkgXTtcblx0XHRnZXRTcG90RGlyZWN0TGlnaHRJcnJhZGlhbmNlKCBzcG90TGlnaHQsIGdlb21ldHJ5LCBkaXJlY3RMaWdodCApO1xuXHRcdCNpZiBkZWZpbmVkKCBVU0VfU0hBRE9XTUFQICkgJiYgKCBVTlJPTExFRF9MT09QX0lOREVYIDwgTlVNX1NQT1RfTElHSFRfU0hBRE9XUyApXG5cdFx0c3BvdExpZ2h0U2hhZG93ID0gc3BvdExpZ2h0U2hhZG93c1sgaSBdO1xuXHRcdGRpcmVjdExpZ2h0LmNvbG9yICo9IGFsbCggYnZlYzIoIGRpcmVjdExpZ2h0LnZpc2libGUsIHJlY2VpdmVTaGFkb3cgKSApID8gZ2V0U2hhZG93KCBzcG90U2hhZG93TWFwWyBpIF0sIHNwb3RMaWdodFNoYWRvdy5zaGFkb3dNYXBTaXplLCBzcG90TGlnaHRTaGFkb3cuc2hhZG93Qmlhcywgc3BvdExpZ2h0U2hhZG93LnNoYWRvd1JhZGl1cywgdlNwb3RTaGFkb3dDb29yZFsgaSBdICkgOiAxLjA7XG5cdFx0I2VuZGlmXG5cdFx0UkVfRGlyZWN0KCBkaXJlY3RMaWdodCwgZ2VvbWV0cnksIG1hdGVyaWFsLCByZWZsZWN0ZWRMaWdodCApO1xuXHR9XG5cdCNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kXG4jZW5kaWZcbiNpZiAoIE5VTV9ESVJfTElHSFRTID4gMCApICYmIGRlZmluZWQoIFJFX0RpcmVjdCApXG5cdERpcmVjdGlvbmFsTGlnaHQgZGlyZWN0aW9uYWxMaWdodDtcblx0I2lmIGRlZmluZWQoIFVTRV9TSEFET1dNQVAgKSAmJiBOVU1fRElSX0xJR0hUX1NIQURPV1MgPiAwXG5cdERpcmVjdGlvbmFsTGlnaHRTaGFkb3cgZGlyZWN0aW9uYWxMaWdodFNoYWRvdztcblx0I2VuZGlmXG5cdCNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnRcblx0Zm9yICggaW50IGkgPSAwOyBpIDwgTlVNX0RJUl9MSUdIVFM7IGkgKysgKSB7XG5cdFx0ZGlyZWN0aW9uYWxMaWdodCA9IGRpcmVjdGlvbmFsTGlnaHRzWyBpIF07XG5cdFx0Z2V0RGlyZWN0aW9uYWxEaXJlY3RMaWdodElycmFkaWFuY2UoIGRpcmVjdGlvbmFsTGlnaHQsIGdlb21ldHJ5LCBkaXJlY3RMaWdodCApO1xuXHRcdCNpZiBkZWZpbmVkKCBVU0VfU0hBRE9XTUFQICkgJiYgKCBVTlJPTExFRF9MT09QX0lOREVYIDwgTlVNX0RJUl9MSUdIVF9TSEFET1dTIClcblx0XHRkaXJlY3Rpb25hbExpZ2h0U2hhZG93ID0gZGlyZWN0aW9uYWxMaWdodFNoYWRvd3NbIGkgXTtcblx0XHRkaXJlY3RMaWdodC5jb2xvciAqPSBhbGwoIGJ2ZWMyKCBkaXJlY3RMaWdodC52aXNpYmxlLCByZWNlaXZlU2hhZG93ICkgKSA/IGdldFNoYWRvdyggZGlyZWN0aW9uYWxTaGFkb3dNYXBbIGkgXSwgZGlyZWN0aW9uYWxMaWdodFNoYWRvdy5zaGFkb3dNYXBTaXplLCBkaXJlY3Rpb25hbExpZ2h0U2hhZG93LnNoYWRvd0JpYXMsIGRpcmVjdGlvbmFsTGlnaHRTaGFkb3cuc2hhZG93UmFkaXVzLCB2RGlyZWN0aW9uYWxTaGFkb3dDb29yZFsgaSBdICkgOiAxLjA7XG5cdFx0I2VuZGlmXG5cdFx0UkVfRGlyZWN0KCBkaXJlY3RMaWdodCwgZ2VvbWV0cnksIG1hdGVyaWFsLCByZWZsZWN0ZWRMaWdodCApO1xuXHR9XG5cdCNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kXG4jZW5kaWZcbiNpZiAoIE5VTV9SRUNUX0FSRUFfTElHSFRTID4gMCApICYmIGRlZmluZWQoIFJFX0RpcmVjdF9SZWN0QXJlYSApXG5cdFJlY3RBcmVhTGlnaHQgcmVjdEFyZWFMaWdodDtcblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydFxuXHRmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fUkVDVF9BUkVBX0xJR0hUUzsgaSArKyApIHtcblx0XHRyZWN0QXJlYUxpZ2h0ID0gcmVjdEFyZWFMaWdodHNbIGkgXTtcblx0XHRSRV9EaXJlY3RfUmVjdEFyZWEoIHJlY3RBcmVhTGlnaHQsIGdlb21ldHJ5LCBtYXRlcmlhbCwgcmVmbGVjdGVkTGlnaHQgKTtcblx0fVxuXHQjcHJhZ21hIHVucm9sbF9sb29wX2VuZFxuI2VuZGlmXG4jaWYgZGVmaW5lZCggUkVfSW5kaXJlY3REaWZmdXNlIClcblx0dmVjMyBpYmxJcnJhZGlhbmNlID0gdmVjMyggMC4wICk7XG5cdHZlYzMgaXJyYWRpYW5jZSA9IGdldEFtYmllbnRMaWdodElycmFkaWFuY2UoIGFtYmllbnRMaWdodENvbG9yICk7XG5cdGlycmFkaWFuY2UgKz0gZ2V0TGlnaHRQcm9iZUlycmFkaWFuY2UoIGxpZ2h0UHJvYmUsIGdlb21ldHJ5ICk7XG5cdCNpZiAoIE5VTV9IRU1JX0xJR0hUUyA+IDAgKVxuXHRcdCNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnRcblx0XHRmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fSEVNSV9MSUdIVFM7IGkgKysgKSB7XG5cdFx0XHRpcnJhZGlhbmNlICs9IGdldEhlbWlzcGhlcmVMaWdodElycmFkaWFuY2UoIGhlbWlzcGhlcmVMaWdodHNbIGkgXSwgZ2VvbWV0cnkgKTtcblx0XHR9XG5cdFx0I3ByYWdtYSB1bnJvbGxfbG9vcF9lbmRcblx0I2VuZGlmXG4jZW5kaWZcbiNpZiBkZWZpbmVkKCBSRV9JbmRpcmVjdFNwZWN1bGFyIClcblx0dmVjMyByYWRpYW5jZSA9IHZlYzMoIDAuMCApO1xuXHR2ZWMzIGNsZWFyY29hdFJhZGlhbmNlID0gdmVjMyggMC4wICk7XG4jZW5kaWYiLGxpZ2h0c19mcmFnbWVudF9tYXBzOiIjaWYgZGVmaW5lZCggUkVfSW5kaXJlY3REaWZmdXNlIClcblx0I2lmZGVmIFVTRV9MSUdIVE1BUFxuXHRcdHZlYzQgbGlnaHRNYXBUZXhlbD0gdGV4dHVyZTJEKCBsaWdodE1hcCwgdlV2MiApO1xuXHRcdHZlYzMgbGlnaHRNYXBJcnJhZGlhbmNlID0gbGlnaHRNYXBUZXhlbFRvTGluZWFyKCBsaWdodE1hcFRleGVsICkucmdiICogbGlnaHRNYXBJbnRlbnNpdHk7XG5cdFx0I2lmbmRlZiBQSFlTSUNBTExZX0NPUlJFQ1RfTElHSFRTXG5cdFx0XHRsaWdodE1hcElycmFkaWFuY2UgKj0gUEk7XG5cdFx0I2VuZGlmXG5cdFx0aXJyYWRpYW5jZSArPSBsaWdodE1hcElycmFkaWFuY2U7XG5cdCNlbmRpZlxuXHQjaWYgZGVmaW5lZCggVVNFX0VOVk1BUCApICYmIGRlZmluZWQoIFNUQU5EQVJEICkgJiYgZGVmaW5lZCggRU5WTUFQX1RZUEVfQ1VCRV9VViApXG5cdFx0aWJsSXJyYWRpYW5jZSArPSBnZXRMaWdodFByb2JlSW5kaXJlY3RJcnJhZGlhbmNlKCBnZW9tZXRyeSwgbWF4TWlwTGV2ZWwgKTtcblx0I2VuZGlmXG4jZW5kaWZcbiNpZiBkZWZpbmVkKCBVU0VfRU5WTUFQICkgJiYgZGVmaW5lZCggUkVfSW5kaXJlY3RTcGVjdWxhciApXG5cdHJhZGlhbmNlICs9IGdldExpZ2h0UHJvYmVJbmRpcmVjdFJhZGlhbmNlKCBnZW9tZXRyeS52aWV3RGlyLCBnZW9tZXRyeS5ub3JtYWwsIG1hdGVyaWFsLnNwZWN1bGFyUm91Z2huZXNzLCBtYXhNaXBMZXZlbCApO1xuXHQjaWZkZWYgQ0xFQVJDT0FUXG5cdFx0Y2xlYXJjb2F0UmFkaWFuY2UgKz0gZ2V0TGlnaHRQcm9iZUluZGlyZWN0UmFkaWFuY2UoIGdlb21ldHJ5LnZpZXdEaXIsIGdlb21ldHJ5LmNsZWFyY29hdE5vcm1hbCwgbWF0ZXJpYWwuY2xlYXJjb2F0Um91Z2huZXNzLCBtYXhNaXBMZXZlbCApO1xuXHQjZW5kaWZcbiNlbmRpZiIsbGlnaHRzX2ZyYWdtZW50X2VuZDoiI2lmIGRlZmluZWQoIFJFX0luZGlyZWN0RGlmZnVzZSApXG5cdFJFX0luZGlyZWN0RGlmZnVzZSggaXJyYWRpYW5jZSwgZ2VvbWV0cnksIG1hdGVyaWFsLCByZWZsZWN0ZWRMaWdodCApO1xuI2VuZGlmXG4jaWYgZGVmaW5lZCggUkVfSW5kaXJlY3RTcGVjdWxhciApXG5cdFJFX0luZGlyZWN0U3BlY3VsYXIoIHJhZGlhbmNlLCBpYmxJcnJhZGlhbmNlLCBjbGVhcmNvYXRSYWRpYW5jZSwgZ2VvbWV0cnksIG1hdGVyaWFsLCByZWZsZWN0ZWRMaWdodCApO1xuI2VuZGlmIixsb2dkZXB0aGJ1Zl9mcmFnbWVudDoiI2lmIGRlZmluZWQoIFVTRV9MT0dERVBUSEJVRiApICYmIGRlZmluZWQoIFVTRV9MT0dERVBUSEJVRl9FWFQgKVxuXHRnbF9GcmFnRGVwdGhFWFQgPSB2SXNQZXJzcGVjdGl2ZSA9PSAwLjAgPyBnbF9GcmFnQ29vcmQueiA6IGxvZzIoIHZGcmFnRGVwdGggKSAqIGxvZ0RlcHRoQnVmRkMgKiAwLjU7XG4jZW5kaWYiLGxvZ2RlcHRoYnVmX3BhcnNfZnJhZ21lbnQ6IiNpZiBkZWZpbmVkKCBVU0VfTE9HREVQVEhCVUYgKSAmJiBkZWZpbmVkKCBVU0VfTE9HREVQVEhCVUZfRVhUIClcblx0dW5pZm9ybSBmbG9hdCBsb2dEZXB0aEJ1ZkZDO1xuXHR2YXJ5aW5nIGZsb2F0IHZGcmFnRGVwdGg7XG5cdHZhcnlpbmcgZmxvYXQgdklzUGVyc3BlY3RpdmU7XG4jZW5kaWYiLGxvZ2RlcHRoYnVmX3BhcnNfdmVydGV4OiIjaWZkZWYgVVNFX0xPR0RFUFRIQlVGXG5cdCNpZmRlZiBVU0VfTE9HREVQVEhCVUZfRVhUXG5cdFx0dmFyeWluZyBmbG9hdCB2RnJhZ0RlcHRoO1xuXHRcdHZhcnlpbmcgZmxvYXQgdklzUGVyc3BlY3RpdmU7XG5cdCNlbHNlXG5cdFx0dW5pZm9ybSBmbG9hdCBsb2dEZXB0aEJ1ZkZDO1xuXHQjZW5kaWZcbiNlbmRpZiIsbG9nZGVwdGhidWZfdmVydGV4OiIjaWZkZWYgVVNFX0xPR0RFUFRIQlVGXG5cdCNpZmRlZiBVU0VfTE9HREVQVEhCVUZfRVhUXG5cdFx0dkZyYWdEZXB0aCA9IDEuMCArIGdsX1Bvc2l0aW9uLnc7XG5cdFx0dklzUGVyc3BlY3RpdmUgPSBmbG9hdCggaXNQZXJzcGVjdGl2ZU1hdHJpeCggcHJvamVjdGlvbk1hdHJpeCApICk7XG5cdCNlbHNlXG5cdFx0aWYgKCBpc1BlcnNwZWN0aXZlTWF0cml4KCBwcm9qZWN0aW9uTWF0cml4ICkgKSB7XG5cdFx0XHRnbF9Qb3NpdGlvbi56ID0gbG9nMiggbWF4KCBFUFNJTE9OLCBnbF9Qb3NpdGlvbi53ICsgMS4wICkgKSAqIGxvZ0RlcHRoQnVmRkMgLSAxLjA7XG5cdFx0XHRnbF9Qb3NpdGlvbi56ICo9IGdsX1Bvc2l0aW9uLnc7XG5cdFx0fVxuXHQjZW5kaWZcbiNlbmRpZiIsbWFwX2ZyYWdtZW50OiIjaWZkZWYgVVNFX01BUFxuXHR2ZWM0IHRleGVsQ29sb3IgPSB0ZXh0dXJlMkQoIG1hcCwgdlV2ICk7XG5cdHRleGVsQ29sb3IgPSBtYXBUZXhlbFRvTGluZWFyKCB0ZXhlbENvbG9yICk7XG5cdGRpZmZ1c2VDb2xvciAqPSB0ZXhlbENvbG9yO1xuI2VuZGlmIixtYXBfcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9NQVBcblx0dW5pZm9ybSBzYW1wbGVyMkQgbWFwO1xuI2VuZGlmIixtYXBfcGFydGljbGVfZnJhZ21lbnQ6IiNpZiBkZWZpbmVkKCBVU0VfTUFQICkgfHwgZGVmaW5lZCggVVNFX0FMUEhBTUFQIClcblx0dmVjMiB1diA9ICggdXZUcmFuc2Zvcm0gKiB2ZWMzKCBnbF9Qb2ludENvb3JkLngsIDEuMCAtIGdsX1BvaW50Q29vcmQueSwgMSApICkueHk7XG4jZW5kaWZcbiNpZmRlZiBVU0VfTUFQXG5cdHZlYzQgbWFwVGV4ZWwgPSB0ZXh0dXJlMkQoIG1hcCwgdXYgKTtcblx0ZGlmZnVzZUNvbG9yICo9IG1hcFRleGVsVG9MaW5lYXIoIG1hcFRleGVsICk7XG4jZW5kaWZcbiNpZmRlZiBVU0VfQUxQSEFNQVBcblx0ZGlmZnVzZUNvbG9yLmEgKj0gdGV4dHVyZTJEKCBhbHBoYU1hcCwgdXYgKS5nO1xuI2VuZGlmIixtYXBfcGFydGljbGVfcGFyc19mcmFnbWVudDoiI2lmIGRlZmluZWQoIFVTRV9NQVAgKSB8fCBkZWZpbmVkKCBVU0VfQUxQSEFNQVAgKVxuXHR1bmlmb3JtIG1hdDMgdXZUcmFuc2Zvcm07XG4jZW5kaWZcbiNpZmRlZiBVU0VfTUFQXG5cdHVuaWZvcm0gc2FtcGxlcjJEIG1hcDtcbiNlbmRpZlxuI2lmZGVmIFVTRV9BTFBIQU1BUFxuXHR1bmlmb3JtIHNhbXBsZXIyRCBhbHBoYU1hcDtcbiNlbmRpZiIsbWV0YWxuZXNzbWFwX2ZyYWdtZW50OiJmbG9hdCBtZXRhbG5lc3NGYWN0b3IgPSBtZXRhbG5lc3M7XG4jaWZkZWYgVVNFX01FVEFMTkVTU01BUFxuXHR2ZWM0IHRleGVsTWV0YWxuZXNzID0gdGV4dHVyZTJEKCBtZXRhbG5lc3NNYXAsIHZVdiApO1xuXHRtZXRhbG5lc3NGYWN0b3IgKj0gdGV4ZWxNZXRhbG5lc3MuYjtcbiNlbmRpZiIsbWV0YWxuZXNzbWFwX3BhcnNfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfTUVUQUxORVNTTUFQXG5cdHVuaWZvcm0gc2FtcGxlcjJEIG1ldGFsbmVzc01hcDtcbiNlbmRpZiIsbW9ycGhub3JtYWxfdmVydGV4OiIjaWZkZWYgVVNFX01PUlBITk9STUFMU1xuXHRvYmplY3ROb3JtYWwgKj0gbW9ycGhUYXJnZXRCYXNlSW5mbHVlbmNlO1xuXHRvYmplY3ROb3JtYWwgKz0gbW9ycGhOb3JtYWwwICogbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyAwIF07XG5cdG9iamVjdE5vcm1hbCArPSBtb3JwaE5vcm1hbDEgKiBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDEgXTtcblx0b2JqZWN0Tm9ybWFsICs9IG1vcnBoTm9ybWFsMiAqIG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgMiBdO1xuXHRvYmplY3ROb3JtYWwgKz0gbW9ycGhOb3JtYWwzICogbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyAzIF07XG4jZW5kaWYiLG1vcnBodGFyZ2V0X3BhcnNfdmVydGV4OiIjaWZkZWYgVVNFX01PUlBIVEFSR0VUU1xuXHR1bmlmb3JtIGZsb2F0IG1vcnBoVGFyZ2V0QmFzZUluZmx1ZW5jZTtcblx0I2lmbmRlZiBVU0VfTU9SUEhOT1JNQUxTXG5cdFx0dW5pZm9ybSBmbG9hdCBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDggXTtcblx0I2Vsc2Vcblx0XHR1bmlmb3JtIGZsb2F0IG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgNCBdO1xuXHQjZW5kaWZcbiNlbmRpZiIsbW9ycGh0YXJnZXRfdmVydGV4OiIjaWZkZWYgVVNFX01PUlBIVEFSR0VUU1xuXHR0cmFuc2Zvcm1lZCAqPSBtb3JwaFRhcmdldEJhc2VJbmZsdWVuY2U7XG5cdHRyYW5zZm9ybWVkICs9IG1vcnBoVGFyZ2V0MCAqIG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgMCBdO1xuXHR0cmFuc2Zvcm1lZCArPSBtb3JwaFRhcmdldDEgKiBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDEgXTtcblx0dHJhbnNmb3JtZWQgKz0gbW9ycGhUYXJnZXQyICogbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyAyIF07XG5cdHRyYW5zZm9ybWVkICs9IG1vcnBoVGFyZ2V0MyAqIG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgMyBdO1xuXHQjaWZuZGVmIFVTRV9NT1JQSE5PUk1BTFNcblx0XHR0cmFuc2Zvcm1lZCArPSBtb3JwaFRhcmdldDQgKiBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDQgXTtcblx0XHR0cmFuc2Zvcm1lZCArPSBtb3JwaFRhcmdldDUgKiBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDUgXTtcblx0XHR0cmFuc2Zvcm1lZCArPSBtb3JwaFRhcmdldDYgKiBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDYgXTtcblx0XHR0cmFuc2Zvcm1lZCArPSBtb3JwaFRhcmdldDcgKiBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDcgXTtcblx0I2VuZGlmXG4jZW5kaWYiLG5vcm1hbF9mcmFnbWVudF9iZWdpbjoiZmxvYXQgZmFjZURpcmVjdGlvbiA9IGdsX0Zyb250RmFjaW5nID8gMS4wIDogLSAxLjA7XG4jaWZkZWYgRkxBVF9TSEFERURcblx0dmVjMyBmZHggPSB2ZWMzKCBkRmR4KCB2Vmlld1Bvc2l0aW9uLnggKSwgZEZkeCggdlZpZXdQb3NpdGlvbi55ICksIGRGZHgoIHZWaWV3UG9zaXRpb24ueiApICk7XG5cdHZlYzMgZmR5ID0gdmVjMyggZEZkeSggdlZpZXdQb3NpdGlvbi54ICksIGRGZHkoIHZWaWV3UG9zaXRpb24ueSApLCBkRmR5KCB2Vmlld1Bvc2l0aW9uLnogKSApO1xuXHR2ZWMzIG5vcm1hbCA9IG5vcm1hbGl6ZSggY3Jvc3MoIGZkeCwgZmR5ICkgKTtcbiNlbHNlXG5cdHZlYzMgbm9ybWFsID0gbm9ybWFsaXplKCB2Tm9ybWFsICk7XG5cdCNpZmRlZiBET1VCTEVfU0lERURcblx0XHRub3JtYWwgPSBub3JtYWwgKiBmYWNlRGlyZWN0aW9uO1xuXHQjZW5kaWZcblx0I2lmZGVmIFVTRV9UQU5HRU5UXG5cdFx0dmVjMyB0YW5nZW50ID0gbm9ybWFsaXplKCB2VGFuZ2VudCApO1xuXHRcdHZlYzMgYml0YW5nZW50ID0gbm9ybWFsaXplKCB2Qml0YW5nZW50ICk7XG5cdFx0I2lmZGVmIERPVUJMRV9TSURFRFxuXHRcdFx0dGFuZ2VudCA9IHRhbmdlbnQgKiBmYWNlRGlyZWN0aW9uO1xuXHRcdFx0Yml0YW5nZW50ID0gYml0YW5nZW50ICogZmFjZURpcmVjdGlvbjtcblx0XHQjZW5kaWZcblx0XHQjaWYgZGVmaW5lZCggVEFOR0VOVFNQQUNFX05PUk1BTE1BUCApIHx8IGRlZmluZWQoIFVTRV9DTEVBUkNPQVRfTk9STUFMTUFQIClcblx0XHRcdG1hdDMgdlRCTiA9IG1hdDMoIHRhbmdlbnQsIGJpdGFuZ2VudCwgbm9ybWFsICk7XG5cdFx0I2VuZGlmXG5cdCNlbmRpZlxuI2VuZGlmXG52ZWMzIGdlb21ldHJ5Tm9ybWFsID0gbm9ybWFsOyIsbm9ybWFsX2ZyYWdtZW50X21hcHM6IiNpZmRlZiBPQkpFQ1RTUEFDRV9OT1JNQUxNQVBcblx0bm9ybWFsID0gdGV4dHVyZTJEKCBub3JtYWxNYXAsIHZVdiApLnh5eiAqIDIuMCAtIDEuMDtcblx0I2lmZGVmIEZMSVBfU0lERURcblx0XHRub3JtYWwgPSAtIG5vcm1hbDtcblx0I2VuZGlmXG5cdCNpZmRlZiBET1VCTEVfU0lERURcblx0XHRub3JtYWwgPSBub3JtYWwgKiBmYWNlRGlyZWN0aW9uO1xuXHQjZW5kaWZcblx0bm9ybWFsID0gbm9ybWFsaXplKCBub3JtYWxNYXRyaXggKiBub3JtYWwgKTtcbiNlbGlmIGRlZmluZWQoIFRBTkdFTlRTUEFDRV9OT1JNQUxNQVAgKVxuXHR2ZWMzIG1hcE4gPSB0ZXh0dXJlMkQoIG5vcm1hbE1hcCwgdlV2ICkueHl6ICogMi4wIC0gMS4wO1xuXHRtYXBOLnh5ICo9IG5vcm1hbFNjYWxlO1xuXHQjaWZkZWYgVVNFX1RBTkdFTlRcblx0XHRub3JtYWwgPSBub3JtYWxpemUoIHZUQk4gKiBtYXBOICk7XG5cdCNlbHNlXG5cdFx0bm9ybWFsID0gcGVydHVyYk5vcm1hbDJBcmIoIC12Vmlld1Bvc2l0aW9uLCBub3JtYWwsIG1hcE4sIGZhY2VEaXJlY3Rpb24gKTtcblx0I2VuZGlmXG4jZWxpZiBkZWZpbmVkKCBVU0VfQlVNUE1BUCApXG5cdG5vcm1hbCA9IHBlcnR1cmJOb3JtYWxBcmIoIC12Vmlld1Bvc2l0aW9uLCBub3JtYWwsIGRIZHh5X2Z3ZCgpLCBmYWNlRGlyZWN0aW9uICk7XG4jZW5kaWYiLG5vcm1hbG1hcF9wYXJzX2ZyYWdtZW50OiIjaWZkZWYgVVNFX05PUk1BTE1BUFxuXHR1bmlmb3JtIHNhbXBsZXIyRCBub3JtYWxNYXA7XG5cdHVuaWZvcm0gdmVjMiBub3JtYWxTY2FsZTtcbiNlbmRpZlxuI2lmZGVmIE9CSkVDVFNQQUNFX05PUk1BTE1BUFxuXHR1bmlmb3JtIG1hdDMgbm9ybWFsTWF0cml4O1xuI2VuZGlmXG4jaWYgISBkZWZpbmVkICggVVNFX1RBTkdFTlQgKSAmJiAoIGRlZmluZWQgKCBUQU5HRU5UU1BBQ0VfTk9STUFMTUFQICkgfHwgZGVmaW5lZCAoIFVTRV9DTEVBUkNPQVRfTk9STUFMTUFQICkgKVxuXHR2ZWMzIHBlcnR1cmJOb3JtYWwyQXJiKCB2ZWMzIGV5ZV9wb3MsIHZlYzMgc3VyZl9ub3JtLCB2ZWMzIG1hcE4sIGZsb2F0IGZhY2VEaXJlY3Rpb24gKSB7XG5cdFx0dmVjMyBxMCA9IHZlYzMoIGRGZHgoIGV5ZV9wb3MueCApLCBkRmR4KCBleWVfcG9zLnkgKSwgZEZkeCggZXllX3Bvcy56ICkgKTtcblx0XHR2ZWMzIHExID0gdmVjMyggZEZkeSggZXllX3Bvcy54ICksIGRGZHkoIGV5ZV9wb3MueSApLCBkRmR5KCBleWVfcG9zLnogKSApO1xuXHRcdHZlYzIgc3QwID0gZEZkeCggdlV2LnN0ICk7XG5cdFx0dmVjMiBzdDEgPSBkRmR5KCB2VXYuc3QgKTtcblx0XHR2ZWMzIE4gPSBzdXJmX25vcm07XG5cdFx0dmVjMyBxMXBlcnAgPSBjcm9zcyggcTEsIE4gKTtcblx0XHR2ZWMzIHEwcGVycCA9IGNyb3NzKCBOLCBxMCApO1xuXHRcdHZlYzMgVCA9IHExcGVycCAqIHN0MC54ICsgcTBwZXJwICogc3QxLng7XG5cdFx0dmVjMyBCID0gcTFwZXJwICogc3QwLnkgKyBxMHBlcnAgKiBzdDEueTtcblx0XHRmbG9hdCBkZXQgPSBtYXgoIGRvdCggVCwgVCApLCBkb3QoIEIsIEIgKSApO1xuXHRcdGZsb2F0IHNjYWxlID0gKCBkZXQgPT0gMC4wICkgPyAwLjAgOiBmYWNlRGlyZWN0aW9uICogaW52ZXJzZXNxcnQoIGRldCApO1xuXHRcdHJldHVybiBub3JtYWxpemUoIFQgKiAoIG1hcE4ueCAqIHNjYWxlICkgKyBCICogKCBtYXBOLnkgKiBzY2FsZSApICsgTiAqIG1hcE4ueiApO1xuXHR9XG4jZW5kaWYiLGNsZWFyY29hdF9ub3JtYWxfZnJhZ21lbnRfYmVnaW46IiNpZmRlZiBDTEVBUkNPQVRcblx0dmVjMyBjbGVhcmNvYXROb3JtYWwgPSBnZW9tZXRyeU5vcm1hbDtcbiNlbmRpZiIsY2xlYXJjb2F0X25vcm1hbF9mcmFnbWVudF9tYXBzOiIjaWZkZWYgVVNFX0NMRUFSQ09BVF9OT1JNQUxNQVBcblx0dmVjMyBjbGVhcmNvYXRNYXBOID0gdGV4dHVyZTJEKCBjbGVhcmNvYXROb3JtYWxNYXAsIHZVdiApLnh5eiAqIDIuMCAtIDEuMDtcblx0Y2xlYXJjb2F0TWFwTi54eSAqPSBjbGVhcmNvYXROb3JtYWxTY2FsZTtcblx0I2lmZGVmIFVTRV9UQU5HRU5UXG5cdFx0Y2xlYXJjb2F0Tm9ybWFsID0gbm9ybWFsaXplKCB2VEJOICogY2xlYXJjb2F0TWFwTiApO1xuXHQjZWxzZVxuXHRcdGNsZWFyY29hdE5vcm1hbCA9IHBlcnR1cmJOb3JtYWwyQXJiKCAtIHZWaWV3UG9zaXRpb24sIGNsZWFyY29hdE5vcm1hbCwgY2xlYXJjb2F0TWFwTiwgZmFjZURpcmVjdGlvbiApO1xuXHQjZW5kaWZcbiNlbmRpZiIsY2xlYXJjb2F0X3BhcnNfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfQ0xFQVJDT0FUTUFQXG5cdHVuaWZvcm0gc2FtcGxlcjJEIGNsZWFyY29hdE1hcDtcbiNlbmRpZlxuI2lmZGVmIFVTRV9DTEVBUkNPQVRfUk9VR0hORVNTTUFQXG5cdHVuaWZvcm0gc2FtcGxlcjJEIGNsZWFyY29hdFJvdWdobmVzc01hcDtcbiNlbmRpZlxuI2lmZGVmIFVTRV9DTEVBUkNPQVRfTk9STUFMTUFQXG5cdHVuaWZvcm0gc2FtcGxlcjJEIGNsZWFyY29hdE5vcm1hbE1hcDtcblx0dW5pZm9ybSB2ZWMyIGNsZWFyY29hdE5vcm1hbFNjYWxlO1xuI2VuZGlmIixwYWNraW5nOiJ2ZWMzIHBhY2tOb3JtYWxUb1JHQiggY29uc3QgaW4gdmVjMyBub3JtYWwgKSB7XG5cdHJldHVybiBub3JtYWxpemUoIG5vcm1hbCApICogMC41ICsgMC41O1xufVxudmVjMyB1bnBhY2tSR0JUb05vcm1hbCggY29uc3QgaW4gdmVjMyByZ2IgKSB7XG5cdHJldHVybiAyLjAgKiByZ2IueHl6IC0gMS4wO1xufVxuY29uc3QgZmxvYXQgUGFja1Vwc2NhbGUgPSAyNTYuIC8gMjU1Ljtjb25zdCBmbG9hdCBVbnBhY2tEb3duc2NhbGUgPSAyNTUuIC8gMjU2LjtcbmNvbnN0IHZlYzMgUGFja0ZhY3RvcnMgPSB2ZWMzKCAyNTYuICogMjU2LiAqIDI1Ni4sIDI1Ni4gKiAyNTYuLCAyNTYuICk7XG5jb25zdCB2ZWM0IFVucGFja0ZhY3RvcnMgPSBVbnBhY2tEb3duc2NhbGUgLyB2ZWM0KCBQYWNrRmFjdG9ycywgMS4gKTtcbmNvbnN0IGZsb2F0IFNoaWZ0UmlnaHQ4ID0gMS4gLyAyNTYuO1xudmVjNCBwYWNrRGVwdGhUb1JHQkEoIGNvbnN0IGluIGZsb2F0IHYgKSB7XG5cdHZlYzQgciA9IHZlYzQoIGZyYWN0KCB2ICogUGFja0ZhY3RvcnMgKSwgdiApO1xuXHRyLnl6dyAtPSByLnh5eiAqIFNoaWZ0UmlnaHQ4O1x0cmV0dXJuIHIgKiBQYWNrVXBzY2FsZTtcbn1cbmZsb2F0IHVucGFja1JHQkFUb0RlcHRoKCBjb25zdCBpbiB2ZWM0IHYgKSB7XG5cdHJldHVybiBkb3QoIHYsIFVucGFja0ZhY3RvcnMgKTtcbn1cbnZlYzQgcGFjazJIYWxmVG9SR0JBKCB2ZWMyIHYgKSB7XG5cdHZlYzQgciA9IHZlYzQoIHYueCwgZnJhY3QoIHYueCAqIDI1NS4wICksIHYueSwgZnJhY3QoIHYueSAqIDI1NS4wICkpO1xuXHRyZXR1cm4gdmVjNCggci54IC0gci55IC8gMjU1LjAsIHIueSwgci56IC0gci53IC8gMjU1LjAsIHIudyk7XG59XG52ZWMyIHVucGFja1JHQkFUbzJIYWxmKCB2ZWM0IHYgKSB7XG5cdHJldHVybiB2ZWMyKCB2LnggKyAoIHYueSAvIDI1NS4wICksIHYueiArICggdi53IC8gMjU1LjAgKSApO1xufVxuZmxvYXQgdmlld1pUb09ydGhvZ3JhcGhpY0RlcHRoKCBjb25zdCBpbiBmbG9hdCB2aWV3WiwgY29uc3QgaW4gZmxvYXQgbmVhciwgY29uc3QgaW4gZmxvYXQgZmFyICkge1xuXHRyZXR1cm4gKCB2aWV3WiArIG5lYXIgKSAvICggbmVhciAtIGZhciApO1xufVxuZmxvYXQgb3J0aG9ncmFwaGljRGVwdGhUb1ZpZXdaKCBjb25zdCBpbiBmbG9hdCBsaW5lYXJDbGlwWiwgY29uc3QgaW4gZmxvYXQgbmVhciwgY29uc3QgaW4gZmxvYXQgZmFyICkge1xuXHRyZXR1cm4gbGluZWFyQ2xpcFogKiAoIG5lYXIgLSBmYXIgKSAtIG5lYXI7XG59XG5mbG9hdCB2aWV3WlRvUGVyc3BlY3RpdmVEZXB0aCggY29uc3QgaW4gZmxvYXQgdmlld1osIGNvbnN0IGluIGZsb2F0IG5lYXIsIGNvbnN0IGluIGZsb2F0IGZhciApIHtcblx0cmV0dXJuICgoIG5lYXIgKyB2aWV3WiApICogZmFyICkgLyAoKCBmYXIgLSBuZWFyICkgKiB2aWV3WiApO1xufVxuZmxvYXQgcGVyc3BlY3RpdmVEZXB0aFRvVmlld1ooIGNvbnN0IGluIGZsb2F0IGludkNsaXBaLCBjb25zdCBpbiBmbG9hdCBuZWFyLCBjb25zdCBpbiBmbG9hdCBmYXIgKSB7XG5cdHJldHVybiAoIG5lYXIgKiBmYXIgKSAvICggKCBmYXIgLSBuZWFyICkgKiBpbnZDbGlwWiAtIGZhciApO1xufSIscHJlbXVsdGlwbGllZF9hbHBoYV9mcmFnbWVudDoiI2lmZGVmIFBSRU1VTFRJUExJRURfQUxQSEFcblx0Z2xfRnJhZ0NvbG9yLnJnYiAqPSBnbF9GcmFnQ29sb3IuYTtcbiNlbmRpZiIscHJvamVjdF92ZXJ0ZXg6InZlYzQgbXZQb3NpdGlvbiA9IHZlYzQoIHRyYW5zZm9ybWVkLCAxLjAgKTtcbiNpZmRlZiBVU0VfSU5TVEFOQ0lOR1xuXHRtdlBvc2l0aW9uID0gaW5zdGFuY2VNYXRyaXggKiBtdlBvc2l0aW9uO1xuI2VuZGlmXG5tdlBvc2l0aW9uID0gbW9kZWxWaWV3TWF0cml4ICogbXZQb3NpdGlvbjtcbmdsX1Bvc2l0aW9uID0gcHJvamVjdGlvbk1hdHJpeCAqIG12UG9zaXRpb247IixkaXRoZXJpbmdfZnJhZ21lbnQ6IiNpZmRlZiBESVRIRVJJTkdcblx0Z2xfRnJhZ0NvbG9yLnJnYiA9IGRpdGhlcmluZyggZ2xfRnJhZ0NvbG9yLnJnYiApO1xuI2VuZGlmIixkaXRoZXJpbmdfcGFyc19mcmFnbWVudDoiI2lmZGVmIERJVEhFUklOR1xuXHR2ZWMzIGRpdGhlcmluZyggdmVjMyBjb2xvciApIHtcblx0XHRmbG9hdCBncmlkX3Bvc2l0aW9uID0gcmFuZCggZ2xfRnJhZ0Nvb3JkLnh5ICk7XG5cdFx0dmVjMyBkaXRoZXJfc2hpZnRfUkdCID0gdmVjMyggMC4yNSAvIDI1NS4wLCAtMC4yNSAvIDI1NS4wLCAwLjI1IC8gMjU1LjAgKTtcblx0XHRkaXRoZXJfc2hpZnRfUkdCID0gbWl4KCAyLjAgKiBkaXRoZXJfc2hpZnRfUkdCLCAtMi4wICogZGl0aGVyX3NoaWZ0X1JHQiwgZ3JpZF9wb3NpdGlvbiApO1xuXHRcdHJldHVybiBjb2xvciArIGRpdGhlcl9zaGlmdF9SR0I7XG5cdH1cbiNlbmRpZiIscm91Z2huZXNzbWFwX2ZyYWdtZW50OiJmbG9hdCByb3VnaG5lc3NGYWN0b3IgPSByb3VnaG5lc3M7XG4jaWZkZWYgVVNFX1JPVUdITkVTU01BUFxuXHR2ZWM0IHRleGVsUm91Z2huZXNzID0gdGV4dHVyZTJEKCByb3VnaG5lc3NNYXAsIHZVdiApO1xuXHRyb3VnaG5lc3NGYWN0b3IgKj0gdGV4ZWxSb3VnaG5lc3MuZztcbiNlbmRpZiIscm91Z2huZXNzbWFwX3BhcnNfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfUk9VR0hORVNTTUFQXG5cdHVuaWZvcm0gc2FtcGxlcjJEIHJvdWdobmVzc01hcDtcbiNlbmRpZiIsc2hhZG93bWFwX3BhcnNfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfU0hBRE9XTUFQXG5cdCNpZiBOVU1fRElSX0xJR0hUX1NIQURPV1MgPiAwXG5cdFx0dW5pZm9ybSBzYW1wbGVyMkQgZGlyZWN0aW9uYWxTaGFkb3dNYXBbIE5VTV9ESVJfTElHSFRfU0hBRE9XUyBdO1xuXHRcdHZhcnlpbmcgdmVjNCB2RGlyZWN0aW9uYWxTaGFkb3dDb29yZFsgTlVNX0RJUl9MSUdIVF9TSEFET1dTIF07XG5cdFx0c3RydWN0IERpcmVjdGlvbmFsTGlnaHRTaGFkb3cge1xuXHRcdFx0ZmxvYXQgc2hhZG93Qmlhcztcblx0XHRcdGZsb2F0IHNoYWRvd05vcm1hbEJpYXM7XG5cdFx0XHRmbG9hdCBzaGFkb3dSYWRpdXM7XG5cdFx0XHR2ZWMyIHNoYWRvd01hcFNpemU7XG5cdFx0fTtcblx0XHR1bmlmb3JtIERpcmVjdGlvbmFsTGlnaHRTaGFkb3cgZGlyZWN0aW9uYWxMaWdodFNoYWRvd3NbIE5VTV9ESVJfTElHSFRfU0hBRE9XUyBdO1xuXHQjZW5kaWZcblx0I2lmIE5VTV9TUE9UX0xJR0hUX1NIQURPV1MgPiAwXG5cdFx0dW5pZm9ybSBzYW1wbGVyMkQgc3BvdFNoYWRvd01hcFsgTlVNX1NQT1RfTElHSFRfU0hBRE9XUyBdO1xuXHRcdHZhcnlpbmcgdmVjNCB2U3BvdFNoYWRvd0Nvb3JkWyBOVU1fU1BPVF9MSUdIVF9TSEFET1dTIF07XG5cdFx0c3RydWN0IFNwb3RMaWdodFNoYWRvdyB7XG5cdFx0XHRmbG9hdCBzaGFkb3dCaWFzO1xuXHRcdFx0ZmxvYXQgc2hhZG93Tm9ybWFsQmlhcztcblx0XHRcdGZsb2F0IHNoYWRvd1JhZGl1cztcblx0XHRcdHZlYzIgc2hhZG93TWFwU2l6ZTtcblx0XHR9O1xuXHRcdHVuaWZvcm0gU3BvdExpZ2h0U2hhZG93IHNwb3RMaWdodFNoYWRvd3NbIE5VTV9TUE9UX0xJR0hUX1NIQURPV1MgXTtcblx0I2VuZGlmXG5cdCNpZiBOVU1fUE9JTlRfTElHSFRfU0hBRE9XUyA+IDBcblx0XHR1bmlmb3JtIHNhbXBsZXIyRCBwb2ludFNoYWRvd01hcFsgTlVNX1BPSU5UX0xJR0hUX1NIQURPV1MgXTtcblx0XHR2YXJ5aW5nIHZlYzQgdlBvaW50U2hhZG93Q29vcmRbIE5VTV9QT0lOVF9MSUdIVF9TSEFET1dTIF07XG5cdFx0c3RydWN0IFBvaW50TGlnaHRTaGFkb3cge1xuXHRcdFx0ZmxvYXQgc2hhZG93Qmlhcztcblx0XHRcdGZsb2F0IHNoYWRvd05vcm1hbEJpYXM7XG5cdFx0XHRmbG9hdCBzaGFkb3dSYWRpdXM7XG5cdFx0XHR2ZWMyIHNoYWRvd01hcFNpemU7XG5cdFx0XHRmbG9hdCBzaGFkb3dDYW1lcmFOZWFyO1xuXHRcdFx0ZmxvYXQgc2hhZG93Q2FtZXJhRmFyO1xuXHRcdH07XG5cdFx0dW5pZm9ybSBQb2ludExpZ2h0U2hhZG93IHBvaW50TGlnaHRTaGFkb3dzWyBOVU1fUE9JTlRfTElHSFRfU0hBRE9XUyBdO1xuXHQjZW5kaWZcblx0ZmxvYXQgdGV4dHVyZTJEQ29tcGFyZSggc2FtcGxlcjJEIGRlcHRocywgdmVjMiB1diwgZmxvYXQgY29tcGFyZSApIHtcblx0XHRyZXR1cm4gc3RlcCggY29tcGFyZSwgdW5wYWNrUkdCQVRvRGVwdGgoIHRleHR1cmUyRCggZGVwdGhzLCB1diApICkgKTtcblx0fVxuXHR2ZWMyIHRleHR1cmUyRERpc3RyaWJ1dGlvbiggc2FtcGxlcjJEIHNoYWRvdywgdmVjMiB1diApIHtcblx0XHRyZXR1cm4gdW5wYWNrUkdCQVRvMkhhbGYoIHRleHR1cmUyRCggc2hhZG93LCB1diApICk7XG5cdH1cblx0ZmxvYXQgVlNNU2hhZG93IChzYW1wbGVyMkQgc2hhZG93LCB2ZWMyIHV2LCBmbG9hdCBjb21wYXJlICl7XG5cdFx0ZmxvYXQgb2NjbHVzaW9uID0gMS4wO1xuXHRcdHZlYzIgZGlzdHJpYnV0aW9uID0gdGV4dHVyZTJERGlzdHJpYnV0aW9uKCBzaGFkb3csIHV2ICk7XG5cdFx0ZmxvYXQgaGFyZF9zaGFkb3cgPSBzdGVwKCBjb21wYXJlICwgZGlzdHJpYnV0aW9uLnggKTtcblx0XHRpZiAoaGFyZF9zaGFkb3cgIT0gMS4wICkge1xuXHRcdFx0ZmxvYXQgZGlzdGFuY2UgPSBjb21wYXJlIC0gZGlzdHJpYnV0aW9uLnggO1xuXHRcdFx0ZmxvYXQgdmFyaWFuY2UgPSBtYXgoIDAuMDAwMDAsIGRpc3RyaWJ1dGlvbi55ICogZGlzdHJpYnV0aW9uLnkgKTtcblx0XHRcdGZsb2F0IHNvZnRuZXNzX3Byb2JhYmlsaXR5ID0gdmFyaWFuY2UgLyAodmFyaWFuY2UgKyBkaXN0YW5jZSAqIGRpc3RhbmNlICk7XHRcdFx0c29mdG5lc3NfcHJvYmFiaWxpdHkgPSBjbGFtcCggKCBzb2Z0bmVzc19wcm9iYWJpbGl0eSAtIDAuMyApIC8gKCAwLjk1IC0gMC4zICksIDAuMCwgMS4wICk7XHRcdFx0b2NjbHVzaW9uID0gY2xhbXAoIG1heCggaGFyZF9zaGFkb3csIHNvZnRuZXNzX3Byb2JhYmlsaXR5ICksIDAuMCwgMS4wICk7XG5cdFx0fVxuXHRcdHJldHVybiBvY2NsdXNpb247XG5cdH1cblx0ZmxvYXQgZ2V0U2hhZG93KCBzYW1wbGVyMkQgc2hhZG93TWFwLCB2ZWMyIHNoYWRvd01hcFNpemUsIGZsb2F0IHNoYWRvd0JpYXMsIGZsb2F0IHNoYWRvd1JhZGl1cywgdmVjNCBzaGFkb3dDb29yZCApIHtcblx0XHRmbG9hdCBzaGFkb3cgPSAxLjA7XG5cdFx0c2hhZG93Q29vcmQueHl6IC89IHNoYWRvd0Nvb3JkLnc7XG5cdFx0c2hhZG93Q29vcmQueiArPSBzaGFkb3dCaWFzO1xuXHRcdGJ2ZWM0IGluRnJ1c3R1bVZlYyA9IGJ2ZWM0ICggc2hhZG93Q29vcmQueCA+PSAwLjAsIHNoYWRvd0Nvb3JkLnggPD0gMS4wLCBzaGFkb3dDb29yZC55ID49IDAuMCwgc2hhZG93Q29vcmQueSA8PSAxLjAgKTtcblx0XHRib29sIGluRnJ1c3R1bSA9IGFsbCggaW5GcnVzdHVtVmVjICk7XG5cdFx0YnZlYzIgZnJ1c3R1bVRlc3RWZWMgPSBidmVjMiggaW5GcnVzdHVtLCBzaGFkb3dDb29yZC56IDw9IDEuMCApO1xuXHRcdGJvb2wgZnJ1c3R1bVRlc3QgPSBhbGwoIGZydXN0dW1UZXN0VmVjICk7XG5cdFx0aWYgKCBmcnVzdHVtVGVzdCApIHtcblx0XHQjaWYgZGVmaW5lZCggU0hBRE9XTUFQX1RZUEVfUENGIClcblx0XHRcdHZlYzIgdGV4ZWxTaXplID0gdmVjMiggMS4wICkgLyBzaGFkb3dNYXBTaXplO1xuXHRcdFx0ZmxvYXQgZHgwID0gLSB0ZXhlbFNpemUueCAqIHNoYWRvd1JhZGl1cztcblx0XHRcdGZsb2F0IGR5MCA9IC0gdGV4ZWxTaXplLnkgKiBzaGFkb3dSYWRpdXM7XG5cdFx0XHRmbG9hdCBkeDEgPSArIHRleGVsU2l6ZS54ICogc2hhZG93UmFkaXVzO1xuXHRcdFx0ZmxvYXQgZHkxID0gKyB0ZXhlbFNpemUueSAqIHNoYWRvd1JhZGl1cztcblx0XHRcdGZsb2F0IGR4MiA9IGR4MCAvIDIuMDtcblx0XHRcdGZsb2F0IGR5MiA9IGR5MCAvIDIuMDtcblx0XHRcdGZsb2F0IGR4MyA9IGR4MSAvIDIuMDtcblx0XHRcdGZsb2F0IGR5MyA9IGR5MSAvIDIuMDtcblx0XHRcdHNoYWRvdyA9IChcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIGR4MCwgZHkwICksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCAwLjAsIGR5MCApLCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggZHgxLCBkeTAgKSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIGR4MiwgZHkyICksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCAwLjAsIGR5MiApLCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggZHgzLCBkeTIgKSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIGR4MCwgMC4wICksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCBkeDIsIDAuMCApLCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5LCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggZHgzLCAwLjAgKSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIGR4MSwgMC4wICksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCBkeDIsIGR5MyApLCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggMC4wLCBkeTMgKSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIGR4MywgZHkzICksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCBkeDAsIGR5MSApLCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggMC4wLCBkeTEgKSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIGR4MSwgZHkxICksIHNoYWRvd0Nvb3JkLnogKVxuXHRcdFx0KSAqICggMS4wIC8gMTcuMCApO1xuXHRcdCNlbGlmIGRlZmluZWQoIFNIQURPV01BUF9UWVBFX1BDRl9TT0ZUIClcblx0XHRcdHZlYzIgdGV4ZWxTaXplID0gdmVjMiggMS4wICkgLyBzaGFkb3dNYXBTaXplO1xuXHRcdFx0ZmxvYXQgZHggPSB0ZXhlbFNpemUueDtcblx0XHRcdGZsb2F0IGR5ID0gdGV4ZWxTaXplLnk7XG5cdFx0XHR2ZWMyIHV2ID0gc2hhZG93Q29vcmQueHk7XG5cdFx0XHR2ZWMyIGYgPSBmcmFjdCggdXYgKiBzaGFkb3dNYXBTaXplICsgMC41ICk7XG5cdFx0XHR1diAtPSBmICogdGV4ZWxTaXplO1xuXHRcdFx0c2hhZG93ID0gKFxuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHV2LCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHV2ICsgdmVjMiggZHgsIDAuMCApLCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHV2ICsgdmVjMiggMC4wLCBkeSApLCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHV2ICsgdGV4ZWxTaXplLCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHRtaXgoIHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgdXYgKyB2ZWMyKCAtZHgsIDAuMCApLCBzaGFkb3dDb29yZC56ICksIFxuXHRcdFx0XHRcdCB0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHV2ICsgdmVjMiggMi4wICogZHgsIDAuMCApLCBzaGFkb3dDb29yZC56ICksXG5cdFx0XHRcdFx0IGYueCApICtcblx0XHRcdFx0bWl4KCB0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHV2ICsgdmVjMiggLWR4LCBkeSApLCBzaGFkb3dDb29yZC56ICksIFxuXHRcdFx0XHRcdCB0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHV2ICsgdmVjMiggMi4wICogZHgsIGR5ICksIHNoYWRvd0Nvb3JkLnogKSxcblx0XHRcdFx0XHQgZi54ICkgK1xuXHRcdFx0XHRtaXgoIHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgdXYgKyB2ZWMyKCAwLjAsIC1keSApLCBzaGFkb3dDb29yZC56ICksIFxuXHRcdFx0XHRcdCB0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHV2ICsgdmVjMiggMC4wLCAyLjAgKiBkeSApLCBzaGFkb3dDb29yZC56ICksXG5cdFx0XHRcdFx0IGYueSApICtcblx0XHRcdFx0bWl4KCB0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHV2ICsgdmVjMiggZHgsIC1keSApLCBzaGFkb3dDb29yZC56ICksIFxuXHRcdFx0XHRcdCB0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHV2ICsgdmVjMiggZHgsIDIuMCAqIGR5ICksIHNoYWRvd0Nvb3JkLnogKSxcblx0XHRcdFx0XHQgZi55ICkgK1xuXHRcdFx0XHRtaXgoIG1peCggdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCB1diArIHZlYzIoIC1keCwgLWR5ICksIHNoYWRvd0Nvb3JkLnogKSwgXG5cdFx0XHRcdFx0XHQgIHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgdXYgKyB2ZWMyKCAyLjAgKiBkeCwgLWR5ICksIHNoYWRvd0Nvb3JkLnogKSxcblx0XHRcdFx0XHRcdCAgZi54ICksXG5cdFx0XHRcdFx0IG1peCggdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCB1diArIHZlYzIoIC1keCwgMi4wICogZHkgKSwgc2hhZG93Q29vcmQueiApLCBcblx0XHRcdFx0XHRcdCAgdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCB1diArIHZlYzIoIDIuMCAqIGR4LCAyLjAgKiBkeSApLCBzaGFkb3dDb29yZC56ICksXG5cdFx0XHRcdFx0XHQgIGYueCApLFxuXHRcdFx0XHRcdCBmLnkgKVxuXHRcdFx0KSAqICggMS4wIC8gOS4wICk7XG5cdFx0I2VsaWYgZGVmaW5lZCggU0hBRE9XTUFQX1RZUEVfVlNNIClcblx0XHRcdHNoYWRvdyA9IFZTTVNoYWRvdyggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSwgc2hhZG93Q29vcmQueiApO1xuXHRcdCNlbHNlXG5cdFx0XHRzaGFkb3cgPSB0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5LCBzaGFkb3dDb29yZC56ICk7XG5cdFx0I2VuZGlmXG5cdFx0fVxuXHRcdHJldHVybiBzaGFkb3c7XG5cdH1cblx0dmVjMiBjdWJlVG9VViggdmVjMyB2LCBmbG9hdCB0ZXhlbFNpemVZICkge1xuXHRcdHZlYzMgYWJzViA9IGFicyggdiApO1xuXHRcdGZsb2F0IHNjYWxlVG9DdWJlID0gMS4wIC8gbWF4KCBhYnNWLngsIG1heCggYWJzVi55LCBhYnNWLnogKSApO1xuXHRcdGFic1YgKj0gc2NhbGVUb0N1YmU7XG5cdFx0diAqPSBzY2FsZVRvQ3ViZSAqICggMS4wIC0gMi4wICogdGV4ZWxTaXplWSApO1xuXHRcdHZlYzIgcGxhbmFyID0gdi54eTtcblx0XHRmbG9hdCBhbG1vc3RBVGV4ZWwgPSAxLjUgKiB0ZXhlbFNpemVZO1xuXHRcdGZsb2F0IGFsbW9zdE9uZSA9IDEuMCAtIGFsbW9zdEFUZXhlbDtcblx0XHRpZiAoIGFic1YueiA+PSBhbG1vc3RPbmUgKSB7XG5cdFx0XHRpZiAoIHYueiA+IDAuMCApXG5cdFx0XHRcdHBsYW5hci54ID0gNC4wIC0gdi54O1xuXHRcdH0gZWxzZSBpZiAoIGFic1YueCA+PSBhbG1vc3RPbmUgKSB7XG5cdFx0XHRmbG9hdCBzaWduWCA9IHNpZ24oIHYueCApO1xuXHRcdFx0cGxhbmFyLnggPSB2LnogKiBzaWduWCArIDIuMCAqIHNpZ25YO1xuXHRcdH0gZWxzZSBpZiAoIGFic1YueSA+PSBhbG1vc3RPbmUgKSB7XG5cdFx0XHRmbG9hdCBzaWduWSA9IHNpZ24oIHYueSApO1xuXHRcdFx0cGxhbmFyLnggPSB2LnggKyAyLjAgKiBzaWduWSArIDIuMDtcblx0XHRcdHBsYW5hci55ID0gdi56ICogc2lnblkgLSAyLjA7XG5cdFx0fVxuXHRcdHJldHVybiB2ZWMyKCAwLjEyNSwgMC4yNSApICogcGxhbmFyICsgdmVjMiggMC4zNzUsIDAuNzUgKTtcblx0fVxuXHRmbG9hdCBnZXRQb2ludFNoYWRvdyggc2FtcGxlcjJEIHNoYWRvd01hcCwgdmVjMiBzaGFkb3dNYXBTaXplLCBmbG9hdCBzaGFkb3dCaWFzLCBmbG9hdCBzaGFkb3dSYWRpdXMsIHZlYzQgc2hhZG93Q29vcmQsIGZsb2F0IHNoYWRvd0NhbWVyYU5lYXIsIGZsb2F0IHNoYWRvd0NhbWVyYUZhciApIHtcblx0XHR2ZWMyIHRleGVsU2l6ZSA9IHZlYzIoIDEuMCApIC8gKCBzaGFkb3dNYXBTaXplICogdmVjMiggNC4wLCAyLjAgKSApO1xuXHRcdHZlYzMgbGlnaHRUb1Bvc2l0aW9uID0gc2hhZG93Q29vcmQueHl6O1xuXHRcdGZsb2F0IGRwID0gKCBsZW5ndGgoIGxpZ2h0VG9Qb3NpdGlvbiApIC0gc2hhZG93Q2FtZXJhTmVhciApIC8gKCBzaGFkb3dDYW1lcmFGYXIgLSBzaGFkb3dDYW1lcmFOZWFyICk7XHRcdGRwICs9IHNoYWRvd0JpYXM7XG5cdFx0dmVjMyBiZDNEID0gbm9ybWFsaXplKCBsaWdodFRvUG9zaXRpb24gKTtcblx0XHQjaWYgZGVmaW5lZCggU0hBRE9XTUFQX1RZUEVfUENGICkgfHwgZGVmaW5lZCggU0hBRE9XTUFQX1RZUEVfUENGX1NPRlQgKSB8fCBkZWZpbmVkKCBTSEFET1dNQVBfVFlQRV9WU00gKVxuXHRcdFx0dmVjMiBvZmZzZXQgPSB2ZWMyKCAtIDEsIDEgKSAqIHNoYWRvd1JhZGl1cyAqIHRleGVsU2l6ZS55O1xuXHRcdFx0cmV0dXJuIChcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBjdWJlVG9VViggYmQzRCArIG9mZnNldC54eXksIHRleGVsU2l6ZS55ICksIGRwICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIGN1YmVUb1VWKCBiZDNEICsgb2Zmc2V0Lnl5eSwgdGV4ZWxTaXplLnkgKSwgZHAgKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgY3ViZVRvVVYoIGJkM0QgKyBvZmZzZXQueHl4LCB0ZXhlbFNpemUueSApLCBkcCApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBjdWJlVG9VViggYmQzRCArIG9mZnNldC55eXgsIHRleGVsU2l6ZS55ICksIGRwICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIGN1YmVUb1VWKCBiZDNELCB0ZXhlbFNpemUueSApLCBkcCApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBjdWJlVG9VViggYmQzRCArIG9mZnNldC54eHksIHRleGVsU2l6ZS55ICksIGRwICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIGN1YmVUb1VWKCBiZDNEICsgb2Zmc2V0Lnl4eSwgdGV4ZWxTaXplLnkgKSwgZHAgKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgY3ViZVRvVVYoIGJkM0QgKyBvZmZzZXQueHh4LCB0ZXhlbFNpemUueSApLCBkcCApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBjdWJlVG9VViggYmQzRCArIG9mZnNldC55eHgsIHRleGVsU2l6ZS55ICksIGRwIClcblx0XHRcdCkgKiAoIDEuMCAvIDkuMCApO1xuXHRcdCNlbHNlXG5cdFx0XHRyZXR1cm4gdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBjdWJlVG9VViggYmQzRCwgdGV4ZWxTaXplLnkgKSwgZHAgKTtcblx0XHQjZW5kaWZcblx0fVxuI2VuZGlmIixzaGFkb3dtYXBfcGFyc192ZXJ0ZXg6IiNpZmRlZiBVU0VfU0hBRE9XTUFQXG5cdCNpZiBOVU1fRElSX0xJR0hUX1NIQURPV1MgPiAwXG5cdFx0dW5pZm9ybSBtYXQ0IGRpcmVjdGlvbmFsU2hhZG93TWF0cml4WyBOVU1fRElSX0xJR0hUX1NIQURPV1MgXTtcblx0XHR2YXJ5aW5nIHZlYzQgdkRpcmVjdGlvbmFsU2hhZG93Q29vcmRbIE5VTV9ESVJfTElHSFRfU0hBRE9XUyBdO1xuXHRcdHN0cnVjdCBEaXJlY3Rpb25hbExpZ2h0U2hhZG93IHtcblx0XHRcdGZsb2F0IHNoYWRvd0JpYXM7XG5cdFx0XHRmbG9hdCBzaGFkb3dOb3JtYWxCaWFzO1xuXHRcdFx0ZmxvYXQgc2hhZG93UmFkaXVzO1xuXHRcdFx0dmVjMiBzaGFkb3dNYXBTaXplO1xuXHRcdH07XG5cdFx0dW5pZm9ybSBEaXJlY3Rpb25hbExpZ2h0U2hhZG93IGRpcmVjdGlvbmFsTGlnaHRTaGFkb3dzWyBOVU1fRElSX0xJR0hUX1NIQURPV1MgXTtcblx0I2VuZGlmXG5cdCNpZiBOVU1fU1BPVF9MSUdIVF9TSEFET1dTID4gMFxuXHRcdHVuaWZvcm0gbWF0NCBzcG90U2hhZG93TWF0cml4WyBOVU1fU1BPVF9MSUdIVF9TSEFET1dTIF07XG5cdFx0dmFyeWluZyB2ZWM0IHZTcG90U2hhZG93Q29vcmRbIE5VTV9TUE9UX0xJR0hUX1NIQURPV1MgXTtcblx0XHRzdHJ1Y3QgU3BvdExpZ2h0U2hhZG93IHtcblx0XHRcdGZsb2F0IHNoYWRvd0JpYXM7XG5cdFx0XHRmbG9hdCBzaGFkb3dOb3JtYWxCaWFzO1xuXHRcdFx0ZmxvYXQgc2hhZG93UmFkaXVzO1xuXHRcdFx0dmVjMiBzaGFkb3dNYXBTaXplO1xuXHRcdH07XG5cdFx0dW5pZm9ybSBTcG90TGlnaHRTaGFkb3cgc3BvdExpZ2h0U2hhZG93c1sgTlVNX1NQT1RfTElHSFRfU0hBRE9XUyBdO1xuXHQjZW5kaWZcblx0I2lmIE5VTV9QT0lOVF9MSUdIVF9TSEFET1dTID4gMFxuXHRcdHVuaWZvcm0gbWF0NCBwb2ludFNoYWRvd01hdHJpeFsgTlVNX1BPSU5UX0xJR0hUX1NIQURPV1MgXTtcblx0XHR2YXJ5aW5nIHZlYzQgdlBvaW50U2hhZG93Q29vcmRbIE5VTV9QT0lOVF9MSUdIVF9TSEFET1dTIF07XG5cdFx0c3RydWN0IFBvaW50TGlnaHRTaGFkb3cge1xuXHRcdFx0ZmxvYXQgc2hhZG93Qmlhcztcblx0XHRcdGZsb2F0IHNoYWRvd05vcm1hbEJpYXM7XG5cdFx0XHRmbG9hdCBzaGFkb3dSYWRpdXM7XG5cdFx0XHR2ZWMyIHNoYWRvd01hcFNpemU7XG5cdFx0XHRmbG9hdCBzaGFkb3dDYW1lcmFOZWFyO1xuXHRcdFx0ZmxvYXQgc2hhZG93Q2FtZXJhRmFyO1xuXHRcdH07XG5cdFx0dW5pZm9ybSBQb2ludExpZ2h0U2hhZG93IHBvaW50TGlnaHRTaGFkb3dzWyBOVU1fUE9JTlRfTElHSFRfU0hBRE9XUyBdO1xuXHQjZW5kaWZcbiNlbmRpZiIsc2hhZG93bWFwX3ZlcnRleDoiI2lmZGVmIFVTRV9TSEFET1dNQVBcblx0I2lmIE5VTV9ESVJfTElHSFRfU0hBRE9XUyA+IDAgfHwgTlVNX1NQT1RfTElHSFRfU0hBRE9XUyA+IDAgfHwgTlVNX1BPSU5UX0xJR0hUX1NIQURPV1MgPiAwXG5cdFx0dmVjMyBzaGFkb3dXb3JsZE5vcm1hbCA9IGludmVyc2VUcmFuc2Zvcm1EaXJlY3Rpb24oIHRyYW5zZm9ybWVkTm9ybWFsLCB2aWV3TWF0cml4ICk7XG5cdFx0dmVjNCBzaGFkb3dXb3JsZFBvc2l0aW9uO1xuXHQjZW5kaWZcblx0I2lmIE5VTV9ESVJfTElHSFRfU0hBRE9XUyA+IDBcblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydFxuXHRmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fRElSX0xJR0hUX1NIQURPV1M7IGkgKysgKSB7XG5cdFx0c2hhZG93V29ybGRQb3NpdGlvbiA9IHdvcmxkUG9zaXRpb24gKyB2ZWM0KCBzaGFkb3dXb3JsZE5vcm1hbCAqIGRpcmVjdGlvbmFsTGlnaHRTaGFkb3dzWyBpIF0uc2hhZG93Tm9ybWFsQmlhcywgMCApO1xuXHRcdHZEaXJlY3Rpb25hbFNoYWRvd0Nvb3JkWyBpIF0gPSBkaXJlY3Rpb25hbFNoYWRvd01hdHJpeFsgaSBdICogc2hhZG93V29ybGRQb3NpdGlvbjtcblx0fVxuXHQjcHJhZ21hIHVucm9sbF9sb29wX2VuZFxuXHQjZW5kaWZcblx0I2lmIE5VTV9TUE9UX0xJR0hUX1NIQURPV1MgPiAwXG5cdCNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnRcblx0Zm9yICggaW50IGkgPSAwOyBpIDwgTlVNX1NQT1RfTElHSFRfU0hBRE9XUzsgaSArKyApIHtcblx0XHRzaGFkb3dXb3JsZFBvc2l0aW9uID0gd29ybGRQb3NpdGlvbiArIHZlYzQoIHNoYWRvd1dvcmxkTm9ybWFsICogc3BvdExpZ2h0U2hhZG93c1sgaSBdLnNoYWRvd05vcm1hbEJpYXMsIDAgKTtcblx0XHR2U3BvdFNoYWRvd0Nvb3JkWyBpIF0gPSBzcG90U2hhZG93TWF0cml4WyBpIF0gKiBzaGFkb3dXb3JsZFBvc2l0aW9uO1xuXHR9XG5cdCNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kXG5cdCNlbmRpZlxuXHQjaWYgTlVNX1BPSU5UX0xJR0hUX1NIQURPV1MgPiAwXG5cdCNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnRcblx0Zm9yICggaW50IGkgPSAwOyBpIDwgTlVNX1BPSU5UX0xJR0hUX1NIQURPV1M7IGkgKysgKSB7XG5cdFx0c2hhZG93V29ybGRQb3NpdGlvbiA9IHdvcmxkUG9zaXRpb24gKyB2ZWM0KCBzaGFkb3dXb3JsZE5vcm1hbCAqIHBvaW50TGlnaHRTaGFkb3dzWyBpIF0uc2hhZG93Tm9ybWFsQmlhcywgMCApO1xuXHRcdHZQb2ludFNoYWRvd0Nvb3JkWyBpIF0gPSBwb2ludFNoYWRvd01hdHJpeFsgaSBdICogc2hhZG93V29ybGRQb3NpdGlvbjtcblx0fVxuXHQjcHJhZ21hIHVucm9sbF9sb29wX2VuZFxuXHQjZW5kaWZcbiNlbmRpZiIsc2hhZG93bWFza19wYXJzX2ZyYWdtZW50OiJmbG9hdCBnZXRTaGFkb3dNYXNrKCkge1xuXHRmbG9hdCBzaGFkb3cgPSAxLjA7XG5cdCNpZmRlZiBVU0VfU0hBRE9XTUFQXG5cdCNpZiBOVU1fRElSX0xJR0hUX1NIQURPV1MgPiAwXG5cdERpcmVjdGlvbmFsTGlnaHRTaGFkb3cgZGlyZWN0aW9uYWxMaWdodDtcblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydFxuXHRmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fRElSX0xJR0hUX1NIQURPV1M7IGkgKysgKSB7XG5cdFx0ZGlyZWN0aW9uYWxMaWdodCA9IGRpcmVjdGlvbmFsTGlnaHRTaGFkb3dzWyBpIF07XG5cdFx0c2hhZG93ICo9IHJlY2VpdmVTaGFkb3cgPyBnZXRTaGFkb3coIGRpcmVjdGlvbmFsU2hhZG93TWFwWyBpIF0sIGRpcmVjdGlvbmFsTGlnaHQuc2hhZG93TWFwU2l6ZSwgZGlyZWN0aW9uYWxMaWdodC5zaGFkb3dCaWFzLCBkaXJlY3Rpb25hbExpZ2h0LnNoYWRvd1JhZGl1cywgdkRpcmVjdGlvbmFsU2hhZG93Q29vcmRbIGkgXSApIDogMS4wO1xuXHR9XG5cdCNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kXG5cdCNlbmRpZlxuXHQjaWYgTlVNX1NQT1RfTElHSFRfU0hBRE9XUyA+IDBcblx0U3BvdExpZ2h0U2hhZG93IHNwb3RMaWdodDtcblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydFxuXHRmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fU1BPVF9MSUdIVF9TSEFET1dTOyBpICsrICkge1xuXHRcdHNwb3RMaWdodCA9IHNwb3RMaWdodFNoYWRvd3NbIGkgXTtcblx0XHRzaGFkb3cgKj0gcmVjZWl2ZVNoYWRvdyA/IGdldFNoYWRvdyggc3BvdFNoYWRvd01hcFsgaSBdLCBzcG90TGlnaHQuc2hhZG93TWFwU2l6ZSwgc3BvdExpZ2h0LnNoYWRvd0JpYXMsIHNwb3RMaWdodC5zaGFkb3dSYWRpdXMsIHZTcG90U2hhZG93Q29vcmRbIGkgXSApIDogMS4wO1xuXHR9XG5cdCNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kXG5cdCNlbmRpZlxuXHQjaWYgTlVNX1BPSU5UX0xJR0hUX1NIQURPV1MgPiAwXG5cdFBvaW50TGlnaHRTaGFkb3cgcG9pbnRMaWdodDtcblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydFxuXHRmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fUE9JTlRfTElHSFRfU0hBRE9XUzsgaSArKyApIHtcblx0XHRwb2ludExpZ2h0ID0gcG9pbnRMaWdodFNoYWRvd3NbIGkgXTtcblx0XHRzaGFkb3cgKj0gcmVjZWl2ZVNoYWRvdyA/IGdldFBvaW50U2hhZG93KCBwb2ludFNoYWRvd01hcFsgaSBdLCBwb2ludExpZ2h0LnNoYWRvd01hcFNpemUsIHBvaW50TGlnaHQuc2hhZG93QmlhcywgcG9pbnRMaWdodC5zaGFkb3dSYWRpdXMsIHZQb2ludFNoYWRvd0Nvb3JkWyBpIF0sIHBvaW50TGlnaHQuc2hhZG93Q2FtZXJhTmVhciwgcG9pbnRMaWdodC5zaGFkb3dDYW1lcmFGYXIgKSA6IDEuMDtcblx0fVxuXHQjcHJhZ21hIHVucm9sbF9sb29wX2VuZFxuXHQjZW5kaWZcblx0I2VuZGlmXG5cdHJldHVybiBzaGFkb3c7XG59Iixza2luYmFzZV92ZXJ0ZXg6IiNpZmRlZiBVU0VfU0tJTk5JTkdcblx0bWF0NCBib25lTWF0WCA9IGdldEJvbmVNYXRyaXgoIHNraW5JbmRleC54ICk7XG5cdG1hdDQgYm9uZU1hdFkgPSBnZXRCb25lTWF0cml4KCBza2luSW5kZXgueSApO1xuXHRtYXQ0IGJvbmVNYXRaID0gZ2V0Qm9uZU1hdHJpeCggc2tpbkluZGV4LnogKTtcblx0bWF0NCBib25lTWF0VyA9IGdldEJvbmVNYXRyaXgoIHNraW5JbmRleC53ICk7XG4jZW5kaWYiLHNraW5uaW5nX3BhcnNfdmVydGV4OiIjaWZkZWYgVVNFX1NLSU5OSU5HXG5cdHVuaWZvcm0gbWF0NCBiaW5kTWF0cml4O1xuXHR1bmlmb3JtIG1hdDQgYmluZE1hdHJpeEludmVyc2U7XG5cdCNpZmRlZiBCT05FX1RFWFRVUkVcblx0XHR1bmlmb3JtIGhpZ2hwIHNhbXBsZXIyRCBib25lVGV4dHVyZTtcblx0XHR1bmlmb3JtIGludCBib25lVGV4dHVyZVNpemU7XG5cdFx0bWF0NCBnZXRCb25lTWF0cml4KCBjb25zdCBpbiBmbG9hdCBpICkge1xuXHRcdFx0ZmxvYXQgaiA9IGkgKiA0LjA7XG5cdFx0XHRmbG9hdCB4ID0gbW9kKCBqLCBmbG9hdCggYm9uZVRleHR1cmVTaXplICkgKTtcblx0XHRcdGZsb2F0IHkgPSBmbG9vciggaiAvIGZsb2F0KCBib25lVGV4dHVyZVNpemUgKSApO1xuXHRcdFx0ZmxvYXQgZHggPSAxLjAgLyBmbG9hdCggYm9uZVRleHR1cmVTaXplICk7XG5cdFx0XHRmbG9hdCBkeSA9IDEuMCAvIGZsb2F0KCBib25lVGV4dHVyZVNpemUgKTtcblx0XHRcdHkgPSBkeSAqICggeSArIDAuNSApO1xuXHRcdFx0dmVjNCB2MSA9IHRleHR1cmUyRCggYm9uZVRleHR1cmUsIHZlYzIoIGR4ICogKCB4ICsgMC41ICksIHkgKSApO1xuXHRcdFx0dmVjNCB2MiA9IHRleHR1cmUyRCggYm9uZVRleHR1cmUsIHZlYzIoIGR4ICogKCB4ICsgMS41ICksIHkgKSApO1xuXHRcdFx0dmVjNCB2MyA9IHRleHR1cmUyRCggYm9uZVRleHR1cmUsIHZlYzIoIGR4ICogKCB4ICsgMi41ICksIHkgKSApO1xuXHRcdFx0dmVjNCB2NCA9IHRleHR1cmUyRCggYm9uZVRleHR1cmUsIHZlYzIoIGR4ICogKCB4ICsgMy41ICksIHkgKSApO1xuXHRcdFx0bWF0NCBib25lID0gbWF0NCggdjEsIHYyLCB2MywgdjQgKTtcblx0XHRcdHJldHVybiBib25lO1xuXHRcdH1cblx0I2Vsc2Vcblx0XHR1bmlmb3JtIG1hdDQgYm9uZU1hdHJpY2VzWyBNQVhfQk9ORVMgXTtcblx0XHRtYXQ0IGdldEJvbmVNYXRyaXgoIGNvbnN0IGluIGZsb2F0IGkgKSB7XG5cdFx0XHRtYXQ0IGJvbmUgPSBib25lTWF0cmljZXNbIGludChpKSBdO1xuXHRcdFx0cmV0dXJuIGJvbmU7XG5cdFx0fVxuXHQjZW5kaWZcbiNlbmRpZiIsc2tpbm5pbmdfdmVydGV4OiIjaWZkZWYgVVNFX1NLSU5OSU5HXG5cdHZlYzQgc2tpblZlcnRleCA9IGJpbmRNYXRyaXggKiB2ZWM0KCB0cmFuc2Zvcm1lZCwgMS4wICk7XG5cdHZlYzQgc2tpbm5lZCA9IHZlYzQoIDAuMCApO1xuXHRza2lubmVkICs9IGJvbmVNYXRYICogc2tpblZlcnRleCAqIHNraW5XZWlnaHQueDtcblx0c2tpbm5lZCArPSBib25lTWF0WSAqIHNraW5WZXJ0ZXggKiBza2luV2VpZ2h0Lnk7XG5cdHNraW5uZWQgKz0gYm9uZU1hdFogKiBza2luVmVydGV4ICogc2tpbldlaWdodC56O1xuXHRza2lubmVkICs9IGJvbmVNYXRXICogc2tpblZlcnRleCAqIHNraW5XZWlnaHQudztcblx0dHJhbnNmb3JtZWQgPSAoIGJpbmRNYXRyaXhJbnZlcnNlICogc2tpbm5lZCApLnh5ejtcbiNlbmRpZiIsc2tpbm5vcm1hbF92ZXJ0ZXg6IiNpZmRlZiBVU0VfU0tJTk5JTkdcblx0bWF0NCBza2luTWF0cml4ID0gbWF0NCggMC4wICk7XG5cdHNraW5NYXRyaXggKz0gc2tpbldlaWdodC54ICogYm9uZU1hdFg7XG5cdHNraW5NYXRyaXggKz0gc2tpbldlaWdodC55ICogYm9uZU1hdFk7XG5cdHNraW5NYXRyaXggKz0gc2tpbldlaWdodC56ICogYm9uZU1hdFo7XG5cdHNraW5NYXRyaXggKz0gc2tpbldlaWdodC53ICogYm9uZU1hdFc7XG5cdHNraW5NYXRyaXggPSBiaW5kTWF0cml4SW52ZXJzZSAqIHNraW5NYXRyaXggKiBiaW5kTWF0cml4O1xuXHRvYmplY3ROb3JtYWwgPSB2ZWM0KCBza2luTWF0cml4ICogdmVjNCggb2JqZWN0Tm9ybWFsLCAwLjAgKSApLnh5ejtcblx0I2lmZGVmIFVTRV9UQU5HRU5UXG5cdFx0b2JqZWN0VGFuZ2VudCA9IHZlYzQoIHNraW5NYXRyaXggKiB2ZWM0KCBvYmplY3RUYW5nZW50LCAwLjAgKSApLnh5ejtcblx0I2VuZGlmXG4jZW5kaWYiLHNwZWN1bGFybWFwX2ZyYWdtZW50OiJmbG9hdCBzcGVjdWxhclN0cmVuZ3RoO1xuI2lmZGVmIFVTRV9TUEVDVUxBUk1BUFxuXHR2ZWM0IHRleGVsU3BlY3VsYXIgPSB0ZXh0dXJlMkQoIHNwZWN1bGFyTWFwLCB2VXYgKTtcblx0c3BlY3VsYXJTdHJlbmd0aCA9IHRleGVsU3BlY3VsYXIucjtcbiNlbHNlXG5cdHNwZWN1bGFyU3RyZW5ndGggPSAxLjA7XG4jZW5kaWYiLHNwZWN1bGFybWFwX3BhcnNfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfU1BFQ1VMQVJNQVBcblx0dW5pZm9ybSBzYW1wbGVyMkQgc3BlY3VsYXJNYXA7XG4jZW5kaWYiLHRvbmVtYXBwaW5nX2ZyYWdtZW50OiIjaWYgZGVmaW5lZCggVE9ORV9NQVBQSU5HIClcblx0Z2xfRnJhZ0NvbG9yLnJnYiA9IHRvbmVNYXBwaW5nKCBnbF9GcmFnQ29sb3IucmdiICk7XG4jZW5kaWYiLHRvbmVtYXBwaW5nX3BhcnNfZnJhZ21lbnQ6IiNpZm5kZWYgc2F0dXJhdGVcbiNkZWZpbmUgc2F0dXJhdGUoYSkgY2xhbXAoIGEsIDAuMCwgMS4wIClcbiNlbmRpZlxudW5pZm9ybSBmbG9hdCB0b25lTWFwcGluZ0V4cG9zdXJlO1xudmVjMyBMaW5lYXJUb25lTWFwcGluZyggdmVjMyBjb2xvciApIHtcblx0cmV0dXJuIHRvbmVNYXBwaW5nRXhwb3N1cmUgKiBjb2xvcjtcbn1cbnZlYzMgUmVpbmhhcmRUb25lTWFwcGluZyggdmVjMyBjb2xvciApIHtcblx0Y29sb3IgKj0gdG9uZU1hcHBpbmdFeHBvc3VyZTtcblx0cmV0dXJuIHNhdHVyYXRlKCBjb2xvciAvICggdmVjMyggMS4wICkgKyBjb2xvciApICk7XG59XG52ZWMzIE9wdGltaXplZENpbmVvblRvbmVNYXBwaW5nKCB2ZWMzIGNvbG9yICkge1xuXHRjb2xvciAqPSB0b25lTWFwcGluZ0V4cG9zdXJlO1xuXHRjb2xvciA9IG1heCggdmVjMyggMC4wICksIGNvbG9yIC0gMC4wMDQgKTtcblx0cmV0dXJuIHBvdyggKCBjb2xvciAqICggNi4yICogY29sb3IgKyAwLjUgKSApIC8gKCBjb2xvciAqICggNi4yICogY29sb3IgKyAxLjcgKSArIDAuMDYgKSwgdmVjMyggMi4yICkgKTtcbn1cbnZlYzMgUlJUQW5kT0RURml0KCB2ZWMzIHYgKSB7XG5cdHZlYzMgYSA9IHYgKiAoIHYgKyAwLjAyNDU3ODYgKSAtIDAuMDAwMDkwNTM3O1xuXHR2ZWMzIGIgPSB2ICogKCAwLjk4MzcyOSAqIHYgKyAwLjQzMjk1MTAgKSArIDAuMjM4MDgxO1xuXHRyZXR1cm4gYSAvIGI7XG59XG52ZWMzIEFDRVNGaWxtaWNUb25lTWFwcGluZyggdmVjMyBjb2xvciApIHtcblx0Y29uc3QgbWF0MyBBQ0VTSW5wdXRNYXQgPSBtYXQzKFxuXHRcdHZlYzMoIDAuNTk3MTksIDAuMDc2MDAsIDAuMDI4NDAgKSxcdFx0dmVjMyggMC4zNTQ1OCwgMC45MDgzNCwgMC4xMzM4MyApLFxuXHRcdHZlYzMoIDAuMDQ4MjMsIDAuMDE1NjYsIDAuODM3NzcgKVxuXHQpO1xuXHRjb25zdCBtYXQzIEFDRVNPdXRwdXRNYXQgPSBtYXQzKFxuXHRcdHZlYzMoICAxLjYwNDc1LCAtMC4xMDIwOCwgLTAuMDAzMjcgKSxcdFx0dmVjMyggLTAuNTMxMDgsICAxLjEwODEzLCAtMC4wNzI3NiApLFxuXHRcdHZlYzMoIC0wLjA3MzY3LCAtMC4wMDYwNSwgIDEuMDc2MDIgKVxuXHQpO1xuXHRjb2xvciAqPSB0b25lTWFwcGluZ0V4cG9zdXJlIC8gMC42O1xuXHRjb2xvciA9IEFDRVNJbnB1dE1hdCAqIGNvbG9yO1xuXHRjb2xvciA9IFJSVEFuZE9EVEZpdCggY29sb3IgKTtcblx0Y29sb3IgPSBBQ0VTT3V0cHV0TWF0ICogY29sb3I7XG5cdHJldHVybiBzYXR1cmF0ZSggY29sb3IgKTtcbn1cbnZlYzMgQ3VzdG9tVG9uZU1hcHBpbmcoIHZlYzMgY29sb3IgKSB7IHJldHVybiBjb2xvcjsgfSIsdHJhbnNtaXNzaW9uX2ZyYWdtZW50OiIjaWZkZWYgVVNFX1RSQU5TTUlTU0lPTlxuXHRmbG9hdCB0cmFuc21pc3Npb25GYWN0b3IgPSB0cmFuc21pc3Npb247XG5cdGZsb2F0IHRoaWNrbmVzc0ZhY3RvciA9IHRoaWNrbmVzcztcblx0I2lmZGVmIFVTRV9UUkFOU01JU1NJT05NQVBcblx0XHR0cmFuc21pc3Npb25GYWN0b3IgKj0gdGV4dHVyZTJEKCB0cmFuc21pc3Npb25NYXAsIHZVdiApLnI7XG5cdCNlbmRpZlxuXHQjaWZkZWYgVVNFX1RISUNLTkVTU01BUFxuXHRcdHRoaWNrbmVzc0ZhY3RvciAqPSB0ZXh0dXJlMkQoIHRoaWNrbmVzc01hcCwgdlV2ICkuZztcblx0I2VuZGlmXG5cdHZlYzMgcG9zID0gdldvcmxkUG9zaXRpb24ueHl6IC8gdldvcmxkUG9zaXRpb24udztcblx0dmVjMyB2ID0gbm9ybWFsaXplKCBjYW1lcmFQb3NpdGlvbiAtIHBvcyApO1xuXHR2ZWMzIG4gPSBpbnZlcnNlVHJhbnNmb3JtRGlyZWN0aW9uKCBub3JtYWwsIHZpZXdNYXRyaXggKTtcblx0ZmxvYXQgaW9yID0gKCAxLjAgKyAwLjQgKiByZWZsZWN0aXZpdHkgKSAvICggMS4wIC0gMC40ICogcmVmbGVjdGl2aXR5ICk7XG5cdHZlYzMgdHJhbnNtaXNzaW9uID0gdHJhbnNtaXNzaW9uRmFjdG9yICogZ2V0SUJMVm9sdW1lUmVmcmFjdGlvbihcblx0XHRuLCB2LCByb3VnaG5lc3NGYWN0b3IsIG1hdGVyaWFsLmRpZmZ1c2VDb2xvciwgbWF0ZXJpYWwuc3BlY3VsYXJDb2xvcixcblx0XHRwb3MsIG1vZGVsTWF0cml4LCB2aWV3TWF0cml4LCBwcm9qZWN0aW9uTWF0cml4LCBpb3IsIHRoaWNrbmVzc0ZhY3Rvcixcblx0XHRhdHRlbnVhdGlvblRpbnQsIGF0dGVudWF0aW9uRGlzdGFuY2UgKTtcblx0dG90YWxEaWZmdXNlID0gbWl4KCB0b3RhbERpZmZ1c2UsIHRyYW5zbWlzc2lvbiwgdHJhbnNtaXNzaW9uRmFjdG9yICk7XG4jZW5kaWYiLHRyYW5zbWlzc2lvbl9wYXJzX2ZyYWdtZW50OiIjaWZkZWYgVVNFX1RSQU5TTUlTU0lPTlxuXHQjaWZkZWYgVVNFX1RSQU5TTUlTU0lPTk1BUFxuXHRcdHVuaWZvcm0gc2FtcGxlcjJEIHRyYW5zbWlzc2lvbk1hcDtcblx0I2VuZGlmXG5cdCNpZmRlZiBVU0VfVEhJQ0tORVNTTUFQXG5cdFx0dW5pZm9ybSBzYW1wbGVyMkQgdGhpY2tuZXNzTWFwO1xuXHQjZW5kaWZcblx0dW5pZm9ybSB2ZWMyIHRyYW5zbWlzc2lvblNhbXBsZXJTaXplO1xuXHR1bmlmb3JtIHNhbXBsZXIyRCB0cmFuc21pc3Npb25TYW1wbGVyTWFwO1xuXHR1bmlmb3JtIG1hdDQgbW9kZWxNYXRyaXg7XG5cdHVuaWZvcm0gbWF0NCBwcm9qZWN0aW9uTWF0cml4O1xuXHR2YXJ5aW5nIHZlYzQgdldvcmxkUG9zaXRpb247XG5cdHZlYzMgZ2V0Vm9sdW1lVHJhbnNtaXNzaW9uUmF5KHZlYzMgbiwgdmVjMyB2LCBmbG9hdCB0aGlja25lc3MsIGZsb2F0IGlvciwgbWF0NCBtb2RlbE1hdHJpeCkge1xuXHRcdHZlYzMgcmVmcmFjdGlvblZlY3RvciA9IHJlZnJhY3QoLXYsIG5vcm1hbGl6ZShuKSwgMS4wIC8gaW9yKTtcblx0XHR2ZWMzIG1vZGVsU2NhbGU7XG5cdFx0bW9kZWxTY2FsZS54ID0gbGVuZ3RoKHZlYzMobW9kZWxNYXRyaXhbMF0ueHl6KSk7XG5cdFx0bW9kZWxTY2FsZS55ID0gbGVuZ3RoKHZlYzMobW9kZWxNYXRyaXhbMV0ueHl6KSk7XG5cdFx0bW9kZWxTY2FsZS56ID0gbGVuZ3RoKHZlYzMobW9kZWxNYXRyaXhbMl0ueHl6KSk7XG5cdFx0cmV0dXJuIG5vcm1hbGl6ZShyZWZyYWN0aW9uVmVjdG9yKSAqIHRoaWNrbmVzcyAqIG1vZGVsU2NhbGU7XG5cdH1cblx0ZmxvYXQgYXBwbHlJb3JUb1JvdWdobmVzcyhmbG9hdCByb3VnaG5lc3MsIGZsb2F0IGlvcikge1xuXHRcdHJldHVybiByb3VnaG5lc3MgKiBjbGFtcChpb3IgKiAyLjAgLSAyLjAsIDAuMCwgMS4wKTtcblx0fVxuXHR2ZWMzIGdldFRyYW5zbWlzc2lvblNhbXBsZSh2ZWMyIGZyYWdDb29yZCwgZmxvYXQgcm91Z2huZXNzLCBmbG9hdCBpb3IpIHtcblx0XHRmbG9hdCBmcmFtZWJ1ZmZlckxvZCA9IGxvZzIodHJhbnNtaXNzaW9uU2FtcGxlclNpemUueCkgKiBhcHBseUlvclRvUm91Z2huZXNzKHJvdWdobmVzcywgaW9yKTtcblx0XHRyZXR1cm4gdGV4dHVyZTJETG9kRVhUKHRyYW5zbWlzc2lvblNhbXBsZXJNYXAsIGZyYWdDb29yZC54eSwgZnJhbWVidWZmZXJMb2QpLnJnYjtcblx0fVxuXHR2ZWMzIGFwcGx5Vm9sdW1lQXR0ZW51YXRpb24odmVjMyByYWRpYW5jZSwgZmxvYXQgdHJhbnNtaXNzaW9uRGlzdGFuY2UsIHZlYzMgYXR0ZW51YXRpb25Db2xvciwgZmxvYXQgYXR0ZW51YXRpb25EaXN0YW5jZSkge1xuXHRcdGlmIChhdHRlbnVhdGlvbkRpc3RhbmNlID09IDAuMCkge1xuXHRcdFx0cmV0dXJuIHJhZGlhbmNlO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR2ZWMzIGF0dGVudWF0aW9uQ29lZmZpY2llbnQgPSAtbG9nKGF0dGVudWF0aW9uQ29sb3IpIC8gYXR0ZW51YXRpb25EaXN0YW5jZTtcblx0XHRcdHZlYzMgdHJhbnNtaXR0YW5jZSA9IGV4cCgtYXR0ZW51YXRpb25Db2VmZmljaWVudCAqIHRyYW5zbWlzc2lvbkRpc3RhbmNlKTtcdFx0XHRyZXR1cm4gdHJhbnNtaXR0YW5jZSAqIHJhZGlhbmNlO1xuXHRcdH1cblx0fVxuXHR2ZWMzIGdldElCTFZvbHVtZVJlZnJhY3Rpb24odmVjMyBuLCB2ZWMzIHYsIGZsb2F0IHBlcmNlcHR1YWxSb3VnaG5lc3MsIHZlYzMgYmFzZUNvbG9yLCB2ZWMzIHNwZWN1bGFyQ29sb3IsXG5cdFx0dmVjMyBwb3NpdGlvbiwgbWF0NCBtb2RlbE1hdHJpeCwgbWF0NCB2aWV3TWF0cml4LCBtYXQ0IHByb2pNYXRyaXgsIGZsb2F0IGlvciwgZmxvYXQgdGhpY2tuZXNzLFxuXHRcdHZlYzMgYXR0ZW51YXRpb25Db2xvciwgZmxvYXQgYXR0ZW51YXRpb25EaXN0YW5jZSkge1xuXHRcdHZlYzMgdHJhbnNtaXNzaW9uUmF5ID0gZ2V0Vm9sdW1lVHJhbnNtaXNzaW9uUmF5KG4sIHYsIHRoaWNrbmVzcywgaW9yLCBtb2RlbE1hdHJpeCk7XG5cdFx0dmVjMyByZWZyYWN0ZWRSYXlFeGl0ID0gcG9zaXRpb24gKyB0cmFuc21pc3Npb25SYXk7XG5cdFx0dmVjNCBuZGNQb3MgPSBwcm9qTWF0cml4ICogdmlld01hdHJpeCAqIHZlYzQocmVmcmFjdGVkUmF5RXhpdCwgMS4wKTtcblx0XHR2ZWMyIHJlZnJhY3Rpb25Db29yZHMgPSBuZGNQb3MueHkgLyBuZGNQb3Mudztcblx0XHRyZWZyYWN0aW9uQ29vcmRzICs9IDEuMDtcblx0XHRyZWZyYWN0aW9uQ29vcmRzIC89IDIuMDtcblx0XHR2ZWMzIHRyYW5zbWl0dGVkTGlnaHQgPSBnZXRUcmFuc21pc3Npb25TYW1wbGUocmVmcmFjdGlvbkNvb3JkcywgcGVyY2VwdHVhbFJvdWdobmVzcywgaW9yKTtcblx0XHR2ZWMzIGF0dGVudWF0ZWRDb2xvciA9IGFwcGx5Vm9sdW1lQXR0ZW51YXRpb24odHJhbnNtaXR0ZWRMaWdodCwgbGVuZ3RoKHRyYW5zbWlzc2lvblJheSksIGF0dGVudWF0aW9uQ29sb3IsIGF0dGVudWF0aW9uRGlzdGFuY2UpO1xuXHRcdHJldHVybiAoMS4wIC0gc3BlY3VsYXJDb2xvcikgKiBhdHRlbnVhdGVkQ29sb3IgKiBiYXNlQ29sb3I7XG5cdH1cbiNlbmRpZiIsdXZfcGFyc19mcmFnbWVudDoiI2lmICggZGVmaW5lZCggVVNFX1VWICkgJiYgISBkZWZpbmVkKCBVVlNfVkVSVEVYX09OTFkgKSApXG5cdHZhcnlpbmcgdmVjMiB2VXY7XG4jZW5kaWYiLHV2X3BhcnNfdmVydGV4OiIjaWZkZWYgVVNFX1VWXG5cdCNpZmRlZiBVVlNfVkVSVEVYX09OTFlcblx0XHR2ZWMyIHZVdjtcblx0I2Vsc2Vcblx0XHR2YXJ5aW5nIHZlYzIgdlV2O1xuXHQjZW5kaWZcblx0dW5pZm9ybSBtYXQzIHV2VHJhbnNmb3JtO1xuI2VuZGlmIix1dl92ZXJ0ZXg6IiNpZmRlZiBVU0VfVVZcblx0dlV2ID0gKCB1dlRyYW5zZm9ybSAqIHZlYzMoIHV2LCAxICkgKS54eTtcbiNlbmRpZiIsdXYyX3BhcnNfZnJhZ21lbnQ6IiNpZiBkZWZpbmVkKCBVU0VfTElHSFRNQVAgKSB8fCBkZWZpbmVkKCBVU0VfQU9NQVAgKVxuXHR2YXJ5aW5nIHZlYzIgdlV2MjtcbiNlbmRpZiIsdXYyX3BhcnNfdmVydGV4OiIjaWYgZGVmaW5lZCggVVNFX0xJR0hUTUFQICkgfHwgZGVmaW5lZCggVVNFX0FPTUFQIClcblx0YXR0cmlidXRlIHZlYzIgdXYyO1xuXHR2YXJ5aW5nIHZlYzIgdlV2Mjtcblx0dW5pZm9ybSBtYXQzIHV2MlRyYW5zZm9ybTtcbiNlbmRpZiIsdXYyX3ZlcnRleDoiI2lmIGRlZmluZWQoIFVTRV9MSUdIVE1BUCApIHx8IGRlZmluZWQoIFVTRV9BT01BUCApXG5cdHZVdjIgPSAoIHV2MlRyYW5zZm9ybSAqIHZlYzMoIHV2MiwgMSApICkueHk7XG4jZW5kaWYiLHdvcmxkcG9zX3ZlcnRleDoiI2lmIGRlZmluZWQoIFVTRV9FTlZNQVAgKSB8fCBkZWZpbmVkKCBESVNUQU5DRSApIHx8IGRlZmluZWQgKCBVU0VfU0hBRE9XTUFQICkgfHwgZGVmaW5lZCAoIFVTRV9UUkFOU01JU1NJT04gKVxuXHR2ZWM0IHdvcmxkUG9zaXRpb24gPSB2ZWM0KCB0cmFuc2Zvcm1lZCwgMS4wICk7XG5cdCNpZmRlZiBVU0VfSU5TVEFOQ0lOR1xuXHRcdHdvcmxkUG9zaXRpb24gPSBpbnN0YW5jZU1hdHJpeCAqIHdvcmxkUG9zaXRpb247XG5cdCNlbmRpZlxuXHR3b3JsZFBvc2l0aW9uID0gbW9kZWxNYXRyaXggKiB3b3JsZFBvc2l0aW9uO1xuI2VuZGlmIixiYWNrZ3JvdW5kX2ZyYWc6InVuaWZvcm0gc2FtcGxlcjJEIHQyRDtcbnZhcnlpbmcgdmVjMiB2VXY7XG52b2lkIG1haW4oKSB7XG5cdHZlYzQgdGV4Q29sb3IgPSB0ZXh0dXJlMkQoIHQyRCwgdlV2ICk7XG5cdGdsX0ZyYWdDb2xvciA9IG1hcFRleGVsVG9MaW5lYXIoIHRleENvbG9yICk7XG5cdCNpbmNsdWRlIDx0b25lbWFwcGluZ19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGVuY29kaW5nc19mcmFnbWVudD5cbn0iLGJhY2tncm91bmRfdmVydDoidmFyeWluZyB2ZWMyIHZVdjtcbnVuaWZvcm0gbWF0MyB1dlRyYW5zZm9ybTtcbnZvaWQgbWFpbigpIHtcblx0dlV2ID0gKCB1dlRyYW5zZm9ybSAqIHZlYzMoIHV2LCAxICkgKS54eTtcblx0Z2xfUG9zaXRpb24gPSB2ZWM0KCBwb3NpdGlvbi54eSwgMS4wLCAxLjAgKTtcbn0iLGN1YmVfZnJhZzoiI2luY2x1ZGUgPGVudm1hcF9jb21tb25fcGFyc19mcmFnbWVudD5cbnVuaWZvcm0gZmxvYXQgb3BhY2l0eTtcbnZhcnlpbmcgdmVjMyB2V29ybGREaXJlY3Rpb247XG4jaW5jbHVkZSA8Y3ViZV91dl9yZWZsZWN0aW9uX2ZyYWdtZW50Plxudm9pZCBtYWluKCkge1xuXHR2ZWMzIHZSZWZsZWN0ID0gdldvcmxkRGlyZWN0aW9uO1xuXHQjaW5jbHVkZSA8ZW52bWFwX2ZyYWdtZW50PlxuXHRnbF9GcmFnQ29sb3IgPSBlbnZDb2xvcjtcblx0Z2xfRnJhZ0NvbG9yLmEgKj0gb3BhY2l0eTtcblx0I2luY2x1ZGUgPHRvbmVtYXBwaW5nX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8ZW5jb2RpbmdzX2ZyYWdtZW50PlxufSIsY3ViZV92ZXJ0OiJ2YXJ5aW5nIHZlYzMgdldvcmxkRGlyZWN0aW9uO1xuI2luY2x1ZGUgPGNvbW1vbj5cbnZvaWQgbWFpbigpIHtcblx0dldvcmxkRGlyZWN0aW9uID0gdHJhbnNmb3JtRGlyZWN0aW9uKCBwb3NpdGlvbiwgbW9kZWxNYXRyaXggKTtcblx0I2luY2x1ZGUgPGJlZ2luX3ZlcnRleD5cblx0I2luY2x1ZGUgPHByb2plY3RfdmVydGV4PlxuXHRnbF9Qb3NpdGlvbi56ID0gZ2xfUG9zaXRpb24udztcbn0iLGRlcHRoX2ZyYWc6IiNpZiBERVBUSF9QQUNLSU5HID09IDMyMDBcblx0dW5pZm9ybSBmbG9hdCBvcGFjaXR5O1xuI2VuZGlmXG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPHBhY2tpbmc+XG4jaW5jbHVkZSA8dXZfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxhbHBoYW1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfZnJhZ21lbnQ+XG52YXJ5aW5nIHZlYzIgdkhpZ2hQcmVjaXNpb25aVztcbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19mcmFnbWVudD5cblx0dmVjNCBkaWZmdXNlQ29sb3IgPSB2ZWM0KCAxLjAgKTtcblx0I2lmIERFUFRIX1BBQ0tJTkcgPT0gMzIwMFxuXHRcdGRpZmZ1c2VDb2xvci5hID0gb3BhY2l0eTtcblx0I2VuZGlmXG5cdCNpbmNsdWRlIDxtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxhbHBoYW1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGFscGhhdGVzdF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX2ZyYWdtZW50PlxuXHRmbG9hdCBmcmFnQ29vcmRaID0gMC41ICogdkhpZ2hQcmVjaXNpb25aV1swXSAvIHZIaWdoUHJlY2lzaW9uWldbMV0gKyAwLjU7XG5cdCNpZiBERVBUSF9QQUNLSU5HID09IDMyMDBcblx0XHRnbF9GcmFnQ29sb3IgPSB2ZWM0KCB2ZWMzKCAxLjAgLSBmcmFnQ29vcmRaICksIG9wYWNpdHkgKTtcblx0I2VsaWYgREVQVEhfUEFDS0lORyA9PSAzMjAxXG5cdFx0Z2xfRnJhZ0NvbG9yID0gcGFja0RlcHRoVG9SR0JBKCBmcmFnQ29vcmRaICk7XG5cdCNlbmRpZlxufSIsZGVwdGhfdmVydDoiI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDx1dl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxkaXNwbGFjZW1lbnRtYXBfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bW9ycGh0YXJnZXRfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8c2tpbm5pbmdfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfdmVydGV4PlxudmFyeWluZyB2ZWMyIHZIaWdoUHJlY2lzaW9uWlc7XG52b2lkIG1haW4oKSB7XG5cdCNpbmNsdWRlIDx1dl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2luYmFzZV92ZXJ0ZXg+XG5cdCNpZmRlZiBVU0VfRElTUExBQ0VNRU5UTUFQXG5cdFx0I2luY2x1ZGUgPGJlZ2lubm9ybWFsX3ZlcnRleD5cblx0XHQjaW5jbHVkZSA8bW9ycGhub3JtYWxfdmVydGV4PlxuXHRcdCNpbmNsdWRlIDxza2lubm9ybWFsX3ZlcnRleD5cblx0I2VuZGlmXG5cdCNpbmNsdWRlIDxiZWdpbl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxtb3JwaHRhcmdldF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2lubmluZ192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxkaXNwbGFjZW1lbnRtYXBfdmVydGV4PlxuXHQjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfdmVydGV4PlxuXHR2SGlnaFByZWNpc2lvblpXID0gZ2xfUG9zaXRpb24uenc7XG59IixkaXN0YW5jZVJHQkFfZnJhZzoiI2RlZmluZSBESVNUQU5DRVxudW5pZm9ybSB2ZWMzIHJlZmVyZW5jZVBvc2l0aW9uO1xudW5pZm9ybSBmbG9hdCBuZWFyRGlzdGFuY2U7XG51bmlmb3JtIGZsb2F0IGZhckRpc3RhbmNlO1xudmFyeWluZyB2ZWMzIHZXb3JsZFBvc2l0aW9uO1xuI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDxwYWNraW5nPlxuI2luY2x1ZGUgPHV2X3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YWxwaGFtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc19mcmFnbWVudD5cbnZvaWQgbWFpbiAoKSB7XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfZnJhZ21lbnQ+XG5cdHZlYzQgZGlmZnVzZUNvbG9yID0gdmVjNCggMS4wICk7XG5cdCNpbmNsdWRlIDxtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxhbHBoYW1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGFscGhhdGVzdF9mcmFnbWVudD5cblx0ZmxvYXQgZGlzdCA9IGxlbmd0aCggdldvcmxkUG9zaXRpb24gLSByZWZlcmVuY2VQb3NpdGlvbiApO1xuXHRkaXN0ID0gKCBkaXN0IC0gbmVhckRpc3RhbmNlICkgLyAoIGZhckRpc3RhbmNlIC0gbmVhckRpc3RhbmNlICk7XG5cdGRpc3QgPSBzYXR1cmF0ZSggZGlzdCApO1xuXHRnbF9GcmFnQ29sb3IgPSBwYWNrRGVwdGhUb1JHQkEoIGRpc3QgKTtcbn0iLGRpc3RhbmNlUkdCQV92ZXJ0OiIjZGVmaW5lIERJU1RBTkNFXG52YXJ5aW5nIHZlYzMgdldvcmxkUG9zaXRpb247XG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPHV2X3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGRpc3BsYWNlbWVudG1hcF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxtb3JwaHRhcmdldF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxza2lubmluZ19wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc192ZXJ0ZXg+XG52b2lkIG1haW4oKSB7XG5cdCNpbmNsdWRlIDx1dl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2luYmFzZV92ZXJ0ZXg+XG5cdCNpZmRlZiBVU0VfRElTUExBQ0VNRU5UTUFQXG5cdFx0I2luY2x1ZGUgPGJlZ2lubm9ybWFsX3ZlcnRleD5cblx0XHQjaW5jbHVkZSA8bW9ycGhub3JtYWxfdmVydGV4PlxuXHRcdCNpbmNsdWRlIDxza2lubm9ybWFsX3ZlcnRleD5cblx0I2VuZGlmXG5cdCNpbmNsdWRlIDxiZWdpbl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxtb3JwaHRhcmdldF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2lubmluZ192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxkaXNwbGFjZW1lbnRtYXBfdmVydGV4PlxuXHQjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDx3b3JsZHBvc192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfdmVydGV4PlxuXHR2V29ybGRQb3NpdGlvbiA9IHdvcmxkUG9zaXRpb24ueHl6O1xufSIsZXF1aXJlY3RfZnJhZzoidW5pZm9ybSBzYW1wbGVyMkQgdEVxdWlyZWN0O1xudmFyeWluZyB2ZWMzIHZXb3JsZERpcmVjdGlvbjtcbiNpbmNsdWRlIDxjb21tb24+XG52b2lkIG1haW4oKSB7XG5cdHZlYzMgZGlyZWN0aW9uID0gbm9ybWFsaXplKCB2V29ybGREaXJlY3Rpb24gKTtcblx0dmVjMiBzYW1wbGVVViA9IGVxdWlyZWN0VXYoIGRpcmVjdGlvbiApO1xuXHR2ZWM0IHRleENvbG9yID0gdGV4dHVyZTJEKCB0RXF1aXJlY3QsIHNhbXBsZVVWICk7XG5cdGdsX0ZyYWdDb2xvciA9IG1hcFRleGVsVG9MaW5lYXIoIHRleENvbG9yICk7XG5cdCNpbmNsdWRlIDx0b25lbWFwcGluZ19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGVuY29kaW5nc19mcmFnbWVudD5cbn0iLGVxdWlyZWN0X3ZlcnQ6InZhcnlpbmcgdmVjMyB2V29ybGREaXJlY3Rpb247XG4jaW5jbHVkZSA8Y29tbW9uPlxudm9pZCBtYWluKCkge1xuXHR2V29ybGREaXJlY3Rpb24gPSB0cmFuc2Zvcm1EaXJlY3Rpb24oIHBvc2l0aW9uLCBtb2RlbE1hdHJpeCApO1xuXHQjaW5jbHVkZSA8YmVnaW5fdmVydGV4PlxuXHQjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+XG59IixsaW5lZGFzaGVkX2ZyYWc6InVuaWZvcm0gdmVjMyBkaWZmdXNlO1xudW5pZm9ybSBmbG9hdCBvcGFjaXR5O1xudW5pZm9ybSBmbG9hdCBkYXNoU2l6ZTtcbnVuaWZvcm0gZmxvYXQgdG90YWxTaXplO1xudmFyeWluZyBmbG9hdCB2TGluZURpc3RhbmNlO1xuI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDxjb2xvcl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGZvZ19wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfZnJhZ21lbnQ+XG52b2lkIG1haW4oKSB7XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfZnJhZ21lbnQ+XG5cdGlmICggbW9kKCB2TGluZURpc3RhbmNlLCB0b3RhbFNpemUgKSA+IGRhc2hTaXplICkge1xuXHRcdGRpc2NhcmQ7XG5cdH1cblx0dmVjMyBvdXRnb2luZ0xpZ2h0ID0gdmVjMyggMC4wICk7XG5cdHZlYzQgZGlmZnVzZUNvbG9yID0gdmVjNCggZGlmZnVzZSwgb3BhY2l0eSApO1xuXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxjb2xvcl9mcmFnbWVudD5cblx0b3V0Z29pbmdMaWdodCA9IGRpZmZ1c2VDb2xvci5yZ2I7XG5cdGdsX0ZyYWdDb2xvciA9IHZlYzQoIG91dGdvaW5nTGlnaHQsIGRpZmZ1c2VDb2xvci5hICk7XG5cdCNpbmNsdWRlIDx0b25lbWFwcGluZ19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGVuY29kaW5nc19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGZvZ19mcmFnbWVudD5cblx0I2luY2x1ZGUgPHByZW11bHRpcGxpZWRfYWxwaGFfZnJhZ21lbnQ+XG59IixsaW5lZGFzaGVkX3ZlcnQ6InVuaWZvcm0gZmxvYXQgc2NhbGU7XG5hdHRyaWJ1dGUgZmxvYXQgbGluZURpc3RhbmNlO1xudmFyeWluZyBmbG9hdCB2TGluZURpc3RhbmNlO1xuI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDxjb2xvcl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxmb2dfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bW9ycGh0YXJnZXRfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfdmVydGV4Plxudm9pZCBtYWluKCkge1xuXHR2TGluZURpc3RhbmNlID0gc2NhbGUgKiBsaW5lRGlzdGFuY2U7XG5cdCNpbmNsdWRlIDxjb2xvcl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxiZWdpbl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxtb3JwaHRhcmdldF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD5cblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3ZlcnRleD5cblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxmb2dfdmVydGV4PlxufSIsbWVzaGJhc2ljX2ZyYWc6InVuaWZvcm0gdmVjMyBkaWZmdXNlO1xudW5pZm9ybSBmbG9hdCBvcGFjaXR5O1xuI2lmbmRlZiBGTEFUX1NIQURFRFxuXHR2YXJ5aW5nIHZlYzMgdk5vcm1hbDtcbiNlbmRpZlxuI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDxkaXRoZXJpbmdfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjb2xvcl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHV2X3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8dXYyX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YWxwaGFtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxhb21hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGxpZ2h0bWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8ZW52bWFwX2NvbW1vbl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGVudm1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGN1YmVfdXZfcmVmbGVjdGlvbl9mcmFnbWVudD5cbiNpbmNsdWRlIDxmb2dfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxzcGVjdWxhcm1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfZnJhZ21lbnQ+XG52b2lkIG1haW4oKSB7XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfZnJhZ21lbnQ+XG5cdHZlYzQgZGlmZnVzZUNvbG9yID0gdmVjNCggZGlmZnVzZSwgb3BhY2l0eSApO1xuXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxjb2xvcl9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGFscGhhbWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8YWxwaGF0ZXN0X2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8c3BlY3VsYXJtYXBfZnJhZ21lbnQ+XG5cdFJlZmxlY3RlZExpZ2h0IHJlZmxlY3RlZExpZ2h0ID0gUmVmbGVjdGVkTGlnaHQoIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICksIHZlYzMoIDAuMCApICk7XG5cdCNpZmRlZiBVU0VfTElHSFRNQVBcblx0XG5cdFx0dmVjNCBsaWdodE1hcFRleGVsPSB0ZXh0dXJlMkQoIGxpZ2h0TWFwLCB2VXYyICk7XG5cdFx0cmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICs9IGxpZ2h0TWFwVGV4ZWxUb0xpbmVhciggbGlnaHRNYXBUZXhlbCApLnJnYiAqIGxpZ2h0TWFwSW50ZW5zaXR5O1xuXHQjZWxzZVxuXHRcdHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZSArPSB2ZWMzKCAxLjAgKTtcblx0I2VuZGlmXG5cdCNpbmNsdWRlIDxhb21hcF9mcmFnbWVudD5cblx0cmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICo9IGRpZmZ1c2VDb2xvci5yZ2I7XG5cdHZlYzMgb3V0Z29pbmdMaWdodCA9IHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZTtcblx0I2luY2x1ZGUgPGVudm1hcF9mcmFnbWVudD5cblx0Z2xfRnJhZ0NvbG9yID0gdmVjNCggb3V0Z29pbmdMaWdodCwgZGlmZnVzZUNvbG9yLmEgKTtcblx0I2luY2x1ZGUgPHRvbmVtYXBwaW5nX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8ZW5jb2RpbmdzX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8Zm9nX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8cHJlbXVsdGlwbGllZF9hbHBoYV9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGRpdGhlcmluZ19mcmFnbWVudD5cbn0iLG1lc2hiYXNpY192ZXJ0OiIjaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPHV2X3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPHV2Ml9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxlbnZtYXBfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Y29sb3JfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Zm9nX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPG1vcnBodGFyZ2V0X3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPHNraW5uaW5nX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX3ZlcnRleD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPHV2X3ZlcnRleD5cblx0I2luY2x1ZGUgPHV2Ml92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxjb2xvcl92ZXJ0ZXg+XG5cdCNpZiBkZWZpbmVkICggVVNFX0VOVk1BUCApIHx8IGRlZmluZWQgKCBVU0VfU0tJTk5JTkcgKVxuXHRcdCNpbmNsdWRlIDxiZWdpbm5vcm1hbF92ZXJ0ZXg+XG5cdFx0I2luY2x1ZGUgPG1vcnBobm9ybWFsX3ZlcnRleD5cblx0XHQjaW5jbHVkZSA8c2tpbmJhc2VfdmVydGV4PlxuXHRcdCNpbmNsdWRlIDxza2lubm9ybWFsX3ZlcnRleD5cblx0XHQjaW5jbHVkZSA8ZGVmYXVsdG5vcm1hbF92ZXJ0ZXg+XG5cdCNlbmRpZlxuXHQjaW5jbHVkZSA8YmVnaW5fdmVydGV4PlxuXHQjaW5jbHVkZSA8bW9ycGh0YXJnZXRfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbm5pbmdfdmVydGV4PlxuXHQjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfdmVydGV4PlxuXHQjaW5jbHVkZSA8d29ybGRwb3NfdmVydGV4PlxuXHQjaW5jbHVkZSA8ZW52bWFwX3ZlcnRleD5cblx0I2luY2x1ZGUgPGZvZ192ZXJ0ZXg+XG59IixtZXNobGFtYmVydF9mcmFnOiJ1bmlmb3JtIHZlYzMgZGlmZnVzZTtcbnVuaWZvcm0gdmVjMyBlbWlzc2l2ZTtcbnVuaWZvcm0gZmxvYXQgb3BhY2l0eTtcbnZhcnlpbmcgdmVjMyB2TGlnaHRGcm9udDtcbnZhcnlpbmcgdmVjMyB2SW5kaXJlY3RGcm9udDtcbiNpZmRlZiBET1VCTEVfU0lERURcblx0dmFyeWluZyB2ZWMzIHZMaWdodEJhY2s7XG5cdHZhcnlpbmcgdmVjMyB2SW5kaXJlY3RCYWNrO1xuI2VuZGlmXG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPHBhY2tpbmc+XG4jaW5jbHVkZSA8ZGl0aGVyaW5nX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Y29sb3JfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDx1dl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHV2Ml9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGFscGhhbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YW9tYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxsaWdodG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGVtaXNzaXZlbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8ZW52bWFwX2NvbW1vbl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGVudm1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGN1YmVfdXZfcmVmbGVjdGlvbl9mcmFnbWVudD5cbiNpbmNsdWRlIDxic2Rmcz5cbiNpbmNsdWRlIDxsaWdodHNfcGFyc19iZWdpbj5cbiNpbmNsdWRlIDxmb2dfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxzaGFkb3dtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxzaGFkb3dtYXNrX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8c3BlY3VsYXJtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX2ZyYWdtZW50Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX2ZyYWdtZW50PlxuXHR2ZWM0IGRpZmZ1c2VDb2xvciA9IHZlYzQoIGRpZmZ1c2UsIG9wYWNpdHkgKTtcblx0UmVmbGVjdGVkTGlnaHQgcmVmbGVjdGVkTGlnaHQgPSBSZWZsZWN0ZWRMaWdodCggdmVjMyggMC4wICksIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICkgKTtcblx0dmVjMyB0b3RhbEVtaXNzaXZlUmFkaWFuY2UgPSBlbWlzc2l2ZTtcblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8Y29sb3JfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxhbHBoYW1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGFscGhhdGVzdF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPHNwZWN1bGFybWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8ZW1pc3NpdmVtYXBfZnJhZ21lbnQ+XG5cdCNpZmRlZiBET1VCTEVfU0lERURcblx0XHRyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKz0gKCBnbF9Gcm9udEZhY2luZyApID8gdkluZGlyZWN0RnJvbnQgOiB2SW5kaXJlY3RCYWNrO1xuXHQjZWxzZVxuXHRcdHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZSArPSB2SW5kaXJlY3RGcm9udDtcblx0I2VuZGlmXG5cdCNpbmNsdWRlIDxsaWdodG1hcF9mcmFnbWVudD5cblx0cmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICo9IEJSREZfRGlmZnVzZV9MYW1iZXJ0KCBkaWZmdXNlQ29sb3IucmdiICk7XG5cdCNpZmRlZiBET1VCTEVfU0lERURcblx0XHRyZWZsZWN0ZWRMaWdodC5kaXJlY3REaWZmdXNlID0gKCBnbF9Gcm9udEZhY2luZyApID8gdkxpZ2h0RnJvbnQgOiB2TGlnaHRCYWNrO1xuXHQjZWxzZVxuXHRcdHJlZmxlY3RlZExpZ2h0LmRpcmVjdERpZmZ1c2UgPSB2TGlnaHRGcm9udDtcblx0I2VuZGlmXG5cdHJlZmxlY3RlZExpZ2h0LmRpcmVjdERpZmZ1c2UgKj0gQlJERl9EaWZmdXNlX0xhbWJlcnQoIGRpZmZ1c2VDb2xvci5yZ2IgKSAqIGdldFNoYWRvd01hc2soKTtcblx0I2luY2x1ZGUgPGFvbWFwX2ZyYWdtZW50PlxuXHR2ZWMzIG91dGdvaW5nTGlnaHQgPSByZWZsZWN0ZWRMaWdodC5kaXJlY3REaWZmdXNlICsgcmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICsgdG90YWxFbWlzc2l2ZVJhZGlhbmNlO1xuXHQjaW5jbHVkZSA8ZW52bWFwX2ZyYWdtZW50PlxuXHRnbF9GcmFnQ29sb3IgPSB2ZWM0KCBvdXRnb2luZ0xpZ2h0LCBkaWZmdXNlQ29sb3IuYSApO1xuXHQjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxlbmNvZGluZ3NfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxmb2dfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxwcmVtdWx0aXBsaWVkX2FscGhhX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8ZGl0aGVyaW5nX2ZyYWdtZW50PlxufSIsbWVzaGxhbWJlcnRfdmVydDoiI2RlZmluZSBMQU1CRVJUXG52YXJ5aW5nIHZlYzMgdkxpZ2h0RnJvbnQ7XG52YXJ5aW5nIHZlYzMgdkluZGlyZWN0RnJvbnQ7XG4jaWZkZWYgRE9VQkxFX1NJREVEXG5cdHZhcnlpbmcgdmVjMyB2TGlnaHRCYWNrO1xuXHR2YXJ5aW5nIHZlYzMgdkluZGlyZWN0QmFjaztcbiNlbmRpZlxuI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDx1dl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDx1djJfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8ZW52bWFwX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGJzZGZzPlxuI2luY2x1ZGUgPGxpZ2h0c19wYXJzX2JlZ2luPlxuI2luY2x1ZGUgPGNvbG9yX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGZvZ19wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxtb3JwaHRhcmdldF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxza2lubmluZ19wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxzaGFkb3dtYXBfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfdmVydGV4Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8dXZfdmVydGV4PlxuXHQjaW5jbHVkZSA8dXYyX3ZlcnRleD5cblx0I2luY2x1ZGUgPGNvbG9yX3ZlcnRleD5cblx0I2luY2x1ZGUgPGJlZ2lubm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPG1vcnBobm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5iYXNlX3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5ub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8ZGVmYXVsdG5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxiZWdpbl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxtb3JwaHRhcmdldF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2lubmluZ192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD5cblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3ZlcnRleD5cblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDx3b3JsZHBvc192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxlbnZtYXBfdmVydGV4PlxuXHQjaW5jbHVkZSA8bGlnaHRzX2xhbWJlcnRfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2hhZG93bWFwX3ZlcnRleD5cblx0I2luY2x1ZGUgPGZvZ192ZXJ0ZXg+XG59IixtZXNobWF0Y2FwX2ZyYWc6IiNkZWZpbmUgTUFUQ0FQXG51bmlmb3JtIHZlYzMgZGlmZnVzZTtcbnVuaWZvcm0gZmxvYXQgb3BhY2l0eTtcbnVuaWZvcm0gc2FtcGxlcjJEIG1hdGNhcDtcbnZhcnlpbmcgdmVjMyB2Vmlld1Bvc2l0aW9uO1xuI2lmbmRlZiBGTEFUX1NIQURFRFxuXHR2YXJ5aW5nIHZlYzMgdk5vcm1hbDtcblx0I2lmZGVmIFVTRV9UQU5HRU5UXG5cdFx0dmFyeWluZyB2ZWMzIHZUYW5nZW50O1xuXHRcdHZhcnlpbmcgdmVjMyB2Qml0YW5nZW50O1xuXHQjZW5kaWZcbiNlbmRpZlxuI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDxkaXRoZXJpbmdfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjb2xvcl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHV2X3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YWxwaGFtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxmb2dfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxidW1wbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bm9ybWFsbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc19mcmFnbWVudD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19mcmFnbWVudD5cblx0dmVjNCBkaWZmdXNlQ29sb3IgPSB2ZWM0KCBkaWZmdXNlLCBvcGFjaXR5ICk7XG5cdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9mcmFnbWVudD5cblx0I2luY2x1ZGUgPG1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGNvbG9yX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8YWxwaGFtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxhbHBoYXRlc3RfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxub3JtYWxfZnJhZ21lbnRfYmVnaW4+XG5cdCNpbmNsdWRlIDxub3JtYWxfZnJhZ21lbnRfbWFwcz5cblx0dmVjMyB2aWV3RGlyID0gbm9ybWFsaXplKCB2Vmlld1Bvc2l0aW9uICk7XG5cdHZlYzMgeCA9IG5vcm1hbGl6ZSggdmVjMyggdmlld0Rpci56LCAwLjAsIC0gdmlld0Rpci54ICkgKTtcblx0dmVjMyB5ID0gY3Jvc3MoIHZpZXdEaXIsIHggKTtcblx0dmVjMiB1diA9IHZlYzIoIGRvdCggeCwgbm9ybWFsICksIGRvdCggeSwgbm9ybWFsICkgKSAqIDAuNDk1ICsgMC41O1xuXHQjaWZkZWYgVVNFX01BVENBUFxuXHRcdHZlYzQgbWF0Y2FwQ29sb3IgPSB0ZXh0dXJlMkQoIG1hdGNhcCwgdXYgKTtcblx0XHRtYXRjYXBDb2xvciA9IG1hdGNhcFRleGVsVG9MaW5lYXIoIG1hdGNhcENvbG9yICk7XG5cdCNlbHNlXG5cdFx0dmVjNCBtYXRjYXBDb2xvciA9IHZlYzQoIDEuMCApO1xuXHQjZW5kaWZcblx0dmVjMyBvdXRnb2luZ0xpZ2h0ID0gZGlmZnVzZUNvbG9yLnJnYiAqIG1hdGNhcENvbG9yLnJnYjtcblx0Z2xfRnJhZ0NvbG9yID0gdmVjNCggb3V0Z29pbmdMaWdodCwgZGlmZnVzZUNvbG9yLmEgKTtcblx0I2luY2x1ZGUgPHRvbmVtYXBwaW5nX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8ZW5jb2RpbmdzX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8Zm9nX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8cHJlbXVsdGlwbGllZF9hbHBoYV9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGRpdGhlcmluZ19mcmFnbWVudD5cbn0iLG1lc2htYXRjYXBfdmVydDoiI2RlZmluZSBNQVRDQVBcbnZhcnlpbmcgdmVjMyB2Vmlld1Bvc2l0aW9uO1xuI2lmbmRlZiBGTEFUX1NIQURFRFxuXHR2YXJ5aW5nIHZlYzMgdk5vcm1hbDtcblx0I2lmZGVmIFVTRV9UQU5HRU5UXG5cdFx0dmFyeWluZyB2ZWMzIHZUYW5nZW50O1xuXHRcdHZhcnlpbmcgdmVjMyB2Qml0YW5nZW50O1xuXHQjZW5kaWZcbiNlbmRpZlxuI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDx1dl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxjb2xvcl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxkaXNwbGFjZW1lbnRtYXBfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Zm9nX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPG1vcnBodGFyZ2V0X3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPHNraW5uaW5nX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX3ZlcnRleD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPHV2X3ZlcnRleD5cblx0I2luY2x1ZGUgPGNvbG9yX3ZlcnRleD5cblx0I2luY2x1ZGUgPGJlZ2lubm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPG1vcnBobm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5iYXNlX3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5ub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8ZGVmYXVsdG5vcm1hbF92ZXJ0ZXg+XG5cdCNpZm5kZWYgRkxBVF9TSEFERURcblx0XHR2Tm9ybWFsID0gbm9ybWFsaXplKCB0cmFuc2Zvcm1lZE5vcm1hbCApO1xuXHRcdCNpZmRlZiBVU0VfVEFOR0VOVFxuXHRcdFx0dlRhbmdlbnQgPSBub3JtYWxpemUoIHRyYW5zZm9ybWVkVGFuZ2VudCApO1xuXHRcdFx0dkJpdGFuZ2VudCA9IG5vcm1hbGl6ZSggY3Jvc3MoIHZOb3JtYWwsIHZUYW5nZW50ICkgKiB0YW5nZW50LncgKTtcblx0XHQjZW5kaWZcblx0I2VuZGlmXG5cdCNpbmNsdWRlIDxiZWdpbl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxtb3JwaHRhcmdldF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2lubmluZ192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxkaXNwbGFjZW1lbnRtYXBfdmVydGV4PlxuXHQjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfdmVydGV4PlxuXHQjaW5jbHVkZSA8Zm9nX3ZlcnRleD5cblx0dlZpZXdQb3NpdGlvbiA9IC0gbXZQb3NpdGlvbi54eXo7XG59IixtZXNodG9vbl9mcmFnOiIjZGVmaW5lIFRPT05cbnVuaWZvcm0gdmVjMyBkaWZmdXNlO1xudW5pZm9ybSB2ZWMzIGVtaXNzaXZlO1xudW5pZm9ybSBmbG9hdCBvcGFjaXR5O1xuI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDxwYWNraW5nPlxuI2luY2x1ZGUgPGRpdGhlcmluZ19wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGNvbG9yX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8dXZfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDx1djJfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxhbHBoYW1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGFvbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bGlnaHRtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxlbWlzc2l2ZW1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGdyYWRpZW50bWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Zm9nX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YnNkZnM+XG4jaW5jbHVkZSA8bGlnaHRzX3BhcnNfYmVnaW4+XG4jaW5jbHVkZSA8bGlnaHRzX3Rvb25fcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxzaGFkb3dtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxidW1wbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bm9ybWFsbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc19mcmFnbWVudD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19mcmFnbWVudD5cblx0dmVjNCBkaWZmdXNlQ29sb3IgPSB2ZWM0KCBkaWZmdXNlLCBvcGFjaXR5ICk7XG5cdFJlZmxlY3RlZExpZ2h0IHJlZmxlY3RlZExpZ2h0ID0gUmVmbGVjdGVkTGlnaHQoIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICksIHZlYzMoIDAuMCApICk7XG5cdHZlYzMgdG90YWxFbWlzc2l2ZVJhZGlhbmNlID0gZW1pc3NpdmU7XG5cdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9mcmFnbWVudD5cblx0I2luY2x1ZGUgPG1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGNvbG9yX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8YWxwaGFtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxhbHBoYXRlc3RfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxub3JtYWxfZnJhZ21lbnRfYmVnaW4+XG5cdCNpbmNsdWRlIDxub3JtYWxfZnJhZ21lbnRfbWFwcz5cblx0I2luY2x1ZGUgPGVtaXNzaXZlbWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bGlnaHRzX3Rvb25fZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxsaWdodHNfZnJhZ21lbnRfYmVnaW4+XG5cdCNpbmNsdWRlIDxsaWdodHNfZnJhZ21lbnRfbWFwcz5cblx0I2luY2x1ZGUgPGxpZ2h0c19mcmFnbWVudF9lbmQ+XG5cdCNpbmNsdWRlIDxhb21hcF9mcmFnbWVudD5cblx0dmVjMyBvdXRnb2luZ0xpZ2h0ID0gcmVmbGVjdGVkTGlnaHQuZGlyZWN0RGlmZnVzZSArIHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZSArIHRvdGFsRW1pc3NpdmVSYWRpYW5jZTtcblx0Z2xfRnJhZ0NvbG9yID0gdmVjNCggb3V0Z29pbmdMaWdodCwgZGlmZnVzZUNvbG9yLmEgKTtcblx0I2luY2x1ZGUgPHRvbmVtYXBwaW5nX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8ZW5jb2RpbmdzX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8Zm9nX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8cHJlbXVsdGlwbGllZF9hbHBoYV9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGRpdGhlcmluZ19mcmFnbWVudD5cbn0iLG1lc2h0b29uX3ZlcnQ6IiNkZWZpbmUgVE9PTlxudmFyeWluZyB2ZWMzIHZWaWV3UG9zaXRpb247XG4jaWZuZGVmIEZMQVRfU0hBREVEXG5cdHZhcnlpbmcgdmVjMyB2Tm9ybWFsO1xuI2VuZGlmXG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPHV2X3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPHV2Ml9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxkaXNwbGFjZW1lbnRtYXBfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Y29sb3JfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Zm9nX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPG1vcnBodGFyZ2V0X3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPHNraW5uaW5nX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPHNoYWRvd21hcF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc192ZXJ0ZXg+XG52b2lkIG1haW4oKSB7XG5cdCNpbmNsdWRlIDx1dl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDx1djJfdmVydGV4PlxuXHQjaW5jbHVkZSA8Y29sb3JfdmVydGV4PlxuXHQjaW5jbHVkZSA8YmVnaW5ub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8bW9ycGhub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbmJhc2VfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbm5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxkZWZhdWx0bm9ybWFsX3ZlcnRleD5cbiNpZm5kZWYgRkxBVF9TSEFERURcblx0dk5vcm1hbCA9IG5vcm1hbGl6ZSggdHJhbnNmb3JtZWROb3JtYWwgKTtcbiNlbmRpZlxuXHQjaW5jbHVkZSA8YmVnaW5fdmVydGV4PlxuXHQjaW5jbHVkZSA8bW9ycGh0YXJnZXRfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbm5pbmdfdmVydGV4PlxuXHQjaW5jbHVkZSA8ZGlzcGxhY2VtZW50bWFwX3ZlcnRleD5cblx0I2luY2x1ZGUgPHByb2plY3RfdmVydGV4PlxuXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfdmVydGV4PlxuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3ZlcnRleD5cblx0dlZpZXdQb3NpdGlvbiA9IC0gbXZQb3NpdGlvbi54eXo7XG5cdCNpbmNsdWRlIDx3b3JsZHBvc192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxzaGFkb3dtYXBfdmVydGV4PlxuXHQjaW5jbHVkZSA8Zm9nX3ZlcnRleD5cbn0iLG1lc2hwaG9uZ19mcmFnOiIjZGVmaW5lIFBIT05HXG51bmlmb3JtIHZlYzMgZGlmZnVzZTtcbnVuaWZvcm0gdmVjMyBlbWlzc2l2ZTtcbnVuaWZvcm0gdmVjMyBzcGVjdWxhcjtcbnVuaWZvcm0gZmxvYXQgc2hpbmluZXNzO1xudW5pZm9ybSBmbG9hdCBvcGFjaXR5O1xuI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDxwYWNraW5nPlxuI2luY2x1ZGUgPGRpdGhlcmluZ19wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGNvbG9yX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8dXZfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDx1djJfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxhbHBoYW1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGFvbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bGlnaHRtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxlbWlzc2l2ZW1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGVudm1hcF9jb21tb25fcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxlbnZtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjdWJlX3V2X3JlZmxlY3Rpb25fZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Zm9nX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YnNkZnM+XG4jaW5jbHVkZSA8bGlnaHRzX3BhcnNfYmVnaW4+XG4jaW5jbHVkZSA8bGlnaHRzX3Bob25nX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8c2hhZG93bWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YnVtcG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPG5vcm1hbG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHNwZWN1bGFybWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc19mcmFnbWVudD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19mcmFnbWVudD5cblx0dmVjNCBkaWZmdXNlQ29sb3IgPSB2ZWM0KCBkaWZmdXNlLCBvcGFjaXR5ICk7XG5cdFJlZmxlY3RlZExpZ2h0IHJlZmxlY3RlZExpZ2h0ID0gUmVmbGVjdGVkTGlnaHQoIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICksIHZlYzMoIDAuMCApICk7XG5cdHZlYzMgdG90YWxFbWlzc2l2ZVJhZGlhbmNlID0gZW1pc3NpdmU7XG5cdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9mcmFnbWVudD5cblx0I2luY2x1ZGUgPG1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGNvbG9yX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8YWxwaGFtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxhbHBoYXRlc3RfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxzcGVjdWxhcm1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPG5vcm1hbF9mcmFnbWVudF9iZWdpbj5cblx0I2luY2x1ZGUgPG5vcm1hbF9mcmFnbWVudF9tYXBzPlxuXHQjaW5jbHVkZSA8ZW1pc3NpdmVtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxsaWdodHNfcGhvbmdfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxsaWdodHNfZnJhZ21lbnRfYmVnaW4+XG5cdCNpbmNsdWRlIDxsaWdodHNfZnJhZ21lbnRfbWFwcz5cblx0I2luY2x1ZGUgPGxpZ2h0c19mcmFnbWVudF9lbmQ+XG5cdCNpbmNsdWRlIDxhb21hcF9mcmFnbWVudD5cblx0dmVjMyBvdXRnb2luZ0xpZ2h0ID0gcmVmbGVjdGVkTGlnaHQuZGlyZWN0RGlmZnVzZSArIHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZSArIHJlZmxlY3RlZExpZ2h0LmRpcmVjdFNwZWN1bGFyICsgcmVmbGVjdGVkTGlnaHQuaW5kaXJlY3RTcGVjdWxhciArIHRvdGFsRW1pc3NpdmVSYWRpYW5jZTtcblx0I2luY2x1ZGUgPGVudm1hcF9mcmFnbWVudD5cblx0Z2xfRnJhZ0NvbG9yID0gdmVjNCggb3V0Z29pbmdMaWdodCwgZGlmZnVzZUNvbG9yLmEgKTtcblx0I2luY2x1ZGUgPHRvbmVtYXBwaW5nX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8ZW5jb2RpbmdzX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8Zm9nX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8cHJlbXVsdGlwbGllZF9hbHBoYV9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGRpdGhlcmluZ19mcmFnbWVudD5cbn0iLG1lc2hwaG9uZ192ZXJ0OiIjZGVmaW5lIFBIT05HXG52YXJ5aW5nIHZlYzMgdlZpZXdQb3NpdGlvbjtcbiNpZm5kZWYgRkxBVF9TSEFERURcblx0dmFyeWluZyB2ZWMzIHZOb3JtYWw7XG4jZW5kaWZcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8dXZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8dXYyX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGRpc3BsYWNlbWVudG1hcF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxlbnZtYXBfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Y29sb3JfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Zm9nX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPG1vcnBodGFyZ2V0X3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPHNraW5uaW5nX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPHNoYWRvd21hcF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc192ZXJ0ZXg+XG52b2lkIG1haW4oKSB7XG5cdCNpbmNsdWRlIDx1dl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDx1djJfdmVydGV4PlxuXHQjaW5jbHVkZSA8Y29sb3JfdmVydGV4PlxuXHQjaW5jbHVkZSA8YmVnaW5ub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8bW9ycGhub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbmJhc2VfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbm5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxkZWZhdWx0bm9ybWFsX3ZlcnRleD5cbiNpZm5kZWYgRkxBVF9TSEFERURcblx0dk5vcm1hbCA9IG5vcm1hbGl6ZSggdHJhbnNmb3JtZWROb3JtYWwgKTtcbiNlbmRpZlxuXHQjaW5jbHVkZSA8YmVnaW5fdmVydGV4PlxuXHQjaW5jbHVkZSA8bW9ycGh0YXJnZXRfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbm5pbmdfdmVydGV4PlxuXHQjaW5jbHVkZSA8ZGlzcGxhY2VtZW50bWFwX3ZlcnRleD5cblx0I2luY2x1ZGUgPHByb2plY3RfdmVydGV4PlxuXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfdmVydGV4PlxuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3ZlcnRleD5cblx0dlZpZXdQb3NpdGlvbiA9IC0gbXZQb3NpdGlvbi54eXo7XG5cdCNpbmNsdWRlIDx3b3JsZHBvc192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxlbnZtYXBfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2hhZG93bWFwX3ZlcnRleD5cblx0I2luY2x1ZGUgPGZvZ192ZXJ0ZXg+XG59IixtZXNocGh5c2ljYWxfZnJhZzoiI2RlZmluZSBTVEFOREFSRFxuI2lmZGVmIFBIWVNJQ0FMXG5cdCNkZWZpbmUgUkVGTEVDVElWSVRZXG5cdCNkZWZpbmUgQ0xFQVJDT0FUXG5cdCNkZWZpbmUgU1BFQ1VMQVJcbiNlbmRpZlxudW5pZm9ybSB2ZWMzIGRpZmZ1c2U7XG51bmlmb3JtIHZlYzMgZW1pc3NpdmU7XG51bmlmb3JtIGZsb2F0IHJvdWdobmVzcztcbnVuaWZvcm0gZmxvYXQgbWV0YWxuZXNzO1xudW5pZm9ybSBmbG9hdCBvcGFjaXR5O1xuI2lmZGVmIFVTRV9UUkFOU01JU1NJT05cblx0dW5pZm9ybSBmbG9hdCB0cmFuc21pc3Npb247XG5cdHVuaWZvcm0gZmxvYXQgdGhpY2tuZXNzO1xuXHR1bmlmb3JtIGZsb2F0IGF0dGVudWF0aW9uRGlzdGFuY2U7XG5cdHVuaWZvcm0gdmVjMyBhdHRlbnVhdGlvblRpbnQ7XG4jZW5kaWZcbiNpZmRlZiBSRUZMRUNUSVZJVFlcblx0dW5pZm9ybSBmbG9hdCByZWZsZWN0aXZpdHk7XG4jZW5kaWZcbiNpZmRlZiBTUEVDVUxBUlxuXHR1bmlmb3JtIGZsb2F0IHNwZWN1bGFySW50ZW5zaXR5O1xuXHR1bmlmb3JtIHZlYzMgc3BlY3VsYXJUaW50O1xuXHQjaWZkZWYgVVNFX1NQRUNVTEFSSU5URU5TSVRZTUFQXG5cdFx0dW5pZm9ybSBzYW1wbGVyMkQgc3BlY3VsYXJJbnRlbnNpdHlNYXA7XG5cdCNlbmRpZlxuXHQjaWZkZWYgVVNFX1NQRUNVTEFSVElOVE1BUFxuXHRcdHVuaWZvcm0gc2FtcGxlcjJEIHNwZWN1bGFyVGludE1hcDtcblx0I2VuZGlmXG4jZW5kaWZcbiNpZmRlZiBDTEVBUkNPQVRcblx0dW5pZm9ybSBmbG9hdCBjbGVhcmNvYXQ7XG5cdHVuaWZvcm0gZmxvYXQgY2xlYXJjb2F0Um91Z2huZXNzO1xuI2VuZGlmXG4jaWZkZWYgVVNFX1NIRUVOXG5cdHVuaWZvcm0gdmVjMyBzaGVlbjtcbiNlbmRpZlxudmFyeWluZyB2ZWMzIHZWaWV3UG9zaXRpb247XG4jaWZuZGVmIEZMQVRfU0hBREVEXG5cdHZhcnlpbmcgdmVjMyB2Tm9ybWFsO1xuXHQjaWZkZWYgVVNFX1RBTkdFTlRcblx0XHR2YXJ5aW5nIHZlYzMgdlRhbmdlbnQ7XG5cdFx0dmFyeWluZyB2ZWMzIHZCaXRhbmdlbnQ7XG5cdCNlbmRpZlxuI2VuZGlmXG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPHBhY2tpbmc+XG4jaW5jbHVkZSA8ZGl0aGVyaW5nX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Y29sb3JfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDx1dl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHV2Ml9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGFscGhhbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YW9tYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxsaWdodG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGVtaXNzaXZlbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YnNkZnM+XG4jaW5jbHVkZSA8dHJhbnNtaXNzaW9uX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Y3ViZV91dl9yZWZsZWN0aW9uX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGVudm1hcF9jb21tb25fcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxlbnZtYXBfcGh5c2ljYWxfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxmb2dfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxsaWdodHNfcGFyc19iZWdpbj5cbiNpbmNsdWRlIDxsaWdodHNfcGh5c2ljYWxfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxzaGFkb3dtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxidW1wbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bm9ybWFsbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Y2xlYXJjb2F0X3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8cm91Z2huZXNzbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bWV0YWxuZXNzbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc19mcmFnbWVudD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19mcmFnbWVudD5cblx0dmVjNCBkaWZmdXNlQ29sb3IgPSB2ZWM0KCBkaWZmdXNlLCBvcGFjaXR5ICk7XG5cdFJlZmxlY3RlZExpZ2h0IHJlZmxlY3RlZExpZ2h0ID0gUmVmbGVjdGVkTGlnaHQoIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICksIHZlYzMoIDAuMCApICk7XG5cdHZlYzMgdG90YWxFbWlzc2l2ZVJhZGlhbmNlID0gZW1pc3NpdmU7XG5cdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9mcmFnbWVudD5cblx0I2luY2x1ZGUgPG1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGNvbG9yX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8YWxwaGFtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxhbHBoYXRlc3RfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxyb3VnaG5lc3NtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxtZXRhbG5lc3NtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxub3JtYWxfZnJhZ21lbnRfYmVnaW4+XG5cdCNpbmNsdWRlIDxub3JtYWxfZnJhZ21lbnRfbWFwcz5cblx0I2luY2x1ZGUgPGNsZWFyY29hdF9ub3JtYWxfZnJhZ21lbnRfYmVnaW4+XG5cdCNpbmNsdWRlIDxjbGVhcmNvYXRfbm9ybWFsX2ZyYWdtZW50X21hcHM+XG5cdCNpbmNsdWRlIDxlbWlzc2l2ZW1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGxpZ2h0c19waHlzaWNhbF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGxpZ2h0c19mcmFnbWVudF9iZWdpbj5cblx0I2luY2x1ZGUgPGxpZ2h0c19mcmFnbWVudF9tYXBzPlxuXHQjaW5jbHVkZSA8bGlnaHRzX2ZyYWdtZW50X2VuZD5cblx0I2luY2x1ZGUgPGFvbWFwX2ZyYWdtZW50PlxuXHR2ZWMzIHRvdGFsRGlmZnVzZSA9IHJlZmxlY3RlZExpZ2h0LmRpcmVjdERpZmZ1c2UgKyByZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2U7XG5cdHZlYzMgdG90YWxTcGVjdWxhciA9IHJlZmxlY3RlZExpZ2h0LmRpcmVjdFNwZWN1bGFyICsgcmVmbGVjdGVkTGlnaHQuaW5kaXJlY3RTcGVjdWxhcjtcblx0I2luY2x1ZGUgPHRyYW5zbWlzc2lvbl9mcmFnbWVudD5cblx0dmVjMyBvdXRnb2luZ0xpZ2h0ID0gdG90YWxEaWZmdXNlICsgdG90YWxTcGVjdWxhciArIHRvdGFsRW1pc3NpdmVSYWRpYW5jZTtcblx0Z2xfRnJhZ0NvbG9yID0gdmVjNCggb3V0Z29pbmdMaWdodCwgZGlmZnVzZUNvbG9yLmEgKTtcblx0I2luY2x1ZGUgPHRvbmVtYXBwaW5nX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8ZW5jb2RpbmdzX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8Zm9nX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8cHJlbXVsdGlwbGllZF9hbHBoYV9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGRpdGhlcmluZ19mcmFnbWVudD5cbn0iLG1lc2hwaHlzaWNhbF92ZXJ0OiIjZGVmaW5lIFNUQU5EQVJEXG52YXJ5aW5nIHZlYzMgdlZpZXdQb3NpdGlvbjtcbiNpZm5kZWYgRkxBVF9TSEFERURcblx0dmFyeWluZyB2ZWMzIHZOb3JtYWw7XG5cdCNpZmRlZiBVU0VfVEFOR0VOVFxuXHRcdHZhcnlpbmcgdmVjMyB2VGFuZ2VudDtcblx0XHR2YXJ5aW5nIHZlYzMgdkJpdGFuZ2VudDtcblx0I2VuZGlmXG4jZW5kaWZcbiNpZmRlZiBVU0VfVFJBTlNNSVNTSU9OXG5cdHZhcnlpbmcgdmVjNCB2V29ybGRQb3NpdGlvbjtcbiNlbmRpZlxuI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDx1dl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDx1djJfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8ZGlzcGxhY2VtZW50bWFwX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGNvbG9yX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGZvZ19wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxtb3JwaHRhcmdldF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxza2lubmluZ19wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxzaGFkb3dtYXBfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfdmVydGV4Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8dXZfdmVydGV4PlxuXHQjaW5jbHVkZSA8dXYyX3ZlcnRleD5cblx0I2luY2x1ZGUgPGNvbG9yX3ZlcnRleD5cblx0I2luY2x1ZGUgPGJlZ2lubm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPG1vcnBobm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5iYXNlX3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5ub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8ZGVmYXVsdG5vcm1hbF92ZXJ0ZXg+XG4jaWZuZGVmIEZMQVRfU0hBREVEXG5cdHZOb3JtYWwgPSBub3JtYWxpemUoIHRyYW5zZm9ybWVkTm9ybWFsICk7XG5cdCNpZmRlZiBVU0VfVEFOR0VOVFxuXHRcdHZUYW5nZW50ID0gbm9ybWFsaXplKCB0cmFuc2Zvcm1lZFRhbmdlbnQgKTtcblx0XHR2Qml0YW5nZW50ID0gbm9ybWFsaXplKCBjcm9zcyggdk5vcm1hbCwgdlRhbmdlbnQgKSAqIHRhbmdlbnQudyApO1xuXHQjZW5kaWZcbiNlbmRpZlxuXHQjaW5jbHVkZSA8YmVnaW5fdmVydGV4PlxuXHQjaW5jbHVkZSA8bW9ycGh0YXJnZXRfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbm5pbmdfdmVydGV4PlxuXHQjaW5jbHVkZSA8ZGlzcGxhY2VtZW50bWFwX3ZlcnRleD5cblx0I2luY2x1ZGUgPHByb2plY3RfdmVydGV4PlxuXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfdmVydGV4PlxuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3ZlcnRleD5cblx0dlZpZXdQb3NpdGlvbiA9IC0gbXZQb3NpdGlvbi54eXo7XG5cdCNpbmNsdWRlIDx3b3JsZHBvc192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxzaGFkb3dtYXBfdmVydGV4PlxuXHQjaW5jbHVkZSA8Zm9nX3ZlcnRleD5cbiNpZmRlZiBVU0VfVFJBTlNNSVNTSU9OXG5cdHZXb3JsZFBvc2l0aW9uID0gd29ybGRQb3NpdGlvbjtcbiNlbmRpZlxufSIsbm9ybWFsX2ZyYWc6IiNkZWZpbmUgTk9STUFMXG51bmlmb3JtIGZsb2F0IG9wYWNpdHk7XG4jaWYgZGVmaW5lZCggRkxBVF9TSEFERUQgKSB8fCBkZWZpbmVkKCBVU0VfQlVNUE1BUCApIHx8IGRlZmluZWQoIFRBTkdFTlRTUEFDRV9OT1JNQUxNQVAgKVxuXHR2YXJ5aW5nIHZlYzMgdlZpZXdQb3NpdGlvbjtcbiNlbmRpZlxuI2lmbmRlZiBGTEFUX1NIQURFRFxuXHR2YXJ5aW5nIHZlYzMgdk5vcm1hbDtcblx0I2lmZGVmIFVTRV9UQU5HRU5UXG5cdFx0dmFyeWluZyB2ZWMzIHZUYW5nZW50O1xuXHRcdHZhcnlpbmcgdmVjMyB2Qml0YW5nZW50O1xuXHQjZW5kaWZcbiNlbmRpZlxuI2luY2x1ZGUgPHBhY2tpbmc+XG4jaW5jbHVkZSA8dXZfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxidW1wbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bm9ybWFsbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc19mcmFnbWVudD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bm9ybWFsX2ZyYWdtZW50X2JlZ2luPlxuXHQjaW5jbHVkZSA8bm9ybWFsX2ZyYWdtZW50X21hcHM+XG5cdGdsX0ZyYWdDb2xvciA9IHZlYzQoIHBhY2tOb3JtYWxUb1JHQiggbm9ybWFsICksIG9wYWNpdHkgKTtcbn0iLG5vcm1hbF92ZXJ0OiIjZGVmaW5lIE5PUk1BTFxuI2lmIGRlZmluZWQoIEZMQVRfU0hBREVEICkgfHwgZGVmaW5lZCggVVNFX0JVTVBNQVAgKSB8fCBkZWZpbmVkKCBUQU5HRU5UU1BBQ0VfTk9STUFMTUFQIClcblx0dmFyeWluZyB2ZWMzIHZWaWV3UG9zaXRpb247XG4jZW5kaWZcbiNpZm5kZWYgRkxBVF9TSEFERURcblx0dmFyeWluZyB2ZWMzIHZOb3JtYWw7XG5cdCNpZmRlZiBVU0VfVEFOR0VOVFxuXHRcdHZhcnlpbmcgdmVjMyB2VGFuZ2VudDtcblx0XHR2YXJ5aW5nIHZlYzMgdkJpdGFuZ2VudDtcblx0I2VuZGlmXG4jZW5kaWZcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8dXZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8ZGlzcGxhY2VtZW50bWFwX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPG1vcnBodGFyZ2V0X3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPHNraW5uaW5nX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX3ZlcnRleD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPHV2X3ZlcnRleD5cblx0I2luY2x1ZGUgPGJlZ2lubm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPG1vcnBobm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5iYXNlX3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5ub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8ZGVmYXVsdG5vcm1hbF92ZXJ0ZXg+XG4jaWZuZGVmIEZMQVRfU0hBREVEXG5cdHZOb3JtYWwgPSBub3JtYWxpemUoIHRyYW5zZm9ybWVkTm9ybWFsICk7XG5cdCNpZmRlZiBVU0VfVEFOR0VOVFxuXHRcdHZUYW5nZW50ID0gbm9ybWFsaXplKCB0cmFuc2Zvcm1lZFRhbmdlbnQgKTtcblx0XHR2Qml0YW5nZW50ID0gbm9ybWFsaXplKCBjcm9zcyggdk5vcm1hbCwgdlRhbmdlbnQgKSAqIHRhbmdlbnQudyApO1xuXHQjZW5kaWZcbiNlbmRpZlxuXHQjaW5jbHVkZSA8YmVnaW5fdmVydGV4PlxuXHQjaW5jbHVkZSA8bW9ycGh0YXJnZXRfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbm5pbmdfdmVydGV4PlxuXHQjaW5jbHVkZSA8ZGlzcGxhY2VtZW50bWFwX3ZlcnRleD5cblx0I2luY2x1ZGUgPHByb2plY3RfdmVydGV4PlxuXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfdmVydGV4PlxuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3ZlcnRleD5cbiNpZiBkZWZpbmVkKCBGTEFUX1NIQURFRCApIHx8IGRlZmluZWQoIFVTRV9CVU1QTUFQICkgfHwgZGVmaW5lZCggVEFOR0VOVFNQQUNFX05PUk1BTE1BUCApXG5cdHZWaWV3UG9zaXRpb24gPSAtIG12UG9zaXRpb24ueHl6O1xuI2VuZGlmXG59Iixwb2ludHNfZnJhZzoidW5pZm9ybSB2ZWMzIGRpZmZ1c2U7XG51bmlmb3JtIGZsb2F0IG9wYWNpdHk7XG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPGNvbG9yX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bWFwX3BhcnRpY2xlX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Zm9nX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc19mcmFnbWVudD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19mcmFnbWVudD5cblx0dmVjMyBvdXRnb2luZ0xpZ2h0ID0gdmVjMyggMC4wICk7XG5cdHZlYzQgZGlmZnVzZUNvbG9yID0gdmVjNCggZGlmZnVzZSwgb3BhY2l0eSApO1xuXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxtYXBfcGFydGljbGVfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxjb2xvcl9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGFscGhhdGVzdF9mcmFnbWVudD5cblx0b3V0Z29pbmdMaWdodCA9IGRpZmZ1c2VDb2xvci5yZ2I7XG5cdGdsX0ZyYWdDb2xvciA9IHZlYzQoIG91dGdvaW5nTGlnaHQsIGRpZmZ1c2VDb2xvci5hICk7XG5cdCNpbmNsdWRlIDx0b25lbWFwcGluZ19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGVuY29kaW5nc19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGZvZ19mcmFnbWVudD5cblx0I2luY2x1ZGUgPHByZW11bHRpcGxpZWRfYWxwaGFfZnJhZ21lbnQ+XG59Iixwb2ludHNfdmVydDoidW5pZm9ybSBmbG9hdCBzaXplO1xudW5pZm9ybSBmbG9hdCBzY2FsZTtcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8Y29sb3JfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Zm9nX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPG1vcnBodGFyZ2V0X3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX3ZlcnRleD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPGNvbG9yX3ZlcnRleD5cblx0I2luY2x1ZGUgPGJlZ2luX3ZlcnRleD5cblx0I2luY2x1ZGUgPG1vcnBodGFyZ2V0X3ZlcnRleD5cblx0I2luY2x1ZGUgPHByb2plY3RfdmVydGV4PlxuXHRnbF9Qb2ludFNpemUgPSBzaXplO1xuXHQjaWZkZWYgVVNFX1NJWkVBVFRFTlVBVElPTlxuXHRcdGJvb2wgaXNQZXJzcGVjdGl2ZSA9IGlzUGVyc3BlY3RpdmVNYXRyaXgoIHByb2plY3Rpb25NYXRyaXggKTtcblx0XHRpZiAoIGlzUGVyc3BlY3RpdmUgKSBnbF9Qb2ludFNpemUgKj0gKCBzY2FsZSAvIC0gbXZQb3NpdGlvbi56ICk7XG5cdCNlbmRpZlxuXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfdmVydGV4PlxuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3ZlcnRleD5cblx0I2luY2x1ZGUgPHdvcmxkcG9zX3ZlcnRleD5cblx0I2luY2x1ZGUgPGZvZ192ZXJ0ZXg+XG59IixzaGFkb3dfZnJhZzoidW5pZm9ybSB2ZWMzIGNvbG9yO1xudW5pZm9ybSBmbG9hdCBvcGFjaXR5O1xuI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDxwYWNraW5nPlxuI2luY2x1ZGUgPGZvZ19wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGJzZGZzPlxuI2luY2x1ZGUgPGxpZ2h0c19wYXJzX2JlZ2luPlxuI2luY2x1ZGUgPHNoYWRvd21hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHNoYWRvd21hc2tfcGFyc19mcmFnbWVudD5cbnZvaWQgbWFpbigpIHtcblx0Z2xfRnJhZ0NvbG9yID0gdmVjNCggY29sb3IsIG9wYWNpdHkgKiAoIDEuMCAtIGdldFNoYWRvd01hc2soKSApICk7XG5cdCNpbmNsdWRlIDx0b25lbWFwcGluZ19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGVuY29kaW5nc19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGZvZ19mcmFnbWVudD5cbn0iLHNoYWRvd192ZXJ0OiIjaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPGZvZ19wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxzaGFkb3dtYXBfcGFyc192ZXJ0ZXg+XG52b2lkIG1haW4oKSB7XG5cdCNpbmNsdWRlIDxiZWdpbl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD5cblx0I2luY2x1ZGUgPHdvcmxkcG9zX3ZlcnRleD5cblx0I2luY2x1ZGUgPGJlZ2lubm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPG1vcnBobm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5iYXNlX3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5ub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8ZGVmYXVsdG5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxzaGFkb3dtYXBfdmVydGV4PlxuXHQjaW5jbHVkZSA8Zm9nX3ZlcnRleD5cbn0iLHNwcml0ZV9mcmFnOiJ1bmlmb3JtIHZlYzMgZGlmZnVzZTtcbnVuaWZvcm0gZmxvYXQgb3BhY2l0eTtcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8dXZfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxhbHBoYW1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGZvZ19wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfZnJhZ21lbnQ+XG52b2lkIG1haW4oKSB7XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfZnJhZ21lbnQ+XG5cdHZlYzMgb3V0Z29pbmdMaWdodCA9IHZlYzMoIDAuMCApO1xuXHR2ZWM0IGRpZmZ1c2VDb2xvciA9IHZlYzQoIGRpZmZ1c2UsIG9wYWNpdHkgKTtcblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8YWxwaGFtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxhbHBoYXRlc3RfZnJhZ21lbnQ+XG5cdG91dGdvaW5nTGlnaHQgPSBkaWZmdXNlQ29sb3IucmdiO1xuXHRnbF9GcmFnQ29sb3IgPSB2ZWM0KCBvdXRnb2luZ0xpZ2h0LCBkaWZmdXNlQ29sb3IuYSApO1xuXHQjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxlbmNvZGluZ3NfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxmb2dfZnJhZ21lbnQ+XG59IixzcHJpdGVfdmVydDoidW5pZm9ybSBmbG9hdCByb3RhdGlvbjtcbnVuaWZvcm0gdmVjMiBjZW50ZXI7XG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPHV2X3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGZvZ19wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc192ZXJ0ZXg+XG52b2lkIG1haW4oKSB7XG5cdCNpbmNsdWRlIDx1dl92ZXJ0ZXg+XG5cdHZlYzQgbXZQb3NpdGlvbiA9IG1vZGVsVmlld01hdHJpeCAqIHZlYzQoIDAuMCwgMC4wLCAwLjAsIDEuMCApO1xuXHR2ZWMyIHNjYWxlO1xuXHRzY2FsZS54ID0gbGVuZ3RoKCB2ZWMzKCBtb2RlbE1hdHJpeFsgMCBdLngsIG1vZGVsTWF0cml4WyAwIF0ueSwgbW9kZWxNYXRyaXhbIDAgXS56ICkgKTtcblx0c2NhbGUueSA9IGxlbmd0aCggdmVjMyggbW9kZWxNYXRyaXhbIDEgXS54LCBtb2RlbE1hdHJpeFsgMSBdLnksIG1vZGVsTWF0cml4WyAxIF0ueiApICk7XG5cdCNpZm5kZWYgVVNFX1NJWkVBVFRFTlVBVElPTlxuXHRcdGJvb2wgaXNQZXJzcGVjdGl2ZSA9IGlzUGVyc3BlY3RpdmVNYXRyaXgoIHByb2plY3Rpb25NYXRyaXggKTtcblx0XHRpZiAoIGlzUGVyc3BlY3RpdmUgKSBzY2FsZSAqPSAtIG12UG9zaXRpb24uejtcblx0I2VuZGlmXG5cdHZlYzIgYWxpZ25lZFBvc2l0aW9uID0gKCBwb3NpdGlvbi54eSAtICggY2VudGVyIC0gdmVjMiggMC41ICkgKSApICogc2NhbGU7XG5cdHZlYzIgcm90YXRlZFBvc2l0aW9uO1xuXHRyb3RhdGVkUG9zaXRpb24ueCA9IGNvcyggcm90YXRpb24gKSAqIGFsaWduZWRQb3NpdGlvbi54IC0gc2luKCByb3RhdGlvbiApICogYWxpZ25lZFBvc2l0aW9uLnk7XG5cdHJvdGF0ZWRQb3NpdGlvbi55ID0gc2luKCByb3RhdGlvbiApICogYWxpZ25lZFBvc2l0aW9uLnggKyBjb3MoIHJvdGF0aW9uICkgKiBhbGlnbmVkUG9zaXRpb24ueTtcblx0bXZQb3NpdGlvbi54eSArPSByb3RhdGVkUG9zaXRpb247XG5cdGdsX1Bvc2l0aW9uID0gcHJvamVjdGlvbk1hdHJpeCAqIG12UG9zaXRpb247XG5cdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfdmVydGV4PlxuXHQjaW5jbHVkZSA8Zm9nX3ZlcnRleD5cbn0ifSxRY3Q9e2NvbW1vbjp7ZGlmZnVzZTp7dmFsdWU6bmV3IFpsdCgxNjc3NzIxNSl9LG9wYWNpdHk6e3ZhbHVlOjF9LG1hcDp7dmFsdWU6bnVsbH0sdXZUcmFuc2Zvcm06e3ZhbHVlOm5ldyBoc3R9LHV2MlRyYW5zZm9ybTp7dmFsdWU6bmV3IGhzdH0sYWxwaGFNYXA6e3ZhbHVlOm51bGx9fSxzcGVjdWxhcm1hcDp7c3BlY3VsYXJNYXA6e3ZhbHVlOm51bGx9fSxlbnZtYXA6e2Vudk1hcDp7dmFsdWU6bnVsbH0sZmxpcEVudk1hcDp7dmFsdWU6LTF9LHJlZmxlY3Rpdml0eTp7dmFsdWU6MX0scmVmcmFjdGlvblJhdGlvOnt2YWx1ZTouOTh9LG1heE1pcExldmVsOnt2YWx1ZTowfX0sYW9tYXA6e2FvTWFwOnt2YWx1ZTpudWxsfSxhb01hcEludGVuc2l0eTp7dmFsdWU6MX19LGxpZ2h0bWFwOntsaWdodE1hcDp7dmFsdWU6bnVsbH0sbGlnaHRNYXBJbnRlbnNpdHk6e3ZhbHVlOjF9fSxlbWlzc2l2ZW1hcDp7ZW1pc3NpdmVNYXA6e3ZhbHVlOm51bGx9fSxidW1wbWFwOntidW1wTWFwOnt2YWx1ZTpudWxsfSxidW1wU2NhbGU6e3ZhbHVlOjF9fSxub3JtYWxtYXA6e25vcm1hbE1hcDp7dmFsdWU6bnVsbH0sbm9ybWFsU2NhbGU6e3ZhbHVlOm5ldyBnc3QoMSwxKX19LGRpc3BsYWNlbWVudG1hcDp7ZGlzcGxhY2VtZW50TWFwOnt2YWx1ZTpudWxsfSxkaXNwbGFjZW1lbnRTY2FsZTp7dmFsdWU6MX0sZGlzcGxhY2VtZW50Qmlhczp7dmFsdWU6MH19LHJvdWdobmVzc21hcDp7cm91Z2huZXNzTWFwOnt2YWx1ZTpudWxsfX0sbWV0YWxuZXNzbWFwOnttZXRhbG5lc3NNYXA6e3ZhbHVlOm51bGx9fSxncmFkaWVudG1hcDp7Z3JhZGllbnRNYXA6e3ZhbHVlOm51bGx9fSxmb2c6e2ZvZ0RlbnNpdHk6e3ZhbHVlOjI1ZS01fSxmb2dOZWFyOnt2YWx1ZToxfSxmb2dGYXI6e3ZhbHVlOjJlM30sZm9nQ29sb3I6e3ZhbHVlOm5ldyBabHQoMTY3NzcyMTUpfX0sbGlnaHRzOnthbWJpZW50TGlnaHRDb2xvcjp7dmFsdWU6W119LGxpZ2h0UHJvYmU6e3ZhbHVlOltdfSxkaXJlY3Rpb25hbExpZ2h0czp7dmFsdWU6W10scHJvcGVydGllczp7ZGlyZWN0aW9uOnt9LGNvbG9yOnt9fX0sZGlyZWN0aW9uYWxMaWdodFNoYWRvd3M6e3ZhbHVlOltdLHByb3BlcnRpZXM6e3NoYWRvd0JpYXM6e30sc2hhZG93Tm9ybWFsQmlhczp7fSxzaGFkb3dSYWRpdXM6e30sc2hhZG93TWFwU2l6ZTp7fX19LGRpcmVjdGlvbmFsU2hhZG93TWFwOnt2YWx1ZTpbXX0sZGlyZWN0aW9uYWxTaGFkb3dNYXRyaXg6e3ZhbHVlOltdfSxzcG90TGlnaHRzOnt2YWx1ZTpbXSxwcm9wZXJ0aWVzOntjb2xvcjp7fSxwb3NpdGlvbjp7fSxkaXJlY3Rpb246e30sZGlzdGFuY2U6e30sY29uZUNvczp7fSxwZW51bWJyYUNvczp7fSxkZWNheTp7fX19LHNwb3RMaWdodFNoYWRvd3M6e3ZhbHVlOltdLHByb3BlcnRpZXM6e3NoYWRvd0JpYXM6e30sc2hhZG93Tm9ybWFsQmlhczp7fSxzaGFkb3dSYWRpdXM6e30sc2hhZG93TWFwU2l6ZTp7fX19LHNwb3RTaGFkb3dNYXA6e3ZhbHVlOltdfSxzcG90U2hhZG93TWF0cml4Ont2YWx1ZTpbXX0scG9pbnRMaWdodHM6e3ZhbHVlOltdLHByb3BlcnRpZXM6e2NvbG9yOnt9LHBvc2l0aW9uOnt9LGRlY2F5Ont9LGRpc3RhbmNlOnt9fX0scG9pbnRMaWdodFNoYWRvd3M6e3ZhbHVlOltdLHByb3BlcnRpZXM6e3NoYWRvd0JpYXM6e30sc2hhZG93Tm9ybWFsQmlhczp7fSxzaGFkb3dSYWRpdXM6e30sc2hhZG93TWFwU2l6ZTp7fSxzaGFkb3dDYW1lcmFOZWFyOnt9LHNoYWRvd0NhbWVyYUZhcjp7fX19LHBvaW50U2hhZG93TWFwOnt2YWx1ZTpbXX0scG9pbnRTaGFkb3dNYXRyaXg6e3ZhbHVlOltdfSxoZW1pc3BoZXJlTGlnaHRzOnt2YWx1ZTpbXSxwcm9wZXJ0aWVzOntkaXJlY3Rpb246e30sc2t5Q29sb3I6e30sZ3JvdW5kQ29sb3I6e319fSxyZWN0QXJlYUxpZ2h0czp7dmFsdWU6W10scHJvcGVydGllczp7Y29sb3I6e30scG9zaXRpb246e30sd2lkdGg6e30saGVpZ2h0Ont9fX0sbHRjXzE6e3ZhbHVlOm51bGx9LGx0Y18yOnt2YWx1ZTpudWxsfX0scG9pbnRzOntkaWZmdXNlOnt2YWx1ZTpuZXcgWmx0KDE2Nzc3MjE1KX0sb3BhY2l0eTp7dmFsdWU6MX0sc2l6ZTp7dmFsdWU6MX0sc2NhbGU6e3ZhbHVlOjF9LG1hcDp7dmFsdWU6bnVsbH0sYWxwaGFNYXA6e3ZhbHVlOm51bGx9LHV2VHJhbnNmb3JtOnt2YWx1ZTpuZXcgaHN0fX0sc3ByaXRlOntkaWZmdXNlOnt2YWx1ZTpuZXcgWmx0KDE2Nzc3MjE1KX0sb3BhY2l0eTp7dmFsdWU6MX0sY2VudGVyOnt2YWx1ZTpuZXcgZ3N0KC41LC41KX0scm90YXRpb246e3ZhbHVlOjB9LG1hcDp7dmFsdWU6bnVsbH0sYWxwaGFNYXA6e3ZhbHVlOm51bGx9LHV2VHJhbnNmb3JtOnt2YWx1ZTpuZXcgaHN0fX19LCRjdD17YmFzaWM6e3VuaWZvcm1zOkFjdChbUWN0LmNvbW1vbixRY3Quc3BlY3VsYXJtYXAsUWN0LmVudm1hcCxRY3QuYW9tYXAsUWN0LmxpZ2h0bWFwLFFjdC5mb2ddKSx2ZXJ0ZXhTaGFkZXI6SmN0Lm1lc2hiYXNpY192ZXJ0LGZyYWdtZW50U2hhZGVyOkpjdC5tZXNoYmFzaWNfZnJhZ30sbGFtYmVydDp7dW5pZm9ybXM6QWN0KFtRY3QuY29tbW9uLFFjdC5zcGVjdWxhcm1hcCxRY3QuZW52bWFwLFFjdC5hb21hcCxRY3QubGlnaHRtYXAsUWN0LmVtaXNzaXZlbWFwLFFjdC5mb2csUWN0LmxpZ2h0cyx7ZW1pc3NpdmU6e3ZhbHVlOm5ldyBabHQoMCl9fV0pLHZlcnRleFNoYWRlcjpKY3QubWVzaGxhbWJlcnRfdmVydCxmcmFnbWVudFNoYWRlcjpKY3QubWVzaGxhbWJlcnRfZnJhZ30scGhvbmc6e3VuaWZvcm1zOkFjdChbUWN0LmNvbW1vbixRY3Quc3BlY3VsYXJtYXAsUWN0LmVudm1hcCxRY3QuYW9tYXAsUWN0LmxpZ2h0bWFwLFFjdC5lbWlzc2l2ZW1hcCxRY3QuYnVtcG1hcCxRY3Qubm9ybWFsbWFwLFFjdC5kaXNwbGFjZW1lbnRtYXAsUWN0LmZvZyxRY3QubGlnaHRzLHtlbWlzc2l2ZTp7dmFsdWU6bmV3IFpsdCgwKX0sc3BlY3VsYXI6e3ZhbHVlOm5ldyBabHQoMTExODQ4MSl9LHNoaW5pbmVzczp7dmFsdWU6MzB9fV0pLHZlcnRleFNoYWRlcjpKY3QubWVzaHBob25nX3ZlcnQsZnJhZ21lbnRTaGFkZXI6SmN0Lm1lc2hwaG9uZ19mcmFnfSxzdGFuZGFyZDp7dW5pZm9ybXM6QWN0KFtRY3QuY29tbW9uLFFjdC5lbnZtYXAsUWN0LmFvbWFwLFFjdC5saWdodG1hcCxRY3QuZW1pc3NpdmVtYXAsUWN0LmJ1bXBtYXAsUWN0Lm5vcm1hbG1hcCxRY3QuZGlzcGxhY2VtZW50bWFwLFFjdC5yb3VnaG5lc3NtYXAsUWN0Lm1ldGFsbmVzc21hcCxRY3QuZm9nLFFjdC5saWdodHMse2VtaXNzaXZlOnt2YWx1ZTpuZXcgWmx0KDApfSxyb3VnaG5lc3M6e3ZhbHVlOjF9LG1ldGFsbmVzczp7dmFsdWU6MH0sZW52TWFwSW50ZW5zaXR5Ont2YWx1ZToxfX1dKSx2ZXJ0ZXhTaGFkZXI6SmN0Lm1lc2hwaHlzaWNhbF92ZXJ0LGZyYWdtZW50U2hhZGVyOkpjdC5tZXNocGh5c2ljYWxfZnJhZ30sdG9vbjp7dW5pZm9ybXM6QWN0KFtRY3QuY29tbW9uLFFjdC5hb21hcCxRY3QubGlnaHRtYXAsUWN0LmVtaXNzaXZlbWFwLFFjdC5idW1wbWFwLFFjdC5ub3JtYWxtYXAsUWN0LmRpc3BsYWNlbWVudG1hcCxRY3QuZ3JhZGllbnRtYXAsUWN0LmZvZyxRY3QubGlnaHRzLHtlbWlzc2l2ZTp7dmFsdWU6bmV3IFpsdCgwKX19XSksdmVydGV4U2hhZGVyOkpjdC5tZXNodG9vbl92ZXJ0LGZyYWdtZW50U2hhZGVyOkpjdC5tZXNodG9vbl9mcmFnfSxtYXRjYXA6e3VuaWZvcm1zOkFjdChbUWN0LmNvbW1vbixRY3QuYnVtcG1hcCxRY3Qubm9ybWFsbWFwLFFjdC5kaXNwbGFjZW1lbnRtYXAsUWN0LmZvZyx7bWF0Y2FwOnt2YWx1ZTpudWxsfX1dKSx2ZXJ0ZXhTaGFkZXI6SmN0Lm1lc2htYXRjYXBfdmVydCxmcmFnbWVudFNoYWRlcjpKY3QubWVzaG1hdGNhcF9mcmFnfSxwb2ludHM6e3VuaWZvcm1zOkFjdChbUWN0LnBvaW50cyxRY3QuZm9nXSksdmVydGV4U2hhZGVyOkpjdC5wb2ludHNfdmVydCxmcmFnbWVudFNoYWRlcjpKY3QucG9pbnRzX2ZyYWd9LGRhc2hlZDp7dW5pZm9ybXM6QWN0KFtRY3QuY29tbW9uLFFjdC5mb2cse3NjYWxlOnt2YWx1ZToxfSxkYXNoU2l6ZTp7dmFsdWU6MX0sdG90YWxTaXplOnt2YWx1ZToyfX1dKSx2ZXJ0ZXhTaGFkZXI6SmN0LmxpbmVkYXNoZWRfdmVydCxmcmFnbWVudFNoYWRlcjpKY3QubGluZWRhc2hlZF9mcmFnfSxkZXB0aDp7dW5pZm9ybXM6QWN0KFtRY3QuY29tbW9uLFFjdC5kaXNwbGFjZW1lbnRtYXBdKSx2ZXJ0ZXhTaGFkZXI6SmN0LmRlcHRoX3ZlcnQsZnJhZ21lbnRTaGFkZXI6SmN0LmRlcHRoX2ZyYWd9LG5vcm1hbDp7dW5pZm9ybXM6QWN0KFtRY3QuY29tbW9uLFFjdC5idW1wbWFwLFFjdC5ub3JtYWxtYXAsUWN0LmRpc3BsYWNlbWVudG1hcCx7b3BhY2l0eTp7dmFsdWU6MX19XSksdmVydGV4U2hhZGVyOkpjdC5ub3JtYWxfdmVydCxmcmFnbWVudFNoYWRlcjpKY3Qubm9ybWFsX2ZyYWd9LHNwcml0ZTp7dW5pZm9ybXM6QWN0KFtRY3Quc3ByaXRlLFFjdC5mb2ddKSx2ZXJ0ZXhTaGFkZXI6SmN0LnNwcml0ZV92ZXJ0LGZyYWdtZW50U2hhZGVyOkpjdC5zcHJpdGVfZnJhZ30sYmFja2dyb3VuZDp7dW5pZm9ybXM6e3V2VHJhbnNmb3JtOnt2YWx1ZTpuZXcgaHN0fSx0MkQ6e3ZhbHVlOm51bGx9fSx2ZXJ0ZXhTaGFkZXI6SmN0LmJhY2tncm91bmRfdmVydCxmcmFnbWVudFNoYWRlcjpKY3QuYmFja2dyb3VuZF9mcmFnfSxjdWJlOnt1bmlmb3JtczpBY3QoW1FjdC5lbnZtYXAse29wYWNpdHk6e3ZhbHVlOjF9fV0pLHZlcnRleFNoYWRlcjpKY3QuY3ViZV92ZXJ0LGZyYWdtZW50U2hhZGVyOkpjdC5jdWJlX2ZyYWd9LGVxdWlyZWN0Ont1bmlmb3Jtczp7dEVxdWlyZWN0Ont2YWx1ZTpudWxsfX0sdmVydGV4U2hhZGVyOkpjdC5lcXVpcmVjdF92ZXJ0LGZyYWdtZW50U2hhZGVyOkpjdC5lcXVpcmVjdF9mcmFnfSxkaXN0YW5jZVJHQkE6e3VuaWZvcm1zOkFjdChbUWN0LmNvbW1vbixRY3QuZGlzcGxhY2VtZW50bWFwLHtyZWZlcmVuY2VQb3NpdGlvbjp7dmFsdWU6bmV3IHdzdH0sbmVhckRpc3RhbmNlOnt2YWx1ZToxfSxmYXJEaXN0YW5jZTp7dmFsdWU6MWUzfX1dKSx2ZXJ0ZXhTaGFkZXI6SmN0LmRpc3RhbmNlUkdCQV92ZXJ0LGZyYWdtZW50U2hhZGVyOkpjdC5kaXN0YW5jZVJHQkFfZnJhZ30sc2hhZG93Ont1bmlmb3JtczpBY3QoW1FjdC5saWdodHMsUWN0LmZvZyx7Y29sb3I6e3ZhbHVlOm5ldyBabHQoMCl9LG9wYWNpdHk6e3ZhbHVlOjF9fV0pLHZlcnRleFNoYWRlcjpKY3Quc2hhZG93X3ZlcnQsZnJhZ21lbnRTaGFkZXI6SmN0LnNoYWRvd19mcmFnfX07ZnVuY3Rpb24gdGR0KHQsZSxuLG8saSl7Y29uc3QgYT1uZXcgWmx0KDApO2xldCByLHMsbD0wLGM9bnVsbCxkPTAscD1udWxsO2Z1bmN0aW9uIG0odCxlKXtuLmJ1ZmZlcnMuY29sb3Iuc2V0Q2xlYXIodC5yLHQuZyx0LmIsZSxpKX1yZXR1cm57Z2V0Q2xlYXJDb2xvcjpmdW5jdGlvbigpe3JldHVybiBhfSxzZXRDbGVhckNvbG9yOmZ1bmN0aW9uKHQsZT0xKXthLnNldCh0KSxsPWUsbShhLGwpfSxnZXRDbGVhckFscGhhOmZ1bmN0aW9uKCl7cmV0dXJuIGx9LHNldENsZWFyQWxwaGE6ZnVuY3Rpb24odCl7bD10LG0oYSxsKX0scmVuZGVyOmZ1bmN0aW9uIGYobixpKXtsZXQgZj0hMSx1PSEwPT09aS5pc1NjZW5lP2kuYmFja2dyb3VuZDpudWxsO3UmJnUuaXNUZXh0dXJlJiYodT1lLmdldCh1KSk7Y29uc3QgZz10LnhyLGg9Zy5nZXRTZXNzaW9uJiZnLmdldFNlc3Npb24oKTtoJiYiYWRkaXRpdmUiPT09aC5lbnZpcm9ubWVudEJsZW5kTW9kZSYmKHU9bnVsbCksbnVsbD09PXU/bShhLGwpOnUmJnUuaXNDb2xvciYmKG0odSwxKSxmPSEwKSwodC5hdXRvQ2xlYXJ8fGYpJiZ0LmNsZWFyKHQuYXV0b0NsZWFyQ29sb3IsdC5hdXRvQ2xlYXJEZXB0aCx0LmF1dG9DbGVhclN0ZW5jaWwpLHUmJih1LmlzQ3ViZVRleHR1cmV8fHUubWFwcGluZz09PVNydCk/KHZvaWQgMD09PXMmJihzPW5ldyBTY3QobmV3IFJjdCgxLDEsMSksbmV3IE5jdCh7bmFtZToiQmFja2dyb3VuZEN1YmVNYXRlcmlhbCIsdW5pZm9ybXM6RWN0KCRjdC5jdWJlLnVuaWZvcm1zKSx2ZXJ0ZXhTaGFkZXI6JGN0LmN1YmUudmVydGV4U2hhZGVyLGZyYWdtZW50U2hhZGVyOiRjdC5jdWJlLmZyYWdtZW50U2hhZGVyLHNpZGU6MSxkZXB0aFRlc3Q6ITEsZGVwdGhXcml0ZTohMSxmb2c6ITF9KSkscy5nZW9tZXRyeS5kZWxldGVBdHRyaWJ1dGUoIm5vcm1hbCIpLHMuZ2VvbWV0cnkuZGVsZXRlQXR0cmlidXRlKCJ1diIpLHMub25CZWZvcmVSZW5kZXI9ZnVuY3Rpb24odCxlLG4pe3RoaXMubWF0cml4V29ybGQuY29weVBvc2l0aW9uKG4ubWF0cml4V29ybGQpfSxPYmplY3QuZGVmaW5lUHJvcGVydHkocy5tYXRlcmlhbCwiZW52TWFwIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudW5pZm9ybXMuZW52TWFwLnZhbHVlfX0pLG8udXBkYXRlKHMpKSxzLm1hdGVyaWFsLnVuaWZvcm1zLmVudk1hcC52YWx1ZT11LHMubWF0ZXJpYWwudW5pZm9ybXMuZmxpcEVudk1hcC52YWx1ZT11LmlzQ3ViZVRleHR1cmUmJiExPT09dS5pc1JlbmRlclRhcmdldFRleHR1cmU/LTE6MSxjPT09dSYmZD09PXUudmVyc2lvbiYmcD09PXQudG9uZU1hcHBpbmd8fChzLm1hdGVyaWFsLm5lZWRzVXBkYXRlPSEwLGM9dSxkPXUudmVyc2lvbixwPXQudG9uZU1hcHBpbmcpLG4udW5zaGlmdChzLHMuZ2VvbWV0cnkscy5tYXRlcmlhbCwwLDAsbnVsbCkpOnUmJnUuaXNUZXh0dXJlJiYodm9pZCAwPT09ciYmKHI9bmV3IFNjdChuZXcgS2N0KDIsMiksbmV3IE5jdCh7bmFtZToiQmFja2dyb3VuZE1hdGVyaWFsIix1bmlmb3JtczpFY3QoJGN0LmJhY2tncm91bmQudW5pZm9ybXMpLHZlcnRleFNoYWRlcjokY3QuYmFja2dyb3VuZC52ZXJ0ZXhTaGFkZXIsZnJhZ21lbnRTaGFkZXI6JGN0LmJhY2tncm91bmQuZnJhZ21lbnRTaGFkZXIsc2lkZTowLGRlcHRoVGVzdDohMSxkZXB0aFdyaXRlOiExLGZvZzohMX0pKSxyLmdlb21ldHJ5LmRlbGV0ZUF0dHJpYnV0ZSgibm9ybWFsIiksT2JqZWN0LmRlZmluZVByb3BlcnR5KHIubWF0ZXJpYWwsIm1hcCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnVuaWZvcm1zLnQyRC52YWx1ZX19KSxvLnVwZGF0ZShyKSksci5tYXRlcmlhbC51bmlmb3Jtcy50MkQudmFsdWU9dSwhMD09PXUubWF0cml4QXV0b1VwZGF0ZSYmdS51cGRhdGVNYXRyaXgoKSxyLm1hdGVyaWFsLnVuaWZvcm1zLnV2VHJhbnNmb3JtLnZhbHVlLmNvcHkodS5tYXRyaXgpLGM9PT11JiZkPT09dS52ZXJzaW9uJiZwPT09dC50b25lTWFwcGluZ3x8KHIubWF0ZXJpYWwubmVlZHNVcGRhdGU9ITAsYz11LGQ9dS52ZXJzaW9uLHA9dC50b25lTWFwcGluZyksbi51bnNoaWZ0KHIsci5nZW9tZXRyeSxyLm1hdGVyaWFsLDAsMCxudWxsKSl9fX1mdW5jdGlvbiBlZHQodCxlLG4sbyl7Y29uc3QgaT10LmdldFBhcmFtZXRlcigzNDkyMSksYT1vLmlzV2ViR0wyP251bGw6ZS5nZXQoIk9FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0Iikscj1vLmlzV2ViR0wyfHxudWxsIT09YSxzPXt9LGw9bShudWxsKTtsZXQgYz1sO2Z1bmN0aW9uIGQoZSl7cmV0dXJuIG8uaXNXZWJHTDI/dC5iaW5kVmVydGV4QXJyYXkoZSk6YS5iaW5kVmVydGV4QXJyYXlPRVMoZSl9ZnVuY3Rpb24gcChlKXtyZXR1cm4gby5pc1dlYkdMMj90LmRlbGV0ZVZlcnRleEFycmF5KGUpOmEuZGVsZXRlVmVydGV4QXJyYXlPRVMoZSl9ZnVuY3Rpb24gbSh0KXtjb25zdCBlPVtdLG49W10sbz1bXTtmb3IobGV0IHQ9MDt0PGk7dCsrKWVbdF09MCxuW3RdPTAsb1t0XT0wO3JldHVybntnZW9tZXRyeTpudWxsLHByb2dyYW06bnVsbCx3aXJlZnJhbWU6ITEsbmV3QXR0cmlidXRlczplLGVuYWJsZWRBdHRyaWJ1dGVzOm4sYXR0cmlidXRlRGl2aXNvcnM6byxvYmplY3Q6dCxhdHRyaWJ1dGVzOnt9LGluZGV4Om51bGx9fWZ1bmN0aW9uIGYoKXtjb25zdCB0PWMubmV3QXR0cmlidXRlcztmb3IobGV0IGU9MCxuPXQubGVuZ3RoO2U8bjtlKyspdFtlXT0wfWZ1bmN0aW9uIHUodCl7Zyh0LDApfWZ1bmN0aW9uIGcobixpKXtjb25zdCBhPWMuZW5hYmxlZEF0dHJpYnV0ZXMscj1jLmF0dHJpYnV0ZURpdmlzb3JzO2lmKGMubmV3QXR0cmlidXRlc1tuXT0xLDA9PT1hW25dJiYodC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShuKSxhW25dPTEpLHJbbl0hPT1pKXsoby5pc1dlYkdMMj90OmUuZ2V0KCJBTkdMRV9pbnN0YW5jZWRfYXJyYXlzIikpW28uaXNXZWJHTDI/InZlcnRleEF0dHJpYkRpdmlzb3IiOiJ2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUiXShuLGkpLHJbbl09aX19ZnVuY3Rpb24gaCgpe2NvbnN0IGU9Yy5uZXdBdHRyaWJ1dGVzLG49Yy5lbmFibGVkQXR0cmlidXRlcztmb3IobGV0IG89MCxpPW4ubGVuZ3RoO288aTtvKyspbltvXSE9PWVbb10mJih0LmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShvKSxuW29dPTApfWZ1bmN0aW9uIGIoZSxuLGksYSxyLHMpeyEwIT09by5pc1dlYkdMMnx8NTEyNCE9PWkmJjUxMjUhPT1pP3QudmVydGV4QXR0cmliUG9pbnRlcihlLG4saSxhLHIscyk6dC52ZXJ0ZXhBdHRyaWJJUG9pbnRlcihlLG4saSxyLHMpfWZ1bmN0aW9uIHkoKXtfKCksYyE9PWwmJihjPWwsZChjLm9iamVjdCkpfWZ1bmN0aW9uIF8oKXtsLmdlb21ldHJ5PW51bGwsbC5wcm9ncmFtPW51bGwsbC53aXJlZnJhbWU9ITF9cmV0dXJue3NldHVwOmZ1bmN0aW9uIEMoaSxsLHAseSxfKXtsZXQgQz0hMTtpZihyKXtjb25zdCBlPShmdW5jdGlvbiBNKGUsbixpKXtjb25zdCByPSEwPT09aS53aXJlZnJhbWU7bGV0IGw9c1tlLmlkXTt2b2lkIDA9PT1sJiYobD17fSxzW2UuaWRdPWwpO2xldCBjPWxbbi5pZF07dm9pZCAwPT09YyYmKGM9e30sbFtuLmlkXT1jKTtsZXQgZD1jW3JdO3ZvaWQgMD09PWQmJihkPW0oKGZ1bmN0aW9uIHAoKXtyZXR1cm4gby5pc1dlYkdMMj90LmNyZWF0ZVZlcnRleEFycmF5KCk6YS5jcmVhdGVWZXJ0ZXhBcnJheU9FUygpfSkoKSksY1tyXT1kKTtyZXR1cm4gZH0pKHkscCxsKTtjIT09ZSYmKGM9ZSxkKGMub2JqZWN0KSksQz0oZnVuY3Rpb24gdih0LGUpe2NvbnN0IG49Yy5hdHRyaWJ1dGVzLG89dC5hdHRyaWJ1dGVzO2xldCBpPTA7Zm9yKGNvbnN0IHQgaW4gbyl7Y29uc3QgZT1uW3RdLGE9b1t0XTtpZih2b2lkIDA9PT1lKXJldHVybiEwO2lmKGUuYXR0cmlidXRlIT09YSlyZXR1cm4hMDtpZihlLmRhdGEhPT1hLmRhdGEpcmV0dXJuITA7aSsrfXJldHVybiBjLmF0dHJpYnV0ZXNOdW0hPT1pfHxjLmluZGV4IT09ZX0pKHksXyksQyYmKGZ1bmN0aW9uIHgodCxlKXtjb25zdCBuPXt9LG89dC5hdHRyaWJ1dGVzO2xldCBpPTA7Zm9yKGNvbnN0IHQgaW4gbyl7Y29uc3QgZT1vW3RdLGE9e307YS5hdHRyaWJ1dGU9ZSxlLmRhdGEmJihhLmRhdGE9ZS5kYXRhKSxuW3RdPWEsaSsrfWMuYXR0cmlidXRlcz1uLGMuYXR0cmlidXRlc051bT1pLGMuaW5kZXg9ZX0pKHksXyl9ZWxzZXtjb25zdCB0PSEwPT09bC53aXJlZnJhbWU7Yy5nZW9tZXRyeT09PXkuaWQmJmMucHJvZ3JhbT09PXAuaWQmJmMud2lyZWZyYW1lPT09dHx8KGMuZ2VvbWV0cnk9eS5pZCxjLnByb2dyYW09cC5pZCxjLndpcmVmcmFtZT10LEM9ITApfSEwPT09aS5pc0luc3RhbmNlZE1lc2gmJihDPSEwKSxudWxsIT09XyYmbi51cGRhdGUoXywzNDk2MyksQyYmKCEoZnVuY3Rpb24gTyhpLGEscixzKXtpZighMT09PW8uaXNXZWJHTDImJihpLmlzSW5zdGFuY2VkTWVzaHx8cy5pc0luc3RhbmNlZEJ1ZmZlckdlb21ldHJ5KSYmbnVsbD09PWUuZ2V0KCJBTkdMRV9pbnN0YW5jZWRfYXJyYXlzIikpcmV0dXJuO2YoKTtjb25zdCBsPXMuYXR0cmlidXRlcyxjPXIuZ2V0QXR0cmlidXRlcygpLGQ9YS5kZWZhdWx0QXR0cmlidXRlVmFsdWVzO2Zvcihjb25zdCBlIGluIGMpe2NvbnN0IG89Y1tlXTtpZihvPj0wKXtjb25zdCBhPWxbZV07aWYodm9pZCAwIT09YSl7Y29uc3QgZT1hLm5vcm1hbGl6ZWQsaT1hLml0ZW1TaXplLHI9bi5nZXQoYSk7aWYodm9pZCAwPT09ciljb250aW51ZTtjb25zdCBsPXIuYnVmZmVyLGM9ci50eXBlLGQ9ci5ieXRlc1BlckVsZW1lbnQ7aWYoYS5pc0ludGVybGVhdmVkQnVmZmVyQXR0cmlidXRlKXtjb25zdCBuPWEuZGF0YSxyPW4uc3RyaWRlLHA9YS5vZmZzZXQ7biYmbi5pc0luc3RhbmNlZEludGVybGVhdmVkQnVmZmVyPyhnKG8sbi5tZXNoUGVyQXR0cmlidXRlKSx2b2lkIDA9PT1zLl9tYXhJbnN0YW5jZUNvdW50JiYocy5fbWF4SW5zdGFuY2VDb3VudD1uLm1lc2hQZXJBdHRyaWJ1dGUqbi5jb3VudCkpOnUobyksdC5iaW5kQnVmZmVyKDM0OTYyLGwpLGIobyxpLGMsZSxyKmQscCpkKX1lbHNlIGEuaXNJbnN0YW5jZWRCdWZmZXJBdHRyaWJ1dGU/KGcobyxhLm1lc2hQZXJBdHRyaWJ1dGUpLHZvaWQgMD09PXMuX21heEluc3RhbmNlQ291bnQmJihzLl9tYXhJbnN0YW5jZUNvdW50PWEubWVzaFBlckF0dHJpYnV0ZSphLmNvdW50KSk6dShvKSx0LmJpbmRCdWZmZXIoMzQ5NjIsbCksYihvLGksYyxlLDAsMCl9ZWxzZSBpZigiaW5zdGFuY2VNYXRyaXgiPT09ZSl7Y29uc3QgZT1uLmdldChpLmluc3RhbmNlTWF0cml4KTtpZih2b2lkIDA9PT1lKWNvbnRpbnVlO2NvbnN0IGE9ZS5idWZmZXIscj1lLnR5cGU7ZyhvKzAsMSksZyhvKzEsMSksZyhvKzIsMSksZyhvKzMsMSksdC5iaW5kQnVmZmVyKDM0OTYyLGEpLHQudmVydGV4QXR0cmliUG9pbnRlcihvKzAsNCxyLCExLDY0LDApLHQudmVydGV4QXR0cmliUG9pbnRlcihvKzEsNCxyLCExLDY0LDE2KSx0LnZlcnRleEF0dHJpYlBvaW50ZXIobysyLDQsciwhMSw2NCwzMiksdC52ZXJ0ZXhBdHRyaWJQb2ludGVyKG8rMyw0LHIsITEsNjQsNDgpfWVsc2UgaWYoImluc3RhbmNlQ29sb3IiPT09ZSl7Y29uc3QgZT1uLmdldChpLmluc3RhbmNlQ29sb3IpO2lmKHZvaWQgMD09PWUpY29udGludWU7Y29uc3QgYT1lLmJ1ZmZlcixyPWUudHlwZTtnKG8sMSksdC5iaW5kQnVmZmVyKDM0OTYyLGEpLHQudmVydGV4QXR0cmliUG9pbnRlcihvLDMsciwhMSwxMiwwKX1lbHNlIGlmKHZvaWQgMCE9PWQpe2NvbnN0IG49ZFtlXTtpZih2b2lkIDAhPT1uKXN3aXRjaChuLmxlbmd0aCl7Y2FzZSAyOnQudmVydGV4QXR0cmliMmZ2KG8sbik7YnJlYWs7Y2FzZSAzOnQudmVydGV4QXR0cmliM2Z2KG8sbik7YnJlYWs7Y2FzZSA0OnQudmVydGV4QXR0cmliNGZ2KG8sbik7YnJlYWs7ZGVmYXVsdDp0LnZlcnRleEF0dHJpYjFmdihvLG4pfX19fWgoKX0pKGksbCxwLHkpLG51bGwhPT1fJiZ0LmJpbmRCdWZmZXIoMzQ5NjMsbi5nZXQoXykuYnVmZmVyKSl9LHJlc2V0OnkscmVzZXREZWZhdWx0U3RhdGU6XyxkaXNwb3NlOmZ1bmN0aW9uIE0oKXt5KCk7Zm9yKGNvbnN0IHQgaW4gcyl7Y29uc3QgZT1zW3RdO2Zvcihjb25zdCB0IGluIGUpe2NvbnN0IG49ZVt0XTtmb3IoY29uc3QgdCBpbiBuKXAoblt0XS5vYmplY3QpLGRlbGV0ZSBuW3RdO2RlbGV0ZSBlW3RdfWRlbGV0ZSBzW3RdfX0scmVsZWFzZVN0YXRlc09mR2VvbWV0cnk6ZnVuY3Rpb24gdih0KXtpZih2b2lkIDA9PT1zW3QuaWRdKXJldHVybjtjb25zdCBlPXNbdC5pZF07Zm9yKGNvbnN0IHQgaW4gZSl7Y29uc3Qgbj1lW3RdO2Zvcihjb25zdCB0IGluIG4pcChuW3RdLm9iamVjdCksZGVsZXRlIG5bdF07ZGVsZXRlIGVbdF19ZGVsZXRlIHNbdC5pZF19LHJlbGVhc2VTdGF0ZXNPZlByb2dyYW06ZnVuY3Rpb24geCh0KXtmb3IoY29uc3QgZSBpbiBzKXtjb25zdCBuPXNbZV07aWYodm9pZCAwPT09blt0LmlkXSljb250aW51ZTtjb25zdCBvPW5bdC5pZF07Zm9yKGNvbnN0IHQgaW4gbylwKG9bdF0ub2JqZWN0KSxkZWxldGUgb1t0XTtkZWxldGUgblt0LmlkXX19LGluaXRBdHRyaWJ1dGVzOmYsZW5hYmxlQXR0cmlidXRlOnUsZGlzYWJsZVVudXNlZEF0dHJpYnV0ZXM6aH19ZnVuY3Rpb24gbmR0KHQsZSxuLG8pe2NvbnN0IGk9by5pc1dlYkdMMjtsZXQgYTt0aGlzLnNldE1vZGU9ZnVuY3Rpb24gcih0KXthPXR9LHRoaXMucmVuZGVyPWZ1bmN0aW9uIHMoZSxvKXt0LmRyYXdBcnJheXMoYSxlLG8pLG4udXBkYXRlKG8sYSwxKX0sdGhpcy5yZW5kZXJJbnN0YW5jZXM9ZnVuY3Rpb24gbChvLHIscyl7aWYoMD09PXMpcmV0dXJuO2xldCBsLGM7aWYoaSlsPXQsYz0iZHJhd0FycmF5c0luc3RhbmNlZCI7ZWxzZSBpZihsPWUuZ2V0KCJBTkdMRV9pbnN0YW5jZWRfYXJyYXlzIiksYz0iZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFIixudWxsPT09bClyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTEJ1ZmZlclJlbmRlcmVyOiB1c2luZyBUSFJFRS5JbnN0YW5jZWRCdWZmZXJHZW9tZXRyeSBidXQgaGFyZHdhcmUgZG9lcyBub3Qgc3VwcG9ydCBleHRlbnNpb24gQU5HTEVfaW5zdGFuY2VkX2FycmF5cy4iKTtsW2NdKGEsbyxyLHMpLG4udXBkYXRlKHIsYSxzKX19ZnVuY3Rpb24gb2R0KHQsZSxuKXtsZXQgbztmdW5jdGlvbiBpKGUpe2lmKCJoaWdocCI9PT1lKXtpZih0LmdldFNoYWRlclByZWNpc2lvbkZvcm1hdCgzNTYzMywzNjMzOCkucHJlY2lzaW9uPjAmJnQuZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KDM1NjMyLDM2MzM4KS5wcmVjaXNpb24+MClyZXR1cm4iaGlnaHAiO2U9Im1lZGl1bXAifXJldHVybiJtZWRpdW1wIj09PWUmJnQuZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KDM1NjMzLDM2MzM3KS5wcmVjaXNpb24+MCYmdC5nZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoMzU2MzIsMzYzMzcpLnByZWNpc2lvbj4wPyJtZWRpdW1wIjoibG93cCJ9Y29uc3QgYT0idW5kZWZpbmVkIiE9dHlwZW9mIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQmJnQgaW5zdGFuY2VvZiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0fHwidW5kZWZpbmVkIiE9dHlwZW9mIFdlYkdMMkNvbXB1dGVSZW5kZXJpbmdDb250ZXh0JiZ0IGluc3RhbmNlb2YgV2ViR0wyQ29tcHV0ZVJlbmRlcmluZ0NvbnRleHQ7bGV0IHI9dm9pZCAwIT09bi5wcmVjaXNpb24/bi5wcmVjaXNpb246ImhpZ2hwIjtjb25zdCBzPWkocik7cyE9PXImJihjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IixyLCJub3Qgc3VwcG9ydGVkLCB1c2luZyIscywiaW5zdGVhZC4iKSxyPXMpO2NvbnN0IGw9YXx8ZS5oYXMoIldFQkdMX2RyYXdfYnVmZmVycyIpLGM9ITA9PT1uLmxvZ2FyaXRobWljRGVwdGhCdWZmZXIsZD10LmdldFBhcmFtZXRlcigzNDkzMCkscD10LmdldFBhcmFtZXRlcigzNTY2MCksbT10LmdldFBhcmFtZXRlcigzMzc5KSxmPXQuZ2V0UGFyYW1ldGVyKDM0MDc2KSx1PXQuZ2V0UGFyYW1ldGVyKDM0OTIxKSxnPXQuZ2V0UGFyYW1ldGVyKDM2MzQ3KSxoPXQuZ2V0UGFyYW1ldGVyKDM2MzQ4KSxiPXQuZ2V0UGFyYW1ldGVyKDM2MzQ5KSx5PXA+MCxfPWF8fGUuaGFzKCJPRVNfdGV4dHVyZV9mbG9hdCIpO3JldHVybntpc1dlYkdMMjphLGRyYXdCdWZmZXJzOmwsZ2V0TWF4QW5pc290cm9weTpmdW5jdGlvbiBDKCl7aWYodm9pZCAwIT09bylyZXR1cm4gbztpZighMD09PWUuaGFzKCJFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKSl7Y29uc3Qgbj1lLmdldCgiRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIik7bz10LmdldFBhcmFtZXRlcihuLk1BWF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVCl9ZWxzZSBvPTA7cmV0dXJuIG99LGdldE1heFByZWNpc2lvbjppLHByZWNpc2lvbjpyLGxvZ2FyaXRobWljRGVwdGhCdWZmZXI6YyxtYXhUZXh0dXJlczpkLG1heFZlcnRleFRleHR1cmVzOnAsbWF4VGV4dHVyZVNpemU6bSxtYXhDdWJlbWFwU2l6ZTpmLG1heEF0dHJpYnV0ZXM6dSxtYXhWZXJ0ZXhVbmlmb3JtczpnLG1heFZhcnlpbmdzOmgsbWF4RnJhZ21lbnRVbmlmb3JtczpiLHZlcnRleFRleHR1cmVzOnksZmxvYXRGcmFnbWVudFRleHR1cmVzOl8sZmxvYXRWZXJ0ZXhUZXh0dXJlczp5JiZfLG1heFNhbXBsZXM6YT90LmdldFBhcmFtZXRlcigzNjE4Myk6MH19ZnVuY3Rpb24gaWR0KHQpe2NvbnN0IGU9dGhpcztsZXQgbj1udWxsLG89MCxpPSExLGE9ITE7Y29uc3Qgcj1uZXcgV2N0LHM9bmV3IGhzdCxsPXt2YWx1ZTpudWxsLG5lZWRzVXBkYXRlOiExfTtmdW5jdGlvbiBjKCl7bC52YWx1ZSE9PW4mJihsLnZhbHVlPW4sbC5uZWVkc1VwZGF0ZT1vPjApLGUubnVtUGxhbmVzPW8sZS5udW1JbnRlcnNlY3Rpb249MH1mdW5jdGlvbiBkKHQsbixvLGkpe2NvbnN0IGE9bnVsbCE9PXQ/dC5sZW5ndGg6MDtsZXQgYz1udWxsO2lmKDAhPT1hKXtpZihjPWwudmFsdWUsITAhPT1pfHxudWxsPT09Yyl7Y29uc3QgZT1vKzQqYSxpPW4ubWF0cml4V29ybGRJbnZlcnNlO3MuZ2V0Tm9ybWFsTWF0cml4KGkpLChudWxsPT09Y3x8Yy5sZW5ndGg8ZSkmJihjPW5ldyBGbG9hdDMyQXJyYXkoZSkpO2ZvcihsZXQgZT0wLG49bztlIT09YTsrK2Usbis9NClyLmNvcHkodFtlXSkuYXBwbHlNYXRyaXg0KGkscyksci5ub3JtYWwudG9BcnJheShjLG4pLGNbbiszXT1yLmNvbnN0YW50fWwudmFsdWU9YyxsLm5lZWRzVXBkYXRlPSEwfXJldHVybiBlLm51bVBsYW5lcz1hLGUubnVtSW50ZXJzZWN0aW9uPTAsY310aGlzLnVuaWZvcm09bCx0aGlzLm51bVBsYW5lcz0wLHRoaXMubnVtSW50ZXJzZWN0aW9uPTAsdGhpcy5pbml0PWZ1bmN0aW9uKHQsZSxhKXtjb25zdCByPTAhPT10Lmxlbmd0aHx8ZXx8MCE9PW98fGk7cmV0dXJuIGk9ZSxuPWQodCxhLDApLG89dC5sZW5ndGgscn0sdGhpcy5iZWdpblNoYWRvd3M9ZnVuY3Rpb24oKXthPSEwLGQobnVsbCl9LHRoaXMuZW5kU2hhZG93cz1mdW5jdGlvbigpe2E9ITEsYygpfSx0aGlzLnNldFN0YXRlPWZ1bmN0aW9uKGUscixzKXtjb25zdCBwPWUuY2xpcHBpbmdQbGFuZXMsbT1lLmNsaXBJbnRlcnNlY3Rpb24sZj1lLmNsaXBTaGFkb3dzLHU9dC5nZXQoZSk7aWYoIWl8fG51bGw9PT1wfHwwPT09cC5sZW5ndGh8fGEmJiFmKWE/ZChudWxsKTpjKCk7ZWxzZXtjb25zdCB0PWE/MDpvLGU9NCp0O2xldCBpPXUuY2xpcHBpbmdTdGF0ZXx8bnVsbDtsLnZhbHVlPWksaT1kKHAscixlLHMpO2ZvcihsZXQgdD0wO3QhPT1lOysrdClpW3RdPW5bdF07dS5jbGlwcGluZ1N0YXRlPWksdGhpcy5udW1JbnRlcnNlY3Rpb249bT90aGlzLm51bVBsYW5lczowLHRoaXMubnVtUGxhbmVzKz10fX19ZnVuY3Rpb24gYWR0KHQpe2xldCBlPW5ldyBXZWFrTWFwO2Z1bmN0aW9uIG4odCxlKXtyZXR1cm4gMzAzPT09ZT90Lm1hcHBpbmc9d3J0OjMwND09PWUmJih0Lm1hcHBpbmc9a3J0KSx0fWZ1bmN0aW9uIG8odCl7Y29uc3Qgbj10LnRhcmdldDtuLnJlbW92ZUV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLG8pO2NvbnN0IGk9ZS5nZXQobik7dm9pZCAwIT09aSYmKGUuZGVsZXRlKG4pLGkuZGlzcG9zZSgpKX1yZXR1cm57Z2V0OmZ1bmN0aW9uIGkoYSl7aWYoYSYmYS5pc1RleHR1cmUmJiExPT09YS5pc1JlbmRlclRhcmdldFRleHR1cmUpe2NvbnN0IGk9YS5tYXBwaW5nO2lmKDMwMz09PWl8fDMwND09PWkpe2lmKGUuaGFzKGEpKXtyZXR1cm4gbihlLmdldChhKS50ZXh0dXJlLGEubWFwcGluZyl9e2NvbnN0IGk9YS5pbWFnZTtpZihpJiZpLmhlaWdodD4wKXtjb25zdCByPXQuZ2V0UmVuZGVyVGFyZ2V0KCkscz1uZXcgQmN0KGkuaGVpZ2h0LzIpO3JldHVybiBzLmZyb21FcXVpcmVjdGFuZ3VsYXJUZXh0dXJlKHQsYSksZS5zZXQoYSxzKSx0LnNldFJlbmRlclRhcmdldChyKSxhLmFkZEV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLG8pLG4ocy50ZXh0dXJlLGEubWFwcGluZyl9cmV0dXJuIG51bGx9fX1yZXR1cm4gYX0sZGlzcG9zZTpmdW5jdGlvbiBhKCl7ZT1uZXcgV2Vha01hcH19fSRjdC5waHlzaWNhbD17dW5pZm9ybXM6QWN0KFskY3Quc3RhbmRhcmQudW5pZm9ybXMse2NsZWFyY29hdDp7dmFsdWU6MH0sY2xlYXJjb2F0TWFwOnt2YWx1ZTpudWxsfSxjbGVhcmNvYXRSb3VnaG5lc3M6e3ZhbHVlOjB9LGNsZWFyY29hdFJvdWdobmVzc01hcDp7dmFsdWU6bnVsbH0sY2xlYXJjb2F0Tm9ybWFsU2NhbGU6e3ZhbHVlOm5ldyBnc3QoMSwxKX0sY2xlYXJjb2F0Tm9ybWFsTWFwOnt2YWx1ZTpudWxsfSxzaGVlbjp7dmFsdWU6bmV3IFpsdCgwKX0sdHJhbnNtaXNzaW9uOnt2YWx1ZTowfSx0cmFuc21pc3Npb25NYXA6e3ZhbHVlOm51bGx9LHRyYW5zbWlzc2lvblNhbXBsZXJTaXplOnt2YWx1ZTpuZXcgZ3N0fSx0cmFuc21pc3Npb25TYW1wbGVyTWFwOnt2YWx1ZTpudWxsfSx0aGlja25lc3M6e3ZhbHVlOjB9LHRoaWNrbmVzc01hcDp7dmFsdWU6bnVsbH0sYXR0ZW51YXRpb25EaXN0YW5jZTp7dmFsdWU6MH0sYXR0ZW51YXRpb25UaW50Ont2YWx1ZTpuZXcgWmx0KDApfSxzcGVjdWxhckludGVuc2l0eTp7dmFsdWU6MH0sc3BlY3VsYXJJbnRlbnNpdHlNYXA6e3ZhbHVlOm51bGx9LHNwZWN1bGFyVGludDp7dmFsdWU6bmV3IFpsdCgxLDEsMSl9LHNwZWN1bGFyVGludE1hcDp7dmFsdWU6bnVsbH19XSksdmVydGV4U2hhZGVyOkpjdC5tZXNocGh5c2ljYWxfdmVydCxmcmFnbWVudFNoYWRlcjpKY3QubWVzaHBoeXNpY2FsX2ZyYWd9O2NsYXNzIHJkdCBleHRlbmRzIHpjdHtjb25zdHJ1Y3Rvcih0PS0xLGU9MSxuPTEsbz0tMSxpPS4xLGE9MmUzKXtzdXBlcigpLHRoaXMudHlwZT0iT3J0aG9ncmFwaGljQ2FtZXJhIix0aGlzLnpvb209MSx0aGlzLnZpZXc9bnVsbCx0aGlzLmxlZnQ9dCx0aGlzLnJpZ2h0PWUsdGhpcy50b3A9bix0aGlzLmJvdHRvbT1vLHRoaXMubmVhcj1pLHRoaXMuZmFyPWEsdGhpcy51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCl9Y29weSh0LGUpe3JldHVybiBzdXBlci5jb3B5KHQsZSksdGhpcy5sZWZ0PXQubGVmdCx0aGlzLnJpZ2h0PXQucmlnaHQsdGhpcy50b3A9dC50b3AsdGhpcy5ib3R0b209dC5ib3R0b20sdGhpcy5uZWFyPXQubmVhcix0aGlzLmZhcj10LmZhcix0aGlzLnpvb209dC56b29tLHRoaXMudmlldz1udWxsPT09dC52aWV3P251bGw6T2JqZWN0LmFzc2lnbih7fSx0LnZpZXcpLHRoaXN9c2V0Vmlld09mZnNldCh0LGUsbixvLGksYSl7bnVsbD09PXRoaXMudmlldyYmKHRoaXMudmlldz17ZW5hYmxlZDohMCxmdWxsV2lkdGg6MSxmdWxsSGVpZ2h0OjEsb2Zmc2V0WDowLG9mZnNldFk6MCx3aWR0aDoxLGhlaWdodDoxfSksdGhpcy52aWV3LmVuYWJsZWQ9ITAsdGhpcy52aWV3LmZ1bGxXaWR0aD10LHRoaXMudmlldy5mdWxsSGVpZ2h0PWUsdGhpcy52aWV3Lm9mZnNldFg9bix0aGlzLnZpZXcub2Zmc2V0WT1vLHRoaXMudmlldy53aWR0aD1pLHRoaXMudmlldy5oZWlnaHQ9YSx0aGlzLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKX1jbGVhclZpZXdPZmZzZXQoKXtudWxsIT09dGhpcy52aWV3JiYodGhpcy52aWV3LmVuYWJsZWQ9ITEpLHRoaXMudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpfXVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKXtjb25zdCB0PSh0aGlzLnJpZ2h0LXRoaXMubGVmdCkvKDIqdGhpcy56b29tKSxlPSh0aGlzLnRvcC10aGlzLmJvdHRvbSkvKDIqdGhpcy56b29tKSxuPSh0aGlzLnJpZ2h0K3RoaXMubGVmdCkvMixvPSh0aGlzLnRvcCt0aGlzLmJvdHRvbSkvMjtsZXQgaT1uLXQsYT1uK3Qscj1vK2Uscz1vLWU7aWYobnVsbCE9PXRoaXMudmlldyYmdGhpcy52aWV3LmVuYWJsZWQpe2NvbnN0IHQ9KHRoaXMucmlnaHQtdGhpcy5sZWZ0KS90aGlzLnZpZXcuZnVsbFdpZHRoL3RoaXMuem9vbSxlPSh0aGlzLnRvcC10aGlzLmJvdHRvbSkvdGhpcy52aWV3LmZ1bGxIZWlnaHQvdGhpcy56b29tO2krPXQqdGhpcy52aWV3Lm9mZnNldFgsYT1pK3QqdGhpcy52aWV3LndpZHRoLHItPWUqdGhpcy52aWV3Lm9mZnNldFkscz1yLWUqdGhpcy52aWV3LmhlaWdodH10aGlzLnByb2plY3Rpb25NYXRyaXgubWFrZU9ydGhvZ3JhcGhpYyhpLGEscixzLHRoaXMubmVhcix0aGlzLmZhciksdGhpcy5wcm9qZWN0aW9uTWF0cml4SW52ZXJzZS5jb3B5KHRoaXMucHJvamVjdGlvbk1hdHJpeCkuaW52ZXJ0KCl9dG9KU09OKHQpe2NvbnN0IGU9c3VwZXIudG9KU09OKHQpO3JldHVybiBlLm9iamVjdC56b29tPXRoaXMuem9vbSxlLm9iamVjdC5sZWZ0PXRoaXMubGVmdCxlLm9iamVjdC5yaWdodD10aGlzLnJpZ2h0LGUub2JqZWN0LnRvcD10aGlzLnRvcCxlLm9iamVjdC5ib3R0b209dGhpcy5ib3R0b20sZS5vYmplY3QubmVhcj10aGlzLm5lYXIsZS5vYmplY3QuZmFyPXRoaXMuZmFyLG51bGwhPT10aGlzLnZpZXcmJihlLm9iamVjdC52aWV3PU9iamVjdC5hc3NpZ24oe30sdGhpcy52aWV3KSksZX19cmR0LnByb3RvdHlwZS5pc09ydGhvZ3JhcGhpY0NhbWVyYT0hMDtjbGFzcyBzZHQgZXh0ZW5kcyBOY3R7Y29uc3RydWN0b3IodCl7c3VwZXIodCksdGhpcy50eXBlPSJSYXdTaGFkZXJNYXRlcmlhbCJ9fXNkdC5wcm90b3R5cGUuaXNSYXdTaGFkZXJNYXRlcmlhbD0hMDtjb25zdCBsZHQ9TWF0aC5wb3coMiw4KSxjZHQ9Wy4xMjUsLjIxNSwuMzUsLjQ0NiwuNTI2LC41ODJdLGRkdD01K2NkdC5sZW5ndGgscGR0PTIwLG1kdD17W1FydF06MCxbJHJ0XToxLFtlc3RdOjIsMzAwNDozLDMwMDU6NCwzMDA2OjUsW3RzdF06Nn0sZmR0PW5ldyBYbHQoe3NpZGU6MSxkZXB0aFdyaXRlOiExLGRlcHRoVGVzdDohMX0pLHVkdD1uZXcgU2N0KG5ldyBSY3QsZmR0KSxnZHQ9bmV3IHJkdCx7X2xvZFBsYW5lczpoZHQsX3NpemVMb2RzOmJkdCxfc2lnbWFzOnlkdH09a2R0KCksX2R0PW5ldyBabHQ7bGV0IENkdD1udWxsO2NvbnN0IE1kdD0oMStNYXRoLnNxcnQoNSkpLzIsdmR0PTEvTWR0LHhkdD1bbmV3IHdzdCgxLDEsMSksbmV3IHdzdCgtMSwxLDEpLG5ldyB3c3QoMSwxLC0xKSxuZXcgd3N0KC0xLDEsLTEpLG5ldyB3c3QoMCxNZHQsdmR0KSxuZXcgd3N0KDAsTWR0LC12ZHQpLG5ldyB3c3QodmR0LDAsTWR0KSxuZXcgd3N0KC12ZHQsMCxNZHQpLG5ldyB3c3QoTWR0LHZkdCwwKSxuZXcgd3N0KC1NZHQsdmR0LDApXTtmdW5jdGlvbiBPZHQodCl7Y29uc3QgZT1NYXRoLm1heCh0LnIsdC5nLHQuYiksbj1NYXRoLm1pbihNYXRoLm1heChNYXRoLmNlaWwoTWF0aC5sb2cyKGUpKSwtMTI4KSwxMjcpO3QubXVsdGlwbHlTY2FsYXIoTWF0aC5wb3coMiwtbikpO3JldHVybihuKzEyOCkvMjU1fWNsYXNzIFBkdHtjb25zdHJ1Y3Rvcih0KXt0aGlzLl9yZW5kZXJlcj10LHRoaXMuX3BpbmdQb25nUmVuZGVyVGFyZ2V0PW51bGwsdGhpcy5fYmx1ck1hdGVyaWFsPShmdW5jdGlvbiBlKHQpe2NvbnN0IGU9bmV3IEZsb2F0MzJBcnJheSh0KSxuPW5ldyB3c3QoMCwxLDApO3JldHVybiBuZXcgc2R0KHtuYW1lOiJTcGhlcmljYWxHYXVzc2lhbkJsdXIiLGRlZmluZXM6e246dH0sdW5pZm9ybXM6e2Vudk1hcDp7dmFsdWU6bnVsbH0sc2FtcGxlczp7dmFsdWU6MX0sd2VpZ2h0czp7dmFsdWU6ZX0sbGF0aXR1ZGluYWw6e3ZhbHVlOiExfSxkVGhldGE6e3ZhbHVlOjB9LG1pcEludDp7dmFsdWU6MH0scG9sZUF4aXM6e3ZhbHVlOm59LGlucHV0RW5jb2Rpbmc6e3ZhbHVlOm1kdFszZTNdfSxvdXRwdXRFbmNvZGluZzp7dmFsdWU6bWR0WzNlM119fSx2ZXJ0ZXhTaGFkZXI6QWR0KCksZnJhZ21lbnRTaGFkZXI6YFxuXG5cdFx0XHRwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcblx0XHRcdHByZWNpc2lvbiBtZWRpdW1wIGludDtcblxuXHRcdFx0dmFyeWluZyB2ZWMzIHZPdXRwdXREaXJlY3Rpb247XG5cblx0XHRcdHVuaWZvcm0gc2FtcGxlcjJEIGVudk1hcDtcblx0XHRcdHVuaWZvcm0gaW50IHNhbXBsZXM7XG5cdFx0XHR1bmlmb3JtIGZsb2F0IHdlaWdodHNbIG4gXTtcblx0XHRcdHVuaWZvcm0gYm9vbCBsYXRpdHVkaW5hbDtcblx0XHRcdHVuaWZvcm0gZmxvYXQgZFRoZXRhO1xuXHRcdFx0dW5pZm9ybSBmbG9hdCBtaXBJbnQ7XG5cdFx0XHR1bmlmb3JtIHZlYzMgcG9sZUF4aXM7XG5cblx0XHRcdCR7VGR0KCl9XG5cblx0XHRcdCNkZWZpbmUgRU5WTUFQX1RZUEVfQ1VCRV9VVlxuXHRcdFx0I2luY2x1ZGUgPGN1YmVfdXZfcmVmbGVjdGlvbl9mcmFnbWVudD5cblxuXHRcdFx0dmVjMyBnZXRTYW1wbGUoIGZsb2F0IHRoZXRhLCB2ZWMzIGF4aXMgKSB7XG5cblx0XHRcdFx0ZmxvYXQgY29zVGhldGEgPSBjb3MoIHRoZXRhICk7XG5cdFx0XHRcdC8vIFJvZHJpZ3VlcycgYXhpcy1hbmdsZSByb3RhdGlvblxuXHRcdFx0XHR2ZWMzIHNhbXBsZURpcmVjdGlvbiA9IHZPdXRwdXREaXJlY3Rpb24gKiBjb3NUaGV0YVxuXHRcdFx0XHRcdCsgY3Jvc3MoIGF4aXMsIHZPdXRwdXREaXJlY3Rpb24gKSAqIHNpbiggdGhldGEgKVxuXHRcdFx0XHRcdCsgYXhpcyAqIGRvdCggYXhpcywgdk91dHB1dERpcmVjdGlvbiApICogKCAxLjAgLSBjb3NUaGV0YSApO1xuXG5cdFx0XHRcdHJldHVybiBiaWxpbmVhckN1YmVVViggZW52TWFwLCBzYW1wbGVEaXJlY3Rpb24sIG1pcEludCApO1xuXG5cdFx0XHR9XG5cblx0XHRcdHZvaWQgbWFpbigpIHtcblxuXHRcdFx0XHR2ZWMzIGF4aXMgPSBsYXRpdHVkaW5hbCA/IHBvbGVBeGlzIDogY3Jvc3MoIHBvbGVBeGlzLCB2T3V0cHV0RGlyZWN0aW9uICk7XG5cblx0XHRcdFx0aWYgKCBhbGwoIGVxdWFsKCBheGlzLCB2ZWMzKCAwLjAgKSApICkgKSB7XG5cblx0XHRcdFx0XHRheGlzID0gdmVjMyggdk91dHB1dERpcmVjdGlvbi56LCAwLjAsIC0gdk91dHB1dERpcmVjdGlvbi54ICk7XG5cblx0XHRcdFx0fVxuXG5cdFx0XHRcdGF4aXMgPSBub3JtYWxpemUoIGF4aXMgKTtcblxuXHRcdFx0XHRnbF9GcmFnQ29sb3IgPSB2ZWM0KCAwLjAsIDAuMCwgMC4wLCAxLjAgKTtcblx0XHRcdFx0Z2xfRnJhZ0NvbG9yLnJnYiArPSB3ZWlnaHRzWyAwIF0gKiBnZXRTYW1wbGUoIDAuMCwgYXhpcyApO1xuXG5cdFx0XHRcdGZvciAoIGludCBpID0gMTsgaSA8IG47IGkrKyApIHtcblxuXHRcdFx0XHRcdGlmICggaSA+PSBzYW1wbGVzICkge1xuXG5cdFx0XHRcdFx0XHRicmVhaztcblxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGZsb2F0IHRoZXRhID0gZFRoZXRhICogZmxvYXQoIGkgKTtcblx0XHRcdFx0XHRnbF9GcmFnQ29sb3IucmdiICs9IHdlaWdodHNbIGkgXSAqIGdldFNhbXBsZSggLTEuMCAqIHRoZXRhLCBheGlzICk7XG5cdFx0XHRcdFx0Z2xfRnJhZ0NvbG9yLnJnYiArPSB3ZWlnaHRzWyBpIF0gKiBnZXRTYW1wbGUoIHRoZXRhLCBheGlzICk7XG5cblx0XHRcdFx0fVxuXG5cdFx0XHRcdGdsX0ZyYWdDb2xvciA9IGxpbmVhclRvT3V0cHV0VGV4ZWwoIGdsX0ZyYWdDb2xvciApO1xuXG5cdFx0XHR9XG5cdFx0YCxibGVuZGluZzowLGRlcHRoVGVzdDohMSxkZXB0aFdyaXRlOiExfSl9KShwZHQpLHRoaXMuX2VxdWlyZWN0U2hhZGVyPW51bGwsdGhpcy5fY3ViZW1hcFNoYWRlcj1udWxsLHRoaXMuX2NvbXBpbGVNYXRlcmlhbCh0aGlzLl9ibHVyTWF0ZXJpYWwpfWZyb21TY2VuZSh0LGU9MCxuPS4xLG89MTAwKXtDZHQ9dGhpcy5fcmVuZGVyZXIuZ2V0UmVuZGVyVGFyZ2V0KCk7Y29uc3QgaT10aGlzLl9hbGxvY2F0ZVRhcmdldHMoKTtyZXR1cm4gdGhpcy5fc2NlbmVUb0N1YmVVVih0LG4sbyxpKSxlPjAmJnRoaXMuX2JsdXIoaSwwLDAsZSksdGhpcy5fYXBwbHlQTVJFTShpKSx0aGlzLl9jbGVhbnVwKGkpLGl9ZnJvbUVxdWlyZWN0YW5ndWxhcih0KXtyZXR1cm4gdGhpcy5fZnJvbVRleHR1cmUodCl9ZnJvbUN1YmVtYXAodCl7cmV0dXJuIHRoaXMuX2Zyb21UZXh0dXJlKHQpfWNvbXBpbGVDdWJlbWFwU2hhZGVyKCl7bnVsbD09PXRoaXMuX2N1YmVtYXBTaGFkZXImJih0aGlzLl9jdWJlbWFwU2hhZGVyPUVkdCgpLHRoaXMuX2NvbXBpbGVNYXRlcmlhbCh0aGlzLl9jdWJlbWFwU2hhZGVyKSl9Y29tcGlsZUVxdWlyZWN0YW5ndWxhclNoYWRlcigpe251bGw9PT10aGlzLl9lcXVpcmVjdFNoYWRlciYmKHRoaXMuX2VxdWlyZWN0U2hhZGVyPVJkdCgpLHRoaXMuX2NvbXBpbGVNYXRlcmlhbCh0aGlzLl9lcXVpcmVjdFNoYWRlcikpfWRpc3Bvc2UoKXt0aGlzLl9ibHVyTWF0ZXJpYWwuZGlzcG9zZSgpLG51bGwhPT10aGlzLl9jdWJlbWFwU2hhZGVyJiZ0aGlzLl9jdWJlbWFwU2hhZGVyLmRpc3Bvc2UoKSxudWxsIT09dGhpcy5fZXF1aXJlY3RTaGFkZXImJnRoaXMuX2VxdWlyZWN0U2hhZGVyLmRpc3Bvc2UoKTtmb3IobGV0IHQ9MDt0PGhkdC5sZW5ndGg7dCsrKWhkdFt0XS5kaXNwb3NlKCl9X2NsZWFudXAodCl7dGhpcy5fcGluZ1BvbmdSZW5kZXJUYXJnZXQuZGlzcG9zZSgpLHRoaXMuX3JlbmRlcmVyLnNldFJlbmRlclRhcmdldChDZHQpLHQuc2Npc3NvclRlc3Q9ITEsRGR0KHQsMCwwLHQud2lkdGgsdC5oZWlnaHQpfV9mcm9tVGV4dHVyZSh0KXtDZHQ9dGhpcy5fcmVuZGVyZXIuZ2V0UmVuZGVyVGFyZ2V0KCk7Y29uc3QgZT10aGlzLl9hbGxvY2F0ZVRhcmdldHModCk7cmV0dXJuIHRoaXMuX3RleHR1cmVUb0N1YmVVVih0LGUpLHRoaXMuX2FwcGx5UE1SRU0oZSksdGhpcy5fY2xlYW51cChlKSxlfV9hbGxvY2F0ZVRhcmdldHModCl7Y29uc3QgZT17bWFnRmlsdGVyOkFydCxtaW5GaWx0ZXI6QXJ0LGdlbmVyYXRlTWlwbWFwczohMSx0eXBlOnpydCxmb3JtYXQ6MTAyMyxlbmNvZGluZzp3ZHQodCk/dC5lbmNvZGluZzplc3QsZGVwdGhCdWZmZXI6ITF9LG49U2R0KGUpO3JldHVybiBuLmRlcHRoQnVmZmVyPSF0LHRoaXMuX3BpbmdQb25nUmVuZGVyVGFyZ2V0PVNkdChlKSxufV9jb21waWxlTWF0ZXJpYWwodCl7Y29uc3QgZT1uZXcgU2N0KGhkdFswXSx0KTt0aGlzLl9yZW5kZXJlci5jb21waWxlKGUsZ2R0KX1fc2NlbmVUb0N1YmVVVih0LGUsbixvKXtjb25zdCBpPW5ldyBJY3QoOTAsMSxlLG4pLGE9WzEsLTEsMSwxLDEsMV0scj1bMSwxLDEsLTEsLTEsLTFdLHM9dGhpcy5fcmVuZGVyZXIsbD1zLmF1dG9DbGVhcixjPXMub3V0cHV0RW5jb2RpbmcsZD1zLnRvbmVNYXBwaW5nO3MuZ2V0Q2xlYXJDb2xvcihfZHQpLHMudG9uZU1hcHBpbmc9MCxzLm91dHB1dEVuY29kaW5nPVFydCxzLmF1dG9DbGVhcj0hMTtsZXQgcD0hMTtjb25zdCBtPXQuYmFja2dyb3VuZDtpZihtKXtpZihtLmlzQ29sb3Ipe2ZkdC5jb2xvci5jb3B5KG0pLmNvbnZlcnRTUkdCVG9MaW5lYXIoKSx0LmJhY2tncm91bmQ9bnVsbDtjb25zdCBlPU9kdChmZHQuY29sb3IpO2ZkdC5vcGFjaXR5PWUscD0hMH19ZWxzZXtmZHQuY29sb3IuY29weShfZHQpLmNvbnZlcnRTUkdCVG9MaW5lYXIoKTtjb25zdCB0PU9kdChmZHQuY29sb3IpO2ZkdC5vcGFjaXR5PXQscD0hMH1mb3IobGV0IGU9MDtlPDY7ZSsrKXtjb25zdCBuPWUlMzswPT1uPyhpLnVwLnNldCgwLGFbZV0sMCksaS5sb29rQXQocltlXSwwLDApKToxPT1uPyhpLnVwLnNldCgwLDAsYVtlXSksaS5sb29rQXQoMCxyW2VdLDApKTooaS51cC5zZXQoMCxhW2VdLDApLGkubG9va0F0KDAsMCxyW2VdKSksRGR0KG8sbipsZHQsZT4yP2xkdDowLGxkdCxsZHQpLHMuc2V0UmVuZGVyVGFyZ2V0KG8pLHAmJnMucmVuZGVyKHVkdCxpKSxzLnJlbmRlcih0LGkpfXMudG9uZU1hcHBpbmc9ZCxzLm91dHB1dEVuY29kaW5nPWMscy5hdXRvQ2xlYXI9bH1fdGV4dHVyZVRvQ3ViZVVWKHQsZSl7Y29uc3Qgbj10aGlzLl9yZW5kZXJlcjt0LmlzQ3ViZVRleHR1cmU/bnVsbD09dGhpcy5fY3ViZW1hcFNoYWRlciYmKHRoaXMuX2N1YmVtYXBTaGFkZXI9RWR0KCkpOm51bGw9PXRoaXMuX2VxdWlyZWN0U2hhZGVyJiYodGhpcy5fZXF1aXJlY3RTaGFkZXI9UmR0KCkpO2NvbnN0IG89dC5pc0N1YmVUZXh0dXJlP3RoaXMuX2N1YmVtYXBTaGFkZXI6dGhpcy5fZXF1aXJlY3RTaGFkZXIsaT1uZXcgU2N0KGhkdFswXSxvKSxhPW8udW5pZm9ybXM7YS5lbnZNYXAudmFsdWU9dCx0LmlzQ3ViZVRleHR1cmV8fGEudGV4ZWxTaXplLnZhbHVlLnNldCgxL3QuaW1hZ2Uud2lkdGgsMS90LmltYWdlLmhlaWdodCksYS5pbnB1dEVuY29kaW5nLnZhbHVlPW1kdFt0LmVuY29kaW5nXSxhLm91dHB1dEVuY29kaW5nLnZhbHVlPW1kdFtlLnRleHR1cmUuZW5jb2RpbmddLERkdChlLDAsMCwzKmxkdCwyKmxkdCksbi5zZXRSZW5kZXJUYXJnZXQoZSksbi5yZW5kZXIoaSxnZHQpfV9hcHBseVBNUkVNKHQpe2NvbnN0IGU9dGhpcy5fcmVuZGVyZXIsbj1lLmF1dG9DbGVhcjtlLmF1dG9DbGVhcj0hMTtmb3IobGV0IGU9MTtlPGRkdDtlKyspe2NvbnN0IG49TWF0aC5zcXJ0KHlkdFtlXSp5ZHRbZV0teWR0W2UtMV0qeWR0W2UtMV0pO3RoaXMuX2JsdXIodCxlLTEsZSxuLHhkdFsoZS0xKSV4ZHQubGVuZ3RoXSl9ZS5hdXRvQ2xlYXI9bn1fYmx1cih0LGUsbixvLGkpe2NvbnN0IGE9dGhpcy5fcGluZ1BvbmdSZW5kZXJUYXJnZXQ7dGhpcy5faGFsZkJsdXIodCxhLGUsbixvLCJsYXRpdHVkaW5hbCIsaSksdGhpcy5faGFsZkJsdXIoYSx0LG4sbixvLCJsb25naXR1ZGluYWwiLGkpfV9oYWxmQmx1cih0LGUsbixvLGksYSxyKXtjb25zdCBzPXRoaXMuX3JlbmRlcmVyLGw9dGhpcy5fYmx1ck1hdGVyaWFsOyJsYXRpdHVkaW5hbCIhPT1hJiYibG9uZ2l0dWRpbmFsIiE9PWEmJmNvbnNvbGUuZXJyb3IoImJsdXIgZGlyZWN0aW9uIG11c3QgYmUgZWl0aGVyIGxhdGl0dWRpbmFsIG9yIGxvbmdpdHVkaW5hbCEiKTtjb25zdCBjPW5ldyBTY3QoaGR0W29dLGwpLGQ9bC51bmlmb3JtcyxwPWJkdFtuXS0xLG09aXNGaW5pdGUoaSk/TWF0aC5QSS8oMipwKToyKk1hdGguUEkvMzksZj1pL20sdT1pc0Zpbml0ZShpKT8xK01hdGguZmxvb3IoMypmKTpwZHQ7dT5wZHQmJmNvbnNvbGUud2Fybihgc2lnbWFSYWRpYW5zLCAke2l9LCBpcyB0b28gbGFyZ2UgYW5kIHdpbGwgY2xpcCwgYXMgaXQgcmVxdWVzdGVkICR7dX0gc2FtcGxlcyB3aGVuIHRoZSBtYXhpbXVtIGlzIHNldCB0byAyMGApO2NvbnN0IGc9W107bGV0IGg9MDtmb3IobGV0IHQ9MDt0PHBkdDsrK3Qpe2NvbnN0IGU9dC9mLG49TWF0aC5leHAoLWUqZS8yKTtnLnB1c2gobiksMD09dD9oKz1uOnQ8dSYmKGgrPTIqbil9Zm9yKGxldCB0PTA7dDxnLmxlbmd0aDt0KyspZ1t0XT1nW3RdL2g7ZC5lbnZNYXAudmFsdWU9dC50ZXh0dXJlLGQuc2FtcGxlcy52YWx1ZT11LGQud2VpZ2h0cy52YWx1ZT1nLGQubGF0aXR1ZGluYWwudmFsdWU9ImxhdGl0dWRpbmFsIj09PWEsciYmKGQucG9sZUF4aXMudmFsdWU9ciksZC5kVGhldGEudmFsdWU9bSxkLm1pcEludC52YWx1ZT04LW4sZC5pbnB1dEVuY29kaW5nLnZhbHVlPW1kdFt0LnRleHR1cmUuZW5jb2RpbmddLGQub3V0cHV0RW5jb2RpbmcudmFsdWU9bWR0W3QudGV4dHVyZS5lbmNvZGluZ107Y29uc3QgYj1iZHRbb107RGR0KGUsMypNYXRoLm1heCgwLGxkdC0yKmIpLCgwPT09bz8wOjIqbGR0KSsyKmIqKG8+ND9vLTgrNDowKSwzKmIsMipiKSxzLnNldFJlbmRlclRhcmdldChlKSxzLnJlbmRlcihjLGdkdCl9fWZ1bmN0aW9uIHdkdCh0KXtyZXR1cm4gdm9pZCAwIT09dCYmdC50eXBlPT09enJ0JiYodC5lbmNvZGluZz09PVFydHx8dC5lbmNvZGluZz09PSRydHx8dC5lbmNvZGluZz09PXRzdCl9ZnVuY3Rpb24ga2R0KCl7Y29uc3QgdD1bXSxlPVtdLG49W107bGV0IG89ODtmb3IobGV0IGk9MDtpPGRkdDtpKyspe2NvbnN0IGE9TWF0aC5wb3coMixvKTtlLnB1c2goYSk7bGV0IHI9MS9hO2k+ND9yPWNkdFtpLTgrNC0xXTowPT1pJiYocj0wKSxuLnB1c2gocik7Y29uc3Qgcz0xLyhhLTEpLGw9LXMvMixjPTErcy8yLGQ9W2wsbCxjLGwsYyxjLGwsbCxjLGMsbCxjXSxwPTYsbT02LGY9Myx1PTIsZz0xLGg9bmV3IEZsb2F0MzJBcnJheShmKm0qcCksYj1uZXcgRmxvYXQzMkFycmF5KHUqbSpwKSx5PW5ldyBGbG9hdDMyQXJyYXkoZyptKnApO2ZvcihsZXQgdD0wO3Q8cDt0Kyspe2NvbnN0IGU9dCUzKjIvMy0xLG49dD4yPzA6LTE7aC5zZXQoW2UsbiwwLGUrMi8zLG4sMCxlKzIvMyxuKzEsMCxlLG4sMCxlKzIvMyxuKzEsMCxlLG4rMSwwXSxmKm0qdCksYi5zZXQoZCx1Km0qdCk7eS5zZXQoW3QsdCx0LHQsdCx0XSxnKm0qdCl9Y29uc3QgXz1uZXcgZGN0O18uc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IFFsdChoLGYpKSxfLnNldEF0dHJpYnV0ZSgidXYiLG5ldyBRbHQoYix1KSksXy5zZXRBdHRyaWJ1dGUoImZhY2VJbmRleCIsbmV3IFFsdCh5LGcpKSx0LnB1c2goXyksbz40JiZvLS19cmV0dXJue19sb2RQbGFuZXM6dCxfc2l6ZUxvZHM6ZSxfc2lnbWFzOm59fWZ1bmN0aW9uIFNkdCh0KXtjb25zdCBlPW5ldyB4c3QoMypsZHQsMypsZHQsdCk7cmV0dXJuIGUudGV4dHVyZS5tYXBwaW5nPVNydCxlLnRleHR1cmUubmFtZT0iUE1SRU0uY3ViZVV2IixlLnNjaXNzb3JUZXN0PSEwLGV9ZnVuY3Rpb24gRGR0KHQsZSxuLG8saSl7dC52aWV3cG9ydC5zZXQoZSxuLG8saSksdC5zY2lzc29yLnNldChlLG4sbyxpKX1mdW5jdGlvbiBSZHQoKXtjb25zdCB0PW5ldyBnc3QoMSwxKTtyZXR1cm4gbmV3IHNkdCh7bmFtZToiRXF1aXJlY3Rhbmd1bGFyVG9DdWJlVVYiLHVuaWZvcm1zOntlbnZNYXA6e3ZhbHVlOm51bGx9LHRleGVsU2l6ZTp7dmFsdWU6dH0saW5wdXRFbmNvZGluZzp7dmFsdWU6bWR0WzNlM119LG91dHB1dEVuY29kaW5nOnt2YWx1ZTptZHRbM2UzXX19LHZlcnRleFNoYWRlcjpBZHQoKSxmcmFnbWVudFNoYWRlcjpgXG5cblx0XHRcdHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuXHRcdFx0cHJlY2lzaW9uIG1lZGl1bXAgaW50O1xuXG5cdFx0XHR2YXJ5aW5nIHZlYzMgdk91dHB1dERpcmVjdGlvbjtcblxuXHRcdFx0dW5pZm9ybSBzYW1wbGVyMkQgZW52TWFwO1xuXHRcdFx0dW5pZm9ybSB2ZWMyIHRleGVsU2l6ZTtcblxuXHRcdFx0JHtUZHQoKX1cblxuXHRcdFx0I2luY2x1ZGUgPGNvbW1vbj5cblxuXHRcdFx0dm9pZCBtYWluKCkge1xuXG5cdFx0XHRcdGdsX0ZyYWdDb2xvciA9IHZlYzQoIDAuMCwgMC4wLCAwLjAsIDEuMCApO1xuXG5cdFx0XHRcdHZlYzMgb3V0cHV0RGlyZWN0aW9uID0gbm9ybWFsaXplKCB2T3V0cHV0RGlyZWN0aW9uICk7XG5cdFx0XHRcdHZlYzIgdXYgPSBlcXVpcmVjdFV2KCBvdXRwdXREaXJlY3Rpb24gKTtcblxuXHRcdFx0XHR2ZWMyIGYgPSBmcmFjdCggdXYgLyB0ZXhlbFNpemUgLSAwLjUgKTtcblx0XHRcdFx0dXYgLT0gZiAqIHRleGVsU2l6ZTtcblx0XHRcdFx0dmVjMyB0bCA9IGVudk1hcFRleGVsVG9MaW5lYXIoIHRleHR1cmUyRCAoIGVudk1hcCwgdXYgKSApLnJnYjtcblx0XHRcdFx0dXYueCArPSB0ZXhlbFNpemUueDtcblx0XHRcdFx0dmVjMyB0ciA9IGVudk1hcFRleGVsVG9MaW5lYXIoIHRleHR1cmUyRCAoIGVudk1hcCwgdXYgKSApLnJnYjtcblx0XHRcdFx0dXYueSArPSB0ZXhlbFNpemUueTtcblx0XHRcdFx0dmVjMyBiciA9IGVudk1hcFRleGVsVG9MaW5lYXIoIHRleHR1cmUyRCAoIGVudk1hcCwgdXYgKSApLnJnYjtcblx0XHRcdFx0dXYueCAtPSB0ZXhlbFNpemUueDtcblx0XHRcdFx0dmVjMyBibCA9IGVudk1hcFRleGVsVG9MaW5lYXIoIHRleHR1cmUyRCAoIGVudk1hcCwgdXYgKSApLnJnYjtcblxuXHRcdFx0XHR2ZWMzIHRtID0gbWl4KCB0bCwgdHIsIGYueCApO1xuXHRcdFx0XHR2ZWMzIGJtID0gbWl4KCBibCwgYnIsIGYueCApO1xuXHRcdFx0XHRnbF9GcmFnQ29sb3IucmdiID0gbWl4KCB0bSwgYm0sIGYueSApO1xuXG5cdFx0XHRcdGdsX0ZyYWdDb2xvciA9IGxpbmVhclRvT3V0cHV0VGV4ZWwoIGdsX0ZyYWdDb2xvciApO1xuXG5cdFx0XHR9XG5cdFx0YCxibGVuZGluZzowLGRlcHRoVGVzdDohMSxkZXB0aFdyaXRlOiExfSl9ZnVuY3Rpb24gRWR0KCl7cmV0dXJuIG5ldyBzZHQoe25hbWU6IkN1YmVtYXBUb0N1YmVVViIsdW5pZm9ybXM6e2Vudk1hcDp7dmFsdWU6bnVsbH0saW5wdXRFbmNvZGluZzp7dmFsdWU6bWR0WzNlM119LG91dHB1dEVuY29kaW5nOnt2YWx1ZTptZHRbM2UzXX19LHZlcnRleFNoYWRlcjpBZHQoKSxmcmFnbWVudFNoYWRlcjpgXG5cblx0XHRcdHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuXHRcdFx0cHJlY2lzaW9uIG1lZGl1bXAgaW50O1xuXG5cdFx0XHR2YXJ5aW5nIHZlYzMgdk91dHB1dERpcmVjdGlvbjtcblxuXHRcdFx0dW5pZm9ybSBzYW1wbGVyQ3ViZSBlbnZNYXA7XG5cblx0XHRcdCR7VGR0KCl9XG5cblx0XHRcdHZvaWQgbWFpbigpIHtcblxuXHRcdFx0XHRnbF9GcmFnQ29sb3IgPSB2ZWM0KCAwLjAsIDAuMCwgMC4wLCAxLjAgKTtcblx0XHRcdFx0Z2xfRnJhZ0NvbG9yLnJnYiA9IGVudk1hcFRleGVsVG9MaW5lYXIoIHRleHR1cmVDdWJlKCBlbnZNYXAsIHZlYzMoIC0gdk91dHB1dERpcmVjdGlvbi54LCB2T3V0cHV0RGlyZWN0aW9uLnl6ICkgKSApLnJnYjtcblx0XHRcdFx0Z2xfRnJhZ0NvbG9yID0gbGluZWFyVG9PdXRwdXRUZXhlbCggZ2xfRnJhZ0NvbG9yICk7XG5cblx0XHRcdH1cblx0XHRgLGJsZW5kaW5nOjAsZGVwdGhUZXN0OiExLGRlcHRoV3JpdGU6ITF9KX1mdW5jdGlvbiBBZHQoKXtyZXR1cm4iXG5cblx0XHRwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcblx0XHRwcmVjaXNpb24gbWVkaXVtcCBpbnQ7XG5cblx0XHRhdHRyaWJ1dGUgdmVjMyBwb3NpdGlvbjtcblx0XHRhdHRyaWJ1dGUgdmVjMiB1djtcblx0XHRhdHRyaWJ1dGUgZmxvYXQgZmFjZUluZGV4O1xuXG5cdFx0dmFyeWluZyB2ZWMzIHZPdXRwdXREaXJlY3Rpb247XG5cblx0XHQvLyBSSCBjb29yZGluYXRlIHN5c3RlbTsgUE1SRU0gZmFjZS1pbmRleGluZyBjb252ZW50aW9uXG5cdFx0dmVjMyBnZXREaXJlY3Rpb24oIHZlYzIgdXYsIGZsb2F0IGZhY2UgKSB7XG5cblx0XHRcdHV2ID0gMi4wICogdXYgLSAxLjA7XG5cblx0XHRcdHZlYzMgZGlyZWN0aW9uID0gdmVjMyggdXYsIDEuMCApO1xuXG5cdFx0XHRpZiAoIGZhY2UgPT0gMC4wICkge1xuXG5cdFx0XHRcdGRpcmVjdGlvbiA9IGRpcmVjdGlvbi56eXg7IC8vICggMSwgdiwgdSApIHBvcyB4XG5cblx0XHRcdH0gZWxzZSBpZiAoIGZhY2UgPT0gMS4wICkge1xuXG5cdFx0XHRcdGRpcmVjdGlvbiA9IGRpcmVjdGlvbi54enk7XG5cdFx0XHRcdGRpcmVjdGlvbi54eiAqPSAtMS4wOyAvLyAoIC11LCAxLCAtdiApIHBvcyB5XG5cblx0XHRcdH0gZWxzZSBpZiAoIGZhY2UgPT0gMi4wICkge1xuXG5cdFx0XHRcdGRpcmVjdGlvbi54ICo9IC0xLjA7IC8vICggLXUsIHYsIDEgKSBwb3MgelxuXG5cdFx0XHR9IGVsc2UgaWYgKCBmYWNlID09IDMuMCApIHtcblxuXHRcdFx0XHRkaXJlY3Rpb24gPSBkaXJlY3Rpb24uenl4O1xuXHRcdFx0XHRkaXJlY3Rpb24ueHogKj0gLTEuMDsgLy8gKCAtMSwgdiwgLXUgKSBuZWcgeFxuXG5cdFx0XHR9IGVsc2UgaWYgKCBmYWNlID09IDQuMCApIHtcblxuXHRcdFx0XHRkaXJlY3Rpb24gPSBkaXJlY3Rpb24ueHp5O1xuXHRcdFx0XHRkaXJlY3Rpb24ueHkgKj0gLTEuMDsgLy8gKCAtdSwgLTEsIHYgKSBuZWcgeVxuXG5cdFx0XHR9IGVsc2UgaWYgKCBmYWNlID09IDUuMCApIHtcblxuXHRcdFx0XHRkaXJlY3Rpb24ueiAqPSAtMS4wOyAvLyAoIHUsIHYsIC0xICkgbmVnIHpcblxuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gZGlyZWN0aW9uO1xuXG5cdFx0fVxuXG5cdFx0dm9pZCBtYWluKCkge1xuXG5cdFx0XHR2T3V0cHV0RGlyZWN0aW9uID0gZ2V0RGlyZWN0aW9uKCB1diwgZmFjZUluZGV4ICk7XG5cdFx0XHRnbF9Qb3NpdGlvbiA9IHZlYzQoIHBvc2l0aW9uLCAxLjAgKTtcblxuXHRcdH1cblx0In1mdW5jdGlvbiBUZHQoKXtyZXR1cm4iXG5cblx0XHR1bmlmb3JtIGludCBpbnB1dEVuY29kaW5nO1xuXHRcdHVuaWZvcm0gaW50IG91dHB1dEVuY29kaW5nO1xuXG5cdFx0I2luY2x1ZGUgPGVuY29kaW5nc19wYXJzX2ZyYWdtZW50PlxuXG5cdFx0dmVjNCBpbnB1dFRleGVsVG9MaW5lYXIoIHZlYzQgdmFsdWUgKSB7XG5cblx0XHRcdGlmICggaW5wdXRFbmNvZGluZyA9PSAwICkge1xuXG5cdFx0XHRcdHJldHVybiB2YWx1ZTtcblxuXHRcdFx0fSBlbHNlIGlmICggaW5wdXRFbmNvZGluZyA9PSAxICkge1xuXG5cdFx0XHRcdHJldHVybiBzUkdCVG9MaW5lYXIoIHZhbHVlICk7XG5cblx0XHRcdH0gZWxzZSBpZiAoIGlucHV0RW5jb2RpbmcgPT0gMiApIHtcblxuXHRcdFx0XHRyZXR1cm4gUkdCRVRvTGluZWFyKCB2YWx1ZSApO1xuXG5cdFx0XHR9IGVsc2UgaWYgKCBpbnB1dEVuY29kaW5nID09IDMgKSB7XG5cblx0XHRcdFx0cmV0dXJuIFJHQk1Ub0xpbmVhciggdmFsdWUsIDcuMCApO1xuXG5cdFx0XHR9IGVsc2UgaWYgKCBpbnB1dEVuY29kaW5nID09IDQgKSB7XG5cblx0XHRcdFx0cmV0dXJuIFJHQk1Ub0xpbmVhciggdmFsdWUsIDE2LjAgKTtcblxuXHRcdFx0fSBlbHNlIGlmICggaW5wdXRFbmNvZGluZyA9PSA1ICkge1xuXG5cdFx0XHRcdHJldHVybiBSR0JEVG9MaW5lYXIoIHZhbHVlLCAyNTYuMCApO1xuXG5cdFx0XHR9IGVsc2Uge1xuXG5cdFx0XHRcdHJldHVybiBHYW1tYVRvTGluZWFyKCB2YWx1ZSwgMi4yICk7XG5cblx0XHRcdH1cblxuXHRcdH1cblxuXHRcdHZlYzQgbGluZWFyVG9PdXRwdXRUZXhlbCggdmVjNCB2YWx1ZSApIHtcblxuXHRcdFx0aWYgKCBvdXRwdXRFbmNvZGluZyA9PSAwICkge1xuXG5cdFx0XHRcdHJldHVybiB2YWx1ZTtcblxuXHRcdFx0fSBlbHNlIGlmICggb3V0cHV0RW5jb2RpbmcgPT0gMSApIHtcblxuXHRcdFx0XHRyZXR1cm4gTGluZWFyVG9zUkdCKCB2YWx1ZSApO1xuXG5cdFx0XHR9IGVsc2UgaWYgKCBvdXRwdXRFbmNvZGluZyA9PSAyICkge1xuXG5cdFx0XHRcdHJldHVybiBMaW5lYXJUb1JHQkUoIHZhbHVlICk7XG5cblx0XHRcdH0gZWxzZSBpZiAoIG91dHB1dEVuY29kaW5nID09IDMgKSB7XG5cblx0XHRcdFx0cmV0dXJuIExpbmVhclRvUkdCTSggdmFsdWUsIDcuMCApO1xuXG5cdFx0XHR9IGVsc2UgaWYgKCBvdXRwdXRFbmNvZGluZyA9PSA0ICkge1xuXG5cdFx0XHRcdHJldHVybiBMaW5lYXJUb1JHQk0oIHZhbHVlLCAxNi4wICk7XG5cblx0XHRcdH0gZWxzZSBpZiAoIG91dHB1dEVuY29kaW5nID09IDUgKSB7XG5cblx0XHRcdFx0cmV0dXJuIExpbmVhclRvUkdCRCggdmFsdWUsIDI1Ni4wICk7XG5cblx0XHRcdH0gZWxzZSB7XG5cblx0XHRcdFx0cmV0dXJuIExpbmVhclRvR2FtbWEoIHZhbHVlLCAyLjIgKTtcblxuXHRcdFx0fVxuXG5cdFx0fVxuXG5cdFx0dmVjNCBlbnZNYXBUZXhlbFRvTGluZWFyKCB2ZWM0IGNvbG9yICkge1xuXG5cdFx0XHRyZXR1cm4gaW5wdXRUZXhlbFRvTGluZWFyKCBjb2xvciApO1xuXG5cdFx0fVxuXHQifWZ1bmN0aW9uIE5kdCh0KXtsZXQgZT1uZXcgV2Vha01hcCxuPW51bGw7ZnVuY3Rpb24gbyh0KXtjb25zdCBuPXQudGFyZ2V0O24ucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIsbyk7Y29uc3QgaT1lLmdldChuKTt2b2lkIDAhPT1pJiYoaS5kZWxldGUobiksaS5kaXNwb3NlKCkpfXJldHVybntnZXQ6ZnVuY3Rpb24gaShhKXtpZihhJiZhLmlzVGV4dHVyZSYmITE9PT1hLmlzUmVuZGVyVGFyZ2V0VGV4dHVyZSl7Y29uc3QgaT1hLm1hcHBpbmcscj0zMDM9PT1pfHwzMDQ9PT1pLHM9aT09PXdydHx8aT09PWtydDtpZihyfHxzKXtpZihlLmhhcyhhKSlyZXR1cm4gZS5nZXQoYSkudGV4dHVyZTt7Y29uc3QgaT1hLmltYWdlO2lmKHImJmkmJmkuaGVpZ2h0PjB8fHMmJmkmJihmdW5jdGlvbiByKHQpe2xldCBlPTA7Y29uc3Qgbj02O2ZvcihsZXQgbz0wO288bjtvKyspdm9pZCAwIT09dFtvXSYmZSsrO3JldHVybiBlPT09bn0pKGkpKXtjb25zdCBpPXQuZ2V0UmVuZGVyVGFyZ2V0KCk7bnVsbD09PW4mJihuPW5ldyBQZHQodCkpO2NvbnN0IHM9cj9uLmZyb21FcXVpcmVjdGFuZ3VsYXIoYSk6bi5mcm9tQ3ViZW1hcChhKTtyZXR1cm4gZS5zZXQoYSxzKSx0LnNldFJlbmRlclRhcmdldChpKSxhLmFkZEV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLG8pLHMudGV4dHVyZX1yZXR1cm4gbnVsbH19fXJldHVybiBhfSxkaXNwb3NlOmZ1bmN0aW9uIGEoKXtlPW5ldyBXZWFrTWFwLG51bGwhPT1uJiYobi5kaXNwb3NlKCksbj1udWxsKX19fWZ1bmN0aW9uIHpkdCh0KXtjb25zdCBlPXt9O2Z1bmN0aW9uIG4obil7aWYodm9pZCAwIT09ZVtuXSlyZXR1cm4gZVtuXTtsZXQgbztzd2l0Y2gobil7Y2FzZSJXRUJHTF9kZXB0aF90ZXh0dXJlIjpvPXQuZ2V0RXh0ZW5zaW9uKCJXRUJHTF9kZXB0aF90ZXh0dXJlIil8fHQuZ2V0RXh0ZW5zaW9uKCJNT1pfV0VCR0xfZGVwdGhfdGV4dHVyZSIpfHx0LmdldEV4dGVuc2lvbigiV0VCS0lUX1dFQkdMX2RlcHRoX3RleHR1cmUiKTticmVhaztjYXNlIkVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyI6bz10LmdldEV4dGVuc2lvbigiRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIil8fHQuZ2V0RXh0ZW5zaW9uKCJNT1pfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIil8fHQuZ2V0RXh0ZW5zaW9uKCJXRUJLSVRfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIik7YnJlYWs7Y2FzZSJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YyI6bz10LmdldEV4dGVuc2lvbigiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMiKXx8dC5nZXRFeHRlbnNpb24oIk1PWl9XRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YyIpfHx0LmdldEV4dGVuc2lvbigiV0VCS0lUX1dFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjIik7YnJlYWs7Y2FzZSJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZydGMiOm89dC5nZXRFeHRlbnNpb24oIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9wdnJ0YyIpfHx0LmdldEV4dGVuc2lvbigiV0VCS0lUX1dFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9wdnJ0YyIpO2JyZWFrO2RlZmF1bHQ6bz10LmdldEV4dGVuc2lvbihuKX1yZXR1cm4gZVtuXT1vLG99cmV0dXJue2hhczpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9PW4odCl9LGluaXQ6ZnVuY3Rpb24odCl7dC5pc1dlYkdMMj9uKCJFWFRfY29sb3JfYnVmZmVyX2Zsb2F0Iik6KG4oIldFQkdMX2RlcHRoX3RleHR1cmUiKSxuKCJPRVNfdGV4dHVyZV9mbG9hdCIpLG4oIk9FU190ZXh0dXJlX2hhbGZfZmxvYXQiKSxuKCJPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xpbmVhciIpLG4oIk9FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyIpLG4oIk9FU19lbGVtZW50X2luZGV4X3VpbnQiKSxuKCJPRVNfdmVydGV4X2FycmF5X29iamVjdCIpLG4oIkFOR0xFX2luc3RhbmNlZF9hcnJheXMiKSksbigiT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIiksbigiRVhUX2NvbG9yX2J1ZmZlcl9oYWxmX2Zsb2F0Iil9LGdldDpmdW5jdGlvbih0KXtjb25zdCBlPW4odCk7cmV0dXJuIG51bGw9PT1lJiZjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6ICIrdCsiIGV4dGVuc2lvbiBub3Qgc3VwcG9ydGVkLiIpLGV9fX1mdW5jdGlvbiBJZHQodCxlLG4sbyl7Y29uc3QgaT17fSxhPW5ldyBXZWFrTWFwO2Z1bmN0aW9uIHIodCl7Y29uc3Qgcz10LnRhcmdldDtudWxsIT09cy5pbmRleCYmZS5yZW1vdmUocy5pbmRleCk7Zm9yKGNvbnN0IHQgaW4gcy5hdHRyaWJ1dGVzKWUucmVtb3ZlKHMuYXR0cmlidXRlc1t0XSk7cy5yZW1vdmVFdmVudExpc3RlbmVyKCJkaXNwb3NlIixyKSxkZWxldGUgaVtzLmlkXTtjb25zdCBsPWEuZ2V0KHMpO2wmJihlLnJlbW92ZShsKSxhLmRlbGV0ZShzKSksby5yZWxlYXNlU3RhdGVzT2ZHZW9tZXRyeShzKSwhMD09PXMuaXNJbnN0YW5jZWRCdWZmZXJHZW9tZXRyeSYmZGVsZXRlIHMuX21heEluc3RhbmNlQ291bnQsbi5tZW1vcnkuZ2VvbWV0cmllcy0tfWZ1bmN0aW9uIHModCl7Y29uc3Qgbj1bXSxvPXQuaW5kZXgsaT10LmF0dHJpYnV0ZXMucG9zaXRpb247bGV0IHI9MDtpZihudWxsIT09byl7Y29uc3QgdD1vLmFycmF5O3I9by52ZXJzaW9uO2ZvcihsZXQgZT0wLG89dC5sZW5ndGg7ZTxvO2UrPTMpe2NvbnN0IG89dFtlKzBdLGk9dFtlKzFdLGE9dFtlKzJdO24ucHVzaChvLGksaSxhLGEsbyl9fWVsc2V7cj1pLnZlcnNpb247Zm9yKGxldCB0PTAsZT1pLmFycmF5Lmxlbmd0aC8zLTE7dDxlO3QrPTMpe2NvbnN0IGU9dCswLG89dCsxLGk9dCsyO24ucHVzaChlLG8sbyxpLGksZSl9fWNvbnN0IHM9bmV3KG5jdChuKT42NTUzNT90Y3Q6JGx0KShuLDEpO3MudmVyc2lvbj1yO2NvbnN0IGw9YS5nZXQodCk7bCYmZS5yZW1vdmUobCksYS5zZXQodCxzKX1yZXR1cm57Z2V0OmZ1bmN0aW9uIGwodCxlKXtyZXR1cm4hMD09PWlbZS5pZF18fChlLmFkZEV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLHIpLGlbZS5pZF09ITAsbi5tZW1vcnkuZ2VvbWV0cmllcysrKSxlfSx1cGRhdGU6ZnVuY3Rpb24gYyh0KXtjb25zdCBuPXQuYXR0cmlidXRlcztmb3IoY29uc3QgdCBpbiBuKWUudXBkYXRlKG5bdF0sMzQ5NjIpO2NvbnN0IG89dC5tb3JwaEF0dHJpYnV0ZXM7Zm9yKGNvbnN0IHQgaW4gbyl7Y29uc3Qgbj1vW3RdO2ZvcihsZXQgdD0wLG89bi5sZW5ndGg7dDxvO3QrKyllLnVwZGF0ZShuW3RdLDM0OTYyKX19LGdldFdpcmVmcmFtZUF0dHJpYnV0ZTpmdW5jdGlvbiBkKHQpe2NvbnN0IGU9YS5nZXQodCk7aWYoZSl7Y29uc3Qgbj10LmluZGV4O251bGwhPT1uJiZlLnZlcnNpb248bi52ZXJzaW9uJiZzKHQpfWVsc2Ugcyh0KTtyZXR1cm4gYS5nZXQodCl9fX1mdW5jdGlvbiBIZHQodCxlLG4sbyl7Y29uc3QgaT1vLmlzV2ViR0wyO2xldCBhLHIsczt0aGlzLnNldE1vZGU9ZnVuY3Rpb24gbCh0KXthPXR9LHRoaXMuc2V0SW5kZXg9ZnVuY3Rpb24gYyh0KXtyPXQudHlwZSxzPXQuYnl0ZXNQZXJFbGVtZW50fSx0aGlzLnJlbmRlcj1mdW5jdGlvbiBkKGUsbyl7dC5kcmF3RWxlbWVudHMoYSxvLHIsZSpzKSxuLnVwZGF0ZShvLGEsMSl9LHRoaXMucmVuZGVySW5zdGFuY2VzPWZ1bmN0aW9uIHAobyxsLGMpe2lmKDA9PT1jKXJldHVybjtsZXQgZCxwO2lmKGkpZD10LHA9ImRyYXdFbGVtZW50c0luc3RhbmNlZCI7ZWxzZSBpZihkPWUuZ2V0KCJBTkdMRV9pbnN0YW5jZWRfYXJyYXlzIikscD0iZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUiLG51bGw9PT1kKXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMSW5kZXhlZEJ1ZmZlclJlbmRlcmVyOiB1c2luZyBUSFJFRS5JbnN0YW5jZWRCdWZmZXJHZW9tZXRyeSBidXQgaGFyZHdhcmUgZG9lcyBub3Qgc3VwcG9ydCBleHRlbnNpb24gQU5HTEVfaW5zdGFuY2VkX2FycmF5cy4iKTtkW3BdKGEsbCxyLG8qcyxjKSxuLnVwZGF0ZShsLGEsYyl9fWZ1bmN0aW9uIEZkdCh0KXtjb25zdCBlPXtmcmFtZTowLGNhbGxzOjAsdHJpYW5nbGVzOjAscG9pbnRzOjAsbGluZXM6MH07cmV0dXJue21lbW9yeTp7Z2VvbWV0cmllczowLHRleHR1cmVzOjB9LHJlbmRlcjplLHByb2dyYW1zOm51bGwsYXV0b1Jlc2V0OiEwLHJlc2V0OmZ1bmN0aW9uIG4oKXtlLmZyYW1lKyssZS5jYWxscz0wLGUudHJpYW5nbGVzPTAsZS5wb2ludHM9MCxlLmxpbmVzPTB9LHVwZGF0ZTpmdW5jdGlvbiBvKHQsbixpKXtzd2l0Y2goZS5jYWxscysrLG4pe2Nhc2UgNDplLnRyaWFuZ2xlcys9aSoodC8zKTticmVhaztjYXNlIDE6ZS5saW5lcys9aSoodC8yKTticmVhaztjYXNlIDM6ZS5saW5lcys9aSoodC0xKTticmVhaztjYXNlIDI6ZS5saW5lcys9aSp0O2JyZWFrO2Nhc2UgMDplLnBvaW50cys9aSp0O2JyZWFrO2RlZmF1bHQ6Y29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xJbmZvOiBVbmtub3duIGRyYXcgbW9kZToiLG4pfX19fWZ1bmN0aW9uIExkdCh0LGUpe3JldHVybiB0WzBdLWVbMF19ZnVuY3Rpb24gQmR0KHQsZSl7cmV0dXJuIE1hdGguYWJzKGVbMV0pLU1hdGguYWJzKHRbMV0pfWZ1bmN0aW9uIFZkdCh0KXtjb25zdCBlPXt9LG49bmV3IEZsb2F0MzJBcnJheSg4KSxvPVtdO2ZvcihsZXQgdD0wO3Q8ODt0Kyspb1t0XT1bdCwwXTtyZXR1cm57dXBkYXRlOmZ1bmN0aW9uIGkoYSxyLHMsbCl7Y29uc3QgYz1hLm1vcnBoVGFyZ2V0SW5mbHVlbmNlcyxkPXZvaWQgMD09PWM/MDpjLmxlbmd0aDtsZXQgcD1lW3IuaWRdO2lmKHZvaWQgMD09PXB8fHAubGVuZ3RoIT09ZCl7cD1bXTtmb3IobGV0IHQ9MDt0PGQ7dCsrKXBbdF09W3QsMF07ZVtyLmlkXT1wfWZvcihsZXQgdD0wO3Q8ZDt0Kyspe2NvbnN0IGU9cFt0XTtlWzBdPXQsZVsxXT1jW3RdfXAuc29ydChCZHQpO2ZvcihsZXQgdD0wO3Q8ODt0KyspdDxkJiZwW3RdWzFdPyhvW3RdWzBdPXBbdF1bMF0sb1t0XVsxXT1wW3RdWzFdKToob1t0XVswXT1OdW1iZXIuTUFYX1NBRkVfSU5URUdFUixvW3RdWzFdPTApO28uc29ydChMZHQpO2NvbnN0IG09ci5tb3JwaEF0dHJpYnV0ZXMucG9zaXRpb24sZj1yLm1vcnBoQXR0cmlidXRlcy5ub3JtYWw7bGV0IHU9MDtmb3IobGV0IHQ9MDt0PDg7dCsrKXtjb25zdCBlPW9bdF0saT1lWzBdLGE9ZVsxXTtpIT09TnVtYmVyLk1BWF9TQUZFX0lOVEVHRVImJmE/KG0mJnIuZ2V0QXR0cmlidXRlKCJtb3JwaFRhcmdldCIrdCkhPT1tW2ldJiZyLnNldEF0dHJpYnV0ZSgibW9ycGhUYXJnZXQiK3QsbVtpXSksZiYmci5nZXRBdHRyaWJ1dGUoIm1vcnBoTm9ybWFsIit0KSE9PWZbaV0mJnIuc2V0QXR0cmlidXRlKCJtb3JwaE5vcm1hbCIrdCxmW2ldKSxuW3RdPWEsdSs9YSk6KG0mJiEwPT09ci5oYXNBdHRyaWJ1dGUoIm1vcnBoVGFyZ2V0Iit0KSYmci5kZWxldGVBdHRyaWJ1dGUoIm1vcnBoVGFyZ2V0Iit0KSxmJiYhMD09PXIuaGFzQXR0cmlidXRlKCJtb3JwaE5vcm1hbCIrdCkmJnIuZGVsZXRlQXR0cmlidXRlKCJtb3JwaE5vcm1hbCIrdCksblt0XT0wKX1jb25zdCBnPXIubW9ycGhUYXJnZXRzUmVsYXRpdmU/MToxLXU7bC5nZXRVbmlmb3JtcygpLnNldFZhbHVlKHQsIm1vcnBoVGFyZ2V0QmFzZUluZmx1ZW5jZSIsZyksbC5nZXRVbmlmb3JtcygpLnNldFZhbHVlKHQsIm1vcnBoVGFyZ2V0SW5mbHVlbmNlcyIsbil9fX1mdW5jdGlvbiBqZHQodCxlLG4sbyl7bGV0IGk9bmV3IFdlYWtNYXA7ZnVuY3Rpb24gYSh0KXtjb25zdCBlPXQudGFyZ2V0O2UucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIsYSksbi5yZW1vdmUoZS5pbnN0YW5jZU1hdHJpeCksbnVsbCE9PWUuaW5zdGFuY2VDb2xvciYmbi5yZW1vdmUoZS5pbnN0YW5jZUNvbG9yKX1yZXR1cm57dXBkYXRlOmZ1bmN0aW9uIHIodCl7Y29uc3Qgcj1vLnJlbmRlci5mcmFtZSxzPWUuZ2V0KHQsdC5nZW9tZXRyeSk7cmV0dXJuIGkuZ2V0KHMpIT09ciYmKGUudXBkYXRlKHMpLGkuc2V0KHMscikpLHQuaXNJbnN0YW5jZWRNZXNoJiYoITE9PT10Lmhhc0V2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLGEpJiZ0LmFkZEV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLGEpLG4udXBkYXRlKHQuaW5zdGFuY2VNYXRyaXgsMzQ5NjIpLG51bGwhPT10Lmluc3RhbmNlQ29sb3ImJm4udXBkYXRlKHQuaW5zdGFuY2VDb2xvciwzNDk2MikpLHN9LGRpc3Bvc2U6ZnVuY3Rpb24gcygpe2k9bmV3IFdlYWtNYXB9fX1jbGFzcyBVZHQgZXh0ZW5kcyBDc3R7Y29uc3RydWN0b3IodD1udWxsLGU9MSxuPTEsbz0xKXtzdXBlcihudWxsKSx0aGlzLmltYWdlPXtkYXRhOnQsd2lkdGg6ZSxoZWlnaHQ6bixkZXB0aDpvfSx0aGlzLm1hZ0ZpbHRlcj1BcnQsdGhpcy5taW5GaWx0ZXI9QXJ0LHRoaXMud3JhcFI9UnJ0LHRoaXMuZ2VuZXJhdGVNaXBtYXBzPSExLHRoaXMuZmxpcFk9ITEsdGhpcy51bnBhY2tBbGlnbm1lbnQ9MSx0aGlzLm5lZWRzVXBkYXRlPSEwfX1VZHQucHJvdG90eXBlLmlzRGF0YVRleHR1cmUyREFycmF5PSEwO2NsYXNzIFdkdCBleHRlbmRzIENzdHtjb25zdHJ1Y3Rvcih0PW51bGwsZT0xLG49MSxvPTEpe3N1cGVyKG51bGwpLHRoaXMuaW1hZ2U9e2RhdGE6dCx3aWR0aDplLGhlaWdodDpuLGRlcHRoOm99LHRoaXMubWFnRmlsdGVyPUFydCx0aGlzLm1pbkZpbHRlcj1BcnQsdGhpcy53cmFwUj1ScnQsdGhpcy5nZW5lcmF0ZU1pcG1hcHM9ITEsdGhpcy5mbGlwWT0hMSx0aGlzLnVucGFja0FsaWdubWVudD0xLHRoaXMubmVlZHNVcGRhdGU9ITB9fVdkdC5wcm90b3R5cGUuaXNEYXRhVGV4dHVyZTNEPSEwO2NvbnN0IEdkdD1uZXcgQ3N0LFlkdD1uZXcgVWR0LHFkdD1uZXcgV2R0LFpkdD1uZXcgTGN0LFhkdD1bXSxLZHQ9W10sSmR0PW5ldyBGbG9hdDMyQXJyYXkoMTYpLFFkdD1uZXcgRmxvYXQzMkFycmF5KDkpLCRkdD1uZXcgRmxvYXQzMkFycmF5KDQpO2Z1bmN0aW9uIHRwdCh0LGUsbil7Y29uc3Qgbz10WzBdO2lmKG88PTB8fG8+MClyZXR1cm4gdDtjb25zdCBpPWUqbjtsZXQgYT1YZHRbaV07aWYodm9pZCAwPT09YSYmKGE9bmV3IEZsb2F0MzJBcnJheShpKSxYZHRbaV09YSksMCE9PWUpe28udG9BcnJheShhLDApO2ZvcihsZXQgbz0xLGk9MDtvIT09ZTsrK28paSs9bix0W29dLnRvQXJyYXkoYSxpKX1yZXR1cm4gYX1mdW5jdGlvbiBlcHQodCxlKXtpZih0Lmxlbmd0aCE9PWUubGVuZ3RoKXJldHVybiExO2ZvcihsZXQgbj0wLG89dC5sZW5ndGg7bjxvO24rKylpZih0W25dIT09ZVtuXSlyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiBucHQodCxlKXtmb3IobGV0IG49MCxvPWUubGVuZ3RoO248bztuKyspdFtuXT1lW25dfWZ1bmN0aW9uIG9wdCh0LGUpe2xldCBuPUtkdFtlXTt2b2lkIDA9PT1uJiYobj1uZXcgSW50MzJBcnJheShlKSxLZHRbZV09bik7Zm9yKGxldCBvPTA7byE9PWU7KytvKW5bb109dC5hbGxvY2F0ZVRleHR1cmVVbml0KCk7cmV0dXJuIG59ZnVuY3Rpb24gaXB0KHQsZSl7Y29uc3Qgbj10aGlzLmNhY2hlO25bMF0hPT1lJiYodC51bmlmb3JtMWYodGhpcy5hZGRyLGUpLG5bMF09ZSl9ZnVuY3Rpb24gYXB0KHQsZSl7Y29uc3Qgbj10aGlzLmNhY2hlO2lmKHZvaWQgMCE9PWUueCluWzBdPT09ZS54JiZuWzFdPT09ZS55fHwodC51bmlmb3JtMmYodGhpcy5hZGRyLGUueCxlLnkpLG5bMF09ZS54LG5bMV09ZS55KTtlbHNle2lmKGVwdChuLGUpKXJldHVybjt0LnVuaWZvcm0yZnYodGhpcy5hZGRyLGUpLG5wdChuLGUpfX1mdW5jdGlvbiBycHQodCxlKXtjb25zdCBuPXRoaXMuY2FjaGU7aWYodm9pZCAwIT09ZS54KW5bMF09PT1lLngmJm5bMV09PT1lLnkmJm5bMl09PT1lLnp8fCh0LnVuaWZvcm0zZih0aGlzLmFkZHIsZS54LGUueSxlLnopLG5bMF09ZS54LG5bMV09ZS55LG5bMl09ZS56KTtlbHNlIGlmKHZvaWQgMCE9PWUuciluWzBdPT09ZS5yJiZuWzFdPT09ZS5nJiZuWzJdPT09ZS5ifHwodC51bmlmb3JtM2YodGhpcy5hZGRyLGUucixlLmcsZS5iKSxuWzBdPWUucixuWzFdPWUuZyxuWzJdPWUuYik7ZWxzZXtpZihlcHQobixlKSlyZXR1cm47dC51bmlmb3JtM2Z2KHRoaXMuYWRkcixlKSxucHQobixlKX19ZnVuY3Rpb24gc3B0KHQsZSl7Y29uc3Qgbj10aGlzLmNhY2hlO2lmKHZvaWQgMCE9PWUueCluWzBdPT09ZS54JiZuWzFdPT09ZS55JiZuWzJdPT09ZS56JiZuWzNdPT09ZS53fHwodC51bmlmb3JtNGYodGhpcy5hZGRyLGUueCxlLnksZS56LGUudyksblswXT1lLngsblsxXT1lLnksblsyXT1lLnosblszXT1lLncpO2Vsc2V7aWYoZXB0KG4sZSkpcmV0dXJuO3QudW5pZm9ybTRmdih0aGlzLmFkZHIsZSksbnB0KG4sZSl9fWZ1bmN0aW9uIGxwdCh0LGUpe2NvbnN0IG49dGhpcy5jYWNoZSxvPWUuZWxlbWVudHM7aWYodm9pZCAwPT09byl7aWYoZXB0KG4sZSkpcmV0dXJuO3QudW5pZm9ybU1hdHJpeDJmdih0aGlzLmFkZHIsITEsZSksbnB0KG4sZSl9ZWxzZXtpZihlcHQobixvKSlyZXR1cm47JGR0LnNldChvKSx0LnVuaWZvcm1NYXRyaXgyZnYodGhpcy5hZGRyLCExLCRkdCksbnB0KG4sbyl9fWZ1bmN0aW9uIGNwdCh0LGUpe2NvbnN0IG49dGhpcy5jYWNoZSxvPWUuZWxlbWVudHM7aWYodm9pZCAwPT09byl7aWYoZXB0KG4sZSkpcmV0dXJuO3QudW5pZm9ybU1hdHJpeDNmdih0aGlzLmFkZHIsITEsZSksbnB0KG4sZSl9ZWxzZXtpZihlcHQobixvKSlyZXR1cm47UWR0LnNldChvKSx0LnVuaWZvcm1NYXRyaXgzZnYodGhpcy5hZGRyLCExLFFkdCksbnB0KG4sbyl9fWZ1bmN0aW9uIGRwdCh0LGUpe2NvbnN0IG49dGhpcy5jYWNoZSxvPWUuZWxlbWVudHM7aWYodm9pZCAwPT09byl7aWYoZXB0KG4sZSkpcmV0dXJuO3QudW5pZm9ybU1hdHJpeDRmdih0aGlzLmFkZHIsITEsZSksbnB0KG4sZSl9ZWxzZXtpZihlcHQobixvKSlyZXR1cm47SmR0LnNldChvKSx0LnVuaWZvcm1NYXRyaXg0ZnYodGhpcy5hZGRyLCExLEpkdCksbnB0KG4sbyl9fWZ1bmN0aW9uIHBwdCh0LGUpe2NvbnN0IG49dGhpcy5jYWNoZTtuWzBdIT09ZSYmKHQudW5pZm9ybTFpKHRoaXMuYWRkcixlKSxuWzBdPWUpfWZ1bmN0aW9uIG1wdCh0LGUpe2NvbnN0IG49dGhpcy5jYWNoZTtlcHQobixlKXx8KHQudW5pZm9ybTJpdih0aGlzLmFkZHIsZSksbnB0KG4sZSkpfWZ1bmN0aW9uIGZwdCh0LGUpe2NvbnN0IG49dGhpcy5jYWNoZTtlcHQobixlKXx8KHQudW5pZm9ybTNpdih0aGlzLmFkZHIsZSksbnB0KG4sZSkpfWZ1bmN0aW9uIHVwdCh0LGUpe2NvbnN0IG49dGhpcy5jYWNoZTtlcHQobixlKXx8KHQudW5pZm9ybTRpdih0aGlzLmFkZHIsZSksbnB0KG4sZSkpfWZ1bmN0aW9uIGdwdCh0LGUpe2NvbnN0IG49dGhpcy5jYWNoZTtuWzBdIT09ZSYmKHQudW5pZm9ybTF1aSh0aGlzLmFkZHIsZSksblswXT1lKX1mdW5jdGlvbiBocHQodCxlKXtjb25zdCBuPXRoaXMuY2FjaGU7ZXB0KG4sZSl8fCh0LnVuaWZvcm0ydWl2KHRoaXMuYWRkcixlKSxucHQobixlKSl9ZnVuY3Rpb24gYnB0KHQsZSl7Y29uc3Qgbj10aGlzLmNhY2hlO2VwdChuLGUpfHwodC51bmlmb3JtM3Vpdih0aGlzLmFkZHIsZSksbnB0KG4sZSkpfWZ1bmN0aW9uIHlwdCh0LGUpe2NvbnN0IG49dGhpcy5jYWNoZTtlcHQobixlKXx8KHQudW5pZm9ybTR1aXYodGhpcy5hZGRyLGUpLG5wdChuLGUpKX1mdW5jdGlvbiBfcHQodCxlLG4pe2NvbnN0IG89dGhpcy5jYWNoZSxpPW4uYWxsb2NhdGVUZXh0dXJlVW5pdCgpO29bMF0hPT1pJiYodC51bmlmb3JtMWkodGhpcy5hZGRyLGkpLG9bMF09aSksbi5zYWZlU2V0VGV4dHVyZTJEKGV8fEdkdCxpKX1mdW5jdGlvbiBDcHQodCxlLG4pe2NvbnN0IG89dGhpcy5jYWNoZSxpPW4uYWxsb2NhdGVUZXh0dXJlVW5pdCgpO29bMF0hPT1pJiYodC51bmlmb3JtMWkodGhpcy5hZGRyLGkpLG9bMF09aSksbi5zZXRUZXh0dXJlM0QoZXx8cWR0LGkpfWZ1bmN0aW9uIE1wdCh0LGUsbil7Y29uc3Qgbz10aGlzLmNhY2hlLGk9bi5hbGxvY2F0ZVRleHR1cmVVbml0KCk7b1swXSE9PWkmJih0LnVuaWZvcm0xaSh0aGlzLmFkZHIsaSksb1swXT1pKSxuLnNhZmVTZXRUZXh0dXJlQ3ViZShlfHxaZHQsaSl9ZnVuY3Rpb24gdnB0KHQsZSxuKXtjb25zdCBvPXRoaXMuY2FjaGUsaT1uLmFsbG9jYXRlVGV4dHVyZVVuaXQoKTtvWzBdIT09aSYmKHQudW5pZm9ybTFpKHRoaXMuYWRkcixpKSxvWzBdPWkpLG4uc2V0VGV4dHVyZTJEQXJyYXkoZXx8WWR0LGkpfWZ1bmN0aW9uIHhwdCh0LGUpe3QudW5pZm9ybTFmdih0aGlzLmFkZHIsZSl9ZnVuY3Rpb24gT3B0KHQsZSl7Y29uc3Qgbj10cHQoZSx0aGlzLnNpemUsMik7dC51bmlmb3JtMmZ2KHRoaXMuYWRkcixuKX1mdW5jdGlvbiBQcHQodCxlKXtjb25zdCBuPXRwdChlLHRoaXMuc2l6ZSwzKTt0LnVuaWZvcm0zZnYodGhpcy5hZGRyLG4pfWZ1bmN0aW9uIHdwdCh0LGUpe2NvbnN0IG49dHB0KGUsdGhpcy5zaXplLDQpO3QudW5pZm9ybTRmdih0aGlzLmFkZHIsbil9ZnVuY3Rpb24ga3B0KHQsZSl7Y29uc3Qgbj10cHQoZSx0aGlzLnNpemUsNCk7dC51bmlmb3JtTWF0cml4MmZ2KHRoaXMuYWRkciwhMSxuKX1mdW5jdGlvbiBTcHQodCxlKXtjb25zdCBuPXRwdChlLHRoaXMuc2l6ZSw5KTt0LnVuaWZvcm1NYXRyaXgzZnYodGhpcy5hZGRyLCExLG4pfWZ1bmN0aW9uIERwdCh0LGUpe2NvbnN0IG49dHB0KGUsdGhpcy5zaXplLDE2KTt0LnVuaWZvcm1NYXRyaXg0ZnYodGhpcy5hZGRyLCExLG4pfWZ1bmN0aW9uIFJwdCh0LGUpe3QudW5pZm9ybTFpdih0aGlzLmFkZHIsZSl9ZnVuY3Rpb24gRXB0KHQsZSl7dC51bmlmb3JtMml2KHRoaXMuYWRkcixlKX1mdW5jdGlvbiBBcHQodCxlKXt0LnVuaWZvcm0zaXYodGhpcy5hZGRyLGUpfWZ1bmN0aW9uIFRwdCh0LGUpe3QudW5pZm9ybTRpdih0aGlzLmFkZHIsZSl9ZnVuY3Rpb24gTnB0KHQsZSl7dC51bmlmb3JtMXVpdih0aGlzLmFkZHIsZSl9ZnVuY3Rpb24genB0KHQsZSl7dC51bmlmb3JtMnVpdih0aGlzLmFkZHIsZSl9ZnVuY3Rpb24gSXB0KHQsZSl7dC51bmlmb3JtM3Vpdih0aGlzLmFkZHIsZSl9ZnVuY3Rpb24gSHB0KHQsZSl7dC51bmlmb3JtNHVpdih0aGlzLmFkZHIsZSl9ZnVuY3Rpb24gRnB0KHQsZSxuKXtjb25zdCBvPWUubGVuZ3RoLGk9b3B0KG4sbyk7dC51bmlmb3JtMWl2KHRoaXMuYWRkcixpKTtmb3IobGV0IHQ9MDt0IT09bzsrK3Qpbi5zYWZlU2V0VGV4dHVyZTJEKGVbdF18fEdkdCxpW3RdKX1mdW5jdGlvbiBMcHQodCxlLG4pe2NvbnN0IG89ZS5sZW5ndGgsaT1vcHQobixvKTt0LnVuaWZvcm0xaXYodGhpcy5hZGRyLGkpO2ZvcihsZXQgdD0wO3QhPT1vOysrdCluLnNhZmVTZXRUZXh0dXJlQ3ViZShlW3RdfHxaZHQsaVt0XSl9ZnVuY3Rpb24gQnB0KHQsZSxuKXt0aGlzLmlkPXQsdGhpcy5hZGRyPW4sdGhpcy5jYWNoZT1bXSx0aGlzLnNldFZhbHVlPShmdW5jdGlvbiBvKHQpe3N3aXRjaCh0KXtjYXNlIDUxMjY6cmV0dXJuIGlwdDtjYXNlIDM1NjY0OnJldHVybiBhcHQ7Y2FzZSAzNTY2NTpyZXR1cm4gcnB0O2Nhc2UgMzU2NjY6cmV0dXJuIHNwdDtjYXNlIDM1Njc0OnJldHVybiBscHQ7Y2FzZSAzNTY3NTpyZXR1cm4gY3B0O2Nhc2UgMzU2NzY6cmV0dXJuIGRwdDtjYXNlIDUxMjQ6Y2FzZSAzNTY3MDpyZXR1cm4gcHB0O2Nhc2UgMzU2Njc6Y2FzZSAzNTY3MTpyZXR1cm4gbXB0O2Nhc2UgMzU2Njg6Y2FzZSAzNTY3MjpyZXR1cm4gZnB0O2Nhc2UgMzU2Njk6Y2FzZSAzNTY3MzpyZXR1cm4gdXB0O2Nhc2UgNTEyNTpyZXR1cm4gZ3B0O2Nhc2UgMzYyOTQ6cmV0dXJuIGhwdDtjYXNlIDM2Mjk1OnJldHVybiBicHQ7Y2FzZSAzNjI5NjpyZXR1cm4geXB0O2Nhc2UgMzU2Nzg6Y2FzZSAzNjE5ODpjYXNlIDM2Mjk4OmNhc2UgMzYzMDY6Y2FzZSAzNTY4MjpyZXR1cm4gX3B0O2Nhc2UgMzU2Nzk6Y2FzZSAzNjI5OTpjYXNlIDM2MzA3OnJldHVybiBDcHQ7Y2FzZSAzNTY4MDpjYXNlIDM2MzAwOmNhc2UgMzYzMDg6Y2FzZSAzNjI5MzpyZXR1cm4gTXB0O2Nhc2UgMzYyODk6Y2FzZSAzNjMwMzpjYXNlIDM2MzExOmNhc2UgMzYyOTI6cmV0dXJuIHZwdH19KShlLnR5cGUpfWZ1bmN0aW9uIFZwdCh0LGUsbil7dGhpcy5pZD10LHRoaXMuYWRkcj1uLHRoaXMuY2FjaGU9W10sdGhpcy5zaXplPWUuc2l6ZSx0aGlzLnNldFZhbHVlPShmdW5jdGlvbiBvKHQpe3N3aXRjaCh0KXtjYXNlIDUxMjY6cmV0dXJuIHhwdDtjYXNlIDM1NjY0OnJldHVybiBPcHQ7Y2FzZSAzNTY2NTpyZXR1cm4gUHB0O2Nhc2UgMzU2NjY6cmV0dXJuIHdwdDtjYXNlIDM1Njc0OnJldHVybiBrcHQ7Y2FzZSAzNTY3NTpyZXR1cm4gU3B0O2Nhc2UgMzU2NzY6cmV0dXJuIERwdDtjYXNlIDUxMjQ6Y2FzZSAzNTY3MDpyZXR1cm4gUnB0O2Nhc2UgMzU2Njc6Y2FzZSAzNTY3MTpyZXR1cm4gRXB0O2Nhc2UgMzU2Njg6Y2FzZSAzNTY3MjpyZXR1cm4gQXB0O2Nhc2UgMzU2Njk6Y2FzZSAzNTY3MzpyZXR1cm4gVHB0O2Nhc2UgNTEyNTpyZXR1cm4gTnB0O2Nhc2UgMzYyOTQ6cmV0dXJuIHpwdDtjYXNlIDM2Mjk1OnJldHVybiBJcHQ7Y2FzZSAzNjI5NjpyZXR1cm4gSHB0O2Nhc2UgMzU2Nzg6Y2FzZSAzNjE5ODpjYXNlIDM2Mjk4OmNhc2UgMzYzMDY6Y2FzZSAzNTY4MjpyZXR1cm4gRnB0O2Nhc2UgMzU2ODA6Y2FzZSAzNjMwMDpjYXNlIDM2MzA4OmNhc2UgMzYyOTM6cmV0dXJuIExwdH19KShlLnR5cGUpfWZ1bmN0aW9uIGpwdCh0KXt0aGlzLmlkPXQsdGhpcy5zZXE9W10sdGhpcy5tYXA9e319VnB0LnByb3RvdHlwZS51cGRhdGVDYWNoZT1mdW5jdGlvbih0KXtjb25zdCBlPXRoaXMuY2FjaGU7dCBpbnN0YW5jZW9mIEZsb2F0MzJBcnJheSYmZS5sZW5ndGghPT10Lmxlbmd0aCYmKHRoaXMuY2FjaGU9bmV3IEZsb2F0MzJBcnJheSh0Lmxlbmd0aCkpLG5wdChlLHQpfSxqcHQucHJvdG90eXBlLnNldFZhbHVlPWZ1bmN0aW9uKHQsZSxuKXtjb25zdCBvPXRoaXMuc2VxO2ZvcihsZXQgaT0wLGE9by5sZW5ndGg7aSE9PWE7KytpKXtjb25zdCBhPW9baV07YS5zZXRWYWx1ZSh0LGVbYS5pZF0sbil9fTtjb25zdCBVcHQ9LyhcdyspKFxdKT8oXFt8XC4pPy9nO2Z1bmN0aW9uIFdwdCh0LGUpe3Quc2VxLnB1c2goZSksdC5tYXBbZS5pZF09ZX1mdW5jdGlvbiBHcHQodCxlLG4pe2NvbnN0IG89dC5uYW1lLGk9by5sZW5ndGg7Zm9yKFVwdC5sYXN0SW5kZXg9MDs7KXtjb25zdCBhPVVwdC5leGVjKG8pLHI9VXB0Lmxhc3RJbmRleDtsZXQgcz1hWzFdO2NvbnN0IGw9YVszXTtpZigiXSI9PT1hWzJdJiYoc3w9MCksdm9pZCAwPT09bHx8IlsiPT09bCYmcisyPT09aSl7V3B0KG4sdm9pZCAwPT09bD9uZXcgQnB0KHMsdCxlKTpuZXcgVnB0KHMsdCxlKSk7YnJlYWt9e2xldCB0PW4ubWFwW3NdO3ZvaWQgMD09PXQmJih0PW5ldyBqcHQocyksV3B0KG4sdCkpLG49dH19fWZ1bmN0aW9uIFlwdCh0LGUpe3RoaXMuc2VxPVtdLHRoaXMubWFwPXt9O2NvbnN0IG49dC5nZXRQcm9ncmFtUGFyYW1ldGVyKGUsMzU3MTgpO2ZvcihsZXQgbz0wO288bjsrK28pe2NvbnN0IG49dC5nZXRBY3RpdmVVbmlmb3JtKGUsbyk7R3B0KG4sdC5nZXRVbmlmb3JtTG9jYXRpb24oZSxuLm5hbWUpLHRoaXMpfX1mdW5jdGlvbiBxcHQodCxlLG4pe2NvbnN0IG89dC5jcmVhdGVTaGFkZXIoZSk7cmV0dXJuIHQuc2hhZGVyU291cmNlKG8sbiksdC5jb21waWxlU2hhZGVyKG8pLG99WXB0LnByb3RvdHlwZS5zZXRWYWx1ZT1mdW5jdGlvbih0LGUsbixvKXtjb25zdCBpPXRoaXMubWFwW2VdO3ZvaWQgMCE9PWkmJmkuc2V0VmFsdWUodCxuLG8pfSxZcHQucHJvdG90eXBlLnNldE9wdGlvbmFsPWZ1bmN0aW9uKHQsZSxuKXtjb25zdCBvPWVbbl07dm9pZCAwIT09byYmdGhpcy5zZXRWYWx1ZSh0LG4sbyl9LFlwdC51cGxvYWQ9ZnVuY3Rpb24odCxlLG4sbyl7Zm9yKGxldCBpPTAsYT1lLmxlbmd0aDtpIT09YTsrK2kpe2NvbnN0IGE9ZVtpXSxyPW5bYS5pZF07ITEhPT1yLm5lZWRzVXBkYXRlJiZhLnNldFZhbHVlKHQsci52YWx1ZSxvKX19LFlwdC5zZXFXaXRoVmFsdWU9ZnVuY3Rpb24odCxlKXtjb25zdCBuPVtdO2ZvcihsZXQgbz0wLGk9dC5sZW5ndGg7byE9PWk7KytvKXtjb25zdCBpPXRbb107aS5pZCBpbiBlJiZuLnB1c2goaSl9cmV0dXJuIG59O2xldCBacHQ9MDtmdW5jdGlvbiBYcHQodCl7c3dpdGNoKHQpe2Nhc2UgUXJ0OnJldHVyblsiTGluZWFyIiwiKCB2YWx1ZSApIl07Y2FzZSAkcnQ6cmV0dXJuWyJzUkdCIiwiKCB2YWx1ZSApIl07Y2FzZSBlc3Q6cmV0dXJuWyJSR0JFIiwiKCB2YWx1ZSApIl07Y2FzZSAzMDA0OnJldHVyblsiUkdCTSIsIiggdmFsdWUsIDcuMCApIl07Y2FzZSAzMDA1OnJldHVyblsiUkdCTSIsIiggdmFsdWUsIDE2LjAgKSJdO2Nhc2UgMzAwNjpyZXR1cm5bIlJHQkQiLCIoIHZhbHVlLCAyNTYuMCApIl07Y2FzZSB0c3Q6cmV0dXJuWyJHYW1tYSIsIiggdmFsdWUsIGZsb2F0KCBHQU1NQV9GQUNUT1IgKSApIl07Y2FzZSAzMDAzOnJldHVyblsiTG9nTHV2IiwiKCB2YWx1ZSApIl07ZGVmYXVsdDpyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFByb2dyYW06IFVuc3VwcG9ydGVkIGVuY29kaW5nOiIsdCksWyJMaW5lYXIiLCIoIHZhbHVlICkiXX19ZnVuY3Rpb24gS3B0KHQsZSxuKXtjb25zdCBvPXQuZ2V0U2hhZGVyUGFyYW1ldGVyKGUsMzU3MTMpLGk9dC5nZXRTaGFkZXJJbmZvTG9nKGUpLnRyaW0oKTtpZihvJiYiIj09PWkpcmV0dXJuIiI7cmV0dXJuIlRIUkVFLldlYkdMU2hhZGVyOiBnbC5nZXRTaGFkZXJJbmZvTG9nKCkgIituKyJcbiIraSsoZnVuY3Rpb24gYSh0KXtjb25zdCBlPXQuc3BsaXQoIlxuIik7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0KyspZVt0XT10KzErIjogIitlW3RdO3JldHVybiBlLmpvaW4oIlxuIil9KSh0LmdldFNoYWRlclNvdXJjZShlKSl9ZnVuY3Rpb24gSnB0KHQsZSl7Y29uc3Qgbj1YcHQoZSk7cmV0dXJuInZlYzQgIit0KyIoIHZlYzQgdmFsdWUgKSB7IHJldHVybiAiK25bMF0rIlRvTGluZWFyIituWzFdKyI7IH0ifWZ1bmN0aW9uIFFwdCh0LGUpe2NvbnN0IG49WHB0KGUpO3JldHVybiJ2ZWM0ICIrdCsiKCB2ZWM0IHZhbHVlICkgeyByZXR1cm4gTGluZWFyVG8iK25bMF0rblsxXSsiOyB9In1mdW5jdGlvbiAkcHQodCxlKXtsZXQgbjtzd2l0Y2goZSl7Y2FzZSAxOm49IkxpbmVhciI7YnJlYWs7Y2FzZSAyOm49IlJlaW5oYXJkIjticmVhaztjYXNlIDM6bj0iT3B0aW1pemVkQ2luZW9uIjticmVhaztjYXNlIDQ6bj0iQUNFU0ZpbG1pYyI7YnJlYWs7Y2FzZSA1Om49IkN1c3RvbSI7YnJlYWs7ZGVmYXVsdDpjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUHJvZ3JhbTogVW5zdXBwb3J0ZWQgdG9uZU1hcHBpbmc6IixlKSxuPSJMaW5lYXIifXJldHVybiJ2ZWMzICIrdCsiKCB2ZWMzIGNvbG9yICkgeyByZXR1cm4gIituKyJUb25lTWFwcGluZyggY29sb3IgKTsgfSJ9ZnVuY3Rpb24gdG10KHQpe3JldHVybiIiIT09dH1mdW5jdGlvbiBlbXQodCxlKXtyZXR1cm4gdC5yZXBsYWNlKC9OVU1fRElSX0xJR0hUUy9nLGUubnVtRGlyTGlnaHRzKS5yZXBsYWNlKC9OVU1fU1BPVF9MSUdIVFMvZyxlLm51bVNwb3RMaWdodHMpLnJlcGxhY2UoL05VTV9SRUNUX0FSRUFfTElHSFRTL2csZS5udW1SZWN0QXJlYUxpZ2h0cykucmVwbGFjZSgvTlVNX1BPSU5UX0xJR0hUUy9nLGUubnVtUG9pbnRMaWdodHMpLnJlcGxhY2UoL05VTV9IRU1JX0xJR0hUUy9nLGUubnVtSGVtaUxpZ2h0cykucmVwbGFjZSgvTlVNX0RJUl9MSUdIVF9TSEFET1dTL2csZS5udW1EaXJMaWdodFNoYWRvd3MpLnJlcGxhY2UoL05VTV9TUE9UX0xJR0hUX1NIQURPV1MvZyxlLm51bVNwb3RMaWdodFNoYWRvd3MpLnJlcGxhY2UoL05VTV9QT0lOVF9MSUdIVF9TSEFET1dTL2csZS5udW1Qb2ludExpZ2h0U2hhZG93cyl9ZnVuY3Rpb24gbm10KHQsZSl7cmV0dXJuIHQucmVwbGFjZSgvTlVNX0NMSVBQSU5HX1BMQU5FUy9nLGUubnVtQ2xpcHBpbmdQbGFuZXMpLnJlcGxhY2UoL1VOSU9OX0NMSVBQSU5HX1BMQU5FUy9nLGUubnVtQ2xpcHBpbmdQbGFuZXMtZS5udW1DbGlwSW50ZXJzZWN0aW9uKX1jb25zdCBvbXQ9L15bIFx0XSojaW5jbHVkZSArPChbXHdcZC4vXSspPi9nbTtmdW5jdGlvbiBpbXQodCl7cmV0dXJuIHQucmVwbGFjZShvbXQsYW10KX1mdW5jdGlvbiBhbXQodCxlKXtjb25zdCBuPUpjdFtlXTtpZih2b2lkIDA9PT1uKXRocm93IG5ldyBFcnJvcigiQ2FuIG5vdCByZXNvbHZlICNpbmNsdWRlIDwiK2UrIj4iKTtyZXR1cm4gaW10KG4pfWNvbnN0IHJtdD0vI3ByYWdtYSB1bnJvbGxfbG9vcFtcc10rP2ZvciBcKCBpbnQgaSBcPSAoXGQrKVw7IGkgPCAoXGQrKVw7IGkgXCtcKyBcKSBceyhbXHNcU10rPykoPz1cfSlcfS9nLHNtdD0vI3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydFxzK2ZvclxzKlwoXHMqaW50XHMraVxzKj1ccyooXGQrKVxzKjtccyppXHMqPFxzKihcZCspXHMqO1xzKmlccypcK1wrXHMqXClccyp7KFtcc1xTXSs/KX1ccysjcHJhZ21hIHVucm9sbF9sb29wX2VuZC9nO2Z1bmN0aW9uIGxtdCh0KXtyZXR1cm4gdC5yZXBsYWNlKHNtdCxkbXQpLnJlcGxhY2Uocm10LGNtdCl9ZnVuY3Rpb24gY210KHQsZSxuLG8pe3JldHVybiBjb25zb2xlLndhcm4oIldlYkdMUHJvZ3JhbTogI3ByYWdtYSB1bnJvbGxfbG9vcCBzaGFkZXIgc3ludGF4IGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgI3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydCBzeW50YXggaW5zdGVhZC4iKSxkbXQodCxlLG4sbyl9ZnVuY3Rpb24gZG10KHQsZSxuLG8pe2xldCBpPSIiO2ZvcihsZXQgdD1wYXJzZUludChlKTt0PHBhcnNlSW50KG4pO3QrKylpKz1vLnJlcGxhY2UoL1xbXHMqaVxzKlxdL2csIlsgIit0KyIgXSIpLnJlcGxhY2UoL1VOUk9MTEVEX0xPT1BfSU5ERVgvZyx0KTtyZXR1cm4gaX1mdW5jdGlvbiBwbXQodCl7bGV0IGU9InByZWNpc2lvbiAiK3QucHJlY2lzaW9uKyIgZmxvYXQ7XG5wcmVjaXNpb24gIit0LnByZWNpc2lvbisiIGludDsiO3JldHVybiJoaWdocCI9PT10LnByZWNpc2lvbj9lKz0iXG4jZGVmaW5lIEhJR0hfUFJFQ0lTSU9OIjoibWVkaXVtcCI9PT10LnByZWNpc2lvbj9lKz0iXG4jZGVmaW5lIE1FRElVTV9QUkVDSVNJT04iOiJsb3dwIj09PXQucHJlY2lzaW9uJiYoZSs9IlxuI2RlZmluZSBMT1dfUFJFQ0lTSU9OIiksZX1mdW5jdGlvbiBtbXQodCxlLG4sbyl7Y29uc3QgaT10LmdldENvbnRleHQoKSxhPW4uZGVmaW5lcztsZXQgcj1uLnZlcnRleFNoYWRlcixzPW4uZnJhZ21lbnRTaGFkZXI7Y29uc3QgbD0oZnVuY3Rpb24gYyh0KXtsZXQgZT0iU0hBRE9XTUFQX1RZUEVfQkFTSUMiO3JldHVybiAxPT09dC5zaGFkb3dNYXBUeXBlP2U9IlNIQURPV01BUF9UWVBFX1BDRiI6Mj09PXQuc2hhZG93TWFwVHlwZT9lPSJTSEFET1dNQVBfVFlQRV9QQ0ZfU09GVCI6Mz09PXQuc2hhZG93TWFwVHlwZSYmKGU9IlNIQURPV01BUF9UWVBFX1ZTTSIpLGV9KShuKSxkPShmdW5jdGlvbiBwKHQpe2xldCBlPSJFTlZNQVBfVFlQRV9DVUJFIjtpZih0LmVudk1hcClzd2l0Y2godC5lbnZNYXBNb2RlKXtjYXNlIHdydDpjYXNlIGtydDplPSJFTlZNQVBfVFlQRV9DVUJFIjticmVhaztjYXNlIFNydDpjYXNlIDMwNzplPSJFTlZNQVBfVFlQRV9DVUJFX1VWIn1yZXR1cm4gZX0pKG4pLG09KGZ1bmN0aW9uIGYodCl7bGV0IGU9IkVOVk1BUF9NT0RFX1JFRkxFQ1RJT04iO2lmKHQuZW52TWFwKXN3aXRjaCh0LmVudk1hcE1vZGUpe2Nhc2Uga3J0OmNhc2UgMzA3OmU9IkVOVk1BUF9NT0RFX1JFRlJBQ1RJT04ifXJldHVybiBlfSkobiksdT0oZnVuY3Rpb24gZyh0KXtsZXQgZT0iRU5WTUFQX0JMRU5ESU5HX05PTkUiO2lmKHQuZW52TWFwKXN3aXRjaCh0LmNvbWJpbmUpe2Nhc2UgMDplPSJFTlZNQVBfQkxFTkRJTkdfTVVMVElQTFkiO2JyZWFrO2Nhc2UgMTplPSJFTlZNQVBfQkxFTkRJTkdfTUlYIjticmVhaztjYXNlIDI6ZT0iRU5WTUFQX0JMRU5ESU5HX0FERCJ9cmV0dXJuIGV9KShuKSxoPXQuZ2FtbWFGYWN0b3I+MD90LmdhbW1hRmFjdG9yOjEsYj1uLmlzV2ViR0wyPyIiOihmdW5jdGlvbiB5KHQpe3JldHVyblt0LmV4dGVuc2lvbkRlcml2YXRpdmVzfHx0LmVudk1hcEN1YmVVVnx8dC5idW1wTWFwfHx0LnRhbmdlbnRTcGFjZU5vcm1hbE1hcHx8dC5jbGVhcmNvYXROb3JtYWxNYXB8fHQuZmxhdFNoYWRpbmd8fCJwaHlzaWNhbCI9PT10LnNoYWRlcklEPyIjZXh0ZW5zaW9uIEdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyA6IGVuYWJsZSI6IiIsKHQuZXh0ZW5zaW9uRnJhZ0RlcHRofHx0LmxvZ2FyaXRobWljRGVwdGhCdWZmZXIpJiZ0LnJlbmRlcmVyRXh0ZW5zaW9uRnJhZ0RlcHRoPyIjZXh0ZW5zaW9uIEdMX0VYVF9mcmFnX2RlcHRoIDogZW5hYmxlIjoiIix0LmV4dGVuc2lvbkRyYXdCdWZmZXJzJiZ0LnJlbmRlcmVyRXh0ZW5zaW9uRHJhd0J1ZmZlcnM/IiNleHRlbnNpb24gR0xfRVhUX2RyYXdfYnVmZmVycyA6IHJlcXVpcmUiOiIiLCh0LmV4dGVuc2lvblNoYWRlclRleHR1cmVMT0R8fHQuZW52TWFwfHx0LnRyYW5zbWlzc2lvbj4wKSYmdC5yZW5kZXJlckV4dGVuc2lvblNoYWRlclRleHR1cmVMb2Q/IiNleHRlbnNpb24gR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCA6IGVuYWJsZSI6IiJdLmZpbHRlcih0bXQpLmpvaW4oIlxuIil9KShuKSxfPShmdW5jdGlvbiBDKHQpe2NvbnN0IGU9W107Zm9yKGNvbnN0IG4gaW4gdCl7Y29uc3Qgbz10W25dOyExIT09byYmZS5wdXNoKCIjZGVmaW5lICIrbisiICIrbyl9cmV0dXJuIGUuam9pbigiXG4iKX0pKGEpLE09aS5jcmVhdGVQcm9ncmFtKCk7bGV0IHYseCxPPW4uZ2xzbFZlcnNpb24/IiN2ZXJzaW9uICIrbi5nbHNsVmVyc2lvbisiXG4iOiIiO24uaXNSYXdTaGFkZXJNYXRlcmlhbD8odj1bX10uZmlsdGVyKHRtdCkuam9pbigiXG4iKSx2Lmxlbmd0aD4wJiYodis9IlxuIikseD1bYixfXS5maWx0ZXIodG10KS5qb2luKCJcbiIpLHgubGVuZ3RoPjAmJih4Kz0iXG4iKSk6KHY9W3BtdChuKSwiI2RlZmluZSBTSEFERVJfTkFNRSAiK24uc2hhZGVyTmFtZSxfLG4uaW5zdGFuY2luZz8iI2RlZmluZSBVU0VfSU5TVEFOQ0lORyI6IiIsbi5pbnN0YW5jaW5nQ29sb3I/IiNkZWZpbmUgVVNFX0lOU1RBTkNJTkdfQ09MT1IiOiIiLG4uc3VwcG9ydHNWZXJ0ZXhUZXh0dXJlcz8iI2RlZmluZSBWRVJURVhfVEVYVFVSRVMiOiIiLCIjZGVmaW5lIEdBTU1BX0ZBQ1RPUiAiK2gsIiNkZWZpbmUgTUFYX0JPTkVTICIrbi5tYXhCb25lcyxuLnVzZUZvZyYmbi5mb2c/IiNkZWZpbmUgVVNFX0ZPRyI6IiIsbi51c2VGb2cmJm4uZm9nRXhwMj8iI2RlZmluZSBGT0dfRVhQMiI6IiIsbi5tYXA/IiNkZWZpbmUgVVNFX01BUCI6IiIsbi5lbnZNYXA/IiNkZWZpbmUgVVNFX0VOVk1BUCI6IiIsbi5lbnZNYXA/IiNkZWZpbmUgIittOiIiLG4ubGlnaHRNYXA/IiNkZWZpbmUgVVNFX0xJR0hUTUFQIjoiIixuLmFvTWFwPyIjZGVmaW5lIFVTRV9BT01BUCI6IiIsbi5lbWlzc2l2ZU1hcD8iI2RlZmluZSBVU0VfRU1JU1NJVkVNQVAiOiIiLG4uYnVtcE1hcD8iI2RlZmluZSBVU0VfQlVNUE1BUCI6IiIsbi5ub3JtYWxNYXA/IiNkZWZpbmUgVVNFX05PUk1BTE1BUCI6IiIsbi5ub3JtYWxNYXAmJm4ub2JqZWN0U3BhY2VOb3JtYWxNYXA/IiNkZWZpbmUgT0JKRUNUU1BBQ0VfTk9STUFMTUFQIjoiIixuLm5vcm1hbE1hcCYmbi50YW5nZW50U3BhY2VOb3JtYWxNYXA/IiNkZWZpbmUgVEFOR0VOVFNQQUNFX05PUk1BTE1BUCI6IiIsbi5jbGVhcmNvYXRNYXA/IiNkZWZpbmUgVVNFX0NMRUFSQ09BVE1BUCI6IiIsbi5jbGVhcmNvYXRSb3VnaG5lc3NNYXA/IiNkZWZpbmUgVVNFX0NMRUFSQ09BVF9ST1VHSE5FU1NNQVAiOiIiLG4uY2xlYXJjb2F0Tm9ybWFsTWFwPyIjZGVmaW5lIFVTRV9DTEVBUkNPQVRfTk9STUFMTUFQIjoiIixuLmRpc3BsYWNlbWVudE1hcCYmbi5zdXBwb3J0c1ZlcnRleFRleHR1cmVzPyIjZGVmaW5lIFVTRV9ESVNQTEFDRU1FTlRNQVAiOiIiLG4uc3BlY3VsYXJNYXA/IiNkZWZpbmUgVVNFX1NQRUNVTEFSTUFQIjoiIixuLnNwZWN1bGFySW50ZW5zaXR5TWFwPyIjZGVmaW5lIFVTRV9TUEVDVUxBUklOVEVOU0lUWU1BUCI6IiIsbi5zcGVjdWxhclRpbnRNYXA/IiNkZWZpbmUgVVNFX1NQRUNVTEFSVElOVE1BUCI6IiIsbi5yb3VnaG5lc3NNYXA/IiNkZWZpbmUgVVNFX1JPVUdITkVTU01BUCI6IiIsbi5tZXRhbG5lc3NNYXA/IiNkZWZpbmUgVVNFX01FVEFMTkVTU01BUCI6IiIsbi5hbHBoYU1hcD8iI2RlZmluZSBVU0VfQUxQSEFNQVAiOiIiLG4udHJhbnNtaXNzaW9uPyIjZGVmaW5lIFVTRV9UUkFOU01JU1NJT04iOiIiLG4udHJhbnNtaXNzaW9uTWFwPyIjZGVmaW5lIFVTRV9UUkFOU01JU1NJT05NQVAiOiIiLG4udGhpY2tuZXNzTWFwPyIjZGVmaW5lIFVTRV9USElDS05FU1NNQVAiOiIiLG4udmVydGV4VGFuZ2VudHM/IiNkZWZpbmUgVVNFX1RBTkdFTlQiOiIiLG4udmVydGV4Q29sb3JzPyIjZGVmaW5lIFVTRV9DT0xPUiI6IiIsbi52ZXJ0ZXhBbHBoYXM/IiNkZWZpbmUgVVNFX0NPTE9SX0FMUEhBIjoiIixuLnZlcnRleFV2cz8iI2RlZmluZSBVU0VfVVYiOiIiLG4udXZzVmVydGV4T25seT8iI2RlZmluZSBVVlNfVkVSVEVYX09OTFkiOiIiLG4uZmxhdFNoYWRpbmc/IiNkZWZpbmUgRkxBVF9TSEFERUQiOiIiLG4uc2tpbm5pbmc/IiNkZWZpbmUgVVNFX1NLSU5OSU5HIjoiIixuLnVzZVZlcnRleFRleHR1cmU/IiNkZWZpbmUgQk9ORV9URVhUVVJFIjoiIixuLm1vcnBoVGFyZ2V0cz8iI2RlZmluZSBVU0VfTU9SUEhUQVJHRVRTIjoiIixuLm1vcnBoTm9ybWFscyYmITE9PT1uLmZsYXRTaGFkaW5nPyIjZGVmaW5lIFVTRV9NT1JQSE5PUk1BTFMiOiIiLG4uZG91YmxlU2lkZWQ/IiNkZWZpbmUgRE9VQkxFX1NJREVEIjoiIixuLmZsaXBTaWRlZD8iI2RlZmluZSBGTElQX1NJREVEIjoiIixuLnNoYWRvd01hcEVuYWJsZWQ/IiNkZWZpbmUgVVNFX1NIQURPV01BUCI6IiIsbi5zaGFkb3dNYXBFbmFibGVkPyIjZGVmaW5lICIrbDoiIixuLnNpemVBdHRlbnVhdGlvbj8iI2RlZmluZSBVU0VfU0laRUFUVEVOVUFUSU9OIjoiIixuLmxvZ2FyaXRobWljRGVwdGhCdWZmZXI/IiNkZWZpbmUgVVNFX0xPR0RFUFRIQlVGIjoiIixuLmxvZ2FyaXRobWljRGVwdGhCdWZmZXImJm4ucmVuZGVyZXJFeHRlbnNpb25GcmFnRGVwdGg/IiNkZWZpbmUgVVNFX0xPR0RFUFRIQlVGX0VYVCI6IiIsInVuaWZvcm0gbWF0NCBtb2RlbE1hdHJpeDsiLCJ1bmlmb3JtIG1hdDQgbW9kZWxWaWV3TWF0cml4OyIsInVuaWZvcm0gbWF0NCBwcm9qZWN0aW9uTWF0cml4OyIsInVuaWZvcm0gbWF0NCB2aWV3TWF0cml4OyIsInVuaWZvcm0gbWF0MyBub3JtYWxNYXRyaXg7IiwidW5pZm9ybSB2ZWMzIGNhbWVyYVBvc2l0aW9uOyIsInVuaWZvcm0gYm9vbCBpc09ydGhvZ3JhcGhpYzsiLCIjaWZkZWYgVVNFX0lOU1RBTkNJTkciLCJcdGF0dHJpYnV0ZSBtYXQ0IGluc3RhbmNlTWF0cml4OyIsIiNlbmRpZiIsIiNpZmRlZiBVU0VfSU5TVEFOQ0lOR19DT0xPUiIsIlx0YXR0cmlidXRlIHZlYzMgaW5zdGFuY2VDb2xvcjsiLCIjZW5kaWYiLCJhdHRyaWJ1dGUgdmVjMyBwb3NpdGlvbjsiLCJhdHRyaWJ1dGUgdmVjMyBub3JtYWw7IiwiYXR0cmlidXRlIHZlYzIgdXY7IiwiI2lmZGVmIFVTRV9UQU5HRU5UIiwiXHRhdHRyaWJ1dGUgdmVjNCB0YW5nZW50OyIsIiNlbmRpZiIsIiNpZiBkZWZpbmVkKCBVU0VfQ09MT1JfQUxQSEEgKSIsIlx0YXR0cmlidXRlIHZlYzQgY29sb3I7IiwiI2VsaWYgZGVmaW5lZCggVVNFX0NPTE9SICkiLCJcdGF0dHJpYnV0ZSB2ZWMzIGNvbG9yOyIsIiNlbmRpZiIsIiNpZmRlZiBVU0VfTU9SUEhUQVJHRVRTIiwiXHRhdHRyaWJ1dGUgdmVjMyBtb3JwaFRhcmdldDA7IiwiXHRhdHRyaWJ1dGUgdmVjMyBtb3JwaFRhcmdldDE7IiwiXHRhdHRyaWJ1dGUgdmVjMyBtb3JwaFRhcmdldDI7IiwiXHRhdHRyaWJ1dGUgdmVjMyBtb3JwaFRhcmdldDM7IiwiXHQjaWZkZWYgVVNFX01PUlBITk9STUFMUyIsIlx0XHRhdHRyaWJ1dGUgdmVjMyBtb3JwaE5vcm1hbDA7IiwiXHRcdGF0dHJpYnV0ZSB2ZWMzIG1vcnBoTm9ybWFsMTsiLCJcdFx0YXR0cmlidXRlIHZlYzMgbW9ycGhOb3JtYWwyOyIsIlx0XHRhdHRyaWJ1dGUgdmVjMyBtb3JwaE5vcm1hbDM7IiwiXHQjZWxzZSIsIlx0XHRhdHRyaWJ1dGUgdmVjMyBtb3JwaFRhcmdldDQ7IiwiXHRcdGF0dHJpYnV0ZSB2ZWMzIG1vcnBoVGFyZ2V0NTsiLCJcdFx0YXR0cmlidXRlIHZlYzMgbW9ycGhUYXJnZXQ2OyIsIlx0XHRhdHRyaWJ1dGUgdmVjMyBtb3JwaFRhcmdldDc7IiwiXHQjZW5kaWYiLCIjZW5kaWYiLCIjaWZkZWYgVVNFX1NLSU5OSU5HIiwiXHRhdHRyaWJ1dGUgdmVjNCBza2luSW5kZXg7IiwiXHRhdHRyaWJ1dGUgdmVjNCBza2luV2VpZ2h0OyIsIiNlbmRpZiIsIlxuIl0uZmlsdGVyKHRtdCkuam9pbigiXG4iKSx4PVtiLHBtdChuKSwiI2RlZmluZSBTSEFERVJfTkFNRSAiK24uc2hhZGVyTmFtZSxfLG4uYWxwaGFUZXN0PyIjZGVmaW5lIEFMUEhBVEVTVCAiK24uYWxwaGFUZXN0KyhuLmFscGhhVGVzdCUxPyIiOiIuMCIpOiIiLCIjZGVmaW5lIEdBTU1BX0ZBQ1RPUiAiK2gsbi51c2VGb2cmJm4uZm9nPyIjZGVmaW5lIFVTRV9GT0ciOiIiLG4udXNlRm9nJiZuLmZvZ0V4cDI/IiNkZWZpbmUgRk9HX0VYUDIiOiIiLG4ubWFwPyIjZGVmaW5lIFVTRV9NQVAiOiIiLG4ubWF0Y2FwPyIjZGVmaW5lIFVTRV9NQVRDQVAiOiIiLG4uZW52TWFwPyIjZGVmaW5lIFVTRV9FTlZNQVAiOiIiLG4uZW52TWFwPyIjZGVmaW5lICIrZDoiIixuLmVudk1hcD8iI2RlZmluZSAiK206IiIsbi5lbnZNYXA/IiNkZWZpbmUgIit1OiIiLG4ubGlnaHRNYXA/IiNkZWZpbmUgVVNFX0xJR0hUTUFQIjoiIixuLmFvTWFwPyIjZGVmaW5lIFVTRV9BT01BUCI6IiIsbi5lbWlzc2l2ZU1hcD8iI2RlZmluZSBVU0VfRU1JU1NJVkVNQVAiOiIiLG4uYnVtcE1hcD8iI2RlZmluZSBVU0VfQlVNUE1BUCI6IiIsbi5ub3JtYWxNYXA/IiNkZWZpbmUgVVNFX05PUk1BTE1BUCI6IiIsbi5ub3JtYWxNYXAmJm4ub2JqZWN0U3BhY2VOb3JtYWxNYXA/IiNkZWZpbmUgT0JKRUNUU1BBQ0VfTk9STUFMTUFQIjoiIixuLm5vcm1hbE1hcCYmbi50YW5nZW50U3BhY2VOb3JtYWxNYXA/IiNkZWZpbmUgVEFOR0VOVFNQQUNFX05PUk1BTE1BUCI6IiIsbi5jbGVhcmNvYXRNYXA/IiNkZWZpbmUgVVNFX0NMRUFSQ09BVE1BUCI6IiIsbi5jbGVhcmNvYXRSb3VnaG5lc3NNYXA/IiNkZWZpbmUgVVNFX0NMRUFSQ09BVF9ST1VHSE5FU1NNQVAiOiIiLG4uY2xlYXJjb2F0Tm9ybWFsTWFwPyIjZGVmaW5lIFVTRV9DTEVBUkNPQVRfTk9STUFMTUFQIjoiIixuLnNwZWN1bGFyTWFwPyIjZGVmaW5lIFVTRV9TUEVDVUxBUk1BUCI6IiIsbi5zcGVjdWxhckludGVuc2l0eU1hcD8iI2RlZmluZSBVU0VfU1BFQ1VMQVJJTlRFTlNJVFlNQVAiOiIiLG4uc3BlY3VsYXJUaW50TWFwPyIjZGVmaW5lIFVTRV9TUEVDVUxBUlRJTlRNQVAiOiIiLG4ucm91Z2huZXNzTWFwPyIjZGVmaW5lIFVTRV9ST1VHSE5FU1NNQVAiOiIiLG4ubWV0YWxuZXNzTWFwPyIjZGVmaW5lIFVTRV9NRVRBTE5FU1NNQVAiOiIiLG4uYWxwaGFNYXA/IiNkZWZpbmUgVVNFX0FMUEhBTUFQIjoiIixuLnNoZWVuPyIjZGVmaW5lIFVTRV9TSEVFTiI6IiIsbi50cmFuc21pc3Npb24/IiNkZWZpbmUgVVNFX1RSQU5TTUlTU0lPTiI6IiIsbi50cmFuc21pc3Npb25NYXA/IiNkZWZpbmUgVVNFX1RSQU5TTUlTU0lPTk1BUCI6IiIsbi50aGlja25lc3NNYXA/IiNkZWZpbmUgVVNFX1RISUNLTkVTU01BUCI6IiIsbi52ZXJ0ZXhUYW5nZW50cz8iI2RlZmluZSBVU0VfVEFOR0VOVCI6IiIsbi52ZXJ0ZXhDb2xvcnN8fG4uaW5zdGFuY2luZ0NvbG9yPyIjZGVmaW5lIFVTRV9DT0xPUiI6IiIsbi52ZXJ0ZXhBbHBoYXM/IiNkZWZpbmUgVVNFX0NPTE9SX0FMUEhBIjoiIixuLnZlcnRleFV2cz8iI2RlZmluZSBVU0VfVVYiOiIiLG4udXZzVmVydGV4T25seT8iI2RlZmluZSBVVlNfVkVSVEVYX09OTFkiOiIiLG4uZ3JhZGllbnRNYXA/IiNkZWZpbmUgVVNFX0dSQURJRU5UTUFQIjoiIixuLmZsYXRTaGFkaW5nPyIjZGVmaW5lIEZMQVRfU0hBREVEIjoiIixuLmRvdWJsZVNpZGVkPyIjZGVmaW5lIERPVUJMRV9TSURFRCI6IiIsbi5mbGlwU2lkZWQ/IiNkZWZpbmUgRkxJUF9TSURFRCI6IiIsbi5zaGFkb3dNYXBFbmFibGVkPyIjZGVmaW5lIFVTRV9TSEFET1dNQVAiOiIiLG4uc2hhZG93TWFwRW5hYmxlZD8iI2RlZmluZSAiK2w6IiIsbi5wcmVtdWx0aXBsaWVkQWxwaGE/IiNkZWZpbmUgUFJFTVVMVElQTElFRF9BTFBIQSI6IiIsbi5waHlzaWNhbGx5Q29ycmVjdExpZ2h0cz8iI2RlZmluZSBQSFlTSUNBTExZX0NPUlJFQ1RfTElHSFRTIjoiIixuLmxvZ2FyaXRobWljRGVwdGhCdWZmZXI/IiNkZWZpbmUgVVNFX0xPR0RFUFRIQlVGIjoiIixuLmxvZ2FyaXRobWljRGVwdGhCdWZmZXImJm4ucmVuZGVyZXJFeHRlbnNpb25GcmFnRGVwdGg/IiNkZWZpbmUgVVNFX0xPR0RFUFRIQlVGX0VYVCI6IiIsKG4uZXh0ZW5zaW9uU2hhZGVyVGV4dHVyZUxPRHx8bi5lbnZNYXApJiZuLnJlbmRlcmVyRXh0ZW5zaW9uU2hhZGVyVGV4dHVyZUxvZD8iI2RlZmluZSBURVhUVVJFX0xPRF9FWFQiOiIiLCJ1bmlmb3JtIG1hdDQgdmlld01hdHJpeDsiLCJ1bmlmb3JtIHZlYzMgY2FtZXJhUG9zaXRpb247IiwidW5pZm9ybSBib29sIGlzT3J0aG9ncmFwaGljOyIsMCE9PW4udG9uZU1hcHBpbmc/IiNkZWZpbmUgVE9ORV9NQVBQSU5HIjoiIiwwIT09bi50b25lTWFwcGluZz9KY3QudG9uZW1hcHBpbmdfcGFyc19mcmFnbWVudDoiIiwwIT09bi50b25lTWFwcGluZz8kcHQoInRvbmVNYXBwaW5nIixuLnRvbmVNYXBwaW5nKToiIixuLmRpdGhlcmluZz8iI2RlZmluZSBESVRIRVJJTkciOiIiLEpjdC5lbmNvZGluZ3NfcGFyc19mcmFnbWVudCxuLm1hcD9KcHQoIm1hcFRleGVsVG9MaW5lYXIiLG4ubWFwRW5jb2RpbmcpOiIiLG4ubWF0Y2FwP0pwdCgibWF0Y2FwVGV4ZWxUb0xpbmVhciIsbi5tYXRjYXBFbmNvZGluZyk6IiIsbi5lbnZNYXA/SnB0KCJlbnZNYXBUZXhlbFRvTGluZWFyIixuLmVudk1hcEVuY29kaW5nKToiIixuLmVtaXNzaXZlTWFwP0pwdCgiZW1pc3NpdmVNYXBUZXhlbFRvTGluZWFyIixuLmVtaXNzaXZlTWFwRW5jb2RpbmcpOiIiLG4uc3BlY3VsYXJUaW50TWFwP0pwdCgic3BlY3VsYXJUaW50TWFwVGV4ZWxUb0xpbmVhciIsbi5zcGVjdWxhclRpbnRNYXBFbmNvZGluZyk6IiIsbi5saWdodE1hcD9KcHQoImxpZ2h0TWFwVGV4ZWxUb0xpbmVhciIsbi5saWdodE1hcEVuY29kaW5nKToiIixRcHQoImxpbmVhclRvT3V0cHV0VGV4ZWwiLG4ub3V0cHV0RW5jb2RpbmcpLG4uZGVwdGhQYWNraW5nPyIjZGVmaW5lIERFUFRIX1BBQ0tJTkcgIituLmRlcHRoUGFja2luZzoiIiwiXG4iXS5maWx0ZXIodG10KS5qb2luKCJcbiIpKSxyPWltdChyKSxyPWVtdChyLG4pLHI9bm10KHIsbikscz1pbXQocykscz1lbXQocyxuKSxzPW5tdChzLG4pLHI9bG10KHIpLHM9bG10KHMpLG4uaXNXZWJHTDImJiEwIT09bi5pc1Jhd1NoYWRlck1hdGVyaWFsJiYoTz0iI3ZlcnNpb24gMzAwIGVzXG4iLHY9WyIjZGVmaW5lIGF0dHJpYnV0ZSBpbiIsIiNkZWZpbmUgdmFyeWluZyBvdXQiLCIjZGVmaW5lIHRleHR1cmUyRCB0ZXh0dXJlIl0uam9pbigiXG4iKSsiXG4iK3YseD1bIiNkZWZpbmUgdmFyeWluZyBpbiIsbi5nbHNsVmVyc2lvbj09PWFzdD8iIjoib3V0IGhpZ2hwIHZlYzQgcGNfZnJhZ0NvbG9yOyIsbi5nbHNsVmVyc2lvbj09PWFzdD8iIjoiI2RlZmluZSBnbF9GcmFnQ29sb3IgcGNfZnJhZ0NvbG9yIiwiI2RlZmluZSBnbF9GcmFnRGVwdGhFWFQgZ2xfRnJhZ0RlcHRoIiwiI2RlZmluZSB0ZXh0dXJlMkQgdGV4dHVyZSIsIiNkZWZpbmUgdGV4dHVyZUN1YmUgdGV4dHVyZSIsIiNkZWZpbmUgdGV4dHVyZTJEUHJvaiB0ZXh0dXJlUHJvaiIsIiNkZWZpbmUgdGV4dHVyZTJETG9kRVhUIHRleHR1cmVMb2QiLCIjZGVmaW5lIHRleHR1cmUyRFByb2pMb2RFWFQgdGV4dHVyZVByb2pMb2QiLCIjZGVmaW5lIHRleHR1cmVDdWJlTG9kRVhUIHRleHR1cmVMb2QiLCIjZGVmaW5lIHRleHR1cmUyREdyYWRFWFQgdGV4dHVyZUdyYWQiLCIjZGVmaW5lIHRleHR1cmUyRFByb2pHcmFkRVhUIHRleHR1cmVQcm9qR3JhZCIsIiNkZWZpbmUgdGV4dHVyZUN1YmVHcmFkRVhUIHRleHR1cmVHcmFkIl0uam9pbigiXG4iKSsiXG4iK3gpO2NvbnN0IFA9Tyt4K3Msdz1xcHQoaSwzNTYzMyxPK3Yrciksaz1xcHQoaSwzNTYzMixQKTtpZihpLmF0dGFjaFNoYWRlcihNLHcpLGkuYXR0YWNoU2hhZGVyKE0sayksdm9pZCAwIT09bi5pbmRleDBBdHRyaWJ1dGVOYW1lP2kuYmluZEF0dHJpYkxvY2F0aW9uKE0sMCxuLmluZGV4MEF0dHJpYnV0ZU5hbWUpOiEwPT09bi5tb3JwaFRhcmdldHMmJmkuYmluZEF0dHJpYkxvY2F0aW9uKE0sMCwicG9zaXRpb24iKSxpLmxpbmtQcm9ncmFtKE0pLHQuZGVidWcuY2hlY2tTaGFkZXJFcnJvcnMpe2NvbnN0IHQ9aS5nZXRQcm9ncmFtSW5mb0xvZyhNKS50cmltKCksZT1pLmdldFNoYWRlckluZm9Mb2codykudHJpbSgpLG49aS5nZXRTaGFkZXJJbmZvTG9nKGspLnRyaW0oKTtsZXQgbz0hMCxhPSEwO2lmKCExPT09aS5nZXRQcm9ncmFtUGFyYW1ldGVyKE0sMzU3MTQpKXtvPSExO2NvbnN0IGU9S3B0KGksdywidmVydGV4Iiksbj1LcHQoaSxrLCJmcmFnbWVudCIpO2NvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMUHJvZ3JhbTogc2hhZGVyIGVycm9yOiAiLGkuZ2V0RXJyb3IoKSwiMzU3MTUiLGkuZ2V0UHJvZ3JhbVBhcmFtZXRlcihNLDM1NzE1KSwiZ2wuZ2V0UHJvZ3JhbUluZm9Mb2ciLHQsZSxuKX1lbHNlIiIhPT10P2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xQcm9ncmFtOiBnbC5nZXRQcm9ncmFtSW5mb0xvZygpIix0KToiIiE9PWUmJiIiIT09bnx8KGE9ITEpO2EmJih0aGlzLmRpYWdub3N0aWNzPXtydW5uYWJsZTpvLHByb2dyYW1Mb2c6dCx2ZXJ0ZXhTaGFkZXI6e2xvZzplLHByZWZpeDp2fSxmcmFnbWVudFNoYWRlcjp7bG9nOm4scHJlZml4Onh9fSl9bGV0IFMsRDtyZXR1cm4gaS5kZWxldGVTaGFkZXIodyksaS5kZWxldGVTaGFkZXIoayksdGhpcy5nZXRVbmlmb3Jtcz1mdW5jdGlvbigpe3JldHVybiB2b2lkIDA9PT1TJiYoUz1uZXcgWXB0KGksTSkpLFN9LHRoaXMuZ2V0QXR0cmlidXRlcz1mdW5jdGlvbigpe3JldHVybiB2b2lkIDA9PT1EJiYoRD0oZnVuY3Rpb24gdChlLG4pe2NvbnN0IG89e30saT1lLmdldFByb2dyYW1QYXJhbWV0ZXIobiwzNTcyMSk7Zm9yKGxldCB0PTA7dDxpO3QrKyl7Y29uc3QgaT1lLmdldEFjdGl2ZUF0dHJpYihuLHQpLm5hbWU7b1tpXT1lLmdldEF0dHJpYkxvY2F0aW9uKG4saSl9cmV0dXJuIG99KShpLE0pKSxEfSx0aGlzLmRlc3Ryb3k9ZnVuY3Rpb24oKXtvLnJlbGVhc2VTdGF0ZXNPZlByb2dyYW0odGhpcyksaS5kZWxldGVQcm9ncmFtKE0pLHRoaXMucHJvZ3JhbT12b2lkIDB9LHRoaXMubmFtZT1uLnNoYWRlck5hbWUsdGhpcy5pZD1acHQrKyx0aGlzLmNhY2hlS2V5PWUsdGhpcy51c2VkVGltZXM9MSx0aGlzLnByb2dyYW09TSx0aGlzLnZlcnRleFNoYWRlcj13LHRoaXMuZnJhZ21lbnRTaGFkZXI9ayx0aGlzfWZ1bmN0aW9uIGZtdCh0LGUsbixvLGksYSxyKXtjb25zdCBzPVtdLGw9aS5pc1dlYkdMMixjPWkubG9nYXJpdGhtaWNEZXB0aEJ1ZmZlcixkPWkuZmxvYXRWZXJ0ZXhUZXh0dXJlcyxwPWkubWF4VmVydGV4VW5pZm9ybXMsbT1pLnZlcnRleFRleHR1cmVzO2xldCBmPWkucHJlY2lzaW9uO2NvbnN0IHU9e01lc2hEZXB0aE1hdGVyaWFsOiJkZXB0aCIsTWVzaERpc3RhbmNlTWF0ZXJpYWw6ImRpc3RhbmNlUkdCQSIsTWVzaE5vcm1hbE1hdGVyaWFsOiJub3JtYWwiLE1lc2hCYXNpY01hdGVyaWFsOiJiYXNpYyIsTWVzaExhbWJlcnRNYXRlcmlhbDoibGFtYmVydCIsTWVzaFBob25nTWF0ZXJpYWw6InBob25nIixNZXNoVG9vbk1hdGVyaWFsOiJ0b29uIixNZXNoU3RhbmRhcmRNYXRlcmlhbDoicGh5c2ljYWwiLE1lc2hQaHlzaWNhbE1hdGVyaWFsOiJwaHlzaWNhbCIsTWVzaE1hdGNhcE1hdGVyaWFsOiJtYXRjYXAiLExpbmVCYXNpY01hdGVyaWFsOiJiYXNpYyIsTGluZURhc2hlZE1hdGVyaWFsOiJkYXNoZWQiLFBvaW50c01hdGVyaWFsOiJwb2ludHMiLFNoYWRvd01hdGVyaWFsOiJzaGFkb3ciLFNwcml0ZU1hdGVyaWFsOiJzcHJpdGUifSxnPVsicHJlY2lzaW9uIiwiaXNXZWJHTDIiLCJzdXBwb3J0c1ZlcnRleFRleHR1cmVzIiwib3V0cHV0RW5jb2RpbmciLCJpbnN0YW5jaW5nIiwiaW5zdGFuY2luZ0NvbG9yIiwibWFwIiwibWFwRW5jb2RpbmciLCJtYXRjYXAiLCJtYXRjYXBFbmNvZGluZyIsImVudk1hcCIsImVudk1hcE1vZGUiLCJlbnZNYXBFbmNvZGluZyIsImVudk1hcEN1YmVVViIsImxpZ2h0TWFwIiwibGlnaHRNYXBFbmNvZGluZyIsImFvTWFwIiwiZW1pc3NpdmVNYXAiLCJlbWlzc2l2ZU1hcEVuY29kaW5nIiwiYnVtcE1hcCIsIm5vcm1hbE1hcCIsIm9iamVjdFNwYWNlTm9ybWFsTWFwIiwidGFuZ2VudFNwYWNlTm9ybWFsTWFwIiwiY2xlYXJjb2F0TWFwIiwiY2xlYXJjb2F0Um91Z2huZXNzTWFwIiwiY2xlYXJjb2F0Tm9ybWFsTWFwIiwiZGlzcGxhY2VtZW50TWFwIiwic3BlY3VsYXJNYXAiLCJzcGVjdWxhckludGVuc2l0eU1hcCIsInNwZWN1bGFyVGludE1hcCIsInNwZWN1bGFyVGludE1hcEVuY29kaW5nIiwicm91Z2huZXNzTWFwIiwibWV0YWxuZXNzTWFwIiwiZ3JhZGllbnRNYXAiLCJhbHBoYU1hcCIsImNvbWJpbmUiLCJ2ZXJ0ZXhDb2xvcnMiLCJ2ZXJ0ZXhBbHBoYXMiLCJ2ZXJ0ZXhUYW5nZW50cyIsInZlcnRleFV2cyIsInV2c1ZlcnRleE9ubHkiLCJmb2ciLCJ1c2VGb2ciLCJmb2dFeHAyIiwiZmxhdFNoYWRpbmciLCJzaXplQXR0ZW51YXRpb24iLCJsb2dhcml0aG1pY0RlcHRoQnVmZmVyIiwic2tpbm5pbmciLCJtYXhCb25lcyIsInVzZVZlcnRleFRleHR1cmUiLCJtb3JwaFRhcmdldHMiLCJtb3JwaE5vcm1hbHMiLCJwcmVtdWx0aXBsaWVkQWxwaGEiLCJudW1EaXJMaWdodHMiLCJudW1Qb2ludExpZ2h0cyIsIm51bVNwb3RMaWdodHMiLCJudW1IZW1pTGlnaHRzIiwibnVtUmVjdEFyZWFMaWdodHMiLCJudW1EaXJMaWdodFNoYWRvd3MiLCJudW1Qb2ludExpZ2h0U2hhZG93cyIsIm51bVNwb3RMaWdodFNoYWRvd3MiLCJzaGFkb3dNYXBFbmFibGVkIiwic2hhZG93TWFwVHlwZSIsInRvbmVNYXBwaW5nIiwicGh5c2ljYWxseUNvcnJlY3RMaWdodHMiLCJhbHBoYVRlc3QiLCJkb3VibGVTaWRlZCIsImZsaXBTaWRlZCIsIm51bUNsaXBwaW5nUGxhbmVzIiwibnVtQ2xpcEludGVyc2VjdGlvbiIsImRlcHRoUGFja2luZyIsImRpdGhlcmluZyIsInNoZWVuIiwidHJhbnNtaXNzaW9uIiwidHJhbnNtaXNzaW9uTWFwIiwidGhpY2tuZXNzTWFwIl07ZnVuY3Rpb24gaCh0KXtsZXQgZTtyZXR1cm4gdCYmdC5pc1RleHR1cmU/ZT10LmVuY29kaW5nOnQmJnQuaXNXZWJHTFJlbmRlclRhcmdldD8oY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFByb2dyYW1zLmdldFRleHR1cmVFbmNvZGluZ0Zyb21NYXA6IGRvbid0IHVzZSByZW5kZXIgdGFyZ2V0cyBhcyB0ZXh0dXJlcy4gVXNlIHRoZWlyIC50ZXh0dXJlIHByb3BlcnR5IGluc3RlYWQuIiksZT10LnRleHR1cmUuZW5jb2RpbmcpOmU9UXJ0LGV9cmV0dXJue2dldFBhcmFtZXRlcnM6ZnVuY3Rpb24gYihhLHMsZyx5LF8pe2NvbnN0IEM9eS5mb2csTT0oYS5pc01lc2hTdGFuZGFyZE1hdGVyaWFsP246ZSkuZ2V0KGEuZW52TWFwfHwoYS5pc01lc2hTdGFuZGFyZE1hdGVyaWFsP3kuZW52aXJvbm1lbnQ6bnVsbCkpLHY9dVthLnR5cGVdLHg9Xy5pc1NraW5uZWRNZXNoPyhmdW5jdGlvbiBPKHQpe2NvbnN0IGU9dC5za2VsZXRvbi5ib25lcztpZihkKXJldHVybiAxMDI0O3tjb25zdCB0PU1hdGguZmxvb3IoKHAtMjApLzQpLG49TWF0aC5taW4odCxlLmxlbmd0aCk7cmV0dXJuIG48ZS5sZW5ndGg/KGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogU2tlbGV0b24gaGFzICIrZS5sZW5ndGgrIiBib25lcy4gVGhpcyBHUFUgc3VwcG9ydHMgIituKyIuIiksMCk6bn19KShfKTowO2xldCBQLHc7aWYobnVsbCE9PWEucHJlY2lzaW9uJiYoZj1pLmdldE1heFByZWNpc2lvbihhLnByZWNpc2lvbiksZiE9PWEucHJlY2lzaW9uJiZjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUHJvZ3JhbS5nZXRQYXJhbWV0ZXJzOiIsYS5wcmVjaXNpb24sIm5vdCBzdXBwb3J0ZWQsIHVzaW5nIixmLCJpbnN0ZWFkLiIpKSx2KXtjb25zdCB0PSRjdFt2XTtQPXQudmVydGV4U2hhZGVyLHc9dC5mcmFnbWVudFNoYWRlcn1lbHNlIFA9YS52ZXJ0ZXhTaGFkZXIsdz1hLmZyYWdtZW50U2hhZGVyO2NvbnN0IGs9dC5nZXRSZW5kZXJUYXJnZXQoKTtyZXR1cm57aXNXZWJHTDI6bCxzaGFkZXJJRDp2LHNoYWRlck5hbWU6YS50eXBlLHZlcnRleFNoYWRlcjpQLGZyYWdtZW50U2hhZGVyOncsZGVmaW5lczphLmRlZmluZXMsaXNSYXdTaGFkZXJNYXRlcmlhbDohMD09PWEuaXNSYXdTaGFkZXJNYXRlcmlhbCxnbHNsVmVyc2lvbjphLmdsc2xWZXJzaW9uLHByZWNpc2lvbjpmLGluc3RhbmNpbmc6ITA9PT1fLmlzSW5zdGFuY2VkTWVzaCxpbnN0YW5jaW5nQ29sb3I6ITA9PT1fLmlzSW5zdGFuY2VkTWVzaCYmbnVsbCE9PV8uaW5zdGFuY2VDb2xvcixzdXBwb3J0c1ZlcnRleFRleHR1cmVzOm0sb3V0cHV0RW5jb2Rpbmc6bnVsbCE9PWs/aChrLnRleHR1cmUpOnQub3V0cHV0RW5jb2RpbmcsbWFwOiEhYS5tYXAsbWFwRW5jb2Rpbmc6aChhLm1hcCksbWF0Y2FwOiEhYS5tYXRjYXAsbWF0Y2FwRW5jb2Rpbmc6aChhLm1hdGNhcCksZW52TWFwOiEhTSxlbnZNYXBNb2RlOk0mJk0ubWFwcGluZyxlbnZNYXBFbmNvZGluZzpoKE0pLGVudk1hcEN1YmVVVjohIU0mJihNLm1hcHBpbmc9PT1TcnR8fDMwNz09PU0ubWFwcGluZyksbGlnaHRNYXA6ISFhLmxpZ2h0TWFwLGxpZ2h0TWFwRW5jb2Rpbmc6aChhLmxpZ2h0TWFwKSxhb01hcDohIWEuYW9NYXAsZW1pc3NpdmVNYXA6ISFhLmVtaXNzaXZlTWFwLGVtaXNzaXZlTWFwRW5jb2Rpbmc6aChhLmVtaXNzaXZlTWFwKSxidW1wTWFwOiEhYS5idW1wTWFwLG5vcm1hbE1hcDohIWEubm9ybWFsTWFwLG9iamVjdFNwYWNlTm9ybWFsTWFwOjE9PT1hLm5vcm1hbE1hcFR5cGUsdGFuZ2VudFNwYWNlTm9ybWFsTWFwOjA9PT1hLm5vcm1hbE1hcFR5cGUsY2xlYXJjb2F0TWFwOiEhYS5jbGVhcmNvYXRNYXAsY2xlYXJjb2F0Um91Z2huZXNzTWFwOiEhYS5jbGVhcmNvYXRSb3VnaG5lc3NNYXAsY2xlYXJjb2F0Tm9ybWFsTWFwOiEhYS5jbGVhcmNvYXROb3JtYWxNYXAsZGlzcGxhY2VtZW50TWFwOiEhYS5kaXNwbGFjZW1lbnRNYXAscm91Z2huZXNzTWFwOiEhYS5yb3VnaG5lc3NNYXAsbWV0YWxuZXNzTWFwOiEhYS5tZXRhbG5lc3NNYXAsc3BlY3VsYXJNYXA6ISFhLnNwZWN1bGFyTWFwLHNwZWN1bGFySW50ZW5zaXR5TWFwOiEhYS5zcGVjdWxhckludGVuc2l0eU1hcCxzcGVjdWxhclRpbnRNYXA6ISFhLnNwZWN1bGFyVGludE1hcCxzcGVjdWxhclRpbnRNYXBFbmNvZGluZzpoKGEuc3BlY3VsYXJUaW50TWFwKSxhbHBoYU1hcDohIWEuYWxwaGFNYXAsZ3JhZGllbnRNYXA6ISFhLmdyYWRpZW50TWFwLHNoZWVuOiEhYS5zaGVlbix0cmFuc21pc3Npb246ISFhLnRyYW5zbWlzc2lvbix0cmFuc21pc3Npb25NYXA6ISFhLnRyYW5zbWlzc2lvbk1hcCx0aGlja25lc3NNYXA6ISFhLnRoaWNrbmVzc01hcCxjb21iaW5lOmEuY29tYmluZSx2ZXJ0ZXhUYW5nZW50czohIWEubm9ybWFsTWFwJiYhIV8uZ2VvbWV0cnkmJiEhXy5nZW9tZXRyeS5hdHRyaWJ1dGVzLnRhbmdlbnQsdmVydGV4Q29sb3JzOmEudmVydGV4Q29sb3JzLHZlcnRleEFscGhhczohMD09PWEudmVydGV4Q29sb3JzJiYhIV8uZ2VvbWV0cnkmJiEhXy5nZW9tZXRyeS5hdHRyaWJ1dGVzLmNvbG9yJiY0PT09Xy5nZW9tZXRyeS5hdHRyaWJ1dGVzLmNvbG9yLml0ZW1TaXplLHZlcnRleFV2czohIShhLm1hcHx8YS5idW1wTWFwfHxhLm5vcm1hbE1hcHx8YS5zcGVjdWxhck1hcHx8YS5hbHBoYU1hcHx8YS5lbWlzc2l2ZU1hcHx8YS5yb3VnaG5lc3NNYXB8fGEubWV0YWxuZXNzTWFwfHxhLmNsZWFyY29hdE1hcHx8YS5jbGVhcmNvYXRSb3VnaG5lc3NNYXB8fGEuY2xlYXJjb2F0Tm9ybWFsTWFwfHxhLmRpc3BsYWNlbWVudE1hcHx8YS50cmFuc21pc3Npb25NYXB8fGEudGhpY2tuZXNzTWFwfHxhLnNwZWN1bGFySW50ZW5zaXR5TWFwfHxhLnNwZWN1bGFyVGludE1hcCksdXZzVmVydGV4T25seTohKGEubWFwfHxhLmJ1bXBNYXB8fGEubm9ybWFsTWFwfHxhLnNwZWN1bGFyTWFwfHxhLmFscGhhTWFwfHxhLmVtaXNzaXZlTWFwfHxhLnJvdWdobmVzc01hcHx8YS5tZXRhbG5lc3NNYXB8fGEuY2xlYXJjb2F0Tm9ybWFsTWFwfHxhLnRyYW5zbWlzc2lvbnx8YS50cmFuc21pc3Npb25NYXB8fGEudGhpY2tuZXNzTWFwfHxhLnNwZWN1bGFySW50ZW5zaXR5TWFwfHxhLnNwZWN1bGFyVGludE1hcHx8IWEuZGlzcGxhY2VtZW50TWFwKSxmb2c6ISFDLHVzZUZvZzphLmZvZyxmb2dFeHAyOkMmJkMuaXNGb2dFeHAyLGZsYXRTaGFkaW5nOiEhYS5mbGF0U2hhZGluZyxzaXplQXR0ZW51YXRpb246YS5zaXplQXR0ZW51YXRpb24sbG9nYXJpdGhtaWNEZXB0aEJ1ZmZlcjpjLHNraW5uaW5nOiEwPT09Xy5pc1NraW5uZWRNZXNoJiZ4PjAsbWF4Qm9uZXM6eCx1c2VWZXJ0ZXhUZXh0dXJlOmQsbW9ycGhUYXJnZXRzOiEhXy5nZW9tZXRyeSYmISFfLmdlb21ldHJ5Lm1vcnBoQXR0cmlidXRlcy5wb3NpdGlvbixtb3JwaE5vcm1hbHM6ISFfLmdlb21ldHJ5JiYhIV8uZ2VvbWV0cnkubW9ycGhBdHRyaWJ1dGVzLm5vcm1hbCxudW1EaXJMaWdodHM6cy5kaXJlY3Rpb25hbC5sZW5ndGgsbnVtUG9pbnRMaWdodHM6cy5wb2ludC5sZW5ndGgsbnVtU3BvdExpZ2h0czpzLnNwb3QubGVuZ3RoLG51bVJlY3RBcmVhTGlnaHRzOnMucmVjdEFyZWEubGVuZ3RoLG51bUhlbWlMaWdodHM6cy5oZW1pLmxlbmd0aCxudW1EaXJMaWdodFNoYWRvd3M6cy5kaXJlY3Rpb25hbFNoYWRvd01hcC5sZW5ndGgsbnVtUG9pbnRMaWdodFNoYWRvd3M6cy5wb2ludFNoYWRvd01hcC5sZW5ndGgsbnVtU3BvdExpZ2h0U2hhZG93czpzLnNwb3RTaGFkb3dNYXAubGVuZ3RoLG51bUNsaXBwaW5nUGxhbmVzOnIubnVtUGxhbmVzLG51bUNsaXBJbnRlcnNlY3Rpb246ci5udW1JbnRlcnNlY3Rpb24sZGl0aGVyaW5nOmEuZGl0aGVyaW5nLHNoYWRvd01hcEVuYWJsZWQ6dC5zaGFkb3dNYXAuZW5hYmxlZCYmZy5sZW5ndGg+MCxzaGFkb3dNYXBUeXBlOnQuc2hhZG93TWFwLnR5cGUsdG9uZU1hcHBpbmc6YS50b25lTWFwcGVkP3QudG9uZU1hcHBpbmc6MCxwaHlzaWNhbGx5Q29ycmVjdExpZ2h0czp0LnBoeXNpY2FsbHlDb3JyZWN0TGlnaHRzLHByZW11bHRpcGxpZWRBbHBoYTphLnByZW11bHRpcGxpZWRBbHBoYSxhbHBoYVRlc3Q6YS5hbHBoYVRlc3QsZG91YmxlU2lkZWQ6Mj09PWEuc2lkZSxmbGlwU2lkZWQ6MT09PWEuc2lkZSxkZXB0aFBhY2tpbmc6dm9pZCAwIT09YS5kZXB0aFBhY2tpbmcmJmEuZGVwdGhQYWNraW5nLGluZGV4MEF0dHJpYnV0ZU5hbWU6YS5pbmRleDBBdHRyaWJ1dGVOYW1lLGV4dGVuc2lvbkRlcml2YXRpdmVzOmEuZXh0ZW5zaW9ucyYmYS5leHRlbnNpb25zLmRlcml2YXRpdmVzLGV4dGVuc2lvbkZyYWdEZXB0aDphLmV4dGVuc2lvbnMmJmEuZXh0ZW5zaW9ucy5mcmFnRGVwdGgsZXh0ZW5zaW9uRHJhd0J1ZmZlcnM6YS5leHRlbnNpb25zJiZhLmV4dGVuc2lvbnMuZHJhd0J1ZmZlcnMsZXh0ZW5zaW9uU2hhZGVyVGV4dHVyZUxPRDphLmV4dGVuc2lvbnMmJmEuZXh0ZW5zaW9ucy5zaGFkZXJUZXh0dXJlTE9ELHJlbmRlcmVyRXh0ZW5zaW9uRnJhZ0RlcHRoOmx8fG8uaGFzKCJFWFRfZnJhZ19kZXB0aCIpLHJlbmRlcmVyRXh0ZW5zaW9uRHJhd0J1ZmZlcnM6bHx8by5oYXMoIldFQkdMX2RyYXdfYnVmZmVycyIpLHJlbmRlcmVyRXh0ZW5zaW9uU2hhZGVyVGV4dHVyZUxvZDpsfHxvLmhhcygiRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIpLGN1c3RvbVByb2dyYW1DYWNoZUtleTphLmN1c3RvbVByb2dyYW1DYWNoZUtleSgpfX0sZ2V0UHJvZ3JhbUNhY2hlS2V5OmZ1bmN0aW9uIHkoZSl7Y29uc3Qgbj1bXTtpZihlLnNoYWRlcklEP24ucHVzaChlLnNoYWRlcklEKToobi5wdXNoKGUuZnJhZ21lbnRTaGFkZXIpLG4ucHVzaChlLnZlcnRleFNoYWRlcikpLHZvaWQgMCE9PWUuZGVmaW5lcylmb3IoY29uc3QgdCBpbiBlLmRlZmluZXMpbi5wdXNoKHQpLG4ucHVzaChlLmRlZmluZXNbdF0pO2lmKCExPT09ZS5pc1Jhd1NoYWRlck1hdGVyaWFsKXtmb3IobGV0IHQ9MDt0PGcubGVuZ3RoO3QrKyluLnB1c2goZVtnW3RdXSk7bi5wdXNoKHQub3V0cHV0RW5jb2RpbmcpLG4ucHVzaCh0LmdhbW1hRmFjdG9yKX1yZXR1cm4gbi5wdXNoKGUuY3VzdG9tUHJvZ3JhbUNhY2hlS2V5KSxuLmpvaW4oKX0sZ2V0VW5pZm9ybXM6ZnVuY3Rpb24gXyh0KXtjb25zdCBlPXVbdC50eXBlXTtsZXQgbjtpZihlKXtuPVRjdC5jbG9uZSgkY3RbZV0udW5pZm9ybXMpfWVsc2Ugbj10LnVuaWZvcm1zO3JldHVybiBufSxhY3F1aXJlUHJvZ3JhbTpmdW5jdGlvbiBDKGUsbil7bGV0IG87Zm9yKGxldCB0PTAsZT1zLmxlbmd0aDt0PGU7dCsrKXtjb25zdCBlPXNbdF07aWYoZS5jYWNoZUtleT09PW4pe289ZSwrK28udXNlZFRpbWVzO2JyZWFrfX1yZXR1cm4gdm9pZCAwPT09byYmKG89bmV3IG1tdCh0LG4sZSxhKSxzLnB1c2gobykpLG99LHJlbGVhc2VQcm9ncmFtOmZ1bmN0aW9uIE0odCl7aWYoMD09LS10LnVzZWRUaW1lcyl7Y29uc3QgZT1zLmluZGV4T2YodCk7c1tlXT1zW3MubGVuZ3RoLTFdLHMucG9wKCksdC5kZXN0cm95KCl9fSxwcm9ncmFtczpzfX1mdW5jdGlvbiB1bXQoKXtsZXQgdD1uZXcgV2Vha01hcDtyZXR1cm57Z2V0OmZ1bmN0aW9uIGUobil7bGV0IG89dC5nZXQobik7cmV0dXJuIHZvaWQgMD09PW8mJihvPXt9LHQuc2V0KG4sbykpLG99LHJlbW92ZTpmdW5jdGlvbiBuKGUpe3QuZGVsZXRlKGUpfSx1cGRhdGU6ZnVuY3Rpb24gbyhlLG4saSl7dC5nZXQoZSlbbl09aX0sZGlzcG9zZTpmdW5jdGlvbiBpKCl7dD1uZXcgV2Vha01hcH19fWZ1bmN0aW9uIGdtdCh0LGUpe3JldHVybiB0Lmdyb3VwT3JkZXIhPT1lLmdyb3VwT3JkZXI/dC5ncm91cE9yZGVyLWUuZ3JvdXBPcmRlcjp0LnJlbmRlck9yZGVyIT09ZS5yZW5kZXJPcmRlcj90LnJlbmRlck9yZGVyLWUucmVuZGVyT3JkZXI6dC5wcm9ncmFtIT09ZS5wcm9ncmFtP3QucHJvZ3JhbS5pZC1lLnByb2dyYW0uaWQ6dC5tYXRlcmlhbC5pZCE9PWUubWF0ZXJpYWwuaWQ/dC5tYXRlcmlhbC5pZC1lLm1hdGVyaWFsLmlkOnQueiE9PWUuej90LnotZS56OnQuaWQtZS5pZH1mdW5jdGlvbiBobXQodCxlKXtyZXR1cm4gdC5ncm91cE9yZGVyIT09ZS5ncm91cE9yZGVyP3QuZ3JvdXBPcmRlci1lLmdyb3VwT3JkZXI6dC5yZW5kZXJPcmRlciE9PWUucmVuZGVyT3JkZXI/dC5yZW5kZXJPcmRlci1lLnJlbmRlck9yZGVyOnQueiE9PWUuej9lLnotdC56OnQuaWQtZS5pZH1mdW5jdGlvbiBibXQodCl7Y29uc3QgZT1bXTtsZXQgbj0wO2NvbnN0IG89W10saT1bXSxhPVtdLHI9e2lkOi0xfTtmdW5jdGlvbiBzKG8saSxhLHMsbCxjKXtsZXQgZD1lW25dO2NvbnN0IHA9dC5nZXQoYSk7cmV0dXJuIHZvaWQgMD09PWQ/KGQ9e2lkOm8uaWQsb2JqZWN0Om8sZ2VvbWV0cnk6aSxtYXRlcmlhbDphLHByb2dyYW06cC5wcm9ncmFtfHxyLGdyb3VwT3JkZXI6cyxyZW5kZXJPcmRlcjpvLnJlbmRlck9yZGVyLHo6bCxncm91cDpjfSxlW25dPWQpOihkLmlkPW8uaWQsZC5vYmplY3Q9byxkLmdlb21ldHJ5PWksZC5tYXRlcmlhbD1hLGQucHJvZ3JhbT1wLnByb2dyYW18fHIsZC5ncm91cE9yZGVyPXMsZC5yZW5kZXJPcmRlcj1vLnJlbmRlck9yZGVyLGQuej1sLGQuZ3JvdXA9YyksbisrLGR9cmV0dXJue29wYXF1ZTpvLHRyYW5zbWlzc2l2ZTppLHRyYW5zcGFyZW50OmEsaW5pdDpmdW5jdGlvbiBsKCl7bj0wLG8ubGVuZ3RoPTAsaS5sZW5ndGg9MCxhLmxlbmd0aD0wfSxwdXNoOmZ1bmN0aW9uIGModCxlLG4scixsLGQpe2NvbnN0IHA9cyh0LGUsbixyLGwsZCk7bi50cmFuc21pc3Npb24+MD9pLnB1c2gocCk6ITA9PT1uLnRyYW5zcGFyZW50P2EucHVzaChwKTpvLnB1c2gocCl9LHVuc2hpZnQ6ZnVuY3Rpb24gZCh0LGUsbixyLGwsYyl7Y29uc3QgZD1zKHQsZSxuLHIsbCxjKTtuLnRyYW5zbWlzc2lvbj4wP2kudW5zaGlmdChkKTohMD09PW4udHJhbnNwYXJlbnQ/YS51bnNoaWZ0KGQpOm8udW5zaGlmdChkKX0sZmluaXNoOmZ1bmN0aW9uIHAoKXtmb3IobGV0IHQ9bixvPWUubGVuZ3RoO3Q8bzt0Kyspe2NvbnN0IG49ZVt0XTtpZihudWxsPT09bi5pZClicmVhaztuLmlkPW51bGwsbi5vYmplY3Q9bnVsbCxuLmdlb21ldHJ5PW51bGwsbi5tYXRlcmlhbD1udWxsLG4ucHJvZ3JhbT1udWxsLG4uZ3JvdXA9bnVsbH19LHNvcnQ6ZnVuY3Rpb24gbSh0LGUpe28ubGVuZ3RoPjEmJm8uc29ydCh0fHxnbXQpLGkubGVuZ3RoPjEmJmkuc29ydChlfHxobXQpLGEubGVuZ3RoPjEmJmEuc29ydChlfHxobXQpfX19ZnVuY3Rpb24geW10KHQpe2xldCBlPW5ldyBXZWFrTWFwO3JldHVybntnZXQ6ZnVuY3Rpb24gbihvLGkpe2xldCBhO3JldHVybiExPT09ZS5oYXMobyk/KGE9bmV3IGJtdCh0KSxlLnNldChvLFthXSkpOmk+PWUuZ2V0KG8pLmxlbmd0aD8oYT1uZXcgYm10KHQpLGUuZ2V0KG8pLnB1c2goYSkpOmE9ZS5nZXQobylbaV0sYX0sZGlzcG9zZTpmdW5jdGlvbiBvKCl7ZT1uZXcgV2Vha01hcH19fWZ1bmN0aW9uIF9tdCgpe2NvbnN0IHQ9e307cmV0dXJue2dldDpmdW5jdGlvbihlKXtpZih2b2lkIDAhPT10W2UuaWRdKXJldHVybiB0W2UuaWRdO2xldCBuO3N3aXRjaChlLnR5cGUpe2Nhc2UiRGlyZWN0aW9uYWxMaWdodCI6bj17ZGlyZWN0aW9uOm5ldyB3c3QsY29sb3I6bmV3IFpsdH07YnJlYWs7Y2FzZSJTcG90TGlnaHQiOm49e3Bvc2l0aW9uOm5ldyB3c3QsZGlyZWN0aW9uOm5ldyB3c3QsY29sb3I6bmV3IFpsdCxkaXN0YW5jZTowLGNvbmVDb3M6MCxwZW51bWJyYUNvczowLGRlY2F5OjB9O2JyZWFrO2Nhc2UiUG9pbnRMaWdodCI6bj17cG9zaXRpb246bmV3IHdzdCxjb2xvcjpuZXcgWmx0LGRpc3RhbmNlOjAsZGVjYXk6MH07YnJlYWs7Y2FzZSJIZW1pc3BoZXJlTGlnaHQiOm49e2RpcmVjdGlvbjpuZXcgd3N0LHNreUNvbG9yOm5ldyBabHQsZ3JvdW5kQ29sb3I6bmV3IFpsdH07YnJlYWs7Y2FzZSJSZWN0QXJlYUxpZ2h0IjpuPXtjb2xvcjpuZXcgWmx0LHBvc2l0aW9uOm5ldyB3c3QsaGFsZldpZHRoOm5ldyB3c3QsaGFsZkhlaWdodDpuZXcgd3N0fX1yZXR1cm4gdFtlLmlkXT1uLG59fX1sZXQgQ210PTA7ZnVuY3Rpb24gTW10KHQsZSl7cmV0dXJuKGUuY2FzdFNoYWRvdz8xOjApLSh0LmNhc3RTaGFkb3c/MTowKX1mdW5jdGlvbiB2bXQodCxlKXtjb25zdCBuPW5ldyBfbXQsbz0oZnVuY3Rpb24gaSgpe2NvbnN0IHQ9e307cmV0dXJue2dldDpmdW5jdGlvbihlKXtpZih2b2lkIDAhPT10W2UuaWRdKXJldHVybiB0W2UuaWRdO2xldCBuO3N3aXRjaChlLnR5cGUpe2Nhc2UiRGlyZWN0aW9uYWxMaWdodCI6Y2FzZSJTcG90TGlnaHQiOm49e3NoYWRvd0JpYXM6MCxzaGFkb3dOb3JtYWxCaWFzOjAsc2hhZG93UmFkaXVzOjEsc2hhZG93TWFwU2l6ZTpuZXcgZ3N0fTticmVhaztjYXNlIlBvaW50TGlnaHQiOm49e3NoYWRvd0JpYXM6MCxzaGFkb3dOb3JtYWxCaWFzOjAsc2hhZG93UmFkaXVzOjEsc2hhZG93TWFwU2l6ZTpuZXcgZ3N0LHNoYWRvd0NhbWVyYU5lYXI6MSxzaGFkb3dDYW1lcmFGYXI6MWUzfX1yZXR1cm4gdFtlLmlkXT1uLG59fX0pKCksYT17dmVyc2lvbjowLGhhc2g6e2RpcmVjdGlvbmFsTGVuZ3RoOi0xLHBvaW50TGVuZ3RoOi0xLHNwb3RMZW5ndGg6LTEscmVjdEFyZWFMZW5ndGg6LTEsaGVtaUxlbmd0aDotMSxudW1EaXJlY3Rpb25hbFNoYWRvd3M6LTEsbnVtUG9pbnRTaGFkb3dzOi0xLG51bVNwb3RTaGFkb3dzOi0xfSxhbWJpZW50OlswLDAsMF0scHJvYmU6W10sZGlyZWN0aW9uYWw6W10sZGlyZWN0aW9uYWxTaGFkb3c6W10sZGlyZWN0aW9uYWxTaGFkb3dNYXA6W10sZGlyZWN0aW9uYWxTaGFkb3dNYXRyaXg6W10sc3BvdDpbXSxzcG90U2hhZG93OltdLHNwb3RTaGFkb3dNYXA6W10sc3BvdFNoYWRvd01hdHJpeDpbXSxyZWN0QXJlYTpbXSxyZWN0QXJlYUxUQzE6bnVsbCxyZWN0QXJlYUxUQzI6bnVsbCxwb2ludDpbXSxwb2ludFNoYWRvdzpbXSxwb2ludFNoYWRvd01hcDpbXSxwb2ludFNoYWRvd01hdHJpeDpbXSxoZW1pOltdfTtmb3IobGV0IHQ9MDt0PDk7dCsrKWEucHJvYmUucHVzaChuZXcgd3N0KTtjb25zdCByPW5ldyB3c3Qscz1uZXcgb2x0LGw9bmV3IG9sdDtyZXR1cm57c2V0dXA6ZnVuY3Rpb24gYyhpKXtsZXQgcj0wLHM9MCxsPTA7Zm9yKGxldCB0PTA7dDw5O3QrKylhLnByb2JlW3RdLnNldCgwLDAsMCk7bGV0IGM9MCxkPTAscD0wLG09MCxmPTAsdT0wLGc9MCxoPTA7aS5zb3J0KE1tdCk7Zm9yKGxldCB0PTAsZT1pLmxlbmd0aDt0PGU7dCsrKXtjb25zdCBlPWlbdF0sYj1lLmNvbG9yLHk9ZS5pbnRlbnNpdHksXz1lLmRpc3RhbmNlLEM9ZS5zaGFkb3cmJmUuc2hhZG93Lm1hcD9lLnNoYWRvdy5tYXAudGV4dHVyZTpudWxsO2lmKGUuaXNBbWJpZW50TGlnaHQpcis9Yi5yKnkscys9Yi5nKnksbCs9Yi5iKnk7ZWxzZSBpZihlLmlzTGlnaHRQcm9iZSlmb3IobGV0IHQ9MDt0PDk7dCsrKWEucHJvYmVbdF0uYWRkU2NhbGVkVmVjdG9yKGUuc2guY29lZmZpY2llbnRzW3RdLHkpO2Vsc2UgaWYoZS5pc0RpcmVjdGlvbmFsTGlnaHQpe2NvbnN0IHQ9bi5nZXQoZSk7aWYodC5jb2xvci5jb3B5KGUuY29sb3IpLm11bHRpcGx5U2NhbGFyKGUuaW50ZW5zaXR5KSxlLmNhc3RTaGFkb3cpe2NvbnN0IHQ9ZS5zaGFkb3csbj1vLmdldChlKTtuLnNoYWRvd0JpYXM9dC5iaWFzLG4uc2hhZG93Tm9ybWFsQmlhcz10Lm5vcm1hbEJpYXMsbi5zaGFkb3dSYWRpdXM9dC5yYWRpdXMsbi5zaGFkb3dNYXBTaXplPXQubWFwU2l6ZSxhLmRpcmVjdGlvbmFsU2hhZG93W2NdPW4sYS5kaXJlY3Rpb25hbFNoYWRvd01hcFtjXT1DLGEuZGlyZWN0aW9uYWxTaGFkb3dNYXRyaXhbY109ZS5zaGFkb3cubWF0cml4LHUrK31hLmRpcmVjdGlvbmFsW2NdPXQsYysrfWVsc2UgaWYoZS5pc1Nwb3RMaWdodCl7Y29uc3QgdD1uLmdldChlKTtpZih0LnBvc2l0aW9uLnNldEZyb21NYXRyaXhQb3NpdGlvbihlLm1hdHJpeFdvcmxkKSx0LmNvbG9yLmNvcHkoYikubXVsdGlwbHlTY2FsYXIoeSksdC5kaXN0YW5jZT1fLHQuY29uZUNvcz1NYXRoLmNvcyhlLmFuZ2xlKSx0LnBlbnVtYnJhQ29zPU1hdGguY29zKGUuYW5nbGUqKDEtZS5wZW51bWJyYSkpLHQuZGVjYXk9ZS5kZWNheSxlLmNhc3RTaGFkb3cpe2NvbnN0IHQ9ZS5zaGFkb3csbj1vLmdldChlKTtuLnNoYWRvd0JpYXM9dC5iaWFzLG4uc2hhZG93Tm9ybWFsQmlhcz10Lm5vcm1hbEJpYXMsbi5zaGFkb3dSYWRpdXM9dC5yYWRpdXMsbi5zaGFkb3dNYXBTaXplPXQubWFwU2l6ZSxhLnNwb3RTaGFkb3dbcF09bixhLnNwb3RTaGFkb3dNYXBbcF09QyxhLnNwb3RTaGFkb3dNYXRyaXhbcF09ZS5zaGFkb3cubWF0cml4LGgrK31hLnNwb3RbcF09dCxwKyt9ZWxzZSBpZihlLmlzUmVjdEFyZWFMaWdodCl7Y29uc3QgdD1uLmdldChlKTt0LmNvbG9yLmNvcHkoYikubXVsdGlwbHlTY2FsYXIoeSksdC5oYWxmV2lkdGguc2V0KC41KmUud2lkdGgsMCwwKSx0LmhhbGZIZWlnaHQuc2V0KDAsLjUqZS5oZWlnaHQsMCksYS5yZWN0QXJlYVttXT10LG0rK31lbHNlIGlmKGUuaXNQb2ludExpZ2h0KXtjb25zdCB0PW4uZ2V0KGUpO2lmKHQuY29sb3IuY29weShlLmNvbG9yKS5tdWx0aXBseVNjYWxhcihlLmludGVuc2l0eSksdC5kaXN0YW5jZT1lLmRpc3RhbmNlLHQuZGVjYXk9ZS5kZWNheSxlLmNhc3RTaGFkb3cpe2NvbnN0IHQ9ZS5zaGFkb3csbj1vLmdldChlKTtuLnNoYWRvd0JpYXM9dC5iaWFzLG4uc2hhZG93Tm9ybWFsQmlhcz10Lm5vcm1hbEJpYXMsbi5zaGFkb3dSYWRpdXM9dC5yYWRpdXMsbi5zaGFkb3dNYXBTaXplPXQubWFwU2l6ZSxuLnNoYWRvd0NhbWVyYU5lYXI9dC5jYW1lcmEubmVhcixuLnNoYWRvd0NhbWVyYUZhcj10LmNhbWVyYS5mYXIsYS5wb2ludFNoYWRvd1tkXT1uLGEucG9pbnRTaGFkb3dNYXBbZF09QyxhLnBvaW50U2hhZG93TWF0cml4W2RdPWUuc2hhZG93Lm1hdHJpeCxnKyt9YS5wb2ludFtkXT10LGQrK31lbHNlIGlmKGUuaXNIZW1pc3BoZXJlTGlnaHQpe2NvbnN0IHQ9bi5nZXQoZSk7dC5za3lDb2xvci5jb3B5KGUuY29sb3IpLm11bHRpcGx5U2NhbGFyKHkpLHQuZ3JvdW5kQ29sb3IuY29weShlLmdyb3VuZENvbG9yKS5tdWx0aXBseVNjYWxhcih5KSxhLmhlbWlbZl09dCxmKyt9fW0+MCYmKGUuaXNXZWJHTDJ8fCEwPT09dC5oYXMoIk9FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciIpPyhhLnJlY3RBcmVhTFRDMT1RY3QuTFRDX0ZMT0FUXzEsYS5yZWN0QXJlYUxUQzI9UWN0LkxUQ19GTE9BVF8yKTohMD09PXQuaGFzKCJPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xpbmVhciIpPyhhLnJlY3RBcmVhTFRDMT1RY3QuTFRDX0hBTEZfMSxhLnJlY3RBcmVhTFRDMj1RY3QuTFRDX0hBTEZfMik6Y29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xSZW5kZXJlcjogVW5hYmxlIHRvIHVzZSBSZWN0QXJlYUxpZ2h0LiBNaXNzaW5nIFdlYkdMIGV4dGVuc2lvbnMuIikpLGEuYW1iaWVudFswXT1yLGEuYW1iaWVudFsxXT1zLGEuYW1iaWVudFsyXT1sO2NvbnN0IGI9YS5oYXNoO2IuZGlyZWN0aW9uYWxMZW5ndGg9PT1jJiZiLnBvaW50TGVuZ3RoPT09ZCYmYi5zcG90TGVuZ3RoPT09cCYmYi5yZWN0QXJlYUxlbmd0aD09PW0mJmIuaGVtaUxlbmd0aD09PWYmJmIubnVtRGlyZWN0aW9uYWxTaGFkb3dzPT09dSYmYi5udW1Qb2ludFNoYWRvd3M9PT1nJiZiLm51bVNwb3RTaGFkb3dzPT09aHx8KGEuZGlyZWN0aW9uYWwubGVuZ3RoPWMsYS5zcG90Lmxlbmd0aD1wLGEucmVjdEFyZWEubGVuZ3RoPW0sYS5wb2ludC5sZW5ndGg9ZCxhLmhlbWkubGVuZ3RoPWYsYS5kaXJlY3Rpb25hbFNoYWRvdy5sZW5ndGg9dSxhLmRpcmVjdGlvbmFsU2hhZG93TWFwLmxlbmd0aD11LGEucG9pbnRTaGFkb3cubGVuZ3RoPWcsYS5wb2ludFNoYWRvd01hcC5sZW5ndGg9ZyxhLnNwb3RTaGFkb3cubGVuZ3RoPWgsYS5zcG90U2hhZG93TWFwLmxlbmd0aD1oLGEuZGlyZWN0aW9uYWxTaGFkb3dNYXRyaXgubGVuZ3RoPXUsYS5wb2ludFNoYWRvd01hdHJpeC5sZW5ndGg9ZyxhLnNwb3RTaGFkb3dNYXRyaXgubGVuZ3RoPWgsYi5kaXJlY3Rpb25hbExlbmd0aD1jLGIucG9pbnRMZW5ndGg9ZCxiLnNwb3RMZW5ndGg9cCxiLnJlY3RBcmVhTGVuZ3RoPW0sYi5oZW1pTGVuZ3RoPWYsYi5udW1EaXJlY3Rpb25hbFNoYWRvd3M9dSxiLm51bVBvaW50U2hhZG93cz1nLGIubnVtU3BvdFNoYWRvd3M9aCxhLnZlcnNpb249Q210KyspfSxzZXR1cFZpZXc6ZnVuY3Rpb24gZCh0LGUpe2xldCBuPTAsbz0wLGk9MCxjPTAsZD0wO2NvbnN0IHA9ZS5tYXRyaXhXb3JsZEludmVyc2U7Zm9yKGxldCBlPTAsbT10Lmxlbmd0aDtlPG07ZSsrKXtjb25zdCBtPXRbZV07aWYobS5pc0RpcmVjdGlvbmFsTGlnaHQpe2NvbnN0IHQ9YS5kaXJlY3Rpb25hbFtuXTt0LmRpcmVjdGlvbi5zZXRGcm9tTWF0cml4UG9zaXRpb24obS5tYXRyaXhXb3JsZCksci5zZXRGcm9tTWF0cml4UG9zaXRpb24obS50YXJnZXQubWF0cml4V29ybGQpLHQuZGlyZWN0aW9uLnN1YihyKSx0LmRpcmVjdGlvbi50cmFuc2Zvcm1EaXJlY3Rpb24ocCksbisrfWVsc2UgaWYobS5pc1Nwb3RMaWdodCl7Y29uc3QgdD1hLnNwb3RbaV07dC5wb3NpdGlvbi5zZXRGcm9tTWF0cml4UG9zaXRpb24obS5tYXRyaXhXb3JsZCksdC5wb3NpdGlvbi5hcHBseU1hdHJpeDQocCksdC5kaXJlY3Rpb24uc2V0RnJvbU1hdHJpeFBvc2l0aW9uKG0ubWF0cml4V29ybGQpLHIuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKG0udGFyZ2V0Lm1hdHJpeFdvcmxkKSx0LmRpcmVjdGlvbi5zdWIociksdC5kaXJlY3Rpb24udHJhbnNmb3JtRGlyZWN0aW9uKHApLGkrK31lbHNlIGlmKG0uaXNSZWN0QXJlYUxpZ2h0KXtjb25zdCB0PWEucmVjdEFyZWFbY107dC5wb3NpdGlvbi5zZXRGcm9tTWF0cml4UG9zaXRpb24obS5tYXRyaXhXb3JsZCksdC5wb3NpdGlvbi5hcHBseU1hdHJpeDQocCksbC5pZGVudGl0eSgpLHMuY29weShtLm1hdHJpeFdvcmxkKSxzLnByZW11bHRpcGx5KHApLGwuZXh0cmFjdFJvdGF0aW9uKHMpLHQuaGFsZldpZHRoLnNldCguNSptLndpZHRoLDAsMCksdC5oYWxmSGVpZ2h0LnNldCgwLC41Km0uaGVpZ2h0LDApLHQuaGFsZldpZHRoLmFwcGx5TWF0cml4NChsKSx0LmhhbGZIZWlnaHQuYXBwbHlNYXRyaXg0KGwpLGMrK31lbHNlIGlmKG0uaXNQb2ludExpZ2h0KXtjb25zdCB0PWEucG9pbnRbb107dC5wb3NpdGlvbi5zZXRGcm9tTWF0cml4UG9zaXRpb24obS5tYXRyaXhXb3JsZCksdC5wb3NpdGlvbi5hcHBseU1hdHJpeDQocCksbysrfWVsc2UgaWYobS5pc0hlbWlzcGhlcmVMaWdodCl7Y29uc3QgdD1hLmhlbWlbZF07dC5kaXJlY3Rpb24uc2V0RnJvbU1hdHJpeFBvc2l0aW9uKG0ubWF0cml4V29ybGQpLHQuZGlyZWN0aW9uLnRyYW5zZm9ybURpcmVjdGlvbihwKSx0LmRpcmVjdGlvbi5ub3JtYWxpemUoKSxkKyt9fX0sc3RhdGU6YX19ZnVuY3Rpb24geG10KHQsZSl7Y29uc3Qgbj1uZXcgdm10KHQsZSksbz1bXSxpPVtdO3JldHVybntpbml0OmZ1bmN0aW9uIGEoKXtvLmxlbmd0aD0wLGkubGVuZ3RoPTB9LHN0YXRlOntsaWdodHNBcnJheTpvLHNoYWRvd3NBcnJheTppLGxpZ2h0czpufSxzZXR1cExpZ2h0czpmdW5jdGlvbiByKCl7bi5zZXR1cChvKX0sc2V0dXBMaWdodHNWaWV3OmZ1bmN0aW9uIHModCl7bi5zZXR1cFZpZXcobyx0KX0scHVzaExpZ2h0OmZ1bmN0aW9uIGwodCl7by5wdXNoKHQpfSxwdXNoU2hhZG93OmZ1bmN0aW9uIGModCl7aS5wdXNoKHQpfX19ZnVuY3Rpb24gT210KHQsZSl7bGV0IG49bmV3IFdlYWtNYXA7cmV0dXJue2dldDpmdW5jdGlvbiBvKGksYT0wKXtsZXQgcjtyZXR1cm4hMT09PW4uaGFzKGkpPyhyPW5ldyB4bXQodCxlKSxuLnNldChpLFtyXSkpOmE+PW4uZ2V0KGkpLmxlbmd0aD8ocj1uZXcgeG10KHQsZSksbi5nZXQoaSkucHVzaChyKSk6cj1uLmdldChpKVthXSxyfSxkaXNwb3NlOmZ1bmN0aW9uIGkoKXtuPW5ldyBXZWFrTWFwfX19Y2xhc3MgUG10IGV4dGVuZHMgVmx0e2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy50eXBlPSJNZXNoRGVwdGhNYXRlcmlhbCIsdGhpcy5kZXB0aFBhY2tpbmc9MzIwMCx0aGlzLm1hcD1udWxsLHRoaXMuYWxwaGFNYXA9bnVsbCx0aGlzLmRpc3BsYWNlbWVudE1hcD1udWxsLHRoaXMuZGlzcGxhY2VtZW50U2NhbGU9MSx0aGlzLmRpc3BsYWNlbWVudEJpYXM9MCx0aGlzLndpcmVmcmFtZT0hMSx0aGlzLndpcmVmcmFtZUxpbmV3aWR0aD0xLHRoaXMuZm9nPSExLHRoaXMuc2V0VmFsdWVzKHQpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5kZXB0aFBhY2tpbmc9dC5kZXB0aFBhY2tpbmcsdGhpcy5tYXA9dC5tYXAsdGhpcy5hbHBoYU1hcD10LmFscGhhTWFwLHRoaXMuZGlzcGxhY2VtZW50TWFwPXQuZGlzcGxhY2VtZW50TWFwLHRoaXMuZGlzcGxhY2VtZW50U2NhbGU9dC5kaXNwbGFjZW1lbnRTY2FsZSx0aGlzLmRpc3BsYWNlbWVudEJpYXM9dC5kaXNwbGFjZW1lbnRCaWFzLHRoaXMud2lyZWZyYW1lPXQud2lyZWZyYW1lLHRoaXMud2lyZWZyYW1lTGluZXdpZHRoPXQud2lyZWZyYW1lTGluZXdpZHRoLHRoaXN9fVBtdC5wcm90b3R5cGUuaXNNZXNoRGVwdGhNYXRlcmlhbD0hMDtjbGFzcyB3bXQgZXh0ZW5kcyBWbHR7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLnR5cGU9Ik1lc2hEaXN0YW5jZU1hdGVyaWFsIix0aGlzLnJlZmVyZW5jZVBvc2l0aW9uPW5ldyB3c3QsdGhpcy5uZWFyRGlzdGFuY2U9MSx0aGlzLmZhckRpc3RhbmNlPTFlMyx0aGlzLm1hcD1udWxsLHRoaXMuYWxwaGFNYXA9bnVsbCx0aGlzLmRpc3BsYWNlbWVudE1hcD1udWxsLHRoaXMuZGlzcGxhY2VtZW50U2NhbGU9MSx0aGlzLmRpc3BsYWNlbWVudEJpYXM9MCx0aGlzLmZvZz0hMSx0aGlzLnNldFZhbHVlcyh0KX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMucmVmZXJlbmNlUG9zaXRpb24uY29weSh0LnJlZmVyZW5jZVBvc2l0aW9uKSx0aGlzLm5lYXJEaXN0YW5jZT10Lm5lYXJEaXN0YW5jZSx0aGlzLmZhckRpc3RhbmNlPXQuZmFyRGlzdGFuY2UsdGhpcy5tYXA9dC5tYXAsdGhpcy5hbHBoYU1hcD10LmFscGhhTWFwLHRoaXMuZGlzcGxhY2VtZW50TWFwPXQuZGlzcGxhY2VtZW50TWFwLHRoaXMuZGlzcGxhY2VtZW50U2NhbGU9dC5kaXNwbGFjZW1lbnRTY2FsZSx0aGlzLmRpc3BsYWNlbWVudEJpYXM9dC5kaXNwbGFjZW1lbnRCaWFzLHRoaXN9fXdtdC5wcm90b3R5cGUuaXNNZXNoRGlzdGFuY2VNYXRlcmlhbD0hMDtmdW5jdGlvbiBrbXQodCxlLG4pe2xldCBvPW5ldyBxY3Q7Y29uc3QgaT1uZXcgZ3N0LGE9bmV3IGdzdCxyPW5ldyB2c3Qscz1uZXcgUG10KHtkZXB0aFBhY2tpbmc6MzIwMX0pLGw9bmV3IHdtdCxjPXt9LGQ9bi5tYXhUZXh0dXJlU2l6ZSxwPXswOjEsMTowLDI6Mn0sbT1uZXcgTmN0KHtkZWZpbmVzOntTQU1QTEVfUkFURToyLzgsSEFMRl9TQU1QTEVfUkFURToxLzh9LHVuaWZvcm1zOntzaGFkb3dfcGFzczp7dmFsdWU6bnVsbH0scmVzb2x1dGlvbjp7dmFsdWU6bmV3IGdzdH0scmFkaXVzOnt2YWx1ZTo0fX0sdmVydGV4U2hhZGVyOiJ2b2lkIG1haW4oKSB7XG5cdGdsX1Bvc2l0aW9uID0gdmVjNCggcG9zaXRpb24sIDEuMCApO1xufSIsZnJhZ21lbnRTaGFkZXI6InVuaWZvcm0gc2FtcGxlcjJEIHNoYWRvd19wYXNzO1xudW5pZm9ybSB2ZWMyIHJlc29sdXRpb247XG51bmlmb3JtIGZsb2F0IHJhZGl1cztcbiNpbmNsdWRlIDxwYWNraW5nPlxudm9pZCBtYWluKCkge1xuXHRmbG9hdCBtZWFuID0gMC4wO1xuXHRmbG9hdCBzcXVhcmVkX21lYW4gPSAwLjA7XG5cdGZsb2F0IGRlcHRoID0gdW5wYWNrUkdCQVRvRGVwdGgoIHRleHR1cmUyRCggc2hhZG93X3Bhc3MsICggZ2xfRnJhZ0Nvb3JkLnh5ICkgLyByZXNvbHV0aW9uICkgKTtcblx0Zm9yICggZmxvYXQgaSA9IC0xLjA7IGkgPCAxLjAgOyBpICs9IFNBTVBMRV9SQVRFKSB7XG5cdFx0I2lmZGVmIEhPUklaT05UQUxfUEFTU1xuXHRcdFx0dmVjMiBkaXN0cmlidXRpb24gPSB1bnBhY2tSR0JBVG8ySGFsZiggdGV4dHVyZTJEKCBzaGFkb3dfcGFzcywgKCBnbF9GcmFnQ29vcmQueHkgKyB2ZWMyKCBpLCAwLjAgKSAqIHJhZGl1cyApIC8gcmVzb2x1dGlvbiApICk7XG5cdFx0XHRtZWFuICs9IGRpc3RyaWJ1dGlvbi54O1xuXHRcdFx0c3F1YXJlZF9tZWFuICs9IGRpc3RyaWJ1dGlvbi55ICogZGlzdHJpYnV0aW9uLnkgKyBkaXN0cmlidXRpb24ueCAqIGRpc3RyaWJ1dGlvbi54O1xuXHRcdCNlbHNlXG5cdFx0XHRmbG9hdCBkZXB0aCA9IHVucGFja1JHQkFUb0RlcHRoKCB0ZXh0dXJlMkQoIHNoYWRvd19wYXNzLCAoIGdsX0ZyYWdDb29yZC54eSArIHZlYzIoIDAuMCwgaSApICogcmFkaXVzICkgLyByZXNvbHV0aW9uICkgKTtcblx0XHRcdG1lYW4gKz0gZGVwdGg7XG5cdFx0XHRzcXVhcmVkX21lYW4gKz0gZGVwdGggKiBkZXB0aDtcblx0XHQjZW5kaWZcblx0fVxuXHRtZWFuID0gbWVhbiAqIEhBTEZfU0FNUExFX1JBVEU7XG5cdHNxdWFyZWRfbWVhbiA9IHNxdWFyZWRfbWVhbiAqIEhBTEZfU0FNUExFX1JBVEU7XG5cdGZsb2F0IHN0ZF9kZXYgPSBzcXJ0KCBzcXVhcmVkX21lYW4gLSBtZWFuICogbWVhbiApO1xuXHRnbF9GcmFnQ29sb3IgPSBwYWNrMkhhbGZUb1JHQkEoIHZlYzIoIG1lYW4sIHN0ZF9kZXYgKSApO1xufSJ9KSxmPW0uY2xvbmUoKTtmLmRlZmluZXMuSE9SSVpPTlRBTF9QQVNTPTE7Y29uc3QgdT1uZXcgZGN0O3Uuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IFFsdChuZXcgRmxvYXQzMkFycmF5KFstMSwtMSwuNSwzLC0xLC41LC0xLDMsLjVdKSwzKSk7Y29uc3QgZz1uZXcgU2N0KHUsbSksaD10aGlzO2Z1bmN0aW9uIGIobixvKXtjb25zdCBpPWUudXBkYXRlKGcpO20udW5pZm9ybXMuc2hhZG93X3Bhc3MudmFsdWU9bi5tYXAudGV4dHVyZSxtLnVuaWZvcm1zLnJlc29sdXRpb24udmFsdWU9bi5tYXBTaXplLG0udW5pZm9ybXMucmFkaXVzLnZhbHVlPW4ucmFkaXVzLHQuc2V0UmVuZGVyVGFyZ2V0KG4ubWFwUGFzcyksdC5jbGVhcigpLHQucmVuZGVyQnVmZmVyRGlyZWN0KG8sbnVsbCxpLG0sZyxudWxsKSxmLnVuaWZvcm1zLnNoYWRvd19wYXNzLnZhbHVlPW4ubWFwUGFzcy50ZXh0dXJlLGYudW5pZm9ybXMucmVzb2x1dGlvbi52YWx1ZT1uLm1hcFNpemUsZi51bmlmb3Jtcy5yYWRpdXMudmFsdWU9bi5yYWRpdXMsdC5zZXRSZW5kZXJUYXJnZXQobi5tYXApLHQuY2xlYXIoKSx0LnJlbmRlckJ1ZmZlckRpcmVjdChvLG51bGwsaSxmLGcsbnVsbCl9ZnVuY3Rpb24geShlLG4sbyxpLGEscixkKXtsZXQgbT1udWxsO2NvbnN0IGY9ITA9PT1pLmlzUG9pbnRMaWdodD9lLmN1c3RvbURpc3RhbmNlTWF0ZXJpYWw6ZS5jdXN0b21EZXB0aE1hdGVyaWFsO2lmKG09dm9pZCAwIT09Zj9mOiEwPT09aS5pc1BvaW50TGlnaHQ/bDpzLHQubG9jYWxDbGlwcGluZ0VuYWJsZWQmJiEwPT09by5jbGlwU2hhZG93cyYmMCE9PW8uY2xpcHBpbmdQbGFuZXMubGVuZ3RoKXtjb25zdCB0PW0udXVpZCxlPW8udXVpZDtsZXQgbj1jW3RdO3ZvaWQgMD09PW4mJihuPXt9LGNbdF09bik7bGV0IGk9bltlXTt2b2lkIDA9PT1pJiYoaT1tLmNsb25lKCksbltlXT1pKSxtPWl9cmV0dXJuIG0udmlzaWJsZT1vLnZpc2libGUsbS53aXJlZnJhbWU9by53aXJlZnJhbWUsbS5zaWRlPTM9PT1kP251bGwhPT1vLnNoYWRvd1NpZGU/by5zaGFkb3dTaWRlOm8uc2lkZTpudWxsIT09by5zaGFkb3dTaWRlP28uc2hhZG93U2lkZTpwW28uc2lkZV0sbS5jbGlwU2hhZG93cz1vLmNsaXBTaGFkb3dzLG0uY2xpcHBpbmdQbGFuZXM9by5jbGlwcGluZ1BsYW5lcyxtLmNsaXBJbnRlcnNlY3Rpb249by5jbGlwSW50ZXJzZWN0aW9uLG0ud2lyZWZyYW1lTGluZXdpZHRoPW8ud2lyZWZyYW1lTGluZXdpZHRoLG0ubGluZXdpZHRoPW8ubGluZXdpZHRoLCEwPT09aS5pc1BvaW50TGlnaHQmJiEwPT09bS5pc01lc2hEaXN0YW5jZU1hdGVyaWFsJiYobS5yZWZlcmVuY2VQb3NpdGlvbi5zZXRGcm9tTWF0cml4UG9zaXRpb24oaS5tYXRyaXhXb3JsZCksbS5uZWFyRGlzdGFuY2U9YSxtLmZhckRpc3RhbmNlPXIpLG19ZnVuY3Rpb24gXyhuLGksYSxyLHMpe2lmKCExPT09bi52aXNpYmxlKXJldHVybjtpZihuLmxheWVycy50ZXN0KGkubGF5ZXJzKSYmKG4uaXNNZXNofHxuLmlzTGluZXx8bi5pc1BvaW50cykmJihuLmNhc3RTaGFkb3d8fG4ucmVjZWl2ZVNoYWRvdyYmMz09PXMpJiYoIW4uZnJ1c3R1bUN1bGxlZHx8by5pbnRlcnNlY3RzT2JqZWN0KG4pKSl7bi5tb2RlbFZpZXdNYXRyaXgubXVsdGlwbHlNYXRyaWNlcyhhLm1hdHJpeFdvcmxkSW52ZXJzZSxuLm1hdHJpeFdvcmxkKTtjb25zdCBvPWUudXBkYXRlKG4pLGk9bi5tYXRlcmlhbDtpZihBcnJheS5pc0FycmF5KGkpKXtjb25zdCBlPW8uZ3JvdXBzO2ZvcihsZXQgbD0wLGM9ZS5sZW5ndGg7bDxjO2wrKyl7Y29uc3QgYz1lW2xdLGQ9aVtjLm1hdGVyaWFsSW5kZXhdO2lmKGQmJmQudmlzaWJsZSl7Y29uc3QgZT15KG4sMCxkLHIsYS5uZWFyLGEuZmFyLHMpO3QucmVuZGVyQnVmZmVyRGlyZWN0KGEsbnVsbCxvLGUsbixjKX19fWVsc2UgaWYoaS52aXNpYmxlKXtjb25zdCBlPXkobiwwLGkscixhLm5lYXIsYS5mYXIscyk7dC5yZW5kZXJCdWZmZXJEaXJlY3QoYSxudWxsLG8sZSxuLG51bGwpfX1jb25zdCBsPW4uY2hpbGRyZW47Zm9yKGxldCB0PTAsZT1sLmxlbmd0aDt0PGU7dCsrKV8obFt0XSxpLGEscixzKX10aGlzLmVuYWJsZWQ9ITEsdGhpcy5hdXRvVXBkYXRlPSEwLHRoaXMubmVlZHNVcGRhdGU9ITEsdGhpcy50eXBlPTEsdGhpcy5yZW5kZXI9ZnVuY3Rpb24oZSxuLHMpe2lmKCExPT09aC5lbmFibGVkKXJldHVybjtpZighMT09PWguYXV0b1VwZGF0ZSYmITE9PT1oLm5lZWRzVXBkYXRlKXJldHVybjtpZigwPT09ZS5sZW5ndGgpcmV0dXJuO2NvbnN0IGw9dC5nZXRSZW5kZXJUYXJnZXQoKSxjPXQuZ2V0QWN0aXZlQ3ViZUZhY2UoKSxwPXQuZ2V0QWN0aXZlTWlwbWFwTGV2ZWwoKSxtPXQuc3RhdGU7bS5zZXRCbGVuZGluZygwKSxtLmJ1ZmZlcnMuY29sb3Iuc2V0Q2xlYXIoMSwxLDEsMSksbS5idWZmZXJzLmRlcHRoLnNldFRlc3QoITApLG0uc2V0U2Npc3NvclRlc3QoITEpO2ZvcihsZXQgbD0wLGM9ZS5sZW5ndGg7bDxjO2wrKyl7Y29uc3QgYz1lW2xdLHA9Yy5zaGFkb3c7aWYodm9pZCAwPT09cCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFNoYWRvd01hcDoiLGMsImhhcyBubyBzaGFkb3cuIik7Y29udGludWV9aWYoITE9PT1wLmF1dG9VcGRhdGUmJiExPT09cC5uZWVkc1VwZGF0ZSljb250aW51ZTtpLmNvcHkocC5tYXBTaXplKTtjb25zdCBmPXAuZ2V0RnJhbWVFeHRlbnRzKCk7aWYoaS5tdWx0aXBseShmKSxhLmNvcHkocC5tYXBTaXplKSwoaS54PmR8fGkueT5kKSYmKGkueD5kJiYoYS54PU1hdGguZmxvb3IoZC9mLngpLGkueD1hLngqZi54LHAubWFwU2l6ZS54PWEueCksaS55PmQmJihhLnk9TWF0aC5mbG9vcihkL2YueSksaS55PWEueSpmLnkscC5tYXBTaXplLnk9YS55KSksbnVsbD09PXAubWFwJiYhcC5pc1BvaW50TGlnaHRTaGFkb3cmJjM9PT10aGlzLnR5cGUpe2NvbnN0IHQ9e21pbkZpbHRlcjpUcnQsbWFnRmlsdGVyOlRydCxmb3JtYXQ6anJ0fTtwLm1hcD1uZXcgeHN0KGkueCxpLnksdCkscC5tYXAudGV4dHVyZS5uYW1lPWMubmFtZSsiLnNoYWRvd01hcCIscC5tYXBQYXNzPW5ldyB4c3QoaS54LGkueSx0KSxwLmNhbWVyYS51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCl9aWYobnVsbD09PXAubWFwKXtwLm1hcD1uZXcgeHN0KGkueCxpLnkse21pbkZpbHRlcjpBcnQsbWFnRmlsdGVyOkFydCxmb3JtYXQ6anJ0fSkscC5tYXAudGV4dHVyZS5uYW1lPWMubmFtZSsiLnNoYWRvd01hcCIscC5jYW1lcmEudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpfXQuc2V0UmVuZGVyVGFyZ2V0KHAubWFwKSx0LmNsZWFyKCk7Y29uc3QgdT1wLmdldFZpZXdwb3J0Q291bnQoKTtmb3IobGV0IHQ9MDt0PHU7dCsrKXtjb25zdCBlPXAuZ2V0Vmlld3BvcnQodCk7ci5zZXQoYS54KmUueCxhLnkqZS55LGEueCplLnosYS55KmUudyksbS52aWV3cG9ydChyKSxwLnVwZGF0ZU1hdHJpY2VzKGMsdCksbz1wLmdldEZydXN0dW0oKSxfKG4scyxwLmNhbWVyYSxjLHRoaXMudHlwZSl9cC5pc1BvaW50TGlnaHRTaGFkb3d8fDMhPT10aGlzLnR5cGV8fGIocCxzKSxwLm5lZWRzVXBkYXRlPSExfWgubmVlZHNVcGRhdGU9ITEsdC5zZXRSZW5kZXJUYXJnZXQobCxjLHApfX1mdW5jdGlvbiBTbXQodCxlLG4pe2NvbnN0IG89bi5pc1dlYkdMMjtjb25zdCBpPW5ldyhmdW5jdGlvbiBhKCl7bGV0IGU9ITE7Y29uc3Qgbj1uZXcgdnN0O2xldCBvPW51bGw7Y29uc3QgaT1uZXcgdnN0KDAsMCwwLDApO3JldHVybntzZXRNYXNrOmZ1bmN0aW9uKG4pe289PT1ufHxlfHwodC5jb2xvck1hc2sobixuLG4sbiksbz1uKX0sc2V0TG9ja2VkOmZ1bmN0aW9uKHQpe2U9dH0sc2V0Q2xlYXI6ZnVuY3Rpb24oZSxvLGEscixzKXshMD09PXMmJihlKj1yLG8qPXIsYSo9ciksbi5zZXQoZSxvLGEsciksITE9PT1pLmVxdWFscyhuKSYmKHQuY2xlYXJDb2xvcihlLG8sYSxyKSxpLmNvcHkobikpfSxyZXNldDpmdW5jdGlvbigpe2U9ITEsbz1udWxsLGkuc2V0KC0xLDAsMCwwKX19fSkscj1uZXcoZnVuY3Rpb24gcygpe2xldCBlPSExLG49bnVsbCxvPW51bGwsaT1udWxsO3JldHVybntzZXRUZXN0OmZ1bmN0aW9uKHQpe3Q/QigyOTI5KTpWKDI5MjkpfSxzZXRNYXNrOmZ1bmN0aW9uKG8pe249PT1vfHxlfHwodC5kZXB0aE1hc2sobyksbj1vKX0sc2V0RnVuYzpmdW5jdGlvbihlKXtpZihvIT09ZSl7aWYoZSlzd2l0Y2goZSl7Y2FzZSAwOnQuZGVwdGhGdW5jKDUxMik7YnJlYWs7Y2FzZSAxOnQuZGVwdGhGdW5jKDUxOSk7YnJlYWs7Y2FzZSAyOnQuZGVwdGhGdW5jKDUxMyk7YnJlYWs7Y2FzZSAzOnQuZGVwdGhGdW5jKDUxNSk7YnJlYWs7Y2FzZSA0OnQuZGVwdGhGdW5jKDUxNCk7YnJlYWs7Y2FzZSA1OnQuZGVwdGhGdW5jKDUxOCk7YnJlYWs7Y2FzZSA2OnQuZGVwdGhGdW5jKDUxNik7YnJlYWs7Y2FzZSA3OnQuZGVwdGhGdW5jKDUxNyk7YnJlYWs7ZGVmYXVsdDp0LmRlcHRoRnVuYyg1MTUpfWVsc2UgdC5kZXB0aEZ1bmMoNTE1KTtvPWV9fSxzZXRMb2NrZWQ6ZnVuY3Rpb24odCl7ZT10fSxzZXRDbGVhcjpmdW5jdGlvbihlKXtpIT09ZSYmKHQuY2xlYXJEZXB0aChlKSxpPWUpfSxyZXNldDpmdW5jdGlvbigpe2U9ITEsbj1udWxsLG89bnVsbCxpPW51bGx9fX0pLGw9bmV3KGZ1bmN0aW9uIGMoKXtsZXQgZT0hMSxuPW51bGwsbz1udWxsLGk9bnVsbCxhPW51bGwscj1udWxsLHM9bnVsbCxsPW51bGwsYz1udWxsO3JldHVybntzZXRUZXN0OmZ1bmN0aW9uKHQpe2V8fCh0P0IoMjk2MCk6VigyOTYwKSl9LHNldE1hc2s6ZnVuY3Rpb24obyl7bj09PW98fGV8fCh0LnN0ZW5jaWxNYXNrKG8pLG49byl9LHNldEZ1bmM6ZnVuY3Rpb24oZSxuLHIpe289PT1lJiZpPT09biYmYT09PXJ8fCh0LnN0ZW5jaWxGdW5jKGUsbixyKSxvPWUsaT1uLGE9cil9LHNldE9wOmZ1bmN0aW9uKGUsbixvKXtyPT09ZSYmcz09PW4mJmw9PT1vfHwodC5zdGVuY2lsT3AoZSxuLG8pLHI9ZSxzPW4sbD1vKX0sc2V0TG9ja2VkOmZ1bmN0aW9uKHQpe2U9dH0sc2V0Q2xlYXI6ZnVuY3Rpb24oZSl7YyE9PWUmJih0LmNsZWFyU3RlbmNpbChlKSxjPWUpfSxyZXNldDpmdW5jdGlvbigpe2U9ITEsbj1udWxsLG89bnVsbCxpPW51bGwsYT1udWxsLHI9bnVsbCxzPW51bGwsbD1udWxsLGM9bnVsbH19fSk7bGV0IGQ9e30scD1udWxsLG09e30sZj1udWxsLHU9ITEsZz1udWxsLGg9bnVsbCxiPW51bGwseT1udWxsLF89bnVsbCxDPW51bGwsTT1udWxsLHY9ITEseD1udWxsLE89bnVsbCxQPW51bGwsdz1udWxsLGs9bnVsbDtjb25zdCBTPXQuZ2V0UGFyYW1ldGVyKDM1NjYxKTtsZXQgRD0hMSxSPTA7Y29uc3QgRT10LmdldFBhcmFtZXRlcig3OTM4KTstMSE9PUUuaW5kZXhPZigiV2ViR0wiKT8oUj1wYXJzZUZsb2F0KC9eV2ViR0wgKFxkKS8uZXhlYyhFKVsxXSksRD1SPj0xKTotMSE9PUUuaW5kZXhPZigiT3BlbkdMIEVTIikmJihSPXBhcnNlRmxvYXQoL15PcGVuR0wgRVMgKFxkKS8uZXhlYyhFKVsxXSksRD1SPj0yKTtsZXQgQT1udWxsLFQ9e307Y29uc3QgTj10LmdldFBhcmFtZXRlcigzMDg4KSx6PXQuZ2V0UGFyYW1ldGVyKDI5NzgpLEk9KG5ldyB2c3QpLmZyb21BcnJheShOKSxIPShuZXcgdnN0KS5mcm9tQXJyYXkoeik7ZnVuY3Rpb24gRihlLG4sbyl7Y29uc3QgaT1uZXcgVWludDhBcnJheSg0KSxhPXQuY3JlYXRlVGV4dHVyZSgpO3QuYmluZFRleHR1cmUoZSxhKSx0LnRleFBhcmFtZXRlcmkoZSwxMDI0MSw5NzI4KSx0LnRleFBhcmFtZXRlcmkoZSwxMDI0MCw5NzI4KTtmb3IobGV0IGU9MDtlPG87ZSsrKXQudGV4SW1hZ2UyRChuK2UsMCw2NDA4LDEsMSwwLDY0MDgsNTEyMSxpKTtyZXR1cm4gYX1jb25zdCBMPXt9O2Z1bmN0aW9uIEIoZSl7ITAhPT1kW2VdJiYodC5lbmFibGUoZSksZFtlXT0hMCl9ZnVuY3Rpb24gVihlKXshMSE9PWRbZV0mJih0LmRpc2FibGUoZSksZFtlXT0hMSl9TFszNTUzXT1GKDM1NTMsMzU1MywxKSxMWzM0MDY3XT1GKDM0MDY3LDM0MDY5LDYpLGkuc2V0Q2xlYXIoMCwwLDAsMSksci5zZXRDbGVhcigxKSxsLnNldENsZWFyKDApLEIoMjkyOSksci5zZXRGdW5jKDMpLEcoITEpLFkoMSksQigyODg0KSxXKDApO2NvbnN0IGo9e1tQcnRdOjMyNzc0LDEwMTozMjc3OCwxMDI6MzI3Nzl9O2lmKG8palsxMDNdPTMyNzc1LGpbMTA0XT0zMjc3NjtlbHNle2NvbnN0IHQ9ZS5nZXQoIkVYVF9ibGVuZF9taW5tYXgiKTtudWxsIT09dCYmKGpbMTAzXT10Lk1JTl9FWFQsalsxMDRdPXQuTUFYX0VYVCl9Y29uc3QgVT17MjAwOjAsMjAxOjEsMjAyOjc2OCwyMDQ6NzcwLDIxMDo3NzYsMjA4Ojc3NCwyMDY6NzcyLDIwMzo3NjksMjA1Ojc3MSwyMDk6Nzc1LDIwNzo3NzN9O2Z1bmN0aW9uIFcoZSxuLG8saSxhLHIscyxsKXtpZigwIT09ZSl7aWYoITE9PT11JiYoQigzMDQyKSx1PSEwKSw1PT09ZSlhPWF8fG4scj1yfHxvLHM9c3x8aSxuPT09aCYmYT09PV98fCh0LmJsZW5kRXF1YXRpb25TZXBhcmF0ZShqW25dLGpbYV0pLGg9bixfPWEpLG89PT1iJiZpPT09eSYmcj09PUMmJnM9PT1NfHwodC5ibGVuZEZ1bmNTZXBhcmF0ZShVW29dLFVbaV0sVVtyXSxVW3NdKSxiPW8seT1pLEM9cixNPXMpLGc9ZSx2PW51bGw7ZWxzZSBpZihlIT09Z3x8bCE9PXYpe2lmKGg9PT1QcnQmJl89PT1QcnR8fCh0LmJsZW5kRXF1YXRpb24oMzI3NzQpLGg9UHJ0LF89UHJ0KSxsKXN3aXRjaChlKXtjYXNlIDE6dC5ibGVuZEZ1bmNTZXBhcmF0ZSgxLDc3MSwxLDc3MSk7YnJlYWs7Y2FzZSAyOnQuYmxlbmRGdW5jKDEsMSk7YnJlYWs7Y2FzZSAzOnQuYmxlbmRGdW5jU2VwYXJhdGUoMCwwLDc2OSw3NzEpO2JyZWFrO2Nhc2UgNDp0LmJsZW5kRnVuY1NlcGFyYXRlKDAsNzY4LDAsNzcwKTticmVhaztkZWZhdWx0OmNvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMU3RhdGU6IEludmFsaWQgYmxlbmRpbmc6ICIsZSl9ZWxzZSBzd2l0Y2goZSl7Y2FzZSAxOnQuYmxlbmRGdW5jU2VwYXJhdGUoNzcwLDc3MSwxLDc3MSk7YnJlYWs7Y2FzZSAyOnQuYmxlbmRGdW5jKDc3MCwxKTticmVhaztjYXNlIDM6dC5ibGVuZEZ1bmMoMCw3NjkpO2JyZWFrO2Nhc2UgNDp0LmJsZW5kRnVuYygwLDc2OCk7YnJlYWs7ZGVmYXVsdDpjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFN0YXRlOiBJbnZhbGlkIGJsZW5kaW5nOiAiLGUpfWI9bnVsbCx5PW51bGwsQz1udWxsLE09bnVsbCxnPWUsdj1sfX1lbHNlITA9PT11JiYoVigzMDQyKSx1PSExKX1mdW5jdGlvbiBHKGUpe3ghPT1lJiYodC5mcm9udEZhY2UoZT8yMzA0OjIzMDUpLHg9ZSl9ZnVuY3Rpb24gWShlKXswIT09ZT8oQigyODg0KSxlIT09TyYmdC5jdWxsRmFjZSgxPT09ZT8xMDI5OjI9PT1lPzEwMjg6MTAzMikpOlYoMjg4NCksTz1lfWZ1bmN0aW9uIHEoZSxuLG8pe2U/KEIoMzI4MjMpLHc9PT1uJiZrPT09b3x8KHQucG9seWdvbk9mZnNldChuLG8pLHc9bixrPW8pKTpWKDMyODIzKX1mdW5jdGlvbiBaKGUpe3ZvaWQgMD09PWUmJihlPTMzOTg0K1MtMSksQSE9PWUmJih0LmFjdGl2ZVRleHR1cmUoZSksQT1lKX1yZXR1cm57YnVmZmVyczp7Y29sb3I6aSxkZXB0aDpyLHN0ZW5jaWw6bH0sZW5hYmxlOkIsZGlzYWJsZTpWLGJpbmRGcmFtZWJ1ZmZlcjpmdW5jdGlvbiBYKGUsbil7cmV0dXJuIG51bGw9PT1uJiZudWxsIT09cCYmKG49cCksbVtlXSE9PW4mJih0LmJpbmRGcmFtZWJ1ZmZlcihlLG4pLG1bZV09bixvJiYoMzYwMDk9PT1lJiYobVszNjE2MF09biksMzYxNjA9PT1lJiYobVszNjAwOV09bikpLCEwKX0sYmluZFhSRnJhbWVidWZmZXI6ZnVuY3Rpb24gSyhlKXtlIT09cCYmKHQuYmluZEZyYW1lYnVmZmVyKDM2MTYwLGUpLHA9ZSl9LHVzZVByb2dyYW06ZnVuY3Rpb24gSihlKXtyZXR1cm4gZiE9PWUmJih0LnVzZVByb2dyYW0oZSksZj1lLCEwKX0sc2V0QmxlbmRpbmc6VyxzZXRNYXRlcmlhbDpmdW5jdGlvbiBRKHQsZSl7Mj09PXQuc2lkZT9WKDI4ODQpOkIoMjg4NCk7bGV0IG49MT09PXQuc2lkZTtlJiYobj0hbiksRyhuKSwxPT09dC5ibGVuZGluZyYmITE9PT10LnRyYW5zcGFyZW50P1coMCk6Vyh0LmJsZW5kaW5nLHQuYmxlbmRFcXVhdGlvbix0LmJsZW5kU3JjLHQuYmxlbmREc3QsdC5ibGVuZEVxdWF0aW9uQWxwaGEsdC5ibGVuZFNyY0FscGhhLHQuYmxlbmREc3RBbHBoYSx0LnByZW11bHRpcGxpZWRBbHBoYSksci5zZXRGdW5jKHQuZGVwdGhGdW5jKSxyLnNldFRlc3QodC5kZXB0aFRlc3QpLHIuc2V0TWFzayh0LmRlcHRoV3JpdGUpLGkuc2V0TWFzayh0LmNvbG9yV3JpdGUpO2NvbnN0IG89dC5zdGVuY2lsV3JpdGU7bC5zZXRUZXN0KG8pLG8mJihsLnNldE1hc2sodC5zdGVuY2lsV3JpdGVNYXNrKSxsLnNldEZ1bmModC5zdGVuY2lsRnVuYyx0LnN0ZW5jaWxSZWYsdC5zdGVuY2lsRnVuY01hc2spLGwuc2V0T3AodC5zdGVuY2lsRmFpbCx0LnN0ZW5jaWxaRmFpbCx0LnN0ZW5jaWxaUGFzcykpLHEodC5wb2x5Z29uT2Zmc2V0LHQucG9seWdvbk9mZnNldEZhY3Rvcix0LnBvbHlnb25PZmZzZXRVbml0cyksITA9PT10LmFscGhhVG9Db3ZlcmFnZT9CKDMyOTI2KTpWKDMyOTI2KX0sc2V0RmxpcFNpZGVkOkcsc2V0Q3VsbEZhY2U6WSxzZXRMaW5lV2lkdGg6ZnVuY3Rpb24gJChlKXtlIT09UCYmKEQmJnQubGluZVdpZHRoKGUpLFA9ZSl9LHNldFBvbHlnb25PZmZzZXQ6cSxzZXRTY2lzc29yVGVzdDpmdW5jdGlvbiB0dCh0KXt0P0IoMzA4OSk6VigzMDg5KX0sYWN0aXZlVGV4dHVyZTpaLGJpbmRUZXh0dXJlOmZ1bmN0aW9uIGV0KGUsbil7bnVsbD09PUEmJlooKTtsZXQgbz1UW0FdO3ZvaWQgMD09PW8mJihvPXt0eXBlOnZvaWQgMCx0ZXh0dXJlOnZvaWQgMH0sVFtBXT1vKSxvLnR5cGU9PT1lJiZvLnRleHR1cmU9PT1ufHwodC5iaW5kVGV4dHVyZShlLG58fExbZV0pLG8udHlwZT1lLG8udGV4dHVyZT1uKX0sdW5iaW5kVGV4dHVyZTpmdW5jdGlvbiBudCgpe2NvbnN0IGU9VFtBXTt2b2lkIDAhPT1lJiZ2b2lkIDAhPT1lLnR5cGUmJih0LmJpbmRUZXh0dXJlKGUudHlwZSxudWxsKSxlLnR5cGU9dm9pZCAwLGUudGV4dHVyZT12b2lkIDApfSxjb21wcmVzc2VkVGV4SW1hZ2UyRDpmdW5jdGlvbiBvdCgpe3RyeXt0LmNvbXByZXNzZWRUZXhJbWFnZTJELmFwcGx5KHQsYXJndW1lbnRzKX1jYXRjaCh0KXtjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFN0YXRlOiIsdCl9fSx0ZXhJbWFnZTJEOmZ1bmN0aW9uIGl0KCl7dHJ5e3QudGV4SW1hZ2UyRC5hcHBseSh0LGFyZ3VtZW50cyl9Y2F0Y2godCl7Y29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xTdGF0ZToiLHQpfX0sdGV4SW1hZ2UzRDpmdW5jdGlvbiBhdCgpe3RyeXt0LnRleEltYWdlM0QuYXBwbHkodCxhcmd1bWVudHMpfWNhdGNoKHQpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMU3RhdGU6Iix0KX19LHNjaXNzb3I6ZnVuY3Rpb24gcnQoZSl7ITE9PT1JLmVxdWFscyhlKSYmKHQuc2Npc3NvcihlLngsZS55LGUueixlLncpLEkuY29weShlKSl9LHZpZXdwb3J0OmZ1bmN0aW9uIHN0KGUpeyExPT09SC5lcXVhbHMoZSkmJih0LnZpZXdwb3J0KGUueCxlLnksZS56LGUudyksSC5jb3B5KGUpKX0scmVzZXQ6ZnVuY3Rpb24gbHQoKXt0LmRpc2FibGUoMzA0MiksdC5kaXNhYmxlKDI4ODQpLHQuZGlzYWJsZSgyOTI5KSx0LmRpc2FibGUoMzI4MjMpLHQuZGlzYWJsZSgzMDg5KSx0LmRpc2FibGUoMjk2MCksdC5kaXNhYmxlKDMyOTI2KSx0LmJsZW5kRXF1YXRpb24oMzI3NzQpLHQuYmxlbmRGdW5jKDEsMCksdC5ibGVuZEZ1bmNTZXBhcmF0ZSgxLDAsMSwwKSx0LmNvbG9yTWFzayghMCwhMCwhMCwhMCksdC5jbGVhckNvbG9yKDAsMCwwLDApLHQuZGVwdGhNYXNrKCEwKSx0LmRlcHRoRnVuYyg1MTMpLHQuY2xlYXJEZXB0aCgxKSx0LnN0ZW5jaWxNYXNrKDQyOTQ5NjcyOTUpLHQuc3RlbmNpbEZ1bmMoNTE5LDAsNDI5NDk2NzI5NSksdC5zdGVuY2lsT3AoNzY4MCw3NjgwLDc2ODApLHQuY2xlYXJTdGVuY2lsKDApLHQuY3VsbEZhY2UoMTAyOSksdC5mcm9udEZhY2UoMjMwNSksdC5wb2x5Z29uT2Zmc2V0KDAsMCksdC5hY3RpdmVUZXh0dXJlKDMzOTg0KSx0LmJpbmRGcmFtZWJ1ZmZlcigzNjE2MCxudWxsKSwhMD09PW8mJih0LmJpbmRGcmFtZWJ1ZmZlcigzNjAwOSxudWxsKSx0LmJpbmRGcmFtZWJ1ZmZlcigzNjAwOCxudWxsKSksdC51c2VQcm9ncmFtKG51bGwpLHQubGluZVdpZHRoKDEpLHQuc2Npc3NvcigwLDAsdC5jYW52YXMud2lkdGgsdC5jYW52YXMuaGVpZ2h0KSx0LnZpZXdwb3J0KDAsMCx0LmNhbnZhcy53aWR0aCx0LmNhbnZhcy5oZWlnaHQpLGQ9e30sQT1udWxsLFQ9e30scD1udWxsLG09e30sZj1udWxsLHU9ITEsZz1udWxsLGg9bnVsbCxiPW51bGwseT1udWxsLF89bnVsbCxDPW51bGwsTT1udWxsLHY9ITEseD1udWxsLE89bnVsbCxQPW51bGwsdz1udWxsLGs9bnVsbCxJLnNldCgwLDAsdC5jYW52YXMud2lkdGgsdC5jYW52YXMuaGVpZ2h0KSxILnNldCgwLDAsdC5jYW52YXMud2lkdGgsdC5jYW52YXMuaGVpZ2h0KSxpLnJlc2V0KCksci5yZXNldCgpLGwucmVzZXQoKX19fWZ1bmN0aW9uIERtdCh0LGUsbixvLGksYSxyKXtjb25zdCBzPWkuaXNXZWJHTDIsbD1pLm1heFRleHR1cmVzLGM9aS5tYXhDdWJlbWFwU2l6ZSxkPWkubWF4VGV4dHVyZVNpemUscD1pLm1heFNhbXBsZXMsbT1uZXcgV2Vha01hcDtsZXQgZix1PSExO3RyeXt1PSJ1bmRlZmluZWQiIT10eXBlb2YgT2Zmc2NyZWVuQ2FudmFzJiZudWxsIT09bmV3IE9mZnNjcmVlbkNhbnZhcygxLDEpLmdldENvbnRleHQoIjJkIil9Y2F0Y2godCl7fWZ1bmN0aW9uIGcodCxlKXtyZXR1cm4gdT9uZXcgT2Zmc2NyZWVuQ2FudmFzKHQsZSk6ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiwiY2FudmFzIil9ZnVuY3Rpb24gaCh0LGUsbixvKXtsZXQgaT0xO2lmKCh0LndpZHRoPm98fHQuaGVpZ2h0Pm8pJiYoaT1vL01hdGgubWF4KHQud2lkdGgsdC5oZWlnaHQpKSxpPDF8fCEwPT09ZSl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBIVE1MSW1hZ2VFbGVtZW50JiZ0IGluc3RhbmNlb2YgSFRNTEltYWdlRWxlbWVudHx8InVuZGVmaW5lZCIhPXR5cGVvZiBIVE1MQ2FudmFzRWxlbWVudCYmdCBpbnN0YW5jZW9mIEhUTUxDYW52YXNFbGVtZW50fHwidW5kZWZpbmVkIiE9dHlwZW9mIEltYWdlQml0bWFwJiZ0IGluc3RhbmNlb2YgSW1hZ2VCaXRtYXApe2NvbnN0IG89ZT91c3Q6TWF0aC5mbG9vcixhPW8oaSp0LndpZHRoKSxyPW8oaSp0LmhlaWdodCk7dm9pZCAwPT09ZiYmKGY9ZyhhLHIpKTtjb25zdCBzPW4/ZyhhLHIpOmY7cy53aWR0aD1hLHMuaGVpZ2h0PXI7cmV0dXJuIHMuZ2V0Q29udGV4dCgiMmQiKS5kcmF3SW1hZ2UodCwwLDAsYSxyKSxjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IFRleHR1cmUgaGFzIGJlZW4gcmVzaXplZCBmcm9tICgiK3Qud2lkdGgrIngiK3QuaGVpZ2h0KyIpIHRvICgiK2ErIngiK3IrIikuIiksc31yZXR1cm4iZGF0YSJpbiB0JiZjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IEltYWdlIGluIERhdGFUZXh0dXJlIGlzIHRvbyBiaWcgKCIrdC53aWR0aCsieCIrdC5oZWlnaHQrIikuIiksdH1yZXR1cm4gdH1mdW5jdGlvbiBiKHQpe3JldHVybiBmc3QodC53aWR0aCkmJmZzdCh0LmhlaWdodCl9ZnVuY3Rpb24geSh0LGUpe3JldHVybiB0LmdlbmVyYXRlTWlwbWFwcyYmZSYmdC5taW5GaWx0ZXIhPT1BcnQmJnQubWluRmlsdGVyIT09VHJ0fWZ1bmN0aW9uIF8oZSxuLGksYSxyPTEpe3QuZ2VuZXJhdGVNaXBtYXAoZSk7by5nZXQobikuX19tYXhNaXBMZXZlbD1NYXRoLmxvZzIoTWF0aC5tYXgoaSxhLHIpKX1mdW5jdGlvbiBDKG4sbyxpKXtpZighMT09PXMpcmV0dXJuIG87aWYobnVsbCE9PW4pe2lmKHZvaWQgMCE9PXRbbl0pcmV0dXJuIHRbbl07Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBBdHRlbXB0IHRvIHVzZSBub24tZXhpc3RpbmcgV2ViR0wgaW50ZXJuYWwgZm9ybWF0ICciK24rIiciKX1sZXQgYT1vO3JldHVybiA2NDAzPT09byYmKDUxMjY9PT1pJiYoYT0zMzMyNiksNTEzMT09PWkmJihhPTMzMzI1KSw1MTIxPT09aSYmKGE9MzMzMjEpKSw2NDA3PT09byYmKDUxMjY9PT1pJiYoYT0zNDgzNyksNTEzMT09PWkmJihhPTM0ODQzKSw1MTIxPT09aSYmKGE9MzI4NDkpKSw2NDA4PT09byYmKDUxMjY9PT1pJiYoYT0zNDgzNiksNTEzMT09PWkmJihhPTM0ODQyKSw1MTIxPT09aSYmKGE9MzI4NTYpKSwzMzMyNSE9PWEmJjMzMzI2IT09YSYmMzQ4NDIhPT1hJiYzNDgzNiE9PWF8fGUuZ2V0KCJFWFRfY29sb3JfYnVmZmVyX2Zsb2F0IiksYX1mdW5jdGlvbiBNKHQpe3JldHVybiB0PT09QXJ0fHwxMDA0PT09dHx8MTAwNT09PXQ/OTcyODo5NzI5fWZ1bmN0aW9uIHYoZSl7Y29uc3Qgbj1lLnRhcmdldDtuLnJlbW92ZUV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLHYpLChmdW5jdGlvbiBpKGUpe2NvbnN0IG49by5nZXQoZSk7aWYodm9pZCAwPT09bi5fX3dlYmdsSW5pdClyZXR1cm47dC5kZWxldGVUZXh0dXJlKG4uX193ZWJnbFRleHR1cmUpLG8ucmVtb3ZlKGUpfSkobiksbi5pc1ZpZGVvVGV4dHVyZSYmbS5kZWxldGUobiksci5tZW1vcnkudGV4dHVyZXMtLX1mdW5jdGlvbiB4KGUpe2NvbnN0IG49ZS50YXJnZXQ7bi5yZW1vdmVFdmVudExpc3RlbmVyKCJkaXNwb3NlIix4KSwoZnVuY3Rpb24gaShlKXtjb25zdCBuPWUudGV4dHVyZSxpPW8uZ2V0KGUpLGE9by5nZXQobik7aWYoIWUpcmV0dXJuO3ZvaWQgMCE9PWEuX193ZWJnbFRleHR1cmUmJih0LmRlbGV0ZVRleHR1cmUoYS5fX3dlYmdsVGV4dHVyZSksci5tZW1vcnkudGV4dHVyZXMtLSk7ZS5kZXB0aFRleHR1cmUmJmUuZGVwdGhUZXh0dXJlLmRpc3Bvc2UoKTtpZihlLmlzV2ViR0xDdWJlUmVuZGVyVGFyZ2V0KWZvcihsZXQgZT0wO2U8NjtlKyspdC5kZWxldGVGcmFtZWJ1ZmZlcihpLl9fd2ViZ2xGcmFtZWJ1ZmZlcltlXSksaS5fX3dlYmdsRGVwdGhidWZmZXImJnQuZGVsZXRlUmVuZGVyYnVmZmVyKGkuX193ZWJnbERlcHRoYnVmZmVyW2VdKTtlbHNlIHQuZGVsZXRlRnJhbWVidWZmZXIoaS5fX3dlYmdsRnJhbWVidWZmZXIpLGkuX193ZWJnbERlcHRoYnVmZmVyJiZ0LmRlbGV0ZVJlbmRlcmJ1ZmZlcihpLl9fd2ViZ2xEZXB0aGJ1ZmZlciksaS5fX3dlYmdsTXVsdGlzYW1wbGVkRnJhbWVidWZmZXImJnQuZGVsZXRlRnJhbWVidWZmZXIoaS5fX3dlYmdsTXVsdGlzYW1wbGVkRnJhbWVidWZmZXIpLGkuX193ZWJnbENvbG9yUmVuZGVyYnVmZmVyJiZ0LmRlbGV0ZVJlbmRlcmJ1ZmZlcihpLl9fd2ViZ2xDb2xvclJlbmRlcmJ1ZmZlciksaS5fX3dlYmdsRGVwdGhSZW5kZXJidWZmZXImJnQuZGVsZXRlUmVuZGVyYnVmZmVyKGkuX193ZWJnbERlcHRoUmVuZGVyYnVmZmVyKTtpZihlLmlzV2ViR0xNdWx0aXBsZVJlbmRlclRhcmdldHMpZm9yKGxldCBlPTAsaT1uLmxlbmd0aDtlPGk7ZSsrKXtjb25zdCBpPW8uZ2V0KG5bZV0pO2kuX193ZWJnbFRleHR1cmUmJih0LmRlbGV0ZVRleHR1cmUoaS5fX3dlYmdsVGV4dHVyZSksci5tZW1vcnkudGV4dHVyZXMtLSksby5yZW1vdmUobltlXSl9by5yZW1vdmUobiksby5yZW1vdmUoZSl9KShuKX1sZXQgTz0wO2Z1bmN0aW9uIFAodCxlKXtjb25zdCBpPW8uZ2V0KHQpO2lmKHQuaXNWaWRlb1RleHR1cmUmJihmdW5jdGlvbiBhKHQpe2NvbnN0IGU9ci5yZW5kZXIuZnJhbWU7bS5nZXQodCkhPT1lJiYobS5zZXQodCxlKSx0LnVwZGF0ZSgpKX0pKHQpLHQudmVyc2lvbj4wJiZpLl9fdmVyc2lvbiE9PXQudmVyc2lvbil7Y29uc3Qgbj10LmltYWdlO2lmKHZvaWQgMD09PW4pY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBUZXh0dXJlIG1hcmtlZCBmb3IgdXBkYXRlIGJ1dCBpbWFnZSBpcyB1bmRlZmluZWQiKTtlbHNle2lmKCExIT09bi5jb21wbGV0ZSlyZXR1cm4gdm9pZCBFKGksdCxlKTtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IFRleHR1cmUgbWFya2VkIGZvciB1cGRhdGUgYnV0IGltYWdlIGlzIGluY29tcGxldGUiKX19bi5hY3RpdmVUZXh0dXJlKDMzOTg0K2UpLG4uYmluZFRleHR1cmUoMzU1MyxpLl9fd2ViZ2xUZXh0dXJlKX1mdW5jdGlvbiB3KGUsaSl7Y29uc3Qgcj1vLmdldChlKTtlLnZlcnNpb24+MCYmci5fX3ZlcnNpb24hPT1lLnZlcnNpb24/KGZ1bmN0aW9uIGwoZSxvLGkpe2lmKDYhPT1vLmltYWdlLmxlbmd0aClyZXR1cm47UihlLG8pLG4uYWN0aXZlVGV4dHVyZSgzMzk4NCtpKSxuLmJpbmRUZXh0dXJlKDM0MDY3LGUuX193ZWJnbFRleHR1cmUpLHQucGl4ZWxTdG9yZWkoMzc0NDAsby5mbGlwWSksdC5waXhlbFN0b3JlaSgzNzQ0MSxvLnByZW11bHRpcGx5QWxwaGEpLHQucGl4ZWxTdG9yZWkoMzMxNyxvLnVucGFja0FsaWdubWVudCksdC5waXhlbFN0b3JlaSgzNzQ0MywwKTtjb25zdCByPW8mJihvLmlzQ29tcHJlc3NlZFRleHR1cmV8fG8uaW1hZ2VbMF0uaXNDb21wcmVzc2VkVGV4dHVyZSksbD1vLmltYWdlWzBdJiZvLmltYWdlWzBdLmlzRGF0YVRleHR1cmUsZD1bXTtmb3IobGV0IHQ9MDt0PDY7dCsrKWRbdF09cnx8bD9sP28uaW1hZ2VbdF0uaW1hZ2U6by5pbWFnZVt0XTpoKG8uaW1hZ2VbdF0sITEsITAsYyk7Y29uc3QgcD1kWzBdLG09YihwKXx8cyxmPWEuY29udmVydChvLmZvcm1hdCksdT1hLmNvbnZlcnQoby50eXBlKSxnPUMoby5pbnRlcm5hbEZvcm1hdCxmLHUpO2xldCBNO2lmKEQoMzQwNjcsbyxtKSxyKXtmb3IobGV0IHQ9MDt0PDY7dCsrKXtNPWRbdF0ubWlwbWFwcztmb3IobGV0IGU9MDtlPE0ubGVuZ3RoO2UrKyl7Y29uc3QgaT1NW2VdO28uZm9ybWF0IT09anJ0JiZvLmZvcm1hdCE9PVZydD9udWxsIT09Zj9uLmNvbXByZXNzZWRUZXhJbWFnZTJEKDM0MDY5K3QsZSxnLGkud2lkdGgsaS5oZWlnaHQsMCxpLmRhdGEpOmNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogQXR0ZW1wdCB0byBsb2FkIHVuc3VwcG9ydGVkIGNvbXByZXNzZWQgdGV4dHVyZSBmb3JtYXQgaW4gLnNldFRleHR1cmVDdWJlKCkiKTpuLnRleEltYWdlMkQoMzQwNjkrdCxlLGcsaS53aWR0aCxpLmhlaWdodCwwLGYsdSxpLmRhdGEpfX1lLl9fbWF4TWlwTGV2ZWw9TS5sZW5ndGgtMX1lbHNle009by5taXBtYXBzO2ZvcihsZXQgdD0wO3Q8Njt0KyspaWYobCl7bi50ZXhJbWFnZTJEKDM0MDY5K3QsMCxnLGRbdF0ud2lkdGgsZFt0XS5oZWlnaHQsMCxmLHUsZFt0XS5kYXRhKTtmb3IobGV0IGU9MDtlPE0ubGVuZ3RoO2UrKyl7Y29uc3Qgbz1NW2VdLmltYWdlW3RdLmltYWdlO24udGV4SW1hZ2UyRCgzNDA2OSt0LGUrMSxnLG8ud2lkdGgsby5oZWlnaHQsMCxmLHUsby5kYXRhKX19ZWxzZXtuLnRleEltYWdlMkQoMzQwNjkrdCwwLGcsZix1LGRbdF0pO2ZvcihsZXQgZT0wO2U8TS5sZW5ndGg7ZSsrKXtuLnRleEltYWdlMkQoMzQwNjkrdCxlKzEsZyxmLHUsTVtlXS5pbWFnZVt0XSl9fWUuX19tYXhNaXBMZXZlbD1NLmxlbmd0aH15KG8sbSkmJl8oMzQwNjcsbyxwLndpZHRoLHAuaGVpZ2h0KTtlLl9fdmVyc2lvbj1vLnZlcnNpb24sby5vblVwZGF0ZSYmby5vblVwZGF0ZShvKX0pKHIsZSxpKToobi5hY3RpdmVUZXh0dXJlKDMzOTg0K2kpLG4uYmluZFRleHR1cmUoMzQwNjcsci5fX3dlYmdsVGV4dHVyZSkpfWNvbnN0IGs9e1tEcnRdOjEwNDk3LFtScnRdOjMzMDcxLFtFcnRdOjMzNjQ4fSxTPXtbQXJ0XTo5NzI4LDEwMDQ6OTk4NCwxMDA1Ojk5ODYsW1RydF06OTcyOSwxMDA3Ojk5ODUsW05ydF06OTk4N307ZnVuY3Rpb24gRChuLGEscil7aWYocj8odC50ZXhQYXJhbWV0ZXJpKG4sMTAyNDIsa1thLndyYXBTXSksdC50ZXhQYXJhbWV0ZXJpKG4sMTAyNDMsa1thLndyYXBUXSksMzI4NzkhPT1uJiYzNTg2NiE9PW58fHQudGV4UGFyYW1ldGVyaShuLDMyODgyLGtbYS53cmFwUl0pLHQudGV4UGFyYW1ldGVyaShuLDEwMjQwLFNbYS5tYWdGaWx0ZXJdKSx0LnRleFBhcmFtZXRlcmkobiwxMDI0MSxTW2EubWluRmlsdGVyXSkpOih0LnRleFBhcmFtZXRlcmkobiwxMDI0MiwzMzA3MSksdC50ZXhQYXJhbWV0ZXJpKG4sMTAyNDMsMzMwNzEpLDMyODc5IT09biYmMzU4NjYhPT1ufHx0LnRleFBhcmFtZXRlcmkobiwzMjg4MiwzMzA3MSksYS53cmFwUz09PVJydCYmYS53cmFwVD09PVJydHx8Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBUZXh0dXJlIGlzIG5vdCBwb3dlciBvZiB0d28uIFRleHR1cmUud3JhcFMgYW5kIFRleHR1cmUud3JhcFQgc2hvdWxkIGJlIHNldCB0byBUSFJFRS5DbGFtcFRvRWRnZVdyYXBwaW5nLiIpLHQudGV4UGFyYW1ldGVyaShuLDEwMjQwLE0oYS5tYWdGaWx0ZXIpKSx0LnRleFBhcmFtZXRlcmkobiwxMDI0MSxNKGEubWluRmlsdGVyKSksYS5taW5GaWx0ZXIhPT1BcnQmJmEubWluRmlsdGVyIT09VHJ0JiZjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IFRleHR1cmUgaXMgbm90IHBvd2VyIG9mIHR3by4gVGV4dHVyZS5taW5GaWx0ZXIgc2hvdWxkIGJlIHNldCB0byBUSFJFRS5OZWFyZXN0RmlsdGVyIG9yIFRIUkVFLkxpbmVhckZpbHRlci4iKSksITA9PT1lLmhhcygiRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIikpe2NvbnN0IHI9ZS5nZXQoIkVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpO2lmKGEudHlwZT09PUZydCYmITE9PT1lLmhhcygiT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIikpcmV0dXJuO2lmKCExPT09cyYmYS50eXBlPT09THJ0JiYhMT09PWUuaGFzKCJPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xpbmVhciIpKXJldHVybjsoYS5hbmlzb3Ryb3B5PjF8fG8uZ2V0KGEpLl9fY3VycmVudEFuaXNvdHJvcHkpJiYodC50ZXhQYXJhbWV0ZXJmKG4sci5URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVCxNYXRoLm1pbihhLmFuaXNvdHJvcHksaS5nZXRNYXhBbmlzb3Ryb3B5KCkpKSxvLmdldChhKS5fX2N1cnJlbnRBbmlzb3Ryb3B5PWEuYW5pc290cm9weSl9fWZ1bmN0aW9uIFIoZSxuKXt2b2lkIDA9PT1lLl9fd2ViZ2xJbml0JiYoZS5fX3dlYmdsSW5pdD0hMCxuLmFkZEV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLHYpLGUuX193ZWJnbFRleHR1cmU9dC5jcmVhdGVUZXh0dXJlKCksci5tZW1vcnkudGV4dHVyZXMrKyl9ZnVuY3Rpb24gRShlLG8saSl7bGV0IHI9MzU1MztvLmlzRGF0YVRleHR1cmUyREFycmF5JiYocj0zNTg2Niksby5pc0RhdGFUZXh0dXJlM0QmJihyPTMyODc5KSxSKGUsbyksbi5hY3RpdmVUZXh0dXJlKDMzOTg0K2kpLG4uYmluZFRleHR1cmUocixlLl9fd2ViZ2xUZXh0dXJlKSx0LnBpeGVsU3RvcmVpKDM3NDQwLG8uZmxpcFkpLHQucGl4ZWxTdG9yZWkoMzc0NDEsby5wcmVtdWx0aXBseUFscGhhKSx0LnBpeGVsU3RvcmVpKDMzMTcsby51bnBhY2tBbGlnbm1lbnQpLHQucGl4ZWxTdG9yZWkoMzc0NDMsMCk7Y29uc3QgbD0oZnVuY3Rpb24gYyh0KXtyZXR1cm4hcyYmKHQud3JhcFMhPT1ScnR8fHQud3JhcFQhPT1ScnR8fHQubWluRmlsdGVyIT09QXJ0JiZ0Lm1pbkZpbHRlciE9PVRydCl9KShvKSYmITE9PT1iKG8uaW1hZ2UpLHA9aChvLmltYWdlLGwsITEsZCksbT1iKHApfHxzLGY9YS5jb252ZXJ0KG8uZm9ybWF0KTtsZXQgdSxnPWEuY29udmVydChvLnR5cGUpLE09QyhvLmludGVybmFsRm9ybWF0LGYsZyk7RChyLG8sbSk7Y29uc3Qgdj1vLm1pcG1hcHM7aWYoby5pc0RlcHRoVGV4dHVyZSlNPTY0MDIscz9NPW8udHlwZT09PUZydD8zNjAxMjpvLnR5cGU9PT1IcnQ/MzMxOTA6by50eXBlPT09QnJ0PzM1MDU2OjMzMTg5Om8udHlwZT09PUZydCYmY29uc29sZS5lcnJvcigiV2ViR0xSZW5kZXJlcjogRmxvYXRpbmcgcG9pbnQgZGVwdGggdGV4dHVyZSByZXF1aXJlcyBXZWJHTDIuIiksby5mb3JtYXQ9PT1VcnQmJjY0MDI9PT1NJiZvLnR5cGUhPT1JcnQmJm8udHlwZSE9PUhydCYmKGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogVXNlIFVuc2lnbmVkU2hvcnRUeXBlIG9yIFVuc2lnbmVkSW50VHlwZSBmb3IgRGVwdGhGb3JtYXQgRGVwdGhUZXh0dXJlLiIpLG8udHlwZT1JcnQsZz1hLmNvbnZlcnQoby50eXBlKSksby5mb3JtYXQ9PT1XcnQmJjY0MDI9PT1NJiYoTT0zNDA0MSxvLnR5cGUhPT1CcnQmJihjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IFVzZSBVbnNpZ25lZEludDI0OFR5cGUgZm9yIERlcHRoU3RlbmNpbEZvcm1hdCBEZXB0aFRleHR1cmUuIiksby50eXBlPUJydCxnPWEuY29udmVydChvLnR5cGUpKSksbi50ZXhJbWFnZTJEKDM1NTMsMCxNLHAud2lkdGgscC5oZWlnaHQsMCxmLGcsbnVsbCk7ZWxzZSBpZihvLmlzRGF0YVRleHR1cmUpaWYodi5sZW5ndGg+MCYmbSl7Zm9yKGxldCB0PTAsZT12Lmxlbmd0aDt0PGU7dCsrKXU9dlt0XSxuLnRleEltYWdlMkQoMzU1Myx0LE0sdS53aWR0aCx1LmhlaWdodCwwLGYsZyx1LmRhdGEpO28uZ2VuZXJhdGVNaXBtYXBzPSExLGUuX19tYXhNaXBMZXZlbD12Lmxlbmd0aC0xfWVsc2Ugbi50ZXhJbWFnZTJEKDM1NTMsMCxNLHAud2lkdGgscC5oZWlnaHQsMCxmLGcscC5kYXRhKSxlLl9fbWF4TWlwTGV2ZWw9MDtlbHNlIGlmKG8uaXNDb21wcmVzc2VkVGV4dHVyZSl7Zm9yKGxldCB0PTAsZT12Lmxlbmd0aDt0PGU7dCsrKXU9dlt0XSxvLmZvcm1hdCE9PWpydCYmby5mb3JtYXQhPT1WcnQ/bnVsbCE9PWY/bi5jb21wcmVzc2VkVGV4SW1hZ2UyRCgzNTUzLHQsTSx1LndpZHRoLHUuaGVpZ2h0LDAsdS5kYXRhKTpjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IEF0dGVtcHQgdG8gbG9hZCB1bnN1cHBvcnRlZCBjb21wcmVzc2VkIHRleHR1cmUgZm9ybWF0IGluIC51cGxvYWRUZXh0dXJlKCkiKTpuLnRleEltYWdlMkQoMzU1Myx0LE0sdS53aWR0aCx1LmhlaWdodCwwLGYsZyx1LmRhdGEpO2UuX19tYXhNaXBMZXZlbD12Lmxlbmd0aC0xfWVsc2UgaWYoby5pc0RhdGFUZXh0dXJlMkRBcnJheSluLnRleEltYWdlM0QoMzU4NjYsMCxNLHAud2lkdGgscC5oZWlnaHQscC5kZXB0aCwwLGYsZyxwLmRhdGEpLGUuX19tYXhNaXBMZXZlbD0wO2Vsc2UgaWYoby5pc0RhdGFUZXh0dXJlM0Qpbi50ZXhJbWFnZTNEKDMyODc5LDAsTSxwLndpZHRoLHAuaGVpZ2h0LHAuZGVwdGgsMCxmLGcscC5kYXRhKSxlLl9fbWF4TWlwTGV2ZWw9MDtlbHNlIGlmKHYubGVuZ3RoPjAmJm0pe2ZvcihsZXQgdD0wLGU9di5sZW5ndGg7dDxlO3QrKyl1PXZbdF0sbi50ZXhJbWFnZTJEKDM1NTMsdCxNLGYsZyx1KTtvLmdlbmVyYXRlTWlwbWFwcz0hMSxlLl9fbWF4TWlwTGV2ZWw9di5sZW5ndGgtMX1lbHNlIG4udGV4SW1hZ2UyRCgzNTUzLDAsTSxmLGcscCksZS5fX21heE1pcExldmVsPTA7eShvLG0pJiZfKHIsbyxwLndpZHRoLHAuaGVpZ2h0KSxlLl9fdmVyc2lvbj1vLnZlcnNpb24sby5vblVwZGF0ZSYmby5vblVwZGF0ZShvKX1mdW5jdGlvbiBBKGUsaSxyLHMsbCl7Y29uc3QgYz1hLmNvbnZlcnQoci5mb3JtYXQpLGQ9YS5jb252ZXJ0KHIudHlwZSkscD1DKHIuaW50ZXJuYWxGb3JtYXQsYyxkKTszMjg3OT09PWx8fDM1ODY2PT09bD9uLnRleEltYWdlM0QobCwwLHAsaS53aWR0aCxpLmhlaWdodCxpLmRlcHRoLDAsYyxkLG51bGwpOm4udGV4SW1hZ2UyRChsLDAscCxpLndpZHRoLGkuaGVpZ2h0LDAsYyxkLG51bGwpLG4uYmluZEZyYW1lYnVmZmVyKDM2MTYwLGUpLHQuZnJhbWVidWZmZXJUZXh0dXJlMkQoMzYxNjAscyxsLG8uZ2V0KHIpLl9fd2ViZ2xUZXh0dXJlLDApLG4uYmluZEZyYW1lYnVmZmVyKDM2MTYwLG51bGwpfWZ1bmN0aW9uIFQoZSxuLG8pe2lmKHQuYmluZFJlbmRlcmJ1ZmZlcigzNjE2MSxlKSxuLmRlcHRoQnVmZmVyJiYhbi5zdGVuY2lsQnVmZmVyKXtsZXQgaT0zMzE4OTtpZihvKXtjb25zdCBlPW4uZGVwdGhUZXh0dXJlO2UmJmUuaXNEZXB0aFRleHR1cmUmJihlLnR5cGU9PT1GcnQ/aT0zNjAxMjplLnR5cGU9PT1IcnQmJihpPTMzMTkwKSk7Y29uc3Qgbz16KG4pO3QucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKDM2MTYxLG8saSxuLndpZHRoLG4uaGVpZ2h0KX1lbHNlIHQucmVuZGVyYnVmZmVyU3RvcmFnZSgzNjE2MSxpLG4ud2lkdGgsbi5oZWlnaHQpO3QuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoMzYxNjAsMzYwOTYsMzYxNjEsZSl9ZWxzZSBpZihuLmRlcHRoQnVmZmVyJiZuLnN0ZW5jaWxCdWZmZXIpe2lmKG8pe2NvbnN0IGU9eihuKTt0LnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSgzNjE2MSxlLDM1MDU2LG4ud2lkdGgsbi5oZWlnaHQpfWVsc2UgdC5yZW5kZXJidWZmZXJTdG9yYWdlKDM2MTYxLDM0MDQxLG4ud2lkdGgsbi5oZWlnaHQpO3QuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoMzYxNjAsMzMzMDYsMzYxNjEsZSl9ZWxzZXtjb25zdCBlPSEwPT09bi5pc1dlYkdMTXVsdGlwbGVSZW5kZXJUYXJnZXRzP24udGV4dHVyZVswXTpuLnRleHR1cmUsaT1hLmNvbnZlcnQoZS5mb3JtYXQpLHI9YS5jb252ZXJ0KGUudHlwZSkscz1DKGUuaW50ZXJuYWxGb3JtYXQsaSxyKTtpZihvKXtjb25zdCBlPXoobik7dC5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoMzYxNjEsZSxzLG4ud2lkdGgsbi5oZWlnaHQpfWVsc2UgdC5yZW5kZXJidWZmZXJTdG9yYWdlKDM2MTYxLHMsbi53aWR0aCxuLmhlaWdodCl9dC5iaW5kUmVuZGVyYnVmZmVyKDM2MTYxLG51bGwpfWZ1bmN0aW9uIE4oZSl7Y29uc3QgaT1vLmdldChlKSxhPSEwPT09ZS5pc1dlYkdMQ3ViZVJlbmRlclRhcmdldDtpZihlLmRlcHRoVGV4dHVyZSl7aWYoYSl0aHJvdyBuZXcgRXJyb3IoInRhcmdldC5kZXB0aFRleHR1cmUgbm90IHN1cHBvcnRlZCBpbiBDdWJlIHJlbmRlciB0YXJnZXRzIik7IShmdW5jdGlvbiByKGUsaSl7aWYoaSYmaS5pc1dlYkdMQ3ViZVJlbmRlclRhcmdldCl0aHJvdyBuZXcgRXJyb3IoIkRlcHRoIFRleHR1cmUgd2l0aCBjdWJlIHJlbmRlciB0YXJnZXRzIGlzIG5vdCBzdXBwb3J0ZWQiKTtpZihuLmJpbmRGcmFtZWJ1ZmZlcigzNjE2MCxlKSwhaS5kZXB0aFRleHR1cmV8fCFpLmRlcHRoVGV4dHVyZS5pc0RlcHRoVGV4dHVyZSl0aHJvdyBuZXcgRXJyb3IoInJlbmRlclRhcmdldC5kZXB0aFRleHR1cmUgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBUSFJFRS5EZXB0aFRleHR1cmUiKTtvLmdldChpLmRlcHRoVGV4dHVyZSkuX193ZWJnbFRleHR1cmUmJmkuZGVwdGhUZXh0dXJlLmltYWdlLndpZHRoPT09aS53aWR0aCYmaS5kZXB0aFRleHR1cmUuaW1hZ2UuaGVpZ2h0PT09aS5oZWlnaHR8fChpLmRlcHRoVGV4dHVyZS5pbWFnZS53aWR0aD1pLndpZHRoLGkuZGVwdGhUZXh0dXJlLmltYWdlLmhlaWdodD1pLmhlaWdodCxpLmRlcHRoVGV4dHVyZS5uZWVkc1VwZGF0ZT0hMCksUChpLmRlcHRoVGV4dHVyZSwwKTtjb25zdCBhPW8uZ2V0KGkuZGVwdGhUZXh0dXJlKS5fX3dlYmdsVGV4dHVyZTtpZihpLmRlcHRoVGV4dHVyZS5mb3JtYXQ9PT1VcnQpdC5mcmFtZWJ1ZmZlclRleHR1cmUyRCgzNjE2MCwzNjA5NiwzNTUzLGEsMCk7ZWxzZXtpZihpLmRlcHRoVGV4dHVyZS5mb3JtYXQhPT1XcnQpdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIGRlcHRoVGV4dHVyZSBmb3JtYXQiKTt0LmZyYW1lYnVmZmVyVGV4dHVyZTJEKDM2MTYwLDMzMzA2LDM1NTMsYSwwKX19KShpLl9fd2ViZ2xGcmFtZWJ1ZmZlcixlKX1lbHNlIGlmKGEpe2kuX193ZWJnbERlcHRoYnVmZmVyPVtdO2ZvcihsZXQgbz0wO288NjtvKyspbi5iaW5kRnJhbWVidWZmZXIoMzYxNjAsaS5fX3dlYmdsRnJhbWVidWZmZXJbb10pLGkuX193ZWJnbERlcHRoYnVmZmVyW29dPXQuY3JlYXRlUmVuZGVyYnVmZmVyKCksVChpLl9fd2ViZ2xEZXB0aGJ1ZmZlcltvXSxlLCExKX1lbHNlIG4uYmluZEZyYW1lYnVmZmVyKDM2MTYwLGkuX193ZWJnbEZyYW1lYnVmZmVyKSxpLl9fd2ViZ2xEZXB0aGJ1ZmZlcj10LmNyZWF0ZVJlbmRlcmJ1ZmZlcigpLFQoaS5fX3dlYmdsRGVwdGhidWZmZXIsZSwhMSk7bi5iaW5kRnJhbWVidWZmZXIoMzYxNjAsbnVsbCl9ZnVuY3Rpb24geih0KXtyZXR1cm4gcyYmdC5pc1dlYkdMTXVsdGlzYW1wbGVSZW5kZXJUYXJnZXQ/TWF0aC5taW4ocCx0LnNhbXBsZXMpOjB9bGV0IEk9ITEsSD0hMTt0aGlzLmFsbG9jYXRlVGV4dHVyZVVuaXQ9ZnVuY3Rpb24gRigpe2NvbnN0IHQ9TztyZXR1cm4gdD49bCYmY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFRleHR1cmVzOiBUcnlpbmcgdG8gdXNlICIrdCsiIHRleHR1cmUgdW5pdHMgd2hpbGUgdGhpcyBHUFUgc3VwcG9ydHMgb25seSAiK2wpLE8rPTEsdH0sdGhpcy5yZXNldFRleHR1cmVVbml0cz1mdW5jdGlvbiBMKCl7Tz0wfSx0aGlzLnNldFRleHR1cmUyRD1QLHRoaXMuc2V0VGV4dHVyZTJEQXJyYXk9ZnVuY3Rpb24gQih0LGUpe2NvbnN0IGk9by5nZXQodCk7dC52ZXJzaW9uPjAmJmkuX192ZXJzaW9uIT09dC52ZXJzaW9uP0UoaSx0LGUpOihuLmFjdGl2ZVRleHR1cmUoMzM5ODQrZSksbi5iaW5kVGV4dHVyZSgzNTg2NixpLl9fd2ViZ2xUZXh0dXJlKSl9LHRoaXMuc2V0VGV4dHVyZTNEPWZ1bmN0aW9uIFYodCxlKXtjb25zdCBpPW8uZ2V0KHQpO3QudmVyc2lvbj4wJiZpLl9fdmVyc2lvbiE9PXQudmVyc2lvbj9FKGksdCxlKToobi5hY3RpdmVUZXh0dXJlKDMzOTg0K2UpLG4uYmluZFRleHR1cmUoMzI4NzksaS5fX3dlYmdsVGV4dHVyZSkpfSx0aGlzLnNldFRleHR1cmVDdWJlPXcsdGhpcy5zZXR1cFJlbmRlclRhcmdldD1mdW5jdGlvbiBqKGUpe2NvbnN0IGw9ZS50ZXh0dXJlLGM9by5nZXQoZSksZD1vLmdldChsKTtlLmFkZEV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLHgpLCEwIT09ZS5pc1dlYkdMTXVsdGlwbGVSZW5kZXJUYXJnZXRzJiYoZC5fX3dlYmdsVGV4dHVyZT10LmNyZWF0ZVRleHR1cmUoKSxkLl9fdmVyc2lvbj1sLnZlcnNpb24sci5tZW1vcnkudGV4dHVyZXMrKyk7Y29uc3QgcD0hMD09PWUuaXNXZWJHTEN1YmVSZW5kZXJUYXJnZXQsbT0hMD09PWUuaXNXZWJHTE11bHRpcGxlUmVuZGVyVGFyZ2V0cyxmPSEwPT09ZS5pc1dlYkdMTXVsdGlzYW1wbGVSZW5kZXJUYXJnZXQsdT1sLmlzRGF0YVRleHR1cmUzRHx8bC5pc0RhdGFUZXh0dXJlMkRBcnJheSxnPWIoZSl8fHM7aWYoIXN8fGwuZm9ybWF0IT09VnJ0fHxsLnR5cGUhPT1GcnQmJmwudHlwZSE9PUxydHx8KGwuZm9ybWF0PWpydCxjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IFJlbmRlcmluZyB0byB0ZXh0dXJlcyB3aXRoIFJHQiBmb3JtYXQgaXMgbm90IHN1cHBvcnRlZC4gVXNpbmcgUkdCQSBmb3JtYXQgaW5zdGVhZC4iKSkscCl7Yy5fX3dlYmdsRnJhbWVidWZmZXI9W107Zm9yKGxldCBlPTA7ZTw2O2UrKyljLl9fd2ViZ2xGcmFtZWJ1ZmZlcltlXT10LmNyZWF0ZUZyYW1lYnVmZmVyKCl9ZWxzZSBpZihjLl9fd2ViZ2xGcmFtZWJ1ZmZlcj10LmNyZWF0ZUZyYW1lYnVmZmVyKCksbSlpZihpLmRyYXdCdWZmZXJzKXtjb25zdCBuPWUudGV4dHVyZTtmb3IobGV0IGU9MCxpPW4ubGVuZ3RoO2U8aTtlKyspe2NvbnN0IGk9by5nZXQobltlXSk7dm9pZCAwPT09aS5fX3dlYmdsVGV4dHVyZSYmKGkuX193ZWJnbFRleHR1cmU9dC5jcmVhdGVUZXh0dXJlKCksci5tZW1vcnkudGV4dHVyZXMrKyl9fWVsc2UgY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBXZWJHTE11bHRpcGxlUmVuZGVyVGFyZ2V0cyBjYW4gb25seSBiZSB1c2VkIHdpdGggV2ViR0wyIG9yIFdFQkdMX2RyYXdfYnVmZmVycyBleHRlbnNpb24uIik7ZWxzZSBpZihmKWlmKHMpe2MuX193ZWJnbE11bHRpc2FtcGxlZEZyYW1lYnVmZmVyPXQuY3JlYXRlRnJhbWVidWZmZXIoKSxjLl9fd2ViZ2xDb2xvclJlbmRlcmJ1ZmZlcj10LmNyZWF0ZVJlbmRlcmJ1ZmZlcigpLHQuYmluZFJlbmRlcmJ1ZmZlcigzNjE2MSxjLl9fd2ViZ2xDb2xvclJlbmRlcmJ1ZmZlcik7Y29uc3Qgbz1hLmNvbnZlcnQobC5mb3JtYXQpLGk9YS5jb252ZXJ0KGwudHlwZSkscj1DKGwuaW50ZXJuYWxGb3JtYXQsbyxpKSxzPXooZSk7dC5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoMzYxNjEscyxyLGUud2lkdGgsZS5oZWlnaHQpLG4uYmluZEZyYW1lYnVmZmVyKDM2MTYwLGMuX193ZWJnbE11bHRpc2FtcGxlZEZyYW1lYnVmZmVyKSx0LmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKDM2MTYwLDM2MDY0LDM2MTYxLGMuX193ZWJnbENvbG9yUmVuZGVyYnVmZmVyKSx0LmJpbmRSZW5kZXJidWZmZXIoMzYxNjEsbnVsbCksZS5kZXB0aEJ1ZmZlciYmKGMuX193ZWJnbERlcHRoUmVuZGVyYnVmZmVyPXQuY3JlYXRlUmVuZGVyYnVmZmVyKCksVChjLl9fd2ViZ2xEZXB0aFJlbmRlcmJ1ZmZlcixlLCEwKSksbi5iaW5kRnJhbWVidWZmZXIoMzYxNjAsbnVsbCl9ZWxzZSBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IFdlYkdMTXVsdGlzYW1wbGVSZW5kZXJUYXJnZXQgY2FuIG9ubHkgYmUgdXNlZCB3aXRoIFdlYkdMMi4iKTtpZihwKXtuLmJpbmRUZXh0dXJlKDM0MDY3LGQuX193ZWJnbFRleHR1cmUpLEQoMzQwNjcsbCxnKTtmb3IobGV0IHQ9MDt0PDY7dCsrKUEoYy5fX3dlYmdsRnJhbWVidWZmZXJbdF0sZSxsLDM2MDY0LDM0MDY5K3QpO3kobCxnKSYmXygzNDA2NyxsLGUud2lkdGgsZS5oZWlnaHQpLG4uYmluZFRleHR1cmUoMzQwNjcsbnVsbCl9ZWxzZSBpZihtKXtjb25zdCB0PWUudGV4dHVyZTtmb3IobGV0IGk9MCxhPXQubGVuZ3RoO2k8YTtpKyspe2NvbnN0IGE9dFtpXSxyPW8uZ2V0KGEpO24uYmluZFRleHR1cmUoMzU1MyxyLl9fd2ViZ2xUZXh0dXJlKSxEKDM1NTMsYSxnKSxBKGMuX193ZWJnbEZyYW1lYnVmZmVyLGUsYSwzNjA2NCtpLDM1NTMpLHkoYSxnKSYmXygzNTUzLGEsZS53aWR0aCxlLmhlaWdodCl9bi5iaW5kVGV4dHVyZSgzNTUzLG51bGwpfWVsc2V7bGV0IHQ9MzU1MztpZih1KWlmKHMpe3Q9bC5pc0RhdGFUZXh0dXJlM0Q/MzI4Nzk6MzU4NjZ9ZWxzZSBjb25zb2xlLndhcm4oIlRIUkVFLkRhdGFUZXh0dXJlM0QgYW5kIFRIUkVFLkRhdGFUZXh0dXJlMkRBcnJheSBvbmx5IHN1cHBvcnRlZCB3aXRoIFdlYkdMMi4iKTtuLmJpbmRUZXh0dXJlKHQsZC5fX3dlYmdsVGV4dHVyZSksRCh0LGwsZyksQShjLl9fd2ViZ2xGcmFtZWJ1ZmZlcixlLGwsMzYwNjQsdCkseShsLGcpJiZfKHQsbCxlLndpZHRoLGUuaGVpZ2h0LGUuZGVwdGgpLG4uYmluZFRleHR1cmUodCxudWxsKX1lLmRlcHRoQnVmZmVyJiZOKGUpfSx0aGlzLnVwZGF0ZVJlbmRlclRhcmdldE1pcG1hcD1mdW5jdGlvbiBVKHQpe2NvbnN0IGU9Yih0KXx8cyxpPSEwPT09dC5pc1dlYkdMTXVsdGlwbGVSZW5kZXJUYXJnZXRzP3QudGV4dHVyZTpbdC50ZXh0dXJlXTtmb3IobGV0IGE9MCxyPWkubGVuZ3RoO2E8cjthKyspe2NvbnN0IHI9aVthXTtpZih5KHIsZSkpe2NvbnN0IGU9dC5pc1dlYkdMQ3ViZVJlbmRlclRhcmdldD8zNDA2NzozNTUzLGk9by5nZXQocikuX193ZWJnbFRleHR1cmU7bi5iaW5kVGV4dHVyZShlLGkpLF8oZSxyLHQud2lkdGgsdC5oZWlnaHQpLG4uYmluZFRleHR1cmUoZSxudWxsKX19fSx0aGlzLnVwZGF0ZU11bHRpc2FtcGxlUmVuZGVyVGFyZ2V0PWZ1bmN0aW9uIFcoZSl7aWYoZS5pc1dlYkdMTXVsdGlzYW1wbGVSZW5kZXJUYXJnZXQpaWYocyl7Y29uc3QgaT1lLndpZHRoLGE9ZS5oZWlnaHQ7bGV0IHI9MTYzODQ7ZS5kZXB0aEJ1ZmZlciYmKHJ8PTI1NiksZS5zdGVuY2lsQnVmZmVyJiYocnw9MTAyNCk7Y29uc3Qgcz1vLmdldChlKTtuLmJpbmRGcmFtZWJ1ZmZlcigzNjAwOCxzLl9fd2ViZ2xNdWx0aXNhbXBsZWRGcmFtZWJ1ZmZlciksbi5iaW5kRnJhbWVidWZmZXIoMzYwMDkscy5fX3dlYmdsRnJhbWVidWZmZXIpLHQuYmxpdEZyYW1lYnVmZmVyKDAsMCxpLGEsMCwwLGksYSxyLDk3MjgpLG4uYmluZEZyYW1lYnVmZmVyKDM2MDA4LG51bGwpLG4uYmluZEZyYW1lYnVmZmVyKDM2MDA5LHMuX193ZWJnbE11bHRpc2FtcGxlZEZyYW1lYnVmZmVyKX1lbHNlIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogV2ViR0xNdWx0aXNhbXBsZVJlbmRlclRhcmdldCBjYW4gb25seSBiZSB1c2VkIHdpdGggV2ViR0wyLiIpfSx0aGlzLnNhZmVTZXRUZXh0dXJlMkQ9ZnVuY3Rpb24gRyh0LGUpe3QmJnQuaXNXZWJHTFJlbmRlclRhcmdldCYmKCExPT09SSYmKGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xUZXh0dXJlcy5zYWZlU2V0VGV4dHVyZTJEOiBkb24ndCB1c2UgcmVuZGVyIHRhcmdldHMgYXMgdGV4dHVyZXMuIFVzZSB0aGVpciAudGV4dHVyZSBwcm9wZXJ0eSBpbnN0ZWFkLiIpLEk9ITApLHQ9dC50ZXh0dXJlKSxQKHQsZSl9LHRoaXMuc2FmZVNldFRleHR1cmVDdWJlPWZ1bmN0aW9uIFkodCxlKXt0JiZ0LmlzV2ViR0xDdWJlUmVuZGVyVGFyZ2V0JiYoITE9PT1IJiYoY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFRleHR1cmVzLnNhZmVTZXRUZXh0dXJlQ3ViZTogZG9uJ3QgdXNlIGN1YmUgcmVuZGVyIHRhcmdldHMgYXMgdGV4dHVyZXMuIFVzZSB0aGVpciAudGV4dHVyZSBwcm9wZXJ0eSBpbnN0ZWFkLiIpLEg9ITApLHQ9dC50ZXh0dXJlKSx3KHQsZSl9fWZ1bmN0aW9uIFJtdCh0LGUsbil7Y29uc3Qgbz1uLmlzV2ViR0wyO3JldHVybntjb252ZXJ0OmZ1bmN0aW9uIGkodCl7bGV0IG47aWYodD09PXpydClyZXR1cm4gNTEyMTtpZigxMDE3PT09dClyZXR1cm4gMzI4MTk7aWYoMTAxOD09PXQpcmV0dXJuIDMyODIwO2lmKDEwMTk9PT10KXJldHVybiAzMzYzNTtpZigxMDEwPT09dClyZXR1cm4gNTEyMDtpZigxMDExPT09dClyZXR1cm4gNTEyMjtpZih0PT09SXJ0KXJldHVybiA1MTIzO2lmKDEwMTM9PT10KXJldHVybiA1MTI0O2lmKHQ9PT1IcnQpcmV0dXJuIDUxMjU7aWYodD09PUZydClyZXR1cm4gNTEyNjtpZih0PT09THJ0KXJldHVybiBvPzUxMzE6KG49ZS5nZXQoIk9FU190ZXh0dXJlX2hhbGZfZmxvYXQiKSxudWxsIT09bj9uLkhBTEZfRkxPQVRfT0VTOm51bGwpO2lmKDEwMjE9PT10KXJldHVybiA2NDA2O2lmKHQ9PT1WcnQpcmV0dXJuIDY0MDc7aWYodD09PWpydClyZXR1cm4gNjQwODtpZigxMDI0PT09dClyZXR1cm4gNjQwOTtpZigxMDI1PT09dClyZXR1cm4gNjQxMDtpZih0PT09VXJ0KXJldHVybiA2NDAyO2lmKHQ9PT1XcnQpcmV0dXJuIDM0MDQxO2lmKDEwMjg9PT10KXJldHVybiA2NDAzO2lmKDEwMjk9PT10KXJldHVybiAzNjI0NDtpZigxMDMwPT09dClyZXR1cm4gMzMzMTk7aWYoMTAzMT09PXQpcmV0dXJuIDMzMzIwO2lmKDEwMzI9PT10KXJldHVybiAzNjI0ODtpZigxMDMzPT09dClyZXR1cm4gMzYyNDk7aWYoMzM3NzY9PT10fHwzMzc3Nz09PXR8fDMzNzc4PT09dHx8MzM3Nzk9PT10KXtpZihuPWUuZ2V0KCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YyIpLG51bGw9PT1uKXJldHVybiBudWxsO2lmKDMzNzc2PT09dClyZXR1cm4gbi5DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUO2lmKDMzNzc3PT09dClyZXR1cm4gbi5DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVDtpZigzMzc3OD09PXQpcmV0dXJuIG4uQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19FWFQ7aWYoMzM3Nzk9PT10KXJldHVybiBuLkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfRVhUfWlmKDM1ODQwPT09dHx8MzU4NDE9PT10fHwzNTg0Mj09PXR8fDM1ODQzPT09dCl7aWYobj1lLmdldCgiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3B2cnRjIiksbnVsbD09PW4pcmV0dXJuIG51bGw7aWYoMzU4NDA9PT10KXJldHVybiBuLkNPTVBSRVNTRURfUkdCX1BWUlRDXzRCUFBWMV9JTUc7aWYoMzU4NDE9PT10KXJldHVybiBuLkNPTVBSRVNTRURfUkdCX1BWUlRDXzJCUFBWMV9JTUc7aWYoMzU4NDI9PT10KXJldHVybiBuLkNPTVBSRVNTRURfUkdCQV9QVlJUQ180QlBQVjFfSU1HO2lmKDM1ODQzPT09dClyZXR1cm4gbi5DT01QUkVTU0VEX1JHQkFfUFZSVENfMkJQUFYxX0lNR31pZigzNjE5Nj09PXQpcmV0dXJuIG49ZS5nZXQoIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9ldGMxIiksbnVsbCE9PW4/bi5DT01QUkVTU0VEX1JHQl9FVEMxX1dFQkdMOm51bGw7aWYoKDM3NDkyPT09dHx8Mzc0OTY9PT10KSYmKG49ZS5nZXQoIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9ldGMiKSxudWxsIT09bikpe2lmKDM3NDkyPT09dClyZXR1cm4gbi5DT01QUkVTU0VEX1JHQjhfRVRDMjtpZigzNzQ5Nj09PXQpcmV0dXJuIG4uQ09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQ31yZXR1cm4gMzc4MDg9PT10fHwzNzgwOT09PXR8fDM3ODEwPT09dHx8Mzc4MTE9PT10fHwzNzgxMj09PXR8fDM3ODEzPT09dHx8Mzc4MTQ9PT10fHwzNzgxNT09PXR8fDM3ODE2PT09dHx8Mzc4MTc9PT10fHwzNzgxOD09PXR8fDM3ODE5PT09dHx8Mzc4MjA9PT10fHwzNzgyMT09PXR8fDM3ODQwPT09dHx8Mzc4NDE9PT10fHwzNzg0Mj09PXR8fDM3ODQzPT09dHx8Mzc4NDQ9PT10fHwzNzg0NT09PXR8fDM3ODQ2PT09dHx8Mzc4NDc9PT10fHwzNzg0OD09PXR8fDM3ODQ5PT09dHx8Mzc4NTA9PT10fHwzNzg1MT09PXR8fDM3ODUyPT09dHx8Mzc4NTM9PT10PyhuPWUuZ2V0KCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfYXN0YyIpLG51bGwhPT1uP3Q6bnVsbCk6MzY0OTI9PT10PyhuPWUuZ2V0KCJFWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9icHRjIiksbnVsbCE9PW4/dDpudWxsKTp0PT09QnJ0P28/MzQwNDI6KG49ZS5nZXQoIldFQkdMX2RlcHRoX3RleHR1cmUiKSxudWxsIT09bj9uLlVOU0lHTkVEX0lOVF8yNF84X1dFQkdMOm51bGwpOnZvaWQgMH19fWNsYXNzIEVtdCBleHRlbmRzIEljdHtjb25zdHJ1Y3Rvcih0PVtdKXtzdXBlcigpLHRoaXMuY2FtZXJhcz10fX1FbXQucHJvdG90eXBlLmlzQXJyYXlDYW1lcmE9ITA7Y2xhc3MgQW10IGV4dGVuZHMgU2x0e2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLnR5cGU9Ikdyb3VwIn19QW10LnByb3RvdHlwZS5pc0dyb3VwPSEwO2NvbnN0IFRtdD17dHlwZToibW92ZSJ9O2NsYXNzIE5tdHtjb25zdHJ1Y3Rvcigpe3RoaXMuX3RhcmdldFJheT1udWxsLHRoaXMuX2dyaXA9bnVsbCx0aGlzLl9oYW5kPW51bGx9Z2V0SGFuZFNwYWNlKCl7cmV0dXJuIG51bGw9PT10aGlzLl9oYW5kJiYodGhpcy5faGFuZD1uZXcgQW10LHRoaXMuX2hhbmQubWF0cml4QXV0b1VwZGF0ZT0hMSx0aGlzLl9oYW5kLnZpc2libGU9ITEsdGhpcy5faGFuZC5qb2ludHM9e30sdGhpcy5faGFuZC5pbnB1dFN0YXRlPXtwaW5jaGluZzohMX0pLHRoaXMuX2hhbmR9Z2V0VGFyZ2V0UmF5U3BhY2UoKXtyZXR1cm4gbnVsbD09PXRoaXMuX3RhcmdldFJheSYmKHRoaXMuX3RhcmdldFJheT1uZXcgQW10LHRoaXMuX3RhcmdldFJheS5tYXRyaXhBdXRvVXBkYXRlPSExLHRoaXMuX3RhcmdldFJheS52aXNpYmxlPSExLHRoaXMuX3RhcmdldFJheS5oYXNMaW5lYXJWZWxvY2l0eT0hMSx0aGlzLl90YXJnZXRSYXkubGluZWFyVmVsb2NpdHk9bmV3IHdzdCx0aGlzLl90YXJnZXRSYXkuaGFzQW5ndWxhclZlbG9jaXR5PSExLHRoaXMuX3RhcmdldFJheS5hbmd1bGFyVmVsb2NpdHk9bmV3IHdzdCksdGhpcy5fdGFyZ2V0UmF5fWdldEdyaXBTcGFjZSgpe3JldHVybiBudWxsPT09dGhpcy5fZ3JpcCYmKHRoaXMuX2dyaXA9bmV3IEFtdCx0aGlzLl9ncmlwLm1hdHJpeEF1dG9VcGRhdGU9ITEsdGhpcy5fZ3JpcC52aXNpYmxlPSExLHRoaXMuX2dyaXAuaGFzTGluZWFyVmVsb2NpdHk9ITEsdGhpcy5fZ3JpcC5saW5lYXJWZWxvY2l0eT1uZXcgd3N0LHRoaXMuX2dyaXAuaGFzQW5ndWxhclZlbG9jaXR5PSExLHRoaXMuX2dyaXAuYW5ndWxhclZlbG9jaXR5PW5ldyB3c3QpLHRoaXMuX2dyaXB9ZGlzcGF0Y2hFdmVudCh0KXtyZXR1cm4gbnVsbCE9PXRoaXMuX3RhcmdldFJheSYmdGhpcy5fdGFyZ2V0UmF5LmRpc3BhdGNoRXZlbnQodCksbnVsbCE9PXRoaXMuX2dyaXAmJnRoaXMuX2dyaXAuZGlzcGF0Y2hFdmVudCh0KSxudWxsIT09dGhpcy5faGFuZCYmdGhpcy5faGFuZC5kaXNwYXRjaEV2ZW50KHQpLHRoaXN9ZGlzY29ubmVjdCh0KXtyZXR1cm4gdGhpcy5kaXNwYXRjaEV2ZW50KHt0eXBlOiJkaXNjb25uZWN0ZWQiLGRhdGE6dH0pLG51bGwhPT10aGlzLl90YXJnZXRSYXkmJih0aGlzLl90YXJnZXRSYXkudmlzaWJsZT0hMSksbnVsbCE9PXRoaXMuX2dyaXAmJih0aGlzLl9ncmlwLnZpc2libGU9ITEpLG51bGwhPT10aGlzLl9oYW5kJiYodGhpcy5faGFuZC52aXNpYmxlPSExKSx0aGlzfXVwZGF0ZSh0LGUsbil7bGV0IG89bnVsbCxpPW51bGwsYT1udWxsO2NvbnN0IHI9dGhpcy5fdGFyZ2V0UmF5LHM9dGhpcy5fZ3JpcCxsPXRoaXMuX2hhbmQ7aWYodCYmInZpc2libGUtYmx1cnJlZCIhPT1lLnNlc3Npb24udmlzaWJpbGl0eVN0YXRlKWlmKG51bGwhPT1yJiYobz1lLmdldFBvc2UodC50YXJnZXRSYXlTcGFjZSxuKSxudWxsIT09byYmKHIubWF0cml4LmZyb21BcnJheShvLnRyYW5zZm9ybS5tYXRyaXgpLHIubWF0cml4LmRlY29tcG9zZShyLnBvc2l0aW9uLHIucm90YXRpb24sci5zY2FsZSksby5saW5lYXJWZWxvY2l0eT8oci5oYXNMaW5lYXJWZWxvY2l0eT0hMCxyLmxpbmVhclZlbG9jaXR5LmNvcHkoby5saW5lYXJWZWxvY2l0eSkpOnIuaGFzTGluZWFyVmVsb2NpdHk9ITEsby5hbmd1bGFyVmVsb2NpdHk/KHIuaGFzQW5ndWxhclZlbG9jaXR5PSEwLHIuYW5ndWxhclZlbG9jaXR5LmNvcHkoby5hbmd1bGFyVmVsb2NpdHkpKTpyLmhhc0FuZ3VsYXJWZWxvY2l0eT0hMSx0aGlzLmRpc3BhdGNoRXZlbnQoVG10KSkpLGwmJnQuaGFuZCl7YT0hMDtmb3IoY29uc3QgbyBvZiB0LmhhbmQudmFsdWVzKCkpe2NvbnN0IHQ9ZS5nZXRKb2ludFBvc2UobyxuKTtpZih2b2lkIDA9PT1sLmpvaW50c1tvLmpvaW50TmFtZV0pe2NvbnN0IHQ9bmV3IEFtdDt0Lm1hdHJpeEF1dG9VcGRhdGU9ITEsdC52aXNpYmxlPSExLGwuam9pbnRzW28uam9pbnROYW1lXT10LGwuYWRkKHQpfWNvbnN0IGk9bC5qb2ludHNbby5qb2ludE5hbWVdO251bGwhPT10JiYoaS5tYXRyaXguZnJvbUFycmF5KHQudHJhbnNmb3JtLm1hdHJpeCksaS5tYXRyaXguZGVjb21wb3NlKGkucG9zaXRpb24saS5yb3RhdGlvbixpLnNjYWxlKSxpLmpvaW50UmFkaXVzPXQucmFkaXVzKSxpLnZpc2libGU9bnVsbCE9PXR9Y29uc3Qgbz1sLmpvaW50c1siaW5kZXgtZmluZ2VyLXRpcCJdLnBvc2l0aW9uLmRpc3RhbmNlVG8obC5qb2ludHNbInRodW1iLXRpcCJdLnBvc2l0aW9uKSxpPS4wMixyPS4wMDU7bC5pbnB1dFN0YXRlLnBpbmNoaW5nJiZvPmkrcj8obC5pbnB1dFN0YXRlLnBpbmNoaW5nPSExLHRoaXMuZGlzcGF0Y2hFdmVudCh7dHlwZToicGluY2hlbmQiLGhhbmRlZG5lc3M6dC5oYW5kZWRuZXNzLHRhcmdldDp0aGlzfSkpOiFsLmlucHV0U3RhdGUucGluY2hpbmcmJm88PWktciYmKGwuaW5wdXRTdGF0ZS5waW5jaGluZz0hMCx0aGlzLmRpc3BhdGNoRXZlbnQoe3R5cGU6InBpbmNoc3RhcnQiLGhhbmRlZG5lc3M6dC5oYW5kZWRuZXNzLHRhcmdldDp0aGlzfSkpfWVsc2UgbnVsbCE9PXMmJnQuZ3JpcFNwYWNlJiYoaT1lLmdldFBvc2UodC5ncmlwU3BhY2UsbiksbnVsbCE9PWkmJihzLm1hdHJpeC5mcm9tQXJyYXkoaS50cmFuc2Zvcm0ubWF0cml4KSxzLm1hdHJpeC5kZWNvbXBvc2Uocy5wb3NpdGlvbixzLnJvdGF0aW9uLHMuc2NhbGUpLGkubGluZWFyVmVsb2NpdHk/KHMuaGFzTGluZWFyVmVsb2NpdHk9ITAscy5saW5lYXJWZWxvY2l0eS5jb3B5KGkubGluZWFyVmVsb2NpdHkpKTpzLmhhc0xpbmVhclZlbG9jaXR5PSExLGkuYW5ndWxhclZlbG9jaXR5PyhzLmhhc0FuZ3VsYXJWZWxvY2l0eT0hMCxzLmFuZ3VsYXJWZWxvY2l0eS5jb3B5KGkuYW5ndWxhclZlbG9jaXR5KSk6cy5oYXNBbmd1bGFyVmVsb2NpdHk9ITEpKTtyZXR1cm4gbnVsbCE9PXImJihyLnZpc2libGU9bnVsbCE9PW8pLG51bGwhPT1zJiYocy52aXNpYmxlPW51bGwhPT1pKSxudWxsIT09bCYmKGwudmlzaWJsZT1udWxsIT09YSksdGhpc319Y2xhc3Mgem10IGV4dGVuZHMgcnN0e2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIoKTtjb25zdCBuPXRoaXMsbz10LnN0YXRlO2xldCBpPW51bGwsYT0xLHI9bnVsbCxzPSJsb2NhbC1mbG9vciIsbD1udWxsLGM9bnVsbCxkPW51bGwscD1udWxsLG09bnVsbDtjb25zdCBmPVtdLHU9bmV3IE1hcCxnPW5ldyBJY3Q7Zy5sYXllcnMuZW5hYmxlKDEpLGcudmlld3BvcnQ9bmV3IHZzdDtjb25zdCBoPW5ldyBJY3Q7aC5sYXllcnMuZW5hYmxlKDIpLGgudmlld3BvcnQ9bmV3IHZzdDtjb25zdCBiPVtnLGhdLHk9bmV3IEVtdDt5LmxheWVycy5lbmFibGUoMSkseS5sYXllcnMuZW5hYmxlKDIpO2xldCBfPW51bGwsQz1udWxsO2Z1bmN0aW9uIE0odCl7Y29uc3QgZT11LmdldCh0LmlucHV0U291cmNlKTtlJiZlLmRpc3BhdGNoRXZlbnQoe3R5cGU6dC50eXBlLGRhdGE6dC5pbnB1dFNvdXJjZX0pfWZ1bmN0aW9uIHYoKXt1LmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7dC5kaXNjb25uZWN0KGUpfSkpLHUuY2xlYXIoKSxfPW51bGwsQz1udWxsLG8uYmluZFhSRnJhbWVidWZmZXIobnVsbCksdC5zZXRSZW5kZXJUYXJnZXQodC5nZXRSZW5kZXJUYXJnZXQoKSksUy5zdG9wKCksbi5pc1ByZXNlbnRpbmc9ITEsbi5kaXNwYXRjaEV2ZW50KHt0eXBlOiJzZXNzaW9uZW5kIn0pfWZ1bmN0aW9uIHgodCl7Y29uc3QgZT1pLmlucHV0U291cmNlcztmb3IobGV0IHQ9MDt0PGYubGVuZ3RoO3QrKyl1LnNldChlW3RdLGZbdF0pO2ZvcihsZXQgZT0wO2U8dC5yZW1vdmVkLmxlbmd0aDtlKyspe2NvbnN0IG49dC5yZW1vdmVkW2VdLG89dS5nZXQobik7byYmKG8uZGlzcGF0Y2hFdmVudCh7dHlwZToiZGlzY29ubmVjdGVkIixkYXRhOm59KSx1LmRlbGV0ZShuKSl9Zm9yKGxldCBlPTA7ZTx0LmFkZGVkLmxlbmd0aDtlKyspe2NvbnN0IG49dC5hZGRlZFtlXSxvPXUuZ2V0KG4pO28mJm8uZGlzcGF0Y2hFdmVudCh7dHlwZToiY29ubmVjdGVkIixkYXRhOm59KX19dGhpcy5jYW1lcmFBdXRvVXBkYXRlPSEwLHRoaXMuZW5hYmxlZD0hMSx0aGlzLmlzUHJlc2VudGluZz0hMSx0aGlzLmdldENvbnRyb2xsZXI9ZnVuY3Rpb24odCl7bGV0IGU9Zlt0XTtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9bmV3IE5tdCxmW3RdPWUpLGUuZ2V0VGFyZ2V0UmF5U3BhY2UoKX0sdGhpcy5nZXRDb250cm9sbGVyR3JpcD1mdW5jdGlvbih0KXtsZXQgZT1mW3RdO3JldHVybiB2b2lkIDA9PT1lJiYoZT1uZXcgTm10LGZbdF09ZSksZS5nZXRHcmlwU3BhY2UoKX0sdGhpcy5nZXRIYW5kPWZ1bmN0aW9uKHQpe2xldCBlPWZbdF07cmV0dXJuIHZvaWQgMD09PWUmJihlPW5ldyBObXQsZlt0XT1lKSxlLmdldEhhbmRTcGFjZSgpfSx0aGlzLnNldEZyYW1lYnVmZmVyU2NhbGVGYWN0b3I9ZnVuY3Rpb24odCl7YT10LCEwPT09bi5pc1ByZXNlbnRpbmcmJmNvbnNvbGUud2FybigiVEhSRUUuV2ViWFJNYW5hZ2VyOiBDYW5ub3QgY2hhbmdlIGZyYW1lYnVmZmVyIHNjYWxlIHdoaWxlIHByZXNlbnRpbmcuIil9LHRoaXMuc2V0UmVmZXJlbmNlU3BhY2VUeXBlPWZ1bmN0aW9uKHQpe3M9dCwhMD09PW4uaXNQcmVzZW50aW5nJiZjb25zb2xlLndhcm4oIlRIUkVFLldlYlhSTWFuYWdlcjogQ2Fubm90IGNoYW5nZSByZWZlcmVuY2Ugc3BhY2UgdHlwZSB3aGlsZSBwcmVzZW50aW5nLiIpfSx0aGlzLmdldFJlZmVyZW5jZVNwYWNlPWZ1bmN0aW9uKCl7cmV0dXJuIHJ9LHRoaXMuZ2V0U2Vzc2lvbj1mdW5jdGlvbigpe3JldHVybiBpfSx0aGlzLnNldFNlc3Npb249YXN5bmMgZnVuY3Rpb24odCl7aWYoaT10LG51bGwhPT1pKXtpLmFkZEV2ZW50TGlzdGVuZXIoInNlbGVjdCIsTSksaS5hZGRFdmVudExpc3RlbmVyKCJzZWxlY3RzdGFydCIsTSksaS5hZGRFdmVudExpc3RlbmVyKCJzZWxlY3RlbmQiLE0pLGkuYWRkRXZlbnRMaXN0ZW5lcigic3F1ZWV6ZSIsTSksaS5hZGRFdmVudExpc3RlbmVyKCJzcXVlZXplc3RhcnQiLE0pLGkuYWRkRXZlbnRMaXN0ZW5lcigic3F1ZWV6ZWVuZCIsTSksaS5hZGRFdmVudExpc3RlbmVyKCJlbmQiLHYpLGkuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXRzb3VyY2VzY2hhbmdlIix4KTtjb25zdCB0PWUuZ2V0Q29udGV4dEF0dHJpYnV0ZXMoKTtpZighMCE9PXQueHJDb21wYXRpYmxlJiZhd2FpdCBlLm1ha2VYUkNvbXBhdGlibGUoKSx2b2lkIDA9PT1pLnJlbmRlclN0YXRlLmxheWVycyl7bT1uZXcgWFJXZWJHTExheWVyKGksZSx7YW50aWFsaWFzOnQuYW50aWFsaWFzLGFscGhhOnQuYWxwaGEsZGVwdGg6dC5kZXB0aCxzdGVuY2lsOnQuc3RlbmNpbCxmcmFtZWJ1ZmZlclNjYWxlRmFjdG9yOmF9KSxpLnVwZGF0ZVJlbmRlclN0YXRlKHtiYXNlTGF5ZXI6bX0pfWVsc2V7bGV0IG49MDtpZih0LmFudGlhbGlhcyl7bT1uZXcgWFJXZWJHTExheWVyKGksZSx7YW50aWFsaWFzOiEwLGFscGhhOnQuYWxwaGEsZGVwdGg6dC5kZXB0aCxzdGVuY2lsOnQuc3RlbmNpbCxmcmFtZWJ1ZmZlclNjYWxlRmFjdG9yOmF9KSxpLnVwZGF0ZVJlbmRlclN0YXRlKHtsYXllcnM6W21dfSl9ZWxzZXt0LmRlcHRoJiYobj10LnN0ZW5jaWw/MzQwNDE6NjQwMik7Y29uc3Qgbz17Y29sb3JGb3JtYXQ6dC5hbHBoYT82NDA4OjY0MDcsZGVwdGhGb3JtYXQ6bixzY2FsZUZhY3RvcjphfTtjPW5ldyBYUldlYkdMQmluZGluZyhpLGUpLHA9Yy5jcmVhdGVQcm9qZWN0aW9uTGF5ZXIobyksZD1lLmNyZWF0ZUZyYW1lYnVmZmVyKCksaS51cGRhdGVSZW5kZXJTdGF0ZSh7bGF5ZXJzOltwXX0pfX1yPWF3YWl0IGkucmVxdWVzdFJlZmVyZW5jZVNwYWNlKHMpLFMuc2V0Q29udGV4dChpKSxTLnN0YXJ0KCksbi5pc1ByZXNlbnRpbmc9ITAsbi5kaXNwYXRjaEV2ZW50KHt0eXBlOiJzZXNzaW9uc3RhcnQifSl9fTtjb25zdCBPPW5ldyB3c3QsUD1uZXcgd3N0O2Z1bmN0aW9uIHcodCxlKXtudWxsPT09ZT90Lm1hdHJpeFdvcmxkLmNvcHkodC5tYXRyaXgpOnQubWF0cml4V29ybGQubXVsdGlwbHlNYXRyaWNlcyhlLm1hdHJpeFdvcmxkLHQubWF0cml4KSx0Lm1hdHJpeFdvcmxkSW52ZXJzZS5jb3B5KHQubWF0cml4V29ybGQpLmludmVydCgpfXRoaXMudXBkYXRlQ2FtZXJhPWZ1bmN0aW9uKHQpe2lmKG51bGw9PT1pKXJldHVybjt5Lm5lYXI9aC5uZWFyPWcubmVhcj10Lm5lYXIseS5mYXI9aC5mYXI9Zy5mYXI9dC5mYXIsXz09PXkubmVhciYmQz09PXkuZmFyfHwoaS51cGRhdGVSZW5kZXJTdGF0ZSh7ZGVwdGhOZWFyOnkubmVhcixkZXB0aEZhcjp5LmZhcn0pLF89eS5uZWFyLEM9eS5mYXIpO2NvbnN0IGU9dC5wYXJlbnQsbj15LmNhbWVyYXM7dyh5LGUpO2ZvcihsZXQgdD0wO3Q8bi5sZW5ndGg7dCsrKXcoblt0XSxlKTt5Lm1hdHJpeFdvcmxkLmRlY29tcG9zZSh5LnBvc2l0aW9uLHkucXVhdGVybmlvbix5LnNjYWxlKSx0LnBvc2l0aW9uLmNvcHkoeS5wb3NpdGlvbiksdC5xdWF0ZXJuaW9uLmNvcHkoeS5xdWF0ZXJuaW9uKSx0LnNjYWxlLmNvcHkoeS5zY2FsZSksdC5tYXRyaXguY29weSh5Lm1hdHJpeCksdC5tYXRyaXhXb3JsZC5jb3B5KHkubWF0cml4V29ybGQpO2NvbnN0IG89dC5jaGlsZHJlbjtmb3IobGV0IHQ9MCxlPW8ubGVuZ3RoO3Q8ZTt0Kyspb1t0XS51cGRhdGVNYXRyaXhXb3JsZCghMCk7Mj09PW4ubGVuZ3RoPyhmdW5jdGlvbiBhKHQsZSxuKXtPLnNldEZyb21NYXRyaXhQb3NpdGlvbihlLm1hdHJpeFdvcmxkKSxQLnNldEZyb21NYXRyaXhQb3NpdGlvbihuLm1hdHJpeFdvcmxkKTtjb25zdCBvPU8uZGlzdGFuY2VUbyhQKSxpPWUucHJvamVjdGlvbk1hdHJpeC5lbGVtZW50cyxhPW4ucHJvamVjdGlvbk1hdHJpeC5lbGVtZW50cyxyPWlbMTRdLyhpWzEwXS0xKSxzPWlbMTRdLyhpWzEwXSsxKSxsPShpWzldKzEpL2lbNV0sYz0oaVs5XS0xKS9pWzVdLGQ9KGlbOF0tMSkvaVswXSxwPShhWzhdKzEpL2FbMF0sbT1yKmQsZj1yKnAsdT1vLygtZCtwKSxnPXUqLWQ7ZS5tYXRyaXhXb3JsZC5kZWNvbXBvc2UodC5wb3NpdGlvbix0LnF1YXRlcm5pb24sdC5zY2FsZSksdC50cmFuc2xhdGVYKGcpLHQudHJhbnNsYXRlWih1KSx0Lm1hdHJpeFdvcmxkLmNvbXBvc2UodC5wb3NpdGlvbix0LnF1YXRlcm5pb24sdC5zY2FsZSksdC5tYXRyaXhXb3JsZEludmVyc2UuY29weSh0Lm1hdHJpeFdvcmxkKS5pbnZlcnQoKTtjb25zdCBoPXIrdSxiPXMrdTt0LnByb2plY3Rpb25NYXRyaXgubWFrZVBlcnNwZWN0aXZlKG0tZyxmKyhvLWcpLGwqcy9iKmgsYypzL2IqaCxoLGIpfSkoeSxnLGgpOnkucHJvamVjdGlvbk1hdHJpeC5jb3B5KGcucHJvamVjdGlvbk1hdHJpeCl9LHRoaXMuZ2V0Q2FtZXJhPWZ1bmN0aW9uKCl7cmV0dXJuIHl9LHRoaXMuZ2V0Rm92ZWF0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGwhPT1wP3AuZml4ZWRGb3ZlYXRpb246bnVsbCE9PW0/bS5maXhlZEZvdmVhdGlvbjp2b2lkIDB9LHRoaXMuc2V0Rm92ZWF0aW9uPWZ1bmN0aW9uKHQpe251bGwhPT1wJiYocC5maXhlZEZvdmVhdGlvbj10KSxudWxsIT09bSYmdm9pZCAwIT09bS5maXhlZEZvdmVhdGlvbiYmKG0uZml4ZWRGb3ZlYXRpb249dCl9O2xldCBrPW51bGw7Y29uc3QgUz1uZXcgWmN0O1Muc2V0QW5pbWF0aW9uTG9vcCgoZnVuY3Rpb24gRCh0LG4pe2lmKGw9bi5nZXRWaWV3ZXJQb3NlKHIpLG51bGwhPT1sKXtjb25zdCB0PWwudmlld3M7bnVsbCE9PW0mJm8uYmluZFhSRnJhbWVidWZmZXIobS5mcmFtZWJ1ZmZlcik7bGV0IG49ITE7dC5sZW5ndGghPT15LmNhbWVyYXMubGVuZ3RoJiYoeS5jYW1lcmFzLmxlbmd0aD0wLG49ITApO2ZvcihsZXQgaT0wO2k8dC5sZW5ndGg7aSsrKXtjb25zdCBhPXRbaV07bGV0IHI9bnVsbDtpZihudWxsIT09bSlyPW0uZ2V0Vmlld3BvcnQoYSk7ZWxzZXtjb25zdCB0PWMuZ2V0Vmlld1N1YkltYWdlKHAsYSk7by5iaW5kWFJGcmFtZWJ1ZmZlcihkKSx2b2lkIDAhPT10LmRlcHRoU3RlbmNpbFRleHR1cmUmJmUuZnJhbWVidWZmZXJUZXh0dXJlMkQoMzYxNjAsMzYwOTYsMzU1Myx0LmRlcHRoU3RlbmNpbFRleHR1cmUsMCksZS5mcmFtZWJ1ZmZlclRleHR1cmUyRCgzNjE2MCwzNjA2NCwzNTUzLHQuY29sb3JUZXh0dXJlLDApLHI9dC52aWV3cG9ydH1jb25zdCBzPWJbaV07cy5tYXRyaXguZnJvbUFycmF5KGEudHJhbnNmb3JtLm1hdHJpeCkscy5wcm9qZWN0aW9uTWF0cml4LmZyb21BcnJheShhLnByb2plY3Rpb25NYXRyaXgpLHMudmlld3BvcnQuc2V0KHIueCxyLnksci53aWR0aCxyLmhlaWdodCksMD09PWkmJnkubWF0cml4LmNvcHkocy5tYXRyaXgpLCEwPT09biYmeS5jYW1lcmFzLnB1c2gocyl9fWNvbnN0IGE9aS5pbnB1dFNvdXJjZXM7Zm9yKGxldCB0PTA7dDxmLmxlbmd0aDt0Kyspe2ZbdF0udXBkYXRlKGFbdF0sbixyKX1rJiZrKHQsbil9KSksdGhpcy5zZXRBbmltYXRpb25Mb29wPWZ1bmN0aW9uKHQpe2s9dH0sdGhpcy5kaXNwb3NlPWZ1bmN0aW9uKCl7fX19ZnVuY3Rpb24gSW10KHQpe2Z1bmN0aW9uIGUoZSxuKXtlLm9wYWNpdHkudmFsdWU9bi5vcGFjaXR5LG4uY29sb3ImJmUuZGlmZnVzZS52YWx1ZS5jb3B5KG4uY29sb3IpLG4uZW1pc3NpdmUmJmUuZW1pc3NpdmUudmFsdWUuY29weShuLmVtaXNzaXZlKS5tdWx0aXBseVNjYWxhcihuLmVtaXNzaXZlSW50ZW5zaXR5KSxuLm1hcCYmKGUubWFwLnZhbHVlPW4ubWFwKSxuLmFscGhhTWFwJiYoZS5hbHBoYU1hcC52YWx1ZT1uLmFscGhhTWFwKSxuLnNwZWN1bGFyTWFwJiYoZS5zcGVjdWxhck1hcC52YWx1ZT1uLnNwZWN1bGFyTWFwKTtjb25zdCBvPXQuZ2V0KG4pLmVudk1hcDtpZihvKXtlLmVudk1hcC52YWx1ZT1vLGUuZmxpcEVudk1hcC52YWx1ZT1vLmlzQ3ViZVRleHR1cmUmJiExPT09by5pc1JlbmRlclRhcmdldFRleHR1cmU/LTE6MSxlLnJlZmxlY3Rpdml0eS52YWx1ZT1uLnJlZmxlY3Rpdml0eSxlLnJlZnJhY3Rpb25SYXRpby52YWx1ZT1uLnJlZnJhY3Rpb25SYXRpbztjb25zdCBpPXQuZ2V0KG8pLl9fbWF4TWlwTGV2ZWw7dm9pZCAwIT09aSYmKGUubWF4TWlwTGV2ZWwudmFsdWU9aSl9bGV0IGksYTtuLmxpZ2h0TWFwJiYoZS5saWdodE1hcC52YWx1ZT1uLmxpZ2h0TWFwLGUubGlnaHRNYXBJbnRlbnNpdHkudmFsdWU9bi5saWdodE1hcEludGVuc2l0eSksbi5hb01hcCYmKGUuYW9NYXAudmFsdWU9bi5hb01hcCxlLmFvTWFwSW50ZW5zaXR5LnZhbHVlPW4uYW9NYXBJbnRlbnNpdHkpLG4ubWFwP2k9bi5tYXA6bi5zcGVjdWxhck1hcD9pPW4uc3BlY3VsYXJNYXA6bi5kaXNwbGFjZW1lbnRNYXA/aT1uLmRpc3BsYWNlbWVudE1hcDpuLm5vcm1hbE1hcD9pPW4ubm9ybWFsTWFwOm4uYnVtcE1hcD9pPW4uYnVtcE1hcDpuLnJvdWdobmVzc01hcD9pPW4ucm91Z2huZXNzTWFwOm4ubWV0YWxuZXNzTWFwP2k9bi5tZXRhbG5lc3NNYXA6bi5hbHBoYU1hcD9pPW4uYWxwaGFNYXA6bi5lbWlzc2l2ZU1hcD9pPW4uZW1pc3NpdmVNYXA6bi5jbGVhcmNvYXRNYXA/aT1uLmNsZWFyY29hdE1hcDpuLmNsZWFyY29hdE5vcm1hbE1hcD9pPW4uY2xlYXJjb2F0Tm9ybWFsTWFwOm4uY2xlYXJjb2F0Um91Z2huZXNzTWFwP2k9bi5jbGVhcmNvYXRSb3VnaG5lc3NNYXA6bi5zcGVjdWxhckludGVuc2l0eU1hcD9pPW4uc3BlY3VsYXJJbnRlbnNpdHlNYXA6bi5zcGVjdWxhclRpbnRNYXAmJihpPW4uc3BlY3VsYXJUaW50TWFwKSx2b2lkIDAhPT1pJiYoaS5pc1dlYkdMUmVuZGVyVGFyZ2V0JiYoaT1pLnRleHR1cmUpLCEwPT09aS5tYXRyaXhBdXRvVXBkYXRlJiZpLnVwZGF0ZU1hdHJpeCgpLGUudXZUcmFuc2Zvcm0udmFsdWUuY29weShpLm1hdHJpeCkpLG4uYW9NYXA/YT1uLmFvTWFwOm4ubGlnaHRNYXAmJihhPW4ubGlnaHRNYXApLHZvaWQgMCE9PWEmJihhLmlzV2ViR0xSZW5kZXJUYXJnZXQmJihhPWEudGV4dHVyZSksITA9PT1hLm1hdHJpeEF1dG9VcGRhdGUmJmEudXBkYXRlTWF0cml4KCksZS51djJUcmFuc2Zvcm0udmFsdWUuY29weShhLm1hdHJpeCkpfWZ1bmN0aW9uIG4oZSxuKXtlLnJvdWdobmVzcy52YWx1ZT1uLnJvdWdobmVzcyxlLm1ldGFsbmVzcy52YWx1ZT1uLm1ldGFsbmVzcyxuLnJvdWdobmVzc01hcCYmKGUucm91Z2huZXNzTWFwLnZhbHVlPW4ucm91Z2huZXNzTWFwKSxuLm1ldGFsbmVzc01hcCYmKGUubWV0YWxuZXNzTWFwLnZhbHVlPW4ubWV0YWxuZXNzTWFwKSxuLmVtaXNzaXZlTWFwJiYoZS5lbWlzc2l2ZU1hcC52YWx1ZT1uLmVtaXNzaXZlTWFwKSxuLmJ1bXBNYXAmJihlLmJ1bXBNYXAudmFsdWU9bi5idW1wTWFwLGUuYnVtcFNjYWxlLnZhbHVlPW4uYnVtcFNjYWxlLDE9PT1uLnNpZGUmJihlLmJ1bXBTY2FsZS52YWx1ZSo9LTEpKSxuLm5vcm1hbE1hcCYmKGUubm9ybWFsTWFwLnZhbHVlPW4ubm9ybWFsTWFwLGUubm9ybWFsU2NhbGUudmFsdWUuY29weShuLm5vcm1hbFNjYWxlKSwxPT09bi5zaWRlJiZlLm5vcm1hbFNjYWxlLnZhbHVlLm5lZ2F0ZSgpKSxuLmRpc3BsYWNlbWVudE1hcCYmKGUuZGlzcGxhY2VtZW50TWFwLnZhbHVlPW4uZGlzcGxhY2VtZW50TWFwLGUuZGlzcGxhY2VtZW50U2NhbGUudmFsdWU9bi5kaXNwbGFjZW1lbnRTY2FsZSxlLmRpc3BsYWNlbWVudEJpYXMudmFsdWU9bi5kaXNwbGFjZW1lbnRCaWFzKTt0LmdldChuKS5lbnZNYXAmJihlLmVudk1hcEludGVuc2l0eS52YWx1ZT1uLmVudk1hcEludGVuc2l0eSl9cmV0dXJue3JlZnJlc2hGb2dVbmlmb3JtczpmdW5jdGlvbiBvKHQsZSl7dC5mb2dDb2xvci52YWx1ZS5jb3B5KGUuY29sb3IpLGUuaXNGb2c/KHQuZm9nTmVhci52YWx1ZT1lLm5lYXIsdC5mb2dGYXIudmFsdWU9ZS5mYXIpOmUuaXNGb2dFeHAyJiYodC5mb2dEZW5zaXR5LnZhbHVlPWUuZGVuc2l0eSl9LHJlZnJlc2hNYXRlcmlhbFVuaWZvcm1zOmZ1bmN0aW9uIGkodCxvLGEscixzKXtvLmlzTWVzaEJhc2ljTWF0ZXJpYWw/ZSh0LG8pOm8uaXNNZXNoTGFtYmVydE1hdGVyaWFsPyhlKHQsbyksKGZ1bmN0aW9uIGwodCxlKXtlLmVtaXNzaXZlTWFwJiYodC5lbWlzc2l2ZU1hcC52YWx1ZT1lLmVtaXNzaXZlTWFwKX0pKHQsbykpOm8uaXNNZXNoVG9vbk1hdGVyaWFsPyhlKHQsbyksKGZ1bmN0aW9uIGModCxlKXtlLmdyYWRpZW50TWFwJiYodC5ncmFkaWVudE1hcC52YWx1ZT1lLmdyYWRpZW50TWFwKTtlLmVtaXNzaXZlTWFwJiYodC5lbWlzc2l2ZU1hcC52YWx1ZT1lLmVtaXNzaXZlTWFwKTtlLmJ1bXBNYXAmJih0LmJ1bXBNYXAudmFsdWU9ZS5idW1wTWFwLHQuYnVtcFNjYWxlLnZhbHVlPWUuYnVtcFNjYWxlLDE9PT1lLnNpZGUmJih0LmJ1bXBTY2FsZS52YWx1ZSo9LTEpKTtlLm5vcm1hbE1hcCYmKHQubm9ybWFsTWFwLnZhbHVlPWUubm9ybWFsTWFwLHQubm9ybWFsU2NhbGUudmFsdWUuY29weShlLm5vcm1hbFNjYWxlKSwxPT09ZS5zaWRlJiZ0Lm5vcm1hbFNjYWxlLnZhbHVlLm5lZ2F0ZSgpKTtlLmRpc3BsYWNlbWVudE1hcCYmKHQuZGlzcGxhY2VtZW50TWFwLnZhbHVlPWUuZGlzcGxhY2VtZW50TWFwLHQuZGlzcGxhY2VtZW50U2NhbGUudmFsdWU9ZS5kaXNwbGFjZW1lbnRTY2FsZSx0LmRpc3BsYWNlbWVudEJpYXMudmFsdWU9ZS5kaXNwbGFjZW1lbnRCaWFzKX0pKHQsbykpOm8uaXNNZXNoUGhvbmdNYXRlcmlhbD8oZSh0LG8pLChmdW5jdGlvbiBkKHQsZSl7dC5zcGVjdWxhci52YWx1ZS5jb3B5KGUuc3BlY3VsYXIpLHQuc2hpbmluZXNzLnZhbHVlPU1hdGgubWF4KGUuc2hpbmluZXNzLDFlLTQpLGUuZW1pc3NpdmVNYXAmJih0LmVtaXNzaXZlTWFwLnZhbHVlPWUuZW1pc3NpdmVNYXApO2UuYnVtcE1hcCYmKHQuYnVtcE1hcC52YWx1ZT1lLmJ1bXBNYXAsdC5idW1wU2NhbGUudmFsdWU9ZS5idW1wU2NhbGUsMT09PWUuc2lkZSYmKHQuYnVtcFNjYWxlLnZhbHVlKj0tMSkpO2Uubm9ybWFsTWFwJiYodC5ub3JtYWxNYXAudmFsdWU9ZS5ub3JtYWxNYXAsdC5ub3JtYWxTY2FsZS52YWx1ZS5jb3B5KGUubm9ybWFsU2NhbGUpLDE9PT1lLnNpZGUmJnQubm9ybWFsU2NhbGUudmFsdWUubmVnYXRlKCkpO2UuZGlzcGxhY2VtZW50TWFwJiYodC5kaXNwbGFjZW1lbnRNYXAudmFsdWU9ZS5kaXNwbGFjZW1lbnRNYXAsdC5kaXNwbGFjZW1lbnRTY2FsZS52YWx1ZT1lLmRpc3BsYWNlbWVudFNjYWxlLHQuZGlzcGxhY2VtZW50Qmlhcy52YWx1ZT1lLmRpc3BsYWNlbWVudEJpYXMpfSkodCxvKSk6by5pc01lc2hTdGFuZGFyZE1hdGVyaWFsPyhlKHQsbyksby5pc01lc2hQaHlzaWNhbE1hdGVyaWFsPyhmdW5jdGlvbiBwKHQsZSxvKXtuKHQsZSksdC5yZWZsZWN0aXZpdHkudmFsdWU9ZS5yZWZsZWN0aXZpdHksdC5jbGVhcmNvYXQudmFsdWU9ZS5jbGVhcmNvYXQsdC5jbGVhcmNvYXRSb3VnaG5lc3MudmFsdWU9ZS5jbGVhcmNvYXRSb3VnaG5lc3MsZS5zaGVlbiYmdC5zaGVlbi52YWx1ZS5jb3B5KGUuc2hlZW4pO2UuY2xlYXJjb2F0TWFwJiYodC5jbGVhcmNvYXRNYXAudmFsdWU9ZS5jbGVhcmNvYXRNYXApO2UuY2xlYXJjb2F0Um91Z2huZXNzTWFwJiYodC5jbGVhcmNvYXRSb3VnaG5lc3NNYXAudmFsdWU9ZS5jbGVhcmNvYXRSb3VnaG5lc3NNYXApO2UuY2xlYXJjb2F0Tm9ybWFsTWFwJiYodC5jbGVhcmNvYXROb3JtYWxTY2FsZS52YWx1ZS5jb3B5KGUuY2xlYXJjb2F0Tm9ybWFsU2NhbGUpLHQuY2xlYXJjb2F0Tm9ybWFsTWFwLnZhbHVlPWUuY2xlYXJjb2F0Tm9ybWFsTWFwLDE9PT1lLnNpZGUmJnQuY2xlYXJjb2F0Tm9ybWFsU2NhbGUudmFsdWUubmVnYXRlKCkpO3QudHJhbnNtaXNzaW9uLnZhbHVlPWUudHJhbnNtaXNzaW9uLGUudHJhbnNtaXNzaW9uTWFwJiYodC50cmFuc21pc3Npb25NYXAudmFsdWU9ZS50cmFuc21pc3Npb25NYXApO2UudHJhbnNtaXNzaW9uPjAmJih0LnRyYW5zbWlzc2lvblNhbXBsZXJNYXAudmFsdWU9by50ZXh0dXJlLHQudHJhbnNtaXNzaW9uU2FtcGxlclNpemUudmFsdWUuc2V0KG8ud2lkdGgsby5oZWlnaHQpKTt0LnRoaWNrbmVzcy52YWx1ZT1lLnRoaWNrbmVzcyxlLnRoaWNrbmVzc01hcCYmKHQudGhpY2tuZXNzTWFwLnZhbHVlPWUudGhpY2tuZXNzTWFwKTt0LmF0dGVudWF0aW9uRGlzdGFuY2UudmFsdWU9ZS5hdHRlbnVhdGlvbkRpc3RhbmNlLHQuYXR0ZW51YXRpb25UaW50LnZhbHVlLmNvcHkoZS5hdHRlbnVhdGlvblRpbnQpLHQuc3BlY3VsYXJJbnRlbnNpdHkudmFsdWU9ZS5zcGVjdWxhckludGVuc2l0eSx0LnNwZWN1bGFyVGludC52YWx1ZS5jb3B5KGUuc3BlY3VsYXJUaW50KSxlLnNwZWN1bGFySW50ZW5zaXR5TWFwJiYodC5zcGVjdWxhckludGVuc2l0eU1hcC52YWx1ZT1lLnNwZWN1bGFySW50ZW5zaXR5TWFwKTtlLnNwZWN1bGFyVGludE1hcCYmKHQuc3BlY3VsYXJUaW50TWFwLnZhbHVlPWUuc3BlY3VsYXJUaW50TWFwKX0pKHQsbyxzKTpuKHQsbykpOm8uaXNNZXNoTWF0Y2FwTWF0ZXJpYWw/KGUodCxvKSwoZnVuY3Rpb24gbSh0LGUpe2UubWF0Y2FwJiYodC5tYXRjYXAudmFsdWU9ZS5tYXRjYXApO2UuYnVtcE1hcCYmKHQuYnVtcE1hcC52YWx1ZT1lLmJ1bXBNYXAsdC5idW1wU2NhbGUudmFsdWU9ZS5idW1wU2NhbGUsMT09PWUuc2lkZSYmKHQuYnVtcFNjYWxlLnZhbHVlKj0tMSkpO2Uubm9ybWFsTWFwJiYodC5ub3JtYWxNYXAudmFsdWU9ZS5ub3JtYWxNYXAsdC5ub3JtYWxTY2FsZS52YWx1ZS5jb3B5KGUubm9ybWFsU2NhbGUpLDE9PT1lLnNpZGUmJnQubm9ybWFsU2NhbGUudmFsdWUubmVnYXRlKCkpO2UuZGlzcGxhY2VtZW50TWFwJiYodC5kaXNwbGFjZW1lbnRNYXAudmFsdWU9ZS5kaXNwbGFjZW1lbnRNYXAsdC5kaXNwbGFjZW1lbnRTY2FsZS52YWx1ZT1lLmRpc3BsYWNlbWVudFNjYWxlLHQuZGlzcGxhY2VtZW50Qmlhcy52YWx1ZT1lLmRpc3BsYWNlbWVudEJpYXMpfSkodCxvKSk6by5pc01lc2hEZXB0aE1hdGVyaWFsPyhlKHQsbyksKGZ1bmN0aW9uIGYodCxlKXtlLmRpc3BsYWNlbWVudE1hcCYmKHQuZGlzcGxhY2VtZW50TWFwLnZhbHVlPWUuZGlzcGxhY2VtZW50TWFwLHQuZGlzcGxhY2VtZW50U2NhbGUudmFsdWU9ZS5kaXNwbGFjZW1lbnRTY2FsZSx0LmRpc3BsYWNlbWVudEJpYXMudmFsdWU9ZS5kaXNwbGFjZW1lbnRCaWFzKX0pKHQsbykpOm8uaXNNZXNoRGlzdGFuY2VNYXRlcmlhbD8oZSh0LG8pLChmdW5jdGlvbiB1KHQsZSl7ZS5kaXNwbGFjZW1lbnRNYXAmJih0LmRpc3BsYWNlbWVudE1hcC52YWx1ZT1lLmRpc3BsYWNlbWVudE1hcCx0LmRpc3BsYWNlbWVudFNjYWxlLnZhbHVlPWUuZGlzcGxhY2VtZW50U2NhbGUsdC5kaXNwbGFjZW1lbnRCaWFzLnZhbHVlPWUuZGlzcGxhY2VtZW50Qmlhcyk7dC5yZWZlcmVuY2VQb3NpdGlvbi52YWx1ZS5jb3B5KGUucmVmZXJlbmNlUG9zaXRpb24pLHQubmVhckRpc3RhbmNlLnZhbHVlPWUubmVhckRpc3RhbmNlLHQuZmFyRGlzdGFuY2UudmFsdWU9ZS5mYXJEaXN0YW5jZX0pKHQsbykpOm8uaXNNZXNoTm9ybWFsTWF0ZXJpYWw/KGUodCxvKSwoZnVuY3Rpb24gZyh0LGUpe2UuYnVtcE1hcCYmKHQuYnVtcE1hcC52YWx1ZT1lLmJ1bXBNYXAsdC5idW1wU2NhbGUudmFsdWU9ZS5idW1wU2NhbGUsMT09PWUuc2lkZSYmKHQuYnVtcFNjYWxlLnZhbHVlKj0tMSkpO2Uubm9ybWFsTWFwJiYodC5ub3JtYWxNYXAudmFsdWU9ZS5ub3JtYWxNYXAsdC5ub3JtYWxTY2FsZS52YWx1ZS5jb3B5KGUubm9ybWFsU2NhbGUpLDE9PT1lLnNpZGUmJnQubm9ybWFsU2NhbGUudmFsdWUubmVnYXRlKCkpO2UuZGlzcGxhY2VtZW50TWFwJiYodC5kaXNwbGFjZW1lbnRNYXAudmFsdWU9ZS5kaXNwbGFjZW1lbnRNYXAsdC5kaXNwbGFjZW1lbnRTY2FsZS52YWx1ZT1lLmRpc3BsYWNlbWVudFNjYWxlLHQuZGlzcGxhY2VtZW50Qmlhcy52YWx1ZT1lLmRpc3BsYWNlbWVudEJpYXMpfSkodCxvKSk6by5pc0xpbmVCYXNpY01hdGVyaWFsPyghKGZ1bmN0aW9uIGgodCxlKXt0LmRpZmZ1c2UudmFsdWUuY29weShlLmNvbG9yKSx0Lm9wYWNpdHkudmFsdWU9ZS5vcGFjaXR5fSkodCxvKSxvLmlzTGluZURhc2hlZE1hdGVyaWFsJiYoZnVuY3Rpb24gYih0LGUpe3QuZGFzaFNpemUudmFsdWU9ZS5kYXNoU2l6ZSx0LnRvdGFsU2l6ZS52YWx1ZT1lLmRhc2hTaXplK2UuZ2FwU2l6ZSx0LnNjYWxlLnZhbHVlPWUuc2NhbGV9KSh0LG8pKTpvLmlzUG9pbnRzTWF0ZXJpYWw/KGZ1bmN0aW9uIHkodCxlLG4sbyl7dC5kaWZmdXNlLnZhbHVlLmNvcHkoZS5jb2xvciksdC5vcGFjaXR5LnZhbHVlPWUub3BhY2l0eSx0LnNpemUudmFsdWU9ZS5zaXplKm4sdC5zY2FsZS52YWx1ZT0uNSpvLGUubWFwJiYodC5tYXAudmFsdWU9ZS5tYXApO2UuYWxwaGFNYXAmJih0LmFscGhhTWFwLnZhbHVlPWUuYWxwaGFNYXApO2xldCBpO2UubWFwP2k9ZS5tYXA6ZS5hbHBoYU1hcCYmKGk9ZS5hbHBoYU1hcCk7dm9pZCAwIT09aSYmKCEwPT09aS5tYXRyaXhBdXRvVXBkYXRlJiZpLnVwZGF0ZU1hdHJpeCgpLHQudXZUcmFuc2Zvcm0udmFsdWUuY29weShpLm1hdHJpeCkpfSkodCxvLGEscik6by5pc1Nwcml0ZU1hdGVyaWFsPyhmdW5jdGlvbiBfKHQsZSl7dC5kaWZmdXNlLnZhbHVlLmNvcHkoZS5jb2xvciksdC5vcGFjaXR5LnZhbHVlPWUub3BhY2l0eSx0LnJvdGF0aW9uLnZhbHVlPWUucm90YXRpb24sZS5tYXAmJih0Lm1hcC52YWx1ZT1lLm1hcCk7ZS5hbHBoYU1hcCYmKHQuYWxwaGFNYXAudmFsdWU9ZS5hbHBoYU1hcCk7bGV0IG47ZS5tYXA/bj1lLm1hcDplLmFscGhhTWFwJiYobj1lLmFscGhhTWFwKTt2b2lkIDAhPT1uJiYoITA9PT1uLm1hdHJpeEF1dG9VcGRhdGUmJm4udXBkYXRlTWF0cml4KCksdC51dlRyYW5zZm9ybS52YWx1ZS5jb3B5KG4ubWF0cml4KSl9KSh0LG8pOm8uaXNTaGFkb3dNYXRlcmlhbD8odC5jb2xvci52YWx1ZS5jb3B5KG8uY29sb3IpLHQub3BhY2l0eS52YWx1ZT1vLm9wYWNpdHkpOm8uaXNTaGFkZXJNYXRlcmlhbCYmKG8udW5pZm9ybXNOZWVkVXBkYXRlPSExKX19fWZ1bmN0aW9uIEhtdCh0PXt9KXtjb25zdCBlPXZvaWQgMCE9PXQuY2FudmFzP3QuY2FudmFzOihmdW5jdGlvbiBuKCl7Y29uc3QgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiLCJjYW52YXMiKTtyZXR1cm4gdC5zdHlsZS5kaXNwbGF5PSJibG9jayIsdH0pKCksbz12b2lkIDAhPT10LmNvbnRleHQ/dC5jb250ZXh0Om51bGwsaT12b2lkIDAhPT10LmFscGhhJiZ0LmFscGhhLGE9dm9pZCAwPT09dC5kZXB0aHx8dC5kZXB0aCxyPXZvaWQgMD09PXQuc3RlbmNpbHx8dC5zdGVuY2lsLHM9dm9pZCAwIT09dC5hbnRpYWxpYXMmJnQuYW50aWFsaWFzLGw9dm9pZCAwPT09dC5wcmVtdWx0aXBsaWVkQWxwaGF8fHQucHJlbXVsdGlwbGllZEFscGhhLGM9dm9pZCAwIT09dC5wcmVzZXJ2ZURyYXdpbmdCdWZmZXImJnQucHJlc2VydmVEcmF3aW5nQnVmZmVyLGQ9dm9pZCAwIT09dC5wb3dlclByZWZlcmVuY2U/dC5wb3dlclByZWZlcmVuY2U6ImRlZmF1bHQiLHA9dm9pZCAwIT09dC5mYWlsSWZNYWpvclBlcmZvcm1hbmNlQ2F2ZWF0JiZ0LmZhaWxJZk1ham9yUGVyZm9ybWFuY2VDYXZlYXQ7bGV0IG09bnVsbCxmPW51bGw7Y29uc3QgdT1bXSxnPVtdO3RoaXMuZG9tRWxlbWVudD1lLHRoaXMuZGVidWc9e2NoZWNrU2hhZGVyRXJyb3JzOiEwfSx0aGlzLmF1dG9DbGVhcj0hMCx0aGlzLmF1dG9DbGVhckNvbG9yPSEwLHRoaXMuYXV0b0NsZWFyRGVwdGg9ITAsdGhpcy5hdXRvQ2xlYXJTdGVuY2lsPSEwLHRoaXMuc29ydE9iamVjdHM9ITAsdGhpcy5jbGlwcGluZ1BsYW5lcz1bXSx0aGlzLmxvY2FsQ2xpcHBpbmdFbmFibGVkPSExLHRoaXMuZ2FtbWFGYWN0b3I9Mix0aGlzLm91dHB1dEVuY29kaW5nPVFydCx0aGlzLnBoeXNpY2FsbHlDb3JyZWN0TGlnaHRzPSExLHRoaXMudG9uZU1hcHBpbmc9MCx0aGlzLnRvbmVNYXBwaW5nRXhwb3N1cmU9MTtjb25zdCBoPXRoaXM7bGV0IGI9ITEseT0wLF89MCxDPW51bGwsTT0tMSx2PW51bGw7Y29uc3QgeD1uZXcgdnN0LE89bmV3IHZzdDtsZXQgUD1udWxsLHc9ZS53aWR0aCxrPWUuaGVpZ2h0LFM9MSxEPW51bGwsUj1udWxsO2NvbnN0IEU9bmV3IHZzdCgwLDAsdyxrKSxBPW5ldyB2c3QoMCwwLHcsayk7bGV0IFQ9ITE7Y29uc3QgTj1bXSx6PW5ldyBxY3Q7bGV0IEk9ITEsSD0hMSxGPW51bGw7Y29uc3QgTD1uZXcgb2x0LEI9bmV3IHdzdCxWPXtiYWNrZ3JvdW5kOm51bGwsZm9nOm51bGwsZW52aXJvbm1lbnQ6bnVsbCxvdmVycmlkZU1hdGVyaWFsOm51bGwsaXNTY2VuZTohMH07ZnVuY3Rpb24gaigpe3JldHVybiBudWxsPT09Qz9TOjF9bGV0IFUsVyxHLFkscSxaLFgsSyxKLFEsJCx0dCxldCxudCxvdCxpdCxhdCxydCxzdCxsdCxjdCxkdCxwdCxtdD1vO2Z1bmN0aW9uIGZ0KHQsbil7Zm9yKGxldCBvPTA7bzx0Lmxlbmd0aDtvKyspe2NvbnN0IGk9ZS5nZXRDb250ZXh0KHRbb10sbik7aWYobnVsbCE9PWkpcmV0dXJuIGl9cmV0dXJuIG51bGx9dHJ5e2NvbnN0IHQ9e2FscGhhOmksZGVwdGg6YSxzdGVuY2lsOnIsYW50aWFsaWFzOnMscHJlbXVsdGlwbGllZEFscGhhOmwscHJlc2VydmVEcmF3aW5nQnVmZmVyOmMscG93ZXJQcmVmZXJlbmNlOmQsZmFpbElmTWFqb3JQZXJmb3JtYW5jZUNhdmVhdDpwfTtpZihlLmFkZEV2ZW50TGlzdGVuZXIoIndlYmdsY29udGV4dGxvc3QiLGh0LCExKSxlLmFkZEV2ZW50TGlzdGVuZXIoIndlYmdsY29udGV4dHJlc3RvcmVkIixidCwhMSksbnVsbD09PW10KXtjb25zdCBlPVsid2ViZ2wyIiwid2ViZ2wiLCJleHBlcmltZW50YWwtd2ViZ2wiXTtpZighMD09PWguaXNXZWJHTDFSZW5kZXJlciYmZS5zaGlmdCgpLG10PWZ0KGUsdCksbnVsbD09PW10KXRocm93IGZ0KGUpP25ldyBFcnJvcigiRXJyb3IgY3JlYXRpbmcgV2ViR0wgY29udGV4dCB3aXRoIHlvdXIgc2VsZWN0ZWQgYXR0cmlidXRlcy4iKTpuZXcgRXJyb3IoIkVycm9yIGNyZWF0aW5nIFdlYkdMIGNvbnRleHQuIil9dm9pZCAwPT09bXQuZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0JiYobXQuZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0PWZ1bmN0aW9uKCl7cmV0dXJue3JhbmdlTWluOjEscmFuZ2VNYXg6MSxwcmVjaXNpb246MX19KX1jYXRjaCh0KXt0aHJvdyBjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAiK3QubWVzc2FnZSksdH1mdW5jdGlvbiB1dCgpe1U9bmV3IHpkdChtdCksVz1uZXcgb2R0KG10LFUsdCksVS5pbml0KFcpLGR0PW5ldyBSbXQobXQsVSxXKSxHPW5ldyBTbXQobXQsVSxXKSxOWzBdPTEwMjksWT1uZXcgRmR0KG10KSxxPW5ldyB1bXQsWj1uZXcgRG10KG10LFUsRyxxLFcsZHQsWSksWD1uZXcgYWR0KGgpLEs9bmV3IE5kdChoKSxKPW5ldyBYY3QobXQsVykscHQ9bmV3IGVkdChtdCxVLEosVyksUT1uZXcgSWR0KG10LEosWSxwdCksJD1uZXcgamR0KG10LFEsSixZKSxzdD1uZXcgVmR0KG10KSxpdD1uZXcgaWR0KHEpLHR0PW5ldyBmbXQoaCxYLEssVSxXLHB0LGl0KSxldD1uZXcgSW10KHEpLG50PW5ldyB5bXQocSksb3Q9bmV3IE9tdChVLFcpLHJ0PW5ldyB0ZHQoaCxYLEcsJCxsKSxhdD1uZXcga210KGgsJCxXKSxsdD1uZXcgbmR0KG10LFUsWSxXKSxjdD1uZXcgSGR0KG10LFUsWSxXKSxZLnByb2dyYW1zPXR0LnByb2dyYW1zLGguY2FwYWJpbGl0aWVzPVcsaC5leHRlbnNpb25zPVUsaC5wcm9wZXJ0aWVzPXEsaC5yZW5kZXJMaXN0cz1udCxoLnNoYWRvd01hcD1hdCxoLnN0YXRlPUcsaC5pbmZvPVl9dXQoKTtjb25zdCBndD1uZXcgem10KGgsbXQpO2Z1bmN0aW9uIGh0KHQpe3QucHJldmVudERlZmF1bHQoKSxjb25zb2xlLmxvZygiVEhSRUUuV2ViR0xSZW5kZXJlcjogQ29udGV4dCBMb3N0LiIpLGI9ITB9ZnVuY3Rpb24gYnQoKXtjb25zb2xlLmxvZygiVEhSRUUuV2ViR0xSZW5kZXJlcjogQ29udGV4dCBSZXN0b3JlZC4iKSxiPSExO2NvbnN0IHQ9WS5hdXRvUmVzZXQsZT1hdC5lbmFibGVkLG49YXQuYXV0b1VwZGF0ZSxvPWF0Lm5lZWRzVXBkYXRlLGk9YXQudHlwZTt1dCgpLFkuYXV0b1Jlc2V0PXQsYXQuZW5hYmxlZD1lLGF0LmF1dG9VcGRhdGU9bixhdC5uZWVkc1VwZGF0ZT1vLGF0LnR5cGU9aX1mdW5jdGlvbiB5dCh0KXtjb25zdCBlPXQudGFyZ2V0O2UucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIseXQpLChmdW5jdGlvbiBuKHQpeyhmdW5jdGlvbiBlKHQpe2NvbnN0IGU9cS5nZXQodCkucHJvZ3JhbXM7dm9pZCAwIT09ZSYmZS5mb3JFYWNoKChmdW5jdGlvbih0KXt0dC5yZWxlYXNlUHJvZ3JhbSh0KX0pKX0pKHQpLHEucmVtb3ZlKHQpfSkoZSl9dGhpcy54cj1ndCx0aGlzLmdldENvbnRleHQ9ZnVuY3Rpb24oKXtyZXR1cm4gbXR9LHRoaXMuZ2V0Q29udGV4dEF0dHJpYnV0ZXM9ZnVuY3Rpb24oKXtyZXR1cm4gbXQuZ2V0Q29udGV4dEF0dHJpYnV0ZXMoKX0sdGhpcy5mb3JjZUNvbnRleHRMb3NzPWZ1bmN0aW9uKCl7Y29uc3QgdD1VLmdldCgiV0VCR0xfbG9zZV9jb250ZXh0Iik7dCYmdC5sb3NlQ29udGV4dCgpfSx0aGlzLmZvcmNlQ29udGV4dFJlc3RvcmU9ZnVuY3Rpb24oKXtjb25zdCB0PVUuZ2V0KCJXRUJHTF9sb3NlX2NvbnRleHQiKTt0JiZ0LnJlc3RvcmVDb250ZXh0KCl9LHRoaXMuZ2V0UGl4ZWxSYXRpbz1mdW5jdGlvbigpe3JldHVybiBTfSx0aGlzLnNldFBpeGVsUmF0aW89ZnVuY3Rpb24odCl7dm9pZCAwIT09dCYmKFM9dCx0aGlzLnNldFNpemUodyxrLCExKSl9LHRoaXMuZ2V0U2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gdC5zZXQodyxrKX0sdGhpcy5zZXRTaXplPWZ1bmN0aW9uKHQsbixvKXtndC5pc1ByZXNlbnRpbmc/Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBDYW4ndCBjaGFuZ2Ugc2l6ZSB3aGlsZSBWUiBkZXZpY2UgaXMgcHJlc2VudGluZy4iKToodz10LGs9bixlLndpZHRoPU1hdGguZmxvb3IodCpTKSxlLmhlaWdodD1NYXRoLmZsb29yKG4qUyksITEhPT1vJiYoZS5zdHlsZS53aWR0aD10KyJweCIsZS5zdHlsZS5oZWlnaHQ9bisicHgiKSx0aGlzLnNldFZpZXdwb3J0KDAsMCx0LG4pKX0sdGhpcy5nZXREcmF3aW5nQnVmZmVyU2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gdC5zZXQodypTLGsqUykuZmxvb3IoKX0sdGhpcy5zZXREcmF3aW5nQnVmZmVyU2l6ZT1mdW5jdGlvbih0LG4sbyl7dz10LGs9bixTPW8sZS53aWR0aD1NYXRoLmZsb29yKHQqbyksZS5oZWlnaHQ9TWF0aC5mbG9vcihuKm8pLHRoaXMuc2V0Vmlld3BvcnQoMCwwLHQsbil9LHRoaXMuZ2V0Q3VycmVudFZpZXdwb3J0PWZ1bmN0aW9uKHQpe3JldHVybiB0LmNvcHkoeCl9LHRoaXMuZ2V0Vmlld3BvcnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQuY29weShFKX0sdGhpcy5zZXRWaWV3cG9ydD1mdW5jdGlvbih0LGUsbixvKXt0LmlzVmVjdG9yND9FLnNldCh0LngsdC55LHQueix0LncpOkUuc2V0KHQsZSxuLG8pLEcudmlld3BvcnQoeC5jb3B5KEUpLm11bHRpcGx5U2NhbGFyKFMpLmZsb29yKCkpfSx0aGlzLmdldFNjaXNzb3I9ZnVuY3Rpb24odCl7cmV0dXJuIHQuY29weShBKX0sdGhpcy5zZXRTY2lzc29yPWZ1bmN0aW9uKHQsZSxuLG8pe3QuaXNWZWN0b3I0P0Euc2V0KHQueCx0LnksdC56LHQudyk6QS5zZXQodCxlLG4sbyksRy5zY2lzc29yKE8uY29weShBKS5tdWx0aXBseVNjYWxhcihTKS5mbG9vcigpKX0sdGhpcy5nZXRTY2lzc29yVGVzdD1mdW5jdGlvbigpe3JldHVybiBUfSx0aGlzLnNldFNjaXNzb3JUZXN0PWZ1bmN0aW9uKHQpe0cuc2V0U2Npc3NvclRlc3QoVD10KX0sdGhpcy5zZXRPcGFxdWVTb3J0PWZ1bmN0aW9uKHQpe0Q9dH0sdGhpcy5zZXRUcmFuc3BhcmVudFNvcnQ9ZnVuY3Rpb24odCl7Uj10fSx0aGlzLmdldENsZWFyQ29sb3I9ZnVuY3Rpb24odCl7cmV0dXJuIHQuY29weShydC5nZXRDbGVhckNvbG9yKCkpfSx0aGlzLnNldENsZWFyQ29sb3I9ZnVuY3Rpb24oKXtydC5zZXRDbGVhckNvbG9yLmFwcGx5KHJ0LGFyZ3VtZW50cyl9LHRoaXMuZ2V0Q2xlYXJBbHBoYT1mdW5jdGlvbigpe3JldHVybiBydC5nZXRDbGVhckFscGhhKCl9LHRoaXMuc2V0Q2xlYXJBbHBoYT1mdW5jdGlvbigpe3J0LnNldENsZWFyQWxwaGEuYXBwbHkocnQsYXJndW1lbnRzKX0sdGhpcy5jbGVhcj1mdW5jdGlvbih0LGUsbil7bGV0IG89MDsodm9pZCAwPT09dHx8dCkmJihvfD0xNjM4NCksKHZvaWQgMD09PWV8fGUpJiYob3w9MjU2KSwodm9pZCAwPT09bnx8bikmJihvfD0xMDI0KSxtdC5jbGVhcihvKX0sdGhpcy5jbGVhckNvbG9yPWZ1bmN0aW9uKCl7dGhpcy5jbGVhcighMCwhMSwhMSl9LHRoaXMuY2xlYXJEZXB0aD1mdW5jdGlvbigpe3RoaXMuY2xlYXIoITEsITAsITEpfSx0aGlzLmNsZWFyU3RlbmNpbD1mdW5jdGlvbigpe3RoaXMuY2xlYXIoITEsITEsITApfSx0aGlzLmRpc3Bvc2U9ZnVuY3Rpb24oKXtlLnJlbW92ZUV2ZW50TGlzdGVuZXIoIndlYmdsY29udGV4dGxvc3QiLGh0LCExKSxlLnJlbW92ZUV2ZW50TGlzdGVuZXIoIndlYmdsY29udGV4dHJlc3RvcmVkIixidCwhMSksbnQuZGlzcG9zZSgpLG90LmRpc3Bvc2UoKSxxLmRpc3Bvc2UoKSxYLmRpc3Bvc2UoKSxLLmRpc3Bvc2UoKSwkLmRpc3Bvc2UoKSxwdC5kaXNwb3NlKCksZ3QuZGlzcG9zZSgpLGd0LnJlbW92ZUV2ZW50TGlzdGVuZXIoInNlc3Npb25zdGFydCIsQ3QpLGd0LnJlbW92ZUV2ZW50TGlzdGVuZXIoInNlc3Npb25lbmQiLE10KSxGJiYoRi5kaXNwb3NlKCksRj1udWxsKSx2dC5zdG9wKCl9LHRoaXMucmVuZGVyQnVmZmVySW1tZWRpYXRlPWZ1bmN0aW9uKHQsZSl7cHQuaW5pdEF0dHJpYnV0ZXMoKTtjb25zdCBuPXEuZ2V0KHQpO3QuaGFzUG9zaXRpb25zJiYhbi5wb3NpdGlvbiYmKG4ucG9zaXRpb249bXQuY3JlYXRlQnVmZmVyKCkpLHQuaGFzTm9ybWFscyYmIW4ubm9ybWFsJiYobi5ub3JtYWw9bXQuY3JlYXRlQnVmZmVyKCkpLHQuaGFzVXZzJiYhbi51diYmKG4udXY9bXQuY3JlYXRlQnVmZmVyKCkpLHQuaGFzQ29sb3JzJiYhbi5jb2xvciYmKG4uY29sb3I9bXQuY3JlYXRlQnVmZmVyKCkpO2NvbnN0IG89ZS5nZXRBdHRyaWJ1dGVzKCk7dC5oYXNQb3NpdGlvbnMmJihtdC5iaW5kQnVmZmVyKDM0OTYyLG4ucG9zaXRpb24pLG10LmJ1ZmZlckRhdGEoMzQ5NjIsdC5wb3NpdGlvbkFycmF5LDM1MDQ4KSxwdC5lbmFibGVBdHRyaWJ1dGUoby5wb3NpdGlvbiksbXQudmVydGV4QXR0cmliUG9pbnRlcihvLnBvc2l0aW9uLDMsNTEyNiwhMSwwLDApKSx0Lmhhc05vcm1hbHMmJihtdC5iaW5kQnVmZmVyKDM0OTYyLG4ubm9ybWFsKSxtdC5idWZmZXJEYXRhKDM0OTYyLHQubm9ybWFsQXJyYXksMzUwNDgpLHB0LmVuYWJsZUF0dHJpYnV0ZShvLm5vcm1hbCksbXQudmVydGV4QXR0cmliUG9pbnRlcihvLm5vcm1hbCwzLDUxMjYsITEsMCwwKSksdC5oYXNVdnMmJihtdC5iaW5kQnVmZmVyKDM0OTYyLG4udXYpLG10LmJ1ZmZlckRhdGEoMzQ5NjIsdC51dkFycmF5LDM1MDQ4KSxwdC5lbmFibGVBdHRyaWJ1dGUoby51diksbXQudmVydGV4QXR0cmliUG9pbnRlcihvLnV2LDIsNTEyNiwhMSwwLDApKSx0Lmhhc0NvbG9ycyYmKG10LmJpbmRCdWZmZXIoMzQ5NjIsbi5jb2xvciksbXQuYnVmZmVyRGF0YSgzNDk2Mix0LmNvbG9yQXJyYXksMzUwNDgpLHB0LmVuYWJsZUF0dHJpYnV0ZShvLmNvbG9yKSxtdC52ZXJ0ZXhBdHRyaWJQb2ludGVyKG8uY29sb3IsMyw1MTI2LCExLDAsMCkpLHB0LmRpc2FibGVVbnVzZWRBdHRyaWJ1dGVzKCksbXQuZHJhd0FycmF5cyg0LDAsdC5jb3VudCksdC5jb3VudD0wfSx0aGlzLnJlbmRlckJ1ZmZlckRpcmVjdD1mdW5jdGlvbih0LGUsbixvLGksYSl7bnVsbD09PWUmJihlPVYpO2NvbnN0IHI9aS5pc01lc2gmJmkubWF0cml4V29ybGQuZGV0ZXJtaW5hbnQoKTwwLHM9U3QodCxlLG8saSk7Ry5zZXRNYXRlcmlhbChvLHIpO2xldCBsPW4uaW5kZXg7Y29uc3QgYz1uLmF0dHJpYnV0ZXMucG9zaXRpb247aWYobnVsbD09PWwpe2lmKHZvaWQgMD09PWN8fDA9PT1jLmNvdW50KXJldHVybn1lbHNlIGlmKDA9PT1sLmNvdW50KXJldHVybjtsZXQgZCxwPTE7ITA9PT1vLndpcmVmcmFtZSYmKGw9US5nZXRXaXJlZnJhbWVBdHRyaWJ1dGUobikscD0yKSx2b2lkIDA9PT1uLm1vcnBoQXR0cmlidXRlcy5wb3NpdGlvbiYmdm9pZCAwPT09bi5tb3JwaEF0dHJpYnV0ZXMubm9ybWFsfHxzdC51cGRhdGUoaSxuLG8scykscHQuc2V0dXAoaSxvLHMsbixsKTtsZXQgbT1sdDtudWxsIT09bCYmKGQ9Si5nZXQobCksbT1jdCxtLnNldEluZGV4KGQpKTtjb25zdCBmPW51bGwhPT1sP2wuY291bnQ6Yy5jb3VudCx1PW4uZHJhd1JhbmdlLnN0YXJ0KnAsZz1uLmRyYXdSYW5nZS5jb3VudCpwLGg9bnVsbCE9PWE/YS5zdGFydCpwOjAsYj1udWxsIT09YT9hLmNvdW50KnA6MS8wLHk9TWF0aC5tYXgodSxoKSxfPU1hdGgubWluKGYsdStnLGgrYiktMSxDPU1hdGgubWF4KDAsXy15KzEpO2lmKDAhPT1DKXtpZihpLmlzTWVzaCkhMD09PW8ud2lyZWZyYW1lPyhHLnNldExpbmVXaWR0aChvLndpcmVmcmFtZUxpbmV3aWR0aCpqKCkpLG0uc2V0TW9kZSgxKSk6bS5zZXRNb2RlKDQpO2Vsc2UgaWYoaS5pc0xpbmUpe2xldCB0PW8ubGluZXdpZHRoO3ZvaWQgMD09PXQmJih0PTEpLEcuc2V0TGluZVdpZHRoKHQqaigpKSxtLnNldE1vZGUoaS5pc0xpbmVTZWdtZW50cz8xOmkuaXNMaW5lTG9vcD8yOjMpfWVsc2UgaS5pc1BvaW50cz9tLnNldE1vZGUoMCk6aS5pc1Nwcml0ZSYmbS5zZXRNb2RlKDQpO2lmKGkuaXNJbnN0YW5jZWRNZXNoKW0ucmVuZGVySW5zdGFuY2VzKHksQyxpLmNvdW50KTtlbHNlIGlmKG4uaXNJbnN0YW5jZWRCdWZmZXJHZW9tZXRyeSl7Y29uc3QgdD1NYXRoLm1pbihuLmluc3RhbmNlQ291bnQsbi5fbWF4SW5zdGFuY2VDb3VudCk7bS5yZW5kZXJJbnN0YW5jZXMoeSxDLHQpfWVsc2UgbS5yZW5kZXIoeSxDKX19LHRoaXMuY29tcGlsZT1mdW5jdGlvbih0LGUpe2Y9b3QuZ2V0KHQpLGYuaW5pdCgpLGcucHVzaChmKSx0LnRyYXZlcnNlVmlzaWJsZSgoZnVuY3Rpb24odCl7dC5pc0xpZ2h0JiZ0LmxheWVycy50ZXN0KGUubGF5ZXJzKSYmKGYucHVzaExpZ2h0KHQpLHQuY2FzdFNoYWRvdyYmZi5wdXNoU2hhZG93KHQpKX0pKSxmLnNldHVwTGlnaHRzKCksdC50cmF2ZXJzZSgoZnVuY3Rpb24oZSl7Y29uc3Qgbj1lLm1hdGVyaWFsO2lmKG4paWYoQXJyYXkuaXNBcnJheShuKSlmb3IobGV0IG89MDtvPG4ubGVuZ3RoO28rKyl7d3QobltvXSx0LGUpfWVsc2Ugd3Qobix0LGUpfSkpLGcucG9wKCksZj1udWxsfTtsZXQgX3Q9bnVsbDtmdW5jdGlvbiBDdCgpe3Z0LnN0b3AoKX1mdW5jdGlvbiBNdCgpe3Z0LnN0YXJ0KCl9Y29uc3QgdnQ9bmV3IFpjdDtmdW5jdGlvbiB4dCh0LGUsbixvKXtpZighMT09PXQudmlzaWJsZSlyZXR1cm47aWYodC5sYXllcnMudGVzdChlLmxheWVycykpaWYodC5pc0dyb3VwKW49dC5yZW5kZXJPcmRlcjtlbHNlIGlmKHQuaXNMT0QpITA9PT10LmF1dG9VcGRhdGUmJnQudXBkYXRlKGUpO2Vsc2UgaWYodC5pc0xpZ2h0KWYucHVzaExpZ2h0KHQpLHQuY2FzdFNoYWRvdyYmZi5wdXNoU2hhZG93KHQpO2Vsc2UgaWYodC5pc1Nwcml0ZSl7aWYoIXQuZnJ1c3R1bUN1bGxlZHx8ei5pbnRlcnNlY3RzU3ByaXRlKHQpKXtvJiZCLnNldEZyb21NYXRyaXhQb3NpdGlvbih0Lm1hdHJpeFdvcmxkKS5hcHBseU1hdHJpeDQoTCk7Y29uc3QgZT0kLnVwZGF0ZSh0KSxpPXQubWF0ZXJpYWw7aS52aXNpYmxlJiZtLnB1c2godCxlLGksbixCLnosbnVsbCl9fWVsc2UgaWYodC5pc0ltbWVkaWF0ZVJlbmRlck9iamVjdClvJiZCLnNldEZyb21NYXRyaXhQb3NpdGlvbih0Lm1hdHJpeFdvcmxkKS5hcHBseU1hdHJpeDQoTCksbS5wdXNoKHQsbnVsbCx0Lm1hdGVyaWFsLG4sQi56LG51bGwpO2Vsc2UgaWYoKHQuaXNNZXNofHx0LmlzTGluZXx8dC5pc1BvaW50cykmJih0LmlzU2tpbm5lZE1lc2gmJnQuc2tlbGV0b24uZnJhbWUhPT1ZLnJlbmRlci5mcmFtZSYmKHQuc2tlbGV0b24udXBkYXRlKCksdC5za2VsZXRvbi5mcmFtZT1ZLnJlbmRlci5mcmFtZSksIXQuZnJ1c3R1bUN1bGxlZHx8ei5pbnRlcnNlY3RzT2JqZWN0KHQpKSl7byYmQi5zZXRGcm9tTWF0cml4UG9zaXRpb24odC5tYXRyaXhXb3JsZCkuYXBwbHlNYXRyaXg0KEwpO2NvbnN0IGU9JC51cGRhdGUodCksaT10Lm1hdGVyaWFsO2lmKEFycmF5LmlzQXJyYXkoaSkpe2NvbnN0IG89ZS5ncm91cHM7Zm9yKGxldCBhPTAscj1vLmxlbmd0aDthPHI7YSsrKXtjb25zdCByPW9bYV0scz1pW3IubWF0ZXJpYWxJbmRleF07cyYmcy52aXNpYmxlJiZtLnB1c2godCxlLHMsbixCLnoscil9fWVsc2UgaS52aXNpYmxlJiZtLnB1c2godCxlLGksbixCLnosbnVsbCl9Y29uc3QgaT10LmNoaWxkcmVuO2ZvcihsZXQgdD0wLGE9aS5sZW5ndGg7dDxhO3QrKyl4dChpW3RdLGUsbixvKX1mdW5jdGlvbiBPdCh0LGUsbil7Y29uc3Qgbz0hMD09PWUuaXNTY2VuZT9lLm92ZXJyaWRlTWF0ZXJpYWw6bnVsbDtpZihuLmlzQXJyYXlDYW1lcmEpe2NvbnN0IGk9bi5jYW1lcmFzO2ZvcihsZXQgbj0wLGE9aS5sZW5ndGg7bjxhO24rKyl7Y29uc3QgYT1pW25dO0cudmlld3BvcnQoeC5jb3B5KGEudmlld3BvcnQpKSxmLnNldHVwTGlnaHRzVmlldyhhKTtmb3IobGV0IG49MCxpPXQubGVuZ3RoO248aTtuKyspe2NvbnN0IGk9dFtuXSxyPWkub2JqZWN0LHM9aS5nZW9tZXRyeSxsPW51bGw9PT1vP2kubWF0ZXJpYWw6byxjPWkuZ3JvdXA7ci5sYXllcnMudGVzdChhLmxheWVycykmJlB0KHIsZSxhLHMsbCxjKX19fWVsc2UgZm9yKGxldCBpPTAsYT10Lmxlbmd0aDtpPGE7aSsrKXtjb25zdCBhPXRbaV07UHQoYS5vYmplY3QsZSxuLGEuZ2VvbWV0cnksbnVsbD09PW8/YS5tYXRlcmlhbDpvLGEuZ3JvdXApfX1mdW5jdGlvbiBQdCh0LGUsbixvLGksYSl7aWYodC5vbkJlZm9yZVJlbmRlcihoLGUsbixvLGksYSksdC5tb2RlbFZpZXdNYXRyaXgubXVsdGlwbHlNYXRyaWNlcyhuLm1hdHJpeFdvcmxkSW52ZXJzZSx0Lm1hdHJpeFdvcmxkKSx0Lm5vcm1hbE1hdHJpeC5nZXROb3JtYWxNYXRyaXgodC5tb2RlbFZpZXdNYXRyaXgpLHQuaXNJbW1lZGlhdGVSZW5kZXJPYmplY3Qpe2NvbnN0IG89U3QobixlLGksdCk7Ry5zZXRNYXRlcmlhbChpKSxwdC5yZXNldCgpLChmdW5jdGlvbiByKHQsZSl7dC5yZW5kZXIoKGZ1bmN0aW9uKHQpe2gucmVuZGVyQnVmZmVySW1tZWRpYXRlKHQsZSl9KSl9KSh0LG8pfWVsc2UhMD09PWkudHJhbnNwYXJlbnQmJjI9PT1pLnNpZGU/KGkuc2lkZT0xLGkubmVlZHNVcGRhdGU9ITAsaC5yZW5kZXJCdWZmZXJEaXJlY3QobixlLG8saSx0LGEpLGkuc2lkZT0wLGkubmVlZHNVcGRhdGU9ITAsaC5yZW5kZXJCdWZmZXJEaXJlY3QobixlLG8saSx0LGEpLGkuc2lkZT0yKTpoLnJlbmRlckJ1ZmZlckRpcmVjdChuLGUsbyxpLHQsYSk7dC5vbkFmdGVyUmVuZGVyKGgsZSxuLG8saSxhKX1mdW5jdGlvbiB3dCh0LGUsbil7ITAhPT1lLmlzU2NlbmUmJihlPVYpO2NvbnN0IG89cS5nZXQodCksaT1mLnN0YXRlLmxpZ2h0cyxhPWkuc3RhdGUudmVyc2lvbixyPXR0LmdldFBhcmFtZXRlcnModCxpLnN0YXRlLGYuc3RhdGUuc2hhZG93c0FycmF5LGUsbikscz10dC5nZXRQcm9ncmFtQ2FjaGVLZXkocik7bGV0IGw9by5wcm9ncmFtcztvLmVudmlyb25tZW50PXQuaXNNZXNoU3RhbmRhcmRNYXRlcmlhbD9lLmVudmlyb25tZW50Om51bGwsby5mb2c9ZS5mb2csby5lbnZNYXA9KHQuaXNNZXNoU3RhbmRhcmRNYXRlcmlhbD9LOlgpLmdldCh0LmVudk1hcHx8by5lbnZpcm9ubWVudCksdm9pZCAwPT09bCYmKHQuYWRkRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIseXQpLGw9bmV3IE1hcCxvLnByb2dyYW1zPWwpO2xldCBjPWwuZ2V0KHMpO2lmKHZvaWQgMCE9PWMpe2lmKG8uY3VycmVudFByb2dyYW09PT1jJiZvLmxpZ2h0c1N0YXRlVmVyc2lvbj09PWEpcmV0dXJuIGt0KHQsciksY31lbHNlIHIudW5pZm9ybXM9dHQuZ2V0VW5pZm9ybXModCksdC5vbkJ1aWxkKHIsaCksdC5vbkJlZm9yZUNvbXBpbGUocixoKSxjPXR0LmFjcXVpcmVQcm9ncmFtKHIscyksbC5zZXQocyxjKSxvLnVuaWZvcm1zPXIudW5pZm9ybXM7Y29uc3QgZD1vLnVuaWZvcm1zOyh0LmlzU2hhZGVyTWF0ZXJpYWx8fHQuaXNSYXdTaGFkZXJNYXRlcmlhbCkmJiEwIT09dC5jbGlwcGluZ3x8KGQuY2xpcHBpbmdQbGFuZXM9aXQudW5pZm9ybSksa3QodCxyKSxvLm5lZWRzTGlnaHRzPShmdW5jdGlvbiBwKHQpe3JldHVybiB0LmlzTWVzaExhbWJlcnRNYXRlcmlhbHx8dC5pc01lc2hUb29uTWF0ZXJpYWx8fHQuaXNNZXNoUGhvbmdNYXRlcmlhbHx8dC5pc01lc2hTdGFuZGFyZE1hdGVyaWFsfHx0LmlzU2hhZG93TWF0ZXJpYWx8fHQuaXNTaGFkZXJNYXRlcmlhbCYmITA9PT10LmxpZ2h0c30pKHQpLG8ubGlnaHRzU3RhdGVWZXJzaW9uPWEsby5uZWVkc0xpZ2h0cyYmKGQuYW1iaWVudExpZ2h0Q29sb3IudmFsdWU9aS5zdGF0ZS5hbWJpZW50LGQubGlnaHRQcm9iZS52YWx1ZT1pLnN0YXRlLnByb2JlLGQuZGlyZWN0aW9uYWxMaWdodHMudmFsdWU9aS5zdGF0ZS5kaXJlY3Rpb25hbCxkLmRpcmVjdGlvbmFsTGlnaHRTaGFkb3dzLnZhbHVlPWkuc3RhdGUuZGlyZWN0aW9uYWxTaGFkb3csZC5zcG90TGlnaHRzLnZhbHVlPWkuc3RhdGUuc3BvdCxkLnNwb3RMaWdodFNoYWRvd3MudmFsdWU9aS5zdGF0ZS5zcG90U2hhZG93LGQucmVjdEFyZWFMaWdodHMudmFsdWU9aS5zdGF0ZS5yZWN0QXJlYSxkLmx0Y18xLnZhbHVlPWkuc3RhdGUucmVjdEFyZWFMVEMxLGQubHRjXzIudmFsdWU9aS5zdGF0ZS5yZWN0QXJlYUxUQzIsZC5wb2ludExpZ2h0cy52YWx1ZT1pLnN0YXRlLnBvaW50LGQucG9pbnRMaWdodFNoYWRvd3MudmFsdWU9aS5zdGF0ZS5wb2ludFNoYWRvdyxkLmhlbWlzcGhlcmVMaWdodHMudmFsdWU9aS5zdGF0ZS5oZW1pLGQuZGlyZWN0aW9uYWxTaGFkb3dNYXAudmFsdWU9aS5zdGF0ZS5kaXJlY3Rpb25hbFNoYWRvd01hcCxkLmRpcmVjdGlvbmFsU2hhZG93TWF0cml4LnZhbHVlPWkuc3RhdGUuZGlyZWN0aW9uYWxTaGFkb3dNYXRyaXgsZC5zcG90U2hhZG93TWFwLnZhbHVlPWkuc3RhdGUuc3BvdFNoYWRvd01hcCxkLnNwb3RTaGFkb3dNYXRyaXgudmFsdWU9aS5zdGF0ZS5zcG90U2hhZG93TWF0cml4LGQucG9pbnRTaGFkb3dNYXAudmFsdWU9aS5zdGF0ZS5wb2ludFNoYWRvd01hcCxkLnBvaW50U2hhZG93TWF0cml4LnZhbHVlPWkuc3RhdGUucG9pbnRTaGFkb3dNYXRyaXgpO2NvbnN0IG09Yy5nZXRVbmlmb3JtcygpLHU9WXB0LnNlcVdpdGhWYWx1ZShtLnNlcSxkKTtyZXR1cm4gby5jdXJyZW50UHJvZ3JhbT1jLG8udW5pZm9ybXNMaXN0PXUsY31mdW5jdGlvbiBrdCh0LGUpe2NvbnN0IG49cS5nZXQodCk7bi5vdXRwdXRFbmNvZGluZz1lLm91dHB1dEVuY29kaW5nLG4uaW5zdGFuY2luZz1lLmluc3RhbmNpbmcsbi5za2lubmluZz1lLnNraW5uaW5nLG4ubW9ycGhUYXJnZXRzPWUubW9ycGhUYXJnZXRzLG4ubW9ycGhOb3JtYWxzPWUubW9ycGhOb3JtYWxzLG4ubnVtQ2xpcHBpbmdQbGFuZXM9ZS5udW1DbGlwcGluZ1BsYW5lcyxuLm51bUludGVyc2VjdGlvbj1lLm51bUNsaXBJbnRlcnNlY3Rpb24sbi52ZXJ0ZXhBbHBoYXM9ZS52ZXJ0ZXhBbHBoYXMsbi52ZXJ0ZXhUYW5nZW50cz1lLnZlcnRleFRhbmdlbnRzfWZ1bmN0aW9uIFN0KHQsZSxuLG8peyEwIT09ZS5pc1NjZW5lJiYoZT1WKSxaLnJlc2V0VGV4dHVyZVVuaXRzKCk7Y29uc3QgaT1lLmZvZyxhPW51bGw9PT1DP2gub3V0cHV0RW5jb2Rpbmc6Qy50ZXh0dXJlLmVuY29kaW5nLHI9KG4uaXNNZXNoU3RhbmRhcmRNYXRlcmlhbD9LOlgpLmdldChuLmVudk1hcHx8KG4uaXNNZXNoU3RhbmRhcmRNYXRlcmlhbD9lLmVudmlyb25tZW50Om51bGwpKSxzPSEwPT09bi52ZXJ0ZXhDb2xvcnMmJiEhby5nZW9tZXRyeSYmISFvLmdlb21ldHJ5LmF0dHJpYnV0ZXMuY29sb3ImJjQ9PT1vLmdlb21ldHJ5LmF0dHJpYnV0ZXMuY29sb3IuaXRlbVNpemUsbD0hIW8uZ2VvbWV0cnkmJiEhby5nZW9tZXRyeS5hdHRyaWJ1dGVzLnRhbmdlbnQsYz0hIW8uZ2VvbWV0cnkmJiEhby5nZW9tZXRyeS5tb3JwaEF0dHJpYnV0ZXMucG9zaXRpb24sZD0hIW8uZ2VvbWV0cnkmJiEhby5nZW9tZXRyeS5tb3JwaEF0dHJpYnV0ZXMubm9ybWFsLHA9cS5nZXQobiksbT1mLnN0YXRlLmxpZ2h0cztpZighMD09PUkmJighMD09PUh8fHQhPT12KSl7aXQuc2V0U3RhdGUobix0LHQ9PT12JiZuLmlkPT09TSl9bGV0IHU9ITE7bi52ZXJzaW9uPT09cC5fX3ZlcnNpb24/cC5uZWVkc0xpZ2h0cyYmcC5saWdodHNTdGF0ZVZlcnNpb24hPT1tLnN0YXRlLnZlcnNpb258fHAub3V0cHV0RW5jb2RpbmchPT1hfHxvLmlzSW5zdGFuY2VkTWVzaCYmITE9PT1wLmluc3RhbmNpbmc/dT0hMDpvLmlzSW5zdGFuY2VkTWVzaHx8ITAhPT1wLmluc3RhbmNpbmc/by5pc1NraW5uZWRNZXNoJiYhMT09PXAuc2tpbm5pbmc/dT0hMDpvLmlzU2tpbm5lZE1lc2h8fCEwIT09cC5za2lubmluZz9wLmVudk1hcCE9PXJ8fG4uZm9nJiZwLmZvZyE9PWk/dT0hMDp2b2lkIDA9PT1wLm51bUNsaXBwaW5nUGxhbmVzfHxwLm51bUNsaXBwaW5nUGxhbmVzPT09aXQubnVtUGxhbmVzJiZwLm51bUludGVyc2VjdGlvbj09PWl0Lm51bUludGVyc2VjdGlvbj8ocC52ZXJ0ZXhBbHBoYXMhPT1zfHxwLnZlcnRleFRhbmdlbnRzIT09bHx8cC5tb3JwaFRhcmdldHMhPT1jfHxwLm1vcnBoTm9ybWFscyE9PWQpJiYodT0hMCk6dT0hMDp1PSEwOnU9ITA6KHU9ITAscC5fX3ZlcnNpb249bi52ZXJzaW9uKTtsZXQgZz1wLmN1cnJlbnRQcm9ncmFtOyEwPT09dSYmKGc9d3QobixlLG8pKTtsZXQgYj0hMSx5PSExLF89ITE7Y29uc3QgeD1nLmdldFVuaWZvcm1zKCksTz1wLnVuaWZvcm1zO2lmKEcudXNlUHJvZ3JhbShnLnByb2dyYW0pJiYoYj0hMCx5PSEwLF89ITApLG4uaWQhPT1NJiYoTT1uLmlkLHk9ITApLGJ8fHYhPT10KXtpZih4LnNldFZhbHVlKG10LCJwcm9qZWN0aW9uTWF0cml4Iix0LnByb2plY3Rpb25NYXRyaXgpLFcubG9nYXJpdGhtaWNEZXB0aEJ1ZmZlciYmeC5zZXRWYWx1ZShtdCwibG9nRGVwdGhCdWZGQyIsMi8oTWF0aC5sb2codC5mYXIrMSkvTWF0aC5MTjIpKSx2IT09dCYmKHY9dCx5PSEwLF89ITApLG4uaXNTaGFkZXJNYXRlcmlhbHx8bi5pc01lc2hQaG9uZ01hdGVyaWFsfHxuLmlzTWVzaFRvb25NYXRlcmlhbHx8bi5pc01lc2hTdGFuZGFyZE1hdGVyaWFsfHxuLmVudk1hcCl7Y29uc3QgZT14Lm1hcC5jYW1lcmFQb3NpdGlvbjt2b2lkIDAhPT1lJiZlLnNldFZhbHVlKG10LEIuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKHQubWF0cml4V29ybGQpKX0obi5pc01lc2hQaG9uZ01hdGVyaWFsfHxuLmlzTWVzaFRvb25NYXRlcmlhbHx8bi5pc01lc2hMYW1iZXJ0TWF0ZXJpYWx8fG4uaXNNZXNoQmFzaWNNYXRlcmlhbHx8bi5pc01lc2hTdGFuZGFyZE1hdGVyaWFsfHxuLmlzU2hhZGVyTWF0ZXJpYWwpJiZ4LnNldFZhbHVlKG10LCJpc09ydGhvZ3JhcGhpYyIsITA9PT10LmlzT3J0aG9ncmFwaGljQ2FtZXJhKSwobi5pc01lc2hQaG9uZ01hdGVyaWFsfHxuLmlzTWVzaFRvb25NYXRlcmlhbHx8bi5pc01lc2hMYW1iZXJ0TWF0ZXJpYWx8fG4uaXNNZXNoQmFzaWNNYXRlcmlhbHx8bi5pc01lc2hTdGFuZGFyZE1hdGVyaWFsfHxuLmlzU2hhZGVyTWF0ZXJpYWx8fG4uaXNTaGFkb3dNYXRlcmlhbHx8by5pc1NraW5uZWRNZXNoKSYmeC5zZXRWYWx1ZShtdCwidmlld01hdHJpeCIsdC5tYXRyaXhXb3JsZEludmVyc2UpfWlmKG8uaXNTa2lubmVkTWVzaCl7eC5zZXRPcHRpb25hbChtdCxvLCJiaW5kTWF0cml4IikseC5zZXRPcHRpb25hbChtdCxvLCJiaW5kTWF0cml4SW52ZXJzZSIpO2NvbnN0IHQ9by5za2VsZXRvbjt0JiYoVy5mbG9hdFZlcnRleFRleHR1cmVzPyhudWxsPT09dC5ib25lVGV4dHVyZSYmdC5jb21wdXRlQm9uZVRleHR1cmUoKSx4LnNldFZhbHVlKG10LCJib25lVGV4dHVyZSIsdC5ib25lVGV4dHVyZSxaKSx4LnNldFZhbHVlKG10LCJib25lVGV4dHVyZVNpemUiLHQuYm9uZVRleHR1cmVTaXplKSk6eC5zZXRPcHRpb25hbChtdCx0LCJib25lTWF0cmljZXMiKSl9cmV0dXJuKHl8fHAucmVjZWl2ZVNoYWRvdyE9PW8ucmVjZWl2ZVNoYWRvdykmJihwLnJlY2VpdmVTaGFkb3c9by5yZWNlaXZlU2hhZG93LHguc2V0VmFsdWUobXQsInJlY2VpdmVTaGFkb3ciLG8ucmVjZWl2ZVNoYWRvdykpLHkmJih4LnNldFZhbHVlKG10LCJ0b25lTWFwcGluZ0V4cG9zdXJlIixoLnRvbmVNYXBwaW5nRXhwb3N1cmUpLHAubmVlZHNMaWdodHMmJihmdW5jdGlvbiBQKHQsZSl7dC5hbWJpZW50TGlnaHRDb2xvci5uZWVkc1VwZGF0ZT1lLHQubGlnaHRQcm9iZS5uZWVkc1VwZGF0ZT1lLHQuZGlyZWN0aW9uYWxMaWdodHMubmVlZHNVcGRhdGU9ZSx0LmRpcmVjdGlvbmFsTGlnaHRTaGFkb3dzLm5lZWRzVXBkYXRlPWUsdC5wb2ludExpZ2h0cy5uZWVkc1VwZGF0ZT1lLHQucG9pbnRMaWdodFNoYWRvd3MubmVlZHNVcGRhdGU9ZSx0LnNwb3RMaWdodHMubmVlZHNVcGRhdGU9ZSx0LnNwb3RMaWdodFNoYWRvd3MubmVlZHNVcGRhdGU9ZSx0LnJlY3RBcmVhTGlnaHRzLm5lZWRzVXBkYXRlPWUsdC5oZW1pc3BoZXJlTGlnaHRzLm5lZWRzVXBkYXRlPWV9KShPLF8pLGkmJm4uZm9nJiZldC5yZWZyZXNoRm9nVW5pZm9ybXMoTyxpKSxldC5yZWZyZXNoTWF0ZXJpYWxVbmlmb3JtcyhPLG4sUyxrLEYpLFlwdC51cGxvYWQobXQscC51bmlmb3Jtc0xpc3QsTyxaKSksbi5pc1NoYWRlck1hdGVyaWFsJiYhMD09PW4udW5pZm9ybXNOZWVkVXBkYXRlJiYoWXB0LnVwbG9hZChtdCxwLnVuaWZvcm1zTGlzdCxPLFopLG4udW5pZm9ybXNOZWVkVXBkYXRlPSExKSxuLmlzU3ByaXRlTWF0ZXJpYWwmJnguc2V0VmFsdWUobXQsImNlbnRlciIsby5jZW50ZXIpLHguc2V0VmFsdWUobXQsIm1vZGVsVmlld01hdHJpeCIsby5tb2RlbFZpZXdNYXRyaXgpLHguc2V0VmFsdWUobXQsIm5vcm1hbE1hdHJpeCIsby5ub3JtYWxNYXRyaXgpLHguc2V0VmFsdWUobXQsIm1vZGVsTWF0cml4IixvLm1hdHJpeFdvcmxkKSxnfXZ0LnNldEFuaW1hdGlvbkxvb3AoKGZ1bmN0aW9uIER0KHQpe190JiZfdCh0KX0pKSwidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmdnQuc2V0Q29udGV4dCh3aW5kb3cpLHRoaXMuc2V0QW5pbWF0aW9uTG9vcD1mdW5jdGlvbih0KXtfdD10LGd0LnNldEFuaW1hdGlvbkxvb3AodCksbnVsbD09PXQ/dnQuc3RvcCgpOnZ0LnN0YXJ0KCl9LGd0LmFkZEV2ZW50TGlzdGVuZXIoInNlc3Npb25zdGFydCIsQ3QpLGd0LmFkZEV2ZW50TGlzdGVuZXIoInNlc3Npb25lbmQiLE10KSx0aGlzLnJlbmRlcj1mdW5jdGlvbih0LGUpe2lmKHZvaWQgMCE9PWUmJiEwIT09ZS5pc0NhbWVyYSlyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFJlbmRlcmVyLnJlbmRlcjogY2FtZXJhIGlzIG5vdCBhbiBpbnN0YW5jZSBvZiBUSFJFRS5DYW1lcmEuIik7aWYoITA9PT1iKXJldHVybjshMD09PXQuYXV0b1VwZGF0ZSYmdC51cGRhdGVNYXRyaXhXb3JsZCgpLG51bGw9PT1lLnBhcmVudCYmZS51cGRhdGVNYXRyaXhXb3JsZCgpLCEwPT09Z3QuZW5hYmxlZCYmITA9PT1ndC5pc1ByZXNlbnRpbmcmJighMD09PWd0LmNhbWVyYUF1dG9VcGRhdGUmJmd0LnVwZGF0ZUNhbWVyYShlKSxlPWd0LmdldENhbWVyYSgpKSwhMD09PXQuaXNTY2VuZSYmdC5vbkJlZm9yZVJlbmRlcihoLHQsZSxDKSxmPW90LmdldCh0LGcubGVuZ3RoKSxmLmluaXQoKSxnLnB1c2goZiksTC5tdWx0aXBseU1hdHJpY2VzKGUucHJvamVjdGlvbk1hdHJpeCxlLm1hdHJpeFdvcmxkSW52ZXJzZSksei5zZXRGcm9tUHJvamVjdGlvbk1hdHJpeChMKSxIPXRoaXMubG9jYWxDbGlwcGluZ0VuYWJsZWQsST1pdC5pbml0KHRoaXMuY2xpcHBpbmdQbGFuZXMsSCxlKSxtPW50LmdldCh0LHUubGVuZ3RoKSxtLmluaXQoKSx1LnB1c2gobSkseHQodCxlLDAsaC5zb3J0T2JqZWN0cyksbS5maW5pc2goKSwhMD09PWguc29ydE9iamVjdHMmJm0uc29ydChELFIpLCEwPT09SSYmaXQuYmVnaW5TaGFkb3dzKCk7YXQucmVuZGVyKGYuc3RhdGUuc2hhZG93c0FycmF5LHQsZSksZi5zZXR1cExpZ2h0cygpLGYuc2V0dXBMaWdodHNWaWV3KGUpLCEwPT09SSYmaXQuZW5kU2hhZG93cygpLCEwPT09dGhpcy5pbmZvLmF1dG9SZXNldCYmdGhpcy5pbmZvLnJlc2V0KCkscnQucmVuZGVyKG0sdCk7Y29uc3Qgbj1tLm9wYXF1ZSxvPW0udHJhbnNtaXNzaXZlLGk9bS50cmFuc3BhcmVudDtuLmxlbmd0aD4wJiZPdChuLHQsZSksby5sZW5ndGg+MCYmKGZ1bmN0aW9uIGEodCxlLG4sbyl7aWYobnVsbD09PUYpe0Y9bmV3KCEwPT09cyYmITA9PT1XLmlzV2ViR0wyP09zdDp4c3QpKDEwMjQsMTAyNCx7Z2VuZXJhdGVNaXBtYXBzOiEwLHR5cGU6bnVsbCE9PWR0LmNvbnZlcnQoTHJ0KT9McnQ6enJ0LG1pbkZpbHRlcjpOcnQsbWFnRmlsdGVyOkFydCx3cmFwUzpScnQsd3JhcFQ6UnJ0fSl9Y29uc3QgaT1oLmdldFJlbmRlclRhcmdldCgpO2guc2V0UmVuZGVyVGFyZ2V0KEYpLGguY2xlYXIoKTtjb25zdCBhPWgudG9uZU1hcHBpbmc7aC50b25lTWFwcGluZz0wLE90KHQsbixvKSxoLnRvbmVNYXBwaW5nPWEsWi51cGRhdGVNdWx0aXNhbXBsZVJlbmRlclRhcmdldChGKSxaLnVwZGF0ZVJlbmRlclRhcmdldE1pcG1hcChGKSxoLnNldFJlbmRlclRhcmdldChpKSxPdChlLG4sbyl9KShuLG8sdCxlKSxpLmxlbmd0aD4wJiZPdChpLHQsZSksbnVsbCE9PUMmJihaLnVwZGF0ZU11bHRpc2FtcGxlUmVuZGVyVGFyZ2V0KEMpLFoudXBkYXRlUmVuZGVyVGFyZ2V0TWlwbWFwKEMpKSwhMD09PXQuaXNTY2VuZSYmdC5vbkFmdGVyUmVuZGVyKGgsdCxlKSxHLmJ1ZmZlcnMuZGVwdGguc2V0VGVzdCghMCksRy5idWZmZXJzLmRlcHRoLnNldE1hc2soITApLEcuYnVmZmVycy5jb2xvci5zZXRNYXNrKCEwKSxHLnNldFBvbHlnb25PZmZzZXQoITEpLHB0LnJlc2V0RGVmYXVsdFN0YXRlKCksTT0tMSx2PW51bGwsZy5wb3AoKSxmPWcubGVuZ3RoPjA/Z1tnLmxlbmd0aC0xXTpudWxsLHUucG9wKCksbT11Lmxlbmd0aD4wP3VbdS5sZW5ndGgtMV06bnVsbH0sdGhpcy5nZXRBY3RpdmVDdWJlRmFjZT1mdW5jdGlvbigpe3JldHVybiB5fSx0aGlzLmdldEFjdGl2ZU1pcG1hcExldmVsPWZ1bmN0aW9uKCl7cmV0dXJuIF99LHRoaXMuZ2V0UmVuZGVyVGFyZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIEN9LHRoaXMuc2V0UmVuZGVyVGFyZ2V0PWZ1bmN0aW9uKHQsZT0wLG49MCl7Qz10LHk9ZSxfPW4sdCYmdm9pZCAwPT09cS5nZXQodCkuX193ZWJnbEZyYW1lYnVmZmVyJiZaLnNldHVwUmVuZGVyVGFyZ2V0KHQpO2xldCBvPW51bGwsaT0hMSxhPSExO2lmKHQpe2NvbnN0IG49dC50ZXh0dXJlOyhuLmlzRGF0YVRleHR1cmUzRHx8bi5pc0RhdGFUZXh0dXJlMkRBcnJheSkmJihhPSEwKTtjb25zdCByPXEuZ2V0KHQpLl9fd2ViZ2xGcmFtZWJ1ZmZlcjt0LmlzV2ViR0xDdWJlUmVuZGVyVGFyZ2V0PyhvPXJbZV0saT0hMCk6bz10LmlzV2ViR0xNdWx0aXNhbXBsZVJlbmRlclRhcmdldD9xLmdldCh0KS5fX3dlYmdsTXVsdGlzYW1wbGVkRnJhbWVidWZmZXI6cix4LmNvcHkodC52aWV3cG9ydCksTy5jb3B5KHQuc2Npc3NvciksUD10LnNjaXNzb3JUZXN0fWVsc2UgeC5jb3B5KEUpLm11bHRpcGx5U2NhbGFyKFMpLmZsb29yKCksTy5jb3B5KEEpLm11bHRpcGx5U2NhbGFyKFMpLmZsb29yKCksUD1UO2lmKEcuYmluZEZyYW1lYnVmZmVyKDM2MTYwLG8pJiZXLmRyYXdCdWZmZXJzKXtsZXQgZT0hMTtpZih0KWlmKHQuaXNXZWJHTE11bHRpcGxlUmVuZGVyVGFyZ2V0cyl7Y29uc3Qgbj10LnRleHR1cmU7aWYoTi5sZW5ndGghPT1uLmxlbmd0aHx8MzYwNjQhPT1OWzBdKXtmb3IobGV0IHQ9MCxlPW4ubGVuZ3RoO3Q8ZTt0KyspTlt0XT0zNjA2NCt0O04ubGVuZ3RoPW4ubGVuZ3RoLGU9ITB9fWVsc2UgMT09PU4ubGVuZ3RoJiYzNjA2ND09PU5bMF18fChOWzBdPTM2MDY0LE4ubGVuZ3RoPTEsZT0hMCk7ZWxzZSAxPT09Ti5sZW5ndGgmJjEwMjk9PT1OWzBdfHwoTlswXT0xMDI5LE4ubGVuZ3RoPTEsZT0hMCk7ZSYmKFcuaXNXZWJHTDI/bXQuZHJhd0J1ZmZlcnMoTik6VS5nZXQoIldFQkdMX2RyYXdfYnVmZmVycyIpLmRyYXdCdWZmZXJzV0VCR0woTikpfWlmKEcudmlld3BvcnQoeCksRy5zY2lzc29yKE8pLEcuc2V0U2Npc3NvclRlc3QoUCksaSl7Y29uc3Qgbz1xLmdldCh0LnRleHR1cmUpO210LmZyYW1lYnVmZmVyVGV4dHVyZTJEKDM2MTYwLDM2MDY0LDM0MDY5K2Usby5fX3dlYmdsVGV4dHVyZSxuKX1lbHNlIGlmKGEpe2NvbnN0IG89cS5nZXQodC50ZXh0dXJlKTttdC5mcmFtZWJ1ZmZlclRleHR1cmVMYXllcigzNjE2MCwzNjA2NCxvLl9fd2ViZ2xUZXh0dXJlLG58fDAsZXx8MCl9fSx0aGlzLnJlYWRSZW5kZXJUYXJnZXRQaXhlbHM9ZnVuY3Rpb24odCxlLG4sbyxpLGEscil7aWYoIXR8fCF0LmlzV2ViR0xSZW5kZXJUYXJnZXQpcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xSZW5kZXJlci5yZWFkUmVuZGVyVGFyZ2V0UGl4ZWxzOiByZW5kZXJUYXJnZXQgaXMgbm90IFRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0LiIpO2xldCBzPXEuZ2V0KHQpLl9fd2ViZ2xGcmFtZWJ1ZmZlcjtpZih0LmlzV2ViR0xDdWJlUmVuZGVyVGFyZ2V0JiZ2b2lkIDAhPT1yJiYocz1zW3JdKSxzKXtHLmJpbmRGcmFtZWJ1ZmZlcigzNjE2MCxzKTt0cnl7Y29uc3Qgcj10LnRleHR1cmUscz1yLmZvcm1hdCxsPXIudHlwZTtpZihzIT09anJ0JiZkdC5jb252ZXJ0KHMpIT09bXQuZ2V0UGFyYW1ldGVyKDM1NzM5KSlyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFJlbmRlcmVyLnJlYWRSZW5kZXJUYXJnZXRQaXhlbHM6IHJlbmRlclRhcmdldCBpcyBub3QgaW4gUkdCQSBvciBpbXBsZW1lbnRhdGlvbiBkZWZpbmVkIGZvcm1hdC4iKTtjb25zdCBjPWw9PT1McnQmJihVLmhhcygiRVhUX2NvbG9yX2J1ZmZlcl9oYWxmX2Zsb2F0Iil8fFcuaXNXZWJHTDImJlUuaGFzKCJFWFRfY29sb3JfYnVmZmVyX2Zsb2F0IikpO2lmKCEobD09PXpydHx8ZHQuY29udmVydChsKT09PW10LmdldFBhcmFtZXRlcigzNTczOCl8fGw9PT1GcnQmJihXLmlzV2ViR0wyfHxVLmhhcygiT0VTX3RleHR1cmVfZmxvYXQiKXx8VS5oYXMoIldFQkdMX2NvbG9yX2J1ZmZlcl9mbG9hdCIpKXx8YykpcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xSZW5kZXJlci5yZWFkUmVuZGVyVGFyZ2V0UGl4ZWxzOiByZW5kZXJUYXJnZXQgaXMgbm90IGluIFVuc2lnbmVkQnl0ZVR5cGUgb3IgaW1wbGVtZW50YXRpb24gZGVmaW5lZCB0eXBlLiIpOzM2MDUzPT09bXQuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cygzNjE2MCk/ZT49MCYmZTw9dC53aWR0aC1vJiZuPj0wJiZuPD10LmhlaWdodC1pJiZtdC5yZWFkUGl4ZWxzKGUsbixvLGksZHQuY29udmVydChzKSxkdC5jb252ZXJ0KGwpLGEpOmNvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMUmVuZGVyZXIucmVhZFJlbmRlclRhcmdldFBpeGVsczogcmVhZFBpeGVscyBmcm9tIHJlbmRlclRhcmdldCBmYWlsZWQuIEZyYW1lYnVmZmVyIG5vdCBjb21wbGV0ZS4iKX1maW5hbGx5e2NvbnN0IHQ9bnVsbCE9PUM/cS5nZXQoQykuX193ZWJnbEZyYW1lYnVmZmVyOm51bGw7Ry5iaW5kRnJhbWVidWZmZXIoMzYxNjAsdCl9fX0sdGhpcy5jb3B5RnJhbWVidWZmZXJUb1RleHR1cmU9ZnVuY3Rpb24odCxlLG49MCl7Y29uc3Qgbz1NYXRoLnBvdygyLC1uKSxpPU1hdGguZmxvb3IoZS5pbWFnZS53aWR0aCpvKSxhPU1hdGguZmxvb3IoZS5pbWFnZS5oZWlnaHQqbyk7bGV0IHI9ZHQuY29udmVydChlLmZvcm1hdCk7Vy5pc1dlYkdMMiYmKDY0MDc9PT1yJiYocj0zMjg0OSksNjQwOD09PXImJihyPTMyODU2KSksWi5zZXRUZXh0dXJlMkQoZSwwKSxtdC5jb3B5VGV4SW1hZ2UyRCgzNTUzLG4scix0LngsdC55LGksYSwwKSxHLnVuYmluZFRleHR1cmUoKX0sdGhpcy5jb3B5VGV4dHVyZVRvVGV4dHVyZT1mdW5jdGlvbih0LGUsbixvPTApe2NvbnN0IGk9ZS5pbWFnZS53aWR0aCxhPWUuaW1hZ2UuaGVpZ2h0LHI9ZHQuY29udmVydChuLmZvcm1hdCkscz1kdC5jb252ZXJ0KG4udHlwZSk7Wi5zZXRUZXh0dXJlMkQobiwwKSxtdC5waXhlbFN0b3JlaSgzNzQ0MCxuLmZsaXBZKSxtdC5waXhlbFN0b3JlaSgzNzQ0MSxuLnByZW11bHRpcGx5QWxwaGEpLG10LnBpeGVsU3RvcmVpKDMzMTcsbi51bnBhY2tBbGlnbm1lbnQpLGUuaXNEYXRhVGV4dHVyZT9tdC50ZXhTdWJJbWFnZTJEKDM1NTMsbyx0LngsdC55LGksYSxyLHMsZS5pbWFnZS5kYXRhKTplLmlzQ29tcHJlc3NlZFRleHR1cmU/bXQuY29tcHJlc3NlZFRleFN1YkltYWdlMkQoMzU1MyxvLHQueCx0LnksZS5taXBtYXBzWzBdLndpZHRoLGUubWlwbWFwc1swXS5oZWlnaHQscixlLm1pcG1hcHNbMF0uZGF0YSk6bXQudGV4U3ViSW1hZ2UyRCgzNTUzLG8sdC54LHQueSxyLHMsZS5pbWFnZSksMD09PW8mJm4uZ2VuZXJhdGVNaXBtYXBzJiZtdC5nZW5lcmF0ZU1pcG1hcCgzNTUzKSxHLnVuYmluZFRleHR1cmUoKX0sdGhpcy5jb3B5VGV4dHVyZVRvVGV4dHVyZTNEPWZ1bmN0aW9uKHQsZSxuLG8saT0wKXtpZihoLmlzV2ViR0wxUmVuZGVyZXIpcmV0dXJuIHZvaWQgY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyLmNvcHlUZXh0dXJlVG9UZXh0dXJlM0Q6IGNhbiBvbmx5IGJlIHVzZWQgd2l0aCBXZWJHTDIuIik7Y29uc3QgYT10Lm1heC54LXQubWluLngrMSxyPXQubWF4LnktdC5taW4ueSsxLHM9dC5tYXguei10Lm1pbi56KzEsbD1kdC5jb252ZXJ0KG8uZm9ybWF0KSxjPWR0LmNvbnZlcnQoby50eXBlKTtsZXQgZDtpZihvLmlzRGF0YVRleHR1cmUzRClaLnNldFRleHR1cmUzRChvLDApLGQ9MzI4Nzk7ZWxzZXtpZighby5pc0RhdGFUZXh0dXJlMkRBcnJheSlyZXR1cm4gdm9pZCBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXIuY29weVRleHR1cmVUb1RleHR1cmUzRDogb25seSBzdXBwb3J0cyBUSFJFRS5EYXRhVGV4dHVyZTNEIGFuZCBUSFJFRS5EYXRhVGV4dHVyZTJEQXJyYXkuIik7Wi5zZXRUZXh0dXJlMkRBcnJheShvLDApLGQ9MzU4NjZ9bXQucGl4ZWxTdG9yZWkoMzc0NDAsby5mbGlwWSksbXQucGl4ZWxTdG9yZWkoMzc0NDEsby5wcmVtdWx0aXBseUFscGhhKSxtdC5waXhlbFN0b3JlaSgzMzE3LG8udW5wYWNrQWxpZ25tZW50KTtjb25zdCBwPW10LmdldFBhcmFtZXRlcigzMzE0KSxtPW10LmdldFBhcmFtZXRlcigzMjg3OCksZj1tdC5nZXRQYXJhbWV0ZXIoMzMxNiksdT1tdC5nZXRQYXJhbWV0ZXIoMzMxNSksZz1tdC5nZXRQYXJhbWV0ZXIoMzI4NzcpLGI9bi5pc0NvbXByZXNzZWRUZXh0dXJlP24ubWlwbWFwc1swXTpuLmltYWdlO210LnBpeGVsU3RvcmVpKDMzMTQsYi53aWR0aCksbXQucGl4ZWxTdG9yZWkoMzI4NzgsYi5oZWlnaHQpLG10LnBpeGVsU3RvcmVpKDMzMTYsdC5taW4ueCksbXQucGl4ZWxTdG9yZWkoMzMxNSx0Lm1pbi55KSxtdC5waXhlbFN0b3JlaSgzMjg3Nyx0Lm1pbi56KSxuLmlzRGF0YVRleHR1cmV8fG4uaXNEYXRhVGV4dHVyZTNEP210LnRleFN1YkltYWdlM0QoZCxpLGUueCxlLnksZS56LGEscixzLGwsYyxiLmRhdGEpOm4uaXNDb21wcmVzc2VkVGV4dHVyZT8oY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyLmNvcHlUZXh0dXJlVG9UZXh0dXJlM0Q6IHVudGVzdGVkIHN1cHBvcnQgZm9yIGNvbXByZXNzZWQgc3JjVGV4dHVyZS4iKSxtdC5jb21wcmVzc2VkVGV4U3ViSW1hZ2UzRChkLGksZS54LGUueSxlLnosYSxyLHMsbCxiLmRhdGEpKTptdC50ZXhTdWJJbWFnZTNEKGQsaSxlLngsZS55LGUueixhLHIscyxsLGMsYiksbXQucGl4ZWxTdG9yZWkoMzMxNCxwKSxtdC5waXhlbFN0b3JlaSgzMjg3OCxtKSxtdC5waXhlbFN0b3JlaSgzMzE2LGYpLG10LnBpeGVsU3RvcmVpKDMzMTUsdSksbXQucGl4ZWxTdG9yZWkoMzI4NzcsZyksMD09PWkmJm8uZ2VuZXJhdGVNaXBtYXBzJiZtdC5nZW5lcmF0ZU1pcG1hcChkKSxHLnVuYmluZFRleHR1cmUoKX0sdGhpcy5pbml0VGV4dHVyZT1mdW5jdGlvbih0KXtaLnNldFRleHR1cmUyRCh0LDApLEcudW5iaW5kVGV4dHVyZSgpfSx0aGlzLnJlc2V0U3RhdGU9ZnVuY3Rpb24oKXt5PTAsXz0wLEM9bnVsbCxHLnJlc2V0KCkscHQucmVzZXQoKX0sInVuZGVmaW5lZCIhPXR5cGVvZiBfX1RIUkVFX0RFVlRPT0xTX18mJl9fVEhSRUVfREVWVE9PTFNfXy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgib2JzZXJ2ZSIse2RldGFpbDp0aGlzfSkpfShjbGFzcyBleHRlbmRzIEhtdHt9KS5wcm90b3R5cGUuaXNXZWJHTDFSZW5kZXJlcj0hMDtjbGFzcyBGbXQgZXh0ZW5kcyBTbHR7Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMudHlwZT0iU2NlbmUiLHRoaXMuYmFja2dyb3VuZD1udWxsLHRoaXMuZW52aXJvbm1lbnQ9bnVsbCx0aGlzLmZvZz1udWxsLHRoaXMub3ZlcnJpZGVNYXRlcmlhbD1udWxsLHRoaXMuYXV0b1VwZGF0ZT0hMCwidW5kZWZpbmVkIiE9dHlwZW9mIF9fVEhSRUVfREVWVE9PTFNfXyYmX19USFJFRV9ERVZUT09MU19fLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJvYnNlcnZlIix7ZGV0YWlsOnRoaXN9KSl9Y29weSh0LGUpe3JldHVybiBzdXBlci5jb3B5KHQsZSksbnVsbCE9PXQuYmFja2dyb3VuZCYmKHRoaXMuYmFja2dyb3VuZD10LmJhY2tncm91bmQuY2xvbmUoKSksbnVsbCE9PXQuZW52aXJvbm1lbnQmJih0aGlzLmVudmlyb25tZW50PXQuZW52aXJvbm1lbnQuY2xvbmUoKSksbnVsbCE9PXQuZm9nJiYodGhpcy5mb2c9dC5mb2cuY2xvbmUoKSksbnVsbCE9PXQub3ZlcnJpZGVNYXRlcmlhbCYmKHRoaXMub3ZlcnJpZGVNYXRlcmlhbD10Lm92ZXJyaWRlTWF0ZXJpYWwuY2xvbmUoKSksdGhpcy5hdXRvVXBkYXRlPXQuYXV0b1VwZGF0ZSx0aGlzLm1hdHJpeEF1dG9VcGRhdGU9dC5tYXRyaXhBdXRvVXBkYXRlLHRoaXN9dG9KU09OKHQpe2NvbnN0IGU9c3VwZXIudG9KU09OKHQpO3JldHVybiBudWxsIT09dGhpcy5mb2cmJihlLm9iamVjdC5mb2c9dGhpcy5mb2cudG9KU09OKCkpLGV9fUZtdC5wcm90b3R5cGUuaXNTY2VuZT0hMDtjbGFzcyBMbXR7Y29uc3RydWN0b3IodCxlKXt0aGlzLmFycmF5PXQsdGhpcy5zdHJpZGU9ZSx0aGlzLmNvdW50PXZvaWQgMCE9PXQ/dC5sZW5ndGgvZTowLHRoaXMudXNhZ2U9b3N0LHRoaXMudXBkYXRlUmFuZ2U9e29mZnNldDowLGNvdW50Oi0xfSx0aGlzLnZlcnNpb249MCx0aGlzLnV1aWQ9ZHN0KCl9b25VcGxvYWRDYWxsYmFjaygpe31zZXQgbmVlZHNVcGRhdGUodCl7ITA9PT10JiZ0aGlzLnZlcnNpb24rK31zZXRVc2FnZSh0KXtyZXR1cm4gdGhpcy51c2FnZT10LHRoaXN9Y29weSh0KXtyZXR1cm4gdGhpcy5hcnJheT1uZXcgdC5hcnJheS5jb25zdHJ1Y3Rvcih0LmFycmF5KSx0aGlzLmNvdW50PXQuY291bnQsdGhpcy5zdHJpZGU9dC5zdHJpZGUsdGhpcy51c2FnZT10LnVzYWdlLHRoaXN9Y29weUF0KHQsZSxuKXt0Kj10aGlzLnN0cmlkZSxuKj1lLnN0cmlkZTtmb3IobGV0IG89MCxpPXRoaXMuc3RyaWRlO288aTtvKyspdGhpcy5hcnJheVt0K29dPWUuYXJyYXlbbitvXTtyZXR1cm4gdGhpc31zZXQodCxlPTApe3JldHVybiB0aGlzLmFycmF5LnNldCh0LGUpLHRoaXN9Y2xvbmUodCl7dm9pZCAwPT09dC5hcnJheUJ1ZmZlcnMmJih0LmFycmF5QnVmZmVycz17fSksdm9pZCAwPT09dGhpcy5hcnJheS5idWZmZXIuX3V1aWQmJih0aGlzLmFycmF5LmJ1ZmZlci5fdXVpZD1kc3QoKSksdm9pZCAwPT09dC5hcnJheUJ1ZmZlcnNbdGhpcy5hcnJheS5idWZmZXIuX3V1aWRdJiYodC5hcnJheUJ1ZmZlcnNbdGhpcy5hcnJheS5idWZmZXIuX3V1aWRdPXRoaXMuYXJyYXkuc2xpY2UoMCkuYnVmZmVyKTtjb25zdCBlPW5ldyB0aGlzLmFycmF5LmNvbnN0cnVjdG9yKHQuYXJyYXlCdWZmZXJzW3RoaXMuYXJyYXkuYnVmZmVyLl91dWlkXSksbj1uZXcgdGhpcy5jb25zdHJ1Y3RvcihlLHRoaXMuc3RyaWRlKTtyZXR1cm4gbi5zZXRVc2FnZSh0aGlzLnVzYWdlKSxufW9uVXBsb2FkKHQpe3JldHVybiB0aGlzLm9uVXBsb2FkQ2FsbGJhY2s9dCx0aGlzfXRvSlNPTih0KXtyZXR1cm4gdm9pZCAwPT09dC5hcnJheUJ1ZmZlcnMmJih0LmFycmF5QnVmZmVycz17fSksdm9pZCAwPT09dGhpcy5hcnJheS5idWZmZXIuX3V1aWQmJih0aGlzLmFycmF5LmJ1ZmZlci5fdXVpZD1kc3QoKSksdm9pZCAwPT09dC5hcnJheUJ1ZmZlcnNbdGhpcy5hcnJheS5idWZmZXIuX3V1aWRdJiYodC5hcnJheUJ1ZmZlcnNbdGhpcy5hcnJheS5idWZmZXIuX3V1aWRdPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKG5ldyBVaW50MzJBcnJheSh0aGlzLmFycmF5LmJ1ZmZlcikpKSx7dXVpZDp0aGlzLnV1aWQsYnVmZmVyOnRoaXMuYXJyYXkuYnVmZmVyLl91dWlkLHR5cGU6dGhpcy5hcnJheS5jb25zdHJ1Y3Rvci5uYW1lLHN0cmlkZTp0aGlzLnN0cmlkZX19fUxtdC5wcm90b3R5cGUuaXNJbnRlcmxlYXZlZEJ1ZmZlcj0hMDtjb25zdCBCbXQ9bmV3IHdzdDtjbGFzcyBWbXR7Y29uc3RydWN0b3IodCxlLG4sbz0hMSl7dGhpcy5uYW1lPSIiLHRoaXMuZGF0YT10LHRoaXMuaXRlbVNpemU9ZSx0aGlzLm9mZnNldD1uLHRoaXMubm9ybWFsaXplZD0hMD09PW99Z2V0IGNvdW50KCl7cmV0dXJuIHRoaXMuZGF0YS5jb3VudH1nZXQgYXJyYXkoKXtyZXR1cm4gdGhpcy5kYXRhLmFycmF5fXNldCBuZWVkc1VwZGF0ZSh0KXt0aGlzLmRhdGEubmVlZHNVcGRhdGU9dH1hcHBseU1hdHJpeDQodCl7Zm9yKGxldCBlPTAsbj10aGlzLmRhdGEuY291bnQ7ZTxuO2UrKylCbXQueD10aGlzLmdldFgoZSksQm10Lnk9dGhpcy5nZXRZKGUpLEJtdC56PXRoaXMuZ2V0WihlKSxCbXQuYXBwbHlNYXRyaXg0KHQpLHRoaXMuc2V0WFlaKGUsQm10LngsQm10LnksQm10LnopO3JldHVybiB0aGlzfWFwcGx5Tm9ybWFsTWF0cml4KHQpe2ZvcihsZXQgZT0wLG49dGhpcy5jb3VudDtlPG47ZSsrKUJtdC54PXRoaXMuZ2V0WChlKSxCbXQueT10aGlzLmdldFkoZSksQm10Lno9dGhpcy5nZXRaKGUpLEJtdC5hcHBseU5vcm1hbE1hdHJpeCh0KSx0aGlzLnNldFhZWihlLEJtdC54LEJtdC55LEJtdC56KTtyZXR1cm4gdGhpc310cmFuc2Zvcm1EaXJlY3Rpb24odCl7Zm9yKGxldCBlPTAsbj10aGlzLmNvdW50O2U8bjtlKyspQm10Lng9dGhpcy5nZXRYKGUpLEJtdC55PXRoaXMuZ2V0WShlKSxCbXQuej10aGlzLmdldFooZSksQm10LnRyYW5zZm9ybURpcmVjdGlvbih0KSx0aGlzLnNldFhZWihlLEJtdC54LEJtdC55LEJtdC56KTtyZXR1cm4gdGhpc31zZXRYKHQsZSl7cmV0dXJuIHRoaXMuZGF0YS5hcnJheVt0KnRoaXMuZGF0YS5zdHJpZGUrdGhpcy5vZmZzZXRdPWUsdGhpc31zZXRZKHQsZSl7cmV0dXJuIHRoaXMuZGF0YS5hcnJheVt0KnRoaXMuZGF0YS5zdHJpZGUrdGhpcy5vZmZzZXQrMV09ZSx0aGlzfXNldFoodCxlKXtyZXR1cm4gdGhpcy5kYXRhLmFycmF5W3QqdGhpcy5kYXRhLnN0cmlkZSt0aGlzLm9mZnNldCsyXT1lLHRoaXN9c2V0Vyh0LGUpe3JldHVybiB0aGlzLmRhdGEuYXJyYXlbdCp0aGlzLmRhdGEuc3RyaWRlK3RoaXMub2Zmc2V0KzNdPWUsdGhpc31nZXRYKHQpe3JldHVybiB0aGlzLmRhdGEuYXJyYXlbdCp0aGlzLmRhdGEuc3RyaWRlK3RoaXMub2Zmc2V0XX1nZXRZKHQpe3JldHVybiB0aGlzLmRhdGEuYXJyYXlbdCp0aGlzLmRhdGEuc3RyaWRlK3RoaXMub2Zmc2V0KzFdfWdldFoodCl7cmV0dXJuIHRoaXMuZGF0YS5hcnJheVt0KnRoaXMuZGF0YS5zdHJpZGUrdGhpcy5vZmZzZXQrMl19Z2V0Vyh0KXtyZXR1cm4gdGhpcy5kYXRhLmFycmF5W3QqdGhpcy5kYXRhLnN0cmlkZSt0aGlzLm9mZnNldCszXX1zZXRYWSh0LGUsbil7cmV0dXJuIHRoaXMuZGF0YS5hcnJheVsodD10KnRoaXMuZGF0YS5zdHJpZGUrdGhpcy5vZmZzZXQpKzBdPWUsdGhpcy5kYXRhLmFycmF5W3QrMV09bix0aGlzfXNldFhZWih0LGUsbixvKXtyZXR1cm4gdGhpcy5kYXRhLmFycmF5Wyh0PXQqdGhpcy5kYXRhLnN0cmlkZSt0aGlzLm9mZnNldCkrMF09ZSx0aGlzLmRhdGEuYXJyYXlbdCsxXT1uLHRoaXMuZGF0YS5hcnJheVt0KzJdPW8sdGhpc31zZXRYWVpXKHQsZSxuLG8saSl7cmV0dXJuIHRoaXMuZGF0YS5hcnJheVsodD10KnRoaXMuZGF0YS5zdHJpZGUrdGhpcy5vZmZzZXQpKzBdPWUsdGhpcy5kYXRhLmFycmF5W3QrMV09bix0aGlzLmRhdGEuYXJyYXlbdCsyXT1vLHRoaXMuZGF0YS5hcnJheVt0KzNdPWksdGhpc31jbG9uZSh0KXtpZih2b2lkIDA9PT10KXtjb25zb2xlLmxvZygiVEhSRUUuSW50ZXJsZWF2ZWRCdWZmZXJBdHRyaWJ1dGUuY2xvbmUoKTogQ2xvbmluZyBhbiBpbnRlcmxhdmVkIGJ1ZmZlciBhdHRyaWJ1dGUgd2lsbCBkZWludGVybGVhdmUgYnVmZmVyIGRhdGEuIik7Y29uc3QgdD1bXTtmb3IobGV0IGU9MDtlPHRoaXMuY291bnQ7ZSsrKXtjb25zdCBuPWUqdGhpcy5kYXRhLnN0cmlkZSt0aGlzLm9mZnNldDtmb3IobGV0IGU9MDtlPHRoaXMuaXRlbVNpemU7ZSsrKXQucHVzaCh0aGlzLmRhdGEuYXJyYXlbbitlXSl9cmV0dXJuIG5ldyBRbHQobmV3IHRoaXMuYXJyYXkuY29uc3RydWN0b3IodCksdGhpcy5pdGVtU2l6ZSx0aGlzLm5vcm1hbGl6ZWQpfXJldHVybiB2b2lkIDA9PT10LmludGVybGVhdmVkQnVmZmVycyYmKHQuaW50ZXJsZWF2ZWRCdWZmZXJzPXt9KSx2b2lkIDA9PT10LmludGVybGVhdmVkQnVmZmVyc1t0aGlzLmRhdGEudXVpZF0mJih0LmludGVybGVhdmVkQnVmZmVyc1t0aGlzLmRhdGEudXVpZF09dGhpcy5kYXRhLmNsb25lKHQpKSxuZXcgVm10KHQuaW50ZXJsZWF2ZWRCdWZmZXJzW3RoaXMuZGF0YS51dWlkXSx0aGlzLml0ZW1TaXplLHRoaXMub2Zmc2V0LHRoaXMubm9ybWFsaXplZCl9dG9KU09OKHQpe2lmKHZvaWQgMD09PXQpe2NvbnNvbGUubG9nKCJUSFJFRS5JbnRlcmxlYXZlZEJ1ZmZlckF0dHJpYnV0ZS50b0pTT04oKTogU2VyaWFsaXppbmcgYW4gaW50ZXJsYXZlZCBidWZmZXIgYXR0cmlidXRlIHdpbGwgZGVpbnRlcmxlYXZlIGJ1ZmZlciBkYXRhLiIpO2NvbnN0IHQ9W107Zm9yKGxldCBlPTA7ZTx0aGlzLmNvdW50O2UrKyl7Y29uc3Qgbj1lKnRoaXMuZGF0YS5zdHJpZGUrdGhpcy5vZmZzZXQ7Zm9yKGxldCBlPTA7ZTx0aGlzLml0ZW1TaXplO2UrKyl0LnB1c2godGhpcy5kYXRhLmFycmF5W24rZV0pfXJldHVybntpdGVtU2l6ZTp0aGlzLml0ZW1TaXplLHR5cGU6dGhpcy5hcnJheS5jb25zdHJ1Y3Rvci5uYW1lLGFycmF5OnQsbm9ybWFsaXplZDp0aGlzLm5vcm1hbGl6ZWR9fXJldHVybiB2b2lkIDA9PT10LmludGVybGVhdmVkQnVmZmVycyYmKHQuaW50ZXJsZWF2ZWRCdWZmZXJzPXt9KSx2b2lkIDA9PT10LmludGVybGVhdmVkQnVmZmVyc1t0aGlzLmRhdGEudXVpZF0mJih0LmludGVybGVhdmVkQnVmZmVyc1t0aGlzLmRhdGEudXVpZF09dGhpcy5kYXRhLnRvSlNPTih0KSkse2lzSW50ZXJsZWF2ZWRCdWZmZXJBdHRyaWJ1dGU6ITAsaXRlbVNpemU6dGhpcy5pdGVtU2l6ZSxkYXRhOnRoaXMuZGF0YS51dWlkLG9mZnNldDp0aGlzLm9mZnNldCxub3JtYWxpemVkOnRoaXMubm9ybWFsaXplZH19fVZtdC5wcm90b3R5cGUuaXNJbnRlcmxlYXZlZEJ1ZmZlckF0dHJpYnV0ZT0hMDtjbGFzcyBqbXQgZXh0ZW5kcyBWbHR7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLnR5cGU9IlNwcml0ZU1hdGVyaWFsIix0aGlzLmNvbG9yPW5ldyBabHQoMTY3NzcyMTUpLHRoaXMubWFwPW51bGwsdGhpcy5hbHBoYU1hcD1udWxsLHRoaXMucm90YXRpb249MCx0aGlzLnNpemVBdHRlbnVhdGlvbj0hMCx0aGlzLnRyYW5zcGFyZW50PSEwLHRoaXMuc2V0VmFsdWVzKHQpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5jb2xvci5jb3B5KHQuY29sb3IpLHRoaXMubWFwPXQubWFwLHRoaXMuYWxwaGFNYXA9dC5hbHBoYU1hcCx0aGlzLnJvdGF0aW9uPXQucm90YXRpb24sdGhpcy5zaXplQXR0ZW51YXRpb249dC5zaXplQXR0ZW51YXRpb24sdGhpc319bGV0IFVtdDtqbXQucHJvdG90eXBlLmlzU3ByaXRlTWF0ZXJpYWw9ITA7Y29uc3QgV210PW5ldyB3c3QsR210PW5ldyB3c3QsWW10PW5ldyB3c3QscW10PW5ldyBnc3QsWm10PW5ldyBnc3QsWG10PW5ldyBvbHQsS210PW5ldyB3c3QsSm10PW5ldyB3c3QsUW10PW5ldyB3c3QsJG10PW5ldyBnc3QsdGZ0PW5ldyBnc3QsZWZ0PW5ldyBnc3Q7ZnVuY3Rpb24gbmZ0KHQsZSxuLG8saSxhKXtxbXQuc3ViVmVjdG9ycyh0LG4pLmFkZFNjYWxhciguNSkubXVsdGlwbHkobyksdm9pZCAwIT09aT8oWm10Lng9YSpxbXQueC1pKnFtdC55LFptdC55PWkqcW10LngrYSpxbXQueSk6Wm10LmNvcHkocW10KSx0LmNvcHkoZSksdC54Kz1abXQueCx0LnkrPVptdC55LHQuYXBwbHlNYXRyaXg0KFhtdCl9KGNsYXNzIGV4dGVuZHMgU2x0e2NvbnN0cnVjdG9yKHQpe2lmKHN1cGVyKCksdGhpcy50eXBlPSJTcHJpdGUiLHZvaWQgMD09PVVtdCl7VW10PW5ldyBkY3Q7Y29uc3QgdD1uZXcgRmxvYXQzMkFycmF5KFstLjUsLS41LDAsMCwwLC41LC0uNSwwLDEsMCwuNSwuNSwwLDEsMSwtLjUsLjUsMCwwLDFdKSxlPW5ldyBMbXQodCw1KTtVbXQuc2V0SW5kZXgoWzAsMSwyLDAsMiwzXSksVW10LnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBWbXQoZSwzLDAsITEpKSxVbXQuc2V0QXR0cmlidXRlKCJ1diIsbmV3IFZtdChlLDIsMywhMSkpfXRoaXMuZ2VvbWV0cnk9VW10LHRoaXMubWF0ZXJpYWw9dm9pZCAwIT09dD90Om5ldyBqbXQsdGhpcy5jZW50ZXI9bmV3IGdzdCguNSwuNSl9cmF5Y2FzdCh0LGUpe251bGw9PT10LmNhbWVyYSYmY29uc29sZS5lcnJvcignVEhSRUUuU3ByaXRlOiAiUmF5Y2FzdGVyLmNhbWVyYSIgbmVlZHMgdG8gYmUgc2V0IGluIG9yZGVyIHRvIHJheWNhc3QgYWdhaW5zdCBzcHJpdGVzLicpLEdtdC5zZXRGcm9tTWF0cml4U2NhbGUodGhpcy5tYXRyaXhXb3JsZCksWG10LmNvcHkodC5jYW1lcmEubWF0cml4V29ybGQpLHRoaXMubW9kZWxWaWV3TWF0cml4Lm11bHRpcGx5TWF0cmljZXModC5jYW1lcmEubWF0cml4V29ybGRJbnZlcnNlLHRoaXMubWF0cml4V29ybGQpLFltdC5zZXRGcm9tTWF0cml4UG9zaXRpb24odGhpcy5tb2RlbFZpZXdNYXRyaXgpLHQuY2FtZXJhLmlzUGVyc3BlY3RpdmVDYW1lcmEmJiExPT09dGhpcy5tYXRlcmlhbC5zaXplQXR0ZW51YXRpb24mJkdtdC5tdWx0aXBseVNjYWxhcigtWW10LnopO2NvbnN0IG49dGhpcy5tYXRlcmlhbC5yb3RhdGlvbjtsZXQgbyxpOzAhPT1uJiYoaT1NYXRoLmNvcyhuKSxvPU1hdGguc2luKG4pKTtjb25zdCBhPXRoaXMuY2VudGVyO25mdChLbXQuc2V0KC0uNSwtLjUsMCksWW10LGEsR210LG8saSksbmZ0KEptdC5zZXQoLjUsLS41LDApLFltdCxhLEdtdCxvLGkpLG5mdChRbXQuc2V0KC41LC41LDApLFltdCxhLEdtdCxvLGkpLCRtdC5zZXQoMCwwKSx0ZnQuc2V0KDEsMCksZWZ0LnNldCgxLDEpO2xldCByPXQucmF5LmludGVyc2VjdFRyaWFuZ2xlKEttdCxKbXQsUW10LCExLFdtdCk7aWYobnVsbD09PXImJihuZnQoSm10LnNldCgtLjUsLjUsMCksWW10LGEsR210LG8saSksdGZ0LnNldCgwLDEpLHI9dC5yYXkuaW50ZXJzZWN0VHJpYW5nbGUoS210LFFtdCxKbXQsITEsV210KSxudWxsPT09cikpcmV0dXJuO2NvbnN0IHM9dC5yYXkub3JpZ2luLmRpc3RhbmNlVG8oV210KTtzPHQubmVhcnx8cz50LmZhcnx8ZS5wdXNoKHtkaXN0YW5jZTpzLHBvaW50OldtdC5jbG9uZSgpLHV2OkxsdC5nZXRVVihXbXQsS210LEptdCxRbXQsJG10LHRmdCxlZnQsbmV3IGdzdCksZmFjZTpudWxsLG9iamVjdDp0aGlzfSl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx2b2lkIDAhPT10LmNlbnRlciYmdGhpcy5jZW50ZXIuY29weSh0LmNlbnRlciksdGhpcy5tYXRlcmlhbD10Lm1hdGVyaWFsLHRoaXN9fSkucHJvdG90eXBlLmlzU3ByaXRlPSEwO2NvbnN0IG9mdD1uZXcgd3N0LGlmdD1uZXcgdnN0LGFmdD1uZXcgdnN0LHJmdD1uZXcgd3N0LHNmdD1uZXcgb2x0O2NsYXNzIGxmdCBleHRlbmRzIFNjdHtjb25zdHJ1Y3Rvcih0LGUpe3N1cGVyKHQsZSksdGhpcy50eXBlPSJTa2lubmVkTWVzaCIsdGhpcy5iaW5kTW9kZT0iYXR0YWNoZWQiLHRoaXMuYmluZE1hdHJpeD1uZXcgb2x0LHRoaXMuYmluZE1hdHJpeEludmVyc2U9bmV3IG9sdH1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMuYmluZE1vZGU9dC5iaW5kTW9kZSx0aGlzLmJpbmRNYXRyaXguY29weSh0LmJpbmRNYXRyaXgpLHRoaXMuYmluZE1hdHJpeEludmVyc2UuY29weSh0LmJpbmRNYXRyaXhJbnZlcnNlKSx0aGlzLnNrZWxldG9uPXQuc2tlbGV0b24sdGhpc31iaW5kKHQsZSl7dGhpcy5za2VsZXRvbj10LHZvaWQgMD09PWUmJih0aGlzLnVwZGF0ZU1hdHJpeFdvcmxkKCEwKSx0aGlzLnNrZWxldG9uLmNhbGN1bGF0ZUludmVyc2VzKCksZT10aGlzLm1hdHJpeFdvcmxkKSx0aGlzLmJpbmRNYXRyaXguY29weShlKSx0aGlzLmJpbmRNYXRyaXhJbnZlcnNlLmNvcHkoZSkuaW52ZXJ0KCl9cG9zZSgpe3RoaXMuc2tlbGV0b24ucG9zZSgpfW5vcm1hbGl6ZVNraW5XZWlnaHRzKCl7Y29uc3QgdD1uZXcgdnN0LGU9dGhpcy5nZW9tZXRyeS5hdHRyaWJ1dGVzLnNraW5XZWlnaHQ7Zm9yKGxldCBuPTAsbz1lLmNvdW50O248bztuKyspe3QueD1lLmdldFgobiksdC55PWUuZ2V0WShuKSx0Lno9ZS5nZXRaKG4pLHQudz1lLmdldFcobik7Y29uc3Qgbz0xL3QubWFuaGF0dGFuTGVuZ3RoKCk7byE9PTEvMD90Lm11bHRpcGx5U2NhbGFyKG8pOnQuc2V0KDEsMCwwLDApLGUuc2V0WFlaVyhuLHQueCx0LnksdC56LHQudyl9fXVwZGF0ZU1hdHJpeFdvcmxkKHQpe3N1cGVyLnVwZGF0ZU1hdHJpeFdvcmxkKHQpLCJhdHRhY2hlZCI9PT10aGlzLmJpbmRNb2RlP3RoaXMuYmluZE1hdHJpeEludmVyc2UuY29weSh0aGlzLm1hdHJpeFdvcmxkKS5pbnZlcnQoKToiZGV0YWNoZWQiPT09dGhpcy5iaW5kTW9kZT90aGlzLmJpbmRNYXRyaXhJbnZlcnNlLmNvcHkodGhpcy5iaW5kTWF0cml4KS5pbnZlcnQoKTpjb25zb2xlLndhcm4oIlRIUkVFLlNraW5uZWRNZXNoOiBVbnJlY29nbml6ZWQgYmluZE1vZGU6ICIrdGhpcy5iaW5kTW9kZSl9Ym9uZVRyYW5zZm9ybSh0LGUpe2NvbnN0IG49dGhpcy5za2VsZXRvbixvPXRoaXMuZ2VvbWV0cnk7aWZ0LmZyb21CdWZmZXJBdHRyaWJ1dGUoby5hdHRyaWJ1dGVzLnNraW5JbmRleCx0KSxhZnQuZnJvbUJ1ZmZlckF0dHJpYnV0ZShvLmF0dHJpYnV0ZXMuc2tpbldlaWdodCx0KSxvZnQuZnJvbUJ1ZmZlckF0dHJpYnV0ZShvLmF0dHJpYnV0ZXMucG9zaXRpb24sdCkuYXBwbHlNYXRyaXg0KHRoaXMuYmluZE1hdHJpeCksZS5zZXQoMCwwLDApO2ZvcihsZXQgdD0wO3Q8NDt0Kyspe2NvbnN0IG89YWZ0LmdldENvbXBvbmVudCh0KTtpZigwIT09byl7Y29uc3QgaT1pZnQuZ2V0Q29tcG9uZW50KHQpO3NmdC5tdWx0aXBseU1hdHJpY2VzKG4uYm9uZXNbaV0ubWF0cml4V29ybGQsbi5ib25lSW52ZXJzZXNbaV0pLGUuYWRkU2NhbGVkVmVjdG9yKHJmdC5jb3B5KG9mdCkuYXBwbHlNYXRyaXg0KHNmdCksbyl9fXJldHVybiBlLmFwcGx5TWF0cml4NCh0aGlzLmJpbmRNYXRyaXhJbnZlcnNlKX19bGZ0LnByb3RvdHlwZS5pc1NraW5uZWRNZXNoPSEwOyhjbGFzcyBleHRlbmRzIFNsdHtjb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy50eXBlPSJCb25lIn19KS5wcm90b3R5cGUuaXNCb25lPSEwOyhjbGFzcyBleHRlbmRzIENzdHtjb25zdHJ1Y3Rvcih0PW51bGwsZT0xLG49MSxvLGksYSxyLHMsbD0xMDAzLGM9MTAwMyxkLHApe3N1cGVyKG51bGwsYSxyLHMsbCxjLG8saSxkLHApLHRoaXMuaW1hZ2U9e2RhdGE6dCx3aWR0aDplLGhlaWdodDpufSx0aGlzLm1hZ0ZpbHRlcj1sLHRoaXMubWluRmlsdGVyPWMsdGhpcy5nZW5lcmF0ZU1pcG1hcHM9ITEsdGhpcy5mbGlwWT0hMSx0aGlzLnVucGFja0FsaWdubWVudD0xLHRoaXMubmVlZHNVcGRhdGU9ITB9fSkucHJvdG90eXBlLmlzRGF0YVRleHR1cmU9ITA7Y29uc3QgY2Z0PW5ldyBvbHQsZGZ0PW5ldyBvbHQscGZ0PVtdLG1mdD1uZXcgU2N0OyhjbGFzcyBleHRlbmRzIFNjdHtjb25zdHJ1Y3Rvcih0LGUsbil7c3VwZXIodCxlKSx0aGlzLmluc3RhbmNlTWF0cml4PW5ldyBRbHQobmV3IEZsb2F0MzJBcnJheSgxNipuKSwxNiksdGhpcy5pbnN0YW5jZUNvbG9yPW51bGwsdGhpcy5jb3VudD1uLHRoaXMuZnJ1c3R1bUN1bGxlZD0hMX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMuaW5zdGFuY2VNYXRyaXguY29weSh0Lmluc3RhbmNlTWF0cml4KSxudWxsIT09dC5pbnN0YW5jZUNvbG9yJiYodGhpcy5pbnN0YW5jZUNvbG9yPXQuaW5zdGFuY2VDb2xvci5jbG9uZSgpKSx0aGlzLmNvdW50PXQuY291bnQsdGhpc31nZXRDb2xvckF0KHQsZSl7ZS5mcm9tQXJyYXkodGhpcy5pbnN0YW5jZUNvbG9yLmFycmF5LDMqdCl9Z2V0TWF0cml4QXQodCxlKXtlLmZyb21BcnJheSh0aGlzLmluc3RhbmNlTWF0cml4LmFycmF5LDE2KnQpfXJheWNhc3QodCxlKXtjb25zdCBuPXRoaXMubWF0cml4V29ybGQsbz10aGlzLmNvdW50O2lmKG1mdC5nZW9tZXRyeT10aGlzLmdlb21ldHJ5LG1mdC5tYXRlcmlhbD10aGlzLm1hdGVyaWFsLHZvaWQgMCE9PW1mdC5tYXRlcmlhbClmb3IobGV0IGk9MDtpPG87aSsrKXt0aGlzLmdldE1hdHJpeEF0KGksY2Z0KSxkZnQubXVsdGlwbHlNYXRyaWNlcyhuLGNmdCksbWZ0Lm1hdHJpeFdvcmxkPWRmdCxtZnQucmF5Y2FzdCh0LHBmdCk7Zm9yKGxldCB0PTAsbj1wZnQubGVuZ3RoO3Q8bjt0Kyspe2NvbnN0IG49cGZ0W3RdO24uaW5zdGFuY2VJZD1pLG4ub2JqZWN0PXRoaXMsZS5wdXNoKG4pfXBmdC5sZW5ndGg9MH19c2V0Q29sb3JBdCh0LGUpe251bGw9PT10aGlzLmluc3RhbmNlQ29sb3ImJih0aGlzLmluc3RhbmNlQ29sb3I9bmV3IFFsdChuZXcgRmxvYXQzMkFycmF5KDMqdGhpcy5pbnN0YW5jZU1hdHJpeC5jb3VudCksMykpLGUudG9BcnJheSh0aGlzLmluc3RhbmNlQ29sb3IuYXJyYXksMyp0KX1zZXRNYXRyaXhBdCh0LGUpe2UudG9BcnJheSh0aGlzLmluc3RhbmNlTWF0cml4LmFycmF5LDE2KnQpfXVwZGF0ZU1vcnBoVGFyZ2V0cygpe31kaXNwb3NlKCl7dGhpcy5kaXNwYXRjaEV2ZW50KHt0eXBlOiJkaXNwb3NlIn0pfX0pLnByb3RvdHlwZS5pc0luc3RhbmNlZE1lc2g9ITA7Y2xhc3MgZmZ0IGV4dGVuZHMgVmx0e2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy50eXBlPSJMaW5lQmFzaWNNYXRlcmlhbCIsdGhpcy5jb2xvcj1uZXcgWmx0KDE2Nzc3MjE1KSx0aGlzLmxpbmV3aWR0aD0xLHRoaXMubGluZWNhcD0icm91bmQiLHRoaXMubGluZWpvaW49InJvdW5kIix0aGlzLnNldFZhbHVlcyh0KX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMuY29sb3IuY29weSh0LmNvbG9yKSx0aGlzLmxpbmV3aWR0aD10LmxpbmV3aWR0aCx0aGlzLmxpbmVjYXA9dC5saW5lY2FwLHRoaXMubGluZWpvaW49dC5saW5lam9pbix0aGlzfX1mZnQucHJvdG90eXBlLmlzTGluZUJhc2ljTWF0ZXJpYWw9ITA7Y29uc3QgdWZ0PW5ldyB3c3QsZ2Z0PW5ldyB3c3QsaGZ0PW5ldyBvbHQsYmZ0PW5ldyBubHQseWZ0PW5ldyBac3Q7Y2xhc3MgX2Z0IGV4dGVuZHMgU2x0e2NvbnN0cnVjdG9yKHQ9bmV3IGRjdCxlPW5ldyBmZnQpe3N1cGVyKCksdGhpcy50eXBlPSJMaW5lIix0aGlzLmdlb21ldHJ5PXQsdGhpcy5tYXRlcmlhbD1lLHRoaXMudXBkYXRlTW9ycGhUYXJnZXRzKCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLm1hdGVyaWFsPXQubWF0ZXJpYWwsdGhpcy5nZW9tZXRyeT10Lmdlb21ldHJ5LHRoaXN9Y29tcHV0ZUxpbmVEaXN0YW5jZXMoKXtjb25zdCB0PXRoaXMuZ2VvbWV0cnk7aWYodC5pc0J1ZmZlckdlb21ldHJ5KWlmKG51bGw9PT10LmluZGV4KXtjb25zdCBlPXQuYXR0cmlidXRlcy5wb3NpdGlvbixuPVswXTtmb3IobGV0IHQ9MSxvPWUuY291bnQ7dDxvO3QrKyl1ZnQuZnJvbUJ1ZmZlckF0dHJpYnV0ZShlLHQtMSksZ2Z0LmZyb21CdWZmZXJBdHRyaWJ1dGUoZSx0KSxuW3RdPW5bdC0xXSxuW3RdKz11ZnQuZGlzdGFuY2VUbyhnZnQpO3Quc2V0QXR0cmlidXRlKCJsaW5lRGlzdGFuY2UiLG5ldyBlY3QobiwxKSl9ZWxzZSBjb25zb2xlLndhcm4oIlRIUkVFLkxpbmUuY29tcHV0ZUxpbmVEaXN0YW5jZXMoKTogQ29tcHV0YXRpb24gb25seSBwb3NzaWJsZSB3aXRoIG5vbi1pbmRleGVkIEJ1ZmZlckdlb21ldHJ5LiIpO2Vsc2UgdC5pc0dlb21ldHJ5JiZjb25zb2xlLmVycm9yKCJUSFJFRS5MaW5lLmNvbXB1dGVMaW5lRGlzdGFuY2VzKCkgbm8gbG9uZ2VyIHN1cHBvcnRzIFRIUkVFLkdlb21ldHJ5LiBVc2UgVEhSRUUuQnVmZmVyR2VvbWV0cnkgaW5zdGVhZC4iKTtyZXR1cm4gdGhpc31yYXljYXN0KHQsZSl7Y29uc3Qgbj10aGlzLmdlb21ldHJ5LG89dGhpcy5tYXRyaXhXb3JsZCxpPXQucGFyYW1zLkxpbmUudGhyZXNob2xkLGE9bi5kcmF3UmFuZ2U7aWYobnVsbD09PW4uYm91bmRpbmdTcGhlcmUmJm4uY29tcHV0ZUJvdW5kaW5nU3BoZXJlKCkseWZ0LmNvcHkobi5ib3VuZGluZ1NwaGVyZSkseWZ0LmFwcGx5TWF0cml4NChvKSx5ZnQucmFkaXVzKz1pLCExPT09dC5yYXkuaW50ZXJzZWN0c1NwaGVyZSh5ZnQpKXJldHVybjtoZnQuY29weShvKS5pbnZlcnQoKSxiZnQuY29weSh0LnJheSkuYXBwbHlNYXRyaXg0KGhmdCk7Y29uc3Qgcj1pLygodGhpcy5zY2FsZS54K3RoaXMuc2NhbGUueSt0aGlzLnNjYWxlLnopLzMpLHM9cipyLGw9bmV3IHdzdCxjPW5ldyB3c3QsZD1uZXcgd3N0LHA9bmV3IHdzdCxtPXRoaXMuaXNMaW5lU2VnbWVudHM/MjoxO2lmKG4uaXNCdWZmZXJHZW9tZXRyeSl7Y29uc3Qgbz1uLmluZGV4LGk9bi5hdHRyaWJ1dGVzLnBvc2l0aW9uO2lmKG51bGwhPT1vKXtmb3IobGV0IG49TWF0aC5tYXgoMCxhLnN0YXJ0KSxyPU1hdGgubWluKG8uY291bnQsYS5zdGFydCthLmNvdW50KS0xO248cjtuKz1tKXtjb25zdCBhPW8uZ2V0WChuKSxyPW8uZ2V0WChuKzEpO2wuZnJvbUJ1ZmZlckF0dHJpYnV0ZShpLGEpLGMuZnJvbUJ1ZmZlckF0dHJpYnV0ZShpLHIpO2lmKGJmdC5kaXN0YW5jZVNxVG9TZWdtZW50KGwsYyxwLGQpPnMpY29udGludWU7cC5hcHBseU1hdHJpeDQodGhpcy5tYXRyaXhXb3JsZCk7Y29uc3QgbT10LnJheS5vcmlnaW4uZGlzdGFuY2VUbyhwKTttPHQubmVhcnx8bT50LmZhcnx8ZS5wdXNoKHtkaXN0YW5jZTptLHBvaW50OmQuY2xvbmUoKS5hcHBseU1hdHJpeDQodGhpcy5tYXRyaXhXb3JsZCksaW5kZXg6bixmYWNlOm51bGwsZmFjZUluZGV4Om51bGwsb2JqZWN0OnRoaXN9KX19ZWxzZXtmb3IobGV0IG49TWF0aC5tYXgoMCxhLnN0YXJ0KSxvPU1hdGgubWluKGkuY291bnQsYS5zdGFydCthLmNvdW50KS0xO248bztuKz1tKXtsLmZyb21CdWZmZXJBdHRyaWJ1dGUoaSxuKSxjLmZyb21CdWZmZXJBdHRyaWJ1dGUoaSxuKzEpO2lmKGJmdC5kaXN0YW5jZVNxVG9TZWdtZW50KGwsYyxwLGQpPnMpY29udGludWU7cC5hcHBseU1hdHJpeDQodGhpcy5tYXRyaXhXb3JsZCk7Y29uc3Qgbz10LnJheS5vcmlnaW4uZGlzdGFuY2VUbyhwKTtvPHQubmVhcnx8bz50LmZhcnx8ZS5wdXNoKHtkaXN0YW5jZTpvLHBvaW50OmQuY2xvbmUoKS5hcHBseU1hdHJpeDQodGhpcy5tYXRyaXhXb3JsZCksaW5kZXg6bixmYWNlOm51bGwsZmFjZUluZGV4Om51bGwsb2JqZWN0OnRoaXN9KX19fWVsc2Ugbi5pc0dlb21ldHJ5JiZjb25zb2xlLmVycm9yKCJUSFJFRS5MaW5lLnJheWNhc3QoKSBubyBsb25nZXIgc3VwcG9ydHMgVEhSRUUuR2VvbWV0cnkuIFVzZSBUSFJFRS5CdWZmZXJHZW9tZXRyeSBpbnN0ZWFkLiIpfXVwZGF0ZU1vcnBoVGFyZ2V0cygpe2NvbnN0IHQ9dGhpcy5nZW9tZXRyeTtpZih0LmlzQnVmZmVyR2VvbWV0cnkpe2NvbnN0IGU9dC5tb3JwaEF0dHJpYnV0ZXMsbj1PYmplY3Qua2V5cyhlKTtpZihuLmxlbmd0aD4wKXtjb25zdCB0PWVbblswXV07aWYodm9pZCAwIT09dCl7dGhpcy5tb3JwaFRhcmdldEluZmx1ZW5jZXM9W10sdGhpcy5tb3JwaFRhcmdldERpY3Rpb25hcnk9e307Zm9yKGxldCBlPTAsbj10Lmxlbmd0aDtlPG47ZSsrKXtjb25zdCBuPXRbZV0ubmFtZXx8U3RyaW5nKGUpO3RoaXMubW9ycGhUYXJnZXRJbmZsdWVuY2VzLnB1c2goMCksdGhpcy5tb3JwaFRhcmdldERpY3Rpb25hcnlbbl09ZX19fX1lbHNle2NvbnN0IGU9dC5tb3JwaFRhcmdldHM7dm9pZCAwIT09ZSYmZS5sZW5ndGg+MCYmY29uc29sZS5lcnJvcigiVEhSRUUuTGluZS51cGRhdGVNb3JwaFRhcmdldHMoKSBkb2VzIG5vdCBzdXBwb3J0IFRIUkVFLkdlb21ldHJ5LiBVc2UgVEhSRUUuQnVmZmVyR2VvbWV0cnkgaW5zdGVhZC4iKX19fV9mdC5wcm90b3R5cGUuaXNMaW5lPSEwO2NvbnN0IENmdD1uZXcgd3N0LE1mdD1uZXcgd3N0O2NsYXNzIHZmdCBleHRlbmRzIF9mdHtjb25zdHJ1Y3Rvcih0LGUpe3N1cGVyKHQsZSksdGhpcy50eXBlPSJMaW5lU2VnbWVudHMifWNvbXB1dGVMaW5lRGlzdGFuY2VzKCl7Y29uc3QgdD10aGlzLmdlb21ldHJ5O2lmKHQuaXNCdWZmZXJHZW9tZXRyeSlpZihudWxsPT09dC5pbmRleCl7Y29uc3QgZT10LmF0dHJpYnV0ZXMucG9zaXRpb24sbj1bXTtmb3IobGV0IHQ9MCxvPWUuY291bnQ7dDxvO3QrPTIpQ2Z0LmZyb21CdWZmZXJBdHRyaWJ1dGUoZSx0KSxNZnQuZnJvbUJ1ZmZlckF0dHJpYnV0ZShlLHQrMSksblt0XT0wPT09dD8wOm5bdC0xXSxuW3QrMV09blt0XStDZnQuZGlzdGFuY2VUbyhNZnQpO3Quc2V0QXR0cmlidXRlKCJsaW5lRGlzdGFuY2UiLG5ldyBlY3QobiwxKSl9ZWxzZSBjb25zb2xlLndhcm4oIlRIUkVFLkxpbmVTZWdtZW50cy5jb21wdXRlTGluZURpc3RhbmNlcygpOiBDb21wdXRhdGlvbiBvbmx5IHBvc3NpYmxlIHdpdGggbm9uLWluZGV4ZWQgQnVmZmVyR2VvbWV0cnkuIik7ZWxzZSB0LmlzR2VvbWV0cnkmJmNvbnNvbGUuZXJyb3IoIlRIUkVFLkxpbmVTZWdtZW50cy5jb21wdXRlTGluZURpc3RhbmNlcygpIG5vIGxvbmdlciBzdXBwb3J0cyBUSFJFRS5HZW9tZXRyeS4gVXNlIFRIUkVFLkJ1ZmZlckdlb21ldHJ5IGluc3RlYWQuIik7cmV0dXJuIHRoaXN9fXZmdC5wcm90b3R5cGUuaXNMaW5lU2VnbWVudHM9ITA7KGNsYXNzIGV4dGVuZHMgX2Z0e2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIodCxlKSx0aGlzLnR5cGU9IkxpbmVMb29wIn19KS5wcm90b3R5cGUuaXNMaW5lTG9vcD0hMDtjbGFzcyB4ZnQgZXh0ZW5kcyBWbHR7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLnR5cGU9IlBvaW50c01hdGVyaWFsIix0aGlzLmNvbG9yPW5ldyBabHQoMTY3NzcyMTUpLHRoaXMubWFwPW51bGwsdGhpcy5hbHBoYU1hcD1udWxsLHRoaXMuc2l6ZT0xLHRoaXMuc2l6ZUF0dGVudWF0aW9uPSEwLHRoaXMuc2V0VmFsdWVzKHQpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5jb2xvci5jb3B5KHQuY29sb3IpLHRoaXMubWFwPXQubWFwLHRoaXMuYWxwaGFNYXA9dC5hbHBoYU1hcCx0aGlzLnNpemU9dC5zaXplLHRoaXMuc2l6ZUF0dGVudWF0aW9uPXQuc2l6ZUF0dGVudWF0aW9uLHRoaXN9fXhmdC5wcm90b3R5cGUuaXNQb2ludHNNYXRlcmlhbD0hMDtjb25zdCBPZnQ9bmV3IG9sdCxQZnQ9bmV3IG5sdCx3ZnQ9bmV3IFpzdCxrZnQ9bmV3IHdzdDtmdW5jdGlvbiBTZnQodCxlLG4sbyxpLGEscil7Y29uc3Qgcz1QZnQuZGlzdGFuY2VTcVRvUG9pbnQodCk7aWYoczxuKXtjb25zdCBuPW5ldyB3c3Q7UGZ0LmNsb3Nlc3RQb2ludFRvUG9pbnQodCxuKSxuLmFwcGx5TWF0cml4NChvKTtjb25zdCBsPWkucmF5Lm9yaWdpbi5kaXN0YW5jZVRvKG4pO2lmKGw8aS5uZWFyfHxsPmkuZmFyKXJldHVybjthLnB1c2goe2Rpc3RhbmNlOmwsZGlzdGFuY2VUb1JheTpNYXRoLnNxcnQocykscG9pbnQ6bixpbmRleDplLGZhY2U6bnVsbCxvYmplY3Q6cn0pfX0oY2xhc3MgZXh0ZW5kcyBTbHR7Y29uc3RydWN0b3IodD1uZXcgZGN0LGU9bmV3IHhmdCl7c3VwZXIoKSx0aGlzLnR5cGU9IlBvaW50cyIsdGhpcy5nZW9tZXRyeT10LHRoaXMubWF0ZXJpYWw9ZSx0aGlzLnVwZGF0ZU1vcnBoVGFyZ2V0cygpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5tYXRlcmlhbD10Lm1hdGVyaWFsLHRoaXMuZ2VvbWV0cnk9dC5nZW9tZXRyeSx0aGlzfXJheWNhc3QodCxlKXtjb25zdCBuPXRoaXMuZ2VvbWV0cnksbz10aGlzLm1hdHJpeFdvcmxkLGk9dC5wYXJhbXMuUG9pbnRzLnRocmVzaG9sZCxhPW4uZHJhd1JhbmdlO2lmKG51bGw9PT1uLmJvdW5kaW5nU3BoZXJlJiZuLmNvbXB1dGVCb3VuZGluZ1NwaGVyZSgpLHdmdC5jb3B5KG4uYm91bmRpbmdTcGhlcmUpLHdmdC5hcHBseU1hdHJpeDQobyksd2Z0LnJhZGl1cys9aSwhMT09PXQucmF5LmludGVyc2VjdHNTcGhlcmUod2Z0KSlyZXR1cm47T2Z0LmNvcHkobykuaW52ZXJ0KCksUGZ0LmNvcHkodC5yYXkpLmFwcGx5TWF0cml4NChPZnQpO2NvbnN0IHI9aS8oKHRoaXMuc2NhbGUueCt0aGlzLnNjYWxlLnkrdGhpcy5zY2FsZS56KS8zKSxzPXIqcjtpZihuLmlzQnVmZmVyR2VvbWV0cnkpe2NvbnN0IGk9bi5pbmRleCxyPW4uYXR0cmlidXRlcy5wb3NpdGlvbjtpZihudWxsIT09aSl7Zm9yKGxldCBuPU1hdGgubWF4KDAsYS5zdGFydCksbD1NYXRoLm1pbihpLmNvdW50LGEuc3RhcnQrYS5jb3VudCk7bjxsO24rKyl7Y29uc3QgYT1pLmdldFgobik7a2Z0LmZyb21CdWZmZXJBdHRyaWJ1dGUocixhKSxTZnQoa2Z0LGEscyxvLHQsZSx0aGlzKX19ZWxzZXtmb3IobGV0IG49TWF0aC5tYXgoMCxhLnN0YXJ0KSxpPU1hdGgubWluKHIuY291bnQsYS5zdGFydCthLmNvdW50KTtuPGk7bisrKWtmdC5mcm9tQnVmZmVyQXR0cmlidXRlKHIsbiksU2Z0KGtmdCxuLHMsbyx0LGUsdGhpcyl9fWVsc2UgY29uc29sZS5lcnJvcigiVEhSRUUuUG9pbnRzLnJheWNhc3QoKSBubyBsb25nZXIgc3VwcG9ydHMgVEhSRUUuR2VvbWV0cnkuIFVzZSBUSFJFRS5CdWZmZXJHZW9tZXRyeSBpbnN0ZWFkLiIpfXVwZGF0ZU1vcnBoVGFyZ2V0cygpe2NvbnN0IHQ9dGhpcy5nZW9tZXRyeTtpZih0LmlzQnVmZmVyR2VvbWV0cnkpe2NvbnN0IGU9dC5tb3JwaEF0dHJpYnV0ZXMsbj1PYmplY3Qua2V5cyhlKTtpZihuLmxlbmd0aD4wKXtjb25zdCB0PWVbblswXV07aWYodm9pZCAwIT09dCl7dGhpcy5tb3JwaFRhcmdldEluZmx1ZW5jZXM9W10sdGhpcy5tb3JwaFRhcmdldERpY3Rpb25hcnk9e307Zm9yKGxldCBlPTAsbj10Lmxlbmd0aDtlPG47ZSsrKXtjb25zdCBuPXRbZV0ubmFtZXx8U3RyaW5nKGUpO3RoaXMubW9ycGhUYXJnZXRJbmZsdWVuY2VzLnB1c2goMCksdGhpcy5tb3JwaFRhcmdldERpY3Rpb25hcnlbbl09ZX19fX1lbHNle2NvbnN0IGU9dC5tb3JwaFRhcmdldHM7dm9pZCAwIT09ZSYmZS5sZW5ndGg+MCYmY29uc29sZS5lcnJvcigiVEhSRUUuUG9pbnRzLnVwZGF0ZU1vcnBoVGFyZ2V0cygpIGRvZXMgbm90IHN1cHBvcnQgVEhSRUUuR2VvbWV0cnkuIFVzZSBUSFJFRS5CdWZmZXJHZW9tZXRyeSBpbnN0ZWFkLiIpfX19KS5wcm90b3R5cGUuaXNQb2ludHM9ITA7KGNsYXNzIGV4dGVuZHMgQ3N0e2NvbnN0cnVjdG9yKHQsZSxuLG8saSxhLHIscyxsKXtzdXBlcih0LGUsbixvLGksYSxyLHMsbCksdGhpcy5mb3JtYXQ9dm9pZCAwIT09cj9yOlZydCx0aGlzLm1pbkZpbHRlcj12b2lkIDAhPT1hP2E6VHJ0LHRoaXMubWFnRmlsdGVyPXZvaWQgMCE9PWk/aTpUcnQsdGhpcy5nZW5lcmF0ZU1pcG1hcHM9ITE7Y29uc3QgYz10aGlzOyJyZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrImluIHQmJnQucmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFjaygoZnVuY3Rpb24gZSgpe2MubmVlZHNVcGRhdGU9ITAsdC5yZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrKGUpfSkpfWNsb25lKCl7cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKHRoaXMuaW1hZ2UpLmNvcHkodGhpcyl9dXBkYXRlKCl7Y29uc3QgdD10aGlzLmltYWdlOyExPT09InJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2siaW4gdCYmdC5yZWFkeVN0YXRlPj10LkhBVkVfQ1VSUkVOVF9EQVRBJiYodGhpcy5uZWVkc1VwZGF0ZT0hMCl9fSkucHJvdG90eXBlLmlzVmlkZW9UZXh0dXJlPSEwOyhjbGFzcyBleHRlbmRzIENzdHtjb25zdHJ1Y3Rvcih0LGUsbixvLGksYSxyLHMsbCxjLGQscCl7c3VwZXIobnVsbCxhLHIscyxsLGMsbyxpLGQscCksdGhpcy5pbWFnZT17d2lkdGg6ZSxoZWlnaHQ6bn0sdGhpcy5taXBtYXBzPXQsdGhpcy5mbGlwWT0hMSx0aGlzLmdlbmVyYXRlTWlwbWFwcz0hMX19KS5wcm90b3R5cGUuaXNDb21wcmVzc2VkVGV4dHVyZT0hMDsoY2xhc3MgZXh0ZW5kcyBDc3R7Y29uc3RydWN0b3IodCxlLG4sbyxpLGEscixzLGwpe3N1cGVyKHQsZSxuLG8saSxhLHIscyxsKSx0aGlzLm5lZWRzVXBkYXRlPSEwfX0pLnByb3RvdHlwZS5pc0NhbnZhc1RleHR1cmU9ITA7KGNsYXNzIGV4dGVuZHMgQ3N0e2NvbnN0cnVjdG9yKHQsZSxuLG8saSxhLHIscyxsLGMpe2lmKChjPXZvaWQgMCE9PWM/YzpVcnQpIT09VXJ0JiZjIT09V3J0KXRocm93IG5ldyBFcnJvcigiRGVwdGhUZXh0dXJlIGZvcm1hdCBtdXN0IGJlIGVpdGhlciBUSFJFRS5EZXB0aEZvcm1hdCBvciBUSFJFRS5EZXB0aFN0ZW5jaWxGb3JtYXQiKTt2b2lkIDA9PT1uJiZjPT09VXJ0JiYobj1JcnQpLHZvaWQgMD09PW4mJmM9PT1XcnQmJihuPUJydCksc3VwZXIobnVsbCxvLGksYSxyLHMsYyxuLGwpLHRoaXMuaW1hZ2U9e3dpZHRoOnQsaGVpZ2h0OmV9LHRoaXMubWFnRmlsdGVyPXZvaWQgMCE9PXI/cjpBcnQsdGhpcy5taW5GaWx0ZXI9dm9pZCAwIT09cz9zOkFydCx0aGlzLmZsaXBZPSExLHRoaXMuZ2VuZXJhdGVNaXBtYXBzPSExfX0pLnByb3RvdHlwZS5pc0RlcHRoVGV4dHVyZT0hMDtjbGFzcyBEZnQgZXh0ZW5kcyBkY3R7Y29uc3RydWN0b3IodD0xLGU9OCxuPTAsbz0yKk1hdGguUEkpe3N1cGVyKCksdGhpcy50eXBlPSJDaXJjbGVHZW9tZXRyeSIsdGhpcy5wYXJhbWV0ZXJzPXtyYWRpdXM6dCxzZWdtZW50czplLHRoZXRhU3RhcnQ6bix0aGV0YUxlbmd0aDpvfSxlPU1hdGgubWF4KDMsZSk7Y29uc3QgaT1bXSxhPVtdLHI9W10scz1bXSxsPW5ldyB3c3QsYz1uZXcgZ3N0O2EucHVzaCgwLDAsMCksci5wdXNoKDAsMCwxKSxzLnB1c2goLjUsLjUpO2ZvcihsZXQgaT0wLGQ9MztpPD1lO2krKyxkKz0zKXtjb25zdCBwPW4raS9lKm87bC54PXQqTWF0aC5jb3MocCksbC55PXQqTWF0aC5zaW4ocCksYS5wdXNoKGwueCxsLnksbC56KSxyLnB1c2goMCwwLDEpLGMueD0oYVtkXS90KzEpLzIsYy55PShhW2QrMV0vdCsxKS8yLHMucHVzaChjLngsYy55KX1mb3IobGV0IHQ9MTt0PD1lO3QrKylpLnB1c2godCx0KzEsMCk7dGhpcy5zZXRJbmRleChpKSx0aGlzLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBlY3QoYSwzKSksdGhpcy5zZXRBdHRyaWJ1dGUoIm5vcm1hbCIsbmV3IGVjdChyLDMpKSx0aGlzLnNldEF0dHJpYnV0ZSgidXYiLG5ldyBlY3QocywyKSl9c3RhdGljIGZyb21KU09OKHQpe3JldHVybiBuZXcgRGZ0KHQucmFkaXVzLHQuc2VnbWVudHMsdC50aGV0YVN0YXJ0LHQudGhldGFMZW5ndGgpfX1uZXcgd3N0LG5ldyB3c3QsbmV3IHdzdCxuZXcgTGx0O2NsYXNzIFJmdHtjb25zdHJ1Y3Rvcigpe3RoaXMudHlwZT0iQ3VydmUiLHRoaXMuYXJjTGVuZ3RoRGl2aXNpb25zPTIwMH1nZXRQb2ludCgpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkN1cnZlOiAuZ2V0UG9pbnQoKSBub3QgaW1wbGVtZW50ZWQuIiksbnVsbH1nZXRQb2ludEF0KHQsZSl7Y29uc3Qgbj10aGlzLmdldFV0b1RtYXBwaW5nKHQpO3JldHVybiB0aGlzLmdldFBvaW50KG4sZSl9Z2V0UG9pbnRzKHQ9NSl7Y29uc3QgZT1bXTtmb3IobGV0IG49MDtuPD10O24rKyllLnB1c2godGhpcy5nZXRQb2ludChuL3QpKTtyZXR1cm4gZX1nZXRTcGFjZWRQb2ludHModD01KXtjb25zdCBlPVtdO2ZvcihsZXQgbj0wO248PXQ7bisrKWUucHVzaCh0aGlzLmdldFBvaW50QXQobi90KSk7cmV0dXJuIGV9Z2V0TGVuZ3RoKCl7Y29uc3QgdD10aGlzLmdldExlbmd0aHMoKTtyZXR1cm4gdFt0Lmxlbmd0aC0xXX1nZXRMZW5ndGhzKHQ9dGhpcy5hcmNMZW5ndGhEaXZpc2lvbnMpe2lmKHRoaXMuY2FjaGVBcmNMZW5ndGhzJiZ0aGlzLmNhY2hlQXJjTGVuZ3Rocy5sZW5ndGg9PT10KzEmJiF0aGlzLm5lZWRzVXBkYXRlKXJldHVybiB0aGlzLmNhY2hlQXJjTGVuZ3Roczt0aGlzLm5lZWRzVXBkYXRlPSExO2NvbnN0IGU9W107bGV0IG4sbz10aGlzLmdldFBvaW50KDApLGk9MDtlLnB1c2goMCk7Zm9yKGxldCBhPTE7YTw9dDthKyspbj10aGlzLmdldFBvaW50KGEvdCksaSs9bi5kaXN0YW5jZVRvKG8pLGUucHVzaChpKSxvPW47cmV0dXJuIHRoaXMuY2FjaGVBcmNMZW5ndGhzPWUsZX11cGRhdGVBcmNMZW5ndGhzKCl7dGhpcy5uZWVkc1VwZGF0ZT0hMCx0aGlzLmdldExlbmd0aHMoKX1nZXRVdG9UbWFwcGluZyh0LGUpe2NvbnN0IG49dGhpcy5nZXRMZW5ndGhzKCk7bGV0IG89MDtjb25zdCBpPW4ubGVuZ3RoO2xldCBhO2E9ZXx8dCpuW2ktMV07bGV0IHIscz0wLGw9aS0xO2Zvcig7czw9bDspaWYobz1NYXRoLmZsb29yKHMrKGwtcykvMikscj1uW29dLWEscjwwKXM9bysxO2Vsc2V7aWYoIShyPjApKXtsPW87YnJlYWt9bD1vLTF9aWYobz1sLG5bb109PT1hKXJldHVybiBvLyhpLTEpO2NvbnN0IGM9bltvXTtyZXR1cm4obysoYS1jKS8obltvKzFdLWMpKS8oaS0xKX1nZXRUYW5nZW50KHQsZSl7Y29uc3Qgbj0xZS00O2xldCBvPXQtbixpPXQrbjtvPDAmJihvPTApLGk+MSYmKGk9MSk7Y29uc3QgYT10aGlzLmdldFBvaW50KG8pLHI9dGhpcy5nZXRQb2ludChpKSxzPWV8fChhLmlzVmVjdG9yMj9uZXcgZ3N0Om5ldyB3c3QpO3JldHVybiBzLmNvcHkocikuc3ViKGEpLm5vcm1hbGl6ZSgpLHN9Z2V0VGFuZ2VudEF0KHQsZSl7Y29uc3Qgbj10aGlzLmdldFV0b1RtYXBwaW5nKHQpO3JldHVybiB0aGlzLmdldFRhbmdlbnQobixlKX1jb21wdXRlRnJlbmV0RnJhbWVzKHQsZSl7Y29uc3Qgbj1uZXcgd3N0LG89W10saT1bXSxhPVtdLHI9bmV3IHdzdCxzPW5ldyBvbHQ7Zm9yKGxldCBlPTA7ZTw9dDtlKyspe29bZV09dGhpcy5nZXRUYW5nZW50QXQoZS90LG5ldyB3c3QpLG9bZV0ubm9ybWFsaXplKCl9aVswXT1uZXcgd3N0LGFbMF09bmV3IHdzdDtsZXQgbD1OdW1iZXIuTUFYX1ZBTFVFO2NvbnN0IGM9TWF0aC5hYnMob1swXS54KSxkPU1hdGguYWJzKG9bMF0ueSkscD1NYXRoLmFicyhvWzBdLnopO2M8PWwmJihsPWMsbi5zZXQoMSwwLDApKSxkPD1sJiYobD1kLG4uc2V0KDAsMSwwKSkscDw9bCYmbi5zZXQoMCwwLDEpLHIuY3Jvc3NWZWN0b3JzKG9bMF0sbikubm9ybWFsaXplKCksaVswXS5jcm9zc1ZlY3RvcnMob1swXSxyKSxhWzBdLmNyb3NzVmVjdG9ycyhvWzBdLGlbMF0pO2ZvcihsZXQgZT0xO2U8PXQ7ZSsrKXtpZihpW2VdPWlbZS0xXS5jbG9uZSgpLGFbZV09YVtlLTFdLmNsb25lKCksci5jcm9zc1ZlY3RvcnMob1tlLTFdLG9bZV0pLHIubGVuZ3RoKCk+TnVtYmVyLkVQU0lMT04pe3Iubm9ybWFsaXplKCk7Y29uc3QgdD1NYXRoLmFjb3MocHN0KG9bZS0xXS5kb3Qob1tlXSksLTEsMSkpO2lbZV0uYXBwbHlNYXRyaXg0KHMubWFrZVJvdGF0aW9uQXhpcyhyLHQpKX1hW2VdLmNyb3NzVmVjdG9ycyhvW2VdLGlbZV0pfWlmKCEwPT09ZSl7bGV0IGU9TWF0aC5hY29zKHBzdChpWzBdLmRvdChpW3RdKSwtMSwxKSk7ZS89dCxvWzBdLmRvdChyLmNyb3NzVmVjdG9ycyhpWzBdLGlbdF0pKT4wJiYoZT0tZSk7Zm9yKGxldCBuPTE7bjw9dDtuKyspaVtuXS5hcHBseU1hdHJpeDQocy5tYWtlUm90YXRpb25BeGlzKG9bbl0sZSpuKSksYVtuXS5jcm9zc1ZlY3RvcnMob1tuXSxpW25dKX1yZXR1cm57dGFuZ2VudHM6byxub3JtYWxzOmksYmlub3JtYWxzOmF9fWNsb25lKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMpfWNvcHkodCl7cmV0dXJuIHRoaXMuYXJjTGVuZ3RoRGl2aXNpb25zPXQuYXJjTGVuZ3RoRGl2aXNpb25zLHRoaXN9dG9KU09OKCl7Y29uc3QgdD17bWV0YWRhdGE6e3ZlcnNpb246NC41LHR5cGU6IkN1cnZlIixnZW5lcmF0b3I6IkN1cnZlLnRvSlNPTiJ9fTtyZXR1cm4gdC5hcmNMZW5ndGhEaXZpc2lvbnM9dGhpcy5hcmNMZW5ndGhEaXZpc2lvbnMsdC50eXBlPXRoaXMudHlwZSx0fWZyb21KU09OKHQpe3JldHVybiB0aGlzLmFyY0xlbmd0aERpdmlzaW9ucz10LmFyY0xlbmd0aERpdmlzaW9ucyx0aGlzfX1jbGFzcyBFZnQgZXh0ZW5kcyBSZnR7Y29uc3RydWN0b3IodD0wLGU9MCxuPTEsbz0xLGk9MCxhPTIqTWF0aC5QSSxyPSExLHM9MCl7c3VwZXIoKSx0aGlzLnR5cGU9IkVsbGlwc2VDdXJ2ZSIsdGhpcy5hWD10LHRoaXMuYVk9ZSx0aGlzLnhSYWRpdXM9bix0aGlzLnlSYWRpdXM9byx0aGlzLmFTdGFydEFuZ2xlPWksdGhpcy5hRW5kQW5nbGU9YSx0aGlzLmFDbG9ja3dpc2U9cix0aGlzLmFSb3RhdGlvbj1zfWdldFBvaW50KHQsZSl7Y29uc3Qgbj1lfHxuZXcgZ3N0LG89MipNYXRoLlBJO2xldCBpPXRoaXMuYUVuZEFuZ2xlLXRoaXMuYVN0YXJ0QW5nbGU7Y29uc3QgYT1NYXRoLmFicyhpKTxOdW1iZXIuRVBTSUxPTjtmb3IoO2k8MDspaSs9bztmb3IoO2k+bzspaS09bztpPE51bWJlci5FUFNJTE9OJiYoaT1hPzA6byksITAhPT10aGlzLmFDbG9ja3dpc2V8fGF8fChpPT09bz9pPS1vOmktPW8pO2NvbnN0IHI9dGhpcy5hU3RhcnRBbmdsZSt0Kmk7bGV0IHM9dGhpcy5hWCt0aGlzLnhSYWRpdXMqTWF0aC5jb3MociksbD10aGlzLmFZK3RoaXMueVJhZGl1cypNYXRoLnNpbihyKTtpZigwIT09dGhpcy5hUm90YXRpb24pe2NvbnN0IHQ9TWF0aC5jb3ModGhpcy5hUm90YXRpb24pLGU9TWF0aC5zaW4odGhpcy5hUm90YXRpb24pLG49cy10aGlzLmFYLG89bC10aGlzLmFZO3M9bip0LW8qZSt0aGlzLmFYLGw9biplK28qdCt0aGlzLmFZfXJldHVybiBuLnNldChzLGwpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5hWD10LmFYLHRoaXMuYVk9dC5hWSx0aGlzLnhSYWRpdXM9dC54UmFkaXVzLHRoaXMueVJhZGl1cz10LnlSYWRpdXMsdGhpcy5hU3RhcnRBbmdsZT10LmFTdGFydEFuZ2xlLHRoaXMuYUVuZEFuZ2xlPXQuYUVuZEFuZ2xlLHRoaXMuYUNsb2Nrd2lzZT10LmFDbG9ja3dpc2UsdGhpcy5hUm90YXRpb249dC5hUm90YXRpb24sdGhpc310b0pTT04oKXtjb25zdCB0PXN1cGVyLnRvSlNPTigpO3JldHVybiB0LmFYPXRoaXMuYVgsdC5hWT10aGlzLmFZLHQueFJhZGl1cz10aGlzLnhSYWRpdXMsdC55UmFkaXVzPXRoaXMueVJhZGl1cyx0LmFTdGFydEFuZ2xlPXRoaXMuYVN0YXJ0QW5nbGUsdC5hRW5kQW5nbGU9dGhpcy5hRW5kQW5nbGUsdC5hQ2xvY2t3aXNlPXRoaXMuYUNsb2Nrd2lzZSx0LmFSb3RhdGlvbj10aGlzLmFSb3RhdGlvbix0fWZyb21KU09OKHQpe3JldHVybiBzdXBlci5mcm9tSlNPTih0KSx0aGlzLmFYPXQuYVgsdGhpcy5hWT10LmFZLHRoaXMueFJhZGl1cz10LnhSYWRpdXMsdGhpcy55UmFkaXVzPXQueVJhZGl1cyx0aGlzLmFTdGFydEFuZ2xlPXQuYVN0YXJ0QW5nbGUsdGhpcy5hRW5kQW5nbGU9dC5hRW5kQW5nbGUsdGhpcy5hQ2xvY2t3aXNlPXQuYUNsb2Nrd2lzZSx0aGlzLmFSb3RhdGlvbj10LmFSb3RhdGlvbix0aGlzfX1FZnQucHJvdG90eXBlLmlzRWxsaXBzZUN1cnZlPSEwO2NsYXNzIEFmdCBleHRlbmRzIEVmdHtjb25zdHJ1Y3Rvcih0LGUsbixvLGksYSl7c3VwZXIodCxlLG4sbixvLGksYSksdGhpcy50eXBlPSJBcmNDdXJ2ZSJ9fWZ1bmN0aW9uIFRmdCgpe2xldCB0PTAsZT0wLG49MCxvPTA7ZnVuY3Rpb24gaShpLGEscixzKXt0PWksZT1yLG49LTMqaSszKmEtMipyLXMsbz0yKmktMiphK3Irc31yZXR1cm57aW5pdENhdG11bGxSb206ZnVuY3Rpb24odCxlLG4sbyxhKXtpKGUsbixhKihuLXQpLGEqKG8tZSkpfSxpbml0Tm9udW5pZm9ybUNhdG11bGxSb206ZnVuY3Rpb24odCxlLG4sbyxhLHIscyl7bGV0IGw9KGUtdCkvYS0obi10KS8oYStyKSsobi1lKS9yLGM9KG4tZSkvci0oby1lKS8ocitzKSsoby1uKS9zO2wqPXIsYyo9cixpKGUsbixsLGMpfSxjYWxjOmZ1bmN0aW9uKGkpe2NvbnN0IGE9aSppO3JldHVybiB0K2UqaStuKmErbyooYSppKX19fUFmdC5wcm90b3R5cGUuaXNBcmNDdXJ2ZT0hMDtjb25zdCBOZnQ9bmV3IHdzdCx6ZnQ9bmV3IFRmdCxJZnQ9bmV3IFRmdCxIZnQ9bmV3IFRmdDtjbGFzcyBGZnQgZXh0ZW5kcyBSZnR7Y29uc3RydWN0b3IodD1bXSxlPSExLG49ImNlbnRyaXBldGFsIixvPS41KXtzdXBlcigpLHRoaXMudHlwZT0iQ2F0bXVsbFJvbUN1cnZlMyIsdGhpcy5wb2ludHM9dCx0aGlzLmNsb3NlZD1lLHRoaXMuY3VydmVUeXBlPW4sdGhpcy50ZW5zaW9uPW99Z2V0UG9pbnQodCxlPW5ldyB3c3Qpe2NvbnN0IG49ZSxvPXRoaXMucG9pbnRzLGk9by5sZW5ndGgsYT0oaS0odGhpcy5jbG9zZWQ/MDoxKSkqdDtsZXQgcixzLGw9TWF0aC5mbG9vcihhKSxjPWEtbDt0aGlzLmNsb3NlZD9sKz1sPjA/MDooTWF0aC5mbG9vcihNYXRoLmFicyhsKS9pKSsxKSppOjA9PT1jJiZsPT09aS0xJiYobD1pLTIsYz0xKSx0aGlzLmNsb3NlZHx8bD4wP3I9b1sobC0xKSVpXTooTmZ0LnN1YlZlY3RvcnMob1swXSxvWzFdKS5hZGQob1swXSkscj1OZnQpO2NvbnN0IGQ9b1tsJWldLHA9b1sobCsxKSVpXTtpZih0aGlzLmNsb3NlZHx8bCsyPGk/cz1vWyhsKzIpJWldOihOZnQuc3ViVmVjdG9ycyhvW2ktMV0sb1tpLTJdKS5hZGQob1tpLTFdKSxzPU5mdCksImNlbnRyaXBldGFsIj09PXRoaXMuY3VydmVUeXBlfHwiY2hvcmRhbCI9PT10aGlzLmN1cnZlVHlwZSl7Y29uc3QgdD0iY2hvcmRhbCI9PT10aGlzLmN1cnZlVHlwZT8uNTouMjU7bGV0IGU9TWF0aC5wb3coci5kaXN0YW5jZVRvU3F1YXJlZChkKSx0KSxuPU1hdGgucG93KGQuZGlzdGFuY2VUb1NxdWFyZWQocCksdCksbz1NYXRoLnBvdyhwLmRpc3RhbmNlVG9TcXVhcmVkKHMpLHQpO248MWUtNCYmKG49MSksZTwxZS00JiYoZT1uKSxvPDFlLTQmJihvPW4pLHpmdC5pbml0Tm9udW5pZm9ybUNhdG11bGxSb20oci54LGQueCxwLngscy54LGUsbixvKSxJZnQuaW5pdE5vbnVuaWZvcm1DYXRtdWxsUm9tKHIueSxkLnkscC55LHMueSxlLG4sbyksSGZ0LmluaXROb251bmlmb3JtQ2F0bXVsbFJvbShyLnosZC56LHAueixzLnosZSxuLG8pfWVsc2UiY2F0bXVsbHJvbSI9PT10aGlzLmN1cnZlVHlwZSYmKHpmdC5pbml0Q2F0bXVsbFJvbShyLngsZC54LHAueCxzLngsdGhpcy50ZW5zaW9uKSxJZnQuaW5pdENhdG11bGxSb20oci55LGQueSxwLnkscy55LHRoaXMudGVuc2lvbiksSGZ0LmluaXRDYXRtdWxsUm9tKHIueixkLnoscC56LHMueix0aGlzLnRlbnNpb24pKTtyZXR1cm4gbi5zZXQoemZ0LmNhbGMoYyksSWZ0LmNhbGMoYyksSGZ0LmNhbGMoYykpLG59Y29weSh0KXtzdXBlci5jb3B5KHQpLHRoaXMucG9pbnRzPVtdO2ZvcihsZXQgZT0wLG49dC5wb2ludHMubGVuZ3RoO2U8bjtlKyspe3RoaXMucG9pbnRzLnB1c2godC5wb2ludHNbZV0uY2xvbmUoKSl9cmV0dXJuIHRoaXMuY2xvc2VkPXQuY2xvc2VkLHRoaXMuY3VydmVUeXBlPXQuY3VydmVUeXBlLHRoaXMudGVuc2lvbj10LnRlbnNpb24sdGhpc310b0pTT04oKXtjb25zdCB0PXN1cGVyLnRvSlNPTigpO3QucG9pbnRzPVtdO2ZvcihsZXQgZT0wLG49dGhpcy5wb2ludHMubGVuZ3RoO2U8bjtlKyspe3QucG9pbnRzLnB1c2godGhpcy5wb2ludHNbZV0udG9BcnJheSgpKX1yZXR1cm4gdC5jbG9zZWQ9dGhpcy5jbG9zZWQsdC5jdXJ2ZVR5cGU9dGhpcy5jdXJ2ZVR5cGUsdC50ZW5zaW9uPXRoaXMudGVuc2lvbix0fWZyb21KU09OKHQpe3N1cGVyLmZyb21KU09OKHQpLHRoaXMucG9pbnRzPVtdO2ZvcihsZXQgZT0wLG49dC5wb2ludHMubGVuZ3RoO2U8bjtlKyspe2NvbnN0IG49dC5wb2ludHNbZV07dGhpcy5wb2ludHMucHVzaCgobmV3IHdzdCkuZnJvbUFycmF5KG4pKX1yZXR1cm4gdGhpcy5jbG9zZWQ9dC5jbG9zZWQsdGhpcy5jdXJ2ZVR5cGU9dC5jdXJ2ZVR5cGUsdGhpcy50ZW5zaW9uPXQudGVuc2lvbix0aGlzfX1mdW5jdGlvbiBMZnQodCxlLG4sbyxpKXtjb25zdCBhPS41KihvLWUpLHI9LjUqKGktbikscz10KnQ7cmV0dXJuKDIqbi0yKm8rYStyKSoodCpzKSsoLTMqbiszKm8tMiphLXIpKnMrYSp0K259ZnVuY3Rpb24gQmZ0KHQsZSxuLG8pe3JldHVybihmdW5jdGlvbiBpKHQsZSl7Y29uc3Qgbj0xLXQ7cmV0dXJuIG4qbiplfSkodCxlKSsoZnVuY3Rpb24gYSh0LGUpe3JldHVybiAyKigxLXQpKnQqZX0pKHQsbikrKGZ1bmN0aW9uIHIodCxlKXtyZXR1cm4gdCp0KmV9KSh0LG8pfWZ1bmN0aW9uIFZmdCh0LGUsbixvLGkpe3JldHVybihmdW5jdGlvbiBhKHQsZSl7Y29uc3Qgbj0xLXQ7cmV0dXJuIG4qbipuKmV9KSh0LGUpKyhmdW5jdGlvbiByKHQsZSl7Y29uc3Qgbj0xLXQ7cmV0dXJuIDMqbipuKnQqZX0pKHQsbikrKGZ1bmN0aW9uIHModCxlKXtyZXR1cm4gMyooMS10KSp0KnQqZX0pKHQsbykrKGZ1bmN0aW9uIGwodCxlKXtyZXR1cm4gdCp0KnQqZX0pKHQsaSl9RmZ0LnByb3RvdHlwZS5pc0NhdG11bGxSb21DdXJ2ZTM9ITA7Y2xhc3MgamZ0IGV4dGVuZHMgUmZ0e2NvbnN0cnVjdG9yKHQ9bmV3IGdzdCxlPW5ldyBnc3Qsbj1uZXcgZ3N0LG89bmV3IGdzdCl7c3VwZXIoKSx0aGlzLnR5cGU9IkN1YmljQmV6aWVyQ3VydmUiLHRoaXMudjA9dCx0aGlzLnYxPWUsdGhpcy52Mj1uLHRoaXMudjM9b31nZXRQb2ludCh0LGU9bmV3IGdzdCl7Y29uc3Qgbj1lLG89dGhpcy52MCxpPXRoaXMudjEsYT10aGlzLnYyLHI9dGhpcy52MztyZXR1cm4gbi5zZXQoVmZ0KHQsby54LGkueCxhLngsci54KSxWZnQodCxvLnksaS55LGEueSxyLnkpKSxufWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy52MC5jb3B5KHQudjApLHRoaXMudjEuY29weSh0LnYxKSx0aGlzLnYyLmNvcHkodC52MiksdGhpcy52My5jb3B5KHQudjMpLHRoaXN9dG9KU09OKCl7Y29uc3QgdD1zdXBlci50b0pTT04oKTtyZXR1cm4gdC52MD10aGlzLnYwLnRvQXJyYXkoKSx0LnYxPXRoaXMudjEudG9BcnJheSgpLHQudjI9dGhpcy52Mi50b0FycmF5KCksdC52Mz10aGlzLnYzLnRvQXJyYXkoKSx0fWZyb21KU09OKHQpe3JldHVybiBzdXBlci5mcm9tSlNPTih0KSx0aGlzLnYwLmZyb21BcnJheSh0LnYwKSx0aGlzLnYxLmZyb21BcnJheSh0LnYxKSx0aGlzLnYyLmZyb21BcnJheSh0LnYyKSx0aGlzLnYzLmZyb21BcnJheSh0LnYzKSx0aGlzfX1qZnQucHJvdG90eXBlLmlzQ3ViaWNCZXppZXJDdXJ2ZT0hMDtjbGFzcyBVZnQgZXh0ZW5kcyBSZnR7Y29uc3RydWN0b3IodD1uZXcgd3N0LGU9bmV3IHdzdCxuPW5ldyB3c3Qsbz1uZXcgd3N0KXtzdXBlcigpLHRoaXMudHlwZT0iQ3ViaWNCZXppZXJDdXJ2ZTMiLHRoaXMudjA9dCx0aGlzLnYxPWUsdGhpcy52Mj1uLHRoaXMudjM9b31nZXRQb2ludCh0LGU9bmV3IHdzdCl7Y29uc3Qgbj1lLG89dGhpcy52MCxpPXRoaXMudjEsYT10aGlzLnYyLHI9dGhpcy52MztyZXR1cm4gbi5zZXQoVmZ0KHQsby54LGkueCxhLngsci54KSxWZnQodCxvLnksaS55LGEueSxyLnkpLFZmdCh0LG8ueixpLnosYS56LHIueikpLG59Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLnYwLmNvcHkodC52MCksdGhpcy52MS5jb3B5KHQudjEpLHRoaXMudjIuY29weSh0LnYyKSx0aGlzLnYzLmNvcHkodC52MyksdGhpc310b0pTT04oKXtjb25zdCB0PXN1cGVyLnRvSlNPTigpO3JldHVybiB0LnYwPXRoaXMudjAudG9BcnJheSgpLHQudjE9dGhpcy52MS50b0FycmF5KCksdC52Mj10aGlzLnYyLnRvQXJyYXkoKSx0LnYzPXRoaXMudjMudG9BcnJheSgpLHR9ZnJvbUpTT04odCl7cmV0dXJuIHN1cGVyLmZyb21KU09OKHQpLHRoaXMudjAuZnJvbUFycmF5KHQudjApLHRoaXMudjEuZnJvbUFycmF5KHQudjEpLHRoaXMudjIuZnJvbUFycmF5KHQudjIpLHRoaXMudjMuZnJvbUFycmF5KHQudjMpLHRoaXN9fVVmdC5wcm90b3R5cGUuaXNDdWJpY0JlemllckN1cnZlMz0hMDtjbGFzcyBXZnQgZXh0ZW5kcyBSZnR7Y29uc3RydWN0b3IodD1uZXcgZ3N0LGU9bmV3IGdzdCl7c3VwZXIoKSx0aGlzLnR5cGU9IkxpbmVDdXJ2ZSIsdGhpcy52MT10LHRoaXMudjI9ZX1nZXRQb2ludCh0LGU9bmV3IGdzdCl7Y29uc3Qgbj1lO3JldHVybiAxPT09dD9uLmNvcHkodGhpcy52Mik6KG4uY29weSh0aGlzLnYyKS5zdWIodGhpcy52MSksbi5tdWx0aXBseVNjYWxhcih0KS5hZGQodGhpcy52MSkpLG59Z2V0UG9pbnRBdCh0LGUpe3JldHVybiB0aGlzLmdldFBvaW50KHQsZSl9Z2V0VGFuZ2VudCh0LGUpe2NvbnN0IG49ZXx8bmV3IGdzdDtyZXR1cm4gbi5jb3B5KHRoaXMudjIpLnN1Yih0aGlzLnYxKS5ub3JtYWxpemUoKSxufWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy52MS5jb3B5KHQudjEpLHRoaXMudjIuY29weSh0LnYyKSx0aGlzfXRvSlNPTigpe2NvbnN0IHQ9c3VwZXIudG9KU09OKCk7cmV0dXJuIHQudjE9dGhpcy52MS50b0FycmF5KCksdC52Mj10aGlzLnYyLnRvQXJyYXkoKSx0fWZyb21KU09OKHQpe3JldHVybiBzdXBlci5mcm9tSlNPTih0KSx0aGlzLnYxLmZyb21BcnJheSh0LnYxKSx0aGlzLnYyLmZyb21BcnJheSh0LnYyKSx0aGlzfX1XZnQucHJvdG90eXBlLmlzTGluZUN1cnZlPSEwO2NsYXNzIEdmdCBleHRlbmRzIFJmdHtjb25zdHJ1Y3Rvcih0PW5ldyBnc3QsZT1uZXcgZ3N0LG49bmV3IGdzdCl7c3VwZXIoKSx0aGlzLnR5cGU9IlF1YWRyYXRpY0JlemllckN1cnZlIix0aGlzLnYwPXQsdGhpcy52MT1lLHRoaXMudjI9bn1nZXRQb2ludCh0LGU9bmV3IGdzdCl7Y29uc3Qgbj1lLG89dGhpcy52MCxpPXRoaXMudjEsYT10aGlzLnYyO3JldHVybiBuLnNldChCZnQodCxvLngsaS54LGEueCksQmZ0KHQsby55LGkueSxhLnkpKSxufWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy52MC5jb3B5KHQudjApLHRoaXMudjEuY29weSh0LnYxKSx0aGlzLnYyLmNvcHkodC52MiksdGhpc310b0pTT04oKXtjb25zdCB0PXN1cGVyLnRvSlNPTigpO3JldHVybiB0LnYwPXRoaXMudjAudG9BcnJheSgpLHQudjE9dGhpcy52MS50b0FycmF5KCksdC52Mj10aGlzLnYyLnRvQXJyYXkoKSx0fWZyb21KU09OKHQpe3JldHVybiBzdXBlci5mcm9tSlNPTih0KSx0aGlzLnYwLmZyb21BcnJheSh0LnYwKSx0aGlzLnYxLmZyb21BcnJheSh0LnYxKSx0aGlzLnYyLmZyb21BcnJheSh0LnYyKSx0aGlzfX1HZnQucHJvdG90eXBlLmlzUXVhZHJhdGljQmV6aWVyQ3VydmU9ITA7Y2xhc3MgWWZ0IGV4dGVuZHMgUmZ0e2NvbnN0cnVjdG9yKHQ9bmV3IHdzdCxlPW5ldyB3c3Qsbj1uZXcgd3N0KXtzdXBlcigpLHRoaXMudHlwZT0iUXVhZHJhdGljQmV6aWVyQ3VydmUzIix0aGlzLnYwPXQsdGhpcy52MT1lLHRoaXMudjI9bn1nZXRQb2ludCh0LGU9bmV3IHdzdCl7Y29uc3Qgbj1lLG89dGhpcy52MCxpPXRoaXMudjEsYT10aGlzLnYyO3JldHVybiBuLnNldChCZnQodCxvLngsaS54LGEueCksQmZ0KHQsby55LGkueSxhLnkpLEJmdCh0LG8ueixpLnosYS56KSksbn1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMudjAuY29weSh0LnYwKSx0aGlzLnYxLmNvcHkodC52MSksdGhpcy52Mi5jb3B5KHQudjIpLHRoaXN9dG9KU09OKCl7Y29uc3QgdD1zdXBlci50b0pTT04oKTtyZXR1cm4gdC52MD10aGlzLnYwLnRvQXJyYXkoKSx0LnYxPXRoaXMudjEudG9BcnJheSgpLHQudjI9dGhpcy52Mi50b0FycmF5KCksdH1mcm9tSlNPTih0KXtyZXR1cm4gc3VwZXIuZnJvbUpTT04odCksdGhpcy52MC5mcm9tQXJyYXkodC52MCksdGhpcy52MS5mcm9tQXJyYXkodC52MSksdGhpcy52Mi5mcm9tQXJyYXkodC52MiksdGhpc319WWZ0LnByb3RvdHlwZS5pc1F1YWRyYXRpY0JlemllckN1cnZlMz0hMDtjbGFzcyBxZnQgZXh0ZW5kcyBSZnR7Y29uc3RydWN0b3IodD1bXSl7c3VwZXIoKSx0aGlzLnR5cGU9IlNwbGluZUN1cnZlIix0aGlzLnBvaW50cz10fWdldFBvaW50KHQsZT1uZXcgZ3N0KXtjb25zdCBuPWUsbz10aGlzLnBvaW50cyxpPShvLmxlbmd0aC0xKSp0LGE9TWF0aC5mbG9vcihpKSxyPWktYSxzPW9bMD09PWE/YTphLTFdLGw9b1thXSxjPW9bYT5vLmxlbmd0aC0yP28ubGVuZ3RoLTE6YSsxXSxkPW9bYT5vLmxlbmd0aC0zP28ubGVuZ3RoLTE6YSsyXTtyZXR1cm4gbi5zZXQoTGZ0KHIscy54LGwueCxjLngsZC54KSxMZnQocixzLnksbC55LGMueSxkLnkpKSxufWNvcHkodCl7c3VwZXIuY29weSh0KSx0aGlzLnBvaW50cz1bXTtmb3IobGV0IGU9MCxuPXQucG9pbnRzLmxlbmd0aDtlPG47ZSsrKXt0aGlzLnBvaW50cy5wdXNoKHQucG9pbnRzW2VdLmNsb25lKCkpfXJldHVybiB0aGlzfXRvSlNPTigpe2NvbnN0IHQ9c3VwZXIudG9KU09OKCk7dC5wb2ludHM9W107Zm9yKGxldCBlPTAsbj10aGlzLnBvaW50cy5sZW5ndGg7ZTxuO2UrKyl7dC5wb2ludHMucHVzaCh0aGlzLnBvaW50c1tlXS50b0FycmF5KCkpfXJldHVybiB0fWZyb21KU09OKHQpe3N1cGVyLmZyb21KU09OKHQpLHRoaXMucG9pbnRzPVtdO2ZvcihsZXQgZT0wLG49dC5wb2ludHMubGVuZ3RoO2U8bjtlKyspe2NvbnN0IG49dC5wb2ludHNbZV07dGhpcy5wb2ludHMucHVzaCgobmV3IGdzdCkuZnJvbUFycmF5KG4pKX1yZXR1cm4gdGhpc319cWZ0LnByb3RvdHlwZS5pc1NwbGluZUN1cnZlPSEwO3ZhciBaZnQ9T2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsQXJjQ3VydmU6QWZ0LENhdG11bGxSb21DdXJ2ZTM6RmZ0LEN1YmljQmV6aWVyQ3VydmU6amZ0LEN1YmljQmV6aWVyQ3VydmUzOlVmdCxFbGxpcHNlQ3VydmU6RWZ0LExpbmVDdXJ2ZTpXZnQsTGluZUN1cnZlMzpjbGFzcyBleHRlbmRzIFJmdHtjb25zdHJ1Y3Rvcih0PW5ldyB3c3QsZT1uZXcgd3N0KXtzdXBlcigpLHRoaXMudHlwZT0iTGluZUN1cnZlMyIsdGhpcy5pc0xpbmVDdXJ2ZTM9ITAsdGhpcy52MT10LHRoaXMudjI9ZX1nZXRQb2ludCh0LGU9bmV3IHdzdCl7Y29uc3Qgbj1lO3JldHVybiAxPT09dD9uLmNvcHkodGhpcy52Mik6KG4uY29weSh0aGlzLnYyKS5zdWIodGhpcy52MSksbi5tdWx0aXBseVNjYWxhcih0KS5hZGQodGhpcy52MSkpLG59Z2V0UG9pbnRBdCh0LGUpe3JldHVybiB0aGlzLmdldFBvaW50KHQsZSl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLnYxLmNvcHkodC52MSksdGhpcy52Mi5jb3B5KHQudjIpLHRoaXN9dG9KU09OKCl7Y29uc3QgdD1zdXBlci50b0pTT04oKTtyZXR1cm4gdC52MT10aGlzLnYxLnRvQXJyYXkoKSx0LnYyPXRoaXMudjIudG9BcnJheSgpLHR9ZnJvbUpTT04odCl7cmV0dXJuIHN1cGVyLmZyb21KU09OKHQpLHRoaXMudjEuZnJvbUFycmF5KHQudjEpLHRoaXMudjIuZnJvbUFycmF5KHQudjIpLHRoaXN9fSxRdWFkcmF0aWNCZXppZXJDdXJ2ZTpHZnQsUXVhZHJhdGljQmV6aWVyQ3VydmUzOllmdCxTcGxpbmVDdXJ2ZTpxZnR9KTtjb25zdCBYZnQ9ZnVuY3Rpb24odCxlLG49Mil7Y29uc3Qgbz1lJiZlLmxlbmd0aCxpPW8/ZVswXSpuOnQubGVuZ3RoO2xldCBhPUtmdCh0LDAsaSxuLCEwKTtjb25zdCByPVtdO2lmKCFhfHxhLm5leHQ9PT1hLnByZXYpcmV0dXJuIHI7bGV0IHMsbCxjLGQscCxtLGY7aWYobyYmKGE9KGZ1bmN0aW9uIHUodCxlLG4sbyl7Y29uc3QgaT1bXTtsZXQgYSxyLHMsbCxjO2ZvcihhPTAscj1lLmxlbmd0aDthPHI7YSsrKXM9ZVthXSpvLGw9YTxyLTE/ZVthKzFdKm86dC5sZW5ndGgsYz1LZnQodCxzLGwsbywhMSksYz09PWMubmV4dCYmKGMuc3RlaW5lcj0hMCksaS5wdXNoKHN1dChjKSk7Zm9yKGkuc29ydChvdXQpLGE9MDthPGkubGVuZ3RoO2ErKylpdXQoaVthXSxuKSxuPUpmdChuLG4ubmV4dCk7cmV0dXJuIG59KSh0LGUsYSxuKSksdC5sZW5ndGg+ODAqbil7cz1jPXRbMF0sbD1kPXRbMV07Zm9yKGxldCBlPW47ZTxpO2UrPW4pcD10W2VdLG09dFtlKzFdLHA8cyYmKHM9cCksbTxsJiYobD1tKSxwPmMmJihjPXApLG0+ZCYmKGQ9bSk7Zj1NYXRoLm1heChjLXMsZC1sKSxmPTAhPT1mPzEvZjowfXJldHVybiBRZnQoYSxyLG4scyxsLGYpLHJ9O2Z1bmN0aW9uIEtmdCh0LGUsbixvLGkpe2xldCBhLHI7aWYoaT09PShmdW5jdGlvbiBzKHQsZSxuLG8pe2xldCBpPTA7Zm9yKGxldCBhPWUscj1uLW87YTxuO2ErPW8paSs9KHRbcl0tdFthXSkqKHRbYSsxXSt0W3IrMV0pLHI9YTtyZXR1cm4gaX0pKHQsZSxuLG8pPjApZm9yKGE9ZTthPG47YSs9bylyPWJ1dChhLHRbYV0sdFthKzFdLHIpO2Vsc2UgZm9yKGE9bi1vO2E+PWU7YS09bylyPWJ1dChhLHRbYV0sdFthKzFdLHIpO3JldHVybiByJiZwdXQocixyLm5leHQpJiYoeXV0KHIpLHI9ci5uZXh0KSxyfWZ1bmN0aW9uIEpmdCh0LGUpe2lmKCF0KXJldHVybiB0O2V8fChlPXQpO2xldCBuLG89dDtkb3tpZihuPSExLG8uc3RlaW5lcnx8IXB1dChvLG8ubmV4dCkmJjAhPT1kdXQoby5wcmV2LG8sby5uZXh0KSlvPW8ubmV4dDtlbHNle2lmKHl1dChvKSxvPWU9by5wcmV2LG89PT1vLm5leHQpYnJlYWs7bj0hMH19d2hpbGUobnx8byE9PWUpO3JldHVybiBlfWZ1bmN0aW9uIFFmdCh0LGUsbixvLGksYSxyKXtpZighdClyZXR1cm47IXImJmEmJihmdW5jdGlvbiBzKHQsZSxuLG8pe2xldCBpPXQ7ZG97bnVsbD09PWkueiYmKGkuej1ydXQoaS54LGkueSxlLG4sbykpLGkucHJldlo9aS5wcmV2LGkubmV4dFo9aS5uZXh0LGk9aS5uZXh0fXdoaWxlKGkhPT10KTtpLnByZXZaLm5leHRaPW51bGwsaS5wcmV2Wj1udWxsLChmdW5jdGlvbiBhKHQpe2xldCBlLG4sbyxpLGEscixzLGwsYz0xO2Rve2ZvcihuPXQsdD1udWxsLGE9bnVsbCxyPTA7bjspe2ZvcihyKyssbz1uLHM9MCxlPTA7ZTxjJiYocysrLG89by5uZXh0WixvKTtlKyspO2ZvcihsPWM7cz4wfHxsPjAmJm87KTAhPT1zJiYoMD09PWx8fCFvfHxuLno8PW8ueik/KGk9bixuPW4ubmV4dFoscy0tKTooaT1vLG89by5uZXh0WixsLS0pLGE/YS5uZXh0Wj1pOnQ9aSxpLnByZXZaPWEsYT1pO249b31hLm5leHRaPW51bGwsYyo9Mn13aGlsZShyPjEpO3JldHVybiB0fSkoaSl9KSh0LG8saSxhKTtsZXQgbCxjLGQ9dDtmb3IoO3QucHJldiE9PXQubmV4dDspaWYobD10LnByZXYsYz10Lm5leHQsYT90dXQodCxvLGksYSk6JGZ0KHQpKWUucHVzaChsLmkvbiksZS5wdXNoKHQuaS9uKSxlLnB1c2goYy5pL24pLHl1dCh0KSx0PWMubmV4dCxkPWMubmV4dDtlbHNlIGlmKCh0PWMpPT09ZCl7cj8xPT09cj9RZnQodD1ldXQoSmZ0KHQpLGUsbiksZSxuLG8saSxhLDIpOjI9PT1yJiZudXQodCxlLG4sbyxpLGEpOlFmdChKZnQodCksZSxuLG8saSxhLDEpO2JyZWFrfX1mdW5jdGlvbiAkZnQodCl7Y29uc3QgZT10LnByZXYsbj10LG89dC5uZXh0O2lmKGR1dChlLG4sbyk+PTApcmV0dXJuITE7bGV0IGk9dC5uZXh0Lm5leHQ7Zm9yKDtpIT09dC5wcmV2Oyl7aWYobHV0KGUueCxlLnksbi54LG4ueSxvLngsby55LGkueCxpLnkpJiZkdXQoaS5wcmV2LGksaS5uZXh0KT49MClyZXR1cm4hMTtpPWkubmV4dH1yZXR1cm4hMH1mdW5jdGlvbiB0dXQodCxlLG4sbyl7Y29uc3QgaT10LnByZXYsYT10LHI9dC5uZXh0O2lmKGR1dChpLGEscik+PTApcmV0dXJuITE7Y29uc3Qgcz1pLng+YS54P2kueD5yLng/aS54OnIueDphLng+ci54P2EueDpyLngsbD1pLnk+YS55P2kueT5yLnk/aS55OnIueTphLnk+ci55P2EueTpyLnksYz1ydXQoaS54PGEueD9pLng8ci54P2kueDpyLng6YS54PHIueD9hLng6ci54LGkueTxhLnk/aS55PHIueT9pLnk6ci55OmEueTxyLnk/YS55OnIueSxlLG4sbyksZD1ydXQocyxsLGUsbixvKTtsZXQgcD10LnByZXZaLG09dC5uZXh0Wjtmb3IoO3AmJnAuej49YyYmbSYmbS56PD1kOyl7aWYocCE9PXQucHJldiYmcCE9PXQubmV4dCYmbHV0KGkueCxpLnksYS54LGEueSxyLngsci55LHAueCxwLnkpJiZkdXQocC5wcmV2LHAscC5uZXh0KT49MClyZXR1cm4hMTtpZihwPXAucHJldlosbSE9PXQucHJldiYmbSE9PXQubmV4dCYmbHV0KGkueCxpLnksYS54LGEueSxyLngsci55LG0ueCxtLnkpJiZkdXQobS5wcmV2LG0sbS5uZXh0KT49MClyZXR1cm4hMTttPW0ubmV4dFp9Zm9yKDtwJiZwLno+PWM7KXtpZihwIT09dC5wcmV2JiZwIT09dC5uZXh0JiZsdXQoaS54LGkueSxhLngsYS55LHIueCxyLnkscC54LHAueSkmJmR1dChwLnByZXYscCxwLm5leHQpPj0wKXJldHVybiExO3A9cC5wcmV2Wn1mb3IoO20mJm0uejw9ZDspe2lmKG0hPT10LnByZXYmJm0hPT10Lm5leHQmJmx1dChpLngsaS55LGEueCxhLnksci54LHIueSxtLngsbS55KSYmZHV0KG0ucHJldixtLG0ubmV4dCk+PTApcmV0dXJuITE7bT1tLm5leHRafXJldHVybiEwfWZ1bmN0aW9uIGV1dCh0LGUsbil7bGV0IG89dDtkb3tjb25zdCBpPW8ucHJldixhPW8ubmV4dC5uZXh0OyFwdXQoaSxhKSYmbXV0KGksbyxvLm5leHQsYSkmJmd1dChpLGEpJiZndXQoYSxpKSYmKGUucHVzaChpLmkvbiksZS5wdXNoKG8uaS9uKSxlLnB1c2goYS5pL24pLHl1dChvKSx5dXQoby5uZXh0KSxvPXQ9YSksbz1vLm5leHR9d2hpbGUobyE9PXQpO3JldHVybiBKZnQobyl9ZnVuY3Rpb24gbnV0KHQsZSxuLG8saSxhKXtsZXQgcj10O2Rve2xldCB0PXIubmV4dC5uZXh0O2Zvcig7dCE9PXIucHJldjspe2lmKHIuaSE9PXQuaSYmY3V0KHIsdCkpe2xldCBzPWh1dChyLHQpO3JldHVybiByPUpmdChyLHIubmV4dCkscz1KZnQocyxzLm5leHQpLFFmdChyLGUsbixvLGksYSksdm9pZCBRZnQocyxlLG4sbyxpLGEpfXQ9dC5uZXh0fXI9ci5uZXh0fXdoaWxlKHIhPT10KX1mdW5jdGlvbiBvdXQodCxlKXtyZXR1cm4gdC54LWUueH1mdW5jdGlvbiBpdXQodCxlKXtpZihlPShmdW5jdGlvbiBuKHQsZSl7bGV0IG49ZTtjb25zdCBvPXQueCxpPXQueTtsZXQgYSxyPS0xLzA7ZG97aWYoaTw9bi55JiZpPj1uLm5leHQueSYmbi5uZXh0LnkhPT1uLnkpe2NvbnN0IHQ9bi54KyhpLW4ueSkqKG4ubmV4dC54LW4ueCkvKG4ubmV4dC55LW4ueSk7aWYodDw9byYmdD5yKXtpZihyPXQsdD09PW8pe2lmKGk9PT1uLnkpcmV0dXJuIG47aWYoaT09PW4ubmV4dC55KXJldHVybiBuLm5leHR9YT1uLng8bi5uZXh0Lng/bjpuLm5leHR9fW49bi5uZXh0fXdoaWxlKG4hPT1lKTtpZighYSlyZXR1cm4gbnVsbDtpZihvPT09cilyZXR1cm4gYTtjb25zdCBzPWEsbD1hLngsYz1hLnk7bGV0IGQscD0xLzA7bj1hO2Rve28+PW4ueCYmbi54Pj1sJiZvIT09bi54JiZsdXQoaTxjP286cixpLGwsYyxpPGM/cjpvLGksbi54LG4ueSkmJihkPU1hdGguYWJzKGktbi55KS8oby1uLngpLGd1dChuLHQpJiYoZDxwfHxkPT09cCYmKG4ueD5hLnh8fG4ueD09PWEueCYmYXV0KGEsbikpKSYmKGE9bixwPWQpKSxuPW4ubmV4dH13aGlsZShuIT09cyk7cmV0dXJuIGF9KSh0LGUpKXtjb25zdCBuPWh1dChlLHQpO0pmdChlLGUubmV4dCksSmZ0KG4sbi5uZXh0KX19ZnVuY3Rpb24gYXV0KHQsZSl7cmV0dXJuIGR1dCh0LnByZXYsdCxlLnByZXYpPDAmJmR1dChlLm5leHQsdCx0Lm5leHQpPDB9ZnVuY3Rpb24gcnV0KHQsZSxuLG8saSl7cmV0dXJuKHQ9MTQzMTY1NTc2NSYoKHQ9ODU4OTkzNDU5JigodD0yNTI2NDUxMzUmKCh0PTE2NzExOTM1JigodD0zMjc2NyoodC1uKSppKXx0PDw4KSl8dDw8NCkpfHQ8PDIpKXx0PDwxKSl8KGU9MTQzMTY1NTc2NSYoKGU9ODU4OTkzNDU5JigoZT0yNTI2NDUxMzUmKChlPTE2NzExOTM1JigoZT0zMjc2NyooZS1vKSppKXxlPDw4KSl8ZTw8NCkpfGU8PDIpKXxlPDwxKSk8PDF9ZnVuY3Rpb24gc3V0KHQpe2xldCBlPXQsbj10O2RveyhlLng8bi54fHxlLng9PT1uLngmJmUueTxuLnkpJiYobj1lKSxlPWUubmV4dH13aGlsZShlIT09dCk7cmV0dXJuIG59ZnVuY3Rpb24gbHV0KHQsZSxuLG8saSxhLHIscyl7cmV0dXJuKGktcikqKGUtcyktKHQtcikqKGEtcyk+PTAmJih0LXIpKihvLXMpLShuLXIpKihlLXMpPj0wJiYobi1yKSooYS1zKS0oaS1yKSooby1zKT49MH1mdW5jdGlvbiBjdXQodCxlKXtyZXR1cm4gdC5uZXh0LmkhPT1lLmkmJnQucHJldi5pIT09ZS5pJiYhKGZ1bmN0aW9uIG4odCxlKXtsZXQgbj10O2Rve2lmKG4uaSE9PXQuaSYmbi5uZXh0LmkhPT10LmkmJm4uaSE9PWUuaSYmbi5uZXh0LmkhPT1lLmkmJm11dChuLG4ubmV4dCx0LGUpKXJldHVybiEwO249bi5uZXh0fXdoaWxlKG4hPT10KTtyZXR1cm4hMX0pKHQsZSkmJihndXQodCxlKSYmZ3V0KGUsdCkmJihmdW5jdGlvbiBvKHQsZSl7bGV0IG49dCxvPSExO2NvbnN0IGk9KHQueCtlLngpLzIsYT0odC55K2UueSkvMjtkb3tuLnk+YSE9bi5uZXh0Lnk+YSYmbi5uZXh0LnkhPT1uLnkmJmk8KG4ubmV4dC54LW4ueCkqKGEtbi55KS8obi5uZXh0Lnktbi55KStuLngmJihvPSFvKSxuPW4ubmV4dH13aGlsZShuIT09dCk7cmV0dXJuIG99KSh0LGUpJiYoZHV0KHQucHJldix0LGUucHJldil8fGR1dCh0LGUucHJldixlKSl8fHB1dCh0LGUpJiZkdXQodC5wcmV2LHQsdC5uZXh0KT4wJiZkdXQoZS5wcmV2LGUsZS5uZXh0KT4wKX1mdW5jdGlvbiBkdXQodCxlLG4pe3JldHVybihlLnktdC55KSoobi54LWUueCktKGUueC10LngpKihuLnktZS55KX1mdW5jdGlvbiBwdXQodCxlKXtyZXR1cm4gdC54PT09ZS54JiZ0Lnk9PT1lLnl9ZnVuY3Rpb24gbXV0KHQsZSxuLG8pe2NvbnN0IGk9dXV0KGR1dCh0LGUsbikpLGE9dXV0KGR1dCh0LGUsbykpLHI9dXV0KGR1dChuLG8sdCkpLHM9dXV0KGR1dChuLG8sZSkpO3JldHVybiBpIT09YSYmciE9PXN8fCghKDAhPT1pfHwhZnV0KHQsbixlKSl8fCghKDAhPT1hfHwhZnV0KHQsbyxlKSl8fCghKDAhPT1yfHwhZnV0KG4sdCxvKSl8fCEoMCE9PXN8fCFmdXQobixlLG8pKSkpKX1mdW5jdGlvbiBmdXQodCxlLG4pe3JldHVybiBlLng8PU1hdGgubWF4KHQueCxuLngpJiZlLng+PU1hdGgubWluKHQueCxuLngpJiZlLnk8PU1hdGgubWF4KHQueSxuLnkpJiZlLnk+PU1hdGgubWluKHQueSxuLnkpfWZ1bmN0aW9uIHV1dCh0KXtyZXR1cm4gdD4wPzE6dDwwPy0xOjB9ZnVuY3Rpb24gZ3V0KHQsZSl7cmV0dXJuIGR1dCh0LnByZXYsdCx0Lm5leHQpPDA/ZHV0KHQsZSx0Lm5leHQpPj0wJiZkdXQodCx0LnByZXYsZSk+PTA6ZHV0KHQsZSx0LnByZXYpPDB8fGR1dCh0LHQubmV4dCxlKTwwfWZ1bmN0aW9uIGh1dCh0LGUpe2NvbnN0IG49bmV3IF91dCh0LmksdC54LHQueSksbz1uZXcgX3V0KGUuaSxlLngsZS55KSxpPXQubmV4dCxhPWUucHJldjtyZXR1cm4gdC5uZXh0PWUsZS5wcmV2PXQsbi5uZXh0PWksaS5wcmV2PW4sby5uZXh0PW4sbi5wcmV2PW8sYS5uZXh0PW8sby5wcmV2PWEsb31mdW5jdGlvbiBidXQodCxlLG4sbyl7Y29uc3QgaT1uZXcgX3V0KHQsZSxuKTtyZXR1cm4gbz8oaS5uZXh0PW8ubmV4dCxpLnByZXY9byxvLm5leHQucHJldj1pLG8ubmV4dD1pKTooaS5wcmV2PWksaS5uZXh0PWkpLGl9ZnVuY3Rpb24geXV0KHQpe3QubmV4dC5wcmV2PXQucHJldix0LnByZXYubmV4dD10Lm5leHQsdC5wcmV2WiYmKHQucHJldloubmV4dFo9dC5uZXh0WiksdC5uZXh0WiYmKHQubmV4dFoucHJldlo9dC5wcmV2Wil9ZnVuY3Rpb24gX3V0KHQsZSxuKXt0aGlzLmk9dCx0aGlzLng9ZSx0aGlzLnk9bix0aGlzLnByZXY9bnVsbCx0aGlzLm5leHQ9bnVsbCx0aGlzLno9bnVsbCx0aGlzLnByZXZaPW51bGwsdGhpcy5uZXh0Wj1udWxsLHRoaXMuc3RlaW5lcj0hMX1jbGFzcyBDdXR7c3RhdGljIGFyZWEodCl7Y29uc3QgZT10Lmxlbmd0aDtsZXQgbj0wO2ZvcihsZXQgbz1lLTEsaT0wO2k8ZTtvPWkrKyluKz10W29dLngqdFtpXS55LXRbaV0ueCp0W29dLnk7cmV0dXJuLjUqbn1zdGF0aWMgaXNDbG9ja1dpc2UodCl7cmV0dXJuIEN1dC5hcmVhKHQpPDB9c3RhdGljIHRyaWFuZ3VsYXRlU2hhcGUodCxlKXtjb25zdCBuPVtdLG89W10saT1bXTtNdXQodCksdnV0KG4sdCk7bGV0IGE9dC5sZW5ndGg7ZS5mb3JFYWNoKE11dCk7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0Kyspby5wdXNoKGEpLGErPWVbdF0ubGVuZ3RoLHZ1dChuLGVbdF0pO2NvbnN0IHI9WGZ0KG4sbyk7Zm9yKGxldCB0PTA7dDxyLmxlbmd0aDt0Kz0zKWkucHVzaChyLnNsaWNlKHQsdCszKSk7cmV0dXJuIGl9fWZ1bmN0aW9uIE11dCh0KXtjb25zdCBlPXQubGVuZ3RoO2U+MiYmdFtlLTFdLmVxdWFscyh0WzBdKSYmdC5wb3AoKX1mdW5jdGlvbiB2dXQodCxlKXtmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rKyl0LnB1c2goZVtuXS54KSx0LnB1c2goZVtuXS55KX1jbGFzcyB4dXQgZXh0ZW5kcyBkY3R7Y29uc3RydWN0b3IodCxlKXtzdXBlcigpLHRoaXMudHlwZT0iRXh0cnVkZUdlb21ldHJ5Iix0aGlzLnBhcmFtZXRlcnM9e3NoYXBlczp0LG9wdGlvbnM6ZX0sdD1BcnJheS5pc0FycmF5KHQpP3Q6W3RdO2NvbnN0IG49dGhpcyxvPVtdLGk9W107Zm9yKGxldCBlPTAsbj10Lmxlbmd0aDtlPG47ZSsrKXthKHRbZV0pfWZ1bmN0aW9uIGEodCl7Y29uc3QgYT1bXSxyPXZvaWQgMCE9PWUuY3VydmVTZWdtZW50cz9lLmN1cnZlU2VnbWVudHM6MTIscz12b2lkIDAhPT1lLnN0ZXBzP2Uuc3RlcHM6MTtsZXQgbD12b2lkIDAhPT1lLmRlcHRoP2UuZGVwdGg6MTAwLGM9dm9pZCAwPT09ZS5iZXZlbEVuYWJsZWR8fGUuYmV2ZWxFbmFibGVkLGQ9dm9pZCAwIT09ZS5iZXZlbFRoaWNrbmVzcz9lLmJldmVsVGhpY2tuZXNzOjYscD12b2lkIDAhPT1lLmJldmVsU2l6ZT9lLmJldmVsU2l6ZTpkLTIsbT12b2lkIDAhPT1lLmJldmVsT2Zmc2V0P2UuYmV2ZWxPZmZzZXQ6MCxmPXZvaWQgMCE9PWUuYmV2ZWxTZWdtZW50cz9lLmJldmVsU2VnbWVudHM6Mztjb25zdCB1PWUuZXh0cnVkZVBhdGgsZz12b2lkIDAhPT1lLlVWR2VuZXJhdG9yP2UuVVZHZW5lcmF0b3I6T3V0O3ZvaWQgMCE9PWUuYW1vdW50JiYoY29uc29sZS53YXJuKCJUSFJFRS5FeHRydWRlQnVmZmVyR2VvbWV0cnk6IGFtb3VudCBoYXMgYmVlbiByZW5hbWVkIHRvIGRlcHRoLiIpLGw9ZS5hbW91bnQpO2xldCBoLGIseSxfLEMsTT0hMTt1JiYoaD11LmdldFNwYWNlZFBvaW50cyhzKSxNPSEwLGM9ITEsYj11LmNvbXB1dGVGcmVuZXRGcmFtZXMocywhMSkseT1uZXcgd3N0LF89bmV3IHdzdCxDPW5ldyB3c3QpLGN8fChmPTAsZD0wLHA9MCxtPTApO2NvbnN0IHY9dC5leHRyYWN0UG9pbnRzKHIpO2xldCB4PXYuc2hhcGU7Y29uc3QgTz12LmhvbGVzO2lmKCFDdXQuaXNDbG9ja1dpc2UoeCkpe3g9eC5yZXZlcnNlKCk7Zm9yKGxldCB0PTAsZT1PLmxlbmd0aDt0PGU7dCsrKXtjb25zdCBlPU9bdF07Q3V0LmlzQ2xvY2tXaXNlKGUpJiYoT1t0XT1lLnJldmVyc2UoKSl9fWNvbnN0IFA9Q3V0LnRyaWFuZ3VsYXRlU2hhcGUoeCxPKSx3PXg7Zm9yKGxldCB0PTAsZT1PLmxlbmd0aDt0PGU7dCsrKXt4PXguY29uY2F0KE9bdF0pfWZ1bmN0aW9uIGsodCxlLG4pe3JldHVybiBlfHxjb25zb2xlLmVycm9yKCJUSFJFRS5FeHRydWRlR2VvbWV0cnk6IHZlYyBkb2VzIG5vdCBleGlzdCIpLGUuY2xvbmUoKS5tdWx0aXBseVNjYWxhcihuKS5hZGQodCl9Y29uc3QgUz14Lmxlbmd0aCxEPVAubGVuZ3RoO2Z1bmN0aW9uIFIodCxlLG4pe2xldCBvLGksYTtjb25zdCByPXQueC1lLngscz10LnktZS55LGw9bi54LXQueCxjPW4ueS10LnksZD1yKnIrcypzO2lmKE1hdGguYWJzKHIqYy1zKmwpPk51bWJlci5FUFNJTE9OKXtjb25zdCBwPU1hdGguc3FydChkKSxtPU1hdGguc3FydChsKmwrYypjKSxmPWUueC1zL3AsdT1lLnkrci9wLGc9KChuLngtYy9tLWYpKmMtKG4ueStsL20tdSkqbCkvKHIqYy1zKmwpO289ZityKmctdC54LGk9dStzKmctdC55O2NvbnN0IGg9bypvK2kqaTtpZihoPD0yKXJldHVybiBuZXcgZ3N0KG8saSk7YT1NYXRoLnNxcnQoaC8yKX1lbHNle2xldCB0PSExO3I+TnVtYmVyLkVQU0lMT04/bD5OdW1iZXIuRVBTSUxPTiYmKHQ9ITApOnI8LU51bWJlci5FUFNJTE9OP2w8LU51bWJlci5FUFNJTE9OJiYodD0hMCk6TWF0aC5zaWduKHMpPT09TWF0aC5zaWduKGMpJiYodD0hMCksdD8obz0tcyxpPXIsYT1NYXRoLnNxcnQoZCkpOihvPXIsaT1zLGE9TWF0aC5zcXJ0KGQvMikpfXJldHVybiBuZXcgZ3N0KG8vYSxpL2EpfWNvbnN0IEU9W107Zm9yKGxldCB0PTAsZT13Lmxlbmd0aCxuPWUtMSxvPXQrMTt0PGU7dCsrLG4rKyxvKyspbj09PWUmJihuPTApLG89PT1lJiYobz0wKSxFW3RdPVIod1t0XSx3W25dLHdbb10pO2NvbnN0IEE9W107bGV0IFQsTj1FLmNvbmNhdCgpO2ZvcihsZXQgdD0wLGU9Ty5sZW5ndGg7dDxlO3QrKyl7Y29uc3QgZT1PW3RdO1Q9W107Zm9yKGxldCB0PTAsbj1lLmxlbmd0aCxvPW4tMSxpPXQrMTt0PG47dCsrLG8rKyxpKyspbz09PW4mJihvPTApLGk9PT1uJiYoaT0wKSxUW3RdPVIoZVt0XSxlW29dLGVbaV0pO0EucHVzaChUKSxOPU4uY29uY2F0KFQpfWZvcihsZXQgdD0wO3Q8Zjt0Kyspe2NvbnN0IGU9dC9mLG49ZCpNYXRoLmNvcyhlKk1hdGguUEkvMiksbz1wKk1hdGguc2luKGUqTWF0aC5QSS8yKSttO2ZvcihsZXQgdD0wLGU9dy5sZW5ndGg7dDxlO3QrKyl7Y29uc3QgZT1rKHdbdF0sRVt0XSxvKTtIKGUueCxlLnksLW4pfWZvcihsZXQgdD0wLGU9Ty5sZW5ndGg7dDxlO3QrKyl7Y29uc3QgZT1PW3RdO1Q9QVt0XTtmb3IobGV0IHQ9MCxpPWUubGVuZ3RoO3Q8aTt0Kyspe2NvbnN0IGk9ayhlW3RdLFRbdF0sbyk7SChpLngsaS55LC1uKX19fWNvbnN0IHo9cCttO2ZvcihsZXQgdD0wO3Q8Uzt0Kyspe2NvbnN0IGU9Yz9rKHhbdF0sTlt0XSx6KTp4W3RdO00/KF8uY29weShiLm5vcm1hbHNbMF0pLm11bHRpcGx5U2NhbGFyKGUueCkseS5jb3B5KGIuYmlub3JtYWxzWzBdKS5tdWx0aXBseVNjYWxhcihlLnkpLEMuY29weShoWzBdKS5hZGQoXykuYWRkKHkpLEgoQy54LEMueSxDLnopKTpIKGUueCxlLnksMCl9Zm9yKGxldCB0PTE7dDw9czt0KyspZm9yKGxldCBlPTA7ZTxTO2UrKyl7Y29uc3Qgbj1jP2soeFtlXSxOW2VdLHopOnhbZV07TT8oXy5jb3B5KGIubm9ybWFsc1t0XSkubXVsdGlwbHlTY2FsYXIobi54KSx5LmNvcHkoYi5iaW5vcm1hbHNbdF0pLm11bHRpcGx5U2NhbGFyKG4ueSksQy5jb3B5KGhbdF0pLmFkZChfKS5hZGQoeSksSChDLngsQy55LEMueikpOkgobi54LG4ueSxsL3MqdCl9Zm9yKGxldCB0PWYtMTt0Pj0wO3QtLSl7Y29uc3QgZT10L2Ysbj1kKk1hdGguY29zKGUqTWF0aC5QSS8yKSxvPXAqTWF0aC5zaW4oZSpNYXRoLlBJLzIpK207Zm9yKGxldCB0PTAsZT13Lmxlbmd0aDt0PGU7dCsrKXtjb25zdCBlPWsod1t0XSxFW3RdLG8pO0goZS54LGUueSxsK24pfWZvcihsZXQgdD0wLGU9Ty5sZW5ndGg7dDxlO3QrKyl7Y29uc3QgZT1PW3RdO1Q9QVt0XTtmb3IobGV0IHQ9MCxpPWUubGVuZ3RoO3Q8aTt0Kyspe2NvbnN0IGk9ayhlW3RdLFRbdF0sbyk7TT9IKGkueCxpLnkraFtzLTFdLnksaFtzLTFdLngrbik6SChpLngsaS55LGwrbil9fX1mdW5jdGlvbiBJKHQsZSl7bGV0IG49dC5sZW5ndGg7Zm9yKDstLW4+PTA7KXtjb25zdCBvPW47bGV0IGk9bi0xO2k8MCYmKGk9dC5sZW5ndGgtMSk7Zm9yKGxldCB0PTAsbj1zKzIqZjt0PG47dCsrKXtjb25zdCBuPVMqdCxhPVMqKHQrMSk7TChlK28rbixlK2krbixlK2krYSxlK28rYSl9fX1mdW5jdGlvbiBIKHQsZSxuKXthLnB1c2godCksYS5wdXNoKGUpLGEucHVzaChuKX1mdW5jdGlvbiBGKHQsZSxpKXtCKHQpLEIoZSksQihpKTtjb25zdCBhPW8ubGVuZ3RoLzMscj1nLmdlbmVyYXRlVG9wVVYobixvLGEtMyxhLTIsYS0xKTtWKHJbMF0pLFYoclsxXSksVihyWzJdKX1mdW5jdGlvbiBMKHQsZSxpLGEpe0IodCksQihlKSxCKGEpLEIoZSksQihpKSxCKGEpO2NvbnN0IHI9by5sZW5ndGgvMyxzPWcuZ2VuZXJhdGVTaWRlV2FsbFVWKG4sbyxyLTYsci0zLHItMixyLTEpO1Yoc1swXSksVihzWzFdKSxWKHNbM10pLFYoc1sxXSksVihzWzJdKSxWKHNbM10pfWZ1bmN0aW9uIEIodCl7by5wdXNoKGFbMyp0KzBdKSxvLnB1c2goYVszKnQrMV0pLG8ucHVzaChhWzMqdCsyXSl9ZnVuY3Rpb24gVih0KXtpLnB1c2godC54KSxpLnB1c2godC55KX0hKGZ1bmN0aW9uIGooKXtjb25zdCB0PW8ubGVuZ3RoLzM7aWYoYyl7bGV0IHQ9MCxlPVMqdDtmb3IobGV0IHQ9MDt0PEQ7dCsrKXtjb25zdCBuPVBbdF07RihuWzJdK2UsblsxXStlLG5bMF0rZSl9dD1zKzIqZixlPVMqdDtmb3IobGV0IHQ9MDt0PEQ7dCsrKXtjb25zdCBuPVBbdF07RihuWzBdK2UsblsxXStlLG5bMl0rZSl9fWVsc2V7Zm9yKGxldCB0PTA7dDxEO3QrKyl7Y29uc3QgZT1QW3RdO0YoZVsyXSxlWzFdLGVbMF0pfWZvcihsZXQgdD0wO3Q8RDt0Kyspe2NvbnN0IGU9UFt0XTtGKGVbMF0rUypzLGVbMV0rUypzLGVbMl0rUypzKX19bi5hZGRHcm91cCh0LG8ubGVuZ3RoLzMtdCwwKX0pKCksKGZ1bmN0aW9uIFUoKXtjb25zdCB0PW8ubGVuZ3RoLzM7bGV0IGU9MDtJKHcsZSksZSs9dy5sZW5ndGg7Zm9yKGxldCB0PTAsbj1PLmxlbmd0aDt0PG47dCsrKXtjb25zdCBuPU9bdF07SShuLGUpLGUrPW4ubGVuZ3RofW4uYWRkR3JvdXAodCxvLmxlbmd0aC8zLXQsMSl9KSgpfXRoaXMuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IGVjdChvLDMpKSx0aGlzLnNldEF0dHJpYnV0ZSgidXYiLG5ldyBlY3QoaSwyKSksdGhpcy5jb21wdXRlVmVydGV4Tm9ybWFscygpfXRvSlNPTigpe2NvbnN0IHQ9c3VwZXIudG9KU09OKCk7cmV0dXJuKGZ1bmN0aW9uIGUodCxuLG8pe2lmKG8uc2hhcGVzPVtdLEFycmF5LmlzQXJyYXkodCkpZm9yKGxldCBlPTAsbj10Lmxlbmd0aDtlPG47ZSsrKXtvLnNoYXBlcy5wdXNoKHRbZV0udXVpZCl9ZWxzZSBvLnNoYXBlcy5wdXNoKHQudXVpZCk7dm9pZCAwIT09bi5leHRydWRlUGF0aCYmKG8ub3B0aW9ucy5leHRydWRlUGF0aD1uLmV4dHJ1ZGVQYXRoLnRvSlNPTigpKTtyZXR1cm4gb30pKHRoaXMucGFyYW1ldGVycy5zaGFwZXMsdGhpcy5wYXJhbWV0ZXJzLm9wdGlvbnMsdCl9c3RhdGljIGZyb21KU09OKHQsZSl7Y29uc3Qgbj1bXTtmb3IobGV0IG89MCxpPXQuc2hhcGVzLmxlbmd0aDtvPGk7bysrKXtuLnB1c2goZVt0LnNoYXBlc1tvXV0pfWNvbnN0IG89dC5vcHRpb25zLmV4dHJ1ZGVQYXRoO3JldHVybiB2b2lkIDAhPT1vJiYodC5vcHRpb25zLmV4dHJ1ZGVQYXRoPShuZXcgWmZ0W28udHlwZV0pLmZyb21KU09OKG8pKSxuZXcgeHV0KG4sdC5vcHRpb25zKX19Y29uc3QgT3V0PXtnZW5lcmF0ZVRvcFVWOmZ1bmN0aW9uKHQsZSxuLG8saSl7Y29uc3QgYT1lWzMqb10scj1lWzMqbysxXSxzPWVbMyppXSxsPWVbMyppKzFdO3JldHVybltuZXcgZ3N0KGVbMypuXSxlWzMqbisxXSksbmV3IGdzdChhLHIpLG5ldyBnc3QocyxsKV19LGdlbmVyYXRlU2lkZVdhbGxVVjpmdW5jdGlvbih0LGUsbixvLGksYSl7Y29uc3Qgcj1lWzMqbl0scz1lWzMqbisxXSxsPWVbMypuKzJdLGM9ZVszKm9dLGQ9ZVszKm8rMV0scD1lWzMqbysyXSxtPWVbMyppXSxmPWVbMyppKzFdLHU9ZVszKmkrMl0sZz1lWzMqYV0saD1lWzMqYSsxXSxiPWVbMyphKzJdO3JldHVybiBNYXRoLmFicyhzLWQpPE1hdGguYWJzKHItYyk/W25ldyBnc3QociwxLWwpLG5ldyBnc3QoYywxLXApLG5ldyBnc3QobSwxLXUpLG5ldyBnc3QoZywxLWIpXTpbbmV3IGdzdChzLDEtbCksbmV3IGdzdChkLDEtcCksbmV3IGdzdChmLDEtdSksbmV3IGdzdChoLDEtYildfX07Y2xhc3MgUHV0IGV4dGVuZHMgZGN0e2NvbnN0cnVjdG9yKHQsZT0xMil7c3VwZXIoKSx0aGlzLnR5cGU9IlNoYXBlR2VvbWV0cnkiLHRoaXMucGFyYW1ldGVycz17c2hhcGVzOnQsY3VydmVTZWdtZW50czplfTtjb25zdCBuPVtdLG89W10saT1bXSxhPVtdO2xldCByPTAscz0wO2lmKCExPT09QXJyYXkuaXNBcnJheSh0KSlsKHQpO2Vsc2UgZm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspbCh0W2VdKSx0aGlzLmFkZEdyb3VwKHIscyxlKSxyKz1zLHM9MDtmdW5jdGlvbiBsKHQpe2NvbnN0IHI9by5sZW5ndGgvMyxsPXQuZXh0cmFjdFBvaW50cyhlKTtsZXQgYz1sLnNoYXBlO2NvbnN0IGQ9bC5ob2xlczshMT09PUN1dC5pc0Nsb2NrV2lzZShjKSYmKGM9Yy5yZXZlcnNlKCkpO2ZvcihsZXQgdD0wLGU9ZC5sZW5ndGg7dDxlO3QrKyl7Y29uc3QgZT1kW3RdOyEwPT09Q3V0LmlzQ2xvY2tXaXNlKGUpJiYoZFt0XT1lLnJldmVyc2UoKSl9Y29uc3QgcD1DdXQudHJpYW5ndWxhdGVTaGFwZShjLGQpO2ZvcihsZXQgdD0wLGU9ZC5sZW5ndGg7dDxlO3QrKyl7Yz1jLmNvbmNhdChkW3RdKX1mb3IobGV0IHQ9MCxlPWMubGVuZ3RoO3Q8ZTt0Kyspe2NvbnN0IGU9Y1t0XTtvLnB1c2goZS54LGUueSwwKSxpLnB1c2goMCwwLDEpLGEucHVzaChlLngsZS55KX1mb3IobGV0IHQ9MCxlPXAubGVuZ3RoO3Q8ZTt0Kyspe2NvbnN0IGU9cFt0XTtuLnB1c2goZVswXStyLGVbMV0rcixlWzJdK3IpLHMrPTN9fXRoaXMuc2V0SW5kZXgobiksdGhpcy5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgZWN0KG8sMykpLHRoaXMuc2V0QXR0cmlidXRlKCJub3JtYWwiLG5ldyBlY3QoaSwzKSksdGhpcy5zZXRBdHRyaWJ1dGUoInV2IixuZXcgZWN0KGEsMikpfXRvSlNPTigpe2NvbnN0IHQ9c3VwZXIudG9KU09OKCk7cmV0dXJuKGZ1bmN0aW9uIGUodCxuKXtpZihuLnNoYXBlcz1bXSxBcnJheS5pc0FycmF5KHQpKWZvcihsZXQgZT0wLG89dC5sZW5ndGg7ZTxvO2UrKyl7bi5zaGFwZXMucHVzaCh0W2VdLnV1aWQpfWVsc2Ugbi5zaGFwZXMucHVzaCh0LnV1aWQpO3JldHVybiBufSkodGhpcy5wYXJhbWV0ZXJzLnNoYXBlcyx0KX1zdGF0aWMgZnJvbUpTT04odCxlKXtjb25zdCBuPVtdO2ZvcihsZXQgbz0wLGk9dC5zaGFwZXMubGVuZ3RoO288aTtvKyspe24ucHVzaChlW3Quc2hhcGVzW29dXSl9cmV0dXJuIG5ldyBQdXQobix0LmN1cnZlU2VnbWVudHMpfX0oY2xhc3MgZXh0ZW5kcyBWbHR7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLnR5cGU9IlNoYWRvd01hdGVyaWFsIix0aGlzLmNvbG9yPW5ldyBabHQoMCksdGhpcy50cmFuc3BhcmVudD0hMCx0aGlzLnNldFZhbHVlcyh0KX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMuY29sb3IuY29weSh0LmNvbG9yKSx0aGlzfX0pLnByb3RvdHlwZS5pc1NoYWRvd01hdGVyaWFsPSEwO2NsYXNzIHd1dCBleHRlbmRzIFZsdHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMuZGVmaW5lcz17U1RBTkRBUkQ6IiJ9LHRoaXMudHlwZT0iTWVzaFN0YW5kYXJkTWF0ZXJpYWwiLHRoaXMuY29sb3I9bmV3IFpsdCgxNjc3NzIxNSksdGhpcy5yb3VnaG5lc3M9MSx0aGlzLm1ldGFsbmVzcz0wLHRoaXMubWFwPW51bGwsdGhpcy5saWdodE1hcD1udWxsLHRoaXMubGlnaHRNYXBJbnRlbnNpdHk9MSx0aGlzLmFvTWFwPW51bGwsdGhpcy5hb01hcEludGVuc2l0eT0xLHRoaXMuZW1pc3NpdmU9bmV3IFpsdCgwKSx0aGlzLmVtaXNzaXZlSW50ZW5zaXR5PTEsdGhpcy5lbWlzc2l2ZU1hcD1udWxsLHRoaXMuYnVtcE1hcD1udWxsLHRoaXMuYnVtcFNjYWxlPTEsdGhpcy5ub3JtYWxNYXA9bnVsbCx0aGlzLm5vcm1hbE1hcFR5cGU9MCx0aGlzLm5vcm1hbFNjYWxlPW5ldyBnc3QoMSwxKSx0aGlzLmRpc3BsYWNlbWVudE1hcD1udWxsLHRoaXMuZGlzcGxhY2VtZW50U2NhbGU9MSx0aGlzLmRpc3BsYWNlbWVudEJpYXM9MCx0aGlzLnJvdWdobmVzc01hcD1udWxsLHRoaXMubWV0YWxuZXNzTWFwPW51bGwsdGhpcy5hbHBoYU1hcD1udWxsLHRoaXMuZW52TWFwPW51bGwsdGhpcy5lbnZNYXBJbnRlbnNpdHk9MSx0aGlzLnJlZnJhY3Rpb25SYXRpbz0uOTgsdGhpcy53aXJlZnJhbWU9ITEsdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9MSx0aGlzLndpcmVmcmFtZUxpbmVjYXA9InJvdW5kIix0aGlzLndpcmVmcmFtZUxpbmVqb2luPSJyb3VuZCIsdGhpcy5mbGF0U2hhZGluZz0hMSx0aGlzLnNldFZhbHVlcyh0KX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMuZGVmaW5lcz17U1RBTkRBUkQ6IiJ9LHRoaXMuY29sb3IuY29weSh0LmNvbG9yKSx0aGlzLnJvdWdobmVzcz10LnJvdWdobmVzcyx0aGlzLm1ldGFsbmVzcz10Lm1ldGFsbmVzcyx0aGlzLm1hcD10Lm1hcCx0aGlzLmxpZ2h0TWFwPXQubGlnaHRNYXAsdGhpcy5saWdodE1hcEludGVuc2l0eT10LmxpZ2h0TWFwSW50ZW5zaXR5LHRoaXMuYW9NYXA9dC5hb01hcCx0aGlzLmFvTWFwSW50ZW5zaXR5PXQuYW9NYXBJbnRlbnNpdHksdGhpcy5lbWlzc2l2ZS5jb3B5KHQuZW1pc3NpdmUpLHRoaXMuZW1pc3NpdmVNYXA9dC5lbWlzc2l2ZU1hcCx0aGlzLmVtaXNzaXZlSW50ZW5zaXR5PXQuZW1pc3NpdmVJbnRlbnNpdHksdGhpcy5idW1wTWFwPXQuYnVtcE1hcCx0aGlzLmJ1bXBTY2FsZT10LmJ1bXBTY2FsZSx0aGlzLm5vcm1hbE1hcD10Lm5vcm1hbE1hcCx0aGlzLm5vcm1hbE1hcFR5cGU9dC5ub3JtYWxNYXBUeXBlLHRoaXMubm9ybWFsU2NhbGUuY29weSh0Lm5vcm1hbFNjYWxlKSx0aGlzLmRpc3BsYWNlbWVudE1hcD10LmRpc3BsYWNlbWVudE1hcCx0aGlzLmRpc3BsYWNlbWVudFNjYWxlPXQuZGlzcGxhY2VtZW50U2NhbGUsdGhpcy5kaXNwbGFjZW1lbnRCaWFzPXQuZGlzcGxhY2VtZW50Qmlhcyx0aGlzLnJvdWdobmVzc01hcD10LnJvdWdobmVzc01hcCx0aGlzLm1ldGFsbmVzc01hcD10Lm1ldGFsbmVzc01hcCx0aGlzLmFscGhhTWFwPXQuYWxwaGFNYXAsdGhpcy5lbnZNYXA9dC5lbnZNYXAsdGhpcy5lbnZNYXBJbnRlbnNpdHk9dC5lbnZNYXBJbnRlbnNpdHksdGhpcy5yZWZyYWN0aW9uUmF0aW89dC5yZWZyYWN0aW9uUmF0aW8sdGhpcy53aXJlZnJhbWU9dC53aXJlZnJhbWUsdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9dC53aXJlZnJhbWVMaW5ld2lkdGgsdGhpcy53aXJlZnJhbWVMaW5lY2FwPXQud2lyZWZyYW1lTGluZWNhcCx0aGlzLndpcmVmcmFtZUxpbmVqb2luPXQud2lyZWZyYW1lTGluZWpvaW4sdGhpcy5mbGF0U2hhZGluZz10LmZsYXRTaGFkaW5nLHRoaXN9fXd1dC5wcm90b3R5cGUuaXNNZXNoU3RhbmRhcmRNYXRlcmlhbD0hMDsoY2xhc3MgZXh0ZW5kcyB3dXR7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLmRlZmluZXM9e1NUQU5EQVJEOiIiLFBIWVNJQ0FMOiIifSx0aGlzLnR5cGU9Ik1lc2hQaHlzaWNhbE1hdGVyaWFsIix0aGlzLmNsZWFyY29hdD0wLHRoaXMuY2xlYXJjb2F0TWFwPW51bGwsdGhpcy5jbGVhcmNvYXRSb3VnaG5lc3M9MCx0aGlzLmNsZWFyY29hdFJvdWdobmVzc01hcD1udWxsLHRoaXMuY2xlYXJjb2F0Tm9ybWFsU2NhbGU9bmV3IGdzdCgxLDEpLHRoaXMuY2xlYXJjb2F0Tm9ybWFsTWFwPW51bGwsdGhpcy5yZWZsZWN0aXZpdHk9LjUsT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsImlvciIse2dldDpmdW5jdGlvbigpe3JldHVybigxKy40KnRoaXMucmVmbGVjdGl2aXR5KS8oMS0uNCp0aGlzLnJlZmxlY3Rpdml0eSl9LHNldDpmdW5jdGlvbih0KXt0aGlzLnJlZmxlY3Rpdml0eT1wc3QoMi41Kih0LTEpLyh0KzEpLDAsMSl9fSksdGhpcy5zaGVlbj1udWxsLHRoaXMudHJhbnNtaXNzaW9uPTAsdGhpcy50cmFuc21pc3Npb25NYXA9bnVsbCx0aGlzLnRoaWNrbmVzcz0uMDEsdGhpcy50aGlja25lc3NNYXA9bnVsbCx0aGlzLmF0dGVudWF0aW9uRGlzdGFuY2U9MCx0aGlzLmF0dGVudWF0aW9uVGludD1uZXcgWmx0KDEsMSwxKSx0aGlzLnNwZWN1bGFySW50ZW5zaXR5PTEsdGhpcy5zcGVjdWxhckludGVuc2l0eU1hcD1udWxsLHRoaXMuc3BlY3VsYXJUaW50PW5ldyBabHQoMSwxLDEpLHRoaXMuc3BlY3VsYXJUaW50TWFwPW51bGwsdGhpcy5zZXRWYWx1ZXModCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmRlZmluZXM9e1NUQU5EQVJEOiIiLFBIWVNJQ0FMOiIifSx0aGlzLmNsZWFyY29hdD10LmNsZWFyY29hdCx0aGlzLmNsZWFyY29hdE1hcD10LmNsZWFyY29hdE1hcCx0aGlzLmNsZWFyY29hdFJvdWdobmVzcz10LmNsZWFyY29hdFJvdWdobmVzcyx0aGlzLmNsZWFyY29hdFJvdWdobmVzc01hcD10LmNsZWFyY29hdFJvdWdobmVzc01hcCx0aGlzLmNsZWFyY29hdE5vcm1hbE1hcD10LmNsZWFyY29hdE5vcm1hbE1hcCx0aGlzLmNsZWFyY29hdE5vcm1hbFNjYWxlLmNvcHkodC5jbGVhcmNvYXROb3JtYWxTY2FsZSksdGhpcy5yZWZsZWN0aXZpdHk9dC5yZWZsZWN0aXZpdHksdGhpcy5zaGVlbj10LnNoZWVuPyh0aGlzLnNoZWVufHxuZXcgWmx0KS5jb3B5KHQuc2hlZW4pOm51bGwsdGhpcy50cmFuc21pc3Npb249dC50cmFuc21pc3Npb24sdGhpcy50cmFuc21pc3Npb25NYXA9dC50cmFuc21pc3Npb25NYXAsdGhpcy50aGlja25lc3M9dC50aGlja25lc3MsdGhpcy50aGlja25lc3NNYXA9dC50aGlja25lc3NNYXAsdGhpcy5hdHRlbnVhdGlvbkRpc3RhbmNlPXQuYXR0ZW51YXRpb25EaXN0YW5jZSx0aGlzLmF0dGVudWF0aW9uVGludC5jb3B5KHQuYXR0ZW51YXRpb25UaW50KSx0aGlzLnNwZWN1bGFySW50ZW5zaXR5PXQuc3BlY3VsYXJJbnRlbnNpdHksdGhpcy5zcGVjdWxhckludGVuc2l0eU1hcD10LnNwZWN1bGFySW50ZW5zaXR5TWFwLHRoaXMuc3BlY3VsYXJUaW50LmNvcHkodC5zcGVjdWxhclRpbnQpLHRoaXMuc3BlY3VsYXJUaW50TWFwPXQuc3BlY3VsYXJUaW50TWFwLHRoaXN9fSkucHJvdG90eXBlLmlzTWVzaFBoeXNpY2FsTWF0ZXJpYWw9ITA7KGNsYXNzIGV4dGVuZHMgVmx0e2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy50eXBlPSJNZXNoUGhvbmdNYXRlcmlhbCIsdGhpcy5jb2xvcj1uZXcgWmx0KDE2Nzc3MjE1KSx0aGlzLnNwZWN1bGFyPW5ldyBabHQoMTExODQ4MSksdGhpcy5zaGluaW5lc3M9MzAsdGhpcy5tYXA9bnVsbCx0aGlzLmxpZ2h0TWFwPW51bGwsdGhpcy5saWdodE1hcEludGVuc2l0eT0xLHRoaXMuYW9NYXA9bnVsbCx0aGlzLmFvTWFwSW50ZW5zaXR5PTEsdGhpcy5lbWlzc2l2ZT1uZXcgWmx0KDApLHRoaXMuZW1pc3NpdmVJbnRlbnNpdHk9MSx0aGlzLmVtaXNzaXZlTWFwPW51bGwsdGhpcy5idW1wTWFwPW51bGwsdGhpcy5idW1wU2NhbGU9MSx0aGlzLm5vcm1hbE1hcD1udWxsLHRoaXMubm9ybWFsTWFwVHlwZT0wLHRoaXMubm9ybWFsU2NhbGU9bmV3IGdzdCgxLDEpLHRoaXMuZGlzcGxhY2VtZW50TWFwPW51bGwsdGhpcy5kaXNwbGFjZW1lbnRTY2FsZT0xLHRoaXMuZGlzcGxhY2VtZW50Qmlhcz0wLHRoaXMuc3BlY3VsYXJNYXA9bnVsbCx0aGlzLmFscGhhTWFwPW51bGwsdGhpcy5lbnZNYXA9bnVsbCx0aGlzLmNvbWJpbmU9MCx0aGlzLnJlZmxlY3Rpdml0eT0xLHRoaXMucmVmcmFjdGlvblJhdGlvPS45OCx0aGlzLndpcmVmcmFtZT0hMSx0aGlzLndpcmVmcmFtZUxpbmV3aWR0aD0xLHRoaXMud2lyZWZyYW1lTGluZWNhcD0icm91bmQiLHRoaXMud2lyZWZyYW1lTGluZWpvaW49InJvdW5kIix0aGlzLmZsYXRTaGFkaW5nPSExLHRoaXMuc2V0VmFsdWVzKHQpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5jb2xvci5jb3B5KHQuY29sb3IpLHRoaXMuc3BlY3VsYXIuY29weSh0LnNwZWN1bGFyKSx0aGlzLnNoaW5pbmVzcz10LnNoaW5pbmVzcyx0aGlzLm1hcD10Lm1hcCx0aGlzLmxpZ2h0TWFwPXQubGlnaHRNYXAsdGhpcy5saWdodE1hcEludGVuc2l0eT10LmxpZ2h0TWFwSW50ZW5zaXR5LHRoaXMuYW9NYXA9dC5hb01hcCx0aGlzLmFvTWFwSW50ZW5zaXR5PXQuYW9NYXBJbnRlbnNpdHksdGhpcy5lbWlzc2l2ZS5jb3B5KHQuZW1pc3NpdmUpLHRoaXMuZW1pc3NpdmVNYXA9dC5lbWlzc2l2ZU1hcCx0aGlzLmVtaXNzaXZlSW50ZW5zaXR5PXQuZW1pc3NpdmVJbnRlbnNpdHksdGhpcy5idW1wTWFwPXQuYnVtcE1hcCx0aGlzLmJ1bXBTY2FsZT10LmJ1bXBTY2FsZSx0aGlzLm5vcm1hbE1hcD10Lm5vcm1hbE1hcCx0aGlzLm5vcm1hbE1hcFR5cGU9dC5ub3JtYWxNYXBUeXBlLHRoaXMubm9ybWFsU2NhbGUuY29weSh0Lm5vcm1hbFNjYWxlKSx0aGlzLmRpc3BsYWNlbWVudE1hcD10LmRpc3BsYWNlbWVudE1hcCx0aGlzLmRpc3BsYWNlbWVudFNjYWxlPXQuZGlzcGxhY2VtZW50U2NhbGUsdGhpcy5kaXNwbGFjZW1lbnRCaWFzPXQuZGlzcGxhY2VtZW50Qmlhcyx0aGlzLnNwZWN1bGFyTWFwPXQuc3BlY3VsYXJNYXAsdGhpcy5hbHBoYU1hcD10LmFscGhhTWFwLHRoaXMuZW52TWFwPXQuZW52TWFwLHRoaXMuY29tYmluZT10LmNvbWJpbmUsdGhpcy5yZWZsZWN0aXZpdHk9dC5yZWZsZWN0aXZpdHksdGhpcy5yZWZyYWN0aW9uUmF0aW89dC5yZWZyYWN0aW9uUmF0aW8sdGhpcy53aXJlZnJhbWU9dC53aXJlZnJhbWUsdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9dC53aXJlZnJhbWVMaW5ld2lkdGgsdGhpcy53aXJlZnJhbWVMaW5lY2FwPXQud2lyZWZyYW1lTGluZWNhcCx0aGlzLndpcmVmcmFtZUxpbmVqb2luPXQud2lyZWZyYW1lTGluZWpvaW4sdGhpcy5mbGF0U2hhZGluZz10LmZsYXRTaGFkaW5nLHRoaXN9fSkucHJvdG90eXBlLmlzTWVzaFBob25nTWF0ZXJpYWw9ITA7KGNsYXNzIGV4dGVuZHMgVmx0e2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy5kZWZpbmVzPXtUT09OOiIifSx0aGlzLnR5cGU9Ik1lc2hUb29uTWF0ZXJpYWwiLHRoaXMuY29sb3I9bmV3IFpsdCgxNjc3NzIxNSksdGhpcy5tYXA9bnVsbCx0aGlzLmdyYWRpZW50TWFwPW51bGwsdGhpcy5saWdodE1hcD1udWxsLHRoaXMubGlnaHRNYXBJbnRlbnNpdHk9MSx0aGlzLmFvTWFwPW51bGwsdGhpcy5hb01hcEludGVuc2l0eT0xLHRoaXMuZW1pc3NpdmU9bmV3IFpsdCgwKSx0aGlzLmVtaXNzaXZlSW50ZW5zaXR5PTEsdGhpcy5lbWlzc2l2ZU1hcD1udWxsLHRoaXMuYnVtcE1hcD1udWxsLHRoaXMuYnVtcFNjYWxlPTEsdGhpcy5ub3JtYWxNYXA9bnVsbCx0aGlzLm5vcm1hbE1hcFR5cGU9MCx0aGlzLm5vcm1hbFNjYWxlPW5ldyBnc3QoMSwxKSx0aGlzLmRpc3BsYWNlbWVudE1hcD1udWxsLHRoaXMuZGlzcGxhY2VtZW50U2NhbGU9MSx0aGlzLmRpc3BsYWNlbWVudEJpYXM9MCx0aGlzLmFscGhhTWFwPW51bGwsdGhpcy53aXJlZnJhbWU9ITEsdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9MSx0aGlzLndpcmVmcmFtZUxpbmVjYXA9InJvdW5kIix0aGlzLndpcmVmcmFtZUxpbmVqb2luPSJyb3VuZCIsdGhpcy5zZXRWYWx1ZXModCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmNvbG9yLmNvcHkodC5jb2xvciksdGhpcy5tYXA9dC5tYXAsdGhpcy5ncmFkaWVudE1hcD10LmdyYWRpZW50TWFwLHRoaXMubGlnaHRNYXA9dC5saWdodE1hcCx0aGlzLmxpZ2h0TWFwSW50ZW5zaXR5PXQubGlnaHRNYXBJbnRlbnNpdHksdGhpcy5hb01hcD10LmFvTWFwLHRoaXMuYW9NYXBJbnRlbnNpdHk9dC5hb01hcEludGVuc2l0eSx0aGlzLmVtaXNzaXZlLmNvcHkodC5lbWlzc2l2ZSksdGhpcy5lbWlzc2l2ZU1hcD10LmVtaXNzaXZlTWFwLHRoaXMuZW1pc3NpdmVJbnRlbnNpdHk9dC5lbWlzc2l2ZUludGVuc2l0eSx0aGlzLmJ1bXBNYXA9dC5idW1wTWFwLHRoaXMuYnVtcFNjYWxlPXQuYnVtcFNjYWxlLHRoaXMubm9ybWFsTWFwPXQubm9ybWFsTWFwLHRoaXMubm9ybWFsTWFwVHlwZT10Lm5vcm1hbE1hcFR5cGUsdGhpcy5ub3JtYWxTY2FsZS5jb3B5KHQubm9ybWFsU2NhbGUpLHRoaXMuZGlzcGxhY2VtZW50TWFwPXQuZGlzcGxhY2VtZW50TWFwLHRoaXMuZGlzcGxhY2VtZW50U2NhbGU9dC5kaXNwbGFjZW1lbnRTY2FsZSx0aGlzLmRpc3BsYWNlbWVudEJpYXM9dC5kaXNwbGFjZW1lbnRCaWFzLHRoaXMuYWxwaGFNYXA9dC5hbHBoYU1hcCx0aGlzLndpcmVmcmFtZT10LndpcmVmcmFtZSx0aGlzLndpcmVmcmFtZUxpbmV3aWR0aD10LndpcmVmcmFtZUxpbmV3aWR0aCx0aGlzLndpcmVmcmFtZUxpbmVjYXA9dC53aXJlZnJhbWVMaW5lY2FwLHRoaXMud2lyZWZyYW1lTGluZWpvaW49dC53aXJlZnJhbWVMaW5lam9pbix0aGlzfX0pLnByb3RvdHlwZS5pc01lc2hUb29uTWF0ZXJpYWw9ITA7KGNsYXNzIGV4dGVuZHMgVmx0e2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy50eXBlPSJNZXNoTm9ybWFsTWF0ZXJpYWwiLHRoaXMuYnVtcE1hcD1udWxsLHRoaXMuYnVtcFNjYWxlPTEsdGhpcy5ub3JtYWxNYXA9bnVsbCx0aGlzLm5vcm1hbE1hcFR5cGU9MCx0aGlzLm5vcm1hbFNjYWxlPW5ldyBnc3QoMSwxKSx0aGlzLmRpc3BsYWNlbWVudE1hcD1udWxsLHRoaXMuZGlzcGxhY2VtZW50U2NhbGU9MSx0aGlzLmRpc3BsYWNlbWVudEJpYXM9MCx0aGlzLndpcmVmcmFtZT0hMSx0aGlzLndpcmVmcmFtZUxpbmV3aWR0aD0xLHRoaXMuZm9nPSExLHRoaXMuZmxhdFNoYWRpbmc9ITEsdGhpcy5zZXRWYWx1ZXModCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmJ1bXBNYXA9dC5idW1wTWFwLHRoaXMuYnVtcFNjYWxlPXQuYnVtcFNjYWxlLHRoaXMubm9ybWFsTWFwPXQubm9ybWFsTWFwLHRoaXMubm9ybWFsTWFwVHlwZT10Lm5vcm1hbE1hcFR5cGUsdGhpcy5ub3JtYWxTY2FsZS5jb3B5KHQubm9ybWFsU2NhbGUpLHRoaXMuZGlzcGxhY2VtZW50TWFwPXQuZGlzcGxhY2VtZW50TWFwLHRoaXMuZGlzcGxhY2VtZW50U2NhbGU9dC5kaXNwbGFjZW1lbnRTY2FsZSx0aGlzLmRpc3BsYWNlbWVudEJpYXM9dC5kaXNwbGFjZW1lbnRCaWFzLHRoaXMud2lyZWZyYW1lPXQud2lyZWZyYW1lLHRoaXMud2lyZWZyYW1lTGluZXdpZHRoPXQud2lyZWZyYW1lTGluZXdpZHRoLHRoaXMuZmxhdFNoYWRpbmc9dC5mbGF0U2hhZGluZyx0aGlzfX0pLnByb3RvdHlwZS5pc01lc2hOb3JtYWxNYXRlcmlhbD0hMDsoY2xhc3MgZXh0ZW5kcyBWbHR7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLnR5cGU9Ik1lc2hMYW1iZXJ0TWF0ZXJpYWwiLHRoaXMuY29sb3I9bmV3IFpsdCgxNjc3NzIxNSksdGhpcy5tYXA9bnVsbCx0aGlzLmxpZ2h0TWFwPW51bGwsdGhpcy5saWdodE1hcEludGVuc2l0eT0xLHRoaXMuYW9NYXA9bnVsbCx0aGlzLmFvTWFwSW50ZW5zaXR5PTEsdGhpcy5lbWlzc2l2ZT1uZXcgWmx0KDApLHRoaXMuZW1pc3NpdmVJbnRlbnNpdHk9MSx0aGlzLmVtaXNzaXZlTWFwPW51bGwsdGhpcy5zcGVjdWxhck1hcD1udWxsLHRoaXMuYWxwaGFNYXA9bnVsbCx0aGlzLmVudk1hcD1udWxsLHRoaXMuY29tYmluZT0wLHRoaXMucmVmbGVjdGl2aXR5PTEsdGhpcy5yZWZyYWN0aW9uUmF0aW89Ljk4LHRoaXMud2lyZWZyYW1lPSExLHRoaXMud2lyZWZyYW1lTGluZXdpZHRoPTEsdGhpcy53aXJlZnJhbWVMaW5lY2FwPSJyb3VuZCIsdGhpcy53aXJlZnJhbWVMaW5lam9pbj0icm91bmQiLHRoaXMuc2V0VmFsdWVzKHQpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5jb2xvci5jb3B5KHQuY29sb3IpLHRoaXMubWFwPXQubWFwLHRoaXMubGlnaHRNYXA9dC5saWdodE1hcCx0aGlzLmxpZ2h0TWFwSW50ZW5zaXR5PXQubGlnaHRNYXBJbnRlbnNpdHksdGhpcy5hb01hcD10LmFvTWFwLHRoaXMuYW9NYXBJbnRlbnNpdHk9dC5hb01hcEludGVuc2l0eSx0aGlzLmVtaXNzaXZlLmNvcHkodC5lbWlzc2l2ZSksdGhpcy5lbWlzc2l2ZU1hcD10LmVtaXNzaXZlTWFwLHRoaXMuZW1pc3NpdmVJbnRlbnNpdHk9dC5lbWlzc2l2ZUludGVuc2l0eSx0aGlzLnNwZWN1bGFyTWFwPXQuc3BlY3VsYXJNYXAsdGhpcy5hbHBoYU1hcD10LmFscGhhTWFwLHRoaXMuZW52TWFwPXQuZW52TWFwLHRoaXMuY29tYmluZT10LmNvbWJpbmUsdGhpcy5yZWZsZWN0aXZpdHk9dC5yZWZsZWN0aXZpdHksdGhpcy5yZWZyYWN0aW9uUmF0aW89dC5yZWZyYWN0aW9uUmF0aW8sdGhpcy53aXJlZnJhbWU9dC53aXJlZnJhbWUsdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9dC53aXJlZnJhbWVMaW5ld2lkdGgsdGhpcy53aXJlZnJhbWVMaW5lY2FwPXQud2lyZWZyYW1lTGluZWNhcCx0aGlzLndpcmVmcmFtZUxpbmVqb2luPXQud2lyZWZyYW1lTGluZWpvaW4sdGhpc319KS5wcm90b3R5cGUuaXNNZXNoTGFtYmVydE1hdGVyaWFsPSEwOyhjbGFzcyBleHRlbmRzIFZsdHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMuZGVmaW5lcz17TUFUQ0FQOiIifSx0aGlzLnR5cGU9Ik1lc2hNYXRjYXBNYXRlcmlhbCIsdGhpcy5jb2xvcj1uZXcgWmx0KDE2Nzc3MjE1KSx0aGlzLm1hdGNhcD1udWxsLHRoaXMubWFwPW51bGwsdGhpcy5idW1wTWFwPW51bGwsdGhpcy5idW1wU2NhbGU9MSx0aGlzLm5vcm1hbE1hcD1udWxsLHRoaXMubm9ybWFsTWFwVHlwZT0wLHRoaXMubm9ybWFsU2NhbGU9bmV3IGdzdCgxLDEpLHRoaXMuZGlzcGxhY2VtZW50TWFwPW51bGwsdGhpcy5kaXNwbGFjZW1lbnRTY2FsZT0xLHRoaXMuZGlzcGxhY2VtZW50Qmlhcz0wLHRoaXMuYWxwaGFNYXA9bnVsbCx0aGlzLmZsYXRTaGFkaW5nPSExLHRoaXMuc2V0VmFsdWVzKHQpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5kZWZpbmVzPXtNQVRDQVA6IiJ9LHRoaXMuY29sb3IuY29weSh0LmNvbG9yKSx0aGlzLm1hdGNhcD10Lm1hdGNhcCx0aGlzLm1hcD10Lm1hcCx0aGlzLmJ1bXBNYXA9dC5idW1wTWFwLHRoaXMuYnVtcFNjYWxlPXQuYnVtcFNjYWxlLHRoaXMubm9ybWFsTWFwPXQubm9ybWFsTWFwLHRoaXMubm9ybWFsTWFwVHlwZT10Lm5vcm1hbE1hcFR5cGUsdGhpcy5ub3JtYWxTY2FsZS5jb3B5KHQubm9ybWFsU2NhbGUpLHRoaXMuZGlzcGxhY2VtZW50TWFwPXQuZGlzcGxhY2VtZW50TWFwLHRoaXMuZGlzcGxhY2VtZW50U2NhbGU9dC5kaXNwbGFjZW1lbnRTY2FsZSx0aGlzLmRpc3BsYWNlbWVudEJpYXM9dC5kaXNwbGFjZW1lbnRCaWFzLHRoaXMuYWxwaGFNYXA9dC5hbHBoYU1hcCx0aGlzLmZsYXRTaGFkaW5nPXQuZmxhdFNoYWRpbmcsdGhpc319KS5wcm90b3R5cGUuaXNNZXNoTWF0Y2FwTWF0ZXJpYWw9ITA7KGNsYXNzIGV4dGVuZHMgZmZ0e2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy50eXBlPSJMaW5lRGFzaGVkTWF0ZXJpYWwiLHRoaXMuc2NhbGU9MSx0aGlzLmRhc2hTaXplPTMsdGhpcy5nYXBTaXplPTEsdGhpcy5zZXRWYWx1ZXModCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLnNjYWxlPXQuc2NhbGUsdGhpcy5kYXNoU2l6ZT10LmRhc2hTaXplLHRoaXMuZ2FwU2l6ZT10LmdhcFNpemUsdGhpc319KS5wcm90b3R5cGUuaXNMaW5lRGFzaGVkTWF0ZXJpYWw9ITA7Y29uc3Qga3V0PXthcnJheVNsaWNlOmZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4ga3V0LmlzVHlwZWRBcnJheSh0KT9uZXcgdC5jb25zdHJ1Y3Rvcih0LnN1YmFycmF5KGUsdm9pZCAwIT09bj9uOnQubGVuZ3RoKSk6dC5zbGljZShlLG4pfSxjb252ZXJ0QXJyYXk6ZnVuY3Rpb24odCxlLG4pe3JldHVybiF0fHwhbiYmdC5jb25zdHJ1Y3Rvcj09PWU/dDoibnVtYmVyIj09dHlwZW9mIGUuQllURVNfUEVSX0VMRU1FTlQ/bmV3IGUodCk6QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodCl9LGlzVHlwZWRBcnJheTpmdW5jdGlvbih0KXtyZXR1cm4gQXJyYXlCdWZmZXIuaXNWaWV3KHQpJiYhKHQgaW5zdGFuY2VvZiBEYXRhVmlldyl9LGdldEtleWZyYW1lT3JkZXI6ZnVuY3Rpb24odCl7Y29uc3QgZT10Lmxlbmd0aCxuPW5ldyBBcnJheShlKTtmb3IobGV0IHQ9MDt0IT09ZTsrK3Qpblt0XT10O3JldHVybiBuLnNvcnQoKGZ1bmN0aW9uIG8oZSxuKXtyZXR1cm4gdFtlXS10W25dfSkpLG59LHNvcnRlZEFycmF5OmZ1bmN0aW9uKHQsZSxuKXtjb25zdCBvPXQubGVuZ3RoLGk9bmV3IHQuY29uc3RydWN0b3Iobyk7Zm9yKGxldCBhPTAscj0wO3IhPT1vOysrYSl7Y29uc3Qgbz1uW2FdKmU7Zm9yKGxldCBuPTA7biE9PWU7KytuKWlbcisrXT10W28rbl19cmV0dXJuIGl9LGZsYXR0ZW5KU09OOmZ1bmN0aW9uKHQsZSxuLG8pe2xldCBpPTEsYT10WzBdO2Zvcig7dm9pZCAwIT09YSYmdm9pZCAwPT09YVtvXTspYT10W2krK107aWYodm9pZCAwPT09YSlyZXR1cm47bGV0IHI9YVtvXTtpZih2b2lkIDAhPT1yKWlmKEFycmF5LmlzQXJyYXkocikpZG97cj1hW29dLHZvaWQgMCE9PXImJihlLnB1c2goYS50aW1lKSxuLnB1c2guYXBwbHkobixyKSksYT10W2krK119d2hpbGUodm9pZCAwIT09YSk7ZWxzZSBpZih2b2lkIDAhPT1yLnRvQXJyYXkpZG97cj1hW29dLHZvaWQgMCE9PXImJihlLnB1c2goYS50aW1lKSxyLnRvQXJyYXkobixuLmxlbmd0aCkpLGE9dFtpKytdfXdoaWxlKHZvaWQgMCE9PWEpO2Vsc2UgZG97cj1hW29dLHZvaWQgMCE9PXImJihlLnB1c2goYS50aW1lKSxuLnB1c2gocikpLGE9dFtpKytdfXdoaWxlKHZvaWQgMCE9PWEpfSxzdWJjbGlwOmZ1bmN0aW9uKHQsZSxuLG8saT0zMCl7Y29uc3QgYT10LmNsb25lKCk7YS5uYW1lPWU7Y29uc3Qgcj1bXTtmb3IobGV0IHQ9MDt0PGEudHJhY2tzLmxlbmd0aDsrK3Qpe2NvbnN0IGU9YS50cmFja3NbdF0scz1lLmdldFZhbHVlU2l6ZSgpLGw9W10sYz1bXTtmb3IobGV0IHQ9MDt0PGUudGltZXMubGVuZ3RoOysrdCl7Y29uc3QgYT1lLnRpbWVzW3RdKmk7aWYoIShhPG58fGE+PW8pKXtsLnB1c2goZS50aW1lc1t0XSk7Zm9yKGxldCBuPTA7bjxzOysrbiljLnB1c2goZS52YWx1ZXNbdCpzK25dKX19MCE9PWwubGVuZ3RoJiYoZS50aW1lcz1rdXQuY29udmVydEFycmF5KGwsZS50aW1lcy5jb25zdHJ1Y3RvciksZS52YWx1ZXM9a3V0LmNvbnZlcnRBcnJheShjLGUudmFsdWVzLmNvbnN0cnVjdG9yKSxyLnB1c2goZSkpfWEudHJhY2tzPXI7bGV0IHM9MS8wO2ZvcihsZXQgdD0wO3Q8YS50cmFja3MubGVuZ3RoOysrdClzPmEudHJhY2tzW3RdLnRpbWVzWzBdJiYocz1hLnRyYWNrc1t0XS50aW1lc1swXSk7Zm9yKGxldCB0PTA7dDxhLnRyYWNrcy5sZW5ndGg7Kyt0KWEudHJhY2tzW3RdLnNoaWZ0KC0xKnMpO3JldHVybiBhLnJlc2V0RHVyYXRpb24oKSxhfSxtYWtlQ2xpcEFkZGl0aXZlOmZ1bmN0aW9uKHQsZT0wLG49dCxvPTMwKXtvPD0wJiYobz0zMCk7Y29uc3QgaT1uLnRyYWNrcy5sZW5ndGgsYT1lL287Zm9yKGxldCBlPTA7ZTxpOysrZSl7Y29uc3Qgbz1uLnRyYWNrc1tlXSxpPW8uVmFsdWVUeXBlTmFtZTtpZigiYm9vbCI9PT1pfHwic3RyaW5nIj09PWkpY29udGludWU7Y29uc3Qgcj10LnRyYWNrcy5maW5kKChmdW5jdGlvbih0KXtyZXR1cm4gdC5uYW1lPT09by5uYW1lJiZ0LlZhbHVlVHlwZU5hbWU9PT1pfSkpO2lmKHZvaWQgMD09PXIpY29udGludWU7bGV0IHM9MDtjb25zdCBsPW8uZ2V0VmFsdWVTaXplKCk7by5jcmVhdGVJbnRlcnBvbGFudC5pc0ludGVycG9sYW50RmFjdG9yeU1ldGhvZEdMVEZDdWJpY1NwbGluZSYmKHM9bC8zKTtsZXQgYz0wO2NvbnN0IGQ9ci5nZXRWYWx1ZVNpemUoKTtyLmNyZWF0ZUludGVycG9sYW50LmlzSW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kR0xURkN1YmljU3BsaW5lJiYoYz1kLzMpO2NvbnN0IHA9by50aW1lcy5sZW5ndGgtMTtsZXQgbTtpZihhPD1vLnRpbWVzWzBdKXttPWt1dC5hcnJheVNsaWNlKG8udmFsdWVzLHMsbC1zKX1lbHNlIGlmKGE+PW8udGltZXNbcF0pe2NvbnN0IHQ9cCpsK3M7bT1rdXQuYXJyYXlTbGljZShvLnZhbHVlcyx0LHQrbC1zKX1lbHNle2NvbnN0IHQ9by5jcmVhdGVJbnRlcnBvbGFudCgpLGU9cyxuPWwtczt0LmV2YWx1YXRlKGEpLG09a3V0LmFycmF5U2xpY2UodC5yZXN1bHRCdWZmZXIsZSxuKX1pZigicXVhdGVybmlvbiI9PT1pKXsobmV3IFBzdCkuZnJvbUFycmF5KG0pLm5vcm1hbGl6ZSgpLmNvbmp1Z2F0ZSgpLnRvQXJyYXkobSl9Y29uc3QgZj1yLnRpbWVzLmxlbmd0aDtmb3IobGV0IHQ9MDt0PGY7Kyt0KXtjb25zdCBlPXQqZCtjO2lmKCJxdWF0ZXJuaW9uIj09PWkpUHN0Lm11bHRpcGx5UXVhdGVybmlvbnNGbGF0KHIudmFsdWVzLGUsbSwwLHIudmFsdWVzLGUpO2Vsc2V7Y29uc3QgdD1kLTIqYztmb3IobGV0IG49MDtuPHQ7KytuKXIudmFsdWVzW2Urbl0tPW1bbl19fX1yZXR1cm4gdC5ibGVuZE1vZGU9MjUwMSx0fX07Y2xhc3MgU3V0e2NvbnN0cnVjdG9yKHQsZSxuLG8pe3RoaXMucGFyYW1ldGVyUG9zaXRpb25zPXQsdGhpcy5fY2FjaGVkSW5kZXg9MCx0aGlzLnJlc3VsdEJ1ZmZlcj12b2lkIDAhPT1vP286bmV3IGUuY29uc3RydWN0b3IobiksdGhpcy5zYW1wbGVWYWx1ZXM9ZSx0aGlzLnZhbHVlU2l6ZT1uLHRoaXMuc2V0dGluZ3M9bnVsbCx0aGlzLkRlZmF1bHRTZXR0aW5nc189e319ZXZhbHVhdGUodCl7Y29uc3QgZT10aGlzLnBhcmFtZXRlclBvc2l0aW9ucztsZXQgbj10aGlzLl9jYWNoZWRJbmRleCxvPWVbbl0saT1lW24tMV07dDp7ZTp7bGV0IGE7bjp7bzppZighKHQ8bykpe2ZvcihsZXQgYT1uKzI7Oyl7aWYodm9pZCAwPT09byl7aWYodDxpKWJyZWFrIG87cmV0dXJuIG49ZS5sZW5ndGgsdGhpcy5fY2FjaGVkSW5kZXg9bix0aGlzLmFmdGVyRW5kXyhuLTEsdCxpKX1pZihuPT09YSlicmVhaztpZihpPW8sbz1lWysrbl0sdDxvKWJyZWFrIGV9YT1lLmxlbmd0aDticmVhayBufWlmKHQ+PWkpYnJlYWsgdDt7Y29uc3Qgcj1lWzFdO3Q8ciYmKG49MixpPXIpO2ZvcihsZXQgYT1uLTI7Oyl7aWYodm9pZCAwPT09aSlyZXR1cm4gdGhpcy5fY2FjaGVkSW5kZXg9MCx0aGlzLmJlZm9yZVN0YXJ0XygwLHQsbyk7aWYobj09PWEpYnJlYWs7aWYobz1pLGk9ZVstLW4tMV0sdD49aSlicmVhayBlfWE9bixuPTB9fWZvcig7bjxhOyl7Y29uc3Qgbz1uK2E+Pj4xO3Q8ZVtvXT9hPW86bj1vKzF9aWYobz1lW25dLGk9ZVtuLTFdLHZvaWQgMD09PWkpcmV0dXJuIHRoaXMuX2NhY2hlZEluZGV4PTAsdGhpcy5iZWZvcmVTdGFydF8oMCx0LG8pO2lmKHZvaWQgMD09PW8pcmV0dXJuIG49ZS5sZW5ndGgsdGhpcy5fY2FjaGVkSW5kZXg9bix0aGlzLmFmdGVyRW5kXyhuLTEsaSx0KX10aGlzLl9jYWNoZWRJbmRleD1uLHRoaXMuaW50ZXJ2YWxDaGFuZ2VkXyhuLGksbyl9cmV0dXJuIHRoaXMuaW50ZXJwb2xhdGVfKG4saSx0LG8pfWdldFNldHRpbmdzXygpe3JldHVybiB0aGlzLnNldHRpbmdzfHx0aGlzLkRlZmF1bHRTZXR0aW5nc199Y29weVNhbXBsZVZhbHVlXyh0KXtjb25zdCBlPXRoaXMucmVzdWx0QnVmZmVyLG49dGhpcy5zYW1wbGVWYWx1ZXMsbz10aGlzLnZhbHVlU2l6ZSxpPXQqbztmb3IobGV0IHQ9MDt0IT09bzsrK3QpZVt0XT1uW2krdF07cmV0dXJuIGV9aW50ZXJwb2xhdGVfKCl7dGhyb3cgbmV3IEVycm9yKCJjYWxsIHRvIGFic3RyYWN0IG1ldGhvZCIpfWludGVydmFsQ2hhbmdlZF8oKXt9fVN1dC5wcm90b3R5cGUuYmVmb3JlU3RhcnRfPVN1dC5wcm90b3R5cGUuY29weVNhbXBsZVZhbHVlXyxTdXQucHJvdG90eXBlLmFmdGVyRW5kXz1TdXQucHJvdG90eXBlLmNvcHlTYW1wbGVWYWx1ZV87Y2xhc3MgRHV0IGV4dGVuZHMgU3V0e2NvbnN0cnVjdG9yKHQsZSxuLG8pe3N1cGVyKHQsZSxuLG8pLHRoaXMuX3dlaWdodFByZXY9LTAsdGhpcy5fb2Zmc2V0UHJldj0tMCx0aGlzLl93ZWlnaHROZXh0PS0wLHRoaXMuX29mZnNldE5leHQ9LTAsdGhpcy5EZWZhdWx0U2V0dGluZ3NfPXtlbmRpbmdTdGFydDpacnQsZW5kaW5nRW5kOlpydH19aW50ZXJ2YWxDaGFuZ2VkXyh0LGUsbil7Y29uc3Qgbz10aGlzLnBhcmFtZXRlclBvc2l0aW9ucztsZXQgaT10LTIsYT10KzEscj1vW2ldLHM9b1thXTtpZih2b2lkIDA9PT1yKXN3aXRjaCh0aGlzLmdldFNldHRpbmdzXygpLmVuZGluZ1N0YXJ0KXtjYXNlIFhydDppPXQscj0yKmUtbjticmVhaztjYXNlIEtydDppPW8ubGVuZ3RoLTIscj1lK29baV0tb1tpKzFdO2JyZWFrO2RlZmF1bHQ6aT10LHI9bn1pZih2b2lkIDA9PT1zKXN3aXRjaCh0aGlzLmdldFNldHRpbmdzXygpLmVuZGluZ0VuZCl7Y2FzZSBYcnQ6YT10LHM9MipuLWU7YnJlYWs7Y2FzZSBLcnQ6YT0xLHM9bitvWzFdLW9bMF07YnJlYWs7ZGVmYXVsdDphPXQtMSxzPWV9Y29uc3QgbD0uNSoobi1lKSxjPXRoaXMudmFsdWVTaXplO3RoaXMuX3dlaWdodFByZXY9bC8oZS1yKSx0aGlzLl93ZWlnaHROZXh0PWwvKHMtbiksdGhpcy5fb2Zmc2V0UHJldj1pKmMsdGhpcy5fb2Zmc2V0TmV4dD1hKmN9aW50ZXJwb2xhdGVfKHQsZSxuLG8pe2NvbnN0IGk9dGhpcy5yZXN1bHRCdWZmZXIsYT10aGlzLnNhbXBsZVZhbHVlcyxyPXRoaXMudmFsdWVTaXplLHM9dCpyLGw9cy1yLGM9dGhpcy5fb2Zmc2V0UHJldixkPXRoaXMuX29mZnNldE5leHQscD10aGlzLl93ZWlnaHRQcmV2LG09dGhpcy5fd2VpZ2h0TmV4dCxmPShuLWUpLyhvLWUpLHU9ZipmLGc9dSpmLGg9LXAqZysyKnAqdS1wKmYsYj0oMStwKSpnKygtMS41LTIqcCkqdSsoLS41K3ApKmYrMSx5PSgtMS1tKSpnKygxLjUrbSkqdSsuNSpmLF89bSpnLW0qdTtmb3IobGV0IHQ9MDt0IT09cjsrK3QpaVt0XT1oKmFbYyt0XStiKmFbbCt0XSt5KmFbcyt0XStfKmFbZCt0XTtyZXR1cm4gaX19Y2xhc3MgUnV0IGV4dGVuZHMgU3V0e2NvbnN0cnVjdG9yKHQsZSxuLG8pe3N1cGVyKHQsZSxuLG8pfWludGVycG9sYXRlXyh0LGUsbixvKXtjb25zdCBpPXRoaXMucmVzdWx0QnVmZmVyLGE9dGhpcy5zYW1wbGVWYWx1ZXMscj10aGlzLnZhbHVlU2l6ZSxzPXQqcixsPXMtcixjPShuLWUpLyhvLWUpLGQ9MS1jO2ZvcihsZXQgdD0wO3QhPT1yOysrdClpW3RdPWFbbCt0XSpkK2Fbcyt0XSpjO3JldHVybiBpfX1jbGFzcyBFdXQgZXh0ZW5kcyBTdXR7Y29uc3RydWN0b3IodCxlLG4sbyl7c3VwZXIodCxlLG4sbyl9aW50ZXJwb2xhdGVfKHQpe3JldHVybiB0aGlzLmNvcHlTYW1wbGVWYWx1ZV8odC0xKX19Y2xhc3MgQXV0e2NvbnN0cnVjdG9yKHQsZSxuLG8pe2lmKHZvaWQgMD09PXQpdGhyb3cgbmV3IEVycm9yKCJUSFJFRS5LZXlmcmFtZVRyYWNrOiB0cmFjayBuYW1lIGlzIHVuZGVmaW5lZCIpO2lmKHZvaWQgMD09PWV8fDA9PT1lLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIlRIUkVFLktleWZyYW1lVHJhY2s6IG5vIGtleWZyYW1lcyBpbiB0cmFjayBuYW1lZCAiK3QpO3RoaXMubmFtZT10LHRoaXMudGltZXM9a3V0LmNvbnZlcnRBcnJheShlLHRoaXMuVGltZUJ1ZmZlclR5cGUpLHRoaXMudmFsdWVzPWt1dC5jb252ZXJ0QXJyYXkobix0aGlzLlZhbHVlQnVmZmVyVHlwZSksdGhpcy5zZXRJbnRlcnBvbGF0aW9uKG98fHRoaXMuRGVmYXVsdEludGVycG9sYXRpb24pfXN0YXRpYyB0b0pTT04odCl7Y29uc3QgZT10LmNvbnN0cnVjdG9yO2xldCBuO2lmKGUudG9KU09OIT09dGhpcy50b0pTT04pbj1lLnRvSlNPTih0KTtlbHNle249e25hbWU6dC5uYW1lLHRpbWVzOmt1dC5jb252ZXJ0QXJyYXkodC50aW1lcyxBcnJheSksdmFsdWVzOmt1dC5jb252ZXJ0QXJyYXkodC52YWx1ZXMsQXJyYXkpfTtjb25zdCBlPXQuZ2V0SW50ZXJwb2xhdGlvbigpO2UhPT10LkRlZmF1bHRJbnRlcnBvbGF0aW9uJiYobi5pbnRlcnBvbGF0aW9uPWUpfXJldHVybiBuLnR5cGU9dC5WYWx1ZVR5cGVOYW1lLG59SW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kRGlzY3JldGUodCl7cmV0dXJuIG5ldyBFdXQodGhpcy50aW1lcyx0aGlzLnZhbHVlcyx0aGlzLmdldFZhbHVlU2l6ZSgpLHQpfUludGVycG9sYW50RmFjdG9yeU1ldGhvZExpbmVhcih0KXtyZXR1cm4gbmV3IFJ1dCh0aGlzLnRpbWVzLHRoaXMudmFsdWVzLHRoaXMuZ2V0VmFsdWVTaXplKCksdCl9SW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kU21vb3RoKHQpe3JldHVybiBuZXcgRHV0KHRoaXMudGltZXMsdGhpcy52YWx1ZXMsdGhpcy5nZXRWYWx1ZVNpemUoKSx0KX1zZXRJbnRlcnBvbGF0aW9uKHQpe2xldCBlO3N3aXRjaCh0KXtjYXNlIEdydDplPXRoaXMuSW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kRGlzY3JldGU7YnJlYWs7Y2FzZSBZcnQ6ZT10aGlzLkludGVycG9sYW50RmFjdG9yeU1ldGhvZExpbmVhcjticmVhaztjYXNlIHFydDplPXRoaXMuSW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kU21vb3RofWlmKHZvaWQgMD09PWUpe2NvbnN0IGU9InVuc3VwcG9ydGVkIGludGVycG9sYXRpb24gZm9yICIrdGhpcy5WYWx1ZVR5cGVOYW1lKyIga2V5ZnJhbWUgdHJhY2sgbmFtZWQgIit0aGlzLm5hbWU7aWYodm9pZCAwPT09dGhpcy5jcmVhdGVJbnRlcnBvbGFudCl7aWYodD09PXRoaXMuRGVmYXVsdEludGVycG9sYXRpb24pdGhyb3cgbmV3IEVycm9yKGUpO3RoaXMuc2V0SW50ZXJwb2xhdGlvbih0aGlzLkRlZmF1bHRJbnRlcnBvbGF0aW9uKX1yZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5LZXlmcmFtZVRyYWNrOiIsZSksdGhpc31yZXR1cm4gdGhpcy5jcmVhdGVJbnRlcnBvbGFudD1lLHRoaXN9Z2V0SW50ZXJwb2xhdGlvbigpe3N3aXRjaCh0aGlzLmNyZWF0ZUludGVycG9sYW50KXtjYXNlIHRoaXMuSW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kRGlzY3JldGU6cmV0dXJuIEdydDtjYXNlIHRoaXMuSW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kTGluZWFyOnJldHVybiBZcnQ7Y2FzZSB0aGlzLkludGVycG9sYW50RmFjdG9yeU1ldGhvZFNtb290aDpyZXR1cm4gcXJ0fX1nZXRWYWx1ZVNpemUoKXtyZXR1cm4gdGhpcy52YWx1ZXMubGVuZ3RoL3RoaXMudGltZXMubGVuZ3RofXNoaWZ0KHQpe2lmKDAhPT10KXtjb25zdCBlPXRoaXMudGltZXM7Zm9yKGxldCBuPTAsbz1lLmxlbmd0aDtuIT09bzsrK24pZVtuXSs9dH1yZXR1cm4gdGhpc31zY2FsZSh0KXtpZigxIT09dCl7Y29uc3QgZT10aGlzLnRpbWVzO2ZvcihsZXQgbj0wLG89ZS5sZW5ndGg7biE9PW87KytuKWVbbl0qPXR9cmV0dXJuIHRoaXN9dHJpbSh0LGUpe2NvbnN0IG49dGhpcy50aW1lcyxvPW4ubGVuZ3RoO2xldCBpPTAsYT1vLTE7Zm9yKDtpIT09byYmbltpXTx0OykrK2k7Zm9yKDstMSE9PWEmJm5bYV0+ZTspLS1hO2lmKCsrYSwwIT09aXx8YSE9PW8pe2k+PWEmJihhPU1hdGgubWF4KGEsMSksaT1hLTEpO2NvbnN0IHQ9dGhpcy5nZXRWYWx1ZVNpemUoKTt0aGlzLnRpbWVzPWt1dC5hcnJheVNsaWNlKG4saSxhKSx0aGlzLnZhbHVlcz1rdXQuYXJyYXlTbGljZSh0aGlzLnZhbHVlcyxpKnQsYSp0KX1yZXR1cm4gdGhpc312YWxpZGF0ZSgpe2xldCB0PSEwO2NvbnN0IGU9dGhpcy5nZXRWYWx1ZVNpemUoKTtlLU1hdGguZmxvb3IoZSkhPTAmJihjb25zb2xlLmVycm9yKCJUSFJFRS5LZXlmcmFtZVRyYWNrOiBJbnZhbGlkIHZhbHVlIHNpemUgaW4gdHJhY2suIix0aGlzKSx0PSExKTtjb25zdCBuPXRoaXMudGltZXMsbz10aGlzLnZhbHVlcyxpPW4ubGVuZ3RoOzA9PT1pJiYoY29uc29sZS5lcnJvcigiVEhSRUUuS2V5ZnJhbWVUcmFjazogVHJhY2sgaXMgZW1wdHkuIix0aGlzKSx0PSExKTtsZXQgYT1udWxsO2ZvcihsZXQgZT0wO2UhPT1pO2UrKyl7Y29uc3Qgbz1uW2VdO2lmKCJudW1iZXIiPT10eXBlb2YgbyYmaXNOYU4obykpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLktleWZyYW1lVHJhY2s6IFRpbWUgaXMgbm90IGEgdmFsaWQgbnVtYmVyLiIsdGhpcyxlLG8pLHQ9ITE7YnJlYWt9aWYobnVsbCE9PWEmJmE+byl7Y29uc29sZS5lcnJvcigiVEhSRUUuS2V5ZnJhbWVUcmFjazogT3V0IG9mIG9yZGVyIGtleXMuIix0aGlzLGUsbyxhKSx0PSExO2JyZWFrfWE9b31pZih2b2lkIDAhPT1vJiZrdXQuaXNUeXBlZEFycmF5KG8pKWZvcihsZXQgZT0wLG49by5sZW5ndGg7ZSE9PW47KytlKXtjb25zdCBuPW9bZV07aWYoaXNOYU4obikpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLktleWZyYW1lVHJhY2s6IFZhbHVlIGlzIG5vdCBhIHZhbGlkIG51bWJlci4iLHRoaXMsZSxuKSx0PSExO2JyZWFrfX1yZXR1cm4gdH1vcHRpbWl6ZSgpe2NvbnN0IHQ9a3V0LmFycmF5U2xpY2UodGhpcy50aW1lcyksZT1rdXQuYXJyYXlTbGljZSh0aGlzLnZhbHVlcyksbj10aGlzLmdldFZhbHVlU2l6ZSgpLG89dGhpcy5nZXRJbnRlcnBvbGF0aW9uKCk9PT1xcnQsaT10Lmxlbmd0aC0xO2xldCBhPTE7Zm9yKGxldCByPTE7cjxpOysrcil7bGV0IGk9ITE7Y29uc3Qgcz10W3JdO2lmKHMhPT10W3IrMV0mJigxIT09cnx8cyE9PXRbMF0pKWlmKG8paT0hMDtlbHNle2NvbnN0IHQ9cipuLG89dC1uLGE9dCtuO2ZvcihsZXQgcj0wO3IhPT1uOysrcil7Y29uc3Qgbj1lW3Qrcl07aWYobiE9PWVbbytyXXx8biE9PWVbYStyXSl7aT0hMDticmVha319fWlmKGkpe2lmKHIhPT1hKXt0W2FdPXRbcl07Y29uc3Qgbz1yKm4saT1hKm47Zm9yKGxldCB0PTA7dCE9PW47Kyt0KWVbaSt0XT1lW28rdF19KythfX1pZihpPjApe3RbYV09dFtpXTtmb3IobGV0IHQ9aSpuLG89YSpuLHI9MDtyIT09bjsrK3IpZVtvK3JdPWVbdCtyXTsrK2F9cmV0dXJuIGEhPT10Lmxlbmd0aD8odGhpcy50aW1lcz1rdXQuYXJyYXlTbGljZSh0LDAsYSksdGhpcy52YWx1ZXM9a3V0LmFycmF5U2xpY2UoZSwwLGEqbikpOih0aGlzLnRpbWVzPXQsdGhpcy52YWx1ZXM9ZSksdGhpc31jbG9uZSgpe2NvbnN0IHQ9a3V0LmFycmF5U2xpY2UodGhpcy50aW1lcywwKSxlPWt1dC5hcnJheVNsaWNlKHRoaXMudmFsdWVzLDApLG49bmV3KDAsdGhpcy5jb25zdHJ1Y3RvcikodGhpcy5uYW1lLHQsZSk7cmV0dXJuIG4uY3JlYXRlSW50ZXJwb2xhbnQ9dGhpcy5jcmVhdGVJbnRlcnBvbGFudCxufX1BdXQucHJvdG90eXBlLlRpbWVCdWZmZXJUeXBlPUZsb2F0MzJBcnJheSxBdXQucHJvdG90eXBlLlZhbHVlQnVmZmVyVHlwZT1GbG9hdDMyQXJyYXksQXV0LnByb3RvdHlwZS5EZWZhdWx0SW50ZXJwb2xhdGlvbj1ZcnQ7Y2xhc3MgVHV0IGV4dGVuZHMgQXV0e31UdXQucHJvdG90eXBlLlZhbHVlVHlwZU5hbWU9ImJvb2wiLFR1dC5wcm90b3R5cGUuVmFsdWVCdWZmZXJUeXBlPUFycmF5LFR1dC5wcm90b3R5cGUuRGVmYXVsdEludGVycG9sYXRpb249R3J0LFR1dC5wcm90b3R5cGUuSW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kTGluZWFyPXZvaWQgMCxUdXQucHJvdG90eXBlLkludGVycG9sYW50RmFjdG9yeU1ldGhvZFNtb290aD12b2lkIDA7Y2xhc3MgTnV0IGV4dGVuZHMgQXV0e31OdXQucHJvdG90eXBlLlZhbHVlVHlwZU5hbWU9ImNvbG9yIjtjbGFzcyB6dXQgZXh0ZW5kcyBBdXR7fXp1dC5wcm90b3R5cGUuVmFsdWVUeXBlTmFtZT0ibnVtYmVyIjtjbGFzcyBJdXQgZXh0ZW5kcyBTdXR7Y29uc3RydWN0b3IodCxlLG4sbyl7c3VwZXIodCxlLG4sbyl9aW50ZXJwb2xhdGVfKHQsZSxuLG8pe2NvbnN0IGk9dGhpcy5yZXN1bHRCdWZmZXIsYT10aGlzLnNhbXBsZVZhbHVlcyxyPXRoaXMudmFsdWVTaXplLHM9KG4tZSkvKG8tZSk7bGV0IGw9dCpyO2ZvcihsZXQgdD1sK3I7bCE9PXQ7bCs9NClQc3Quc2xlcnBGbGF0KGksMCxhLGwtcixhLGwscyk7cmV0dXJuIGl9fWNsYXNzIEh1dCBleHRlbmRzIEF1dHtJbnRlcnBvbGFudEZhY3RvcnlNZXRob2RMaW5lYXIodCl7cmV0dXJuIG5ldyBJdXQodGhpcy50aW1lcyx0aGlzLnZhbHVlcyx0aGlzLmdldFZhbHVlU2l6ZSgpLHQpfX1IdXQucHJvdG90eXBlLlZhbHVlVHlwZU5hbWU9InF1YXRlcm5pb24iLEh1dC5wcm90b3R5cGUuRGVmYXVsdEludGVycG9sYXRpb249WXJ0LEh1dC5wcm90b3R5cGUuSW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kU21vb3RoPXZvaWQgMDtjbGFzcyBGdXQgZXh0ZW5kcyBBdXR7fUZ1dC5wcm90b3R5cGUuVmFsdWVUeXBlTmFtZT0ic3RyaW5nIixGdXQucHJvdG90eXBlLlZhbHVlQnVmZmVyVHlwZT1BcnJheSxGdXQucHJvdG90eXBlLkRlZmF1bHRJbnRlcnBvbGF0aW9uPUdydCxGdXQucHJvdG90eXBlLkludGVycG9sYW50RmFjdG9yeU1ldGhvZExpbmVhcj12b2lkIDAsRnV0LnByb3RvdHlwZS5JbnRlcnBvbGFudEZhY3RvcnlNZXRob2RTbW9vdGg9dm9pZCAwO2NsYXNzIEx1dCBleHRlbmRzIEF1dHt9THV0LnByb3RvdHlwZS5WYWx1ZVR5cGVOYW1lPSJ2ZWN0b3IiO2NsYXNzIEJ1dHtjb25zdHJ1Y3Rvcih0LGU9LTEsbixvPTI1MDApe3RoaXMubmFtZT10LHRoaXMudHJhY2tzPW4sdGhpcy5kdXJhdGlvbj1lLHRoaXMuYmxlbmRNb2RlPW8sdGhpcy51dWlkPWRzdCgpLHRoaXMuZHVyYXRpb248MCYmdGhpcy5yZXNldER1cmF0aW9uKCl9c3RhdGljIHBhcnNlKHQpe2NvbnN0IGU9W10sbj10LnRyYWNrcyxvPTEvKHQuZnBzfHwxKTtmb3IobGV0IHQ9MCxpPW4ubGVuZ3RoO3QhPT1pOysrdCllLnB1c2goVnV0KG5bdF0pLnNjYWxlKG8pKTtjb25zdCBpPW5ldyB0aGlzKHQubmFtZSx0LmR1cmF0aW9uLGUsdC5ibGVuZE1vZGUpO3JldHVybiBpLnV1aWQ9dC51dWlkLGl9c3RhdGljIHRvSlNPTih0KXtjb25zdCBlPVtdLG49dC50cmFja3Msbz17bmFtZTp0Lm5hbWUsZHVyYXRpb246dC5kdXJhdGlvbix0cmFja3M6ZSx1dWlkOnQudXVpZCxibGVuZE1vZGU6dC5ibGVuZE1vZGV9O2ZvcihsZXQgdD0wLG89bi5sZW5ndGg7dCE9PW87Kyt0KWUucHVzaChBdXQudG9KU09OKG5bdF0pKTtyZXR1cm4gb31zdGF0aWMgQ3JlYXRlRnJvbU1vcnBoVGFyZ2V0U2VxdWVuY2UodCxlLG4sbyl7Y29uc3QgaT1lLmxlbmd0aCxhPVtdO2ZvcihsZXQgdD0wO3Q8aTt0Kyspe2xldCByPVtdLHM9W107ci5wdXNoKCh0K2ktMSklaSx0LCh0KzEpJWkpLHMucHVzaCgwLDEsMCk7Y29uc3QgbD1rdXQuZ2V0S2V5ZnJhbWVPcmRlcihyKTtyPWt1dC5zb3J0ZWRBcnJheShyLDEsbCkscz1rdXQuc29ydGVkQXJyYXkocywxLGwpLG98fDAhPT1yWzBdfHwoci5wdXNoKGkpLHMucHVzaChzWzBdKSksYS5wdXNoKG5ldyB6dXQoIi5tb3JwaFRhcmdldEluZmx1ZW5jZXNbIitlW3RdLm5hbWUrIl0iLHIscykuc2NhbGUoMS9uKSl9cmV0dXJuIG5ldyB0aGlzKHQsLTEsYSl9c3RhdGljIGZpbmRCeU5hbWUodCxlKXtsZXQgbj10O2lmKCFBcnJheS5pc0FycmF5KHQpKXtjb25zdCBlPXQ7bj1lLmdlb21ldHJ5JiZlLmdlb21ldHJ5LmFuaW1hdGlvbnN8fGUuYW5pbWF0aW9uc31mb3IobGV0IHQ9MDt0PG4ubGVuZ3RoO3QrKylpZihuW3RdLm5hbWU9PT1lKXJldHVybiBuW3RdO3JldHVybiBudWxsfXN0YXRpYyBDcmVhdGVDbGlwc0Zyb21Nb3JwaFRhcmdldFNlcXVlbmNlcyh0LGUsbil7Y29uc3Qgbz17fSxpPS9eKFtcdy1dKj8pKFtcZF0rKSQvO2ZvcihsZXQgZT0wLG49dC5sZW5ndGg7ZTxuO2UrKyl7Y29uc3Qgbj10W2VdLGE9bi5uYW1lLm1hdGNoKGkpO2lmKGEmJmEubGVuZ3RoPjEpe2NvbnN0IHQ9YVsxXTtsZXQgZT1vW3RdO2V8fChvW3RdPWU9W10pLGUucHVzaChuKX19Y29uc3QgYT1bXTtmb3IoY29uc3QgdCBpbiBvKWEucHVzaCh0aGlzLkNyZWF0ZUZyb21Nb3JwaFRhcmdldFNlcXVlbmNlKHQsb1t0XSxlLG4pKTtyZXR1cm4gYX1zdGF0aWMgcGFyc2VBbmltYXRpb24odCxlKXtpZighdClyZXR1cm4gY29uc29sZS5lcnJvcigiVEhSRUUuQW5pbWF0aW9uQ2xpcDogTm8gYW5pbWF0aW9uIGluIEpTT05Mb2FkZXIgZGF0YS4iKSxudWxsO2NvbnN0IG49ZnVuY3Rpb24odCxlLG4sbyxpKXtpZigwIT09bi5sZW5ndGgpe2NvbnN0IGE9W10scj1bXTtrdXQuZmxhdHRlbkpTT04obixhLHIsbyksMCE9PWEubGVuZ3RoJiZpLnB1c2gobmV3IHQoZSxhLHIpKX19LG89W10saT10Lm5hbWV8fCJkZWZhdWx0IixhPXQuZnBzfHwzMCxyPXQuYmxlbmRNb2RlO2xldCBzPXQubGVuZ3RofHwtMTtjb25zdCBsPXQuaGllcmFyY2h5fHxbXTtmb3IobGV0IHQ9MDt0PGwubGVuZ3RoO3QrKyl7Y29uc3QgaT1sW3RdLmtleXM7aWYoaSYmMCE9PWkubGVuZ3RoKWlmKGlbMF0ubW9ycGhUYXJnZXRzKXtjb25zdCB0PXt9O2xldCBlO2ZvcihlPTA7ZTxpLmxlbmd0aDtlKyspaWYoaVtlXS5tb3JwaFRhcmdldHMpZm9yKGxldCBuPTA7bjxpW2VdLm1vcnBoVGFyZ2V0cy5sZW5ndGg7bisrKXRbaVtlXS5tb3JwaFRhcmdldHNbbl1dPS0xO2Zvcihjb25zdCBuIGluIHQpe2NvbnN0IHQ9W10sYT1bXTtmb3IobGV0IG89MDtvIT09aVtlXS5tb3JwaFRhcmdldHMubGVuZ3RoOysrbyl7Y29uc3Qgbz1pW2VdO3QucHVzaChvLnRpbWUpLGEucHVzaChvLm1vcnBoVGFyZ2V0PT09bj8xOjApfW8ucHVzaChuZXcgenV0KCIubW9ycGhUYXJnZXRJbmZsdWVuY2VbIituKyJdIix0LGEpKX1zPXQubGVuZ3RoKihhfHwxKX1lbHNle2NvbnN0IGE9Ii5ib25lc1siK2VbdF0ubmFtZSsiXSI7bihMdXQsYSsiLnBvc2l0aW9uIixpLCJwb3MiLG8pLG4oSHV0LGErIi5xdWF0ZXJuaW9uIixpLCJyb3QiLG8pLG4oTHV0LGErIi5zY2FsZSIsaSwic2NsIixvKX19aWYoMD09PW8ubGVuZ3RoKXJldHVybiBudWxsO3JldHVybiBuZXcgdGhpcyhpLHMsbyxyKX1yZXNldER1cmF0aW9uKCl7bGV0IHQ9MDtmb3IobGV0IGU9MCxuPXRoaXMudHJhY2tzLmxlbmd0aDtlIT09bjsrK2Upe2NvbnN0IG49dGhpcy50cmFja3NbZV07dD1NYXRoLm1heCh0LG4udGltZXNbbi50aW1lcy5sZW5ndGgtMV0pfXJldHVybiB0aGlzLmR1cmF0aW9uPXQsdGhpc310cmltKCl7Zm9yKGxldCB0PTA7dDx0aGlzLnRyYWNrcy5sZW5ndGg7dCsrKXRoaXMudHJhY2tzW3RdLnRyaW0oMCx0aGlzLmR1cmF0aW9uKTtyZXR1cm4gdGhpc312YWxpZGF0ZSgpe2xldCB0PSEwO2ZvcihsZXQgZT0wO2U8dGhpcy50cmFja3MubGVuZ3RoO2UrKyl0PXQmJnRoaXMudHJhY2tzW2VdLnZhbGlkYXRlKCk7cmV0dXJuIHR9b3B0aW1pemUoKXtmb3IobGV0IHQ9MDt0PHRoaXMudHJhY2tzLmxlbmd0aDt0KyspdGhpcy50cmFja3NbdF0ub3B0aW1pemUoKTtyZXR1cm4gdGhpc31jbG9uZSgpe2NvbnN0IHQ9W107Zm9yKGxldCBlPTA7ZTx0aGlzLnRyYWNrcy5sZW5ndGg7ZSsrKXQucHVzaCh0aGlzLnRyYWNrc1tlXS5jbG9uZSgpKTtyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IodGhpcy5uYW1lLHRoaXMuZHVyYXRpb24sdCx0aGlzLmJsZW5kTW9kZSl9dG9KU09OKCl7cmV0dXJuIHRoaXMuY29uc3RydWN0b3IudG9KU09OKHRoaXMpfX1mdW5jdGlvbiBWdXQodCl7aWYodm9pZCAwPT09dC50eXBlKXRocm93IG5ldyBFcnJvcigiVEhSRUUuS2V5ZnJhbWVUcmFjazogdHJhY2sgdHlwZSB1bmRlZmluZWQsIGNhbiBub3QgcGFyc2UiKTtjb25zdCBlPShmdW5jdGlvbiBuKHQpe3N3aXRjaCh0LnRvTG93ZXJDYXNlKCkpe2Nhc2Uic2NhbGFyIjpjYXNlImRvdWJsZSI6Y2FzZSJmbG9hdCI6Y2FzZSJudW1iZXIiOmNhc2UiaW50ZWdlciI6cmV0dXJuIHp1dDtjYXNlInZlY3RvciI6Y2FzZSJ2ZWN0b3IyIjpjYXNlInZlY3RvcjMiOmNhc2UidmVjdG9yNCI6cmV0dXJuIEx1dDtjYXNlImNvbG9yIjpyZXR1cm4gTnV0O2Nhc2UicXVhdGVybmlvbiI6cmV0dXJuIEh1dDtjYXNlImJvb2wiOmNhc2UiYm9vbGVhbiI6cmV0dXJuIFR1dDtjYXNlInN0cmluZyI6cmV0dXJuIEZ1dH10aHJvdyBuZXcgRXJyb3IoIlRIUkVFLktleWZyYW1lVHJhY2s6IFVuc3VwcG9ydGVkIHR5cGVOYW1lOiAiK3QpfSkodC50eXBlKTtpZih2b2lkIDA9PT10LnRpbWVzKXtjb25zdCBlPVtdLG49W107a3V0LmZsYXR0ZW5KU09OKHQua2V5cyxlLG4sInZhbHVlIiksdC50aW1lcz1lLHQudmFsdWVzPW59cmV0dXJuIHZvaWQgMCE9PWUucGFyc2U/ZS5wYXJzZSh0KTpuZXcgZSh0Lm5hbWUsdC50aW1lcyx0LnZhbHVlcyx0LmludGVycG9sYXRpb24pfWNvbnN0IGp1dD17ZW5hYmxlZDohMSxmaWxlczp7fSxhZGQ6ZnVuY3Rpb24odCxlKXshMSE9PXRoaXMuZW5hYmxlZCYmKHRoaXMuZmlsZXNbdF09ZSl9LGdldDpmdW5jdGlvbih0KXtpZighMSE9PXRoaXMuZW5hYmxlZClyZXR1cm4gdGhpcy5maWxlc1t0XX0scmVtb3ZlOmZ1bmN0aW9uKHQpe2RlbGV0ZSB0aGlzLmZpbGVzW3RdfSxjbGVhcjpmdW5jdGlvbigpe3RoaXMuZmlsZXM9e319fTtjb25zdCBVdXQ9bmV3IGNsYXNze2NvbnN0cnVjdG9yKHQsZSxuKXtjb25zdCBvPXRoaXM7bGV0IGksYT0hMSxyPTAscz0wO2NvbnN0IGw9W107dGhpcy5vblN0YXJ0PXZvaWQgMCx0aGlzLm9uTG9hZD10LHRoaXMub25Qcm9ncmVzcz1lLHRoaXMub25FcnJvcj1uLHRoaXMuaXRlbVN0YXJ0PWZ1bmN0aW9uKHQpe3MrKywhMT09PWEmJnZvaWQgMCE9PW8ub25TdGFydCYmby5vblN0YXJ0KHQscixzKSxhPSEwfSx0aGlzLml0ZW1FbmQ9ZnVuY3Rpb24odCl7cisrLHZvaWQgMCE9PW8ub25Qcm9ncmVzcyYmby5vblByb2dyZXNzKHQscixzKSxyPT09cyYmKGE9ITEsdm9pZCAwIT09by5vbkxvYWQmJm8ub25Mb2FkKCkpfSx0aGlzLml0ZW1FcnJvcj1mdW5jdGlvbih0KXt2b2lkIDAhPT1vLm9uRXJyb3ImJm8ub25FcnJvcih0KX0sdGhpcy5yZXNvbHZlVVJMPWZ1bmN0aW9uKHQpe3JldHVybiBpP2kodCk6dH0sdGhpcy5zZXRVUkxNb2RpZmllcj1mdW5jdGlvbih0KXtyZXR1cm4gaT10LHRoaXN9LHRoaXMuYWRkSGFuZGxlcj1mdW5jdGlvbih0LGUpe3JldHVybiBsLnB1c2godCxlKSx0aGlzfSx0aGlzLnJlbW92ZUhhbmRsZXI9ZnVuY3Rpb24odCl7Y29uc3QgZT1sLmluZGV4T2YodCk7cmV0dXJuLTEhPT1lJiZsLnNwbGljZShlLDIpLHRoaXN9LHRoaXMuZ2V0SGFuZGxlcj1mdW5jdGlvbih0KXtmb3IobGV0IGU9MCxuPWwubGVuZ3RoO2U8bjtlKz0yKXtjb25zdCBuPWxbZV0sbz1sW2UrMV07aWYobi5nbG9iYWwmJihuLmxhc3RJbmRleD0wKSxuLnRlc3QodCkpcmV0dXJuIG99cmV0dXJuIG51bGx9fX07Y2xhc3MgV3V0e2NvbnN0cnVjdG9yKHQpe3RoaXMubWFuYWdlcj12b2lkIDAhPT10P3Q6VXV0LHRoaXMuY3Jvc3NPcmlnaW49ImFub255bW91cyIsdGhpcy53aXRoQ3JlZGVudGlhbHM9ITEsdGhpcy5wYXRoPSIiLHRoaXMucmVzb3VyY2VQYXRoPSIiLHRoaXMucmVxdWVzdEhlYWRlcj17fX1sb2FkKCl7fWxvYWRBc3luYyh0LGUpe2NvbnN0IG49dGhpcztyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKG8saSl7bi5sb2FkKHQsbyxlLGkpfSkpfXBhcnNlKCl7fXNldENyb3NzT3JpZ2luKHQpe3JldHVybiB0aGlzLmNyb3NzT3JpZ2luPXQsdGhpc31zZXRXaXRoQ3JlZGVudGlhbHModCl7cmV0dXJuIHRoaXMud2l0aENyZWRlbnRpYWxzPXQsdGhpc31zZXRQYXRoKHQpe3JldHVybiB0aGlzLnBhdGg9dCx0aGlzfXNldFJlc291cmNlUGF0aCh0KXtyZXR1cm4gdGhpcy5yZXNvdXJjZVBhdGg9dCx0aGlzfXNldFJlcXVlc3RIZWFkZXIodCl7cmV0dXJuIHRoaXMucmVxdWVzdEhlYWRlcj10LHRoaXN9fWNvbnN0IEd1dD17fTtjbGFzcyBZdXQgZXh0ZW5kcyBXdXR7Y29uc3RydWN0b3IodCl7c3VwZXIodCl9bG9hZCh0LGUsbixvKXt2b2lkIDA9PT10JiYodD0iIiksdm9pZCAwIT09dGhpcy5wYXRoJiYodD10aGlzLnBhdGgrdCksdD10aGlzLm1hbmFnZXIucmVzb2x2ZVVSTCh0KTtjb25zdCBpPXRoaXMsYT1qdXQuZ2V0KHQpO2lmKHZvaWQgMCE9PWEpcmV0dXJuIGkubWFuYWdlci5pdGVtU3RhcnQodCksc2V0VGltZW91dCgoZnVuY3Rpb24oKXtlJiZlKGEpLGkubWFuYWdlci5pdGVtRW5kKHQpfSksMCksYTtpZih2b2lkIDAhPT1HdXRbdF0pcmV0dXJuIHZvaWQgR3V0W3RdLnB1c2goe29uTG9hZDplLG9uUHJvZ3Jlc3M6bixvbkVycm9yOm99KTtjb25zdCByPXQubWF0Y2goL15kYXRhOiguKj8pKDtiYXNlNjQpPywoLiopJC8pO2xldCBzO2lmKHIpe2NvbnN0IG49clsxXSxhPSEhclsyXTtsZXQgcz1yWzNdO3M9ZGVjb2RlVVJJQ29tcG9uZW50KHMpLGEmJihzPWF0b2IocykpO3RyeXtsZXQgbztjb25zdCBhPSh0aGlzLnJlc3BvbnNlVHlwZXx8IiIpLnRvTG93ZXJDYXNlKCk7c3dpdGNoKGEpe2Nhc2UiYXJyYXlidWZmZXIiOmNhc2UiYmxvYiI6Y29uc3QgdD1uZXcgVWludDhBcnJheShzLmxlbmd0aCk7Zm9yKGxldCBlPTA7ZTxzLmxlbmd0aDtlKyspdFtlXT1zLmNoYXJDb2RlQXQoZSk7bz0iYmxvYiI9PT1hP25ldyBCbG9iKFt0LmJ1ZmZlcl0se3R5cGU6bn0pOnQuYnVmZmVyO2JyZWFrO2Nhc2UiZG9jdW1lbnQiOmNvbnN0IGU9bmV3IERPTVBhcnNlcjtvPWUucGFyc2VGcm9tU3RyaW5nKHMsbik7YnJlYWs7Y2FzZSJqc29uIjpvPUpTT04ucGFyc2Uocyk7YnJlYWs7ZGVmYXVsdDpvPXN9c2V0VGltZW91dCgoZnVuY3Rpb24oKXtlJiZlKG8pLGkubWFuYWdlci5pdGVtRW5kKHQpfSksMCl9Y2F0Y2goZSl7c2V0VGltZW91dCgoZnVuY3Rpb24oKXtvJiZvKGUpLGkubWFuYWdlci5pdGVtRXJyb3IodCksaS5tYW5hZ2VyLml0ZW1FbmQodCl9KSwwKX19ZWxzZXtHdXRbdF09W10sR3V0W3RdLnB1c2goe29uTG9hZDplLG9uUHJvZ3Jlc3M6bixvbkVycm9yOm99KSxzPW5ldyBYTUxIdHRwUmVxdWVzdCxzLm9wZW4oIkdFVCIsdCwhMCkscy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwoZnVuY3Rpb24oZSl7Y29uc3Qgbj10aGlzLnJlc3BvbnNlLG89R3V0W3RdO2lmKGRlbGV0ZSBHdXRbdF0sMjAwPT09dGhpcy5zdGF0dXN8fDA9PT10aGlzLnN0YXR1cyl7MD09PXRoaXMuc3RhdHVzJiZjb25zb2xlLndhcm4oIlRIUkVFLkZpbGVMb2FkZXI6IEhUVFAgU3RhdHVzIDAgcmVjZWl2ZWQuIiksanV0LmFkZCh0LG4pO2ZvcihsZXQgdD0wLGU9by5sZW5ndGg7dDxlO3QrKyl7Y29uc3QgZT1vW3RdO2Uub25Mb2FkJiZlLm9uTG9hZChuKX1pLm1hbmFnZXIuaXRlbUVuZCh0KX1lbHNle2ZvcihsZXQgdD0wLG49by5sZW5ndGg7dDxuO3QrKyl7Y29uc3Qgbj1vW3RdO24ub25FcnJvciYmbi5vbkVycm9yKGUpfWkubWFuYWdlci5pdGVtRXJyb3IodCksaS5tYW5hZ2VyLml0ZW1FbmQodCl9fSksITEpLHMuYWRkRXZlbnRMaXN0ZW5lcigicHJvZ3Jlc3MiLChmdW5jdGlvbihlKXtjb25zdCBuPUd1dFt0XTtmb3IobGV0IHQ9MCxvPW4ubGVuZ3RoO3Q8bzt0Kyspe2NvbnN0IG89blt0XTtvLm9uUHJvZ3Jlc3MmJm8ub25Qcm9ncmVzcyhlKX19KSwhMSkscy5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIsKGZ1bmN0aW9uKGUpe2NvbnN0IG49R3V0W3RdO2RlbGV0ZSBHdXRbdF07Zm9yKGxldCB0PTAsbz1uLmxlbmd0aDt0PG87dCsrKXtjb25zdCBvPW5bdF07by5vbkVycm9yJiZvLm9uRXJyb3IoZSl9aS5tYW5hZ2VyLml0ZW1FcnJvcih0KSxpLm1hbmFnZXIuaXRlbUVuZCh0KX0pLCExKSxzLmFkZEV2ZW50TGlzdGVuZXIoImFib3J0IiwoZnVuY3Rpb24oZSl7Y29uc3Qgbj1HdXRbdF07ZGVsZXRlIEd1dFt0XTtmb3IobGV0IHQ9MCxvPW4ubGVuZ3RoO3Q8bzt0Kyspe2NvbnN0IG89blt0XTtvLm9uRXJyb3ImJm8ub25FcnJvcihlKX1pLm1hbmFnZXIuaXRlbUVycm9yKHQpLGkubWFuYWdlci5pdGVtRW5kKHQpfSksITEpLHZvaWQgMCE9PXRoaXMucmVzcG9uc2VUeXBlJiYocy5yZXNwb25zZVR5cGU9dGhpcy5yZXNwb25zZVR5cGUpLHZvaWQgMCE9PXRoaXMud2l0aENyZWRlbnRpYWxzJiYocy53aXRoQ3JlZGVudGlhbHM9dGhpcy53aXRoQ3JlZGVudGlhbHMpLHMub3ZlcnJpZGVNaW1lVHlwZSYmcy5vdmVycmlkZU1pbWVUeXBlKHZvaWQgMCE9PXRoaXMubWltZVR5cGU/dGhpcy5taW1lVHlwZToidGV4dC9wbGFpbiIpO2Zvcihjb25zdCB0IGluIHRoaXMucmVxdWVzdEhlYWRlcilzLnNldFJlcXVlc3RIZWFkZXIodCx0aGlzLnJlcXVlc3RIZWFkZXJbdF0pO3Muc2VuZChudWxsKX1yZXR1cm4gaS5tYW5hZ2VyLml0ZW1TdGFydCh0KSxzfXNldFJlc3BvbnNlVHlwZSh0KXtyZXR1cm4gdGhpcy5yZXNwb25zZVR5cGU9dCx0aGlzfXNldE1pbWVUeXBlKHQpe3JldHVybiB0aGlzLm1pbWVUeXBlPXQsdGhpc319Y2xhc3MgcXV0IGV4dGVuZHMgV3V0e2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpfWxvYWQodCxlLG4sbyl7dm9pZCAwIT09dGhpcy5wYXRoJiYodD10aGlzLnBhdGgrdCksdD10aGlzLm1hbmFnZXIucmVzb2x2ZVVSTCh0KTtjb25zdCBpPXRoaXMsYT1qdXQuZ2V0KHQpO2lmKHZvaWQgMCE9PWEpcmV0dXJuIGkubWFuYWdlci5pdGVtU3RhcnQodCksc2V0VGltZW91dCgoZnVuY3Rpb24oKXtlJiZlKGEpLGkubWFuYWdlci5pdGVtRW5kKHQpfSksMCksYTtjb25zdCByPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIsImltZyIpO2Z1bmN0aW9uIHMoKXtyLnJlbW92ZUV2ZW50TGlzdGVuZXIoImxvYWQiLHMsITEpLHIucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZXJyb3IiLGwsITEpLGp1dC5hZGQodCx0aGlzKSxlJiZlKHRoaXMpLGkubWFuYWdlci5pdGVtRW5kKHQpfWZ1bmN0aW9uIGwoZSl7ci5yZW1vdmVFdmVudExpc3RlbmVyKCJsb2FkIixzLCExKSxyLnJlbW92ZUV2ZW50TGlzdGVuZXIoImVycm9yIixsLCExKSxvJiZvKGUpLGkubWFuYWdlci5pdGVtRXJyb3IodCksaS5tYW5hZ2VyLml0ZW1FbmQodCl9cmV0dXJuIHIuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIscywhMSksci5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIsbCwhMSksImRhdGE6IiE9PXQuc3Vic3RyKDAsNSkmJnZvaWQgMCE9PXRoaXMuY3Jvc3NPcmlnaW4mJihyLmNyb3NzT3JpZ2luPXRoaXMuY3Jvc3NPcmlnaW4pLGkubWFuYWdlci5pdGVtU3RhcnQodCksci5zcmM9dCxyfX1jbGFzcyBadXQgZXh0ZW5kcyBXdXR7Y29uc3RydWN0b3IodCl7c3VwZXIodCl9bG9hZCh0LGUsbixvKXtjb25zdCBpPW5ldyBMY3QsYT1uZXcgcXV0KHRoaXMubWFuYWdlcik7YS5zZXRDcm9zc09yaWdpbih0aGlzLmNyb3NzT3JpZ2luKSxhLnNldFBhdGgodGhpcy5wYXRoKTtsZXQgcj0wO2Z1bmN0aW9uIHMobil7YS5sb2FkKHRbbl0sKGZ1bmN0aW9uKHQpe2kuaW1hZ2VzW25dPXQscisrLDY9PT1yJiYoaS5uZWVkc1VwZGF0ZT0hMCxlJiZlKGkpKX0pLHZvaWQgMCxvKX1mb3IobGV0IGU9MDtlPHQubGVuZ3RoOysrZSlzKGUpO3JldHVybiBpfX1jbGFzcyBYdXQgZXh0ZW5kcyBXdXR7Y29uc3RydWN0b3IodCl7c3VwZXIodCl9bG9hZCh0LGUsbixvKXtjb25zdCBpPW5ldyBDc3QsYT1uZXcgcXV0KHRoaXMubWFuYWdlcik7cmV0dXJuIGEuc2V0Q3Jvc3NPcmlnaW4odGhpcy5jcm9zc09yaWdpbiksYS5zZXRQYXRoKHRoaXMucGF0aCksYS5sb2FkKHQsKGZ1bmN0aW9uKG4pe2kuaW1hZ2U9bjtjb25zdCBvPXQuc2VhcmNoKC9cLmpwZT9nKCR8XD8pL2kpPjB8fDA9PT10LnNlYXJjaCgvXmRhdGFcOmltYWdlXC9qcGVnLyk7aS5mb3JtYXQ9bz9WcnQ6anJ0LGkubmVlZHNVcGRhdGU9ITAsdm9pZCAwIT09ZSYmZShpKX0pLG4sbyksaX19Y2xhc3MgS3V0IGV4dGVuZHMgUmZ0e2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLnR5cGU9IkN1cnZlUGF0aCIsdGhpcy5jdXJ2ZXM9W10sdGhpcy5hdXRvQ2xvc2U9ITF9YWRkKHQpe3RoaXMuY3VydmVzLnB1c2godCl9Y2xvc2VQYXRoKCl7Y29uc3QgdD10aGlzLmN1cnZlc1swXS5nZXRQb2ludCgwKSxlPXRoaXMuY3VydmVzW3RoaXMuY3VydmVzLmxlbmd0aC0xXS5nZXRQb2ludCgxKTt0LmVxdWFscyhlKXx8dGhpcy5jdXJ2ZXMucHVzaChuZXcgV2Z0KGUsdCkpfWdldFBvaW50KHQpe2NvbnN0IGU9dCp0aGlzLmdldExlbmd0aCgpLG49dGhpcy5nZXRDdXJ2ZUxlbmd0aHMoKTtsZXQgbz0wO2Zvcig7bzxuLmxlbmd0aDspe2lmKG5bb10+PWUpe2NvbnN0IHQ9bltvXS1lLGk9dGhpcy5jdXJ2ZXNbb10sYT1pLmdldExlbmd0aCgpO3JldHVybiBpLmdldFBvaW50QXQoMD09PWE/MDoxLXQvYSl9bysrfXJldHVybiBudWxsfWdldExlbmd0aCgpe2NvbnN0IHQ9dGhpcy5nZXRDdXJ2ZUxlbmd0aHMoKTtyZXR1cm4gdFt0Lmxlbmd0aC0xXX11cGRhdGVBcmNMZW5ndGhzKCl7dGhpcy5uZWVkc1VwZGF0ZT0hMCx0aGlzLmNhY2hlTGVuZ3Rocz1udWxsLHRoaXMuZ2V0Q3VydmVMZW5ndGhzKCl9Z2V0Q3VydmVMZW5ndGhzKCl7aWYodGhpcy5jYWNoZUxlbmd0aHMmJnRoaXMuY2FjaGVMZW5ndGhzLmxlbmd0aD09PXRoaXMuY3VydmVzLmxlbmd0aClyZXR1cm4gdGhpcy5jYWNoZUxlbmd0aHM7Y29uc3QgdD1bXTtsZXQgZT0wO2ZvcihsZXQgbj0wLG89dGhpcy5jdXJ2ZXMubGVuZ3RoO248bztuKyspZSs9dGhpcy5jdXJ2ZXNbbl0uZ2V0TGVuZ3RoKCksdC5wdXNoKGUpO3JldHVybiB0aGlzLmNhY2hlTGVuZ3Rocz10LHR9Z2V0U3BhY2VkUG9pbnRzKHQ9NDApe2NvbnN0IGU9W107Zm9yKGxldCBuPTA7bjw9dDtuKyspZS5wdXNoKHRoaXMuZ2V0UG9pbnQobi90KSk7cmV0dXJuIHRoaXMuYXV0b0Nsb3NlJiZlLnB1c2goZVswXSksZX1nZXRQb2ludHModD0xMil7Y29uc3QgZT1bXTtsZXQgbjtmb3IobGV0IG89MCxpPXRoaXMuY3VydmVzO288aS5sZW5ndGg7bysrKXtjb25zdCBhPWlbb10scj1hLmdldFBvaW50cyhhJiZhLmlzRWxsaXBzZUN1cnZlPzIqdDphJiYoYS5pc0xpbmVDdXJ2ZXx8YS5pc0xpbmVDdXJ2ZTMpPzE6YSYmYS5pc1NwbGluZUN1cnZlP3QqYS5wb2ludHMubGVuZ3RoOnQpO2ZvcihsZXQgdD0wO3Q8ci5sZW5ndGg7dCsrKXtjb25zdCBvPXJbdF07biYmbi5lcXVhbHMobyl8fChlLnB1c2gobyksbj1vKX19cmV0dXJuIHRoaXMuYXV0b0Nsb3NlJiZlLmxlbmd0aD4xJiYhZVtlLmxlbmd0aC0xXS5lcXVhbHMoZVswXSkmJmUucHVzaChlWzBdKSxlfWNvcHkodCl7c3VwZXIuY29weSh0KSx0aGlzLmN1cnZlcz1bXTtmb3IobGV0IGU9MCxuPXQuY3VydmVzLmxlbmd0aDtlPG47ZSsrKXt0aGlzLmN1cnZlcy5wdXNoKHQuY3VydmVzW2VdLmNsb25lKCkpfXJldHVybiB0aGlzLmF1dG9DbG9zZT10LmF1dG9DbG9zZSx0aGlzfXRvSlNPTigpe2NvbnN0IHQ9c3VwZXIudG9KU09OKCk7dC5hdXRvQ2xvc2U9dGhpcy5hdXRvQ2xvc2UsdC5jdXJ2ZXM9W107Zm9yKGxldCBlPTAsbj10aGlzLmN1cnZlcy5sZW5ndGg7ZTxuO2UrKyl7dC5jdXJ2ZXMucHVzaCh0aGlzLmN1cnZlc1tlXS50b0pTT04oKSl9cmV0dXJuIHR9ZnJvbUpTT04odCl7c3VwZXIuZnJvbUpTT04odCksdGhpcy5hdXRvQ2xvc2U9dC5hdXRvQ2xvc2UsdGhpcy5jdXJ2ZXM9W107Zm9yKGxldCBlPTAsbj10LmN1cnZlcy5sZW5ndGg7ZTxuO2UrKyl7Y29uc3Qgbj10LmN1cnZlc1tlXTt0aGlzLmN1cnZlcy5wdXNoKChuZXcgWmZ0W24udHlwZV0pLmZyb21KU09OKG4pKX1yZXR1cm4gdGhpc319Y2xhc3MgSnV0IGV4dGVuZHMgS3V0e2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy50eXBlPSJQYXRoIix0aGlzLmN1cnJlbnRQb2ludD1uZXcgZ3N0LHQmJnRoaXMuc2V0RnJvbVBvaW50cyh0KX1zZXRGcm9tUG9pbnRzKHQpe3RoaXMubW92ZVRvKHRbMF0ueCx0WzBdLnkpO2ZvcihsZXQgZT0xLG49dC5sZW5ndGg7ZTxuO2UrKyl0aGlzLmxpbmVUbyh0W2VdLngsdFtlXS55KTtyZXR1cm4gdGhpc31tb3ZlVG8odCxlKXtyZXR1cm4gdGhpcy5jdXJyZW50UG9pbnQuc2V0KHQsZSksdGhpc31saW5lVG8odCxlKXtjb25zdCBuPW5ldyBXZnQodGhpcy5jdXJyZW50UG9pbnQuY2xvbmUoKSxuZXcgZ3N0KHQsZSkpO3JldHVybiB0aGlzLmN1cnZlcy5wdXNoKG4pLHRoaXMuY3VycmVudFBvaW50LnNldCh0LGUpLHRoaXN9cXVhZHJhdGljQ3VydmVUbyh0LGUsbixvKXtjb25zdCBpPW5ldyBHZnQodGhpcy5jdXJyZW50UG9pbnQuY2xvbmUoKSxuZXcgZ3N0KHQsZSksbmV3IGdzdChuLG8pKTtyZXR1cm4gdGhpcy5jdXJ2ZXMucHVzaChpKSx0aGlzLmN1cnJlbnRQb2ludC5zZXQobixvKSx0aGlzfWJlemllckN1cnZlVG8odCxlLG4sbyxpLGEpe2NvbnN0IHI9bmV3IGpmdCh0aGlzLmN1cnJlbnRQb2ludC5jbG9uZSgpLG5ldyBnc3QodCxlKSxuZXcgZ3N0KG4sbyksbmV3IGdzdChpLGEpKTtyZXR1cm4gdGhpcy5jdXJ2ZXMucHVzaChyKSx0aGlzLmN1cnJlbnRQb2ludC5zZXQoaSxhKSx0aGlzfXNwbGluZVRocnUodCl7Y29uc3QgZT1bdGhpcy5jdXJyZW50UG9pbnQuY2xvbmUoKV0uY29uY2F0KHQpLG49bmV3IHFmdChlKTtyZXR1cm4gdGhpcy5jdXJ2ZXMucHVzaChuKSx0aGlzLmN1cnJlbnRQb2ludC5jb3B5KHRbdC5sZW5ndGgtMV0pLHRoaXN9YXJjKHQsZSxuLG8saSxhKXtyZXR1cm4gdGhpcy5hYnNhcmModCt0aGlzLmN1cnJlbnRQb2ludC54LGUrdGhpcy5jdXJyZW50UG9pbnQueSxuLG8saSxhKSx0aGlzfWFic2FyYyh0LGUsbixvLGksYSl7cmV0dXJuIHRoaXMuYWJzZWxsaXBzZSh0LGUsbixuLG8saSxhKSx0aGlzfWVsbGlwc2UodCxlLG4sbyxpLGEscixzKXtyZXR1cm4gdGhpcy5hYnNlbGxpcHNlKHQrdGhpcy5jdXJyZW50UG9pbnQueCxlK3RoaXMuY3VycmVudFBvaW50LnksbixvLGksYSxyLHMpLHRoaXN9YWJzZWxsaXBzZSh0LGUsbixvLGksYSxyLHMpe2NvbnN0IGw9bmV3IEVmdCh0LGUsbixvLGksYSxyLHMpO2lmKHRoaXMuY3VydmVzLmxlbmd0aD4wKXtjb25zdCB0PWwuZ2V0UG9pbnQoMCk7dC5lcXVhbHModGhpcy5jdXJyZW50UG9pbnQpfHx0aGlzLmxpbmVUbyh0LngsdC55KX10aGlzLmN1cnZlcy5wdXNoKGwpO2NvbnN0IGM9bC5nZXRQb2ludCgxKTtyZXR1cm4gdGhpcy5jdXJyZW50UG9pbnQuY29weShjKSx0aGlzfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5jdXJyZW50UG9pbnQuY29weSh0LmN1cnJlbnRQb2ludCksdGhpc310b0pTT04oKXtjb25zdCB0PXN1cGVyLnRvSlNPTigpO3JldHVybiB0LmN1cnJlbnRQb2ludD10aGlzLmN1cnJlbnRQb2ludC50b0FycmF5KCksdH1mcm9tSlNPTih0KXtyZXR1cm4gc3VwZXIuZnJvbUpTT04odCksdGhpcy5jdXJyZW50UG9pbnQuZnJvbUFycmF5KHQuY3VycmVudFBvaW50KSx0aGlzfX1jbGFzcyBRdXQgZXh0ZW5kcyBKdXR7Y29uc3RydWN0b3IodCl7c3VwZXIodCksdGhpcy51dWlkPWRzdCgpLHRoaXMudHlwZT0iU2hhcGUiLHRoaXMuaG9sZXM9W119Z2V0UG9pbnRzSG9sZXModCl7Y29uc3QgZT1bXTtmb3IobGV0IG49MCxvPXRoaXMuaG9sZXMubGVuZ3RoO248bztuKyspZVtuXT10aGlzLmhvbGVzW25dLmdldFBvaW50cyh0KTtyZXR1cm4gZX1leHRyYWN0UG9pbnRzKHQpe3JldHVybntzaGFwZTp0aGlzLmdldFBvaW50cyh0KSxob2xlczp0aGlzLmdldFBvaW50c0hvbGVzKHQpfX1jb3B5KHQpe3N1cGVyLmNvcHkodCksdGhpcy5ob2xlcz1bXTtmb3IobGV0IGU9MCxuPXQuaG9sZXMubGVuZ3RoO2U8bjtlKyspe3RoaXMuaG9sZXMucHVzaCh0LmhvbGVzW2VdLmNsb25lKCkpfXJldHVybiB0aGlzfXRvSlNPTigpe2NvbnN0IHQ9c3VwZXIudG9KU09OKCk7dC51dWlkPXRoaXMudXVpZCx0LmhvbGVzPVtdO2ZvcihsZXQgZT0wLG49dGhpcy5ob2xlcy5sZW5ndGg7ZTxuO2UrKyl7dC5ob2xlcy5wdXNoKHRoaXMuaG9sZXNbZV0udG9KU09OKCkpfXJldHVybiB0fWZyb21KU09OKHQpe3N1cGVyLmZyb21KU09OKHQpLHRoaXMudXVpZD10LnV1aWQsdGhpcy5ob2xlcz1bXTtmb3IobGV0IGU9MCxuPXQuaG9sZXMubGVuZ3RoO2U8bjtlKyspe2NvbnN0IG49dC5ob2xlc1tlXTt0aGlzLmhvbGVzLnB1c2goKG5ldyBKdXQpLmZyb21KU09OKG4pKX1yZXR1cm4gdGhpc319Y2xhc3MgJHV0IGV4dGVuZHMgU2x0e2NvbnN0cnVjdG9yKHQsZT0xKXtzdXBlcigpLHRoaXMudHlwZT0iTGlnaHQiLHRoaXMuY29sb3I9bmV3IFpsdCh0KSx0aGlzLmludGVuc2l0eT1lfWRpc3Bvc2UoKXt9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmNvbG9yLmNvcHkodC5jb2xvciksdGhpcy5pbnRlbnNpdHk9dC5pbnRlbnNpdHksdGhpc310b0pTT04odCl7Y29uc3QgZT1zdXBlci50b0pTT04odCk7cmV0dXJuIGUub2JqZWN0LmNvbG9yPXRoaXMuY29sb3IuZ2V0SGV4KCksZS5vYmplY3QuaW50ZW5zaXR5PXRoaXMuaW50ZW5zaXR5LHZvaWQgMCE9PXRoaXMuZ3JvdW5kQ29sb3ImJihlLm9iamVjdC5ncm91bmRDb2xvcj10aGlzLmdyb3VuZENvbG9yLmdldEhleCgpKSx2b2lkIDAhPT10aGlzLmRpc3RhbmNlJiYoZS5vYmplY3QuZGlzdGFuY2U9dGhpcy5kaXN0YW5jZSksdm9pZCAwIT09dGhpcy5hbmdsZSYmKGUub2JqZWN0LmFuZ2xlPXRoaXMuYW5nbGUpLHZvaWQgMCE9PXRoaXMuZGVjYXkmJihlLm9iamVjdC5kZWNheT10aGlzLmRlY2F5KSx2b2lkIDAhPT10aGlzLnBlbnVtYnJhJiYoZS5vYmplY3QucGVudW1icmE9dGhpcy5wZW51bWJyYSksdm9pZCAwIT09dGhpcy5zaGFkb3cmJihlLm9iamVjdC5zaGFkb3c9dGhpcy5zaGFkb3cudG9KU09OKCkpLGV9fSR1dC5wcm90b3R5cGUuaXNMaWdodD0hMDsoY2xhc3MgZXh0ZW5kcyAkdXR7Y29uc3RydWN0b3IodCxlLG4pe3N1cGVyKHQsbiksdGhpcy50eXBlPSJIZW1pc3BoZXJlTGlnaHQiLHRoaXMucG9zaXRpb24uY29weShTbHQuRGVmYXVsdFVwKSx0aGlzLnVwZGF0ZU1hdHJpeCgpLHRoaXMuZ3JvdW5kQ29sb3I9bmV3IFpsdChlKX1jb3B5KHQpe3JldHVybiAkdXQucHJvdG90eXBlLmNvcHkuY2FsbCh0aGlzLHQpLHRoaXMuZ3JvdW5kQ29sb3IuY29weSh0Lmdyb3VuZENvbG9yKSx0aGlzfX0pLnByb3RvdHlwZS5pc0hlbWlzcGhlcmVMaWdodD0hMDtjb25zdCB0Z3Q9bmV3IG9sdCxlZ3Q9bmV3IHdzdCxuZ3Q9bmV3IHdzdDtjbGFzcyBvZ3R7Y29uc3RydWN0b3IodCl7dGhpcy5jYW1lcmE9dCx0aGlzLmJpYXM9MCx0aGlzLm5vcm1hbEJpYXM9MCx0aGlzLnJhZGl1cz0xLHRoaXMubWFwU2l6ZT1uZXcgZ3N0KDUxMiw1MTIpLHRoaXMubWFwPW51bGwsdGhpcy5tYXBQYXNzPW51bGwsdGhpcy5tYXRyaXg9bmV3IG9sdCx0aGlzLmF1dG9VcGRhdGU9ITAsdGhpcy5uZWVkc1VwZGF0ZT0hMSx0aGlzLl9mcnVzdHVtPW5ldyBxY3QsdGhpcy5fZnJhbWVFeHRlbnRzPW5ldyBnc3QoMSwxKSx0aGlzLl92aWV3cG9ydENvdW50PTEsdGhpcy5fdmlld3BvcnRzPVtuZXcgdnN0KDAsMCwxLDEpXX1nZXRWaWV3cG9ydENvdW50KCl7cmV0dXJuIHRoaXMuX3ZpZXdwb3J0Q291bnR9Z2V0RnJ1c3R1bSgpe3JldHVybiB0aGlzLl9mcnVzdHVtfXVwZGF0ZU1hdHJpY2VzKHQpe2NvbnN0IGU9dGhpcy5jYW1lcmEsbj10aGlzLm1hdHJpeDtlZ3Quc2V0RnJvbU1hdHJpeFBvc2l0aW9uKHQubWF0cml4V29ybGQpLGUucG9zaXRpb24uY29weShlZ3QpLG5ndC5zZXRGcm9tTWF0cml4UG9zaXRpb24odC50YXJnZXQubWF0cml4V29ybGQpLGUubG9va0F0KG5ndCksZS51cGRhdGVNYXRyaXhXb3JsZCgpLHRndC5tdWx0aXBseU1hdHJpY2VzKGUucHJvamVjdGlvbk1hdHJpeCxlLm1hdHJpeFdvcmxkSW52ZXJzZSksdGhpcy5fZnJ1c3R1bS5zZXRGcm9tUHJvamVjdGlvbk1hdHJpeCh0Z3QpLG4uc2V0KC41LDAsMCwuNSwwLC41LDAsLjUsMCwwLC41LC41LDAsMCwwLDEpLG4ubXVsdGlwbHkoZS5wcm9qZWN0aW9uTWF0cml4KSxuLm11bHRpcGx5KGUubWF0cml4V29ybGRJbnZlcnNlKX1nZXRWaWV3cG9ydCh0KXtyZXR1cm4gdGhpcy5fdmlld3BvcnRzW3RdfWdldEZyYW1lRXh0ZW50cygpe3JldHVybiB0aGlzLl9mcmFtZUV4dGVudHN9ZGlzcG9zZSgpe3RoaXMubWFwJiZ0aGlzLm1hcC5kaXNwb3NlKCksdGhpcy5tYXBQYXNzJiZ0aGlzLm1hcFBhc3MuZGlzcG9zZSgpfWNvcHkodCl7cmV0dXJuIHRoaXMuY2FtZXJhPXQuY2FtZXJhLmNsb25lKCksdGhpcy5iaWFzPXQuYmlhcyx0aGlzLnJhZGl1cz10LnJhZGl1cyx0aGlzLm1hcFNpemUuY29weSh0Lm1hcFNpemUpLHRoaXN9Y2xvbmUoKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IpLmNvcHkodGhpcyl9dG9KU09OKCl7Y29uc3QgdD17fTtyZXR1cm4gMCE9PXRoaXMuYmlhcyYmKHQuYmlhcz10aGlzLmJpYXMpLDAhPT10aGlzLm5vcm1hbEJpYXMmJih0Lm5vcm1hbEJpYXM9dGhpcy5ub3JtYWxCaWFzKSwxIT09dGhpcy5yYWRpdXMmJih0LnJhZGl1cz10aGlzLnJhZGl1cyksNTEyPT09dGhpcy5tYXBTaXplLngmJjUxMj09PXRoaXMubWFwU2l6ZS55fHwodC5tYXBTaXplPXRoaXMubWFwU2l6ZS50b0FycmF5KCkpLHQuY2FtZXJhPXRoaXMuY2FtZXJhLnRvSlNPTighMSkub2JqZWN0LGRlbGV0ZSB0LmNhbWVyYS5tYXRyaXgsdH19Y2xhc3MgaWd0IGV4dGVuZHMgb2d0e2NvbnN0cnVjdG9yKCl7c3VwZXIobmV3IEljdCg1MCwxLC41LDUwMCkpLHRoaXMuZm9jdXM9MX11cGRhdGVNYXRyaWNlcyh0KXtjb25zdCBlPXRoaXMuY2FtZXJhLG49Mipjc3QqdC5hbmdsZSp0aGlzLmZvY3VzLG89dGhpcy5tYXBTaXplLndpZHRoL3RoaXMubWFwU2l6ZS5oZWlnaHQsaT10LmRpc3RhbmNlfHxlLmZhcjtuPT09ZS5mb3YmJm89PT1lLmFzcGVjdCYmaT09PWUuZmFyfHwoZS5mb3Y9bixlLmFzcGVjdD1vLGUuZmFyPWksZS51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCkpLHN1cGVyLnVwZGF0ZU1hdHJpY2VzKHQpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5mb2N1cz10LmZvY3VzLHRoaXN9fWlndC5wcm90b3R5cGUuaXNTcG90TGlnaHRTaGFkb3c9ITA7KGNsYXNzIGV4dGVuZHMgJHV0e2NvbnN0cnVjdG9yKHQsZSxuPTAsbz1NYXRoLlBJLzMsaT0wLGE9MSl7c3VwZXIodCxlKSx0aGlzLnR5cGU9IlNwb3RMaWdodCIsdGhpcy5wb3NpdGlvbi5jb3B5KFNsdC5EZWZhdWx0VXApLHRoaXMudXBkYXRlTWF0cml4KCksdGhpcy50YXJnZXQ9bmV3IFNsdCx0aGlzLmRpc3RhbmNlPW4sdGhpcy5hbmdsZT1vLHRoaXMucGVudW1icmE9aSx0aGlzLmRlY2F5PWEsdGhpcy5zaGFkb3c9bmV3IGlndH1nZXQgcG93ZXIoKXtyZXR1cm4gdGhpcy5pbnRlbnNpdHkqTWF0aC5QSX1zZXQgcG93ZXIodCl7dGhpcy5pbnRlbnNpdHk9dC9NYXRoLlBJfWRpc3Bvc2UoKXt0aGlzLnNoYWRvdy5kaXNwb3NlKCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmRpc3RhbmNlPXQuZGlzdGFuY2UsdGhpcy5hbmdsZT10LmFuZ2xlLHRoaXMucGVudW1icmE9dC5wZW51bWJyYSx0aGlzLmRlY2F5PXQuZGVjYXksdGhpcy50YXJnZXQ9dC50YXJnZXQuY2xvbmUoKSx0aGlzLnNoYWRvdz10LnNoYWRvdy5jbG9uZSgpLHRoaXN9fSkucHJvdG90eXBlLmlzU3BvdExpZ2h0PSEwO2NvbnN0IGFndD1uZXcgb2x0LHJndD1uZXcgd3N0LHNndD1uZXcgd3N0O2NsYXNzIGxndCBleHRlbmRzIG9ndHtjb25zdHJ1Y3Rvcigpe3N1cGVyKG5ldyBJY3QoOTAsMSwuNSw1MDApKSx0aGlzLl9mcmFtZUV4dGVudHM9bmV3IGdzdCg0LDIpLHRoaXMuX3ZpZXdwb3J0Q291bnQ9Nix0aGlzLl92aWV3cG9ydHM9W25ldyB2c3QoMiwxLDEsMSksbmV3IHZzdCgwLDEsMSwxKSxuZXcgdnN0KDMsMSwxLDEpLG5ldyB2c3QoMSwxLDEsMSksbmV3IHZzdCgzLDAsMSwxKSxuZXcgdnN0KDEsMCwxLDEpXSx0aGlzLl9jdWJlRGlyZWN0aW9ucz1bbmV3IHdzdCgxLDAsMCksbmV3IHdzdCgtMSwwLDApLG5ldyB3c3QoMCwwLDEpLG5ldyB3c3QoMCwwLC0xKSxuZXcgd3N0KDAsMSwwKSxuZXcgd3N0KDAsLTEsMCldLHRoaXMuX2N1YmVVcHM9W25ldyB3c3QoMCwxLDApLG5ldyB3c3QoMCwxLDApLG5ldyB3c3QoMCwxLDApLG5ldyB3c3QoMCwxLDApLG5ldyB3c3QoMCwwLDEpLG5ldyB3c3QoMCwwLC0xKV19dXBkYXRlTWF0cmljZXModCxlPTApe2NvbnN0IG49dGhpcy5jYW1lcmEsbz10aGlzLm1hdHJpeCxpPXQuZGlzdGFuY2V8fG4uZmFyO2khPT1uLmZhciYmKG4uZmFyPWksbi51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCkpLHJndC5zZXRGcm9tTWF0cml4UG9zaXRpb24odC5tYXRyaXhXb3JsZCksbi5wb3NpdGlvbi5jb3B5KHJndCksc2d0LmNvcHkobi5wb3NpdGlvbiksc2d0LmFkZCh0aGlzLl9jdWJlRGlyZWN0aW9uc1tlXSksbi51cC5jb3B5KHRoaXMuX2N1YmVVcHNbZV0pLG4ubG9va0F0KHNndCksbi51cGRhdGVNYXRyaXhXb3JsZCgpLG8ubWFrZVRyYW5zbGF0aW9uKC1yZ3QueCwtcmd0LnksLXJndC56KSxhZ3QubXVsdGlwbHlNYXRyaWNlcyhuLnByb2plY3Rpb25NYXRyaXgsbi5tYXRyaXhXb3JsZEludmVyc2UpLHRoaXMuX2ZydXN0dW0uc2V0RnJvbVByb2plY3Rpb25NYXRyaXgoYWd0KX19bGd0LnByb3RvdHlwZS5pc1BvaW50TGlnaHRTaGFkb3c9ITA7KGNsYXNzIGV4dGVuZHMgJHV0e2NvbnN0cnVjdG9yKHQsZSxuPTAsbz0xKXtzdXBlcih0LGUpLHRoaXMudHlwZT0iUG9pbnRMaWdodCIsdGhpcy5kaXN0YW5jZT1uLHRoaXMuZGVjYXk9byx0aGlzLnNoYWRvdz1uZXcgbGd0fWdldCBwb3dlcigpe3JldHVybiA0KnRoaXMuaW50ZW5zaXR5Kk1hdGguUEl9c2V0IHBvd2VyKHQpe3RoaXMuaW50ZW5zaXR5PXQvKDQqTWF0aC5QSSl9ZGlzcG9zZSgpe3RoaXMuc2hhZG93LmRpc3Bvc2UoKX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMuZGlzdGFuY2U9dC5kaXN0YW5jZSx0aGlzLmRlY2F5PXQuZGVjYXksdGhpcy5zaGFkb3c9dC5zaGFkb3cuY2xvbmUoKSx0aGlzfX0pLnByb3RvdHlwZS5pc1BvaW50TGlnaHQ9ITA7Y2xhc3MgY2d0IGV4dGVuZHMgb2d0e2NvbnN0cnVjdG9yKCl7c3VwZXIobmV3IHJkdCgtNSw1LDUsLTUsLjUsNTAwKSl9fWNndC5wcm90b3R5cGUuaXNEaXJlY3Rpb25hbExpZ2h0U2hhZG93PSEwOyhjbGFzcyBleHRlbmRzICR1dHtjb25zdHJ1Y3Rvcih0LGUpe3N1cGVyKHQsZSksdGhpcy50eXBlPSJEaXJlY3Rpb25hbExpZ2h0Iix0aGlzLnBvc2l0aW9uLmNvcHkoU2x0LkRlZmF1bHRVcCksdGhpcy51cGRhdGVNYXRyaXgoKSx0aGlzLnRhcmdldD1uZXcgU2x0LHRoaXMuc2hhZG93PW5ldyBjZ3R9ZGlzcG9zZSgpe3RoaXMuc2hhZG93LmRpc3Bvc2UoKX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMudGFyZ2V0PXQudGFyZ2V0LmNsb25lKCksdGhpcy5zaGFkb3c9dC5zaGFkb3cuY2xvbmUoKSx0aGlzfX0pLnByb3RvdHlwZS5pc0RpcmVjdGlvbmFsTGlnaHQ9ITA7KGNsYXNzIGV4dGVuZHMgJHV0e2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIodCxlKSx0aGlzLnR5cGU9IkFtYmllbnRMaWdodCJ9fSkucHJvdG90eXBlLmlzQW1iaWVudExpZ2h0PSEwOyhjbGFzcyBleHRlbmRzICR1dHtjb25zdHJ1Y3Rvcih0LGUsbj0xMCxvPTEwKXtzdXBlcih0LGUpLHRoaXMudHlwZT0iUmVjdEFyZWFMaWdodCIsdGhpcy53aWR0aD1uLHRoaXMuaGVpZ2h0PW99Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLndpZHRoPXQud2lkdGgsdGhpcy5oZWlnaHQ9dC5oZWlnaHQsdGhpc310b0pTT04odCl7Y29uc3QgZT1zdXBlci50b0pTT04odCk7cmV0dXJuIGUub2JqZWN0LndpZHRoPXRoaXMud2lkdGgsZS5vYmplY3QuaGVpZ2h0PXRoaXMuaGVpZ2h0LGV9fSkucHJvdG90eXBlLmlzUmVjdEFyZWFMaWdodD0hMDtjbGFzcyBkZ3R7Y29uc3RydWN0b3IoKXt0aGlzLmNvZWZmaWNpZW50cz1bXTtmb3IobGV0IHQ9MDt0PDk7dCsrKXRoaXMuY29lZmZpY2llbnRzLnB1c2gobmV3IHdzdCl9c2V0KHQpe2ZvcihsZXQgZT0wO2U8OTtlKyspdGhpcy5jb2VmZmljaWVudHNbZV0uY29weSh0W2VdKTtyZXR1cm4gdGhpc316ZXJvKCl7Zm9yKGxldCB0PTA7dDw5O3QrKyl0aGlzLmNvZWZmaWNpZW50c1t0XS5zZXQoMCwwLDApO3JldHVybiB0aGlzfWdldEF0KHQsZSl7Y29uc3Qgbj10Lngsbz10LnksaT10LnosYT10aGlzLmNvZWZmaWNpZW50cztyZXR1cm4gZS5jb3B5KGFbMF0pLm11bHRpcGx5U2NhbGFyKC4yODIwOTUpLGUuYWRkU2NhbGVkVmVjdG9yKGFbMV0sLjQ4ODYwMypvKSxlLmFkZFNjYWxlZFZlY3RvcihhWzJdLC40ODg2MDMqaSksZS5hZGRTY2FsZWRWZWN0b3IoYVszXSwuNDg4NjAzKm4pLGUuYWRkU2NhbGVkVmVjdG9yKGFbNF0sbipvKjEuMDkyNTQ4KSxlLmFkZFNjYWxlZFZlY3RvcihhWzVdLG8qaSoxLjA5MjU0OCksZS5hZGRTY2FsZWRWZWN0b3IoYVs2XSwuMzE1MzkyKigzKmkqaS0xKSksZS5hZGRTY2FsZWRWZWN0b3IoYVs3XSxuKmkqMS4wOTI1NDgpLGUuYWRkU2NhbGVkVmVjdG9yKGFbOF0sLjU0NjI3NCoobipuLW8qbykpLGV9Z2V0SXJyYWRpYW5jZUF0KHQsZSl7Y29uc3Qgbj10Lngsbz10LnksaT10LnosYT10aGlzLmNvZWZmaWNpZW50cztyZXR1cm4gZS5jb3B5KGFbMF0pLm11bHRpcGx5U2NhbGFyKC44ODYyMjcpLGUuYWRkU2NhbGVkVmVjdG9yKGFbMV0sMS4wMjMzMjgqbyksZS5hZGRTY2FsZWRWZWN0b3IoYVsyXSwxLjAyMzMyOCppKSxlLmFkZFNjYWxlZFZlY3RvcihhWzNdLDEuMDIzMzI4Km4pLGUuYWRkU2NhbGVkVmVjdG9yKGFbNF0sLjg1ODA4NipuKm8pLGUuYWRkU2NhbGVkVmVjdG9yKGFbNV0sLjg1ODA4NipvKmkpLGUuYWRkU2NhbGVkVmVjdG9yKGFbNl0sLjc0MzEyNSppKmktLjI0NzcwOCksZS5hZGRTY2FsZWRWZWN0b3IoYVs3XSwuODU4MDg2Km4qaSksZS5hZGRTY2FsZWRWZWN0b3IoYVs4XSwuNDI5MDQzKihuKm4tbypvKSksZX1hZGQodCl7Zm9yKGxldCBlPTA7ZTw5O2UrKyl0aGlzLmNvZWZmaWNpZW50c1tlXS5hZGQodC5jb2VmZmljaWVudHNbZV0pO3JldHVybiB0aGlzfWFkZFNjYWxlZFNIKHQsZSl7Zm9yKGxldCBuPTA7bjw5O24rKyl0aGlzLmNvZWZmaWNpZW50c1tuXS5hZGRTY2FsZWRWZWN0b3IodC5jb2VmZmljaWVudHNbbl0sZSk7cmV0dXJuIHRoaXN9c2NhbGUodCl7Zm9yKGxldCBlPTA7ZTw5O2UrKyl0aGlzLmNvZWZmaWNpZW50c1tlXS5tdWx0aXBseVNjYWxhcih0KTtyZXR1cm4gdGhpc31sZXJwKHQsZSl7Zm9yKGxldCBuPTA7bjw5O24rKyl0aGlzLmNvZWZmaWNpZW50c1tuXS5sZXJwKHQuY29lZmZpY2llbnRzW25dLGUpO3JldHVybiB0aGlzfWVxdWFscyh0KXtmb3IobGV0IGU9MDtlPDk7ZSsrKWlmKCF0aGlzLmNvZWZmaWNpZW50c1tlXS5lcXVhbHModC5jb2VmZmljaWVudHNbZV0pKXJldHVybiExO3JldHVybiEwfWNvcHkodCl7cmV0dXJuIHRoaXMuc2V0KHQuY29lZmZpY2llbnRzKX1jbG9uZSgpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3RvcikuY29weSh0aGlzKX1mcm9tQXJyYXkodCxlPTApe2NvbnN0IG49dGhpcy5jb2VmZmljaWVudHM7Zm9yKGxldCBvPTA7bzw5O28rKyluW29dLmZyb21BcnJheSh0LGUrMypvKTtyZXR1cm4gdGhpc310b0FycmF5KHQ9W10sZT0wKXtjb25zdCBuPXRoaXMuY29lZmZpY2llbnRzO2ZvcihsZXQgbz0wO288OTtvKyspbltvXS50b0FycmF5KHQsZSszKm8pO3JldHVybiB0fXN0YXRpYyBnZXRCYXNpc0F0KHQsZSl7Y29uc3Qgbj10Lngsbz10LnksaT10Lno7ZVswXT0uMjgyMDk1LGVbMV09LjQ4ODYwMypvLGVbMl09LjQ4ODYwMyppLGVbM109LjQ4ODYwMypuLGVbNF09MS4wOTI1NDgqbipvLGVbNV09MS4wOTI1NDgqbyppLGVbNl09LjMxNTM5MiooMyppKmktMSksZVs3XT0xLjA5MjU0OCpuKmksZVs4XT0uNTQ2Mjc0KihuKm4tbypvKX19ZGd0LnByb3RvdHlwZS5pc1NwaGVyaWNhbEhhcm1vbmljczM9ITA7Y2xhc3MgcGd0IGV4dGVuZHMgJHV0e2NvbnN0cnVjdG9yKHQ9bmV3IGRndCxlPTEpe3N1cGVyKHZvaWQgMCxlKSx0aGlzLnNoPXR9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLnNoLmNvcHkodC5zaCksdGhpc31mcm9tSlNPTih0KXtyZXR1cm4gdGhpcy5pbnRlbnNpdHk9dC5pbnRlbnNpdHksdGhpcy5zaC5mcm9tQXJyYXkodC5zaCksdGhpc310b0pTT04odCl7Y29uc3QgZT1zdXBlci50b0pTT04odCk7cmV0dXJuIGUub2JqZWN0LnNoPXRoaXMuc2gudG9BcnJheSgpLGV9fXBndC5wcm90b3R5cGUuaXNMaWdodFByb2JlPSEwOyhjbGFzcyBleHRlbmRzIGRjdHtjb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy50eXBlPSJJbnN0YW5jZWRCdWZmZXJHZW9tZXRyeSIsdGhpcy5pbnN0YW5jZUNvdW50PTEvMH1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMuaW5zdGFuY2VDb3VudD10Lmluc3RhbmNlQ291bnQsdGhpc31jbG9uZSgpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3RvcikuY29weSh0aGlzKX10b0pTT04oKXtjb25zdCB0PXN1cGVyLnRvSlNPTih0aGlzKTtyZXR1cm4gdC5pbnN0YW5jZUNvdW50PXRoaXMuaW5zdGFuY2VDb3VudCx0LmlzSW5zdGFuY2VkQnVmZmVyR2VvbWV0cnk9ITAsdH19KS5wcm90b3R5cGUuaXNJbnN0YW5jZWRCdWZmZXJHZW9tZXRyeT0hMDsoY2xhc3MgZXh0ZW5kcyBRbHR7Y29uc3RydWN0b3IodCxlLG4sbz0xKXsibnVtYmVyIj09dHlwZW9mIG4mJihvPW4sbj0hMSxjb25zb2xlLmVycm9yKCJUSFJFRS5JbnN0YW5jZWRCdWZmZXJBdHRyaWJ1dGU6IFRoZSBjb25zdHJ1Y3RvciBub3cgZXhwZWN0cyBub3JtYWxpemVkIGFzIHRoZSB0aGlyZCBhcmd1bWVudC4iKSksc3VwZXIodCxlLG4pLHRoaXMubWVzaFBlckF0dHJpYnV0ZT1vfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5tZXNoUGVyQXR0cmlidXRlPXQubWVzaFBlckF0dHJpYnV0ZSx0aGlzfXRvSlNPTigpe2NvbnN0IHQ9c3VwZXIudG9KU09OKCk7cmV0dXJuIHQubWVzaFBlckF0dHJpYnV0ZT10aGlzLm1lc2hQZXJBdHRyaWJ1dGUsdC5pc0luc3RhbmNlZEJ1ZmZlckF0dHJpYnV0ZT0hMCx0fX0pLnByb3RvdHlwZS5pc0luc3RhbmNlZEJ1ZmZlckF0dHJpYnV0ZT0hMDtsZXQgbWd0OyhjbGFzcyBleHRlbmRzIFd1dHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KSwidW5kZWZpbmVkIj09dHlwZW9mIGNyZWF0ZUltYWdlQml0bWFwJiZjb25zb2xlLndhcm4oIlRIUkVFLkltYWdlQml0bWFwTG9hZGVyOiBjcmVhdGVJbWFnZUJpdG1hcCgpIG5vdCBzdXBwb3J0ZWQuIiksInVuZGVmaW5lZCI9PXR5cGVvZiBmZXRjaCYmY29uc29sZS53YXJuKCJUSFJFRS5JbWFnZUJpdG1hcExvYWRlcjogZmV0Y2goKSBub3Qgc3VwcG9ydGVkLiIpLHRoaXMub3B0aW9ucz17cHJlbXVsdGlwbHlBbHBoYToibm9uZSJ9fXNldE9wdGlvbnModCl7cmV0dXJuIHRoaXMub3B0aW9ucz10LHRoaXN9bG9hZCh0LGUsbixvKXt2b2lkIDA9PT10JiYodD0iIiksdm9pZCAwIT09dGhpcy5wYXRoJiYodD10aGlzLnBhdGgrdCksdD10aGlzLm1hbmFnZXIucmVzb2x2ZVVSTCh0KTtjb25zdCBpPXRoaXMsYT1qdXQuZ2V0KHQpO2lmKHZvaWQgMCE9PWEpcmV0dXJuIGkubWFuYWdlci5pdGVtU3RhcnQodCksc2V0VGltZW91dCgoZnVuY3Rpb24oKXtlJiZlKGEpLGkubWFuYWdlci5pdGVtRW5kKHQpfSksMCksYTtjb25zdCByPXt9O3IuY3JlZGVudGlhbHM9ImFub255bW91cyI9PT10aGlzLmNyb3NzT3JpZ2luPyJzYW1lLW9yaWdpbiI6ImluY2x1ZGUiLHIuaGVhZGVycz10aGlzLnJlcXVlc3RIZWFkZXIsZmV0Y2godCxyKS50aGVuKChmdW5jdGlvbih0KXtyZXR1cm4gdC5ibG9iKCl9KSkudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIGNyZWF0ZUltYWdlQml0bWFwKHQsT2JqZWN0LmFzc2lnbihpLm9wdGlvbnMse2NvbG9yU3BhY2VDb252ZXJzaW9uOiJub25lIn0pKX0pKS50aGVuKChmdW5jdGlvbihuKXtqdXQuYWRkKHQsbiksZSYmZShuKSxpLm1hbmFnZXIuaXRlbUVuZCh0KX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7byYmbyhlKSxpLm1hbmFnZXIuaXRlbUVycm9yKHQpLGkubWFuYWdlci5pdGVtRW5kKHQpfSkpLGkubWFuYWdlci5pdGVtU3RhcnQodCl9fSkucHJvdG90eXBlLmlzSW1hZ2VCaXRtYXBMb2FkZXI9ITA7Y29uc3QgZmd0PWZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgMD09PW1ndCYmKG1ndD1uZXcod2luZG93LkF1ZGlvQ29udGV4dHx8d2luZG93LndlYmtpdEF1ZGlvQ29udGV4dCkpLG1ndH07Y2xhc3MgdWd0IGV4dGVuZHMgV3V0e2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpfWxvYWQodCxlLG4sbyl7Y29uc3QgaT10aGlzLGE9bmV3IFl1dCh0aGlzLm1hbmFnZXIpO2Euc2V0UmVzcG9uc2VUeXBlKCJhcnJheWJ1ZmZlciIpLGEuc2V0UGF0aCh0aGlzLnBhdGgpLGEuc2V0UmVxdWVzdEhlYWRlcih0aGlzLnJlcXVlc3RIZWFkZXIpLGEuc2V0V2l0aENyZWRlbnRpYWxzKHRoaXMud2l0aENyZWRlbnRpYWxzKSxhLmxvYWQodCwoZnVuY3Rpb24obil7dHJ5e2NvbnN0IHQ9bi5zbGljZSgwKTtmZ3QoKS5kZWNvZGVBdWRpb0RhdGEodCwoZnVuY3Rpb24odCl7ZSh0KX0pKX1jYXRjaChlKXtvP28oZSk6Y29uc29sZS5lcnJvcihlKSxpLm1hbmFnZXIuaXRlbUVycm9yKHQpfX0pLG4sbyl9fShjbGFzcyBleHRlbmRzIHBndHtjb25zdHJ1Y3Rvcih0LGUsbj0xKXtzdXBlcih2b2lkIDAsbik7Y29uc3Qgbz0obmV3IFpsdCkuc2V0KHQpLGk9KG5ldyBabHQpLnNldChlKSxhPW5ldyB3c3Qoby5yLG8uZyxvLmIpLHI9bmV3IHdzdChpLnIsaS5nLGkuYikscz1NYXRoLnNxcnQoTWF0aC5QSSksbD1zKk1hdGguc3FydCguNzUpO3RoaXMuc2guY29lZmZpY2llbnRzWzBdLmNvcHkoYSkuYWRkKHIpLm11bHRpcGx5U2NhbGFyKHMpLHRoaXMuc2guY29lZmZpY2llbnRzWzFdLmNvcHkoYSkuc3ViKHIpLm11bHRpcGx5U2NhbGFyKGwpfX0pLnByb3RvdHlwZS5pc0hlbWlzcGhlcmVMaWdodFByb2JlPSEwOyhjbGFzcyBleHRlbmRzIHBndHtjb25zdHJ1Y3Rvcih0LGU9MSl7c3VwZXIodm9pZCAwLGUpO2NvbnN0IG49KG5ldyBabHQpLnNldCh0KTt0aGlzLnNoLmNvZWZmaWNpZW50c1swXS5zZXQobi5yLG4uZyxuLmIpLm11bHRpcGx5U2NhbGFyKDIqTWF0aC5zcXJ0KE1hdGguUEkpKX19KS5wcm90b3R5cGUuaXNBbWJpZW50TGlnaHRQcm9iZT0hMDtjbGFzcyBnZ3R7Y29uc3RydWN0b3IodCxlLG4pe2xldCBvLGksYTtzd2l0Y2godGhpcy5iaW5kaW5nPXQsdGhpcy52YWx1ZVNpemU9bixlKXtjYXNlInF1YXRlcm5pb24iOm89dGhpcy5fc2xlcnAsaT10aGlzLl9zbGVycEFkZGl0aXZlLGE9dGhpcy5fc2V0QWRkaXRpdmVJZGVudGl0eVF1YXRlcm5pb24sdGhpcy5idWZmZXI9bmV3IEZsb2F0NjRBcnJheSg2Km4pLHRoaXMuX3dvcmtJbmRleD01O2JyZWFrO2Nhc2Uic3RyaW5nIjpjYXNlImJvb2wiOm89dGhpcy5fc2VsZWN0LGk9dGhpcy5fc2VsZWN0LGE9dGhpcy5fc2V0QWRkaXRpdmVJZGVudGl0eU90aGVyLHRoaXMuYnVmZmVyPW5ldyBBcnJheSg1Km4pO2JyZWFrO2RlZmF1bHQ6bz10aGlzLl9sZXJwLGk9dGhpcy5fbGVycEFkZGl0aXZlLGE9dGhpcy5fc2V0QWRkaXRpdmVJZGVudGl0eU51bWVyaWMsdGhpcy5idWZmZXI9bmV3IEZsb2F0NjRBcnJheSg1Km4pfXRoaXMuX21peEJ1ZmZlclJlZ2lvbj1vLHRoaXMuX21peEJ1ZmZlclJlZ2lvbkFkZGl0aXZlPWksdGhpcy5fc2V0SWRlbnRpdHk9YSx0aGlzLl9vcmlnSW5kZXg9Myx0aGlzLl9hZGRJbmRleD00LHRoaXMuY3VtdWxhdGl2ZVdlaWdodD0wLHRoaXMuY3VtdWxhdGl2ZVdlaWdodEFkZGl0aXZlPTAsdGhpcy51c2VDb3VudD0wLHRoaXMucmVmZXJlbmNlQ291bnQ9MH1hY2N1bXVsYXRlKHQsZSl7Y29uc3Qgbj10aGlzLmJ1ZmZlcixvPXRoaXMudmFsdWVTaXplLGk9dCpvK287bGV0IGE9dGhpcy5jdW11bGF0aXZlV2VpZ2h0O2lmKDA9PT1hKXtmb3IobGV0IHQ9MDt0IT09bzsrK3QpbltpK3RdPW5bdF07YT1lfWVsc2V7YSs9ZTt0aGlzLl9taXhCdWZmZXJSZWdpb24obixpLDAsZS9hLG8pfXRoaXMuY3VtdWxhdGl2ZVdlaWdodD1hfWFjY3VtdWxhdGVBZGRpdGl2ZSh0KXtjb25zdCBlPXRoaXMuYnVmZmVyLG49dGhpcy52YWx1ZVNpemUsbz1uKnRoaXMuX2FkZEluZGV4OzA9PT10aGlzLmN1bXVsYXRpdmVXZWlnaHRBZGRpdGl2ZSYmdGhpcy5fc2V0SWRlbnRpdHkoKSx0aGlzLl9taXhCdWZmZXJSZWdpb25BZGRpdGl2ZShlLG8sMCx0LG4pLHRoaXMuY3VtdWxhdGl2ZVdlaWdodEFkZGl0aXZlKz10fWFwcGx5KHQpe2NvbnN0IGU9dGhpcy52YWx1ZVNpemUsbj10aGlzLmJ1ZmZlcixvPXQqZStlLGk9dGhpcy5jdW11bGF0aXZlV2VpZ2h0LGE9dGhpcy5jdW11bGF0aXZlV2VpZ2h0QWRkaXRpdmUscj10aGlzLmJpbmRpbmc7aWYodGhpcy5jdW11bGF0aXZlV2VpZ2h0PTAsdGhpcy5jdW11bGF0aXZlV2VpZ2h0QWRkaXRpdmU9MCxpPDEpe3RoaXMuX21peEJ1ZmZlclJlZ2lvbihuLG8sZSp0aGlzLl9vcmlnSW5kZXgsMS1pLGUpfWE+MCYmdGhpcy5fbWl4QnVmZmVyUmVnaW9uQWRkaXRpdmUobixvLHRoaXMuX2FkZEluZGV4KmUsMSxlKTtmb3IobGV0IHQ9ZSxpPWUrZTt0IT09aTsrK3QpaWYoblt0XSE9PW5bdCtlXSl7ci5zZXRWYWx1ZShuLG8pO2JyZWFrfX1zYXZlT3JpZ2luYWxTdGF0ZSgpe2NvbnN0IHQ9dGhpcy5idWZmZXIsZT10aGlzLnZhbHVlU2l6ZSxuPWUqdGhpcy5fb3JpZ0luZGV4O3RoaXMuYmluZGluZy5nZXRWYWx1ZSh0LG4pO2ZvcihsZXQgbz1lLGk9bjtvIT09aTsrK28pdFtvXT10W24rbyVlXTt0aGlzLl9zZXRJZGVudGl0eSgpLHRoaXMuY3VtdWxhdGl2ZVdlaWdodD0wLHRoaXMuY3VtdWxhdGl2ZVdlaWdodEFkZGl0aXZlPTB9cmVzdG9yZU9yaWdpbmFsU3RhdGUoKXt0aGlzLmJpbmRpbmcuc2V0VmFsdWUodGhpcy5idWZmZXIsMyp0aGlzLnZhbHVlU2l6ZSl9X3NldEFkZGl0aXZlSWRlbnRpdHlOdW1lcmljKCl7Y29uc3QgdD10aGlzLl9hZGRJbmRleCp0aGlzLnZhbHVlU2l6ZSxlPXQrdGhpcy52YWx1ZVNpemU7Zm9yKGxldCBuPXQ7bjxlO24rKyl0aGlzLmJ1ZmZlcltuXT0wfV9zZXRBZGRpdGl2ZUlkZW50aXR5UXVhdGVybmlvbigpe3RoaXMuX3NldEFkZGl0aXZlSWRlbnRpdHlOdW1lcmljKCksdGhpcy5idWZmZXJbdGhpcy5fYWRkSW5kZXgqdGhpcy52YWx1ZVNpemUrM109MX1fc2V0QWRkaXRpdmVJZGVudGl0eU90aGVyKCl7Y29uc3QgdD10aGlzLl9vcmlnSW5kZXgqdGhpcy52YWx1ZVNpemUsZT10aGlzLl9hZGRJbmRleCp0aGlzLnZhbHVlU2l6ZTtmb3IobGV0IG49MDtuPHRoaXMudmFsdWVTaXplO24rKyl0aGlzLmJ1ZmZlcltlK25dPXRoaXMuYnVmZmVyW3Qrbl19X3NlbGVjdCh0LGUsbixvLGkpe2lmKG8+PS41KWZvcihsZXQgbz0wO28hPT1pOysrbyl0W2Urb109dFtuK29dfV9zbGVycCh0LGUsbixvKXtQc3Quc2xlcnBGbGF0KHQsZSx0LGUsdCxuLG8pfV9zbGVycEFkZGl0aXZlKHQsZSxuLG8saSl7Y29uc3QgYT10aGlzLl93b3JrSW5kZXgqaTtQc3QubXVsdGlwbHlRdWF0ZXJuaW9uc0ZsYXQodCxhLHQsZSx0LG4pLFBzdC5zbGVycEZsYXQodCxlLHQsZSx0LGEsbyl9X2xlcnAodCxlLG4sbyxpKXtjb25zdCBhPTEtbztmb3IobGV0IHI9MDtyIT09aTsrK3Ipe2NvbnN0IGk9ZStyO3RbaV09dFtpXSphK3RbbityXSpvfX1fbGVycEFkZGl0aXZlKHQsZSxuLG8saSl7Zm9yKGxldCBhPTA7YSE9PWk7KythKXtjb25zdCBpPWUrYTt0W2ldPXRbaV0rdFtuK2FdKm99fX1jb25zdCBoZ3Q9IlxcW1xcXVxcLjpcXC8iLGJndD1uZXcgUmVnRXhwKCJbXFxbXFxdXFwuOlxcL10iLCJnIikseWd0PSJbXlxcW1xcXVxcLjpcXC9dIixfZ3Q9IlteIitoZ3QucmVwbGFjZSgiXFwuIiwiIikrIl0iLENndD0vKCg/OldDK1tcLzpdKSopLy5zb3VyY2UucmVwbGFjZSgiV0MiLHlndCksTWd0PS8oV0NPRCspPy8uc291cmNlLnJlcGxhY2UoIldDT0QiLF9ndCksdmd0PS8oPzpcLihXQyspKD86XFsoLispXF0pPyk/Ly5zb3VyY2UucmVwbGFjZSgiV0MiLHlndCkseGd0PS9cLihXQyspKD86XFsoLispXF0pPy8uc291cmNlLnJlcGxhY2UoIldDIix5Z3QpLE9ndD1uZXcgUmVnRXhwKCJeIitDZ3QrTWd0K3ZndCt4Z3QrIiQiKSxQZ3Q9WyJtYXRlcmlhbCIsIm1hdGVyaWFscyIsImJvbmVzIl07Y2xhc3Mgd2d0e2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLnBhdGg9ZSx0aGlzLnBhcnNlZFBhdGg9bnx8d2d0LnBhcnNlVHJhY2tOYW1lKGUpLHRoaXMubm9kZT13Z3QuZmluZE5vZGUodCx0aGlzLnBhcnNlZFBhdGgubm9kZU5hbWUpfHx0LHRoaXMucm9vdE5vZGU9dCx0aGlzLmdldFZhbHVlPXRoaXMuX2dldFZhbHVlX3VuYm91bmQsdGhpcy5zZXRWYWx1ZT10aGlzLl9zZXRWYWx1ZV91bmJvdW5kfXN0YXRpYyBjcmVhdGUodCxlLG4pe3JldHVybiB0JiZ0LmlzQW5pbWF0aW9uT2JqZWN0R3JvdXA/bmV3IHdndC5Db21wb3NpdGUodCxlLG4pOm5ldyB3Z3QodCxlLG4pfXN0YXRpYyBzYW5pdGl6ZU5vZGVOYW1lKHQpe3JldHVybiB0LnJlcGxhY2UoL1xzL2csIl8iKS5yZXBsYWNlKGJndCwiIil9c3RhdGljIHBhcnNlVHJhY2tOYW1lKHQpe2NvbnN0IGU9T2d0LmV4ZWModCk7aWYoIWUpdGhyb3cgbmV3IEVycm9yKCJQcm9wZXJ0eUJpbmRpbmc6IENhbm5vdCBwYXJzZSB0cmFja05hbWU6ICIrdCk7Y29uc3Qgbj17bm9kZU5hbWU6ZVsyXSxvYmplY3ROYW1lOmVbM10sb2JqZWN0SW5kZXg6ZVs0XSxwcm9wZXJ0eU5hbWU6ZVs1XSxwcm9wZXJ0eUluZGV4OmVbNl19LG89bi5ub2RlTmFtZSYmbi5ub2RlTmFtZS5sYXN0SW5kZXhPZigiLiIpO2lmKHZvaWQgMCE9PW8mJi0xIT09byl7Y29uc3QgdD1uLm5vZGVOYW1lLnN1YnN0cmluZyhvKzEpOy0xIT09UGd0LmluZGV4T2YodCkmJihuLm5vZGVOYW1lPW4ubm9kZU5hbWUuc3Vic3RyaW5nKDAsbyksbi5vYmplY3ROYW1lPXQpfWlmKG51bGw9PT1uLnByb3BlcnR5TmFtZXx8MD09PW4ucHJvcGVydHlOYW1lLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIlByb3BlcnR5QmluZGluZzogY2FuIG5vdCBwYXJzZSBwcm9wZXJ0eU5hbWUgZnJvbSB0cmFja05hbWU6ICIrdCk7cmV0dXJuIG59c3RhdGljIGZpbmROb2RlKHQsZSl7aWYoIWV8fCIiPT09ZXx8Ii4iPT09ZXx8LTE9PT1lfHxlPT09dC5uYW1lfHxlPT09dC51dWlkKXJldHVybiB0O2lmKHQuc2tlbGV0b24pe2NvbnN0IG49dC5za2VsZXRvbi5nZXRCb25lQnlOYW1lKGUpO2lmKHZvaWQgMCE9PW4pcmV0dXJuIG59aWYodC5jaGlsZHJlbil7Y29uc3Qgbj1mdW5jdGlvbih0KXtmb3IobGV0IG89MDtvPHQubGVuZ3RoO28rKyl7Y29uc3QgaT10W29dO2lmKGkubmFtZT09PWV8fGkudXVpZD09PWUpcmV0dXJuIGk7Y29uc3QgYT1uKGkuY2hpbGRyZW4pO2lmKGEpcmV0dXJuIGF9cmV0dXJuIG51bGx9LG89bih0LmNoaWxkcmVuKTtpZihvKXJldHVybiBvfXJldHVybiBudWxsfV9nZXRWYWx1ZV91bmF2YWlsYWJsZSgpe31fc2V0VmFsdWVfdW5hdmFpbGFibGUoKXt9X2dldFZhbHVlX2RpcmVjdCh0LGUpe3RbZV09dGhpcy5ub2RlW3RoaXMucHJvcGVydHlOYW1lXX1fZ2V0VmFsdWVfYXJyYXkodCxlKXtjb25zdCBuPXRoaXMucmVzb2x2ZWRQcm9wZXJ0eTtmb3IobGV0IG89MCxpPW4ubGVuZ3RoO28hPT1pOysrbyl0W2UrK109bltvXX1fZ2V0VmFsdWVfYXJyYXlFbGVtZW50KHQsZSl7dFtlXT10aGlzLnJlc29sdmVkUHJvcGVydHlbdGhpcy5wcm9wZXJ0eUluZGV4XX1fZ2V0VmFsdWVfdG9BcnJheSh0LGUpe3RoaXMucmVzb2x2ZWRQcm9wZXJ0eS50b0FycmF5KHQsZSl9X3NldFZhbHVlX2RpcmVjdCh0LGUpe3RoaXMudGFyZ2V0T2JqZWN0W3RoaXMucHJvcGVydHlOYW1lXT10W2VdfV9zZXRWYWx1ZV9kaXJlY3Rfc2V0TmVlZHNVcGRhdGUodCxlKXt0aGlzLnRhcmdldE9iamVjdFt0aGlzLnByb3BlcnR5TmFtZV09dFtlXSx0aGlzLnRhcmdldE9iamVjdC5uZWVkc1VwZGF0ZT0hMH1fc2V0VmFsdWVfZGlyZWN0X3NldE1hdHJpeFdvcmxkTmVlZHNVcGRhdGUodCxlKXt0aGlzLnRhcmdldE9iamVjdFt0aGlzLnByb3BlcnR5TmFtZV09dFtlXSx0aGlzLnRhcmdldE9iamVjdC5tYXRyaXhXb3JsZE5lZWRzVXBkYXRlPSEwfV9zZXRWYWx1ZV9hcnJheSh0LGUpe2NvbnN0IG49dGhpcy5yZXNvbHZlZFByb3BlcnR5O2ZvcihsZXQgbz0wLGk9bi5sZW5ndGg7byE9PWk7KytvKW5bb109dFtlKytdfV9zZXRWYWx1ZV9hcnJheV9zZXROZWVkc1VwZGF0ZSh0LGUpe2NvbnN0IG49dGhpcy5yZXNvbHZlZFByb3BlcnR5O2ZvcihsZXQgbz0wLGk9bi5sZW5ndGg7byE9PWk7KytvKW5bb109dFtlKytdO3RoaXMudGFyZ2V0T2JqZWN0Lm5lZWRzVXBkYXRlPSEwfV9zZXRWYWx1ZV9hcnJheV9zZXRNYXRyaXhXb3JsZE5lZWRzVXBkYXRlKHQsZSl7Y29uc3Qgbj10aGlzLnJlc29sdmVkUHJvcGVydHk7Zm9yKGxldCBvPTAsaT1uLmxlbmd0aDtvIT09aTsrK28pbltvXT10W2UrK107dGhpcy50YXJnZXRPYmplY3QubWF0cml4V29ybGROZWVkc1VwZGF0ZT0hMH1fc2V0VmFsdWVfYXJyYXlFbGVtZW50KHQsZSl7dGhpcy5yZXNvbHZlZFByb3BlcnR5W3RoaXMucHJvcGVydHlJbmRleF09dFtlXX1fc2V0VmFsdWVfYXJyYXlFbGVtZW50X3NldE5lZWRzVXBkYXRlKHQsZSl7dGhpcy5yZXNvbHZlZFByb3BlcnR5W3RoaXMucHJvcGVydHlJbmRleF09dFtlXSx0aGlzLnRhcmdldE9iamVjdC5uZWVkc1VwZGF0ZT0hMH1fc2V0VmFsdWVfYXJyYXlFbGVtZW50X3NldE1hdHJpeFdvcmxkTmVlZHNVcGRhdGUodCxlKXt0aGlzLnJlc29sdmVkUHJvcGVydHlbdGhpcy5wcm9wZXJ0eUluZGV4XT10W2VdLHRoaXMudGFyZ2V0T2JqZWN0Lm1hdHJpeFdvcmxkTmVlZHNVcGRhdGU9ITB9X3NldFZhbHVlX2Zyb21BcnJheSh0LGUpe3RoaXMucmVzb2x2ZWRQcm9wZXJ0eS5mcm9tQXJyYXkodCxlKX1fc2V0VmFsdWVfZnJvbUFycmF5X3NldE5lZWRzVXBkYXRlKHQsZSl7dGhpcy5yZXNvbHZlZFByb3BlcnR5LmZyb21BcnJheSh0LGUpLHRoaXMudGFyZ2V0T2JqZWN0Lm5lZWRzVXBkYXRlPSEwfV9zZXRWYWx1ZV9mcm9tQXJyYXlfc2V0TWF0cml4V29ybGROZWVkc1VwZGF0ZSh0LGUpe3RoaXMucmVzb2x2ZWRQcm9wZXJ0eS5mcm9tQXJyYXkodCxlKSx0aGlzLnRhcmdldE9iamVjdC5tYXRyaXhXb3JsZE5lZWRzVXBkYXRlPSEwfV9nZXRWYWx1ZV91bmJvdW5kKHQsZSl7dGhpcy5iaW5kKCksdGhpcy5nZXRWYWx1ZSh0LGUpfV9zZXRWYWx1ZV91bmJvdW5kKHQsZSl7dGhpcy5iaW5kKCksdGhpcy5zZXRWYWx1ZSh0LGUpfWJpbmQoKXtsZXQgdD10aGlzLm5vZGU7Y29uc3QgZT10aGlzLnBhcnNlZFBhdGgsbj1lLm9iamVjdE5hbWUsbz1lLnByb3BlcnR5TmFtZTtsZXQgaT1lLnByb3BlcnR5SW5kZXg7aWYodHx8KHQ9d2d0LmZpbmROb2RlKHRoaXMucm9vdE5vZGUsZS5ub2RlTmFtZSl8fHRoaXMucm9vdE5vZGUsdGhpcy5ub2RlPXQpLHRoaXMuZ2V0VmFsdWU9dGhpcy5fZ2V0VmFsdWVfdW5hdmFpbGFibGUsdGhpcy5zZXRWYWx1ZT10aGlzLl9zZXRWYWx1ZV91bmF2YWlsYWJsZSwhdClyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJUSFJFRS5Qcm9wZXJ0eUJpbmRpbmc6IFRyeWluZyB0byB1cGRhdGUgbm9kZSBmb3IgdHJhY2s6ICIrdGhpcy5wYXRoKyIgYnV0IGl0IHdhc24ndCBmb3VuZC4iKTtpZihuKXtsZXQgbz1lLm9iamVjdEluZGV4O3N3aXRjaChuKXtjYXNlIm1hdGVyaWFscyI6aWYoIXQubWF0ZXJpYWwpcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcigiVEhSRUUuUHJvcGVydHlCaW5kaW5nOiBDYW4gbm90IGJpbmQgdG8gbWF0ZXJpYWwgYXMgbm9kZSBkb2VzIG5vdCBoYXZlIGEgbWF0ZXJpYWwuIix0aGlzKTtpZighdC5tYXRlcmlhbC5tYXRlcmlhbHMpcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcigiVEhSRUUuUHJvcGVydHlCaW5kaW5nOiBDYW4gbm90IGJpbmQgdG8gbWF0ZXJpYWwubWF0ZXJpYWxzIGFzIG5vZGUubWF0ZXJpYWwgZG9lcyBub3QgaGF2ZSBhIG1hdGVyaWFscyBhcnJheS4iLHRoaXMpO3Q9dC5tYXRlcmlhbC5tYXRlcmlhbHM7YnJlYWs7Y2FzZSJib25lcyI6aWYoIXQuc2tlbGV0b24pcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcigiVEhSRUUuUHJvcGVydHlCaW5kaW5nOiBDYW4gbm90IGJpbmQgdG8gYm9uZXMgYXMgbm9kZSBkb2VzIG5vdCBoYXZlIGEgc2tlbGV0b24uIix0aGlzKTt0PXQuc2tlbGV0b24uYm9uZXM7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspaWYodFtlXS5uYW1lPT09byl7bz1lO2JyZWFrfWJyZWFrO2RlZmF1bHQ6aWYodm9pZCAwPT09dFtuXSlyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJUSFJFRS5Qcm9wZXJ0eUJpbmRpbmc6IENhbiBub3QgYmluZCB0byBvYmplY3ROYW1lIG9mIG5vZGUgdW5kZWZpbmVkLiIsdGhpcyk7dD10W25dfWlmKHZvaWQgMCE9PW8pe2lmKHZvaWQgMD09PXRbb10pcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcigiVEhSRUUuUHJvcGVydHlCaW5kaW5nOiBUcnlpbmcgdG8gYmluZCB0byBvYmplY3RJbmRleCBvZiBvYmplY3ROYW1lLCBidXQgaXMgdW5kZWZpbmVkLiIsdGhpcyx0KTt0PXRbb119fWNvbnN0IGE9dFtvXTtpZih2b2lkIDA9PT1hKXtyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJUSFJFRS5Qcm9wZXJ0eUJpbmRpbmc6IFRyeWluZyB0byB1cGRhdGUgcHJvcGVydHkgZm9yIHRyYWNrOiAiK2Uubm9kZU5hbWUrIi4iK28rIiBidXQgaXQgd2Fzbid0IGZvdW5kLiIsdCl9bGV0IHI9dGhpcy5WZXJzaW9uaW5nLk5vbmU7dGhpcy50YXJnZXRPYmplY3Q9dCx2b2lkIDAhPT10Lm5lZWRzVXBkYXRlP3I9dGhpcy5WZXJzaW9uaW5nLk5lZWRzVXBkYXRlOnZvaWQgMCE9PXQubWF0cml4V29ybGROZWVkc1VwZGF0ZSYmKHI9dGhpcy5WZXJzaW9uaW5nLk1hdHJpeFdvcmxkTmVlZHNVcGRhdGUpO2xldCBzPXRoaXMuQmluZGluZ1R5cGUuRGlyZWN0O2lmKHZvaWQgMCE9PWkpe2lmKCJtb3JwaFRhcmdldEluZmx1ZW5jZXMiPT09byl7aWYoIXQuZ2VvbWV0cnkpcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcigiVEhSRUUuUHJvcGVydHlCaW5kaW5nOiBDYW4gbm90IGJpbmQgdG8gbW9ycGhUYXJnZXRJbmZsdWVuY2VzIGJlY2F1c2Ugbm9kZSBkb2VzIG5vdCBoYXZlIGEgZ2VvbWV0cnkuIix0aGlzKTtpZighdC5nZW9tZXRyeS5pc0J1ZmZlckdlb21ldHJ5KXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIlRIUkVFLlByb3BlcnR5QmluZGluZzogQ2FuIG5vdCBiaW5kIHRvIG1vcnBoVGFyZ2V0SW5mbHVlbmNlcyBvbiBUSFJFRS5HZW9tZXRyeS4gVXNlIFRIUkVFLkJ1ZmZlckdlb21ldHJ5IGluc3RlYWQuIix0aGlzKTtpZighdC5nZW9tZXRyeS5tb3JwaEF0dHJpYnV0ZXMpcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcigiVEhSRUUuUHJvcGVydHlCaW5kaW5nOiBDYW4gbm90IGJpbmQgdG8gbW9ycGhUYXJnZXRJbmZsdWVuY2VzIGJlY2F1c2Ugbm9kZSBkb2VzIG5vdCBoYXZlIGEgZ2VvbWV0cnkubW9ycGhBdHRyaWJ1dGVzLiIsdGhpcyk7dm9pZCAwIT09dC5tb3JwaFRhcmdldERpY3Rpb25hcnlbaV0mJihpPXQubW9ycGhUYXJnZXREaWN0aW9uYXJ5W2ldKX1zPXRoaXMuQmluZGluZ1R5cGUuQXJyYXlFbGVtZW50LHRoaXMucmVzb2x2ZWRQcm9wZXJ0eT1hLHRoaXMucHJvcGVydHlJbmRleD1pfWVsc2Ugdm9pZCAwIT09YS5mcm9tQXJyYXkmJnZvaWQgMCE9PWEudG9BcnJheT8ocz10aGlzLkJpbmRpbmdUeXBlLkhhc0Zyb21Ub0FycmF5LHRoaXMucmVzb2x2ZWRQcm9wZXJ0eT1hKTpBcnJheS5pc0FycmF5KGEpPyhzPXRoaXMuQmluZGluZ1R5cGUuRW50aXJlQXJyYXksdGhpcy5yZXNvbHZlZFByb3BlcnR5PWEpOnRoaXMucHJvcGVydHlOYW1lPW87dGhpcy5nZXRWYWx1ZT10aGlzLkdldHRlckJ5QmluZGluZ1R5cGVbc10sdGhpcy5zZXRWYWx1ZT10aGlzLlNldHRlckJ5QmluZGluZ1R5cGVBbmRWZXJzaW9uaW5nW3NdW3JdfXVuYmluZCgpe3RoaXMubm9kZT1udWxsLHRoaXMuZ2V0VmFsdWU9dGhpcy5fZ2V0VmFsdWVfdW5ib3VuZCx0aGlzLnNldFZhbHVlPXRoaXMuX3NldFZhbHVlX3VuYm91bmR9fXdndC5Db21wb3NpdGU9Y2xhc3N7Y29uc3RydWN0b3IodCxlLG4pe2NvbnN0IG89bnx8d2d0LnBhcnNlVHJhY2tOYW1lKGUpO3RoaXMuX3RhcmdldEdyb3VwPXQsdGhpcy5fYmluZGluZ3M9dC5zdWJzY3JpYmVfKGUsbyl9Z2V0VmFsdWUodCxlKXt0aGlzLmJpbmQoKTtjb25zdCBuPXRoaXMuX2JpbmRpbmdzW3RoaXMuX3RhcmdldEdyb3VwLm5DYWNoZWRPYmplY3RzX107dm9pZCAwIT09biYmbi5nZXRWYWx1ZSh0LGUpfXNldFZhbHVlKHQsZSl7Y29uc3Qgbj10aGlzLl9iaW5kaW5ncztmb3IobGV0IG89dGhpcy5fdGFyZ2V0R3JvdXAubkNhY2hlZE9iamVjdHNfLGk9bi5sZW5ndGg7byE9PWk7KytvKW5bb10uc2V0VmFsdWUodCxlKX1iaW5kKCl7Y29uc3QgdD10aGlzLl9iaW5kaW5ncztmb3IobGV0IGU9dGhpcy5fdGFyZ2V0R3JvdXAubkNhY2hlZE9iamVjdHNfLG49dC5sZW5ndGg7ZSE9PW47KytlKXRbZV0uYmluZCgpfXVuYmluZCgpe2NvbnN0IHQ9dGhpcy5fYmluZGluZ3M7Zm9yKGxldCBlPXRoaXMuX3RhcmdldEdyb3VwLm5DYWNoZWRPYmplY3RzXyxuPXQubGVuZ3RoO2UhPT1uOysrZSl0W2VdLnVuYmluZCgpfX0sd2d0LnByb3RvdHlwZS5CaW5kaW5nVHlwZT17RGlyZWN0OjAsRW50aXJlQXJyYXk6MSxBcnJheUVsZW1lbnQ6MixIYXNGcm9tVG9BcnJheTozfSx3Z3QucHJvdG90eXBlLlZlcnNpb25pbmc9e05vbmU6MCxOZWVkc1VwZGF0ZToxLE1hdHJpeFdvcmxkTmVlZHNVcGRhdGU6Mn0sd2d0LnByb3RvdHlwZS5HZXR0ZXJCeUJpbmRpbmdUeXBlPVt3Z3QucHJvdG90eXBlLl9nZXRWYWx1ZV9kaXJlY3Qsd2d0LnByb3RvdHlwZS5fZ2V0VmFsdWVfYXJyYXksd2d0LnByb3RvdHlwZS5fZ2V0VmFsdWVfYXJyYXlFbGVtZW50LHdndC5wcm90b3R5cGUuX2dldFZhbHVlX3RvQXJyYXldLHdndC5wcm90b3R5cGUuU2V0dGVyQnlCaW5kaW5nVHlwZUFuZFZlcnNpb25pbmc9W1t3Z3QucHJvdG90eXBlLl9zZXRWYWx1ZV9kaXJlY3Qsd2d0LnByb3RvdHlwZS5fc2V0VmFsdWVfZGlyZWN0X3NldE5lZWRzVXBkYXRlLHdndC5wcm90b3R5cGUuX3NldFZhbHVlX2RpcmVjdF9zZXRNYXRyaXhXb3JsZE5lZWRzVXBkYXRlXSxbd2d0LnByb3RvdHlwZS5fc2V0VmFsdWVfYXJyYXksd2d0LnByb3RvdHlwZS5fc2V0VmFsdWVfYXJyYXlfc2V0TmVlZHNVcGRhdGUsd2d0LnByb3RvdHlwZS5fc2V0VmFsdWVfYXJyYXlfc2V0TWF0cml4V29ybGROZWVkc1VwZGF0ZV0sW3dndC5wcm90b3R5cGUuX3NldFZhbHVlX2FycmF5RWxlbWVudCx3Z3QucHJvdG90eXBlLl9zZXRWYWx1ZV9hcnJheUVsZW1lbnRfc2V0TmVlZHNVcGRhdGUsd2d0LnByb3RvdHlwZS5fc2V0VmFsdWVfYXJyYXlFbGVtZW50X3NldE1hdHJpeFdvcmxkTmVlZHNVcGRhdGVdLFt3Z3QucHJvdG90eXBlLl9zZXRWYWx1ZV9mcm9tQXJyYXksd2d0LnByb3RvdHlwZS5fc2V0VmFsdWVfZnJvbUFycmF5X3NldE5lZWRzVXBkYXRlLHdndC5wcm90b3R5cGUuX3NldFZhbHVlX2Zyb21BcnJheV9zZXRNYXRyaXhXb3JsZE5lZWRzVXBkYXRlXV07Y2xhc3Mga2d0e2NvbnN0cnVjdG9yKHQsZSxuPW51bGwsbz1lLmJsZW5kTW9kZSl7dGhpcy5fbWl4ZXI9dCx0aGlzLl9jbGlwPWUsdGhpcy5fbG9jYWxSb290PW4sdGhpcy5ibGVuZE1vZGU9bztjb25zdCBpPWUudHJhY2tzLGE9aS5sZW5ndGgscj1uZXcgQXJyYXkoYSkscz17ZW5kaW5nU3RhcnQ6WnJ0LGVuZGluZ0VuZDpacnR9O2ZvcihsZXQgdD0wO3QhPT1hOysrdCl7Y29uc3QgZT1pW3RdLmNyZWF0ZUludGVycG9sYW50KG51bGwpO3JbdF09ZSxlLnNldHRpbmdzPXN9dGhpcy5faW50ZXJwb2xhbnRTZXR0aW5ncz1zLHRoaXMuX2ludGVycG9sYW50cz1yLHRoaXMuX3Byb3BlcnR5QmluZGluZ3M9bmV3IEFycmF5KGEpLHRoaXMuX2NhY2hlSW5kZXg9bnVsbCx0aGlzLl9ieUNsaXBDYWNoZUluZGV4PW51bGwsdGhpcy5fdGltZVNjYWxlSW50ZXJwb2xhbnQ9bnVsbCx0aGlzLl93ZWlnaHRJbnRlcnBvbGFudD1udWxsLHRoaXMubG9vcD0yMjAxLHRoaXMuX2xvb3BDb3VudD0tMSx0aGlzLl9zdGFydFRpbWU9bnVsbCx0aGlzLnRpbWU9MCx0aGlzLnRpbWVTY2FsZT0xLHRoaXMuX2VmZmVjdGl2ZVRpbWVTY2FsZT0xLHRoaXMud2VpZ2h0PTEsdGhpcy5fZWZmZWN0aXZlV2VpZ2h0PTEsdGhpcy5yZXBldGl0aW9ucz0xLzAsdGhpcy5wYXVzZWQ9ITEsdGhpcy5lbmFibGVkPSEwLHRoaXMuY2xhbXBXaGVuRmluaXNoZWQ9ITEsdGhpcy56ZXJvU2xvcGVBdFN0YXJ0PSEwLHRoaXMuemVyb1Nsb3BlQXRFbmQ9ITB9cGxheSgpe3JldHVybiB0aGlzLl9taXhlci5fYWN0aXZhdGVBY3Rpb24odGhpcyksdGhpc31zdG9wKCl7cmV0dXJuIHRoaXMuX21peGVyLl9kZWFjdGl2YXRlQWN0aW9uKHRoaXMpLHRoaXMucmVzZXQoKX1yZXNldCgpe3JldHVybiB0aGlzLnBhdXNlZD0hMSx0aGlzLmVuYWJsZWQ9ITAsdGhpcy50aW1lPTAsdGhpcy5fbG9vcENvdW50PS0xLHRoaXMuX3N0YXJ0VGltZT1udWxsLHRoaXMuc3RvcEZhZGluZygpLnN0b3BXYXJwaW5nKCl9aXNSdW5uaW5nKCl7cmV0dXJuIHRoaXMuZW5hYmxlZCYmIXRoaXMucGF1c2VkJiYwIT09dGhpcy50aW1lU2NhbGUmJm51bGw9PT10aGlzLl9zdGFydFRpbWUmJnRoaXMuX21peGVyLl9pc0FjdGl2ZUFjdGlvbih0aGlzKX1pc1NjaGVkdWxlZCgpe3JldHVybiB0aGlzLl9taXhlci5faXNBY3RpdmVBY3Rpb24odGhpcyl9c3RhcnRBdCh0KXtyZXR1cm4gdGhpcy5fc3RhcnRUaW1lPXQsdGhpc31zZXRMb29wKHQsZSl7cmV0dXJuIHRoaXMubG9vcD10LHRoaXMucmVwZXRpdGlvbnM9ZSx0aGlzfXNldEVmZmVjdGl2ZVdlaWdodCh0KXtyZXR1cm4gdGhpcy53ZWlnaHQ9dCx0aGlzLl9lZmZlY3RpdmVXZWlnaHQ9dGhpcy5lbmFibGVkP3Q6MCx0aGlzLnN0b3BGYWRpbmcoKX1nZXRFZmZlY3RpdmVXZWlnaHQoKXtyZXR1cm4gdGhpcy5fZWZmZWN0aXZlV2VpZ2h0fWZhZGVJbih0KXtyZXR1cm4gdGhpcy5fc2NoZWR1bGVGYWRpbmcodCwwLDEpfWZhZGVPdXQodCl7cmV0dXJuIHRoaXMuX3NjaGVkdWxlRmFkaW5nKHQsMSwwKX1jcm9zc0ZhZGVGcm9tKHQsZSxuKXtpZih0LmZhZGVPdXQoZSksdGhpcy5mYWRlSW4oZSksbil7Y29uc3Qgbj10aGlzLl9jbGlwLmR1cmF0aW9uLG89dC5fY2xpcC5kdXJhdGlvbixpPW4vbzt0LndhcnAoMSxvL24sZSksdGhpcy53YXJwKGksMSxlKX1yZXR1cm4gdGhpc31jcm9zc0ZhZGVUbyh0LGUsbil7cmV0dXJuIHQuY3Jvc3NGYWRlRnJvbSh0aGlzLGUsbil9c3RvcEZhZGluZygpe2NvbnN0IHQ9dGhpcy5fd2VpZ2h0SW50ZXJwb2xhbnQ7cmV0dXJuIG51bGwhPT10JiYodGhpcy5fd2VpZ2h0SW50ZXJwb2xhbnQ9bnVsbCx0aGlzLl9taXhlci5fdGFrZUJhY2tDb250cm9sSW50ZXJwb2xhbnQodCkpLHRoaXN9c2V0RWZmZWN0aXZlVGltZVNjYWxlKHQpe3JldHVybiB0aGlzLnRpbWVTY2FsZT10LHRoaXMuX2VmZmVjdGl2ZVRpbWVTY2FsZT10aGlzLnBhdXNlZD8wOnQsdGhpcy5zdG9wV2FycGluZygpfWdldEVmZmVjdGl2ZVRpbWVTY2FsZSgpe3JldHVybiB0aGlzLl9lZmZlY3RpdmVUaW1lU2NhbGV9c2V0RHVyYXRpb24odCl7cmV0dXJuIHRoaXMudGltZVNjYWxlPXRoaXMuX2NsaXAuZHVyYXRpb24vdCx0aGlzLnN0b3BXYXJwaW5nKCl9c3luY1dpdGgodCl7cmV0dXJuIHRoaXMudGltZT10LnRpbWUsdGhpcy50aW1lU2NhbGU9dC50aW1lU2NhbGUsdGhpcy5zdG9wV2FycGluZygpfWhhbHQodCl7cmV0dXJuIHRoaXMud2FycCh0aGlzLl9lZmZlY3RpdmVUaW1lU2NhbGUsMCx0KX13YXJwKHQsZSxuKXtjb25zdCBvPXRoaXMuX21peGVyLGk9by50aW1lLGE9dGhpcy50aW1lU2NhbGU7bGV0IHI9dGhpcy5fdGltZVNjYWxlSW50ZXJwb2xhbnQ7bnVsbD09PXImJihyPW8uX2xlbmRDb250cm9sSW50ZXJwb2xhbnQoKSx0aGlzLl90aW1lU2NhbGVJbnRlcnBvbGFudD1yKTtjb25zdCBzPXIucGFyYW1ldGVyUG9zaXRpb25zLGw9ci5zYW1wbGVWYWx1ZXM7cmV0dXJuIHNbMF09aSxzWzFdPWkrbixsWzBdPXQvYSxsWzFdPWUvYSx0aGlzfXN0b3BXYXJwaW5nKCl7Y29uc3QgdD10aGlzLl90aW1lU2NhbGVJbnRlcnBvbGFudDtyZXR1cm4gbnVsbCE9PXQmJih0aGlzLl90aW1lU2NhbGVJbnRlcnBvbGFudD1udWxsLHRoaXMuX21peGVyLl90YWtlQmFja0NvbnRyb2xJbnRlcnBvbGFudCh0KSksdGhpc31nZXRNaXhlcigpe3JldHVybiB0aGlzLl9taXhlcn1nZXRDbGlwKCl7cmV0dXJuIHRoaXMuX2NsaXB9Z2V0Um9vdCgpe3JldHVybiB0aGlzLl9sb2NhbFJvb3R8fHRoaXMuX21peGVyLl9yb290fV91cGRhdGUodCxlLG4sbyl7aWYoIXRoaXMuZW5hYmxlZClyZXR1cm4gdm9pZCB0aGlzLl91cGRhdGVXZWlnaHQodCk7Y29uc3QgaT10aGlzLl9zdGFydFRpbWU7aWYobnVsbCE9PWkpe2NvbnN0IG89KHQtaSkqbjtpZihvPDB8fDA9PT1uKXJldHVybjt0aGlzLl9zdGFydFRpbWU9bnVsbCxlPW4qb31lKj10aGlzLl91cGRhdGVUaW1lU2NhbGUodCk7Y29uc3QgYT10aGlzLl91cGRhdGVUaW1lKGUpLHI9dGhpcy5fdXBkYXRlV2VpZ2h0KHQpO2lmKHI+MCl7Y29uc3QgdD10aGlzLl9pbnRlcnBvbGFudHMsZT10aGlzLl9wcm9wZXJ0eUJpbmRpbmdzO3N3aXRjaCh0aGlzLmJsZW5kTW9kZSl7Y2FzZSAyNTAxOmZvcihsZXQgbj0wLG89dC5sZW5ndGg7biE9PW87KytuKXRbbl0uZXZhbHVhdGUoYSksZVtuXS5hY2N1bXVsYXRlQWRkaXRpdmUocik7YnJlYWs7Y2FzZSBKcnQ6ZGVmYXVsdDpmb3IobGV0IG49MCxpPXQubGVuZ3RoO24hPT1pOysrbil0W25dLmV2YWx1YXRlKGEpLGVbbl0uYWNjdW11bGF0ZShvLHIpfX19X3VwZGF0ZVdlaWdodCh0KXtsZXQgZT0wO2lmKHRoaXMuZW5hYmxlZCl7ZT10aGlzLndlaWdodDtjb25zdCBuPXRoaXMuX3dlaWdodEludGVycG9sYW50O2lmKG51bGwhPT1uKXtjb25zdCBvPW4uZXZhbHVhdGUodClbMF07ZSo9byx0Pm4ucGFyYW1ldGVyUG9zaXRpb25zWzFdJiYodGhpcy5zdG9wRmFkaW5nKCksMD09PW8mJih0aGlzLmVuYWJsZWQ9ITEpKX19cmV0dXJuIHRoaXMuX2VmZmVjdGl2ZVdlaWdodD1lLGV9X3VwZGF0ZVRpbWVTY2FsZSh0KXtsZXQgZT0wO2lmKCF0aGlzLnBhdXNlZCl7ZT10aGlzLnRpbWVTY2FsZTtjb25zdCBuPXRoaXMuX3RpbWVTY2FsZUludGVycG9sYW50O2lmKG51bGwhPT1uKXtlKj1uLmV2YWx1YXRlKHQpWzBdLHQ+bi5wYXJhbWV0ZXJQb3NpdGlvbnNbMV0mJih0aGlzLnN0b3BXYXJwaW5nKCksMD09PWU/dGhpcy5wYXVzZWQ9ITA6dGhpcy50aW1lU2NhbGU9ZSl9fXJldHVybiB0aGlzLl9lZmZlY3RpdmVUaW1lU2NhbGU9ZSxlfV91cGRhdGVUaW1lKHQpe2NvbnN0IGU9dGhpcy5fY2xpcC5kdXJhdGlvbixuPXRoaXMubG9vcDtsZXQgbz10aGlzLnRpbWUrdCxpPXRoaXMuX2xvb3BDb3VudDtjb25zdCBhPTIyMDI9PT1uO2lmKDA9PT10KXJldHVybi0xPT09aT9vOmEmJjE9PSgxJmkpP2UtbzpvO2lmKDIyMDA9PT1uKXstMT09PWkmJih0aGlzLl9sb29wQ291bnQ9MCx0aGlzLl9zZXRFbmRpbmdzKCEwLCEwLCExKSk7dDp7aWYobz49ZSlvPWU7ZWxzZXtpZighKG88MCkpe3RoaXMudGltZT1vO2JyZWFrIHR9bz0wfXRoaXMuY2xhbXBXaGVuRmluaXNoZWQ/dGhpcy5wYXVzZWQ9ITA6dGhpcy5lbmFibGVkPSExLHRoaXMudGltZT1vLHRoaXMuX21peGVyLmRpc3BhdGNoRXZlbnQoe3R5cGU6ImZpbmlzaGVkIixhY3Rpb246dGhpcyxkaXJlY3Rpb246dDwwPy0xOjF9KX19ZWxzZXtpZigtMT09PWkmJih0Pj0wPyhpPTAsdGhpcy5fc2V0RW5kaW5ncyghMCwwPT09dGhpcy5yZXBldGl0aW9ucyxhKSk6dGhpcy5fc2V0RW5kaW5ncygwPT09dGhpcy5yZXBldGl0aW9ucywhMCxhKSksbz49ZXx8bzwwKXtjb25zdCBuPU1hdGguZmxvb3Ioby9lKTtvLT1lKm4saSs9TWF0aC5hYnMobik7Y29uc3Qgcj10aGlzLnJlcGV0aXRpb25zLWk7aWYocjw9MCl0aGlzLmNsYW1wV2hlbkZpbmlzaGVkP3RoaXMucGF1c2VkPSEwOnRoaXMuZW5hYmxlZD0hMSxvPXQ+MD9lOjAsdGhpcy50aW1lPW8sdGhpcy5fbWl4ZXIuZGlzcGF0Y2hFdmVudCh7dHlwZToiZmluaXNoZWQiLGFjdGlvbjp0aGlzLGRpcmVjdGlvbjp0PjA/MTotMX0pO2Vsc2V7aWYoMT09PXIpe2NvbnN0IGU9dDwwO3RoaXMuX3NldEVuZGluZ3MoZSwhZSxhKX1lbHNlIHRoaXMuX3NldEVuZGluZ3MoITEsITEsYSk7dGhpcy5fbG9vcENvdW50PWksdGhpcy50aW1lPW8sdGhpcy5fbWl4ZXIuZGlzcGF0Y2hFdmVudCh7dHlwZToibG9vcCIsYWN0aW9uOnRoaXMsbG9vcERlbHRhOm59KX19ZWxzZSB0aGlzLnRpbWU9bztpZihhJiYxPT0oMSZpKSlyZXR1cm4gZS1vfXJldHVybiBvfV9zZXRFbmRpbmdzKHQsZSxuKXtjb25zdCBvPXRoaXMuX2ludGVycG9sYW50U2V0dGluZ3M7bj8oby5lbmRpbmdTdGFydD1YcnQsby5lbmRpbmdFbmQ9WHJ0KTooby5lbmRpbmdTdGFydD10P3RoaXMuemVyb1Nsb3BlQXRTdGFydD9YcnQ6WnJ0OktydCxvLmVuZGluZ0VuZD1lP3RoaXMuemVyb1Nsb3BlQXRFbmQ/WHJ0OlpydDpLcnQpfV9zY2hlZHVsZUZhZGluZyh0LGUsbil7Y29uc3Qgbz10aGlzLl9taXhlcixpPW8udGltZTtsZXQgYT10aGlzLl93ZWlnaHRJbnRlcnBvbGFudDtudWxsPT09YSYmKGE9by5fbGVuZENvbnRyb2xJbnRlcnBvbGFudCgpLHRoaXMuX3dlaWdodEludGVycG9sYW50PWEpO2NvbnN0IHI9YS5wYXJhbWV0ZXJQb3NpdGlvbnMscz1hLnNhbXBsZVZhbHVlcztyZXR1cm4gclswXT1pLHNbMF09ZSxyWzFdPWkrdCxzWzFdPW4sdGhpc319KGNsYXNzIGV4dGVuZHMgcnN0e2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy5fcm9vdD10LHRoaXMuX2luaXRNZW1vcnlNYW5hZ2VyKCksdGhpcy5fYWNjdUluZGV4PTAsdGhpcy50aW1lPTAsdGhpcy50aW1lU2NhbGU9MX1fYmluZEFjdGlvbih0LGUpe2NvbnN0IG49dC5fbG9jYWxSb290fHx0aGlzLl9yb290LG89dC5fY2xpcC50cmFja3MsaT1vLmxlbmd0aCxhPXQuX3Byb3BlcnR5QmluZGluZ3Mscj10Ll9pbnRlcnBvbGFudHMscz1uLnV1aWQsbD10aGlzLl9iaW5kaW5nc0J5Um9vdEFuZE5hbWU7bGV0IGM9bFtzXTt2b2lkIDA9PT1jJiYoYz17fSxsW3NdPWMpO2ZvcihsZXQgdD0wO3QhPT1pOysrdCl7Y29uc3QgaT1vW3RdLGw9aS5uYW1lO2xldCBkPWNbbF07aWYodm9pZCAwIT09ZClhW3RdPWQ7ZWxzZXtpZihkPWFbdF0sdm9pZCAwIT09ZCl7bnVsbD09PWQuX2NhY2hlSW5kZXgmJigrK2QucmVmZXJlbmNlQ291bnQsdGhpcy5fYWRkSW5hY3RpdmVCaW5kaW5nKGQscyxsKSk7Y29udGludWV9ZD1uZXcgZ2d0KHdndC5jcmVhdGUobixsLGUmJmUuX3Byb3BlcnR5QmluZGluZ3NbdF0uYmluZGluZy5wYXJzZWRQYXRoKSxpLlZhbHVlVHlwZU5hbWUsaS5nZXRWYWx1ZVNpemUoKSksKytkLnJlZmVyZW5jZUNvdW50LHRoaXMuX2FkZEluYWN0aXZlQmluZGluZyhkLHMsbCksYVt0XT1kfXJbdF0ucmVzdWx0QnVmZmVyPWQuYnVmZmVyfX1fYWN0aXZhdGVBY3Rpb24odCl7aWYoIXRoaXMuX2lzQWN0aXZlQWN0aW9uKHQpKXtpZihudWxsPT09dC5fY2FjaGVJbmRleCl7Y29uc3QgZT0odC5fbG9jYWxSb290fHx0aGlzLl9yb290KS51dWlkLG49dC5fY2xpcC51dWlkLG89dGhpcy5fYWN0aW9uc0J5Q2xpcFtuXTt0aGlzLl9iaW5kQWN0aW9uKHQsbyYmby5rbm93bkFjdGlvbnNbMF0pLHRoaXMuX2FkZEluYWN0aXZlQWN0aW9uKHQsbixlKX1jb25zdCBlPXQuX3Byb3BlcnR5QmluZGluZ3M7Zm9yKGxldCB0PTAsbj1lLmxlbmd0aDt0IT09bjsrK3Qpe2NvbnN0IG49ZVt0XTswPT1uLnVzZUNvdW50KysmJih0aGlzLl9sZW5kQmluZGluZyhuKSxuLnNhdmVPcmlnaW5hbFN0YXRlKCkpfXRoaXMuX2xlbmRBY3Rpb24odCl9fV9kZWFjdGl2YXRlQWN0aW9uKHQpe2lmKHRoaXMuX2lzQWN0aXZlQWN0aW9uKHQpKXtjb25zdCBlPXQuX3Byb3BlcnR5QmluZGluZ3M7Zm9yKGxldCB0PTAsbj1lLmxlbmd0aDt0IT09bjsrK3Qpe2NvbnN0IG49ZVt0XTswPT0tLW4udXNlQ291bnQmJihuLnJlc3RvcmVPcmlnaW5hbFN0YXRlKCksdGhpcy5fdGFrZUJhY2tCaW5kaW5nKG4pKX10aGlzLl90YWtlQmFja0FjdGlvbih0KX19X2luaXRNZW1vcnlNYW5hZ2VyKCl7dGhpcy5fYWN0aW9ucz1bXSx0aGlzLl9uQWN0aXZlQWN0aW9ucz0wLHRoaXMuX2FjdGlvbnNCeUNsaXA9e30sdGhpcy5fYmluZGluZ3M9W10sdGhpcy5fbkFjdGl2ZUJpbmRpbmdzPTAsdGhpcy5fYmluZGluZ3NCeVJvb3RBbmROYW1lPXt9LHRoaXMuX2NvbnRyb2xJbnRlcnBvbGFudHM9W10sdGhpcy5fbkFjdGl2ZUNvbnRyb2xJbnRlcnBvbGFudHM9MDtjb25zdCB0PXRoaXM7dGhpcy5zdGF0cz17YWN0aW9uczp7Z2V0IHRvdGFsKCl7cmV0dXJuIHQuX2FjdGlvbnMubGVuZ3RofSxnZXQgaW5Vc2UoKXtyZXR1cm4gdC5fbkFjdGl2ZUFjdGlvbnN9fSxiaW5kaW5nczp7Z2V0IHRvdGFsKCl7cmV0dXJuIHQuX2JpbmRpbmdzLmxlbmd0aH0sZ2V0IGluVXNlKCl7cmV0dXJuIHQuX25BY3RpdmVCaW5kaW5nc319LGNvbnRyb2xJbnRlcnBvbGFudHM6e2dldCB0b3RhbCgpe3JldHVybiB0Ll9jb250cm9sSW50ZXJwb2xhbnRzLmxlbmd0aH0sZ2V0IGluVXNlKCl7cmV0dXJuIHQuX25BY3RpdmVDb250cm9sSW50ZXJwb2xhbnRzfX19fV9pc0FjdGl2ZUFjdGlvbih0KXtjb25zdCBlPXQuX2NhY2hlSW5kZXg7cmV0dXJuIG51bGwhPT1lJiZlPHRoaXMuX25BY3RpdmVBY3Rpb25zfV9hZGRJbmFjdGl2ZUFjdGlvbih0LGUsbil7Y29uc3Qgbz10aGlzLl9hY3Rpb25zLGk9dGhpcy5fYWN0aW9uc0J5Q2xpcDtsZXQgYT1pW2VdO2lmKHZvaWQgMD09PWEpYT17a25vd25BY3Rpb25zOlt0XSxhY3Rpb25CeVJvb3Q6e319LHQuX2J5Q2xpcENhY2hlSW5kZXg9MCxpW2VdPWE7ZWxzZXtjb25zdCBlPWEua25vd25BY3Rpb25zO3QuX2J5Q2xpcENhY2hlSW5kZXg9ZS5sZW5ndGgsZS5wdXNoKHQpfXQuX2NhY2hlSW5kZXg9by5sZW5ndGgsby5wdXNoKHQpLGEuYWN0aW9uQnlSb290W25dPXR9X3JlbW92ZUluYWN0aXZlQWN0aW9uKHQpe2NvbnN0IGU9dGhpcy5fYWN0aW9ucyxuPWVbZS5sZW5ndGgtMV0sbz10Ll9jYWNoZUluZGV4O24uX2NhY2hlSW5kZXg9byxlW29dPW4sZS5wb3AoKSx0Ll9jYWNoZUluZGV4PW51bGw7Y29uc3QgaT10Ll9jbGlwLnV1aWQsYT10aGlzLl9hY3Rpb25zQnlDbGlwLHI9YVtpXSxzPXIua25vd25BY3Rpb25zLGw9c1tzLmxlbmd0aC0xXSxjPXQuX2J5Q2xpcENhY2hlSW5kZXg7bC5fYnlDbGlwQ2FjaGVJbmRleD1jLHNbY109bCxzLnBvcCgpLHQuX2J5Q2xpcENhY2hlSW5kZXg9bnVsbDtkZWxldGUgci5hY3Rpb25CeVJvb3RbKHQuX2xvY2FsUm9vdHx8dGhpcy5fcm9vdCkudXVpZF0sMD09PXMubGVuZ3RoJiZkZWxldGUgYVtpXSx0aGlzLl9yZW1vdmVJbmFjdGl2ZUJpbmRpbmdzRm9yQWN0aW9uKHQpfV9yZW1vdmVJbmFjdGl2ZUJpbmRpbmdzRm9yQWN0aW9uKHQpe2NvbnN0IGU9dC5fcHJvcGVydHlCaW5kaW5ncztmb3IobGV0IHQ9MCxuPWUubGVuZ3RoO3QhPT1uOysrdCl7Y29uc3Qgbj1lW3RdOzA9PS0tbi5yZWZlcmVuY2VDb3VudCYmdGhpcy5fcmVtb3ZlSW5hY3RpdmVCaW5kaW5nKG4pfX1fbGVuZEFjdGlvbih0KXtjb25zdCBlPXRoaXMuX2FjdGlvbnMsbj10Ll9jYWNoZUluZGV4LG89dGhpcy5fbkFjdGl2ZUFjdGlvbnMrKyxpPWVbb107dC5fY2FjaGVJbmRleD1vLGVbb109dCxpLl9jYWNoZUluZGV4PW4sZVtuXT1pfV90YWtlQmFja0FjdGlvbih0KXtjb25zdCBlPXRoaXMuX2FjdGlvbnMsbj10Ll9jYWNoZUluZGV4LG89LS10aGlzLl9uQWN0aXZlQWN0aW9ucyxpPWVbb107dC5fY2FjaGVJbmRleD1vLGVbb109dCxpLl9jYWNoZUluZGV4PW4sZVtuXT1pfV9hZGRJbmFjdGl2ZUJpbmRpbmcodCxlLG4pe2NvbnN0IG89dGhpcy5fYmluZGluZ3NCeVJvb3RBbmROYW1lLGk9dGhpcy5fYmluZGluZ3M7bGV0IGE9b1tlXTt2b2lkIDA9PT1hJiYoYT17fSxvW2VdPWEpLGFbbl09dCx0Ll9jYWNoZUluZGV4PWkubGVuZ3RoLGkucHVzaCh0KX1fcmVtb3ZlSW5hY3RpdmVCaW5kaW5nKHQpe2NvbnN0IGU9dGhpcy5fYmluZGluZ3Msbj10LmJpbmRpbmcsbz1uLnJvb3ROb2RlLnV1aWQsaT1uLnBhdGgsYT10aGlzLl9iaW5kaW5nc0J5Um9vdEFuZE5hbWUscj1hW29dLHM9ZVtlLmxlbmd0aC0xXSxsPXQuX2NhY2hlSW5kZXg7cy5fY2FjaGVJbmRleD1sLGVbbF09cyxlLnBvcCgpLGRlbGV0ZSByW2ldLDA9PT1PYmplY3Qua2V5cyhyKS5sZW5ndGgmJmRlbGV0ZSBhW29dfV9sZW5kQmluZGluZyh0KXtjb25zdCBlPXRoaXMuX2JpbmRpbmdzLG49dC5fY2FjaGVJbmRleCxvPXRoaXMuX25BY3RpdmVCaW5kaW5ncysrLGk9ZVtvXTt0Ll9jYWNoZUluZGV4PW8sZVtvXT10LGkuX2NhY2hlSW5kZXg9bixlW25dPWl9X3Rha2VCYWNrQmluZGluZyh0KXtjb25zdCBlPXRoaXMuX2JpbmRpbmdzLG49dC5fY2FjaGVJbmRleCxvPS0tdGhpcy5fbkFjdGl2ZUJpbmRpbmdzLGk9ZVtvXTt0Ll9jYWNoZUluZGV4PW8sZVtvXT10LGkuX2NhY2hlSW5kZXg9bixlW25dPWl9X2xlbmRDb250cm9sSW50ZXJwb2xhbnQoKXtjb25zdCB0PXRoaXMuX2NvbnRyb2xJbnRlcnBvbGFudHMsZT10aGlzLl9uQWN0aXZlQ29udHJvbEludGVycG9sYW50cysrO2xldCBuPXRbZV07cmV0dXJuIHZvaWQgMD09PW4mJihuPW5ldyBSdXQobmV3IEZsb2F0MzJBcnJheSgyKSxuZXcgRmxvYXQzMkFycmF5KDIpLDEsdGhpcy5fY29udHJvbEludGVycG9sYW50c1Jlc3VsdEJ1ZmZlciksbi5fX2NhY2hlSW5kZXg9ZSx0W2VdPW4pLG59X3Rha2VCYWNrQ29udHJvbEludGVycG9sYW50KHQpe2NvbnN0IGU9dGhpcy5fY29udHJvbEludGVycG9sYW50cyxuPXQuX19jYWNoZUluZGV4LG89LS10aGlzLl9uQWN0aXZlQ29udHJvbEludGVycG9sYW50cyxpPWVbb107dC5fX2NhY2hlSW5kZXg9byxlW29dPXQsaS5fX2NhY2hlSW5kZXg9bixlW25dPWl9Y2xpcEFjdGlvbih0LGUsbil7Y29uc3Qgbz1lfHx0aGlzLl9yb290LGk9by51dWlkO2xldCBhPSJzdHJpbmciPT10eXBlb2YgdD9CdXQuZmluZEJ5TmFtZShvLHQpOnQ7Y29uc3Qgcj1udWxsIT09YT9hLnV1aWQ6dCxzPXRoaXMuX2FjdGlvbnNCeUNsaXBbcl07bGV0IGw9bnVsbDtpZih2b2lkIDA9PT1uJiYobj1udWxsIT09YT9hLmJsZW5kTW9kZTpKcnQpLHZvaWQgMCE9PXMpe2NvbnN0IHQ9cy5hY3Rpb25CeVJvb3RbaV07aWYodm9pZCAwIT09dCYmdC5ibGVuZE1vZGU9PT1uKXJldHVybiB0O2w9cy5rbm93bkFjdGlvbnNbMF0sbnVsbD09PWEmJihhPWwuX2NsaXApfWlmKG51bGw9PT1hKXJldHVybiBudWxsO2NvbnN0IGM9bmV3IGtndCh0aGlzLGEsZSxuKTtyZXR1cm4gdGhpcy5fYmluZEFjdGlvbihjLGwpLHRoaXMuX2FkZEluYWN0aXZlQWN0aW9uKGMscixpKSxjfWV4aXN0aW5nQWN0aW9uKHQsZSl7Y29uc3Qgbj1lfHx0aGlzLl9yb290LG89bi51dWlkLGk9InN0cmluZyI9PXR5cGVvZiB0P0J1dC5maW5kQnlOYW1lKG4sdCk6dCxhPXRoaXMuX2FjdGlvbnNCeUNsaXBbaT9pLnV1aWQ6dF07cmV0dXJuIHZvaWQgMCE9PWEmJmEuYWN0aW9uQnlSb290W29dfHxudWxsfXN0b3BBbGxBY3Rpb24oKXtjb25zdCB0PXRoaXMuX2FjdGlvbnM7Zm9yKGxldCBlPXRoaXMuX25BY3RpdmVBY3Rpb25zLTE7ZT49MDstLWUpdFtlXS5zdG9wKCk7cmV0dXJuIHRoaXN9dXBkYXRlKHQpe2NvbnN0IGU9dGhpcy5fYWN0aW9ucyxuPXRoaXMuX25BY3RpdmVBY3Rpb25zLG89dGhpcy50aW1lKz10Kj10aGlzLnRpbWVTY2FsZSxpPU1hdGguc2lnbih0KSxhPXRoaXMuX2FjY3VJbmRleF49MTtmb3IobGV0IHI9MDtyIT09bjsrK3Ipe2Vbcl0uX3VwZGF0ZShvLHQsaSxhKX1jb25zdCByPXRoaXMuX2JpbmRpbmdzLHM9dGhpcy5fbkFjdGl2ZUJpbmRpbmdzO2ZvcihsZXQgdD0wO3QhPT1zOysrdClyW3RdLmFwcGx5KGEpO3JldHVybiB0aGlzfXNldFRpbWUodCl7dGhpcy50aW1lPTA7Zm9yKGxldCB0PTA7dDx0aGlzLl9hY3Rpb25zLmxlbmd0aDt0KyspdGhpcy5fYWN0aW9uc1t0XS50aW1lPTA7cmV0dXJuIHRoaXMudXBkYXRlKHQpfWdldFJvb3QoKXtyZXR1cm4gdGhpcy5fcm9vdH11bmNhY2hlQ2xpcCh0KXtjb25zdCBlPXRoaXMuX2FjdGlvbnMsbj10LnV1aWQsbz10aGlzLl9hY3Rpb25zQnlDbGlwLGk9b1tuXTtpZih2b2lkIDAhPT1pKXtjb25zdCB0PWkua25vd25BY3Rpb25zO2ZvcihsZXQgbj0wLG89dC5sZW5ndGg7biE9PW87KytuKXtjb25zdCBvPXRbbl07dGhpcy5fZGVhY3RpdmF0ZUFjdGlvbihvKTtjb25zdCBpPW8uX2NhY2hlSW5kZXgsYT1lW2UubGVuZ3RoLTFdO28uX2NhY2hlSW5kZXg9bnVsbCxvLl9ieUNsaXBDYWNoZUluZGV4PW51bGwsYS5fY2FjaGVJbmRleD1pLGVbaV09YSxlLnBvcCgpLHRoaXMuX3JlbW92ZUluYWN0aXZlQmluZGluZ3NGb3JBY3Rpb24obyl9ZGVsZXRlIG9bbl19fXVuY2FjaGVSb290KHQpe2NvbnN0IGU9dC51dWlkLG49dGhpcy5fYWN0aW9uc0J5Q2xpcDtmb3IoY29uc3QgdCBpbiBuKXtjb25zdCBvPW5bdF0uYWN0aW9uQnlSb290W2VdO3ZvaWQgMCE9PW8mJih0aGlzLl9kZWFjdGl2YXRlQWN0aW9uKG8pLHRoaXMuX3JlbW92ZUluYWN0aXZlQWN0aW9uKG8pKX1jb25zdCBvPXRoaXMuX2JpbmRpbmdzQnlSb290QW5kTmFtZVtlXTtpZih2b2lkIDAhPT1vKWZvcihjb25zdCB0IGluIG8pe2NvbnN0IGU9b1t0XTtlLnJlc3RvcmVPcmlnaW5hbFN0YXRlKCksdGhpcy5fcmVtb3ZlSW5hY3RpdmVCaW5kaW5nKGUpfX11bmNhY2hlQWN0aW9uKHQsZSl7Y29uc3Qgbj10aGlzLmV4aXN0aW5nQWN0aW9uKHQsZSk7bnVsbCE9PW4mJih0aGlzLl9kZWFjdGl2YXRlQWN0aW9uKG4pLHRoaXMuX3JlbW92ZUluYWN0aXZlQWN0aW9uKG4pKX19KS5wcm90b3R5cGUuX2NvbnRyb2xJbnRlcnBvbGFudHNSZXN1bHRCdWZmZXI9bmV3IEZsb2F0MzJBcnJheSgxKTsoY2xhc3MgZXh0ZW5kcyBMbXR7Y29uc3RydWN0b3IodCxlLG49MSl7c3VwZXIodCxlKSx0aGlzLm1lc2hQZXJBdHRyaWJ1dGU9bn1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMubWVzaFBlckF0dHJpYnV0ZT10Lm1lc2hQZXJBdHRyaWJ1dGUsdGhpc31jbG9uZSh0KXtjb25zdCBlPXN1cGVyLmNsb25lKHQpO3JldHVybiBlLm1lc2hQZXJBdHRyaWJ1dGU9dGhpcy5tZXNoUGVyQXR0cmlidXRlLGV9dG9KU09OKHQpe2NvbnN0IGU9c3VwZXIudG9KU09OKHQpO3JldHVybiBlLmlzSW5zdGFuY2VkSW50ZXJsZWF2ZWRCdWZmZXI9ITAsZS5tZXNoUGVyQXR0cmlidXRlPXRoaXMubWVzaFBlckF0dHJpYnV0ZSxlfX0pLnByb3RvdHlwZS5pc0luc3RhbmNlZEludGVybGVhdmVkQnVmZmVyPSEwOyhjbGFzcyBleHRlbmRzIFNsdHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMubWF0ZXJpYWw9dCx0aGlzLnJlbmRlcj1mdW5jdGlvbigpe30sdGhpcy5oYXNQb3NpdGlvbnM9ITEsdGhpcy5oYXNOb3JtYWxzPSExLHRoaXMuaGFzQ29sb3JzPSExLHRoaXMuaGFzVXZzPSExLHRoaXMucG9zaXRpb25BcnJheT1udWxsLHRoaXMubm9ybWFsQXJyYXk9bnVsbCx0aGlzLmNvbG9yQXJyYXk9bnVsbCx0aGlzLnV2QXJyYXk9bnVsbCx0aGlzLmNvdW50PTB9fSkucHJvdG90eXBlLmlzSW1tZWRpYXRlUmVuZGVyT2JqZWN0PSEwO2NvbnN0IFNndD1uZXcgd3N0LERndD1uZXcgb2x0LFJndD1uZXcgb2x0O2Z1bmN0aW9uIEVndCh0KXtjb25zdCBlPVtdO3QmJnQuaXNCb25lJiZlLnB1c2godCk7Zm9yKGxldCBuPTA7bjx0LmNoaWxkcmVuLmxlbmd0aDtuKyspZS5wdXNoLmFwcGx5KGUsRWd0KHQuY2hpbGRyZW5bbl0pKTtyZXR1cm4gZX1jb25zdCBBZ3Q9bmV3IEZsb2F0MzJBcnJheSgxKTtmdW5jdGlvbiBUZ3QodCxlLG4pe2lmKDE9PT1uKXJldHVybiBuZXcgWmx0KGUpO2NvbnN0IG89ZzkoZSk7aWYoIW8pdGhyb3cgbmV3IEVycm9yKGBkMyBmYWlsZWQgdG8gcmVjb2duaXplIHRoZSBjb2xvcjogJHtlfWApO3JldHVybiBuZXcgWmx0KHV0dChvLHQpKDEtbikpfXZhciBOZ3Qsemd0O2Z1bmN0aW9uIElndCh0LGUpe2NvbnN0IG49ZS5sZW5ndGgvMjtsZXQgbz10LmF0dHJpYnV0ZXMucG9zaXRpb247byYmby5jb3VudD09PTMqbnx8KG89bmV3IFFsdChuZXcgRmxvYXQzMkFycmF5KDMqbiksMyksdC5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixvKSk7Y29uc3QgaT1vLmFycmF5O2ZvcihsZXQgdD0wO3Q8bjt0KyspaVszKnRdPWVbMip0XSxpWzMqdCsxXT1lWzIqdCsxXTtvLm5lZWRzVXBkYXRlPSEwLHQuc2V0RHJhd1JhbmdlKDAsMypuKSx0LmNvbXB1dGVCb3VuZGluZ1NwaGVyZSgpfWZ1bmN0aW9uIEhndCh0LGUsbil7Y29uc3Qgbz1NYXRoLm1heChlLmxlbmd0aC8yLTEsMCksaT0yKm8qMyxhPTMqaTtsZXQgcj10LmF0dHJpYnV0ZXMucG9zaXRpb247ciYmci5jb3VudD09PWl8fChyPW5ldyBRbHQobmV3IEZsb2F0MzJBcnJheShhKSwzKSx0LnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLHIpKTtjb25zdCBzPXIuYXJyYXk7Zm9yKGxldCB0PTA7dDxvO3QrKyl7Y29uc3RbbyxpLGEscl09W2VbMip0XSxlWzIqdCsxXSxlWzIqdCsyXSxlWzIqdCszXV0sbD1uZXcgZ3N0KG8saSksYz1uZXcgZ3N0KGEsciksZD1uZXcgZ3N0KGEtbyxyLWkpLHA9bmV3IGdzdCgtZC55LGQueCkuc2V0TGVuZ3RoKG4vMiksbT1sLmNsb25lKCkuYWRkKHApLGY9bC5jbG9uZSgpLnN1YihwKSx1PWMuY2xvbmUoKS5hZGQocCksZz1jLmNsb25lKCkuc3ViKHApLGg9W20ueCxtLnksMCxmLngsZi55LDAsdS54LHUueSwwLHUueCx1LnksMCxmLngsZi55LDAsZy54LGcueSwwXTtzLnNldChoLHQqaC5sZW5ndGgpfXIubmVlZHNVcGRhdGU9ITAsdC5zZXREcmF3UmFuZ2UoMCxhKSx0LmNvbXB1dGVCb3VuZGluZ1NwaGVyZSgpfWZ1bmN0aW9uIEZndCh0LGUsbixvKXtjb25zdHt2aXNpYmxlOmksY29sb3I6YSxvcGFjaXR5OnJ9PW87aWYoQXJyYXkuaXNBcnJheShlLm1hdGVyaWFsKSl0aHJvdyBuZXcgRXJyb3IoIkludmFyaWFudCBlcnJvcjogb25seSBleHBlY3Qgb25lIG1hdGVyaWFsIG9uIGFuIG9iamVjdCIpO2NvbnN0IHM9ZS5tYXRlcmlhbDtpZihzLnZpc2libGUhPT1pJiYocy52aXNpYmxlPWkscy5uZWVkc1VwZGF0ZT0hMCksIWkpcmV0dXJuITE7Y29uc3QgbD1UZ3QodCxhLG51bGwhPXI/cjoxKSxjPW4oZS5nZW9tZXRyeSk7ZS5nZW9tZXRyeSE9PWMmJihlLmdlb21ldHJ5PWMpO3JldHVybiBzLmNvbG9yLmVxdWFscyhsKXx8KHMuY29sb3Iuc2V0KGwpLHMubmVlZHNVcGRhdGU9ITApLCEwfW5ldyBJbnQzMkFycmF5KEFndC5idWZmZXIpLFJmdC5jcmVhdGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gY29uc29sZS5sb2coIlRIUkVFLkN1cnZlLmNyZWF0ZSgpIGhhcyBiZWVuIGRlcHJlY2F0ZWQiKSx0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKFJmdC5wcm90b3R5cGUpLHQucHJvdG90eXBlLmNvbnN0cnVjdG9yPXQsdC5wcm90b3R5cGUuZ2V0UG9pbnQ9ZSx0fSxKdXQucHJvdG90eXBlLmZyb21Qb2ludHM9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuUGF0aDogLmZyb21Qb2ludHMoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5zZXRGcm9tUG9pbnRzKCkuIiksdGhpcy5zZXRGcm9tUG9pbnRzKHQpfSxjbGFzcyBleHRlbmRzIHZmdHtjb25zdHJ1Y3Rvcih0PTEwLGU9MTAsbj00NDczOTI0LG89ODk0Nzg0OCl7bj1uZXcgWmx0KG4pLG89bmV3IFpsdChvKTtjb25zdCBpPWUvMixhPXQvZSxyPXQvMixzPVtdLGw9W107Zm9yKGxldCB0PTAsYz0wLGQ9LXI7dDw9ZTt0KyssZCs9YSl7cy5wdXNoKC1yLDAsZCxyLDAsZCkscy5wdXNoKGQsMCwtcixkLDAscik7Y29uc3QgZT10PT09aT9uOm87ZS50b0FycmF5KGwsYyksYys9MyxlLnRvQXJyYXkobCxjKSxjKz0zLGUudG9BcnJheShsLGMpLGMrPTMsZS50b0FycmF5KGwsYyksYys9M31jb25zdCBjPW5ldyBkY3Q7Yy5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgZWN0KHMsMykpLGMuc2V0QXR0cmlidXRlKCJjb2xvciIsbmV3IGVjdChsLDMpKTtzdXBlcihjLG5ldyBmZnQoe3ZlcnRleENvbG9yczohMCx0b25lTWFwcGVkOiExfSkpLHRoaXMudHlwZT0iR3JpZEhlbHBlciJ9fS5wcm90b3R5cGUuc2V0Q29sb3JzPWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuR3JpZEhlbHBlcjogc2V0Q29sb3JzKCkgaGFzIGJlZW4gZGVwcmVjYXRlZCwgcGFzcyB0aGVtIGluIHRoZSBjb25zdHJ1Y3RvciBpbnN0ZWFkLiIpfSxjbGFzcyBleHRlbmRzIHZmdHtjb25zdHJ1Y3Rvcih0KXtjb25zdCBlPUVndCh0KSxuPW5ldyBkY3Qsbz1bXSxpPVtdLGE9bmV3IFpsdCgwLDAsMSkscj1uZXcgWmx0KDAsMSwwKTtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKyl7Y29uc3Qgbj1lW3RdO24ucGFyZW50JiZuLnBhcmVudC5pc0JvbmUmJihvLnB1c2goMCwwLDApLG8ucHVzaCgwLDAsMCksaS5wdXNoKGEucixhLmcsYS5iKSxpLnB1c2goci5yLHIuZyxyLmIpKX1uLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBlY3QobywzKSksbi5zZXRBdHRyaWJ1dGUoImNvbG9yIixuZXcgZWN0KGksMykpO3N1cGVyKG4sbmV3IGZmdCh7dmVydGV4Q29sb3JzOiEwLGRlcHRoVGVzdDohMSxkZXB0aFdyaXRlOiExLHRvbmVNYXBwZWQ6ITEsdHJhbnNwYXJlbnQ6ITB9KSksdGhpcy50eXBlPSJTa2VsZXRvbkhlbHBlciIsdGhpcy5pc1NrZWxldG9uSGVscGVyPSEwLHRoaXMucm9vdD10LHRoaXMuYm9uZXM9ZSx0aGlzLm1hdHJpeD10Lm1hdHJpeFdvcmxkLHRoaXMubWF0cml4QXV0b1VwZGF0ZT0hMX11cGRhdGVNYXRyaXhXb3JsZCh0KXtjb25zdCBlPXRoaXMuYm9uZXMsbj10aGlzLmdlb21ldHJ5LG89bi5nZXRBdHRyaWJ1dGUoInBvc2l0aW9uIik7Umd0LmNvcHkodGhpcy5yb290Lm1hdHJpeFdvcmxkKS5pbnZlcnQoKTtmb3IobGV0IHQ9MCxuPTA7dDxlLmxlbmd0aDt0Kyspe2NvbnN0IGk9ZVt0XTtpLnBhcmVudCYmaS5wYXJlbnQuaXNCb25lJiYoRGd0Lm11bHRpcGx5TWF0cmljZXMoUmd0LGkubWF0cml4V29ybGQpLFNndC5zZXRGcm9tTWF0cml4UG9zaXRpb24oRGd0KSxvLnNldFhZWihuLFNndC54LFNndC55LFNndC56KSxEZ3QubXVsdGlwbHlNYXRyaWNlcyhSZ3QsaS5wYXJlbnQubWF0cml4V29ybGQpLFNndC5zZXRGcm9tTWF0cml4UG9zaXRpb24oRGd0KSxvLnNldFhZWihuKzEsU2d0LngsU2d0LnksU2d0LnopLG4rPTIpfW4uZ2V0QXR0cmlidXRlKCJwb3NpdGlvbiIpLm5lZWRzVXBkYXRlPSEwLHN1cGVyLnVwZGF0ZU1hdHJpeFdvcmxkKHQpfX0ucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLlNrZWxldG9uSGVscGVyOiB1cGRhdGUoKSBubyBsb25nZXIgbmVlZHMgdG8gYmUgY2FsbGVkLiIpfSxXdXQucHJvdG90eXBlLmV4dHJhY3RVcmxCYXNlPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkxvYWRlcjogLmV4dHJhY3RVcmxCYXNlKCkgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIFRIUkVFLkxvYWRlclV0aWxzLmV4dHJhY3RVcmxCYXNlKCkgaW5zdGVhZC4iKSxjbGFzc3tzdGF0aWMgZGVjb2RlVGV4dCh0KXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFRleHREZWNvZGVyKXJldHVybihuZXcgVGV4dERlY29kZXIpLmRlY29kZSh0KTtsZXQgZT0iIjtmb3IobGV0IG49MCxvPXQubGVuZ3RoO248bztuKyspZSs9U3RyaW5nLmZyb21DaGFyQ29kZSh0W25dKTt0cnl7cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChlc2NhcGUoZSkpfWNhdGNoKHQpe3JldHVybiBlfX1zdGF0aWMgZXh0cmFjdFVybEJhc2UodCl7Y29uc3QgZT10Lmxhc3RJbmRleE9mKCIvIik7cmV0dXJuLTE9PT1lPyIuLyI6dC5zdWJzdHIoMCxlKzEpfX0uZXh0cmFjdFVybEJhc2UodCl9LFd1dC5IYW5kbGVycz17YWRkOmZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuTG9hZGVyOiBIYW5kbGVycy5hZGQoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgTG9hZGluZ01hbmFnZXIuYWRkSGFuZGxlcigpIGluc3RlYWQuIil9LGdldDpmdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLkxvYWRlcjogSGFuZGxlcnMuZ2V0KCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIExvYWRpbmdNYW5hZ2VyLmdldEhhbmRsZXIoKSBpbnN0ZWFkLiIpfX0sRHN0LnByb3RvdHlwZS5jZW50ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQm94MzogLmNlbnRlcigpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdldENlbnRlcigpLiIpLHRoaXMuZ2V0Q2VudGVyKHQpfSxEc3QucHJvdG90eXBlLmVtcHR5PWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQm94MzogLmVtcHR5KCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuaXNFbXB0eSgpLiIpLHRoaXMuaXNFbXB0eSgpfSxEc3QucHJvdG90eXBlLmlzSW50ZXJzZWN0aW9uQm94PWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJveDM6IC5pc0ludGVyc2VjdGlvbkJveCgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmludGVyc2VjdHNCb3goKS4iKSx0aGlzLmludGVyc2VjdHNCb3godCl9LERzdC5wcm90b3R5cGUuaXNJbnRlcnNlY3Rpb25TcGhlcmU9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQm94MzogLmlzSW50ZXJzZWN0aW9uU3BoZXJlKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuaW50ZXJzZWN0c1NwaGVyZSgpLiIpLHRoaXMuaW50ZXJzZWN0c1NwaGVyZSh0KX0sRHN0LnByb3RvdHlwZS5zaXplPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJveDM6IC5zaXplKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuZ2V0U2l6ZSgpLiIpLHRoaXMuZ2V0U2l6ZSh0KX0sWnN0LnByb3RvdHlwZS5lbXB0eT1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlNwaGVyZTogLmVtcHR5KCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuaXNFbXB0eSgpLiIpLHRoaXMuaXNFbXB0eSgpfSxxY3QucHJvdG90eXBlLnNldEZyb21NYXRyaXg9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuRnJ1c3R1bTogLnNldEZyb21NYXRyaXgoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5zZXRGcm9tUHJvamVjdGlvbk1hdHJpeCgpLiIpLHRoaXMuc2V0RnJvbVByb2plY3Rpb25NYXRyaXgodCl9LGhzdC5wcm90b3R5cGUuZmxhdHRlblRvQXJyYXlPZmZzZXQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXgzOiAuZmxhdHRlblRvQXJyYXlPZmZzZXQoKSBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgLnRvQXJyYXkoKSBpbnN0ZWFkLiIpLHRoaXMudG9BcnJheSh0LGUpfSxoc3QucHJvdG90eXBlLm11bHRpcGx5VmVjdG9yMz1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXgzOiAubXVsdGlwbHlWZWN0b3IzKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIHZlY3Rvci5hcHBseU1hdHJpeDMoIG1hdHJpeCApIGluc3RlYWQuIiksdC5hcHBseU1hdHJpeDModGhpcyl9LGhzdC5wcm90b3R5cGUubXVsdGlwbHlWZWN0b3IzQXJyYXk9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5NYXRyaXgzOiAubXVsdGlwbHlWZWN0b3IzQXJyYXkoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxoc3QucHJvdG90eXBlLmFwcGx5VG9CdWZmZXJBdHRyaWJ1dGU9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4MzogLmFwcGx5VG9CdWZmZXJBdHRyaWJ1dGUoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgYXR0cmlidXRlLmFwcGx5TWF0cml4MyggbWF0cml4ICkgaW5zdGVhZC4iKSx0LmFwcGx5TWF0cml4Myh0aGlzKX0saHN0LnByb3RvdHlwZS5hcHBseVRvVmVjdG9yM0FycmF5PWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuTWF0cml4MzogLmFwcGx5VG9WZWN0b3IzQXJyYXkoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxoc3QucHJvdG90eXBlLmdldEludmVyc2U9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4MzogLmdldEludmVyc2UoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgbWF0cml4SW52LmNvcHkoIG1hdHJpeCApLmludmVydCgpOyBpbnN0ZWFkLiIpLHRoaXMuY29weSh0KS5pbnZlcnQoKX0sb2x0LnByb3RvdHlwZS5leHRyYWN0UG9zaXRpb249ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4NDogLmV4dHJhY3RQb3NpdGlvbigpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmNvcHlQb3NpdGlvbigpLiIpLHRoaXMuY29weVBvc2l0aW9uKHQpfSxvbHQucHJvdG90eXBlLmZsYXR0ZW5Ub0FycmF5T2Zmc2V0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4NDogLmZsYXR0ZW5Ub0FycmF5T2Zmc2V0KCkgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIC50b0FycmF5KCkgaW5zdGVhZC4iKSx0aGlzLnRvQXJyYXkodCxlKX0sb2x0LnByb3RvdHlwZS5nZXRQb3NpdGlvbj1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDQ6IC5nZXRQb3NpdGlvbigpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBWZWN0b3IzLnNldEZyb21NYXRyaXhQb3NpdGlvbiggbWF0cml4ICkgaW5zdGVhZC4iKSwobmV3IHdzdCkuc2V0RnJvbU1hdHJpeENvbHVtbih0aGlzLDMpfSxvbHQucHJvdG90eXBlLnNldFJvdGF0aW9uRnJvbVF1YXRlcm5pb249ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4NDogLnNldFJvdGF0aW9uRnJvbVF1YXRlcm5pb24oKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5tYWtlUm90YXRpb25Gcm9tUXVhdGVybmlvbigpLiIpLHRoaXMubWFrZVJvdGF0aW9uRnJvbVF1YXRlcm5pb24odCl9LG9sdC5wcm90b3R5cGUubXVsdGlwbHlUb0FycmF5PWZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXg0OiAubXVsdGlwbHlUb0FycmF5KCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sb2x0LnByb3RvdHlwZS5tdWx0aXBseVZlY3RvcjM9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4NDogLm11bHRpcGx5VmVjdG9yMygpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSB2ZWN0b3IuYXBwbHlNYXRyaXg0KCBtYXRyaXggKSBpbnN0ZWFkLiIpLHQuYXBwbHlNYXRyaXg0KHRoaXMpfSxvbHQucHJvdG90eXBlLm11bHRpcGx5VmVjdG9yND1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXg0OiAubXVsdGlwbHlWZWN0b3I0KCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIHZlY3Rvci5hcHBseU1hdHJpeDQoIG1hdHJpeCApIGluc3RlYWQuIiksdC5hcHBseU1hdHJpeDQodGhpcyl9LG9sdC5wcm90b3R5cGUubXVsdGlwbHlWZWN0b3IzQXJyYXk9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5NYXRyaXg0OiAubXVsdGlwbHlWZWN0b3IzQXJyYXkoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxvbHQucHJvdG90eXBlLnJvdGF0ZUF4aXM9ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXg0OiAucm90YXRlQXhpcygpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBWZWN0b3IzLnRyYW5zZm9ybURpcmVjdGlvbiggbWF0cml4ICkgaW5zdGVhZC4iKSx0LnRyYW5zZm9ybURpcmVjdGlvbih0aGlzKX0sb2x0LnByb3RvdHlwZS5jcm9zc1ZlY3Rvcj1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXg0OiAuY3Jvc3NWZWN0b3IoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgdmVjdG9yLmFwcGx5TWF0cml4NCggbWF0cml4ICkgaW5zdGVhZC4iKSx0LmFwcGx5TWF0cml4NCh0aGlzKX0sb2x0LnByb3RvdHlwZS50cmFuc2xhdGU9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5NYXRyaXg0OiAudHJhbnNsYXRlKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sb2x0LnByb3RvdHlwZS5yb3RhdGVYPWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuTWF0cml4NDogLnJvdGF0ZVgoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxvbHQucHJvdG90eXBlLnJvdGF0ZVk9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5NYXRyaXg0OiAucm90YXRlWSgpIGhhcyBiZWVuIHJlbW92ZWQuIil9LG9sdC5wcm90b3R5cGUucm90YXRlWj1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLk1hdHJpeDQ6IC5yb3RhdGVaKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sb2x0LnByb3RvdHlwZS5yb3RhdGVCeUF4aXM9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5NYXRyaXg0OiAucm90YXRlQnlBeGlzKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sb2x0LnByb3RvdHlwZS5hcHBseVRvQnVmZmVyQXR0cmlidXRlPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDQ6IC5hcHBseVRvQnVmZmVyQXR0cmlidXRlKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIGF0dHJpYnV0ZS5hcHBseU1hdHJpeDQoIG1hdHJpeCApIGluc3RlYWQuIiksdC5hcHBseU1hdHJpeDQodGhpcyl9LG9sdC5wcm90b3R5cGUuYXBwbHlUb1ZlY3RvcjNBcnJheT1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLk1hdHJpeDQ6IC5hcHBseVRvVmVjdG9yM0FycmF5KCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sb2x0LnByb3RvdHlwZS5tYWtlRnJ1c3R1bT1mdW5jdGlvbih0LGUsbixvLGksYSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4NDogLm1ha2VGcnVzdHVtKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIC5tYWtlUGVyc3BlY3RpdmUoIGxlZnQsIHJpZ2h0LCB0b3AsIGJvdHRvbSwgbmVhciwgZmFyICkgaW5zdGVhZC4iKSx0aGlzLm1ha2VQZXJzcGVjdGl2ZSh0LGUsbyxuLGksYSl9LG9sdC5wcm90b3R5cGUuZ2V0SW52ZXJzZT1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXg0OiAuZ2V0SW52ZXJzZSgpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBtYXRyaXhJbnYuY29weSggbWF0cml4ICkuaW52ZXJ0KCk7IGluc3RlYWQuIiksdGhpcy5jb3B5KHQpLmludmVydCgpfSxXY3QucHJvdG90eXBlLmlzSW50ZXJzZWN0aW9uTGluZT1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5QbGFuZTogLmlzSW50ZXJzZWN0aW9uTGluZSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmludGVyc2VjdHNMaW5lKCkuIiksdGhpcy5pbnRlcnNlY3RzTGluZSh0KX0sUHN0LnByb3RvdHlwZS5tdWx0aXBseVZlY3RvcjM9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuUXVhdGVybmlvbjogLm11bHRpcGx5VmVjdG9yMygpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBpcyBub3cgdmVjdG9yLmFwcGx5UXVhdGVybmlvbiggcXVhdGVybmlvbiApIGluc3RlYWQuIiksdC5hcHBseVF1YXRlcm5pb24odGhpcyl9LFBzdC5wcm90b3R5cGUuaW52ZXJzZT1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlF1YXRlcm5pb246IC5pbnZlcnNlKCkgaGFzIGJlZW4gcmVuYW1lZCB0byBpbnZlcnQoKS4iKSx0aGlzLmludmVydCgpfSxubHQucHJvdG90eXBlLmlzSW50ZXJzZWN0aW9uQm94PWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlJheTogLmlzSW50ZXJzZWN0aW9uQm94KCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuaW50ZXJzZWN0c0JveCgpLiIpLHRoaXMuaW50ZXJzZWN0c0JveCh0KX0sbmx0LnByb3RvdHlwZS5pc0ludGVyc2VjdGlvblBsYW5lPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlJheTogLmlzSW50ZXJzZWN0aW9uUGxhbmUoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5pbnRlcnNlY3RzUGxhbmUoKS4iKSx0aGlzLmludGVyc2VjdHNQbGFuZSh0KX0sbmx0LnByb3RvdHlwZS5pc0ludGVyc2VjdGlvblNwaGVyZT1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5SYXk6IC5pc0ludGVyc2VjdGlvblNwaGVyZSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmludGVyc2VjdHNTcGhlcmUoKS4iKSx0aGlzLmludGVyc2VjdHNTcGhlcmUodCl9LExsdC5wcm90b3R5cGUuYXJlYT1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlRyaWFuZ2xlOiAuYXJlYSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdldEFyZWEoKS4iKSx0aGlzLmdldEFyZWEoKX0sTGx0LnByb3RvdHlwZS5iYXJ5Y29vcmRGcm9tUG9pbnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5UcmlhbmdsZTogLmJhcnljb29yZEZyb21Qb2ludCgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdldEJhcnljb29yZCgpLiIpLHRoaXMuZ2V0QmFyeWNvb3JkKHQsZSl9LExsdC5wcm90b3R5cGUubWlkcG9pbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVHJpYW5nbGU6IC5taWRwb2ludCgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdldE1pZHBvaW50KCkuIiksdGhpcy5nZXRNaWRwb2ludCh0KX0sTGx0LnByb3RvdHlwZW5vcm1hbD1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5UcmlhbmdsZTogLm5vcm1hbCgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdldE5vcm1hbCgpLiIpLHRoaXMuZ2V0Tm9ybWFsKHQpfSxMbHQucHJvdG90eXBlLnBsYW5lPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlRyaWFuZ2xlOiAucGxhbmUoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5nZXRQbGFuZSgpLiIpLHRoaXMuZ2V0UGxhbmUodCl9LExsdC5iYXJ5Y29vcmRGcm9tUG9pbnQ9ZnVuY3Rpb24odCxlLG4sbyxpKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5UcmlhbmdsZTogLmJhcnljb29yZEZyb21Qb2ludCgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdldEJhcnljb29yZCgpLiIpLExsdC5nZXRCYXJ5Y29vcmQodCxlLG4sbyxpKX0sTGx0Lm5vcm1hbD1mdW5jdGlvbih0LGUsbixvKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5UcmlhbmdsZTogLm5vcm1hbCgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdldE5vcm1hbCgpLiIpLExsdC5nZXROb3JtYWwodCxlLG4sbyl9LFF1dC5wcm90b3R5cGUuZXh0cmFjdEFsbFBvaW50cz1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5TaGFwZTogLmV4dHJhY3RBbGxQb2ludHMoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgLmV4dHJhY3RQb2ludHMoKSBpbnN0ZWFkLiIpLHRoaXMuZXh0cmFjdFBvaW50cyh0KX0sUXV0LnByb3RvdHlwZS5leHRydWRlPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlNoYXBlOiAuZXh0cnVkZSgpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBFeHRydWRlR2VvbWV0cnkoKSBpbnN0ZWFkLiIpLG5ldyB4dXQodGhpcyx0KX0sUXV0LnByb3RvdHlwZS5tYWtlR2VvbWV0cnk9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuU2hhcGU6IC5tYWtlR2VvbWV0cnkoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgU2hhcGVHZW9tZXRyeSgpIGluc3RlYWQuIiksbmV3IFB1dCh0aGlzLHQpfSxnc3QucHJvdG90eXBlLmZyb21BdHRyaWJ1dGU9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjI6IC5mcm9tQXR0cmlidXRlKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuZnJvbUJ1ZmZlckF0dHJpYnV0ZSgpLiIpLHRoaXMuZnJvbUJ1ZmZlckF0dHJpYnV0ZSh0LGUsbil9LGdzdC5wcm90b3R5cGUuZGlzdGFuY2VUb01hbmhhdHRhbj1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IyOiAuZGlzdGFuY2VUb01hbmhhdHRhbigpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLm1hbmhhdHRhbkRpc3RhbmNlVG8oKS4iKSx0aGlzLm1hbmhhdHRhbkRpc3RhbmNlVG8odCl9LGdzdC5wcm90b3R5cGUubGVuZ3RoTWFuaGF0dGFuPWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMjogLmxlbmd0aE1hbmhhdHRhbigpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLm1hbmhhdHRhbkxlbmd0aCgpLiIpLHRoaXMubWFuaGF0dGFuTGVuZ3RoKCl9LHdzdC5wcm90b3R5cGUuc2V0RXVsZXJGcm9tUm90YXRpb25NYXRyaXg9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5WZWN0b3IzOiAuc2V0RXVsZXJGcm9tUm90YXRpb25NYXRyaXgoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgRXVsZXIuc2V0RnJvbVJvdGF0aW9uTWF0cml4KCkgaW5zdGVhZC4iKX0sd3N0LnByb3RvdHlwZS5zZXRFdWxlckZyb21RdWF0ZXJuaW9uPWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuVmVjdG9yMzogLnNldEV1bGVyRnJvbVF1YXRlcm5pb24oKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgRXVsZXIuc2V0RnJvbVF1YXRlcm5pb24oKSBpbnN0ZWFkLiIpfSx3c3QucHJvdG90eXBlLmdldFBvc2l0aW9uRnJvbU1hdHJpeD1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IzOiAuZ2V0UG9zaXRpb25Gcm9tTWF0cml4KCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKCkuIiksdGhpcy5zZXRGcm9tTWF0cml4UG9zaXRpb24odCl9LHdzdC5wcm90b3R5cGUuZ2V0U2NhbGVGcm9tTWF0cml4PWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjM6IC5nZXRTY2FsZUZyb21NYXRyaXgoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5zZXRGcm9tTWF0cml4U2NhbGUoKS4iKSx0aGlzLnNldEZyb21NYXRyaXhTY2FsZSh0KX0sd3N0LnByb3RvdHlwZS5nZXRDb2x1bW5Gcm9tTWF0cml4PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMzogLmdldENvbHVtbkZyb21NYXRyaXgoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5zZXRGcm9tTWF0cml4Q29sdW1uKCkuIiksdGhpcy5zZXRGcm9tTWF0cml4Q29sdW1uKGUsdCl9LHdzdC5wcm90b3R5cGUuYXBwbHlQcm9qZWN0aW9uPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjM6IC5hcHBseVByb2plY3Rpb24oKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgLmFwcGx5TWF0cml4NCggbSApIGluc3RlYWQuIiksdGhpcy5hcHBseU1hdHJpeDQodCl9LHdzdC5wcm90b3R5cGUuZnJvbUF0dHJpYnV0ZT1mdW5jdGlvbih0LGUsbil7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMzogLmZyb21BdHRyaWJ1dGUoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5mcm9tQnVmZmVyQXR0cmlidXRlKCkuIiksdGhpcy5mcm9tQnVmZmVyQXR0cmlidXRlKHQsZSxuKX0sd3N0LnByb3RvdHlwZS5kaXN0YW5jZVRvTWFuaGF0dGFuPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjM6IC5kaXN0YW5jZVRvTWFuaGF0dGFuKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAubWFuaGF0dGFuRGlzdGFuY2VUbygpLiIpLHRoaXMubWFuaGF0dGFuRGlzdGFuY2VUbyh0KX0sd3N0LnByb3RvdHlwZS5sZW5ndGhNYW5oYXR0YW49ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IzOiAubGVuZ3RoTWFuaGF0dGFuKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAubWFuaGF0dGFuTGVuZ3RoKCkuIiksdGhpcy5tYW5oYXR0YW5MZW5ndGgoKX0sdnN0LnByb3RvdHlwZS5mcm9tQXR0cmlidXRlPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3I0OiAuZnJvbUF0dHJpYnV0ZSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmZyb21CdWZmZXJBdHRyaWJ1dGUoKS4iKSx0aGlzLmZyb21CdWZmZXJBdHRyaWJ1dGUodCxlLG4pfSx2c3QucHJvdG90eXBlLmxlbmd0aE1hbmhhdHRhbj1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjQ6IC5sZW5ndGhNYW5oYXR0YW4oKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5tYW5oYXR0YW5MZW5ndGgoKS4iKSx0aGlzLm1hbmhhdHRhbkxlbmd0aCgpfSxTbHQucHJvdG90eXBlLmdldENoaWxkQnlOYW1lPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk9iamVjdDNEOiAuZ2V0Q2hpbGRCeU5hbWUoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5nZXRPYmplY3RCeU5hbWUoKS4iKSx0aGlzLmdldE9iamVjdEJ5TmFtZSh0KX0sU2x0LnByb3RvdHlwZS5yZW5kZXJEZXB0aD1mdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuT2JqZWN0M0Q6IC5yZW5kZXJEZXB0aCBoYXMgYmVlbiByZW1vdmVkLiBVc2UgLnJlbmRlck9yZGVyLCBpbnN0ZWFkLiIpfSxTbHQucHJvdG90eXBlLnRyYW5zbGF0ZT1mdW5jdGlvbih0LGUpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk9iamVjdDNEOiAudHJhbnNsYXRlKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIC50cmFuc2xhdGVPbkF4aXMoIGF4aXMsIGRpc3RhbmNlICkgaW5zdGVhZC4iKSx0aGlzLnRyYW5zbGF0ZU9uQXhpcyhlLHQpfSxTbHQucHJvdG90eXBlLmdldFdvcmxkUm90YXRpb249ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5PYmplY3QzRDogLmdldFdvcmxkUm90YXRpb24oKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgVEhSRUUuT2JqZWN0M0QuZ2V0V29ybGRRdWF0ZXJuaW9uKCB0YXJnZXQgKSBpbnN0ZWFkLiIpfSxTbHQucHJvdG90eXBlLmFwcGx5TWF0cml4PWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk9iamVjdDNEOiAuYXBwbHlNYXRyaXgoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5hcHBseU1hdHJpeDQoKS4iKSx0aGlzLmFwcGx5TWF0cml4NCh0KX0sT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoU2x0LnByb3RvdHlwZSx7ZXVsZXJPcmRlcjp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuT2JqZWN0M0Q6IC5ldWxlck9yZGVyIGlzIG5vdyAucm90YXRpb24ub3JkZXIuIiksdGhpcy5yb3RhdGlvbi5vcmRlcn0sc2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuT2JqZWN0M0Q6IC5ldWxlck9yZGVyIGlzIG5vdyAucm90YXRpb24ub3JkZXIuIiksdGhpcy5yb3RhdGlvbi5vcmRlcj10fX0sdXNlUXVhdGVybmlvbjp7Z2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5PYmplY3QzRDogLnVzZVF1YXRlcm5pb24gaGFzIGJlZW4gcmVtb3ZlZC4gVGhlIGxpYnJhcnkgbm93IHVzZXMgcXVhdGVybmlvbnMgYnkgZGVmYXVsdC4iKX0sc2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5PYmplY3QzRDogLnVzZVF1YXRlcm5pb24gaGFzIGJlZW4gcmVtb3ZlZC4gVGhlIGxpYnJhcnkgbm93IHVzZXMgcXVhdGVybmlvbnMgYnkgZGVmYXVsdC4iKX19fSksU2N0LnByb3RvdHlwZS5zZXREcmF3TW9kZT1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLk1lc2g6IC5zZXREcmF3TW9kZSgpIGhhcyBiZWVuIHJlbW92ZWQuIFRoZSByZW5kZXJlciBub3cgYWx3YXlzIGFzc3VtZXMgVEhSRUUuVHJpYW5nbGVzRHJhd01vZGUuIFRyYW5zZm9ybSB5b3VyIGdlb21ldHJ5IHZpYSBCdWZmZXJHZW9tZXRyeVV0aWxzLnRvVHJpYW5nbGVzRHJhd01vZGUoKSBpZiBuZWNlc3NhcnkuIil9LE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKFNjdC5wcm90b3R5cGUse2RyYXdNb2RlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS5lcnJvcigiVEhSRUUuTWVzaDogLmRyYXdNb2RlIGhhcyBiZWVuIHJlbW92ZWQuIFRoZSByZW5kZXJlciBub3cgYWx3YXlzIGFzc3VtZXMgVEhSRUUuVHJpYW5nbGVzRHJhd01vZGUuIiksMH0sc2V0OmZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuTWVzaDogLmRyYXdNb2RlIGhhcyBiZWVuIHJlbW92ZWQuIFRoZSByZW5kZXJlciBub3cgYWx3YXlzIGFzc3VtZXMgVEhSRUUuVHJpYW5nbGVzRHJhd01vZGUuIFRyYW5zZm9ybSB5b3VyIGdlb21ldHJ5IHZpYSBCdWZmZXJHZW9tZXRyeVV0aWxzLnRvVHJpYW5nbGVzRHJhd01vZGUoKSBpZiBuZWNlc3NhcnkuIil9fX0pLGxmdC5wcm90b3R5cGUuaW5pdEJvbmVzPWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuU2tpbm5lZE1lc2g6IGluaXRCb25lcygpIGhhcyBiZWVuIHJlbW92ZWQuIil9LEljdC5wcm90b3R5cGUuc2V0TGVucz1mdW5jdGlvbih0LGUpe2NvbnNvbGUud2FybigiVEhSRUUuUGVyc3BlY3RpdmVDYW1lcmEuc2V0TGVucyBpcyBkZXByZWNhdGVkLiBVc2UgLnNldEZvY2FsTGVuZ3RoIGFuZCAuZmlsbUdhdWdlIGZvciBhIHBob3RvZ3JhcGhpYyBzZXR1cC4iKSx2b2lkIDAhPT1lJiYodGhpcy5maWxtR2F1Z2U9ZSksdGhpcy5zZXRGb2NhbExlbmd0aCh0KX0sT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoJHV0LnByb3RvdHlwZSx7b25seVNoYWRvdzp7c2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5MaWdodDogLm9ubHlTaGFkb3cgaGFzIGJlZW4gcmVtb3ZlZC4iKX19LHNoYWRvd0NhbWVyYUZvdjp7c2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuTGlnaHQ6IC5zaGFkb3dDYW1lcmFGb3YgaXMgbm93IC5zaGFkb3cuY2FtZXJhLmZvdi4iKSx0aGlzLnNoYWRvdy5jYW1lcmEuZm92PXR9fSxzaGFkb3dDYW1lcmFMZWZ0OntzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5MaWdodDogLnNoYWRvd0NhbWVyYUxlZnQgaXMgbm93IC5zaGFkb3cuY2FtZXJhLmxlZnQuIiksdGhpcy5zaGFkb3cuY2FtZXJhLmxlZnQ9dH19LHNoYWRvd0NhbWVyYVJpZ2h0OntzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5MaWdodDogLnNoYWRvd0NhbWVyYVJpZ2h0IGlzIG5vdyAuc2hhZG93LmNhbWVyYS5yaWdodC4iKSx0aGlzLnNoYWRvdy5jYW1lcmEucmlnaHQ9dH19LHNoYWRvd0NhbWVyYVRvcDp7c2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuTGlnaHQ6IC5zaGFkb3dDYW1lcmFUb3AgaXMgbm93IC5zaGFkb3cuY2FtZXJhLnRvcC4iKSx0aGlzLnNoYWRvdy5jYW1lcmEudG9wPXR9fSxzaGFkb3dDYW1lcmFCb3R0b206e3NldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLkxpZ2h0OiAuc2hhZG93Q2FtZXJhQm90dG9tIGlzIG5vdyAuc2hhZG93LmNhbWVyYS5ib3R0b20uIiksdGhpcy5zaGFkb3cuY2FtZXJhLmJvdHRvbT10fX0sc2hhZG93Q2FtZXJhTmVhcjp7c2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuTGlnaHQ6IC5zaGFkb3dDYW1lcmFOZWFyIGlzIG5vdyAuc2hhZG93LmNhbWVyYS5uZWFyLiIpLHRoaXMuc2hhZG93LmNhbWVyYS5uZWFyPXR9fSxzaGFkb3dDYW1lcmFGYXI6e3NldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLkxpZ2h0OiAuc2hhZG93Q2FtZXJhRmFyIGlzIG5vdyAuc2hhZG93LmNhbWVyYS5mYXIuIiksdGhpcy5zaGFkb3cuY2FtZXJhLmZhcj10fX0sc2hhZG93Q2FtZXJhVmlzaWJsZTp7c2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5MaWdodDogLnNoYWRvd0NhbWVyYVZpc2libGUgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIG5ldyBUSFJFRS5DYW1lcmFIZWxwZXIoIGxpZ2h0LnNoYWRvdy5jYW1lcmEgKSBpbnN0ZWFkLiIpfX0sc2hhZG93Qmlhczp7c2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuTGlnaHQ6IC5zaGFkb3dCaWFzIGlzIG5vdyAuc2hhZG93LmJpYXMuIiksdGhpcy5zaGFkb3cuYmlhcz10fX0sc2hhZG93RGFya25lc3M6e3NldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuTGlnaHQ6IC5zaGFkb3dEYXJrbmVzcyBoYXMgYmVlbiByZW1vdmVkLiIpfX0sc2hhZG93TWFwV2lkdGg6e3NldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLkxpZ2h0OiAuc2hhZG93TWFwV2lkdGggaXMgbm93IC5zaGFkb3cubWFwU2l6ZS53aWR0aC4iKSx0aGlzLnNoYWRvdy5tYXBTaXplLndpZHRoPXR9fSxzaGFkb3dNYXBIZWlnaHQ6e3NldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLkxpZ2h0OiAuc2hhZG93TWFwSGVpZ2h0IGlzIG5vdyAuc2hhZG93Lm1hcFNpemUuaGVpZ2h0LiIpLHRoaXMuc2hhZG93Lm1hcFNpemUuaGVpZ2h0PXR9fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKFFsdC5wcm90b3R5cGUse2xlbmd0aDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyQXR0cmlidXRlOiAubGVuZ3RoIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSAuY291bnQgaW5zdGVhZC4iKSx0aGlzLmFycmF5Lmxlbmd0aH19LGR5bmFtaWM6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckF0dHJpYnV0ZTogLmR5bmFtaWMgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIC51c2FnZSBpbnN0ZWFkLiIpLHRoaXMudXNhZ2U9PT1pc3R9LHNldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyQXR0cmlidXRlOiAuZHluYW1pYyBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgLnVzYWdlIGluc3RlYWQuIiksdGhpcy5zZXRVc2FnZShpc3QpfX19KSxRbHQucHJvdG90eXBlLnNldER5bmFtaWM9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyQXR0cmlidXRlOiAuc2V0RHluYW1pYygpIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSAuc2V0VXNhZ2UoKSBpbnN0ZWFkLiIpLHRoaXMuc2V0VXNhZ2UoITA9PT10P2lzdDpvc3QpLHRoaXN9LFFsdC5wcm90b3R5cGUuY29weUluZGljZXNBcnJheT1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLkJ1ZmZlckF0dHJpYnV0ZTogLmNvcHlJbmRpY2VzQXJyYXkoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxRbHQucHJvdG90eXBlLnNldEFycmF5PWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuQnVmZmVyQXR0cmlidXRlOiAuc2V0QXJyYXkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIEJ1ZmZlckdlb21ldHJ5IC5zZXRBdHRyaWJ1dGUgdG8gcmVwbGFjZS9yZXNpemUgYXR0cmlidXRlIGJ1ZmZlcnMiKX0sZGN0LnByb3RvdHlwZS5hZGRJbmRleD1mdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5OiAuYWRkSW5kZXgoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5zZXRJbmRleCgpLiIpLHRoaXMuc2V0SW5kZXgodCl9LGRjdC5wcm90b3R5cGUuYWRkQXR0cmlidXRlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyR2VvbWV0cnk6IC5hZGRBdHRyaWJ1dGUoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5zZXRBdHRyaWJ1dGUoKS4iKSxlJiZlLmlzQnVmZmVyQXR0cmlidXRlfHxlJiZlLmlzSW50ZXJsZWF2ZWRCdWZmZXJBdHRyaWJ1dGU/ImluZGV4Ij09PXQ/KGNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyR2VvbWV0cnkuYWRkQXR0cmlidXRlOiBVc2UgLnNldEluZGV4KCkgZm9yIGluZGV4IGF0dHJpYnV0ZS4iKSx0aGlzLnNldEluZGV4KGUpLHRoaXMpOnRoaXMuc2V0QXR0cmlidXRlKHQsZSk6KGNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyR2VvbWV0cnk6IC5hZGRBdHRyaWJ1dGUoKSBub3cgZXhwZWN0cyAoIG5hbWUsIGF0dHJpYnV0ZSApLiIpLHRoaXMuc2V0QXR0cmlidXRlKHQsbmV3IFFsdChhcmd1bWVudHNbMV0sYXJndW1lbnRzWzJdKSkpfSxkY3QucHJvdG90eXBlLmFkZERyYXdDYWxsPWZ1bmN0aW9uKHQsZSxuKXt2b2lkIDAhPT1uJiZjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5OiAuYWRkRHJhd0NhbGwoKSBubyBsb25nZXIgc3VwcG9ydHMgaW5kZXhPZmZzZXQuIiksY29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJHZW9tZXRyeTogLmFkZERyYXdDYWxsKCkgaXMgbm93IC5hZGRHcm91cCgpLiIpLHRoaXMuYWRkR3JvdXAodCxlKX0sZGN0LnByb3RvdHlwZS5jbGVhckRyYXdDYWxscz1mdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyR2VvbWV0cnk6IC5jbGVhckRyYXdDYWxscygpIGlzIG5vdyAuY2xlYXJHcm91cHMoKS4iKSx0aGlzLmNsZWFyR3JvdXBzKCl9LGRjdC5wcm90b3R5cGUuY29tcHV0ZU9mZnNldHM9ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5OiAuY29tcHV0ZU9mZnNldHMoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxkY3QucHJvdG90eXBlLnJlbW92ZUF0dHJpYnV0ZT1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJHZW9tZXRyeTogLnJlbW92ZUF0dHJpYnV0ZSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmRlbGV0ZUF0dHJpYnV0ZSgpLiIpLHRoaXMuZGVsZXRlQXR0cmlidXRlKHQpfSxkY3QucHJvdG90eXBlLmFwcGx5TWF0cml4PWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5OiAuYXBwbHlNYXRyaXgoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5hcHBseU1hdHJpeDQoKS4iKSx0aGlzLmFwcGx5TWF0cml4NCh0KX0sT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZGN0LnByb3RvdHlwZSx7ZHJhd2NhbGxzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS5lcnJvcigiVEhSRUUuQnVmZmVyR2VvbWV0cnk6IC5kcmF3Y2FsbHMgaGFzIGJlZW4gcmVuYW1lZCB0byAuZ3JvdXBzLiIpLHRoaXMuZ3JvdXBzfX0sb2Zmc2V0czp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyR2VvbWV0cnk6IC5vZmZzZXRzIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdyb3Vwcy4iKSx0aGlzLmdyb3Vwc319fSksTG10LnByb3RvdHlwZS5zZXREeW5hbWljPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkludGVybGVhdmVkQnVmZmVyOiAuc2V0RHluYW1pYygpIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSAuc2V0VXNhZ2UoKSBpbnN0ZWFkLiIpLHRoaXMuc2V0VXNhZ2UoITA9PT10P2lzdDpvc3QpLHRoaXN9LExtdC5wcm90b3R5cGUuc2V0QXJyYXk9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5JbnRlcmxlYXZlZEJ1ZmZlcjogLnNldEFycmF5IGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBCdWZmZXJHZW9tZXRyeSAuc2V0QXR0cmlidXRlIHRvIHJlcGxhY2UvcmVzaXplIGF0dHJpYnV0ZSBidWZmZXJzIil9LHh1dC5wcm90b3R5cGUuZ2V0QXJyYXlzPWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuRXh0cnVkZUdlb21ldHJ5OiAuZ2V0QXJyYXlzKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0seHV0LnByb3RvdHlwZS5hZGRTaGFwZUxpc3Q9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5FeHRydWRlR2VvbWV0cnk6IC5hZGRTaGFwZUxpc3QoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSx4dXQucHJvdG90eXBlLmFkZFNoYXBlPWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuRXh0cnVkZUdlb21ldHJ5OiAuYWRkU2hhcGUoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxGbXQucHJvdG90eXBlLmRpc3Bvc2U9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5TY2VuZTogLmRpc3Bvc2UoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhWbHQucHJvdG90eXBlLHt3cmFwQXJvdW5kOntnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLk1hdGVyaWFsOiAud3JhcEFyb3VuZCBoYXMgYmVlbiByZW1vdmVkLiIpfSxzZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLk1hdGVyaWFsOiAud3JhcEFyb3VuZCBoYXMgYmVlbiByZW1vdmVkLiIpfX0sb3ZlcmRyYXc6e2dldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuTWF0ZXJpYWw6IC5vdmVyZHJhdyBoYXMgYmVlbiByZW1vdmVkLiIpfSxzZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLk1hdGVyaWFsOiAub3ZlcmRyYXcgaGFzIGJlZW4gcmVtb3ZlZC4iKX19LHdyYXBSR0I6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk1hdGVyaWFsOiAud3JhcFJHQiBoYXMgYmVlbiByZW1vdmVkLiIpLG5ldyBabHR9fSxzaGFkaW5nOntnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS4iK3RoaXMudHlwZSsiOiAuc2hhZGluZyBoYXMgYmVlbiByZW1vdmVkLiBVc2UgdGhlIGJvb2xlYW4gLmZsYXRTaGFkaW5nIGluc3RlYWQuIil9LHNldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLiIrdGhpcy50eXBlKyI6IC5zaGFkaW5nIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSB0aGUgYm9vbGVhbiAuZmxhdFNoYWRpbmcgaW5zdGVhZC4iKSx0aGlzLmZsYXRTaGFkaW5nPTE9PT10fX0sc3RlbmNpbE1hc2s6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLiIrdGhpcy50eXBlKyI6IC5zdGVuY2lsTWFzayBoYXMgYmVlbiByZW1vdmVkLiBVc2UgLnN0ZW5jaWxGdW5jTWFzayBpbnN0ZWFkLiIpLHRoaXMuc3RlbmNpbEZ1bmNNYXNrfSxzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS4iK3RoaXMudHlwZSsiOiAuc3RlbmNpbE1hc2sgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIC5zdGVuY2lsRnVuY01hc2sgaW5zdGVhZC4iKSx0aGlzLnN0ZW5jaWxGdW5jTWFzaz10fX0sdmVydGV4VGFuZ2VudHM6e2dldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuIit0aGlzLnR5cGUrIjogLnZlcnRleFRhbmdlbnRzIGhhcyBiZWVuIHJlbW92ZWQuIil9LHNldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuIit0aGlzLnR5cGUrIjogLnZlcnRleFRhbmdlbnRzIGhhcyBiZWVuIHJlbW92ZWQuIil9fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKE5jdC5wcm90b3R5cGUse2Rlcml2YXRpdmVzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5TaGFkZXJNYXRlcmlhbDogLmRlcml2YXRpdmVzIGhhcyBiZWVuIG1vdmVkIHRvIC5leHRlbnNpb25zLmRlcml2YXRpdmVzLiIpLHRoaXMuZXh0ZW5zaW9ucy5kZXJpdmF0aXZlc30sc2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuIFNoYWRlck1hdGVyaWFsOiAuZGVyaXZhdGl2ZXMgaGFzIGJlZW4gbW92ZWQgdG8gLmV4dGVuc2lvbnMuZGVyaXZhdGl2ZXMuIiksdGhpcy5leHRlbnNpb25zLmRlcml2YXRpdmVzPXR9fX0pLEhtdC5wcm90b3R5cGUuY2xlYXJUYXJnZXQ9ZnVuY3Rpb24odCxlLG4sbyl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuY2xlYXJUYXJnZXQoKSBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgLnNldFJlbmRlclRhcmdldCgpIGFuZCAuY2xlYXIoKSBpbnN0ZWFkLiIpLHRoaXMuc2V0UmVuZGVyVGFyZ2V0KHQpLHRoaXMuY2xlYXIoZSxuLG8pfSxIbXQucHJvdG90eXBlLmFuaW1hdGU9ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuYW5pbWF0ZSgpIGlzIG5vdyAuc2V0QW5pbWF0aW9uTG9vcCgpLiIpLHRoaXMuc2V0QW5pbWF0aW9uTG9vcCh0KX0sSG10LnByb3RvdHlwZS5nZXRDdXJyZW50UmVuZGVyVGFyZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmdldEN1cnJlbnRSZW5kZXJUYXJnZXQoKSBpcyBub3cgLmdldFJlbmRlclRhcmdldCgpLiIpLHRoaXMuZ2V0UmVuZGVyVGFyZ2V0KCl9LEhtdC5wcm90b3R5cGUuZ2V0TWF4QW5pc290cm9weT1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5nZXRNYXhBbmlzb3Ryb3B5KCkgaXMgbm93IC5jYXBhYmlsaXRpZXMuZ2V0TWF4QW5pc290cm9weSgpLiIpLHRoaXMuY2FwYWJpbGl0aWVzLmdldE1heEFuaXNvdHJvcHkoKX0sSG10LnByb3RvdHlwZS5nZXRQcmVjaXNpb249ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuZ2V0UHJlY2lzaW9uKCkgaXMgbm93IC5jYXBhYmlsaXRpZXMucHJlY2lzaW9uLiIpLHRoaXMuY2FwYWJpbGl0aWVzLnByZWNpc2lvbn0sSG10LnByb3RvdHlwZS5yZXNldEdMU3RhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAucmVzZXRHTFN0YXRlKCkgaXMgbm93IC5zdGF0ZS5yZXNldCgpLiIpLHRoaXMuc3RhdGUucmVzZXQoKX0sSG10LnByb3RvdHlwZS5zdXBwb3J0c0Zsb2F0VGV4dHVyZXM9ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc3VwcG9ydHNGbG9hdFRleHR1cmVzKCkgaXMgbm93IC5leHRlbnNpb25zLmdldCggJ09FU190ZXh0dXJlX2Zsb2F0JyApLiIpLHRoaXMuZXh0ZW5zaW9ucy5nZXQoIk9FU190ZXh0dXJlX2Zsb2F0Iil9LEhtdC5wcm90b3R5cGUuc3VwcG9ydHNIYWxmRmxvYXRUZXh0dXJlcz1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zdXBwb3J0c0hhbGZGbG9hdFRleHR1cmVzKCkgaXMgbm93IC5leHRlbnNpb25zLmdldCggJ09FU190ZXh0dXJlX2hhbGZfZmxvYXQnICkuIiksdGhpcy5leHRlbnNpb25zLmdldCgiT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIpfSxIbXQucHJvdG90eXBlLnN1cHBvcnRzU3RhbmRhcmREZXJpdmF0aXZlcz1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zdXBwb3J0c1N0YW5kYXJkRGVyaXZhdGl2ZXMoKSBpcyBub3cgLmV4dGVuc2lvbnMuZ2V0KCAnT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzJyApLiIpLHRoaXMuZXh0ZW5zaW9ucy5nZXQoIk9FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyIpfSxIbXQucHJvdG90eXBlLnN1cHBvcnRzQ29tcHJlc3NlZFRleHR1cmVTM1RDPWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnN1cHBvcnRzQ29tcHJlc3NlZFRleHR1cmVTM1RDKCkgaXMgbm93IC5leHRlbnNpb25zLmdldCggJ1dFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjJyApLiIpLHRoaXMuZXh0ZW5zaW9ucy5nZXQoIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjIil9LEhtdC5wcm90b3R5cGUuc3VwcG9ydHNDb21wcmVzc2VkVGV4dHVyZVBWUlRDPWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnN1cHBvcnRzQ29tcHJlc3NlZFRleHR1cmVQVlJUQygpIGlzIG5vdyAuZXh0ZW5zaW9ucy5nZXQoICdXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZydGMnICkuIiksdGhpcy5leHRlbnNpb25zLmdldCgiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3B2cnRjIil9LEhtdC5wcm90b3R5cGUuc3VwcG9ydHNCbGVuZE1pbk1heD1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zdXBwb3J0c0JsZW5kTWluTWF4KCkgaXMgbm93IC5leHRlbnNpb25zLmdldCggJ0VYVF9ibGVuZF9taW5tYXgnICkuIiksdGhpcy5leHRlbnNpb25zLmdldCgiRVhUX2JsZW5kX21pbm1heCIpfSxIbXQucHJvdG90eXBlLnN1cHBvcnRzVmVydGV4VGV4dHVyZXM9ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc3VwcG9ydHNWZXJ0ZXhUZXh0dXJlcygpIGlzIG5vdyAuY2FwYWJpbGl0aWVzLnZlcnRleFRleHR1cmVzLiIpLHRoaXMuY2FwYWJpbGl0aWVzLnZlcnRleFRleHR1cmVzfSxIbXQucHJvdG90eXBlLnN1cHBvcnRzSW5zdGFuY2VkQXJyYXlzPWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnN1cHBvcnRzSW5zdGFuY2VkQXJyYXlzKCkgaXMgbm93IC5leHRlbnNpb25zLmdldCggJ0FOR0xFX2luc3RhbmNlZF9hcnJheXMnICkuIiksdGhpcy5leHRlbnNpb25zLmdldCgiQU5HTEVfaW5zdGFuY2VkX2FycmF5cyIpfSxIbXQucHJvdG90eXBlLmVuYWJsZVNjaXNzb3JUZXN0PWZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmVuYWJsZVNjaXNzb3JUZXN0KCkgaXMgbm93IC5zZXRTY2lzc29yVGVzdCgpLiIpLHRoaXMuc2V0U2Npc3NvclRlc3QodCl9LEhtdC5wcm90b3R5cGUuaW5pdE1hdGVyaWFsPWZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuaW5pdE1hdGVyaWFsKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sSG10LnByb3RvdHlwZS5hZGRQcmVQbHVnaW49ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5hZGRQcmVQbHVnaW4oKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxIbXQucHJvdG90eXBlLmFkZFBvc3RQbHVnaW49ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5hZGRQb3N0UGx1Z2luKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sSG10LnByb3RvdHlwZS51cGRhdGVTaGFkb3dNYXA9ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC51cGRhdGVTaGFkb3dNYXAoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxIbXQucHJvdG90eXBlLnNldEZhY2VDdWxsaW5nPWZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2V0RmFjZUN1bGxpbmcoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxIbXQucHJvdG90eXBlLmFsbG9jVGV4dHVyZVVuaXQ9ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5hbGxvY1RleHR1cmVVbml0KCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sSG10LnByb3RvdHlwZS5zZXRUZXh0dXJlPWZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2V0VGV4dHVyZSgpIGhhcyBiZWVuIHJlbW92ZWQuIil9LEhtdC5wcm90b3R5cGUuc2V0VGV4dHVyZTJEPWZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2V0VGV4dHVyZTJEKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sSG10LnByb3RvdHlwZS5zZXRUZXh0dXJlQ3ViZT1mdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnNldFRleHR1cmVDdWJlKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sSG10LnByb3RvdHlwZS5nZXRBY3RpdmVNaXBNYXBMZXZlbD1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5nZXRBY3RpdmVNaXBNYXBMZXZlbCgpIGlzIG5vdyAuZ2V0QWN0aXZlTWlwbWFwTGV2ZWwoKS4iKSx0aGlzLmdldEFjdGl2ZU1pcG1hcExldmVsKCl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKEhtdC5wcm90b3R5cGUse3NoYWRvd01hcEVuYWJsZWQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNoYWRvd01hcC5lbmFibGVkfSxzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2hhZG93TWFwRW5hYmxlZCBpcyBub3cgLnNoYWRvd01hcC5lbmFibGVkLiIpLHRoaXMuc2hhZG93TWFwLmVuYWJsZWQ9dH19LHNoYWRvd01hcFR5cGU6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNoYWRvd01hcC50eXBlfSxzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2hhZG93TWFwVHlwZSBpcyBub3cgLnNoYWRvd01hcC50eXBlLiIpLHRoaXMuc2hhZG93TWFwLnR5cGU9dH19LHNoYWRvd01hcEN1bGxGYWNlOntnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zaGFkb3dNYXBDdWxsRmFjZSBoYXMgYmVlbiByZW1vdmVkLiBTZXQgTWF0ZXJpYWwuc2hhZG93U2lkZSBpbnN0ZWFkLiIpfSxzZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zaGFkb3dNYXBDdWxsRmFjZSBoYXMgYmVlbiByZW1vdmVkLiBTZXQgTWF0ZXJpYWwuc2hhZG93U2lkZSBpbnN0ZWFkLiIpfX0sY29udGV4dDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmNvbnRleHQgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIC5nZXRDb250ZXh0KCkgaW5zdGVhZC4iKSx0aGlzLmdldENvbnRleHQoKX19LHZyOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAudnIgaGFzIGJlZW4gcmVuYW1lZCB0byAueHIiKSx0aGlzLnhyfX0sZ2FtbWFJbnB1dDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmdhbW1hSW5wdXQgaGFzIGJlZW4gcmVtb3ZlZC4gU2V0IHRoZSBlbmNvZGluZyBmb3IgdGV4dHVyZXMgdmlhIFRleHR1cmUuZW5jb2RpbmcgaW5zdGVhZC4iKSwhMX0sc2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuZ2FtbWFJbnB1dCBoYXMgYmVlbiByZW1vdmVkLiBTZXQgdGhlIGVuY29kaW5nIGZvciB0ZXh0dXJlcyB2aWEgVGV4dHVyZS5lbmNvZGluZyBpbnN0ZWFkLiIpfX0sZ2FtbWFPdXRwdXQ6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5nYW1tYU91dHB1dCBoYXMgYmVlbiByZW1vdmVkLiBTZXQgV2ViR0xSZW5kZXJlci5vdXRwdXRFbmNvZGluZyBpbnN0ZWFkLiIpLCExfSxzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuZ2FtbWFPdXRwdXQgaGFzIGJlZW4gcmVtb3ZlZC4gU2V0IFdlYkdMUmVuZGVyZXIub3V0cHV0RW5jb2RpbmcgaW5zdGVhZC4iKSx0aGlzLm91dHB1dEVuY29kaW5nPSEwPT09dD8kcnQ6UXJ0fX0sdG9uZU1hcHBpbmdXaGl0ZVBvaW50OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAudG9uZU1hcHBpbmdXaGl0ZVBvaW50IGhhcyBiZWVuIHJlbW92ZWQuIiksMX0sc2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAudG9uZU1hcHBpbmdXaGl0ZVBvaW50IGhhcyBiZWVuIHJlbW92ZWQuIil9fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGttdC5wcm90b3R5cGUse2N1bGxGYWNlOntnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zaGFkb3dNYXAuY3VsbEZhY2UgaGFzIGJlZW4gcmVtb3ZlZC4gU2V0IE1hdGVyaWFsLnNoYWRvd1NpZGUgaW5zdGVhZC4iKX0sc2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2hhZG93TWFwLmN1bGxGYWNlIGhhcyBiZWVuIHJlbW92ZWQuIFNldCBNYXRlcmlhbC5zaGFkb3dTaWRlIGluc3RlYWQuIil9fSxyZW5kZXJSZXZlcnNlU2lkZWQ6e2dldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnNoYWRvd01hcC5yZW5kZXJSZXZlcnNlU2lkZWQgaGFzIGJlZW4gcmVtb3ZlZC4gU2V0IE1hdGVyaWFsLnNoYWRvd1NpZGUgaW5zdGVhZC4iKX0sc2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2hhZG93TWFwLnJlbmRlclJldmVyc2VTaWRlZCBoYXMgYmVlbiByZW1vdmVkLiBTZXQgTWF0ZXJpYWwuc2hhZG93U2lkZSBpbnN0ZWFkLiIpfX0scmVuZGVyU2luZ2xlU2lkZWQ6e2dldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnNoYWRvd01hcC5yZW5kZXJTaW5nbGVTaWRlZCBoYXMgYmVlbiByZW1vdmVkLiBTZXQgTWF0ZXJpYWwuc2hhZG93U2lkZSBpbnN0ZWFkLiIpfSxzZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zaGFkb3dNYXAucmVuZGVyU2luZ2xlU2lkZWQgaGFzIGJlZW4gcmVtb3ZlZC4gU2V0IE1hdGVyaWFsLnNoYWRvd1NpZGUgaW5zdGVhZC4iKX19fSksT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoeHN0LnByb3RvdHlwZSx7d3JhcFM6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAud3JhcFMgaXMgbm93IC50ZXh0dXJlLndyYXBTLiIpLHRoaXMudGV4dHVyZS53cmFwU30sc2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC53cmFwUyBpcyBub3cgLnRleHR1cmUud3JhcFMuIiksdGhpcy50ZXh0dXJlLndyYXBTPXR9fSx3cmFwVDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC53cmFwVCBpcyBub3cgLnRleHR1cmUud3JhcFQuIiksdGhpcy50ZXh0dXJlLndyYXBUfSxzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLndyYXBUIGlzIG5vdyAudGV4dHVyZS53cmFwVC4iKSx0aGlzLnRleHR1cmUud3JhcFQ9dH19LG1hZ0ZpbHRlcjp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC5tYWdGaWx0ZXIgaXMgbm93IC50ZXh0dXJlLm1hZ0ZpbHRlci4iKSx0aGlzLnRleHR1cmUubWFnRmlsdGVyfSxzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLm1hZ0ZpbHRlciBpcyBub3cgLnRleHR1cmUubWFnRmlsdGVyLiIpLHRoaXMudGV4dHVyZS5tYWdGaWx0ZXI9dH19LG1pbkZpbHRlcjp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC5taW5GaWx0ZXIgaXMgbm93IC50ZXh0dXJlLm1pbkZpbHRlci4iKSx0aGlzLnRleHR1cmUubWluRmlsdGVyfSxzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLm1pbkZpbHRlciBpcyBub3cgLnRleHR1cmUubWluRmlsdGVyLiIpLHRoaXMudGV4dHVyZS5taW5GaWx0ZXI9dH19LGFuaXNvdHJvcHk6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAuYW5pc290cm9weSBpcyBub3cgLnRleHR1cmUuYW5pc290cm9weS4iKSx0aGlzLnRleHR1cmUuYW5pc290cm9weX0sc2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC5hbmlzb3Ryb3B5IGlzIG5vdyAudGV4dHVyZS5hbmlzb3Ryb3B5LiIpLHRoaXMudGV4dHVyZS5hbmlzb3Ryb3B5PXR9fSxvZmZzZXQ6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAub2Zmc2V0IGlzIG5vdyAudGV4dHVyZS5vZmZzZXQuIiksdGhpcy50ZXh0dXJlLm9mZnNldH0sc2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC5vZmZzZXQgaXMgbm93IC50ZXh0dXJlLm9mZnNldC4iKSx0aGlzLnRleHR1cmUub2Zmc2V0PXR9fSxyZXBlYXQ6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAucmVwZWF0IGlzIG5vdyAudGV4dHVyZS5yZXBlYXQuIiksdGhpcy50ZXh0dXJlLnJlcGVhdH0sc2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC5yZXBlYXQgaXMgbm93IC50ZXh0dXJlLnJlcGVhdC4iKSx0aGlzLnRleHR1cmUucmVwZWF0PXR9fSxmb3JtYXQ6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAuZm9ybWF0IGlzIG5vdyAudGV4dHVyZS5mb3JtYXQuIiksdGhpcy50ZXh0dXJlLmZvcm1hdH0sc2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC5mb3JtYXQgaXMgbm93IC50ZXh0dXJlLmZvcm1hdC4iKSx0aGlzLnRleHR1cmUuZm9ybWF0PXR9fSx0eXBlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLnR5cGUgaXMgbm93IC50ZXh0dXJlLnR5cGUuIiksdGhpcy50ZXh0dXJlLnR5cGV9LHNldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAudHlwZSBpcyBub3cgLnRleHR1cmUudHlwZS4iKSx0aGlzLnRleHR1cmUudHlwZT10fX0sZ2VuZXJhdGVNaXBtYXBzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLmdlbmVyYXRlTWlwbWFwcyBpcyBub3cgLnRleHR1cmUuZ2VuZXJhdGVNaXBtYXBzLiIpLHRoaXMudGV4dHVyZS5nZW5lcmF0ZU1pcG1hcHN9LHNldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAuZ2VuZXJhdGVNaXBtYXBzIGlzIG5vdyAudGV4dHVyZS5nZW5lcmF0ZU1pcG1hcHMuIiksdGhpcy50ZXh0dXJlLmdlbmVyYXRlTWlwbWFwcz10fX19KSxjbGFzcyBleHRlbmRzIFNsdHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMudHlwZT0iQXVkaW8iLHRoaXMubGlzdGVuZXI9dCx0aGlzLmNvbnRleHQ9dC5jb250ZXh0LHRoaXMuZ2Fpbj10aGlzLmNvbnRleHQuY3JlYXRlR2FpbigpLHRoaXMuZ2Fpbi5jb25uZWN0KHQuZ2V0SW5wdXQoKSksdGhpcy5hdXRvcGxheT0hMSx0aGlzLmJ1ZmZlcj1udWxsLHRoaXMuZGV0dW5lPTAsdGhpcy5sb29wPSExLHRoaXMubG9vcFN0YXJ0PTAsdGhpcy5sb29wRW5kPTAsdGhpcy5vZmZzZXQ9MCx0aGlzLmR1cmF0aW9uPXZvaWQgMCx0aGlzLnBsYXliYWNrUmF0ZT0xLHRoaXMuaXNQbGF5aW5nPSExLHRoaXMuaGFzUGxheWJhY2tDb250cm9sPSEwLHRoaXMuc291cmNlPW51bGwsdGhpcy5zb3VyY2VUeXBlPSJlbXB0eSIsdGhpcy5fc3RhcnRlZEF0PTAsdGhpcy5fcHJvZ3Jlc3M9MCx0aGlzLl9jb25uZWN0ZWQ9ITEsdGhpcy5maWx0ZXJzPVtdfWdldE91dHB1dCgpe3JldHVybiB0aGlzLmdhaW59c2V0Tm9kZVNvdXJjZSh0KXtyZXR1cm4gdGhpcy5oYXNQbGF5YmFja0NvbnRyb2w9ITEsdGhpcy5zb3VyY2VUeXBlPSJhdWRpb05vZGUiLHRoaXMuc291cmNlPXQsdGhpcy5jb25uZWN0KCksdGhpc31zZXRNZWRpYUVsZW1lbnRTb3VyY2UodCl7cmV0dXJuIHRoaXMuaGFzUGxheWJhY2tDb250cm9sPSExLHRoaXMuc291cmNlVHlwZT0ibWVkaWFOb2RlIix0aGlzLnNvdXJjZT10aGlzLmNvbnRleHQuY3JlYXRlTWVkaWFFbGVtZW50U291cmNlKHQpLHRoaXMuY29ubmVjdCgpLHRoaXN9c2V0TWVkaWFTdHJlYW1Tb3VyY2UodCl7cmV0dXJuIHRoaXMuaGFzUGxheWJhY2tDb250cm9sPSExLHRoaXMuc291cmNlVHlwZT0ibWVkaWFTdHJlYW1Ob2RlIix0aGlzLnNvdXJjZT10aGlzLmNvbnRleHQuY3JlYXRlTWVkaWFTdHJlYW1Tb3VyY2UodCksdGhpcy5jb25uZWN0KCksdGhpc31zZXRCdWZmZXIodCl7cmV0dXJuIHRoaXMuYnVmZmVyPXQsdGhpcy5zb3VyY2VUeXBlPSJidWZmZXIiLHRoaXMuYXV0b3BsYXkmJnRoaXMucGxheSgpLHRoaXN9cGxheSh0PTApe2lmKCEwPT09dGhpcy5pc1BsYXlpbmcpcmV0dXJuIHZvaWQgY29uc29sZS53YXJuKCJUSFJFRS5BdWRpbzogQXVkaW8gaXMgYWxyZWFkeSBwbGF5aW5nLiIpO2lmKCExPT09dGhpcy5oYXNQbGF5YmFja0NvbnRyb2wpcmV0dXJuIHZvaWQgY29uc29sZS53YXJuKCJUSFJFRS5BdWRpbzogdGhpcyBBdWRpbyBoYXMgbm8gcGxheWJhY2sgY29udHJvbC4iKTt0aGlzLl9zdGFydGVkQXQ9dGhpcy5jb250ZXh0LmN1cnJlbnRUaW1lK3Q7Y29uc3QgZT10aGlzLmNvbnRleHQuY3JlYXRlQnVmZmVyU291cmNlKCk7cmV0dXJuIGUuYnVmZmVyPXRoaXMuYnVmZmVyLGUubG9vcD10aGlzLmxvb3AsZS5sb29wU3RhcnQ9dGhpcy5sb29wU3RhcnQsZS5sb29wRW5kPXRoaXMubG9vcEVuZCxlLm9uZW5kZWQ9dGhpcy5vbkVuZGVkLmJpbmQodGhpcyksZS5zdGFydCh0aGlzLl9zdGFydGVkQXQsdGhpcy5fcHJvZ3Jlc3MrdGhpcy5vZmZzZXQsdGhpcy5kdXJhdGlvbiksdGhpcy5pc1BsYXlpbmc9ITAsdGhpcy5zb3VyY2U9ZSx0aGlzLnNldERldHVuZSh0aGlzLmRldHVuZSksdGhpcy5zZXRQbGF5YmFja1JhdGUodGhpcy5wbGF5YmFja1JhdGUpLHRoaXMuY29ubmVjdCgpfXBhdXNlKCl7aWYoITEhPT10aGlzLmhhc1BsYXliYWNrQ29udHJvbClyZXR1cm4hMD09PXRoaXMuaXNQbGF5aW5nJiYodGhpcy5fcHJvZ3Jlc3MrPU1hdGgubWF4KHRoaXMuY29udGV4dC5jdXJyZW50VGltZS10aGlzLl9zdGFydGVkQXQsMCkqdGhpcy5wbGF5YmFja1JhdGUsITA9PT10aGlzLmxvb3AmJih0aGlzLl9wcm9ncmVzcz10aGlzLl9wcm9ncmVzcyUodGhpcy5kdXJhdGlvbnx8dGhpcy5idWZmZXIuZHVyYXRpb24pKSx0aGlzLnNvdXJjZS5zdG9wKCksdGhpcy5zb3VyY2Uub25lbmRlZD1udWxsLHRoaXMuaXNQbGF5aW5nPSExKSx0aGlzO2NvbnNvbGUud2FybigiVEhSRUUuQXVkaW86IHRoaXMgQXVkaW8gaGFzIG5vIHBsYXliYWNrIGNvbnRyb2wuIil9c3RvcCgpe2lmKCExIT09dGhpcy5oYXNQbGF5YmFja0NvbnRyb2wpcmV0dXJuIHRoaXMuX3Byb2dyZXNzPTAsdGhpcy5zb3VyY2Uuc3RvcCgpLHRoaXMuc291cmNlLm9uZW5kZWQ9bnVsbCx0aGlzLmlzUGxheWluZz0hMSx0aGlzO2NvbnNvbGUud2FybigiVEhSRUUuQXVkaW86IHRoaXMgQXVkaW8gaGFzIG5vIHBsYXliYWNrIGNvbnRyb2wuIil9Y29ubmVjdCgpe2lmKHRoaXMuZmlsdGVycy5sZW5ndGg+MCl7dGhpcy5zb3VyY2UuY29ubmVjdCh0aGlzLmZpbHRlcnNbMF0pO2ZvcihsZXQgdD0xLGU9dGhpcy5maWx0ZXJzLmxlbmd0aDt0PGU7dCsrKXRoaXMuZmlsdGVyc1t0LTFdLmNvbm5lY3QodGhpcy5maWx0ZXJzW3RdKTt0aGlzLmZpbHRlcnNbdGhpcy5maWx0ZXJzLmxlbmd0aC0xXS5jb25uZWN0KHRoaXMuZ2V0T3V0cHV0KCkpfWVsc2UgdGhpcy5zb3VyY2UuY29ubmVjdCh0aGlzLmdldE91dHB1dCgpKTtyZXR1cm4gdGhpcy5fY29ubmVjdGVkPSEwLHRoaXN9ZGlzY29ubmVjdCgpe2lmKHRoaXMuZmlsdGVycy5sZW5ndGg+MCl7dGhpcy5zb3VyY2UuZGlzY29ubmVjdCh0aGlzLmZpbHRlcnNbMF0pO2ZvcihsZXQgdD0xLGU9dGhpcy5maWx0ZXJzLmxlbmd0aDt0PGU7dCsrKXRoaXMuZmlsdGVyc1t0LTFdLmRpc2Nvbm5lY3QodGhpcy5maWx0ZXJzW3RdKTt0aGlzLmZpbHRlcnNbdGhpcy5maWx0ZXJzLmxlbmd0aC0xXS5kaXNjb25uZWN0KHRoaXMuZ2V0T3V0cHV0KCkpfWVsc2UgdGhpcy5zb3VyY2UuZGlzY29ubmVjdCh0aGlzLmdldE91dHB1dCgpKTtyZXR1cm4gdGhpcy5fY29ubmVjdGVkPSExLHRoaXN9Z2V0RmlsdGVycygpe3JldHVybiB0aGlzLmZpbHRlcnN9c2V0RmlsdGVycyh0KXtyZXR1cm4gdHx8KHQ9W10pLCEwPT09dGhpcy5fY29ubmVjdGVkPyh0aGlzLmRpc2Nvbm5lY3QoKSx0aGlzLmZpbHRlcnM9dC5zbGljZSgpLHRoaXMuY29ubmVjdCgpKTp0aGlzLmZpbHRlcnM9dC5zbGljZSgpLHRoaXN9c2V0RGV0dW5lKHQpe2lmKHRoaXMuZGV0dW5lPXQsdm9pZCAwIT09dGhpcy5zb3VyY2UuZGV0dW5lKXJldHVybiEwPT09dGhpcy5pc1BsYXlpbmcmJnRoaXMuc291cmNlLmRldHVuZS5zZXRUYXJnZXRBdFRpbWUodGhpcy5kZXR1bmUsdGhpcy5jb250ZXh0LmN1cnJlbnRUaW1lLC4wMSksdGhpc31nZXREZXR1bmUoKXtyZXR1cm4gdGhpcy5kZXR1bmV9Z2V0RmlsdGVyKCl7cmV0dXJuIHRoaXMuZ2V0RmlsdGVycygpWzBdfXNldEZpbHRlcih0KXtyZXR1cm4gdGhpcy5zZXRGaWx0ZXJzKHQ/W3RdOltdKX1zZXRQbGF5YmFja1JhdGUodCl7aWYoITEhPT10aGlzLmhhc1BsYXliYWNrQ29udHJvbClyZXR1cm4gdGhpcy5wbGF5YmFja1JhdGU9dCwhMD09PXRoaXMuaXNQbGF5aW5nJiZ0aGlzLnNvdXJjZS5wbGF5YmFja1JhdGUuc2V0VGFyZ2V0QXRUaW1lKHRoaXMucGxheWJhY2tSYXRlLHRoaXMuY29udGV4dC5jdXJyZW50VGltZSwuMDEpLHRoaXM7Y29uc29sZS53YXJuKCJUSFJFRS5BdWRpbzogdGhpcyBBdWRpbyBoYXMgbm8gcGxheWJhY2sgY29udHJvbC4iKX1nZXRQbGF5YmFja1JhdGUoKXtyZXR1cm4gdGhpcy5wbGF5YmFja1JhdGV9b25FbmRlZCgpe3RoaXMuaXNQbGF5aW5nPSExfWdldExvb3AoKXtyZXR1cm4hMT09PXRoaXMuaGFzUGxheWJhY2tDb250cm9sPyhjb25zb2xlLndhcm4oIlRIUkVFLkF1ZGlvOiB0aGlzIEF1ZGlvIGhhcyBubyBwbGF5YmFjayBjb250cm9sLiIpLCExKTp0aGlzLmxvb3B9c2V0TG9vcCh0KXtpZighMSE9PXRoaXMuaGFzUGxheWJhY2tDb250cm9sKXJldHVybiB0aGlzLmxvb3A9dCwhMD09PXRoaXMuaXNQbGF5aW5nJiYodGhpcy5zb3VyY2UubG9vcD10aGlzLmxvb3ApLHRoaXM7Y29uc29sZS53YXJuKCJUSFJFRS5BdWRpbzogdGhpcyBBdWRpbyBoYXMgbm8gcGxheWJhY2sgY29udHJvbC4iKX1zZXRMb29wU3RhcnQodCl7cmV0dXJuIHRoaXMubG9vcFN0YXJ0PXQsdGhpc31zZXRMb29wRW5kKHQpe3JldHVybiB0aGlzLmxvb3BFbmQ9dCx0aGlzfWdldFZvbHVtZSgpe3JldHVybiB0aGlzLmdhaW4uZ2Fpbi52YWx1ZX1zZXRWb2x1bWUodCl7cmV0dXJuIHRoaXMuZ2Fpbi5nYWluLnNldFRhcmdldEF0VGltZSh0LHRoaXMuY29udGV4dC5jdXJyZW50VGltZSwuMDEpLHRoaXN9fS5wcm90b3R5cGUubG9hZD1mdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLkF1ZGlvOiAubG9hZCBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgVEhSRUUuQXVkaW9Mb2FkZXIgaW5zdGVhZC4iKTtjb25zdCBlPXRoaXM7cmV0dXJuKG5ldyB1Z3QpLmxvYWQodCwoZnVuY3Rpb24odCl7ZS5zZXRCdWZmZXIodCl9KSksdGhpc30sRmN0LnByb3RvdHlwZS51cGRhdGVDdWJlTWFwPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQ3ViZUNhbWVyYTogLnVwZGF0ZUN1YmVNYXAoKSBpcyBub3cgLnVwZGF0ZSgpLiIpLHRoaXMudXBkYXRlKHQsZSl9LEZjdC5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24odCxlLG4sbyl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQ3ViZUNhbWVyYTogLmNsZWFyKCkgaXMgbm93IC5yZW5kZXJUYXJnZXQuY2xlYXIoKS4iKSx0aGlzLnJlbmRlclRhcmdldC5jbGVhcih0LGUsbixvKX0seXN0LmNyb3NzT3JpZ2luPXZvaWQgMCx5c3QubG9hZFRleHR1cmU9ZnVuY3Rpb24odCxlLG4sbyl7Y29uc29sZS53YXJuKCJUSFJFRS5JbWFnZVV0aWxzLmxvYWRUZXh0dXJlIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSBUSFJFRS5UZXh0dXJlTG9hZGVyKCkgaW5zdGVhZC4iKTtjb25zdCBpPW5ldyBYdXQ7aS5zZXRDcm9zc09yaWdpbih0aGlzLmNyb3NzT3JpZ2luKTtjb25zdCBhPWkubG9hZCh0LG4sdm9pZCAwLG8pO3JldHVybiBlJiYoYS5tYXBwaW5nPWUpLGF9LHlzdC5sb2FkVGV4dHVyZUN1YmU9ZnVuY3Rpb24odCxlLG4sbyl7Y29uc29sZS53YXJuKCJUSFJFRS5JbWFnZVV0aWxzLmxvYWRUZXh0dXJlQ3ViZSBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgVEhSRUUuQ3ViZVRleHR1cmVMb2FkZXIoKSBpbnN0ZWFkLiIpO2NvbnN0IGk9bmV3IFp1dDtpLnNldENyb3NzT3JpZ2luKHRoaXMuY3Jvc3NPcmlnaW4pO2NvbnN0IGE9aS5sb2FkKHQsbix2b2lkIDAsbyk7cmV0dXJuIGUmJihhLm1hcHBpbmc9ZSksYX0seXN0LmxvYWRDb21wcmVzc2VkVGV4dHVyZT1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLkltYWdlVXRpbHMubG9hZENvbXByZXNzZWRUZXh0dXJlIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBUSFJFRS5ERFNMb2FkZXIgaW5zdGVhZC4iKX0seXN0LmxvYWRDb21wcmVzc2VkVGV4dHVyZUN1YmU9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5JbWFnZVV0aWxzLmxvYWRDb21wcmVzc2VkVGV4dHVyZUN1YmUgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIFRIUkVFLkREU0xvYWRlciBpbnN0ZWFkLiIpfSwidW5kZWZpbmVkIiE9dHlwZW9mIF9fVEhSRUVfREVWVE9PTFNfXyYmX19USFJFRV9ERVZUT09MU19fLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJyZWdpc3RlciIse2RldGFpbDp7cmV2aXNpb246IjEzMSJ9fSkpLCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiYod2luZG93Ll9fVEhSRUVfXz9jb25zb2xlLndhcm4oIldBUk5JTkc6IE11bHRpcGxlIGluc3RhbmNlcyBvZiBUaHJlZS5qcyBiZWluZyBpbXBvcnRlZC4iKTp3aW5kb3cuX19USFJFRV9fPSIxMzEiKSwoZnVuY3Rpb24odCl7dFt0LkNJUkNMRT0wXT0iQ0lSQ0xFIix0W3QuTElORT0xXT0iTElORSIsdFt0LlRSSUFOR0xFPTJdPSJUUklBTkdMRSIsdFt0LlRSQVBFWk9JRD0zXT0iVFJBUEVaT0lEIn0pKE5ndHx8KE5ndD17fSkpO2NsYXNzIExndHtjb25zdHJ1Y3Rvcih0LGUsbixvKXt0aGlzLmNvb3JkaW5hdG9yPWUsdGhpcy5zY2VuZT1uZXcgRm10LHRoaXMuYmFja2dyb3VuZENvbG9yPSIjZmZmIixDcnQoKSYmdCBpbnN0YW5jZW9mIE9mZnNjcmVlbkNhbnZhcyYmKHQuc3R5bGU9dC5zdHlsZXx8e30pLG8mJnQuYWRkRXZlbnRMaXN0ZW5lcigid2ViZ2xjb250ZXh0bG9zdCIsbyksdGhpcy5yZW5kZXJlcj1uZXcgSG10KHtjYW52YXM6dCxjb250ZXh0OnQuZ2V0Q29udGV4dCgid2ViZ2wyIix7YW50aWFsaWFzOiEwLHByZWNpc2lvbjoiaGlnaHAiLGFscGhhOiEwfSl9KSx0aGlzLnJlbmRlcmVyLnNldFBpeGVsUmF0aW8obil9b25SZXNpemUodCl7dGhpcy5yZW5kZXJlci5zZXRTaXplKHQud2lkdGgsdC5oZWlnaHQpfWRlc3Ryb3lPYmplY3QodCl7Y29uc3QgZT10Lm9iajNkO2lmKHRoaXMuc2NlbmUucmVtb3ZlKGUpLGUgaW5zdGFuY2VvZiBTY3Qpe2UuZ2VvbWV0cnkuZGlzcG9zZSgpO2NvbnN0IHQ9QXJyYXkuaXNBcnJheShlLm1hdGVyaWFsKT9lLm1hdGVyaWFsOltlLm1hdGVyaWFsXTtmb3IoY29uc3QgZSBvZiB0KWUuZGlzcG9zZSgpfX1zZXRVc2VEYXJrTW9kZSh0KXt0aGlzLmJhY2tncm91bmRDb2xvcj10PyIjMzAzMDMwIjoiI2ZmZiJ9Y3JlYXRlT3JVcGRhdGVMaW5lT2JqZWN0KHQsZSxuKXt2YXIgbztpZighdCYmIW4udmlzaWJsZSlyZXR1cm4gbnVsbDtjb25zdHt2aXNpYmxlOmksd2lkdGg6YX09bjtpZighdCl7Y29uc3QgdD1UZ3QodGhpcy5iYWNrZ3JvdW5kQ29sb3Isbi5jb2xvcixudWxsIT09KG89bi5vcGFjaXR5KSYmdm9pZCAwIT09bz9vOjEpLHI9bmV3IGRjdCxzPW5ldyBmZnQoe2NvbG9yOnR9KSxsPW5ldyBTY3QocixzKTtyZXR1cm4gcy52aXNpYmxlPWksSGd0KHIsZSxhKSx0aGlzLnNjZW5lLmFkZChsKSx7dHlwZTpOZ3QuTElORSxkYXRhOmUsb2JqM2Q6bCx3aWR0aDphfX1jb25zdHtkYXRhOnIsb2JqM2Q6cyx3aWR0aDpsfT10O3JldHVybiBGZ3QodGhpcy5iYWNrZ3JvdW5kQ29sb3IscywodD0+KGE9PT1sJiZyJiZNcnQocixlKXx8SGd0KHQsZSxhKSx0KSksbik/e3R5cGU6Tmd0LkxJTkUsZGF0YTplLG9iajNkOnMsd2lkdGg6YX06dH1jcmVhdGVNZXNoKHQsZSl7aWYoIWUudmlzaWJsZSlyZXR1cm4gbnVsbDtjb25zdHt2aXNpYmxlOm4sY29sb3I6byxvcGFjaXR5Oml9PWUsYT1UZ3QodGhpcy5iYWNrZ3JvdW5kQ29sb3IsbyxudWxsIT1pP2k6MSkscj1uZXcgWGx0KHtjb2xvcjphLHZpc2libGU6bn0pO3JldHVybiBuZXcgU2N0KHQscil9Y3JlYXRlT3JVcGRhdGVUcmlhbmdsZU9iamVjdCh0LGUsbil7Y29uc3R7c2l6ZTpvfT1uLGk9bypNYXRoLnNxcnQoMykvMixhPW5ldyBGbG9hdDMyQXJyYXkoW2UueC1vLzIsZS55LWkvMyxlLngrby8yLGUueS1pLzMsZS54LGUueSsyKmkvM10pO2lmKCF0KXtjb25zdCB0PW5ldyBkY3Q7SWd0KHQsYSk7Y29uc3Qgbz10aGlzLmNyZWF0ZU1lc2godCxuKTtyZXR1cm4gbnVsbD09PW8/bnVsbDoodGhpcy5zY2VuZS5hZGQobykse3R5cGU6Tmd0LlRSSUFOR0xFLGRhdGE6ZSxvYmozZDpvfSl9cmV0dXJuIEZndCh0aGlzLmJhY2tncm91bmRDb2xvcix0Lm9iajNkLCh0PT4oSWd0KHQsYSksdCkpLG4pP3t0eXBlOk5ndC5UUklBTkdMRSxkYXRhOmUsb2JqM2Q6dC5vYmozZH06dH1jcmVhdGVPclVwZGF0ZUNpcmNsZU9iamVjdCh0LGUsbil7Y29uc3R7cmFkaXVzOm99PW4saT1uZXcgRGZ0KG4ucmFkaXVzKTtpZighdCl7Y29uc3QgdD10aGlzLmNyZWF0ZU1lc2goaSxuKTtyZXR1cm4gbnVsbD09PXQ/bnVsbDoodC5wb3NpdGlvbi5zZXQoZS54LGUueSwwKSx0aGlzLnNjZW5lLmFkZCh0KSx7dHlwZTpOZ3QuQ0lSQ0xFLGRhdGE6e2xvYzplLHJhZGl1czpvfSxvYmozZDp0fSl9cmV0dXJuIEZndCh0aGlzLmJhY2tncm91bmRDb2xvcix0Lm9iajNkLCgoKT0+aSksbik/KHQub2JqM2QucG9zaXRpb24uc2V0KGUueCxlLnksMCkse3R5cGU6Tmd0LkNJUkNMRSxkYXRhOntsb2M6ZSxyYWRpdXM6b30sb2JqM2Q6dC5vYmozZH0pOnR9Y3JlYXRlT3JVcGRhdGVUcmFwZXpvaWRPYmplY3QodCxlLG4sbyl7aWYoZS55IT09bi55KXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnB1dCBlcnJvcjogc3RhcnQueSAhPSBlbmQueS4iKTtjb25zdHthbHRpdHVkZTppfT1vLGE9Mi9NYXRoLnNxcnQoMykqaSxyPW5ldyBRdXQoW25ldyBnc3QoZS54LWEvMixlLnktaS8yKSxuZXcgZ3N0KGUueCxlLnkraS8yKSxuZXcgZ3N0KG4ueCxuLnkraS8yKSxuZXcgZ3N0KG4ueCthLzIsbi55LWkvMildKTtyLmF1dG9DbG9zZT0hMDtjb25zdCBzPW5ldyBQdXQocik7aWYoIXQpe2NvbnN0IHQ9dGhpcy5jcmVhdGVNZXNoKHMsbyk7cmV0dXJuIG51bGw9PT10P251bGw6KHRoaXMuc2NlbmUuYWRkKHQpLHt0eXBlOk5ndC5UUkFQRVpPSUQsZGF0YTpbZSxuXSxvYmozZDp0fSl9cmV0dXJuIEZndCh0aGlzLmJhY2tncm91bmRDb2xvcix0Lm9iajNkLCgoKT0+cyksbyk/e3R5cGU6Tmd0LlRSQVBFWk9JRCxkYXRhOltlLG5dLG9iajNkOnQub2JqM2R9OnR9Zmx1c2goKXt0aGlzLnJlbmRlcmVyLnJlbmRlcih0aGlzLnNjZW5lLHRoaXMuY29vcmRpbmF0b3IuZ2V0Q2FtZXJhKCkpfWRpc3Bvc2UoKXt0aGlzLnJlbmRlcmVyLmRpc3Bvc2UoKX19Y2xhc3MgQmd0e2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5yZW5kZXJDYWNoZT10LHRoaXMucmVuZGVyZXI9ZX1zZXRMaW5lKHQsZSxuKXtjb25zdCBvPXRoaXMucmVuZGVyZXIuY3JlYXRlT3JVcGRhdGVMaW5lT2JqZWN0KHRoaXMucmVuZGVyQ2FjaGUuZ2V0RnJvbVByZXZpb3VzRnJhbWUodCksZSxuKTtvJiZ0aGlzLnJlbmRlckNhY2hlLnNldFRvQ3VycmVudEZyYW1lKHQsbyl9c2V0VHJpYW5nbGUodCxlLG4pe2NvbnN0IG89dGhpcy5yZW5kZXJlci5jcmVhdGVPclVwZGF0ZVRyaWFuZ2xlT2JqZWN0KHRoaXMucmVuZGVyQ2FjaGUuZ2V0RnJvbVByZXZpb3VzRnJhbWUodCksZSxuKTtvJiZ0aGlzLnJlbmRlckNhY2hlLnNldFRvQ3VycmVudEZyYW1lKHQsbyl9c2V0Q2lyY2xlKHQsZSxuKXtjb25zdCBvPXRoaXMucmVuZGVyZXIuY3JlYXRlT3JVcGRhdGVDaXJjbGVPYmplY3QodGhpcy5yZW5kZXJDYWNoZS5nZXRGcm9tUHJldmlvdXNGcmFtZSh0KSxlLG4pO28mJnRoaXMucmVuZGVyQ2FjaGUuc2V0VG9DdXJyZW50RnJhbWUodCxvKX1zZXRUcmFwZXpvaWQodCxlLG4sbyl7Y29uc3QgaT10aGlzLnJlbmRlcmVyLmNyZWF0ZU9yVXBkYXRlVHJhcGV6b2lkT2JqZWN0KHRoaXMucmVuZGVyQ2FjaGUuZ2V0RnJvbVByZXZpb3VzRnJhbWUodCksZSxuLG8pO2kmJnRoaXMucmVuZGVyQ2FjaGUuc2V0VG9DdXJyZW50RnJhbWUodCxpKX19Y2xhc3MgVmd0e2NvbnN0cnVjdG9yKCl7dGhpcy5wcmV2RnJhbWVDYWNoZT1uZXcgTWFwLHRoaXMuY3VyckZyYW1lQ2FjaGU9bmV3IE1hcH1nZXRGcm9tUHJldmlvdXNGcmFtZSh0KXtjb25zdCBlPXRoaXMucHJldkZyYW1lQ2FjaGUuZ2V0KHQpO3JldHVybiBudWxsIT1lP2U6bnVsbH1zZXRUb0N1cnJlbnRGcmFtZSh0LGUpe3RoaXMuY3VyckZyYW1lQ2FjaGUuc2V0KHQsZSl9ZmluYWxpemVGcmFtZUFuZEdldFJlbW92ZWQoKXtjb25zdCB0PVtdO2Zvcihjb25zdFtlLG5db2YgdGhpcy5wcmV2RnJhbWVDYWNoZS5lbnRyaWVzKCkpdGhpcy5jdXJyRnJhbWVDYWNoZS5oYXMoZSl8fHQucHVzaChuKTtyZXR1cm4gdGhpcy5wcmV2RnJhbWVDYWNoZT10aGlzLmN1cnJGcmFtZUNhY2hlLHRoaXMuY3VyckZyYW1lQ2FjaGU9bmV3IE1hcCx0fX0hKGZ1bmN0aW9uKHQpe3RbdC5OVU1CRVI9MF09Ik5VTUJFUiIsdFt0Lk5BTj0xXT0iTkFOIn0pKHpndHx8KHpndD17fSkpO2NsYXNzIGpndCBleHRlbmRzIGNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMucmF3U2VyaWVzRGF0YT1bXSx0aGlzLnNlcmllcz1bXSx0aGlzLnBhaW50RGlydHk9ITAsdGhpcy5yZW5kZXJDYWNoZT1uZXcgVmd0LHRoaXMuY29vcmRpbmF0ZUlkZW50aWZpZXI9bnVsbCx0aGlzLmxheW91dD17eDowLHdpZHRoOjEseTowLGhlaWdodDoxfSx0aGlzLmdldE1ldGFkYXRhTWFwSW1wbD10LmdldE1ldGFkYXRhTWFwLHRoaXMuY29vcmRpbmF0b3I9dC5jb29yZGluYXRvcix0aGlzLnJlbmRlcmVyPXQucmVuZGVyZXIsdGhpcy5wYWludEJydXNoPW5ldyBCZ3QodGhpcy5yZW5kZXJDYWNoZSx0aGlzLnJlbmRlcmVyKX1zZXRMYXlvdXRSZWN0KHQpe3RoaXMubGF5b3V0Lng9PT10LngmJnRoaXMubGF5b3V0LndpZHRoPT09dC53aWR0aCYmdGhpcy5sYXlvdXQueT09PXQueSYmdGhpcy5sYXlvdXQuaGVpZ2h0PT09dC5oZWlnaHR8fCh0aGlzLnBhaW50RGlydHk9ITApLHRoaXMubGF5b3V0PXR9Z2V0TGF5b3V0UmVjdCgpe3JldHVybiB0aGlzLmxheW91dH1nZXRNZXRhZGF0YU1hcCgpe3JldHVybiB0aGlzLmdldE1ldGFkYXRhTWFwSW1wbCgpfW1hcmtBc1BhaW50RGlydHkoKXt0aGlzLnBhaW50RGlydHk9ITB9cmVuZGVyKCl7aWYodGhpcy50cmFuc2Zvcm1Db29yZGluYXRlc0lmU3RhbGUoKSx0aGlzLnBhaW50RGlydHkpe3RoaXMucmVkcmF3KCk7Zm9yKGNvbnN0IHQgb2YgdGhpcy5yZW5kZXJDYWNoZS5maW5hbGl6ZUZyYW1lQW5kR2V0UmVtb3ZlZCgpKXRoaXMucmVuZGVyZXIuZGVzdHJveU9iamVjdCh0KTt0aGlzLnBhaW50RGlydHk9ITF9fWlzQ29vcmRpbmF0ZVVwZGF0ZWQoKXtyZXR1cm4gdGhpcy5jb29yZGluYXRvci5nZXRVcGRhdGVJZGVudGlmaWVyKCkhPT10aGlzLmNvb3JkaW5hdGVJZGVudGlmaWVyfWNsZWFyQ29vcmRpbmF0ZUlkZW50aWZpZXIoKXt0aGlzLmNvb3JkaW5hdGVJZGVudGlmaWVyPW51bGx9c2V0RGF0YSh0KXt0aGlzLmNsZWFyQ29vcmRpbmF0ZUlkZW50aWZpZXIoKSx0aGlzLnJhd1Nlcmllc0RhdGE9dH10cmFuc2Zvcm1Db29yZGluYXRlc0lmU3RhbGUoKXtpZighdGhpcy5pc0Nvb3JkaW5hdGVVcGRhdGVkKCkpcmV0dXJuO2NvbnN0IHQ9dGhpcy5nZXRMYXlvdXRSZWN0KCk7dGhpcy5zZXJpZXM9bmV3IEFycmF5KHRoaXMucmF3U2VyaWVzRGF0YS5sZW5ndGgpO2ZvcihsZXQgZT0wO2U8dGhpcy5yYXdTZXJpZXNEYXRhLmxlbmd0aDtlKyspe2NvbnN0IG49dGhpcy5yYXdTZXJpZXNEYXRhW2VdO3RoaXMuc2VyaWVzW2VdPXtpZDpuLmlkLHBvbHlsaW5lOm5ldyBGbG9hdDMyQXJyYXkoMipuLnBvaW50cy5sZW5ndGgpfTtmb3IobGV0IG89MDtvPG4ucG9pbnRzLmxlbmd0aDtvKyspe2NvbnN0W2ksYV09dGhpcy5jb29yZGluYXRvci50cmFuc2Zvcm1EYXRhVG9VaUNvb3JkKHQsW24ucG9pbnRzW29dLngsbi5wb2ludHNbb10ueV0pO3RoaXMuc2VyaWVzW2VdLnBvbHlsaW5lWzIqb109aSx0aGlzLnNlcmllc1tlXS5wb2x5bGluZVsyKm8rMV09YX19dGhpcy5jb29yZGluYXRlSWRlbnRpZmllcj10aGlzLmNvb3JkaW5hdG9yLmdldFVwZGF0ZUlkZW50aWZpZXIoKSx0aGlzLm1hcmtBc1BhaW50RGlydHkoKX19e3JlY29yZFBhcnRpdGlvbih0LGUsbil7cmV0dXJuIHQ/e3R5cGU6emd0Lk5VTUJFUixwb2x5bGluZTplfTp7dHlwZTp6Z3QuTkFOLHBvbHlsaW5lOmUubWFwKCgodCxlKT0+aXNOYU4odCk/ZSUyPT0wP24ueDpuLnk6dCkpfX1wYXJ0aXRpb25Qb2x5bGluZSh0KXtjb25zdCBlPVtdO2xldCBuPTAsbz0hMTtjb25zdCBpPXRoaXMuY29vcmRpbmF0b3IudHJhbnNmb3JtRGF0YVRvVWlDb29yZCh0aGlzLmdldExheW91dFJlY3QoKSxbMCwwXSksYT17eDppWzBdLHk6aVsxXX07bGV0IHI9bnVsbDtmb3IobGV0IGk9MDtpPHQubGVuZ3RoO2krPTIpe2NvbnN0IGE9dFtpXSxzPXRbaSsxXSxsPWlzTmFOKGEpfHxpc05hTihzKTtsIT09byYmbiE9PWkmJihlLnB1c2godGhpcy5yZWNvcmRQYXJ0aXRpb24oIW8sdC5zbGljZShuLGkpLG51bGw9PT1yP3t4OmEseTpzfTpyKSksbj1pKSxsfHwocj17eDphLHk6c30pLG89bH1yZXR1cm4gbiE9PXQubGVuZ3RoLTEmJmUucHVzaCh0aGlzLnJlY29yZFBhcnRpdGlvbighbyx0LnNsaWNlKG4sdC5sZW5ndGgpLG51bGwhPXI/cjphKSksZX1yZWRyYXcoKXt2YXIgdCxlLG47Zm9yKGNvbnN0IG8gb2YgdGhpcy5zZXJpZXMpe2NvbnN0IGk9dGhpcy5nZXRNZXRhZGF0YU1hcCgpW28uaWRdO2lmKCFpKWNvbnRpbnVlO2lmKG8ucG9seWxpbmUubGVuZ3RoJTIhPTApdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgaGF2ZSBvZGQgbGVuZ3RoLWVkIHBvbHlsaW5lOiAke28ucG9seWxpbmUubGVuZ3RofWApO2NvbnN0IGE9dGhpcy5wYXJ0aXRpb25Qb2x5bGluZShvLnBvbHlsaW5lKTtmb3IoY29uc3Rbcix7dHlwZTpzLHBvbHlsaW5lOmx9XW9mIGEuZW50cmllcygpKWlmKHM9PT16Z3QuTlVNQkVSKTI9PT1sLmxlbmd0aD90aGlzLnBhaW50QnJ1c2guc2V0Q2lyY2xlKEpTT04uc3RyaW5naWZ5KFsiY2lyY2xlIixvLmlkLHJdKSx7eDpsWzBdLHk6bFsxXX0se2NvbG9yOmkuY29sb3IsdmlzaWJsZTppLnZpc2libGUsb3BhY2l0eTpudWxsIT09KHQ9aS5vcGFjaXR5KSYmdm9pZCAwIT09dD90OjEscmFkaXVzOjR9KTp0aGlzLnBhaW50QnJ1c2guc2V0TGluZShKU09OLnN0cmluZ2lmeShbImxpbmUiLG8uaWQscl0pLGwse2NvbG9yOmkuY29sb3IsdmlzaWJsZTppLnZpc2libGUsb3BhY2l0eTpudWxsIT09KGU9aS5vcGFjaXR5KSYmdm9pZCAwIT09ZT9lOjEsd2lkdGg6Mn0pO2Vsc2UgaWYoIWkuYXV4KWZvcihsZXQgdD0wO3Q8bC5sZW5ndGg7dCs9Mil0aGlzLnBhaW50QnJ1c2guc2V0VHJpYW5nbGUoSlNPTi5zdHJpbmdpZnkoWyJOYU4iLG8uaWQsbFt0XSxsW3QrMV1dKSx7eDpsW3RdLHk6bFt0KzFdfSx7Y29sb3I6aS5jb2xvcix2aXNpYmxlOmkudmlzaWJsZSxvcGFjaXR5Om51bGwhPT0obj1pLm9wYWNpdHkpJiZ2b2lkIDAhPT1uP246MSxzaXplOjEyfSl9fX1jbGFzcyBVZ3QgZXh0ZW5kcyB2cnR7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuY2FtZXJhPW5ldyByZHQoMCwxZTMsMWUzLDAsMCwxMDApfWlzWUF4aXNQb2ludGVkRG93bigpe3JldHVybiExfXNldERvbUNvbnRhaW5lclJlY3QodCl7c3VwZXIuc2V0RG9tQ29udGFpbmVyUmVjdCh0KSx0aGlzLmNhbWVyYS5sZWZ0PXQueCx0aGlzLmNhbWVyYS5yaWdodD10LngrdC53aWR0aCx0aGlzLmNhbWVyYS50b3A9dC55K3QuaGVpZ2h0LHRoaXMuY2FtZXJhLmJvdHRvbT10LnksdGhpcy5jYW1lcmEudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpfWdldENhbWVyYSgpe3JldHVybiB0aGlzLmNhbWVyYX19Y29uc3QgV2d0PXQ9PnNlbGYucmVxdWVzdEFuaW1hdGlvbkZyYW1lKHQpO2NsYXNzIEdndHtjb25zdHJ1Y3Rvcih0KXtzd2l0Y2godGhpcy5tZXRhZGF0YU1hcD17fSx0aGlzLnNob3VsZFJlcGFpbnQ9ITEsdGhpcy5jYWxsYmFja3M9dC5jYWxsYmFja3MsdC50eXBlKXtjYXNlIGU2LlNWRzp0aGlzLmNvb3JkaW5hdG9yPW5ldyB2cnQsdGhpcy5yZW5kZXJlcj1uZXcgT3J0KHQuY29udGFpbmVyKTticmVhaztjYXNlIGU2LldFQkdMOntjb25zdCBlPW5ldyBVZ3Q7dGhpcy5jb29yZGluYXRvcj1lLHRoaXMucmVuZGVyZXI9bmV3IExndCh0LmNvbnRhaW5lcixlLHQuZGV2aWNlUGl4ZWxSYXRpbyx0LmNhbGxiYWNrcy5vbkNvbnRleHRMb3N0KTticmVha319dGhpcy5yZW5kZXJlci5zZXRVc2VEYXJrTW9kZSh0LnVzZURhcmtNb2RlKSx0aGlzLnNlcmllc0xpbmVWaWV3PW5ldyBqZ3Qoe3JlbmRlcmVyOnRoaXMucmVuZGVyZXIsY29vcmRpbmF0b3I6dGhpcy5jb29yZGluYXRvcixnZXRNZXRhZGF0YU1hcDooKT0+dGhpcy5tZXRhZGF0YU1hcH0pLHRoaXMucmVzaXplKHQuZG9tRGltZW5zaW9uKX1kaXNwb3NlKCl7fXNldFhTY2FsZVR5cGUodCl7dGhpcy5jb29yZGluYXRvci5zZXRYU2NhbGUoZ3J0KHQpKSx0aGlzLnNjaGVkdWxlUmVwYWludCgpfXNldFlTY2FsZVR5cGUodCl7dGhpcy5jb29yZGluYXRvci5zZXRZU2NhbGUoZ3J0KHQpKSx0aGlzLnNjaGVkdWxlUmVwYWludCgpfXJlc2l6ZSh0KXt0aGlzLmNvb3JkaW5hdG9yLnNldERvbUNvbnRhaW5lclJlY3QoT2JqZWN0LmFzc2lnbih7eDowLHk6MH0sdCkpLHRoaXMucmVuZGVyZXIub25SZXNpemUoT2JqZWN0LmFzc2lnbih7eDowLHk6MH0sdCkpLHRoaXMuc2VyaWVzTGluZVZpZXcuc2V0TGF5b3V0UmVjdChPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3g6MCx5OjB9KSksdGhpcy5zY2hlZHVsZVJlcGFpbnQoKX1zZXRNZXRhZGF0YSh0KXtsZXQgZT0hMTtPYmplY3QuZW50cmllcyh0KS5mb3JFYWNoKCgoW3Qsbl0pPT57Y29uc3Qgbz10aGlzLm1ldGFkYXRhTWFwW3RdO28mJm4uY29sb3I9PT1vLmNvbG9yJiZuLnZpc2libGU9PT1vLnZpc2libGUmJm4ub3BhY2l0eT09PW8ub3BhY2l0eXx8KGU9ITApLHRoaXMubWV0YWRhdGFNYXBbdF09bn0pKSxlJiZ0aGlzLnNlcmllc0xpbmVWaWV3Lm1hcmtBc1BhaW50RGlydHkoKSx0aGlzLnNjaGVkdWxlUmVwYWludCgpfXNldFZpZXdCb3godCl7dGhpcy5jb29yZGluYXRvci5zZXRWaWV3Qm94UmVjdCh7eDp0LnhbMF0sd2lkdGg6dC54WzFdLXQueFswXSx5OnQueVswXSxoZWlnaHQ6dC55WzFdLXQueVswXX0pLHRoaXMuc2NoZWR1bGVSZXBhaW50KCl9c2V0RGF0YSh0KXt0aGlzLnNlcmllc0xpbmVWaWV3LnNldERhdGEodCksdGhpcy5zY2hlZHVsZVJlcGFpbnQoKX1zZXRVc2VEYXJrTW9kZSh0KXt0aGlzLnJlbmRlcmVyLnNldFVzZURhcmtNb2RlKHQpLHRoaXMuc2VyaWVzTGluZVZpZXcubWFya0FzUGFpbnREaXJ0eSgpLHRoaXMuc2NoZWR1bGVSZXBhaW50KCl9c2NoZWR1bGVSZXBhaW50KCl7dGhpcy5zaG91bGRSZXBhaW50fHwodGhpcy5zaG91bGRSZXBhaW50PSEwLFdndCgoKCk9Pnt0aGlzLnJlcGFpbnQoKSx0aGlzLnNob3VsZFJlcGFpbnQ9ITF9KSkpfXJlcGFpbnQoKXt0aGlzLnNlcmllc0xpbmVWaWV3LnJlbmRlcigpLHRoaXMucmVuZGVyZXIuZmx1c2goKSx0aGlzLmNhbGxiYWNrcy5vbkRyYXdFbmQoKX19dmFyIFlndCxxZ3Q7ZnVuY3Rpb24gWmd0KHQpe2lmKHQuaW5jbHVkZXMoIi8iKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiV29ya2VyIGZhY3Rvcnkgb25seSBhbGxvd3MgZmlsZSBuYW1lIGFuZCBubyByZXNvdXJjZSBwYXRoLiIpO3JldHVybiBuZXcgV29ya2VyKHQpfSEoZnVuY3Rpb24odCl7dFt0LlNFUklFU19EQVRBX1VQREFURUQ9MF09IlNFUklFU19EQVRBX1VQREFURUQiLHRbdC5TRVJJRVNfTUVUQURBVEFfQ0hBTkdFRD0xXT0iU0VSSUVTX01FVEFEQVRBX0NIQU5HRUQiLHRbdC5TQ0FMRV9VUERBVEVEPTJdPSJTQ0FMRV9VUERBVEVEIix0W3QuVklFV19CT1hfVVBEQVRFRD0zXT0iVklFV19CT1hfVVBEQVRFRCIsdFt0LklOSVQ9NF09IklOSVQiLHRbdC5ET01fUkVTSVpFRD01XT0iRE9NX1JFU0laRUQiLHRbdC5EQVJLX01PREVfVVBEQVRFRD02XT0iREFSS19NT0RFX1VQREFURUQiLHRbdC5ESVNQT1NFRD03XT0iRElTUE9TRUQifSkoWWd0fHwoWWd0PXt9KSksKGZ1bmN0aW9uKHQpe3RbdC5PTl9SRURSQVdfRU5EPTBdPSJPTl9SRURSQVdfRU5EIix0W3QuT05fQ09OVEVYVF9MT1NUPTFdPSJPTl9DT05URVhUX0xPU1QifSkocWd0fHwocWd0PXt9KSk7Y2xhc3MgWGd0e2NvbnN0cnVjdG9yKHQpe2lmKHRoaXMuY2FsbGJhY2tzPXQuY2FsbGJhY2tzLHQudHlwZSE9PWU2LldFQkdMKXRocm93IG5ldyBSYW5nZUVycm9yKGBDYW5ub3QgdXNlIG5vbiBXRUJHTCByZW5kZXJlciBmb3IgdGhlIG9mZnNjcmVlbiBsaW5lIGNoYXJ0LiBSZWNlaXZlZCAke2U2W3QudHlwZV19IGApO2NvbnN0IGU9bmV3IE1lc3NhZ2VDaGFubmVsO2UucG9ydDEub25tZXNzYWdlPXQ9Pnt0aGlzLm9uTWVzc2FnZUZyb21Xb3JrZXIodC5kYXRhKX0sdGhpcy50eE1lc3NhZ2VQb3J0PWUucG9ydDE7Y29uc3Qgbj10LmNvbnRhaW5lci50cmFuc2ZlckNvbnRyb2xUb09mZnNjcmVlbigpO3RoaXMud29ya2VySW5zdGFuY2U9WGd0LndvcmtlclBvb2wuZ2V0TmV4dCgpO2NvbnN0IG89e3R5cGU6WWd0LklOSVQsY2FudmFzOm4sZGV2aWNlUGl4ZWxSYXRpbzp3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyxkaW06dC5kb21EaW1lbnNpb24scmVuZGVyZXJUeXBlOnQudHlwZSx1c2VEYXJrTW9kZTp0LnVzZURhcmtNb2RlfTt0aGlzLndvcmtlckluc3RhbmNlLnBvc3RNZXNzYWdlKG8sW24sZS5wb3J0Ml0pfWRpc3Bvc2UoKXt0aGlzLnNlbmRNZXNzYWdlKHt0eXBlOllndC5ESVNQT1NFRH0pLHRoaXMud29ya2VySW5zdGFuY2UuZnJlZSgpLHRoaXMudHhNZXNzYWdlUG9ydC5jbG9zZSgpfXNldFhTY2FsZVR5cGUodCl7dGhpcy5zZW5kTWVzc2FnZSh7dHlwZTpZZ3QuU0NBTEVfVVBEQVRFRCxheGlzOiJ4IixzY2FsZVR5cGU6dH0pfXNldFlTY2FsZVR5cGUodCl7dGhpcy5zZW5kTWVzc2FnZSh7dHlwZTpZZ3QuU0NBTEVfVVBEQVRFRCxheGlzOiJ5IixzY2FsZVR5cGU6dH0pfXJlc2l6ZSh0KXt0aGlzLnNlbmRNZXNzYWdlKHt0eXBlOllndC5ET01fUkVTSVpFRCxkaW06dH0pfXNldE1ldGFkYXRhKHQpe3RoaXMuc2VuZE1lc3NhZ2Uoe3R5cGU6WWd0LlNFUklFU19NRVRBREFUQV9DSEFOR0VELG1ldGFkYXRhOnR9KX1zZXRWaWV3Qm94KHQpe3RoaXMuc2VuZE1lc3NhZ2Uoe3R5cGU6WWd0LlZJRVdfQk9YX1VQREFURUQsZXh0ZW50OnR9KX1zZXREYXRhKHQpe2NvbnN0IGU9KGZ1bmN0aW9uIG4odCl7Y29uc3QgZT10LnJlZHVjZSgoKHQsZSk9PnQrZS5wb2ludHMubGVuZ3RoKSwwKTtsZXQgbj0wO2NvbnN0IG89bmV3IEZsb2F0NjRBcnJheSgyKmUpLGk9W107Zm9yKGNvbnN0IGUgb2YgdCl7aS5wdXNoKHtpZDplLmlkLGxlbmd0aDplLnBvaW50cy5sZW5ndGh9KTtmb3IobGV0IHQ9MDt0PGUucG9pbnRzLmxlbmd0aDt0Kyspb1tuKytdPWUucG9pbnRzW3RdLngsb1tuKytdPWUucG9pbnRzW3RdLnl9cmV0dXJue2lkc0FuZExlbmd0aHM6aSxmbGF0dGVuZWRTZXJpZXM6by5idWZmZXJ9fSkodCk7dGhpcy5zZW5kTWVzc2FnZSh7dHlwZTpZZ3QuU0VSSUVTX0RBVEFfVVBEQVRFRCxjb21wYWN0RGF0YVNlcmllczplfSxbZS5mbGF0dGVuZWRTZXJpZXNdKX1zZXRVc2VEYXJrTW9kZSh0KXt0aGlzLnNlbmRNZXNzYWdlKHt0eXBlOllndC5EQVJLX01PREVfVVBEQVRFRCx1c2VEYXJrTW9kZTp0fSl9c2VuZE1lc3NhZ2UodCxlKXtlP3RoaXMudHhNZXNzYWdlUG9ydC5wb3N0TWVzc2FnZSh0LGUpOnRoaXMudHhNZXNzYWdlUG9ydC5wb3N0TWVzc2FnZSh0KX1vbk1lc3NhZ2VGcm9tV29ya2VyKHQpe3N3aXRjaCh0LnR5cGUpe2Nhc2UgcWd0Lk9OX1JFRFJBV19FTkQ6dGhpcy5jYWxsYmFja3Mub25EcmF3RW5kKCk7YnJlYWs7Y2FzZSBxZ3QuT05fQ09OVEVYVF9MT1NUOnRoaXMuY2FsbGJhY2tzLm9uQ29udGV4dExvc3QoKX19fWZ1bmN0aW9uIEtndCh0KXtzd2l0Y2godCl7Y2FzZSBlNi5TVkc6cmV0dXJuIGU2LlNWRztjYXNlIGU2LldFQkdMOnJldHVybihmdW5jdGlvbiBlKCl7cmV0dXJuIF9ydH0pKCk/ZTYuV0VCR0w6ZTYuU1ZHO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGBVbmtub3duIHJlbmRlcmVyVHlwZTogJHt0fWApfX1mdW5jdGlvbiBKZ3QodCxlKXtyZXR1cm4ieCI9PT1lP1swLHQud2lkdGhdOlt0LmhlaWdodCwwXX1mdW5jdGlvbiBRZ3QodCxlKXtjb25zdCBuPU1hdGguZmxvb3IodC81MCk7cmV0dXJuIE1hdGgubWluKG4sZSl9ZnVuY3Rpb24gJGd0KHQsZSl7aWYoMSZ0JiYob2EoKSx2ZigwLCJsaW5lIiwyKSksMiZ0KXtjb25zdCB0PWUuJGltcGxpY2l0LG49emYoKTtjdSgiemVybyIsMD09PXQpLHltKCJ4MSIsbi5nZXREb21YKHQpKSgieDIiLG4uZ2V0RG9tWCh0KSkoInkyIixuLmRvbURpbS5oZWlnaHQpfX1mdW5jdGlvbiB0aHQodCxlKXtpZigxJnQmJihvYSgpLHZmKDAsImxpbmUiLDMpKSwyJnQpe2NvbnN0IHQ9ZS4kaW1wbGljaXQsbj16ZigpO2N1KCJ6ZXJvIiwwPT09dCkseW0oInkxIixuLmdldERvbVkodCkpKCJ4MiIsbi5kb21EaW0ud2lkdGgpKCJ5MiIsbi5nZXREb21ZKHQpKX19WGd0LndvcmtlclBvb2w9bmV3IGNsYXNze2NvbnN0cnVjdG9yKHQsZT0xMCxuPVpndCl7dGhpcy53b3JrZXJSZXNvdXJjZVBhdGg9dCx0aGlzLm1heFBvb2xTaXplPWUsdGhpcy53b3JrZXJGYWN0b3J5PW4sdGhpcy53b3JrZXJzPVtdfWdldE5leHQoKXtsZXQgdDtpZih0aGlzLndvcmtlcnMuZXZlcnkoKCh7YWN0aXZlQ291bnQ6dH0pPT50PjApKSYmdGhpcy53b3JrZXJzLmxlbmd0aDx0aGlzLm1heFBvb2xTaXplKXtjb25zdCBlPXRoaXMud29ya2VyRmFjdG9yeSh0aGlzLndvcmtlclJlc291cmNlUGF0aCk7dD17YWN0aXZlQ291bnQ6MCxwb3N0TWVzc2FnZToodCxuKT0+e2UucG9zdE1lc3NhZ2UodCxuKX0sZnJlZTooKT0+e3QuYWN0aXZlQ291bnQ9TWF0aC5tYXgodC5hY3RpdmVDb3VudC0xLDApfX0sdGhpcy53b3JrZXJzLnB1c2godCl9ZWxzZXtjb25zdCBlPXRoaXMud29ya2Vycy5tYXAoKCh7YWN0aXZlQ291bnQ6dH0pPT50KSksbj1lLmluZGV4T2YoTWF0aC5taW4oLi4uZSkpO3Q9dGhpcy53b3JrZXJzW25dfXJldHVybiB0LmFjdGl2ZUNvdW50KyssdH19KCJjaGFydF93b3JrZXIuanM/X2ZpbGVfaGFzaD01YTE3YmUwYSIpO2NsYXNzIGVodHtnZXREb21YKHQpe3JldHVybiB0aGlzLnhTY2FsZS5mb3J3YXJkKHRoaXMudmlld0V4dGVudC54LEpndCh0aGlzLmRvbURpbSwieCIpLHQpfWdldERvbVkodCl7cmV0dXJuIHRoaXMueVNjYWxlLmZvcndhcmQodGhpcy52aWV3RXh0ZW50LnksSmd0KHRoaXMuZG9tRGltLCJ5IiksdCl9Z2V0WFRpY2tzKCl7cmV0dXJuIHRoaXMueFNjYWxlLnRpY2tzKHRoaXMudmlld0V4dGVudC54LFFndCh0aGlzLmRvbURpbS53aWR0aCx0aGlzLnhHcmlkQ291bnQpKX1nZXRZVGlja3MoKXtyZXR1cm4gdGhpcy55U2NhbGUudGlja3ModGhpcy52aWV3RXh0ZW50LnksUWd0KHRoaXMuZG9tRGltLmhlaWdodCx0aGlzLnlHcmlkQ291bnQpKX19ZnVuY3Rpb24gbmh0KHQsZSxuLG8saSxhKXtsZXQgcjtzd2l0Y2godC5kZWx0YU1vZGUpe2Nhc2UgV2hlZWxFdmVudC5ET01fREVMVEFfUElYRUw6cj0xO2JyZWFrO2Nhc2UgV2hlZWxFdmVudC5ET01fREVMVEFfTElORTpyPTg7YnJlYWs7Y2FzZSBXaGVlbEV2ZW50LkRPTV9ERUxUQV9QQUdFOnI9MjA7YnJlYWs7ZGVmYXVsdDpyPTEsY29uc29sZS53YXJuKGBVbmtub3duIFdoZWVsRXZlbnQgZGVsdGFNb2RlOiAke3QuZGVsdGFNb2RlfS5gKX1jb25zdCBzPXQuZGVsdGFZKnIsbD1zPDA/TWF0aC5tYXgocypvLC0uOTUpOnMqbyx7d2lkdGg6YyxoZWlnaHQ6ZH09bixwPVtpLnJldmVyc2UoZS54LFswLGNdLC10Lm9mZnNldFgqbCksaS5yZXZlcnNlKGUueCxbMCxjXSxjKyhjLXQub2Zmc2V0WCkqbCldLG09W2EucmV2ZXJzZShlLnksW2QsMF0sLXQub2Zmc2V0WSpsKSxhLnJldmVyc2UoZS55LFtkLDBdLGQrKGQtdC5vZmZzZXRZKSpsKV07cmV0dXJue3g6cFsxXTxwWzBdP1twWzFdLHBbMF1dOnAseTptWzFdPG1bMF0/W21bMV0sbVswXV06bX19ZWh0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxlaHQpfSxlaHQuybVjbXA9c28oe3R5cGU6ZWh0LHNlbGVjdG9yczpbWyJsaW5lLWNoYXJ0LWdyaWQtdmlldyJdXSxpbnB1dHM6e3ZpZXdFeHRlbnQ6InZpZXdFeHRlbnQiLHhTY2FsZToieFNjYWxlIix4R3JpZENvdW50OiJ4R3JpZENvdW50Iix5U2NhbGU6InlTY2FsZSIseUdyaWRDb3VudDoieUdyaWRDb3VudCIsZG9tRGltOiJkb21EaW0ifSxkZWNsczozLHZhcnM6Mixjb25zdHM6W1sieTEiLCIwIiwzLCJ6ZXJvIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbIngxIiwiMCIsMywiemVybyIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWyJ5MSIsIjAiXSxbIngxIiwiMCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYob2EoKSxDZigwLCJzdmciKSxIbSgxLCRndCwxLDUsImxpbmUiLDApLEhtKDIsdGh0LDEsNSwibGluZSIsMSksTWYoKSksMiZlJiYoRGMoMSksYmYoIm5nRm9yT2YiLG4uZ2V0WFRpY2tzKCkpLERjKDEpLGJmKCJuZ0Zvck9mIixuLmdldFlUaWNrcygpKSl9LGRpcmVjdGl2ZXM6W3h2XSxzdHlsZXM6WyJbX25naG9zdC0lQ09NUCVdIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIH1cblxuICAgICAgc3ZnW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICB9XG5cbiAgICAgIGxpbmVbX25nY29udGVudC0lQ09NUCVdIHtcbiAgICAgICAgc3Ryb2tlOiAjY2NjO1xuICAgICAgICBzdHJva2Utd2lkdGg6IDFweDtcbiAgICAgIH1cblxuICAgICAgLnplcm9bX25nY29udGVudC0lQ09NUCVdIHtcbiAgICAgICAgc3Ryb2tlOiAjYWFhO1xuICAgICAgICBzdHJva2Utd2lkdGg6IDEuNXB4O1xuICAgICAgfSJdLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihlaHQsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoibGluZS1jaGFydC1ncmlkLXZpZXciLHRlbXBsYXRlOic8c3ZnPlxuICAgIDxsaW5lXG4gICAgICAqbmdGb3I9ImxldCB0aWNrIG9mIGdldFhUaWNrcygpIlxuICAgICAgW2NsYXNzLnplcm9dPSJ0aWNrID09PSAwIlxuICAgICAgW2F0dHIueDFdPSJnZXREb21YKHRpY2spIlxuICAgICAgeTE9IjAiXG4gICAgICBbYXR0ci54Ml09ImdldERvbVgodGljaykiXG4gICAgICBbYXR0ci55Ml09ImRvbURpbS5oZWlnaHQiXG4gICAgPjwvbGluZT5cbiAgICA8bGluZVxuICAgICAgKm5nRm9yPSJsZXQgdGljayBvZiBnZXRZVGlja3MoKSJcbiAgICAgIFtjbGFzcy56ZXJvXT0idGljayA9PT0gMCJcbiAgICAgIHgxPSIwIlxuICAgICAgW2F0dHIueTFdPSJnZXREb21ZKHRpY2spIlxuICAgICAgW2F0dHIueDJdPSJkb21EaW0ud2lkdGgiXG4gICAgICBbYXR0ci55Ml09ImdldERvbVkodGljaykiXG4gICAgPjwvbGluZT5cbiAgPC9zdmc+JyxzdHlsZXM6WyJcbiAgICAgIDpob3N0IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIH1cblxuICAgICAgc3ZnIHtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgIH1cblxuICAgICAgbGluZSB7XG4gICAgICAgIHN0cm9rZTogI2NjYztcbiAgICAgICAgc3Ryb2tlLXdpZHRoOiAxcHg7XG4gICAgICB9XG5cbiAgICAgIC56ZXJvIHtcbiAgICAgICAgc3Ryb2tlOiAjYWFhO1xuICAgICAgICBzdHJva2Utd2lkdGg6IDEuNXB4O1xuICAgICAgfVxuICAgICJdLGNoYW5nZURldGVjdGlvbjpqbi5PblB1c2h9XX1dLG51bGwse3ZpZXdFeHRlbnQ6W3t0eXBlOlJffV0seFNjYWxlOlt7dHlwZTpSX31dLHhHcmlkQ291bnQ6W3t0eXBlOlJffV0seVNjYWxlOlt7dHlwZTpSX31dLHlHcmlkQ291bnQ6W3t0eXBlOlJffV0sZG9tRGltOlt7dHlwZTpSX31dfSk7Y29uc3Qgb2h0PVsiZG90cyJdO2Z1bmN0aW9uIGlodCh0LGUpe2lmKDEmdCYmKG9hKCksdmYoMCwiY2lyY2xlIiwxMikpLDImdCl7Y29uc3QgdD16ZigpLiRpbXBsaWNpdCxlPXpmKDIpO3ltKCJjeCIsZS5nZXREb21YKHQucG9pbnQueCkpKCJjeSIsZS5nZXREb21ZKHQucG9pbnQueSkpKCJmaWxsIix0Lm1ldGFkYXRhLmNvbG9yKX19ZnVuY3Rpb24gYWh0KHQsZSl7aWYoMSZ0JiYob2EoKSx4ZigwKSxIbSgxLGlodCwxLDMsImNpcmNsZSIsMTEpLE9mKCkpLDImdCl7Y29uc3QgdD1lLiRpbXBsaWNpdCxuPXpmKDIpO0RjKDEpLGJmKCJuZ0lmIixuLnNob3VsZFJlbmRlclRvb2x0aXBQb2ludCh0LnBvaW50KSl9fWZ1bmN0aW9uIHJodCh0LGUpe2lmKDEmdCYmKG9hKCkseGYoMCksSG0oMSxhaHQsMiwxLCJuZy1jb250YWluZXIiLDEwKSxPZigpKSwyJnQpe2NvbnN0IHQ9emYoKTtEYygxKSxiZigibmdGb3JPZiIsdC5jdXJzb3JlZERhdGEpKCJuZ0ZvclRyYWNrQnkiLHQudHJhY2tCeVNlcmllc05hbWUpfX1mdW5jdGlvbiBzaHQodCxlKXtpZigxJnQmJihvYSgpLHZmKDAsInJlY3QiLDEzKSksMiZ0KXtjb25zdCB0PXpmKCk7eW0oIngiLHQuem9vbUJveEluVWlDb29yZGluYXRlLngpKCJ3aWR0aCIsdC56b29tQm94SW5VaUNvb3JkaW5hdGUud2lkdGgpKCJ5Iix0Lnpvb21Cb3hJblVpQ29vcmRpbmF0ZS55KSgiaGVpZ2h0Iix0Lnpvb21Cb3hJblVpQ29vcmRpbmF0ZS5oZWlnaHQpfX1jb25zdCBsaHQ9ZnVuY3Rpb24odCxlKXtyZXR1cm57ZGF0YTp0LGN1cnNvckxvY2F0aW9uSW5EYXRhQ29vcmQ6ZX19O2Z1bmN0aW9uIGNodCh0LGUpe2lmKDEmdCYmKENmKDAsImRpdiIsMTQpLFBmKDEsMTUpLE1mKCkpLDImdCl7Y29uc3QgdD16ZigpLGU9Rm0oMTEpO0RjKDEpLGJmKCJuZ1RlbXBsYXRlT3V0bGV0Iix0LnRvb2x0aXBUZW1wbGF0ZT90LnRvb2x0aXBUZW1wbGF0ZTplKSgibmdUZW1wbGF0ZU91dGxldENvbnRleHQiLGF5KDIsbGh0LHQuY3Vyc29yZWREYXRhLHQuY3Vyc29yTG9jYXRpb25JbkRhdGFDb29yZCkpfX1mdW5jdGlvbiBkaHQodCxlKXtpZigxJnQmJih4ZigwKSxDZigxLCJ0ciIsMTcpLENmKDIsInRkIiwxOCksdmYoMywic3BhbiIpLE1mKCksQ2YoNCwidGQiLDE5KSxQdSg1KSxNZigpLENmKDYsInRkIiksUHUoNyksTWYoKSxDZig4LCJ0ZCIpLFB1KDkpLE1mKCksTWYoKSxPZigpKSwyJnQpe2NvbnN0IHQ9ZS4kaW1wbGljaXQ7RGMoMyksbHUoImJhY2tncm91bmQtY29sb3IiLHQubWV0YWRhdGEuY29sb3IpLERjKDIpLHd1KHQubWV0YWRhdGEuZGlzcGxheU5hbWUpLERjKDIpLHd1KHQucG9pbnQueSksRGMoMiksd3UodC5wb2ludC54KX19ZnVuY3Rpb24gcGh0KHQsZSl7aWYoMSZ0JiYoQ2YoMCwidGFibGUiKSxDZigxLCJ0aGVhZCIpLENmKDIsInRyIiksdmYoMywidGgiLDE2KSxDZig0LCJ0aCIpLFB1KDUsIk5hbWUiKSxNZigpLENmKDYsInRoIiksUHUoNywiWSIpLE1mKCksQ2YoOCwidGgiKSxQdSg5LCJYIiksTWYoKSxNZigpLE1mKCksQ2YoMTAsInRib2R5IiksSG0oMTEsZGh0LDEwLDUsIm5nLWNvbnRhaW5lciIsMTApLE1mKCksTWYoKSksMiZ0KXtjb25zdCB0PWUuZGF0YSxuPXpmKCk7RGMoMTEpLGJmKCJuZ0Zvck9mIix0KSgibmdGb3JUcmFja0J5IixuLnRyYWNrQnlTZXJpZXNOYW1lKX19dmFyIG1odDshKGZ1bmN0aW9uKHQpe3RbdC5OT05FPTBdPSJOT05FIix0W3QuRFJBR19aT09NSU5HPTFdPSJEUkFHX1pPT01JTkciLHRbdC5TQ1JPTExfWk9PTUlORz0yXT0iU0NST0xMX1pPT01JTkciLHRbdC5QQU5OSU5HPTNdPSJQQU5OSU5HIn0pKG1odHx8KG1odD17fSkpO2Z1bmN0aW9uIGZodCh0KXtyZXR1cm4gdC5zY3JvbGxTdHJhdGVnaWVzLnJlcG9zaXRpb24oKX1jbGFzcyB1aHR7Y29uc3RydWN0b3IodCxlKXt0aGlzLmNoYW5nZURldGVjdG9yPXQsdGhpcy5zY3JvbGxTdHJhdGVneT1lLHRoaXMub25WaWV3RXh0ZW50Q2hhbmdlPW5ldyBTeSx0aGlzLm9uVmlld0V4dGVudFJlc2V0PW5ldyBTeSx0aGlzLkludGVyYWN0aW9uU3RhdGU9bWh0LHRoaXMuc3RhdGU9bWh0Lk5PTkUsdGhpcy5zcGVjaWFsS2V5UHJlc3NlZD0hMSx0aGlzLnpvb21Cb3hJblVpQ29vcmRpbmF0ZT17eDowLHdpZHRoOjAsaGVpZ2h0OjAseTowfSx0aGlzLnRvb2x0aXBQb3NpdGlvbnM9W3tvZmZzZXRZOjUsb3JpZ2luWDoic3RhcnQiLG92ZXJsYXlYOiJzdGFydCIsb3JpZ2luWToiYm90dG9tIixvdmVybGF5WToidG9wIn0se29mZnNldFk6NSxvcmlnaW5YOiJlbmQiLG92ZXJsYXlYOiJlbmQiLG9yaWdpblk6ImJvdHRvbSIsb3ZlcmxheVk6InRvcCJ9LHtvZmZzZXRZOi0xNSxvcmlnaW5YOiJzdGFydCIsb3ZlcmxheVg6InN0YXJ0IixvcmlnaW5ZOiJ0b3AiLG92ZXJsYXlZOiJib3R0b20ifSx7b2Zmc2V0WTotMTUsb3JpZ2luWDoiZW5kIixvdmVybGF5WDoiZW5kIixvcmlnaW5ZOiJ0b3AiLG92ZXJsYXlZOiJib3R0b20ifSx7b2Zmc2V0WDo1LG9yaWdpblg6ImVuZCIsb3ZlcmxheVg6InN0YXJ0IixvcmlnaW5ZOiJ0b3AiLG92ZXJsYXlZOiJ0b3AifSx7b2Zmc2V0WDotNSxvcmlnaW5YOiJzdGFydCIsb3ZlcmxheVg6ImVuZCIsb3JpZ2luWToidG9wIixvdmVybGF5WToidG9wIn1dLHRoaXMuY3Vyc29yTG9jYXRpb25JbkRhdGFDb29yZD1udWxsLHRoaXMuY3Vyc29yZWREYXRhPVtdLHRoaXMudG9vbHRpcERpc3BsYXlBdHRhY2hlZD0hMSx0aGlzLnNob3dab29tSW5zdHJ1Y3Rpb249ITEsdGhpcy5kcmFnU3RhcnRDb29yZD1udWxsLHRoaXMuaXNDdXJzb3JJbnNpZGU9ITEsdGhpcy5uZ1Vuc3Vic2NyaWJlPW5ldyBCfW5nQWZ0ZXJWaWV3SW5pdCgpe2xlKHRoaXMuZG90c0NvbnRhaW5lci5uYXRpdmVFbGVtZW50LCJkYmxjbGljayIse3Bhc3NpdmU6ITB9KS5waXBlKGplKHRoaXMubmdVbnN1YnNjcmliZSkpLnN1YnNjcmliZSgoKCk9Pnt0aGlzLm9uVmlld0V4dGVudFJlc2V0LmVtaXQoKSx0aGlzLnN0YXRlPW1odC5OT05FLHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCl9KSksbGUod2luZG93LCJrZXlkb3duIix7cGFzc2l2ZTohMH0pLnBpcGUoamUodGhpcy5uZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKCh0PT57Y29uc3QgZT10aGlzLnNob3VsZFBhbih0KTtlIT09dGhpcy5zcGVjaWFsS2V5UHJlc3NlZCYmKHRoaXMuc3BlY2lhbEtleVByZXNzZWQ9ZSx0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpKX0pKSxsZSh3aW5kb3csImtleXVwIix7cGFzc2l2ZTohMH0pLnBpcGUoamUodGhpcy5uZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKCh0PT57Y29uc3QgZT10aGlzLnNob3VsZFBhbih0KTtlIT09dGhpcy5zcGVjaWFsS2V5UHJlc3NlZCYmKHRoaXMuc3BlY2lhbEtleVByZXNzZWQ9ZSx0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpKX0pKSxsZSh0aGlzLmRvdHNDb250YWluZXIubmF0aXZlRWxlbWVudCwibW91c2Vkb3duIix7cGFzc2l2ZTohMH0pLnBpcGUoamUodGhpcy5uZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKCh0PT57Y29uc3QgZT10aGlzLnN0YXRlLG49dGhpcy5zaG91bGRQYW4odCk/bWh0LlBBTk5JTkc6bWh0LkRSQUdfWk9PTUlORztlPT09bWh0Lk5PTkUmJm49PT1taHQuRFJBR19aT09NSU5HJiYodGhpcy5kcmFnU3RhcnRDb29yZD17eDp0Lm9mZnNldFgseTp0Lm9mZnNldFl9LHRoaXMuem9vbUJveEluVWlDb29yZGluYXRlPXt4OnQub2Zmc2V0WCx3aWR0aDowLHk6dC5vZmZzZXRZLGhlaWdodDowfSksZSE9PW4mJih0aGlzLnN0YXRlPW4sdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKSl9KSksbGUodGhpcy5kb3RzQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQsIm1vdXNldXAiLHtwYXNzaXZlOiEwfSkucGlwZShqZSh0aGlzLm5nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKHQ9Pntjb25zdCBlPSh0LmJ1dHRvbnMmaDAuTEVGVCk9PT1oMC5MRUZUO3RoaXMuZHJhZ1N0YXJ0Q29vcmQ9bnVsbDtjb25zdCBuPXRoaXMuem9vbUJveEluVWlDb29yZGluYXRlO2lmKCFlJiZ0aGlzLnN0YXRlPT09bWh0LkRSQUdfWk9PTUlORyYmbi53aWR0aD4wJiZuLmhlaWdodD4wKXtjb25zdCB0PXRoaXMuZ2V0RGF0YVgobi54KSxlPXRoaXMuZ2V0RGF0YVgobi54K24ud2lkdGgpLG89dGhpcy5nZXREYXRhWShuLnkrbi5oZWlnaHQpLGk9dGhpcy5nZXREYXRhWShuLnkpO3RoaXMub25WaWV3RXh0ZW50Q2hhbmdlLmVtaXQoe2RhdGFFeHRlbnQ6e3g6W3QsZV0seTpbbyxpXX19KX10aGlzLnN0YXRlIT09bWh0Lk5PTkUmJih0aGlzLnN0YXRlPW1odC5OT05FLHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCkpfSkpLGxlKHRoaXMuZG90c0NvbnRhaW5lci5uYXRpdmVFbGVtZW50LCJtb3VzZWVudGVyIix7cGFzc2l2ZTohMH0pLnBpcGUoamUodGhpcy5uZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKCh0PT57dGhpcy5pc0N1cnNvckluc2lkZT0hMCx0aGlzLnVwZGF0ZVRvb2x0aXAodCksdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKX0pKSxsZSh0aGlzLmRvdHNDb250YWluZXIubmF0aXZlRWxlbWVudCwibW91c2VsZWF2ZSIse3Bhc3NpdmU6ITB9KS5waXBlKGplKHRoaXMubmdVbnN1YnNjcmliZSkpLnN1YnNjcmliZSgodD0+e3RoaXMuZHJhZ1N0YXJ0Q29vcmQ9bnVsbCx0aGlzLmlzQ3Vyc29ySW5zaWRlPSExLHRoaXMudXBkYXRlVG9vbHRpcCh0KSx0aGlzLnN0YXRlPW1odC5OT05FLHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCl9KSksbGUodGhpcy5kb3RzQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQsIm1vdXNlbW92ZSIse3Bhc3NpdmU6ITB9KS5waXBlKGplKHRoaXMubmdVbnN1YnNjcmliZSkpLnN1YnNjcmliZSgodD0+e3N3aXRjaCh0aGlzLnN0YXRlKXtjYXNlIG1odC5TQ1JPTExfWk9PTUlORzp0aGlzLnN0YXRlPW1odC5OT05FLHRoaXMudXBkYXRlVG9vbHRpcCh0KSx0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO2JyZWFrO2Nhc2UgbWh0Lk5PTkU6dGhpcy51cGRhdGVUb29sdGlwKHQpLHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7YnJlYWs7Y2FzZSBtaHQuUEFOTklORzp7Y29uc3QgZT0tdC5tb3ZlbWVudFgsbj0tdC5tb3ZlbWVudFkse3dpZHRoOm8saGVpZ2h0Oml9PXRoaXMuZG9tRGltLGE9dGhpcy5nZXREYXRhWChlKSxyPXRoaXMuZ2V0RGF0YVgobytlKSxzPXRoaXMuZ2V0RGF0YVkoaStuKSxsPXRoaXMuZ2V0RGF0YVkobik7dGhpcy5vblZpZXdFeHRlbnRDaGFuZ2UuZW1pdCh7ZGF0YUV4dGVudDp7eDpbYSxyXSx5OltzLGxdfX0pO2JyZWFrfWNhc2UgbWh0LkRSQUdfWk9PTUlORzp7aWYoIXRoaXMuZHJhZ1N0YXJ0Q29vcmQpYnJlYWs7Y29uc3QgZT1bdGhpcy5kcmFnU3RhcnRDb29yZC54LHQub2Zmc2V0WF0sbj1bdGhpcy5kcmFnU3RhcnRDb29yZC55LHQub2Zmc2V0WV07dGhpcy56b29tQm94SW5VaUNvb3JkaW5hdGU9e3g6TWF0aC5taW4oLi4uZSksd2lkdGg6TWF0aC5tYXgoLi4uZSktTWF0aC5taW4oLi4uZSkseTpNYXRoLm1pbiguLi5uKSxoZWlnaHQ6TWF0aC5tYXgoLi4ubiktTWF0aC5taW4oLi4ubil9fXRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCl9fSkpLGxlKHRoaXMuZG90c0NvbnRhaW5lci5uYXRpdmVFbGVtZW50LCJ3aGVlbCIse3Bhc3NpdmU6ITF9KS5waXBlKGplKHRoaXMubmdVbnN1YnNjcmliZSksVmUoKHQ9Pntjb25zdCBlPSF0LmN0cmxLZXkmJiF0LnNoaWZ0S2V5JiZ0LmFsdEtleTtyZXR1cm4gdGhpcy5zaG93Wm9vbUluc3RydWN0aW9uPSFlLHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCksZT8odC5wcmV2ZW50RGVmYXVsdCgpLHp0KHQpKTpkZSgzZTMpLnBpcGUoV2UoKCgpPT57dGhpcy5zaG93Wm9vbUluc3RydWN0aW9uPSExLHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCl9KSksVnQoKCgpPT5udWxsKSkpfSkpLHVlKCh0PT5Cb29sZWFuKHQpKSkpLnN1YnNjcmliZSgodD0+e3RoaXMub25WaWV3RXh0ZW50Q2hhbmdlLmVtaXQoe2RhdGFFeHRlbnQ6bmh0KHQsdGhpcy52aWV3RXh0ZW50LHRoaXMuZG9tRGltLC4wMSx0aGlzLnhTY2FsZSx0aGlzLnlTY2FsZSl9KSx0aGlzLnN0YXRlIT09bWh0LlNDUk9MTF9aT09NSU5HJiYodGhpcy5zdGF0ZT1taHQuU0NST0xMX1pPT01JTkcsdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKSl9KSl9bmdPbkNoYW5nZXMoKXt0aGlzLnVwZGF0ZUN1cnNvcmVkRGF0YUFuZFRvb2x0aXBWaXNpYmlsaXR5KCl9bmdPbkRlc3Ryb3koKXt0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpLHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpfXNob3VsZFBhbih0KXtjb25zdCBlPXQuc2hpZnRLZXl8fHQuYWx0S2V5O2lmKHQgaW5zdGFuY2VvZiBLZXlib2FyZEV2ZW50KXJldHVybiBlO2NvbnN0IG49KHQuYnV0dG9ucyZoMC5MRUZUKT09PWgwLkxFRlQsbz0odC5idXR0b25zJmgwLk1JRERMRSk9PT1oMC5NSURETEU7cmV0dXJuISghbiYmIW8pJiYobyYmIW58fGUpfXRyYWNrQnlTZXJpZXNOYW1lKHQsZSl7cmV0dXJuIGUuaWR9Z2V0RG9tWCh0KXtyZXR1cm4gdGhpcy54U2NhbGUuZm9yd2FyZCh0aGlzLnZpZXdFeHRlbnQueCxKZ3QodGhpcy5kb21EaW0sIngiKSx0KX1nZXREYXRhWCh0KXtyZXR1cm4gdGhpcy54U2NhbGUucmV2ZXJzZSh0aGlzLnZpZXdFeHRlbnQueCxKZ3QodGhpcy5kb21EaW0sIngiKSx0KX1nZXREb21ZKHQpe3JldHVybiB0aGlzLnlTY2FsZS5mb3J3YXJkKHRoaXMudmlld0V4dGVudC55LEpndCh0aGlzLmRvbURpbSwieSIpLHQpfWdldERhdGFZKHQpe3JldHVybiB0aGlzLnlTY2FsZS5yZXZlcnNlKHRoaXMudmlld0V4dGVudC55LEpndCh0aGlzLmRvbURpbSwieSIpLHQpfXNob3VsZFJlbmRlclRvb2x0aXBQb2ludCh0KXtyZXR1cm4gbnVsbCE9PXQmJiFpc05hTih0LngpJiYhaXNOYU4odC55KX11cGRhdGVUb29sdGlwKHQpe3RoaXMuY3Vyc29yTG9jYXRpb25JbkRhdGFDb29yZD17eDp0aGlzLmdldERhdGFYKHQub2Zmc2V0WCkseTp0aGlzLmdldERhdGFZKHQub2Zmc2V0WSl9LHRoaXMudXBkYXRlQ3Vyc29yZWREYXRhQW5kVG9vbHRpcFZpc2liaWxpdHkoKX1vblRvb2x0aXBEaXNwbGF5RGV0YWNoZWQoKXt0aGlzLnRvb2x0aXBEaXNwbGF5QXR0YWNoZWQ9ITF9dXBkYXRlQ3Vyc29yZWREYXRhQW5kVG9vbHRpcFZpc2liaWxpdHkoKXtjb25zdCB0PXRoaXMuY3Vyc29yTG9jYXRpb25JbkRhdGFDb29yZDtpZihudWxsPT09dClyZXR1cm4gdGhpcy5jdXJzb3JlZERhdGE9W10sdm9pZCh0aGlzLnRvb2x0aXBEaXNwbGF5QXR0YWNoZWQ9ITEpO3RoaXMuY3Vyc29yZWREYXRhPXRoaXMuaXNDdXJzb3JJbnNpZGU/dGhpcy5zZXJpZXNEYXRhLm1hcCgodD0+KHtzZXJpZXNEYXR1bTp0LG1ldGFkYXRhOnRoaXMuc2VyaWVzTWV0YWRhdGFNYXBbdC5pZF19KSkpLmZpbHRlcigoKHttZXRhZGF0YTp0fSk9PnQmJnQudmlzaWJsZSYmIUJvb2xlYW4odC5hdXgpKSkubWFwKCgoe3Nlcmllc0RhdHVtOmUsbWV0YWRhdGE6bn0pPT57Y29uc3Qgbz0oZnVuY3Rpb24gaSh0LGUpe2NvbnN0IG49TWF0aC5taW4oaDYodC5tYXAoKCh7eDp0fSk9PnQpKSxlKSx0Lmxlbmd0aC0xKSxvPU1hdGgubWF4KDAsbi0xKTtyZXR1cm4gTWF0aC5hYnModFtvXS54LWUpLU1hdGguYWJzKHRbbl0ueC1lKTw9MD9vOm59KShlLnBvaW50cyx0LngpO3JldHVybntpZDplLmlkLGNsb3Nlc3RQb2ludEluZGV4Om8scG9pbnQ6ZS5wb2ludHNbb10sbWV0YWRhdGE6bn19KSkuZmlsdGVyKCh0PT50KSk6W10sdGhpcy50b29sdGlwRGlzcGxheUF0dGFjaGVkPUJvb2xlYW4odGhpcy5jdXJzb3JlZERhdGEubGVuZ3RoKX19dWh0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx1aHQpKGdmKE9iKSxnZihPQikpfSx1aHQuybVjbXA9c28oe3R5cGU6dWh0LHNlbGVjdG9yczpbWyJsaW5lLWNoYXJ0LWludGVyYWN0aXZlLXZpZXciXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJihWeShvaHQsNyxLaCksVnkodFYsNSkpLDImZSl7bGV0IHQ7QnkodD1VeSgpKSYmKG4uZG90c0NvbnRhaW5lcj10LmZpcnN0KSxCeSh0PVV5KCkpJiYobi5vdmVybGF5PXQuZmlyc3QpfX0saG9zdFZhcnM6Mixob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezImZSYmY3UoInNob3ctem9vbS1pbnN0cnVjdGlvbiIsbi5zaG93Wm9vbUluc3RydWN0aW9uKX0saW5wdXRzOntzZXJpZXNEYXRhOiJzZXJpZXNEYXRhIixzZXJpZXNNZXRhZGF0YU1hcDoic2VyaWVzTWV0YWRhdGFNYXAiLHZpZXdFeHRlbnQ6InZpZXdFeHRlbnQiLHhTY2FsZToieFNjYWxlIix5U2NhbGU6InlTY2FsZSIsZG9tRGltOiJkb21EaW0iLHRvb2x0aXBPcmlnaW5FbDoidG9vbHRpcE9yaWdpbkVsIix0b29sdGlwVGVtcGxhdGU6InRvb2x0aXBUZW1wbGF0ZSJ9LG91dHB1dHM6e29uVmlld0V4dGVudENoYW5nZToib25WaWV3RXh0ZW50Q2hhbmdlIixvblZpZXdFeHRlbnRSZXNldDoib25WaWV3RXh0ZW50UmVzZXQifSxmZWF0dXJlczpbamgoW3twcm92aWRlOk9CLHVzZUZhY3Rvcnk6Zmh0LGRlcHM6W0tCXX1dKSxxb10sZGVjbHM6MTIsdmFyczoxNSxjb25zdHM6W1sxLCJkb3RzIl0sWyJkb3RzIiwiIl0sWzQsIm5nSWYiXSxbImNsYXNzIiwiem9vbS1ib3giLDQsIm5nSWYiXSxbMSwiem9vbS1pbnN0cnVjdGlvbiJdLFsxLCJpbnN0cnVjdGlvbi1jb250ZW50Il0sWyJjZGtPdmVybGF5T3JpZ2luIiwiIiwxLCJ0b29sdGlwLW9yaWdpbiJdLFsidG9vbHRpcE9yaWdpbiIsImNka092ZXJsYXlPcmlnaW4iXSxbImNka0Nvbm5lY3RlZE92ZXJsYXkiLCIiLDMsImNka0Nvbm5lY3RlZE92ZXJsYXlPcmlnaW4iLCJjZGtDb25uZWN0ZWRPdmVybGF5T3BlbiIsImNka0Nvbm5lY3RlZE92ZXJsYXlQb3NpdGlvbnMiLCJjZGtDb25uZWN0ZWRPdmVybGF5U2Nyb2xsU3RyYXRlZ3kiLCJjZGtDb25uZWN0ZWRPdmVybGF5TG9ja1Bvc2l0aW9uIiwiY2RrQ29ubmVjdGVkT3ZlcmxheUZsZXhpYmxlRGltZW5zaW9ucyIsImNka0Nvbm5lY3RlZE92ZXJsYXlHcm93QWZ0ZXJPcGVuIiwiZGV0YWNoIl0sWyJkZWZhdWx0VG9vbHRpcCIsIiJdLFs0LCJuZ0ZvciIsIm5nRm9yT2YiLCJuZ0ZvclRyYWNrQnkiXSxbInIiLCI0Iiw0LCJuZ0lmIl0sWyJyIiwiNCJdLFsxLCJ6b29tLWJveCJdLFsxLCJ0b29sdGlwLWNvbnRhaW5lciJdLFszLCJuZ1RlbXBsYXRlT3V0bGV0IiwibmdUZW1wbGF0ZU91dGxldENvbnRleHQiXSxbMSwiY2lyY2xlLWhlYWRlciJdLFsxLCJ0b29sdGlwLXJvdyJdLFsxLCJ0b29sdGlwLXJvdy1jaXJjbGUiXSxbMSwibmFtZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYob2EoKSxDZigwLCJzdmciLDAsMSksSG0oMixyaHQsMiwyLCJuZy1jb250YWluZXIiLDIpLEhtKDMsc2h0LDEsNCwicmVjdCIsMyksTWYoKSxhYSgpLENmKDQsImRpdiIsNCksQ2YoNSwic3BhbiIsNSksUHUoNiwiQWx0ICsgU2Nyb2xsIHRvIFpvb20iKSxNZigpLE1mKCksdmYoNywiZGl2Iiw2LDcpLEhtKDksY2h0LDIsNSwibmctdGVtcGxhdGUiLDgpLFJmKCJkZXRhY2giLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25Ub29sdGlwRGlzcGxheURldGFjaGVkKCl9KSksSG0oMTAscGh0LDEyLDIsIm5nLXRlbXBsYXRlIixudWxsLDkscXkpKSwyJmUmJihjdSgicGFubmFibGUiLG4uc3BlY2lhbEtleVByZXNzZWQpKCJkcmFnZ2FibGUiLG4uc3RhdGU9PT1uLkludGVyYWN0aW9uU3RhdGUuTk9ORXx8bi5zdGF0ZT09PW4uSW50ZXJhY3Rpb25TdGF0ZS5EUkFHX1pPT01JTkcpKCJwYW5uaW5nIixuLnN0YXRlPT09bi5JbnRlcmFjdGlvblN0YXRlLlBBTk5JTkcpLERjKDIpLGJmKCJuZ0lmIixuLnN0YXRlPT09bi5JbnRlcmFjdGlvblN0YXRlLk5PTkUpLERjKDEpLGJmKCJuZ0lmIixuLnN0YXRlPT09bi5JbnRlcmFjdGlvblN0YXRlLkRSQUdfWk9PTUlORyksRGMoNiksYmYoImNka0Nvbm5lY3RlZE92ZXJsYXlPcmlnaW4iLG4udG9vbHRpcE9yaWdpbkVsKSgiY2RrQ29ubmVjdGVkT3ZlcmxheU9wZW4iLG4udG9vbHRpcERpc3BsYXlBdHRhY2hlZCYmbi5zdGF0ZT09PW4uSW50ZXJhY3Rpb25TdGF0ZS5OT05FKSgiY2RrQ29ubmVjdGVkT3ZlcmxheVBvc2l0aW9ucyIsbi50b29sdGlwUG9zaXRpb25zKSgiY2RrQ29ubmVjdGVkT3ZlcmxheVNjcm9sbFN0cmF0ZWd5IixuLnNjcm9sbFN0cmF0ZWd5KSgiY2RrQ29ubmVjdGVkT3ZlcmxheUxvY2tQb3NpdGlvbiIsITEpKCJjZGtDb25uZWN0ZWRPdmVybGF5RmxleGlibGVEaW1lbnNpb25zIiwhMCkoImNka0Nvbm5lY3RlZE92ZXJsYXlHcm93QWZ0ZXJPcGVuIiwhMCkpfSxkaXJlY3RpdmVzOltQdiwkQix0Vix4dixJdl0sc3R5bGVzOlsiW19uZ2hvc3QtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246cmVsYXRpdmU7dXNlci1zZWxlY3Q6bm9uZX0uZG90c1tfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uZG90cy5kcmFnZ2FibGVbX25nY29udGVudC0lQ09NUCVde2N1cnNvcjpjcm9zc2hhaXJ9LmRvdHMucGFubmFibGVbX25nY29udGVudC0lQ09NUCVde2N1cnNvcjpncmFifS5kb3RzLnBhbm5pbmdbX25nY29udGVudC0lQ09NUCVde2N1cnNvcjpncmFiYmluZ30udG9vbHRpcC1yb3ctY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTppbmxpbmUtZmxleDtoZWlnaHQ6MTJweDt3aWR0aDoxMnB4fS50b29sdGlwLXJvdy1jaXJjbGVbX25nY29udGVudC0lQ09NUCVdID4gc3Bhbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXJhZGl1czo1MCU7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LC42KTtkaXNwbGF5OmlubGluZS1ibG9jaztoZWlnaHQ6MTBweDt3aWR0aDoxMHB4fS50b29sdGlwLW9yaWdpbltfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjA7bGVmdDowO3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjB9LnRvb2x0aXAtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjg1KTtib3JkZXItcmFkaXVzOjRweDtjb2xvcjojZmZmO2NvbnRhaW46cGFpbnQgc3R5bGUgbGF5b3V0O2ZvbnQtc2l6ZTouOWVtO292ZXJmbG93OmF1dG87cGFkZGluZzo1cHg7cG9pbnRlci1ldmVudHM6bm9uZTt3aWR0aDoxMDAlfXRoW19uZ2NvbnRlbnQtJUNPTVAlXSwgdGRbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDVweDt0ZXh0LWFsaWduOmxlZnR9dGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjUwMDtwYWRkaW5nLWJvdHRvbTo1cHh9Lnpvb20tYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmaWxsLW9wYWNpdHk6LjAzO2ZpbGw6IzAwMDtzdHJva2U6I2NjY30uem9vbS1pbnN0cnVjdGlvbltfbmdjb250ZW50LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2xlZnQ6MDtvcGFjaXR5OjA7cG9pbnRlci1ldmVudHM6bm9uZTtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowO3RvcDoxMHB4O3RyYW5zaXRpb246b3BhY2l0eSAuNXM7ei1pbmRleDoxfS5pbnN0cnVjdGlvbi1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjYpO2JvcmRlci1yYWRpdXM6NXB4O2NvbG9yOiNmZmY7cGFkZGluZzo1cHggMTBweDt1c2VyLXNlbGVjdDpub25lfS5zaG93LXpvb20taW5zdHJ1Y3Rpb25bX25naG9zdC0lQ09NUCVdICAgLnpvb20taW5zdHJ1Y3Rpb25bX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0iXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIodWh0LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6ImxpbmUtY2hhcnQtaW50ZXJhY3RpdmUtdmlldyIsdGVtcGxhdGVVcmw6Ii4vbGluZV9jaGFydF9pbnRlcmFjdGl2ZV92aWV3Lm5nLmh0bWwiLHN0eWxlVXJsczpbIi4vbGluZV9jaGFydF9pbnRlcmFjdGl2ZV92aWV3LmNzcyJdLGNoYW5nZURldGVjdGlvbjpqbi5PblB1c2gscHJvdmlkZXJzOlt7cHJvdmlkZTpPQix1c2VGYWN0b3J5OmZodCxkZXBzOltLQl19XX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOk9ifSx7dHlwZTpPQn1dfSkse2RvdHNDb250YWluZXI6W3t0eXBlOmFyLGFyZ3M6WyJkb3RzIix7c3RhdGljOiEwLHJlYWQ6S2h9XX1dLG92ZXJsYXk6W3t0eXBlOmFyLGFyZ3M6W3RWXX1dLHNlcmllc0RhdGE6W3t0eXBlOlJffV0sc2VyaWVzTWV0YWRhdGFNYXA6W3t0eXBlOlJffV0sdmlld0V4dGVudDpbe3R5cGU6Ul99XSx4U2NhbGU6W3t0eXBlOlJffV0seVNjYWxlOlt7dHlwZTpSX31dLGRvbURpbTpbe3R5cGU6Ul99XSx0b29sdGlwT3JpZ2luRWw6W3t0eXBlOlJffV0sdG9vbHRpcFRlbXBsYXRlOlt7dHlwZTpSX31dLG9uVmlld0V4dGVudENoYW5nZTpbe3R5cGU6RV99XSxvblZpZXdFeHRlbnRSZXNldDpbe3R5cGU6RV99XSxzaG93Wm9vbUluc3RydWN0aW9uOlt7dHlwZTpBXyxhcmdzOlsiY2xhc3Muc2hvdy16b29tLWluc3RydWN0aW9uIl19XX0pO2Z1bmN0aW9uIGdodCh0LGUsbixvKXtyZXR1cm57bWFqb3I6W10sbWlub3I6dC50aWNrcyhvLG4pLm1hcCgodD0+KHt2YWx1ZTp0LHRpY2tGb3JtYXR0ZWRTdHJpbmc6ZS5mb3JtYXRUaWNrKHQpfSkpKX19ZnVuY3Rpb24gaGh0KHQsZSxuLG8pe2NvbnN0W2ksYV09byxyPU1hdGguYWJzKGEtaSk7aWYocj4uMDAxKXJldHVybiBnaHQodCxlLG4sbyk7Y29uc3Qgcz10LnRpY2tzKFtpLGFdLG4pLGw9dC50aWNrcyhbaSxhXSwyKSxjPVtdO2xldCBkPShmdW5jdGlvbiBwKHQpe2NvbnN0IGU9dC50b0V4cG9uZW50aWFsKCkuc3BsaXQoImUtIiwyKTtyZXR1cm4gMj09PWUubGVuZ3RoP051bWJlcihlWzFdKS0xOjB9KShyKTtyPDEmJmwuZXZlcnkoKHQ9Pntjb25zdCBlPU1hdGguYWJzKHQpO3JldHVybiBlPj0wJiZlPDF9KSkmJihkKz0xKTtjb25zdCBtPW5ldyBNYXA7Zm9yKGNvbnN0IHQgb2YgbCl7Y29uc3RbbixvPSIiXT1TdHJpbmcodCkuc3BsaXQoIi4iLDIpLGk9TnVtYmVyKG4rIi4iK28uc2xpY2UoMCxkKSk7bS5zZXQoaSx7c3RhcnQ6aSx0aWNrRm9ybWF0dGVkU3RyaW5nOjA9PT1pPyLigJQiOmUuZm9ybWF0UmVhZGFibGUoaSl9KX1jb25zdCBmPTEwKk1hdGgucG93KDEwLC1kKTtmb3IoY29uc3QgdCBvZiBzKWZvcihjb25zdCBuIG9mWy4uLm0ua2V5cygpXS5yZXZlcnNlKCkpe2NvbnN0IG89dC1uO2lmKG8+PTAmJm88Zil7aWYoMD09PW4pYy5wdXNoKHt2YWx1ZTp0LHRpY2tGb3JtYXR0ZWRTdHJpbmc6ZS5mb3JtYXRUaWNrKHQpfSk7ZWxzZXtjb25zdCBlPVN0cmluZyh0KS5zbGljZShTdHJpbmcobikubGVuZ3RoKTtjLnB1c2goe3ZhbHVlOnQsdGlja0Zvcm1hdHRlZFN0cmluZzpg4oCmJHtlfHwiMCJ9YH0pfWJyZWFrfX1yZXR1cm57bWFqb3I6QXJyYXkuZnJvbShtLnZhbHVlcygpKSxtaW5vcjpjfX1jb25zdCBiaHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIikuZ2V0Q29udGV4dCgiMmQiKTtmdW5jdGlvbiB5aHQodCxlKXtpZigxJnQmJihvYSgpLENmKDAsImciLDE3KSxDZigxLCJ0ZXh0IiksUHUoMiksTWYoKSxDZigzLCJ0aXRsZSIpLFB1KDQpLE1mKCksTWYoKSksMiZ0KXtjb25zdCB0PWUuJGltcGxpY2l0LG49emYoKTtEYygxKSxsdSgiZm9udCIsbi5heGlzRm9udCkseW0oIngiLG4udGV4dFhQb3NpdGlvbih0LnZhbHVlKSkoInkiLG4udGV4dFlQb3NpdGlvbih0LnZhbHVlKSksRGMoMSksa3UoIiAiLHQudGlja0Zvcm1hdHRlZFN0cmluZywiICIpLERjKDIpLHd1KG4uZ2V0Rm9ybWF0dGVyKCkuZm9ybWF0TG9uZyh0LnZhbHVlKSl9fWZ1bmN0aW9uIF9odCh0LGUpe2lmKDEmdCYmKENmKDAsInNwYW4iLDIwKSxDZigxLCJzcGFuIiksUHUoMiksTWYoKSxNZigpKSwyJnQpe2NvbnN0IHQ9ZS4kaW1wbGljaXQsbj1lLmluZGV4LG89ZS5sYXN0LGk9emYoMik7bHUoImxlZnQiLGkuZ2V0TWFqb3JYUG9zaXRpb24odCksInB4IikoIndpZHRoIixpLmdldE1ham9yV2lkdGhTdHJpbmcodCxvLGkubWFqb3JUaWNrc1tuKzFdKSkoImJvdHRvbSIsaS5nZXRNYWpvcllQb3NpdGlvbih0KSwicHgiKSgiaGVpZ2h0IixpLmdldE1ham9ySGVpZ2h0U3RyaW5nKHQsbyxpLm1ham9yVGlja3NbbisxXSkpKCJmb250IixpLmF4aXNGb250KSxjdSgibWFqb3ItbGFiZWwiLCEwKSgibGFzdCIsbyksYmYoInRpdGxlIixpLmdldEZvcm1hdHRlcigpLmZvcm1hdExvbmcodC5zdGFydCkpLERjKDIpLHd1KHQudGlja0Zvcm1hdHRlZFN0cmluZyl9fWZ1bmN0aW9uIENodCh0LGUpe2lmKDEmdCYmKENmKDAsImRpdiIsMTgpLEhtKDEsX2h0LDMsMTYsInNwYW4iLDE5KSxNZigpKSwyJnQpe2NvbnN0IHQ9emYoKTtEYygxKSxiZigibmdGb3JPZiIsdC5tYWpvclRpY2tzKSgibmdGb3JUcmFja0J5Iix0LnRyYWNrQnlNYWpvclRpY2spfX1jbGFzcyBNaHR7Y29uc3RydWN0b3IoKXt0aGlzLm9uVmlld0V4dGVudENoYW5nZT1uZXcgU3ksdGhpcy5lZGl0TWVudU9wZW5lZD0hMSx0aGlzLm1ham9yVGlja3M9W10sdGhpcy5taW5vclRpY2tzPVtdfW5nT25DaGFuZ2VzKCl7bGV0IHQ9bnVsbDtjb25zdCBlPVFndCgieCI9PT10aGlzLmF4aXM/dGhpcy5kb21EaW0ud2lkdGg6dGhpcy5kb21EaW0uaGVpZ2h0LHRoaXMuZ3JpZENvdW50KTt0PXRoaXMuc2NhbGUgaW5zdGFuY2VvZiBocnQ/aGh0KHRoaXMuc2NhbGUsdGhpcy5nZXRGb3JtYXR0ZXIoKSxlLHRoaXMuYXhpc0V4dGVudCk6dGhpcy5zY2FsZSBpbnN0YW5jZW9mIHlydD8oZnVuY3Rpb24gbih0LGUsbyxpKXtjb25zdFthLHJdPWk7bGV0IHM9dC50aWNrcyhpLDIpO2lmKHItYT49ODY0ZTV8fHMubGVuZ3RoPjIpcmV0dXJuIGdodCh0LGUsbyxpKTtjb25zdCBsPXQudGlja3MoaSxvKTtyZXR1cm57bWFqb3I6cy5tYXAoKHQ9Pih7c3RhcnQ6dCx0aWNrRm9ybWF0dGVkU3RyaW5nOmUuZm9ybWF0U2hvcnQodCl9KSkpLG1pbm9yOmwubWFwKCh0PT4oe3ZhbHVlOnQsdGlja0Zvcm1hdHRlZFN0cmluZzplLmZvcm1hdFRpY2sodCl9KSkpfX0pKHRoaXMuc2NhbGUsdGhpcy5nZXRGb3JtYXR0ZXIoKSxlLHRoaXMuYXhpc0V4dGVudCk6Z2h0KHRoaXMuc2NhbGUsdGhpcy5nZXRGb3JtYXR0ZXIoKSxlLHRoaXMuYXhpc0V4dGVudCksdGhpcy5tYWpvclRpY2tzPXQubWFqb3IsdGhpcy5taW5vclRpY2tzPShmdW5jdGlvbiBvKHQsZSxuLGksYT01KXtpZighdC5sZW5ndGh8fCFiaHQpcmV0dXJuIHQ7Y29uc3Qgcj0ieCI9PT1uPzE6LTE7bGV0IHM9bnVsbDtyZXR1cm4gdC5maWx0ZXIoKHQ9Pntjb25zdCBvPWUodCk7Ymh0LmZvbnQ9aTtjb25zdCBsPWJodC5tZWFzdXJlVGV4dCh0LnRpY2tGb3JtYXR0ZWRTdHJpbmcpLGM9IngiPT09bj9sLndpZHRoOmwuYWN0dWFsQm91bmRpbmdCb3hBc2NlbnQtbC5hY3R1YWxCb3VuZGluZ0JveERlc2NlbnQ7cmV0dXJuIG51bGw9PT1zPyEobytyKmM8MHx8KHM9bytyKmMsMCkpOiEocioocytyKmEtbyk+MHx8KHM9bytyKmMsMCkpfSkpfSkodC5taW5vciwodD0+dGhpcy5nZXREb21Qb3ModC52YWx1ZSkpLHRoaXMuYXhpcywiMTFweCBSb2JvdG8sIHNhbnMtc2VyaWYiKX1nZXRGb3JtYXR0ZXIoKXt2YXIgdDtyZXR1cm4gbnVsbCE9PSh0PXRoaXMuY3VzdG9tRm9ybWF0dGVyKSYmdm9pZCAwIT09dD90OnRoaXMuc2NhbGUuZGVmYXVsdEZvcm1hdHRlcn10cmFja0J5TWlub3JUaWNrKHQpe3JldHVybiB0LnZhbHVlfXRyYWNrQnlNYWpvclRpY2sodCl7cmV0dXJuIHQuc3RhcnR9Z2V0RG9tUG9zKHQpe3JldHVybiB0aGlzLnNjYWxlLmZvcndhcmQodGhpcy5heGlzRXh0ZW50LEpndCh0aGlzLmRvbURpbSx0aGlzLmF4aXMpLHQpfXRleHRYUG9zaXRpb24odCl7cmV0dXJuIngiPT09dGhpcy5heGlzP1N0cmluZyh0aGlzLmdldERvbVBvcyh0KSk6IjEwMCUifXRleHRZUG9zaXRpb24odCl7cmV0dXJuIngiPT09dGhpcy5heGlzPyIiOlN0cmluZyh0aGlzLmdldERvbVBvcyh0KSl9Z2V0TWFqb3JYUG9zaXRpb24odCl7cmV0dXJuInkiPT09dGhpcy5heGlzPzA6TWF0aC5taW4odGhpcy5kb21EaW0ud2lkdGgsTWF0aC5tYXgoMCx0aGlzLmdldERvbVBvcyh0LnN0YXJ0KSkpfWdldE1ham9yV2lkdGhTdHJpbmcodCxlLG4pe3JldHVybiJ5Ij09PXRoaXMuYXhpcz8iIjooZXx8IW4/dGhpcy5kb21EaW0ud2lkdGg6dGhpcy5nZXRNYWpvclhQb3NpdGlvbihuKSktdGhpcy5nZXRNYWpvclhQb3NpdGlvbih0KSsicHgifWdldE1ham9yWVBvc2l0aW9uKHQpe3JldHVybiJ4Ij09PXRoaXMuYXhpcz8wOnRoaXMuZG9tRGltLmhlaWdodC1NYXRoLm1pbih0aGlzLmRvbURpbS5oZWlnaHQsTWF0aC5tYXgoMCx0aGlzLmdldERvbVBvcyh0LnN0YXJ0KSkpfWdldE1ham9ySGVpZ2h0U3RyaW5nKHQsZSxuKXtyZXR1cm4ieCI9PT10aGlzLmF4aXM/IiI6KGV8fCFuP3RoaXMuZG9tRGltLmhlaWdodDp0aGlzLmdldE1ham9yWVBvc2l0aW9uKG4pKS10aGlzLmdldE1ham9yWVBvc2l0aW9uKHQpKyJweCJ9a2V5ZG93blByZXZlbnRDbG9zZSh0KXsiRXNjYXBlIiE9PXQua2V5JiZ0LnN0b3BQcm9wYWdhdGlvbigpfWV4dGVudENoYW5nZWQodCxlKXtsZXQgbj1OdW1iZXIodCksbz1OdW1iZXIoZSk7aWYobzxuKXtjb25zdCB0PW47bj1vLG89dH1OdW1iZXIuaXNGaW5pdGUobikmJk51bWJlci5pc0Zpbml0ZShvKSYmdGhpcy5vblZpZXdFeHRlbnRDaGFuZ2UuZW1pdChbbixvXSl9b25BeGlzVXBkYXRlTWVudU9wZW4odCxlLG4pe3QudmFsdWU9U3RyaW5nKG5bMF0pLGUudmFsdWU9U3RyaW5nKG5bMV0pLHQuZm9jdXMoKX1zZXRFZGl0TWVudU9wZW5lZCh0KXt0aGlzLmVkaXRNZW51T3BlbmVkPXR9fU1odC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8TWh0KX0sTWh0Lsm1Y21wPXNvKHt0eXBlOk1odCxzZWxlY3RvcnM6W1sibGluZS1jaGFydC1heGlzIl1dLGlucHV0czp7YXhpc0V4dGVudDoiYXhpc0V4dGVudCIsYXhpczoiYXhpcyIsc2NhbGU6InNjYWxlIixncmlkQ291bnQ6ImdyaWRDb3VudCIsZG9tRGltOiJkb21EaW0iLGN1c3RvbUZvcm1hdHRlcjoiY3VzdG9tRm9ybWF0dGVyIn0sb3V0cHV0czp7b25WaWV3RXh0ZW50Q2hhbmdlOiJvblZpZXdFeHRlbnRDaGFuZ2UifSxmZWF0dXJlczpbcW9dLGRlY2xzOjI2LHZhcnM6MTMsY29uc3RzOltbMSwibGluZSJdLFsxLCJtaW5vciJdLFsxLCJ0aWNrcyJdLFsiY2xhc3MiLCJtaW5vci10aWNrLWxhYmVsIiw0LCJuZ0ZvciIsIm5nRm9yT2YiLCJuZ0ZvclRyYWNrQnkiXSxbIm1hdC1pY29uLWJ1dHRvbiIsIiIsInRpdGxlIiwiQ2xpY2sgdG8gbWFudWFsbHkgc2V0IG1pbiAmIG1heCB2YWx1ZXMiLDMsIm1hdE1lbnVUcmlnZ2VyRm9yIiwibWVudU9wZW5lZCIsIm1lbnVDbG9zZWQiXSxbIm1hdE1lbnVUcmlnZ2VyIiwibWF0TWVudVRyaWdnZXIiXSxbInN2Z0ljb24iLCJlZGl0XzI0cHgiXSxbImNsYXNzIiwibWFqb3IgdGlja3MiLDQsIm5nSWYiXSxbInhQb3NpdGlvbiIsImJlZm9yZSIsMywieVBvc2l0aW9uIl0sWyJtYW51YWxDb250cm9sIiwibWF0TWVudSJdLFsxLCJleHRlbnQtZWRpdC1pbnB1dCIsMywiY2xpY2siLCJrZXlkb3duIl0sWyJ0eXBlIiwibnVtYmVyIiwzLCJ2YWx1ZSJdLFsibWluSW5wdXQiLCIiXSxbIm1heElucHV0IiwiIl0sWzEsImV4dGVudC1lZGl0LWNvbnRyb2wiLDMsImtleWRvd24iXSxbIm1hdC1yYWlzZWQtYnV0dG9uIiwiIiwiY29sb3IiLCJwcmltYXJ5IiwxLCJleHRlbnQtZWRpdC1jaGFuZ2UiLDMsImNsaWNrIl0sWyJtYXQtc3Ryb2tlZC1idXR0b24iLCIiLDEsImV4dGVudC1lZGl0LWNhbmNlbCIsMywiY2xpY2siXSxbMSwibWlub3ItdGljay1sYWJlbCJdLFsxLCJtYWpvciIsInRpY2tzIl0sWzMsIm1ham9yLWxhYmVsIiwibGFzdCIsImxlZnQiLCJ3aWR0aCIsImJvdHRvbSIsImhlaWdodCIsImZvbnQiLCJ0aXRsZSIsNCwibmdGb3IiLCJuZ0Zvck9mIiwibmdGb3JUcmFja0J5Il0sWzMsInRpdGxlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUpe2NvbnN0IHQ9d2YoKTtDZigwLCJkaXYiKSx2ZigxLCJkaXYiLDApLENmKDIsImRpdiIsMSksb2EoKSxDZigzLCJzdmciLDIpLEhtKDQseWh0LDUsNiwiZyIsMyksTWYoKSxhYSgpLENmKDUsImJ1dHRvbiIsNCw1KSxSZigibWVudU9wZW5lZCIsKGZ1bmN0aW9uIGUoKXtQaSh0KTtjb25zdCBvPUZtKDE1KSxpPUZtKDIwKTtyZXR1cm4gbi5vbkF4aXNVcGRhdGVNZW51T3BlbihvLGksbi5heGlzRXh0ZW50KSxuLnNldEVkaXRNZW51T3BlbmVkKCEwKX0pKSgibWVudUNsb3NlZCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5zZXRFZGl0TWVudU9wZW5lZCghMSl9KSksdmYoNywibWF0LWljb24iLDYpLE1mKCksTWYoKSxIbSg4LENodCwyLDIsImRpdiIsNyksTWYoKSxDZig5LCJtYXQtbWVudSIsOCw5KSxDZigxMSwiZGl2IiwxMCksUmYoImNsaWNrIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gZS5zdG9wUHJvcGFnYXRpb24oKX0pKSgia2V5ZG93biIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ua2V5ZG93blByZXZlbnRDbG9zZShlKX0pKSxDZigxMiwibGFiZWwiKSxQdSgxMywibWluIiksTWYoKSx2ZigxNCwiaW5wdXQiLDExLDEyKSxNZigpLENmKDE2LCJkaXYiLDEwKSxSZigiY2xpY2siLChmdW5jdGlvbiB0KGUpe3JldHVybiBlLnN0b3BQcm9wYWdhdGlvbigpfSkpKCJrZXlkb3duIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5rZXlkb3duUHJldmVudENsb3NlKGUpfSkpLENmKDE3LCJsYWJlbCIpLFB1KDE4LCJtYXgiKSxNZigpLHZmKDE5LCJpbnB1dCIsMTEsMTMpLE1mKCksQ2YoMjEsImRpdiIsMTQpLFJmKCJrZXlkb3duIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5rZXlkb3duUHJldmVudENsb3NlKGUpfSkpLENmKDIyLCJidXR0b24iLDE1KSxSZigiY2xpY2siLChmdW5jdGlvbiBlKCl7UGkodCk7Y29uc3Qgbz1GbSgxNSksaT1GbSgyMCksYT1GbSg2KTtyZXR1cm4gbi5leHRlbnRDaGFuZ2VkKG8udmFsdWUsaS52YWx1ZSksYS5jbG9zZU1lbnUoKX0pKSxQdSgyMywiIENoYW5nZSAiKSxNZigpLENmKDI0LCJidXR0b24iLDE2KSxSZigiY2xpY2siLChmdW5jdGlvbiBlKCl7UGkodCk7cmV0dXJuIEZtKDYpLmNsb3NlTWVudSgpfSkpLFB1KDI1LCIgQ2FuY2VsICIpLE1mKCksTWYoKSxNZigpfWlmKDImZSl7Y29uc3QgdD1GbSgxMCk7bXUobi5heGlzKyItYXhpcyBheGlzIiksRGMoNCksYmYoIm5nRm9yT2YiLG4ubWlub3JUaWNrcykoIm5nRm9yVHJhY2tCeSIsbi50cmFja0J5TWlub3JUaWNrKSxEYygxKSxjdSgiZXh0ZW50LWVkaXQtYnV0dG9uIiwhMCkoImV4dGVudC1lZGl0LW1lbnUtb3BlbmVkIixuLmVkaXRNZW51T3BlbmVkKSxiZigibWF0TWVudVRyaWdnZXJGb3IiLHQpLERjKDMpLGJmKCJuZ0lmIixuLm1ham9yVGlja3MubGVuZ3RoKSxEYygxKSxiZigieVBvc2l0aW9uIiwieSI9PT1uLmF4aXM/ImFib3ZlIjoiYmVsb3ciKSxEYyg1KSxiZigidmFsdWUiLG4uYXhpc0V4dGVudFswXSksRGMoNSksYmYoInZhbHVlIixuLmF4aXNFeHRlbnRbMV0pfX0sZGlyZWN0aXZlczpbeHYsTkwscXEsTXEsUHYsanFdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgdHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfVtfbmdob3N0LSVDT01QJV17Y29udGFpbjpzdHJpY3Q7ZGlzcGxheTpmbGV4O292ZXJmbG93OmhpZGRlbn0ubWFqb3ItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCB0ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmaWxsOmN1cnJlbnRDb2xvcjtmb250LXNpemU6MTFweDt1c2VyLXNlbGVjdDpub25lfS5heGlzW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0ubWFqb3JbX25nY29udGVudC0lQ09NUCVdLCAubWlub3JbX25nY29udGVudC0lQ09NUCVde2ZsZXg6MSAwO292ZXJmbG93OmhpZGRlbn0ubGluZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojYWFhO2ZsZXg6MCAwIDFweDtqdXN0aWZ5LWNvbnRlbnQ6c3RyZXRjaH0udGlja3NbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxMDAlO3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjEwMCV9LngtYXhpc1tfbmdjb250ZW50LSVDT01QJV17ZmxleC1kaXJlY3Rpb246Y29sdW1ufS54LWF4aXNbX25nY29udGVudC0lQ09NUCVdICAgLmxpbmVbX25nY29udGVudC0lQ09NUCVde21hcmdpbi1ib3R0b206M3B4fS54LWF4aXNbX25nY29udGVudC0lQ09NUCVdICAgdGV4dFtfbmdjb250ZW50LSVDT01QJV17ZG9taW5hbnQtYmFzZWxpbmU6dGV4dC1iZWZvcmUtZWRnZTt0ZXh0LWFuY2hvcjptaWRkbGV9LngtYXhpc1tfbmdjb250ZW50LSVDT01QJV0gICAudGlja3NbX25nY29udGVudC0lQ09NUCVdey13ZWJraXQtbWFzay1pbWFnZTpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsICMwMDAwIDAlLCAjMDAwIDEwJSwgIzAwMCA5MCUsICMwMDAwIDEwMCUpO21hc2staW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAjMDAwMCAwJSwgIzAwMCAxMCUsICMwMDAgOTAlLCAjMDAwMCAxMDAlKX0ueS1heGlzW19uZ2NvbnRlbnQtJUNPTVAlXXtmbGV4LWRpcmVjdGlvbjpyb3ctcmV2ZXJzZX0ueS1heGlzW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tbGVmdDo1cHh9LnktYXhpc1tfbmdjb250ZW50LSVDT01QJV0gICB0ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtkb21pbmFudC1iYXNlbGluZTpjZW50cmFsO3RleHQtYW5jaG9yOmVuZH0ueS1heGlzW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC50aWNrc1tfbmdjb250ZW50LSVDT01QJV17LXdlYmtpdC1tYXNrLWltYWdlOmxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICMwMDAwIDAlLCAjMDAwIDEwJSwgIzAwMCA5MCUsICMwMDAwIDEwMCUpO21hc2staW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgIzAwMDAgMCUsICMwMDAgMTAlLCAjMDAwIDkwJSwgIzAwMDAgMTAwJSl9LmV4dGVudC1lZGl0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZWVlO2ZvbnQtc2l6ZTowO2hlaWdodDoyNHB4O2xpbmUtaGVpZ2h0OjI0cHg7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6NXB4O3RvcDo1cHg7dmlzaWJpbGl0eTpoaWRkZW47d2lkdGg6MjRweH0uZXh0ZW50LWVkaXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIG1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MTZweDt3aWR0aDoxNnB4O2xpbmUtaGVpZ2h0OjE2cHh9LmV4dGVudC1lZGl0LWlucHV0W19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpjZW50ZXI7Y29sdW1uLWdhcDo1cHg7ZGlzcGxheTpncmlkO2ZvbnQtc2l6ZToxMnB4O2dyaWQtdGVtcGxhdGUtY29sdW1uczozMHB4IG1pbm1heChhdXRvLCAxMDBweCk7aGVpZ2h0OjMwcHg7bWFyZ2luOjEwcHggMjBweH0uZXh0ZW50LWVkaXQtaW5wdXRbX25nY29udGVudC0lQ09NUCVdICAgaW5wdXRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6aW5oZXJpdDtib3JkZXItcmFkaXVzOjRweDtib3JkZXItc3R5bGU6c29saWQ7Y29sb3I6aW5oZXJpdH0uZXh0ZW50LWVkaXQtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpyb3ctcmV2ZXJzZTtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmQ7bWFyZ2luOjEwcHggMjBweH0uZXh0ZW50LWVkaXQtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV0gICBidXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2hlaWdodDozMHB4O2xpbmUtaGVpZ2h0OjEuNDttYXJnaW4tbGVmdDo1cHg7cGFkZGluZzowIDEwcHh9LmF4aXNbX25nY29udGVudC0lQ09NUCVdOmhvdmVyICAgLmV4dGVudC1lZGl0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5heGlzW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cy13aXRoaW4gICAuZXh0ZW50LWVkaXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmV4dGVudC1lZGl0LW1lbnUtb3BlbmVkW19uZ2NvbnRlbnQtJUNPTVAlXXt2aXNpYmlsaXR5OnZpc2libGV9Lm1ham9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZTtvdmVyZmxvdzpoaWRkZW47Y29udGFpbjpzdHJpY3R9Lm1ham9yW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYWpvci1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2JveC1zaXppbmc6Ym9yZGVyLWJveDtkaXNwbGF5OmlubGluZS1mbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOmFic29sdXRlO3doaXRlLXNwYWNlOm5vd3JhcH0ubWFqb3JbX25nY29udGVudC0lQ09NUCVdICAgLm1ham9yLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHNwYW5bX25nY29udGVudC0lQ09NUCVde21heC13aWR0aDoxMDAlfS54LWF4aXNbX25nY29udGVudC0lQ09NUCVdICAgLm1ham9yLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDoxcHggc29saWQgIzllOWU5ZTtwYWRkaW5nOjAgNXB4fS54LWF4aXNbX25nY29udGVudC0lQ09NUCVdICAgLm1ham9yLWxhYmVsLmxhc3RbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1yaWdodDoxcHggc29saWQgIzllOWU5ZX0ueS1heGlzW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYWpvci1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbToxcHggc29saWQgIzllOWU5ZTtoZWlnaHQ6MTAwJTtwYWRkaW5nOjVweCAwO3dpZHRoOjEwMCV9LnktYXhpc1tfbmdjb250ZW50LSVDT01QJV0gICAubWFqb3ItbGFiZWwubGFzdFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcDoxcHggc29saWQgIzllOWU5ZX0ueS1heGlzW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYWpvci1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0gPiBzcGFuW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06cm90YXRlKC05MGRlZyk7dHJhbnNmb3JtLW9yaWdpbjpjZW50ZXJ9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKE1odCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJsaW5lLWNoYXJ0LWF4aXMiLHRlbXBsYXRlVXJsOiJsaW5lX2NoYXJ0X2F4aXNfdmlldy5uZy5odG1sIixzdHlsZVVybHM6WyJsaW5lX2NoYXJ0X2F4aXNfdmlldy5jc3MiXSxjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNofV19XSxudWxsLHtheGlzRXh0ZW50Olt7dHlwZTpSX31dLGF4aXM6W3t0eXBlOlJffV0sc2NhbGU6W3t0eXBlOlJffV0sZ3JpZENvdW50Olt7dHlwZTpSX31dLGRvbURpbTpbe3R5cGU6Ul99XSxjdXN0b21Gb3JtYXR0ZXI6W3t0eXBlOlJffV0sb25WaWV3RXh0ZW50Q2hhbmdlOlt7dHlwZTpFX31dfSk7Y29uc3Qgdmh0PVsic2VyaWVzVmlldyJdLHhodD1bInhBeGlzIl0sT2h0PVsieUF4aXMiXSxQaHQ9WyJjaGFydEVsIl07ZnVuY3Rpb24gd2h0KHQsZSl7aWYoMSZ0JiZ2ZigwLCJsaW5lLWNoYXJ0LWdyaWQtdmlldyIsMTUpLDImdCl7Y29uc3QgdD16ZigpO2JmKCJ2aWV3RXh0ZW50Iix0LnZpZXdCb3gpKCJ4U2NhbGUiLHQueFNjYWxlKSgieVNjYWxlIix0LnlTY2FsZSkoInhHcmlkQ291bnQiLHQuWF9HUklEX0NPVU5UKSgieUdyaWRDb3VudCIsdC5ZX0dSSURfQ09VTlQpKCJkb21EaW0iLHQuZG9tRGltZW5zaW9ucy5tYWluKX19ZnVuY3Rpb24ga2h0KHQsZSl7MSZ0JiYob2EoKSx2ZigwLCJzdmciLG51bGwsMTYpKX1mdW5jdGlvbiBTaHQodCxlKXsxJnQmJnZmKDAsImNhbnZhcyIsbnVsbCwxNil9ZnVuY3Rpb24gRGh0KHQsZSl7aWYoMSZ0JiYoeGYoMCksSG0oMSxraHQsMiwwLCJzdmciLDUpLEhtKDIsU2h0LDIsMCwiY2FudmFzIiw1KSxPZigpKSwyJnQpe2NvbnN0IHQ9emYoKTtEYygxKSxiZigibmdJZiIsdC5nZXRSZW5kZXJlclR5cGUoKT09PXQuUmVuZGVyZXJUeXBlLlNWRyksRGMoMSksYmYoIm5nSWYiLHQuZ2V0UmVuZGVyZXJUeXBlKCk9PT10LlJlbmRlcmVyVHlwZS5XRUJHTCl9fWZ1bmN0aW9uIFJodCh0LGUpe2lmKDEmdCl7Y29uc3QgdD13ZigpO0NmKDAsImxpbmUtY2hhcnQtaW50ZXJhY3RpdmUtdmlldyIsMTcpLFJmKCJvblZpZXdFeHRlbnRDaGFuZ2UiLChmdW5jdGlvbiBlKG4pe1BpKHQpO3JldHVybiB6ZigpLm9uVmlld0JveENoYW5nZWQobil9KSkoIm9uVmlld0V4dGVudFJlc2V0IiwoZnVuY3Rpb24gZSgpe1BpKHQpO3JldHVybiB6ZigpLnZpZXdCb3hSZXNldCgpfSkpLE1mKCl9aWYoMiZ0KXtjb25zdCB0PXpmKCksZT1GbSgxKTtiZigic2VyaWVzRGF0YSIsdC5zZXJpZXNEYXRhKSgic2VyaWVzTWV0YWRhdGFNYXAiLHQuc2VyaWVzTWV0YWRhdGFNYXApKCJ2aWV3RXh0ZW50Iix0LnZpZXdCb3gpKCJ4U2NhbGUiLHQueFNjYWxlKSgieVNjYWxlIix0LnlTY2FsZSkoInRvb2x0aXBPcmlnaW5FbCIsZSkoImRvbURpbSIsdC5kb21EaW1lbnNpb25zLm1haW4pKCJ0b29sdGlwVGVtcGxhdGUiLHQudG9vbHRpcFRlbXBsYXRlKX19Y29uc3QgRWh0PWZ1bmN0aW9uKHQsZSxuLG8pe3JldHVybnt4U2NhbGU6dCx5U2NhbGU6ZSxkb21EaW1lbnNpb246bix2aWV3RXh0ZW50Om99fTtmdW5jdGlvbiBBaHQodCxlKXtpZigxJnQmJihDZigwLCJkaXYiLDE4KSxQZigxLDE5KSxNZigpKSwyJnQpe2NvbnN0IHQ9emYoKTtEYygxKSxiZigibmdUZW1wbGF0ZU91dGxldCIsdC5jdXN0b21WaXNUZW1wbGF0ZSkoIm5nVGVtcGxhdGVPdXRsZXRDb250ZXh0IixzeSgyLEVodCx0LnhTY2FsZSx0LnlTY2FsZSx0LmRvbURpbWVuc2lvbnMubWFpbix0LnZpZXdCb3gpKX19ZnVuY3Rpb24gVGh0KHQsZSl7aWYoMSZ0KXtjb25zdCB0PXdmKCk7Q2YoMCwibGluZS1jaGFydC1heGlzIiwyMCksUmYoIm9uVmlld0V4dGVudENoYW5nZSIsKGZ1bmN0aW9uIGUobil7UGkodCk7cmV0dXJuIHpmKCkub25WaWV3Qm94Q2hhbmdlZEZyb21BeGlzKG4sInkiKX0pKSxNZigpfWlmKDImdCl7Y29uc3QgdD16ZigpO2JmKCJheGlzRXh0ZW50Iix0LnZpZXdCb3gueSkoImN1c3RvbUZvcm1hdHRlciIsdC5jdXN0b21ZRm9ybWF0dGVyKSgiZG9tRGltIix0LmRvbURpbWVuc2lvbnMueUF4aXMpKCJncmlkQ291bnQiLHQuWV9HUklEX0NPVU5UKSgic2NhbGUiLHQueVNjYWxlKX19ZnVuY3Rpb24gTmh0KHQsZSl7aWYoMSZ0KXtjb25zdCB0PXdmKCk7Q2YoMCwibGluZS1jaGFydC1heGlzIiwyMSksUmYoIm9uVmlld0V4dGVudENoYW5nZSIsKGZ1bmN0aW9uIGUobil7UGkodCk7cmV0dXJuIHpmKCkub25WaWV3Qm94Q2hhbmdlZEZyb21BeGlzKG4sIngiKX0pKSxNZigpfWlmKDImdCl7Y29uc3QgdD16ZigpO2JmKCJheGlzRXh0ZW50Iix0LnZpZXdCb3gueCkoImN1c3RvbUZvcm1hdHRlciIsdC5jdXN0b21YRm9ybWF0dGVyKSgiZG9tRGltIix0LmRvbURpbWVuc2lvbnMueEF4aXMpKCJncmlkQ291bnQiLHQuWF9HUklEX0NPVU5UKSgic2NhbGUiLHQueFNjYWxlKX19Y29uc3Qgemh0PWZ1bmN0aW9uKHQsZSxuLG8saSl7cmV0dXJue3hTY2FsZTp0LHlTY2FsZTplLGRvbURpbWVuc2lvbjpuLHZpZXdFeHRlbnQ6byxmb3JtYXR0ZXI6aX19O2Z1bmN0aW9uIElodCh0LGUpe2lmKDEmdCYmKENmKDAsImRpdiIsMTgpLFBmKDEsMTkpLE1mKCkpLDImdCl7Y29uc3QgdD16ZigpO0RjKDEpLGJmKCJuZ1RlbXBsYXRlT3V0bGV0Iix0LmN1c3RvbVhBeGlzVGVtcGxhdGUpKCJuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dCIsbHkoMix6aHQsdC54U2NhbGUsdC55U2NhbGUsdC5kb21EaW1lbnNpb25zLnhBeGlzLHQudmlld0JveCx0LmN1c3RvbVhGb3JtYXR0ZXJ8fHQueFNjYWxlLmRlZmF1bHRGb3JtYXR0ZXIpKX19ZnVuY3Rpb24gSGh0KHQsZSl7MSZ0JiYoQ2YoMCwiZGl2IiwyMiksdmYoMSwic3BhbiIsMjMpLE1mKCkpfWNvbnN0IEZodD1mdW5jdGlvbih0LGUpe3JldHVybntjb250YWluZXI6ITAsImRhcmstbW9kZSI6dCwibGluZS1vbmx5LW1vZGUiOmV9fSxMaHQ9e3g6WzAsMV0seTpbMCwxXX07Y2xhc3MgQmh0e2NvbnN0cnVjdG9yKHQpe3RoaXMuY2hhbmdlRGV0ZWN0b3I9dCx0aGlzLlJlbmRlcmVyVHlwZT1lNix0aGlzLnVzZURhcmtNb2RlPSExLHRoaXMucHJlZmVycmVkUmVuZGVyZXJUeXBlPWU2LldFQkdMLHRoaXMueFNjYWxlVHlwZT1uNi5MSU5FQVIsdGhpcy55U2NhbGVUeXBlPW42LkxJTkVBUix0aGlzLmxpbmVPbmx5PSExLHRoaXMub25WaWV3Qm94T3ZlcnJpZGRlbj1uZXcgVygxKSx0aGlzLmlnbm9yZVlPdXRsaWVycz0hMSx0aGlzLllfR1JJRF9DT1VOVD02LHRoaXMuWF9HUklEX0NPVU5UPTEwLHRoaXMueFNjYWxlPWdydCh0aGlzLnhTY2FsZVR5cGUpLHRoaXMueVNjYWxlPWdydCh0aGlzLnhTY2FsZVR5cGUpLHRoaXMudmlld0JveD1MaHQsdGhpcy5kb21EaW1lbnNpb25zPXttYWluOnt3aWR0aDowLGhlaWdodDowfSx4QXhpczp7d2lkdGg6MCxoZWlnaHQ6MH0seUF4aXM6e3dpZHRoOjAsaGVpZ2h0OjB9fSx0aGlzLnNob3dDaGFydFJlbmRlcmVyRWxlbWVudD0hMCx0aGlzLmxpbmVDaGFydD1udWxsLHRoaXMuaXNEYXRhVXBkYXRlZD0hMSx0aGlzLmlzTWV0YWRhdGFVcGRhdGVkPSExLHRoaXMuaXNGaXhlZFZpZXdCb3hVcGRhdGVkPSExLHRoaXMuaXNWaWV3Qm94T3ZlcnJpZGRlbj0hMSx0aGlzLnVzZURhcmtNb2RlVXBkYXRlZD0hMSx0aGlzLmlzVmlld0JveENoYW5nZWQ9ITAsdGhpcy5zY2FsZVVwZGF0ZWQ9ITAsdGhpcy5pc1JlbmRlcmluZ0NvbnRleHRMb3N0PSExfW5nT25Jbml0KCl7dGhpcy5vblZpZXdCb3hPdmVycmlkZGVuLm5leHQodGhpcy5pc1ZpZXdCb3hPdmVycmlkZGVuKX1uZ09uQ2hhbmdlcyh0KXt0LnhTY2FsZVR5cGUmJih0aGlzLnhTY2FsZT1ncnQodGhpcy54U2NhbGVUeXBlKSx0aGlzLnNjYWxlVXBkYXRlZD0hMCksdC55U2NhbGVUeXBlJiYodGhpcy55U2NhbGU9Z3J0KHRoaXMueVNjYWxlVHlwZSksdGhpcy5zY2FsZVVwZGF0ZWQ9ITApLHQuc2VyaWVzRGF0YSYmKHRoaXMuaXNEYXRhVXBkYXRlZD0hMCksdC5maXhlZFZpZXdCb3gmJih0aGlzLmlzRml4ZWRWaWV3Qm94VXBkYXRlZD0hMCksdC5zZXJpZXNNZXRhZGF0YU1hcCYmKHRoaXMuaXNNZXRhZGF0YVVwZGF0ZWQ9ITApLHQudXNlRGFya01vZGUmJih0aGlzLnVzZURhcmtNb2RlVXBkYXRlZD0hMCksdGhpcy5zY2FsZVVwZGF0ZWQmJnRoaXMuc2V0SXNWaWV3Qm94T3ZlcnJpZGRlbighMSksdGhpcy5pc1ZpZXdCb3hDaGFuZ2VkPXRoaXMuaXNWaWV3Qm94Q2hhbmdlZHx8dGhpcy5zY2FsZVVwZGF0ZWR8fCF0aGlzLmlzVmlld0JveE92ZXJyaWRkZW4mJnRoaXMuc2hvdWxkVXBkYXRlRGVmYXVsdFZpZXdCb3godCksdGhpcy51cGRhdGVMaW5lQ2hhcnQoKX1uZ0FmdGVyVmlld0luaXQoKXt0aGlzLmluaXRpYWxpemVDaGFydCgpLHRoaXMudXBkYXRlTGluZUNoYXJ0KCksdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCl9cmVjb3ZlclJlbmRlcmVySWZOZWVkZWQoKXt0aGlzLmlzUmVuZGVyaW5nQ29udGV4dExvc3QmJiF0aGlzLmRpc2FibGVVcGRhdGUmJih0aGlzLnNob3dDaGFydFJlbmRlcmVyRWxlbWVudD0hMSx0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKSx0aGlzLnNob3dDaGFydFJlbmRlcmVyRWxlbWVudD0hMCx0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKSx0aGlzLmluaXRpYWxpemVDaGFydCgpLHRoaXMuc2NhbGVVcGRhdGVkPSEwLHRoaXMuaXNNZXRhZGF0YVVwZGF0ZWQ9ITAsdGhpcy5pc0RhdGFVcGRhdGVkPSEwLHRoaXMudXNlRGFya01vZGVVcGRhdGVkPSEwLHRoaXMuaXNGaXhlZFZpZXdCb3hVcGRhdGVkPSEwLHRoaXMuaXNWaWV3Qm94Q2hhbmdlZD0hMCx0aGlzLmlzUmVuZGVyaW5nQ29udGV4dExvc3Q9ITEpfW9uVmlld1Jlc2l6ZSgpe3RoaXMubGluZUNoYXJ0JiYodGhpcy5yZWFkQW5kVXBkYXRlRG9tRGltZW5zaW9ucygpLHRoaXMubGluZUNoYXJ0LnJlc2l6ZSh0aGlzLmRvbURpbWVuc2lvbnMubWFpbiksdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCkpfXNob3VsZFVwZGF0ZURlZmF1bHRWaWV3Qm94KHQpe2lmKHQueFNjYWxlVHlwZXx8dC55U2NhbGVUeXBlfHx0Lmlnbm9yZVlPdXRsaWVycylyZXR1cm4hMDtpZih0LnNlcmllc0RhdGEpcmV0dXJuITA7Y29uc3QgZT10LnNlcmllc01ldGFkYXRhTWFwO2lmKGUpe2NvbnN0IHQ9ZS5wcmV2aW91c1ZhbHVlO2lmKE9iamVjdC5rZXlzKHRoaXMuc2VyaWVzTWV0YWRhdGFNYXApLmxlbmd0aCE9PU9iamVjdC5rZXlzKG51bGwhPXQ/dDp7fSkubGVuZ3RoKXJldHVybiEwO2Zvcihjb25zdFtlLG5db2YgT2JqZWN0LmVudHJpZXModGhpcy5zZXJpZXNNZXRhZGF0YU1hcCkpe2NvbnN0IG89dCYmdFtlXTtpZighb3x8bi52aXNpYmxlIT09by52aXNpYmxlKXJldHVybiEwfX1yZXR1cm4hMX1vbkNvbnRleHRMb3N0KCl7dGhpcy5pc1JlbmRlcmluZ0NvbnRleHRMb3N0PSEwLHRoaXMubGluZUNoYXJ0JiYodGhpcy5saW5lQ2hhcnQuZGlzcG9zZSgpLHRoaXMubGluZUNoYXJ0PW51bGwpfXRyaWdnZXJDb250ZXh0TG9zdEZvclRlc3QoKXt0aGlzLm9uQ29udGV4dExvc3QoKX1nZXRMaW5lQ2hhcnRGb3JUZXN0KCl7cmV0dXJuIHRoaXMubGluZUNoYXJ0fWluaXRpYWxpemVDaGFydCgpe3RoaXMubGluZUNoYXJ0JiZ0aGlzLmxpbmVDaGFydC5kaXNwb3NlKCk7Y29uc3QgdD10aGlzLmdldFJlbmRlcmVyVHlwZSgpLGU9e29uRHJhd0VuZDooKT0+e30sb25Db250ZXh0TG9zdDp0aGlzLm9uQ29udGV4dExvc3QuYmluZCh0aGlzKX07bGV0IG49bnVsbDtzd2l0Y2godGhpcy5yZWFkQW5kVXBkYXRlRG9tRGltZW5zaW9ucygpLHQpe2Nhc2UgZTYuU1ZHOm49e3R5cGU6ZTYuU1ZHLGNvbnRhaW5lcjp0aGlzLmNoYXJ0RWwubmF0aXZlRWxlbWVudCxjYWxsYmFja3M6ZSxkb21EaW1lbnNpb246dGhpcy5kb21EaW1lbnNpb25zLm1haW4sdXNlRGFya01vZGU6dGhpcy51c2VEYXJrTW9kZX07YnJlYWs7Y2FzZSBlNi5XRUJHTDpuPXt0eXBlOmU2LldFQkdMLGNvbnRhaW5lcjp0aGlzLmNoYXJ0RWwubmF0aXZlRWxlbWVudCxkZXZpY2VQaXhlbFJhdGlvOndpbmRvdy5kZXZpY2VQaXhlbFJhdGlvLGNhbGxiYWNrczplLGRvbURpbWVuc2lvbjp0aGlzLmRvbURpbWVuc2lvbnMubWFpbix1c2VEYXJrTW9kZTp0aGlzLnVzZURhcmtNb2RlfTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgPGxpbmUtY2hhcnQ+IGRvZXMgbm90IHlldCBzdXBwb3J0IHJlbmRlcmVyVHlwZTogJHt0fWApfWNvbnN0IG89dCE9PWU2LlNWRyYmQ3J0KCk7dGhpcy5saW5lQ2hhcnQ9bmV3KG8/WGd0OkdndCkobil9bmdPbkRlc3Ryb3koKXt0aGlzLmxpbmVDaGFydCYmdGhpcy5saW5lQ2hhcnQuZGlzcG9zZSgpfWdldFJlbmRlcmVyVHlwZSgpe3JldHVybiBLZ3QodGhpcy5wcmVmZXJyZWRSZW5kZXJlclR5cGUpfXJlYWRBbmRVcGRhdGVEb21EaW1lbnNpb25zKCl7dGhpcy5kb21EaW1lbnNpb25zPXttYWluOnt3aWR0aDp0aGlzLnNlcmllc1ZpZXcubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aCxoZWlnaHQ6dGhpcy5zZXJpZXNWaWV3Lm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0fSx4QXhpczp7d2lkdGg6dGhpcy54QXhpcy5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoLGhlaWdodDp0aGlzLnhBeGlzLm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0fSx5QXhpczp7d2lkdGg6dGhpcy55QXhpcy5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoLGhlaWdodDp0aGlzLnlBeGlzLm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0fX19dXBkYXRlTGluZUNoYXJ0KCl7dmFyIHQsZTtpZih0aGlzLnJlY292ZXJSZW5kZXJlcklmTmVlZGVkKCksIXRoaXMubGluZUNoYXJ0fHx0aGlzLmRpc2FibGVVcGRhdGUpcmV0dXJuO2lmKHRoaXMuc2NhbGVVcGRhdGVkJiYodGhpcy5zY2FsZVVwZGF0ZWQ9ITEsdGhpcy5saW5lQ2hhcnQuc2V0WFNjYWxlVHlwZSh0aGlzLnhTY2FsZVR5cGUpLHRoaXMubGluZUNoYXJ0LnNldFlTY2FsZVR5cGUodGhpcy55U2NhbGVUeXBlKSksdGhpcy5pc01ldGFkYXRhVXBkYXRlZCYmKHRoaXMuaXNNZXRhZGF0YVVwZGF0ZWQ9ITEsdGhpcy5saW5lQ2hhcnQuc2V0TWV0YWRhdGEodGhpcy5zZXJpZXNNZXRhZGF0YU1hcCkpLHRoaXMuaXNEYXRhVXBkYXRlZCYmKHRoaXMuaXNEYXRhVXBkYXRlZD0hMSx0aGlzLmxpbmVDaGFydC5zZXREYXRhKHRoaXMuc2VyaWVzRGF0YSkpLHRoaXMudXNlRGFya01vZGVVcGRhdGVkJiYodGhpcy51c2VEYXJrTW9kZVVwZGF0ZWQ9ITEsdGhpcy5saW5lQ2hhcnQuc2V0VXNlRGFya01vZGUodGhpcy51c2VEYXJrTW9kZSkpLCF0aGlzLmlzVmlld0JveE92ZXJyaWRkZW4mJnRoaXMuZml4ZWRWaWV3Qm94KXRoaXMudmlld0JveD10aGlzLmZpeGVkVmlld0JveDtlbHNlIGlmKCF0aGlzLmlzVmlld0JveE92ZXJyaWRkZW4mJnRoaXMuaXNWaWV3Qm94Q2hhbmdlZCl7Y29uc3Qgbj0oZnVuY3Rpb24gbyh0LGUsbixpLGEpe2xldCByPW51bGwscz1udWxsLGw9W107Zm9yKGNvbnN0e2lkOm4scG9pbnRzOm99b2YgdCl7Y29uc3QgdD1lW25dO2lmKHQmJiF0LmF1eCYmdC52aXNpYmxlKWZvcihsZXQgdD0wO3Q8by5sZW5ndGg7dCsrKXtjb25zdHt4OmUseTpufT1vW3RdO2koZSkmJihyPW51bGw9PT1yfHxlPHI/ZTpyLHM9bnVsbD09PXN8fGU+cz9lOnMpLGEobikmJmwucHVzaChuKX19bC5zb3J0KHU2KTtsZXQgYz1sWzBdLGQ9bFtsLmxlbmd0aC0xXTtyZXR1cm4gbiYmbC5sZW5ndGg+MiYmKGM9bFtNYXRoLmNlaWwoLjA1KihsLmxlbmd0aC0xKSldLGQ9bFtNYXRoLmZsb29yKC45NSoobC5sZW5ndGgtMSkpXSkse3g6bnVsbCE9PXImJm51bGwhPT1zP1tyLHNdOnZvaWQgMCx5OnZvaWQgMCE9PWMmJnZvaWQgMCE9PWQ/W2MsZF06dm9pZCAwfX0pKHRoaXMuc2VyaWVzRGF0YSx0aGlzLnNlcmllc01ldGFkYXRhTWFwLHRoaXMuaWdub3JlWU91dGxpZXJzLHRoaXMueFNjYWxlLmlzU2FmZU51bWJlcix0aGlzLnlTY2FsZS5pc1NhZmVOdW1iZXIpO3RoaXMudmlld0JveD17eDp0aGlzLnhTY2FsZS5uaWNlRG9tYWluKG51bGwhPT0odD1uLngpJiZ2b2lkIDAhPT10P3Q6TGh0LngpLHk6dGhpcy55U2NhbGUubmljZURvbWFpbihudWxsIT09KGU9bi55KSYmdm9pZCAwIT09ZT9lOkxodC55KX19KHRoaXMuaXNGaXhlZFZpZXdCb3hVcGRhdGVkfHx0aGlzLmlzVmlld0JveENoYW5nZWQpJiYodGhpcy5pc0ZpeGVkVmlld0JveFVwZGF0ZWQ9ITEsdGhpcy5pc1ZpZXdCb3hDaGFuZ2VkPSExLHRoaXMubGluZUNoYXJ0LnNldFZpZXdCb3godGhpcy52aWV3Qm94KSl9b25WaWV3Qm94Q2hhbmdlZCh7ZGF0YUV4dGVudDp0fSl7dGhpcy5zZXRJc1ZpZXdCb3hPdmVycmlkZGVuKCEwKSx0aGlzLmlzVmlld0JveENoYW5nZWQ9ITAsdGhpcy52aWV3Qm94PXQsdGhpcy51cGRhdGVMaW5lQ2hhcnQoKX12aWV3Qm94UmVzZXQoKXt0aGlzLnNldElzVmlld0JveE92ZXJyaWRkZW4oITEpLHRoaXMuaXNWaWV3Qm94Q2hhbmdlZD0hMCx0aGlzLnVwZGF0ZUxpbmVDaGFydCgpfXNldElzVmlld0JveE92ZXJyaWRkZW4odCl7Y29uc3QgZT10aGlzLmlzVmlld0JveE92ZXJyaWRkZW47dGhpcy5pc1ZpZXdCb3hPdmVycmlkZGVuPXQsZSE9PXQmJnRoaXMub25WaWV3Qm94T3ZlcnJpZGRlbi5uZXh0KHQpfWdldElzVmlld0JveE92ZXJyaWRkZW4oKXtyZXR1cm4gdGhpcy5vblZpZXdCb3hPdmVycmlkZGVufW9uVmlld0JveENoYW5nZWRGcm9tQXhpcyh0LGUpe2NvbnN0IG49T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHRoaXMudmlld0JveCkse1tlXTp0fSk7dGhpcy5vblZpZXdCb3hDaGFuZ2VkKHtkYXRhRXh0ZW50Om59KX19Qmh0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxCaHQpKGdmKE9iKSl9LEJodC7JtWNtcD1zbyh7dHlwZTpCaHQsc2VsZWN0b3JzOltbImxpbmUtY2hhcnQiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJihWeSh2aHQsNyxLaCksVnkoeGh0LDcsS2gpLFZ5KE9odCw3LEtoKSxWeShQaHQsNSxLaCkpLDImZSl7bGV0IHQ7QnkodD1VeSgpKSYmKG4uc2VyaWVzVmlldz10LmZpcnN0KSxCeSh0PVV5KCkpJiYobi54QXhpcz10LmZpcnN0KSxCeSh0PVV5KCkpJiYobi55QXhpcz10LmZpcnN0KSxCeSh0PVV5KCkpJiYobi5jaGFydEVsPXQuZmlyc3QpfX0saW5wdXRzOntjdXN0b21WaXNUZW1wbGF0ZToiY3VzdG9tVmlzVGVtcGxhdGUiLGN1c3RvbVhBeGlzVGVtcGxhdGU6ImN1c3RvbVhBeGlzVGVtcGxhdGUiLHVzZURhcmtNb2RlOiJ1c2VEYXJrTW9kZSIscHJlZmVycmVkUmVuZGVyZXJUeXBlOiJwcmVmZXJyZWRSZW5kZXJlclR5cGUiLHNlcmllc0RhdGE6InNlcmllc0RhdGEiLGZpeGVkVmlld0JveDoiZml4ZWRWaWV3Qm94IixzZXJpZXNNZXRhZGF0YU1hcDoic2VyaWVzTWV0YWRhdGFNYXAiLHhTY2FsZVR5cGU6InhTY2FsZVR5cGUiLHlTY2FsZVR5cGU6InlTY2FsZVR5cGUiLGN1c3RvbVhGb3JtYXR0ZXI6ImN1c3RvbVhGb3JtYXR0ZXIiLGN1c3RvbVlGb3JtYXR0ZXI6ImN1c3RvbVlGb3JtYXR0ZXIiLHRvb2x0aXBUZW1wbGF0ZToidG9vbHRpcFRlbXBsYXRlIixsaW5lT25seToibGluZU9ubHkiLGRpc2FibGVVcGRhdGU6ImRpc2FibGVVcGRhdGUiLGlnbm9yZVlPdXRsaWVyczoiaWdub3JlWU91dGxpZXJzIn0sZmVhdHVyZXM6W3FvXSxkZWNsczoxNix2YXJzOjEzLGNvbnN0czpbWyJkZXRlY3RSZXNpemUiLCIiLCJjZGtPdmVybGF5T3JpZ2luIiwiIiwzLCJuZ0NsYXNzIiwicmVzaXplRXZlbnREZWJvdW5jZVBlcmlvZEluTXMiLCJvblJlc2l6ZSJdLFsib3ZlcmxheVRhcmdldCIsImNka092ZXJsYXlPcmlnaW4iXSxbMSwic2VyaWVzLXZpZXciXSxbInNlcmllc1ZpZXciLCIiXSxbMywidmlld0V4dGVudCIsInhTY2FsZSIsInlTY2FsZSIsInhHcmlkQ291bnQiLCJ5R3JpZENvdW50IiwiZG9tRGltIiw0LCJuZ0lmIl0sWzQsIm5nSWYiXSxbMywic2VyaWVzRGF0YSIsInNlcmllc01ldGFkYXRhTWFwIiwidmlld0V4dGVudCIsInhTY2FsZSIsInlTY2FsZSIsInRvb2x0aXBPcmlnaW5FbCIsImRvbURpbSIsInRvb2x0aXBUZW1wbGF0ZSIsIm9uVmlld0V4dGVudENoYW5nZSIsIm9uVmlld0V4dGVudFJlc2V0Iiw0LCJuZ0lmIl0sWyJjbGFzcyIsImN1c3RvbS12aXMiLDQsIm5nSWYiXSxbMSwieS1heGlzIl0sWyJ5QXhpcyIsIiJdLFsiYXhpcyIsInkiLDMsImF4aXNFeHRlbnQiLCJjdXN0b21Gb3JtYXR0ZXIiLCJkb21EaW0iLCJncmlkQ291bnQiLCJzY2FsZSIsIm9uVmlld0V4dGVudENoYW5nZSIsNCwibmdJZiJdLFsxLCJ4LWF4aXMiXSxbInhBeGlzIiwiIl0sWyJheGlzIiwieCIsMywiYXhpc0V4dGVudCIsImN1c3RvbUZvcm1hdHRlciIsImRvbURpbSIsImdyaWRDb3VudCIsInNjYWxlIiwib25WaWV3RXh0ZW50Q2hhbmdlIiw0LCJuZ0lmIl0sWyJjbGFzcyIsImRvdCIsNCwibmdJZiJdLFszLCJ2aWV3RXh0ZW50IiwieFNjYWxlIiwieVNjYWxlIiwieEdyaWRDb3VudCIsInlHcmlkQ291bnQiLCJkb21EaW0iXSxbImNoYXJ0RWwiLCIiXSxbMywic2VyaWVzRGF0YSIsInNlcmllc01ldGFkYXRhTWFwIiwidmlld0V4dGVudCIsInhTY2FsZSIsInlTY2FsZSIsInRvb2x0aXBPcmlnaW5FbCIsImRvbURpbSIsInRvb2x0aXBUZW1wbGF0ZSIsIm9uVmlld0V4dGVudENoYW5nZSIsIm9uVmlld0V4dGVudFJlc2V0Il0sWzEsImN1c3RvbS12aXMiXSxbMywibmdUZW1wbGF0ZU91dGxldCIsIm5nVGVtcGxhdGVPdXRsZXRDb250ZXh0Il0sWyJheGlzIiwieSIsMywiYXhpc0V4dGVudCIsImN1c3RvbUZvcm1hdHRlciIsImRvbURpbSIsImdyaWRDb3VudCIsInNjYWxlIiwib25WaWV3RXh0ZW50Q2hhbmdlIl0sWyJheGlzIiwieCIsMywiYXhpc0V4dGVudCIsImN1c3RvbUZvcm1hdHRlciIsImRvbURpbSIsImdyaWRDb3VudCIsInNjYWxlIiwib25WaWV3RXh0ZW50Q2hhbmdlIl0sWzEsImRvdCJdLFsxLCJyZWN0Il1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihDZigwLCJkaXYiLDAsMSksUmYoIm9uUmVzaXplIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uVmlld1Jlc2l6ZSgpfSkpLENmKDIsImRpdiIsMiwzKSxIbSg0LHdodCwxLDYsImxpbmUtY2hhcnQtZ3JpZC12aWV3Iiw0KSxIbSg1LERodCwzLDIsIm5nLWNvbnRhaW5lciIsNSksSG0oNixSaHQsMSw4LCJsaW5lLWNoYXJ0LWludGVyYWN0aXZlLXZpZXciLDYpLEhtKDcsQWh0LDIsNywiZGl2Iiw3KSxNZigpLENmKDgsImRpdiIsOCw5KSxIbSgxMCxUaHQsMSw1LCJsaW5lLWNoYXJ0LWF4aXMiLDEwKSxNZigpLENmKDExLCJkaXYiLDExLDEyKSxIbSgxMyxOaHQsMSw1LCJsaW5lLWNoYXJ0LWF4aXMiLDEzKSxIbSgxNCxJaHQsMiw4LCJkaXYiLDcpLE1mKCksSG0oMTUsSGh0LDIsMCwiZGl2IiwxNCksTWYoKSksMiZlJiYoYmYoIm5nQ2xhc3MiLGF5KDEwLEZodCxuLnVzZURhcmtNb2RlLG4ubGluZU9ubHkpKSgicmVzaXplRXZlbnREZWJvdW5jZVBlcmlvZEluTXMiLDApLERjKDQpLGJmKCJuZ0lmIiwhbi5saW5lT25seSksRGMoMSksYmYoIm5nSWYiLG4uc2hvd0NoYXJ0UmVuZGVyZXJFbGVtZW50KSxEYygxKSxiZigibmdJZiIsIW4ubGluZU9ubHkpLERjKDEpLGJmKCJuZ0lmIixuLmN1c3RvbVZpc1RlbXBsYXRlKSxEYygzKSxiZigibmdJZiIsIW4ubGluZU9ubHkpLERjKDMpLGJmKCJuZ0lmIiwhbi5saW5lT25seSksRGMoMSksYmYoIm5nSWYiLG4uY3VzdG9tWEF4aXNUZW1wbGF0ZSksRGMoMSksYmYoIm5nSWYiLCFuLmxpbmVPbmx5KSl9LGRpcmVjdGl2ZXM6WyRRLCRCLEN2LFB2LGVodCx1aHQsSXYsTWh0XSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX1bX25naG9zdC0lQ09NUCVde2NvbnRhaW46c3RyaWN0O2Rpc3BsYXk6aW5saW5lLWJsb2NrfVtfbmdob3N0LSVDT01QJV0gICAuY3VzdG9tLXZpc1tfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZX0uY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOmluaGVyaXQ7ZGlzcGxheTpncmlkO2hlaWdodDoxMDAlO292ZXJmbG93OmhpZGRlbjt3aWR0aDoxMDAlO2dyaWQtdGVtcGxhdGUtYXJlYXM6InlheGlzIHNlcmllcyIgImRvdCB4YXhpcyI7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjUwcHggMWZyO2dyaWQtYXV0by1yb3dzOjFmciAzMHB4fS5jb250YWluZXIuZGFyay1tb2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5jb250YWluZXIubGluZS1vbmx5LW1vZGVbX25nY29udGVudC0lQ09NUCVde2dyaWQtdGVtcGxhdGUtY29sdW1uczowIDFmcjtncmlkLWF1dG8tcm93czoxZnIgMH0uc2VyaWVzLXZpZXdbX25nY29udGVudC0lQ09NUCVde2dyaWQtYXJlYTpzZXJpZXM7cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3c6aGlkZGVufS5zZXJpZXMtdmlld1tfbmdjb250ZW50LSVDT01QJV0gICAuY3VzdG9tLXZpc1tfbmdjb250ZW50LSVDT01QJV0sIC5zZXJpZXMtdmlld1tfbmdjb250ZW50LSVDT01QJV0gICBjYW52YXNbX25nY29udGVudC0lQ09NUCVdLCAuc2VyaWVzLXZpZXdbX25nY29udGVudC0lQ09NUCVdICAgc3ZnW19uZ2NvbnRlbnQtJUNPTVAlXSwgLnNlcmllcy12aWV3W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGxpbmUtY2hhcnQtZ3JpZC12aWV3W19uZ2NvbnRlbnQtJUNPTVAlXSwgLnNlcmllcy12aWV3W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGxpbmUtY2hhcnQtaW50ZXJhY3RpdmUtdmlld1tfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEwMCU7bGVmdDowO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO3dpZHRoOjEwMCV9LngtYXhpc1tfbmdjb250ZW50LSVDT01QJV0gICAuY3VzdG9tLXZpc1tfbmdjb250ZW50LSVDT01QJV0sIC55LWF4aXNbX25nY29udGVudC0lQ09NUCVdICAgLmN1c3RvbS12aXNbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxMDAlO2xlZnQ6MDtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7d2lkdGg6MTAwJTstd2Via2l0LW1hc2staW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAjMDAwMCAwJSwgIzAwMCAxMCUsICMwMDAgOTAlLCAjMDAwMCAxMDAlKTttYXNrLWltYWdlOmxpbmVhci1ncmFkaWVudCh0byByaWdodCwgIzAwMDAgMCUsICMwMDAgMTAlLCAjMDAwIDkwJSwgIzAwMDAgMTAwJSl9LngtYXhpc1tfbmdjb250ZW50LSVDT01QJV0gICBsaW5lLWNoYXJ0LWF4aXNbX25nY29udGVudC0lQ09NUCVdLCAueS1heGlzW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGxpbmUtY2hhcnQtYXhpc1tfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEwMCV9LngtYXhpc1tfbmdjb250ZW50LSVDT01QJV17Z3JpZC1hcmVhOnhheGlzO3Bvc2l0aW9uOnJlbGF0aXZlfS55LWF4aXNbX25nY29udGVudC0lQ09NUCVde2dyaWQtYXJlYTp5YXhpc30uZG90W19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O2Rpc3BsYXk6ZmxleDtncmlkLWFyZWE6ZG90O2p1c3RpZnktY29udGVudDpmbGV4LWVuZH0uZG90W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5yZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MXB4O3dpZHRoOjFweDtiYWNrZ3JvdW5kLWNvbG9yOiNhYWF9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEJodCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJsaW5lLWNoYXJ0Iix0ZW1wbGF0ZVVybDoibGluZV9jaGFydF9jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsibGluZV9jaGFydF9jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOk9ifV19KSx7c2VyaWVzVmlldzpbe3R5cGU6YXIsYXJnczpbInNlcmllc1ZpZXciLHtzdGF0aWM6ITAscmVhZDpLaH1dfV0seEF4aXM6W3t0eXBlOmFyLGFyZ3M6WyJ4QXhpcyIse3N0YXRpYzohMCxyZWFkOktofV19XSx5QXhpczpbe3R5cGU6YXIsYXJnczpbInlBeGlzIix7c3RhdGljOiEwLHJlYWQ6S2h9XX1dLGNoYXJ0RWw6W3t0eXBlOmFyLGFyZ3M6WyJjaGFydEVsIix7c3RhdGljOiExLHJlYWQ6S2h9XX1dLGN1c3RvbVZpc1RlbXBsYXRlOlt7dHlwZTpSX31dLGN1c3RvbVhBeGlzVGVtcGxhdGU6W3t0eXBlOlJffV0sdXNlRGFya01vZGU6W3t0eXBlOlJffV0scHJlZmVycmVkUmVuZGVyZXJUeXBlOlt7dHlwZTpSX31dLHNlcmllc0RhdGE6W3t0eXBlOlJffV0sZml4ZWRWaWV3Qm94Olt7dHlwZTpSX31dLHNlcmllc01ldGFkYXRhTWFwOlt7dHlwZTpSX31dLHhTY2FsZVR5cGU6W3t0eXBlOlJffV0seVNjYWxlVHlwZTpbe3R5cGU6Ul99XSxjdXN0b21YRm9ybWF0dGVyOlt7dHlwZTpSX31dLGN1c3RvbVlGb3JtYXR0ZXI6W3t0eXBlOlJffV0sdG9vbHRpcFRlbXBsYXRlOlt7dHlwZTpSX31dLGxpbmVPbmx5Olt7dHlwZTpSX31dLGRpc2FibGVVcGRhdGU6W3t0eXBlOlJffV0saWdub3JlWU91dGxpZXJzOlt7dHlwZTpSX31dfSk7Y2xhc3MgVmh0e31WaHQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFZodCl9LFZodC7JtWNtcD1zbyh7dHlwZTpWaHQsc2VsZWN0b3JzOltbInZpcy1zZWxlY3RlZC10aW1lLWNsaXBwZWQiXV0saW5wdXRzOntzZWxlY3RlZFRpbWU6InNlbGVjdGVkVGltZSJ9LGRlY2xzOjEsdmFyczowLGNvbnN0czpbWyJzdmdJY29uIiwiaW5mb19vdXRsaW5lXzI0cHgiLCJ0aXRsZSIsIkxpbmtlZCBzdGVwIGlzIG5vdCBmb3VuZCBpbiB0aGlzIHZpc3VhbGl6YXRpb24uIFdlIGhpZ2hsaWdodGVkIHRoZSBjbG9zZXN0IHN0ZXAgZm9yIHlvdS4iXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmdmYoMCwibWF0LWljb24iLDApfSxkaXJlY3RpdmVzOltNcV0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCB0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9W19uZ2hvc3QtJUNPTVAlXXtjb2xvcjojZDMyZjJmO2hlaWdodDoxZW07bGluZS1oZWlnaHQ6MDt3aWR0aDoxZW19Ym9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVde2NvbG9yOiNkMzJmMmZ9W19uZ2hvc3QtJUNPTVAlXSAgIG1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfSddLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihWaHQsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoidmlzLXNlbGVjdGVkLXRpbWUtY2xpcHBlZCIsdGVtcGxhdGU6J1xuICAgIDxtYXQtaWNvblxuICAgICAgc3ZnSWNvbj0iaW5mb19vdXRsaW5lXzI0cHgiXG4gICAgICB0aXRsZT0iTGlua2VkIHN0ZXAgaXMgbm90IGZvdW5kIGluIHRoaXMgdmlzdWFsaXphdGlvbi4gV2UgaGlnaGxpZ2h0ZWQgdGhlIGNsb3Nlc3Qgc3RlcCBmb3IgeW91LiJcbiAgICA+PC9tYXQtaWNvbj5cbiAgJyxzdHlsZVVybHM6WyJ2aXNfc2VsZWN0ZWRfdGltZV9jbGlwcGVkX2NvbXBvbmVudC5jc3MiXSxjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNofV19XSxudWxsLHtzZWxlY3RlZFRpbWU6W3t0eXBlOlJffV19KTtjbGFzcyBqaHR7fWZ1bmN0aW9uIFVodCh0LGUpezEmdCYmdmYoMCwidmlzLXNlbGVjdGVkLXRpbWUtY2xpcHBlZCIpfWZ1bmN0aW9uIFdodCh0LGUpezEmdCYmdmYoMCwibWF0LXNwaW5uZXIiLDIzKX1mdW5jdGlvbiBHaHQodCxlKXsxJnQmJihDZigwLCJ0aCIpLFB1KDEsIlNtb290aGVkIiksTWYoKSl9ZnVuY3Rpb24gWWh0KHQsZSl7aWYoMSZ0JiYoeGYoMCksdmYoMSwidGItZXhwZXJpbWVudC1hbGlhcyIsMjkpLFB1KDIsIi8iKSxPZigpKSwyJnQpe2NvbnN0IHQ9emYoKS4kaW1wbGljaXQ7RGMoMSksYmYoImFsaWFzIix0Lm1ldGFkYXRhLmFsaWFzKX19ZnVuY3Rpb24gcWh0KHQsZSl7aWYoMSZ0JiYoQ2YoMCwidGQiKSxQdSgxKSxNZigpKSwyJnQpe2NvbnN0IHQ9emYoKS4kaW1wbGljaXQsZT16ZigyKTtEYygxKSxrdSgiICIsZS52YWx1ZUZvcm1hdHRlci5mb3JtYXRTaG9ydCh0LnBvaW50LnkpLCIgIil9fWZ1bmN0aW9uIFpodCh0LGUpe2lmKDEmdCYmKHhmKDApLENmKDEsInRyIiwyNyksQ2YoMiwidGQiLDI4KSx2ZigzLCJzcGFuIiksTWYoKSxDZig0LCJ0ZCIsMSksSG0oNSxZaHQsMywxLCJuZy1jb250YWluZXIiLDMpLFB1KDYpLE1mKCksSG0oNyxxaHQsMiwxLCJ0ZCIsMyksQ2YoOCwidGQiKSxQdSg5KSxNZigpLENmKDEwLCJ0ZCIpLFB1KDExKSxNZigpLENmKDEyLCJ0ZCIpLFB1KDEzKSxfeSgxNCwiZGF0ZSIpLE1mKCksQ2YoMTUsInRkIiksUHUoMTYpLE1mKCksTWYoKSxPZigpKSwyJnQpe2NvbnN0IHQ9ZS4kaW1wbGljaXQsbj16ZigyKTtEYygxKSxjdSgiY2xvc2VzdCIsdC5tZXRhZGF0YS5jbG9zZXN0KSxEYygyKSxsdSgiYmFja2dyb3VuZC1jb2xvciIsdC5tZXRhZGF0YS5jb2xvciksRGMoMiksYmYoIm5nSWYiLHQubWV0YWRhdGEuYWxpYXMpLERjKDEpLGt1KCIiLHQubWV0YWRhdGEuZGlzcGxheU5hbWUsIiAiKSxEYygxKSxiZigibmdJZiIsbi5zbW9vdGhpbmdFbmFibGVkKSxEYygyKSx3dShuLnZhbHVlRm9ybWF0dGVyLmZvcm1hdFNob3J0KHQucG9pbnQudmFsdWUpKSxEYygyKSx3dShuLnN0ZXBGb3JtYXR0ZXIuZm9ybWF0U2hvcnQodC5wb2ludC5zdGVwKSksRGMoMiksd3UoTXkoMTQsMTEsdC5wb2ludC53YWxsVGltZSwic2hvcnQiKSksRGMoMyksa3UoIiAiLG4ucmVsYXRpdmVYRm9ybWF0dGVyLmZvcm1hdFJlYWRhYmxlKHQucG9pbnQucmVsYXRpdmVUaW1lSW5NcyksIiAiKX19ZnVuY3Rpb24gWGh0KHQsZSl7aWYoMSZ0JiYoQ2YoMCwidGFibGUiLDI0KSxDZigxLCJ0aGVhZCIpLENmKDIsInRyIiksdmYoMywidGgiLDI1KSxDZig0LCJ0aCIpLFB1KDUsIlJ1biIpLE1mKCksSG0oNixHaHQsMiwwLCJ0aCIsMyksQ2YoNywidGgiKSxQdSg4LCJWYWx1ZSIpLE1mKCksQ2YoOSwidGgiKSxQdSgxMCwiU3RlcCIpLE1mKCksQ2YoMTEsInRoIiksUHUoMTIsIlRpbWUiKSxNZigpLENmKDEzLCJ0aCIpLFB1KDE0LCJSZWxhdGl2ZSIpLE1mKCksTWYoKSxNZigpLENmKDE1LCJ0Ym9keSIpLEhtKDE2LFpodCwxNywxNCwibmctY29udGFpbmVyIiwyNiksTWYoKSxNZigpKSwyJnQpe2NvbnN0IHQ9ZS5kYXRhLG49ZS5jdXJzb3JMb2NhdGlvbkluRGF0YUNvb3JkLG89emYoKTtEYyg2KSxiZigibmdJZiIsby5zbW9vdGhpbmdFbmFibGVkKSxEYygxMCksYmYoIm5nRm9yT2YiLG8uZ2V0Q3Vyc29yQXdhcmVUb29sdGlwRGF0YSh0LG4pKSgibmdGb3JUcmFja0J5IixvLnRyYWNrQnlUb29sdGlwRGF0dW0pfX1qaHQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGpodCl9LGpodC7JtWNtcD1zbyh7dHlwZTpqaHQsc2VsZWN0b3JzOltbImxpbmtlZC10aW1lLWZvYiJdXSxpbnB1dHM6e3N0ZXA6InN0ZXAifSxkZWNsczozLHZhcnM6Myx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoQ2YoMCwic3BhbiIpLFB1KDEpLF95KDIsIm51bWJlciIpLE1mKCkpLDImZSYmKERjKDEpLHd1KEN5KDIsMSxuLnN0ZXApKSl9LHBpcGVzOlskdl0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCB0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9W19uZ2hvc3QtJUNPTVAlXXtkaXNwbGF5OmlubGluZS1ibG9ja31zcGFuW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNlMGUwZTA7Ym9yZGVyLXJhZGl1czoyNXB4O2NvbG9yOmluaGVyaXQ7ZGlzcGxheTppbmxpbmUtYmxvY2s7Zm9udC1zaXplOjExcHg7cGFkZGluZzoycHggNXB4fXNwYW5bX25nY29udGVudC0lQ09NUCVdOmhvdmVyLCBzcGFuW19uZ2NvbnRlbnQtJUNPTVAlXTphY3RpdmV7Ym9yZGVyLWNvbG9yOiM2MTYxNjF9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgc3Bhbltfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIHNwYW5bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6IzYxNjE2MTtib3JkZXItY29sb3I6IzhlOThhM31ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICBzcGFuW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgc3Bhbltfbmdjb250ZW50LSVDT01QJV06aG92ZXIsIGJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIHNwYW5bX25nY29udGVudC0lQ09NUCVdOmFjdGl2ZSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgc3Bhbltfbmdjb250ZW50LSVDT01QJV06YWN0aXZle2JvcmRlci1jb2xvcjojZWVlfSddLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihqaHQsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoibGlua2VkLXRpbWUtZm9iIix0ZW1wbGF0ZToiPHNwYW4+e3sgc3RlcCB8IG51bWJlciB9fTwvc3Bhbj4iLHN0eWxlVXJsczpbImxpbmtlZF90aW1lX2ZvYl9jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaH1dfV0sbnVsbCx7c3RlcDpbe3R5cGU6Ul99XX0pO2NvbnN0IEtodD1mdW5jdGlvbih0KXtyZXR1cm5bMCx0XX0sSmh0PWZ1bmN0aW9uKCl7cmV0dXJueyJvdXQtb2Ytc2VsZWN0ZWQtdGltZSI6ITAsZW5kOiEwLHJhbmdlOiEwfX07ZnVuY3Rpb24gUWh0KHQsZSl7aWYoMSZ0JiZ2ZigwLCJkaXYiLDMwKSwyJnQpe2NvbnN0IHQ9emYoMiksZT10LnZpZXdFeHRlbnQsbj10LmRvbURpbWVuc2lvbixvPXQueFNjYWxlLGk9emYoKTtsdSgibGVmdCIsby5mb3J3YXJkKGUueCxpeSgzLEtodCxuLndpZHRoKSxpLnNlbGVjdGVkVGltZS5lbmRTdGVwKSsicHgiKSxiZigibmdDbGFzcyIsb3koNSxKaHQpKX19Y29uc3QgJGh0PWZ1bmN0aW9uKHQpe3JldHVyblt0LDBdfSx0YnQ9ZnVuY3Rpb24odCl7cmV0dXJueyJvdXQtb2Ytc2VsZWN0ZWQtdGltZSI6ITAsc3RhcnQ6ITAscmFuZ2U6dH19O2Z1bmN0aW9uIGVidCh0LGUpe2lmKDEmdCYmKHhmKDApLHZmKDEsImRpdiIsMzApLEhtKDIsUWh0LDEsNiwiZGl2IiwzMSksT2YoKSksMiZ0KXtjb25zdCB0PXpmKCksZT10LnZpZXdFeHRlbnQsbj10LmRvbURpbWVuc2lvbixvPXQueFNjYWxlLGk9emYoKTtEYygxKSxsdSgicmlnaHQiLG8uZm9yd2FyZChlLngsaXkoNCwkaHQsbi53aWR0aCksaS5zZWxlY3RlZFRpbWUuc3RhcnRTdGVwKSsicHgiKSxiZigibmdDbGFzcyIsaXkoNix0YnQsISFpLnNlbGVjdGVkVGltZS5lbmRTdGVwKSksRGMoMSksYmYoIm5nSWYiLGkuc2VsZWN0ZWRUaW1lLmVuZFN0ZXApfX1mdW5jdGlvbiBuYnQodCxlKXtpZigxJnQmJkhtKDAsZWJ0LDMsOCwibmctY29udGFpbmVyIiwzKSwyJnQpe2JmKCJuZ0lmIix6ZigpLnNlbGVjdGVkVGltZSl9fWZ1bmN0aW9uIG9idCh0LGUpe2lmKDEmdCYmKENmKDAsImRpdiIsMzIpLHZmKDEsImxpbmtlZC10aW1lLWZvYiIsMzMpLE1mKCkpLDImdCl7Y29uc3QgdD16ZigyKSxlPXQudmlld0V4dGVudCxuPXQuZG9tRGltZW5zaW9uLG89dC54U2NhbGUsaT16ZigpO2x1KCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitvLmZvcndhcmQoZS54LGl5KDMsS2h0LG4ud2lkdGgpLGkuc2VsZWN0ZWRUaW1lLmVuZFN0ZXApKyJweCwgMCkiKSxEYygxKSxiZigic3RlcCIsaS5zZWxlY3RlZFRpbWUuZW5kU3RlcCl9fWZ1bmN0aW9uIGlidCh0LGUpe2lmKDEmdCYmKHhmKDApLENmKDEsImRpdiIsMzIpLHZmKDIsImxpbmtlZC10aW1lLWZvYiIsMzMpLE1mKCksSG0oMyxvYnQsMiw1LCJkaXYiLDM0KSxPZigpKSwyJnQpe2NvbnN0IHQ9emYoKSxlPXQudmlld0V4dGVudCxuPXQuZG9tRGltZW5zaW9uLG89dC54U2NhbGUsaT16ZigpO0RjKDEpLGx1KCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitvLmZvcndhcmQoZS54LGl5KDQsS2h0LG4ud2lkdGgpLGkuc2VsZWN0ZWRUaW1lLnN0YXJ0U3RlcCkrInB4LCAwKSIpLERjKDEpLGJmKCJzdGVwIixpLnNlbGVjdGVkVGltZS5zdGFydFN0ZXApLERjKDEpLGJmKCJuZ0lmIixpLnNlbGVjdGVkVGltZS5lbmRTdGVwKX19ZnVuY3Rpb24gYWJ0KHQsZSl7aWYoMSZ0JiZIbSgwLGlidCw0LDYsIm5nLWNvbnRhaW5lciIsMyksMiZ0KXtiZigibmdJZiIsemYoKS5zZWxlY3RlZFRpbWUpfX1jbGFzcyByYnR7Y29uc3RydWN0b3IodCxlKXt0aGlzLnJlZj10LHRoaXMuZGlhbG9nPWUsdGhpcy5EYXRhTG9hZFN0YXRlPVVFLHRoaXMuUmVuZGVyZXJUeXBlPWU2LHRoaXMuU2NhbGVUeXBlPW42LHRoaXMub25GdWxsU2l6ZVRvZ2dsZT1uZXcgU3ksdGhpcy5vblBpbkNsaWNrZWQ9bmV3IFN5LHRoaXMueVNjYWxlVHlwZT1uNi5MSU5FQVIsdGhpcy5pc1ZpZXdCb3hPdmVycmlkZGVuPSExLHRoaXMucmVsYXRpdmVYRm9ybWF0dGVyPXBydCx0aGlzLnZhbHVlRm9ybWF0dGVyPUthdCx0aGlzLnN0ZXBGb3JtYXR0ZXI9JGF0fXRvZ2dsZVlTY2FsZVR5cGUoKXt0aGlzLnlTY2FsZVR5cGU9dGhpcy55U2NhbGVUeXBlPT09bjYuTElORUFSP242LkxPRzEwOm42LkxJTkVBUn1yZXNldERvbWFpbigpe3RoaXMubGluZUNoYXJ0JiZ0aGlzLmxpbmVDaGFydC52aWV3Qm94UmVzZXQoKX10cmFja0J5VG9vbHRpcERhdHVtKHQsZSl7cmV0dXJuIGUuaWR9Z2V0Q3VzdG9tWEZvcm1hdHRlcigpe3N3aXRjaCh0aGlzLnhBeGlzVHlwZSl7Y2FzZSBRVC5SRUxBVElWRTpyZXR1cm4gcHJ0O2Nhc2UgUVQuU1RFUDpyZXR1cm4gb3J0O2Nhc2UgUVQuV0FMTF9USU1FOmRlZmF1bHQ6cmV0dXJufX1nZXRDdXJzb3JBd2FyZVRvb2x0aXBEYXRhKHQsZSl7Y29uc3Qgbj10Lm1hcCgodD0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHttZXRhZGF0YTpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5tZXRhZGF0YSkse2Nsb3Nlc3Q6ITEsZGlzdFNxVG9DdXJzb3I6TWF0aC5oeXBvdCh0LnBvaW50LngtZS54LHQucG9pbnQueS1lLnkpfSl9KSkpO2xldCBvPTEvMCxpPTA7Zm9yKGxldCB0PTA7dDxuLmxlbmd0aDt0Kyspbz5uW3RdLm1ldGFkYXRhLmRpc3RTcVRvQ3Vyc29yJiYobz1uW3RdLm1ldGFkYXRhLmRpc3RTcVRvQ3Vyc29yLGk9dCk7c3dpdGNoKG4ubGVuZ3RoJiYobltpXS5tZXRhZGF0YS5jbG9zZXN0PSEwKSx0aGlzLnRvb2x0aXBTb3J0KXtjYXNlIEpULkFTQ0VORElORzpyZXR1cm4gbi5zb3J0KCgodCxlKT0+dC5wb2ludC55LWUucG9pbnQueSkpO2Nhc2UgSlQuREVTQ0VORElORzpyZXR1cm4gbi5zb3J0KCgodCxlKT0+ZS5wb2ludC55LXQucG9pbnQueSkpO2Nhc2UgSlQuTkVBUkVTVDpyZXR1cm4gbi5zb3J0KCgodCxlKT0+dC5tZXRhZGF0YS5kaXN0U3FUb0N1cnNvci1lLm1ldGFkYXRhLmRpc3RTcVRvQ3Vyc29yKSk7Y2FzZSBKVC5ERUZBVUxUOmNhc2UgSlQuQUxQSEFCRVRJQ0FMOnJldHVybiBuLnNvcnQoKCh0LGUpPT50Lm1ldGFkYXRhLmRpc3BsYXlOYW1lPGUubWV0YWRhdGEuZGlzcGxheU5hbWU/LTE6dC5tZXRhZGF0YS5kaXNwbGF5TmFtZT5lLm1ldGFkYXRhLmRpc3BsYXlOYW1lPzE6MCkpfX1vcGVuRGF0YURvd25sb2FkRGlhbG9nKCl7dGhpcy5kaWFsb2cub3Blbih0aGlzLkRhdGFEb3dubG9hZENvbXBvbmVudCx7ZGF0YTp7Y2FyZElkOnRoaXMuY2FyZElkfX0pfX1yYnQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHJidCkoZ2YoS2gpLGdmKFhZKSl9LHJidC7JtWNtcD1zbyh7dHlwZTpyYnQsc2VsZWN0b3JzOltbInNjYWxhci1jYXJkLWNvbXBvbmVudCJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmVnkoQmh0LDUpLDImZSl7bGV0IHQ7QnkodD1VeSgpKSYmKG4ubGluZUNoYXJ0PXQuZmlyc3QpfX0saW5wdXRzOntjYXJkSWQ6ImNhcmRJZCIsY2hhcnRNZXRhZGF0YU1hcDoiY2hhcnRNZXRhZGF0YU1hcCIsRGF0YURvd25sb2FkQ29tcG9uZW50OiJEYXRhRG93bmxvYWRDb21wb25lbnQiLGRhdGFTZXJpZXM6ImRhdGFTZXJpZXMiLGlnbm9yZU91dGxpZXJzOiJpZ25vcmVPdXRsaWVycyIsaXNDYXJkVmlzaWJsZToiaXNDYXJkVmlzaWJsZSIsaXNQaW5uZWQ6ImlzUGlubmVkIixsb2FkU3RhdGU6ImxvYWRTdGF0ZSIsc2hvd0Z1bGxTaXplOiJzaG93RnVsbFNpemUiLHNtb290aGluZ0VuYWJsZWQ6InNtb290aGluZ0VuYWJsZWQiLHRhZzoidGFnIix0aXRsZToidGl0bGUiLHRvb2x0aXBTb3J0OiJ0b29sdGlwU29ydCIseEF4aXNUeXBlOiJ4QXhpc1R5cGUiLHhTY2FsZVR5cGU6InhTY2FsZVR5cGUiLHVzZURhcmtNb2RlOiJ1c2VEYXJrTW9kZSIsc2VsZWN0ZWRUaW1lOiJzZWxlY3RlZFRpbWUifSxvdXRwdXRzOntvbkZ1bGxTaXplVG9nZ2xlOiJvbkZ1bGxTaXplVG9nZ2xlIixvblBpbkNsaWNrZWQ6Im9uUGluQ2xpY2tlZCJ9LGRlY2xzOjM0LHZhcnM6MjYsY29uc3RzOmZ1bmN0aW9uKCl7bGV0IHQsZSxuLG8saTtpZigidW5kZWZpbmVkIiE9dHlwZW9mIG5nSTE4bkNsb3N1cmVNb2RlJiZuZ0kxOG5DbG9zdXJlTW9kZSl7dD1nb29nLmdldE1zZygiRml0IGxpbmUgY2hhcnQgZG9tYWlucyB0byBkYXRhIil9ZWxzZSB0PSRsb2NhbGl6ZWA6QSBidXR0b24gdGhhdCByZXNldHMgbGluZSBjaGFydCBkb21haW4gdG8gdGhlIGRhdGHikJ9lNjhhNTUyOTQxYWI0MjdhOTllNzQzN2UwODQ0M2YzMGFjNzFjY2Q24pCfMzgzMDY0NjUyMTA1ODI2ODU1ODpGaXQgbGluZSBjaGFydCBkb21haW5zIHRvIGRhdGFgO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgbmdJMThuQ2xvc3VyZU1vZGUmJm5nSTE4bkNsb3N1cmVNb2RlKXtlPWdvb2cuZ2V0TXNnKCJQaW4gY2FyZCIpfWVsc2UgZT0kbG9jYWxpemVgOkEgYnV0dG9uIHRvIHBpbiBhIGNhcmQu4pCfZTY2NWRjNzEyYmQ1ZjE4ZDRkZmEzYTI5ZTEyNWQ1NjVjYzUxZTJmNuKQnzcyODQ2MDY0MjYyMzQzNzUzNDQ6UGluIGNhcmRgO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgbmdJMThuQ2xvc3VyZU1vZGUmJm5nSTE4bkNsb3N1cmVNb2RlKXtuPWdvb2cuZ2V0TXNnKCJUb2dnbGUgZnVsbCBzaXplIG1vZGUiKX1lbHNlIG49JGxvY2FsaXplYDpBIGJ1dHRvbiBvbiBsaW5lIGNoYXJ0IHRoYXQgdG9nZ2xlcyBmdWxsIHNpemUgbW9kZS7ikJ9mYzhmNzY3ZDBiOWY5MzAxODdhMWJhZTM0NDc3YWQyODczNmVjZTMz4pCfOTE1NzIxNTYzNjM4OTI2NTk3OlRvZ2dsZSBmdWxsIHNpemUgbW9kZWA7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBuZ0kxOG5DbG9zdXJlTW9kZSYmbmdJMThuQ2xvc3VyZU1vZGUpe289Z29vZy5nZXRNc2coIk1vcmUgbGluZSBjaGFydCBvcHRpb25zIil9ZWxzZSBvPSRsb2NhbGl6ZWA6QW4gb3ZlcmZsb3cgbWVudSBidXR0b24gdGhhdCBvcGVucyBtb3JlIGxpbmUgY2hhcnQgb3B0aW9uc+KQn2IyNjBmYWI5NDZhMzA3N2NlMjBmZDI4ZTMzNjk3OWY1ODY3MjBlOGTikJ84NzgwNTM3NDAyMTAzMzY0MzU6TW9yZSBsaW5lIGNoYXJ0IG9wdGlvbnNgO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgbmdJMThuQ2xvc3VyZU1vZGUmJm5nSTE4bkNsb3N1cmVNb2RlKXtpPWdvb2cuZ2V0TXNnKCJUb2dnbGUgWS1heGlzIGxvZyBzY2FsZSBvbiBsaW5lIGNoYXJ0Iil9ZWxzZSBpPSRsb2NhbGl6ZWA6QSBidXR0b24gdGhhdCB0b2dnbGVzIGxvZyBzY2FsZSBvbiB5LWF4aXMgb24gYSBsaW5lIGNoYXJ04pCfZmU5MWY5NmFiOWIzYmFjYTVhNDg5MTNmMmIwZmFlODQ0ODNkOTNlM+KQnzMzNzQ2NDU2MjA2Mzg4ODM5MjY6VG9nZ2xlIFktYXhpcyBsb2cgc2NhbGUgb24gbGluZSBjaGFydGA7cmV0dXJuW1sxLCJoZWFkaW5nIl0sWzEsIm5hbWUiXSxbMSwidGFnIiwzLCJ0aXRsZSIsInZhbHVlIl0sWzQsIm5nSWYiXSxbMSwiY29udHJvbHMiXSxbIm1hdC1pY29uLWJ1dHRvbiIsIiIsImFyaWEtbGFiZWwiLHQsMywiZGlzYWJsZWQiLCJ0aXRsZSIsImNsaWNrIl0sWyJzdmdJY29uIiwic2V0dGluZ3Nfb3ZlcnNjYW5fMjRweCJdLFsibWF0LWljb24tYnV0dG9uIiwiIiwiYXJpYS1sYWJlbCIsZSwxLCJwaW4tYnV0dG9uIiwzLCJjbGljayJdLFszLCJzdmdJY29uIl0sWyJtYXQtaWNvbi1idXR0b24iLCIiLCJhcmlhLWxhYmVsIixuLCJ0aXRsZSIsIlRvZ2dsZSBmdWxsIHNpemUgbW9kZSIsMywiY2xpY2siXSxbIm1hdC1pY29uLWJ1dHRvbiIsIiIsImFyaWEtbGFiZWwiLG8sInRpdGxlIiwiTW9yZSBsaW5lIGNoYXJ0IG9wdGlvbnMiLDMsIm1hdE1lbnVUcmlnZ2VyRm9yIl0sWyJzdmdJY29uIiwibW9yZV92ZXJ0XzI0cHgiXSxbIm1lbnUiLCJtYXRNZW51Il0sWyJtYXQtbWVudS1pdGVtIiwiIiwiYXJpYS1sYWJlbCIsaSwzLCJjbGljayJdLFsic3ZnSWNvbiIsImxpbmVfd2VpZ2h0XzI0cHgiXSxbIm1hdC1tZW51LWl0ZW0iLCIiLCJhcmlhLWxhYmVsIiwiT3BlbiBkaWFsb2cgdG8gZG93bmxvYWQgZGF0YSIsMywiY2xpY2siXSxbInN2Z0ljb24iLCJnZXRfYXBwXzI0cHgiXSxbMSwiY2hhcnQtY29udGFpbmVyIl0sWyJkaWFtZXRlciIsIjE4Iiw0LCJuZ0lmIl0sWzMsImRpc2FibGVVcGRhdGUiLCJwcmVmZXJyZWRSZW5kZXJlclR5cGUiLCJzZXJpZXNEYXRhIiwic2VyaWVzTWV0YWRhdGFNYXAiLCJ4U2NhbGVUeXBlIiwieVNjYWxlVHlwZSIsImN1c3RvbVhGb3JtYXR0ZXIiLCJpZ25vcmVZT3V0bGllcnMiLCJ0b29sdGlwVGVtcGxhdGUiLCJ1c2VEYXJrTW9kZSIsImN1c3RvbVZpc1RlbXBsYXRlIiwiY3VzdG9tWEF4aXNUZW1wbGF0ZSIsIm9uVmlld0JveE92ZXJyaWRkZW4iXSxbInRvb2x0aXAiLCIiXSxbImxpbmVDaGFydEN1c3RvbVZpcyIsIiJdLFsibGluZUNoYXJ0Q3VzdG9tWEF4aXNWaXMiLCIiXSxbImRpYW1ldGVyIiwiMTgiXSxbMSwidG9vbHRpcCJdLFsxLCJjaXJjbGUtaGVhZGVyIl0sWzQsIm5nRm9yIiwibmdGb3JPZiIsIm5nRm9yVHJhY2tCeSJdLFsxLCJ0b29sdGlwLXJvdyJdLFsxLCJ0b29sdGlwLXJvdy1jaXJjbGUiXSxbMywiYWxpYXMiXSxbMywibmdDbGFzcyJdLFszLCJuZ0NsYXNzIiwibGVmdCIsNCwibmdJZiJdLFsxLCJsaW5rZWQtdGltZS1mb2ItY29udGFpbmVyIl0sWzEsInNlbGVjdGVkLXRpbWUtZm9iIiwzLCJzdGVwIl0sWyJjbGFzcyIsImxpbmtlZC10aW1lLWZvYi1jb250YWluZXIiLDMsInRyYW5zZm9ybSIsNCwibmdJZiJdXX0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmKENmKDAsImRpdiIsMCksQ2YoMSwic3BhbiIsMSksdmYoMiwidGItdHJ1bmNhdGVkLXBhdGgiLDIpLEhtKDMsVWh0LDEsMCwidmlzLXNlbGVjdGVkLXRpbWUtY2xpcHBlZCIsMyksTWYoKSxDZig0LCJzcGFuIiw0KSxDZig1LCJidXR0b24iLDUpLFJmKCJjbGljayIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5yZXNldERvbWFpbigpfSkpLF95KDYsImFzeW5jIiksX3koNywiYXN5bmMiKSx2Zig4LCJtYXQtaWNvbiIsNiksTWYoKSxDZig5LCJidXR0b24iLDcpLFJmKCJjbGljayIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vblBpbkNsaWNrZWQuZW1pdCghbi5pc1Bpbm5lZCl9KSksdmYoMTAsIm1hdC1pY29uIiw4KSxNZigpLENmKDExLCJidXR0b24iLDkpLFJmKCJjbGljayIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vbkZ1bGxTaXplVG9nZ2xlLmVtaXQoKX0pKSx2ZigxMiwibWF0LWljb24iLDgpLE1mKCksQ2YoMTMsImJ1dHRvbiIsMTApLHZmKDE0LCJtYXQtaWNvbiIsMTEpLE1mKCksQ2YoMTUsIm1hdC1tZW51IixudWxsLDEyKSxDZigxNywiYnV0dG9uIiwxMyksUmYoImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLnRvZ2dsZVlTY2FsZVR5cGUoKX0pKSx2ZigxOCwibWF0LWljb24iLDE0KSxDZigxOSwic3BhbiIpLFB1KDIwLCJUb2dnbGUgWS1heGlzIGxvZyBzY2FsZSIpLE1mKCksTWYoKSxDZigyMSwiYnV0dG9uIiwxNSksUmYoImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9wZW5EYXRhRG93bmxvYWREaWFsb2coKX0pKSx2ZigyMiwibWF0LWljb24iLDE2KSxDZigyMywic3BhbiIpLFB1KDI0LCJEb3dubG9hZCBkYXRhIiksTWYoKSxNZigpLE1mKCksTWYoKSxNZigpLENmKDI1LCJkaXYiLDE3KSxIbSgyNixXaHQsMSwwLCJtYXQtc3Bpbm5lciIsMTgpLENmKDI3LCJsaW5lLWNoYXJ0IiwxOSksUmYoIm9uVmlld0JveE92ZXJyaWRkZW4iLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLmlzVmlld0JveE92ZXJyaWRkZW49ZX0pKSxNZigpLEhtKDI4LFhodCwxNywzLCJuZy10ZW1wbGF0ZSIsbnVsbCwyMCxxeSksTWYoKSxIbSgzMCxuYnQsMSwxLCJuZy10ZW1wbGF0ZSIsbnVsbCwyMSxxeSksSG0oMzIsYWJ0LDEsMSwibmctdGVtcGxhdGUiLG51bGwsMjIscXkpKSwyJmUpe2NvbnN0IHQ9Rm0oMTYpLGU9Rm0oMjkpLG89Rm0oMzEpLGk9Rm0oMzMpO0RjKDIpLExmKCJ0aXRsZSIsbi50YWcpLExmKCJ2YWx1ZSIsbi50aXRsZSksRGMoMSksYmYoIm5nSWYiLG4uc2VsZWN0ZWRUaW1lJiZuLnNlbGVjdGVkVGltZS5jbGlwcGVkKSxEYygyKSxiZigiZGlzYWJsZWQiLCFuLmxpbmVDaGFydHx8IUN5KDYsMjIsbi5saW5lQ2hhcnQuZ2V0SXNWaWV3Qm94T3ZlcnJpZGRlbigpKSkoInRpdGxlIixuLmxpbmVDaGFydCYmQ3koNywyNCxuLmxpbmVDaGFydC5nZXRJc1ZpZXdCb3hPdmVycmlkZGVuKCkpPyJMaW5lIGNoYXJ0IGlzIGFscmVhZHkgZml0dGVkIHRvIGRhdGEuIFdoZW4gZGF0YSB1cGRhdGVzLCB0aGUgbGluZSBjaGFydCB3aWxsIGF1dG8gZml0IHRvIGl0cyBkb21haW4uIjoiRml0IGxpbmUgY2hhcnQgZG9tYWlucyB0byBkYXRhIiksRGMoNCkseW0oInRpdGxlIixuLmlzUGlubmVkPyJVbnBpbiBjYXJkIjoiUGluIGNhcmQiKSxEYygxKSxiZigic3ZnSWNvbiIsbi5pc1Bpbm5lZD8ia2VlcF8yNHB4Ijoia2VlcF9vdXRsaW5lXzI0cHgiKSxEYygyKSxiZigic3ZnSWNvbiIsbi5zaG93RnVsbFNpemU/ImZ1bGxzY3JlZW5fZXhpdF8yNHB4IjoiZnVsbHNjcmVlbl8yNHB4IiksRGMoMSksYmYoIm1hdE1lbnVUcmlnZ2VyRm9yIix0KSxEYygxMyksYmYoIm5nSWYiLG4ubG9hZFN0YXRlPT09bi5EYXRhTG9hZFN0YXRlLkxPQURJTkcpLERjKDEpLGJmKCJkaXNhYmxlVXBkYXRlIiwhbi5pc0NhcmRWaXNpYmxlKSgicHJlZmVycmVkUmVuZGVyZXJUeXBlIixuLlJlbmRlcmVyVHlwZS5XRUJHTCkoInNlcmllc0RhdGEiLG4uZGF0YVNlcmllcykoInNlcmllc01ldGFkYXRhTWFwIixuLmNoYXJ0TWV0YWRhdGFNYXApKCJ4U2NhbGVUeXBlIixuLnhTY2FsZVR5cGUpKCJ5U2NhbGVUeXBlIixuLnlTY2FsZVR5cGUpKCJjdXN0b21YRm9ybWF0dGVyIixuLmdldEN1c3RvbVhGb3JtYXR0ZXIoKSkoImlnbm9yZVlPdXRsaWVycyIsbi5pZ25vcmVPdXRsaWVycykoInRvb2x0aXBUZW1wbGF0ZSIsZSkoInVzZURhcmtNb2RlIixuLnVzZURhcmtNb2RlKSgiY3VzdG9tVmlzVGVtcGxhdGUiLG8pKCJjdXN0b21YQXhpc1RlbXBsYXRlIixpKX19LGRpcmVjdGl2ZXM6W0w0LFB2LE5MLE1xLHFxLGpxLEhxLEJodCxWaHQsYTIseHYsSDIsQ3Ysamh0XSxwaXBlczpbVnYsWXZdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgdHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfVtfbmdob3N0LSVDT01QJV17ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtib3gtc2l6aW5nOmJvcmRlci1ib3g7aGVpZ2h0OjEwMCU7b3ZlcmZsb3c6YXV0bztwYWRkaW5nOjE2cHg7cGFkZGluZy10b3A6NHB4fS5oZWFkaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4O2ZvbnQtc2l6ZToxNHB4O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO21hcmdpbi1ib3R0b206NHB4O3Bvc2l0aW9uOnJlbGF0aXZlfS5oZWFkaW5nW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5uYW1lW19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpncmlkO2dhcDo1cHg7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOmF1dG8gYXV0b30uaGVhZGluZ1tfbmdjb250ZW50LSVDT01QJV0gICB2aXMtc2VsZWN0ZWQtdGltZS1jbGlwcGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MS4yZW07bGluZS1oZWlnaHQ6MH0udGFnW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW59LnBpbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgbWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxOHB4fS5jb250cm9sc1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MTt3aGl0ZS1zcGFjZTpub3dyYXA7ZmxleC1zaHJpbms6MDttYXJnaW4tcmlnaHQ6LTEycHh9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLmNvbnRyb2xzW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmNvbnRyb2xzW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX0uY2hhcnQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZTtmbGV4OjF9LmNoYXJ0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0gICBtYXQtc3Bpbm5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MTFweDt0b3A6MTFweH0uY2hhcnQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGxpbmUtY2hhcnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjEwMCV9LnRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1zcGFjaW5nOjRweDtmb250LXNpemU6MTNweH0udG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17dGV4dC1hbGlnbjpsZWZ0fS50b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC50b29sdGlwLXJvd1tfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwfS50b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC50b29sdGlwLXJvdy1jaXJjbGVbX25nY29udGVudC0lQ09NUCVde2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmlubGluZS1mbGV4O2hlaWdodDoxMnB4O3dpZHRoOjEycHh9LnRvb2x0aXBbX25nY29udGVudC0lQ09NUCVdICAgLnRvb2x0aXAtcm93LWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0gPiBzcGFuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItcmFkaXVzOjUwJTtib3JkZXI6MXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsLjQpO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2hlaWdodDoxMHB4O3dpZHRoOjEwcHh9LnRvb2x0aXBbX25nY29udGVudC0lQ09NUCVdICAgLmNsb3Nlc3RbX25nY29udGVudC0lQ09NUCVdICAgLnRvb2x0aXAtcm93LWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0gPiBzcGFuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2ZmZjtib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCAjZmZmfS5vdXQtb2Ytc2VsZWN0ZWQtdGltZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjAgZGFzaGVkIGN1cnJlbnRDb2xvcjtoZWlnaHQ6MTAwJTtwb3NpdGlvbjphYnNvbHV0ZX0ub3V0LW9mLXNlbGVjdGVkLXRpbWUuc3RhcnRbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1yaWdodC13aWR0aDoycHg7bWFyZ2luLWxlZnQ6LTFweH0ub3V0LW9mLXNlbGVjdGVkLXRpbWUuc3RhcnQucmFuZ2VbX25nY29udGVudC0lQ09NUCVde2xlZnQ6MH0ub3V0LW9mLXNlbGVjdGVkLXRpbWUuZW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdC13aWR0aDoycHg7bWFyZ2luLXJpZ2h0Oi0xcHg7cmlnaHQ6MH0ub3V0LW9mLXNlbGVjdGVkLXRpbWUucmFuZ2VbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSl9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLm91dC1vZi1zZWxlY3RlZC10aW1lLnJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLm91dC1vZi1zZWxlY3RlZC10aW1lLnJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjQpfS5saW5rZWQtdGltZS1mb2ItY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmlubGluZS1ibG9jaztsZWZ0OjA7cG9zaXRpb246YWJzb2x1dGU7dG9wOjB9bGlua2VkLXRpbWUtZm9iW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtNTAlKX0nXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIocmJ0LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6InNjYWxhci1jYXJkLWNvbXBvbmVudCIsdGVtcGxhdGVVcmw6InNjYWxhcl9jYXJkX2NvbXBvbmVudC5uZy5odG1sIixzdHlsZVVybHM6WyJzY2FsYXJfY2FyZF9jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOktofSx7dHlwZTpYWX1dfSkse2NhcmRJZDpbe3R5cGU6Ul99XSxjaGFydE1ldGFkYXRhTWFwOlt7dHlwZTpSX31dLERhdGFEb3dubG9hZENvbXBvbmVudDpbe3R5cGU6Ul99XSxkYXRhU2VyaWVzOlt7dHlwZTpSX31dLGlnbm9yZU91dGxpZXJzOlt7dHlwZTpSX31dLGlzQ2FyZFZpc2libGU6W3t0eXBlOlJffV0saXNQaW5uZWQ6W3t0eXBlOlJffV0sbG9hZFN0YXRlOlt7dHlwZTpSX31dLHNob3dGdWxsU2l6ZTpbe3R5cGU6Ul99XSxzbW9vdGhpbmdFbmFibGVkOlt7dHlwZTpSX31dLHRhZzpbe3R5cGU6Ul99XSx0aXRsZTpbe3R5cGU6Ul99XSx0b29sdGlwU29ydDpbe3R5cGU6Ul99XSx4QXhpc1R5cGU6W3t0eXBlOlJffV0seFNjYWxlVHlwZTpbe3R5cGU6Ul99XSx1c2VEYXJrTW9kZTpbe3R5cGU6Ul99XSxzZWxlY3RlZFRpbWU6W3t0eXBlOlJffV0sb25GdWxsU2l6ZVRvZ2dsZTpbe3R5cGU6RV99XSxvblBpbkNsaWNrZWQ6W3t0eXBlOkVffV0sbGluZUNoYXJ0Olt7dHlwZTphcixhcmdzOltCaHRdfV19KTtjbGFzcyBzYnR7Y29uc3RydWN0b3IodCxlKXt0aGlzLnJlZj10LHRoaXMuY2RrU2Nyb2xsYWJsZT1lLHRoaXMub25WaXNpYmlsaXR5Q2hhbmdlPW5ldyBTeSx0aGlzLm5nVW5zdWJzY3JpYmUkPW5ldyBCLHRoaXMub25FdmVudCQ9bmV3IEJ9bmdPbkluaXQoKXtjb25zdCB0PXtyb290OnRoaXMuY2RrU2Nyb2xsYWJsZT90aGlzLmNka1Njcm9sbGFibGUuZ2V0RWxlbWVudFJlZigpLm5hdGl2ZUVsZW1lbnQ6bnVsbH07dGhpcy5pbnRlcnNlY3Rpb25PYnNlcnZlck1hcmdpbiYmKHQucm9vdE1hcmdpbj10aGlzLmludGVyc2VjdGlvbk9ic2VydmVyTWFyZ2luKTtjb25zdCBlPW5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcigodD0+e3RoaXMub25FdmVudCQubmV4dCh0KX0pLHQpO2Uub2JzZXJ2ZSh0aGlzLnJlZi5uYXRpdmVFbGVtZW50KSx0aGlzLm5nVW5zdWJzY3JpYmUkLnN1YnNjcmliZSgoKCk9PntlLnVub2JzZXJ2ZSh0aGlzLnJlZi5uYXRpdmVFbGVtZW50KX0pKSx0aGlzLm9uRXZlbnQkLnBpcGUoamUodGhpcy5uZ1Vuc3Vic2NyaWJlJCkpLnN1YnNjcmliZSgodD0+e2NvbnN0IGU9dC5zbGljZSgtMSlbMF07dGhpcy5vblZpc2liaWxpdHlDaGFuZ2UuZW1pdCh7dmlzaWJsZTplLmlzSW50ZXJzZWN0aW5nfSl9KSl9bmdPbkRlc3Ryb3koKXt0aGlzLm5nVW5zdWJzY3JpYmUkLm5leHQoKSx0aGlzLm5nVW5zdWJzY3JpYmUkLmNvbXBsZXRlKCl9d2FpdEZvckV2ZW50Rm9yVGVzdE9ubHkoKXtyZXR1cm4gbmV3IFByb21pc2UoKHQ9PnRoaXMub25FdmVudCQucGlwZSh2ZSgxKSkuc3Vic2NyaWJlKCgoKT0+e3QoKX0pKSkpfX1mdW5jdGlvbiBsYnQodCxlKXtyZXR1cm4gdC5sZW5ndGg9PT1lLmxlbmd0aCYmdC5ldmVyeSgoKHQsbik9Pntjb25zdCBvPWVbbl0saT10LnBvaW50cyxhPW8ucG9pbnRzO3JldHVybiB0LnJ1bklkPT09by5ydW5JZCYmaS5sZW5ndGg9PT1hLmxlbmd0aCYmaS5ldmVyeSgoKHQsZSk9Pntjb25zdCBuPWFbZV07cmV0dXJuIHQueD09PW4ueCYmdC55PT09bi55fSkpfSkpfXNidC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8c2J0KShnZihLaCksZ2YoSkwsOCkpfSxzYnQuybVkaXI9aG8oe3R5cGU6c2J0LHNlbGVjdG9yczpbWyIiLCJvYnNlcnZlSW50ZXJzZWN0aW9uIiwiIl1dLGlucHV0czp7aW50ZXJzZWN0aW9uT2JzZXJ2ZXJNYXJnaW46ImludGVyc2VjdGlvbk9ic2VydmVyTWFyZ2luIn0sb3V0cHV0czp7b25WaXNpYmlsaXR5Q2hhbmdlOiJvblZpc2liaWxpdHlDaGFuZ2UifX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoc2J0LFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6IltvYnNlcnZlSW50ZXJzZWN0aW9uXSJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpLaH0se3R5cGU6SkwsZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX1dfSkse2ludGVyc2VjdGlvbk9ic2VydmVyTWFyZ2luOlt7dHlwZTpSX31dLG9uVmlzaWJpbGl0eUNoYW5nZTpbe3R5cGU6RV99XX0pO2NsYXNzIGNidHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5EYXRhRG93bmxvYWRDb21wb25lbnQ9ZjYsdGhpcy5mdWxsV2lkdGhDaGFuZ2VkPW5ldyBTeSx0aGlzLmZ1bGxIZWlnaHRDaGFuZ2VkPW5ldyBTeSx0aGlzLnBpblN0YXRlQ2hhbmdlZD1uZXcgU3ksdGhpcy5pc1Zpc2libGU9ITEsdGhpcy51c2VEYXJrTW9kZSQ9dGhpcy5zdG9yZS5zZWxlY3QoRkQpLHRoaXMuaWdub3JlT3V0bGllcnMkPXRoaXMuc3RvcmUuc2VsZWN0KGJ6KSx0aGlzLnRvb2x0aXBTb3J0JD10aGlzLnN0b3JlLnNlbGVjdChoeiksdGhpcy54QXhpc1R5cGUkPXRoaXMuc3RvcmUuc2VsZWN0KHl6KSx0aGlzLnhTY2FsZVR5cGUkPXRoaXMuc3RvcmUuc2VsZWN0KHl6KS5waXBlKFZ0KCh0PT57c3dpdGNoKHQpe2Nhc2UgUVQuU1RFUDpjYXNlIFFULlJFTEFUSVZFOnJldHVybiBuNi5MSU5FQVI7Y2FzZSBRVC5XQUxMX1RJTUU6cmV0dXJuIG42LlRJTUU7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgeEF4aXNUeXBlIGZvciBsaW5lIGNoYXJ0LiAke3R9YCl9fSkpKSx0aGlzLnNjYWxhclNtb290aGluZyQ9dGhpcy5zdG9yZS5zZWxlY3QoQ3opLHRoaXMuc21vb3RoaW5nRW5hYmxlZCQ9dGhpcy5zdG9yZS5zZWxlY3QoQ3opLnBpcGUoVnQoKHQ9PnQ+MCkpKSx0aGlzLnNob3dGdWxsU2l6ZT0hMSx0aGlzLm5nVW5zdWJzY3JpYmU9bmV3IEJ9b25WaXNpYmlsaXR5Q2hhbmdlKHt2aXNpYmxlOnR9KXt0aGlzLmlzVmlzaWJsZT10fWlzU2NhbGFyQ2FyZE1ldGFkYXRhKHQpe2NvbnN0e3BsdWdpbjplfT10O3JldHVybiBlPT09S1QuU0NBTEFSU31vbkZ1bGxTaXplVG9nZ2xlKCl7dGhpcy5zaG93RnVsbFNpemU9IXRoaXMuc2hvd0Z1bGxTaXplLHRoaXMuZnVsbFdpZHRoQ2hhbmdlZC5lbWl0KHRoaXMuc2hvd0Z1bGxTaXplKSx0aGlzLmZ1bGxIZWlnaHRDaGFuZ2VkLmVtaXQodGhpcy5zaG93RnVsbFNpemUpfW5nT25Jbml0KCl7Y29uc3QgdD10aGlzLnN0b3JlLnNlbGVjdChueix0aGlzLmNhcmRJZCkucGlwZSh1ZSgodD0+ISF0JiZ0aGlzLmlzU2NhbGFyQ2FyZE1ldGFkYXRhKHQpKSksVnQoKHQ9PnQpKSk7ZnVuY3Rpb24gZSh0KXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkoWyJzbW9vdGhlZCIsdF0pfWNvbnN0IG49dGhpcy5zdG9yZS5zZWxlY3QodHosdGhpcy5jYXJkSWQpLnBpcGUoamUodGhpcy5uZ1Vuc3Vic2NyaWJlKSx1ZSgodD0+Qm9vbGVhbih0KSkpLFZ0KCh0PT50KSksRmUoMSkpLnBpcGUoX2UodGhpcy5zdG9yZS5zZWxlY3QoeXopKSxWdCgoKFt0LGVdKT0+T2JqZWN0LmtleXModCkubWFwKChuPT4oe3J1bklkOm4scG9pbnRzOnRoaXMuc3RlcFNlcmllc1RvTGluZVNlcmllcyh0W25dLGUpfSkpKSkpLHdlKGxidCkpLnBpcGUoX2UodGhpcy5zdG9yZS5zZWxlY3QoTXopKSxqZSh0aGlzLm5nVW5zdWJzY3JpYmUpLFZ0KCgoW3QsZV0pPT5lPyhmdW5jdGlvbiBuKHQpe3ZhciBlO2NvbnN0IG49W107Zm9yKGNvbnN0IG8gb2YgdCl7Y29uc3QgdD1bXTtsZXQgaT1OdW1iZXIuaXNGaW5pdGUobnVsbD09PShlPW8ucG9pbnRzWzBdKXx8dm9pZCAwPT09ZT92b2lkIDA6ZS54KT9vLnBvaW50c1swXS54Oi0xLzAsYT1bXTtmb3IoY29uc3QgZSBvZiBvLnBvaW50cylOdW1iZXIuaXNGaW5pdGUoZS54KT8oZS54PGkmJih0LnB1c2goe3Nlcmllc0lkOkpTT04uc3RyaW5naWZ5KFtvLnJ1bklkLHQubGVuZ3RoXSkscnVuSWQ6by5ydW5JZCxwb2ludHM6YX0pLGE9W10pLGEucHVzaChlKSxpPWUueCk6YS5wdXNoKGUpO3QucHVzaCh7c2VyaWVzSWQ6SlNPTi5zdHJpbmdpZnkoW28ucnVuSWQsdC5sZW5ndGhdKSxydW5JZDpvLnJ1bklkLHBvaW50czphfSk7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspbi5wdXNoKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0W2VdKSx7cGFydGl0aW9uSW5kZXg6ZSxwYXJ0aXRpb25TaXplOnQubGVuZ3RofSkpfXJldHVybiBufSkodCk6dC5tYXAoKHQ9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7c2VyaWVzSWQ6dC5ydW5JZCxwYXJ0aXRpb25JbmRleDowLHBhcnRpdGlvblNpemU6MX0pKSkpKSxWdCgodD0+dC5tYXAoKHQ9Pnt2YXIgZTtjb25zdCBuPW51bGw9PT0oZT10LnBvaW50c1swXSl8fHZvaWQgMD09PWU/dm9pZCAwOmUud2FsbFRpbWU7cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7cG9pbnRzOnQucG9pbnRzLm1hcCgodD0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtyZWxhdGl2ZVRpbWVJbk1zOnQud2FsbFRpbWUtbn0pKSl9KX0pKSkpLF9lKHRoaXMuc3RvcmUuc2VsZWN0KHl6KSksVnQoKChbdCxlXSk9PnQubWFwKCh0PT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3BvaW50czp0LnBvaW50cy5tYXAoKHQ9PntsZXQgbjtzd2l0Y2goZSl7Y2FzZSBRVC5SRUxBVElWRTpuPXQucmVsYXRpdmVUaW1lSW5NczticmVhaztjYXNlIFFULldBTExfVElNRTpuPXQud2FsbFRpbWU7YnJlYWs7Y2FzZSBRVC5TVEVQOmRlZmF1bHQ6bj10LnN0ZXB9cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7eDpufSl9KSl9KSkpKSksRmUoMSkpO3RoaXMuZGF0YVNlcmllcyQ9bi5waXBlKF9lKHRoaXMuc3RvcmUuc2VsZWN0KEN6KSksVmUoKChbdCxuXSk9Pntjb25zdCBvPXQubWFwKCgoe3Nlcmllc0lkOnQscG9pbnRzOmV9KT0+KHtpZDp0LHBvaW50czplfSkpKTtyZXR1cm4gbjw9MD96dChvKTpQdCgoZnVuY3Rpb24gaSh0LGUpe3ZhciBuO3JldHVybiBYVCh0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKigpe051bWJlci5pc0Zpbml0ZShlKXx8KGU9MCksZT1NYXRoLm1heCgwLE1hdGgubWluKGUsMSkpO2NvbnN0IG89W107Zm9yKGNvbnN0IGkgb2YgdCl7Y29uc3QgdD1udWxsPT09KG49aS5wb2ludHNbMF0pfHx2b2lkIDA9PT1uP3ZvaWQgMDpuLnk7aWYoaS5wb2ludHMuZXZlcnkoKGU9PmUueT09dCkpKXtvLnB1c2goaSk7Y29udGludWV9bGV0IGE9aS5wb2ludHMubGVuZ3RoPjA/MDpOYU4scj0wO2NvbnN0IHM9aS5wb2ludHMubWFwKCh0PT57Y29uc3Qgbj10Lnk7aWYoTnVtYmVyLmlzRmluaXRlKG4pKXthPWEqZSsoMS1lKSpuLHIrKztjb25zdCBvPTE9PT1lPzE6MS1NYXRoLnBvdyhlLHIpO3JldHVybnt4OnQueCx5OmEvb319cmV0dXJue3g6dC54LHk6bn19KSk7by5wdXNoKHtpZDppLmlkLHBvaW50czpzfSl9cmV0dXJuIG99KSl9KShvLG4pKS5waXBlKFZ0KCh0PT57Y29uc3Qgbj1vLm1hcCgoKG4sbyk9Pih7aWQ6ZShuLmlkKSxwb2ludHM6dFtvXS5wb2ludHMubWFwKCgoe3k6dH0sZSk9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuLnBvaW50c1tlXSkse3k6dH0pKSl9KSkpO3JldHVyblsuLi5vLC4uLm5dfSkpKX0pKSxCZShbXSkpLHRoaXMuc2VsZWN0ZWRUaW1lJD1LdChbbix0aGlzLnN0b3JlLnNlbGVjdChFeiksdGhpcy5zdG9yZS5zZWxlY3QoeXopXSkucGlwZShWdCgoKFt0LGUsbl0pPT57aWYobiE9PVFULlNURVB8fCFlKXJldHVybiBudWxsO2xldCBvPTEvMCxpPS0xLzA7Zm9yKGNvbnN0e3BvaW50czplfW9mIHQpZm9yKGNvbnN0IHQgb2YgZSlvPW8+dC54P3QueDpvLGk9aTx0Lng/dC54Omk7cmV0dXJuIEI0KGUsbyxpKX0pKSksdGhpcy5jaGFydE1ldGFkYXRhTWFwJD1uLnBpcGUoVmUoKHQ9Pkt0KHQubWFwKCh0PT50aGlzLmdldFJ1bkRpc3BsYXlOYW1lQW5kQWxpYXModC5ydW5JZCkucGlwZShWdCgoZT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLGUpKSkpKSkpKSksX2UodGhpcy5zdG9yZS5zZWxlY3QoX0kpLHRoaXMuc3RvcmUuc2VsZWN0KENJKSx0aGlzLnN0b3JlLnNlbGVjdChDeikpLENlKDApLFZ0KCgoW3QsbixvLGldKT0+e3ZhciBhO2NvbnN0IHI9e30scz1pPjA7Zm9yKGNvbnN0IGUgb2YgdCl7Y29uc3R7c2VyaWVzSWQ6dCxydW5JZDppLGRpc3BsYXlOYW1lOnMsYWxpYXM6bCxwYXJ0aXRpb25JbmRleDpjLHBhcnRpdGlvblNpemU6ZH09ZTtyW3RdPXt0eXBlOm82Lk9SSUdJTkFMLGlkOnQsYWxpYXM6bCxkaXNwbGF5TmFtZTpkPjE/YCR7c306ICR7Y31gOnMsdmlzaWJsZTpCb29sZWFuKG4mJm4uZ2V0KGkpKSxjb2xvcjpudWxsIT09KGE9b1tpXSkmJnZvaWQgMCE9PWE/YToiI2ZmZiIsYXV4OiExLG9wYWNpdHk6MX19aWYoIXMpcmV0dXJuIHI7Zm9yKGNvbnN0W3Qsbl1vZiBPYmplY3QuZW50cmllcyhyKSl7Y29uc3Qgbz1lKHQpO3Jbb109T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4pLHtpZDpvLHR5cGU6bzYuREVSSVZFRCxhdXg6ITEsb3JpZ2luYWxTZXJpZXNJZDp0fSksbi5hdXg9ITAsbi5vcGFjaXR5PS4yNX1yZXR1cm4gcn0pKSxCZSh7fSkpLHRoaXMubG9hZFN0YXRlJD10aGlzLnN0b3JlLnNlbGVjdCgkTix0aGlzLmNhcmRJZCksdGhpcy50YWckPXQucGlwZShWdCgodD0+dC50YWcpKSksdGhpcy50aXRsZSQ9dGhpcy50YWckLnBpcGUoVnQoKHQ9Pkg0KHQsdGhpcy5ncm91cE5hbWUpKSkpLHRoaXMuaXNQaW5uZWQkPXRoaXMuc3RvcmUuc2VsZWN0KGR6LHRoaXMuY2FyZElkKX1uZ09uRGVzdHJveSgpe3RoaXMubmdVbnN1YnNjcmliZS5uZXh0KCksdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCl9Z2V0UnVuRGlzcGxheU5hbWVBbmRBbGlhcyh0KXtyZXR1cm4gS3QoW3RoaXMuc3RvcmUuc2VsZWN0KEd6LHtydW5JZDp0fSksdGhpcy5zdG9yZS5zZWxlY3QoT1IpLHRoaXMuc3RvcmUuc2VsZWN0KFl6LHtydW5JZDp0fSldKS5waXBlKFZ0KCgoW2UsbixvXSk9Pnt2YXIgaSxhO2NvbnN0IHI9bnVsbCE9PWUmJm51bGwhPT0oaT1uW2VdKSYmdm9pZCAwIT09aT9pOm51bGw7cmV0dXJue2Rpc3BsYXlOYW1lOm98fHI/bnVsbCE9PShhPW51bGw9PW8/dm9pZCAwOm8ubmFtZSkmJnZvaWQgMCE9PWE/YToiLi4uIjp0LGFsaWFzOnJ9fSkpKX1zdGVwU2VyaWVzVG9MaW5lU2VyaWVzKHQsZSl7Y29uc3Qgbj1lPT09UVQuU1RFUDtyZXR1cm4gdC5tYXAoKHQ9Pntjb25zdCBlPTFlMyp0LndhbGxUaW1lO3JldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3g6bj90LnN0ZXA6ZSx5OnQudmFsdWUsd2FsbFRpbWU6ZSxyZWxhdGl2ZVRpbWVJbk1zOjB9KX0pKX19Y2J0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxjYnQpKGdmKGlTKSl9LGNidC7JtWNtcD1zbyh7dHlwZTpjYnQsc2VsZWN0b3JzOltbInNjYWxhci1jYXJkIl1dLGlucHV0czp7RGF0YURvd25sb2FkQ29tcG9uZW50OiJEYXRhRG93bmxvYWRDb21wb25lbnQiLGNhcmRJZDoiY2FyZElkIixncm91cE5hbWU6Imdyb3VwTmFtZSJ9LG91dHB1dHM6e2Z1bGxXaWR0aENoYW5nZWQ6ImZ1bGxXaWR0aENoYW5nZWQiLGZ1bGxIZWlnaHRDaGFuZ2VkOiJmdWxsSGVpZ2h0Q2hhbmdlZCIscGluU3RhdGVDaGFuZ2VkOiJwaW5TdGF0ZUNoYW5nZWQifSxkZWNsczoxNCx2YXJzOjQzLGNvbnN0czpbWyJvYnNlcnZlSW50ZXJzZWN0aW9uIiwiIiwzLCJjYXJkSWQiLCJjaGFydE1ldGFkYXRhTWFwIiwiRGF0YURvd25sb2FkQ29tcG9uZW50IiwiZGF0YVNlcmllcyIsImlnbm9yZU91dGxpZXJzIiwiaXNDYXJkVmlzaWJsZSIsImlzUGlubmVkIiwibG9hZFN0YXRlIiwic2hvd0Z1bGxTaXplIiwic21vb3RoaW5nRW5hYmxlZCIsInRhZyIsInRpdGxlIiwidG9vbHRpcFNvcnQiLCJ4QXhpc1R5cGUiLCJ4U2NhbGVUeXBlIiwidXNlRGFya01vZGUiLCJzZWxlY3RlZFRpbWUiLCJvbkZ1bGxTaXplVG9nZ2xlIiwib25QaW5DbGlja2VkIiwib25WaXNpYmlsaXR5Q2hhbmdlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihDZigwLCJzY2FsYXItY2FyZC1jb21wb25lbnQiLDApLFJmKCJvbkZ1bGxTaXplVG9nZ2xlIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uRnVsbFNpemVUb2dnbGUoKX0pKSgib25QaW5DbGlja2VkIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5waW5TdGF0ZUNoYW5nZWQuZW1pdChlKX0pKSgib25WaXNpYmlsaXR5Q2hhbmdlIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vblZpc2liaWxpdHlDaGFuZ2UoZSl9KSksX3koMSwiYXN5bmMiKSxfeSgyLCJhc3luYyIpLF95KDMsImFzeW5jIiksX3koNCwiYXN5bmMiKSxfeSg1LCJhc3luYyIpLF95KDYsImFzeW5jIiksX3koNywiYXN5bmMiKSxfeSg4LCJhc3luYyIpLF95KDksImFzeW5jIiksX3koMTAsImFzeW5jIiksX3koMTEsImFzeW5jIiksX3koMTIsImFzeW5jIiksX3koMTMsImFzeW5jIiksTWYoKSksMiZlJiZiZigiY2FyZElkIixuLmNhcmRJZCkoImNoYXJ0TWV0YWRhdGFNYXAiLEN5KDEsMTcsbi5jaGFydE1ldGFkYXRhTWFwJCkpKCJEYXRhRG93bmxvYWRDb21wb25lbnQiLG4uRGF0YURvd25sb2FkQ29tcG9uZW50KSgiZGF0YVNlcmllcyIsQ3koMiwxOSxuLmRhdGFTZXJpZXMkKSkoImlnbm9yZU91dGxpZXJzIixDeSgzLDIxLG4uaWdub3JlT3V0bGllcnMkKSkoImlzQ2FyZFZpc2libGUiLG4uaXNWaXNpYmxlKSgiaXNQaW5uZWQiLEN5KDQsMjMsbi5pc1Bpbm5lZCQpKSgibG9hZFN0YXRlIixDeSg1LDI1LG4ubG9hZFN0YXRlJCkpKCJzaG93RnVsbFNpemUiLG4uc2hvd0Z1bGxTaXplKSgic21vb3RoaW5nRW5hYmxlZCIsQ3koNiwyNyxuLnNtb290aGluZ0VuYWJsZWQkKSkoInRhZyIsQ3koNywyOSxuLnRhZyQpKSgidGl0bGUiLEN5KDgsMzEsbi50aXRsZSQpKSgidG9vbHRpcFNvcnQiLEN5KDksMzMsbi50b29sdGlwU29ydCQpKSgieEF4aXNUeXBlIixDeSgxMCwzNSxuLnhBeGlzVHlwZSQpKSgieFNjYWxlVHlwZSIsQ3koMTEsMzcsbi54U2NhbGVUeXBlJCkpKCJ1c2VEYXJrTW9kZSIsQ3koMTIsMzksbi51c2VEYXJrTW9kZSQpKSgic2VsZWN0ZWRUaW1lIixDeSgxMyw0MSxuLnNlbGVjdGVkVGltZSQpKX0sZGlyZWN0aXZlczpbcmJ0LHNidF0scGlwZXM6W1Z2XSxzdHlsZXM6WyJbX25naG9zdC0lQ09NUCVdIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgIH0iXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoY2J0LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6InNjYWxhci1jYXJkIix0ZW1wbGF0ZTonXG4gICAgPHNjYWxhci1jYXJkLWNvbXBvbmVudFxuICAgICAgW2NhcmRJZF09ImNhcmRJZCJcbiAgICAgIFtjaGFydE1ldGFkYXRhTWFwXT0iY2hhcnRNZXRhZGF0YU1hcCQgfCBhc3luYyJcbiAgICAgIFtEYXRhRG93bmxvYWRDb21wb25lbnRdPSJEYXRhRG93bmxvYWRDb21wb25lbnQiXG4gICAgICBbZGF0YVNlcmllc109ImRhdGFTZXJpZXMkIHwgYXN5bmMiXG4gICAgICBbaWdub3JlT3V0bGllcnNdPSJpZ25vcmVPdXRsaWVycyQgfCBhc3luYyJcbiAgICAgIFtpc0NhcmRWaXNpYmxlXT0iaXNWaXNpYmxlIlxuICAgICAgW2lzUGlubmVkXT0iaXNQaW5uZWQkIHwgYXN5bmMiXG4gICAgICBbbG9hZFN0YXRlXT0ibG9hZFN0YXRlJCB8IGFzeW5jIlxuICAgICAgW3Nob3dGdWxsU2l6ZV09InNob3dGdWxsU2l6ZSJcbiAgICAgIFtzbW9vdGhpbmdFbmFibGVkXT0ic21vb3RoaW5nRW5hYmxlZCQgfCBhc3luYyJcbiAgICAgIFt0YWddPSJ0YWckIHwgYXN5bmMiXG4gICAgICBbdGl0bGVdPSJ0aXRsZSQgfCBhc3luYyJcbiAgICAgIFt0b29sdGlwU29ydF09InRvb2x0aXBTb3J0JCB8IGFzeW5jIlxuICAgICAgW3hBeGlzVHlwZV09InhBeGlzVHlwZSQgfCBhc3luYyJcbiAgICAgIFt4U2NhbGVUeXBlXT0ieFNjYWxlVHlwZSQgfCBhc3luYyJcbiAgICAgIFt1c2VEYXJrTW9kZV09InVzZURhcmtNb2RlJCB8IGFzeW5jIlxuICAgICAgW3NlbGVjdGVkVGltZV09InNlbGVjdGVkVGltZSQgfCBhc3luYyJcbiAgICAgIChvbkZ1bGxTaXplVG9nZ2xlKT0ib25GdWxsU2l6ZVRvZ2dsZSgpIlxuICAgICAgKG9uUGluQ2xpY2tlZCk9InBpblN0YXRlQ2hhbmdlZC5lbWl0KCRldmVudCkiXG4gICAgICBvYnNlcnZlSW50ZXJzZWN0aW9uXG4gICAgICAob25WaXNpYmlsaXR5Q2hhbmdlKT0ib25WaXNpYmlsaXR5Q2hhbmdlKCRldmVudCkiXG4gICAgPjwvc2NhbGFyLWNhcmQtY29tcG9uZW50PlxuICAnLHN0eWxlczpbIlxuICAgICAgOmhvc3Qge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgfVxuICAgICJdLGNoYW5nZURldGVjdGlvbjpqbi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTppU31dfSkse0RhdGFEb3dubG9hZENvbXBvbmVudDpbe3R5cGU6Ul99XSxjYXJkSWQ6W3t0eXBlOlJffV0sZ3JvdXBOYW1lOlt7dHlwZTpSX31dLGZ1bGxXaWR0aENoYW5nZWQ6W3t0eXBlOkVffV0sZnVsbEhlaWdodENoYW5nZWQ6W3t0eXBlOkVffV0scGluU3RhdGVDaGFuZ2VkOlt7dHlwZTpFX31dfSk7ZnVuY3Rpb24gZGJ0KHQsZSxuKXtjb25zdCBvPVtdLHtsZWZ0OmkscmlnaHQ6YX09ZSxyPShhLWkpL247bGV0IHM9MCxsPTA7Zm9yKGxldCBlPTA7ZTxuO2UrKyl7Y29uc3QgYT1pK2UqcixjPWErcixkPWU9PT1uLTE7bGV0IHA9bDtmb3IobD0wO3M8dC5sZW5ndGg7KXtjb25zdCBlPXRbc10sbj1wYnQoZSxhLGMsIWQpO2lmKHArPW4uY3VycixsKz1uLm5leHQsZS54K2UuZHg+YylicmVhaztzKyt9by5wdXNoKHt4OmEsZHg6cix5OnB9KX1yZXR1cm4gb31mdW5jdGlvbiBwYnQodCxlLG4sbyl7Y29uc3QgaT10LngsYT10LngrdC5keDtpZihpPm58fGE8ZSlyZXR1cm57Y3VycjowLG5leHQ6MH07aWYoMD09PXQuZHgpcmV0dXJuIG8mJmE+PW4/e2N1cnI6MCxuZXh0OnQueX06e2N1cnI6dC55LG5leHQ6MH07Y29uc3Qgcj1NYXRoLm1pbihhLG4pLU1hdGgubWF4KGksZSk7cmV0dXJue2N1cnI6dC55KnIvdC5keCxuZXh0OjB9fWNvbnN0IG1idD1bIm1haW4iXSxmYnQ9WyJ4QXhpcyJdLHVidD1bInlBeGlzIl0sZ2J0PVsiY29udGVudCJdLGhidD1bImhpc3RvZ3JhbXMiXTtmdW5jdGlvbiBiYnQodCxlKXtpZigxJnQmJihvYSgpLENmKDAsImciKSxDZigxLCJ0ZXh0IiksUHUoMiksTWYoKSxNZigpKSwyJnQpe2NvbnN0IHQ9emYoKTtsdSgidHJhbnNmb3JtIix0LmdldENzc1RyYW5zbGF0ZVB4KHQudG9vbHRpcERhdGEueEF4aXMucG9zaXRpb24sOSkpLERjKDIpLHd1KHQudG9vbHRpcERhdGEueEF4aXMubGFiZWwpfX1mdW5jdGlvbiB5YnQodCxlKXtpZigxJnQmJihvYSgpLENmKDAsImciKSxDZigxLCJ0ZXh0IiksUHUoMiksTWYoKSxNZigpKSwyJnQpe2NvbnN0IHQ9emYoKTtsdSgidHJhbnNmb3JtIix0LmdldEdyb3VwVHJhbnNmb3JtKHQudG9vbHRpcERhdGEuY2xvc2VzdERhdHVtKSksRGMoMSkseW0oInkiLHQudG9vbHRpcERhdGEueUF4aXMucG9zaXRpb24pLERjKDEpLGt1KCIgIix0LnRvb2x0aXBEYXRhLnlBeGlzLmxhYmVsLCIgIil9fWZ1bmN0aW9uIF9idCh0LGUpe2lmKDEmdCYmKENmKDAsImRpdiIsMTYpLHZmKDEsImxpbmtlZC10aW1lLWZvYiIsMTcpLE1mKCkpLDImdCl7Y29uc3QgdD16ZigyKTtsdSgidHJhbnNmb3JtIix0LmdldENzc1RyYW5zbGF0ZVB4KDAsdC5zY2FsZXMudGVtcG9yYWxTY2FsZSh0LmxpbmtlZFRpbWUuZW5kU3RlcCkpKSxEYygxKSxiZigic3RlcCIsdC5saW5rZWRUaW1lLmVuZFN0ZXApfX1mdW5jdGlvbiBDYnQodCxlKXtpZigxJnQmJihvYSgpLGFhKCkseGYoMCksQ2YoMSwiZGl2IiwxNiksdmYoMiwibGlua2VkLXRpbWUtZm9iIiwxNyksTWYoKSxIbSgzLF9idCwyLDMsImRpdiIsMTgpLE9mKCkpLDImdCl7Y29uc3QgdD16ZigpO0RjKDEpLGx1KCJ0cmFuc2Zvcm0iLHQuZ2V0Q3NzVHJhbnNsYXRlUHgoMCx0LnNjYWxlcy50ZW1wb3JhbFNjYWxlKHQubGlua2VkVGltZS5zdGFydFN0ZXApKSksRGMoMSksYmYoInN0ZXAiLHQubGlua2VkVGltZS5zdGFydFN0ZXApLERjKDEpLGJmKCJuZ0lmIix0LmxpbmtlZFRpbWUuZW5kU3RlcCl9fWZ1bmN0aW9uIE1idCh0LGUpe2lmKDEmdCYmKG9hKCksQ2YoMCwiZyIpLHZmKDEsImxpbmUiLDE5KSxNZigpKSwyJnQpe2NvbnN0IHQ9ZS4kaW1wbGljaXQ7bHUoInRyYW5zZm9ybSIsemYoKS5nZXRDc3NUcmFuc2xhdGVQeCgwLHQpKX19ZnVuY3Rpb24gdmJ0KHQsZSl7MSZ0JiYob2EoKSx2ZigwLCJsaW5lIiwyMikpfWZ1bmN0aW9uIHhidCh0LGUpe2lmKDEmdCYmKG9hKCksdmYoMCwiY2lyY2xlIiwyMykpLDImdCl7Y29uc3QgdD16ZigpLiRpbXBsaWNpdCxlPXpmKCk7bHUoInRyYW5zZm9ybSIsZS5nZXRDc3NUcmFuc2xhdGVQeChlLmdldFVpQ29vcmRGcm9tQmluRm9yQ29udGVudChlLmdldENsb3Nlc3RCaW5Gcm9tQmluQ29vcmRpbmF0ZSh0LGUudG9vbHRpcERhdGEueFBvc2l0aW9uSW5CaW5Db29yZCkpLngsZS5nZXRVaUNvb3JkRnJvbUJpbkZvckNvbnRlbnQoZS5nZXRDbG9zZXN0QmluRnJvbUJpbkNvb3JkaW5hdGUodCxlLnRvb2x0aXBEYXRhLnhQb3NpdGlvbkluQmluQ29vcmQpKS55KSl9fWZ1bmN0aW9uIE9idCh0LGUpe2lmKDEmdCYmKG9hKCksQ2YoMCwiZyIpLEhtKDEsdmJ0LDEsMCwibGluZSIsMjApLHZmKDIsInBhdGgiKSxIbSgzLHhidCwxLDIsImNpcmNsZSIsMjEpLE1mKCkpLDImdCl7Y29uc3QgdD1lLiRpbXBsaWNpdCxuPXpmKCk7bHUoInRyYW5zZm9ybSIsbi5nZXRHcm91cFRyYW5zZm9ybSh0KSkoImNvbG9yIixuLmdldEhpc3RvZ3JhbUZpbGwodCkpLGN1KCJoaXN0b2dyYW0iLCEwKSgibm8tY29sb3IiLCFuLmlzRGF0dW1JbkxpbmtlZFRpbWVSYW5nZSh0KSksRGMoMSksYmYoIm5nSWYiLG4ubW9kZT09PW4uSGlzdG9ncmFtTW9kZS5PRkZTRVQpLERjKDEpLHltKCJkIixuLmdldEhpc3RvZ3JhbVBhdGgodCkpLERjKDEpLGJmKCJuZ0lmIixuLnRvb2x0aXBEYXRhKX19ZnVuY3Rpb24gUGJ0KHQsZSl7aWYoMSZ0JiYob2EoKSx2ZigwLCJjaXJjbGUiLDIzKSksMiZ0KXtjb25zdCB0PXpmKDIpO3ltKCJjeCIsdC5nZXRVaUNvb3JkRnJvbUJpbkZvckNvbnRlbnQodC50b29sdGlwRGF0YS5jbG9zZXN0QmluKS54KSgiY3kiLHQuZ2V0VWlDb29yZEZyb21CaW5Gb3JDb250ZW50KHQudG9vbHRpcERhdGEuY2xvc2VzdEJpbikueSl9fWZ1bmN0aW9uIHdidCh0LGUpe2lmKDEmdCYmKG9hKCksQ2YoMCwiZyIsNCksQ2YoMSwiZyIpLHZmKDIsInBhdGgiKSxIbSgzLFBidCwxLDIsImNpcmNsZSIsMjQpLE1mKCksQ2YoNCwiZyIsMjUpLENmKDUsInRleHQiLDI2KSxQdSg2KSxNZigpLE1mKCksTWYoKSksMiZ0KXtjb25zdCB0PXpmKCk7RGMoMSksbHUoInRyYW5zZm9ybSIsdC5nZXRHcm91cFRyYW5zZm9ybSh0LnRvb2x0aXBEYXRhLmNsb3Nlc3REYXR1bSkpLERjKDEpLHltKCJkIix0LmdldEhpc3RvZ3JhbVBhdGgodC50b29sdGlwRGF0YS5jbG9zZXN0RGF0dW0pKSxEYygxKSxiZigibmdJZiIsdC50b29sdGlwRGF0YS5jbG9zZXN0QmluKSxEYygxKSxsdSgidHJhbnNmb3JtIix0LmdldENzc1RyYW5zbGF0ZVB4KHQudG9vbHRpcERhdGEudmFsdWUucG9zaXRpb24ueCx0LnRvb2x0aXBEYXRhLnZhbHVlLnBvc2l0aW9uLnkpKSxEYygyKSx3dSh0LnRvb2x0aXBEYXRhLnZhbHVlLmxhYmVsKX19Y2xhc3Mga2J0e2NvbnN0cnVjdG9yKHQpe3RoaXMuY2hhbmdlRGV0ZWN0b3I9dCx0aGlzLm1vZGU9akUuT0ZGU0VULHRoaXMudGltZVByb3BlcnR5PVZFLlNURVAsdGhpcy5saW5rZWRUaW1lPW51bGwsdGhpcy5IaXN0b2dyYW1Nb2RlPWpFLHRoaXMuVGltZVByb3BlcnR5PVZFLHRoaXMudG9vbHRpcERhdGE9bnVsbCx0aGlzLm5nVW5zdWJzY3JpYmU9bmV3IEIsdGhpcy5sYXlvdXQ9e2hpc3RvZ3JhbUhlaWdodDowLGNvbnRlbnRDbGllbnRSZWN0OntoZWlnaHQ6MCx3aWR0aDowfX0sdGhpcy5zY2FsZXM9bnVsbCx0aGlzLmZvcm1hdHRlcnM9e2Jpbk51bWJlcjpMbnQoIi4zfnMiKSxjb3VudDpMbnQoIi4zbiIpLHdhbGxUaW1lOnRpdCgiJW0vJWQgJVgiKSxzdGVwOkxudCgiLjBmIikscmVsYXRpdmU6dD0+TG50KCIuMXIiKSh0LzM2ZTUpKyJoIn0sdGhpcy5kb21WaXNpYmxlPSExfW5nT25DaGFuZ2VzKCl7dGhpcy51cGRhdGVDaGFydElmVmlzaWJsZSgpfW5nT25EZXN0cm95KCl7dGhpcy5uZ1Vuc3Vic2NyaWJlLm5leHQoKSx0aGlzLm5nVW5zdWJzY3JpYmUuY29tcGxldGUoKX1uZ0FmdGVyVmlld0luaXQoKXtsZSh0aGlzLm1haW4ubmF0aXZlRWxlbWVudCwibW91c2Vtb3ZlIix7cGFzc2l2ZTohMH0pLnBpcGUoamUodGhpcy5uZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKCh0PT50aGlzLm9uTW91c2VNb3ZlKHQpKSl9Z2V0Q3NzVHJhbnNsYXRlUHgodCxlKXtyZXR1cm5gdHJhbnNsYXRlKCR7dH1weCwgJHtlfXB4KWB9Z2V0Q2xvc2VzdEJpbkZyb21CaW5Db29yZGluYXRlKHQsZSl7aWYoIXQuYmlucy5sZW5ndGgpcmV0dXJue3g6MCxkeDowLHk6MH07Y29uc3Qgbj10LmJpbnNbMF0sbz10LmJpbnMuc2xpY2UoLTEpWzBdO2lmKGU8bi54KXJldHVybiBuO2lmKGU+PW8ueCtvLmR4KXJldHVybiBvO3JldHVybiB0LmJpbnMuZmluZCgodD0+dC54PD1lJiZlPHQueCt0LmR4KSl9Z2V0VWlDb29yZEZyb21CaW5Gb3JDb250ZW50KHQpe3JldHVybiB0aGlzLnNjYWxlcz97eDp0aGlzLnNjYWxlcy5iaW5TY2FsZShSYnQodCkpLHk6dGhpcy5zY2FsZXMuY291bnRTY2FsZSh0LnkpfTp7eDowLHk6MH19Z2V0SGlzdG9ncmFtUGF0aCh0KXtpZighdGhpcy5zY2FsZXN8fCF0LmJpbnMubGVuZ3RoKXJldHVybiIiO2NvbnN0IGU9dGhpcy5zY2FsZXMuYmluU2NhbGUsbj10aGlzLnNjYWxlcy5jb3VudFNjYWxlLG89dC5iaW5zWzBdLGk9dC5iaW5zLnNsaWNlKC0xKVswXSxhPVtgTSR7ZShSYnQobykpfSwke24oMCl9YF07Zm9yKGNvbnN0IG8gb2YgdC5iaW5zKWEucHVzaChgTCR7ZShSYnQobykpfSwke24oby55KX1gKTtyZXR1cm4gYS5wdXNoKGBMJHtlKFJidChpKSl9LCR7bigwKX1gKSxhLmpvaW4oIiIpfXRyYWNrQnlXYWxsVGltZSh0KXtyZXR1cm4gdC53YWxsVGltZX1nZXRHcm91cFRyYW5zZm9ybSh0KXtyZXR1cm4gdGhpcy5zY2FsZXMmJnRoaXMubW9kZSE9PWpFLk9WRVJMQVk/dGhpcy5nZXRDc3NUcmFuc2xhdGVQeCgwLHRoaXMuc2NhbGVzLnRlbXBvcmFsU2NhbGUodGhpcy5nZXRUaW1lVmFsdWUodCkpKToiIn1pc0xpbmtlZFRpbWVFbmFibGVkKHQpe3JldHVybiBCb29sZWFuKHRoaXMubW9kZT09PWpFLk9GRlNFVCYmdGhpcy50aW1lUHJvcGVydHk9PT1WRS5TVEVQJiZ0aGlzLnNjYWxlcyYmdCl9aXNEYXR1bUluTGlua2VkVGltZVJhbmdlKHQpe3JldHVybiF0aGlzLmlzTGlua2VkVGltZUVuYWJsZWQodGhpcy5saW5rZWRUaW1lKXx8KG51bGw9PT10aGlzLmxpbmtlZFRpbWUuZW5kU3RlcD90aGlzLmxpbmtlZFRpbWUuc3RhcnRTdGVwPT09dC5zdGVwOnRoaXMubGlua2VkVGltZS5zdGFydFN0ZXA8PXQuc3RlcCYmdGhpcy5saW5rZWRUaW1lLmVuZFN0ZXA+PXQuc3RlcCl9Z2V0SGlzdG9ncmFtRmlsbCh0KXtyZXR1cm4gdGhpcy5zY2FsZXM/dGhpcy5zY2FsZXMuZDNDb2xvclNjYWxlKHRoaXMuZ2V0VGltZVZhbHVlKHQpKToiIn1nZXRHcmlkVGlja1lMb2NzKCl7aWYoIXRoaXMuc2NhbGVzfHx0aGlzLm1vZGU9PT1qRS5PRkZTRVQpcmV0dXJuW107Y29uc3QgdD10aGlzLnNjYWxlcy5jb3VudFNjYWxlO3JldHVybiB0LnRpY2tzKCkubWFwKChlPT50KGUpKSl9b25SZXNpemUoKXt0aGlzLnVwZGF0ZUNsaWVudFJlY3RzKCksdGhpcy51cGRhdGVDaGFydElmVmlzaWJsZSgpfW9uVmlzaWJpbGl0eUNoYW5nZSh7dmlzaWJsZTp0fSl7dGhpcy5kb21WaXNpYmxlPXQsdCYmKHRoaXMudXBkYXRlQ2xpZW50UmVjdHMoKSx0aGlzLnVwZGF0ZUNoYXJ0SWZWaXNpYmxlKCkpfWdldFRpbWVWYWx1ZSh0KXtzd2l0Y2godGhpcy50aW1lUHJvcGVydHkpe2Nhc2UgVkUuV0FMTF9USU1FOnJldHVybiB0LndhbGxUaW1lO2Nhc2UgVkUuU1RFUDpyZXR1cm4gdC5zdGVwO2Nhc2UgVkUuUkVMQVRJVkU6cmV0dXJuIHQud2FsbFRpbWUtdGhpcy5kYXRhWzBdLndhbGxUaW1lfX11cGRhdGVDbGllbnRSZWN0cygpe3RoaXMuY29udGVudCYmKHRoaXMubGF5b3V0LmNvbnRlbnRDbGllbnRSZWN0PXRoaXMuY29udGVudC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHRoaXMubGF5b3V0Lmhpc3RvZ3JhbUhlaWdodD10aGlzLmxheW91dC5jb250ZW50Q2xpZW50UmVjdC5oZWlnaHQvMi41KX11cGRhdGVDaGFydElmVmlzaWJsZSgpe3RoaXMuZG9tVmlzaWJsZSYmKHRoaXMuc2NhbGVzPXRoaXMuY29tcHV0ZVNjYWxlcyh0aGlzLmRhdGEpLHRoaXMucmVuZGVyWEF4aXMoKSx0aGlzLnJlbmRlcllBeGlzKCksdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCkpfWNvbXB1dGVTY2FsZXModCl7Y29uc3R7d2lkdGg6ZSxoZWlnaHQ6bn09dGhpcy5sYXlvdXQuY29udGVudENsaWVudFJlY3Qse21pbjpvLG1heDppfT1EYnQodCwodD0+KGZ1bmN0aW9uIGUodCxuKXtyZXR1cm4gdC5yZWR1Y2UoKCh0LGUpPT5NYXRoLm1pbih0LG4oZSkpKSwxLzApfSkodC5iaW5zLCh0PT50LngpKSksKHQ9PlNidCh0LmJpbnMsKCh7eDp0LGR4OmV9KT0+dCtlKSkpKSxhPVNidCh0LCh0PT5TYnQodC5iaW5zLCgoe3k6dH0pPT50KSkpKSxyPW1vdCgpLmRvbWFpbihbbyxpXSkubmljZSgpLHM9dGhpcy5tb2RlIT09akUuT1ZFUkxBWSYmdGhpcy50aW1lUHJvcGVydHk9PVZFLldBTExfVElNRT9TYXQoKTptb3QoKSxsPXQubWFwKCh0PT50aGlzLmdldFRpbWVWYWx1ZSh0KSkpLHttaW46YyxtYXg6ZH09RGJ0KGwsKHQ9PnQpKSxwPVtjLGRdO3MuZG9tYWluKHApO2NvbnN0IG09bW90KCk7bS5kb21haW4oWzAsYV0pO2NvbnN0IGY9VDkodGhpcy5jb2xvcnx8IiMwMDAiKSx1PW1vdCgpO2lmKHUuZG9tYWluKHApLHIucmFuZ2UoWzAsZV0pLHUucmFuZ2UoW2YuYnJpZ2h0ZXIoKSxmLmRhcmtlcigpXSksdS5pbnRlcnBvbGF0ZSh5dHQpLHRoaXMubW9kZT09PWpFLk9WRVJMQVkpcy5yYW5nZShbbixuXSksbS5yYW5nZShbbiwwXSk7ZWxzZXtzLnJhbmdlKFtuLSh0aGlzLm1vZGU9PT1qRS5PRkZTRVQ/bi10aGlzLmxheW91dC5oaXN0b2dyYW1IZWlnaHQ6MCksbl0pLG0ucmFuZ2UoWzAsLXRoaXMubGF5b3V0Lmhpc3RvZ3JhbUhlaWdodF0pfXJldHVybntiaW5TY2FsZTpyLGQzQ29sb3JTY2FsZTp1LGNvdW50U2NhbGU6bSx0ZW1wb3JhbFNjYWxlOnN9fXJlbmRlclhBeGlzKCl7aWYoIXRoaXMuc2NhbGVzKXJldHVybjtjb25zdHt3aWR0aDp0fT10aGlzLmxheW91dC5jb250ZW50Q2xpZW50UmVjdCxlPUI2KHRoaXMuc2NhbGVzLmJpblNjYWxlKS50aWNrcyhNYXRoLm1heCgyLHQvMjApKTtlLnRpY2tGb3JtYXQodGhpcy5mb3JtYXR0ZXJzLmJpbk51bWJlciksZShuOCh0aGlzLnhBeGlzLm5hdGl2ZUVsZW1lbnQpKX1nZXRZQXhpc0Zvcm1hdHRlcigpe2lmKHRoaXMubW9kZT09PWpFLk9WRVJMQVkpcmV0dXJuIHRoaXMuZm9ybWF0dGVycy5jb3VudDtzd2l0Y2godGhpcy50aW1lUHJvcGVydHkpe2Nhc2UgVkUuV0FMTF9USU1FOnJldHVybiB0aGlzLmZvcm1hdHRlcnMud2FsbFRpbWU7Y2FzZSBWRS5TVEVQOnJldHVybiB0aGlzLmZvcm1hdHRlcnMuc3RlcDtjYXNlIFZFLlJFTEFUSVZFOnJldHVybiB0aGlzLmZvcm1hdHRlcnMucmVsYXRpdmU7ZGVmYXVsdDp0aHJvdyBSYW5nZUVycm9yKGBZIGF4aXMgZm9ybWF0dGVyIGZvciAke3RoaXMudGltZVByb3BlcnR5fSBtdXN0IGJlIGltcGxlbWVudGVkYCl9fXJlbmRlcllBeGlzKCl7aWYoIXRoaXMuc2NhbGVzKXJldHVybjtjb25zdCB0PXRoaXMubW9kZT09PWpFLk9WRVJMQVk/dGhpcy5zY2FsZXMuY291bnRTY2FsZTp0aGlzLnNjYWxlcy50ZW1wb3JhbFNjYWxlLHtoZWlnaHQ6ZX09dGhpcy5sYXlvdXQuY29udGVudENsaWVudFJlY3Qsbj1MNih0KS50aWNrcyhNYXRoLm1heCgyLGUvMTUpKTtuLnRpY2tGb3JtYXQodGhpcy5nZXRZQXhpc0Zvcm1hdHRlcigpKSxuKG44KHRoaXMueUF4aXMubmF0aXZlRWxlbWVudCkpfWZpbmRDbG9zZXN0RGF0dW1JbmRleCh0KXtsZXQgZT10LnRhcmdldCxuPWU7Zm9yKDtlJiZlIT09dGhpcy5oaXN0b2dyYW1zLm5hdGl2ZUVsZW1lbnQ7KW49ZSxlPWUucGFyZW50RWxlbWVudDtyZXR1cm4gZT9BcnJheS5mcm9tKGUuY2hpbGRyZW4pLmluZGV4T2Yobik6LTF9b25Nb3VzZU1vdmVGb3JUZXN0T25seSh0KXtyZXR1cm4gdGhpcy5vbk1vdXNlTW92ZSh0KX1vbk1vdXNlTW92ZSh0KXtpZighdGhpcy5zY2FsZXMpcmV0dXJuO2NvbnN0IGU9dC5vZmZzZXRYLG49dC5vZmZzZXRZLG89dGhpcy5maW5kQ2xvc2VzdERhdHVtSW5kZXgodCk7aWYobzwwKXJldHVybjtjb25zdCBpPXRoaXMuc2NhbGVzLmJpblNjYWxlLmludmVydChlKSxhPXRoaXMuZGF0YVtvXSxyPXRoaXMuZ2V0Q2xvc2VzdEJpbkZyb21CaW5Db29yZGluYXRlKGEsaSk7dGhpcy50b29sdGlwRGF0YT17dmFsdWU6e3Bvc2l0aW9uOnt4OmUseTpufSxsYWJlbDp0aGlzLm1vZGU9PT1qRS5PRkZTRVQ/dGhpcy5mb3JtYXR0ZXJzLmNvdW50KHIueSk6YFN0ZXA6ICR7dGhpcy5mb3JtYXR0ZXJzLnN0ZXAoYS5zdGVwKX1gfSx4QXhpczp7cG9zaXRpb246dGhpcy5nZXRVaUNvb3JkRnJvbUJpbkZvckNvbnRlbnQocikueCxsYWJlbDp0aGlzLmZvcm1hdHRlcnMuYmluTnVtYmVyKFJidChyKSl9LHlBeGlzOntwb3NpdGlvbjp0aGlzLnNjYWxlcy5jb3VudFNjYWxlKHRoaXMubW9kZT09PWpFLk9GRlNFVD8wOnIueSksbGFiZWw6dGhpcy5tb2RlPT09akUuT0ZGU0VUP3RoaXMuZ2V0WUF4aXNGb3JtYXR0ZXIoKSh0aGlzLmdldFRpbWVWYWx1ZShhKSk6dGhpcy5mb3JtYXR0ZXJzLmJpbk51bWJlcihyLnkpfSx4UG9zaXRpb25JbkJpbkNvb3JkOmksY2xvc2VzdERhdHVtOmEsY2xvc2VzdEJpbjpyfSx0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKX19ZnVuY3Rpb24gU2J0KHQsZSl7cmV0dXJuIHQucmVkdWNlKCgodCxuKT0+TWF0aC5tYXgodCxlKG4pKSksLTEvMCl9ZnVuY3Rpb24gRGJ0KHQsZSxuKXtufHwobj1lKTtsZXQgbz0xLzAsaT0tMS8wO2Zvcihjb25zdCBhIG9mIHQpbz1NYXRoLm1pbihvLGUoYSkpLGk9TWF0aC5tYXgoaSxuKGEpKTtyZXR1cm57bWluOm8sbWF4Oml9fWZ1bmN0aW9uIFJidCh0KXtyZXR1cm4gdC54Ky41KnQuZHh9ZnVuY3Rpb24gRWJ0KHQsZSl7MSZ0JiZ2ZigwLCJ2aXMtc2VsZWN0ZWQtdGltZS1jbGlwcGVkIil9ZnVuY3Rpb24gQWJ0KHQsZSl7MSZ0JiYoQ2YoMCwic3BhbiIsMTQpLHZmKDEsIm1hdC1zcGlubmVyIiwxNSksTWYoKSl9a2J0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxrYnQpKGdmKE9iKSl9LGtidC7JtWNtcD1zbyh7dHlwZTprYnQsc2VsZWN0b3JzOltbInRiLWhpc3RvZ3JhbSJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmKFZ5KG1idCw1KSxWeShmYnQsNSksVnkodWJ0LDUpLFZ5KGdidCw1KSxWeShoYnQsNSkpLDImZSl7bGV0IHQ7QnkodD1VeSgpKSYmKG4ubWFpbj10LmZpcnN0KSxCeSh0PVV5KCkpJiYobi54QXhpcz10LmZpcnN0KSxCeSh0PVV5KCkpJiYobi55QXhpcz10LmZpcnN0KSxCeSh0PVV5KCkpJiYobi5jb250ZW50PXQuZmlyc3QpLEJ5KHQ9VXkoKSkmJihuLmhpc3RvZ3JhbXM9dC5maXJzdCl9fSxpbnB1dHM6e21vZGU6Im1vZGUiLHRpbWVQcm9wZXJ0eToidGltZVByb3BlcnR5Iixjb2xvcjoiY29sb3IiLGRhdGE6ImRhdGEiLGxpbmtlZFRpbWU6ImxpbmtlZFRpbWUifSxmZWF0dXJlczpbcW9dLGRlY2xzOjIyLHZhcnM6MTcsY29uc3RzOltbImRldGVjdFJlc2l6ZSIsIiIsIm9ic2VydmVJbnRlcnNlY3Rpb24iLCIiLDMsIm9uUmVzaXplIiwib25WaXNpYmlsaXR5Q2hhbmdlIl0sWyJtYWluIiwiIl0sWzEsImF4aXMiLCJ4LWF4aXMiXSxbInhBeGlzIiwiIl0sWzEsInRvb2x0aXAiXSxbMywidHJhbnNmb3JtIiw0LCJuZ0lmIl0sWzEsImF4aXMiLCJ5LWF4aXMiXSxbInlBeGlzIiwiIl0sWzQsIm5nSWYiXSxbMSwiY29udGVudCJdLFsiY29udGVudCIsIiJdLFsxLCJncmlkIl0sWzMsInRyYW5zZm9ybSIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWyJoaXN0b2dyYW1zIiwiIl0sWzMsInRyYW5zZm9ybSIsImhpc3RvZ3JhbSIsIm5vLWNvbG9yIiwiY29sb3IiLDQsIm5nRm9yIiwibmdGb3JPZiIsIm5nRm9yVHJhY2tCeSJdLFsiY2xhc3MiLCJ0b29sdGlwIiw0LCJuZ0lmIl0sWzEsImxpbmtlZC10aW1lIl0sWzEsImxpbmtlZC10aW1lLWZvYiIsMywic3RlcCJdLFsiY2xhc3MiLCJsaW5rZWQtdGltZSIsMywidHJhbnNmb3JtIiw0LCJuZ0lmIl0sWyJ4MiIsIjEwMCUiLDEsInRpY2siXSxbImNsYXNzIiwiYmFzZWxpbmUiLCJ4MiIsIjEwMCUiLDQsIm5nSWYiXSxbInIiLCIyIiwzLCJ0cmFuc2Zvcm0iLDQsIm5nSWYiXSxbIngyIiwiMTAwJSIsMSwiYmFzZWxpbmUiXSxbInIiLCIyIl0sWyJyIiwiMiIsNCwibmdJZiJdLFsxLCJ2YWx1ZS1sYWJlbCJdLFsieCIsIjMiLCJ5IiwiLTMiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKENmKDAsImRpdiIsMCwxKSxSZigib25SZXNpemUiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25SZXNpemUoKX0pKSgib25WaXNpYmlsaXR5Q2hhbmdlIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vblZpc2liaWxpdHlDaGFuZ2UoZSl9KSksb2EoKSxDZigyLCJzdmciLDIpLHZmKDMsImciLG51bGwsMyksQ2YoNSwiZyIsNCksSG0oNixiYnQsMywzLCJnIiw1KSxNZigpLE1mKCksYWEoKSxDZig3LCJkaXYiLDYpLG9hKCksQ2YoOCwic3ZnIiksdmYoOSwiZyIsbnVsbCw3KSxDZigxMSwiZyIsNCksSG0oMTIseWJ0LDMsNCwiZyIsNSksTWYoKSxNZigpLEhtKDEzLENidCw0LDQsIm5nLWNvbnRhaW5lciIsOCksTWYoKSxDZigxNCwic3ZnIiw5LDEwKSxDZigxNiwiZyIsMTEpLEhtKDE3LE1idCwyLDIsImciLDEyKSxNZigpLENmKDE4LCJnIixudWxsLDEzKSxIbSgyMCxPYnQsNCwxMSwiZyIsMTQpLE1mKCksSG0oMjEsd2J0LDcsNywiZyIsMTUpLE1mKCksTWYoKSksMiZlJiYobXUoIm1haW4gIituLm1vZGUrIiAiK24udGltZVByb3BlcnR5KSxEYyg2KSxiZigibmdJZiIsbi50b29sdGlwRGF0YSksRGMoNSksbHUoInRyYW5zZm9ybSIsbi5nZXRDc3NUcmFuc2xhdGVQeCg5LDApKSxEYygxKSxiZigibmdJZiIsbi50b29sdGlwRGF0YSksRGMoMSksYmYoIm5nSWYiLG4uaXNMaW5rZWRUaW1lRW5hYmxlZChuLmxpbmtlZFRpbWUpKSxEYyg0KSxiZigibmdGb3JPZiIsbi5nZXRHcmlkVGlja1lMb2NzKCkpLERjKDEpLGN1KCJoaXN0b2dyYW1zIiwhMCkoImxpbmtlZC10aW1lLWVuYWJsZWQiLG4ubGlua2VkVGltZSkoImxpbmtlZC10aW1lLXNpbmdsZS1zdGVwIixuLmxpbmtlZFRpbWUmJiFuLmxpbmtlZFRpbWUuZW5kU3RlcCksRGMoMiksYmYoIm5nRm9yT2YiLG4uZGF0YSkoIm5nRm9yVHJhY2tCeSIsbi50cmFja0J5V2FsbFRpbWUpLERjKDEpLGJmKCJuZ0lmIixuLnRvb2x0aXBEYXRhKSl9LGRpcmVjdGl2ZXM6WyRRLHNidCxQdix4dixqaHRdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgdHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfVtfbmdob3N0LSVDT01QJV0sIC5tYWluW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmlubGluZS1ibG9jaztoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfVtfbmdob3N0LSVDT01QJV17Ym94LXNpemluZzpib3JkZXItYm94O3BhZGRpbmc6MTBweH0ubWFpbltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtYXJlYXM6ImNvbnRlbnQgeS1heGlzIiAieC1heGlzIC4iO2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnIgNTBweDtncmlkLXRlbXBsYXRlLXJvd3M6MWZyIDMwcHh9Lm1haW4ud2FsbF90aW1lW19uZ2NvbnRlbnQtJUNPTVAlXXtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyIDc1cHh9LnRvb2x0aXBbX25nY29udGVudC0lQ09NUCVdLCAuYmFzZWxpbmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMwMDB9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLnRvb2x0aXBbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAudG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAuYmFzZWxpbmVbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuYmFzZWxpbmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9LmxpbmtlZC10aW1lLWZvYltfbmdjb250ZW50LSVDT01QJV0gICB0ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLnRvb2x0aXBbX25nY29udGVudC0lQ09NUCVdICAgdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6Ym9sZDtmb250LXNpemU6MTBweH0ubGlua2VkLXRpbWUtZm9iW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRleHRbX25nY29udGVudC0lQ09NUCVdLCAubGlua2VkLXRpbWUtZm9iW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC50b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRleHRbX25nY29udGVudC0lQ09NUCVdLCAudG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVde2ZpbGw6Y3VycmVudENvbG9yfS5saW5rZWQtdGltZS1mb2JbX25nY29udGVudC0lQ09NUCVdICAgLnZhbHVlLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLnRvb2x0aXBbX25nY29udGVudC0lQ09NUCVdICAgLnZhbHVlLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtkb21pbmFudC1iYXNlbGluZTppZGVvZ3JhcGhpYzt0ZXh0LWFuY2hvcjpzdGFydH0ubGlua2VkLXRpbWVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6OXB4O3RvcDowO2hlaWdodDoxMDAlO3JpZ2h0OjB9LmxpbmtlZC10aW1lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5saW5rZWQtdGltZS1mb2JbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6aW5saW5lLWJsb2NrO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpfS5heGlzW19uZ2NvbnRlbnQtJUNPTVAlXSAgICB7Y29sb3I6IzYxNjE2MTtwb3NpdGlvbjpyZWxhdGl2ZTtvdmVyZmxvdzpoaWRkZW59Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLmF4aXNbX25nY29udGVudC0lQ09NUCVdICAgICwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmF4aXNbX25nY29udGVudC0lQ09NUCVdICAgIHtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX0uYXhpc1tfbmdjb250ZW50LSVDT01QJV0gICAgIC5kb21haW4sIC5heGlzW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgLnRpY2sgdGV4dHtkaXNwbGF5Om5vbmV9LmF4aXNbX25nY29udGVudC0lQ09NUCVdICAgICAudGljazpudGgtY2hpbGQoMm4rMSkgdGV4dHtkaXNwbGF5OmluaXRpYWx9c3ZnW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlO3BvaW50ZXItZXZlbnRzOnZpc2libGVQYWludGVkfXN2Z1tfbmdjb250ZW50LSVDT01QJV0gICBsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgc3ZnW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIHN2Z1tfbmdjb250ZW50LSVDT01QJV0gICAudG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZX1zdmdbX25nY29udGVudC0lQ09NUCVdICAgZ1tfbmdjb250ZW50LSVDT01QJV17d2lsbC1jaGFuZ2U6dHJhbnNmb3JtfS54LWF4aXNbX25nY29udGVudC0lQ09NUCVde2dyaWQtYXJlYTp4LWF4aXN9LngtYXhpc1tfbmdjb250ZW50LSVDT01QJV0gICAudG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17ZG9taW5hbnQtYmFzZWxpbmU6aGFuZ2luZzt0ZXh0LWFuY2hvcjptaWRkbGV9LnktYXhpc1tfbmdjb250ZW50LSVDT01QJV17Z3JpZC1hcmVhOnktYXhpczstd2Via2l0LW1hc2staW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgIzAwMDAgMCUsICMwMDAgMTAlLCAjMDAwIDkwJSwgIzAwMDAgMTAwJSk7bWFzay1pbWFnZTpsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAjMDAwMCAwJSwgIzAwMCAxMCUsICMwMDAgOTAlLCAjMDAwMCAxMDAlKX0ueS1heGlzW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC50b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtkb21pbmFudC1iYXNlbGluZTptaWRkbGU7dGV4dC1hbmNob3I6c3RhcnR9LmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLnRpY2tbX25nY29udGVudC0lQ09NUCVdLCAuYXhpc1tfbmdjb250ZW50LSVDT01QJV0gICAgIC50aWNrIGxpbmV7c3Ryb2tlOiNkZGR9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLnRpY2tbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAudGlja1tfbmdjb250ZW50LSVDT01QJV17c3Ryb2tlOiM1NTV9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLmF4aXNbX25nY29udGVudC0lQ09NUCVdICAgICAudGljayBsaW5lLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuYXhpc1tfbmdjb250ZW50LSVDT01QJV0gICAgIC50aWNrIGxpbmV7c3Ryb2tlOiM1NTV9LmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2dyaWQtYXJlYTpjb250ZW50fS5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC50aWNrW19uZ2NvbnRlbnQtJUNPTVAlXXtzdHJva2Utd2lkdGg6MXB4O3N0cm9rZS1kYXNoYXJyYXk6Mn0uY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAuY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICBwYXRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmaWxsOmN1cnJlbnRDb2xvcjtzdHJva2Utb3BhY2l0eTouNjtzdHJva2Utd2lkdGg6MXB4fS5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17ZmlsdGVyOmRyb3Atc2hhZG93KDAgMCAxcHggcmdiYSgwLCAwLCAwLCAwLjYpKTtzdHJva2U6I2ZmZjt3aWxsLWNoYW5nZTp0cmFuc2Zvcm19LmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLmJhc2VsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtzdHJva2Utb3BhY2l0eTouMTtzdHJva2Utd2lkdGg6MXB4O3N0cm9rZTpjdXJyZW50Q29sb3I7d2lkdGg6MTAwJX0uY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAudG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV0gICBwYXRoW19uZ2NvbnRlbnQtJUNPTVAlXXtzdHJva2Utb3BhY2l0eToxO3N0cm9rZTpjdXJyZW50Q29sb3I7ZmlsbDp0cmFuc3BhcmVudH0uY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAubm8tY29sb3JbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjIxLDIyMSwyMjEsLjQpICFpbXBvcnRhbnR9LmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm5vLWNvbG9yW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBhdGhbX25nY29udGVudC0lQ09NUCVde3N0cm9rZS1vcGFjaXR5Oi4yfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5uby1jb2xvcltfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5uby1jb2xvcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSg1MSw1MSw1MSwuNCkgIWltcG9ydGFudH0ub2Zmc2V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5oaXN0b2dyYW1zW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBhdGhbX25nY29udGVudC0lQ09NUCVde3N0cm9rZTojZmZmfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5vZmZzZXRbX25nY29udGVudC0lQ09NUCVdICAgLmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLmhpc3RvZ3JhbXNbX25nY29udGVudC0lQ09NUCVdICAgcGF0aFtfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5vZmZzZXRbX25nY29udGVudC0lQ09NUCVdICAgLmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLmhpc3RvZ3JhbXNbX25nY29udGVudC0lQ09NUCVdICAgcGF0aFtfbmdjb250ZW50LSVDT01QJV17c3Ryb2tlOiM1NTV9Lm9mZnNldFtfbmdjb250ZW50LSVDT01QJV0gICAuY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAuaGlzdG9ncmFtcy5saW5rZWQtdGltZS1zaW5nbGUtc3RlcFtfbmdjb250ZW50LSVDT01QJV0gICBbX25nY29udGVudC0lQ09NUCVdOm5vdCgubm8tY29sb3IpICAgcGF0aFtfbmdjb250ZW50LSVDT01QJV17c3Ryb2tlOiMwMDB9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLm9mZnNldFtfbmdjb250ZW50LSVDT01QJV0gICAuY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAuaGlzdG9ncmFtcy5saW5rZWQtdGltZS1zaW5nbGUtc3RlcFtfbmdjb250ZW50LSVDT01QJV0gICBbX25nY29udGVudC0lQ09NUCVdOm5vdCgubm8tY29sb3IpICAgcGF0aFtfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5vZmZzZXRbX25nY29udGVudC0lQ09NUCVdICAgLmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLmhpc3RvZ3JhbXMubGlua2VkLXRpbWUtc2luZ2xlLXN0ZXBbX25nY29udGVudC0lQ09NUCVdICAgW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm5vLWNvbG9yKSAgIHBhdGhbX25nY29udGVudC0lQ09NUCVde3N0cm9rZTojZmZmfS5vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC54LWF4aXNbX25nY29udGVudC0lQ09NUCVdICAgICAudGljayBsaW5le2Rpc3BsYXk6bm9uZX0ub3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0gICAuY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICBwYXRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmaWxsLW9wYWNpdHk6MDtzdHJva2U6Y3VycmVudENvbG9yfS50b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9Lm1haW5bX25nY29udGVudC0lQ09NUCVdOmhvdmVyICAgLmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1haW5bX25nY29udGVudC0lQ09NUCVdOmhvdmVyICAgLnRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6YmxvY2t9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGtidCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJ0Yi1oaXN0b2dyYW0iLHRlbXBsYXRlVXJsOiJoaXN0b2dyYW1fY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbImhpc3RvZ3JhbV9jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOk9ifV19KSx7bWFpbjpbe3R5cGU6YXIsYXJnczpbIm1haW4iXX1dLHhBeGlzOlt7dHlwZTphcixhcmdzOlsieEF4aXMiXX1dLHlBeGlzOlt7dHlwZTphcixhcmdzOlsieUF4aXMiXX1dLGNvbnRlbnQ6W3t0eXBlOmFyLGFyZ3M6WyJjb250ZW50Il19XSxoaXN0b2dyYW1zOlt7dHlwZTphcixhcmdzOlsiaGlzdG9ncmFtcyJdfV0sbW9kZTpbe3R5cGU6Ul99XSx0aW1lUHJvcGVydHk6W3t0eXBlOlJffV0sY29sb3I6W3t0eXBlOlJffV0sZGF0YTpbe3R5cGU6Ul99XSxsaW5rZWRUaW1lOlt7dHlwZTpSX31dfSk7Y29uc3QgVGJ0PWZ1bmN0aW9uKHQsZSl7cmV0dXJue3N0YXJ0U3RlcDp0LGVuZFN0ZXA6ZX19O2Z1bmN0aW9uIE5idCh0LGUpe2lmKDEmdCYmdmYoMCwidGItaGlzdG9ncmFtIiwxNiksMiZ0KXtjb25zdCB0PXpmKCk7YmYoImRhdGEiLHQuZGF0YSkoIm1vZGUiLHQubW9kZSkoInRpbWVQcm9wZXJ0eSIsdC50aW1lUHJvcGVydHkodC54QXhpc1R5cGUpKSgiY29sb3IiLHQucnVuQ29sb3JTY2FsZSh0LnJ1bklkKSkoImxpbmtlZFRpbWUiLHQuc2VsZWN0ZWRUaW1lP2F5KDUsVGJ0LHQuc2VsZWN0ZWRUaW1lLnN0YXJ0U3RlcCx0LnNlbGVjdGVkVGltZS5lbmRTdGVwKTpudWxsKX19ZnVuY3Rpb24gemJ0KHQsZSl7MSZ0JiYoQ2YoMCwiZGl2IiwxOCksUHUoMSwiIERhdGEgZmFpbGVkIHRvIGxvYWQuICIpLE1mKCkpfWZ1bmN0aW9uIElidCh0LGUpe2lmKDEmdCYmSG0oMCx6YnQsMiwwLCJkaXYiLDE3KSwyJnQpe2NvbnN0IHQ9emYoKTtiZigibmdJZiIsdC5sb2FkU3RhdGU9PT10LkRhdGFMb2FkU3RhdGUuRkFJTEVEKX19Y29uc3QgSGJ0PWZ1bmN0aW9uKHQpe3JldHVybntiYWNrZ3JvdW5kQ29sb3I6dH19O2NsYXNzIEZidHtjb25zdHJ1Y3Rvcigpe3RoaXMuRGF0YUxvYWRTdGF0ZT1VRSx0aGlzLm9uRnVsbFNpemVUb2dnbGU9bmV3IFN5LHRoaXMub25QaW5DbGlja2VkPW5ldyBTeX10aW1lUHJvcGVydHkodCl7c3dpdGNoKHQpe2Nhc2UgUVQuU1RFUDpyZXR1cm4gVkUuU1RFUDtjYXNlIFFULldBTExfVElNRTpyZXR1cm4gVkUuV0FMTF9USU1FO2Nhc2UgUVQuUkVMQVRJVkU6cmV0dXJuIFZFLlJFTEFUSVZFO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHhBeGlzVHlwZSBmb3IgaGlzdG9ncmFtIHRpbWUgcHJvcGVydHkuIil9fX1GYnQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEZidCl9LEZidC7JtWNtcD1zbyh7dHlwZTpGYnQsc2VsZWN0b3JzOltbImhpc3RvZ3JhbS1jYXJkLWNvbXBvbmVudCJdXSxpbnB1dHM6e2xvYWRTdGF0ZToibG9hZFN0YXRlIix0aXRsZToidGl0bGUiLHRhZzoidGFnIixydW5JZDoicnVuSWQiLGRhdGE6ImRhdGEiLG1vZGU6Im1vZGUiLHhBeGlzVHlwZToieEF4aXNUeXBlIixydW5Db2xvclNjYWxlOiJydW5Db2xvclNjYWxlIixzaG93RnVsbFNpemU6InNob3dGdWxsU2l6ZSIsaXNQaW5uZWQ6ImlzUGlubmVkIixzZWxlY3RlZFRpbWU6InNlbGVjdGVkVGltZSJ9LG91dHB1dHM6e29uRnVsbFNpemVUb2dnbGU6Im9uRnVsbFNpemVUb2dnbGUiLG9uUGluQ2xpY2tlZDoib25QaW5DbGlja2VkIn0sZGVjbHM6MTYsdmFyczoxMyxjb25zdHM6ZnVuY3Rpb24oKXtsZXQgdCxlO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgbmdJMThuQ2xvc3VyZU1vZGUmJm5nSTE4bkNsb3N1cmVNb2RlKXt0PWdvb2cuZ2V0TXNnKCJQaW4gY2FyZCIpfWVsc2UgdD0kbG9jYWxpemVgOkEgYnV0dG9uIHRvIHBpbiBhIGNhcmQu4pCfZTY2NWRjNzEyYmQ1ZjE4ZDRkZmEzYTI5ZTEyNWQ1NjVjYzUxZTJmNuKQnzcyODQ2MDY0MjYyMzQzNzUzNDQ6UGluIGNhcmRgO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgbmdJMThuQ2xvc3VyZU1vZGUmJm5nSTE4bkNsb3N1cmVNb2RlKXtlPWdvb2cuZ2V0TXNnKCJUb2dnbGUgZnVsbCBzaXplIG1vZGUiKX1lbHNlIGU9JGxvY2FsaXplYDpBIGJ1dHRvbiBvbiBhIGhpc3RvZ3JhbSBjYXJkIHRoYXQgdG9nZ2xlcyBmdWxsIHNpemUgbW9kZS7ikJ9mYzhmNzY3ZDBiOWY5MzAxODdhMWJhZTM0NDc3YWQyODczNmVjZTMz4pCfOTE1NzIxNTYzNjM4OTI2NTk3OlRvZ2dsZSBmdWxsIHNpemUgbW9kZWA7cmV0dXJuW1sxLCJoZWFkaW5nIl0sWzEsInRhZyJdLFszLCJ0aXRsZSIsInZhbHVlIl0sWzQsIm5nSWYiXSxbMSwicnVuIl0sWzEsImRvdCIsMywibmdTdHlsZSJdLFsxLCJydW4tdGV4dCIsMywicnVuSWQiXSxbMSwiY29udHJvbHMiXSxbIm1hdC1pY29uLWJ1dHRvbiIsIiIsImFyaWEtbGFiZWwiLHQsMSwicGluLWJ1dHRvbiIsMywiY2xpY2siXSxbMywic3ZnSWNvbiJdLFsibWF0LWljb24tYnV0dG9uIiwiIiwiYXJpYS1sYWJlbCIsZSwidGl0bGUiLCJUb2dnbGUgZnVsbCBzaXplIG1vZGUiLDMsImNsaWNrIl0sWyJjbGFzcyIsInNwaW5uZXIiLDQsIm5nSWYiXSxbMywiZGF0YSIsIm1vZGUiLCJ0aW1lUHJvcGVydHkiLCJjb2xvciIsImxpbmtlZFRpbWUiLDQsIm5nSWYiLCJuZ0lmRWxzZSJdLFsibm9EYXRhIiwiIl0sWzEsInNwaW5uZXIiXSxbImRpYW1ldGVyIiwiMTgiXSxbMywiZGF0YSIsIm1vZGUiLCJ0aW1lUHJvcGVydHkiLCJjb2xvciIsImxpbmtlZFRpbWUiXSxbImNsYXNzIiwiZW1wdHktbWVzc2FnZSIsNCwibmdJZiJdLFsxLCJlbXB0eS1tZXNzYWdlIl1dfSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiYoQ2YoMCwiZGl2IiwwKSxDZigxLCJkaXYiLDEpLHZmKDIsInRiLXRydW5jYXRlZC1wYXRoIiwyKSxIbSgzLEVidCwxLDAsInZpcy1zZWxlY3RlZC10aW1lLWNsaXBwZWQiLDMpLE1mKCksQ2YoNCwiZGl2Iiw0KSx2Zig1LCJzcGFuIiw1KSx2Zig2LCJjYXJkLXJ1bi1uYW1lIiw2KSxNZigpLENmKDcsInNwYW4iLDcpLENmKDgsImJ1dHRvbiIsOCksUmYoImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uUGluQ2xpY2tlZC5lbWl0KCFuLmlzUGlubmVkKX0pKSx2Zig5LCJtYXQtaWNvbiIsOSksTWYoKSxDZigxMCwiYnV0dG9uIiwxMCksUmYoImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uRnVsbFNpemVUb2dnbGUuZW1pdCgpfSkpLHZmKDExLCJtYXQtaWNvbiIsOSksTWYoKSxNZigpLEhtKDEyLEFidCwyLDAsInNwYW4iLDExKSxNZigpLEhtKDEzLE5idCwxLDgsInRiLWhpc3RvZ3JhbSIsMTIpLEhtKDE0LElidCwxLDEsIm5nLXRlbXBsYXRlIixudWxsLDEzLHF5KSksMiZlKXtjb25zdCB0PUZtKDE1KTtEYygyKSxiZigidGl0bGUiLG4udGFnKSgidmFsdWUiLG4udGl0bGUpLERjKDEpLGJmKCJuZ0lmIixuLnNlbGVjdGVkVGltZSYmbi5zZWxlY3RlZFRpbWUuY2xpcHBlZCksRGMoMiksYmYoIm5nU3R5bGUiLGl5KDExLEhidCxuLnJ1bkNvbG9yU2NhbGUobi5ydW5JZCkpKSxEYygxKSxiZigicnVuSWQiLG4ucnVuSWQpLERjKDIpLHltKCJ0aXRsZSIsbi5pc1Bpbm5lZD8iVW5waW4gY2FyZCI6IlBpbiBjYXJkIiksRGMoMSksYmYoInN2Z0ljb24iLG4uaXNQaW5uZWQ/ImtlZXBfMjRweCI6ImtlZXBfb3V0bGluZV8yNHB4IiksRGMoMiksYmYoInN2Z0ljb24iLG4uc2hvd0Z1bGxTaXplPyJmdWxsc2NyZWVuX2V4aXRfMjRweCI6ImZ1bGxzY3JlZW5fMjRweCIpLERjKDEpLGJmKCJuZ0lmIixuLmxvYWRTdGF0ZT09PW4uRGF0YUxvYWRTdGF0ZS5MT0FESU5HKSxEYygxKSxiZigibmdJZiIsbi5kYXRhJiZuLmRhdGEubGVuZ3RoKSgibmdJZkVsc2UiLHQpfX0sZGlyZWN0aXZlczpbTDQsUHYsenYsVzQsTkwsTXEsVmh0LGEyLGtidF0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCB0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9W19uZ2hvc3QtJUNPTVAlXXtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2JveC1zaXppbmc6Ym9yZGVyLWJveDtoZWlnaHQ6MTAwJTtvdmVyZmxvdzphdXRvO3BhZGRpbmc6MTZweDtwYWRkaW5nLXRvcDo0cHh9LmhlYWRpbmdbX25nY29udGVudC0lQ09NUCVde2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1hcmVhczoidGFnIGNvbnRyb2xzIiAicnVuIHNwaW5uZXIiO2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnIgYXV0bztmb250LXNpemU6MTRweDttYXJnaW4tYm90dG9tOjRweH0udGFnW19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4O2dhcDo1cHg7Z3JpZC1hcmVhOnRhZztvdmVyZmxvdzpoaWRkZW59LnRhZ1tfbmdjb250ZW50LSVDT01QJV0gICB2aXMtc2VsZWN0ZWQtdGltZS1jbGlwcGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDowfS5waW4tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIG1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MThweH0ucnVuW19uZ2NvbnRlbnQtJUNPTVAlXXtncmlkLWFyZWE6cnVuO2Rpc3BsYXk6ZmxleDt3aGl0ZS1zcGFjZTpub3dyYXA7Zm9udC1zaXplOjEzcHh9LnJ1bltfbmdjb250ZW50LSVDT01QJV0gICAuZG90W19uZ2NvbnRlbnQtJUNPTVAlXXtmbGV4Om5vbmU7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6MTNweDtoZWlnaHQ6MTNweDtib3JkZXItcmFkaXVzOjUwJTttYXJnaW4tcmlnaHQ6NHB4fS5ydW5bX25nY29udGVudC0lQ09NUCVdICAgLnJ1bi10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpczttYXgtd2lkdGg6MTIwcHh9LmNvbnRyb2xzW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxO3doaXRlLXNwYWNlOm5vd3JhcDtncmlkLWFyZWE6Y29udHJvbHM7anVzdGlmeS1zZWxmOmZsZXgtZW5kO2ZsZXgtc2hyaW5rOjA7bWFyZ2luLXJpZ2h0Oi0xMnB4fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5jb250cm9sc1tfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5jb250cm9sc1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9LnNwaW5uZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtncmlkLWFyZWE6c3Bpbm5lcjtoZWlnaHQ6MTAwJTtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO3Bvc2l0aW9uOnJlbGF0aXZlfW1hdC1zcGlubmVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MDtyaWdodDowO3Bvc2l0aW9uOmFic29sdXRlfXRiLWhpc3RvZ3JhbVtfbmdjb250ZW50LSVDT01QJV17ZmxleC1ncm93OjE7b3ZlcmZsb3c6aGlkZGVufS5lbXB0eS1tZXNzYWdlW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOjFlbTtmb250LXNpemU6MTNweH0nXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoRmJ0LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Imhpc3RvZ3JhbS1jYXJkLWNvbXBvbmVudCIsdGVtcGxhdGVVcmw6Imhpc3RvZ3JhbV9jYXJkX2NvbXBvbmVudC5uZy5odG1sIixzdHlsZVVybHM6WyJoaXN0b2dyYW1fY2FyZF9jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaH1dfV0sbnVsbCx7bG9hZFN0YXRlOlt7dHlwZTpSX31dLHRpdGxlOlt7dHlwZTpSX31dLHRhZzpbe3R5cGU6Ul99XSxydW5JZDpbe3R5cGU6Ul99XSxkYXRhOlt7dHlwZTpSX31dLG1vZGU6W3t0eXBlOlJffV0seEF4aXNUeXBlOlt7dHlwZTpSX31dLHJ1bkNvbG9yU2NhbGU6W3t0eXBlOlJffV0sc2hvd0Z1bGxTaXplOlt7dHlwZTpSX31dLGlzUGlubmVkOlt7dHlwZTpSX31dLHNlbGVjdGVkVGltZTpbe3R5cGU6Ul99XSxvbkZ1bGxTaXplVG9nZ2xlOlt7dHlwZTpFX31dLG9uUGluQ2xpY2tlZDpbe3R5cGU6RV99XX0pO2NsYXNzIExidHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5mdWxsV2lkdGhDaGFuZ2VkPW5ldyBTeSx0aGlzLmZ1bGxIZWlnaHRDaGFuZ2VkPW5ldyBTeSx0aGlzLnBpblN0YXRlQ2hhbmdlZD1uZXcgU3ksdGhpcy5tb2RlJD10aGlzLnN0b3JlLnNlbGVjdChfeiksdGhpcy54QXhpc1R5cGUkPXRoaXMuc3RvcmUuc2VsZWN0KHl6KSx0aGlzLnNob3dGdWxsU2l6ZT0hMX1pc0hpc3RvZ3JhbUNhcmRNZXRhZGF0YSh0KXtjb25zdHtwbHVnaW46ZX09dDtyZXR1cm4gZT09PUtULkhJU1RPR1JBTVN9b25GdWxsU2l6ZVRvZ2dsZSgpe3RoaXMuc2hvd0Z1bGxTaXplPSF0aGlzLnNob3dGdWxsU2l6ZSx0aGlzLmZ1bGxXaWR0aENoYW5nZWQuZW1pdCh0aGlzLnNob3dGdWxsU2l6ZSksdGhpcy5mdWxsSGVpZ2h0Q2hhbmdlZC5lbWl0KHRoaXMuc2hvd0Z1bGxTaXplKX1uZ09uSW5pdCgpe2NvbnN0IHQ9dGhpcy5zdG9yZS5zZWxlY3QobnosdGhpcy5jYXJkSWQpLnBpcGUodWUoKHQ9PiEhdCYmdGhpcy5pc0hpc3RvZ3JhbUNhcmRNZXRhZGF0YSh0KSkpLFZ0KCh0PT50KSkpLGU9S3QoW3QsdGhpcy5zdG9yZS5zZWxlY3QodHosdGhpcy5jYXJkSWQpXSk7dGhpcy5kYXRhJD1lLnBpcGUoVnQoKChbdCxlXSk9Pntjb25zdCBuPXQucnVuSWQ7aWYoIWV8fCFlLmhhc093blByb3BlcnR5KG4pKXJldHVybltdO3JldHVybihmdW5jdGlvbiBvKHQsZT0zMCl7aWYoIXQubGVuZ3RofHxlPDEpcmV0dXJuW107Y29uc3Qgbj0oZnVuY3Rpb24gbyh0KXtsZXQgZT1udWxsLG49bnVsbDtmb3IoY29uc3R7YmluczpvfW9mIHQpe2lmKCFvLmxlbmd0aCljb250aW51ZTtjb25zdCB0PW9bby5sZW5ndGgtMV0saT1vWzBdLngsYT10LngrdC5keDsobnVsbD09PWV8fGk8ZSkmJihlPWkpLChudWxsPT09bnx8YT5uKSYmKG49YSl9cmV0dXJuIG51bGw9PT1lfHxudWxsPT09bj9udWxsOntsZWZ0OmUscmlnaHQ6bn19KSh0KTtyZXR1cm4gbiYmbi5sZWZ0PT09bi5yaWdodCYmKG4ucmlnaHQ9MS4xKm4ucmlnaHQrMSxuLmxlZnQ9bi5sZWZ0LzEuMS0xKSx0Lm1hcCgodD0+KHtzdGVwOnQuc3RlcCx3YWxsVGltZTp0LndhbGxUaW1lLGJpbnM6bj9kYnQodC5iaW5zLG4sZSk6W119KSkpfSkoZVtuXS5tYXAoKHQ9Pntjb25zdHt3YWxsVGltZTplLHN0ZXA6bn09dDtyZXR1cm57d2FsbFRpbWU6ZSxzdGVwOm4sYmluczp0LmJpbnMubWFwKCh0PT4oe3g6dC5taW4sZHg6dC5tYXgtdC5taW4seTp0LmNvdW50fSkpKX19KSkpfSkpKSx0aGlzLnNlbGVjdGVkVGltZSQ9dGhpcy5zdG9yZS5zZWxlY3QoRXopLnBpcGUoX2UodGhpcy5kYXRhJCksVnQoKChbdCxlXSk9PntpZighdClyZXR1cm4gbnVsbDtsZXQgbj0xLzAsbz0tMS8wO2Zvcihjb25zdCB0IG9mIGUpbj1NYXRoLm1pbih0LnN0ZXAsbiksbz1NYXRoLm1heCh0LnN0ZXAsbyk7cmV0dXJuIEI0KHQsbixvKX0pKSksdGhpcy5sb2FkU3RhdGUkPXRoaXMuc3RvcmUuc2VsZWN0KCROLHRoaXMuY2FyZElkKSx0aGlzLnRhZyQ9dC5waXBlKFZ0KCh0PT50LnRhZykpKSx0aGlzLnRpdGxlJD10aGlzLnRhZyQucGlwZShWdCgodD0+SDQodCx0aGlzLmdyb3VwTmFtZSkpKSksdGhpcy5ydW5JZCQ9dC5waXBlKFZ0KCh0PT50LnJ1bklkKSkpLHRoaXMuaXNQaW5uZWQkPXRoaXMuc3RvcmUuc2VsZWN0KGR6LHRoaXMuY2FyZElkKX19ZnVuY3Rpb24gQmJ0KHQsZSl7aWYoMSZ0KXtjb25zdCB0PXdmKCk7Q2YoMCwiaW1hZ2UtY2FyZCIsNiksUmYoImZ1bGxXaWR0aENoYW5nZWQiLChmdW5jdGlvbiBlKG4pe1BpKHQpO3JldHVybiB6ZigyKS5vbkZ1bGxXaWR0aENoYW5nZWQobil9KSkoInBpblN0YXRlQ2hhbmdlZCIsKGZ1bmN0aW9uIGUoKXtQaSh0KTtyZXR1cm4gemYoMikub25QaW5TdGF0ZUNoYW5nZWQoKX0pKSxNZigpfWlmKDImdCl7Y29uc3QgdD16ZigyKTtiZigiY2FyZElkIix0LmNhcmRJZCkoImdyb3VwTmFtZSIsdC5ncm91cE5hbWUpKCJydW5Db2xvclNjYWxlIix0LnJ1bkNvbG9yU2NhbGUpfX1mdW5jdGlvbiBWYnQodCxlKXtpZigxJnQpe2NvbnN0IHQ9d2YoKTtDZigwLCJzY2FsYXItY2FyZCIsNyksUmYoImZ1bGxXaWR0aENoYW5nZWQiLChmdW5jdGlvbiBlKG4pe1BpKHQpO3JldHVybiB6ZigyKS5vbkZ1bGxXaWR0aENoYW5nZWQobil9KSkoImZ1bGxIZWlnaHRDaGFuZ2VkIiwoZnVuY3Rpb24gZShuKXtQaSh0KTtyZXR1cm4gemYoMikub25GdWxsSGVpZ2h0Q2hhbmdlZChuKX0pKSgicGluU3RhdGVDaGFuZ2VkIiwoZnVuY3Rpb24gZSgpe1BpKHQpO3JldHVybiB6ZigyKS5vblBpblN0YXRlQ2hhbmdlZCgpfSkpLE1mKCl9aWYoMiZ0KXtjb25zdCB0PXpmKDIpO2JmKCJjYXJkSWQiLHQuY2FyZElkKSgiZ3JvdXBOYW1lIix0Lmdyb3VwTmFtZSl9fWZ1bmN0aW9uIGpidCh0LGUpe2lmKDEmdCl7Y29uc3QgdD13ZigpO0NmKDAsImhpc3RvZ3JhbS1jYXJkIiw4KSxSZigiZnVsbFdpZHRoQ2hhbmdlZCIsKGZ1bmN0aW9uIGUobil7UGkodCk7cmV0dXJuIHpmKDIpLm9uRnVsbFdpZHRoQ2hhbmdlZChuKX0pKSgiZnVsbEhlaWdodENoYW5nZWQiLChmdW5jdGlvbiBlKG4pe1BpKHQpO3JldHVybiB6ZigyKS5vbkZ1bGxIZWlnaHRDaGFuZ2VkKG4pfSkpKCJwaW5TdGF0ZUNoYW5nZWQiLChmdW5jdGlvbiBlKCl7UGkodCk7cmV0dXJuIHpmKDIpLm9uUGluU3RhdGVDaGFuZ2VkKCl9KSksTWYoKX1pZigyJnQpe2NvbnN0IHQ9emYoMik7YmYoImNhcmRJZCIsdC5jYXJkSWQpKCJncm91cE5hbWUiLHQuZ3JvdXBOYW1lKSgicnVuQ29sb3JTY2FsZSIsdC5ydW5Db2xvclNjYWxlKX19ZnVuY3Rpb24gVWJ0KHQsZSl7aWYoMSZ0JiYoQ2YoMCwiZGl2IiksUHUoMSksTWYoKSksMiZ0KXtjb25zdCB0PXpmKDIpO0RjKDEpLGt1KCJQbGFjZWhvbGRlciBlcnJvciBmb3I6ICIsdC5jYXJkSWQsIiIpfX1mdW5jdGlvbiBXYnQodCxlKXtpZigxJnQmJih4ZigwLDEpLEhtKDEsQmJ0LDEsMywiaW1hZ2UtY2FyZCIsMiksSG0oMixWYnQsMSwyLCJzY2FsYXItY2FyZCIsMyksSG0oMyxqYnQsMSwzLCJoaXN0b2dyYW0tY2FyZCIsNCksSG0oNCxVYnQsMiwxLCJkaXYiLDUpLE9mKCkpLDImdCl7Y29uc3QgdD16ZigpO2JmKCJuZ1N3aXRjaCIsdC5wbHVnaW5UeXBlKSxEYygxKSxiZigibmdTd2l0Y2hDYXNlIix0LlBsdWdpblR5cGUuSU1BR0VTKSxEYygxKSxiZigibmdTd2l0Y2hDYXNlIix0LlBsdWdpblR5cGUuU0NBTEFSUyksRGMoMSksYmYoIm5nU3dpdGNoQ2FzZSIsdC5QbHVnaW5UeXBlLkhJU1RPR1JBTVMpfX1MYnQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fExidCkoZ2YoaVMpKX0sTGJ0Lsm1Y21wPXNvKHt0eXBlOkxidCxzZWxlY3RvcnM6W1siaGlzdG9ncmFtLWNhcmQiXV0saW5wdXRzOntjYXJkSWQ6ImNhcmRJZCIsZ3JvdXBOYW1lOiJncm91cE5hbWUiLHJ1bkNvbG9yU2NhbGU6InJ1bkNvbG9yU2NhbGUifSxvdXRwdXRzOntmdWxsV2lkdGhDaGFuZ2VkOiJmdWxsV2lkdGhDaGFuZ2VkIixmdWxsSGVpZ2h0Q2hhbmdlZDoiZnVsbEhlaWdodENoYW5nZWQiLHBpblN0YXRlQ2hhbmdlZDoicGluU3RhdGVDaGFuZ2VkIn0sZGVjbHM6MTAsdmFyczoyOSxjb25zdHM6W1szLCJsb2FkU3RhdGUiLCJ0aXRsZSIsInRhZyIsInJ1bklkIiwiZGF0YSIsIm1vZGUiLCJ4QXhpc1R5cGUiLCJydW5Db2xvclNjYWxlIiwic2hvd0Z1bGxTaXplIiwiaXNQaW5uZWQiLCJzZWxlY3RlZFRpbWUiLCJvbkZ1bGxTaXplVG9nZ2xlIiwib25QaW5DbGlja2VkIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihDZigwLCJoaXN0b2dyYW0tY2FyZC1jb21wb25lbnQiLDApLFJmKCJvbkZ1bGxTaXplVG9nZ2xlIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uRnVsbFNpemVUb2dnbGUoKX0pKSgib25QaW5DbGlja2VkIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5waW5TdGF0ZUNoYW5nZWQuZW1pdChlKX0pKSxfeSgxLCJhc3luYyIpLF95KDIsImFzeW5jIiksX3koMywiYXN5bmMiKSxfeSg0LCJhc3luYyIpLF95KDUsImFzeW5jIiksX3koNiwiYXN5bmMiKSxfeSg3LCJhc3luYyIpLF95KDgsImFzeW5jIiksX3koOSwiYXN5bmMiKSxNZigpKSwyJmUmJmJmKCJsb2FkU3RhdGUiLEN5KDEsMTEsbi5sb2FkU3RhdGUkKSkoInRpdGxlIixDeSgyLDEzLG4udGl0bGUkKSkoInRhZyIsQ3koMywxNSxuLnRhZyQpKSgicnVuSWQiLEN5KDQsMTcsbi5ydW5JZCQpKSgiZGF0YSIsQ3koNSwxOSxuLmRhdGEkKSkoIm1vZGUiLEN5KDYsMjEsbi5tb2RlJCkpKCJ4QXhpc1R5cGUiLEN5KDcsMjMsbi54QXhpc1R5cGUkKSkoInJ1bkNvbG9yU2NhbGUiLG4ucnVuQ29sb3JTY2FsZSkoInNob3dGdWxsU2l6ZSIsbi5zaG93RnVsbFNpemUpKCJpc1Bpbm5lZCIsQ3koOCwyNSxuLmlzUGlubmVkJCkpKCJzZWxlY3RlZFRpbWUiLEN5KDksMjcsbi5zZWxlY3RlZFRpbWUkKSl9LGRpcmVjdGl2ZXM6W0ZidF0scGlwZXM6W1Z2XSxzdHlsZXM6WyJbX25naG9zdC0lQ09NUCVdIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgIH0iXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoTGJ0LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Imhpc3RvZ3JhbS1jYXJkIix0ZW1wbGF0ZTonXG4gICAgPGhpc3RvZ3JhbS1jYXJkLWNvbXBvbmVudFxuICAgICAgW2xvYWRTdGF0ZV09ImxvYWRTdGF0ZSQgfCBhc3luYyJcbiAgICAgIFt0aXRsZV09InRpdGxlJCB8IGFzeW5jIlxuICAgICAgW3RhZ109InRhZyQgfCBhc3luYyJcbiAgICAgIFtydW5JZF09InJ1bklkJCB8IGFzeW5jIlxuICAgICAgW2RhdGFdPSJkYXRhJCB8IGFzeW5jIlxuICAgICAgW21vZGVdPSJtb2RlJCB8IGFzeW5jIlxuICAgICAgW3hBeGlzVHlwZV09InhBeGlzVHlwZSQgfCBhc3luYyJcbiAgICAgIFtydW5Db2xvclNjYWxlXT0icnVuQ29sb3JTY2FsZSJcbiAgICAgIFtzaG93RnVsbFNpemVdPSJzaG93RnVsbFNpemUiXG4gICAgICBbaXNQaW5uZWRdPSJpc1Bpbm5lZCQgfCBhc3luYyJcbiAgICAgIFtzZWxlY3RlZFRpbWVdPSJzZWxlY3RlZFRpbWUkIHwgYXN5bmMiXG4gICAgICAob25GdWxsU2l6ZVRvZ2dsZSk9Im9uRnVsbFNpemVUb2dnbGUoKSJcbiAgICAgIChvblBpbkNsaWNrZWQpPSJwaW5TdGF0ZUNoYW5nZWQuZW1pdCgkZXZlbnQpIlxuICAgID48L2hpc3RvZ3JhbS1jYXJkLWNvbXBvbmVudD5cbiAgJyxzdHlsZXM6WyJcbiAgICAgIDpob3N0IHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgIH1cbiAgICAiXSxjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNofV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6aVN9XX0pLHtjYXJkSWQ6W3t0eXBlOlJffV0sZ3JvdXBOYW1lOlt7dHlwZTpSX31dLHJ1bkNvbG9yU2NhbGU6W3t0eXBlOlJffV0sZnVsbFdpZHRoQ2hhbmdlZDpbe3R5cGU6RV99XSxmdWxsSGVpZ2h0Q2hhbmdlZDpbe3R5cGU6RV99XSxwaW5TdGF0ZUNoYW5nZWQ6W3t0eXBlOkVffV19KTtjbGFzcyBHYnR7Y29uc3RydWN0b3IoKXt0aGlzLlBsdWdpblR5cGU9S1QsdGhpcy5mdWxsV2lkdGhDaGFuZ2VkPW5ldyBTeSx0aGlzLmZ1bGxIZWlnaHRDaGFuZ2VkPW5ldyBTeSx0aGlzLnBpblN0YXRlQ2hhbmdlZD1uZXcgU3l9b25GdWxsV2lkdGhDaGFuZ2VkKHQpe3RoaXMuZnVsbFdpZHRoQ2hhbmdlZC5lbWl0KHQpfW9uRnVsbEhlaWdodENoYW5nZWQodCl7dGhpcy5mdWxsSGVpZ2h0Q2hhbmdlZC5lbWl0KHQpfW9uUGluU3RhdGVDaGFuZ2VkKCl7dGhpcy5waW5TdGF0ZUNoYW5nZWQuZW1pdCgpfX1HYnQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEdidCl9LEdidC7JtWNtcD1zbyh7dHlwZTpHYnQsc2VsZWN0b3JzOltbImNhcmQtdmlldy1jb21wb25lbnQiXV0saW5wdXRzOntpc0V2ZXJWaXNpYmxlOiJpc0V2ZXJWaXNpYmxlIixjYXJkSWQ6ImNhcmRJZCIsZ3JvdXBOYW1lOiJncm91cE5hbWUiLHBsdWdpblR5cGU6InBsdWdpblR5cGUiLHJ1bkNvbG9yU2NhbGU6InJ1bkNvbG9yU2NhbGUifSxvdXRwdXRzOntmdWxsV2lkdGhDaGFuZ2VkOiJmdWxsV2lkdGhDaGFuZ2VkIixmdWxsSGVpZ2h0Q2hhbmdlZDoiZnVsbEhlaWdodENoYW5nZWQiLHBpblN0YXRlQ2hhbmdlZDoicGluU3RhdGVDaGFuZ2VkIn0sZGVjbHM6MSx2YXJzOjEsY29uc3RzOltbMywibmdTd2l0Y2giLDQsIm5nSWYiXSxbMywibmdTd2l0Y2giXSxbMywiY2FyZElkIiwiZ3JvdXBOYW1lIiwicnVuQ29sb3JTY2FsZSIsImZ1bGxXaWR0aENoYW5nZWQiLCJwaW5TdGF0ZUNoYW5nZWQiLDQsIm5nU3dpdGNoQ2FzZSJdLFszLCJjYXJkSWQiLCJncm91cE5hbWUiLCJmdWxsV2lkdGhDaGFuZ2VkIiwiZnVsbEhlaWdodENoYW5nZWQiLCJwaW5TdGF0ZUNoYW5nZWQiLDQsIm5nU3dpdGNoQ2FzZSJdLFszLCJjYXJkSWQiLCJncm91cE5hbWUiLCJydW5Db2xvclNjYWxlIiwiZnVsbFdpZHRoQ2hhbmdlZCIsImZ1bGxIZWlnaHRDaGFuZ2VkIiwicGluU3RhdGVDaGFuZ2VkIiw0LCJuZ1N3aXRjaENhc2UiXSxbNCwibmdTd2l0Y2hEZWZhdWx0Il0sWzMsImNhcmRJZCIsImdyb3VwTmFtZSIsInJ1bkNvbG9yU2NhbGUiLCJmdWxsV2lkdGhDaGFuZ2VkIiwicGluU3RhdGVDaGFuZ2VkIl0sWzMsImNhcmRJZCIsImdyb3VwTmFtZSIsImZ1bGxXaWR0aENoYW5nZWQiLCJmdWxsSGVpZ2h0Q2hhbmdlZCIsInBpblN0YXRlQ2hhbmdlZCJdLFszLCJjYXJkSWQiLCJncm91cE5hbWUiLCJydW5Db2xvclNjYWxlIiwiZnVsbFdpZHRoQ2hhbmdlZCIsImZ1bGxIZWlnaHRDaGFuZ2VkIiwicGluU3RhdGVDaGFuZ2VkIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJkhtKDAsV2J0LDUsNCwibmctY29udGFpbmVyIiwwKSwyJmUmJmJmKCJuZ0lmIixuLmlzRXZlclZpc2libGUpfSxkaXJlY3RpdmVzOltQdixEdixSdixFdix0NixjYnQsTGJ0XSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEdidCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJjYXJkLXZpZXctY29tcG9uZW50Iix0ZW1wbGF0ZVVybDoiY2FyZF92aWV3X2NvbXBvbmVudC5uZy5odG1sIixjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNofV19XSxudWxsLHtpc0V2ZXJWaXNpYmxlOlt7dHlwZTpSX31dLGNhcmRJZDpbe3R5cGU6Ul99XSxncm91cE5hbWU6W3t0eXBlOlJffV0scGx1Z2luVHlwZTpbe3R5cGU6Ul99XSxydW5Db2xvclNjYWxlOlt7dHlwZTpSX31dLGZ1bGxXaWR0aENoYW5nZWQ6W3t0eXBlOkVffV0sZnVsbEhlaWdodENoYW5nZWQ6W3t0eXBlOkVffV0scGluU3RhdGVDaGFuZ2VkOlt7dHlwZTpFX31dfSk7Y2xhc3MgWWJ0e2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLmlzRXZlclZpc2libGU9ITEsdGhpcy5zaG93RnVsbFdpZHRoPSExLHRoaXMuc2hvd0Z1bGxIZWlnaHQ9ITEsdGhpcy5ydW5Db2xvclNjYWxlJD10aGlzLnN0b3JlLnNlbGVjdChDSSkucGlwZShZZSgzNTAsdm9pZCAwLHtsZWFkaW5nOiEwLHRyYWlsaW5nOiEwfSksVnQoKHQ9PmU9PnQuaGFzT3duUHJvcGVydHkoZSk/dFtlXToiI2ZmZiIpKSl9b25WaXNpYmlsaXR5Q2hhbmdlKHt2aXNpYmxlOnR9KXt0aGlzLmlzRXZlclZpc2libGU9dGhpcy5pc0V2ZXJWaXNpYmxlfHx0fW9uRnVsbFdpZHRoQ2hhbmdlZCh0KXt0aGlzLnNob3dGdWxsV2lkdGg9dH1vbkZ1bGxIZWlnaHRDaGFuZ2VkKHQpe3RoaXMuc2hvd0Z1bGxIZWlnaHQ9dH1vblBpblN0YXRlQ2hhbmdlZCgpe3RoaXMuc3RvcmUuc2VsZWN0KGR6LHRoaXMuY2FyZElkKS5waXBlKHZlKDEpLHFlKHRoaXMuc3RvcmUuc2VsZWN0KG16KSkpLnN1YnNjcmliZSgoKFt0LGVdKT0+e3RoaXMuc3RvcmUuZGlzcGF0Y2goekEoe2NhcmRJZDp0aGlzLmNhcmRJZCxjYW5DcmVhdGVOZXdQaW5zOmUsd2FzUGlubmVkOnR9KSl9KSl9fWZ1bmN0aW9uIHFidCh0LGUpezEmdCYmUGYoMCl9ZnVuY3Rpb24gWmJ0KHQsZSl7aWYoMSZ0JiZ2ZigwLCJjYXJkLXZpZXciLDUpLDImdCl7Y29uc3QgdD1lLiRpbXBsaWNpdCxuPXpmKDIpO2JmKCJjYXJkSWQiLHQuY2FyZElkKSgiZ3JvdXBOYW1lIixuLmdyb3VwTmFtZSkoInBsdWdpblR5cGUiLHQucGx1Z2luKSgiY2FyZE9ic2VydmVyIixuLmNhcmRPYnNlcnZlcikoImNhcmRMYXp5TG9hZGVyIix0LmNhcmRJZCl9fWZ1bmN0aW9uIFhidCh0LGUpezEmdCYmUGYoMCl9WWJ0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxZYnQpKGdmKGlTKSl9LFlidC7JtWNtcD1zbyh7dHlwZTpZYnQsc2VsZWN0b3JzOltbImNhcmQtdmlldyJdXSxob3N0VmFyczo0LGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MiZlJiZjdSgiZnVsbC13aWR0aCIsbi5zaG93RnVsbFdpZHRoKSgiZnVsbC1oZWlnaHQiLG4uc2hvd0Z1bGxIZWlnaHQpfSxpbnB1dHM6e2NhcmRJZDoiY2FyZElkIixncm91cE5hbWU6Imdyb3VwTmFtZSIscGx1Z2luVHlwZToicGx1Z2luVHlwZSJ9LGRlY2xzOjIsdmFyczo3LGNvbnN0czpbWyJvYnNlcnZlSW50ZXJzZWN0aW9uIiwiIiwiaW50ZXJzZWN0aW9uT2JzZXJ2ZXJNYXJnaW4iLCIyMDBweCAyMDBweCAyMDBweCAyMDBweCIsMywiaXNFdmVyVmlzaWJsZSIsImNhcmRJZCIsImdyb3VwTmFtZSIsInBsdWdpblR5cGUiLCJydW5Db2xvclNjYWxlIiwiZnVsbFdpZHRoQ2hhbmdlZCIsImZ1bGxIZWlnaHRDaGFuZ2VkIiwicGluU3RhdGVDaGFuZ2VkIiwib25WaXNpYmlsaXR5Q2hhbmdlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihDZigwLCJjYXJkLXZpZXctY29tcG9uZW50IiwwKSxSZigiZnVsbFdpZHRoQ2hhbmdlZCIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25GdWxsV2lkdGhDaGFuZ2VkKGUpfSkpKCJmdWxsSGVpZ2h0Q2hhbmdlZCIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25GdWxsSGVpZ2h0Q2hhbmdlZChlKX0pKSgicGluU3RhdGVDaGFuZ2VkIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uUGluU3RhdGVDaGFuZ2VkKCl9KSkoIm9uVmlzaWJpbGl0eUNoYW5nZSIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25WaXNpYmlsaXR5Q2hhbmdlKGUpfSkpLF95KDEsImFzeW5jIiksTWYoKSksMiZlJiZiZigiaXNFdmVyVmlzaWJsZSIsbi5pc0V2ZXJWaXNpYmxlKSgiY2FyZElkIixuLmNhcmRJZCkoImdyb3VwTmFtZSIsbi5ncm91cE5hbWUpKCJwbHVnaW5UeXBlIixuLnBsdWdpblR5cGUpKCJydW5Db2xvclNjYWxlIixDeSgxLDUsbi5ydW5Db2xvclNjYWxlJCkpfSxkaXJlY3RpdmVzOltHYnQsc2J0XSxwaXBlczpbVnZdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgdHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfVtfbmdob3N0LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiMzMDMwMzB9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFlidCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJjYXJkLXZpZXciLHRlbXBsYXRlOidcbiAgICA8Y2FyZC12aWV3LWNvbXBvbmVudFxuICAgICAgW2lzRXZlclZpc2libGVdPSJpc0V2ZXJWaXNpYmxlIlxuICAgICAgW2NhcmRJZF09ImNhcmRJZCJcbiAgICAgIFtncm91cE5hbWVdPSJncm91cE5hbWUiXG4gICAgICBbcGx1Z2luVHlwZV09InBsdWdpblR5cGUiXG4gICAgICBbcnVuQ29sb3JTY2FsZV09InJ1bkNvbG9yU2NhbGUkIHwgYXN5bmMiXG4gICAgICAoZnVsbFdpZHRoQ2hhbmdlZCk9Im9uRnVsbFdpZHRoQ2hhbmdlZCgkZXZlbnQpIlxuICAgICAgKGZ1bGxIZWlnaHRDaGFuZ2VkKT0ib25GdWxsSGVpZ2h0Q2hhbmdlZCgkZXZlbnQpIlxuICAgICAgKHBpblN0YXRlQ2hhbmdlZCk9Im9uUGluU3RhdGVDaGFuZ2VkKCkiXG4gICAgICBvYnNlcnZlSW50ZXJzZWN0aW9uXG4gICAgICBpbnRlcnNlY3Rpb25PYnNlcnZlck1hcmdpbj0iMjAwcHggMjAwcHggMjAwcHggMjAwcHgiXG4gICAgICAob25WaXNpYmlsaXR5Q2hhbmdlKT0ib25WaXNpYmlsaXR5Q2hhbmdlKCRldmVudCkiXG4gICAgPlxuICAgIDwvY2FyZC12aWV3LWNvbXBvbmVudD5cbiAgJyxzdHlsZVVybHM6WyJjYXJkX3ZpZXdfY29udGFpbmVyLmNzcyJdLGNoYW5nZURldGVjdGlvbjpqbi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTppU31dfSkse2NhcmRJZDpbe3R5cGU6Ul99XSxncm91cE5hbWU6W3t0eXBlOlJffV0scGx1Z2luVHlwZTpbe3R5cGU6Ul99XSxzaG93RnVsbFdpZHRoOlt7dHlwZTpBXyxhcmdzOlsiY2xhc3MuZnVsbC13aWR0aCJdfV0sc2hvd0Z1bGxIZWlnaHQ6W3t0eXBlOkFfLGFyZ3M6WyJjbGFzcy5mdWxsLWhlaWdodCJdfV19KTtjb25zdCBLYnQ9ZnVuY3Rpb24oKXtyZXR1cm57aXNCb3R0b21Db250cm9sOiExfX0sSmJ0PWZ1bmN0aW9uKCl7cmV0dXJue2lzQm90dG9tQ29udHJvbDohMH19O2Z1bmN0aW9uIFFidCh0LGUpe2lmKDEmdCYmKENmKDAsImRpdiIpLEhtKDEscWJ0LDEsMCwibmctY29udGFpbmVyIiwyKSxDZigyLCJkaXYiLDMpLEhtKDMsWmJ0LDEsNSwiY2FyZC12aWV3Iiw0KSxNZigpLEhtKDQsWGJ0LDEsMCwibmctY29udGFpbmVyIiwyKSxNZigpKSwyJnQpe2NvbnN0IHQ9emYoKSxlPUZtKDIpO0RjKDEpLGJmKCJuZ1RlbXBsYXRlT3V0bGV0IixlKSgibmdUZW1wbGF0ZU91dGxldENvbnRleHQiLG95KDgsS2J0KSksRGMoMSksbHUoImdyaWQtdGVtcGxhdGUtY29sdW1ucyIsdC5ncmlkVGVtcGxhdGVDb2x1bW4pLERjKDEpLGJmKCJuZ0Zvck9mIix0LmNhcmRJZHNXaXRoTWV0YWRhdGEpKCJuZ0ZvclRyYWNrQnkiLHQudHJhY2tCeUNhcmRzKSxEYygxKSxiZigibmdUZW1wbGF0ZU91dGxldCIsZSkoIm5nVGVtcGxhdGVPdXRsZXRDb250ZXh0IixveSg5LEpidCkpfX1mdW5jdGlvbiAkYnQodCxlKXtpZigxJnQpe2NvbnN0IHQ9d2YoKTtDZigwLCJidXR0b24iLDExKSxSZigiY2xpY2siLChmdW5jdGlvbiBlKG4pe1BpKHQpO2NvbnN0IG89emYoMyk7cmV0dXJuIG8uaGFuZGxlUGFnZUNoYW5nZShvLnBhZ2VJbmRleC0xLG4udGFyZ2V0KX0pKSxQdSgxLCIgUHJldmlvdXMgIiksTWYoKX1pZigyJnQpe2JmKCJkaXNhYmxlZCIsMD09PXpmKDMpLnBhZ2VJbmRleCl9fWZ1bmN0aW9uIHR5dCh0LGUpe2lmKDEmdCl7Y29uc3QgdD13ZigpO0NmKDAsInNwYW4iLDE0KSxDZigxLCJpbnB1dCIsMTUpLFJmKCJpbnB1dCIsKGZ1bmN0aW9uIGUobil7UGkodCk7cmV0dXJuIHpmKDQpLm9uUGFnaW5hdGlvbklucHV0Q2hhbmdlKG4pfSkpKCJjaGFuZ2UiLChmdW5jdGlvbiBlKG4pe1BpKHQpO3JldHVybiB6Zig0KS5vblBhZ2luYXRpb25JbnB1dENoYW5nZShuKX0pKSxNZigpLFB1KDIpLE1mKCl9aWYoMiZ0KXtjb25zdCB0PXpmKDQpO0RjKDEpLGJmKCJ2YWx1ZSIsdC5wYWdlSW5kZXgrMSkoIm1heCIsdC5udW1QYWdlcyksRGMoMSksa3UoIiBvZiAiLHQubnVtUGFnZXMsIiIpfX1mdW5jdGlvbiBleXQodCxlKXtpZigxJnQpe2NvbnN0IHQ9d2YoKTtDZigwLCJzcGFuIiksSG0oMSx0eXQsMywzLCJzcGFuIiwxMiksQ2YoMiwiYnV0dG9uIiwxMyksUmYoImNsaWNrIiwoZnVuY3Rpb24gZShuKXtQaSh0KTtjb25zdCBvPXpmKDMpO3JldHVybiBvLmhhbmRsZVBhZ2VDaGFuZ2Uoby5wYWdlSW5kZXgrMSxuLnRhcmdldCl9KSksUHUoMywiIE5leHQgIiksTWYoKSxNZigpfWlmKDImdCl7Y29uc3QgdD16ZigyKS5pc0JvdHRvbUNvbnRyb2wsZT16ZigpO0RjKDEpLGJmKCJuZ0lmIixlLnNob3dQYWdpbmF0aW9uSW5wdXQodCkpLERjKDEpLGJmKCJkaXNhYmxlZCIsZS5wYWdlSW5kZXgrMT49ZS5udW1QYWdlcyl9fWZ1bmN0aW9uIG55dCh0LGUpe2lmKDEmdCYmKENmKDAsImRpdiIsNyksQ2YoMSwic3BhbiIsOCksSG0oMiwkYnQsMiwxLCJidXR0b24iLDkpLE1mKCksQ2YoMywic3BhbiIsMTApLEhtKDQsZXl0LDQsMiwic3BhbiIsMCksTWYoKSxNZigpKSwyJnQpe2NvbnN0IHQ9emYoMik7RGMoMiksYmYoIm5nSWYiLHQuc2hvd1BhZ2luYXRpb25Db250cm9scyksRGMoMiksYmYoIm5nSWYiLHQuc2hvd1BhZ2luYXRpb25Db250cm9scyl9fWZ1bmN0aW9uIG95dCh0LGUpe2lmKDEmdCYmSG0oMCxueXQsNSwyLCJkaXYiLDYpLDImdCl7YmYoIm5nSWYiLHpmKCkuc2hvd1BhZ2luYXRpb25Db250cm9scyl9fWNsYXNzIGl5dHtjb25zdHJ1Y3Rvcih0KXt0aGlzLmNka1Njcm9sbGFibGU9dCx0aGlzLlBsdWdpblR5cGU9S1QsdGhpcy5ncmlkVGVtcGxhdGVDb2x1bW49IiIsdGhpcy5wYWdlSW5kZXhDaGFuZ2VkPW5ldyBTeX1uZ09uSW5pdCgpe3RoaXMuaXNDYXJkV2lkdGhWYWxpZCh0aGlzLmNhcmRNaW5XaWR0aCkmJih0aGlzLmdyaWRUZW1wbGF0ZUNvbHVtbj1gcmVwZWF0KGF1dG8tZmlsbCwgbWlubWF4KCR7dGhpcy5jYXJkTWluV2lkdGh9cHgsIGF1dG8pKWApfW5nT25DaGFuZ2VzKHQpe2lmKHQuY2FyZE1pbldpZHRoKXtjb25zdCBlPXQuY2FyZE1pbldpZHRoLmN1cnJlbnRWYWx1ZTt0aGlzLmlzQ2FyZFdpZHRoVmFsaWQoZSk/KHRoaXMuY2FyZE1pbldpZHRoPWUsdGhpcy5ncmlkVGVtcGxhdGVDb2x1bW49YHJlcGVhdChhdXRvLWZpbGwsIG1pbm1heCgke3RoaXMuY2FyZE1pbldpZHRofXB4LCBhdXRvKSlgKTp0aGlzLmdyaWRUZW1wbGF0ZUNvbHVtbj0iIn19aXNDYXJkV2lkdGhWYWxpZCh0KXtyZXR1cm4gdCYmdD49MzM1JiZ0PD03MzV9c2hvd1BhZ2luYXRpb25JbnB1dCh0KXtyZXR1cm4gdH1oYW5kbGVQYWdlQ2hhbmdlKHQsZSl7Y29uc3Qgbj1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcDtzZXRUaW1lb3V0KCgoKT0+e3RoaXMuc2Nyb2xsVG9LZWVwVGFyZ2V0UG9zaXRpb24oZSxuKX0pLDApLHRoaXMucGFnZUluZGV4Q2hhbmdlZC5lbWl0KHQpfXNjcm9sbFRvS2VlcFRhcmdldFBvc2l0aW9uKHQsZSl7dmFyIG47Y29uc3Qgbz1udWxsPT09KG49dGhpcy5jZGtTY3JvbGxhYmxlKXx8dm9pZCAwPT09bj92b2lkIDA6bi5nZXRFbGVtZW50UmVmKCkubmF0aXZlRWxlbWVudDtvJiZvLnNjcm9sbFRvKDAsdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AtZStvLnNjcm9sbFRvcCl9dHJhY2tCeUNhcmRzKHQsZSl7cmV0dXJuIGUuY2FyZElkfW9uUGFnaW5hdGlvbklucHV0Q2hhbmdlKHQpe2NvbnN0IGU9dC50YXJnZXQ7aWYoImlucHV0Ij09PXQudHlwZSYmIiI9PT1lLnZhbHVlKXJldHVybjtjb25zdCBuPU51bWJlcihlLnZhbHVlKS0xLG89TWF0aC5taW4oTWF0aC5tYXgoMCxuKSx0aGlzLm51bVBhZ2VzLTEpO2UudmFsdWUhPT1TdHJpbmcobysxKSYmKGUudmFsdWU9U3RyaW5nKG8rMSkpLHRoaXMuaGFuZGxlUGFnZUNoYW5nZShvLGUpfX1peXQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGl5dCkoZ2YoSkwsOCkpfSxpeXQuybVjbXA9c28oe3R5cGU6aXl0LHNlbGVjdG9yczpbWyJtZXRyaWNzLWNhcmQtZ3JpZC1jb21wb25lbnQiXV0saW5wdXRzOntpc0dyb3VwRXhwYW5kZWQ6ImlzR3JvdXBFeHBhbmRlZCIscGFnZUluZGV4OiJwYWdlSW5kZXgiLG51bVBhZ2VzOiJudW1QYWdlcyIsY2FyZElkc1dpdGhNZXRhZGF0YToiY2FyZElkc1dpdGhNZXRhZGF0YSIsY2FyZE1pbldpZHRoOiJjYXJkTWluV2lkdGgiLGNhcmRPYnNlcnZlcjoiY2FyZE9ic2VydmVyIixzaG93UGFnaW5hdGlvbkNvbnRyb2xzOiJzaG93UGFnaW5hdGlvbkNvbnRyb2xzIn0sb3V0cHV0czp7cGFnZUluZGV4Q2hhbmdlZDoicGFnZUluZGV4Q2hhbmdlZCJ9LGZlYXR1cmVzOltxb10sZGVjbHM6Myx2YXJzOjEsY29uc3RzOmZ1bmN0aW9uKCl7bGV0IHQsZTtpZigidW5kZWZpbmVkIiE9dHlwZW9mIG5nSTE4bkNsb3N1cmVNb2RlJiZuZ0kxOG5DbG9zdXJlTW9kZSl7dD1nb29nLmdldE1zZygiUHJldmlvdXMgcGFnZSIpfWVsc2UgdD0kbG9jYWxpemVgOkEgYnV0dG9uIHRoYXQgc2V0cyBhIGdyb3VwIHRvIHRoZSBwcmV2aW91cyBwYWdlLuKQnzU3NWU3ODJmZDI3ZjJlZTcwYTAzNGE3NzVlZmU5YWQxNjI0NzIyNTDikJ8zNjI5OTYwNTQ0ODc1MzYwMDQ2OlByZXZpb3VzIHBhZ2VgO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgbmdJMThuQ2xvc3VyZU1vZGUmJm5nSTE4bkNsb3N1cmVNb2RlKXtlPWdvb2cuZ2V0TXNnKCJOZXh0IHBhZ2UiKX1lbHNlIGU9JGxvY2FsaXplYDpBIGJ1dHRvbiB0aGF0IHNldHMgYSBncm91cCB0byB0aGUgbmV4dCBwYWdlLuKQn2NlM2NlZmIxY2QwMDk5YWE1MDAzZGRhMTZlYzllYjIxZmQ4YmE3ODnikJ8zMzM3MzAxNjk0MjEwMjg3NTk1Ok5leHQgcGFnZWA7cmV0dXJuW1s0LCJuZ0lmIl0sWyJncm91cENvbnRyb2xzIiwiIl0sWzQsIm5nVGVtcGxhdGVPdXRsZXQiLCJuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dCJdLFsxLCJjYXJkLWdyaWQiXSxbMywiY2FyZElkIiwiZ3JvdXBOYW1lIiwicGx1Z2luVHlwZSIsImNhcmRPYnNlcnZlciIsImNhcmRMYXp5TG9hZGVyIiw0LCJuZ0ZvciIsIm5nRm9yT2YiLCJuZ0ZvclRyYWNrQnkiXSxbMywiY2FyZElkIiwiZ3JvdXBOYW1lIiwicGx1Z2luVHlwZSIsImNhcmRPYnNlcnZlciIsImNhcmRMYXp5TG9hZGVyIl0sWyJjbGFzcyIsImdyb3VwLWNvbnRyb2xzIiw0LCJuZ0lmIl0sWzEsImdyb3VwLWNvbnRyb2xzIl0sWzEsInByZXYtY29udGFpbmVyIl0sWyJjbGFzcyIsInByZXYgcGFnaW5hdGlvbi1idXR0b24iLCJtYXQtYnV0dG9uIiwiIiwiYXJpYS1sYWJlbCIsdCwzLCJkaXNhYmxlZCIsImNsaWNrIiw0LCJuZ0lmIl0sWzEsImlucHV0LWFuZC1uZXh0LWNvbnRhaW5lciJdLFsibWF0LWJ1dHRvbiIsIiIsImFyaWEtbGFiZWwiLHQsMSwicHJldiIsInBhZ2luYXRpb24tYnV0dG9uIiwzLCJkaXNhYmxlZCIsImNsaWNrIl0sWyJjbGFzcyIsInBhZ2luYXRpb24taW5wdXQiLDQsIm5nSWYiXSxbIm1hdC1idXR0b24iLCIiLCJhcmlhLWxhYmVsIixlLDEsIm5leHQiLCJwYWdpbmF0aW9uLWJ1dHRvbiIsMywiZGlzYWJsZWQiLCJjbGljayJdLFsxLCJwYWdpbmF0aW9uLWlucHV0Il0sWyJ0eXBlIiwibnVtYmVyIiwibWluIiwiMSIsMywidmFsdWUiLCJtYXgiLCJpbnB1dCIsImNoYW5nZSJdXX0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKEhtKDAsUWJ0LDUsMTAsImRpdiIsMCksSG0oMSxveXQsMSwxLCJuZy10ZW1wbGF0ZSIsbnVsbCwxLHF5KSksMiZlJiZiZigibmdJZiIsbi5pc0dyb3VwRXhwYW5kZWQpfSxkaXJlY3RpdmVzOltQdixJdix4dixZYnQsQzQsTkxdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgdHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfVtfbmdob3N0LSVDT01QJV17Y29udGFpbjpjb250ZW50fS5jYXJkLWdyaWRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KGF1dG8tZmlsbCwgbWlubWF4KDMzNXB4LCBhdXRvKSk7Z2FwOjE2cHg7cGFkZGluZzoxNnB4fWNhcmQtdmlld1tfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjFweCBzb2xpZCAjZWJlYmViO2JvcmRlci1yYWRpdXM6NHB4O2JveC1zaXppbmc6Ym9yZGVyLWJveDtjb250YWluOnN0cmljdDtoZWlnaHQ6MTAwJTttaW4taGVpZ2h0OjMyMHB4fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIGNhcmQtdmlld1tfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIGNhcmQtdmlld1tfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjFweCBzb2xpZCAjNTU1fWNhcmQtdmlldy5mdWxsLXdpZHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtjb250YWluOmxheW91dCBwYWludDtncmlkLWNvbHVtbi1zdGFydDoxO2dyaWQtY29sdW1uLWVuZDotMX1jYXJkLXZpZXcuZnVsbC1oZWlnaHRbX25nY29udGVudC0lQ09NUCVde21pbi1oZWlnaHQ6NDgwcHh9Lmdyb3VwLWNvbnRyb2xzW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxO2Rpc3BsYXk6Z3JpZDthbGlnbi1pdGVtczpjZW50ZXI7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmciAxZnI7Z2FwOjE2cHg7cGFkZGluZzowIDE2cHh9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLmdyb3VwLWNvbnRyb2xzW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmdyb3VwLWNvbnRyb2xzW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX0uZ3JvdXAtY29udHJvbHNbX25nY29udGVudC0lQ09NUCVdOmZpcnN0LW9mLXR5cGV7cGFkZGluZy10b3A6MTZweH0uZ3JvdXAtY29udHJvbHNbX25nY29udGVudC0lQ09NUCVdOmxhc3Qtb2YtdHlwZXtwYWRkaW5nLWJvdHRvbToxNnB4fS5wcmV2LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17anVzdGlmeS1zZWxmOmZsZXgtc3RhcnR9LmlucHV0LWFuZC1uZXh0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17anVzdGlmeS1zZWxmOmZsZXgtZW5kfS5wYWdpbmF0aW9uLWlucHV0W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tcmlnaHQ6MTZweH0ucGFnaW5hdGlvbi1pbnB1dFtfbmdjb250ZW50LSVDT01QJV0gICBpbnB1dFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDp0cmFuc3BhcmVudDtib3JkZXI6MXB4IHNvbGlkIGN1cnJlbnRDb2xvcjtjb2xvcjppbmhlcml0O2ZvbnQ6aW5oZXJpdH0ucGFnaW5hdGlvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjE7YmFja2dyb3VuZC1jb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5wYWdpbmF0aW9uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5wYWdpbmF0aW9uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9LnBhZ2luYXRpb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXTpkaXNhYmxlZHtjb2xvcjojNzU3NTc1fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5wYWdpbmF0aW9uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV06ZGlzYWJsZWQsIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5wYWdpbmF0aW9uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV06ZGlzYWJsZWR7Y29sb3I6IzYxNjE2MX0nXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoaXl0LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Im1ldHJpY3MtY2FyZC1ncmlkLWNvbXBvbmVudCIsdGVtcGxhdGVVcmw6Ii4vY2FyZF9ncmlkX2NvbXBvbmVudC5uZy5odG1sIixzdHlsZVVybHM6WyIuL2NhcmRfZ3JpZF9jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkpMLGRlY29yYXRvcnM6W3t0eXBlOkJyfV19XX0pLHtpc0dyb3VwRXhwYW5kZWQ6W3t0eXBlOlJffV0scGFnZUluZGV4Olt7dHlwZTpSX31dLG51bVBhZ2VzOlt7dHlwZTpSX31dLGNhcmRJZHNXaXRoTWV0YWRhdGE6W3t0eXBlOlJffV0sY2FyZE1pbldpZHRoOlt7dHlwZTpSX31dLGNhcmRPYnNlcnZlcjpbe3R5cGU6Ul99XSxzaG93UGFnaW5hdGlvbkNvbnRyb2xzOlt7dHlwZTpSX31dLHBhZ2VJbmRleENoYW5nZWQ6W3t0eXBlOkVffV19KTtjbGFzcyBheXR7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMuZ3JvdXBOYW1lPW51bGwsdGhpcy5ncm91cE5hbWUkPW5ldyBqKG51bGwpLHRoaXMucGFnZUluZGV4JD1uZXcgaigwKSx0aGlzLml0ZW1zJD1uZXcgaihbXSksdGhpcy5uZ1Vuc3Vic2NyaWJlPW5ldyBCLHRoaXMubnVtUGFnZXMkPUt0KFt0aGlzLml0ZW1zJCx0aGlzLnN0b3JlLnNlbGVjdChoSSldKS5waXBlKFZ0KCgoW3QsZV0pPT5NYXRoLmNlaWwodC5sZW5ndGgvZSkpKSksdGhpcy5pc0dyb3VwRXhwYW5kZWQkPXRoaXMuZ3JvdXBOYW1lJC5waXBlKFZlKCh0PT5udWxsIT09dD90aGlzLnN0b3JlLnNlbGVjdCh3eix0KTp6dCghMCkpKSksdGhpcy5zaG93UGFnaW5hdGlvbkNvbnRyb2xzJD10aGlzLm51bVBhZ2VzJC5waXBlKFZ0KCh0PT50PjEpKSksdGhpcy5ub3JtYWxpemVkUGFnZUluZGV4JD1LdChbdGhpcy5wYWdlSW5kZXgkLHRoaXMubnVtUGFnZXMkXSkucGlwZShqZSh0aGlzLm5nVW5zdWJzY3JpYmUpLFdlKCgoW3QsZV0pPT57MCE9PWUmJih0Pj1lP3RoaXMucGFnZUluZGV4JC5uZXh0KGUtMSk6dDwwJiZ0aGlzLnBhZ2VJbmRleCQubmV4dCgwKSl9KSksVnQoKChbdCxlXSk9Pk1hdGgubWluKE1hdGgubWF4KHQsMCksZS0xKSkpLEZlKDEpKSx0aGlzLnBhZ2VkSXRlbXMkPUt0KFt0aGlzLml0ZW1zJCx0aGlzLnN0b3JlLnNlbGVjdChoSSksdGhpcy5ub3JtYWxpemVkUGFnZUluZGV4JCx0aGlzLmlzR3JvdXBFeHBhbmRlZCRdKS5waXBlKFZ0KCgoW3QsZSxuLG9dKT0+dC5zbGljZShlKm4sZSpuKyhvP2U6MCkpKSkpLHRoaXMuY2FyZE1pbldpZHRoJD1LdChbdGhpcy5zdG9yZS5zZWxlY3QoZ3opLHRoaXMuc3RvcmUuc2VsZWN0KHFEKV0pLnBpcGUoVnQoKChbdCxlXSk9PmU/dDpudWxsKSkpfW5nT25DaGFuZ2VzKHQpe3QuY2FyZElkc1dpdGhNZXRhZGF0YSYmdGhpcy5pdGVtcyQubmV4dCh0aGlzLmNhcmRJZHNXaXRoTWV0YWRhdGEpLHQuZ3JvdXBOYW1lJiZ0aGlzLmdyb3VwTmFtZSQubmV4dCh0aGlzLmdyb3VwTmFtZSl9bmdPbkRlc3Ryb3koKXt0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpLHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpfW9uUGFnZUluZGV4Q2hhbmdlZCh0KXt0aGlzLnBhZ2VJbmRleCQubmV4dCh0KX19ZnVuY3Rpb24gcnl0KHQsZSl7aWYoMSZ0JiYoQ2YoMCwic3BhbiIsOCksUHUoMSksTWYoKSksMiZ0KXtjb25zdCB0PXpmKCk7RGMoMSksa3UoIiIsdC5jYXJkSWRzV2l0aE1ldGFkYXRhLmxlbmd0aCwiIGNhcmRzIil9fWZ1bmN0aW9uIHN5dCh0LGUpe2lmKDEmdCYmKENmKDAsInNwYW4iLDkpLFB1KDEsIk5ldyBjYXJkIHBpbm5lZCIpLE1mKCkpLDImdCl7eW0oImRhdGEtaWQiLGUuJGltcGxpY2l0KX19ZnVuY3Rpb24gbHl0KHQsZSl7aWYoMSZ0JiZ2ZigwLCJtZXRyaWNzLWNhcmQtZ3JpZCIsMTApLDImdCl7Y29uc3QgdD16ZigpO2JmKCJjYXJkSWRzV2l0aE1ldGFkYXRhIix0LmNhcmRJZHNXaXRoTWV0YWRhdGEpKCJjYXJkT2JzZXJ2ZXIiLHQuY2FyZE9ic2VydmVyKX19ZnVuY3Rpb24gY3l0KHQsZSl7MSZ0JiYoQ2YoMCwiZGl2IiwxMSksUHUoMSwiUGluIGNhcmRzIGZvciBhIHF1aWNrIHZpZXcgYW5kIGNvbXBhcmlzb24iKSxNZigpKX1heXQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGF5dCkoZ2YoaVMpKX0sYXl0Lsm1Y21wPXNvKHt0eXBlOmF5dCxzZWxlY3RvcnM6W1sibWV0cmljcy1jYXJkLWdyaWQiXV0saW5wdXRzOntncm91cE5hbWU6Imdyb3VwTmFtZSIsY2FyZElkc1dpdGhNZXRhZGF0YToiY2FyZElkc1dpdGhNZXRhZGF0YSIsY2FyZE9ic2VydmVyOiJjYXJkT2JzZXJ2ZXIifSxmZWF0dXJlczpbcW9dLGRlY2xzOjcsdmFyczoxOSxjb25zdHM6W1szLCJpc0dyb3VwRXhwYW5kZWQiLCJwYWdlSW5kZXgiLCJudW1QYWdlcyIsInNob3dQYWdpbmF0aW9uQ29udHJvbHMiLCJjYXJkSWRzV2l0aE1ldGFkYXRhIiwiY2FyZE1pbldpZHRoIiwiY2FyZE9ic2VydmVyIiwicGFnZUluZGV4Q2hhbmdlZCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoQ2YoMCwibWV0cmljcy1jYXJkLWdyaWQtY29tcG9uZW50IiwwKSxSZigicGFnZUluZGV4Q2hhbmdlZCIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25QYWdlSW5kZXhDaGFuZ2VkKGUpfSkpLF95KDEsImFzeW5jIiksX3koMiwiYXN5bmMiKSxfeSgzLCJhc3luYyIpLF95KDQsImFzeW5jIiksX3koNSwiYXN5bmMiKSxfeSg2LCJhc3luYyIpLE1mKCkpLDImZSYmYmYoImlzR3JvdXBFeHBhbmRlZCIsQ3koMSw3LG4uaXNHcm91cEV4cGFuZGVkJCkpKCJwYWdlSW5kZXgiLEN5KDIsOSxuLm5vcm1hbGl6ZWRQYWdlSW5kZXgkKSkoIm51bVBhZ2VzIixDeSgzLDExLG4ubnVtUGFnZXMkKSkoInNob3dQYWdpbmF0aW9uQ29udHJvbHMiLEN5KDQsMTMsbi5zaG93UGFnaW5hdGlvbkNvbnRyb2xzJCkpKCJjYXJkSWRzV2l0aE1ldGFkYXRhIixDeSg1LDE1LG4ucGFnZWRJdGVtcyQpKSgiY2FyZE1pbldpZHRoIixDeSg2LDE3LG4uY2FyZE1pbldpZHRoJCkpKCJjYXJkT2JzZXJ2ZXIiLG4uY2FyZE9ic2VydmVyKX0sZGlyZWN0aXZlczpbaXl0XSxwaXBlczpbVnZdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoYXl0LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Im1ldHJpY3MtY2FyZC1ncmlkIix0ZW1wbGF0ZTonXG4gICAgPG1ldHJpY3MtY2FyZC1ncmlkLWNvbXBvbmVudFxuICAgICAgW2lzR3JvdXBFeHBhbmRlZF09ImlzR3JvdXBFeHBhbmRlZCQgfCBhc3luYyJcbiAgICAgIFtwYWdlSW5kZXhdPSJub3JtYWxpemVkUGFnZUluZGV4JCB8IGFzeW5jIlxuICAgICAgW251bVBhZ2VzXT0ibnVtUGFnZXMkIHwgYXN5bmMiXG4gICAgICBbc2hvd1BhZ2luYXRpb25Db250cm9sc109InNob3dQYWdpbmF0aW9uQ29udHJvbHMkIHwgYXN5bmMiXG4gICAgICBbY2FyZElkc1dpdGhNZXRhZGF0YV09InBhZ2VkSXRlbXMkIHwgYXN5bmMiXG4gICAgICBbY2FyZE1pbldpZHRoXT0iY2FyZE1pbldpZHRoJCB8IGFzeW5jIlxuICAgICAgW2NhcmRPYnNlcnZlcl09ImNhcmRPYnNlcnZlciJcbiAgICAgIChwYWdlSW5kZXhDaGFuZ2VkKT0ib25QYWdlSW5kZXhDaGFuZ2VkKCRldmVudCkiXG4gICAgPlxuICAgIDwvbWV0cmljcy1jYXJkLWdyaWQtY29tcG9uZW50PlxuICAnLGNoYW5nZURldGVjdGlvbjpqbi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTppU31dfSkse2dyb3VwTmFtZTpbe3R5cGU6Ul99XSxjYXJkSWRzV2l0aE1ldGFkYXRhOlt7dHlwZTpSX31dLGNhcmRPYnNlcnZlcjpbe3R5cGU6Ul99XX0pO2NsYXNzIGR5dHt9ZHl0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxkeXQpfSxkeXQuybVjbXA9c28oe3R5cGU6ZHl0LHNlbGVjdG9yczpbWyJtZXRyaWNzLXBpbm5lZC12aWV3LWNvbXBvbmVudCJdXSxpbnB1dHM6e2NhcmRPYnNlcnZlcjoiY2FyZE9ic2VydmVyIixjYXJkSWRzV2l0aE1ldGFkYXRhOiJjYXJkSWRzV2l0aE1ldGFkYXRhIixuZXdDYXJkUGlubmVkSWRzOiJuZXdDYXJkUGlubmVkSWRzIn0sZGVjbHM6MTAsdmFyczo0LGNvbnN0czpbWzEsImdyb3VwLXRvb2xiYXIiXSxbInN2Z0ljb24iLCJrZWVwXzI0cHgiXSxbMSwiZ3JvdXAtdGV4dCJdLFsiYXJpYS1yb2xlIiwiaGVhZGluZyIsImFyaWEtbGV2ZWwiLCIzIiwxLCJncm91cC10aXRsZSJdLFsiY2xhc3MiLCJncm91cC1jYXJkLWNvdW50Iiw0LCJuZ0lmIl0sWyJjbGFzcyIsIm5ldy1jYXJkLXBpbm5lZCIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWzMsImNhcmRJZHNXaXRoTWV0YWRhdGEiLCJjYXJkT2JzZXJ2ZXIiLDQsIm5nSWYiLCJuZ0lmRWxzZSJdLFsiZW1wdHlQaW5uZWRWaWV3IiwiIl0sWzEsImdyb3VwLWNhcmQtY291bnQiXSxbMSwibmV3LWNhcmQtcGlubmVkIl0sWzMsImNhcmRJZHNXaXRoTWV0YWRhdGEiLCJjYXJkT2JzZXJ2ZXIiXSxbMSwiZW1wdHktbWVzc2FnZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiYoQ2YoMCwiZGl2IiwwKSx2ZigxLCJtYXQtaWNvbiIsMSksQ2YoMiwic3BhbiIsMiksQ2YoMywic3BhbiIsMyksUHUoNCwiUGlubmVkIiksTWYoKSxIbSg1LHJ5dCwyLDEsInNwYW4iLDQpLEhtKDYsc3l0LDIsMSwic3BhbiIsNSksTWYoKSxNZigpLEhtKDcsbHl0LDEsMiwibWV0cmljcy1jYXJkLWdyaWQiLDYpLEhtKDgsY3l0LDIsMCwibmctdGVtcGxhdGUiLG51bGwsNyxxeSkpLDImZSl7Y29uc3QgdD1GbSg5KTtEYyg1KSxiZigibmdJZiIsbi5jYXJkSWRzV2l0aE1ldGFkYXRhLmxlbmd0aD4xKSxEYygxKSxiZigibmdGb3JPZiIsbi5uZXdDYXJkUGlubmVkSWRzKSxEYygxKSxiZigibmdJZiIsbi5jYXJkSWRzV2l0aE1ldGFkYXRhLmxlbmd0aCkoIm5nSWZFbHNlIix0KX19LGRpcmVjdGl2ZXM6W01xLFB2LHh2LGF5dF0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCB0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9W19uZ2hvc3QtJUNPTVAlXSAgIC5ncm91cC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2ViZWJlYjthbGlnbi1pdGVtczpjZW50ZXI7YmFja2dyb3VuZC1jb2xvcjojZmZmO2Rpc3BsYXk6ZmxleDtmbGV4Om5vbmU7aGVpZ2h0OjQycHg7bWFyZ2luLWJvdHRvbTotMXB4O3BhZGRpbmc6MCAxNnB4O3Bvc2l0aW9uOnN0aWNreTt0b3A6MDt6LWluZGV4OjE7Ym94LXNoYWRvdzowcHggMnB4IDRweCAwcHggcmdiYSgwLDAsMCwuMTUpfWJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5ncm91cC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiMzMDMwMzB9Ym9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmdyb3VwLXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1ib3R0b206MXB4IHNvbGlkICM1NTV9Ym9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmdyb3VwLXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDJweCA0cHggMHB4IHJnYmEoMjU1LDI1NSwyNTUsLjE1KX1tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MTtmbGV4Om5vbmU7bWFyZ2luLXJpZ2h0OjVweH1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICBtYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIG1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX0uZ3JvdXAtdGV4dFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmJhc2VsaW5lO2dhcDo2cHh9Lmdyb3VwLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lmdyb3VwLWNhcmQtY291bnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjQwMDtjb2xvcjojNjE2MTYxfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5ncm91cC1jYXJkLWNvdW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmdyb3VwLWNhcmQtY291bnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfS5lbXB0eS1tZXNzYWdlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtc3R5bGU6aXRhbGljO3BhZGRpbmc6MTZweDt0ZXh0LWFsaWduOmNlbnRlcn1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAuZW1wdHktbWVzc2FnZVtfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5lbXB0eS1tZXNzYWdlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX0ubmV3LWNhcmQtcGlubmVkW19uZ2NvbnRlbnQtJUNPTVAlXXthbmltYXRpb246cGlubmVkLXZpZXctZmFkZS1vdXQgM3MgbGluZWFyO2JhY2tncm91bmQ6I2Y0NDMzNjtib3JkZXItcmFkaXVzOjVweDtjb2xvcjojZmZmO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2ZvbnQtc2l6ZToxM3B4O29wYWNpdHk6MDtwYWRkaW5nOjNweCA1cHh9QGtleWZyYW1lcyBwaW5uZWQtdmlldy1mYWRlLW91dHtmcm9te29wYWNpdHk6MX02NiV7b3BhY2l0eTouOTl9dG97b3BhY2l0eTowfX0nXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoZHl0LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Im1ldHJpY3MtcGlubmVkLXZpZXctY29tcG9uZW50Iix0ZW1wbGF0ZTonXG4gICAgPGRpdiBjbGFzcz0iZ3JvdXAtdG9vbGJhciI+XG4gICAgICA8bWF0LWljb24gc3ZnSWNvbj0ia2VlcF8yNHB4Ij48L21hdC1pY29uPlxuICAgICAgPHNwYW4gY2xhc3M9Imdyb3VwLXRleHQiPlxuICAgICAgICA8c3BhbiBjbGFzcz0iZ3JvdXAtdGl0bGUiIGFyaWEtcm9sZT0iaGVhZGluZyIgYXJpYS1sZXZlbD0iMyJcbiAgICAgICAgICA+UGlubmVkPC9zcGFuXG4gICAgICAgID5cbiAgICAgICAgPHNwYW4gKm5nSWY9ImNhcmRJZHNXaXRoTWV0YWRhdGEubGVuZ3RoID4gMSIgY2xhc3M9Imdyb3VwLWNhcmQtY291bnQiXG4gICAgICAgICAgPnt7IGNhcmRJZHNXaXRoTWV0YWRhdGEubGVuZ3RoIH19IGNhcmRzPC9zcGFuXG4gICAgICAgID5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICAqbmdGb3I9ImxldCBpZCBvZiBuZXdDYXJkUGlubmVkSWRzIlxuICAgICAgICAgIFthdHRyLmRhdGEtaWRdPSJpZCJcbiAgICAgICAgICBjbGFzcz0ibmV3LWNhcmQtcGlubmVkIlxuICAgICAgICAgID5OZXcgY2FyZCBwaW5uZWQ8L3NwYW5cbiAgICAgICAgPlxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICAgIDxtZXRyaWNzLWNhcmQtZ3JpZFxuICAgICAgKm5nSWY9ImNhcmRJZHNXaXRoTWV0YWRhdGEubGVuZ3RoOyBlbHNlIGVtcHR5UGlubmVkVmlldyJcbiAgICAgIFtjYXJkSWRzV2l0aE1ldGFkYXRhXT0iY2FyZElkc1dpdGhNZXRhZGF0YSJcbiAgICAgIFtjYXJkT2JzZXJ2ZXJdPSJjYXJkT2JzZXJ2ZXIiXG4gICAgPjwvbWV0cmljcy1jYXJkLWdyaWQ+XG4gICAgPG5nLXRlbXBsYXRlICNlbXB0eVBpbm5lZFZpZXc+XG4gICAgICA8ZGl2IGNsYXNzPSJlbXB0eS1tZXNzYWdlIj5QaW4gY2FyZHMgZm9yIGEgcXVpY2sgdmlldyBhbmQgY29tcGFyaXNvbjwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICcsc3R5bGVVcmxzOlsicGlubmVkX3ZpZXdfY29tcG9uZW50LmNzcyJdLGNoYW5nZURldGVjdGlvbjpqbi5PblB1c2h9XX1dLG51bGwse2NhcmRPYnNlcnZlcjpbe3R5cGU6Ul99XSxjYXJkSWRzV2l0aE1ldGFkYXRhOlt7dHlwZTpSX31dLG5ld0NhcmRQaW5uZWRJZHM6W3t0eXBlOlJffV19KTtjbGFzcyBweXR7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMuY2FyZElkc1dpdGhNZXRhZGF0YSQ9dGhpcy5zdG9yZS5zZWxlY3QoY3opLnBpcGUoQmUoW10pKSx0aGlzLm5ld0NhcmRQaW5uZWRJZHMkPXRoaXMuc3RvcmUuc2VsZWN0KGN6KS5waXBlKExlKDEpLFZ0KCh0PT50Lm1hcCgodD0+dC5jYXJkSWQpKSkpLE5lKCksVnQoKChbdCxlXSk9Pntjb25zdCBuPW5ldyBTZXQodCksbz1uZXcgU2V0KGUpO2Zvcihjb25zdCB0IG9mIG8paWYoIW4uaGFzKHQpKXJldHVybiBEYXRlLm5vdygpO3JldHVybiBudWxsfSkpLEJlKG51bGwpLE5lKCksVnQoKChbdCxlXSk9Pm51bGw9PT10JiZudWxsPT09ZT9udWxsOm51bGw9PT1lP1t0XTpbZV0pKSx1ZSgodD0+bnVsbCE9PXQpKSxWdCgodD0+W3RbMF1dKSkpfX1weXQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHB5dCkoZ2YoaVMpKX0scHl0Lsm1Y21wPXNvKHt0eXBlOnB5dCxzZWxlY3RvcnM6W1sibWV0cmljcy1waW5uZWQtdmlldyJdXSxpbnB1dHM6e2NhcmRPYnNlcnZlcjoiY2FyZE9ic2VydmVyIn0sZGVjbHM6Myx2YXJzOjcsY29uc3RzOltbMywiY2FyZElkc1dpdGhNZXRhZGF0YSIsIm5ld0NhcmRQaW5uZWRJZHMiLCJjYXJkT2JzZXJ2ZXIiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKHZmKDAsIm1ldHJpY3MtcGlubmVkLXZpZXctY29tcG9uZW50IiwwKSxfeSgxLCJhc3luYyIpLF95KDIsImFzeW5jIikpLDImZSYmYmYoImNhcmRJZHNXaXRoTWV0YWRhdGEiLEN5KDEsMyxuLmNhcmRJZHNXaXRoTWV0YWRhdGEkKSkoIm5ld0NhcmRQaW5uZWRJZHMiLEN5KDIsNSxuLm5ld0NhcmRQaW5uZWRJZHMkKSkoImNhcmRPYnNlcnZlciIsbi5jYXJkT2JzZXJ2ZXIpfSxkaXJlY3RpdmVzOltkeXRdLHBpcGVzOltWdl0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihweXQsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoibWV0cmljcy1waW5uZWQtdmlldyIsdGVtcGxhdGU6J1xuICAgIDxtZXRyaWNzLXBpbm5lZC12aWV3LWNvbXBvbmVudFxuICAgICAgW2NhcmRJZHNXaXRoTWV0YWRhdGFdPSJjYXJkSWRzV2l0aE1ldGFkYXRhJCB8IGFzeW5jIlxuICAgICAgW25ld0NhcmRQaW5uZWRJZHNdPSJuZXdDYXJkUGlubmVkSWRzJCB8IGFzeW5jIlxuICAgICAgW2NhcmRPYnNlcnZlcl09ImNhcmRPYnNlcnZlciJcbiAgICA+PC9tZXRyaWNzLXBpbm5lZC12aWV3LWNvbXBvbmVudD5cbiAgJyxjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNofV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6aVN9XX0pLHtjYXJkT2JzZXJ2ZXI6W3t0eXBlOlJffV19KTtjb25zdCBteXQ9YlMoYXosX0ksKCh0LGUpPT50LmZpbHRlcigodD0+IW9OKHQucGx1Z2luKXx8Qm9vbGVhbihlJiZlLmdldCh0LnJ1bklkKSkpKSkpLGZ5dD1iUyhteXQsKHQ9PnQuc29ydCgoKHQsZSk9PlgkKHQudGFnLGUudGFnKSkpKSk7ZnVuY3Rpb24gdXl0KHQsZSl7aWYoMSZ0JiYoQ2YoMCwic3BhbiIsNyksUHUoMSksX3koMiwibnVtYmVyIiksTWYoKSksMiZ0KXtjb25zdCB0PXpmKCk7RGMoMSksa3UoIiIsQ3koMiwxLHQubnVtYmVyT2ZDYXJkcyksIiBjYXJkcyIpfX1mdW5jdGlvbiBneXQodCxlKXsxJnQmJnZmKDAsIm1hdC1pY29uIiw4KX1mdW5jdGlvbiBoeXQodCxlKXsxJnQmJnZmKDAsIm1hdC1pY29uIiw5KX1jbGFzcyBieXR7Y29uc3RydWN0b3IoKXt0aGlzLmdyb3VwRXhwYW5zaW9uVG9nZ2xlZD1uZXcgU3l9fWJ5dC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8Ynl0KX0sYnl0Lsm1Y21wPXNvKHt0eXBlOmJ5dCxzZWxlY3RvcnM6W1sibWV0cmljcy1jYXJkLWdyb3VwLXRvb2xiYXItY29tcG9uZW50Il1dLGlucHV0czp7Z3JvdXBOYW1lOiJncm91cE5hbWUiLG51bWJlck9mQ2FyZHM6Im51bWJlck9mQ2FyZHMiLGlzR3JvdXBFeHBhbmRlZDoiaXNHcm91cEV4cGFuZGVkIn0sb3V0cHV0czp7Z3JvdXBFeHBhbnNpb25Ub2dnbGVkOiJncm91cEV4cGFuc2lvblRvZ2dsZWQifSxkZWNsczo5LHZhcnM6NSxjb25zdHM6ZnVuY3Rpb24oKXtsZXQgdDtpZigidW5kZWZpbmVkIiE9dHlwZW9mIG5nSTE4bkNsb3N1cmVNb2RlJiZuZ0kxOG5DbG9zdXJlTW9kZSl7dD1nb29nLmdldE1zZygiRXhwYW5kIGdyb3VwIil9ZWxzZSB0PSRsb2NhbGl6ZWA6QSBidXR0b24gdGhhdCBhbGxvd3MgdXNlciB0byBleHBhbmQgYSB0YWcgZ3JvdXAu4pCfZmZhYTExNDcxYjg3OGE2ZGZmZTJlNjhjNmYzNzA2NGE5ZTA3NDg1M+KQnzUzODYwNTQzMjUyNzQ3NzkyNTg6RXhwYW5kIGdyb3VwYDtyZXR1cm5bWyJhcmlhLWxhYmVsIix0LDEsImdyb3VwLXRvb2xiYXIiLDMsImNsaWNrIl0sWzEsImdyb3VwLXRpdGxlLXdyYXBwZXIiXSxbImFyaWEtcm9sZSIsImhlYWRpbmciLCJhcmlhLWxldmVsIiwiMyIsMSwiZ3JvdXAtdGl0bGUiLDMsInRpdGxlIl0sWyJjbGFzcyIsImdyb3VwLWNhcmQtY291bnQiLDQsIm5nSWYiXSxbMSwiZXhwYW5kLWdyb3VwLWljb24iXSxbInN2Z0ljb24iLCJleHBhbmRfbGVzc18yNHB4Iiw0LCJuZ0lmIiwibmdJZkVsc2UiXSxbImV4cGFuZE1vcmUiLCIiXSxbMSwiZ3JvdXAtY2FyZC1jb3VudCJdLFsic3ZnSWNvbiIsImV4cGFuZF9sZXNzXzI0cHgiXSxbInN2Z0ljb24iLCJleHBhbmRfbW9yZV8yNHB4Il1dfSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiYoQ2YoMCwiYnV0dG9uIiwwKSxSZigiY2xpY2siLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4uZ3JvdXBFeHBhbnNpb25Ub2dnbGVkLmVtaXQoKX0pKSxDZigxLCJzcGFuIiwxKSxDZigyLCJzcGFuIiwyKSxQdSgzKSxNZigpLEhtKDQsdXl0LDMsMywic3BhbiIsMyksTWYoKSxDZig1LCJzcGFuIiw0KSxIbSg2LGd5dCwxLDAsIm1hdC1pY29uIiw1KSxIbSg3LGh5dCwxLDAsIm5nLXRlbXBsYXRlIixudWxsLDYscXkpLE1mKCksTWYoKSksMiZlKXtjb25zdCB0PUZtKDgpO0RjKDIpLExmKCJ0aXRsZSIsbi5ncm91cE5hbWUpLERjKDEpLHd1KG4uZ3JvdXBOYW1lKSxEYygxKSxiZigibmdJZiIsbi5udW1iZXJPZkNhcmRzPjEpLERjKDIpLGJmKCJuZ0lmIixuLmlzR3JvdXBFeHBhbmRlZCkoIm5nSWZFbHNlIix0KX19LGRpcmVjdGl2ZXM6W1B2LE1xXSxwaXBlczpbJHZdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgdHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfVtfbmdob3N0LSVDT01QJV0gICAuZ3JvdXAtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlYmViZWI7YWxpZ24taXRlbXM6Y2VudGVyO2JhY2tncm91bmQtY29sb3I6I2ZmZjtkaXNwbGF5OmZsZXg7ZmxleDpub25lO2hlaWdodDo0MnB4O21hcmdpbi1ib3R0b206LTFweDtwYWRkaW5nOjAgMTZweDtwb3NpdGlvbjpzdGlja3k7dG9wOjA7ei1pbmRleDoxO2JveC1zaGFkb3c6MHB4IDJweCA0cHggMHB4IHJnYmEoMCwwLDAsLjE1KX1ib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuZ3JvdXAtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojMzAzMDMwfWJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5ncm91cC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjNTU1fWJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5ncm91cC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAycHggNHB4IDBweCByZ2JhKDI1NSwyNTUsMjU1LC4xNSl9W19uZ2hvc3QtJUNPTVAlXSAgIC5ncm91cC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtib3JkZXItdG9wOjFweCBzb2xpZCAjZWJlYmViO2NvbG9yOiMyMTIxMjE7dG9wOi0xcHg7ZGlzcGxheTpmbGV4O3dpZHRoOjEwMCU7Zm9udDppbmhlcml0fWJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5ncm91cC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wOjFweCBzb2xpZCAjNTU1fWJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5ncm91cC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5jYXJkLWdyb3VwOmZpcnN0LW9mLXR5cGUgICBbX25naG9zdC0lQ09NUCVdICAgLmdyb3VwLXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3A6MH1bX25naG9zdC0lQ09NUCVdICAgLmdyb3VwLXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdOmhvdmVye2N1cnNvcjpwb2ludGVyfS5leHBhbmQtZ3JvdXAtaWNvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAuZXhwYW5kLWdyb3VwLWljb25bX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuZXhwYW5kLWdyb3VwLWljb25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfS5leHBhbmQtZ3JvdXAtaWNvbltfbmdjb250ZW50LSVDT01QJV06ZGlzYWJsZWR7Y29sb3I6Izc1NzU3NX1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAuZXhwYW5kLWdyb3VwLWljb25bX25nY29udGVudC0lQ09NUCVdOmRpc2FibGVkLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuZXhwYW5kLWdyb3VwLWljb25bX25nY29udGVudC0lQ09NUCVdOmRpc2FibGVke2NvbG9yOiM2MTYxNjF9Lmdyb3VwLXRpdGxlLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZsZXgtZ3JvdzoxO3RleHQtYWxpZ246bGVmdH0uZ3JvdXAtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0uZ3JvdXAtY2FyZC1jb3VudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NDAwO2NvbG9yOiM2MTYxNjE7bWFyZ2luLWxlZnQ6NnB4fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5ncm91cC1jYXJkLWNvdW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmdyb3VwLWNhcmQtY291bnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfSddLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihieXQsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoibWV0cmljcy1jYXJkLWdyb3VwLXRvb2xiYXItY29tcG9uZW50Iix0ZW1wbGF0ZTonXG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9Imdyb3VwLXRvb2xiYXIiXG4gICAgICBpMThuLWFyaWEtbGFiZWw9IkEgYnV0dG9uIHRoYXQgYWxsb3dzIHVzZXIgdG8gZXhwYW5kIGEgdGFnIGdyb3VwLiJcbiAgICAgIGFyaWEtbGFiZWw9IkV4cGFuZCBncm91cCJcbiAgICAgIChjbGljayk9Imdyb3VwRXhwYW5zaW9uVG9nZ2xlZC5lbWl0KCkiXG4gICAgPlxuICAgICAgPHNwYW4gY2xhc3M9Imdyb3VwLXRpdGxlLXdyYXBwZXIiPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzPSJncm91cC10aXRsZSJcbiAgICAgICAgICBhcmlhLXJvbGU9ImhlYWRpbmciXG4gICAgICAgICAgYXJpYS1sZXZlbD0iMyJcbiAgICAgICAgICB0aXRsZT0ie3sgZ3JvdXBOYW1lIH19IlxuICAgICAgICAgID57eyBncm91cE5hbWUgfX08L3NwYW5cbiAgICAgICAgPlxuICAgICAgICA8c3BhbiAqbmdJZj0ibnVtYmVyT2ZDYXJkcyA+IDEiIGNsYXNzPSJncm91cC1jYXJkLWNvdW50IlxuICAgICAgICAgID57eyBudW1iZXJPZkNhcmRzIHwgbnVtYmVyIH19IGNhcmRzPC9zcGFuXG4gICAgICAgID5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPSJleHBhbmQtZ3JvdXAtaWNvbiI+XG4gICAgICAgIDxtYXQtaWNvblxuICAgICAgICAgICpuZ0lmPSJpc0dyb3VwRXhwYW5kZWQ7IGVsc2UgZXhwYW5kTW9yZSJcbiAgICAgICAgICBzdmdJY29uPSJleHBhbmRfbGVzc18yNHB4IlxuICAgICAgICA+PC9tYXQtaWNvbj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNleHBhbmRNb3JlPlxuICAgICAgICAgIDxtYXQtaWNvbiBzdmdJY29uPSJleHBhbmRfbW9yZV8yNHB4Ij48L21hdC1pY29uPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICAnLHN0eWxlVXJsczpbImNhcmRfZ3JvdXBfdG9vbGJhcl9jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaH1dfV0sbnVsbCx7Z3JvdXBOYW1lOlt7dHlwZTpSX31dLG51bWJlck9mQ2FyZHM6W3t0eXBlOlJffV0saXNHcm91cEV4cGFuZGVkOlt7dHlwZTpSX31dLGdyb3VwRXhwYW5zaW9uVG9nZ2xlZDpbe3R5cGU6RV99XX0pO2NsYXNzIHl5dHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5ncm91cE5hbWU9bnVsbCx0aGlzLmlzR3JvdXBFeHBhbmRlZCQ9enQoITEpfW5nT25Jbml0KCl7dGhpcy5pc0dyb3VwRXhwYW5kZWQkPW51bGwhPT10aGlzLmdyb3VwTmFtZT90aGlzLnN0b3JlLnNlbGVjdCh3eix0aGlzLmdyb3VwTmFtZSk6enQoITEpfW9uR3JvdXBFeHBhbnNpb25Ub2dnbGVkKCl7aWYobnVsbD09PXRoaXMuZ3JvdXBOYW1lKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhcmlhbnQgZXJyb3I6IGV4cGFuc2lvbiBjYW5ub3QgYmUgdG9nZ2xlZCB3aGVuIGdyb3VwTmFtZSBpcyBudWxsIik7dGhpcy5zdG9yZS5kaXNwYXRjaChOQSh7dGFnR3JvdXA6dGhpcy5ncm91cE5hbWV9KSl9fWZ1bmN0aW9uIF95dCh0LGUpe2lmKDEmdCYmKENmKDAsImRpdiIsMSksdmYoMSwibWV0cmljcy1jYXJkLWdyb3VwLXRvb2xiYXIiLDIpLHZmKDIsIm1ldHJpY3MtY2FyZC1ncmlkIiwzKSxNZigpKSwyJnQpe2NvbnN0IHQ9ZS4kaW1wbGljaXQsbj16ZigpO0RjKDEpLGJmKCJudW1iZXJPZkNhcmRzIix0Lml0ZW1zLmxlbmd0aCkoImdyb3VwTmFtZSIsdC5ncm91cE5hbWUpLERjKDEpLGJmKCJjYXJkSWRzV2l0aE1ldGFkYXRhIix0Lml0ZW1zKSgiY2FyZE9ic2VydmVyIixuLmNhcmRPYnNlcnZlcikoImdyb3VwTmFtZSIsdC5ncm91cE5hbWUpfX15eXQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHl5dCkoZ2YoaVMpKX0seXl0Lsm1Y21wPXNvKHt0eXBlOnl5dCxzZWxlY3RvcnM6W1sibWV0cmljcy1jYXJkLWdyb3VwLXRvb2xiYXIiXV0saW5wdXRzOntncm91cE5hbWU6Imdyb3VwTmFtZSIsbnVtYmVyT2ZDYXJkczoibnVtYmVyT2ZDYXJkcyJ9LGRlY2xzOjIsdmFyczo1LGNvbnN0czpbWzMsIm51bWJlck9mQ2FyZHMiLCJpc0dyb3VwRXhwYW5kZWQiLCJncm91cE5hbWUiLCJncm91cEV4cGFuc2lvblRvZ2dsZWQiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKENmKDAsIm1ldHJpY3MtY2FyZC1ncm91cC10b29sYmFyLWNvbXBvbmVudCIsMCksUmYoImdyb3VwRXhwYW5zaW9uVG9nZ2xlZCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vbkdyb3VwRXhwYW5zaW9uVG9nZ2xlZCgpfSkpLF95KDEsImFzeW5jIiksTWYoKSksMiZlJiZiZigibnVtYmVyT2ZDYXJkcyIsbi5udW1iZXJPZkNhcmRzKSgiaXNHcm91cEV4cGFuZGVkIixDeSgxLDMsbi5pc0dyb3VwRXhwYW5kZWQkKSkoImdyb3VwTmFtZSIsbi5ncm91cE5hbWUpfSxkaXJlY3RpdmVzOltieXRdLHBpcGVzOltWdl0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih5eXQsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoibWV0cmljcy1jYXJkLWdyb3VwLXRvb2xiYXIiLHRlbXBsYXRlOidcbiAgICA8bWV0cmljcy1jYXJkLWdyb3VwLXRvb2xiYXItY29tcG9uZW50XG4gICAgICBbbnVtYmVyT2ZDYXJkc109Im51bWJlck9mQ2FyZHMiXG4gICAgICBbaXNHcm91cEV4cGFuZGVkXT0iaXNHcm91cEV4cGFuZGVkJCB8IGFzeW5jIlxuICAgICAgW2dyb3VwTmFtZV09Imdyb3VwTmFtZSJcbiAgICAgIChncm91cEV4cGFuc2lvblRvZ2dsZWQpPSJvbkdyb3VwRXhwYW5zaW9uVG9nZ2xlZCgpIlxuICAgID48L21ldHJpY3MtY2FyZC1ncm91cC10b29sYmFyLWNvbXBvbmVudD5cbiAgJyxjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNofV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6aVN9XX0pLHtncm91cE5hbWU6W3t0eXBlOlJffV0sbnVtYmVyT2ZDYXJkczpbe3R5cGU6Ul99XX0pO2NsYXNzIEN5dHtjb25zdHJ1Y3Rvcigpe3RoaXMuUGx1Z2luVHlwZT1LVH10cmFja0J5R3JvdXAodCxlKXtyZXR1cm4gZS5ncm91cE5hbWV9fUN5dC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8Q3l0KX0sQ3l0Lsm1Y21wPXNvKHt0eXBlOkN5dCxzZWxlY3RvcnM6W1sibWV0cmljcy1jYXJkLWdyb3Vwcy1jb21wb25lbnQiXV0saW5wdXRzOntjYXJkR3JvdXBzOiJjYXJkR3JvdXBzIixjYXJkT2JzZXJ2ZXI6ImNhcmRPYnNlcnZlciJ9LGRlY2xzOjEsdmFyczoyLGNvbnN0czpbWyJjbGFzcyIsImNhcmQtZ3JvdXAiLDQsIm5nRm9yIiwibmdGb3JPZiIsIm5nRm9yVHJhY2tCeSJdLFsxLCJjYXJkLWdyb3VwIl0sWzMsIm51bWJlck9mQ2FyZHMiLCJncm91cE5hbWUiXSxbMywiY2FyZElkc1dpdGhNZXRhZGF0YSIsImNhcmRPYnNlcnZlciIsImdyb3VwTmFtZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiZIbSgwLF95dCwzLDUsImRpdiIsMCksMiZlJiZiZigibmdGb3JPZiIsbi5jYXJkR3JvdXBzKSgibmdGb3JUcmFja0J5IixuLnRyYWNrQnlHcm91cCl9LGRpcmVjdGl2ZXM6W3h2LHl5dCxheXRdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgdHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfVtfbmdob3N0LSVDT01QJV0gICAuZ3JvdXAtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlYmViZWI7YWxpZ24taXRlbXM6Y2VudGVyO2JhY2tncm91bmQtY29sb3I6I2ZmZjtkaXNwbGF5OmZsZXg7ZmxleDpub25lO2hlaWdodDo0MnB4O21hcmdpbi1ib3R0b206LTFweDtwYWRkaW5nOjAgMTZweDtwb3NpdGlvbjpzdGlja3k7dG9wOjA7ei1pbmRleDoxO2JveC1zaGFkb3c6MHB4IDJweCA0cHggMHB4IHJnYmEoMCwwLDAsLjE1KX1ib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuZ3JvdXAtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojMzAzMDMwfWJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5ncm91cC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjNTU1fWJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5ncm91cC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAycHggNHB4IDBweCByZ2JhKDI1NSwyNTUsMjU1LC4xNSl9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEN5dCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJtZXRyaWNzLWNhcmQtZ3JvdXBzLWNvbXBvbmVudCIsdGVtcGxhdGU6J1xuICAgIDxkaXZcbiAgICAgICpuZ0Zvcj0ibGV0IGdyb3VwIG9mIGNhcmRHcm91cHM7IHRyYWNrQnk6IHRyYWNrQnlHcm91cCJcbiAgICAgIGNsYXNzPSJjYXJkLWdyb3VwIlxuICAgID5cbiAgICAgIDxtZXRyaWNzLWNhcmQtZ3JvdXAtdG9vbGJhclxuICAgICAgICBbbnVtYmVyT2ZDYXJkc109Imdyb3VwLml0ZW1zLmxlbmd0aCJcbiAgICAgICAgW2dyb3VwTmFtZV09Imdyb3VwLmdyb3VwTmFtZSJcbiAgICAgID48L21ldHJpY3MtY2FyZC1ncm91cC10b29sYmFyPlxuICAgICAgPG1ldHJpY3MtY2FyZC1ncmlkXG4gICAgICAgIFtjYXJkSWRzV2l0aE1ldGFkYXRhXT0iZ3JvdXAuaXRlbXMiXG4gICAgICAgIFtjYXJkT2JzZXJ2ZXJdPSJjYXJkT2JzZXJ2ZXIiXG4gICAgICAgIFtncm91cE5hbWVdPSJncm91cC5ncm91cE5hbWUiXG4gICAgICA+PC9tZXRyaWNzLWNhcmQtZ3JpZD5cbiAgICA8L2Rpdj5cbiAgJyxzdHlsZVVybHM6WyJjYXJkX2dyb3Vwc19jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaH1dfV0sbnVsbCx7Y2FyZEdyb3Vwczpbe3R5cGU6Ul99XSxjYXJkT2JzZXJ2ZXI6W3t0eXBlOlJffV19KTtjbGFzcyBNeXR7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMuY2FyZEdyb3VwcyQ9dGhpcy5zdG9yZS5zZWxlY3QoZnl0KS5waXBlKF9lKHRoaXMuc3RvcmUuc2VsZWN0KEF6KSksVnQoKChbdCxlXSk9PmUuc2l6ZT90LmZpbHRlcigodD0+ZS5oYXModC5wbHVnaW4pKSk6dCkpLFZ0KCh0PT5aJCh0KSkpKX19ZnVuY3Rpb24gdnl0KHQsZSl7aWYoMSZ0JiYoQ2YoMCwic3BhbiIpLFB1KDEpLE1mKCkpLDImdCl7Y29uc3QgdD16ZigpO0RjKDEpLGt1KCIgYW5kICIsdC5nZXRQbHVnaW5UeXBlRmlsdGVyU3RyaW5nKHQucGx1Z2luVHlwZXMpLCIgdmlzdWFsaXphdGlvbiBmaWx0ZXIiKX19TXl0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxNeXQpKGdmKGlTKSl9LE15dC7JtWNtcD1zbyh7dHlwZTpNeXQsc2VsZWN0b3JzOltbIm1ldHJpY3MtY2FyZC1ncm91cHMiXV0saW5wdXRzOntjYXJkT2JzZXJ2ZXI6ImNhcmRPYnNlcnZlciJ9LGRlY2xzOjIsdmFyczo0LGNvbnN0czpbWzMsImNhcmRHcm91cHMiLCJjYXJkT2JzZXJ2ZXIiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKHZmKDAsIm1ldHJpY3MtY2FyZC1ncm91cHMtY29tcG9uZW50IiwwKSxfeSgxLCJhc3luYyIpKSwyJmUmJmJmKCJjYXJkR3JvdXBzIixDeSgxLDIsbi5jYXJkR3JvdXBzJCkpKCJjYXJkT2JzZXJ2ZXIiLG4uY2FyZE9ic2VydmVyKX0sZGlyZWN0aXZlczpbQ3l0XSxwaXBlczpbVnZdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoTXl0LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Im1ldHJpY3MtY2FyZC1ncm91cHMiLHRlbXBsYXRlOidcbiAgICA8bWV0cmljcy1jYXJkLWdyb3Vwcy1jb21wb25lbnRcbiAgICAgIFtjYXJkR3JvdXBzXT0iY2FyZEdyb3VwcyQgfCBhc3luYyJcbiAgICAgIFtjYXJkT2JzZXJ2ZXJdPSJjYXJkT2JzZXJ2ZXIiXG4gICAgPjwvbWV0cmljcy1jYXJkLWdyb3Vwcy1jb21wb25lbnQ+XG4gICcsY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmlTfV19KSx7Y2FyZE9ic2VydmVyOlt7dHlwZTpSX31dfSk7Y2xhc3MgeHl0e2NvbnN0cnVjdG9yKCl7dGhpcy5QbHVnaW5UeXBlPUtULHRoaXMubGlzdEZvcm1hdHRlcj1uZXcgSW50bC5MaXN0Rm9ybWF0KHZvaWQgMCx7c3R5bGU6ImxvbmciLHR5cGU6ImRpc2p1bmN0aW9uIn0pfWdldFBsdWdpblR5cGVGaWx0ZXJTdHJpbmcodCl7Y29uc3QgZT1bLi4udF0ubWFwKCh0PT57c3dpdGNoKHQpe2Nhc2UgS1QuU0NBTEFSUzpyZXR1cm4ic2NhbGFyIjtjYXNlIEtULklNQUdFUzpyZXR1cm4iaW1hZ2UiO2Nhc2UgS1QuSElTVE9HUkFNUzpyZXR1cm4iaGlzdG9ncmFtIjtkZWZhdWx0OnRocm93IG5ldyBSYW5nZUVycm9yKGBQbGVhc2UgaW1wbGVtZW50IGh1bWFuIHJlYWRhYmxlIG5hbWUgZm9yIHBsdWdpbiB0eXBlOiAke3R9YCl9fSkpO3JldHVybiB0aGlzLmxpc3RGb3JtYXR0ZXIuZm9ybWF0KGUpfX14eXQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHh5dCl9LHh5dC7JtWNtcD1zbyh7dHlwZTp4eXQsc2VsZWN0b3JzOltbIm1ldHJpY3MtZW1wdHktdGFnLW1hdGNoLWNvbXBvbmVudCJdXSxpbnB1dHM6e3BsdWdpblR5cGVzOiJwbHVnaW5UeXBlcyIsdGFnRmlsdGVyUmVnZXg6InRhZ0ZpbHRlclJlZ2V4Iix0YWdDb3VudHM6InRhZ0NvdW50cyJ9LGRlY2xzOjYsdmFyczo1LGNvbnN0czpbWzQsIm5nSWYiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKFB1KDAsIk5vIG1hdGNoZXMgZm9yIHRhZyBmaWx0ZXIgIiksQ2YoMSwiY29kZSIpLFB1KDIpLE1mKCksSG0oMyx2eXQsMiwxLCJzcGFuIiwwKSxQdSg0KSxfeSg1LCJudW1iZXIiKSksMiZlJiYoRGMoMiksa3UoIi8iLG4udGFnRmlsdGVyUmVnZXgsIi8iKSxEYygxKSxiZigibmdJZiIsbi5wbHVnaW5UeXBlcy5zaXplKSxEYygxKSxrdSgiIG91dCBvZiAiLEN5KDUsMyxuLnRhZ0NvdW50cyksIiB0YWdzLiIpKX0sZGlyZWN0aXZlczpbUHZdLHBpcGVzOlskdl0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih4eXQsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoibWV0cmljcy1lbXB0eS10YWctbWF0Y2gtY29tcG9uZW50Iix0ZW1wbGF0ZTonTm8gbWF0Y2hlcyBmb3IgdGFnIGZpbHRlciA8Y29kZT4ve3sgdGFnRmlsdGVyUmVnZXggfX0vPC9jb2RlXG4gICAgPjxzcGFuICpuZ0lmPSJwbHVnaW5UeXBlcy5zaXplIj5cbiAgICAgIGFuZCB7eyBnZXRQbHVnaW5UeXBlRmlsdGVyU3RyaW5nKHBsdWdpblR5cGVzKSB9fSB2aXN1YWxpemF0aW9uXG4gICAgICBmaWx0ZXI8L3NwYW5cbiAgICA+XG4gICAgb3V0IG9mIHt7IHRhZ0NvdW50cyB8IG51bWJlciB9fSB0YWdzLicsY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaH1dfV0sbnVsbCx7cGx1Z2luVHlwZXM6W3t0eXBlOlJffV0sdGFnRmlsdGVyUmVnZXg6W3t0eXBlOlJffV0sdGFnQ291bnRzOlt7dHlwZTpSX31dfSk7Y2xhc3MgT3l0e2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLnBsdWdpblR5cGVzJD10aGlzLnN0b3JlLnNlbGVjdChBeiksdGhpcy50YWdGaWx0ZXJSZWdleCQ9dGhpcy5zdG9yZS5zZWxlY3QoUHopLHRoaXMudGFnQ291bnRzJD10aGlzLnN0b3JlLnNlbGVjdChmeXQpLnBpcGUoVnQoKHQ9Pm5ldyBTZXQodC5tYXAoKCh7dGFnOnR9KT0+dCkpKS5zaXplKSkpfX1mdW5jdGlvbiBQeXQodCxlKXtpZigxJnQmJihDZigwLCJzcGFuIiw2KSxQdSgxKSxfeSgyLCJudW1iZXIiKSxNZigpKSwyJnQpe2NvbnN0IHQ9emYoKTtEYygxKSxrdSgiIixDeSgyLDEsdC5jYXJkSWRzV2l0aE1ldGFkYXRhLmxlbmd0aCksIiBjYXJkcyIpfX1mdW5jdGlvbiB3eXQodCxlKXsxJnQmJnZmKDAsIm1ldHJpY3MtZW1wdHktdGFnLW1hdGNoIiw3KX1PeXQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fE95dCkoZ2YoaVMpKX0sT3l0Lsm1Y21wPXNvKHt0eXBlOk95dCxzZWxlY3RvcnM6W1sibWV0cmljcy1lbXB0eS10YWctbWF0Y2giXV0sZGVjbHM6NCx2YXJzOjksY29uc3RzOltbMywicGx1Z2luVHlwZXMiLCJ0YWdGaWx0ZXJSZWdleCIsInRhZ0NvdW50cyJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYodmYoMCwibWV0cmljcy1lbXB0eS10YWctbWF0Y2gtY29tcG9uZW50IiwwKSxfeSgxLCJhc3luYyIpLF95KDIsImFzeW5jIiksX3koMywiYXN5bmMiKSksMiZlJiZiZigicGx1Z2luVHlwZXMiLEN5KDEsMyxuLnBsdWdpblR5cGVzJCkpKCJ0YWdGaWx0ZXJSZWdleCIsQ3koMiw1LG4udGFnRmlsdGVyUmVnZXgkKSkoInRhZ0NvdW50cyIsQ3koMyw3LG4udGFnQ291bnRzJCkpfSxkaXJlY3RpdmVzOlt4eXRdLHBpcGVzOltWdl0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihPeXQsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoibWV0cmljcy1lbXB0eS10YWctbWF0Y2giLHRlbXBsYXRlOidcbiAgICA8bWV0cmljcy1lbXB0eS10YWctbWF0Y2gtY29tcG9uZW50XG4gICAgICBbcGx1Z2luVHlwZXNdPSJwbHVnaW5UeXBlcyQgfCBhc3luYyJcbiAgICAgIFt0YWdGaWx0ZXJSZWdleF09InRhZ0ZpbHRlclJlZ2V4JCB8IGFzeW5jIlxuICAgICAgW3RhZ0NvdW50c109InRhZ0NvdW50cyQgfCBhc3luYyJcbiAgICA+PC9tZXRyaWNzLWVtcHR5LXRhZy1tYXRjaC1jb21wb25lbnQ+XG4gICcsY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmlTfV19KSxudWxsKTtjbGFzcyBreXR7fWt5dC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8a3l0KX0sa3l0Lsm1Y21wPXNvKHt0eXBlOmt5dCxzZWxlY3RvcnM6W1sibWV0cmljcy1maWx0ZXJlZC12aWV3LWNvbXBvbmVudCJdXSxpbnB1dHM6e2lzRW1wdHlNYXRjaDoiaXNFbXB0eU1hdGNoIixjYXJkT2JzZXJ2ZXI6ImNhcmRPYnNlcnZlciIsY2FyZElkc1dpdGhNZXRhZGF0YToiY2FyZElkc1dpdGhNZXRhZGF0YSJ9LGRlY2xzOjcsdmFyczo0LGNvbnN0czpbWzEsImdyb3VwLXRvb2xiYXIiXSxbMSwiZ3JvdXAtdGV4dCJdLFsiYXJpYS1yb2xlIiwiaGVhZGluZyIsImFyaWEtbGV2ZWwiLCIzIiwxLCJncm91cC10aXRsZSJdLFsiY2xhc3MiLCJncm91cC1jYXJkLWNvdW50Iiw0LCJuZ0lmIl0sWyJjbGFzcyIsIndhcm4iLDQsIm5nSWYiXSxbMywiY2FyZElkc1dpdGhNZXRhZGF0YSIsImNhcmRPYnNlcnZlciJdLFsxLCJncm91cC1jYXJkLWNvdW50Il0sWzEsIndhcm4iXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKENmKDAsImRpdiIsMCksQ2YoMSwic3BhbiIsMSksQ2YoMiwic3BhbiIsMiksUHUoMywiVGFncyBtYXRjaGluZyBmaWx0ZXIiKSxNZigpLEhtKDQsUHl0LDMsMywic3BhbiIsMyksTWYoKSxNZigpLEhtKDUsd3l0LDEsMCwibWV0cmljcy1lbXB0eS10YWctbWF0Y2giLDQpLHZmKDYsIm1ldHJpY3MtY2FyZC1ncmlkIiw1KSksMiZlJiYoRGMoNCksYmYoIm5nSWYiLG4uY2FyZElkc1dpdGhNZXRhZGF0YS5sZW5ndGg+MSksRGMoMSksYmYoIm5nSWYiLG4uaXNFbXB0eU1hdGNoKSxEYygxKSxiZigiY2FyZElkc1dpdGhNZXRhZGF0YSIsbi5jYXJkSWRzV2l0aE1ldGFkYXRhKSgiY2FyZE9ic2VydmVyIixuLmNhcmRPYnNlcnZlcikpfSxkaXJlY3RpdmVzOltQdixheXQsT3l0XSxwaXBlczpbJHZdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgdHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfVtfbmdob3N0LSVDT01QJV0gICAuZ3JvdXAtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlYmViZWI7YWxpZ24taXRlbXM6Y2VudGVyO2JhY2tncm91bmQtY29sb3I6I2ZmZjtkaXNwbGF5OmZsZXg7ZmxleDpub25lO2hlaWdodDo0MnB4O21hcmdpbi1ib3R0b206LTFweDtwYWRkaW5nOjAgMTZweDtwb3NpdGlvbjpzdGlja3k7dG9wOjA7ei1pbmRleDoxO2JveC1zaGFkb3c6MHB4IDJweCA0cHggMHB4IHJnYmEoMCwwLDAsLjE1KX1ib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuZ3JvdXAtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojMzAzMDMwfWJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5ncm91cC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjNTU1fWJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5ncm91cC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAycHggNHB4IDBweCByZ2JhKDI1NSwyNTUsMjU1LC4xNSl9Lmdyb3VwLXRleHRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpiYXNlbGluZX0uZ3JvdXAtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0uZ3JvdXAtY2FyZC1jb3VudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NDAwO2NvbG9yOiM2MTYxNjE7bWFyZ2luLWxlZnQ6NnB4fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5ncm91cC1jYXJkLWNvdW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmdyb3VwLWNhcmQtY291bnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfW1ldHJpY3MtZW1wdHktdGFnLW1hdGNoW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtc3R5bGU6aXRhbGljO3BhZGRpbmc6MTZweDt0ZXh0LWFsaWduOmNlbnRlcjtkaXNwbGF5OmJsb2NrfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIG1ldHJpY3MtZW1wdHktdGFnLW1hdGNoW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgbWV0cmljcy1lbXB0eS10YWctbWF0Y2hbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfSddLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihreXQsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoibWV0cmljcy1maWx0ZXJlZC12aWV3LWNvbXBvbmVudCIsdGVtcGxhdGU6J1xuICAgIDxkaXYgY2xhc3M9Imdyb3VwLXRvb2xiYXIiPlxuICAgICAgPHNwYW4gY2xhc3M9Imdyb3VwLXRleHQiPlxuICAgICAgICA8c3BhbiBjbGFzcz0iZ3JvdXAtdGl0bGUiIGFyaWEtcm9sZT0iaGVhZGluZyIgYXJpYS1sZXZlbD0iMyJcbiAgICAgICAgICA+VGFncyBtYXRjaGluZyBmaWx0ZXI8L3NwYW5cbiAgICAgICAgPlxuICAgICAgICA8c3BhbiAqbmdJZj0iY2FyZElkc1dpdGhNZXRhZGF0YS5sZW5ndGggPiAxIiBjbGFzcz0iZ3JvdXAtY2FyZC1jb3VudCJcbiAgICAgICAgICA+e3sgY2FyZElkc1dpdGhNZXRhZGF0YS5sZW5ndGggfCBudW1iZXIgfX0gY2FyZHM8L3NwYW5cbiAgICAgICAgPlxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICAgIDxtZXRyaWNzLWVtcHR5LXRhZy1tYXRjaFxuICAgICAgKm5nSWY9ImlzRW1wdHlNYXRjaCJcbiAgICAgIGNsYXNzPSJ3YXJuIlxuICAgID48L21ldHJpY3MtZW1wdHktdGFnLW1hdGNoPlxuICAgIDxtZXRyaWNzLWNhcmQtZ3JpZFxuICAgICAgW2NhcmRJZHNXaXRoTWV0YWRhdGFdPSJjYXJkSWRzV2l0aE1ldGFkYXRhIlxuICAgICAgW2NhcmRPYnNlcnZlcl09ImNhcmRPYnNlcnZlciJcbiAgICA+PC9tZXRyaWNzLWNhcmQtZ3JpZD5cbiAgJyxzdHlsZVVybHM6WyJmaWx0ZXJlZF92aWV3X2NvbXBvbmVudC5jc3MiXSxjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNofV19XSxudWxsLHtpc0VtcHR5TWF0Y2g6W3t0eXBlOlJffV0sY2FyZE9ic2VydmVyOlt7dHlwZTpSX31dLGNhcmRJZHNXaXRoTWV0YWRhdGE6W3t0eXBlOlJffV19KTtjbGFzcyBTeXR7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMuY2FyZElkc1dpdGhNZXRhZGF0YSQ9dGhpcy5zdG9yZS5zZWxlY3QoZnl0KS5waXBlKF9lKHRoaXMuc3RvcmUuc2VsZWN0KEF6KSksVnQoKChbdCxlXSk9PmUuc2l6ZT90LmZpbHRlcigodD0+ZS5oYXModC5wbHVnaW4pKSk6dCkpLF9lKHRoaXMuc3RvcmUuc2VsZWN0KFB6KSksQ2UoMjAwKSxWdCgoKFt0LGVdKT0+e3RyeXtyZXR1cm57Y2FyZExpc3Q6dCxyZWdleDpuZXcgUmVnRXhwKGUsImkiKX19Y2F0Y2goZSl7cmV0dXJue2NhcmRMaXN0OnQscmVnZXg6bnVsbH19fSkpLHVlKCgoe3JlZ2V4OnR9KT0+bnVsbCE9PXQpKSxWdCgoKHtjYXJkTGlzdDp0LHJlZ2V4OmV9KT0+dC5maWx0ZXIoKCh7dGFnOnR9KT0+ZS50ZXN0KHQpKSkpKSx3ZSgoKHQsZSk9PnQubGVuZ3RoPT09ZS5sZW5ndGgmJnQuZXZlcnkoKCh0LG4pPT50LmNhcmRJZD09PWVbbl0uY2FyZElkKSkpKSxJZSgpLEJlKFtdKSksdGhpcy5pc0VtcHR5TWF0Y2gkPXRoaXMuY2FyZElkc1dpdGhNZXRhZGF0YSQucGlwZShfZSh0aGlzLnN0b3JlLnNlbGVjdChmeXQpKSxWdCgoKFt0LGVdKT0+Qm9vbGVhbihlLmxlbmd0aCkmJjA9PT10Lmxlbmd0aCkpKX19ZnVuY3Rpb24gRHl0KHQsZSl7aWYoMSZ0JiYoQ2YoMCwibWF0LW9wdGlvbiIsMiksUHUoMSksTWYoKSksMiZ0KXtjb25zdCB0PWUuJGltcGxpY2l0O2JmKCJ2YWx1ZSIsdC52YWx1ZSkoImRpc2FibGVkIix0LmRpc2FibGVkKSxEYygxKSxrdSgiICIsdC5kaXNwbGF5VGV4dCwiICIpfX1TeXQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFN5dCkoZ2YoaVMpKX0sU3l0Lsm1Y21wPXNvKHt0eXBlOlN5dCxzZWxlY3RvcnM6W1sibWV0cmljcy1maWx0ZXJlZC12aWV3Il1dLGlucHV0czp7Y2FyZE9ic2VydmVyOiJjYXJkT2JzZXJ2ZXIifSxkZWNsczozLHZhcnM6Nyxjb25zdHM6W1szLCJpc0VtcHR5TWF0Y2giLCJjYXJkSWRzV2l0aE1ldGFkYXRhIiwiY2FyZE9ic2VydmVyIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJih2ZigwLCJtZXRyaWNzLWZpbHRlcmVkLXZpZXctY29tcG9uZW50IiwwKSxfeSgxLCJhc3luYyIpLF95KDIsImFzeW5jIikpLDImZSYmYmYoImlzRW1wdHlNYXRjaCIsQ3koMSwzLG4uaXNFbXB0eU1hdGNoJCkpKCJjYXJkSWRzV2l0aE1ldGFkYXRhIixDeSgyLDUsbi5jYXJkSWRzV2l0aE1ldGFkYXRhJCkpKCJjYXJkT2JzZXJ2ZXIiLG4uY2FyZE9ic2VydmVyKX0sZGlyZWN0aXZlczpba3l0XSxwaXBlczpbVnZdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoU3l0LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Im1ldHJpY3MtZmlsdGVyZWQtdmlldyIsdGVtcGxhdGU6J1xuICAgIDxtZXRyaWNzLWZpbHRlcmVkLXZpZXctY29tcG9uZW50XG4gICAgICBbaXNFbXB0eU1hdGNoXT0iaXNFbXB0eU1hdGNoJCB8IGFzeW5jIlxuICAgICAgW2NhcmRJZHNXaXRoTWV0YWRhdGFdPSJjYXJkSWRzV2l0aE1ldGFkYXRhJCB8IGFzeW5jIlxuICAgICAgW2NhcmRPYnNlcnZlcl09ImNhcmRPYnNlcnZlciJcbiAgICA+PC9tZXRyaWNzLWZpbHRlcmVkLXZpZXctY29tcG9uZW50PlxuICAnLGNoYW5nZURldGVjdGlvbjpqbi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTppU31dfSkse2NhcmRPYnNlcnZlcjpbe3R5cGU6Ul99XX0pO2NsYXNzIFJ5dHtjb25zdHJ1Y3Rvcigpe3RoaXMudmFsdWU9IiIsdGhpcy5vcHRpb25zPVtdLHRoaXMuc2VsZWN0aW9uQ2hhbmdlPW5ldyBTeX19ZnVuY3Rpb24gRXl0KHQsZSl7aWYoMSZ0KXtjb25zdCB0PXdmKCk7Q2YoMCwiZGl2IiwyMiksQ2YoMSwiZGl2IiwyMyksUHUoMiwiQ2FyZCBXaWR0aCIpLE1mKCksQ2YoMywiZGl2IiwxMCksQ2YoNCwibWF0LXNsaWRlciIsMjQpLFJmKCJpbnB1dCIsKGZ1bmN0aW9uIGUobil7UGkodCk7cmV0dXJuIHpmKCkuY2FyZFdpZHRoU2xpZGVyQ2hhbmdlZCQuZW1pdChuLnZhbHVlKX0pKSxNZigpLENmKDUsImJ1dHRvbiIsMjUpLFJmKCJjbGljayIsKGZ1bmN0aW9uIGUoKXtQaSh0KTtyZXR1cm4gemYoKS5jYXJkV2lkdGhSZXNldC5lbWl0KCl9KSksdmYoNiwibWF0LWljb24iLDI2KSxNZigpLE1mKCksTWYoKX1pZigyJnQpe2NvbnN0IHQ9emYoKTtEYyg0KSxiZigibWF4Iix0Lk1BWF9DQVJEX1dJRFRIX1NMSURFUl9WQUxVRSkoIm1pbiIsdC5NSU5fQ0FSRF9XSURUSF9TTElERVJfVkFMVUUpKCJzdGVwIiw1MCkoInZhbHVlIix0LmNhcmRNaW5XaWR0aCkoInRodW1iTGFiZWwiLCExKX19ZnVuY3Rpb24gQXl0KHQsZSl7aWYoMSZ0KXtjb25zdCB0PXdmKCk7Q2YoMCwibWF0LXNsaWRlciIsMzIpLFJmKCJpbnB1dCIsKGZ1bmN0aW9uIGUobil7UGkodCk7cmV0dXJuIHpmKDIpLm9uU3RlcFN0YXJ0Q2hhbmdlZChuLnZhbHVlKX0pKSxNZigpfWlmKDImdCl7Y29uc3QgdD16ZigyKTtiZigiZGlzYWJsZWQiLCF0LnNlbGVjdFRpbWVFbmFibGVkKSgibWluIix0LnN0ZXBNaW5NYXgubWluKSgibWF4Iix0LnN0ZXBNaW5NYXgubWF4KSgic3RlcCIsMSkoInZhbHVlIixudWxsPT10LnNlbGVjdGVkVGltZT9udWxsOnQuc2VsZWN0ZWRUaW1lLnN0YXJ0LnN0ZXApKCJ0aHVtYkxhYmVsIiwhMCl9fWZ1bmN0aW9uIFR5dCh0LGUpe2lmKDEmdCl7Y29uc3QgdD13ZigpO0NmKDAsInRiLXJhbmdlLWlucHV0IiwzMyksUmYoInZhbHVlIiwoZnVuY3Rpb24gZShuKXtQaSh0KTtyZXR1cm4gemYoMikub25TdGVwUmFuZ2VDaGFuZ2VkKG4pfSkpLE1mKCl9aWYoMiZ0KXtjb25zdCB0PXpmKDIpO2JmKCJtaW4iLHQuc3RlcE1pbk1heC5taW4pKCJtYXgiLHQuc3RlcE1pbk1heC5tYXgpKCJsb3dlclZhbHVlIixudWxsPT10LnNlbGVjdGVkVGltZT9udWxsOnQuc2VsZWN0ZWRUaW1lLnN0YXJ0LnN0ZXApKCJ1cHBlclZhbHVlIixudWxsPT10LnNlbGVjdGVkVGltZXx8bnVsbD09dC5zZWxlY3RlZFRpbWUuZW5kP251bGw6dC5zZWxlY3RlZFRpbWUuZW5kLnN0ZXApLHltKCJkaXNhYmxlZCIsIXQuc2VsZWN0VGltZUVuYWJsZWQpfX1mdW5jdGlvbiBOeXQodCxlKXtpZigxJnQpe2NvbnN0IHQ9d2YoKTtDZigwLCJkaXYiLDI3KSxDZigxLCJsYWJlbCIpLFB1KDIsIkxpbmsgdmlzdWFsaXphdGlvbiBieSBzdGVwIiksTWYoKSxDZigzLCJkaXYiLDI4KSxDZig0LCJkaXYiKSxDZig1LCJtYXQtY2hlY2tib3giLDE2KSxSZigiY2hhbmdlIiwoZnVuY3Rpb24gZSgpe1BpKHQpO3JldHVybiB6ZigpLnNlbGVjdFRpbWVFbmFibGVUb2dnbGVkLmVtaXQoKX0pKSxQdSg2LCJFbmFibGVkIiksTWYoKSxNZigpLENmKDcsImRpdiIpLENmKDgsIm1hdC1jaGVja2JveCIsMTYpLFJmKCJjaGFuZ2UiLChmdW5jdGlvbiBlKCl7UGkodCk7cmV0dXJuIHpmKCkudXNlUmFuZ2VTZWxlY3RUaW1lVG9nZ2xlZC5lbWl0KCl9KSksUHUoOSwiVXNlIHJhbmdlIiksTWYoKSxNZigpLENmKDEwLCJkaXYiLDI5KSxIbSgxMSxBeXQsMSw2LCJtYXQtc2xpZGVyIiwzMCksSG0oMTIsVHl0LDEsNSwibmctdGVtcGxhdGUiLG51bGwsMzEscXkpLE1mKCksTWYoKSxNZigpfWlmKDImdCl7Y29uc3QgdD1GbSgxMyksZT16ZigpO0RjKDUpLGJmKCJjaGVja2VkIixlLnNlbGVjdFRpbWVFbmFibGVkKSxEYygzKSxiZigiY2hlY2tlZCIsZS51c2VSYW5nZVNlbGVjdFRpbWUpLERjKDMpLGJmKCJuZ0lmIiwhZS51c2VSYW5nZVNlbGVjdFRpbWUpKCJuZ0lmRWxzZSIsdCl9fWZ1bmN0aW9uIHp5dCh0LGUpe2lmKDEmdCl7Y29uc3QgdD13ZigpO0NmKDAsInNlY3Rpb24iLDM0KSxDZigxLCJoMyIsMSksUHUoMiwiSW1hZ2VzIiksTWYoKSxDZigzLCJkaXYiLDM1KSxDZig0LCJkaXYiLDM2KSxQdSg1LCJCcmlnaHRuZXNzIiksTWYoKSxDZig2LCJkaXYiLDEwKSxDZig3LCJtYXQtc2xpZGVyIiwzNyksUmYoImlucHV0IiwoZnVuY3Rpb24gZShuKXtQaSh0KTtyZXR1cm4gemYoKS5pbWFnZUJyaWdodG5lc3NTbGlkZXJDaGFuZ2VkJC5lbWl0KG4udmFsdWUpfSkpLE1mKCksQ2YoOCwiYnV0dG9uIiwzOCksUmYoImNsaWNrIiwoZnVuY3Rpb24gZSgpe1BpKHQpO3JldHVybiB6ZigpLmltYWdlQnJpZ2h0bmVzc1Jlc2V0LmVtaXQoKX0pKSx2Zig5LCJtYXQtaWNvbiIsMjYpLE1mKCksTWYoKSxNZigpLENmKDEwLCJkaXYiLDM5KSxDZigxMSwiZGl2Iiw0MCksUHUoMTIsIkNvbnRyYXN0IiksTWYoKSxDZigxMywiZGl2IiwxMCksQ2YoMTQsIm1hdC1zbGlkZXIiLDQxKSxSZigiaW5wdXQiLChmdW5jdGlvbiBlKG4pe1BpKHQpO3JldHVybiB6ZigpLmltYWdlQ29udHJhc3RTbGlkZXJDaGFuZ2VkJC5lbWl0KG4udmFsdWUpfSkpLE1mKCksQ2YoMTUsImJ1dHRvbiIsNDIpLFJmKCJjbGljayIsKGZ1bmN0aW9uIGUoKXtQaSh0KTtyZXR1cm4gemYoKS5pbWFnZUNvbnRyYXN0UmVzZXQuZW1pdCgpfSkpLHZmKDE2LCJtYXQtaWNvbiIsMjYpLE1mKCksTWYoKSxNZigpLENmKDE3LCJkaXYiLDQzKSxDZigxOCwibWF0LWNoZWNrYm94IiwxNiksUmYoImNoYW5nZSIsKGZ1bmN0aW9uIGUobil7UGkodCk7cmV0dXJuIHpmKCkuaW1hZ2VTaG93QWN0dWFsU2l6ZUNoYW5nZWQuZW1pdChuLmNoZWNrZWQpfSkpLFB1KDE5LCJTaG93IGFjdHVhbCBpbWFnZSBzaXplIiksTWYoKSxNZigpLE1mKCl9aWYoMiZ0KXtjb25zdCB0PXpmKCk7RGMoNyksYmYoIm1heCIsMmUzKSgibWluIiwwKSgic3RlcCIsMTApKCJ2YWx1ZSIsdC5pbWFnZUJyaWdodG5lc3NJbk1pbGxpKSgidGh1bWJMYWJlbCIsITApKCJkaXNwbGF5V2l0aCIsdC5mb3JtYXRNaWxsaVRvWmVyb3RoKSxEYyg3KSxiZigibWF4Iiw1ZTMpKCJtaW4iLDApKCJzdGVwIiwxMCkoInZhbHVlIix0LmltYWdlQ29udHJhc3RJbk1pbGxpKSgidGh1bWJMYWJlbCIsITApKCJkaXNwbGF5V2l0aCIsdC5mb3JtYXRNaWxsaVRvWmVyb3RoKSxEYyg0KSxiZigiY2hlY2tlZCIsdC5pbWFnZVNob3dBY3R1YWxTaXplKX19Unl0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxSeXQpfSxSeXQuybVjbXA9c28oe3R5cGU6Unl0LHNlbGVjdG9yczpbWyJ0Yi1kcm9wZG93biJdXSxpbnB1dHM6e3ZhbHVlOiJ2YWx1ZSIsb3B0aW9uczoib3B0aW9ucyJ9LG91dHB1dHM6e3NlbGVjdGlvbkNoYW5nZToic2VsZWN0aW9uQ2hhbmdlIn0sZGVjbHM6Mix2YXJzOjIsY29uc3RzOltbMywidmFsdWUiLCJzZWxlY3Rpb25DaGFuZ2UiXSxbMywidmFsdWUiLCJkaXNhYmxlZCIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWzMsInZhbHVlIiwiZGlzYWJsZWQiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKENmKDAsIm1hdC1zZWxlY3QiLDApLFJmKCJzZWxlY3Rpb25DaGFuZ2UiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLnNlbGVjdGlvbkNoYW5nZS5lbWl0KGUudmFsdWUpfSkpLEhtKDEsRHl0LDIsMywibWF0LW9wdGlvbiIsMSksTWYoKSksMiZlJiYoYmYoInZhbHVlIixuLnZhbHVlKSxEYygxKSxiZigibmdGb3JPZiIsbi5vcHRpb25zKSl9LGRpcmVjdGl2ZXM6W09ZLHh2LFBMXSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX1tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MXB4IHNvbGlkICM4ZTk4YTM7Ym9yZGVyLXJhZGl1czozcHg7Ym94LXNpemluZzpib3JkZXItYm94O3BhZGRpbmc6NnB4fW1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVdOmZvY3Vze291dGxpbmUtY29sb3I6LXdlYmtpdC1mb2N1cy1yaW5nLWNvbG9yO291dGxpbmUtc3R5bGU6YXV0b30gIC5tYXQtc2VsZWN0LXBhbmVse21heC13aWR0aDo3MHZ3fSAgbWF0LW9wdGlvbi5tYXQtb3B0aW9ue2hlaWdodDphdXRvfSAgLm1hdC1vcHRpb24tdGV4dHt3aGl0ZS1zcGFjZTpub3JtYWw7d29yZC1icmVhazpicmVhay1hbGx9J119KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFJ5dCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJ0Yi1kcm9wZG93biIsdGVtcGxhdGU6J1xuICAgIDxtYXQtc2VsZWN0XG4gICAgICBbdmFsdWVdPSJ2YWx1ZSJcbiAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPSJzZWxlY3Rpb25DaGFuZ2UuZW1pdCgkZXZlbnQudmFsdWUpIlxuICAgID5cbiAgICAgIDxtYXQtb3B0aW9uXG4gICAgICAgICpuZ0Zvcj0ibGV0IG9wdGlvbiBvZiBvcHRpb25zIlxuICAgICAgICBbdmFsdWVdPSJvcHRpb24udmFsdWUiXG4gICAgICAgIFtkaXNhYmxlZF09Im9wdGlvbi5kaXNhYmxlZCJcbiAgICAgID5cbiAgICAgICAge3sgb3B0aW9uLmRpc3BsYXlUZXh0IH19XG4gICAgICA8L21hdC1vcHRpb24+XG4gICAgPC9tYXQtc2VsZWN0PlxuICAnLHN0eWxlVXJsczpbImRyb3Bkb3duX2NvbXBvbmVudC5jc3MiXX1dfV0sbnVsbCx7dmFsdWU6W3t0eXBlOlJffV0sb3B0aW9uczpbe3R5cGU6Ul99XSxzZWxlY3Rpb25DaGFuZ2U6W3t0eXBlOkVffV19KTtjb25zdCBJeXQ9MjUwO2NsYXNzIEh5dHtjb25zdHJ1Y3Rvcih0KXt0aGlzLmxvY2FsZT10LHRoaXMuc2VsZWN0VGltZUVuYWJsZVRvZ2dsZWQ9bmV3IFN5LHRoaXMudXNlUmFuZ2VTZWxlY3RUaW1lVG9nZ2xlZD1uZXcgU3ksdGhpcy5zZWxlY3RUaW1lQ2hhbmdlZD1uZXcgU3ksdGhpcy5Ub29sdGlwU29ydERyb3Bkb3duT3B0aW9ucz1be3ZhbHVlOkpULkFMUEhBQkVUSUNBTCxkaXNwbGF5VGV4dDoiQWxwaGFiZXRpY2FsIn0se3ZhbHVlOkpULkFTQ0VORElORyxkaXNwbGF5VGV4dDoiQXNjZW5kaW5nIn0se3ZhbHVlOkpULkRFU0NFTkRJTkcsZGlzcGxheVRleHQ6IkRlc2NlbmRpbmcifSx7dmFsdWU6SlQuTkVBUkVTVCxkaXNwbGF5VGV4dDoiTmVhcmVzdCJ9XSx0aGlzLnRvb2x0aXBTb3J0Q2hhbmdlZD1uZXcgU3ksdGhpcy5pZ25vcmVPdXRsaWVyc0NoYW5nZWQ9bmV3IFN5LHRoaXMuWEF4aXNUeXBlPVFULHRoaXMuWEF4aXNUeXBlRHJvcGRvd25PcHRpb25zPVt7dmFsdWU6UVQuU1RFUCxkaXNwbGF5VGV4dDoiU3RlcCJ9LHt2YWx1ZTpRVC5SRUxBVElWRSxkaXNwbGF5VGV4dDoiUmVsYXRpdmUifSx7dmFsdWU6UVQuV0FMTF9USU1FLGRpc3BsYXlUZXh0OiJXYWxsIn1dLHRoaXMueEF4aXNUeXBlQ2hhbmdlZD1uZXcgU3ksdGhpcy5NQVhfQ0FSRF9XSURUSF9TTElERVJfVkFMVUU9NzM1LHRoaXMuTUlOX0NBUkRfV0lEVEhfU0xJREVSX1ZBTFVFPTMzNSx0aGlzLmNhcmRXaWR0aFNsaWRlckNoYW5nZWQkPW5ldyBTeSx0aGlzLmNhcmRXaWR0aENoYW5nZWQ9dGhpcy5jYXJkV2lkdGhTbGlkZXJDaGFuZ2VkJC5waXBlKGdlKEl5dCkpLHRoaXMuY2FyZFdpZHRoUmVzZXQ9bmV3IFN5LHRoaXMuSGlzdG9ncmFtTW9kZURyb3Bkb3duT3B0aW9ucz1be3ZhbHVlOmpFLk9GRlNFVCxkaXNwbGF5VGV4dDoiT2Zmc2V0In0se3ZhbHVlOmpFLk9WRVJMQVksZGlzcGxheVRleHQ6Ik92ZXJsYXkifV0sdGhpcy5oaXN0b2dyYW1Nb2RlQ2hhbmdlZD1uZXcgU3ksdGhpcy5NQVhfU01PT1RISU5HX1ZBTFVFPS45OTksdGhpcy5NQVhfU01PT1RISU5HX1NMSURFUl9WQUxVRT0uOTksdGhpcy5zY2FsYXJTbW9vdGhpbmdDb250cm9sQ2hhbmdlZCQ9bmV3IFN5LHRoaXMuc2NhbGFyU21vb3RoaW5nQ2hhbmdlZD10aGlzLnNjYWxhclNtb290aGluZ0NvbnRyb2xDaGFuZ2VkJC5waXBlKGdlKEl5dCkpLHRoaXMuc2NhbGFyUGFydGl0aW9uWFRvZ2dsZWQ9bmV3IFN5LHRoaXMuaW1hZ2VCcmlnaHRuZXNzU2xpZGVyQ2hhbmdlZCQ9bmV3IFN5LHRoaXMuaW1hZ2VCcmlnaHRuZXNzSW5NaWxsaUNoYW5nZWQ9dGhpcy5pbWFnZUJyaWdodG5lc3NTbGlkZXJDaGFuZ2VkJC5waXBlKGdlKEl5dCkpLHRoaXMuaW1hZ2VCcmlnaHRuZXNzUmVzZXQ9bmV3IFN5LHRoaXMuaW1hZ2VDb250cmFzdFNsaWRlckNoYW5nZWQkPW5ldyBTeSx0aGlzLmltYWdlQ29udHJhc3RJbk1pbGxpQ2hhbmdlZD10aGlzLmltYWdlQ29udHJhc3RTbGlkZXJDaGFuZ2VkJC5waXBlKGdlKEl5dCkpLHRoaXMuaW1hZ2VDb250cmFzdFJlc2V0PW5ldyBTeSx0aGlzLmltYWdlU2hvd0FjdHVhbFNpemVDaGFuZ2VkPW5ldyBTeX1vblNjYWxhclNtb290aGluZ0lucHV0KHQpe2NvbnN0IGU9dC50YXJnZXQ7aWYoIWUudmFsdWUpcmV0dXJuO2NvbnN0IG49TWF0aC5taW4oTWF0aC5tYXgoMCxwYXJzZUZsb2F0KGUudmFsdWUpKSwuOTk5KTtuIT09cGFyc2VGbG9hdChlLnZhbHVlKSYmKGUudmFsdWU9U3RyaW5nKG4pKSx0aGlzLnNjYWxhclNtb290aGluZ0NvbnRyb2xDaGFuZ2VkJC5lbWl0KG4pfWZvcm1hdE1pbGxpVG9aZXJvdGgodCl7cmV0dXJuIGZ2KHQvMWUzLHRoaXMubG9jYWxlfHwiZW4tVVMiLCIxLjAtMiIpfW9uU3RlcFN0YXJ0Q2hhbmdlZCh0KXt0aGlzLnNlbGVjdFRpbWVDaGFuZ2VkLmVtaXQoe3N0YXJ0OntzdGVwOnR9LGVuZDpudWxsfSl9b25TdGVwUmFuZ2VDaGFuZ2VkKHtsb3dlclZhbHVlOnQsdXBwZXJWYWx1ZTplfSl7dGhpcy5zZWxlY3RUaW1lQ2hhbmdlZC5lbWl0KHtzdGFydDp7c3RlcDp0fSxlbmQ6e3N0ZXA6ZX19KX19SHl0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxIeXQpKGdmKFFfKSl9LEh5dC7JtWNtcD1zbyh7dHlwZTpIeXQsc2VsZWN0b3JzOltbIm1ldHJpY3MtZGFzaGJvYXJkLXNldHRpbmdzLWNvbXBvbmVudCJdXSxpbnB1dHM6e2lzQ2FyZFdpZHRoU2V0dGluZ0VuYWJsZWQ6ImlzQ2FyZFdpZHRoU2V0dGluZ0VuYWJsZWQiLGlzTGlua2VkVGltZUZlYXR1cmVFbmFibGVkOiJpc0xpbmtlZFRpbWVGZWF0dXJlRW5hYmxlZCIsc2VsZWN0VGltZUVuYWJsZWQ6InNlbGVjdFRpbWVFbmFibGVkIix1c2VSYW5nZVNlbGVjdFRpbWU6InVzZVJhbmdlU2VsZWN0VGltZSIsc2VsZWN0ZWRUaW1lOiJzZWxlY3RlZFRpbWUiLHN0ZXBNaW5NYXg6InN0ZXBNaW5NYXgiLGlzSW1hZ2VTdXBwb3J0RW5hYmxlZDoiaXNJbWFnZVN1cHBvcnRFbmFibGVkIix0b29sdGlwU29ydDoidG9vbHRpcFNvcnQiLGlnbm9yZU91dGxpZXJzOiJpZ25vcmVPdXRsaWVycyIseEF4aXNUeXBlOiJ4QXhpc1R5cGUiLGNhcmRNaW5XaWR0aDoiY2FyZE1pbldpZHRoIixoaXN0b2dyYW1Nb2RlOiJoaXN0b2dyYW1Nb2RlIixzY2FsYXJTbW9vdGhpbmc6InNjYWxhclNtb290aGluZyIsc2NhbGFyUGFydGl0aW9uWDoic2NhbGFyUGFydGl0aW9uWCIsaW1hZ2VCcmlnaHRuZXNzSW5NaWxsaToiaW1hZ2VCcmlnaHRuZXNzSW5NaWxsaSIsaW1hZ2VDb250cmFzdEluTWlsbGk6ImltYWdlQ29udHJhc3RJbk1pbGxpIixpbWFnZVNob3dBY3R1YWxTaXplOiJpbWFnZVNob3dBY3R1YWxTaXplIn0sb3V0cHV0czp7c2VsZWN0VGltZUVuYWJsZVRvZ2dsZWQ6InNlbGVjdFRpbWVFbmFibGVUb2dnbGVkIix1c2VSYW5nZVNlbGVjdFRpbWVUb2dnbGVkOiJ1c2VSYW5nZVNlbGVjdFRpbWVUb2dnbGVkIixzZWxlY3RUaW1lQ2hhbmdlZDoic2VsZWN0VGltZUNoYW5nZWQiLHRvb2x0aXBTb3J0Q2hhbmdlZDoidG9vbHRpcFNvcnRDaGFuZ2VkIixpZ25vcmVPdXRsaWVyc0NoYW5nZWQ6Imlnbm9yZU91dGxpZXJzQ2hhbmdlZCIseEF4aXNUeXBlQ2hhbmdlZDoieEF4aXNUeXBlQ2hhbmdlZCIsY2FyZFdpZHRoQ2hhbmdlZDoiY2FyZFdpZHRoQ2hhbmdlZCIsY2FyZFdpZHRoUmVzZXQ6ImNhcmRXaWR0aFJlc2V0IixoaXN0b2dyYW1Nb2RlQ2hhbmdlZDoiaGlzdG9ncmFtTW9kZUNoYW5nZWQiLHNjYWxhclNtb290aGluZ0NoYW5nZWQ6InNjYWxhclNtb290aGluZ0NoYW5nZWQiLHNjYWxhclBhcnRpdGlvblhUb2dnbGVkOiJzY2FsYXJQYXJ0aXRpb25YVG9nZ2xlZCIsaW1hZ2VCcmlnaHRuZXNzSW5NaWxsaUNoYW5nZWQ6ImltYWdlQnJpZ2h0bmVzc0luTWlsbGlDaGFuZ2VkIixpbWFnZUJyaWdodG5lc3NSZXNldDoiaW1hZ2VCcmlnaHRuZXNzUmVzZXQiLGltYWdlQ29udHJhc3RJbk1pbGxpQ2hhbmdlZDoiaW1hZ2VDb250cmFzdEluTWlsbGlDaGFuZ2VkIixpbWFnZUNvbnRyYXN0UmVzZXQ6ImltYWdlQ29udHJhc3RSZXNldCIsaW1hZ2VTaG93QWN0dWFsU2l6ZUNoYW5nZWQ6ImltYWdlU2hvd0FjdHVhbFNpemVDaGFuZ2VkIn0sZGVjbHM6MzcsdmFyczoxOCxjb25zdHM6ZnVuY3Rpb24oKXtsZXQgdCxlLG47aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBuZ0kxOG5DbG9zdXJlTW9kZSYmbmdJMThuQ2xvc3VyZU1vZGUpe3Q9Z29vZy5nZXRNc2coIlJlc2V0IGNhcmQgd2lkdGgiKX1lbHNlIHQ9JGxvY2FsaXplYDpBIGJ1dHRvbiB0byByZXNldCB0aGUgY2FyZCB3aWR0aCBzZXR0aW5n4pCfY2NkYzk2YjAwM2ZiYmE5MGRiN2E2OTU5YjViMjZlM2NjNThmN2Q4MOKQnzUyMjMxMTEwNDc5NjgxMDI0NjY6UmVzZXQgY2FyZCB3aWR0aGA7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBuZ0kxOG5DbG9zdXJlTW9kZSYmbmdJMThuQ2xvc3VyZU1vZGUpe2U9Z29vZy5nZXRNc2coIlJlc2V0IGJyaWdodG5lc3MiKX1lbHNlIGU9JGxvY2FsaXplYDpBIGJ1dHRvbiB0byByZXNldCB0aGUgaW1hZ2UgYnJpZ2h0bmVzcyBzZXR0aW5n4pCfYzQ4MmIzYTQ3ZWEwOTc1ZmE4YmUwMWFmYjNmYmVjOWI3NjYyOGJkN+KQnzExODkxNjE4NTcyNDAzNzgzOTU6UmVzZXQgYnJpZ2h0bmVzc2A7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBuZ0kxOG5DbG9zdXJlTW9kZSYmbmdJMThuQ2xvc3VyZU1vZGUpe249Z29vZy5nZXRNc2coIlJlc2V0IGNvbnRyYXN0Iil9ZWxzZSBuPSRsb2NhbGl6ZWA6QSBidXR0b24gdG8gcmVzZXQgdGhlIGltYWdlIGNvbnRyYXN0IHNldHRpbmfikJ9lZDcxMmE4YjkyNzA0MWJlMTUyNTJiMjllYjUyMWViYjEzNzRiYWQ44pCfNTM3MDcwMzM0MjkyMzYxMTk1NTpSZXNldCBjb250cmFzdGA7cmV0dXJuW1sxLCJnZW5lcmFsIl0sWzEsInNlY3Rpb24tdGl0bGUiXSxbMSwiY29udHJvbC1yb3ciLCJ4LWF4aXMtdHlwZSJdLFsiaWQiLCJ4LWF4aXMtdHlwZS1sYWJlbCIsMSwiY29udHJvbC1uYW1lIl0sWzMsInZhbHVlIiwib3B0aW9ucyIsInNlbGVjdGlvbkNoYW5nZSJdLFsiY2xhc3MiLCJjb250cm9sLXJvdyBjYXJkLXdpZHRoIiw0LCJuZ0lmIl0sWyJjbGFzcyIsImNvbnRyb2wtcm93IGxpbmtlZC10aW1lIiw0LCJuZ0lmIl0sWzEsInNjYWxhcnMiXSxbMSwiY29udHJvbC1yb3ciLCJzY2FsYXJzLXNtb290aGluZyJdLFsiaWQiLCJzY2FsYXJzLXNtb290aGluZy1sYWJlbCIsMSwiY29udHJvbC1uYW1lIl0sWzEsInNsaWRlci1yb3ciXSxbImFyaWEtbGFiZWxsZWRieSIsInNjYWxhcnMtc21vb3RoaW5nLWxhYmVsIiwiY29sb3IiLCJwcmltYXJ5IiwzLCJtYXgiLCJtaW4iLCJzdGVwIiwidmFsdWUiLCJ0aHVtYkxhYmVsIiwiaW5wdXQiXSxbImFyaWEtbGFiZWxsZWRieSIsInNjYWxhcnMtc21vb3RoaW5nLWxhYmVsIiwidHlwZSIsIm51bWJlciIsIm1pbiIsIjAiLCJzdGVwIiwiMC4wMDEiLDEsInNsaWRlci1pbnB1dCIsMywibWF4IiwidmFsdWUiLCJpbnB1dCJdLFsxLCJjb250cm9sLXJvdyIsInRvb2x0aXAtc29ydCJdLFsxLCJjb250cm9sLW5hbWUiXSxbMSwiY29udHJvbC1yb3ciLCJzY2FsYXJzLWlnbm9yZS1vdXRsaWVycyJdLFszLCJjaGVja2VkIiwiY2hhbmdlIl0sWzEsImNvbnRyb2wtcm93Iiwic2NhbGFycy1wYXJ0aXRpb24teCJdLFsic3ZnSWNvbiIsImhlbHBfb3V0bGluZV8yNHB4IiwidGl0bGUiLCJOb24tbW9ub3RvbmljIHN0ZXBzIGNhbiBvY2N1ciB3aGVuIHJldXNpbmcgYSBsb2dkaXIgd2l0aCBtdWx0aXBsZSBzdW1tYXJ5IHdyaXRlcnMgYW5kIG92ZXJsYXBwaW5nIHN0ZXBzLiBMaW5lIGNoYXJ0cywgd2l0aG91dCB0aGlzIG9wdGlvbiBlbmFibGVkLCBjYW4gYXBwZWFyIHppZyB6YWdnZWQuIFRoaXMgaXMgY29tbW9uIHdoZW4gcmVzdGFydGluZyBmcm9tIGEgY2hlY2twb2ludC5cblxuV2hlbiBlbmFibGVkLCBhIG5vbi1tb25vdG9uaWMgdGltZSBzZXJpZXMgY29tcG9zZWQgb2YgTiBtb25vdG9uaWMgcGllY2VzIHdpbGwgYmUgc2hvd24gYXMgTiBtb25vdG9uaWMgbGluZXMuIiwxLCJpbmZvIl0sWzEsIkhpc3RvZ3JhbXMiXSxbMSwiY29udHJvbC1yb3ciLCJoaXN0b2dyYW0tbW9kZSJdLFsiY2xhc3MiLCJpbWFnZSIsNCwibmdJZiJdLFsxLCJjb250cm9sLXJvdyIsImNhcmQtd2lkdGgiXSxbImlkIiwiY2FyZC13aWR0aC1sYWJlbCIsMSwiY29udHJvbC1uYW1lIl0sWyJhcmlhLWxhYmVsbGVkYnkiLCJjYXJkLXdpZHRoLWxhYmVsIiwiY29sb3IiLCJwcmltYXJ5IiwzLCJtYXgiLCJtaW4iLCJzdGVwIiwidmFsdWUiLCJ0aHVtYkxhYmVsIiwiaW5wdXQiXSxbIm1hdC1pY29uLWJ1dHRvbiIsIiIsImFyaWEtbGFiZWwiLHQsInRpdGxlIiwiUmVzZXQgY2FyZCB3aWR0aCIsMSwicmVzZXQtYnV0dG9uIiwzLCJjbGljayJdLFsic3ZnSWNvbiIsInNldHRpbmdzX2JhY2t1cF9yZXN0b3JlXzI0cHgiXSxbMSwiY29udHJvbC1yb3ciLCJsaW5rZWQtdGltZSJdLFsxLCJjb250cm9scyJdLFsxLCJzdGVwLXNlbGVjdG9yIl0sWyJjb2xvciIsInByaW1hcnkiLDMsImRpc2FibGVkIiwibWluIiwibWF4Iiwic3RlcCIsInZhbHVlIiwidGh1bWJMYWJlbCIsImlucHV0Iiw0LCJuZ0lmIiwibmdJZkVsc2UiXSxbInJhbmdlIiwiIl0sWyJjb2xvciIsInByaW1hcnkiLDMsImRpc2FibGVkIiwibWluIiwibWF4Iiwic3RlcCIsInZhbHVlIiwidGh1bWJMYWJlbCIsImlucHV0Il0sWzMsIm1pbiIsIm1heCIsImxvd2VyVmFsdWUiLCJ1cHBlclZhbHVlIiwidmFsdWUiXSxbMSwiaW1hZ2UiXSxbMSwiY29udHJvbC1yb3ciLCJpbWFnZS1icmlnaHRuZXNzIl0sWyJpZCIsImltYWdlLWJyaWdodG5lc3MtbGFiZWwiLDEsImNvbnRyb2wtbmFtZSJdLFsiYXJpYS1sYWJlbGxlZGJ5IiwiaW1hZ2UtYnJpZ2h0bmVzcy1sYWJlbCIsImNvbG9yIiwicHJpbWFyeSIsMywibWF4IiwibWluIiwic3RlcCIsInZhbHVlIiwidGh1bWJMYWJlbCIsImRpc3BsYXlXaXRoIiwiaW5wdXQiXSxbIm1hdC1pY29uLWJ1dHRvbiIsIiIsImFyaWEtbGFiZWwiLGUsInRpdGxlIiwiUmVzZXQgYnJpZ2h0bmVzcyIsMSwicmVzZXQtYnV0dG9uIiwzLCJjbGljayJdLFsxLCJjb250cm9sLXJvdyIsImltYWdlLWNvbnRyYXN0Il0sWyJpZCIsImltYWdlLWNvbnN0cmFzdC1sYWJlbCIsMSwiY29udHJvbC1uYW1lIl0sWyJhcmlhLWxhYmVsbGVkYnkiLCJpbWFnZS1jb25zdHJhc3QtbGFiZWwiLCJjb2xvciIsInByaW1hcnkiLDMsIm1heCIsIm1pbiIsInN0ZXAiLCJ2YWx1ZSIsInRodW1iTGFiZWwiLCJkaXNwbGF5V2l0aCIsImlucHV0Il0sWyJtYXQtaWNvbi1idXR0b24iLCIiLCJhcmlhLWxhYmVsIixuLCJ0aXRsZSIsIlJlc2V0IGNvbnRyYXN0IiwxLCJyZXNldC1idXR0b24iLDMsImNsaWNrIl0sWzEsImNvbnRyb2wtcm93IiwiaW1hZ2Utc2hvdy1hY3R1YWwtc2l6ZSJdXX0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKENmKDAsInNlY3Rpb24iLDApLENmKDEsImgzIiwxKSxQdSgyLCJHZW5lcmFsIiksTWYoKSxDZigzLCJkaXYiLDIpLENmKDQsImRpdiIsMyksUHUoNSwiSG9yaXpvbnRhbCBBeGlzIiksTWYoKSxDZig2LCJ0Yi1kcm9wZG93biIsNCksUmYoInNlbGVjdGlvbkNoYW5nZSIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ueEF4aXNUeXBlQ2hhbmdlZC5lbWl0KGUpfSkpLE1mKCksTWYoKSxIbSg3LEV5dCw3LDUsImRpdiIsNSksSG0oOCxOeXQsMTQsNCwiZGl2Iiw2KSxNZigpLENmKDksInNlY3Rpb24iLDcpLENmKDEwLCJoMyIsMSksUHUoMTEsIlNjYWxhcnMiKSxNZigpLENmKDEyLCJkaXYiLDgpLENmKDEzLCJkaXYiLDkpLFB1KDE0LCJTbW9vdGhpbmciKSxNZigpLENmKDE1LCJkaXYiLDEwKSxDZigxNiwibWF0LXNsaWRlciIsMTEpLFJmKCJpbnB1dCIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uc2NhbGFyU21vb3RoaW5nQ29udHJvbENoYW5nZWQkLmVtaXQoZS52YWx1ZSl9KSksTWYoKSxDZigxNywiaW5wdXQiLDEyKSxSZigiaW5wdXQiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uU2NhbGFyU21vb3RoaW5nSW5wdXQoZSl9KSksTWYoKSxNZigpLE1mKCksQ2YoMTgsImRpdiIsMTMpLENmKDE5LCJkaXYiLDE0KSxQdSgyMCwiVG9vbHRpcCBzb3J0aW5nIG1ldGhvZCIpLE1mKCksQ2YoMjEsInRiLWRyb3Bkb3duIiw0KSxSZigic2VsZWN0aW9uQ2hhbmdlIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi50b29sdGlwU29ydENoYW5nZWQuZW1pdChlKX0pKSxNZigpLE1mKCksQ2YoMjIsImRpdiIsMTUpLENmKDIzLCJtYXQtY2hlY2tib3giLDE2KSxSZigiY2hhbmdlIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5pZ25vcmVPdXRsaWVyc0NoYW5nZWQuZW1pdChlLmNoZWNrZWQpfSkpLFB1KDI0LCJJZ25vcmUgb3V0bGllcnMgaW4gY2hhcnQgc2NhbGluZyIpLE1mKCksTWYoKSxDZigyNSwiZGl2IiwxNyksQ2YoMjYsIm1hdC1jaGVja2JveCIsMTYpLFJmKCJjaGFuZ2UiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4uc2NhbGFyUGFydGl0aW9uWFRvZ2dsZWQuZW1pdCgpfSkpLFB1KDI3LCJQYXJ0aXRpb24gbm9uLW1vbm90b25pYyBYIGF4aXMiKSxNZigpLHZmKDI4LCJtYXQtaWNvbiIsMTgpLE1mKCksTWYoKSxDZigyOSwic2VjdGlvbiIsMTkpLENmKDMwLCJoMyIsMSksUHUoMzEsIkhpc3RvZ3JhbXMiKSxNZigpLENmKDMyLCJkaXYiLDIwKSxDZigzMywiZGl2IiwxNCksUHUoMzQsIk1vZGUiKSxNZigpLENmKDM1LCJ0Yi1kcm9wZG93biIsNCksUmYoInNlbGVjdGlvbkNoYW5nZSIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uaGlzdG9ncmFtTW9kZUNoYW5nZWQuZW1pdChlKX0pKSxNZigpLE1mKCksTWYoKSxIbSgzNix6eXQsMjAsMTMsInNlY3Rpb24iLDIxKSksMiZlJiYoRGMoNiksYmYoInZhbHVlIixuLnhBeGlzVHlwZSkoIm9wdGlvbnMiLG4uWEF4aXNUeXBlRHJvcGRvd25PcHRpb25zKSxEYygxKSxiZigibmdJZiIsbi5pc0NhcmRXaWR0aFNldHRpbmdFbmFibGVkKSxEYygxKSxiZigibmdJZiIsbi5pc0xpbmtlZFRpbWVGZWF0dXJlRW5hYmxlZCYmbi54QXhpc1R5cGU9PW4uWEF4aXNUeXBlLlNURVApLERjKDgpLGJmKCJtYXgiLG4uTUFYX1NNT09USElOR19TTElERVJfVkFMVUUpKCJtaW4iLDApKCJzdGVwIiwuMDEpKCJ2YWx1ZSIsbi5zY2FsYXJTbW9vdGhpbmcpKCJ0aHVtYkxhYmVsIiwhMCksRGMoMSksYmYoIm1heCIsbi5NQVhfU01PT1RISU5HX1ZBTFVFKSgidmFsdWUiLG4uc2NhbGFyU21vb3RoaW5nKSxEYyg0KSxiZigidmFsdWUiLG4udG9vbHRpcFNvcnQpKCJvcHRpb25zIixuLlRvb2x0aXBTb3J0RHJvcGRvd25PcHRpb25zKSxEYygyKSxiZigiY2hlY2tlZCIsbi5pZ25vcmVPdXRsaWVycyksRGMoMyksYmYoImNoZWNrZWQiLG4uc2NhbGFyUGFydGl0aW9uWCksRGMoOSksYmYoInZhbHVlIixuLmhpc3RvZ3JhbU1vZGUpKCJvcHRpb25zIixuLkhpc3RvZ3JhbU1vZGVEcm9wZG93bk9wdGlvbnMpLERjKDEpLGJmKCJuZ0lmIixuLmlzSW1hZ2VTdXBwb3J0RW5hYmxlZCkpfSxkaXJlY3RpdmVzOltSeXQsUHYsd0osYlosTXEsTkwsRTJdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgdHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfVtfbmdob3N0LSVDT01QJV17Y29sb3I6IzYxNjE2MTtmb250LXNpemU6MTJweH1ib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9c2VjdGlvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2ViZWJlYjtwYWRkaW5nOjE2cHh9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgc2VjdGlvbltfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIHNlY3Rpb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1ib3R0b206MXB4IHNvbGlkICM1NTV9LnNlY3Rpb24tdGl0bGVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjE7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO2ZvbnQtd2VpZ2h0OjUwMDtmb250LXNpemU6MTNweDtsaW5lLWhlaWdodDpub3JtYWw7bWFyZ2luOjAgMCAxMnB4IDB9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLnNlY3Rpb24tdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuc2VjdGlvbi10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn1zZWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jb250cm9sLXJvd1tfbmdjb250ZW50LSVDT01QJV06bm90KDpsYXN0LWNoaWxkKXttYXJnaW4tYm90dG9tOjEycHh9LmNvbnRyb2wtbmFtZVtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLWJvdHRvbTo4cHh9LnNsaWRlci1yb3dbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7aGVpZ2h0OjI4cHh9LnNsaWRlci1yb3dbX25nY29udGVudC0lQ09NUCVdICAgLnJlc2V0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLWxlZnQ6NnB4fS5zbGlkZXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5zbGlkZXItaW5wdXRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6aW5oZXJpdDtib3JkZXI6MXB4IHNvbGlkICM4ZTk4YTM7Ym9yZGVyLXJhZGl1czoycHg7Ym94LXNpemluZzpib3JkZXItYm94O2NvbG9yOmluaGVyaXQ7aGVpZ2h0OjEwMCU7bWFyZ2luLWxlZnQ6MTJweDtwYWRkaW5nOjAgNHB4fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5zbGlkZXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5zbGlkZXItaW5wdXRbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuc2xpZGVyLXJvd1tfbmdjb250ZW50LSVDT01QJV0gICAuc2xpZGVyLWlucHV0W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6IzQyNTA2Nn0uc2NhbGFycy1zbW9vdGhpbmdbX25nY29udGVudC0lQ09NUCVdICAgLnNsaWRlci1pbnB1dFtfbmdjb250ZW50LSVDT01QJV17ZmxleDpub25lO3dpZHRoOjVlbX0uc2NhbGFycy1wYXJ0aXRpb24teFtfbmdjb250ZW50LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleH0uc2NhbGFycy1wYXJ0aXRpb24teFtfbmdjb250ZW50LSVDT01QJV0gICAuaW5mb1tfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjE1cHg7bWFyZ2luLWxlZnQ6NXB4O3dpZHRoOjE1cHh9bWF0LXNsaWRlcltfbmdjb250ZW50LSVDT01QJV17ZmxleDoxO21hcmdpbi1sZWZ0Oi04cHg7bWFyZ2luLXJpZ2h0Oi04cHh9dGItZHJvcGRvd25bX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6YmxvY2t9LmxpbmtlZC10aW1lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5zdGVwLXNlbGVjdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjAgMTBweH0ubGlua2VkLXRpbWVbX25nY29udGVudC0lQ09NUCVdICAgbWF0LXNsaWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5saW5rZWQtdGltZVtfbmdjb250ZW50LSVDT01QJV0gICB0Yi1yYW5nZS1pbnB1dFtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MTAwJX0ubGlua2VkLXRpbWVbX25nY29udGVudC0lQ09NUCVdICAgLmNvbnRyb2xzW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjVweH0nXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoSHl0LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Im1ldHJpY3MtZGFzaGJvYXJkLXNldHRpbmdzLWNvbXBvbmVudCIsdGVtcGxhdGVVcmw6InNldHRpbmdzX3ZpZXdfY29tcG9uZW50Lm5nLmh0bWwiLGNoYW5nZURldGVjdGlvbjpqbi5PblB1c2gsc3R5bGVVcmxzOlsic2V0dGluZ3Nfdmlld19jb21wb25lbnQuY3NzIl19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbUV9dfV19XX0pLHtpc0NhcmRXaWR0aFNldHRpbmdFbmFibGVkOlt7dHlwZTpSX31dLGlzTGlua2VkVGltZUZlYXR1cmVFbmFibGVkOlt7dHlwZTpSX31dLHNlbGVjdFRpbWVFbmFibGVkOlt7dHlwZTpSX31dLHVzZVJhbmdlU2VsZWN0VGltZTpbe3R5cGU6Ul99XSxzZWxlY3RlZFRpbWU6W3t0eXBlOlJffV0sc3RlcE1pbk1heDpbe3R5cGU6Ul99XSxzZWxlY3RUaW1lRW5hYmxlVG9nZ2xlZDpbe3R5cGU6RV99XSx1c2VSYW5nZVNlbGVjdFRpbWVUb2dnbGVkOlt7dHlwZTpFX31dLHNlbGVjdFRpbWVDaGFuZ2VkOlt7dHlwZTpFX31dLGlzSW1hZ2VTdXBwb3J0RW5hYmxlZDpbe3R5cGU6Ul99XSx0b29sdGlwU29ydDpbe3R5cGU6Ul99XSx0b29sdGlwU29ydENoYW5nZWQ6W3t0eXBlOkVffV0saWdub3JlT3V0bGllcnM6W3t0eXBlOlJffV0saWdub3JlT3V0bGllcnNDaGFuZ2VkOlt7dHlwZTpFX31dLHhBeGlzVHlwZTpbe3R5cGU6Ul99XSx4QXhpc1R5cGVDaGFuZ2VkOlt7dHlwZTpFX31dLGNhcmRNaW5XaWR0aDpbe3R5cGU6Ul99XSxjYXJkV2lkdGhDaGFuZ2VkOlt7dHlwZTpFX31dLGNhcmRXaWR0aFJlc2V0Olt7dHlwZTpFX31dLGhpc3RvZ3JhbU1vZGU6W3t0eXBlOlJffV0saGlzdG9ncmFtTW9kZUNoYW5nZWQ6W3t0eXBlOkVffV0sc2NhbGFyU21vb3RoaW5nOlt7dHlwZTpSX31dLHNjYWxhclNtb290aGluZ0NoYW5nZWQ6W3t0eXBlOkVffV0sc2NhbGFyUGFydGl0aW9uWDpbe3R5cGU6Ul99XSxzY2FsYXJQYXJ0aXRpb25YVG9nZ2xlZDpbe3R5cGU6RV99XSxpbWFnZUJyaWdodG5lc3NJbk1pbGxpOlt7dHlwZTpSX31dLGltYWdlQnJpZ2h0bmVzc0luTWlsbGlDaGFuZ2VkOlt7dHlwZTpFX31dLGltYWdlQnJpZ2h0bmVzc1Jlc2V0Olt7dHlwZTpFX31dLGltYWdlQ29udHJhc3RJbk1pbGxpOlt7dHlwZTpSX31dLGltYWdlQ29udHJhc3RJbk1pbGxpQ2hhbmdlZDpbe3R5cGU6RV99XSxpbWFnZUNvbnRyYXN0UmVzZXQ6W3t0eXBlOkVffV0saW1hZ2VTaG93QWN0dWFsU2l6ZTpbe3R5cGU6Ul99XSxpbWFnZVNob3dBY3R1YWxTaXplQ2hhbmdlZDpbe3R5cGU6RV99XX0pO2NsYXNzIEZ5dHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5pc0NhcmRXaWR0aFNldHRpbmdFbmFibGVkJD10aGlzLnN0b3JlLnNlbGVjdChxRCksdGhpcy5pc0xpbmtlZFRpbWVGZWF0dXJlRW5hYmxlZCQ9dGhpcy5zdG9yZS5zZWxlY3QoR0QpLHRoaXMuc2VsZWN0VGltZUVuYWJsZWQkPXRoaXMuc3RvcmUuc2VsZWN0KGt6KSx0aGlzLnVzZVJhbmdlU2VsZWN0VGltZSQ9dGhpcy5zdG9yZS5zZWxlY3QoU3opLHRoaXMuc2VsZWN0ZWRUaW1lJD10aGlzLnN0b3JlLnNlbGVjdChSeiksdGhpcy5zdGVwTWluTWF4JD10aGlzLnN0b3JlLnNlbGVjdChEeiksdGhpcy5pc0ltYWdlU3VwcG9ydEVuYWJsZWQkPXRoaXMuc3RvcmUuc2VsZWN0KE5EKS5waXBlKHVlKEJvb2xlYW4pLHZlKDEpLHFlKHRoaXMuc3RvcmUuc2VsZWN0KFdEKSksVnQoKChbLHRdKT0+dCkpKSx0aGlzLnRvb2x0aXBTb3J0JD10aGlzLnN0b3JlLnNlbGVjdChoeiksdGhpcy5pZ25vcmVPdXRsaWVycyQ9dGhpcy5zdG9yZS5zZWxlY3QoYnopLHRoaXMueEF4aXNUeXBlJD10aGlzLnN0b3JlLnNlbGVjdCh5eiksdGhpcy5jYXJkTWluV2lkdGgkPXRoaXMuc3RvcmUuc2VsZWN0KGd6KSx0aGlzLmhpc3RvZ3JhbU1vZGUkPXRoaXMuc3RvcmUuc2VsZWN0KF96KSx0aGlzLnNjYWxhclNtb290aGluZyQ9dGhpcy5zdG9yZS5zZWxlY3QoQ3opLHRoaXMuc2NhbGFyUGFydGl0aW9uWCQ9dGhpcy5zdG9yZS5zZWxlY3QoTXopLHRoaXMuaW1hZ2VCcmlnaHRuZXNzSW5NaWxsaSQ9dGhpcy5zdG9yZS5zZWxlY3QodnopLHRoaXMuaW1hZ2VDb250cmFzdEluTWlsbGkkPXRoaXMuc3RvcmUuc2VsZWN0KHh6KSx0aGlzLmltYWdlU2hvd0FjdHVhbFNpemUkPXRoaXMuc3RvcmUuc2VsZWN0KE96KX1vblRvb2x0aXBTb3J0Q2hhbmdlZCh0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKGdBKHtzb3J0OnR9KSl9b25JZ25vcmVPdXRsaWVyc0NoYW5nZWQoKXt0aGlzLnN0b3JlLmRpc3BhdGNoKGhBKCkpfW9uWEF4aXNUeXBlQ2hhbmdlZCh0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKGJBKHt4QXhpc1R5cGU6dH0pKX1vbkNhcmRXaWR0aENoYW5nZWQodCl7dGhpcy5zdG9yZS5kaXNwYXRjaCh5QSh7Y2FyZE1pbldpZHRoOnR9KSl9b25DYXJkV2lkdGhSZXNldCgpe3RoaXMuc3RvcmUuZGlzcGF0Y2goX0EoKSl9b25IaXN0b2dyYW1Nb2RlQ2hhbmdlZCh0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKGtBKHtoaXN0b2dyYW1Nb2RlOnR9KSl9b25TY2FsYXJTbW9vdGhpbmdDaGFuZ2VkKHQpe3RoaXMuc3RvcmUuZGlzcGF0Y2goQ0Eoe3Ntb290aGluZzp0fSkpfW9uU2NhbGFyUGFydGl0aW9uWFRvZ2dsZWQoKXt0aGlzLnN0b3JlLmRpc3BhdGNoKE1BKCkpfW9uSW1hZ2VCcmlnaHRuZXNzSW5NaWxsaUNoYW5nZWQodCl7dGhpcy5zdG9yZS5kaXNwYXRjaCh2QSh7YnJpZ2h0bmVzc0luTWlsbGk6dH0pKX1vbkltYWdlQnJpZ2h0bmVzc1Jlc2V0KCl7dGhpcy5zdG9yZS5kaXNwYXRjaChPQSgpKX1vbkltYWdlQ29udHJhc3RSZXNldCgpe3RoaXMuc3RvcmUuZGlzcGF0Y2goUEEoKSl9b25JbWFnZUNvbnRyYXN0SW5NaWxsaUNoYW5nZWQodCl7dGhpcy5zdG9yZS5kaXNwYXRjaCh4QSh7Y29udHJhc3RJbk1pbGxpOnR9KSl9b25JbWFnZVNob3dBY3R1YWxTaXplQ2hhbmdlZCgpe3RoaXMuc3RvcmUuZGlzcGF0Y2god0EoKSl9b25TZWxlY3RUaW1lRW5hYmxlVG9nZ2xlZCgpe3RoaXMuc3RvcmUuZGlzcGF0Y2goQkEoKSl9b25Vc2VSYW5nZVNlbGVjdFRpbWVUb2dnbGVkKCl7dGhpcy5zdG9yZS5kaXNwYXRjaChWQSgpKX1vblNlbGVjdFRpbWVDaGFuZ2VkKHQpe3ZhciBlO3RoaXMuc3RvcmUuZGlzcGF0Y2goRkEoe3N0YXJ0U3RlcDp0LnN0YXJ0LnN0ZXAsZW5kU3RlcDpudWxsPT09KGU9dC5lbmQpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLnN0ZXB9KSl9fUZ5dC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8Rnl0KShnZihpUykpfSxGeXQuybVjbXA9c28oe3R5cGU6Rnl0LHNlbGVjdG9yczpbWyJtZXRyaWNzLWRhc2hib2FyZC1zZXR0aW5ncyJdXSxkZWNsczoxOCx2YXJzOjUxLGNvbnN0czpbWzMsImlzSW1hZ2VTdXBwb3J0RW5hYmxlZCIsInRvb2x0aXBTb3J0IiwiaWdub3JlT3V0bGllcnMiLCJ4QXhpc1R5cGUiLCJpc0NhcmRXaWR0aFNldHRpbmdFbmFibGVkIiwiY2FyZE1pbldpZHRoIiwiaGlzdG9ncmFtTW9kZSIsInNjYWxhclNtb290aGluZyIsInNjYWxhclBhcnRpdGlvblgiLCJpbWFnZUJyaWdodG5lc3NJbk1pbGxpIiwiaW1hZ2VDb250cmFzdEluTWlsbGkiLCJpbWFnZVNob3dBY3R1YWxTaXplIiwiaXNMaW5rZWRUaW1lRmVhdHVyZUVuYWJsZWQiLCJzZWxlY3RUaW1lRW5hYmxlZCIsInNlbGVjdGVkVGltZSIsInVzZVJhbmdlU2VsZWN0VGltZSIsInN0ZXBNaW5NYXgiLCJ0b29sdGlwU29ydENoYW5nZWQiLCJpZ25vcmVPdXRsaWVyc0NoYW5nZWQiLCJ4QXhpc1R5cGVDaGFuZ2VkIiwiY2FyZFdpZHRoQ2hhbmdlZCIsImNhcmRXaWR0aFJlc2V0IiwiaGlzdG9ncmFtTW9kZUNoYW5nZWQiLCJzY2FsYXJTbW9vdGhpbmdDaGFuZ2VkIiwic2NhbGFyUGFydGl0aW9uWFRvZ2dsZWQiLCJpbWFnZUJyaWdodG5lc3NJbk1pbGxpQ2hhbmdlZCIsImltYWdlQnJpZ2h0bmVzc1Jlc2V0IiwiaW1hZ2VDb250cmFzdEluTWlsbGlDaGFuZ2VkIiwiaW1hZ2VDb250cmFzdFJlc2V0IiwiaW1hZ2VTaG93QWN0dWFsU2l6ZUNoYW5nZWQiLCJzZWxlY3RUaW1lRW5hYmxlVG9nZ2xlZCIsInVzZVJhbmdlU2VsZWN0VGltZVRvZ2dsZWQiLCJzZWxlY3RUaW1lQ2hhbmdlZCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoQ2YoMCwibWV0cmljcy1kYXNoYm9hcmQtc2V0dGluZ3MtY29tcG9uZW50IiwwKSxSZigidG9vbHRpcFNvcnRDaGFuZ2VkIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vblRvb2x0aXBTb3J0Q2hhbmdlZChlKX0pKSgiaWdub3JlT3V0bGllcnNDaGFuZ2VkIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uSWdub3JlT3V0bGllcnNDaGFuZ2VkKCl9KSkoInhBeGlzVHlwZUNoYW5nZWQiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uWEF4aXNUeXBlQ2hhbmdlZChlKX0pKSgiY2FyZFdpZHRoQ2hhbmdlZCIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25DYXJkV2lkdGhDaGFuZ2VkKGUpfSkpKCJjYXJkV2lkdGhSZXNldCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vbkNhcmRXaWR0aFJlc2V0KCl9KSkoImhpc3RvZ3JhbU1vZGVDaGFuZ2VkIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vbkhpc3RvZ3JhbU1vZGVDaGFuZ2VkKGUpfSkpKCJzY2FsYXJTbW9vdGhpbmdDaGFuZ2VkIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vblNjYWxhclNtb290aGluZ0NoYW5nZWQoZSl9KSkoInNjYWxhclBhcnRpdGlvblhUb2dnbGVkIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uU2NhbGFyUGFydGl0aW9uWFRvZ2dsZWQoKX0pKSgiaW1hZ2VCcmlnaHRuZXNzSW5NaWxsaUNoYW5nZWQiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uSW1hZ2VCcmlnaHRuZXNzSW5NaWxsaUNoYW5nZWQoZSl9KSkoImltYWdlQnJpZ2h0bmVzc1Jlc2V0IiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uSW1hZ2VCcmlnaHRuZXNzUmVzZXQoKX0pKSgiaW1hZ2VDb250cmFzdEluTWlsbGlDaGFuZ2VkIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vbkltYWdlQ29udHJhc3RJbk1pbGxpQ2hhbmdlZChlKX0pKSgiaW1hZ2VDb250cmFzdFJlc2V0IiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uSW1hZ2VDb250cmFzdFJlc2V0KCl9KSkoImltYWdlU2hvd0FjdHVhbFNpemVDaGFuZ2VkIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uSW1hZ2VTaG93QWN0dWFsU2l6ZUNoYW5nZWQoKX0pKSgic2VsZWN0VGltZUVuYWJsZVRvZ2dsZWQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25TZWxlY3RUaW1lRW5hYmxlVG9nZ2xlZCgpfSkpKCJ1c2VSYW5nZVNlbGVjdFRpbWVUb2dnbGVkIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uVXNlUmFuZ2VTZWxlY3RUaW1lVG9nZ2xlZCgpfSkpKCJzZWxlY3RUaW1lQ2hhbmdlZCIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25TZWxlY3RUaW1lQ2hhbmdlZChlKX0pKSxfeSgxLCJhc3luYyIpLF95KDIsImFzeW5jIiksX3koMywiYXN5bmMiKSxfeSg0LCJhc3luYyIpLF95KDUsImFzeW5jIiksX3koNiwiYXN5bmMiKSxfeSg3LCJhc3luYyIpLF95KDgsImFzeW5jIiksX3koOSwiYXN5bmMiKSxfeSgxMCwiYXN5bmMiKSxfeSgxMSwiYXN5bmMiKSxfeSgxMiwiYXN5bmMiKSxfeSgxMywiYXN5bmMiKSxfeSgxNCwiYXN5bmMiKSxfeSgxNSwiYXN5bmMiKSxfeSgxNiwiYXN5bmMiKSxfeSgxNywiYXN5bmMiKSxNZigpKSwyJmUmJmJmKCJpc0ltYWdlU3VwcG9ydEVuYWJsZWQiLEN5KDEsMTcsbi5pc0ltYWdlU3VwcG9ydEVuYWJsZWQkKSkoInRvb2x0aXBTb3J0IixDeSgyLDE5LG4udG9vbHRpcFNvcnQkKSkoImlnbm9yZU91dGxpZXJzIixDeSgzLDIxLG4uaWdub3JlT3V0bGllcnMkKSkoInhBeGlzVHlwZSIsQ3koNCwyMyxuLnhBeGlzVHlwZSQpKSgiaXNDYXJkV2lkdGhTZXR0aW5nRW5hYmxlZCIsQ3koNSwyNSxuLmlzQ2FyZFdpZHRoU2V0dGluZ0VuYWJsZWQkKSkoImNhcmRNaW5XaWR0aCIsQ3koNiwyNyxuLmNhcmRNaW5XaWR0aCQpKSgiaGlzdG9ncmFtTW9kZSIsQ3koNywyOSxuLmhpc3RvZ3JhbU1vZGUkKSkoInNjYWxhclNtb290aGluZyIsQ3koOCwzMSxuLnNjYWxhclNtb290aGluZyQpKSgic2NhbGFyUGFydGl0aW9uWCIsQ3koOSwzMyxuLnNjYWxhclBhcnRpdGlvblgkKSkoImltYWdlQnJpZ2h0bmVzc0luTWlsbGkiLEN5KDEwLDM1LG4uaW1hZ2VCcmlnaHRuZXNzSW5NaWxsaSQpKSgiaW1hZ2VDb250cmFzdEluTWlsbGkiLEN5KDExLDM3LG4uaW1hZ2VDb250cmFzdEluTWlsbGkkKSkoImltYWdlU2hvd0FjdHVhbFNpemUiLEN5KDEyLDM5LG4uaW1hZ2VTaG93QWN0dWFsU2l6ZSQpKSgiaXNMaW5rZWRUaW1lRmVhdHVyZUVuYWJsZWQiLEN5KDEzLDQxLG4uaXNMaW5rZWRUaW1lRmVhdHVyZUVuYWJsZWQkKSkoInNlbGVjdFRpbWVFbmFibGVkIixDeSgxNCw0MyxuLnNlbGVjdFRpbWVFbmFibGVkJCkpKCJzZWxlY3RlZFRpbWUiLEN5KDE1LDQ1LG4uc2VsZWN0ZWRUaW1lJCkpKCJ1c2VSYW5nZVNlbGVjdFRpbWUiLEN5KDE2LDQ3LG4udXNlUmFuZ2VTZWxlY3RUaW1lJCkpKCJzdGVwTWluTWF4IixDeSgxNyw0OSxuLnN0ZXBNaW5NYXgkKSl9LGRpcmVjdGl2ZXM6W0h5dF0scGlwZXM6W1Z2XSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEZ5dCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJtZXRyaWNzLWRhc2hib2FyZC1zZXR0aW5ncyIsdGVtcGxhdGU6J1xuICAgIDxtZXRyaWNzLWRhc2hib2FyZC1zZXR0aW5ncy1jb21wb25lbnRcbiAgICAgIFtpc0ltYWdlU3VwcG9ydEVuYWJsZWRdPSJpc0ltYWdlU3VwcG9ydEVuYWJsZWQkIHwgYXN5bmMiXG4gICAgICBbdG9vbHRpcFNvcnRdPSJ0b29sdGlwU29ydCQgfCBhc3luYyJcbiAgICAgICh0b29sdGlwU29ydENoYW5nZWQpPSJvblRvb2x0aXBTb3J0Q2hhbmdlZCgkZXZlbnQpIlxuICAgICAgW2lnbm9yZU91dGxpZXJzXT0iaWdub3JlT3V0bGllcnMkIHwgYXN5bmMiXG4gICAgICAoaWdub3JlT3V0bGllcnNDaGFuZ2VkKT0ib25JZ25vcmVPdXRsaWVyc0NoYW5nZWQoKSJcbiAgICAgIFt4QXhpc1R5cGVdPSJ4QXhpc1R5cGUkIHwgYXN5bmMiXG4gICAgICAoeEF4aXNUeXBlQ2hhbmdlZCk9Im9uWEF4aXNUeXBlQ2hhbmdlZCgkZXZlbnQpIlxuICAgICAgW2lzQ2FyZFdpZHRoU2V0dGluZ0VuYWJsZWRdPSJpc0NhcmRXaWR0aFNldHRpbmdFbmFibGVkJCB8IGFzeW5jIlxuICAgICAgW2NhcmRNaW5XaWR0aF09ImNhcmRNaW5XaWR0aCQgfCBhc3luYyJcbiAgICAgIChjYXJkV2lkdGhDaGFuZ2VkKT0ib25DYXJkV2lkdGhDaGFuZ2VkKCRldmVudCkiXG4gICAgICAoY2FyZFdpZHRoUmVzZXQpPSJvbkNhcmRXaWR0aFJlc2V0KCkiXG4gICAgICBbaGlzdG9ncmFtTW9kZV09Imhpc3RvZ3JhbU1vZGUkIHwgYXN5bmMiXG4gICAgICAoaGlzdG9ncmFtTW9kZUNoYW5nZWQpPSJvbkhpc3RvZ3JhbU1vZGVDaGFuZ2VkKCRldmVudCkiXG4gICAgICBbc2NhbGFyU21vb3RoaW5nXT0ic2NhbGFyU21vb3RoaW5nJCB8IGFzeW5jIlxuICAgICAgKHNjYWxhclNtb290aGluZ0NoYW5nZWQpPSJvblNjYWxhclNtb290aGluZ0NoYW5nZWQoJGV2ZW50KSJcbiAgICAgIFtzY2FsYXJQYXJ0aXRpb25YXT0ic2NhbGFyUGFydGl0aW9uWCQgfCBhc3luYyJcbiAgICAgIChzY2FsYXJQYXJ0aXRpb25YVG9nZ2xlZCk9Im9uU2NhbGFyUGFydGl0aW9uWFRvZ2dsZWQoKSJcbiAgICAgIFtpbWFnZUJyaWdodG5lc3NJbk1pbGxpXT0iaW1hZ2VCcmlnaHRuZXNzSW5NaWxsaSQgfCBhc3luYyJcbiAgICAgIChpbWFnZUJyaWdodG5lc3NJbk1pbGxpQ2hhbmdlZCk9Im9uSW1hZ2VCcmlnaHRuZXNzSW5NaWxsaUNoYW5nZWQoJGV2ZW50KSJcbiAgICAgIChpbWFnZUJyaWdodG5lc3NSZXNldCk9Im9uSW1hZ2VCcmlnaHRuZXNzUmVzZXQoKSJcbiAgICAgIFtpbWFnZUNvbnRyYXN0SW5NaWxsaV09ImltYWdlQ29udHJhc3RJbk1pbGxpJCB8IGFzeW5jIlxuICAgICAgKGltYWdlQ29udHJhc3RJbk1pbGxpQ2hhbmdlZCk9Im9uSW1hZ2VDb250cmFzdEluTWlsbGlDaGFuZ2VkKCRldmVudCkiXG4gICAgICAoaW1hZ2VDb250cmFzdFJlc2V0KT0ib25JbWFnZUNvbnRyYXN0UmVzZXQoKSJcbiAgICAgIFtpbWFnZVNob3dBY3R1YWxTaXplXT0iaW1hZ2VTaG93QWN0dWFsU2l6ZSQgfCBhc3luYyJcbiAgICAgIChpbWFnZVNob3dBY3R1YWxTaXplQ2hhbmdlZCk9Im9uSW1hZ2VTaG93QWN0dWFsU2l6ZUNoYW5nZWQoKSJcbiAgICAgIFtpc0xpbmtlZFRpbWVGZWF0dXJlRW5hYmxlZF09ImlzTGlua2VkVGltZUZlYXR1cmVFbmFibGVkJCB8IGFzeW5jIlxuICAgICAgW3NlbGVjdFRpbWVFbmFibGVkXT0ic2VsZWN0VGltZUVuYWJsZWQkIHwgYXN5bmMiXG4gICAgICBbc2VsZWN0ZWRUaW1lXT0ic2VsZWN0ZWRUaW1lJCB8IGFzeW5jIlxuICAgICAgW3VzZVJhbmdlU2VsZWN0VGltZV09InVzZVJhbmdlU2VsZWN0VGltZSQgfCBhc3luYyJcbiAgICAgIFtzdGVwTWluTWF4XT0ic3RlcE1pbk1heCQgfCBhc3luYyJcbiAgICAgIChzZWxlY3RUaW1lRW5hYmxlVG9nZ2xlZCk9Im9uU2VsZWN0VGltZUVuYWJsZVRvZ2dsZWQoKSJcbiAgICAgICh1c2VSYW5nZVNlbGVjdFRpbWVUb2dnbGVkKT0ib25Vc2VSYW5nZVNlbGVjdFRpbWVUb2dnbGVkKCkiXG4gICAgICAoc2VsZWN0VGltZUNoYW5nZWQpPSJvblNlbGVjdFRpbWVDaGFuZ2VkKCRldmVudCkiXG4gICAgPlxuICAgIDwvbWV0cmljcy1kYXNoYm9hcmQtc2V0dGluZ3MtY29tcG9uZW50PlxuICAnLGNoYW5nZURldGVjdGlvbjpqbi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTppU31dfSksbnVsbCk7Y2xhc3MgTHl0e31mdW5jdGlvbiBCeXQodCxlKXtpZigxJnQmJnZmKDAsIm1ldHJpY3MtZmlsdGVyZWQtdmlldyIsOSksMiZ0KXtiZigiY2FyZE9ic2VydmVyIix6ZigpLmNhcmRPYnNlcnZlcil9fWZ1bmN0aW9uIFZ5dCh0LGUpezEmdCYmKENmKDAsImRpdiIsMTIpLHZmKDEsIm1hdC1zcGlubmVyIiwxMyksTWYoKSl9ZnVuY3Rpb24ganl0KHQsZSl7aWYoMSZ0KXtjb25zdCB0PXdmKCk7Q2YoMCwiZGl2IiwxNCksQ2YoMSwiZGl2IiwxNSksQ2YoMiwiaDIiLDE2KSxQdSgzLCJTZXR0aW5ncyIpLE1mKCksQ2YoNCwiYnV0dG9uIiwxNyksUmYoImNsaWNrIiwoZnVuY3Rpb24gZSgpe1BpKHQpO3JldHVybiB6ZigpLm9uQ2xvc2VTaWRlcGFuZUJ1dHRvbkNsaWNrZWQuZW1pdCgpfSkpLHZmKDUsIm1hdC1pY29uIiwxOCksTWYoKSxNZigpLHZmKDYsIm1ldHJpY3MtZGFzaGJvYXJkLXJpZ2h0LXBhbmUiKSxNZigpfX1MeXQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEx5dCl9LEx5dC7JtWNtcD1zbyh7dHlwZTpMeXQsc2VsZWN0b3JzOltbIm1ldHJpY3MtZGFzaGJvYXJkLXJpZ2h0LXBhbmUiXV0sZGVjbHM6MSx2YXJzOjAsdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmdmYoMCwibWV0cmljcy1kYXNoYm9hcmQtc2V0dGluZ3MiKX0sZGlyZWN0aXZlczpbRnl0XSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEx5dCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJtZXRyaWNzLWRhc2hib2FyZC1yaWdodC1wYW5lIix0ZW1wbGF0ZToiPG1ldHJpY3MtZGFzaGJvYXJkLXNldHRpbmdzPjwvbWV0cmljcy1kYXNoYm9hcmQtc2V0dGluZ3M+IixjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNofV19XSxudWxsLG51bGwpO2NvbnN0IFV5dD1mdW5jdGlvbih0KXtyZXR1cm57Y2hlY2tlZDp0LCJzZXR0aW5ncy1idXR0b24iOiEwfX07Y2xhc3MgV3l0e2NvbnN0cnVjdG9yKHQpe3RoaXMuaG9zdD10LHRoaXMub25TZXR0aW5nc0J1dHRvbkNsaWNrZWQ9bmV3IFN5LHRoaXMub25DbG9zZVNpZGVwYW5lQnV0dG9uQ2xpY2tlZD1uZXcgU3ksdGhpcy5vblBsdWdpblR5cGVUb2dnbGVkPW5ldyBTeSx0aGlzLm9uUGx1Z2luVHlwZUFsbFRvZ2dsZWQ9bmV3IFN5LHRoaXMuUGx1Z2luVHlwZT1LVCx0aGlzLmNhcmRPYnNlcnZlcj1uZXcgXzQodGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQsIjYwMHB4IDBweCA2MDBweCAwcHgiKX19V3l0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxXeXQpKGdmKEtoKSl9LFd5dC7JtWNtcD1zbyh7dHlwZTpXeXQsc2VsZWN0b3JzOltbIm1ldHJpY3MtbWFpbi12aWV3LWNvbXBvbmVudCJdXSxpbnB1dHM6e3Nob3dGaWx0ZXJlZFZpZXc6InNob3dGaWx0ZXJlZFZpZXciLGlzU2lkZXBhbmVPcGVuOiJpc1NpZGVwYW5lT3BlbiIsZmlsdGVyZWRQbHVnaW5UeXBlczoiZmlsdGVyZWRQbHVnaW5UeXBlcyIsaW5pdGlhbFRhZ3NMb2FkaW5nOiJpbml0aWFsVGFnc0xvYWRpbmcifSxvdXRwdXRzOntvblNldHRpbmdzQnV0dG9uQ2xpY2tlZDoib25TZXR0aW5nc0J1dHRvbkNsaWNrZWQiLG9uQ2xvc2VTaWRlcGFuZUJ1dHRvbkNsaWNrZWQ6Im9uQ2xvc2VTaWRlcGFuZUJ1dHRvbkNsaWNrZWQiLG9uUGx1Z2luVHlwZVRvZ2dsZWQ6Im9uUGx1Z2luVHlwZVRvZ2dsZWQiLG9uUGx1Z2luVHlwZUFsbFRvZ2dsZWQ6Im9uUGx1Z2luVHlwZUFsbFRvZ2dsZWQifSxkZWNsczoyMix2YXJzOjIxLGNvbnN0czpmdW5jdGlvbigpe2xldCB0LGU7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBuZ0kxOG5DbG9zdXJlTW9kZSYmbmdJMThuQ2xvc3VyZU1vZGUpe3Q9Z29vZy5nZXRNc2coIlRvZ2dsZSBzZXR0aW5ncyBzaWRlIHBhbmUiKX1lbHNlIHQ9JGxvY2FsaXplYDpMYWJlbCBvbiBhIHRvb2xiYXIgYnV0dG9uIHRvIHRvZ2dsZSB0aGUgc2V0dGluZ3Mgc2lkZSBwYW5lLuKQn2QzNTE2ZGI2YmJlNjg2MGE1NWJlYWI2NmU0OTY5ZGFjNjI1YjhkNzLikJ83NjU5Mjg1NDQ1NTgwODM4OTI1OlRvZ2dsZSBzZXR0aW5ncyBzaWRlIHBhbmVgO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgbmdJMThuQ2xvc3VyZU1vZGUmJm5nSTE4bkNsb3N1cmVNb2RlKXtlPWdvb2cuZ2V0TXNnKCJDbG9zZSBzaWRlIHBhbmUiKX1lbHNlIGU9JGxvY2FsaXplYDpMYWJlbCBvbiBhIGJ1dHRvbiB0byBjbG9zZSB0aGUgc2V0dGluZ3Mgc2lkZSBwYW5lLuKQnzA0NTIxZGMwYjZhNjVjZjVjMzgyOTQ0YzlhOGI0Yjg0NGEzZTk1OTjikJ84MTU2NzY2OTk3NzQ3MTY1ODcxOkNsb3NlIHNpZGUgcGFuZWA7cmV0dXJuW1sxLCJ0b29sYmFyIl0sWyJtdWx0aXBsZSIsIiIsImFwcGVhcmFuY2UiLCJzdGFuZGFyZCIsMSwiZmlsdGVyLXZpZXciXSxbIm1hdC1idXR0b24iLCIiLCJyb2xlIiwiY2hlY2tib3giLDEsImZpbHRlci12aWV3LWJ1dHRvbiIsMywiY2xpY2siXSxbMSwicmlnaHQtaXRlbXMiXSxbIm1hdC1zdHJva2VkLWJ1dHRvbiIsIiIsImFyaWEtbGFiZWwiLHQsMywibmdDbGFzcyIsImNsaWNrIl0sWyJzdmdJY29uIiwic2V0dGluZ3NfMjRweCJdLFsxLCJzcGxpdC1jb250ZW50Il0sWyJjZGtTY3JvbGxhYmxlIiwiIl0sWzMsImNhcmRPYnNlcnZlciIsNCwibmdJZiJdLFszLCJjYXJkT2JzZXJ2ZXIiXSxbImNsYXNzIiwibG9hZGluZy1jb250YWluZXIiLDQsIm5nSWYiXSxbImNsYXNzIiwic2lkZWJhciIsNCwibmdJZiJdLFsxLCJsb2FkaW5nLWNvbnRhaW5lciJdLFsiZGlhbWV0ZXIiLCIzNiJdLFsxLCJzaWRlYmFyIl0sWzEsImhlYWRlciJdLFsxLCJ0aXRsZSJdLFsibWF0LWljb24tYnV0dG9uIiwiIiwiYXJpYS1sYWJlbCIsZSwzLCJjbGljayJdLFsic3ZnSWNvbiIsImNsb3NlXzI0cHgiXV19LHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihDZigwLCJkaXYiLDApLHZmKDEsIm1ldHJpY3MtdGFnLWZpbHRlciIpLENmKDIsIm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwIiwxKSxDZigzLCJidXR0b24iLDIpLFJmKCJjbGljayIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vblBsdWdpblR5cGVBbGxUb2dnbGVkLmVtaXQoKX0pKSxQdSg0LCIgQWxsICIpLE1mKCksQ2YoNSwiYnV0dG9uIiwyKSxSZigiY2xpY2siLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25QbHVnaW5UeXBlVG9nZ2xlZC5lbWl0KG4uUGx1Z2luVHlwZS5TQ0FMQVJTKX0pKSxQdSg2LCIgU2NhbGFycyAiKSxNZigpLENmKDcsImJ1dHRvbiIsMiksUmYoImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uUGx1Z2luVHlwZVRvZ2dsZWQuZW1pdChuLlBsdWdpblR5cGUuSU1BR0VTKX0pKSxQdSg4LCIgSW1hZ2UgIiksTWYoKSxDZig5LCJidXR0b24iLDIpLFJmKCJjbGljayIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vblBsdWdpblR5cGVUb2dnbGVkLmVtaXQobi5QbHVnaW5UeXBlLkhJU1RPR1JBTVMpfSkpLFB1KDEwLCIgSGlzdG9ncmFtICIpLE1mKCksTWYoKSxDZigxMSwiZGl2IiwzKSxDZigxMiwiYnV0dG9uIiw0KSxSZigiY2xpY2siLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25TZXR0aW5nc0J1dHRvbkNsaWNrZWQuZW1pdCgpfSkpLHZmKDEzLCJtYXQtaWNvbiIsNSksUHUoMTQsIiBTZXR0aW5ncyAiKSxNZigpLE1mKCksTWYoKSxDZigxNSwiZGl2Iiw2KSxDZigxNiwiZGl2Iiw3KSxIbSgxNyxCeXQsMSwxLCJtZXRyaWNzLWZpbHRlcmVkLXZpZXciLDgpLHZmKDE4LCJtZXRyaWNzLXBpbm5lZC12aWV3Iiw5KSxIbSgxOSxWeXQsMiwwLCJkaXYiLDEwKSx2ZigyMCwibWV0cmljcy1jYXJkLWdyb3VwcyIsOSksTWYoKSxIbSgyMSxqeXQsNywwLCJkaXYiLDExKSxNZigpKSwyJmUmJihEYygzKSx5bSgiYXJpYS1jaGVja2VkIiwwPT09bi5maWx0ZXJlZFBsdWdpblR5cGVzLnNpemUpLERjKDIpLHltKCJhcmlhLWNoZWNrZWQiLG4uZmlsdGVyZWRQbHVnaW5UeXBlcy5oYXMobi5QbHVnaW5UeXBlLlNDQUxBUlMpKSxEYygyKSx5bSgiYXJpYS1jaGVja2VkIixuLmZpbHRlcmVkUGx1Z2luVHlwZXMuaGFzKG4uUGx1Z2luVHlwZS5JTUFHRVMpKSxEYygyKSx5bSgiYXJpYS1jaGVja2VkIixuLmZpbHRlcmVkUGx1Z2luVHlwZXMuaGFzKG4uUGx1Z2luVHlwZS5ISVNUT0dSQU1TKSksRGMoMyksYmYoIm5nQ2xhc3MiLGl5KDE5LFV5dCxuLmlzU2lkZXBhbmVPcGVuKSkseW0oImFyaWEtcHJlc3NlZCIsbi5pc1NpZGVwYW5lT3BlbiksRGMoNCksY3UoIm1haW4iLCEwKSgiZmlsdGVyLXZpZXciLG4uc2hvd0ZpbHRlcmVkVmlldyksRGMoMSksYmYoIm5nSWYiLG4uc2hvd0ZpbHRlcmVkVmlldyksRGMoMSksbHUoImRpc3BsYXkiLG4uc2hvd0ZpbHRlcmVkVmlldz8ibm9uZSI6IiIpLGJmKCJjYXJkT2JzZXJ2ZXIiLG4uY2FyZE9ic2VydmVyKSxEYygxKSxiZigibmdJZiIsbi5pbml0aWFsVGFnc0xvYWRpbmcpLERjKDEpLGx1KCJkaXNwbGF5IixuLnNob3dGaWx0ZXJlZFZpZXc/Im5vbmUiOiIiKSxiZigiY2FyZE9ic2VydmVyIixuLmNhcmRPYnNlcnZlciksRGMoMSksYmYoIm5nSWYiLG4uaXNTaWRlcGFuZU9wZW4pKX0sZGlyZWN0aXZlczpbUDQsQTQsTkwsQ3YsTXEsSkwsUHYscHl0LE15dCxTeXQsYTIsTHl0XSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX1bX25naG9zdC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47aGVpZ2h0OjEwMCV9LnRvb2xiYXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlYmViZWI7ZmxleDpub25lO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47aGVpZ2h0OjQ4cHg7cGFkZGluZzowIDE2cHh9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLnRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAudG9vbGJhcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbToxcHggc29saWQgIzU1NX0udG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBtZXRyaWNzLXRhZy1maWx0ZXJbX25nY29udGVudC0lQ09NUCVde2ZsZXg6MSAxIDEwMHB4fS50b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5yaWdodC1pdGVtc1tfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICNlYmViZWI7bWFyZ2luLWxlZnQ6MTZweDtwYWRkaW5nLWxlZnQ6MTZweH1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAudG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAucmlnaHQtaXRlbXNbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAudG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAucmlnaHQtaXRlbXNbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjNTU1fS5maWx0ZXItdmlld1tfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXJhZGl1czo0cHg7ZmxleDpub25lO21hcmdpbi1yaWdodDo1cHh9LmZpbHRlci12aWV3W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXJhZGl1czowO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0Om5vcm1hbDtoZWlnaHQ6MjVweDtsaW5lLWhlaWdodDoyNXB4O21pbi13aWR0aDp1bnNldDtwYWRkaW5nOjAgMTJweH0uZmlsdGVyLXZpZXdbX25nY29udGVudC0lQ09NUCVdICAgYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSArIGJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICNlYmViZWJ9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLmZpbHRlci12aWV3W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gKyBidXR0b25bX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuZmlsdGVyLXZpZXdbX25nY29udGVudC0lQ09NUCVdICAgYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSArIGJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICM1NTV9LmZpbHRlci12aWV3W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGJ1dHRvblthcmlhLWNoZWNrZWQ9dHJ1ZV1bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2UwZTBlMH1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAuZmlsdGVyLXZpZXdbX25nY29udGVudC0lQ09NUCVdICAgYnV0dG9uW2FyaWEtY2hlY2tlZD10cnVlXVtfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5maWx0ZXItdmlld1tfbmdjb250ZW50LSVDT01QJV0gICBidXR0b25bYXJpYS1jaGVja2VkPXRydWVdW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiMyMTIxMjF9LnNwbGl0LWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtvdmVyZmxvdy15OmF1dG87ZmxleDoxfS5tYWluW19uZ2NvbnRlbnQtJUNPTVAlXSwgLnNpZGViYXJbX25nY29udGVudC0lQ09NUCVde2NvbnRhaW46c3RyaWN0O292ZXJmbG93LXg6aGlkZGVuO292ZXJmbG93LXk6YXV0bzt3aWxsLWNoYW5nZTp0cmFuc2Zvcm0sc2Nyb2xsLXBvc2l0aW9ufS5tYWluW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNWY2Zjc7ZmxleDoxIDE7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbn1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAubWFpbltfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5tYWluW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiMzYTNhM2F9Lm1haW5bX25nY29udGVudC0lQ09NUCVdICAgbWV0cmljcy1maWx0ZXJlZC12aWV3W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1haW5bX25nY29udGVudC0lQ09NUCVdICAgbWV0cmljcy1waW5uZWQtdmlld1tfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2ViZWJlYn1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAubWFpbltfbmdjb250ZW50LSVDT01QJV0gICBtZXRyaWNzLWZpbHRlcmVkLXZpZXdbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAubWFpbltfbmdjb250ZW50LSVDT01QJV0gICBtZXRyaWNzLWZpbHRlcmVkLXZpZXdbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1ib3R0b206MXB4IHNvbGlkICM1NTV9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLm1haW5bX25nY29udGVudC0lQ09NUCVdICAgbWV0cmljcy1waW5uZWQtdmlld1tfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5tYWluW19uZ2NvbnRlbnQtJUNPTVAlXSAgIG1ldHJpY3MtcGlubmVkLXZpZXdbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1ib3R0b206MXB4IHNvbGlkICM1NTV9Lm1haW4uZmlsdGVyLXZpZXdbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbn0ubWFpbi5maWx0ZXItdmlld1tfbmdjb250ZW50LSVDT01QJV0gICBtZXRyaWNzLWZpbHRlcmVkLXZpZXdbX25nY29udGVudC0lQ09NUCVde2NvbnRhaW46Y29udGVudDtvdmVyZmxvdzphdXRvO3dpbGwtY2hhbmdlOnRyYW5zZm9ybSxzY3JvbGwtcG9zaXRpb259LmxvYWRpbmctY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7bWFyZ2luOjIwcHggMH0uc2lkZWJhcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICNlYmViZWI7ZmxleDowIDAgMjUwcHh9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLnNpZGViYXJbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuc2lkZWJhcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICM1NTV9LnNpZGViYXJbX25nY29udGVudC0lQ09NUCVdICAgLmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2ViZWJlYjtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2hlaWdodDo0MnB4O3BhZGRpbmc6MCAxNnB4fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5zaWRlYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuc2lkZWJhcltfbmdjb250ZW50LSVDT01QJV0gICAuaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjNTU1fS5zaWRlYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6bm9ybWFsO21hcmdpbjowfVtfbmdob3N0LSVDT01QJV0gICAuc2V0dGluZ3MtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxO2Rpc3BsYXk6aW5saW5lLWZsZXh9Ym9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLnNldHRpbmdzLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9W19uZ2hvc3QtJUNPTVAlXSAgIC5zZXR0aW5ncy1idXR0b24uY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZTBlMGUwO2JvcmRlci1jb2xvcjojZTBlMGUwfWJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5zZXR0aW5ncy1idXR0b24uY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojMjEyMTIxfVtfbmdob3N0LSVDT01QJV0gICAuc2V0dGluZ3MtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgLm1hdC1idXR0b24td3JhcHBlcntkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcn1bX25naG9zdC0lQ09NUCVdICAgLnNldHRpbmdzLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICBtYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXJpZ2h0OjRweH0nXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoV3l0LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Im1ldHJpY3MtbWFpbi12aWV3LWNvbXBvbmVudCIsdGVtcGxhdGVVcmw6Im1haW5fdmlld19jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsibWFpbl92aWV3X2NvbXBvbmVudC5jc3MiXSxjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNofV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6S2h9XX0pLHtzaG93RmlsdGVyZWRWaWV3Olt7dHlwZTpSX31dLGlzU2lkZXBhbmVPcGVuOlt7dHlwZTpSX31dLGZpbHRlcmVkUGx1Z2luVHlwZXM6W3t0eXBlOlJffV0saW5pdGlhbFRhZ3NMb2FkaW5nOlt7dHlwZTpSX31dLG9uU2V0dGluZ3NCdXR0b25DbGlja2VkOlt7dHlwZTpFX31dLG9uQ2xvc2VTaWRlcGFuZUJ1dHRvbkNsaWNrZWQ6W3t0eXBlOkVffV0sb25QbHVnaW5UeXBlVG9nZ2xlZDpbe3R5cGU6RV99XSxvblBsdWdpblR5cGVBbGxUb2dnbGVkOlt7dHlwZTpFX31dfSk7Y2xhc3MgR3l0e2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLmlzU2lkZXBhbmVPcGVuJD10aGlzLnN0b3JlLnNlbGVjdChOeiksdGhpcy5pbml0aWFsVGFnc0xvYWRpbmckPXRoaXMuc3RvcmUuc2VsZWN0KEpOKS5waXBlKFVlKCh0PT5udWxsPT09dC5sYXN0TG9hZGVkVGltZUluTXMpLCEwKSxWdCgodD0+dC5zdGF0ZT09PVVFLkxPQURJTkcmJm51bGw9PT10Lmxhc3RMb2FkZWRUaW1lSW5NcykpKSx0aGlzLnNob3dGaWx0ZXJlZFZpZXckPXRoaXMuc3RvcmUuc2VsZWN0KFB6KS5waXBlKFZ0KCh0PT50Lmxlbmd0aD4wKSkpLHRoaXMuZmlsdGVyZWRQbHVnaW5UeXBlcyQ9dGhpcy5zdG9yZS5zZWxlY3QoQXopfW9uU2V0dGluZ3NCdXR0b25DbGlja2VkKCl7dGhpcy5zdG9yZS5kaXNwYXRjaChwQSgpKX1vbkNsb3NlU2lkZXBhbmVCdXR0b25DbGlja2VkKCl7dGhpcy5zdG9yZS5kaXNwYXRjaChkQSgpKX1vblBsdWdpblZpc2liaWxpdHlUb2dnbGVkKHQpe3RoaXMuc3RvcmUuZGlzcGF0Y2goSUEoe3BsdWdpbjp0fSkpfW9uU2hvd0FsbFBsdWdpbnMoKXt0aGlzLnN0b3JlLmRpc3BhdGNoKEhBKCkpfX1HeXQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEd5dCkoZ2YoaVMpKX0sR3l0Lsm1Y21wPXNvKHt0eXBlOkd5dCxzZWxlY3RvcnM6W1sibWV0cmljcy1tYWluLXZpZXciXV0sZGVjbHM6NSx2YXJzOjEyLGNvbnN0czpbWzMsInNob3dGaWx0ZXJlZFZpZXciLCJpc1NpZGVwYW5lT3BlbiIsImluaXRpYWxUYWdzTG9hZGluZyIsImZpbHRlcmVkUGx1Z2luVHlwZXMiLCJvblNldHRpbmdzQnV0dG9uQ2xpY2tlZCIsIm9uQ2xvc2VTaWRlcGFuZUJ1dHRvbkNsaWNrZWQiLCJvblBsdWdpblR5cGVUb2dnbGVkIiwib25QbHVnaW5UeXBlQWxsVG9nZ2xlZCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoQ2YoMCwibWV0cmljcy1tYWluLXZpZXctY29tcG9uZW50IiwwKSxSZigib25TZXR0aW5nc0J1dHRvbkNsaWNrZWQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25TZXR0aW5nc0J1dHRvbkNsaWNrZWQoKX0pKSgib25DbG9zZVNpZGVwYW5lQnV0dG9uQ2xpY2tlZCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vbkNsb3NlU2lkZXBhbmVCdXR0b25DbGlja2VkKCl9KSkoIm9uUGx1Z2luVHlwZVRvZ2dsZWQiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uUGx1Z2luVmlzaWJpbGl0eVRvZ2dsZWQoZSl9KSkoIm9uUGx1Z2luVHlwZUFsbFRvZ2dsZWQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25TaG93QWxsUGx1Z2lucygpfSkpLF95KDEsImFzeW5jIiksX3koMiwiYXN5bmMiKSxfeSgzLCJhc3luYyIpLF95KDQsImFzeW5jIiksTWYoKSksMiZlJiZiZigic2hvd0ZpbHRlcmVkVmlldyIsQ3koMSw0LG4uc2hvd0ZpbHRlcmVkVmlldyQpKSgiaXNTaWRlcGFuZU9wZW4iLEN5KDIsNixuLmlzU2lkZXBhbmVPcGVuJCkpKCJpbml0aWFsVGFnc0xvYWRpbmciLEN5KDMsOCxuLmluaXRpYWxUYWdzTG9hZGluZyQpKSgiZmlsdGVyZWRQbHVnaW5UeXBlcyIsQ3koNCwxMCxuLmZpbHRlcmVkUGx1Z2luVHlwZXMkKSl9LGRpcmVjdGl2ZXM6W1d5dF0scGlwZXM6W1Z2XSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEd5dCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJtZXRyaWNzLW1haW4tdmlldyIsdGVtcGxhdGU6J1xuICAgIDxtZXRyaWNzLW1haW4tdmlldy1jb21wb25lbnRcbiAgICAgIFtzaG93RmlsdGVyZWRWaWV3XT0ic2hvd0ZpbHRlcmVkVmlldyQgfCBhc3luYyJcbiAgICAgIFtpc1NpZGVwYW5lT3Blbl09ImlzU2lkZXBhbmVPcGVuJCB8IGFzeW5jIlxuICAgICAgW2luaXRpYWxUYWdzTG9hZGluZ109ImluaXRpYWxUYWdzTG9hZGluZyQgfCBhc3luYyJcbiAgICAgIFtmaWx0ZXJlZFBsdWdpblR5cGVzXT0iZmlsdGVyZWRQbHVnaW5UeXBlcyQgfCBhc3luYyJcbiAgICAgIChvblNldHRpbmdzQnV0dG9uQ2xpY2tlZCk9Im9uU2V0dGluZ3NCdXR0b25DbGlja2VkKCkiXG4gICAgICAob25DbG9zZVNpZGVwYW5lQnV0dG9uQ2xpY2tlZCk9Im9uQ2xvc2VTaWRlcGFuZUJ1dHRvbkNsaWNrZWQoKSJcbiAgICAgIChvblBsdWdpblR5cGVUb2dnbGVkKT0ib25QbHVnaW5WaXNpYmlsaXR5VG9nZ2xlZCgkZXZlbnQpIlxuICAgICAgKG9uUGx1Z2luVHlwZUFsbFRvZ2dsZWQpPSJvblNob3dBbGxQbHVnaW5zKCkiXG4gICAgPjwvbWV0cmljcy1tYWluLXZpZXctY29tcG9uZW50PlxuICAnLGNoYW5nZURldGVjdGlvbjpqbi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTppU31dfSksbnVsbCk7Y29uc3QgWXl0PW5ldyBlcigiW01ldHJpY3NdIE1FVFJJQ1NfUHJvbW8gTWVzc2FnZSBDb21wb25lbnQiKTtmdW5jdGlvbiBxeXQodCxlKXsxJnQmJih4ZigwKSxGZigxKSxPZigpKX1jbGFzcyBaeXR7Y29uc3RydWN0b3IodCxlKXt0aGlzLnZpZXdDb250YWluZXJSZWY9dCx0aGlzLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcj1lfW5nT25Jbml0KCl7aWYodGhpcy5jdXN0b21pemFibGVDb21wb25lbnQpe2NvbnN0IHQ9dGhpcy5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkodGhpcy5jdXN0b21pemFibGVDb21wb25lbnQuY29uc3RydWN0b3IpO3RoaXMudmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQodCl9fX1aeXQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFp5dCkoZ2YoRmIpLGdmKEdoKSl9LFp5dC7JtWNtcD1zbyh7dHlwZTpaeXQsc2VsZWN0b3JzOltbInRiLWN1c3RvbWl6YXRpb24iXV0saW5wdXRzOntjdXN0b21pemFibGVDb21wb25lbnQ6ImN1c3RvbWl6YWJsZUNvbXBvbmVudCJ9LG5nQ29udGVudFNlbGVjdG9yczpbIioiXSxkZWNsczoxLHZhcnM6MSxjb25zdHM6W1s0LCJuZ0lmIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihIZigpLEhtKDAscXl0LDIsMCwibmctY29udGFpbmVyIiwwKSksMiZlJiZiZigibmdJZiIsIW4uY3VzdG9taXphYmxlQ29tcG9uZW50KX0sZGlyZWN0aXZlczpbUHZdLGVuY2Fwc3VsYXRpb246Mn0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoWnl0LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6InRiLWN1c3RvbWl6YXRpb24iLHRlbXBsYXRlOidcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPSIhY3VzdG9taXphYmxlQ29tcG9uZW50Ij5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgJ31dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkZifSx7dHlwZTpHaH1dfSkse2N1c3RvbWl6YWJsZUNvbXBvbmVudDpbe3R5cGU6Ul99XX0pO2NsYXNzIFh5dHtjb25zdHJ1Y3Rvcih0KXt0aGlzLmN1c3RvbVByb21vTWVzc2FnZT10LHRoaXMub25EaXNtaXNzPW5ldyBTeSx0aGlzLm9uR29Ub1NjYWxhcnM9bmV3IFN5fX1YeXQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFh5dCkoZ2YoWXl0LDgpKX0sWHl0Lsm1Y21wPXNvKHt0eXBlOlh5dCxzZWxlY3RvcnM6W1sibWV0cmljcy1wcm9tby1ub3RpY2UtY29tcG9uZW50Il1dLG91dHB1dHM6e29uRGlzbWlzczoib25EaXNtaXNzIixvbkdvVG9TY2FsYXJzOiJvbkdvVG9TY2FsYXJzIn0sZGVjbHM6Nyx2YXJzOjEsY29uc3RzOltbMSwibWVzc2FnZSIsMywiY3VzdG9taXphYmxlQ29tcG9uZW50Il0sWzEsImdvLXRvLXNjYWxhcnMiLDMsImNsaWNrIl0sWzEsImRpc21pc3MiLDMsImNsaWNrIl0sWyJpbmxpbmUiLCIiLCJzdmdJY29uIiwiY2xvc2VfMjRweCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoQ2YoMCwidGItY3VzdG9taXphdGlvbiIsMCksUHUoMSwiIFdlbGNvbWUgdG8gbmV3IGRlZmF1bHQgZXhwZXJpZW5jZSBvZiBUZW5zb3JCb2FyZC4gVGltZSBTZXJpZXMgbGV0cyB5b3UgdmlldyBhbGwgdmlzdWFsaXphdGlvbnMgYXQgb25jZSwgcHV0IHRoZW0gc2lkZS1ieS1zaWRlIHdpdGggcGlucywgYW5kIGN1c3RvbWl6ZSBjb2xvcnMuIFNjYWxhcnMgYW5kIG90aGVyIHBsdWdpbnMgYXJlIHN0aWxsIGF2YWlsYWJsZS4gIiksQ2YoMiwiYnV0dG9uIiwxKSxSZigiY2xpY2siLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25Hb1RvU2NhbGFycy5lbWl0KCl9KSksUHUoMywiIEdvIHRvIFNjYWxhcnMgcGx1Z2luIiksTWYoKSxQdSg0LCIuXG4iKSxNZigpLENmKDUsImJ1dHRvbiIsMiksUmYoImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uRGlzbWlzcy5lbWl0KCl9KSksdmYoNiwibWF0LWljb24iLDMpLE1mKCkpLDImZSYmYmYoImN1c3RvbWl6YWJsZUNvbXBvbmVudCIsbi5jdXN0b21Qcm9tb01lc3NhZ2UpfSxkaXJlY3RpdmVzOltaeXQsTXFdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgdHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfVtfbmdob3N0LSVDT01QJV17ZGlzcGxheTpmbGV4O2ZvbnQtc2l6ZToxNHB4O2dhcDo1cHg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47bGluZS1oZWlnaHQ6MjBweDtwYWRkaW5nOjVweCAxMHB4fWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtib3JkZXI6MDtjb2xvcjppbmhlcml0O2N1cnNvcjpwb2ludGVyO2ZvbnQ6aW5oZXJpdDtwYWRkaW5nOjB9YnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXTpob3Zlcnt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfXRiLWN1c3RvbWl6YXRpb25bX25nY29udGVudC0lQ09NUCVdICAgYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMTk3NmQyfS5kaXNtaXNzW19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1zZWxmOmJhc2VsaW5lO2ZsZXg6bm9uZTtoZWlnaHQ6MjBweDt3aWR0aDoyMHB4fSddLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihYeXQsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoibWV0cmljcy1wcm9tby1ub3RpY2UtY29tcG9uZW50Iix0ZW1wbGF0ZVVybDoibWV0cmljc19wcm9tb19ub3RpY2VfY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbIm1ldHJpY3NfcHJvbW9fbm90aWNlX2NvbXBvbmVudC5jc3MiXSxjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNofV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6Y3IsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W1l5dF19XX1dfSkse29uRGlzbWlzczpbe3R5cGU6RV99XSxvbkdvVG9TY2FsYXJzOlt7dHlwZTpFX31dfSk7Y2xhc3MgS3l0e2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dH1vbkRpc21pc3MoKXt0aGlzLnN0b3JlLmRpc3BhdGNoKGpBKCkpfW9uR29Ub1NjYWxhcnMoKXt0aGlzLnN0b3JlLmRpc3BhdGNoKFVBKCkpfX1mdW5jdGlvbiBKeXQodCxlKXsxJnQmJnZmKDAsIm1ldHJpY3MtcHJvbW8tbm90aWNlIiwzKX1LeXQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEt5dCkoZ2YoaVMpKX0sS3l0Lsm1Y21wPXNvKHt0eXBlOkt5dCxzZWxlY3RvcnM6W1sibWV0cmljcy1wcm9tby1ub3RpY2UiXV0sZGVjbHM6MSx2YXJzOjAsY29uc3RzOltbMywib25EaXNtaXNzIiwib25Hb1RvU2NhbGFycyJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoQ2YoMCwibWV0cmljcy1wcm9tby1ub3RpY2UtY29tcG9uZW50IiwwKSxSZigib25EaXNtaXNzIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uRGlzbWlzcygpfSkpKCJvbkdvVG9TY2FsYXJzIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uR29Ub1NjYWxhcnMoKX0pKSxNZigpKX0sZGlyZWN0aXZlczpbWHl0XSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEt5dCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJtZXRyaWNzLXByb21vLW5vdGljZSIsdGVtcGxhdGU6JzxtZXRyaWNzLXByb21vLW5vdGljZS1jb21wb25lbnRcbiAgICAob25EaXNtaXNzKT0ib25EaXNtaXNzKCkiXG4gICAgKG9uR29Ub1NjYWxhcnMpPSJvbkdvVG9TY2FsYXJzKCkiXG4gID48L21ldHJpY3MtcHJvbW8tbm90aWNlLWNvbXBvbmVudD4nLGNoYW5nZURldGVjdGlvbjpqbi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTppU31dfSksbnVsbCk7Y2xhc3MgUXl0e2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLmlzQnV0dGVyQmFyRW5hYmxlZCQ9dGhpcy5zdG9yZS5zZWxlY3QoWUQpLnBpcGUoX2UodGhpcy5zdG9yZS5zZWxlY3QoVHopKSxWdCgoKFt0LGVdKT0+dCYmZSkpKX19UXl0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxReXQpKGdmKGlTKSl9LFF5dC7JtWNtcD1zbyh7dHlwZTpReXQsc2VsZWN0b3JzOltbIm1ldHJpY3MtZGFzaGJvYXJkIl1dLGRlY2xzOjUsdmFyczozLGNvbnN0czpbWyJjbGFzcyIsIm5vdGljZSIsNCwibmdJZiJdLFsic2lkZWJhciIsIiJdLFsibWFpbiIsIiJdLFsxLCJub3RpY2UiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKEhtKDAsSnl0LDEsMCwibWV0cmljcy1wcm9tby1ub3RpY2UiLDApLF95KDEsImFzeW5jIiksQ2YoMiwidGItZGFzaGJvYXJkLWxheW91dCIpLHZmKDMsInJ1bnMtc2VsZWN0b3IiLDEpLHZmKDQsIm1ldHJpY3MtbWFpbi12aWV3IiwyKSxNZigpKSwyJmUmJmJmKCJuZ0lmIixDeSgxLDEsbi5pc0J1dHRlckJhckVuYWJsZWQkKSl9LGRpcmVjdGl2ZXM6W1B2LHYwLGI0LEd5dCxLeXRdLHBpcGVzOltWdl0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCB0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9W19uZ2hvc3QtJUNPTVAlXXtjb250YWluOnN0cmljdDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2hlaWdodDoxMDAlO2p1c3RpZnktY29udGVudDpzdHJldGNoO292ZXJmbG93OmhpZGRlbn0ubm90aWNlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI0NSwxNTcsLjg1KTtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZmZlYjNiO2NvbG9yOiMyMTIxMjE7ZGlzcGxheTpibG9jaztmbGV4OjAgMH10Yi1kYXNoYm9hcmQtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmbGV4OjEgMTtvdmVyZmxvdzpoaWRkZW59bmF2W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjZWJlYmViO2ZsZXg6bm9uZTt3aWR0aDozNDBweH1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICBuYXZbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICBuYXZbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6IzMwMzAzMDtib3JkZXItcmlnaHQtY29sb3I6IzU1NX1tZXRyaWNzLW1haW4tdmlld1tfbmdjb250ZW50LSVDT01QJV17ZmxleDoxIDF9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFF5dCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJtZXRyaWNzLWRhc2hib2FyZCIsdGVtcGxhdGU6J1xuICAgIDxtZXRyaWNzLXByb21vLW5vdGljZVxuICAgICAgKm5nSWY9ImlzQnV0dGVyQmFyRW5hYmxlZCQgfCBhc3luYyJcbiAgICAgIGNsYXNzPSJub3RpY2UiXG4gICAgPjwvbWV0cmljcy1wcm9tby1ub3RpY2U+XG4gICAgPHRiLWRhc2hib2FyZC1sYXlvdXQ+XG4gICAgICA8cnVucy1zZWxlY3RvciBzaWRlYmFyPjwvcnVucy1zZWxlY3Rvcj5cbiAgICAgIDxtZXRyaWNzLW1haW4tdmlldyBtYWluPjwvbWV0cmljcy1tYWluLXZpZXc+XG4gICAgPC90Yi1kYXNoYm9hcmQtbGF5b3V0PlxuICAnLHN0eWxlVXJsczpbIm1ldHJpY3NfY29udGFpbmVyLmNzcyJdLGNoYW5nZURldGVjdGlvbjpqbi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTppU31dfSksbnVsbCk7Y2xhc3MgJHl0e30keXQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fCR5dCl9LCR5dC7JtW1vZD1mbyh7dHlwZTokeXR9KSwkeXQuybVpbmo9RG4oe2ltcG9ydHM6W1tyeCx2cSxJTF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYigkeXQsW3t0eXBlOkxfLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W3YwXSxleHBvcnRzOlt2MF0saW1wb3J0czpbcngsdnEsSUxdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8oJHl0LHtkZWNsYXJhdGlvbnM6W3YwXSxpbXBvcnRzOltyeCx2cSxJTF0sZXhwb3J0czpbdjBdfSk7Y2xhc3MgdF90e310X3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHRfdCl9LHRfdC7JtW1vZD1mbyh7dHlwZTp0X3R9KSx0X3QuybVpbmo9RG4oe2ltcG9ydHM6W1tyeF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih0X3QsW3t0eXBlOkxfLGFyZ3M6W3tpbXBvcnRzOltyeF0sZGVjbGFyYXRpb25zOltaeXRdLGV4cG9ydHM6W1p5dF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byh0X3Qse2RlY2xhcmF0aW9uczpbWnl0XSxpbXBvcnRzOltyeF0sZXhwb3J0czpbWnl0XX0pO2NsYXNzIGVfdHt9ZV90Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxlX3QpfSxlX3QuybVtb2Q9Zm8oe3R5cGU6ZV90fSksZV90Lsm1aW5qPURuKHt9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGVfdCxbe3R5cGU6TF8sYXJnczpbe2V4cG9ydHM6W04yXSxkZWNsYXJhdGlvbnM6W04yXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKGVfdCx7ZGVjbGFyYXRpb25zOltOMl0sZXhwb3J0czpbTjJdfSk7Y2xhc3Mgbl90e31uX3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fG5fdCl9LG5fdC7JtW1vZD1mbyh7dHlwZTpuX3R9KSxuX3QuybVpbmo9RG4oe2ltcG9ydHM6W1tyeCxlX3RdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIobl90LFt7dHlwZTpMXyxhcmdzOlt7aW1wb3J0czpbcngsZV90XSxleHBvcnRzOltIMl0sZGVjbGFyYXRpb25zOltIMl19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhuX3Qse2RlY2xhcmF0aW9uczpbSDJdLGltcG9ydHM6W3J4LGVfdF0sZXhwb3J0czpbSDJdfSk7Y2xhc3Mgb190e31vX3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fG9fdCl9LG9fdC7JtW1vZD1mbyh7dHlwZTpvX3R9KSxvX3QuybVpbmo9RG4oe2ltcG9ydHM6W1tyeCxxMyx2cV1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihvX3QsW3t0eXBlOkxfLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W1ozXSxleHBvcnRzOltaM10saW1wb3J0czpbcngscTMsdnFdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8ob190LHtkZWNsYXJhdGlvbnM6W1ozXSxpbXBvcnRzOltyeCxxMyx2cV0sZXhwb3J0czpbWjNdfSk7Y2xhc3MgaV90e31pX3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGlfdCl9LGlfdC7JtW1vZD1mbyh7dHlwZTppX3R9KSxpX3QuybVpbmo9RG4oe2ltcG9ydHM6W1tyeF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihpX3QsW3t0eXBlOkxfLGFyZ3M6W3tpbXBvcnRzOltyeF0sZXhwb3J0czpbRTJdLGRlY2xhcmF0aW9uczpbRTJdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8oaV90LHtkZWNsYXJhdGlvbnM6W0UyXSxpbXBvcnRzOltyeF0sZXhwb3J0czpbRTJdfSk7Y2xhc3MgYV90e31hX3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGFfdCl9LGFfdC7JtW1vZD1mbyh7dHlwZTphX3R9KSxhX3QuybVpbmo9RG4oe2ltcG9ydHM6W1t3NSxyeCxuX3Qsb190LENVLElMLE1aLG5xLFRaLHZxLFhxLG4xLHIyLHUxLGszLGlfdCxGVl1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihhX3QsW3t0eXBlOkxfLGFyZ3M6W3tpbXBvcnRzOlt3NSxyeCxuX3Qsb190LENVLElMLE1aLG5xLFRaLHZxLFhxLG4xLHIyLHUxLGszLGlfdCxGVl0sZXhwb3J0czpbZzRdLGVudHJ5Q29tcG9uZW50czpbeTJdLGRlY2xhcmF0aW9uczpbYjIseTIsazIsUzIscDQsZzRdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8oYV90LHtkZWNsYXJhdGlvbnM6W2IyLHkyLGsyLFMyLHA0LGc0XSxpbXBvcnRzOlt3NSxyeCxuX3Qsb190LENVLElMLE1aLG5xLFRaLHZxLFhxLG4xLHIyLHUxLGszLGlfdCxGVl0sZXhwb3J0czpbZzRdfSk7Y2xhc3Mgcl90e31yX3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHJfdCl9LHJfdC7JtW1vZD1mbyh7dHlwZTpyX3R9KSxyX3QuybVpbmo9RG4oe2ltcG9ydHM6W1tyeCxhX3RdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIocl90LFt7dHlwZTpMXyxhcmdzOlt7aW1wb3J0czpbcngsYV90XSxleHBvcnRzOltiNF0sZGVjbGFyYXRpb25zOltoNCxiNF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhyX3Qse2RlY2xhcmF0aW9uczpbaDQsYjRdLGltcG9ydHM6W3J4LGFfdF0sZXhwb3J0czpbYjRdfSk7Y2xhc3Mgc190e31zX3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHNfdCl9LHNfdC7JtW1vZD1mbyh7dHlwZTpzX3R9KSxzX3QuybVpbmo9RG4oe30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoc190LFt7dHlwZTpMXyxhcmdzOlt7ZXhwb3J0czpbc2J0XSxkZWNsYXJhdGlvbnM6W3NidF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhzX3Qse2RlY2xhcmF0aW9uczpbc2J0XSxleHBvcnRzOltzYnRdfSk7Y2xhc3MgbF90e31sX3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGxfdCl9LGxfdC7JtW1vZD1mbyh7dHlwZTpsX3R9KSxsX3QuybVpbmo9RG4oe2ltcG9ydHM6W1tyeF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihsX3QsW3t0eXBlOkxfLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W2podF0sZXhwb3J0czpbamh0XSxpbXBvcnRzOltyeF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhsX3Qse2RlY2xhcmF0aW9uczpbamh0XSxpbXBvcnRzOltyeF0sZXhwb3J0czpbamh0XX0pO2NsYXNzIGNfdHt9Y190Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxjX3QpfSxjX3QuybVtb2Q9Zm8oe3R5cGU6Y190fSksY190Lsm1aW5qPURuKHtpbXBvcnRzOltbcngsSCQsc190LGxfdF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihjX3QsW3t0eXBlOkxfLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W2tidF0sZXhwb3J0czpba2J0XSxpbXBvcnRzOltyeCxIJCxzX3QsbF90XX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKGNfdCx7ZGVjbGFyYXRpb25zOltrYnRdLGltcG9ydHM6W3J4LEgkLHNfdCxsX3RdLGV4cG9ydHM6W2tidF19KTtjbGFzcyBkX3R7fWRfdC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8ZF90KX0sZF90Lsm1bW9kPWZvKHt0eXBlOmRfdH0pLGRfdC7JtWluaj1Ebih7aW1wb3J0czpbW3J4XV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGRfdCxbe3R5cGU6TF8sYXJnczpbe2RlY2xhcmF0aW9uczpbTDRdLGV4cG9ydHM6W0w0XSxpbXBvcnRzOltyeF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhkX3Qse2RlY2xhcmF0aW9uczpbTDRdLGltcG9ydHM6W3J4XSxleHBvcnRzOltMNF19KTtjbGFzcyBwX3R7fXBfdC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8cF90KX0scF90Lsm1bW9kPWZvKHt0eXBlOnBfdH0pLHBfdC7JtWluaj1Ebih7aW1wb3J0czpbW3J4LG5fdF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihwX3QsW3t0eXBlOkxfLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W1c0LFU0XSxleHBvcnRzOltXNF0saW1wb3J0czpbcngsbl90XX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKHBfdCx7ZGVjbGFyYXRpb25zOltXNCxVNF0saW1wb3J0czpbcngsbl90XSxleHBvcnRzOltXNF19KTtjbGFzcyBtX3R7fW1fdC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8bV90KX0sbV90Lsm1bW9kPWZvKHt0eXBlOm1fdH0pLG1fdC7JtWluaj1Ebih7aW1wb3J0czpbW3J4LHZxXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKG1fdCxbe3R5cGU6TF8sYXJnczpbe2RlY2xhcmF0aW9uczpbVmh0XSxleHBvcnRzOltWaHRdLGltcG9ydHM6W3J4LHZxXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKG1fdCx7ZGVjbGFyYXRpb25zOltWaHRdLGltcG9ydHM6W3J4LHZxXSxleHBvcnRzOltWaHRdfSk7Y2xhc3MgZl90e31mX3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGZfdCl9LGZfdC7JtW1vZD1mbyh7dHlwZTpmX3R9KSxmX3QuybVpbmo9RG4oe2ltcG9ydHM6W1tyeCxjX3QsSUwsdnEscjIscF90LGRfdCxtX3RdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoZl90LFt7dHlwZTpMXyxhcmdzOlt7ZGVjbGFyYXRpb25zOltMYnQsRmJ0XSxleHBvcnRzOltMYnRdLGltcG9ydHM6W3J4LGNfdCxJTCx2cSxyMixwX3QsZF90LG1fdF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhmX3Qse2RlY2xhcmF0aW9uczpbTGJ0LEZidF0saW1wb3J0czpbcngsY190LElMLHZxLHIyLHBfdCxkX3QsbV90XSxleHBvcnRzOltMYnRdfSk7Y2xhc3MgdV90e311X3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHVfdCl9LHVfdC7JtW1vZD1mbyh7dHlwZTp1X3R9KSx1X3QuybVpbmo9RG4oe2ltcG9ydHM6W1tyeCxJTCx2cSxyMixSSixwX3QsZF90XV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHVfdCxbe3R5cGU6TF8sYXJnczpbe2RlY2xhcmF0aW9uczpbdDYsJDRdLGV4cG9ydHM6W3Q2XSxpbXBvcnRzOltyeCxJTCx2cSxyMixSSixwX3QsZF90XX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKHVfdCx7ZGVjbGFyYXRpb25zOlt0NiwkNF0saW1wb3J0czpbcngsSUwsdnEscjIsUkoscF90LGRfdF0sZXhwb3J0czpbdDZdfSk7Y2xhc3MgZ190e31nX3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGdfdCl9LGdfdC7JtW1vZD1mbyh7dHlwZTpnX3R9KSxnX3QuybVpbmo9RG4oe2ltcG9ydHM6W1tyeCxvVixJTCx2cSxUWixYcV1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihnX3QsW3t0eXBlOkxfLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W01odCx1aHQsZWh0XSxleHBvcnRzOltNaHQsdWh0LGVodF0saW1wb3J0czpbcngsb1YsSUwsdnEsVFosWHFdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8oZ190LHtkZWNsYXJhdGlvbnM6W01odCx1aHQsZWh0XSxpbXBvcnRzOltyeCxvVixJTCx2cSxUWixYcV0sZXhwb3J0czpbTWh0LHVodCxlaHRdfSk7Y2xhc3MgaF90e31oX3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGhfdCl9LGhfdC7JtW1vZD1mbyh7dHlwZTpoX3R9KSxoX3QuybVpbmo9RG4oe2ltcG9ydHM6W1tyeCxvVixnX3QsSCRdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoaF90LFt7dHlwZTpMXyxhcmdzOlt7ZGVjbGFyYXRpb25zOltCaHRdLGV4cG9ydHM6W0JodF0saW1wb3J0czpbcngsb1YsZ190LEgkXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKGhfdCx7ZGVjbGFyYXRpb25zOltCaHRdLGltcG9ydHM6W3J4LG9WLGdfdCxIJF0sZXhwb3J0czpbQmh0XX0pO2NsYXNzIGJfdHt9Yl90Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxiX3QpfSxiX3QuybVtb2Q9Zm8oe3R5cGU6Yl90fSksYl90Lsm1aW5qPURuKHtpbXBvcnRzOltbcngsdFksSUwsbnEsVFosUFksSE5dXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoYl90LFt7dHlwZTpMXyxhcmdzOlt7ZGVjbGFyYXRpb25zOltmNixtNl0sZXhwb3J0czpbZjZdLGltcG9ydHM6W3J4LHRZLElMLG5xLFRaLFBZLEhOXSxlbnRyeUNvbXBvbmVudHM6W2Y2XX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKGJfdCx7ZGVjbGFyYXRpb25zOltmNixtNl0saW1wb3J0czpbcngsdFksSUwsbnEsVFosUFksSE5dLGV4cG9ydHM6W2Y2XX0pO2NsYXNzIHlfdHt9eV90Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx5X3QpfSx5X3QuybVtb2Q9Zm8oe3R5cGU6eV90fSkseV90Lsm1aW5qPURuKHtpbXBvcnRzOltbcngsYl90LG5fdCxzX3QsaF90LGxfdCxJTCx2cSxYcSxyMixIJCxkX3QsbV90XV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHlfdCxbe3R5cGU6TF8sYXJnczpbe2RlY2xhcmF0aW9uczpbY2J0LHJidF0sZXhwb3J0czpbY2J0XSxpbXBvcnRzOltyeCxiX3Qsbl90LHNfdCxoX3QsbF90LElMLHZxLFhxLHIyLEgkLGRfdCxtX3RdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8oeV90LHtkZWNsYXJhdGlvbnM6W2NidCxyYnRdLGltcG9ydHM6W3J4LGJfdCxuX3Qsc190LGhfdCxsX3QsSUwsdnEsWHEscjIsSCQsZF90LG1fdF0sZXhwb3J0czpbY2J0XX0pO2NsYXNzIF9fdHt9X190Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxfX3QpfSxfX3QuybVtb2Q9Zm8oe3R5cGU6X190fSksX190Lsm1aW5qPURuKHtpbXBvcnRzOltbcngsdV90LHlfdCxmX3Qsc190XV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKF9fdCxbe3R5cGU6TF8sYXJnczpbe2RlY2xhcmF0aW9uczpbQzQsR2J0LFlidF0sZXhwb3J0czpbQzQsWWJ0XSxpbXBvcnRzOltyeCx1X3QseV90LGZfdCxzX3RdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8oX190LHtkZWNsYXJhdGlvbnM6W0M0LEdidCxZYnRdLGltcG9ydHM6W3J4LHVfdCx5X3QsZl90LHNfdF0sZXhwb3J0czpbQzQsWWJ0XX0pO2NsYXNzIENfdHt9Q190Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxDX3QpfSxDX3QuybVtb2Q9Zm8oe3R5cGU6Q190fSksQ190Lsm1aW5qPURuKHtpbXBvcnRzOltbcngsUFldXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoQ190LFt7dHlwZTpMXyxhcmdzOlt7ZGVjbGFyYXRpb25zOltSeXRdLGV4cG9ydHM6W1J5dF0saW1wb3J0czpbcngsUFldfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8oQ190LHtkZWNsYXJhdGlvbnM6W1J5dF0saW1wb3J0czpbcngsUFldLGV4cG9ydHM6W1J5dF19KTtjbGFzcyBNX3R7fU1fdC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8TV90KX0sTV90Lsm1bW9kPWZvKHt0eXBlOk1fdH0pLE1fdC7JtWluaj1Ebih7aW1wb3J0czpbW3J4LENfdCxJTCx6NCxNWix2cSxQWSxSSixJTixpX3RdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoTV90LFt7dHlwZTpMXyxhcmdzOlt7ZGVjbGFyYXRpb25zOltMeXQsSHl0LEZ5dF0sZXhwb3J0czpbTHl0XSxpbXBvcnRzOltyeCxDX3QsSUwsejQsTVosdnEsUFksUkosSU4saV90XX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKE1fdCx7ZGVjbGFyYXRpb25zOltMeXQsSHl0LEZ5dF0saW1wb3J0czpbcngsQ190LElMLHo0LE1aLHZxLFBZLFJKLElOLGlfdF0sZXhwb3J0czpbTHl0XX0pO2NsYXNzIHZfdHt9dl90Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx2X3QpfSx2X3QuybVtb2Q9Zm8oe3R5cGU6dl90fSksdl90Lsm1aW5qPURuKHtpbXBvcnRzOltbX190LHJ4LG9fdCxxMyxJTCx6NCx2cSxUWixyMixNX3QsaUJdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIodl90LFt7dHlwZTpMXyxhcmdzOlt7ZGVjbGFyYXRpb25zOltpeXQsYXl0LEN5dCxNeXQsYnl0LHl5dCx4eXQsT3l0LGt5dCxTeXQsV3l0LEd5dCxPNCxQNCxkeXQscHl0XSxleHBvcnRzOltHeXRdLGltcG9ydHM6W19fdCxyeCxvX3QscTMsSUwsejQsdnEsVFoscjIsTV90LGlCXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKHZfdCx7ZGVjbGFyYXRpb25zOltpeXQsYXl0LEN5dCxNeXQsYnl0LHl5dCx4eXQsT3l0LGt5dCxTeXQsV3l0LEd5dCxPNCxQNCxkeXQscHl0XSxpbXBvcnRzOltfX3Qscngsb190LHEzLElMLHo0LHZxLFRaLHIyLE1fdCxpQl0sZXhwb3J0czpbR3l0XX0pO2NsYXNzIHhfdHt9eF90Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx4X3QpfSx4X3QuybVtb2Q9Zm8oe3R5cGU6eF90fSkseF90Lsm1aW5qPURuKHtpbXBvcnRzOltbcngsdF90LCR5dCx2X3QsdnEsTV90LHJfdF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih4X3QsW3t0eXBlOkxfLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W1F5dCxYeXQsS3l0XSxleHBvcnRzOltReXRdLGltcG9ydHM6W3J4LHRfdCwkeXQsdl90LHZxLE1fdCxyX3RdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8oeF90LHtkZWNsYXJhdGlvbnM6W1F5dCxYeXQsS3l0XSxpbXBvcnRzOltyeCx0X3QsJHl0LHZfdCx2cSxNX3Qscl90XSxleHBvcnRzOltReXRdfSk7ZnVuY3Rpb24gT190KCl7cmV0dXJuW3thY3Rpb25DcmVhdG9yOnpBLGFsZXJ0RnJvbUFjdGlvbjp0PT57Y29uc3R7d2FzUGlubmVkOmUsY2FuQ3JlYXRlTmV3UGluczpufT10O3JldHVybiBlfHxuP251bGw6e2xvY2FsaXplZE1lc3NhZ2U6Ik1heCBwaW4gbGltaXQgZXhjZWVkZWQuIFJlbW92ZSBleGlzdGluZyBwaW5zIGJlZm9yZSBhZGRpbmcgbW9yZS4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmJvYXJkL2lzc3Vlcy80MjQyIn19fV19ZnVuY3Rpb24gUF90KCl7cmV0dXJuIGJTKEN6LCh0PT4oe3NjYWxhclNtb290aGluZzp0fSkpKX1mdW5jdGlvbiB3X3QoKXtyZXR1cm4gYlMoYnosKHQ9Pih7aWdub3JlT3V0bGllcnM6dH0pKSl9ZnVuY3Rpb24ga190KCl7cmV0dXJuIGJTKGh6LCh0PT4oe3Rvb2x0aXBTb3J0U3RyaW5nOlN0cmluZyh0KX0pKSl9ZnVuY3Rpb24gU190KCl7cmV0dXJuIGJTKFR6LCh0PT4oe3RpbWVTZXJpZXNQcm9tb3Rpb25EaXNtaXNzZWQ6IXR9KSkpfWZ1bmN0aW9uIERfdCgpe3JldHVybiBiUyhOeiwodD0+KHt0aW1lU2VyaWVzU2V0dGluZ3NQYW5lT3BlbmVkOnR9KSkpfWZ1bmN0aW9uIFJfdCgpe3JldHVybiBiUyhneiwodD0+KHt0aW1lU2VyaWVzQ2FyZE1pbldpZHRoOnR9KSkpfWNsYXNzIEVfdHt9ZnVuY3Rpb24gQV90KHQpe3JldHVybiB0LnN0YXJ0c1dpdGgoImNvdW50QCIpfWZ1bmN0aW9uIFRfdCh0KXtyZXR1cm4gdC5zdGFydHNXaXRoKCJuUE1JQCIpfHx0LnN0YXJ0c1dpdGgoIm5QTUlfZGlmZkAiKX1mdW5jdGlvbiBOX3QodCl7cmV0dXJuIHQuc3RhcnRzV2l0aCgiblBNSUAiKX1mdW5jdGlvbiB6X3QodCl7cmV0dXJuIHQuc3BsaXQoIkAiLDIpWzFdfUVfdC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8RV90KX0sRV90Lsm1bW9kPWZvKHt0eXBlOkVfdH0pLEVfdC7JtWluaj1Ebih7cHJvdmlkZXJzOlt7cHJvdmlkZTpmMCx1c2VGYWN0b3J5OmcwLGRlcHM6W3UwXX0se3Byb3ZpZGU6dTAsdXNlVmFsdWU6WE59XSxpbXBvcnRzOltbcngsUlIsZFQsTVguZm9yUGx1Z2luKCRULFF5dCksSE4seF90LFRTLmZvckZlYXR1cmUoWk4sczAsZjApLGhELmZvckZlYXR1cmUoW20wXSksbVQucmVnaXN0ZXJBbGVydEFjdGlvbnMoT190KSx6Ui5kZWZpbmVHbG9iYWxTZXR0aW5nKFBfdCkselIuZGVmaW5lR2xvYmFsU2V0dGluZyh3X3QpLHpSLmRlZmluZUdsb2JhbFNldHRpbmcoa190KSx6Ui5kZWZpbmVHbG9iYWxTZXR0aW5nKFNfdCkselIuZGVmaW5lR2xvYmFsU2V0dGluZyhEX3QpLHpSLmRlZmluZUdsb2JhbFNldHRpbmcoUl90KV1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihFX3QsW3t0eXBlOkxfLGFyZ3M6W3tpbXBvcnRzOltyeCxSUixkVCxNWC5mb3JQbHVnaW4oJFQsUXl0KSxITix4X3QsVFMuZm9yRmVhdHVyZShaTixzMCxmMCksaEQuZm9yRmVhdHVyZShbbTBdKSxtVC5yZWdpc3RlckFsZXJ0QWN0aW9ucyhPX3QpLHpSLmRlZmluZUdsb2JhbFNldHRpbmcoUF90KSx6Ui5kZWZpbmVHbG9iYWxTZXR0aW5nKHdfdCkselIuZGVmaW5lR2xvYmFsU2V0dGluZyhrX3QpLHpSLmRlZmluZUdsb2JhbFNldHRpbmcoU190KSx6Ui5kZWZpbmVHbG9iYWxTZXR0aW5nKERfdCkselIuZGVmaW5lR2xvYmFsU2V0dGluZyhSX3QpXSxwcm92aWRlcnM6W3twcm92aWRlOmYwLHVzZUZhY3Rvcnk6ZzAsZGVwczpbdTBdfSx7cHJvdmlkZTp1MCx1c2VWYWx1ZTpYTn1dLGVudHJ5Q29tcG9uZW50czpbUXl0XX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKEVfdCx7aW1wb3J0czpbcngsUlIsZFQsTVgsSE4seF90LEFTLGdELG1ULHpSLHpSLHpSLHpSLHpSLHpSXX0pO3ZhciBJX3Q9e30sSF90PXt9LEZfdD17fSxMX3Q9e30sQl90PV9PJiZfTy5fX3ZhbHVlc3x8ZnVuY3Rpb24odCl7dmFyIGU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdFtTeW1ib2wuaXRlcmF0b3JdLG49MDtyZXR1cm4gZT9lLmNhbGwodCk6e25leHQ6ZnVuY3Rpb24oKXtyZXR1cm4gdCYmbj49dC5sZW5ndGgmJih0PXZvaWQgMCkse3ZhbHVlOnQmJnRbbisrXSxkb25lOiF0fX19fTtmdW5jdGlvbiBWX3QodCxlKXtyZXR1cm4gTWF0aC5mbG9vcihlKCkqdCl9ZnVuY3Rpb24gal90KHQpe2Zvcih2YXIgZT1bXSxuPTA7bjx0O24rKyllLnB1c2godm9pZCAwKTtyZXR1cm4gZX1mdW5jdGlvbiBVX3QodCxlKXtyZXR1cm4gal90KHQpLm1hcCgoZnVuY3Rpb24oKXtyZXR1cm4gZX0pKX1mdW5jdGlvbiBXX3QodCl7cmV0dXJuIFVfdCh0LDApfWZ1bmN0aW9uIEdfdCh0KXtyZXR1cm4gdC5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQrZX0pKX1PYmplY3QuZGVmaW5lUHJvcGVydHkoTF90LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxMX3QudGF1UmFuZEludD1WX3QsTF90LnRhdVJhbmQ9ZnVuY3Rpb24gWV90KHQpe3JldHVybiB0KCl9LExfdC5ub3JtPWZ1bmN0aW9uIHFfdCh0KXt2YXIgZSxuLG89MDt0cnl7Zm9yKHZhciBpPUJfdCh0KSxhPWkubmV4dCgpOyFhLmRvbmU7YT1pLm5leHQoKSl7bys9TWF0aC5wb3coYS52YWx1ZSwyKX19Y2F0Y2godCl7ZT17ZXJyb3I6dH19ZmluYWxseXt0cnl7YSYmIWEuZG9uZSYmKG49aS5yZXR1cm4pJiZuLmNhbGwoaSl9ZmluYWxseXtpZihlKXRocm93IGUuZXJyb3J9fXJldHVybiBNYXRoLnNxcnQobyl9LExfdC5lbXB0eT1qX3QsTF90LnJhbmdlPWZ1bmN0aW9uIFpfdCh0KXtyZXR1cm4gal90KHQpLm1hcCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gZX0pKX0sTF90LmZpbGxlZD1VX3QsTF90Lnplcm9zPVdfdCxMX3Qub25lcz1mdW5jdGlvbiBYX3QodCl7cmV0dXJuIFVfdCh0LDEpfSxMX3QubGluZWFyPWZ1bmN0aW9uIEtfdCh0LGUsbil7cmV0dXJuIGpfdChuKS5tYXAoKGZ1bmN0aW9uKG8saSl7cmV0dXJuIHQraSooKGUtdCkvKG4tMSkpfSkpfSxMX3Quc3VtPUdfdCxMX3QubWVhbj1mdW5jdGlvbiBKX3QodCl7cmV0dXJuIEdfdCh0KS90Lmxlbmd0aH0sTF90Lm1heD1mdW5jdGlvbiBRX3QodCl7Zm9yKHZhciBlPTAsbj0wO248dC5sZW5ndGg7bisrKWU9dFtuXT5lP3Rbbl06ZTtyZXR1cm4gZX0sTF90Lm1heDJkPWZ1bmN0aW9uICRfdCh0KXtmb3IodmFyIGU9MCxuPTA7bjx0Lmxlbmd0aDtuKyspZm9yKHZhciBvPTA7bzx0W25dLmxlbmd0aDtvKyspZT10W25dW29dPmU/dFtuXVtvXTplO3JldHVybiBlfSxMX3QucmVqZWN0aW9uU2FtcGxlPWZ1bmN0aW9uIHRDdCh0LGUsbil7Zm9yKHZhciBvPVdfdCh0KSxpPTA7aTx0O2krKylmb3IodmFyIGE9ITA7YTspe2Zvcih2YXIgcj1WX3QoZSxuKSxzPSExLGw9MDtsPGk7bCsrKWlmKHI9PT1vW2xdKXtzPSEwO2JyZWFrfXN8fChhPSExKSxvW2ldPXJ9cmV0dXJuIG99LExfdC5yZXNoYXBlMmQ9ZnVuY3Rpb24gZUN0KHQsZSxuKXt2YXIgbz1bXSxpPTA7aWYodC5sZW5ndGghPT1lKm4pdGhyb3cgbmV3IEVycm9yKCJBcnJheSBkaW1lbnNpb25zIG11c3QgbWF0Y2ggaW5wdXQgbGVuZ3RoLiIpO2Zvcih2YXIgYT0wO2E8ZTthKyspe2Zvcih2YXIgcj1bXSxzPTA7czxuO3MrKylyLnB1c2godFtpXSksaSs9MTtvLnB1c2gocil9cmV0dXJuIG99O3ZhciBuQ3Q9X08mJl9PLl9faW1wb3J0U3Rhcnx8ZnVuY3Rpb24odCl7aWYodCYmdC5fX2VzTW9kdWxlKXJldHVybiB0O3ZhciBlPXt9O2lmKG51bGwhPXQpZm9yKHZhciBuIGluIHQpT2JqZWN0Lmhhc093blByb3BlcnR5LmNhbGwodCxuKSYmKGVbbl09dFtuXSk7cmV0dXJuIGUuZGVmYXVsdD10LGV9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShGX3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBvQ3Q9bkN0KExfdCk7ZnVuY3Rpb24gaUN0KHQsZSl7dmFyIG49ZnVuY3Rpb24obil7cmV0dXJuIG9DdC5lbXB0eSh0KS5tYXAoKGZ1bmN0aW9uKCl7cmV0dXJuIG9DdC5maWxsZWQoZSxuKX0pKX0sbz1bXTtyZXR1cm4gby5wdXNoKG4oLTEpKSxvLnB1c2gobigxLzApKSxvLnB1c2gobigwKSksb31mdW5jdGlvbiBhQ3QodCxlLG4sbyxpKXtlPU1hdGguZmxvb3IoZSk7dmFyIGE9dFswXVtlXTtpZihuPj10WzFdW2VdWzBdKXJldHVybiAwO2Zvcih2YXIgcj0wO3I8YS5sZW5ndGg7cisrKWlmKG89PT1hW3JdKXJldHVybiAwO3JldHVybiByQ3QodCxlLG4sbyxpKX1mdW5jdGlvbiByQ3QodCxlLG4sbyxpKXt2YXIgYT10WzBdW2VdLHI9dFsxXVtlXSxzPXRbMl1bZV07aWYobj49clswXSlyZXR1cm4gMDtyWzBdPW4sYVswXT1vLHNbMF09aTtmb3IodmFyIGw9MCxjPTA7Oyl7dmFyIGQ9MipsKzEscD1kKzEsbT10WzBdWzBdLmxlbmd0aDtpZihkPj1tKWJyZWFrO2lmKHA+PW0pe2lmKCEocltkXT5uKSlicmVhaztjPWR9ZWxzZSBpZihyW2RdPj1yW3BdKXtpZighKG48cltkXSkpYnJlYWs7Yz1kfWVsc2V7aWYoIShuPHJbcF0pKWJyZWFrO2M9cH1yW2xdPXJbY10sYVtsXT1hW2NdLHNbbF09c1tjXSxsPWN9cmV0dXJuIHJbbF09bixhW2xdPW8sc1tsXT1pLDF9ZnVuY3Rpb24gc0N0KHQsZSxuLG8pe2Zvcig7MipvKzE8bjspe3ZhciBpPTIqbysxLGE9aSsxLHI9bztpZih0W3JdPHRbaV0mJihyPWkpLGE8biYmdFtyXTx0W2FdJiYocj1hKSxyPT09bylicmVhazt2YXIgcz10W29dO3Rbb109dFtyXSx0W3JdPXM7dmFyIGw9ZVtvXTtlW29dPWVbcl0sZVtyXT1sLG89cn19Rl90Lm1ha2VIZWFwPWlDdCxGX3QucmVqZWN0aW9uU2FtcGxlPWZ1bmN0aW9uIGxDdCh0LGUsbil7Zm9yKHZhciBvPW9DdC56ZXJvcyh0KSxpPTA7aTx0O2krKyl7Zm9yKHZhciBhPSEwLHI9MDthOyl7cj1vQ3QudGF1UmFuZEludChlLG4pO2Zvcih2YXIgcz0hMSxsPTA7bDxpO2wrKylpZihyPT09b1tsXSl7cz0hMDticmVha31zfHwoYT0hMSl9b1tpXT1yfXJldHVybiBvfSxGX3QuaGVhcFB1c2g9YUN0LEZfdC51bmNoZWNrZWRIZWFwUHVzaD1yQ3QsRl90LmJ1aWxkQ2FuZGlkYXRlcz1mdW5jdGlvbiBjQ3QodCxlLG4sbyxpKXtmb3IodmFyIGE9aUN0KGUsbykscj0wO3I8ZTtyKyspZm9yKHZhciBzPTA7czxuO3MrKylpZighKHRbMF1bcl1bc108MCkpe3ZhciBsPXRbMF1bcl1bc10sYz10WzJdW3JdW3NdLGQ9b0N0LnRhdVJhbmQoaSk7YUN0KGEscixkLGwsYyksYUN0KGEsbCxkLHIsYyksdFsyXVtyXVtzXT0wfXJldHVybiBhfSxGX3QuZGVoZWFwU29ydD1mdW5jdGlvbiBkQ3QodCl7Zm9yKHZhciBlPXRbMF0sbj10WzFdLG89MDtvPGUubGVuZ3RoO28rKylmb3IodmFyIGk9ZVtvXSxhPW5bb10scj0wO3I8aS5sZW5ndGgtMTtyKyspe3ZhciBzPWkubGVuZ3RoLXItMSxsPWEubGVuZ3RoLXItMSxjPWlbMF07aVswXT1pW3NdLGlbc109Yzt2YXIgZD1hWzBdO2FbMF09YVtsXSxhW2xdPWQsc0N0KGEsaSxsLDApfXJldHVybntpbmRpY2VzOmUsd2VpZ2h0czpufX0sRl90LnNtYWxsZXN0RmxhZ2dlZD1mdW5jdGlvbiBwQ3QodCxlKXtmb3IodmFyIG49dFswXVtlXSxvPXRbMV1bZV0saT10WzJdW2VdLGE9MS8wLHI9LTEscz0wO3M+bi5sZW5ndGg7cysrKTE9PT1pW3NdJiZvW3NdPGEmJihhPW9bc10scj1zKTtyZXR1cm4gcj49MD8oaVtyXT0wLE1hdGguZmxvb3IobltyXSkpOi0xfTt2YXIgbUN0LGZDdD17fSx1Q3Q9X08mJl9PLl9fcmVhZHx8ZnVuY3Rpb24odCxlKXt2YXIgbj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0W1N5bWJvbC5pdGVyYXRvcl07aWYoIW4pcmV0dXJuIHQ7dmFyIG8saSxhPW4uY2FsbCh0KSxyPVtdO3RyeXtmb3IoOyh2b2lkIDA9PT1lfHxlLS0gPjApJiYhKG89YS5uZXh0KCkpLmRvbmU7KXIucHVzaChvLnZhbHVlKX1jYXRjaCh0KXtpPXtlcnJvcjp0fX1maW5hbGx5e3RyeXtvJiYhby5kb25lJiYobj1hLnJldHVybikmJm4uY2FsbChhKX1maW5hbGx5e2lmKGkpdGhyb3cgaS5lcnJvcn19cmV0dXJuIHJ9LGdDdD1fTyYmX08uX192YWx1ZXN8fGZ1bmN0aW9uKHQpe3ZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnRbU3ltYm9sLml0ZXJhdG9yXSxuPTA7cmV0dXJuIGU/ZS5jYWxsKHQpOntuZXh0OmZ1bmN0aW9uKCl7cmV0dXJuIHQmJm4+PXQubGVuZ3RoJiYodD12b2lkIDApLHt2YWx1ZTp0JiZ0W24rK10sZG9uZTohdH19fX0saEN0PV9PJiZfTy5fX2ltcG9ydFN0YXJ8fGZ1bmN0aW9uKHQpe2lmKHQmJnQuX19lc01vZHVsZSlyZXR1cm4gdDt2YXIgZT17fTtpZihudWxsIT10KWZvcih2YXIgbiBpbiB0KU9iamVjdC5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbikmJihlW25dPXRbbl0pO3JldHVybiBlLmRlZmF1bHQ9dCxlfTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZkN0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgYkN0PWhDdChMX3QpLHlDdD0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuLG8pe2lmKHRoaXMuZW50cmllcz1uZXcgTWFwLHRoaXMublJvd3M9MCx0aGlzLm5Db2xzPTAsdC5sZW5ndGghPT1lLmxlbmd0aHx8dC5sZW5ndGghPT1uLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoInJvd3MsIGNvbHMgYW5kIHZhbHVlcyBhcnJheXMgbXVzdCBhbGwgaGF2ZSB0aGUgc2FtZSBsZW5ndGgiKTt0aGlzLm5Sb3dzPW9bMF0sdGhpcy5uQ29scz1vWzFdO2Zvcih2YXIgaT0wO2k8bi5sZW5ndGg7aSsrKXt2YXIgYT10W2ldLHI9ZVtpXTt0aGlzLmNoZWNrRGltcyhhLHIpO3ZhciBzPXRoaXMubWFrZUtleShhLHIpO3RoaXMuZW50cmllcy5zZXQocyx7dmFsdWU6bltpXSxyb3c6YSxjb2w6cn0pfX1yZXR1cm4gdC5wcm90b3R5cGUubWFrZUtleT1mdW5jdGlvbih0LGUpe3JldHVybiB0KyI6IitlfSx0LnByb3RvdHlwZS5jaGVja0RpbXM9ZnVuY3Rpb24odCxlKXtpZighKHQ8dGhpcy5uUm93cyYmZTx0aGlzLm5Db2xzKSl0aHJvdyBuZXcgRXJyb3IoInJvdyBhbmQvb3IgY29sIHNwZWNpZmllZCBvdXRzaWRlIG9mIG1hdHJpeCBkaW1lbnNpb25zIil9LHQucHJvdG90eXBlLnNldD1mdW5jdGlvbih0LGUsbil7dGhpcy5jaGVja0RpbXModCxlKTt2YXIgbz10aGlzLm1ha2VLZXkodCxlKTt0aGlzLmVudHJpZXMuaGFzKG8pP3RoaXMuZW50cmllcy5nZXQobykudmFsdWU9bjp0aGlzLmVudHJpZXMuc2V0KG8se3ZhbHVlOm4scm93OnQsY29sOmV9KX0sdC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQsZSxuKXt2b2lkIDA9PT1uJiYobj0wKSx0aGlzLmNoZWNrRGltcyh0LGUpO3ZhciBvPXRoaXMubWFrZUtleSh0LGUpO3JldHVybiB0aGlzLmVudHJpZXMuaGFzKG8pP3RoaXMuZW50cmllcy5nZXQobykudmFsdWU6bn0sdC5wcm90b3R5cGUuZ2V0QWxsPWZ1bmN0aW9uKHQpe3ZvaWQgMD09PXQmJih0PSEwKTt2YXIgZT1bXTtyZXR1cm4gdGhpcy5lbnRyaWVzLmZvckVhY2goKGZ1bmN0aW9uKHQpe2UucHVzaCh0KX0pKSx0JiZlLnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQucm93PT09ZS5yb3c/dC5jb2wtZS5jb2w6dC5yb3ctZS5yb3d9KSksZX0sdC5wcm90b3R5cGUuZ2V0RGltcz1mdW5jdGlvbigpe3JldHVyblt0aGlzLm5Sb3dzLHRoaXMubkNvbHNdfSx0LnByb3RvdHlwZS5nZXRSb3dzPWZ1bmN0aW9uKCl7cmV0dXJuIEFycmF5LmZyb20odGhpcy5lbnRyaWVzLChmdW5jdGlvbih0KXt2YXIgZT11Q3QodCwyKTtyZXR1cm4gZVsxXS5yb3d9KSl9LHQucHJvdG90eXBlLmdldENvbHM9ZnVuY3Rpb24oKXtyZXR1cm4gQXJyYXkuZnJvbSh0aGlzLmVudHJpZXMsKGZ1bmN0aW9uKHQpe3ZhciBlPXVDdCh0LDIpO3JldHVybiBlWzFdLmNvbH0pKX0sdC5wcm90b3R5cGUuZ2V0VmFsdWVzPWZ1bmN0aW9uKCl7cmV0dXJuIEFycmF5LmZyb20odGhpcy5lbnRyaWVzLChmdW5jdGlvbih0KXt2YXIgZT11Q3QodCwyKTtyZXR1cm4gZVsxXS52YWx1ZX0pKX0sdC5wcm90b3R5cGUuZm9yRWFjaD1mdW5jdGlvbih0KXt0aGlzLmVudHJpZXMuZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIHQoZS52YWx1ZSxlLnJvdyxlLmNvbCl9KSl9LHQucHJvdG90eXBlLm1hcD1mdW5jdGlvbihlKXt2YXIgbj1bXTt0aGlzLmVudHJpZXMuZm9yRWFjaCgoZnVuY3Rpb24odCl7bi5wdXNoKGUodC52YWx1ZSx0LnJvdyx0LmNvbCkpfSkpO3ZhciBvPVt0aGlzLm5Sb3dzLHRoaXMubkNvbHNdO3JldHVybiBuZXcgdCh0aGlzLmdldFJvd3MoKSx0aGlzLmdldENvbHMoKSxuLG8pfSx0LnByb3RvdHlwZS50b0FycmF5PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPWJDdC5lbXB0eSh0aGlzLm5Sb3dzKS5tYXAoKGZ1bmN0aW9uKCl7cmV0dXJuIGJDdC56ZXJvcyh0Lm5Db2xzKX0pKTtyZXR1cm4gdGhpcy5lbnRyaWVzLmZvckVhY2goKGZ1bmN0aW9uKHQpe2VbdC5yb3ddW3QuY29sXT10LnZhbHVlfSkpLGV9LHR9KSgpO2ZDdC5TcGFyc2VNYXRyaXg9eUN0LGZDdC50cmFuc3Bvc2U9ZnVuY3Rpb24gX0N0KHQpe3ZhciBlPVtdLG49W10sbz1bXTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0LGksYSl7ZS5wdXNoKGkpLG4ucHVzaChhKSxvLnB1c2godCl9KSksbmV3IHlDdChuLGUsbyxbdC5uQ29scyx0Lm5Sb3dzXSl9LGZDdC5pZGVudGl0eT1mdW5jdGlvbiBDQ3QodCl7Zm9yKHZhciBlPXVDdCh0LDEpWzBdLG49bmV3IHlDdChbXSxbXSxbXSx0KSxvPTA7bzxlO28rKyluLnNldChvLG8sMSk7cmV0dXJuIG59LGZDdC5wYWlyd2lzZU11bHRpcGx5PWZ1bmN0aW9uIE1DdCh0LGUpe3JldHVybiBEQ3QodCxlLChmdW5jdGlvbih0LGUpe3JldHVybiB0KmV9KSl9LGZDdC5hZGQ9ZnVuY3Rpb24gdkN0KHQsZSl7cmV0dXJuIERDdCh0LGUsKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQrZX0pKX0sZkN0LnN1YnRyYWN0PWZ1bmN0aW9uIHhDdCh0LGUpe3JldHVybiBEQ3QodCxlLChmdW5jdGlvbih0LGUpe3JldHVybiB0LWV9KSl9LGZDdC5tYXhpbXVtPWZ1bmN0aW9uIE9DdCh0LGUpe3JldHVybiBEQ3QodCxlLChmdW5jdGlvbih0LGUpe3JldHVybiB0PmU/dDplfSkpfSxmQ3QubXVsdGlwbHlTY2FsYXI9ZnVuY3Rpb24gUEN0KHQsZSl7cmV0dXJuIHQubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdCplfSkpfSxmQ3QuZWxpbWluYXRlWmVyb3M9ZnVuY3Rpb24gd0N0KHQpe2Zvcih2YXIgZT1uZXcgU2V0LG49dC5nZXRWYWx1ZXMoKSxvPXQuZ2V0Um93cygpLGk9dC5nZXRDb2xzKCksYT0wO2E8bi5sZW5ndGg7YSsrKTA9PT1uW2FdJiZlLmFkZChhKTt2YXIgcj1mdW5jdGlvbih0LG4pe3JldHVybiFlLmhhcyhuKX0scz1uLmZpbHRlcihyKSxsPW8uZmlsdGVyKHIpLGM9aS5maWx0ZXIocik7cmV0dXJuIG5ldyB5Q3QobCxjLHMsdC5nZXREaW1zKCkpfSxmQ3Qubm9ybWFsaXplPWZ1bmN0aW9uIGtDdCh0LGUpe3ZhciBuLG87dm9pZCAwPT09ZSYmKGU9ImwyIik7dmFyIGk9U0N0W2VdLGE9bmV3IE1hcDt0LmZvckVhY2goKGZ1bmN0aW9uKHQsZSxuKXt2YXIgbz1hLmdldChlKXx8W107by5wdXNoKG4pLGEuc2V0KGUsbyl9KSk7dmFyIHI9bmV3IHlDdChbXSxbXSxbXSx0LmdldERpbXMoKSkscz1mdW5jdGlvbihlKXtmb3IodmFyIG49YS5nZXQoZSkuc29ydCgpLG89bi5tYXAoKGZ1bmN0aW9uKG4pe3JldHVybiB0LmdldChlLG4pfSkpLHM9aShvKSxsPTA7bDxzLmxlbmd0aDtsKyspci5zZXQoZSxuW2xdLHNbbF0pfTt0cnl7Zm9yKHZhciBsPWdDdChhLmtleXMoKSksYz1sLm5leHQoKTshYy5kb25lO2M9bC5uZXh0KCkpe3MoYy52YWx1ZSl9fWNhdGNoKHQpe249e2Vycm9yOnR9fWZpbmFsbHl7dHJ5e2MmJiFjLmRvbmUmJihvPWwucmV0dXJuKSYmby5jYWxsKGwpfWZpbmFsbHl7aWYobil0aHJvdyBuLmVycm9yfX1yZXR1cm4gcn07dmFyIFNDdD0oKG1DdD17fSkubWF4PWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0tMS8wLG49MDtuPHQubGVuZ3RoO24rKyllPXRbbl0+ZT90W25dOmU7cmV0dXJuIHQubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC9lfSkpfSxtQ3QubDE9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTAsbj0wO248dC5sZW5ndGg7bisrKWUrPXRbbl07cmV0dXJuIHQubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC9lfSkpfSxtQ3QubDI9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTAsbj0wO248dC5sZW5ndGg7bisrKWUrPU1hdGgucG93KHRbbl0sMik7cmV0dXJuIHQubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5zcXJ0KE1hdGgucG93KHQsMikvZSl9KSl9LG1DdCk7ZnVuY3Rpb24gREN0KHQsZSxuKXtmb3IodmFyIG89bmV3IFNldCxpPVtdLGE9W10scj1bXSxzPWZ1bmN0aW9uKG8scyl7aS5wdXNoKG8pLGEucHVzaChzKTt2YXIgbD1uKHQuZ2V0KG8scyksZS5nZXQobyxzKSk7ci5wdXNoKGwpfSxsPXQuZ2V0VmFsdWVzKCksYz10LmdldFJvd3MoKSxkPXQuZ2V0Q29scygpLHA9MDtwPGwubGVuZ3RoO3ArKyl7by5hZGQoKGc9Y1twXSkrIjoiKyhoPWRbcF0pKSxzKGcsaCl9dmFyIG09ZS5nZXRWYWx1ZXMoKSxmPWUuZ2V0Um93cygpLHU9ZS5nZXRDb2xzKCk7Zm9yKHA9MDtwPG0ubGVuZ3RoO3ArKyl7dmFyIGcsaDtvLmhhcygoZz1mW3BdKSsiOiIrKGg9dVtwXSkpfHxzKGcsaCl9cmV0dXJuIG5ldyB5Q3QoaSxhLHIsW3QublJvd3MsdC5uQ29sc10pfWZDdC5nZXRDU1I9ZnVuY3Rpb24gUkN0KHQpe3ZhciBlPVtdO3QuZm9yRWFjaCgoZnVuY3Rpb24odCxuLG8pe2UucHVzaCh7dmFsdWU6dCxyb3c6bixjb2w6b30pfSkpLGUuc29ydCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5yb3c9PT1lLnJvdz90LmNvbC1lLmNvbDp0LnJvdy1lLnJvd30pKTtmb3IodmFyIG49W10sbz1bXSxpPVtdLGE9LTEscj0wO3I8ZS5sZW5ndGg7cisrKXt2YXIgcz1lW3JdLGw9cy5yb3csYz1zLmNvbCxkPXMudmFsdWU7bCE9PWEmJihhPWwsaS5wdXNoKHIpKSxuLnB1c2goYyksby5wdXNoKGQpfXJldHVybntpbmRpY2VzOm4sdmFsdWVzOm8saW5kcHRyOml9fTt2YXIgRUN0PXt9LEFDdD17fSxUQ3Q9X08mJl9PLl9fcmVhZHx8ZnVuY3Rpb24odCxlKXt2YXIgbj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0W1N5bWJvbC5pdGVyYXRvcl07aWYoIW4pcmV0dXJuIHQ7dmFyIG8saSxhPW4uY2FsbCh0KSxyPVtdO3RyeXtmb3IoOyh2b2lkIDA9PT1lfHxlLS0gPjApJiYhKG89YS5uZXh0KCkpLmRvbmU7KXIucHVzaChvLnZhbHVlKX1jYXRjaCh0KXtpPXtlcnJvcjp0fX1maW5hbGx5e3RyeXtvJiYhby5kb25lJiYobj1hLnJldHVybikmJm4uY2FsbChhKX1maW5hbGx5e2lmKGkpdGhyb3cgaS5lcnJvcn19cmV0dXJuIHJ9LE5DdD1fTyYmX08uX19zcHJlYWR8fGZ1bmN0aW9uKCl7Zm9yKHZhciB0PVtdLGU9MDtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXQ9dC5jb25jYXQoVEN0KGFyZ3VtZW50c1tlXSkpO3JldHVybiB0fSx6Q3Q9X08mJl9PLl9fdmFsdWVzfHxmdW5jdGlvbih0KXt2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0W1N5bWJvbC5pdGVyYXRvcl0sbj0wO3JldHVybiBlP2UuY2FsbCh0KTp7bmV4dDpmdW5jdGlvbigpe3JldHVybiB0JiZuPj10Lmxlbmd0aCYmKHQ9dm9pZCAwKSx7dmFsdWU6dCYmdFtuKytdLGRvbmU6IXR9fX19LElDdD1fTyYmX08uX19pbXBvcnRTdGFyfHxmdW5jdGlvbih0KXtpZih0JiZ0Ll9fZXNNb2R1bGUpcmV0dXJuIHQ7dmFyIGU9e307aWYobnVsbCE9dClmb3IodmFyIG4gaW4gdClPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pJiYoZVtuXT10W25dKTtyZXR1cm4gZS5kZWZhdWx0PXQsZX07T2JqZWN0LmRlZmluZVByb3BlcnR5KEFDdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIEhDdD1JQ3QoTF90KSxGQ3Q9ZnVuY3Rpb24gRkN0KHQsZSxuLG8pe3RoaXMuaHlwZXJwbGFuZXM9dCx0aGlzLm9mZnNldHM9ZSx0aGlzLmNoaWxkcmVuPW4sdGhpcy5pbmRpY2VzPW99O2Z1bmN0aW9uIExDdCh0LGUsbixvLGkpe2lmKHZvaWQgMD09PW4mJihuPTMwKSxlLmxlbmd0aD5uKXt2YXIgYT0oZnVuY3Rpb24gcih0LGUsbil7Zm9yKHZhciBvPXRbMF0ubGVuZ3RoLGk9SEN0LnRhdVJhbmRJbnQoZS5sZW5ndGgsbiksYT1IQ3QudGF1UmFuZEludChlLmxlbmd0aCxuKSxyPWVbaV0scz1lW2E9KGErPWk9PT1hPzE6MCklZS5sZW5ndGhdLGw9MCxjPUhDdC56ZXJvcyhvKSxkPTA7ZDxjLmxlbmd0aDtkKyspY1tkXT10W3JdW2RdLXRbc11bZF0sbC09Y1tkXSoodFtyXVtkXSt0W3NdW2RdKS8yO3ZhciBwPTAsbT0wLGY9SEN0Lnplcm9zKGUubGVuZ3RoKTtmb3IoZD0wO2Q8ZS5sZW5ndGg7ZCsrKXtmb3IodmFyIHU9bCxnPTA7ZzxvO2crKyl1Kz1jW2ddKnRbZVtkXV1bZ107MD09PXU/KGZbZF09SEN0LnRhdVJhbmRJbnQoMixuKSwwPT09ZltkXT9wKz0xOm0rPTEpOnU+MD8oZltkXT0wLHArPTEpOihmW2RdPTEsbSs9MSl9dmFyIGg9SEN0Lnplcm9zKHApLGI9SEN0Lnplcm9zKG0pO3A9MCxtPTA7Zm9yKGQ9MDtkPGYubGVuZ3RoO2QrKykwPT09ZltkXT8oaFtwXT1lW2RdLHArPTEpOihiW21dPWVbZF0sbSs9MSk7cmV0dXJue2luZGljZXNMZWZ0OmgsaW5kaWNlc1JpZ2h0OmIsaHlwZXJwbGFuZTpjLG9mZnNldDpsfX0pKHQsZSxpKSxzPWEuaW5kaWNlc1JpZ2h0LGw9YS5oeXBlcnBsYW5lLGM9YS5vZmZzZXQ7cmV0dXJue2xlZnRDaGlsZDpMQ3QodCxhLmluZGljZXNMZWZ0LG4sbysxLGkpLHJpZ2h0Q2hpbGQ6TEN0KHQscyxuLG8rMSxpKSxpc0xlYWY6ITEsaHlwZXJwbGFuZTpsLG9mZnNldDpjfX1yZXR1cm57aW5kaWNlczplLGlzTGVhZjohMH19ZnVuY3Rpb24gQkN0KHQsZSxuLG8saSxhLHIpe3ZhciBzO2lmKHQuaXNMZWFmKXJldHVybiBvW2FdWzBdPS1yLChzPWlbcl0pLnNwbGljZS5hcHBseShzLE5DdChbMCx0LmluZGljZXMubGVuZ3RoXSx0LmluZGljZXMpKSx7bm9kZU51bTphLGxlYWZOdW06cis9MX07ZVthXT10Lmh5cGVycGxhbmUsblthXT10Lm9mZnNldCxvW2FdWzBdPWErMTt2YXIgbD1hLGM9QkN0KHQubGVmdENoaWxkLGUsbixvLGksYSsxLHIpO3JldHVybiByPWMubGVhZk51bSxvW2xdWzFdPShhPWMubm9kZU51bSkrMSx7bm9kZU51bTooYz1CQ3QodC5yaWdodENoaWxkLGUsbixvLGksYSsxLHIpKS5ub2RlTnVtLGxlYWZOdW06Yy5sZWFmTnVtfX1mdW5jdGlvbiBWQ3QodCl7cmV0dXJuIHQuaXNMZWFmPzE6MStWQ3QodC5sZWZ0Q2hpbGQpK1ZDdCh0LnJpZ2h0Q2hpbGQpfWZ1bmN0aW9uIGpDdCh0KXtyZXR1cm4gdC5pc0xlYWY/MTpqQ3QodC5sZWZ0Q2hpbGQpK2pDdCh0LnJpZ2h0Q2hpbGQpfWZ1bmN0aW9uIFVDdCh0LGUsbixvKXtmb3IodmFyIGk9ZSxhPTA7YTxuLmxlbmd0aDthKyspaSs9dFthXSpuW2FdO3JldHVybiAwPT09aT9IQ3QudGF1UmFuZEludCgyLG8pOmk+MD8wOjF9QUN0LkZsYXRUcmVlPUZDdCxBQ3QubWFrZUZvcmVzdD1mdW5jdGlvbiBXQ3QodCxlLG4sbyl7dmFyIGk9TWF0aC5tYXgoMTAsZSk7cmV0dXJuIEhDdC5yYW5nZShuKS5tYXAoKGZ1bmN0aW9uKGUsbil7cmV0dXJuKGZ1bmN0aW9uIGEodCxlLG4sbyl7dm9pZCAwPT09ZSYmKGU9MzApO3ZhciBpPUhDdC5yYW5nZSh0Lmxlbmd0aCk7cmV0dXJuIExDdCh0LGksZSxuLG8pfSkodCxpLG4sbyl9KSkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4oZnVuY3Rpb24gZSh0LG4pe3ZhciBvPVZDdCh0KSxpPWpDdCh0KSxhPUhDdC5yYW5nZShvKS5tYXAoKGZ1bmN0aW9uKCl7cmV0dXJuIEhDdC56ZXJvcyh0Lmh5cGVycGxhbmU/dC5oeXBlcnBsYW5lLmxlbmd0aDowKX0pKSxyPUhDdC56ZXJvcyhvKSxzPUhDdC5yYW5nZShvKS5tYXAoKGZ1bmN0aW9uKCl7cmV0dXJuWy0xLC0xXX0pKSxsPUhDdC5yYW5nZShpKS5tYXAoKGZ1bmN0aW9uKCl7cmV0dXJuIEhDdC5yYW5nZShuKS5tYXAoKGZ1bmN0aW9uKCl7cmV0dXJuLTF9KSl9KSk7cmV0dXJuIEJDdCh0LGEscixzLGwsMCwwKSxuZXcgRkN0KGEscixzLGwpfSkodCxpKX0pKX0sQUN0Lm1ha2VMZWFmQXJyYXk9ZnVuY3Rpb24gR0N0KHQpe3ZhciBlLG47aWYodC5sZW5ndGg+MCl7dmFyIG89W107dHJ5e2Zvcih2YXIgaT16Q3QodCksYT1pLm5leHQoKTshYS5kb25lO2E9aS5uZXh0KCkpe28ucHVzaC5hcHBseShvLE5DdChhLnZhbHVlLmluZGljZXMpKX19Y2F0Y2godCl7ZT17ZXJyb3I6dH19ZmluYWxseXt0cnl7YSYmIWEuZG9uZSYmKG49aS5yZXR1cm4pJiZuLmNhbGwoaSl9ZmluYWxseXtpZihlKXRocm93IGUuZXJyb3J9fXJldHVybiBvfXJldHVybltbLTFdXX0sQUN0LnNlYXJjaEZsYXRUcmVlPWZ1bmN0aW9uIFlDdCh0LGUsbil7Zm9yKHZhciBvPTA7ZS5jaGlsZHJlbltvXVswXT4wOyl7bz0wPT09VUN0KGUuaHlwZXJwbGFuZXNbb10sZS5vZmZzZXRzW29dLHQsbik/ZS5jaGlsZHJlbltvXVswXTplLmNoaWxkcmVuW29dWzFdfXJldHVybiBlLmluZGljZXNbLTEqZS5jaGlsZHJlbltvXVswXV19O3ZhciBxQ3Q9X08mJl9PLl9fdmFsdWVzfHxmdW5jdGlvbih0KXt2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0W1N5bWJvbC5pdGVyYXRvcl0sbj0wO3JldHVybiBlP2UuY2FsbCh0KTp7bmV4dDpmdW5jdGlvbigpe3JldHVybiB0JiZuPj10Lmxlbmd0aCYmKHQ9dm9pZCAwKSx7dmFsdWU6dCYmdFtuKytdLGRvbmU6IXR9fX19LFpDdD1fTyYmX08uX19pbXBvcnRTdGFyfHxmdW5jdGlvbih0KXtpZih0JiZ0Ll9fZXNNb2R1bGUpcmV0dXJuIHQ7dmFyIGU9e307aWYobnVsbCE9dClmb3IodmFyIG4gaW4gdClPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pJiYoZVtuXT10W25dKTtyZXR1cm4gZS5kZWZhdWx0PXQsZX07T2JqZWN0LmRlZmluZVByb3BlcnR5KEVDdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIFhDdD1aQ3QoRl90KSxLQ3Q9WkN0KGZDdCksSkN0PVpDdChBQ3QpLFFDdD1aQ3QoTF90KTtFQ3QubWFrZU5ORGVzY2VudD1mdW5jdGlvbiAkQ3QodCxlKXtyZXR1cm4gZnVuY3Rpb24gbihvLGksYSxyLHMsbCxjLGQpe3ZvaWQgMD09PXImJihyPTEwKSx2b2lkIDA9PT1zJiYocz01MCksdm9pZCAwPT09bCYmKGw9LjAwMSksdm9pZCAwPT09YyYmKGM9LjUpLHZvaWQgMD09PWQmJihkPSEwKTtmb3IodmFyIHA9by5sZW5ndGgsbT1YQ3QubWFrZUhlYXAoby5sZW5ndGgsYSksZj0wO2Y8by5sZW5ndGg7ZisrKWZvcih2YXIgdT1YQ3QucmVqZWN0aW9uU2FtcGxlKGEsby5sZW5ndGgsZSksZz0wO2c8dS5sZW5ndGg7ZysrKXt2YXIgaD10KG9bZl0sb1t1W2ddXSk7WEN0LmhlYXBQdXNoKG0sZixoLHVbZ10sMSksWEN0LmhlYXBQdXNoKG0sdVtnXSxoLGYsMSl9aWYoZClmb3IodmFyIGI9MDtiPGkubGVuZ3RoO2IrKylmb3IoZj0wO2Y8aVtiXS5sZW5ndGgmJiEoaVtiXVtmXTwwKTtmKyspZm9yKGc9ZisxO2c8aVtiXS5sZW5ndGgmJiEoaVtiXVtnXTwwKTtnKyspe2g9dChvW2lbYl1bZl1dLG9baVtiXVtnXV0pO1hDdC5oZWFwUHVzaChtLGlbYl1bZl0saCxpW2JdW2ddLDEpLFhDdC5oZWFwUHVzaChtLGlbYl1bZ10saCxpW2JdW2ZdLDEpfWZvcihiPTA7YjxyO2IrKyl7dmFyIHk9WEN0LmJ1aWxkQ2FuZGlkYXRlcyhtLHAsYSxzLGUpLF89MDtmb3IoZj0wO2Y8cDtmKyspZm9yKGc9MDtnPHM7ZysrKXt2YXIgQz1NYXRoLmZsb29yKHlbMF1bZl1bZ10pO2lmKCEoQzwwfHxRQ3QudGF1UmFuZChlKTxjKSlmb3IodmFyIE09MDtNPHM7TSsrKXt2YXIgdj1NYXRoLmZsb29yKHlbMF1bZl1bTV0pO2lmKCEodjwwfHwheVsyXVtmXVtnXSYmIXlbMl1bZl1bTV0pKXtoPXQob1tDXSxvW3ZdKTtfKz1YQ3QuaGVhcFB1c2gobSxDLGgsdiwxKSxfKz1YQ3QuaGVhcFB1c2gobSx2LGgsQywxKX19fWlmKF88PWwqYSpvLmxlbmd0aClicmVha31yZXR1cm4gWEN0LmRlaGVhcFNvcnQobSl9fSxFQ3QubWFrZUluaXRpYWxpemF0aW9ucz1mdW5jdGlvbiB0TXQodCl7cmV0dXJue2luaXRGcm9tUmFuZG9tOmZ1bmN0aW9uIGUobixvLGksYSxyKXtmb3IodmFyIHM9MDtzPGkubGVuZ3RoO3MrKylmb3IodmFyIGw9UUN0LnJlamVjdGlvblNhbXBsZShuLG8ubGVuZ3RoLHIpLGM9MDtjPGwubGVuZ3RoO2MrKylpZighKGxbY108MCkpe3ZhciBkPXQob1tsW2NdXSxpW3NdKTtYQ3QuaGVhcFB1c2goYSxzLGQsbFtjXSwxKX19LGluaXRGcm9tVHJlZTpmdW5jdGlvbiBuKGUsbyxpLGEscil7Zm9yKHZhciBzPTA7czxpLmxlbmd0aDtzKyspZm9yKHZhciBsPUpDdC5zZWFyY2hGbGF0VHJlZShpW3NdLGUsciksYz0wO2M8bC5sZW5ndGg7YysrKXtpZihsW2NdPDApcmV0dXJuO3ZhciBkPXQob1tsW2NdXSxpW3NdKTtYQ3QuaGVhcFB1c2goYSxzLGQsbFtjXSwxKX19fX0sRUN0Lm1ha2VJbml0aWFsaXplZE5OU2VhcmNoPWZ1bmN0aW9uIGVNdCh0KXtyZXR1cm4gZnVuY3Rpb24gZShuLG8saSxhKXtmb3IodmFyIHIscyxsPUtDdC5nZXRDU1IobyksYz1sLmluZGljZXMsZD1sLmluZHB0cixwPTA7cDxhLmxlbmd0aDtwKyspZm9yKHZhciBtPW5ldyBTZXQoaVswXVtwXSk7Oyl7dmFyIGY9WEN0LnNtYWxsZXN0RmxhZ2dlZChpLHApO2lmKC0xPT09ZilicmVhazt2YXIgdT1jLnNsaWNlKGRbZl0sZFtmKzFdKTt0cnl7Zm9yKHZhciBnPXFDdCh1KSxoPWcubmV4dCgpOyFoLmRvbmU7aD1nLm5leHQoKSl7dmFyIGI9aC52YWx1ZTtpZihiIT09ZiYmLTEhPT1iJiYhbS5oYXMoYikpe3ZhciB5PXQobltiXSxhW3BdKTtYQ3QudW5jaGVja2VkSGVhcFB1c2goaSxwLHksYiwxKSxtLmFkZChiKX19fWNhdGNoKHQpe3I9e2Vycm9yOnR9fWZpbmFsbHl7dHJ5e2gmJiFoLmRvbmUmJihzPWcucmV0dXJuKSYmcy5jYWxsKGcpfWZpbmFsbHl7aWYocil0aHJvdyByLmVycm9yfX19cmV0dXJuIGl9fSxFQ3QuaW5pdGlhbGl6ZVNlYXJjaD1mdW5jdGlvbiBuTXQodCxlLG4sbyxpLGEscil7dmFyIHMsbCxjPVhDdC5tYWtlSGVhcChuLmxlbmd0aCxvKTtpZihpKG8sZSxuLGMsciksdCl0cnl7Zm9yKHZhciBkPXFDdCh0KSxwPWQubmV4dCgpOyFwLmRvbmU7cD1kLm5leHQoKSl7YShwLnZhbHVlLGUsbixjLHIpfX1jYXRjaCh0KXtzPXtlcnJvcjp0fX1maW5hbGx5e3RyeXtwJiYhcC5kb25lJiYobD1kLnJldHVybikmJmwuY2FsbChkKX1maW5hbGx5e2lmKHMpdGhyb3cgcy5lcnJvcn19cmV0dXJuIGN9O2NvbnN0IG9NdD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO2Z1bmN0aW9uIGlNdCh0KXtyZXR1cm4gb010LmNhbGwodCkuZW5kc1dpdGgoIkFycmF5XSIpfWZ1bmN0aW9uIGFNdCh0LGUsbil7bGV0IG89MDtjb25zdCBpPW4oZSk7Zm9yKGxldCBlPTA7ZTx0LngubGVuZ3RoO2UrKylvKz1NYXRoLmFicyh0LnlbZV0taSh0LnhbZV0pKTtyZXR1cm4gb31jb25zdCByTXQ9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztmdW5jdGlvbiBzTXQodCl7cmV0dXJuIHJNdC5jYWxsKHQpLmVuZHNXaXRoKCJBcnJheV0iKX1mdW5jdGlvbiBsTXQodCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9O2lmKCFzTXQodCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiaW5wdXQgbXVzdCBiZSBhbiBhcnJheSIpO2lmKDA9PT10Lmxlbmd0aCl0aHJvdyBuZXcgVHlwZUVycm9yKCJpbnB1dCBtdXN0IG5vdCBiZSBlbXB0eSIpO3ZhciBuPWUuZnJvbUluZGV4LG89dm9pZCAwPT09bj8wOm4saT1lLnRvSW5kZXgsYT12b2lkIDA9PT1pP3QubGVuZ3RoOmk7aWYobzwwfHxvPj10Lmxlbmd0aHx8IU51bWJlci5pc0ludGVnZXIobykpdGhyb3cgbmV3IEVycm9yKCJmcm9tSW5kZXggbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIgc21hbGxlciB0aGFuIGxlbmd0aCIpO2lmKGE8PW98fGE+dC5sZW5ndGh8fCFOdW1iZXIuaXNJbnRlZ2VyKGEpKXRocm93IG5ldyBFcnJvcigidG9JbmRleCBtdXN0IGJlIGFuIGludGVnZXIgZ3JlYXRlciB0aGFuIGZyb21JbmRleCBhbmQgYXQgbW9zdCBlcXVhbCB0byBsZW5ndGgiKTtmb3IodmFyIHI9dFtvXSxzPW8rMTtzPGE7cysrKXRbc10+ciYmKHI9dFtzXSk7cmV0dXJuIHJ9ZnVuY3Rpb24gY010KHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fTtpZighc010KHQpKXRocm93IG5ldyBUeXBlRXJyb3IoImlucHV0IG11c3QgYmUgYW4gYXJyYXkiKTtpZigwPT09dC5sZW5ndGgpdGhyb3cgbmV3IFR5cGVFcnJvcigiaW5wdXQgbXVzdCBub3QgYmUgZW1wdHkiKTt2YXIgbj1lLmZyb21JbmRleCxvPXZvaWQgMD09PW4/MDpuLGk9ZS50b0luZGV4LGE9dm9pZCAwPT09aT90Lmxlbmd0aDppO2lmKG88MHx8bz49dC5sZW5ndGh8fCFOdW1iZXIuaXNJbnRlZ2VyKG8pKXRocm93IG5ldyBFcnJvcigiZnJvbUluZGV4IG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyIHNtYWxsZXIgdGhhbiBsZW5ndGgiKTtpZihhPD1vfHxhPnQubGVuZ3RofHwhTnVtYmVyLmlzSW50ZWdlcihhKSl0aHJvdyBuZXcgRXJyb3IoInRvSW5kZXggbXVzdCBiZSBhbiBpbnRlZ2VyIGdyZWF0ZXIgdGhhbiBmcm9tSW5kZXggYW5kIGF0IG1vc3QgZXF1YWwgdG8gbGVuZ3RoIik7Zm9yKHZhciByPXRbb10scz1vKzE7czxhO3MrKyl0W3NdPHImJihyPXRbc10pO3JldHVybiByfWZ1bmN0aW9uIGRNdCh0KXt2YXIgZSxuPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fTtpZighc010KHQpKXRocm93IG5ldyBUeXBlRXJyb3IoImlucHV0IG11c3QgYmUgYW4gYXJyYXkiKTtpZigwPT09dC5sZW5ndGgpdGhyb3cgbmV3IFR5cGVFcnJvcigiaW5wdXQgbXVzdCBub3QgYmUgZW1wdHkiKTtpZih2b2lkIDAhPT1uLm91dHB1dCl7aWYoIXNNdChuLm91dHB1dCkpdGhyb3cgbmV3IFR5cGVFcnJvcigib3V0cHV0IG9wdGlvbiBtdXN0IGJlIGFuIGFycmF5IGlmIHNwZWNpZmllZCIpO2U9bi5vdXRwdXR9ZWxzZSBlPW5ldyBBcnJheSh0Lmxlbmd0aCk7dmFyIG89Y010KHQpLGk9bE10KHQpO2lmKG89PT1pKXRocm93IG5ldyBSYW5nZUVycm9yKCJtaW5pbXVtIGFuZCBtYXhpbXVtIGlucHV0IHZhbHVlcyBhcmUgZXF1YWwuIENhbm5vdCByZXNjYWxlIGEgY29uc3RhbnQgYXJyYXkiKTt2YXIgYT1uLm1pbixyPXZvaWQgMD09PWE/bi5hdXRvTWluTWF4P286MDphLHM9bi5tYXgsbD12b2lkIDA9PT1zP24uYXV0b01pbk1heD9pOjE6cztpZihyPj1sKXRocm93IG5ldyBSYW5nZUVycm9yKCJtaW4gb3B0aW9uIG11c3QgYmUgc21hbGxlciB0aGFuIG1heCBvcHRpb24iKTtmb3IodmFyIGM9KGwtcikvKGktbyksZD0wO2Q8dC5sZW5ndGg7ZCsrKWVbZF09KHRbZF0tbykqYytyO3JldHVybiBlfWNvbnN0IHBNdD0iICIucmVwZWF0KDIpLG1NdD0iICIucmVwZWF0KDQpO2Z1bmN0aW9uIGZNdCh0LGU9e30pe2NvbnN0e21heFJvd3M6bj0xNSxtYXhDb2x1bW5zOm89MTAsbWF4TnVtU2l6ZTppPTh9PWU7cmV0dXJuYCR7dC5jb25zdHJ1Y3Rvci5uYW1lfSB7XG4ke3BNdH1bXG4ke21NdH0keyhmdW5jdGlvbiBhKHQsZSxuLG8pe2NvbnN0e3Jvd3M6aSxjb2x1bW5zOmF9PXQscj1NYXRoLm1pbihpLGUpLHM9TWF0aC5taW4oYSxuKSxsPVtdO2ZvcihsZXQgZT0wO2U8cjtlKyspe2xldCBuPVtdO2ZvcihsZXQgaT0wO2k8cztpKyspbi5wdXNoKHVNdCh0LmdldChlLGkpLG8pKTtsLnB1c2goYCR7bi5qb2luKCIgIil9YCl9cyE9PWEmJihsW2wubGVuZ3RoLTFdKz1gIC4uLiAke2Etbn0gbW9yZSBjb2x1bW5zYCk7ciE9PWkmJmwucHVzaChgLi4uICR7aS1lfSBtb3JlIHJvd3NgKTtyZXR1cm4gbC5qb2luKGBcbiR7bU10fWApfSkodCxuLG8saSl9XG4ke3BNdH1dXG4ke3BNdH1yb3dzOiAke3Qucm93c31cbiR7cE10fWNvbHVtbnM6ICR7dC5jb2x1bW5zfVxufWB9ZnVuY3Rpb24gdU10KHQsZSl7Y29uc3Qgbj1TdHJpbmcodCk7aWYobi5sZW5ndGg8PWUpcmV0dXJuIG4ucGFkRW5kKGUsIiAiKTtjb25zdCBvPXQudG9QcmVjaXNpb24oZS0yKTtpZihvLmxlbmd0aDw9ZSlyZXR1cm4gbztjb25zdCBpPXQudG9FeHBvbmVudGlhbChlLTIpLGE9aS5pbmRleE9mKCJlIikscj1pLnNsaWNlKGEpO3JldHVybiBpLnNsaWNlKDAsZS1yLmxlbmd0aCkrcn1mdW5jdGlvbiBnTXQodCxlLG4pe2lmKGU8MHx8ZT4obj90LnJvd3M6dC5yb3dzLTEpKXRocm93IG5ldyBSYW5nZUVycm9yKCJSb3cgaW5kZXggb3V0IG9mIHJhbmdlIil9ZnVuY3Rpb24gaE10KHQsZSxuKXtpZihlPDB8fGU+KG4/dC5jb2x1bW5zOnQuY29sdW1ucy0xKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQ29sdW1uIGluZGV4IG91dCBvZiByYW5nZSIpfWZ1bmN0aW9uIGJNdCh0LGUpe2lmKGUudG8xREFycmF5JiYoZT1lLnRvMURBcnJheSgpKSxlLmxlbmd0aCE9PXQuY29sdW1ucyl0aHJvdyBuZXcgUmFuZ2VFcnJvcigidmVjdG9yIHNpemUgbXVzdCBiZSB0aGUgc2FtZSBhcyB0aGUgbnVtYmVyIG9mIGNvbHVtbnMiKTtyZXR1cm4gZX1mdW5jdGlvbiB5TXQodCxlKXtpZihlLnRvMURBcnJheSYmKGU9ZS50bzFEQXJyYXkoKSksZS5sZW5ndGghPT10LnJvd3MpdGhyb3cgbmV3IFJhbmdlRXJyb3IoInZlY3RvciBzaXplIG11c3QgYmUgdGhlIHNhbWUgYXMgdGhlIG51bWJlciBvZiByb3dzIik7cmV0dXJuIGV9ZnVuY3Rpb24gX010KHQsZSl7aWYoIm9iamVjdCIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoInVuZXhwZWN0ZWQgdHlwZSBmb3Igcm93IGluZGljZXMiKTtpZihlLnNvbWUoKGU9PmU8MHx8ZT49dC5yb3dzKSkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoInJvdyBpbmRpY2VzIGFyZSBvdXQgb2YgcmFuZ2UiKTtyZXR1cm4gQXJyYXkuaXNBcnJheShlKXx8KGU9QXJyYXkuZnJvbShlKSksZX1mdW5jdGlvbiBDTXQodCxlKXtpZigib2JqZWN0IiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigidW5leHBlY3RlZCB0eXBlIGZvciBjb2x1bW4gaW5kaWNlcyIpO2lmKGUuc29tZSgoZT0+ZTwwfHxlPj10LmNvbHVtbnMpKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiY29sdW1uIGluZGljZXMgYXJlIG91dCBvZiByYW5nZSIpO3JldHVybiBBcnJheS5pc0FycmF5KGUpfHwoZT1BcnJheS5mcm9tKGUpKSxlfWZ1bmN0aW9uIE1NdCh0LGUsbixvLGkpe2lmKDUhPT1hcmd1bWVudHMubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJleHBlY3RlZCA0IGFyZ3VtZW50cyIpO2lmKHhNdCgic3RhcnRSb3ciLGUpLHhNdCgiZW5kUm93IixuKSx4TXQoInN0YXJ0Q29sdW1uIixvKSx4TXQoImVuZENvbHVtbiIsaSksZT5ufHxvPml8fGU8MHx8ZT49dC5yb3dzfHxuPDB8fG4+PXQucm93c3x8bzwwfHxvPj10LmNvbHVtbnN8fGk8MHx8aT49dC5jb2x1bW5zKXRocm93IG5ldyBSYW5nZUVycm9yKCJTdWJtYXRyaXggaW5kaWNlcyBhcmUgb3V0IG9mIHJhbmdlIil9ZnVuY3Rpb24gdk10KHQsZT0wKXtsZXQgbj1bXTtmb3IobGV0IG89MDtvPHQ7bysrKW4ucHVzaChlKTtyZXR1cm4gbn1mdW5jdGlvbiB4TXQodCxlKXtpZigibnVtYmVyIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcihgJHt0fSBtdXN0IGJlIGEgbnVtYmVyYCl9ZnVuY3Rpb24gT010KHQpe2lmKHQuaXNFbXB0eSgpKXRocm93IG5ldyBFcnJvcigiRW1wdHkgbWF0cml4IGhhcyBubyBlbGVtZW50cyB0byBpbmRleCIpfWNsYXNzIFBNdHtzdGF0aWMgZnJvbTFEQXJyYXkodCxlLG4pe2lmKHQqZSE9PW4ubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJkYXRhIGxlbmd0aCBkb2VzIG5vdCBtYXRjaCBnaXZlbiBkaW1lbnNpb25zIik7bGV0IG89bmV3IFNNdCh0LGUpO2ZvcihsZXQgaT0wO2k8dDtpKyspZm9yKGxldCB0PTA7dDxlO3QrKylvLnNldChpLHQsbltpKmUrdF0pO3JldHVybiBvfXN0YXRpYyByb3dWZWN0b3IodCl7bGV0IGU9bmV3IFNNdCgxLHQubGVuZ3RoKTtmb3IobGV0IG49MDtuPHQubGVuZ3RoO24rKyllLnNldCgwLG4sdFtuXSk7cmV0dXJuIGV9c3RhdGljIGNvbHVtblZlY3Rvcih0KXtsZXQgZT1uZXcgU010KHQubGVuZ3RoLDEpO2ZvcihsZXQgbj0wO248dC5sZW5ndGg7bisrKWUuc2V0KG4sMCx0W25dKTtyZXR1cm4gZX1zdGF0aWMgemVyb3ModCxlKXtyZXR1cm4gbmV3IFNNdCh0LGUpfXN0YXRpYyBvbmVzKHQsZSl7cmV0dXJuIG5ldyBTTXQodCxlKS5maWxsKDEpfXN0YXRpYyByYW5kKHQsZSxuPXt9KXtpZigib2JqZWN0IiE9dHlwZW9mIG4pdGhyb3cgbmV3IFR5cGVFcnJvcigib3B0aW9ucyBtdXN0IGJlIGFuIG9iamVjdCIpO2NvbnN0e3JhbmRvbTpvPU1hdGgucmFuZG9tfT1uO2xldCBpPW5ldyBTTXQodCxlKTtmb3IobGV0IG49MDtuPHQ7bisrKWZvcihsZXQgdD0wO3Q8ZTt0KyspaS5zZXQobix0LG8oKSk7cmV0dXJuIGl9c3RhdGljIHJhbmRJbnQodCxlLG49e30pe2lmKCJvYmplY3QiIT10eXBlb2Ygbil0aHJvdyBuZXcgVHlwZUVycm9yKCJvcHRpb25zIG11c3QgYmUgYW4gb2JqZWN0Iik7Y29uc3R7bWluOm89MCxtYXg6aT0xZTMscmFuZG9tOmE9TWF0aC5yYW5kb219PW47aWYoIU51bWJlci5pc0ludGVnZXIobykpdGhyb3cgbmV3IFR5cGVFcnJvcigibWluIG11c3QgYmUgYW4gaW50ZWdlciIpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGkpKXRocm93IG5ldyBUeXBlRXJyb3IoIm1heCBtdXN0IGJlIGFuIGludGVnZXIiKTtpZihvPj1pKXRocm93IG5ldyBSYW5nZUVycm9yKCJtaW4gbXVzdCBiZSBzbWFsbGVyIHRoYW4gbWF4Iik7bGV0IHI9aS1vLHM9bmV3IFNNdCh0LGUpO2ZvcihsZXQgbj0wO248dDtuKyspZm9yKGxldCB0PTA7dDxlO3QrKyl7bGV0IGU9bytNYXRoLnJvdW5kKGEoKSpyKTtzLnNldChuLHQsZSl9cmV0dXJuIHN9c3RhdGljIGV5ZSh0LGUsbil7dm9pZCAwPT09ZSYmKGU9dCksdm9pZCAwPT09biYmKG49MSk7bGV0IG89TWF0aC5taW4odCxlKSxpPXRoaXMuemVyb3ModCxlKTtmb3IobGV0IHQ9MDt0PG87dCsrKWkuc2V0KHQsdCxuKTtyZXR1cm4gaX1zdGF0aWMgZGlhZyh0LGUsbil7bGV0IG89dC5sZW5ndGg7dm9pZCAwPT09ZSYmKGU9byksdm9pZCAwPT09biYmKG49ZSk7bGV0IGk9TWF0aC5taW4obyxlLG4pLGE9dGhpcy56ZXJvcyhlLG4pO2ZvcihsZXQgZT0wO2U8aTtlKyspYS5zZXQoZSxlLHRbZV0pO3JldHVybiBhfXN0YXRpYyBtaW4odCxlKXt0PXRoaXMuY2hlY2tNYXRyaXgodCksZT10aGlzLmNoZWNrTWF0cml4KGUpO2xldCBuPXQucm93cyxvPXQuY29sdW1ucyxpPW5ldyBTTXQobixvKTtmb3IobGV0IGE9MDthPG47YSsrKWZvcihsZXQgbj0wO248bztuKyspaS5zZXQoYSxuLE1hdGgubWluKHQuZ2V0KGEsbiksZS5nZXQoYSxuKSkpO3JldHVybiBpfXN0YXRpYyBtYXgodCxlKXt0PXRoaXMuY2hlY2tNYXRyaXgodCksZT10aGlzLmNoZWNrTWF0cml4KGUpO2xldCBuPXQucm93cyxvPXQuY29sdW1ucyxpPW5ldyB0aGlzKG4sbyk7Zm9yKGxldCBhPTA7YTxuO2ErKylmb3IobGV0IG49MDtuPG87bisrKWkuc2V0KGEsbixNYXRoLm1heCh0LmdldChhLG4pLGUuZ2V0KGEsbikpKTtyZXR1cm4gaX1zdGF0aWMgY2hlY2tNYXRyaXgodCl7cmV0dXJuIFBNdC5pc01hdHJpeCh0KT90Om5ldyBTTXQodCl9c3RhdGljIGlzTWF0cml4KHQpe3JldHVybiBudWxsIT10JiYiTWF0cml4Ij09PXQua2xhc3N9Z2V0IHNpemUoKXtyZXR1cm4gdGhpcy5yb3dzKnRoaXMuY29sdW1uc31hcHBseSh0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKCJjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24iKTtmb3IobGV0IGU9MDtlPHRoaXMucm93cztlKyspZm9yKGxldCBuPTA7bjx0aGlzLmNvbHVtbnM7bisrKXQuY2FsbCh0aGlzLGUsbik7cmV0dXJuIHRoaXN9dG8xREFycmF5KCl7bGV0IHQ9W107Zm9yKGxldCBlPTA7ZTx0aGlzLnJvd3M7ZSsrKWZvcihsZXQgbj0wO248dGhpcy5jb2x1bW5zO24rKyl0LnB1c2godGhpcy5nZXQoZSxuKSk7cmV0dXJuIHR9dG8yREFycmF5KCl7bGV0IHQ9W107Zm9yKGxldCBlPTA7ZTx0aGlzLnJvd3M7ZSsrKXt0LnB1c2goW10pO2ZvcihsZXQgbj0wO248dGhpcy5jb2x1bW5zO24rKyl0W2VdLnB1c2godGhpcy5nZXQoZSxuKSl9cmV0dXJuIHR9dG9KU09OKCl7cmV0dXJuIHRoaXMudG8yREFycmF5KCl9aXNSb3dWZWN0b3IoKXtyZXR1cm4gMT09PXRoaXMucm93c31pc0NvbHVtblZlY3Rvcigpe3JldHVybiAxPT09dGhpcy5jb2x1bW5zfWlzVmVjdG9yKCl7cmV0dXJuIDE9PT10aGlzLnJvd3N8fDE9PT10aGlzLmNvbHVtbnN9aXNTcXVhcmUoKXtyZXR1cm4gdGhpcy5yb3dzPT09dGhpcy5jb2x1bW5zfWlzRW1wdHkoKXtyZXR1cm4gMD09PXRoaXMucm93c3x8MD09PXRoaXMuY29sdW1uc31pc1N5bW1ldHJpYygpe2lmKHRoaXMuaXNTcXVhcmUoKSl7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgZT0wO2U8PXQ7ZSsrKWlmKHRoaXMuZ2V0KHQsZSkhPT10aGlzLmdldChlLHQpKXJldHVybiExO3JldHVybiEwfXJldHVybiExfWlzRWNoZWxvbkZvcm0oKXtsZXQgdD0wLGU9MCxuPS0xLG89ITAsaT0hMTtmb3IoO3Q8dGhpcy5yb3dzJiZvOyl7Zm9yKGU9MCxpPSExO2U8dGhpcy5jb2x1bW5zJiYhMT09PWk7KTA9PT10aGlzLmdldCh0LGUpP2UrKzoxPT09dGhpcy5nZXQodCxlKSYmZT5uPyhpPSEwLG49ZSk6KG89ITEsaT0hMCk7dCsrfXJldHVybiBvfWlzUmVkdWNlZEVjaGVsb25Gb3JtKCl7bGV0IHQ9MCxlPTAsbj0tMSxvPSEwLGk9ITE7Zm9yKDt0PHRoaXMucm93cyYmbzspe2ZvcihlPTAsaT0hMTtlPHRoaXMuY29sdW1ucyYmITE9PT1pOykwPT09dGhpcy5nZXQodCxlKT9lKys6MT09PXRoaXMuZ2V0KHQsZSkmJmU+bj8oaT0hMCxuPWUpOihvPSExLGk9ITApO2ZvcihsZXQgbj1lKzE7bjx0aGlzLnJvd3M7bisrKTAhPT10aGlzLmdldCh0LG4pJiYobz0hMSk7dCsrfXJldHVybiBvfWVjaGVsb25Gb3JtKCl7bGV0IHQ9dGhpcy5jbG9uZSgpLGU9MCxuPTA7Zm9yKDtlPHQucm93cyYmbjx0LmNvbHVtbnM7KXtsZXQgbz1lO2ZvcihsZXQgaT1lO2k8dC5yb3dzO2krKyl0LmdldChpLG4pPnQuZ2V0KG8sbikmJihvPWkpO2lmKDA9PT10LmdldChvLG4pKW4rKztlbHNle3Quc3dhcFJvd3MoZSxvKTtsZXQgaT10LmdldChlLG4pO2ZvcihsZXQgbz1uO288dC5jb2x1bW5zO28rKyl0LnNldChlLG8sdC5nZXQoZSxvKS9pKTtmb3IobGV0IG89ZSsxO288dC5yb3dzO28rKyl7bGV0IGk9dC5nZXQobyxuKS90LmdldChlLG4pO3Quc2V0KG8sbiwwKTtmb3IobGV0IGE9bisxO2E8dC5jb2x1bW5zO2ErKyl0LnNldChvLGEsdC5nZXQobyxhKS10LmdldChlLGEpKmkpfWUrKyxuKyt9fXJldHVybiB0fXJlZHVjZWRFY2hlbG9uRm9ybSgpe2xldCB0PXRoaXMuZWNoZWxvbkZvcm0oKSxlPXQuY29sdW1ucyxuPXQucm93cyxvPW4tMTtmb3IoO28+PTA7KWlmKDA9PT10Lm1heFJvdyhvKSlvLS07ZWxzZXtsZXQgaT0wLGE9ITE7Zm9yKDtpPG4mJiExPT09YTspMT09PXQuZ2V0KG8saSk/YT0hMDppKys7Zm9yKGxldCBuPTA7bjxvO24rKyl7bGV0IGE9dC5nZXQobixpKTtmb3IobGV0IHI9aTtyPGU7cisrKXtsZXQgZT10LmdldChuLHIpLWEqdC5nZXQobyxyKTt0LnNldChuLHIsZSl9fW8tLX1yZXR1cm4gdH1zZXQoKXt0aHJvdyBuZXcgRXJyb3IoInNldCBtZXRob2QgaXMgdW5pbXBsZW1lbnRlZCIpfWdldCgpe3Rocm93IG5ldyBFcnJvcigiZ2V0IG1ldGhvZCBpcyB1bmltcGxlbWVudGVkIil9cmVwZWF0KHQ9e30pe2lmKCJvYmplY3QiIT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKCJvcHRpb25zIG11c3QgYmUgYW4gb2JqZWN0Iik7Y29uc3R7cm93czplPTEsY29sdW1uczpuPTF9PXQ7aWYoIU51bWJlci5pc0ludGVnZXIoZSl8fGU8PTApdGhyb3cgbmV3IFR5cGVFcnJvcigicm93cyBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlciIpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKG4pfHxuPD0wKXRocm93IG5ldyBUeXBlRXJyb3IoImNvbHVtbnMgbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIiKTtsZXQgbz1uZXcgU010KHRoaXMucm93cyplLHRoaXMuY29sdW1ucypuKTtmb3IobGV0IHQ9MDt0PGU7dCsrKWZvcihsZXQgZT0wO2U8bjtlKyspby5zZXRTdWJNYXRyaXgodGhpcyx0aGlzLnJvd3MqdCx0aGlzLmNvbHVtbnMqZSk7cmV0dXJuIG99ZmlsbCh0KXtmb3IobGV0IGU9MDtlPHRoaXMucm93cztlKyspZm9yKGxldCBuPTA7bjx0aGlzLmNvbHVtbnM7bisrKXRoaXMuc2V0KGUsbix0KTtyZXR1cm4gdGhpc31uZWcoKXtyZXR1cm4gdGhpcy5tdWxTKC0xKX1nZXRSb3codCl7Z010KHRoaXMsdCk7bGV0IGU9W107Zm9yKGxldCBuPTA7bjx0aGlzLmNvbHVtbnM7bisrKWUucHVzaCh0aGlzLmdldCh0LG4pKTtyZXR1cm4gZX1nZXRSb3dWZWN0b3IodCl7cmV0dXJuIFNNdC5yb3dWZWN0b3IodGhpcy5nZXRSb3codCkpfXNldFJvdyh0LGUpe2dNdCh0aGlzLHQpLGU9Yk10KHRoaXMsZSk7Zm9yKGxldCBuPTA7bjx0aGlzLmNvbHVtbnM7bisrKXRoaXMuc2V0KHQsbixlW25dKTtyZXR1cm4gdGhpc31zd2FwUm93cyh0LGUpe2dNdCh0aGlzLHQpLGdNdCh0aGlzLGUpO2ZvcihsZXQgbj0wO248dGhpcy5jb2x1bW5zO24rKyl7bGV0IG89dGhpcy5nZXQodCxuKTt0aGlzLnNldCh0LG4sdGhpcy5nZXQoZSxuKSksdGhpcy5zZXQoZSxuLG8pfXJldHVybiB0aGlzfWdldENvbHVtbih0KXtoTXQodGhpcyx0KTtsZXQgZT1bXTtmb3IobGV0IG49MDtuPHRoaXMucm93cztuKyspZS5wdXNoKHRoaXMuZ2V0KG4sdCkpO3JldHVybiBlfWdldENvbHVtblZlY3Rvcih0KXtyZXR1cm4gU010LmNvbHVtblZlY3Rvcih0aGlzLmdldENvbHVtbih0KSl9c2V0Q29sdW1uKHQsZSl7aE10KHRoaXMsdCksZT15TXQodGhpcyxlKTtmb3IobGV0IG49MDtuPHRoaXMucm93cztuKyspdGhpcy5zZXQobix0LGVbbl0pO3JldHVybiB0aGlzfXN3YXBDb2x1bW5zKHQsZSl7aE10KHRoaXMsdCksaE10KHRoaXMsZSk7Zm9yKGxldCBuPTA7bjx0aGlzLnJvd3M7bisrKXtsZXQgbz10aGlzLmdldChuLHQpO3RoaXMuc2V0KG4sdCx0aGlzLmdldChuLGUpKSx0aGlzLnNldChuLGUsbyl9cmV0dXJuIHRoaXN9YWRkUm93VmVjdG9yKHQpe3Q9Yk10KHRoaXMsdCk7Zm9yKGxldCBlPTA7ZTx0aGlzLnJvd3M7ZSsrKWZvcihsZXQgbj0wO248dGhpcy5jb2x1bW5zO24rKyl0aGlzLnNldChlLG4sdGhpcy5nZXQoZSxuKSt0W25dKTtyZXR1cm4gdGhpc31zdWJSb3dWZWN0b3IodCl7dD1iTXQodGhpcyx0KTtmb3IobGV0IGU9MDtlPHRoaXMucm93cztlKyspZm9yKGxldCBuPTA7bjx0aGlzLmNvbHVtbnM7bisrKXRoaXMuc2V0KGUsbix0aGlzLmdldChlLG4pLXRbbl0pO3JldHVybiB0aGlzfW11bFJvd1ZlY3Rvcih0KXt0PWJNdCh0aGlzLHQpO2ZvcihsZXQgZT0wO2U8dGhpcy5yb3dzO2UrKylmb3IobGV0IG49MDtuPHRoaXMuY29sdW1ucztuKyspdGhpcy5zZXQoZSxuLHRoaXMuZ2V0KGUsbikqdFtuXSk7cmV0dXJuIHRoaXN9ZGl2Um93VmVjdG9yKHQpe3Q9Yk10KHRoaXMsdCk7Zm9yKGxldCBlPTA7ZTx0aGlzLnJvd3M7ZSsrKWZvcihsZXQgbj0wO248dGhpcy5jb2x1bW5zO24rKyl0aGlzLnNldChlLG4sdGhpcy5nZXQoZSxuKS90W25dKTtyZXR1cm4gdGhpc31hZGRDb2x1bW5WZWN0b3IodCl7dD15TXQodGhpcyx0KTtmb3IobGV0IGU9MDtlPHRoaXMucm93cztlKyspZm9yKGxldCBuPTA7bjx0aGlzLmNvbHVtbnM7bisrKXRoaXMuc2V0KGUsbix0aGlzLmdldChlLG4pK3RbZV0pO3JldHVybiB0aGlzfXN1YkNvbHVtblZlY3Rvcih0KXt0PXlNdCh0aGlzLHQpO2ZvcihsZXQgZT0wO2U8dGhpcy5yb3dzO2UrKylmb3IobGV0IG49MDtuPHRoaXMuY29sdW1ucztuKyspdGhpcy5zZXQoZSxuLHRoaXMuZ2V0KGUsbiktdFtlXSk7cmV0dXJuIHRoaXN9bXVsQ29sdW1uVmVjdG9yKHQpe3Q9eU10KHRoaXMsdCk7Zm9yKGxldCBlPTA7ZTx0aGlzLnJvd3M7ZSsrKWZvcihsZXQgbj0wO248dGhpcy5jb2x1bW5zO24rKyl0aGlzLnNldChlLG4sdGhpcy5nZXQoZSxuKSp0W2VdKTtyZXR1cm4gdGhpc31kaXZDb2x1bW5WZWN0b3IodCl7dD15TXQodGhpcyx0KTtmb3IobGV0IGU9MDtlPHRoaXMucm93cztlKyspZm9yKGxldCBuPTA7bjx0aGlzLmNvbHVtbnM7bisrKXRoaXMuc2V0KGUsbix0aGlzLmdldChlLG4pL3RbZV0pO3JldHVybiB0aGlzfW11bFJvdyh0LGUpe2dNdCh0aGlzLHQpO2ZvcihsZXQgbj0wO248dGhpcy5jb2x1bW5zO24rKyl0aGlzLnNldCh0LG4sdGhpcy5nZXQodCxuKSplKTtyZXR1cm4gdGhpc31tdWxDb2x1bW4odCxlKXtoTXQodGhpcyx0KTtmb3IobGV0IG49MDtuPHRoaXMucm93cztuKyspdGhpcy5zZXQobix0LHRoaXMuZ2V0KG4sdCkqZSk7cmV0dXJuIHRoaXN9bWF4KCl7aWYodGhpcy5pc0VtcHR5KCkpcmV0dXJuIE5hTjtsZXQgdD10aGlzLmdldCgwLDApO2ZvcihsZXQgZT0wO2U8dGhpcy5yb3dzO2UrKylmb3IobGV0IG49MDtuPHRoaXMuY29sdW1ucztuKyspdGhpcy5nZXQoZSxuKT50JiYodD10aGlzLmdldChlLG4pKTtyZXR1cm4gdH1tYXhJbmRleCgpe09NdCh0aGlzKTtsZXQgdD10aGlzLmdldCgwLDApLGU9WzAsMF07Zm9yKGxldCBuPTA7bjx0aGlzLnJvd3M7bisrKWZvcihsZXQgbz0wO288dGhpcy5jb2x1bW5zO28rKyl0aGlzLmdldChuLG8pPnQmJih0PXRoaXMuZ2V0KG4sbyksZVswXT1uLGVbMV09byk7cmV0dXJuIGV9bWluKCl7aWYodGhpcy5pc0VtcHR5KCkpcmV0dXJuIE5hTjtsZXQgdD10aGlzLmdldCgwLDApO2ZvcihsZXQgZT0wO2U8dGhpcy5yb3dzO2UrKylmb3IobGV0IG49MDtuPHRoaXMuY29sdW1ucztuKyspdGhpcy5nZXQoZSxuKTx0JiYodD10aGlzLmdldChlLG4pKTtyZXR1cm4gdH1taW5JbmRleCgpe09NdCh0aGlzKTtsZXQgdD10aGlzLmdldCgwLDApLGU9WzAsMF07Zm9yKGxldCBuPTA7bjx0aGlzLnJvd3M7bisrKWZvcihsZXQgbz0wO288dGhpcy5jb2x1bW5zO28rKyl0aGlzLmdldChuLG8pPHQmJih0PXRoaXMuZ2V0KG4sbyksZVswXT1uLGVbMV09byk7cmV0dXJuIGV9bWF4Um93KHQpe2lmKGdNdCh0aGlzLHQpLHRoaXMuaXNFbXB0eSgpKXJldHVybiBOYU47bGV0IGU9dGhpcy5nZXQodCwwKTtmb3IobGV0IG49MTtuPHRoaXMuY29sdW1ucztuKyspdGhpcy5nZXQodCxuKT5lJiYoZT10aGlzLmdldCh0LG4pKTtyZXR1cm4gZX1tYXhSb3dJbmRleCh0KXtnTXQodGhpcyx0KSxPTXQodGhpcyk7bGV0IGU9dGhpcy5nZXQodCwwKSxuPVt0LDBdO2ZvcihsZXQgbz0xO288dGhpcy5jb2x1bW5zO28rKyl0aGlzLmdldCh0LG8pPmUmJihlPXRoaXMuZ2V0KHQsbyksblsxXT1vKTtyZXR1cm4gbn1taW5Sb3codCl7aWYoZ010KHRoaXMsdCksdGhpcy5pc0VtcHR5KCkpcmV0dXJuIE5hTjtsZXQgZT10aGlzLmdldCh0LDApO2ZvcihsZXQgbj0xO248dGhpcy5jb2x1bW5zO24rKyl0aGlzLmdldCh0LG4pPGUmJihlPXRoaXMuZ2V0KHQsbikpO3JldHVybiBlfW1pblJvd0luZGV4KHQpe2dNdCh0aGlzLHQpLE9NdCh0aGlzKTtsZXQgZT10aGlzLmdldCh0LDApLG49W3QsMF07Zm9yKGxldCBvPTE7bzx0aGlzLmNvbHVtbnM7bysrKXRoaXMuZ2V0KHQsbyk8ZSYmKGU9dGhpcy5nZXQodCxvKSxuWzFdPW8pO3JldHVybiBufW1heENvbHVtbih0KXtpZihoTXQodGhpcyx0KSx0aGlzLmlzRW1wdHkoKSlyZXR1cm4gTmFOO2xldCBlPXRoaXMuZ2V0KDAsdCk7Zm9yKGxldCBuPTE7bjx0aGlzLnJvd3M7bisrKXRoaXMuZ2V0KG4sdCk+ZSYmKGU9dGhpcy5nZXQobix0KSk7cmV0dXJuIGV9bWF4Q29sdW1uSW5kZXgodCl7aE10KHRoaXMsdCksT010KHRoaXMpO2xldCBlPXRoaXMuZ2V0KDAsdCksbj1bMCx0XTtmb3IobGV0IG89MTtvPHRoaXMucm93cztvKyspdGhpcy5nZXQobyx0KT5lJiYoZT10aGlzLmdldChvLHQpLG5bMF09byk7cmV0dXJuIG59bWluQ29sdW1uKHQpe2lmKGhNdCh0aGlzLHQpLHRoaXMuaXNFbXB0eSgpKXJldHVybiBOYU47bGV0IGU9dGhpcy5nZXQoMCx0KTtmb3IobGV0IG49MTtuPHRoaXMucm93cztuKyspdGhpcy5nZXQobix0KTxlJiYoZT10aGlzLmdldChuLHQpKTtyZXR1cm4gZX1taW5Db2x1bW5JbmRleCh0KXtoTXQodGhpcyx0KSxPTXQodGhpcyk7bGV0IGU9dGhpcy5nZXQoMCx0KSxuPVswLHRdO2ZvcihsZXQgbz0xO288dGhpcy5yb3dzO28rKyl0aGlzLmdldChvLHQpPGUmJihlPXRoaXMuZ2V0KG8sdCksblswXT1vKTtyZXR1cm4gbn1kaWFnKCl7bGV0IHQ9TWF0aC5taW4odGhpcy5yb3dzLHRoaXMuY29sdW1ucyksZT1bXTtmb3IobGV0IG49MDtuPHQ7bisrKWUucHVzaCh0aGlzLmdldChuLG4pKTtyZXR1cm4gZX1ub3JtKHQ9ImZyb2Jlbml1cyIpe2xldCBlPTA7aWYoIm1heCI9PT10KXJldHVybiB0aGlzLm1heCgpO2lmKCJmcm9iZW5pdXMiPT09dCl7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgbj0wO248dGhpcy5jb2x1bW5zO24rKyllKz10aGlzLmdldCh0LG4pKnRoaXMuZ2V0KHQsbik7cmV0dXJuIE1hdGguc3FydChlKX10aHJvdyBuZXcgUmFuZ2VFcnJvcihgdW5rbm93biBub3JtIHR5cGU6ICR7dH1gKX1jdW11bGF0aXZlU3VtKCl7bGV0IHQ9MDtmb3IobGV0IGU9MDtlPHRoaXMucm93cztlKyspZm9yKGxldCBuPTA7bjx0aGlzLmNvbHVtbnM7bisrKXQrPXRoaXMuZ2V0KGUsbiksdGhpcy5zZXQoZSxuLHQpO3JldHVybiB0aGlzfWRvdCh0KXtQTXQuaXNNYXRyaXgodCkmJih0PXQudG8xREFycmF5KCkpO2xldCBlPXRoaXMudG8xREFycmF5KCk7aWYoZS5sZW5ndGghPT10Lmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigidmVjdG9ycyBkbyBub3QgaGF2ZSB0aGUgc2FtZSBzaXplIik7bGV0IG49MDtmb3IobGV0IG89MDtvPGUubGVuZ3RoO28rKyluKz1lW29dKnRbb107cmV0dXJuIG59bW11bCh0KXt0PVNNdC5jaGVja01hdHJpeCh0KTtsZXQgZT10aGlzLnJvd3Msbj10aGlzLmNvbHVtbnMsbz10LmNvbHVtbnMsaT1uZXcgU010KGUsbyksYT1uZXcgRmxvYXQ2NEFycmF5KG4pO2ZvcihsZXQgcj0wO3I8bztyKyspe2ZvcihsZXQgZT0wO2U8bjtlKyspYVtlXT10LmdldChlLHIpO2ZvcihsZXQgdD0wO3Q8ZTt0Kyspe2xldCBlPTA7Zm9yKGxldCBvPTA7bzxuO28rKyllKz10aGlzLmdldCh0LG8pKmFbb107aS5zZXQodCxyLGUpfX1yZXR1cm4gaX1zdHJhc3NlbjJ4Mih0KXt0PVNNdC5jaGVja01hdHJpeCh0KTtsZXQgZT1uZXcgU010KDIsMik7Y29uc3Qgbj10aGlzLmdldCgwLDApLG89dC5nZXQoMCwwKSxpPXRoaXMuZ2V0KDAsMSksYT10LmdldCgwLDEpLHI9dGhpcy5nZXQoMSwwKSxzPXQuZ2V0KDEsMCksbD10aGlzLmdldCgxLDEpLGM9dC5nZXQoMSwxKSxkPShuK2wpKihvK2MpLHA9KHIrbCkqbyxtPW4qKGEtYyksZj1sKihzLW8pLHU9KG4raSkqYyxnPW0rdSxoPXArZixiPWQtcCttKyhyLW4pKihvK2EpO3JldHVybiBlLnNldCgwLDAsZCtmLXUrKGktbCkqKHMrYykpLGUuc2V0KDAsMSxnKSxlLnNldCgxLDAsaCksZS5zZXQoMSwxLGIpLGV9c3RyYXNzZW4zeDModCl7dD1TTXQuY2hlY2tNYXRyaXgodCk7bGV0IGU9bmV3IFNNdCgzLDMpO2NvbnN0IG49dGhpcy5nZXQoMCwwKSxvPXRoaXMuZ2V0KDAsMSksaT10aGlzLmdldCgwLDIpLGE9dGhpcy5nZXQoMSwwKSxyPXRoaXMuZ2V0KDEsMSkscz10aGlzLmdldCgxLDIpLGw9dGhpcy5nZXQoMiwwKSxjPXRoaXMuZ2V0KDIsMSksZD10aGlzLmdldCgyLDIpLHA9dC5nZXQoMCwwKSxtPXQuZ2V0KDAsMSksZj10LmdldCgwLDIpLHU9dC5nZXQoMSwwKSxnPXQuZ2V0KDEsMSksaD10LmdldCgxLDIpLGI9dC5nZXQoMiwwKSx5PXQuZ2V0KDIsMSksXz10LmdldCgyLDIpLEM9KG4tYSkqKC1tK2cpLE09KC1uK2ErcikqKHAtbStnKSx2PShhK3IpKigtcCttKSx4PW4qcCxPPSgtbitsK2MpKihwLWYraCksUD0oLW4rbCkqKGYtaCksdz0obCtjKSooLXArZiksaz0oLWkrYytkKSooZytiLXkpLFM9KGktZCkqKGcteSksRD1pKmIsUj0oYytkKSooLWIreSksRT0oLWkrcitzKSooaCtiLV8pLEE9KGktcykqKGgtXyksVD0ocitzKSooLWIrXyksTj0obitvK2ktYS1yLWMtZCkqZytNK3YreCtrK0QrUix6PXgrTyt3KyhuK28raS1yLXMtbC1jKSpoK0QrRStULEk9QytyKigtcCttK3UtZy1oLWIrXykrTSt4K0QrRStBLEg9QytNK3YreCtzKnksRj1EK0UrQStUK2EqZixMPXgrTytQK2MqKC1wK2YrdS1nLWgtYit5KStrK1MrRCxCPWsrUytEK1IrbCptLFY9eCtPK1ArdytkKl87cmV0dXJuIGUuc2V0KDAsMCx4K0Qrbyp1KSxlLnNldCgwLDEsTiksZS5zZXQoMCwyLHopLGUuc2V0KDEsMCxJKSxlLnNldCgxLDEsSCksZS5zZXQoMSwyLEYpLGUuc2V0KDIsMCxMKSxlLnNldCgyLDEsQiksZS5zZXQoMiwyLFYpLGV9bW11bFN0cmFzc2VuKHQpe3Q9U010LmNoZWNrTWF0cml4KHQpO2xldCBlPXRoaXMuY2xvbmUoKSxuPWUucm93cyxvPWUuY29sdW1ucyxpPXQucm93cyxhPXQuY29sdW1ucztmdW5jdGlvbiByKHQsZSxuKXtpZih0LnJvd3M9PT1lJiZ0LmNvbHVtbnM9PT1uKXJldHVybiB0O3tsZXQgbz1QTXQuemVyb3MoZSxuKTtyZXR1cm4gbz1vLnNldFN1Yk1hdHJpeCh0LDAsMCksb319byE9PWkmJmNvbnNvbGUud2FybihgTXVsdGlwbHlpbmcgJHtufSB4ICR7b30gYW5kICR7aX0geCAke2F9IG1hdHJpeDogZGltZW5zaW9ucyBkbyBub3QgbWF0Y2guYCk7bGV0IHM9TWF0aC5tYXgobixpKSxsPU1hdGgubWF4KG8sYSk7cmV0dXJuIGU9cihlLHMsbCksKGZ1bmN0aW9uIHQoZSxuLG8saSl7aWYobzw9NTEyfHxpPD01MTIpcmV0dXJuIGUubW11bChuKTtvJTI9PTEmJmklMj09MT8oZT1yKGUsbysxLGkrMSksbj1yKG4sbysxLGkrMSkpOm8lMj09MT8oZT1yKGUsbysxLGkpLG49cihuLG8rMSxpKSk6aSUyPT0xJiYoZT1yKGUsbyxpKzEpLG49cihuLG8saSsxKSk7bGV0IGE9cGFyc2VJbnQoZS5yb3dzLzIsMTApLHM9cGFyc2VJbnQoZS5jb2x1bW5zLzIsMTApLGw9ZS5zdWJNYXRyaXgoMCxhLTEsMCxzLTEpLGM9bi5zdWJNYXRyaXgoMCxhLTEsMCxzLTEpLGQ9ZS5zdWJNYXRyaXgoMCxhLTEscyxlLmNvbHVtbnMtMSkscD1uLnN1Yk1hdHJpeCgwLGEtMSxzLG4uY29sdW1ucy0xKSxtPWUuc3ViTWF0cml4KGEsZS5yb3dzLTEsMCxzLTEpLGY9bi5zdWJNYXRyaXgoYSxuLnJvd3MtMSwwLHMtMSksdT1lLnN1Yk1hdHJpeChhLGUucm93cy0xLHMsZS5jb2x1bW5zLTEpLGc9bi5zdWJNYXRyaXgoYSxuLnJvd3MtMSxzLG4uY29sdW1ucy0xKSxoPXQoUE10LmFkZChsLHUpLFBNdC5hZGQoYyxnKSxhLHMpLGI9dChQTXQuYWRkKG0sdSksYyxhLHMpLHk9dChsLFBNdC5zdWIocCxnKSxhLHMpLF89dCh1LFBNdC5zdWIoZixjKSxhLHMpLEM9dChQTXQuYWRkKGwsZCksZyxhLHMpLE09dChQTXQuc3ViKG0sbCksUE10LmFkZChjLHApLGEscyksdj10KFBNdC5zdWIoZCx1KSxQTXQuYWRkKGYsZyksYSxzKSx4PVBNdC5hZGQoaCxfKTt4LnN1YihDKSx4LmFkZCh2KTtsZXQgTz1QTXQuYWRkKHksQyksUD1QTXQuYWRkKGIsXyksdz1QTXQuc3ViKGgsYik7dy5hZGQoeSksdy5hZGQoTSk7bGV0IGs9UE10Lnplcm9zKDIqeC5yb3dzLDIqeC5jb2x1bW5zKTtyZXR1cm4gaz1rLnNldFN1Yk1hdHJpeCh4LDAsMCksaz1rLnNldFN1Yk1hdHJpeChPLHgucm93cywwKSxrPWsuc2V0U3ViTWF0cml4KFAsMCx4LmNvbHVtbnMpLGs9ay5zZXRTdWJNYXRyaXgodyx4LnJvd3MseC5jb2x1bW5zKSxrLnN1Yk1hdHJpeCgwLG8tMSwwLGktMSl9KShlLHQ9cih0LHMsbCkscyxsKX1zY2FsZVJvd3ModD17fSl7aWYoIm9iamVjdCIhPXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoIm9wdGlvbnMgbXVzdCBiZSBhbiBvYmplY3QiKTtjb25zdHttaW46ZT0wLG1heDpuPTF9PXQ7aWYoIU51bWJlci5pc0Zpbml0ZShlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJtaW4gbXVzdCBiZSBhIG51bWJlciIpO2lmKCFOdW1iZXIuaXNGaW5pdGUobikpdGhyb3cgbmV3IFR5cGVFcnJvcigibWF4IG11c3QgYmUgYSBudW1iZXIiKTtpZihlPj1uKXRocm93IG5ldyBSYW5nZUVycm9yKCJtaW4gbXVzdCBiZSBzbWFsbGVyIHRoYW4gbWF4Iik7bGV0IG89bmV3IFNNdCh0aGlzLnJvd3MsdGhpcy5jb2x1bW5zKTtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0Kyspe2NvbnN0IGk9dGhpcy5nZXRSb3codCk7aS5sZW5ndGg+MCYmZE10KGkse21pbjplLG1heDpuLG91dHB1dDppfSksby5zZXRSb3codCxpKX1yZXR1cm4gb31zY2FsZUNvbHVtbnModD17fSl7aWYoIm9iamVjdCIhPXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoIm9wdGlvbnMgbXVzdCBiZSBhbiBvYmplY3QiKTtjb25zdHttaW46ZT0wLG1heDpuPTF9PXQ7aWYoIU51bWJlci5pc0Zpbml0ZShlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJtaW4gbXVzdCBiZSBhIG51bWJlciIpO2lmKCFOdW1iZXIuaXNGaW5pdGUobikpdGhyb3cgbmV3IFR5cGVFcnJvcigibWF4IG11c3QgYmUgYSBudW1iZXIiKTtpZihlPj1uKXRocm93IG5ldyBSYW5nZUVycm9yKCJtaW4gbXVzdCBiZSBzbWFsbGVyIHRoYW4gbWF4Iik7bGV0IG89bmV3IFNNdCh0aGlzLnJvd3MsdGhpcy5jb2x1bW5zKTtmb3IobGV0IHQ9MDt0PHRoaXMuY29sdW1uczt0Kyspe2NvbnN0IGk9dGhpcy5nZXRDb2x1bW4odCk7aS5sZW5ndGgmJmRNdChpLHttaW46ZSxtYXg6bixvdXRwdXQ6aX0pLG8uc2V0Q29sdW1uKHQsaSl9cmV0dXJuIG99ZmxpcFJvd3MoKXtjb25zdCB0PU1hdGguY2VpbCh0aGlzLmNvbHVtbnMvMik7Zm9yKGxldCBlPTA7ZTx0aGlzLnJvd3M7ZSsrKWZvcihsZXQgbj0wO248dDtuKyspe2xldCB0PXRoaXMuZ2V0KGUsbiksbz10aGlzLmdldChlLHRoaXMuY29sdW1ucy0xLW4pO3RoaXMuc2V0KGUsbixvKSx0aGlzLnNldChlLHRoaXMuY29sdW1ucy0xLW4sdCl9cmV0dXJuIHRoaXN9ZmxpcENvbHVtbnMoKXtjb25zdCB0PU1hdGguY2VpbCh0aGlzLnJvd3MvMik7Zm9yKGxldCBlPTA7ZTx0aGlzLmNvbHVtbnM7ZSsrKWZvcihsZXQgbj0wO248dDtuKyspe2xldCB0PXRoaXMuZ2V0KG4sZSksbz10aGlzLmdldCh0aGlzLnJvd3MtMS1uLGUpO3RoaXMuc2V0KG4sZSxvKSx0aGlzLnNldCh0aGlzLnJvd3MtMS1uLGUsdCl9cmV0dXJuIHRoaXN9a3JvbmVja2VyUHJvZHVjdCh0KXt0PVNNdC5jaGVja01hdHJpeCh0KTtsZXQgZT10aGlzLnJvd3Msbj10aGlzLmNvbHVtbnMsbz10LnJvd3MsaT10LmNvbHVtbnMsYT1uZXcgU010KGUqbyxuKmkpO2ZvcihsZXQgcj0wO3I8ZTtyKyspZm9yKGxldCBlPTA7ZTxuO2UrKylmb3IobGV0IG49MDtuPG87bisrKWZvcihsZXQgcz0wO3M8aTtzKyspYS5zZXQobypyK24saSplK3MsdGhpcy5nZXQocixlKSp0LmdldChuLHMpKTtyZXR1cm4gYX1rcm9uZWNrZXJTdW0odCl7aWYodD1TTXQuY2hlY2tNYXRyaXgodCksIXRoaXMuaXNTcXVhcmUoKXx8IXQuaXNTcXVhcmUoKSl0aHJvdyBuZXcgRXJyb3IoIktyb25lY2tlciBTdW0gbmVlZHMgdHdvIFNxdWFyZSBNYXRyaWNlcyIpO2xldCBlPXRoaXMucm93cyxuPXQucm93cyxvPXRoaXMua3JvbmVja2VyUHJvZHVjdChTTXQuZXllKG4sbikpLGk9U010LmV5ZShlLGUpLmtyb25lY2tlclByb2R1Y3QodCk7cmV0dXJuIG8uYWRkKGkpfXRyYW5zcG9zZSgpe2xldCB0PW5ldyBTTXQodGhpcy5jb2x1bW5zLHRoaXMucm93cyk7Zm9yKGxldCBlPTA7ZTx0aGlzLnJvd3M7ZSsrKWZvcihsZXQgbj0wO248dGhpcy5jb2x1bW5zO24rKyl0LnNldChuLGUsdGhpcy5nZXQoZSxuKSk7cmV0dXJuIHR9c29ydFJvd3ModD13TXQpe2ZvcihsZXQgZT0wO2U8dGhpcy5yb3dzO2UrKyl0aGlzLnNldFJvdyhlLHRoaXMuZ2V0Um93KGUpLnNvcnQodCkpO3JldHVybiB0aGlzfXNvcnRDb2x1bW5zKHQ9d010KXtmb3IobGV0IGU9MDtlPHRoaXMuY29sdW1ucztlKyspdGhpcy5zZXRDb2x1bW4oZSx0aGlzLmdldENvbHVtbihlKS5zb3J0KHQpKTtyZXR1cm4gdGhpc31zdWJNYXRyaXgodCxlLG4sbyl7TU10KHRoaXMsdCxlLG4sbyk7bGV0IGk9bmV3IFNNdChlLXQrMSxvLW4rMSk7Zm9yKGxldCBhPXQ7YTw9ZTthKyspZm9yKGxldCBlPW47ZTw9bztlKyspaS5zZXQoYS10LGUtbix0aGlzLmdldChhLGUpKTtyZXR1cm4gaX1zdWJNYXRyaXhSb3codCxlLG4pe2lmKHZvaWQgMD09PWUmJihlPTApLHZvaWQgMD09PW4mJihuPXRoaXMuY29sdW1ucy0xKSxlPm58fGU8MHx8ZT49dGhpcy5jb2x1bW5zfHxuPDB8fG4+PXRoaXMuY29sdW1ucyl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQXJndW1lbnQgb3V0IG9mIHJhbmdlIik7bGV0IG89bmV3IFNNdCh0Lmxlbmd0aCxuLWUrMSk7Zm9yKGxldCBpPTA7aTx0Lmxlbmd0aDtpKyspZm9yKGxldCBhPWU7YTw9bjthKyspe2lmKHRbaV08MHx8dFtpXT49dGhpcy5yb3dzKXRocm93IG5ldyBSYW5nZUVycm9yKGBSb3cgaW5kZXggb3V0IG9mIHJhbmdlOiAke3RbaV19YCk7by5zZXQoaSxhLWUsdGhpcy5nZXQodFtpXSxhKSl9cmV0dXJuIG99c3ViTWF0cml4Q29sdW1uKHQsZSxuKXtpZih2b2lkIDA9PT1lJiYoZT0wKSx2b2lkIDA9PT1uJiYobj10aGlzLnJvd3MtMSksZT5ufHxlPDB8fGU+PXRoaXMucm93c3x8bjwwfHxuPj10aGlzLnJvd3MpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkFyZ3VtZW50IG91dCBvZiByYW5nZSIpO2xldCBvPW5ldyBTTXQobi1lKzEsdC5sZW5ndGgpO2ZvcihsZXQgaT0wO2k8dC5sZW5ndGg7aSsrKWZvcihsZXQgYT1lO2E8PW47YSsrKXtpZih0W2ldPDB8fHRbaV0+PXRoaXMuY29sdW1ucyl0aHJvdyBuZXcgUmFuZ2VFcnJvcihgQ29sdW1uIGluZGV4IG91dCBvZiByYW5nZTogJHt0W2ldfWApO28uc2V0KGEtZSxpLHRoaXMuZ2V0KGEsdFtpXSkpfXJldHVybiBvfXNldFN1Yk1hdHJpeCh0LGUsbil7aWYoKHQ9U010LmNoZWNrTWF0cml4KHQpKS5pc0VtcHR5KCkpcmV0dXJuIHRoaXM7TU10KHRoaXMsZSxlK3Qucm93cy0xLG4sbit0LmNvbHVtbnMtMSk7Zm9yKGxldCBvPTA7bzx0LnJvd3M7bysrKWZvcihsZXQgaT0wO2k8dC5jb2x1bW5zO2krKyl0aGlzLnNldChlK28sbitpLHQuZ2V0KG8saSkpO3JldHVybiB0aGlzfXNlbGVjdGlvbih0LGUpe2xldCBuPShmdW5jdGlvbiBvKHQsZSxuKXtyZXR1cm57cm93Ol9NdCh0LGUpLGNvbHVtbjpDTXQodCxuKX19KSh0aGlzLHQsZSksaT1uZXcgU010KHQubGVuZ3RoLGUubGVuZ3RoKTtmb3IobGV0IHQ9MDt0PG4ucm93Lmxlbmd0aDt0Kyspe2xldCBlPW4ucm93W3RdO2ZvcihsZXQgbz0wO288bi5jb2x1bW4ubGVuZ3RoO28rKyl7aS5zZXQodCxvLHRoaXMuZ2V0KGUsbi5jb2x1bW5bb10pKX19cmV0dXJuIGl9dHJhY2UoKXtsZXQgdD1NYXRoLm1pbih0aGlzLnJvd3MsdGhpcy5jb2x1bW5zKSxlPTA7Zm9yKGxldCBuPTA7bjx0O24rKyllKz10aGlzLmdldChuLG4pO3JldHVybiBlfWNsb25lKCl7bGV0IHQ9bmV3IFNNdCh0aGlzLnJvd3MsdGhpcy5jb2x1bW5zKTtmb3IobGV0IGU9MDtlPHRoaXMucm93cztlKyspZm9yKGxldCBuPTA7bjx0aGlzLmNvbHVtbnM7bisrKXQuc2V0KGUsbix0aGlzLmdldChlLG4pKTtyZXR1cm4gdH1zdW0odCl7c3dpdGNoKHQpe2Nhc2Uicm93IjpyZXR1cm4oZnVuY3Rpb24gZSh0KXtsZXQgZT12TXQodC5yb3dzKTtmb3IobGV0IG49MDtuPHQucm93czsrK24pZm9yKGxldCBvPTA7bzx0LmNvbHVtbnM7KytvKWVbbl0rPXQuZ2V0KG4sbyk7cmV0dXJuIGV9KSh0aGlzKTtjYXNlImNvbHVtbiI6cmV0dXJuKGZ1bmN0aW9uIG4odCl7bGV0IGU9dk10KHQuY29sdW1ucyk7Zm9yKGxldCBuPTA7bjx0LnJvd3M7KytuKWZvcihsZXQgbz0wO288dC5jb2x1bW5zOysrbyllW29dKz10LmdldChuLG8pO3JldHVybiBlfSkodGhpcyk7Y2FzZSB2b2lkIDA6cmV0dXJuKGZ1bmN0aW9uIG8odCl7bGV0IGU9MDtmb3IobGV0IG49MDtuPHQucm93cztuKyspZm9yKGxldCBvPTA7bzx0LmNvbHVtbnM7bysrKWUrPXQuZ2V0KG4sbyk7cmV0dXJuIGV9KSh0aGlzKTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgaW52YWxpZCBvcHRpb246ICR7dH1gKX19cHJvZHVjdCh0KXtzd2l0Y2godCl7Y2FzZSJyb3ciOnJldHVybihmdW5jdGlvbiBlKHQpe2xldCBlPXZNdCh0LnJvd3MsMSk7Zm9yKGxldCBuPTA7bjx0LnJvd3M7KytuKWZvcihsZXQgbz0wO288dC5jb2x1bW5zOysrbyllW25dKj10LmdldChuLG8pO3JldHVybiBlfSkodGhpcyk7Y2FzZSJjb2x1bW4iOnJldHVybihmdW5jdGlvbiBuKHQpe2xldCBlPXZNdCh0LmNvbHVtbnMsMSk7Zm9yKGxldCBuPTA7bjx0LnJvd3M7KytuKWZvcihsZXQgbz0wO288dC5jb2x1bW5zOysrbyllW29dKj10LmdldChuLG8pO3JldHVybiBlfSkodGhpcyk7Y2FzZSB2b2lkIDA6cmV0dXJuKGZ1bmN0aW9uIG8odCl7bGV0IGU9MTtmb3IobGV0IG49MDtuPHQucm93cztuKyspZm9yKGxldCBvPTA7bzx0LmNvbHVtbnM7bysrKWUqPXQuZ2V0KG4sbyk7cmV0dXJuIGV9KSh0aGlzKTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgaW52YWxpZCBvcHRpb246ICR7dH1gKX19bWVhbih0KXtjb25zdCBlPXRoaXMuc3VtKHQpO3N3aXRjaCh0KXtjYXNlInJvdyI6Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWVbdF0vPXRoaXMuY29sdW1ucztyZXR1cm4gZTtjYXNlImNvbHVtbiI6Zm9yKGxldCB0PTA7dDx0aGlzLmNvbHVtbnM7dCsrKWVbdF0vPXRoaXMucm93cztyZXR1cm4gZTtjYXNlIHZvaWQgMDpyZXR1cm4gZS90aGlzLnNpemU7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgb3B0aW9uOiAke3R9YCl9fXZhcmlhbmNlKHQsZT17fSl7aWYoIm9iamVjdCI9PXR5cGVvZiB0JiYoZT10LHQ9dm9pZCAwKSwib2JqZWN0IiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigib3B0aW9ucyBtdXN0IGJlIGFuIG9iamVjdCIpO2NvbnN0e3VuYmlhc2VkOm49ITAsbWVhbjpvPXRoaXMubWVhbih0KX09ZTtpZigiYm9vbGVhbiIhPXR5cGVvZiBuKXRocm93IG5ldyBUeXBlRXJyb3IoInVuYmlhc2VkIG11c3QgYmUgYSBib29sZWFuIik7c3dpdGNoKHQpe2Nhc2Uicm93IjppZighQXJyYXkuaXNBcnJheShvKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJtZWFuIG11c3QgYmUgYW4gYXJyYXkiKTtyZXR1cm4oZnVuY3Rpb24gZSh0LG4sbyl7Y29uc3QgaT10LnJvd3MsYT10LmNvbHVtbnMscj1bXTtmb3IobGV0IGU9MDtlPGk7ZSsrKXtsZXQgaT0wLHM9MCxsPTA7Zm9yKGxldCBuPTA7bjxhO24rKylsPXQuZ2V0KGUsbiktb1tlXSxpKz1sLHMrPWwqbDtyLnB1c2gobj8ocy1pKmkvYSkvKGEtMSk6KHMtaSppL2EpL2EpfXJldHVybiByfSkodGhpcyxuLG8pO2Nhc2UiY29sdW1uIjppZighQXJyYXkuaXNBcnJheShvKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJtZWFuIG11c3QgYmUgYW4gYXJyYXkiKTtyZXR1cm4oZnVuY3Rpb24gaSh0LGUsbil7Y29uc3Qgbz10LnJvd3MsaT10LmNvbHVtbnMsYT1bXTtmb3IobGV0IHI9MDtyPGk7cisrKXtsZXQgaT0wLHM9MCxsPTA7Zm9yKGxldCBlPTA7ZTxvO2UrKylsPXQuZ2V0KGUsciktbltyXSxpKz1sLHMrPWwqbDthLnB1c2goZT8ocy1pKmkvbykvKG8tMSk6KHMtaSppL28pL28pfXJldHVybiBhfSkodGhpcyxuLG8pO2Nhc2Ugdm9pZCAwOmlmKCJudW1iZXIiIT10eXBlb2Ygbyl0aHJvdyBuZXcgVHlwZUVycm9yKCJtZWFuIG11c3QgYmUgYSBudW1iZXIiKTtyZXR1cm4oZnVuY3Rpb24gYSh0LGUsbil7Y29uc3Qgbz10LnJvd3MsaT10LmNvbHVtbnMsYT1vKmk7bGV0IHI9MCxzPTAsbD0wO2ZvcihsZXQgZT0wO2U8bztlKyspZm9yKGxldCBvPTA7bzxpO28rKylsPXQuZ2V0KGUsbyktbixyKz1sLHMrPWwqbDtyZXR1cm4gZT8ocy1yKnIvYSkvKGEtMSk6KHMtcipyL2EpL2F9KSh0aGlzLG4sbyk7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgb3B0aW9uOiAke3R9YCl9fXN0YW5kYXJkRGV2aWF0aW9uKHQsZSl7Im9iamVjdCI9PXR5cGVvZiB0JiYoZT10LHQ9dm9pZCAwKTtjb25zdCBuPXRoaXMudmFyaWFuY2UodCxlKTtpZih2b2lkIDA9PT10KXJldHVybiBNYXRoLnNxcnQobik7Zm9yKGxldCB0PTA7dDxuLmxlbmd0aDt0Kyspblt0XT1NYXRoLnNxcnQoblt0XSk7cmV0dXJuIG59Y2VudGVyKHQsZT17fSl7aWYoIm9iamVjdCI9PXR5cGVvZiB0JiYoZT10LHQ9dm9pZCAwKSwib2JqZWN0IiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigib3B0aW9ucyBtdXN0IGJlIGFuIG9iamVjdCIpO2NvbnN0e2NlbnRlcjpuPXRoaXMubWVhbih0KX09ZTtzd2l0Y2godCl7Y2FzZSJyb3ciOmlmKCFBcnJheS5pc0FycmF5KG4pKXRocm93IG5ldyBUeXBlRXJyb3IoImNlbnRlciBtdXN0IGJlIGFuIGFycmF5Iik7cmV0dXJuKGZ1bmN0aW9uIGUodCxuKXtmb3IobGV0IGU9MDtlPHQucm93cztlKyspZm9yKGxldCBvPTA7bzx0LmNvbHVtbnM7bysrKXQuc2V0KGUsbyx0LmdldChlLG8pLW5bZV0pfSkodGhpcyxuKSx0aGlzO2Nhc2UiY29sdW1uIjppZighQXJyYXkuaXNBcnJheShuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJjZW50ZXIgbXVzdCBiZSBhbiBhcnJheSIpO3JldHVybihmdW5jdGlvbiBvKHQsZSl7Zm9yKGxldCBuPTA7bjx0LnJvd3M7bisrKWZvcihsZXQgbz0wO288dC5jb2x1bW5zO28rKyl0LnNldChuLG8sdC5nZXQobixvKS1lW29dKX0pKHRoaXMsbiksdGhpcztjYXNlIHZvaWQgMDppZigibnVtYmVyIiE9dHlwZW9mIG4pdGhyb3cgbmV3IFR5cGVFcnJvcigiY2VudGVyIG11c3QgYmUgYSBudW1iZXIiKTtyZXR1cm4oZnVuY3Rpb24gaSh0LGUpe2ZvcihsZXQgbj0wO248dC5yb3dzO24rKylmb3IobGV0IG89MDtvPHQuY29sdW1ucztvKyspdC5zZXQobixvLHQuZ2V0KG4sbyktZSl9KSh0aGlzLG4pLHRoaXM7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgb3B0aW9uOiAke3R9YCl9fXNjYWxlKHQsZT17fSl7aWYoIm9iamVjdCI9PXR5cGVvZiB0JiYoZT10LHQ9dm9pZCAwKSwib2JqZWN0IiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigib3B0aW9ucyBtdXN0IGJlIGFuIG9iamVjdCIpO2xldCBuPWUuc2NhbGU7c3dpdGNoKHQpe2Nhc2Uicm93IjppZih2b2lkIDA9PT1uKW49KGZ1bmN0aW9uIGUodCl7Y29uc3QgZT1bXTtmb3IobGV0IG49MDtuPHQucm93cztuKyspe2xldCBvPTA7Zm9yKGxldCBlPTA7ZTx0LmNvbHVtbnM7ZSsrKW8rPU1hdGgucG93KHQuZ2V0KG4sZSksMikvKHQuY29sdW1ucy0xKTtlLnB1c2goTWF0aC5zcXJ0KG8pKX1yZXR1cm4gZX0pKHRoaXMpO2Vsc2UgaWYoIUFycmF5LmlzQXJyYXkobikpdGhyb3cgbmV3IFR5cGVFcnJvcigic2NhbGUgbXVzdCBiZSBhbiBhcnJheSIpO3JldHVybihmdW5jdGlvbiBvKHQsZSl7Zm9yKGxldCBuPTA7bjx0LnJvd3M7bisrKWZvcihsZXQgbz0wO288dC5jb2x1bW5zO28rKyl0LnNldChuLG8sdC5nZXQobixvKS9lW25dKX0pKHRoaXMsbiksdGhpcztjYXNlImNvbHVtbiI6aWYodm9pZCAwPT09biluPShmdW5jdGlvbiBpKHQpe2NvbnN0IGU9W107Zm9yKGxldCBuPTA7bjx0LmNvbHVtbnM7bisrKXtsZXQgbz0wO2ZvcihsZXQgZT0wO2U8dC5yb3dzO2UrKylvKz1NYXRoLnBvdyh0LmdldChlLG4pLDIpLyh0LnJvd3MtMSk7ZS5wdXNoKE1hdGguc3FydChvKSl9cmV0dXJuIGV9KSh0aGlzKTtlbHNlIGlmKCFBcnJheS5pc0FycmF5KG4pKXRocm93IG5ldyBUeXBlRXJyb3IoInNjYWxlIG11c3QgYmUgYW4gYXJyYXkiKTtyZXR1cm4oZnVuY3Rpb24gYSh0LGUpe2ZvcihsZXQgbj0wO248dC5yb3dzO24rKylmb3IobGV0IG89MDtvPHQuY29sdW1ucztvKyspdC5zZXQobixvLHQuZ2V0KG4sbykvZVtvXSl9KSh0aGlzLG4pLHRoaXM7Y2FzZSB2b2lkIDA6aWYodm9pZCAwPT09biluPShmdW5jdGlvbiByKHQpe2NvbnN0IGU9dC5zaXplLTE7bGV0IG49MDtmb3IobGV0IG89MDtvPHQuY29sdW1ucztvKyspZm9yKGxldCBpPTA7aTx0LnJvd3M7aSsrKW4rPU1hdGgucG93KHQuZ2V0KGksbyksMikvZTtyZXR1cm4gTWF0aC5zcXJ0KG4pfSkodGhpcyk7ZWxzZSBpZigibnVtYmVyIiE9dHlwZW9mIG4pdGhyb3cgbmV3IFR5cGVFcnJvcigic2NhbGUgbXVzdCBiZSBhIG51bWJlciIpO3JldHVybihmdW5jdGlvbiBzKHQsZSl7Zm9yKGxldCBuPTA7bjx0LnJvd3M7bisrKWZvcihsZXQgbz0wO288dC5jb2x1bW5zO28rKyl0LnNldChuLG8sdC5nZXQobixvKS9lKX0pKHRoaXMsbiksdGhpcztkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgaW52YWxpZCBvcHRpb246ICR7dH1gKX19dG9TdHJpbmcodCl7cmV0dXJuIGZNdCh0aGlzLHQpfX1mdW5jdGlvbiB3TXQodCxlKXtyZXR1cm4gdC1lfVBNdC5wcm90b3R5cGUua2xhc3M9Ik1hdHJpeCIsInVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJihQTXQucHJvdG90eXBlW1N5bWJvbC5mb3IoIm5vZGVqcy51dGlsLmluc3BlY3QuY3VzdG9tIildPWZ1bmN0aW9uIGtNdCgpe3JldHVybiBmTXQodGhpcyl9KSxQTXQucmFuZG9tPVBNdC5yYW5kLFBNdC5yYW5kb21JbnQ9UE10LnJhbmRJbnQsUE10LmRpYWdvbmFsPVBNdC5kaWFnLFBNdC5wcm90b3R5cGUuZGlhZ29uYWw9UE10LnByb3RvdHlwZS5kaWFnLFBNdC5pZGVudGl0eT1QTXQuZXllLFBNdC5wcm90b3R5cGUubmVnYXRlPVBNdC5wcm90b3R5cGUubmVnLFBNdC5wcm90b3R5cGUudGVuc29yUHJvZHVjdD1QTXQucHJvdG90eXBlLmtyb25lY2tlclByb2R1Y3Q7Y2xhc3MgU010IGV4dGVuZHMgUE10e2NvbnN0cnVjdG9yKHQsZSl7aWYoc3VwZXIoKSxTTXQuaXNNYXRyaXgodCkpcmV0dXJuIHQuY2xvbmUoKTtpZihOdW1iZXIuaXNJbnRlZ2VyKHQpJiZ0Pj0wKXtpZih0aGlzLmRhdGE9W10sIShOdW1iZXIuaXNJbnRlZ2VyKGUpJiZlPj0wKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJuQ29sdW1ucyBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlciIpO2ZvcihsZXQgbj0wO248dDtuKyspdGhpcy5kYXRhLnB1c2gobmV3IEZsb2F0NjRBcnJheShlKSl9ZWxzZXtpZighQXJyYXkuaXNBcnJheSh0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJGaXJzdCBhcmd1bWVudCBtdXN0IGJlIGEgcG9zaXRpdmUgbnVtYmVyIG9yIGFuIGFycmF5Iik7e2NvbnN0IG49dDtpZigibnVtYmVyIiE9dHlwZW9mKGU9KHQ9bi5sZW5ndGgpP25bMF0ubGVuZ3RoOjApKXRocm93IG5ldyBUeXBlRXJyb3IoIkRhdGEgbXVzdCBiZSBhIDJEIGFycmF5IHdpdGggYXQgbGVhc3Qgb25lIGVsZW1lbnQiKTt0aGlzLmRhdGE9W107Zm9yKGxldCBvPTA7bzx0O28rKyl7aWYobltvXS5sZW5ndGghPT1lKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbmNvbnNpc3RlbnQgYXJyYXkgZGltZW5zaW9ucyIpO3RoaXMuZGF0YS5wdXNoKEZsb2F0NjRBcnJheS5mcm9tKG5bb10pKX19fXRoaXMucm93cz10LHRoaXMuY29sdW1ucz1lfXNldCh0LGUsbil7cmV0dXJuIHRoaXMuZGF0YVt0XVtlXT1uLHRoaXN9Z2V0KHQsZSl7cmV0dXJuIHRoaXMuZGF0YVt0XVtlXX1yZW1vdmVSb3codCl7cmV0dXJuIGdNdCh0aGlzLHQpLHRoaXMuZGF0YS5zcGxpY2UodCwxKSx0aGlzLnJvd3MtPTEsdGhpc31hZGRSb3codCxlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9dCx0PXRoaXMucm93cyksZ010KHRoaXMsdCwhMCksZT1GbG9hdDY0QXJyYXkuZnJvbShiTXQodGhpcyxlKSksdGhpcy5kYXRhLnNwbGljZSh0LDAsZSksdGhpcy5yb3dzKz0xLHRoaXN9cmVtb3ZlQ29sdW1uKHQpe2hNdCh0aGlzLHQpO2ZvcihsZXQgZT0wO2U8dGhpcy5yb3dzO2UrKyl7Y29uc3Qgbj1uZXcgRmxvYXQ2NEFycmF5KHRoaXMuY29sdW1ucy0xKTtmb3IobGV0IG89MDtvPHQ7bysrKW5bb109dGhpcy5kYXRhW2VdW29dO2ZvcihsZXQgbz10KzE7bzx0aGlzLmNvbHVtbnM7bysrKW5bby0xXT10aGlzLmRhdGFbZV1bb107dGhpcy5kYXRhW2VdPW59cmV0dXJuIHRoaXMuY29sdW1ucy09MSx0aGlzfWFkZENvbHVtbih0LGUpe3ZvaWQgMD09PWUmJihlPXQsdD10aGlzLmNvbHVtbnMpLGhNdCh0aGlzLHQsITApLGU9eU10KHRoaXMsZSk7Zm9yKGxldCBuPTA7bjx0aGlzLnJvd3M7bisrKXtjb25zdCBvPW5ldyBGbG9hdDY0QXJyYXkodGhpcy5jb2x1bW5zKzEpO2xldCBpPTA7Zm9yKDtpPHQ7aSsrKW9baV09dGhpcy5kYXRhW25dW2ldO2ZvcihvW2krK109ZVtuXTtpPHRoaXMuY29sdW1ucysxO2krKylvW2ldPXRoaXMuZGF0YVtuXVtpLTFdO3RoaXMuZGF0YVtuXT1vfXJldHVybiB0aGlzLmNvbHVtbnMrPTEsdGhpc319IShmdW5jdGlvbiBETXQodCxlKXt0LnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24gdChlKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGU/dGhpcy5hZGRTKGUpOnRoaXMuYWRkTShlKX0sdC5wcm90b3R5cGUuYWRkUz1mdW5jdGlvbiB0KGUpe2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IG49MDtuPHRoaXMuY29sdW1ucztuKyspdGhpcy5zZXQodCxuLHRoaXMuZ2V0KHQsbikrZSk7cmV0dXJuIHRoaXN9LHQucHJvdG90eXBlLmFkZE09ZnVuY3Rpb24gdChuKXtpZihuPWUuY2hlY2tNYXRyaXgobiksdGhpcy5yb3dzIT09bi5yb3dzfHx0aGlzLmNvbHVtbnMhPT1uLmNvbHVtbnMpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIk1hdHJpY2VzIGRpbWVuc2lvbnMgbXVzdCBiZSBlcXVhbCIpO2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IGU9MDtlPHRoaXMuY29sdW1ucztlKyspdGhpcy5zZXQodCxlLHRoaXMuZ2V0KHQsZSkrbi5nZXQodCxlKSk7cmV0dXJuIHRoaXN9LHQuYWRkPWZ1bmN0aW9uIHQobixvKXtyZXR1cm4gbmV3IGUobikuYWRkKG8pfSx0LnByb3RvdHlwZS5zdWI9ZnVuY3Rpb24gdChlKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGU/dGhpcy5zdWJTKGUpOnRoaXMuc3ViTShlKX0sdC5wcm90b3R5cGUuc3ViUz1mdW5jdGlvbiB0KGUpe2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IG49MDtuPHRoaXMuY29sdW1ucztuKyspdGhpcy5zZXQodCxuLHRoaXMuZ2V0KHQsbiktZSk7cmV0dXJuIHRoaXN9LHQucHJvdG90eXBlLnN1Yk09ZnVuY3Rpb24gdChuKXtpZihuPWUuY2hlY2tNYXRyaXgobiksdGhpcy5yb3dzIT09bi5yb3dzfHx0aGlzLmNvbHVtbnMhPT1uLmNvbHVtbnMpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIk1hdHJpY2VzIGRpbWVuc2lvbnMgbXVzdCBiZSBlcXVhbCIpO2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IGU9MDtlPHRoaXMuY29sdW1ucztlKyspdGhpcy5zZXQodCxlLHRoaXMuZ2V0KHQsZSktbi5nZXQodCxlKSk7cmV0dXJuIHRoaXN9LHQuc3ViPWZ1bmN0aW9uIHQobixvKXtyZXR1cm4gbmV3IGUobikuc3ViKG8pfSx0LnByb3RvdHlwZS5zdWJ0cmFjdD10LnByb3RvdHlwZS5zdWIsdC5wcm90b3R5cGUuc3VidHJhY3RTPXQucHJvdG90eXBlLnN1YlMsdC5wcm90b3R5cGUuc3VidHJhY3RNPXQucHJvdG90eXBlLnN1Yk0sdC5zdWJ0cmFjdD10LnN1Yix0LnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24gdChlKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGU/dGhpcy5tdWxTKGUpOnRoaXMubXVsTShlKX0sdC5wcm90b3R5cGUubXVsUz1mdW5jdGlvbiB0KGUpe2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IG49MDtuPHRoaXMuY29sdW1ucztuKyspdGhpcy5zZXQodCxuLHRoaXMuZ2V0KHQsbikqZSk7cmV0dXJuIHRoaXN9LHQucHJvdG90eXBlLm11bE09ZnVuY3Rpb24gdChuKXtpZihuPWUuY2hlY2tNYXRyaXgobiksdGhpcy5yb3dzIT09bi5yb3dzfHx0aGlzLmNvbHVtbnMhPT1uLmNvbHVtbnMpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIk1hdHJpY2VzIGRpbWVuc2lvbnMgbXVzdCBiZSBlcXVhbCIpO2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IGU9MDtlPHRoaXMuY29sdW1ucztlKyspdGhpcy5zZXQodCxlLHRoaXMuZ2V0KHQsZSkqbi5nZXQodCxlKSk7cmV0dXJuIHRoaXN9LHQubXVsPWZ1bmN0aW9uIHQobixvKXtyZXR1cm4gbmV3IGUobikubXVsKG8pfSx0LnByb3RvdHlwZS5tdWx0aXBseT10LnByb3RvdHlwZS5tdWwsdC5wcm90b3R5cGUubXVsdGlwbHlTPXQucHJvdG90eXBlLm11bFMsdC5wcm90b3R5cGUubXVsdGlwbHlNPXQucHJvdG90eXBlLm11bE0sdC5tdWx0aXBseT10Lm11bCx0LnByb3RvdHlwZS5kaXY9ZnVuY3Rpb24gdChlKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGU/dGhpcy5kaXZTKGUpOnRoaXMuZGl2TShlKX0sdC5wcm90b3R5cGUuZGl2Uz1mdW5jdGlvbiB0KGUpe2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IG49MDtuPHRoaXMuY29sdW1ucztuKyspdGhpcy5zZXQodCxuLHRoaXMuZ2V0KHQsbikvZSk7cmV0dXJuIHRoaXN9LHQucHJvdG90eXBlLmRpdk09ZnVuY3Rpb24gdChuKXtpZihuPWUuY2hlY2tNYXRyaXgobiksdGhpcy5yb3dzIT09bi5yb3dzfHx0aGlzLmNvbHVtbnMhPT1uLmNvbHVtbnMpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIk1hdHJpY2VzIGRpbWVuc2lvbnMgbXVzdCBiZSBlcXVhbCIpO2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IGU9MDtlPHRoaXMuY29sdW1ucztlKyspdGhpcy5zZXQodCxlLHRoaXMuZ2V0KHQsZSkvbi5nZXQodCxlKSk7cmV0dXJuIHRoaXN9LHQuZGl2PWZ1bmN0aW9uIHQobixvKXtyZXR1cm4gbmV3IGUobikuZGl2KG8pfSx0LnByb3RvdHlwZS5kaXZpZGU9dC5wcm90b3R5cGUuZGl2LHQucHJvdG90eXBlLmRpdmlkZVM9dC5wcm90b3R5cGUuZGl2Uyx0LnByb3RvdHlwZS5kaXZpZGVNPXQucHJvdG90eXBlLmRpdk0sdC5kaXZpZGU9dC5kaXYsdC5wcm90b3R5cGUubW9kPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBlP3RoaXMubW9kUyhlKTp0aGlzLm1vZE0oZSl9LHQucHJvdG90eXBlLm1vZFM9ZnVuY3Rpb24gdChlKXtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBuPTA7bjx0aGlzLmNvbHVtbnM7bisrKXRoaXMuc2V0KHQsbix0aGlzLmdldCh0LG4pJWUpO3JldHVybiB0aGlzfSx0LnByb3RvdHlwZS5tb2RNPWZ1bmN0aW9uIHQobil7aWYobj1lLmNoZWNrTWF0cml4KG4pLHRoaXMucm93cyE9PW4ucm93c3x8dGhpcy5jb2x1bW5zIT09bi5jb2x1bW5zKXRocm93IG5ldyBSYW5nZUVycm9yKCJNYXRyaWNlcyBkaW1lbnNpb25zIG11c3QgYmUgZXF1YWwiKTtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBlPTA7ZTx0aGlzLmNvbHVtbnM7ZSsrKXRoaXMuc2V0KHQsZSx0aGlzLmdldCh0LGUpJW4uZ2V0KHQsZSkpO3JldHVybiB0aGlzfSx0Lm1vZD1mdW5jdGlvbiB0KG4sbyl7cmV0dXJuIG5ldyBlKG4pLm1vZChvKX0sdC5wcm90b3R5cGUubW9kdWx1cz10LnByb3RvdHlwZS5tb2QsdC5wcm90b3R5cGUubW9kdWx1c1M9dC5wcm90b3R5cGUubW9kUyx0LnByb3RvdHlwZS5tb2R1bHVzTT10LnByb3RvdHlwZS5tb2RNLHQubW9kdWx1cz10Lm1vZCx0LnByb3RvdHlwZS5hbmQ9ZnVuY3Rpb24gdChlKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGU/dGhpcy5hbmRTKGUpOnRoaXMuYW5kTShlKX0sdC5wcm90b3R5cGUuYW5kUz1mdW5jdGlvbiB0KGUpe2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IG49MDtuPHRoaXMuY29sdW1ucztuKyspdGhpcy5zZXQodCxuLHRoaXMuZ2V0KHQsbikmZSk7cmV0dXJuIHRoaXN9LHQucHJvdG90eXBlLmFuZE09ZnVuY3Rpb24gdChuKXtpZihuPWUuY2hlY2tNYXRyaXgobiksdGhpcy5yb3dzIT09bi5yb3dzfHx0aGlzLmNvbHVtbnMhPT1uLmNvbHVtbnMpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIk1hdHJpY2VzIGRpbWVuc2lvbnMgbXVzdCBiZSBlcXVhbCIpO2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IGU9MDtlPHRoaXMuY29sdW1ucztlKyspdGhpcy5zZXQodCxlLHRoaXMuZ2V0KHQsZSkmbi5nZXQodCxlKSk7cmV0dXJuIHRoaXN9LHQuYW5kPWZ1bmN0aW9uIHQobixvKXtyZXR1cm4gbmV3IGUobikuYW5kKG8pfSx0LnByb3RvdHlwZS5vcj1mdW5jdGlvbiB0KGUpe3JldHVybiJudW1iZXIiPT10eXBlb2YgZT90aGlzLm9yUyhlKTp0aGlzLm9yTShlKX0sdC5wcm90b3R5cGUub3JTPWZ1bmN0aW9uIHQoZSl7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgbj0wO248dGhpcy5jb2x1bW5zO24rKyl0aGlzLnNldCh0LG4sdGhpcy5nZXQodCxuKXxlKTtyZXR1cm4gdGhpc30sdC5wcm90b3R5cGUub3JNPWZ1bmN0aW9uIHQobil7aWYobj1lLmNoZWNrTWF0cml4KG4pLHRoaXMucm93cyE9PW4ucm93c3x8dGhpcy5jb2x1bW5zIT09bi5jb2x1bW5zKXRocm93IG5ldyBSYW5nZUVycm9yKCJNYXRyaWNlcyBkaW1lbnNpb25zIG11c3QgYmUgZXF1YWwiKTtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBlPTA7ZTx0aGlzLmNvbHVtbnM7ZSsrKXRoaXMuc2V0KHQsZSx0aGlzLmdldCh0LGUpfG4uZ2V0KHQsZSkpO3JldHVybiB0aGlzfSx0Lm9yPWZ1bmN0aW9uIHQobixvKXtyZXR1cm4gbmV3IGUobikub3Iobyl9LHQucHJvdG90eXBlLnhvcj1mdW5jdGlvbiB0KGUpe3JldHVybiJudW1iZXIiPT10eXBlb2YgZT90aGlzLnhvclMoZSk6dGhpcy54b3JNKGUpfSx0LnByb3RvdHlwZS54b3JTPWZ1bmN0aW9uIHQoZSl7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgbj0wO248dGhpcy5jb2x1bW5zO24rKyl0aGlzLnNldCh0LG4sdGhpcy5nZXQodCxuKV5lKTtyZXR1cm4gdGhpc30sdC5wcm90b3R5cGUueG9yTT1mdW5jdGlvbiB0KG4pe2lmKG49ZS5jaGVja01hdHJpeChuKSx0aGlzLnJvd3MhPT1uLnJvd3N8fHRoaXMuY29sdW1ucyE9PW4uY29sdW1ucyl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiTWF0cmljZXMgZGltZW5zaW9ucyBtdXN0IGJlIGVxdWFsIik7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgZT0wO2U8dGhpcy5jb2x1bW5zO2UrKyl0aGlzLnNldCh0LGUsdGhpcy5nZXQodCxlKV5uLmdldCh0LGUpKTtyZXR1cm4gdGhpc30sdC54b3I9ZnVuY3Rpb24gdChuLG8pe3JldHVybiBuZXcgZShuKS54b3Iobyl9LHQucHJvdG90eXBlLmxlZnRTaGlmdD1mdW5jdGlvbiB0KGUpe3JldHVybiJudW1iZXIiPT10eXBlb2YgZT90aGlzLmxlZnRTaGlmdFMoZSk6dGhpcy5sZWZ0U2hpZnRNKGUpfSx0LnByb3RvdHlwZS5sZWZ0U2hpZnRTPWZ1bmN0aW9uIHQoZSl7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgbj0wO248dGhpcy5jb2x1bW5zO24rKyl0aGlzLnNldCh0LG4sdGhpcy5nZXQodCxuKTw8ZSk7cmV0dXJuIHRoaXN9LHQucHJvdG90eXBlLmxlZnRTaGlmdE09ZnVuY3Rpb24gdChuKXtpZihuPWUuY2hlY2tNYXRyaXgobiksdGhpcy5yb3dzIT09bi5yb3dzfHx0aGlzLmNvbHVtbnMhPT1uLmNvbHVtbnMpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIk1hdHJpY2VzIGRpbWVuc2lvbnMgbXVzdCBiZSBlcXVhbCIpO2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IGU9MDtlPHRoaXMuY29sdW1ucztlKyspdGhpcy5zZXQodCxlLHRoaXMuZ2V0KHQsZSk8PG4uZ2V0KHQsZSkpO3JldHVybiB0aGlzfSx0LmxlZnRTaGlmdD1mdW5jdGlvbiB0KG4sbyl7cmV0dXJuIG5ldyBlKG4pLmxlZnRTaGlmdChvKX0sdC5wcm90b3R5cGUuc2lnblByb3BhZ2F0aW5nUmlnaHRTaGlmdD1mdW5jdGlvbiB0KGUpe3JldHVybiJudW1iZXIiPT10eXBlb2YgZT90aGlzLnNpZ25Qcm9wYWdhdGluZ1JpZ2h0U2hpZnRTKGUpOnRoaXMuc2lnblByb3BhZ2F0aW5nUmlnaHRTaGlmdE0oZSl9LHQucHJvdG90eXBlLnNpZ25Qcm9wYWdhdGluZ1JpZ2h0U2hpZnRTPWZ1bmN0aW9uIHQoZSl7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgbj0wO248dGhpcy5jb2x1bW5zO24rKyl0aGlzLnNldCh0LG4sdGhpcy5nZXQodCxuKT4+ZSk7cmV0dXJuIHRoaXN9LHQucHJvdG90eXBlLnNpZ25Qcm9wYWdhdGluZ1JpZ2h0U2hpZnRNPWZ1bmN0aW9uIHQobil7aWYobj1lLmNoZWNrTWF0cml4KG4pLHRoaXMucm93cyE9PW4ucm93c3x8dGhpcy5jb2x1bW5zIT09bi5jb2x1bW5zKXRocm93IG5ldyBSYW5nZUVycm9yKCJNYXRyaWNlcyBkaW1lbnNpb25zIG11c3QgYmUgZXF1YWwiKTtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBlPTA7ZTx0aGlzLmNvbHVtbnM7ZSsrKXRoaXMuc2V0KHQsZSx0aGlzLmdldCh0LGUpPj5uLmdldCh0LGUpKTtyZXR1cm4gdGhpc30sdC5zaWduUHJvcGFnYXRpbmdSaWdodFNoaWZ0PWZ1bmN0aW9uIHQobixvKXtyZXR1cm4gbmV3IGUobikuc2lnblByb3BhZ2F0aW5nUmlnaHRTaGlmdChvKX0sdC5wcm90b3R5cGUucmlnaHRTaGlmdD1mdW5jdGlvbiB0KGUpe3JldHVybiJudW1iZXIiPT10eXBlb2YgZT90aGlzLnJpZ2h0U2hpZnRTKGUpOnRoaXMucmlnaHRTaGlmdE0oZSl9LHQucHJvdG90eXBlLnJpZ2h0U2hpZnRTPWZ1bmN0aW9uIHQoZSl7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgbj0wO248dGhpcy5jb2x1bW5zO24rKyl0aGlzLnNldCh0LG4sdGhpcy5nZXQodCxuKT4+PmUpO3JldHVybiB0aGlzfSx0LnByb3RvdHlwZS5yaWdodFNoaWZ0TT1mdW5jdGlvbiB0KG4pe2lmKG49ZS5jaGVja01hdHJpeChuKSx0aGlzLnJvd3MhPT1uLnJvd3N8fHRoaXMuY29sdW1ucyE9PW4uY29sdW1ucyl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiTWF0cmljZXMgZGltZW5zaW9ucyBtdXN0IGJlIGVxdWFsIik7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgZT0wO2U8dGhpcy5jb2x1bW5zO2UrKyl0aGlzLnNldCh0LGUsdGhpcy5nZXQodCxlKT4+Pm4uZ2V0KHQsZSkpO3JldHVybiB0aGlzfSx0LnJpZ2h0U2hpZnQ9ZnVuY3Rpb24gdChuLG8pe3JldHVybiBuZXcgZShuKS5yaWdodFNoaWZ0KG8pfSx0LnByb3RvdHlwZS56ZXJvRmlsbFJpZ2h0U2hpZnQ9dC5wcm90b3R5cGUucmlnaHRTaGlmdCx0LnByb3RvdHlwZS56ZXJvRmlsbFJpZ2h0U2hpZnRTPXQucHJvdG90eXBlLnJpZ2h0U2hpZnRTLHQucHJvdG90eXBlLnplcm9GaWxsUmlnaHRTaGlmdE09dC5wcm90b3R5cGUucmlnaHRTaGlmdE0sdC56ZXJvRmlsbFJpZ2h0U2hpZnQ9dC5yaWdodFNoaWZ0LHQucHJvdG90eXBlLm5vdD1mdW5jdGlvbiB0KCl7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgZT0wO2U8dGhpcy5jb2x1bW5zO2UrKyl0aGlzLnNldCh0LGUsfnRoaXMuZ2V0KHQsZSkpO3JldHVybiB0aGlzfSx0Lm5vdD1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcgZShuKS5ub3QoKX0sdC5wcm90b3R5cGUuYWJzPWZ1bmN0aW9uIHQoKXtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBlPTA7ZTx0aGlzLmNvbHVtbnM7ZSsrKXRoaXMuc2V0KHQsZSxNYXRoLmFicyh0aGlzLmdldCh0LGUpKSk7cmV0dXJuIHRoaXN9LHQuYWJzPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyBlKG4pLmFicygpfSx0LnByb3RvdHlwZS5hY29zPWZ1bmN0aW9uIHQoKXtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBlPTA7ZTx0aGlzLmNvbHVtbnM7ZSsrKXRoaXMuc2V0KHQsZSxNYXRoLmFjb3ModGhpcy5nZXQodCxlKSkpO3JldHVybiB0aGlzfSx0LmFjb3M9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3IGUobikuYWNvcygpfSx0LnByb3RvdHlwZS5hY29zaD1mdW5jdGlvbiB0KCl7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgZT0wO2U8dGhpcy5jb2x1bW5zO2UrKyl0aGlzLnNldCh0LGUsTWF0aC5hY29zaCh0aGlzLmdldCh0LGUpKSk7cmV0dXJuIHRoaXN9LHQuYWNvc2g9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3IGUobikuYWNvc2goKX0sdC5wcm90b3R5cGUuYXNpbj1mdW5jdGlvbiB0KCl7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgZT0wO2U8dGhpcy5jb2x1bW5zO2UrKyl0aGlzLnNldCh0LGUsTWF0aC5hc2luKHRoaXMuZ2V0KHQsZSkpKTtyZXR1cm4gdGhpc30sdC5hc2luPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyBlKG4pLmFzaW4oKX0sdC5wcm90b3R5cGUuYXNpbmg9ZnVuY3Rpb24gdCgpe2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IGU9MDtlPHRoaXMuY29sdW1ucztlKyspdGhpcy5zZXQodCxlLE1hdGguYXNpbmgodGhpcy5nZXQodCxlKSkpO3JldHVybiB0aGlzfSx0LmFzaW5oPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyBlKG4pLmFzaW5oKCl9LHQucHJvdG90eXBlLmF0YW49ZnVuY3Rpb24gdCgpe2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IGU9MDtlPHRoaXMuY29sdW1ucztlKyspdGhpcy5zZXQodCxlLE1hdGguYXRhbih0aGlzLmdldCh0LGUpKSk7cmV0dXJuIHRoaXN9LHQuYXRhbj1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcgZShuKS5hdGFuKCl9LHQucHJvdG90eXBlLmF0YW5oPWZ1bmN0aW9uIHQoKXtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBlPTA7ZTx0aGlzLmNvbHVtbnM7ZSsrKXRoaXMuc2V0KHQsZSxNYXRoLmF0YW5oKHRoaXMuZ2V0KHQsZSkpKTtyZXR1cm4gdGhpc30sdC5hdGFuaD1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcgZShuKS5hdGFuaCgpfSx0LnByb3RvdHlwZS5jYnJ0PWZ1bmN0aW9uIHQoKXtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBlPTA7ZTx0aGlzLmNvbHVtbnM7ZSsrKXRoaXMuc2V0KHQsZSxNYXRoLmNicnQodGhpcy5nZXQodCxlKSkpO3JldHVybiB0aGlzfSx0LmNicnQ9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3IGUobikuY2JydCgpfSx0LnByb3RvdHlwZS5jZWlsPWZ1bmN0aW9uIHQoKXtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBlPTA7ZTx0aGlzLmNvbHVtbnM7ZSsrKXRoaXMuc2V0KHQsZSxNYXRoLmNlaWwodGhpcy5nZXQodCxlKSkpO3JldHVybiB0aGlzfSx0LmNlaWw9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3IGUobikuY2VpbCgpfSx0LnByb3RvdHlwZS5jbHozMj1mdW5jdGlvbiB0KCl7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgZT0wO2U8dGhpcy5jb2x1bW5zO2UrKyl0aGlzLnNldCh0LGUsTWF0aC5jbHozMih0aGlzLmdldCh0LGUpKSk7cmV0dXJuIHRoaXN9LHQuY2x6MzI9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3IGUobikuY2x6MzIoKX0sdC5wcm90b3R5cGUuY29zPWZ1bmN0aW9uIHQoKXtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBlPTA7ZTx0aGlzLmNvbHVtbnM7ZSsrKXRoaXMuc2V0KHQsZSxNYXRoLmNvcyh0aGlzLmdldCh0LGUpKSk7cmV0dXJuIHRoaXN9LHQuY29zPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyBlKG4pLmNvcygpfSx0LnByb3RvdHlwZS5jb3NoPWZ1bmN0aW9uIHQoKXtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBlPTA7ZTx0aGlzLmNvbHVtbnM7ZSsrKXRoaXMuc2V0KHQsZSxNYXRoLmNvc2godGhpcy5nZXQodCxlKSkpO3JldHVybiB0aGlzfSx0LmNvc2g9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3IGUobikuY29zaCgpfSx0LnByb3RvdHlwZS5leHA9ZnVuY3Rpb24gdCgpe2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IGU9MDtlPHRoaXMuY29sdW1ucztlKyspdGhpcy5zZXQodCxlLE1hdGguZXhwKHRoaXMuZ2V0KHQsZSkpKTtyZXR1cm4gdGhpc30sdC5leHA9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3IGUobikuZXhwKCl9LHQucHJvdG90eXBlLmV4cG0xPWZ1bmN0aW9uIHQoKXtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBlPTA7ZTx0aGlzLmNvbHVtbnM7ZSsrKXRoaXMuc2V0KHQsZSxNYXRoLmV4cG0xKHRoaXMuZ2V0KHQsZSkpKTtyZXR1cm4gdGhpc30sdC5leHBtMT1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcgZShuKS5leHBtMSgpfSx0LnByb3RvdHlwZS5mbG9vcj1mdW5jdGlvbiB0KCl7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgZT0wO2U8dGhpcy5jb2x1bW5zO2UrKyl0aGlzLnNldCh0LGUsTWF0aC5mbG9vcih0aGlzLmdldCh0LGUpKSk7cmV0dXJuIHRoaXN9LHQuZmxvb3I9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3IGUobikuZmxvb3IoKX0sdC5wcm90b3R5cGUuZnJvdW5kPWZ1bmN0aW9uIHQoKXtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBlPTA7ZTx0aGlzLmNvbHVtbnM7ZSsrKXRoaXMuc2V0KHQsZSxNYXRoLmZyb3VuZCh0aGlzLmdldCh0LGUpKSk7cmV0dXJuIHRoaXN9LHQuZnJvdW5kPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyBlKG4pLmZyb3VuZCgpfSx0LnByb3RvdHlwZS5sb2c9ZnVuY3Rpb24gdCgpe2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IGU9MDtlPHRoaXMuY29sdW1ucztlKyspdGhpcy5zZXQodCxlLE1hdGgubG9nKHRoaXMuZ2V0KHQsZSkpKTtyZXR1cm4gdGhpc30sdC5sb2c9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3IGUobikubG9nKCl9LHQucHJvdG90eXBlLmxvZzFwPWZ1bmN0aW9uIHQoKXtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBlPTA7ZTx0aGlzLmNvbHVtbnM7ZSsrKXRoaXMuc2V0KHQsZSxNYXRoLmxvZzFwKHRoaXMuZ2V0KHQsZSkpKTtyZXR1cm4gdGhpc30sdC5sb2cxcD1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcgZShuKS5sb2cxcCgpfSx0LnByb3RvdHlwZS5sb2cxMD1mdW5jdGlvbiB0KCl7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgZT0wO2U8dGhpcy5jb2x1bW5zO2UrKyl0aGlzLnNldCh0LGUsTWF0aC5sb2cxMCh0aGlzLmdldCh0LGUpKSk7cmV0dXJuIHRoaXN9LHQubG9nMTA9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3IGUobikubG9nMTAoKX0sdC5wcm90b3R5cGUubG9nMj1mdW5jdGlvbiB0KCl7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgZT0wO2U8dGhpcy5jb2x1bW5zO2UrKyl0aGlzLnNldCh0LGUsTWF0aC5sb2cyKHRoaXMuZ2V0KHQsZSkpKTtyZXR1cm4gdGhpc30sdC5sb2cyPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyBlKG4pLmxvZzIoKX0sdC5wcm90b3R5cGUucm91bmQ9ZnVuY3Rpb24gdCgpe2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IGU9MDtlPHRoaXMuY29sdW1ucztlKyspdGhpcy5zZXQodCxlLE1hdGgucm91bmQodGhpcy5nZXQodCxlKSkpO3JldHVybiB0aGlzfSx0LnJvdW5kPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyBlKG4pLnJvdW5kKCl9LHQucHJvdG90eXBlLnNpZ249ZnVuY3Rpb24gdCgpe2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IGU9MDtlPHRoaXMuY29sdW1ucztlKyspdGhpcy5zZXQodCxlLE1hdGguc2lnbih0aGlzLmdldCh0LGUpKSk7cmV0dXJuIHRoaXN9LHQuc2lnbj1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcgZShuKS5zaWduKCl9LHQucHJvdG90eXBlLnNpbj1mdW5jdGlvbiB0KCl7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgZT0wO2U8dGhpcy5jb2x1bW5zO2UrKyl0aGlzLnNldCh0LGUsTWF0aC5zaW4odGhpcy5nZXQodCxlKSkpO3JldHVybiB0aGlzfSx0LnNpbj1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcgZShuKS5zaW4oKX0sdC5wcm90b3R5cGUuc2luaD1mdW5jdGlvbiB0KCl7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgZT0wO2U8dGhpcy5jb2x1bW5zO2UrKyl0aGlzLnNldCh0LGUsTWF0aC5zaW5oKHRoaXMuZ2V0KHQsZSkpKTtyZXR1cm4gdGhpc30sdC5zaW5oPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyBlKG4pLnNpbmgoKX0sdC5wcm90b3R5cGUuc3FydD1mdW5jdGlvbiB0KCl7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgZT0wO2U8dGhpcy5jb2x1bW5zO2UrKyl0aGlzLnNldCh0LGUsTWF0aC5zcXJ0KHRoaXMuZ2V0KHQsZSkpKTtyZXR1cm4gdGhpc30sdC5zcXJ0PWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyBlKG4pLnNxcnQoKX0sdC5wcm90b3R5cGUudGFuPWZ1bmN0aW9uIHQoKXtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBlPTA7ZTx0aGlzLmNvbHVtbnM7ZSsrKXRoaXMuc2V0KHQsZSxNYXRoLnRhbih0aGlzLmdldCh0LGUpKSk7cmV0dXJuIHRoaXN9LHQudGFuPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyBlKG4pLnRhbigpfSx0LnByb3RvdHlwZS50YW5oPWZ1bmN0aW9uIHQoKXtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBlPTA7ZTx0aGlzLmNvbHVtbnM7ZSsrKXRoaXMuc2V0KHQsZSxNYXRoLnRhbmgodGhpcy5nZXQodCxlKSkpO3JldHVybiB0aGlzfSx0LnRhbmg9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3IGUobikudGFuaCgpfSx0LnByb3RvdHlwZS50cnVuYz1mdW5jdGlvbiB0KCl7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgZT0wO2U8dGhpcy5jb2x1bW5zO2UrKyl0aGlzLnNldCh0LGUsTWF0aC50cnVuYyh0aGlzLmdldCh0LGUpKSk7cmV0dXJuIHRoaXN9LHQudHJ1bmM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3IGUobikudHJ1bmMoKX0sdC5wb3c9ZnVuY3Rpb24gdChuLG8pe3JldHVybiBuZXcgZShuKS5wb3cobyl9LHQucHJvdG90eXBlLnBvdz1mdW5jdGlvbiB0KGUpe3JldHVybiJudW1iZXIiPT10eXBlb2YgZT90aGlzLnBvd1MoZSk6dGhpcy5wb3dNKGUpfSx0LnByb3RvdHlwZS5wb3dTPWZ1bmN0aW9uIHQoZSl7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgbj0wO248dGhpcy5jb2x1bW5zO24rKyl0aGlzLnNldCh0LG4sTWF0aC5wb3codGhpcy5nZXQodCxuKSxlKSk7cmV0dXJuIHRoaXN9LHQucHJvdG90eXBlLnBvd009ZnVuY3Rpb24gdChuKXtpZihuPWUuY2hlY2tNYXRyaXgobiksdGhpcy5yb3dzIT09bi5yb3dzfHx0aGlzLmNvbHVtbnMhPT1uLmNvbHVtbnMpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIk1hdHJpY2VzIGRpbWVuc2lvbnMgbXVzdCBiZSBlcXVhbCIpO2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IGU9MDtlPHRoaXMuY29sdW1ucztlKyspdGhpcy5zZXQodCxlLE1hdGgucG93KHRoaXMuZ2V0KHQsZSksbi5nZXQodCxlKSkpO3JldHVybiB0aGlzfX0pKFBNdCxTTXQpO2NsYXNzIFJNdCBleHRlbmRzIFBNdHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMuZGF0YT10LHRoaXMucm93cz10Lmxlbmd0aCx0aGlzLmNvbHVtbnM9dFswXS5sZW5ndGh9c2V0KHQsZSxuKXtyZXR1cm4gdGhpcy5kYXRhW3RdW2VdPW4sdGhpc31nZXQodCxlKXtyZXR1cm4gdGhpcy5kYXRhW3RdW2VdfX1jbGFzcyBFTXR7Y29uc3RydWN0b3IodCl7bGV0IGUsbixvLGksYSxyLHMsbCxjLGQ9KHQ9Uk10LmNoZWNrTWF0cml4KHQpKS5jbG9uZSgpLHA9ZC5yb3dzLG09ZC5jb2x1bW5zLGY9bmV3IEZsb2F0NjRBcnJheShwKSx1PTE7Zm9yKGU9MDtlPHA7ZSsrKWZbZV09ZTtmb3IobD1uZXcgRmxvYXQ2NEFycmF5KHApLG49MDtuPG07bisrKXtmb3IoZT0wO2U8cDtlKyspbFtlXT1kLmdldChlLG4pO2ZvcihlPTA7ZTxwO2UrKyl7Zm9yKGM9TWF0aC5taW4oZSxuKSxhPTAsbz0wO288YztvKyspYSs9ZC5nZXQoZSxvKSpsW29dO2xbZV0tPWEsZC5zZXQoZSxuLGxbZV0pfWZvcihpPW4sZT1uKzE7ZTxwO2UrKylNYXRoLmFicyhsW2VdKT5NYXRoLmFicyhsW2ldKSYmKGk9ZSk7aWYoaSE9PW4pe2ZvcihvPTA7bzxtO28rKylyPWQuZ2V0KGksbyksZC5zZXQoaSxvLGQuZ2V0KG4sbykpLGQuc2V0KG4sbyxyKTtzPWZbaV0sZltpXT1mW25dLGZbbl09cyx1PS11fWlmKG48cCYmMCE9PWQuZ2V0KG4sbikpZm9yKGU9bisxO2U8cDtlKyspZC5zZXQoZSxuLGQuZ2V0KGUsbikvZC5nZXQobixuKSl9dGhpcy5MVT1kLHRoaXMucGl2b3RWZWN0b3I9Zix0aGlzLnBpdm90U2lnbj11fWlzU2luZ3VsYXIoKXtsZXQgdD10aGlzLkxVLGU9dC5jb2x1bW5zO2ZvcihsZXQgbj0wO248ZTtuKyspaWYoMD09PXQuZ2V0KG4sbikpcmV0dXJuITA7cmV0dXJuITF9c29sdmUodCl7dD1TTXQuY2hlY2tNYXRyaXgodCk7bGV0IGU9dGhpcy5MVTtpZihlLnJvd3MhPT10LnJvd3MpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIG1hdHJpeCBkaW1lbnNpb25zIik7aWYodGhpcy5pc1Npbmd1bGFyKCkpdGhyb3cgbmV3IEVycm9yKCJMVSBtYXRyaXggaXMgc2luZ3VsYXIiKTtsZXQgbixvLGksYT10LmNvbHVtbnMscj10LnN1Yk1hdHJpeFJvdyh0aGlzLnBpdm90VmVjdG9yLDAsYS0xKSxzPWUuY29sdW1ucztmb3IoaT0wO2k8cztpKyspZm9yKG49aSsxO248cztuKyspZm9yKG89MDtvPGE7bysrKXIuc2V0KG4sbyxyLmdldChuLG8pLXIuZ2V0KGksbykqZS5nZXQobixpKSk7Zm9yKGk9cy0xO2k+PTA7aS0tKXtmb3Iobz0wO288YTtvKyspci5zZXQoaSxvLHIuZ2V0KGksbykvZS5nZXQoaSxpKSk7Zm9yKG49MDtuPGk7bisrKWZvcihvPTA7bzxhO28rKylyLnNldChuLG8sci5nZXQobixvKS1yLmdldChpLG8pKmUuZ2V0KG4saSkpfXJldHVybiByfWdldCBkZXRlcm1pbmFudCgpe2xldCB0PXRoaXMuTFU7aWYoIXQuaXNTcXVhcmUoKSl0aHJvdyBuZXcgRXJyb3IoIk1hdHJpeCBtdXN0IGJlIHNxdWFyZSIpO2xldCBlPXRoaXMucGl2b3RTaWduLG49dC5jb2x1bW5zO2ZvcihsZXQgbz0wO288bjtvKyspZSo9dC5nZXQobyxvKTtyZXR1cm4gZX1nZXQgbG93ZXJUcmlhbmd1bGFyTWF0cml4KCl7bGV0IHQ9dGhpcy5MVSxlPXQucm93cyxuPXQuY29sdW1ucyxvPW5ldyBTTXQoZSxuKTtmb3IobGV0IGk9MDtpPGU7aSsrKWZvcihsZXQgZT0wO2U8bjtlKyspby5zZXQoaSxlLGk+ZT90LmdldChpLGUpOmk9PT1lPzE6MCk7cmV0dXJuIG99Z2V0IHVwcGVyVHJpYW5ndWxhck1hdHJpeCgpe2xldCB0PXRoaXMuTFUsZT10LnJvd3Msbj10LmNvbHVtbnMsbz1uZXcgU010KGUsbik7Zm9yKGxldCBpPTA7aTxlO2krKylmb3IobGV0IGU9MDtlPG47ZSsrKW8uc2V0KGksZSxpPD1lP3QuZ2V0KGksZSk6MCk7cmV0dXJuIG99Z2V0IHBpdm90UGVybXV0YXRpb25WZWN0b3IoKXtyZXR1cm4gQXJyYXkuZnJvbSh0aGlzLnBpdm90VmVjdG9yKX19ZnVuY3Rpb24gQU10KHQsZSl7bGV0IG49MDtyZXR1cm4gTWF0aC5hYnModCk+TWF0aC5hYnMoZSk/KG49ZS90LE1hdGguYWJzKHQpKk1hdGguc3FydCgxK24qbikpOjAhPT1lPyhuPXQvZSxNYXRoLmFicyhlKSpNYXRoLnNxcnQoMStuKm4pKTowfWNsYXNzIFRNdHtjb25zdHJ1Y3Rvcih0KXtsZXQgZSxuLG8saSxhPSh0PVJNdC5jaGVja01hdHJpeCh0KSkuY2xvbmUoKSxyPXQucm93cyxzPXQuY29sdW1ucyxsPW5ldyBGbG9hdDY0QXJyYXkocyk7Zm9yKG89MDtvPHM7bysrKXtsZXQgdD0wO2ZvcihlPW87ZTxyO2UrKyl0PUFNdCh0LGEuZ2V0KGUsbykpO2lmKDAhPT10KXtmb3IoYS5nZXQobyxvKTwwJiYodD0tdCksZT1vO2U8cjtlKyspYS5zZXQoZSxvLGEuZ2V0KGUsbykvdCk7Zm9yKGEuc2V0KG8sbyxhLmdldChvLG8pKzEpLG49bysxO248cztuKyspe2ZvcihpPTAsZT1vO2U8cjtlKyspaSs9YS5nZXQoZSxvKSphLmdldChlLG4pO2ZvcihpPS1pL2EuZ2V0KG8sbyksZT1vO2U8cjtlKyspYS5zZXQoZSxuLGEuZ2V0KGUsbikraSphLmdldChlLG8pKX19bFtvXT0tdH10aGlzLlFSPWEsdGhpcy5SZGlhZz1sfXNvbHZlKHQpe3Q9U010LmNoZWNrTWF0cml4KHQpO2xldCBlPXRoaXMuUVIsbj1lLnJvd3M7aWYodC5yb3dzIT09bil0aHJvdyBuZXcgRXJyb3IoIk1hdHJpeCByb3cgZGltZW5zaW9ucyBtdXN0IGFncmVlIik7aWYoIXRoaXMuaXNGdWxsUmFuaygpKXRocm93IG5ldyBFcnJvcigiTWF0cml4IGlzIHJhbmsgZGVmaWNpZW50Iik7bGV0IG8saSxhLHIscz10LmNvbHVtbnMsbD10LmNsb25lKCksYz1lLmNvbHVtbnM7Zm9yKGE9MDthPGM7YSsrKWZvcihpPTA7aTxzO2krKyl7Zm9yKHI9MCxvPWE7bzxuO28rKylyKz1lLmdldChvLGEpKmwuZ2V0KG8saSk7Zm9yKHI9LXIvZS5nZXQoYSxhKSxvPWE7bzxuO28rKylsLnNldChvLGksbC5nZXQobyxpKStyKmUuZ2V0KG8sYSkpfWZvcihhPWMtMTthPj0wO2EtLSl7Zm9yKGk9MDtpPHM7aSsrKWwuc2V0KGEsaSxsLmdldChhLGkpL3RoaXMuUmRpYWdbYV0pO2ZvcihvPTA7bzxhO28rKylmb3IoaT0wO2k8cztpKyspbC5zZXQobyxpLGwuZ2V0KG8saSktbC5nZXQoYSxpKSplLmdldChvLGEpKX1yZXR1cm4gbC5zdWJNYXRyaXgoMCxjLTEsMCxzLTEpfWlzRnVsbFJhbmsoKXtsZXQgdD10aGlzLlFSLmNvbHVtbnM7Zm9yKGxldCBlPTA7ZTx0O2UrKylpZigwPT09dGhpcy5SZGlhZ1tlXSlyZXR1cm4hMTtyZXR1cm4hMH1nZXQgdXBwZXJUcmlhbmd1bGFyTWF0cml4KCl7bGV0IHQsZSxuPXRoaXMuUVIsbz1uLmNvbHVtbnMsaT1uZXcgU010KG8sbyk7Zm9yKHQ9MDt0PG87dCsrKWZvcihlPTA7ZTxvO2UrKylpLnNldCh0LGUsdDxlP24uZ2V0KHQsZSk6dD09PWU/dGhpcy5SZGlhZ1t0XTowKTtyZXR1cm4gaX1nZXQgb3J0aG9nb25hbE1hdHJpeCgpe2xldCB0LGUsbixvLGk9dGhpcy5RUixhPWkucm93cyxyPWkuY29sdW1ucyxzPW5ldyBTTXQoYSxyKTtmb3Iobj1yLTE7bj49MDtuLS0pe2Zvcih0PTA7dDxhO3QrKylzLnNldCh0LG4sMCk7Zm9yKHMuc2V0KG4sbiwxKSxlPW47ZTxyO2UrKylpZigwIT09aS5nZXQobixuKSl7Zm9yKG89MCx0PW47dDxhO3QrKylvKz1pLmdldCh0LG4pKnMuZ2V0KHQsZSk7Zm9yKG89LW8vaS5nZXQobixuKSx0PW47dDxhO3QrKylzLnNldCh0LGUscy5nZXQodCxlKStvKmkuZ2V0KHQsbikpfX1yZXR1cm4gc319Y2xhc3MgTk10e2NvbnN0cnVjdG9yKHQsZT17fSl7aWYoKHQ9Uk10LmNoZWNrTWF0cml4KHQpKS5pc0VtcHR5KCkpdGhyb3cgbmV3IEVycm9yKCJNYXRyaXggbXVzdCBiZSBub24tZW1wdHkiKTtsZXQgbj10LnJvd3Msbz10LmNvbHVtbnM7Y29uc3R7Y29tcHV0ZUxlZnRTaW5ndWxhclZlY3RvcnM6aT0hMCxjb21wdXRlUmlnaHRTaW5ndWxhclZlY3RvcnM6YT0hMCxhdXRvVHJhbnNwb3NlOnI9ITF9PWU7bGV0IHMsbD1Cb29sZWFuKGkpLGM9Qm9vbGVhbihhKSxkPSExO2lmKG48bylpZihyKXtzPXQudHJhbnNwb3NlKCksbj1zLnJvd3Msbz1zLmNvbHVtbnMsZD0hMDtsZXQgZT1sO2w9YyxjPWV9ZWxzZSBzPXQuY2xvbmUoKSxjb25zb2xlLndhcm4oIkNvbXB1dGluZyBTVkQgb24gYSBtYXRyaXggd2l0aCBtb3JlIGNvbHVtbnMgdGhhbiByb3dzLiBDb25zaWRlciBlbmFibGluZyBhdXRvVHJhbnNwb3NlIik7ZWxzZSBzPXQuY2xvbmUoKTtsZXQgcD1NYXRoLm1pbihuLG8pLG09TWF0aC5taW4obisxLG8pLGY9bmV3IEZsb2F0NjRBcnJheShtKSx1PW5ldyBTTXQobixwKSxnPW5ldyBTTXQobyxvKSxoPW5ldyBGbG9hdDY0QXJyYXkobyksYj1uZXcgRmxvYXQ2NEFycmF5KG4pLHk9bmV3IEZsb2F0NjRBcnJheShtKTtmb3IobGV0IHQ9MDt0PG07dCsrKXlbdF09dDtsZXQgXz1NYXRoLm1pbihuLTEsbyksQz1NYXRoLm1heCgwLE1hdGgubWluKG8tMixuKSksTT1NYXRoLm1heChfLEMpO2ZvcihsZXQgdD0wO3Q8TTt0Kyspe2lmKHQ8Xyl7Zlt0XT0wO2ZvcihsZXQgZT10O2U8bjtlKyspZlt0XT1BTXQoZlt0XSxzLmdldChlLHQpKTtpZigwIT09Zlt0XSl7cy5nZXQodCx0KTwwJiYoZlt0XT0tZlt0XSk7Zm9yKGxldCBlPXQ7ZTxuO2UrKylzLnNldChlLHQscy5nZXQoZSx0KS9mW3RdKTtzLnNldCh0LHQscy5nZXQodCx0KSsxKX1mW3RdPS1mW3RdfWZvcihsZXQgZT10KzE7ZTxvO2UrKyl7aWYodDxfJiYwIT09Zlt0XSl7bGV0IG89MDtmb3IobGV0IGk9dDtpPG47aSsrKW8rPXMuZ2V0KGksdCkqcy5nZXQoaSxlKTtvPS1vL3MuZ2V0KHQsdCk7Zm9yKGxldCBpPXQ7aTxuO2krKylzLnNldChpLGUscy5nZXQoaSxlKStvKnMuZ2V0KGksdCkpfWhbZV09cy5nZXQodCxlKX1pZihsJiZ0PF8pZm9yKGxldCBlPXQ7ZTxuO2UrKyl1LnNldChlLHQscy5nZXQoZSx0KSk7aWYodDxDKXtoW3RdPTA7Zm9yKGxldCBlPXQrMTtlPG87ZSsrKWhbdF09QU10KGhbdF0saFtlXSk7aWYoMCE9PWhbdF0pe2hbdCsxXTwwJiYoaFt0XT0wLWhbdF0pO2ZvcihsZXQgZT10KzE7ZTxvO2UrKyloW2VdLz1oW3RdO2hbdCsxXSs9MX1pZihoW3RdPS1oW3RdLHQrMTxuJiYwIT09aFt0XSl7Zm9yKGxldCBlPXQrMTtlPG47ZSsrKWJbZV09MDtmb3IobGV0IGU9dCsxO2U8bjtlKyspZm9yKGxldCBuPXQrMTtuPG87bisrKWJbZV0rPWhbbl0qcy5nZXQoZSxuKTtmb3IobGV0IGU9dCsxO2U8bztlKyspe2xldCBvPS1oW2VdL2hbdCsxXTtmb3IobGV0IGk9dCsxO2k8bjtpKyspcy5zZXQoaSxlLHMuZ2V0KGksZSkrbypiW2ldKX19aWYoYylmb3IobGV0IGU9dCsxO2U8bztlKyspZy5zZXQoZSx0LGhbZV0pfX1sZXQgdj1NYXRoLm1pbihvLG4rMSk7aWYoXzxvJiYoZltfXT1zLmdldChfLF8pKSxuPHYmJihmW3YtMV09MCksQysxPHYmJihoW0NdPXMuZ2V0KEMsdi0xKSksaFt2LTFdPTAsbCl7Zm9yKGxldCB0PV87dDxwO3QrKyl7Zm9yKGxldCBlPTA7ZTxuO2UrKyl1LnNldChlLHQsMCk7dS5zZXQodCx0LDEpfWZvcihsZXQgdD1fLTE7dD49MDt0LS0paWYoMCE9PWZbdF0pe2ZvcihsZXQgZT10KzE7ZTxwO2UrKyl7bGV0IG89MDtmb3IobGV0IGk9dDtpPG47aSsrKW8rPXUuZ2V0KGksdCkqdS5nZXQoaSxlKTtvPS1vL3UuZ2V0KHQsdCk7Zm9yKGxldCBpPXQ7aTxuO2krKyl1LnNldChpLGUsdS5nZXQoaSxlKStvKnUuZ2V0KGksdCkpfWZvcihsZXQgZT10O2U8bjtlKyspdS5zZXQoZSx0LC11LmdldChlLHQpKTt1LnNldCh0LHQsMSt1LmdldCh0LHQpKTtmb3IobGV0IGU9MDtlPHQtMTtlKyspdS5zZXQoZSx0LDApfWVsc2V7Zm9yKGxldCBlPTA7ZTxuO2UrKyl1LnNldChlLHQsMCk7dS5zZXQodCx0LDEpfX1pZihjKWZvcihsZXQgdD1vLTE7dD49MDt0LS0pe2lmKHQ8QyYmMCE9PWhbdF0pZm9yKGxldCBlPXQrMTtlPG87ZSsrKXtsZXQgbj0wO2ZvcihsZXQgaT10KzE7aTxvO2krKyluKz1nLmdldChpLHQpKmcuZ2V0KGksZSk7bj0tbi9nLmdldCh0KzEsdCk7Zm9yKGxldCBpPXQrMTtpPG87aSsrKWcuc2V0KGksZSxnLmdldChpLGUpK24qZy5nZXQoaSx0KSl9Zm9yKGxldCBlPTA7ZTxvO2UrKylnLnNldChlLHQsMCk7Zy5zZXQodCx0LDEpfWxldCB4PXYtMSxPPU51bWJlci5FUFNJTE9OO2Zvcig7dj4wOyl7bGV0IHQsZTtmb3IodD12LTI7dD49LTEmJi0xIT09dDt0LS0pe2NvbnN0IGU9TnVtYmVyLk1JTl9WQUxVRStPKk1hdGguYWJzKGZbdF0rTWF0aC5hYnMoZlt0KzFdKSk7aWYoTWF0aC5hYnMoaFt0XSk8PWV8fE51bWJlci5pc05hTihoW3RdKSl7aFt0XT0wO2JyZWFrfX1pZih0PT09di0yKWU9NDtlbHNle2xldCBuO2ZvcihuPXYtMTtuPj10JiZuIT09dDtuLS0pe2xldCBlPShuIT09dj9NYXRoLmFicyhoW25dKTowKSsobiE9PXQrMT9NYXRoLmFicyhoW24tMV0pOjApO2lmKE1hdGguYWJzKGZbbl0pPD1PKmUpe2Zbbl09MDticmVha319bj09PXQ/ZT0zOm49PT12LTE/ZT0xOihlPTIsdD1uKX1zd2l0Y2godCsrLGUpe2Nhc2UgMTp7bGV0IGU9aFt2LTJdO2hbdi0yXT0wO2ZvcihsZXQgbj12LTI7bj49dDtuLS0pe2xldCBpPUFNdChmW25dLGUpLGE9ZltuXS9pLHI9ZS9pO2lmKGZbbl09aSxuIT09dCYmKGU9LXIqaFtuLTFdLGhbbi0xXT1hKmhbbi0xXSksYylmb3IobGV0IHQ9MDt0PG87dCsrKWk9YSpnLmdldCh0LG4pK3IqZy5nZXQodCx2LTEpLGcuc2V0KHQsdi0xLC1yKmcuZ2V0KHQsbikrYSpnLmdldCh0LHYtMSkpLGcuc2V0KHQsbixpKX1icmVha31jYXNlIDI6e2xldCBlPWhbdC0xXTtoW3QtMV09MDtmb3IobGV0IG89dDtvPHY7bysrKXtsZXQgaT1BTXQoZltvXSxlKSxhPWZbb10vaSxyPWUvaTtpZihmW29dPWksZT0tcipoW29dLGhbb109YSpoW29dLGwpZm9yKGxldCBlPTA7ZTxuO2UrKylpPWEqdS5nZXQoZSxvKStyKnUuZ2V0KGUsdC0xKSx1LnNldChlLHQtMSwtcip1LmdldChlLG8pK2EqdS5nZXQoZSx0LTEpKSx1LnNldChlLG8saSl9YnJlYWt9Y2FzZSAzOntjb25zdCBlPU1hdGgubWF4KE1hdGguYWJzKGZbdi0xXSksTWF0aC5hYnMoZlt2LTJdKSxNYXRoLmFicyhoW3YtMl0pLE1hdGguYWJzKGZbdF0pLE1hdGguYWJzKGhbdF0pKSxpPWZbdi0xXS9lLGE9Zlt2LTJdL2Uscj1oW3YtMl0vZSxzPWZbdF0vZSxkPWhbdF0vZSxwPSgoYStpKSooYS1pKStyKnIpLzIsbT1pKnIqKGkqcik7bGV0IGI9MDswPT09cCYmMD09PW18fChiPXA8MD8wLU1hdGguc3FydChwKnArbSk6TWF0aC5zcXJ0KHAqcCttKSxiPW0vKHArYikpO2xldCB5PShzK2kpKihzLWkpK2IsXz1zKmQ7Zm9yKGxldCBlPXQ7ZTx2LTE7ZSsrKXtsZXQgaT1BTXQoeSxfKTswPT09aSYmKGk9TnVtYmVyLk1JTl9WQUxVRSk7bGV0IGE9eS9pLHI9Xy9pO2lmKGUhPT10JiYoaFtlLTFdPWkpLHk9YSpmW2VdK3IqaFtlXSxoW2VdPWEqaFtlXS1yKmZbZV0sXz1yKmZbZSsxXSxmW2UrMV09YSpmW2UrMV0sYylmb3IobGV0IHQ9MDt0PG87dCsrKWk9YSpnLmdldCh0LGUpK3IqZy5nZXQodCxlKzEpLGcuc2V0KHQsZSsxLC1yKmcuZ2V0KHQsZSkrYSpnLmdldCh0LGUrMSkpLGcuc2V0KHQsZSxpKTtpZihpPUFNdCh5LF8pLDA9PT1pJiYoaT1OdW1iZXIuTUlOX1ZBTFVFKSxhPXkvaSxyPV8vaSxmW2VdPWkseT1hKmhbZV0rcipmW2UrMV0sZltlKzFdPS1yKmhbZV0rYSpmW2UrMV0sXz1yKmhbZSsxXSxoW2UrMV09YSpoW2UrMV0sbCYmZTxuLTEpZm9yKGxldCB0PTA7dDxuO3QrKylpPWEqdS5nZXQodCxlKStyKnUuZ2V0KHQsZSsxKSx1LnNldCh0LGUrMSwtcip1LmdldCh0LGUpK2EqdS5nZXQodCxlKzEpKSx1LnNldCh0LGUsaSl9aFt2LTJdPXk7YnJlYWt9Y2FzZSA0OmlmKGZbdF08PTAmJihmW3RdPWZbdF08MD8tZlt0XTowLGMpKWZvcihsZXQgZT0wO2U8PXg7ZSsrKWcuc2V0KGUsdCwtZy5nZXQoZSx0KSk7Zm9yKDt0PHgmJiEoZlt0XT49Zlt0KzFdKTspe2xldCBlPWZbdF07aWYoZlt0XT1mW3QrMV0sZlt0KzFdPWUsYyYmdDxvLTEpZm9yKGxldCBuPTA7bjxvO24rKyllPWcuZ2V0KG4sdCsxKSxnLnNldChuLHQrMSxnLmdldChuLHQpKSxnLnNldChuLHQsZSk7aWYobCYmdDxuLTEpZm9yKGxldCBvPTA7bzxuO28rKyllPXUuZ2V0KG8sdCsxKSx1LnNldChvLHQrMSx1LmdldChvLHQpKSx1LnNldChvLHQsZSk7dCsrfXYtLX19aWYoZCl7bGV0IHQ9ZztnPXUsdT10fXRoaXMubT1uLHRoaXMubj1vLHRoaXMucz1mLHRoaXMuVT11LHRoaXMuVj1nfXNvbHZlKHQpe2xldCBlPXQsbj10aGlzLnRocmVzaG9sZCxvPXRoaXMucy5sZW5ndGgsaT1TTXQuemVyb3MobyxvKTtmb3IobGV0IHQ9MDt0PG87dCsrKU1hdGguYWJzKHRoaXMuc1t0XSk8PW4/aS5zZXQodCx0LDApOmkuc2V0KHQsdCwxL3RoaXMuc1t0XSk7bGV0IGE9dGhpcy5VLHI9dGhpcy5yaWdodFNpbmd1bGFyVmVjdG9ycyxzPXIubW11bChpKSxsPXIucm93cyxjPWEucm93cyxkPVNNdC56ZXJvcyhsLGMpO2ZvcihsZXQgdD0wO3Q8bDt0KyspZm9yKGxldCBlPTA7ZTxjO2UrKyl7bGV0IG49MDtmb3IobGV0IGk9MDtpPG87aSsrKW4rPXMuZ2V0KHQsaSkqYS5nZXQoZSxpKTtkLnNldCh0LGUsbil9cmV0dXJuIGQubW11bChlKX1zb2x2ZUZvckRpYWdvbmFsKHQpe3JldHVybiB0aGlzLnNvbHZlKFNNdC5kaWFnKHQpKX1pbnZlcnNlKCl7bGV0IHQ9dGhpcy5WLGU9dGhpcy50aHJlc2hvbGQsbj10LnJvd3Msbz10LmNvbHVtbnMsaT1uZXcgU010KG4sdGhpcy5zLmxlbmd0aCk7Zm9yKGxldCBhPTA7YTxuO2ErKylmb3IobGV0IG49MDtuPG87bisrKU1hdGguYWJzKHRoaXMuc1tuXSk+ZSYmaS5zZXQoYSxuLHQuZ2V0KGEsbikvdGhpcy5zW25dKTtsZXQgYT10aGlzLlUscj1hLnJvd3Mscz1hLmNvbHVtbnMsbD1uZXcgU010KG4scik7Zm9yKGxldCB0PTA7dDxuO3QrKylmb3IobGV0IGU9MDtlPHI7ZSsrKXtsZXQgbj0wO2ZvcihsZXQgbz0wO288cztvKyspbis9aS5nZXQodCxvKSphLmdldChlLG8pO2wuc2V0KHQsZSxuKX1yZXR1cm4gbH1nZXQgY29uZGl0aW9uKCl7cmV0dXJuIHRoaXMuc1swXS90aGlzLnNbTWF0aC5taW4odGhpcy5tLHRoaXMubiktMV19Z2V0IG5vcm0yKCl7cmV0dXJuIHRoaXMuc1swXX1nZXQgcmFuaygpe2xldCB0PU1hdGgubWF4KHRoaXMubSx0aGlzLm4pKnRoaXMuc1swXSpOdW1iZXIuRVBTSUxPTixlPTAsbj10aGlzLnM7Zm9yKGxldCBvPTAsaT1uLmxlbmd0aDtvPGk7bysrKW5bb10+dCYmZSsrO3JldHVybiBlfWdldCBkaWFnb25hbCgpe3JldHVybiBBcnJheS5mcm9tKHRoaXMucyl9Z2V0IHRocmVzaG9sZCgpe3JldHVybiBOdW1iZXIuRVBTSUxPTi8yKk1hdGgubWF4KHRoaXMubSx0aGlzLm4pKnRoaXMuc1swXX1nZXQgbGVmdFNpbmd1bGFyVmVjdG9ycygpe3JldHVybiB0aGlzLlV9Z2V0IHJpZ2h0U2luZ3VsYXJWZWN0b3JzKCl7cmV0dXJuIHRoaXMuVn1nZXQgZGlhZ29uYWxNYXRyaXgoKXtyZXR1cm4gU010LmRpYWcodGhpcy5zKX19ZnVuY3Rpb24gek10KHQsZT0hMSl7cmV0dXJuIHQ9Uk10LmNoZWNrTWF0cml4KHQpLGU/bmV3IE5NdCh0KS5pbnZlcnNlKCk6KGZ1bmN0aW9uIG4odCxlLG89ITEpe3JldHVybiB0PVJNdC5jaGVja01hdHJpeCh0KSxlPVJNdC5jaGVja01hdHJpeChlKSxvP25ldyBOTXQodCkuc29sdmUoZSk6dC5pc1NxdWFyZSgpP25ldyBFTXQodCkuc29sdmUoZSk6bmV3IFRNdCh0KS5zb2x2ZShlKX0pKHQsU010LmV5ZSh0LnJvd3MpKX1mdW5jdGlvbiBJTXQodCxlLG4sbyxpKXtsZXQgYT1TTXQuZXllKGUubGVuZ3RoLGUubGVuZ3RoLG4qbypvKTtjb25zdCByPWkoZSk7bGV0IHM9bmV3IEZsb2F0NjRBcnJheSh0LngubGVuZ3RoKTtmb3IobGV0IGU9MDtlPHQueC5sZW5ndGg7ZSsrKXNbZV09cih0LnhbZV0pO2xldCBsPShmdW5jdGlvbiBjKHQsZSxuLG8saSl7Y29uc3QgYT1uLmxlbmd0aCxyPXQueC5sZW5ndGg7bGV0IHM9bmV3IEFycmF5KGEpO2ZvcihsZXQgbD0wO2w8YTtsKyspe3NbbF09bmV3IEFycmF5KHIpO2xldCBhPW4uc2xpY2UoKTthW2xdKz1vO2xldCBjPWkoYSk7Zm9yKGxldCBuPTA7bjxyO24rKylzW2xdW25dPWVbbl0tYyh0Lnhbbl0pfXJldHVybiBuZXcgU010KHMpfSkodCxzLGUsbyxpKSxkPShmdW5jdGlvbiBwKHQsZSl7Y29uc3Qgbj10LngubGVuZ3RoO2xldCBvPW5ldyBBcnJheShuKTtmb3IobGV0IGk9MDtpPG47aSsrKW9baV09W3QueVtpXS1lW2ldXTtyZXR1cm4gbmV3IFNNdChvKX0pKHQscyksbT16TXQoYS5hZGQobC5tbXVsKGwudHJhbnNwb3NlKCkpKSk7cmV0dXJuKGU9KGU9bmV3IFNNdChbZV0pKS5zdWIobS5tbXVsKGwpLm1tdWwoZCkubXVsKG8pLnRyYW5zcG9zZSgpKSkudG8xREFycmF5KCl9dmFyIEhNdD1DTyhPYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxkZWZhdWx0OmZ1bmN0aW9uIEZNdCh0LGUsbj17fSl7bGV0e21heEl0ZXJhdGlvbnM6bz0xMDAsZ3JhZGllbnREaWZmZXJlbmNlOmk9LjEsZGFtcGluZzphPTAsZXJyb3JUb2xlcmFuY2U6cj0uMDEsbWluVmFsdWVzOnMsbWF4VmFsdWVzOmwsaW5pdGlhbFZhbHVlczpjfT1uO2lmKGE8PTApdGhyb3cgbmV3IEVycm9yKCJUaGUgZGFtcGluZyBvcHRpb24gbXVzdCBiZSBhIHBvc2l0aXZlIG51bWJlciIpO2lmKCF0Lnh8fCF0LnkpdGhyb3cgbmV3IEVycm9yKCJUaGUgZGF0YSBwYXJhbWV0ZXIgbXVzdCBoYXZlIHggYW5kIHkgZWxlbWVudHMiKTtpZighaU10KHQueCl8fHQueC5sZW5ndGg8Mnx8IWlNdCh0LnkpfHx0LnkubGVuZ3RoPDIpdGhyb3cgbmV3IEVycm9yKCJUaGUgZGF0YSBwYXJhbWV0ZXIgZWxlbWVudHMgbXVzdCBiZSBhbiBhcnJheSB3aXRoIG1vcmUgdGhhbiAyIHBvaW50cyIpO2lmKHQueC5sZW5ndGghPT10LnkubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiVGhlIGRhdGEgcGFyYW1ldGVyIGVsZW1lbnRzIG11c3QgaGF2ZSB0aGUgc2FtZSBzaXplIik7bGV0IGQ9Y3x8bmV3IEFycmF5KGUubGVuZ3RoKS5maWxsKDEpLHA9ZC5sZW5ndGg7aWYobD1sfHxuZXcgQXJyYXkocCkuZmlsbChOdW1iZXIuTUFYX1NBRkVfSU5URUdFUikscz1zfHxuZXcgQXJyYXkocCkuZmlsbChOdW1iZXIuTUlOX1NBRkVfSU5URUdFUiksbC5sZW5ndGghPT1zLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIm1pblZhbHVlcyBhbmQgbWF4VmFsdWVzIG11c3QgYmUgdGhlIHNhbWUgc2l6ZSIpO2lmKCFpTXQoZCkpdGhyb3cgbmV3IEVycm9yKCJpbml0aWFsVmFsdWVzIG11c3QgYmUgYW4gYXJyYXkiKTtsZXQgbSxmPWFNdCh0LGQsZSksdT1mPD1yO2ZvcihtPTA7bTxvJiYhdTttKyspe2Q9SU10KHQsZCxhLGksZSk7Zm9yKGxldCB0PTA7dDxwO3QrKylkW3RdPU1hdGgubWluKE1hdGgubWF4KHNbdF0sZFt0XSksbFt0XSk7aWYoZj1hTXQodCxkLGUpLGlzTmFOKGYpKWJyZWFrO3U9Zjw9cn1yZXR1cm57cGFyYW1ldGVyVmFsdWVzOmQscGFyYW1ldGVyRXJyb3I6ZixpdGVyYXRpb25zOm19fX0pKSxMTXQ9X08mJl9PLl9fYXdhaXRlcnx8ZnVuY3Rpb24odCxlLG4sbyl7cmV0dXJuIG5ldyhufHwobj1Qcm9taXNlKSkoKGZ1bmN0aW9uKGksYSl7ZnVuY3Rpb24gcih0KXt0cnl7bChvLm5leHQodCkpfWNhdGNoKHQpe2EodCl9fWZ1bmN0aW9uIHModCl7dHJ5e2woby50aHJvdyh0KSl9Y2F0Y2godCl7YSh0KX19ZnVuY3Rpb24gbCh0KXt0LmRvbmU/aSh0LnZhbHVlKTpuZXcgbigoZnVuY3Rpb24oZSl7ZSh0LnZhbHVlKX0pKS50aGVuKHIscyl9bCgobz1vLmFwcGx5KHQsZXx8W10pKS5uZXh0KCkpfSkpfSxCTXQ9X08mJl9PLl9fZ2VuZXJhdG9yfHxmdW5jdGlvbih0LGUpe3ZhciBuLG8saSxhLHI9e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKDEmaVswXSl0aHJvdyBpWzFdO3JldHVybiBpWzFdfSx0cnlzOltdLG9wczpbXX07cmV0dXJuIGE9e25leHQ6cygwKSx0aHJvdzpzKDEpLHJldHVybjpzKDIpfSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYoYVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxhO2Z1bmN0aW9uIHMoYSl7cmV0dXJuIGZ1bmN0aW9uKHMpe3JldHVybihmdW5jdGlvbiBsKGEpe2lmKG4pdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLiIpO2Zvcig7cjspdHJ5e2lmKG49MSxvJiYoaT0yJmFbMF0/by5yZXR1cm46YVswXT9vLnRocm93fHwoKGk9by5yZXR1cm4pJiZpLmNhbGwobyksMCk6by5uZXh0KSYmIShpPWkuY2FsbChvLGFbMV0pKS5kb25lKXJldHVybiBpO3N3aXRjaChvPTAsaSYmKGE9WzImYVswXSxpLnZhbHVlXSksYVswXSl7Y2FzZSAwOmNhc2UgMTppPWE7YnJlYWs7Y2FzZSA0OnJldHVybiByLmxhYmVsKysse3ZhbHVlOmFbMV0sZG9uZTohMX07Y2FzZSA1OnIubGFiZWwrKyxvPWFbMV0sYT1bMF07Y29udGludWU7Y2FzZSA3OmE9ci5vcHMucG9wKCksci50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoIShpPXIudHJ5cywoaT1pLmxlbmd0aD4wJiZpW2kubGVuZ3RoLTFdKXx8NiE9PWFbMF0mJjIhPT1hWzBdKSl7cj0wO2NvbnRpbnVlfWlmKDM9PT1hWzBdJiYoIWl8fGFbMV0+aVswXSYmYVsxXTxpWzNdKSl7ci5sYWJlbD1hWzFdO2JyZWFrfWlmKDY9PT1hWzBdJiZyLmxhYmVsPGlbMV0pe3IubGFiZWw9aVsxXSxpPWE7YnJlYWt9aWYoaSYmci5sYWJlbDxpWzJdKXtyLmxhYmVsPWlbMl0sci5vcHMucHVzaChhKTticmVha31pWzJdJiZyLm9wcy5wb3AoKSxyLnRyeXMucG9wKCk7Y29udGludWV9YT1lLmNhbGwodCxyKX1jYXRjaCh0KXthPVs2LHRdLG89MH1maW5hbGx5e249aT0wfWlmKDUmYVswXSl0aHJvdyBhWzFdO3JldHVybnt2YWx1ZTphWzBdP2FbMV06dm9pZCAwLGRvbmU6ITB9fSkoW2Esc10pfX19LFZNdD1fTyYmX08uX19yZWFkfHxmdW5jdGlvbih0LGUpe3ZhciBuPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnRbU3ltYm9sLml0ZXJhdG9yXTtpZighbilyZXR1cm4gdDt2YXIgbyxpLGE9bi5jYWxsKHQpLHI9W107dHJ5e2Zvcig7KHZvaWQgMD09PWV8fGUtLSA+MCkmJiEobz1hLm5leHQoKSkuZG9uZTspci5wdXNoKG8udmFsdWUpfWNhdGNoKHQpe2k9e2Vycm9yOnR9fWZpbmFsbHl7dHJ5e28mJiFvLmRvbmUmJihuPWEucmV0dXJuKSYmbi5jYWxsKGEpfWZpbmFsbHl7aWYoaSl0aHJvdyBpLmVycm9yfX1yZXR1cm4gcn0sak10PV9PJiZfTy5fX3NwcmVhZHx8ZnVuY3Rpb24oKXtmb3IodmFyIHQ9W10sZT0wO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspdD10LmNvbmNhdChWTXQoYXJndW1lbnRzW2VdKSk7cmV0dXJuIHR9LFVNdD1fTyYmX08uX19pbXBvcnRTdGFyfHxmdW5jdGlvbih0KXtpZih0JiZ0Ll9fZXNNb2R1bGUpcmV0dXJuIHQ7dmFyIGU9e307aWYobnVsbCE9dClmb3IodmFyIG4gaW4gdClPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pJiYoZVtuXT10W25dKTtyZXR1cm4gZS5kZWZhdWx0PXQsZX0sV010PV9PJiZfTy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKHQpe3JldHVybiB0JiZ0Ll9fZXNNb2R1bGU/dDp7ZGVmYXVsdDp0fX07T2JqZWN0LmRlZmluZVByb3BlcnR5KEhfdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIEdNdD1VTXQoRl90KSxZTXQ9VU10KGZDdCkscU10PVVNdChFQ3QpLFpNdD1VTXQoQUN0KSxYTXQ9VU10KExfdCksS010PVdNdChITXQpLEpNdD0xZS01LFFNdD0uMDAxLCRNdD0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3ZvaWQgMD09PXQmJih0PXt9KTt2YXIgZT10aGlzO3RoaXMubGVhcm5pbmdSYXRlPTEsdGhpcy5sb2NhbENvbm5lY3Rpdml0eT0xLHRoaXMubWluRGlzdD0uMSx0aGlzLm5Db21wb25lbnRzPTIsdGhpcy5uRXBvY2hzPTAsdGhpcy5uTmVpZ2hib3JzPTE1LHRoaXMubmVnYXRpdmVTYW1wbGVSYXRlPTUsdGhpcy5yYW5kb209TWF0aC5yYW5kb20sdGhpcy5yZXB1bHNpb25TdHJlbmd0aD0xLHRoaXMuc2V0T3BNaXhSYXRpbz0xLHRoaXMuc3ByZWFkPTEsdGhpcy50cmFuc2Zvcm1RdWV1ZVNpemU9NCx0aGlzLnRhcmdldE1ldHJpYz0iY2F0ZWdvcmljYWwiLHRoaXMudGFyZ2V0V2VpZ2h0PS41LHRoaXMudGFyZ2V0Tk5laWdoYm9ycz10aGlzLm5OZWlnaGJvcnMsdGhpcy5kaXN0YW5jZUZuPXR2dCx0aGlzLmlzSW5pdGlhbGl6ZWQ9ITEsdGhpcy5ycEZvcmVzdD1bXSx0aGlzLmVtYmVkZGluZz1bXSx0aGlzLm9wdGltaXphdGlvblN0YXRlPW5ldyBudnQ7dmFyIG49ZnVuY3Rpb24obil7dm9pZCAwIT09dFtuXSYmKGVbbl09dFtuXSl9O24oImRpc3RhbmNlRm4iKSxuKCJsZWFybmluZ1JhdGUiKSxuKCJsb2NhbENvbm5lY3Rpdml0eSIpLG4oIm1pbkRpc3QiKSxuKCJuQ29tcG9uZW50cyIpLG4oIm5FcG9jaHMiKSxuKCJuTmVpZ2hib3JzIiksbigibmVnYXRpdmVTYW1wbGVSYXRlIiksbigicmFuZG9tIiksbigicmVwdWxzaW9uU3RyZW5ndGgiKSxuKCJzZXRPcE1peFJhdGlvIiksbigic3ByZWFkIiksbigidHJhbnNmb3JtUXVldWVTaXplIil9cmV0dXJuIHQucHJvdG90eXBlLmZpdD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5pbml0aWFsaXplRml0KHQpLHRoaXMub3B0aW1pemVMYXlvdXQoKSx0aGlzLmVtYmVkZGluZ30sdC5wcm90b3R5cGUuZml0QXN5bmM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9ZnVuY3Rpb24oKXtyZXR1cm4hMH0pLExNdCh0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKCl7cmV0dXJuIEJNdCh0aGlzLChmdW5jdGlvbihuKXtzd2l0Y2gobi5sYWJlbCl7Y2FzZSAwOnJldHVybiB0aGlzLmluaXRpYWxpemVGaXQodCksWzQsdGhpcy5vcHRpbWl6ZUxheW91dEFzeW5jKGUpXTtjYXNlIDE6cmV0dXJuIG4uc2VudCgpLFsyLHRoaXMuZW1iZWRkaW5nXX19KSl9KSl9LHQucHJvdG90eXBlLnNldFN1cGVydmlzZWRQcm9qZWN0aW9uPWZ1bmN0aW9uKHQsZSl7dm9pZCAwPT09ZSYmKGU9e30pLHRoaXMuWT10LHRoaXMudGFyZ2V0TWV0cmljPWUudGFyZ2V0TWV0cmljfHx0aGlzLnRhcmdldE1ldHJpYyx0aGlzLnRhcmdldFdlaWdodD1lLnRhcmdldFdlaWdodHx8dGhpcy50YXJnZXRXZWlnaHQsdGhpcy50YXJnZXROTmVpZ2hib3JzPWUudGFyZ2V0Tk5laWdoYm9yc3x8dGhpcy50YXJnZXROTmVpZ2hib3JzfSx0LnByb3RvdHlwZS5zZXRQcmVjb21wdXRlZEtOTj1mdW5jdGlvbih0LGUpe3RoaXMua25uSW5kaWNlcz10LHRoaXMua25uRGlzdGFuY2VzPWV9LHQucHJvdG90eXBlLmluaXRpYWxpemVGaXQ9ZnVuY3Rpb24odCl7aWYodC5sZW5ndGg8PXRoaXMubk5laWdoYm9ycyl0aHJvdyBuZXcgRXJyb3IoIk5vdCBlbm91Z2ggZGF0YSBwb2ludHMgKCIrdC5sZW5ndGgrIikgdG8gY3JlYXRlIG5OZWlnaGJvcnM6ICIrdGhpcy5uTmVpZ2hib3JzKyIuICBBZGQgbW9yZSBkYXRhIHBvaW50cyBvciBhZGp1c3QgdGhlIGNvbmZpZ3VyYXRpb24uIik7aWYodGhpcy5YPT09dCYmdGhpcy5pc0luaXRpYWxpemVkKXJldHVybiB0aGlzLmdldE5FcG9jaHMoKTtpZih0aGlzLlg9dCwhdGhpcy5rbm5JbmRpY2VzJiYhdGhpcy5rbm5EaXN0YW5jZXMpe3ZhciBlPXRoaXMubmVhcmVzdE5laWdoYm9ycyh0KTt0aGlzLmtubkluZGljZXM9ZS5rbm5JbmRpY2VzLHRoaXMua25uRGlzdGFuY2VzPWUua25uRGlzdGFuY2VzfXRoaXMuZ3JhcGg9dGhpcy5mdXp6eVNpbXBsaWNpYWxTZXQodCx0aGlzLm5OZWlnaGJvcnMsdGhpcy5zZXRPcE1peFJhdGlvKSx0aGlzLm1ha2VTZWFyY2hGbnMoKSx0aGlzLnNlYXJjaEdyYXBoPXRoaXMubWFrZVNlYXJjaEdyYXBoKHQpLHRoaXMucHJvY2Vzc0dyYXBoRm9yU3VwZXJ2aXNlZFByb2plY3Rpb24oKTt2YXIgbj10aGlzLmluaXRpYWxpemVTaW1wbGljaWFsU2V0RW1iZWRkaW5nKCksbz1uLnRhaWwsaT1uLmVwb2Noc1BlclNhbXBsZTtyZXR1cm4gdGhpcy5vcHRpbWl6YXRpb25TdGF0ZS5oZWFkPW4uaGVhZCx0aGlzLm9wdGltaXphdGlvblN0YXRlLnRhaWw9byx0aGlzLm9wdGltaXphdGlvblN0YXRlLmVwb2Noc1BlclNhbXBsZT1pLHRoaXMuaW5pdGlhbGl6ZU9wdGltaXphdGlvbigpLHRoaXMucHJlcGFyZUZvck9wdGltaXphdGlvbkxvb3AoKSx0aGlzLmlzSW5pdGlhbGl6ZWQ9ITAsdGhpcy5nZXRORXBvY2hzKCl9LHQucHJvdG90eXBlLm1ha2VTZWFyY2hGbnM9ZnVuY3Rpb24oKXt2YXIgdD1xTXQubWFrZUluaXRpYWxpemF0aW9ucyh0aGlzLmRpc3RhbmNlRm4pLGU9dC5pbml0RnJvbVJhbmRvbTt0aGlzLmluaXRGcm9tVHJlZT10LmluaXRGcm9tVHJlZSx0aGlzLmluaXRGcm9tUmFuZG9tPWUsdGhpcy5zZWFyY2g9cU10Lm1ha2VJbml0aWFsaXplZE5OU2VhcmNoKHRoaXMuZGlzdGFuY2VGbil9LHQucHJvdG90eXBlLm1ha2VTZWFyY2hHcmFwaD1mdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy5rbm5JbmRpY2VzLG49dGhpcy5rbm5EaXN0YW5jZXMsbz1uZXcgWU10LlNwYXJzZU1hdHJpeChbXSxbXSxbXSxbdC5sZW5ndGgsdC5sZW5ndGhdKSxpPTA7aTxlLmxlbmd0aDtpKyspZm9yKHZhciBhPWVbaV0scj1uW2ldLHM9MDtzPGEubGVuZ3RoO3MrKyl7dmFyIGw9cltzXTtsPjAmJm8uc2V0KGksYVtzXSxsKX12YXIgYz1ZTXQudHJhbnNwb3NlKG8pO3JldHVybiBZTXQubWF4aW11bShvLGMpfSx0LnByb3RvdHlwZS50cmFuc2Zvcm09ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxuPXRoaXMuWDtpZih2b2lkIDA9PT1ufHwwPT09bi5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJObyBkYXRhIGhhcyBiZWVuIGZpdC4iKTt2YXIgbz1NYXRoLmZsb29yKHRoaXMubk5laWdoYm9ycyp0aGlzLnRyYW5zZm9ybVF1ZXVlU2l6ZSk7bz1NYXRoLm1pbihuLmxlbmd0aCxvKTt2YXIgaT1xTXQuaW5pdGlhbGl6ZVNlYXJjaCh0aGlzLnJwRm9yZXN0LG4sdCxvLHRoaXMuaW5pdEZyb21SYW5kb20sdGhpcy5pbml0RnJvbVRyZWUsdGhpcy5yYW5kb20pLGE9dGhpcy5zZWFyY2gobix0aGlzLnNlYXJjaEdyYXBoLGksdCkscj1HTXQuZGVoZWFwU29ydChhKSxzPXIuaW5kaWNlcyxsPXIud2VpZ2h0cztzPXMubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5zbGljZSgwLGUubk5laWdoYm9ycyl9KSksbD1sLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuc2xpY2UoMCxlLm5OZWlnaGJvcnMpfSkpO3ZhciBjPU1hdGgubWF4KDAsdGhpcy5sb2NhbENvbm5lY3Rpdml0eS0xKSxkPXRoaXMuc21vb3RoS05ORGlzdGFuY2UobCx0aGlzLm5OZWlnaGJvcnMsYykscD10aGlzLmNvbXB1dGVNZW1iZXJzaGlwU3RyZW5ndGhzKHMsbCxkLnNpZ21hcyxkLnJob3MpLG09bmV3IFlNdC5TcGFyc2VNYXRyaXgocC5yb3dzLHAuY29scyxwLnZhbHMsW3QubGVuZ3RoLG4ubGVuZ3RoXSksZj1ZTXQubm9ybWFsaXplKG0sImwxIiksdT1ZTXQuZ2V0Q1NSKGYpLGc9dC5sZW5ndGgsaD1sdnQoWE10LnJlc2hhcGUyZCh1LmluZGljZXMsZyx0aGlzLm5OZWlnaGJvcnMpLFhNdC5yZXNoYXBlMmQodS52YWx1ZXMsZyx0aGlzLm5OZWlnaGJvcnMpLHRoaXMuZW1iZWRkaW5nKSxiPXRoaXMubkVwb2Nocz90aGlzLm5FcG9jaHMvMzptLm5Sb3dzPD0xZTQ/MTAwOjMwLHk9bS5nZXRWYWx1ZXMoKS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGU+dD9lOnR9KSwwKTttPW0ubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdDx5L2I/MDp0fSkpLG09WU10LmVsaW1pbmF0ZVplcm9zKG0pO3ZhciBfPXRoaXMubWFrZUVwb2Noc1BlclNhbXBsZShtLmdldFZhbHVlcygpLGIpLEM9bS5nZXRSb3dzKCksTT1tLmdldENvbHMoKTtyZXR1cm4gdGhpcy5hc3NpZ25PcHRpbWl6YXRpb25TdGF0ZVBhcmFtZXRlcnMoe2hlYWRFbWJlZGRpbmc6aCx0YWlsRW1iZWRkaW5nOnRoaXMuZW1iZWRkaW5nLGhlYWQ6Qyx0YWlsOk0sY3VycmVudEVwb2NoOjAsbkVwb2NoczpiLG5WZXJ0aWNlczptLmdldERpbXMoKVsxXSxlcG9jaHNQZXJTYW1wbGU6X30pLHRoaXMucHJlcGFyZUZvck9wdGltaXphdGlvbkxvb3AoKSx0aGlzLm9wdGltaXplTGF5b3V0KCl9LHQucHJvdG90eXBlLnByb2Nlc3NHcmFwaEZvclN1cGVydmlzZWRQcm9qZWN0aW9uPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5ZO2lmKHQpe2lmKHQubGVuZ3RoIT09dGhpcy5YLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIkxlbmd0aCBvZiBYIGFuZCB5IG11c3QgYmUgZXF1YWwiKTtpZigiY2F0ZWdvcmljYWwiPT09dGhpcy50YXJnZXRNZXRyaWMpdGhpcy5ncmFwaD10aGlzLmNhdGVnb3JpY2FsU2ltcGxpY2lhbFNldEludGVyc2VjdGlvbih0aGlzLmdyYXBoLHQsdGhpcy50YXJnZXRXZWlnaHQ8MT8xLygxLXRoaXMudGFyZ2V0V2VpZ2h0KSoyLjU6MWUxMil9fSx0LnByb3RvdHlwZS5zdGVwPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcHRpbWl6YXRpb25TdGF0ZS5jdXJyZW50RXBvY2g7cmV0dXJuIHQ8dGhpcy5nZXRORXBvY2hzKCkmJnRoaXMub3B0aW1pemVMYXlvdXRTdGVwKHQpLHRoaXMub3B0aW1pemF0aW9uU3RhdGUuY3VycmVudEVwb2NofSx0LnByb3RvdHlwZS5nZXRFbWJlZGRpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbWJlZGRpbmd9LHQucHJvdG90eXBlLm5lYXJlc3ROZWlnaGJvcnM9ZnVuY3Rpb24odCl7dmFyIGUsbj10aGlzLm5OZWlnaGJvcnMsbz1xTXQubWFrZU5ORGVzY2VudCh0aGlzLmRpc3RhbmNlRm4sdGhpcy5yYW5kb20pLGk9NStNYXRoLmZsb29yKC41PT09KGU9TWF0aC5wb3codC5sZW5ndGgsLjUpLzIwKT8wOk1hdGgucm91bmQoZSkpLGE9TWF0aC5tYXgoNSxNYXRoLmZsb29yKE1hdGgucm91bmQoKGZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLmxvZyh0KS9NYXRoLmxvZygyKX0pKHQubGVuZ3RoKSkpKTt0aGlzLnJwRm9yZXN0PVpNdC5tYWtlRm9yZXN0KHQsbixpLHRoaXMucmFuZG9tKTt2YXIgcj1vKHQsWk10Lm1ha2VMZWFmQXJyYXkodGhpcy5ycEZvcmVzdCksbixhKTtyZXR1cm57a25uSW5kaWNlczpyLmluZGljZXMsa25uRGlzdGFuY2VzOnIud2VpZ2h0c319LHQucHJvdG90eXBlLmZ1enp5U2ltcGxpY2lhbFNldD1mdW5jdGlvbih0LGUsbil7dm9pZCAwPT09biYmKG49MSk7dmFyIG89dGhpcyxpPW8ua25uSW5kaWNlcyxhPXZvaWQgMD09PWk/W106aSxyPW8ua25uRGlzdGFuY2VzLHM9dm9pZCAwPT09cj9bXTpyLGw9dGhpcy5zbW9vdGhLTk5EaXN0YW5jZShzLGUsby5sb2NhbENvbm5lY3Rpdml0eSksYz10aGlzLmNvbXB1dGVNZW1iZXJzaGlwU3RyZW5ndGhzKGEscyxsLnNpZ21hcyxsLnJob3MpLGQ9bmV3IFlNdC5TcGFyc2VNYXRyaXgoYy5yb3dzLGMuY29scyxjLnZhbHMsW3QubGVuZ3RoLHQubGVuZ3RoXSkscD1ZTXQudHJhbnNwb3NlKGQpLG09WU10LnBhaXJ3aXNlTXVsdGlwbHkoZCxwKSxmPVlNdC5zdWJ0cmFjdChZTXQuYWRkKGQscCksbSksdT1ZTXQubXVsdGlwbHlTY2FsYXIoZixuKSxnPVlNdC5tdWx0aXBseVNjYWxhcihtLDEtbik7cmV0dXJuIFlNdC5hZGQodSxnKX0sdC5wcm90b3R5cGUuY2F0ZWdvcmljYWxTaW1wbGljaWFsU2V0SW50ZXJzZWN0aW9uPWZ1bmN0aW9uKHQsZSxuLG8pe3ZvaWQgMD09PW8mJihvPTEpO3ZhciBpPXJ2dCh0LGUsbyxuKTtyZXR1cm4gc3Z0KGk9WU10LmVsaW1pbmF0ZVplcm9zKGkpKX0sdC5wcm90b3R5cGUuc21vb3RoS05ORGlzdGFuY2U9ZnVuY3Rpb24odCxlLG4sbyxpKXt2b2lkIDA9PT1uJiYobj0xKSx2b2lkIDA9PT1vJiYobz02NCksdm9pZCAwPT09aSYmKGk9MSk7Zm9yKHZhciBhPU1hdGgubG9nKGUpL01hdGgubG9nKDIpKmkscj1YTXQuemVyb3ModC5sZW5ndGgpLHM9WE10Lnplcm9zKHQubGVuZ3RoKSxsPTA7bDx0Lmxlbmd0aDtsKyspe3ZhciBjPTAsZD0xLzAscD0xLG09dFtsXSxmPW0uZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gdD4wfSkpO2lmKGYubGVuZ3RoPj1uKXt2YXIgdT1NYXRoLmZsb29yKG4pLGc9bi11O3U+MD8ocltsXT1mW3UtMV0sZz5KTXQmJihyW2xdKz1nKihmW3VdLWZbdS0xXSkpKTpyW2xdPWcqZlswXX1lbHNlIGYubGVuZ3RoPjAmJihyW2xdPVhNdC5tYXgoZikpO2Zvcih2YXIgaD0wO2g8bztoKyspe2Zvcih2YXIgYj0wLHk9MTt5PHRbbF0ubGVuZ3RoO3krKyl7dmFyIF89dFtsXVt5XS1yW2xdO2IrPV8+MD9NYXRoLmV4cCgtXy9wKToxfWlmKE1hdGguYWJzKGItYSk8Sk10KWJyZWFrO2I+YT9wPShjKyhkPXApKS8yOihjPXAsZD09PTEvMD9wKj0yOnA9KGMrZCkvMil9aWYoc1tsXT1wLHJbbF0+MCl7dmFyIEM9WE10Lm1lYW4obSk7c1tsXTxRTXQqQyYmKHNbbF09UU10KkMpfWVsc2V7dmFyIE09WE10Lm1lYW4odC5tYXAoWE10Lm1lYW4pKTtzW2xdPFFNdCpNJiYoc1tsXT1RTXQqTSl9fXJldHVybntzaWdtYXM6cyxyaG9zOnJ9fSx0LnByb3RvdHlwZS5jb21wdXRlTWVtYmVyc2hpcFN0cmVuZ3Rocz1mdW5jdGlvbih0LGUsbixvKXtmb3IodmFyIGk9dC5sZW5ndGgsYT10WzBdLmxlbmd0aCxyPVhNdC56ZXJvcyhpKmEpLHM9WE10Lnplcm9zKGkqYSksbD1YTXQuemVyb3MoaSphKSxjPTA7YzxpO2MrKylmb3IodmFyIGQ9MDtkPGE7ZCsrKXt2YXIgcD0wOy0xIT09dFtjXVtkXSYmKHA9dFtjXVtkXT09PWM/MDplW2NdW2RdLW9bY108PTA/MTpNYXRoLmV4cCgtKGVbY11bZF0tb1tjXSkvbltjXSkscltjKmErZF09YyxzW2MqYStkXT10W2NdW2RdLGxbYyphK2RdPXApfXJldHVybntyb3dzOnIsY29sczpzLHZhbHM6bH19LHQucHJvdG90eXBlLmluaXRpYWxpemVTaW1wbGljaWFsU2V0RW1iZWRkaW5nPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMsZT10aGlzLmdldE5FcG9jaHMoKSxuPXRoaXMubkNvbXBvbmVudHMsbz10aGlzLmdyYXBoLmdldFZhbHVlcygpLGk9MCxhPTA7YTxvLmxlbmd0aDthKyspe2k8b1thXSYmKGk9b1thXSl9dmFyIHI9dGhpcy5ncmFwaC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0PGkvZT8wOnR9KSk7dGhpcy5lbWJlZGRpbmc9WE10Lnplcm9zKHIublJvd3MpLm1hcCgoZnVuY3Rpb24oKXtyZXR1cm4gWE10Lnplcm9zKG4pLm1hcCgoZnVuY3Rpb24oKXtyZXR1cm4gMjAqWE10LnRhdVJhbmQodC5yYW5kb20pLTEwfSkpfSkpO3ZhciBzPVtdLGw9W10sYz1bXSxkPXIuZ2V0QWxsKCk7Zm9yKGE9MDthPGQubGVuZ3RoO2ErKyl7dmFyIHA9ZFthXTtwLnZhbHVlJiYocy5wdXNoKHAudmFsdWUpLGMucHVzaChwLnJvdyksbC5wdXNoKHAuY29sKSl9cmV0dXJue2hlYWQ6bCx0YWlsOmMsZXBvY2hzUGVyU2FtcGxlOnRoaXMubWFrZUVwb2Noc1BlclNhbXBsZShzLGUpfX0sdC5wcm90b3R5cGUubWFrZUVwb2Noc1BlclNhbXBsZT1mdW5jdGlvbih0LGUpe3ZhciBuPVhNdC5maWxsZWQodC5sZW5ndGgsLTEpLG89WE10Lm1heCh0KSxpPXQubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC9vKmV9KSk7cmV0dXJuIGkuZm9yRWFjaCgoZnVuY3Rpb24odCxvKXt0PjAmJihuW29dPWUvaVtvXSl9KSksbn0sdC5wcm90b3R5cGUuYXNzaWduT3B0aW1pemF0aW9uU3RhdGVQYXJhbWV0ZXJzPWZ1bmN0aW9uKHQpe09iamVjdC5hc3NpZ24odGhpcy5vcHRpbWl6YXRpb25TdGF0ZSx0KX0sdC5wcm90b3R5cGUucHJlcGFyZUZvck9wdGltaXphdGlvbkxvb3A9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dC5yZXB1bHNpb25TdHJlbmd0aCxuPXQubGVhcm5pbmdSYXRlLG89dC5uZWdhdGl2ZVNhbXBsZVJhdGUsaT10aGlzLm9wdGltaXphdGlvblN0YXRlLGE9aS5lcG9jaHNQZXJTYW1wbGUscj1pLmhlYWRFbWJlZGRpbmcscz1yWzBdLmxlbmd0aCxsPXIubGVuZ3RoPT09aS50YWlsRW1iZWRkaW5nLmxlbmd0aCxjPWEubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC9vfSkpLGQ9ak10KGMpLHA9ak10KGEpO3RoaXMuYXNzaWduT3B0aW1pemF0aW9uU3RhdGVQYXJhbWV0ZXJzKHtlcG9jaE9mTmV4dFNhbXBsZTpwLGVwb2NoT2ZOZXh0TmVnYXRpdmVTYW1wbGU6ZCxlcG9jaHNQZXJOZWdhdGl2ZVNhbXBsZTpjLG1vdmVPdGhlcjpsLGluaXRpYWxBbHBoYTpuLGFscGhhOm4sZ2FtbWE6ZSxkaW06c30pfSx0LnByb3RvdHlwZS5pbml0aWFsaXplT3B0aW1pemF0aW9uPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5lbWJlZGRpbmcsZT10aGlzLmVtYmVkZGluZyxuPXRoaXMub3B0aW1pemF0aW9uU3RhdGUsbz1uLmhlYWQsaT1uLnRhaWwsYT1uLmVwb2Noc1BlclNhbXBsZSxyPXRoaXMuZ2V0TkVwb2NocygpLHM9dGhpcy5ncmFwaC5uQ29scyxsPWF2dCh0aGlzLnNwcmVhZCx0aGlzLm1pbkRpc3QpO3RoaXMuYXNzaWduT3B0aW1pemF0aW9uU3RhdGVQYXJhbWV0ZXJzKHtoZWFkRW1iZWRkaW5nOnQsdGFpbEVtYmVkZGluZzplLGhlYWQ6byx0YWlsOmksZXBvY2hzUGVyU2FtcGxlOmEsYTpsLmEsYjpsLmIsbkVwb2NoczpyLG5WZXJ0aWNlczpzfSl9LHQucHJvdG90eXBlLm9wdGltaXplTGF5b3V0U3RlcD1mdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy5vcHRpbWl6YXRpb25TdGF0ZSxuPWUuaGVhZCxvPWUudGFpbCxpPWUuaGVhZEVtYmVkZGluZyxhPWUudGFpbEVtYmVkZGluZyxyPWUuZXBvY2hzUGVyU2FtcGxlLHM9ZS5lcG9jaE9mTmV4dFNhbXBsZSxsPWUuZXBvY2hPZk5leHROZWdhdGl2ZVNhbXBsZSxjPWUuZXBvY2hzUGVyTmVnYXRpdmVTYW1wbGUsZD1lLm1vdmVPdGhlcixwPWUuaW5pdGlhbEFscGhhLG09ZS5hbHBoYSxmPWUuZ2FtbWEsdT1lLmEsZz1lLmIsaD1lLmRpbSxiPWUubkVwb2Nocyx5PWUublZlcnRpY2VzLF89MDtfPHIubGVuZ3RoO18rKylpZighKHNbX10+dCkpe3ZhciBDPW5bX10sTT1pW0NdLHY9YVtvW19dXSx4PWl2dChNLHYpLE89MDt4PjAmJihPPS0yKnUqZypNYXRoLnBvdyh4LGctMSksTy89dSpNYXRoLnBvdyh4LGcpKzEpO2Zvcih2YXIgUD0wO1A8aDtQKyspe3ZhciB3PW92dChPKihNW1BdLXZbUF0pLDQpO01bUF0rPXcqbSxkJiYodltQXSs9LXcqbSl9c1tfXSs9cltfXTtmb3IodmFyIGs9TWF0aC5mbG9vcigodC1sW19dKS9jW19dKSxTPTA7UzxrO1MrKyl7dmFyIEQ9WE10LnRhdVJhbmRJbnQoeSx0aGlzLnJhbmRvbSksUj1hW0RdLEU9aXZ0KE0sUiksQT0wO2lmKEU+MClBPTIqZipnLEEvPSguMDAxK0UpKih1Kk1hdGgucG93KEUsZykrMSk7ZWxzZSBpZihDPT09RCljb250aW51ZTtmb3IoUD0wO1A8aDtQKyspe3c9NDtBPjAmJih3PW92dChBKihNW1BdLVJbUF0pLDQpKSxNW1BdKz13Km19fWxbX10rPWsqY1tfXX1yZXR1cm4gZS5hbHBoYT1wKigxLXQvYiksZS5jdXJyZW50RXBvY2grPTEsaX0sdC5wcm90b3R5cGUub3B0aW1pemVMYXlvdXRBc3luYz1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3JldHVybiB2b2lkIDA9PT10JiYodD1mdW5jdGlvbigpe3JldHVybiEwfSksbmV3IFByb21pc2UoKGZ1bmN0aW9uKG4sbyl7dmFyIGk9ZnVuY3Rpb24oKXtyZXR1cm4gTE10KGUsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24oKXt2YXIgZSxhLHIscyxsO3JldHVybiBCTXQodGhpcywoZnVuY3Rpb24oYyl7dHJ5e2lmKGE9KGU9dGhpcy5vcHRpbWl6YXRpb25TdGF0ZSkubkVwb2Nocyx0aGlzLmVtYmVkZGluZz10aGlzLm9wdGltaXplTGF5b3V0U3RlcChlLmN1cnJlbnRFcG9jaCkscz0hMT09PXQocj10aGlzLm9wdGltaXphdGlvblN0YXRlLmN1cnJlbnRFcG9jaCksbD1yPT09YSxzfHxsKXJldHVyblsyLG4obCldO3NldFRpbWVvdXQoKGZ1bmN0aW9uKCl7cmV0dXJuIGkoKX0pLDApfWNhdGNoKHQpe28odCl9cmV0dXJuWzJdfSkpfSkpfTtzZXRUaW1lb3V0KChmdW5jdGlvbigpe3JldHVybiBpKCl9KSwwKX0pKX0sdC5wcm90b3R5cGUub3B0aW1pemVMYXlvdXQ9ZnVuY3Rpb24odCl7dm9pZCAwPT09dCYmKHQ9ZnVuY3Rpb24oKXtyZXR1cm4hMH0pO2Zvcih2YXIgZT0hMSxuPVtdOyFlOyl7dmFyIG89dGhpcy5vcHRpbWl6YXRpb25TdGF0ZSxpPW8ubkVwb2NocztuPXRoaXMub3B0aW1pemVMYXlvdXRTdGVwKG8uY3VycmVudEVwb2NoKTt2YXIgYT10aGlzLm9wdGltaXphdGlvblN0YXRlLmN1cnJlbnRFcG9jaCxyPSExPT09dChhKTtlPWE9PT1pfHxyfXJldHVybiBufSx0LnByb3RvdHlwZS5nZXRORXBvY2hzPWZ1bmN0aW9uKCl7aWYodGhpcy5uRXBvY2hzPjApcmV0dXJuIHRoaXMubkVwb2Noczt2YXIgdD10aGlzLmdyYXBoLm5Sb3dzO3JldHVybiB0PD0yNTAwPzUwMDp0PD01ZTM/NDAwOnQ8PTc1MDA/MzAwOjIwMH0sdH0pKCk7ZnVuY3Rpb24gdHZ0KHQsZSl7Zm9yKHZhciBuPTAsbz0wO288dC5sZW5ndGg7bysrKW4rPU1hdGgucG93KHRbb10tZVtvXSwyKTtyZXR1cm4gTWF0aC5zcXJ0KG4pfUhfdC5VTUFQPSRNdCxIX3QuZXVjbGlkZWFuPXR2dCxIX3QuY29zaW5lPWZ1bmN0aW9uIGV2dCh0LGUpe2Zvcih2YXIgbj0wLG89MCxpPTAsYT0wO2E8dC5sZW5ndGg7YSsrKW4rPXRbYV0qZVthXSxvKz1NYXRoLnBvdyh0W2FdLDIpLGkrPU1hdGgucG93KGVbYV0sMik7cmV0dXJuIDA9PT1vJiYwPT09aT8wOjA9PT1vfHwwPT09aT8xOjEtbi9NYXRoLnNxcnQobyppKX07dmFyIG52dD1mdW5jdGlvbiBudnQoKXt0aGlzLmN1cnJlbnRFcG9jaD0wLHRoaXMuaGVhZEVtYmVkZGluZz1bXSx0aGlzLnRhaWxFbWJlZGRpbmc9W10sdGhpcy5oZWFkPVtdLHRoaXMudGFpbD1bXSx0aGlzLmVwb2Noc1BlclNhbXBsZT1bXSx0aGlzLmVwb2NoT2ZOZXh0U2FtcGxlPVtdLHRoaXMuZXBvY2hPZk5leHROZWdhdGl2ZVNhbXBsZT1bXSx0aGlzLmVwb2Noc1Blck5lZ2F0aXZlU2FtcGxlPVtdLHRoaXMubW92ZU90aGVyPSEwLHRoaXMuaW5pdGlhbEFscGhhPTEsdGhpcy5hbHBoYT0xLHRoaXMuZ2FtbWE9MSx0aGlzLmE9MS41NzY5NDM0NjAzMTEzMDc3LHRoaXMuYj0uODk1MDYwODc3OTEwOTczMyx0aGlzLmRpbT0yLHRoaXMubkVwb2Nocz01MDAsdGhpcy5uVmVydGljZXM9MH07ZnVuY3Rpb24gb3Z0KHQsZSl7cmV0dXJuIHQ+ZT9lOnQ8LWU/LWU6dH1mdW5jdGlvbiBpdnQodCxlKXtmb3IodmFyIG49MCxvPTA7bzx0Lmxlbmd0aDtvKyspbis9TWF0aC5wb3codFtvXS1lW29dLDIpO3JldHVybiBufWZ1bmN0aW9uIGF2dCh0LGUpe3ZhciBuPVhNdC5saW5lYXIoMCwzKnQsMzAwKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0PGU/MTp0fSkpLG89WE10Lnplcm9zKG4ubGVuZ3RoKS5tYXAoKGZ1bmN0aW9uKG8saSl7cmV0dXJuIG5baV0+PWU/TWF0aC5leHAoLShuW2ldLWUpL3QpOm99KSksaT1LTXQuZGVmYXVsdCh7eDpuLHk6b30sKGZ1bmN0aW9uKHQpe3ZhciBlPVZNdCh0LDIpLG49ZVswXSxvPWVbMV07cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiAxLygxK24qTWF0aC5wb3codCwyKm8pKX19KSx7ZGFtcGluZzoxLjUsaW5pdGlhbFZhbHVlczpbLjUsLjVdLGdyYWRpZW50RGlmZmVyZW5jZTouMSxtYXhJdGVyYXRpb25zOjEwMCxlcnJvclRvbGVyYW5jZTouMDF9KS5wYXJhbWV0ZXJWYWx1ZXMsYT1WTXQoaSwyKTtyZXR1cm57YTphWzBdLGI6YVsxXX19ZnVuY3Rpb24gcnZ0KHQsZSxuLG8pe3JldHVybiB2b2lkIDA9PT1uJiYobj0xKSx2b2lkIDA9PT1vJiYobz01KSx0Lm1hcCgoZnVuY3Rpb24odCxpLGEpe3JldHVybi0xPT09ZVtpXXx8LTE9PT1lW2FdP3QqTWF0aC5leHAoLW4pOmVbaV0hPT1lW2FdP3QqTWF0aC5leHAoLW8pOnR9KSl9ZnVuY3Rpb24gc3Z0KHQpe3Q9WU10Lm5vcm1hbGl6ZSh0LCJtYXgiKTt2YXIgZT1ZTXQudHJhbnNwb3NlKHQpLG49WU10LnBhaXJ3aXNlTXVsdGlwbHkoZSx0KTtyZXR1cm4gdD1ZTXQuYWRkKHQsWU10LnN1YnRyYWN0KGUsbikpLFlNdC5lbGltaW5hdGVaZXJvcyh0KX1mdW5jdGlvbiBsdnQodCxlLG4pe2Zvcih2YXIgbz1YTXQuemVyb3ModC5sZW5ndGgpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIFhNdC56ZXJvcyhuWzBdLmxlbmd0aCl9KSksaT0wO2k8dC5sZW5ndGg7aSsrKWZvcih2YXIgYT0wO2E8dFswXS5sZW5ndGg7YSsrKWZvcih2YXIgcj0wO3I8blswXS5sZW5ndGg7cisrKXtvW2ldW3JdKz1lW2ldW2FdKm5bdFtpXVthXV1bcl19cmV0dXJuIG99ZnVuY3Rpb24gY3Z0KHQpe2xldCBlLG4sbz10Lmxlbmd0aDtmb3IoO287KW49TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKm8tLSksZT10W29dLHRbb109dFtuXSx0W25dPWU7cmV0dXJuIHR9ZnVuY3Rpb24gZHZ0KHQsZSl7cmV0dXJuYCR7ZX0vJHt0fWB9SF90LmZpbmRBQlBhcmFtcz1hdnQsSF90LmZhc3RJbnRlcnNlY3Rpb249cnZ0LEhfdC5yZXNldExvY2FsQ29ubmVjdGl2aXR5PXN2dCxIX3QuaW5pdFRyYW5zZm9ybT1sdnQsT2JqZWN0LmRlZmluZVByb3BlcnR5KElfdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksSV90LlVNQVA9SF90LlVNQVA7Y2xhc3MgcHZ0e2NvbnN0cnVjdG9yKHQpe3RoaXMuaHR0cD10LHRoaXMuaHR0cFBhdGhQcmVmaXg9ImRhdGEvcGx1Z2luL25wbWkifWZldGNoRGF0YSh0KXtyZXR1cm4gaWUodGhpcy5mZXRjaEFubm90YXRpb25zKHQpLHRoaXMuZmV0Y2hNZXRyaWNzKHQpLHRoaXMuZmV0Y2hWYWx1ZXModCksdGhpcy5mZXRjaEVtYmVkZGluZ3ModCkpLnBpcGUoVnQoKChbdCxlLG4sb10pPT57Y29uc3QgaT17fSxhPXt9O2xldCByLHM9MDtmb3IoY29uc3QgciBvZiBPYmplY3Qua2V5cyh0KSlmb3IoY29uc3QgbCBpbiB0W3JdKXtjb25zdCBjPXRbcl1bbF07T2JqZWN0LmtleXMobykubGVuZ3RoJiYhYVtjXSYmb1tyXVtsXSYmb1tyXVtsXS5zb21lKCh0PT4wIT09dCkpJiYoYVtjXT17dmVjdG9yOm9bcl1bbF0saW5kZXg6cyxuYW1lOmN9LHMrPTEpO2NvbnN0IGQ9bmV3IE1hcDtmb3IoY29uc3QgdCBpbiBlW3JdKXtjb25zdCBvPWVbcl1bdF0saT16X3Qobyk7bGV0IGE9ZC5nZXQoaSk7YXx8KGE9e25QTUlWYWx1ZTpudWxsLGNvdW50VmFsdWU6bnVsbCxhbm5vdGF0aW9uOmMsbWV0cmljOmkscnVuOnJ9LGQuc2V0KGksYSkpLEFfdChvKT9hLmNvdW50VmFsdWU9bltyXVtsXVt0XTpUX3QobykmJihhLm5QTUlWYWx1ZT1uW3JdW2xdW3RdKX1pW2NdPVsuLi5pW2NdP2lbY106W10sLi4uZC52YWx1ZXMoKV19cmV0dXJuIE9iamVjdC5rZXlzKGEpLmxlbmd0aCYmKHI9KGZ1bmN0aW9uIGwodCl7Y29uc3QgZT1PYmplY3Qua2V5cyh0KTtyZXR1cm57cG9pbnRzOnQscG9pbnRLZXlzOmUsc2h1ZmZsZWREYXRhSW5kaWNlczpjdnQoKG49ZS5sZW5ndGgsWy4uLm5ldyBBcnJheShuKV0ubWFwKCgodCxlKT0+ZSkpKSksaGFzVW1hcFJ1bjohMX07dmFyIG59KShhKSkse2Fubm90YXRpb25EYXRhOmksbWV0cmljczplLGVtYmVkZGluZ0RhdGFTZXQ6cn19KSksaGUoKHQ9PnQgaW5zdGFuY2VvZiBmRSYmNDAwPD10LnN0YXR1cyYmdC5zdGF0dXM8NTAwP3p0KHthbm5vdGF0aW9uRGF0YTp7fSxtZXRyaWNzOnt9LGVtYmVkZGluZ0RhdGFTZXQ6dm9pZCAwfSk6SXQodCkpKSl9ZmV0Y2hBbm5vdGF0aW9ucyh0KXtyZXR1cm4gaWUodC5tYXAoKHQ9PnRoaXMuaHR0cC5nZXQoYC9leHBlcmltZW50LyR7dH0vJHt0aGlzLmh0dHBQYXRoUHJlZml4fS9hbm5vdGF0aW9uc2ApLnBpcGUoVnQoKGU9PihmdW5jdGlvbiBuKHQsZSl7cmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyh0KS5tYXAoKChbdCxuXSk9PltkdnQodCxlKSxuXSkpKX0pKGUsdCkpKSkpKSkucGlwZShWdCgodD0+e2xldCBlPXt9O2Zvcihjb25zdCBuIG9mIHQpZT1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sZSksbik7cmV0dXJuIGV9KSkpfWZldGNoTWV0cmljcyh0KXtyZXR1cm4gaWUodC5tYXAoKHQ9PnRoaXMuaHR0cC5nZXQoYC9leHBlcmltZW50LyR7dH0vJHt0aGlzLmh0dHBQYXRoUHJlZml4fS9tZXRyaWNzYCkucGlwZShWdCgoZT0+KGZ1bmN0aW9uIG4odCxlKXtyZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKHQpLm1hcCgoKFt0LG5dKT0+W2R2dCh0LGUpLG5dKSkpfSkoZSx0KSkpKSkpKS5waXBlKFZ0KCh0PT57bGV0IGU9e307Zm9yKGNvbnN0IG4gb2YgdCllPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxlKSxuKTtyZXR1cm4gZX0pKSl9ZmV0Y2hWYWx1ZXModCl7cmV0dXJuIGllKHQubWFwKCh0PT50aGlzLmh0dHAuZ2V0KGAvZXhwZXJpbWVudC8ke3R9LyR7dGhpcy5odHRwUGF0aFByZWZpeH0vdmFsdWVzYCkucGlwZShWdCgoZT0+KGZ1bmN0aW9uIG4odCxlKXtyZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKHQpLm1hcCgoKFt0LG5dKT0+W2R2dCh0LGUpLG5dKSkpfSkoZSx0KSkpKSkpKS5waXBlKFZ0KCh0PT57bGV0IGU9e307Zm9yKGNvbnN0IG4gb2YgdCllPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxlKSxuKTtyZXR1cm4gZX0pKSl9ZmV0Y2hFbWJlZGRpbmdzKHQpe3JldHVybiBpZSh0Lm1hcCgodD0+dGhpcy5odHRwLmdldChgL2V4cGVyaW1lbnQvJHt0fS8ke3RoaXMuaHR0cFBhdGhQcmVmaXh9L2VtYmVkZGluZ3NgKS5waXBlKFZ0KChlPT4oZnVuY3Rpb24gbih0LGUpe3JldHVybiBPYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXModCkubWFwKCgoW3Qsbl0pPT5bZHZ0KHQsZSksbl0pKSl9KShlLHQpKSkpKSkpLnBpcGUoVnQoKHQ9PntsZXQgZT17fTtmb3IoY29uc3QgbiBvZiB0KWU9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGUpLG4pO3JldHVybiBlfSkpKX19cHZ0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxwdnQpKFRyKEhFKSl9LHB2dC7JtXByb3Y9U24oe3Rva2VuOnB2dCxmYWN0b3J5OnB2dC7JtWZhY30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIocHZ0LFt7dHlwZTpVbX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpIRX1dfSksbnVsbCk7Y2xhc3MgbXZ0e31tdnQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fG12dCl9LG12dC7JtW1vZD1mbyh7dHlwZTptdnR9KSxtdnQuybVpbmo9RG4oe3Byb3ZpZGVyczpbcHZ0XSxpbXBvcnRzOltbRkVdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIobXZ0LFt7dHlwZTpMXyxhcmdzOlt7aW1wb3J0czpbRkVdLHByb3ZpZGVyczpbcHZ0XX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKG12dCx7aW1wb3J0czpbRkVdfSk7Y29uc3QgZnZ0PV9rKCJbTlBNSV0gblBNSSBMb2FkZWQiKSx1dnQ9X2soIltOUE1JXSBuUE1JIFBsdWdpbiBEYXRhIFJlcXVlc3RlZCIpLGd2dD1faygiW05QTUldIG5QTUkgUGx1Z2luIERhdGEgTG9hZGVkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksaHZ0PV9rKCJbTlBNSV0gblBNSSBQbHVnaW4gRGF0YSBSZXF1ZXN0IEZhaWxlZCIpLGJ2dD1faygiW05QTUldIEFkZGluZy9SZW1vdmluZyBBbm5vdGF0aW9ucyB0by9mcm9tIFNlbGVjdGVkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSkseXZ0PV9rKCJbTlBNSV0gQW5ub3RhdGlvbnMgU2V0Iix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksX3Z0PV9rKCJbTlBNSV0gQ2xlYXJpbmcgdGhlIEFubm90YXRpb24gU2VsZWN0aW9uIiksQ3Z0PV9rKCJbTlBNSV0gQWRkaW5nL1JlbW92aW5nIEFubm90YXRpb25zIHRvL2Zyb20gRmxhZ2dlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLE12dD1faygiW05QTUldIEFkZGluZy9SZW1vdmluZyBBbm5vdGF0aW9ucyB0by9mcm9tIEhpZGRlbiIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLHZ2dD1faygiW05QTUldIEFubm90YXRpb25zIFJlZ2V4IENoYW5nZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSx4dnQ9X2soIltOUE1JXSBNZXRyaWNzIFJlZ2V4IENoYW5nZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxPdnQ9X2soIltOUE1JXSBNZXRyaWMgRmlsdGVyIEFkZGVkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksUHZ0PV9rKCJbTlBNSV0gTWV0cmljIEZpbHRlciBSZW1vdmVkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksd3Z0PV9rKCJbTlBNSV0gTWV0cmljIEZpbHRlciBDaGFuZ2VkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksa3Z0PV9rKCJbTlBNSV0gQW5ub3RhdGlvbiBTb3J0IENoYW5nZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxTdnQ9X2soIltOUE1JXSBTaW1pbGFyaXR5IFNvcnQgQ2hhbmdlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLER2dD1faygiW05QTUldIFRvZ2dsZSBQQyBFeHBhbmRlZCIpLFJ2dD1faygiW05QTUldIFRvZ2dsZSBBbm5vdGF0aW9ucyBFeHBhbmRlZCIpLEV2dD1faygiW05QTUldIFRvZ2dsZSBTaWRlYmFyIEV4cGFuZGVkIiksQXZ0PV9rKCJbTlBNSV0gU2hvdyBDb3VudHMgVG9nZ2xlZCIpLFR2dD1faygiW05QTUldIFNob3cgSGlkZGVuIEFubm90YXRpb25zIFRvZ2dsZWQiKSxOdnQ9X2soIltOUE1JXSBFbWJlZGRpbmdzIFZpZXcgVG9nZ2xlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLHp2dD1faygiW05QTUldIFNpZGViYXIgV2lkdGggQ2hhbmdlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLEl2dD1faygiW05QTUldIEVtYmVkZGluZ3MgU2lkZWJhciBXaWR0aCBDaGFuZ2VkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksSHZ0PV9rKCJbTlBNSV0gRW1iZWRkaW5ncyBTaWRlYmFyIEV4cGFuZGVkIFRvZ2dsZWQiKSxGdnQ9X2soIltOUE1JXSBDaGFuZ2UgRW1iZWRkaW5nIERhdGFTZXQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxMdnQ9Im5wbWkiO3ZhciBCdnQsVnZ0LGp2dCxVdnQ7IShmdW5jdGlvbih0KXt0W3QuQU5EPTBdPSJBTkQifSkoQnZ0fHwoQnZ0PXt9KSksKGZ1bmN0aW9uKHQpe3RbdC5NRVRSSUM9MF09Ik1FVFJJQyIsdFt0Lk9QRVJBVE9SPTFdPSJPUEVSQVRPUiJ9KShWdnR8fChWdnQ9e30pKSwoZnVuY3Rpb24odCl7dFt0LkRFRkFVTFQ9MF09IkRFRkFVTFQiLHRbdC5FTUJFRERJTkdTPTFdPSJFTUJFRERJTkdTIn0pKGp2dHx8KGp2dD17fSkpLChmdW5jdGlvbih0KXt0W3QuREVTQ0VORElORz0wXT0iREVTQ0VORElORyIsdFt0LkFTQ0VORE5HPTFdPSJBU0NFTkRORyIsdFt0LlNJTUlMQVI9Ml09IlNJTUlMQVIiLHRbdC5ESVNTSU1JTEFSPTNdPSJESVNTSU1JTEFSIn0pKFV2dHx8KFV2dD17fSkpO2NvbnN0IFd2dD1fUyhMdnQpLEd2dD1iUyhXdnQsKHQ9PnQucGx1Z2luRGF0YUxvYWRlZC5zdGF0ZSkpLFl2dD1iUyhXdnQsKHQ9PnQuYW5ub3RhdGlvbkRhdGEpKSxxdnQ9YlMoV3Z0LCh0PT50LnJ1blRvTWV0cmljcykpLFp2dD1iUyhXdnQsKHQ9PnQuZW1iZWRkaW5nRGF0YVNldCkpLFh2dD1iUyhXdnQsKHQ9PnQuc2VsZWN0ZWRBbm5vdGF0aW9ucykpLEt2dD1iUyhXdnQsKHQ9PnQuZmxhZ2dlZEFubm90YXRpb25zKSksSnZ0PWJTKFd2dCwodD0+dC5oaWRkZW5Bbm5vdGF0aW9ucykpLFF2dD1iUyhXdnQsKHQ9PnQuYW5ub3RhdGlvbnNSZWdleCkpLCR2dD1iUyhXdnQsKHQ9PnQubWV0cmljc1JlZ2V4KSksdHh0PWJTKFd2dCwodD0+dC5tZXRyaWNBcml0aG1ldGljKSksZXh0PWJTKFd2dCwodD0+dC5tZXRyaWNGaWx0ZXJzKSksbnh0PWJTKFd2dCwodD0+dC5zb3J0KSksb3h0PWJTKFd2dCwodD0+dC5wY0V4cGFuZGVkKSksaXh0PWJTKFd2dCwodD0+dC5hbm5vdGF0aW9uc0V4cGFuZGVkKSksYXh0PWJTKFd2dCwodD0+dC5zaWRlYmFyRXhwYW5kZWQpKSxyeHQ9YlMoV3Z0LCh0PT50LnNob3dDb3VudHMpKSxzeHQ9YlMoV3Z0LCh0PT50LnNob3dIaWRkZW5Bbm5vdGF0aW9ucykpLGx4dD1iUyhXdnQsKHQ9PnQudmlld0FjdGl2ZSkpLGN4dD1iUyhXdnQsKHQ9PnQuc2lkZWJhcldpZHRoKSksZHh0PWJTKFd2dCwodD0+dC5lbWJlZGRpbmdzTWV0cmljKSkscHh0PWJTKFd2dCwodD0+dC5lbWJlZGRpbmdzU2lkZWJhcldpZHRoKSksbXh0PWJTKFd2dCwodD0+dC5lbWJlZGRpbmdzU2lkZWJhckV4cGFuZGVkKSk7Y2xhc3MgZnh0e2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLmFjdGlvbnMkPXQsdGhpcy5zdG9yZT1lLHRoaXMuZGF0YVNvdXJjZT1uLHRoaXMubG9hZERhdGEkPVdTKCgoKT0+cGUodGhpcy5sb2FkUGx1Z2luRGF0YSgpKS5waXBlKFZ0KCgoKT0+KHt9KSkpKSkse2Rpc3BhdGNoOiExfSl9bG9hZFBsdWdpbkRhdGEoKXtyZXR1cm4gdGhpcy5hY3Rpb25zJC5waXBlKCRTKGZ2dCkscWUodGhpcy5zdG9yZS5zZWxlY3QoR3Z0KSx0aGlzLnN0b3JlLnNlbGVjdCh4UikpLHVlKCgoWyx0LGVdKT0+dCE9PVVFLkxPQURJTkcmJm51bGwhPT1lKSksV2UoKCgpPT50aGlzLnN0b3JlLmRpc3BhdGNoKHV2dCgpKSkpLCR0KCgoWywsdF0pPT50aGlzLmRhdGFTb3VyY2UuZmV0Y2hEYXRhKHQpLnBpcGUoV2UoKHQ9Pnt0aGlzLnN0b3JlLmRpc3BhdGNoKGd2dCh0KSl9KSksVnQoKCgpPT57fSkpLGhlKCgoKT0+KHRoaXMuc3RvcmUuZGlzcGF0Y2goaHZ0KCkpLGR0KSkpKSkpKX19Znh0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxmeHQpKFRyKFFTKSxUcihpUyksVHIocHZ0KSl9LGZ4dC7JtXByb3Y9U24oe3Rva2VuOmZ4dCxmYWN0b3J5OmZ4dC7JtWZhY30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoZnh0LFt7dHlwZTpVbX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpRU30se3R5cGU6aVN9LHt0eXBlOnB2dH1dfSksbnVsbCk7Y2xhc3MgdXh0e311eHQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHV4dCl9LHV4dC7JtWNtcD1zbyh7dHlwZTp1eHQsc2VsZWN0b3JzOltbIm5wbWktaW5hY3RpdmUtdmlldyJdXSxkZWNsczo2LHZhcnM6MCxjb25zdHM6W1sxLCJjb250YWluZXIiXSxbMSwidGl0bGUiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKENmKDAsImRpdiIpLENmKDEsImRpdiIsMCksQ2YoMiwiZGl2IiwxKSxQdSgzLCJuUE1JIGlzIGluYWN0aXZlIGJlY2F1c2Ugbm8gZGF0YSBpcyBhdmFpbGFibGUuIiksTWYoKSxDZig0LCJkaXYiKSxQdSg1LCIgVG8gdXNlIHRoZSBuUE1JLCBjYWxjdWxhdGUgblBNSSB2YWx1ZXMsIGFuZCBsb2cgdGhlbSB1c2luZyB0aGUgc3VtbWFyeSB3cml0ZXIuICIpLE1mKCksTWYoKSxNZigpKX0sc3R5bGVzOlsiLmNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0ge1xuICBoZWlnaHQ6IDEwMCU7XG4gIGZvbnQtZmFtaWx5OiBSb2JvdG87XG4gIGZvbnQtc2l6ZTogMTVweDtcbiAgcGFkZGluZzogNTBweDtcbn1cblxuLnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGZvbnQtc2l6ZTogMTM1JTtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIG1hcmdpbi1ib3R0b206IDI1cHg7XG59Il19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHV4dCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJucG1pLWluYWN0aXZlLXZpZXciLHRlbXBsYXRlVXJsOiIuL2luYWN0aXZlX2NvbXBvbmVudC5uZy5odG1sIixzdHlsZVVybHM6WyIuL2luYWN0aXZlX2NvbXBvbmVudC5jc3MiXX1dfV0sbnVsbCxudWxsKTtjb25zdCBneHQ9VlMoe3BsdWdpbkRhdGFMb2FkZWQ6e3N0YXRlOlVFLk5PVF9MT0FERUQsbGFzdExvYWRlZFRpbWVJbk1zOm51bGx9LGFubm90YXRpb25EYXRhOnt9LGVtYmVkZGluZ0RhdGFTZXQ6dm9pZCAwLHJ1blRvTWV0cmljczp7fSxzZWxlY3RlZEFubm90YXRpb25zOltdLGZsYWdnZWRBbm5vdGF0aW9uczpbXSxoaWRkZW5Bbm5vdGF0aW9uczpbXSxhbm5vdGF0aW9uc1JlZ2V4OiIiLG1ldHJpY3NSZWdleDoiIixtZXRyaWNBcml0aG1ldGljOltdLG1ldHJpY0ZpbHRlcnM6e30sc29ydDp7bWV0cmljOiIiLG9yZGVyOlV2dC5ERVNDRU5ESU5HfSxwY0V4cGFuZGVkOiEwLGFubm90YXRpb25zRXhwYW5kZWQ6ITAsc2lkZWJhckV4cGFuZGVkOiEwLHNob3dDb3VudHM6ITAsc2hvd0hpZGRlbkFubm90YXRpb25zOiExLHNpZGViYXJXaWR0aDozMDAsdmlld0FjdGl2ZTpqdnQuREVGQVVMVCxlbWJlZGRpbmdzTWV0cmljOiIiLGVtYmVkZGluZ3NTaWRlYmFyV2lkdGg6NTAwLGVtYmVkZGluZ3NTaWRlYmFyRXhwYW5kZWQ6ITB9LEJTKHV2dCwodD0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtwbHVnaW5EYXRhTG9hZGVkOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LnBsdWdpbkRhdGFMb2FkZWQpLHtzdGF0ZTpVRS5MT0FESU5HfSl9KSkpLEJTKGh2dCwodD0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtwbHVnaW5EYXRhTG9hZGVkOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LnBsdWdpbkRhdGFMb2FkZWQpLHtzdGF0ZTpVRS5GQUlMRUR9KX0pKSksQlMoZ3Z0LCgodCx7YW5ub3RhdGlvbkRhdGE6ZSxtZXRyaWNzOm4sZW1iZWRkaW5nRGF0YVNldDpvfSk9Pntjb25zdCBpPXt9O2Zvcihjb25zdCB0IGluIG4pe2lbdF09W107Zm9yKGNvbnN0IGUgb2Ygblt0XSlUX3QoZSkmJmlbdF0ucHVzaChlKX1yZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtydW5Ub01ldHJpY3M6aSxhbm5vdGF0aW9uRGF0YTplLGVtYmVkZGluZ0RhdGFTZXQ6byxwbHVnaW5EYXRhTG9hZGVkOntzdGF0ZTpVRS5MT0FERUQsbGFzdExvYWRlZFRpbWVJbk1zOkRhdGUubm93KCl9fSl9KSksQlMoYnZ0LCgodCx7YW5ub3RhdGlvbnM6ZX0pPT57Y29uc3Qgbj1uZXcgU2V0KFsuLi50LnNlbGVjdGVkQW5ub3RhdGlvbnMsLi4uZV0pO2lmKG4uc2l6ZT09PXQuc2VsZWN0ZWRBbm5vdGF0aW9ucy5sZW5ndGgpZm9yKGNvbnN0IHQgb2YgZSluLmRlbGV0ZSh0KTtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtzZWxlY3RlZEFubm90YXRpb25zOlsuLi5uXX0pfSkpLEJTKHl2dCwoKHQse2Fubm90YXRpb25zOmV9KT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtzZWxlY3RlZEFubm90YXRpb25zOmV9KSkpLEJTKF92dCwodD0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtzZWxlY3RlZEFubm90YXRpb25zOltdfSkpKSxCUyhDdnQsKCh0LHthbm5vdGF0aW9uczplfSk9Pntjb25zdCBuPW5ldyBTZXQoWy4uLnQuZmxhZ2dlZEFubm90YXRpb25zLC4uLmVdKTtpZihuLnNpemU9PT10LmZsYWdnZWRBbm5vdGF0aW9ucy5sZW5ndGgpZm9yKGNvbnN0IHQgb2YgZSluLmRlbGV0ZSh0KTtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtmbGFnZ2VkQW5ub3RhdGlvbnM6Wy4uLm5dLHNlbGVjdGVkQW5ub3RhdGlvbnM6W119KX0pKSxCUyhNdnQsKCh0LHthbm5vdGF0aW9uczplfSk9Pntjb25zdCBuPW5ldyBTZXQoWy4uLnQuaGlkZGVuQW5ub3RhdGlvbnMsLi4uZV0pO2lmKG4uc2l6ZT09PXQuaGlkZGVuQW5ub3RhdGlvbnMubGVuZ3RoKWZvcihjb25zdCB0IG9mIGUpbi5kZWxldGUodCk7cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7aGlkZGVuQW5ub3RhdGlvbnM6Wy4uLm5dLHNlbGVjdGVkQW5ub3RhdGlvbnM6W119KX0pKSxCUyh2dnQsKCh0LHtyZWdleDplfSk9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7YW5ub3RhdGlvbnNSZWdleDplfSkpKSxCUyh4dnQsKCh0LHtyZWdleDplfSk9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7bWV0cmljc1JlZ2V4OmV9KSkpLEJTKE92dCwoKHQse21ldHJpYzplfSk9PntpZih0Lm1ldHJpY0ZpbHRlcnNbZV0pcmV0dXJuIHQ7Y29uc3Qgbj1bXTtyZXR1cm4gMCE9PXQubWV0cmljQXJpdGhtZXRpYy5sZW5ndGgmJm4ucHVzaCh7a2luZDpWdnQuT1BFUkFUT1Isb3BlcmF0b3I6QnZ0LkFORH0pLG4ucHVzaCh7a2luZDpWdnQuTUVUUklDLG1ldHJpYzplfSksT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHttZXRyaWNBcml0aG1ldGljOlsuLi50Lm1ldHJpY0FyaXRobWV0aWMsLi4ubl0sbWV0cmljRmlsdGVyczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5tZXRyaWNGaWx0ZXJzKSx7W2VdOnttYXg6MSxtaW46LTEsaW5jbHVkZU5hTjohMX19KSxzb3J0OnttZXRyaWM6ZSxvcmRlcjpVdnQuREVTQ0VORElOR319KX0pKSxCUyhQdnQsKCh0LHttZXRyaWM6ZX0pPT57aWYoIXQubWV0cmljRmlsdGVyc1tlXSlyZXR1cm4gdDtsZXQgbj0wLG89MCxpPTI7Y29uc3QgYT10Lm1ldHJpY0ZpbHRlcnMscj1lLHM9WlQoYSxbInN5bWJvbCI9PXR5cGVvZiByP3I6cisiIl0pO2Zvcihjb25zdCBvIGluIHQubWV0cmljQXJpdGhtZXRpYyl7Y29uc3QgaT10Lm1ldHJpY0FyaXRobWV0aWNbb107aS5raW5kPT09VnZ0Lk1FVFJJQyYmaS5tZXRyaWM9PT1lJiYobj1wYXJzZUludChvKSl9cmV0dXJuIDAhPT1uJiYobz1uLTEsaT1uKzEpLE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7bWV0cmljQXJpdGhtZXRpYzpbLi4udC5tZXRyaWNBcml0aG1ldGljLnNsaWNlKDAsbyksLi4udC5tZXRyaWNBcml0aG1ldGljLnNsaWNlKGkpXSxtZXRyaWNGaWx0ZXJzOnN9KX0pKSxCUyh3dnQsKCh0LHttZXRyaWM6ZSxtYXg6bixtaW46byxpbmNsdWRlTmFOOml9KT0+dC5tZXRyaWNGaWx0ZXJzW2VdP09iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7bWV0cmljRmlsdGVyczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5tZXRyaWNGaWx0ZXJzKSx7W2VdOnttYXg6bixtaW46byxpbmNsdWRlTmFOOml9fSl9KTp0KSksQlMoa3Z0LCgodCx7bWV0cmljOmV9KT0+e2NvbnN0IG49e21ldHJpYzplLG9yZGVyOlV2dC5ERVNDRU5ESU5HfTtyZXR1cm4gdC5zb3J0Lm1ldHJpYz09PWUmJnQuc29ydC5vcmRlcj09PVV2dC5ERVNDRU5ESU5HJiYobi5vcmRlcj1VdnQuQVNDRU5ETkcpLE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7c29ydDpufSl9KSksQlMoU3Z0LCgodCx7YW5ub3RhdGlvbjplfSk9Pntjb25zdCBuPXttZXRyaWM6ZSxvcmRlcjpVdnQuU0lNSUxBUn07cmV0dXJuIHQuc29ydC5tZXRyaWM9PT1lJiZ0LnNvcnQub3JkZXI9PT1VdnQuU0lNSUxBUiYmKG4ub3JkZXI9VXZ0LkRJU1NJTUlMQVIpLE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7c29ydDpufSl9KSksQlMoRHZ0LCh0PT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3BjRXhwYW5kZWQ6IXQucGNFeHBhbmRlZH0pKSksQlMoUnZ0LCh0PT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2Fubm90YXRpb25zRXhwYW5kZWQ6IXQuYW5ub3RhdGlvbnNFeHBhbmRlZH0pKSksQlMoRXZ0LCh0PT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3NpZGViYXJFeHBhbmRlZDohdC5zaWRlYmFyRXhwYW5kZWR9KSkpLEJTKEF2dCwodD0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtzaG93Q291bnRzOiF0LnNob3dDb3VudHN9KSkpLEJTKFR2dCwodD0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtzaG93SGlkZGVuQW5ub3RhdGlvbnM6IXQuc2hvd0hpZGRlbkFubm90YXRpb25zfSkpKSxCUyhOdnQsKCh0LHttZXRyaWM6ZX0pPT57bGV0IG49anZ0LkVNQkVERElOR1Msbz1lO3JldHVybiBlPT09dC5lbWJlZGRpbmdzTWV0cmljJiYobj1qdnQuREVGQVVMVCxvPSIiKSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3ZpZXdBY3RpdmU6bixlbWJlZGRpbmdzTWV0cmljOm99KX0pKSxCUyh6dnQsKCh0LHtzaWRlYmFyV2lkdGg6ZX0pPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3NpZGViYXJXaWR0aDplfSkpKSxCUyhJdnQsKCh0LHtzaWRlYmFyV2lkdGg6ZX0pPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2VtYmVkZGluZ3NTaWRlYmFyV2lkdGg6ZX0pKSksQlMoSHZ0LCh0PT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2VtYmVkZGluZ3NTaWRlYmFyRXhwYW5kZWQ6IXQuZW1iZWRkaW5nc1NpZGViYXJFeHBhbmRlZH0pKSksQlMoRnZ0LCgodCx7ZGF0YVNldDplfSk9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7ZW1iZWRkaW5nRGF0YVNldDplfSkpKSk7ZnVuY3Rpb24gaHh0KHQsZSl7cmV0dXJuIGd4dCh0LGUpfWZ1bmN0aW9uIGJ4dCh0LGUpezEmdCYmdmYoMCwibWF0LWljb24iLDcpfWZ1bmN0aW9uIHl4dCh0LGUpe2lmKDEmdCYmKENmKDAsIm1hdC1vcHRpb24iLDgpLFB1KDEpLE1mKCkpLDImdCl7Y29uc3QgdD1lLiRpbXBsaWNpdDtiZigidmFsdWUiLHQpLERjKDEpLHd1KHQpfX1jbGFzcyBfeHR7Y29uc3RydWN0b3IoKXt0aGlzLm9uUmVnZXhGaWx0ZXJWYWx1ZUNoYW5nZT1uZXcgU3ksdGhpcy5vbkFkZEZpbHRlcj1uZXcgU3l9b25PcHRpb25TZWxlY3RlZCh0LGUpe3RoaXMub25BZGRGaWx0ZXIuZW1pdCh0Lm9wdGlvbi52YWx1ZSksZS52YWx1ZT0iIn19X3h0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxfeHQpfSxfeHQuybVjbXA9c28oe3R5cGU6X3h0LHNlbGVjdG9yczpbWyJtZXRyaWMtc2VhcmNoLWNvbXBvbmVudCJdXSxob3N0VmFyczoyLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MiZlJiZjdSgidmFsaWQiLG4uaXNSZWdleEZpbHRlclZhbGlkKX0saW5wdXRzOntjb21wbGV0aW9uczoiY29tcGxldGlvbnMiLHJlZ2V4RmlsdGVyVmFsdWU6InJlZ2V4RmlsdGVyVmFsdWUiLGlzUmVnZXhGaWx0ZXJWYWxpZDoiaXNSZWdleEZpbHRlclZhbGlkIn0sb3V0cHV0czp7b25SZWdleEZpbHRlclZhbHVlQ2hhbmdlOiJvblJlZ2V4RmlsdGVyVmFsdWVDaGFuZ2UiLG9uQWRkRmlsdGVyOiJvbkFkZEZpbHRlciJ9LGRlY2xzOjcsdmFyczo0LGNvbnN0czpbWyJzdmdJY29uIiwic2VhcmNoXzI0cHgiXSxbIm1hdElucHV0IiwiIiwiYXV0b2NvbXBsZXRlIiwib2ZmIiwicGxhY2Vob2xkZXIiLCJBZGQgTWV0cmljIEZpbHRlciIsMywidmFsdWUiLCJtYXRBdXRvY29tcGxldGUiLCJpbnB1dCJdLFsibWF0SW5wdXQiLCIiXSxbInN2Z0ljb24iLCJlcnJvcl8yNHB4IiwiY2xhc3MiLCJlcnJvci1pY29uIiwibWF0VG9vbHRpcCIsIkludmFsaWQgcmVnZXggZmlsdGVyLiBUaGUgcmVzdWx0IG1heSBiZSBzdGFsZS4iLDQsIm5nSWYiXSxbImF1dG9BY3RpdmVGaXJzdE9wdGlvbiIsIiIsMywib3B0aW9uU2VsZWN0ZWQiXSxbImZpbHRlck1hdGNoZXMiLCJtYXRBdXRvY29tcGxldGUiXSxbMywidmFsdWUiLDQsIm5nRm9yIiwibmdGb3JPZiJdLFsic3ZnSWNvbiIsImVycm9yXzI0cHgiLCJtYXRUb29sdGlwIiwiSW52YWxpZCByZWdleCBmaWx0ZXIuIFRoZSByZXN1bHQgbWF5IGJlIHN0YWxlLiIsMSwiZXJyb3ItaWNvbiJdLFszLCJ2YWx1ZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlKXtjb25zdCB0PXdmKCk7dmYoMCwibWF0LWljb24iLDApLENmKDEsImlucHV0IiwxLDIpLFJmKCJpbnB1dCIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25SZWdleEZpbHRlclZhbHVlQ2hhbmdlLmVtaXQoZS50YXJnZXQudmFsdWUpfSkpLE1mKCksSG0oMyxieHQsMSwwLCJtYXQtaWNvbiIsMyksQ2YoNCwibWF0LWF1dG9jb21wbGV0ZSIsNCw1KSxSZigib3B0aW9uU2VsZWN0ZWQiLChmdW5jdGlvbiBlKG8pe1BpKHQpO2NvbnN0IGk9Rm0oMik7cmV0dXJuIG4ub25PcHRpb25TZWxlY3RlZChvLGkpfSkpLEhtKDYseXh0LDIsMiwibWF0LW9wdGlvbiIsNiksTWYoKX1pZigyJmUpe2NvbnN0IHQ9Rm0oNSk7RGMoMSksYmYoInZhbHVlIixuLnJlZ2V4RmlsdGVyVmFsdWUpKCJtYXRBdXRvY29tcGxldGUiLHQpLERjKDIpLGJmKCJuZ0lmIiwhbi5pc1JlZ2V4RmlsdGVyVmFsaWQpLERjKDMpLGJmKCJuZ0Zvck9mIixuLmNvbXBsZXRpb25zKX19LGRpcmVjdGl2ZXM6W01xLEFaLFkzLFB2LEYzLHh2LFBMXSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX1tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17ZmxleDpub25lO21hcmdpbi1yaWdodDo1cHh9W19uZ2hvc3QtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cGFkZGluZzowIDEwcHg7cG9zaXRpb246cmVsYXRpdmU7Zm9udC1zaXplOi45ZW19W19uZ2hvc3QtJUNPTVAlXTpub3QoLnZhbGlkKXtjb2xvcjojYzYyODI4fVtfbmdob3N0LSVDT01QJV06bm90KC52YWxpZCkgICBpbnB1dFtfbmdjb250ZW50LSVDT01QJV17Y2FyZXQtY29sb3I6Y3VycmVudENvbG9yfSddLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihfeHQsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoibWV0cmljLXNlYXJjaC1jb21wb25lbnQiLHRlbXBsYXRlVXJsOiIuL21ldHJpY19zZWFyY2hfY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbIi4vbWV0cmljX3NlYXJjaF9jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaH1dfV0sbnVsbCx7Y29tcGxldGlvbnM6W3t0eXBlOlJffV0scmVnZXhGaWx0ZXJWYWx1ZTpbe3R5cGU6Ul99XSxpc1JlZ2V4RmlsdGVyVmFsaWQ6W3t0eXBlOkFfLGFyZ3M6WyJjbGFzcy52YWxpZCJdfSx7dHlwZTpSX31dLG9uUmVnZXhGaWx0ZXJWYWx1ZUNoYW5nZTpbe3R5cGU6RV99XSxvbkFkZEZpbHRlcjpbe3R5cGU6RV99XX0pO2NsYXNzIEN4dHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5tZXRyaWNzUmVnZXgkPXRoaXMuc3RvcmUuc2VsZWN0KCR2dCksdGhpcy5hY3RpdmVSdW5zJD10aGlzLnN0b3JlLnBpcGUoclMoX0kpKS5waXBlKFZ0KCh0PT50P0FycmF5LmZyb20odC5lbnRyaWVzKCkpLmZpbHRlcigodD0+dFsxXSkpLm1hcCgodD0+dFswXSkpOltdKSkpLHRoaXMubWV0cmljc0ZvckFjdGl2ZVJ1bnMkPUt0KHRoaXMuYWN0aXZlUnVucyQsdGhpcy5zdG9yZS5zZWxlY3QocXZ0KSkucGlwZShWdCgoKFt0LGVdKT0+e2NvbnN0IG49bmV3IFNldDtmb3IoY29uc3QgbyBvZiB0KWlmKGVbb10pZm9yKGNvbnN0IHQgb2YgZVtvXSluLmFkZCh0KTtyZXR1cm5bLi4ubl19KSkpLHRoaXMuaXNNZXRyaWNzRmlsdGVyVmFsaWQkPXRoaXMubWV0cmljc1JlZ2V4JC5waXBlKFZ0KCh0PT57dHJ5e3JldHVybiBCb29sZWFuKG5ldyBSZWdFeHAodCkpfWNhdGNoKHQpe3JldHVybiExfX0pKSksdGhpcy5tZXRyaWNGaWx0ZXJLZXlzJD10aGlzLnN0b3JlLnBpcGUoclMoZXh0KSkucGlwZShWdCgodD0+T2JqZWN0LmtleXModCkpKSksdGhpcy5jb21wbGV0aW9ucyQ9S3QodGhpcy5tZXRyaWNzRm9yQWN0aXZlUnVucyQsdGhpcy5tZXRyaWNzUmVnZXgkLHRoaXMubWV0cmljRmlsdGVyS2V5cyQpLnBpcGUoVnQoKChbdCxlLG5dKT0+e2NvbnN0IG89dC5maWx0ZXIoKHQ9PiFuLmluY2x1ZGVzKHQpKSk7dHJ5e2NvbnN0IHQ9bmV3IFJlZ0V4cChlLCJpIik7cmV0dXJuIG8uZmlsdGVyKChlPT50LnRlc3QoZSkpKS5zb3J0KCl9Y2F0Y2godCl7cmV0dXJuW119fSkpKX1vbkZpbHRlckNoYW5nZSh0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKHh2dCh7cmVnZXg6dH0pKX1vbkFkZEZpbHRlcih0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKE92dCh7bWV0cmljOnR9KSksdGhpcy5zdG9yZS5kaXNwYXRjaCh4dnQoe3JlZ2V4OiIifSkpfX1mdW5jdGlvbiBNeHQodCxlLG4pe2NvbnN0IG89W1tlLC4uLm5dXTtpZighbi5sZW5ndGh8fCF0Lmxlbmd0aCl7cmV0dXJuImRhdGE6dGV4dC9jc3Y7Y2hhcnNldD11dGYtOCwiK28ubWFwKCh0PT50LmpvaW4oIiwiKSkpLmpvaW4oIlxuIil9Y29uc3QgaT1uLm1hcCgodD0+el90KHQpKSk7Zm9yKGNvbnN0W24sYV1vZiB0KXtjb25zdCB0PWEuZmlsdGVyKCh0PT50LnJ1bj09PWUpKTtpZih0Lmxlbmd0aCl7Y29uc3QgZT1bbl07Zm9yKGNvbnN0IG4gb2YgaSl7Y29uc3Qgbz10LmZpbmQoKHQ9PnQubWV0cmljPT09bikpO2UucHVzaCh2b2lkIDA9PT1vPyJudWxsIjpgJHtvLm5QTUlWYWx1ZX1gKX1vLnB1c2goZSl9fXJldHVybiJkYXRhOnRleHQvY3N2O2NoYXJzZXQ9dXRmLTgsIitvLm1hcCgodD0+dC5qb2luKCIsIikpKS5qb2luKCJcbiIpfUN4dC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8Q3h0KShnZihpUykpfSxDeHQuybVjbXA9c28oe3R5cGU6Q3h0LHNlbGVjdG9yczpbWyJucG1pLW1ldHJpYy1zZWFyY2giXV0sZGVjbHM6NCx2YXJzOjksY29uc3RzOltbMywicmVnZXhGaWx0ZXJWYWx1ZSIsImNvbXBsZXRpb25zIiwiaXNSZWdleEZpbHRlclZhbGlkIiwib25SZWdleEZpbHRlclZhbHVlQ2hhbmdlIiwib25BZGRGaWx0ZXIiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKENmKDAsIm1ldHJpYy1zZWFyY2gtY29tcG9uZW50IiwwKSxSZigib25SZWdleEZpbHRlclZhbHVlQ2hhbmdlIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vbkZpbHRlckNoYW5nZShlKX0pKSgib25BZGRGaWx0ZXIiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uQWRkRmlsdGVyKGUpfSkpLF95KDEsImFzeW5jIiksX3koMiwiYXN5bmMiKSxfeSgzLCJhc3luYyIpLE1mKCkpLDImZSYmYmYoInJlZ2V4RmlsdGVyVmFsdWUiLEN5KDEsMyxuLm1ldHJpY3NSZWdleCQpKSgiY29tcGxldGlvbnMiLEN5KDIsNSxuLmNvbXBsZXRpb25zJCkpKCJpc1JlZ2V4RmlsdGVyVmFsaWQiLEN5KDMsNyxuLmlzTWV0cmljc0ZpbHRlclZhbGlkJCkpfSxkaXJlY3RpdmVzOltfeHRdLHBpcGVzOltWdl0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihDeHQsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoibnBtaS1tZXRyaWMtc2VhcmNoIix0ZW1wbGF0ZTonXG4gICAgPG1ldHJpYy1zZWFyY2gtY29tcG9uZW50XG4gICAgICBbcmVnZXhGaWx0ZXJWYWx1ZV09Im1ldHJpY3NSZWdleCQgfCBhc3luYyJcbiAgICAgIFtjb21wbGV0aW9uc109ImNvbXBsZXRpb25zJCB8IGFzeW5jIlxuICAgICAgW2lzUmVnZXhGaWx0ZXJWYWxpZF09ImlzTWV0cmljc0ZpbHRlclZhbGlkJCB8IGFzeW5jIlxuICAgICAgKG9uUmVnZXhGaWx0ZXJWYWx1ZUNoYW5nZSk9Im9uRmlsdGVyQ2hhbmdlKCRldmVudCkiXG4gICAgICAob25BZGRGaWx0ZXIpPSJvbkFkZEZpbHRlcigkZXZlbnQpIlxuICAgID48L21ldHJpYy1zZWFyY2gtY29tcG9uZW50PlxuICAnLGNoYW5nZURldGVjdGlvbjpqbi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTppU31dfSksbnVsbCk7Y29uc3Qgdnh0PWZ1bmN0aW9uKHQpe3JldHVybnsiYWN0aXZlLWJ1dHRvbiI6dH19O2NsYXNzIHh4dHtkb3dubG9hZFJlc3VsdHMoKXtmb3IoY29uc3QgdCBvZiB0aGlzLnJ1bnMpe2NvbnN0IGU9TXh0KHRoaXMuZmxhZ2dlZERhdGEsdCx0aGlzLm1ldHJpY3MpLG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpO24uc2V0QXR0cmlidXRlKCJocmVmIixlKSxuLnNldEF0dHJpYnV0ZSgiZG93bmxvYWQiLGByZXBvcnRfJHt0fS5jc3ZgKSxuLmNsaWNrKCl9fX14eHQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHh4dCl9LHh4dC7JtWNtcD1zbyh7dHlwZTp4eHQsc2VsZWN0b3JzOltbInJlc3VsdHMtZG93bmxvYWQtY29tcG9uZW50Il1dLGlucHV0czp7bnVtRmxhZ2dlZEFubm90YXRpb25zOiJudW1GbGFnZ2VkQW5ub3RhdGlvbnMiLHJ1bnM6InJ1bnMiLGZsYWdnZWREYXRhOiJmbGFnZ2VkRGF0YSIsbWV0cmljczoibWV0cmljcyJ9LGRlY2xzOjQsdmFyczo1LGNvbnN0czpbWyJtYXQtc3Ryb2tlZC1idXR0b24iLCIiLCJ0aXRsZSIsIkV4cG9ydCBDU1YgcmVwb3J0cyBvZiBhbGwgZmxhZ2dlZCBhbm5vdGF0aW9ucy4gV2lsbCBnZW5lcmF0ZSBvbmUgQ1NWIHBlciBhY3RpdmUgcnVuLiIsMywiZGlzYWJsZWQiLCJuZ0NsYXNzIiwiY2xpY2siXSxbMSwiYnV0dG9uLWNvbnRlbnRzIl0sWyJzdmdJY29uIiwiZ2V0X2FwcF8yNHB4Il1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihDZigwLCJidXR0b24iLDApLFJmKCJjbGljayIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5kb3dubG9hZFJlc3VsdHMoKX0pKSxDZigxLCJzcGFuIiwxKSx2ZigyLCJtYXQtaWNvbiIsMiksUHUoMyksTWYoKSxNZigpKSwyJmUmJihiZigiZGlzYWJsZWQiLDA9PT1uLm51bUZsYWdnZWRBbm5vdGF0aW9ucykoIm5nQ2xhc3MiLGl5KDMsdnh0LG4ubnVtRmxhZ2dlZEFubm90YXRpb25zPjApKSxEYygzKSxrdSgiIEZsYWdnZWQgUm93cyAoIixuLm51bUZsYWdnZWRBbm5vdGF0aW9ucywiKSAiKSl9LGRpcmVjdGl2ZXM6W05MLEN2LE1xXSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0uYWN0aXZlLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwO2JvcmRlcjoxcHggc29saWQgI2ViZWJlYjtjb2xvcjojZmZmfS5idXR0b24tY29udGVudHNbX25nY29udGVudC0lQ09NUCVde2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlfW1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tcmlnaHQ6NnB4fSddLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih4eHQsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoicmVzdWx0cy1kb3dubG9hZC1jb21wb25lbnQiLHRlbXBsYXRlVXJsOiIuL3Jlc3VsdHNfZG93bmxvYWRfY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbIi4vcmVzdWx0c19kb3dubG9hZF9jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaH1dfV0sbnVsbCx7bnVtRmxhZ2dlZEFubm90YXRpb25zOlt7dHlwZTpSX31dLHJ1bnM6W3t0eXBlOlJffV0sZmxhZ2dlZERhdGE6W3t0eXBlOlJffV0sbWV0cmljczpbe3R5cGU6Ul99XX0pO2NsYXNzIE94dHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5mbGFnZ2VkQW5ub3RhdGlvbnMkPXRoaXMuc3RvcmUuc2VsZWN0KEt2dCksdGhpcy5udW1GbGFnZ2VkQW5ub3RhdGlvbnMkPXRoaXMuZmxhZ2dlZEFubm90YXRpb25zJC5waXBlKFZ0KCh0PT50Lmxlbmd0aCkpKSx0aGlzLmFjdGl2ZVJ1bnMkPXRoaXMuc3RvcmUuc2VsZWN0KF9JKS5waXBlKFZ0KCh0PT50P0FycmF5LmZyb20odC5lbnRyaWVzKCkpLmZpbHRlcigodD0+dFsxXSkpLm1hcCgodD0+dFswXSkpOltdKSkpLHRoaXMuZmxhZ2dlZERhdGEkPUt0KFt0aGlzLnN0b3JlLnNlbGVjdChZdnQpLHRoaXMuZmxhZ2dlZEFubm90YXRpb25zJF0pLnBpcGUoVnQoKChbdCxlXSk9Pntjb25zdCBuPW5ldyBTZXQoZSk7cmV0dXJuIE9iamVjdC5lbnRyaWVzKHQpLmZpbHRlcigodD0+bi5oYXModFswXSkpKX0pKSksdGhpcy5tZXRyaWNzJD1LdChbdGhpcy5zdG9yZS5zZWxlY3QocXZ0KSx0aGlzLmFjdGl2ZVJ1bnMkLHRoaXMuc3RvcmUuc2VsZWN0KGV4dCldKS5waXBlKFZ0KCgoW3QsZSxuXSk9PntsZXQgbz1PYmplY3Qua2V5cyhuKTtmb3IoY29uc3QgbiBvZiBlKXRbbl0mJihvPW8uY29uY2F0KHRbbl0uZmlsdGVyKCh0PT5OX3QodCkpKSkpO3JldHVybiBvPVsuLi5uZXcgU2V0KG8pXSxvfSkpKX19T3h0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxPeHQpKGdmKGlTKSl9LE94dC7JtWNtcD1zbyh7dHlwZTpPeHQsc2VsZWN0b3JzOltbIm5wbWktcmVzdWx0cy1kb3dubG9hZCJdXSxkZWNsczo1LHZhcnM6MTIsY29uc3RzOltbMywibnVtRmxhZ2dlZEFubm90YXRpb25zIiwicnVucyIsImZsYWdnZWREYXRhIiwibWV0cmljcyJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYodmYoMCwicmVzdWx0cy1kb3dubG9hZC1jb21wb25lbnQiLDApLF95KDEsImFzeW5jIiksX3koMiwiYXN5bmMiKSxfeSgzLCJhc3luYyIpLF95KDQsImFzeW5jIikpLDImZSYmYmYoIm51bUZsYWdnZWRBbm5vdGF0aW9ucyIsQ3koMSw0LG4ubnVtRmxhZ2dlZEFubm90YXRpb25zJCkpKCJydW5zIixDeSgyLDYsbi5hY3RpdmVSdW5zJCkpKCJmbGFnZ2VkRGF0YSIsQ3koMyw4LG4uZmxhZ2dlZERhdGEkKSkoIm1ldHJpY3MiLEN5KDQsMTAsbi5tZXRyaWNzJCkpfSxkaXJlY3RpdmVzOlt4eHRdLHBpcGVzOltWdl0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihPeHQsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoibnBtaS1yZXN1bHRzLWRvd25sb2FkIix0ZW1wbGF0ZTonXG4gICAgPHJlc3VsdHMtZG93bmxvYWQtY29tcG9uZW50XG4gICAgICBbbnVtRmxhZ2dlZEFubm90YXRpb25zXT0ibnVtRmxhZ2dlZEFubm90YXRpb25zJCB8IGFzeW5jIlxuICAgICAgW3J1bnNdPSJhY3RpdmVSdW5zJCB8IGFzeW5jIlxuICAgICAgW2ZsYWdnZWREYXRhXT0iZmxhZ2dlZERhdGEkIHwgYXN5bmMiXG4gICAgICBbbWV0cmljc109Im1ldHJpY3MkIHwgYXN5bmMiXG4gICAgPjwvcmVzdWx0cy1kb3dubG9hZC1jb21wb25lbnQ+XG4gICcsY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmlTfV19KSxudWxsKTtjb25zdCBQeHQ9bmV3IGVyKCJNYXRDaGlwUmVtb3ZlIiksd3h0PW5ldyBlcigiTWF0Q2hpcEF2YXRhciIpLGt4dD1uZXcgZXIoIk1hdENoaXBUcmFpbGluZ0ljb24iKTtjb25zdCBTeHQ9RkYoSUYoSEYoY2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy5fZWxlbWVudFJlZj10fX0pLCJwcmltYXJ5IiksLTEpO2NsYXNzIER4dHt9RHh0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxEeHQpfSxEeHQuybVkaXI9aG8oe3R5cGU6RHh0LHNlbGVjdG9yczpbWyJtYXQtY2hpcC1hdmF0YXIiXSxbIiIsIm1hdENoaXBBdmF0YXIiLCIiXV0saG9zdEF0dHJzOlsxLCJtYXQtY2hpcC1hdmF0YXIiXSxmZWF0dXJlczpbamgoW3twcm92aWRlOnd4dCx1c2VFeGlzdGluZzpEeHR9XSldfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihEeHQsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoibWF0LWNoaXAtYXZhdGFyLCBbbWF0Q2hpcEF2YXRhcl0iLGhvc3Q6e2NsYXNzOiJtYXQtY2hpcC1hdmF0YXIifSxwcm92aWRlcnM6W3twcm92aWRlOnd4dCx1c2VFeGlzdGluZzpEeHR9XX1dfV0sbnVsbCxudWxsKTtjbGFzcyBSeHR7fVJ4dC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8Unh0KX0sUnh0Lsm1ZGlyPWhvKHt0eXBlOlJ4dCxzZWxlY3RvcnM6W1sibWF0LWNoaXAtdHJhaWxpbmctaWNvbiJdLFsiIiwibWF0Q2hpcFRyYWlsaW5nSWNvbiIsIiJdXSxob3N0QXR0cnM6WzEsIm1hdC1jaGlwLXRyYWlsaW5nLWljb24iXSxmZWF0dXJlczpbamgoW3twcm92aWRlOmt4dCx1c2VFeGlzdGluZzpSeHR9XSldfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihSeHQsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoibWF0LWNoaXAtdHJhaWxpbmctaWNvbiwgW21hdENoaXBUcmFpbGluZ0ljb25dIixob3N0OntjbGFzczoibWF0LWNoaXAtdHJhaWxpbmctaWNvbiJ9LHByb3ZpZGVyczpbe3Byb3ZpZGU6a3h0LHVzZUV4aXN0aW5nOlJ4dH1dfV19XSxudWxsLG51bGwpO2NsYXNzIEV4dCBleHRlbmRzIFN4dHtjb25zdHJ1Y3Rvcih0LGUsbixvLGksYSxyLHMpe3N1cGVyKHQpLHRoaXMuX25nWm9uZT1lLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmPWksdGhpcy5faGFzRm9jdXM9ITEsdGhpcy5jaGlwTGlzdFNlbGVjdGFibGU9ITAsdGhpcy5fY2hpcExpc3RNdWx0aXBsZT0hMSx0aGlzLl9jaGlwTGlzdERpc2FibGVkPSExLHRoaXMuX3NlbGVjdGVkPSExLHRoaXMuX3NlbGVjdGFibGU9ITAsdGhpcy5fZGlzYWJsZWQ9ITEsdGhpcy5fcmVtb3ZhYmxlPSEwLHRoaXMuX29uRm9jdXM9bmV3IEIsdGhpcy5fb25CbHVyPW5ldyBCLHRoaXMuc2VsZWN0aW9uQ2hhbmdlPW5ldyBTeSx0aGlzLmRlc3Ryb3llZD1uZXcgU3ksdGhpcy5yZW1vdmVkPW5ldyBTeSx0aGlzLl9hZGRIb3N0Q2xhc3NOYW1lKCksdGhpcy5fY2hpcFJpcHBsZVRhcmdldD1hLmNyZWF0ZUVsZW1lbnQoImRpdiIpLHRoaXMuX2NoaXBSaXBwbGVUYXJnZXQuY2xhc3NMaXN0LmFkZCgibWF0LWNoaXAtcmlwcGxlIiksdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2NoaXBSaXBwbGVUYXJnZXQpLHRoaXMuX2NoaXBSaXBwbGU9bmV3IGRMKHRoaXMsZSx0aGlzLl9jaGlwUmlwcGxlVGFyZ2V0LG4pLHRoaXMuX2NoaXBSaXBwbGUuc2V0dXBUcmlnZ2VyRXZlbnRzKHQpLHRoaXMucmlwcGxlQ29uZmlnPW98fHt9LHRoaXMuX2FuaW1hdGlvbnNEaXNhYmxlZD0iTm9vcEFuaW1hdGlvbnMiPT09cix0aGlzLnRhYkluZGV4PW51bGwhPXMmJnBhcnNlSW50KHMpfHwtMX1nZXQgcmlwcGxlRGlzYWJsZWQoKXtyZXR1cm4gdGhpcy5kaXNhYmxlZHx8dGhpcy5kaXNhYmxlUmlwcGxlfHx0aGlzLl9hbmltYXRpb25zRGlzYWJsZWR8fCEhdGhpcy5yaXBwbGVDb25maWcuZGlzYWJsZWR9Z2V0IHNlbGVjdGVkKCl7cmV0dXJuIHRoaXMuX3NlbGVjdGVkfXNldCBzZWxlY3RlZCh0KXtjb25zdCBlPWVIKHQpO2UhPT10aGlzLl9zZWxlY3RlZCYmKHRoaXMuX3NlbGVjdGVkPWUsdGhpcy5fZGlzcGF0Y2hTZWxlY3Rpb25DaGFuZ2UoKSl9Z2V0IHZhbHVlKCl7cmV0dXJuIHZvaWQgMCE9PXRoaXMuX3ZhbHVlP3RoaXMuX3ZhbHVlOnRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC50ZXh0Q29udGVudH1zZXQgdmFsdWUodCl7dGhpcy5fdmFsdWU9dH1nZXQgc2VsZWN0YWJsZSgpe3JldHVybiB0aGlzLl9zZWxlY3RhYmxlJiZ0aGlzLmNoaXBMaXN0U2VsZWN0YWJsZX1zZXQgc2VsZWN0YWJsZSh0KXt0aGlzLl9zZWxlY3RhYmxlPWVIKHQpfWdldCBkaXNhYmxlZCgpe3JldHVybiB0aGlzLl9jaGlwTGlzdERpc2FibGVkfHx0aGlzLl9kaXNhYmxlZH1zZXQgZGlzYWJsZWQodCl7dGhpcy5fZGlzYWJsZWQ9ZUgodCl9Z2V0IHJlbW92YWJsZSgpe3JldHVybiB0aGlzLl9yZW1vdmFibGV9c2V0IHJlbW92YWJsZSh0KXt0aGlzLl9yZW1vdmFibGU9ZUgodCl9Z2V0IGFyaWFTZWxlY3RlZCgpe3JldHVybiB0aGlzLnNlbGVjdGFibGUmJih0aGlzLl9jaGlwTGlzdE11bHRpcGxlfHx0aGlzLnNlbGVjdGVkKT90aGlzLnNlbGVjdGVkLnRvU3RyaW5nKCk6bnVsbH1fYWRkSG9zdENsYXNzTmFtZSgpe2NvbnN0IHQ9Im1hdC1iYXNpYy1jaGlwIixlPXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtlLmhhc0F0dHJpYnV0ZSh0KXx8ZS50YWdOYW1lLnRvTG93ZXJDYXNlKCk9PT10P2UuY2xhc3NMaXN0LmFkZCh0KTplLmNsYXNzTGlzdC5hZGQoIm1hdC1zdGFuZGFyZC1jaGlwIil9bmdPbkRlc3Ryb3koKXt0aGlzLmRlc3Ryb3llZC5lbWl0KHtjaGlwOnRoaXN9KSx0aGlzLl9jaGlwUmlwcGxlLl9yZW1vdmVUcmlnZ2VyRXZlbnRzKCl9c2VsZWN0KCl7dGhpcy5fc2VsZWN0ZWR8fCh0aGlzLl9zZWxlY3RlZD0hMCx0aGlzLl9kaXNwYXRjaFNlbGVjdGlvbkNoYW5nZSgpLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpKX1kZXNlbGVjdCgpe3RoaXMuX3NlbGVjdGVkJiYodGhpcy5fc2VsZWN0ZWQ9ITEsdGhpcy5fZGlzcGF0Y2hTZWxlY3Rpb25DaGFuZ2UoKSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSl9c2VsZWN0VmlhSW50ZXJhY3Rpb24oKXt0aGlzLl9zZWxlY3RlZHx8KHRoaXMuX3NlbGVjdGVkPSEwLHRoaXMuX2Rpc3BhdGNoU2VsZWN0aW9uQ2hhbmdlKCEwKSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSl9dG9nZ2xlU2VsZWN0ZWQodD0hMSl7cmV0dXJuIHRoaXMuX3NlbGVjdGVkPSF0aGlzLnNlbGVjdGVkLHRoaXMuX2Rpc3BhdGNoU2VsZWN0aW9uQ2hhbmdlKHQpLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpLHRoaXMuc2VsZWN0ZWR9Zm9jdXMoKXt0aGlzLl9oYXNGb2N1c3x8KHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpLHRoaXMuX29uRm9jdXMubmV4dCh7Y2hpcDp0aGlzfSkpLHRoaXMuX2hhc0ZvY3VzPSEwfXJlbW92ZSgpe3RoaXMucmVtb3ZhYmxlJiZ0aGlzLnJlbW92ZWQuZW1pdCh7Y2hpcDp0aGlzfSl9X2hhbmRsZUNsaWNrKHQpe3RoaXMuZGlzYWJsZWQ/dC5wcmV2ZW50RGVmYXVsdCgpOnQuc3RvcFByb3BhZ2F0aW9uKCl9X2hhbmRsZUtleWRvd24odCl7aWYoIXRoaXMuZGlzYWJsZWQpc3dpdGNoKHQua2V5Q29kZSl7Y2FzZSA0NjpjYXNlIDg6dGhpcy5yZW1vdmUoKSx0LnByZXZlbnREZWZhdWx0KCk7YnJlYWs7Y2FzZSBKSTp0aGlzLnNlbGVjdGFibGUmJnRoaXMudG9nZ2xlU2VsZWN0ZWQoITApLHQucHJldmVudERlZmF1bHQoKX19X2JsdXIoKXt0aGlzLl9uZ1pvbmUub25TdGFibGUucGlwZSh2ZSgxKSkuc3Vic2NyaWJlKCgoKT0+e3RoaXMuX25nWm9uZS5ydW4oKCgpPT57dGhpcy5faGFzRm9jdXM9ITEsdGhpcy5fb25CbHVyLm5leHQoe2NoaXA6dGhpc30pfSkpfSkpfV9kaXNwYXRjaFNlbGVjdGlvbkNoYW5nZSh0PSExKXt0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHtzb3VyY2U6dGhpcyxpc1VzZXJJbnB1dDp0LHNlbGVjdGVkOnRoaXMuX3NlbGVjdGVkfSl9fUV4dC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8RXh0KShnZihLaCksZ2YobUMpLGdmKGNIKSxnZihwTCw4KSxnZihPYiksZ2Yoc00pLGdmKGNrLDgpLEdhKCJ0YWJpbmRleCIpKX0sRXh0Lsm1ZGlyPWhvKHt0eXBlOkV4dCxzZWxlY3RvcnM6W1sibWF0LWJhc2ljLWNoaXAiXSxbIiIsIm1hdC1iYXNpYy1jaGlwIiwiIl0sWyJtYXQtY2hpcCJdLFsiIiwibWF0LWNoaXAiLCIiXV0sY29udGVudFF1ZXJpZXM6ZnVuY3Rpb24gdChlLG4sbyl7aWYoMSZlJiYoankobyx3eHQsNSksankobyxreHQsNSksankobyxQeHQsNSkpLDImZSl7bGV0IHQ7QnkodD1VeSgpKSYmKG4uYXZhdGFyPXQuZmlyc3QpLEJ5KHQ9VXkoKSkmJihuLnRyYWlsaW5nSWNvbj10LmZpcnN0KSxCeSh0PVV5KCkpJiYobi5yZW1vdmVJY29uPXQuZmlyc3QpfX0saG9zdEF0dHJzOlsicm9sZSIsIm9wdGlvbiIsMSwibWF0LWNoaXAiLCJtYXQtZm9jdXMtaW5kaWNhdG9yIl0saG9zdFZhcnM6MTQsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJlJmKCJjbGljayIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uX2hhbmRsZUNsaWNrKGUpfSkpKCJrZXlkb3duIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5faGFuZGxlS2V5ZG93bihlKX0pKSgiZm9jdXMiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4uZm9jdXMoKX0pKSgiYmx1ciIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5fYmx1cigpfSkpLDImZSYmKHltKCJ0YWJpbmRleCIsbi5kaXNhYmxlZD9udWxsOm4udGFiSW5kZXgpKCJkaXNhYmxlZCIsbi5kaXNhYmxlZHx8bnVsbCkoImFyaWEtZGlzYWJsZWQiLG4uZGlzYWJsZWQudG9TdHJpbmcoKSkoImFyaWEtc2VsZWN0ZWQiLG4uYXJpYVNlbGVjdGVkKSxjdSgibWF0LWNoaXAtc2VsZWN0ZWQiLG4uc2VsZWN0ZWQpKCJtYXQtY2hpcC13aXRoLWF2YXRhciIsbi5hdmF0YXIpKCJtYXQtY2hpcC13aXRoLXRyYWlsaW5nLWljb24iLG4udHJhaWxpbmdJY29ufHxuLnJlbW92ZUljb24pKCJtYXQtY2hpcC1kaXNhYmxlZCIsbi5kaXNhYmxlZCkoIl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIixuLl9hbmltYXRpb25zRGlzYWJsZWQpKX0saW5wdXRzOntjb2xvcjoiY29sb3IiLGRpc2FibGVSaXBwbGU6ImRpc2FibGVSaXBwbGUiLHRhYkluZGV4OiJ0YWJJbmRleCIsc2VsZWN0ZWQ6InNlbGVjdGVkIix2YWx1ZToidmFsdWUiLHNlbGVjdGFibGU6InNlbGVjdGFibGUiLGRpc2FibGVkOiJkaXNhYmxlZCIscmVtb3ZhYmxlOiJyZW1vdmFibGUifSxvdXRwdXRzOntzZWxlY3Rpb25DaGFuZ2U6InNlbGVjdGlvbkNoYW5nZSIsZGVzdHJveWVkOiJkZXN0cm95ZWQiLHJlbW92ZWQ6InJlbW92ZWQifSxleHBvcnRBczpbIm1hdENoaXAiXSxmZWF0dXJlczpbUXBdfSksRXh0LmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6S2h9LHt0eXBlOm1DfSx7dHlwZTpjSH0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltwTF19XX0se3R5cGU6T2J9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltja119XX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOiRhLGFyZ3M6WyJ0YWJpbmRleCJdfV19XSxFeHQucHJvcERlY29yYXRvcnM9e2F2YXRhcjpbe3R5cGU6aXIsYXJnczpbd3h0XX1dLHRyYWlsaW5nSWNvbjpbe3R5cGU6aXIsYXJnczpba3h0XX1dLHJlbW92ZUljb246W3t0eXBlOmlyLGFyZ3M6W1B4dF19XSxzZWxlY3RlZDpbe3R5cGU6Ul99XSx2YWx1ZTpbe3R5cGU6Ul99XSxzZWxlY3RhYmxlOlt7dHlwZTpSX31dLGRpc2FibGVkOlt7dHlwZTpSX31dLHJlbW92YWJsZTpbe3R5cGU6Ul99XSxzZWxlY3Rpb25DaGFuZ2U6W3t0eXBlOkVffV0sZGVzdHJveWVkOlt7dHlwZTpFX31dLHJlbW92ZWQ6W3t0eXBlOkVffV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoRXh0LFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6Im1hdC1iYXNpYy1jaGlwLCBbbWF0LWJhc2ljLWNoaXBdLCBtYXQtY2hpcCwgW21hdC1jaGlwXSIsaW5wdXRzOlsiY29sb3IiLCJkaXNhYmxlUmlwcGxlIiwidGFiSW5kZXgiXSxleHBvcnRBczoibWF0Q2hpcCIsaG9zdDp7Y2xhc3M6Im1hdC1jaGlwIG1hdC1mb2N1cy1pbmRpY2F0b3IiLCJbYXR0ci50YWJpbmRleF0iOiJkaXNhYmxlZCA/IG51bGwgOiB0YWJJbmRleCIscm9sZToib3B0aW9uIiwiW2NsYXNzLm1hdC1jaGlwLXNlbGVjdGVkXSI6InNlbGVjdGVkIiwiW2NsYXNzLm1hdC1jaGlwLXdpdGgtYXZhdGFyXSI6ImF2YXRhciIsIltjbGFzcy5tYXQtY2hpcC13aXRoLXRyYWlsaW5nLWljb25dIjoidHJhaWxpbmdJY29uIHx8IHJlbW92ZUljb24iLCJbY2xhc3MubWF0LWNoaXAtZGlzYWJsZWRdIjoiZGlzYWJsZWQiLCJbY2xhc3MuX21hdC1hbmltYXRpb24tbm9vcGFibGVdIjoiX2FuaW1hdGlvbnNEaXNhYmxlZCIsIlthdHRyLmRpc2FibGVkXSI6ImRpc2FibGVkIHx8IG51bGwiLCJbYXR0ci5hcmlhLWRpc2FibGVkXSI6ImRpc2FibGVkLnRvU3RyaW5nKCkiLCJbYXR0ci5hcmlhLXNlbGVjdGVkXSI6ImFyaWFTZWxlY3RlZCIsIihjbGljaykiOiJfaGFuZGxlQ2xpY2soJGV2ZW50KSIsIihrZXlkb3duKSI6Il9oYW5kbGVLZXlkb3duKCRldmVudCkiLCIoZm9jdXMpIjoiZm9jdXMoKSIsIihibHVyKSI6Il9ibHVyKCkifX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOktofSx7dHlwZTptQ30se3R5cGU6Y0h9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbcExdfV19LHt0eXBlOk9ifSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbY2tdfV19LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTokYSxhcmdzOlsidGFiaW5kZXgiXX1dfV19KSx7c2VsZWN0aW9uQ2hhbmdlOlt7dHlwZTpFX31dLGRlc3Ryb3llZDpbe3R5cGU6RV99XSxyZW1vdmVkOlt7dHlwZTpFX31dLHNlbGVjdGVkOlt7dHlwZTpSX31dLHZhbHVlOlt7dHlwZTpSX31dLHNlbGVjdGFibGU6W3t0eXBlOlJffV0sZGlzYWJsZWQ6W3t0eXBlOlJffV0scmVtb3ZhYmxlOlt7dHlwZTpSX31dLGF2YXRhcjpbe3R5cGU6aXIsYXJnczpbd3h0XX1dLHRyYWlsaW5nSWNvbjpbe3R5cGU6aXIsYXJnczpba3h0XX1dLHJlbW92ZUljb246W3t0eXBlOmlyLGFyZ3M6W1B4dF19XX0pO2NsYXNzIEF4dHtjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuX3BhcmVudENoaXA9dCwiQlVUVE9OIj09PWUubmF0aXZlRWxlbWVudC5ub2RlTmFtZSYmZS5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSgidHlwZSIsImJ1dHRvbiIpfV9oYW5kbGVDbGljayh0KXtjb25zdCBlPXRoaXMuX3BhcmVudENoaXA7ZS5yZW1vdmFibGUmJiFlLmRpc2FibGVkJiZlLnJlbW92ZSgpLHQuc3RvcFByb3BhZ2F0aW9uKCl9fUF4dC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8QXh0KShnZihFeHQpLGdmKEtoKSl9LEF4dC7JtWRpcj1obyh7dHlwZTpBeHQsc2VsZWN0b3JzOltbIiIsIm1hdENoaXBSZW1vdmUiLCIiXV0saG9zdEF0dHJzOlsxLCJtYXQtY2hpcC1yZW1vdmUiLCJtYXQtY2hpcC10cmFpbGluZy1pY29uIl0saG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJlJmKCJjbGljayIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uX2hhbmRsZUNsaWNrKGUpfSkpfSxmZWF0dXJlczpbamgoW3twcm92aWRlOlB4dCx1c2VFeGlzdGluZzpBeHR9XSldfSksQXh0LmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6RXh0fSx7dHlwZTpLaH1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoQXh0LFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6IlttYXRDaGlwUmVtb3ZlXSIsaG9zdDp7Y2xhc3M6Im1hdC1jaGlwLXJlbW92ZSBtYXQtY2hpcC10cmFpbGluZy1pY29uIiwiKGNsaWNrKSI6Il9oYW5kbGVDbGljaygkZXZlbnQpIn0scHJvdmlkZXJzOlt7cHJvdmlkZTpQeHQsdXNlRXhpc3Rpbmc6QXh0fV19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpFeHR9LHt0eXBlOktofV19KSxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IFR4dD1uZXcgZXIoIm1hdC1jaGlwcy1kZWZhdWx0LW9wdGlvbnMiKSxOeHQ9TEYoY2xhc3N7Y29uc3RydWN0b3IodCxlLG4sbyl7dGhpcy5fZGVmYXVsdEVycm9yU3RhdGVNYXRjaGVyPXQsdGhpcy5fcGFyZW50Rm9ybT1lLHRoaXMuX3BhcmVudEZvcm1Hcm91cD1uLHRoaXMubmdDb250cm9sPW99fSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2xldCB6eHQ9MDtjbGFzcyBJeHR7Y29uc3RydWN0b3IodCxlKXt0aGlzLnNvdXJjZT10LHRoaXMudmFsdWU9ZX19Y2xhc3MgSHh0IGV4dGVuZHMgTnh0e2NvbnN0cnVjdG9yKHQsZSxuLG8saSxhLHIpe3N1cGVyKGEsbyxpLHIpLHRoaXMuX2VsZW1lbnRSZWY9dCx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZj1lLHRoaXMuX2Rpcj1uLHRoaXMuY29udHJvbFR5cGU9Im1hdC1jaGlwLWxpc3QiLHRoaXMuX2xhc3REZXN0cm95ZWRDaGlwSW5kZXg9bnVsbCx0aGlzLl9kZXN0cm95ZWQ9bmV3IEIsdGhpcy5fdWlkPSJtYXQtY2hpcC1saXN0LSIrenh0KyssdGhpcy5fdGFiSW5kZXg9MCx0aGlzLl91c2VyVGFiSW5kZXg9bnVsbCx0aGlzLl9vblRvdWNoZWQ9KCk9Pnt9LHRoaXMuX29uQ2hhbmdlPSgpPT57fSx0aGlzLl9tdWx0aXBsZT0hMSx0aGlzLl9jb21wYXJlV2l0aD0odCxlKT0+dD09PWUsdGhpcy5fcmVxdWlyZWQ9ITEsdGhpcy5fZGlzYWJsZWQ9ITEsdGhpcy5hcmlhT3JpZW50YXRpb249Imhvcml6b250YWwiLHRoaXMuX3NlbGVjdGFibGU9ITAsdGhpcy5jaGFuZ2U9bmV3IFN5LHRoaXMudmFsdWVDaGFuZ2U9bmV3IFN5LHRoaXMubmdDb250cm9sJiYodGhpcy5uZ0NvbnRyb2wudmFsdWVBY2Nlc3Nvcj10aGlzKX1nZXQgc2VsZWN0ZWQoKXtyZXR1cm4gdGhpcy5tdWx0aXBsZT90aGlzLl9zZWxlY3Rpb25Nb2RlbC5zZWxlY3RlZDp0aGlzLl9zZWxlY3Rpb25Nb2RlbC5zZWxlY3RlZFswXX1nZXQgcm9sZSgpe3JldHVybiB0aGlzLmVtcHR5P251bGw6Imxpc3Rib3gifWdldCBtdWx0aXBsZSgpe3JldHVybiB0aGlzLl9tdWx0aXBsZX1zZXQgbXVsdGlwbGUodCl7dGhpcy5fbXVsdGlwbGU9ZUgodCksdGhpcy5fc3luY0NoaXBzU3RhdGUoKX1nZXQgY29tcGFyZVdpdGgoKXtyZXR1cm4gdGhpcy5fY29tcGFyZVdpdGh9c2V0IGNvbXBhcmVXaXRoKHQpe3RoaXMuX2NvbXBhcmVXaXRoPXQsdGhpcy5fc2VsZWN0aW9uTW9kZWwmJnRoaXMuX2luaXRpYWxpemVTZWxlY3Rpb24oKX1nZXQgdmFsdWUoKXtyZXR1cm4gdGhpcy5fdmFsdWV9c2V0IHZhbHVlKHQpe3RoaXMud3JpdGVWYWx1ZSh0KSx0aGlzLl92YWx1ZT10fWdldCBpZCgpe3JldHVybiB0aGlzLl9jaGlwSW5wdXQ/dGhpcy5fY2hpcElucHV0LmlkOnRoaXMuX3VpZH1nZXQgcmVxdWlyZWQoKXtyZXR1cm4gdGhpcy5fcmVxdWlyZWR9c2V0IHJlcXVpcmVkKHQpe3RoaXMuX3JlcXVpcmVkPWVIKHQpLHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKX1nZXQgcGxhY2Vob2xkZXIoKXtyZXR1cm4gdGhpcy5fY2hpcElucHV0P3RoaXMuX2NoaXBJbnB1dC5wbGFjZWhvbGRlcjp0aGlzLl9wbGFjZWhvbGRlcn1zZXQgcGxhY2Vob2xkZXIodCl7dGhpcy5fcGxhY2Vob2xkZXI9dCx0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCl9Z2V0IGZvY3VzZWQoKXtyZXR1cm4gdGhpcy5fY2hpcElucHV0JiZ0aGlzLl9jaGlwSW5wdXQuZm9jdXNlZHx8dGhpcy5faGFzRm9jdXNlZENoaXAoKX1nZXQgZW1wdHkoKXtyZXR1cm4oIXRoaXMuX2NoaXBJbnB1dHx8dGhpcy5fY2hpcElucHV0LmVtcHR5KSYmKCF0aGlzLmNoaXBzfHwwPT09dGhpcy5jaGlwcy5sZW5ndGgpfWdldCBzaG91bGRMYWJlbEZsb2F0KCl7cmV0dXJuIXRoaXMuZW1wdHl8fHRoaXMuZm9jdXNlZH1nZXQgZGlzYWJsZWQoKXtyZXR1cm4gdGhpcy5uZ0NvbnRyb2w/ISF0aGlzLm5nQ29udHJvbC5kaXNhYmxlZDp0aGlzLl9kaXNhYmxlZH1zZXQgZGlzYWJsZWQodCl7dGhpcy5fZGlzYWJsZWQ9ZUgodCksdGhpcy5fc3luY0NoaXBzU3RhdGUoKX1nZXQgc2VsZWN0YWJsZSgpe3JldHVybiB0aGlzLl9zZWxlY3RhYmxlfXNldCBzZWxlY3RhYmxlKHQpe3RoaXMuX3NlbGVjdGFibGU9ZUgodCksdGhpcy5jaGlwcyYmdGhpcy5jaGlwcy5mb3JFYWNoKCh0PT50LmNoaXBMaXN0U2VsZWN0YWJsZT10aGlzLl9zZWxlY3RhYmxlKSl9c2V0IHRhYkluZGV4KHQpe3RoaXMuX3VzZXJUYWJJbmRleD10LHRoaXMuX3RhYkluZGV4PXR9Z2V0IGNoaXBTZWxlY3Rpb25DaGFuZ2VzKCl7cmV0dXJuIHBlKC4uLnRoaXMuY2hpcHMubWFwKCh0PT50LnNlbGVjdGlvbkNoYW5nZSkpKX1nZXQgY2hpcEZvY3VzQ2hhbmdlcygpe3JldHVybiBwZSguLi50aGlzLmNoaXBzLm1hcCgodD0+dC5fb25Gb2N1cykpKX1nZXQgY2hpcEJsdXJDaGFuZ2VzKCl7cmV0dXJuIHBlKC4uLnRoaXMuY2hpcHMubWFwKCh0PT50Ll9vbkJsdXIpKSl9Z2V0IGNoaXBSZW1vdmVDaGFuZ2VzKCl7cmV0dXJuIHBlKC4uLnRoaXMuY2hpcHMubWFwKCh0PT50LmRlc3Ryb3llZCkpKX1uZ0FmdGVyQ29udGVudEluaXQoKXt0aGlzLl9rZXlNYW5hZ2VyPW5ldyBMSCh0aGlzLmNoaXBzKS53aXRoV3JhcCgpLndpdGhWZXJ0aWNhbE9yaWVudGF0aW9uKCkud2l0aEhvbWVBbmRFbmQoKS53aXRoSG9yaXpvbnRhbE9yaWVudGF0aW9uKHRoaXMuX2Rpcj90aGlzLl9kaXIudmFsdWU6Imx0ciIpLHRoaXMuX2RpciYmdGhpcy5fZGlyLmNoYW5nZS5waXBlKGplKHRoaXMuX2Rlc3Ryb3llZCkpLnN1YnNjcmliZSgodD0+dGhpcy5fa2V5TWFuYWdlci53aXRoSG9yaXpvbnRhbE9yaWVudGF0aW9uKHQpKSksdGhpcy5fa2V5TWFuYWdlci50YWJPdXQucGlwZShqZSh0aGlzLl9kZXN0cm95ZWQpKS5zdWJzY3JpYmUoKCgpPT57dGhpcy5fYWxsb3dGb2N1c0VzY2FwZSgpfSkpLHRoaXMuY2hpcHMuY2hhbmdlcy5waXBlKEJlKG51bGwpLGplKHRoaXMuX2Rlc3Ryb3llZCkpLnN1YnNjcmliZSgoKCk9Pnt0aGlzLmRpc2FibGVkJiZQcm9taXNlLnJlc29sdmUoKS50aGVuKCgoKT0+e3RoaXMuX3N5bmNDaGlwc1N0YXRlKCl9KSksdGhpcy5fcmVzZXRDaGlwcygpLHRoaXMuX2luaXRpYWxpemVTZWxlY3Rpb24oKSx0aGlzLl91cGRhdGVUYWJJbmRleCgpLHRoaXMuX3VwZGF0ZUZvY3VzRm9yRGVzdHJveWVkQ2hpcHMoKSx0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCl9KSl9bmdPbkluaXQoKXt0aGlzLl9zZWxlY3Rpb25Nb2RlbD1uZXcgakwodGhpcy5tdWx0aXBsZSx2b2lkIDAsITEpLHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKX1uZ0RvQ2hlY2soKXt0aGlzLm5nQ29udHJvbCYmKHRoaXMudXBkYXRlRXJyb3JTdGF0ZSgpLHRoaXMubmdDb250cm9sLmRpc2FibGVkIT09dGhpcy5fZGlzYWJsZWQmJih0aGlzLmRpc2FibGVkPSEhdGhpcy5uZ0NvbnRyb2wuZGlzYWJsZWQpKX1uZ09uRGVzdHJveSgpe3RoaXMuX2Rlc3Ryb3llZC5uZXh0KCksdGhpcy5fZGVzdHJveWVkLmNvbXBsZXRlKCksdGhpcy5zdGF0ZUNoYW5nZXMuY29tcGxldGUoKSx0aGlzLl9kcm9wU3Vic2NyaXB0aW9ucygpfXJlZ2lzdGVySW5wdXQodCl7dGhpcy5fY2hpcElucHV0PXQsdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSgiZGF0YS1tYXQtY2hpcC1pbnB1dCIsdC5pZCl9c2V0RGVzY3JpYmVkQnlJZHModCl7dGhpcy5fYXJpYURlc2NyaWJlZGJ5PXQuam9pbigiICIpfXdyaXRlVmFsdWUodCl7dGhpcy5jaGlwcyYmdGhpcy5fc2V0U2VsZWN0aW9uQnlWYWx1ZSh0LCExKX1yZWdpc3Rlck9uQ2hhbmdlKHQpe3RoaXMuX29uQ2hhbmdlPXR9cmVnaXN0ZXJPblRvdWNoZWQodCl7dGhpcy5fb25Ub3VjaGVkPXR9c2V0RGlzYWJsZWRTdGF0ZSh0KXt0aGlzLmRpc2FibGVkPXQsdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpfW9uQ29udGFpbmVyQ2xpY2sodCl7dGhpcy5fb3JpZ2luYXRlc0Zyb21DaGlwKHQpfHx0aGlzLmZvY3VzKCl9Zm9jdXModCl7dGhpcy5kaXNhYmxlZHx8dGhpcy5fY2hpcElucHV0JiZ0aGlzLl9jaGlwSW5wdXQuZm9jdXNlZHx8KHRoaXMuY2hpcHMubGVuZ3RoPjA/KHRoaXMuX2tleU1hbmFnZXIuc2V0Rmlyc3RJdGVtQWN0aXZlKCksdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpKToodGhpcy5fZm9jdXNJbnB1dCh0KSx0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCkpKX1fZm9jdXNJbnB1dCh0KXt0aGlzLl9jaGlwSW5wdXQmJnRoaXMuX2NoaXBJbnB1dC5mb2N1cyh0KX1fa2V5ZG93bih0KXtjb25zdCBlPXQudGFyZ2V0O2UmJmUuY2xhc3NMaXN0LmNvbnRhaW5zKCJtYXQtY2hpcCIpJiYodGhpcy5fa2V5TWFuYWdlci5vbktleWRvd24odCksdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpKX1fdXBkYXRlVGFiSW5kZXgoKXt0aGlzLl90YWJJbmRleD10aGlzLl91c2VyVGFiSW5kZXh8fCgwPT09dGhpcy5jaGlwcy5sZW5ndGg/LTE6MCl9X3VwZGF0ZUZvY3VzRm9yRGVzdHJveWVkQ2hpcHMoKXtpZihudWxsIT10aGlzLl9sYXN0RGVzdHJveWVkQ2hpcEluZGV4KWlmKHRoaXMuY2hpcHMubGVuZ3RoKXtjb25zdCB0PU1hdGgubWluKHRoaXMuX2xhc3REZXN0cm95ZWRDaGlwSW5kZXgsdGhpcy5jaGlwcy5sZW5ndGgtMSk7dGhpcy5fa2V5TWFuYWdlci5zZXRBY3RpdmVJdGVtKHQpfWVsc2UgdGhpcy5mb2N1cygpO3RoaXMuX2xhc3REZXN0cm95ZWRDaGlwSW5kZXg9bnVsbH1faXNWYWxpZEluZGV4KHQpe3JldHVybiB0Pj0wJiZ0PHRoaXMuY2hpcHMubGVuZ3RofV9zZXRTZWxlY3Rpb25CeVZhbHVlKHQsZT0hMCl7aWYodGhpcy5fY2xlYXJTZWxlY3Rpb24oKSx0aGlzLmNoaXBzLmZvckVhY2goKHQ9PnQuZGVzZWxlY3QoKSkpLEFycmF5LmlzQXJyYXkodCkpdC5mb3JFYWNoKCh0PT50aGlzLl9zZWxlY3RWYWx1ZSh0LGUpKSksdGhpcy5fc29ydFZhbHVlcygpO2Vsc2V7Y29uc3Qgbj10aGlzLl9zZWxlY3RWYWx1ZSh0LGUpO24mJmUmJnRoaXMuX2tleU1hbmFnZXIuc2V0QWN0aXZlSXRlbShuKX19X3NlbGVjdFZhbHVlKHQsZT0hMCl7Y29uc3Qgbj10aGlzLmNoaXBzLmZpbmQoKGU9Pm51bGwhPWUudmFsdWUmJnRoaXMuX2NvbXBhcmVXaXRoKGUudmFsdWUsdCkpKTtyZXR1cm4gbiYmKGU/bi5zZWxlY3RWaWFJbnRlcmFjdGlvbigpOm4uc2VsZWN0KCksdGhpcy5fc2VsZWN0aW9uTW9kZWwuc2VsZWN0KG4pKSxufV9pbml0aWFsaXplU2VsZWN0aW9uKCl7UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKCk9PnsodGhpcy5uZ0NvbnRyb2x8fHRoaXMuX3ZhbHVlKSYmKHRoaXMuX3NldFNlbGVjdGlvbkJ5VmFsdWUodGhpcy5uZ0NvbnRyb2w/dGhpcy5uZ0NvbnRyb2wudmFsdWU6dGhpcy5fdmFsdWUsITEpLHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKSl9KSl9X2NsZWFyU2VsZWN0aW9uKHQpe3RoaXMuX3NlbGVjdGlvbk1vZGVsLmNsZWFyKCksdGhpcy5jaGlwcy5mb3JFYWNoKChlPT57ZSE9PXQmJmUuZGVzZWxlY3QoKX0pKSx0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCl9X3NvcnRWYWx1ZXMoKXt0aGlzLl9tdWx0aXBsZSYmKHRoaXMuX3NlbGVjdGlvbk1vZGVsLmNsZWFyKCksdGhpcy5jaGlwcy5mb3JFYWNoKCh0PT57dC5zZWxlY3RlZCYmdGhpcy5fc2VsZWN0aW9uTW9kZWwuc2VsZWN0KHQpfSkpLHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKSl9X3Byb3BhZ2F0ZUNoYW5nZXModCl7bGV0IGU9bnVsbDtlPUFycmF5LmlzQXJyYXkodGhpcy5zZWxlY3RlZCk/dGhpcy5zZWxlY3RlZC5tYXAoKHQ9PnQudmFsdWUpKTp0aGlzLnNlbGVjdGVkP3RoaXMuc2VsZWN0ZWQudmFsdWU6dCx0aGlzLl92YWx1ZT1lLHRoaXMuY2hhbmdlLmVtaXQobmV3IEl4dCh0aGlzLGUpKSx0aGlzLnZhbHVlQ2hhbmdlLmVtaXQoZSksdGhpcy5fb25DaGFuZ2UoZSksdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCl9X2JsdXIoKXt0aGlzLl9oYXNGb2N1c2VkQ2hpcCgpfHx0aGlzLl9rZXlNYW5hZ2VyLnNldEFjdGl2ZUl0ZW0oLTEpLHRoaXMuZGlzYWJsZWR8fCh0aGlzLl9jaGlwSW5wdXQ/c2V0VGltZW91dCgoKCk9Pnt0aGlzLmZvY3VzZWR8fHRoaXMuX21hcmtBc1RvdWNoZWQoKX0pKTp0aGlzLl9tYXJrQXNUb3VjaGVkKCkpfV9tYXJrQXNUb3VjaGVkKCl7dGhpcy5fb25Ub3VjaGVkKCksdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCksdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpfV9hbGxvd0ZvY3VzRXNjYXBlKCl7LTEhPT10aGlzLl90YWJJbmRleCYmKHRoaXMuX3RhYkluZGV4PS0xLHNldFRpbWVvdXQoKCgpPT57dGhpcy5fdGFiSW5kZXg9dGhpcy5fdXNlclRhYkluZGV4fHwwLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpfSkpKX1fcmVzZXRDaGlwcygpe3RoaXMuX2Ryb3BTdWJzY3JpcHRpb25zKCksdGhpcy5fbGlzdGVuVG9DaGlwc0ZvY3VzKCksdGhpcy5fbGlzdGVuVG9DaGlwc1NlbGVjdGlvbigpLHRoaXMuX2xpc3RlblRvQ2hpcHNSZW1vdmVkKCl9X2Ryb3BTdWJzY3JpcHRpb25zKCl7dGhpcy5fY2hpcEZvY3VzU3Vic2NyaXB0aW9uJiYodGhpcy5fY2hpcEZvY3VzU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksdGhpcy5fY2hpcEZvY3VzU3Vic2NyaXB0aW9uPW51bGwpLHRoaXMuX2NoaXBCbHVyU3Vic2NyaXB0aW9uJiYodGhpcy5fY2hpcEJsdXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLl9jaGlwQmx1clN1YnNjcmlwdGlvbj1udWxsKSx0aGlzLl9jaGlwU2VsZWN0aW9uU3Vic2NyaXB0aW9uJiYodGhpcy5fY2hpcFNlbGVjdGlvblN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHRoaXMuX2NoaXBTZWxlY3Rpb25TdWJzY3JpcHRpb249bnVsbCksdGhpcy5fY2hpcFJlbW92ZVN1YnNjcmlwdGlvbiYmKHRoaXMuX2NoaXBSZW1vdmVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLl9jaGlwUmVtb3ZlU3Vic2NyaXB0aW9uPW51bGwpfV9saXN0ZW5Ub0NoaXBzU2VsZWN0aW9uKCl7dGhpcy5fY2hpcFNlbGVjdGlvblN1YnNjcmlwdGlvbj10aGlzLmNoaXBTZWxlY3Rpb25DaGFuZ2VzLnN1YnNjcmliZSgodD0+e3Quc291cmNlLnNlbGVjdGVkP3RoaXMuX3NlbGVjdGlvbk1vZGVsLnNlbGVjdCh0LnNvdXJjZSk6dGhpcy5fc2VsZWN0aW9uTW9kZWwuZGVzZWxlY3QodC5zb3VyY2UpLHRoaXMubXVsdGlwbGV8fHRoaXMuY2hpcHMuZm9yRWFjaCgodD0+eyF0aGlzLl9zZWxlY3Rpb25Nb2RlbC5pc1NlbGVjdGVkKHQpJiZ0LnNlbGVjdGVkJiZ0LmRlc2VsZWN0KCl9KSksdC5pc1VzZXJJbnB1dCYmdGhpcy5fcHJvcGFnYXRlQ2hhbmdlcygpfSkpfV9saXN0ZW5Ub0NoaXBzRm9jdXMoKXt0aGlzLl9jaGlwRm9jdXNTdWJzY3JpcHRpb249dGhpcy5jaGlwRm9jdXNDaGFuZ2VzLnN1YnNjcmliZSgodD0+e2xldCBlPXRoaXMuY2hpcHMudG9BcnJheSgpLmluZGV4T2YodC5jaGlwKTt0aGlzLl9pc1ZhbGlkSW5kZXgoZSkmJnRoaXMuX2tleU1hbmFnZXIudXBkYXRlQWN0aXZlSXRlbShlKSx0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCl9KSksdGhpcy5fY2hpcEJsdXJTdWJzY3JpcHRpb249dGhpcy5jaGlwQmx1ckNoYW5nZXMuc3Vic2NyaWJlKCgoKT0+e3RoaXMuX2JsdXIoKSx0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCl9KSl9X2xpc3RlblRvQ2hpcHNSZW1vdmVkKCl7dGhpcy5fY2hpcFJlbW92ZVN1YnNjcmlwdGlvbj10aGlzLmNoaXBSZW1vdmVDaGFuZ2VzLnN1YnNjcmliZSgodD0+e2NvbnN0IGU9dC5jaGlwLG49dGhpcy5jaGlwcy50b0FycmF5KCkuaW5kZXhPZih0LmNoaXApO3RoaXMuX2lzVmFsaWRJbmRleChuKSYmZS5faGFzRm9jdXMmJih0aGlzLl9sYXN0RGVzdHJveWVkQ2hpcEluZGV4PW4pfSkpfV9vcmlnaW5hdGVzRnJvbUNoaXAodCl7bGV0IGU9dC50YXJnZXQ7Zm9yKDtlJiZlIT09dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Oyl7aWYoZS5jbGFzc0xpc3QuY29udGFpbnMoIm1hdC1jaGlwIikpcmV0dXJuITA7ZT1lLnBhcmVudEVsZW1lbnR9cmV0dXJuITF9X2hhc0ZvY3VzZWRDaGlwKCl7cmV0dXJuIHRoaXMuY2hpcHMmJnRoaXMuY2hpcHMuc29tZSgodD0+dC5faGFzRm9jdXMpKX1fc3luY0NoaXBzU3RhdGUoKXt0aGlzLmNoaXBzJiZ0aGlzLmNoaXBzLmZvckVhY2goKHQ9Pnt0Ll9jaGlwTGlzdERpc2FibGVkPXRoaXMuX2Rpc2FibGVkLHQuX2NoaXBMaXN0TXVsdGlwbGU9dGhpcy5tdWx0aXBsZX0pKX19SHh0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxIeHQpKGdmKEtoKSxnZihPYiksZ2YodkYsOCksZ2YoWFcsOCksZ2YoaEcsOCksZ2YobkwpLGdmKGxXLDEwKSl9LEh4dC7JtWNtcD1zbyh7dHlwZTpIeHQsc2VsZWN0b3JzOltbIm1hdC1jaGlwLWxpc3QiXV0sY29udGVudFF1ZXJpZXM6ZnVuY3Rpb24gdChlLG4sbyl7aWYoMSZlJiZqeShvLEV4dCw1KSwyJmUpe2xldCB0O0J5KHQ9VXkoKSkmJihuLmNoaXBzPXQpfX0saG9zdEF0dHJzOlsxLCJtYXQtY2hpcC1saXN0Il0saG9zdFZhcnM6MTUsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJlJmKCJmb2N1cyIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5mb2N1cygpfSkpKCJibHVyIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLl9ibHVyKCl9KSkoImtleWRvd24iLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLl9rZXlkb3duKGUpfSkpLDImZSYmKGNnKCJpZCIsbi5fdWlkKSx5bSgidGFiaW5kZXgiLG4uZGlzYWJsZWQ/bnVsbDpuLl90YWJJbmRleCkoImFyaWEtZGVzY3JpYmVkYnkiLG4uX2FyaWFEZXNjcmliZWRieXx8bnVsbCkoImFyaWEtcmVxdWlyZWQiLG4ucm9sZT9uLnJlcXVpcmVkOm51bGwpKCJhcmlhLWRpc2FibGVkIixuLmRpc2FibGVkLnRvU3RyaW5nKCkpKCJhcmlhLWludmFsaWQiLG4uZXJyb3JTdGF0ZSkoImFyaWEtbXVsdGlzZWxlY3RhYmxlIixuLm11bHRpcGxlKSgicm9sZSIsbi5yb2xlKSgiYXJpYS1vcmllbnRhdGlvbiIsbi5hcmlhT3JpZW50YXRpb24pLGN1KCJtYXQtY2hpcC1saXN0LWRpc2FibGVkIixuLmRpc2FibGVkKSgibWF0LWNoaXAtbGlzdC1pbnZhbGlkIixuLmVycm9yU3RhdGUpKCJtYXQtY2hpcC1saXN0LXJlcXVpcmVkIixuLnJlcXVpcmVkKSl9LGlucHV0czp7YXJpYU9yaWVudGF0aW9uOlsiYXJpYS1vcmllbnRhdGlvbiIsImFyaWFPcmllbnRhdGlvbiJdLG11bHRpcGxlOiJtdWx0aXBsZSIsY29tcGFyZVdpdGg6ImNvbXBhcmVXaXRoIix2YWx1ZToidmFsdWUiLHJlcXVpcmVkOiJyZXF1aXJlZCIscGxhY2Vob2xkZXI6InBsYWNlaG9sZGVyIixkaXNhYmxlZDoiZGlzYWJsZWQiLHNlbGVjdGFibGU6InNlbGVjdGFibGUiLHRhYkluZGV4OiJ0YWJJbmRleCIsZXJyb3JTdGF0ZU1hdGNoZXI6ImVycm9yU3RhdGVNYXRjaGVyIn0sb3V0cHV0czp7Y2hhbmdlOiJjaGFuZ2UiLHZhbHVlQ2hhbmdlOiJ2YWx1ZUNoYW5nZSJ9LGV4cG9ydEFzOlsibWF0Q2hpcExpc3QiXSxmZWF0dXJlczpbamgoW3twcm92aWRlOmlVLHVzZUV4aXN0aW5nOkh4dH1dKSxRcF0sbmdDb250ZW50U2VsZWN0b3JzOlsiKiJdLGRlY2xzOjIsdmFyczowLGNvbnN0czpbWzEsIm1hdC1jaGlwLWxpc3Qtd3JhcHBlciJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoSGYoKSxDZigwLCJkaXYiLDApLEZmKDEpLE1mKCkpfSxzdHlsZXM6WycubWF0LWNoaXB7cG9zaXRpb246cmVsYXRpdmU7Ym94LXNpemluZzpib3JkZXItYm94Oy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKTtib3JkZXI6bm9uZTstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0ubWF0LXN0YW5kYXJkLWNoaXB7dHJhbnNpdGlvbjpib3gtc2hhZG93IDI4MG1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7ZGlzcGxheTppbmxpbmUtZmxleDtwYWRkaW5nOjdweCAxMnB4O2JvcmRlci1yYWRpdXM6MTZweDthbGlnbi1pdGVtczpjZW50ZXI7Y3Vyc29yOmRlZmF1bHQ7bWluLWhlaWdodDozMnB4O2hlaWdodDoxcHh9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlLm1hdC1zdGFuZGFyZC1jaGlwe3RyYW5zaXRpb246bm9uZTthbmltYXRpb246bm9uZX0ubWF0LXN0YW5kYXJkLWNoaXAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbnt3aWR0aDoxOHB4O2hlaWdodDoxOHB4fS5tYXQtc3RhbmRhcmQtY2hpcDo6YWZ0ZXJ7dG9wOjA7bGVmdDowO3JpZ2h0OjA7Ym90dG9tOjA7cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czppbmhlcml0O29wYWNpdHk6MDtjb250ZW50OiIiO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5IDIwMG1zIGN1YmljLWJlemllcigwLjM1LCAwLCAwLjI1LCAxKX0ubWF0LXN0YW5kYXJkLWNoaXA6aG92ZXI6OmFmdGVye29wYWNpdHk6LjEyfS5tYXQtc3RhbmRhcmQtY2hpcDpmb2N1c3tvdXRsaW5lOm5vbmV9Lm1hdC1zdGFuZGFyZC1jaGlwOmZvY3VzOjphZnRlcntvcGFjaXR5Oi4xNn0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtc3RhbmRhcmQtY2hpcHtvdXRsaW5lOnNvbGlkIDFweH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtc3RhbmRhcmQtY2hpcDpmb2N1c3tvdXRsaW5lOmRvdHRlZCAycHh9Lm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLWRpc2FibGVkOjphZnRlcntvcGFjaXR5OjB9Lm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLWRpc2FibGVkIC5tYXQtY2hpcC1yZW1vdmUsLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLWRpc2FibGVkIC5tYXQtY2hpcC10cmFpbGluZy1pY29ue2N1cnNvcjpkZWZhdWx0fS5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC13aXRoLXRyYWlsaW5nLWljb24ubWF0LWNoaXAtd2l0aC1hdmF0YXIsLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXdpdGgtYXZhdGFye3BhZGRpbmctdG9wOjA7cGFkZGluZy1ib3R0b206MH0ubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtd2l0aC10cmFpbGluZy1pY29uLm1hdC1jaGlwLXdpdGgtYXZhdGFye3BhZGRpbmctcmlnaHQ6OHB4O3BhZGRpbmctbGVmdDowfVtkaXI9cnRsXSAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtd2l0aC10cmFpbGluZy1pY29uLm1hdC1jaGlwLXdpdGgtYXZhdGFye3BhZGRpbmctbGVmdDo4cHg7cGFkZGluZy1yaWdodDowfS5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC13aXRoLXRyYWlsaW5nLWljb257cGFkZGluZy10b3A6N3B4O3BhZGRpbmctYm90dG9tOjdweDtwYWRkaW5nLXJpZ2h0OjhweDtwYWRkaW5nLWxlZnQ6MTJweH1bZGlyPXJ0bF0gLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXdpdGgtdHJhaWxpbmctaWNvbntwYWRkaW5nLWxlZnQ6OHB4O3BhZGRpbmctcmlnaHQ6MTJweH0ubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtd2l0aC1hdmF0YXJ7cGFkZGluZy1sZWZ0OjA7cGFkZGluZy1yaWdodDoxMnB4fVtkaXI9cnRsXSAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtd2l0aC1hdmF0YXJ7cGFkZGluZy1yaWdodDowO3BhZGRpbmctbGVmdDoxMnB4fS5tYXQtc3RhbmRhcmQtY2hpcCAubWF0LWNoaXAtYXZhdGFye3dpZHRoOjI0cHg7aGVpZ2h0OjI0cHg7bWFyZ2luLXJpZ2h0OjhweDttYXJnaW4tbGVmdDo0cHh9W2Rpcj1ydGxdIC5tYXQtc3RhbmRhcmQtY2hpcCAubWF0LWNoaXAtYXZhdGFye21hcmdpbi1sZWZ0OjhweDttYXJnaW4tcmlnaHQ6NHB4fS5tYXQtc3RhbmRhcmQtY2hpcCAubWF0LWNoaXAtcmVtb3ZlLC5tYXQtc3RhbmRhcmQtY2hpcCAubWF0LWNoaXAtdHJhaWxpbmctaWNvbnt3aWR0aDoxOHB4O2hlaWdodDoxOHB4O2N1cnNvcjpwb2ludGVyfS5tYXQtc3RhbmRhcmQtY2hpcCAubWF0LWNoaXAtcmVtb3ZlLC5tYXQtc3RhbmRhcmQtY2hpcCAubWF0LWNoaXAtdHJhaWxpbmctaWNvbnttYXJnaW4tbGVmdDo4cHg7bWFyZ2luLXJpZ2h0OjB9W2Rpcj1ydGxdIC5tYXQtc3RhbmRhcmQtY2hpcCAubWF0LWNoaXAtcmVtb3ZlLFtkaXI9cnRsXSAubWF0LXN0YW5kYXJkLWNoaXAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb257bWFyZ2luLXJpZ2h0OjhweDttYXJnaW4tbGVmdDowfS5tYXQtY2hpcC1yaXBwbGV7dG9wOjA7bGVmdDowO3JpZ2h0OjA7Ym90dG9tOjA7cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6bm9uZTtib3JkZXItcmFkaXVzOmluaGVyaXQ7b3ZlcmZsb3c6aGlkZGVufS5tYXQtY2hpcC1saXN0LXdyYXBwZXJ7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOnJvdztmbGV4LXdyYXA6d3JhcDthbGlnbi1pdGVtczpjZW50ZXI7bWFyZ2luOi00cHh9Lm1hdC1jaGlwLWxpc3Qtd3JhcHBlciBpbnB1dC5tYXQtaW5wdXQtZWxlbWVudCwubWF0LWNoaXAtbGlzdC13cmFwcGVyIC5tYXQtc3RhbmRhcmQtY2hpcHttYXJnaW46NHB4fS5tYXQtY2hpcC1saXN0LXN0YWNrZWQgLm1hdC1jaGlwLWxpc3Qtd3JhcHBlcntmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6ZmxleC1zdGFydH0ubWF0LWNoaXAtbGlzdC1zdGFja2VkIC5tYXQtY2hpcC1saXN0LXdyYXBwZXIgLm1hdC1zdGFuZGFyZC1jaGlwe3dpZHRoOjEwMCV9Lm1hdC1jaGlwLWF2YXRhcntib3JkZXItcmFkaXVzOjUwJTtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7b3ZlcmZsb3c6aGlkZGVuO29iamVjdC1maXQ6Y292ZXJ9aW5wdXQubWF0LWNoaXAtaW5wdXR7d2lkdGg6MTUwcHg7bWFyZ2luOjRweDtmbGV4OjEgMCAxNTBweH1cbiddLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLEh4dC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOktofSx7dHlwZTpPYn0se3R5cGU6dkYsZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX0se3R5cGU6WFcsZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX0se3R5cGU6aEcsZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX0se3R5cGU6bkx9LHt0eXBlOmxXLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpWcn1dfV0sSHh0LnByb3BEZWNvcmF0b3JzPXtlcnJvclN0YXRlTWF0Y2hlcjpbe3R5cGU6Ul99XSxtdWx0aXBsZTpbe3R5cGU6Ul99XSxjb21wYXJlV2l0aDpbe3R5cGU6Ul99XSx2YWx1ZTpbe3R5cGU6Ul99XSxyZXF1aXJlZDpbe3R5cGU6Ul99XSxwbGFjZWhvbGRlcjpbe3R5cGU6Ul99XSxkaXNhYmxlZDpbe3R5cGU6Ul99XSxhcmlhT3JpZW50YXRpb246W3t0eXBlOlJfLGFyZ3M6WyJhcmlhLW9yaWVudGF0aW9uIl19XSxzZWxlY3RhYmxlOlt7dHlwZTpSX31dLHRhYkluZGV4Olt7dHlwZTpSX31dLGNoYW5nZTpbe3R5cGU6RV99XSx2YWx1ZUNoYW5nZTpbe3R5cGU6RV99XSxjaGlwczpbe3R5cGU6b3IsYXJnczpbRXh0LHtkZXNjZW5kYW50czohMH1dfV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoSHh0LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Im1hdC1jaGlwLWxpc3QiLHRlbXBsYXRlOic8ZGl2IGNsYXNzPSJtYXQtY2hpcC1saXN0LXdyYXBwZXIiPjxuZy1jb250ZW50PjwvbmctY29udGVudD48L2Rpdj4nLGV4cG9ydEFzOiJtYXRDaGlwTGlzdCIsaG9zdDp7IlthdHRyLnRhYmluZGV4XSI6ImRpc2FibGVkID8gbnVsbCA6IF90YWJJbmRleCIsIlthdHRyLmFyaWEtZGVzY3JpYmVkYnldIjoiX2FyaWFEZXNjcmliZWRieSB8fCBudWxsIiwiW2F0dHIuYXJpYS1yZXF1aXJlZF0iOiJyb2xlID8gcmVxdWlyZWQgOiBudWxsIiwiW2F0dHIuYXJpYS1kaXNhYmxlZF0iOiJkaXNhYmxlZC50b1N0cmluZygpIiwiW2F0dHIuYXJpYS1pbnZhbGlkXSI6ImVycm9yU3RhdGUiLCJbYXR0ci5hcmlhLW11bHRpc2VsZWN0YWJsZV0iOiJtdWx0aXBsZSIsIlthdHRyLnJvbGVdIjoicm9sZSIsIltjbGFzcy5tYXQtY2hpcC1saXN0LWRpc2FibGVkXSI6ImRpc2FibGVkIiwiW2NsYXNzLm1hdC1jaGlwLWxpc3QtaW52YWxpZF0iOiJlcnJvclN0YXRlIiwiW2NsYXNzLm1hdC1jaGlwLWxpc3QtcmVxdWlyZWRdIjoicmVxdWlyZWQiLCJbYXR0ci5hcmlhLW9yaWVudGF0aW9uXSI6ImFyaWFPcmllbnRhdGlvbiIsY2xhc3M6Im1hdC1jaGlwLWxpc3QiLCIoZm9jdXMpIjoiZm9jdXMoKSIsIihibHVyKSI6Il9ibHVyKCkiLCIoa2V5ZG93bikiOiJfa2V5ZG93bigkZXZlbnQpIiwiW2lkXSI6Il91aWQifSxwcm92aWRlcnM6W3twcm92aWRlOmlVLHVzZUV4aXN0aW5nOkh4dH1dLGVuY2Fwc3VsYXRpb246V24uTm9uZSxjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNoLHN0eWxlczpbJy5tYXQtY2hpcHtwb3NpdGlvbjpyZWxhdGl2ZTtib3gtc2l6aW5nOmJvcmRlci1ib3g7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApO2JvcmRlcjpub25lOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5tYXQtc3RhbmRhcmQtY2hpcHt0cmFuc2l0aW9uOmJveC1zaGFkb3cgMjgwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtkaXNwbGF5OmlubGluZS1mbGV4O3BhZGRpbmc6N3B4IDEycHg7Ym9yZGVyLXJhZGl1czoxNnB4O2FsaWduLWl0ZW1zOmNlbnRlcjtjdXJzb3I6ZGVmYXVsdDttaW4taGVpZ2h0OjMycHg7aGVpZ2h0OjFweH0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LXN0YW5kYXJkLWNoaXB7dHJhbnNpdGlvbjpub25lO2FuaW1hdGlvbjpub25lfS5tYXQtc3RhbmRhcmQtY2hpcCAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29ue3dpZHRoOjE4cHg7aGVpZ2h0OjE4cHh9Lm1hdC1zdGFuZGFyZC1jaGlwOjphZnRlcnt0b3A6MDtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MDtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOmluaGVyaXQ7b3BhY2l0eTowO2NvbnRlbnQ6IiI7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHkgMjAwbXMgY3ViaWMtYmV6aWVyKDAuMzUsIDAsIDAuMjUsIDEpfS5tYXQtc3RhbmRhcmQtY2hpcDpob3Zlcjo6YWZ0ZXJ7b3BhY2l0eTouMTJ9Lm1hdC1zdGFuZGFyZC1jaGlwOmZvY3Vze291dGxpbmU6bm9uZX0ubWF0LXN0YW5kYXJkLWNoaXA6Zm9jdXM6OmFmdGVye29wYWNpdHk6LjE2fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1zdGFuZGFyZC1jaGlwe291dGxpbmU6c29saWQgMXB4fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1zdGFuZGFyZC1jaGlwOmZvY3Vze291dGxpbmU6ZG90dGVkIDJweH0ubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtZGlzYWJsZWQ6OmFmdGVye29wYWNpdHk6MH0ubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtZGlzYWJsZWQgLm1hdC1jaGlwLXJlbW92ZSwubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtZGlzYWJsZWQgLm1hdC1jaGlwLXRyYWlsaW5nLWljb257Y3Vyc29yOmRlZmF1bHR9Lm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXdpdGgtdHJhaWxpbmctaWNvbi5tYXQtY2hpcC13aXRoLWF2YXRhciwubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtd2l0aC1hdmF0YXJ7cGFkZGluZy10b3A6MDtwYWRkaW5nLWJvdHRvbTowfS5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC13aXRoLXRyYWlsaW5nLWljb24ubWF0LWNoaXAtd2l0aC1hdmF0YXJ7cGFkZGluZy1yaWdodDo4cHg7cGFkZGluZy1sZWZ0OjB9W2Rpcj1ydGxdIC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC13aXRoLXRyYWlsaW5nLWljb24ubWF0LWNoaXAtd2l0aC1hdmF0YXJ7cGFkZGluZy1sZWZ0OjhweDtwYWRkaW5nLXJpZ2h0OjB9Lm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXdpdGgtdHJhaWxpbmctaWNvbntwYWRkaW5nLXRvcDo3cHg7cGFkZGluZy1ib3R0b206N3B4O3BhZGRpbmctcmlnaHQ6OHB4O3BhZGRpbmctbGVmdDoxMnB4fVtkaXI9cnRsXSAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtd2l0aC10cmFpbGluZy1pY29ue3BhZGRpbmctbGVmdDo4cHg7cGFkZGluZy1yaWdodDoxMnB4fS5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC13aXRoLWF2YXRhcntwYWRkaW5nLWxlZnQ6MDtwYWRkaW5nLXJpZ2h0OjEycHh9W2Rpcj1ydGxdIC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC13aXRoLWF2YXRhcntwYWRkaW5nLXJpZ2h0OjA7cGFkZGluZy1sZWZ0OjEycHh9Lm1hdC1zdGFuZGFyZC1jaGlwIC5tYXQtY2hpcC1hdmF0YXJ7d2lkdGg6MjRweDtoZWlnaHQ6MjRweDttYXJnaW4tcmlnaHQ6OHB4O21hcmdpbi1sZWZ0OjRweH1bZGlyPXJ0bF0gLm1hdC1zdGFuZGFyZC1jaGlwIC5tYXQtY2hpcC1hdmF0YXJ7bWFyZ2luLWxlZnQ6OHB4O21hcmdpbi1yaWdodDo0cHh9Lm1hdC1zdGFuZGFyZC1jaGlwIC5tYXQtY2hpcC1yZW1vdmUsLm1hdC1zdGFuZGFyZC1jaGlwIC5tYXQtY2hpcC10cmFpbGluZy1pY29ue3dpZHRoOjE4cHg7aGVpZ2h0OjE4cHg7Y3Vyc29yOnBvaW50ZXJ9Lm1hdC1zdGFuZGFyZC1jaGlwIC5tYXQtY2hpcC1yZW1vdmUsLm1hdC1zdGFuZGFyZC1jaGlwIC5tYXQtY2hpcC10cmFpbGluZy1pY29ue21hcmdpbi1sZWZ0OjhweDttYXJnaW4tcmlnaHQ6MH1bZGlyPXJ0bF0gLm1hdC1zdGFuZGFyZC1jaGlwIC5tYXQtY2hpcC1yZW1vdmUsW2Rpcj1ydGxdIC5tYXQtc3RhbmRhcmQtY2hpcCAubWF0LWNoaXAtdHJhaWxpbmctaWNvbnttYXJnaW4tcmlnaHQ6OHB4O21hcmdpbi1sZWZ0OjB9Lm1hdC1jaGlwLXJpcHBsZXt0b3A6MDtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MDtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czpub25lO2JvcmRlci1yYWRpdXM6aW5oZXJpdDtvdmVyZmxvdzpoaWRkZW59Lm1hdC1jaGlwLWxpc3Qtd3JhcHBlcntkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246cm93O2ZsZXgtd3JhcDp3cmFwO2FsaWduLWl0ZW1zOmNlbnRlcjttYXJnaW46LTRweH0ubWF0LWNoaXAtbGlzdC13cmFwcGVyIGlucHV0Lm1hdC1pbnB1dC1lbGVtZW50LC5tYXQtY2hpcC1saXN0LXdyYXBwZXIgLm1hdC1zdGFuZGFyZC1jaGlwe21hcmdpbjo0cHh9Lm1hdC1jaGlwLWxpc3Qtc3RhY2tlZCAubWF0LWNoaXAtbGlzdC13cmFwcGVye2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1pdGVtczpmbGV4LXN0YXJ0fS5tYXQtY2hpcC1saXN0LXN0YWNrZWQgLm1hdC1jaGlwLWxpc3Qtd3JhcHBlciAubWF0LXN0YW5kYXJkLWNoaXB7d2lkdGg6MTAwJX0ubWF0LWNoaXAtYXZhdGFye2JvcmRlci1yYWRpdXM6NTAlO2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleDtvdmVyZmxvdzpoaWRkZW47b2JqZWN0LWZpdDpjb3Zlcn1pbnB1dC5tYXQtY2hpcC1pbnB1dHt3aWR0aDoxNTBweDttYXJnaW46NHB4O2ZsZXg6MSAwIDE1MHB4fVxuJ119XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpLaH0se3R5cGU6T2J9LHt0eXBlOnZGLGRlY29yYXRvcnM6W3t0eXBlOkJyfV19LHt0eXBlOlhXLGRlY29yYXRvcnM6W3t0eXBlOkJyfV19LHt0eXBlOmhHLGRlY29yYXRvcnM6W3t0eXBlOkJyfV19LHt0eXBlOm5MfSx7dHlwZTpsVyxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6VnJ9XX1dfSkse2FyaWFPcmllbnRhdGlvbjpbe3R5cGU6Ul8sYXJnczpbImFyaWEtb3JpZW50YXRpb24iXX1dLGNoYW5nZTpbe3R5cGU6RV99XSx2YWx1ZUNoYW5nZTpbe3R5cGU6RV99XSxtdWx0aXBsZTpbe3R5cGU6Ul99XSxjb21wYXJlV2l0aDpbe3R5cGU6Ul99XSx2YWx1ZTpbe3R5cGU6Ul99XSxyZXF1aXJlZDpbe3R5cGU6Ul99XSxwbGFjZWhvbGRlcjpbe3R5cGU6Ul99XSxkaXNhYmxlZDpbe3R5cGU6Ul99XSxzZWxlY3RhYmxlOlt7dHlwZTpSX31dLHRhYkluZGV4Olt7dHlwZTpSX31dLGVycm9yU3RhdGVNYXRjaGVyOlt7dHlwZTpSX31dLGNoaXBzOlt7dHlwZTpvcixhcmdzOltFeHQse2Rlc2NlbmRhbnRzOiEwfV19XX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KbGV0IEZ4dD0wO2NsYXNzIEx4dHtjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuX2VsZW1lbnRSZWY9dCx0aGlzLl9kZWZhdWx0T3B0aW9ucz1lLHRoaXMuZm9jdXNlZD0hMSx0aGlzLl9hZGRPbkJsdXI9ITEsdGhpcy5zZXBhcmF0b3JLZXlDb2Rlcz10aGlzLl9kZWZhdWx0T3B0aW9ucy5zZXBhcmF0b3JLZXlDb2Rlcyx0aGlzLmNoaXBFbmQ9bmV3IFN5LHRoaXMucGxhY2Vob2xkZXI9IiIsdGhpcy5pZD0ibWF0LWNoaXAtbGlzdC1pbnB1dC0iK0Z4dCsrLHRoaXMuX2Rpc2FibGVkPSExLHRoaXMuaW5wdXRFbGVtZW50PXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudH1zZXQgY2hpcExpc3QodCl7dCYmKHRoaXMuX2NoaXBMaXN0PXQsdGhpcy5fY2hpcExpc3QucmVnaXN0ZXJJbnB1dCh0aGlzKSl9Z2V0IGFkZE9uQmx1cigpe3JldHVybiB0aGlzLl9hZGRPbkJsdXJ9c2V0IGFkZE9uQmx1cih0KXt0aGlzLl9hZGRPbkJsdXI9ZUgodCl9Z2V0IGRpc2FibGVkKCl7cmV0dXJuIHRoaXMuX2Rpc2FibGVkfHx0aGlzLl9jaGlwTGlzdCYmdGhpcy5fY2hpcExpc3QuZGlzYWJsZWR9c2V0IGRpc2FibGVkKHQpe3RoaXMuX2Rpc2FibGVkPWVIKHQpfWdldCBlbXB0eSgpe3JldHVybiF0aGlzLmlucHV0RWxlbWVudC52YWx1ZX1uZ09uQ2hhbmdlcygpe3RoaXMuX2NoaXBMaXN0LnN0YXRlQ2hhbmdlcy5uZXh0KCl9bmdPbkRlc3Ryb3koKXt0aGlzLmNoaXBFbmQuY29tcGxldGUoKX1uZ0FmdGVyQ29udGVudEluaXQoKXt0aGlzLl9mb2N1c0xhc3RDaGlwT25CYWNrc3BhY2U9dGhpcy5lbXB0eX1fa2V5ZG93bih0KXtpZih0KXtpZig5IT09dC5rZXlDb2RlfHx0SCh0LCJzaGlmdEtleSIpfHx0aGlzLl9jaGlwTGlzdC5fYWxsb3dGb2N1c0VzY2FwZSgpLDg9PT10LmtleUNvZGUmJnRoaXMuX2ZvY3VzTGFzdENoaXBPbkJhY2tzcGFjZSlyZXR1cm4gdGhpcy5fY2hpcExpc3QuX2tleU1hbmFnZXIuc2V0TGFzdEl0ZW1BY3RpdmUoKSx2b2lkIHQucHJldmVudERlZmF1bHQoKTt0aGlzLl9mb2N1c0xhc3RDaGlwT25CYWNrc3BhY2U9ITF9dGhpcy5fZW1pdENoaXBFbmQodCl9X2tleXVwKHQpeyF0aGlzLl9mb2N1c0xhc3RDaGlwT25CYWNrc3BhY2UmJjg9PT10LmtleUNvZGUmJnRoaXMuZW1wdHkmJih0aGlzLl9mb2N1c0xhc3RDaGlwT25CYWNrc3BhY2U9ITAsdC5wcmV2ZW50RGVmYXVsdCgpKX1fYmx1cigpe3RoaXMuYWRkT25CbHVyJiZ0aGlzLl9lbWl0Q2hpcEVuZCgpLHRoaXMuZm9jdXNlZD0hMSx0aGlzLl9jaGlwTGlzdC5mb2N1c2VkfHx0aGlzLl9jaGlwTGlzdC5fYmx1cigpLHRoaXMuX2NoaXBMaXN0LnN0YXRlQ2hhbmdlcy5uZXh0KCl9X2ZvY3VzKCl7dGhpcy5mb2N1c2VkPSEwLHRoaXMuX2ZvY3VzTGFzdENoaXBPbkJhY2tzcGFjZT10aGlzLmVtcHR5LHRoaXMuX2NoaXBMaXN0LnN0YXRlQ2hhbmdlcy5uZXh0KCl9X2VtaXRDaGlwRW5kKHQpeyF0aGlzLmlucHV0RWxlbWVudC52YWx1ZSYmdCYmdGhpcy5fY2hpcExpc3QuX2tleWRvd24odCksdCYmIXRoaXMuX2lzU2VwYXJhdG9yS2V5KHQpfHwodGhpcy5jaGlwRW5kLmVtaXQoe2lucHV0OnRoaXMuaW5wdXRFbGVtZW50LHZhbHVlOnRoaXMuaW5wdXRFbGVtZW50LnZhbHVlLGNoaXBJbnB1dDp0aGlzfSksbnVsbD09dHx8dC5wcmV2ZW50RGVmYXVsdCgpKX1fb25JbnB1dCgpe3RoaXMuX2NoaXBMaXN0LnN0YXRlQ2hhbmdlcy5uZXh0KCl9Zm9jdXModCl7dGhpcy5pbnB1dEVsZW1lbnQuZm9jdXModCl9Y2xlYXIoKXt0aGlzLmlucHV0RWxlbWVudC52YWx1ZT0iIix0aGlzLl9mb2N1c0xhc3RDaGlwT25CYWNrc3BhY2U9ITB9X2lzU2VwYXJhdG9yS2V5KHQpe3JldHVybiF0SCh0KSYmbmV3IFNldCh0aGlzLnNlcGFyYXRvcktleUNvZGVzKS5oYXModC5rZXlDb2RlKX19THh0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxMeHQpKGdmKEtoKSxnZihUeHQpKX0sTHh0Lsm1ZGlyPWhvKHt0eXBlOkx4dCxzZWxlY3RvcnM6W1siaW5wdXQiLCJtYXRDaGlwSW5wdXRGb3IiLCIiXV0saG9zdEF0dHJzOlsxLCJtYXQtY2hpcC1pbnB1dCIsIm1hdC1pbnB1dC1lbGVtZW50Il0saG9zdFZhcnM6NSxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezEmZSYmUmYoImtleWRvd24iLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLl9rZXlkb3duKGUpfSkpKCJrZXl1cCIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uX2tleXVwKGUpfSkpKCJibHVyIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLl9ibHVyKCl9KSkoImZvY3VzIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLl9mb2N1cygpfSkpKCJpbnB1dCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5fb25JbnB1dCgpfSkpLDImZSYmKGNnKCJpZCIsbi5pZCkseW0oImRpc2FibGVkIixuLmRpc2FibGVkfHxudWxsKSgicGxhY2Vob2xkZXIiLG4ucGxhY2Vob2xkZXJ8fG51bGwpKCJhcmlhLWludmFsaWQiLG4uX2NoaXBMaXN0JiZuLl9jaGlwTGlzdC5uZ0NvbnRyb2w/bi5fY2hpcExpc3QubmdDb250cm9sLmludmFsaWQ6bnVsbCkoImFyaWEtcmVxdWlyZWQiLG4uX2NoaXBMaXN0JiZuLl9jaGlwTGlzdC5yZXF1aXJlZHx8bnVsbCkpfSxpbnB1dHM6e3NlcGFyYXRvcktleUNvZGVzOlsibWF0Q2hpcElucHV0U2VwYXJhdG9yS2V5Q29kZXMiLCJzZXBhcmF0b3JLZXlDb2RlcyJdLHBsYWNlaG9sZGVyOiJwbGFjZWhvbGRlciIsaWQ6ImlkIixjaGlwTGlzdDpbIm1hdENoaXBJbnB1dEZvciIsImNoaXBMaXN0Il0sYWRkT25CbHVyOlsibWF0Q2hpcElucHV0QWRkT25CbHVyIiwiYWRkT25CbHVyIl0sZGlzYWJsZWQ6ImRpc2FibGVkIn0sb3V0cHV0czp7Y2hpcEVuZDoibWF0Q2hpcElucHV0VG9rZW5FbmQifSxleHBvcnRBczpbIm1hdENoaXBJbnB1dCIsIm1hdENoaXBJbnB1dEZvciJdLGZlYXR1cmVzOltxb119KSxMeHQuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpLaH0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W1R4dF19XX1dLEx4dC5wcm9wRGVjb3JhdG9ycz17Y2hpcExpc3Q6W3t0eXBlOlJfLGFyZ3M6WyJtYXRDaGlwSW5wdXRGb3IiXX1dLGFkZE9uQmx1cjpbe3R5cGU6Ul8sYXJnczpbIm1hdENoaXBJbnB1dEFkZE9uQmx1ciJdfV0sc2VwYXJhdG9yS2V5Q29kZXM6W3t0eXBlOlJfLGFyZ3M6WyJtYXRDaGlwSW5wdXRTZXBhcmF0b3JLZXlDb2RlcyJdfV0sY2hpcEVuZDpbe3R5cGU6RV8sYXJnczpbIm1hdENoaXBJbnB1dFRva2VuRW5kIl19XSxwbGFjZWhvbGRlcjpbe3R5cGU6Ul99XSxpZDpbe3R5cGU6Ul99XSxkaXNhYmxlZDpbe3R5cGU6Ul99XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihMeHQsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiaW5wdXRbbWF0Q2hpcElucHV0Rm9yXSIsZXhwb3J0QXM6Im1hdENoaXBJbnB1dCwgbWF0Q2hpcElucHV0Rm9yIixob3N0OntjbGFzczoibWF0LWNoaXAtaW5wdXQgbWF0LWlucHV0LWVsZW1lbnQiLCIoa2V5ZG93bikiOiJfa2V5ZG93bigkZXZlbnQpIiwiKGtleXVwKSI6Il9rZXl1cCgkZXZlbnQpIiwiKGJsdXIpIjoiX2JsdXIoKSIsIihmb2N1cykiOiJfZm9jdXMoKSIsIihpbnB1dCkiOiJfb25JbnB1dCgpIiwiW2lkXSI6ImlkIiwiW2F0dHIuZGlzYWJsZWRdIjoiZGlzYWJsZWQgfHwgbnVsbCIsIlthdHRyLnBsYWNlaG9sZGVyXSI6InBsYWNlaG9sZGVyIHx8IG51bGwiLCJbYXR0ci5hcmlhLWludmFsaWRdIjoiX2NoaXBMaXN0ICYmIF9jaGlwTGlzdC5uZ0NvbnRyb2wgPyBfY2hpcExpc3QubmdDb250cm9sLmludmFsaWQgOiBudWxsIiwiW2F0dHIuYXJpYS1yZXF1aXJlZF0iOiJfY2hpcExpc3QgJiYgX2NoaXBMaXN0LnJlcXVpcmVkIHx8IG51bGwifX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOktofSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbVHh0XX1dfV19KSx7c2VwYXJhdG9yS2V5Q29kZXM6W3t0eXBlOlJfLGFyZ3M6WyJtYXRDaGlwSW5wdXRTZXBhcmF0b3JLZXlDb2RlcyJdfV0sY2hpcEVuZDpbe3R5cGU6RV8sYXJnczpbIm1hdENoaXBJbnB1dFRva2VuRW5kIl19XSxwbGFjZWhvbGRlcjpbe3R5cGU6Ul99XSxpZDpbe3R5cGU6Ul99XSxjaGlwTGlzdDpbe3R5cGU6Ul8sYXJnczpbIm1hdENoaXBJbnB1dEZvciJdfV0sYWRkT25CbHVyOlt7dHlwZTpSXyxhcmdzOlsibWF0Q2hpcElucHV0QWRkT25CbHVyIl19XSxkaXNhYmxlZDpbe3R5cGU6Ul99XX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgQnh0PVtIeHQsRXh0LEx4dCxBeHQsRHh0LFJ4dF0sVnh0PXtzZXBhcmF0b3JLZXlDb2RlczpbWEldfTtjbGFzcyBqeHR7fWp4dC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8anh0KX0sanh0Lsm1bW9kPWZvKHt0eXBlOmp4dH0pLGp4dC7JtWluaj1Ebih7cHJvdmlkZXJzOltuTCx7cHJvdmlkZTpUeHQsdXNlVmFsdWU6Vnh0fV0saW1wb3J0czpbW05GXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGp4dCxbe3R5cGU6TF8sYXJnczpbe2ltcG9ydHM6W05GXSxleHBvcnRzOkJ4dCxkZWNsYXJhdGlvbnM6Qnh0LHByb3ZpZGVyczpbbkwse3Byb3ZpZGU6VHh0LHVzZVZhbHVlOlZ4dH1dfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8oanh0LHtkZWNsYXJhdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm5bSHh0LEV4dCxMeHQsQXh0LER4dCxSeHRdfSxpbXBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW05GXX0sZXhwb3J0czpmdW5jdGlvbigpe3JldHVybltIeHQsRXh0LEx4dCxBeHQsRHh0LFJ4dF19fSk7Y29uc3QgVXh0PWZ1bmN0aW9uKHQsZSl7cmV0dXJueyJlbWJlZGRpbmctc2VsZWN0ZWQiOnQsImVtYmVkZGluZy11bnNlbGVjdGVkIjplfX07ZnVuY3Rpb24gV3h0KHQsZSl7aWYoMSZ0KXtjb25zdCB0PXdmKCk7Q2YoMCwibWF0LWljb24iLDUpLFJmKCJjbGljayIsKGZ1bmN0aW9uIGUoKXtQaSh0KTtjb25zdCBuPXpmKCk7cmV0dXJuIG4ub25TZWxlY3QuZW1pdChuLm1ldHJpYyl9KSksTWYoKX1pZigyJnQpe2NvbnN0IHQ9emYoKTtiZigibmdDbGFzcyIsYXkoMSxVeHQsdC5lbWJlZGRpbmdzTWV0cmljPT09dC5tZXRyaWMsdC5lbWJlZGRpbmdzTWV0cmljIT09dC5tZXRyaWMpKX19Y29uc3QgR3h0PWZ1bmN0aW9uKHQpe3JldHVybnt3aWR0aDp0fX0sWXh0PWZ1bmN0aW9uKHQpe3JldHVybnsidmFsdWUtaW52YWxpZCI6dH19O2NsYXNzIHF4dHtjb25zdHJ1Y3Rvcigpe3RoaXMub25SZW1vdmU9bmV3IFN5LHRoaXMub25TZWxlY3Q9bmV3IFN5LHRoaXMub25GaWx0ZXJDaGFuZ2U9bmV3IFN5LHRoaXMuZm9jdXNNaW49ITEsdGhpcy5mb2N1c01heD0hMSx0aGlzLm5nVW5zdWJzY3JpYmU9bmV3IEJ9bmdPbkluaXQoKXt0aGlzLm1pbkZvcm1Db250cm9sPW5ldyBXVyh0aGlzLmZpbHRlclZhbHVlcy5taW4sW05VLnJlcXVpcmVkLE5VLm1pbigtMSksTlUubWF4KDEpLHRoaXMubWluVmFsdWVWYWxpZGF0b3IuYmluZCh0aGlzKV0pLHRoaXMubWF4Rm9ybUNvbnRyb2w9bmV3IFdXKHRoaXMuZmlsdGVyVmFsdWVzLm1heCxbTlUucmVxdWlyZWQsTlUubWluKC0xKSxOVS5tYXgoMSksdGhpcy5tYXhWYWx1ZVZhbGlkYXRvci5iaW5kKHRoaXMpXSksdGhpcy5taW5Gb3JtQ29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShqZSh0aGlzLm5nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKCgpPT57dGhpcy5taW5Gb3JtQ29udHJvbC52YWxpZCYmdGhpcy5tYXhGb3JtQ29udHJvbC52YWxpZCYmdGhpcy5vbkZpbHRlckNoYW5nZS5lbWl0KHttaW46cGFyc2VGbG9hdCh0aGlzLm1pbkZvcm1Db250cm9sLnZhbHVlKSxtYXg6cGFyc2VGbG9hdCh0aGlzLm1heEZvcm1Db250cm9sLnZhbHVlKX0pfSkpLHRoaXMubWF4Rm9ybUNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoamUodGhpcy5uZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKCgoKT0+e3RoaXMubWluRm9ybUNvbnRyb2wudmFsaWQmJnRoaXMubWF4Rm9ybUNvbnRyb2wudmFsaWQmJnRoaXMub25GaWx0ZXJDaGFuZ2UuZW1pdCh7bWluOnBhcnNlRmxvYXQodGhpcy5taW5Gb3JtQ29udHJvbC52YWx1ZSksbWF4OnBhcnNlRmxvYXQodGhpcy5tYXhGb3JtQ29udHJvbC52YWx1ZSl9KX0pKX1uZ09uQ2hhbmdlcyh0KXt0aGlzLm1pbkZvcm1Db250cm9sJiZ0aGlzLm1heEZvcm1Db250cm9sJiYodGhpcy5taW5Gb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLmZpbHRlclZhbHVlcy5taW4se2VtaXRFdmVudDohMX0pLHRoaXMubWF4Rm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5maWx0ZXJWYWx1ZXMubWF4LHtlbWl0RXZlbnQ6ITF9KSl9bmdPbkRlc3Ryb3koKXt0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpLHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpfW1pblZhbHVlVmFsaWRhdG9yKHQpe3JldHVybiB0aGlzLm1heEZvcm1Db250cm9sJiYiTmFOIiE9PXQudmFsdWU/aXNOYU4ocGFyc2VGbG9hdCh0LnZhbHVlKSk/e3ZhbHVlOiJ0aGUgc3RyaW5nIHlvdSBlbnRlcmVkIGlzIG5laXRoZXIgTmFOIG5vciBhIG51bWJlciJ9OnBhcnNlRmxvYXQodC52YWx1ZSk+cGFyc2VGbG9hdCh0aGlzLm1heEZvcm1Db250cm9sLnZhbHVlKT97dmFsdWU6InRoZSBudW1iZXIgeW91IGVudGVyZWQgaXMgbGFyZ2VyIHRoYW4gdGhlIG1heCB2YWx1ZSJ9Om51bGw6bnVsbH1tYXhWYWx1ZVZhbGlkYXRvcih0KXtyZXR1cm4gdGhpcy5taW5Gb3JtQ29udHJvbD8iTmFOIj09PXRoaXMubWluRm9ybUNvbnRyb2wudmFsdWUmJiJOYU4iPT09dC52YWx1ZT9udWxsOmlzTmFOKHBhcnNlRmxvYXQodC52YWx1ZSkpP3t2YWx1ZToidGhlIHN0cmluZyB5b3UgZW50ZXJlZCBpcyBuZWl0aGVyIE5hTiBub3IgYSBudW1iZXIifTp0LnZhbHVlPHRoaXMubWluRm9ybUNvbnRyb2wudmFsdWU/e3ZhbHVlOiJ0aGUgbnVtYmVyIHlvdSBlbnRlcmVkIGlzIHNtYWxsZXIgdGhhbiB0aGUgbWluIHZhbHVlIn06bnVsbDpudWxsfWdldEVycm9yRGVzY3JpcHRpb24odCl7aWYodCl7Y29uc3QgZT1PYmplY3Qua2V5cyh0KVswXTtyZXR1cm4icmVxdWlyZWQiPT09ZT8ieW91IGRpZCBub3QgZW50ZXIgYW55dGhpbmciOiJtaW4iPT09ZT8idGhlIG51bWJlciBtdXN0IGJlIGF0IGxlYXN0IC0xLjAiOiJtYXgiPT09ZT8idGhlIG51bWJlciBpcyBiaWdnZXIgdGhhbiAxLjAiOnRbZV19cmV0dXJuIiJ9fXF4dC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8cXh0KX0scXh0Lsm1Y21wPXNvKHt0eXBlOnF4dCxzZWxlY3RvcnM6W1sibWV0cmljLWFyaXRobWV0aWMtZWxlbWVudC1jb21wb25lbnQiXV0saW5wdXRzOnttZXRyaWM6Im1ldHJpYyIsZmlsdGVyVmFsdWVzOiJmaWx0ZXJWYWx1ZXMiLGhhc0VtYmVkZGluZ3NEYXRhOiJoYXNFbWJlZGRpbmdzRGF0YSIsZW1iZWRkaW5nc01ldHJpYzoiZW1iZWRkaW5nc01ldHJpYyJ9LG91dHB1dHM6e29uUmVtb3ZlOiJvblJlbW92ZSIsb25TZWxlY3Q6Im9uU2VsZWN0IixvbkZpbHRlckNoYW5nZToib25GaWx0ZXJDaGFuZ2UifSxmZWF0dXJlczpbcW9dLGRlY2xzOjEwLHZhcnM6MjIsY29uc3RzOltbMSwiZmlsdGVyLWNoaXAiLDMsInJlbW92ZWQiXSxbImNsYXNzIiwiZW1iZWRkaW5ncy1idXR0b24iLCJzdmdJY29uIiwiZ3JvdXBfd29ya18yNHB4IiwzLCJuZ0NsYXNzIiwiY2xpY2siLDQsIm5nSWYiXSxbMSwibWV0cmljLWFyaXRobWV0aWMtZWxlbWVudC1yYW5nZSIsMywia2V5ZG93biJdLFsibWF0SW5wdXQiLCIiLDEsImlucHV0LWZpZWxkIiwzLCJ2YWx1ZSIsIm1hdFRvb2x0aXAiLCJtYXRUb29sdGlwRGlzYWJsZWQiLCJuZ1N0eWxlIiwibmdDbGFzcyIsImZvcm1Db250cm9sIiwiZm9jdXMiLCJmb2N1c291dCJdLFsibWF0Q2hpcFJlbW92ZSIsIiIsInN2Z0ljb24iLCJjYW5jZWxfMjRweCJdLFsic3ZnSWNvbiIsImdyb3VwX3dvcmtfMjRweCIsMSwiZW1iZWRkaW5ncy1idXR0b24iLDMsIm5nQ2xhc3MiLCJjbGljayJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoQ2YoMCwibWF0LWNoaXAiLDApLFJmKCJyZW1vdmVkIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uUmVtb3ZlLmVtaXQobi5tZXRyaWMpfSkpLEhtKDEsV3h0LDEsNCwibWF0LWljb24iLDEpLFB1KDIpLENmKDMsImRpdiIsMiksUmYoImtleWRvd24iLChmdW5jdGlvbiB0KGUpe3JldHVybiBlLnN0b3BQcm9wYWdhdGlvbigpfSkpLFB1KDQsIiBbICIpLENmKDUsImlucHV0IiwzKSxSZigiZm9jdXMiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4uZm9jdXNNaW49ITB9KSkoImZvY3Vzb3V0IiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLmZvY3VzTWluPSExfSkpLE1mKCksUHUoNiwiIDsgIiksQ2YoNywiaW5wdXQiLDMpLFJmKCJmb2N1cyIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5mb2N1c01heD0hMH0pKSgiZm9jdXNvdXQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4uZm9jdXNNYXg9ITF9KSksTWYoKSxQdSg4LCIgXSAiKSxNZigpLHZmKDksIm1hdC1pY29uIiw0KSxNZigpKSwyJmUmJihEYygxKSxiZigibmdJZiIsbi5oYXNFbWJlZGRpbmdzRGF0YSksRGMoMSksa3UoIiAiLG4ubWV0cmljLCIgIiksRGMoMyksYmYoInZhbHVlIixuLmZpbHRlclZhbHVlcy5taW4pKCJtYXRUb29sdGlwIixuLmdldEVycm9yRGVzY3JpcHRpb24obi5taW5Gb3JtQ29udHJvbC5lcnJvcnMpKSgibWF0VG9vbHRpcERpc2FibGVkIiwhbi5taW5Gb3JtQ29udHJvbC5pbnZhbGlkKSgibmdTdHlsZSIsaXkoMTQsR3h0LG4uZm9jdXNNaW4/IjEwMHB4IjpuLm1pbkZvcm1Db250cm9sLnZhbHVlLnRvU3RyaW5nKCkubGVuZ3RoKyJjaCIpKSgibmdDbGFzcyIsaXkoMTYsWXh0LCFuLm1pbkZvcm1Db250cm9sLnZhbGlkKSkoImZvcm1Db250cm9sIixuLm1pbkZvcm1Db250cm9sKSxEYygyKSxiZigidmFsdWUiLG4uZmlsdGVyVmFsdWVzLm1heCkoIm1hdFRvb2x0aXAiLG4uZ2V0RXJyb3JEZXNjcmlwdGlvbihuLm1heEZvcm1Db250cm9sLmVycm9ycykpKCJtYXRUb29sdGlwRGlzYWJsZWQiLCFuLm1heEZvcm1Db250cm9sLmludmFsaWQpKCJuZ1N0eWxlIixpeSgxOCxHeHQsbi5mb2N1c01heD8iMTAwcHgiOm4ubWF4Rm9ybUNvbnRyb2wudmFsdWUudG9TdHJpbmcoKS5sZW5ndGgrImNoIikpKCJuZ0NsYXNzIixpeSgyMCxZeHQsIW4ubWF4Rm9ybUNvbnRyb2wudmFsaWQpKSgiZm9ybUNvbnRyb2wiLG4ubWF4Rm9ybUNvbnRyb2wpKX0sZGlyZWN0aXZlczpbRXh0LFB2LFNVLEwwLHp2LEN2LG1XLHVHLE1xLEF4dF0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCB0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9LmZpbHRlci1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4O21hcmdpbi1sZWZ0OjVweH0ubWV0cmljLWFyaXRobWV0aWMtZWxlbWVudC1yYW5nZVtfbmdjb250ZW50LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2JhY2tncm91bmQtY29sb3I6I2ZmZjtmb250LXNpemU6LjhlbTtoZWlnaHQ6MzBweDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2xpbmUtaGVpZ2h0OjMwcHg7cGFkZGluZzowIDVweDttYXJnaW4tbGVmdDo1cHh9LmlucHV0LWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2JvcmRlcjpub25lO2ZvbnQtZmFtaWx5Om1vbm9zcGFjZTtmb250LXNpemU6MS4xZW07dHJhbnNpdGlvbjp3aWR0aCAxc30uaW5wdXQtZmllbGRbX25nY29udGVudC0lQ09NUCVdOmZvY3Vze2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMTIpO2JvcmRlcjpub25lO291dGxpbmU6bm9uZX0udmFsdWUtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0uZW1iZWRkaW5nLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjU3YzAwO29wYWNpdHk6MX0uZW1iZWRkaW5nLXVuc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjR9LmVtYmVkZGluZ3MtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoxOHB4O2hlaWdodDoxOHB4O21hcmdpbi1yaWdodDo4cHg7Y3Vyc29yOnBvaW50ZXJ9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHF4dCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJtZXRyaWMtYXJpdGhtZXRpYy1lbGVtZW50LWNvbXBvbmVudCIsdGVtcGxhdGVVcmw6Ii4vbWV0cmljX2FyaXRobWV0aWNfZWxlbWVudF9jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsiLi9tZXRyaWNfYXJpdGhtZXRpY19lbGVtZW50X2NvbXBvbmVudC5jc3MiXSxjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNofV19XSxudWxsLHttZXRyaWM6W3t0eXBlOlJffV0sZmlsdGVyVmFsdWVzOlt7dHlwZTpSX31dLGhhc0VtYmVkZGluZ3NEYXRhOlt7dHlwZTpSX31dLGVtYmVkZGluZ3NNZXRyaWM6W3t0eXBlOlJffV0sb25SZW1vdmU6W3t0eXBlOkVffV0sb25TZWxlY3Q6W3t0eXBlOkVffV0sb25GaWx0ZXJDaGFuZ2U6W3t0eXBlOkVffV19KTtjbGFzcyBaeHR7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMuZmlsdGVyVmFsdWVzJD10aGlzLnN0b3JlLnBpcGUoclMoZXh0KSkucGlwZShWdCgodD0+e2NvbnN0IGU9dFt0aGlzLm1ldHJpY107aWYoIWUpcmV0dXJue21pbjotMSxtYXg6MX07cmV0dXJue21pbjplLmluY2x1ZGVOYU4/Ik5hTiI6dGhpcy5yb3VuZFRvVGhyZWVEZWNpbWFsUG9pbnRzKGUubWluKSxtYXg6ZS5tYXg8ZS5taW4/Ik5hTiI6dGhpcy5yb3VuZFRvVGhyZWVEZWNpbWFsUG9pbnRzKGUubWF4KX19KSkpLHRoaXMuaGFzRW1iZWRkaW5nc0RhdGEkPXRoaXMuc3RvcmUucGlwZShyUyhadnQpKS5waXBlKFZ0KCh0PT52b2lkIDAhPT10KSkpLHRoaXMuZW1iZWRkaW5nc01ldHJpYyQ9dGhpcy5zdG9yZS5waXBlKHJTKGR4dCkpfXJlbW92ZSh0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKFB2dCh7bWV0cmljOnR9KSl9c2VsZWN0KHQpe3RoaXMuc3RvcmUuZGlzcGF0Y2goTnZ0KHttZXRyaWM6dH0pKX1maWx0ZXJDaGFuZ2UodCl7Y29uc3QgZT1pc05hTih0Lm1pbik/LTE6dC5taW4sbj1pc05hTih0Lm1heCk/LTI6dC5tYXgsbz1pc05hTih0Lm1pbik7dGhpcy5zdG9yZS5kaXNwYXRjaCh3dnQoe21ldHJpYzp0aGlzLm1ldHJpYyxtYXg6bixtaW46ZSxpbmNsdWRlTmFOOm99KSl9cm91bmRUb1RocmVlRGVjaW1hbFBvaW50cyh0KXtyZXR1cm4gTWF0aC5yb3VuZCgxZTMqKHQrTnVtYmVyLkVQU0lMT04pKS8xZTN9fVp4dC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8Wnh0KShnZihpUykpfSxaeHQuybVjbXA9c28oe3R5cGU6Wnh0LHNlbGVjdG9yczpbWyJucG1pLW1ldHJpYy1hcml0aG1ldGljLWVsZW1lbnQiXV0saW5wdXRzOnttZXRyaWM6Im1ldHJpYyJ9LGRlY2xzOjQsdmFyczoxMCxjb25zdHM6W1szLCJtZXRyaWMiLCJmaWx0ZXJWYWx1ZXMiLCJoYXNFbWJlZGRpbmdzRGF0YSIsImVtYmVkZGluZ3NNZXRyaWMiLCJvblJlbW92ZSIsIm9uU2VsZWN0Iiwib25GaWx0ZXJDaGFuZ2UiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKENmKDAsIm1ldHJpYy1hcml0aG1ldGljLWVsZW1lbnQtY29tcG9uZW50IiwwKSxSZigib25SZW1vdmUiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLnJlbW92ZShlKX0pKSgib25TZWxlY3QiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLnNlbGVjdChlKX0pKSgib25GaWx0ZXJDaGFuZ2UiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLmZpbHRlckNoYW5nZShlKX0pKSxfeSgxLCJhc3luYyIpLF95KDIsImFzeW5jIiksX3koMywiYXN5bmMiKSxNZigpKSwyJmUmJmJmKCJtZXRyaWMiLG4ubWV0cmljKSgiZmlsdGVyVmFsdWVzIixDeSgxLDQsbi5maWx0ZXJWYWx1ZXMkKSkoImhhc0VtYmVkZGluZ3NEYXRhIixDeSgyLDYsbi5oYXNFbWJlZGRpbmdzRGF0YSQpKSgiZW1iZWRkaW5nc01ldHJpYyIsQ3koMyw4LG4uZW1iZWRkaW5nc01ldHJpYyQpKX0sZGlyZWN0aXZlczpbcXh0XSxwaXBlczpbVnZdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoWnh0LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Im5wbWktbWV0cmljLWFyaXRobWV0aWMtZWxlbWVudCIsdGVtcGxhdGU6J1xuICAgIDxtZXRyaWMtYXJpdGhtZXRpYy1lbGVtZW50LWNvbXBvbmVudFxuICAgICAgW21ldHJpY109Im1ldHJpYyJcbiAgICAgIFtmaWx0ZXJWYWx1ZXNdPSJmaWx0ZXJWYWx1ZXMkIHwgYXN5bmMiXG4gICAgICBbaGFzRW1iZWRkaW5nc0RhdGFdPSJoYXNFbWJlZGRpbmdzRGF0YSQgfCBhc3luYyJcbiAgICAgIFtlbWJlZGRpbmdzTWV0cmljXT0iZW1iZWRkaW5nc01ldHJpYyQgfCBhc3luYyJcbiAgICAgIChvblJlbW92ZSk9InJlbW92ZSgkZXZlbnQpIlxuICAgICAgKG9uU2VsZWN0KT0ic2VsZWN0KCRldmVudCkiXG4gICAgICAob25GaWx0ZXJDaGFuZ2UpPSJmaWx0ZXJDaGFuZ2UoJGV2ZW50KSJcbiAgICA+PC9tZXRyaWMtYXJpdGhtZXRpYy1lbGVtZW50LWNvbXBvbmVudD5cbiAgJyxjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNofV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6aVN9XX0pLHttZXRyaWM6W3t0eXBlOlJffV19KTtjbGFzcyBYeHR7Y29uc3RydWN0b3IoKXt0aGlzLk9wZXJhdG9yPUJ2dH19ZnVuY3Rpb24gS3h0KHQsZSl7aWYoMSZ0JiZ2ZigwLCJucG1pLW1ldHJpYy1hcml0aG1ldGljLWVsZW1lbnQiLDQpLDImdCl7YmYoIm1ldHJpYyIsemYoKS4kaW1wbGljaXQubWV0cmljKX19ZnVuY3Rpb24gSnh0KHQsZSl7aWYoMSZ0JiZ2ZigwLCJucG1pLW1ldHJpYy1hcml0aG1ldGljLW9wZXJhdG9yIiw1KSwyJnQpe2JmKCJvcGVyYXRvciIsemYoKS4kaW1wbGljaXQub3BlcmF0b3IpfX1mdW5jdGlvbiBReHQodCxlKXtpZigxJnQmJihDZigwLCJkaXYiKSxIbSgxLEt4dCwxLDEsIm5wbWktbWV0cmljLWFyaXRobWV0aWMtZWxlbWVudCIsMiksSG0oMixKeHQsMSwxLCJucG1pLW1ldHJpYy1hcml0aG1ldGljLW9wZXJhdG9yIiwzKSxNZigpKSwyJnQpe2NvbnN0IHQ9ZS4kaW1wbGljaXQsbj16ZigpO0RjKDEpLGJmKCJuZ0lmIix0LmtpbmQ9PT1uLkFyaXRobWV0aWNLaW5kLk1FVFJJQyksRGMoMSksYmYoIm5nSWYiLHQua2luZD09PW4uQXJpdGhtZXRpY0tpbmQuT1BFUkFUT1IpfX1YeHQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFh4dCl9LFh4dC7JtWNtcD1zbyh7dHlwZTpYeHQsc2VsZWN0b3JzOltbIm5wbWktbWV0cmljLWFyaXRobWV0aWMtb3BlcmF0b3IiXV0saW5wdXRzOntvcGVyYXRvcjoib3BlcmF0b3IifSxkZWNsczoyLHZhcnM6MSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoQ2YoMCwibWF0LWNoaXAiKSxQdSgxKSxNZigpKSwyJmUmJihEYygxKSxrdSgiICIsbi5vcGVyYXRvcj09PW4uT3BlcmF0b3IuQU5EPyImIjoiIiwiICIpKX0sZGlyZWN0aXZlczpbRXh0XSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFh4dCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJucG1pLW1ldHJpYy1hcml0aG1ldGljLW9wZXJhdG9yIix0ZW1wbGF0ZToiXG4gICAgPG1hdC1jaGlwPlxuICAgICAge3sgb3BlcmF0b3IgPT09IE9wZXJhdG9yLkFORCA/ICcmJyA6ICcnIH19XG4gICAgPC9tYXQtY2hpcD5cbiAgIixjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNofV19XSxudWxsLHtvcGVyYXRvcjpbe3R5cGU6Ul99XX0pO2NsYXNzICR4dHtjb25zdHJ1Y3Rvcigpe3RoaXMuQXJpdGhtZXRpY0tpbmQ9VnZ0fX0keHQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fCR4dCl9LCR4dC7JtWNtcD1zbyh7dHlwZTokeHQsc2VsZWN0b3JzOltbIm1ldHJpYy1hcml0aG1ldGljLWNvbXBvbmVudCJdXSxpbnB1dHM6e21ldHJpY0FyaXRobWV0aWM6Im1ldHJpY0FyaXRobWV0aWMifSxkZWNsczoyLHZhcnM6Mixjb25zdHM6W1szLCJzZWxlY3RhYmxlIl0sWzQsIm5nRm9yIiwibmdGb3JPZiJdLFszLCJtZXRyaWMiLDQsIm5nSWYiXSxbMywib3BlcmF0b3IiLDQsIm5nSWYiXSxbMywibWV0cmljIl0sWzMsIm9wZXJhdG9yIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihDZigwLCJtYXQtY2hpcC1saXN0IiwwKSxIbSgxLFF4dCwzLDIsImRpdiIsMSksTWYoKSksMiZlJiYoYmYoInNlbGVjdGFibGUiLCExKSxEYygxKSxiZigibmdGb3JPZiIsbi5tZXRyaWNBcml0aG1ldGljKSl9LGRpcmVjdGl2ZXM6W0h4dCx4dixQdixaeHQsWHh0XSxzdHlsZXM6WyJbX25naG9zdC0lQ09NUCVde2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246cm93O2ZsZXgtd3JhcDp3cmFwfSJdLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYigkeHQsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoibWV0cmljLWFyaXRobWV0aWMtY29tcG9uZW50Iix0ZW1wbGF0ZVVybDoiLi9tZXRyaWNfYXJpdGhtZXRpY19jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsiLi9tZXRyaWNfYXJpdGhtZXRpY19jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaH1dfV0sbnVsbCx7bWV0cmljQXJpdGhtZXRpYzpbe3R5cGU6Ul99XX0pO2NsYXNzIHRPdHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5tZXRyaWNBcml0aG1ldGljJD10aGlzLnN0b3JlLnBpcGUoclModHh0KSl9fXRPdC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8dE90KShnZihpUykpfSx0T3QuybVjbXA9c28oe3R5cGU6dE90LHNlbGVjdG9yczpbWyJucG1pLW1ldHJpYy1hcml0aG1ldGljIl1dLGRlY2xzOjIsdmFyczozLGNvbnN0czpbWzMsIm1ldHJpY0FyaXRobWV0aWMiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKHZmKDAsIm1ldHJpYy1hcml0aG1ldGljLWNvbXBvbmVudCIsMCksX3koMSwiYXN5bmMiKSksMiZlJiZiZigibWV0cmljQXJpdGhtZXRpYyIsQ3koMSwxLG4ubWV0cmljQXJpdGhtZXRpYyQpKX0sZGlyZWN0aXZlczpbJHh0XSxwaXBlczpbVnZdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIodE90LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Im5wbWktbWV0cmljLWFyaXRobWV0aWMiLHRlbXBsYXRlOidcbiAgICA8bWV0cmljLWFyaXRobWV0aWMtY29tcG9uZW50XG4gICAgICBbbWV0cmljQXJpdGhtZXRpY109Im1ldHJpY0FyaXRobWV0aWMkIHwgYXN5bmMiXG4gICAgPjwvbWV0cmljLWFyaXRobWV0aWMtY29tcG9uZW50PlxuICAnLGNoYW5nZURldGVjdGlvbjpqbi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTppU31dfSksbnVsbCk7Y2xhc3MgZU90e31mdW5jdGlvbiBuT3QodCxlLG4sbyxpLGEpe2NvbnN0IHI9e30scz1uZXcgU2V0KGUpLGw9bmV3IFNldChpLm1hcCgodD0+el90KHQpKSkpLGM9bmV3IFJlZ0V4cChhLCJpIik7cmV0dXJuIE9iamVjdC5lbnRyaWVzKHQpLmZvckVhY2goKHQ9PntpZighYy50ZXN0KHRbMF0pKXJldHVybjtsZXQgZT10WzFdO2U9ZS5maWx0ZXIoKHQ9PnMuaGFzKHQucnVuKSYmbC5oYXModC5tZXRyaWMpKSksKGZ1bmN0aW9uIGkodCxlLG4pe3JldHVybiB0LmV2ZXJ5KCh0PT57aWYodC5raW5kPT09VnZ0Lk9QRVJBVE9SKXJldHVybiEwO2NvbnN0IG89ZVt0Lm1ldHJpY107cmV0dXJuIHZvaWQgMD09PW98fG4uc29tZSgoZT0+ZS5tZXRyaWM9PT16X3QodC5tZXRyaWMpJiYobnVsbD09PWUublBNSVZhbHVlP28uaW5jbHVkZU5hTjplLm5QTUlWYWx1ZTw9by5tYXgmJmUublBNSVZhbHVlPj1vLm1pbikpKX0pKX0pKG4sbyxlKSYmMCE9PWUubGVuZ3RoJiYoclt0WzBdXT1lKX0pKSxyfWZ1bmN0aW9uIG9PdCh0LGUsbil7aWYobilyZXR1cm4gdDtjb25zdCBvPU9iamVjdC5hc3NpZ24oe30sdCk7cmV0dXJuIGUuZm9yRWFjaCgodD0+ZGVsZXRlIG9bdF0pKSxvfWVPdC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8ZU90KX0sZU90Lsm1Y21wPXNvKHt0eXBlOmVPdCxzZWxlY3RvcnM6W1sibnBtaS1kYXRhLXNlbGVjdGlvbiJdXSxkZWNsczo0LHZhcnM6MCxjb25zdHM6W1sxLCJkYXRhLXNlbGVjdGlvbiJdLFsxLCJtZXRyaWNzLXNlbGVjdG9yIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihDZigwLCJkaXYiLDApLHZmKDEsIm5wbWktbWV0cmljLXNlYXJjaCIsMSksdmYoMiwibnBtaS1yZXN1bHRzLWRvd25sb2FkIiksTWYoKSx2ZigzLCJucG1pLW1ldHJpYy1hcml0aG1ldGljIikpfSxkaXJlY3Rpdm